ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdXNiLXVzYnRtYyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdXNiLXVzYnRtYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTc1ZmIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci11c2ItdXNidG1jCkBAIC0wLDAgKzEsNjIgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvZGV2aWNlcy8qL2ludGVyZmFjZV9jYXBhYmlsaXRpZXMKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvZGV2aWNlcy8qL2RldmljZV9jYXBhYmlsaXRpZXMKK0RhdGU6CQlBdWd1c3QgMjAwOAorQ29udGFjdDoJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KK0Rlc2NyaXB0aW9uOgorCQlUaGVzZSBmaWxlcyBzaG93IHRoZSB2YXJpb3VzIFVTQiBUTUMgY2FwYWJpbGl0aWVzIGFzIGRlc2NyaWJlZAorCQlieSB0aGUgZGV2aWNlIGl0c2VsZi4gIFRoZSBmdWxsIGRlc2NyaXB0aW9uIG9mIHRoZSBiaXRmaWVsZHMKKwkJY2FuIGJlIGZvdW5kIGluIHRoZSBVU0IgVE1DIGRvY3VtZW50cyBmcm9tIHRoZSBVU0ItSUYgZW50aXRsZWQKKwkJIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QgYW5kIE1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24KKwkJKFVTQlRNQykgUmV2aXNpb24gMS4wIiBzZWN0aW9uIDQuMi4xLjguCisKKwkJVGhlIGZpbGVzIGFyZSByZWFkIG9ubHkuCisKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kcml2ZXJzL3VzYnRtYy9kZXZpY2VzLyovdXNiNDg4X2ludGVyZmFjZV9jYXBhYmlsaXRpZXMKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvZGV2aWNlcy8qL3VzYjQ4OF9kZXZpY2VfY2FwYWJpbGl0aWVzCitEYXRlOgkJQXVndXN0IDIwMDgKK0NvbnRhY3Q6CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQHN1c2UuZGU+CitEZXNjcmlwdGlvbjoKKwkJVGhlc2UgZmlsZXMgc2hvdyB0aGUgdmFyaW91cyBVU0IgVE1DIGNhcGFiaWxpdGllcyBhcyBkZXNjcmliZWQKKwkJYnkgdGhlIGRldmljZSBpdHNlbGYuICBUaGUgZnVsbCBkZXNjcmlwdGlvbiBvZiB0aGUgYml0ZmllbGRzCisJCWNhbiBiZSBmb3VuZCBpbiB0aGUgVVNCIFRNQyBkb2N1bWVudHMgZnJvbSB0aGUgVVNCLUlGIGVudGl0bGVkCisJCSJVbml2ZXJzYWwgU2VyaWFsIEJ1cyBUZXN0IGFuZCBNZWFzdXJlbWVudCBDbGFzcywgU3ViY2xhc3MKKwkJVVNCNDg4IFNwZWNpZmljYXRpb24gKFVTQlRNQy1VU0I0ODgpIFJldmlzaW9uIDEuMCIgc2VjdGlvbgorCQk0LjIuMi4KKworCQlUaGUgZmlsZXMgYXJlIHJlYWQgb25seS4KKworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RyaXZlcnMvdXNidG1jL2RldmljZXMvKi9UZXJtQ2hhcgorRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBzdXNlLmRlPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBpcyB0aGUgVGVybUNoYXIgdmFsdWUgdG8gYmUgc2VudCB0byB0aGUgVVNCIFRNQworCQlkZXZpY2UgYXMgZGVzY3JpYmVkIGJ5IHRoZSBkb2N1bWVudCwgIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QKKwkJYW5kIE1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24KKwkJKFVTQlRNQykgUmV2aXNpb24gMS4wIiBhcyBwdWJsaXNoZWQgYnkgdGhlIFVTQi1JRi4KKworCQlOb3RlIHRoYXQgdGhlIFRlcm1DaGFyRW5hYmxlZCBmaWxlIGRldGVybWluZXMgaWYgdGhpcyB2YWx1ZSBpcworCQlzZW50IHRvIHRoZSBkZXZpY2Ugb3Igbm90LgorCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvZGV2aWNlcy8qL1Rlcm1DaGFyRW5hYmxlZAorRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBzdXNlLmRlPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBkZXRlcm1pbmVzIGlmIHRoZSBUZXJtQ2hhciBpcyB0byBiZSBzZW50IHRvIHRoZQorCQlkZXZpY2Ugb24gZXZlcnkgdHJhbnNhY3Rpb24gb3Igbm90LiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dAorCQl0aGlzLCBwbGVhc2Ugc2VlIHRoZSBkb2N1bWVudCwgIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QgYW5kCisJCU1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24gKFVTQlRNQykgUmV2aXNpb24gMS4wIiBhcworCQlwdWJsaXNoZWQgYnkgdGhlIFVTQi1JRi4KKworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RyaXZlcnMvdXNidG1jL2RldmljZXMvKi9hdXRvX2Fib3J0CitEYXRlOgkJQXVndXN0IDIwMDgKK0NvbnRhY3Q6CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQHN1c2UuZGU+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGRldGVybWluZXMgaWYgdGhlIHRoZSB0cmFuc2FjdGlvbiBvZiB0aGUgVVNCIFRNQworCQlkZXZpY2UgaXMgdG8gYmUgYXV0b21hdGljYWxseSBhYm9ydGVkIGlmIHRoZXJlIGlzIGFueSBlcnJvci4KKwkJRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzLCBwbGVhc2Ugc2VlIHRoZSBkb2N1bWVudCwKKwkJIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QgYW5kIE1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24KKwkJKFVTQlRNQykgUmV2aXNpb24gMS4wIiBhcyBwdWJsaXNoZWQgYnkgdGhlIFVTQi1JRi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVzYiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVzYgppbmRleCAxMWEzYzE2Li5kZjZjOGEwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy11c2IKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiCkBAIC04NSwzICs4NSwxOSBAQAogVXNlcnM6CiAJCVBvd2VyVE9QIDxwb3dlckBidWdob3N0Lm9yZz4KIAkJaHR0cDovL3d3dy5sZXNzd2F0dHMub3JnL3Byb2plY3RzL3Bvd2VydG9wLworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZS88YnVzbnVtPi08ZGV2bnVtPi4uLjo8Y29uZmlnIG51bT4tPGludGVyZmFjZSBudW0+L3N1cHBvcnRzX2F1dG9zdXNwZW5kCitEYXRlOgkJSmFudWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjcKK0NvbnRhY3Q6CVNhcmFoIFNoYXJwIDxzYXJhaC5hLnNoYXJwQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIDEgaWYgdGhlIGludGVyZmFjZSBkcml2ZXIKKwkJZm9yIHRoaXMgaW50ZXJmYWNlIHN1cHBvcnRzIGF1dG9zdXNwZW5kLiAgSXQgYWxzbworCQlyZXR1cm5zIDEgaWYgbm8gZHJpdmVyIGhhcyBjbGFpbWVkIHRoaXMgaW50ZXJmYWNlLCBhcyBhbgorCQl1bmNsYWltZWQgaW50ZXJmYWNlIHdpbGwgbm90IHN0b3AgdGhlIGRldmljZSBmcm9tIGJlaW5nCisJCWF1dG9zdXNwZW5kZWQgaWYgYWxsIG90aGVyIGludGVyZmFjZSBkcml2ZXJzIGFyZSBpZGxlLgorCQlUaGUgZmlsZSByZXR1cm5zIDAgaWYgYXV0b3N1c3BlbmQgc3VwcG9ydCBoYXMgbm90IGJlZW4KKwkJYWRkZWQgdG8gdGhlIGRyaXZlci4KK1VzZXJzOgorCQlVU0IgUE0gdG9vbAorCQlnaXQ6Ly9naXQubW9ibGluLm9yZy91c2Vycy9zYXJhaC91c2ItcG0tdG9vbC8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVzYi1kZXZpY2VzLXVzYnNldnNlZyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVzYi1kZXZpY2VzLXVzYnNldnNlZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjgzMGRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiLWRldmljZXMtdXNic2V2c2VnCkBAIC0wLDAgKzEsNDMgQEAKK1doZXJlOgkJL3N5cy9idXMvdXNiLy4uLi9wb3dlcmVkCitEYXRlOgkJQXVndXN0IDIwMDgKK0tlcm5lbCBWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUhhcnJpc29uIE1ldHpnZXIgPGhhcnJpc29ubWV0ekBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJQ29udHJvbHMgd2hldGhlciB0aGUgZGV2aWNlJ3MgZGlzcGxheSB3aWxsIHBvd2VyZWQuCisJCUEgdmFsdWUgb2YgMCBpcyBvZmYgYW5kIGEgbm9uLXplcm8gdmFsdWUgaXMgb24uCisKK1doZXJlOgkJL3N5cy9idXMvdXNiLy4uLi9tb2RlX21zYgorV2hlcmU6CQkvc3lzL2J1cy91c2IvLi4uL21vZGVfbHNiCitEYXRlOgkJQXVndXN0IDIwMDgKK0tlcm5lbCBWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUhhcnJpc29uIE1ldHpnZXIgPGhhcnJpc29ubWV0ekBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJQ29udHJvbHMgdGhlIGRldmljZXMgZGlzcGxheSBtb2RlLgorCQlGb3IgYSA2IGNoYXJhY3RlciBkaXNwbGF5IHRoZSB2YWx1ZXMgYXJlCisJCQlNU0IgMHgwNjsgTFNCIDB4M0YsIGFuZAorCQlmb3IgYW4gOCBjaGFyYWN0ZXIgZGlzcGxheSB0aGUgdmFsdWVzIGFyZQorCQkJTVNCIDB4MDg7IExTQiAweEZGLgorCitXaGVyZToJCS9zeXMvYnVzL3VzYi8uLi4vdGV4dG1vZGUKK0RhdGU6CQlBdWd1c3QgMjAwOAorS2VybmVsIFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJSGFycmlzb24gTWV0emdlciA8aGFycmlzb25tZXR6QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglDb250cm9scyB0aGUgd2F5IHRoZSBkZXZpY2UgaW50ZXJwcmV0cyBpdHMgdGV4dCBidWZmZXIuCisJCXJhdzoJZWFjaCBjaGFyYWN0ZXIgY29udHJvbHMgaXRzIHNlZ21lbnQgbWFudWFsbHkKKwkJaGV4OgllYWNoIGNoYXJhY3RlciBpcyBiZXR3ZWVuIDAtMTUKKwkJYXNjaWk6CWVhY2ggY2hhcmFjdGVyIGlzIGJldHdlZW4gJzAnLSc5JyBhbmQgJ0EnLSdGJy4KKworV2hlcmU6CQkvc3lzL2J1cy91c2IvLi4uL3RleHQKK0RhdGU6CQlBdWd1c3QgMjAwOAorS2VybmVsIFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJSGFycmlzb24gTWV0emdlciA8aGFycmlzb25tZXR6QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGUgdGV4dCAob3IgZGF0YSkgZm9yIHRoZSBkZXZpY2UgdG8gZGlzcGxheQorCitXaGVyZToJCS9zeXMvYnVzL3VzYi8uLi4vZGVjaW1hbHMKK0RhdGU6CQlBdWd1c3QgMjAwOAorS2VybmVsIFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJSGFycmlzb24gTWV0emdlciA8aGFycmlzb25tZXR6QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglDb250cm9scyB0aGUgZGVjaW1hbCBwbGFjZXMgb24gdGhlIGRldmljZS4KKwkJVG8gc2V0IHRoZSBudGggZGVjaW1hbCBwbGFjZSwgZ2l2ZSB0aGlzIGZpZWxkCisJCXRoZSB2YWx1ZSBvZiAxMCAqKiBuLiBBc3N1bWUgdGhpcyBmaWVsZCBoYXMKKwkJdGhlIHZhbHVlIGsgYW5kIGhhcyAxIG9yIG1vcmUgZGVjaW1hbCBwbGFjZXMgc2V0LAorCQl0byBzZXQgdGhlIG10aCBwbGFjZSAod2hlcmUgbSBpcyBub3QgYWxyZWFkeSBzZXQpLAorCQljaGFuZ2UgdGhpcyBmaWVsZHMgdmFsdWUgdG8gayArIDEwICoqIG0uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dhZGdldC50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dhZGdldC50bXBsCmluZGV4IGVhM2JjOTUuLjZlZjJmMDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9nYWRnZXQudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ2FkZ2V0LnRtcGwKQEAgLTU1Nyw2ICs1NTcsOSBAQAogPC9wYXJhPgogCiAhRWRyaXZlcnMvdXNiL2dhZGdldC9mX2FjbS5jCishRWRyaXZlcnMvdXNiL2dhZGdldC9mX2VjbS5jCishRWRyaXZlcnMvdXNiL2dhZGdldC9mX3N1YnNldC5jCishRWRyaXZlcnMvdXNiL2dhZGdldC9mX29iZXguYwogIUVkcml2ZXJzL3VzYi9nYWRnZXQvZl9zZXJpYWwuYwogCiA8L3NlY3QxPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlcy50eHQKaW5kZXggMDVjODA2NC4uMmJlMDgyNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0CkBAIC0yNTcxLDYgKzI1NzEsOSBAQAogCQkxNjAgPSAvZGV2L3VzYi9sZWdvdXNidG93ZXIwCTFzdCBVU0IgTGVnb3Rvd2VyIGRldmljZQogCQkgICAgLi4uCiAJCTE3NSA9IC9kZXYvdXNiL2xlZ291c2J0b3dlcjE1CTE2dGggVVNCIExlZ290b3dlciBkZXZpY2UKKwkJMTc2ID0gL2Rldi91c2IvdXNidG1jMQlGaXJzdCBVU0IgVE1DIGRldmljZQorCQkgICAuLi4KKwkJMTkyID0gL2Rldi91c2IvdXNidG1jMTYJMTZ0aCBVU0IgVE1DIGRldmljZQogCQkyNDAgPSAvZGV2L3VzYi9kYWJ1c2IwCUZpcnN0IGRhdWJ1c2IgZGV2aWNlCiAJCSAgICAuLi4KIAkJMjQzID0gL2Rldi91c2IvZGFidXNiMwlGb3VydGggZGFidXNiIGRldmljZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0NC50eHQKaW5kZXggZWIxNTRlZi4uMTc0ZWFmZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQudHh0CkBAIC0yLDE5ICsyLDI0IEBACiBFeHQ0IEZpbGVzeXN0ZW0KID09PT09PT09PT09PT09PQogCi1UaGlzIGlzIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBhbiBhZHZhbmNlZCBsZXZlbAotb2YgdGhlIGV4dDMgZmlsZXN5c3RlbSB3aGljaCBpbmNvcnBvcmF0ZXMgc2NhbGFiaWxpdHkgYW5kIHJlbGlhYmlsaXR5Ci1lbmhhbmNlbWVudHMgZm9yIHN1cHBvcnRpbmcgbGFyZ2UgZmlsZXN5c3RlbXMgKDY0IGJpdCkgaW4ga2VlcGluZyB3aXRoCi1pbmNyZWFzaW5nIGRpc2sgY2FwYWNpdGllcyBhbmQgc3RhdGUtb2YtdGhlLWFydCBmZWF0dXJlIHJlcXVpcmVtZW50cy4KK0V4dDQgaXMgYW4gYW4gYWR2YW5jZWQgbGV2ZWwgb2YgdGhlIGV4dDMgZmlsZXN5c3RlbSB3aGljaCBpbmNvcnBvcmF0ZXMKK3NjYWxhYmlsaXR5IGFuZCByZWxpYWJpbGl0eSBlbmhhbmNlbWVudHMgZm9yIHN1cHBvcnRpbmcgbGFyZ2UgZmlsZXN5c3RlbXMKKyg2NCBiaXQpIGluIGtlZXBpbmcgd2l0aCBpbmNyZWFzaW5nIGRpc2sgY2FwYWNpdGllcyBhbmQgc3RhdGUtb2YtdGhlLWFydAorZmVhdHVyZSByZXF1aXJlbWVudHMuCiAKLU1haWxpbmcgbGlzdDogbGludXgtZXh0NEB2Z2VyLmtlcm5lbC5vcmcKK01haWxpbmcgbGlzdDoJbGludXgtZXh0NEB2Z2VyLmtlcm5lbC5vcmcKK1dlYiBzaXRlOglodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcKIAogCiAxLiBRdWljayB1c2FnZSBpbnN0cnVjdGlvbnM6CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorTm90ZTogTW9yZSBleHRlbnNpdmUgaW5mb3JtYXRpb24gZm9yIGdldHRpbmcgc3RhcnRlZCB3aXRoIGV4dDQgY2FuIGJlCisgICAgICBmb3VuZCBhdCB0aGUgZXh0NCB3aWtpIHNpdGUgYXQgdGhlIFVSTDoKKyAgICAgIGh0dHA6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvRXh0NF9Ib3d0bworCiAgIC0gQ29tcGlsZSBhbmQgaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgZTJmc3Byb2dzIChhcyBvZiB0aGlzCi0gICAgd3JpdGluZyB2ZXJzaW9uIDEuNDEpIGZyb206CisgICAgd3JpdGluZyB2ZXJzaW9uIDEuNDEuMykgZnJvbToKIAogICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTI0MDYKIAkKQEAgLTM2LDExICs0MSw5IEBACiAKICAgICAJIyBta2UyZnMgLXQgZXh0NCAvZGV2L2hkYTEKIAotICAgIE9yIGNvbmZpZ3VyZSBhbiBleGlzdGluZyBleHQzIGZpbGVzeXN0ZW0gdG8gc3VwcG9ydCBleHRlbnRzIGFuZCBzZXQKLSAgICB0aGUgdGVzdF9mcyBmbGFnIHRvIGluZGljYXRlIHRoYXQgaXQncyBvayBmb3IgYW4gaW4tZGV2ZWxvcG1lbnQKLSAgICBmaWxlc3lzdGVtIHRvIHRvdWNoIHRoaXMgZmlsZXN5c3RlbToKKyAgICBPciB0byBjb25maWd1cmUgYW4gZXhpc3RpbmcgZXh0MyBmaWxlc3lzdGVtIHRvIHN1cHBvcnQgZXh0ZW50czogCiAKLQkjIHR1bmUyZnMgLU8gZXh0ZW50cyAtRSB0ZXN0X2ZzIC9kZXYvaGRhMQorCSMgdHVuZTJmcyAtTyBleHRlbnRzIC9kZXYvaGRhMQogCiAgICAgSWYgdGhlIGZpbGVzeXN0ZW0gd2FzIGNyZWF0ZWQgd2l0aCAxMjggYnl0ZSBpbm9kZXMsIGl0IGNhbiBiZQogICAgIGNvbnZlcnRlZCB0byB1c2UgMjU2IGJ5dGUgZm9yIGdyZWF0ZXIgZWZmaWNpZW5jeSB2aWE6CkBAIC0xMDQsOCArMTA3LDggQEAKIFRoZSBiaWcgcGVyZm9ybWFuY2Ugd2luIHdpbGwgY29tZSB3aXRoIG1iYWxsb2MsIGRlbGFsbG9jIGFuZCBmbGV4X2JnCiBncm91cGluZyBvZiBiaXRtYXBzIGFuZCBpbm9kZSB0YWJsZXMuICBTb21lIHRlc3QgcmVzdWx0cyBhdmFpbGFibGUgaGVyZToKIAotIC0gaHR0cDovL3d3dy5idWxsb3BlbnNvdXJjZS5vcmcvZXh0NC8yMDA4MDUzMC9mZnNiLXdyaXRlLTIuNi4yNi1yYzIuaHRtbAotIC0gaHR0cDovL3d3dy5idWxsb3BlbnNvdXJjZS5vcmcvZXh0NC8yMDA4MDUzMC9mZnNiLXJlYWR3cml0ZS0yLjYuMjYtcmMyLmh0bWwKKyAtIGh0dHA6Ly93d3cuYnVsbG9wZW5zb3VyY2Uub3JnL2V4dDQvMjAwODA4MTgtZmZzYi9mZnNiLXdyaXRlLTIuNi4yNy1yYzEuaHRtbAorIC0gaHR0cDovL3d3dy5idWxsb3BlbnNvdXJjZS5vcmcvZXh0NC8yMDA4MDgxOC1mZnNiL2Zmc2ItcmVhZHdyaXRlLTIuNi4yNy1yYzEuaHRtbAogCiAzLiBPcHRpb25zCiA9PT09PT09PT09CkBAIC0yMTQsOSArMjE3LDYgQEAKIGJzZGRmCQkoKikJTWFrZSAnZGYnIGFjdCBsaWtlIEJTRC4KIG1pbml4ZGYJCQlNYWtlICdkZicgYWN0IGxpa2UgTWluaXguCiAKLWNoZWNrPW5vbmUJCURvbid0IGRvIGV4dHJhIGNoZWNraW5nIG9mIGJpdG1hcHMgb24gbW91bnQuCi1ub2NoZWNrCi0KIGRlYnVnCQkJRXh0cmEgZGVidWdnaW5nIGluZm9ybWF0aW9uIGlzIHNlbnQgdG8gc3lzbG9nLgogCiBlcnJvcnM9cmVtb3VudC1ybygqKQlSZW1vdW50IHRoZSBmaWxlc3lzdGVtIHJlYWQtb25seSBvbiBhbiBlcnJvci4KQEAgLTI1Myw4ICsyNTMsNiBAQAogCQkJIm5vYmgiIG9wdGlvbiB0cmllcyB0byBhdm9pZCBhc3NvY2lhdGluZyBidWZmZXIKIAkJCWhlYWRzIChzdXBwb3J0ZWQgb25seSBmb3IgIndyaXRlYmFjayIgbW9kZSkuCiAKLW1iYWxsb2MJCSgqKQlVc2UgdGhlIG11bHRpcGxlIGJsb2NrIGFsbG9jYXRvciBmb3IgYmxvY2sgYWxsb2NhdGlvbgotbm9tYmFsbG9jCQlkaXNhYmxlZCBtdWx0aXBsZSBibG9jayBhbGxvY2F0b3IgZm9yIGJsb2NrIGFsbG9jYXRpb24uCiBzdHJpcGU9bgkJTnVtYmVyIG9mIGZpbGVzeXN0ZW0gYmxvY2tzIHRoYXQgbWJhbGxvYyB3aWxsIHRyeQogCQkJdG8gdXNlIGZvciBhbGxvY2F0aW9uIHNpemUgYW5kIGFsaWdubWVudC4gRm9yIFJBSUQ1LzYKIAkJCXN5c3RlbXMgdGhpcyBzaG91bGQgYmUgdGhlIG51bWJlciBvZiBkYXRhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0NzAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0NzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVkMTNjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQ3MApAQCAtMCwwICsxLDc2IEBACitLZXJuZWwgZHJpdmVyIGFkdDc0NzAKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQW5hbG9nIERldmljZXMgQURUNzQ3MAorICAgIFByZWZpeDogJ2FkdDc0NzAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJDLCAweDJFLCAweDJGCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKKworQXV0aG9yOiBEYXJyaWNrIEouIFdvbmcKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzIEFEVDc0NzAgY2hpcC4gIFRoZXJlIG1heQorYmUgb3RoZXIgY2hpcHMgdGhhdCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCisKK1RoZSBBRFQ3NDcwIHVzZXMgdGhlIDItd2lyZSBpbnRlcmZhY2UgY29tcGF0aWJsZSB3aXRoIHRoZSBTTUJ1cyAyLjAKK3NwZWNpZmljYXRpb24uIFVzaW5nIGFuIGFuYWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlciBpdCBtZWFzdXJlcyB1cCB0byB0ZW4gKDEwKQorZXh0ZXJuYWwgdGVtcGVyYXR1cmVzLiBJdCBoYXMgZm91ciAoNCkgMTYtYml0IGNvdW50ZXJzIGZvciBtZWFzdXJpbmcgZmFuIHNwZWVkLgorVGhlcmUgYXJlIGZvdXIgKDQpIFBXTSBvdXRwdXRzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBmYW4gc3BlZWQuCisKK0Egc29waGlzdGljYXRlZCBjb250cm9sIHN5c3RlbSBmb3IgdGhlIFBXTSBvdXRwdXRzIGlzIGRlc2lnbmVkIGludG8gdGhlIEFEVDc0NzAKK3RoYXQgYWxsb3dzIGZhbiBzcGVlZCB0byBiZSBhZGp1c3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIGFueSBvZiB0aGUgdGVuCit0ZW1wZXJhdHVyZSBzZW5zb3JzLiBFYWNoIFBXTSBvdXRwdXQgaXMgaW5kaXZpZHVhbGx5IGFkanVzdGFibGUgYW5kCitwcm9ncmFtbWFibGUuIE9uY2UgY29uZmlndXJlZCwgdGhlIEFEVDc0NzAgd2lsbCBhZGp1c3QgdGhlIFBXTSBvdXRwdXRzIGluCityZXNwb25zZSB0byB0aGUgbWVhc3VyZWQgdGVtcGVyYXR1cmVzIHdpdGggZnVydGhlciBob3N0IGludGVydmVudGlvbi4gIFRoaXMKK2ZlYXR1cmUgY2FuIGFsc28gYmUgZGlzYWJsZWQgZm9yIG1hbnVhbCBjb250cm9sIG9mIHRoZSBQV00ncy4KKworRWFjaCBvZiB0aGUgbWVhc3VyZWQgaW5wdXRzICh0ZW1wZXJhdHVyZSwgZmFuIHNwZWVkKSBoYXMgY29ycmVzcG9uZGluZyBoaWdoL2xvdworbGltaXQgdmFsdWVzLiBUaGUgQURUNzQ3MCB3aWxsIHNpZ25hbCBhbiBBTEFSTSBpZiBhbnkgbWVhc3VyZWQgdmFsdWUgZXhjZWVkcworZWl0aGVyIGxpbWl0LgorCitUaGUgQURUNzQ3MCBET0VTIE5PVCBzYW1wbGUgYWxsIGlucHV0cyBjb250aW51b3VzbHkuICBBIHNpbmdsZSBwaW4gb24gdGhlCitBRFQ3NDcwIGlzIGNvbm5lY3RlZCB0byBhIG11bHRpdHVkZSBvZiB0aGVybWFsIGRpb2RlcywgYnV0IHRoZSBjaGlwIG11c3QgYmUKK2luc3RydWN0ZWQgZXhwbGljaXRseSB0byByZWFkIHRoZSBtdWx0aXR1ZGUgb2YgZGlvZGVzLiAgSWYgeW91IHdhbnQgdG8gdXNlCithdXRvbWF0aWMgZmFuIGNvbnRyb2wgbW9kZSwgeW91IG11c3QgbWFudWFsbHkgcmVhZCBhbnkgb2YgdGhlIHRlbXBlcmF0dXJlCitzZW5zb3JzIG9yIHRoZSBmYW4gY29udHJvbCBhbGdvcml0aG0gd2lsbCBub3QgcnVuLiAgVGhlIGNoaXAgV0lMTCBOT1QgRE8gVEhJUworQVVUT01BVElDQUxMWTsgdGhpcyBtdXN0IGJlIGRvbmUgZnJvbSB1c2Vyc3BhY2UuICBUaGlzIG1heSBiZSBhIGJ1ZyBpbiB0aGUgY2hpcAorZGVzaWduLCBnaXZlbiB0aGF0IG1hbnkgb3RoZXIgQUQgY2hpcHMgdGFrZSBjYXJlIG9mIHRoaXMuICBUaGUgZHJpdmVyIHdpbGwgbm90CityZWFkIHRoZSByZWdpc3RlcnMgbW9yZSBvZnRlbiB0aGFuIG9uY2UgZXZlcnkgNSBzZWNvbmRzLiAgRnVydGhlciwKK2NvbmZpZ3VyYXRpb24gZGF0YSBpcyBvbmx5IHJlYWQgb25jZSBwZXIgbWludXRlLgorCitTcGVjaWFsIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBBRFQ3NDcwIGhhcyBhIDgtYml0IEFEQyBhbmQgaXMgY2FwYWJsZSBvZiBtZWFzdXJpbmcgdGVtcGVyYXR1cmVzIHdpdGggMQorZGVnQyByZXNvbHV0aW9uLgorCitUaGUgQW5hbG9nIERldmljZXMgZGF0YXNoZWV0IGlzIHZlcnkgZGV0YWlsZWQgYW5kIGRlc2NyaWJlcyBhIHByb2NlZHVyZSBmb3IKK2RldGVybWluaW5nIGFuIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF1dG9tYXRpYyBQV00gY29udHJvbC4KKworQ29uZmlndXJhdGlvbiBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZXNpZGVzIHN0YW5kYXJkIGludGVyZmFjZXMgZHJpdmVyIGFkZHMgdGhlIGZvbGxvd2luZzoKKworKiBQV00gQ29udHJvbAorCisqIHB3bSNfYXV0b19wb2ludDFfcHdtIGFuZCBwd20jX2F1dG9fcG9pbnQxX3RlbXAgYW5kCisqIHB3bSNfYXV0b19wb2ludDJfcHdtIGFuZCBwd20jX2F1dG9fcG9pbnQyX3RlbXAgLQorCitwb2ludDE6IFNldCB0aGUgcHdtIHNwZWVkIGF0IGEgbG93ZXIgdGVtcGVyYXR1cmUgYm91bmQuCitwb2ludDI6IFNldCB0aGUgcHdtIHNwZWVkIGF0IGEgaGlnaGVyIHRlbXBlcmF0dXJlIGJvdW5kLgorCitUaGUgQURUNzQ3MCB3aWxsIHNjYWxlIHRoZSBwd20gYmV0d2VlbiB0aGUgbG93ZXIgYW5kIGhpZ2hlciBwd20gc3BlZWQgd2hlbgordGhlIHRlbXBlcmF0dXJlIGlzIGJldHdlZW4gdGhlIHR3byB0ZW1wZXJhdHVyZSBib3VuZGFyaWVzLiAgUFdNIHZhbHVlcyByYW5nZQorZnJvbSAwIChvZmYpIHRvIDI1NSAoZnVsbCBzcGVlZCkuICBGYW4gc3BlZWQgd2lsbCBiZSBzZXQgdG8gbWF4aW11bSB3aGVuIHRoZQordGVtcGVyYXR1cmUgc2Vuc29yIGFzc29jaWF0ZWQgd2l0aCB0aGUgUFdNIGNvbnRyb2wgZXhjZWVkcworcHdtI19hdXRvX3BvaW50Ml90ZW1wLgorCitOb3RlcworLS0tLS0KKworQXMgc3RhdGVkIGFib3ZlLCB0aGUgdGVtcGVyYXR1cmUgaW5wdXRzIG11c3QgYmUgcmVhZCBwZXJpb2RpY2FsbHkgZnJvbQordXNlcnNwYWNlIGluIG9yZGVyIGZvciB0aGUgYXV0b21hdGljIHB3bSBhbGdvcml0aG0gdG8gcnVuLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9pdDg3IGIvRG9jdW1lbnRhdGlvbi9od21vbi9pdDg3CmluZGV4IDM0OTZiNzAuLjA0MmMwNDEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vaXQ4NworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2l0ODcKQEAgLTEzNiwxMCArMTM2LDEwIEBACiBUaGUgSVQ4N3h4IG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgogd2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgogCi1UbyBjaGFuZ2Ugc2Vuc29yIE4gdG8gYSB0aGVybWlzdG9yLCAnZWNobyAyID4gdGVtcE5fdHlwZScgd2hlcmUgTiBpcyAxLCAyLAorVG8gY2hhbmdlIHNlbnNvciBOIHRvIGEgdGhlcm1pc3RvciwgJ2VjaG8gNCA+IHRlbXBOX3R5cGUnIHdoZXJlIE4gaXMgMSwgMiwKIG9yIDMuIFRvIGNoYW5nZSBzZW5zb3IgTiB0byBhIHRoZXJtYWwgZGlvZGUsICdlY2hvIDMgPiB0ZW1wTl90eXBlJy4KIEdpdmUgMCBmb3IgdW51c2VkIHNlbnNvci4gQW55IG90aGVyIHZhbHVlIGlzIGludmFsaWQuIFRvIGNvbmZpZ3VyZSB0aGlzIGF0Ci1zdGFydHVwLCBjb25zdWx0IGxtX3NlbnNvcnMncyAvZXRjL3NlbnNvcnMuY29uZi4gKDIgPSB0aGVybWlzdG9yOworc3RhcnR1cCwgY29uc3VsdCBsbV9zZW5zb3JzJ3MgL2V0Yy9zZW5zb3JzLmNvbmYuICg0ID0gdGhlcm1pc3RvcjsKIDMgPSB0aGVybWFsIGRpb2RlKQogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG04NSBiL0RvY3VtZW50YXRpb24vaHdtb24vbG04NQppbmRleCA2ZDQxZGI3Li40MDA2MjA3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtODUKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTg1CkBAIC0xNjMsMTYgKzE2Myw2IEBACiAqIHB3bSNfYXV0b19wd21fbWluIC0gdGhpcyBzcGVjaWZpZXMgdGhlIFBXTSB2YWx1ZSBmb3IgdGVtcCNfYXV0b190ZW1wX29mZgogICAgICAgICAgICAgICAgICAgICAgIHRlbXBlcmF0dXJlLiAoUFdNIHZhbHVlIGZyb20gMCB0byAyNTUpCiAKLSogcHdtI19hdXRvX3B3bV9mcmVxIC0gc2VsZWN0IGJhc2UgZnJlcXVlbmN5IG9mIFBXTSBvdXRwdXQuIFlvdSBjYW4gc2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGluIHJhbmdlIG9mIDEwLjAgdG8gOTQuMCBIeiBpbiAuMSBIeiB1bml0cy4KLQkJICAgICAgIChWYWx1ZXMgMTAwIHRvIDk0MCkuCi0KLVRoZSBwd20jX2F1dG9fcHdtX2ZyZXEgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyA4IHZhbHVlcy4gU2V0dGluZyB0aGUKLWZyZXF1ZW5jeSB0byBhIHZhbHVlIG5vdCBvbiB0aGlzIGxpc3QsIHdpbGwgcmVzdWx0IGluIHRoZSBuZXh0IGhpZ2hlciBmcmVxdWVuY3kKLWJlaW5nIHNlbGVjdGVkLiBUaGUgYWN0dWFsIGRldmljZSBmcmVxdWVuY3kgbWF5IHZhcnkgc2xpZ2h0bHkgZnJvbSB0aGlzCi1zcGVjaWZpY2F0aW9uIGFzIGRlc2lnbmVkIGJ5IHRoZSBtYW51ZmFjdHVyZXIuIENvbnN1bHQgdGhlIGRhdGFzaGVldCBmb3IgbW9yZQotZGV0YWlscy4gKFBXTSBGcmVxdWVuY3kgdmFsdWVzOiAgMTAwLCAxNTAsIDIzMCwgMzAwLCAzODAsIDQ3MCwgNjIwLCA5NDApCi0KICogcHdtI19hdXRvX3B3bV9taW5jdGwgLSB0aGlzIGZsYWdzIHNlbGVjdHMgZm9yIHRlbXAjX2F1dG9fdGVtcF9vZmYgdGVtcGVyYXR1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYmFoYXZpb3VyIG9mIGZhbnMuIFdyaXRlIDEgdG8gbGV0IGZhbnMgc3Bpbm5pbmcgYXQKIAkJCSBwd20jX2F1dG9fcHdtX21pbiBvciB3cml0ZSAwIHRvIGxldCB0aGVtIG9mZi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG04NyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG04NwppbmRleCBlYzI3YWExLi42YjQ3YjY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtODcKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTg3CkBAIC02NSwxMSArNjUsMTAgQEAKIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KIAogU29tZSBmdW5jdGlvbnMgc2hhcmUgcGlucywgc28gbm90IGFsbCBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBhdCB0aGUgc2FtZQotdGltZS4gV2hpY2ggYXJlIGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIHNldHVwLiBUaGlzIGRyaXZlciBhc3N1bWVzIHRoYXQKLXRoZSBCSU9TIGNvbmZpZ3VyZWQgdGhlIGNoaXAgY29ycmVjdGx5LiBJbiB0aGF0IHJlc3BlY3QsIGl0IGRpZmZlcnMgZnJvbQotdGhlIG9yaWdpbmFsIGRyaXZlciAoZnJvbSBsbV9zZW5zb3JzIGZvciBMaW51eCAyLjQpLCB3aGljaCB3b3VsZCBmb3JjZSB0aGUKLUxNODcgdG8gYW4gYXJiaXRyYXJ5LCBjb21waWxlLXRpbWUgY2hvc2VuIG1vZGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdHVhbAotY2hpcHNldCB3aXJpbmcuCit0aW1lLiBXaGljaCBhcmUgZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUgc2V0dXAuIFRoaXMgZHJpdmVyIG5vcm1hbGx5Cithc3N1bWVzIHRoYXQgZmlybXdhcmUgY29uZmlndXJlZCB0aGUgY2hpcCBjb3JyZWN0bHkuIFdoZXJlIHRoaXMgaXMgbm90Cit0aGUgY2FzZSwgcGxhdGZvcm0gY29kZSBtdXN0IHNldCB0aGUgSTJDIGNsaWVudCdzIHBsYXRmb3JtX2RhdGEgdG8gcG9pbnQKK3RvIGEgdTggdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgY2hhbm5lbCByZWdpc3Rlci4KIAogRm9yIHJlZmVyZW5jZSwgaGVyZSBpcyB0aGUgbGlzdCBvZiBleGNsdXNpdmUgZnVuY3Rpb25zOgogIC0gaW4wK2luNSAoZGVmYXVsdCkgb3IgdGVtcDMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG05MCBiL0RvY3VtZW50YXRpb24vaHdtb24vbG05MAppbmRleCBhYTRhMGVjLi5lMGQ1MjA2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTAKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTkwCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgUHJlZml4OiAnbG05OScKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKICAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCi0gICAgICAgICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTg5Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL21wZi9MTS9MTTg5Lmh0bWwKICAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNOTkKICAgICBQcmVmaXg6ICdsbTk5JwogICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YyBhbmQgMHg0ZApAQCAtMjEsMTggKzIxLDMyIEBACiAgICAgUHJlZml4OiAnbG04NicKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMKICAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCi0gICAgICAgICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTg2Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL21wZi9MTS9MTTg2Lmh0bWwKICAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMDMyCiAgICAgUHJlZml4OiAnYWRtMTAzMicKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKLSAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQotICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL2VuL3Byb2QvMCwyODc3LEFETTEwMzIsMDAuaHRtbAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBPTiBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cub25zZW1pLmNvbS9Qb3dlclNvbHV0aW9ucy9wcm9kdWN0LmRvP2lkPUFETTEwMzIKICAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3NDYxCiAgICAgUHJlZml4OiAnYWR0NzQ2MScKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKLSAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQotICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL2VuL3Byb2QvMCwyODc3LEFEVDc0NjEsMDAuaHRtbAotICAgIE5vdGU6IE9ubHkgaWYgaW4gQURNMTAzMiBjb21wYXRpYmlsaXR5IG1vZGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgT04gU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm9uc2VtaS5jb20vUG93ZXJTb2x1dGlvbnMvcHJvZHVjdC5kbz9pZD1BRFQ3NDYxCisgICogTWF4aW0gTUFYNjY0NgorICAgIFByZWZpeDogJ21heDY2NDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRkCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zNDk3CisgICogTWF4aW0gTUFYNjY0NworICAgIFByZWZpeDogJ21heDY2NDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zNDk3CisgICogTWF4aW0gTUFYNjY0OQorICAgIFByZWZpeDogJ21heDY2NDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zNDk3CiAgICogTWF4aW0gTUFYNjY1NwogICAgIFByZWZpeDogJ21heDY2NTcnCiAgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCkBAIC03MCwyNSArODQsMjEgQEAKIAogVGhlIExNOTAgaXMgYSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvci4gSXQgc2Vuc2VzIGl0cyBvd24gdGVtcGVyYXR1cmUgYXMKIHdlbGwgYXMgdGhlIHRlbXBlcmF0dXJlIG9mIHVwIHRvIG9uZSBleHRlcm5hbCBkaW9kZS4gSXQgaXMgY29tcGF0aWJsZQotd2l0aCBtYW55IG90aGVyIGRldmljZXMgc3VjaCBhcyB0aGUgTE04NiwgdGhlIExNODksIHRoZSBMTTk5LCB0aGUgQURNMTAzMiwKLXRoZSBNQVg2NjU3LCBNQVg2NjU4LCBNQVg2NjU5LCBNQVg2NjgwIGFuZCB0aGUgTUFYNjY4MSBhbGwgb2Ygd2hpY2ggYXJlCi1zdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuCit3aXRoIG1hbnkgb3RoZXIgZGV2aWNlcywgbWFueSBvZiB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLgogCiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBNQVg2NjU3LAogTUFYNjY1OCBhbmQgTUFYNjY1OSB2YXJpYW50cy4gVGhlIGV4dHJhIGFkZHJlc3MgYW5kIGZlYXR1cmVzIG9mIHRoZQogTUFYNjY1OSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4gVGhlIE1BWDY2ODAgYW5kIE1BWDY2ODEgb25seQogZGlmZmVyIGluIHRoZWlyIHBpbm91dCwgdGhlcmVmb3JlIHRoZXkgb2J2aW91c2x5IGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykKLWJlIGRpc3Rpbmd1aXNoZWQuIEFkZGl0aW9uYWxseSwgdGhlIEFEVDc0NjEgaXMgc3VwcG9ydGVkIGlmIGZvdW5kIGluCi1BRE0xMDMyIGNvbXBhdGliaWxpdHkgbW9kZS4KK2JlIGRpc3Rpbmd1aXNoZWQuCiAKIFRoZSBzcGVjaWZpY2l0eSBvZiB0aGlzIGZhbWlseSBvZiBjaGlwc2V0cyBvdmVyIHRoZSBBRE0xMDIxL0xNODQKIGZhbWlseSBpcyB0aGF0IGl0IGZlYXR1cmVzIGNyaXRpY2FsIGxpbWl0cyB3aXRoIGh5c3RlcmVzaXMsIGFuZCBhbgogaW5jcmVhc2VkIHJlc29sdXRpb24gb2YgdGhlIHJlbW90ZSB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudC4KIAogVGhlIGRpZmZlcmVudCBjaGlwc2V0cyBvZiB0aGUgZmFtaWx5IGFyZSBub3Qgc3RyaWN0bHkgaWRlbnRpY2FsLCBhbHRob3VnaAotdmVyeSBzaW1pbGFyLiBUaGlzIGRyaXZlciBkb2Vzbid0IGhhbmRsZSBhbnkgc3BlY2lmaWMgZmVhdHVyZSBmb3Igbm93LAotd2l0aCB0aGUgZXhjZXB0aW9uIG9mIFNNQnVzIFBFQy4gRm9yIHJlZmVyZW5jZSwgaGVyZSBjb21lcyBhIG5vbi1leGhhdXN0aXZlCi1saXN0IG9mIHNwZWNpZmljIGZlYXR1cmVzOgordmVyeSBzaW1pbGFyLiBGb3IgcmVmZXJlbmNlLCBoZXJlIGNvbWVzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiBzcGVjaWZpYworZmVhdHVyZXM6CiAKIExNOTA6CiAgICogRmlsdGVyIGFuZCBhbGVydCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGF0IDB4QkYuCkBAIC0xMTQsOSArMTI0LDExIEBACiAgICogTG93ZXIgcmVzb2x1dGlvbiBmb3IgcmVtb3RlIHRlbXBlcmF0dXJlCiAKIE1BWDY2NTcgYW5kIE1BWDY2NTg6CisgICogQmV0dGVyIGxvY2FsIHJlc29sdXRpb24KICAgKiBSZW1vdGUgc2Vuc29yIHR5cGUgc2VsZWN0aW9uCiAKIE1BWDY2NTk6CisgICogQmV0dGVyIGxvY2FsIHJlc29sdXRpb24KICAgKiBTZWxlY3RhYmxlIGFkZHJlc3MKICAgKiBTZWNvbmQgY3JpdGljYWwgdGVtcGVyYXR1cmUgbGltaXQKICAgKiBSZW1vdGUgc2Vuc29yIHR5cGUgc2VsZWN0aW9uCkBAIC0xMjcsNyArMTM5LDggQEAKIAogQWxsIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uCiBpcyAxLjAgZGVncmVlIGZvciB0aGUgbG9jYWwgdGVtcGVyYXR1cmUsIDAuMTI1IGRlZ3JlZSBmb3IgdGhlIHJlbW90ZQotdGVtcGVyYXR1cmUuCit0ZW1wZXJhdHVyZSwgZXhjZXB0IGZvciB0aGUgTUFYNjY1NywgTUFYNjY1OCBhbmQgTUFYNjY1OSB3aGljaCBoYXZlIGEKK3Jlc29sdXRpb24gb2YgMC4xMjUgZGVncmVlIGZvciBib3RoIHRlbXBlcmF0dXJlcy4KIAogRWFjaCBzZW5zb3IgaGFzIGl0cyBvd24gaGlnaCBhbmQgbG93IGxpbWl0cywgcGx1cyBhIGNyaXRpY2FsIGxpbWl0LgogQWRkaXRpb25hbGx5LCB0aGVyZSBpcyBhIHJlbGF0aXZlIGh5c3RlcmVzaXMgdmFsdWUgY29tbW9uIHRvIGJvdGggY3JpdGljYWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vcGM4NzM2MCBiL0RvY3VtZW50YXRpb24vaHdtb24vcGM4NzM2MAppbmRleCA4OWE4ZmNmLi5jYmFjMzJiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODczNjAKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wYzg3MzYwCkBAIC01LDEyICs1LDcgQEAKICAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIFBDODczNjAsIFBDODczNjMsIFBDODczNjQsIFBDODczNjUgYW5kIFBDODczNjYKICAgICBQcmVmaXhlczogJ3BjODczNjAnLCAncGM4NzM2MycsICdwYzg3MzY0JywgJ3BjODczNjUnLCAncGM4NzM2NicKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQotICAgIERhdGFzaGVldHM6Ci0gICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL1BDL1BDODczNjAuaHRtbAotICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9QQy9QQzg3MzYzLmh0bWwKLSAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvUEMvUEM4NzM2NC5odG1sCi0gICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL1BDL1BDODczNjUuaHRtbAotICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9QQy9QQzg3MzY2Lmh0bWwKKyAgICBEYXRhc2hlZXRzOiBObyBsb25nZXIgYXZhaWxhYmxlCiAKIEF1dGhvcnM6IEplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODc0MjcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODc0MjcKaW5kZXggOWEwNzA4Zi4uZDFlYmJlNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi9wYzg3NDI3CisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vcGM4NzQyNwpAQCAtNSw3ICs1LDcgQEAKICAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIFBDODc0MjcKICAgICBQcmVmaXg6ICdwYzg3NDI3JwogICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCi0gICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LndpbmJvbmQuY29tLnR3L0UtV0lOQk9OREhUTS9wYXJ0bmVyL2FwY18wMDcuaHRtbAorICAgIERhdGFzaGVldDogTm8gbG9uZ2VyIGF2YWlsYWJsZQogCiBBdXRob3I6IEplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc4MWQgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc4MWQKaW5kZXggNmY4MDBhMC4uYzkxZTBiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzgxZApAQCAtMzUzLDcgKzM1Myw3IEBACiAKICMgUFdNCiAKLUFkZGl0aW9uYWwgaW5mbyBhYm91dCBQV00gb24gdGhlIEFTOTkxMjdGIChtYXkgYXBwbHkgdG8gb3RoZXIgQXN1cworKiBBZGRpdGlvbmFsIGluZm8gYWJvdXQgUFdNIG9uIHRoZSBBUzk5MTI3RiAobWF5IGFwcGx5IHRvIG90aGVyIEFzdXMKIGNoaXBzIGFzIHdlbGwpIGJ5IEplYW4gRGVsdmFyZSBhcyBvZiAyMDA0LTA0LTA5OgogCiBBUzk5MTI3RiByZXZpc2lvbiAyIHNlZW1zIHRvIGhhdmUgdHdvIFBXTSByZWdpc3RlcnMgYXQgMHg1OSBhbmQgMHg1QSwKQEAgLTM5Niw3ICszOTYsNyBAQAogbG9uZyBhcyB3ZSBkb24ndCBrbm93IG1vcmUsIHRoZSB3ODM3ODFkIGRyaXZlciBkb2Vzbid0IGhhbmRsZSBQV00gb24KIEFTOTkxMjdGIGNoaXBzIGF0IGFsbC4KIAotQWRkaXRpb25hbCBpbmZvIGFib3V0IFBXTSBvbiB0aGUgQVM5OTEyN0YgcmV2LjEgYnkgSGVjdG9yIE1hcnRpbjoKKyogQWRkaXRpb25hbCBpbmZvIGFib3V0IFBXTSBvbiB0aGUgQVM5OTEyN0YgcmV2LjEgYnkgSGVjdG9yIE1hcnRpbjoKIAogSSd2ZSBiZWVuIGZpZGRsaW5nIGFyb3VuZCB3aXRoIHRoZSAoaW4pZmFtb3VzIDB4NTkgcmVnaXN0ZXIgYW5kCiBmb3VuZCBvdXQgdGhlIGZvbGxvd2luZyB2YWx1ZXMgZG8gd29yayBhcyBhIGZvcm0gb2YgY29hcnNlIHB3bToKQEAgLTQxOCwzICs0MTgsMzYgQEAKIE15IG1vYm8gaXMgYW4gQVNVUyBBN1YyNjYtRS4gVGhpcyBiZWhhdmlvciBpcyBzaW1pbGFyIHRvIHdoYXQgSSBnb3QKIHdpdGggc3BlZWRmYW4gdW5kZXIgV2luZG93cywgd2hlcmUgMC0xNSUgd291bGQgYmUgb2ZmLCAxNS0yeCUgKGNhbid0CiByZW1lbWJlciB0aGUgZXhhY3QgdmFsdWUpIHdvdWxkIGJlIDcwJSBhbmQgaGlnaGVyIHdvdWxkIGJlIGZ1bGwgb24uCisKKyogQWRkaXRpb25hbCBpbmZvIGFib3V0IFBXTSBvbiB0aGUgQVM5OTEyN0YgcmV2LjEgZnJvbSBsbS1zZW5zb3JzCisgIHRpY2tldCAjMjM1MDoKKworSSBjb25kdWN0ZWQgc29tZSBleHBlcmltZW50IG9uIEFzdXMgUDNCLUYgbW90aGVyYm9hcmQgd2l0aCBBUzk5MTI3RgorKFZlci4gMSkuCisKK0kgY29uZmlybSB0aGF0IDB4NTkgcmVnaXN0ZXIgY29udHJvbCB0aGUgQ1BVX0ZhbiBIZWFkZXIgb24gdGhpcworbW90aGVyYm9hcmQsIGFuZCAweDVhIHJlZ2lzdGVyIGNvbnRyb2wgUFdSX0Zhbi4KKworSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBkZXBlbmRlbmN5IG9mIHNwZWNpZmljIGZhbiwgdGhlIG1lYXN1cmVtZW50IGlzCitjb25kdWN0ZWQgd2l0aCBhIGRpZ2l0YWwgc2NvcGUgd2l0aG91dCBmYW4gY29ubmVjdGVkLiBJIGZvdW5kIG91dCB0aGF0CitQM0ItRiBhY3R1YWxseSBvdXRwdXQgdmFyaWFibGUgREMgdm9sdGFnZSBvbiBmYW4gaGVhZGVyIGNlbnRlciBwaW4sCitsb29rcyBsaWtlIFBXTSBpcyBmaWx0ZXJlZCBvbiB0aGlzIG1vdGhlcmJvYXJkLgorCitIZXJlIGFyZSBzb21lIG9mIG1lYXN1cmVtZW50czoKKworMHg4MCAgICAgMjAgbVYKKzB4ODEgICAgIDIwIG1WCisweDgyICAgIDIzMiBtVgorMHg4MyAgIDEuMiAgVgorMHg4NCAgIDIuMzEgVgorMHg4NSAgIDMuNDQgVgorMHg4NiAgIDQuNjIgVgorMHg4NyAgIDUuODEgVgorMHg4OCAgIDcuMDEgVgorOXg4OSAgIDguMjIgVgorMHg4YSAgIDkuNDIgVgorMHg4YiAgMTAuNiAgVgorMHg4YyAgMTEuOSAgVgorMHg4ZCAgMTIuNCAgVgorMHg4ZSAgMTIuNCAgVgorMHg4ZiAgMTIuNCAgVgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkCmluZGV4IGE2N2QzYjcuLjU2NjNlNDkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MWQKQEAgLTU4LDI5ICs1OCwzNSBAQAogY3VycmVudGx5IHNlbGVjdGVkKS4gSWYgeW91IGtub3cgdGhlIGFkZHJlc3Mgb2YgdGhlIGNoaXAsIHVzZSBhICdmb3JjZScKIHBhcmFtZXRlcjsgdGhpcyB3aWxsIHB1dCBpdCBpbnRvIGEgbW9yZSB3ZWxsLWJlaGF2ZWQgc3RhdGUgZmlyc3QuCiAKLVRoZSBkcml2ZXIgaW1wbGVtZW50cyB0aHJlZSB0ZW1wZXJhdHVyZSBzZW5zb3JzLCBmaXZlIGZhbiByb3RhdGlvbiBzcGVlZAotc2Vuc29ycywgYW5kIHRlbiB2b2x0YWdlIHNlbnNvcnMuCitUaGUgZHJpdmVyIGltcGxlbWVudHMgdGhyZWUgdGVtcGVyYXR1cmUgc2Vuc29ycywgdGVuIHZvbHRhZ2Ugc2Vuc29ycywKK2ZpdmUgZmFuIHJvdGF0aW9uIHNwZWVkIHNlbnNvcnMgYW5kIG1hbnVhbCBQV00gY29udHJvbCBvZiBlYWNoIGZhbi4KIAogVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMgYW5kIG1lYXN1cmVtZW50IHJlc29sdXRpb24gaXMgMQogZGVnQyBmb3IgdGVtcDEgYW5kIDAuNSBkZWdDIGZvciB0ZW1wMiBhbmQgdGVtcDMuIEFuIGFsYXJtIGlzIHRyaWdnZXJlZCB3aGVuCiB0aGUgdGVtcGVyYXR1cmUgZ2V0cyBoaWdoZXIgdGhhbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIHZhbHVlOyBpdCBzdGF5cwogb24gdW50aWwgdGhlIHRlbXBlcmF0dXJlIGZhbGxzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLgogCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiBtaWxsaXZvbHRzLgorQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0KK29yIG1heGltdW0gbGltaXQuCisKIEZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwogdHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCiByZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0LCA4LCAxNiwKIDMyLCA2NCBvciAxMjggZm9yIGFsbCBmYW5zKSB0byBnaXZlIHRoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LgogCi1Wb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiBtaWxsaXZvbHRzLgotQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0KLW9yIG1heGltdW0gbGltaXQuCitFYWNoIGZhbiBjb250cm9sbGVkIGlzIGNvbnRyb2xsZWQgYnkgUFdNLiBUaGUgUFdNIGR1dHkgY3ljbGUgY2FuIGJlIHJlYWQgYW5kCitzZXQgZm9yIGVhY2ggZmFuIHNlcGFyYXRlbHkuIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDAgKHN0b3ApIHRvIDI1NSAoZnVsbCkuCitQV00gMS0zIHN1cHBvcnQgVGhlcm1hbCBDcnVpc2UgbW9kZSwgaW4gd2hpY2ggdGhlIFBXTXMgYXJlIGF1dG9tYXRpY2FsbHkKK3JlZ3VsYXRlZCB0byBrZWVwIHJlc3BlY3RpdmVseSB0ZW1wIDEtMyBhdCBhIGNlcnRhaW4gdGFyZ2V0IHRlbXBlcmF0dXJlLgorU2VlIGJlbG93IGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHN5c2ZzLWludGVyZmFjZS4KIAogVGhlIHc4Mzc5MWQgaGFzIGEgZ2xvYmFsIGJpdCB1c2VkIHRvIGVuYWJsZSBiZWVwaW5nIGZyb20gdGhlIHNwZWFrZXIgd2hlbiBhbgogYWxhcm0gaXMgdHJpZ2dlcmVkIGFzIHdlbGwgYXMgYSBiaXRtYXNrIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBiZWVwIGZvcgogc3BlY2lmaWMgYWxhcm1zLiBZb3UgbmVlZCBib3RoIHRoZSBnbG9iYWwgYmVlcCBlbmFibGUgYml0IGFuZCB0aGUKIGNvcnJlc3BvbmRpbmcgYmVlcCBiaXQgdG8gYmUgb24gZm9yIGEgdHJpZ2dlcmVkIGFsYXJtIHRvIHNvdW5kIGEgYmVlcC4KIAotVGhlIHN5c2ZzIGludGVyZmFjZSB0byB0aGUgZ2xvYWJhbCBlbmFibGUgaXMgdmlhIHRoZSBzeXNmcyBiZWVwX2VuYWJsZSBmaWxlLgorVGhlIHN5c2ZzIGludGVyZmFjZSB0byB0aGUgZ2xvYmFsIGVuYWJsZSBpcyB2aWEgdGhlIHN5c2ZzIGJlZXBfZW5hYmxlIGZpbGUuCiBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgYm90aCBsZWdhY3kgYW5kIG5ldyBjb2RlLgogCiBUaGUgc3lzZnMgaW50ZXJmYWNlIHRvIHRoZSBiZWVwIGJpdG1hc2sgaGFzIG1pZ3JhdGVkIGZyb20gdGhlIG9yaWdpbmFsIGxlZ2FjeQpAQCAtMTA1LDYgKzExMSwyNyBAQAogVGhlIGRyaXZlciByZWFkcyB0aGUgaGFyZHdhcmUgY2hpcCB2YWx1ZXMgYXQgbW9zdCBvbmNlIGV2ZXJ5IHRocmVlIHNlY29uZHMuCiBVc2VyIG1vZGUgY29kZSByZXF1ZXN0aW5nIHZhbHVlcyBtb3JlIG9mdGVuIHdpbGwgcmVjZWl2ZSBjYWNoZWQgdmFsdWVzLgogCisvc3lzIGZpbGVzCistLS0tLS0tLS0tCitUaGUgc3lzZnMtaW50ZXJmYWNlIGlzIGRvY3VtZW50ZWQgaW4gdGhlICdzeXNmcy1pbnRlcmZhY2UnIGZpbGUuIE9ubHkKK2NoaXAtc3BlY2lmaWMgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBoZXJlLgorCitwd21bMS0zXV9lbmFibGUgLQl0aGlzIGZpbGUgY29udHJvbHMgbW9kZSBvZiBmYW4vdGVtcGVyYXR1cmUgY29udHJvbCBmb3IKKwkJCWZhbiAxLTMuIEZhbi9QV00gNC01IG9ubHkgc3VwcG9ydCBtYW51YWwgbW9kZS4KKwkJICAgICAgICAgICAgKiAxIE1hbnVhbCBtb2RlCisJCSAgICAgICAgICAgICogMiBUaGVybWFsIENydWlzZSBtb2RlCisJCSAgICAgICAgICAgICogMyBGYW4gU3BlZWQgQ3J1aXNlIG1vZGUgKG5vIGZ1cnRoZXIgc3VwcG9ydCkKKwordGVtcFsxLTNdX3RhcmdldCAtCWRlZmluZXMgdGhlIHRhcmdldCB0ZW1wZXJhdHVyZSBmb3IgVGhlcm1hbCBDcnVpc2UgbW9kZS4KKwkJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJCVJXCisKK3RlbXBbMS0zXV90b2xlcmFuY2UgLQl0ZW1wZXJhdHVyZSB0b2xlcmFuY2UgZm9yIFRoZXJtYWwgQ3J1aXNlIG1vZGUuCisJCQlTcGVjaWZpZXMgYW4gaW50ZXJ2YWwgYXJvdW5kIHRoZSB0YXJnZXQgdGVtcGVyYXR1cmUKKwkJCWluIHdoaWNoIHRoZSBmYW4gc3BlZWQgaXMgbm90IGNoYW5nZWQuCisJCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCisJCQlSVworCiBBbGFybXMgYml0bWFwIHZzLiBiZWVwX21hc2sgYml0bWFzawogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBGb3IgbGVnYWN5IGNvZGUgdXNpbmcgdGhlIGFsYXJtcyBhbmQgYmVlcF9tYXNrIGZpbGVzOgpAQCAtMTMyLDcgKzE1OSwzIEBACiB0YXJ0MyAgICAgICAgOiAgYWxhcm1zOiAweDA0MDAwMCBiZWVwX21hc2s6IDB4MTAwMDAwIDw9PSBtaXNtYXRjaAogY2FzZV9vcGVuICAgIDogIGFsYXJtczogMHgwMDEwMDAgYmVlcF9tYXNrOiAweDAwMTAwMAogZ2xvYmFsX2VuYWJsZTogIGFsYXJtczogLS0tLS0tLS0gYmVlcF9tYXNrOiAweDgwMDAwMCAobW9kaWZpZWQgdmlhIGJlZXBfZW5hYmxlKQotCi1XODM3OTFEIFRPRE86Ci0tLS0tLS0tLS0tLS0tLS0KLVByb3ZpZGUgYSBwYXRjaCBmb3Igc21hcnQtZmFuIGNvbnRyb2wgKHN0aWxsIG5lZWQgYXBwcm9wcmlhdGUgbW90aGVyYm9hcmQvZmFucykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwtbnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwtbnVtYmVyLnR4dAppbmRleCAxYzZiNTQ1Li5iODgwY2U1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lvY3RsLW51bWJlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC1udW1iZXIudHh0CkBAIC05Miw2ICs5Miw3IEBACiAnSicJMDAtMUYJZHJpdmVycy9zY3NpL2dkdGhfaW9jdGwuaAogJ0snCWFsbAlsaW51eC9rZC5oCiAnTCcJMDAtMUYJbGludXgvbG9vcC5oCisnTCcJMjAtMkYJZHJpdmVyL3VzYi9taXNjL3ZzdHVzYi5oCiAnTCcJRTAtRkYJbGludXgvcHBkZC5oCQllbmNyeXB0ZWQgZGlzayBkZXZpY2UgZHJpdmVyCiAJCQkJCTxodHRwOi8vbGludXgwMS5nd2RnLmRlL35hbGF0aGFtL3BwZGQuaHRtbD4KICdNJwlhbGwJbGludXgvc291bmRjYXJkLmgKQEAgLTExMCw2ICsxMTEsOCBAQAogJ1cnCTAwLTFGCWxpbnV4L3dhbnJvdXRlci5oCWNvbmZsaWN0IQogJ1gnCWFsbAlsaW51eC94ZnNfZnMuaAogJ1knCWFsbAlsaW51eC9jeWNsYWRlcy5oCisnWycJMDAtMDcJbGludXgvdXNiL3VzYnRtYy5oCVVTQiBUZXN0IGFuZCBNZWFzdXJlbWVudCBEZXZpY2VzCisJCQkJCTxtYWlsdG86Z3JlZ2toQHN1c2UuZGU+CiAnYScJYWxsCQkJCUFUTSBvbiBsaW51eAogCQkJCQk8aHR0cDovL2xyY3d3dy5lcGZsLmNoL2xpbnV4LWF0bS9tYWdpYy5odG1sPgogJ2InCTAwLUZGCQkJCWJpdDMgdm1lIGhvc3QgYnJpZGdlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IGRkMjhhMGQuLmQ0ZjQ4NzUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC0yMjUzLDYgKzIyNTMsMjUgQEAKIAkJCWF1dG9zdXNwZW5kZWQuICBEZXZpY2VzIGZvciB3aGljaCB0aGUgZGVsYXkgaXMgc2V0CiAJCQl0byBhIG5lZ2F0aXZlIHZhbHVlIHdvbid0IGJlIGF1dG9zdXNwZW5kZWQgYXQgYWxsLgogCisJdXNiY29yZS51c2Jmc19zbm9vcD0KKwkJCVtVU0JdIFNldCB0byBsb2cgYWxsIHVzYmZzIHRyYWZmaWMgKGRlZmF1bHQgMCA9IG9mZikuCisKKwl1c2Jjb3JlLmJsaW5rZW5saWdodHM9CisJCQlbVVNCXSBTZXQgdG8gY3ljbGUgbGVkcyBvbiBodWJzIChkZWZhdWx0IDAgPSBvZmYpLgorCisJdXNiY29yZS5vbGRfc2NoZW1lX2ZpcnN0PQorCQkJW1VTQl0gU3RhcnQgd2l0aCB0aGUgb2xkIGRldmljZSBpbml0aWFsaXphdGlvbgorCQkJc2NoZW1lIChkZWZhdWx0IDAgPSBvZmYpLgorCisJdXNiY29yZS51c2VfYm90aF9zY2hlbWVzPQorCQkJW1VTQl0gVHJ5IHRoZSBvdGhlciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2NoZW1lCisJCQlpZiB0aGUgZmlyc3Qgb25lIGZhaWxzIChkZWZhdWx0IDEgPSBlbmFibGVkKS4KKworCXVzYmNvcmUuaW5pdGlhbF9kZXNjcmlwdG9yX3RpbWVvdXQ9CisJCQlbVVNCXSBTcGVjaWZpZXMgdGltZW91dCBmb3IgdGhlIGluaXRpYWwgNjQtYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgVVNCX1JFUV9HRVRfREVTQ1JJUFRPUiByZXF1ZXN0IGluIG1pbGxpc2Vjb25kcworCQkJKGRlZmF1bHQgNTAwMCA9IDUuMCBzZWNvbmRzKS4KKwogCXVzYmhpZC5tb3VzZXBvbGw9CiAJCQlbVVNCSElEXSBUaGUgaW50ZXJ2YWwgd2hpY2ggbWljZSBhcmUgdG8gYmUgcG9sbGVkIGF0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC9rZXJuZWwudHh0IGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwva2VybmVsLnR4dAppbmRleCBlMWZmMGQ5Li5iZGU3OTllIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC9rZXJuZWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc3lzY3RsL2tlcm5lbC50eHQKQEAgLTM2OSw0ICszNjksNSBAQAogICAyIC0gQSBtb2R1bGUgd2FzIGZvcmNlIGxvYWRlZCBieSBpbnNtb2QgLWYuCiAgICAgICBTZXQgYnkgbW9kdXRpbHMgPj0gMi40LjkgYW5kIG1vZHVsZS1pbml0LXRvb2xzLgogICA0IC0gVW5zYWZlIFNNUCBwcm9jZXNzb3JzOiBTTVAgd2l0aCBDUFVzIG5vdCBkZXNpZ25lZCBmb3IgU01QLgorIDY0IC0gQSBtb2R1bGUgZnJvbSBkcml2ZXJzL3N0YWdpbmcgd2FzIGxvYWRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zeXNycS50eHQgYi9Eb2N1bWVudGF0aW9uL3N5c3JxLnR4dAppbmRleCA1Y2UwOTUyLi43YjNiMDY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3N5c3JxLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3N5c3JxLnR4dApAQCAtOTUsNyArOTUsOCBAQAogCiAncCcgICAgIC0gV2lsbCBkdW1wIHRoZSBjdXJyZW50IHJlZ2lzdGVycyBhbmQgZmxhZ3MgdG8geW91ciBjb25zb2xlLgogCi0ncScgICAgIC0gV2lsbCBkdW1wIGEgbGlzdCBvZiBhbGwgcnVubmluZyB0aW1lcnMuCisncScgICAgIC0gV2lsbCBkdW1wIHBlciBDUFUgbGlzdHMgb2YgYWxsIGFybWVkIGhydGltZXJzIChub3QgdGltZXJfbGlzdCB0aW1lcnMpCisJICBhbmQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGNsb2NrZXZlbnQgZGV2aWNlcy4KIAogJ3InICAgICAtIFR1cm5zIG9mZiBrZXlib2FyZCByYXcgbW9kZSBhbmQgc2V0cyBpdCB0byBYTEFURS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvYW5jaG9ycy50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9hbmNob3JzLnR4dAppbmRleCA1ZTZiNjRjLi42ZjI0ZjU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VzYi9hbmNob3JzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9hbmNob3JzLnR4dApAQCAtNTIsNiArNTIsMTEgQEAKIHRoZSBjYWxsIHJldHVybnMuIFRoZXkgbWF5IGJlIHVubGlua2VkIGxhdGVyIGJ1dCB3aWxsIGJlIHVubGlua2VkIGluCiBmaW5pdGUgdGltZS4KIAordXNiX3NjdXR0bGVfYW5jaG9yZWRfdXJicygpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIFVSQnMgb2YgYW4gYW5jaG9yIGFyZSB1bmFuY2hvcmVkIGVuIG1hc3NlLgorCiB1c2Jfd2FpdF9hbmNob3JfZW1wdHlfdGltZW91dCgpCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU5LDQgKzY0LDE2IEBACiBvciBhIHRpbWVvdXQsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSXRzIHJldHVybiB2YWx1ZSB3aWxsIHRlbGwgeW91CiB3aGV0aGVyIHRoZSB0aW1lb3V0IHdhcyByZWFjaGVkLgogCit1c2JfYW5jaG9yX2VtcHR5KCkKKy0tLS0tLS0tLS0tLS0tLS0tLQogCitSZXR1cm5zIHRydWUgaWYgbm8gVVJCcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFuY2hvci4gTG9ja2luZworaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LgorCit1c2JfZ2V0X2Zyb21fYW5jaG9yKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXR1cm5zIHRoZSBvbGRlc3QgYW5jaG9yZWQgVVJCIG9mIGFuIGFuY2hvci4gVGhlIFVSQiBpcyB1bmFuY2hvcmVkCithbmQgcmV0dXJuZWQgd2l0aCBhIHJlZmVyZW5jZS4gQXMgeW91IG1heSBtaXggVVJCcyB0byBzZXZlcmFsCitkZXN0aW5hdGlvbnMgaW4gb25lIGFuY2hvciB5b3UgaGF2ZSBubyBndWFyYW50ZWUgdGhlIGNocm9ub2xvZ2ljYWxseQorZmlyc3Qgc3VibWl0dGVkIFVSQiBpcyByZXR1cm5lZC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9taXNjX3VzYnNldnNlZy50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9taXNjX3VzYnNldnNlZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YmU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL21pc2NfdXNic2V2c2VnLnR4dApAQCAtMCwwICsxLDQ2IEBACitVU0IgNy1TZWdtZW50IE51bWVyaWMgRGlzcGxheQorTWFudWZhY3R1cmVkIGJ5IERlbGNvbSBFbmdpbmVlcmluZworCitEZXZpY2UgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorVVNCIFZFTkRPUl9JRAkweDBmYzUKK1VTQiBQUk9EVUNUX0lECTB4MTIyNworQm90aCB0aGUgNiBjaGFyYWN0ZXIgYW5kIDggY2hhcmFjdGVyIGRpc3BsYXlzIGhhdmUgUFJPRFVDVF9JRCwKK2FuZCBhY2NvcmRpbmcgdG8gRGVsY29tIEVuZ2luZWVyaW5nIG5vIHF1ZXJ5YWJsZSBpbmZvcm1hdGlvbgorY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIGRldmljZSB0byB0ZWxsIHRoZW0gYXBhcnQuCisKK0RldmljZSBNb2RlcworLS0tLS0tLS0tLS0tCitCeSBkZWZhdWx0LCB0aGUgZHJpdmVyIGFzc3VtZXMgdGhlIGRpc3BsYXkgaXMgb25seSA2IGNoYXJhY3RlcnMKK1RoZSBtb2RlIGZvciA2IGNoYXJhY3RlcnMgaXM6CisJTVNCIDB4MDY7IExTQiAweDNmCitGb3IgdGhlIDggY2hhcmFjdGVyIGRpc3BsYXk6CisJTVNCIDB4MDg7IExTQiAweGZmCitUaGUgZGV2aWNlIGNhbiBhY2NlcHQgInRleHQiIGVpdGhlciBpbiByYXcsIGhleCwgb3IgYXNjaWkgdGV4dG1vZGUuCityYXcgY29udHJvbHMgZWFjaCBzZWdtZW50IG1hbnVhbGx5LAoraGV4IGV4cGVjdHMgYSB2YWx1ZSBiZXR3ZWVuIDAtMTUgcGVyIGNoYXJhY3RlciwKK2FzY2lpIGV4cGVjdHMgYSB2YWx1ZSBiZXR3ZWVuICcwJy0nOScgYW5kICdBJy0nRicuCitUaGUgZGVmYXVsdCBpcyBhc2NpaS4KKworRGV2aWNlIE9wZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLQorMS4JVHVybiBvbiB0aGUgZGV2aWNlOgorCWVjaG8gMSA+IC9zeXMvYnVzL3VzYi8uLi4vcG93ZXJlZAorMi4JU2V0IHRoZSBkZXZpY2UncyBtb2RlOgorCWVjaG8gJG1vZGVfbXNiID4gL3N5cy9idXMvdXNiLy4uLi9tb2RlX21zYgorCWVjaG8gJG1vZGVfbHNiID4gL3N5cy9idXMvdXNiLy4uLi9tb2RlX2xzYgorMy4JU2V0IHRoZSB0ZXh0bW9kZToKKwllY2hvICR0ZXh0bW9kZSA+IC9zeXMvYnVzL3VzYi8uLi4vdGV4dG1vZGUKKzQuCXNldCB0aGUgdGV4dCAoZm9yIGV4YW1wbGUpOgorCWVjaG8gIjEyM0FCQyIgPiAvc3lzL2J1cy91c2IvLi4uL3RleHQgKGFzY2lpKQorCWVjaG8gIkExQjIiID4gL3N5cy9idXMvdXNiLy4uLi90ZXh0IChhc2NpaSkKKwllY2hvIC1uZSAiXHgwMVx4MDJceDAzIiA+IC9zeXMvYnVzL3VzYi8uLi4vdGV4dCAoaGV4KQorNS4JU2V0IHRoZSBkZWNpbWFsIHBsYWNlcy4KKwlUaGUgZGV2aWNlIGhhcyBlaXRoZXIgNiBvciA4IGRlY2ltYWwgcG9pbnRzLgorCXRvIHNldCB0aGUgbnRoIGRlY2ltYWwgcGxhY2UgY2FsY3VsYXRlIDEwICoqIG4KKwlhbmQgZWNobyBpdCBpbiB0byAvc3lzL2J1cy91c2IvLi4uL2RlY2ltYWxzCisJVG8gc2V0IG11bHRpcGxlIGRlY2ltYWxzIHBvaW50cyBzdW0gdXAgZWFjaCBwb3dlci4KKwlGb3IgZXhhbXBsZSwgdG8gc2V0IHRoZSAwdGggYW5kIDNyZCBkZWNpbWFsIHBsYWNlCisJZWNobyAxMDAxID4gL3N5cy9idXMvdXNiLy4uLi9kZWNpbWFscworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3Bvd2VyLW1hbmFnZW1lbnQudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvcG93ZXItbWFuYWdlbWVudC50eHQKaW5kZXggOWQzMTE0MC4uZTQ4ZWExZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2IvcG93ZXItbWFuYWdlbWVudC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvcG93ZXItbWFuYWdlbWVudC50eHQKQEAgLTM1MCwxMiArMzUwLDEyIEBACiAKIFRoZXJlIGFsc28gYXJlIGEgY291cGxlIG9mIHV0aWxpdHkgcm91dGluZXMgZHJpdmVycyBjYW4gdXNlOgogCi0JdXNiX2F1dG9wbV9lbmFibGUoKSBzZXRzIHBtX3VzYWdlX2NudCB0byAxIGFuZCB0aGVuIGNhbGxzCi0JdXNiX2F1dG9wbV9zZXRfaW50ZXJmYWNlKCksIHdoaWNoIHdpbGwgYXR0ZW1wdCBhbiBhdXRvcmVzdW1lLgotCi0JdXNiX2F1dG9wbV9kaXNhYmxlKCkgc2V0cyBwbV91c2FnZV9jbnQgdG8gMCBhbmQgdGhlbiBjYWxscworCXVzYl9hdXRvcG1fZW5hYmxlKCkgc2V0cyBwbV91c2FnZV9jbnQgdG8gMCBhbmQgdGhlbiBjYWxscwogCXVzYl9hdXRvcG1fc2V0X2ludGVyZmFjZSgpLCB3aGljaCB3aWxsIGF0dGVtcHQgYW4gYXV0b3N1c3BlbmQuCiAKKwl1c2JfYXV0b3BtX2Rpc2FibGUoKSBzZXRzIHBtX3VzYWdlX2NudCB0byAxIGFuZCB0aGVuIGNhbGxzCisJdXNiX2F1dG9wbV9zZXRfaW50ZXJmYWNlKCksIHdoaWNoIHdpbGwgYXR0ZW1wdCBhbiBhdXRvcmVzdW1lLgorCiBUaGUgY29udmVudGlvbmFsIHVzYWdlIHBhdHRlcm4gaXMgdGhhdCBhIGRyaXZlciBjYWxscwogdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKCkgaW4gaXRzIG9wZW4gcm91dGluZSBhbmQKIHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZSgpIGluIGl0cyBjbG9zZSBvciByZWxlYXNlIHJvdXRpbmUuICBCdXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuYXUwODI4IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5hdTA4MjgKaW5kZXggYWEwNWU1Yi4uZDVjYjRlYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5hdTA4MjgKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5hdTA4MjgKQEAgLTEsNSArMSw1IEBACiAgIDAgLT4gVW5rbm93biBib2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXUwODI4KQotICAxIC0+IEhhdXBwYXVnZSBIVlI5NTBRICAgICAgICAgICAgICAgICAgICAgICAgKGF1MDgyOCkgICAgICAgIFsyMDQwOjcyMDAsMjA0MDo3MjEwLDIwNDA6NzIxNywyMDQwOjcyMWIsMjA0MDo3MjFmLDIwNDA6NzI4MCwwZmQ5OjAwMDhdCisgIDEgLT4gSGF1cHBhdWdlIEhWUjk1MFEgICAgICAgICAgICAgICAgICAgICAgICAoYXUwODI4KSAgICAgICAgWzIwNDA6NzIwMCwyMDQwOjcyMTAsMjA0MDo3MjE3LDIwNDA6NzIxYiwyMDQwOjcyMWUsMjA0MDo3MjFmLDIwNDA6NzI4MCwwZmQ5OjAwMDhdCiAgIDIgLT4gSGF1cHBhdWdlIEhWUjg1MCAgICAgICAgICAgICAgICAgICAgICAgICAoYXUwODI4KSAgICAgICAgWzIwNDA6NzI0MF0KICAgMyAtPiBEVmlDTyBGdXNpb25IRFRWIFVTQiAgICAgICAgICAgICAgICAgICAgIChhdTA4MjgpICAgICAgICBbMGZlOTpkNjIwXQogICA0IC0+IEhhdXBwYXVnZSBIVlI5NTBRIHJldiB4eEY4ICAgICAgICAgICAgICAgKGF1MDgyOCkgICAgICAgIFsyMDQwOjcyMDEsMjA0MDo3MjExLDIwNDA6NzI4MV0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudHVuZXIgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnR1bmVyCmluZGV4IDMwYmJkZGEuLjY5MWQyZjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudHVuZXIKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC50dW5lcgpAQCAtNzUsMyArNzUsNCBAQAogdHVuZXI9NzUgLSBQaGlsaXBzIFRFQTU3NjEgRk0gUmFkaW8KIHR1bmVyPTc2IC0gWGNlaXZlIDUwMDAgdHVuZXIKIHR1bmVyPTc3IC0gVENMIHR1bmVyIE1GMDJHSVAtNU4tRQordHVuZXI9NzggLSBQaGlsaXBzIEZNRDEyMTZNRVggTUszIEh5YnJpZCBUdW5lcgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA1MjcwMmIwLi4zNTVjMTkyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzkzNyw3ICszOTM3LDcgQEAKIEw6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKIFM6CU1haW50YWluZWQKIAotU1RBQkxFIEJSQU5DSDoKK1NUQUJMRSBCUkFOQ0gKIFA6CUdyZWcgS3JvYWgtSGFydG1hbgogTToJZ3JlZ0Brcm9haC5jb20KIFA6CUNocmlzIFdyaWdodApAQCAtMzk0NSw2ICszOTQ1LDEzIEBACiBMOglzdGFibGVAa2VybmVsLm9yZwogUzoJTWFpbnRhaW5lZAogCitTVEFHSU5HIFNVQlNZU1RFTQorUDoJR3JlZyBLcm9haC1IYXJ0bWFuCitNOglncmVna2hAc3VzZS5kZQorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworVDoJcXVpbHQga2VybmVsLm9yZy9wdWIvbGludXgva2VybmVsL3Blb3BsZS9ncmVna2gvZ3JlZ2toLTIuNi8KK1M6CU1haW50YWluZWQKKwogU1RBUkZJUkUvRFVSQUxBTiBORVRXT1JLIERSSVZFUgogUDoJSW9uIEJhZHVsZXNjdQogTToJaW9udXRAY3MuY29sdW1iaWEuZWR1CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvTWFrZWZpbGUgYi9hcmNoL2NyaXMvTWFrZWZpbGUKaW5kZXggODM4Y2QyYS4uYzZmNWY1YSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL01ha2VmaWxlCisrKyBiL2FyY2gvY3Jpcy9NYWtlZmlsZQpAQCAtMTAsNiArMTAsOCBAQAogIyBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCiAjIGZvciBtb3JlIGRldGFpbHMuCiAKK0tCVUlMRF9ERUZDT05GSUcgOj0gZXRyYXgtMTAwbHhfdjJfZGVmY29uZmlnCisKIGFyY2gteSA6PSB2MTAKIGFyY2gtJChDT05GSUdfRVRSQVhfQVJDSF9WMTApIDo9IHYxMAogYXJjaC0kKENPTkZJR19FVFJBWF9BUkNIX1YzMikgOj0gdjMyCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAvYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZQppbmRleCAwOGQ5NDNjLi42ZmUwZmZhIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAvYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBACiAKIGFzZmxhZ3MteSArPSAkKExJTlVYSU5DTFVERSkKIGNjZmxhZ3MteSArPSAtTzIgJChMSU5VWElOQ0xVREUpCi1sZGZsYWdzLXkgKz0gLVQgJChzcmN0cmVlKS8kKG9iaikvZGVjb21wcmVzcy5sZAorbGRmbGFncy15ICs9IC1UICQoc3JjdHJlZSkvJChzcmMpL2RlY29tcHJlc3MubGRzCiBPQkpFQ1RTID0gJChvYmopL2hlYWQubyAkKG9iaikvbWlzYy5vCiBPQkpDT1BZRkxBR1MgPSAtTyBiaW5hcnkgLS1yZW1vdmUtc2VjdGlvbj0uYnNzCiAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9ib290L2NvbXByZXNzZWQvZGVjb21wcmVzcy5sZCBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9ib290L2NvbXByZXNzZWQvZGVjb21wcmVzcy5sZHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvY3Jpcy9hcmNoLXYxMC9ib290L2NvbXByZXNzZWQvZGVjb21wcmVzcy5sZApyZW5hbWUgdG8gYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvY29tcHJlc3NlZC9kZWNvbXByZXNzLmxkcwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvcmVzY3VlL01ha2VmaWxlIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvcmVzY3VlL01ha2VmaWxlCmluZGV4IDA3Njg4ZGEuLjgyYWI1OWIgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9ib290L3Jlc2N1ZS9NYWtlZmlsZQorKysgYi9hcmNoL2NyaXMvYXJjaC12MTAvYm9vdC9yZXNjdWUvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBACiAKIGNjZmxhZ3MteSArPSAtTzIgJChMSU5VWElOQ0xVREUpCiBhc2ZsYWdzLXkgKz0gJChMSU5VWElOQ0xVREUpCi1sZGZsYWdzLXkgKz0gLVQgJChzcmN0cmVlKS8kKG9iaikvcmVzY3VlLmxkCitsZGZsYWdzLXkgKz0gLVQgJChzcmN0cmVlKS8kKHNyYykvcmVzY3VlLmxkcwogT0JKQ09QWUZMQUdTID0gLU8gYmluYXJ5IC0tcmVtb3ZlLXNlY3Rpb249LmJzcwogb2JqLSQoQ09ORklHX0VUUkFYX0FYSVNGTEFTSE1BUCkgPSBoZWFkLm8KIE9CSkVDVCA6PSAkKG9iaikvaGVhZC5vCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAvYm9vdC9yZXNjdWUvcmVzY3VlLmxkIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvcmVzY3VlL3Jlc2N1ZS5sZHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvY3Jpcy9hcmNoLXYxMC9ib290L3Jlc2N1ZS9yZXNjdWUubGQKcmVuYW1lIHRvIGFyY2gvY3Jpcy9hcmNoLXYxMC9ib290L3Jlc2N1ZS9yZXNjdWUubGRzCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZQppbmRleCBkNjMzNWYyLi41YTFiMzFjIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBACiAKIGFzZmxhZ3MteSArPSAtSSAkKHNyY3RyZWUpL2luY2x1ZGUvYXNtL21hY2gvIC1JICQoc3JjdHJlZSkvaW5jbHVkZS9hc20vYXJjaAogY2NmbGFncy15ICs9IC1PMiAtSSAkKHNyY3RyZWUpL2luY2x1ZGUvYXNtL21hY2gvIC1JICQoc3JjdHJlZSkvaW5jbHVkZS9hc20vYXJjaAotbGRmbGFncy15ICs9IC1UICQoc3JjdHJlZSkvJChvYmopL2RlY29tcHJlc3MubGQKK2xkZmxhZ3MteSArPSAtVCAkKHNyY3RyZWUpLyQoc3JjKS9kZWNvbXByZXNzLmxkcwogT0JKRUNUUyA9ICQob2JqKS9oZWFkLm8gJChvYmopL21pc2MubwogT0JKQ09QWUZMQUdTID0gLU8gYmluYXJ5IC0tcmVtb3ZlLXNlY3Rpb249LmJzcwogCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL2RlY29tcHJlc3MubGQgYi9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL2RlY29tcHJlc3MubGRzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL2RlY29tcHJlc3MubGQKcmVuYW1lIHRvIGFyY2gvY3Jpcy9hcmNoLXYzMi9ib290L2NvbXByZXNzZWQvZGVjb21wcmVzcy5sZHMKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L3Jlc2N1ZS9NYWtlZmlsZSBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L3Jlc2N1ZS9NYWtlZmlsZQppbmRleCA0NGFlMGFkLi41NjZhYWM2IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9yZXNjdWUvTWFrZWZpbGUKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2Jvb3QvcmVzY3VlL01ha2VmaWxlCkBAIC03LDcgKzcsNyBAQAogCQktSSAkKHNyY3RyZWUpL2luY2x1ZGUvYXNtL2FyY2gKIGFzZmxhZ3MteSArPSAtSSAkKHNyY3RyZWUpL2luY2x1ZGUvYXNtL2FyY2gvbWFjaC8gLUkgJChzcmN0cmVlKS9pbmNsdWRlL2FzbS9hcmNoCiBMRCA9IGdjYy1jcmlzIC1tbGludXggLW1hcmNoPXYzMiAtbm9zdGRsaWIKLWxkZmxhZ3MteSArPSAtVCAkKHNyY3RyZWUpLyQob2JqKS9yZXNjdWUubGQKK2xkZmxhZ3MteSArPSAtVCAkKHNyY3RyZWUpLyQoc3JjKS9yZXNjdWUubGRzCiBMRFBPU1RGTEFHUyA9IC1sZ2NjCiBPQkpDT1BZRkxBR1MgPSAtTyBiaW5hcnkgLS1yZW1vdmUtc2VjdGlvbj0uYnNzCiBvYmotJChDT05GSUdfRVRSQVhfQVhJU0ZMQVNITUFQKSA9IGhlYWQubwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2Jvb3QvcmVzY3VlL3Jlc2N1ZS5sZCBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L3Jlc2N1ZS9yZXNjdWUubGRzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9yZXNjdWUvcmVzY3VlLmxkCnJlbmFtZSB0byBhcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9yZXNjdWUvcmVzY3VlLmxkcwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FydHBlY18zX2RlZmNvbmZpZyBiL2FyY2gvY3Jpcy9jb25maWdzL2FydHBlY18zX2RlZmNvbmZpZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYXJjaC9jcmlzL2FydHBlY18zX2RlZmNvbmZpZwpyZW5hbWUgdG8gYXJjaC9jcmlzL2NvbmZpZ3MvYXJ0cGVjXzNfZGVmY29uZmlnCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAvZGVmY29uZmlnIGIvYXJjaC9jcmlzL2NvbmZpZ3MvZXRyYXgtMTAwbHhfZGVmY29uZmlnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBhcmNoL2NyaXMvYXJjaC12MTAvZGVmY29uZmlnCnJlbmFtZSB0byBhcmNoL2NyaXMvY29uZmlncy9ldHJheC0xMDBseF9kZWZjb25maWcKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9kZWZjb25maWcgYi9hcmNoL2NyaXMvY29uZmlncy9ldHJheC0xMDBseF92Ml9kZWZjb25maWcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvY3Jpcy9kZWZjb25maWcKcmVuYW1lIHRvIGFyY2gvY3Jpcy9jb25maWdzL2V0cmF4LTEwMGx4X3YyX2RlZmNvbmZpZwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2V0cmF4ZnNfZGVmY29uZmlnIGIvYXJjaC9jcmlzL2NvbmZpZ3MvZXRyYXhmc19kZWZjb25maWcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvY3Jpcy9ldHJheGZzX2RlZmNvbmZpZwpyZW5hbWUgdG8gYXJjaC9jcmlzL2NvbmZpZ3MvZXRyYXhmc19kZWZjb25maWcKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2hpZ2htZW1fMzIuYyBiL2FyY2gveDg2L21tL2hpZ2htZW1fMzIuYwppbmRleCAxNjVjODcxLi5iY2MwNzljIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9oaWdobWVtXzMyLmMKKysrIGIvYXJjaC94ODYvbW0vaGlnaG1lbV8zMi5jCkBAIC0xMzcsNiArMTM3LDcgQEAKIAogCXJldHVybiAodm9pZCopIHZhZGRyOwogfQorRVhQT1JUX1NZTUJPTF9HUEwoa21hcF9hdG9taWNfcGZuKTsgLyogdGVtcG9yYXJpbHkgaW4gdXNlIGJ5IGk5MTUgR0VNIHVudGlsIHZtYXAgKi8KIAogc3RydWN0IHBhZ2UgKmttYXBfYXRvbWljX3RvX3BhZ2Uodm9pZCAqcHRyKQogewpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggMmQwNTNiNS4uYzNkZjMwYyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9ibGstY29yZS5jCkBAIC0yNTcsNyArMjU3LDYgQEAKIAogCXEtPnJlcXVlc3RfZm4ocSk7CiB9Ci1FWFBPUlRfU1lNQk9MKF9fZ2VuZXJpY191bnBsdWdfZGV2aWNlKTsKIAogLyoqCiAgKiBnZW5lcmljX3VucGx1Z19kZXZpY2UgLSBmaXJlIGEgcmVxdWVzdCBxdWV1ZQpAQCAtMzI1LDYgKzMyNCw5IEBACiAKIHN0YXRpYyB2b2lkIGJsa19pbnZva2VfcmVxdWVzdF9mbihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIHsKKwlpZiAodW5saWtlbHkoYmxrX3F1ZXVlX3N0b3BwZWQocSkpKQorCQlyZXR1cm47CisKIAkvKgogCSAqIG9uZSBsZXZlbCBvZiByZWN1cnNpb24gaXMgb2sgYW5kIGlzIG11Y2ggZmFzdGVyIHRoYW4ga2lja2luZwogCSAqIHRoZSB1bnBsdWcgaGFuZGxpbmcKQEAgLTM5OSw4ICs0MDEsMTMgQEAKIEVYUE9SVF9TWU1CT0woYmxrX3N5bmNfcXVldWUpOwogCiAvKioKLSAqIGJsa19ydW5fcXVldWUgLSBydW4gYSBzaW5nbGUgZGV2aWNlIHF1ZXVlCisgKiBfX2Jsa19ydW5fcXVldWUgLSBydW4gYSBzaW5nbGUgZGV2aWNlIHF1ZXVlCiAgKiBAcToJVGhlIHF1ZXVlIHRvIHJ1bgorICoKKyAqIERlc2NyaXB0aW9uOgorICogICAgU2VlIEBibGtfcnVuX3F1ZXVlLiBUaGlzIHZhcmlhbnQgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcXVldWUgbG9jaworICogICAgaGVsZCBhbmQgaW50ZXJydXB0cyBkaXNhYmxlZC4KKyAqCiAgKi8KIHZvaWQgX19ibGtfcnVuX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQogewpAQCAtNDE4LDYgKzQyNSwxMiBAQAogLyoqCiAgKiBibGtfcnVuX3F1ZXVlIC0gcnVuIGEgc2luZ2xlIGRldmljZSBxdWV1ZQogICogQHE6IFRoZSBxdWV1ZSB0byBydW4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqICAgIEludm9rZSByZXF1ZXN0IGhhbmRsaW5nIG9uIHRoaXMgcXVldWUsIGlmIGl0IGhhcyBwZW5kaW5nIHdvcmsgdG8gZG8uCisgKiAgICBNYXkgYmUgdXNlZCB0byByZXN0YXJ0IHF1ZXVlaW5nIHdoZW4gYSByZXF1ZXN0IGhhcyBjb21wbGV0ZWQuIEFsc28KKyAqICAgIFNlZSBAYmxrX3N0YXJ0X3F1ZXVlaW5nLgorICoKICAqLwogdm9pZCBibGtfcnVuX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQogewpAQCAtNTAxLDYgKzUxNCw3IEBACiAJaW5pdF90aW1lcigmcS0+dW5wbHVnX3RpbWVyKTsKIAlzZXR1cF90aW1lcigmcS0+dGltZW91dCwgYmxrX3JxX3RpbWVkX291dF90aW1lciwgKHVuc2lnbmVkIGxvbmcpIHEpOwogCUlOSVRfTElTVF9IRUFEKCZxLT50aW1lb3V0X2xpc3QpOworCUlOSVRfV09SSygmcS0+dW5wbHVnX3dvcmssIGJsa191bnBsdWdfd29yayk7CiAKIAlrb2JqZWN0X2luaXQoJnEtPmtvYmosICZibGtfcXVldWVfa3R5cGUpOwogCkBAIC04ODQsNyArODk4LDggQEAKICAqCiAgKiBUaGlzIGlzIGJhc2ljYWxseSBhIGhlbHBlciB0byByZW1vdmUgdGhlIG5lZWQgdG8ga25vdyB3aGV0aGVyIGEgcXVldWUKICAqIGlzIHBsdWdnZWQgb3Igbm90IGlmIHNvbWVvbmUganVzdCB3YW50cyB0byBpbml0aWF0ZSBkaXNwYXRjaCBvZiByZXF1ZXN0cwotICogZm9yIHRoaXMgcXVldWUuCisgKiBmb3IgdGhpcyBxdWV1ZS4gU2hvdWxkIGJlIHVzZWQgdG8gc3RhcnQgcXVldWVpbmcgb24gYSBkZXZpY2Ugb3V0c2lkZQorICogb2YgLT5yZXF1ZXN0X2ZuKCkgY29udGV4dC4gQWxzbyBzZWUgQGJsa19ydW5fcXVldWUuCiAgKgogICogVGhlIHF1ZXVlIGxvY2sgbXVzdCBiZSBoZWxkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KICAqLwpAQCAtMTAwMyw4ICsxMDE4LDkgQEAKIH0KIAogLyoqCi0gKiBwYXJ0X3JvdW5kX3N0YXRzKCkJLSBSb3VuZCBvZmYgdGhlIHBlcmZvcm1hbmNlIHN0YXRzIG9uIGEgc3RydWN0Ci0gKiBkaXNrX3N0YXRzLgorICogcGFydF9yb3VuZF9zdGF0cygpIC0gUm91bmQgb2ZmIHRoZSBwZXJmb3JtYW5jZSBzdGF0cyBvbiBhIHN0cnVjdCBkaXNrX3N0YXRzLgorICogQGNwdTogY3B1IG51bWJlciBmb3Igc3RhdHMgYWNjZXNzCisgKiBAcGFydDogdGFyZ2V0IHBhcnRpdGlvbgogICoKICAqIFRoZSBhdmVyYWdlIElPIHF1ZXVlIGxlbmd0aCBhbmQgdXRpbGlzYXRpb24gc3RhdGlzdGljcyBhcmUgbWFpbnRhaW5lZAogICogYnkgb2JzZXJ2aW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBxdWV1ZSBsZW5ndGggYW5kIHRoZSBhbW91bnQgb2YKQEAgLTEwNzUsOCArMTA5MSwxNSBAQAogCS8qCiAJICogaW5oZXJpdCBGQUlMRkFTVCBmcm9tIGJpbyAoZm9yIHJlYWQtYWhlYWQsIGFuZCBleHBsaWNpdCBGQUlMRkFTVCkKIAkgKi8KLQlpZiAoYmlvX3J3X2FoZWFkKGJpbykgfHwgYmlvX2ZhaWxmYXN0KGJpbykpCi0JCXJlcS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVDsKKwlpZiAoYmlvX3J3X2FoZWFkKGJpbykpCisJCXJlcS0+Y21kX2ZsYWdzIHw9IChSRVFfRkFJTEZBU1RfREVWIHwgUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCB8CisJCQkJICAgUkVRX0ZBSUxGQVNUX0RSSVZFUik7CisJaWYgKGJpb19mYWlsZmFzdF9kZXYoYmlvKSkKKwkJcmVxLT5jbWRfZmxhZ3MgfD0gUkVRX0ZBSUxGQVNUX0RFVjsKKwlpZiAoYmlvX2ZhaWxmYXN0X3RyYW5zcG9ydChiaW8pKQorCQlyZXEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1RfVFJBTlNQT1JUOworCWlmIChiaW9fZmFpbGZhc3RfZHJpdmVyKGJpbykpCisJCXJlcS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVF9EUklWRVI7CiAKIAkvKgogCSAqIFJFUV9CQVJSSUVSIGltcGxpZXMgbm8gbWVyZ2luZywgYnV0IGxldHMgbWFrZSBpdCBleHBsaWNpdApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuYwppbmRleCA5MDhkM2UxLi44NjgxY2Q2IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbWVyZ2UuYworKysgYi9ibG9jay9ibGstbWVyZ2UuYwpAQCAtNzcsMTIgKzc3LDIwIEBACiAJCQljb250aW51ZTsKIAkJfQogbmV3X3NlZ21lbnQ6CisJCWlmIChucl9waHlzX3NlZ3MgPT0gMSAmJiBzZWdfc2l6ZSA+IHJxLT5iaW8tPmJpX3NlZ19mcm9udF9zaXplKQorCQkJcnEtPmJpby0+Ymlfc2VnX2Zyb250X3NpemUgPSBzZWdfc2l6ZTsKKwogCQlucl9waHlzX3NlZ3MrKzsKIAkJYnZwcnYgPSBidjsKIAkJc2VnX3NpemUgPSBidi0+YnZfbGVuOwogCQloaWdocHJ2ID0gaGlnaDsKIAl9CiAKKwlpZiAobnJfcGh5c19zZWdzID09IDEgJiYgc2VnX3NpemUgPiBycS0+YmlvLT5iaV9zZWdfZnJvbnRfc2l6ZSkKKwkJcnEtPmJpby0+Ymlfc2VnX2Zyb250X3NpemUgPSBzZWdfc2l6ZTsKKwlpZiAoc2VnX3NpemUgPiBycS0+YmlvdGFpbC0+Ymlfc2VnX2JhY2tfc2l6ZSkKKwkJcnEtPmJpb3RhaWwtPmJpX3NlZ19iYWNrX3NpemUgPSBzZWdfc2l6ZTsKKwogCXJxLT5ucl9waHlzX3NlZ21lbnRzID0gbnJfcGh5c19zZWdzOwogfQogCkBAIC0xMDYsNyArMTE0LDggQEAKIAlpZiAoIXRlc3RfYml0KFFVRVVFX0ZMQUdfQ0xVU1RFUiwgJnEtPnF1ZXVlX2ZsYWdzKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoYmlvLT5iaV9zaXplICsgbnh0LT5iaV9zaXplID4gcS0+bWF4X3NlZ21lbnRfc2l6ZSkKKwlpZiAoYmlvLT5iaV9zZWdfYmFja19zaXplICsgbnh0LT5iaV9zZWdfZnJvbnRfc2l6ZSA+CisJICAgIHEtPm1heF9zZWdtZW50X3NpemUpCiAJCXJldHVybiAwOwogCiAJaWYgKCFiaW9faGFzX2RhdGEoYmlvKSkKQEAgLTMwOSw2ICszMTgsOCBAQAogCQkJCXN0cnVjdCByZXF1ZXN0ICpuZXh0KQogewogCWludCB0b3RhbF9waHlzX3NlZ21lbnRzOworCXVuc2lnbmVkIGludCBzZWdfc2l6ZSA9CisJCXJlcS0+YmlvdGFpbC0+Ymlfc2VnX2JhY2tfc2l6ZSArIG5leHQtPmJpby0+Ymlfc2VnX2Zyb250X3NpemU7CiAKIAkvKgogCSAqIEZpcnN0IGNoZWNrIGlmIHRoZSBlaXRoZXIgb2YgdGhlIHJlcXVlc3RzIGFyZSByZS1xdWV1ZWQKQEAgLTMyNCw4ICszMzUsMTMgQEAKIAkJcmV0dXJuIDA7CiAKIAl0b3RhbF9waHlzX3NlZ21lbnRzID0gcmVxLT5ucl9waHlzX3NlZ21lbnRzICsgbmV4dC0+bnJfcGh5c19zZWdtZW50czsKLQlpZiAoYmxrX3BoeXNfY29udGlnX3NlZ21lbnQocSwgcmVxLT5iaW90YWlsLCBuZXh0LT5iaW8pKQorCWlmIChibGtfcGh5c19jb250aWdfc2VnbWVudChxLCByZXEtPmJpb3RhaWwsIG5leHQtPmJpbykpIHsKKwkJaWYgKHJlcS0+bnJfcGh5c19zZWdtZW50cyA9PSAxKQorCQkJcmVxLT5iaW8tPmJpX3NlZ19mcm9udF9zaXplID0gc2VnX3NpemU7CisJCWlmIChuZXh0LT5ucl9waHlzX3NlZ21lbnRzID09IDEpCisJCQluZXh0LT5iaW90YWlsLT5iaV9zZWdfYmFja19zaXplID0gc2VnX3NpemU7CiAJCXRvdGFsX3BoeXNfc2VnbWVudHMtLTsKKwl9CiAKIAlpZiAodG90YWxfcGh5c19zZWdtZW50cyA+IHEtPm1heF9waHlzX3NlZ21lbnRzKQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1zZXR0aW5ncy5jIGIvYmxvY2svYmxrLXNldHRpbmdzLmMKaW5kZXggYjIxZGNkYi4uNDEzOTJmYiAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLXNldHRpbmdzLmMKKysrIGIvYmxvY2svYmxrLXNldHRpbmdzLmMKQEAgLTE0MSw4ICsxNDEsNiBAQAogCWlmIChxLT51bnBsdWdfZGVsYXkgPT0gMCkKIAkJcS0+dW5wbHVnX2RlbGF5ID0gMTsKIAotCUlOSVRfV09SSygmcS0+dW5wbHVnX3dvcmssIGJsa191bnBsdWdfd29yayk7Ci0KIAlxLT51bnBsdWdfdGltZXIuZnVuY3Rpb24gPSBibGtfdW5wbHVnX3RpbWVvdXQ7CiAJcS0+dW5wbHVnX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZylxOwogCmRpZmYgLS1naXQgYS9ibG9jay9ibGsuaCBiL2Jsb2NrL2Jsay5oCmluZGV4IGU1YzU3OTcuLmQyZTQ5YWYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay5oCisrKyBiL2Jsb2NrL2Jsay5oCkBAIC0yMCw2ICsyMCw3IEBACiB2b2lkIGJsa19ycV90aW1lZF9vdXRfdGltZXIodW5zaWduZWQgbG9uZyBkYXRhKTsKIHZvaWQgYmxrX2RlbGV0ZV90aW1lcihzdHJ1Y3QgcmVxdWVzdCAqKTsKIHZvaWQgYmxrX2FkZF90aW1lcihzdHJ1Y3QgcmVxdWVzdCAqKTsKK3ZvaWQgX19nZW5lcmljX3VucGx1Z19kZXZpY2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKik7CiAKIC8qCiAgKiBJbnRlcm5hbCBhdG9taWMgZmxhZ3MgZm9yIHJlcXVlc3QgaGFuZGxpbmcKZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jCmluZGV4IDA0NTE4OTIuLjU5MTczYTYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2VsZXZhdG9yLmMKKysrIGIvYmxvY2svZWxldmF0b3IuYwpAQCAtNjEyLDcgKzYxMiw3IEBACiAJCSAqICAgcHJvY2Vzc2luZy4KIAkJICovCiAJCWJsa19yZW1vdmVfcGx1ZyhxKTsKLQkJcS0+cmVxdWVzdF9mbihxKTsKKwkJYmxrX3N0YXJ0X3F1ZXVlaW5nKHEpOwogCQlicmVhazsKIAogCWNhc2UgRUxFVkFUT1JfSU5TRVJUX1NPUlQ6CkBAIC05NTAsNyArOTUwLDcgQEAKIAkJICAgIGJsa19vcmRlcmVkX2N1cl9zZXEocSkgPT0gUVVFVUVfT1JEU0VRX0RSQUlOICYmCiAJCSAgICBibGtfb3JkZXJlZF9yZXFfc2VxKGZpcnN0X3JxKSA+IFFVRVVFX09SRFNFUV9EUkFJTikgewogCQkJYmxrX29yZGVyZWRfY29tcGxldGVfc2VxKHEsIFFVRVVFX09SRFNFUV9EUkFJTiwgMCk7Ci0JCQlxLT5yZXF1ZXN0X2ZuKHEpOworCQkJYmxrX3N0YXJ0X3F1ZXVlaW5nKHEpOwogCQl9CiAJfQogfQpAQCAtMTEwOSw4ICsxMTA5LDcgQEAKIAllbHZfZHJhaW5fZWxldmF0b3IocSk7CiAKIAl3aGlsZSAocS0+cnEuZWx2cHJpdikgewotCQlibGtfcmVtb3ZlX3BsdWcocSk7Ci0JCXEtPnJlcXVlc3RfZm4ocSk7CisJCWJsa19zdGFydF9xdWV1ZWluZyhxKTsKIAkJc3Bpbl91bmxvY2tfaXJxKHEtPnF1ZXVlX2xvY2spOwogCQltc2xlZXAoMTApOwogCQlzcGluX2xvY2tfaXJxKHEtPnF1ZXVlX2xvY2spOwpAQCAtMTE2NiwxNSArMTE2NSwxMCBAQAogCQkJICBzaXplX3QgY291bnQpCiB7CiAJY2hhciBlbGV2YXRvcl9uYW1lW0VMVl9OQU1FX01BWF07Ci0Jc2l6ZV90IGxlbjsKIAlzdHJ1Y3QgZWxldmF0b3JfdHlwZSAqZTsKIAotCWVsZXZhdG9yX25hbWVbc2l6ZW9mKGVsZXZhdG9yX25hbWUpIC0gMV0gPSAnXDAnOwotCXN0cm5jcHkoZWxldmF0b3JfbmFtZSwgbmFtZSwgc2l6ZW9mKGVsZXZhdG9yX25hbWUpIC0gMSk7Ci0JbGVuID0gc3RybGVuKGVsZXZhdG9yX25hbWUpOwotCi0JaWYgKGxlbiAmJiBlbGV2YXRvcl9uYW1lW2xlbiAtIDFdID09ICdcbicpCi0JCWVsZXZhdG9yX25hbWVbbGVuIC0gMV0gPSAnXDAnOworCXN0cmxjcHkoZWxldmF0b3JfbmFtZSwgbmFtZSwgc2l6ZW9mKGVsZXZhdG9yX25hbWUpKTsKKwlzdHJzdHJpcChlbGV2YXRvcl9uYW1lKTsKIAogCWUgPSBlbGV2YXRvcl9nZXQoZWxldmF0b3JfbmFtZSk7CiAJaWYgKCFlKSB7CmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCA0Y2QzNDMzLi42NDZlMWQyIDEwMDY0NAotLS0gYS9ibG9jay9nZW5oZC5jCisrKyBiL2Jsb2NrL2dlbmhkLmMKQEAgLTM1OCw3ICszNTgsNiBAQAogLyoqCiAgKiBibGtfYWxsb2NfZGV2dCAtIGFsbG9jYXRlIGEgZGV2X3QgZm9yIGEgcGFydGl0aW9uCiAgKiBAcGFydDogcGFydGl0aW9uIHRvIGFsbG9jYXRlIGRldl90IGZvcgotICogQGdmcF9tYXNrOiBtZW1vcnkgYWxsb2NhdGlvbiBmbGFnCiAgKiBAZGV2dDogb3V0IHBhcmFtZXRlciBmb3IgcmVzdWx0aW5nIGRldl90CiAgKgogICogQWxsb2NhdGUgYSBkZXZfdCBmb3IgYmxvY2sgZGV2aWNlLgpAQCAtNTM1LDcgKzUzNCw3IEBACiAvKioKICAqIGdldF9nZW5kaXNrIC0gZ2V0IHBhcnRpdGlvbmluZyBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBkZXZpY2UKICAqIEBkZXZ0OiBkZXZpY2UgdG8gZ2V0IHBhcnRpdGlvbmluZyBpbmZvcm1hdGlvbiBmb3IKLSAqIEBwYXJ0OiByZXR1cm5lZCBwYXJ0aXRpb24gaW5kZXgKKyAqIEBwYXJ0bm86IHJldHVybmVkIHBhcnRpdGlvbiBpbmRleAogICoKICAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgc3RydWN0dXJlIGNvbnRhaW5pbmcgcGFydGl0aW9uaW5nCiAgKiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIGRldmljZSBAZGV2dC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvS2NvbmZpZyBiL2RyaXZlcnMvS2NvbmZpZwppbmRleCA1OWYzM2ZhLi5kMTliNmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL0tjb25maWcKKysrIGIvZHJpdmVycy9LY29uZmlnCkBAIC0xMDEsNCArMTAxLDYgQEAKIHNvdXJjZSAiZHJpdmVycy91aW8vS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL3hlbi9LY29uZmlnIgorCitzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9LY29uZmlnIgogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9NYWtlZmlsZSBiL2RyaXZlcnMvTWFrZWZpbGUKaW5kZXggMjczNWJkZS4uNDZjODY4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL01ha2VmaWxlCkBAIC05OSwzICs5OSw0IEBACiBvYmotJChDT05GSUdfU1NCKQkJKz0gc3NiLwogb2JqLSQoQ09ORklHX1ZJUlRJTykJCSs9IHZpcnRpby8KIG9iai0kKENPTkZJR19SRUdVTEFUT1IpCQkrPSByZWd1bGF0b3IvCitvYmotJChDT05GSUdfU1RBR0lORykJCSs9IHN0YWdpbmcvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ViLmMgYi9kcml2ZXJzL2Jsb2NrL3ViLmMKaW5kZXggM2EyODFlZi4uZjYwZTQxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay91Yi5jCisrKyBiL2RyaXZlcnMvYmxvY2svdWIuYwpAQCAtMzQ5LDggKzM0OSw2IEBACiAKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVzZXRfd29yazsKIAl3YWl0X3F1ZXVlX2hlYWRfdCByZXNldF93YWl0OwotCi0JaW50IHNnX3N0YXRbNl07CiB9OwogCiAvKgpAQCAtNjg1LDcgKzY4Myw2IEBACiAJCWdvdG8gZHJvcDsKIAl9CiAJdXJxLT5uc2cgPSBuX2VsZW07Ci0Jc2MtPnNnX3N0YXRbbl9lbGVtIDwgNSA/IG5fZWxlbSA6IDVdKys7CiAKIAlpZiAoYmxrX3BjX3JlcXVlc3QocnEpKSB7CiAJCXViX2NtZF9idWlsZF9wYWNrZXQoc2MsIGx1biwgY21kLCB1cnEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3N5c3JxLmMgYi9kcml2ZXJzL2NoYXIvc3lzcnEuYwppbmRleCBkY2U0Y2MwLi5jZTBkOWRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvc3lzcnEuYworKysgYi9kcml2ZXJzL2NoYXIvc3lzcnEuYwpAQCAtMTY4LDcgKzE2OCw3IEBACiBzdGF0aWMgc3RydWN0IHN5c3JxX2tleV9vcCBzeXNycV9zaG93X3RpbWVyc19vcCA9IHsKIAkuaGFuZGxlcgk9IHN5c3JxX2hhbmRsZV9zaG93X3RpbWVycywKIAkuaGVscF9tc2cJPSAic2hvdy1hbGwtdGltZXJzKFEpIiwKLQkuYWN0aW9uX21zZwk9ICJTaG93IFBlbmRpbmcgVGltZXJzIiwKKwkuYWN0aW9uX21zZwk9ICJTaG93IGNsb2NrZXZlbnQgZGV2aWNlcyAmIHBlbmRpbmcgaHJ0aW1lcnMgKG5vIG90aGVycykiLAogfTsKIAogc3RhdGljIHZvaWQgc3lzcnFfaGFuZGxlX21vdW50cm8oaW50IGtleSwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvYWNwaV9wbS5jIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9hY3BpX3BtLmMKaW5kZXggNzFkMmFjNC4uYzIwMTcxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbG9ja3NvdXJjZS9hY3BpX3BtLmMKKysrIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9hY3BpX3BtLmMKQEAgLTIzNyw5ICsyMzcsMTIgQEAKIAogCWlmIChzdHJpY3Rfc3RydG91bChhcmcsIDE2LCAmYmFzZSkpCiAJCXJldHVybiAtRUlOVkFMOwotCisjaWZkZWYgQ09ORklHX1g4Nl82NAorCWlmIChiYXNlID4gVUlOVF9NQVgpCisJCXJldHVybiAtRVJBTkdFOworI2VuZGlmCiAJcHJpbnRrKEtFUk5fSU5GTyAiUE1UTVIgSU9Qb3J0IG92ZXJyaWRlOiAweCUwNHggLT4gMHglMDRseFxuIiwKLQkgICAgICAgKHVuc2lnbmVkIGludClwbXRtcl9pb3BvcnQsIGJhc2UpOworCSAgICAgICBwbXRtcl9pb3BvcnQsIGJhc2UpOwogCXBtdG1yX2lvcG9ydCA9IGJhc2U7CiAKIAlyZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggNjEwZDZmZC4uOTA5NzUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTYsNyArNiw3IEBACiAjCiBtZW51Y29uZmlnIERSTQogCXRyaXN0YXRlICJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlciBEUkkgc3VwcG9ydCkiCi0JZGVwZW5kcyBvbiAoQUdQIHx8IEFHUD1uKSAmJiBQQ0kgJiYgIUVNVUxBVEVEX0NNUFhDSEcKKwlkZXBlbmRzIG9uIChBR1AgfHwgQUdQPW4pICYmIFBDSSAmJiAhRU1VTEFURURfQ01QWENIRyAmJiBTSE1FTQogCWhlbHAKIAkgIEtlcm5lbC1sZXZlbCBzdXBwb3J0IGZvciB0aGUgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKQogCSAgaW50cm9kdWNlZCBpbiBYRnJlZTg2IDQuMC4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSBuZWVkIHRvIHNlbGVjdApAQCAtODcsNiArODcsNyBAQAogY29uZmlnIERSTV9TSVMKIAl0cmlzdGF0ZSAiU2lTIHZpZGVvIGNhcmRzIgogCWRlcGVuZHMgb24gRFJNICYmIEFHUAorCWRlcGVuZHMgb24gRkJfU0lTIHx8IEZCX1NJUz1uCiAJaGVscAogCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgU2lTIDYzMCBvciBjb21wYXRpYmxlIHZpZGVvCiAgICAgICAgICAgY2hpcHNldC4gSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNpcy4gQUdQCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggZTlmOWE5Ny4uNzRkYTk5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtNCw4ICs0LDkgQEAKIAogY2NmbGFncy15IDo9IC1JaW5jbHVkZS9kcm0KIAotZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1fYnVmcy5vIGRybV9jb250ZXh0Lm8gZHJtX2RtYS5vIGRybV9kcmF3YWJsZS5vIFwKLQkJZHJtX2Rydi5vIGRybV9mb3BzLm8gZHJtX2lvY3RsLm8gZHJtX2lycS5vIFwKK2RybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBkcm1fY2FjaGUubyBcCisJCWRybV9jb250ZXh0Lm8gZHJtX2RtYS5vIGRybV9kcmF3YWJsZS5vIFwKKwkJZHJtX2Rydi5vIGRybV9mb3BzLm8gZHJtX2dlbS5vIGRybV9pb2N0bC5vIGRybV9pcnEubyBcCiAJCWRybV9sb2NrLm8gZHJtX21lbW9yeS5vIGRybV9wcm9jLm8gZHJtX3N0dWIubyBkcm1fdm0ubyBcCiAJCWRybV9hZ3BzdXBwb3J0Lm8gZHJtX3NjYXR0ZXIubyBhdGlfcGNpZ2FydC5vIGRybV9wY2kubyBcCiAJCWRybV9zeXNmcy5vIGRybV9oYXNodGFiLm8gZHJtX3NtYW4ubyBkcm1fbW0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hZ3BzdXBwb3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2FncHN1cHBvcnQuYwppbmRleCBhZWZhNWFjLi4zZDMzYjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2FncHN1cHBvcnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2FncHN1cHBvcnQuYwpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiZHJtUC5oIgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGFzbS9hZ3AuaD4KIAogI2lmIF9fT1NfSEFTX0FHUAogCkBAIC00NTIsNCArNDUzLDUzIEBACiAJcmV0dXJuIGFncF91bmJpbmRfbWVtb3J5KGhhbmRsZSk7CiB9CiAKLSNlbmRpZgkJCQkvKiBfX09TX0hBU19BR1AgKi8KKy8qKgorICogQmluZHMgYSBjb2xsZWN0aW9uIG9mIHBhZ2VzIGludG8gQUdQIG1lbW9yeSBhdCB0aGUgZ2l2ZW4gb2Zmc2V0LCByZXR1cm5pbmcKKyAqIHRoZSBBR1AgbWVtb3J5IHN0cnVjdHVyZSBjb250YWluaW5nIHRoZW0uCisgKgorICogTm8gcmVmZXJlbmNlIGlzIGhlbGQgb24gdGhlIHBhZ2VzIGR1cmluZyB0aGlzIHRpbWUgLS0gaXQgaXMgdXAgdG8gdGhlCisgKiBjYWxsZXIgdG8gaGFuZGxlIHRoYXQuCisgKi8KK0RSTV9BR1BfTUVNICoKK2RybV9hZ3BfYmluZF9wYWdlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkgICB1bnNpZ25lZCBsb25nIG51bV9wYWdlcywKKwkJICAgdWludDMyX3QgZ3R0X29mZnNldCwKKwkJICAgdTMyIHR5cGUpCit7CisJRFJNX0FHUF9NRU0gKm1lbTsKKwlpbnQgcmV0LCBpOworCisJRFJNX0RFQlVHKCJcbiIpOworCisJbWVtID0gZHJtX2FncF9hbGxvY2F0ZV9tZW1vcnkoZGV2LT5hZ3AtPmJyaWRnZSwgbnVtX3BhZ2VzLAorCQkJCSAgICAgIHR5cGUpOworCWlmIChtZW0gPT0gTlVMTCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICVsZCBwYWdlc1xuIiwKKwkJCSAgbnVtX3BhZ2VzKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG51bV9wYWdlczsgaSsrKQorCQltZW0tPm1lbW9yeVtpXSA9IHBoeXNfdG9fZ2FydChwYWdlX3RvX3BoeXMocGFnZXNbaV0pKTsKKwltZW0tPnBhZ2VfY291bnQgPSBudW1fcGFnZXM7CisKKwltZW0tPmlzX2ZsdXNoZWQgPSB0cnVlOworCXJldCA9IGRybV9hZ3BfYmluZF9tZW1vcnkobWVtLCBndHRfb2Zmc2V0IC8gUEFHRV9TSVpFKTsKKwlpZiAocmV0ICE9IDApIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYmluZCBBR1AgbWVtb3J5OiAlZFxuIiwgcmV0KTsKKwkJYWdwX2ZyZWVfbWVtb3J5KG1lbSk7CisJCXJldHVybiBOVUxMOworCX0KKworCXJldHVybiBtZW07Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hZ3BfYmluZF9wYWdlcyk7CisKK3ZvaWQgZHJtX2FncF9jaGlwc2V0X2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJYWdwX2ZsdXNoX2NoaXBzZXQoZGV2LT5hZ3AtPmJyaWRnZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hZ3BfY2hpcHNldF9mbHVzaCk7CisKKyNlbmRpZiAvKiBfX09TX0hBU19BR1AgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTk5NGEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jYWNoZS5jCkBAIC0wLDAgKzEsNjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3IFR1bmdzdGVuIEdyYXBoaWNzLCBJbmMuLCBDZWRhciBQYXJrLCBUWC4sIFVTQQorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMsIEFVVEhPUlMgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAqIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEF1dGhvcnM6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMtYXQtdHVuZ3N0ZW5ncmFwaGljcy1kb3QtY29tPgorICovCisKKyNpbmNsdWRlICJkcm1QLmgiCisKKyNpZiBkZWZpbmVkKENPTkZJR19YODYpCitzdGF0aWMgdm9pZAorZHJtX2NsZmx1c2hfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwl1aW50OF90ICpwYWdlX3ZpcnR1YWw7CisJdW5zaWduZWQgaW50IGk7CisKKwlpZiAodW5saWtlbHkocGFnZSA9PSBOVUxMKSkKKwkJcmV0dXJuOworCisJcGFnZV92aXJ0dWFsID0ga21hcF9hdG9taWMocGFnZSwgS01fVVNFUjApOworCWZvciAoaSA9IDA7IGkgPCBQQUdFX1NJWkU7IGkgKz0gYm9vdF9jcHVfZGF0YS54ODZfY2xmbHVzaF9zaXplKQorCQljbGZsdXNoKHBhZ2VfdmlydHVhbCArIGkpOworCWt1bm1hcF9hdG9taWMocGFnZV92aXJ0dWFsLCBLTV9VU0VSMCk7Cit9CisjZW5kaWYKKwordm9pZAorZHJtX2NsZmx1c2hfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2VzW10sIHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzKQoreworCisjaWYgZGVmaW5lZChDT05GSUdfWDg2KQorCWlmIChjcHVfaGFzX2NsZmx1c2gpIHsKKwkJdW5zaWduZWQgbG9uZyBpOworCisJCW1iKCk7CisJCWZvciAoaSA9IDA7IGkgPCBudW1fcGFnZXM7ICsraSkKKwkJCWRybV9jbGZsdXNoX3BhZ2UoKnBhZ2VzKyspOworCQltYigpOworCisJCXJldHVybjsKKwl9CisKKwl3YmludmQoKTsKKyNlbmRpZgorfQorRVhQT1JUX1NZTUJPTChkcm1fY2xmbHVzaF9wYWdlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwppbmRleCA0NTJjMmQ4Li45NmY0MTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKQEAgLTExNiw3ICsxMTYsMTMgQEAKIAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCBkcm1fd2FpdF92YmxhbmssIDApLAogCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERVNFVF9DVEwsIGRybV9tb2Rlc2V0X2N0bCwgMCksCisKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9VUERBVEVfRFJBVywgZHJtX3VwZGF0ZV9kcmF3YWJsZV9pbmZvLCBEUk1fQVVUSHxEUk1fTUFTVEVSfERSTV9ST09UX09OTFkpLAorCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfR0VNX0NMT1NFLCBkcm1fZ2VtX2Nsb3NlX2lvY3RsLCAwKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9HRU1fRkxJTkssIGRybV9nZW1fZmxpbmtfaW9jdGwsIERSTV9BVVRIKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9HRU1fT1BFTiwgZHJtX2dlbV9vcGVuX2lvY3RsLCBEUk1fQVVUSCksCiB9OwogCiAjZGVmaW5lIERSTV9DT1JFX0lPQ1RMX0NPVU5UCUFSUkFZX1NJWkUoIGRybV9pb2N0bHMgKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3BzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwppbmRleCA4NTFhNTNmLi4wZDQ2NjI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAJbWVtc2V0KHByaXYsIDAsIHNpemVvZigqcHJpdikpOwogCWZpbHAtPnByaXZhdGVfZGF0YSA9IHByaXY7CiAJcHJpdi0+ZmlscCA9IGZpbHA7Ci0JcHJpdi0+dWlkID0gY3VycmVudC0+ZXVpZDsKKwlwcml2LT51aWQgPSBjdXJyZW50X2V1aWQoKTsKIAlwcml2LT5waWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTsKIAlwcml2LT5taW5vciA9IGlkcl9maW5kKCZkcm1fbWlub3JzX2lkciwgbWlub3JfaWQpOwogCXByaXYtPmlvY3RsX2NvdW50ID0gMDsKQEAgLTI1Niw2ICsyNTYsOSBAQAogCiAJSU5JVF9MSVNUX0hFQUQoJnByaXYtPmxoZWFkKTsKIAorCWlmIChkZXYtPmRyaXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX0dFTSkKKwkJZHJtX2dlbV9vcGVuKGRldiwgcHJpdik7CisKIAlpZiAoZGV2LT5kcml2ZXItPm9wZW4pIHsKIAkJcmV0ID0gZGV2LT5kcml2ZXItPm9wZW4oZGV2LCBwcml2KTsKIAkJaWYgKHJldCA8IDApCkBAIC00MDAsNiArNDAzLDkgQEAKIAkJZGV2LT5kcml2ZXItPnJlY2xhaW1fYnVmZmVycyhkZXYsIGZpbGVfcHJpdik7CiAJfQogCisJaWYgKGRldi0+ZHJpdmVyLT5kcml2ZXJfZmVhdHVyZXMgJiBEUklWRVJfR0VNKQorCQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBmaWxlX3ByaXYpOworCiAJZHJtX2Zhc3luYygtMSwgZmlscCwgMCk7CiAKIAltdXRleF9sb2NrKCZkZXYtPmN0eGxpc3RfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkMWFmZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKQEAgLTAsMCArMSw0MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4KKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CisjaW5jbHVkZSAiZHJtUC5oIgorCisvKiogQGZpbGUgZHJtX2dlbS5jCisgKgorICogVGhpcyBmaWxlIHByb3ZpZGVzIHNvbWUgb2YgdGhlIGJhc2UgaW9jdGxzIGFuZCBsaWJyYXJ5IHJvdXRpbmVzIGZvcgorICogdGhlIGdyYXBoaWNzIG1lbW9yeSBtYW5hZ2VyIGltcGxlbWVudGVkIGJ5IGVhY2ggZGV2aWNlIGRyaXZlci4KKyAqCisgKiBCZWNhdXNlIHZhcmlvdXMgZGV2aWNlcyBoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudHMgaW4gdGVybXMgb2YKKyAqIHN5bmNocm9uaXphdGlvbiBhbmQgbWlncmF0aW9uIHN0cmF0ZWdpZXMsIGltcGxlbWVudGluZyB0aGF0IGlzIGxlZnQgdXAgdG8KKyAqIHRoZSBkcml2ZXIsIGFuZCBhbGwgdGhhdCB0aGUgZ2VuZXJhbCBBUEkgcHJvdmlkZXMgc2hvdWxkIGJlIGdlbmVyaWMgLS0KKyAqIGFsbG9jYXRpbmcgb2JqZWN0cywgcmVhZGluZy93cml0aW5nIGRhdGEgd2l0aCB0aGUgY3B1LCBmcmVlaW5nIG9iamVjdHMuCisgKiBFdmVuIHRoZXJlLCBwbGF0Zm9ybS1kZXBlbmRlbnQgb3B0aW1pemF0aW9ucyBmb3IgcmVhZGluZy93cml0aW5nIGRhdGEgd2l0aAorICogdGhlIENQVSBtZWFuIHdlJ2xsIGxpa2VseSBob29rIHRob3NlIG91dCB0byBkcml2ZXItc3BlY2lmaWMgY2FsbHMuICBIb3dldmVyLAorICogdGhlIERSSTIgaW1wbGVtZW50YXRpb24gd2FudHMgdG8gaGF2ZSBhdCBsZWFzdCBhbGxvY2F0ZS9tbWFwIGJlIGdlbmVyaWMuCisgKgorICogVGhlIGdvYWwgd2FzIHRvIGhhdmUgc3dhcC1iYWNrZWQgb2JqZWN0IGFsbG9jYXRpb24gbWFuYWdlZCB0aHJvdWdoCisgKiBzdHJ1Y3QgZmlsZS4gIEhvd2V2ZXIsIGZpbGUgZGVzY3JpcHRvcnMgYXMgaGFuZGxlcyB0byBhIHN0cnVjdCBmaWxlIGhhdmUKKyAqIHR3byBtYWpvciBmYWlsaW5nczoKKyAqIC0gUHJvY2VzcyBsaW1pdHMgcHJldmVudCBtb3JlIHRoYW4gMTAyNCBvciBzbyBiZWluZyB1c2VkIGF0IGEgdGltZSBieQorICogICBkZWZhdWx0LgorICogLSBJbmFiaWxpdHkgdG8gYWxsb2NhdGUgaGlnaCBmZHMgd2lsbCBhZ2dyYXZhdGUgdGhlIFggU2VydmVyJ3Mgc2VsZWN0KCkKKyAqICAgaGFuZGxpbmcsIGFuZCBsaWtlbHkgdGhhdCBvZiBtYW55IEdMIGNsaWVudCBhcHBsaWNhdGlvbnMgYXMgd2VsbC4KKyAqCisgKiBUaGlzIGxlZCB0byBhIHBsYW4gb2YgdXNpbmcgb3VyIG93biBpbnRlZ2VyIElEcyAoY2FsbGVkIGhhbmRsZXMsIGZvbGxvd2luZworICogRFJNIHRlcm1pbm9sb2d5KSB0byBtaW1pYyBmZHMsIGFuZCBpbXBsZW1lbnQgdGhlIGZkIHN5c2NhbGxzIHdlIG5lZWQgYXMKKyAqIGlvY3Rscy4gIFRoZSBvYmplY3RzIHRoZW1zZWx2ZXMgd2lsbCBzdGlsbCBpbmNsdWRlIHRoZSBzdHJ1Y3QgZmlsZSBzbworICogdGhhdCB3ZSBjYW4gdHJhbnNpdGlvbiB0byBmZHMgaWYgdGhlIHJlcXVpcmVkIGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBzaG93cworICogdXAgYXQgYSBsYXRlciBkYXRlLCBhbmQgYXMgb3VyIGludGVyZmFjZSB3aXRoIHNobWZzIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KKyAqLworCisvKioKKyAqIEluaXRpYWxpemUgdGhlIEdFTSBkZXZpY2UgZmllbGRzCisgKi8KKworaW50Citkcm1fZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzcGluX2xvY2tfaW5pdCgmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwlpZHJfaW5pdCgmZGV2LT5vYmplY3RfbmFtZV9pZHIpOworCWF0b21pY19zZXQoJmRldi0+b2JqZWN0X2NvdW50LCAwKTsKKwlhdG9taWNfc2V0KCZkZXYtPm9iamVjdF9tZW1vcnksIDApOworCWF0b21pY19zZXQoJmRldi0+cGluX2NvdW50LCAwKTsKKwlhdG9taWNfc2V0KCZkZXYtPnBpbl9tZW1vcnksIDApOworCWF0b21pY19zZXQoJmRldi0+Z3R0X2NvdW50LCAwKTsKKwlhdG9taWNfc2V0KCZkZXYtPmd0dF9tZW1vcnksIDApOworCXJldHVybiAwOworfQorCisvKioKKyAqIEFsbG9jYXRlIGEgR0VNIG9iamVjdCBvZiB0aGUgc3BlY2lmaWVkIHNpemUgd2l0aCBzaG1mcyBiYWNraW5nIHN0b3JlCisgKi8KK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqCitkcm1fZ2VtX29iamVjdF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKworCUJVR19PTigoc2l6ZSAmIChQQUdFX1NJWkUgLSAxKSkgIT0gMCk7CisKKwlvYmogPSBrY2FsbG9jKDEsIHNpemVvZigqb2JqKSwgR0ZQX0tFUk5FTCk7CisKKwlvYmotPmRldiA9IGRldjsKKwlvYmotPmZpbHAgPSBzaG1lbV9maWxlX3NldHVwKCJkcm0gbW0gb2JqZWN0Iiwgc2l6ZSwgMCk7CisJaWYgKElTX0VSUihvYmotPmZpbHApKSB7CisJCWtmcmVlKG9iaik7CisJCXJldHVybiBOVUxMOworCX0KKworCWtyZWZfaW5pdCgmb2JqLT5yZWZjb3VudCk7CisJa3JlZl9pbml0KCZvYmotPmhhbmRsZWNvdW50KTsKKwlvYmotPnNpemUgPSBzaXplOworCWlmIChkZXYtPmRyaXZlci0+Z2VtX2luaXRfb2JqZWN0ICE9IE5VTEwgJiYKKwkgICAgZGV2LT5kcml2ZXItPmdlbV9pbml0X29iamVjdChvYmopICE9IDApIHsKKwkJZnB1dChvYmotPmZpbHApOworCQlrZnJlZShvYmopOworCQlyZXR1cm4gTlVMTDsKKwl9CisJYXRvbWljX2luYygmZGV2LT5vYmplY3RfY291bnQpOworCWF0b21pY19hZGQob2JqLT5zaXplLCAmZGV2LT5vYmplY3RfbWVtb3J5KTsKKwlyZXR1cm4gb2JqOworfQorRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9hbGxvYyk7CisKKy8qKgorICogUmVtb3ZlcyB0aGUgbWFwcGluZyBmcm9tIGhhbmRsZSB0byBmaWxwIGZvciB0aGlzIG9iamVjdC4KKyAqLworc3RhdGljIGludAorZHJtX2dlbV9oYW5kbGVfZGVsZXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCwgaW50IGhhbmRsZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCisJLyogVGhpcyBpcyBncm9zcy4gVGhlIGlkciBzeXN0ZW0gZG9lc24ndCBsZXQgdXMgdHJ5IGEgZGVsZXRlIGFuZAorCSAqIHJldHVybiBhbiBlcnJvciBjb2RlLiAgSXQganVzdCBzcGV3cyBpZiB5b3UgZmFpbCBhdCBkZWxldGluZy4KKwkgKiBTbywgd2UgaGF2ZSB0byBncmFiIGEgbG9jayBhcm91bmQgZmluZGluZyB0aGUgb2JqZWN0IGFuZCB0aGVuCisJICogZG9pbmcgdGhlIGRlbGV0ZSBvbiBpdCBhbmQgZHJvcHBpbmcgdGhlIHJlZmNvdW50LCBvciB0aGUgdXNlcgorCSAqIGNvdWxkIHJhY2UgdXMgdG8gZG91YmxlLWRlY3JlbWVudCB0aGUgcmVmY291bnQgYW5kIGNhdXNlIGEKKwkgKiB1c2UtYWZ0ZXItZnJlZSBsYXRlci4gIEdpdmVuIHRoZSBmcmVxdWVuY3kgb2Ygb3VyIGhhbmRsZSBsb29rdXBzLAorCSAqIHdlIG1heSB3YW50IHRvIHVzZSBpZGEgZm9yIG51bWJlciBhbGxvY2F0aW9uIGFuZCBhIGhhc2ggdGFibGUKKwkgKiBmb3IgdGhlIHBvaW50ZXJzLCBhbnl3YXkuCisJICovCisJc3Bpbl9sb2NrKCZmaWxwLT50YWJsZV9sb2NrKTsKKworCS8qIENoZWNrIGlmIHdlIGN1cnJlbnRseSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBvYmplY3QgKi8KKwlvYmogPSBpZHJfZmluZCgmZmlscC0+b2JqZWN0X2lkciwgaGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpIHsKKwkJc3Bpbl91bmxvY2soJmZpbHAtPnRhYmxlX2xvY2spOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJZGV2ID0gb2JqLT5kZXY7CisKKwkvKiBSZWxlYXNlIHJlZmVyZW5jZSBhbmQgZGVjcmVtZW50IHJlZmNvdW50LiAqLworCWlkcl9yZW1vdmUoJmZpbHAtPm9iamVjdF9pZHIsIGhhbmRsZSk7CisJc3Bpbl91bmxvY2soJmZpbHAtPnRhYmxlX2xvY2spOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWRybV9nZW1fb2JqZWN0X2hhbmRsZV91bnJlZmVyZW5jZShvYmopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogQ3JlYXRlIGEgaGFuZGxlIGZvciB0aGlzIG9iamVjdC4gVGhpcyBhZGRzIGEgaGFuZGxlIHJlZmVyZW5jZQorICogdG8gdGhlIG9iamVjdCwgd2hpY2ggaW5jbHVkZXMgYSByZWd1bGFyIHJlZmVyZW5jZSBjb3VudC4gQ2FsbGVycworICogd2lsbCBsaWtlbHkgd2FudCB0byBkZXJlZmVyZW5jZSB0aGUgb2JqZWN0IGFmdGVyd2FyZHMuCisgKi8KK2ludAorZHJtX2dlbV9oYW5kbGVfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCSAgICAgICBpbnQgKmhhbmRsZXApCit7CisJaW50CXJldDsKKworCS8qCisJICogR2V0IHRoZSB1c2VyLXZpc2libGUgaGFuZGxlIHVzaW5nIGlkci4KKwkgKi8KK2FnYWluOgorCS8qIGVuc3VyZSB0aGVyZSBpcyBzcGFjZSBhdmFpbGFibGUgdG8gYWxsb2NhdGUgYSBoYW5kbGUgKi8KKwlpZiAoaWRyX3ByZV9nZXQoJmZpbGVfcHJpdi0+b2JqZWN0X2lkciwgR0ZQX0tFUk5FTCkgPT0gMCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBkbyB0aGUgYWxsb2NhdGlvbiB1bmRlciBvdXIgc3BpbmxvY2sgKi8KKwlzcGluX2xvY2soJmZpbGVfcHJpdi0+dGFibGVfbG9jayk7CisJcmV0ID0gaWRyX2dldF9uZXdfYWJvdmUoJmZpbGVfcHJpdi0+b2JqZWN0X2lkciwgb2JqLCAxLCBoYW5kbGVwKTsKKwlzcGluX3VubG9jaygmZmlsZV9wcml2LT50YWJsZV9sb2NrKTsKKwlpZiAocmV0ID09IC1FQUdBSU4pCisJCWdvdG8gYWdhaW47CisKKwlpZiAocmV0ICE9IDApCisJCXJldHVybiByZXQ7CisKKwlkcm1fZ2VtX29iamVjdF9oYW5kbGVfcmVmZXJlbmNlKG9iaik7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9nZW1faGFuZGxlX2NyZWF0ZSk7CisKKy8qKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgbmFtZWQgYnkgdGhlIGhhbmRsZS4gKi8KK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqCitkcm1fZ2VtX29iamVjdF9sb29rdXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxwLAorCQkgICAgICBpbnQgaGFuZGxlKQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCisJc3Bpbl9sb2NrKCZmaWxwLT50YWJsZV9sb2NrKTsKKworCS8qIENoZWNrIGlmIHdlIGN1cnJlbnRseSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBvYmplY3QgKi8KKwlvYmogPSBpZHJfZmluZCgmZmlscC0+b2JqZWN0X2lkciwgaGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpIHsKKwkJc3Bpbl91bmxvY2soJmZpbHAtPnRhYmxlX2xvY2spOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKKworCXNwaW5fdW5sb2NrKCZmaWxwLT50YWJsZV9sb2NrKTsKKworCXJldHVybiBvYmo7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X2xvb2t1cCk7CisKKy8qKgorICogUmVsZWFzZXMgdGhlIGhhbmRsZSB0byBhbiBtbSBvYmplY3QuCisgKi8KK2ludAorZHJtX2dlbV9jbG9zZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9nZW1fY2xvc2UgKmFyZ3MgPSBkYXRhOworCWludCByZXQ7CisKKwlpZiAoIShkZXYtPmRyaXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX0dFTSkpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0ID0gZHJtX2dlbV9oYW5kbGVfZGVsZXRlKGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogQ3JlYXRlIGEgZ2xvYmFsIG5hbWUgZm9yIGFuIG9iamVjdCwgcmV0dXJuaW5nIHRoZSBuYW1lLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbmFtZSBkb2VzIG5vdCBob2xkIGEgcmVmZXJlbmNlOyB3aGVuIHRoZSBvYmplY3QKKyAqIGlzIGZyZWVkLCB0aGUgbmFtZSBnb2VzIGF3YXkuCisgKi8KK2ludAorZHJtX2dlbV9mbGlua19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9nZW1fZmxpbmsgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCWludCByZXQ7CisKKwlpZiAoIShkZXYtPmRyaXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX0dFTSkpCisJCXJldHVybiAtRU5PREVWOworCisJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZV9wcml2LCBhcmdzLT5oYW5kbGUpOworCWlmIChvYmogPT0gTlVMTCkKKwkJcmV0dXJuIC1FQkFERjsKKworYWdhaW46CisJaWYgKGlkcl9wcmVfZ2V0KCZkZXYtPm9iamVjdF9uYW1lX2lkciwgR0ZQX0tFUk5FTCkgPT0gMCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzcGluX2xvY2soJmRldi0+b2JqZWN0X25hbWVfbG9jayk7CisJaWYgKG9iai0+bmFtZSkgeworCQlhcmdzLT5uYW1lID0gb2JqLT5uYW1lOworCQlzcGluX3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldCA9IGlkcl9nZXRfbmV3X2Fib3ZlKCZkZXYtPm9iamVjdF9uYW1lX2lkciwgb2JqLCAxLAorCQkJCSAmb2JqLT5uYW1lKTsKKwlzcGluX3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwlpZiAocmV0ID09IC1FQUdBSU4pCisJCWdvdG8gYWdhaW47CisKKwlpZiAocmV0ICE9IDApIHsKKwkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKgorCSAqIExlYXZlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgbG9va3VwIGFyb3VuZCBhcyB0aGUKKwkgKiBuYW1lIHRhYmxlIG5vdyBob2xkcyBvbmUKKwkgKi8KKwlhcmdzLT5uYW1lID0gKHVpbnQ2NF90KSBvYmotPm5hbWU7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBPcGVuIGFuIG9iamVjdCB1c2luZyB0aGUgZ2xvYmFsIG5hbWUsIHJldHVybmluZyBhIGhhbmRsZSBhbmQgdGhlIHNpemUuCisgKgorICogVGhpcyBoYW5kbGUgKG9mIGNvdXJzZSkgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwgc28gdGhlIG9iamVjdAorICogd2lsbCBub3QgZ28gYXdheSB1bnRpbCB0aGUgaGFuZGxlIGlzIGRlbGV0ZWQuCisgKi8KK2ludAorZHJtX2dlbV9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1fZ2VtX29wZW4gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCWludCByZXQ7CisJaW50IGhhbmRsZTsKKworCWlmICghKGRldi0+ZHJpdmVyLT5kcml2ZXJfZmVhdHVyZXMgJiBEUklWRVJfR0VNKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlzcGluX2xvY2soJmRldi0+b2JqZWN0X25hbWVfbG9jayk7CisJb2JqID0gaWRyX2ZpbmQoJmRldi0+b2JqZWN0X25hbWVfaWRyLCAoaW50KSBhcmdzLT5uYW1lKTsKKwlpZiAob2JqKQorCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKKwlzcGluX3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZV9wcml2LCBvYmosICZoYW5kbGUpOworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhcmdzLT5oYW5kbGUgPSBoYW5kbGU7CisJYXJncy0+c2l6ZSA9IG9iai0+c2l6ZTsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIENhbGxlZCBhdCBkZXZpY2Ugb3BlbiB0aW1lLCBzZXRzIHVwIHRoZSBzdHJ1Y3R1cmUgZm9yIGhhbmRsaW5nIHJlZmNvdW50aW5nCisgKiBvZiBtbSBvYmplY3RzLgorICovCit2b2lkCitkcm1fZ2VtX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJaWRyX2luaXQoJmZpbGVfcHJpdmF0ZS0+b2JqZWN0X2lkcik7CisJc3Bpbl9sb2NrX2luaXQoJmZpbGVfcHJpdmF0ZS0+dGFibGVfbG9jayk7Cit9CisKKy8qKgorICogQ2FsbGVkIGF0IGRldmljZSBjbG9zZSB0byByZWxlYXNlIHRoZSBmaWxlJ3MKKyAqIGhhbmRsZSByZWZlcmVuY2VzIG9uIG9iamVjdHMuCisgKi8KK3N0YXRpYyBpbnQKK2RybV9nZW1fb2JqZWN0X3JlbGVhc2VfaGFuZGxlKGludCBpZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gcHRyOworCisJZHJtX2dlbV9vYmplY3RfaGFuZGxlX3VucmVmZXJlbmNlKG9iaik7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBDYWxsZWQgYXQgY2xvc2UgdGltZSB3aGVuIHRoZSBmaWxwIGlzIGdvaW5nIGF3YXkuCisgKgorICogUmVsZWFzZXMgYW55IHJlbWFpbmluZyByZWZlcmVuY2VzIG9uIG9iamVjdHMgYnkgdGhpcyBmaWxwLgorICovCit2b2lkCitkcm1fZ2VtX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2YXRlLT5vYmplY3RfaWRyLAorCQkgICAgICZkcm1fZ2VtX29iamVjdF9yZWxlYXNlX2hhbmRsZSwgTlVMTCk7CisKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2YXRlLT5vYmplY3RfaWRyKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKK30KKworLyoqCisgKiBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgaGFzIGJlZW4gbG9zdC4KKyAqCisgKiBGcmVlcyB0aGUgb2JqZWN0CisgKi8KK3ZvaWQKK2RybV9nZW1fb2JqZWN0X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICopIGtyZWY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCisJQlVHX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisKKwlpZiAoZGV2LT5kcml2ZXItPmdlbV9mcmVlX29iamVjdCAhPSBOVUxMKQorCQlkZXYtPmRyaXZlci0+Z2VtX2ZyZWVfb2JqZWN0KG9iaik7CisKKwlmcHV0KG9iai0+ZmlscCk7CisJYXRvbWljX2RlYygmZGV2LT5vYmplY3RfY291bnQpOworCWF0b21pY19zdWIob2JqLT5zaXplLCAmZGV2LT5vYmplY3RfbWVtb3J5KTsKKwlrZnJlZShvYmopOworfQorRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9mcmVlKTsKKworLyoqCisgKiBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgaGFuZGxlIHRvIHRoZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkCisgKgorICogUmVtb3ZlcyBhbnkgbmFtZSBmb3IgdGhlIG9iamVjdC4gTm90ZSB0aGF0IHRoaXMgbXVzdCBiZQorICogY2FsbGVkIGJlZm9yZSBkcm1fZ2VtX29iamVjdF9mcmVlIG9yIHdlJ2xsIGJlIHRvdWNoaW5nCisgKiBmcmVlZCBtZW1vcnkKKyAqLwordm9pZAorZHJtX2dlbV9vYmplY3RfaGFuZGxlX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBjb250YWluZXJfb2Yoa3JlZiwKKwkJCQkJCSAgc3RydWN0IGRybV9nZW1fb2JqZWN0LAorCQkJCQkJICBoYW5kbGVjb3VudCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCisJLyogUmVtb3ZlIGFueSBuYW1lIGZvciB0aGlzIG9iamVjdCAqLworCXNwaW5fbG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwlpZiAob2JqLT5uYW1lKSB7CisJCWlkcl9yZW1vdmUoJmRldi0+b2JqZWN0X25hbWVfaWRyLCBvYmotPm5hbWUpOworCQlzcGluX3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKwkJLyoKKwkJICogVGhlIG9iamVjdCBuYW1lIGhlbGQgYSByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QsIGRyb3AKKwkJICogdGhhdCBub3cuCisJCSAqLworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCX0gZWxzZQorCQlzcGluX3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKKworfQorRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9oYW5kbGVfZnJlZSk7CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCmluZGV4IDUzZjBlNWEuLjQwOTFiOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwpAQCAtNjMsNyArNjMsNyBAQAogCSAgICBwLT5kZXZudW0gIT0gUENJX1NMT1QoZGV2LT5wZGV2LT5kZXZmbikgfHwgcC0+ZnVuY251bSAhPSBQQ0lfRlVOQyhkZXYtPnBkZXYtPmRldmZuKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlwLT5pcnEgPSBkZXYtPmlycTsKKwlwLT5pcnEgPSBkZXYtPnBkZXYtPmlycTsKIAogCURSTV9ERUJVRygiJWQ6JWQ6JWQgPT4gSVJRICVkXG4iLCBwLT5idXNudW0sIHAtPmRldm51bSwgcC0+ZnVuY251bSwKIAkJICBwLT5pcnEpOwpAQCAtNzEsMjUgKzcxLDEzNyBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9mbih1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gKHN0cnVjdCBkcm1fZGV2aWNlICopYXJnOworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJaW50IGk7CisKKwlpZiAoIWRldi0+dmJsYW5rX2Rpc2FibGVfYWxsb3dlZCkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8IGRldi0+bnVtX2NydGNzOyBpKyspIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKKwkJaWYgKGF0b21pY19yZWFkKCZkZXYtPnZibGFua19yZWZjb3VudFtpXSkgPT0gMCAmJgorCQkgICAgZGV2LT52YmxhbmtfZW5hYmxlZFtpXSkgeworCQkJRFJNX0RFQlVHKCJkaXNhYmxpbmcgdmJsYW5rIG9uIGNydGMgJWRcbiIsIGkpOworCQkJZGV2LT5sYXN0X3ZibGFua1tpXSA9CisJCQkJZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIGkpOworCQkJZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rKGRldiwgaSk7CisJCQlkZXYtPnZibGFua19lbmFibGVkW2ldID0gMDsKKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBkcm1fdmJsYW5rX2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwkvKiBCYWlsIGlmIHRoZSBkcml2ZXIgZGlkbid0IGNhbGwgZHJtX3ZibGFua19pbml0KCkgKi8KKwlpZiAoZGV2LT5udW1fY3J0Y3MgPT0gMCkKKwkJcmV0dXJuOworCisJZGVsX3RpbWVyKCZkZXYtPnZibGFua19kaXNhYmxlX3RpbWVyKTsKKworCXZibGFua19kaXNhYmxlX2ZuKCh1bnNpZ25lZCBsb25nKWRldik7CisKKwlkcm1fZnJlZShkZXYtPnZibF9xdWV1ZSwgc2l6ZW9mKCpkZXYtPnZibF9xdWV1ZSkgKiBkZXYtPm51bV9jcnRjcywKKwkJIERSTV9NRU1fRFJJVkVSKTsKKwlkcm1fZnJlZShkZXYtPnZibF9zaWdzLCBzaXplb2YoKmRldi0+dmJsX3NpZ3MpICogZGV2LT5udW1fY3J0Y3MsCisJCSBEUk1fTUVNX0RSSVZFUik7CisJZHJtX2ZyZWUoZGV2LT5fdmJsYW5rX2NvdW50LCBzaXplb2YoKmRldi0+X3ZibGFua19jb3VudCkgKgorCQkgZGV2LT5udW1fY3J0Y3MsIERSTV9NRU1fRFJJVkVSKTsKKwlkcm1fZnJlZShkZXYtPnZibGFua19yZWZjb3VudCwgc2l6ZW9mKCpkZXYtPnZibGFua19yZWZjb3VudCkgKgorCQkgZGV2LT5udW1fY3J0Y3MsIERSTV9NRU1fRFJJVkVSKTsKKwlkcm1fZnJlZShkZXYtPnZibGFua19lbmFibGVkLCBzaXplb2YoKmRldi0+dmJsYW5rX2VuYWJsZWQpICoKKwkJIGRldi0+bnVtX2NydGNzLCBEUk1fTUVNX0RSSVZFUik7CisJZHJtX2ZyZWUoZGV2LT5sYXN0X3ZibGFuaywgc2l6ZW9mKCpkZXYtPmxhc3RfdmJsYW5rKSAqIGRldi0+bnVtX2NydGNzLAorCQkgRFJNX01FTV9EUklWRVIpOworCWRybV9mcmVlKGRldi0+dmJsYW5rX2lubW9kZXNldCwgc2l6ZW9mKCpkZXYtPnZibGFua19pbm1vZGVzZXQpICoKKwkJIGRldi0+bnVtX2NydGNzLCBEUk1fTUVNX0RSSVZFUik7CisKKwlkZXYtPm51bV9jcnRjcyA9IDA7Cit9CisKK2ludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG51bV9jcnRjcykKK3sKKwlpbnQgaSwgcmV0ID0gLUVOT01FTTsKKworCXNldHVwX3RpbWVyKCZkZXYtPnZibGFua19kaXNhYmxlX3RpbWVyLCB2YmxhbmtfZGlzYWJsZV9mbiwKKwkJICAgICh1bnNpZ25lZCBsb25nKWRldik7CisJc3Bpbl9sb2NrX2luaXQoJmRldi0+dmJsX2xvY2spOworCWF0b21pY19zZXQoJmRldi0+dmJsX3NpZ25hbF9wZW5kaW5nLCAwKTsKKwlkZXYtPm51bV9jcnRjcyA9IG51bV9jcnRjczsKKworCWRldi0+dmJsX3F1ZXVlID0gZHJtX2FsbG9jKHNpemVvZih3YWl0X3F1ZXVlX2hlYWRfdCkgKiBudW1fY3J0Y3MsCisJCQkJICAgRFJNX01FTV9EUklWRVIpOworCWlmICghZGV2LT52YmxfcXVldWUpCisJCWdvdG8gZXJyOworCisJZGV2LT52Ymxfc2lncyA9IGRybV9hbGxvYyhzaXplb2Yoc3RydWN0IGxpc3RfaGVhZCkgKiBudW1fY3J0Y3MsCisJCQkJICBEUk1fTUVNX0RSSVZFUik7CisJaWYgKCFkZXYtPnZibF9zaWdzKQorCQlnb3RvIGVycjsKKworCWRldi0+X3ZibGFua19jb3VudCA9IGRybV9hbGxvYyhzaXplb2YoYXRvbWljX3QpICogbnVtX2NydGNzLAorCQkJCSAgICAgIERSTV9NRU1fRFJJVkVSKTsKKwlpZiAoIWRldi0+X3ZibGFua19jb3VudCkKKwkJZ290byBlcnI7CisKKwlkZXYtPnZibGFua19yZWZjb3VudCA9IGRybV9hbGxvYyhzaXplb2YoYXRvbWljX3QpICogbnVtX2NydGNzLAorCQkJCQkgRFJNX01FTV9EUklWRVIpOworCWlmICghZGV2LT52YmxhbmtfcmVmY291bnQpCisJCWdvdG8gZXJyOworCisJZGV2LT52YmxhbmtfZW5hYmxlZCA9IGRybV9jYWxsb2MobnVtX2NydGNzLCBzaXplb2YoaW50KSwKKwkJCQkJIERSTV9NRU1fRFJJVkVSKTsKKwlpZiAoIWRldi0+dmJsYW5rX2VuYWJsZWQpCisJCWdvdG8gZXJyOworCisJZGV2LT5sYXN0X3ZibGFuayA9IGRybV9jYWxsb2MobnVtX2NydGNzLCBzaXplb2YodTMyKSwgRFJNX01FTV9EUklWRVIpOworCWlmICghZGV2LT5sYXN0X3ZibGFuaykKKwkJZ290byBlcnI7CisKKwlkZXYtPnZibGFua19pbm1vZGVzZXQgPSBkcm1fY2FsbG9jKG51bV9jcnRjcywgc2l6ZW9mKGludCksCisJCQkJCSBEUk1fTUVNX0RSSVZFUik7CisJaWYgKCFkZXYtPnZibGFua19pbm1vZGVzZXQpCisJCWdvdG8gZXJyOworCisJLyogWmVybyBwZXItY3J0YyB2Ymxhbmsgc3R1ZmYgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NydGNzOyBpKyspIHsKKwkJaW5pdF93YWl0cXVldWVfaGVhZCgmZGV2LT52YmxfcXVldWVbaV0pOworCQlJTklUX0xJU1RfSEVBRCgmZGV2LT52Ymxfc2lnc1tpXSk7CisJCWF0b21pY19zZXQoJmRldi0+X3ZibGFua19jb3VudFtpXSwgMCk7CisJCWF0b21pY19zZXQoJmRldi0+dmJsYW5rX3JlZmNvdW50W2ldLCAwKTsKKwl9CisKKwlkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQgPSAwOworCisJcmV0dXJuIDA7CisKK2VycjoKKwlkcm1fdmJsYW5rX2NsZWFudXAoZGV2KTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX2luaXQpOworCiAvKioKICAqIEluc3RhbGwgSVJRIGhhbmRsZXIuCiAgKgogICogXHBhcmFtIGRldiBEUk0gZGV2aWNlLgotICogXHBhcmFtIGlycSBJUlEgbnVtYmVyLgogICoKLSAqIEluaXRpYWxpemVzIHRoZSBJUlEgcmVsYXRlZCBkYXRhLCBhbmQgc2V0dXBzIGRybV9kZXZpY2U6OnZibF9xdWV1ZS4gSW5zdGFsbHMgdGhlIGhhbmRsZXIsIGNhbGxpbmcgdGhlIGRyaXZlcgorICogSW5pdGlhbGl6ZXMgdGhlIElSUSByZWxhdGVkIGRhdGEuIEluc3RhbGxzIHRoZSBoYW5kbGVyLCBjYWxsaW5nIHRoZSBkcml2ZXIKICAqIFxjIGRybV9kcml2ZXJfaXJxX3ByZWluc3RhbGwoKSBhbmQgXGMgZHJtX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoKSBmdW5jdGlvbnMKICAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbi4KICAqLwotc3RhdGljIGludCBkcm1faXJxX2luc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCitpbnQgZHJtX2lycV9pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsKIAl1bnNpZ25lZCBsb25nIHNoX2ZsYWdzID0gMDsKIAogCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9IQVZFX0lSUSkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKGRldi0+aXJxID09IDApCisJaWYgKGRldi0+cGRldi0+aXJxID09IDApCiAJCXJldHVybiAtRUlOVkFMOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMTA3LDE4ICsyMTksNyBAQAogCWRldi0+aXJxX2VuYWJsZWQgPSAxOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JRFJNX0RFQlVHKCJpcnE9JWRcbiIsIGRldi0+aXJxKTsKLQotCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0lSUV9WQkwpKSB7Ci0JCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRldi0+dmJsX3F1ZXVlKTsKLQotCQlzcGluX2xvY2tfaW5pdCgmZGV2LT52YmxfbG9jayk7Ci0KLQkJSU5JVF9MSVNUX0hFQUQoJmRldi0+dmJsX3NpZ3MpOwotCQlJTklUX0xJU1RfSEVBRCgmZGV2LT52Ymxfc2lnczIpOwotCi0JCWRldi0+dmJsX3BlbmRpbmcgPSAwOwotCX0KKwlEUk1fREVCVUcoImlycT0lZFxuIiwgZGV2LT5wZGV2LT5pcnEpOwogCiAJLyogQmVmb3JlIGluc3RhbGxpbmcgaGFuZGxlciAqLwogCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbChkZXYpOwpAQCAtMTI3LDggKzIyOCw5IEBACiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfSVJRX1NIQVJFRCkpCiAJCXNoX2ZsYWdzID0gSVJRRl9TSEFSRUQ7CiAKLQlyZXQgPSByZXF1ZXN0X2lycShkZXYtPmlycSwgZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyLAorCXJldCA9IHJlcXVlc3RfaXJxKGRybV9kZXZfdG9faXJxKGRldiksIGRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciwKIAkJCSAgc2hfZmxhZ3MsIGRldi0+ZGV2bmFtZSwgZGV2KTsKKwogCWlmIChyZXQgPCAwKSB7CiAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAkJZGV2LT5pcnFfZW5hYmxlZCA9IDA7CkBAIC0xMzcsMTAgKzIzOSwxNiBAQAogCX0KIAogCS8qIEFmdGVyIGluc3RhbGxpbmcgaGFuZGxlciAqLwotCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwoZGV2KTsKKwlyZXQgPSBkZXYtPmRyaXZlci0+aXJxX3Bvc3RpbnN0YWxsKGRldik7CisJaWYgKHJldCA8IDApIHsKKwkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlkZXYtPmlycV9lbmFibGVkID0gMDsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KK0VYUE9SVF9TWU1CT0woZHJtX2lycV9pbnN0YWxsKTsKIAogLyoqCiAgKiBVbmluc3RhbGwgdGhlIElSUSBoYW5kbGVyLgpAQCAtMTY0LDE3ICsyNzIsMTggQEAKIAlpZiAoIWlycV9lbmFibGVkKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCURSTV9ERUJVRygiaXJxPSVkXG4iLCBkZXYtPmlycSk7CisJRFJNX0RFQlVHKCJpcnE9JWRcbiIsIGRldi0+cGRldi0+aXJxKTsKIAogCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsKGRldik7CiAKLQlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKKwlmcmVlX2lycShkZXYtPnBkZXYtPmlycSwgZGV2KTsKKworCWRybV92YmxhbmtfY2xlYW51cChkZXYpOwogCiAJZGV2LT5sb2NrZWRfdGFza2xldF9mdW5jID0gTlVMTDsKIAogCXJldHVybiAwOwogfQotCiBFWFBPUlRfU1lNQk9MKGRybV9pcnFfdW5pbnN0YWxsKTsKIAogLyoqCkBAIC0yMDEsNyArMzEwLDcgQEAKIAkJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0hBVkVfSVJRKSkKIAkJCXJldHVybiAwOwogCQlpZiAoZGV2LT5pZl92ZXJzaW9uIDwgRFJNX0lGX1ZFUlNJT04oMSwgMikgJiYKLQkJICAgIGN0bC0+aXJxICE9IGRldi0+aXJxKQorCQkgICAgY3RsLT5pcnEgIT0gZGV2LT5wZGV2LT5pcnEpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJcmV0dXJuIGRybV9pcnFfaW5zdGFsbChkZXYpOwogCWNhc2UgRFJNX1VOSU5TVF9IQU5ETEVSOgpAQCAtMjE0LDYgKzMyMywxNzQgQEAKIH0KIAogLyoqCisgKiBkcm1fdmJsYW5rX2NvdW50IC0gcmV0cmlldmUgImNvb2tlZCIgdmJsYW5rIGNvdW50ZXIgdmFsdWUKKyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBjcnRjOiB3aGljaCBjb3VudGVyIHRvIHJldHJpZXZlCisgKgorICogRmV0Y2hlcyB0aGUgImNvb2tlZCIgdmJsYW5rIGNvdW50IHZhbHVlIHRoYXQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mCisgKiB2YmxhbmsgZXZlbnRzIHNpbmNlIHRoZSBzeXN0ZW0gd2FzIGJvb3RlZCwgaW5jbHVkaW5nIGxvc3QgZXZlbnRzIGR1ZSB0bworICogbW9kZXNldHRpbmcgYWN0aXZpdHkuCisgKi8KK3UzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCXJldHVybiBhdG9taWNfcmVhZCgmZGV2LT5fdmJsYW5rX2NvdW50W2NydGNdKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3ZibGFua19jb3VudCk7CisKKy8qKgorICogZHJtX3VwZGF0ZV92YmxhbmtfY291bnQgLSB1cGRhdGUgdGhlIG1hc3RlciB2YmxhbmsgY291bnRlcgorICogQGRldjogRFJNIGRldmljZQorICogQGNydGM6IGNvdW50ZXIgdG8gdXBkYXRlCisgKgorICogQ2FsbCBiYWNrIGludG8gdGhlIGRyaXZlciB0byB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIHZibGFuayBjb3VudGVyCisgKiAoc3BlY2lmaWVkIGJ5IEBjcnRjKS4gIERlYWwgd2l0aCB3cmFwYXJvdW5kLCBpZiBpdCBvY2N1cnJlZCwgYW5kCisgKiB1cGRhdGUgdGhlIGxhc3QgcmVhZCB2YWx1ZSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHdyYXBhcm91bmQgb24gdGhlIG5leHQKKyAqIGNhbGwgaWYgbmVjZXNzYXJ5LgorICoKKyAqIE9ubHkgbmVjZXNzYXJ5IHdoZW4gZ29pbmcgZnJvbSBvZmYtPm9uLCB0byBhY2NvdW50IGZvciBmcmFtZXMgd2UKKyAqIGRpZG4ndCBnZXQgYW4gaW50ZXJydXB0IGZvci4KKyAqCisgKiBOb3RlOiBjYWxsZXIgbXVzdCBob2xkIGRldi0+dmJsX2xvY2sgc2luY2UgdGhpcyByZWFkcyAmIHdyaXRlcworICogZGV2aWNlIHZibGFuayBmaWVsZHMuCisgKi8KK3N0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCXUzMiBjdXJfdmJsYW5rLCBkaWZmOworCisJLyoKKwkgKiBJbnRlcnJ1cHRzIHdlcmUgZGlzYWJsZWQgcHJpb3IgdG8gdGhpcyBjYWxsLCBzbyBkZWFsIHdpdGggY291bnRlcgorCSAqIHdyYXAgaWYgbmVlZGVkLgorCSAqIE5PVEUhICBJdCdzIHBvc3NpYmxlIHdlIGxvc3QgYSBmdWxsIGRldi0+bWF4X3ZibGFua19jb3VudCBldmVudHMKKwkgKiBoZXJlIGlmIHRoZSByZWdpc3RlciBpcyBzbWFsbCBvciB3ZSBoYWQgdmJsYW5rIGludGVycnVwdHMgb2ZmIGZvcgorCSAqIGEgbG9uZyB0aW1lLgorCSAqLworCWN1cl92YmxhbmsgPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0Yyk7CisJZGlmZiA9IGN1cl92YmxhbmsgLSBkZXYtPmxhc3RfdmJsYW5rW2NydGNdOworCWlmIChjdXJfdmJsYW5rIDwgZGV2LT5sYXN0X3ZibGFua1tjcnRjXSkgeworCQlkaWZmICs9IGRldi0+bWF4X3ZibGFua19jb3VudDsKKworCQlEUk1fREVCVUcoImxhc3RfdmJsYW5rWyVkXT0weCV4LCBjdXJfdmJsYW5rPTB4JXggPT4gZGlmZj0weCV4XG4iLAorCQkJICBjcnRjLCBkZXYtPmxhc3RfdmJsYW5rW2NydGNdLCBjdXJfdmJsYW5rLCBkaWZmKTsKKwl9CisKKwlEUk1fREVCVUcoImVuYWJsaW5nIHZibGFuayBpbnRlcnJ1cHRzIG9uIGNydGMgJWQsIG1pc3NlZCAlZFxuIiwKKwkJICBjcnRjLCBkaWZmKTsKKworCWF0b21pY19hZGQoZGlmZiwgJmRldi0+X3ZibGFua19jb3VudFtjcnRjXSk7Cit9CisKKy8qKgorICogZHJtX3ZibGFua19nZXQgLSBnZXQgYSByZWZlcmVuY2UgY291bnQgb24gdmJsYW5rIGV2ZW50cworICogQGRldjogRFJNIGRldmljZQorICogQGNydGM6IHdoaWNoIENSVEMgdG8gb3duCisgKgorICogQWNxdWlyZSBhIHJlZmVyZW5jZSBjb3VudCBvbiB2YmxhbmsgZXZlbnRzIHRvIGF2b2lkIGhhdmluZyB0aGVtIGRpc2FibGVkCisgKiB3aGlsZSBpbiB1c2UuCisgKgorICogUkVUVVJOUworICogWmVybyBvbiBzdWNjZXNzLCBub256ZXJvIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCByZXQgPSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKKwkvKiBHb2luZyBmcm9tIDAtPjEgbWVhbnMgd2UgaGF2ZSB0byBlbmFibGUgaW50ZXJydXB0cyBhZ2FpbiAqLworCWlmIChhdG9taWNfYWRkX3JldHVybigxLCAmZGV2LT52YmxhbmtfcmVmY291bnRbY3J0Y10pID09IDEgJiYKKwkgICAgIWRldi0+dmJsYW5rX2VuYWJsZWRbY3J0Y10pIHsKKwkJcmV0ID0gZGV2LT5kcml2ZXItPmVuYWJsZV92YmxhbmsoZGV2LCBjcnRjKTsKKwkJRFJNX0RFQlVHKCJlbmFibGluZyB2Ymxhbmsgb24gY3J0YyAlZCwgcmV0OiAlZFxuIiwgY3J0YywgcmV0KTsKKwkJaWYgKHJldCkKKwkJCWF0b21pY19kZWMoJmRldi0+dmJsYW5rX3JlZmNvdW50W2NydGNdKTsKKwkJZWxzZSB7CisJCQlkZXYtPnZibGFua19lbmFibGVkW2NydGNdID0gMTsKKwkJCWRybV91cGRhdGVfdmJsYW5rX2NvdW50KGRldiwgY3J0Yyk7CisJCX0KKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3ZibGFua19nZXQpOworCisvKioKKyAqIGRybV92YmxhbmtfcHV0IC0gZ2l2ZSB1cCBvd25lcnNoaXAgb2YgdmJsYW5rIGV2ZW50cworICogQGRldjogRFJNIGRldmljZQorICogQGNydGM6IHdoaWNoIGNvdW50ZXIgdG8gZ2l2ZSB1cAorICoKKyAqIFJlbGVhc2Ugb3duZXJzaGlwIG9mIGEgZ2l2ZW4gdmJsYW5rIGNvdW50ZXIsIHR1cm5pbmcgb2ZmIGludGVycnVwdHMKKyAqIGlmIHBvc3NpYmxlLgorICovCit2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCS8qIExhc3QgdXNlciBzY2hlZHVsZXMgaW50ZXJydXB0IGRpc2FibGUgKi8KKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZGV2LT52YmxhbmtfcmVmY291bnRbY3J0Y10pKQorCQltb2RfdGltZXIoJmRldi0+dmJsYW5rX2Rpc2FibGVfdGltZXIsIGppZmZpZXMgKyA1KkRSTV9IWik7Cit9CitFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfcHV0KTsKKworLyoqCisgKiBkcm1fbW9kZXNldF9jdGwgLSBoYW5kbGUgdmJsYW5rIGV2ZW50IGNvdW50ZXIgY2hhbmdlcyBhY3Jvc3MgbW9kZSBzd2l0Y2gKKyAqIEBEUk1fSU9DVExfQVJHUzogc3RhbmRhcmQgaW9jdGwgYXJndW1lbnRzCisgKgorICogQXBwbGljYXRpb25zIHNob3VsZCBjYWxsIHRoZSAlX0RSTV9QUkVfTU9ERVNFVCBhbmQgJV9EUk1fUE9TVF9NT0RFU0VUCisgKiBpb2N0bHMgYXJvdW5kIG1vZGVzZXR0aW5nIHNvIHRoYXQgYW55IGxvc3QgdmJsYW5rIGV2ZW50cyBhcmUgYWNjb3VudGVkIGZvci4KKyAqCisgKiBHZW5lcmFsbHkgdGhlIGNvdW50ZXIgd2lsbCByZXNldCBhY3Jvc3MgbW9kZSBzZXRzLiAgSWYgaW50ZXJydXB0cyBhcmUKKyAqIGVuYWJsZWQgYXJvdW5kIHRoaXMgY2FsbCwgd2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBzaW5jZSB0aGUgY291bnRlcgorICogd2lsbCBoYXZlIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAqLworaW50IGRybV9tb2Rlc2V0X2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9tb2Rlc2V0X2N0bCAqbW9kZXNldCA9IGRhdGE7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKKwlpbnQgY3J0YywgcmV0ID0gMDsKKworCS8qIElmIGRybV92YmxhbmtfaW5pdCgpIGhhc24ndCBiZWVuIGNhbGxlZCB5ZXQsIGp1c3Qgbm8tb3AgKi8KKwlpZiAoIWRldi0+bnVtX2NydGNzKQorCQlnb3RvIG91dDsKKworCWNydGMgPSBtb2Rlc2V0LT5jcnRjOworCWlmIChjcnRjID49IGRldi0+bnVtX2NydGNzKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCS8qCisJICogVG8gYXZvaWQgYWxsIHRoZSBwcm9ibGVtcyB0aGF0IG1pZ2h0IGhhcHBlbiBpZiBpbnRlcnJ1cHRzCisJICogd2VyZSBlbmFibGVkL2Rpc2FibGVkIGFyb3VuZCBvciBiZXR3ZWVuIHRoZXNlIGNhbGxzLCB3ZSBqdXN0CisJICogaGF2ZSB0aGUga2VybmVsIHRha2UgYSByZWZlcmVuY2Ugb24gdGhlIENSVEMgKGp1c3Qgb25jZSB0aG91Z2gKKwkgKiB0byBhdm9pZCBjb3JydXB0aW5nIHRoZSBjb3VudCBpZiBtdWx0aXBsZSwgbWlzbWF0Y2ggY2FsbHMgb2NjdXIpLAorCSAqIHNvIHRoYXQgaW50ZXJydXB0cyByZW1haW4gZW5hYmxlZCBpbiB0aGUgaW50ZXJpbS4KKwkgKi8KKwlzd2l0Y2ggKG1vZGVzZXQtPmNtZCkgeworCWNhc2UgX0RSTV9QUkVfTU9ERVNFVDoKKwkJaWYgKCFkZXYtPnZibGFua19pbm1vZGVzZXRbY3J0Y10pIHsKKwkJCWRldi0+dmJsYW5rX2lubW9kZXNldFtjcnRjXSA9IDE7CisJCQlkcm1fdmJsYW5rX2dldChkZXYsIGNydGMpOworCQl9CisJCWJyZWFrOworCWNhc2UgX0RSTV9QT1NUX01PREVTRVQ6CisJCWlmIChkZXYtPnZibGFua19pbm1vZGVzZXRbY3J0Y10pIHsKKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CisJCQlkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQgPSAxOworCQkJZGV2LT52YmxhbmtfaW5tb2Rlc2V0W2NydGNdID0gMDsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKKwkJCWRybV92YmxhbmtfcHV0KGRldiwgY3J0Yyk7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCitvdXQ6CisJcmV0dXJuIHJldDsKK30KKworLyoqCiAgKiBXYWl0IGZvciBWQkxBTksuCiAgKgogICogXHBhcmFtIGlub2RlIGRldmljZSBpbm9kZS4KQEAgLTIzMiwxNCArNTA5LDE0IEBACiAgKgogICogSWYgYSBzaWduYWwgaXMgbm90IHJlcXVlc3RlZCwgdGhlbiBjYWxscyB2Ymxhbmtfd2FpdCgpLgogICovCi1pbnQgZHJtX3dhaXRfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoraW50IGRybV93YWl0X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CiAJdW5pb24gZHJtX3dhaXRfdmJsYW5rICp2Ymx3YWl0ID0gZGF0YTsKLQlzdHJ1Y3QgdGltZXZhbCBub3c7CiAJaW50IHJldCA9IDA7Ci0JdW5zaWduZWQgaW50IGZsYWdzLCBzZXE7CisJdW5zaWduZWQgaW50IGZsYWdzLCBzZXEsIGNydGM7CiAKLQlpZiAoKCFkZXYtPmlycSkgfHwgKCFkZXYtPmlycV9lbmFibGVkKSkKKwlpZiAoKCFkZXYtPnBkZXYtPmlycSkgfHwgKCFkZXYtPmlycV9lbmFibGVkKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAodmJsd2FpdC0+cmVxdWVzdC50eXBlICYKQEAgLTI1MSwxMyArNTI4LDE3IEBACiAJfQogCiAJZmxhZ3MgPSB2Ymx3YWl0LT5yZXF1ZXN0LnR5cGUgJiBfRFJNX1ZCTEFOS19GTEFHU19NQVNLOworCWNydGMgPSBmbGFncyAmIF9EUk1fVkJMQU5LX1NFQ09OREFSWSA/IDEgOiAwOwogCi0JaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgKGZsYWdzICYgX0RSTV9WQkxBTktfU0VDT05EQVJZKSA/Ci0JCQkJICAgIERSSVZFUl9JUlFfVkJMMiA6IERSSVZFUl9JUlFfVkJMKSkKKwlpZiAoY3J0YyA+PSBkZXYtPm51bV9jcnRjcykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlzZXEgPSBhdG9taWNfcmVhZCgoZmxhZ3MgJiBfRFJNX1ZCTEFOS19TRUNPTkRBUlkpID8gJmRldi0+dmJsX3JlY2VpdmVkMgotCQkJICA6ICZkZXYtPnZibF9yZWNlaXZlZCk7CisJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBjcnRjKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFjcXVpcmUgdmJsYW5rIGNvdW50ZXIsICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwlzZXEgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgY3J0Yyk7CiAKIAlzd2l0Y2ggKHZibHdhaXQtPnJlcXVlc3QudHlwZSAmIF9EUk1fVkJMQU5LX1RZUEVTX01BU0spIHsKIAljYXNlIF9EUk1fVkJMQU5LX1JFTEFUSVZFOgpAQCAtMjY2LDcgKzU0Nyw4IEBACiAJY2FzZSBfRFJNX1ZCTEFOS19BQlNPTFVURToKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZG9uZTsKIAl9CiAKIAlpZiAoKGZsYWdzICYgX0RSTV9WQkxBTktfTkVYVE9OTUlTUykgJiYKQEAgLTI3Niw4ICs1NTgsNyBAQAogCiAJaWYgKGZsYWdzICYgX0RSTV9WQkxBTktfU0lHTkFMKSB7CiAJCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Ci0JCXN0cnVjdCBsaXN0X2hlYWQgKnZibF9zaWdzID0gKGZsYWdzICYgX0RSTV9WQkxBTktfU0VDT05EQVJZKQotCQkJCSAgICAgID8gJmRldi0+dmJsX3NpZ3MyIDogJmRldi0+dmJsX3NpZ3M7CisJCXN0cnVjdCBsaXN0X2hlYWQgKnZibF9zaWdzID0gJmRldi0+dmJsX3NpZ3NbY3J0Y107CiAJCXN0cnVjdCBkcm1fdmJsX3NpZyAqdmJsX3NpZzsKIAogCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwpAQCAtMjk4LDIyICs1NzksMjkgQEAKIAkJCX0KIAkJfQogCi0JCWlmIChkZXYtPnZibF9wZW5kaW5nID49IDEwMCkgeworCQlpZiAoYXRvbWljX3JlYWQoJmRldi0+dmJsX3NpZ25hbF9wZW5kaW5nKSA+PSAxMDApIHsKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKLQkJCXJldHVybiAtRUJVU1k7CisJCQlyZXQgPSAtRUJVU1k7CisJCQlnb3RvIGRvbmU7CiAJCX0KIAotCQlkZXYtPnZibF9wZW5kaW5nKys7Ci0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwogCi0JCWlmICghCi0JCSAgICAodmJsX3NpZyA9Ci0JCSAgICAgZHJtX2FsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX3ZibF9zaWcpLCBEUk1fTUVNX0RSSVZFUikpKSB7Ci0JCQlyZXR1cm4gLUVOT01FTTsKKwkJdmJsX3NpZyA9IGRybV9jYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBkcm1fdmJsX3NpZyksCisJCQkJICAgICBEUk1fTUVNX0RSSVZFUik7CisJCWlmICghdmJsX3NpZykgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gZG9uZTsKIAkJfQogCi0JCW1lbXNldCgodm9pZCAqKXZibF9zaWcsIDAsIHNpemVvZigqdmJsX3NpZykpOworCQlyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIGNydGMpOworCQlpZiAocmV0KSB7CisJCQlkcm1fZnJlZSh2Ymxfc2lnLCBzaXplb2Yoc3RydWN0IGRybV92Ymxfc2lnKSwKKwkJCQkgRFJNX01FTV9EUklWRVIpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCWF0b21pY19pbmMoJmRldi0+dmJsX3NpZ25hbF9wZW5kaW5nKTsKIAogCQl2Ymxfc2lnLT5zZXF1ZW5jZSA9IHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2U7CiAJCXZibF9zaWctPmluZm8uc2lfc2lnbm8gPSB2Ymx3YWl0LT5yZXF1ZXN0LnNpZ25hbDsKQEAgLTMyNywyMCArNjE1LDI5IEBACiAKIAkJdmJsd2FpdC0+cmVwbHkuc2VxdWVuY2UgPSBzZXE7CiAJfSBlbHNlIHsKLQkJaWYgKGZsYWdzICYgX0RSTV9WQkxBTktfU0VDT05EQVJZKSB7Ci0JCQlpZiAoZGV2LT5kcml2ZXItPnZibGFua193YWl0MikKLQkJCQlyZXQgPSBkZXYtPmRyaXZlci0+dmJsYW5rX3dhaXQyKGRldiwgJnZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UpOwotCQl9IGVsc2UgaWYgKGRldi0+ZHJpdmVyLT52Ymxhbmtfd2FpdCkKLQkJCXJldCA9Ci0JCQkgICAgZGV2LT5kcml2ZXItPnZibGFua193YWl0KGRldiwKLQkJCQkJCSAgICAgJnZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UpOworCQlEUk1fREVCVUcoIndhaXRpbmcgb24gdmJsYW5rIGNvdW50ICVkLCBjcnRjICVkXG4iLAorCQkJICB2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlLCBjcnRjKTsKKwkJRFJNX1dBSVRfT04ocmV0LCBkZXYtPnZibF9xdWV1ZVtjcnRjXSwgMyAqIERSTV9IWiwKKwkJCSAgICAoKGRybV92YmxhbmtfY291bnQoZGV2LCBjcnRjKQorCQkJICAgICAgLSB2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlKSA8PSAoMSA8PCAyMykpKTsKIAotCQlkb19nZXR0aW1lb2ZkYXkoJm5vdyk7Ci0JCXZibHdhaXQtPnJlcGx5LnR2YWxfc2VjID0gbm93LnR2X3NlYzsKLQkJdmJsd2FpdC0+cmVwbHkudHZhbF91c2VjID0gbm93LnR2X3VzZWM7CisJCWlmIChyZXQgIT0gLUVJTlRSKSB7CisJCQlzdHJ1Y3QgdGltZXZhbCBub3c7CisKKwkJCWRvX2dldHRpbWVvZmRheSgmbm93KTsKKworCQkJdmJsd2FpdC0+cmVwbHkudHZhbF9zZWMgPSBub3cudHZfc2VjOworCQkJdmJsd2FpdC0+cmVwbHkudHZhbF91c2VjID0gbm93LnR2X3VzZWM7CisJCQl2Ymx3YWl0LT5yZXBseS5zZXF1ZW5jZSA9IGRybV92YmxhbmtfY291bnQoZGV2LCBjcnRjKTsKKwkJCURSTV9ERUJVRygicmV0dXJuaW5nICVkIHRvIGNsaWVudFxuIiwKKwkJCQkgIHZibHdhaXQtPnJlcGx5LnNlcXVlbmNlKTsKKwkJfSBlbHNlIHsKKwkJCURSTV9ERUJVRygidmJsYW5rIHdhaXQgaW50ZXJydXB0ZWQgYnkgc2lnbmFsXG4iKTsKKwkJfQogCX0KIAotICAgICAgZG9uZToKK2RvbmU6CisJZHJtX3ZibGFua19wdXQoZGV2LCBjcnRjKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zNDgsNDQgKzY0NSw1NyBAQAogICogU2VuZCB0aGUgVkJMQU5LIHNpZ25hbHMuCiAgKgogICogXHBhcmFtIGRldiBEUk0gZGV2aWNlLgorICogXHBhcmFtIGNydGMgQ1JUQyB3aGVyZSB0aGUgdmJsYW5rIGV2ZW50IG9jY3VycmVkCiAgKgogICogU2VuZHMgYSBzaWduYWwgZm9yIGVhY2ggdGFzayBpbiBkcm1fZGV2aWNlOjp2Ymxfc2lncyBhbmQgZW1wdGllcyB0aGUgbGlzdC4KICAqCiAgKiBJZiBhIHNpZ25hbCBpcyBub3QgcmVxdWVzdGVkLCB0aGVuIGNhbGxzIHZibGFua193YWl0KCkuCiAgKi8KLXZvaWQgZHJtX3ZibF9zZW5kX3NpZ25hbHMoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCitzdGF0aWMgdm9pZCBkcm1fdmJsX3NlbmRfc2lnbmFscyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1Y3QgZHJtX3ZibF9zaWcgKnZibF9zaWcsICp0bXA7CisJc3RydWN0IGxpc3RfaGVhZCAqdmJsX3NpZ3M7CisJdW5zaWduZWQgaW50IHZibF9zZXE7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgaTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBmbGFncyk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fdmJsX3NpZyAqdmJsX3NpZywgKnRtcDsKLQkJc3RydWN0IGxpc3RfaGVhZCAqdmJsX3NpZ3MgPSBpID8gJmRldi0+dmJsX3NpZ3MyIDogJmRldi0+dmJsX3NpZ3M7Ci0JCXVuc2lnbmVkIGludCB2Ymxfc2VxID0gYXRvbWljX3JlYWQoaSA/ICZkZXYtPnZibF9yZWNlaXZlZDIgOgotCQkJCQkJICAgJmRldi0+dmJsX3JlY2VpdmVkKTsKKwl2Ymxfc2lncyA9ICZkZXYtPnZibF9zaWdzW2NydGNdOworCXZibF9zZXEgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgY3J0Yyk7CiAKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZibF9zaWcsIHRtcCwgdmJsX3NpZ3MsIGhlYWQpIHsKLQkJCWlmICgodmJsX3NlcSAtIHZibF9zaWctPnNlcXVlbmNlKSA8PSAoMSA8PCAyMykpIHsKLQkJCQl2Ymxfc2lnLT5pbmZvLnNpX2NvZGUgPSB2Ymxfc2VxOwotCQkJCXNlbmRfc2lnX2luZm8odmJsX3NpZy0+aW5mby5zaV9zaWdubywKLQkJCQkJICAgICAgJnZibF9zaWctPmluZm8sIHZibF9zaWctPnRhc2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2Ymxfc2lnLCB0bXAsIHZibF9zaWdzLCBoZWFkKSB7CisJICAgIGlmICgodmJsX3NlcSAtIHZibF9zaWctPnNlcXVlbmNlKSA8PSAoMSA8PCAyMykpIHsKKwkJdmJsX3NpZy0+aW5mby5zaV9jb2RlID0gdmJsX3NlcTsKKwkJc2VuZF9zaWdfaW5mbyh2Ymxfc2lnLT5pbmZvLnNpX3NpZ25vLAorCQkJICAgICAgJnZibF9zaWctPmluZm8sIHZibF9zaWctPnRhc2spOwogCi0JCQkJbGlzdF9kZWwoJnZibF9zaWctPmhlYWQpOworCQlsaXN0X2RlbCgmdmJsX3NpZy0+aGVhZCk7CiAKLQkJCQlkcm1fZnJlZSh2Ymxfc2lnLCBzaXplb2YoKnZibF9zaWcpLAotCQkJCQkgRFJNX01FTV9EUklWRVIpOwotCi0JCQkJZGV2LT52YmxfcGVuZGluZy0tOwotCQkJfQotCQl9CisJCWRybV9mcmVlKHZibF9zaWcsIHNpemVvZigqdmJsX3NpZyksCisJCQkgRFJNX01FTV9EUklWRVIpOworCQlhdG9taWNfZGVjKCZkZXYtPnZibF9zaWduYWxfcGVuZGluZyk7CisJCWRybV92YmxhbmtfcHV0KGRldiwgY3J0Yyk7CisJICAgIH0KIAl9CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBmbGFncyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woZHJtX3ZibF9zZW5kX3NpZ25hbHMpOworLyoqCisgKiBkcm1faGFuZGxlX3ZibGFuayAtIGhhbmRsZSBhIHZibGFuayBldmVudAorICogQGRldjogRFJNIGRldmljZQorICogQGNydGM6IHdoZXJlIHRoaXMgZXZlbnQgb2NjdXJyZWQKKyAqCisgKiBEcml2ZXJzIHNob3VsZCBjYWxsIHRoaXMgcm91dGluZSBpbiB0aGVpciB2YmxhbmsgaW50ZXJydXB0IGhhbmRsZXJzIHRvCisgKiB1cGRhdGUgdGhlIHZibGFuayBjb3VudGVyIGFuZCBzZW5kIGFueSBzaWduYWxzIHRoYXQgbWF5IGJlIHBlbmRpbmcuCisgKi8KK3ZvaWQgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit7CisJYXRvbWljX2luYygmZGV2LT5fdmJsYW5rX2NvdW50W2NydGNdKTsKKwlEUk1fV0FLRVVQKCZkZXYtPnZibF9xdWV1ZVtjcnRjXSk7CisJZHJtX3ZibF9zZW5kX3NpZ25hbHMoZGV2LCBjcnRjKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2hhbmRsZV92YmxhbmspOwogCiAvKioKICAqIFRhc2tsZXQgd3JhcHBlciBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jCmluZGV4IDAxNzcwMTIuLjgwM2JjOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tZW1vcnkuYwpAQCAtMTMzLDYgKzEzMyw3IEBACiB7CiAJcmV0dXJuIGRybV9hZ3BfZnJlZV9tZW1vcnkoaGFuZGxlKSA/IDAgOiAtRUlOVkFMOwogfQorRVhQT1JUX1NZTUJPTChkcm1fZnJlZV9hZ3ApOwogCiAvKiogV3JhcHBlciBhcm91bmQgYWdwX2JpbmRfbWVtb3J5KCkgKi8KIGludCBkcm1fYmluZF9hZ3AoRFJNX0FHUF9NRU0gKiBoYW5kbGUsIHVuc2lnbmVkIGludCBzdGFydCkKQEAgLTE0NSw2ICsxNDYsNyBAQAogewogCXJldHVybiBkcm1fYWdwX3VuYmluZF9tZW1vcnkoaGFuZGxlKTsKIH0KK0VYUE9SVF9TWU1CT0woZHJtX3VuYmluZF9hZ3ApOwogCiAjZWxzZSAgLyogIF9fT1NfSEFTX0FHUCAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCAqYWdwX3JlbWFwKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKaW5kZXggZGNmZjllOS4uMjE3YWQ3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYwpAQCAtMTY5LDYgKzE2OSw3IEBACiAKIAlyZXR1cm4gY2hpbGQ7CiB9CitFWFBPUlRfU1lNQk9MKGRybV9tbV9nZXRfYmxvY2spOwogCiAvKgogICogUHV0IGEgYmxvY2suIE1lcmdlIHdpdGggdGhlIHByZXZpb3VzIGFuZCAvIG9yIG5leHQgYmxvY2sgaWYgdGhleSBhcmUgZnJlZS4KQEAgLTIxNyw2ICsyMTgsNyBAQAogCQlkcm1fZnJlZShjdXIsIHNpemVvZigqY3VyKSwgRFJNX01FTV9NTSk7CiAJfQogfQorRVhQT1JUX1NZTUJPTChkcm1fbW1fcHV0X2Jsb2NrKTsKIAogc3RydWN0IGRybV9tbV9ub2RlICpkcm1fbW1fc2VhcmNoX2ZyZWUoY29uc3Qgc3RydWN0IGRybV9tbSAqIG1tLAogCQkJCSAgdW5zaWduZWQgbG9uZyBzaXplLApAQCAtMjY1LDYgKzI2Nyw3IEBACiAKIAlyZXR1cm4gKGhlYWQtPm5leHQtPm5leHQgPT0gaGVhZCk7CiB9CitFWFBPUlRfU1lNQk9MKGRybV9tbV9zZWFyY2hfZnJlZSk7CiAKIGludCBkcm1fbW1faW5pdChzdHJ1Y3QgZHJtX21tICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKQEAgLTI3Myw3ICsyNzYsNyBAQAogCiAJcmV0dXJuIGRybV9tbV9jcmVhdGVfdGFpbF9ub2RlKG1tLCBzdGFydCwgc2l6ZSk7CiB9Ci0KK0VYUE9SVF9TWU1CT0woZHJtX21tX2luaXQpOwogCiB2b2lkIGRybV9tbV90YWtlZG93bihzdHJ1Y3QgZHJtX21tICogbW0pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYy5jCmluZGV4IDkzYjFlMDQuLmQ0OTBkYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYy5jCkBAIC00OSw2ICs0OSwxMCBAQAogCQkJICAgaW50IHJlcXVlc3QsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKIHN0YXRpYyBpbnQgZHJtX2J1ZnNfaW5mbyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAogCQkJIGludCByZXF1ZXN0LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CitzdGF0aWMgaW50IGRybV9nZW1fbmFtZV9pbmZvKGNoYXIgKmJ1ZiwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmZzZXQsCisJCQkgICAgIGludCByZXF1ZXN0LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CitzdGF0aWMgaW50IGRybV9nZW1fb2JqZWN0X2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCSAgICAgICBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwogI2lmIERSTV9ERUJVR19DT0RFCiBzdGF0aWMgaW50IGRybV92bWFfaW5mbyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAogCQkJaW50IHJlcXVlc3QsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKQEAgLTYwLDEzICs2NCwxNiBAQAogc3RhdGljIHN0cnVjdCBkcm1fcHJvY19saXN0IHsKIAljb25zdCBjaGFyICpuYW1lOwkvKio8IGZpbGUgbmFtZSAqLwogCWludCAoKmYpIChjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQsIGludCAqLCB2b2lkICopOwkJLyoqPCBwcm9jIGNhbGxiYWNrKi8KKwl1MzIgZHJpdmVyX2ZlYXR1cmVzOyAvKio8IFJlcXVpcmVkIGRyaXZlciBmZWF0dXJlcyBmb3IgdGhpcyBlbnRyeSAqLwogfSBkcm1fcHJvY19saXN0W10gPSB7Ci0JeyJuYW1lIiwgZHJtX25hbWVfaW5mb30sCi0JeyJtZW0iLCBkcm1fbWVtX2luZm99LAotCXsidm0iLCBkcm1fdm1faW5mb30sCi0JeyJjbGllbnRzIiwgZHJtX2NsaWVudHNfaW5mb30sCi0JeyJxdWV1ZXMiLCBkcm1fcXVldWVzX2luZm99LAotCXsiYnVmcyIsIGRybV9idWZzX2luZm99LAorCXsibmFtZSIsIGRybV9uYW1lX2luZm8sIDB9LAorCXsibWVtIiwgZHJtX21lbV9pbmZvLCAwfSwKKwl7InZtIiwgZHJtX3ZtX2luZm8sIDB9LAorCXsiY2xpZW50cyIsIGRybV9jbGllbnRzX2luZm8sIDB9LAorCXsicXVldWVzIiwgZHJtX3F1ZXVlc19pbmZvLCAwfSwKKwl7ImJ1ZnMiLCBkcm1fYnVmc19pbmZvLCAwfSwKKwl7ImdlbV9uYW1lcyIsIGRybV9nZW1fbmFtZV9pbmZvLCBEUklWRVJfR0VNfSwKKwl7ImdlbV9vYmplY3RzIiwgZHJtX2dlbV9vYmplY3RfaW5mbywgRFJJVkVSX0dFTX0sCiAjaWYgRFJNX0RFQlVHX0NPREUKIAl7InZtYSIsIGRybV92bWFfaW5mb30sCiAjZW5kaWYKQEAgLTkwLDggKzk3LDkgQEAKIGludCBkcm1fcHJvY19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCBpbnQgbWlub3JfaWQsCiAJCSAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpyb290KQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OwogCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZW50OwotCWludCBpLCBqOworCWludCBpLCBqLCByZXQ7CiAJY2hhciBuYW1lWzY0XTsKIAogCXNwcmludGYobmFtZSwgIiVkIiwgbWlub3JfaWQpOwpAQCAtMTAyLDIzICsxMTAsNDIgQEAKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgRFJNX1BST0NfRU5UUklFUzsgaSsrKSB7CisJCXUzMiBmZWF0dXJlcyA9IGRybV9wcm9jX2xpc3RbaV0uZHJpdmVyX2ZlYXR1cmVzOworCisJCWlmIChmZWF0dXJlcyAhPSAwICYmCisJCSAgICAoZGV2LT5kcml2ZXItPmRyaXZlcl9mZWF0dXJlcyAmIGZlYXR1cmVzKSAhPSBmZWF0dXJlcykKKwkJCWNvbnRpbnVlOworCiAJCWVudCA9IGNyZWF0ZV9wcm9jX2VudHJ5KGRybV9wcm9jX2xpc3RbaV0ubmFtZSwKIAkJCQkJU19JRlJFRyB8IFNfSVJVR08sIG1pbm9yLT5kZXZfcm9vdCk7CiAJCWlmICghZW50KSB7CiAJCQlEUk1fRVJST1IoIkNhbm5vdCBjcmVhdGUgL3Byb2MvZHJpLyVzLyVzXG4iLAogCQkJCSAgbmFtZSwgZHJtX3Byb2NfbGlzdFtpXS5uYW1lKTsKLQkJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspCi0JCQkJcmVtb3ZlX3Byb2NfZW50cnkoZHJtX3Byb2NfbGlzdFtpXS5uYW1lLAotCQkJCQkJICBtaW5vci0+ZGV2X3Jvb3QpOwotCQkJcmVtb3ZlX3Byb2NfZW50cnkobmFtZSwgcm9vdCk7Ci0JCQltaW5vci0+ZGV2X3Jvb3QgPSBOVUxMOwotCQkJcmV0dXJuIC0xOworCQkJcmV0ID0gLTE7CisJCQlnb3RvIGZhaWw7CiAJCX0KIAkJZW50LT5yZWFkX3Byb2MgPSBkcm1fcHJvY19saXN0W2ldLmY7CiAJCWVudC0+ZGF0YSA9IG1pbm9yOwogCX0KIAorCWlmIChkZXYtPmRyaXZlci0+cHJvY19pbml0KSB7CisJCXJldCA9IGRldi0+ZHJpdmVyLT5wcm9jX2luaXQobWlub3IpOworCQlpZiAocmV0KSB7CisJCQlEUk1fRVJST1IoIkRSTTogRHJpdmVyIGZhaWxlZCB0byBpbml0aWFsaXplICIKKwkJCQkgICIvcHJvYy9kcmkuXG4iKTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCX0KKwogCXJldHVybiAwOworIGZhaWw6CisKKwlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQorCQlyZW1vdmVfcHJvY19lbnRyeShkcm1fcHJvY19saXN0W2ldLm5hbWUsCisJCQkJICBtaW5vci0+ZGV2X3Jvb3QpOworCXJlbW92ZV9wcm9jX2VudHJ5KG5hbWUsIHJvb3QpOworCW1pbm9yLT5kZXZfcm9vdCA9IE5VTEw7CisJcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC0xMzMsMTIgKzE2MCwxNiBAQAogICovCiBpbnQgZHJtX3Byb2NfY2xlYW51cChzdHJ1Y3QgZHJtX21pbm9yICptaW5vciwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpyb290KQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OwogCWludCBpOwogCWNoYXIgbmFtZVs2NF07CiAKIAlpZiAoIXJvb3QgfHwgIW1pbm9yLT5kZXZfcm9vdCkKIAkJcmV0dXJuIDA7CiAKKwlpZiAoZGV2LT5kcml2ZXItPnByb2NfY2xlYW51cCkKKwkJZGV2LT5kcml2ZXItPnByb2NfY2xlYW51cChtaW5vcik7CisKIAlmb3IgKGkgPSAwOyBpIDwgRFJNX1BST0NfRU5UUklFUzsgaSsrKQogCQlyZW1vdmVfcHJvY19lbnRyeShkcm1fcHJvY19saXN0W2ldLm5hbWUsIG1pbm9yLT5kZXZfcm9vdCk7CiAJc3ByaW50ZihuYW1lLCAiJWQiLCBtaW5vci0+aW5kZXgpOwpAQCAtNDgwLDYgKzUxMSw4NCBAQAogCXJldHVybiByZXQ7CiB9CiAKK3N0cnVjdCBkcm1fZ2VtX25hbWVfaW5mb19kYXRhIHsKKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBsZW47CisgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgKmJ1ZjsKKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBlb2Y7Cit9OworCitzdGF0aWMgaW50IGRybV9nZW1fb25lX25hbWVfaW5mbyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IHB0cjsKKwlzdHJ1Y3QgZHJtX2dlbV9uYW1lX2luZm9fZGF0YSAgICpuaWQgPSBkYXRhOworCisJRFJNX0lORk8oIm5hbWUgJWQgc2l6ZSAlZFxuIiwgb2JqLT5uYW1lLCBvYmotPnNpemUpOworCWlmIChuaWQtPmVvZikKKwkJcmV0dXJuIDA7CisKKwluaWQtPmxlbiArPSBzcHJpbnRmKCZuaWQtPmJ1ZltuaWQtPmxlbl0sCisJCQkgICAgIiU2ZCU5ZCU4ZCU5ZFxuIiwKKwkJCSAgICBvYmotPm5hbWUsIG9iai0+c2l6ZSwKKwkJCSAgICBhdG9taWNfcmVhZCgmb2JqLT5oYW5kbGVjb3VudC5yZWZjb3VudCksCisJCQkgICAgYXRvbWljX3JlYWQoJm9iai0+cmVmY291bnQucmVmY291bnQpKTsKKwlpZiAobmlkLT5sZW4gPiBEUk1fUFJPQ19MSU1JVCkgeworCQluaWQtPmVvZiA9IDE7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fZ2VtX25hbWVfaW5mbyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAorCQkJICAgICBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCXN0cnVjdCBkcm1fZ2VtX25hbWVfaW5mb19kYXRhIG5pZDsKKworCWlmIChvZmZzZXQgPiBEUk1fUFJPQ19MSU1JVCkgeworCQkqZW9mID0gMTsKKwkJcmV0dXJuIDA7CisJfQorCisJbmlkLmxlbiA9IHNwcmludGYoYnVmLCAiICBuYW1lICAgICBzaXplIGhhbmRsZXMgcmVmY291bnRcbiIpOworCW5pZC5idWYgPSBidWY7CisJbmlkLmVvZiA9IDA7CisJaWRyX2Zvcl9lYWNoKCZkZXYtPm9iamVjdF9uYW1lX2lkciwgZHJtX2dlbV9vbmVfbmFtZV9pbmZvLCAmbmlkKTsKKworCSpzdGFydCA9ICZidWZbb2Zmc2V0XTsKKwkqZW9mID0gMDsKKwlpZiAobmlkLmxlbiA+IHJlcXVlc3QgKyBvZmZzZXQpCisJCXJldHVybiByZXF1ZXN0OworCSplb2YgPSAxOworCXJldHVybiBuaWQubGVuIC0gb2Zmc2V0OworfQorCitzdGF0aWMgaW50IGRybV9nZW1fb2JqZWN0X2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCSAgICAgICBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWludCBsZW4gPSAwOworCisJaWYgKG9mZnNldCA+IERSTV9QUk9DX0xJTUlUKSB7CisJCSplb2YgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwkqc3RhcnQgPSAmYnVmW29mZnNldF07CisJKmVvZiA9IDA7CisJRFJNX1BST0NfUFJJTlQoIiVkIG9iamVjdHNcbiIsIGF0b21pY19yZWFkKCZkZXYtPm9iamVjdF9jb3VudCkpOworCURSTV9QUk9DX1BSSU5UKCIlZCBvYmplY3QgYnl0ZXNcbiIsIGF0b21pY19yZWFkKCZkZXYtPm9iamVjdF9tZW1vcnkpKTsKKwlEUk1fUFJPQ19QUklOVCgiJWQgcGlubmVkXG4iLCBhdG9taWNfcmVhZCgmZGV2LT5waW5fY291bnQpKTsKKwlEUk1fUFJPQ19QUklOVCgiJWQgcGluIGJ5dGVzXG4iLCBhdG9taWNfcmVhZCgmZGV2LT5waW5fbWVtb3J5KSk7CisJRFJNX1BST0NfUFJJTlQoIiVkIGd0dCBieXRlc1xuIiwgYXRvbWljX3JlYWQoJmRldi0+Z3R0X21lbW9yeSkpOworCURSTV9QUk9DX1BSSU5UKCIlZCBndHQgdG90YWxcbiIsIGRldi0+Z3R0X3RvdGFsKTsKKwlpZiAobGVuID4gcmVxdWVzdCArIG9mZnNldCkKKwkJcmV0dXJuIHJlcXVlc3Q7CisJKmVvZiA9IDE7CisJcmV0dXJuIGxlbiAtIG9mZnNldDsKK30KKwogI2lmIERSTV9ERUJVR19DT0RFCiAKIHN0YXRpYyBpbnQgZHJtX192bWFfaW5mbyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgcmVxdWVzdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3R1Yi5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zdHViLmMKaW5kZXggYzJmNTg0Zi4uMTQxZTMzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zdHViLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zdHViLmMKQEAgLTEwNyw3ICsxMDcsNiBAQAogI2lmZGVmIF9fYWxwaGFfXwogCWRldi0+aG9zZSA9IHBkZXYtPnN5c2RhdGE7CiAjZW5kaWYKLQlkZXYtPmlycSA9IHBkZXYtPmlycTsKIAogCWlmIChkcm1faHRfY3JlYXRlKCZkZXYtPm1hcF9oYXNoLCAxMikpIHsKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0xNTIsNiArMTUxLDE1IEBACiAJCWdvdG8gZXJyb3Jfb3V0X3VucmVnOwogCX0KIAorCWlmIChkcml2ZXItPmRyaXZlcl9mZWF0dXJlcyAmIERSSVZFUl9HRU0pIHsKKwkJcmV0Y29kZSA9IGRybV9nZW1faW5pdChkZXYpOworCQlpZiAocmV0Y29kZSkgeworCQkJRFJNX0VSUk9SKCJDYW5ub3QgaW5pdGlhbGl6ZSBncmFwaGljcyBleGVjdXRpb24gIgorCQkJCSAgIm1hbmFnZXIgKEdFTSlcbiIpOworCQkJZ290byBlcnJvcl9vdXRfdW5yZWc7CisJCX0KKwl9CisKIAlyZXR1cm4gMDsKIAogICAgICAgZXJyb3Jfb3V0X3VucmVnOgpAQCAtMzE3LDYgKzMyNSw3IEBACiBpbnQgZHJtX3B1dF9taW5vcihzdHJ1Y3QgZHJtX21pbm9yICoqbWlub3JfcCkKIHsKIAlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9ICptaW5vcl9wOworCiAJRFJNX0RFQlVHKCJyZWxlYXNlIHNlY29uZGFyeSBtaW5vciAlZFxuIiwgbWlub3ItPmluZGV4KTsKIAogCWlmIChtaW5vci0+dHlwZSA9PSBEUk1fTUlOT1JfTEVHQUNZKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeXNmcy5jCmluZGV4IGFmMjExYTAuLjE2MTFiOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lzZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogZXJyX291dF9maWxlczoKIAlpZiAoaSA+IDApCiAJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspCi0JCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJm1pbm9yLT5rZGV2LCAmZGV2aWNlX2F0dHJzW2ldKTsKKwkJCWRldmljZV9yZW1vdmVfZmlsZSgmbWlub3ItPmtkZXYsICZkZXZpY2VfYXR0cnNbal0pOwogCWRldmljZV91bnJlZ2lzdGVyKCZtaW5vci0+a2Rldik7CiBlcnJfb3V0OgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGE5ZTYwNDYuLjViYTc4ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0zLDcgKzMsMTIgQEAKICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuCiAKIGNjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCi1pOTE1LXkgOj0gaTkxNV9kcnYubyBpOTE1X2RtYS5vIGk5MTVfaXJxLm8gaTkxNV9tZW0ubworaTkxNS15IDo9IGk5MTVfZHJ2Lm8gaTkxNV9kbWEubyBpOTE1X2lycS5vIGk5MTVfbWVtLm8gaTkxNV9vcHJlZ2lvbi5vIFwKKyAgICAgICAgICBpOTE1X3N1c3BlbmQubyBcCisJICBpOTE1X2dlbS5vIFwKKwkgIGk5MTVfZ2VtX2RlYnVnLm8gXAorCSAgaTkxNV9nZW1fcHJvYy5vIFwKKwkgIGk5MTVfZ2VtX3RpbGluZy5vCiAKIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCA5YWM0NzIwLi5kYjM0NzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTQwLDQwICs0MCw5NiBAQAogewogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWRybV9pOTE1X3JpbmdfYnVmZmVyX3QgKnJpbmcgPSAmKGRldl9wcml2LT5yaW5nKTsKLQl1MzIgbGFzdF9oZWFkID0gSTkxNV9SRUFEKExQX1JJTkcgKyBSSU5HX0hFQUQpICYgSEVBRF9BRERSOworCXUzMiBhY3RoZF9yZWcgPSBJU19JOTY1RyhkZXYpID8gQUNUSERfSTk2NSA6IEFDVEhEOworCXUzMiBsYXN0X2FjdGhkID0gSTkxNV9SRUFEKGFjdGhkX3JlZyk7CisJdTMyIGFjdGhkOworCXUzMiBsYXN0X2hlYWQgPSBJOTE1X1JFQUQoUFJCMF9IRUFEKSAmIEhFQURfQUREUjsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0JCXJpbmctPmhlYWQgPSBJOTE1X1JFQUQoTFBfUklORyArIFJJTkdfSEVBRCkgJiBIRUFEX0FERFI7CisJZm9yIChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisJCXJpbmctPmhlYWQgPSBJOTE1X1JFQUQoUFJCMF9IRUFEKSAmIEhFQURfQUREUjsKKwkJYWN0aGQgPSBJOTE1X1JFQUQoYWN0aGRfcmVnKTsKIAkJcmluZy0+c3BhY2UgPSByaW5nLT5oZWFkIC0gKHJpbmctPnRhaWwgKyA4KTsKIAkJaWYgKHJpbmctPnNwYWNlIDwgMCkKIAkJCXJpbmctPnNwYWNlICs9IHJpbmctPlNpemU7CiAJCWlmIChyaW5nLT5zcGFjZSA+PSBuKQogCQkJcmV0dXJuIDA7CiAKLQkJZGV2X3ByaXYtPnNhcmVhX3ByaXYtPnBlcmZfYm94ZXMgfD0gSTkxNV9CT1hfV0FJVDsKKwkJaWYgKGRldl9wcml2LT5zYXJlYV9wcml2KQorCQkJZGV2X3ByaXYtPnNhcmVhX3ByaXYtPnBlcmZfYm94ZXMgfD0gSTkxNV9CT1hfV0FJVDsKIAogCQlpZiAocmluZy0+aGVhZCAhPSBsYXN0X2hlYWQpCiAJCQlpID0gMDsKKwkJaWYgKGFjdGhkICE9IGxhc3RfYWN0aGQpCisJCQlpID0gMDsKIAogCQlsYXN0X2hlYWQgPSByaW5nLT5oZWFkOworCQlsYXN0X2FjdGhkID0gYWN0aGQ7CisJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDEwKTsKKwogCX0KIAogCXJldHVybiAtRUJVU1k7CiB9CiAKKy8qKgorICogU2V0cyB1cCB0aGUgaGFyZHdhcmUgc3RhdHVzIHBhZ2UgZm9yIGRldmljZXMgdGhhdCBuZWVkIGEgcGh5c2ljYWwgYWRkcmVzcworICogaW4gdGhlIHJlZ2lzdGVyLgorICovCitzdGF0aWMgaW50IGk5MTVfaW5pdF9waHlzX2h3cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCS8qIFByb2dyYW0gSGFyZHdhcmUgU3RhdHVzIFBhZ2UgKi8KKwlkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCA9CisJCWRybV9wY2lfYWxsb2MoZGV2LCBQQUdFX1NJWkUsIFBBR0VfU0laRSwgMHhmZmZmZmZmZik7CisKKwlpZiAoIWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoKSB7CisJCURSTV9FUlJPUigiQ2FuIG5vdCBhbGxvY2F0ZSBoYXJkd2FyZSBzdGF0dXMgcGFnZVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UgPSBkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+dmFkZHI7CisJZGV2X3ByaXYtPmRtYV9zdGF0dXNfcGFnZSA9IGRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoLT5idXNhZGRyOworCisJbWVtc2V0KGRldl9wcml2LT5od19zdGF0dXNfcGFnZSwgMCwgUEFHRV9TSVpFKTsKKworCUk5MTVfV1JJVEUoSFdTX1BHQSwgZGV2X3ByaXYtPmRtYV9zdGF0dXNfcGFnZSk7CisJRFJNX0RFQlVHKCJFbmFibGVkIGhhcmR3YXJlIHN0YXR1cyBwYWdlXG4iKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBGcmVlcyB0aGUgaGFyZHdhcmUgc3RhdHVzIHBhZ2UsIHdoZXRoZXIgaXQncyBhIHBoeXNpY2FsIGFkZHJlc3Mgb3IgYSB2aXJ0dWFsCisgKiBhZGRyZXNzIHNldCB1cCBieSB0aGUgWCBTZXJ2ZXIuCisgKi8KK3N0YXRpYyB2b2lkIGk5MTVfZnJlZV9od3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpZiAoZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpIHsKKwkJZHJtX3BjaV9mcmVlKGRldiwgZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpOworCQlkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCA9IE5VTEw7CisJfQorCisJaWYgKGRldl9wcml2LT5zdGF0dXNfZ2Z4X2FkZHIpIHsKKwkJZGV2X3ByaXYtPnN0YXR1c19nZnhfYWRkciA9IDA7CisJCWRybV9jb3JlX2lvcmVtYXBmcmVlKCZkZXZfcHJpdi0+aHdzX21hcCwgZGV2KTsKKwl9CisKKwkvKiBOZWVkIHRvIHJld3JpdGUgaGFyZHdhcmUgc3RhdHVzIHBhZ2UgKi8KKwlJOTE1X1dSSVRFKEhXU19QR0EsIDB4MWZmZmYwMDApOworfQorCiB2b2lkIGk5MTVfa2VybmVsX2xvc3RfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKIHsKIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlkcm1faTkxNV9yaW5nX2J1ZmZlcl90ICpyaW5nID0gJihkZXZfcHJpdi0+cmluZyk7CiAKLQlyaW5nLT5oZWFkID0gSTkxNV9SRUFEKExQX1JJTkcgKyBSSU5HX0hFQUQpICYgSEVBRF9BRERSOwotCXJpbmctPnRhaWwgPSBJOTE1X1JFQUQoTFBfUklORyArIFJJTkdfVEFJTCkgJiBUQUlMX0FERFI7CisJcmluZy0+aGVhZCA9IEk5MTVfUkVBRChQUkIwX0hFQUQpICYgSEVBRF9BRERSOworCXJpbmctPnRhaWwgPSBJOTE1X1JFQUQoUFJCMF9UQUlMKSAmIFRBSUxfQUREUjsKIAlyaW5nLT5zcGFjZSA9IHJpbmctPmhlYWQgLSAocmluZy0+dGFpbCArIDgpOwogCWlmIChyaW5nLT5zcGFjZSA8IDApCiAJCXJpbmctPnNwYWNlICs9IHJpbmctPlNpemU7CiAKLQlpZiAocmluZy0+aGVhZCA9PSByaW5nLT50YWlsKQorCWlmIChyaW5nLT5oZWFkID09IHJpbmctPnRhaWwgJiYgZGV2X3ByaXYtPnNhcmVhX3ByaXYpCiAJCWRldl9wcml2LT5zYXJlYV9wcml2LT5wZXJmX2JveGVzIHw9IEk5MTVfQk9YX1JJTkdfRU1QVFk7CiB9CiAKQEAgLTg0LDI4ICsxNDAsMTkgQEAKIAkgKiBtYXkgbm90IGhhdmUgYmVlbiBjYWxsZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIGFmdGVyIGRldl9wcml2YXRlCiAJICogaXMgZnJlZWQsIGl0J3MgdG9vIGxhdGUuCiAJICovCi0JaWYgKGRldi0+aXJxKQorCWlmIChkZXYtPmlycV9lbmFibGVkKQogCQlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCiAJaWYgKGRldl9wcml2LT5yaW5nLnZpcnR1YWxfc3RhcnQpIHsKIAkJZHJtX2NvcmVfaW9yZW1hcGZyZWUoJmRldl9wcml2LT5yaW5nLm1hcCwgZGV2KTsKLQkJZGV2X3ByaXYtPnJpbmcudmlydHVhbF9zdGFydCA9IDA7Ci0JCWRldl9wcml2LT5yaW5nLm1hcC5oYW5kbGUgPSAwOworCQlkZXZfcHJpdi0+cmluZy52aXJ0dWFsX3N0YXJ0ID0gTlVMTDsKKwkJZGV2X3ByaXYtPnJpbmcubWFwLmhhbmRsZSA9IE5VTEw7CiAJCWRldl9wcml2LT5yaW5nLm1hcC5zaXplID0gMDsKIAl9CiAKLQlpZiAoZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpIHsKLQkJZHJtX3BjaV9mcmVlKGRldiwgZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpOwotCQlkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCA9IE5VTEw7Ci0JCS8qIE5lZWQgdG8gcmV3cml0ZSBoYXJkd2FyZSBzdGF0dXMgcGFnZSAqLwotCQlJOTE1X1dSSVRFKDB4MDIwODAsIDB4MWZmZmYwMDApOwotCX0KLQotCWlmIChkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKSB7Ci0JCWRldl9wcml2LT5zdGF0dXNfZ2Z4X2FkZHIgPSAwOwotCQlkcm1fY29yZV9pb3JlbWFwZnJlZSgmZGV2X3ByaXYtPmh3c19tYXAsIGRldik7Ci0JCUk5MTVfV1JJVEUoMHgyMDgwLCAweDFmZmZmMDAwKTsKLQl9CisJLyogQ2xlYXIgdGhlIEhXUyB2aXJ0dWFsIGFkZHJlc3MgYXQgdGVhcmRvd24gKi8KKwlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZGV2KSkKKwkJaTkxNV9mcmVlX2h3cyhkZXYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMjEsMzQgKzE2OCwzNCBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlkZXZfcHJpdi0+bW1pb19tYXAgPSBkcm1fY29yZV9maW5kbWFwKGRldiwgaW5pdC0+bW1pb19vZmZzZXQpOwotCWlmICghZGV2X3ByaXYtPm1taW9fbWFwKSB7Ci0JCWk5MTVfZG1hX2NsZWFudXAoZGV2KTsKLQkJRFJNX0VSUk9SKCJjYW4gbm90IGZpbmQgbW1pbyBtYXAhXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCiAJZGV2X3ByaXYtPnNhcmVhX3ByaXYgPSAoZHJtX2k5MTVfc2FyZWFfdCAqKQogCSAgICAoKHU4ICopIGRldl9wcml2LT5zYXJlYS0+aGFuZGxlICsgaW5pdC0+c2FyZWFfcHJpdl9vZmZzZXQpOwogCi0JZGV2X3ByaXYtPnJpbmcuU3RhcnQgPSBpbml0LT5yaW5nX3N0YXJ0OwotCWRldl9wcml2LT5yaW5nLkVuZCA9IGluaXQtPnJpbmdfZW5kOwotCWRldl9wcml2LT5yaW5nLlNpemUgPSBpbml0LT5yaW5nX3NpemU7Ci0JZGV2X3ByaXYtPnJpbmcudGFpbF9tYXNrID0gZGV2X3ByaXYtPnJpbmcuU2l6ZSAtIDE7CisJaWYgKGluaXQtPnJpbmdfc2l6ZSAhPSAwKSB7CisJCWlmIChkZXZfcHJpdi0+cmluZy5yaW5nX29iaiAhPSBOVUxMKSB7CisJCQlpOTE1X2RtYV9jbGVhbnVwKGRldik7CisJCQlEUk1fRVJST1IoIkNsaWVudCB0cmllZCB0byBpbml0aWFsaXplIHJpbmdidWZmZXIgaW4gIgorCQkJCSAgIkdFTSBtb2RlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CiAKLQlkZXZfcHJpdi0+cmluZy5tYXAub2Zmc2V0ID0gaW5pdC0+cmluZ19zdGFydDsKLQlkZXZfcHJpdi0+cmluZy5tYXAuc2l6ZSA9IGluaXQtPnJpbmdfc2l6ZTsKLQlkZXZfcHJpdi0+cmluZy5tYXAudHlwZSA9IDA7Ci0JZGV2X3ByaXYtPnJpbmcubWFwLmZsYWdzID0gMDsKLQlkZXZfcHJpdi0+cmluZy5tYXAubXRyciA9IDA7CisJCWRldl9wcml2LT5yaW5nLlNpemUgPSBpbml0LT5yaW5nX3NpemU7CisJCWRldl9wcml2LT5yaW5nLnRhaWxfbWFzayA9IGRldl9wcml2LT5yaW5nLlNpemUgLSAxOwogCi0JZHJtX2NvcmVfaW9yZW1hcCgmZGV2X3ByaXYtPnJpbmcubWFwLCBkZXYpOworCQlkZXZfcHJpdi0+cmluZy5tYXAub2Zmc2V0ID0gaW5pdC0+cmluZ19zdGFydDsKKwkJZGV2X3ByaXYtPnJpbmcubWFwLnNpemUgPSBpbml0LT5yaW5nX3NpemU7CisJCWRldl9wcml2LT5yaW5nLm1hcC50eXBlID0gMDsKKwkJZGV2X3ByaXYtPnJpbmcubWFwLmZsYWdzID0gMDsKKwkJZGV2X3ByaXYtPnJpbmcubWFwLm10cnIgPSAwOwogCi0JaWYgKGRldl9wcml2LT5yaW5nLm1hcC5oYW5kbGUgPT0gTlVMTCkgewotCQlpOTE1X2RtYV9jbGVhbnVwKGRldik7Ci0JCURSTV9FUlJPUigiY2FuIG5vdCBpb3JlbWFwIHZpcnR1YWwgYWRkcmVzcyBmb3IiCi0JCQkgICIgcmluZyBidWZmZXJcbiIpOwotCQlyZXR1cm4gLUVOT01FTTsKKwkJZHJtX2NvcmVfaW9yZW1hcCgmZGV2X3ByaXYtPnJpbmcubWFwLCBkZXYpOworCisJCWlmIChkZXZfcHJpdi0+cmluZy5tYXAuaGFuZGxlID09IE5VTEwpIHsKKwkJCWk5MTVfZG1hX2NsZWFudXAoZGV2KTsKKwkJCURSTV9FUlJPUigiY2FuIG5vdCBpb3JlbWFwIHZpcnR1YWwgYWRkcmVzcyBmb3IiCisJCQkJICAiIHJpbmcgYnVmZmVyXG4iKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CiAJfQogCiAJZGV2X3ByaXYtPnJpbmcudmlydHVhbF9zdGFydCA9IGRldl9wcml2LT5yaW5nLm1hcC5oYW5kbGU7CkBAIC0xNTksMzQgKzIwNiwxMCBAQAogCWRldl9wcml2LT5jdXJyZW50X3BhZ2UgPSAwOwogCWRldl9wcml2LT5zYXJlYV9wcml2LT5wZl9jdXJyZW50X3BhZ2UgPSBkZXZfcHJpdi0+Y3VycmVudF9wYWdlOwogCi0JLyogV2UgYXJlIHVzaW5nIHNlcGFyYXRlIHZhbHVlcyBhcyBwbGFjZWhvbGRlcnMgZm9yIG1lY2hhbmlzbXMgZm9yCi0JICogcHJpdmF0ZSBiYWNrYnVmZmVyL2RlcHRoYnVmZmVyIHVzYWdlLgotCSAqLwotCWRldl9wcml2LT51c2VfbWlfYmF0Y2hidWZmZXJfc3RhcnQgPSAwOwotCWlmIChJU19JOTY1RyhkZXYpKSAvKiA5NjUgZG9lc24ndCBzdXBwb3J0IG9sZGVyIG1ldGhvZCAqLwotCQlkZXZfcHJpdi0+dXNlX21pX2JhdGNoYnVmZmVyX3N0YXJ0ID0gMTsKLQogCS8qIEFsbG93IGhhcmR3YXJlIGJhdGNoYnVmZmVycyB1bmxlc3MgdG9sZCBvdGhlcndpc2UuCiAJICovCiAJZGV2X3ByaXYtPmFsbG93X2JhdGNoYnVmZmVyID0gMTsKIAotCS8qIFByb2dyYW0gSGFyZHdhcmUgU3RhdHVzIFBhZ2UgKi8KLQlpZiAoIUk5MTVfTkVFRF9HRlhfSFdTKGRldikpIHsKLQkJZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWggPQotCQkJZHJtX3BjaV9hbGxvYyhkZXYsIFBBR0VfU0laRSwgUEFHRV9TSVpFLCAweGZmZmZmZmZmKTsKLQotCQlpZiAoIWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoKSB7Ci0JCQlpOTE1X2RtYV9jbGVhbnVwKGRldik7Ci0JCQlEUk1fRVJST1IoIkNhbiBub3QgYWxsb2NhdGUgaGFyZHdhcmUgc3RhdHVzIHBhZ2VcbiIpOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0KLQkJZGV2X3ByaXYtPmh3X3N0YXR1c19wYWdlID0gZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgtPnZhZGRyOwotCQlkZXZfcHJpdi0+ZG1hX3N0YXR1c19wYWdlID0gZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgtPmJ1c2FkZHI7Ci0KLQkJbWVtc2V0KGRldl9wcml2LT5od19zdGF0dXNfcGFnZSwgMCwgUEFHRV9TSVpFKTsKLQkJSTkxNV9XUklURSgweDAyMDgwLCBkZXZfcHJpdi0+ZG1hX3N0YXR1c19wYWdlKTsKLQl9Ci0JRFJNX0RFQlVHKCJFbmFibGVkIGhhcmR3YXJlIHN0YXR1cyBwYWdlXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjAxLDExICsyMjQsNiBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoIWRldl9wcml2LT5tbWlvX21hcCkgewotCQlEUk1fRVJST1IoImNhbiBub3QgZmluZCBtbWlvIG1hcCFcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KIAlpZiAoZGV2X3ByaXYtPnJpbmcubWFwLmhhbmRsZSA9PSBOVUxMKSB7CiAJCURSTV9FUlJPUigiY2FuIG5vdCBpb3JlbWFwIHZpcnR1YWwgYWRkcmVzcyBmb3IiCiAJCQkgICIgcmluZyBidWZmZXJcbiIpOwpAQCAtMjIwLDkgKzIzOCw5IEBACiAJRFJNX0RFQlVHKCJodyBzdGF0dXMgcGFnZSBAICVwXG4iLCBkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UpOwogCiAJaWYgKGRldl9wcml2LT5zdGF0dXNfZ2Z4X2FkZHIgIT0gMCkKLQkJSTkxNV9XUklURSgweDAyMDgwLCBkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKKwkJSTkxNV9XUklURShIV1NfUEdBLCBkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKIAllbHNlCi0JCUk5MTVfV1JJVEUoMHgwMjA4MCwgZGV2X3ByaXYtPmRtYV9zdGF0dXNfcGFnZSk7CisJCUk5MTVfV1JJVEUoSFdTX1BHQSwgZGV2X3ByaXYtPmRtYV9zdGF0dXNfcGFnZSk7CiAJRFJNX0RFQlVHKCJFbmFibGVkIGhhcmR3YXJlIHN0YXR1cyBwYWdlXG4iKTsKIAogCXJldHVybiAwOwpAQCAtMzY3LDkgKzM4NSwxMCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGk5MTVfZW1pdF9ib3goc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsCi0JCQkgc3RydWN0IGRybV9jbGlwX3JlY3QgX191c2VyICogYm94ZXMsCi0JCQkgaW50IGksIGludCBEUjEsIGludCBEUjQpCitpbnQKK2k5MTVfZW1pdF9ib3goc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkgICAgICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCBfX3VzZXIgKmJveGVzLAorCSAgICAgIGludCBpLCBpbnQgRFIxLCBpbnQgRFI0KQogewogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fY2xpcF9yZWN0IGJveDsKQEAgLTQxNSwxNCArNDM0LDE1IEBACiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJUklOR19MT0NBTFM7CiAKLQlkZXZfcHJpdi0+c2FyZWFfcHJpdi0+bGFzdF9lbnF1ZXVlID0gKytkZXZfcHJpdi0+Y291bnRlcjsKLQorCWRldl9wcml2LT5jb3VudGVyKys7CiAJaWYgKGRldl9wcml2LT5jb3VudGVyID4gMHg3RkZGRkZGRlVMKQotCQlkZXZfcHJpdi0+c2FyZWFfcHJpdi0+bGFzdF9lbnF1ZXVlID0gZGV2X3ByaXYtPmNvdW50ZXIgPSAxOworCQlkZXZfcHJpdi0+Y291bnRlciA9IDA7CisJaWYgKGRldl9wcml2LT5zYXJlYV9wcml2KQorCQlkZXZfcHJpdi0+c2FyZWFfcHJpdi0+bGFzdF9lbnF1ZXVlID0gZGV2X3ByaXYtPmNvdW50ZXI7CiAKIAlCRUdJTl9MUF9SSU5HKDQpOwotCU9VVF9SSU5HKENNRF9TVE9SRV9EV09SRF9JRFgpOwotCU9VVF9SSU5HKDIwKTsKKwlPVVRfUklORyhNSV9TVE9SRV9EV09SRF9JTkRFWCk7CisJT1VUX1JJTkcoNSA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCk7CiAJT1VUX1JJTkcoZGV2X3ByaXYtPmNvdW50ZXIpOwogCU9VVF9SSU5HKDApOwogCUFEVkFOQ0VfTFBfUklORygpOwpAQCAtNDg2LDcgKzUwNiw3IEBACiAJCQkJcmV0dXJuIHJldDsKIAkJfQogCi0JCWlmIChkZXZfcHJpdi0+dXNlX21pX2JhdGNoYnVmZmVyX3N0YXJ0KSB7CisJCWlmICghSVNfSTgzMChkZXYpICYmICFJU184NDVHKGRldikpIHsKIAkJCUJFR0lOX0xQX1JJTkcoMik7CiAJCQlpZiAoSVNfSTk2NUcoZGV2KSkgewogCQkJCU9VVF9SSU5HKE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8ICgyIDw8IDYpIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKQEAgLTUxNiw2ICs1MzYsOSBAQAogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCVJJTkdfTE9DQUxTOwogCisJaWYgKCFkZXZfcHJpdi0+c2FyZWFfcHJpdikKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlEUk1fREVCVUcoIiVzOiBwYWdlPSVkIHBmQ3VycmVudFBhZ2U9JWRcbiIsCiAJCSAgX19mdW5jX18sCiAJCSAgZGV2X3ByaXYtPmN1cnJlbnRfcGFnZSwKQEAgLTUyNCw3ICs1NDcsNyBAQAogCWk5MTVfa2VybmVsX2xvc3RfY29udGV4dChkZXYpOwogCiAJQkVHSU5fTFBfUklORygyKTsKLQlPVVRfUklORyhJTlNUX1BBUlNFUl9DTElFTlQgfCBJTlNUX09QX0ZMVVNIIHwgSU5TVF9GTFVTSF9NQVBfQ0FDSEUpOworCU9VVF9SSU5HKE1JX0ZMVVNIIHwgTUlfUkVBRF9GTFVTSCk7CiAJT1VUX1JJTkcoMCk7CiAJQURWQU5DRV9MUF9SSU5HKCk7CiAKQEAgLTU0OSw4ICs1NzIsOCBAQAogCWRldl9wcml2LT5zYXJlYV9wcml2LT5sYXN0X2VucXVldWUgPSBkZXZfcHJpdi0+Y291bnRlcisrOwogCiAJQkVHSU5fTFBfUklORyg0KTsKLQlPVVRfUklORyhDTURfU1RPUkVfRFdPUkRfSURYKTsKLQlPVVRfUklORygyMCk7CisJT1VUX1JJTkcoTUlfU1RPUkVfRFdPUkRfSU5ERVgpOworCU9VVF9SSU5HKDUgPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwogCU9VVF9SSU5HKGRldl9wcml2LT5jb3VudGVyKTsKIAlPVVRfUklORygwKTsKIAlBRFZBTkNFX0xQX1JJTkcoKTsKQEAgLTU3MCw5ICs1OTMsMTUgQEAKIHN0YXRpYyBpbnQgaTkxNV9mbHVzaF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewotCUxPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdik7CisJaW50IHJldDsKIAotCXJldHVybiBpOTE1X3F1aWVzY2VudChkZXYpOworCVJJTkdfTE9DS19URVNUX1dJVEhfUkVUVVJOKGRldiwgZmlsZV9wcml2KTsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X3F1aWVzY2VudChkZXYpOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBpOTE1X2JhdGNoYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCkBAIC01OTMsMTYgKzYyMiwxOSBAQAogCURSTV9ERUJVRygiaTkxNSBiYXRjaGJ1ZmZlciwgc3RhcnQgJXggdXNlZCAlZCBjbGlwcmVjdHMgJWRcbiIsCiAJCSAgYmF0Y2gtPnN0YXJ0LCBiYXRjaC0+dXNlZCwgYmF0Y2gtPm51bV9jbGlwcmVjdHMpOwogCi0JTE9DS19URVNUX1dJVEhfUkVUVVJOKGRldiwgZmlsZV9wcml2KTsKKwlSSU5HX0xPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdik7CiAKIAlpZiAoYmF0Y2gtPm51bV9jbGlwcmVjdHMgJiYgRFJNX1ZFUklGWUFSRUFfUkVBRChiYXRjaC0+Y2xpcHJlY3RzLAogCQkJCQkJICAgICAgIGJhdGNoLT5udW1fY2xpcHJlY3RzICoKIAkJCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IGRybV9jbGlwX3JlY3QpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmV0ID0gaTkxNV9kaXNwYXRjaF9iYXRjaGJ1ZmZlcihkZXYsIGJhdGNoKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAotCXNhcmVhX3ByaXYtPmxhc3RfZGlzcGF0Y2ggPSAoaW50KWh3X3N0YXR1c1s1XTsKKwlpZiAoc2FyZWFfcHJpdikKKwkJc2FyZWFfcHJpdi0+bGFzdF9kaXNwYXRjaCA9IChpbnQpaHdfc3RhdHVzWzVdOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTYxOSw3ICs2NTEsNyBAQAogCURSTV9ERUJVRygiaTkxNSBjbWRidWZmZXIsIGJ1ZiAlcCBzeiAlZCBjbGlwcmVjdHMgJWRcbiIsCiAJCSAgY21kYnVmLT5idWYsIGNtZGJ1Zi0+c3osIGNtZGJ1Zi0+bnVtX2NsaXByZWN0cyk7CiAKLQlMT0NLX1RFU1RfV0lUSF9SRVRVUk4oZGV2LCBmaWxlX3ByaXYpOworCVJJTkdfTE9DS19URVNUX1dJVEhfUkVUVVJOKGRldiwgZmlsZV9wcml2KTsKIAogCWlmIChjbWRidWYtPm51bV9jbGlwcmVjdHMgJiYKIAkgICAgRFJNX1ZFUklGWUFSRUFfUkVBRChjbWRidWYtPmNsaXByZWN0cywKQEAgLTYyOSwyNCArNjYxLDMzIEBACiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAorCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlyZXQgPSBpOTE1X2Rpc3BhdGNoX2NtZGJ1ZmZlcihkZXYsIGNtZGJ1Zik7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoImk5MTVfZGlzcGF0Y2hfY21kYnVmZmVyIGZhaWxlZFxuIik7CiAJCXJldHVybiByZXQ7CiAJfQogCi0Jc2FyZWFfcHJpdi0+bGFzdF9kaXNwYXRjaCA9IChpbnQpaHdfc3RhdHVzWzVdOworCWlmIChzYXJlYV9wcml2KQorCQlzYXJlYV9wcml2LT5sYXN0X2Rpc3BhdGNoID0gKGludClod19zdGF0dXNbNV07CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9mbGlwX2J1ZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CisJaW50IHJldDsKKwogCURSTV9ERUJVRygiJXNcbiIsIF9fZnVuY19fKTsKIAotCUxPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdik7CisJUklOR19MT0NLX1RFU1RfV0lUSF9SRVRVUk4oZGV2LCBmaWxlX3ByaXYpOwogCi0JcmV0dXJuIGk5MTVfZGlzcGF0Y2hfZmxpcChkZXYpOworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X2Rpc3BhdGNoX2ZsaXAoZGV2KTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLApAQCAtNjYzLDcgKzcwNCw3IEBACiAKIAlzd2l0Y2ggKHBhcmFtLT5wYXJhbSkgewogCWNhc2UgSTkxNV9QQVJBTV9JUlFfQUNUSVZFOgotCQl2YWx1ZSA9IGRldi0+aXJxID8gMSA6IDA7CisJCXZhbHVlID0gZGV2LT5wZGV2LT5pcnEgPyAxIDogMDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X1BBUkFNX0FMTE9XX0JBVENIQlVGRkVSOgogCQl2YWx1ZSA9IGRldl9wcml2LT5hbGxvd19iYXRjaGJ1ZmZlciA/IDEgOiAwOwpAQCAtNjcxLDYgKzcxMiwxMiBAQAogCWNhc2UgSTkxNV9QQVJBTV9MQVNUX0RJU1BBVENIOgogCQl2YWx1ZSA9IFJFQURfQlJFQURDUlVNQihkZXZfcHJpdik7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9QQVJBTV9DSElQU0VUX0lEOgorCQl2YWx1ZSA9IGRldi0+cGNpX2RldmljZTsKKwkJYnJlYWs7CisJY2FzZSBJOTE1X1BBUkFNX0hBU19HRU06CisJCXZhbHVlID0gMTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJRFJNX0VSUk9SKCJVbmtub3duIHBhcmFtZXRlciAlZFxuIiwgcGFyYW0tPnBhcmFtKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC02OTcsOCArNzQ0LDYgQEAKIAogCXN3aXRjaCAocGFyYW0tPnBhcmFtKSB7CiAJY2FzZSBJOTE1X1NFVFBBUkFNX1VTRV9NSV9CQVRDSEJVRkZFUl9TVEFSVDoKLQkJaWYgKCFJU19JOTY1RyhkZXYpKQotCQkJZGV2X3ByaXYtPnVzZV9taV9iYXRjaGJ1ZmZlcl9zdGFydCA9IHBhcmFtLT52YWx1ZTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X1NFVFBBUkFNX1RFWF9MUlVfTE9HX0dSQU5VTEFSSVRZOgogCQlkZXZfcHJpdi0+dGV4X2xydV9sb2dfZ3JhbnVsYXJpdHkgPSBwYXJhbS0+dmFsdWU7CkBAIC03NDksOCArNzk0LDggQEAKIAlkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UgPSBkZXZfcHJpdi0+aHdzX21hcC5oYW5kbGU7CiAKIAltZW1zZXQoZGV2X3ByaXYtPmh3X3N0YXR1c19wYWdlLCAwLCBQQUdFX1NJWkUpOwotCUk5MTVfV1JJVEUoMHgwMjA4MCwgZGV2X3ByaXYtPnN0YXR1c19nZnhfYWRkcik7Ci0JRFJNX0RFQlVHKCJsb2FkIGh3cyAweDIwODAgd2l0aCBnZnggbWVtIDB4JXhcbiIsCisJSTkxNV9XUklURShIV1NfUEdBLCBkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKKwlEUk1fREVCVUcoImxvYWQgaHdzIEhXU19QR0Egd2l0aCBnZnggbWVtIDB4JXhcbiIsCiAJCQlkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKIAlEUk1fREVCVUcoImxvYWQgaHdzIGF0ICVwXG4iLCBkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UpOwogCXJldHVybiAwOwpAQCAtNzc2LDE0ICs4MjEsMzggQEAKIAltZW1zZXQoZGV2X3ByaXYsIDAsIHNpemVvZihkcm1faTkxNV9wcml2YXRlX3QpKTsKIAogCWRldi0+ZGV2X3ByaXZhdGUgPSAodm9pZCAqKWRldl9wcml2OworCWRldl9wcml2LT5kZXYgPSBkZXY7CiAKIAkvKiBBZGQgcmVnaXN0ZXIgbWFwIChuZWVkZWQgZm9yIHN1c3BlbmQvcmVzdW1lKSAqLwogCWJhc2UgPSBkcm1fZ2V0X3Jlc291cmNlX3N0YXJ0KGRldiwgbW1pb19iYXIpOwogCXNpemUgPSBkcm1fZ2V0X3Jlc291cmNlX2xlbihkZXYsIG1taW9fYmFyKTsKIAotCXJldCA9IGRybV9hZGRtYXAoZGV2LCBiYXNlLCBzaXplLCBfRFJNX1JFR0lTVEVSUywKLQkJCSBfRFJNX0tFUk5FTCB8IF9EUk1fRFJJVkVSLAotCQkJICZkZXZfcHJpdi0+bW1pb19tYXApOworCWRldl9wcml2LT5yZWdzID0gaW9yZW1hcChiYXNlLCBzaXplKTsKKworCWk5MTVfZ2VtX2xvYWQoZGV2KTsKKworCS8qIEluaXQgSFdTICovCisJaWYgKCFJOTE1X05FRURfR0ZYX0hXUyhkZXYpKSB7CisJCXJldCA9IGk5MTVfaW5pdF9waHlzX2h3cyhkZXYpOworCQlpZiAocmV0ICE9IDApCisJCQlyZXR1cm4gcmV0OworCX0KKworCS8qIE9uIHRoZSA5NDVHL0dNLCB0aGUgY2hpcHNldCByZXBvcnRzIHRoZSBNU0kgY2FwYWJpbGl0eSBvbiB0aGUKKwkgKiBpbnRlZ3JhdGVkIGdyYXBoaWNzIGV2ZW4gdGhvdWdoIHRoZSBzdXBwb3J0IGlzbid0IGFjdHVhbGx5IHRoZXJlCisJICogYWNjb3JkaW5nIHRvIHRoZSBwdWJsaXNoZWQgc3BlY3MuICBJdCBkb2Vzbid0IGFwcGVhciB0byBmdW5jdGlvbgorCSAqIGNvcnJlY3RseSBpbiB0ZXN0aW5nIG9uIDk0NUcuCisJICogVGhpcyBtYXkgYmUgYSBzaWRlIGVmZmVjdCBvZiBNU0kgaGF2aW5nIGJlZW4gbWFkZSBhdmFpbGFibGUgZm9yIFBFRworCSAqIGFuZCB0aGUgcmVnaXN0ZXJzIGJlaW5nIGNsb3NlbHkgYXNzb2NpYXRlZC4KKwkgKi8KKwlpZiAoIUlTX0k5NDVHKGRldikgJiYgIUlTX0k5NDVHTShkZXYpKQorCQlpZiAocGNpX2VuYWJsZV9tc2koZGV2LT5wZGV2KSkKKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSBNU0lcbiIpOworCisJaW50ZWxfb3ByZWdpb25faW5pdChkZXYpOworCisJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT51c2VyX2lycV9sb2NrKTsKKwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTc5MSw4ICs4NjAsMTUgQEAKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JaWYgKGRldl9wcml2LT5tbWlvX21hcCkKLQkJZHJtX3JtbWFwKGRldiwgZGV2X3ByaXYtPm1taW9fbWFwKTsKKwlpZiAoZGV2LT5wZGV2LT5tc2lfZW5hYmxlZCkKKwkJcGNpX2Rpc2FibGVfbXNpKGRldi0+cGRldik7CisKKwlpOTE1X2ZyZWVfaHdzKGRldik7CisKKwlpZiAoZGV2X3ByaXYtPnJlZ3MgIT0gTlVMTCkKKwkJaW91bm1hcChkZXZfcHJpdi0+cmVncyk7CisKKwlpbnRlbF9vcHJlZ2lvbl9mcmVlKGRldik7CiAKIAlkcm1fZnJlZShkZXYtPmRldl9wcml2YXRlLCBzaXplb2YoZHJtX2k5MTVfcHJpdmF0ZV90KSwKIAkJIERSTV9NRU1fRFJJVkVSKTsKQEAgLTgwMCw2ICs4NzYsMjUgQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IGk5MTVfZHJpdmVyX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqaTkxNV9maWxlX3ByaXY7CisKKwlEUk1fREVCVUcoIlxuIik7CisJaTkxNV9maWxlX3ByaXYgPSAoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqKQorCSAgICBkcm1fYWxsb2Moc2l6ZW9mKCppOTE1X2ZpbGVfcHJpdiksIERSTV9NRU1fRklMRVMpOworCisJaWYgKCFpOTE1X2ZpbGVfcHJpdikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmaWxlX3ByaXYtPmRyaXZlcl9wcml2ID0gaTkxNV9maWxlX3ByaXY7CisKKwlpOTE1X2ZpbGVfcHJpdi0+bW0ubGFzdF9nZW1fc2Vxbm8gPSAwOworCWk5MTVfZmlsZV9wcml2LT5tbS5sYXN0X2dlbV90aHJvdHRsZV9zZXFubyA9IDA7CisKKwlyZXR1cm4gMDsKK30KKwogdm9pZCBpOTE1X2RyaXZlcl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC04MDcsNiArOTAyLDggQEAKIAlpZiAoIWRldl9wcml2KQogCQlyZXR1cm47CiAKKwlpOTE1X2dlbV9sYXN0Y2xvc2UoZGV2KTsKKwogCWlmIChkZXZfcHJpdi0+YWdwX2hlYXApCiAJCWk5MTVfbWVtX3Rha2Vkb3duKCYoZGV2X3ByaXYtPmFncF9oZWFwKSk7CiAKQEAgLTgxOSw2ICs5MTYsMTMgQEAKIAlpOTE1X21lbV9yZWxlYXNlKGRldiwgZmlsZV9wcml2LCBkZXZfcHJpdi0+YWdwX2hlYXApOwogfQogCit2b2lkIGk5MTVfZHJpdmVyX3Bvc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICppOTE1X2ZpbGVfcHJpdiA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7CisKKwlkcm1fZnJlZShpOTE1X2ZpbGVfcHJpdiwgc2l6ZW9mKCppOTE1X2ZpbGVfcHJpdiksIERSTV9NRU1fRklMRVMpOworfQorCiBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgaTkxNV9pb2N0bHNbXSA9IHsKIAlEUk1fSU9DVExfREVGKERSTV9JOTE1X0lOSVQsIGk5MTVfZG1hX2luaXQsIERSTV9BVVRIfERSTV9NQVNURVJ8RFJNX1JPT1RfT05MWSksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9GTFVTSCwgaTkxNV9mbHVzaF9pb2N0bCwgRFJNX0FVVEgpLApAQCAtODM2LDcgKzk0MCwyMyBAQAogCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfU0VUX1ZCTEFOS19QSVBFLCAgaTkxNV92YmxhbmtfcGlwZV9zZXQsIERSTV9BVVRIfERSTV9NQVNURVJ8RFJNX1JPT1RfT05MWSApLAogCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VUX1ZCTEFOS19QSVBFLCAgaTkxNV92YmxhbmtfcGlwZV9nZXQsIERSTV9BVVRIICksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9WQkxBTktfU1dBUCwgaTkxNV92Ymxhbmtfc3dhcCwgRFJNX0FVVEgpLAotCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfSFdTX0FERFIsIGk5MTVfc2V0X3N0YXR1c19wYWdlLCBEUk1fQVVUSCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9IV1NfQUREUiwgaTkxNV9zZXRfc3RhdHVzX3BhZ2UsIERSTV9BVVRIfERSTV9NQVNURVJ8RFJNX1JPT1RfT05MWSksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fSU5JVCwgaTkxNV9nZW1faW5pdF9pb2N0bCwgRFJNX0FVVEh8RFJNX01BU1RFUnxEUk1fUk9PVF9PTkxZKSwKKwlEUk1fSU9DVExfREVGKERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSLCBpOTE1X2dlbV9leGVjYnVmZmVyLCBEUk1fQVVUSCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fUElOLCBpOTE1X2dlbV9waW5faW9jdGwsIERSTV9BVVRIfERSTV9ST09UX09OTFkpLAorCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VNX1VOUElOLCBpOTE1X2dlbV91bnBpbl9pb2N0bCwgRFJNX0FVVEh8RFJNX1JPT1RfT05MWSksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fQlVTWSwgaTkxNV9nZW1fYnVzeV9pb2N0bCwgRFJNX0FVVEgpLAorCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VNX1RIUk9UVExFLCBpOTE1X2dlbV90aHJvdHRsZV9pb2N0bCwgRFJNX0FVVEgpLAorCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VNX0VOVEVSVlQsIGk5MTVfZ2VtX2VudGVydnRfaW9jdGwsIERSTV9BVVRIfERSTV9NQVNURVJ8RFJNX1JPT1RfT05MWSksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fTEVBVkVWVCwgaTkxNV9nZW1fbGVhdmV2dF9pb2N0bCwgRFJNX0FVVEh8RFJNX01BU1RFUnxEUk1fUk9PVF9PTkxZKSwKKwlEUk1fSU9DVExfREVGKERSTV9JOTE1X0dFTV9DUkVBVEUsIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bCwgMCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fUFJFQUQsIGk5MTVfZ2VtX3ByZWFkX2lvY3RsLCAwKSwKKwlEUk1fSU9DVExfREVGKERSTV9JOTE1X0dFTV9QV1JJVEUsIGk5MTVfZ2VtX3B3cml0ZV9pb2N0bCwgMCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fTU1BUCwgaTkxNV9nZW1fbW1hcF9pb2N0bCwgMCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fU0VUX0RPTUFJTiwgaTkxNV9nZW1fc2V0X2RvbWFpbl9pb2N0bCwgMCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSTkxNV9HRU1fU1dfRklOSVNILCBpOTE1X2dlbV9zd19maW5pc2hfaW9jdGwsIDApLAorCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VNX1NFVF9USUxJTkcsIGk5MTVfZ2VtX3NldF90aWxpbmcsIDApLAorCURSTV9JT0NUTF9ERUYoRFJNX0k5MTVfR0VNX0dFVF9USUxJTkcsIGk5MTVfZ2VtX2dldF90aWxpbmcsIDApLAogfTsKIAogaW50IGk5MTVfbWF4X2lvY3RsID0gRFJNX0FSUkFZX1NJWkUoaTkxNV9pb2N0bHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggOTNhZWQxYy4uYTgwZWFkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0zOCwyMTEgKzM4LDkgQEAKIAlpOTE1X1BDSV9JRFMKIH07CiAKLWVudW0gcGlwZSB7Ci0gICAgUElQRV9BID0gMCwKLSAgICBQSVBFX0IsCi19OwotCi1zdGF0aWMgYm9vbCBpOTE1X3BpcGVfZW5hYmxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKHBpcGUgPT0gUElQRV9BKQotCQlyZXR1cm4gKEk5MTVfUkVBRChEUExMX0EpICYgRFBMTF9WQ09fRU5BQkxFKTsKLQllbHNlCi0JCXJldHVybiAoSTkxNV9SRUFEKERQTExfQikgJiBEUExMX1ZDT19FTkFCTEUpOwotfQotCi1zdGF0aWMgdm9pZCBpOTE1X3NhdmVfcGFsZXR0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXVuc2lnbmVkIGxvbmcgcmVnID0gKHBpcGUgPT0gUElQRV9BID8gUEFMRVRURV9BIDogUEFMRVRURV9CKTsKLQl1MzIgKmFycmF5OwotCWludCBpOwotCi0JaWYgKCFpOTE1X3BpcGVfZW5hYmxlZChkZXYsIHBpcGUpKQotCQlyZXR1cm47Ci0KLQlpZiAocGlwZSA9PSBQSVBFX0EpCi0JCWFycmF5ID0gZGV2X3ByaXYtPnNhdmVfcGFsZXR0ZV9hOwotCWVsc2UKLQkJYXJyYXkgPSBkZXZfcHJpdi0+c2F2ZV9wYWxldHRlX2I7Ci0KLQlmb3IoaSA9IDA7IGkgPCAyNTY7IGkrKykKLQkJYXJyYXlbaV0gPSBJOTE1X1JFQUQocmVnICsgKGkgPDwgMikpOwotfQotCi1zdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfcGFsZXR0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXVuc2lnbmVkIGxvbmcgcmVnID0gKHBpcGUgPT0gUElQRV9BID8gUEFMRVRURV9BIDogUEFMRVRURV9CKTsKLQl1MzIgKmFycmF5OwotCWludCBpOwotCi0JaWYgKCFpOTE1X3BpcGVfZW5hYmxlZChkZXYsIHBpcGUpKQotCQlyZXR1cm47Ci0KLQlpZiAocGlwZSA9PSBQSVBFX0EpCi0JCWFycmF5ID0gZGV2X3ByaXYtPnNhdmVfcGFsZXR0ZV9hOwotCWVsc2UKLQkJYXJyYXkgPSBkZXZfcHJpdi0+c2F2ZV9wYWxldHRlX2I7Ci0KLQlmb3IoaSA9IDA7IGkgPCAyNTY7IGkrKykKLQkJSTkxNV9XUklURShyZWcgKyAoaSA8PCAyKSwgYXJyYXlbaV0pOwotfQotCi1zdGF0aWMgdTggaTkxNV9yZWFkX2luZGV4ZWQodTE2IGluZGV4X3BvcnQsIHUxNiBkYXRhX3BvcnQsIHU4IHJlZykKLXsKLQlvdXRiKHJlZywgaW5kZXhfcG9ydCk7Ci0JcmV0dXJuIGluYihkYXRhX3BvcnQpOwotfQotCi1zdGF0aWMgdTggaTkxNV9yZWFkX2FyKHUxNiBzdDAxLCB1OCByZWcsIHUxNiBwYWxldHRlX2VuYWJsZSkKLXsKLQlpbmIoc3QwMSk7Ci0Jb3V0YihwYWxldHRlX2VuYWJsZSB8IHJlZywgVkdBX0FSX0lOREVYKTsKLQlyZXR1cm4gaW5iKFZHQV9BUl9EQVRBX1JFQUQpOwotfQotCi1zdGF0aWMgdm9pZCBpOTE1X3dyaXRlX2FyKHU4IHN0MDEsIHU4IHJlZywgdTggdmFsLCB1MTYgcGFsZXR0ZV9lbmFibGUpCi17Ci0JaW5iKHN0MDEpOwotCW91dGIocGFsZXR0ZV9lbmFibGUgfCByZWcsIFZHQV9BUl9JTkRFWCk7Ci0Jb3V0Yih2YWwsIFZHQV9BUl9EQVRBX1dSSVRFKTsKLX0KLQotc3RhdGljIHZvaWQgaTkxNV93cml0ZV9pbmRleGVkKHUxNiBpbmRleF9wb3J0LCB1MTYgZGF0YV9wb3J0LCB1OCByZWcsIHU4IHZhbCkKLXsKLQlvdXRiKHJlZywgaW5kZXhfcG9ydCk7Ci0Jb3V0Yih2YWwsIGRhdGFfcG9ydCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGk5MTVfc2F2ZV92Z2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWludCBpOwotCXUxNiBjcl9pbmRleCwgY3JfZGF0YSwgc3QwMTsKLQotCS8qIFZHQSBjb2xvciBwYWxldHRlIHJlZ2lzdGVycyAqLwotCWRldl9wcml2LT5zYXZlREFDTUFTSyA9IGluYihWR0FfREFDTUFTSyk7Ci0JLyogREFDQ1JYIGF1dG9tYXRpY2FsbHkgaW5jcmVtZW50cyBkdXJpbmcgcmVhZCAqLwotCW91dGIoMCwgVkdBX0RBQ1JYKTsKLQkvKiBSZWFkIDMgYnl0ZXMgb2YgY29sb3IgZGF0YSBmcm9tIGVhY2ggaW5kZXggKi8KLQlmb3IgKGkgPSAwOyBpIDwgMjU2ICogMzsgaSsrKQotCQlkZXZfcHJpdi0+c2F2ZURBQ0RBVEFbaV0gPSBpbmIoVkdBX0RBQ0RBVEEpOwotCi0JLyogTVNSIGJpdHMgKi8KLQlkZXZfcHJpdi0+c2F2ZU1TUiA9IGluYihWR0FfTVNSX1JFQUQpOwotCWlmIChkZXZfcHJpdi0+c2F2ZU1TUiAmIFZHQV9NU1JfQ0dBX01PREUpIHsKLQkJY3JfaW5kZXggPSBWR0FfQ1JfSU5ERVhfQ0dBOwotCQljcl9kYXRhID0gVkdBX0NSX0RBVEFfQ0dBOwotCQlzdDAxID0gVkdBX1NUMDFfQ0dBOwotCX0gZWxzZSB7Ci0JCWNyX2luZGV4ID0gVkdBX0NSX0lOREVYX01EQTsKLQkJY3JfZGF0YSA9IFZHQV9DUl9EQVRBX01EQTsKLQkJc3QwMSA9IFZHQV9TVDAxX01EQTsKLQl9Ci0KLQkvKiBDUlQgY29udHJvbGxlciByZWdzICovCi0JaTkxNV93cml0ZV9pbmRleGVkKGNyX2luZGV4LCBjcl9kYXRhLCAweDExLAotCQkJICAgaTkxNV9yZWFkX2luZGV4ZWQoY3JfaW5kZXgsIGNyX2RhdGEsIDB4MTEpICYKLQkJCSAgICh+MHg4MCkpOwotCWZvciAoaSA9IDA7IGkgPD0gMHgyNDsgaSsrKQotCQlkZXZfcHJpdi0+c2F2ZUNSW2ldID0KLQkJCWk5MTVfcmVhZF9pbmRleGVkKGNyX2luZGV4LCBjcl9kYXRhLCBpKTsKLQkvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgdHVybiBvZmYgQ1IgZ3JvdXAgMCB3cml0ZXMgKi8KLQlkZXZfcHJpdi0+c2F2ZUNSWzB4MTFdICY9IH4weDgwOwotCi0JLyogQXR0cmlidXRlIGNvbnRyb2xsZXIgcmVnaXN0ZXJzICovCi0JaW5iKHN0MDEpOwotCWRldl9wcml2LT5zYXZlQVJfSU5ERVggPSBpbmIoVkdBX0FSX0lOREVYKTsKLQlmb3IgKGkgPSAwOyBpIDw9IDB4MTQ7IGkrKykKLQkJZGV2X3ByaXYtPnNhdmVBUltpXSA9IGk5MTVfcmVhZF9hcihzdDAxLCBpLCAwKTsKLQlpbmIoc3QwMSk7Ci0Jb3V0YihkZXZfcHJpdi0+c2F2ZUFSX0lOREVYLCBWR0FfQVJfSU5ERVgpOwotCWluYihzdDAxKTsKLQotCS8qIEdyYXBoaWNzIGNvbnRyb2xsZXIgcmVnaXN0ZXJzICovCi0JZm9yIChpID0gMDsgaSA8IDk7IGkrKykKLQkJZGV2X3ByaXYtPnNhdmVHUltpXSA9Ci0JCQlpOTE1X3JlYWRfaW5kZXhlZChWR0FfR1JfSU5ERVgsIFZHQV9HUl9EQVRBLCBpKTsKLQotCWRldl9wcml2LT5zYXZlR1JbMHgxMF0gPQotCQlpOTE1X3JlYWRfaW5kZXhlZChWR0FfR1JfSU5ERVgsIFZHQV9HUl9EQVRBLCAweDEwKTsKLQlkZXZfcHJpdi0+c2F2ZUdSWzB4MTFdID0KLQkJaTkxNV9yZWFkX2luZGV4ZWQoVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxMSk7Ci0JZGV2X3ByaXYtPnNhdmVHUlsweDE4XSA9Ci0JCWk5MTVfcmVhZF9pbmRleGVkKFZHQV9HUl9JTkRFWCwgVkdBX0dSX0RBVEEsIDB4MTgpOwotCi0JLyogU2VxdWVuY2VyIHJlZ2lzdGVycyAqLwotCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0JCWRldl9wcml2LT5zYXZlU1JbaV0gPQotCQkJaTkxNV9yZWFkX2luZGV4ZWQoVkdBX1NSX0lOREVYLCBWR0FfU1JfREFUQSwgaSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV92Z2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWludCBpOwotCXUxNiBjcl9pbmRleCwgY3JfZGF0YSwgc3QwMTsKLQotCS8qIE1TUiBiaXRzICovCi0Jb3V0YihkZXZfcHJpdi0+c2F2ZU1TUiwgVkdBX01TUl9XUklURSk7Ci0JaWYgKGRldl9wcml2LT5zYXZlTVNSICYgVkdBX01TUl9DR0FfTU9ERSkgewotCQljcl9pbmRleCA9IFZHQV9DUl9JTkRFWF9DR0E7Ci0JCWNyX2RhdGEgPSBWR0FfQ1JfREFUQV9DR0E7Ci0JCXN0MDEgPSBWR0FfU1QwMV9DR0E7Ci0JfSBlbHNlIHsKLQkJY3JfaW5kZXggPSBWR0FfQ1JfSU5ERVhfTURBOwotCQljcl9kYXRhID0gVkdBX0NSX0RBVEFfTURBOwotCQlzdDAxID0gVkdBX1NUMDFfTURBOwotCX0KLQotCS8qIFNlcXVlbmNlciByZWdpc3RlcnMsIGRvbid0IHdyaXRlIFNSMDcgKi8KLQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKQotCQlpOTE1X3dyaXRlX2luZGV4ZWQoVkdBX1NSX0lOREVYLCBWR0FfU1JfREFUQSwgaSwKLQkJCQkgICBkZXZfcHJpdi0+c2F2ZVNSW2ldKTsKLQotCS8qIENSVCBjb250cm9sbGVyIHJlZ3MgKi8KLQkvKiBFbmFibGUgQ1IgZ3JvdXAgMCB3cml0ZXMgKi8KLQlpOTE1X3dyaXRlX2luZGV4ZWQoY3JfaW5kZXgsIGNyX2RhdGEsIDB4MTEsIGRldl9wcml2LT5zYXZlQ1JbMHgxMV0pOwotCWZvciAoaSA9IDA7IGkgPD0gMHgyNDsgaSsrKQotCQlpOTE1X3dyaXRlX2luZGV4ZWQoY3JfaW5kZXgsIGNyX2RhdGEsIGksIGRldl9wcml2LT5zYXZlQ1JbaV0pOwotCi0JLyogR3JhcGhpY3MgY29udHJvbGxlciByZWdzICovCi0JZm9yIChpID0gMDsgaSA8IDk7IGkrKykKLQkJaTkxNV93cml0ZV9pbmRleGVkKFZHQV9HUl9JTkRFWCwgVkdBX0dSX0RBVEEsIGksCi0JCQkJICAgZGV2X3ByaXYtPnNhdmVHUltpXSk7Ci0KLQlpOTE1X3dyaXRlX2luZGV4ZWQoVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxMCwKLQkJCSAgIGRldl9wcml2LT5zYXZlR1JbMHgxMF0pOwotCWk5MTVfd3JpdGVfaW5kZXhlZChWR0FfR1JfSU5ERVgsIFZHQV9HUl9EQVRBLCAweDExLAotCQkJICAgZGV2X3ByaXYtPnNhdmVHUlsweDExXSk7Ci0JaTkxNV93cml0ZV9pbmRleGVkKFZHQV9HUl9JTkRFWCwgVkdBX0dSX0RBVEEsIDB4MTgsCi0JCQkgICBkZXZfcHJpdi0+c2F2ZUdSWzB4MThdKTsKLQotCS8qIEF0dHJpYnV0ZSBjb250cm9sbGVyIHJlZ2lzdGVycyAqLwotCWluYihzdDAxKTsKLQlmb3IgKGkgPSAwOyBpIDw9IDB4MTQ7IGkrKykKLQkJaTkxNV93cml0ZV9hcihzdDAxLCBpLCBkZXZfcHJpdi0+c2F2ZUFSW2ldLCAwKTsKLQlpbmIoc3QwMSk7IC8qIHN3aXRjaCBiYWNrIHRvIGluZGV4IG1vZGUgKi8KLQlvdXRiKGRldl9wcml2LT5zYXZlQVJfSU5ERVggfCAweDIwLCBWR0FfQVJfSU5ERVgpOwotCWluYihzdDAxKTsKLQotCS8qIFZHQSBjb2xvciBwYWxldHRlIHJlZ2lzdGVycyAqLwotCW91dGIoZGV2X3ByaXYtPnNhdmVEQUNNQVNLLCBWR0FfREFDTUFTSyk7Ci0JLyogREFDQ1JYIGF1dG9tYXRpY2FsbHkgaW5jcmVtZW50cyBkdXJpbmcgcmVhZCAqLwotCW91dGIoMCwgVkdBX0RBQ1dYKTsKLQkvKiBSZWFkIDMgYnl0ZXMgb2YgY29sb3IgZGF0YSBmcm9tIGVhY2ggaW5kZXggKi8KLQlmb3IgKGkgPSAwOyBpIDwgMjU2ICogMzsgaSsrKQotCQlvdXRiKGRldl9wcml2LT5zYXZlREFDREFUQVtpXSwgVkdBX0RBQ0RBVEEpOwotCi19Ci0KIHN0YXRpYyBpbnQgaTkxNV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWludCBpOwogCiAJaWYgKCFkZXYgfHwgIWRldl9wcml2KSB7CiAJCXByaW50ayhLRVJOX0VSUiAiZGV2OiAlcCwgZGV2X3ByaXY6ICVwXG4iLCBkZXYsIGRldl9wcml2KTsKQEAgLTI1NCwxMjIgKzUyLDEwIEBACiAJCXJldHVybiAwOwogCiAJcGNpX3NhdmVfc3RhdGUoZGV2LT5wZGV2KTsKLQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYtPnBkZXYsIExCQiwgJmRldl9wcml2LT5zYXZlTEJCKTsKIAotCS8qIERpc3BsYXkgYXJiaXRyYXRpb24gY29udHJvbCAqLwotCWRldl9wcml2LT5zYXZlRFNQQVJCID0gSTkxNV9SRUFEKERTUEFSQik7CisJaTkxNV9zYXZlX3N0YXRlKGRldik7CiAKLQkvKiBQaXBlICYgcGxhbmUgQSBpbmZvICovCi0JZGV2X3ByaXYtPnNhdmVQSVBFQUNPTkYgPSBJOTE1X1JFQUQoUElQRUFDT05GKTsKLQlkZXZfcHJpdi0+c2F2ZVBJUEVBU1JDID0gSTkxNV9SRUFEKFBJUEVBU1JDKTsKLQlkZXZfcHJpdi0+c2F2ZUZQQTAgPSBJOTE1X1JFQUQoRlBBMCk7Ci0JZGV2X3ByaXYtPnNhdmVGUEExID0gSTkxNV9SRUFEKEZQQTEpOwotCWRldl9wcml2LT5zYXZlRFBMTF9BID0gSTkxNV9SRUFEKERQTExfQSk7Ci0JaWYgKElTX0k5NjVHKGRldikpCi0JCWRldl9wcml2LT5zYXZlRFBMTF9BX01EID0gSTkxNV9SRUFEKERQTExfQV9NRCk7Ci0JZGV2X3ByaXYtPnNhdmVIVE9UQUxfQSA9IEk5MTVfUkVBRChIVE9UQUxfQSk7Ci0JZGV2X3ByaXYtPnNhdmVIQkxBTktfQSA9IEk5MTVfUkVBRChIQkxBTktfQSk7Ci0JZGV2X3ByaXYtPnNhdmVIU1lOQ19BID0gSTkxNV9SRUFEKEhTWU5DX0EpOwotCWRldl9wcml2LT5zYXZlVlRPVEFMX0EgPSBJOTE1X1JFQUQoVlRPVEFMX0EpOwotCWRldl9wcml2LT5zYXZlVkJMQU5LX0EgPSBJOTE1X1JFQUQoVkJMQU5LX0EpOwotCWRldl9wcml2LT5zYXZlVlNZTkNfQSA9IEk5MTVfUkVBRChWU1lOQ19BKTsKLQlkZXZfcHJpdi0+c2F2ZUJDTFJQQVRfQSA9IEk5MTVfUkVBRChCQ0xSUEFUX0EpOwotCi0JZGV2X3ByaXYtPnNhdmVEU1BBQ05UUiA9IEk5MTVfUkVBRChEU1BBQ05UUik7Ci0JZGV2X3ByaXYtPnNhdmVEU1BBU1RSSURFID0gSTkxNV9SRUFEKERTUEFTVFJJREUpOwotCWRldl9wcml2LT5zYXZlRFNQQVNJWkUgPSBJOTE1X1JFQUQoRFNQQVNJWkUpOwotCWRldl9wcml2LT5zYXZlRFNQQVBPUyA9IEk5MTVfUkVBRChEU1BBUE9TKTsKLQlkZXZfcHJpdi0+c2F2ZURTUEFCQVNFID0gSTkxNV9SRUFEKERTUEFCQVNFKTsKLQlpZiAoSVNfSTk2NUcoZGV2KSkgewotCQlkZXZfcHJpdi0+c2F2ZURTUEFTVVJGID0gSTkxNV9SRUFEKERTUEFTVVJGKTsKLQkJZGV2X3ByaXYtPnNhdmVEU1BBVElMRU9GRiA9IEk5MTVfUkVBRChEU1BBVElMRU9GRik7Ci0JfQotCWk5MTVfc2F2ZV9wYWxldHRlKGRldiwgUElQRV9BKTsKLQlkZXZfcHJpdi0+c2F2ZVBJUEVBU1RBVCA9IEk5MTVfUkVBRChJOTE1UkVHX1BJUEVBU1RBVCk7Ci0KLQkvKiBQaXBlICYgcGxhbmUgQiBpbmZvICovCi0JZGV2X3ByaXYtPnNhdmVQSVBFQkNPTkYgPSBJOTE1X1JFQUQoUElQRUJDT05GKTsKLQlkZXZfcHJpdi0+c2F2ZVBJUEVCU1JDID0gSTkxNV9SRUFEKFBJUEVCU1JDKTsKLQlkZXZfcHJpdi0+c2F2ZUZQQjAgPSBJOTE1X1JFQUQoRlBCMCk7Ci0JZGV2X3ByaXYtPnNhdmVGUEIxID0gSTkxNV9SRUFEKEZQQjEpOwotCWRldl9wcml2LT5zYXZlRFBMTF9CID0gSTkxNV9SRUFEKERQTExfQik7Ci0JaWYgKElTX0k5NjVHKGRldikpCi0JCWRldl9wcml2LT5zYXZlRFBMTF9CX01EID0gSTkxNV9SRUFEKERQTExfQl9NRCk7Ci0JZGV2X3ByaXYtPnNhdmVIVE9UQUxfQiA9IEk5MTVfUkVBRChIVE9UQUxfQik7Ci0JZGV2X3ByaXYtPnNhdmVIQkxBTktfQiA9IEk5MTVfUkVBRChIQkxBTktfQik7Ci0JZGV2X3ByaXYtPnNhdmVIU1lOQ19CID0gSTkxNV9SRUFEKEhTWU5DX0IpOwotCWRldl9wcml2LT5zYXZlVlRPVEFMX0IgPSBJOTE1X1JFQUQoVlRPVEFMX0IpOwotCWRldl9wcml2LT5zYXZlVkJMQU5LX0IgPSBJOTE1X1JFQUQoVkJMQU5LX0IpOwotCWRldl9wcml2LT5zYXZlVlNZTkNfQiA9IEk5MTVfUkVBRChWU1lOQ19CKTsKLQlkZXZfcHJpdi0+c2F2ZUJDTFJQQVRfQSA9IEk5MTVfUkVBRChCQ0xSUEFUX0EpOwotCi0JZGV2X3ByaXYtPnNhdmVEU1BCQ05UUiA9IEk5MTVfUkVBRChEU1BCQ05UUik7Ci0JZGV2X3ByaXYtPnNhdmVEU1BCU1RSSURFID0gSTkxNV9SRUFEKERTUEJTVFJJREUpOwotCWRldl9wcml2LT5zYXZlRFNQQlNJWkUgPSBJOTE1X1JFQUQoRFNQQlNJWkUpOwotCWRldl9wcml2LT5zYXZlRFNQQlBPUyA9IEk5MTVfUkVBRChEU1BCUE9TKTsKLQlkZXZfcHJpdi0+c2F2ZURTUEJCQVNFID0gSTkxNV9SRUFEKERTUEJCQVNFKTsKLQlpZiAoSVNfSTk2NUdNKGRldikgfHwgSVNfSUdEX0dNKGRldikpIHsKLQkJZGV2X3ByaXYtPnNhdmVEU1BCU1VSRiA9IEk5MTVfUkVBRChEU1BCU1VSRik7Ci0JCWRldl9wcml2LT5zYXZlRFNQQlRJTEVPRkYgPSBJOTE1X1JFQUQoRFNQQlRJTEVPRkYpOwotCX0KLQlpOTE1X3NhdmVfcGFsZXR0ZShkZXYsIFBJUEVfQik7Ci0JZGV2X3ByaXYtPnNhdmVQSVBFQlNUQVQgPSBJOTE1X1JFQUQoSTkxNVJFR19QSVBFQlNUQVQpOwotCi0JLyogQ1JUIHN0YXRlICovCi0JZGV2X3ByaXYtPnNhdmVBRFBBID0gSTkxNV9SRUFEKEFEUEEpOwotCi0JLyogTFZEUyBzdGF0ZSAqLwotCWRldl9wcml2LT5zYXZlUFBfQ09OVFJPTCA9IEk5MTVfUkVBRChQUF9DT05UUk9MKTsKLQlkZXZfcHJpdi0+c2F2ZVBGSVRfUEdNX1JBVElPUyA9IEk5MTVfUkVBRChQRklUX1BHTV9SQVRJT1MpOwotCWRldl9wcml2LT5zYXZlQkxDX1BXTV9DVEwgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwpOwotCWlmIChJU19JOTY1RyhkZXYpKQotCQlkZXZfcHJpdi0+c2F2ZUJMQ19QV01fQ1RMMiA9IEk5MTVfUkVBRChCTENfUFdNX0NUTDIpOwotCWlmIChJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgzMChkZXYpKQotCQlkZXZfcHJpdi0+c2F2ZUxWRFMgPSBJOTE1X1JFQUQoTFZEUyk7Ci0JaWYgKCFJU19JODMwKGRldikgJiYgIUlTXzg0NUcoZGV2KSkKLQkJZGV2X3ByaXYtPnNhdmVQRklUX0NPTlRST0wgPSBJOTE1X1JFQUQoUEZJVF9DT05UUk9MKTsKLQlkZXZfcHJpdi0+c2F2ZUxWRFNQUF9PTiA9IEk5MTVfUkVBRChMVkRTUFBfT04pOwotCWRldl9wcml2LT5zYXZlTFZEU1BQX09GRiA9IEk5MTVfUkVBRChMVkRTUFBfT0ZGKTsKLQlkZXZfcHJpdi0+c2F2ZVBQX0NZQ0xFID0gSTkxNV9SRUFEKFBQX0NZQ0xFKTsKLQotCS8qIEZJWE1FOiBzYXZlIFRWICYgU0RWTyBzdGF0ZSAqLwotCi0JLyogRkJDIHN0YXRlICovCi0JZGV2X3ByaXYtPnNhdmVGQkNfQ0ZCX0JBU0UgPSBJOTE1X1JFQUQoRkJDX0NGQl9CQVNFKTsKLQlkZXZfcHJpdi0+c2F2ZUZCQ19MTF9CQVNFID0gSTkxNV9SRUFEKEZCQ19MTF9CQVNFKTsKLQlkZXZfcHJpdi0+c2F2ZUZCQ19DT05UUk9MMiA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTDIpOwotCWRldl9wcml2LT5zYXZlRkJDX0NPTlRST0wgPSBJOTE1X1JFQUQoRkJDX0NPTlRST0wpOwotCi0JLyogSW50ZXJydXB0IHN0YXRlICovCi0JZGV2X3ByaXYtPnNhdmVJSVIgPSBJOTE1X1JFQUQoSTkxNVJFR19JTlRfSURFTlRJVFlfUik7Ci0JZGV2X3ByaXYtPnNhdmVJRVIgPSBJOTE1X1JFQUQoSTkxNVJFR19JTlRfRU5BQkxFX1IpOwotCWRldl9wcml2LT5zYXZlSU1SID0gSTkxNV9SRUFEKEk5MTVSRUdfSU5UX01BU0tfUik7Ci0KLQkvKiBWR0Egc3RhdGUgKi8KLQlkZXZfcHJpdi0+c2F2ZVZDTEtfRElWSVNPUl9WR0EwID0gSTkxNV9SRUFEKFZDTEtfRElWSVNPUl9WR0EwKTsKLQlkZXZfcHJpdi0+c2F2ZVZDTEtfRElWSVNPUl9WR0ExID0gSTkxNV9SRUFEKFZDTEtfRElWSVNPUl9WR0ExKTsKLQlkZXZfcHJpdi0+c2F2ZVZDTEtfUE9TVF9ESVYgPSBJOTE1X1JFQUQoVkNMS19QT1NUX0RJVik7Ci0JZGV2X3ByaXYtPnNhdmVWR0FDTlRSTCA9IEk5MTVfUkVBRChWR0FDTlRSTCk7Ci0KLQkvKiBDbG9jayBnYXRpbmcgc3RhdGUgKi8KLQlkZXZfcHJpdi0+c2F2ZURfU1RBVEUgPSBJOTE1X1JFQUQoRF9TVEFURSk7Ci0JZGV2X3ByaXYtPnNhdmVEU1BDTEtfR0FURV9EID0gSTkxNV9SRUFEKERTUENMS19HQVRFX0QpOwotCi0JLyogQ2FjaGUgbW9kZSBzdGF0ZSAqLwotCWRldl9wcml2LT5zYXZlQ0FDSEVfTU9ERV8wID0gSTkxNV9SRUFEKENBQ0hFX01PREVfMCk7Ci0KLQkvKiBNZW1vcnkgQXJiaXRyYXRpb24gc3RhdGUgKi8KLQlkZXZfcHJpdi0+c2F2ZU1JX0FSQl9TVEFURSA9IEk5MTVfUkVBRChNSV9BUkJfU1RBVEUpOwotCi0JLyogU2NyYXRjaCBzcGFjZSAqLwotCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7Ci0JCWRldl9wcml2LT5zYXZlU1dGMFtpXSA9IEk5MTVfUkVBRChTV0YwICsgKGkgPDwgMikpOwotCQlkZXZfcHJpdi0+c2F2ZVNXRjFbaV0gPSBJOTE1X1JFQUQoU1dGMTAgKyAoaSA8PCAyKSk7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCi0JCWRldl9wcml2LT5zYXZlU1dGMltpXSA9IEk5MTVfUkVBRChTV0YzMCArIChpIDw8IDIpKTsKLQotCWk5MTVfc2F2ZV92Z2EoZGV2KTsKKwlpbnRlbF9vcHJlZ2lvbl9mcmVlKGRldik7CiAKIAlpZiAoc3RhdGUuZXZlbnQgPT0gUE1fRVZFTlRfU1VTUEVORCkgewogCQkvKiBTaHV0IGRvd24gdGhlIGRldmljZSAqLwpAQCAtMzgyLDE1NSArNjgsMTUgQEAKIAogc3RhdGljIGludCBpOTE1X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JaW50IGk7Ci0KIAlwY2lfc2V0X3Bvd2VyX3N0YXRlKGRldi0+cGRldiwgUENJX0QwKTsKIAlwY2lfcmVzdG9yZV9zdGF0ZShkZXYtPnBkZXYpOwogCWlmIChwY2lfZW5hYmxlX2RldmljZShkZXYtPnBkZXYpKQogCQlyZXR1cm4gLTE7CiAJcGNpX3NldF9tYXN0ZXIoZGV2LT5wZGV2KTsKIAotCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYtPnBkZXYsIExCQiwgZGV2X3ByaXYtPnNhdmVMQkIpOworCWk5MTVfcmVzdG9yZV9zdGF0ZShkZXYpOwogCi0JSTkxNV9XUklURShEU1BBUkIsIGRldl9wcml2LT5zYXZlRFNQQVJCKTsKLQotCS8qIFBpcGUgJiBwbGFuZSBBIGluZm8gKi8KLQkvKiBQcmltZSB0aGUgY2xvY2sgKi8KLQlpZiAoZGV2X3ByaXYtPnNhdmVEUExMX0EgJiBEUExMX1ZDT19FTkFCTEUpIHsKLQkJSTkxNV9XUklURShEUExMX0EsIGRldl9wcml2LT5zYXZlRFBMTF9BICYKLQkJCSAgIH5EUExMX1ZDT19FTkFCTEUpOwotCQl1ZGVsYXkoMTUwKTsKLQl9Ci0JSTkxNV9XUklURShGUEEwLCBkZXZfcHJpdi0+c2F2ZUZQQTApOwotCUk5MTVfV1JJVEUoRlBBMSwgZGV2X3ByaXYtPnNhdmVGUEExKTsKLQkvKiBBY3R1YWxseSBlbmFibGUgaXQgKi8KLQlJOTE1X1dSSVRFKERQTExfQSwgZGV2X3ByaXYtPnNhdmVEUExMX0EpOwotCXVkZWxheSgxNTApOwotCWlmIChJU19JOTY1RyhkZXYpKQotCQlJOTE1X1dSSVRFKERQTExfQV9NRCwgZGV2X3ByaXYtPnNhdmVEUExMX0FfTUQpOwotCXVkZWxheSgxNTApOwotCi0JLyogUmVzdG9yZSBtb2RlICovCi0JSTkxNV9XUklURShIVE9UQUxfQSwgZGV2X3ByaXYtPnNhdmVIVE9UQUxfQSk7Ci0JSTkxNV9XUklURShIQkxBTktfQSwgZGV2X3ByaXYtPnNhdmVIQkxBTktfQSk7Ci0JSTkxNV9XUklURShIU1lOQ19BLCBkZXZfcHJpdi0+c2F2ZUhTWU5DX0EpOwotCUk5MTVfV1JJVEUoVlRPVEFMX0EsIGRldl9wcml2LT5zYXZlVlRPVEFMX0EpOwotCUk5MTVfV1JJVEUoVkJMQU5LX0EsIGRldl9wcml2LT5zYXZlVkJMQU5LX0EpOwotCUk5MTVfV1JJVEUoVlNZTkNfQSwgZGV2X3ByaXYtPnNhdmVWU1lOQ19BKTsKLQlJOTE1X1dSSVRFKEJDTFJQQVRfQSwgZGV2X3ByaXYtPnNhdmVCQ0xSUEFUX0EpOwotCi0JLyogUmVzdG9yZSBwbGFuZSBpbmZvICovCi0JSTkxNV9XUklURShEU1BBU0laRSwgZGV2X3ByaXYtPnNhdmVEU1BBU0laRSk7Ci0JSTkxNV9XUklURShEU1BBUE9TLCBkZXZfcHJpdi0+c2F2ZURTUEFQT1MpOwotCUk5MTVfV1JJVEUoUElQRUFTUkMsIGRldl9wcml2LT5zYXZlUElQRUFTUkMpOwotCUk5MTVfV1JJVEUoRFNQQUJBU0UsIGRldl9wcml2LT5zYXZlRFNQQUJBU0UpOwotCUk5MTVfV1JJVEUoRFNQQVNUUklERSwgZGV2X3ByaXYtPnNhdmVEU1BBU1RSSURFKTsKLQlpZiAoSVNfSTk2NUcoZGV2KSkgewotCQlJOTE1X1dSSVRFKERTUEFTVVJGLCBkZXZfcHJpdi0+c2F2ZURTUEFTVVJGKTsKLQkJSTkxNV9XUklURShEU1BBVElMRU9GRiwgZGV2X3ByaXYtPnNhdmVEU1BBVElMRU9GRik7Ci0JfQotCi0JSTkxNV9XUklURShQSVBFQUNPTkYsIGRldl9wcml2LT5zYXZlUElQRUFDT05GKTsKLQotCWk5MTVfcmVzdG9yZV9wYWxldHRlKGRldiwgUElQRV9BKTsKLQkvKiBFbmFibGUgdGhlIHBsYW5lICovCi0JSTkxNV9XUklURShEU1BBQ05UUiwgZGV2X3ByaXYtPnNhdmVEU1BBQ05UUik7Ci0JSTkxNV9XUklURShEU1BBQkFTRSwgSTkxNV9SRUFEKERTUEFCQVNFKSk7Ci0KLQkvKiBQaXBlICYgcGxhbmUgQiBpbmZvICovCi0JaWYgKGRldl9wcml2LT5zYXZlRFBMTF9CICYgRFBMTF9WQ09fRU5BQkxFKSB7Ci0JCUk5MTVfV1JJVEUoRFBMTF9CLCBkZXZfcHJpdi0+c2F2ZURQTExfQiAmCi0JCQkgICB+RFBMTF9WQ09fRU5BQkxFKTsKLQkJdWRlbGF5KDE1MCk7Ci0JfQotCUk5MTVfV1JJVEUoRlBCMCwgZGV2X3ByaXYtPnNhdmVGUEIwKTsKLQlJOTE1X1dSSVRFKEZQQjEsIGRldl9wcml2LT5zYXZlRlBCMSk7Ci0JLyogQWN0dWFsbHkgZW5hYmxlIGl0ICovCi0JSTkxNV9XUklURShEUExMX0IsIGRldl9wcml2LT5zYXZlRFBMTF9CKTsKLQl1ZGVsYXkoMTUwKTsKLQlpZiAoSVNfSTk2NUcoZGV2KSkKLQkJSTkxNV9XUklURShEUExMX0JfTUQsIGRldl9wcml2LT5zYXZlRFBMTF9CX01EKTsKLQl1ZGVsYXkoMTUwKTsKLQotCS8qIFJlc3RvcmUgbW9kZSAqLwotCUk5MTVfV1JJVEUoSFRPVEFMX0IsIGRldl9wcml2LT5zYXZlSFRPVEFMX0IpOwotCUk5MTVfV1JJVEUoSEJMQU5LX0IsIGRldl9wcml2LT5zYXZlSEJMQU5LX0IpOwotCUk5MTVfV1JJVEUoSFNZTkNfQiwgZGV2X3ByaXYtPnNhdmVIU1lOQ19CKTsKLQlJOTE1X1dSSVRFKFZUT1RBTF9CLCBkZXZfcHJpdi0+c2F2ZVZUT1RBTF9CKTsKLQlJOTE1X1dSSVRFKFZCTEFOS19CLCBkZXZfcHJpdi0+c2F2ZVZCTEFOS19CKTsKLQlJOTE1X1dSSVRFKFZTWU5DX0IsIGRldl9wcml2LT5zYXZlVlNZTkNfQik7Ci0JSTkxNV9XUklURShCQ0xSUEFUX0IsIGRldl9wcml2LT5zYXZlQkNMUlBBVF9CKTsKLQotCS8qIFJlc3RvcmUgcGxhbmUgaW5mbyAqLwotCUk5MTVfV1JJVEUoRFNQQlNJWkUsIGRldl9wcml2LT5zYXZlRFNQQlNJWkUpOwotCUk5MTVfV1JJVEUoRFNQQlBPUywgZGV2X3ByaXYtPnNhdmVEU1BCUE9TKTsKLQlJOTE1X1dSSVRFKFBJUEVCU1JDLCBkZXZfcHJpdi0+c2F2ZVBJUEVCU1JDKTsKLQlJOTE1X1dSSVRFKERTUEJCQVNFLCBkZXZfcHJpdi0+c2F2ZURTUEJCQVNFKTsKLQlJOTE1X1dSSVRFKERTUEJTVFJJREUsIGRldl9wcml2LT5zYXZlRFNQQlNUUklERSk7Ci0JaWYgKElTX0k5NjVHKGRldikpIHsKLQkJSTkxNV9XUklURShEU1BCU1VSRiwgZGV2X3ByaXYtPnNhdmVEU1BCU1VSRik7Ci0JCUk5MTVfV1JJVEUoRFNQQlRJTEVPRkYsIGRldl9wcml2LT5zYXZlRFNQQlRJTEVPRkYpOwotCX0KLQotCUk5MTVfV1JJVEUoUElQRUJDT05GLCBkZXZfcHJpdi0+c2F2ZVBJUEVCQ09ORik7Ci0KLQlpOTE1X3Jlc3RvcmVfcGFsZXR0ZShkZXYsIFBJUEVfQik7Ci0JLyogRW5hYmxlIHRoZSBwbGFuZSAqLwotCUk5MTVfV1JJVEUoRFNQQkNOVFIsIGRldl9wcml2LT5zYXZlRFNQQkNOVFIpOwotCUk5MTVfV1JJVEUoRFNQQkJBU0UsIEk5MTVfUkVBRChEU1BCQkFTRSkpOwotCi0JLyogQ1JUIHN0YXRlICovCi0JSTkxNV9XUklURShBRFBBLCBkZXZfcHJpdi0+c2F2ZUFEUEEpOwotCi0JLyogTFZEUyBzdGF0ZSAqLwotCWlmIChJU19JOTY1RyhkZXYpKQotCQlJOTE1X1dSSVRFKEJMQ19QV01fQ1RMMiwgZGV2X3ByaXYtPnNhdmVCTENfUFdNX0NUTDIpOwotCWlmIChJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgzMChkZXYpKQotCQlJOTE1X1dSSVRFKExWRFMsIGRldl9wcml2LT5zYXZlTFZEUyk7Ci0JaWYgKCFJU19JODMwKGRldikgJiYgIUlTXzg0NUcoZGV2KSkKLQkJSTkxNV9XUklURShQRklUX0NPTlRST0wsIGRldl9wcml2LT5zYXZlUEZJVF9DT05UUk9MKTsKLQotCUk5MTVfV1JJVEUoUEZJVF9QR01fUkFUSU9TLCBkZXZfcHJpdi0+c2F2ZVBGSVRfUEdNX1JBVElPUyk7Ci0JSTkxNV9XUklURShCTENfUFdNX0NUTCwgZGV2X3ByaXYtPnNhdmVCTENfUFdNX0NUTCk7Ci0JSTkxNV9XUklURShMVkRTUFBfT04sIGRldl9wcml2LT5zYXZlTFZEU1BQX09OKTsKLQlJOTE1X1dSSVRFKExWRFNQUF9PRkYsIGRldl9wcml2LT5zYXZlTFZEU1BQX09GRik7Ci0JSTkxNV9XUklURShQUF9DWUNMRSwgZGV2X3ByaXYtPnNhdmVQUF9DWUNMRSk7Ci0JSTkxNV9XUklURShQUF9DT05UUk9MLCBkZXZfcHJpdi0+c2F2ZVBQX0NPTlRST0wpOwotCi0JLyogRklYTUU6IHJlc3RvcmUgVFYgJiBTRFZPIHN0YXRlICovCi0KLQkvKiBGQkMgaW5mbyAqLwotCUk5MTVfV1JJVEUoRkJDX0NGQl9CQVNFLCBkZXZfcHJpdi0+c2F2ZUZCQ19DRkJfQkFTRSk7Ci0JSTkxNV9XUklURShGQkNfTExfQkFTRSwgZGV2X3ByaXYtPnNhdmVGQkNfTExfQkFTRSk7Ci0JSTkxNV9XUklURShGQkNfQ09OVFJPTDIsIGRldl9wcml2LT5zYXZlRkJDX0NPTlRST0wyKTsKLQlJOTE1X1dSSVRFKEZCQ19DT05UUk9MLCBkZXZfcHJpdi0+c2F2ZUZCQ19DT05UUk9MKTsKLQotCS8qIFZHQSBzdGF0ZSAqLwotCUk5MTVfV1JJVEUoVkdBQ05UUkwsIGRldl9wcml2LT5zYXZlVkdBQ05UUkwpOwotCUk5MTVfV1JJVEUoVkNMS19ESVZJU09SX1ZHQTAsIGRldl9wcml2LT5zYXZlVkNMS19ESVZJU09SX1ZHQTApOwotCUk5MTVfV1JJVEUoVkNMS19ESVZJU09SX1ZHQTEsIGRldl9wcml2LT5zYXZlVkNMS19ESVZJU09SX1ZHQTEpOwotCUk5MTVfV1JJVEUoVkNMS19QT1NUX0RJViwgZGV2X3ByaXYtPnNhdmVWQ0xLX1BPU1RfRElWKTsKLQl1ZGVsYXkoMTUwKTsKLQotCS8qIENsb2NrIGdhdGluZyBzdGF0ZSAqLwotCUk5MTVfV1JJVEUgKERfU1RBVEUsIGRldl9wcml2LT5zYXZlRF9TVEFURSk7Ci0JSTkxNV9XUklURSAoRFNQQ0xLX0dBVEVfRCwgZGV2X3ByaXYtPnNhdmVEU1BDTEtfR0FURV9EKTsKLQotCS8qIENhY2hlIG1vZGUgc3RhdGUgKi8KLQlJOTE1X1dSSVRFIChDQUNIRV9NT0RFXzAsIGRldl9wcml2LT5zYXZlQ0FDSEVfTU9ERV8wIHwgMHhmZmZmMDAwMCk7Ci0KLQkvKiBNZW1vcnkgYXJiaXRyYXRpb24gc3RhdGUgKi8KLQlJOTE1X1dSSVRFIChNSV9BUkJfU1RBVEUsIGRldl9wcml2LT5zYXZlTUlfQVJCX1NUQVRFIHwgMHhmZmZmMDAwMCk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewotCQlJOTE1X1dSSVRFKFNXRjAgKyAoaSA8PCAyKSwgZGV2X3ByaXYtPnNhdmVTV0YwW2ldKTsKLQkJSTkxNV9XUklURShTV0YxMCArIChpIDw8IDIpLCBkZXZfcHJpdi0+c2F2ZVNXRjFbaSs3XSk7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCi0JCUk5MTVfV1JJVEUoU1dGMzAgKyAoaSA8PCAyKSwgZGV2X3ByaXYtPnNhdmVTV0YyW2ldKTsKLQotCWk5MTVfcmVzdG9yZV92Z2EoZGV2KTsKKwlpbnRlbF9vcHJlZ2lvbl9pbml0KGRldik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTU0MSwxNyArODcsMTkgQEAKIAkgKi8KIAkuZHJpdmVyX2ZlYXR1cmVzID0KIAkgICAgRFJJVkVSX1VTRV9BR1AgfCBEUklWRVJfUkVRVUlSRV9BR1AgfCAvKiBEUklWRVJfVVNFX01UUlIgfCovCi0JICAgIERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9JUlFfU0hBUkVEIHwgRFJJVkVSX0lSUV9WQkwgfAotCSAgICBEUklWRVJfSVJRX1ZCTDIsCisJICAgIERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9JUlFfU0hBUkVEIHwgRFJJVkVSX0dFTSwKIAkubG9hZCA9IGk5MTVfZHJpdmVyX2xvYWQsCiAJLnVubG9hZCA9IGk5MTVfZHJpdmVyX3VubG9hZCwKKwkub3BlbiA9IGk5MTVfZHJpdmVyX29wZW4sCiAJLmxhc3RjbG9zZSA9IGk5MTVfZHJpdmVyX2xhc3RjbG9zZSwKIAkucHJlY2xvc2UgPSBpOTE1X2RyaXZlcl9wcmVjbG9zZSwKKwkucG9zdGNsb3NlID0gaTkxNV9kcml2ZXJfcG9zdGNsb3NlLAogCS5zdXNwZW5kID0gaTkxNV9zdXNwZW5kLAogCS5yZXN1bWUgPSBpOTE1X3Jlc3VtZSwKIAkuZGV2aWNlX2lzX2FncCA9IGk5MTVfZHJpdmVyX2RldmljZV9pc19hZ3AsCi0JLnZibGFua193YWl0ID0gaTkxNV9kcml2ZXJfdmJsYW5rX3dhaXQsCi0JLnZibGFua193YWl0MiA9IGk5MTVfZHJpdmVyX3ZibGFua193YWl0MiwKKwkuZ2V0X3ZibGFua19jb3VudGVyID0gaTkxNV9nZXRfdmJsYW5rX2NvdW50ZXIsCisJLmVuYWJsZV92YmxhbmsgPSBpOTE1X2VuYWJsZV92YmxhbmssCisJLmRpc2FibGVfdmJsYW5rID0gaTkxNV9kaXNhYmxlX3ZibGFuaywKIAkuaXJxX3ByZWluc3RhbGwgPSBpOTE1X2RyaXZlcl9pcnFfcHJlaW5zdGFsbCwKIAkuaXJxX3Bvc3RpbnN0YWxsID0gaTkxNV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsLAogCS5pcnFfdW5pbnN0YWxsID0gaTkxNV9kcml2ZXJfaXJxX3VuaW5zdGFsbCwKQEAgLTU1OSw2ICsxMDcsMTAgQEAKIAkucmVjbGFpbV9idWZmZXJzID0gZHJtX2NvcmVfcmVjbGFpbV9idWZmZXJzLAogCS5nZXRfbWFwX29mcyA9IGRybV9jb3JlX2dldF9tYXBfb2ZzLAogCS5nZXRfcmVnX29mcyA9IGRybV9jb3JlX2dldF9yZWdfb2ZzLAorCS5wcm9jX2luaXQgPSBpOTE1X2dlbV9wcm9jX2luaXQsCisJLnByb2NfY2xlYW51cCA9IGk5MTVfZ2VtX3Byb2NfY2xlYW51cCwKKwkuZ2VtX2luaXRfb2JqZWN0ID0gaTkxNV9nZW1faW5pdF9vYmplY3QsCisJLmdlbV9mcmVlX29iamVjdCA9IGk5MTVfZ2VtX2ZyZWVfb2JqZWN0LAogCS5pb2N0bHMgPSBpOTE1X2lvY3RscywKIAkuZm9wcyA9IHsKIAkJIC5vd25lciA9IFRISVNfTU9EVUxFLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZDczMjZkOS4uZWFlNGVkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMCw2ICszMCw4IEBACiAjaWZuZGVmIF9JOTE1X0RSVl9IXwogI2RlZmluZSBfSTkxNV9EUlZfSF8KIAorI2luY2x1ZGUgImk5MTVfcmVnLmgiCisKIC8qIEdlbmVyYWwgY3VzdG9taXphdGlvbjoKICAqLwogCkBAIC0zNyw3ICszOSwxMiBAQAogCiAjZGVmaW5lIERSSVZFUl9OQU1FCQkiaTkxNSIKICNkZWZpbmUgRFJJVkVSX0RFU0MJCSJJbnRlbCBHcmFwaGljcyIKLSNkZWZpbmUgRFJJVkVSX0RBVEUJCSIyMDA2MDExOSIKKyNkZWZpbmUgRFJJVkVSX0RBVEUJCSIyMDA4MDczMCIKKworZW51bSBwaXBlIHsKKwlQSVBFX0EgPSAwLAorCVBJUEVfQiwKK307CiAKIC8qIEludGVyZmFjZSBoaXN0b3J5OgogICoKQEAgLTUzLDE2ICs2MCwyMyBAQAogI2RlZmluZSBEUklWRVJfTUlOT1IJCTYKICNkZWZpbmUgRFJJVkVSX1BBVENITEVWRUwJMAogCisjZGVmaW5lIFdBVENIX0NPSEVSRU5DWQkwCisjZGVmaW5lIFdBVENIX0JVRgkwCisjZGVmaW5lIFdBVENIX0VYRUMJMAorI2RlZmluZSBXQVRDSF9MUlUJMAorI2RlZmluZSBXQVRDSF9SRUxPQwkwCisjZGVmaW5lIFdBVENIX0lOQUNUSVZFCTAKKyNkZWZpbmUgV0FUQ0hfUFdSSVRFCTAKKwogdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3JpbmdfYnVmZmVyIHsKIAlpbnQgdGFpbF9tYXNrOwotCXVuc2lnbmVkIGxvbmcgU3RhcnQ7Ci0JdW5zaWduZWQgbG9uZyBFbmQ7CiAJdW5zaWduZWQgbG9uZyBTaXplOwogCXU4ICp2aXJ0dWFsX3N0YXJ0OwogCWludCBoZWFkOwogCWludCB0YWlsOwogCWludCBzcGFjZTsKIAlkcm1fbG9jYWxfbWFwX3QgbWFwOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqcmluZ19vYmo7CiB9IGRybV9pOTE1X3JpbmdfYnVmZmVyX3Q7CiAKIHN0cnVjdCBtZW1fYmxvY2sgewpAQCAtNzYsMTMgKzkwLDI4IEBACiB0eXBlZGVmIHN0cnVjdCBfZHJtX2k5MTVfdmJsX3N3YXAgewogCXN0cnVjdCBsaXN0X2hlYWQgaGVhZDsKIAlkcm1fZHJhd2FibGVfdCBkcndfaWQ7Ci0JdW5zaWduZWQgaW50IHBpcGU7CisJdW5zaWduZWQgaW50IHBsYW5lOwogCXVuc2lnbmVkIGludCBzZXF1ZW5jZTsKIH0gZHJtX2k5MTVfdmJsX3N3YXBfdDsKIAorc3RydWN0IG9wcmVnaW9uX2hlYWRlcjsKK3N0cnVjdCBvcHJlZ2lvbl9hY3BpOworc3RydWN0IG9wcmVnaW9uX3N3c2NpOworc3RydWN0IG9wcmVnaW9uX2FzbGU7CisKK3N0cnVjdCBpbnRlbF9vcHJlZ2lvbiB7CisJc3RydWN0IG9wcmVnaW9uX2hlYWRlciAqaGVhZGVyOworCXN0cnVjdCBvcHJlZ2lvbl9hY3BpICphY3BpOworCXN0cnVjdCBvcHJlZ2lvbl9zd3NjaSAqc3dzY2k7CisJc3RydWN0IG9wcmVnaW9uX2FzbGUgKmFzbGU7CisJaW50IGVuYWJsZWQ7Cit9OworCiB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCisJdm9pZCBfX2lvbWVtICpyZWdzOwogCWRybV9sb2NhbF9tYXBfdCAqc2FyZWE7Ci0JZHJtX2xvY2FsX21hcF90ICptbWlvX21hcDsKIAogCWRybV9pOTE1X3NhcmVhX3QgKnNhcmVhX3ByaXY7CiAJZHJtX2k5MTVfcmluZ19idWZmZXJfdCByaW5nOwpAQCAtOTAsMjAgKzExOSwyNSBAQAogCWRybV9kbWFfaGFuZGxlX3QgKnN0YXR1c19wYWdlX2RtYWg7CiAJdm9pZCAqaHdfc3RhdHVzX3BhZ2U7CiAJZG1hX2FkZHJfdCBkbWFfc3RhdHVzX3BhZ2U7Ci0JdW5zaWduZWQgbG9uZyBjb3VudGVyOworCXVpbnQzMl90IGNvdW50ZXI7CiAJdW5zaWduZWQgaW50IHN0YXR1c19nZnhfYWRkcjsKIAlkcm1fbG9jYWxfbWFwX3QgaHdzX21hcDsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmh3c19vYmo7CiAKIAl1bnNpZ25lZCBpbnQgY3BwOwogCWludCBiYWNrX29mZnNldDsKIAlpbnQgZnJvbnRfb2Zmc2V0OwogCWludCBjdXJyZW50X3BhZ2U7CiAJaW50IHBhZ2VfZmxpcHBpbmc7Ci0JaW50IHVzZV9taV9iYXRjaGJ1ZmZlcl9zdGFydDsKIAogCXdhaXRfcXVldWVfaGVhZF90IGlycV9xdWV1ZTsKIAlhdG9taWNfdCBpcnFfcmVjZWl2ZWQ7Ci0JYXRvbWljX3QgaXJxX2VtaXR0ZWQ7CisJLyoqIFByb3RlY3RzIHVzZXJfaXJxX3JlZmNvdW50IGFuZCBpcnFfbWFza19yZWcgKi8KKwlzcGlubG9ja190IHVzZXJfaXJxX2xvY2s7CisJLyoqIFJlZmNvdW50IGZvciBpOTE1X3VzZXJfaXJxX2dldCgpIHZlcnN1cyBpOTE1X3VzZXJfaXJxX3B1dCgpLiAqLworCWludCB1c2VyX2lycV9yZWZjb3VudDsKKwkvKiogQ2FjaGVkIHZhbHVlIG9mIElNUiB0byBhdm9pZCByZWFkcyBpbiB1cGRhdGluZyB0aGUgYml0ZmllbGQgKi8KKwl1MzIgaXJxX21hc2tfcmVnOwogCiAJaW50IHRleF9scnVfbG9nX2dyYW51bGFyaXR5OwogCWludCBhbGxvd19iYXRjaGJ1ZmZlcjsKQEAgLTExNSw2ICsxNDksOCBAQAogCWRybV9pOTE1X3ZibF9zd2FwX3QgdmJsX3N3YXBzOwogCXVuc2lnbmVkIGludCBzd2Fwc19wZW5kaW5nOwogCisJc3RydWN0IGludGVsX29wcmVnaW9uIG9wcmVnaW9uOworCiAJLyogUmVnaXN0ZXIgc3RhdGUgKi8KIAl1OCBzYXZlTEJCOwogCXUzMiBzYXZlRFNQQUNOVFI7CkBAIC0xMzksNyArMTc1LDcgQEAKIAl1MzIgc2F2ZURTUEFTVFJJREU7CiAJdTMyIHNhdmVEU1BBU0laRTsKIAl1MzIgc2F2ZURTUEFQT1M7Ci0JdTMyIHNhdmVEU1BBQkFTRTsKKwl1MzIgc2F2ZURTUEFBRERSOwogCXUzMiBzYXZlRFNQQVNVUkY7CiAJdTMyIHNhdmVEU1BBVElMRU9GRjsKIAl1MzIgc2F2ZVBGSVRfUEdNX1JBVElPUzsKQEAgLTE2MCwyNCArMTk2LDI0IEBACiAJdTMyIHNhdmVEU1BCU1RSSURFOwogCXUzMiBzYXZlRFNQQlNJWkU7CiAJdTMyIHNhdmVEU1BCUE9TOwotCXUzMiBzYXZlRFNQQkJBU0U7CisJdTMyIHNhdmVEU1BCQUREUjsKIAl1MzIgc2F2ZURTUEJTVVJGOwogCXUzMiBzYXZlRFNQQlRJTEVPRkY7Ci0JdTMyIHNhdmVWQ0xLX0RJVklTT1JfVkdBMDsKLQl1MzIgc2F2ZVZDTEtfRElWSVNPUl9WR0ExOwotCXUzMiBzYXZlVkNMS19QT1NUX0RJVjsKKwl1MzIgc2F2ZVZHQTA7CisJdTMyIHNhdmVWR0ExOworCXUzMiBzYXZlVkdBX1BEOwogCXUzMiBzYXZlVkdBQ05UUkw7CiAJdTMyIHNhdmVBRFBBOwogCXUzMiBzYXZlTFZEUzsKLQl1MzIgc2F2ZUxWRFNQUF9PTjsKLQl1MzIgc2F2ZUxWRFNQUF9PRkY7CisJdTMyIHNhdmVQUF9PTl9ERUxBWVM7CisJdTMyIHNhdmVQUF9PRkZfREVMQVlTOwogCXUzMiBzYXZlRFZPQTsKIAl1MzIgc2F2ZURWT0I7CiAJdTMyIHNhdmVEVk9DOwogCXUzMiBzYXZlUFBfT047CiAJdTMyIHNhdmVQUF9PRkY7CiAJdTMyIHNhdmVQUF9DT05UUk9MOwotCXUzMiBzYXZlUFBfQ1lDTEU7CisJdTMyIHNhdmVQUF9ESVZJU09SOwogCXUzMiBzYXZlUEZJVF9DT05UUk9MOwogCXUzMiBzYXZlX3BhbGV0dGVfYVsyNTZdOwogCXUzMiBzYXZlX3BhbGV0dGVfYlsyNTZdOwpAQCAtMTkwLDcgKzIyNiw3IEBACiAJdTMyIHNhdmVJTVI7CiAJdTMyIHNhdmVDQUNIRV9NT0RFXzA7CiAJdTMyIHNhdmVEX1NUQVRFOwotCXUzMiBzYXZlRFNQQ0xLX0dBVEVfRDsKKwl1MzIgc2F2ZUNHXzJEX0RJUzsKIAl1MzIgc2F2ZU1JX0FSQl9TVEFURTsKIAl1MzIgc2F2ZVNXRjBbMTZdOwogCXUzMiBzYXZlU1dGMVsxNl07CkBAIC0yMDMsOCArMjM5LDE4MCBAQAogCXU4IHNhdmVEQUNNQVNLOwogCXU4IHNhdmVEQUNEQVRBWzI1NiozXTsgLyogMjU2IDMtYnl0ZSBjb2xvcnMgKi8KIAl1OCBzYXZlQ1JbMzddOworCisJc3RydWN0IHsKKwkJc3RydWN0IGRybV9tbSBndHRfc3BhY2U7CisKKwkJLyoqCisJCSAqIExpc3Qgb2Ygb2JqZWN0cyBjdXJyZW50bHkgaW52b2x2ZWQgaW4gcmVuZGVyaW5nIGZyb20gdGhlCisJCSAqIHJpbmdidWZmZXIuCisJCSAqCisJCSAqIEEgcmVmZXJlbmNlIGlzIGhlbGQgb24gdGhlIGJ1ZmZlciB3aGlsZSBvbiB0aGlzIGxpc3QuCisJCSAqLworCQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OworCisJCS8qKgorCQkgKiBMaXN0IG9mIG9iamVjdHMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgcmluZ2J1ZmZlciBidXQgd2hpY2gKKwkJICogc3RpbGwgaGF2ZSBhIHdyaXRlX2RvbWFpbiB3aGljaCBuZWVkcyB0byBiZSBmbHVzaGVkIGJlZm9yZQorCQkgKiB1bmJpbmRpbmcuCisJCSAqCisJCSAqIEEgcmVmZXJlbmNlIGlzIGhlbGQgb24gdGhlIGJ1ZmZlciB3aGlsZSBvbiB0aGlzIGxpc3QuCisJCSAqLworCQlzdHJ1Y3QgbGlzdF9oZWFkIGZsdXNoaW5nX2xpc3Q7CisKKwkJLyoqCisJCSAqIExSVSBsaXN0IG9mIG9iamVjdHMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgcmluZ2J1ZmZlciBhbmQKKwkJICogYXJlIHJlYWR5IHRvIHVuYmluZCwgYnV0IGFyZSBzdGlsbCBpbiB0aGUgR1RULgorCQkgKgorCQkgKiBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBvbiB0aGUgYnVmZmVyIHdoaWxlIG9uIHRoaXMgbGlzdCwKKwkJICogYXMgbWVyZWx5IGJlaW5nIEdUVC1ib3VuZCBzaG91bGRuJ3QgcHJldmVudCBpdHMgYmVpbmcKKwkJICogZnJlZWQsIGFuZCB3ZSdsbCBwdWxsIGl0IG9mZiB0aGUgbGlzdCBpbiB0aGUgZnJlZSBwYXRoLgorCQkgKi8KKwkJc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9saXN0OworCisJCS8qKgorCQkgKiBMaXN0IG9mIGJyZWFkY3J1bWJzIGFzc29jaWF0ZWQgd2l0aCBHUFUgcmVxdWVzdHMgY3VycmVudGx5CisJCSAqIG91dHN0YW5kaW5nLgorCQkgKi8KKwkJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2xpc3Q7CisKKwkJLyoqCisJCSAqIFdlIGxlYXZlIHRoZSB1c2VyIElSUSBvZmYgYXMgbXVjaCBhcyBwb3NzaWJsZSwKKwkJICogYnV0IHRoaXMgbWVhbnMgdGhhdCByZXF1ZXN0cyB3aWxsIGZpbmlzaCBhbmQgbmV2ZXIKKwkJICogYmUgcmV0aXJlZCBvbmNlIHRoZSBzeXN0ZW0gZ29lcyBpZGxlLiBTZXQgYSB0aW1lciB0bworCQkgKiBmaXJlIHBlcmlvZGljYWxseSB3aGlsZSB0aGUgcmluZyBpcyBydW5uaW5nLiBXaGVuIGl0CisJCSAqIGZpcmVzLCBnbyByZXRpcmUgcmVxdWVzdHMuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIHJldGlyZV93b3JrOworCisJCS8qKiBXb3JrIHRhc2sgZm9yIHZibGFuay1yZWxhdGVkIHJpbmcgYWNjZXNzICovCisJCXN0cnVjdCB3b3JrX3N0cnVjdCB2Ymxhbmtfd29yazsKKworCQl1aW50MzJfdCBuZXh0X2dlbV9zZXFubzsKKworCQkvKioKKwkJICogV2FpdGluZyBzZXF1ZW5jZSBudW1iZXIsIGlmIGFueQorCQkgKi8KKwkJdWludDMyX3Qgd2FpdGluZ19nZW1fc2Vxbm87CisKKwkJLyoqCisJCSAqIExhc3Qgc2VxIHNlZW4gYXQgaXJxIHRpbWUKKwkJICovCisJCXVpbnQzMl90IGlycV9nZW1fc2Vxbm87CisKKwkJLyoqCisJCSAqIEZsYWcgaWYgdGhlIFggU2VydmVyLCBhbmQgdGh1cyBEUk0sIGlzIG5vdCBjdXJyZW50bHkgaW4KKwkJICogY29udHJvbCBvZiB0aGUgZGV2aWNlLgorCQkgKgorCQkgKiBUaGlzIGlzIHNldCBiZXR3ZWVuIExlYXZlVlQgYW5kIEVudGVyVlQuICBJdCBuZWVkcyB0byBiZQorCQkgKiByZXBsYWNlZCB3aXRoIGEgc2VtYXBob3JlLiAgSXQgYWxzbyBuZWVkcyB0byBiZQorCQkgKiB0cmFuc2l0aW9uZWQgYXdheSBmcm9tIGZvciBrZXJuZWwgbW9kZXNldHRpbmcuCisJCSAqLworCQlpbnQgc3VzcGVuZGVkOworCisJCS8qKgorCQkgKiBGbGFnIGlmIHRoZSBoYXJkd2FyZSBhcHBlYXJzIHRvIGJlIHdlZGdlZC4KKwkJICoKKwkJICogVGhpcyBpcyBzZXQgd2hlbiBhdHRlbXB0cyB0byBpZGxlIHRoZSBkZXZpY2UgdGltZW91dC4KKwkJICogSXQgcHJldmVudHMgY29tbWFuZCBzdWJtaXNzaW9uIGZyb20gb2NjdXJpbmcgYW5kIG1ha2VzCisJCSAqIGV2ZXJ5IHBlbmRpbmcgcmVxdWVzdCBmYWlsCisJCSAqLworCQlpbnQgd2VkZ2VkOworCisJCS8qKiBCaXQgNiBzd2l6emxpbmcgcmVxdWlyZWQgZm9yIFggdGlsaW5nICovCisJCXVpbnQzMl90IGJpdF82X3N3aXp6bGVfeDsKKwkJLyoqIEJpdCA2IHN3aXp6bGluZyByZXF1aXJlZCBmb3IgWSB0aWxpbmcgKi8KKwkJdWludDMyX3QgYml0XzZfc3dpenpsZV95OworCX0gbW07CiB9IGRybV9pOTE1X3ByaXZhdGVfdDsKIAorLyoqIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZSBhdHRhY2hlZCB0byBlYWNoIGRybV9nZW1fb2JqZWN0ICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisKKwkvKiogQ3VycmVudCBzcGFjZSBhbGxvY2F0ZWQgdG8gdGhpcyBvYmplY3QgaW4gdGhlIEdUVCwgaWYgYW55LiAqLworCXN0cnVjdCBkcm1fbW1fbm9kZSAqZ3R0X3NwYWNlOworCisJLyoqIFRoaXMgb2JqZWN0J3MgcGxhY2Ugb24gdGhlIGFjdGl2ZS9mbHVzaGluZy9pbmFjdGl2ZSBsaXN0cyAqLworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCS8qKgorCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBvciBmbHVzaGluZyBsaXN0cworCSAqIChoYXMgcGVuZGluZyByZW5kZXJpbmcpLCBhbmQgaXMgbm90IHNldCBpZiBpdCdzIG9uIGluYWN0aXZlIChyZWFkeQorCSAqIHRvIGJlIHVuYm91bmQpLgorCSAqLworCWludCBhY3RpdmU7CisKKwkvKioKKwkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgbGFzdCBib3VuZAorCSAqIHRvIHRoZSBHVFQKKwkgKi8KKwlpbnQgZGlydHk7CisKKwkvKiogQUdQIG1lbW9yeSBzdHJ1Y3R1cmUgZm9yIG91ciBHVFQgYmluZGluZy4gKi8KKwlEUk1fQUdQX01FTSAqYWdwX21lbTsKKworCXN0cnVjdCBwYWdlICoqcGFnZV9saXN0OworCisJLyoqCisJICogQ3VycmVudCBvZmZzZXQgb2YgdGhlIG9iamVjdCBpbiBHVFQgc3BhY2UuCisJICoKKwkgKiBUaGlzIGlzIHRoZSBzYW1lIGFzIGd0dF9zcGFjZS0+c3RhcnQKKwkgKi8KKwl1aW50MzJfdCBndHRfb2Zmc2V0OworCisJLyoqIEJvb2xlYW4gd2hldGhlciB0aGlzIG9iamVjdCBoYXMgYSB2YWxpZCBndHQgb2Zmc2V0LiAqLworCWludCBndHRfYm91bmQ7CisKKwkvKiogSG93IG1hbnkgdXNlcnMgaGF2ZSBwaW5uZWQgdGhpcyBvYmplY3QgaW4gR1RUIHNwYWNlICovCisJaW50IHBpbl9jb3VudDsKKworCS8qKiBCcmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5nIHRvIHRoZSBidWZmZXIuICovCisJdWludDMyX3QgbGFzdF9yZW5kZXJpbmdfc2Vxbm87CisKKwkvKiogQ3VycmVudCB0aWxpbmcgbW9kZSBmb3IgdGhlIG9iamVjdC4gKi8KKwl1aW50MzJfdCB0aWxpbmdfbW9kZTsKKworCS8qKiBBR1AgbWFwcGluZyB0eXBlIChBR1BfVVNFUl9NRU1PUlkgb3IgQUdQX1VTRVJfQ0FDSEVEX01FTU9SWSAqLworCXVpbnQzMl90IGFncF90eXBlOworCisJLyoqCisJICogRmxhZ2dpbmcgb2Ygd2hpY2ggaW5kaXZpZHVhbCBwYWdlcyBhcmUgdmFsaWQgaW4gR0VNX0RPTUFJTl9DUFUgd2hlbgorCSAqIEdFTV9ET01BSU5fQ1BVIGlzIG5vdCBpbiB0aGUgb2JqZWN0J3MgcmVhZCBkb21haW4uCisJICovCisJdWludDhfdCAqcGFnZV9jcHVfdmFsaWQ7Cit9OworCisvKioKKyAqIFJlcXVlc3QgcXVldWUgc3RydWN0dXJlLgorICoKKyAqIFRoZSByZXF1ZXN0IHF1ZXVlIGFsbG93cyB1cyB0byBub3RlIHNlcXVlbmNlIG51bWJlcnMgdGhhdCBoYXZlIGJlZW4gZW1pdHRlZAorICogYW5kIG1heSBiZSBhc3NvY2lhdGVkIHdpdGggYWN0aXZlIGJ1ZmZlcnMgdG8gYmUgcmV0aXJlZC4KKyAqCisgKiBCeSBrZWVwaW5nIHRoaXMgbGlzdCwgd2UgY2FuIGF2b2lkIGhhdmluZyB0byBkbyBxdWVzdGlvbmFibGUKKyAqIHNlcXVlbmNlLW51bWJlciBjb21wYXJpc29ucyBvbiBidWZmZXIgbGFzdF9yZW5kZXJpbmdfc2Vxbm9zLCBhbmQgYXNzb2NpYXRlCisgKiBhbiBlbWlzc2lvbiB0aW1lIHdpdGggc2Vxbm9zIGZvciB0cmFja2luZyBob3cgZmFyIGFoZWFkIG9mIHRoZSBHUFUgd2UgYXJlLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgeworCS8qKiBHRU0gc2VxdWVuY2UgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QuICovCisJdWludDMyX3Qgc2Vxbm87CisKKwkvKiogVGltZSBhdCB3aGljaCB0aGlzIHJlcXVlc3Qgd2FzIGVtaXR0ZWQsIGluIGppZmZpZXMuICovCisJdW5zaWduZWQgbG9uZyBlbWl0dGVkX2ppZmZpZXM7CisKKwkvKiogQ2FjaGUgZG9tYWlucyB0aGF0IHdlcmUgZmx1c2hlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHJlcXVlc3QuICovCisJdWludDMyX3QgZmx1c2hfZG9tYWluczsKKworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgeworCXN0cnVjdCB7CisJCXVpbnQzMl90IGxhc3RfZ2VtX3NlcW5vOworCQl1aW50MzJfdCBsYXN0X2dlbV90aHJvdHRsZV9zZXFubzsKKwl9IG1tOworfTsKKwogZXh0ZXJuIHN0cnVjdCBkcm1faW9jdGxfZGVzYyBpOTE1X2lvY3Rsc1tdOwogZXh0ZXJuIGludCBpOTE1X21heF9pb2N0bDsKIApAQCAtMjEyLDMxICs0MjAsNDIgQEAKIGV4dGVybiB2b2lkIGk5MTVfa2VybmVsX2xvc3RfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CiBleHRlcm4gaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKiwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiBleHRlcm4gaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqKTsKK2V4dGVybiBpbnQgaTkxNV9kcml2ZXJfb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X2RyaXZlcl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9kcml2ZXJfcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworZXh0ZXJuIHZvaWQgaTkxNV9kcml2ZXJfcG9zdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBleHRlcm4gaW50IGk5MTVfZHJpdmVyX2RldmljZV9pc19hZ3Aoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwogZXh0ZXJuIGxvbmcgaTkxNV9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsCiAJCQkgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CitleHRlcm4gaW50IGk5MTVfZW1pdF9ib3goc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCBfX3VzZXIgKmJveGVzLAorCQkJIGludCBpLCBpbnQgRFIxLCBpbnQgRFI0KTsKIAogLyogaTkxNV9pcnEuYyAqLwogZXh0ZXJuIGludCBpOTE1X2lycV9lbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCBpOTE1X2lycV93YWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwordm9pZCBpOTE1X3VzZXJfaXJxX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgaTkxNV91c2VyX2lycV9wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKLWV4dGVybiBpbnQgaTkxNV9kcml2ZXJfdmJsYW5rX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSk7Ci1leHRlcm4gaW50IGk5MTVfZHJpdmVyX3ZibGFua193YWl0MihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKTsKK2V4dGVybiB2b2lkIGk5MTVfZ2VtX3ZibGFua193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIGV4dGVybiBpcnFyZXR1cm5fdCBpOTE1X2RyaXZlcl9pcnFfaGFuZGxlcihEUk1fSVJRX0FSR1MpOwogZXh0ZXJuIHZvaWQgaTkxNV9kcml2ZXJfaXJxX3ByZWluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwotZXh0ZXJuIHZvaWQgaTkxNV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKK2V4dGVybiBpbnQgaTkxNV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9kcml2ZXJfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CiBleHRlcm4gaW50IGk5MTVfdmJsYW5rX3BpcGVfc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCBpOTE1X3ZibGFua19waXBlX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2V4dGVybiBpbnQgaTkxNV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK2V4dGVybiB2b2lkIGk5MTVfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIHUzMiBpOTE1X2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CiBleHRlcm4gaW50IGk5MTVfdmJsYW5rX3N3YXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitleHRlcm4gdm9pZCBpOTE1X2VuYWJsZV9pcnEoZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdTMyIG1hc2spOwogCiAvKiBpOTE1X21lbS5jICovCiBleHRlcm4gaW50IGk5MTVfbWVtX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCkBAIC0yNTAsMTEgKzQ2OSw5OSBAQAogZXh0ZXJuIHZvaWQgaTkxNV9tZW1fdGFrZWRvd24oc3RydWN0IG1lbV9ibG9jayAqKmhlYXApOwogZXh0ZXJuIHZvaWQgaTkxNV9tZW1fcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwKIAkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBtZW1fYmxvY2sgKmhlYXApOworLyogaTkxNV9nZW0uYyAqLworaW50IGk5MTVfZ2VtX2luaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGk5MTVfZ2VtX3ByZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgaTkxNV9nZW1fbW1hcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGk5MTVfZ2VtX3NldF9kb21haW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV9zd19maW5pc2hfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGk5MTVfZ2VtX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV9waW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV91bnBpbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgaTkxNV9nZW1fdGhyb3R0bGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgaTkxNV9nZW1fZW50ZXJ2dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGk5MTVfZ2VtX2xlYXZldnRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBpOTE1X2dlbV9zZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgaTkxNV9nZW1fZ2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwordm9pZCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworaW50IGk5MTVfZ2VtX3Byb2NfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7Cit2b2lkIGk5MTVfZ2VtX3Byb2NfY2xlYW51cChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7CitpbnQgaTkxNV9nZW1faW5pdF9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitpbnQgaTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdWludDMyX3QgYWxpZ25tZW50KTsKK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgaTkxNV9nZW1fbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordWludDMyX3QgaTkxNV9nZXRfZ2VtX3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIGk5MTVfZ2VtX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKK3ZvaWQgaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCi0jZGVmaW5lIEk5MTVfUkVBRChyZWcpICAgICAgICAgIERSTV9SRUFEMzIoZGV2X3ByaXYtPm1taW9fbWFwLCAocmVnKSkKLSNkZWZpbmUgSTkxNV9XUklURShyZWcsdmFsKSAgICAgRFJNX1dSSVRFMzIoZGV2X3ByaXYtPm1taW9fbWFwLCAocmVnKSwgKHZhbCkpCi0jZGVmaW5lIEk5MTVfUkVBRDE2KHJlZykJRFJNX1JFQUQxNihkZXZfcHJpdi0+bW1pb19tYXAsIChyZWcpKQotI2RlZmluZSBJOTE1X1dSSVRFMTYocmVnLHZhbCkJRFJNX1dSSVRFMTYoZGV2X3ByaXYtPm1taW9fbWFwLCAocmVnKSwgKHZhbCkpCisvKiBpOTE1X2dlbV90aWxpbmcuYyAqLwordm9pZCBpOTE1X2dlbV9kZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKworLyogaTkxNV9nZW1fZGVidWcuYyAqLwordm9pZCBpOTE1X2dlbV9kdW1wX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgaW50IGxlbiwKKwkJCSAgY29uc3QgY2hhciAqd2hlcmUsIHVpbnQzMl90IG1hcmspOworI2lmIFdBVENIX0lOQUNUSVZFCit2b2lkIGk5MTVfdmVyaWZ5X2luYWN0aXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyNlbHNlCisjZGVmaW5lIGk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgZmlsZSwgbGluZSkKKyNlbmRpZgordm9pZCBpOTE1X2dlbV9vYmplY3RfY2hlY2tfY29oZXJlbmN5KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBpbnQgaGFuZGxlKTsKK3ZvaWQgaTkxNV9nZW1fZHVtcF9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBsZW4sCisJCQkgIGNvbnN0IGNoYXIgKndoZXJlLCB1aW50MzJfdCBtYXJrKTsKK3ZvaWQgaTkxNV9kdW1wX2xydShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICp3aGVyZSk7CisKKy8qIGk5MTVfc3VzcGVuZC5jICovCitleHRlcm4gaW50IGk5MTVfc2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisvKiBpOTE1X3N1c3BlbmQuYyAqLworZXh0ZXJuIGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gaW50IGk5MTVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKworLyogaTkxNV9vcHJlZ2lvbi5jICovCitleHRlcm4gaW50IGludGVsX29wcmVnaW9uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZCBpbnRlbF9vcHJlZ2lvbl9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgb3ByZWdpb25fYXNsZV9pbnRyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgb3ByZWdpb25fZW5hYmxlX2FzbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKKy8qKgorICogTG9jayB0ZXN0IGZvciB3aGVuIGl0J3MganVzdCBmb3Igc3luY2hyb25pemF0aW9uIG9mIHJpbmcgYWNjZXNzLgorICoKKyAqIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBpdCB3aGVuIEdFTSBpcyBpbml0aWFsaXplZCBhcyBub2JvZHkgZWxzZQorICogaGFzIGFjY2VzcyB0byB0aGUgcmluZy4KKyAqLworI2RlZmluZSBSSU5HX0xPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdikgZG8gewkJCVwKKwlpZiAoKChkcm1faTkxNV9wcml2YXRlX3QgKilkZXYtPmRldl9wcml2YXRlKS0+cmluZy5yaW5nX29iaiA9PSBOVUxMKSBcCisJCUxPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdik7CQkJXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBJOTE1X1JFQUQocmVnKSAgICAgICAgICByZWFkbChkZXZfcHJpdi0+cmVncyArIChyZWcpKQorI2RlZmluZSBJOTE1X1dSSVRFKHJlZywgdmFsKSAgICAgd3JpdGVsKHZhbCwgZGV2X3ByaXYtPnJlZ3MgKyAocmVnKSkKKyNkZWZpbmUgSTkxNV9SRUFEMTYocmVnKQlyZWFkdyhkZXZfcHJpdi0+cmVncyArIChyZWcpKQorI2RlZmluZSBJOTE1X1dSSVRFMTYocmVnLCB2YWwpCXdyaXRlbCh2YWwsIGRldl9wcml2LT5yZWdzICsgKHJlZykpCisjZGVmaW5lIEk5MTVfUkVBRDgocmVnKQkJcmVhZGIoZGV2X3ByaXYtPnJlZ3MgKyAocmVnKSkKKyNkZWZpbmUgSTkxNV9XUklURTgocmVnLCB2YWwpCXdyaXRlYih2YWwsIGRldl9wcml2LT5yZWdzICsgKHJlZykpCiAKICNkZWZpbmUgSTkxNV9WRVJCT1NFIDAKIApAQCAtMjg0LDgxNiArNTkxLDI5IEBACiAJaWYgKEk5MTVfVkVSQk9TRSkgRFJNX0RFQlVHKCJBRFZBTkNFX0xQX1JJTkcgJXhcbiIsIG91dHJpbmcpOwlcCiAJZGV2X3ByaXYtPnJpbmcudGFpbCA9IG91dHJpbmc7CQkJCQlcCiAJZGV2X3ByaXYtPnJpbmcuc3BhY2UgLT0gb3V0Y291bnQgKiA0OwkJCQlcCi0JSTkxNV9XUklURShMUF9SSU5HICsgUklOR19UQUlMLCBvdXRyaW5nKTsJCQlcCisJSTkxNV9XUklURShQUkIwX1RBSUwsIG91dHJpbmcpOwkJCVwKIH0gd2hpbGUoMCkKIAotZXh0ZXJuIGludCBpOTE1X3dhaXRfcmluZyhzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgaW50IG4sIGNvbnN0IGNoYXIgKmNhbGxlcik7Ci0KLS8qIEV4dGVuZGVkIGNvbmZpZyBzcGFjZSAqLwotI2RlZmluZSBMQkIgMHhmNAotCi0vKiBWR0Egc3R1ZmYgKi8KLQotI2RlZmluZSBWR0FfU1QwMV9NREEgMHgzYmEKLSNkZWZpbmUgVkdBX1NUMDFfQ0dBIDB4M2RhCi0KLSNkZWZpbmUgVkdBX01TUl9XUklURSAweDNjMgotI2RlZmluZSBWR0FfTVNSX1JFQUQgMHgzY2MKLSNkZWZpbmUgICBWR0FfTVNSX01FTV9FTiAoMTw8MSkKLSNkZWZpbmUgICBWR0FfTVNSX0NHQV9NT0RFICgxPDwwKQotCi0jZGVmaW5lIFZHQV9TUl9JTkRFWCAweDNjNAotI2RlZmluZSBWR0FfU1JfREFUQSAweDNjNQotCi0jZGVmaW5lIFZHQV9BUl9JTkRFWCAweDNjMAotI2RlZmluZSAgIFZHQV9BUl9WSURfRU4gKDE8PDUpCi0jZGVmaW5lIFZHQV9BUl9EQVRBX1dSSVRFIDB4M2MwCi0jZGVmaW5lIFZHQV9BUl9EQVRBX1JFQUQgMHgzYzEKLQotI2RlZmluZSBWR0FfR1JfSU5ERVggMHgzY2UKLSNkZWZpbmUgVkdBX0dSX0RBVEEgMHgzY2YKLS8qIEdSMDUgKi8KLSNkZWZpbmUgICBWR0FfR1JfTUVNX1JFQURfTU9ERV9TSElGVCAzCi0jZGVmaW5lICAgICBWR0FfR1JfTUVNX1JFQURfTU9ERV9QTEFORSAxCi0vKiBHUjA2ICovCi0jZGVmaW5lICAgVkdBX0dSX01FTV9NT0RFX01BU0sgMHhjCi0jZGVmaW5lICAgVkdBX0dSX01FTV9NT0RFX1NISUZUIDIKLSNkZWZpbmUgICBWR0FfR1JfTUVNX0EwMDAwX0FGRkZGIDAKLSNkZWZpbmUgICBWR0FfR1JfTUVNX0EwMDAwX0JGRkZGIDEKLSNkZWZpbmUgICBWR0FfR1JfTUVNX0IwMDAwX0I3RkZGIDIKLSNkZWZpbmUgICBWR0FfR1JfTUVNX0IwMDAwX0JGRkZGIDMKLQotI2RlZmluZSBWR0FfREFDTUFTSyAweDNjNgotI2RlZmluZSBWR0FfREFDUlggMHgzYzcKLSNkZWZpbmUgVkdBX0RBQ1dYIDB4M2M4Ci0jZGVmaW5lIFZHQV9EQUNEQVRBIDB4M2M5Ci0KLSNkZWZpbmUgVkdBX0NSX0lOREVYX01EQSAweDNiNAotI2RlZmluZSBWR0FfQ1JfREFUQV9NREEgMHgzYjUKLSNkZWZpbmUgVkdBX0NSX0lOREVYX0NHQSAweDNkNAotI2RlZmluZSBWR0FfQ1JfREFUQV9DR0EgMHgzZDUKLQotI2RlZmluZSBHRlhfT1BfVVNFUl9JTlRFUlJVUFQJCSgoMDw8MjkpfCgyPDwyMykpCi0jZGVmaW5lIEdGWF9PUF9CUkVBS1BPSU5UX0lOVEVSUlVQVAkoKDA8PDI5KXwoMTw8MjMpKQotI2RlZmluZSBDTURfUkVQT1JUX0hFQUQJCQkoNzw8MjMpCi0jZGVmaW5lIENNRF9TVE9SRV9EV09SRF9JRFgJCSgoMHgyMTw8MjMpIHwgMHgxKQotI2RlZmluZSBDTURfT1BfQkFUQ0hfQlVGRkVSICAoKDB4MDw8MjkpfCgweDMwPDwyMyl8MHgxKQotCi0jZGVmaW5lIElOU1RfUEFSU0VSX0NMSUVOVCAgIDB4MDAwMDAwMDAKLSNkZWZpbmUgSU5TVF9PUF9GTFVTSCAgICAgICAgMHgwMjAwMDAwMAotI2RlZmluZSBJTlNUX0ZMVVNIX01BUF9DQUNIRSAweDAwMDAwMDAxCi0KLSNkZWZpbmUgQkIxX1NUQVJUX0FERFJfTUFTSyAgICh+MHg3KQotI2RlZmluZSBCQjFfUFJPVEVDVEVEICAgICAgICAgKDE8PDApCi0jZGVmaW5lIEJCMV9VTlBST1RFQ1RFRCAgICAgICAoMDw8MCkKLSNkZWZpbmUgQkIyX0VORF9BRERSX01BU0sgICAgICh+MHg3KQotCi0vKiBGcmFtZWJ1ZmZlciBjb21wcmVzc2lvbiAqLwotI2RlZmluZSBGQkNfQ0ZCX0JBU0UJCTB4MDMyMDAgLyogNGsgcGFnZSBhbGlnbmVkICovCi0jZGVmaW5lIEZCQ19MTF9CQVNFCQkweDAzMjA0IC8qIDRrIHBhZ2UgYWxpZ25lZCAqLwotI2RlZmluZSBGQkNfQ09OVFJPTAkJMHgwMzIwOAotI2RlZmluZSAgIEZCQ19DVExfRU4JCSgxPDwzMSkKLSNkZWZpbmUgICBGQkNfQ1RMX1BFUklPRElDCSgxPDwzMCkKLSNkZWZpbmUgICBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUICgxNikKLSNkZWZpbmUgICBGQkNfQ1RMX1VOQ09NUFJFU1NJQkxFICgxPDwxNCkKLSNkZWZpbmUgICBGQkNfQ1RMX1NUUklERV9TSElGVAkoNSkKLSNkZWZpbmUgICBGQkNfQ1RMX0ZFTkNFTk8JKDE8PDApCi0jZGVmaW5lIEZCQ19DT01NQU5ECQkweDAzMjBjCi0jZGVmaW5lICAgRkJDX0NNRF9DT01QUkVTUwkoMTw8MCkKLSNkZWZpbmUgRkJDX1NUQVRVUwkJMHgwMzIxMAotI2RlZmluZSAgIEZCQ19TVEFUX0NPTVBSRVNTSU5HCSgxPDwzMSkKLSNkZWZpbmUgICBGQkNfU1RBVF9DT01QUkVTU0VECSgxPDwzMCkKLSNkZWZpbmUgICBGQkNfU1RBVF9NT0RJRklFRAkoMTw8MjkpCi0jZGVmaW5lICAgRkJDX1NUQVRfQ1VSUkVOVF9MSU5FCSgxPDwwKQotI2RlZmluZSBGQkNfQ09OVFJPTDIJCTB4MDMyMTQKLSNkZWZpbmUgICBGQkNfQ1RMX0ZFTkNFX0RCTAkoMDw8NCkKLSNkZWZpbmUgICBGQkNfQ1RMX0lETEVfSU1NCSgwPDwyKQotI2RlZmluZSAgIEZCQ19DVExfSURMRV9GVUxMCSgxPDwyKQotI2RlZmluZSAgIEZCQ19DVExfSURMRV9MSU5FCSgyPDwyKQotI2RlZmluZSAgIEZCQ19DVExfSURMRV9ERUJVRwkoMzw8MikKLSNkZWZpbmUgICBGQkNfQ1RMX0NQVV9GRU5DRQkoMTw8MSkKLSNkZWZpbmUgICBGQkNfQ1RMX1BMQU5FQQkoMDw8MCkKLSNkZWZpbmUgICBGQkNfQ1RMX1BMQU5FQgkoMTw8MCkKLSNkZWZpbmUgRkJDX0ZFTkNFX09GRgkJMHgwMzIxYgotCi0jZGVmaW5lIEZCQ19MTF9TSVpFCQkoMTUzNikKLSNkZWZpbmUgRkJDX0xMX1BBRAkJKDMyKQotCi0vKiBJbnRlcnJ1cHQgYml0czoKLSAqLwotI2RlZmluZSBVU0VSX0lOVF9GTEFHICAgICgxPDwxKQotI2RlZmluZSBWU1lOQ19QSVBFQl9GTEFHICgxPDw1KQotI2RlZmluZSBWU1lOQ19QSVBFQV9GTEFHICgxPDw3KQotI2RlZmluZSBIV0JfT09NX0ZMQUcgICAgICgxPDwxMykgLyogYmlubmVyIG91dCBvZiBtZW1vcnkgKi8KLQotI2RlZmluZSBJOTE1UkVHX0hXU1RBTQkJMHgwMjA5OAotI2RlZmluZSBJOTE1UkVHX0lOVF9JREVOVElUWV9SCTB4MDIwYTQKLSNkZWZpbmUgSTkxNVJFR19JTlRfTUFTS19SCTB4MDIwYTgKLSNkZWZpbmUgSTkxNVJFR19JTlRfRU5BQkxFX1IJMHgwMjBhMAotCi0jZGVmaW5lIEk5MTVSRUdfUElQRUFTVEFUCTB4NzAwMjQKLSNkZWZpbmUgSTkxNVJFR19QSVBFQlNUQVQJMHg3MTAyNAotCi0jZGVmaW5lIEk5MTVfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUJKDFVTDw8MTcpCi0jZGVmaW5lIEk5MTVfVkJMQU5LX0NMRUFSCQkoMVVMPDwxKQotCi0jZGVmaW5lIFNSWF9JTkRFWAkJMHgzYzQKLSNkZWZpbmUgU1JYX0RBVEEJCTB4M2M1Ci0jZGVmaW5lIFNSMDEJCQkxCi0jZGVmaW5lIFNSMDFfU0NSRUVOX09GRgkJKDE8PDUpCi0KLSNkZWZpbmUgUFBDUgkJCTB4NjEyMDQKLSNkZWZpbmUgUFBDUl9PTgkJCSgxPDwwKQotCi0jZGVmaW5lIERWT0IJCQkweDYxMTQwCi0jZGVmaW5lIERWT0JfT04JCQkoMTw8MzEpCi0jZGVmaW5lIERWT0MJCQkweDYxMTYwCi0jZGVmaW5lIERWT0NfT04JCQkoMTw8MzEpCi0jZGVmaW5lIExWRFMJCQkweDYxMTgwCi0jZGVmaW5lIExWRFNfT04JCQkoMTw8MzEpCi0KLSNkZWZpbmUgQURQQQkJCTB4NjExMDAKLSNkZWZpbmUgQURQQV9EUE1TX01BU0sJCSh+KDM8PDEwKSkKLSNkZWZpbmUgQURQQV9EUE1TX09OCQkoMDw8MTApCi0jZGVmaW5lIEFEUEFfRFBNU19TVVNQRU5ECSgxPDwxMCkKLSNkZWZpbmUgQURQQV9EUE1TX1NUQU5EQlkJKDI8PDEwKQotI2RlZmluZSBBRFBBX0RQTVNfT0ZGCQkoMzw8MTApCi0KLSNkZWZpbmUgTk9QSUQgICAgICAgICAgICAgICAgICAgMHgyMDk0Ci0jZGVmaW5lIExQX1JJTkcJCQkweDIwMzAKLSNkZWZpbmUgSFBfUklORwkJCTB4MjA0MAotLyogVGhlIGJpbm5lciBoYXMgaXRzIG93biByaW5nIGJ1ZmZlcjoKLSAqLwotI2RlZmluZSBIV0JfUklORwkJMHgyNDAwCi0KLSNkZWZpbmUgUklOR19UQUlMCQkweDAwCi0jZGVmaW5lIFRBSUxfQUREUgkJMHgwMDFGRkZGOAotI2RlZmluZSBSSU5HX0hFQUQJCTB4MDQKLSNkZWZpbmUgSEVBRF9XUkFQX0NPVU5UCQkweEZGRTAwMDAwCi0jZGVmaW5lIEhFQURfV1JBUF9PTkUJCTB4MDAyMDAwMDAKLSNkZWZpbmUgSEVBRF9BRERSCQkweDAwMUZGRkZDCi0jZGVmaW5lIFJJTkdfU1RBUlQJCTB4MDgKLSNkZWZpbmUgU1RBUlRfQUREUgkJMHgweEZGRkZGMDAwCi0jZGVmaW5lIFJJTkdfTEVOCQkweDBDCi0jZGVmaW5lIFJJTkdfTlJfUEFHRVMJCTB4MDAxRkYwMDAKLSNkZWZpbmUgUklOR19SRVBPUlRfTUFTSwkweDAwMDAwMDA2Ci0jZGVmaW5lIFJJTkdfUkVQT1JUXzY0SwkJMHgwMDAwMDAwMgotI2RlZmluZSBSSU5HX1JFUE9SVF8xMjhLCTB4MDAwMDAwMDQKLSNkZWZpbmUgUklOR19OT19SRVBPUlQJCTB4MDAwMDAwMDAKLSNkZWZpbmUgUklOR19WQUxJRF9NQVNLCQkweDAwMDAwMDAxCi0jZGVmaW5lIFJJTkdfVkFMSUQJCTB4MDAwMDAwMDEKLSNkZWZpbmUgUklOR19JTlZBTElECQkweDAwMDAwMDAwCi0KLS8qIEluc3RydWN0aW9uIHBhcnNlciBlcnJvciByZWc6Ci0gKi8KLSNkZWZpbmUgSVBFSVIJCQkweDIwODgKLQotLyogU2NyYXRjaCBwYWQgZGVidWcgMCByZWc6Ci0gKi8KLSNkZWZpbmUgU0NQRDAJCQkweDIwOWMKLQotLyogRXJyb3Igc3RhdHVzIHJlZzoKLSAqLwotI2RlZmluZSBFU1IJCQkweDIwYjgKLQotLyogU2Vjb25kYXJ5IERNQSBmZXRjaCBhZGRyZXNzIGRlYnVnIHJlZzoKLSAqLwotI2RlZmluZSBETUFfRkFERF9TCQkweDIwZDQKLQotLyogTWVtb3J5IEludGVyZmFjZSBBcmJpdHJhdGlvbiBTdGF0ZQotICovCi0jZGVmaW5lIE1JX0FSQl9TVEFURQkJMHgyMGU0Ci0KLS8qIENhY2hlIG1vZGUgMCByZWcuCi0gKiAgLSBNYW5pcHVsYXRpbmcgcmVuZGVyIGNhY2hlIGJlaGF2aW91ciBpcyBjZW50cmFsCi0gKiAgICB0byB0aGUgY29uY2VwdCBvZiB6b25lIHJlbmRlcmluZywgdHVuaW5nIHRoaXMgcmVnIGNhbiBoZWxwIGF2b2lkCi0gKiAgICB1bm5lY2Vzc2FyeSByZW5kZXIgY2FjaGUgcmVhZHMgYW5kIGV2ZW4gd3JpdGVzIChmb3Igei9zdGVuY2lsKQotICogICAgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2Ygc2NlbmUuCisvKioKKyAqIFJlYWRzIGEgZHdvcmQgb3V0IG9mIHRoZSBzdGF0dXMgcGFnZSwgd2hpY2ggaXMgd3JpdHRlbiB0byBmcm9tIHRoZSBjb21tYW5kCisgKiBxdWV1ZSBieSBhdXRvbWF0aWMgdXBkYXRlcywgTUlfUkVQT1JUX0hFQUQsIE1JX1NUT1JFX0RBVEFfSU5ERVgsIG9yCisgKiBNSV9TVE9SRV9EQVRBX0lNTS4KICAqCi0gKiAtIFRvIGNoYW5nZSBhIGJpdCwgd3JpdGUgdG8gdGhpcyByZWcgd2l0aCBhIG1hc2sgYml0IHNldCBhbmQgdGhlCi0gKiBiaXQgb2YgaW50ZXJlc3QgZWl0aGVyIHNldCBvciBjbGVhcmVkLiAgRUc6IChCSVQ8PDE2KSB8IEJJVCB0byBzZXQuCisgKiBUaGUgZm9sbG93aW5nIGR3b3JkcyBoYXZlIGEgcmVzZXJ2ZWQgbWVhbmluZzoKKyAqIDB4MDA6IElTUiBjb3B5LCB1cGRhdGVkIHdoZW4gYW4gSVNSIGJpdCBub3Qgc2V0IGluIHRoZSBIV1NUQU0gY2hhbmdlcy4KKyAqIDB4MDQ6IHJpbmcgMCBoZWFkIHBvaW50ZXIKKyAqIDB4MDU6IHJpbmcgMSBoZWFkIHBvaW50ZXIgKDkxNS1jbGFzcykKKyAqIDB4MDY6IHJpbmcgMiBoZWFkIHBvaW50ZXIgKDkxNS1jbGFzcykKKyAqIDB4MTAtMHgxYjogQ29udGV4dCBzdGF0dXMgRFdvcmRzIChHTTQ1KQorICogMHgxZjogTGFzdCB3cml0dGVuIHN0YXR1cyBvZmZzZXQuIChHTTQ1KQorICoKKyAqIFRoZSBhcmVhIGZyb20gZHdvcmQgMHgyMCB0byAweDNmZiBpcyBhdmFpbGFibGUgZm9yIGRyaXZlciB1c2FnZS4KICAqLwotI2RlZmluZSBDYWNoZV9Nb2RlXzAJCTB4MjEyMAotI2RlZmluZSBDQUNIRV9NT0RFXzAJCTB4MjEyMAotI2RlZmluZSBDTTBfTUFTS19TSElGVCAgICAgICAgICAxNgotI2RlZmluZSBDTTBfSVpfT1BUX0RJU0FCTEUgICAgICAoMTw8NikKLSNkZWZpbmUgQ00wX1pSX09QVF9ESVNBQkxFICAgICAgKDE8PDUpCi0jZGVmaW5lIENNMF9ERVBUSF9FVklDVF9ESVNBQkxFICgxPDw0KQotI2RlZmluZSBDTTBfQ09MT1JfRVZJQ1RfRElTQUJMRSAoMTw8MykKLSNkZWZpbmUgQ00wX0RFUFRIX1dSSVRFX0RJU0FCTEUgKDE8PDEpCi0jZGVmaW5lIENNMF9SQ19PUF9GTFVTSF9ESVNBQkxFICgxPDwwKQotCi0KLS8qIEdyYXBoaWNzIGZsdXNoIGNvbnRyb2wuICBBIENQVSB3cml0ZSBmbHVzaGVzIHRoZSBHV0Igb2YgYWxsIHdyaXRlcy4KLSAqIFRoZSBkYXRhIGlzIGRpc2NhcmRlZC4KLSAqLwotI2RlZmluZSBHRlhfRkxTSF9DTlRMCQkweDIxNzAKLQotLyogQmlubmVyIGNvbnRyb2wuICBEZWZpbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYmluIHBvaW50ZXIgbGlzdDoKLSAqLwotI2RlZmluZSBCSU5DVEwJCQkweDI0MjAKLSNkZWZpbmUgQkNfTUFTSwkJCSgxIDw8IDkpCi0KLS8qIEJpbm5lZCBzY2VuZSBpbmZvLgotICovCi0jZGVmaW5lIEJJTlNDRU5FCQkweDI0MjgKLSNkZWZpbmUgQlNfT1BfTE9BRAkJKDEgPDwgOCkKLSNkZWZpbmUgQlNfTUFTSwkJCSgxIDw8IDIyKQotCi0vKiBCaW4gY29tbWFuZCBwYXJzZXIgZGVidWcgcmVnOgotICovCi0jZGVmaW5lIEJDUEQJCQkweDI0ODAKLQotLyogQmluIG1lbW9yeSBjb250cm9sIGRlYnVnIHJlZzoKLSAqLwotI2RlZmluZSBCTUNECQkJMHgyNDg0Ci0KLS8qIEJpbiBkYXRhIGNhY2hlIGRlYnVnIHJlZzoKLSAqLwotI2RlZmluZSBCRENECQkJMHgyNDg4Ci0KLS8qIEJpbm5lciBwb2ludGVyIGNhY2hlIGRlYnVnIHJlZzoKLSAqLwotI2RlZmluZSBCUENECQkJMHgyNDhjCi0KLS8qIEJpbm5lciBzY3JhdGNoIHBhZCBkZWJ1ZyByZWc6Ci0gKi8KLSNkZWZpbmUgQklOU0tQRAkJCTB4MjRmMAotCi0vKiBIV0Igc2NyYXRjaCBwYWQgZGVidWcgcmVnOgotICovCi0jZGVmaW5lIEhXQlNLUEQJCQkweDI0ZjQKLQotLyogQmlubmVyIG1lbW9yeSBwb29sIHJlZzoKLSAqLwotI2RlZmluZSBCTVBfQlVGRkVSCQkweDI0MzAKLSNkZWZpbmUgQk1QX1BBR0VfU0laRV80SwkoMCA8PCAxMCkKLSNkZWZpbmUgQk1QX0JVRkZFUl9TSVpFX1NISUZUCTEKLSNkZWZpbmUgQk1QX0VOQUJMRQkJKDEgPDwgMCkKLQotLyogR2V0L3B1dCBtZW1vcnkgZnJvbSB0aGUgYmlubmVyIG1lbW9yeSBwb29sOgotICovCi0jZGVmaW5lIEJNUF9HRVQJCQkweDI0MzgKLSNkZWZpbmUgQk1QX1BVVAkJCTB4MjQ0MAotI2RlZmluZSBCTVBfT0ZGU0VUX1NISUZUCTUKLQotLyogM0Qgc3RhdGUgcGFja2V0czoKLSAqLwotI2RlZmluZSBHRlhfT1BfUkFTVEVSX1JVTEVTICAgICgoMHgzPDwyOSl8KDB4Nzw8MjQpKQotCi0jZGVmaW5lIEdGWF9PUF9TQ0lTU09SICAgICAgICAgKCgweDM8PDI5KXwoMHgxYzw8MjQpfCgweDEwPDwxOSkpCi0jZGVmaW5lIFNDX1VQREFURV9TQ0lTU09SICAgICAgICgweDE8PDEpCi0jZGVmaW5lIFNDX0VOQUJMRV9NQVNLICAgICAgICAgICgweDE8PDApCi0jZGVmaW5lIFNDX0VOQUJMRSAgICAgICAgICAgICAgICgweDE8PDApCi0KLSNkZWZpbmUgR0ZYX09QX0xPQURfSU5ESVJFQ1QgICAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8KDB4Nzw8MTYpKQotCi0jZGVmaW5lIEdGWF9PUF9TQ0lTU09SX0lORk8gICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgxPDwxNil8KDB4MSkpCi0jZGVmaW5lIFNDSV9ZTUlOX01BU0sgICAgICAoMHhmZmZmPDwxNikKLSNkZWZpbmUgU0NJX1hNSU5fTUFTSyAgICAgICgweGZmZmY8PDApCi0jZGVmaW5lIFNDSV9ZTUFYX01BU0sgICAgICAoMHhmZmZmPDwxNikKLSNkZWZpbmUgU0NJX1hNQVhfTUFTSyAgICAgICgweGZmZmY8PDApCi0KLSNkZWZpbmUgR0ZYX09QX1NDSVNTT1JfRU5BQkxFCSAoKDB4Mzw8MjkpfCgweDFjPDwyNCl8KDB4MTA8PDE5KSkKLSNkZWZpbmUgR0ZYX09QX1NDSVNTT1JfUkVDVAkgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgxPDwxNil8MSkKLSNkZWZpbmUgR0ZYX09QX0NPTE9SX0ZBQ1RPUiAgICAgICgoMHgzPDwyOSl8KDB4MWQ8PDI0KXwoMHgxPDwxNil8MHgwKQotI2RlZmluZSBHRlhfT1BfU1RJUFBMRSAgICAgICAgICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgzPDwxNikpCi0jZGVmaW5lIEdGWF9PUF9NQVBfSU5GTyAgICAgICAgICAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8MHg0KQotI2RlZmluZSBHRlhfT1BfREVTVEJVRkZFUl9WQVJTICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDg1PDwxNil8MHgwKQotI2RlZmluZSBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAgICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgwPDwxNil8KDB4MykpCi0KLSNkZWZpbmUgR0ZYX09QX0RSQVdSRUNUX0lORk9fSTk2NSAoKDB4NzkwMDw8MTYpfDB4MikKLQotI2RlZmluZSBTUkNfQ09QWV9CTFRfQ01EICAgICAgICAgICAgICAgICgoMjw8MjkpfCgweDQzPDwyMil8NCkKLSNkZWZpbmUgWFlfU1JDX0NPUFlfQkxUX0NNRAkJKCgyPDwyOSl8KDB4NTM8PDIyKXw2KQotI2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEJKDE8PDIxKQotI2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCCSgxPDwyMCkKLSNkZWZpbmUgWFlfU1JDX0NPUFlfQkxUX1NSQ19USUxFRAkoMTw8MTUpCi0jZGVmaW5lIFhZX1NSQ19DT1BZX0JMVF9EU1RfVElMRUQJKDE8PDExKQotCi0jZGVmaW5lIE1JX0JBVENIX0JVRkZFUgkJKCgweDMwPDwyMyl8MSkKLSNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUCSgweDMxPDwyMykKLSNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVSX0VORAkoMHhBPDwyMykKLSNkZWZpbmUgTUlfQkFUQ0hfTk9OX1NFQ1VSRQkoMSkKLSNkZWZpbmUgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1ICgxPDw4KQotCi0jZGVmaW5lIE1JX1dBSVRfRk9SX0VWRU5UICAgICAgICgoMHgzPDwyMykpCi0jZGVmaW5lIE1JX1dBSVRfRk9SX1BMQU5FX0JfRkxJUCAgICAgICgxPDw2KQotI2RlZmluZSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVAgICAgICAoMTw8MikKLSNkZWZpbmUgTUlfV0FJVF9GT1JfUExBTkVfQV9TQ0FOTElORVMgKDE8PDEpCi0KLSNkZWZpbmUgTUlfTE9BRF9TQ0FOX0xJTkVTX0lOQ0wgICgoMHgxMjw8MjMpKQotCi0jZGVmaW5lIENNRF9PUF9ESVNQTEFZQlVGRkVSX0lORk8gKCgweDA8PDI5KXwoMHgxNDw8MjMpfDIpCi0jZGVmaW5lIEFTWU5DX0ZMSVAgICAgICAgICAgICAgICAgKDE8PDIyKQotI2RlZmluZSBESVNQTEFZX1BMQU5FX0EgICAgICAgICAgICgwPDwyMCkKLSNkZWZpbmUgRElTUExBWV9QTEFORV9CICAgICAgICAgICAoMTw8MjApCi0KLS8qIERpc3BsYXkgcmVncyAqLwotI2RlZmluZSBEU1BBQ05UUiAgICAgICAgICAgICAgICAweDcwMTgwCi0jZGVmaW5lIERTUEJDTlRSICAgICAgICAgICAgICAgIDB4NzExODAKLSNkZWZpbmUgRElTUFBMQU5FX1NFTF9QSVBFX01BU0sgICAgICAgICAgICAgICAgICgxPDwyNCkKLQotLyogRGVmaW5lIHRoZSByZWdpb24gb2YgaW50ZXJlc3QgZm9yIHRoZSBiaW5uZXI6Ci0gKi8KLSNkZWZpbmUgQ01EX09QX0JJTl9DT05UUk9MCSAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8KDB4ODQ8PDE2KXw0KQotCi0jZGVmaW5lIENNRF9PUF9ERVNUQlVGRkVSX0lORk8JICgoMHgzPDwyOSl8KDB4MWQ8PDI0KXwoMHg4ZTw8MTYpfDEpCi0KLSNkZWZpbmUgQ01EX01JX0ZMVVNIICAgICAgICAgKDB4MDQgPDwgMjMpCi0jZGVmaW5lIE1JX05PX1dSSVRFX0ZMVVNIICAgICgxIDw8IDIpCi0jZGVmaW5lIE1JX1JFQURfRkxVU0ggICAgICAgICgxIDw8IDApCi0jZGVmaW5lIE1JX0VYRV9GTFVTSCAgICAgICAgICgxIDw8IDEpCi0jZGVmaW5lIE1JX0VORF9TQ0VORSAgICAgICAgICgxIDw8IDQpIC8qIGZsdXNoIGJpbm5lciBhbmQgaW5jciBzY2VuZSBjb3VudCAqLwotI2RlZmluZSBNSV9TQ0VORV9DT1VOVCAgICAgICAoMSA8PCAzKSAvKiBqdXN0IGluY3JlbWVudCBzY2VuZSBjb3VudCAqLwotCi0jZGVmaW5lIEJSRUFEQ1JVTUJfQklUUyAzMQotI2RlZmluZSBCUkVBRENSVU1CX01BU0sgKCgxVSA8PCBCUkVBRENSVU1CX0JJVFMpIC0gMSkKLQotI2RlZmluZSBSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpICAoKCh2b2xhdGlsZSB1MzIqKShkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UpKVs1XSkKICNkZWZpbmUgUkVBRF9IV1NQKGRldl9wcml2LCByZWcpICAoKCh2b2xhdGlsZSB1MzIqKShkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UpKVtyZWddKQorI2RlZmluZSBSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpIFJFQURfSFdTUChkZXZfcHJpdiwgNSkKKyNkZWZpbmUgSTkxNV9HRU1fSFdTX0lOREVYCQkweDIwCiAKLSNkZWZpbmUgQkxDX1BXTV9DVEwJCTB4NjEyNTQKLSNkZWZpbmUgQkFDS0xJR0hUX01PRFVMQVRJT05fRlJFUV9TSElGVAkJKDE3KQotCi0jZGVmaW5lIEJMQ19QV01fQ1RMMgkJMHg2MTI1MAotLyoqCi0gKiBUaGlzIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IDE1IGJpdHMgb2YgdGhlIG51bWJlciBvZiBiYWNrbGlnaHQgY3ljbGVzIGluIGEKLSAqIGNvbXBsZXRlIGN5Y2xlIG9mIHRoZSBtb2R1bGF0ZWQgYmFja2xpZ2h0IGNvbnRyb2wuCi0gKgotICogVGhlIGFjdHVhbCB2YWx1ZSBpcyB0aGlzIGZpZWxkIG11bHRpcGxpZWQgYnkgdHdvLgotICovCi0jZGVmaW5lIEJBQ0tMSUdIVF9NT0RVTEFUSU9OX0ZSRVFfTUFTSwkJKDB4N2ZmZiA8PCAxNykKLSNkZWZpbmUgQkxNX0xFR0FDWV9NT0RFCQkJCSgxIDw8IDE2KQotLyoqCi0gKiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgY3ljbGVzIG91dCBvZiB0aGUgYmFja2xpZ2h0IG1vZHVsYXRpb24gY3ljbGUgZm9yIHdoaWNoCi0gKiB0aGUgYmFja2xpZ2h0IGlzIG9uLgotICoKLSAqIFRoaXMgZmllbGQgbXVzdCBiZSBubyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjeWNsZXMgaW4gdGhlIGNvbXBsZXRlCi0gKiBiYWNrbGlnaHQgbW9kdWxhdGlvbiBjeWNsZS4KLSAqLwotI2RlZmluZSBCQUNLTElHSFRfRFVUWV9DWUNMRV9TSElGVAkJKDApCi0jZGVmaW5lIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0sJCSgweGZmZmYpCi0KLSNkZWZpbmUgSTkxNV9HQ0ZHQwkJCTB4ZjAKLSNkZWZpbmUgSTkxNV9MT1dfRlJFUVVFTkNZX0VOQUJMRQkJKDEgPDwgNykKLSNkZWZpbmUgSTkxNV9ESVNQTEFZX0NMT0NLXzE5MF8yMDBfTUhaCQkoMCA8PCA0KQotI2RlZmluZSBJOTE1X0RJU1BMQVlfQ0xPQ0tfMzMzX01IWgkJKDQgPDwgNCkKLSNkZWZpbmUgSTkxNV9ESVNQTEFZX0NMT0NLX01BU0sJCQkoNyA8PCA0KQotCi0jZGVmaW5lIEk4NTVfSFBMTENDCQkJMHhjMAotI2RlZmluZSBJODU1X0NMT0NLX0NPTlRST0xfTUFTSwkJCSgzIDw8IDApCi0jZGVmaW5lIEk4NTVfQ0xPQ0tfMTMzXzIwMAkJCSgwIDw8IDApCi0jZGVmaW5lIEk4NTVfQ0xPQ0tfMTAwXzIwMAkJCSgxIDw8IDApCi0jZGVmaW5lIEk4NTVfQ0xPQ0tfMTAwXzEzMwkJCSgyIDw8IDApCi0jZGVmaW5lIEk4NTVfQ0xPQ0tfMTY2XzI1MAkJCSgzIDw8IDApCi0KLS8qIHAzMTcsIDMxOQotICovCi0jZGVmaW5lIFZDTEsyX1ZDT19NICAgICAgICAweDYwMDggLyogdHJlYXQgYXMgMTYgYml0PyAoaW5jbHVkZXMgbXNicykgKi8KLSNkZWZpbmUgVkNMSzJfVkNPX04gICAgICAgIDB4NjAwYQotI2RlZmluZSBWQ0xLMl9WQ09fRElWX1NFTCAgMHg2MDEyCi0KLSNkZWZpbmUgVkNMS19ESVZJU09SX1ZHQTAgICAweDYwMDAKLSNkZWZpbmUgVkNMS19ESVZJU09SX1ZHQTEgICAweDYwMDQKLSNkZWZpbmUgVkNMS19QT1NUX0RJVgkgICAgMHg2MDEwCi0vKiogU2VsZWN0cyBhIHBvc3QgZGl2aXNvciBvZiA0IGluc3RlYWQgb2YgMi4gKi8KLSMgZGVmaW5lIFZHQTFfUERfUDJfRElWXzQJKDEgPDwgMTUpCi0vKiogT3ZlcnJpZGVzIHRoZSBwMiBwb3N0IGRpdmlzb3IgZmllbGQgKi8KLSMgZGVmaW5lIFZHQTFfUERfUDFfRElWXzIJKDEgPDwgMTMpCi0jIGRlZmluZSBWR0ExX1BEX1AxX1NISUZUCTgKLS8qKiBQMSB2YWx1ZSBpcyAyIGdyZWF0ZXIgdGhhbiB0aGlzIGZpZWxkICovCi0jIGRlZmluZSBWR0ExX1BEX1AxX01BU0sJKDB4MWYgPDwgOCkKLS8qKiBTZWxlY3RzIGEgcG9zdCBkaXZpc29yIG9mIDQgaW5zdGVhZCBvZiAyLiAqLwotIyBkZWZpbmUgVkdBMF9QRF9QMl9ESVZfNAkoMSA8PCA3KQotLyoqIE92ZXJyaWRlcyB0aGUgcDIgcG9zdCBkaXZpc29yIGZpZWxkICovCi0jIGRlZmluZSBWR0EwX1BEX1AxX0RJVl8yCSgxIDw8IDUpCi0jIGRlZmluZSBWR0EwX1BEX1AxX1NISUZUCTAKLS8qKiBQMSB2YWx1ZSBpcyAyIGdyZWF0ZXIgdGhhbiB0aGlzIGZpZWxkICovCi0jIGRlZmluZSBWR0EwX1BEX1AxX01BU0sJKDB4MWYgPDwgMCkKLQotLyogUENJIEQgc3RhdGUgY29udHJvbCByZWdpc3RlciAqLwotI2RlZmluZSBEX1NUQVRFCQkweDYxMDQKLSNkZWZpbmUgRFNQQ0xLX0dBVEVfRAkweDYyMDAKLQotLyogSTgzMCBDUlRDIHJlZ2lzdGVycyAqLwotI2RlZmluZSBIVE9UQUxfQQkweDYwMDAwCi0jZGVmaW5lIEhCTEFOS19BCTB4NjAwMDQKLSNkZWZpbmUgSFNZTkNfQQkJMHg2MDAwOAotI2RlZmluZSBWVE9UQUxfQQkweDYwMDBjCi0jZGVmaW5lIFZCTEFOS19BCTB4NjAwMTAKLSNkZWZpbmUgVlNZTkNfQQkJMHg2MDAxNAotI2RlZmluZSBQSVBFQVNSQwkweDYwMDFjCi0jZGVmaW5lIEJDTFJQQVRfQQkweDYwMDIwCi0jZGVmaW5lIFZTWU5DU0hJRlRfQQkweDYwMDI4Ci0KLSNkZWZpbmUgSFRPVEFMX0IJMHg2MTAwMAotI2RlZmluZSBIQkxBTktfQgkweDYxMDA0Ci0jZGVmaW5lIEhTWU5DX0IJCTB4NjEwMDgKLSNkZWZpbmUgVlRPVEFMX0IJMHg2MTAwYwotI2RlZmluZSBWQkxBTktfQgkweDYxMDEwCi0jZGVmaW5lIFZTWU5DX0IJCTB4NjEwMTQKLSNkZWZpbmUgUElQRUJTUkMJMHg2MTAxYwotI2RlZmluZSBCQ0xSUEFUX0IJMHg2MTAyMAotI2RlZmluZSBWU1lOQ1NISUZUX0IJMHg2MTAyOAotCi0jZGVmaW5lIFBQX1NUQVRVUwkweDYxMjAwCi0jIGRlZmluZSBQUF9PTgkJCQkJKDEgPDwgMzEpCi0vKioKLSAqIEluZGljYXRlcyB0aGF0IGFsbCBkZXBlbmRlbmNpZXMgb2YgdGhlIHBhbmVsIGFyZSBvbjoKLSAqCi0gKiAtIFBMTCBlbmFibGVkCi0gKiAtIHBpcGUgZW5hYmxlZAotICogLSBMVkRTL0RWT0IvRFZPQyBvbgotICovCi0jIGRlZmluZSBQUF9SRUFEWQkJCQkoMSA8PCAzMCkKLSMgZGVmaW5lIFBQX1NFUVVFTkNFX05PTkUJCQkoMCA8PCAyOCkKLSMgZGVmaW5lIFBQX1NFUVVFTkNFX09OCQkJCSgxIDw8IDI4KQotIyBkZWZpbmUgUFBfU0VRVUVOQ0VfT0ZGCQkJKDIgPDwgMjgpCi0jIGRlZmluZSBQUF9TRVFVRU5DRV9NQVNLCQkJMHgzMDAwMDAwMAotI2RlZmluZSBQUF9DT05UUk9MCTB4NjEyMDQKLSMgZGVmaW5lIFBPV0VSX1RBUkdFVF9PTgkJCSgxIDw8IDApCi0KLSNkZWZpbmUgTFZEU1BQX09OICAgICAgIDB4NjEyMDgKLSNkZWZpbmUgTFZEU1BQX09GRiAgICAgIDB4NjEyMGMKLSNkZWZpbmUgUFBfQ1lDTEUgICAgICAgIDB4NjEyMTAKLQotI2RlZmluZSBQRklUX0NPTlRST0wJMHg2MTIzMAotIyBkZWZpbmUgUEZJVF9FTkFCTEUJCQkJKDEgPDwgMzEpCi0jIGRlZmluZSBQRklUX1BJUEVfTUFTSwkJCQkoMyA8PCAyOSkKLSMgZGVmaW5lIFBGSVRfUElQRV9TSElGVAkJCTI5Ci0jIGRlZmluZSBWRVJUX0lOVEVSUF9ESVNBQkxFCQkJKDAgPDwgMTApCi0jIGRlZmluZSBWRVJUX0lOVEVSUF9CSUxJTkVBUgkJCSgxIDw8IDEwKQotIyBkZWZpbmUgVkVSVF9JTlRFUlBfTUFTSwkJCSgzIDw8IDEwKQotIyBkZWZpbmUgVkVSVF9BVVRPX1NDQUxFCQkJKDEgPDwgOSkKLSMgZGVmaW5lIEhPUklaX0lOVEVSUF9ESVNBQkxFCQkJKDAgPDwgNikKLSMgZGVmaW5lIEhPUklaX0lOVEVSUF9CSUxJTkVBUgkJCSgxIDw8IDYpCi0jIGRlZmluZSBIT1JJWl9JTlRFUlBfTUFTSwkJCSgzIDw8IDYpCi0jIGRlZmluZSBIT1JJWl9BVVRPX1NDQUxFCQkJKDEgPDwgNSkKLSMgZGVmaW5lIFBBTkVMXzhUTzZfRElUSEVSX0VOQUJMRQkJKDEgPDwgMykKLQotI2RlZmluZSBQRklUX1BHTV9SQVRJT1MJMHg2MTIzNAotIyBkZWZpbmUgUEZJVF9WRVJUX1NDQUxFX01BU0sJCQkweGZmZjAwMDAwCi0jIGRlZmluZSBQRklUX0hPUklaX1NDQUxFX01BU0sJCQkweDAwMDBmZmYwCi0KLSNkZWZpbmUgUEZJVF9BVVRPX1JBVElPUwkweDYxMjM4Ci0KLQotI2RlZmluZSBEUExMX0EJCTB4MDYwMTQKLSNkZWZpbmUgRFBMTF9CCQkweDA2MDE4Ci0jIGRlZmluZSBEUExMX1ZDT19FTkFCTEUJCQkoMSA8PCAzMSkKLSMgZGVmaW5lIERQTExfRFZPX0hJR0hfU1BFRUQJCQkoMSA8PCAzMCkKLSMgZGVmaW5lIERQTExfU1lOQ0xPQ0tfRU5BQkxFCQkJKDEgPDwgMjkpCi0jIGRlZmluZSBEUExMX1ZHQV9NT0RFX0RJUwkJCSgxIDw8IDI4KQotIyBkZWZpbmUgRFBMTEJfTU9ERV9EQUNfU0VSSUFMCQkJKDEgPDwgMjYpIC8qIGk5MTUgKi8KLSMgZGVmaW5lIERQTExCX01PREVfTFZEUwkJCSgyIDw8IDI2KSAvKiBpOTE1ICovCi0jIGRlZmluZSBEUExMX01PREVfTUFTSwkJCQkoMyA8PCAyNikKLSMgZGVmaW5lIERQTExfREFDX1NFUklBTF9QMl9DTE9DS19ESVZfMTAJKDAgPDwgMjQpIC8qIGk5MTUgKi8KLSMgZGVmaW5lIERQTExfREFDX1NFUklBTF9QMl9DTE9DS19ESVZfNQkJKDEgPDwgMjQpIC8qIGk5MTUgKi8KLSMgZGVmaW5lIERQTExCX0xWRFNfUDJfQ0xPQ0tfRElWXzE0CQkoMCA8PCAyNCkgLyogaTkxNSAqLwotIyBkZWZpbmUgRFBMTEJfTFZEU19QMl9DTE9DS19ESVZfNwkJKDEgPDwgMjQpIC8qIGk5MTUgKi8KLSMgZGVmaW5lIERQTExfUDJfQ0xPQ0tfRElWX01BU0sJCQkweDAzMDAwMDAwIC8qIGk5MTUgKi8KLSMgZGVmaW5lIERQTExfRlBBMDFfUDFfUE9TVF9ESVZfTUFTSwkJMHgwMGZmMDAwMCAvKiBpOTE1ICovCi0vKioKLSAqICBUaGUgaTgzMCBnZW5lcmF0aW9uLCBpbiBEQUMvc2VyaWFsIG1vZGUsIGRlZmluZXMgcDEgYXMgdHdvIHBsdXMgdGhpcwotICogYml0ZmllbGQsIG9yIGp1c3QgMiBpZiBQTExfUDFfRElWSURFX0JZX1RXTyBpcyBzZXQuCi0gKi8KLSMgZGVmaW5lIERQTExfRlBBMDFfUDFfUE9TVF9ESVZfTUFTS19JODMwCTB4MDAxZjAwMDAKLS8qKgotICogVGhlIGk4MzAgZ2VuZXJhdGlvbiwgaW4gTFZEUyBtb2RlLCBkZWZpbmVzIFAxIGFzIHRoZSBiaXQgbnVtYmVyIHNldCB3aXRoaW4KLSAqIHRoaXMgZmllbGQgKG9ubHkgb25lIGJpdCBtYXkgYmUgc2V0KS4KLSAqLwotIyBkZWZpbmUgRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9NQVNLX0k4MzBfTFZEUwkweDAwM2YwMDAwCi0jIGRlZmluZSBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX1NISUZUCQkxNgotIyBkZWZpbmUgUExMX1AyX0RJVklERV9CWV80CQkJKDEgPDwgMjMpIC8qIGk4MzAsIHJlcXVpcmVkIGluIERWTyBub24tZ2FuZyAqLwotIyBkZWZpbmUgUExMX1AxX0RJVklERV9CWV9UV08JCQkoMSA8PCAyMSkgLyogaTgzMCAqLwotIyBkZWZpbmUgUExMX1JFRl9JTlBVVF9EUkVGQ0xLCQkJKDAgPDwgMTMpCi0jIGRlZmluZSBQTExfUkVGX0lOUFVUX1RWQ0xLSU5BCQkJKDEgPDwgMTMpIC8qIGk4MzAgKi8KLSMgZGVmaW5lIFBMTF9SRUZfSU5QVVRfVFZDTEtJTkJDCQkoMiA8PCAxMykgLyogU0RWTyBUVkNMS0lOICovCi0jIGRlZmluZSBQTExCX1JFRl9JTlBVVF9TUFJFQURTUEVDVFJVTUlOCSgzIDw8IDEzKQotIyBkZWZpbmUgUExMX1JFRl9JTlBVVF9NQVNLCQkJKDMgPDwgMTMpCi0jIGRlZmluZSBQTExfTE9BRF9QVUxTRV9QSEFTRV9TSElGVAkJOQotLyoKLSAqIFBhcmFsbGVsIHRvIFNlcmlhbCBMb2FkIFB1bHNlIHBoYXNlIHNlbGVjdGlvbi4KLSAqIFNlbGVjdHMgdGhlIHBoYXNlIGZvciB0aGUgMTBYIERQTEwgY2xvY2sgZm9yIHRoZSBQQ0llCi0gKiBkaWdpdGFsIGRpc3BsYXkgcG9ydC4gVGhlIHJhbmdlIGlzIDQgdG8gMTM7IDEwIG9yIG1vcmUKLSAqIGlzIGp1c3QgYSBmbGlwIGRlbGF5LiBUaGUgZGVmYXVsdCBpcyA2Ci0gKi8KLSMgZGVmaW5lIFBMTF9MT0FEX1BVTFNFX1BIQVNFX01BU0sJCSgweGYgPDwgUExMX0xPQURfUFVMU0VfUEhBU0VfU0hJRlQpCi0jIGRlZmluZSBESVNQTEFZX1JBVEVfU0VMRUNUX0ZQQTEJCSgxIDw8IDgpCi0KLS8qKgotICogU0RWTyBtdWx0aXBsaWVyIGZvciA5NDVHL0dNLiBOb3QgdXNlZCBvbiA5NjUuCi0gKgotICogXHNhIERQTExfTURfVURJX01VTFRJUExJRVJfTUFTSwotICovCi0jIGRlZmluZSBTRFZPX01VTFRJUExJRVJfTUFTSwkJCTB4MDAwMDAwZmYKLSMgZGVmaW5lIFNEVk9fTVVMVElQTElFUl9TSElGVF9ISVJFUwkJNAotIyBkZWZpbmUgU0RWT19NVUxUSVBMSUVSX1NISUZUX1ZHQQkJMAotCi0vKiogQGRlZmdyb3VwIERQTExfTUQKLSAqIEB7Ci0gKi8KLS8qKiBQaXBlIEEgU0RWTy9VREkgY2xvY2sgbXVsdGlwbGllci9kaXZpZGVyIHJlZ2lzdGVyIGZvciBHOTY1LiAqLwotI2RlZmluZSBEUExMX0FfTUQJCTB4MDYwMWMKLS8qKiBQaXBlIEIgU0RWTy9VREkgY2xvY2sgbXVsdGlwbGllci9kaXZpZGVyIHJlZ2lzdGVyIGZvciBHOTY1LiAqLwotI2RlZmluZSBEUExMX0JfTUQJCTB4MDYwMjAKLS8qKgotICogVURJIHBpeGVsIGRpdmlkZXIsIGNvbnRyb2xsaW5nIGhvdyBtYW55IHBpeGVscyBhcmUgc3R1ZmZlZCBpbnRvIGEgcGFja2V0LgotICoKLSAqIFZhbHVlIGlzIHBpeGVscyBtaW51cyAxLiAgTXVzdCBiZSBzZXQgdG8gMSBwaXhlbCBmb3IgU0RWTy4KLSAqLwotIyBkZWZpbmUgRFBMTF9NRF9VRElfRElWSURFUl9NQVNLCQkweDNmMDAwMDAwCi0jIGRlZmluZSBEUExMX01EX1VESV9ESVZJREVSX1NISUZUCQkyNAotLyoqIFVESSBwaXhlbCBkaXZpZGVyIGZvciBWR0EsIHNhbWUgYXMgRFBMTF9NRF9VRElfRElWSURFUl9NQVNLLiAqLwotIyBkZWZpbmUgRFBMTF9NRF9WR0FfVURJX0RJVklERVJfTUFTSwkJMHgwMDNmMDAwMAotIyBkZWZpbmUgRFBMTF9NRF9WR0FfVURJX0RJVklERVJfU0hJRlQJCTE2Ci0vKioKLSAqIFNEVk8vVURJIHBpeGVsIG11bHRpcGxpZXIuCi0gKgotICogU0RWTyByZXF1aXJlcyB0aGF0IHRoZSBidXMgY2xvY2sgcmF0ZSBiZSBiZXR3ZWVuIDEgYW5kIDIgR2h6LCBhbmQgdGhlIGJ1cwotICogY2xvY2sgcmF0ZSBpcyAxMCB0aW1lcyB0aGUgRFBMTCBjbG9jay4gIEF0IGxvdyByZXNvbHV0aW9uL3JlZnJlc2ggcmF0ZQotICogbW9kZXMsIHRoZSBidXMgcmF0ZSB3b3VsZCBiZSBiZWxvdyB0aGUgbGltaXRzLCBzbyBTRFZPIGFsbG93cyBmb3Igc3R1ZmZpbmcKLSAqIGR1bW15IGJ5dGVzIGluIHRoZSBkYXRhc3RyZWFtIGF0IGFuIGluY3JlYXNlZCBjbG9jayByYXRlLCB3aXRoIGJvdGggc2lkZXMgb2YKLSAqIHRoZSBsaW5rIGtub3dpbmcgaG93IG1hbnkgYnl0ZXMgYXJlIGZpbGwuCi0gKgotICogU28sIGZvciBhIG1vZGUgd2l0aCBhIGRvdGNsb2NrIG9mIDY1TWh6LCB3ZSB3b3VsZCB3YW50IHRvIGRvdWJsZSB0aGUgY2xvY2sKLSAqIHJhdGUgdG8gMTMwTWh6IHRvIGdldCBhIGJ1cyByYXRlIG9mIDEuMzBHaHouICBUaGUgRFBMTCBjbG9jayByYXRlIHdvdWxkIGJlCi0gKiBzZXQgdG8gMTMwTWh6LCBhbmQgdGhlIFNEVk8gbXVsdGlwbGllciBzZXQgdG8gMnggaW4gdGhpcyByZWdpc3RlciBhbmQKLSAqIHRocm91Z2ggYW4gU0RWTyBjb21tYW5kLgotICoKLSAqIFRoaXMgcmVnaXN0ZXIgZmllbGQgaGFzIHZhbHVlcyBvZiBtdWx0aXBsaWNhdGlvbiBmYWN0b3IgbWludXMgMSwgd2l0aAotICogYSBtYXhpbXVtIG11bHRpcGxpZXIgb2YgNSBmb3IgU0RWTy4KLSAqLwotIyBkZWZpbmUgRFBMTF9NRF9VRElfTVVMVElQTElFUl9NQVNLCQkweDAwMDAzZjAwCi0jIGRlZmluZSBEUExMX01EX1VESV9NVUxUSVBMSUVSX1NISUZUCQk4Ci0vKiogU0RWTy9VREkgcGl4ZWwgbXVsdGlwbGllciBmb3IgVkdBLCBzYW1lIGFzIERQTExfTURfVURJX01VTFRJUExJRVJfTUFTSy4KLSAqIFRoaXMgYmVzdCBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKDMpIG9yIHRoZSBDUlQgd29uJ3Qgd29yay4gTm8sCi0gKiBJIGRvbid0IGVudGlyZWx5IHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuLi4KLSAqLwotIyBkZWZpbmUgRFBMTF9NRF9WR0FfVURJX01VTFRJUExJRVJfTUFTSwkweDAwMDAwMDNmCi0jIGRlZmluZSBEUExMX01EX1ZHQV9VRElfTVVMVElQTElFUl9TSElGVAkwCi0vKiogQH0gKi8KLQotI2RlZmluZSBEUExMX1RFU1QJCTB4NjA2YwotIyBkZWZpbmUgRFBMTEJfVEVTVF9TRFZPX0RJVl8xCQkJKDAgPDwgMjIpCi0jIGRlZmluZSBEUExMQl9URVNUX1NEVk9fRElWXzIJCQkoMSA8PCAyMikKLSMgZGVmaW5lIERQTExCX1RFU1RfU0RWT19ESVZfNAkJCSgyIDw8IDIyKQotIyBkZWZpbmUgRFBMTEJfVEVTVF9TRFZPX0RJVl9NQVNLCQkoMyA8PCAyMikKLSMgZGVmaW5lIERQTExCX1RFU1RfTl9CWVBBU1MJCQkoMSA8PCAxOSkKLSMgZGVmaW5lIERQTExCX1RFU1RfTV9CWVBBU1MJCQkoMSA8PCAxOCkKLSMgZGVmaW5lIERQTExCX0lOUFVUX0JVRkZFUl9FTkFCTEUJCSgxIDw8IDE2KQotIyBkZWZpbmUgRFBMTEFfVEVTVF9OX0JZUEFTUwkJCSgxIDw8IDMpCi0jIGRlZmluZSBEUExMQV9URVNUX01fQllQQVNTCQkJKDEgPDwgMikKLSMgZGVmaW5lIERQTExBX0lOUFVUX0JVRkZFUl9FTkFCTEUJCSgxIDw8IDApCi0KLSNkZWZpbmUgQURQQQkJCTB4NjExMDAKLSNkZWZpbmUgQURQQV9EQUNfRU5BQkxFCQkoMTw8MzEpCi0jZGVmaW5lIEFEUEFfREFDX0RJU0FCTEUJMAotI2RlZmluZSBBRFBBX1BJUEVfU0VMRUNUX01BU0sJKDE8PDMwKQotI2RlZmluZSBBRFBBX1BJUEVfQV9TRUxFQ1QJMAotI2RlZmluZSBBRFBBX1BJUEVfQl9TRUxFQ1QJKDE8PDMwKQotI2RlZmluZSBBRFBBX1VTRV9WR0FfSFZQT0xBUklUWSAoMTw8MTUpCi0jZGVmaW5lIEFEUEFfU0VUU19IVlBPTEFSSVRZCTAKLSNkZWZpbmUgQURQQV9WU1lOQ19DTlRMX0RJU0FCTEUgKDE8PDExKQotI2RlZmluZSBBRFBBX1ZTWU5DX0NOVExfRU5BQkxFCTAKLSNkZWZpbmUgQURQQV9IU1lOQ19DTlRMX0RJU0FCTEUgKDE8PDEwKQotI2RlZmluZSBBRFBBX0hTWU5DX0NOVExfRU5BQkxFCTAKLSNkZWZpbmUgQURQQV9WU1lOQ19BQ1RJVkVfSElHSAkoMTw8NCkKLSNkZWZpbmUgQURQQV9WU1lOQ19BQ1RJVkVfTE9XCTAKLSNkZWZpbmUgQURQQV9IU1lOQ19BQ1RJVkVfSElHSAkoMTw8MykKLSNkZWZpbmUgQURQQV9IU1lOQ19BQ1RJVkVfTE9XCTAKLQotI2RlZmluZSBGUEEwCQkweDA2MDQwCi0jZGVmaW5lIEZQQTEJCTB4MDYwNDQKLSNkZWZpbmUgRlBCMAkJMHgwNjA0OAotI2RlZmluZSBGUEIxCQkweDA2MDRjCi0jIGRlZmluZSBGUF9OX0RJVl9NQVNLCQkJCTB4MDAzZjAwMDAKLSMgZGVmaW5lIEZQX05fRElWX1NISUZUCQkJCTE2Ci0jIGRlZmluZSBGUF9NMV9ESVZfTUFTSwkJCQkweDAwMDAzZjAwCi0jIGRlZmluZSBGUF9NMV9ESVZfU0hJRlQJCQk4Ci0jIGRlZmluZSBGUF9NMl9ESVZfTUFTSwkJCQkweDAwMDAwMDNmCi0jIGRlZmluZSBGUF9NMl9ESVZfU0hJRlQJCQkwCi0KLQotI2RlZmluZSBQT1JUX0hPVFBMVUdfRU4JCTB4NjExMTAKLSMgZGVmaW5lIFNEVk9CX0hPVFBMVUdfSU5UX0VOCQkJKDEgPDwgMjYpCi0jIGRlZmluZSBTRFZPQ19IT1RQTFVHX0lOVF9FTgkJCSgxIDw8IDI1KQotIyBkZWZpbmUgVFZfSE9UUExVR19JTlRfRU4JCQkoMSA8PCAxOCkKLSMgZGVmaW5lIENSVF9IT1RQTFVHX0lOVF9FTgkJCSgxIDw8IDkpCi0jIGRlZmluZSBDUlRfSE9UUExVR19GT1JDRV9ERVRFQ1QJCSgxIDw8IDMpCi0KLSNkZWZpbmUgUE9SVF9IT1RQTFVHX1NUQVQJMHg2MTExNAotIyBkZWZpbmUgQ1JUX0hPVFBMVUdfSU5UX1NUQVRVUwkJCSgxIDw8IDExKQotIyBkZWZpbmUgVFZfSE9UUExVR19JTlRfU1RBVFVTCQkJKDEgPDwgMTApCi0jIGRlZmluZSBDUlRfSE9UUExVR19NT05JVE9SX01BU0sJCSgzIDw8IDgpCi0jIGRlZmluZSBDUlRfSE9UUExVR19NT05JVE9SX0NPTE9SCQkoMyA8PCA4KQotIyBkZWZpbmUgQ1JUX0hPVFBMVUdfTU9OSVRPUl9NT05PCQkoMiA8PCA4KQotIyBkZWZpbmUgQ1JUX0hPVFBMVUdfTU9OSVRPUl9OT05FCQkoMCA8PCA4KQotIyBkZWZpbmUgU0RWT0NfSE9UUExVR19JTlRfU1RBVFVTCQkoMSA8PCA3KQotIyBkZWZpbmUgU0RWT0JfSE9UUExVR19JTlRfU1RBVFVTCQkoMSA8PCA2KQotCi0jZGVmaW5lIFNEVk9CCQkJMHg2MTE0MAotI2RlZmluZSBTRFZPQwkJCTB4NjExNjAKLSNkZWZpbmUgU0RWT19FTkFCTEUJCQkJKDEgPDwgMzEpCi0jZGVmaW5lIFNEVk9fUElQRV9CX1NFTEVDVAkJCSgxIDw8IDMwKQotI2RlZmluZSBTRFZPX1NUQUxMX1NFTEVDVAkJCSgxIDw8IDI5KQotI2RlZmluZSBTRFZPX0lOVEVSUlVQVF9FTkFCTEUJCQkoMSA8PCAyNikKLS8qKgotICogOTE1Ry9HTSBTRFZPIHBpeGVsIG11bHRpcGxpZXIuCi0gKgotICogUHJvZ3JhbW1lZCB2YWx1ZSBpcyBtdWx0aXBsaWVyIC0gMSwgdXAgdG8gNXguCi0gKgotICogXHNhIERQTExfTURfVURJX01VTFRJUExJRVJfTUFTSwotICovCi0jZGVmaW5lIFNEVk9fUE9SVF9NVUxUSVBMWV9NQVNLCQkJKDcgPDwgMjMpCi0jZGVmaW5lIFNEVk9fUE9SVF9NVUxUSVBMWV9TSElGVAkJMjMKLSNkZWZpbmUgU0RWT19QSEFTRV9TRUxFQ1RfTUFTSwkJCSgxNSA8PCAxOSkKLSNkZWZpbmUgU0RWT19QSEFTRV9TRUxFQ1RfREVGQVVMVAkJKDYgPDwgMTkpCi0jZGVmaW5lIFNEVk9fQ0xPQ0tfT1VUUFVUX0lOVkVSVAkJKDEgPDwgMTgpCi0jZGVmaW5lIFNEVk9DX0dBTkdfTU9ERQkJCQkoMSA8PCAxNikKLSNkZWZpbmUgU0RWT19CT1JERVJfRU5BQkxFCQkJKDEgPDwgNykKLSNkZWZpbmUgU0RWT0JfUENJRV9DT05DVVJSRU5DWQkJCSgxIDw8IDMpCi0jZGVmaW5lIFNEVk9fREVURUNURUQJCQkJKDEgPDwgMikKLS8qIEJpdHMgdG8gYmUgcHJlc2VydmVkIHdoZW4gd3JpdGluZyAqLwotI2RlZmluZSBTRFZPQl9QUkVTRVJWRV9NQVNLCQkJKCgxIDw8IDE3KSB8ICgxIDw8IDE2KSB8ICgxIDw8IDE0KSkKLSNkZWZpbmUgU0RWT0NfUFJFU0VSVkVfTUFTSwkJCSgxIDw8IDE3KQotCi0vKiogQGRlZmdyb3VwIExWRFMKLSAqIEB7Ci0gKi8KLS8qKgotICogVGhpcyByZWdpc3RlciBjb250cm9scyB0aGUgTFZEUyBvdXRwdXQgZW5hYmxlLCBwaXBlIHNlbGVjdGlvbiwgYW5kIGRhdGEKLSAqIGZvcm1hdCBzZWxlY3Rpb24uCi0gKgotICogQWxsIG9mIHRoZSBjbG9jay9kYXRhIHBhaXJzIGFyZSBmb3JjZSBwb3dlcmVkIGRvd24gYnkgcG93ZXIgc2VxdWVuY2luZy4KLSAqLwotI2RlZmluZSBMVkRTCQkJMHg2MTE4MAotLyoqCi0gKiBFbmFibGVzIHRoZSBMVkRTIHBvcnQuICBUaGlzIGJpdCBtdXN0IGJlIHNldCBiZWZvcmUgRFBMTHMgYXJlIGVuYWJsZWQsIGFzCi0gKiB0aGUgRFBMTCBzZW1hbnRpY3MgY2hhbmdlIHdoZW4gdGhlIExWRFMgaXMgYXNzaWduZWQgdG8gdGhhdCBwaXBlLgotICovCi0jIGRlZmluZSBMVkRTX1BPUlRfRU4JCQkoMSA8PCAzMSkKLS8qKiBTZWxlY3RzIHBpcGUgQiBmb3IgTFZEUyBkYXRhLiAgTXVzdCBiZSBzZXQgb24gcHJlLTk2NS4gKi8KLSMgZGVmaW5lIExWRFNfUElQRUJfU0VMRUNUCQkoMSA8PCAzMCkKLQotLyoqCi0gKiBFbmFibGVzIHRoZSBBMC1BMiBkYXRhIHBhaXJzIGFuZCBDTEtBLCBjb250YWluaW5nIDE4IGJpdHMgb2YgY29sb3IgZGF0YSBwZXIKLSAqIHBpeGVsLgotICovCi0jIGRlZmluZSBMVkRTX0EwQTJfQ0xLQV9QT1dFUl9NQVNLCSgzIDw8IDgpCi0jIGRlZmluZSBMVkRTX0EwQTJfQ0xLQV9QT1dFUl9ET1dOCSgwIDw8IDgpCi0jIGRlZmluZSBMVkRTX0EwQTJfQ0xLQV9QT1dFUl9VUAkoMyA8PCA4KQotLyoqCi0gKiBDb250cm9scyB0aGUgQTMgZGF0YSBwYWlyLCB3aGljaCBjb250YWlucyB0aGUgYWRkaXRpb25hbCBMU0JzIGZvciAyNCBiaXQKLSAqIG1vZGUuICBPbmx5IGVuYWJsZWQgaWYgTFZEU19BMEEyX0NMS0FfUE9XRVJfVVAgYWxzbyBpbmRpY2F0ZXMgaXQgc2hvdWxkIGJlCi0gKiBvbi4KLSAqLwotIyBkZWZpbmUgTFZEU19BM19QT1dFUl9NQVNLCQkoMyA8PCA2KQotIyBkZWZpbmUgTFZEU19BM19QT1dFUl9ET1dOCQkoMCA8PCA2KQotIyBkZWZpbmUgTFZEU19BM19QT1dFUl9VUAkJKDMgPDwgNikKLS8qKgotICogQ29udHJvbHMgdGhlIENMS0IgcGFpci4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgc2V0IHdoZW4gTFZEU19CMEIzX1BPV0VSX1VQCi0gKiBpcyBzZXQuCi0gKi8KLSMgZGVmaW5lIExWRFNfQ0xLQl9QT1dFUl9NQVNLCQkoMyA8PCA0KQotIyBkZWZpbmUgTFZEU19DTEtCX1BPV0VSX0RPV04JCSgwIDw8IDQpCi0jIGRlZmluZSBMVkRTX0NMS0JfUE9XRVJfVVAJCSgzIDw8IDQpCi0KLS8qKgotICogQ29udHJvbHMgdGhlIEIwLUIzIGRhdGEgcGFpcnMuICBUaGlzIG11c3QgYmUgc2V0IHRvIG1hdGNoIHRoZSBEUExMIHAyCi0gKiBzZXR0aW5nIGZvciB3aGV0aGVyIHdlIGFyZSBpbiBkdWFsLWNoYW5uZWwgbW9kZS4gIFRoZSBCMyBwYWlyIHdpbGwKLSAqIGFkZGl0aW9uYWxseSBvbmx5IGJlIHBvd2VyZWQgdXAgd2hlbiBMVkRTX0EzX1BPV0VSX1VQIGlzIHNldC4KLSAqLwotIyBkZWZpbmUgTFZEU19CMEIzX1BPV0VSX01BU0sJCSgzIDw8IDIpCi0jIGRlZmluZSBMVkRTX0IwQjNfUE9XRVJfRE9XTgkJKDAgPDwgMikKLSMgZGVmaW5lIExWRFNfQjBCM19QT1dFUl9VUAkJKDMgPDwgMikKLQotI2RlZmluZSBQSVBFQUNPTkYgMHg3MDAwOAotI2RlZmluZSBQSVBFQUNPTkZfRU5BQkxFCSgxPDwzMSkKLSNkZWZpbmUgUElQRUFDT05GX0RJU0FCTEUJMAotI2RlZmluZSBQSVBFQUNPTkZfRE9VQkxFX1dJREUJKDE8PDMwKQotI2RlZmluZSBJOTY1X1BJUEVDT05GX0FDVElWRQkoMTw8MzApCi0jZGVmaW5lIFBJUEVBQ09ORl9TSU5HTEVfV0lERQkwCi0jZGVmaW5lIFBJUEVBQ09ORl9QSVBFX1VOTE9DS0VEIDAKLSNkZWZpbmUgUElQRUFDT05GX1BJUEVfTE9DS0VECSgxPDwyNSkKLSNkZWZpbmUgUElQRUFDT05GX1BBTEVUVEUJMAotI2RlZmluZSBQSVBFQUNPTkZfR0FNTUEJCSgxPDwyNCkKLSNkZWZpbmUgUElQRUNPTkZfRk9SQ0VfQk9SREVSCSgxPDwyNSkKLSNkZWZpbmUgUElQRUNPTkZfUFJPR1JFU1NJVkUJKDAgPDwgMjEpCi0jZGVmaW5lIFBJUEVDT05GX0lOVEVSTEFDRV9XX0ZJRUxEX0lORElDQVRJT04JKDYgPDwgMjEpCi0jZGVmaW5lIFBJUEVDT05GX0lOVEVSTEFDRV9GSUVMRF8wX09OTFkJCSg3IDw8IDIxKQotCi0jZGVmaW5lIERTUEFSQgkgIDB4NzAwMzAKLSNkZWZpbmUgRFNQQVJCX0NTVEFSVF9NQVNLCSgweDdmIDw8IDcpCi0jZGVmaW5lIERTUEFSQl9DU1RBUlRfU0hJRlQJNwotI2RlZmluZSBEU1BBUkJfQlNUQVJUX01BU0sJKDB4N2YpCQkgCi0jZGVmaW5lIERTUEFSQl9CU1RBUlRfU0hJRlQJMAotCi0jZGVmaW5lIFBJUEVCQ09ORiAweDcxMDA4Ci0jZGVmaW5lIFBJUEVCQ09ORl9FTkFCTEUJKDE8PDMxKQotI2RlZmluZSBQSVBFQkNPTkZfRElTQUJMRQkwCi0jZGVmaW5lIFBJUEVCQ09ORl9ET1VCTEVfV0lERQkoMTw8MzApCi0jZGVmaW5lIFBJUEVCQ09ORl9ESVNBQkxFCTAKLSNkZWZpbmUgUElQRUJDT05GX0dBTU1BCQkoMTw8MjQpCi0jZGVmaW5lIFBJUEVCQ09ORl9QQUxFVFRFCTAKLQotI2RlZmluZSBQSVBFQkdDTUFYUkVECQkweDcxMDEwCi0jZGVmaW5lIFBJUEVCR0NNQVhHUkVFTgkJMHg3MTAxNAotI2RlZmluZSBQSVBFQkdDTUFYQkxVRQkJMHg3MTAxOAotI2RlZmluZSBQSVBFQlNUQVQJCTB4NzEwMjQKLSNkZWZpbmUgUElQRUJGUkFNRUhJR0gJCTB4NzEwNDAKLSNkZWZpbmUgUElQRUJGUkFNRVBJWEVMCQkweDcxMDQ0Ci0KLSNkZWZpbmUgRFNQQUNOVFIJCTB4NzAxODAKLSNkZWZpbmUgRFNQQkNOVFIJCTB4NzExODAKLSNkZWZpbmUgRElTUExBWV9QTEFORV9FTkFCTEUJCQkoMTw8MzEpCi0jZGVmaW5lIERJU1BMQVlfUExBTkVfRElTQUJMRQkJCTAKLSNkZWZpbmUgRElTUFBMQU5FX0dBTU1BX0VOQUJMRQkJCSgxPDwzMCkKLSNkZWZpbmUgRElTUFBMQU5FX0dBTU1BX0RJU0FCTEUJCQkwCi0jZGVmaW5lIERJU1BQTEFORV9QSVhGT1JNQVRfTUFTSwkJKDB4Zjw8MjYpCi0jZGVmaW5lIERJU1BQTEFORV84QlBQCQkJCSgweDI8PDI2KQotI2RlZmluZSBESVNQUExBTkVfMTVfMTZCUFAJCQkoMHg0PDwyNikKLSNkZWZpbmUgRElTUFBMQU5FXzE2QlBQCQkJCSgweDU8PDI2KQotI2RlZmluZSBESVNQUExBTkVfMzJCUFBfTk9fQUxQSEEJCSgweDY8PDI2KQotI2RlZmluZSBESVNQUExBTkVfMzJCUFAJCQkJKDB4Nzw8MjYpCi0jZGVmaW5lIERJU1BQTEFORV9TVEVSRU9fRU5BQkxFCQkJKDE8PDI1KQotI2RlZmluZSBESVNQUExBTkVfU1RFUkVPX0RJU0FCTEUJCTAKLSNkZWZpbmUgRElTUFBMQU5FX1NFTF9QSVBFX01BU0sJCQkoMTw8MjQpCi0jZGVmaW5lIERJU1BQTEFORV9TRUxfUElQRV9BCQkJMAotI2RlZmluZSBESVNQUExBTkVfU0VMX1BJUEVfQgkJCSgxPDwyNCkKLSNkZWZpbmUgRElTUFBMQU5FX1NSQ19LRVlfRU5BQkxFCQkoMTw8MjIpCi0jZGVmaW5lIERJU1BQTEFORV9TUkNfS0VZX0RJU0FCTEUJCTAKLSNkZWZpbmUgRElTUFBMQU5FX0xJTkVfRE9VQkxFCQkJKDE8PDIwKQotI2RlZmluZSBESVNQUExBTkVfTk9fTElORV9ET1VCTEUJCTAKLSNkZWZpbmUgRElTUFBMQU5FX1NURVJFT19QT0xBUklUWV9GSVJTVAkJMAotI2RlZmluZSBESVNQUExBTkVfU1RFUkVPX1BPTEFSSVRZX1NFQ09ORAkoMTw8MTgpCi0vKiBwbGFuZSBCIG9ubHkgKi8KLSNkZWZpbmUgRElTUFBMQU5FX0FMUEhBX1RSQU5TX0VOQUJMRQkJKDE8PDE1KQotI2RlZmluZSBESVNQUExBTkVfQUxQSEFfVFJBTlNfRElTQUJMRQkJMAotI2RlZmluZSBESVNQUExBTkVfU1BSSVRFX0FCT1ZFX0RJU1BMQVlBCQkwCi0jZGVmaW5lIERJU1BQTEFORV9TUFJJVEVfQUJPVkVfT1ZFUkxBWQkJKDEpCi0KLSNkZWZpbmUgRFNQQUJBU0UJCTB4NzAxODQKLSNkZWZpbmUgRFNQQVNUUklERQkJMHg3MDE4OAotCi0jZGVmaW5lIERTUEJCQVNFCQkweDcxMTg0Ci0jZGVmaW5lIERTUEJBRERSCQlEU1BCQkFTRQotI2RlZmluZSBEU1BCU1RSSURFCQkweDcxMTg4Ci0KLSNkZWZpbmUgRFNQQUtFWVZBTAkJMHg3MDE5NAotI2RlZmluZSBEU1BBS0VZTUFTSwkJMHg3MDE5OAotCi0jZGVmaW5lIERTUEFQT1MJCQkweDcwMThDIC8qIHJlc2VydmVkICovCi0jZGVmaW5lIERTUEFTSVpFCQkweDcwMTkwCi0jZGVmaW5lIERTUEJQT1MJCQkweDcxMThDCi0jZGVmaW5lIERTUEJTSVpFCQkweDcxMTkwCi0KLSNkZWZpbmUgRFNQQVNVUkYJCTB4NzAxOUMKLSNkZWZpbmUgRFNQQVRJTEVPRkYJCTB4NzAxQTQKLQotI2RlZmluZSBEU1BCU1VSRgkJMHg3MTE5QwotI2RlZmluZSBEU1BCVElMRU9GRgkJMHg3MTFBNAotCi0jZGVmaW5lIFZHQUNOVFJMCQkweDcxNDAwCi0jIGRlZmluZSBWR0FfRElTUF9ESVNBQkxFCQkJKDEgPDwgMzEpCi0jIGRlZmluZSBWR0FfMlhfTU9ERQkJCQkoMSA8PCAzMCkKLSMgZGVmaW5lIFZHQV9QSVBFX0JfU0VMRUNUCQkJKDEgPDwgMjkpCi0KLS8qCi0gKiBTb21lIEJJT1Mgc2NyYXRjaCBhcmVhIHJlZ2lzdGVycy4gIFRoZSA4NDUgKGFuZCA4MzA/KSBzdG9yZSB0aGUgYW1vdW50Ci0gKiBvZiB2aWRlbyBtZW1vcnkgYXZhaWxhYmxlIHRvIHRoZSBCSU9TIGluIFNXRjEuCi0gKi8KLQotI2RlZmluZSBTV0YwCQkJMHg3MTQxMAotCi0vKgotICogODU1IHNjcmF0Y2ggcmVnaXN0ZXJzLgotICovCi0jZGVmaW5lIFNXRjEwCQkJMHg3MDQxMAotCi0jZGVmaW5lIFNXRjMwCQkJMHg3MjQxNAotCi0vKgotICogT3ZlcmxheSByZWdpc3RlcnMuICBUaGVzZSBhcmUgb3ZlcmxheSByZWdpc3RlcnMgYWNjZXNzZWQgdmlhIE1NSU8uCi0gKiBUaG9zZSBsb2FkZWQgdmlhIHRoZSBvdmVybGF5IHJlZ2lzdGVyIHBhZ2UgYXJlIGRlZmluZWQgaW4gaTgzMF92aWRlby5jLgotICovCi0jZGVmaW5lIE9WQURECQkJMHgzMDAwMAotCi0jZGVmaW5lIERPVlNUQQkJCTB4MzAwMDgKLSNkZWZpbmUgT0NfQlVGCQkJKDB4Mzw8MjApCi0KLSNkZWZpbmUgT0dBTUM1CQkJMHgzMDAxMAotI2RlZmluZSBPR0FNQzQJCQkweDMwMDE0Ci0jZGVmaW5lIE9HQU1DMwkJCTB4MzAwMTgKLSNkZWZpbmUgT0dBTUMyCQkJMHgzMDAxYwotI2RlZmluZSBPR0FNQzEJCQkweDMwMDIwCi0jZGVmaW5lIE9HQU1DMAkJCTB4MzAwMjQKLS8qCi0gKiBQYWxldHRlIHJlZ2lzdGVycwotICovCi0jZGVmaW5lIFBBTEVUVEVfQQkJMHgwYTAwMAotI2RlZmluZSBQQUxFVFRFX0IJCTB4MGE4MDAKK2V4dGVybiBpbnQgaTkxNV93YWl0X3Jpbmcoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsIGludCBuLCBjb25zdCBjaGFyICpjYWxsZXIpOwogCiAjZGVmaW5lIElTX0k4MzAoZGV2KSAoKGRldiktPnBjaV9kZXZpY2UgPT0gMHgzNTc3KQogI2RlZmluZSBJU184NDVHKGRldikgKChkZXYpLT5wY2lfZGV2aWNlID09IDB4MjU2MikKQEAgLTExMTksNyArNjM5LDcgQEAKIAogI2RlZmluZSBJU19JOTY1R00oZGV2KSAoKGRldiktPnBjaV9kZXZpY2UgPT0gMHgyQTAyKQogCi0jZGVmaW5lIElTX0lHRF9HTShkZXYpICgoZGV2KS0+cGNpX2RldmljZSA9PSAweDJBNDIpCisjZGVmaW5lIElTX0dNNDUoZGV2KSAoKGRldiktPnBjaV9kZXZpY2UgPT0gMHgyQTQyKQogCiAjZGVmaW5lIElTX0c0WChkZXYpICgoZGV2KS0+cGNpX2RldmljZSA9PSAweDJFMDIgfHwgXAogCQkgICAgIChkZXYpLT5wY2lfZGV2aWNlID09IDB4MkUxMiB8fCBcCkBAIC0xMTMzLDkgKzY1Myw5IEBACiAJCSAgICAgIElTX0k5NDVHTShkZXYpIHx8IElTX0k5NjVHKGRldikgfHwgSVNfRzMzKGRldikpCiAKICNkZWZpbmUgSVNfTU9CSUxFKGRldikgKElTX0k4MzAoZGV2KSB8fCBJU19JODVYKGRldikgfHwgSVNfSTkxNUdNKGRldikgfHwgXAotCQkJSVNfSTk0NUdNKGRldikgfHwgSVNfSTk2NUdNKGRldikgfHwgSVNfSUdEX0dNKGRldikpCisJCQlJU19JOTQ1R00oZGV2KSB8fCBJU19JOTY1R00oZGV2KSB8fCBJU19HTTQ1KGRldikpCiAKLSNkZWZpbmUgSTkxNV9ORUVEX0dGWF9IV1MoZGV2KSAoSVNfRzMzKGRldikgfHwgSVNfSUdEX0dNKGRldikgfHwgSVNfRzRYKGRldikpCisjZGVmaW5lIEk5MTVfTkVFRF9HRlhfSFdTKGRldikgKElTX0czMyhkZXYpIHx8IElTX0dNNDUoZGV2KSB8fCBJU19HNFgoZGV2KSkKIAogI2RlZmluZSBQUklNQVJZX1JJTkdCVUZGRVJfU0laRSAgICAgICAgICgxMjgqMTAyNCkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjNzNkZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTAsMCArMSwyNTU4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMDggSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CisgKgorICovCisKKyNpbmNsdWRlICJkcm1QLmgiCisjaW5jbHVkZSAiZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgPGxpbnV4L3N3YXAuaD4KKworc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X3NldF9kb21haW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJICAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7CitzdGF0aWMgaW50CitpOTE1X2dlbV9vYmplY3Rfc2V0X2RvbWFpbl9yYW5nZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgdWludDY0X3Qgb2Zmc2V0LAorCQkJCSB1aW50NjRfdCBzaXplLAorCQkJCSB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7CitzdGF0aWMgaW50CitpOTE1X2dlbV9zZXRfZG9tYWluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCisJCSAgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCSAgICB1aW50MzJfdCB3cml0ZV9kb21haW4pOworc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VfbGlzdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfZnJlZV9wYWdlX2xpc3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOworc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOworCitzdGF0aWMgdm9pZAoraTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCitpbnQKK2k5MTVfZ2VtX2luaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1faW5pdCAqYXJncyA9IGRhdGE7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlpZiAoYXJncy0+Z3R0X3N0YXJ0ID49IGFyZ3MtPmd0dF9lbmQgfHwKKwkgICAgKGFyZ3MtPmd0dF9zdGFydCAmIChQQUdFX1NJWkUgLSAxKSkgIT0gMCB8fAorCSAgICAoYXJncy0+Z3R0X2VuZCAmIChQQUdFX1NJWkUgLSAxKSkgIT0gMCkgeworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZHJtX21tX2luaXQoJmRldl9wcml2LT5tbS5ndHRfc3BhY2UsIGFyZ3MtPmd0dF9zdGFydCwKKwkgICAgYXJncy0+Z3R0X2VuZCAtIGFyZ3MtPmd0dF9zdGFydCk7CisKKwlkZXYtPmd0dF90b3RhbCA9ICh1aW50MzJfdCkgKGFyZ3MtPmd0dF9lbmQgLSBhcmdzLT5ndHRfc3RhcnQpOworCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgbW0gb2JqZWN0IGFuZCByZXR1cm5zIGEgaGFuZGxlIHRvIGl0LgorICovCitpbnQKK2k5MTVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IGhhbmRsZSwgcmV0OworCisJYXJncy0+c2l6ZSA9IHJvdW5kdXAoYXJncy0+c2l6ZSwgUEFHRV9TSVpFKTsKKworCS8qIEFsbG9jYXRlIHRoZSBuZXcgb2JqZWN0ICovCisJb2JqID0gZHJtX2dlbV9vYmplY3RfYWxsb2MoZGV2LCBhcmdzLT5zaXplKTsKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGVfcHJpdiwgb2JqLCAmaGFuZGxlKTsKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJZHJtX2dlbV9vYmplY3RfaGFuZGxlX3VucmVmZXJlbmNlKG9iaik7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYXJncy0+aGFuZGxlID0gaGFuZGxlOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogUmVhZHMgZGF0YSBmcm9tIHRoZSBvYmplY3QgcmVmZXJlbmNlZCBieSBoYW5kbGUuCisgKgorICogT24gZXJyb3IsIHRoZSBjb250ZW50cyBvZiAqZGF0YSBhcmUgdW5kZWZpbmVkLgorICovCitpbnQKK2k5MTVfZ2VtX3ByZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2OworCXNzaXplX3QgcmVhZDsKKwlsb2ZmX3Qgb2Zmc2V0OworCWludCByZXQ7CisKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZGV2LCBmaWxlX3ByaXYsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKG9iaiA9PSBOVUxMKQorCQlyZXR1cm4gLUVCQURGOworCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCS8qIEJvdW5kcyBjaGVjayBzb3VyY2UuCisJICoKKwkgKiBYWFg6IFRoaXMgY291bGQgdXNlIHJldmlldyBmb3Igb3ZlcmZsb3cgaXNzdWVzLi4uCisJICovCisJaWYgKGFyZ3MtPm9mZnNldCA+IG9iai0+c2l6ZSB8fCBhcmdzLT5zaXplID4gb2JqLT5zaXplIHx8CisJICAgIGFyZ3MtPm9mZnNldCArIGFyZ3MtPnNpemUgPiBvYmotPnNpemUpIHsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9kb21haW5fcmFuZ2Uob2JqLCBhcmdzLT5vZmZzZXQsIGFyZ3MtPnNpemUsCisJCQkJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwlpZiAocmV0ICE9IDApIHsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCXJldHVybiByZXQ7CisJfQorCisJb2Zmc2V0ID0gYXJncy0+b2Zmc2V0OworCisJcmVhZCA9IHZmc19yZWFkKG9iai0+ZmlscCwgKGNoYXIgX191c2VyICopKHVpbnRwdHJfdClhcmdzLT5kYXRhX3B0ciwKKwkJCWFyZ3MtPnNpemUsICZvZmZzZXQpOworCWlmIChyZWFkICE9IGFyZ3MtPnNpemUpIHsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCWlmIChyZWFkIDwgMCkKKwkJCXJldHVybiByZWFkOworCQllbHNlCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2d0dF9wd3JpdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3B3cml0ZSAqYXJncywKKwkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJc3NpemVfdCByZW1haW47CisJbG9mZl90IG9mZnNldDsKKwljaGFyIF9fdXNlciAqdXNlcl9kYXRhOworCWNoYXIgX19pb21lbSAqdmFkZHI7CisJY2hhciAqdmFkZHJfYXRvbWljOworCWludCBpLCBvLCBsOworCWludCByZXQgPSAwOworCXVuc2lnbmVkIGxvbmcgcGZuOworCXVuc2lnbmVkIGxvbmcgdW53cml0dGVuOworCisJdXNlcl9kYXRhID0gKGNoYXIgX191c2VyICopICh1aW50cHRyX3QpIGFyZ3MtPmRhdGFfcHRyOworCXJlbWFpbiA9IGFyZ3MtPnNpemU7CisJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIHVzZXJfZGF0YSwgcmVtYWluKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluKG9iaiwgMCk7CisJaWYgKHJldCkgeworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0ID0gaTkxNV9nZW1fc2V0X2RvbWFpbihvYmosIGZpbGVfcHJpdiwKKwkJCQkgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOworCWlmIChyZXQpCisJCWdvdG8gZmFpbDsKKworCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKwlvZmZzZXQgPSBvYmpfcHJpdi0+Z3R0X29mZnNldCArIGFyZ3MtPm9mZnNldDsKKwlvYmpfcHJpdi0+ZGlydHkgPSAxOworCisJd2hpbGUgKHJlbWFpbiA+IDApIHsKKwkJLyogT3BlcmF0aW9uIGluIHRoaXMgcGFnZQorCQkgKgorCQkgKiBpID0gcGFnZSBudW1iZXIKKwkJICogbyA9IG9mZnNldCB3aXRoaW4gcGFnZQorCQkgKiBsID0gYnl0ZXMgdG8gY29weQorCQkgKi8KKwkJaSA9IG9mZnNldCA+PiBQQUdFX1NISUZUOworCQlvID0gb2Zmc2V0ICYgKFBBR0VfU0laRS0xKTsKKwkJbCA9IHJlbWFpbjsKKwkJaWYgKChvICsgbCkgPiBQQUdFX1NJWkUpCisJCQlsID0gUEFHRV9TSVpFIC0gbzsKKworCQlwZm4gPSAoZGV2LT5hZ3AtPmJhc2UgPj4gUEFHRV9TSElGVCkgKyBpOworCisjaWZkZWYgQ09ORklHX0hJR0hNRU0KKwkJLyogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBsb3cgcGVyZm9ybWFuY2Ugb2YgaW91bm1hcAorCQkgKiAoYXBwcm94aW1hdGUgMTAlIGNwdSBjb3N0IG9uIG5vcm1hbCAzRCB3b3JrbG9hZHMpLgorCQkgKiBrbWFwX2F0b21pYyBvbiBISUdITUVNIGtlcm5lbHMgaGFwcGVucyB0byBsZXQgdXMgbWFwIGNhcmQKKwkJICogbWVtb3J5IHdpdGhvdXQgdGFraW5nIElQSXMuICBXaGVuIHRoZSB2bWFwIHJld29yayBsYW5kcworCQkgKiB3ZSBzaG91bGQgYmUgYWJsZSB0byBkdW1wIHRoaXMgaGFjay4KKwkJICovCisJCXZhZGRyX2F0b21pYyA9IGttYXBfYXRvbWljX3BmbihwZm4sIEtNX1VTRVIwKTsKKyNpZiBXQVRDSF9QV1JJVEUKKwkJRFJNX0lORk8oInB3cml0ZSBpICVkIG8gJWQgbCAlZCBwZm4gJWxkIHZhZGRyICVwXG4iLAorCQkJIGksIG8sIGwsIHBmbiwgdmFkZHJfYXRvbWljKTsKKyNlbmRpZgorCQl1bndyaXR0ZW4gPSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljX25vY2FjaGUodmFkZHJfYXRvbWljICsgbywKKwkJCQkJCQkgICAgICB1c2VyX2RhdGEsIGwpOworCQlrdW5tYXBfYXRvbWljKHZhZGRyX2F0b21pYywgS01fVVNFUjApOworCisJCWlmICh1bndyaXR0ZW4pCisjZW5kaWYgLyogQ09ORklHX0hJR0hNRU0gKi8KKwkJeworCQkJdmFkZHIgPSBpb3JlbWFwX3djKHBmbiA8PCBQQUdFX1NISUZULCBQQUdFX1NJWkUpOworI2lmIFdBVENIX1BXUklURQorCQkJRFJNX0lORk8oInB3cml0ZSBzbG93IGkgJWQgbyAlZCBsICVkICIKKwkJCQkgInBmbiAlbGQgdmFkZHIgJXBcbiIsCisJCQkJIGksIG8sIGwsIHBmbiwgdmFkZHIpOworI2VuZGlmCisJCQlpZiAodmFkZHIgPT0gTlVMTCkgeworCQkJCXJldCA9IC1FRkFVTFQ7CisJCQkJZ290byBmYWlsOworCQkJfQorCQkJdW53cml0dGVuID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciArIG8sIHVzZXJfZGF0YSwgbCk7CisjaWYgV0FUQ0hfUFdSSVRFCisJCQlEUk1fSU5GTygidW53cml0dGVuICVsZFxuIiwgdW53cml0dGVuKTsKKyNlbmRpZgorCQkJaW91bm1hcCh2YWRkcik7CisJCQlpZiAodW53cml0dGVuKSB7CisJCQkJcmV0ID0gLUVGQVVMVDsKKwkJCQlnb3RvIGZhaWw7CisJCQl9CisJCX0KKworCQlyZW1haW4gLT0gbDsKKwkJdXNlcl9kYXRhICs9IGw7CisJCW9mZnNldCArPSBsOworCX0KKyNpZiBXQVRDSF9QV1JJVEUgJiYgMQorCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaik7CisJaTkxNV9nZW1fZHVtcF9vYmplY3Qob2JqLCBhcmdzLT5vZmZzZXQgKyBhcmdzLT5zaXplLCBfX2Z1bmNfXywgfjApOworCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaik7CisjZW5kaWYKKworZmFpbDoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX3NobWVtX3B3cml0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgKmFyZ3MsCisJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCWludCByZXQ7CisJbG9mZl90IG9mZnNldDsKKwlzc2l6ZV90IHdyaXR0ZW47CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlyZXQgPSBpOTE1X2dlbV9zZXRfZG9tYWluKG9iaiwgZmlsZV9wcml2LAorCQkJCSAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJaWYgKHJldCkgeworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlvZmZzZXQgPSBhcmdzLT5vZmZzZXQ7CisKKwl3cml0dGVuID0gdmZzX3dyaXRlKG9iai0+ZmlscCwKKwkJCSAgICAoY2hhciBfX3VzZXIgKikodWludHB0cl90KSBhcmdzLT5kYXRhX3B0ciwKKwkJCSAgICBhcmdzLT5zaXplLCAmb2Zmc2V0KTsKKwlpZiAod3JpdHRlbiAhPSBhcmdzLT5zaXplKSB7CisJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlpZiAod3JpdHRlbiA8IDApCisJCQlyZXR1cm4gd3JpdHRlbjsKKwkJZWxzZQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBXcml0ZXMgZGF0YSB0byB0aGUgb2JqZWN0IHJlZmVyZW5jZWQgYnkgaGFuZGxlLgorICoKKyAqIE9uIGVycm9yLCB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciB0aGF0IHdlcmUgdG8gYmUgbW9kaWZpZWQgYXJlIHVuZGVmaW5lZC4KKyAqLworaW50CitpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKwlpbnQgcmV0ID0gMDsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiAtRUJBREY7CisJb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCisJLyogQm91bmRzIGNoZWNrIGRlc3RpbmF0aW9uLgorCSAqCisJICogWFhYOiBUaGlzIGNvdWxkIHVzZSByZXZpZXcgZm9yIG92ZXJmbG93IGlzc3Vlcy4uLgorCSAqLworCWlmIChhcmdzLT5vZmZzZXQgPiBvYmotPnNpemUgfHwgYXJncy0+c2l6ZSA+IG9iai0+c2l6ZSB8fAorCSAgICBhcmdzLT5vZmZzZXQgKyBhcmdzLT5zaXplID4gb2JqLT5zaXplKSB7CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFdlIGNhbiBvbmx5IGRvIHRoZSBHVFQgcHdyaXRlIG9uIHVudGlsZWQgYnVmZmVycywgYXMgb3RoZXJ3aXNlCisJICogaXQgd291bGQgZW5kIHVwIGdvaW5nIHRocm91Z2ggdGhlIGZlbmNlZCBhY2Nlc3MsIGFuZCB3ZSdsbCBnZXQKKwkgKiBkaWZmZXJlbnQgZGV0aWxpbmcgYmVoYXZpb3IgYmV0d2VlbiByZWFkaW5nIGFuZCB3cml0aW5nLgorCSAqIHByZWFkL3B3cml0ZSBjdXJyZW50bHkgYXJlIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbSB0aGUgQ1BVCisJICogcGVyc3BlY3RpdmUsIHJlcXVpcmluZyBtYW51YWwgZGV0aWxpbmcgYnkgdGhlIGNsaWVudC4KKwkgKi8KKwlpZiAob2JqX3ByaXYtPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX05PTkUgJiYKKwkgICAgZGV2LT5ndHRfdG90YWwgIT0gMCkKKwkJcmV0ID0gaTkxNV9nZW1fZ3R0X3B3cml0ZShkZXYsIG9iaiwgYXJncywgZmlsZV9wcml2KTsKKwllbHNlCisJCXJldCA9IGk5MTVfZ2VtX3NobWVtX3B3cml0ZShkZXYsIG9iaiwgYXJncywgZmlsZV9wcml2KTsKKworI2lmIFdBVENIX1BXUklURQorCWlmIChyZXQpCisJCURSTV9JTkZPKCJwd3JpdGUgZmFpbGVkICVkXG4iLCByZXQpOworI2VuZGlmCisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBDYWxsZWQgd2hlbiB1c2VyIHNwYWNlIHByZXBhcmVzIHRvIHVzZSBhbiBvYmplY3QKKyAqLworaW50CitpOTE1X2dlbV9zZXRfZG9tYWluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbiAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IHJldDsKKworCWlmICghKGRldi0+ZHJpdmVyLT5kcml2ZXJfZmVhdHVyZXMgJiBEUklWRVJfR0VNKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZGV2LCBmaWxlX3ByaXYsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKG9iaiA9PSBOVUxMKQorCQlyZXR1cm4gLUVCQURGOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworI2lmIFdBVENIX0JVRgorCURSTV9JTkZPKCJzZXRfZG9tYWluX2lvY3RsICVwKCVkKSwgJTA4eCAlMDh4XG4iLAorCQkgb2JqLCBvYmotPnNpemUsIGFyZ3MtPnJlYWRfZG9tYWlucywgYXJncy0+d3JpdGVfZG9tYWluKTsKKyNlbmRpZgorCXJldCA9IGk5MTVfZ2VtX3NldF9kb21haW4ob2JqLCBmaWxlX3ByaXYsCisJCQkJICBhcmdzLT5yZWFkX2RvbWFpbnMsIGFyZ3MtPndyaXRlX2RvbWFpbik7CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIENhbGxlZCB3aGVuIHVzZXIgc3BhY2UgaGFzIGRvbmUgd3JpdGVzIHRvIHRoaXMgYnVmZmVyCisgKi8KK2ludAoraTkxNV9nZW1fc3dfZmluaXNoX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fc3dfZmluaXNoICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisJaW50IHJldCA9IDA7CisKKwlpZiAoIShkZXYtPmRyaXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX0dFTSkpCisJCXJldHVybiAtRU5PREVWOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCXJldHVybiAtRUJBREY7CisJfQorCisjaWYgV0FUQ0hfQlVGCisJRFJNX0lORk8oIiVzOiBzd19maW5pc2ggJWQgKCVwICVkKVxuIiwKKwkJIF9fZnVuY19fLCBhcmdzLT5oYW5kbGUsIG9iaiwgb2JqLT5zaXplKTsKKyNlbmRpZgorCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCS8qIFBpbm5lZCBidWZmZXJzIG1heSBiZSBzY2Fub3V0LCBzbyBmbHVzaCB0aGUgY2FjaGUgKi8KKwlpZiAoKG9iai0+d3JpdGVfZG9tYWluICYgSTkxNV9HRU1fRE9NQUlOX0NQVSkgJiYgb2JqX3ByaXYtPnBpbl9jb3VudCkgeworCQlpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmopOworCQlkcm1fYWdwX2NoaXBzZXRfZmx1c2goZGV2KTsKKwl9CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIE1hcHMgdGhlIGNvbnRlbnRzIG9mIGFuIG9iamVjdCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIGl0IGlzIG1hcHBlZAorICogaW50by4KKyAqCisgKiBXaGlsZSB0aGUgbWFwcGluZyBob2xkcyBhIHJlZmVyZW5jZSBvbiB0aGUgY29udGVudHMgb2YgdGhlIG9iamVjdCwgaXQgZG9lc24ndAorICogaW1wbHkgYSByZWYgb24gdGhlIG9iamVjdCBpdHNlbGYuCisgKi8KK2ludAoraTkxNV9nZW1fbW1hcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCWxvZmZfdCBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBhZGRyOworCisJaWYgKCEoZGV2LT5kcml2ZXItPmRyaXZlcl9mZWF0dXJlcyAmIERSSVZFUl9HRU0pKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiAtRUJBREY7CisKKwlvZmZzZXQgPSBhcmdzLT5vZmZzZXQ7CisKKwlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCWFkZHIgPSBkb19tbWFwKG9iai0+ZmlscCwgMCwgYXJncy0+c2l6ZSwKKwkJICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsCisJCSAgICAgICBhcmdzLT5vZmZzZXQpOworCXVwX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChJU19FUlIoKHZvaWQgKilhZGRyKSkKKwkJcmV0dXJuIGFkZHI7CisKKwlhcmdzLT5hZGRyX3B0ciA9ICh1aW50NjRfdCkgYWRkcjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraTkxNV9nZW1fb2JqZWN0X2ZyZWVfcGFnZV9saXN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJaW50IHBhZ2VfY291bnQgPSBvYmotPnNpemUgLyBQQUdFX1NJWkU7CisJaW50IGk7CisKKwlpZiAob2JqX3ByaXYtPnBhZ2VfbGlzdCA9PSBOVUxMKQorCQlyZXR1cm47CisKKworCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50OyBpKyspCisJCWlmIChvYmpfcHJpdi0+cGFnZV9saXN0W2ldICE9IE5VTEwpIHsKKwkJCWlmIChvYmpfcHJpdi0+ZGlydHkpCisJCQkJc2V0X3BhZ2VfZGlydHkob2JqX3ByaXYtPnBhZ2VfbGlzdFtpXSk7CisJCQltYXJrX3BhZ2VfYWNjZXNzZWQob2JqX3ByaXYtPnBhZ2VfbGlzdFtpXSk7CisJCQlwYWdlX2NhY2hlX3JlbGVhc2Uob2JqX3ByaXYtPnBhZ2VfbGlzdFtpXSk7CisJCX0KKwlvYmpfcHJpdi0+ZGlydHkgPSAwOworCisJZHJtX2ZyZWUob2JqX3ByaXYtPnBhZ2VfbGlzdCwKKwkJIHBhZ2VfY291bnQgKiBzaXplb2Yoc3RydWN0IHBhZ2UgKiksCisJCSBEUk1fTUVNX0RSSVZFUik7CisJb2JqX3ByaXYtPnBhZ2VfbGlzdCA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitpOTE1X2dlbV9vYmplY3RfbW92ZV90b19hY3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisKKwkvKiBBZGQgYSByZWZlcmVuY2UgaWYgd2UncmUgbmV3bHkgZW50ZXJpbmcgdGhlIGFjdGl2ZSBsaXN0LiAqLworCWlmICghb2JqX3ByaXYtPmFjdGl2ZSkgeworCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKKwkJb2JqX3ByaXYtPmFjdGl2ZSA9IDE7CisJfQorCS8qIE1vdmUgZnJvbSB3aGF0ZXZlciBsaXN0IHdlIHdlcmUgb24gdG8gdGhlIHRhaWwgb2YgZXhlY3V0aW9uLiAqLworCWxpc3RfbW92ZV90YWlsKCZvYmpfcHJpdi0+bGlzdCwKKwkJICAgICAgICZkZXZfcHJpdi0+bW0uYWN0aXZlX2xpc3QpOworfQorCisKK3N0YXRpYyB2b2lkCitpOTE1X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKKwlpZiAob2JqX3ByaXYtPnBpbl9jb3VudCAhPSAwKQorCQlsaXN0X2RlbF9pbml0KCZvYmpfcHJpdi0+bGlzdCk7CisJZWxzZQorCQlsaXN0X21vdmVfdGFpbCgmb2JqX3ByaXYtPmxpc3QsICZkZXZfcHJpdi0+bW0uaW5hY3RpdmVfbGlzdCk7CisKKwlpZiAob2JqX3ByaXYtPmFjdGl2ZSkgeworCQlvYmpfcHJpdi0+YWN0aXZlID0gMDsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwl9CisJaTkxNV92ZXJpZnlfaW5hY3RpdmUoZGV2LCBfX0ZJTEVfXywgX19MSU5FX18pOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgc2VxdWVuY2UgbnVtYmVyLCBlbWl0dGluZyBhIHdyaXRlIG9mIGl0IHRvIHRoZSBzdGF0dXMgcGFnZQorICogcGx1cyBhbiBpbnRlcnJ1cHQsIHdoaWNoIHdpbGwgdHJpZ2dlciBpOTE1X3VzZXJfaW50ZXJydXB0X2hhbmRsZXIuCisgKgorICogTXVzdCBiZSBjYWxsZWQgd2l0aCBzdHJ1Y3RfbG9jayBoZWxkLgorICoKKyAqIFJldHVybmVkIHNlcXVlbmNlIG51bWJlcnMgYXJlIG5vbnplcm8gb24gc3VjY2Vzcy4KKyAqLworc3RhdGljIHVpbnQzMl90CitpOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IGZsdXNoX2RvbWFpbnMpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCXVpbnQzMl90IHNlcW5vOworCWludCB3YXNfZW1wdHk7CisJUklOR19MT0NBTFM7CisKKwlyZXF1ZXN0ID0gZHJtX2NhbGxvYygxLCBzaXplb2YoKnJlcXVlc3QpLCBEUk1fTUVNX0RSSVZFUik7CisJaWYgKHJlcXVlc3QgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwkvKiBHcmFiIHRoZSBzZXFubyB3ZSdyZSBnb2luZyB0byBtYWtlIHRoaXMgcmVxdWVzdCBiZSwgYW5kIGJ1bXAgdGhlCisJICogbmV4dCAoc2tpcHBpbmcgMCBzbyBpdCBjYW4gYmUgdGhlIHJlc2VydmVkIG5vLXNlcW5vIHZhbHVlKS4KKwkgKi8KKwlzZXFubyA9IGRldl9wcml2LT5tbS5uZXh0X2dlbV9zZXFubzsKKwlkZXZfcHJpdi0+bW0ubmV4dF9nZW1fc2Vxbm8rKzsKKwlpZiAoZGV2X3ByaXYtPm1tLm5leHRfZ2VtX3NlcW5vID09IDApCisJCWRldl9wcml2LT5tbS5uZXh0X2dlbV9zZXFubysrOworCisJQkVHSU5fTFBfUklORyg0KTsKKwlPVVRfUklORyhNSV9TVE9SRV9EV09SRF9JTkRFWCk7CisJT1VUX1JJTkcoSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKKwlPVVRfUklORyhzZXFubyk7CisKKwlPVVRfUklORyhNSV9VU0VSX0lOVEVSUlVQVCk7CisJQURWQU5DRV9MUF9SSU5HKCk7CisKKwlEUk1fREVCVUcoIiVkXG4iLCBzZXFubyk7CisKKwlyZXF1ZXN0LT5zZXFubyA9IHNlcW5vOworCXJlcXVlc3QtPmVtaXR0ZWRfamlmZmllcyA9IGppZmZpZXM7CisJcmVxdWVzdC0+Zmx1c2hfZG9tYWlucyA9IGZsdXNoX2RvbWFpbnM7CisJd2FzX2VtcHR5ID0gbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLnJlcXVlc3RfbGlzdCk7CisJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+bGlzdCwgJmRldl9wcml2LT5tbS5yZXF1ZXN0X2xpc3QpOworCisJaWYgKHdhc19lbXB0eSAmJiAhZGV2X3ByaXYtPm1tLnN1c3BlbmRlZCkKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+bW0ucmV0aXJlX3dvcmssIEhaKTsKKwlyZXR1cm4gc2Vxbm87Cit9CisKKy8qKgorICogQ29tbWFuZCBleGVjdXRpb24gYmFycmllcgorICoKKyAqIEVuc3VyZXMgdGhhdCBhbGwgY29tbWFuZHMgaW4gdGhlIHJpbmcgYXJlIGZpbmlzaGVkCisgKiBiZWZvcmUgc2lnbmFsbGluZyB0aGUgQ1BVCisgKi8KK3N0YXRpYyB1aW50MzJfdAoraTkxNV9yZXRpcmVfY29tbWFuZHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1aW50MzJfdCBjbWQgPSBNSV9GTFVTSCB8IE1JX05PX1dSSVRFX0ZMVVNIOworCXVpbnQzMl90IGZsdXNoX2RvbWFpbnMgPSAwOworCVJJTkdfTE9DQUxTOworCisJLyogVGhlIHNhbXBsZXIgYWx3YXlzIGdldHMgZmx1c2hlZCBvbiBpOTY1IChzaWdoKSAqLworCWlmIChJU19JOTY1RyhkZXYpKQorCQlmbHVzaF9kb21haW5zIHw9IEk5MTVfR0VNX0RPTUFJTl9TQU1QTEVSOworCUJFR0lOX0xQX1JJTkcoMik7CisJT1VUX1JJTkcoY21kKTsKKwlPVVRfUklORygwKTsgLyogbm9vcCAqLworCUFEVkFOQ0VfTFBfUklORygpOworCXJldHVybiBmbHVzaF9kb21haW5zOworfQorCisvKioKKyAqIE1vdmVzIGJ1ZmZlcnMgYXNzb2NpYXRlZCBvbmx5IHdpdGggdGhlIGdpdmVuIGFjdGl2ZSBzZXFubyBmcm9tIHRoZSBhY3RpdmUKKyAqIHRvIGluYWN0aXZlIGxpc3QsIHBvdGVudGlhbGx5IGZyZWVpbmcgdGhlbS4KKyAqLworc3RhdGljIHZvaWQKK2k5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwkvKiBNb3ZlIGFueSBidWZmZXJzIG9uIHRoZSBhY3RpdmUgbGlzdCB0aGF0IGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZAorCSAqIGJ5IHRoZSByaW5nYnVmZmVyIHRvIHRoZSBmbHVzaGluZy9pbmFjdGl2ZSBsaXN0cyBhcyBhcHByb3ByaWF0ZS4KKwkgKi8KKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5hY3RpdmVfbGlzdCkpIHsKKwkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKworCQlvYmpfcHJpdiA9IGxpc3RfZmlyc3RfZW50cnkoJmRldl9wcml2LT5tbS5hY3RpdmVfbGlzdCwKKwkJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCQkgICAgbGlzdCk7CisJCW9iaiA9IG9ial9wcml2LT5vYmo7CisKKwkJLyogSWYgdGhlIHNlcW5vIGJlaW5nIHJldGlyZWQgZG9lc24ndCBtYXRjaCB0aGUgb2xkZXN0IGluIHRoZQorCQkgKiBsaXN0LCB0aGVuIHRoZSBvbGRlc3QgaW4gdGhlIGxpc3QgbXVzdCBzdGlsbCBiZSBuZXdlciB0aGFuCisJCSAqIHRoaXMgc2Vxbm8uCisJCSAqLworCQlpZiAob2JqX3ByaXYtPmxhc3RfcmVuZGVyaW5nX3NlcW5vICE9IHJlcXVlc3QtPnNlcW5vKQorCQkJcmV0dXJuOworI2lmIFdBVENIX0xSVQorCQlEUk1fSU5GTygiJXM6IHJldGlyZSAlZCBtb3ZlcyB0byBpbmFjdGl2ZSBsaXN0ICVwXG4iLAorCQkJIF9fZnVuY19fLCByZXF1ZXN0LT5zZXFubywgb2JqKTsKKyNlbmRpZgorCisJCWlmIChvYmotPndyaXRlX2RvbWFpbiAhPSAwKSB7CisJCQlsaXN0X21vdmVfdGFpbCgmb2JqX3ByaXYtPmxpc3QsCisJCQkJICAgICAgICZkZXZfcHJpdi0+bW0uZmx1c2hpbmdfbGlzdCk7CisJCX0gZWxzZSB7CisJCQlpOTE1X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2ZShvYmopOworCQl9CisJfQorCisJaWYgKHJlcXVlc3QtPmZsdXNoX2RvbWFpbnMgIT0gMCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYsICpuZXh0OworCisJCS8qIENsZWFyIHRoZSB3cml0ZSBkb21haW4gYW5kIGFjdGl2aXR5IGZyb20gYW55IGJ1ZmZlcnMKKwkJICogdGhhdCBhcmUganVzdCB3YWl0aW5nIGZvciBhIGZsdXNoIG1hdGNoaW5nIHRoZSBvbmUgcmV0aXJlZC4KKwkJICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmpfcHJpdiwgbmV4dCwKKwkJCQkJICZkZXZfcHJpdi0+bW0uZmx1c2hpbmdfbGlzdCwgbGlzdCkgeworCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBvYmpfcHJpdi0+b2JqOworCisJCQlpZiAob2JqLT53cml0ZV9kb21haW4gJiByZXF1ZXN0LT5mbHVzaF9kb21haW5zKSB7CisJCQkJb2JqLT53cml0ZV9kb21haW4gPSAwOworCQkJCWk5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2luYWN0aXZlKG9iaik7CisJCQl9CisJCX0KKworCX0KK30KKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYgc2VxMSBpcyBsYXRlciB0aGFuIHNlcTIuCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfc2Vxbm9fcGFzc2VkKHVpbnQzMl90IHNlcTEsIHVpbnQzMl90IHNlcTIpCit7CisJcmV0dXJuIChpbnQzMl90KShzZXExIC0gc2VxMikgPj0gMDsKK30KKwordWludDMyX3QKK2k5MTVfZ2V0X2dlbV9zZXFubyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJcmV0dXJuIFJFQURfSFdTUChkZXZfcHJpdiwgSTkxNV9HRU1fSFdTX0lOREVYKTsKK30KKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGNsZWFycyB0aGUgcmVxdWVzdCBsaXN0IGFzIHNlcXVlbmNlIG51bWJlcnMgYXJlIHBhc3NlZC4KKyAqLwordm9pZAoraTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdWludDMyX3Qgc2Vxbm87CisKKwlzZXFubyA9IGk5MTVfZ2V0X2dlbV9zZXFubyhkZXYpOworCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0ucmVxdWVzdF9saXN0KSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CisJCXVpbnQzMl90IHJldGlyaW5nX3NlcW5vOworCisJCXJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkZXZfcHJpdi0+bW0ucmVxdWVzdF9saXN0LAorCQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsCisJCQkJCSAgIGxpc3QpOworCQlyZXRpcmluZ19zZXFubyA9IHJlcXVlc3QtPnNlcW5vOworCisJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmV0aXJpbmdfc2Vxbm8pIHx8CisJCSAgICBkZXZfcHJpdi0+bW0ud2VkZ2VkKSB7CisJCQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdChkZXYsIHJlcXVlc3QpOworCisJCQlsaXN0X2RlbCgmcmVxdWVzdC0+bGlzdCk7CisJCQlkcm1fZnJlZShyZXF1ZXN0LCBzaXplb2YoKnJlcXVlc3QpLCBEUk1fTUVNX0RSSVZFUik7CisJCX0gZWxzZQorCQkJYnJlYWs7CisJfQorfQorCit2b2lkCitpOTE1X2dlbV9yZXRpcmVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisKKwlkZXZfcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBkcm1faTkxNV9wcml2YXRlX3QsCisJCQkJbW0ucmV0aXJlX3dvcmsud29yayk7CisJZGV2ID0gZGV2X3ByaXYtPmRldjsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2KTsKKwlpZiAoIWRldl9wcml2LT5tbS5zdXNwZW5kZWQgJiYKKwkgICAgIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5yZXF1ZXN0X2xpc3QpKQorCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5tbS5yZXRpcmVfd29yaywgSFopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworfQorCisvKioKKyAqIFdhaXRzIGZvciBhIHNlcXVlbmNlIG51bWJlciB0byBiZSBzaWduYWxlZCwgYW5kIGNsZWFucyB1cCB0aGUKKyAqIHJlcXVlc3QgYW5kIG9iamVjdCBsaXN0cyBhcHByb3ByaWF0ZWx5IGZvciB0aGF0IGV2ZW50LgorICovCitzdGF0aWMgaW50CitpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBzZXFubykKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0ID0gMDsKKworCUJVR19PTihzZXFubyA9PSAwKTsKKworCWlmICghaTkxNV9zZXFub19wYXNzZWQoaTkxNV9nZXRfZ2VtX3NlcW5vKGRldiksIHNlcW5vKSkgeworCQlkZXZfcHJpdi0+bW0ud2FpdGluZ19nZW1fc2Vxbm8gPSBzZXFubzsKKwkJaTkxNV91c2VyX2lycV9nZXQoZGV2KTsKKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGRldl9wcml2LT5pcnFfcXVldWUsCisJCQkJCSAgICAgICBpOTE1X3NlcW5vX3Bhc3NlZChpOTE1X2dldF9nZW1fc2Vxbm8oZGV2KSwKKwkJCQkJCQkJIHNlcW5vKSB8fAorCQkJCQkgICAgICAgZGV2X3ByaXYtPm1tLndlZGdlZCk7CisJCWk5MTVfdXNlcl9pcnFfcHV0KGRldik7CisJCWRldl9wcml2LT5tbS53YWl0aW5nX2dlbV9zZXFubyA9IDA7CisJfQorCWlmIChkZXZfcHJpdi0+bW0ud2VkZ2VkKQorCQlyZXQgPSAtRUlPOworCisJaWYgKHJldCAmJiByZXQgIT0gLUVSRVNUQVJUU1lTKQorCQlEUk1fRVJST1IoIiVzIHJldHVybnMgJWQgKGF3YWl0aW5nICVkIGF0ICVkKVxuIiwKKwkJCSAgX19mdW5jX18sIHJldCwgc2Vxbm8sIGk5MTVfZ2V0X2dlbV9zZXFubyhkZXYpKTsKKworCS8qIERpcmVjdGx5IGRpc3BhdGNoIHJlcXVlc3QgcmV0aXJpbmcuICBXaGlsZSB3ZSBoYXZlIHRoZSB3b3JrIHF1ZXVlCisJICogdG8gaGFuZGxlIHRoaXMsIHRoZSB3YWl0ZXIgb24gYSByZXF1ZXN0IG9mdGVuIHdhbnRzIGFuIGFzc29jaWF0ZWQKKwkgKiBidWZmZXIgdG8gaGF2ZSBtYWRlIGl0IHRvIHRoZSBpbmFjdGl2ZSBsaXN0LCBhbmQgd2Ugd291bGQgbmVlZAorCSAqIGEgc2VwYXJhdGUgd2FpdCBxdWV1ZSB0byBoYW5kbGUgdGhhdC4KKwkgKi8KKwlpZiAocmV0ID09IDApCisJCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK2k5MTVfZ2VtX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJICAgICAgIHVpbnQzMl90IGludmFsaWRhdGVfZG9tYWlucywKKwkgICAgICAgdWludDMyX3QgZmx1c2hfZG9tYWlucykKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1aW50MzJfdCBjbWQ7CisJUklOR19MT0NBTFM7CisKKyNpZiBXQVRDSF9FWEVDCisJRFJNX0lORk8oIiVzOiBpbnZhbGlkYXRlICUwOHggZmx1c2ggJTA4eFxuIiwgX19mdW5jX18sCisJCSAgaW52YWxpZGF0ZV9kb21haW5zLCBmbHVzaF9kb21haW5zKTsKKyNlbmRpZgorCisJaWYgKGZsdXNoX2RvbWFpbnMgJiBJOTE1X0dFTV9ET01BSU5fQ1BVKQorCQlkcm1fYWdwX2NoaXBzZXRfZmx1c2goZGV2KTsKKworCWlmICgoaW52YWxpZGF0ZV9kb21haW5zIHwgZmx1c2hfZG9tYWlucykgJiB+KEk5MTVfR0VNX0RPTUFJTl9DUFUgfAorCQkJCQkJICAgICBJOTE1X0dFTV9ET01BSU5fR1RUKSkgeworCQkvKgorCQkgKiByZWFkL3dyaXRlIGNhY2hlczoKKwkJICoKKwkJICogSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiBpcyBhbHdheXMgaW52YWxpZGF0ZWQsIGJ1dCBpcworCQkgKiBvbmx5IGZsdXNoZWQgaWYgTUlfTk9fV1JJVEVfRkxVU0ggaXMgdW5zZXQuICBPbiA5NjUsIGl0IGlzCisJCSAqIGFsc28gZmx1c2hlZCBhdCAyZCB2ZXJzdXMgM2QgcGlwZWxpbmUgc3dpdGNoZXMuCisJCSAqCisJCSAqIHJlYWQtb25seSBjYWNoZXM6CisJCSAqCisJCSAqIEk5MTVfR0VNX0RPTUFJTl9TQU1QTEVSIGlzIGZsdXNoZWQgb24gcHJlLTk2NSBpZgorCQkgKiBNSV9SRUFEX0ZMVVNIIGlzIHNldCwgYW5kIGlzIGFsd2F5cyBmbHVzaGVkIG9uIDk2NS4KKwkJICoKKwkJICogSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQgbWF5IG5vdCBleGlzdD8KKwkJICoKKwkJICogSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCB3aGljaCBleGlzdHMgb24gOTY1LCBpcworCQkgKiBpbnZhbGlkYXRlZCB3aGVuIE1JX0VYRV9GTFVTSCBpcyBzZXQuCisJCSAqCisJCSAqIEk5MTVfR0VNX0RPTUFJTl9WRVJURVgsIHdoaWNoIGV4aXN0cyBvbiA5NjUsIGlzCisJCSAqIGludmFsaWRhdGVkIHdpdGggZXZlcnkgTUlfRkxVU0guCisJCSAqCisJCSAqIFRMQnM6CisJCSAqCisJCSAqIE9uIDk2NSwgVExCcyBhc3NvY2lhdGVkIHdpdGggSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQKKwkJICogYW5kIEk5MTVfR0VNX0RPTUFJTl9DUFUgaW4gYXJlIGludmFsaWRhdGVkIGF0IFBURSB3cml0ZSBhbmQKKwkJICogSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiBhbmQgSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVIKKwkJICogYXJlIGZsdXNoZWQgYXQgYW55IE1JX0ZMVVNILgorCQkgKi8KKworCQljbWQgPSBNSV9GTFVTSCB8IE1JX05PX1dSSVRFX0ZMVVNIOworCQlpZiAoKGludmFsaWRhdGVfZG9tYWluc3xmbHVzaF9kb21haW5zKSAmCisJCSAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSKQorCQkJY21kICY9IH5NSV9OT19XUklURV9GTFVTSDsKKwkJaWYgKCFJU19JOTY1RyhkZXYpKSB7CisJCQkvKgorCQkJICogT24gdGhlIDk2NSwgdGhlIHNhbXBsZXIgY2FjaGUgYWx3YXlzIGdldHMgZmx1c2hlZAorCQkJICogYW5kIHRoaXMgYml0IGlzIHJlc2VydmVkLgorCQkJICovCisJCQlpZiAoaW52YWxpZGF0ZV9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVIpCisJCQkJY21kIHw9IE1JX1JFQURfRkxVU0g7CisJCX0KKwkJaWYgKGludmFsaWRhdGVfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTikKKwkJCWNtZCB8PSBNSV9FWEVfRkxVU0g7CisKKyNpZiBXQVRDSF9FWEVDCisJCURSTV9JTkZPKCIlczogcXVldWUgZmx1c2ggJTA4eCB0byByaW5nXG4iLCBfX2Z1bmNfXywgY21kKTsKKyNlbmRpZgorCQlCRUdJTl9MUF9SSU5HKDIpOworCQlPVVRfUklORyhjbWQpOworCQlPVVRfUklORygwKTsgLyogbm9vcCAqLworCQlBRFZBTkNFX0xQX1JJTkcoKTsKKwl9Cit9CisKKy8qKgorICogRW5zdXJlcyB0aGF0IGFsbCByZW5kZXJpbmcgdG8gdGhlIG9iamVjdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgb2JqZWN0IGlzCisgKiBzYWZlIHRvIHVuYmluZCBmcm9tIHRoZSBHVFQgb3IgYWNjZXNzIGZyb20gdGhlIENQVS4KKyAqLworc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCWludCByZXQ7CisKKwkvKiBJZiB0aGVyZSBhcmUgd3JpdGVzIHF1ZXVlZCB0byB0aGUgYnVmZmVyLCBmbHVzaCBhbmQKKwkgKiBjcmVhdGUgYSBuZXcgc2Vxbm8gdG8gd2FpdCBmb3IuCisJICovCisJaWYgKG9iai0+d3JpdGVfZG9tYWluICYgfihJOTE1X0dFTV9ET01BSU5fQ1BVfEk5MTVfR0VNX0RPTUFJTl9HVFQpKSB7CisJCXVpbnQzMl90IHdyaXRlX2RvbWFpbiA9IG9iai0+d3JpdGVfZG9tYWluOworI2lmIFdBVENIX0JVRgorCQlEUk1fSU5GTygiJXM6IGZsdXNoaW5nIG9iamVjdCAlcCBmcm9tIHdyaXRlIGRvbWFpbiAlMDh4XG4iLAorCQkJICBfX2Z1bmNfXywgb2JqLCB3cml0ZV9kb21haW4pOworI2VuZGlmCisJCWk5MTVfZ2VtX2ZsdXNoKGRldiwgMCwgd3JpdGVfZG9tYWluKTsKKworCQlpOTE1X2dlbV9vYmplY3RfbW92ZV90b19hY3RpdmUob2JqKTsKKwkJb2JqX3ByaXYtPmxhc3RfcmVuZGVyaW5nX3NlcW5vID0gaTkxNV9hZGRfcmVxdWVzdChkZXYsCisJCQkJCQkJCSAgd3JpdGVfZG9tYWluKTsKKwkJQlVHX09OKG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyA9PSAwKTsKKyNpZiBXQVRDSF9MUlUKKwkJRFJNX0lORk8oIiVzOiBmbHVzaCBtb3ZlcyB0byBleGVjIGxpc3QgJXBcbiIsIF9fZnVuY19fLCBvYmopOworI2VuZGlmCisJfQorCisJLyogSWYgdGhlcmUgaXMgcmVuZGVyaW5nIHF1ZXVlZCBvbiB0aGUgYnVmZmVyIGJlaW5nIGV2aWN0ZWQsIHdhaXQgZm9yCisJICogaXQuCisJICovCisJaWYgKG9ial9wcml2LT5hY3RpdmUpIHsKKyNpZiBXQVRDSF9CVUYKKwkJRFJNX0lORk8oIiVzOiBvYmplY3QgJXAgd2FpdCBmb3Igc2Vxbm8gJTA4eFxuIiwKKwkJCSAgX19mdW5jX18sIG9iaiwgb2JqX3ByaXYtPmxhc3RfcmVuZGVyaW5nX3NlcW5vKTsKKyNlbmRpZgorCQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChkZXYsIG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyk7CisJCWlmIChyZXQgIT0gMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogVW5iaW5kcyBhbiBvYmplY3QgZnJvbSB0aGUgR1RUIGFwZXJ0dXJlLgorICovCitzdGF0aWMgaW50CitpOTE1X2dlbV9vYmplY3RfdW5iaW5kKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCWludCByZXQgPSAwOworCisjaWYgV0FUQ0hfQlVGCisJRFJNX0lORk8oIiVzOiVkICVwXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIG9iaik7CisJRFJNX0lORk8oImd0dF9zcGFjZSAlcFxuIiwgb2JqX3ByaXYtPmd0dF9zcGFjZSk7CisjZW5kaWYKKwlpZiAob2JqX3ByaXYtPmd0dF9zcGFjZSA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCWlmIChvYmpfcHJpdi0+cGluX2NvdW50ICE9IDApIHsKKwkJRFJNX0VSUk9SKCJBdHRlbXB0aW5nIHRvIHVuYmluZCBwaW5uZWQgYnVmZmVyXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogV2FpdCBmb3IgYW55IHJlbmRlcmluZyB0byBjb21wbGV0ZQorCSAqLworCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhvYmopOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJ3YWl0X3JlbmRlcmluZyBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCS8qIE1vdmUgdGhlIG9iamVjdCB0byB0aGUgQ1BVIGRvbWFpbiB0byBlbnN1cmUgdGhhdAorCSAqIGFueSBwb3NzaWJsZSBDUFUgd3JpdGVzIHdoaWxlIGl0J3Mgbm90IGluIHRoZSBHVFQKKwkgKiBhcmUgZmx1c2hlZCB3aGVuIHdlIGdvIHRvIHJlbWFwIGl0LiBUaGlzIHdpbGwKKwkgKiBhbHNvIGVuc3VyZSB0aGF0IGFsbCBwZW5kaW5nIEdQVSB3cml0ZXMgYXJlIGZpbmlzaGVkCisJICogYmVmb3JlIHdlIHVuYmluZC4KKwkgKi8KKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2RvbWFpbihvYmosIEk5MTVfR0VNX0RPTUFJTl9DUFUsCisJCQkJCSBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigic2V0X2RvbWFpbiBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChvYmpfcHJpdi0+YWdwX21lbSAhPSBOVUxMKSB7CisJCWRybV91bmJpbmRfYWdwKG9ial9wcml2LT5hZ3BfbWVtKTsKKwkJZHJtX2ZyZWVfYWdwKG9ial9wcml2LT5hZ3BfbWVtLCBvYmotPnNpemUgLyBQQUdFX1NJWkUpOworCQlvYmpfcHJpdi0+YWdwX21lbSA9IE5VTEw7CisJfQorCisJQlVHX09OKG9ial9wcml2LT5hY3RpdmUpOworCisJaTkxNV9nZW1fb2JqZWN0X2ZyZWVfcGFnZV9saXN0KG9iaik7CisKKwlpZiAob2JqX3ByaXYtPmd0dF9zcGFjZSkgeworCQlhdG9taWNfZGVjKCZkZXYtPmd0dF9jb3VudCk7CisJCWF0b21pY19zdWIob2JqLT5zaXplLCAmZGV2LT5ndHRfbWVtb3J5KTsKKworCQlkcm1fbW1fcHV0X2Jsb2NrKG9ial9wcml2LT5ndHRfc3BhY2UpOworCQlvYmpfcHJpdi0+Z3R0X3NwYWNlID0gTlVMTDsKKwl9CisKKwkvKiBSZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIExSVSBsaXN0IGlmIHByZXNlbnQuICovCisJaWYgKCFsaXN0X2VtcHR5KCZvYmpfcHJpdi0+bGlzdCkpCisJCWxpc3RfZGVsX2luaXQoJm9ial9wcml2LT5saXN0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisJaW50IHJldCA9IDA7CisKKwlmb3IgKDs7KSB7CisJCS8qIElmIHRoZXJlJ3MgYW4gaW5hY3RpdmUgYnVmZmVyIGF2YWlsYWJsZSBub3csIGdyYWIgaXQKKwkJICogYW5kIGJlIGRvbmUuCisJCSAqLworCQlpZiAoIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0KSkgeworCQkJb2JqX3ByaXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkZXZfcHJpdi0+bW0uaW5hY3RpdmVfbGlzdCwKKwkJCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKKwkJCQkJCSAgICBsaXN0KTsKKwkJCW9iaiA9IG9ial9wcml2LT5vYmo7CisJCQlCVUdfT04ob2JqX3ByaXYtPnBpbl9jb3VudCAhPSAwKTsKKyNpZiBXQVRDSF9MUlUKKwkJCURSTV9JTkZPKCIlczogZXZpY3RpbmcgJXBcbiIsIF9fZnVuY19fLCBvYmopOworI2VuZGlmCisJCQlCVUdfT04ob2JqX3ByaXYtPmFjdGl2ZSk7CisKKwkJCS8qIFdhaXQgb24gdGhlIHJlbmRlcmluZyBhbmQgdW5iaW5kIHRoZSBidWZmZXIuICovCisJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9iaik7CisJCQlicmVhazsKKwkJfQorCisJCS8qIElmIHdlIGRpZG4ndCBnZXQgYW55dGhpbmcsIGJ1dCB0aGUgcmluZyBpcyBzdGlsbCBwcm9jZXNzaW5nCisJCSAqIHRoaW5ncywgd2FpdCBmb3Igb25lIG9mIHRob3NlIHRoaW5ncyB0byBmaW5pc2ggYW5kIGhvcGVmdWxseQorCQkgKiBsZWF2ZSB1cyBhIGJ1ZmZlciB0byBldmljdC4KKwkJICovCisJCWlmICghbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLnJlcXVlc3RfbGlzdCkpIHsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKKworCQkJcmVxdWVzdCA9IGxpc3RfZmlyc3RfZW50cnkoJmRldl9wcml2LT5tbS5yZXF1ZXN0X2xpc3QsCisJCQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsCisJCQkJCQkgICBsaXN0KTsKKworCQkJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QoZGV2LCByZXF1ZXN0LT5zZXFubyk7CisJCQlpZiAocmV0KQorCQkJCWJyZWFrOworCisJCQkvKiBpZiB3YWl0aW5nIGNhdXNlZCBhbiBvYmplY3QgdG8gYmVjb21lIGluYWN0aXZlLAorCQkJICogdGhlbiBsb29wIGFyb3VuZCBhbmQgd2FpdCBmb3IgaXQuIE90aGVyd2lzZSwgd2UKKwkJCSAqIGFzc3VtZSB0aGF0IHdhaXRpbmcgZnJlZWQgYW5kIHVuYm91bmQgc29tZXRoaW5nLAorCQkJICogc28gdGhlcmUgc2hvdWxkIG5vdyBiZSBzb21lIHNwYWNlIGluIHRoZSBHVFQKKwkJCSAqLworCQkJaWYgKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uaW5hY3RpdmVfbGlzdCkpCisJCQkJY29udGludWU7CisJCQlicmVhazsKKwkJfQorCisJCS8qIElmIHdlIGRpZG4ndCBoYXZlIGFueXRoaW5nIG9uIHRoZSByZXF1ZXN0IGxpc3QgYnV0IHRoZXJlCisJCSAqIGFyZSBidWZmZXJzIGF3YWl0aW5nIGEgZmx1c2gsIGVtaXQgb25lIGFuZCB0cnkgYWdhaW4uCisJCSAqIFdoZW4gd2Ugd2FpdCBvbiBpdCwgdGhvc2UgYnVmZmVycyB3YWl0aW5nIGZvciB0aGF0IGZsdXNoCisJCSAqIHdpbGwgZ2V0IG1vdmVkIHRvIGluYWN0aXZlLgorCQkgKi8KKwkJaWYgKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uZmx1c2hpbmdfbGlzdCkpIHsKKwkJCW9ial9wcml2ID0gbGlzdF9maXJzdF9lbnRyeSgmZGV2X3ByaXYtPm1tLmZsdXNoaW5nX2xpc3QsCisJCQkJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJCQkgICAgbGlzdCk7CisJCQlvYmogPSBvYmpfcHJpdi0+b2JqOworCisJCQlpOTE1X2dlbV9mbHVzaChkZXYsCisJCQkJICAgICAgIG9iai0+d3JpdGVfZG9tYWluLAorCQkJCSAgICAgICBvYmotPndyaXRlX2RvbWFpbik7CisJCQlpOTE1X2FkZF9yZXF1ZXN0KGRldiwgb2JqLT53cml0ZV9kb21haW4pOworCisJCQlvYmogPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKworCQlEUk1fRVJST1IoImluYWN0aXZlIGVtcHR5ICVkIHJlcXVlc3QgZW1wdHkgJWQgIgorCQkJICAiZmx1c2hpbmcgZW1wdHkgJWRcbiIsCisJCQkgIGxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0KSwKKwkJCSAgbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLnJlcXVlc3RfbGlzdCksCisJCQkgIGxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0KSk7CisJCS8qIElmIHdlIGRpZG4ndCBkbyBhbnkgb2YgdGhlIGFib3ZlLCB0aGVyZSdzIG5vdGhpbmcgdG8gYmUgZG9uZQorCQkgKiBhbmQgd2UganVzdCBjYW4ndCBmaXQgaXQgaW4uCisJCSAqLworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlX2xpc3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKwlpbnQgcGFnZV9jb3VudCwgaTsKKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlOworCXN0cnVjdCBwYWdlICpwYWdlOworCWludCByZXQ7CisKKwlpZiAob2JqX3ByaXYtPnBhZ2VfbGlzdCkKKwkJcmV0dXJuIDA7CisKKwkvKiBHZXQgdGhlIGxpc3Qgb2YgcGFnZXMgb3V0IG9mIG91ciBzdHJ1Y3QgZmlsZS4gIFRoZXknbGwgYmUgcGlubmVkCisJICogYXQgdGhpcyBwb2ludCB1bnRpbCB3ZSByZWxlYXNlIHRoZW0uCisJICovCisJcGFnZV9jb3VudCA9IG9iai0+c2l6ZSAvIFBBR0VfU0laRTsKKwlCVUdfT04ob2JqX3ByaXYtPnBhZ2VfbGlzdCAhPSBOVUxMKTsKKwlvYmpfcHJpdi0+cGFnZV9saXN0ID0gZHJtX2NhbGxvYyhwYWdlX2NvdW50LCBzaXplb2Yoc3RydWN0IHBhZ2UgKiksCisJCQkJCSBEUk1fTUVNX0RSSVZFUik7CisJaWYgKG9ial9wcml2LT5wYWdlX2xpc3QgPT0gTlVMTCkgeworCQlEUk1fRVJST1IoIkZhbGVkIHRvIGFsbG9jYXRlIHBhZ2UgbGlzdFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWlub2RlID0gb2JqLT5maWxwLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOworCW1hcHBpbmcgPSBpbm9kZS0+aV9tYXBwaW5nOworCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50OyBpKyspIHsKKwkJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIGksIE5VTEwpOworCQlpZiAoSVNfRVJSKHBhZ2UpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHBhZ2UpOworCQkJRFJNX0VSUk9SKCJyZWFkX21hcHBpbmdfcGFnZSBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQkJaTkxNV9nZW1fb2JqZWN0X2ZyZWVfcGFnZV9saXN0KG9iaik7CisJCQlyZXR1cm4gcmV0OworCQl9CisJCW9ial9wcml2LT5wYWdlX2xpc3RbaV0gPSBwYWdlOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBGaW5kcyBmcmVlIHNwYWNlIGluIHRoZSBHVFQgYXBlcnR1cmUgYW5kIGJpbmRzIHRoZSBvYmplY3QgdGhlcmUuCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX29iamVjdF9iaW5kX3RvX2d0dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgYWxpZ25tZW50KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCXN0cnVjdCBkcm1fbW1fbm9kZSAqZnJlZV9zcGFjZTsKKwlpbnQgcGFnZV9jb3VudCwgcmV0OworCisJaWYgKGFsaWdubWVudCA9PSAwKQorCQlhbGlnbm1lbnQgPSBQQUdFX1NJWkU7CisJaWYgKGFsaWdubWVudCAmIChQQUdFX1NJWkUgLSAxKSkgeworCQlEUk1fRVJST1IoIkludmFsaWQgb2JqZWN0IGFsaWdubWVudCByZXF1ZXN0ZWQgJXVcbiIsIGFsaWdubWVudCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworIHNlYXJjaF9mcmVlOgorCWZyZWVfc3BhY2UgPSBkcm1fbW1fc2VhcmNoX2ZyZWUoJmRldl9wcml2LT5tbS5ndHRfc3BhY2UsCisJCQkJCW9iai0+c2l6ZSwgYWxpZ25tZW50LCAwKTsKKwlpZiAoZnJlZV9zcGFjZSAhPSBOVUxMKSB7CisJCW9ial9wcml2LT5ndHRfc3BhY2UgPSBkcm1fbW1fZ2V0X2Jsb2NrKGZyZWVfc3BhY2UsIG9iai0+c2l6ZSwKKwkJCQkJCSAgICAgICBhbGlnbm1lbnQpOworCQlpZiAob2JqX3ByaXYtPmd0dF9zcGFjZSAhPSBOVUxMKSB7CisJCQlvYmpfcHJpdi0+Z3R0X3NwYWNlLT5wcml2YXRlID0gb2JqOworCQkJb2JqX3ByaXYtPmd0dF9vZmZzZXQgPSBvYmpfcHJpdi0+Z3R0X3NwYWNlLT5zdGFydDsKKwkJfQorCX0KKwlpZiAob2JqX3ByaXYtPmd0dF9zcGFjZSA9PSBOVUxMKSB7CisJCS8qIElmIHRoZSBndHQgaXMgZW1wdHkgYW5kIHdlJ3JlIHN0aWxsIGhhdmluZyB0cm91YmxlCisJCSAqIGZpdHRpbmcgb3VyIG9iamVjdCBpbiwgd2UncmUgb3V0IG9mIG1lbW9yeS4KKwkJICovCisjaWYgV0FUQ0hfTFJVCisJCURSTV9JTkZPKCIlczogR1RUIGZ1bGwsIGV2aWN0aW5nIHNvbWV0aGluZ1xuIiwgX19mdW5jX18pOworI2VuZGlmCisJCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uaW5hY3RpdmVfbGlzdCkgJiYKKwkJICAgIGxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0KSAmJgorCQkgICAgbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLmFjdGl2ZV9saXN0KSkgeworCQkJRFJNX0VSUk9SKCJHVFQgZnVsbCwgYnV0IExSVSBsaXN0IGVtcHR5XG4iKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisKKwkJcmV0ID0gaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKGRldik7CisJCWlmIChyZXQgIT0gMCkgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZXZpY3QgYSBidWZmZXIgJWRcbiIsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJCWdvdG8gc2VhcmNoX2ZyZWU7CisJfQorCisjaWYgV0FUQ0hfQlVGCisJRFJNX0lORk8oIkJpbmRpbmcgb2JqZWN0IG9mIHNpemUgJWQgYXQgMHglMDh4XG4iLAorCQkgb2JqLT5zaXplLCBvYmpfcHJpdi0+Z3R0X29mZnNldCk7CisjZW5kaWYKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VfbGlzdChvYmopOworCWlmIChyZXQpIHsKKwkJZHJtX21tX3B1dF9ibG9jayhvYmpfcHJpdi0+Z3R0X3NwYWNlKTsKKwkJb2JqX3ByaXYtPmd0dF9zcGFjZSA9IE5VTEw7CisJCXJldHVybiByZXQ7CisJfQorCisJcGFnZV9jb3VudCA9IG9iai0+c2l6ZSAvIFBBR0VfU0laRTsKKwkvKiBDcmVhdGUgYW4gQUdQIG1lbW9yeSBzdHJ1Y3R1cmUgcG9pbnRpbmcgYXQgb3VyIHBhZ2VzLCBhbmQgYmluZCBpdAorCSAqIGludG8gdGhlIEdUVC4KKwkgKi8KKwlvYmpfcHJpdi0+YWdwX21lbSA9IGRybV9hZ3BfYmluZF9wYWdlcyhkZXYsCisJCQkJCSAgICAgICBvYmpfcHJpdi0+cGFnZV9saXN0LAorCQkJCQkgICAgICAgcGFnZV9jb3VudCwKKwkJCQkJICAgICAgIG9ial9wcml2LT5ndHRfb2Zmc2V0LAorCQkJCQkgICAgICAgb2JqX3ByaXYtPmFncF90eXBlKTsKKwlpZiAob2JqX3ByaXYtPmFncF9tZW0gPT0gTlVMTCkgeworCQlpOTE1X2dlbV9vYmplY3RfZnJlZV9wYWdlX2xpc3Qob2JqKTsKKwkJZHJtX21tX3B1dF9ibG9jayhvYmpfcHJpdi0+Z3R0X3NwYWNlKTsKKwkJb2JqX3ByaXYtPmd0dF9zcGFjZSA9IE5VTEw7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlhdG9taWNfaW5jKCZkZXYtPmd0dF9jb3VudCk7CisJYXRvbWljX2FkZChvYmotPnNpemUsICZkZXYtPmd0dF9tZW1vcnkpOworCisJLyogQXNzZXJ0IHRoYXQgdGhlIG9iamVjdCBpcyBub3QgY3VycmVudGx5IGluIGFueSBHUFUgZG9tYWluLiBBcyBpdAorCSAqIHdhc24ndCBpbiB0aGUgR1RULCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IHdheSBpdCBjb3VsZCBoYXZlIGJlZW4gaW4KKwkgKiBhIEdQVSBjYWNoZQorCSAqLworCUJVR19PTihvYmotPnJlYWRfZG9tYWlucyAmIH4oSTkxNV9HRU1fRE9NQUlOX0NQVXxJOTE1X0dFTV9ET01BSU5fR1RUKSk7CisJQlVHX09OKG9iai0+d3JpdGVfZG9tYWluICYgfihJOTE1X0dFTV9ET01BSU5fQ1BVfEk5MTVfR0VNX0RPTUFJTl9HVFQpKTsKKworCXJldHVybiAwOworfQorCit2b2lkCitpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdAkqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCisJLyogSWYgd2UgZG9uJ3QgaGF2ZSBhIHBhZ2UgbGlzdCBzZXQgdXAsIHRoZW4gd2UncmUgbm90IHBpbm5lZAorCSAqIHRvIEdQVSwgYW5kIHdlIGNhbiBpZ25vcmUgdGhlIGNhY2hlIGZsdXNoIGJlY2F1c2UgaXQnbGwgaGFwcGVuCisJICogYWdhaW4gYXQgYmluZCB0aW1lLgorCSAqLworCWlmIChvYmpfcHJpdi0+cGFnZV9saXN0ID09IE5VTEwpCisJCXJldHVybjsKKworCWRybV9jbGZsdXNoX3BhZ2VzKG9ial9wcml2LT5wYWdlX2xpc3QsIG9iai0+c2l6ZSAvIFBBR0VfU0laRSk7Cit9CisKKy8qCisgKiBTZXQgdGhlIG5leHQgZG9tYWluIGZvciB0aGUgc3BlY2lmaWVkIG9iamVjdC4gVGhpcworICogbWF5IG5vdCBhY3R1YWxseSBwZXJmb3JtIHRoZSBuZWNlc3NhcnkgZmx1c2hpbmcvaW52YWxpZGluZyB0aG91Z2gsCisgKiBhcyB0aGF0IG1heSB3YW50IHRvIGJlIGJhdGNoZWQgd2l0aCBvdGhlciBzZXRfZG9tYWluIG9wZXJhdGlvbnMKKyAqCisgKiBUaGlzIGlzICh3ZSBob3BlKSB0aGUgb25seSByZWFsbHkgdHJpY2t5IHBhcnQgb2YgZ2VtLiBUaGUgZ29hbAorICogaXMgZmFpcmx5IHNpbXBsZSAtLSB0cmFjayB3aGljaCBjYWNoZXMgaG9sZCBiaXRzIG9mIHRoZSBvYmplY3QKKyAqIGFuZCBtYWtlIHN1cmUgdGhleSByZW1haW4gY29oZXJlbnQuIEEgZmV3IGNvbmNyZXRlIGV4YW1wbGVzIG1heQorICogaGVscCB0byBleHBsYWluIGhvdyBpdCB3b3Jrcy4gRm9yIHNob3J0aGFuZCwgd2UgdXNlIHRoZSBub3RhdGlvbgorICogKHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluKSwgZS5nLiAoQ1BVLCBDUFUpIHRvIGluZGljYXRlIHRoZQorICogYSBwYWlyIG9mIHJlYWQgYW5kIHdyaXRlIGRvbWFpbiBtYXNrcy4KKyAqCisgKiBDYXNlIDE6IHRoZSBiYXRjaCBidWZmZXIKKyAqCisgKgkxLiBBbGxvY2F0ZWQKKyAqCTIuIFdyaXR0ZW4gYnkgQ1BVCisgKgkzLiBNYXBwZWQgdG8gR1RUCisgKgk0LiBSZWFkIGJ5IEdQVQorICoJNS4gVW5tYXBwZWQgZnJvbSBHVFQKKyAqCTYuIEZyZWVkCisgKgorICoJTGV0J3MgdGFrZSB0aGVzZSBhIHN0ZXAgYXQgYSB0aW1lCisgKgorICoJMS4gQWxsb2NhdGVkCisgKgkJUGFnZXMgYWxsb2NhdGVkIGZyb20gdGhlIGtlcm5lbCBtYXkgc3RpbGwgaGF2ZQorICoJCWNhY2hlIGNvbnRlbnRzLCBzbyB3ZSBzZXQgdGhlbSB0byAoQ1BVLCBDUFUpIGFsd2F5cy4KKyAqCTIuIFdyaXR0ZW4gYnkgQ1BVICh1c2luZyBwd3JpdGUpCisgKgkJVGhlIHB3cml0ZSBmdW5jdGlvbiBjYWxscyBzZXRfZG9tYWluIChDUFUsIENQVSkgYW5kCisgKgkJdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgKGFzIG5vdGhpbmcgY2hhbmdlcykKKyAqCTMuIE1hcHBlZCBieSBHVFQKKyAqCQlUaGlzIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCB0aGUgb2JqZWN0IGlzIG5vdAorICoJCWN1cnJlbnRseSBpbiBhbnkgR1BVLWJhc2VkIHJlYWQgb3Igd3JpdGUgZG9tYWlucworICoJNC4gUmVhZCBieSBHUFUKKyAqCQlpOTE1X2dlbV9leGVjYnVmZmVyIGNhbGxzIHNldF9kb21haW4gKENPTU1BTkQsIDApLgorICoJCUFzIHdyaXRlX2RvbWFpbiBpcyB6ZXJvLCB0aGlzIGZ1bmN0aW9uIGFkZHMgaW4gdGhlCisgKgkJY3VycmVudCByZWFkIGRvbWFpbnMgKENQVStDT01NQU5ELCAwKS4KKyAqCQlmbHVzaF9kb21haW5zIGlzIHNldCB0byBDUFUuCisgKgkJaW52YWxpZGF0ZV9kb21haW5zIGlzIHNldCB0byBDT01NQU5ECisgKgkJY2xmbHVzaCBpcyBydW4gdG8gZ2V0IGRhdGEgb3V0IG9mIHRoZSBDUFUgY2FjaGVzCisgKgkJdGhlbiBpOTE1X2Rldl9zZXRfZG9tYWluIGNhbGxzIGk5MTVfZ2VtX2ZsdXNoIHRvCisgKgkJZW1pdCBhbiBNSV9GTFVTSCBhbmQgZHJtX2FncF9jaGlwc2V0X2ZsdXNoCisgKgk1LiBVbm1hcHBlZCBmcm9tIEdUVAorICoJCWk5MTVfZ2VtX29iamVjdF91bmJpbmQgY2FsbHMgc2V0X2RvbWFpbiAoQ1BVLCBDUFUpCisgKgkJZmx1c2hfZG9tYWlucyBhbmQgaW52YWxpZGF0ZV9kb21haW5zIGVuZCB1cCBib3RoIHplcm8KKyAqCQlzbyBubyBmbHVzaGluZy9pbnZhbGlkYXRpbmcgaGFwcGVucworICoJNi4gRnJlZWQKKyAqCQl5YXksIGRvbmUKKyAqCisgKiBDYXNlIDI6IFRoZSBzaGFyZWQgcmVuZGVyIGJ1ZmZlcgorICoKKyAqCTEuIEFsbG9jYXRlZAorICoJMi4gTWFwcGVkIHRvIEdUVAorICoJMy4gUmVhZC93cml0dGVuIGJ5IEdQVQorICoJNC4gc2V0X2RvbWFpbiB0byAoQ1BVLENQVSkKKyAqCTUuIFJlYWQvd3JpdHRlbiBieSBDUFUKKyAqCTYuIFJlYWQvd3JpdHRlbiBieSBHUFUKKyAqCisgKgkxLiBBbGxvY2F0ZWQKKyAqCQlTYW1lIGFzIGxhc3QgZXhhbXBsZSwgKENQVSwgQ1BVKQorICoJMi4gTWFwcGVkIHRvIEdUVAorICoJCU5vdGhpbmcgY2hhbmdlcyAoYXNzZXJ0aW9ucyBmaW5kIHRoYXQgaXQgaXMgbm90IGluIHRoZSBHUFUpCisgKgkzLiBSZWFkL3dyaXR0ZW4gYnkgR1BVCisgKgkJZXhlY2J1ZmZlciBjYWxscyBzZXRfZG9tYWluIChSRU5ERVIsIFJFTkRFUikKKyAqCQlmbHVzaF9kb21haW5zIGdldHMgQ1BVCisgKgkJaW52YWxpZGF0ZV9kb21haW5zIGdldHMgR1BVCisgKgkJY2xmbHVzaCAob2JqKQorICoJCU1JX0ZMVVNIIGFuZCBkcm1fYWdwX2NoaXBzZXRfZmx1c2gKKyAqCTQuIHNldF9kb21haW4gKENQVSwgQ1BVKQorICoJCWZsdXNoX2RvbWFpbnMgZ2V0cyBHUFUKKyAqCQlpbnZhbGlkYXRlX2RvbWFpbnMgZ2V0cyBDUFUKKyAqCQl3YWl0X3JlbmRlcmluZyAob2JqKSB0byBtYWtlIHN1cmUgYWxsIGRyYXdpbmcgaXMgY29tcGxldGUuCisgKgkJVGhpcyB3aWxsIGluY2x1ZGUgYW4gTUlfRkxVU0ggdG8gZ2V0IHRoZSBkYXRhIGZyb20gR1BVCisgKgkJdG8gbWVtb3J5CisgKgkJY2xmbHVzaCAob2JqKSB0byBpbnZhbGlkYXRlIHRoZSBDUFUgY2FjaGUKKyAqCQlBbm90aGVyIE1JX0ZMVVNIIGluIGk5MTVfZ2VtX2ZsdXNoIChlbGltaW5hdGUgdGhpcyBzb21laG93PykKKyAqCTUuIFJlYWQvd3JpdHRlbiBieSBDUFUKKyAqCQljYWNoZSBsaW5lcyBhcmUgbG9hZGVkIGFuZCBkaXJ0aWVkCisgKgk2LiBSZWFkIHdyaXR0ZW4gYnkgR1BVCisgKgkJU2FtZSBhcyBsYXN0IEdQVSBhY2Nlc3MKKyAqCisgKiBDYXNlIDM6IFRoZSBjb25zdGFudCBidWZmZXIKKyAqCisgKgkxLiBBbGxvY2F0ZWQKKyAqCTIuIFdyaXR0ZW4gYnkgQ1BVCisgKgkzLiBSZWFkIGJ5IEdQVQorICoJNC4gVXBkYXRlZCAod3JpdHRlbikgYnkgQ1BVIGFnYWluCisgKgk1LiBSZWFkIGJ5IEdQVQorICoKKyAqCTEuIEFsbG9jYXRlZAorICoJCShDUFUsIENQVSkKKyAqCTIuIFdyaXR0ZW4gYnkgQ1BVCisgKgkJKENQVSwgQ1BVKQorICoJMy4gUmVhZCBieSBHUFUKKyAqCQkoQ1BVK1JFTkRFUiwgMCkKKyAqCQlmbHVzaF9kb21haW5zID0gQ1BVCisgKgkJaW52YWxpZGF0ZV9kb21haW5zID0gUkVOREVSCisgKgkJY2xmbHVzaCAob2JqKQorICoJCU1JX0ZMVVNICisgKgkJZHJtX2FncF9jaGlwc2V0X2ZsdXNoCisgKgk0LiBVcGRhdGVkICh3cml0dGVuKSBieSBDUFUgYWdhaW4KKyAqCQkoQ1BVLCBDUFUpCisgKgkJZmx1c2hfZG9tYWlucyA9IDAgKG5vIHByZXZpb3VzIHdyaXRlIGRvbWFpbikKKyAqCQlpbnZhbGlkYXRlX2RvbWFpbnMgPSAwIChubyBuZXcgcmVhZCBkb21haW5zKQorICoJNS4gUmVhZCBieSBHUFUKKyAqCQkoQ1BVK1JFTkRFUiwgMCkKKyAqCQlmbHVzaF9kb21haW5zID0gQ1BVCisgKgkJaW52YWxpZGF0ZV9kb21haW5zID0gUkVOREVSCisgKgkJY2xmbHVzaCAob2JqKQorICoJCU1JX0ZMVVNICisgKgkJZHJtX2FncF9jaGlwc2V0X2ZsdXNoCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX29iamVjdF9zZXRfZG9tYWluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQkJICAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCSAgICB1aW50MzJfdCB3cml0ZV9kb21haW4pCit7CisJc3RydWN0IGRybV9kZXZpY2UJCSpkZXYgPSBvYmotPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdAkqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCXVpbnQzMl90CQkJaW52YWxpZGF0ZV9kb21haW5zID0gMDsKKwl1aW50MzJfdAkJCWZsdXNoX2RvbWFpbnMgPSAwOworCWludAkJCQlyZXQ7CisKKyNpZiBXQVRDSF9CVUYKKwlEUk1fSU5GTygiJXM6IG9iamVjdCAlcCByZWFkICUwOHggLT4gJTA4eCB3cml0ZSAlMDh4IC0+ICUwOHhcbiIsCisJCSBfX2Z1bmNfXywgb2JqLAorCQkgb2JqLT5yZWFkX2RvbWFpbnMsIHJlYWRfZG9tYWlucywKKwkJIG9iai0+d3JpdGVfZG9tYWluLCB3cml0ZV9kb21haW4pOworI2VuZGlmCisJLyoKKwkgKiBJZiB0aGUgb2JqZWN0IGlzbid0IG1vdmluZyB0byBhIG5ldyB3cml0ZSBkb21haW4sCisJICogbGV0IHRoZSBvYmplY3Qgc3RheSBpbiBtdWx0aXBsZSByZWFkIGRvbWFpbnMKKwkgKi8KKwlpZiAod3JpdGVfZG9tYWluID09IDApCisJCXJlYWRfZG9tYWlucyB8PSBvYmotPnJlYWRfZG9tYWluczsKKwllbHNlCisJCW9ial9wcml2LT5kaXJ0eSA9IDE7CisKKwkvKgorCSAqIEZsdXNoIHRoZSBjdXJyZW50IHdyaXRlIGRvbWFpbiBpZgorCSAqIHRoZSBuZXcgcmVhZCBkb21haW5zIGRvbid0IG1hdGNoLiBJbnZhbGlkYXRlCisJICogYW55IHJlYWQgZG9tYWlucyB3aGljaCBkaWZmZXIgZnJvbSB0aGUgb2xkCisJICogd3JpdGUgZG9tYWluCisJICovCisJaWYgKG9iai0+d3JpdGVfZG9tYWluICYmIG9iai0+d3JpdGVfZG9tYWluICE9IHJlYWRfZG9tYWlucykgeworCQlmbHVzaF9kb21haW5zIHw9IG9iai0+d3JpdGVfZG9tYWluOworCQlpbnZhbGlkYXRlX2RvbWFpbnMgfD0gcmVhZF9kb21haW5zICYgfm9iai0+d3JpdGVfZG9tYWluOworCX0KKwkvKgorCSAqIEludmFsaWRhdGUgYW55IHJlYWQgY2FjaGVzIHdoaWNoIG1heSBoYXZlCisJICogc3RhbGUgZGF0YS4gVGhhdCBpcywgYW55IG5ldyByZWFkIGRvbWFpbnMuCisJICovCisJaW52YWxpZGF0ZV9kb21haW5zIHw9IHJlYWRfZG9tYWlucyAmIH5vYmotPnJlYWRfZG9tYWluczsKKwlpZiAoKGZsdXNoX2RvbWFpbnMgfCBpbnZhbGlkYXRlX2RvbWFpbnMpICYgSTkxNV9HRU1fRE9NQUlOX0NQVSkgeworI2lmIFdBVENIX0JVRgorCQlEUk1fSU5GTygiJXM6IENQVSBkb21haW4gZmx1c2ggJTA4eCBpbnZhbGlkYXRlICUwOHhcbiIsCisJCQkgX19mdW5jX18sIGZsdXNoX2RvbWFpbnMsIGludmFsaWRhdGVfZG9tYWlucyk7CisjZW5kaWYKKwkJLyoKKwkJICogSWYgd2UncmUgaW52YWxpZGluZyB0aGUgQ1BVIGNhY2hlIGFuZCBmbHVzaGluZyBhIEdQVSBjYWNoZSwKKwkJICogdGhlbiBwYXVzZSBmb3IgcmVuZGVyaW5nIHNvIHRoYXQgdGhlIEdQVSBjYWNoZXMgd2lsbCBiZQorCQkgKiBmbHVzaGVkIGJlZm9yZSB0aGUgY3B1IGNhY2hlIGlzIGludmFsaWRhdGVkCisJCSAqLworCQlpZiAoKGludmFsaWRhdGVfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJTl9DUFUpICYmCisJCSAgICAoZmx1c2hfZG9tYWlucyAmIH4oSTkxNV9HRU1fRE9NQUlOX0NQVSB8CisJCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQpKSkgeworCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9iaik7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0KKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqKTsKKwl9CisKKwlpZiAoKHdyaXRlX2RvbWFpbiB8IGZsdXNoX2RvbWFpbnMpICE9IDApCisJCW9iai0+d3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluOworCisJLyogSWYgd2UncmUgaW52YWxpZGF0aW5nIHRoZSBDUFUgZG9tYWluLCBjbGVhciB0aGUgcGVyLXBhZ2UgQ1BVCisJICogZG9tYWluIGxpc3QgYXMgd2VsbC4KKwkgKi8KKwlpZiAob2JqX3ByaXYtPnBhZ2VfY3B1X3ZhbGlkICE9IE5VTEwgJiYKKwkgICAgKHdyaXRlX2RvbWFpbiAhPSAwIHx8CisJICAgICByZWFkX2RvbWFpbnMgJiBJOTE1X0dFTV9ET01BSU5fQ1BVKSkgeworCQlkcm1fZnJlZShvYmpfcHJpdi0+cGFnZV9jcHVfdmFsaWQsIG9iai0+c2l6ZSAvIFBBR0VfU0laRSwKKwkJCSBEUk1fTUVNX0RSSVZFUik7CisJCW9ial9wcml2LT5wYWdlX2NwdV92YWxpZCA9IE5VTEw7CisJfQorCW9iai0+cmVhZF9kb21haW5zID0gcmVhZF9kb21haW5zOworCisJZGV2LT5pbnZhbGlkYXRlX2RvbWFpbnMgfD0gaW52YWxpZGF0ZV9kb21haW5zOworCWRldi0+Zmx1c2hfZG9tYWlucyB8PSBmbHVzaF9kb21haW5zOworI2lmIFdBVENIX0JVRgorCURSTV9JTkZPKCIlczogcmVhZCAlMDh4IHdyaXRlICUwOHggaW52YWxpZGF0ZSAlMDh4IGZsdXNoICUwOHhcbiIsCisJCSBfX2Z1bmNfXywKKwkJIG9iai0+cmVhZF9kb21haW5zLCBvYmotPndyaXRlX2RvbWFpbiwKKwkJIGRldi0+aW52YWxpZGF0ZV9kb21haW5zLCBkZXYtPmZsdXNoX2RvbWFpbnMpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogU2V0IHRoZSByZWFkL3dyaXRlIGRvbWFpbiBvbiBhIHJhbmdlIG9mIHRoZSBvYmplY3QuCisgKgorICogQ3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgZm9yIENQVSByZWFkcywgb3RoZXJ3aXNlIGRyb3BzIHRvIG5vcm1hbAorICogaTkxNV9nZW1fb2JqZWN0X3NldF9kb21haW4oKS4KKyAqLworc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X3NldF9kb21haW5fcmFuZ2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCQkJIHVpbnQ2NF90IG9mZnNldCwKKwkJCQkgdWludDY0X3Qgc2l6ZSwKKwkJCQkgdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJCSB1aW50MzJfdCB3cml0ZV9kb21haW4pCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKwlpbnQgcmV0LCBpOworCisJaWYgKG9iai0+cmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0NQVSkKKwkJcmV0dXJuIDA7CisKKwlpZiAocmVhZF9kb21haW5zICE9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfHwKKwkgICAgd3JpdGVfZG9tYWluICE9IDApCisJCXJldHVybiBpOTE1X2dlbV9vYmplY3Rfc2V0X2RvbWFpbihvYmosCisJCQkJCQkgIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluKTsKKworCS8qIFdhaXQgb24gYW55IEdQVSByZW5kZXJpbmcgdG8gdGhlIG9iamVjdCB0byBiZSBmbHVzaGVkLiAqLworCWlmIChvYmotPndyaXRlX2RvbWFpbiAmIH4oSTkxNV9HRU1fRE9NQUlOX0NQVSB8IEk5MTVfR0VNX0RPTUFJTl9HVFQpKSB7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhvYmopOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAob2JqX3ByaXYtPnBhZ2VfY3B1X3ZhbGlkID09IE5VTEwpIHsKKwkJb2JqX3ByaXYtPnBhZ2VfY3B1X3ZhbGlkID0gZHJtX2NhbGxvYygxLCBvYmotPnNpemUgLyBQQUdFX1NJWkUsCisJCQkJCQkgICAgICBEUk1fTUVNX0RSSVZFUik7CisJfQorCisJLyogRmx1c2ggdGhlIGNhY2hlIG9uIGFueSBwYWdlcyB0aGF0IGFyZSBzdGlsbCBpbnZhbGlkIGZyb20gdGhlIENQVSdzCisJICogcGVyc3BlY3RpdmUuCisJICovCisJZm9yIChpID0gb2Zmc2V0IC8gUEFHRV9TSVpFOyBpIDw9IChvZmZzZXQgKyBzaXplIC0gMSkgLyBQQUdFX1NJWkU7IGkrKykgeworCQlpZiAob2JqX3ByaXYtPnBhZ2VfY3B1X3ZhbGlkW2ldKQorCQkJY29udGludWU7CisKKwkJZHJtX2NsZmx1c2hfcGFnZXMob2JqX3ByaXYtPnBhZ2VfbGlzdCArIGksIDEpOworCisJCW9ial9wcml2LT5wYWdlX2NwdV92YWxpZFtpXSA9IDE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogT25jZSBhbGwgb2YgdGhlIG9iamVjdHMgaGF2ZSBiZWVuIHNldCBpbiB0aGUgcHJvcGVyIGRvbWFpbiwKKyAqIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBmbHVzaCBhbmQgaW52YWxpZGF0ZSBvcGVyYXRpb25zLgorICoKKyAqIFJldHVybnMgdGhlIHdyaXRlIGRvbWFpbnMgZmx1c2hlZCwgZm9yIHVzZSBpbiBmbHVzaCB0cmFja2luZy4KKyAqLworc3RhdGljIHVpbnQzMl90CitpOTE1X2dlbV9kZXZfc2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXVpbnQzMl90IGZsdXNoX2RvbWFpbnMgPSBkZXYtPmZsdXNoX2RvbWFpbnM7CisKKwkvKgorCSAqIE5vdyB0aGF0IGFsbCB0aGUgYnVmZmVycyBhcmUgc3luY2VkIHRvIHRoZSBwcm9wZXIgZG9tYWlucywKKwkgKiBmbHVzaCBhbmQgaW52YWxpZGF0ZSB0aGUgY29sbGVjdGVkIGRvbWFpbnMKKwkgKi8KKwlpZiAoZGV2LT5pbnZhbGlkYXRlX2RvbWFpbnMgfCBkZXYtPmZsdXNoX2RvbWFpbnMpIHsKKyNpZiBXQVRDSF9FWEVDCisJCURSTV9JTkZPKCIlczogaW52YWxpZGF0ZV9kb21haW5zICUwOHggZmx1c2hfZG9tYWlucyAlMDh4XG4iLAorCQkJICBfX2Z1bmNfXywKKwkJCSBkZXYtPmludmFsaWRhdGVfZG9tYWlucywKKwkJCSBkZXYtPmZsdXNoX2RvbWFpbnMpOworI2VuZGlmCisJCWk5MTVfZ2VtX2ZsdXNoKGRldiwKKwkJCSAgICAgICBkZXYtPmludmFsaWRhdGVfZG9tYWlucywKKwkJCSAgICAgICBkZXYtPmZsdXNoX2RvbWFpbnMpOworCQlkZXYtPmludmFsaWRhdGVfZG9tYWlucyA9IDA7CisJCWRldi0+Zmx1c2hfZG9tYWlucyA9IDA7CisJfQorCisJcmV0dXJuIGZsdXNoX2RvbWFpbnM7Cit9CisKKy8qKgorICogUGluIGFuIG9iamVjdCB0byB0aGUgR1RUIGFuZCBldmFsdWF0ZSB0aGUgcmVsb2NhdGlvbnMgbGFuZGluZyBpbiBpdC4KKyAqLworc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X3Bpbl9hbmRfcmVsb2NhdGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0ICplbnRyeSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKnJlbG9jczsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCWludCBpLCByZXQ7CisJdWludDMyX3QgbGFzdF9yZWxvY19vZmZzZXQgPSAtMTsKKwl2b2lkIF9faW9tZW0gKnJlbG9jX3BhZ2UgPSBOVUxMOworCisJLyogQ2hvb3NlIHRoZSBHVFQgb2Zmc2V0IGZvciBvdXIgYnVmZmVyIGFuZCBwdXQgaXQgdGhlcmUuICovCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3BpbihvYmosICh1aW50MzJfdCkgZW50cnktPmFsaWdubWVudCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWVudHJ5LT5vZmZzZXQgPSBvYmpfcHJpdi0+Z3R0X29mZnNldDsKKworCXJlbG9jcyA9IChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgX191c2VyICopCisJCSAodWludHB0cl90KSBlbnRyeS0+cmVsb2NzX3B0cjsKKwkvKiBBcHBseSB0aGUgcmVsb2NhdGlvbnMsIHVzaW5nIHRoZSBHVFQgYXBlcnR1cmUgdG8gYXZvaWQgY2FjaGUKKwkgKiBmbHVzaGluZyByZXF1aXJlbWVudHMuCisJICovCisJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5yZWxvY2F0aW9uX2NvdW50OyBpKyspIHsKKwkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICp0YXJnZXRfb2JqOworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdGFyZ2V0X29ial9wcml2OworCQl1aW50MzJfdCByZWxvY192YWwsIHJlbG9jX29mZnNldDsKKwkJdWludDMyX3QgX19pb21lbSAqcmVsb2NfZW50cnk7CisKKwkJcmV0ID0gY29weV9mcm9tX3VzZXIoJnJlbG9jLCByZWxvY3MgKyBpLCBzaXplb2YocmVsb2MpKTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQl0YXJnZXRfb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKG9iai0+ZGV2LCBmaWxlX3ByaXYsCisJCQkJCQkgICByZWxvYy50YXJnZXRfaGFuZGxlKTsKKwkJaWYgKHRhcmdldF9vYmogPT0gTlVMTCkgeworCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluKG9iaik7CisJCQlyZXR1cm4gLUVCQURGOworCQl9CisJCXRhcmdldF9vYmpfcHJpdiA9IHRhcmdldF9vYmotPmRyaXZlcl9wcml2YXRlOworCisJCS8qIFRoZSB0YXJnZXQgYnVmZmVyIHNob3VsZCBoYXZlIGFwcGVhcmVkIGJlZm9yZSB1cyBpbiB0aGUKKwkJICogZXhlY19vYmplY3QgbGlzdCwgc28gaXQgc2hvdWxkIGhhdmUgYSBHVFQgc3BhY2UgYm91bmQgYnkgbm93LgorCQkgKi8KKwkJaWYgKHRhcmdldF9vYmpfcHJpdi0+Z3R0X3NwYWNlID09IE5VTEwpIHsKKwkJCURSTV9FUlJPUigiTm8gR1RUIHNwYWNlIGZvdW5kIGZvciBvYmplY3QgJWRcbiIsCisJCQkJICByZWxvYy50YXJnZXRfaGFuZGxlKTsKKwkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKHRhcmdldF9vYmopOworCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluKG9iaik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWlmIChyZWxvYy5vZmZzZXQgPiBvYmotPnNpemUgLSA0KSB7CisJCQlEUk1fRVJST1IoIlJlbG9jYXRpb24gYmV5b25kIG9iamVjdCBib3VuZHM6ICIKKwkJCQkgICJvYmogJXAgdGFyZ2V0ICVkIG9mZnNldCAlZCBzaXplICVkLlxuIiwKKwkJCQkgIG9iaiwgcmVsb2MudGFyZ2V0X2hhbmRsZSwKKwkJCQkgIChpbnQpIHJlbG9jLm9mZnNldCwgKGludCkgb2JqLT5zaXplKTsKKwkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKHRhcmdldF9vYmopOworCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluKG9iaik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAocmVsb2Mub2Zmc2V0ICYgMykgeworCQkJRFJNX0VSUk9SKCJSZWxvY2F0aW9uIG5vdCA0LWJ5dGUgYWxpZ25lZDogIgorCQkJCSAgIm9iaiAlcCB0YXJnZXQgJWQgb2Zmc2V0ICVkLlxuIiwKKwkJCQkgIG9iaiwgcmVsb2MudGFyZ2V0X2hhbmRsZSwKKwkJCQkgIChpbnQpIHJlbG9jLm9mZnNldCk7CisJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSh0YXJnZXRfb2JqKTsKKwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbihvYmopOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlpZiAocmVsb2Mud3JpdGVfZG9tYWluICYmIHRhcmdldF9vYmotPnBlbmRpbmdfd3JpdGVfZG9tYWluICYmCisJCSAgICByZWxvYy53cml0ZV9kb21haW4gIT0gdGFyZ2V0X29iai0+cGVuZGluZ193cml0ZV9kb21haW4pIHsKKwkJCURSTV9FUlJPUigiV3JpdGUgZG9tYWluIGNvbmZsaWN0OiAiCisJCQkJICAib2JqICVwIHRhcmdldCAlZCBvZmZzZXQgJWQgIgorCQkJCSAgIm5ldyAlMDh4IG9sZCAlMDh4XG4iLAorCQkJCSAgb2JqLCByZWxvYy50YXJnZXRfaGFuZGxlLAorCQkJCSAgKGludCkgcmVsb2Mub2Zmc2V0LAorCQkJCSAgcmVsb2Mud3JpdGVfZG9tYWluLAorCQkJCSAgdGFyZ2V0X29iai0+cGVuZGluZ193cml0ZV9kb21haW4pOworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UodGFyZ2V0X29iaik7CisJCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKyNpZiBXQVRDSF9SRUxPQworCQlEUk1fSU5GTygiJXM6IG9iaiAlcCBvZmZzZXQgJTA4eCB0YXJnZXQgJWQgIgorCQkJICJyZWFkICUwOHggd3JpdGUgJTA4eCBndHQgJTA4eCAiCisJCQkgInByZXN1bWVkICUwOHggZGVsdGEgJTA4eFxuIiwKKwkJCSBfX2Z1bmNfXywKKwkJCSBvYmosCisJCQkgKGludCkgcmVsb2Mub2Zmc2V0LAorCQkJIChpbnQpIHJlbG9jLnRhcmdldF9oYW5kbGUsCisJCQkgKGludCkgcmVsb2MucmVhZF9kb21haW5zLAorCQkJIChpbnQpIHJlbG9jLndyaXRlX2RvbWFpbiwKKwkJCSAoaW50KSB0YXJnZXRfb2JqX3ByaXYtPmd0dF9vZmZzZXQsCisJCQkgKGludCkgcmVsb2MucHJlc3VtZWRfb2Zmc2V0LAorCQkJIHJlbG9jLmRlbHRhKTsKKyNlbmRpZgorCisJCXRhcmdldF9vYmotPnBlbmRpbmdfcmVhZF9kb21haW5zIHw9IHJlbG9jLnJlYWRfZG9tYWluczsKKwkJdGFyZ2V0X29iai0+cGVuZGluZ193cml0ZV9kb21haW4gfD0gcmVsb2Mud3JpdGVfZG9tYWluOworCisJCS8qIElmIHRoZSByZWxvY2F0aW9uIGFscmVhZHkgaGFzIHRoZSByaWdodCB2YWx1ZSBpbiBpdCwgbm8KKwkJICogbW9yZSB3b3JrIG5lZWRzIHRvIGJlIGRvbmUuCisJCSAqLworCQlpZiAodGFyZ2V0X29ial9wcml2LT5ndHRfb2Zmc2V0ID09IHJlbG9jLnByZXN1bWVkX29mZnNldCkgeworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UodGFyZ2V0X29iaik7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIE5vdyB0aGF0IHdlJ3JlIGdvaW5nIHRvIGFjdHVhbGx5IHdyaXRlIHNvbWUgZGF0YSBpbiwKKwkJICogbWFrZSBzdXJlIHRoYXQgYW55IHJlbmRlcmluZyB1c2luZyB0aGlzIGJ1ZmZlcidzIGNvbnRlbnRzCisJCSAqIGlzIGNvbXBsZXRlZC4KKwkJICovCisJCWk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhvYmopOworCisJCS8qIEFzIHdlJ3JlIHdyaXRpbmcgdGhyb3VnaCB0aGUgZ3R0LCBmbHVzaAorCQkgKiBhbnkgQ1BVIHdyaXRlcyBiZWZvcmUgd2Ugd3JpdGUgdGhlIHJlbG9jYXRpb25zCisJCSAqLworCQlpZiAob2JqLT53cml0ZV9kb21haW4gJiBJOTE1X0dFTV9ET01BSU5fQ1BVKSB7CisJCQlpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmopOworCQkJZHJtX2FncF9jaGlwc2V0X2ZsdXNoKGRldik7CisJCQlvYmotPndyaXRlX2RvbWFpbiA9IDA7CisJCX0KKworCQkvKiBNYXAgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgcmVsb2NhdGlvbiB3ZSdyZSBnb2luZyB0bworCQkgKiBwZXJmb3JtLgorCQkgKi8KKwkJcmVsb2Nfb2Zmc2V0ID0gb2JqX3ByaXYtPmd0dF9vZmZzZXQgKyByZWxvYy5vZmZzZXQ7CisJCWlmIChyZWxvY19wYWdlID09IE5VTEwgfHwKKwkJICAgIChsYXN0X3JlbG9jX29mZnNldCAmIH4oUEFHRV9TSVpFIC0gMSkpICE9CisJCSAgICAocmVsb2Nfb2Zmc2V0ICYgfihQQUdFX1NJWkUgLSAxKSkpIHsKKwkJCWlmIChyZWxvY19wYWdlICE9IE5VTEwpCisJCQkJaW91bm1hcChyZWxvY19wYWdlKTsKKworCQkJcmVsb2NfcGFnZSA9IGlvcmVtYXBfd2MoZGV2LT5hZ3AtPmJhc2UgKworCQkJCQkJKHJlbG9jX29mZnNldCAmCisJCQkJCQkgfihQQUdFX1NJWkUgLSAxKSksCisJCQkJCQlQQUdFX1NJWkUpOworCQkJbGFzdF9yZWxvY19vZmZzZXQgPSByZWxvY19vZmZzZXQ7CisJCQlpZiAocmVsb2NfcGFnZSA9PSBOVUxMKSB7CisJCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UodGFyZ2V0X29iaik7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluKG9iaik7CisJCQkJcmV0dXJuIC1FTk9NRU07CisJCQl9CisJCX0KKworCQlyZWxvY19lbnRyeSA9ICh1aW50MzJfdCBfX2lvbWVtICopKHJlbG9jX3BhZ2UgKworCQkJCQkgICAocmVsb2Nfb2Zmc2V0ICYgKFBBR0VfU0laRSAtIDEpKSk7CisJCXJlbG9jX3ZhbCA9IHRhcmdldF9vYmpfcHJpdi0+Z3R0X29mZnNldCArIHJlbG9jLmRlbHRhOworCisjaWYgV0FUQ0hfQlVGCisJCURSTV9JTkZPKCJBcHBsaWVkIHJlbG9jYXRpb246ICVwQDB4JTA4eCAlMDh4IC0+ICUwOHhcbiIsCisJCQkgIG9iaiwgKHVuc2lnbmVkIGludCkgcmVsb2Mub2Zmc2V0LAorCQkJICByZWFkbChyZWxvY19lbnRyeSksIHJlbG9jX3ZhbCk7CisjZW5kaWYKKwkJd3JpdGVsKHJlbG9jX3ZhbCwgcmVsb2NfZW50cnkpOworCisJCS8qIFdyaXRlIHRoZSB1cGRhdGVkIHByZXN1bWVkIG9mZnNldCBmb3IgdGhpcyBlbnRyeSBiYWNrIG91dAorCQkgKiB0byB0aGUgdXNlci4KKwkJICovCisJCXJlbG9jLnByZXN1bWVkX29mZnNldCA9IHRhcmdldF9vYmpfcHJpdi0+Z3R0X29mZnNldDsKKwkJcmV0ID0gY29weV90b191c2VyKHJlbG9jcyArIGksICZyZWxvYywgc2l6ZW9mKHJlbG9jKSk7CisJCWlmIChyZXQgIT0gMCkgeworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UodGFyZ2V0X29iaik7CisJCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSh0YXJnZXRfb2JqKTsKKwl9CisKKwlpZiAocmVsb2NfcGFnZSAhPSBOVUxMKQorCQlpb3VubWFwKHJlbG9jX3BhZ2UpOworCisjaWYgV0FUQ0hfQlVGCisJaWYgKDApCisJCWk5MTVfZ2VtX2R1bXBfb2JqZWN0KG9iaiwgMTI4LCBfX2Z1bmNfXywgfjApOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKy8qKiBEaXNwYXRjaCBhIGJhdGNoYnVmZmVyIHRvIHRoZSByaW5nCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfZGlzcGF0Y2hfZ2VtX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlciAqZXhlYywKKwkJCSAgICAgIHVpbnQ2NF90IGV4ZWNfb2Zmc2V0KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fY2xpcF9yZWN0IF9fdXNlciAqYm94ZXMgPSAoc3RydWN0IGRybV9jbGlwX3JlY3QgX191c2VyICopCisJCQkJCSAgICAgKHVpbnRwdHJfdCkgZXhlYy0+Y2xpcHJlY3RzX3B0cjsKKwlpbnQgbmJveCA9IGV4ZWMtPm51bV9jbGlwcmVjdHM7CisJaW50IGkgPSAwLCBjb3VudDsKKwl1aW50MzJfdAlleGVjX3N0YXJ0LCBleGVjX2xlbjsKKwlSSU5HX0xPQ0FMUzsKKworCWV4ZWNfc3RhcnQgPSAodWludDMyX3QpIGV4ZWNfb2Zmc2V0ICsgZXhlYy0+YmF0Y2hfc3RhcnRfb2Zmc2V0OworCWV4ZWNfbGVuID0gKHVpbnQzMl90KSBleGVjLT5iYXRjaF9sZW47CisKKwlpZiAoKGV4ZWNfc3RhcnQgfCBleGVjX2xlbikgJiAweDcpIHsKKwkJRFJNX0VSUk9SKCJhbGlnbm1lbnRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoIWV4ZWNfc3RhcnQpCisJCXJldHVybiAtRUlOVkFMOworCisJY291bnQgPSBuYm94ID8gbmJveCA6IDE7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQlpZiAoaSA8IG5ib3gpIHsKKwkJCWludCByZXQgPSBpOTE1X2VtaXRfYm94KGRldiwgYm94ZXMsIGksCisJCQkJCQlleGVjLT5EUjEsIGV4ZWMtPkRSNCk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0KKworCQlpZiAoSVNfSTgzMChkZXYpIHx8IElTXzg0NUcoZGV2KSkgeworCQkJQkVHSU5fTFBfUklORyg0KTsKKwkJCU9VVF9SSU5HKE1JX0JBVENIX0JVRkZFUik7CisJCQlPVVRfUklORyhleGVjX3N0YXJ0IHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisJCQlPVVRfUklORyhleGVjX3N0YXJ0ICsgZXhlY19sZW4gLSA0KTsKKwkJCU9VVF9SSU5HKDApOworCQkJQURWQU5DRV9MUF9SSU5HKCk7CisJCX0gZWxzZSB7CisJCQlCRUdJTl9MUF9SSU5HKDIpOworCQkJaWYgKElTX0k5NjVHKGRldikpIHsKKwkJCQlPVVRfUklORyhNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAorCQkJCQkgKDIgPDwgNikgfAorCQkJCQkgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9JOTY1KTsKKwkJCQlPVVRfUklORyhleGVjX3N0YXJ0KTsKKwkJCX0gZWxzZSB7CisJCQkJT1VUX1JJTkcoTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKKwkJCQkJICgyIDw8IDYpKTsKKwkJCQlPVVRfUklORyhleGVjX3N0YXJ0IHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRSk7CisJCQl9CisJCQlBRFZBTkNFX0xQX1JJTkcoKTsKKwkJfQorCX0KKworCS8qIFhYWCBicmVhZGNydW1iICovCisJcmV0dXJuIDA7Cit9CisKKy8qIFRocm90dGxlIG91ciByZW5kZXJpbmcgYnkgd2FpdGluZyB1bnRpbCB0aGUgcmluZyBoYXMgY29tcGxldGVkIG91ciByZXF1ZXN0cworICogZW1pdHRlZCBvdmVyIDIwIG1zZWMgYWdvLgorICoKKyAqIFRoaXMgc2hvdWxkIGdldCB1cyByZWFzb25hYmxlIHBhcmFsbGVsaXNtIGJldHdlZW4gQ1BVIGFuZCBHUFUgYnV0IGFsc28KKyAqIHJlbGF0aXZlbHkgbG93IGxhdGVuY3kgd2hlbiBibG9ja2luZyBvbiBhIHBhcnRpY3VsYXIgcmVxdWVzdCB0byBmaW5pc2guCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX3JpbmdfdGhyb3R0bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqaTkxNV9maWxlX3ByaXYgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OworCWludCByZXQgPSAwOworCXVpbnQzMl90IHNlcW5vOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXNlcW5vID0gaTkxNV9maWxlX3ByaXYtPm1tLmxhc3RfZ2VtX3Rocm90dGxlX3NlcW5vOworCWk5MTVfZmlsZV9wcml2LT5tbS5sYXN0X2dlbV90aHJvdHRsZV9zZXFubyA9CisJCWk5MTVfZmlsZV9wcml2LT5tbS5sYXN0X2dlbV9zZXFubzsKKwlpZiAoc2Vxbm8pCisJCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KGRldiwgc2Vxbm8pOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKK2ludAoraTkxNV9nZW1fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqaTkxNV9maWxlX3ByaXYgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlciAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdCAqZXhlY19saXN0ID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmplY3RfbGlzdCA9IE5VTEw7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpiYXRjaF9vYmo7CisJaW50IHJldCwgaSwgcGlubmVkID0gMDsKKwl1aW50NjRfdCBleGVjX29mZnNldDsKKwl1aW50MzJfdCBzZXFubywgZmx1c2hfZG9tYWluczsKKworI2lmIFdBVENIX0VYRUMKKwlEUk1fSU5GTygiYnVmZmVyc19wdHIgJWQgYnVmZmVyX2NvdW50ICVkIGxlbiAlMDh4XG4iLAorCQkgIChpbnQpIGFyZ3MtPmJ1ZmZlcnNfcHRyLCBhcmdzLT5idWZmZXJfY291bnQsIGFyZ3MtPmJhdGNoX2xlbik7CisjZW5kaWYKKworCWlmIChhcmdzLT5idWZmZXJfY291bnQgPCAxKSB7CisJCURSTV9FUlJPUigiZXhlY2J1ZiB3aXRoICVkIGJ1ZmZlcnNcbiIsIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwkvKiBDb3B5IGluIHRoZSBleGVjIGxpc3QgZnJvbSB1c2VybGFuZCAqLworCWV4ZWNfbGlzdCA9IGRybV9jYWxsb2Moc2l6ZW9mKCpleGVjX2xpc3QpLCBhcmdzLT5idWZmZXJfY291bnQsCisJCQkgICAgICAgRFJNX01FTV9EUklWRVIpOworCW9iamVjdF9saXN0ID0gZHJtX2NhbGxvYyhzaXplb2YoKm9iamVjdF9saXN0KSwgYXJncy0+YnVmZmVyX2NvdW50LAorCQkJCSBEUk1fTUVNX0RSSVZFUik7CisJaWYgKGV4ZWNfbGlzdCA9PSBOVUxMIHx8IG9iamVjdF9saXN0ID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgZXhlYyBvciBvYmplY3QgbGlzdCAiCisJCQkgICJmb3IgJWQgYnVmZmVyc1xuIiwKKwkJCSAgYXJncy0+YnVmZmVyX2NvdW50KTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBwcmVfbXV0ZXhfZXJyOworCX0KKwlyZXQgPSBjb3B5X2Zyb21fdXNlcihleGVjX2xpc3QsCisJCQkgICAgIChzdHJ1Y3QgZHJtX2k5MTVfcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKikKKwkJCSAgICAgKHVpbnRwdHJfdCkgYXJncy0+YnVmZmVyc19wdHIsCisJCQkgICAgIHNpemVvZigqZXhlY19saXN0KSAqIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7CisJaWYgKHJldCAhPSAwKSB7CisJCURSTV9FUlJPUigiY29weSAlZCBleGVjIGVudHJpZXMgZmFpbGVkICVkXG4iLAorCQkJICBhcmdzLT5idWZmZXJfY291bnQsIHJldCk7CisJCWdvdG8gcHJlX211dGV4X2VycjsKKwl9CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlpOTE1X3ZlcmlmeV9pbmFjdGl2ZShkZXYsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKwlpZiAoZGV2X3ByaXYtPm1tLndlZGdlZCkgeworCQlEUk1fRVJST1IoIkV4ZWNidWYgd2hpbGUgd2VkZ2VkXG4iKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCXJldHVybiAtRUlPOworCX0KKworCWlmIChkZXZfcHJpdi0+bW0uc3VzcGVuZGVkKSB7CisJCURSTV9FUlJPUigiRXhlY2J1ZiB3aGlsZSBWVC1zd2l0Y2hlZC5cbiIpOworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwkvKiBaZXJvIHRoZSBnbG9hYmwgZmx1c2gvaW52YWxpZGF0ZSBmbGFncy4gVGhlc2UKKwkgKiB3aWxsIGJlIG1vZGlmaWVkIGFzIGVhY2ggb2JqZWN0IGlzIGJvdW5kIHRvIHRoZQorCSAqIGd0dAorCSAqLworCWRldi0+aW52YWxpZGF0ZV9kb21haW5zID0gMDsKKwlkZXYtPmZsdXNoX2RvbWFpbnMgPSAwOworCisJLyogTG9vayB1cCBvYmplY3QgaGFuZGxlcyBhbmQgcGVyZm9ybSB0aGUgcmVsb2NhdGlvbnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYXJncy0+YnVmZmVyX2NvdW50OyBpKyspIHsKKwkJb2JqZWN0X2xpc3RbaV0gPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZGV2LCBmaWxlX3ByaXYsCisJCQkJCQkgICAgICAgZXhlY19saXN0W2ldLmhhbmRsZSk7CisJCWlmIChvYmplY3RfbGlzdFtpXSA9PSBOVUxMKSB7CisJCQlEUk1fRVJST1IoIkludmFsaWQgb2JqZWN0IGhhbmRsZSAlZCBhdCBpbmRleCAlZFxuIiwKKwkJCQkgICBleGVjX2xpc3RbaV0uaGFuZGxlLCBpKTsKKwkJCXJldCA9IC1FQkFERjsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJb2JqZWN0X2xpc3RbaV0tPnBlbmRpbmdfcmVhZF9kb21haW5zID0gMDsKKwkJb2JqZWN0X2xpc3RbaV0tPnBlbmRpbmdfd3JpdGVfZG9tYWluID0gMDsKKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9hbmRfcmVsb2NhdGUob2JqZWN0X2xpc3RbaV0sCisJCQkJCQkgICAgICAgZmlsZV9wcml2LAorCQkJCQkJICAgICAgICZleGVjX2xpc3RbaV0pOworCQlpZiAocmV0KSB7CisJCQlEUk1fRVJST1IoIm9iamVjdCBiaW5kIGFuZCByZWxvY2F0ZSBmYWlsZWQgJWRcbiIsIHJldCk7CisJCQlnb3RvIGVycjsKKwkJfQorCQlwaW5uZWQgPSBpICsgMTsKKwl9CisKKwkvKiBTZXQgdGhlIHBlbmRpbmcgcmVhZCBkb21haW5zIGZvciB0aGUgYmF0Y2ggYnVmZmVyIHRvIENPTU1BTkQgKi8KKwliYXRjaF9vYmogPSBvYmplY3RfbGlzdFthcmdzLT5idWZmZXJfY291bnQtMV07CisJYmF0Y2hfb2JqLT5wZW5kaW5nX3JlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOworCWJhdGNoX29iai0+cGVuZGluZ193cml0ZV9kb21haW4gPSAwOworCisJaTkxNV92ZXJpZnlfaW5hY3RpdmUoZGV2LCBfX0ZJTEVfXywgX19MSU5FX18pOworCisJZm9yIChpID0gMDsgaSA8IGFyZ3MtPmJ1ZmZlcl9jb3VudDsgaSsrKSB7CisJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gb2JqZWN0X2xpc3RbaV07CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisKKwkJaWYgKG9ial9wcml2LT5ndHRfc3BhY2UgPT0gTlVMTCkgeworCQkJLyogV2UgZXZpY3RlZCB0aGUgYnVmZmVyIGluIHRoZSBwcm9jZXNzIG9mIHZhbGlkYXRpbmcKKwkJCSAqIG91ciBzZXQgb2YgYnVmZmVycyBpbi4gIFdlIGNvdWxkIHRyeSB0byByZWNvdmVyIGJ5CisJCQkgKiBraWNraW5nIHRoZW0gZXZlcnl0aGluZyBvdXQgYW5kIHRyeWluZyBhZ2FpbiBmcm9tCisJCQkgKiB0aGUgc3RhcnQuCisJCQkgKi8KKwkJCXJldCA9IC1FTk9NRU07CisJCQlnb3RvIGVycjsKKwkJfQorCisJCS8qIG1ha2Ugc3VyZSBhbGwgcHJldmlvdXMgbWVtb3J5IG9wZXJhdGlvbnMgaGF2ZSBwYXNzZWQgKi8KKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9kb21haW4ob2JqLAorCQkJCQkJIG9iai0+cGVuZGluZ19yZWFkX2RvbWFpbnMsCisJCQkJCQkgb2JqLT5wZW5kaW5nX3dyaXRlX2RvbWFpbik7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycjsKKwl9CisKKwlpOTE1X3ZlcmlmeV9pbmFjdGl2ZShkZXYsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKwkvKiBGbHVzaC9pbnZhbGlkYXRlIGNhY2hlcyBhbmQgY2hpcHNldCBidWZmZXIgKi8KKwlmbHVzaF9kb21haW5zID0gaTkxNV9nZW1fZGV2X3NldF9kb21haW4oZGV2KTsKKworCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKKworI2lmIFdBVENIX0NPSEVSRU5DWQorCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5idWZmZXJfY291bnQ7IGkrKykgeworCQlpOTE1X2dlbV9vYmplY3RfY2hlY2tfY29oZXJlbmN5KG9iamVjdF9saXN0W2ldLAorCQkJCQkJZXhlY19saXN0W2ldLmhhbmRsZSk7CisJfQorI2VuZGlmCisKKwlleGVjX29mZnNldCA9IGV4ZWNfbGlzdFthcmdzLT5idWZmZXJfY291bnQgLSAxXS5vZmZzZXQ7CisKKyNpZiBXQVRDSF9FWEVDCisJaTkxNV9nZW1fZHVtcF9vYmplY3Qob2JqZWN0X2xpc3RbYXJncy0+YnVmZmVyX2NvdW50IC0gMV0sCisJCQkgICAgICBhcmdzLT5iYXRjaF9sZW4sCisJCQkgICAgICBfX2Z1bmNfXywKKwkJCSAgICAgIH4wKTsKKyNlbmRpZgorCisJKHZvaWQpaTkxNV9hZGRfcmVxdWVzdChkZXYsIGZsdXNoX2RvbWFpbnMpOworCisJLyogRXhlYyB0aGUgYmF0Y2hidWZmZXIgKi8KKwlyZXQgPSBpOTE1X2Rpc3BhdGNoX2dlbV9leGVjYnVmZmVyKGRldiwgYXJncywgZXhlY19vZmZzZXQpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJkaXNwYXRjaCBmYWlsZWQgJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKworCS8qCisJICogRW5zdXJlIHRoYXQgdGhlIGNvbW1hbmRzIGluIHRoZSBiYXRjaCBidWZmZXIgYXJlCisJICogZmluaXNoZWQgYmVmb3JlIHRoZSBpbnRlcnJ1cHQgZmlyZXMKKwkgKi8KKwlmbHVzaF9kb21haW5zID0gaTkxNV9yZXRpcmVfY29tbWFuZHMoZGV2KTsKKworCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKKworCS8qCisJICogR2V0IGEgc2Vxbm8gcmVwcmVzZW50aW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgYnVmZmVyLAorCSAqIHdoaWNoIHdlIGNhbiB3YWl0IG9uLiAgV2Ugd291bGQgbGlrZSB0byBtaXRpZ2F0ZSB0aGVzZSBpbnRlcnJ1cHRzLAorCSAqIGxpa2VseSBieSBvbmx5IGNyZWF0aW5nIHNlcW5vcyBvY2Nhc2lvbmFsbHkgKHNvIHRoYXQgd2UgaGF2ZQorCSAqICpzb21lKiBpbnRlcnJ1cHRzIHJlcHJlc2VudGluZyBjb21wbGV0aW9uIG9mIGJ1ZmZlcnMgdGhhdCB3ZSBjYW4KKwkgKiB3YWl0IG9uIHdoZW4gdHJ5aW5nIHRvIGNsZWFyIHVwIGd0dCBzcGFjZSkuCisJICovCisJc2Vxbm8gPSBpOTE1X2FkZF9yZXF1ZXN0KGRldiwgZmx1c2hfZG9tYWlucyk7CisJQlVHX09OKHNlcW5vID09IDApOworCWk5MTVfZmlsZV9wcml2LT5tbS5sYXN0X2dlbV9zZXFubyA9IHNlcW5vOworCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5idWZmZXJfY291bnQ7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG9iamVjdF9saXN0W2ldOworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCisJCWk5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2FjdGl2ZShvYmopOworCQlvYmpfcHJpdi0+bGFzdF9yZW5kZXJpbmdfc2Vxbm8gPSBzZXFubzsKKyNpZiBXQVRDSF9MUlUKKwkJRFJNX0lORk8oIiVzOiBtb3ZlIHRvIGV4ZWMgbGlzdCAlcFxuIiwgX19mdW5jX18sIG9iaik7CisjZW5kaWYKKwl9CisjaWYgV0FUQ0hfTFJVCisJaTkxNV9kdW1wX2xydShkZXYsIF9fZnVuY19fKTsKKyNlbmRpZgorCisJaTkxNV92ZXJpZnlfaW5hY3RpdmUoZGV2LCBfX0ZJTEVfXywgX19MSU5FX18pOworCisJLyogQ29weSB0aGUgbmV3IGJ1ZmZlciBvZmZzZXRzIGJhY2sgdG8gdGhlIHVzZXIncyBleGVjIGxpc3QuICovCisJcmV0ID0gY29weV90b191c2VyKChzdHJ1Y3QgZHJtX2k5MTVfcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKikKKwkJCSAgICh1aW50cHRyX3QpIGFyZ3MtPmJ1ZmZlcnNfcHRyLAorCQkJICAgZXhlY19saXN0LAorCQkJICAgc2l6ZW9mKCpleGVjX2xpc3QpICogYXJncy0+YnVmZmVyX2NvdW50KTsKKwlpZiAocmV0KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byBjb3B5ICVkIGV4ZWMgZW50cmllcyAiCisJCQkgICJiYWNrIHRvIHVzZXIgKCVkKVxuIiwKKwkJCSAgIGFyZ3MtPmJ1ZmZlcl9jb3VudCwgcmV0KTsKK2VycjoKKwlpZiAob2JqZWN0X2xpc3QgIT0gTlVMTCkgeworCQlmb3IgKGkgPSAwOyBpIDwgcGlubmVkOyBpKyspCisJCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqZWN0X2xpc3RbaV0pOworCisJCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5idWZmZXJfY291bnQ7IGkrKykKKwkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iamVjdF9saXN0W2ldKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKK3ByZV9tdXRleF9lcnI6CisJZHJtX2ZyZWUob2JqZWN0X2xpc3QsIHNpemVvZigqb2JqZWN0X2xpc3QpICogYXJncy0+YnVmZmVyX2NvdW50LAorCQkgRFJNX01FTV9EUklWRVIpOworCWRybV9mcmVlKGV4ZWNfbGlzdCwgc2l6ZW9mKCpleGVjX2xpc3QpICogYXJncy0+YnVmZmVyX2NvdW50LAorCQkgRFJNX01FTV9EUklWRVIpOworCisJcmV0dXJuIHJldDsKK30KKworaW50CitpOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1aW50MzJfdCBhbGlnbm1lbnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJaW50IHJldDsKKworCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKKwlpZiAob2JqX3ByaXYtPmd0dF9zcGFjZSA9PSBOVUxMKSB7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX2d0dChvYmosIGFsaWdubWVudCk7CisJCWlmIChyZXQgIT0gMCkgeworCQkJRFJNX0VSUk9SKCJGYWlsdXJlIHRvIGJpbmQ6ICVkIiwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJb2JqX3ByaXYtPnBpbl9jb3VudCsrOworCisJLyogSWYgdGhlIG9iamVjdCBpcyBub3QgYWN0aXZlIGFuZCBub3QgcGVuZGluZyBhIGZsdXNoLAorCSAqIHJlbW92ZSBpdCBmcm9tIHRoZSBpbmFjdGl2ZSBsaXN0CisJICovCisJaWYgKG9ial9wcml2LT5waW5fY291bnQgPT0gMSkgeworCQlhdG9taWNfaW5jKCZkZXYtPnBpbl9jb3VudCk7CisJCWF0b21pY19hZGQob2JqLT5zaXplLCAmZGV2LT5waW5fbWVtb3J5KTsKKwkJaWYgKCFvYmpfcHJpdi0+YWN0aXZlICYmCisJCSAgICAob2JqLT53cml0ZV9kb21haW4gJiB+KEk5MTVfR0VNX0RPTUFJTl9DUFUgfAorCQkJCQkgICBJOTE1X0dFTV9ET01BSU5fR1RUKSkgPT0gMCAmJgorCQkgICAgIWxpc3RfZW1wdHkoJm9ial9wcml2LT5saXN0KSkKKwkJCWxpc3RfZGVsX2luaXQoJm9ial9wcml2LT5saXN0KTsKKwl9CisJaTkxNV92ZXJpZnlfaW5hY3RpdmUoZGV2LCBfX0ZJTEVfXywgX19MSU5FX18pOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK2k5MTVfZ2VtX29iamVjdF91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKKwlvYmpfcHJpdi0+cGluX2NvdW50LS07CisJQlVHX09OKG9ial9wcml2LT5waW5fY291bnQgPCAwKTsKKwlCVUdfT04ob2JqX3ByaXYtPmd0dF9zcGFjZSA9PSBOVUxMKTsKKworCS8qIElmIHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHBpbm5lZCwgYW5kIGlzCisJICogbmVpdGhlciBhY3RpdmUgbm9yIGJlaW5nIGZsdXNoZWQsIHRoZW4gc3RpY2sgaXQgb24KKwkgKiB0aGUgaW5hY3RpdmUgbGlzdAorCSAqLworCWlmIChvYmpfcHJpdi0+cGluX2NvdW50ID09IDApIHsKKwkJaWYgKCFvYmpfcHJpdi0+YWN0aXZlICYmCisJCSAgICAob2JqLT53cml0ZV9kb21haW4gJiB+KEk5MTVfR0VNX0RPTUFJTl9DUFUgfAorCQkJCQkgICBJOTE1X0dFTV9ET01BSU5fR1RUKSkgPT0gMCkKKwkJCWxpc3RfbW92ZV90YWlsKCZvYmpfcHJpdi0+bGlzdCwKKwkJCQkgICAgICAgJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0KTsKKwkJYXRvbWljX2RlYygmZGV2LT5waW5fY291bnQpOworCQlhdG9taWNfc3ViKG9iai0+c2l6ZSwgJmRldi0+cGluX21lbW9yeSk7CisJfQorCWk5MTVfdmVyaWZ5X2luYWN0aXZlKGRldiwgX19GSUxFX18sIF9fTElORV9fKTsKK30KKworaW50CitpOTE1X2dlbV9waW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9waW4gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZV9wcml2LCBhcmdzLT5oYW5kbGUpOworCWlmIChvYmogPT0gTlVMTCkgeworCQlEUk1fRVJST1IoIkJhZCBoYW5kbGUgaW4gaTkxNV9nZW1fcGluX2lvY3RsKCk6ICVkXG4iLAorCQkJICBhcmdzLT5oYW5kbGUpOworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIC1FQkFERjsKKwl9CisJb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3BpbihvYmosIGFyZ3MtPmFsaWdubWVudCk7CisJaWYgKHJldCAhPSAwKSB7CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CisJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlyZXR1cm4gcmV0OworCX0KKworCS8qIFhYWCAtIGZsdXNoIHRoZSBDUFUgY2FjaGVzIGZvciBwaW5uZWQgb2JqZWN0cworCSAqIGFzIHRoZSBYIHNlcnZlciBkb2Vzbid0IG1hbmFnZSBkb21haW5zIHlldAorCSAqLworCWlmIChvYmotPndyaXRlX2RvbWFpbiAmIEk5MTVfR0VNX0RPTUFJTl9DUFUpIHsKKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqKTsKKwkJZHJtX2FncF9jaGlwc2V0X2ZsdXNoKGRldik7CisJCW9iai0+d3JpdGVfZG9tYWluID0gMDsKKwl9CisJYXJncy0+b2Zmc2V0ID0gb2JqX3ByaXYtPmd0dF9vZmZzZXQ7CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCXJldHVybiAwOworfQorCitpbnQKK2k5MTVfZ2VtX3VucGluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9waW4gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZV9wcml2LCBhcmdzLT5oYW5kbGUpOworCWlmIChvYmogPT0gTlVMTCkgeworCQlEUk1fRVJST1IoIkJhZCBoYW5kbGUgaW4gaTkxNV9nZW1fdW5waW5faW9jdGwoKTogJWRcbiIsCisJCQkgIGFyZ3MtPmhhbmRsZSk7CisJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlyZXR1cm4gLUVCQURGOworCX0KKworCWk5MTVfZ2VtX29iamVjdF91bnBpbihvYmopOworCisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gMDsKK30KKworaW50CitpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2J1c3kgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZGV2LCBmaWxlX3ByaXYsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKG9iaiA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiQmFkIGhhbmRsZSBpbiBpOTE1X2dlbV9idXN5X2lvY3RsKCk6ICVkXG4iLAorCQkJICBhcmdzLT5oYW5kbGUpOworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIC1FQkFERjsKKwl9CisKKwlvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJYXJncy0+YnVzeSA9IG9ial9wcml2LT5hY3RpdmU7CisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiAwOworfQorCitpbnQKK2k5MTVfZ2VtX3Rocm90dGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKyAgICByZXR1cm4gaTkxNV9nZW1fcmluZ190aHJvdHRsZShkZXYsIGZpbGVfcHJpdik7Cit9CisKK2ludCBpOTE1X2dlbV9pbml0X29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisKKwlvYmpfcHJpdiA9IGRybV9jYWxsb2MoMSwgc2l6ZW9mKCpvYmpfcHJpdiksIERSTV9NRU1fRFJJVkVSKTsKKwlpZiAob2JqX3ByaXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKgorCSAqIFdlJ3ZlIGp1c3QgYWxsb2NhdGVkIHBhZ2VzIGZyb20gdGhlIGtlcm5lbCwKKwkgKiBzbyB0aGV5J3ZlIGp1c3QgYmVlbiB3cml0dGVuIGJ5IHRoZSBDUFUgd2l0aAorCSAqIHplcm9zLiBUaGV5J2xsIG5lZWQgdG8gYmUgY2xmbHVzaGVkIGJlZm9yZSB3ZQorCSAqIHVzZSB0aGVtIHdpdGggdGhlIEdQVS4KKwkgKi8KKwlvYmotPndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7CisJb2JqLT5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVOworCisJb2JqX3ByaXYtPmFncF90eXBlID0gQUdQX1VTRVJfTUVNT1JZOworCisJb2JqLT5kcml2ZXJfcHJpdmF0ZSA9IG9ial9wcml2OworCW9ial9wcml2LT5vYmogPSBvYmo7CisJSU5JVF9MSVNUX0hFQUQoJm9ial9wcml2LT5saXN0KTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXYgPSBvYmotPmRyaXZlcl9wcml2YXRlOworCisJd2hpbGUgKG9ial9wcml2LT5waW5fY291bnQgPiAwKQorCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKworCWk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKTsKKworCWRybV9mcmVlKG9ial9wcml2LT5wYWdlX2NwdV92YWxpZCwgMSwgRFJNX01FTV9EUklWRVIpOworCWRybV9mcmVlKG9iai0+ZHJpdmVyX3ByaXZhdGUsIDEsIERSTV9NRU1fRFJJVkVSKTsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fc2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkgICAgdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkgICAgdWludDMyX3Qgd3JpdGVfZG9tYWluKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwlpbnQgcmV0OworCXVpbnQzMl90IGZsdXNoX2RvbWFpbnM7CisKKwlCVUdfT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfZG9tYWluKG9iaiwgcmVhZF9kb21haW5zLCB3cml0ZV9kb21haW4pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisJZmx1c2hfZG9tYWlucyA9IGk5MTVfZ2VtX2Rldl9zZXRfZG9tYWluKG9iai0+ZGV2KTsKKworCWlmIChmbHVzaF9kb21haW5zICYgfihJOTE1X0dFTV9ET01BSU5fQ1BVfEk5MTVfR0VNX0RPTUFJTl9HVFQpKQorCQkodm9pZCkgaTkxNV9hZGRfcmVxdWVzdChkZXYsIGZsdXNoX2RvbWFpbnMpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKiBVbmJpbmRzIGFsbCBvYmplY3RzIHRoYXQgYXJlIG9uIHRoZSBnaXZlbiBidWZmZXIgbGlzdC4gKi8KK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2V2aWN0X2Zyb21fbGlzdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKwlpbnQgcmV0OworCisJd2hpbGUgKCFsaXN0X2VtcHR5KGhlYWQpKSB7CisJCW9ial9wcml2ID0gbGlzdF9maXJzdF9lbnRyeShoZWFkLAorCQkJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJCSAgICBsaXN0KTsKKwkJb2JqID0gb2JqX3ByaXYtPm9iajsKKworCQlpZiAob2JqX3ByaXYtPnBpbl9jb3VudCAhPSAwKSB7CisJCQlEUk1fRVJST1IoIlBpbm5lZCBvYmplY3QgaW4gdW5iaW5kIGxpc3RcbiIpOworCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlEUk1fRVJST1IoIkVycm9yIHVuYmluZGluZyBvYmplY3QgaW4gTGVhdmVWVDogJWRcbiIsCisJCQkJICByZXQpOworCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1faWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVpbnQzMl90IHNlcW5vLCBjdXJfc2Vxbm8sIGxhc3Rfc2Vxbm87CisJaW50IHN0dWNrLCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlpZiAoZGV2X3ByaXYtPm1tLnN1c3BlbmRlZCB8fCBkZXZfcHJpdi0+cmluZy5yaW5nX29iaiA9PSBOVUxMKSB7CisJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBIYWNrISAgRG9uJ3QgbGV0IGFueWJvZHkgZG8gZXhlY2J1ZiB3aGlsZSB3ZSBkb24ndCBjb250cm9sIHRoZSBjaGlwLgorCSAqIFdlIG5lZWQgdG8gcmVwbGFjZSB0aGlzIHdpdGggYSBzZW1hcGhvcmUsIG9yIHNvbWV0aGluZy4KKwkgKi8KKwlkZXZfcHJpdi0+bW0uc3VzcGVuZGVkID0gMTsKKworCS8qIENhbmNlbCB0aGUgcmV0aXJlIHdvcmsgaGFuZGxlciwgd2FpdCBmb3IgaXQgdG8gZmluaXNoIGlmIHJ1bm5pbmcKKwkgKi8KKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5tbS5yZXRpcmVfd29yayk7CisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaTkxNV9rZXJuZWxfbG9zdF9jb250ZXh0KGRldik7CisKKwkvKiBGbHVzaCB0aGUgR1BVIGFsb25nIHdpdGggYWxsIG5vbi1DUFUgd3JpdGUgZG9tYWlucworCSAqLworCWk5MTVfZ2VtX2ZsdXNoKGRldiwgfihJOTE1X0dFTV9ET01BSU5fQ1BVfEk5MTVfR0VNX0RPTUFJTl9HVFQpLAorCQkgICAgICAgfihJOTE1X0dFTV9ET01BSU5fQ1BVfEk5MTVfR0VNX0RPTUFJTl9HVFQpKTsKKwlzZXFubyA9IGk5MTVfYWRkX3JlcXVlc3QoZGV2LCB+KEk5MTVfR0VNX0RPTUFJTl9DUFUgfAorCQkJCQlJOTE1X0dFTV9ET01BSU5fR1RUKSk7CisKKwlpZiAoc2Vxbm8gPT0gMCkgeworCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZGV2X3ByaXYtPm1tLndhaXRpbmdfZ2VtX3NlcW5vID0gc2Vxbm87CisJbGFzdF9zZXFubyA9IDA7CisJc3R1Y2sgPSAwOworCWZvciAoOzspIHsKKwkJY3VyX3NlcW5vID0gaTkxNV9nZXRfZ2VtX3NlcW5vKGRldik7CisJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChjdXJfc2Vxbm8sIHNlcW5vKSkKKwkJCWJyZWFrOworCQlpZiAobGFzdF9zZXFubyA9PSBjdXJfc2Vxbm8pIHsKKwkJCWlmIChzdHVjaysrID4gMTAwKSB7CisJCQkJRFJNX0VSUk9SKCJoYXJkd2FyZSB3ZWRnZWRcbiIpOworCQkJCWRldl9wcml2LT5tbS53ZWRnZWQgPSAxOworCQkJCURSTV9XQUtFVVAoJmRldl9wcml2LT5pcnFfcXVldWUpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCW1zbGVlcCgxMCk7CisJCWxhc3Rfc2Vxbm8gPSBjdXJfc2Vxbm87CisJfQorCWRldl9wcml2LT5tbS53YWl0aW5nX2dlbV9zZXFubyA9IDA7CisKKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2KTsKKworCS8qIEFjdGl2ZSBhbmQgZmx1c2hpbmcgc2hvdWxkIG5vdyBiZSBlbXB0eSBhcyB3ZSd2ZQorCSAqIHdhaXRlZCBmb3IgYSBzZXF1ZW5jZSBoaWdoZXIgdGhhbiBhbnkgcGVuZGluZyBleGVjYnVmZmVyCisJICovCisJQlVHX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uYWN0aXZlX2xpc3QpKTsKKwlCVUdfT04oIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0KSk7CisKKwkvKiBSZXF1ZXN0IHNob3VsZCBub3cgYmUgZW1wdHkgYXMgd2UndmUgYWxzbyB3YWl0ZWQKKwkgKiBmb3IgdGhlIGxhc3QgcmVxdWVzdCBpbiB0aGUgbGlzdAorCSAqLworCUJVR19PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLnJlcXVlc3RfbGlzdCkpOworCisJLyogTW92ZSBhbGwgYnVmZmVycyBvdXQgb2YgdGhlIEdUVC4gKi8KKwlyZXQgPSBpOTE1X2dlbV9ldmljdF9mcm9tX2xpc3QoZGV2LCAmZGV2X3ByaXYtPm1tLmluYWN0aXZlX2xpc3QpOworCWlmIChyZXQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCXJldHVybiByZXQ7CisJfQorCisJQlVHX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uYWN0aXZlX2xpc3QpKTsKKwlCVUdfT04oIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0KSk7CisJQlVHX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uaW5hY3RpdmVfbGlzdCkpOworCUJVR19PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLnJlcXVlc3RfbGlzdCkpOworCisJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1faW5pdF9od3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisJaW50IHJldDsKKworCS8qIElmIHdlIG5lZWQgYSBwaHlzaWNhbCBhZGRyZXNzIGZvciB0aGUgc3RhdHVzIHBhZ2UsIGl0J3MgYWxyZWFkeQorCSAqIGluaXRpYWxpemVkIGF0IGRyaXZlciBsb2FkIHRpbWUuCisJICovCisJaWYgKCFJOTE1X05FRURfR0ZYX0hXUyhkZXYpKQorCQlyZXR1cm4gMDsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2FsbG9jKGRldiwgNDA5Nik7CisJaWYgKG9iaiA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBwYWdlXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKwlvYmpfcHJpdi0+YWdwX3R5cGUgPSBBR1BfVVNFUl9DQUNIRURfTUVNT1JZOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3BpbihvYmosIDQwOTYpOworCWlmIChyZXQgIT0gMCkgeworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCQlyZXR1cm4gcmV0OworCX0KKworCWRldl9wcml2LT5zdGF0dXNfZ2Z4X2FkZHIgPSBvYmpfcHJpdi0+Z3R0X29mZnNldDsKKworCWRldl9wcml2LT5od19zdGF0dXNfcGFnZSA9IGttYXAob2JqX3ByaXYtPnBhZ2VfbGlzdFswXSk7CisJaWYgKGRldl9wcml2LT5od19zdGF0dXNfcGFnZSA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIG1hcCBzdGF0dXMgcGFnZS5cbiIpOworCQltZW1zZXQoJmRldl9wcml2LT5od3NfbWFwLCAwLCBzaXplb2YoZGV2X3ByaXYtPmh3c19tYXApKTsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWRldl9wcml2LT5od3Nfb2JqID0gb2JqOworCW1lbXNldChkZXZfcHJpdi0+aHdfc3RhdHVzX3BhZ2UsIDAsIFBBR0VfU0laRSk7CisJSTkxNV9XUklURShIV1NfUEdBLCBkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKKwlJOTE1X1JFQUQoSFdTX1BHQSk7IC8qIHBvc3RpbmcgcmVhZCAqLworCURSTV9ERUJVRygiaHdzIG9mZnNldDogMHglMDh4XG4iLCBkZXZfcHJpdi0+c3RhdHVzX2dmeF9hZGRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitpOTE1X2dlbV9pbml0X3JpbmdidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisJaW50IHJldDsKKwl1MzIgaGVhZDsKKworCXJldCA9IGk5MTVfZ2VtX2luaXRfaHdzKGRldik7CisJaWYgKHJldCAhPSAwKQorCQlyZXR1cm4gcmV0OworCisJb2JqID0gZHJtX2dlbV9vYmplY3RfYWxsb2MoZGV2LCAxMjggKiAxMDI0KTsKKwlpZiAob2JqID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZlclxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluKG9iaiwgNDA5Nik7CisJaWYgKHJldCAhPSAwKSB7CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogU2V0IHVwIHRoZSBrZXJuZWwgbWFwcGluZyBmb3IgdGhlIHJpbmcuICovCisJZGV2X3ByaXYtPnJpbmcuU2l6ZSA9IG9iai0+c2l6ZTsKKwlkZXZfcHJpdi0+cmluZy50YWlsX21hc2sgPSBvYmotPnNpemUgLSAxOworCisJZGV2X3ByaXYtPnJpbmcubWFwLm9mZnNldCA9IGRldi0+YWdwLT5iYXNlICsgb2JqX3ByaXYtPmd0dF9vZmZzZXQ7CisJZGV2X3ByaXYtPnJpbmcubWFwLnNpemUgPSBvYmotPnNpemU7CisJZGV2X3ByaXYtPnJpbmcubWFwLnR5cGUgPSAwOworCWRldl9wcml2LT5yaW5nLm1hcC5mbGFncyA9IDA7CisJZGV2X3ByaXYtPnJpbmcubWFwLm10cnIgPSAwOworCisJZHJtX2NvcmVfaW9yZW1hcF93YygmZGV2X3ByaXYtPnJpbmcubWFwLCBkZXYpOworCWlmIChkZXZfcHJpdi0+cmluZy5tYXAuaGFuZGxlID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gbWFwIHJpbmdidWZmZXIuXG4iKTsKKwkJbWVtc2V0KCZkZXZfcHJpdi0+cmluZywgMCwgc2l6ZW9mKGRldl9wcml2LT5yaW5nKSk7CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlkZXZfcHJpdi0+cmluZy5yaW5nX29iaiA9IG9iajsKKwlkZXZfcHJpdi0+cmluZy52aXJ0dWFsX3N0YXJ0ID0gZGV2X3ByaXYtPnJpbmcubWFwLmhhbmRsZTsKKworCS8qIFN0b3AgdGhlIHJpbmcgaWYgaXQncyBydW5uaW5nLiAqLworCUk5MTVfV1JJVEUoUFJCMF9DVEwsIDApOworCUk5MTVfV1JJVEUoUFJCMF9UQUlMLCAwKTsKKwlJOTE1X1dSSVRFKFBSQjBfSEVBRCwgMCk7CisKKwkvKiBJbml0aWFsaXplIHRoZSByaW5nLiAqLworCUk5MTVfV1JJVEUoUFJCMF9TVEFSVCwgb2JqX3ByaXYtPmd0dF9vZmZzZXQpOworCWhlYWQgPSBJOTE1X1JFQUQoUFJCMF9IRUFEKSAmIEhFQURfQUREUjsKKworCS8qIEc0NSByaW5nIGluaXRpYWxpemF0aW9uIGZhaWxzIHRvIHJlc2V0IGhlYWQgdG8gemVybyAqLworCWlmIChoZWFkICE9IDApIHsKKwkJRFJNX0VSUk9SKCJSaW5nIGhlYWQgbm90IHJlc2V0IHRvIHplcm8gIgorCQkJICAiY3RsICUwOHggaGVhZCAlMDh4IHRhaWwgJTA4eCBzdGFydCAlMDh4XG4iLAorCQkJICBJOTE1X1JFQUQoUFJCMF9DVEwpLAorCQkJICBJOTE1X1JFQUQoUFJCMF9IRUFEKSwKKwkJCSAgSTkxNV9SRUFEKFBSQjBfVEFJTCksCisJCQkgIEk5MTVfUkVBRChQUkIwX1NUQVJUKSk7CisJCUk5MTVfV1JJVEUoUFJCMF9IRUFELCAwKTsKKworCQlEUk1fRVJST1IoIlJpbmcgaGVhZCBmb3JjZWQgdG8gemVybyAiCisJCQkgICJjdGwgJTA4eCBoZWFkICUwOHggdGFpbCAlMDh4IHN0YXJ0ICUwOHhcbiIsCisJCQkgIEk5MTVfUkVBRChQUkIwX0NUTCksCisJCQkgIEk5MTVfUkVBRChQUkIwX0hFQUQpLAorCQkJICBJOTE1X1JFQUQoUFJCMF9UQUlMKSwKKwkJCSAgSTkxNV9SRUFEKFBSQjBfU1RBUlQpKTsKKwl9CisKKwlJOTE1X1dSSVRFKFBSQjBfQ1RMLAorCQkgICAoKG9iai0+c2l6ZSAtIDQwOTYpICYgUklOR19OUl9QQUdFUykgfAorCQkgICBSSU5HX05PX1JFUE9SVCB8CisJCSAgIFJJTkdfVkFMSUQpOworCisJaGVhZCA9IEk5MTVfUkVBRChQUkIwX0hFQUQpICYgSEVBRF9BRERSOworCisJLyogSWYgdGhlIGhlYWQgaXMgc3RpbGwgbm90IHplcm8sIHRoZSByaW5nIGlzIGRlYWQgKi8KKwlpZiAoaGVhZCAhPSAwKSB7CisJCURSTV9FUlJPUigiUmluZyBpbml0aWFsaXphdGlvbiBmYWlsZWQgIgorCQkJICAiY3RsICUwOHggaGVhZCAlMDh4IHRhaWwgJTA4eCBzdGFydCAlMDh4XG4iLAorCQkJICBJOTE1X1JFQUQoUFJCMF9DVEwpLAorCQkJICBJOTE1X1JFQUQoUFJCMF9IRUFEKSwKKwkJCSAgSTkxNV9SRUFEKFBSQjBfVEFJTCksCisJCQkgIEk5MTVfUkVBRChQUkIwX1NUQVJUKSk7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIFVwZGF0ZSBvdXIgY2FjaGUgb2YgdGhlIHJpbmcgc3RhdGUgKi8KKwlpOTE1X2tlcm5lbF9sb3N0X2NvbnRleHQoZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlpZiAoZGV2X3ByaXYtPnJpbmcucmluZ19vYmogPT0gTlVMTCkKKwkJcmV0dXJuOworCisJZHJtX2NvcmVfaW9yZW1hcGZyZWUoJmRldl9wcml2LT5yaW5nLm1hcCwgZGV2KTsKKworCWk5MTVfZ2VtX29iamVjdF91bnBpbihkZXZfcHJpdi0+cmluZy5yaW5nX29iaik7CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoZGV2X3ByaXYtPnJpbmcucmluZ19vYmopOworCWRldl9wcml2LT5yaW5nLnJpbmdfb2JqID0gTlVMTDsKKwltZW1zZXQoJmRldl9wcml2LT5yaW5nLCAwLCBzaXplb2YoZGV2X3ByaXYtPnJpbmcpKTsKKworCWlmIChkZXZfcHJpdi0+aHdzX29iaiAhPSBOVUxMKSB7CisJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZGV2X3ByaXYtPmh3c19vYmo7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisKKwkJa3VubWFwKG9ial9wcml2LT5wYWdlX2xpc3RbMF0pOworCQlpOTE1X2dlbV9vYmplY3RfdW5waW4ob2JqKTsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKwkJZGV2X3ByaXYtPmh3c19vYmogPSBOVUxMOworCQltZW1zZXQoJmRldl9wcml2LT5od3NfbWFwLCAwLCBzaXplb2YoZGV2X3ByaXYtPmh3c19tYXApKTsKKwkJZGV2X3ByaXYtPmh3X3N0YXR1c19wYWdlID0gTlVMTDsKKworCQkvKiBXcml0ZSBoaWdoIGFkZHJlc3MgaW50byBIV1NfUEdBIHdoZW4gZGlzYWJsaW5nLiAqLworCQlJOTE1X1dSSVRFKEhXU19QR0EsIDB4MWZmZmYwMDApOworCX0KK30KKworaW50CitpOTE1X2dlbV9lbnRlcnZ0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0OworCisJaWYgKGRldl9wcml2LT5tbS53ZWRnZWQpIHsKKwkJRFJNX0VSUk9SKCJSZWVuYWJsaW5nIHdlZGdlZCBoYXJkd2FyZSwgZ29vZCBsdWNrXG4iKTsKKwkJZGV2X3ByaXYtPm1tLndlZGdlZCA9IDA7CisJfQorCisJcmV0ID0gaTkxNV9nZW1faW5pdF9yaW5nYnVmZmVyKGRldik7CisJaWYgKHJldCAhPSAwKQorCQlyZXR1cm4gcmV0OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCUJVR19PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLmFjdGl2ZV9saXN0KSk7CisJQlVHX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+bW0uZmx1c2hpbmdfbGlzdCkpOworCUJVR19PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLmluYWN0aXZlX2xpc3QpKTsKKwlCVUdfT04oIWxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5yZXF1ZXN0X2xpc3QpKTsKKwlkZXZfcHJpdi0+bW0uc3VzcGVuZGVkID0gMDsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWRybV9pcnFfaW5zdGFsbChkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK2ludAoraTkxNV9nZW1fbGVhdmV2dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2lkbGUoZGV2KTsKKwlkcm1faXJxX3VuaW5zdGFsbChkZXYpOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZAoraTkxNV9nZW1fbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2lkbGUoZGV2KTsKKwlpZiAocmV0KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byBpZGxlIGhhcmR3YXJlOiAlZFxuIiwgcmV0KTsKK30KKwordm9pZAoraTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5hY3RpdmVfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmluYWN0aXZlX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0ucmVxdWVzdF9saXN0KTsKKwlJTklUX0RFTEFZRURfV09SSygmZGV2X3ByaXYtPm1tLnJldGlyZV93b3JrLAorCQkJICBpOTE1X2dlbV9yZXRpcmVfd29ya19oYW5kbGVyKTsKKwlJTklUX1dPUksoJmRldl9wcml2LT5tbS52Ymxhbmtfd29yaywKKwkJICBpOTE1X2dlbV92Ymxhbmtfd29ya19oYW5kbGVyKTsKKwlkZXZfcHJpdi0+bW0ubmV4dF9nZW1fc2Vxbm8gPSAxOworCisJaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoZGV2KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RlYnVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kZWJ1Zy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMWMwODgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kZWJ1Zy5jCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMDggSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgorICoKKyAqLworCisjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgImRybS5oIgorI2luY2x1ZGUgImk5MTVfZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKworI2lmIFdBVENIX0lOQUNUSVZFCit2b2lkCitpOTE1X3ZlcmlmeV9pbmFjdGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjaGFyICpmaWxlLCBpbnQgbGluZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqX3ByaXY7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9ial9wcml2LCAmZGV2X3ByaXYtPm1tLmluYWN0aXZlX2xpc3QsIGxpc3QpIHsKKwkJb2JqID0gb2JqX3ByaXYtPm9iajsKKwkJaWYgKG9ial9wcml2LT5waW5fY291bnQgfHwgb2JqX3ByaXYtPmFjdGl2ZSB8fAorCQkgICAgKG9iai0+d3JpdGVfZG9tYWluICYgfihJOTE1X0dFTV9ET01BSU5fQ1BVIHwKKwkJCQkJICAgSTkxNV9HRU1fRE9NQUlOX0dUVCkpKQorCQkJRFJNX0VSUk9SKCJpbmFjdGl2ZSAlcCAocCAlZCBhICVkIHcgJXgpICAlczolZFxuIiwKKwkJCQkgIG9iaiwKKwkJCQkgIG9ial9wcml2LT5waW5fY291bnQsIG9ial9wcml2LT5hY3RpdmUsCisJCQkJICBvYmotPndyaXRlX2RvbWFpbiwgZmlsZSwgbGluZSk7CisJfQorfQorI2VuZGlmIC8qIFdBVENIX0lOQUNUSVZFICovCisKKworI2lmIFdBVENIX0JVRiB8IFdBVENIX0VYRUMgfCBXQVRDSF9QV1JJVEUKK3N0YXRpYyB2b2lkCitpOTE1X2dlbV9kdW1wX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsCisJCSAgIHVpbnQzMl90IGJpYXMsIHVpbnQzMl90IG1hcmspCit7CisJdWludDMyX3QgKm1lbSA9IGttYXBfYXRvbWljKHBhZ2UsIEtNX1VTRVIwKTsKKwlpbnQgaTsKKwlmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSA0KQorCQlEUk1fSU5GTygiJTA4eDogJTA4eCVzXG4iLAorCQkJICAoaW50KSAoYmlhcyArIGkpLCBtZW1baSAvIDRdLAorCQkJICAoYmlhcyArIGkgPT0gbWFyaykgPyAiICoqKioqKioqIiA6ICIiKTsKKwlrdW5tYXBfYXRvbWljKG1lbSwgS01fVVNFUjApOworCS8qIGdpdmUgc3lzbG9nIHRpbWUgdG8gY2F0Y2ggdXAgKi8KKwltc2xlZXAoMSk7Cit9CisKK3ZvaWQKK2k5MTVfZ2VtX2R1bXBfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBpbnQgbGVuLAorCQkgICAgIGNvbnN0IGNoYXIgKndoZXJlLCB1aW50MzJfdCBtYXJrKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJaW50IHBhZ2U7CisKKwlEUk1fSU5GTygiJXM6IG9iamVjdCBhdCBvZmZzZXQgJTA4eFxuIiwgd2hlcmUsIG9ial9wcml2LT5ndHRfb2Zmc2V0KTsKKwlmb3IgKHBhZ2UgPSAwOyBwYWdlIDwgKGxlbiArIFBBR0VfU0laRS0xKSAvIFBBR0VfU0laRTsgcGFnZSsrKSB7CisJCWludCBwYWdlX2xlbiwgY2h1bmssIGNodW5rX2xlbjsKKworCQlwYWdlX2xlbiA9IGxlbiAtIHBhZ2UgKiBQQUdFX1NJWkU7CisJCWlmIChwYWdlX2xlbiA+IFBBR0VfU0laRSkKKwkJCXBhZ2VfbGVuID0gUEFHRV9TSVpFOworCisJCWZvciAoY2h1bmsgPSAwOyBjaHVuayA8IHBhZ2VfbGVuOyBjaHVuayArPSAxMjgpIHsKKwkJCWNodW5rX2xlbiA9IHBhZ2VfbGVuIC0gY2h1bms7CisJCQlpZiAoY2h1bmtfbGVuID4gMTI4KQorCQkJCWNodW5rX2xlbiA9IDEyODsKKwkJCWk5MTVfZ2VtX2R1bXBfcGFnZShvYmpfcHJpdi0+cGFnZV9saXN0W3BhZ2VdLAorCQkJCQkgICBjaHVuaywgY2h1bmsgKyBjaHVua19sZW4sCisJCQkJCSAgIG9ial9wcml2LT5ndHRfb2Zmc2V0ICsKKwkJCQkJICAgcGFnZSAqIFBBR0VfU0laRSwKKwkJCQkJICAgbWFyayk7CisJCX0KKwl9Cit9CisjZW5kaWYKKworI2lmIFdBVENIX0xSVQordm9pZAoraTkxNV9kdW1wX2xydShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICp3aGVyZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QJCSpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QJKm9ial9wcml2OworCisJRFJNX0lORk8oImFjdGl2ZSBsaXN0ICVzIHtcbiIsIHdoZXJlKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9ial9wcml2LCAmZGV2X3ByaXYtPm1tLmFjdGl2ZV9saXN0LAorCQkJICAgIGxpc3QpCisJeworCQlEUk1fSU5GTygiICAgICVwOiAlMDh4XG4iLCBvYmpfcHJpdiwKKwkJCSBvYmpfcHJpdi0+bGFzdF9yZW5kZXJpbmdfc2Vxbm8pOworCX0KKwlEUk1fSU5GTygifVxuIik7CisJRFJNX0lORk8oImZsdXNoaW5nIGxpc3QgJXMge1xuIiwgd2hlcmUpOworCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqX3ByaXYsICZkZXZfcHJpdi0+bW0uZmx1c2hpbmdfbGlzdCwKKwkJCSAgICBsaXN0KQorCXsKKwkJRFJNX0lORk8oIiAgICAlcDogJTA4eFxuIiwgb2JqX3ByaXYsCisJCQkgb2JqX3ByaXYtPmxhc3RfcmVuZGVyaW5nX3NlcW5vKTsKKwl9CisJRFJNX0lORk8oIn1cbiIpOworCURSTV9JTkZPKCJpbmFjdGl2ZSAlcyB7XG4iLCB3aGVyZSk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmpfcHJpdiwgJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0LCBsaXN0KSB7CisJCURSTV9JTkZPKCIgICAgJXA6ICUwOHhcbiIsIG9ial9wcml2LAorCQkJIG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyk7CisJfQorCURSTV9JTkZPKCJ9XG4iKTsKK30KKyNlbmRpZgorCisKKyNpZiBXQVRDSF9DT0hFUkVOQ1kKK3ZvaWQKK2k5MTVfZ2VtX29iamVjdF9jaGVja19jb2hlcmVuY3koc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBoYW5kbGUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdiA9IG9iai0+ZHJpdmVyX3ByaXZhdGU7CisJaW50IHBhZ2U7CisJdWludDMyX3QgKmd0dF9tYXBwaW5nOworCXVpbnQzMl90ICpiYWNraW5nX21hcCA9IE5VTEw7CisJaW50IGJhZF9jb3VudCA9IDA7CisKKwlEUk1fSU5GTygiJXM6IGNoZWNraW5nIGNvaGVyZW5jeSBvZiBvYmplY3QgJXBAMHglMDh4ICglZCwgJWRrYik6XG4iLAorCQkgX19mdW5jX18sIG9iaiwgb2JqX3ByaXYtPmd0dF9vZmZzZXQsIGhhbmRsZSwKKwkJIG9iai0+c2l6ZSAvIDEwMjQpOworCisJZ3R0X21hcHBpbmcgPSBpb3JlbWFwKGRldi0+YWdwLT5iYXNlICsgb2JqX3ByaXYtPmd0dF9vZmZzZXQsCisJCQkgICAgICBvYmotPnNpemUpOworCWlmIChndHRfbWFwcGluZyA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIG1hcCBHVFQgc3BhY2VcbiIpOworCQlyZXR1cm47CisJfQorCisJZm9yIChwYWdlID0gMDsgcGFnZSA8IG9iai0+c2l6ZSAvIFBBR0VfU0laRTsgcGFnZSsrKSB7CisJCWludCBpOworCisJCWJhY2tpbmdfbWFwID0ga21hcF9hdG9taWMob2JqX3ByaXYtPnBhZ2VfbGlzdFtwYWdlXSwgS01fVVNFUjApOworCisJCWlmIChiYWNraW5nX21hcCA9PSBOVUxMKSB7CisJCQlEUk1fRVJST1IoImZhaWxlZCB0byBtYXAgYmFja2luZyBwYWdlXG4iKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJZm9yIChpID0gMDsgaSA8IFBBR0VfU0laRSAvIDQ7IGkrKykgeworCQkJdWludDMyX3QgY3B1dmFsID0gYmFja2luZ19tYXBbaV07CisJCQl1aW50MzJfdCBndHR2YWwgPSByZWFkbChndHRfbWFwcGluZyArCisJCQkJCQlwYWdlICogMTAyNCArIGkpOworCisJCQlpZiAoY3B1dmFsICE9IGd0dHZhbCkgeworCQkJCURSTV9JTkZPKCJpbmNvaGVyZW50IENQVSB2cyBHUFUgYXQgMHglMDh4OiAiCisJCQkJCSAiMHglMDh4IHZzIDB4JTA4eFxuIiwKKwkJCQkJIChpbnQpKG9ial9wcml2LT5ndHRfb2Zmc2V0ICsKKwkJCQkJICAgICAgIHBhZ2UgKiBQQUdFX1NJWkUgKyBpICogNCksCisJCQkJCSBjcHV2YWwsIGd0dHZhbCk7CisJCQkJaWYgKGJhZF9jb3VudCsrID49IDgpIHsKKwkJCQkJRFJNX0lORk8oIi4uLlxuIik7CisJCQkJCWdvdG8gb3V0OworCQkJCX0KKwkJCX0KKwkJfQorCQlrdW5tYXBfYXRvbWljKGJhY2tpbmdfbWFwLCBLTV9VU0VSMCk7CisJCWJhY2tpbmdfbWFwID0gTlVMTDsKKwl9CisKKyBvdXQ6CisJaWYgKGJhY2tpbmdfbWFwICE9IE5VTEwpCisJCWt1bm1hcF9hdG9taWMoYmFja2luZ19tYXAsIEtNX1VTRVIwKTsKKwlpb3VubWFwKGd0dF9tYXBwaW5nKTsKKworCS8qIGdpdmUgc3lzbG9nIHRpbWUgdG8gY2F0Y2ggdXAgKi8KKwltc2xlZXAoMSk7CisKKwkvKiBEaXJlY3RseSBmbHVzaCB0aGUgb2JqZWN0LCBzaW5jZSB3ZSBqdXN0IGxvYWRlZCB2YWx1ZXMgd2l0aCB0aGUgQ1BVCisJICogZnJvbSB0aGUgYmFja2luZyBwYWdlcyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkaXN0dXJiIHRoZSBjYWNoZQorCSAqIG1hbmFnZW1lbnQgdGhhdCB3ZSdyZSB0cnlpbmcgdG8gb2JzZXJ2ZS4KKwkgKi8KKworCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Byb2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Byb2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWQ0MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcHJvYy5jCkBAIC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMDggSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CisgKiAgICBLZWl0aCBQYWNrYXJkIDxrZWl0aHBAa2VpdGhwLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgImRybVAuaCIKKyNpbmNsdWRlICJkcm0uaCIKKyNpbmNsdWRlICJpOTE1X2RybS5oIgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKK3N0YXRpYyBpbnQgaTkxNV9nZW1fYWN0aXZlX2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCQlpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKwlpbnQgbGVuID0gMDsKKworCWlmIChvZmZzZXQgPiBEUk1fUFJPQ19MSU1JVCkgeworCQkqZW9mID0gMTsKKwkJcmV0dXJuIDA7CisJfQorCisJKnN0YXJ0ID0gJmJ1ZltvZmZzZXRdOworCSplb2YgPSAwOworCURSTV9QUk9DX1BSSU5UKCJBY3RpdmU6XG4iKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9ial9wcml2LCAmZGV2X3ByaXYtPm1tLmFjdGl2ZV9saXN0LAorCQkJICAgIGxpc3QpCisJeworCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG9ial9wcml2LT5vYmo7CisJCWlmIChvYmotPm5hbWUpIHsKKwkJCURSTV9QUk9DX1BSSU5UKCIgICAgJXAoJWQpOiAlMDh4ICUwOHggJWRcbiIsCisJCQkJICAgICAgIG9iaiwgb2JqLT5uYW1lLAorCQkJCSAgICAgICBvYmotPnJlYWRfZG9tYWlucywgb2JqLT53cml0ZV9kb21haW4sCisJCQkJICAgICAgIG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyk7CisJCX0gZWxzZSB7CisJCQlEUk1fUFJPQ19QUklOVCgiICAgICAgICVwOiAlMDh4ICUwOHggJWRcbiIsCisJCQkJICAgICAgIG9iaiwKKwkJCQkgICAgICAgb2JqLT5yZWFkX2RvbWFpbnMsIG9iai0+d3JpdGVfZG9tYWluLAorCQkJCSAgICAgICBvYmpfcHJpdi0+bGFzdF9yZW5kZXJpbmdfc2Vxbm8pOworCQl9CisJfQorCWlmIChsZW4gPiByZXF1ZXN0ICsgb2Zmc2V0KQorCQlyZXR1cm4gcmVxdWVzdDsKKwkqZW9mID0gMTsKKwlyZXR1cm4gbGVuIC0gb2Zmc2V0OworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VtX2ZsdXNoaW5nX2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCQkgIGludCByZXF1ZXN0LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IChzdHJ1Y3QgZHJtX21pbm9yICopIGRhdGE7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5kZXY7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2OworCWludCBsZW4gPSAwOworCisJaWYgKG9mZnNldCA+IERSTV9QUk9DX0xJTUlUKSB7CisJCSplb2YgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwkqc3RhcnQgPSAmYnVmW29mZnNldF07CisJKmVvZiA9IDA7CisJRFJNX1BST0NfUFJJTlQoIkZsdXNoaW5nOlxuIik7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmpfcHJpdiwgJmRldl9wcml2LT5tbS5mbHVzaGluZ19saXN0LAorCQkJICAgIGxpc3QpCisJeworCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG9ial9wcml2LT5vYmo7CisJCWlmIChvYmotPm5hbWUpIHsKKwkJCURSTV9QUk9DX1BSSU5UKCIgICAgJXAoJWQpOiAlMDh4ICUwOHggJWRcbiIsCisJCQkJICAgICAgIG9iaiwgb2JqLT5uYW1lLAorCQkJCSAgICAgICBvYmotPnJlYWRfZG9tYWlucywgb2JqLT53cml0ZV9kb21haW4sCisJCQkJICAgICAgIG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyk7CisJCX0gZWxzZSB7CisJCQlEUk1fUFJPQ19QUklOVCgiICAgICAgICVwOiAlMDh4ICUwOHggJWRcbiIsIG9iaiwKKwkJCQkgICAgICAgb2JqLT5yZWFkX2RvbWFpbnMsIG9iai0+d3JpdGVfZG9tYWluLAorCQkJCSAgICAgICBvYmpfcHJpdi0+bGFzdF9yZW5kZXJpbmdfc2Vxbm8pOworCQl9CisJfQorCWlmIChsZW4gPiByZXF1ZXN0ICsgb2Zmc2V0KQorCQlyZXR1cm4gcmVxdWVzdDsKKwkqZW9mID0gMTsKKwlyZXR1cm4gbGVuIC0gb2Zmc2V0OworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VtX2luYWN0aXZlX2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCQkgIGludCByZXF1ZXN0LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IChzdHJ1Y3QgZHJtX21pbm9yICopIGRhdGE7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5kZXY7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9ial9wcml2OworCWludCBsZW4gPSAwOworCisJaWYgKG9mZnNldCA+IERSTV9QUk9DX0xJTUlUKSB7CisJCSplb2YgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwkqc3RhcnQgPSAmYnVmW29mZnNldF07CisJKmVvZiA9IDA7CisJRFJNX1BST0NfUFJJTlQoIkluYWN0aXZlOlxuIik7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmpfcHJpdiwgJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0LAorCQkJICAgIGxpc3QpCisJeworCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG9ial9wcml2LT5vYmo7CisJCWlmIChvYmotPm5hbWUpIHsKKwkJCURSTV9QUk9DX1BSSU5UKCIgICAgJXAoJWQpOiAlMDh4ICUwOHggJWRcbiIsCisJCQkJICAgICAgIG9iaiwgb2JqLT5uYW1lLAorCQkJCSAgICAgICBvYmotPnJlYWRfZG9tYWlucywgb2JqLT53cml0ZV9kb21haW4sCisJCQkJICAgICAgIG9ial9wcml2LT5sYXN0X3JlbmRlcmluZ19zZXFubyk7CisJCX0gZWxzZSB7CisJCQlEUk1fUFJPQ19QUklOVCgiICAgICAgICVwOiAlMDh4ICUwOHggJWRcbiIsIG9iaiwKKwkJCQkgICAgICAgb2JqLT5yZWFkX2RvbWFpbnMsIG9iai0+d3JpdGVfZG9tYWluLAorCQkJCSAgICAgICBvYmpfcHJpdi0+bGFzdF9yZW5kZXJpbmdfc2Vxbm8pOworCQl9CisJfQorCWlmIChsZW4gPiByZXF1ZXN0ICsgb2Zmc2V0KQorCQlyZXR1cm4gcmVxdWVzdDsKKwkqZW9mID0gMTsKKwlyZXR1cm4gbGVuIC0gb2Zmc2V0OworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VtX3JlcXVlc3RfaW5mbyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAorCQkJCSBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqZ2VtX3JlcXVlc3Q7CisJaW50IGxlbiA9IDA7CisKKwlpZiAob2Zmc2V0ID4gRFJNX1BST0NfTElNSVQpIHsKKwkJKmVvZiA9IDE7CisJCXJldHVybiAwOworCX0KKworCSpzdGFydCA9ICZidWZbb2Zmc2V0XTsKKwkqZW9mID0gMDsKKwlEUk1fUFJPQ19QUklOVCgiUmVxdWVzdDpcbiIpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZ2VtX3JlcXVlc3QsICZkZXZfcHJpdi0+bW0ucmVxdWVzdF9saXN0LAorCQkJICAgIGxpc3QpCisJeworCQlEUk1fUFJPQ19QUklOVCgiICAgICVkIEAgJWQgJTA4eFxuIiwKKwkJCSAgICAgICBnZW1fcmVxdWVzdC0+c2Vxbm8sCisJCQkgICAgICAgKGludCkgKGppZmZpZXMgLSBnZW1fcmVxdWVzdC0+ZW1pdHRlZF9qaWZmaWVzKSwKKwkJCSAgICAgICBnZW1fcmVxdWVzdC0+Zmx1c2hfZG9tYWlucyk7CisJfQorCWlmIChsZW4gPiByZXF1ZXN0ICsgb2Zmc2V0KQorCQlyZXR1cm4gcmVxdWVzdDsKKwkqZW9mID0gMTsKKwlyZXR1cm4gbGVuIC0gb2Zmc2V0OworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VtX3NlcW5vX2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCSAgICAgICBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBsZW4gPSAwOworCisJaWYgKG9mZnNldCA+IERSTV9QUk9DX0xJTUlUKSB7CisJCSplb2YgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwkqc3RhcnQgPSAmYnVmW29mZnNldF07CisJKmVvZiA9IDA7CisJRFJNX1BST0NfUFJJTlQoIkN1cnJlbnQgc2VxdWVuY2U6ICVkXG4iLCBpOTE1X2dldF9nZW1fc2Vxbm8oZGV2KSk7CisJRFJNX1BST0NfUFJJTlQoIldhaXRlciBzZXF1ZW5jZTogICVkXG4iLAorCQkgICAgICAgZGV2X3ByaXYtPm1tLndhaXRpbmdfZ2VtX3NlcW5vKTsKKwlEUk1fUFJPQ19QUklOVCgiSVJRIHNlcXVlbmNlOiAgICAgJWRcbiIsIGRldl9wcml2LT5tbS5pcnFfZ2VtX3NlcW5vKTsKKwlpZiAobGVuID4gcmVxdWVzdCArIG9mZnNldCkKKwkJcmV0dXJuIHJlcXVlc3Q7CisJKmVvZiA9IDE7CisJcmV0dXJuIGxlbiAtIG9mZnNldDsKK30KKworCitzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwKKwkJCSAgICAgICBpbnQgcmVxdWVzdCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSAoc3RydWN0IGRybV9taW5vciAqKSBkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBsZW4gPSAwOworCisJaWYgKG9mZnNldCA+IERSTV9QUk9DX0xJTUlUKSB7CisJCSplb2YgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwkqc3RhcnQgPSAmYnVmW29mZnNldF07CisJKmVvZiA9IDA7CisJRFJNX1BST0NfUFJJTlQoIkludGVycnVwdCBlbmFibGU6ICAgICUwOHhcbiIsCisJCSAgICAgICBJOTE1X1JFQUQoSUVSKSk7CisJRFJNX1BST0NfUFJJTlQoIkludGVycnVwdCBpZGVudGl0eTogICUwOHhcbiIsCisJCSAgICAgICBJOTE1X1JFQUQoSUlSKSk7CisJRFJNX1BST0NfUFJJTlQoIkludGVycnVwdCBtYXNrOiAgICAgICUwOHhcbiIsCisJCSAgICAgICBJOTE1X1JFQUQoSU1SKSk7CisJRFJNX1BST0NfUFJJTlQoIlBpcGUgQSBzdGF0OiAgICAgICAgICUwOHhcbiIsCisJCSAgICAgICBJOTE1X1JFQUQoUElQRUFTVEFUKSk7CisJRFJNX1BST0NfUFJJTlQoIlBpcGUgQiBzdGF0OiAgICAgICAgICUwOHhcbiIsCisJCSAgICAgICBJOTE1X1JFQUQoUElQRUJTVEFUKSk7CisJRFJNX1BST0NfUFJJTlQoIkludGVycnVwdHMgcmVjZWl2ZWQ6ICVkXG4iLAorCQkgICAgICAgYXRvbWljX3JlYWQoJmRldl9wcml2LT5pcnFfcmVjZWl2ZWQpKTsKKwlEUk1fUFJPQ19QUklOVCgiQ3VycmVudCBzZXF1ZW5jZTogICAgJWRcbiIsCisJCSAgICAgICBpOTE1X2dldF9nZW1fc2Vxbm8oZGV2KSk7CisJRFJNX1BST0NfUFJJTlQoIldhaXRlciBzZXF1ZW5jZTogICAgICVkXG4iLAorCQkgICAgICAgZGV2X3ByaXYtPm1tLndhaXRpbmdfZ2VtX3NlcW5vKTsKKwlEUk1fUFJPQ19QUklOVCgiSVJRIHNlcXVlbmNlOiAgICAgICAgJWRcbiIsCisJCSAgICAgICBkZXZfcHJpdi0+bW0uaXJxX2dlbV9zZXFubyk7CisJaWYgKGxlbiA+IHJlcXVlc3QgKyBvZmZzZXQpCisJCXJldHVybiByZXF1ZXN0OworCSplb2YgPSAxOworCXJldHVybiBsZW4gLSBvZmZzZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3Byb2NfbGlzdCB7CisJLyoqIGZpbGUgbmFtZSAqLworCWNvbnN0IGNoYXIgKm5hbWU7CisJLyoqIHByb2MgY2FsbGJhY2sqLworCWludCAoKmYpIChjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQsIGludCAqLCB2b2lkICopOworfSBpOTE1X2dlbV9wcm9jX2xpc3RbXSA9IHsKKwl7Imk5MTVfZ2VtX2FjdGl2ZSIsIGk5MTVfZ2VtX2FjdGl2ZV9pbmZvfSwKKwl7Imk5MTVfZ2VtX2ZsdXNoaW5nIiwgaTkxNV9nZW1fZmx1c2hpbmdfaW5mb30sCisJeyJpOTE1X2dlbV9pbmFjdGl2ZSIsIGk5MTVfZ2VtX2luYWN0aXZlX2luZm99LAorCXsiaTkxNV9nZW1fcmVxdWVzdCIsIGk5MTVfZ2VtX3JlcXVlc3RfaW5mb30sCisJeyJpOTE1X2dlbV9zZXFubyIsIGk5MTVfZ2VtX3NlcW5vX2luZm99LAorCXsiaTkxNV9nZW1faW50ZXJydXB0IiwgaTkxNV9pbnRlcnJ1cHRfaW5mb30sCit9OworCisjZGVmaW5lIEk5MTVfR0VNX1BST0NfRU5UUklFUyBBUlJBWV9TSVpFKGk5MTVfZ2VtX3Byb2NfbGlzdCkKKworaW50IGk5MTVfZ2VtX3Byb2NfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKK3sKKwlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKmVudDsKKwlpbnQgaSwgajsKKworCWZvciAoaSA9IDA7IGkgPCBJOTE1X0dFTV9QUk9DX0VOVFJJRVM7IGkrKykgeworCQllbnQgPSBjcmVhdGVfcHJvY19lbnRyeShpOTE1X2dlbV9wcm9jX2xpc3RbaV0ubmFtZSwKKwkJCQkJU19JRlJFRyB8IFNfSVJVR08sIG1pbm9yLT5kZXZfcm9vdCk7CisJCWlmICghZW50KSB7CisJCQlEUk1fRVJST1IoIkNhbm5vdCBjcmVhdGUgL3Byb2MvZHJpLy4uLi8lc1xuIiwKKwkJCQkgIGk5MTVfZ2VtX3Byb2NfbGlzdFtpXS5uYW1lKTsKKwkJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspCisJCQkJcmVtb3ZlX3Byb2NfZW50cnkoaTkxNV9nZW1fcHJvY19saXN0W2ldLm5hbWUsCisJCQkJCQkgIG1pbm9yLT5kZXZfcm9vdCk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZW50LT5yZWFkX3Byb2MgPSBpOTE1X2dlbV9wcm9jX2xpc3RbaV0uZjsKKwkJZW50LT5kYXRhID0gbWlub3I7CisJfQorCXJldHVybiAwOworfQorCit2b2lkIGk5MTVfZ2VtX3Byb2NfY2xlYW51cChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKK3sKKwlpbnQgaTsKKworCWlmICghbWlub3ItPmRldl9yb290KQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9HRU1fUFJPQ19FTlRSSUVTOyBpKyspCisJCXJlbW92ZV9wcm9jX2VudHJ5KGk5MTVfZ2VtX3Byb2NfbGlzdFtpXS5uYW1lLCBtaW5vci0+ZGV2X3Jvb3QpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI4NWFjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KKyAqCisgKi8KKworI2luY2x1ZGUgImRybVAuaCIKKyNpbmNsdWRlICJkcm0uaCIKKyNpbmNsdWRlICJpOTE1X2RybS5oIgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKKy8qKiBAZmlsZSBpOTE1X2dlbV90aWxpbmcuYworICoKKyAqIFN1cHBvcnQgZm9yIG1hbmFnaW5nIHRpbGluZyBzdGF0ZSBvZiBidWZmZXIgb2JqZWN0cy4KKyAqCisgKiBUaGUgaWRlYSBiZWhpbmQgdGlsaW5nIGlzIHRvIGluY3JlYXNlIGNhY2hlIGhpdCByYXRlcyBieSByZWFycmFuZ2luZworICogcGl4ZWwgZGF0YSBzbyB0aGF0IGEgZ3JvdXAgb2YgcGl4ZWwgYWNjZXNzZXMgYXJlIGluIHRoZSBzYW1lIGNhY2hlbGluZS4KKyAqIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZyb20gZG9pbmcgdGhpcyBvbiB0aGUgYmFjay9kZXB0aCBidWZmZXIgYXJlIG9uCisgKiB0aGUgb3JkZXIgb2YgMzAlLgorICoKKyAqIEludGVsIGFyY2hpdGVjdHVyZXMgbWFrZSB0aGlzIHNvbWV3aGF0IG1vcmUgY29tcGxpY2F0ZWQsIHRob3VnaCwgYnkKKyAqIGFkanVzdG1lbnRzIG1hZGUgdG8gYWRkcmVzc2luZyBvZiBkYXRhIHdoZW4gdGhlIG1lbW9yeSBpcyBpbiBpbnRlcmxlYXZlZAorICogbW9kZSAobWF0Y2hlZCBwYWlycyBvZiBESU1NUykgdG8gaW1wcm92ZSBtZW1vcnkgYmFuZHdpZHRoLgorICogRm9yIGludGVybGVhdmVkIG1lbW9yeSwgdGhlIENQVSBzZW5kcyBldmVyeSBzZXF1ZW50aWFsIDY0IGJ5dGVzCisgKiB0byBhbiBhbHRlcm5hdGUgbWVtb3J5IGNoYW5uZWwgc28gaXQgY2FuIGdldCB0aGUgYmFuZHdpZHRoIGZyb20gYm90aC4KKyAqCisgKiBUaGUgR1BVIGFsc28gcmVhcnJhbmdlcyBpdHMgYWNjZXNzZXMgZm9yIGluY3JlYXNlZCBiYW5kd2lkdGggdG8gaW50ZXJsZWF2ZWQKKyAqIG1lbW9yeSwgYW5kIGl0IG1hdGNoZXMgd2hhdCB0aGUgQ1BVIGRvZXMgZm9yIG5vbi10aWxlZC4gIEhvd2V2ZXIsIHdoZW4gdGlsZWQKKyAqIGl0IGRvZXMgaXQgYSBsaXR0bGUgZGlmZmVyZW50bHksIHNpbmNlIG9uZSB3YWxrcyBhZGRyZXNzZXMgbm90IGp1c3QgaW4gdGhlCisgKiBYIGRpcmVjdGlvbiBidXQgYWxzbyBZLiAgU28sIGFsb25nIHdpdGggYWx0ZXJuYXRpbmcgY2hhbm5lbHMgd2hlbiBiaXQKKyAqIDYgb2YgdGhlIGFkZHJlc3MgZmxpcHMsIGl0IGFsc28gYWx0ZXJuYXRlcyB3aGVuIG90aGVyIGJpdHMgZmxpcCAtLSAgQml0cyA5CisgKiAoZXZlcnkgNTEyIGJ5dGVzLCBhbiBYIHRpbGUgc2NhbmxpbmUpIGFuZCAxMCAoZXZlcnkgdHdvIFggdGlsZSBzY2FubGluZXMpCisgKiBhcmUgY29tbW9uIHRvIGJvdGggdGhlIDkxNSBhbmQgOTY1LWNsYXNzIGhhcmR3YXJlLgorICoKKyAqIFRoZSBDUFUgYWxzbyBzb21ldGltZXMgWE9ScyBpbiBoaWdoZXIgYml0cyBhcyB3ZWxsLCB0byBpbXByb3ZlCisgKiBiYW5kd2lkdGggZG9pbmcgc3RyaWRlZCBhY2Nlc3MgbGlrZSB3ZSBkbyBzbyBmcmVxdWVudGx5IGluIGdyYXBoaWNzLiAgVGhpcworICogaXMgY2FsbGVkICJDaGFubmVsIFhPUiBSYW5kb21pemF0aW9uIiBpbiB0aGUgTUNIIGRvY3VtZW50YXRpb24uICBUaGUgcmVzdWx0CisgKiBpcyB0aGF0IHRoZSBDUFUgaXMgWE9SaW5nIGluIGVpdGhlciBiaXQgMTEgb3IgYml0IDE3IHRvIGJpdCA2IG9mIGl0cyBhZGRyZXNzCisgKiBkZWNvZGUuCisgKgorICogQWxsIG9mIHRoaXMgYml0IDYgWE9SaW5nIGhhcyBhbiBlZmZlY3Qgb24gb3VyIG1lbW9yeSBtYW5hZ2VtZW50LAorICogYXMgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgM2QgZHJpdmVyIGNhbiBjb3JyZWN0bHkgYWRkcmVzcyBvYmplY3QKKyAqIGNvbnRlbnRzLgorICoKKyAqIElmIHdlIGRvbid0IGhhdmUgaW50ZXJsZWF2ZWQgbWVtb3J5LCBhbGwgdGlsaW5nIGlzIHNhZmUgYW5kIG5vIHN3aXp6bGluZyBpcworICogcmVxdWlyZWQuCisgKgorICogV2hlbiBiaXQgMTcgaXMgWE9SZWQgaW4sIHdlIHNpbXBseSByZWZ1c2UgdG8gdGlsZSBhdCBhbGwuICBCaXQKKyAqIDE3IGlzIG5vdCBqdXN0IGEgcGFnZSBvZmZzZXQsIHNvIGFzIHdlIHBhZ2UgYW4gb2JqZXQgb3V0IGFuZCBiYWNrIGluLAorICogaW5kaXZpZHVhbCBwYWdlcyBpbiBpdCB3aWxsIGhhdmUgZGlmZmVyZW50IGJpdCAxNyBhZGRyZXNzZXMsIHJlc3VsdGluZyBpbgorICogZWFjaCA2NCBieXRlcyBiZWluZyBzd2FwcGVkIHdpdGggaXRzIG5laWdoYm9yIQorICoKKyAqIE90aGVyd2lzZSwgaWYgaW50ZXJsZWF2ZWQsIHdlIGhhdmUgdG8gdGVsbCB0aGUgM2QgZHJpdmVyIHdoYXQgdGhlIGFkZHJlc3MKKyAqIHN3aXp6bGluZyBpdCBuZWVkcyB0byBkbyBpcywgc2luY2UgaXQncyB3cml0aW5nIHdpdGggdGhlIENQVSB0byB0aGUgcGFnZXMKKyAqIChiaXQgNiBhbmQgcG90ZW50aWFsbHkgYml0IDExIFhPUmVkIGluKSwgYW5kIHRoZSBHUFUgaXMgcmVhZGluZyBmcm9tIHRoZQorICogcGFnZXMgKGJpdCA2LCA5LCBhbmQgMTAgWE9SZWQgaW4pLCByZXN1bHRpbmcgaW4gYSBjdW11bGF0aXZlIGJpdCBzd2l6emxpbmcKKyAqIHJlcXVpcmVkIGJ5IHRoZSBDUFUgb2YgWE9SaW5nIGluIGJpdCA2LCA5LCAxMCwgYW5kIHBvdGVudGlhbGx5IDExLCBpbiBvcmRlcgorICogdG8gbWF0Y2ggd2hhdCB0aGUgR1BVIGV4cGVjdHMuCisgKi8KKworLyoqCisgKiBEZXRlY3RzIGJpdCA2IHN3aXp6bGluZyBvZiBhZGRyZXNzIGxvb2t1cCBiZXR3ZWVuIElHRCBhY2Nlc3MgYW5kIENQVQorICogYWNjZXNzIHRocm91Z2ggbWFpbiBtZW1vcnkuCisgKi8KK3ZvaWQKK2k5MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdWludDMyX3Qgc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CisJdWludDMyX3Qgc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CisKKwlpZiAoIUlTX0k5WFgoZGV2KSkgeworCQkvKiBBcyBmYXIgYXMgd2Uga25vdywgdGhlIDg2NSBkb2Vzbid0IGhhdmUgdGhlc2UgYml0IDYKKwkJICogc3dpenpsaW5nIGlzc3Vlcy4KKwkJICovCisJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOworCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKKwl9IGVsc2UgaWYgKCghSVNfSTk2NUcoZGV2KSAmJiAhSVNfRzMzKGRldikpIHx8IElTX0k5NjVHTShkZXYpIHx8CisJCSAgIElTX0dNNDUoZGV2KSkgeworCQl1aW50MzJfdCBkY2M7CisKKwkJLyogT24gOTE1LTk0NSBhbmQgR005NjUsIGNoYW5uZWwgaW50ZXJsZWF2ZSBieSB0aGUgQ1BVIGlzCisJCSAqIGRldGVybWluZWQgYnkgRENDLiAgVGhlIENQVSB3aWxsIGFsdGVybmF0ZSBiYXNlZCBvbiBiaXQgNgorCQkgKiBpbiBpbnRlcmxlYXZlZCBtb2RlLCBhbmQgdGhlIEdQVSB3aWxsIHRoZW4gYWxzbyBhbHRlcm5hdGUKKwkJICogb24gYml0IDYsIDksIGFuZCAxMCBmb3IgWCwgYnV0IHRoZSBDUFUgbWF5IGFsc28gb3B0aW9uYWxseQorCQkgKiBhbHRlcm5hdGUgYmFzZWQgb24gYml0IDE3IChYT1Igbm90IGRpc2FibGVkIGFuZCBYT1IKKwkJICogYml0ID09IDE3KS4KKwkJICovCisJCWRjYyA9IEk5MTVfUkVBRChEQ0MpOworCQlzd2l0Y2ggKGRjYyAmIERDQ19BRERSRVNTSU5HX01PREVfTUFTSykgeworCQljYXNlIERDQ19BRERSRVNTSU5HX01PREVfU0lOR0xFX0NIQU5ORUw6CisJCWNhc2UgRENDX0FERFJFU1NJTkdfTU9ERV9EVUFMX0NIQU5ORUxfQVNZTU1FVFJJQzoKKwkJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOworCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7CisJCQlicmVhazsKKwkJY2FzZSBEQ0NfQUREUkVTU0lOR19NT0RFX0RVQUxfQ0hBTk5FTF9JTlRFUkxFQVZFRDoKKwkJCWlmIChJU19JOTE1RyhkZXYpIHx8IElTX0k5MTVHTShkZXYpIHx8CisJCQkgICAgZGNjICYgRENDX0NIQU5ORUxfWE9SX0RJU0FCTEUpIHsKKwkJCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMDsKKwkJCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfOTsKKwkJCX0gZWxzZSBpZiAoSVNfSTk2NUdNKGRldikgfHwgSVNfR000NShkZXYpKSB7CisJCQkJLyogR005NjUgb25seSBkb2VzIGJpdCAxMS1iYXNlZCBjaGFubmVsCisJCQkJICogcmFuZG9taXphdGlvbgorCQkJCSAqLworCQkJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwXzExOworCQkJCXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzExOworCQkJfSBlbHNlIHsKKwkJCQkvKiBCaXQgMTcgb3IgcGVyaGFwcyBvdGhlciBzd2l6emxpbmcgKi8KKwkJCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKKwkJCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJCWlmIChkY2MgPT0gMHhmZmZmZmZmZikgeworCQkJRFJNX0VSUk9SKCJDb3VsZG4ndCByZWFkIGZyb20gTUNIQkFSLiAgIgorCQkJCSAgIkRpc2FibGluZyB0aWxpbmcuXG4iKTsKKwkJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOworCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CisJCX0KKwl9IGVsc2UgeworCQkvKiBUaGUgOTY1LCBHMzMsIGFuZCBuZXdlciwgaGF2ZSBhIHZlcnkgZmxleGlibGUgbWVtb3J5CisJCSAqIGNvbmZpZ3VyYXRpb24uICBJdCB3aWxsIGVuYWJsZSBkdWFsLWNoYW5uZWwgbW9kZQorCQkgKiAoaW50ZXJsZWF2aW5nKSBvbiBhcyBtdWNoIG1lbW9yeSBhcyBpdCBjYW4sIGFuZCB0aGUgR1BVCisJCSAqIHdpbGwgYWRkaXRpb25hbGx5IHNvbWV0aW1lcyBlbmFibGUgZGlmZmVyZW50IGJpdCA2CisJCSAqIHN3aXp6bGluZyBmb3IgdGlsZWQgb2JqZWN0cyBmcm9tIHRoZSBDUFUuCisJCSAqCisJCSAqIEhlcmUncyB3aGF0IEkgZm91bmQgb24gdGhlIEc5NjU6CisJCSAqICAgIHNsb3QgZmlsbCAgICAgICAgIG1lbW9yeSBzaXplICBzd2l6emxpbmcKKwkJICogMEEgICAwQiAgIDFBICAgMUIgICAgMS1jaCAgIDItY2gKKwkJICogNTEyICAwICAgIDAgICAgMCAgICAgNTEyICAgIDAgICAgIE8KKwkJICogNTEyICAwICAgIDUxMiAgMCAgICAgMTYgICAgIDEwMDggIFgKKwkJICogNTEyICAwICAgIDAgICAgNTEyICAgMTYgICAgIDEwMDggIFgKKwkJICogMCAgICA1MTIgIDAgICAgNTEyICAgMTYgICAgIDEwMDggIFgKKwkJICogMTAyNCAxMDI0IDEwMjQgMCAgICAgMjA0OCAgIDEwMjQgIE8KKwkJICoKKwkJICogV2UgY291bGQgcHJvYmFibHkgZGV0ZWN0IHRoaXMgYmFzZWQgb24gZWl0aGVyIHRoZSBEUkIKKwkJICogbWF0Y2hpbmcsIHdoaWNoIHdhcyB0aGUgY2FzZSBmb3IgdGhlIHN3aXp6bGluZyByZXF1aXJlZCBpbgorCQkgKiB0aGUgdGFibGUgYWJvdmUsIG9yIGZyb20gdGhlIDEtY2ggdmFsdWUgYmVpbmcgbGVzcyB0aGFuCisJCSAqIHRoZSBtaW5pbXVtIHNpemUgb2YgYSByYW5rLgorCQkgKi8KKwkJaWYgKEk5MTVfUkVBRDE2KEMwRFJCMykgIT0gSTkxNV9SRUFEMTYoQzFEUkIzKSkgeworCQkJc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7CisJCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKKwkJfSBlbHNlIHsKKwkJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwOworCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFXzk7CisJCX0KKwl9CisKKwlkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV94ID0gc3dpenpsZV94OworCWRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3kgPSBzd2l6emxlX3k7Cit9CisKKy8qKgorICogU2V0cyB0aGUgdGlsaW5nIG1vZGUgb2YgYW4gb2JqZWN0LCByZXR1cm5pbmcgdGhlIHJlcXVpcmVkIHN3aXp6bGluZyBvZgorICogYml0IDYgb2YgYWRkcmVzc2VzIGluIHRoZSBvYmplY3QuCisgKi8KK2ludAoraTkxNV9nZW1fc2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF90aWxpbmcgKmFyZ3MgPSBkYXRhOworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWlmIChhcmdzLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FKSB7CisJCW9ial9wcml2LT50aWxpbmdfbW9kZSA9IEk5MTVfVElMSU5HX05PTkU7CisJCWFyZ3MtPnN3aXp6bGVfbW9kZSA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOworCX0gZWxzZSB7CisJCWlmIChhcmdzLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19YKQorCQkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeDsKKwkJZWxzZQorCQkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeTsKKwkJLyogSWYgd2UgY2FuJ3QgaGFuZGxlIHRoZSBzd2l6emxpbmcsIG1ha2UgaXQgdW50aWxlZC4gKi8KKwkJaWYgKGFyZ3MtPnN3aXp6bGVfbW9kZSA9PSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTikgeworCQkJYXJncy0+dGlsaW5nX21vZGUgPSBJOTE1X1RJTElOR19OT05FOworCQkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7CisJCX0KKwl9CisJb2JqX3ByaXYtPnRpbGluZ19tb2RlID0gYXJncy0+dGlsaW5nX21vZGU7CisKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRpbGluZyBtb2RlIGFuZCByZXF1aXJlZCBiaXQgNiBzd2l6emxpbmcgZm9yIHRoZSBvYmplY3QuCisgKi8KK2ludAoraTkxNV9nZW1fZ2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2dldF90aWxpbmcgKmFyZ3MgPSBkYXRhOworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmpfcHJpdjsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgYXJncy0+aGFuZGxlKTsKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCW9ial9wcml2ID0gb2JqLT5kcml2ZXJfcHJpdmF0ZTsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWFyZ3MtPnRpbGluZ19tb2RlID0gb2JqX3ByaXYtPnRpbGluZ19tb2RlOworCXN3aXRjaCAob2JqX3ByaXYtPnRpbGluZ19tb2RlKSB7CisJY2FzZSBJOTE1X1RJTElOR19YOgorCQlhcmdzLT5zd2l6emxlX21vZGUgPSBkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV94OworCQlicmVhazsKKwljYXNlIEk5MTVfVElMSU5HX1k6CisJCWFyZ3MtPnN3aXp6bGVfbW9kZSA9IGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3k7CisJCWJyZWFrOworCWNhc2UgSTkxNV9USUxJTkdfTk9ORToKKwkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigidW5rbm93biB0aWxpbmcgbW9kZVxuIik7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBkZjAzNjExLi5iYWFlNTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTMxLDEyICszMSw5MiBAQAogI2luY2x1ZGUgImk5MTVfZHJtLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKIAotI2RlZmluZSBVU0VSX0lOVF9GTEFHICgxPDwxKQotI2RlZmluZSBWU1lOQ19QSVBFQl9GTEFHICgxPDw1KQotI2RlZmluZSBWU1lOQ19QSVBFQV9GTEFHICgxPDw3KQotCiAjZGVmaW5lIE1BWF9OT1BJRCAoKHUzMil+MCkKIAorLyoqIFRoZXNlIGFyZSB0aGUgaW50ZXJydXB0cyB1c2VkIGJ5IHRoZSBkcml2ZXIgKi8KKyNkZWZpbmUgSTkxNV9JTlRFUlJVUFRfRU5BQkxFX01BU0sgKEk5MTVfVVNFUl9JTlRFUlJVUFQgfAkJXAorCQkJCSAgICBJOTE1X0FTTEVfSU5URVJSVVBUIHwJCVwKKwkJCQkgICAgSTkxNV9ESVNQTEFZX1BJUEVfQV9FVkVOVF9JTlRFUlJVUFQgfCBcCisJCQkJICAgIEk5MTVfRElTUExBWV9QSVBFX0JfRVZFTlRfSU5URVJSVVBUKQorCit2b2lkCitpOTE1X2VuYWJsZV9pcnEoZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdTMyIG1hc2spCit7CisJaWYgKChkZXZfcHJpdi0+aXJxX21hc2tfcmVnICYgbWFzaykgIT0gMCkgeworCQlkZXZfcHJpdi0+aXJxX21hc2tfcmVnICY9IH5tYXNrOworCQlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYtPmlycV9tYXNrX3JlZyk7CisJCSh2b2lkKSBJOTE1X1JFQUQoSU1SKTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoraTkxNV9kaXNhYmxlX2lycShkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2LCB1MzIgbWFzaykKK3sKKwlpZiAoKGRldl9wcml2LT5pcnFfbWFza19yZWcgJiBtYXNrKSAhPSBtYXNrKSB7CisJCWRldl9wcml2LT5pcnFfbWFza19yZWcgfD0gbWFzazsKKwkJSTkxNV9XUklURShJTVIsIGRldl9wcml2LT5pcnFfbWFza19yZWcpOworCQkodm9pZCkgSTkxNV9SRUFEKElNUik7CisJfQorfQorCisvKioKKyAqIGk5MTVfZ2V0X3BpcGUgLSByZXR1cm4gdGhlIHRoZSBwaXBlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHBsYW5lCisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAcGxhbmU6IHBsYW5lIHRvIGxvb2sgZm9yCisgKgorICogVGhlIEludGVsIE1lc2EgJiAyRCBkcml2ZXJzIGNhbGwgdGhlIHZibGFuayByb3V0aW5lcyB3aXRoIGEgcGxhbmUgbnVtYmVyCisgKiByYXRoZXIgdGhhbiBhIHBpcGUgbnVtYmVyLCBzaW5jZSB0aGV5IG1heSBub3QgYWx3YXlzIGJlIGVxdWFsLiAgVGhpcyByb3V0aW5lCisgKiBtYXBzIHRoZSBnaXZlbiBAcGxhbmUgYmFjayB0byBhIHBpcGUgbnVtYmVyLgorICovCitzdGF0aWMgaW50CitpOTE1X2dldF9waXBlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCXUzMiBkc3BjbnRyOworCisJZHNwY250ciA9IHBsYW5lID8gSTkxNV9SRUFEKERTUEJDTlRSKSA6IEk5MTVfUkVBRChEU1BBQ05UUik7CisKKwlyZXR1cm4gZHNwY250ciAmIERJU1BQTEFORV9TRUxfUElQRV9NQVNLID8gMSA6IDA7Cit9CisKKy8qKgorICogaTkxNV9nZXRfcGxhbmUgLSByZXR1cm4gdGhlIHRoZSBwbGFuZSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBwaXBlCisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAcGlwZTogcGlwZSB0byBsb29rIGZvcgorICoKKyAqIFRoZSBJbnRlbCBNZXNhICYgMkQgZHJpdmVycyBjYWxsIHRoZSB2Ymxhbmsgcm91dGluZXMgd2l0aCBhIHBsYW5lIG51bWJlcgorICogcmF0aGVyIHRoYW4gYSBwbGFuZSBudW1iZXIsIHNpbmNlIHRoZXkgbWF5IG5vdCBhbHdheXMgYmUgZXF1YWwuICBUaGlzIHJvdXRpbmUKKyAqIG1hcHMgdGhlIGdpdmVuIEBwaXBlIGJhY2sgdG8gYSBwbGFuZSBudW1iZXIuCisgKi8KK3N0YXRpYyBpbnQKK2k5MTVfZ2V0X3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQoreworCWlmIChpOTE1X2dldF9waXBlKGRldiwgMCkgPT0gcGlwZSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKKy8qKgorICogaTkxNV9waXBlX2VuYWJsZWQgLSBjaGVjayBpZiBhIHBpcGUgaXMgZW5hYmxlZAorICogQGRldjogRFJNIGRldmljZQorICogQHBpcGU6IHBpcGUgdG8gY2hlY2sKKyAqCisgKiBSZWFkaW5nIGNlcnRhaW4gcmVnaXN0ZXJzIHdoZW4gdGhlIHBpcGUgaXMgZGlzYWJsZWQgY2FuIGhhbmcgdGhlIGNoaXAuCisgKiBVc2UgdGhpcyByb3V0aW5lIHRvIG1ha2Ugc3VyZSB0aGUgUExMIGlzIHJ1bm5pbmcgYW5kIHRoZSBwaXBlIGlzIGFjdGl2ZQorICogYmVmb3JlIHJlYWRpbmcgc3VjaCByZWdpc3RlcnMgaWYgdW5zdXJlLgorICovCitzdGF0aWMgaW50CitpOTE1X3BpcGVfZW5hYmxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGxvbmcgcGlwZWNvbmYgPSBwaXBlID8gUElQRUJDT05GIDogUElQRUFDT05GOworCisJaWYgKEk5MTVfUkVBRChwaXBlY29uZikgJiBQSVBFQUNPTkZfRU5BQkxFKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorCiAvKioKICAqIEVtaXQgYmxpdHMgZm9yIHNjaGVkdWxlZCBidWZmZXIgc3dhcHMuCiAgKgpAQCAtNDgsOCArMTI4LDcgQEAKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsICp0bXAsIGhpdHMsICpoaXQ7CiAJaW50IG5oaXRzLCBucmVjdHMsIHNsaWNlWzJdLCB1cHBlclsyXSwgbG93ZXJbMl0sIGk7Ci0JdW5zaWduZWQgY291bnRlclsyXSA9IHsgYXRvbWljX3JlYWQoJmRldi0+dmJsX3JlY2VpdmVkKSwKLQkJCQlhdG9taWNfcmVhZCgmZGV2LT52YmxfcmVjZWl2ZWQyKSB9OworCXVuc2lnbmVkIGNvdW50ZXJbMl07CiAJc3RydWN0IGRybV9kcmF3YWJsZV9pbmZvICpkcnc7CiAJZHJtX2k5MTVfc2FyZWFfdCAqc2FyZWFfcHJpdiA9IGRldl9wcml2LT5zYXJlYV9wcml2OwogCXUzMiBjcHAgPSBkZXZfcHJpdi0+Y3BwOwpAQCAtNzEsNiArMTUwLDkgQEAKIAkJc3JjX3BpdGNoID4+PSAyOwogCX0KIAorCWNvdW50ZXJbMF0gPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgMCk7CisJY291bnRlclsxXSA9IGRybV92YmxhbmtfY291bnQoZGV2LCAxKTsKKwogCURSTV9ERUJVRygiXG4iKTsKIAogCUlOSVRfTElTVF9IRUFEKCZoaXRzKTsKQEAgLTgzLDEyICsxNjUsMTQgQEAKIAlsaXN0X2Zvcl9lYWNoX3NhZmUobGlzdCwgdG1wLCAmZGV2X3ByaXYtPnZibF9zd2Fwcy5oZWFkKSB7CiAJCWRybV9pOTE1X3ZibF9zd2FwX3QgKnZibF9zd2FwID0KIAkJCWxpc3RfZW50cnkobGlzdCwgZHJtX2k5MTVfdmJsX3N3YXBfdCwgaGVhZCk7CisJCWludCBwaXBlID0gaTkxNV9nZXRfcGlwZShkZXYsIHZibF9zd2FwLT5wbGFuZSk7CiAKLQkJaWYgKChjb3VudGVyW3ZibF9zd2FwLT5waXBlXSAtIHZibF9zd2FwLT5zZXF1ZW5jZSkgPiAoMTw8MjMpKQorCQlpZiAoKGNvdW50ZXJbcGlwZV0gLSB2Ymxfc3dhcC0+c2VxdWVuY2UpID4gKDE8PDIzKSkKIAkJCWNvbnRpbnVlOwogCiAJCWxpc3RfZGVsKGxpc3QpOwogCQlkZXZfcHJpdi0+c3dhcHNfcGVuZGluZy0tOworCQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwogCiAJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+c3dhcHNfbG9jayk7CiAJCXNwaW5fbG9jaygmZGV2LT5kcndfbG9jayk7CkBAIC0xODEsNyArMjY1LDcgQEAKIAkJCWRybV9pOTE1X3ZibF9zd2FwX3QgKnN3YXBfaGl0ID0KIAkJCQlsaXN0X2VudHJ5KGhpdCwgZHJtX2k5MTVfdmJsX3N3YXBfdCwgaGVhZCk7CiAJCQlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqcmVjdDsKLQkJCWludCBudW1fcmVjdHMsIHBpcGU7CisJCQlpbnQgbnVtX3JlY3RzLCBwbGFuZTsKIAkJCXVuc2lnbmVkIHNob3J0IHRvcCwgYm90dG9tOwogCiAJCQlkcncgPSBkcm1fZ2V0X2RyYXdhYmxlX2luZm8oZGV2LCBzd2FwX2hpdC0+ZHJ3X2lkKTsKQEAgLTE5MCw5ICsyNzQsOSBAQAogCQkJCWNvbnRpbnVlOwogCiAJCQlyZWN0ID0gZHJ3LT5yZWN0czsKLQkJCXBpcGUgPSBzd2FwX2hpdC0+cGlwZTsKLQkJCXRvcCA9IHVwcGVyW3BpcGVdOwotCQkJYm90dG9tID0gbG93ZXJbcGlwZV07CisJCQlwbGFuZSA9IHN3YXBfaGl0LT5wbGFuZTsKKwkJCXRvcCA9IHVwcGVyW3BsYW5lXTsKKwkJCWJvdHRvbSA9IGxvd2VyW3BsYW5lXTsKIAogCQkJZm9yIChudW1fcmVjdHMgPSBkcnctPm51bV9yZWN0czsgbnVtX3JlY3RzLS07IHJlY3QrKykgewogCQkJCWludCB5MSA9IG1heChyZWN0LT55MSwgdG9wKTsKQEAgLTIyOSw2MSArMzEzLDEzOSBAQAogCX0KIH0KIAordTMyIGk5MTVfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGxvbmcgaGlnaF9mcmFtZTsKKwl1bnNpZ25lZCBsb25nIGxvd19mcmFtZTsKKwl1MzIgaGlnaDEsIGhpZ2gyLCBsb3csIGNvdW50OworCWludCBwaXBlOworCisJcGlwZSA9IGk5MTVfZ2V0X3BpcGUoZGV2LCBwbGFuZSk7CisJaGlnaF9mcmFtZSA9IHBpcGUgPyBQSVBFQkZSQU1FSElHSCA6IFBJUEVBRlJBTUVISUdIOworCWxvd19mcmFtZSA9IHBpcGUgPyBQSVBFQkZSQU1FUElYRUwgOiBQSVBFQUZSQU1FUElYRUw7CisKKwlpZiAoIWk5MTVfcGlwZV9lbmFibGVkKGRldiwgcGlwZSkpIHsKKwkJRFJNX0VSUk9SKCJ0cnlpbmcgdG8gZ2V0IHZibGFuayBjb3VudCBmb3IgZGlzYWJsZWQgcGlwZSAlZFxuIiwgcGlwZSk7CisJCXJldHVybiAwOworCX0KKworCS8qCisJICogSGlnaCAmIGxvdyByZWdpc3RlciBmaWVsZHMgYXJlbid0IHN5bmNocm9uaXplZCwgc28gbWFrZSBzdXJlCisJICogd2UgZ2V0IGEgbG93IHZhbHVlIHRoYXQncyBzdGFibGUgYWNyb3NzIHR3byByZWFkcyBvZiB0aGUgaGlnaAorCSAqIHJlZ2lzdGVyLgorCSAqLworCWRvIHsKKwkJaGlnaDEgPSAoKEk5MTVfUkVBRChoaWdoX2ZyYW1lKSAmIFBJUEVfRlJBTUVfSElHSF9NQVNLKSA+PgorCQkJIFBJUEVfRlJBTUVfSElHSF9TSElGVCk7CisJCWxvdyA9ICAoKEk5MTVfUkVBRChsb3dfZnJhbWUpICYgUElQRV9GUkFNRV9MT1dfTUFTSykgPj4KKwkJCVBJUEVfRlJBTUVfTE9XX1NISUZUKTsKKwkJaGlnaDIgPSAoKEk5MTVfUkVBRChoaWdoX2ZyYW1lKSAmIFBJUEVfRlJBTUVfSElHSF9NQVNLKSA+PgorCQkJIFBJUEVfRlJBTUVfSElHSF9TSElGVCk7CisJfSB3aGlsZSAoaGlnaDEgIT0gaGlnaDIpOworCisJY291bnQgPSAoaGlnaDEgPDwgOCkgfCBsb3c7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQKK2k5MTVfZ2VtX3ZibGFua193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKKworCWRldl9wcml2ID0gY29udGFpbmVyX29mKHdvcmssIGRybV9pOTE1X3ByaXZhdGVfdCwKKwkJCQltbS52Ymxhbmtfd29yayk7CisJZGV2ID0gZGV2X3ByaXYtPmRldjsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X3ZibGFua190YXNrbGV0KGRldik7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cit9CisKIGlycXJldHVybl90IGk5MTVfZHJpdmVyX2lycV9oYW5kbGVyKERSTV9JUlFfQVJHUykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gKHN0cnVjdCBkcm1fZGV2aWNlICopIGFyZzsKIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOwotCXUxNiB0ZW1wOworCXUzMiBpaXI7CiAJdTMyIHBpcGVhX3N0YXRzLCBwaXBlYl9zdGF0czsKKwlpbnQgdmJsYW5rID0gMDsKIAotCXBpcGVhX3N0YXRzID0gSTkxNV9SRUFEKEk5MTVSRUdfUElQRUFTVEFUKTsKLQlwaXBlYl9zdGF0cyA9IEk5MTVfUkVBRChJOTE1UkVHX1BJUEVCU1RBVCk7CisJYXRvbWljX2luYygmZGV2X3ByaXYtPmlycV9yZWNlaXZlZCk7CiAKLQl0ZW1wID0gSTkxNV9SRUFEMTYoSTkxNVJFR19JTlRfSURFTlRJVFlfUik7CisJaWYgKGRldi0+cGRldi0+bXNpX2VuYWJsZWQpCisJCUk5MTVfV1JJVEUoSU1SLCB+MCk7CisJaWlyID0gSTkxNV9SRUFEKElJUik7CiAKLQl0ZW1wICY9IChVU0VSX0lOVF9GTEFHIHwgVlNZTkNfUElQRUFfRkxBRyB8IFZTWU5DX1BJUEVCX0ZMQUcpOwotCi0JRFJNX0RFQlVHKCIlcyBmbGFnPSUwOHhcbiIsIF9fRlVOQ1RJT05fXywgdGVtcCk7Ci0KLQlpZiAodGVtcCA9PSAwKQorCWlmIChpaXIgPT0gMCkgeworCQlpZiAoZGV2LT5wZGV2LT5tc2lfZW5hYmxlZCkgeworCQkJSTkxNV9XUklURShJTVIsIGRldl9wcml2LT5pcnFfbWFza19yZWcpOworCQkJKHZvaWQpIEk5MTVfUkVBRChJTVIpOworCQl9CiAJCXJldHVybiBJUlFfTk9ORTsKKwl9CiAKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19JTlRfSURFTlRJVFlfUiwgdGVtcCk7Ci0JKHZvaWQpIEk5MTVfUkVBRDE2KEk5MTVSRUdfSU5UX0lERU5USVRZX1IpOwotCURSTV9SRUFETUVNT1JZQkFSUklFUigpOworCS8qCisJICogQ2xlYXIgdGhlIFBJUEUoQXxCKVNUQVQgcmVncyBiZWZvcmUgdGhlIElJUiBvdGhlcndpc2UKKwkgKiB3ZSBtYXkgZ2V0IGV4dHJhIGludGVycnVwdHMuCisJICovCisJaWYgKGlpciAmIEk5MTVfRElTUExBWV9QSVBFX0FfRVZFTlRfSU5URVJSVVBUKSB7CisJCXBpcGVhX3N0YXRzID0gSTkxNV9SRUFEKFBJUEVBU1RBVCk7CisJCWlmICghKGRldl9wcml2LT52YmxhbmtfcGlwZSAmIERSTV9JOTE1X1ZCTEFOS19QSVBFX0EpKQorCQkJcGlwZWFfc3RhdHMgJj0gfihQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfRU5BQkxFIHwKKwkJCQkJIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUpOworCQllbHNlIGlmIChwaXBlYV9zdGF0cyAmIChQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTfAorCQkJCQlQSVBFX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTKSkgeworCQkJdmJsYW5rKys7CisJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIGk5MTVfZ2V0X3BsYW5lKGRldiwgMCkpOworCQl9CiAKLQlkZXZfcHJpdi0+c2FyZWFfcHJpdi0+bGFzdF9kaXNwYXRjaCA9IFJFQURfQlJFQURDUlVNQihkZXZfcHJpdik7CisJCUk5MTVfV1JJVEUoUElQRUFTVEFULCBwaXBlYV9zdGF0cyk7CisJfQorCWlmIChpaXIgJiBJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5UX0lOVEVSUlVQVCkgeworCQlwaXBlYl9zdGF0cyA9IEk5MTVfUkVBRChQSVBFQlNUQVQpOworCQkvKiBBY2sgdGhlIGV2ZW50ICovCisJCUk5MTVfV1JJVEUoUElQRUJTVEFULCBwaXBlYl9zdGF0cyk7CiAKLQlpZiAodGVtcCAmIFVTRVJfSU5UX0ZMQUcpCisJCS8qIFRoZSB2YmxhbmsgaW50ZXJydXB0IGdldHMgZW5hYmxlZCBldmVuIGlmIHdlIGRpZG4ndCBhc2sgZm9yCisJCSAgIGl0LCBzbyBtYWtlIHN1cmUgaXQncyBzaHV0IGRvd24gYWdhaW4gKi8KKwkJaWYgKCEoZGV2X3ByaXYtPnZibGFua19waXBlICYgRFJNX0k5MTVfVkJMQU5LX1BJUEVfQikpCisJCQlwaXBlYl9zdGF0cyAmPSB+KFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUgfAorCQkJCQkgUElQRV9WQkxBTktfSU5URVJSVVBUX0VOQUJMRSk7CisJCWVsc2UgaWYgKHBpcGViX3N0YXRzICYgKFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVN8CisJCQkJCVBJUEVfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMpKSB7CisJCQl2YmxhbmsrKzsKKwkJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwgaTkxNV9nZXRfcGxhbmUoZGV2LCAxKSk7CisJCX0KKworCQlpZiAocGlwZWJfc3RhdHMgJiBJOTE1X0xFR0FDWV9CTENfRVZFTlRfU1RBVFVTKQorCQkJb3ByZWdpb25fYXNsZV9pbnRyKGRldik7CisJCUk5MTVfV1JJVEUoUElQRUJTVEFULCBwaXBlYl9zdGF0cyk7CisJfQorCisJSTkxNV9XUklURShJSVIsIGlpcik7CisJaWYgKGRldi0+cGRldi0+bXNpX2VuYWJsZWQpCisJCUk5MTVfV1JJVEUoSU1SLCBkZXZfcHJpdi0+aXJxX21hc2tfcmVnKTsKKwkodm9pZCkgSTkxNV9SRUFEKElJUik7IC8qIEZsdXNoIHBvc3RlZCB3cml0ZXMgKi8KKworCWlmIChkZXZfcHJpdi0+c2FyZWFfcHJpdikKKwkJZGV2X3ByaXYtPnNhcmVhX3ByaXYtPmxhc3RfZGlzcGF0Y2ggPQorCQkJUkVBRF9CUkVBRENSVU1CKGRldl9wcml2KTsKKworCWlmIChpaXIgJiBJOTE1X1VTRVJfSU5URVJSVVBUKSB7CisJCWRldl9wcml2LT5tbS5pcnFfZ2VtX3NlcW5vID0gaTkxNV9nZXRfZ2VtX3NlcW5vKGRldik7CiAJCURSTV9XQUtFVVAoJmRldl9wcml2LT5pcnFfcXVldWUpOworCX0KIAotCWlmICh0ZW1wICYgKFZTWU5DX1BJUEVBX0ZMQUcgfCBWU1lOQ19QSVBFQl9GTEFHKSkgewotCQlpbnQgdmJsYW5rX3BpcGUgPSBkZXZfcHJpdi0+dmJsYW5rX3BpcGU7CisJaWYgKGlpciAmIEk5MTVfQVNMRV9JTlRFUlJVUFQpCisJCW9wcmVnaW9uX2FzbGVfaW50cihkZXYpOwogCi0JCWlmICgodmJsYW5rX3BpcGUgJgotCQkgICAgIChEUk1fSTkxNV9WQkxBTktfUElQRV9BIHwgRFJNX0k5MTVfVkJMQU5LX1BJUEVfQikpCi0JCSAgICA9PSAoRFJNX0k5MTVfVkJMQU5LX1BJUEVfQSB8IERSTV9JOTE1X1ZCTEFOS19QSVBFX0IpKSB7Ci0JCQlpZiAodGVtcCAmIFZTWU5DX1BJUEVBX0ZMQUcpCi0JCQkJYXRvbWljX2luYygmZGV2LT52YmxfcmVjZWl2ZWQpOwotCQkJaWYgKHRlbXAgJiBWU1lOQ19QSVBFQl9GTEFHKQotCQkJCWF0b21pY19pbmMoJmRldi0+dmJsX3JlY2VpdmVkMik7Ci0JCX0gZWxzZSBpZiAoKCh0ZW1wICYgVlNZTkNfUElQRUFfRkxBRykgJiYKLQkJCSAgICAodmJsYW5rX3BpcGUgJiBEUk1fSTkxNV9WQkxBTktfUElQRV9BKSkgfHwKLQkJCSAgICgodGVtcCAmIFZTWU5DX1BJUEVCX0ZMQUcpICYmCi0JCQkgICAgKHZibGFua19waXBlICYgRFJNX0k5MTVfVkJMQU5LX1BJUEVfQikpKQotCQkJYXRvbWljX2luYygmZGV2LT52YmxfcmVjZWl2ZWQpOwotCi0JCURSTV9XQUtFVVAoJmRldi0+dmJsX3F1ZXVlKTsKLQkJZHJtX3ZibF9zZW5kX3NpZ25hbHMoZGV2KTsKLQotCQlpZiAoZGV2X3ByaXYtPnN3YXBzX3BlbmRpbmcgPiAwKQorCWlmICh2YmxhbmsgJiYgZGV2X3ByaXYtPnN3YXBzX3BlbmRpbmcgPiAwKSB7CisJCWlmIChkZXZfcHJpdi0+cmluZy5yaW5nX29iaiA9PSBOVUxMKQogCQkJZHJtX2xvY2tlZF90YXNrbGV0KGRldiwgaTkxNV92YmxhbmtfdGFza2xldCk7Ci0JCUk5MTVfV1JJVEUoSTkxNVJFR19QSVBFQVNUQVQsCi0JCQlwaXBlYV9zdGF0c3xJOTE1X1ZCTEFOS19JTlRFUlJVUFRfRU5BQkxFfAotCQkJSTkxNV9WQkxBTktfQ0xFQVIpOwotCQlJOTE1X1dSSVRFKEk5MTVSRUdfUElQRUJTVEFULAotCQkJcGlwZWJfc3RhdHN8STkxNV9WQkxBTktfSU5URVJSVVBUX0VOQUJMRXwKLQkJCUk5MTVfVkJMQU5LX0NMRUFSKTsKKwkJZWxzZQorCQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPm1tLnZibGFua193b3JrKTsKIAl9CiAKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CkBAIC0yOTgsMjMgKzQ2MCw0NSBAQAogCiAJRFJNX0RFQlVHKCJcbiIpOwogCi0JZGV2X3ByaXYtPnNhcmVhX3ByaXYtPmxhc3RfZW5xdWV1ZSA9ICsrZGV2X3ByaXYtPmNvdW50ZXI7Ci0KKwlkZXZfcHJpdi0+Y291bnRlcisrOwogCWlmIChkZXZfcHJpdi0+Y291bnRlciA+IDB4N0ZGRkZGRkZVTCkKLQkJZGV2X3ByaXYtPnNhcmVhX3ByaXYtPmxhc3RfZW5xdWV1ZSA9IGRldl9wcml2LT5jb3VudGVyID0gMTsKKwkJZGV2X3ByaXYtPmNvdW50ZXIgPSAxOworCWlmIChkZXZfcHJpdi0+c2FyZWFfcHJpdikKKwkJZGV2X3ByaXYtPnNhcmVhX3ByaXYtPmxhc3RfZW5xdWV1ZSA9IGRldl9wcml2LT5jb3VudGVyOwogCiAJQkVHSU5fTFBfUklORyg2KTsKLQlPVVRfUklORyhDTURfU1RPUkVfRFdPUkRfSURYKTsKLQlPVVRfUklORygyMCk7CisJT1VUX1JJTkcoTUlfU1RPUkVfRFdPUkRfSU5ERVgpOworCU9VVF9SSU5HKDUgPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwogCU9VVF9SSU5HKGRldl9wcml2LT5jb3VudGVyKTsKIAlPVVRfUklORygwKTsKIAlPVVRfUklORygwKTsKLQlPVVRfUklORyhHRlhfT1BfVVNFUl9JTlRFUlJVUFQpOworCU9VVF9SSU5HKE1JX1VTRVJfSU5URVJSVVBUKTsKIAlBRFZBTkNFX0xQX1JJTkcoKTsKIAogCXJldHVybiBkZXZfcHJpdi0+Y291bnRlcjsKIH0KIAordm9pZCBpOTE1X3VzZXJfaXJxX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX2k5MTVfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7CisKKwlzcGluX2xvY2soJmRldl9wcml2LT51c2VyX2lycV9sb2NrKTsKKwlpZiAoZGV2LT5pcnFfZW5hYmxlZCAmJiAoKytkZXZfcHJpdi0+dXNlcl9pcnFfcmVmY291bnQgPT0gMSkpCisJCWk5MTVfZW5hYmxlX2lycShkZXZfcHJpdiwgSTkxNV9VU0VSX0lOVEVSUlVQVCk7CisJc3Bpbl91bmxvY2soJmRldl9wcml2LT51c2VyX2lycV9sb2NrKTsKK30KKwordm9pZCBpOTE1X3VzZXJfaXJxX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX2k5MTVfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7CisKKwlzcGluX2xvY2soJmRldl9wcml2LT51c2VyX2lycV9sb2NrKTsKKwlCVUdfT04oZGV2LT5pcnFfZW5hYmxlZCAmJiBkZXZfcHJpdi0+dXNlcl9pcnFfcmVmY291bnQgPD0gMCk7CisJaWYgKGRldi0+aXJxX2VuYWJsZWQgJiYgKC0tZGV2X3ByaXYtPnVzZXJfaXJxX3JlZmNvdW50ID09IDApKQorCQlpOTE1X2Rpc2FibGVfaXJxKGRldl9wcml2LCBJOTE1X1VTRVJfSU5URVJSVVBUKTsKKwlzcGluX3VubG9jaygmZGV2X3ByaXYtPnVzZXJfaXJxX2xvY2spOworfQorCiBzdGF0aWMgaW50IGk5MTVfd2FpdF9pcnEoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsIGludCBpcnFfbnIpCiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1faTkxNV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTMyMyw1NSArNTA3LDM0IEBACiAJRFJNX0RFQlVHKCJpcnFfbnI9JWQgYnJlYWRjcnVtYj0lZFxuIiwgaXJxX25yLAogCQkgIFJFQURfQlJFQURDUlVNQihkZXZfcHJpdikpOwogCi0JaWYgKFJFQURfQlJFQURDUlVNQihkZXZfcHJpdikgPj0gaXJxX25yKQorCWlmIChSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpID49IGlycV9ucikgeworCQlpZiAoZGV2X3ByaXYtPnNhcmVhX3ByaXYpIHsKKwkJCWRldl9wcml2LT5zYXJlYV9wcml2LT5sYXN0X2Rpc3BhdGNoID0KKwkJCQlSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpOworCQl9CiAJCXJldHVybiAwOworCX0KIAotCWRldl9wcml2LT5zYXJlYV9wcml2LT5wZXJmX2JveGVzIHw9IEk5MTVfQk9YX1dBSVQ7CisJaWYgKGRldl9wcml2LT5zYXJlYV9wcml2KQorCQlkZXZfcHJpdi0+c2FyZWFfcHJpdi0+cGVyZl9ib3hlcyB8PSBJOTE1X0JPWF9XQUlUOwogCisJaTkxNV91c2VyX2lycV9nZXQoZGV2KTsKIAlEUk1fV0FJVF9PTihyZXQsIGRldl9wcml2LT5pcnFfcXVldWUsIDMgKiBEUk1fSFosCiAJCSAgICBSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpID49IGlycV9ucik7CisJaTkxNV91c2VyX2lycV9wdXQoZGV2KTsKIAogCWlmIChyZXQgPT0gLUVCVVNZKSB7CiAJCURSTV9FUlJPUigiRUJVU1kgLS0gcmVjOiAlZCBlbWl0dGVkOiAlZFxuIiwKIAkJCSAgUkVBRF9CUkVBRENSVU1CKGRldl9wcml2KSwgKGludClkZXZfcHJpdi0+Y291bnRlcik7CiAJfQogCi0JZGV2X3ByaXYtPnNhcmVhX3ByaXYtPmxhc3RfZGlzcGF0Y2ggPSBSRUFEX0JSRUFEQ1JVTUIoZGV2X3ByaXYpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfdmJsYW5rX2RvX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSwKLQkJCQkgICAgICBhdG9taWNfdCAqY291bnRlcikKLXsKLQlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1bnNpZ25lZCBpbnQgY3VyX3ZibGFuazsKLQlpbnQgcmV0ID0gMDsKLQotCWlmICghZGV2X3ByaXYpIHsKLQkJRFJNX0VSUk9SKCJjYWxsZWQgd2l0aCBubyBpbml0aWFsaXphdGlvblxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCURSTV9XQUlUX09OKHJldCwgZGV2LT52YmxfcXVldWUsIDMgKiBEUk1fSFosCi0JCSAgICAoKChjdXJfdmJsYW5rID0gYXRvbWljX3JlYWQoY291bnRlcikpCi0JCQktICpzZXF1ZW5jZSkgPD0gKDE8PDIzKSkpOwotCi0JKnNlcXVlbmNlID0gY3VyX3ZibGFuazsKKwlpZiAoZGV2X3ByaXYtPnNhcmVhX3ByaXYpCisJCWRldl9wcml2LT5zYXJlYV9wcml2LT5sYXN0X2Rpc3BhdGNoID0KKwkJCVJFQURfQlJFQURDUlVNQihkZXZfcHJpdik7CiAKIAlyZXR1cm4gcmV0OwogfQogCi0KLWludCBpOTE1X2RyaXZlcl92Ymxhbmtfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKQotewotCXJldHVybiBpOTE1X2RyaXZlcl92YmxhbmtfZG9fd2FpdChkZXYsIHNlcXVlbmNlLCAmZGV2LT52YmxfcmVjZWl2ZWQpOwotfQotCi1pbnQgaTkxNV9kcml2ZXJfdmJsYW5rX3dhaXQyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCAqc2VxdWVuY2UpCi17Ci0JcmV0dXJuIGk5MTVfZHJpdmVyX3ZibGFua19kb193YWl0KGRldiwgc2VxdWVuY2UsICZkZXYtPnZibF9yZWNlaXZlZDIpOwotfQotCiAvKiBOZWVkcyB0aGUgbG9jayBhcyBpdCB0b3VjaGVzIHRoZSByaW5nLgogICovCiBpbnQgaTkxNV9pcnFfZW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLApAQCAtMzgxLDE0ICs1NDQsMTUgQEAKIAlkcm1faTkxNV9pcnFfZW1pdF90ICplbWl0ID0gZGF0YTsKIAlpbnQgcmVzdWx0OwogCi0JTE9DS19URVNUX1dJVEhfUkVUVVJOKGRldiwgZmlsZV9wcml2KTsKKwlSSU5HX0xPQ0tfVEVTVF9XSVRIX1JFVFVSTihkZXYsIGZpbGVfcHJpdik7CiAKIAlpZiAoIWRldl9wcml2KSB7CiAJCURSTV9FUlJPUigiY2FsbGVkIHdpdGggbm8gaW5pdGlhbGl6YXRpb25cbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0KKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmVzdWx0ID0gaTkxNV9lbWl0X2lycShkZXYpOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJaWYgKERSTV9DT1BZX1RPX1VTRVIoZW1pdC0+aXJxX3NlcSwgJnJlc3VsdCwgc2l6ZW9mKGludCkpKSB7CiAJCURSTV9FUlJPUigiY29weV90b191c2VyXG4iKTsKQEAgLTQxNCwxOCArNTc4LDc0IEBACiAJcmV0dXJuIGk5MTVfd2FpdF9pcnEoZGV2LCBpcnF3YWl0LT5pcnFfc2VxKTsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9lbmFibGVfaW50ZXJydXB0IChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoraW50IGk5MTVfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGxhbmUpCiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1faTkxNV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKLQl1MTYgZmxhZzsKKwlpbnQgcGlwZSA9IGk5MTVfZ2V0X3BpcGUoZGV2LCBwbGFuZSk7CisJdTMyCXBpcGVzdGF0X3JlZyA9IDA7CisJdTMyCXBpcGVzdGF0OwogCi0JZmxhZyA9IDA7Ci0JaWYgKGRldl9wcml2LT52YmxhbmtfcGlwZSAmIERSTV9JOTE1X1ZCTEFOS19QSVBFX0EpCi0JCWZsYWcgfD0gVlNZTkNfUElQRUFfRkxBRzsKLQlpZiAoZGV2X3ByaXYtPnZibGFua19waXBlICYgRFJNX0k5MTVfVkJMQU5LX1BJUEVfQikKLQkJZmxhZyB8PSBWU1lOQ19QSVBFQl9GTEFHOworCXN3aXRjaCAocGlwZSkgeworCWNhc2UgMDoKKwkJcGlwZXN0YXRfcmVnID0gUElQRUFTVEFUOworCQlpOTE1X2VuYWJsZV9pcnEoZGV2X3ByaXYsIEk5MTVfRElTUExBWV9QSVBFX0FfRVZFTlRfSU5URVJSVVBUKTsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlwaXBlc3RhdF9yZWcgPSBQSVBFQlNUQVQ7CisJCWk5MTVfZW5hYmxlX2lycShkZXZfcHJpdiwgSTkxNV9ESVNQTEFZX1BJUEVfQl9FVkVOVF9JTlRFUlJVUFQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoInRyaWVkIHRvIGVuYWJsZSB2Ymxhbmsgb24gbm9uLWV4aXN0ZW50IHBpcGUgJWRcbiIsCisJCQkgIHBpcGUpOworCQlicmVhazsKKwl9CiAKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19JTlRfRU5BQkxFX1IsIFVTRVJfSU5UX0ZMQUcgfCBmbGFnKTsKKwlpZiAocGlwZXN0YXRfcmVnKSB7CisJCXBpcGVzdGF0ID0gSTkxNV9SRUFEKHBpcGVzdGF0X3JlZyk7CisJCWlmIChJU19JOTY1RyhkZXYpKQorCQkJcGlwZXN0YXQgfD0gUElQRV9TVEFSVF9WQkxBTktfSU5URVJSVVBUX0VOQUJMRTsKKwkJZWxzZQorCQkJcGlwZXN0YXQgfD0gUElQRV9WQkxBTktfSU5URVJSVVBUX0VOQUJMRTsKKwkJLyogQ2xlYXIgYW55IHN0YWxlIGludGVycnVwdCBzdGF0dXMgKi8KKwkJcGlwZXN0YXQgfD0gKFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMgfAorCQkJICAgICBQSVBFX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTKTsKKwkJSTkxNV9XUklURShwaXBlc3RhdF9yZWcsIHBpcGVzdGF0KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpOTE1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSkKK3sKKwlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCWludCBwaXBlID0gaTkxNV9nZXRfcGlwZShkZXYsIHBsYW5lKTsKKwl1MzIJcGlwZXN0YXRfcmVnID0gMDsKKwl1MzIJcGlwZXN0YXQ7CisKKwlzd2l0Y2ggKHBpcGUpIHsKKwljYXNlIDA6CisJCXBpcGVzdGF0X3JlZyA9IFBJUEVBU1RBVDsKKwkJaTkxNV9kaXNhYmxlX2lycShkZXZfcHJpdiwgSTkxNV9ESVNQTEFZX1BJUEVfQV9FVkVOVF9JTlRFUlJVUFQpOworCQlicmVhazsKKwljYXNlIDE6CisJCXBpcGVzdGF0X3JlZyA9IFBJUEVCU1RBVDsKKwkJaTkxNV9kaXNhYmxlX2lycShkZXZfcHJpdiwgSTkxNV9ESVNQTEFZX1BJUEVfQl9FVkVOVF9JTlRFUlJVUFQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoInRyaWVkIHRvIGRpc2FibGUgdmJsYW5rIG9uIG5vbi1leGlzdGVudCBwaXBlICVkXG4iLAorCQkJICBwaXBlKTsKKwkJYnJlYWs7CisJfQorCisJaWYgKHBpcGVzdGF0X3JlZykgeworCQlwaXBlc3RhdCA9IEk5MTVfUkVBRChwaXBlc3RhdF9yZWcpOworCQlwaXBlc3RhdCAmPSB+KFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUgfAorCQkJICAgICAgUElQRV9WQkxBTktfSU5URVJSVVBUX0VOQUJMRSk7CisJCS8qIENsZWFyIGFueSBzdGFsZSBpbnRlcnJ1cHQgc3RhdHVzICovCisJCXBpcGVzdGF0IHw9IChQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTIHwKKwkJCSAgICAgUElQRV9WQkxBTktfSU5URVJSVVBUX1NUQVRVUyk7CisJCUk5MTVfV1JJVEUocGlwZXN0YXRfcmVnLCBwaXBlc3RhdCk7CisJfQogfQogCiAvKiBTZXQgdGhlIHZibGFuayBtb25pdG9yIHBpcGUKQEAgLTQzNCwyMiArNjU0LDEyIEBACiAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JZHJtX2k5MTVfdmJsYW5rX3BpcGVfdCAqcGlwZSA9IGRhdGE7CiAKIAlpZiAoIWRldl9wcml2KSB7CiAJCURSTV9FUlJPUigiY2FsbGVkIHdpdGggbm8gaW5pdGlhbGl6YXRpb25cbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAocGlwZS0+cGlwZSAmIH4oRFJNX0k5MTVfVkJMQU5LX1BJUEVfQXxEUk1fSTkxNV9WQkxBTktfUElQRV9CKSkgewotCQlEUk1fRVJST1IoImNhbGxlZCB3aXRoIGludmFsaWQgcGlwZSAweCV4XG4iLCBwaXBlLT5waXBlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JZGV2X3ByaXYtPnZibGFua19waXBlID0gcGlwZS0+cGlwZTsKLQotCWk5MTVfZW5hYmxlX2ludGVycnVwdCAoZGV2KTsKLQogCXJldHVybiAwOwogfQogCkBAIC00NTgsMTkgKzY2OCwxMyBAQAogewogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWRybV9pOTE1X3ZibGFua19waXBlX3QgKnBpcGUgPSBkYXRhOwotCXUxNiBmbGFnOwogCiAJaWYgKCFkZXZfcHJpdikgewogCQlEUk1fRVJST1IoImNhbGxlZCB3aXRoIG5vIGluaXRpYWxpemF0aW9uXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JZmxhZyA9IEk5MTVfUkVBRChJOTE1UkVHX0lOVF9FTkFCTEVfUik7Ci0JcGlwZS0+cGlwZSA9IDA7Ci0JaWYgKGZsYWcgJiBWU1lOQ19QSVBFQV9GTEFHKQotCQlwaXBlLT5waXBlIHw9IERSTV9JOTE1X1ZCTEFOS19QSVBFX0E7Ci0JaWYgKGZsYWcgJiBWU1lOQ19QSVBFQl9GTEFHKQotCQlwaXBlLT5waXBlIHw9IERSTV9JOTE1X1ZCTEFOS19QSVBFX0I7CisJcGlwZS0+cGlwZSA9IERSTV9JOTE1X1ZCTEFOS19QSVBFX0EgfCBEUk1fSTkxNV9WQkxBTktfUElQRV9COwogCiAJcmV0dXJuIDA7CiB9CkBAIC00ODQsMTEgKzY4OCwxMiBAQAogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWRybV9pOTE1X3ZibGFua19zd2FwX3QgKnN3YXAgPSBkYXRhOwogCWRybV9pOTE1X3ZibF9zd2FwX3QgKnZibF9zd2FwOwotCXVuc2lnbmVkIGludCBwaXBlLCBzZXF0eXBlLCBjdXJzZXE7CisJdW5zaWduZWQgaW50IHBpcGUsIHNlcXR5cGUsIGN1cnNlcSwgcGxhbmU7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0OworCWludCByZXQ7CiAKLQlpZiAoIWRldl9wcml2KSB7CisJaWYgKCFkZXZfcHJpdiB8fCAhZGV2X3ByaXYtPnNhcmVhX3ByaXYpIHsKIAkJRFJNX0VSUk9SKCIlcyBjYWxsZWQgd2l0aCBubyBpbml0aWFsaXphdGlvblxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC01MDQsNyArNzA5LDggQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcGlwZSA9IChzd2FwLT5zZXF0eXBlICYgX0RSTV9WQkxBTktfU0VDT05EQVJZKSA/IDEgOiAwOworCXBsYW5lID0gKHN3YXAtPnNlcXR5cGUgJiBfRFJNX1ZCTEFOS19TRUNPTkRBUlkpID8gMSA6IDA7CisJcGlwZSA9IGk5MTVfZ2V0X3BpcGUoZGV2LCBwbGFuZSk7CiAKIAlzZXF0eXBlID0gc3dhcC0+c2VxdHlwZSAmIChfRFJNX1ZCTEFOS19SRUxBVElWRSB8IF9EUk1fVkJMQU5LX0FCU09MVVRFKTsKIApAQCAtNTIzLDcgKzcyOSwxNCBAQAogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5kcndfbG9jaywgaXJxZmxhZ3MpOwogCi0JY3Vyc2VxID0gYXRvbWljX3JlYWQocGlwZSA/ICZkZXYtPnZibF9yZWNlaXZlZDIgOiAmZGV2LT52YmxfcmVjZWl2ZWQpOworCS8qCisJICogV2UgdGFrZSB0aGUgcmVmIGhlcmUgYW5kIHB1dCBpdCB3aGVuIHRoZSBzd2FwIGFjdHVhbGx5IGNvbXBsZXRlcworCSAqIGluIHRoZSB0YXNrbGV0LgorCSAqLworCXJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwljdXJzZXEgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7CiAKIAlpZiAoc2VxdHlwZSA9PSBfRFJNX1ZCTEFOS19SRUxBVElWRSkKIAkJc3dhcC0+c2VxdWVuY2UgKz0gY3Vyc2VxOwpAQCAtNTMzLDYgKzc0Niw3IEBACiAJCQlzd2FwLT5zZXF1ZW5jZSA9IGN1cnNlcSArIDE7CiAJCX0gZWxzZSB7CiAJCQlEUk1fREVCVUcoIk1pc3NlZCB0YXJnZXQgc2VxdWVuY2VcbiIpOworCQkJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQpAQCAtNTQzLDcgKzc1Nyw3IEBACiAJCXZibF9zd2FwID0gbGlzdF9lbnRyeShsaXN0LCBkcm1faTkxNV92Ymxfc3dhcF90LCBoZWFkKTsKIAogCQlpZiAodmJsX3N3YXAtPmRyd19pZCA9PSBzd2FwLT5kcmF3YWJsZSAmJgotCQkgICAgdmJsX3N3YXAtPnBpcGUgPT0gcGlwZSAmJgorCQkgICAgdmJsX3N3YXAtPnBsYW5lID09IHBsYW5lICYmCiAJCSAgICB2Ymxfc3dhcC0+c2VxdWVuY2UgPT0gc3dhcC0+c2VxdWVuY2UpIHsKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5zd2Fwc19sb2NrLCBpcnFmbGFncyk7CiAJCQlEUk1fREVCVUcoIkFscmVhZHkgc2NoZWR1bGVkXG4iKTsKQEAgLTU1NSw2ICs3NjksNyBAQAogCiAJaWYgKGRldl9wcml2LT5zd2Fwc19wZW5kaW5nID49IDEwMCkgewogCQlEUk1fREVCVUcoIlRvbyBtYW55IHN3YXBzIHF1ZXVlZFxuIik7CisJCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQogCkBAIC01NjIsMTMgKzc3NywxNCBAQAogCiAJaWYgKCF2Ymxfc3dhcCkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgdG8gcXVldWUgc3dhcFxuIik7CisJCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAogCURSTV9ERUJVRygiXG4iKTsKIAogCXZibF9zd2FwLT5kcndfaWQgPSBzd2FwLT5kcmF3YWJsZTsKLQl2Ymxfc3dhcC0+cGlwZSA9IHBpcGU7CisJdmJsX3N3YXAtPnBsYW5lID0gcGxhbmU7CiAJdmJsX3N3YXAtPnNlcXVlbmNlID0gc3dhcC0+c2VxdWVuY2U7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnN3YXBzX2xvY2ssIGlycWZsYWdzKTsKQEAgLTU4NywzNyArODAzLDYzIEBACiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1faTkxNV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKIAotCUk5MTVfV1JJVEUxNihJOTE1UkVHX0hXU1RBTSwgMHhmZmZlKTsKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19JTlRfTUFTS19SLCAweDApOwotCUk5MTVfV1JJVEUxNihJOTE1UkVHX0lOVF9FTkFCTEVfUiwgMHgwKTsKKwlJOTE1X1dSSVRFKEhXU1RBTSwgMHhlZmZlKTsKKwlJOTE1X1dSSVRFKElNUiwgMHhmZmZmZmZmZik7CisJSTkxNV9XUklURShJRVIsIDB4MCk7CiB9CiAKLXZvaWQgaTkxNV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQoraW50IGk5MTVfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX2k5MTVfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IHJldCwgbnVtX3BpcGVzID0gMjsKIAogCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+c3dhcHNfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT52Ymxfc3dhcHMuaGVhZCk7CiAJZGV2X3ByaXYtPnN3YXBzX3BlbmRpbmcgPSAwOwogCi0JaWYgKCFkZXZfcHJpdi0+dmJsYW5rX3BpcGUpCi0JCWRldl9wcml2LT52YmxhbmtfcGlwZSA9IERSTV9JOTE1X1ZCTEFOS19QSVBFX0E7Ci0JaTkxNV9lbmFibGVfaW50ZXJydXB0KGRldik7CisJLyogU2V0IGluaXRpYWwgdW5tYXNrZWQgSVJRcyB0byBqdXN0IHRoZSBzZWxlY3RlZCB2YmxhbmsgcGlwZXMuICovCisJZGV2X3ByaXYtPmlycV9tYXNrX3JlZyA9IH4wOworCisJcmV0ID0gZHJtX3ZibGFua19pbml0KGRldiwgbnVtX3BpcGVzKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZGV2X3ByaXYtPnZibGFua19waXBlID0gRFJNX0k5MTVfVkJMQU5LX1BJUEVfQSB8IERSTV9JOTE1X1ZCTEFOS19QSVBFX0I7CisJZGV2X3ByaXYtPmlycV9tYXNrX3JlZyAmPSB+STkxNV9ESVNQTEFZX1BJUEVfQV9WQkxBTktfSU5URVJSVVBUOworCWRldl9wcml2LT5pcnFfbWFza19yZWcgJj0gfkk5MTVfRElTUExBWV9QSVBFX0JfVkJMQU5LX0lOVEVSUlVQVDsKKworCWRldi0+bWF4X3ZibGFua19jb3VudCA9IDB4ZmZmZmZmOyAvKiBvbmx5IDI0IGJpdHMgb2YgZnJhbWUgY291bnQgKi8KKworCWRldl9wcml2LT5pcnFfbWFza19yZWcgJj0gSTkxNV9JTlRFUlJVUFRfRU5BQkxFX01BU0s7CisKKwlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYtPmlycV9tYXNrX3JlZyk7CisJSTkxNV9XUklURShJRVIsIEk5MTVfSU5URVJSVVBUX0VOQUJMRV9NQVNLKTsKKwkodm9pZCkgSTkxNV9SRUFEKElFUik7CisKKwlvcHJlZ2lvbl9lbmFibGVfYXNsZShkZXYpOwogCURSTV9JTklUX1dBSVRRVUVVRSgmZGV2X3ByaXYtPmlycV9xdWV1ZSk7CisKKwlyZXR1cm4gMDsKIH0KIAogdm9pZCBpOTE1X2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQogewogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX2k5MTVfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7Ci0JdTE2IHRlbXA7CisJdTMyIHRlbXA7CiAKIAlpZiAoIWRldl9wcml2KQogCQlyZXR1cm47CiAKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19IV1NUQU0sIDB4ZmZmZik7Ci0JSTkxNV9XUklURTE2KEk5MTVSRUdfSU5UX01BU0tfUiwgMHhmZmZmKTsKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19JTlRfRU5BQkxFX1IsIDB4MCk7CisJZGV2X3ByaXYtPnZibGFua19waXBlID0gMDsKIAotCXRlbXAgPSBJOTE1X1JFQUQxNihJOTE1UkVHX0lOVF9JREVOVElUWV9SKTsKLQlJOTE1X1dSSVRFMTYoSTkxNVJFR19JTlRfSURFTlRJVFlfUiwgdGVtcCk7CisJSTkxNV9XUklURShIV1NUQU0sIDB4ZmZmZmZmZmYpOworCUk5MTVfV1JJVEUoSU1SLCAweGZmZmZmZmZmKTsKKwlJOTE1X1dSSVRFKElFUiwgMHgwKTsKKworCXRlbXAgPSBJOTE1X1JFQUQoUElQRUFTVEFUKTsKKwlJOTE1X1dSSVRFKFBJUEVBU1RBVCwgdGVtcCk7CisJdGVtcCA9IEk5MTVfUkVBRChQSVBFQlNUQVQpOworCUk5MTVfV1JJVEUoUElQRUJTVEFULCB0ZW1wKTsKKwl0ZW1wID0gSTkxNV9SRUFEKElJUik7CisJSTkxNV9XUklURShJSVIsIHRlbXApOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vcHJlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vcHJlZ2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ODdhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29wcmVnaW9uLmMKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbiA8aG9uZy5saXVAaW50ZWwuY29tPgorICogQ29weXJpZ2h0IDIwMDggUmVkIEhhdCA8bWpnQHJlZGhhdC5jb20+CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAorICogcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICogTk9OLUlORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIElOVEVMIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKworI2luY2x1ZGUgImRybVAuaCIKKyNpbmNsdWRlICJpOTE1X2RybS5oIgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKKyNkZWZpbmUgUENJX0FTTEUgMHhlNAorI2RlZmluZSBQQ0lfTEJQQyAweGY0CisjZGVmaW5lIFBDSV9BU0xTIDB4ZmMKKworI2RlZmluZSBPUFJFR0lPTl9TWiAgICAgICAgICAgICg4KjEwMjQpCisjZGVmaW5lIE9QUkVHSU9OX0hFQURFUl9PRkZTRVQgMAorI2RlZmluZSBPUFJFR0lPTl9BQ1BJX09GRlNFVCAgIDB4MTAwCisjZGVmaW5lIE9QUkVHSU9OX1NXU0NJX09GRlNFVCAgMHgyMDAKKyNkZWZpbmUgT1BSRUdJT05fQVNMRV9PRkZTRVQgICAweDMwMAorI2RlZmluZSBPUFJFR0lPTl9WQlRfT0ZGU0VUICAgIDB4MTAwMAorCisjZGVmaW5lIE9QUkVHSU9OX1NJR05BVFVSRSAiSW50ZWxHcmFwaGljc01lbSIKKyNkZWZpbmUgTUJPWF9BQ1BJICAgICAgKDE8PDApCisjZGVmaW5lIE1CT1hfU1dTQ0kgICAgICgxPDwxKQorI2RlZmluZSBNQk9YX0FTTEUgICAgICAoMTw8MikKKworc3RydWN0IG9wcmVnaW9uX2hlYWRlciB7CisgICAgICAgdTggc2lnbmF0dXJlWzE2XTsKKyAgICAgICB1MzIgc2l6ZTsKKyAgICAgICB1MzIgb3ByZWdpb25fdmVyOworICAgICAgIHU4IGJpb3NfdmVyWzMyXTsKKyAgICAgICB1OCB2Ymlvc192ZXJbMTZdOworICAgICAgIHU4IGRyaXZlcl92ZXJbMTZdOworICAgICAgIHUzMiBtYm94ZXM7CisgICAgICAgdTggcmVzZXJ2ZWRbMTY0XTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qIE9wUmVnaW9uIG1haWxib3ggIzE6IHB1YmxpYyBBQ1BJIG1ldGhvZHMgKi8KK3N0cnVjdCBvcHJlZ2lvbl9hY3BpIHsKKyAgICAgICB1MzIgZHJkeTsgICAgICAgLyogZHJpdmVyIHJlYWRpbmVzcyAqLworICAgICAgIHUzMiBjc3RzOyAgICAgICAvKiBub3RpZmljYXRpb24gc3RhdHVzICovCisgICAgICAgdTMyIGNldnQ7ICAgICAgIC8qIGN1cnJlbnQgZXZlbnQgKi8KKyAgICAgICB1OCByc3ZkMVsyMF07CisgICAgICAgdTMyIGRpZGxbOF07ICAgIC8qIHN1cHBvcnRlZCBkaXNwbGF5IGRldmljZXMgSUQgbGlzdCAqLworICAgICAgIHUzMiBjcGRsWzhdOyAgICAvKiBjdXJyZW50bHkgcHJlc2VudGVkIGRpc3BsYXkgbGlzdCAqLworICAgICAgIHUzMiBjYWRsWzhdOyAgICAvKiBjdXJyZW50bHkgYWN0aXZlIGRpc3BsYXkgbGlzdCAqLworICAgICAgIHUzMiBuYWRsWzhdOyAgICAvKiBuZXh0IGFjdGl2ZSBkZXZpY2VzIGxpc3QgKi8KKyAgICAgICB1MzIgYXNscDsgICAgICAgLyogQVNMIHNsZWVwIHRpbWUtb3V0ICovCisgICAgICAgdTMyIHRpZHg7ICAgICAgIC8qIHRvZ2dsZSB0YWJsZSBpbmRleCAqLworICAgICAgIHUzMiBjaHBkOyAgICAgICAvKiBjdXJyZW50IGhvdHBsdWcgZW5hYmxlIGluZGljYXRvciAqLworICAgICAgIHUzMiBjbGlkOyAgICAgICAvKiBjdXJyZW50IGxpZCBzdGF0ZSovCisgICAgICAgdTMyIGNkY2s7ICAgICAgIC8qIGN1cnJlbnQgZG9ja2luZyBzdGF0ZSAqLworICAgICAgIHUzMiBzeHN3OyAgICAgICAvKiBTeCBzdGF0ZSByZXN1bWUgKi8KKyAgICAgICB1MzIgZXZ0czsgICAgICAgLyogQVNMIHN1cHBvcnRlZCBldmVudHMgKi8KKyAgICAgICB1MzIgY25vdDsgICAgICAgLyogY3VycmVudCBPUyBub3RpZmljYXRpb24gKi8KKyAgICAgICB1MzIgbnJkeTsgICAgICAgLyogZHJpdmVyIHN0YXR1cyAqLworICAgICAgIHU4IHJzdmQyWzYwXTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qIE9wUmVnaW9uIG1haWxib3ggIzI6IFNXU0NJICovCitzdHJ1Y3Qgb3ByZWdpb25fc3dzY2kgeworICAgICAgIHUzMiBzY2ljOyAgICAgICAvKiBTV1NDSSBjb21tYW5kfHN0YXR1c3xkYXRhICovCisgICAgICAgdTMyIHBhcm07ICAgICAgIC8qIGNvbW1hbmQgcGFyYW1ldGVycyAqLworICAgICAgIHUzMiBkc2xwOyAgICAgICAvKiBkcml2ZXIgc2xlZXAgdGltZS1vdXQgKi8KKyAgICAgICB1OCByc3ZkWzI0NF07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisvKiBPcFJlZ2lvbiBtYWlsYm94ICMzOiBBU0xFICovCitzdHJ1Y3Qgb3ByZWdpb25fYXNsZSB7CisgICAgICAgdTMyIGFyZHk7ICAgICAgIC8qIGRyaXZlciByZWFkaW5lc3MgKi8KKyAgICAgICB1MzIgYXNsYzsgICAgICAgLyogQVNMRSBpbnRlcnJ1cHQgY29tbWFuZCAqLworICAgICAgIHUzMiB0Y2hlOyAgICAgICAvKiB0ZWNobm9sb2d5IGVuYWJsZWQgaW5kaWNhdG9yICovCisgICAgICAgdTMyIGFsc2k7ICAgICAgIC8qIGN1cnJlbnQgQUxTIGlsbHVtaW5hbmNlIHJlYWRpbmcgKi8KKyAgICAgICB1MzIgYmNscDsgICAgICAgLyogYmFja2xpZ2h0IGJyaWdodG5lc3MgdG8gc2V0ICovCisgICAgICAgdTMyIHBmaXQ7ICAgICAgIC8qIHBhbmVsIGZpdHRpbmcgc3RhdGUgKi8KKyAgICAgICB1MzIgY2JsdjsgICAgICAgLyogY3VycmVudCBicmlnaHRuZXNzIGxldmVsICovCisgICAgICAgdTE2IGJjbG1bMjBdOyAgIC8qIGJhY2tsaWdodCBsZXZlbCBkdXR5IGN5Y2xlIG1hcHBpbmcgdGFibGUgKi8KKyAgICAgICB1MzIgY3BmbTsgICAgICAgLyogY3VycmVudCBwYW5lbCBmaXR0aW5nIG1vZGUgKi8KKyAgICAgICB1MzIgZXBmbTsgICAgICAgLyogZW5hYmxlZCBwYW5lbCBmaXR0aW5nIG1vZGVzICovCisgICAgICAgdTggcGx1dFs3NF07ICAgIC8qIHBhbmVsIExVVCBhbmQgaWRlbnRpZmllciAqLworICAgICAgIHUzMiBwZm1iOyAgICAgICAvKiBQV00gZnJlcSBhbmQgbWluIGJyaWdodG5lc3MgKi8KKyAgICAgICB1OCByc3ZkWzEwMl07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisvKiBBU0xFIGlycSByZXF1ZXN0IGJpdHMgKi8KKyNkZWZpbmUgQVNMRV9TRVRfQUxTX0lMTFVNICAgICAoMSA8PCAwKQorI2RlZmluZSBBU0xFX1NFVF9CQUNLTElHSFQgICAgICgxIDw8IDEpCisjZGVmaW5lIEFTTEVfU0VUX1BGSVQgICAgICAgICAgKDEgPDwgMikKKyNkZWZpbmUgQVNMRV9TRVRfUFdNX0ZSRVEgICAgICAoMSA8PCAzKQorI2RlZmluZSBBU0xFX1JFUV9NU0sgICAgICAgICAgIDB4ZgorCisvKiByZXNwb25zZSBiaXRzIG9mIEFTTEUgaXJxIHJlcXVlc3QgKi8KKyNkZWZpbmUgQVNMRV9BTFNfSUxMVU1fRkFJTCAgICAoMjw8MTApCisjZGVmaW5lIEFTTEVfQkFDS0xJR0hUX0ZBSUwgICAgKDI8PDEyKQorI2RlZmluZSBBU0xFX1BGSVRfRkFJTCAgICAgICAgICgyPDwxNCkKKyNkZWZpbmUgQVNMRV9QV01fRlJFUV9GQUlMICAgICAoMjw8MTYpCisKKy8qIEFTTEUgYmFja2xpZ2h0IGJyaWdodG5lc3MgdG8gc2V0ICovCisjZGVmaW5lIEFTTEVfQkNMUF9WQUxJRCAgICAgICAgICAgICAgICAoMTw8MzEpCisjZGVmaW5lIEFTTEVfQkNMUF9NU0sgICAgICAgICAgKH4oMTw8MzEpKQorCisvKiBBU0xFIHBhbmVsIGZpdHRpbmcgcmVxdWVzdCAqLworI2RlZmluZSBBU0xFX1BGSVRfVkFMSUQgICAgICAgICAoMTw8MzEpCisjZGVmaW5lIEFTTEVfUEZJVF9DRU5URVIgKDE8PDApCisjZGVmaW5lIEFTTEVfUEZJVF9TVFJFVENIX1RFWFQgKDE8PDEpCisjZGVmaW5lIEFTTEVfUEZJVF9TVFJFVENIX0dGWCAoMTw8MikKKworLyogUFdNIGZyZXF1ZW5jeSBhbmQgbWluaW11bSBicmlnaHRuZXNzICovCisjZGVmaW5lIEFTTEVfUEZNQl9CUklHSFRORVNTX01BU0sgKDB4ZmYpCisjZGVmaW5lIEFTTEVfUEZNQl9CUklHSFRORVNTX1ZBTElEICgxPDw4KQorI2RlZmluZSBBU0xFX1BGTUJfUFdNX01BU0sgKDB4N2ZmZmZlMDApCisjZGVmaW5lIEFTTEVfUEZNQl9QV01fVkFMSUQgKDE8PDMxKQorCisjZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAgICAgICAgICgxPDwzMSkKKworc3RhdGljIHUzMiBhc2xlX3NldF9iYWNrbGlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGJjbHApCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qgb3ByZWdpb25fYXNsZSAqYXNsZSA9IGRldl9wcml2LT5vcHJlZ2lvbi5hc2xlOworCXUzMiBibGNfcHdtX2N0bCwgYmxjX3B3bV9jdGwyOworCisJaWYgKCEoYmNscCAmIEFTTEVfQkNMUF9WQUxJRCkpCisJCXJldHVybiBBU0xFX0JBQ0tMSUdIVF9GQUlMOworCisJYmNscCAmPSBBU0xFX0JDTFBfTVNLOworCWlmIChiY2xwIDwgMCB8fCBiY2xwID4gMjU1KQorCQlyZXR1cm4gQVNMRV9CQUNLTElHSFRfRkFJTDsKKworCWJsY19wd21fY3RsID0gSTkxNV9SRUFEKEJMQ19QV01fQ1RMKTsKKwlibGNfcHdtX2N0bCAmPSB+QkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKKwlibGNfcHdtX2N0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwyKTsKKworCWlmIChibGNfcHdtX2N0bDIgJiBCTE1fQ09NQklOQVRJT05fTU9ERSkKKwkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYtPnBkZXYsIFBDSV9MQlBDLCBiY2xwKTsKKwllbHNlCisJCUk5MTVfV1JJVEUoQkxDX1BXTV9DVEwsIGJsY19wd21fY3RsIHwgKChiY2xwICogMHgxMDEpLTEpKTsKKworCWFzbGUtPmNibHYgPSAoYmNscCoweDY0KS8weGZmIHwgQVNMRV9DQkxWX1ZBTElEOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1MzIgYXNsZV9zZXRfYWxzX2lsbHVtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBhbHNpKQoreworCS8qIGFsc2kgaXMgdGhlIGN1cnJlbnQgQUxTIHJlYWRpbmcgaW4gbHV4LiAwIGluZGljYXRlcyBiZWxvdyBzZW5zb3IKKwkgICByYW5nZSwgMHhmZmZmIGluZGljYXRlcyBhYm92ZSBzZW5zb3IgcmFuZ2UuIDEtMHhmZmZlIGFyZSB2YWxpZCAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgdTMyIGFzbGVfc2V0X3B3bV9mcmVxKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBwZm1iKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaWYgKHBmbWIgJiBBU0xFX1BGTUJfUFdNX1ZBTElEKSB7CisJCXUzMiBibGNfcHdtX2N0bCA9IEk5MTVfUkVBRChCTENfUFdNX0NUTCk7CisJCXUzMiBwd20gPSBwZm1iICYgQVNMRV9QRk1CX1BXTV9NQVNLOworCQlibGNfcHdtX2N0bCAmPSBCQUNLTElHSFRfRFVUWV9DWUNMRV9NQVNLOworCQlwd20gPSBwd20gPj4gOTsKKwkJLyogRklYTUUgLSB3aGF0IGRvIHdlIGRvIHdpdGggdGhlIFBXTT8gKi8KKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1MzIgYXNsZV9zZXRfcGZpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgcGZpdCkKK3sKKwkvKiBQYW5lbCBmaXR0aW5nIGlzIGN1cnJlbnRseSBjb250cm9sbGVkIGJ5IHRoZSBYIGNvZGUsIHNvIHRoaXMgaXMgYQorCSAgIG5vb3AgdW50aWwgbW9kZXNldHRpbmcgc3VwcG9ydCB3b3JrcyBmdWxseSAqLworCWlmICghKHBmaXQgJiBBU0xFX1BGSVRfVkFMSUQpKQorCQlyZXR1cm4gQVNMRV9QRklUX0ZBSUw7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgb3ByZWdpb25fYXNsZV9pbnRyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qgb3ByZWdpb25fYXNsZSAqYXNsZSA9IGRldl9wcml2LT5vcHJlZ2lvbi5hc2xlOworCXUzMiBhc2xlX3N0YXQgPSAwOworCXUzMiBhc2xlX3JlcTsKKworCWlmICghYXNsZSkKKwkJcmV0dXJuOworCisJYXNsZV9yZXEgPSBhc2xlLT5hc2xjICYgQVNMRV9SRVFfTVNLOworCisJaWYgKCFhc2xlX3JlcSkgeworCQlEUk1fREVCVUcoIm5vbiBhc2xlIHNldCByZXF1ZXN0Pz9cbiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKGFzbGVfcmVxICYgQVNMRV9TRVRfQUxTX0lMTFVNKQorCQlhc2xlX3N0YXQgfD0gYXNsZV9zZXRfYWxzX2lsbHVtKGRldiwgYXNsZS0+YWxzaSk7CisKKwlpZiAoYXNsZV9yZXEgJiBBU0xFX1NFVF9CQUNLTElHSFQpCisJCWFzbGVfc3RhdCB8PSBhc2xlX3NldF9iYWNrbGlnaHQoZGV2LCBhc2xlLT5iY2xwKTsKKworCWlmIChhc2xlX3JlcSAmIEFTTEVfU0VUX1BGSVQpCisJCWFzbGVfc3RhdCB8PSBhc2xlX3NldF9wZml0KGRldiwgYXNsZS0+cGZpdCk7CisKKwlpZiAoYXNsZV9yZXEgJiBBU0xFX1NFVF9QV01fRlJFUSkKKwkJYXNsZV9zdGF0IHw9IGFzbGVfc2V0X3B3bV9mcmVxKGRldiwgYXNsZS0+cGZtYik7CisKKwlhc2xlLT5hc2xjID0gYXNsZV9zdGF0OworfQorCisjZGVmaW5lIEFTTEVfQUxTX0VOICAgICgxPDwwKQorI2RlZmluZSBBU0xFX0JMQ19FTiAgICAoMTw8MSkKKyNkZWZpbmUgQVNMRV9QRklUX0VOICAgKDE8PDIpCisjZGVmaW5lIEFTTEVfUEZNQl9FTiAgICgxPDwzKQorCit2b2lkIG9wcmVnaW9uX2VuYWJsZV9hc2xlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qgb3ByZWdpb25fYXNsZSAqYXNsZSA9IGRldl9wcml2LT5vcHJlZ2lvbi5hc2xlOworCisJaWYgKGFzbGUpIHsKKwkJdTMyIHBpcGViX3N0YXRzID0gSTkxNV9SRUFEKFBJUEVCU1RBVCk7CisJCWlmIChJU19NT0JJTEUoZGV2KSkgeworCQkJLyogTWFueSBkZXZpY2VzIHRyaWdnZXIgZXZlbnRzIHdpdGggYSB3cml0ZSB0byB0aGUKKwkJCSAgIGxlZ2FjeSBiYWNrbGlnaHQgY29udHJvbGxlciwgc28gd2UgbmVlZCB0byBlbnN1cmUKKwkJCSAgIHRoYXQgaXQncyBhYmxlIHRvIGdlbmVyYXRlIGludGVycnVwdHMgKi8KKwkJCUk5MTVfV1JJVEUoUElQRUJTVEFULCBwaXBlYl9zdGF0cyB8PQorCQkJCSAgIEk5MTVfTEVHQUNZX0JMQ19FVkVOVF9FTkFCTEUpOworCQkJaTkxNV9lbmFibGVfaXJxKGRldl9wcml2LCBJOTE1X0FTTEVfSU5URVJSVVBUIHwKKwkJCQkJSTkxNV9ESVNQTEFZX1BJUEVfQl9FVkVOVF9JTlRFUlJVUFQpOworCQl9IGVsc2UKKwkJCWk5MTVfZW5hYmxlX2lycShkZXZfcHJpdiwgSTkxNV9BU0xFX0lOVEVSUlVQVCk7CisKKwkJYXNsZS0+dGNoZSA9IEFTTEVfQUxTX0VOIHwgQVNMRV9CTENfRU4gfCBBU0xFX1BGSVRfRU4gfAorCQkJQVNMRV9QRk1CX0VOOworCQlhc2xlLT5hcmR5ID0gMTsKKwl9Cit9CisKKyNkZWZpbmUgQUNQSV9FVl9ESVNQTEFZX1NXSVRDSCAoMTw8MCkKKyNkZWZpbmUgQUNQSV9FVl9MSUQgICAgICAgICAgICAoMTw8MSkKKyNkZWZpbmUgQUNQSV9FVl9ET0NLICAgICAgICAgICAoMTw8MikKKworc3RhdGljIHN0cnVjdCBpbnRlbF9vcHJlZ2lvbiAqc3lzdGVtX29wcmVnaW9uOworCitpbnQgaW50ZWxfb3ByZWdpb25fdmlkZW9fZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyB2YWwsCisJCQkgICAgICAgdm9pZCAqZGF0YSkKK3sKKwkvKiBUaGUgb25seSB2aWRlbyBldmVudHMgcmVsZXZhbnQgdG8gb3ByZWdpb24gYXJlIDB4ODAuIFRoZXNlIGluZGljYXRlCisJICAgZWl0aGVyIGEgZG9ja2luZyBldmVudCwgbGlkIHN3aXRjaCBvciBkaXNwbGF5IHN3aXRjaCByZXF1ZXN0LiBJbgorCSAgIExpbnV4LCB0aGVzZSBhcmUgaGFuZGxlZCBieSB0aGUgZG9jaywgYnV0dG9uIGFuZCB2aWRlbyBkcml2ZXJzLgorCSAgIFdlIG1pZ2h0IHdhbnQgdG8gZml4IHRoZSB2aWRlbyBkcml2ZXIgdG8gYmUgb3ByZWdpb24tYXdhcmUgaW4KKwkgICBmdXR1cmUsIGJ1dCByaWdodCBub3cgd2UganVzdCBpbmRpY2F0ZSB0byB0aGUgZmlybXdhcmUgdGhhdCB0aGUKKwkgICByZXF1ZXN0IGhhcyBiZWVuIGhhbmRsZWQgKi8KKworCXN0cnVjdCBvcHJlZ2lvbl9hY3BpICphY3BpOworCisJaWYgKCFzeXN0ZW1fb3ByZWdpb24pCisJCXJldHVybiBOT1RJRllfRE9ORTsKKworCWFjcGkgPSBzeXN0ZW1fb3ByZWdpb24tPmFjcGk7CisJYWNwaS0+Y3N0cyA9IDA7CisKKwlyZXR1cm4gTk9USUZZX09LOworfQorCitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGludGVsX29wcmVnaW9uX25vdGlmaWVyID0geworCS5ub3RpZmllcl9jYWxsID0gaW50ZWxfb3ByZWdpb25fdmlkZW9fZXZlbnQsCit9OworCitpbnQgaW50ZWxfb3ByZWdpb25faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9ICZkZXZfcHJpdi0+b3ByZWdpb247CisJdm9pZCAqYmFzZTsKKwl1MzIgYXNscywgbWJveGVzOworCWludCBlcnIgPSAwOworCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldi0+cGRldiwgUENJX0FTTFMsICZhc2xzKTsKKwlEUk1fREVCVUcoImdyYXBoaWMgb3ByZWdpb24gcGh5c2ljYWwgYWRkcjogMHgleFxuIiwgYXNscyk7CisJaWYgKGFzbHMgPT0gMCkgeworCQlEUk1fREVCVUcoIkFDUEkgT3BSZWdpb24gbm90IHN1cHBvcnRlZCFcbiIpOworCQlyZXR1cm4gLUVOT1RTVVBQOworCX0KKworCWJhc2UgPSBpb3JlbWFwKGFzbHMsIE9QUkVHSU9OX1NaKTsKKwlpZiAoIWJhc2UpCisJCXJldHVybiAtRU5PTUVNOworCisJb3ByZWdpb24tPmhlYWRlciA9IGJhc2U7CisJaWYgKG1lbWNtcChvcHJlZ2lvbi0+aGVhZGVyLT5zaWduYXR1cmUsIE9QUkVHSU9OX1NJR05BVFVSRSwgMTYpKSB7CisJCURSTV9ERUJVRygib3ByZWdpb24gc2lnbmF0dXJlIG1pc21hdGNoXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBlcnJfb3V0OworCX0KKworCW1ib3hlcyA9IG9wcmVnaW9uLT5oZWFkZXItPm1ib3hlczsKKwlpZiAobWJveGVzICYgTUJPWF9BQ1BJKSB7CisJCURSTV9ERUJVRygiUHVibGljIEFDUEkgbWV0aG9kcyBzdXBwb3J0ZWRcbiIpOworCQlvcHJlZ2lvbi0+YWNwaSA9IGJhc2UgKyBPUFJFR0lPTl9BQ1BJX09GRlNFVDsKKwl9IGVsc2UgeworCQlEUk1fREVCVUcoIlB1YmxpYyBBQ1BJIG1ldGhvZHMgbm90IHN1cHBvcnRlZFxuIik7CisJCWVyciA9IC1FTk9UU1VQUDsKKwkJZ290byBlcnJfb3V0OworCX0KKwlvcHJlZ2lvbi0+ZW5hYmxlZCA9IDE7CisKKwlpZiAobWJveGVzICYgTUJPWF9TV1NDSSkgeworCQlEUk1fREVCVUcoIlNXU0NJIHN1cHBvcnRlZFxuIik7CisJCW9wcmVnaW9uLT5zd3NjaSA9IGJhc2UgKyBPUFJFR0lPTl9TV1NDSV9PRkZTRVQ7CisJfQorCWlmIChtYm94ZXMgJiBNQk9YX0FTTEUpIHsKKwkJRFJNX0RFQlVHKCJBU0xFIHN1cHBvcnRlZFxuIik7CisJCW9wcmVnaW9uLT5hc2xlID0gYmFzZSArIE9QUkVHSU9OX0FTTEVfT0ZGU0VUOworCX0KKworCS8qIE5vdGlmeSBCSU9TIHdlIGFyZSByZWFkeSB0byBoYW5kbGUgQUNQSSB2aWRlbyBleHQgbm90aWZzLgorCSAqIFJpZ2h0IG5vdywgYWxsIHRoZSBldmVudHMgYXJlIGhhbmRsZWQgYnkgdGhlIEFDUEkgdmlkZW8gbW9kdWxlLgorCSAqIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gZG8gYW55dGhpbmcgd2l0aCB0aGVtLiAqLworCW9wcmVnaW9uLT5hY3BpLT5jc3RzID0gMDsKKwlvcHJlZ2lvbi0+YWNwaS0+ZHJkeSA9IDE7CisKKwlzeXN0ZW1fb3ByZWdpb24gPSBvcHJlZ2lvbjsKKwlyZWdpc3Rlcl9hY3BpX25vdGlmaWVyKCZpbnRlbF9vcHJlZ2lvbl9ub3RpZmllcik7CisKKwlyZXR1cm4gMDsKKworZXJyX291dDoKKwlpb3VubWFwKG9wcmVnaW9uLT5oZWFkZXIpOworCW9wcmVnaW9uLT5oZWFkZXIgPSBOVUxMOworCXJldHVybiBlcnI7Cit9CisKK3ZvaWQgaW50ZWxfb3ByZWdpb25fZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9ICZkZXZfcHJpdi0+b3ByZWdpb247CisKKwlpZiAoIW9wcmVnaW9uLT5lbmFibGVkKQorCQlyZXR1cm47CisKKwlvcHJlZ2lvbi0+YWNwaS0+ZHJkeSA9IDA7CisKKwlzeXN0ZW1fb3ByZWdpb24gPSBOVUxMOworCXVucmVnaXN0ZXJfYWNwaV9ub3RpZmllcigmaW50ZWxfb3ByZWdpb25fbm90aWZpZXIpOworCisJLyoganVzdCBjbGVhciBhbGwgb3ByZWdpb24gbWVtb3J5IHBvaW50ZXJzIG5vdyAqLworCWlvdW5tYXAob3ByZWdpb24tPmhlYWRlcik7CisJb3ByZWdpb24tPmhlYWRlciA9IE5VTEw7CisJb3ByZWdpb24tPmFjcGkgPSBOVUxMOworCW9wcmVnaW9uLT5zd3NjaSA9IE5VTEw7CisJb3ByZWdpb24tPmFzbGUgPSBOVUxMOworCisJb3ByZWdpb24tPmVuYWJsZWQgPSAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMyZDlmMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTAsMCArMSwxNDE3IEBACisvKiBDb3B5cmlnaHQgMjAwMyBUdW5nc3RlbiBHcmFwaGljcywgSW5jLiwgQ2VkYXIgUGFyaywgVGV4YXMuCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRVTkdTVEVOIEdSQVBISUNTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX0k5MTVfUkVHX0hfCisjZGVmaW5lIF9JOTE1X1JFR19IXworCisvKgorICogVGhlIEJyaWRnZSBkZXZpY2UncyBQQ0kgY29uZmlnIHNwYWNlIGhhcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIGZiIGFwZXJ0dXJlIHNpemUgYW5kIHRoZSBhbW91bnQgb2YgcHJlLXJlc2VydmVkIG1lbW9yeS4KKyAqLworI2RlZmluZSBJTlRFTF9HTUNIX0NUUkwJCTB4NTIKKyNkZWZpbmUgSU5URUxfR01DSF9FTkFCTEVECTB4NAorI2RlZmluZSBJTlRFTF9HTUNIX01FTV9NQVNLCTB4MQorI2RlZmluZSBJTlRFTF9HTUNIX01FTV82NE0JMHgxCisjZGVmaW5lIElOVEVMX0dNQ0hfTUVNXzEyOE0JMAorCisjZGVmaW5lIElOVEVMXzg1NV9HTUNIX0dNU19NQVNLCQkoMHg3IDw8IDQpCisjZGVmaW5lIElOVEVMXzg1NV9HTUNIX0dNU19ESVNBQkxFRAkoMHgwIDw8IDQpCisjZGVmaW5lIElOVEVMXzg1NV9HTUNIX0dNU19TVE9MRU5fMU0JKDB4MSA8PCA0KQorI2RlZmluZSBJTlRFTF84NTVfR01DSF9HTVNfU1RPTEVOXzRNCSgweDIgPDwgNCkKKyNkZWZpbmUgSU5URUxfODU1X0dNQ0hfR01TX1NUT0xFTl84TQkoMHgzIDw8IDQpCisjZGVmaW5lIElOVEVMXzg1NV9HTUNIX0dNU19TVE9MRU5fMTZNCSgweDQgPDwgNCkKKyNkZWZpbmUgSU5URUxfODU1X0dNQ0hfR01TX1NUT0xFTl8zMk0JKDB4NSA8PCA0KQorCisjZGVmaW5lIElOVEVMXzkxNUdfR01DSF9HTVNfU1RPTEVOXzQ4TQkoMHg2IDw8IDQpCisjZGVmaW5lIElOVEVMXzkxNUdfR01DSF9HTVNfU1RPTEVOXzY0TQkoMHg3IDw8IDQpCisKKy8qIFBDSSBjb25maWcgc3BhY2UgKi8KKworI2RlZmluZSBIUExMQ0MJMHhjMCAvKiA4NTUgb25seSAqLworI2RlZmluZSAgIEdDX0NMT0NLX0NPTlRST0xfTUFTSwkJKDMgPDwgMCkKKyNkZWZpbmUgICBHQ19DTE9DS18xMzNfMjAwCQkoMCA8PCAwKQorI2RlZmluZSAgIEdDX0NMT0NLXzEwMF8yMDAJCSgxIDw8IDApCisjZGVmaW5lICAgR0NfQ0xPQ0tfMTAwXzEzMwkJKDIgPDwgMCkKKyNkZWZpbmUgICBHQ19DTE9DS18xNjZfMjUwCQkoMyA8PCAwKQorI2RlZmluZSBHQ0ZHQwkweGYwIC8qIDkxNSsgb25seSAqLworI2RlZmluZSAgIEdDX0xPV19GUkVRVUVOQ1lfRU5BQkxFCSgxIDw8IDcpCisjZGVmaW5lICAgR0NfRElTUExBWV9DTE9DS18xOTBfMjAwX01IWgkoMCA8PCA0KQorI2RlZmluZSAgIEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWgkoNCA8PCA0KQorI2RlZmluZSAgIEdDX0RJU1BMQVlfQ0xPQ0tfTUFTSwkJKDcgPDwgNCkKKyNkZWZpbmUgTEJCCTB4ZjQKKworLyogVkdBIHN0dWZmICovCisKKyNkZWZpbmUgVkdBX1NUMDFfTURBIDB4M2JhCisjZGVmaW5lIFZHQV9TVDAxX0NHQSAweDNkYQorCisjZGVmaW5lIFZHQV9NU1JfV1JJVEUgMHgzYzIKKyNkZWZpbmUgVkdBX01TUl9SRUFEIDB4M2NjCisjZGVmaW5lICAgVkdBX01TUl9NRU1fRU4gKDE8PDEpCisjZGVmaW5lICAgVkdBX01TUl9DR0FfTU9ERSAoMTw8MCkKKworI2RlZmluZSBWR0FfU1JfSU5ERVggMHgzYzQKKyNkZWZpbmUgVkdBX1NSX0RBVEEgMHgzYzUKKworI2RlZmluZSBWR0FfQVJfSU5ERVggMHgzYzAKKyNkZWZpbmUgICBWR0FfQVJfVklEX0VOICgxPDw1KQorI2RlZmluZSBWR0FfQVJfREFUQV9XUklURSAweDNjMAorI2RlZmluZSBWR0FfQVJfREFUQV9SRUFEIDB4M2MxCisKKyNkZWZpbmUgVkdBX0dSX0lOREVYIDB4M2NlCisjZGVmaW5lIFZHQV9HUl9EQVRBIDB4M2NmCisvKiBHUjA1ICovCisjZGVmaW5lICAgVkdBX0dSX01FTV9SRUFEX01PREVfU0hJRlQgMworI2RlZmluZSAgICAgVkdBX0dSX01FTV9SRUFEX01PREVfUExBTkUgMQorLyogR1IwNiAqLworI2RlZmluZSAgIFZHQV9HUl9NRU1fTU9ERV9NQVNLIDB4YworI2RlZmluZSAgIFZHQV9HUl9NRU1fTU9ERV9TSElGVCAyCisjZGVmaW5lICAgVkdBX0dSX01FTV9BMDAwMF9BRkZGRiAwCisjZGVmaW5lICAgVkdBX0dSX01FTV9BMDAwMF9CRkZGRiAxCisjZGVmaW5lICAgVkdBX0dSX01FTV9CMDAwMF9CN0ZGRiAyCisjZGVmaW5lICAgVkdBX0dSX01FTV9CMDAwMF9CRkZGRiAzCisKKyNkZWZpbmUgVkdBX0RBQ01BU0sgMHgzYzYKKyNkZWZpbmUgVkdBX0RBQ1JYIDB4M2M3CisjZGVmaW5lIFZHQV9EQUNXWCAweDNjOAorI2RlZmluZSBWR0FfREFDREFUQSAweDNjOQorCisjZGVmaW5lIFZHQV9DUl9JTkRFWF9NREEgMHgzYjQKKyNkZWZpbmUgVkdBX0NSX0RBVEFfTURBIDB4M2I1CisjZGVmaW5lIFZHQV9DUl9JTkRFWF9DR0EgMHgzZDQKKyNkZWZpbmUgVkdBX0NSX0RBVEFfQ0dBIDB4M2Q1CisKKy8qCisgKiBNZW1vcnkgaW50ZXJmYWNlIGluc3RydWN0aW9ucyB1c2VkIGJ5IHRoZSBrZXJuZWwKKyAqLworI2RlZmluZSBNSV9JTlNUUihvcGNvZGUsIGZsYWdzKSAoKChvcGNvZGUpIDw8IDIzKSB8IChmbGFncykpCisKKyNkZWZpbmUgTUlfTk9PUAkJCU1JX0lOU1RSKDAsIDApCisjZGVmaW5lIE1JX1VTRVJfSU5URVJSVVBUCU1JX0lOU1RSKDB4MDIsIDApCisjZGVmaW5lIE1JX1dBSVRfRk9SX0VWRU5UICAgICAgIE1JX0lOU1RSKDB4MDMsIDApCisjZGVmaW5lICAgTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQICAgICAgKDE8PDYpCisjZGVmaW5lICAgTUlfV0FJVF9GT1JfUExBTkVfQV9GTElQICAgICAgKDE8PDIpCisjZGVmaW5lICAgTUlfV0FJVF9GT1JfUExBTkVfQV9TQ0FOTElORVMgKDE8PDEpCisjZGVmaW5lIE1JX0ZMVVNICQlNSV9JTlNUUigweDA0LCAwKQorI2RlZmluZSAgIE1JX1JFQURfRkxVU0gJCSgxIDw8IDApCisjZGVmaW5lICAgTUlfRVhFX0ZMVVNICQkoMSA8PCAxKQorI2RlZmluZSAgIE1JX05PX1dSSVRFX0ZMVVNICSgxIDw8IDIpCisjZGVmaW5lICAgTUlfU0NFTkVfQ09VTlQJKDEgPDwgMykgLyoganVzdCBpbmNyZW1lbnQgc2NlbmUgY291bnQgKi8KKyNkZWZpbmUgICBNSV9FTkRfU0NFTkUJCSgxIDw8IDQpIC8qIGZsdXNoIGJpbm5lciBhbmQgaW5jciBzY2VuZSBjb3VudCAqLworI2RlZmluZSBNSV9CQVRDSF9CVUZGRVJfRU5ECU1JX0lOU1RSKDB4MGEsIDApCisjZGVmaW5lIE1JX1JFUE9SVF9IRUFECQlNSV9JTlNUUigweDA3LCAwKQorI2RlZmluZSBNSV9MT0FEX1NDQU5fTElORVNfSU5DTCBNSV9JTlNUUigweDEyLCAwKQorI2RlZmluZSBNSV9TVE9SRV9EV09SRF9JTU0JTUlfSU5TVFIoMHgyMCwgMSkKKyNkZWZpbmUgICBNSV9NRU1fVklSVFVBTAkoMSA8PCAyMikgLyogOTY1KyBvbmx5ICovCisjZGVmaW5lIE1JX1NUT1JFX0RXT1JEX0lOREVYCU1JX0lOU1RSKDB4MjEsIDEpCisjZGVmaW5lICAgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQgMgorI2RlZmluZSBNSV9MT0FEX1JFR0lTVEVSX0lNTQlNSV9JTlNUUigweDIyLCAxKQorI2RlZmluZSBNSV9CQVRDSF9CVUZGRVIJCU1JX0lOU1RSKDB4MzAsIDEpCisjZGVmaW5lICAgTUlfQkFUQ0hfTk9OX1NFQ1VSRQkoMSkKKyNkZWZpbmUgICBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUgKDE8PDgpCisjZGVmaW5lIE1JX0JBVENIX0JVRkZFUl9TVEFSVAlNSV9JTlNUUigweDMxLCAwKQorCisvKgorICogM0QgaW5zdHJ1Y3Rpb25zIHVzZWQgYnkgdGhlIGtlcm5lbAorICovCisjZGVmaW5lIEdGWF9JTlNUUihvcGNvZGUsIGZsYWdzKSAoKDB4MyA8PCAyOSkgfCAoKG9wY29kZSkgPDwgMjQpIHwgKGZsYWdzKSkKKworI2RlZmluZSBHRlhfT1BfUkFTVEVSX1JVTEVTICAgICgoMHgzPDwyOSl8KDB4Nzw8MjQpKQorI2RlZmluZSBHRlhfT1BfU0NJU1NPUiAgICAgICAgICgoMHgzPDwyOSl8KDB4MWM8PDI0KXwoMHgxMDw8MTkpKQorI2RlZmluZSAgIFNDX1VQREFURV9TQ0lTU09SICAgICAgICgweDE8PDEpCisjZGVmaW5lICAgU0NfRU5BQkxFX01BU0sgICAgICAgICAgKDB4MTw8MCkKKyNkZWZpbmUgICBTQ19FTkFCTEUgICAgICAgICAgICAgICAoMHgxPDwwKQorI2RlZmluZSBHRlhfT1BfTE9BRF9JTkRJUkVDVCAgICgoMHgzPDwyOSl8KDB4MWQ8PDI0KXwoMHg3PDwxNikpCisjZGVmaW5lIEdGWF9PUF9TQ0lTU09SX0lORk8gICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgxPDwxNil8KDB4MSkpCisjZGVmaW5lICAgU0NJX1lNSU5fTUFTSyAgICAgICgweGZmZmY8PDE2KQorI2RlZmluZSAgIFNDSV9YTUlOX01BU0sgICAgICAoMHhmZmZmPDwwKQorI2RlZmluZSAgIFNDSV9ZTUFYX01BU0sgICAgICAoMHhmZmZmPDwxNikKKyNkZWZpbmUgICBTQ0lfWE1BWF9NQVNLICAgICAgKDB4ZmZmZjw8MCkKKyNkZWZpbmUgR0ZYX09QX1NDSVNTT1JfRU5BQkxFCSAoKDB4Mzw8MjkpfCgweDFjPDwyNCl8KDB4MTA8PDE5KSkKKyNkZWZpbmUgR0ZYX09QX1NDSVNTT1JfUkVDVAkgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgxPDwxNil8MSkKKyNkZWZpbmUgR0ZYX09QX0NPTE9SX0ZBQ1RPUiAgICAgICgoMHgzPDwyOSl8KDB4MWQ8PDI0KXwoMHgxPDwxNil8MHgwKQorI2RlZmluZSBHRlhfT1BfU1RJUFBMRSAgICAgICAgICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgzPDwxNikpCisjZGVmaW5lIEdGWF9PUF9NQVBfSU5GTyAgICAgICAgICAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8MHg0KQorI2RlZmluZSBHRlhfT1BfREVTVEJVRkZFUl9WQVJTICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDg1PDwxNil8MHgwKQorI2RlZmluZSBHRlhfT1BfREVTVEJVRkZFUl9JTkZPCSAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8KDB4OGU8PDE2KXwxKQorI2RlZmluZSBHRlhfT1BfRFJBV1JFQ1RfSU5GTyAgICAgKCgweDM8PDI5KXwoMHgxZDw8MjQpfCgweDgwPDwxNil8KDB4MykpCisjZGVmaW5lIEdGWF9PUF9EUkFXUkVDVF9JTkZPX0k5NjUgICgoMHg3OTAwPDwxNil8MHgyKQorI2RlZmluZSBTUkNfQ09QWV9CTFRfQ01EICAgICAgICAgICAgICAgICgoMjw8MjkpfCgweDQzPDwyMil8NCkKKyNkZWZpbmUgWFlfU1JDX0NPUFlfQkxUX0NNRAkJKCgyPDwyOSl8KDB4NTM8PDIyKXw2KQorI2RlZmluZSBYWV9NT05PX1NSQ19DT1BZX0lNTV9CTFQJKCgyPDwyOSl8KDB4NzE8PDIyKXw1KQorI2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEJKDE8PDIxKQorI2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCCSgxPDwyMCkKKyNkZWZpbmUgICBCTFRfREVQVEhfOAkJCSgwPDwyNCkKKyNkZWZpbmUgICBCTFRfREVQVEhfMTZfNTY1CQkoMTw8MjQpCisjZGVmaW5lICAgQkxUX0RFUFRIXzE2XzE1NTUJCSgyPDwyNCkKKyNkZWZpbmUgICBCTFRfREVQVEhfMzIJCQkoMzw8MjQpCisjZGVmaW5lICAgQkxUX1JPUF9HWENPUFkJCSgweGNjPDwxNikKKyNkZWZpbmUgWFlfU1JDX0NPUFlfQkxUX1NSQ19USUxFRAkoMTw8MTUpIC8qIDk2NSsgb25seSAqLworI2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfRFNUX1RJTEVECSgxPDwxMSkgLyogOTY1KyBvbmx5ICovCisjZGVmaW5lIENNRF9PUF9ESVNQTEFZQlVGRkVSX0lORk8gKCgweDA8PDI5KXwoMHgxNDw8MjMpfDIpCisjZGVmaW5lICAgQVNZTkNfRkxJUCAgICAgICAgICAgICAgICAoMTw8MjIpCisjZGVmaW5lICAgRElTUExBWV9QTEFORV9BICAgICAgICAgICAoMDw8MjApCisjZGVmaW5lICAgRElTUExBWV9QTEFORV9CICAgICAgICAgICAoMTw8MjApCisKKy8qCisgKiBJbnN0cnVjdGlvbiBhbmQgaW50ZXJydXB0IGNvbnRyb2wgcmVncworICovCisKKyNkZWZpbmUgUFJCMF9UQUlMCTB4MDIwMzAKKyNkZWZpbmUgUFJCMF9IRUFECTB4MDIwMzQKKyNkZWZpbmUgUFJCMF9TVEFSVAkweDAyMDM4CisjZGVmaW5lIFBSQjBfQ1RMCTB4MDIwM2MKKyNkZWZpbmUgICBUQUlMX0FERFIJCTB4MDAxRkZGRjgKKyNkZWZpbmUgICBIRUFEX1dSQVBfQ09VTlQJMHhGRkUwMDAwMAorI2RlZmluZSAgIEhFQURfV1JBUF9PTkUJCTB4MDAyMDAwMDAKKyNkZWZpbmUgICBIRUFEX0FERFIJCTB4MDAxRkZGRkMKKyNkZWZpbmUgICBSSU5HX05SX1BBR0VTCQkweDAwMUZGMDAwCisjZGVmaW5lICAgUklOR19SRVBPUlRfTUFTSwkweDAwMDAwMDA2CisjZGVmaW5lICAgUklOR19SRVBPUlRfNjRLCTB4MDAwMDAwMDIKKyNkZWZpbmUgICBSSU5HX1JFUE9SVF8xMjhLCTB4MDAwMDAwMDQKKyNkZWZpbmUgICBSSU5HX05PX1JFUE9SVAkweDAwMDAwMDAwCisjZGVmaW5lICAgUklOR19WQUxJRF9NQVNLCTB4MDAwMDAwMDEKKyNkZWZpbmUgICBSSU5HX1ZBTElECQkweDAwMDAwMDAxCisjZGVmaW5lICAgUklOR19JTlZBTElECQkweDAwMDAwMDAwCisjZGVmaW5lIFBSQjFfVEFJTAkweDAyMDQwIC8qIDkxNSsgb25seSAqLworI2RlZmluZSBQUkIxX0hFQUQJMHgwMjA0NCAvKiA5MTUrIG9ubHkgKi8KKyNkZWZpbmUgUFJCMV9TVEFSVAkweDAyMDQ4IC8qIDkxNSsgb25seSAqLworI2RlZmluZSBQUkIxX0NUTAkweDAyMDRjIC8qIDkxNSsgb25seSAqLworI2RlZmluZSBBQ1RIRF9JOTY1CTB4MDIwNzQKKyNkZWZpbmUgSFdTX1BHQQkJMHgwMjA4MAorI2RlZmluZSBIV1NfQUREUkVTU19NQVNLCTB4ZmZmZmYwMDAKKyNkZWZpbmUgSFdTX1NUQVJUX0FERFJFU1NfU0hJRlQJNAorI2RlZmluZSBJUEVJUgkJMHgwMjA4OAorI2RlZmluZSBOT1BJRAkJMHgwMjA5NAorI2RlZmluZSBIV1NUQU0JCTB4MDIwOTgKKyNkZWZpbmUgU0NQRDAJCTB4MDIwOWMgLyogOTE1KyBvbmx5ICovCisjZGVmaW5lIElFUgkJMHgwMjBhMAorI2RlZmluZSBJSVIJCTB4MDIwYTQKKyNkZWZpbmUgSU1SCQkweDAyMGE4CisjZGVmaW5lIElTUgkJMHgwMjBhYworI2RlZmluZSAgIEk5MTVfUElQRV9DT05UUk9MX05PVElGWV9JTlRFUlJVUFQJCSgxPDwxOCkKKyNkZWZpbmUgICBJOTE1X0RJU1BMQVlfUE9SVF9JTlRFUlJVUFQJCQkoMTw8MTcpCisjZGVmaW5lICAgSTkxNV9SRU5ERVJfQ09NTUFORF9QQVJTRVJfRVJST1JfSU5URVJSVVBUCSgxPDwxNSkKKyNkZWZpbmUgICBJOTE1X0dNQ0hfVEhFUk1BTF9TRU5TT1JfRVZFTlRfSU5URVJSVVBUCSgxPDwxNCkKKyNkZWZpbmUgICBJOTE1X0hXQl9PT01fSU5URVJSVVBUCQkJKDE8PDEzKQorI2RlZmluZSAgIEk5MTVfU1lOQ19TVEFUVVNfSU5URVJSVVBUCQkJKDE8PDEyKQorI2RlZmluZSAgIEk5MTVfRElTUExBWV9QTEFORV9BX0ZMSVBfUEVORElOR19JTlRFUlJVUFQJKDE8PDExKQorI2RlZmluZSAgIEk5MTVfRElTUExBWV9QTEFORV9CX0ZMSVBfUEVORElOR19JTlRFUlJVUFQJKDE8PDEwKQorI2RlZmluZSAgIEk5MTVfT1ZFUkxBWV9QTEFORV9GTElQX1BFTkRJTkdfSU5URVJSVVBUCSgxPDw5KQorI2RlZmluZSAgIEk5MTVfRElTUExBWV9QTEFORV9DX0ZMSVBfUEVORElOR19JTlRFUlJVUFQJKDE8PDgpCisjZGVmaW5lICAgSTkxNV9ESVNQTEFZX1BJUEVfQV9WQkxBTktfSU5URVJSVVBUCQkoMTw8NykKKyNkZWZpbmUgICBJOTE1X0RJU1BMQVlfUElQRV9BX0VWRU5UX0lOVEVSUlVQVAkJKDE8PDYpCisjZGVmaW5lICAgSTkxNV9ESVNQTEFZX1BJUEVfQl9WQkxBTktfSU5URVJSVVBUCQkoMTw8NSkKKyNkZWZpbmUgICBJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5UX0lOVEVSUlVQVAkJKDE8PDQpCisjZGVmaW5lICAgSTkxNV9ERUJVR19JTlRFUlJVUFQJCQkJKDE8PDIpCisjZGVmaW5lICAgSTkxNV9VU0VSX0lOVEVSUlVQVAkJCQkoMTw8MSkKKyNkZWZpbmUgICBJOTE1X0FTTEVfSU5URVJSVVBUCQkJCSgxPDwwKQorI2RlZmluZSBFSVIJCTB4MDIwYjAKKyNkZWZpbmUgRU1SCQkweDAyMGI0CisjZGVmaW5lIEVTUgkJMHgwMjBiOAorI2RlZmluZSBJTlNUUE0JICAgICAgICAweDAyMGMwCisjZGVmaW5lIEFDVEhECSAgICAgICAgMHgwMjBjOAorI2RlZmluZSBGV19CTEMJCTB4MDIwZDgKKyNkZWZpbmUgRldfQkxDX1NFTEYJMHgwMjBlMCAvKiA5MTUrIG9ubHkgKi8KKyNkZWZpbmUgTUlfQVJCX1NUQVRFCTB4MDIwZTQgLyogOTE1KyBvbmx5ICovCisjZGVmaW5lIENBQ0hFX01PREVfMAkweDAyMTIwIC8qIDkxNSsgb25seSAqLworI2RlZmluZSAgIENNMF9NQVNLX1NISUZUICAgICAgICAgIDE2CisjZGVmaW5lICAgQ00wX0laX09QVF9ESVNBQkxFICAgICAgKDE8PDYpCisjZGVmaW5lICAgQ00wX1pSX09QVF9ESVNBQkxFICAgICAgKDE8PDUpCisjZGVmaW5lICAgQ00wX0RFUFRIX0VWSUNUX0RJU0FCTEUgKDE8PDQpCisjZGVmaW5lICAgQ00wX0NPTE9SX0VWSUNUX0RJU0FCTEUgKDE8PDMpCisjZGVmaW5lICAgQ00wX0RFUFRIX1dSSVRFX0RJU0FCTEUgKDE8PDEpCisjZGVmaW5lICAgQ00wX1JDX09QX0ZMVVNIX0RJU0FCTEUgKDE8PDApCisjZGVmaW5lIEdGWF9GTFNIX0NOVEwJMHgwMjE3MCAvKiA5MTUrIG9ubHkgKi8KKworLyoKKyAqIEZyYW1lYnVmZmVyIGNvbXByZXNzaW9uICg5MTUrIG9ubHkpCisgKi8KKworI2RlZmluZSBGQkNfQ0ZCX0JBU0UJCTB4MDMyMDAgLyogNGsgcGFnZSBhbGlnbmVkICovCisjZGVmaW5lIEZCQ19MTF9CQVNFCQkweDAzMjA0IC8qIDRrIHBhZ2UgYWxpZ25lZCAqLworI2RlZmluZSBGQkNfQ09OVFJPTAkJMHgwMzIwOAorI2RlZmluZSAgIEZCQ19DVExfRU4JCSgxPDwzMSkKKyNkZWZpbmUgICBGQkNfQ1RMX1BFUklPRElDCSgxPDwzMCkKKyNkZWZpbmUgICBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUICgxNikKKyNkZWZpbmUgICBGQkNfQ1RMX1VOQ09NUFJFU1NJQkxFICgxPDwxNCkKKyNkZWZpbmUgICBGQkNfQ1RMX1NUUklERV9TSElGVAkoNSkKKyNkZWZpbmUgICBGQkNfQ1RMX0ZFTkNFTk8JKDE8PDApCisjZGVmaW5lIEZCQ19DT01NQU5ECQkweDAzMjBjCisjZGVmaW5lICAgRkJDX0NNRF9DT01QUkVTUwkoMTw8MCkKKyNkZWZpbmUgRkJDX1NUQVRVUwkJMHgwMzIxMAorI2RlZmluZSAgIEZCQ19TVEFUX0NPTVBSRVNTSU5HCSgxPDwzMSkKKyNkZWZpbmUgICBGQkNfU1RBVF9DT01QUkVTU0VECSgxPDwzMCkKKyNkZWZpbmUgICBGQkNfU1RBVF9NT0RJRklFRAkoMTw8MjkpCisjZGVmaW5lICAgRkJDX1NUQVRfQ1VSUkVOVF9MSU5FCSgxPDwwKQorI2RlZmluZSBGQkNfQ09OVFJPTDIJCTB4MDMyMTQKKyNkZWZpbmUgICBGQkNfQ1RMX0ZFTkNFX0RCTAkoMDw8NCkKKyNkZWZpbmUgICBGQkNfQ1RMX0lETEVfSU1NCSgwPDwyKQorI2RlZmluZSAgIEZCQ19DVExfSURMRV9GVUxMCSgxPDwyKQorI2RlZmluZSAgIEZCQ19DVExfSURMRV9MSU5FCSgyPDwyKQorI2RlZmluZSAgIEZCQ19DVExfSURMRV9ERUJVRwkoMzw8MikKKyNkZWZpbmUgICBGQkNfQ1RMX0NQVV9GRU5DRQkoMTw8MSkKKyNkZWZpbmUgICBGQkNfQ1RMX1BMQU5FQQkoMDw8MCkKKyNkZWZpbmUgICBGQkNfQ1RMX1BMQU5FQgkoMTw8MCkKKyNkZWZpbmUgRkJDX0ZFTkNFX09GRgkJMHgwMzIxYgorCisjZGVmaW5lIEZCQ19MTF9TSVpFCQkoMTUzNikKKworLyoKKyAqIEdQSU8gcmVncworICovCisjZGVmaW5lIEdQSU9BCQkJMHg1MDEwCisjZGVmaW5lIEdQSU9CCQkJMHg1MDE0CisjZGVmaW5lIEdQSU9DCQkJMHg1MDE4CisjZGVmaW5lIEdQSU9ECQkJMHg1MDFjCisjZGVmaW5lIEdQSU9FCQkJMHg1MDIwCisjZGVmaW5lIEdQSU9GCQkJMHg1MDI0CisjZGVmaW5lIEdQSU9HCQkJMHg1MDI4CisjZGVmaW5lIEdQSU9ICQkJMHg1MDJjCisjIGRlZmluZSBHUElPX0NMT0NLX0RJUl9NQVNLCQkoMSA8PCAwKQorIyBkZWZpbmUgR1BJT19DTE9DS19ESVJfSU4JCSgwIDw8IDEpCisjIGRlZmluZSBHUElPX0NMT0NLX0RJUl9PVVQJCSgxIDw8IDEpCisjIGRlZmluZSBHUElPX0NMT0NLX1ZBTF9NQVNLCQkoMSA8PCAyKQorIyBkZWZpbmUgR1BJT19DTE9DS19WQUxfT1VUCQkoMSA8PCAzKQorIyBkZWZpbmUgR1BJT19DTE9DS19WQUxfSU4JCSgxIDw8IDQpCisjIGRlZmluZSBHUElPX0NMT0NLX1BVTExVUF9ESVNBQkxFCSgxIDw8IDUpCisjIGRlZmluZSBHUElPX0RBVEFfRElSX01BU0sJCSgxIDw8IDgpCisjIGRlZmluZSBHUElPX0RBVEFfRElSX0lOCQkoMCA8PCA5KQorIyBkZWZpbmUgR1BJT19EQVRBX0RJUl9PVVQJCSgxIDw8IDkpCisjIGRlZmluZSBHUElPX0RBVEFfVkFMX01BU0sJCSgxIDw8IDEwKQorIyBkZWZpbmUgR1BJT19EQVRBX1ZBTF9PVVQJCSgxIDw8IDExKQorIyBkZWZpbmUgR1BJT19EQVRBX1ZBTF9JTgkJKDEgPDwgMTIpCisjIGRlZmluZSBHUElPX0RBVEFfUFVMTFVQX0RJU0FCTEUJKDEgPDwgMTMpCisKKy8qCisgKiBDbG9jayBjb250cm9sICYgcG93ZXIgbWFuYWdlbWVudAorICovCisKKyNkZWZpbmUgVkdBMAkweDYwMDAKKyNkZWZpbmUgVkdBMQkweDYwMDQKKyNkZWZpbmUgVkdBX1BECTB4NjAxMAorI2RlZmluZSAgIFZHQTBfUERfUDJfRElWXzQJKDEgPDwgNykKKyNkZWZpbmUgICBWR0EwX1BEX1AxX0RJVl8yCSgxIDw8IDUpCisjZGVmaW5lICAgVkdBMF9QRF9QMV9TSElGVAkwCisjZGVmaW5lICAgVkdBMF9QRF9QMV9NQVNLCSgweDFmIDw8IDApCisjZGVmaW5lICAgVkdBMV9QRF9QMl9ESVZfNAkoMSA8PCAxNSkKKyNkZWZpbmUgICBWR0ExX1BEX1AxX0RJVl8yCSgxIDw8IDEzKQorI2RlZmluZSAgIFZHQTFfUERfUDFfU0hJRlQJOAorI2RlZmluZSAgIFZHQTFfUERfUDFfTUFTSwkoMHgxZiA8PCA4KQorI2RlZmluZSBEUExMX0EJMHgwNjAxNAorI2RlZmluZSBEUExMX0IJMHgwNjAxOAorI2RlZmluZSAgIERQTExfVkNPX0VOQUJMRQkJKDEgPDwgMzEpCisjZGVmaW5lICAgRFBMTF9EVk9fSElHSF9TUEVFRAkJKDEgPDwgMzApCisjZGVmaW5lICAgRFBMTF9TWU5DTE9DS19FTkFCTEUJCSgxIDw8IDI5KQorI2RlZmluZSAgIERQTExfVkdBX01PREVfRElTCQkoMSA8PCAyOCkKKyNkZWZpbmUgICBEUExMQl9NT0RFX0RBQ19TRVJJQUwJCSgxIDw8IDI2KSAvKiBpOTE1ICovCisjZGVmaW5lICAgRFBMTEJfTU9ERV9MVkRTCQkoMiA8PCAyNikgLyogaTkxNSAqLworI2RlZmluZSAgIERQTExfTU9ERV9NQVNLCQkoMyA8PCAyNikKKyNkZWZpbmUgICBEUExMX0RBQ19TRVJJQUxfUDJfQ0xPQ0tfRElWXzEwICgwIDw8IDI0KSAvKiBpOTE1ICovCisjZGVmaW5lICAgRFBMTF9EQUNfU0VSSUFMX1AyX0NMT0NLX0RJVl81ICgxIDw8IDI0KSAvKiBpOTE1ICovCisjZGVmaW5lICAgRFBMTEJfTFZEU19QMl9DTE9DS19ESVZfMTQJKDAgPDwgMjQpIC8qIGk5MTUgKi8KKyNkZWZpbmUgICBEUExMQl9MVkRTX1AyX0NMT0NLX0RJVl83CSgxIDw8IDI0KSAvKiBpOTE1ICovCisjZGVmaW5lICAgRFBMTF9QMl9DTE9DS19ESVZfTUFTSwkweDAzMDAwMDAwIC8qIGk5MTUgKi8KKyNkZWZpbmUgICBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX01BU0sJMHgwMGZmMDAwMCAvKiBpOTE1ICovCisKKyNkZWZpbmUgSTkxNV9GSUZPX1VOREVSUlVOX1NUQVRVUwkJKDFVTDw8MzEpCisjZGVmaW5lIEk5MTVfQ1JDX0VSUk9SX0VOQUJMRQkJCSgxVUw8PDI5KQorI2RlZmluZSBJOTE1X0NSQ19ET05FX0VOQUJMRQkJCSgxVUw8PDI4KQorI2RlZmluZSBJOTE1X0dNQlVTX0VWRU5UX0VOQUJMRQkJCSgxVUw8PDI3KQorI2RlZmluZSBJOTE1X1ZTWU5DX0lOVEVSUlVQVF9FTkFCTEUJCSgxVUw8PDI1KQorI2RlZmluZSBJOTE1X0RJU1BMQVlfTElORV9DT01QQVJFX0VOQUJMRQkoMVVMPDwyNCkKKyNkZWZpbmUgSTkxNV9EUFNUX0VWRU5UX0VOQUJMRQkJCSgxVUw8PDIzKQorI2RlZmluZSBJOTE1X0xFR0FDWV9CTENfRVZFTlRfRU5BQkxFCQkoMVVMPDwyMikKKyNkZWZpbmUgSTkxNV9PRERfRklFTERfSU5URVJSVVBUX0VOQUJMRQkJKDFVTDw8MjEpCisjZGVmaW5lIEk5MTVfRVZFTl9GSUVMRF9JTlRFUlJVUFRfRU5BQkxFCSgxVUw8PDIwKQorI2RlZmluZSBJOTE1X1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfRU5BQkxFCSgxVUw8PDE4KQkvKiA5NjUgb3IgbGF0ZXIgKi8KKyNkZWZpbmUgSTkxNV9WQkxBTktfSU5URVJSVVBUX0VOQUJMRQkJKDFVTDw8MTcpCisjZGVmaW5lIEk5MTVfT1ZFUkxBWV9VUERBVEVEX0VOQUJMRQkJKDFVTDw8MTYpCisjZGVmaW5lIEk5MTVfQ1JDX0VSUk9SX0lOVEVSUlVQVF9TVEFUVVMJCSgxVUw8PDEzKQorI2RlZmluZSBJOTE1X0NSQ19ET05FX0lOVEVSUlVQVF9TVEFUVVMJCSgxVUw8PDEyKQorI2RlZmluZSBJOTE1X0dNQlVTX0lOVEVSUlVQVF9TVEFUVVMJCSgxVUw8PDExKQorI2RlZmluZSBJOTE1X1ZTWU5DX0lOVEVSUlVQVF9TVEFUVVMJCSgxVUw8PDkpCisjZGVmaW5lIEk5MTVfRElTUExBWV9MSU5FX0NPTVBBUkVfU1RBVFVTCSgxVUw8PDgpCisjZGVmaW5lIEk5MTVfRFBTVF9FVkVOVF9TVEFUVVMJCQkoMVVMPDw3KQorI2RlZmluZSBJOTE1X0xFR0FDWV9CTENfRVZFTlRfU1RBVFVTCQkoMVVMPDw2KQorI2RlZmluZSBJOTE1X09ERF9GSUVMRF9JTlRFUlJVUFRfU1RBVFVTCQkoMVVMPDw1KQorI2RlZmluZSBJOTE1X0VWRU5fRklFTERfSU5URVJSVVBUX1NUQVRVUwkoMVVMPDw0KQorI2RlZmluZSBJOTE1X1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTCSgxVUw8PDIpCS8qIDk2NSBvciBsYXRlciAqLworI2RlZmluZSBJOTE1X1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTCQkoMVVMPDwxKQorI2RlZmluZSBJOTE1X09WRVJMQVlfVVBEQVRFRF9TVEFUVVMJCSgxVUw8PDApCisKKyNkZWZpbmUgU1JYX0lOREVYCQkweDNjNAorI2RlZmluZSBTUlhfREFUQQkJMHgzYzUKKyNkZWZpbmUgU1IwMQkJCTEKKyNkZWZpbmUgU1IwMV9TQ1JFRU5fT0ZGCQkoMTw8NSkKKworI2RlZmluZSBQUENSCQkJMHg2MTIwNAorI2RlZmluZSBQUENSX09OCQkJKDE8PDApCisKKyNkZWZpbmUgRFZPQgkJCTB4NjExNDAKKyNkZWZpbmUgRFZPQl9PTgkJCSgxPDwzMSkKKyNkZWZpbmUgRFZPQwkJCTB4NjExNjAKKyNkZWZpbmUgRFZPQ19PTgkJCSgxPDwzMSkKKyNkZWZpbmUgTFZEUwkJCTB4NjExODAKKyNkZWZpbmUgTFZEU19PTgkJCSgxPDwzMSkKKworI2RlZmluZSBBRFBBCQkJMHg2MTEwMAorI2RlZmluZSBBRFBBX0RQTVNfTUFTSwkJKH4oMzw8MTApKQorI2RlZmluZSBBRFBBX0RQTVNfT04JCSgwPDwxMCkKKyNkZWZpbmUgQURQQV9EUE1TX1NVU1BFTkQJKDE8PDEwKQorI2RlZmluZSBBRFBBX0RQTVNfU1RBTkRCWQkoMjw8MTApCisjZGVmaW5lIEFEUEFfRFBNU19PRkYJCSgzPDwxMCkKKworI2RlZmluZSBSSU5HX1RBSUwJCTB4MDAKKyNkZWZpbmUgVEFJTF9BRERSCQkweDAwMUZGRkY4CisjZGVmaW5lIFJJTkdfSEVBRAkJMHgwNAorI2RlZmluZSBIRUFEX1dSQVBfQ09VTlQJCTB4RkZFMDAwMDAKKyNkZWZpbmUgSEVBRF9XUkFQX09ORQkJMHgwMDIwMDAwMAorI2RlZmluZSBIRUFEX0FERFIJCTB4MDAxRkZGRkMKKyNkZWZpbmUgUklOR19TVEFSVAkJMHgwOAorI2RlZmluZSBTVEFSVF9BRERSCQkweEZGRkZGMDAwCisjZGVmaW5lIFJJTkdfTEVOCQkweDBDCisjZGVmaW5lIFJJTkdfTlJfUEFHRVMJCTB4MDAxRkYwMDAKKyNkZWZpbmUgUklOR19SRVBPUlRfTUFTSwkweDAwMDAwMDA2CisjZGVmaW5lIFJJTkdfUkVQT1JUXzY0SwkJMHgwMDAwMDAwMgorI2RlZmluZSBSSU5HX1JFUE9SVF8xMjhLCTB4MDAwMDAwMDQKKyNkZWZpbmUgUklOR19OT19SRVBPUlQJCTB4MDAwMDAwMDAKKyNkZWZpbmUgUklOR19WQUxJRF9NQVNLCQkweDAwMDAwMDAxCisjZGVmaW5lIFJJTkdfVkFMSUQJCTB4MDAwMDAwMDEKKyNkZWZpbmUgUklOR19JTlZBTElECQkweDAwMDAwMDAwCisKKy8qIFNjcmF0Y2ggcGFkIGRlYnVnIDAgcmVnOgorICovCisjZGVmaW5lICAgRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9NQVNLX0k4MzAJMHgwMDFmMDAwMAorLyoKKyAqIFRoZSBpODMwIGdlbmVyYXRpb24sIGluIExWRFMgbW9kZSwgZGVmaW5lcyBQMSBhcyB0aGUgYml0IG51bWJlciBzZXQgd2l0aGluCisgKiB0aGlzIGZpZWxkIChvbmx5IG9uZSBiaXQgbWF5IGJlIHNldCkuCisgKi8KKyNkZWZpbmUgICBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX01BU0tfSTgzMF9MVkRTCTB4MDAzZjAwMDAKKyNkZWZpbmUgICBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX1NISUZUCTE2CisvKiBpODMwLCByZXF1aXJlZCBpbiBEVk8gbm9uLWdhbmcgKi8KKyNkZWZpbmUgICBQTExfUDJfRElWSURFX0JZXzQJCSgxIDw8IDIzKQorI2RlZmluZSAgIFBMTF9QMV9ESVZJREVfQllfVFdPCQkoMSA8PCAyMSkgLyogaTgzMCAqLworI2RlZmluZSAgIFBMTF9SRUZfSU5QVVRfRFJFRkNMSwkJKDAgPDwgMTMpCisjZGVmaW5lICAgUExMX1JFRl9JTlBVVF9UVkNMS0lOQQkoMSA8PCAxMykgLyogaTgzMCAqLworI2RlZmluZSAgIFBMTF9SRUZfSU5QVVRfVFZDTEtJTkJDCSgyIDw8IDEzKSAvKiBTRFZPIFRWQ0xLSU4gKi8KKyNkZWZpbmUgICBQTExCX1JFRl9JTlBVVF9TUFJFQURTUEVDVFJVTUlOICgzIDw8IDEzKQorI2RlZmluZSAgIFBMTF9SRUZfSU5QVVRfTUFTSwkJKDMgPDwgMTMpCisjZGVmaW5lICAgUExMX0xPQURfUFVMU0VfUEhBU0VfU0hJRlQJCTkKKy8qCisgKiBQYXJhbGxlbCB0byBTZXJpYWwgTG9hZCBQdWxzZSBwaGFzZSBzZWxlY3Rpb24uCisgKiBTZWxlY3RzIHRoZSBwaGFzZSBmb3IgdGhlIDEwWCBEUExMIGNsb2NrIGZvciB0aGUgUENJZQorICogZGlnaXRhbCBkaXNwbGF5IHBvcnQuIFRoZSByYW5nZSBpcyA0IHRvIDEzOyAxMCBvciBtb3JlCisgKiBpcyBqdXN0IGEgZmxpcCBkZWxheS4gVGhlIGRlZmF1bHQgaXMgNgorICovCisjZGVmaW5lICAgUExMX0xPQURfUFVMU0VfUEhBU0VfTUFTSwkJKDB4ZiA8PCBQTExfTE9BRF9QVUxTRV9QSEFTRV9TSElGVCkKKyNkZWZpbmUgICBESVNQTEFZX1JBVEVfU0VMRUNUX0ZQQTEJCSgxIDw8IDgpCisvKgorICogU0RWTyBtdWx0aXBsaWVyIGZvciA5NDVHL0dNLiBOb3QgdXNlZCBvbiA5NjUuCisgKi8KKyNkZWZpbmUgICBTRFZPX01VTFRJUExJRVJfTUFTSwkJCTB4MDAwMDAwZmYKKyNkZWZpbmUgICBTRFZPX01VTFRJUExJRVJfU0hJRlRfSElSRVMJCTQKKyNkZWZpbmUgICBTRFZPX01VTFRJUExJRVJfU0hJRlRfVkdBCQkwCisjZGVmaW5lIERQTExfQV9NRCAweDA2MDFjIC8qIDk2NSsgb25seSAqLworLyoKKyAqIFVESSBwaXhlbCBkaXZpZGVyLCBjb250cm9sbGluZyBob3cgbWFueSBwaXhlbHMgYXJlIHN0dWZmZWQgaW50byBhIHBhY2tldC4KKyAqCisgKiBWYWx1ZSBpcyBwaXhlbHMgbWludXMgMS4gIE11c3QgYmUgc2V0IHRvIDEgcGl4ZWwgZm9yIFNEVk8uCisgKi8KKyNkZWZpbmUgICBEUExMX01EX1VESV9ESVZJREVSX01BU0sJCTB4M2YwMDAwMDAKKyNkZWZpbmUgICBEUExMX01EX1VESV9ESVZJREVSX1NISUZUCQkyNAorLyogVURJIHBpeGVsIGRpdmlkZXIgZm9yIFZHQSwgc2FtZSBhcyBEUExMX01EX1VESV9ESVZJREVSX01BU0suICovCisjZGVmaW5lICAgRFBMTF9NRF9WR0FfVURJX0RJVklERVJfTUFTSwkJMHgwMDNmMDAwMAorI2RlZmluZSAgIERQTExfTURfVkdBX1VESV9ESVZJREVSX1NISUZUCQkxNgorLyoKKyAqIFNEVk8vVURJIHBpeGVsIG11bHRpcGxpZXIuCisgKgorICogU0RWTyByZXF1aXJlcyB0aGF0IHRoZSBidXMgY2xvY2sgcmF0ZSBiZSBiZXR3ZWVuIDEgYW5kIDIgR2h6LCBhbmQgdGhlIGJ1cworICogY2xvY2sgcmF0ZSBpcyAxMCB0aW1lcyB0aGUgRFBMTCBjbG9jay4gIEF0IGxvdyByZXNvbHV0aW9uL3JlZnJlc2ggcmF0ZQorICogbW9kZXMsIHRoZSBidXMgcmF0ZSB3b3VsZCBiZSBiZWxvdyB0aGUgbGltaXRzLCBzbyBTRFZPIGFsbG93cyBmb3Igc3R1ZmZpbmcKKyAqIGR1bW15IGJ5dGVzIGluIHRoZSBkYXRhc3RyZWFtIGF0IGFuIGluY3JlYXNlZCBjbG9jayByYXRlLCB3aXRoIGJvdGggc2lkZXMgb2YKKyAqIHRoZSBsaW5rIGtub3dpbmcgaG93IG1hbnkgYnl0ZXMgYXJlIGZpbGwuCisgKgorICogU28sIGZvciBhIG1vZGUgd2l0aCBhIGRvdGNsb2NrIG9mIDY1TWh6LCB3ZSB3b3VsZCB3YW50IHRvIGRvdWJsZSB0aGUgY2xvY2sKKyAqIHJhdGUgdG8gMTMwTWh6IHRvIGdldCBhIGJ1cyByYXRlIG9mIDEuMzBHaHouICBUaGUgRFBMTCBjbG9jayByYXRlIHdvdWxkIGJlCisgKiBzZXQgdG8gMTMwTWh6LCBhbmQgdGhlIFNEVk8gbXVsdGlwbGllciBzZXQgdG8gMnggaW4gdGhpcyByZWdpc3RlciBhbmQKKyAqIHRocm91Z2ggYW4gU0RWTyBjb21tYW5kLgorICoKKyAqIFRoaXMgcmVnaXN0ZXIgZmllbGQgaGFzIHZhbHVlcyBvZiBtdWx0aXBsaWNhdGlvbiBmYWN0b3IgbWludXMgMSwgd2l0aAorICogYSBtYXhpbXVtIG11bHRpcGxpZXIgb2YgNSBmb3IgU0RWTy4KKyAqLworI2RlZmluZSAgIERQTExfTURfVURJX01VTFRJUExJRVJfTUFTSwkJMHgwMDAwM2YwMAorI2RlZmluZSAgIERQTExfTURfVURJX01VTFRJUExJRVJfU0hJRlQJCTgKKy8qCisgKiBTRFZPL1VESSBwaXhlbCBtdWx0aXBsaWVyIGZvciBWR0EsIHNhbWUgYXMgRFBMTF9NRF9VRElfTVVMVElQTElFUl9NQVNLLgorICogVGhpcyBiZXN0IGJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSAoMykgb3IgdGhlIENSVCB3b24ndCB3b3JrLiBObywKKyAqIEkgZG9uJ3QgZW50aXJlbHkgdW5kZXJzdGFuZCB3aGF0IHRoaXMgZG9lcy4uLgorICovCisjZGVmaW5lICAgRFBMTF9NRF9WR0FfVURJX01VTFRJUExJRVJfTUFTSwkweDAwMDAwMDNmCisjZGVmaW5lICAgRFBMTF9NRF9WR0FfVURJX01VTFRJUExJRVJfU0hJRlQJMAorI2RlZmluZSBEUExMX0JfTUQgMHgwNjAyMCAvKiA5NjUrIG9ubHkgKi8KKyNkZWZpbmUgRlBBMAkweDA2MDQwCisjZGVmaW5lIEZQQTEJMHgwNjA0NAorI2RlZmluZSBGUEIwCTB4MDYwNDgKKyNkZWZpbmUgRlBCMQkweDA2MDRjCisjZGVmaW5lICAgRlBfTl9ESVZfTUFTSwkJMHgwMDNmMDAwMAorI2RlZmluZSAgIEZQX05fRElWX1NISUZUCQkxNgorI2RlZmluZSAgIEZQX00xX0RJVl9NQVNLCTB4MDAwMDNmMDAKKyNkZWZpbmUgICBGUF9NMV9ESVZfU0hJRlQJCSA4CisjZGVmaW5lICAgRlBfTTJfRElWX01BU0sJMHgwMDAwMDAzZgorI2RlZmluZSAgIEZQX00yX0RJVl9TSElGVAkJIDAKKyNkZWZpbmUgRFBMTF9URVNUCTB4NjA2YworI2RlZmluZSAgIERQTExCX1RFU1RfU0RWT19ESVZfMQkJKDAgPDwgMjIpCisjZGVmaW5lICAgRFBMTEJfVEVTVF9TRFZPX0RJVl8yCQkoMSA8PCAyMikKKyNkZWZpbmUgICBEUExMQl9URVNUX1NEVk9fRElWXzQJCSgyIDw8IDIyKQorI2RlZmluZSAgIERQTExCX1RFU1RfU0RWT19ESVZfTUFTSwkoMyA8PCAyMikKKyNkZWZpbmUgICBEUExMQl9URVNUX05fQllQQVNTCQkoMSA8PCAxOSkKKyNkZWZpbmUgICBEUExMQl9URVNUX01fQllQQVNTCQkoMSA8PCAxOCkKKyNkZWZpbmUgICBEUExMQl9JTlBVVF9CVUZGRVJfRU5BQkxFCSgxIDw8IDE2KQorI2RlZmluZSAgIERQTExBX1RFU1RfTl9CWVBBU1MJCSgxIDw8IDMpCisjZGVmaW5lICAgRFBMTEFfVEVTVF9NX0JZUEFTUwkJKDEgPDwgMikKKyNkZWZpbmUgICBEUExMQV9JTlBVVF9CVUZGRVJfRU5BQkxFCSgxIDw8IDApCisjZGVmaW5lIERfU1RBVEUJCTB4NjEwNAorI2RlZmluZSBDR18yRF9ESVMJMHg2MjAwCisjZGVmaW5lIENHXzNEX0RJUwkweDYyMDQKKworLyoKKyAqIFBhbGV0dGUgcmVncworICovCisKKyNkZWZpbmUgUEFMRVRURV9BCQkweDBhMDAwCisjZGVmaW5lIFBBTEVUVEVfQgkJMHgwYTgwMAorCisvKiBNQ0ggTU1JTyBzcGFjZSAqLworCisvKgorICogTUNIQkFSIG1pcnJvci4KKyAqCisgKiBUaGlzIG1pcnJvcnMgdGhlIE1DSEJBUiBNTUlPIHNwYWNlIHdob3NlIGxvY2F0aW9uIGlzIGRldGVybWluZWQgYnkKKyAqIGRldmljZSAwIGZ1bmN0aW9uIDAncyBwY2kgY29uZmlnIHJlZ2lzdGVyIDB4NDQgb3IgMHg0OCBhbmQgbWF0Y2hlcyBpdCBpbgorICogZXZlcnkgd2F5LiAgSXQgaXMgbm90IGFjY2Vzc2libGUgZnJvbSB0aGUgQ1AgcmVnaXN0ZXIgcmVhZCBpbnN0cnVjdGlvbnMuCisgKgorICovCisjZGVmaW5lIE1DSEJBUl9NSVJST1JfQkFTRQkweDEwMDAwCisKKy8qKiA5MTUtOTQ1IGFuZCBHTTk2NSBNQ0ggcmVnaXN0ZXIgY29udHJvbGxpbmcgRFJBTSBjaGFubmVsIGFjY2VzcyAqLworI2RlZmluZSBEQ0MJCQkweDEwMjAwCisjZGVmaW5lIERDQ19BRERSRVNTSU5HX01PREVfU0lOR0xFX0NIQU5ORUwJCSgwIDw8IDApCisjZGVmaW5lIERDQ19BRERSRVNTSU5HX01PREVfRFVBTF9DSEFOTkVMX0FTWU1NRVRSSUMJKDEgPDwgMCkKKyNkZWZpbmUgRENDX0FERFJFU1NJTkdfTU9ERV9EVUFMX0NIQU5ORUxfSU5URVJMRUFWRUQJKDIgPDwgMCkKKyNkZWZpbmUgRENDX0FERFJFU1NJTkdfTU9ERV9NQVNLCQkJKDMgPDwgMCkKKyNkZWZpbmUgRENDX0NIQU5ORUxfWE9SX0RJU0FCTEUJCQkJKDEgPDwgMTApCisKKy8qKiA5NjUgTUNIIHJlZ2lzdGVyIGNvbnRyb2xsaW5nIERSQU0gY2hhbm5lbCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEMwRFJCMwkJCTB4MTAyMDYKKyNkZWZpbmUgQzFEUkIzCQkJMHgxMDYwNgorCisvKgorICogT3ZlcmxheSByZWdzCisgKi8KKworI2RlZmluZSBPVkFERAkJCTB4MzAwMDAKKyNkZWZpbmUgRE9WU1RBCQkJMHgzMDAwOAorI2RlZmluZSBPQ19CVUYJCQkoMHgzPDwyMCkKKyNkZWZpbmUgT0dBTUM1CQkJMHgzMDAxMAorI2RlZmluZSBPR0FNQzQJCQkweDMwMDE0CisjZGVmaW5lIE9HQU1DMwkJCTB4MzAwMTgKKyNkZWZpbmUgT0dBTUMyCQkJMHgzMDAxYworI2RlZmluZSBPR0FNQzEJCQkweDMwMDIwCisjZGVmaW5lIE9HQU1DMAkJCTB4MzAwMjQKKworLyoKKyAqIERpc3BsYXkgZW5naW5lIHJlZ3MKKyAqLworCisvKiBQaXBlIEEgdGltaW5nIHJlZ3MgKi8KKyNkZWZpbmUgSFRPVEFMX0EJMHg2MDAwMAorI2RlZmluZSBIQkxBTktfQQkweDYwMDA0CisjZGVmaW5lIEhTWU5DX0EJCTB4NjAwMDgKKyNkZWZpbmUgVlRPVEFMX0EJMHg2MDAwYworI2RlZmluZSBWQkxBTktfQQkweDYwMDEwCisjZGVmaW5lIFZTWU5DX0EJCTB4NjAwMTQKKyNkZWZpbmUgUElQRUFTUkMJMHg2MDAxYworI2RlZmluZSBCQ0xSUEFUX0EJMHg2MDAyMAorCisvKiBQaXBlIEIgdGltaW5nIHJlZ3MgKi8KKyNkZWZpbmUgSFRPVEFMX0IJMHg2MTAwMAorI2RlZmluZSBIQkxBTktfQgkweDYxMDA0CisjZGVmaW5lIEhTWU5DX0IJCTB4NjEwMDgKKyNkZWZpbmUgVlRPVEFMX0IJMHg2MTAwYworI2RlZmluZSBWQkxBTktfQgkweDYxMDEwCisjZGVmaW5lIFZTWU5DX0IJCTB4NjEwMTQKKyNkZWZpbmUgUElQRUJTUkMJMHg2MTAxYworI2RlZmluZSBCQ0xSUEFUX0IJMHg2MTAyMAorCisvKiBWR0EgcG9ydCBjb250cm9sICovCisjZGVmaW5lIEFEUEEJCQkweDYxMTAwCisjZGVmaW5lICAgQURQQV9EQUNfRU5BQkxFCSgxPDwzMSkKKyNkZWZpbmUgICBBRFBBX0RBQ19ESVNBQkxFCTAKKyNkZWZpbmUgICBBRFBBX1BJUEVfU0VMRUNUX01BU0sJKDE8PDMwKQorI2RlZmluZSAgIEFEUEFfUElQRV9BX1NFTEVDVAkwCisjZGVmaW5lICAgQURQQV9QSVBFX0JfU0VMRUNUCSgxPDwzMCkKKyNkZWZpbmUgICBBRFBBX1VTRV9WR0FfSFZQT0xBUklUWSAoMTw8MTUpCisjZGVmaW5lICAgQURQQV9TRVRTX0hWUE9MQVJJVFkJMAorI2RlZmluZSAgIEFEUEFfVlNZTkNfQ05UTF9ESVNBQkxFICgxPDwxMSkKKyNkZWZpbmUgICBBRFBBX1ZTWU5DX0NOVExfRU5BQkxFIDAKKyNkZWZpbmUgICBBRFBBX0hTWU5DX0NOVExfRElTQUJMRSAoMTw8MTApCisjZGVmaW5lICAgQURQQV9IU1lOQ19DTlRMX0VOQUJMRSAwCisjZGVmaW5lICAgQURQQV9WU1lOQ19BQ1RJVkVfSElHSCAoMTw8NCkKKyNkZWZpbmUgICBBRFBBX1ZTWU5DX0FDVElWRV9MT1cJMAorI2RlZmluZSAgIEFEUEFfSFNZTkNfQUNUSVZFX0hJR0ggKDE8PDMpCisjZGVmaW5lICAgQURQQV9IU1lOQ19BQ1RJVkVfTE9XCTAKKyNkZWZpbmUgICBBRFBBX0RQTVNfTUFTSwkofigzPDwxMCkpCisjZGVmaW5lICAgQURQQV9EUE1TX09OCQkoMDw8MTApCisjZGVmaW5lICAgQURQQV9EUE1TX1NVU1BFTkQJKDE8PDEwKQorI2RlZmluZSAgIEFEUEFfRFBNU19TVEFOREJZCSgyPDwxMCkKKyNkZWZpbmUgICBBRFBBX0RQTVNfT0ZGCQkoMzw8MTApCisKKy8qIEhvdHBsdWcgY29udHJvbCAoOTQ1KyBvbmx5KSAqLworI2RlZmluZSBQT1JUX0hPVFBMVUdfRU4JCTB4NjExMTAKKyNkZWZpbmUgICBTRFZPQl9IT1RQTFVHX0lOVF9FTgkJCSgxIDw8IDI2KQorI2RlZmluZSAgIFNEVk9DX0hPVFBMVUdfSU5UX0VOCQkJKDEgPDwgMjUpCisjZGVmaW5lICAgVFZfSE9UUExVR19JTlRfRU4JCQkoMSA8PCAxOCkKKyNkZWZpbmUgICBDUlRfSE9UUExVR19JTlRfRU4JCQkoMSA8PCA5KQorI2RlZmluZSAgIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVAkJKDEgPDwgMykKKworI2RlZmluZSBQT1JUX0hPVFBMVUdfU1RBVAkweDYxMTE0CisjZGVmaW5lICAgQ1JUX0hPVFBMVUdfSU5UX1NUQVRVUwkJKDEgPDwgMTEpCisjZGVmaW5lICAgVFZfSE9UUExVR19JTlRfU1RBVFVTCQkJKDEgPDwgMTApCisjZGVmaW5lICAgQ1JUX0hPVFBMVUdfTU9OSVRPUl9NQVNLCQkoMyA8PCA4KQorI2RlZmluZSAgIENSVF9IT1RQTFVHX01PTklUT1JfQ09MT1IJCSgzIDw8IDgpCisjZGVmaW5lICAgQ1JUX0hPVFBMVUdfTU9OSVRPUl9NT05PCQkoMiA8PCA4KQorI2RlZmluZSAgIENSVF9IT1RQTFVHX01PTklUT1JfTk9ORQkJKDAgPDwgOCkKKyNkZWZpbmUgICBTRFZPQ19IT1RQTFVHX0lOVF9TVEFUVVMJCSgxIDw8IDcpCisjZGVmaW5lICAgU0RWT0JfSE9UUExVR19JTlRfU1RBVFVTCQkoMSA8PCA2KQorCisvKiBTRFZPIHBvcnQgY29udHJvbCAqLworI2RlZmluZSBTRFZPQgkJCTB4NjExNDAKKyNkZWZpbmUgU0RWT0MJCQkweDYxMTYwCisjZGVmaW5lICAgU0RWT19FTkFCTEUJCSgxIDw8IDMxKQorI2RlZmluZSAgIFNEVk9fUElQRV9CX1NFTEVDVAkoMSA8PCAzMCkKKyNkZWZpbmUgICBTRFZPX1NUQUxMX1NFTEVDVAkoMSA8PCAyOSkKKyNkZWZpbmUgICBTRFZPX0lOVEVSUlVQVF9FTkFCTEUJKDEgPDwgMjYpCisvKioKKyAqIDkxNUcvR00gU0RWTyBwaXhlbCBtdWx0aXBsaWVyLgorICoKKyAqIFByb2dyYW1tZWQgdmFsdWUgaXMgbXVsdGlwbGllciAtIDEsIHVwIHRvIDV4LgorICoKKyAqIFxzYSBEUExMX01EX1VESV9NVUxUSVBMSUVSX01BU0sKKyAqLworI2RlZmluZSAgIFNEVk9fUE9SVF9NVUxUSVBMWV9NQVNLCSg3IDw8IDIzKQorI2RlZmluZSAgIFNEVk9fUE9SVF9NVUxUSVBMWV9TSElGVAkJMjMKKyNkZWZpbmUgICBTRFZPX1BIQVNFX1NFTEVDVF9NQVNLCSgxNSA8PCAxOSkKKyNkZWZpbmUgICBTRFZPX1BIQVNFX1NFTEVDVF9ERUZBVUxUCSg2IDw8IDE5KQorI2RlZmluZSAgIFNEVk9fQ0xPQ0tfT1VUUFVUX0lOVkVSVAkoMSA8PCAxOCkKKyNkZWZpbmUgICBTRFZPQ19HQU5HX01PREUJCSgxIDw8IDE2KQorI2RlZmluZSAgIFNEVk9fQk9SREVSX0VOQUJMRQkJKDEgPDwgNykKKyNkZWZpbmUgICBTRFZPQl9QQ0lFX0NPTkNVUlJFTkNZCSgxIDw8IDMpCisjZGVmaW5lICAgU0RWT19ERVRFQ1RFRAkJCSgxIDw8IDIpCisvKiBCaXRzIHRvIGJlIHByZXNlcnZlZCB3aGVuIHdyaXRpbmcgKi8KKyNkZWZpbmUgICBTRFZPQl9QUkVTRVJWRV9NQVNLICgoMSA8PCAxNykgfCAoMSA8PCAxNikgfCAoMSA8PCAxNCkgfCAoMSA8PCAyNikpCisjZGVmaW5lICAgU0RWT0NfUFJFU0VSVkVfTUFTSyAoKDEgPDwgMTcpIHwgKDEgPDwgMjYpKQorCisvKiBEVk8gcG9ydCBjb250cm9sICovCisjZGVmaW5lIERWT0EJCQkweDYxMTIwCisjZGVmaW5lIERWT0IJCQkweDYxMTQwCisjZGVmaW5lIERWT0MJCQkweDYxMTYwCisjZGVmaW5lICAgRFZPX0VOQUJMRQkJCSgxIDw8IDMxKQorI2RlZmluZSAgIERWT19QSVBFX0JfU0VMRUNUCQkoMSA8PCAzMCkKKyNkZWZpbmUgICBEVk9fUElQRV9TVEFMTF9VTlVTRUQJCSgwIDw8IDI4KQorI2RlZmluZSAgIERWT19QSVBFX1NUQUxMCQkoMSA8PCAyOCkKKyNkZWZpbmUgICBEVk9fUElQRV9TVEFMTF9UVgkJKDIgPDwgMjgpCisjZGVmaW5lICAgRFZPX1BJUEVfU1RBTExfTUFTSwkJKDMgPDwgMjgpCisjZGVmaW5lICAgRFZPX1VTRV9WR0FfU1lOQwkJKDEgPDwgMTUpCisjZGVmaW5lICAgRFZPX0RBVEFfT1JERVJfSTc0MAkJKDAgPDwgMTQpCisjZGVmaW5lICAgRFZPX0RBVEFfT1JERVJfRlAJCSgxIDw8IDE0KQorI2RlZmluZSAgIERWT19WU1lOQ19ESVNBQkxFCQkoMSA8PCAxMSkKKyNkZWZpbmUgICBEVk9fSFNZTkNfRElTQUJMRQkJKDEgPDwgMTApCisjZGVmaW5lICAgRFZPX1ZTWU5DX1RSSVNUQVRFCQkoMSA8PCA5KQorI2RlZmluZSAgIERWT19IU1lOQ19UUklTVEFURQkJKDEgPDwgOCkKKyNkZWZpbmUgICBEVk9fQk9SREVSX0VOQUJMRQkJKDEgPDwgNykKKyNkZWZpbmUgICBEVk9fREFUQV9PUkRFUl9HQlJHCQkoMSA8PCA2KQorI2RlZmluZSAgIERWT19EQVRBX09SREVSX1JHR0IJCSgwIDw8IDYpCisjZGVmaW5lICAgRFZPX0RBVEFfT1JERVJfR0JSR19FUlJBVEEJKDAgPDwgNikKKyNkZWZpbmUgICBEVk9fREFUQV9PUkRFUl9SR0dCX0VSUkFUQQkoMSA8PCA2KQorI2RlZmluZSAgIERWT19WU1lOQ19BQ1RJVkVfSElHSAkJKDEgPDwgNCkKKyNkZWZpbmUgICBEVk9fSFNZTkNfQUNUSVZFX0hJR0gJCSgxIDw8IDMpCisjZGVmaW5lICAgRFZPX0JMQU5LX0FDVElWRV9ISUdICQkoMSA8PCAyKQorI2RlZmluZSAgIERWT19PVVRQVVRfQ1NUQVRFX1BJWEVMUwkoMSA8PCAxKQkvKiBTREcgb25seSAqLworI2RlZmluZSAgIERWT19PVVRQVVRfU09VUkNFX1NJWkVfUElYRUxTCSgxIDw8IDApCS8qIFNERyBvbmx5ICovCisjZGVmaW5lICAgRFZPX1BSRVNFUlZFX01BU0sJCSgweDc8PDI0KQorI2RlZmluZSBEVk9BX1NSQ0RJTQkJMHg2MTEyNAorI2RlZmluZSBEVk9CX1NSQ0RJTQkJMHg2MTE0NAorI2RlZmluZSBEVk9DX1NSQ0RJTQkJMHg2MTE2NAorI2RlZmluZSAgIERWT19TUkNESU1fSE9SSVpPTlRBTF9TSElGVAkxMgorI2RlZmluZSAgIERWT19TUkNESU1fVkVSVElDQUxfU0hJRlQJMAorCisvKiBMVkRTIHBvcnQgY29udHJvbCAqLworI2RlZmluZSBMVkRTCQkJMHg2MTE4MAorLyoKKyAqIEVuYWJsZXMgdGhlIExWRFMgcG9ydC4gIFRoaXMgYml0IG11c3QgYmUgc2V0IGJlZm9yZSBEUExMcyBhcmUgZW5hYmxlZCwgYXMKKyAqIHRoZSBEUExMIHNlbWFudGljcyBjaGFuZ2Ugd2hlbiB0aGUgTFZEUyBpcyBhc3NpZ25lZCB0byB0aGF0IHBpcGUuCisgKi8KKyNkZWZpbmUgICBMVkRTX1BPUlRfRU4JCQkoMSA8PCAzMSkKKy8qIFNlbGVjdHMgcGlwZSBCIGZvciBMVkRTIGRhdGEuICBNdXN0IGJlIHNldCBvbiBwcmUtOTY1LiAqLworI2RlZmluZSAgIExWRFNfUElQRUJfU0VMRUNUCQkoMSA8PCAzMCkKKy8qCisgKiBFbmFibGVzIHRoZSBBMC1BMiBkYXRhIHBhaXJzIGFuZCBDTEtBLCBjb250YWluaW5nIDE4IGJpdHMgb2YgY29sb3IgZGF0YSBwZXIKKyAqIHBpeGVsLgorICovCisjZGVmaW5lICAgTFZEU19BMEEyX0NMS0FfUE9XRVJfTUFTSwkoMyA8PCA4KQorI2RlZmluZSAgIExWRFNfQTBBMl9DTEtBX1BPV0VSX0RPV04JKDAgPDwgOCkKKyNkZWZpbmUgICBMVkRTX0EwQTJfQ0xLQV9QT1dFUl9VUAkoMyA8PCA4KQorLyoKKyAqIENvbnRyb2xzIHRoZSBBMyBkYXRhIHBhaXIsIHdoaWNoIGNvbnRhaW5zIHRoZSBhZGRpdGlvbmFsIExTQnMgZm9yIDI0IGJpdAorICogbW9kZS4gIE9ubHkgZW5hYmxlZCBpZiBMVkRTX0EwQTJfQ0xLQV9QT1dFUl9VUCBhbHNvIGluZGljYXRlcyBpdCBzaG91bGQgYmUKKyAqIG9uLgorICovCisjZGVmaW5lICAgTFZEU19BM19QT1dFUl9NQVNLCQkoMyA8PCA2KQorI2RlZmluZSAgIExWRFNfQTNfUE9XRVJfRE9XTgkJKDAgPDwgNikKKyNkZWZpbmUgICBMVkRTX0EzX1BPV0VSX1VQCQkoMyA8PCA2KQorLyoKKyAqIENvbnRyb2xzIHRoZSBDTEtCIHBhaXIuICBUaGlzIHNob3VsZCBvbmx5IGJlIHNldCB3aGVuIExWRFNfQjBCM19QT1dFUl9VUAorICogaXMgc2V0LgorICovCisjZGVmaW5lICAgTFZEU19DTEtCX1BPV0VSX01BU0sJCSgzIDw8IDQpCisjZGVmaW5lICAgTFZEU19DTEtCX1BPV0VSX0RPV04JCSgwIDw8IDQpCisjZGVmaW5lICAgTFZEU19DTEtCX1BPV0VSX1VQCQkoMyA8PCA0KQorLyoKKyAqIENvbnRyb2xzIHRoZSBCMC1CMyBkYXRhIHBhaXJzLiAgVGhpcyBtdXN0IGJlIHNldCB0byBtYXRjaCB0aGUgRFBMTCBwMgorICogc2V0dGluZyBmb3Igd2hldGhlciB3ZSBhcmUgaW4gZHVhbC1jaGFubmVsIG1vZGUuICBUaGUgQjMgcGFpciB3aWxsCisgKiBhZGRpdGlvbmFsbHkgb25seSBiZSBwb3dlcmVkIHVwIHdoZW4gTFZEU19BM19QT1dFUl9VUCBpcyBzZXQuCisgKi8KKyNkZWZpbmUgICBMVkRTX0IwQjNfUE9XRVJfTUFTSwkJKDMgPDwgMikKKyNkZWZpbmUgICBMVkRTX0IwQjNfUE9XRVJfRE9XTgkJKDAgPDwgMikKKyNkZWZpbmUgICBMVkRTX0IwQjNfUE9XRVJfVVAJCSgzIDw8IDIpCisKKy8qIFBhbmVsIHBvd2VyIHNlcXVlbmNpbmcgKi8KKyNkZWZpbmUgUFBfU1RBVFVTCTB4NjEyMDAKKyNkZWZpbmUgICBQUF9PTgkJKDEgPDwgMzEpCisvKgorICogSW5kaWNhdGVzIHRoYXQgYWxsIGRlcGVuZGVuY2llcyBvZiB0aGUgcGFuZWwgYXJlIG9uOgorICoKKyAqIC0gUExMIGVuYWJsZWQKKyAqIC0gcGlwZSBlbmFibGVkCisgKiAtIExWRFMvRFZPQi9EVk9DIG9uCisgKi8KKyNkZWZpbmUgICBQUF9SRUFEWQkJKDEgPDwgMzApCisjZGVmaW5lICAgUFBfU0VRVUVOQ0VfTk9ORQkoMCA8PCAyOCkKKyNkZWZpbmUgICBQUF9TRVFVRU5DRV9PTgkoMSA8PCAyOCkKKyNkZWZpbmUgICBQUF9TRVFVRU5DRV9PRkYJKDIgPDwgMjgpCisjZGVmaW5lICAgUFBfU0VRVUVOQ0VfTUFTSwkweDMwMDAwMDAwCisjZGVmaW5lIFBQX0NPTlRST0wJMHg2MTIwNAorI2RlZmluZSAgIFBPV0VSX1RBUkdFVF9PTgkoMSA8PCAwKQorI2RlZmluZSBQUF9PTl9ERUxBWVMJMHg2MTIwOAorI2RlZmluZSBQUF9PRkZfREVMQVlTCTB4NjEyMGMKKyNkZWZpbmUgUFBfRElWSVNPUgkweDYxMjEwCisKKy8qIFBhbmVsIGZpdHRpbmcgKi8KKyNkZWZpbmUgUEZJVF9DT05UUk9MCTB4NjEyMzAKKyNkZWZpbmUgICBQRklUX0VOQUJMRQkJKDEgPDwgMzEpCisjZGVmaW5lICAgUEZJVF9QSVBFX01BU0sJKDMgPDwgMjkpCisjZGVmaW5lICAgUEZJVF9QSVBFX1NISUZUCTI5CisjZGVmaW5lICAgVkVSVF9JTlRFUlBfRElTQUJMRQkoMCA8PCAxMCkKKyNkZWZpbmUgICBWRVJUX0lOVEVSUF9CSUxJTkVBUgkoMSA8PCAxMCkKKyNkZWZpbmUgICBWRVJUX0lOVEVSUF9NQVNLCSgzIDw8IDEwKQorI2RlZmluZSAgIFZFUlRfQVVUT19TQ0FMRQkoMSA8PCA5KQorI2RlZmluZSAgIEhPUklaX0lOVEVSUF9ESVNBQkxFCSgwIDw8IDYpCisjZGVmaW5lICAgSE9SSVpfSU5URVJQX0JJTElORUFSCSgxIDw8IDYpCisjZGVmaW5lICAgSE9SSVpfSU5URVJQX01BU0sJKDMgPDwgNikKKyNkZWZpbmUgICBIT1JJWl9BVVRPX1NDQUxFCSgxIDw8IDUpCisjZGVmaW5lICAgUEFORUxfOFRPNl9ESVRIRVJfRU5BQkxFICgxIDw8IDMpCisjZGVmaW5lIFBGSVRfUEdNX1JBVElPUwkweDYxMjM0CisjZGVmaW5lICAgUEZJVF9WRVJUX1NDQUxFX01BU0sJCQkweGZmZjAwMDAwCisjZGVmaW5lICAgUEZJVF9IT1JJWl9TQ0FMRV9NQVNLCQkJMHgwMDAwZmZmMAorI2RlZmluZSBQRklUX0FVVE9fUkFUSU9TIDB4NjEyMzgKKworLyogQmFja2xpZ2h0IGNvbnRyb2wgKi8KKyNkZWZpbmUgQkxDX1BXTV9DVEwJCTB4NjEyNTQKKyNkZWZpbmUgICBCQUNLTElHSFRfTU9EVUxBVElPTl9GUkVRX1NISUZUCQkoMTcpCisjZGVmaW5lIEJMQ19QV01fQ1RMMgkJMHg2MTI1MCAvKiA5NjUrIG9ubHkgKi8KKyNkZWZpbmUgICBCTE1fQ09NQklOQVRJT05fTU9ERSAoMSA8PCAzMCkKKy8qCisgKiBUaGlzIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IDE1IGJpdHMgb2YgdGhlIG51bWJlciBvZiBiYWNrbGlnaHQgY3ljbGVzIGluIGEKKyAqIGNvbXBsZXRlIGN5Y2xlIG9mIHRoZSBtb2R1bGF0ZWQgYmFja2xpZ2h0IGNvbnRyb2wuCisgKgorICogVGhlIGFjdHVhbCB2YWx1ZSBpcyB0aGlzIGZpZWxkIG11bHRpcGxpZWQgYnkgdHdvLgorICovCisjZGVmaW5lICAgQkFDS0xJR0hUX01PRFVMQVRJT05fRlJFUV9NQVNLCQkoMHg3ZmZmIDw8IDE3KQorI2RlZmluZSAgIEJMTV9MRUdBQ1lfTU9ERQkJCQkoMSA8PCAxNikKKy8qCisgKiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgY3ljbGVzIG91dCBvZiB0aGUgYmFja2xpZ2h0IG1vZHVsYXRpb24gY3ljbGUgZm9yIHdoaWNoCisgKiB0aGUgYmFja2xpZ2h0IGlzIG9uLgorICoKKyAqIFRoaXMgZmllbGQgbXVzdCBiZSBubyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjeWNsZXMgaW4gdGhlIGNvbXBsZXRlCisgKiBiYWNrbGlnaHQgbW9kdWxhdGlvbiBjeWNsZS4KKyAqLworI2RlZmluZSAgIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX1NISUZUCQkoMCkKKyNkZWZpbmUgICBCQUNLTElHSFRfRFVUWV9DWUNMRV9NQVNLCQkoMHhmZmZmKQorCisvKiBUViBwb3J0IGNvbnRyb2wgKi8KKyNkZWZpbmUgVFZfQ1RMCQkJMHg2ODAwMAorLyoqIEVuYWJsZXMgdGhlIFRWIGVuY29kZXIgKi8KKyMgZGVmaW5lIFRWX0VOQ19FTkFCTEUJCQkoMSA8PCAzMSkKKy8qKiBTb3VyY2VzIHRoZSBUViBlbmNvZGVyIGlucHV0IGZyb20gcGlwZSBCIGluc3RlYWQgb2YgQS4gKi8KKyMgZGVmaW5lIFRWX0VOQ19QSVBFQl9TRUxFQ1QJCSgxIDw8IDMwKQorLyoqIE91dHB1dHMgY29tcG9zaXRlIHZpZGVvIChEQUMgQSBvbmx5KSAqLworIyBkZWZpbmUgVFZfRU5DX09VVFBVVF9DT01QT1NJVEUJKDAgPDwgMjgpCisvKiogT3V0cHV0cyBTVmlkZW8gdmlkZW8gKERBQyBCL0MpICovCisjIGRlZmluZSBUVl9FTkNfT1VUUFVUX1NWSURFTwkJKDEgPDwgMjgpCisvKiogT3V0cHV0cyBDb21wb25lbnQgdmlkZW8gKERBQyBBL0IvQykgKi8KKyMgZGVmaW5lIFRWX0VOQ19PVVRQVVRfQ09NUE9ORU5UCSgyIDw8IDI4KQorLyoqIE91dHB1dHMgQ29tcG9zaXRlIGFuZCBTVmlkZW8gKERBQyBBL0IvQykgKi8KKyMgZGVmaW5lIFRWX0VOQ19PVVRQVVRfU1ZJREVPX0NPTVBPU0lURQkoMyA8PCAyOCkKKyMgZGVmaW5lIFRWX1RSSUxFVkVMX1NZTkMJCSgxIDw8IDIxKQorLyoqIEVuYWJsZXMgc2xvdyBzeW5jIGdlbmVyYXRpb24gKDk0NUdNIG9ubHkpICovCisjIGRlZmluZSBUVl9TTE9XX1NZTkMJCQkoMSA8PCAyMCkKKy8qKiBTZWxlY3RzIDR4IG92ZXJzYW1wbGluZyBmb3IgNDgwaSBhbmQgNTc2cCAqLworIyBkZWZpbmUgVFZfT1ZFUlNBTVBMRV80WAkJKDAgPDwgMTgpCisvKiogU2VsZWN0cyAyeCBvdmVyc2FtcGxpbmcgZm9yIDcyMHAgYW5kIDEwODBpICovCisjIGRlZmluZSBUVl9PVkVSU0FNUExFXzJYCQkoMSA8PCAxOCkKKy8qKiBTZWxlY3RzIG5vIG92ZXJzYW1wbGluZyBmb3IgMTA4MHAgKi8KKyMgZGVmaW5lIFRWX09WRVJTQU1QTEVfTk9ORQkJKDIgPDwgMTgpCisvKiogU2VsZWN0cyA4eCBvdmVyc2FtcGxpbmcgKi8KKyMgZGVmaW5lIFRWX09WRVJTQU1QTEVfOFgJCSgzIDw8IDE4KQorLyoqIFNlbGVjdHMgcHJvZ3Jlc3NpdmUgbW9kZSByYXRoZXIgdGhhbiBpbnRlcmxhY2VkICovCisjIGRlZmluZSBUVl9QUk9HUkVTU0lWRQkJCSgxIDw8IDE3KQorLyoqIFNldHMgdGhlIGNvbG9yYnVyc3QgdG8gUEFMIG1vZGUuICBSZXF1aXJlZCBmb3Igbm9uLU0gUEFMIG1vZGVzLiAqLworIyBkZWZpbmUgVFZfUEFMX0JVUlNUCQkJKDEgPDwgMTYpCisvKiogRmllbGQgZm9yIHNldHRpbmcgZGVsYXkgb2YgWSBjb21wYXJlZCB0byBDICovCisjIGRlZmluZSBUVl9ZQ19TS0VXX01BU0sJCSg3IDw8IDEyKQorLyoqIEVuYWJsZXMgYSBmaXggZm9yIDQ4MHAvNTc2cCBzdGFuZGFyZCBkZWZpbml0aW9uIG1vZGVzIG9uIHRoZSA5MTVHTSBvbmx5ICovCisjIGRlZmluZSBUVl9FTkNfU0RQX0ZJWAkJCSgxIDw8IDExKQorLyoqCisgKiBFbmFibGVzIGEgZml4IGZvciB0aGUgOTE1R00gb25seS4KKyAqCisgKiBOb3Qgc3VyZSB3aGF0IGl0IGRvZXMuCisgKi8KKyMgZGVmaW5lIFRWX0VOQ19DMF9GSVgJCQkoMSA8PCAxMCkKKy8qKiBCaXRzIHRoYXQgbXVzdCBiZSBwcmVzZXJ2ZWQgYnkgc29mdHdhcmUgKi8KKyMgZGVmaW5lIFRWX0NUTF9TQVZFCQkJKCgzIDw8IDgpIHwgKDMgPDwgNikpCisjIGRlZmluZSBUVl9GVVNFX1NUQVRFX01BU0sJCSgzIDw8IDQpCisvKiogUmVhZC1vbmx5IHN0YXRlIHRoYXQgcmVwb3J0cyBhbGwgZmVhdHVyZXMgZW5hYmxlZCAqLworIyBkZWZpbmUgVFZfRlVTRV9TVEFURV9FTkFCTEVECQkoMCA8PCA0KQorLyoqIFJlYWQtb25seSBzdGF0ZSB0aGF0IHJlcG9ydHMgdGhhdCBNYWNyb3Zpc2lvbiBpcyBkaXNhYmxlZCBpbiBoYXJkd2FyZSovCisjIGRlZmluZSBUVl9GVVNFX1NUQVRFX05PX01BQ1JPVklTSU9OCSgxIDw8IDQpCisvKiogUmVhZC1vbmx5IHN0YXRlIHRoYXQgcmVwb3J0cyB0aGF0IFRWLW91dCBpcyBkaXNhYmxlZCBpbiBoYXJkd2FyZS4gKi8KKyMgZGVmaW5lIFRWX0ZVU0VfU1RBVEVfRElTQUJMRUQJCSgyIDw8IDQpCisvKiogTm9ybWFsIG9wZXJhdGlvbiAqLworIyBkZWZpbmUgVFZfVEVTVF9NT0RFX05PUk1BTAkJKDAgPDwgMCkKKy8qKiBFbmNvZGVyIHRlc3QgcGF0dGVybiAxIC0gY29tYm8gcGF0dGVybiAqLworIyBkZWZpbmUgVFZfVEVTVF9NT0RFX1BBVFRFUk5fMQkJKDEgPDwgMCkKKy8qKiBFbmNvZGVyIHRlc3QgcGF0dGVybiAyIC0gZnVsbCBzY3JlZW4gdmVydGljYWwgNzUlIGNvbG9yIGJhcnMgKi8KKyMgZGVmaW5lIFRWX1RFU1RfTU9ERV9QQVRURVJOXzIJCSgyIDw8IDApCisvKiogRW5jb2RlciB0ZXN0IHBhdHRlcm4gMyAtIGZ1bGwgc2NyZWVuIGhvcml6b250YWwgNzUlIGNvbG9yIGJhcnMgKi8KKyMgZGVmaW5lIFRWX1RFU1RfTU9ERV9QQVRURVJOXzMJCSgzIDw8IDApCisvKiogRW5jb2RlciB0ZXN0IHBhdHRlcm4gNCAtIHJhbmRvbSBub2lzZSAqLworIyBkZWZpbmUgVFZfVEVTVF9NT0RFX1BBVFRFUk5fNAkJKDQgPDwgMCkKKy8qKiBFbmNvZGVyIHRlc3QgcGF0dGVybiA1IC0gbGluZWFyIGNvbG9yIHJhbXBzICovCisjIGRlZmluZSBUVl9URVNUX01PREVfUEFUVEVSTl81CQkoNSA8PCAwKQorLyoqCisgKiBUaGlzIHRlc3QgbW9kZSBmb3JjZXMgdGhlIERBQ3MgdG8gNTAlIG9mIGZ1bGwgb3V0cHV0LgorICoKKyAqIFRoaXMgaXMgdXNlZCBmb3IgbG9hZCBkZXRlY3Rpb24gaW4gY29tYmluYXRpb24gd2l0aCBUVkRBQ19TRU5TRV9NQVNLCisgKi8KKyMgZGVmaW5lIFRWX1RFU1RfTU9ERV9NT05JVE9SX0RFVEVDVAkoNyA8PCAwKQorIyBkZWZpbmUgVFZfVEVTVF9NT0RFX01BU0sJCSg3IDw8IDApCisKKyNkZWZpbmUgVFZfREFDCQkJMHg2ODAwNAorLyoqCisgKiBSZXBvcnRzIHRoYXQgREFDIHN0YXRlIGNoYW5nZSBsb2dpYyBoYXMgcmVwb3J0ZWQgY2hhbmdlIChSTykuCisgKgorICogVGhpcyBnZXRzIGNsZWFyZWQgd2hlbiBUVl9EQUNfU1RBVEVfRU4gaXMgY2xlYXJlZAorKi8KKyMgZGVmaW5lIFRWREFDX1NUQVRFX0NIRwkJKDEgPDwgMzEpCisjIGRlZmluZSBUVkRBQ19TRU5TRV9NQVNLCQkoNyA8PCAyOCkKKy8qKiBSZXBvcnRzIHRoYXQgREFDIEEgdm9sdGFnZSBpcyBhYm92ZSB0aGUgZGV0ZWN0IHRocmVzaG9sZCAqLworIyBkZWZpbmUgVFZEQUNfQV9TRU5TRQkJCSgxIDw8IDMwKQorLyoqIFJlcG9ydHMgdGhhdCBEQUMgQiB2b2x0YWdlIGlzIGFib3ZlIHRoZSBkZXRlY3QgdGhyZXNob2xkICovCisjIGRlZmluZSBUVkRBQ19CX1NFTlNFCQkJKDEgPDwgMjkpCisvKiogUmVwb3J0cyB0aGF0IERBQyBDIHZvbHRhZ2UgaXMgYWJvdmUgdGhlIGRldGVjdCB0aHJlc2hvbGQgKi8KKyMgZGVmaW5lIFRWREFDX0NfU0VOU0UJCQkoMSA8PCAyOCkKKy8qKgorICogRW5hYmxlcyBEQUMgc3RhdGUgZGV0ZWN0aW9uIGxvZ2ljLCBmb3IgbG9hZC1iYXNlZCBUViBkZXRlY3Rpb24uCisgKgorICogVGhlIFBMTCBvZiB0aGUgY2hvc2VuIHBpcGUgKGluIFRWX0NUTCkgbXVzdCBiZSBydW5uaW5nLCBhbmQgdGhlIGVuY29kZXIgc2V0CisgKiB0byBvZmYsIGZvciBsb2FkIGRldGVjdGlvbiB0byB3b3JrLgorICovCisjIGRlZmluZSBUVkRBQ19TVEFURV9DSEdfRU4JCSgxIDw8IDI3KQorLyoqIFNldHMgdGhlIERBQyBBIHNlbnNlIHZhbHVlIHRvIGhpZ2ggKi8KKyMgZGVmaW5lIFRWREFDX0FfU0VOU0VfQ1RMCQkoMSA8PCAyNikKKy8qKiBTZXRzIHRoZSBEQUMgQiBzZW5zZSB2YWx1ZSB0byBoaWdoICovCisjIGRlZmluZSBUVkRBQ19CX1NFTlNFX0NUTAkJKDEgPDwgMjUpCisvKiogU2V0cyB0aGUgREFDIEMgc2Vuc2UgdmFsdWUgdG8gaGlnaCAqLworIyBkZWZpbmUgVFZEQUNfQ19TRU5TRV9DVEwJCSgxIDw8IDI0KQorLyoqIE92ZXJyaWRlcyB0aGUgRU5DX0VOQUJMRSBhbmQgREFDIHZvbHRhZ2UgbGV2ZWxzICovCisjIGRlZmluZSBEQUNfQ1RMX09WRVJSSURFCQkoMSA8PCA3KQorLyoqIFNldHMgdGhlIHNsZXcgcmF0ZS4gIE11c3QgYmUgcHJlc2VydmVkIGluIHNvZnR3YXJlICovCisjIGRlZmluZSBFTkNfVFZEQUNfU0xFV19GQVNUCQkoMSA8PCA2KQorIyBkZWZpbmUgREFDX0FfMV8zX1YJCQkoMCA8PCA0KQorIyBkZWZpbmUgREFDX0FfMV8xX1YJCQkoMSA8PCA0KQorIyBkZWZpbmUgREFDX0FfMF83X1YJCQkoMiA8PCA0KQorIyBkZWZpbmUgREFDX0FfT0ZGCQkJKDMgPDwgNCkKKyMgZGVmaW5lIERBQ19CXzFfM19WCQkJKDAgPDwgMikKKyMgZGVmaW5lIERBQ19CXzFfMV9WCQkJKDEgPDwgMikKKyMgZGVmaW5lIERBQ19CXzBfN19WCQkJKDIgPDwgMikKKyMgZGVmaW5lIERBQ19CX09GRgkJCSgzIDw8IDIpCisjIGRlZmluZSBEQUNfQ18xXzNfVgkJCSgwIDw8IDApCisjIGRlZmluZSBEQUNfQ18xXzFfVgkJCSgxIDw8IDApCisjIGRlZmluZSBEQUNfQ18wXzdfVgkJCSgyIDw8IDApCisjIGRlZmluZSBEQUNfQ19PRkYJCQkoMyA8PCAwKQorCisvKioKKyAqIENTQyBjb2VmZmljaWVudHMgYXJlIHN0b3JlZCBpbiBhIGZsb2F0aW5nIHBvaW50IGZvcm1hdCB3aXRoIDkgYml0cyBvZgorICogbWFudGlzc2EgYW5kIDIgb3IgMyBiaXRzIG9mIGV4cG9uZW50LiAgVGhlIGV4cG9uZW50IGlzIHJlcHJlc2VudGVkIGFzIDIqKi1uLAorICogd2hlcmUgMi1iaXQgZXhwb25lbnRzIGFyZSB1bnNpZ25lZCBuLCBhbmQgMy1iaXQgZXhwb25lbnRzIGFyZSBzaWduZWQgbiB3aXRoCisgKiAtMSAoMHgzKSBiZWluZyB0aGUgb25seSBsZWdhbCBuZWdhdGl2ZSB2YWx1ZS4KKyAqLworI2RlZmluZSBUVl9DU0NfWQkJMHg2ODAxMAorIyBkZWZpbmUgVFZfUllfTUFTSwkJCTB4MDdmZjAwMDAKKyMgZGVmaW5lIFRWX1JZX1NISUZUCQkJMTYKKyMgZGVmaW5lIFRWX0dZX01BU0sJCQkweDAwMDAwZmZmCisjIGRlZmluZSBUVl9HWV9TSElGVAkJCTAKKworI2RlZmluZSBUVl9DU0NfWTIJCTB4NjgwMTQKKyMgZGVmaW5lIFRWX0JZX01BU0sJCQkweDA3ZmYwMDAwCisjIGRlZmluZSBUVl9CWV9TSElGVAkJCTE2CisvKioKKyAqIFkgYXR0ZW51YXRpb24gZm9yIGNvbXBvbmVudCB2aWRlby4KKyAqCisgKiBTdG9yZWQgaW4gMS45IGZpeGVkIHBvaW50LgorICovCisjIGRlZmluZSBUVl9BWV9NQVNLCQkJMHgwMDAwMDNmZgorIyBkZWZpbmUgVFZfQVlfU0hJRlQJCQkwCisKKyNkZWZpbmUgVFZfQ1NDX1UJCTB4NjgwMTgKKyMgZGVmaW5lIFRWX1JVX01BU0sJCQkweDA3ZmYwMDAwCisjIGRlZmluZSBUVl9SVV9TSElGVAkJCTE2CisjIGRlZmluZSBUVl9HVV9NQVNLCQkJMHgwMDAwMDdmZgorIyBkZWZpbmUgVFZfR1VfU0hJRlQJCQkwCisKKyNkZWZpbmUgVFZfQ1NDX1UyCQkweDY4MDFjCisjIGRlZmluZSBUVl9CVV9NQVNLCQkJMHgwN2ZmMDAwMAorIyBkZWZpbmUgVFZfQlVfU0hJRlQJCQkxNgorLyoqCisgKiBVIGF0dGVudWF0aW9uIGZvciBjb21wb25lbnQgdmlkZW8uCisgKgorICogU3RvcmVkIGluIDEuOSBmaXhlZCBwb2ludC4KKyAqLworIyBkZWZpbmUgVFZfQVVfTUFTSwkJCTB4MDAwMDAzZmYKKyMgZGVmaW5lIFRWX0FVX1NISUZUCQkJMAorCisjZGVmaW5lIFRWX0NTQ19WCQkweDY4MDIwCisjIGRlZmluZSBUVl9SVl9NQVNLCQkJMHgwZmZmMDAwMAorIyBkZWZpbmUgVFZfUlZfU0hJRlQJCQkxNgorIyBkZWZpbmUgVFZfR1ZfTUFTSwkJCTB4MDAwMDA3ZmYKKyMgZGVmaW5lIFRWX0dWX1NISUZUCQkJMAorCisjZGVmaW5lIFRWX0NTQ19WMgkJMHg2ODAyNAorIyBkZWZpbmUgVFZfQlZfTUFTSwkJCTB4MDdmZjAwMDAKKyMgZGVmaW5lIFRWX0JWX1NISUZUCQkJMTYKKy8qKgorICogViBhdHRlbnVhdGlvbiBmb3IgY29tcG9uZW50IHZpZGVvLgorICoKKyAqIFN0b3JlZCBpbiAxLjkgZml4ZWQgcG9pbnQuCisgKi8KKyMgZGVmaW5lIFRWX0FWX01BU0sJCQkweDAwMDAwN2ZmCisjIGRlZmluZSBUVl9BVl9TSElGVAkJCTAKKworI2RlZmluZSBUVl9DTFJfS05PQlMJCTB4NjgwMjgKKy8qKiAycy1jb21wbGVtZW50IGJyaWdodG5lc3MgYWRqdXN0bWVudCAqLworIyBkZWZpbmUgVFZfQlJJR0hUTkVTU19NQVNLCQkweGZmMDAwMDAwCisjIGRlZmluZSBUVl9CUklHSFRORVNTX1NISUZUCQkyNAorLyoqIENvbnRyYXN0IGFkanVzdG1lbnQsIGFzIGEgMi42IHVuc2lnbmVkIGZsb2F0aW5nIHBvaW50IG51bWJlciAqLworIyBkZWZpbmUgVFZfQ09OVFJBU1RfTUFTSwkJMHgwMGZmMDAwMAorIyBkZWZpbmUgVFZfQ09OVFJBU1RfU0hJRlQJCTE2CisvKiogU2F0dXJhdGlvbiBhZGp1c3RtZW50LCBhcyBhIDIuNiB1bnNpZ25lZCBmbG9hdGluZyBwb2ludCBudW1iZXIgKi8KKyMgZGVmaW5lIFRWX1NBVFVSQVRJT05fTUFTSwkJMHgwMDAwZmYwMAorIyBkZWZpbmUgVFZfU0FUVVJBVElPTl9TSElGVAkJOAorLyoqIEh1ZSBhZGp1c3RtZW50LCBhcyBhbiBpbnRlZ2VyIHBoYXNlIGFuZ2xlIGluIGRlZ3JlZXMgKi8KKyMgZGVmaW5lIFRWX0hVRV9NQVNLCQkJMHgwMDAwMDBmZgorIyBkZWZpbmUgVFZfSFVFX1NISUZUCQkJMAorCisjZGVmaW5lIFRWX0NMUl9MRVZFTAkJMHg2ODAyYworLyoqIENvbnRyb2xzIHRoZSBEQUMgbGV2ZWwgZm9yIGJsYWNrICovCisjIGRlZmluZSBUVl9CTEFDS19MRVZFTF9NQVNLCQkweDAxZmYwMDAwCisjIGRlZmluZSBUVl9CTEFDS19MRVZFTF9TSElGVAkJMTYKKy8qKiBDb250cm9scyB0aGUgREFDIGxldmVsIGZvciBibGFua2luZyAqLworIyBkZWZpbmUgVFZfQkxBTktfTEVWRUxfTUFTSwkJMHgwMDAwMDFmZgorIyBkZWZpbmUgVFZfQkxBTktfTEVWRUxfU0hJRlQJCTAKKworI2RlZmluZSBUVl9IX0NUTF8xCQkweDY4MDMwCisvKiogTnVtYmVyIG9mIHBpeGVscyBpbiB0aGUgaHN5bmMuICovCisjIGRlZmluZSBUVl9IU1lOQ19FTkRfTUFTSwkJMHgxZmZmMDAwMAorIyBkZWZpbmUgVFZfSFNZTkNfRU5EX1NISUZUCQkxNgorLyoqIFRvdGFsIG51bWJlciBvZiBwaXhlbHMgbWludXMgb25lIGluIHRoZSBsaW5lIChkaXNwbGF5IGFuZCBibGFua2luZykuICovCisjIGRlZmluZSBUVl9IVE9UQUxfTUFTSwkJCTB4MDAwMDFmZmYKKyMgZGVmaW5lIFRWX0hUT1RBTF9TSElGVAkJMAorCisjZGVmaW5lIFRWX0hfQ1RMXzIJCTB4NjgwMzQKKy8qKiBFbmFibGVzIHRoZSBjb2xvcmJ1cnN0IChuZWVkZWQgZm9yIG5vbi1jb21wb25lbnQgY29sb3IpICovCisjIGRlZmluZSBUVl9CVVJTVF9FTkEJCQkoMSA8PCAzMSkKKy8qKiBPZmZzZXQgb2YgdGhlIGNvbG9yYnVyc3QgZnJvbSB0aGUgc3RhcnQgb2YgaHN5bmMsIGluIHBpeGVscyBtaW51cyBvbmUuICovCisjIGRlZmluZSBUVl9IQlVSU1RfU1RBUlRfU0hJRlQJCTE2CisjIGRlZmluZSBUVl9IQlVSU1RfU1RBUlRfTUFTSwkJMHgxZmZmMDAwMAorLyoqIExlbmd0aCBvZiB0aGUgY29sb3JidXJzdCAqLworIyBkZWZpbmUgVFZfSEJVUlNUX0xFTl9TSElGVAkJMAorIyBkZWZpbmUgVFZfSEJVUlNUX0xFTl9NQVNLCQkweDAwMDFmZmYKKworI2RlZmluZSBUVl9IX0NUTF8zCQkweDY4MDM4CisvKiogRW5kIG9mIGhibGFuaywgbWVhc3VyZWQgaW4gcGl4ZWxzIG1pbnVzIG9uZSBmcm9tIHN0YXJ0IG9mIGhzeW5jICovCisjIGRlZmluZSBUVl9IQkxBTktfRU5EX1NISUZUCQkxNgorIyBkZWZpbmUgVFZfSEJMQU5LX0VORF9NQVNLCQkweDFmZmYwMDAwCisvKiogU3RhcnQgb2YgaGJsYW5rLCBtZWFzdXJlZCBpbiBwaXhlbHMgbWludXMgb25lIGZyb20gc3RhcnQgb2YgaHN5bmMgKi8KKyMgZGVmaW5lIFRWX0hCTEFOS19TVEFSVF9TSElGVAkJMAorIyBkZWZpbmUgVFZfSEJMQU5LX1NUQVJUX01BU0sJCTB4MDAwMWZmZgorCisjZGVmaW5lIFRWX1ZfQ1RMXzEJCTB4NjgwM2MKKy8qKiBYWFggKi8KKyMgZGVmaW5lIFRWX05CUl9FTkRfU0hJRlQJCTE2CisjIGRlZmluZSBUVl9OQlJfRU5EX01BU0sJCTB4MDdmZjAwMDAKKy8qKiBYWFggKi8KKyMgZGVmaW5lIFRWX1ZJX0VORF9GMV9TSElGVAkJOAorIyBkZWZpbmUgVFZfVklfRU5EX0YxX01BU0sJCTB4MDAwMDNmMDAKKy8qKiBYWFggKi8KKyMgZGVmaW5lIFRWX1ZJX0VORF9GMl9TSElGVAkJMAorIyBkZWZpbmUgVFZfVklfRU5EX0YyX01BU0sJCTB4MDAwMDAwM2YKKworI2RlZmluZSBUVl9WX0NUTF8yCQkweDY4MDQwCisvKiogTGVuZ3RoIG9mIHZzeW5jLCBpbiBoYWxmIGxpbmVzICovCisjIGRlZmluZSBUVl9WU1lOQ19MRU5fTUFTSwkJMHgwN2ZmMDAwMAorIyBkZWZpbmUgVFZfVlNZTkNfTEVOX1NISUZUCQkxNgorLyoqIE9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdnN5bmMgaW4gZmllbGQgMSwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbiB0aGUKKyAqIG51bWJlciBvZiBoYWxmIGxpbmVzLgorICovCisjIGRlZmluZSBUVl9WU1lOQ19TVEFSVF9GMV9NQVNLCQkweDAwMDA3ZjAwCisjIGRlZmluZSBUVl9WU1lOQ19TVEFSVF9GMV9TSElGVAk4CisvKioKKyAqIE9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdnN5bmMgaW4gZmllbGQgMiwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbiB0aGUKKyAqIG51bWJlciBvZiBoYWxmIGxpbmVzLgorICovCisjIGRlZmluZSBUVl9WU1lOQ19TVEFSVF9GMl9NQVNLCQkweDAwMDAwMDdmCisjIGRlZmluZSBUVl9WU1lOQ19TVEFSVF9GMl9TSElGVAkwCisKKyNkZWZpbmUgVFZfVl9DVExfMwkJMHg2ODA0NAorLyoqIEVuYWJsZXMgZ2VuZXJhdGlvbiBvZiB0aGUgZXF1YWxpemF0aW9uIHNpZ25hbCAqLworIyBkZWZpbmUgVFZfRVFVQUxfRU5BCQkJKDEgPDwgMzEpCisvKiogTGVuZ3RoIG9mIHZzeW5jLCBpbiBoYWxmIGxpbmVzICovCisjIGRlZmluZSBUVl9WRVFfTEVOX01BU0sJCTB4MDA3ZjAwMDAKKyMgZGVmaW5lIFRWX1ZFUV9MRU5fU0hJRlQJCTE2CisvKiogT2Zmc2V0IG9mIHRoZSBzdGFydCBvZiBlcXVhbGl6YXRpb24gaW4gZmllbGQgMSwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbgorICogdGhlIG51bWJlciBvZiBoYWxmIGxpbmVzLgorICovCisjIGRlZmluZSBUVl9WRVFfU1RBUlRfRjFfTUFTSwkJMHgwMDA3ZjAwCisjIGRlZmluZSBUVl9WRVFfU1RBUlRfRjFfU0hJRlQJCTgKKy8qKgorICogT2Zmc2V0IG9mIHRoZSBzdGFydCBvZiBlcXVhbGl6YXRpb24gaW4gZmllbGQgMiwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbgorICogdGhlIG51bWJlciBvZiBoYWxmIGxpbmVzLgorICovCisjIGRlZmluZSBUVl9WRVFfU1RBUlRfRjJfTUFTSwkJMHgwMDAwMDdmCisjIGRlZmluZSBUVl9WRVFfU1RBUlRfRjJfU0hJRlQJCTAKKworI2RlZmluZSBUVl9WX0NUTF80CQkweDY4MDQ4CisvKioKKyAqIE9mZnNldCB0byBzdGFydCBvZiB2ZXJ0aWNhbCBjb2xvcmJ1cnN0LCBtZWFzdXJlZCBpbiBvbmUgbGVzcyB0aGFuIHRoZQorICogbnVtYmVyIG9mIGxpbmVzIGZyb20gdmVydGljYWwgc3RhcnQuCisgKi8KKyMgZGVmaW5lIFRWX1ZCVVJTVF9TVEFSVF9GMV9NQVNLCTB4MDAzZjAwMDAKKyMgZGVmaW5lIFRWX1ZCVVJTVF9TVEFSVF9GMV9TSElGVAkxNgorLyoqCisgKiBPZmZzZXQgdG8gdGhlIGVuZCBvZiB2ZXJ0aWNhbCBjb2xvcmJ1cnN0LCBtZWFzdXJlZCBpbiBvbmUgbGVzcyB0aGFuIHRoZQorICogbnVtYmVyIG9mIGxpbmVzIGZyb20gdGhlIHN0YXJ0IG9mIE5CUi4KKyAqLworIyBkZWZpbmUgVFZfVkJVUlNUX0VORF9GMV9NQVNLCQkweDAwMDAwMGZmCisjIGRlZmluZSBUVl9WQlVSU1RfRU5EX0YxX1NISUZUCQkwCisKKyNkZWZpbmUgVFZfVl9DVExfNQkJMHg2ODA0YworLyoqCisgKiBPZmZzZXQgdG8gc3RhcnQgb2YgdmVydGljYWwgY29sb3JidXJzdCwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbiB0aGUKKyAqIG51bWJlciBvZiBsaW5lcyBmcm9tIHZlcnRpY2FsIHN0YXJ0LgorICovCisjIGRlZmluZSBUVl9WQlVSU1RfU1RBUlRfRjJfTUFTSwkweDAwM2YwMDAwCisjIGRlZmluZSBUVl9WQlVSU1RfU1RBUlRfRjJfU0hJRlQJMTYKKy8qKgorICogT2Zmc2V0IHRvIHRoZSBlbmQgb2YgdmVydGljYWwgY29sb3JidXJzdCwgbWVhc3VyZWQgaW4gb25lIGxlc3MgdGhhbiB0aGUKKyAqIG51bWJlciBvZiBsaW5lcyBmcm9tIHRoZSBzdGFydCBvZiBOQlIuCisgKi8KKyMgZGVmaW5lIFRWX1ZCVVJTVF9FTkRfRjJfTUFTSwkJMHgwMDAwMDBmZgorIyBkZWZpbmUgVFZfVkJVUlNUX0VORF9GMl9TSElGVAkJMAorCisjZGVmaW5lIFRWX1ZfQ1RMXzYJCTB4NjgwNTAKKy8qKgorICogT2Zmc2V0IHRvIHN0YXJ0IG9mIHZlcnRpY2FsIGNvbG9yYnVyc3QsIG1lYXN1cmVkIGluIG9uZSBsZXNzIHRoYW4gdGhlCisgKiBudW1iZXIgb2YgbGluZXMgZnJvbSB2ZXJ0aWNhbCBzdGFydC4KKyAqLworIyBkZWZpbmUgVFZfVkJVUlNUX1NUQVJUX0YzX01BU0sJMHgwMDNmMDAwMAorIyBkZWZpbmUgVFZfVkJVUlNUX1NUQVJUX0YzX1NISUZUCTE2CisvKioKKyAqIE9mZnNldCB0byB0aGUgZW5kIG9mIHZlcnRpY2FsIGNvbG9yYnVyc3QsIG1lYXN1cmVkIGluIG9uZSBsZXNzIHRoYW4gdGhlCisgKiBudW1iZXIgb2YgbGluZXMgZnJvbSB0aGUgc3RhcnQgb2YgTkJSLgorICovCisjIGRlZmluZSBUVl9WQlVSU1RfRU5EX0YzX01BU0sJCTB4MDAwMDAwZmYKKyMgZGVmaW5lIFRWX1ZCVVJTVF9FTkRfRjNfU0hJRlQJCTAKKworI2RlZmluZSBUVl9WX0NUTF83CQkweDY4MDU0CisvKioKKyAqIE9mZnNldCB0byBzdGFydCBvZiB2ZXJ0aWNhbCBjb2xvcmJ1cnN0LCBtZWFzdXJlZCBpbiBvbmUgbGVzcyB0aGFuIHRoZQorICogbnVtYmVyIG9mIGxpbmVzIGZyb20gdmVydGljYWwgc3RhcnQuCisgKi8KKyMgZGVmaW5lIFRWX1ZCVVJTVF9TVEFSVF9GNF9NQVNLCTB4MDAzZjAwMDAKKyMgZGVmaW5lIFRWX1ZCVVJTVF9TVEFSVF9GNF9TSElGVAkxNgorLyoqCisgKiBPZmZzZXQgdG8gdGhlIGVuZCBvZiB2ZXJ0aWNhbCBjb2xvcmJ1cnN0LCBtZWFzdXJlZCBpbiBvbmUgbGVzcyB0aGFuIHRoZQorICogbnVtYmVyIG9mIGxpbmVzIGZyb20gdGhlIHN0YXJ0IG9mIE5CUi4KKyAqLworIyBkZWZpbmUgVFZfVkJVUlNUX0VORF9GNF9NQVNLCQkweDAwMDAwMGZmCisjIGRlZmluZSBUVl9WQlVSU1RfRU5EX0Y0X1NISUZUCQkwCisKKyNkZWZpbmUgVFZfU0NfQ1RMXzEJCTB4NjgwNjAKKy8qKiBUdXJucyBvbiB0aGUgZmlyc3Qgc3ViY2FycmllciBwaGFzZSBnZW5lcmF0aW9uIEREQSAqLworIyBkZWZpbmUgVFZfU0NfRERBMV9FTgkJCSgxIDw8IDMxKQorLyoqIFR1cm5zIG9uIHRoZSBmaXJzdCBzdWJjYXJyaWVyIHBoYXNlIGdlbmVyYXRpb24gRERBICovCisjIGRlZmluZSBUVl9TQ19EREEyX0VOCQkJKDEgPDwgMzApCisvKiogVHVybnMgb24gdGhlIGZpcnN0IHN1YmNhcnJpZXIgcGhhc2UgZ2VuZXJhdGlvbiBEREEgKi8KKyMgZGVmaW5lIFRWX1NDX0REQTNfRU4JCQkoMSA8PCAyOSkKKy8qKiBTZXRzIHRoZSBzdWJjYXJyaWVyIEREQSB0byByZXNldCBmcmVxdWVuY3kgZXZlcnkgb3RoZXIgZmllbGQgKi8KKyMgZGVmaW5lIFRWX1NDX1JFU0VUX0VWRVJZXzIJCSgwIDw8IDI0KQorLyoqIFNldHMgdGhlIHN1YmNhcnJpZXIgRERBIHRvIHJlc2V0IGZyZXF1ZW5jeSBldmVyeSBmb3VydGggZmllbGQgKi8KKyMgZGVmaW5lIFRWX1NDX1JFU0VUX0VWRVJZXzQJCSgxIDw8IDI0KQorLyoqIFNldHMgdGhlIHN1YmNhcnJpZXIgRERBIHRvIHJlc2V0IGZyZXF1ZW5jeSBldmVyeSBlaWdodGggZmllbGQgKi8KKyMgZGVmaW5lIFRWX1NDX1JFU0VUX0VWRVJZXzgJCSgyIDw8IDI0KQorLyoqIFNldHMgdGhlIHN1YmNhcnJpZXIgRERBIHRvIG5ldmVyIHJlc2V0IHRoZSBmcmVxdWVuY3kgKi8KKyMgZGVmaW5lIFRWX1NDX1JFU0VUX05FVkVSCQkoMyA8PCAyNCkKKy8qKiBTZXRzIHRoZSBwZWFrIGFtcGxpdHVkZSBvZiB0aGUgY29sb3JidXJzdC4qLworIyBkZWZpbmUgVFZfQlVSU1RfTEVWRUxfTUFTSwkJMHgwMGZmMDAwMAorIyBkZWZpbmUgVFZfQlVSU1RfTEVWRUxfU0hJRlQJCTE2CisvKiogU2V0cyB0aGUgaW5jcmVtZW50IG9mIHRoZSBmaXJzdCBzdWJjYXJyaWVyIHBoYXNlIGdlbmVyYXRpb24gRERBICovCisjIGRlZmluZSBUVl9TQ0REQTFfSU5DX01BU0sJCTB4MDAwMDBmZmYKKyMgZGVmaW5lIFRWX1NDRERBMV9JTkNfU0hJRlQJCTAKKworI2RlZmluZSBUVl9TQ19DVExfMgkJMHg2ODA2NAorLyoqIFNldHMgdGhlIHJvbGxvdmVyIGZvciB0aGUgc2Vjb25kIHN1YmNhcnJpZXIgcGhhc2UgZ2VuZXJhdGlvbiBEREEgKi8KKyMgZGVmaW5lIFRWX1NDRERBMl9TSVpFX01BU0sJCTB4N2ZmZjAwMDAKKyMgZGVmaW5lIFRWX1NDRERBMl9TSVpFX1NISUZUCQkxNgorLyoqIFNldHMgdGhlIGluY3JlZW50IG9mIHRoZSBzZWNvbmQgc3ViY2FycmllciBwaGFzZSBnZW5lcmF0aW9uIEREQSAqLworIyBkZWZpbmUgVFZfU0NEREEyX0lOQ19NQVNLCQkweDAwMDA3ZmZmCisjIGRlZmluZSBUVl9TQ0REQTJfSU5DX1NISUZUCQkwCisKKyNkZWZpbmUgVFZfU0NfQ1RMXzMJCTB4NjgwNjgKKy8qKiBTZXRzIHRoZSByb2xsb3ZlciBmb3IgdGhlIHRoaXJkIHN1YmNhcnJpZXIgcGhhc2UgZ2VuZXJhdGlvbiBEREEgKi8KKyMgZGVmaW5lIFRWX1NDRERBM19TSVpFX01BU0sJCTB4N2ZmZjAwMDAKKyMgZGVmaW5lIFRWX1NDRERBM19TSVpFX1NISUZUCQkxNgorLyoqIFNldHMgdGhlIGluY3JlZW50IG9mIHRoZSB0aGlyZCBzdWJjYXJyaWVyIHBoYXNlIGdlbmVyYXRpb24gRERBICovCisjIGRlZmluZSBUVl9TQ0REQTNfSU5DX01BU0sJCTB4MDAwMDdmZmYKKyMgZGVmaW5lIFRWX1NDRERBM19JTkNfU0hJRlQJCTAKKworI2RlZmluZSBUVl9XSU5fUE9TCQkweDY4MDcwCisvKiogWCBjb29yZGluYXRlIG9mIHRoZSBkaXNwbGF5IGZyb20gdGhlIHN0YXJ0IG9mIGhvcml6b250YWwgYWN0aXZlICovCisjIGRlZmluZSBUVl9YUE9TX01BU0sJCQkweDFmZmYwMDAwCisjIGRlZmluZSBUVl9YUE9TX1NISUZUCQkJMTYKKy8qKiBZIGNvb3JkaW5hdGUgb2YgdGhlIGRpc3BsYXkgZnJvbSB0aGUgc3RhcnQgb2YgdmVydGljYWwgYWN0aXZlIChOQlIpICovCisjIGRlZmluZSBUVl9ZUE9TX01BU0sJCQkweDAwMDAwZmZmCisjIGRlZmluZSBUVl9ZUE9TX1NISUZUCQkJMAorCisjZGVmaW5lIFRWX1dJTl9TSVpFCQkweDY4MDc0CisvKiogSG9yaXpvbnRhbCBzaXplIG9mIHRoZSBkaXNwbGF5IHdpbmRvdywgbWVhc3VyZWQgaW4gcGl4ZWxzKi8KKyMgZGVmaW5lIFRWX1hTSVpFX01BU0sJCQkweDFmZmYwMDAwCisjIGRlZmluZSBUVl9YU0laRV9TSElGVAkJCTE2CisvKioKKyAqIFZlcnRpY2FsIHNpemUgb2YgdGhlIGRpc3BsYXkgd2luZG93LCBtZWFzdXJlZCBpbiBwaXhlbHMuCisgKgorICogTXVzdCBiZSBldmVuIGZvciBpbnRlcmxhY2VkIG1vZGVzLgorICovCisjIGRlZmluZSBUVl9ZU0laRV9NQVNLCQkJMHgwMDAwMGZmZgorIyBkZWZpbmUgVFZfWVNJWkVfU0hJRlQJCQkwCisKKyNkZWZpbmUgVFZfRklMVEVSX0NUTF8xCQkweDY4MDgwCisvKioKKyAqIEVuYWJsZXMgYXV0b21hdGljIHNjYWxpbmcgY2FsY3VsYXRpb24uCisgKgorICogSWYgc2V0LCB0aGUgcmVzdCBvZiB0aGUgcmVnaXN0ZXJzIGFyZSBpZ25vcmVkLCBhbmQgdGhlIGNhbGN1bGF0ZWQgdmFsdWVzIGNhbgorICogYmUgcmVhZCBiYWNrIGZyb20gdGhlIHJlZ2lzdGVyLgorICovCisjIGRlZmluZSBUVl9BVVRPX1NDQUxFCQkJKDEgPDwgMzEpCisvKioKKyAqIERpc2FibGVzIHRoZSB2ZXJ0aWNhbCBmaWx0ZXIuCisgKgorICogVGhpcyBpcyByZXF1aXJlZCBvbiBtb2RlcyBtb3JlIHRoYW4gMTAyNCBwaXhlbHMgd2lkZSAqLworIyBkZWZpbmUgVFZfVl9GSUxURVJfQllQQVNTCQkoMSA8PCAyOSkKKy8qKiBFbmFibGVzIGFkYXB0aXZlIHZlcnRpY2FsIGZpbHRlcmluZyAqLworIyBkZWZpbmUgVFZfVkFEQVBUCQkJKDEgPDwgMjgpCisjIGRlZmluZSBUVl9WQURBUFRfTU9ERV9NQVNLCQkoMyA8PCAyNikKKy8qKiBTZWxlY3RzIHRoZSBsZWFzdCBhZGFwdGl2ZSB2ZXJ0aWNhbCBmaWx0ZXJpbmcgbW9kZSAqLworIyBkZWZpbmUgVFZfVkFEQVBUX01PREVfTEVBU1QJCSgwIDw8IDI2KQorLyoqIFNlbGVjdHMgdGhlIG1vZGVyYXRlbHkgYWRhcHRpdmUgdmVydGljYWwgZmlsdGVyaW5nIG1vZGUgKi8KKyMgZGVmaW5lIFRWX1ZBREFQVF9NT0RFX01PREVSQVRFCSgxIDw8IDI2KQorLyoqIFNlbGVjdHMgdGhlIG1vc3QgYWRhcHRpdmUgdmVydGljYWwgZmlsdGVyaW5nIG1vZGUgKi8KKyMgZGVmaW5lIFRWX1ZBREFQVF9NT0RFX01PU1QJCSgzIDw8IDI2KQorLyoqCisgKiBTZXRzIHRoZSBob3Jpem9udGFsIHNjYWxpbmcgZmFjdG9yLgorICoKKyAqIFRoaXMgc2hvdWxkIGJlIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIGhvcml6b250YWwgc2NhbGluZyBmYWN0b3IgZGl2aWRlZAorICogYnkgdGhlIG92ZXJzYW1wbGluZyByYXRlLiAgVFZfSFNDQUxFIHNob3VsZCBiZSBsZXNzIHRoYW4gMSwgYW5kIHNldCB0bzoKKyAqCisgKiAoc3JjIHdpZHRoIC0gMSkgLyAoKG92ZXJzYW1wbGUgKiBkZXN0IHdpZHRoKSAtIDEpCisgKi8KKyMgZGVmaW5lIFRWX0hTQ0FMRV9GUkFDX01BU0sJCTB4MDAwMDNmZmYKKyMgZGVmaW5lIFRWX0hTQ0FMRV9GUkFDX1NISUZUCQkwCisKKyNkZWZpbmUgVFZfRklMVEVSX0NUTF8yCQkweDY4MDg0CisvKioKKyAqIFNldHMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgMy4xNSBmaXhlZC1wb2ludCB2ZXJ0aWNhbCBzY2FsaW5nIGZhY3Rvci4KKyAqCisgKiBUVl9WU0NBTEUgc2hvdWxkIGJlIChzcmMgaGVpZ2h0IC0gMSkgLyAoKGludGVybGFjZSAqIGRlc3QgaGVpZ2h0KSAtIDEpCisgKi8KKyMgZGVmaW5lIFRWX1ZTQ0FMRV9JTlRfTUFTSwkJMHgwMDAzODAwMAorIyBkZWZpbmUgVFZfVlNDQUxFX0lOVF9TSElGVAkJMTUKKy8qKgorICogU2V0cyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSAzLjE1IGZpeGVkLXBvaW50IHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yLgorICoKKyAqIFxzYSBUVl9WU0NBTEVfSU5UX01BU0sKKyAqLworIyBkZWZpbmUgVFZfVlNDQUxFX0ZSQUNfTUFTSwkJMHgwMDAwN2ZmZgorIyBkZWZpbmUgVFZfVlNDQUxFX0ZSQUNfU0hJRlQJCTAKKworI2RlZmluZSBUVl9GSUxURVJfQ1RMXzMJCTB4NjgwODgKKy8qKgorICogU2V0cyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSAzLjE1IGZpeGVkLXBvaW50IHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yLgorICoKKyAqIFRWX1ZTQ0FMRSBzaG91bGQgYmUgKHNyYyBoZWlnaHQgLSAxKSAvICgxLzQgKiAoZGVzdCBoZWlnaHQgLSAxKSkKKyAqCisgKiBGb3IgcHJvZ3Jlc3NpdmUgbW9kZXMsIFRWX1ZTQ0FMRV9JUF9JTlQgc2hvdWxkIGJlIHNldCB0byB6ZXJvZXMuCisgKi8KKyMgZGVmaW5lIFRWX1ZTQ0FMRV9JUF9JTlRfTUFTSwkJMHgwMDAzODAwMAorIyBkZWZpbmUgVFZfVlNDQUxFX0lQX0lOVF9TSElGVAkJMTUKKy8qKgorICogU2V0cyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSAzLjE1IGZpeGVkLXBvaW50IHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yLgorICoKKyAqIEZvciBwcm9ncmVzc2l2ZSBtb2RlcywgVFZfVlNDQUxFX0lQX0lOVCBzaG91bGQgYmUgc2V0IHRvIHplcm9lcy4KKyAqCisgKiBcc2EgVFZfVlNDQUxFX0lQX0lOVF9NQVNLCisgKi8KKyMgZGVmaW5lIFRWX1ZTQ0FMRV9JUF9GUkFDX01BU0sJCTB4MDAwMDdmZmYKKyMgZGVmaW5lIFRWX1ZTQ0FMRV9JUF9GUkFDX1NISUZUCQkwCisKKyNkZWZpbmUgVFZfQ0NfQ09OVFJPTAkJMHg2ODA5MAorIyBkZWZpbmUgVFZfQ0NfRU5BQkxFCQkJKDEgPDwgMzEpCisvKioKKyAqIFNwZWNpZmllcyB3aGljaCBmaWVsZCB0byBzZW5kIHRoZSBDQyBkYXRhIGluLgorICoKKyAqIENDIGRhdGEgaXMgdXN1YWxseSBzZW50IGluIGZpZWxkIDAuCisgKi8KKyMgZGVmaW5lIFRWX0NDX0ZJRF9NQVNLCQkJKDEgPDwgMjcpCisjIGRlZmluZSBUVl9DQ19GSURfU0hJRlQJCTI3CisvKiogU2V0cyB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgQ0MgZGF0YS4gIFVzdWFsbHkgMTM1LiAqLworIyBkZWZpbmUgVFZfQ0NfSE9GRl9NQVNLCQkweDAzZmYwMDAwCisjIGRlZmluZSBUVl9DQ19IT0ZGX1NISUZUCQkxNgorLyoqIFNldHMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSBDQyBkYXRhLiAgVXN1YWxseSAyMSAqLworIyBkZWZpbmUgVFZfQ0NfTElORV9NQVNLCQkweDAwMDAwMDNmCisjIGRlZmluZSBUVl9DQ19MSU5FX1NISUZUCQkwCisKKyNkZWZpbmUgVFZfQ0NfREFUQQkJMHg2ODA5NAorIyBkZWZpbmUgVFZfQ0NfUkRZCQkJKDEgPDwgMzEpCisvKiogU2Vjb25kIHdvcmQgb2YgQ0MgZGF0YSB0byBiZSB0cmFuc21pdHRlZC4gKi8KKyMgZGVmaW5lIFRWX0NDX0RBVEFfMl9NQVNLCQkweDAwN2YwMDAwCisjIGRlZmluZSBUVl9DQ19EQVRBXzJfU0hJRlQJCTE2CisvKiogRmlyc3Qgd29yZCBvZiBDQyBkYXRhIHRvIGJlIHRyYW5zbWl0dGVkLiAqLworIyBkZWZpbmUgVFZfQ0NfREFUQV8xX01BU0sJCTB4MDAwMDAwN2YKKyMgZGVmaW5lIFRWX0NDX0RBVEFfMV9TSElGVAkJMAorCisjZGVmaW5lIFRWX0hfTFVNQV8wCQkweDY4MTAwCisjZGVmaW5lIFRWX0hfTFVNQV81OQkJMHg2ODFlYworI2RlZmluZSBUVl9IX0NIUk9NQV8wCQkweDY4MjAwCisjZGVmaW5lIFRWX0hfQ0hST01BXzU5CQkweDY4MmVjCisjZGVmaW5lIFRWX1ZfTFVNQV8wCQkweDY4MzAwCisjZGVmaW5lIFRWX1ZfTFVNQV80MgkJMHg2ODNhOAorI2RlZmluZSBUVl9WX0NIUk9NQV8wCQkweDY4NDAwCisjZGVmaW5lIFRWX1ZfQ0hST01BXzQyCQkweDY4NGE4CisKKy8qIERpc3BsYXkgJiBjdXJzb3IgY29udHJvbCAqLworCisvKiBQaXBlIEEgKi8KKyNkZWZpbmUgUElQRUFEU0wJCTB4NzAwMDAKKyNkZWZpbmUgUElQRUFDT05GCQkweDcwMDA4CisjZGVmaW5lICAgUElQRUFDT05GX0VOQUJMRQkoMTw8MzEpCisjZGVmaW5lICAgUElQRUFDT05GX0RJU0FCTEUJMAorI2RlZmluZSAgIFBJUEVBQ09ORl9ET1VCTEVfV0lERQkoMTw8MzApCisjZGVmaW5lICAgSTk2NV9QSVBFQ09ORl9BQ1RJVkUJKDE8PDMwKQorI2RlZmluZSAgIFBJUEVBQ09ORl9TSU5HTEVfV0lERQkwCisjZGVmaW5lICAgUElQRUFDT05GX1BJUEVfVU5MT0NLRUQgMAorI2RlZmluZSAgIFBJUEVBQ09ORl9QSVBFX0xPQ0tFRAkoMTw8MjUpCisjZGVmaW5lICAgUElQRUFDT05GX1BBTEVUVEUJMAorI2RlZmluZSAgIFBJUEVBQ09ORl9HQU1NQQkJKDE8PDI0KQorI2RlZmluZSAgIFBJUEVDT05GX0ZPUkNFX0JPUkRFUgkoMTw8MjUpCisjZGVmaW5lICAgUElQRUNPTkZfUFJPR1JFU1NJVkUJKDAgPDwgMjEpCisjZGVmaW5lICAgUElQRUNPTkZfSU5URVJMQUNFX1dfRklFTERfSU5ESUNBVElPTgkoNiA8PCAyMSkKKyNkZWZpbmUgICBQSVBFQ09ORl9JTlRFUkxBQ0VfRklFTERfMF9PTkxZCQkoNyA8PCAyMSkKKyNkZWZpbmUgUElQRUFTVEFUCQkweDcwMDI0CisjZGVmaW5lICAgUElQRV9GSUZPX1VOREVSUlVOX1NUQVRVUwkJKDFVTDw8MzEpCisjZGVmaW5lICAgUElQRV9DUkNfRVJST1JfRU5BQkxFCQkJKDFVTDw8MjkpCisjZGVmaW5lICAgUElQRV9DUkNfRE9ORV9FTkFCTEUJCQkoMVVMPDwyOCkKKyNkZWZpbmUgICBQSVBFX0dNQlVTX0VWRU5UX0VOQUJMRQkJKDFVTDw8MjcpCisjZGVmaW5lICAgUElQRV9IT1RQTFVHX0lOVEVSUlVQVF9FTkFCTEUJCSgxVUw8PDI2KQorI2RlZmluZSAgIFBJUEVfVlNZTkNfSU5URVJSVVBUX0VOQUJMRQkJKDFVTDw8MjUpCisjZGVmaW5lICAgUElQRV9ESVNQTEFZX0xJTkVfQ09NUEFSRV9FTkFCTEUJKDFVTDw8MjQpCisjZGVmaW5lICAgUElQRV9EUFNUX0VWRU5UX0VOQUJMRQkJKDFVTDw8MjMpCisjZGVmaW5lICAgUElQRV9MRUdBQ1lfQkxDX0VWRU5UX0VOQUJMRQkJKDFVTDw8MjIpCisjZGVmaW5lICAgUElQRV9PRERfRklFTERfSU5URVJSVVBUX0VOQUJMRQkoMVVMPDwyMSkKKyNkZWZpbmUgICBQSVBFX0VWRU5fRklFTERfSU5URVJSVVBUX0VOQUJMRQkoMVVMPDwyMCkKKyNkZWZpbmUgICBQSVBFX0hPVFBMVUdfVFZfSU5URVJSVVBUX0VOQUJMRQkoMVVMPDwxOCkgLyogcHJlLTk2NSAqLworI2RlZmluZSAgIFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUJKDFVTDw8MTgpIC8qIDk2NSBvciBsYXRlciAqLworI2RlZmluZSAgIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9FTkFCTEUJCSgxVUw8PDE3KQorI2RlZmluZSAgIFBJUEVfT1ZFUkxBWV9VUERBVEVEX0VOQUJMRQkJKDFVTDw8MTYpCisjZGVmaW5lICAgUElQRV9DUkNfRVJST1JfSU5URVJSVVBUX1NUQVRVUwkoMVVMPDwxMykKKyNkZWZpbmUgICBQSVBFX0NSQ19ET05FX0lOVEVSUlVQVF9TVEFUVVMJKDFVTDw8MTIpCisjZGVmaW5lICAgUElQRV9HTUJVU19JTlRFUlJVUFRfU1RBVFVTCQkoMVVMPDwxMSkKKyNkZWZpbmUgICBQSVBFX0hPVFBMVUdfSU5URVJSVVBUX1NUQVRVUwkJKDFVTDw8MTApCisjZGVmaW5lICAgUElQRV9WU1lOQ19JTlRFUlJVUFRfU1RBVFVTCQkoMVVMPDw5KQorI2RlZmluZSAgIFBJUEVfRElTUExBWV9MSU5FX0NPTVBBUkVfU1RBVFVTCSgxVUw8PDgpCisjZGVmaW5lICAgUElQRV9EUFNUX0VWRU5UX1NUQVRVUwkJKDFVTDw8NykKKyNkZWZpbmUgICBQSVBFX0xFR0FDWV9CTENfRVZFTlRfU1RBVFVTCQkoMVVMPDw2KQorI2RlZmluZSAgIFBJUEVfT0REX0ZJRUxEX0lOVEVSUlVQVF9TVEFUVVMJKDFVTDw8NSkKKyNkZWZpbmUgICBQSVBFX0VWRU5fRklFTERfSU5URVJSVVBUX1NUQVRVUwkoMVVMPDw0KQorI2RlZmluZSAgIFBJUEVfSE9UUExVR19UVl9JTlRFUlJVUFRfU1RBVFVTCSgxVUw8PDIpIC8qIHByZS05NjUgKi8KKyNkZWZpbmUgICBQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTCSgxVUw8PDIpIC8qIDk2NSBvciBsYXRlciAqLworI2RlZmluZSAgIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMJCSgxVUw8PDEpCisjZGVmaW5lICAgUElQRV9PVkVSTEFZX1VQREFURURfU1RBVFVTCQkoMVVMPDwwKQorCisjZGVmaW5lIERTUEFSQgkJCTB4NzAwMzAKKyNkZWZpbmUgICBEU1BBUkJfQ1NUQVJUX01BU0sJKDB4N2YgPDwgNykKKyNkZWZpbmUgICBEU1BBUkJfQ1NUQVJUX1NISUZUCTcKKyNkZWZpbmUgICBEU1BBUkJfQlNUQVJUX01BU0sJKDB4N2YpCisjZGVmaW5lICAgRFNQQVJCX0JTVEFSVF9TSElGVAkwCisvKgorICogVGhlIHR3byBwaXBlIGZyYW1lIGNvdW50ZXIgcmVnaXN0ZXJzIGFyZSBub3Qgc3luY2hyb25pemVkLCBzbworICogcmVhZGluZyBhIHN0YWJsZSB2YWx1ZSBpcyBzb21ld2hhdCB0cmlja3kuIFRoZSBmb2xsb3dpbmcgY29kZQorICogc2hvdWxkIHdvcms6CisgKgorICogIGRvIHsKKyAqICAgIGhpZ2gxID0gKChJTlJFRyhQSVBFQUZSQU1FSElHSCkgJiBQSVBFX0ZSQU1FX0hJR0hfTUFTSykgPj4KKyAqICAgICAgICAgICAgIFBJUEVfRlJBTUVfSElHSF9TSElGVDsKKyAqICAgIGxvdzEgPSAgKChJTlJFRyhQSVBFQUZSQU1FUElYRUwpICYgUElQRV9GUkFNRV9MT1dfTUFTSykgPj4KKyAqICAgICAgICAgICAgIFBJUEVfRlJBTUVfTE9XX1NISUZUKTsKKyAqICAgIGhpZ2gyID0gKChJTlJFRyhQSVBFQUZSQU1FSElHSCkgJiBQSVBFX0ZSQU1FX0hJR0hfTUFTSykgPj4KKyAqICAgICAgICAgICAgIFBJUEVfRlJBTUVfSElHSF9TSElGVCk7CisgKiAgfSB3aGlsZSAoaGlnaDEgIT0gaGlnaDIpOworICogIGZyYW1lID0gKGhpZ2gxIDw8IDgpIHwgbG93MTsKKyAqLworI2RlZmluZSBQSVBFQUZSQU1FSElHSCAgICAgICAgICAweDcwMDQwCisjZGVmaW5lICAgUElQRV9GUkFNRV9ISUdIX01BU0sgICAgMHgwMDAwZmZmZgorI2RlZmluZSAgIFBJUEVfRlJBTUVfSElHSF9TSElGVCAgIDAKKyNkZWZpbmUgUElQRUFGUkFNRVBJWEVMICAgICAgICAgMHg3MDA0NAorI2RlZmluZSAgIFBJUEVfRlJBTUVfTE9XX01BU0sgICAgIDB4ZmYwMDAwMDAKKyNkZWZpbmUgICBQSVBFX0ZSQU1FX0xPV19TSElGVCAgICAyNAorI2RlZmluZSAgIFBJUEVfUElYRUxfTUFTSyAgICAgICAgIDB4MDBmZmZmZmYKKyNkZWZpbmUgICBQSVBFX1BJWEVMX1NISUZUICAgICAgICAwCisKKy8qIEN1cnNvciBBICYgQiByZWdzICovCisjZGVmaW5lIENVUkFDTlRSCQkweDcwMDgwCisjZGVmaW5lICAgQ1VSU09SX01PREVfRElTQUJMRSAgIDB4MDAKKyNkZWZpbmUgICBDVVJTT1JfTU9ERV82NF8zMkJfQVggMHgwNworI2RlZmluZSAgIENVUlNPUl9NT0RFXzY0X0FSR0JfQVggKCgxIDw8IDUpIHwgQ1VSU09SX01PREVfNjRfMzJCX0FYKQorI2RlZmluZSAgIE1DVVJTT1JfR0FNTUFfRU5BQkxFICAoMSA8PCAyNikKKyNkZWZpbmUgQ1VSQUJBU0UJCTB4NzAwODQKKyNkZWZpbmUgQ1VSQVBPUwkJCTB4NzAwODgKKyNkZWZpbmUgICBDVVJTT1JfUE9TX01BU0sgICAgICAgMHgwMDdGRgorI2RlZmluZSAgIENVUlNPUl9QT1NfU0lHTiAgICAgICAweDgwMDAKKyNkZWZpbmUgICBDVVJTT1JfWF9TSElGVCAgICAgICAgMAorI2RlZmluZSAgIENVUlNPUl9ZX1NISUZUICAgICAgICAxNgorI2RlZmluZSBDVVJCQ05UUgkJMHg3MDBjMAorI2RlZmluZSBDVVJCQkFTRQkJMHg3MDBjNAorI2RlZmluZSBDVVJCUE9TCQkJMHg3MDBjOAorCisvKiBEaXNwbGF5IEEgY29udHJvbCAqLworI2RlZmluZSBEU1BBQ05UUiAgICAgICAgICAgICAgICAweDcwMTgwCisjZGVmaW5lICAgRElTUExBWV9QTEFORV9FTkFCTEUJCQkoMTw8MzEpCisjZGVmaW5lICAgRElTUExBWV9QTEFORV9ESVNBQkxFCQkJMAorI2RlZmluZSAgIERJU1BQTEFORV9HQU1NQV9FTkFCTEUJCSgxPDwzMCkKKyNkZWZpbmUgICBESVNQUExBTkVfR0FNTUFfRElTQUJMRQkJMAorI2RlZmluZSAgIERJU1BQTEFORV9QSVhGT1JNQVRfTUFTSwkJKDB4Zjw8MjYpCisjZGVmaW5lICAgRElTUFBMQU5FXzhCUFAJCQkoMHgyPDwyNikKKyNkZWZpbmUgICBESVNQUExBTkVfMTVfMTZCUFAJCQkoMHg0PDwyNikKKyNkZWZpbmUgICBESVNQUExBTkVfMTZCUFAJCQkoMHg1PDwyNikKKyNkZWZpbmUgICBESVNQUExBTkVfMzJCUFBfTk9fQUxQSEEJCSgweDY8PDI2KQorI2RlZmluZSAgIERJU1BQTEFORV8zMkJQUAkJCSgweDc8PDI2KQorI2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fRU5BQkxFCQkoMTw8MjUpCisjZGVmaW5lICAgRElTUFBMQU5FX1NURVJFT19ESVNBQkxFCQkwCisjZGVmaW5lICAgRElTUFBMQU5FX1NFTF9QSVBFX01BU0sJCSgxPDwyNCkKKyNkZWZpbmUgICBESVNQUExBTkVfU0VMX1BJUEVfQQkJCTAKKyNkZWZpbmUgICBESVNQUExBTkVfU0VMX1BJUEVfQgkJCSgxPDwyNCkKKyNkZWZpbmUgICBESVNQUExBTkVfU1JDX0tFWV9FTkFCTEUJCSgxPDwyMikKKyNkZWZpbmUgICBESVNQUExBTkVfU1JDX0tFWV9ESVNBQkxFCQkwCisjZGVmaW5lICAgRElTUFBMQU5FX0xJTkVfRE9VQkxFCQkJKDE8PDIwKQorI2RlZmluZSAgIERJU1BQTEFORV9OT19MSU5FX0RPVUJMRQkJMAorI2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfRklSU1QJMAorI2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfU0VDT05ECSgxPDwxOCkKKyNkZWZpbmUgRFNQQUFERFIJCTB4NzAxODQKKyNkZWZpbmUgRFNQQVNUUklERQkJMHg3MDE4OAorI2RlZmluZSBEU1BBUE9TCQkJMHg3MDE4QyAvKiByZXNlcnZlZCAqLworI2RlZmluZSBEU1BBU0laRQkJMHg3MDE5MAorI2RlZmluZSBEU1BBU1VSRgkJMHg3MDE5QyAvKiA5NjUrIG9ubHkgKi8KKyNkZWZpbmUgRFNQQVRJTEVPRkYJCTB4NzAxQTQgLyogOTY1KyBvbmx5ICovCisKKy8qIFZCSU9TIGZsYWdzICovCisjZGVmaW5lIFNXRjAwCQkJMHg3MTQxMAorI2RlZmluZSBTV0YwMQkJCTB4NzE0MTQKKyNkZWZpbmUgU1dGMDIJCQkweDcxNDE4CisjZGVmaW5lIFNXRjAzCQkJMHg3MTQxYworI2RlZmluZSBTV0YwNAkJCTB4NzE0MjAKKyNkZWZpbmUgU1dGMDUJCQkweDcxNDI0CisjZGVmaW5lIFNXRjA2CQkJMHg3MTQyOAorI2RlZmluZSBTV0YxMAkJCTB4NzA0MTAKKyNkZWZpbmUgU1dGMTEJCQkweDcwNDE0CisjZGVmaW5lIFNXRjE0CQkJMHg3MTQyMAorI2RlZmluZSBTV0YzMAkJCTB4NzI0MTQKKyNkZWZpbmUgU1dGMzEJCQkweDcyNDE4CisjZGVmaW5lIFNXRjMyCQkJMHg3MjQxYworCisvKiBQaXBlIEIgKi8KKyNkZWZpbmUgUElQRUJEU0wJCTB4NzEwMDAKKyNkZWZpbmUgUElQRUJDT05GCQkweDcxMDA4CisjZGVmaW5lIFBJUEVCU1RBVAkJMHg3MTAyNAorI2RlZmluZSBQSVBFQkZSQU1FSElHSAkJMHg3MTA0MAorI2RlZmluZSBQSVBFQkZSQU1FUElYRUwJCTB4NzEwNDQKKworLyogRGlzcGxheSBCIGNvbnRyb2wgKi8KKyNkZWZpbmUgRFNQQkNOVFIJCTB4NzExODAKKyNkZWZpbmUgICBESVNQUExBTkVfQUxQSEFfVFJBTlNfRU5BQkxFCQkoMTw8MTUpCisjZGVmaW5lICAgRElTUFBMQU5FX0FMUEhBX1RSQU5TX0RJU0FCTEUJCTAKKyNkZWZpbmUgICBESVNQUExBTkVfU1BSSVRFX0FCT1ZFX0RJU1BMQVkJMAorI2RlZmluZSAgIERJU1BQTEFORV9TUFJJVEVfQUJPVkVfT1ZFUkxBWQkoMSkKKyNkZWZpbmUgRFNQQkFERFIJCTB4NzExODQKKyNkZWZpbmUgRFNQQlNUUklERQkJMHg3MTE4OAorI2RlZmluZSBEU1BCUE9TCQkJMHg3MTE4QworI2RlZmluZSBEU1BCU0laRQkJMHg3MTE5MAorI2RlZmluZSBEU1BCU1VSRgkJMHg3MTE5QworI2RlZmluZSBEU1BCVElMRU9GRgkJMHg3MTFBNAorCisvKiBWQklPUyByZWdzICovCisjZGVmaW5lIFZHQUNOVFJMCQkweDcxNDAwCisjIGRlZmluZSBWR0FfRElTUF9ESVNBQkxFCQkJKDEgPDwgMzEpCisjIGRlZmluZSBWR0FfMlhfTU9ERQkJCQkoMSA8PCAzMCkKKyMgZGVmaW5lIFZHQV9QSVBFX0JfU0VMRUNUCQkJKDEgPDwgMjkpCisKKyNlbmRpZiAvKiBfSTkxNV9SRUdfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzZmU3NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCkBAIC0wLDAgKzEsNTA5IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDA4IChjKSBJbnRlbCBDb3Jwb3JhdGlvbgorICogICBKZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUVU5HU1RFTiBHUkFQSElDUyBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgImRybS5oIgorI2luY2x1ZGUgImk5MTVfZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKworc3RhdGljIGJvb2wgaTkxNV9waXBlX2VuYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChwaXBlID09IFBJUEVfQSkKKwkJcmV0dXJuIChJOTE1X1JFQUQoRFBMTF9BKSAmIERQTExfVkNPX0VOQUJMRSk7CisJZWxzZQorCQlyZXR1cm4gKEk5MTVfUkVBRChEUExMX0IpICYgRFBMTF9WQ09fRU5BQkxFKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9zYXZlX3BhbGV0dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBsb25nIHJlZyA9IChwaXBlID09IFBJUEVfQSA/IFBBTEVUVEVfQSA6IFBBTEVUVEVfQik7CisJdTMyICphcnJheTsKKwlpbnQgaTsKKworCWlmICghaTkxNV9waXBlX2VuYWJsZWQoZGV2LCBwaXBlKSkKKwkJcmV0dXJuOworCisJaWYgKHBpcGUgPT0gUElQRV9BKQorCQlhcnJheSA9IGRldl9wcml2LT5zYXZlX3BhbGV0dGVfYTsKKwllbHNlCisJCWFycmF5ID0gZGV2X3ByaXYtPnNhdmVfcGFsZXR0ZV9iOworCisJZm9yKGkgPSAwOyBpIDwgMjU2OyBpKyspCisJCWFycmF5W2ldID0gSTkxNV9SRUFEKHJlZyArIChpIDw8IDIpKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX3BhbGV0dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBsb25nIHJlZyA9IChwaXBlID09IFBJUEVfQSA/IFBBTEVUVEVfQSA6IFBBTEVUVEVfQik7CisJdTMyICphcnJheTsKKwlpbnQgaTsKKworCWlmICghaTkxNV9waXBlX2VuYWJsZWQoZGV2LCBwaXBlKSkKKwkJcmV0dXJuOworCisJaWYgKHBpcGUgPT0gUElQRV9BKQorCQlhcnJheSA9IGRldl9wcml2LT5zYXZlX3BhbGV0dGVfYTsKKwllbHNlCisJCWFycmF5ID0gZGV2X3ByaXYtPnNhdmVfcGFsZXR0ZV9iOworCisJZm9yKGkgPSAwOyBpIDwgMjU2OyBpKyspCisJCUk5MTVfV1JJVEUocmVnICsgKGkgPDwgMiksIGFycmF5W2ldKTsKK30KKworc3RhdGljIHU4IGk5MTVfcmVhZF9pbmRleGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUxNiBpbmRleF9wb3J0LCB1MTYgZGF0YV9wb3J0LCB1OCByZWcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCUk5MTVfV1JJVEU4KGluZGV4X3BvcnQsIHJlZyk7CisJcmV0dXJuIEk5MTVfUkVBRDgoZGF0YV9wb3J0KTsKK30KKworc3RhdGljIHU4IGk5MTVfcmVhZF9hcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MTYgc3QwMSwgdTggcmVnLCB1MTYgcGFsZXR0ZV9lbmFibGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCUk5MTVfUkVBRDgoc3QwMSk7CisJSTkxNV9XUklURTgoVkdBX0FSX0lOREVYLCBwYWxldHRlX2VuYWJsZSB8IHJlZyk7CisJcmV0dXJuIEk5MTVfUkVBRDgoVkdBX0FSX0RBVEFfUkVBRCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfd3JpdGVfYXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTE2IHN0MDEsIHU4IHJlZywgdTggdmFsLCB1MTYgcGFsZXR0ZV9lbmFibGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCUk5MTVfUkVBRDgoc3QwMSk7CisJSTkxNV9XUklURTgoVkdBX0FSX0lOREVYLCBwYWxldHRlX2VuYWJsZSB8IHJlZyk7CisJSTkxNV9XUklURTgoVkdBX0FSX0RBVEFfV1JJVEUsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfd3JpdGVfaW5kZXhlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MTYgaW5kZXhfcG9ydCwgdTE2IGRhdGFfcG9ydCwgdTggcmVnLCB1OCB2YWwpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCUk5MTVfV1JJVEU4KGluZGV4X3BvcnQsIHJlZyk7CisJSTkxNV9XUklURTgoZGF0YV9wb3J0LCB2YWwpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3NhdmVfdmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgaTsKKwl1MTYgY3JfaW5kZXgsIGNyX2RhdGEsIHN0MDE7CisKKwkvKiBWR0EgY29sb3IgcGFsZXR0ZSByZWdpc3RlcnMgKi8KKwlkZXZfcHJpdi0+c2F2ZURBQ01BU0sgPSBJOTE1X1JFQUQ4KFZHQV9EQUNNQVNLKTsKKwkvKiBEQUNDUlggYXV0b21hdGljYWxseSBpbmNyZW1lbnRzIGR1cmluZyByZWFkICovCisJSTkxNV9XUklURTgoVkdBX0RBQ1JYLCAwKTsKKwkvKiBSZWFkIDMgYnl0ZXMgb2YgY29sb3IgZGF0YSBmcm9tIGVhY2ggaW5kZXggKi8KKwlmb3IgKGkgPSAwOyBpIDwgMjU2ICogMzsgaSsrKQorCQlkZXZfcHJpdi0+c2F2ZURBQ0RBVEFbaV0gPSBJOTE1X1JFQUQ4KFZHQV9EQUNEQVRBKTsKKworCS8qIE1TUiBiaXRzICovCisJZGV2X3ByaXYtPnNhdmVNU1IgPSBJOTE1X1JFQUQ4KFZHQV9NU1JfUkVBRCk7CisJaWYgKGRldl9wcml2LT5zYXZlTVNSICYgVkdBX01TUl9DR0FfTU9ERSkgeworCQljcl9pbmRleCA9IFZHQV9DUl9JTkRFWF9DR0E7CisJCWNyX2RhdGEgPSBWR0FfQ1JfREFUQV9DR0E7CisJCXN0MDEgPSBWR0FfU1QwMV9DR0E7CisJfSBlbHNlIHsKKwkJY3JfaW5kZXggPSBWR0FfQ1JfSU5ERVhfTURBOworCQljcl9kYXRhID0gVkdBX0NSX0RBVEFfTURBOworCQlzdDAxID0gVkdBX1NUMDFfTURBOworCX0KKworCS8qIENSVCBjb250cm9sbGVyIHJlZ3MgKi8KKwlpOTE1X3dyaXRlX2luZGV4ZWQoZGV2LCBjcl9pbmRleCwgY3JfZGF0YSwgMHgxMSwKKwkJCSAgIGk5MTVfcmVhZF9pbmRleGVkKGRldiwgY3JfaW5kZXgsIGNyX2RhdGEsIDB4MTEpICYKKwkJCSAgICh+MHg4MCkpOworCWZvciAoaSA9IDA7IGkgPD0gMHgyNDsgaSsrKQorCQlkZXZfcHJpdi0+c2F2ZUNSW2ldID0KKwkJCWk5MTVfcmVhZF9pbmRleGVkKGRldiwgY3JfaW5kZXgsIGNyX2RhdGEsIGkpOworCS8qIE1ha2Ugc3VyZSB3ZSBkb24ndCB0dXJuIG9mZiBDUiBncm91cCAwIHdyaXRlcyAqLworCWRldl9wcml2LT5zYXZlQ1JbMHgxMV0gJj0gfjB4ODA7CisKKwkvKiBBdHRyaWJ1dGUgY29udHJvbGxlciByZWdpc3RlcnMgKi8KKwlJOTE1X1JFQUQ4KHN0MDEpOworCWRldl9wcml2LT5zYXZlQVJfSU5ERVggPSBJOTE1X1JFQUQ4KFZHQV9BUl9JTkRFWCk7CisJZm9yIChpID0gMDsgaSA8PSAweDE0OyBpKyspCisJCWRldl9wcml2LT5zYXZlQVJbaV0gPSBpOTE1X3JlYWRfYXIoZGV2LCBzdDAxLCBpLCAwKTsKKwlJOTE1X1JFQUQ4KHN0MDEpOworCUk5MTVfV1JJVEU4KFZHQV9BUl9JTkRFWCwgZGV2X3ByaXYtPnNhdmVBUl9JTkRFWCk7CisJSTkxNV9SRUFEOChzdDAxKTsKKworCS8qIEdyYXBoaWNzIGNvbnRyb2xsZXIgcmVnaXN0ZXJzICovCisJZm9yIChpID0gMDsgaSA8IDk7IGkrKykKKwkJZGV2X3ByaXYtPnNhdmVHUltpXSA9CisJCQlpOTE1X3JlYWRfaW5kZXhlZChkZXYsIFZHQV9HUl9JTkRFWCwgVkdBX0dSX0RBVEEsIGkpOworCisJZGV2X3ByaXYtPnNhdmVHUlsweDEwXSA9CisJCWk5MTVfcmVhZF9pbmRleGVkKGRldiwgVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxMCk7CisJZGV2X3ByaXYtPnNhdmVHUlsweDExXSA9CisJCWk5MTVfcmVhZF9pbmRleGVkKGRldiwgVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxMSk7CisJZGV2X3ByaXYtPnNhdmVHUlsweDE4XSA9CisJCWk5MTVfcmVhZF9pbmRleGVkKGRldiwgVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxOCk7CisKKwkvKiBTZXF1ZW5jZXIgcmVnaXN0ZXJzICovCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKwkJZGV2X3ByaXYtPnNhdmVTUltpXSA9CisJCQlpOTE1X3JlYWRfaW5kZXhlZChkZXYsIFZHQV9TUl9JTkRFWCwgVkdBX1NSX0RBVEEsIGkpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfdmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgaTsKKwl1MTYgY3JfaW5kZXgsIGNyX2RhdGEsIHN0MDE7CisKKwkvKiBNU1IgYml0cyAqLworCUk5MTVfV1JJVEU4KFZHQV9NU1JfV1JJVEUsIGRldl9wcml2LT5zYXZlTVNSKTsKKwlpZiAoZGV2X3ByaXYtPnNhdmVNU1IgJiBWR0FfTVNSX0NHQV9NT0RFKSB7CisJCWNyX2luZGV4ID0gVkdBX0NSX0lOREVYX0NHQTsKKwkJY3JfZGF0YSA9IFZHQV9DUl9EQVRBX0NHQTsKKwkJc3QwMSA9IFZHQV9TVDAxX0NHQTsKKwl9IGVsc2UgeworCQljcl9pbmRleCA9IFZHQV9DUl9JTkRFWF9NREE7CisJCWNyX2RhdGEgPSBWR0FfQ1JfREFUQV9NREE7CisJCXN0MDEgPSBWR0FfU1QwMV9NREE7CisJfQorCisJLyogU2VxdWVuY2VyIHJlZ2lzdGVycywgZG9uJ3Qgd3JpdGUgU1IwNyAqLworCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspCisJCWk5MTVfd3JpdGVfaW5kZXhlZChkZXYsIFZHQV9TUl9JTkRFWCwgVkdBX1NSX0RBVEEsIGksCisJCQkJICAgZGV2X3ByaXYtPnNhdmVTUltpXSk7CisKKwkvKiBDUlQgY29udHJvbGxlciByZWdzICovCisJLyogRW5hYmxlIENSIGdyb3VwIDAgd3JpdGVzICovCisJaTkxNV93cml0ZV9pbmRleGVkKGRldiwgY3JfaW5kZXgsIGNyX2RhdGEsIDB4MTEsIGRldl9wcml2LT5zYXZlQ1JbMHgxMV0pOworCWZvciAoaSA9IDA7IGkgPD0gMHgyNDsgaSsrKQorCQlpOTE1X3dyaXRlX2luZGV4ZWQoZGV2LCBjcl9pbmRleCwgY3JfZGF0YSwgaSwgZGV2X3ByaXYtPnNhdmVDUltpXSk7CisKKwkvKiBHcmFwaGljcyBjb250cm9sbGVyIHJlZ3MgKi8KKwlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQorCQlpOTE1X3dyaXRlX2luZGV4ZWQoZGV2LCBWR0FfR1JfSU5ERVgsIFZHQV9HUl9EQVRBLCBpLAorCQkJCSAgIGRldl9wcml2LT5zYXZlR1JbaV0pOworCisJaTkxNV93cml0ZV9pbmRleGVkKGRldiwgVkdBX0dSX0lOREVYLCBWR0FfR1JfREFUQSwgMHgxMCwKKwkJCSAgIGRldl9wcml2LT5zYXZlR1JbMHgxMF0pOworCWk5MTVfd3JpdGVfaW5kZXhlZChkZXYsIFZHQV9HUl9JTkRFWCwgVkdBX0dSX0RBVEEsIDB4MTEsCisJCQkgICBkZXZfcHJpdi0+c2F2ZUdSWzB4MTFdKTsKKwlpOTE1X3dyaXRlX2luZGV4ZWQoZGV2LCBWR0FfR1JfSU5ERVgsIFZHQV9HUl9EQVRBLCAweDE4LAorCQkJICAgZGV2X3ByaXYtPnNhdmVHUlsweDE4XSk7CisKKwkvKiBBdHRyaWJ1dGUgY29udHJvbGxlciByZWdpc3RlcnMgKi8KKwlJOTE1X1JFQUQ4KHN0MDEpOyAvKiBzd2l0Y2ggYmFjayB0byBpbmRleCBtb2RlICovCisJZm9yIChpID0gMDsgaSA8PSAweDE0OyBpKyspCisJCWk5MTVfd3JpdGVfYXIoZGV2LCBzdDAxLCBpLCBkZXZfcHJpdi0+c2F2ZUFSW2ldLCAwKTsKKwlJOTE1X1JFQUQ4KHN0MDEpOyAvKiBzd2l0Y2ggYmFjayB0byBpbmRleCBtb2RlICovCisJSTkxNV9XUklURTgoVkdBX0FSX0lOREVYLCBkZXZfcHJpdi0+c2F2ZUFSX0lOREVYIHwgMHgyMCk7CisJSTkxNV9SRUFEOChzdDAxKTsKKworCS8qIFZHQSBjb2xvciBwYWxldHRlIHJlZ2lzdGVycyAqLworCUk5MTVfV1JJVEU4KFZHQV9EQUNNQVNLLCBkZXZfcHJpdi0+c2F2ZURBQ01BU0spOworCS8qIERBQ0NSWCBhdXRvbWF0aWNhbGx5IGluY3JlbWVudHMgZHVyaW5nIHJlYWQgKi8KKwlJOTE1X1dSSVRFOChWR0FfREFDV1gsIDApOworCS8qIFJlYWQgMyBieXRlcyBvZiBjb2xvciBkYXRhIGZyb20gZWFjaCBpbmRleCAqLworCWZvciAoaSA9IDA7IGkgPCAyNTYgKiAzOyBpKyspCisJCUk5MTVfV1JJVEU4KFZHQV9EQUNEQVRBLCBkZXZfcHJpdi0+c2F2ZURBQ0RBVEFbaV0pOworCit9CisKK2ludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBpOworCisJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LT5wZGV2LCBMQkIsICZkZXZfcHJpdi0+c2F2ZUxCQik7CisKKwkvKiBEaXNwbGF5IGFyYml0cmF0aW9uIGNvbnRyb2wgKi8KKwlkZXZfcHJpdi0+c2F2ZURTUEFSQiA9IEk5MTVfUkVBRChEU1BBUkIpOworCisJLyogUGlwZSAmIHBsYW5lIEEgaW5mbyAqLworCWRldl9wcml2LT5zYXZlUElQRUFDT05GID0gSTkxNV9SRUFEKFBJUEVBQ09ORik7CisJZGV2X3ByaXYtPnNhdmVQSVBFQVNSQyA9IEk5MTVfUkVBRChQSVBFQVNSQyk7CisJZGV2X3ByaXYtPnNhdmVGUEEwID0gSTkxNV9SRUFEKEZQQTApOworCWRldl9wcml2LT5zYXZlRlBBMSA9IEk5MTVfUkVBRChGUEExKTsKKwlkZXZfcHJpdi0+c2F2ZURQTExfQSA9IEk5MTVfUkVBRChEUExMX0EpOworCWlmIChJU19JOTY1RyhkZXYpKQorCQlkZXZfcHJpdi0+c2F2ZURQTExfQV9NRCA9IEk5MTVfUkVBRChEUExMX0FfTUQpOworCWRldl9wcml2LT5zYXZlSFRPVEFMX0EgPSBJOTE1X1JFQUQoSFRPVEFMX0EpOworCWRldl9wcml2LT5zYXZlSEJMQU5LX0EgPSBJOTE1X1JFQUQoSEJMQU5LX0EpOworCWRldl9wcml2LT5zYXZlSFNZTkNfQSA9IEk5MTVfUkVBRChIU1lOQ19BKTsKKwlkZXZfcHJpdi0+c2F2ZVZUT1RBTF9BID0gSTkxNV9SRUFEKFZUT1RBTF9BKTsKKwlkZXZfcHJpdi0+c2F2ZVZCTEFOS19BID0gSTkxNV9SRUFEKFZCTEFOS19BKTsKKwlkZXZfcHJpdi0+c2F2ZVZTWU5DX0EgPSBJOTE1X1JFQUQoVlNZTkNfQSk7CisJZGV2X3ByaXYtPnNhdmVCQ0xSUEFUX0EgPSBJOTE1X1JFQUQoQkNMUlBBVF9BKTsKKworCWRldl9wcml2LT5zYXZlRFNQQUNOVFIgPSBJOTE1X1JFQUQoRFNQQUNOVFIpOworCWRldl9wcml2LT5zYXZlRFNQQVNUUklERSA9IEk5MTVfUkVBRChEU1BBU1RSSURFKTsKKwlkZXZfcHJpdi0+c2F2ZURTUEFTSVpFID0gSTkxNV9SRUFEKERTUEFTSVpFKTsKKwlkZXZfcHJpdi0+c2F2ZURTUEFQT1MgPSBJOTE1X1JFQUQoRFNQQVBPUyk7CisJZGV2X3ByaXYtPnNhdmVEU1BBQUREUiA9IEk5MTVfUkVBRChEU1BBQUREUik7CisJaWYgKElTX0k5NjVHKGRldikpIHsKKwkJZGV2X3ByaXYtPnNhdmVEU1BBU1VSRiA9IEk5MTVfUkVBRChEU1BBU1VSRik7CisJCWRldl9wcml2LT5zYXZlRFNQQVRJTEVPRkYgPSBJOTE1X1JFQUQoRFNQQVRJTEVPRkYpOworCX0KKwlpOTE1X3NhdmVfcGFsZXR0ZShkZXYsIFBJUEVfQSk7CisJZGV2X3ByaXYtPnNhdmVQSVBFQVNUQVQgPSBJOTE1X1JFQUQoUElQRUFTVEFUKTsKKworCS8qIFBpcGUgJiBwbGFuZSBCIGluZm8gKi8KKwlkZXZfcHJpdi0+c2F2ZVBJUEVCQ09ORiA9IEk5MTVfUkVBRChQSVBFQkNPTkYpOworCWRldl9wcml2LT5zYXZlUElQRUJTUkMgPSBJOTE1X1JFQUQoUElQRUJTUkMpOworCWRldl9wcml2LT5zYXZlRlBCMCA9IEk5MTVfUkVBRChGUEIwKTsKKwlkZXZfcHJpdi0+c2F2ZUZQQjEgPSBJOTE1X1JFQUQoRlBCMSk7CisJZGV2X3ByaXYtPnNhdmVEUExMX0IgPSBJOTE1X1JFQUQoRFBMTF9CKTsKKwlpZiAoSVNfSTk2NUcoZGV2KSkKKwkJZGV2X3ByaXYtPnNhdmVEUExMX0JfTUQgPSBJOTE1X1JFQUQoRFBMTF9CX01EKTsKKwlkZXZfcHJpdi0+c2F2ZUhUT1RBTF9CID0gSTkxNV9SRUFEKEhUT1RBTF9CKTsKKwlkZXZfcHJpdi0+c2F2ZUhCTEFOS19CID0gSTkxNV9SRUFEKEhCTEFOS19CKTsKKwlkZXZfcHJpdi0+c2F2ZUhTWU5DX0IgPSBJOTE1X1JFQUQoSFNZTkNfQik7CisJZGV2X3ByaXYtPnNhdmVWVE9UQUxfQiA9IEk5MTVfUkVBRChWVE9UQUxfQik7CisJZGV2X3ByaXYtPnNhdmVWQkxBTktfQiA9IEk5MTVfUkVBRChWQkxBTktfQik7CisJZGV2X3ByaXYtPnNhdmVWU1lOQ19CID0gSTkxNV9SRUFEKFZTWU5DX0IpOworCWRldl9wcml2LT5zYXZlQkNMUlBBVF9BID0gSTkxNV9SRUFEKEJDTFJQQVRfQSk7CisKKwlkZXZfcHJpdi0+c2F2ZURTUEJDTlRSID0gSTkxNV9SRUFEKERTUEJDTlRSKTsKKwlkZXZfcHJpdi0+c2F2ZURTUEJTVFJJREUgPSBJOTE1X1JFQUQoRFNQQlNUUklERSk7CisJZGV2X3ByaXYtPnNhdmVEU1BCU0laRSA9IEk5MTVfUkVBRChEU1BCU0laRSk7CisJZGV2X3ByaXYtPnNhdmVEU1BCUE9TID0gSTkxNV9SRUFEKERTUEJQT1MpOworCWRldl9wcml2LT5zYXZlRFNQQkFERFIgPSBJOTE1X1JFQUQoRFNQQkFERFIpOworCWlmIChJU19JOTY1R00oZGV2KSB8fCBJU19HTTQ1KGRldikpIHsKKwkJZGV2X3ByaXYtPnNhdmVEU1BCU1VSRiA9IEk5MTVfUkVBRChEU1BCU1VSRik7CisJCWRldl9wcml2LT5zYXZlRFNQQlRJTEVPRkYgPSBJOTE1X1JFQUQoRFNQQlRJTEVPRkYpOworCX0KKwlpOTE1X3NhdmVfcGFsZXR0ZShkZXYsIFBJUEVfQik7CisJZGV2X3ByaXYtPnNhdmVQSVBFQlNUQVQgPSBJOTE1X1JFQUQoUElQRUJTVEFUKTsKKworCS8qIENSVCBzdGF0ZSAqLworCWRldl9wcml2LT5zYXZlQURQQSA9IEk5MTVfUkVBRChBRFBBKTsKKworCS8qIExWRFMgc3RhdGUgKi8KKwlkZXZfcHJpdi0+c2F2ZVBQX0NPTlRST0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7CisJZGV2X3ByaXYtPnNhdmVQRklUX1BHTV9SQVRJT1MgPSBJOTE1X1JFQUQoUEZJVF9QR01fUkFUSU9TKTsKKwlkZXZfcHJpdi0+c2F2ZUJMQ19QV01fQ1RMID0gSTkxNV9SRUFEKEJMQ19QV01fQ1RMKTsKKwlpZiAoSVNfSTk2NUcoZGV2KSkKKwkJZGV2X3ByaXYtPnNhdmVCTENfUFdNX0NUTDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwyKTsKKwlpZiAoSVNfTU9CSUxFKGRldikgJiYgIUlTX0k4MzAoZGV2KSkKKwkJZGV2X3ByaXYtPnNhdmVMVkRTID0gSTkxNV9SRUFEKExWRFMpOworCWlmICghSVNfSTgzMChkZXYpICYmICFJU184NDVHKGRldikpCisJCWRldl9wcml2LT5zYXZlUEZJVF9DT05UUk9MID0gSTkxNV9SRUFEKFBGSVRfQ09OVFJPTCk7CisJZGV2X3ByaXYtPnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT05fREVMQVlTKTsKKwlkZXZfcHJpdi0+c2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT0ZGX0RFTEFZUyk7CisJZGV2X3ByaXYtPnNhdmVQUF9ESVZJU09SID0gSTkxNV9SRUFEKFBQX0RJVklTT1IpOworCisJLyogRklYTUU6IHNhdmUgVFYgJiBTRFZPIHN0YXRlICovCisKKwkvKiBGQkMgc3RhdGUgKi8KKwlkZXZfcHJpdi0+c2F2ZUZCQ19DRkJfQkFTRSA9IEk5MTVfUkVBRChGQkNfQ0ZCX0JBU0UpOworCWRldl9wcml2LT5zYXZlRkJDX0xMX0JBU0UgPSBJOTE1X1JFQUQoRkJDX0xMX0JBU0UpOworCWRldl9wcml2LT5zYXZlRkJDX0NPTlRST0wyID0gSTkxNV9SRUFEKEZCQ19DT05UUk9MMik7CisJZGV2X3ByaXYtPnNhdmVGQkNfQ09OVFJPTCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7CisKKwkvKiBJbnRlcnJ1cHQgc3RhdGUgKi8KKwlkZXZfcHJpdi0+c2F2ZUlJUiA9IEk5MTVfUkVBRChJSVIpOworCWRldl9wcml2LT5zYXZlSUVSID0gSTkxNV9SRUFEKElFUik7CisJZGV2X3ByaXYtPnNhdmVJTVIgPSBJOTE1X1JFQUQoSU1SKTsKKworCS8qIFZHQSBzdGF0ZSAqLworCWRldl9wcml2LT5zYXZlVkdBMCA9IEk5MTVfUkVBRChWR0EwKTsKKwlkZXZfcHJpdi0+c2F2ZVZHQTEgPSBJOTE1X1JFQUQoVkdBMSk7CisJZGV2X3ByaXYtPnNhdmVWR0FfUEQgPSBJOTE1X1JFQUQoVkdBX1BEKTsKKwlkZXZfcHJpdi0+c2F2ZVZHQUNOVFJMID0gSTkxNV9SRUFEKFZHQUNOVFJMKTsKKworCS8qIENsb2NrIGdhdGluZyBzdGF0ZSAqLworCWRldl9wcml2LT5zYXZlRF9TVEFURSA9IEk5MTVfUkVBRChEX1NUQVRFKTsKKwlkZXZfcHJpdi0+c2F2ZUNHXzJEX0RJUyA9IEk5MTVfUkVBRChDR18yRF9ESVMpOworCisJLyogQ2FjaGUgbW9kZSBzdGF0ZSAqLworCWRldl9wcml2LT5zYXZlQ0FDSEVfTU9ERV8wID0gSTkxNV9SRUFEKENBQ0hFX01PREVfMCk7CisKKwkvKiBNZW1vcnkgQXJiaXRyYXRpb24gc3RhdGUgKi8KKwlkZXZfcHJpdi0+c2F2ZU1JX0FSQl9TVEFURSA9IEk5MTVfUkVBRChNSV9BUkJfU1RBVEUpOworCisJLyogU2NyYXRjaCBzcGFjZSAqLworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJCWRldl9wcml2LT5zYXZlU1dGMFtpXSA9IEk5MTVfUkVBRChTV0YwMCArIChpIDw8IDIpKTsKKwkJZGV2X3ByaXYtPnNhdmVTV0YxW2ldID0gSTkxNV9SRUFEKFNXRjEwICsgKGkgPDwgMikpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorCQlkZXZfcHJpdi0+c2F2ZVNXRjJbaV0gPSBJOTE1X1JFQUQoU1dGMzAgKyAoaSA8PCAyKSk7CisKKwlpOTE1X3NhdmVfdmdhKGRldik7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IGk7CisKKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LT5wZGV2LCBMQkIsIGRldl9wcml2LT5zYXZlTEJCKTsKKworCUk5MTVfV1JJVEUoRFNQQVJCLCBkZXZfcHJpdi0+c2F2ZURTUEFSQik7CisKKwkvKiBQaXBlICYgcGxhbmUgQSBpbmZvICovCisJLyogUHJpbWUgdGhlIGNsb2NrICovCisJaWYgKGRldl9wcml2LT5zYXZlRFBMTF9BICYgRFBMTF9WQ09fRU5BQkxFKSB7CisJCUk5MTVfV1JJVEUoRFBMTF9BLCBkZXZfcHJpdi0+c2F2ZURQTExfQSAmCisJCQkgICB+RFBMTF9WQ09fRU5BQkxFKTsKKwkJRFJNX1VERUxBWSgxNTApOworCX0KKwlJOTE1X1dSSVRFKEZQQTAsIGRldl9wcml2LT5zYXZlRlBBMCk7CisJSTkxNV9XUklURShGUEExLCBkZXZfcHJpdi0+c2F2ZUZQQTEpOworCS8qIEFjdHVhbGx5IGVuYWJsZSBpdCAqLworCUk5MTVfV1JJVEUoRFBMTF9BLCBkZXZfcHJpdi0+c2F2ZURQTExfQSk7CisJRFJNX1VERUxBWSgxNTApOworCWlmIChJU19JOTY1RyhkZXYpKQorCQlJOTE1X1dSSVRFKERQTExfQV9NRCwgZGV2X3ByaXYtPnNhdmVEUExMX0FfTUQpOworCURSTV9VREVMQVkoMTUwKTsKKworCS8qIFJlc3RvcmUgbW9kZSAqLworCUk5MTVfV1JJVEUoSFRPVEFMX0EsIGRldl9wcml2LT5zYXZlSFRPVEFMX0EpOworCUk5MTVfV1JJVEUoSEJMQU5LX0EsIGRldl9wcml2LT5zYXZlSEJMQU5LX0EpOworCUk5MTVfV1JJVEUoSFNZTkNfQSwgZGV2X3ByaXYtPnNhdmVIU1lOQ19BKTsKKwlJOTE1X1dSSVRFKFZUT1RBTF9BLCBkZXZfcHJpdi0+c2F2ZVZUT1RBTF9BKTsKKwlJOTE1X1dSSVRFKFZCTEFOS19BLCBkZXZfcHJpdi0+c2F2ZVZCTEFOS19BKTsKKwlJOTE1X1dSSVRFKFZTWU5DX0EsIGRldl9wcml2LT5zYXZlVlNZTkNfQSk7CisJSTkxNV9XUklURShCQ0xSUEFUX0EsIGRldl9wcml2LT5zYXZlQkNMUlBBVF9BKTsKKworCS8qIFJlc3RvcmUgcGxhbmUgaW5mbyAqLworCUk5MTVfV1JJVEUoRFNQQVNJWkUsIGRldl9wcml2LT5zYXZlRFNQQVNJWkUpOworCUk5MTVfV1JJVEUoRFNQQVBPUywgZGV2X3ByaXYtPnNhdmVEU1BBUE9TKTsKKwlJOTE1X1dSSVRFKFBJUEVBU1JDLCBkZXZfcHJpdi0+c2F2ZVBJUEVBU1JDKTsKKwlJOTE1X1dSSVRFKERTUEFBRERSLCBkZXZfcHJpdi0+c2F2ZURTUEFBRERSKTsKKwlJOTE1X1dSSVRFKERTUEFTVFJJREUsIGRldl9wcml2LT5zYXZlRFNQQVNUUklERSk7CisJaWYgKElTX0k5NjVHKGRldikpIHsKKwkJSTkxNV9XUklURShEU1BBU1VSRiwgZGV2X3ByaXYtPnNhdmVEU1BBU1VSRik7CisJCUk5MTVfV1JJVEUoRFNQQVRJTEVPRkYsIGRldl9wcml2LT5zYXZlRFNQQVRJTEVPRkYpOworCX0KKworCUk5MTVfV1JJVEUoUElQRUFDT05GLCBkZXZfcHJpdi0+c2F2ZVBJUEVBQ09ORik7CisKKwlpOTE1X3Jlc3RvcmVfcGFsZXR0ZShkZXYsIFBJUEVfQSk7CisJLyogRW5hYmxlIHRoZSBwbGFuZSAqLworCUk5MTVfV1JJVEUoRFNQQUNOVFIsIGRldl9wcml2LT5zYXZlRFNQQUNOVFIpOworCUk5MTVfV1JJVEUoRFNQQUFERFIsIEk5MTVfUkVBRChEU1BBQUREUikpOworCisJLyogUGlwZSAmIHBsYW5lIEIgaW5mbyAqLworCWlmIChkZXZfcHJpdi0+c2F2ZURQTExfQiAmIERQTExfVkNPX0VOQUJMRSkgeworCQlJOTE1X1dSSVRFKERQTExfQiwgZGV2X3ByaXYtPnNhdmVEUExMX0IgJgorCQkJICAgfkRQTExfVkNPX0VOQUJMRSk7CisJCURSTV9VREVMQVkoMTUwKTsKKwl9CisJSTkxNV9XUklURShGUEIwLCBkZXZfcHJpdi0+c2F2ZUZQQjApOworCUk5MTVfV1JJVEUoRlBCMSwgZGV2X3ByaXYtPnNhdmVGUEIxKTsKKwkvKiBBY3R1YWxseSBlbmFibGUgaXQgKi8KKwlJOTE1X1dSSVRFKERQTExfQiwgZGV2X3ByaXYtPnNhdmVEUExMX0IpOworCURSTV9VREVMQVkoMTUwKTsKKwlpZiAoSVNfSTk2NUcoZGV2KSkKKwkJSTkxNV9XUklURShEUExMX0JfTUQsIGRldl9wcml2LT5zYXZlRFBMTF9CX01EKTsKKwlEUk1fVURFTEFZKDE1MCk7CisKKwkvKiBSZXN0b3JlIG1vZGUgKi8KKwlJOTE1X1dSSVRFKEhUT1RBTF9CLCBkZXZfcHJpdi0+c2F2ZUhUT1RBTF9CKTsKKwlJOTE1X1dSSVRFKEhCTEFOS19CLCBkZXZfcHJpdi0+c2F2ZUhCTEFOS19CKTsKKwlJOTE1X1dSSVRFKEhTWU5DX0IsIGRldl9wcml2LT5zYXZlSFNZTkNfQik7CisJSTkxNV9XUklURShWVE9UQUxfQiwgZGV2X3ByaXYtPnNhdmVWVE9UQUxfQik7CisJSTkxNV9XUklURShWQkxBTktfQiwgZGV2X3ByaXYtPnNhdmVWQkxBTktfQik7CisJSTkxNV9XUklURShWU1lOQ19CLCBkZXZfcHJpdi0+c2F2ZVZTWU5DX0IpOworCUk5MTVfV1JJVEUoQkNMUlBBVF9CLCBkZXZfcHJpdi0+c2F2ZUJDTFJQQVRfQik7CisKKwkvKiBSZXN0b3JlIHBsYW5lIGluZm8gKi8KKwlJOTE1X1dSSVRFKERTUEJTSVpFLCBkZXZfcHJpdi0+c2F2ZURTUEJTSVpFKTsKKwlJOTE1X1dSSVRFKERTUEJQT1MsIGRldl9wcml2LT5zYXZlRFNQQlBPUyk7CisJSTkxNV9XUklURShQSVBFQlNSQywgZGV2X3ByaXYtPnNhdmVQSVBFQlNSQyk7CisJSTkxNV9XUklURShEU1BCQUREUiwgZGV2X3ByaXYtPnNhdmVEU1BCQUREUik7CisJSTkxNV9XUklURShEU1BCU1RSSURFLCBkZXZfcHJpdi0+c2F2ZURTUEJTVFJJREUpOworCWlmIChJU19JOTY1RyhkZXYpKSB7CisJCUk5MTVfV1JJVEUoRFNQQlNVUkYsIGRldl9wcml2LT5zYXZlRFNQQlNVUkYpOworCQlJOTE1X1dSSVRFKERTUEJUSUxFT0ZGLCBkZXZfcHJpdi0+c2F2ZURTUEJUSUxFT0ZGKTsKKwl9CisKKwlJOTE1X1dSSVRFKFBJUEVCQ09ORiwgZGV2X3ByaXYtPnNhdmVQSVBFQkNPTkYpOworCisJaTkxNV9yZXN0b3JlX3BhbGV0dGUoZGV2LCBQSVBFX0IpOworCS8qIEVuYWJsZSB0aGUgcGxhbmUgKi8KKwlJOTE1X1dSSVRFKERTUEJDTlRSLCBkZXZfcHJpdi0+c2F2ZURTUEJDTlRSKTsKKwlJOTE1X1dSSVRFKERTUEJBRERSLCBJOTE1X1JFQUQoRFNQQkFERFIpKTsKKworCS8qIENSVCBzdGF0ZSAqLworCUk5MTVfV1JJVEUoQURQQSwgZGV2X3ByaXYtPnNhdmVBRFBBKTsKKworCS8qIExWRFMgc3RhdGUgKi8KKwlpZiAoSVNfSTk2NUcoZGV2KSkKKwkJSTkxNV9XUklURShCTENfUFdNX0NUTDIsIGRldl9wcml2LT5zYXZlQkxDX1BXTV9DVEwyKTsKKwlpZiAoSVNfTU9CSUxFKGRldikgJiYgIUlTX0k4MzAoZGV2KSkKKwkJSTkxNV9XUklURShMVkRTLCBkZXZfcHJpdi0+c2F2ZUxWRFMpOworCWlmICghSVNfSTgzMChkZXYpICYmICFJU184NDVHKGRldikpCisJCUk5MTVfV1JJVEUoUEZJVF9DT05UUk9MLCBkZXZfcHJpdi0+c2F2ZVBGSVRfQ09OVFJPTCk7CisKKwlJOTE1X1dSSVRFKFBGSVRfUEdNX1JBVElPUywgZGV2X3ByaXYtPnNhdmVQRklUX1BHTV9SQVRJT1MpOworCUk5MTVfV1JJVEUoQkxDX1BXTV9DVEwsIGRldl9wcml2LT5zYXZlQkxDX1BXTV9DVEwpOworCUk5MTVfV1JJVEUoUFBfT05fREVMQVlTLCBkZXZfcHJpdi0+c2F2ZVBQX09OX0RFTEFZUyk7CisJSTkxNV9XUklURShQUF9PRkZfREVMQVlTLCBkZXZfcHJpdi0+c2F2ZVBQX09GRl9ERUxBWVMpOworCUk5MTVfV1JJVEUoUFBfRElWSVNPUiwgZGV2X3ByaXYtPnNhdmVQUF9ESVZJU09SKTsKKwlJOTE1X1dSSVRFKFBQX0NPTlRST0wsIGRldl9wcml2LT5zYXZlUFBfQ09OVFJPTCk7CisKKwkvKiBGSVhNRTogcmVzdG9yZSBUViAmIFNEVk8gc3RhdGUgKi8KKworCS8qIEZCQyBpbmZvICovCisJSTkxNV9XUklURShGQkNfQ0ZCX0JBU0UsIGRldl9wcml2LT5zYXZlRkJDX0NGQl9CQVNFKTsKKwlJOTE1X1dSSVRFKEZCQ19MTF9CQVNFLCBkZXZfcHJpdi0+c2F2ZUZCQ19MTF9CQVNFKTsKKwlJOTE1X1dSSVRFKEZCQ19DT05UUk9MMiwgZGV2X3ByaXYtPnNhdmVGQkNfQ09OVFJPTDIpOworCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIGRldl9wcml2LT5zYXZlRkJDX0NPTlRST0wpOworCisJLyogVkdBIHN0YXRlICovCisJSTkxNV9XUklURShWR0FDTlRSTCwgZGV2X3ByaXYtPnNhdmVWR0FDTlRSTCk7CisJSTkxNV9XUklURShWR0EwLCBkZXZfcHJpdi0+c2F2ZVZHQTApOworCUk5MTVfV1JJVEUoVkdBMSwgZGV2X3ByaXYtPnNhdmVWR0ExKTsKKwlJOTE1X1dSSVRFKFZHQV9QRCwgZGV2X3ByaXYtPnNhdmVWR0FfUEQpOworCURSTV9VREVMQVkoMTUwKTsKKworCS8qIENsb2NrIGdhdGluZyBzdGF0ZSAqLworCUk5MTVfV1JJVEUgKERfU1RBVEUsIGRldl9wcml2LT5zYXZlRF9TVEFURSk7CisJSTkxNV9XUklURSAoQ0dfMkRfRElTLCBkZXZfcHJpdi0+c2F2ZUNHXzJEX0RJUyk7CisKKwkvKiBDYWNoZSBtb2RlIHN0YXRlICovCisJSTkxNV9XUklURSAoQ0FDSEVfTU9ERV8wLCBkZXZfcHJpdi0+c2F2ZUNBQ0hFX01PREVfMCB8IDB4ZmZmZjAwMDApOworCisJLyogTWVtb3J5IGFyYml0cmF0aW9uIHN0YXRlICovCisJSTkxNV9XUklURSAoTUlfQVJCX1NUQVRFLCBkZXZfcHJpdi0+c2F2ZU1JX0FSQl9TVEFURSB8IDB4ZmZmZjAwMDApOworCisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKwkJSTkxNV9XUklURShTV0YwMCArIChpIDw8IDIpLCBkZXZfcHJpdi0+c2F2ZVNXRjBbaV0pOworCQlJOTE1X1dSSVRFKFNXRjEwICsgKGkgPDwgMiksIGRldl9wcml2LT5zYXZlU1dGMVtpKzddKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKwkJSTkxNV9XUklURShTV0YzMCArIChpIDw8IDIpLCBkZXZfcHJpdi0+c2F2ZVNXRjJbaV0pOworCisJaTkxNV9yZXN0b3JlX3ZnYShkZXYpOworCisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmMKaW5kZXggNTU3MjkzOS4uOTdlZTU2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmMKQEAgLTQ1LDE1ICs0NSwxNiBAQAogc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkuZHJpdmVyX2ZlYXR1cmVzID0KIAkgICAgRFJJVkVSX1VTRV9BR1AgfCBEUklWRVJfVVNFX01UUlIgfCBEUklWRVJfUENJX0RNQSB8Ci0JICAgIERSSVZFUl9IQVZFX0RNQSB8IERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9JUlFfU0hBUkVEIHwKLQkgICAgRFJJVkVSX0lSUV9WQkwsCisJICAgIERSSVZFUl9IQVZFX0RNQSB8IERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9JUlFfU0hBUkVELAogCS5kZXZfcHJpdl9zaXplID0gc2l6ZW9mKGRybV9tZ2FfYnVmX3ByaXZfdCksCiAJLmxvYWQgPSBtZ2FfZHJpdmVyX2xvYWQsCiAJLnVubG9hZCA9IG1nYV9kcml2ZXJfdW5sb2FkLAogCS5sYXN0Y2xvc2UgPSBtZ2FfZHJpdmVyX2xhc3RjbG9zZSwKIAkuZG1hX3F1aWVzY2VudCA9IG1nYV9kcml2ZXJfZG1hX3F1aWVzY2VudCwKIAkuZGV2aWNlX2lzX2FncCA9IG1nYV9kcml2ZXJfZGV2aWNlX2lzX2FncCwKLQkudmJsYW5rX3dhaXQgPSBtZ2FfZHJpdmVyX3ZibGFua193YWl0LAorCS5nZXRfdmJsYW5rX2NvdW50ZXIgPSBtZ2FfZ2V0X3ZibGFua19jb3VudGVyLAorCS5lbmFibGVfdmJsYW5rID0gbWdhX2VuYWJsZV92YmxhbmssCisJLmRpc2FibGVfdmJsYW5rID0gbWdhX2Rpc2FibGVfdmJsYW5rLAogCS5pcnFfcHJlaW5zdGFsbCA9IG1nYV9kcml2ZXJfaXJxX3ByZWluc3RhbGwsCiAJLmlycV9wb3N0aW5zdGFsbCA9IG1nYV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsLAogCS5pcnFfdW5pbnN0YWxsID0gbWdhX2RyaXZlcl9pcnFfdW5pbnN0YWxsLApAQCAtNjQsMjAgKzY1LDIwIEBACiAJLmlvY3RscyA9IG1nYV9pb2N0bHMsCiAJLmRtYV9pb2N0bCA9IG1nYV9kbWFfYnVmZmVycywKIAkuZm9wcyA9IHsKLQkJIC5vd25lciA9IFRISVNfTU9EVUxFLAotCQkgLm9wZW4gPSBkcm1fb3BlbiwKLQkJIC5yZWxlYXNlID0gZHJtX3JlbGVhc2UsCi0JCSAuaW9jdGwgPSBkcm1faW9jdGwsCi0JCSAubW1hcCA9IGRybV9tbWFwLAotCQkgLnBvbGwgPSBkcm1fcG9sbCwKLQkJIC5mYXN5bmMgPSBkcm1fZmFzeW5jLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm9wZW4gPSBkcm1fb3BlbiwKKwkJLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwKKwkJLmlvY3RsID0gZHJtX2lvY3RsLAorCQkubW1hcCA9IGRybV9tbWFwLAorCQkucG9sbCA9IGRybV9wb2xsLAorCQkuZmFzeW5jID0gZHJtX2Zhc3luYywKICNpZmRlZiBDT05GSUdfQ09NUEFUCi0JCSAuY29tcGF0X2lvY3RsID0gbWdhX2NvbXBhdF9pb2N0bCwKKwkJLmNvbXBhdF9pb2N0bCA9IG1nYV9jb21wYXRfaW9jdGwsCiAjZW5kaWYKLQkJIH0sCisJfSwKIAkucGNpX2RyaXZlciA9IHsKLQkJIC5uYW1lID0gRFJJVkVSX05BTUUsCi0JCSAuaWRfdGFibGUgPSBwY2lpZGxpc3QsCisJCS5uYW1lID0gRFJJVkVSX05BTUUsCisJCS5pZF90YWJsZSA9IHBjaWlkbGlzdCwKIAl9LAogCiAJLm5hbWUgPSBEUklWRVJfTkFNRSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmgKaW5kZXggZjZlYmQyNC4uODgyNTdjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZHJ2LmgKQEAgLTEyMCw2ICsxMjAsNyBAQAogCXUzMiBjbGVhcl9jbWQ7CiAJdTMyIG1hY2Nlc3M7CiAKKwlhdG9taWNfdCB2YmxfcmVjZWl2ZWQ7ICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIHZibGFua3MgcmVjZWl2ZWQuICovCiAJd2FpdF9xdWV1ZV9oZWFkX3QgZmVuY2VfcXVldWU7CiAJYXRvbWljX3QgbGFzdF9mZW5jZV9yZXRpcmVkOwogCXUzMiBuZXh0X2ZlbmNlX3RvX3Bvc3Q7CkBAIC0xODEsMTEgKzE4MiwxNCBAQAogZXh0ZXJuIGludCBtZ2Ffd2FycF9pbml0KGRybV9tZ2FfcHJpdmF0ZV90ICogZGV2X3ByaXYpOwogCiAJCQkJLyogbWdhX2lycS5jICovCitleHRlcm4gaW50IG1nYV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK2V4dGVybiB2b2lkIG1nYV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gdTMyIG1nYV9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOwogZXh0ZXJuIGludCBtZ2FfZHJpdmVyX2ZlbmNlX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsIHVuc2lnbmVkIGludCAqc2VxdWVuY2UpOwogZXh0ZXJuIGludCBtZ2FfZHJpdmVyX3ZibGFua193YWl0KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKTsKIGV4dGVybiBpcnFyZXR1cm5fdCBtZ2FfZHJpdmVyX2lycV9oYW5kbGVyKERSTV9JUlFfQVJHUyk7CiBleHRlcm4gdm9pZCBtZ2FfZHJpdmVyX2lycV9wcmVpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKLWV4dGVybiB2b2lkIG1nYV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKK2V4dGVybiBpbnQgbWdhX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBtZ2FfZHJpdmVyX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwogZXh0ZXJuIGxvbmcgbWdhX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwKIAkJCSAgICAgdW5zaWduZWQgbG9uZyBhcmcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9pcnEuYwppbmRleCA5MzAyY2I4Li5iYWI0MmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9pcnEuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIG1nYV9pcnEuYyAtLSBJUlEgaGFuZGxpbmcgZm9yIHJhZGVvbiAtKi0gbGludXgtYyAtKi0KLSAqCisgKi8KKy8qCiAgKiBDb3B5cmlnaHQgKEMpIFRoZSBXZWF0aGVyIENoYW5uZWwsIEluYy4gIDIwMDIuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoZSBXZWF0aGVyIENoYW5uZWwgKFRNKSBmdW5kZWQgVHVuZ3N0ZW4gR3JhcGhpY3MgdG8gZGV2ZWxvcCB0aGUKQEAgLTM1LDYgKzM2LDE4IEBACiAjaW5jbHVkZSAibWdhX2RybS5oIgogI2luY2x1ZGUgIm1nYV9kcnYuaCIKIAordTMyIG1nYV9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit7CisJY29uc3QgZHJtX21nYV9wcml2YXRlX3QgKmNvbnN0IGRldl9wcml2ID0KKwkJKGRybV9tZ2FfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7CisKKwlpZiAoY3J0YyAhPSAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPnZibF9yZWNlaXZlZCk7Cit9CisKKwogaXJxcmV0dXJuX3QgbWdhX2RyaXZlcl9pcnFfaGFuZGxlcihEUk1fSVJRX0FSR1MpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgZHJtX2RldmljZSAqKSBhcmc7CkBAIC00Nyw5ICs2MCw4IEBACiAJLyogVkJMQU5LIGludGVycnVwdCAqLwogCWlmIChzdGF0dXMgJiBNR0FfVkxJTkVQRU4pIHsKIAkJTUdBX1dSSVRFKE1HQV9JQ0xFQVIsIE1HQV9WTElORUlDTFIpOwotCQlhdG9taWNfaW5jKCZkZXYtPnZibF9yZWNlaXZlZCk7Ci0JCURSTV9XQUtFVVAoJmRldi0+dmJsX3F1ZXVlKTsKLQkJZHJtX3ZibF9zZW5kX3NpZ25hbHMoZGV2KTsKKwkJYXRvbWljX2luYygmZGV2X3ByaXYtPnZibF9yZWNlaXZlZCk7CisJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwgMCk7CiAJCWhhbmRsZWQgPSAxOwogCX0KIApAQCAtNTgsNiArNzAsNyBAQAogCQljb25zdCB1MzIgcHJpbV9zdGFydCA9IE1HQV9SRUFEKE1HQV9QUklNQUREUkVTUyk7CiAJCWNvbnN0IHUzMiBwcmltX2VuZCA9IE1HQV9SRUFEKE1HQV9QUklNRU5EKTsKIAorCiAJCU1HQV9XUklURShNR0FfSUNMRUFSLCBNR0FfU09GVFJBUElDTFIpOwogCiAJCS8qIEluIGFkZGl0aW9uIHRvIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQtcGVuZGluZyBiaXQsIHdlCkBAIC03MiwyOCArODUsMzkgQEAKIAkJaGFuZGxlZCA9IDE7CiAJfQogCi0JaWYgKGhhbmRsZWQpIHsKKwlpZiAoaGFuZGxlZCkKIAkJcmV0dXJuIElSUV9IQU5ETEVEOwotCX0KIAlyZXR1cm4gSVJRX05PTkU7CiB9CiAKLWludCBtZ2FfZHJpdmVyX3ZibGFua193YWl0KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKQoraW50IG1nYV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogewotCXVuc2lnbmVkIGludCBjdXJfdmJsYW5rOwotCWludCByZXQgPSAwOworCWRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fbWdhX3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOwogCi0JLyogQXNzdW1lIHRoYXQgdGhlIHVzZXIgaGFzIG1pc3NlZCB0aGUgY3VycmVudCBzZXF1ZW5jZSBudW1iZXIKLQkgKiBieSBhYm91dCBhIGRheSByYXRoZXIgdGhhbiBzaGUgd2FudHMgdG8gd2FpdCBmb3IgeWVhcnMKLQkgKiB1c2luZyB2ZXJ0aWNhbCBibGFua3MuLi4KKwlpZiAoY3J0YyAhPSAwKSB7CisJCURSTV9FUlJPUigidHJpZWQgdG8gZW5hYmxlIHZibGFuayBvbiBub24tZXhpc3RlbnQgY3J0YyAlZFxuIiwKKwkJCSAgY3J0Yyk7CisJCXJldHVybiAwOworCX0KKworCU1HQV9XUklURShNR0FfSUVOLCBNR0FfVkxJTkVJRU4gfCBNR0FfU09GVFJBUEVOKTsKKwlyZXR1cm4gMDsKK30KKworCit2b2lkIG1nYV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwlpZiAoY3J0YyAhPSAwKSB7CisJCURSTV9FUlJPUigidHJpZWQgdG8gZGlzYWJsZSB2Ymxhbmsgb24gbm9uLWV4aXN0ZW50IGNydGMgJWRcbiIsCisJCQkgIGNydGMpOworCX0KKworCS8qIERvICpOT1QqIGRpc2FibGUgdGhlIHZlcnRpY2FsIHJlZnJlc2ggaW50ZXJydXB0LiAgTUdBIGRvZXNuJ3QgaGF2ZQorCSAqIGEgbmljZSBoYXJkd2FyZSBjb3VudGVyIHRoYXQgdHJhY2tzIHRoZSBudW1iZXIgb2YgcmVmcmVzaGVzIHdoZW4KKwkgKiB0aGUgaW50ZXJydXB0IGlzIGRpc2FibGVkLCBhbmQgdGhlIGtlcm5lbCBkb2Vzbid0IGtub3cgdGhlIHJlZnJlc2gKKwkgKiByYXRlIHRvIGNhbGN1bGF0ZSBhbiBlc3RpbWF0ZS4KIAkgKi8KLQlEUk1fV0FJVF9PTihyZXQsIGRldi0+dmJsX3F1ZXVlLCAzICogRFJNX0haLAotCQkgICAgKCgoY3VyX3ZibGFuayA9IGF0b21pY19yZWFkKCZkZXYtPnZibF9yZWNlaXZlZCkpCi0JCSAgICAgIC0gKnNlcXVlbmNlKSA8PSAoMSA8PCAyMykpKTsKLQotCSpzZXF1ZW5jZSA9IGN1cl92Ymxhbms7Ci0KLQlyZXR1cm4gcmV0OworCS8qIE1HQV9XUklURShNR0FfSUVOLCBNR0FfVkxJTkVJRU4gfCBNR0FfU09GVFJBUEVOKTsgKi8KIH0KIAogaW50IG1nYV9kcml2ZXJfZmVuY2Vfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSkKQEAgLTEyNSwxNCArMTQ5LDIyIEBACiAJTUdBX1dSSVRFKE1HQV9JQ0xFQVIsIH4wKTsKIH0KIAotdm9pZCBtZ2FfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKK2ludCBtZ2FfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCWRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fbWdhX3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CisKKwlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZGV2LCAxKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJRFJNX0lOSVRfV0FJVFFVRVVFKCZkZXZfcHJpdi0+ZmVuY2VfcXVldWUpOwogCi0JLyogVHVybiBvbiB2ZXJ0aWNhbCBibGFuayBpbnRlcnJ1cHQgYW5kIHNvZnQgdHJhcCBpbnRlcnJ1cHQuICovCi0JTUdBX1dSSVRFKE1HQV9JRU4sIE1HQV9WTElORUlFTiB8IE1HQV9TT0ZUUkFQRU4pOworCS8qIFR1cm4gb24gc29mdCB0cmFwIGludGVycnVwdC4gIFZlcnRpY2FsIGJsYW5rIGludGVycnVwdHMgYXJlIGVuYWJsZWQKKwkgKiBpbiBtZ2FfZW5hYmxlX3ZibGFuay4KKwkgKi8KKwlNR0FfV1JJVEUoTUdBX0lFTiwgTUdBX1NPRlRSQVBFTik7CisJcmV0dXJuIDA7CiB9CiAKIHZvaWQgbWdhX2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2Ffc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX3N0YXRlLmMKaW5kZXggZDNmOGFhZC4uYjcxMGZhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2Ffc3RhdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9zdGF0ZS5jCkBAIC0xMDIyLDcgKzEwMjIsNyBAQAogCiAJc3dpdGNoIChwYXJhbS0+cGFyYW0pIHsKIAljYXNlIE1HQV9QQVJBTV9JUlFfTlI6Ci0JCXZhbHVlID0gZGV2LT5pcnE7CisJCXZhbHVlID0gZHJtX2Rldl90b19pcnEoZGV2KTsKIAkJYnJlYWs7CiAJY2FzZSBNR0FfUEFSQU1fQ0FSRF9UWVBFOgogCQl2YWx1ZSA9IGRldl9wcml2LT5jaGlwc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfZHJ2LmMKaW5kZXggNjEwOGU3NS4uMzI2NWQ1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X2Rydi5jCkBAIC00MywxMiArNDMsMTMgQEAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7CiAJLmRyaXZlcl9mZWF0dXJlcyA9CiAJICAgIERSSVZFUl9VU0VfQUdQIHwgRFJJVkVSX1VTRV9NVFJSIHwgRFJJVkVSX1BDSV9ETUEgfCBEUklWRVJfU0cgfAotCSAgICBEUklWRVJfSEFWRV9ETUEgfCBEUklWRVJfSEFWRV9JUlEgfCBEUklWRVJfSVJRX1NIQVJFRCB8Ci0JICAgIERSSVZFUl9JUlFfVkJMLAorCSAgICBEUklWRVJfSEFWRV9ETUEgfCBEUklWRVJfSEFWRV9JUlEgfCBEUklWRVJfSVJRX1NIQVJFRCwKIAkuZGV2X3ByaXZfc2l6ZSA9IHNpemVvZihkcm1fcjEyOF9idWZfcHJpdl90KSwKIAkucHJlY2xvc2UgPSByMTI4X2RyaXZlcl9wcmVjbG9zZSwKIAkubGFzdGNsb3NlID0gcjEyOF9kcml2ZXJfbGFzdGNsb3NlLAotCS52Ymxhbmtfd2FpdCA9IHIxMjhfZHJpdmVyX3ZibGFua193YWl0LAorCS5nZXRfdmJsYW5rX2NvdW50ZXIgPSByMTI4X2dldF92YmxhbmtfY291bnRlciwKKwkuZW5hYmxlX3ZibGFuayA9IHIxMjhfZW5hYmxlX3ZibGFuaywKKwkuZGlzYWJsZV92YmxhbmsgPSByMTI4X2Rpc2FibGVfdmJsYW5rLAogCS5pcnFfcHJlaW5zdGFsbCA9IHIxMjhfZHJpdmVyX2lycV9wcmVpbnN0YWxsLAogCS5pcnFfcG9zdGluc3RhbGwgPSByMTI4X2RyaXZlcl9pcnFfcG9zdGluc3RhbGwsCiAJLmlycV91bmluc3RhbGwgPSByMTI4X2RyaXZlcl9pcnFfdW5pbnN0YWxsLApAQCAtNTksMjEgKzYwLDIwIEBACiAJLmlvY3RscyA9IHIxMjhfaW9jdGxzLAogCS5kbWFfaW9jdGwgPSByMTI4X2NjZV9idWZmZXJzLAogCS5mb3BzID0gewotCQkgLm93bmVyID0gVEhJU19NT0RVTEUsCi0JCSAub3BlbiA9IGRybV9vcGVuLAotCQkgLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwKLQkJIC5pb2N0bCA9IGRybV9pb2N0bCwKLQkJIC5tbWFwID0gZHJtX21tYXAsCi0JCSAucG9sbCA9IGRybV9wb2xsLAotCQkgLmZhc3luYyA9IGRybV9mYXN5bmMsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCQkub3BlbiA9IGRybV9vcGVuLAorCQkucmVsZWFzZSA9IGRybV9yZWxlYXNlLAorCQkuaW9jdGwgPSBkcm1faW9jdGwsCisJCS5tbWFwID0gZHJtX21tYXAsCisJCS5wb2xsID0gZHJtX3BvbGwsCisJCS5mYXN5bmMgPSBkcm1fZmFzeW5jLAogI2lmZGVmIENPTkZJR19DT01QQVQKLQkJIC5jb21wYXRfaW9jdGwgPSByMTI4X2NvbXBhdF9pb2N0bCwKKwkJLmNvbXBhdF9pb2N0bCA9IHIxMjhfY29tcGF0X2lvY3RsLAogI2VuZGlmCiAJfSwKLQogCS5wY2lfZHJpdmVyID0gewotCQkgLm5hbWUgPSBEUklWRVJfTkFNRSwKLQkJIC5pZF90YWJsZSA9IHBjaWlkbGlzdCwKKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwKKwkJLmlkX3RhYmxlID0gcGNpaWRsaXN0LAogCX0sCiAKIAkubmFtZSA9IERSSVZFUl9OQU1FLApAQCAtODcsNiArODcsNyBAQAogc3RhdGljIGludCBfX2luaXQgcjEyOF9pbml0KHZvaWQpCiB7CiAJZHJpdmVyLm51bV9pb2N0bHMgPSByMTI4X21heF9pb2N0bDsKKwogCXJldHVybiBkcm1faW5pdCgmZHJpdmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfZHJ2LmgKaW5kZXggMDExMTA1ZS4uNTg5OGIyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X2Rydi5oCkBAIC0yOSw3ICsyOSw3IEBACiAgKiAgICBSaWNrYXJkIEUuIChSaWspIEZhaXRoIDxmYWl0aEB2YWxpbnV4LmNvbT4KICAqICAgIEtldmluIEUuIE1hcnRpbiA8bWFydGluQHZhbGludXguY29tPgogICogICAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgotICogICAgTWljaGVsIETDpG56ZXIgPGRhZW56ZXJtQHN0dWRlbnQuZXRoei5jaD4KKyAqICAgIE1pY2hlbCBE77+9emVyIDxkYWVuemVybUBzdHVkZW50LmV0aHouY2g+CiAgKi8KIAogI2lmbmRlZiBfX1IxMjhfRFJWX0hfXwpAQCAtOTcsNiArOTcsOCBAQAogCXUzMiBjcnRjX29mZnNldDsKIAl1MzIgY3J0Y19vZmZzZXRfY250bDsKIAorCWF0b21pY190IHZibF9yZWNlaXZlZDsKKwogCXUzMiBjb2xvcl9mbXQ7CiAJdW5zaWduZWQgaW50IGZyb250X29mZnNldDsKIAl1bnNpZ25lZCBpbnQgZnJvbnRfcGl0Y2g7CkBAIC0xNDksMTEgKzE1MSwxMiBAQAogZXh0ZXJuIGludCByMTI4X2RvX2NjZV9pZGxlKGRybV9yMTI4X3ByaXZhdGVfdCAqIGRldl9wcml2KTsKIGV4dGVybiBpbnQgcjEyOF9kb19jbGVhbnVwX2NjZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CiAKLWV4dGVybiBpbnQgcjEyOF9kcml2ZXJfdmJsYW5rX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsIHVuc2lnbmVkIGludCAqc2VxdWVuY2UpOwotCitleHRlcm4gaW50IHIxMjhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gdm9pZCByMTI4X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK2V4dGVybiB1MzIgcjEyOF9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOwogZXh0ZXJuIGlycXJldHVybl90IHIxMjhfZHJpdmVyX2lycV9oYW5kbGVyKERSTV9JUlFfQVJHUyk7CiBleHRlcm4gdm9pZCByMTI4X2RyaXZlcl9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7Ci1leHRlcm4gdm9pZCByMTI4X2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOworZXh0ZXJuIGludCByMTI4X2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCByMTI4X2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKIGV4dGVybiB2b2lkIHIxMjhfZHJpdmVyX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CiBleHRlcm4gdm9pZCByMTI4X2RyaXZlcl9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X2lycS5jCmluZGV4IGM3NmZkY2EuLmQ3MzQ5MDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9pcnEuYwpAQCAtMzUsNiArMzUsMTYgQEAKICNpbmNsdWRlICJyMTI4X2RybS5oIgogI2luY2x1ZGUgInIxMjhfZHJ2LmgiCiAKK3UzMiByMTI4X2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwljb25zdCBkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChjcnRjICE9IDApCisJCXJldHVybiAwOworCisJcmV0dXJuIGF0b21pY19yZWFkKCZkZXZfcHJpdi0+dmJsX3JlY2VpdmVkKTsKK30KKwogaXJxcmV0dXJuX3QgcjEyOF9kcml2ZXJfaXJxX2hhbmRsZXIoRFJNX0lSUV9BUkdTKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAoc3RydWN0IGRybV9kZXZpY2UgKikgYXJnOwpAQCAtNDYsMzAgKzU2LDM4IEBACiAJLyogVkJMQU5LIGludGVycnVwdCAqLwogCWlmIChzdGF0dXMgJiBSMTI4X0NSVENfVkJMQU5LX0lOVCkgewogCQlSMTI4X1dSSVRFKFIxMjhfR0VOX0lOVF9TVEFUVVMsIFIxMjhfQ1JUQ19WQkxBTktfSU5UX0FLKTsKLQkJYXRvbWljX2luYygmZGV2LT52YmxfcmVjZWl2ZWQpOwotCQlEUk1fV0FLRVVQKCZkZXYtPnZibF9xdWV1ZSk7Ci0JCWRybV92Ymxfc2VuZF9zaWduYWxzKGRldik7CisJCWF0b21pY19pbmMoJmRldl9wcml2LT52YmxfcmVjZWl2ZWQpOworCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIDApOwogCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CiAJfQogCXJldHVybiBJUlFfTk9ORTsKIH0KIAotaW50IHIxMjhfZHJpdmVyX3ZibGFua193YWl0KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKQoraW50IHIxMjhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKLQl1bnNpZ25lZCBpbnQgY3VyX3ZibGFuazsKLQlpbnQgcmV0ID0gMDsKKwlkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAotCS8qIEFzc3VtZSB0aGF0IHRoZSB1c2VyIGhhcyBtaXNzZWQgdGhlIGN1cnJlbnQgc2VxdWVuY2UgbnVtYmVyCi0JICogYnkgYWJvdXQgYSBkYXkgcmF0aGVyIHRoYW4gc2hlIHdhbnRzIHRvIHdhaXQgZm9yIHllYXJzCi0JICogdXNpbmcgdmVydGljYWwgYmxhbmtzLi4uCisJaWYgKGNydGMgIT0gMCkgeworCQlEUk1fRVJST1IoIiVzOiAgYmFkIGNydGMgJWRcbiIsIF9fZnVuY19fLCBjcnRjKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJUjEyOF9XUklURShSMTI4X0dFTl9JTlRfQ05UTCwgUjEyOF9DUlRDX1ZCTEFOS19JTlRfRU4pOworCXJldHVybiAwOworfQorCit2b2lkIHIxMjhfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit7CisJaWYgKGNydGMgIT0gMCkKKwkJRFJNX0VSUk9SKCIlczogIGJhZCBjcnRjICVkXG4iLCBfX2Z1bmNfXywgY3J0Yyk7CisKKwkvKgorCSAqIEZJWE1FOiBpbXBsZW1lbnQgcHJvcGVyIGludGVycnVwdCBkaXNhYmxlIGJ5IHVzaW5nIHRoZSB2YmxhbmsKKwkgKiBjb3VudGVyIHJlZ2lzdGVyIChpZiBhdmFpbGFibGUpCisJICoKKwkgKiBSMTI4X1dSSVRFKFIxMjhfR0VOX0lOVF9DTlRMLAorCSAqICAgICAgICAgICAgUjEyOF9SRUFEKFIxMjhfR0VOX0lOVF9DTlRMKSAmIH5SMTI4X0NSVENfVkJMQU5LX0lOVF9FTik7CiAJICovCi0JRFJNX1dBSVRfT04ocmV0LCBkZXYtPnZibF9xdWV1ZSwgMyAqIERSTV9IWiwKLQkJICAgICgoKGN1cl92YmxhbmsgPSBhdG9taWNfcmVhZCgmZGV2LT52YmxfcmVjZWl2ZWQpKQotCQkgICAgICAtICpzZXF1ZW5jZSkgPD0gKDEgPDwgMjMpKSk7Ci0KLQkqc2VxdWVuY2UgPSBjdXJfdmJsYW5rOwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCByMTI4X2RyaXZlcl9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKQEAgLTgyLDEyICsxMDAsOSBAQAogCVIxMjhfV1JJVEUoUjEyOF9HRU5fSU5UX1NUQVRVUywgUjEyOF9DUlRDX1ZCTEFOS19JTlRfQUspOwogfQogCi12b2lkIHIxMjhfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKK2ludCByMTI4X2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9yMTI4X3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOwotCi0JLyogVHVybiBvbiBWQkwgaW50ZXJydXB0ICovCi0JUjEyOF9XUklURShSMTI4X0dFTl9JTlRfQ05UTCwgUjEyOF9DUlRDX1ZCTEFOS19JTlRfRU4pOworCXJldHVybiBkcm1fdmJsYW5rX2luaXQoZGV2LCAxKTsKIH0KIAogdm9pZCByMTI4X2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9zdGF0ZS5jCmluZGV4IDUxYTlhZmMuLmY3YTViNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfc3RhdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X3N0YXRlLmMKQEAgLTE2MjksNyArMTYyOSw3IEBACiAKIAlzd2l0Y2ggKHBhcmFtLT5wYXJhbSkgewogCWNhc2UgUjEyOF9QQVJBTV9JUlFfTlI6Ci0JCXZhbHVlID0gZGV2LT5pcnE7CisJCXZhbHVlID0gZHJtX2Rldl90b19pcnEoZGV2KTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3AuYwppbmRleCAyNDhhYjRhLi41OWEyMTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2NwLmMKQEAgLTcxLDcgKzcxLDggQEAKIAogc3RhdGljIHUzMiBJR1BfUkVBRF9NQ0lORChkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYsIGludCBhZGRyKQogewotCWlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKQorCWlmICgoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgfHwKKwkgICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM3NDApKQogCQlyZXR1cm4gUlM2OTBfUkVBRF9NQ0lORChkZXZfcHJpdiwgYWRkcik7CiAJZWxzZQogCQlyZXR1cm4gUlM0ODBfUkVBRF9NQ0lORChkZXZfcHJpdiwgYWRkcik7CkBAIC04Miw3ICs4Myw4IEBACiAKIAlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SVjUxNSkKIAkJcmV0dXJuIFI1MDBfUkVBRF9NQ0lORChkZXZfcHJpdiwgUlY1MTVfTUNfRkJfTE9DQVRJT04pOwotCWVsc2UgaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM2OTApCisJZWxzZSBpZiAoKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM2OTApIHx8CisJCSAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzc0MCkpCiAJCXJldHVybiBSUzY5MF9SRUFEX01DSU5EKGRldl9wcml2LCBSUzY5MF9NQ19GQl9MT0NBVElPTik7CiAJZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPiBDSElQX1JWNTE1KQogCQlyZXR1cm4gUjUwMF9SRUFEX01DSU5EKGRldl9wcml2LCBSNTIwX01DX0ZCX0xPQ0FUSU9OKTsKQEAgLTk0LDcgKzk2LDggQEAKIHsKIAlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SVjUxNSkKIAkJUjUwMF9XUklURV9NQ0lORChSVjUxNV9NQ19GQl9MT0NBVElPTiwgZmJfbG9jKTsKLQllbHNlIGlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKQorCWVsc2UgaWYgKCgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKSB8fAorCQkgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM3NDApKQogCQlSUzY5MF9XUklURV9NQ0lORChSUzY5MF9NQ19GQl9MT0NBVElPTiwgZmJfbG9jKTsKIAllbHNlIGlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+IENISVBfUlY1MTUpCiAJCVI1MDBfV1JJVEVfTUNJTkQoUjUyMF9NQ19GQl9MT0NBVElPTiwgZmJfbG9jKTsKQEAgLTEwNiw3ICsxMDksOCBAQAogewogCWlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JWNTE1KQogCQlSNTAwX1dSSVRFX01DSU5EKFJWNTE1X01DX0FHUF9MT0NBVElPTiwgYWdwX2xvYyk7Ci0JZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkKKwllbHNlIGlmICgoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgfHwKKwkJICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNzQwKSkKIAkJUlM2OTBfV1JJVEVfTUNJTkQoUlM2OTBfTUNfQUdQX0xPQ0FUSU9OLCBhZ3BfbG9jKTsKIAllbHNlIGlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+IENISVBfUlY1MTUpCiAJCVI1MDBfV1JJVEVfTUNJTkQoUjUyMF9NQ19BR1BfTE9DQVRJT04sIGFncF9sb2MpOwpAQCAtMTIyLDE1ICsxMjYsMTcgQEAKIAlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SVjUxNSkgewogCQlSNTAwX1dSSVRFX01DSU5EKFJWNTE1X01DX0FHUF9CQVNFLCBhZ3BfYmFzZV9sbyk7CiAJCVI1MDBfV1JJVEVfTUNJTkQoUlY1MTVfTUNfQUdQX0JBU0VfMiwgYWdwX2Jhc2VfaGkpOwotCX0gZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgeworCX0gZWxzZSBpZiAoKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM2OTApIHx8CisJCSAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzc0MCkpIHsKIAkJUlM2OTBfV1JJVEVfTUNJTkQoUlM2OTBfTUNfQUdQX0JBU0UsIGFncF9iYXNlX2xvKTsKIAkJUlM2OTBfV1JJVEVfTUNJTkQoUlM2OTBfTUNfQUdQX0JBU0VfMiwgYWdwX2Jhc2VfaGkpOwogCX0gZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPiBDSElQX1JWNTE1KSB7CiAJCVI1MDBfV1JJVEVfTUNJTkQoUjUyMF9NQ19BR1BfQkFTRSwgYWdwX2Jhc2VfbG8pOwogCQlSNTAwX1dSSVRFX01DSU5EKFI1MjBfTUNfQUdQX0JBU0VfMiwgYWdwX2Jhc2VfaGkpOwotCX0gZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzQ4MCkgeworCX0gZWxzZSBpZiAoKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM0MDApIHx8CisJCSAgICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNDgwKSkgewogCQlSQURFT05fV1JJVEUoUkFERU9OX0FHUF9CQVNFLCBhZ3BfYmFzZV9sbyk7Ci0JCVJBREVPTl9XUklURShSUzQ4MF9BR1BfQkFTRV8yLCAwKTsKKwkJUkFERU9OX1dSSVRFKFJTNDgwX0FHUF9CQVNFXzIsIGFncF9iYXNlX2hpKTsKIAl9IGVsc2UgewogCQlSQURFT05fV1JJVEUoUkFERU9OX0FHUF9CQVNFLCBhZ3BfYmFzZV9sbyk7CiAJCWlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+PSBDSElQX1IyMDApCkBAIC0zNDcsNiArMzUzLDcgQEAKIAkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUjM1MCkgfHwKIAkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlYzNTApIHx8CiAJCSAgICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JWMzgwKSB8fAorCQkgICAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzQwMCkgfHwKIAkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM0ODApKSB7CiAJCURSTV9JTkZPKCJMb2FkaW5nIFIzMDAgTWljcm9jb2RlXG4iKTsKIAkJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0zNTYsNiArMzYzLDcgQEAKIAkJCQkgICAgIFIzMDBfY3BfbWljcm9jb2RlW2ldWzBdKTsKIAkJfQogCX0gZWxzZSBpZiAoKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUjQyMCkgfHwKKwkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUjQyMykgfHwKIAkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlY0MTApKSB7CiAJCURSTV9JTkZPKCJMb2FkaW5nIFI0MDAgTWljcm9jb2RlXG4iKTsKIAkJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0zNjQsOCArMzcyLDkgQEAKIAkJCVJBREVPTl9XUklURShSQURFT05fQ1BfTUVfUkFNX0RBVEFMLAogCQkJCSAgICAgUjQyMF9jcF9taWNyb2NvZGVbaV1bMF0pOwogCQl9Ci0JfSBlbHNlIGlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKSB7Ci0JCURSTV9JTkZPKCJMb2FkaW5nIFJTNjkwIE1pY3JvY29kZVxuIik7CisJfSBlbHNlIGlmICgoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgfHwKKwkJICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM3NDApKSB7CisJCURSTV9JTkZPKCJMb2FkaW5nIFJTNjkwL1JTNzQwIE1pY3JvY29kZVxuIik7CiAJCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewogCQkJUkFERU9OX1dSSVRFKFJBREVPTl9DUF9NRV9SQU1fREFUQUgsCiAJCQkJICAgICBSUzY5MF9jcF9taWNyb2NvZGVbaV1bMV0pOwpAQCAtNjI2LDggKzYzNSw2IEBACiAJCSAgICAgZGV2X3ByaXYtPnJpbmcuc2l6ZV9sMnF3KTsKICNlbmRpZgogCi0JLyogU3RhcnQgd2l0aCBhc3N1bWluZyB0aGF0IHdyaXRlYmFjayBkb2Vzbid0IHdvcmsgKi8KLQlkZXZfcHJpdi0+d3JpdGViYWNrX3dvcmtzID0gMDsKIAogCS8qIEluaXRpYWxpemUgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgcG9pbnRlci4gIFRoaXMgd2lsbCBjYXVzZQogCSAqIHRoZSBzY3JhdGNoIHJlZ2lzdGVyIHZhbHVlcyB0byBiZSB3cml0dGVuIG91dCB0byBtZW1vcnkKQEAgLTY0Niw4ICs2NTMsMTggQEAKIAlSQURFT05fV1JJVEUoUkFERU9OX1NDUkFUQ0hfVU1TSywgMHg3KTsKIAogCS8qIFR1cm4gb24gYnVzIG1hc3RlcmluZyAqLwotCXRtcCA9IFJBREVPTl9SRUFEKFJBREVPTl9CVVNfQ05UTCkgJiB+UkFERU9OX0JVU19NQVNURVJfRElTOwotCVJBREVPTl9XUklURShSQURFT05fQlVTX0NOVEwsIHRtcCk7CisJaWYgKCgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNDAwKSB8fAorCSAgICAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgfHwKKwkgICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM3NDApKSB7CisJCS8qIHJzNDAwLCByczY5MC9yczc0MCAqLworCQl0bXAgPSBSQURFT05fUkVBRChSQURFT05fQlVTX0NOVEwpICYgflJTNDAwX0JVU19NQVNURVJfRElTOworCQlSQURFT05fV1JJVEUoUkFERU9OX0JVU19DTlRMLCB0bXApOworCX0gZWxzZSBpZiAoISgoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SVjM4MCkgfHwKKwkJICAgICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+PSBDSElQX1I0MjMpKSkgeworCQkvKiByMXh4LCByMnh4LCByMzAwLCByKHYpMzUwLCByNDIwL3I0ODEsIHJzNDgwICovCisJCXRtcCA9IFJBREVPTl9SRUFEKFJBREVPTl9CVVNfQ05UTCkgJiB+UkFERU9OX0JVU19NQVNURVJfRElTOworCQlSQURFT05fV1JJVEUoUkFERU9OX0JVU19DTlRMLCB0bXApOworCX0gLyogUENJRSBjYXJkcyBhcHBlYXJzIHRvIG5vdCBuZWVkIHRoaXMgKi8KIAogCWRldl9wcml2LT5zYXJlYV9wcml2LT5sYXN0X2ZyYW1lID0gZGV2X3ByaXYtPnNjcmF0Y2hbMF0gPSAwOwogCVJBREVPTl9XUklURShSQURFT05fTEFTVF9GUkFNRV9SRUcsIGRldl9wcml2LT5zYXJlYV9wcml2LT5sYXN0X2ZyYW1lKTsKQEAgLTY3NCw2ICs2OTEsOSBAQAogewogCXUzMiB0bXA7CiAKKwkvKiBTdGFydCB3aXRoIGFzc3VtaW5nIHRoYXQgd3JpdGViYWNrIGRvZXNuJ3Qgd29yayAqLworCWRldl9wcml2LT53cml0ZWJhY2tfd29ya3MgPSAwOworCiAJLyogV3JpdGViYWNrIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGV2ZXJ5d2hlcmUsIHRlc3QgaXQgaGVyZSBhbmQgcG9zc2libHkKIAkgKiBlbmFibGUgaXQgaWYgaXQgYXBwZWFycyB0byB3b3JrCiAJICovCkBAIC03MTksNyArNzM5LDggQEAKIAkJCSAgZGV2X3ByaXYtPmdhcnRfc2l6ZSk7CiAKIAkJdGVtcCA9IElHUF9SRUFEX01DSU5EKGRldl9wcml2LCBSUzQ4MF9NQ19NSVNDX0NOVEwpOwotCQlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkKKwkJaWYgKCgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKSB8fAorCQkgICAgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID09IENISVBfUlM3NDApKQogCQkJSUdQX1dSSVRFX01DSU5EKFJTNDgwX01DX01JU0NfQ05UTCwgKFJTNDgwX0dBUlRfSU5ERVhfUkVHX0VOIHwKIAkJCQkJCQkgICAgIFJTNjkwX0JMT0NLX0dGWF9EM19FTikpOwogCQllbHNlCkBAIC04MTIsNiArODMzLDcgQEAKIAl1MzIgdG1wOwogCiAJaWYgKCgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNjkwKSB8fAorCSAgICAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzc0MCkgfHwKIAkgICAgKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9JU19JR1BHQVJUKSkgewogCQlyYWRlb25fc2V0X2lncGdhcnQoZGV2X3ByaXYsIG9uKTsKIAkJcmV0dXJuOwpAQCAtMTI4Niw3ICsxMzA4LDcgQEAKIAlyYWRlb25fY3BfaW5pdF9yaW5nX2J1ZmZlcihkZXYsIGRldl9wcml2KTsKIAogCXJhZGVvbl9kb19lbmdpbmVfcmVzZXQoZGV2KTsKLQlyYWRlb25fZW5hYmxlX2ludGVycnVwdChkZXYpOworCXJhZGVvbl9pcnFfc2V0X3N0YXRlKGRldiwgUkFERU9OX1NXX0lOVF9FTkFCTEUsIDEpOwogCiAJRFJNX0RFQlVHKCJyYWRlb25fZG9fcmVzdW1lX2NwKCkgY29tcGxldGVcbiIpOwogCkBAIC0xNzA4LDYgKzE3MzAsNyBAQAogCWNhc2UgQ0hJUF9SMzAwOgogCWNhc2UgQ0hJUF9SMzUwOgogCWNhc2UgQ0hJUF9SNDIwOgorCWNhc2UgQ0hJUF9SNDIzOgogCWNhc2UgQ0hJUF9SVjQxMDoKIAljYXNlIENISVBfUlY1MTU6CiAJY2FzZSBDSElQX1I1MjA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCmluZGV4IDYzN2JkN2YuLjcxYWY3NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCkBAIC01Miw2ICs1MiwyOCBAQAogCQkgICAgICAgICJyMzAwIikpOwogfQogCitzdGF0aWMgaW50IHJhZGVvbl9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwlkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJLyogRGlzYWJsZSAqYWxsKiBpbnRlcnJ1cHRzICovCisJaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID49IENISVBfUlM2OTApCisJCVJBREVPTl9XUklURShSNTAwX0R4TU9ERV9JTlRfTUFTSywgMCk7CisJUkFERU9OX1dSSVRFKFJBREVPTl9HRU5fSU5UX0NOVEwsIDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJhZGVvbl9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJLyogUmVzdG9yZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCisJaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID49IENISVBfUlM2OTApCisJCVJBREVPTl9XUklURShSNTAwX0R4TU9ERV9JTlRfTUFTSywgZGV2X3ByaXYtPnI1MDBfZGlzcF9pcnFfcmVnKTsKKwlSQURFT05fV1JJVEUoUkFERU9OX0dFTl9JTlRfQ05UTCwgZGV2X3ByaXYtPmlycV9lbmFibGVfcmVnKTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBjaWlkbGlzdFtdID0gewogCXJhZGVvbl9QQ0lfSURTCiB9OwpAQCAtNTksOCArODEsNyBAQAogc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkuZHJpdmVyX2ZlYXR1cmVzID0KIAkgICAgRFJJVkVSX1VTRV9BR1AgfCBEUklWRVJfVVNFX01UUlIgfCBEUklWRVJfUENJX0RNQSB8IERSSVZFUl9TRyB8Ci0JICAgIERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9IQVZFX0RNQSB8IERSSVZFUl9JUlFfU0hBUkVEIHwKLQkgICAgRFJJVkVSX0lSUV9WQkwgfCBEUklWRVJfSVJRX1ZCTDIsCisJICAgIERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9IQVZFX0RNQSB8IERSSVZFUl9JUlFfU0hBUkVELAogCS5kZXZfcHJpdl9zaXplID0gc2l6ZW9mKGRybV9yYWRlb25fYnVmX3ByaXZfdCksCiAJLmxvYWQgPSByYWRlb25fZHJpdmVyX2xvYWQsCiAJLmZpcnN0b3BlbiA9IHJhZGVvbl9kcml2ZXJfZmlyc3RvcGVuLApAQCAtNjksOCArOTAsMTEgQEAKIAkucG9zdGNsb3NlID0gcmFkZW9uX2RyaXZlcl9wb3N0Y2xvc2UsCiAJLmxhc3RjbG9zZSA9IHJhZGVvbl9kcml2ZXJfbGFzdGNsb3NlLAogCS51bmxvYWQgPSByYWRlb25fZHJpdmVyX3VubG9hZCwKLQkudmJsYW5rX3dhaXQgPSByYWRlb25fZHJpdmVyX3ZibGFua193YWl0LAotCS52Ymxhbmtfd2FpdDIgPSByYWRlb25fZHJpdmVyX3ZibGFua193YWl0MiwKKwkuc3VzcGVuZCA9IHJhZGVvbl9zdXNwZW5kLAorCS5yZXN1bWUgPSByYWRlb25fcmVzdW1lLAorCS5nZXRfdmJsYW5rX2NvdW50ZXIgPSByYWRlb25fZ2V0X3ZibGFua19jb3VudGVyLAorCS5lbmFibGVfdmJsYW5rID0gcmFkZW9uX2VuYWJsZV92YmxhbmssCisJLmRpc2FibGVfdmJsYW5rID0gcmFkZW9uX2Rpc2FibGVfdmJsYW5rLAogCS5kcmlfbGlicmFyeV9uYW1lID0gZHJpX2xpYnJhcnlfbmFtZSwKIAkuaXJxX3ByZWluc3RhbGwgPSByYWRlb25fZHJpdmVyX2lycV9wcmVpbnN0YWxsLAogCS5pcnFfcG9zdGluc3RhbGwgPSByYWRlb25fZHJpdmVyX2lycV9wb3N0aW5zdGFsbCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKaW5kZXggMDk5MzgxNi4uNGRiYjgxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKQEAgLTEyMiw5ICsxMjIsMTIgQEAKIAlDSElQX1JWMzUwLAogCUNISVBfUlYzODAsCiAJQ0hJUF9SNDIwLAorCUNISVBfUjQyMywKIAlDSElQX1JWNDEwLAorCUNISVBfUlM0MDAsCiAJQ0hJUF9SUzQ4MCwKIAlDSElQX1JTNjkwLAorCUNISVBfUlM3NDAsCiAJQ0hJUF9SVjUxNSwKIAlDSElQX1I1MjAsCiAJQ0hJUF9SVjUzMCwKQEAgLTM3OCwxNyArMzgxLDE3IEBACiAJCQkgICAgICAgc3RydWN0IG1lbV9ibG9jayAqaGVhcCk7CiAKIAkJCQkvKiByYWRlb25faXJxLmMgKi8KK2V4dGVybiB2b2lkIHJhZGVvbl9pcnFfc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBtYXNrLCBpbnQgc3RhdGUpOwogZXh0ZXJuIGludCByYWRlb25faXJxX2VtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCByYWRlb25faXJxX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogCiBleHRlcm4gdm9pZCByYWRlb25fZG9fcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7Ci1leHRlcm4gaW50IHJhZGVvbl9kcml2ZXJfdmJsYW5rX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsCi0JCQkJICAgICB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKTsKLWV4dGVybiBpbnQgcmFkZW9uX2RyaXZlcl92Ymxhbmtfd2FpdDIoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsCi0JCQkJICAgICAgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSk7CitleHRlcm4gdTMyIHJhZGVvbl9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIGludCByYWRlb25fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gdm9pZCByYWRlb25fZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOwogZXh0ZXJuIGlycXJldHVybl90IHJhZGVvbl9kcml2ZXJfaXJxX2hhbmRsZXIoRFJNX0lSUV9BUkdTKTsKIGV4dGVybiB2b2lkIHJhZGVvbl9kcml2ZXJfaXJxX3ByZWluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwotZXh0ZXJuIHZvaWQgcmFkZW9uX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOworZXh0ZXJuIGludCByYWRlb25fZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIHJhZGVvbl9kcml2ZXJfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CiBleHRlcm4gdm9pZCByYWRlb25fZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgcmFkZW9uX3ZibGFua19jcnRjX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAgLTM5NywxOSArNDAwLDIyIEBACiBleHRlcm4gaW50IHJhZGVvbl9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIGV4dGVybiBpbnQgcmFkZW9uX2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IHJhZGVvbl9kcml2ZXJfZmlyc3RvcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotZXh0ZXJuIHZvaWQgcmFkZW9uX2RyaXZlcl9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwotZXh0ZXJuIHZvaWQgcmFkZW9uX2RyaXZlcl9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYsIHN0cnVjdCBkcm1fZmlsZSAqIGZpbHApOworZXh0ZXJuIHZvaWQgcmFkZW9uX2RyaXZlcl9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2V4dGVybiB2b2lkIHJhZGVvbl9kcml2ZXJfcG9zdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGV4dGVybiB2b2lkIHJhZGVvbl9kcml2ZXJfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKLWV4dGVybiBpbnQgcmFkZW9uX2RyaXZlcl9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKiBmaWxwX3ByaXYpOworZXh0ZXJuIGludCByYWRlb25fZHJpdmVyX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGV4dGVybiBsb25nIHJhZGVvbl9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsCiAJCQkJdW5zaWduZWQgbG9uZyBhcmcpOwogCiAvKiByMzAwX2NtZGJ1Zi5jICovCiBleHRlcm4gdm9pZCByMzAwX2luaXRfcmVnX2ZsYWdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCi1leHRlcm4gaW50IHIzMDBfZG9fY3BfY21kYnVmKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LAorZXh0ZXJuIGludCByMzAwX2RvX2NwX2NtZGJ1ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKLQkJCSAgICAgZHJtX3JhZGVvbl9rY21kX2J1ZmZlcl90ICogY21kYnVmKTsKKwkJCSAgICAgZHJtX3JhZGVvbl9rY21kX2J1ZmZlcl90ICpjbWRidWYpOwogCiAvKiBGbGFncyBmb3Igc3RhdHMuYm94ZXMKICAqLwpAQCAtNDM0LDggKzQ0MCwzMSBAQAogIwlkZWZpbmUgUkFERU9OX1NDSVNTT1JfMV9FTkFCTEUJCSgxIDw8IDI5KQogIwlkZWZpbmUgUkFERU9OX1NDSVNTT1JfMl9FTkFCTEUJCSgxIDw8IDMwKQogCisvKgorICogUENJRSByYWRlb25zIChydjM3MC9ydjM4MCwgcnY0MTAsIHI0MjMvcjQzMC9yNDgwLCByNXh4KQorICogZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBidXMgbWFzdGVyaW5nIGRpc2FibGUgYml0LiAgSXQncyBoYW5kbGVkCisgKiBieSB0aGUgUENJIEQtc3RhdGVzLiAgUE1JX0JNX0RJUyBkaXNhYmxlcyBELXN0YXRlIGJ1cyBtYXN0ZXIKKyAqIGhhbmRsaW5nLCBub3QgYnVzIG1hc3RlcmluZyBpdHNlbGYuCisgKi8KICNkZWZpbmUgUkFERU9OX0JVU19DTlRMCQkJMHgwMDMwCisvKiByMXh4LCByMnh4LCByMzAwLCByKHYpMzUwLCByNDIwL3I0ODEsIHJzNDgwICovCiAjCWRlZmluZSBSQURFT05fQlVTX01BU1RFUl9ESVMJCSgxIDw8IDYpCisvKiByczQwMCwgcnM2OTAvcnM3NDAgKi8KKyMJZGVmaW5lIFJTNDAwX0JVU19NQVNURVJfRElTCQkoMSA8PCAxNCkKKyMJZGVmaW5lIFJTNDAwX01TSV9SRUFSTQkJICAgICAgICAoMSA8PCAyMCkKKy8qIHNlZSBSUzQ4MF9NU0lfUkVBUk0gaW4gQUlDX0NOVEwgZm9yIHJzNDgwICovCisKKyNkZWZpbmUgUkFERU9OX0JVU19DTlRMMQkJMHgwMDM0CisjCWRlZmluZSBSQURFT05fUE1JX0JNX0RJUwkJKDEgPDwgMikKKyMJZGVmaW5lIFJBREVPTl9QTUlfSU5UX0RJUwkJKDEgPDwgMykKKworI2RlZmluZSBSVjM3MF9CVVNfQ05UTAkJCTB4MDA0YworIwlkZWZpbmUgUlYzNzBfUE1JX0JNX0RJUwkJICAgICAgICAoMSA8PCA1KQorIwlkZWZpbmUgUlYzNzBfUE1JX0lOVF9ESVMJCSgxIDw8IDYpCisKKyNkZWZpbmUgUkFERU9OX01TSV9SRUFSTV9FTgkJMHgwMTYwCisvKiBydjM3MC9ydjM4MCwgcnY0MTAsIHI0MjMvcjQzMC9yNDgwLCByNXh4ICovCisjCWRlZmluZSBSVjM3MF9NU0lfUkVBUk1fRU4JCSgxIDw8IDApCiAKICNkZWZpbmUgUkFERU9OX0NMT0NLX0NOVExfREFUQQkJMHgwMDBjCiAjCWRlZmluZSBSQURFT05fUExMX1dSX0VOCQkJKDEgPDwgNykKQEAgLTYyMyw2ICs2NTIsNyBAQAogIwlkZWZpbmUgUkFERU9OX1NXX0lOVF9URVNUCQkoMSA8PCAyNSkKICMJZGVmaW5lIFJBREVPTl9TV19JTlRfVEVTVF9BQ0sJCSgxIDw8IDI1KQogIwlkZWZpbmUgUkFERU9OX1NXX0lOVF9GSVJFCQkoMSA8PCAyNikKKyMgICAgICAgZGVmaW5lIFI1MDBfRElTUExBWV9JTlRfU1RBVFVTICAgICAgICAgICgxIDw8IDApCiAKICNkZWZpbmUgUkFERU9OX0hPU1RfUEFUSF9DTlRMCQkweDAxMzAKICMJZGVmaW5lIFJBREVPTl9IRFBfU09GVF9SRVNFVAkJKDEgPDwgMjYpCkBAIC05MDcsNiArOTM3LDcgQEAKIAogI2RlZmluZSBSQURFT05fQUlDX0NOVEwJCQkweDAxZDAKICMJZGVmaW5lIFJBREVPTl9QQ0lHQVJUX1RSQU5TTEFURV9FTgkoMSA8PCAwKQorIwlkZWZpbmUgUlM0ODBfTVNJX1JFQVJNCSAgICAgICAgICAgICAgICAoMSA8PCAzKQogI2RlZmluZSBSQURFT05fQUlDX1NUQVQJCQkweDAxZDQKICNkZWZpbmUgUkFERU9OX0FJQ19QVF9CQVNFCQkweDAxZDgKICNkZWZpbmUgUkFERU9OX0FJQ19MT19BRERSCQkweDAxZGMKQEAgLTExMTYsNiArMTE0Nyw5IEBACiAKICNkZWZpbmUgUjIwMF9WQVBfUFZTX0NOVExfMSAgICAgICAgICAgICAgIDB4MjJEMAogCisjZGVmaW5lIFJBREVPTl9DUlRDX0NSTlRfRlJBTUUgMHgwMjE0CisjZGVmaW5lIFJBREVPTl9DUlRDMl9DUk5UX0ZSQU1FIDB4MDMxNAorCiAjZGVmaW5lIFI1MDBfRDFDUlRDX1NUQVRVUyAweDYwOWMKICNkZWZpbmUgUjUwMF9EMkNSVENfU1RBVFVTIDB4Njg5YwogI2RlZmluZSBSNTAwX0NSVENfVl9CTEFOSyAoMTw8MCkKQEAgLTEyMDAsNyArMTIzNCw4IEBACiAKICNkZWZpbmUgSUdQX1dSSVRFX01DSU5EKGFkZHIsIHZhbCkJCQkJXAogZG8gewkJCQkJCQkJCVwKLQlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgICAgICAgXAorCWlmICgoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPT0gQ0hJUF9SUzY5MCkgfHwgICBcCisJICAgICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA9PSBDSElQX1JTNzQwKSkgICAgICBcCiAJCVJTNjkwX1dSSVRFX01DSU5EKGFkZHIsIHZhbCk7CQkJCVwKIAllbHNlCQkJCQkJCQlcCiAJCVJTNDgwX1dSSVRFX01DSU5EKGFkZHIsIHZhbCk7CQkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25faXJxLmMKaW5kZXggZWU0MGQxOS4uNTA3OWY3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25faXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25faXJxLmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqCiAgKiBBdXRob3JzOgogICogICAgS2VpdGggV2hpdHdlbGwgPGtlaXRoQHR1bmdzdGVuZ3JhcGhpY3MuY29tPgotICogICAgTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD4KKyAqICAgIE1pY2hlbCBE77+9emVyIDxtaWNoZWxAZGFlbnplci5uZXQ+CiAgKi8KIAogI2luY2x1ZGUgImRybVAuaCIKQEAgLTM1LDEyICszNSwxMjggQEAKICNpbmNsdWRlICJyYWRlb25fZHJtLmgiCiAjaW5jbHVkZSAicmFkZW9uX2Rydi5oIgogCi1zdGF0aWMgX19pbmxpbmVfXyB1MzIgcmFkZW9uX2Fja25vd2xlZGdlX2lycXMoZHJtX3JhZGVvbl9wcml2YXRlX3QgKiBkZXZfcHJpdiwKLQkJCQkJICAgICAgdTMyIG1hc2spCit2b2lkIHJhZGVvbl9pcnFfc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBtYXNrLCBpbnQgc3RhdGUpCiB7Ci0JdTMyIGlycXMgPSBSQURFT05fUkVBRChSQURFT05fR0VOX0lOVF9TVEFUVVMpICYgbWFzazsKKwlkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKHN0YXRlKQorCQlkZXZfcHJpdi0+aXJxX2VuYWJsZV9yZWcgfD0gbWFzazsKKwllbHNlCisJCWRldl9wcml2LT5pcnFfZW5hYmxlX3JlZyAmPSB+bWFzazsKKworCVJBREVPTl9XUklURShSQURFT05fR0VOX0lOVF9DTlRMLCBkZXZfcHJpdi0+aXJxX2VuYWJsZV9yZWcpOworfQorCitzdGF0aWMgdm9pZCByNTAwX3ZibF9pcnFfc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBtYXNrLCBpbnQgc3RhdGUpCit7CisJZHJtX3JhZGVvbl9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChzdGF0ZSkKKwkJZGV2X3ByaXYtPnI1MDBfZGlzcF9pcnFfcmVnIHw9IG1hc2s7CisJZWxzZQorCQlkZXZfcHJpdi0+cjUwMF9kaXNwX2lycV9yZWcgJj0gfm1hc2s7CisKKwlSQURFT05fV1JJVEUoUjUwMF9EeE1PREVfSU5UX01BU0ssIGRldl9wcml2LT5yNTAwX2Rpc3BfaXJxX3JlZyk7Cit9CisKK2ludCByYWRlb25fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwlkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID49IENISVBfUlM2OTApIHsKKwkJc3dpdGNoIChjcnRjKSB7CisJCWNhc2UgMDoKKwkJCXI1MDBfdmJsX2lycV9zZXRfc3RhdGUoZGV2LCBSNTAwX0QxTU9ERV9JTlRfTUFTSywgMSk7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJcjUwMF92YmxfaXJxX3NldF9zdGF0ZShkZXYsIFI1MDBfRDJNT0RFX0lOVF9NQVNLLCAxKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJRFJNX0VSUk9SKCJ0cmllZCB0byBlbmFibGUgdmJsYW5rIG9uIG5vbi1leGlzdGVudCBjcnRjICVkXG4iLAorCQkJCSAgY3J0Yyk7CisJCQlyZXR1cm4gRUlOVkFMOworCQl9CisJfSBlbHNlIHsKKwkJc3dpdGNoIChjcnRjKSB7CisJCWNhc2UgMDoKKwkJCXJhZGVvbl9pcnFfc2V0X3N0YXRlKGRldiwgUkFERU9OX0NSVENfVkJMQU5LX01BU0ssIDEpOworCQkJYnJlYWs7CisJCWNhc2UgMToKKwkJCXJhZGVvbl9pcnFfc2V0X3N0YXRlKGRldiwgUkFERU9OX0NSVEMyX1ZCTEFOS19NQVNLLCAxKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJRFJNX0VSUk9SKCJ0cmllZCB0byBlbmFibGUgdmJsYW5rIG9uIG5vbi1leGlzdGVudCBjcnRjICVkXG4iLAorCQkJCSAgY3J0Yyk7CisJCQlyZXR1cm4gRUlOVkFMOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgcmFkZW9uX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCWRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SUzY5MCkgeworCQlzd2l0Y2ggKGNydGMpIHsKKwkJY2FzZSAwOgorCQkJcjUwMF92YmxfaXJxX3NldF9zdGF0ZShkZXYsIFI1MDBfRDFNT0RFX0lOVF9NQVNLLCAwKTsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlyNTAwX3ZibF9pcnFfc2V0X3N0YXRlKGRldiwgUjUwMF9EMk1PREVfSU5UX01BU0ssIDApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInRyaWVkIHRvIGVuYWJsZSB2Ymxhbmsgb24gbm9uLWV4aXN0ZW50IGNydGMgJWRcbiIsCisJCQkJICBjcnRjKTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlIHsKKwkJc3dpdGNoIChjcnRjKSB7CisJCWNhc2UgMDoKKwkJCXJhZGVvbl9pcnFfc2V0X3N0YXRlKGRldiwgUkFERU9OX0NSVENfVkJMQU5LX01BU0ssIDApOworCQkJYnJlYWs7CisJCWNhc2UgMToKKwkJCXJhZGVvbl9pcnFfc2V0X3N0YXRlKGRldiwgUkFERU9OX0NSVEMyX1ZCTEFOS19NQVNLLCAwKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJRFJNX0VSUk9SKCJ0cmllZCB0byBlbmFibGUgdmJsYW5rIG9uIG5vbi1leGlzdGVudCBjcnRjICVkXG4iLAorCQkJCSAgY3J0Yyk7CisJCQlicmVhazsKKwkJfQorCX0KK30KKworc3RhdGljIGlubGluZSB1MzIgcmFkZW9uX2Fja25vd2xlZGdlX2lycXMoZHJtX3JhZGVvbl9wcml2YXRlX3QgKmRldl9wcml2LCB1MzIgKnI1MDBfZGlzcF9pbnQpCit7CisJdTMyIGlycXMgPSBSQURFT05fUkVBRChSQURFT05fR0VOX0lOVF9TVEFUVVMpOworCXUzMiBpcnFfbWFzayA9IFJBREVPTl9TV19JTlRfVEVTVDsKKworCSpyNTAwX2Rpc3BfaW50ID0gMDsKKwlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SUzY5MCkgeworCQkvKiB2YmwgaW50ZXJydXB0cyBpbiBhIGRpZmZlcmVudCBwbGFjZSAqLworCisJCWlmIChpcnFzICYgUjUwMF9ESVNQTEFZX0lOVF9TVEFUVVMpIHsKKwkJCS8qIGlmIGEgZGlzcGxheSBpbnRlcnJ1cHQgKi8KKwkJCXUzMiBkaXNwX2lycTsKKworCQkJZGlzcF9pcnEgPSBSQURFT05fUkVBRChSNTAwX0RJU1BfSU5URVJSVVBUX1NUQVRVUyk7CisKKwkJCSpyNTAwX2Rpc3BfaW50ID0gZGlzcF9pcnE7CisJCQlpZiAoZGlzcF9pcnEgJiBSNTAwX0QxX1ZCTEFOS19JTlRFUlJVUFQpCisJCQkJUkFERU9OX1dSSVRFKFI1MDBfRDFNT0RFX1ZCTEFOS19TVEFUVVMsIFI1MDBfVkJMQU5LX0FDSyk7CisJCQlpZiAoZGlzcF9pcnEgJiBSNTAwX0QyX1ZCTEFOS19JTlRFUlJVUFQpCisJCQkJUkFERU9OX1dSSVRFKFI1MDBfRDJNT0RFX1ZCTEFOS19TVEFUVVMsIFI1MDBfVkJMQU5LX0FDSyk7CisJCX0KKwkJaXJxX21hc2sgfD0gUjUwMF9ESVNQTEFZX0lOVF9TVEFUVVM7CisJfSBlbHNlCisJCWlycV9tYXNrIHw9IFJBREVPTl9DUlRDX1ZCTEFOS19TVEFUIHwgUkFERU9OX0NSVEMyX1ZCTEFOS19TVEFUOworCisJaXJxcyAmPQlpcnFfbWFzazsKKwogCWlmIChpcnFzKQogCQlSQURFT05fV1JJVEUoUkFERU9OX0dFTl9JTlRfU1RBVFVTLCBpcnFzKTsKKwogCXJldHVybiBpcnFzOwogfQogCkBAIC02OCw0NCArMTg0LDMzIEBACiAJZHJtX3JhZGVvbl9wcml2YXRlX3QgKmRldl9wcml2ID0KIAkgICAgKGRybV9yYWRlb25fcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7CiAJdTMyIHN0YXQ7CisJdTMyIHI1MDBfZGlzcF9pbnQ7CiAKIAkvKiBPbmx5IGNvbnNpZGVyIHRoZSBiaXRzIHdlJ3JlIGludGVyZXN0ZWQgaW4gLSBvdGhlcnMgY291bGQgYmUgdXNlZAogCSAqIG91dHNpZGUgdGhlIERSTQogCSAqLwotCXN0YXQgPSByYWRlb25fYWNrbm93bGVkZ2VfaXJxcyhkZXZfcHJpdiwgKFJBREVPTl9TV19JTlRfVEVTVF9BQ0sgfAotCQkJCQkJICBSQURFT05fQ1JUQ19WQkxBTktfU1RBVCB8Ci0JCQkJCQkgIFJBREVPTl9DUlRDMl9WQkxBTktfU1RBVCkpOworCXN0YXQgPSByYWRlb25fYWNrbm93bGVkZ2VfaXJxcyhkZXZfcHJpdiwgJnI1MDBfZGlzcF9pbnQpOwogCWlmICghc3RhdCkKIAkJcmV0dXJuIElSUV9OT05FOwogCiAJc3RhdCAmPSBkZXZfcHJpdi0+aXJxX2VuYWJsZV9yZWc7CiAKIAkvKiBTVyBpbnRlcnJ1cHQgKi8KLQlpZiAoc3RhdCAmIFJBREVPTl9TV19JTlRfVEVTVCkgeworCWlmIChzdGF0ICYgUkFERU9OX1NXX0lOVF9URVNUKQogCQlEUk1fV0FLRVVQKCZkZXZfcHJpdi0+c3dpX3F1ZXVlKTsKLQl9CiAKIAkvKiBWQkxBTksgaW50ZXJydXB0ICovCi0JaWYgKHN0YXQgJiAoUkFERU9OX0NSVENfVkJMQU5LX1NUQVR8UkFERU9OX0NSVEMyX1ZCTEFOS19TVEFUKSkgewotCQlpbnQgdmJsYW5rX2NydGMgPSBkZXZfcHJpdi0+dmJsYW5rX2NydGM7Ci0KLQkJaWYgKCh2YmxhbmtfY3J0YyAmCi0JCSAgICAgKERSTV9SQURFT05fVkJMQU5LX0NSVEMxIHwgRFJNX1JBREVPTl9WQkxBTktfQ1JUQzIpKSA9PQotCQkgICAgKERSTV9SQURFT05fVkJMQU5LX0NSVEMxIHwgRFJNX1JBREVPTl9WQkxBTktfQ1JUQzIpKSB7Ci0JCQlpZiAoc3RhdCAmIFJBREVPTl9DUlRDX1ZCTEFOS19TVEFUKQotCQkJCWF0b21pY19pbmMoJmRldi0+dmJsX3JlY2VpdmVkKTsKLQkJCWlmIChzdGF0ICYgUkFERU9OX0NSVEMyX1ZCTEFOS19TVEFUKQotCQkJCWF0b21pY19pbmMoJmRldi0+dmJsX3JlY2VpdmVkMik7Ci0JCX0gZWxzZSBpZiAoKChzdGF0ICYgUkFERU9OX0NSVENfVkJMQU5LX1NUQVQpICYmCi0JCQkgICAodmJsYW5rX2NydGMgJiBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMSkpIHx8Ci0JCQkgICAoKHN0YXQgJiBSQURFT05fQ1JUQzJfVkJMQU5LX1NUQVQpICYmCi0JCQkgICAgKHZibGFua19jcnRjICYgRFJNX1JBREVPTl9WQkxBTktfQ1JUQzIpKSkKLQkJCWF0b21pY19pbmMoJmRldi0+dmJsX3JlY2VpdmVkKTsKLQotCQlEUk1fV0FLRVVQKCZkZXYtPnZibF9xdWV1ZSk7Ci0JCWRybV92Ymxfc2VuZF9zaWduYWxzKGRldik7CisJaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID49IENISVBfUlM2OTApIHsKKwkJaWYgKHI1MDBfZGlzcF9pbnQgJiBSNTAwX0QxX1ZCTEFOS19JTlRFUlJVUFQpCisJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIDApOworCQlpZiAocjUwMF9kaXNwX2ludCAmIFI1MDBfRDJfVkJMQU5LX0lOVEVSUlVQVCkKKwkJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwgMSk7CisJfSBlbHNlIHsKKwkJaWYgKHN0YXQgJiBSQURFT05fQ1JUQ19WQkxBTktfU1RBVCkKKwkJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwgMCk7CisJCWlmIChzdGF0ICYgUkFERU9OX0NSVEMyX1ZCTEFOS19TVEFUKQorCQkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCAxKTsKIAl9Ci0KIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKQEAgLTE0NCw1NCArMjQ5LDMxIEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCByYWRlb25fZHJpdmVyX3ZibGFua19kb193YWl0KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LAotCQkJCQl1bnNpZ25lZCBpbnQgKnNlcXVlbmNlLCBpbnQgY3J0YykKK3UzMiByYWRlb25fZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogewotCWRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiA9Ci0JICAgIChkcm1fcmFkZW9uX3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOwotCXVuc2lnbmVkIGludCBjdXJfdmJsYW5rOwotCWludCByZXQgPSAwOwotCWludCBhY2sgPSAwOwotCWF0b21pY190ICpjb3VudGVyOworCWRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKIAlpZiAoIWRldl9wcml2KSB7CiAJCURSTV9FUlJPUigiY2FsbGVkIHdpdGggbm8gaW5pdGlhbGl6YXRpb25cbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoY3J0YyA9PSBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMSkgewotCQljb3VudGVyID0gJmRldi0+dmJsX3JlY2VpdmVkOwotCQlhY2sgfD0gUkFERU9OX0NSVENfVkJMQU5LX1NUQVQ7Ci0JfSBlbHNlIGlmIChjcnRjID09IERSTV9SQURFT05fVkJMQU5LX0NSVEMyKSB7Ci0JCWNvdW50ZXIgPSAmZGV2LT52YmxfcmVjZWl2ZWQyOwotCQlhY2sgfD0gUkFERU9OX0NSVEMyX1ZCTEFOS19TVEFUOwotCX0gZWxzZQorCWlmIChjcnRjIDwgMCB8fCBjcnRjID4gMSkgeworCQlEUk1fRVJST1IoIkludmFsaWQgY3J0YyAlZFxuIiwgY3J0Yyk7CiAJCXJldHVybiAtRUlOVkFMOworCX0KIAotCXJhZGVvbl9hY2tub3dsZWRnZV9pcnFzKGRldl9wcml2LCBhY2spOwotCi0JZGV2X3ByaXYtPnN0YXRzLmJveGVzIHw9IFJBREVPTl9CT1hfV0FJVF9JRExFOwotCi0JLyogQXNzdW1lIHRoYXQgdGhlIHVzZXIgaGFzIG1pc3NlZCB0aGUgY3VycmVudCBzZXF1ZW5jZSBudW1iZXIKLQkgKiBieSBhYm91dCBhIGRheSByYXRoZXIgdGhhbiBzaGUgd2FudHMgdG8gd2FpdCBmb3IgeWVhcnMKLQkgKiB1c2luZyB2ZXJ0aWNhbCBibGFua3MuLi4KLQkgKi8KLQlEUk1fV0FJVF9PTihyZXQsIGRldi0+dmJsX3F1ZXVlLCAzICogRFJNX0haLAotCQkgICAgKCgoY3VyX3ZibGFuayA9IGF0b21pY19yZWFkKGNvdW50ZXIpKQotCQkgICAgICAtICpzZXF1ZW5jZSkgPD0gKDEgPDwgMjMpKSk7Ci0KLQkqc2VxdWVuY2UgPSBjdXJfdmJsYW5rOwotCi0JcmV0dXJuIHJldDsKLX0KLQotaW50IHJhZGVvbl9kcml2ZXJfdmJsYW5rX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSkKLXsKLQlyZXR1cm4gcmFkZW9uX2RyaXZlcl92YmxhbmtfZG9fd2FpdChkZXYsIHNlcXVlbmNlLCBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMSk7Ci19Ci0KLWludCByYWRlb25fZHJpdmVyX3ZibGFua193YWl0MihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgKnNlcXVlbmNlKQotewotCXJldHVybiByYWRlb25fZHJpdmVyX3ZibGFua19kb193YWl0KGRldiwgc2VxdWVuY2UsIERSTV9SQURFT05fVkJMQU5LX0NSVEMyKTsKKwlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SUzY5MCkgeworCQlpZiAoY3J0YyA9PSAwKQorCQkJcmV0dXJuIFJBREVPTl9SRUFEKFI1MDBfRDFDUlRDX0ZSQU1FX0NPVU5UKTsKKwkJZWxzZQorCQkJcmV0dXJuIFJBREVPTl9SRUFEKFI1MDBfRDJDUlRDX0ZSQU1FX0NPVU5UKTsKKwl9IGVsc2UgeworCQlpZiAoY3J0YyA9PSAwKQorCQkJcmV0dXJuIFJBREVPTl9SRUFEKFJBREVPTl9DUlRDX0NSTlRfRlJBTUUpOworCQllbHNlCisJCQlyZXR1cm4gUkFERU9OX1JFQUQoUkFERU9OX0NSVEMyX0NSTlRfRlJBTUUpOworCX0KIH0KIAogLyogTmVlZHMgdGhlIGxvY2sgYXMgaXQgdG91Y2hlcyB0aGUgcmluZy4KQEAgLTIzNCw0NiArMzE2LDQxIEBACiAJcmV0dXJuIHJhZGVvbl93YWl0X2lycShkZXYsIGlycXdhaXQtPmlycV9zZXEpOwogfQogCi12b2lkIHJhZGVvbl9lbmFibGVfaW50ZXJydXB0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCi17Ci0JZHJtX3JhZGVvbl9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9yYWRlb25fcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlkZXZfcHJpdi0+aXJxX2VuYWJsZV9yZWcgPSBSQURFT05fU1dfSU5UX0VOQUJMRTsKLQlpZiAoZGV2X3ByaXYtPnZibGFua19jcnRjICYgRFJNX1JBREVPTl9WQkxBTktfQ1JUQzEpCi0JCWRldl9wcml2LT5pcnFfZW5hYmxlX3JlZyB8PSBSQURFT05fQ1JUQ19WQkxBTktfTUFTSzsKLQotCWlmIChkZXZfcHJpdi0+dmJsYW5rX2NydGMgJiBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMikKLQkJZGV2X3ByaXYtPmlycV9lbmFibGVfcmVnIHw9IFJBREVPTl9DUlRDMl9WQkxBTktfTUFTSzsKLQotCVJBREVPTl9XUklURShSQURFT05fR0VOX0lOVF9DTlRMLCBkZXZfcHJpdi0+aXJxX2VuYWJsZV9yZWcpOwotCWRldl9wcml2LT5pcnFfZW5hYmxlZCA9IDE7Ci19Ci0KIC8qIGRybV9kbWEuaCBob29rcwogKi8KIHZvaWQgcmFkZW9uX2RyaXZlcl9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKIHsKIAlkcm1fcmFkZW9uX3ByaXZhdGVfdCAqZGV2X3ByaXYgPQogCSAgICAoZHJtX3JhZGVvbl9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKKwl1MzIgZHVtbXk7CiAKIAkvKiBEaXNhYmxlICphbGwqIGludGVycnVwdHMgKi8KKwlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SUzY5MCkKKwkJUkFERU9OX1dSSVRFKFI1MDBfRHhNT0RFX0lOVF9NQVNLLCAwKTsKIAlSQURFT05fV1JJVEUoUkFERU9OX0dFTl9JTlRfQ05UTCwgMCk7CiAKIAkvKiBDbGVhciBiaXRzIGlmIHRoZXkncmUgYWxyZWFkeSBoaWdoICovCi0JcmFkZW9uX2Fja25vd2xlZGdlX2lycXMoZGV2X3ByaXYsIChSQURFT05fU1dfSU5UX1RFU1RfQUNLIHwKLQkJCQkJICAgUkFERU9OX0NSVENfVkJMQU5LX1NUQVQgfAotCQkJCQkgICBSQURFT05fQ1JUQzJfVkJMQU5LX1NUQVQpKTsKKwlyYWRlb25fYWNrbm93bGVkZ2VfaXJxcyhkZXZfcHJpdiwgJmR1bW15KTsKIH0KIAotdm9pZCByYWRlb25fZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKK2ludCByYWRlb25fZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCWRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiA9CiAJICAgIChkcm1fcmFkZW9uX3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CiAKIAlhdG9taWNfc2V0KCZkZXZfcHJpdi0+c3dpX2VtaXR0ZWQsIDApOwogCURSTV9JTklUX1dBSVRRVUVVRSgmZGV2X3ByaXYtPnN3aV9xdWV1ZSk7CiAKLQlyYWRlb25fZW5hYmxlX2ludGVycnVwdChkZXYpOworCXJldCA9IGRybV92YmxhbmtfaW5pdChkZXYsIDIpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkZXYtPm1heF92YmxhbmtfY291bnQgPSAweDAwMWZmZmZmOworCisJcmFkZW9uX2lycV9zZXRfc3RhdGUoZGV2LCBSQURFT05fU1dfSU5UX0VOQUJMRSwgMSk7CisKKwlyZXR1cm4gMDsKIH0KIAogdm9pZCByYWRlb25fZHJpdmVyX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCkBAIC0yODUsNiArMzYyLDggQEAKIAogCWRldl9wcml2LT5pcnFfZW5hYmxlZCA9IDA7CiAKKwlpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SUzY5MCkKKwkJUkFERU9OX1dSSVRFKFI1MDBfRHhNT0RFX0lOVF9NQVNLLCAwKTsKIAkvKiBEaXNhYmxlICphbGwqIGludGVycnVwdHMgKi8KIAlSQURFT05fV1JJVEUoUkFERU9OX0dFTl9JTlRfQ05UTCwgMCk7CiB9CkBAIC0yOTMsMTggKzM3Miw4IEBACiBpbnQgcmFkZW9uX3ZibGFua19jcnRjX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCWRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fcmFkZW9uX3ByaXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOwotCXUzMiBmbGFnOwotCXUzMiB2YWx1ZTsKIAotCWZsYWcgPSBSQURFT05fUkVBRChSQURFT05fR0VOX0lOVF9DTlRMKTsKLQl2YWx1ZSA9IDA7Ci0KLQlpZiAoZmxhZyAmIFJBREVPTl9DUlRDX1ZCTEFOS19NQVNLKQotCQl2YWx1ZSB8PSBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMTsKLQotCWlmIChmbGFnICYgUkFERU9OX0NSVEMyX1ZCTEFOS19NQVNLKQotCQl2YWx1ZSB8PSBEUk1fUkFERU9OX1ZCTEFOS19DUlRDMjsKLQlyZXR1cm4gdmFsdWU7CisJcmV0dXJuIGRldl9wcml2LT52YmxhbmtfY3J0YzsKIH0KIAogaW50IHJhZGVvbl92YmxhbmtfY3J0Y19zZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50NjRfdCB2YWx1ZSkKQEAgLTMxNSw2ICszODQsNSBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJZGV2X3ByaXYtPnZibGFua19jcnRjID0gKHVuc2lnbmVkIGludCl2YWx1ZTsKLQlyYWRlb25fZW5hYmxlX2ludGVycnVwdChkZXYpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3N0YXRlLmMKaW5kZXggMTFjMTQ2Yi4uNWQ3MTUzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc3RhdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zdGF0ZS5jCkBAIC0yOTk3LDcgKzI5OTcsNyBAQAogCQl2YWx1ZSA9IEdFVF9TQ1JBVENIKDIpOwogCQlicmVhazsKIAljYXNlIFJBREVPTl9QQVJBTV9JUlFfTlI6Ci0JCXZhbHVlID0gZGV2LT5pcnE7CisJCXZhbHVlID0gZHJtX2Rldl90b19pcnEoZGV2KTsKIAkJYnJlYWs7CiAJY2FzZSBSQURFT05fUEFSQU1fR0FSVF9CQVNFOgogCQl2YWx1ZSA9IGRldl9wcml2LT5nYXJ0X3ZtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Npcy9zaXNfbW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9zaXMvc2lzX21tLmMKaW5kZXggYjM4Nzg3Ny4uYWYyMjExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Npcy9zaXNfbW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vc2lzL3Npc19tbS5jCkBAIC00MSw3ICs0MSw3IEBACiAjZGVmaW5lIEFHUF9UWVBFIDEKIAogCi0jaWYgZGVmaW5lZChDT05GSUdfRkJfU0lTKQorI2lmIGRlZmluZWQoQ09ORklHX0ZCX1NJUykgfHwgZGVmaW5lZChDT05GSUdfRkJfU0lTX01PRFVMRSkKIC8qIGZiIG1hbmFnZW1lbnQgdmlhIGZiIGRldmljZSAqLwogCiAjZGVmaW5lIFNJU19NTV9BTElHTl9TSElGVCAwCkBAIC01Nyw3ICs1Nyw3IEBACiAJaWYgKHJlcS5zaXplID09IDApCiAJCXJldHVybiBOVUxMOwogCWVsc2UKLQkJcmV0dXJuICh2b2lkICopfnJlcS5vZmZzZXQ7CisJCXJldHVybiAodm9pZCAqKSh1bnNpZ25lZCBsb25nKX5yZXEub2Zmc2V0OwogfQogCiBzdGF0aWMgdm9pZCBzaXNfc21hbl9tbV9mcmVlKHZvaWQgKnByaXZhdGUsIHZvaWQgKnJlZikKQEAgLTc1LDEyICs3NSwxMiBAQAogCXJldHVybiB+KCh1bnNpZ25lZCBsb25nKXJlZik7CiB9CiAKLSNlbHNlIC8qIENPTkZJR19GQl9TSVMgKi8KKyNlbHNlIC8qIENPTkZJR19GQl9TSVNbX01PRFVMRV0gKi8KIAogI2RlZmluZSBTSVNfTU1fQUxJR05fU0hJRlQgNAogI2RlZmluZSBTSVNfTU1fQUxJR05fTUFTSyAoICgxIDw8IFNJU19NTV9BTElHTl9TSElGVCkgLSAxKQogCi0jZW5kaWYgLyogQ09ORklHX0ZCX1NJUyAqLworI2VuZGlmIC8qIENPTkZJR19GQl9TSVNbX01PRFVMRV0gKi8KIAogc3RhdGljIGludCBzaXNfZmJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIHsKQEAgLTg5LDcgKzg5LDcgQEAKIAlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotI2lmIGRlZmluZWQoQ09ORklHX0ZCX1NJUykKKyNpZiBkZWZpbmVkKENPTkZJR19GQl9TSVMpIHx8IGRlZmluZWQoQ09ORklHX0ZCX1NJU19NT0RVTEUpCiAJewogCQlzdHJ1Y3QgZHJtX3NtYW5fbW0gc21hbl9tbTsKIAkJc21hbl9tbS5wcml2YXRlID0gKHZvaWQgKikweEZGRkZGRkZGOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYuYwppbmRleCA4MGMwMWNkLi4wOTkzYjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYuYwpAQCAtNDAsMTEgKzQwLDEzIEBACiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCS5kcml2ZXJfZmVhdHVyZXMgPQogCSAgICBEUklWRVJfVVNFX0FHUCB8IERSSVZFUl9VU0VfTVRSUiB8IERSSVZFUl9IQVZFX0lSUSB8Ci0JICAgIERSSVZFUl9JUlFfU0hBUkVEIHwgRFJJVkVSX0lSUV9WQkwsCisJICAgIERSSVZFUl9JUlFfU0hBUkVELAogCS5sb2FkID0gdmlhX2RyaXZlcl9sb2FkLAogCS51bmxvYWQgPSB2aWFfZHJpdmVyX3VubG9hZCwKIAkuY29udGV4dF9kdG9yID0gdmlhX2ZpbmFsX2NvbnRleHQsCi0JLnZibGFua193YWl0ID0gdmlhX2RyaXZlcl92Ymxhbmtfd2FpdCwKKwkuZ2V0X3ZibGFua19jb3VudGVyID0gdmlhX2dldF92YmxhbmtfY291bnRlciwKKwkuZW5hYmxlX3ZibGFuayA9IHZpYV9lbmFibGVfdmJsYW5rLAorCS5kaXNhYmxlX3ZibGFuayA9IHZpYV9kaXNhYmxlX3ZibGFuaywKIAkuaXJxX3ByZWluc3RhbGwgPSB2aWFfZHJpdmVyX2lycV9wcmVpbnN0YWxsLAogCS5pcnFfcG9zdGluc3RhbGwgPSB2aWFfZHJpdmVyX2lycV9wb3N0aW5zdGFsbCwKIAkuaXJxX3VuaW5zdGFsbCA9IHZpYV9kcml2ZXJfaXJxX3VuaW5zdGFsbCwKQEAgLTU5LDE3ICs2MSwxNyBAQAogCS5nZXRfcmVnX29mcyA9IGRybV9jb3JlX2dldF9yZWdfb2ZzLAogCS5pb2N0bHMgPSB2aWFfaW9jdGxzLAogCS5mb3BzID0gewotCQkgLm93bmVyID0gVEhJU19NT0RVTEUsCi0JCSAub3BlbiA9IGRybV9vcGVuLAotCQkgLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwKLQkJIC5pb2N0bCA9IGRybV9pb2N0bCwKLQkJIC5tbWFwID0gZHJtX21tYXAsCi0JCSAucG9sbCA9IGRybV9wb2xsLAotCQkgLmZhc3luYyA9IGRybV9mYXN5bmMsCi0JfSwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJCS5vcGVuID0gZHJtX29wZW4sCisJCS5yZWxlYXNlID0gZHJtX3JlbGVhc2UsCisJCS5pb2N0bCA9IGRybV9pb2N0bCwKKwkJLm1tYXAgPSBkcm1fbW1hcCwKKwkJLnBvbGwgPSBkcm1fcG9sbCwKKwkJLmZhc3luYyA9IGRybV9mYXN5bmMsCisJCX0sCiAJLnBjaV9kcml2ZXIgPSB7Ci0JCSAubmFtZSA9IERSSVZFUl9OQU1FLAotCQkgLmlkX3RhYmxlID0gcGNpaWRsaXN0LAorCQkubmFtZSA9IERSSVZFUl9OQU1FLAorCQkuaWRfdGFibGUgPSBwY2lpZGxpc3QsCiAJfSwKIAogCS5uYW1lID0gRFJJVkVSX05BTUUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5oCmluZGV4IDJkYWFlODEuLmNhZmNiODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5oCkBAIC03NSw2ICs3NSw3IEBACiAJc3RydWN0IHRpbWV2YWwgbGFzdF92Ymxhbms7CiAJaW50IGxhc3RfdmJsYW5rX3ZhbGlkOwogCXVuc2lnbmVkIHVzZWNfcGVyX3ZibGFuazsKKwlhdG9taWNfdCB2YmxfcmVjZWl2ZWQ7CiAJZHJtX3ZpYV9zdGF0ZV90IGhjX3N0YXRlOwogCWNoYXIgcGNpX2J1ZltWSUFfUENJX0JVRl9TSVpFXTsKIAljb25zdCB1aW50MzJfdCAqZmlyZV9vZmZzZXRzW1ZJQV9GSVJFX0JVRl9TSVpFXTsKQEAgLTEzMCwyMSArMTMxLDI0IEBACiBleHRlcm4gaW50IHZpYV9maW5hbF9jb250ZXh0KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2LCBpbnQgY29udGV4dCk7CiAKIGV4dGVybiBpbnQgdmlhX2RvX2NsZWFudXBfbWFwKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKLWV4dGVybiBpbnQgdmlhX2RyaXZlcl92Ymxhbmtfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSk7CitleHRlcm4gdTMyIHZpYV9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIGludCB2aWFfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gdm9pZCB2aWFfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOwogCiBleHRlcm4gaXJxcmV0dXJuX3QgdmlhX2RyaXZlcl9pcnFfaGFuZGxlcihEUk1fSVJRX0FSR1MpOwogZXh0ZXJuIHZvaWQgdmlhX2RyaXZlcl9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7Ci1leHRlcm4gdm9pZCB2aWFfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldik7CitleHRlcm4gaW50IHZpYV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgdmlhX2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKIAogZXh0ZXJuIGludCB2aWFfZG1hX2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpOwogZXh0ZXJuIHZvaWQgdmlhX2luaXRfY29tbWFuZF92ZXJpZmllcih2b2lkKTsKIGV4dGVybiBpbnQgdmlhX2RyaXZlcl9kbWFfcXVpZXNjZW50KHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KTsKLWV4dGVybiB2b2lkIHZpYV9pbml0X2Z1dGV4KGRybV92aWFfcHJpdmF0ZV90ICogZGV2X3ByaXYpOwotZXh0ZXJuIHZvaWQgdmlhX2NsZWFudXBfZnV0ZXgoZHJtX3ZpYV9wcml2YXRlX3QgKiBkZXZfcHJpdik7Ci1leHRlcm4gdm9pZCB2aWFfcmVsZWFzZV9mdXRleChkcm1fdmlhX3ByaXZhdGVfdCAqIGRldl9wcml2LCBpbnQgY29udGV4dCk7CitleHRlcm4gdm9pZCB2aWFfaW5pdF9mdXRleChkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYpOworZXh0ZXJuIHZvaWQgdmlhX2NsZWFudXBfZnV0ZXgoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KTsKK2V4dGVybiB2b2lkIHZpYV9yZWxlYXNlX2Z1dGV4KGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgaW50IGNvbnRleHQpOwogCi1leHRlcm4gdm9pZCB2aWFfcmVjbGFpbV9idWZmZXJzX2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitleHRlcm4gdm9pZCB2aWFfcmVjbGFpbV9idWZmZXJzX2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBleHRlcm4gdm9pZCB2aWFfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiBleHRlcm4gdm9pZCB2aWFfZG1hYmxpdF9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmdpbmUsIGludCBmcm9tX2lycSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jCmluZGV4IGM2YmI5NzguLjY2NWQzMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIFZJQV9SRUdfSU5URVJSVVBUICAgICAgIDB4MjAwCiAKIC8qIFZJQV9SRUdfSU5URVJSVVBUICovCi0jZGVmaW5lIFZJQV9JUlFfR0xPQkFMICAgICAgICAgICgxIDw8IDMxKQorI2RlZmluZSBWSUFfSVJRX0dMT0JBTAkgICgxIDw8IDMxKQogI2RlZmluZSBWSUFfSVJRX1ZCTEFOS19FTkFCTEUgICAoMSA8PCAxOSkKICNkZWZpbmUgVklBX0lSUV9WQkxBTktfUEVORElORyAgKDEgPDwgMykKICNkZWZpbmUgVklBX0lSUV9IUVYwX0VOQUJMRSAgICAgKDEgPDwgMTEpCkBAIC02OCwxNiArNjgsMTUgQEAKIAogc3RhdGljIG1hc2thcnJheV90IHZpYV9wcm9fZ3JvdXBfYV9pcnFzW10gPSB7CiAJe1ZJQV9JUlFfSFFWMF9FTkFCTEUsIFZJQV9JUlFfSFFWMF9QRU5ESU5HLCAweDAwMDAwM0QwLCAweDAwMDA4MDEwLAotCSAweDAwMDAwMDAwfSwKKwkgMHgwMDAwMDAwMCB9LAogCXtWSUFfSVJRX0hRVjFfRU5BQkxFLCBWSUFfSVJRX0hRVjFfUEVORElORywgMHgwMDAwMTNEMCwgMHgwMDAwODAxMCwKLQkgMHgwMDAwMDAwMH0sCisJIDB4MDAwMDAwMDAgfSwKIAl7VklBX0lSUV9ETUEwX1REX0VOQUJMRSwgVklBX0lSUV9ETUEwX1REX1BFTkRJTkcsIFZJQV9QQ0lfRE1BX0NTUjAsCiAJIFZJQV9ETUFfQ1NSX1RBIHwgVklBX0RNQV9DU1JfVEQsIDB4MDAwMDAwMDh9LAogCXtWSUFfSVJRX0RNQTFfVERfRU5BQkxFLCBWSUFfSVJRX0RNQTFfVERfUEVORElORywgVklBX1BDSV9ETUFfQ1NSMSwKIAkgVklBX0RNQV9DU1JfVEEgfCBWSUFfRE1BX0NTUl9URCwgMHgwMDAwMDAwOH0sCiB9Owotc3RhdGljIGludCB2aWFfbnVtX3Byb19ncm91cF9hID0KLSAgICBzaXplb2YodmlhX3Byb19ncm91cF9hX2lycXMpIC8gc2l6ZW9mKG1hc2thcnJheV90KTsKK3N0YXRpYyBpbnQgdmlhX251bV9wcm9fZ3JvdXBfYSA9IEFSUkFZX1NJWkUodmlhX3Byb19ncm91cF9hX2lycXMpOwogc3RhdGljIGludCB2aWFfaXJxbWFwX3Byb19ncm91cF9hW10gPSB7MCwgMSwgLTEsIDIsIC0xLCAzfTsKIAogc3RhdGljIG1hc2thcnJheV90IHZpYV91bmljaHJvbWVfaXJxc1tdID0gewpAQCAtODYsMTQgKzg1LDI0IEBACiAJe1ZJQV9JUlFfRE1BMV9URF9FTkFCTEUsIFZJQV9JUlFfRE1BMV9URF9QRU5ESU5HLCBWSUFfUENJX0RNQV9DU1IxLAogCSBWSUFfRE1BX0NTUl9UQSB8IFZJQV9ETUFfQ1NSX1RELCAweDAwMDAwMDA4fQogfTsKLXN0YXRpYyBpbnQgdmlhX251bV91bmljaHJvbWUgPSBzaXplb2YodmlhX3VuaWNocm9tZV9pcnFzKSAvIHNpemVvZihtYXNrYXJyYXlfdCk7CitzdGF0aWMgaW50IHZpYV9udW1fdW5pY2hyb21lID0gQVJSQVlfU0laRSh2aWFfdW5pY2hyb21lX2lycXMpOwogc3RhdGljIGludCB2aWFfaXJxbWFwX3VuaWNocm9tZVtdID0gey0xLCAtMSwgLTEsIDAsIC0xLCAxfTsKIAorCiBzdGF0aWMgdW5zaWduZWQgdGltZV9kaWZmKHN0cnVjdCB0aW1ldmFsICpub3csIHN0cnVjdCB0aW1ldmFsICp0aGVuKQogewogCXJldHVybiAobm93LT50dl91c2VjID49IHRoZW4tPnR2X3VzZWMpID8KLQkgICAgbm93LT50dl91c2VjIC0gdGhlbi0+dHZfdXNlYyA6Ci0JICAgIDEwMDAwMDAgLSAodGhlbi0+dHZfdXNlYyAtIG5vdy0+dHZfdXNlYyk7CisJCW5vdy0+dHZfdXNlYyAtIHRoZW4tPnR2X3VzZWMgOgorCQkxMDAwMDAwIC0gKHRoZW4tPnR2X3VzZWMgLSBub3ctPnR2X3VzZWMpOworfQorCit1MzIgdmlhX2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWlmIChjcnRjICE9IDApCisJCXJldHVybiAwOworCisJcmV0dXJuIGF0b21pY19yZWFkKCZkZXZfcHJpdi0+dmJsX3JlY2VpdmVkKTsKIH0KIAogaXJxcmV0dXJuX3QgdmlhX2RyaXZlcl9pcnFfaGFuZGxlcihEUk1fSVJRX0FSR1MpCkBAIC0xMDgsMjMgKzExNywyMiBAQAogCiAJc3RhdHVzID0gVklBX1JFQUQoVklBX1JFR19JTlRFUlJVUFQpOwogCWlmIChzdGF0dXMgJiBWSUFfSVJRX1ZCTEFOS19QRU5ESU5HKSB7Ci0JCWF0b21pY19pbmMoJmRldi0+dmJsX3JlY2VpdmVkKTsKLQkJaWYgKCEoYXRvbWljX3JlYWQoJmRldi0+dmJsX3JlY2VpdmVkKSAmIDB4MEYpKSB7CisJCWF0b21pY19pbmMoJmRldl9wcml2LT52YmxfcmVjZWl2ZWQpOworCQlpZiAoIShhdG9taWNfcmVhZCgmZGV2X3ByaXYtPnZibF9yZWNlaXZlZCkgJiAweDBGKSkgewogCQkJZG9fZ2V0dGltZW9mZGF5KCZjdXJfdmJsYW5rKTsKIAkJCWlmIChkZXZfcHJpdi0+bGFzdF92YmxhbmtfdmFsaWQpIHsKIAkJCQlkZXZfcHJpdi0+dXNlY19wZXJfdmJsYW5rID0KLQkJCQkgICAgdGltZV9kaWZmKCZjdXJfdmJsYW5rLAotCQkJCQkgICAgICAmZGV2X3ByaXYtPmxhc3RfdmJsYW5rKSA+PiA0OworCQkJCQl0aW1lX2RpZmYoJmN1cl92YmxhbmssCisJCQkJCQkgICZkZXZfcHJpdi0+bGFzdF92YmxhbmspID4+IDQ7CiAJCQl9CiAJCQlkZXZfcHJpdi0+bGFzdF92YmxhbmsgPSBjdXJfdmJsYW5rOwogCQkJZGV2X3ByaXYtPmxhc3RfdmJsYW5rX3ZhbGlkID0gMTsKIAkJfQotCQlpZiAoIShhdG9taWNfcmVhZCgmZGV2LT52YmxfcmVjZWl2ZWQpICYgMHhGRikpIHsKKwkJaWYgKCEoYXRvbWljX3JlYWQoJmRldl9wcml2LT52YmxfcmVjZWl2ZWQpICYgMHhGRikpIHsKIAkJCURSTV9ERUJVRygiVVMgcGVyIHZibGFuayBpczogJXVcbiIsCiAJCQkJICBkZXZfcHJpdi0+dXNlY19wZXJfdmJsYW5rKTsKIAkJfQotCQlEUk1fV0FLRVVQKCZkZXYtPnZibF9xdWV1ZSk7Ci0JCWRybV92Ymxfc2VuZF9zaWduYWxzKGRldik7CisJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwgMCk7CiAJCWhhbmRsZWQgPSAxOwogCX0KIApAQCAtMTQ1LDYgKzE1Myw3IEBACiAJLyogQWNrbm93bGVnZSBpbnRlcnJ1cHRzICovCiAJVklBX1dSSVRFKFZJQV9SRUdfSU5URVJSVVBULCBzdGF0dXMpOwogCisKIAlpZiAoaGFuZGxlZCkKIAkJcmV0dXJuIElSUV9IQU5ETEVEOwogCWVsc2UKQEAgLTE2MywzMSArMTcyLDM0IEBACiAJfQogfQogCi1pbnQgdmlhX2RyaXZlcl92Ymxhbmtfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSkKK2ludCB2aWFfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKLQl1bnNpZ25lZCBpbnQgY3VyX3ZibGFuazsKLQlpbnQgcmV0ID0gMDsKKwlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXUzMiBzdGF0dXM7CiAKLQlEUk1fREVCVUcoIlxuIik7Ci0JaWYgKCFkZXZfcHJpdikgewotCQlEUk1fRVJST1IoImNhbGxlZCB3aXRoIG5vIGluaXRpYWxpemF0aW9uXG4iKTsKKwlpZiAoY3J0YyAhPSAwKSB7CisJCURSTV9FUlJPUigiJXM6ICBiYWQgY3J0YyAlZFxuIiwgX19mdW5jX18sIGNydGMpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQl2aWFkcnZfYWNrbm93bGVkZ2VfaXJxcyhkZXZfcHJpdik7CisJc3RhdHVzID0gVklBX1JFQUQoVklBX1JFR19JTlRFUlJVUFQpOworCVZJQV9XUklURShWSUFfUkVHX0lOVEVSUlVQVCwgc3RhdHVzICYgVklBX0lSUV9WQkxBTktfRU5BQkxFKTsKIAotCS8qIEFzc3VtZSB0aGF0IHRoZSB1c2VyIGhhcyBtaXNzZWQgdGhlIGN1cnJlbnQgc2VxdWVuY2UgbnVtYmVyCi0JICogYnkgYWJvdXQgYSBkYXkgcmF0aGVyIHRoYW4gc2hlIHdhbnRzIHRvIHdhaXQgZm9yIHllYXJzCi0JICogdXNpbmcgdmVydGljYWwgYmxhbmtzLi4uCi0JICovCisJVklBX1dSSVRFOCgweDgzZDQsIDB4MTEpOworCVZJQV9XUklURTgoMHg4M2Q1LCBWSUFfUkVBRDgoMHg4M2Q1KSB8IDB4MzApOwogCi0JRFJNX1dBSVRfT04ocmV0LCBkZXYtPnZibF9xdWV1ZSwgMyAqIERSTV9IWiwKLQkJICAgICgoKGN1cl92YmxhbmsgPSBhdG9taWNfcmVhZCgmZGV2LT52YmxfcmVjZWl2ZWQpKSAtCi0JCSAgICAgICpzZXF1ZW5jZSkgPD0gKDEgPDwgMjMpKSk7CisJcmV0dXJuIDA7Cit9CiAKLQkqc2VxdWVuY2UgPSBjdXJfdmJsYW5rOwotCXJldHVybiByZXQ7Cit2b2lkIHZpYV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKKwlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJVklBX1dSSVRFOCgweDgzZDQsIDB4MTEpOworCVZJQV9XUklURTgoMHg4M2Q1LCBWSUFfUkVBRDgoMHg4M2Q1KSAmIH4weDMwKTsKKworCWlmIChjcnRjICE9IDApCisJCURSTV9FUlJPUigiJXM6ICBiYWQgY3J0YyAlZFxuIiwgX19mdW5jX18sIGNydGMpOwogfQogCiBzdGF0aWMgaW50CkBAIC0yMzksNiArMjUxLDcgQEAKIAlyZXR1cm4gcmV0OwogfQogCisKIC8qCiAgKiBkcm1fZG1hLmggaG9va3MKICAqLwpAQCAtMjkyLDIzICszMDUsMjUgQEAKIAl9CiB9CiAKLXZvaWQgdmlhX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCitpbnQgdmlhX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgc3RhdHVzOwogCi0JRFJNX0RFQlVHKCJcbiIpOwotCWlmIChkZXZfcHJpdikgewotCQlzdGF0dXMgPSBWSUFfUkVBRChWSUFfUkVHX0lOVEVSUlVQVCk7Ci0JCVZJQV9XUklURShWSUFfUkVHX0lOVEVSUlVQVCwgc3RhdHVzIHwgVklBX0lSUV9HTE9CQUwKLQkJCSAgfCBkZXZfcHJpdi0+aXJxX2VuYWJsZV9tYXNrKTsKKwlEUk1fREVCVUcoInZpYV9kcml2ZXJfaXJxX3Bvc3RpbnN0YWxsXG4iKTsKKwlpZiAoIWRldl9wcml2KQorCQlyZXR1cm4gLUVJTlZBTDsKIAotCQkvKiBTb21lIG1hZ2ljLCBvaCBmb3Igc29tZSBkYXRhIHNoZWV0cyAhICovCisJZHJtX3ZibGFua19pbml0KGRldiwgMSk7CisJc3RhdHVzID0gVklBX1JFQUQoVklBX1JFR19JTlRFUlJVUFQpOworCVZJQV9XUklURShWSUFfUkVHX0lOVEVSUlVQVCwgc3RhdHVzIHwgVklBX0lSUV9HTE9CQUwKKwkJICB8IGRldl9wcml2LT5pcnFfZW5hYmxlX21hc2spOwogCi0JCVZJQV9XUklURTgoMHg4M2Q0LCAweDExKTsKLQkJVklBX1dSSVRFOCgweDgzZDUsIFZJQV9SRUFEOCgweDgzZDUpIHwgMHgzMCk7CisJLyogU29tZSBtYWdpYywgb2ggZm9yIHNvbWUgZGF0YSBzaGVldHMgISAqLworCVZJQV9XUklURTgoMHg4M2Q0LCAweDExKTsKKwlWSUFfV1JJVEU4KDB4ODNkNSwgVklBX1JFQUQ4KDB4ODNkNSkgfCAweDMwKTsKIAotCX0KKwlyZXR1cm4gMDsKIH0KIAogdm9pZCB2aWFfZHJpdmVyX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCkBAIC0zMzksOSArMzU0LDYgQEAKIAlkcm1fdmlhX2lycV90ICpjdXJfaXJxID0gZGV2X3ByaXYtPnZpYV9pcnFzOwogCWludCBmb3JjZV9zZXF1ZW5jZTsKIAotCWlmICghZGV2LT5pcnEpCi0JCXJldHVybiAtRUlOVkFMOwotCiAJaWYgKGlycXdhaXQtPnJlcXVlc3QuaXJxID49IGRldl9wcml2LT5udW1faXJxcykgewogCQlEUk1fRVJST1IoIlRyeWluZyB0byB3YWl0IG9uIHVua25vd24gaXJxICVkXG4iLAogCQkJICBpcnF3YWl0LT5yZXF1ZXN0LmlycSk7CkBAIC0zNTIsNyArMzY0LDggQEAKIAogCXN3aXRjaCAoaXJxd2FpdC0+cmVxdWVzdC50eXBlICYgflZJQV9JUlFfRkxBR1NfTUFTSykgewogCWNhc2UgVklBX0lSUV9SRUxBVElWRToKLQkJaXJxd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSArPSBhdG9taWNfcmVhZCgmY3VyX2lycS0+aXJxX3JlY2VpdmVkKTsKKwkJaXJxd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSArPQorCQkJYXRvbWljX3JlYWQoJmN1cl9pcnEtPmlycV9yZWNlaXZlZCk7CiAJCWlycXdhaXQtPnJlcXVlc3QudHlwZSAmPSB+X0RSTV9WQkxBTktfUkVMQVRJVkU7CiAJY2FzZSBWSUFfSVJRX0FCU09MVVRFOgogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9tbS5jCmluZGV4IGU2NDA5NDkuLmY2OTRjYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX21tLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfbW0uYwpAQCAtOTMsOCArOTMsNyBAQAogCS8qIExhc3QgY29udGV4dCwgcGVyZm9ybSBjbGVhbnVwICovCiAJaWYgKGRldi0+Y3R4X2NvdW50ID09IDEgJiYgZGV2LT5kZXZfcHJpdmF0ZSkgewogCQlEUk1fREVCVUcoIkxhc3QgQ29udGV4dFxuIik7Ci0JCWlmIChkZXYtPmlycSkKLQkJCWRybV9pcnFfdW5pbnN0YWxsKGRldik7CisJCWRybV9pcnFfdW5pbnN0YWxsKGRldik7CiAJCXZpYV9jbGVhbnVwX2Z1dGV4KGRldl9wcml2KTsKIAkJdmlhX2RvX2NsZWFudXBfbWFwKGRldik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLWNvcmUuYwppbmRleCAxZDNiOGEzLi43MDVhNDNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLWNvcmUuYworKysgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLWNvcmUuYwpAQCAtNDI4LDcgKzQyOCw3IEBACiAJCXVzYmhpZC0+b3V0W3VzYmhpZC0+b3V0aGVhZF0ucmF3X3JlcG9ydCA9IGttYWxsb2MobGVuLCBHRlBfQVRPTUlDKTsKIAkJaWYgKCF1c2JoaWQtPm91dFt1c2JoaWQtPm91dGhlYWRdLnJhd19yZXBvcnQpIHsKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYmhpZC0+b3V0bG9jaywgZmxhZ3MpOwotCQkJd2Fybigib3V0cHV0IHF1ZXVlaW5nIGZhaWxlZCIpOworCQkJZGV2X3dhcm4oJmhpZC0+ZGV2LCAib3V0cHV0IHF1ZXVlaW5nIGZhaWxlZFxuIik7CiAJCQlyZXR1cm47CiAJCX0KIAkJaGlkX291dHB1dF9yZXBvcnQocmVwb3J0LCB1c2JoaWQtPm91dFt1c2JoaWQtPm91dGhlYWRdLnJhd19yZXBvcnQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBACiAJCXVzYmhpZC0+Y3RybFt1c2JoaWQtPmN0cmxoZWFkXS5yYXdfcmVwb3J0ID0ga21hbGxvYyhsZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIXVzYmhpZC0+Y3RybFt1c2JoaWQtPmN0cmxoZWFkXS5yYXdfcmVwb3J0KSB7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1c2JoaWQtPmN0cmxsb2NrLCBmbGFncyk7Ci0JCQl3YXJuKCJjb250cm9sIHF1ZXVlaW5nIGZhaWxlZCIpOworCQkJZGV2X3dhcm4oJmhpZC0+ZGV2LCAiY29udHJvbCBxdWV1ZWluZyBmYWlsZWRcbiIpOwogCQkJcmV0dXJuOwogCQl9CiAJCWhpZF9vdXRwdXRfcmVwb3J0KHJlcG9ydCwgdXNiaGlkLT5jdHJsW3VzYmhpZC0+Y3RybGhlYWRdLnJhd19yZXBvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9LY29uZmlnIGIvZHJpdmVycy9od21vbi9LY29uZmlnCmluZGV4IGViYWNjMGEuLjZkZTFlMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vS2NvbmZpZworKysgYi9kcml2ZXJzL2h3bW9uL0tjb25maWcKQEAgLTUxMCwxMSArNTEwLDkgQEAKIAlkZXBlbmRzIG9uIEkyQwogCWhlbHAKIAkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNOTAsCi0JICBMTTg2LCBMTTg5IGFuZCBMTTk5LCBBbmFsb2cgRGV2aWNlcyBBRE0xMDMyIGFuZCBNYXhpbSBNQVg2NjU3LAotCSAgTUFYNjY1OCwgTUFYNjY1OSwgTUFYNjY4MCBhbmQgTUFYNjY4MSBzZW5zb3IgY2hpcHMuCi0KLQkgIFRoZSBBbmFsb2cgRGV2aWNlcyBBRFQ3NDYxIHNlbnNvciBjaGlwIGlzIGFsc28gc3VwcG9ydGVkLCBidXQgb25seQotCSAgaWYgZm91bmQgaW4gQURNMTAzMiBjb21wYXRpYmlsaXR5IG1vZGUuCisJICBMTTg2LCBMTTg5IGFuZCBMTTk5LCBBbmFsb2cgRGV2aWNlcyBBRE0xMDMyIGFuZCBBRFQ3NDYxLCBhbmQgTWF4aW0KKwkgIE1BWDY2NDYsIE1BWDY2NDcsIE1BWDY2NDksIE1BWDY2NTcsIE1BWDY2NTgsIE1BWDY2NTksIE1BWDY2ODAgYW5kCisJICBNQVg2NjgxIHNlbnNvciBjaGlwcy4KIAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgbG05MC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKaW5kZXggN2ZlMjQ0MS4uZmY3ZGU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTI3OSw3ICsyNzksNiBAQAogCXU4IGZhbl9taW5bOF07CQkvKiBSZWdpc3RlciB2YWx1ZSAqLwogCXU4IGZhbl9kaXZbOF07CQkvKiBEZWNvZGVkIHZhbHVlICovCiAJc3RydWN0IHB3bV9kYXRhIHB3bTE7CS8qIFB3bSBjb250cm9sIHZhbHVlcyAqLwotCWludCB2aWQ7CQkvKiBEZWNvZGVkIHZhbHVlICovCiAJdTggdnJtOwkJCS8qIFZSTSB2ZXJzaW9uICovCiAJdTggYW5hbG9nX291dDsJCS8qIFJlZ2lzdGVyIHZhbHVlIChEQUMpICovCiAJbG9uZyBhbGFybXM7CQkvKiBSZWdpc3RlciBlbmNvZGluZywgY29tYmluZWQgKi8KQEAgLTQ1NSw3ICs0NTQsNyBAQAogCXN0cnVjdCBhZG0xMDI2X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAlpbnQgaTsKIAotCWRldl9kYmcoJmNsaWVudC0+ZGV2LCAiR1BJTyBjb25maWcgaXM6Iik7CisJZGV2X2RiZygmY2xpZW50LT5kZXYsICJHUElPIGNvbmZpZyBpczpcbiIpOwogCWZvciAoaSA9IDA7aSA8PSA3OysraSkgewogCQlpZiAoZGF0YS0+Y29uZmlnMiAmICgxIDw8IGkpKSB7CiAJCQlkZXZfZGJnKCZjbGllbnQtPmRldiwgIlx0JXNHUCVzJWRcbiIsCkBAIC02OTcsOCArNjk2LDYgQEAKIAkJZGF0YS0+bGFzdF9jb25maWcgPSBqaWZmaWVzOwogCX07IC8qIGxhc3RfY29uZmlnICovCiAKLQlkZXZfZGJnKCZjbGllbnQtPmRldiwgIlNldHRpbmcgVklEIGZyb20gR1BJTzExLTE1LlxuIik7Ci0JZGF0YS0+dmlkID0gKGRhdGEtPmdwaW8gPj4gMTEpICYgMHgxZjsKIAlkYXRhLT52YWxpZCA9IDE7CiAJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAJcmV0dXJuIGRhdGE7CkBAIC0xMjE1LDcgKzEyMTIsMTAgQEAKIHN0YXRpYyBzc2l6ZV90IHNob3dfdmlkX3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJc3RydWN0IGFkbTEwMjZfZGF0YSAqZGF0YSA9IGFkbTEwMjZfdXBkYXRlX2RldmljZShkZXYpOwotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB2aWRfZnJvbV9yZWcoZGF0YS0+dmlkICYgMHgzZiwgZGF0YS0+dnJtKSk7CisJaW50IHZpZCA9IChkYXRhLT5ncGlvID4+IDExKSAmIDB4MWY7CisKKwlkZXZfZGJnKGRldiwgIlNldHRpbmcgVklEIGZyb20gR1BJTzExLTE1LlxuIik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIHZpZF9mcm9tX3JlZyh2aWQsIGRhdGEtPnZybSkpOwogfQogc3RhdGljIERFVklDRV9BVFRSKGNwdTBfdmlkLCBTX0lSVUdPLCBzaG93X3ZpZF9yZWcsIE5VTEwpOwogCkBAIC0xNjgxLDE3ICsxNjgxLDE2IEBACiAJCQlraW5kID0gYWRtMTAyNjsKIAkJfSBlbHNlIGlmIChjb21wYW55ID09IEFETTEwMjZfQ09NUEFOWV9BTkFMT0dfREVWCiAJCQkmJiAodmVyc3RlcCAmIDB4ZjApID09IEFETTEwMjZfVkVSU1RFUF9HRU5FUklDKSB7Ci0JCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICI6IFVucmVjb2duaXplZCBzdGVwcGluZyAiCisJCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJVbnJlY29nbml6ZWQgc3RlcHBpbmcgIgogCQkJCSIweCUwMnguIERlZmF1bHRpbmcgdG8gQURNMTAyNi5cbiIsIHZlcnN0ZXApOwogCQkJa2luZCA9IGFkbTEwMjY7CiAJCX0gZWxzZSBpZiAoKHZlcnN0ZXAgJiAweGYwKSA9PSBBRE0xMDI2X1ZFUlNURVBfR0VORVJJQykgewotCQkJZGV2X2VycigmYWRhcHRlci0+ZGV2LCAiOiBGb3VuZCB2ZXJzaW9uL3N0ZXBwaW5nICIKKwkJCWRldl9lcnIoJmFkYXB0ZXItPmRldiwgIkZvdW5kIHZlcnNpb24vc3RlcHBpbmcgIgogCQkJCSIweCUwMnguIEFzc3VtaW5nIGdlbmVyaWMgQURNMTAyNi5cbiIsCiAJCQkJdmVyc3RlcCk7CiAJCQlraW5kID0gYW55X2NoaXA7CiAJCX0gZWxzZSB7Ci0JCQlkZXZfZGJnKCZhZGFwdGVyLT5kZXYsICI6IEF1dG9kZXRlY3Rpb24gIgotCQkJCSJmYWlsZWRcbiIpOworCQkJZGV2X2RiZygmYWRhcHRlci0+ZGV2LCAiQXV0b2RldGVjdGlvbiBmYWlsZWRcbiIpOwogCQkJLyogTm90IGFuIEFETTEwMjYgLi4uICovCiAJCQlpZiAoa2luZCA9PSAwKSB7IC8qIFVzZXIgdXNlZCBmb3JjZT14LHkgKi8KIAkJCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJHZW5lcmljIEFETTEwMjYgbm90ICIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jIGIvZHJpdmVycy9od21vbi9hZG0xMDI5LmMKaW5kZXggYmE4NGNhNS4uMzY3MTgxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG0xMDI5LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI5LmMKQEAgLTE3OSw3ICsxNzksOCBAQAogCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsKIAlzdHJ1Y3QgYWRtMTAyOV9kYXRhICpkYXRhID0gYWRtMTAyOV91cGRhdGVfZGV2aWNlKGRldik7CiAJdTE2IHZhbDsKLQlpZiAoZGF0YS0+ZmFuW2F0dHItPmluZGV4XSA9PSAwIHx8IGRhdGEtPmZhbl9kaXZbYXR0ci0+aW5kZXhdID09IDAKKwlpZiAoZGF0YS0+ZmFuW2F0dHItPmluZGV4XSA9PSAwCisJICAgIHx8IChkYXRhLT5mYW5fZGl2W2F0dHItPmluZGV4XSAmIDB4QzApID09IDAKIAkgICAgfHwgZGF0YS0+ZmFuW2F0dHItPmluZGV4XSA9PSAyNTUpIHsKIAkJcmV0dXJuIHNwcmludGYoYnVmLCAiMFxuIik7CiAJfQpAQCAtMTk0LDcgKzE5NSw3IEBACiB7CiAJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOwogCXN0cnVjdCBhZG0xMDI5X2RhdGEgKmRhdGEgPSBhZG0xMDI5X3VwZGF0ZV9kZXZpY2UoZGV2KTsKLQlpZiAoZGF0YS0+ZmFuX2RpdlthdHRyLT5pbmRleF0gPT0gMCkKKwlpZiAoKGRhdGEtPmZhbl9kaXZbYXR0ci0+aW5kZXhdICYgMHhDMCkgPT0gMCkKIAkJcmV0dXJuIHNwcmludGYoYnVmLCAiMFxuIik7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIERJVl9GUk9NX1JFRyhkYXRhLT5mYW5fZGl2W2F0dHItPmluZGV4XSkpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hbXMvYW1zLWNvcmUuYyBiL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy1jb3JlLmMKaW5kZXggZmJlZmE4Mi4uNmM5YWNlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hbXMvYW1zLWNvcmUuYworKysgYi9kcml2ZXJzL2h3bW9uL2Ftcy9hbXMtY29yZS5jCkBAIC05OSw0MCArOTksMzIgQEAKICAqLwogc3RhdGljIHZvaWQgYW1zX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1OCBpcnFzX3RvX2NsZWFyOworCiAJbXV0ZXhfbG9jaygmYW1zX2luZm8ubG9jayk7CiAKLQlpZiAoYW1zX2luZm8uaGFzX2RldmljZSkgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCXNwaW5fbG9ja19pcnFzYXZlKCZhbXNfaW5mby5pcnFfbG9jaywgZmxhZ3MpOworCWlycXNfdG9fY2xlYXIgPSBhbXNfaW5mby53b3JrZXJfaXJxczsKIAotCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1zX2luZm8uaXJxX2xvY2ssIGZsYWdzKTsKKwlpZiAoYW1zX2luZm8ud29ya2VyX2lycXMgJiBBTVNfSVJRX0ZSRUVGQUxMKSB7CisJCWlmICh2ZXJib3NlKQorCQkJcHJpbnRrKEtFUk5fSU5GTyAiYW1zOiBmcmVlZmFsbCBkZXRlY3RlZCFcbiIpOwogCi0JCWlmIChhbXNfaW5mby53b3JrZXJfaXJxcyAmIEFNU19JUlFfRlJFRUZBTEwpIHsKLQkJCWlmICh2ZXJib3NlKQotCQkJCXByaW50ayhLRVJOX0lORk8gImFtczogZnJlZWZhbGwgZGV0ZWN0ZWQhXG4iKTsKLQotCQkJYW1zX2luZm8ud29ya2VyX2lycXMgJj0gfkFNU19JUlFfRlJFRUZBTEw7Ci0KLQkJCS8qIHdlIG11c3QgY2FsbCB0aGlzIHdpdGggaW50ZXJydXB0cyBlbmFibGVkICovCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXNfaW5mby5pcnFfbG9jaywgZmxhZ3MpOwotCQkJYW1zX2luZm8uY2xlYXJfaXJxKEFNU19JUlFfRlJFRUZBTEwpOwotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtc19pbmZvLmlycV9sb2NrLCBmbGFncyk7Ci0JCX0KLQotCQlpZiAoYW1zX2luZm8ud29ya2VyX2lycXMgJiBBTVNfSVJRX1NIT0NLKSB7Ci0JCQlpZiAodmVyYm9zZSkKLQkJCQlwcmludGsoS0VSTl9JTkZPICJhbXM6IHNob2NrIGRldGVjdGVkIVxuIik7Ci0KLQkJCWFtc19pbmZvLndvcmtlcl9pcnFzICY9IH5BTVNfSVJRX1NIT0NLOwotCi0JCQkvKiB3ZSBtdXN0IGNhbGwgdGhpcyB3aXRoIGludGVycnVwdHMgZW5hYmxlZCAqLwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1zX2luZm8uaXJxX2xvY2ssIGZsYWdzKTsKLQkJCWFtc19pbmZvLmNsZWFyX2lycShBTVNfSVJRX1NIT0NLKTsKLQkJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXNfaW5mby5pcnFfbG9jaywgZmxhZ3MpOwotCQl9Ci0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1zX2luZm8uaXJxX2xvY2ssIGZsYWdzKTsKKwkJYW1zX2luZm8ud29ya2VyX2lycXMgJj0gfkFNU19JUlFfRlJFRUZBTEw7CiAJfQogCisJaWYgKGFtc19pbmZvLndvcmtlcl9pcnFzICYgQU1TX0lSUV9TSE9DSykgeworCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ayhLRVJOX0lORk8gImFtczogc2hvY2sgZGV0ZWN0ZWQhXG4iKTsKKworCQlhbXNfaW5mby53b3JrZXJfaXJxcyAmPSB+QU1TX0lSUV9TSE9DSzsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXNfaW5mby5pcnFfbG9jaywgZmxhZ3MpOworCisJYW1zX2luZm8uY2xlYXJfaXJxKGlycXNfdG9fY2xlYXIpOworCiAJbXV0ZXhfdW5sb2NrKCZhbXNfaW5mby5sb2NrKTsKIH0KIApAQCAtMjIzLDM0ICsyMTUsMjggQEAKIAogdm9pZCBhbXNfZXhpdCh2b2lkKQogewotCW11dGV4X2xvY2soJmFtc19pbmZvLmxvY2spOworCS8qIFJlbW92ZSBpbnB1dCBkZXZpY2UgKi8KKwlhbXNfaW5wdXRfZXhpdCgpOwogCi0JaWYgKGFtc19pbmZvLmhhc19kZXZpY2UpIHsKLQkJLyogUmVtb3ZlIGlucHV0IGRldmljZSAqLwotCQlhbXNfaW5wdXRfZXhpdCgpOworCS8qIFJlbW92ZSBhdHRyaWJ1dGVzICovCisJZGV2aWNlX3JlbW92ZV9maWxlKCZhbXNfaW5mby5vZl9kZXYtPmRldiwgJmRldl9hdHRyX2N1cnJlbnQpOwogCi0JCS8qIFNodXQgZG93biBpbXBsZW1lbnRhdGlvbiAqLwotCQlhbXNfaW5mby5leGl0KCk7CisJLyogU2h1dCBkb3duIGltcGxlbWVudGF0aW9uICovCisJYW1zX2luZm8uZXhpdCgpOwogCi0JCS8qIEZsdXNoIGludGVycnVwdCB3b3JrZXIKLQkJICoKLQkJICogV2UgZG8gdGhpcyBhZnRlciBhbXNfaW5mby5leGl0KCksIGJlY2F1c2UgYW4gaW50ZXJydXB0IG1pZ2h0Ci0JCSAqIGhhdmUgYXJyaXZlZCBiZWZvcmUgZGlzYWJsaW5nIHRoZW0uCi0JCSAqLwotCQlmbHVzaF9zY2hlZHVsZWRfd29yaygpOworCS8qIEZsdXNoIGludGVycnVwdCB3b3JrZXIKKwkgKgorCSAqIFdlIGRvIHRoaXMgYWZ0ZXIgYW1zX2luZm8uZXhpdCgpLCBiZWNhdXNlIGFuIGludGVycnVwdCBtaWdodAorCSAqIGhhdmUgYXJyaXZlZCBiZWZvcmUgZGlzYWJsaW5nIHRoZW0uCisJICovCisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKIAotCQkvKiBSZW1vdmUgYXR0cmlidXRlcyAqLwotCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmFtc19pbmZvLm9mX2Rldi0+ZGV2LCAmZGV2X2F0dHJfY3VycmVudCk7CisJLyogUmVtb3ZlIGRldmljZSAqLworCW9mX2RldmljZV91bnJlZ2lzdGVyKGFtc19pbmZvLm9mX2Rldik7CiAKLQkJLyogUmVtb3ZlIGRldmljZSAqLwotCQlvZl9kZXZpY2VfdW5yZWdpc3RlcihhbXNfaW5mby5vZl9kZXYpOwotCi0JCS8qIFJlbW92ZSBoYW5kbGVyICovCi0JCXBtZl91bnJlZ2lzdGVyX2lycV9jbGllbnQoJmFtc19zaG9ja19jbGllbnQpOwotCQlwbWZfdW5yZWdpc3Rlcl9pcnFfY2xpZW50KCZhbXNfZnJlZWZhbGxfY2xpZW50KTsKLQl9Ci0KLQltdXRleF91bmxvY2soJmFtc19pbmZvLmxvY2spOworCS8qIFJlbW92ZSBoYW5kbGVyICovCisJcG1mX3VucmVnaXN0ZXJfaXJxX2NsaWVudCgmYW1zX3Nob2NrX2NsaWVudCk7CisJcG1mX3VucmVnaXN0ZXJfaXJxX2NsaWVudCgmYW1zX2ZyZWVmYWxsX2NsaWVudCk7CiB9CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZWxpYW4gUG9wLCBNaWNoYWVsIEhhbnNlbG1hbm4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy1pMmMuYyBiL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy1pMmMuYwppbmRleCA5NTc3NjA1My4uMmNiZjhhNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy1pMmMuYworKysgYi9kcml2ZXJzL2h3bW9uL2Ftcy9hbXMtaTJjLmMKQEAgLTYwLDI2ICs2MCwzNCBAQAogCUFNU19DTURfU1RBUlQsCiB9OwogCi1zdGF0aWMgaW50IGFtc19pMmNfYXR0YWNoKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Ci1zdGF0aWMgaW50IGFtc19pMmNfZGV0YWNoKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgaW50IGFtc19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpOworc3RhdGljIGludCBhbXNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFtc19pZFtdID0geworCXsgImFtcyIsIDAgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgYW1zX2lkKTsKIAogc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFtc19pMmNfZHJpdmVyID0gewogCS5kcml2ZXIgPSB7CiAJCS5uYW1lICAgPSAiYW1zIiwKIAkJLm93bmVyICA9IFRISVNfTU9EVUxFLAogCX0sCi0JLmF0dGFjaF9hZGFwdGVyID0gYW1zX2kyY19hdHRhY2gsCi0JLmRldGFjaF9hZGFwdGVyID0gYW1zX2kyY19kZXRhY2gsCisJLnByb2JlICAgICAgICAgID0gYW1zX2kyY19wcm9iZSwKKwkucmVtb3ZlICAgICAgICAgPSBhbXNfaTJjX3JlbW92ZSwKKwkuaWRfdGFibGUgICAgICAgPSBhbXNfaWQsCiB9OwogCiBzdGF0aWMgczMyIGFtc19pMmNfcmVhZCh1OCByZWcpCiB7Ci0JcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YSgmYW1zX2luZm8uaTJjX2NsaWVudCwgcmVnKTsKKwlyZXR1cm4gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGFtc19pbmZvLmkyY19jbGllbnQsIHJlZyk7CiB9CiAKIHN0YXRpYyBpbnQgYW1zX2kyY193cml0ZSh1OCByZWcsIHU4IHZhbHVlKQogewotCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKCZhbXNfaW5mby5pMmNfY2xpZW50LCByZWcsIHZhbHVlKTsKKwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShhbXNfaW5mby5pMmNfY2xpZW50LCByZWcsIHZhbHVlKTsKIH0KIAogc3RhdGljIGludCBhbXNfaTJjX2NtZChlbnVtIGFtc19pMmNfY21kIGNtZCkKQEAgLTE1Miw5ICsxNjAsOSBAQAogCSp6ID0gYW1zX2kyY19yZWFkKEFNU19EQVRBWik7CiB9CiAKLXN0YXRpYyBpbnQgYW1zX2kyY19hdHRhY2goc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQorc3RhdGljIGludCBhbXNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQkgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewotCXVuc2lnbmVkIGxvbmcgYnVzOwogCWludCB2bWFqLCB2bWluOwogCWludCByZXN1bHQ7CiAKQEAgLTE2MiwxNyArMTcwLDcgQEAKIAlpZiAodW5saWtlbHkoYW1zX2luZm8uaGFzX2RldmljZSkpCiAJCXJldHVybiAtRU5PREVWOwogCi0JaWYgKHN0cm5jbXAoYWRhcHRlci0+bmFtZSwgInVuaS1uIiwgNSkpCi0JCXJldHVybiAtRU5PREVWOwotCi0JYnVzID0gc2ltcGxlX3N0cnRvdWwoYWRhcHRlci0+bmFtZSArIDYsIE5VTEwsIDEwKTsKLQlpZiAoYnVzICE9IGFtc19pbmZvLmkyY19idXMpCi0JCXJldHVybiAtRU5PREVWOwotCi0JYW1zX2luZm8uaTJjX2NsaWVudC5hZGRyID0gYW1zX2luZm8uaTJjX2FkZHJlc3M7Ci0JYW1zX2luZm8uaTJjX2NsaWVudC5hZGFwdGVyID0gYWRhcHRlcjsKLQlhbXNfaW5mby5pMmNfY2xpZW50LmRyaXZlciA9ICZhbXNfaTJjX2RyaXZlcjsKLQlzdHJjcHkoYW1zX2luZm8uaTJjX2NsaWVudC5uYW1lLCAiQXBwbGUgTW90aW9uIFNlbnNvciIpOworCWFtc19pbmZvLmkyY19jbGllbnQgPSBjbGllbnQ7CiAKIAlpZiAoYW1zX2kyY19jbWQoQU1TX0NNRF9SRVNFVCkpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiYW1zOiBGYWlsZWQgdG8gcmVzZXQgdGhlIGRldmljZVxuIik7CkBAIC0yMzcsNyArMjM1LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhbXNfaTJjX2RldGFjaChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCitzdGF0aWMgaW50IGFtc19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7CiAJaWYgKGFtc19pbmZvLmhhc19kZXZpY2UpIHsKIAkJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovCkBAIC0yNjEsMTEgKzI1OSw3IEBACiAKIGludCBfX2luaXQgYW1zX2kyY19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiB7Ci0JY2hhciAqdG1wX2J1czsKIAlpbnQgcmVzdWx0OwotCWNvbnN0IHUzMiAqcHJvcDsKLQotCW11dGV4X2xvY2soJmFtc19pbmZvLmxvY2spOwogCiAJLyogU2V0IGltcGxlbWVudGF0aW9uIHN0dWZmICovCiAJYW1zX2luZm8ub2Zfbm9kZSA9IG5wOwpAQCAtMjc1LDI1ICsyNjksNyBAQAogCWFtc19pbmZvLmNsZWFyX2lycSA9IGFtc19pMmNfY2xlYXJfaXJxOwogCWFtc19pbmZvLmJ1c3R5cGUgPSBCVVNfSTJDOwogCi0JLyogbG9vayBmb3IgYnVzIGVpdGhlciB1c2luZyAicmVnIiBvciBieSBwYXRoICovCi0JcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShhbXNfaW5mby5vZl9ub2RlLCAicmVnIiwgTlVMTCk7Ci0JaWYgKCFwcm9wKSB7Ci0JCXJlc3VsdCA9IC1FTk9ERVY7Ci0KLQkJZ290byBleGl0OwotCX0KLQotCXRtcF9idXMgPSBzdHJzdHIoYW1zX2luZm8ub2Zfbm9kZS0+ZnVsbF9uYW1lLCAiL2kyYy1idXNAIik7Ci0JaWYgKHRtcF9idXMpCi0JCWFtc19pbmZvLmkyY19idXMgPSAqKHRtcF9idXMgKyA5KSAtICcwJzsKLQllbHNlCi0JCWFtc19pbmZvLmkyY19idXMgPSAoKCpwcm9wKSA+PiA4KSAmIDB4MGY7Ci0JYW1zX2luZm8uaTJjX2FkZHJlc3MgPSAoKCpwcm9wKSAmIDB4ZmYpID4+IDE7Ci0KIAlyZXN1bHQgPSBpMmNfYWRkX2RyaXZlcigmYW1zX2kyY19kcml2ZXIpOwogCi1leGl0OgotCW11dGV4X3VubG9jaygmYW1zX2luZm8ubG9jayk7Ci0KIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hbXMvYW1zLWlucHV0LmMgYi9kcml2ZXJzL2h3bW9uL2Ftcy9hbXMtaW5wdXQuYwppbmRleCA3YjgxZTBjMi4uOGE3MTIzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hbXMvYW1zLWlucHV0LmMKKysrIGIvZHJpdmVycy9od21vbi9hbXMvYW1zLWlucHV0LmMKQEAgLTIwLDEzICsyMCwxNSBAQAogI2luY2x1ZGUgImFtcy5oIgogCiBzdGF0aWMgdW5zaWduZWQgaW50IGpveXN0aWNrOwotbW9kdWxlX3BhcmFtKGpveXN0aWNrLCBib29sLCAwNjQ0KTsKK21vZHVsZV9wYXJhbShqb3lzdGljaywgYm9vbCwgU19JUlVHTyk7CiBNT0RVTEVfUEFSTV9ERVNDKGpveXN0aWNrLCAiRW5hYmxlIHRoZSBpbnB1dCBjbGFzcyBkZXZpY2Ugb24gbW9kdWxlIGxvYWQiKTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBpbnZlcnQ7Ci1tb2R1bGVfcGFyYW0oaW52ZXJ0LCBib29sLCAwNjQ0KTsKK21vZHVsZV9wYXJhbShpbnZlcnQsIGJvb2wsIFNfSVdVU1IgfCBTX0lSVUdPKTsKIE1PRFVMRV9QQVJNX0RFU0MoaW52ZXJ0LCAiSW52ZXJ0IGlucHV0IGRhdGEgb24gWCBhbmQgWSBheGlzIik7CiAKK3N0YXRpYyBERUZJTkVfTVVURVgoYW1zX2lucHV0X211dGV4KTsKKwogc3RhdGljIHZvaWQgYW1zX2lkZXZfcG9sbChzdHJ1Y3QgaW5wdXRfcG9sbGVkX2RldiAqZGV2KQogewogCXN0cnVjdCBpbnB1dF9kZXYgKmlkZXYgPSBkZXYtPmlucHV0OwpAQCAtNTAsMTMgKzUyLDExIEBACiB9CiAKIC8qIENhbGwgd2l0aCBhbXNfaW5mby5sb2NrIGhlbGQhICovCi1zdGF0aWMgdm9pZCBhbXNfaW5wdXRfZW5hYmxlKHZvaWQpCitzdGF0aWMgaW50IGFtc19pbnB1dF9lbmFibGUodm9pZCkKIHsKIAlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dDsKIAlzOCB4LCB5LCB6OwotCi0JaWYgKGFtc19pbmZvLmlkZXYpCi0JCXJldHVybjsKKwlpbnQgZXJyb3I7CiAKIAlhbXNfc2Vuc29ycygmeCwgJnksICZ6KTsKIAlhbXNfaW5mby54Y2FsaWIgPSB4OwpAQCAtNjUsNyArNjUsNyBAQAogCiAJYW1zX2luZm8uaWRldiA9IGlucHV0X2FsbG9jYXRlX3BvbGxlZF9kZXZpY2UoKTsKIAlpZiAoIWFtc19pbmZvLmlkZXYpCi0JCXJldHVybjsKKwkJcmV0dXJuIC1FTk9NRU07CiAKIAlhbXNfaW5mby5pZGV2LT5wb2xsID0gYW1zX2lkZXZfcG9sbDsKIAlhbXNfaW5mby5pZGV2LT5wb2xsX2ludGVydmFsID0gMjU7CkBAIC04NCwxNCArODQsMTggQEAKIAlzZXRfYml0KEVWX0tFWSwgaW5wdXQtPmV2Yml0KTsKIAlzZXRfYml0KEJUTl9UT1VDSCwgaW5wdXQtPmtleWJpdCk7CiAKLQlpZiAoaW5wdXRfcmVnaXN0ZXJfcG9sbGVkX2RldmljZShhbXNfaW5mby5pZGV2KSkgeworCWVycm9yID0gaW5wdXRfcmVnaXN0ZXJfcG9sbGVkX2RldmljZShhbXNfaW5mby5pZGV2KTsKKwlpZiAoZXJyb3IpIHsKIAkJaW5wdXRfZnJlZV9wb2xsZWRfZGV2aWNlKGFtc19pbmZvLmlkZXYpOwogCQlhbXNfaW5mby5pZGV2ID0gTlVMTDsKLQkJcmV0dXJuOworCQlyZXR1cm4gZXJyb3I7CiAJfQorCisJam95c3RpY2sgPSAxOworCisJcmV0dXJuIDA7CiB9CiAKLS8qIENhbGwgd2l0aCBhbXNfaW5mby5sb2NrIGhlbGQhICovCiBzdGF0aWMgdm9pZCBhbXNfaW5wdXRfZGlzYWJsZSh2b2lkKQogewogCWlmIChhbXNfaW5mby5pZGV2KSB7CkBAIC05OSw2ICsxMDMsOCBAQAogCQlpbnB1dF9mcmVlX3BvbGxlZF9kZXZpY2UoYW1zX2luZm8uaWRldik7CiAJCWFtc19pbmZvLmlkZXYgPSBOVUxMOwogCX0KKworCWpveXN0aWNrID0gMDsKIH0KIAogc3RhdGljIHNzaXplX3QgYW1zX2lucHV0X3Nob3dfam95c3RpY2soc3RydWN0IGRldmljZSAqZGV2LApAQCAtMTEwLDM5ICsxMTYsNDIgQEAKIHN0YXRpYyBzc2l6ZV90IGFtc19pbnB1dF9zdG9yZV9qb3lzdGljayhzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQogewotCWlmIChzc2NhbmYoYnVmLCAiJWRcbiIsICZqb3lzdGljaykgIT0gMSkKKwl1bnNpZ25lZCBsb25nIGVuYWJsZTsKKwlpbnQgZXJyb3IgPSAwOworCisJaWYgKHN0cmljdF9zdHJ0b3VsKGJ1ZiwgMCwgJmVuYWJsZSkgfHwgZW5hYmxlID4gMSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZhbXNfaW5mby5sb2NrKTsKKwltdXRleF9sb2NrKCZhbXNfaW5wdXRfbXV0ZXgpOwogCi0JaWYgKGpveXN0aWNrKQotCQlhbXNfaW5wdXRfZW5hYmxlKCk7Ci0JZWxzZQotCQlhbXNfaW5wdXRfZGlzYWJsZSgpOworCWlmIChlbmFibGUgIT0gam95c3RpY2spIHsKKwkJaWYgKGVuYWJsZSkKKwkJCWVycm9yID0gYW1zX2lucHV0X2VuYWJsZSgpOworCQllbHNlCisJCQlhbXNfaW5wdXRfZGlzYWJsZSgpOworCX0KIAotCW11dGV4X3VubG9jaygmYW1zX2luZm8ubG9jayk7CisJbXV0ZXhfdW5sb2NrKCZhbXNfaW5wdXRfbXV0ZXgpOwogCi0JcmV0dXJuIGNvdW50OworCXJldHVybiBlcnJvciA/IGVycm9yIDogY291bnQ7CiB9CiAKIHN0YXRpYyBERVZJQ0VfQVRUUihqb3lzdGljaywgU19JUlVHTyB8IFNfSVdVU1IsCiAJYW1zX2lucHV0X3Nob3dfam95c3RpY2ssIGFtc19pbnB1dF9zdG9yZV9qb3lzdGljayk7CiAKLS8qIENhbGwgd2l0aCBhbXNfaW5mby5sb2NrIGhlbGQhICovCiBpbnQgYW1zX2lucHV0X2luaXQodm9pZCkKIHsKLQlpbnQgcmVzdWx0OwotCi0JcmVzdWx0ID0gZGV2aWNlX2NyZWF0ZV9maWxlKCZhbXNfaW5mby5vZl9kZXYtPmRldiwgJmRldl9hdHRyX2pveXN0aWNrKTsKLQotCWlmICghcmVzdWx0ICYmIGpveXN0aWNrKQorCWlmIChqb3lzdGljaykKIAkJYW1zX2lucHV0X2VuYWJsZSgpOwotCXJldHVybiByZXN1bHQ7CisKKwlyZXR1cm4gZGV2aWNlX2NyZWF0ZV9maWxlKCZhbXNfaW5mby5vZl9kZXYtPmRldiwgJmRldl9hdHRyX2pveXN0aWNrKTsKIH0KIAotLyogQ2FsbCB3aXRoIGFtc19pbmZvLmxvY2sgaGVsZCEgKi8KIHZvaWQgYW1zX2lucHV0X2V4aXQodm9pZCkKIHsKLQlhbXNfaW5wdXRfZGlzYWJsZSgpOwogCWRldmljZV9yZW1vdmVfZmlsZSgmYW1zX2luZm8ub2ZfZGV2LT5kZXYsICZkZXZfYXR0cl9qb3lzdGljayk7CisKKwltdXRleF9sb2NrKCZhbXNfaW5wdXRfbXV0ZXgpOworCWFtc19pbnB1dF9kaXNhYmxlKCk7CisJbXV0ZXhfdW5sb2NrKCZhbXNfaW5wdXRfbXV0ZXgpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hbXMvYW1zLXBtdS5jIGIvZHJpdmVycy9od21vbi9hbXMvYW1zLXBtdS5jCmluZGV4IDk0NjNlOTcuLmZiMThiM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy1wbXUuYworKysgYi9kcml2ZXJzL2h3bW9uL2Ftcy9hbXMtcG11LmMKQEAgLTE0OSw4ICsxNDksNiBAQAogCWNvbnN0IHUzMiAqcHJvcDsKIAlpbnQgcmVzdWx0OwogCi0JbXV0ZXhfbG9jaygmYW1zX2luZm8ubG9jayk7Ci0KIAkvKiBTZXQgaW1wbGVtZW50YXRpb24gc3R1ZmYgKi8KIAlhbXNfaW5mby5vZl9ub2RlID0gbnA7CiAJYW1zX2luZm8uZXhpdCA9IGFtc19wbXVfZXhpdDsKQEAgLTE2MSwxMCArMTU5LDkgQEAKIAogCS8qIEdldCBQTVUgY29tbWFuZCwgc2hvdWxkIGJlIDB4NGUsIGJ1dCB3ZSBjYW4gbmV2ZXIga25vdyAqLwogCXByb3AgPSBvZl9nZXRfcHJvcGVydHkoYW1zX2luZm8ub2Zfbm9kZSwgInJlZyIsIE5VTEwpOwotCWlmICghcHJvcCkgewotCQlyZXN1bHQgPSAtRU5PREVWOwotCQlnb3RvIGV4aXQ7Ci0JfQorCWlmICghcHJvcCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlhbXNfcG11X2NtZCA9ICgoKnByb3ApID4+IDgpICYgMHhmZjsKIAogCS8qIERpc2FibGUgaW50ZXJydXB0cyAqLwpAQCAtMTc1LDcgKzE3Miw3IEBACiAKIAlyZXN1bHQgPSBhbXNfc2Vuc29yX2F0dGFjaCgpOwogCWlmIChyZXN1bHQgPCAwKQotCQlnb3RvIGV4aXQ7CisJCXJldHVybiByZXN1bHQ7CiAKIAkvKiBTZXQgZGVmYXVsdCB2YWx1ZXMgKi8KIAlhbXNfcG11X3NldF9yZWdpc3RlcihBTVNfRkZfTE9XX0xJTUlULCAweDE1KTsKQEAgLTE5OCwxMCArMTk1LDUgQEAKIAogCXByaW50ayhLRVJOX0lORk8gImFtczogRm91bmQgUE1VIGJhc2VkIG1vdGlvbiBzZW5zb3JcbiIpOwogCi0JcmVzdWx0ID0gMDsKLQotZXhpdDoKLQltdXRleF91bmxvY2soJmFtc19pbmZvLmxvY2spOwotCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYW1zL2Ftcy5oIGIvZHJpdmVycy9od21vbi9hbXMvYW1zLmgKaW5kZXggMjIxZWY2OS4uNWVkMzg3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hbXMvYW1zLmgKKysrIGIvZHJpdmVycy9od21vbi9hbXMvYW1zLmgKQEAgLTQ2LDkgKzQ2LDcgQEAKIAogI2lmZGVmIENPTkZJR19TRU5TT1JTX0FNU19JMkMKIAkvKiBJMkMgcHJvcGVydGllcyAqLwotCWludCBpMmNfYnVzOwotCWludCBpMmNfYWRkcmVzczsKLQlzdHJ1Y3QgaTJjX2NsaWVudCBpMmNfY2xpZW50OworCXN0cnVjdCBpMmNfY2xpZW50ICppMmNfY2xpZW50OwogI2VuZGlmCiAKIAkvKiBKb3lzdGljayBlbXVsYXRpb24gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vaWJtYWVtLmMgYi9kcml2ZXJzL2h3bW9uL2libWFlbS5jCmluZGV4IDBmNzBkYzIuLjdiMGVkNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaWJtYWVtLmMKKysrIGIvZHJpdmVycy9od21vbi9pYm1hZW0uYwpAQCAtMTExOCwzICsxMTE4LDEwIEBACiAKIG1vZHVsZV9pbml0KGFlbV9pbml0KTsKIG1vZHVsZV9leGl0KGFlbV9leGl0KTsKKworTU9EVUxFX0FMSUFTKCJkbWk6YnZuSUJNOio6cG5JQk1TeXN0ZW14MzM1MC0qIik7CitNT0RVTEVfQUxJQVMoImRtaTpidm5JQk06KjpwbklCTVN5c3RlbXgzNTUwLSoiKTsKK01PRFVMRV9BTElBUygiZG1pOmJ2bklCTToqOnBuSUJNU3lzdGVteDM2NTAtKiIpOworTU9EVUxFX0FMSUFTKCJkbWk6YnZuSUJNOio6cG5JQk1TeXN0ZW14MzY1NS0qIik7CitNT0RVTEVfQUxJQVMoImRtaTpidm5JQk06KjpwbklCTVN5c3RlbXgzNzU1LSoiKTsKK01PRFVMRV9BTElBUygiZG1pOmJ2bklCTToqOnBuSUJNMzg1ME0yL3gzOTUwTTItKiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9pYm1wZXguYyBiL2RyaXZlcnMvaHdtb24vaWJtcGV4LmMKaW5kZXggNGU5YjE5Yy4uNTM3ZDlmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9pYm1wZXguYworKysgYi9kcml2ZXJzL2h3bW9uL2libXBleC5jCkBAIC02MDgsMyArNjA4LDkgQEAKIAogbW9kdWxlX2luaXQoaWJtcGV4X2luaXQpOwogbW9kdWxlX2V4aXQoaWJtcGV4X2V4aXQpOworCitNT0RVTEVfQUxJQVMoImRtaTpidm5JQk06KjpwbklCTVN5c3RlbXgzMzUwLSoiKTsKK01PRFVMRV9BTElBUygiZG1pOmJ2bklCTToqOnBuSUJNU3lzdGVteDM1NTAtKiIpOworTU9EVUxFX0FMSUFTKCJkbWk6YnZuSUJNOio6cG5JQk1TeXN0ZW14MzY1MC0qIik7CitNT0RVTEVfQUxJQVMoImRtaTpidm5JQk06KjpwbklCTVN5c3RlbXgzNjU1LSoiKTsKK01PRFVMRV9BTElBUygiZG1pOmJ2bklCTToqOnBuSUJNU3lzdGVteDM3NTUtKiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9pdDg3LmMgYi9kcml2ZXJzL2h3bW9uL2l0ODcuYwppbmRleCBkNzkzY2MwLi5iNzRjOTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2l0ODcuYworKysgYi9kcml2ZXJzL2h3bW9uL2l0ODcuYwpAQCAtNDc3LDcgKzQ3Nyw3IEBACiAJaWYgKHJlZyAmICgxIDw8IG5yKSkKIAkJcmV0dXJuIHNwcmludGYoYnVmLCAiM1xuIik7ICAvKiB0aGVybWFsIGRpb2RlICovCiAJaWYgKHJlZyAmICg4IDw8IG5yKSkKLQkJcmV0dXJuIHNwcmludGYoYnVmLCAiMlxuIik7ICAvKiB0aGVybWlzdG9yICovCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjRcbiIpOyAgLyogdGhlcm1pc3RvciAqLwogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjBcbiIpOyAgICAgIC8qIGRpc2FibGVkICovCiB9CiBzdGF0aWMgc3NpemVfdCBzZXRfc2Vuc29yKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCkBAIC00OTMsMTAgKzQ5MywxNSBAQAogCiAJZGF0YS0+c2Vuc29yICY9IH4oMSA8PCBucik7CiAJZGF0YS0+c2Vuc29yICY9IH4oOCA8PCBucik7Ci0JLyogMyA9IHRoZXJtYWwgZGlvZGU7IDIgPSB0aGVybWlzdG9yOyAwID0gZGlzYWJsZWQgKi8KKwlpZiAodmFsID09IDIpIHsJLyogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KKwkJZGV2X3dhcm4oZGV2LCAiU2Vuc29yIHR5cGUgMiBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIDQgIgorCQkJICJpbnN0ZWFkXG4iKTsKKwkJdmFsID0gNDsKKwl9CisJLyogMyA9IHRoZXJtYWwgZGlvZGU7IDQgPSB0aGVybWlzdG9yOyAwID0gZGlzYWJsZWQgKi8KIAlpZiAodmFsID09IDMpCiAJICAgIGRhdGEtPnNlbnNvciB8PSAxIDw8IG5yOwotCWVsc2UgaWYgKHZhbCA9PSAyKQorCWVsc2UgaWYgKHZhbCA9PSA0KQogCSAgICBkYXRhLT5zZW5zb3IgfD0gOCA8PCBucjsKIAllbHNlIGlmICh2YWwgIT0gMCkgewogCQltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03OC5jIGIvZHJpdmVycy9od21vbi9sbTc4LmMKaW5kZXggZWQ3ODU5Zi4uYjVlM2IyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc4LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc4LmMKQEAgLTExNCwyNSArMTE0LDE2IEBACiAKICNkZWZpbmUgRElWX0ZST01fUkVHKHZhbCkgKDEgPDwgKHZhbCkpCiAKLS8qIFRoZXJlIGFyZSBzb21lIGNvbXBsaWNhdGlvbnMgaW4gYSBtb2R1bGUgbGlrZSB0aGlzLiBGaXJzdCBvZmYsIExNNzggY2hpcHMKLSAgIG1heSBiZSBib3RoIHByZXNlbnQgb24gdGhlIFNNQnVzIGFuZCB0aGUgSVNBIGJ1cywgYW5kIHdlIGhhdmUgdG8gaGFuZGxlCi0gICB0aG9zZSBjYXNlcyBzZXBhcmF0ZWx5IGF0IHNvbWUgcGxhY2VzLiBTZWNvbmQsIHRoZXJlIG1pZ2h0IGJlIHNldmVyYWwKLSAgIExNNzggY2hpcHMgYXZhaWxhYmxlICh3ZWxsLCBhY3R1YWxseSwgdGhhdCBpcyBwcm9iYWJseSBuZXZlciBkb25lOyBidXQKLSAgIGl0IGlzIGEgY2xlYW4gaWxsdXN0cmF0aW9uIG9mIGhvdyB0byBoYW5kbGUgYSBjYXNlIGxpa2UgdGhhdCkuIEZpbmFsbHksCi0gICBhIHNwZWNpZmljIGNoaXAgbWF5IGJlIGF0dGFjaGVkIHRvICpib3RoKiBJU0EgYW5kIFNNQnVzLCBhbmQgd2Ugd291bGQKLSAgIG5vdCBsaWtlIHRvIGRldGVjdCBpdCBkb3VibGUuIEZvcnR1bmF0ZWx5LCBpbiB0aGUgY2FzZSBvZiB0aGUgTE03OCBhdAotICAgbGVhc3QsIGEgcmVnaXN0ZXIgdGVsbHMgdXMgd2hhdCBTTUJ1cyBhZGRyZXNzIHdlIGFyZSBvbiwgc28gdGhhdCBoZWxwcwotICAgYSBiaXQgLSBleGNlcHQgaWYgdGhlcmUgY291bGQgYmUgbW9yZSB0aGFuIG9uZSBTTUJ1cy4gR3JvYW4uIE5vIHNvbHV0aW9uCi0gICBmb3IgdGhpcyB5ZXQuICovCi0KLS8qIEZvciBJU0EgY2hpcHMsIHdlIGFidXNlIHRoZSBpMmNfY2xpZW50IGFkZHIgYW5kIG5hbWUgZmllbGRzLiBXZSBhbHNvIHVzZQotICAgdGhlIGRyaXZlciBmaWVsZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gSTJDIGFuZCBJU0EgY2hpcHMuICovCiBzdHJ1Y3QgbG03OF9kYXRhIHsKLQlzdHJ1Y3QgaTJjX2NsaWVudCBjbGllbnQ7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXY7CiAJc3RydWN0IG11dGV4IGxvY2s7CiAJZW51bSBjaGlwcyB0eXBlOwogCisJLyogRm9yIElTQSBkZXZpY2Ugb25seSAqLworCWNvbnN0IGNoYXIgKm5hbWU7CisJaW50IGlzYV9hZGRyOworCiAJc3RydWN0IG11dGV4IHVwZGF0ZV9sb2NrOwogCWNoYXIgdmFsaWQ7CQkvKiAhPTAgaWYgZm9sbG93aW5nIGZpZWxkcyBhcmUgdmFsaWQgKi8KIAl1bnNpZ25lZCBsb25nIGxhc3RfdXBkYXRlZDsJLyogSW4gamlmZmllcyAqLwpAQCAtMTUxLDkgKzE0MiwxMSBAQAogfTsKIAogCi1zdGF0aWMgaW50IGxtNzhfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKLXN0YXRpYyBpbnQgbG03OF9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywgaW50IGtpbmQpOwotc3RhdGljIGludCBsbTc4X2RldGFjaF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7CitzdGF0aWMgaW50IGxtNzhfaTJjX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQga2luZCwKKwkJCSAgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbyk7CitzdGF0aWMgaW50IGxtNzhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQkgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCk7CitzdGF0aWMgaW50IGxtNzhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKIAogc3RhdGljIGludCBfX2RldmluaXQgbG03OF9pc2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CiBzdGF0aWMgaW50IF9fZGV2ZXhpdCBsbTc4X2lzYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CkBAIC0xNjQsMTIgKzE1NywyMyBAQAogc3RhdGljIHZvaWQgbG03OF9pbml0X2RldmljZShzdHJ1Y3QgbG03OF9kYXRhICpkYXRhKTsKIAogCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbG03OF9pMmNfaWRbXSA9IHsKKwl7ICJsbTc4IiwgbG03OCB9LAorCXsgImxtNzkiLCBsbTc5IH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGxtNzhfaTJjX2lkKTsKKwogc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGxtNzhfZHJpdmVyID0geworCS5jbGFzcwkJPSBJMkNfQ0xBU1NfSFdNT04sCiAJLmRyaXZlciA9IHsKIAkJLm5hbWUJPSAibG03OCIsCiAJfSwKLQkuYXR0YWNoX2FkYXB0ZXIJPSBsbTc4X2F0dGFjaF9hZGFwdGVyLAotCS5kZXRhY2hfY2xpZW50CT0gbG03OF9kZXRhY2hfY2xpZW50LAorCS5wcm9iZQkJPSBsbTc4X2kyY19wcm9iZSwKKwkucmVtb3ZlCQk9IGxtNzhfaTJjX3JlbW92ZSwKKwkuaWRfdGFibGUJPSBsbTc4X2kyY19pZCwKKwkuZGV0ZWN0CQk9IGxtNzhfaTJjX2RldGVjdCwKKwkuYWRkcmVzc19kYXRhCT0gJmFkZHJfZGF0YSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxtNzhfaXNhX2RyaXZlciA9IHsKQEAgLTQ1NCwxNyArNDU4LDYgQEAKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoZmFuM19hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMTEpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgNCk7CiAKLS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW46Ci0gICAgICogbG03OF9kcml2ZXIgaXMgaW5zZXJ0ZWQgKHdoZW4gdGhpcyBtb2R1bGUgaXMgbG9hZGVkKSwgZm9yIGVhY2gKLSAgICAgICBhdmFpbGFibGUgYWRhcHRlcgotICAgICAqIHdoZW4gYSBuZXcgYWRhcHRlciBpcyBpbnNlcnRlZCAoYW5kIGxtNzhfZHJpdmVyIGlzIHN0aWxsIHByZXNlbnQpICovCi1zdGF0aWMgaW50IGxtNzhfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQotewotCWlmICghKGFkYXB0ZXItPmNsYXNzICYgSTJDX0NMQVNTX0hXTU9OKSkKLQkJcmV0dXJuIDA7Ci0JcmV0dXJuIGkyY19wcm9iZShhZGFwdGVyLCAmYWRkcl9kYXRhLCBsbTc4X2RldGVjdCk7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpsbTc4X2F0dHJpYnV0ZXNbXSA9IHsKIAkmc2Vuc29yX2Rldl9hdHRyX2luMF9pbnB1dC5kZXZfYXR0ci5hdHRyLAogCSZzZW5zb3JfZGV2X2F0dHJfaW4wX21pbi5kZXZfYXR0ci5hdHRyLApAQCAtNTI3LDU0ICs1MjAsNzcgQEAKIHsKIAlzdHJ1Y3QgbG03OF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgZGF0YS0+Y2xpZW50Lm5hbWUpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBkYXRhLT5uYW1lKTsKIH0KIHN0YXRpYyBERVZJQ0VfQVRUUihuYW1lLCBTX0lSVUdPLCBzaG93X25hbWUsIE5VTEwpOwogCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBpMmNfcHJvYmUgKi8KLXN0YXRpYyBpbnQgbG03OF9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywgaW50IGtpbmQpCisvKiBSZXR1cm5zIDEgaWYgdGhlIEkyQyBjaGlwIGFwcGVhcnMgdG8gYmUgYW4gYWxpYXMgb2YgdGhlIElTQSBjaGlwICovCitzdGF0aWMgaW50IGxtNzhfYWxpYXNfZGV0ZWN0KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IGNoaXBpZCkKIHsKLQlpbnQgaSwgZXJyOwotCXN0cnVjdCBpMmNfY2xpZW50ICpuZXdfY2xpZW50OwotCXN0cnVjdCBsbTc4X2RhdGEgKmRhdGE7Ci0JY29uc3QgY2hhciAqY2xpZW50X25hbWUgPSAiIjsKKwlzdHJ1Y3QgbG03OF9kYXRhICppc2E7CisJaW50IGk7CiAKLQlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpIHsKLQkJZXJyID0gLUVOT0RFVjsKLQkJZ290byBFUlJPUjE7CisJaWYgKCFwZGV2KQkvKiBObyBJU0EgY2hpcCAqLworCQlyZXR1cm4gMDsKKwlpc2EgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmIChsbTc4X3JlYWRfdmFsdWUoaXNhLCBMTTc4X1JFR19JMkNfQUREUikgIT0gY2xpZW50LT5hZGRyKQorCQlyZXR1cm4gMDsJLyogQWRkcmVzcyBkb2Vzbid0IG1hdGNoICovCisJaWYgKChsbTc4X3JlYWRfdmFsdWUoaXNhLCBMTTc4X1JFR19DSElQSUQpICYgMHhmZSkgIT0gKGNoaXBpZCAmIDB4ZmUpKQorCQlyZXR1cm4gMDsJLyogQ2hpcCB0eXBlIGRvZXNuJ3QgbWF0Y2ggKi8KKworCS8qIFdlIGNvbXBhcmUgYWxsIHRoZSBsaW1pdCByZWdpc3RlcnMsIHRoZSBjb25maWcgcmVnaXN0ZXIgYW5kIHRoZQorCSAqIGludGVycnVwdCBtYXNrIHJlZ2lzdGVycyAqLworCWZvciAoaSA9IDB4MmI7IGkgPD0gMHgzZDsgaSsrKSB7CisJCWlmIChsbTc4X3JlYWRfdmFsdWUoaXNhLCBpKSAhPQorCQkgICAgaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgaSkpCisJCQlyZXR1cm4gMDsKKwl9CisJaWYgKGxtNzhfcmVhZF92YWx1ZShpc2EsIExNNzhfUkVHX0NPTkZJRykgIT0KKwkgICAgaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgTE03OF9SRUdfQ09ORklHKSkKKwkJcmV0dXJuIDA7CisJZm9yIChpID0gMHg0MzsgaSA8PSAweDQ2OyBpKyspIHsKKwkJaWYgKGxtNzhfcmVhZF92YWx1ZShpc2EsIGkpICE9CisJCSAgICBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBpKSkKKwkJCXJldHVybiAwOwogCX0KIAotCS8qIE9LLiBGb3Igbm93LCB3ZSBwcmVzdW1lIHdlIGhhdmUgYSB2YWxpZCBjbGllbnQuIFdlIG5vdyBjcmVhdGUgdGhlCi0JICAgY2xpZW50IHN0cnVjdHVyZSwgZXZlbiB0aG91Z2ggd2UgY2Fubm90IGZpbGwgaXQgY29tcGxldGVseSB5ZXQuCi0JICAgQnV0IGl0IGFsbG93cyB1cyB0byBhY2Nlc3MgbG03OF97cmVhZCx3cml0ZX1fdmFsdWUuICovCisJcmV0dXJuIDE7Cit9CiAKLQlpZiAoIShkYXRhID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGxtNzhfZGF0YSksIEdGUF9LRVJORUwpKSkgewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIEVSUk9SMTsKLQl9CitzdGF0aWMgaW50IGxtNzhfaTJjX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQga2luZCwKKwkJCSAgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbykKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgbG03OF9kYXRhICppc2EgPSBwZGV2ID8gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldikgOiBOVUxMOworCWNvbnN0IGNoYXIgKmNsaWVudF9uYW1lOworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IGNsaWVudC0+YWRhcHRlcjsKKwlpbnQgYWRkcmVzcyA9IGNsaWVudC0+YWRkcjsKIAotCW5ld19jbGllbnQgPSAmZGF0YS0+Y2xpZW50OwotCWkyY19zZXRfY2xpZW50ZGF0YShuZXdfY2xpZW50LCBkYXRhKTsKLQluZXdfY2xpZW50LT5hZGRyID0gYWRkcmVzczsKLQluZXdfY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKLQluZXdfY2xpZW50LT5kcml2ZXIgPSAmbG03OF9kcml2ZXI7CisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQorCQlyZXR1cm4gLUVOT0RFVjsKIAotCS8qIE5vdywgd2UgZG8gdGhlIHJlbWFpbmluZyBkZXRlY3Rpb24uICovCisJLyogV2UgYmxvY2sgdXBkYXRlcyBvZiB0aGUgSVNBIGRldmljZSB0byBtaW5pbWl6ZSB0aGUgcmlzayBvZgorCSAgIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBzYW1lIExNNzggY2hpcCB0aHJvdWdoIGRpZmZlcmVudAorCSAgIGludGVyZmFjZXMuICovCisJaWYgKGlzYSkKKwkJbXV0ZXhfbG9jaygmaXNhLT51cGRhdGVfbG9jayk7CisKIAlpZiAoa2luZCA8IDApIHsKLQkJaWYgKGxtNzhfcmVhZF92YWx1ZShkYXRhLCBMTTc4X1JFR19DT05GSUcpICYgMHg4MCkgewotCQkJZXJyID0gLUVOT0RFVjsKLQkJCWdvdG8gRVJST1IyOwotCQl9Ci0JCWlmIChsbTc4X3JlYWRfdmFsdWUoZGF0YSwgTE03OF9SRUdfSTJDX0FERFIpICE9Ci0JCSAgICBhZGRyZXNzKSB7Ci0JCQllcnIgPSAtRU5PREVWOwotCQkJZ290byBFUlJPUjI7Ci0JCX0KKwkJaWYgKChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBMTTc4X1JFR19DT05GSUcpICYgMHg4MCkKKwkJIHx8IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIExNNzhfUkVHX0kyQ19BRERSKQorCQkgICAgIT0gYWRkcmVzcykKKwkJCWdvdG8gZXJyX25vZGV2OworCisJCS8qIEV4cGxpY2l0bHkgcHJldmVudCB0aGUgbWlzZGV0ZWN0aW9uIG9mIFdpbmJvbmQgY2hpcHMgKi8KKwkJaSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIDB4NGYpOworCQlpZiAoaSA9PSAweGEzIHx8IGkgPT0gMHg1YykKKwkJCWdvdG8gZXJyX25vZGV2OwogCX0KIAogCS8qIERldGVybWluZSB0aGUgY2hpcCB0eXBlLiAqLwogCWlmIChraW5kIDw9IDApIHsKLQkJaSA9IGxtNzhfcmVhZF92YWx1ZShkYXRhLCBMTTc4X1JFR19DSElQSUQpOworCQlpID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgTE03OF9SRUdfQ0hJUElEKTsKIAkJaWYgKGkgPT0gMHgwMCB8fCBpID09IDB4MjAJLyogTE03OCAqLwogCQkgfHwgaSA9PSAweDQwKQkJCS8qIExNNzgtSiAqLwogCQkJa2luZCA9IGxtNzg7CkBAIC01ODYsMzMgKzYwMiw1OSBAQAogCQkJCQkicGFyYW1ldGVyIGZvciB1bmtub3duIGNoaXAgYXQgIgogCQkJCQkiYWRhcHRlciAlZCwgYWRkcmVzcyAweCUwMnhcbiIsCiAJCQkJCWkyY19hZGFwdGVyX2lkKGFkYXB0ZXIpLCBhZGRyZXNzKTsKLQkJCWVyciA9IC1FTk9ERVY7Ci0JCQlnb3RvIEVSUk9SMjsKKwkJCWdvdG8gZXJyX25vZGV2OworCQl9CisKKwkJaWYgKGxtNzhfYWxpYXNfZGV0ZWN0KGNsaWVudCwgaSkpIHsKKwkJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgIkRldmljZSBhdCAweCUwMnggYXBwZWFycyB0byAiCisJCQkJImJlIHRoZSBzYW1lIGFzIElTQSBkZXZpY2VcbiIsIGFkZHJlc3MpOworCQkJZ290byBlcnJfbm9kZXY7CiAJCX0KIAl9CiAKLQlpZiAoa2luZCA9PSBsbTc4KSB7Ci0JCWNsaWVudF9uYW1lID0gImxtNzgiOwotCX0gZWxzZSBpZiAoa2luZCA9PSBsbTc5KSB7CisJaWYgKGlzYSkKKwkJbXV0ZXhfdW5sb2NrKCZpc2EtPnVwZGF0ZV9sb2NrKTsKKworCXN3aXRjaCAoa2luZCkgeworCWNhc2UgbG03OToKIAkJY2xpZW50X25hbWUgPSAibG03OSI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWNsaWVudF9uYW1lID0gImxtNzgiOwogCX0KKwlzdHJsY3B5KGluZm8tPnR5cGUsIGNsaWVudF9uYW1lLCBJMkNfTkFNRV9TSVpFKTsKIAotCS8qIEZpbGwgaW4gdGhlIHJlbWFpbmluZyBjbGllbnQgZmllbGRzIGFuZCBwdXQgaW50byB0aGUgZ2xvYmFsIGxpc3QgKi8KLQlzdHJsY3B5KG5ld19jbGllbnQtPm5hbWUsIGNsaWVudF9uYW1lLCBJMkNfTkFNRV9TSVpFKTsKLQlkYXRhLT50eXBlID0ga2luZDsKKwlyZXR1cm4gMDsKIAotCS8qIFRlbGwgdGhlIEkyQyBsYXllciBhIG5ldyBjbGllbnQgaGFzIGFycml2ZWQgKi8KLQlpZiAoKGVyciA9IGkyY19hdHRhY2hfY2xpZW50KG5ld19jbGllbnQpKSkKLQkJZ290byBFUlJPUjI7CisgZXJyX25vZGV2OgorCWlmIChpc2EpCisJCW11dGV4X3VubG9jaygmaXNhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyBpbnQgbG03OF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCSAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBsbTc4X2RhdGEgKmRhdGE7CisJaW50IGVycjsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbG03OF9kYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYXRhKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpOworCWRhdGEtPmNsaWVudCA9IGNsaWVudDsKKwlkYXRhLT50eXBlID0gaWQtPmRyaXZlcl9kYXRhOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgTE03OCBjaGlwICovCiAJbG03OF9pbml0X2RldmljZShkYXRhKTsKIAogCS8qIFJlZ2lzdGVyIHN5c2ZzIGhvb2tzICovCi0JaWYgKChlcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJm5ld19jbGllbnQtPmRldi5rb2JqLCAmbG03OF9ncm91cCkpKQorCWVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmxtNzhfZ3JvdXApOworCWlmIChlcnIpCiAJCWdvdG8gRVJST1IzOwogCi0JZGF0YS0+aHdtb25fZGV2ID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyKCZuZXdfY2xpZW50LT5kZXYpOworCWRhdGEtPmh3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3RlcigmY2xpZW50LT5kZXYpOwogCWlmIChJU19FUlIoZGF0YS0+aHdtb25fZGV2KSkgewogCQllcnIgPSBQVFJfRVJSKGRhdGEtPmh3bW9uX2Rldik7CiAJCWdvdG8gRVJST1I0OwpAQCAtNjIxLDI2ICs2NjMsMTggQEAKIAlyZXR1cm4gMDsKIAogRVJST1I0OgotCXN5c2ZzX3JlbW92ZV9ncm91cCgmbmV3X2NsaWVudC0+ZGV2LmtvYmosICZsbTc4X2dyb3VwKTsKKwlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTc4X2dyb3VwKTsKIEVSUk9SMzoKLQlpMmNfZGV0YWNoX2NsaWVudChuZXdfY2xpZW50KTsKLUVSUk9SMjoKIAlrZnJlZShkYXRhKTsKLUVSUk9SMToKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGxtNzhfZGV0YWNoX2NsaWVudChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIGludCBsbTc4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAlzdHJ1Y3QgbG03OF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Ci0JaW50IGVycjsKIAogCWh3bW9uX2RldmljZV91bnJlZ2lzdGVyKGRhdGEtPmh3bW9uX2Rldik7CiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmbG03OF9ncm91cCk7Ci0KLQlpZiAoKGVyciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCkpKQotCQlyZXR1cm4gZXJyOwotCiAJa2ZyZWUoZGF0YSk7CiAKIAlyZXR1cm4gMDsKQEAgLTY1MSwxMSArNjg1LDEwIEBACiAJaW50IGVycjsKIAlzdHJ1Y3QgbG03OF9kYXRhICpkYXRhOwogCXN0cnVjdCByZXNvdXJjZSAqcmVzOwotCWNvbnN0IGNoYXIgKm5hbWU7CiAKIAkvKiBSZXNlcnZlIHRoZSBJU0EgcmVnaW9uICovCiAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSU8sIDApOwotCWlmICghcmVxdWVzdF9yZWdpb24ocmVzLT5zdGFydCwgTE03OF9FWFRFTlQsICJsbTc4IikpIHsKKwlpZiAoIXJlcXVlc3RfcmVnaW9uKHJlcy0+c3RhcnQgKyBMTTc4X0FERFJfUkVHX09GRlNFVCwgMiwgImxtNzgiKSkgewogCQllcnIgPSAtRUJVU1k7CiAJCWdvdG8gZXhpdDsKIAl9CkBAIC02NjUsMTggKzY5OCwxNiBAQAogCQlnb3RvIGV4aXRfcmVsZWFzZV9yZWdpb247CiAJfQogCW11dGV4X2luaXQoJmRhdGEtPmxvY2spOwotCWRhdGEtPmNsaWVudC5hZGRyID0gcmVzLT5zdGFydDsKLQlpMmNfc2V0X2NsaWVudGRhdGEoJmRhdGEtPmNsaWVudCwgZGF0YSk7CisJZGF0YS0+aXNhX2FkZHIgPSByZXMtPnN0YXJ0OwogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRhdGEpOwogCiAJaWYgKGxtNzhfcmVhZF92YWx1ZShkYXRhLCBMTTc4X1JFR19DSElQSUQpICYgMHg4MCkgewogCQlkYXRhLT50eXBlID0gbG03OTsKLQkJbmFtZSA9ICJsbTc5IjsKKwkJZGF0YS0+bmFtZSA9ICJsbTc5IjsKIAl9IGVsc2UgewogCQlkYXRhLT50eXBlID0gbG03ODsKLQkJbmFtZSA9ICJsbTc4IjsKKwkJZGF0YS0+bmFtZSA9ICJsbTc4IjsKIAl9Ci0Jc3RybGNweShkYXRhLT5jbGllbnQubmFtZSwgbmFtZSwgSTJDX05BTUVfU0laRSk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBMTTc4IGNoaXAgKi8KIAlsbTc4X2luaXRfZGV2aWNlKGRhdGEpOwpAQCAtNjk5LDcgKzczMCw3IEBACiAJZGV2aWNlX3JlbW92ZV9maWxlKCZwZGV2LT5kZXYsICZkZXZfYXR0cl9uYW1lKTsKIAlrZnJlZShkYXRhKTsKICBleGl0X3JlbGVhc2VfcmVnaW9uOgotCXJlbGVhc2VfcmVnaW9uKHJlcy0+c3RhcnQsIExNNzhfRVhURU5UKTsKKwlyZWxlYXNlX3JlZ2lvbihyZXMtPnN0YXJ0ICsgTE03OF9BRERSX1JFR19PRkZTRVQsIDIpOwogIGV4aXQ6CiAJcmV0dXJuIGVycjsKIH0KQEAgLTcwNywxMyArNzM4LDE2IEBACiBzdGF0aWMgaW50IF9fZGV2ZXhpdCBsbTc4X2lzYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgbG03OF9kYXRhICpkYXRhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IHJlc291cmNlICpyZXM7CiAKIAlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5od21vbl9kZXYpOwogCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZsbTc4X2dyb3VwKTsKIAlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX25hbWUpOwotCXJlbGVhc2VfcmVnaW9uKGRhdGEtPmNsaWVudC5hZGRyLCBMTTc4X0VYVEVOVCk7CiAJa2ZyZWUoZGF0YSk7CiAKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9JTywgMCk7CisJcmVsZWFzZV9yZWdpb24ocmVzLT5zdGFydCArIExNNzhfQUREUl9SRUdfT0ZGU0VULCAyKTsKKwogCXJldHVybiAwOwogfQogCkBAIC03MjQsMTMgKzc1OCwxMyBAQAogICAgd291bGQgc2xvdyBkb3duIHRoZSBMTTc4IGFjY2VzcyBhbmQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuICAqLwogc3RhdGljIGludCBsbTc4X3JlYWRfdmFsdWUoc3RydWN0IGxtNzhfZGF0YSAqZGF0YSwgdTggcmVnKQogewotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSAmZGF0YS0+Y2xpZW50OworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7CiAKLQlpZiAoIWNsaWVudC0+ZHJpdmVyKSB7IC8qIElTQSBkZXZpY2UgKi8KKwlpZiAoIWNsaWVudCkgeyAvKiBJU0EgZGV2aWNlICovCiAJCWludCByZXM7CiAJCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOwotCQlvdXRiX3AocmVnLCBjbGllbnQtPmFkZHIgKyBMTTc4X0FERFJfUkVHX09GRlNFVCk7Ci0JCXJlcyA9IGluYl9wKGNsaWVudC0+YWRkciArIExNNzhfREFUQV9SRUdfT0ZGU0VUKTsKKwkJb3V0Yl9wKHJlZywgZGF0YS0+aXNhX2FkZHIgKyBMTTc4X0FERFJfUkVHX09GRlNFVCk7CisJCXJlcyA9IGluYl9wKGRhdGEtPmlzYV9hZGRyICsgTE03OF9EQVRBX1JFR19PRkZTRVQpOwogCQltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOwogCQlyZXR1cm4gcmVzOwogCX0gZWxzZQpAQCAtNzQ2LDEyICs3ODAsMTIgQEAKICAgIG5vd2hlcmUgZWxzZSBiZSBuZWNlc3NhcnkhICovCiBzdGF0aWMgaW50IGxtNzhfd3JpdGVfdmFsdWUoc3RydWN0IGxtNzhfZGF0YSAqZGF0YSwgdTggcmVnLCB1OCB2YWx1ZSkKIHsKLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gJmRhdGEtPmNsaWVudDsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gZGF0YS0+Y2xpZW50OwogCi0JaWYgKCFjbGllbnQtPmRyaXZlcikgeyAvKiBJU0EgZGV2aWNlICovCisJaWYgKCFjbGllbnQpIHsgLyogSVNBIGRldmljZSAqLwogCQltdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKLQkJb3V0Yl9wKHJlZywgY2xpZW50LT5hZGRyICsgTE03OF9BRERSX1JFR19PRkZTRVQpOwotCQlvdXRiX3AodmFsdWUsIGNsaWVudC0+YWRkciArIExNNzhfREFUQV9SRUdfT0ZGU0VUKTsKKwkJb3V0Yl9wKHJlZywgZGF0YS0+aXNhX2FkZHIgKyBMTTc4X0FERFJfUkVHX09GRlNFVCk7CisJCW91dGJfcCh2YWx1ZSwgZGF0YS0+aXNhX2FkZHIgKyBMTTc4X0RBVEFfUkVHX09GRlNFVCk7CiAJCW11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CiAJCXJldHVybiAwOwogCX0gZWxzZQpAQCAtODM3LDggKzg3MSwxNyBAQAogewogCWludCB2YWwsIHNhdmUsIGZvdW5kID0gMDsKIAotCWlmICghcmVxdWVzdF9yZWdpb24oYWRkcmVzcywgTE03OF9FWFRFTlQsICJsbTc4IikpCisJLyogV2UgaGF2ZSB0byByZXF1ZXN0IHRoZSByZWdpb24gaW4gdHdvIHBhcnRzIGJlY2F1c2Ugc29tZQorCSAgIGJvYXJkcyBkZWNsYXJlIGJhc2UrNCB0byBiYXNlKzcgYXMgYSBQTlAgZGV2aWNlICovCisJaWYgKCFyZXF1ZXN0X3JlZ2lvbihhZGRyZXNzLCA0LCAibG03OCIpKSB7CisJCXByX2RlYnVnKCJsbTc4OiBGYWlsZWQgdG8gcmVxdWVzdCBsb3cgcGFydCBvZiByZWdpb25cbiIpOwogCQlyZXR1cm4gMDsKKwl9CisJaWYgKCFyZXF1ZXN0X3JlZ2lvbihhZGRyZXNzICsgNCwgNCwgImxtNzgiKSkgeworCQlwcl9kZWJ1ZygibG03ODogRmFpbGVkIHRvIHJlcXVlc3QgaGlnaCBwYXJ0IG9mIHJlZ2lvblxuIik7CisJCXJlbGVhc2VfcmVnaW9uKGFkZHJlc3MsIDQpOworCQlyZXR1cm4gMDsKKwl9CiAKICNkZWZpbmUgUkVBTExZX1NMT1dfSU8KIAkvKiBXZSBuZWVkIHRoZSB0aW1lb3V0cyBmb3IgYXQgbGVhc3Qgc29tZSBMTTc4LWxpa2UKQEAgLTkwMSw3ICs5NDQsOCBAQAogCQkJdmFsICYgMHg4MCA/ICJMTTc5IiA6ICJMTTc4IiwgKGludClhZGRyZXNzKTsKIAogIHJlbGVhc2U6Ci0JcmVsZWFzZV9yZWdpb24oYWRkcmVzcywgTE03OF9FWFRFTlQpOworCXJlbGVhc2VfcmVnaW9uKGFkZHJlc3MgKyA0LCA0KTsKKwlyZWxlYXNlX3JlZ2lvbihhZGRyZXNzLCA0KTsKIAlyZXR1cm4gZm91bmQ7CiB9CiAKQEAgLTk0OSwxNCArOTkzLDEyIEBACiB7CiAJaW50IHJlczsKIAotCXJlcyA9IGkyY19hZGRfZHJpdmVyKCZsbTc4X2RyaXZlcik7Ci0JaWYgKHJlcykKLQkJZ290byBleGl0OwotCisJLyogV2UgcmVnaXN0ZXIgdGhlIElTQSBkZXZpY2UgZmlyc3QsIHNvIHRoYXQgd2UgY2FuIHNraXAgdGhlCisJICogcmVnaXN0cmF0aW9uIG9mIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlIHNhbWUgZGV2aWNlLiAqLwogCWlmIChsbTc4X2lzYV9mb3VuZChpc2FfYWRkcmVzcykpIHsKIAkJcmVzID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZsbTc4X2lzYV9kcml2ZXIpOwogCQlpZiAocmVzKQotCQkJZ290byBleGl0X3VucmVnX2kyY19kcml2ZXI7CisJCQlnb3RvIGV4aXQ7CiAKIAkJLyogU2V0cyBnbG9iYWwgcGRldiBhcyBhIHNpZGUgZWZmZWN0ICovCiAJCXJlcyA9IGxtNzhfaXNhX2RldmljZV9hZGQoaXNhX2FkZHJlc3MpOwpAQCAtOTY0LDEyICsxMDA2LDE2IEBACiAJCQlnb3RvIGV4aXRfdW5yZWdfaXNhX2RyaXZlcjsKIAl9CiAKKwlyZXMgPSBpMmNfYWRkX2RyaXZlcigmbG03OF9kcml2ZXIpOworCWlmIChyZXMpCisJCWdvdG8gZXhpdF91bnJlZ19pc2FfZGV2aWNlOworCiAJcmV0dXJuIDA7CiAKKyBleGl0X3VucmVnX2lzYV9kZXZpY2U6CisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIocGRldik7CiAgZXhpdF91bnJlZ19pc2FfZHJpdmVyOgogCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZsbTc4X2lzYV9kcml2ZXIpOwotIGV4aXRfdW5yZWdfaTJjX2RyaXZlcjoKLQlpMmNfZGVsX2RyaXZlcigmbG03OF9kcml2ZXIpOwogIGV4aXQ6CiAJcmV0dXJuIHJlczsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21vbi9sbTg1LmMKaW5kZXggMTJkNDQ2Zi4uM2ZmMDI4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTUsNiArNSw3IEBACiAgICAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzICBQaGlsaXAgUG9rb3JueSA8cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+CiAgICAgQ29weXJpZ2h0IChjKSAyMDAzICAgICAgICBNYXJnaXQgU2NodWJlcnQtV2hpbGUgPG1hcmdpdHN3QHQtb25saW5lLmRlPgogICAgIENvcHlyaWdodCAoYykgMjAwNCAgICAgICAgSnVzdGluIFRoaWVzc2VuIDxqdGhpZXNzZW5AcGVuZ3VpbmNvbXB1dGluZy5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4ICBKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4KIAogICAgIENoaXAgZGV0YWlscyBhdAkgICAgICA8aHR0cDovL3d3dy5uYXRpb25hbC5jb20vZHMvTE0vTE04NS5wZGY+CiAKQEAgLTE3Myw0MCArMTc0LDM5IEBACiB7CiAJaW50IGk7CiAKLQlpZiAocmFuZ2UgPj0gbG04NV9yYW5nZV9tYXBbMTVdKQotCQlyZXR1cm4gMTU7Ci0KIAkvKiBGaW5kIHRoZSBjbG9zZXN0IG1hdGNoICovCi0JZm9yIChpID0gMTQ7IGkgPj0gMDsgLS1pKSB7Ci0JCWlmIChyYW5nZSA+PSBsbTg1X3JhbmdlX21hcFtpXSkgewotCQkJaWYgKChsbTg1X3JhbmdlX21hcFtpICsgMV0gLSByYW5nZSkgPAotCQkJCQkocmFuZ2UgLSBsbTg1X3JhbmdlX21hcFtpXSkpCi0JCQkJcmV0dXJuIGkgKyAxOwotCQkJcmV0dXJuIGk7Ci0JCX0KKwlmb3IgKGkgPSAwOyBpIDwgMTU7ICsraSkgeworCQlpZiAocmFuZ2UgPD0gKGxtODVfcmFuZ2VfbWFwW2ldICsgbG04NV9yYW5nZV9tYXBbaSArIDFdKSAvIDIpCisJCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gaTsKIH0KICNkZWZpbmUgUkFOR0VfRlJPTV9SRUcodmFsKQlsbTg1X3JhbmdlX21hcFsodmFsKSAmIDB4MGZdCiAKIC8qIFRoZXNlIGFyZSB0aGUgUFdNIGZyZXF1ZW5jeSBlbmNvZGluZ3MgKi8KLXN0YXRpYyBjb25zdCBpbnQgbG04NV9mcmVxX21hcFtdID0geyAvKiAuMSBIeiAqLwotCTEwMCwgMTUwLCAyMzAsIDMwMCwgMzgwLCA0NzAsIDYyMCwgOTQwCitzdGF0aWMgY29uc3QgaW50IGxtODVfZnJlcV9tYXBbOF0gPSB7IC8qIDEgSHogKi8KKwkxMCwgMTUsIDIzLCAzMCwgMzgsIDQ3LCA2MSwgOTQKK307CitzdGF0aWMgY29uc3QgaW50IGFkbTEwMjdfZnJlcV9tYXBbOF0gPSB7IC8qIDEgSHogKi8KKwkxMSwgMTUsIDIyLCAyOSwgMzUsIDQ0LCA1OSwgODgKIH07CiAKLXN0YXRpYyBpbnQgRlJFUV9UT19SRUcoaW50IGZyZXEpCitzdGF0aWMgaW50IEZSRVFfVE9fUkVHKGNvbnN0IGludCAqbWFwLCBpbnQgZnJlcSkKIHsKIAlpbnQgaTsKIAotCWlmIChmcmVxID49IGxtODVfZnJlcV9tYXBbN10pCi0JCXJldHVybiA3OworCS8qIEZpbmQgdGhlIGNsb3Nlc3QgbWF0Y2ggKi8KIAlmb3IgKGkgPSAwOyBpIDwgNzsgKytpKQotCQlpZiAoZnJlcSA8PSBsbTg1X2ZyZXFfbWFwW2ldKQorCQlpZiAoZnJlcSA8PSAobWFwW2ldICsgbWFwW2kgKyAxXSkgLyAyKQogCQkJYnJlYWs7CiAJcmV0dXJuIGk7CiB9Ci0jZGVmaW5lIEZSRVFfRlJPTV9SRUcodmFsKQlsbTg1X2ZyZXFfbWFwWyh2YWwpICYgMHgwN10KKworc3RhdGljIGludCBGUkVRX0ZST01fUkVHKGNvbnN0IGludCAqbWFwLCB1OCByZWcpCit7CisJcmV0dXJuIG1hcFtyZWcgJiAweDA3XTsKK30KIAogLyogU2luY2Ugd2UgY2FuJ3QgdXNlIHN0cmluZ3MsIEknbSBhYnVzaW5nIHRoZXNlIG51bWJlcnMKICAqICAgdG8gc3RhbmQgaW4gZm9yIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6CkBAIC0yNzUsNyArMjc1LDYgQEAKIAogc3RydWN0IGxtODVfYXV0b2ZhbiB7CiAJdTggY29uZmlnOwkvKiBSZWdpc3RlciB2YWx1ZSAqLwotCXU4IGZyZXE7CS8qIFBXTSBmcmVxdWVuY3ksIGVuY29kZWQgKi8KIAl1OCBtaW5fcHdtOwkvKiBNaW5pbXVtIFBXTSB2YWx1ZSwgZW5jb2RlZCAqLwogCXU4IG1pbl9vZmY7CS8qIE1pbiBQV00gb3IgT0ZGIGJlbG93ICJsaW1pdCIsIGZsYWcgKi8KIH07CkBAIC0yODMsOCArMjgyLDggQEAKIC8qIEZvciBlYWNoIHJlZ2lzdGVyZWQgY2hpcCwgd2UgbmVlZCB0byBrZWVwIHNvbWUgZGF0YSBpbiBtZW1vcnkuCiAgICBUaGUgc3RydWN0dXJlIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gKi8KIHN0cnVjdCBsbTg1X2RhdGEgewotCXN0cnVjdCBpMmNfY2xpZW50IGNsaWVudDsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXY7CisJY29uc3QgaW50ICpmcmVxX21hcDsKIAllbnVtIGNoaXBzIHR5cGU7CiAKIAlzdHJ1Y3QgbXV0ZXggdXBkYXRlX2xvY2s7CkBAIC0zMDEsNiArMzAwLDcgQEAKIAl1MTYgZmFuWzRdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KIAl1MTYgZmFuX21pbls0XTsJCS8qIFJlZ2lzdGVyIHZhbHVlICovCiAJdTggcHdtWzNdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBwd21fZnJlcVszXTsJCS8qIFJlZ2lzdGVyIGVuY29kaW5nICovCiAJdTggdGVtcF9leHRbM107CQkvKiBEZWNvZGVkIHZhbHVlcyAqLwogCXU4IGluX2V4dFs4XTsJCS8qIERlY29kZWQgdmFsdWVzICovCiAJdTggdmlkOwkJCS8qIFJlZ2lzdGVyIHZhbHVlICovCkBAIC0zMTAsMjIgKzMxMCw0MCBAQAogCXN0cnVjdCBsbTg1X3pvbmUgem9uZVszXTsKIH07CiAKLXN0YXRpYyBpbnQgbG04NV9hdHRhY2hfYWRhcHRlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwotc3RhdGljIGludCBsbTg1X2RldGVjdChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBhZGRyZXNzLAotCQkJaW50IGtpbmQpOwotc3RhdGljIGludCBsbTg1X2RldGFjaF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7CitzdGF0aWMgaW50IGxtODVfZGV0ZWN0KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCBraW5kLAorCQkgICAgICAgc3RydWN0IGkyY19ib2FyZF9pbmZvICppbmZvKTsKK3N0YXRpYyBpbnQgbG04NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpOworc3RhdGljIGludCBsbTg1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKIAogc3RhdGljIGludCBsbTg1X3JlYWRfdmFsdWUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnKTsKIHN0YXRpYyB2b2lkIGxtODVfd3JpdGVfdmFsdWUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCBpbnQgdmFsdWUpOwogc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogCiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBsbTg1X2lkW10gPSB7CisJeyAiYWRtMTAyNyIsIGFkbTEwMjcgfSwKKwl7ICJhZHQ3NDYzIiwgYWR0NzQ2MyB9LAorCXsgImxtODUiLCBhbnlfY2hpcCB9LAorCXsgImxtODViIiwgbG04NWIgfSwKKwl7ICJsbTg1YyIsIGxtODVjIH0sCisJeyAiZW1jNmQxMDAiLCBlbWM2ZDEwMCB9LAorCXsgImVtYzZkMTAxIiwgZW1jNmQxMDAgfSwKKwl7ICJlbWM2ZDEwMiIsIGVtYzZkMTAyIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGxtODVfaWQpOworCiBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG04NV9kcml2ZXIgPSB7CisJLmNsYXNzCQk9IEkyQ19DTEFTU19IV01PTiwKIAkuZHJpdmVyID0gewogCQkubmFtZSAgID0gImxtODUiLAogCX0sCi0JLmF0dGFjaF9hZGFwdGVyID0gbG04NV9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCAgPSBsbTg1X2RldGFjaF9jbGllbnQsCisJLnByb2JlCQk9IGxtODVfcHJvYmUsCisJLnJlbW92ZQkJPSBsbTg1X3JlbW92ZSwKKwkuaWRfdGFibGUJPSBsbTg1X2lkLAorCS5kZXRlY3QJCT0gbG04NV9kZXRlY3QsCisJLmFkZHJlc3NfZGF0YQk9ICZhZGRyX2RhdGEsCiB9OwogCiAKQEAgLTUyOCwxMSArNTQ2LDM5IEBACiAJcmV0dXJuIGNvdW50OwogfQogCitzdGF0aWMgc3NpemVfdCBzaG93X3B3bV9mcmVxKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlpbnQgbnIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0ciktPmluZGV4OworCXN0cnVjdCBsbTg1X2RhdGEgKmRhdGEgPSBsbTg1X3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgRlJFUV9GUk9NX1JFRyhkYXRhLT5mcmVxX21hcCwKKwkJCQkJCSAgZGF0YS0+cHdtX2ZyZXFbbnJdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNldF9wd21fZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpbnQgbnIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0ciktPmluZGV4OworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IGxtODVfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWxvbmcgdmFsID0gc2ltcGxlX3N0cnRvbChidWYsIE5VTEwsIDEwKTsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT5wd21fZnJlcVtucl0gPSBGUkVRX1RPX1JFRyhkYXRhLT5mcmVxX21hcCwgdmFsKTsKKwlsbTg1X3dyaXRlX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQUZBTl9SQU5HRShuciksCisJCShkYXRhLT56b25lW25yXS5yYW5nZSA8PCA0KQorCQl8IGRhdGEtPnB3bV9mcmVxW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIGNvdW50OworfQorCiAjZGVmaW5lIHNob3dfcHdtX3JlZyhvZmZzZXQpCQkJCQkJXAogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20jI29mZnNldCwgU19JUlVHTyB8IFNfSVdVU1IsCQlcCiAJCXNob3dfcHdtLCBzZXRfcHdtLCBvZmZzZXQgLSAxKTsJCQkJXAogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20jI29mZnNldCMjX2VuYWJsZSwgU19JUlVHTyB8IFNfSVdVU1IsCVwKLQkJc2hvd19wd21fZW5hYmxlLCBzZXRfcHdtX2VuYWJsZSwgb2Zmc2V0IC0gMSkKKwkJc2hvd19wd21fZW5hYmxlLCBzZXRfcHdtX2VuYWJsZSwgb2Zmc2V0IC0gMSk7CQlcCitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bSMjb2Zmc2V0IyNfZnJlcSwgU19JUlVHTyB8IFNfSVdVU1IsCVwKKwkJc2hvd19wd21fZnJlcSwgc2V0X3B3bV9mcmVxLCBvZmZzZXQgLSAxKQogCiBzaG93X3B3bV9yZWcoMSk7CiBzaG93X3B3bV9yZWcoMik7CkBAIC03NjEsMzEgKzgwNyw2IEBACiAJcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgc3NpemVfdCBzaG93X3B3bV9hdXRvX3B3bV9mcmVxKHN0cnVjdCBkZXZpY2UgKmRldiwKLQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlpbnQgbnIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0ciktPmluZGV4OwotCXN0cnVjdCBsbTg1X2RhdGEgKmRhdGEgPSBsbTg1X3VwZGF0ZV9kZXZpY2UoZGV2KTsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgRlJFUV9GUk9NX1JFRyhkYXRhLT5hdXRvZmFuW25yXS5mcmVxKSk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IHNldF9wd21fYXV0b19wd21fZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKLXsKLQlpbnQgbnIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0ciktPmluZGV4OwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7Ci0Jc3RydWN0IGxtODVfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwotCWxvbmcgdmFsID0gc2ltcGxlX3N0cnRvbChidWYsIE5VTEwsIDEwKTsKLQotCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKLQlkYXRhLT5hdXRvZmFuW25yXS5mcmVxID0gRlJFUV9UT19SRUcodmFsKTsKLQlsbTg1X3dyaXRlX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQUZBTl9SQU5HRShuciksCi0JCShkYXRhLT56b25lW25yXS5yYW5nZSA8PCA0KQotCQl8IGRhdGEtPmF1dG9mYW5bbnJdLmZyZXEpOwotCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwotCXJldHVybiBjb3VudDsKLX0KLQogI2RlZmluZSBwd21fYXV0byhvZmZzZXQpCQkJCQkJXAogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20jI29mZnNldCMjX2F1dG9fY2hhbm5lbHMsCQkJXAogCQlTX0lSVUdPIHwgU19JV1VTUiwgc2hvd19wd21fYXV0b19jaGFubmVscywJCVwKQEAgLTc5NSwxMCArODE2LDcgQEAKIAkJc2V0X3B3bV9hdXRvX3B3bV9taW4sIG9mZnNldCAtIDEpOwkJCVwKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtIyNvZmZzZXQjI19hdXRvX3B3bV9taW5jdGwsCQlcCiAJCVNfSVJVR08gfCBTX0lXVVNSLCBzaG93X3B3bV9hdXRvX3B3bV9taW5jdGwsCQlcCi0JCXNldF9wd21fYXV0b19wd21fbWluY3RsLCBvZmZzZXQgLSAxKTsJCQlcCi1zdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHB3bSMjb2Zmc2V0IyNfYXV0b19wd21fZnJlcSwJCQlcCi0JCVNfSVJVR08gfCBTX0lXVVNSLCBzaG93X3B3bV9hdXRvX3B3bV9mcmVxLAkJXAotCQlzZXRfcHdtX2F1dG9fcHdtX2ZyZXEsIG9mZnNldCAtIDEpOworCQlzZXRfcHdtX2F1dG9fcHdtX21pbmN0bCwgb2Zmc2V0IC0gMSkKIAogcHdtX2F1dG8oMSk7CiBwd21fYXV0bygyKTsKQEAgLTg2Nyw3ICs4ODUsNyBAQAogCQlURU1QX0ZST01fUkVHKGRhdGEtPnpvbmVbbnJdLmxpbWl0KSk7CiAJbG04NV93cml0ZV92YWx1ZShjbGllbnQsIExNODVfUkVHX0FGQU5fUkFOR0UobnIpLAogCQkoKGRhdGEtPnpvbmVbbnJdLnJhbmdlICYgMHgwZikgPDwgNCkKLQkJfCAoZGF0YS0+YXV0b2Zhbltucl0uZnJlcSAmIDB4MDcpKTsKKwkJfCAoZGF0YS0+cHdtX2ZyZXFbbnJdICYgMHgwNykpOwogCiAvKiBVcGRhdGUgdGVtcF9hdXRvX2h5c3QgYW5kIHRlbXBfYXV0b19vZmYgKi8KIAlkYXRhLT56b25lW25yXS5oeXN0ID0gSFlTVF9UT19SRUcoVEVNUF9GUk9NX1JFRygKQEAgLTkxMCw3ICs5MjgsNyBAQAogCQl2YWwgLSBtaW4pOwogCWxtODVfd3JpdGVfdmFsdWUoY2xpZW50LCBMTTg1X1JFR19BRkFOX1JBTkdFKG5yKSwKIAkJKChkYXRhLT56b25lW25yXS5yYW5nZSAmIDB4MGYpIDw8IDQpCi0JCXwgKGRhdGEtPmF1dG9mYW5bbnJdLmZyZXEgJiAweDA3KSk7CisJCXwgKGRhdGEtPnB3bV9mcmVxW25yXSAmIDB4MDcpKTsKIAltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC05NTcsMTMgKzk3NSw2IEBACiB0ZW1wX2F1dG8oMik7CiB0ZW1wX2F1dG8oMyk7CiAKLXN0YXRpYyBpbnQgbG04NV9hdHRhY2hfYWRhcHRlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JaWYgKCEoYWRhcHRlci0+Y2xhc3MgJiBJMkNfQ0xBU1NfSFdNT04pKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsIGxtODVfZGV0ZWN0KTsKLX0KLQogc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmxtODVfYXR0cmlidXRlc1tdID0gewogCSZzZW5zb3JfZGV2X2F0dHJfZmFuMV9pbnB1dC5kZXZfYXR0ci5hdHRyLAogCSZzZW5zb3JfZGV2X2F0dHJfZmFuMl9pbnB1dC5kZXZfYXR0ci5hdHRyLApAQCAtOTg0LDYgKzk5NSw5IEBACiAJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2VuYWJsZS5kZXZfYXR0ci5hdHRyLAogCSZzZW5zb3JfZGV2X2F0dHJfcHdtMl9lbmFibGUuZGV2X2F0dHIuYXR0ciwKIAkmc2Vuc29yX2Rldl9hdHRyX3B3bTNfZW5hYmxlLmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wd20xX2ZyZXEuZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3B3bTJfZnJlcS5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcHdtM19mcmVxLmRldl9hdHRyLmF0dHIsCiAKIAkmc2Vuc29yX2Rldl9hdHRyX2luMF9pbnB1dC5kZXZfYXR0ci5hdHRyLAogCSZzZW5zb3JfZGV2X2F0dHJfaW4xX2lucHV0LmRldl9hdHRyLmF0dHIsCkBAIC0xMDI2LDkgKzEwNDAsNiBAQAogCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9hdXRvX3B3bV9taW5jdGwuZGV2X2F0dHIuYXR0ciwKIAkmc2Vuc29yX2Rldl9hdHRyX3B3bTJfYXV0b19wd21fbWluY3RsLmRldl9hdHRyLmF0dHIsCiAJJnNlbnNvcl9kZXZfYXR0cl9wd20zX2F1dG9fcHdtX21pbmN0bC5kZXZfYXR0ci5hdHRyLAotCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9hdXRvX3B3bV9mcmVxLmRldl9hdHRyLmF0dHIsCi0JJnNlbnNvcl9kZXZfYXR0cl9wd20yX2F1dG9fcHdtX2ZyZXEuZGV2X2F0dHIuYXR0ciwKLQkmc2Vuc29yX2Rldl9hdHRyX3B3bTNfYXV0b19wd21fZnJlcS5kZXZfYXR0ci5hdHRyLAogCiAJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9hdXRvX3RlbXBfb2ZmLmRldl9hdHRyLmF0dHIsCiAJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMl9hdXRvX3RlbXBfb2ZmLmRldl9hdHRyLmF0dHIsCkBAIC0xMTAzLDEwOSArMTExNCw3NCBAQAogCQlkZXZfd2FybigmY2xpZW50LT5kZXYsICJEZXZpY2UgaXMgbm90IHJlYWR5XG4iKTsKIH0KIAotc3RhdGljIGludCBsbTg1X2RldGVjdChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBhZGRyZXNzLAotCQlpbnQga2luZCkKKy8qIFJldHVybiAwIGlmIGRldGVjdGlvbiBpcyBzdWNjZXNzZnVsLCAtRU5PREVWIG90aGVyd2lzZSAqLworc3RhdGljIGludCBsbTg1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQga2luZCwKKwkJICAgICAgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbykKIHsKLQlpbnQgY29tcGFueSwgdmVyc3RlcDsKLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50OwotCXN0cnVjdCBsbTg1X2RhdGEgKmRhdGE7Ci0JaW50IGVyciA9IDA7CisJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gY2xpZW50LT5hZGFwdGVyOworCWludCBhZGRyZXNzID0gY2xpZW50LT5hZGRyOwogCWNvbnN0IGNoYXIgKnR5cGVfbmFtZTsKIAogCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkgewogCQkvKiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZG8gYnl0ZSBJL08gKi8KLQkJZ290byBFUlJPUjA7CisJCXJldHVybiAtRU5PREVWOwogCX0KIAotCS8qIE9LLiBGb3Igbm93LCB3ZSBwcmVzdW1lIHdlIGhhdmUgYSB2YWxpZCBjbGllbnQuIFdlIG5vdyBjcmVhdGUgdGhlCi0JICAgY2xpZW50IHN0cnVjdHVyZSwgZXZlbiB0aG91Z2ggd2UgY2Fubm90IGZpbGwgaXQgY29tcGxldGVseSB5ZXQuCi0JICAgQnV0IGl0IGFsbG93cyB1cyB0byBhY2Nlc3MgbG04NV97cmVhZCx3cml0ZX1fdmFsdWUuICovCisJLyogSWYgYXV0by1kZXRlY3RpbmcsIGRldGVybWluZSB0aGUgY2hpcCB0eXBlICovCisJaWYgKGtpbmQgPCAwKSB7CisJCWludCBjb21wYW55ID0gbG04NV9yZWFkX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQ09NUEFOWSk7CisJCWludCB2ZXJzdGVwID0gbG04NV9yZWFkX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfVkVSU1RFUCk7CiAKLQlpZiAoIShkYXRhID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGxtODVfZGF0YSksIEdGUF9LRVJORUwpKSkgewotCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIEVSUk9SMDsKLQl9CisJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgIkRldGVjdGluZyBkZXZpY2UgYXQgMHglMDJ4IHdpdGggIgorCQkJIkNPTVBBTlk6IDB4JTAyeCBhbmQgVkVSU1RFUDogMHglMDJ4XG4iLAorCQkJYWRkcmVzcywgY29tcGFueSwgdmVyc3RlcCk7CiAKLQljbGllbnQgPSAmZGF0YS0+Y2xpZW50OwotCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpOwotCWNsaWVudC0+YWRkciA9IGFkZHJlc3M7Ci0JY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKLQljbGllbnQtPmRyaXZlciA9ICZsbTg1X2RyaXZlcjsKKwkJLyogQWxsIHN1cHBvcnRlZCBjaGlwcyBoYXZlIHRoZSB2ZXJzaW9uIGluIGNvbW1vbiAqLworCQlpZiAoKHZlcnN0ZXAgJiBMTTg1X1ZFUlNURVBfVk1BU0spICE9IExNODVfVkVSU1RFUF9HRU5FUklDKSB7CisJCQlkZXZfZGJnKCZhZGFwdGVyLT5kZXYsICJBdXRvZGV0ZWN0aW9uIGZhaWxlZDogIgorCQkJCSJ1bnN1cHBvcnRlZCB2ZXJzaW9uXG4iKTsKKwkJCXJldHVybiAtRU5PREVWOworCQl9CisJCWtpbmQgPSBhbnlfY2hpcDsKIAotCS8qIE5vdywgd2UgZG8gdGhlIHJlbWFpbmluZyBkZXRlY3Rpb24uICovCi0KLQljb21wYW55ID0gbG04NV9yZWFkX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQ09NUEFOWSk7Ci0JdmVyc3RlcCA9IGxtODVfcmVhZF92YWx1ZShjbGllbnQsIExNODVfUkVHX1ZFUlNURVApOwotCi0JZGV2X2RiZygmYWRhcHRlci0+ZGV2LCAiRGV0ZWN0aW5nIGRldmljZSBhdCAlZCwweCUwMnggd2l0aCIKLQkJIiBDT01QQU5ZOiAweCUwMnggYW5kIFZFUlNURVA6IDB4JTAyeFxuIiwKLQkJaTJjX2FkYXB0ZXJfaWQoY2xpZW50LT5hZGFwdGVyKSwgY2xpZW50LT5hZGRyLAotCQljb21wYW55LCB2ZXJzdGVwKTsKLQotCS8qIElmIGF1dG8tZGV0ZWN0aW5nLCBEZXRlcm1pbmUgdGhlIGNoaXAgdHlwZS4gKi8KLQlpZiAoa2luZCA8PSAwKSB7Ci0JCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgIkF1dG9kZXRlY3RpbmcgZGV2aWNlIGF0ICVkLDB4JTAyeCAuLi5cbiIsCi0JCQlpMmNfYWRhcHRlcl9pZChhZGFwdGVyKSwgYWRkcmVzcyk7Ci0JCWlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9OQVRJT05BTAotCQkgICAgJiYgdmVyc3RlcCA9PSBMTTg1X1ZFUlNURVBfTE04NUMpIHsKLQkJCWtpbmQgPSBsbTg1YzsKLQkJfSBlbHNlIGlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9OQVRJT05BTAotCQkgICAgJiYgdmVyc3RlcCA9PSBMTTg1X1ZFUlNURVBfTE04NUIpIHsKLQkJCWtpbmQgPSBsbTg1YjsKLQkJfSBlbHNlIGlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9OQVRJT05BTAotCQkgICAgJiYgKHZlcnN0ZXAgJiBMTTg1X1ZFUlNURVBfVk1BU0spID09IExNODVfVkVSU1RFUF9HRU5FUklDKSB7Ci0JCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJVbnJlY29nbml6ZWQgdmVyc2lvbi9zdGVwcGluZyAweCUwMngiCi0JCQkJIiBEZWZhdWx0aW5nIHRvIExNODUuXG4iLCB2ZXJzdGVwKTsKLQkJCWtpbmQgPSBhbnlfY2hpcDsKLQkJfSBlbHNlIGlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9BTkFMT0dfREVWCi0JCSAgICAmJiB2ZXJzdGVwID09IExNODVfVkVSU1RFUF9BRE0xMDI3KSB7Ci0JCQlraW5kID0gYWRtMTAyNzsKLQkJfSBlbHNlIGlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9BTkFMT0dfREVWCi0JCSAgICAmJiAodmVyc3RlcCA9PSBMTTg1X1ZFUlNURVBfQURUNzQ2MwotCQkJIHx8IHZlcnN0ZXAgPT0gTE04NV9WRVJTVEVQX0FEVDc0NjNDKSkgewotCQkJa2luZCA9IGFkdDc0NjM7Ci0JCX0gZWxzZSBpZiAoY29tcGFueSA9PSBMTTg1X0NPTVBBTllfQU5BTE9HX0RFVgotCQkgICAgJiYgKHZlcnN0ZXAgJiBMTTg1X1ZFUlNURVBfVk1BU0spID09IExNODVfVkVSU1RFUF9HRU5FUklDKSB7Ci0JCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJVbnJlY29nbml6ZWQgdmVyc2lvbi9zdGVwcGluZyAweCUwMngiCi0JCQkJIiBEZWZhdWx0aW5nIHRvIEdlbmVyaWMgTE04NS5cbiIsIHZlcnN0ZXApOwotCQkJa2luZCA9IGFueV9jaGlwOwotCQl9IGVsc2UgaWYgKGNvbXBhbnkgPT0gTE04NV9DT01QQU5ZX1NNU0MKLQkJICAgICYmICh2ZXJzdGVwID09IExNODVfVkVSU1RFUF9FTUM2RDEwMF9BMAotCQkJIHx8IHZlcnN0ZXAgPT0gTE04NV9WRVJTVEVQX0VNQzZEMTAwX0ExKSkgewotCQkJLyogVW5mb3J0dW5hdGVseSwgd2UgY2FuJ3QgdGVsbCBhICcxMDAgZnJvbSBhICcxMDEKLQkJCSAqIGZyb20gdGhlIHJlZ2lzdGVycy4gIFNpbmNlIGEgJzEwMSBpcyBhICcxMDAKLQkJCSAqIGluIGEgcGFja2FnZSB3aXRoIGZld2VyIHBpbnMgYW5kIHRoZXJlZm9yZSBubwotCQkJICogMy4zViwgMS41ViBvciAxLjhWIGlucHV0cywgcGVyaGFwcyBpZiB0aG9zZQotCQkJICogaW5wdXRzIHJlYWQgMCwgdGhlbiBpdCdzIGEgJzEwMS4KLQkJCSAqLwotCQkJa2luZCA9IGVtYzZkMTAwOwotCQl9IGVsc2UgaWYgKGNvbXBhbnkgPT0gTE04NV9DT01QQU5ZX1NNU0MKLQkJICAgICYmIHZlcnN0ZXAgPT0gTE04NV9WRVJTVEVQX0VNQzZEMTAyKSB7Ci0JCQlraW5kID0gZW1jNmQxMDI7Ci0JCX0gZWxzZSBpZiAoY29tcGFueSA9PSBMTTg1X0NPTVBBTllfU01TQwotCQkgICAgJiYgKHZlcnN0ZXAgJiBMTTg1X1ZFUlNURVBfVk1BU0spID09IExNODVfVkVSU1RFUF9HRU5FUklDKSB7Ci0JCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJsbTg1OiBEZXRlY3RlZCBTTVNDIGNoaXBcbiIpOwotCQkJZGV2X2VycigmYWRhcHRlci0+ZGV2LCAibG04NTogVW5yZWNvZ25pemVkIHZlcnNpb24vc3RlcHBpbmcgMHglMDJ4IgotCQkJICAgICIgRGVmYXVsdGluZyB0byBHZW5lcmljIExNODUuXG4iLCB2ZXJzdGVwKTsKLQkJCWtpbmQgPSBhbnlfY2hpcDsKLQkJfSBlbHNlIGlmIChraW5kID09IGFueV9jaGlwCi0JCSAgICAmJiAodmVyc3RlcCAmIExNODVfVkVSU1RFUF9WTUFTSykgPT0gTE04NV9WRVJTVEVQX0dFTkVSSUMpIHsKLQkJCWRldl9lcnIoJmFkYXB0ZXItPmRldiwgIkdlbmVyaWMgTE04NSBWZXJzaW9uIDYgZGV0ZWN0ZWRcbiIpOwotCQkJLyogTGVhdmUga2luZCBhcyAiYW55X2NoaXAiICovCi0JCX0gZWxzZSB7Ci0JCQlkZXZfZGJnKCZhZGFwdGVyLT5kZXYsICJBdXRvZGV0ZWN0aW9uIGZhaWxlZFxuIik7Ci0JCQkvKiBOb3QgYW4gTE04NS4uLiAqLwotCQkJaWYgKGtpbmQgPT0gYW55X2NoaXApIHsgIC8qIFVzZXIgdXNlZCBmb3JjZT14LHkgKi8KLQkJCQlkZXZfZXJyKCZhZGFwdGVyLT5kZXYsICJHZW5lcmljIExNODUgVmVyc2lvbiA2IG5vdCIKLQkJCQkJIiBmb3VuZCBhdCAlZCwweCUwMnguIFRyeSBmb3JjZV9sbTg1Yy5cbiIsCi0JCQkJCWkyY19hZGFwdGVyX2lkKGFkYXB0ZXIpLCBhZGRyZXNzKTsKKwkJLyogTm93LCByZWZpbmUgdGhlIGRldGVjdGlvbiAqLworCQlpZiAoY29tcGFueSA9PSBMTTg1X0NPTVBBTllfTkFUSU9OQUwpIHsKKwkJCXN3aXRjaCAodmVyc3RlcCkgeworCQkJY2FzZSBMTTg1X1ZFUlNURVBfTE04NUM6CisJCQkJa2luZCA9IGxtODVjOworCQkJCWJyZWFrOworCQkJY2FzZSBMTTg1X1ZFUlNURVBfTE04NUI6CisJCQkJa2luZCA9IGxtODViOworCQkJCWJyZWFrOwogCQkJfQotCQkJZXJyID0gMDsKLQkJCWdvdG8gRVJST1IxOworCQl9IGVsc2UgaWYgKGNvbXBhbnkgPT0gTE04NV9DT01QQU5ZX0FOQUxPR19ERVYpIHsKKwkJCXN3aXRjaCAodmVyc3RlcCkgeworCQkJY2FzZSBMTTg1X1ZFUlNURVBfQURNMTAyNzoKKwkJCQlraW5kID0gYWRtMTAyNzsKKwkJCQlicmVhazsKKwkJCWNhc2UgTE04NV9WRVJTVEVQX0FEVDc0NjM6CisJCQljYXNlIExNODVfVkVSU1RFUF9BRFQ3NDYzQzoKKwkJCQlraW5kID0gYWR0NzQ2MzsKKwkJCQlicmVhazsKKwkJCX0KKwkJfSBlbHNlIGlmIChjb21wYW55ID09IExNODVfQ09NUEFOWV9TTVNDKSB7CisJCQlzd2l0Y2ggKHZlcnN0ZXApIHsKKwkJCWNhc2UgTE04NV9WRVJTVEVQX0VNQzZEMTAwX0EwOgorCQkJY2FzZSBMTTg1X1ZFUlNURVBfRU1DNkQxMDBfQTE6CisJCQkJLyogTm90ZTogd2UgY2FuJ3QgdGVsbCBhICcxMDAgZnJvbSBhICcxMDEgKi8KKwkJCQlraW5kID0gZW1jNmQxMDA7CisJCQkJYnJlYWs7CisJCQljYXNlIExNODVfVkVSU1RFUF9FTUM2RDEwMjoKKwkJCQlraW5kID0gZW1jNmQxMDI7CisJCQkJYnJlYWs7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkZXZfZGJnKCZhZGFwdGVyLT5kZXYsICJBdXRvZGV0ZWN0aW9uIGZhaWxlZDogIgorCQkJCSJ1bmtub3duIHZlbmRvclxuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKIAkJfQogCX0KIAotCS8qIEZpbGwgaW4gdGhlIGNoaXAgc3BlY2lmaWMgZHJpdmVyIHZhbHVlcyAqLwogCXN3aXRjaCAoa2luZCkgewogCWNhc2UgbG04NWI6CiAJCXR5cGVfbmFtZSA9ICJsbTg1YiI7CkBAIC0xMjI4LDE2ICsxMjA0LDM2IEBACiAJZGVmYXVsdDoKIAkJdHlwZV9uYW1lID0gImxtODUiOwogCX0KLQlzdHJsY3B5KGNsaWVudC0+bmFtZSwgdHlwZV9uYW1lLCBJMkNfTkFNRV9TSVpFKTsKKwlzdHJsY3B5KGluZm8tPnR5cGUsIHR5cGVfbmFtZSwgSTJDX05BTUVfU0laRSk7CiAKLQkvKiBGaWxsIGluIHRoZSByZW1haW5pbmcgY2xpZW50IGZpZWxkcyAqLwotCWRhdGEtPnR5cGUgPSBraW5kOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxtODVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJICAgICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBsbTg1X2RhdGEgKmRhdGE7CisJaW50IGVycjsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbG04NV9kYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYXRhKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpOworCWRhdGEtPnR5cGUgPSBpZC0+ZHJpdmVyX2RhdGE7CiAJbXV0ZXhfaW5pdCgmZGF0YS0+dXBkYXRlX2xvY2spOwogCi0JLyogVGVsbCB0aGUgSTJDIGxheWVyIGEgbmV3IGNsaWVudCBoYXMgYXJyaXZlZCAqLwotCWVyciA9IGkyY19hdHRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGVycikKLQkJZ290byBFUlJPUjE7CisJLyogRmlsbCBpbiB0aGUgY2hpcCBzcGVjaWZpYyBkcml2ZXIgdmFsdWVzICovCisJc3dpdGNoIChkYXRhLT50eXBlKSB7CisJY2FzZSBhZG0xMDI3OgorCWNhc2UgYWR0NzQ2MzoKKwljYXNlIGVtYzZkMTAwOgorCWNhc2UgZW1jNmQxMDI6CisJCWRhdGEtPmZyZXFfbWFwID0gYWRtMTAyN19mcmVxX21hcDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGF0YS0+ZnJlcV9tYXAgPSBsbTg1X2ZyZXFfbWFwOworCX0KIAogCS8qIFNldCB0aGUgVlJNIHZlcnNpb24gKi8KIAlkYXRhLT52cm0gPSB2aWRfd2hpY2hfdnJtKCk7CkBAIC0xMjQ4LDQ1ICsxMjQ0LDQyIEBACiAJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KIAllcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTg1X2dyb3VwKTsKIAlpZiAoZXJyKQotCQlnb3RvIEVSUk9SMjsKKwkJZ290byBlcnJfa2ZyZWU7CiAKIAkvKiBUaGUgQURUNzQ2MyBoYXMgYW4gb3B0aW9uYWwgVlJNIDEwIG1vZGUgd2hlcmUgcGluIDIxIGlzIHVzZWQKIAkgICBhcyBhIHNpeHRoIGRpZ2l0YWwgVklEIGlucHV0IHJhdGhlciB0aGFuIGFuIGFuYWxvZyBpbnB1dC4gKi8KIAlkYXRhLT52aWQgPSBsbTg1X3JlYWRfdmFsdWUoY2xpZW50LCBMTTg1X1JFR19WSUQpOwotCWlmICghKGtpbmQgPT0gYWR0NzQ2MyAmJiAoZGF0YS0+dmlkICYgMHg4MCkpKQorCWlmICghKGRhdGEtPnR5cGUgPT0gYWR0NzQ2MyAmJiAoZGF0YS0+dmlkICYgMHg4MCkpKQogCQlpZiAoKGVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwKIAkJCQkJJmxtODVfZ3JvdXBfaW40KSkpCi0JCQlnb3RvIEVSUk9SMzsKKwkJCWdvdG8gZXJyX3JlbW92ZV9maWxlczsKIAogCS8qIFRoZSBFTUM2RDEwMCBoYXMgMyBhZGRpdGlvbmFsIHZvbHRhZ2UgaW5wdXRzICovCi0JaWYgKGtpbmQgPT0gZW1jNmQxMDApCisJaWYgKGRhdGEtPnR5cGUgPT0gZW1jNmQxMDApCiAJCWlmICgoZXJyID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLAogCQkJCQkmbG04NV9ncm91cF9pbjU2NykpKQotCQkJZ290byBFUlJPUjM7CisJCQlnb3RvIGVycl9yZW1vdmVfZmlsZXM7CiAKIAlkYXRhLT5od21vbl9kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0ZXIoJmNsaWVudC0+ZGV2KTsKIAlpZiAoSVNfRVJSKGRhdGEtPmh3bW9uX2RldikpIHsKIAkJZXJyID0gUFRSX0VSUihkYXRhLT5od21vbl9kZXYpOwotCQlnb3RvIEVSUk9SMzsKKwkJZ290byBlcnJfcmVtb3ZlX2ZpbGVzOwogCX0KIAogCXJldHVybiAwOwogCiAJLyogRXJyb3Igb3V0IGFuZCBjbGVhbnVwIGNvZGUgKi8KLSBFUlJPUjM6CisgZXJyX3JlbW92ZV9maWxlczoKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTg1X2dyb3VwKTsKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTg1X2dyb3VwX2luNCk7Ci0JaWYgKGtpbmQgPT0gZW1jNmQxMDApCisJaWYgKGRhdGEtPnR5cGUgPT0gZW1jNmQxMDApCiAJCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmxtODVfZ3JvdXBfaW41NjcpOwotIEVSUk9SMjoKLQlpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpOwotIEVSUk9SMToKKyBlcnJfa2ZyZWU6CiAJa2ZyZWUoZGF0YSk7Ci0gRVJST1IwOgogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgbG04NV9kZXRhY2hfY2xpZW50KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgaW50IGxtODVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7CiAJc3RydWN0IGxtODVfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCWh3bW9uX2RldmljZV91bnJlZ2lzdGVyKGRhdGEtPmh3bW9uX2Rldik7CkBAIC0xMjk0LDcgKzEyODcsNiBAQAogCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmxtODVfZ3JvdXBfaW40KTsKIAlpZiAoZGF0YS0+dHlwZSA9PSBlbWM2ZDEwMCkKIAkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmbG04NV9ncm91cF9pbjU2Nyk7Ci0JaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKIAlrZnJlZShkYXRhKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE0ODEsNyArMTQ3Myw3IEBACiAJCQlkYXRhLT5hdXRvZmFuW2ldLmNvbmZpZyA9CiAJCQkgICAgbG04NV9yZWFkX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQUZBTl9DT05GSUcoaSkpOwogCQkJdmFsID0gbG04NV9yZWFkX3ZhbHVlKGNsaWVudCwgTE04NV9SRUdfQUZBTl9SQU5HRShpKSk7Ci0JCQlkYXRhLT5hdXRvZmFuW2ldLmZyZXEgPSB2YWwgJiAweDA3OworCQkJZGF0YS0+cHdtX2ZyZXFbaV0gPSB2YWwgJiAweDA3OwogCQkJZGF0YS0+em9uZVtpXS5yYW5nZSA9IHZhbCA+PiA0OwogCQkJZGF0YS0+YXV0b2ZhbltpXS5taW5fcHdtID0KIAkJCSAgICBsbTg1X3JlYWRfdmFsdWUoY2xpZW50LCBMTTg1X1JFR19BRkFOX01JTlBXTShpKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCmluZGV4IDIxOTcwZjAuLjJlNGEzY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0yMSwxMSArMjEsMTAgQEAKICAqICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE04Ny5odG1sCiAgKgogICogU29tZSBmdW5jdGlvbnMgc2hhcmUgcGlucywgc28gbm90IGFsbCBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBhdCB0aGUgc2FtZQotICogdGltZS4gV2hpY2ggYXJlIGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIHNldHVwLiBUaGlzIGRyaXZlciBhc3N1bWVzIHRoYXQKLSAqIHRoZSBCSU9TIGNvbmZpZ3VyZWQgdGhlIGNoaXAgY29ycmVjdGx5LiBJbiB0aGF0IHJlc3BlY3QsIGl0ICBkaWZmZXJzIGZyb20KLSAqIHRoZSBvcmlnaW5hbCBkcml2ZXIgKGZyb20gbG1fc2Vuc29ycyBmb3IgTGludXggMi40KSwgd2hpY2ggd291bGQgZm9yY2UgdGhlCi0gKiBMTTg3IHRvIGFuIGFyYml0cmFyeSwgY29tcGlsZS10aW1lIGNob3NlbiBtb2RlLCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwKLSAqIGNoaXBzZXQgd2lyaW5nLgorICogdGltZS4gV2hpY2ggYXJlIGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIHNldHVwLiBUaGlzIGRyaXZlciBub3JtYWxseQorICogYXNzdW1lcyB0aGF0IGZpcm13YXJlIGNvbmZpZ3VyZWQgdGhlIGNoaXAgY29ycmVjdGx5LiBXaGVyZSB0aGlzIGlzIG5vdAorICogdGhlIGNhc2UsIHBsYXRmb3JtIGNvZGUgbXVzdCBzZXQgdGhlIEkyQyBjbGllbnQncyBwbGF0Zm9ybV9kYXRhIHRvIHBvaW50CisgKiB0byBhIHU4IHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGNoYW5uZWwgcmVnaXN0ZXIuCiAgKiBGb3IgcmVmZXJlbmNlLCBoZXJlIGlzIHRoZSBsaXN0IG9mIGV4Y2x1c2l2ZSBmdW5jdGlvbnM6CiAgKiAgLSBpbjAraW41IChkZWZhdWx0KSBvciB0ZW1wMwogICogIC0gZmFuMSAoZGVmYXVsdCkgb3IgaW42CkBAIC0xOTksNiArMTk4LDcgQEAKIAl1bnNpZ25lZCBsb25nIGxhc3RfdXBkYXRlZDsgLyogSW4gamlmZmllcyAqLwogCiAJdTggY2hhbm5lbDsJCS8qIHJlZ2lzdGVyIHZhbHVlICovCisJdTggY29uZmlnOwkJLyogb3JpZ2luYWwgcmVnaXN0ZXIgdmFsdWUgKi8KIAogCXU4IGluWzhdOwkJLyogcmVnaXN0ZXIgdmFsdWUgKi8KIAl1OCBpbl9tYXhbOF07CQkvKiByZWdpc3RlciB2YWx1ZSAqLwpAQCAtODMyLDYgKzgzMiw3IEBACiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZuZXdfY2xpZW50LT5kZXYua29iaiwgJmxtODdfZ3JvdXApOwogCXN5c2ZzX3JlbW92ZV9ncm91cCgmbmV3X2NsaWVudC0+ZGV2LmtvYmosICZsbTg3X2dyb3VwX29wdCk7CiBleGl0X2ZyZWU6CisJbG04N193cml0ZV92YWx1ZShuZXdfY2xpZW50LCBMTTg3X1JFR19DT05GSUcsIGRhdGEtPmNvbmZpZyk7CiAJa2ZyZWUoZGF0YSk7CiBleGl0OgogCXJldHVybiBlcnI7CkBAIC04NDAsMTIgKzg0MSwxNyBAQAogc3RhdGljIHZvaWQgbG04N19pbml0X2NsaWVudChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCXN0cnVjdCBsbTg3X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQl1OCBjb25maWc7CiAKLQlkYXRhLT5jaGFubmVsID0gbG04N19yZWFkX3ZhbHVlKGNsaWVudCwgTE04N19SRUdfQ0hBTk5FTF9NT0RFKTsKKwlpZiAoY2xpZW50LT5kZXYucGxhdGZvcm1fZGF0YSkgeworCQlkYXRhLT5jaGFubmVsID0gKih1OCAqKWNsaWVudC0+ZGV2LnBsYXRmb3JtX2RhdGE7CisJCWxtODdfd3JpdGVfdmFsdWUoY2xpZW50LAorCQkJCSBMTTg3X1JFR19DSEFOTkVMX01PREUsIGRhdGEtPmNoYW5uZWwpOworCX0gZWxzZSB7CisJCWRhdGEtPmNoYW5uZWwgPSBsbTg3X3JlYWRfdmFsdWUoY2xpZW50LCBMTTg3X1JFR19DSEFOTkVMX01PREUpOworCX0KKwlkYXRhLT5jb25maWcgPSBsbTg3X3JlYWRfdmFsdWUoY2xpZW50LCBMTTg3X1JFR19DT05GSUcpICYgMHg2RjsKIAotCWNvbmZpZyA9IGxtODdfcmVhZF92YWx1ZShjbGllbnQsIExNODdfUkVHX0NPTkZJRyk7Ci0JaWYgKCEoY29uZmlnICYgMHgwMSkpIHsKKwlpZiAoIShkYXRhLT5jb25maWcgJiAweDAxKSkgewogCQlpbnQgaTsKIAogCQkvKiBMaW1pdHMgYXJlIGxlZnQgdW5pbml0aWFsaXplZCBhZnRlciBwb3dlci11cCAqLwpAQCAtODY3LDExICs4NzMsMTEgQEAKIAkJCWxtODdfd3JpdGVfdmFsdWUoY2xpZW50LCBMTTg3X1JFR19JTl9NQVgoMCksIDB4RkYpOwogCQl9CiAJfQotCWlmICgoY29uZmlnICYgMHg4MSkgIT0gMHgwMSkgewotCQkvKiBTdGFydCBtb25pdG9yaW5nICovCisKKwkvKiBNYWtlIHN1cmUgU3RhcnQgaXMgc2V0IGFuZCBJTlQjX0NsZWFyIGlzIGNsZWFyICovCisJaWYgKChkYXRhLT5jb25maWcgJiAweDA5KSAhPSAweDAxKQogCQlsbTg3X3dyaXRlX3ZhbHVlKGNsaWVudCwgTE04N19SRUdfQ09ORklHLAotCQkJCSAoY29uZmlnICYgMHhGNykgfCAweDAxKTsKLQl9CisJCQkJIChkYXRhLT5jb25maWcgJiAweDc3KSB8IDB4MDEpOwogfQogCiBzdGF0aWMgaW50IGxtODdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCkBAIC04ODIsNiArODg4LDcgQEAKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTg3X2dyb3VwKTsKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZsbTg3X2dyb3VwX29wdCk7CiAKKwlsbTg3X3dyaXRlX3ZhbHVlKGNsaWVudCwgTE04N19SRUdfQ09ORklHLCBkYXRhLT5jb25maWcpOwogCWtmcmVlKGRhdGEpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTkwLmMgYi9kcml2ZXJzL2h3bW9uL2xtOTAuYwppbmRleCBjMjRmZTM2Li4zZWRlZWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtOTAuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtOTAuYwpAQCAtMSwxNCArMSwxMiBAQAogLyoKICAqIGxtOTAuYyAtIFBhcnQgb2YgbG1fc2Vuc29ycywgTGludXgga2VybmVsIG1vZHVsZXMgZm9yIGhhcmR3YXJlCiAgKiAgICAgICAgICBtb25pdG9yaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiAgSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCAgSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+CiAgKgogICogQmFzZWQgb24gdGhlIGxtODMgZHJpdmVyLiBUaGUgTE05MCBpcyBhIHNlbnNvciBjaGlwIG1hZGUgYnkgTmF0aW9uYWwKICAqIFNlbWljb25kdWN0b3IuIEl0IHJlcG9ydHMgdXAgdG8gdHdvIHRlbXBlcmF0dXJlcyAoaXRzIG93biBwbHVzIHVwIHRvCiAgKiBvbmUgZXh0ZXJuYWwgb25lKSB3aXRoIGEgMC4xMjUgZGVnIHJlc29sdXRpb24gKDEgZGVnIGZvciBsb2NhbAotICogdGVtcGVyYXR1cmUpIGFuZCBhIDMtNCBkZWcgYWNjdXJhY3kuIENvbXBsZXRlIGRhdGFzaGVldCBjYW4gYmUKLSAqIG9idGFpbmVkIGZyb20gTmF0aW9uYWwncyB3ZWJzaXRlIGF0OgotICogICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTkwLmh0bWwKKyAqIHRlbXBlcmF0dXJlKSBhbmQgYSAzLTQgZGVnIGFjY3VyYWN5LgogICoKICAqIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIExNODkgYW5kIExNOTksIHR3byBvdGhlciBzZW5zb3IgY2hpcHMKICAqIG1hZGUgYnkgTmF0aW9uYWwgU2VtaWNvbmR1Y3Rvci4gQm90aCBoYXZlIGFuIGluY3JlYXNlZCByZW1vdGUKQEAgLTE2LDQ4ICsxNCwzOCBAQAogICogYWRkaXRpb25hbGx5IHNoaWZ0cyByZW1vdGUgdGVtcGVyYXR1cmVzIChtZWFzdXJlZCBhbmQgbGltaXRzKSBieSAxNgogICogZGVncmVlcywgd2hpY2ggYWxsb3dzIGZvciBoaWdoZXIgdGVtcGVyYXR1cmVzIG1lYXN1cmVtZW50LiBUaGUKICAqIGRyaXZlciBkb2Vzbid0IGhhbmRsZSBpdCBzaW5jZSBpdCBjYW4gYmUgZG9uZSBlYXNpbHkgaW4gdXNlci1zcGFjZS4KLSAqIENvbXBsZXRlIGRhdGFzaGVldHMgY2FuIGJlIG9idGFpbmVkIGZyb20gTmF0aW9uYWwncyB3ZWJzaXRlIGF0OgotICogICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTg5Lmh0bWwKLSAqICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE05OS5odG1sCiAgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBib3RoIGNoaXBzLgogICoKICAqIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIExNODYsIGFub3RoZXIgc2Vuc29yIGNoaXAgbWFkZSBieQogICogTmF0aW9uYWwgU2VtaWNvbmR1Y3Rvci4gSXQgaXMgZXhhY3RseSBzaW1pbGFyIHRvIHRoZSBMTTkwIGV4Y2VwdCBpdAogICogaGFzIGEgaGlnaGVyIGFjY3VyYWN5LgotICogQ29tcGxldGUgZGF0YXNoZWV0IGNhbiBiZSBvYnRhaW5lZCBmcm9tIE5hdGlvbmFsJ3Mgd2Vic2l0ZSBhdDoKLSAqICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE04Ni5odG1sCiAgKgogICogVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyB0aGUgQURNMTAzMiwgYSBzZW5zb3IgY2hpcCBtYWRlIGJ5IEFuYWxvZwogICogRGV2aWNlcy4gVGhhdCBjaGlwIGlzIHNpbWlsYXIgdG8gdGhlIExNOTAsIHdpdGggYSBmZXcgZGlmZmVyZW5jZXMKLSAqIHRoYXQgYXJlIG5vdCBoYW5kbGVkIGJ5IHRoaXMgZHJpdmVyLiBDb21wbGV0ZSBkYXRhc2hlZXQgY2FuIGJlCi0gKiBvYnRhaW5lZCBmcm9tIEFuYWxvZydzIHdlYnNpdGUgYXQ6Ci0gKiAgIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9lbi9wcm9kLzAsMjg3NyxBRE0xMDMyLDAwLmh0bWwKLSAqIEFtb25nIG90aGVycywgaXQgaGFzIGEgaGlnaGVyIGFjY3VyYWN5IHRoYW4gdGhlIExNOTAsIG11Y2ggbGlrZSB0aGUKLSAqIExNODYgZG9lcy4KKyAqIHRoYXQgYXJlIG5vdCBoYW5kbGVkIGJ5IHRoaXMgZHJpdmVyLiBBbW9uZyBvdGhlcnMsIGl0IGhhcyBhIGhpZ2hlcgorICogYWNjdXJhY3kgdGhhbiB0aGUgTE05MCwgbXVjaCBsaWtlIHRoZSBMTTg2IGRvZXMuCiAgKgogICogVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyB0aGUgTUFYNjY1NywgTUFYNjY1OCBhbmQgTUFYNjY1OSBzZW5zb3IKLSAqIGNoaXBzIG1hZGUgYnkgTWF4aW0uIFRoZXNlIGNoaXBzIGFyZSBzaW1pbGFyIHRvIHRoZSBMTTg2LiBDb21wbGV0ZQotICogZGF0YXNoZWV0IGNhbiBiZSBvYnRhaW5lZCBhdCBNYXhpbSdzIHdlYnNpdGUgYXQ6Ci0gKiAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8yNTc4CisgKiBjaGlwcyBtYWRlIGJ5IE1heGltLiBUaGVzZSBjaGlwcyBhcmUgc2ltaWxhciB0byB0aGUgTE04Ni4KICAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHRocmVlCiAgKiB2YXJpYW50cy4gVGhlIGV4dHJhIGFkZHJlc3MgYW5kIGZlYXR1cmVzIG9mIHRoZSBNQVg2NjU5IGFyZSBub3QKICAqIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4gVGhlc2UgY2hpcHMgbGFjayB0aGUgcmVtb3RlIHRlbXBlcmF0dXJlCiAgKiBvZmZzZXQgZmVhdHVyZS4KICAqCisgKiBUaGlzIGRyaXZlciBhbHNvIHN1cHBvcnRzIHRoZSBNQVg2NjQ2LCBNQVg2NjQ3IGFuZCBNQVg2NjQ5IGNoaXBzCisgKiBtYWRlIGJ5IE1heGltLiAgVGhlc2UgYXJlIGFnYWluIHNpbWlsYXIgdG8gdGhlIExNODYsIGJ1dCB0aGV5IHVzZQorICogdW5zaWduZWQgdGVtcGVyYXR1cmUgdmFsdWVzIGFuZCBjYW4gcmVwb3J0IHRlbXBlcmF0dXJlcyBmcm9tIDAgdG8KKyAqIDE0NSBkZWdyZWVzLgorICoKICAqIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIE1BWDY2ODAgYW5kIE1BWDY2ODEsIHR3byBvdGhlciBzZW5zb3IKICAqIGNoaXBzIG1hZGUgYnkgTWF4aW0uIFRoZXNlIGFyZSBxdWl0ZSBzaW1pbGFyIHRvIHRoZSBvdGhlciBNYXhpbQotICogY2hpcHMuIENvbXBsZXRlIGRhdGFzaGVldCBjYW4gYmUgb2J0YWluZWQgYXQ6Ci0gKiAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zMzcwCi0gKiBUaGUgTUFYNjY4MCBhbmQgTUFYNjY4MSBvbmx5IGRpZmZlciBpbiB0aGUgcGlub3V0IHNvIHRoZXkgY2FuIGJlCi0gKiB0cmVhdGVkIGlkZW50aWNhbGx5LgorICogY2hpcHMuIFRoZSBNQVg2NjgwIGFuZCBNQVg2NjgxIG9ubHkgZGlmZmVyIGluIHRoZSBwaW5vdXQgc28gdGhleSBjYW4KKyAqIGJlIHRyZWF0ZWQgaWRlbnRpY2FsbHkuCiAgKgotICogVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyB0aGUgQURUNzQ2MSBjaGlwIGZyb20gQW5hbG9nIERldmljZXMgYnV0Ci0gKiBvbmx5IGluIGl0cyAiY29tcGF0YWJpbGl0eSBtb2RlIi4gSWYgYW4gQURUNzQ2MSBjaGlwIGlzIGZvdW5kIGJ1dAotICogaXMgY29uZmlndXJlZCBpbiBub24tY29tcGF0aWJsZSBtb2RlICh3aGVyZSBpdHMgdGVtcGVyYXR1cmUKLSAqIHJlZ2lzdGVyIHZhbHVlcyBhcmUgZGVjb2RlZCBkaWZmZXJlbnRseSkgaXQgaXMgaWdub3JlZCBieSB0aGlzCi0gKiBkcml2ZXIuIENvbXBsZXRlIGRhdGFzaGVldCBjYW4gYmUgb2J0YWluZWQgZnJvbSBBbmFsb2cncyB3ZWJzaXRlCi0gKiBhdDoKLSAqICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL2VuL3Byb2QvMCwyODc3LEFEVDc0NjEsMDAuaHRtbAorICogVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyB0aGUgQURUNzQ2MSBjaGlwIGZyb20gQW5hbG9nIERldmljZXMuCisgKiBJdCdzIHN1cHBvcnRlZCBpbiBib3RoIGNvbXBhdGliaWxpdHkgYW5kIGV4dGVuZGVkIG1vZGUuIEl0IGlzIG1vc3RseQorICogY29tcGF0aWJsZSB3aXRoIExNOTAgZXhjZXB0IGZvciBhIGRhdGEgZm9ybWF0IGRpZmZlcmVuY2UgZm9yIHRoZQorICogdGVtcGVyYXR1cmUgdmFsdWUgcmVnaXN0ZXJzLgogICoKICAqIFNpbmNlIHRoZSBMTTkwIHdhcyB0aGUgZmlyc3QgY2hpcHNldCBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIsIG1vc3QKICAqIGNvbW1lbnRzIHdpbGwgcmVmZXIgdG8gdGhpcyBjaGlwc2V0LCBidXQgYXJlIGFjdHVhbGx5IGdlbmVyYWwgYW5kCkBAIC05Myw5ICs4MSwxMCBAQAogICogQWRkcmVzc2VzIHRvIHNjYW4KICAqIEFkZHJlc3MgaXMgZnVsbHkgZGVmaW5lZCBpbnRlcm5hbGx5IGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBleGNlcHQgZm9yCiAgKiBNQVg2NjU5LCBNQVg2NjgwIGFuZCBNQVg2NjgxLgotICogTE04NiwgTE04OSwgTE05MCwgTE05OSwgQURNMTAzMiwgQURNMTAzMi0xLCBBRFQ3NDYxLCBNQVg2NjU3IGFuZCBNQVg2NjU4Ci0gKiBoYXZlIGFkZHJlc3MgMHg0Yy4KLSAqIEFETTEwMzItMiwgQURUNzQ2MS0yLCBMTTg5LTEsIGFuZCBMTTk5LTEgaGF2ZSBhZGRyZXNzIDB4NGQuCisgKiBMTTg2LCBMTTg5LCBMTTkwLCBMTTk5LCBBRE0xMDMyLCBBRE0xMDMyLTEsIEFEVDc0NjEsIE1BWDY2NDksIE1BWDY2NTcKKyAqIGFuZCBNQVg2NjU4IGhhdmUgYWRkcmVzcyAweDRjLgorICogQURNMTAzMi0yLCBBRFQ3NDYxLTIsIExNODktMSwgTE05OS0xIGFuZCBNQVg2NjQ2IGhhdmUgYWRkcmVzcyAweDRkLgorICogTUFYNjY0NyBoYXMgYWRkcmVzcyAweDRlLgogICogTUFYNjY1OSBjYW4gaGF2ZSBhZGRyZXNzIDB4NGMsIDB4NGQgb3IgMHg0ZSAodW5zdXBwb3J0ZWQpLgogICogTUFYNjY4MCBhbmQgTUFYNjY4MSBjYW4gaGF2ZSBhZGRyZXNzIDB4MTgsIDB4MTksIDB4MWEsIDB4MjksIDB4MmEsIDB4MmIsCiAgKiAweDRjLCAweDRkIG9yIDB4NGUuCkBAIC0xMDgsNyArOTcsOCBAQAogICogSW5zbW9kIHBhcmFtZXRlcnMKICAqLwogCi1JMkNfQ0xJRU5UX0lOU01PRF83KGxtOTAsIGFkbTEwMzIsIGxtOTksIGxtODYsIG1heDY2NTcsIGFkdDc0NjEsIG1heDY2ODApOworSTJDX0NMSUVOVF9JTlNNT0RfOChsbTkwLCBhZG0xMDMyLCBsbTk5LCBsbTg2LCBtYXg2NjU3LCBhZHQ3NDYxLCBtYXg2NjgwLAorCQkgICAgbWF4NjY0Nik7CiAKIC8qCiAgKiBUaGUgTE05MCByZWdpc3RlcnMKQEAgLTE0OSwzOSArMTM5LDE0IEBACiAjZGVmaW5lIExNOTBfUkVHX1JfVENSSVRfSFlTVAkJMHgyMQogI2RlZmluZSBMTTkwX1JFR19XX1RDUklUX0hZU1QJCTB4MjEKIAorLyogTUFYNjY0Ni82NjQ3LzY2NDkvNjY1Ny82NjU4LzY2NTkgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgTUFYNjY1N19SRUdfUl9MT0NBTF9URU1QTAkweDExCisKIC8qCi0gKiBDb252ZXJzaW9ucyBhbmQgdmFyaW91cyBtYWNyb3MKLSAqIEZvciBsb2NhbCB0ZW1wZXJhdHVyZXMgYW5kIGxpbWl0cywgY3JpdGljYWwgbGltaXRzIGFuZCB0aGUgaHlzdGVyZXNpcwotICogdmFsdWUsIHRoZSBMTTkwIHVzZXMgc2lnbmVkIDgtYml0IHZhbHVlcyB3aXRoIExTQiA9IDEgZGVncmVlIENlbHNpdXMuCi0gKiBGb3IgcmVtb3RlIHRlbXBlcmF0dXJlcyBhbmQgbGltaXRzLCBpdCB1c2VzIHNpZ25lZCAxMS1iaXQgdmFsdWVzIHdpdGgKLSAqIExTQiA9IDAuMTI1IGRlZ3JlZSBDZWxzaXVzLCBsZWZ0LWp1c3RpZmllZCBpbiAxNi1iaXQgcmVnaXN0ZXJzLgorICogRGV2aWNlIGZsYWdzCiAgKi8KLQotI2RlZmluZSBURU1QMV9GUk9NX1JFRyh2YWwpCSgodmFsKSAqIDEwMDApCi0jZGVmaW5lIFRFTVAxX1RPX1JFRyh2YWwpCSgodmFsKSA8PSAtMTI4MDAwID8gLTEyOCA6IFwKLQkJCQkgKHZhbCkgPj0gMTI3MDAwID8gMTI3IDogXAotCQkJCSAodmFsKSA8IDAgPyAoKHZhbCkgLSA1MDApIC8gMTAwMCA6IFwKLQkJCQkgKCh2YWwpICsgNTAwKSAvIDEwMDApCi0jZGVmaW5lIFRFTVAyX0ZST01fUkVHKHZhbCkJKCh2YWwpIC8gMzIgKiAxMjUpCi0jZGVmaW5lIFRFTVAyX1RPX1JFRyh2YWwpCSgodmFsKSA8PSAtMTI4MDAwID8gMHg4MDAwIDogXAotCQkJCSAodmFsKSA+PSAxMjc4NzUgPyAweDdGRTAgOiBcCi0JCQkJICh2YWwpIDwgMCA/ICgodmFsKSAtIDYyKSAvIDEyNSAqIDMyIDogXAotCQkJCSAoKHZhbCkgKyA2MikgLyAxMjUgKiAzMikKLSNkZWZpbmUgSFlTVF9UT19SRUcodmFsKQkoKHZhbCkgPD0gMCA/IDAgOiAodmFsKSA+PSAzMDUwMCA/IDMxIDogXAotCQkJCSAoKHZhbCkgKyA1MDApIC8gMTAwMCkKLQotLyogCi0gKiBBRFQ3NDYxIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gTE05MCBleGNlcHQgdGhhdCBhdHRlbXB0cyB0byB3cml0ZQotICogdmFsdWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlIDAgPCB0ZW1wIDwgMTI3IGFyZSB0cmVhdGVkIGFzCi0gKiB0aGUgYm91bmRhcnkgdmFsdWUuIAotICovCi0KLSNkZWZpbmUgVEVNUDFfVE9fUkVHX0FEVDc0NjEodmFsKSAoKHZhbCkgPD0gMCA/IDAgOiBcCi0JCQkJICh2YWwpID49IDEyNzAwMCA/IDEyNyA6IFwKLQkJCQkgKCh2YWwpICsgNTAwKSAvIDEwMDApCi0jZGVmaW5lIFRFTVAyX1RPX1JFR19BRFQ3NDYxKHZhbCkgKCh2YWwpIDw9IDAgPyAwIDogXAotCQkJCSAodmFsKSA+PSAxMjc3NTAgPyAweDdGQzAgOiBcCi0JCQkJICgodmFsKSArIDEyNSkgLyAyNTAgKiA2NCkKKyNkZWZpbmUgTE05MF9GTEFHX0FEVDc0NjFfRVhUCQkweDAxCS8qIEFEVDc0NjEgZXh0ZW5kZWQgbW9kZSAqLwogCiAvKgogICogRnVuY3Rpb25zIGRlY2xhcmF0aW9uCkBAIC0yMDYsNiArMTcxLDkgQEAKIAl7ICJsbTg2IiwgbG04NiB9LAogCXsgImxtODkiLCBsbTk5IH0sCiAJeyAibG05OSIsIGxtOTkgfSwJLyogTWlzc2luZyB0ZW1wZXJhdHVyZSBvZmZzZXQgKi8KKwl7ICJtYXg2NjQ2IiwgbWF4NjY0NiB9LAorCXsgIm1heDY2NDciLCBtYXg2NjQ2IH0sCisJeyAibWF4NjY0OSIsIG1heDY2NDYgfSwKIAl7ICJtYXg2NjU3IiwgbWF4NjY1NyB9LAogCXsgIm1heDY2NTgiLCBtYXg2NjU3IH0sCiAJeyAibWF4NjY1OSIsIG1heDY2NTcgfSwKQEAgLTIzNywyMiArMjA1LDE1MCBAQAogCWNoYXIgdmFsaWQ7IC8qIHplcm8gdW50aWwgZm9sbG93aW5nIGZpZWxkcyBhcmUgdmFsaWQgKi8KIAl1bnNpZ25lZCBsb25nIGxhc3RfdXBkYXRlZDsgLyogaW4gamlmZmllcyAqLwogCWludCBraW5kOworCWludCBmbGFnczsKIAogCS8qIHJlZ2lzdGVycyB2YWx1ZXMgKi8KLQlzOCB0ZW1wOFs1XTsJLyogMDogbG9jYWwgaW5wdXQKLQkJCSAgIDE6IGxvY2FsIGxvdyBsaW1pdAotCQkJICAgMjogbG9jYWwgaGlnaCBsaW1pdAotCQkJICAgMzogbG9jYWwgY3JpdGljYWwgbGltaXQKLQkJCSAgIDQ6IHJlbW90ZSBjcml0aWNhbCBsaW1pdCAqLwotCXMxNiB0ZW1wMTFbNF07CS8qIDA6IHJlbW90ZSBpbnB1dAorCXM4IHRlbXA4WzRdOwkvKiAwOiBsb2NhbCBsb3cgbGltaXQKKwkJCSAgIDE6IGxvY2FsIGhpZ2ggbGltaXQKKwkJCSAgIDI6IGxvY2FsIGNyaXRpY2FsIGxpbWl0CisJCQkgICAzOiByZW1vdGUgY3JpdGljYWwgbGltaXQgKi8KKwlzMTYgdGVtcDExWzVdOwkvKiAwOiByZW1vdGUgaW5wdXQKIAkJCSAgIDE6IHJlbW90ZSBsb3cgbGltaXQKIAkJCSAgIDI6IHJlbW90ZSBoaWdoIGxpbWl0Ci0JCQkgICAzOiByZW1vdGUgb2Zmc2V0IChleGNlcHQgbWF4NjY1NykgKi8KKwkJCSAgIDM6IHJlbW90ZSBvZmZzZXQgKGV4Y2VwdCBtYXg2NjQ2IGFuZCBtYXg2NjU3KQorCQkJICAgNDogbG9jYWwgaW5wdXQgKi8KIAl1OCB0ZW1wX2h5c3Q7CiAJdTggYWxhcm1zOyAvKiBiaXR2ZWN0b3IgKi8KIH07CiAKIC8qCisgKiBDb252ZXJzaW9ucworICogRm9yIGxvY2FsIHRlbXBlcmF0dXJlcyBhbmQgbGltaXRzLCBjcml0aWNhbCBsaW1pdHMgYW5kIHRoZSBoeXN0ZXJlc2lzCisgKiB2YWx1ZSwgdGhlIExNOTAgdXNlcyBzaWduZWQgOC1iaXQgdmFsdWVzIHdpdGggTFNCID0gMSBkZWdyZWUgQ2Vsc2l1cy4KKyAqIEZvciByZW1vdGUgdGVtcGVyYXR1cmVzIGFuZCBsaW1pdHMsIGl0IHVzZXMgc2lnbmVkIDExLWJpdCB2YWx1ZXMgd2l0aAorICogTFNCID0gMC4xMjUgZGVncmVlIENlbHNpdXMsIGxlZnQtanVzdGlmaWVkIGluIDE2LWJpdCByZWdpc3RlcnMuICBTb21lCisgKiBNYXhpbSBjaGlwcyB1c2UgdW5zaWduZWQgdmFsdWVzLgorICovCisKK3N0YXRpYyBpbmxpbmUgaW50IHRlbXBfZnJvbV9zOChzOCB2YWwpCit7CisJcmV0dXJuIHZhbCAqIDEwMDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlbXBfZnJvbV91OCh1OCB2YWwpCit7CisJcmV0dXJuIHZhbCAqIDEwMDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlbXBfZnJvbV9zMTYoczE2IHZhbCkKK3sKKwlyZXR1cm4gdmFsIC8gMzIgKiAxMjU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlbXBfZnJvbV91MTYodTE2IHZhbCkKK3sKKwlyZXR1cm4gdmFsIC8gMzIgKiAxMjU7Cit9CisKK3N0YXRpYyBzOCB0ZW1wX3RvX3M4KGxvbmcgdmFsKQoreworCWlmICh2YWwgPD0gLTEyODAwMCkKKwkJcmV0dXJuIC0xMjg7CisJaWYgKHZhbCA+PSAxMjcwMDApCisJCXJldHVybiAxMjc7CisJaWYgKHZhbCA8IDApCisJCXJldHVybiAodmFsIC0gNTAwKSAvIDEwMDA7CisJcmV0dXJuICh2YWwgKyA1MDApIC8gMTAwMDsKK30KKworc3RhdGljIHU4IHRlbXBfdG9fdTgobG9uZyB2YWwpCit7CisJaWYgKHZhbCA8PSAwKQorCQlyZXR1cm4gMDsKKwlpZiAodmFsID49IDI1NTAwMCkKKwkJcmV0dXJuIDI1NTsKKwlyZXR1cm4gKHZhbCArIDUwMCkgLyAxMDAwOworfQorCitzdGF0aWMgczE2IHRlbXBfdG9fczE2KGxvbmcgdmFsKQoreworCWlmICh2YWwgPD0gLTEyODAwMCkKKwkJcmV0dXJuIDB4ODAwMDsKKwlpZiAodmFsID49IDEyNzg3NSkKKwkJcmV0dXJuIDB4N0ZFMDsKKwlpZiAodmFsIDwgMCkKKwkJcmV0dXJuICh2YWwgLSA2MikgLyAxMjUgKiAzMjsKKwlyZXR1cm4gKHZhbCArIDYyKSAvIDEyNSAqIDMyOworfQorCitzdGF0aWMgdTggaHlzdF90b19yZWcobG9uZyB2YWwpCit7CisJaWYgKHZhbCA8PSAwKQorCQlyZXR1cm4gMDsKKwlpZiAodmFsID49IDMwNTAwKQorCQlyZXR1cm4gMzE7CisJcmV0dXJuICh2YWwgKyA1MDApIC8gMTAwMDsKK30KKworLyoKKyAqIEFEVDc0NjEgaW4gY29tcGF0aWJpbGl0eSBtb2RlIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gTE05MCBleGNlcHQgdGhhdAorICogYXR0ZW1wdHMgdG8gd3JpdGUgdmFsdWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlIDAgPCB0ZW1wIDwgMTI3IGFyZQorICogdHJlYXRlZCBhcyB0aGUgYm91bmRhcnkgdmFsdWUuCisgKgorICogQURUNzQ2MSBpbiAiZXh0ZW5kZWQgbW9kZSIgb3BlcmF0aW9uIHVzZXMgdW5zaWduZWQgaW50ZWdlcnMgb2Zmc2V0IGJ5CisgKiA2NCAoZS5nLiwgMCAtPiAtNjQgZGVnQykuICBUaGUgcmFuZ2UgaXMgcmVzdHJpY3RlZCB0byAtNjQuLjE5MSBkZWdDLgorICovCitzdGF0aWMgaW5saW5lIGludCB0ZW1wX2Zyb21fdThfYWR0NzQ2MShzdHJ1Y3QgbG05MF9kYXRhICpkYXRhLCB1OCB2YWwpCit7CisJaWYgKGRhdGEtPmZsYWdzICYgTE05MF9GTEFHX0FEVDc0NjFfRVhUKQorCQlyZXR1cm4gKHZhbCAtIDY0KSAqIDEwMDA7CisJZWxzZQorCQlyZXR1cm4gdGVtcF9mcm9tX3M4KHZhbCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlbXBfZnJvbV91MTZfYWR0NzQ2MShzdHJ1Y3QgbG05MF9kYXRhICpkYXRhLCB1MTYgdmFsKQoreworCWlmIChkYXRhLT5mbGFncyAmIExNOTBfRkxBR19BRFQ3NDYxX0VYVCkKKwkJcmV0dXJuICh2YWwgLSAweDQwMDApIC8gNjQgKiAyNTA7CisJZWxzZQorCQlyZXR1cm4gdGVtcF9mcm9tX3MxNih2YWwpOworfQorCitzdGF0aWMgdTggdGVtcF90b191OF9hZHQ3NDYxKHN0cnVjdCBsbTkwX2RhdGEgKmRhdGEsIGxvbmcgdmFsKQoreworCWlmIChkYXRhLT5mbGFncyAmIExNOTBfRkxBR19BRFQ3NDYxX0VYVCkgeworCQlpZiAodmFsIDw9IC02NDAwMCkKKwkJCXJldHVybiAwOworCQlpZiAodmFsID49IDE5MTAwMCkKKwkJCXJldHVybiAweEZGOworCQlyZXR1cm4gKHZhbCArIDUwMCArIDY0MDAwKSAvIDEwMDA7CisJfSBlbHNlIHsKKwkJaWYgKHZhbCA8PSAwKQorCQkJcmV0dXJuIDA7CisJCWlmICh2YWwgPj0gMTI3MDAwKQorCQkJcmV0dXJuIDEyNzsKKwkJcmV0dXJuICh2YWwgKyA1MDApIC8gMTAwMDsKKwl9Cit9CisKK3N0YXRpYyB1MTYgdGVtcF90b191MTZfYWR0NzQ2MShzdHJ1Y3QgbG05MF9kYXRhICpkYXRhLCBsb25nIHZhbCkKK3sKKwlpZiAoZGF0YS0+ZmxhZ3MgJiBMTTkwX0ZMQUdfQURUNzQ2MV9FWFQpIHsKKwkJaWYgKHZhbCA8PSAtNjQwMDApCisJCQlyZXR1cm4gMDsKKwkJaWYgKHZhbCA+PSAxOTE3NTApCisJCQlyZXR1cm4gMHhGRkMwOworCQlyZXR1cm4gKHZhbCArIDY0MDAwICsgMTI1KSAvIDI1MCAqIDY0OworCX0gZWxzZSB7CisJCWlmICh2YWwgPD0gMCkKKwkJCXJldHVybiAwOworCQlpZiAodmFsID49IDEyNzc1MCkKKwkJCXJldHVybiAweDdGQzA7CisJCXJldHVybiAodmFsICsgMTI1KSAvIDI1MCAqIDY0OworCX0KK30KKworLyoKICAqIFN5c2ZzIHN0dWZmCiAgKi8KIApAQCAtMjYxLDcgKzM1NywxNiBAQAogewogCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsKIAlzdHJ1Y3QgbG05MF9kYXRhICpkYXRhID0gbG05MF91cGRhdGVfZGV2aWNlKGRldik7Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIFRFTVAxX0ZST01fUkVHKGRhdGEtPnRlbXA4W2F0dHItPmluZGV4XSkpOworCWludCB0ZW1wOworCisJaWYgKGRhdGEtPmtpbmQgPT0gYWR0NzQ2MSkKKwkJdGVtcCA9IHRlbXBfZnJvbV91OF9hZHQ3NDYxKGRhdGEsIGRhdGEtPnRlbXA4W2F0dHItPmluZGV4XSk7CisJZWxzZSBpZiAoZGF0YS0+a2luZCA9PSBtYXg2NjQ2KQorCQl0ZW1wID0gdGVtcF9mcm9tX3U4KGRhdGEtPnRlbXA4W2F0dHItPmluZGV4XSk7CisJZWxzZQorCQl0ZW1wID0gdGVtcF9mcm9tX3M4KGRhdGEtPnRlbXA4W2F0dHItPmluZGV4XSk7CisKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgdGVtcCk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IHNldF90ZW1wOChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLApAQCAtMjgyLDEwICszODcsMTIgQEAKIAogCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlpZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxKQotCQlkYXRhLT50ZW1wOFtucl0gPSBURU1QMV9UT19SRUdfQURUNzQ2MSh2YWwpOworCQlkYXRhLT50ZW1wOFtucl0gPSB0ZW1wX3RvX3U4X2FkdDc0NjEoZGF0YSwgdmFsKTsKKwllbHNlIGlmIChkYXRhLT5raW5kID09IG1heDY2NDYpCisJCWRhdGEtPnRlbXA4W25yXSA9IHRlbXBfdG9fdTgodmFsKTsKIAllbHNlCi0JCWRhdGEtPnRlbXA4W25yXSA9IFRFTVAxX1RPX1JFRyh2YWwpOwotCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWdbbnIgLSAxXSwgZGF0YS0+dGVtcDhbbnJdKTsKKwkJZGF0YS0+dGVtcDhbbnJdID0gdGVtcF90b19zOCh2YWwpOworCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWdbbnJdLCBkYXRhLT50ZW1wOFtucl0pOwogCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCXJldHVybiBjb3VudDsKIH0KQEAgLTI5NSw3ICs0MDIsMTYgQEAKIHsKIAlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoZGV2YXR0cik7CiAJc3RydWN0IGxtOTBfZGF0YSAqZGF0YSA9IGxtOTBfdXBkYXRlX2RldmljZShkZXYpOwotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBURU1QMl9GUk9NX1JFRyhkYXRhLT50ZW1wMTFbYXR0ci0+aW5kZXhdKSk7CisJaW50IHRlbXA7CisKKwlpZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxKQorCQl0ZW1wID0gdGVtcF9mcm9tX3UxNl9hZHQ3NDYxKGRhdGEsIGRhdGEtPnRlbXAxMVthdHRyLT5pbmRleF0pOworCWVsc2UgaWYgKGRhdGEtPmtpbmQgPT0gbWF4NjY0NikKKwkJdGVtcCA9IHRlbXBfZnJvbV91MTYoZGF0YS0+dGVtcDExW2F0dHItPmluZGV4XSk7CisJZWxzZQorCQl0ZW1wID0gdGVtcF9mcm9tX3MxNihkYXRhLT50ZW1wMTFbYXR0ci0+aW5kZXhdKTsKKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB0ZW1wKTsKIH0KIAogc3RhdGljIHNzaXplX3Qgc2V0X3RlbXAxMShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLApAQCAtMzE4LDEzICs0MzQsMjAgQEAKIAogCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlpZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxKQotCQlkYXRhLT50ZW1wMTFbbnJdID0gVEVNUDJfVE9fUkVHX0FEVDc0NjEodmFsKTsKKwkJZGF0YS0+dGVtcDExW25yXSA9IHRlbXBfdG9fdTE2X2FkdDc0NjEoZGF0YSwgdmFsKTsKKwllbHNlIGlmIChkYXRhLT5raW5kID09IG1heDY2NTcgfHwgZGF0YS0+a2luZCA9PSBtYXg2NjgwKQorCQlkYXRhLT50ZW1wMTFbbnJdID0gdGVtcF90b19zOCh2YWwpIDw8IDg7CisJZWxzZSBpZiAoZGF0YS0+a2luZCA9PSBtYXg2NjQ2KQorCQlkYXRhLT50ZW1wMTFbbnJdID0gdGVtcF90b191OCh2YWwpIDw8IDg7CiAJZWxzZQotCQlkYXRhLT50ZW1wMTFbbnJdID0gVEVNUDJfVE9fUkVHKHZhbCk7CisJCWRhdGEtPnRlbXAxMVtucl0gPSB0ZW1wX3RvX3MxNih2YWwpOworCiAJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZ1sobnIgLSAxKSAqIDJdLAogCQkJCSAgZGF0YS0+dGVtcDExW25yXSA+PiA4KTsKLQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnWyhuciAtIDEpICogMiArIDFdLAotCQkJCSAgZGF0YS0+dGVtcDExW25yXSAmIDB4ZmYpOworCWlmIChkYXRhLT5raW5kICE9IG1heDY2NTcgJiYgZGF0YS0+a2luZCAhPSBtYXg2NjgwCisJICAgICYmIGRhdGEtPmtpbmQgIT0gbWF4NjY0NikKKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZ1sobnIgLSAxKSAqIDIgKyAxXSwKKwkJCQkJICBkYXRhLT50ZW1wMTFbbnJdICYgMHhmZik7CiAJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAJcmV0dXJuIGNvdW50OwogfQpAQCAtMzM0LDggKzQ1NywxNCBAQAogewogCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsKIAlzdHJ1Y3QgbG05MF9kYXRhICpkYXRhID0gbG05MF91cGRhdGVfZGV2aWNlKGRldik7Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIFRFTVAxX0ZST01fUkVHKGRhdGEtPnRlbXA4W2F0dHItPmluZGV4XSkKLQkJICAgICAgIC0gVEVNUDFfRlJPTV9SRUcoZGF0YS0+dGVtcF9oeXN0KSk7CisJaW50IHRlbXA7CisKKwlpZiAoZGF0YS0+a2luZCA9PSBhZHQ3NDYxKQorCQl0ZW1wID0gdGVtcF9mcm9tX3U4X2FkdDc0NjEoZGF0YSwgZGF0YS0+dGVtcDhbYXR0ci0+aW5kZXhdKTsKKwllbHNlCisJCXRlbXAgPSB0ZW1wX2Zyb21fczgoZGF0YS0+dGVtcDhbYXR0ci0+aW5kZXhdKTsKKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB0ZW1wIC0gdGVtcF9mcm9tX3M4KGRhdGEtPnRlbXBfaHlzdCkpOwogfQogCiBzdGF0aWMgc3NpemVfdCBzZXRfdGVtcGh5c3Qoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZHVtbXksCkBAIC0zNDcsOSArNDc2LDkgQEAKIAlsb25nIGh5c3Q7CiAKIAltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7Ci0JaHlzdCA9IFRFTVAxX0ZST01fUkVHKGRhdGEtPnRlbXA4WzNdKSAtIHZhbDsKKwloeXN0ID0gdGVtcF9mcm9tX3M4KGRhdGEtPnRlbXA4WzJdKSAtIHZhbDsKIAlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgTE05MF9SRUdfV19UQ1JJVF9IWVNULAotCQkJCSAgSFlTVF9UT19SRUcoaHlzdCkpOworCQkJCSAgaHlzdF90b19yZWcoaHlzdCkpOwogCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCXJldHVybiBjb3VudDsKIH0KQEAgLTM3MSwyMyArNTAwLDIzIEBACiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIChkYXRhLT5hbGFybXMgPj4gYml0bnIpICYgMSk7CiB9CiAKLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfaW5wdXQsIFNfSVJVR08sIHNob3dfdGVtcDgsIE5VTEwsIDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9pbnB1dCwgU19JUlVHTywgc2hvd190ZW1wMTEsIE5VTEwsIDQpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9pbnB1dCwgU19JUlVHTywgc2hvd190ZW1wMTEsIE5VTEwsIDApOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X3RlbXA4LAotCXNldF90ZW1wOCwgMSk7CisJc2V0X3RlbXA4LCAwKTsKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDJfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd190ZW1wMTEsCiAJc2V0X3RlbXAxMSwgMSk7CiBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfdGVtcDgsCi0Jc2V0X3RlbXA4LCAyKTsKKwlzZXRfdGVtcDgsIDEpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X3RlbXAxMSwKIAlzZXRfdGVtcDExLCAyKTsKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfY3JpdCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfdGVtcDgsCi0Jc2V0X3RlbXA4LCAzKTsKKwlzZXRfdGVtcDgsIDIpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9jcml0LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd190ZW1wOCwKLQlzZXRfdGVtcDgsIDQpOworCXNldF90ZW1wOCwgMyk7CiBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2NyaXRfaHlzdCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfdGVtcGh5c3QsCi0Jc2V0X3RlbXBoeXN0LCAzKTsKLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDJfY3JpdF9oeXN0LCBTX0lSVUdPLCBzaG93X3RlbXBoeXN0LCBOVUxMLCA0KTsKKwlzZXRfdGVtcGh5c3QsIDIpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9jcml0X2h5c3QsIFNfSVJVR08sIHNob3dfdGVtcGh5c3QsIE5VTEwsIDMpOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9vZmZzZXQsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X3RlbXAxMSwKIAlzZXRfdGVtcDExLCAzKTsKIApAQCAtNTY4LDcgKzY5Nyw3IEBACiAJCQkJa2luZCA9IGFkbTEwMzI7CiAJCQl9IGVsc2UKIAkJCWlmIChjaGlwX2lkID09IDB4NTEgLyogQURUNzQ2MSAqLwotCQkJICYmIChyZWdfY29uZmlnMSAmIDB4MUYpID09IDB4MDAgLyogY2hlY2sgY29tcGF0IG1vZGUgKi8KKwkJCSAmJiAocmVnX2NvbmZpZzEgJiAweDFCKSA9PSAweDAwCiAJCQkgJiYgcmVnX2NvbnZyYXRlIDw9IDB4MEEpIHsKIAkJCQlraW5kID0gYWR0NzQ2MTsKIAkJCX0KQEAgLTU5OSwxMyArNzI4LDIzIEBACiAJCQkgJiYgKHJlZ19jb25maWcxICYgMHgwMykgPT0gMHgwMAogCQkJICYmIHJlZ19jb252cmF0ZSA8PSAweDA3KSB7CiAJCQkgCWtpbmQgPSBtYXg2NjgwOworCQkJfSBlbHNlCisJCQkvKiBUaGUgY2hpcF9pZCByZWdpc3RlciBvZiB0aGUgTUFYNjY0Ni82NjQ3LzY2NDkKKwkJCSAqIGhvbGRzIHRoZSByZXZpc2lvbiBvZiB0aGUgY2hpcC4KKwkJCSAqIFRoZSBsb3dlc3QgNiBiaXRzIG9mIHRoZSBjb25maWcxIHJlZ2lzdGVyIGFyZQorCQkJICogdW51c2VkIGFuZCBzaG91bGQgcmV0dXJuIHplcm8gd2hlbiByZWFkLgorCQkJICovCisJCQlpZiAoY2hpcF9pZCA9PSAweDU5CisJCQkgJiYgKHJlZ19jb25maWcxICYgMHgzZikgPT0gMHgwMAorCQkJICYmIHJlZ19jb252cmF0ZSA8PSAweDA3KSB7CisJCQkJa2luZCA9IG1heDY2NDY7CiAJCQl9CiAJCX0KIAogCQlpZiAoa2luZCA8PSAwKSB7IC8qIGlkZW50aWZpY2F0aW9uIGZhaWxlZCAqLwotCQkJZGV2X2luZm8oJmFkYXB0ZXItPmRldiwKLQkJCSAgICAiVW5zdXBwb3J0ZWQgY2hpcCAobWFuX2lkPTB4JTAyWCwgIgotCQkJICAgICJjaGlwX2lkPTB4JTAyWCkuXG4iLCBtYW5faWQsIGNoaXBfaWQpOworCQkJZGV2X2RiZygmYWRhcHRlci0+ZGV2LAorCQkJCSJVbnN1cHBvcnRlZCBjaGlwIGF0IDB4JTAyeCAobWFuX2lkPTB4JTAyWCwgIgorCQkJCSJjaGlwX2lkPTB4JTAyWClcbiIsIGFkZHJlc3MsIG1hbl9pZCwgY2hpcF9pZCk7CiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJfQogCX0KQEAgLTYyOSw2ICs3NjgsOCBAQAogCQluYW1lID0gIm1heDY2ODAiOwogCX0gZWxzZSBpZiAoa2luZCA9PSBhZHQ3NDYxKSB7CiAJCW5hbWUgPSAiYWR0NzQ2MSI7CisJfSBlbHNlIGlmIChraW5kID09IG1heDY2NDYpIHsKKwkJbmFtZSA9ICJtYXg2NjQ2IjsKIAl9CiAJc3RybGNweShpbmZvLT50eXBlLCBuYW1lLCBJMkNfTkFNRV9TSVpFKTsKIApAQCAtNjY4LDcgKzgwOSw3IEBACiAJCQkJCSAgICAgICZkZXZfYXR0cl9wZWMpKSkKIAkJCWdvdG8gZXhpdF9yZW1vdmVfZmlsZXM7CiAJfQotCWlmIChkYXRhLT5raW5kICE9IG1heDY2NTcpIHsKKwlpZiAoZGF0YS0+a2luZCAhPSBtYXg2NjU3ICYmIGRhdGEtPmtpbmQgIT0gbWF4NjY0NikgewogCQlpZiAoKGVyciA9IGRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAogCQkJCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfb2Zmc2V0LmRldl9hdHRyKSkpCiAJCQlnb3RvIGV4aXRfcmVtb3ZlX2ZpbGVzOwpAQCAtNzA3LDYgKzg0OCwxMiBAQAogCX0KIAljb25maWdfb3JpZyA9IGNvbmZpZzsKIAorCS8qIENoZWNrIFRlbXBlcmF0dXJlIFJhbmdlIFNlbGVjdCAqLworCWlmIChkYXRhLT5raW5kID09IGFkdDc0NjEpIHsKKwkJaWYgKGNvbmZpZyAmIDB4MDQpCisJCQlkYXRhLT5mbGFncyB8PSBMTTkwX0ZMQUdfQURUNzQ2MV9FWFQ7CisJfQorCiAJLyoKIAkgKiBQdXQgTUFYNjY4MC9NQVg4ODgxIGludG8gZXh0ZW5kZWQgcmVzb2x1dGlvbiAoYml0IDB4MTAsCiAJICogMC4xMjUgZGVncmVlIHJlc29sdXRpb24pIGFuZCByYW5nZSAoMHgwOCwgZXh0ZW5kIHJhbmdlCkBAIC03MjgsNyArODc1LDcgQEAKIAlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5od21vbl9kZXYpOwogCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmxtOTBfZ3JvdXApOwogCWRldmljZV9yZW1vdmVfZmlsZSgmY2xpZW50LT5kZXYsICZkZXZfYXR0cl9wZWMpOwotCWlmIChkYXRhLT5raW5kICE9IG1heDY2NTcpCisJaWYgKGRhdGEtPmtpbmQgIT0gbWF4NjY1NyAmJiBkYXRhLT5raW5kICE9IG1heDY2NDYpCiAJCWRldmljZV9yZW1vdmVfZmlsZSgmY2xpZW50LT5kZXYsCiAJCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMl9vZmZzZXQuZGV2X2F0dHIpOwogCkBAIC03MzYsNiArODgzLDM4IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgbG05MF9yZWFkMTYoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnaCwgdTggcmVnbCwgdTE2ICp2YWx1ZSkKK3sKKwlpbnQgZXJyOworCXU4IG9sZGgsIG5ld2gsIGw7CisKKwkvKgorCSAqIFRoZXJlIGlzIGEgdHJpY2sgaGVyZS4gV2UgaGF2ZSB0byByZWFkIHR3byByZWdpc3RlcnMgdG8gaGF2ZSB0aGUKKwkgKiBzZW5zb3IgdGVtcGVyYXR1cmUsIGJ1dCB3ZSBoYXZlIHRvIGJld2FyZSBhIGNvbnZlcnNpb24gY291bGQgb2NjdXIKKwkgKiBpbmJldHdlZW4gdGhlIHJlYWRpbmdzLiBUaGUgZGF0YXNoZWV0IHNheXMgd2Ugc2hvdWxkIGVpdGhlciB1c2UKKwkgKiB0aGUgb25lLXNob3QgY29udmVyc2lvbiByZWdpc3Rlciwgd2hpY2ggd2UgZG9uJ3Qgd2FudCB0byBkbworCSAqIChkaXNhYmxlcyBoYXJkd2FyZSBtb25pdG9yaW5nKSBvciBtb25pdG9yIHRoZSBidXN5IGJpdCwgd2hpY2ggaXMKKwkgKiBpbXBvc3NpYmxlICh3ZSBjYW4ndCByZWFkIHRoZSB2YWx1ZXMgYW5kIG1vbml0b3IgdGhhdCBiaXQgYXQgdGhlCisJICogZXhhY3Qgc2FtZSB0aW1lKS4gU28gdGhlIHNvbHV0aW9uIHVzZWQgaGVyZSBpcyB0byByZWFkIHRoZSBoaWdoCisJICogYnl0ZSBvbmNlLCB0aGVuIHRoZSBsb3cgYnl0ZSwgdGhlbiB0aGUgaGlnaCBieXRlIGFnYWluLiBJZiB0aGUgbmV3CisJICogaGlnaCBieXRlIG1hdGNoZXMgdGhlIG9sZCBvbmUsIHRoZW4gd2UgaGF2ZSBhIHZhbGlkIHJlYWRpbmcuIEVsc2UKKwkgKiB3ZSBoYXZlIHRvIHJlYWQgdGhlIGxvdyBieXRlIGFnYWluLCBhbmQgbm93IHdlIGJlbGlldmUgd2UgaGF2ZSBhCisJICogY29ycmVjdCByZWFkaW5nLgorCSAqLworCWlmICgoZXJyID0gbG05MF9yZWFkX3JlZyhjbGllbnQsIHJlZ2gsICZvbGRoKSkKKwkgfHwgKGVyciA9IGxtOTBfcmVhZF9yZWcoY2xpZW50LCByZWdsLCAmbCkpCisJIHx8IChlcnIgPSBsbTkwX3JlYWRfcmVnKGNsaWVudCwgcmVnaCwgJm5ld2gpKSkKKwkJcmV0dXJuIGVycjsKKwlpZiAob2xkaCAhPSBuZXdoKSB7CisJCWVyciA9IGxtOTBfcmVhZF9yZWcoY2xpZW50LCByZWdsLCAmbCk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCX0KKwkqdmFsdWUgPSAobmV3aCA8PCA4KSB8IGw7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHN0cnVjdCBsbTkwX2RhdGEgKmxtOTBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKQEAgLTc0NCw0OSArOTIzLDUwIEBACiAJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCiAJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgZGF0YS0+bGFzdF91cGRhdGVkICsgSFogKiAyKSB8fCAhZGF0YS0+dmFsaWQpIHsKLQkJdTggb2xkaCwgbmV3aCwgbDsKKwkJdTggaCwgbDsKIAogCQlkZXZfZGJnKCZjbGllbnQtPmRldiwgIlVwZGF0aW5nIGxtOTAgZGF0YS5cbiIpOwotCQlsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9MT0NBTF9URU1QLCAmZGF0YS0+dGVtcDhbMF0pOwotCQlsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9MT0NBTF9MT1csICZkYXRhLT50ZW1wOFsxXSk7Ci0JCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0xPQ0FMX0hJR0gsICZkYXRhLT50ZW1wOFsyXSk7Ci0JCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0xPQ0FMX0NSSVQsICZkYXRhLT50ZW1wOFszXSk7Ci0JCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9DUklULCAmZGF0YS0+dGVtcDhbNF0pOworCQlsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9MT0NBTF9MT1csICZkYXRhLT50ZW1wOFswXSk7CisJCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0xPQ0FMX0hJR0gsICZkYXRhLT50ZW1wOFsxXSk7CisJCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX0xPQ0FMX0NSSVQsICZkYXRhLT50ZW1wOFsyXSk7CisJCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9DUklULCAmZGF0YS0+dGVtcDhbM10pOwogCQlsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9UQ1JJVF9IWVNULCAmZGF0YS0+dGVtcF9oeXN0KTsKIAotCQkvKgotCQkgKiBUaGVyZSBpcyBhIHRyaWNrIGhlcmUuIFdlIGhhdmUgdG8gcmVhZCB0d28gcmVnaXN0ZXJzIHRvCi0JCSAqIGhhdmUgdGhlIHJlbW90ZSBzZW5zb3IgdGVtcGVyYXR1cmUsIGJ1dCB3ZSBoYXZlIHRvIGJld2FyZQotCQkgKiBhIGNvbnZlcnNpb24gY291bGQgb2NjdXIgaW5iZXR3ZWVuIHRoZSByZWFkaW5ncy4gVGhlCi0JCSAqIGRhdGFzaGVldCBzYXlzIHdlIHNob3VsZCBlaXRoZXIgdXNlIHRoZSBvbmUtc2hvdAotCQkgKiBjb252ZXJzaW9uIHJlZ2lzdGVyLCB3aGljaCB3ZSBkb24ndCB3YW50IHRvIGRvIChkaXNhYmxlcwotCQkgKiBoYXJkd2FyZSBtb25pdG9yaW5nKSBvciBtb25pdG9yIHRoZSBidXN5IGJpdCwgd2hpY2ggaXMKLQkJICogaW1wb3NzaWJsZSAod2UgY2FuJ3QgcmVhZCB0aGUgdmFsdWVzIGFuZCBtb25pdG9yIHRoYXQgYml0Ci0JCSAqIGF0IHRoZSBleGFjdCBzYW1lIHRpbWUpLiBTbyB0aGUgc29sdXRpb24gdXNlZCBoZXJlIGlzIHRvCi0JCSAqIHJlYWQgdGhlIGhpZ2ggYnl0ZSBvbmNlLCB0aGVuIHRoZSBsb3cgYnl0ZSwgdGhlbiB0aGUgaGlnaAotCQkgKiBieXRlIGFnYWluLiBJZiB0aGUgbmV3IGhpZ2ggYnl0ZSBtYXRjaGVzIHRoZSBvbGQgb25lLAotCQkgKiB0aGVuIHdlIGhhdmUgYSB2YWxpZCByZWFkaW5nLiBFbHNlIHdlIGhhdmUgdG8gcmVhZCB0aGUgbG93Ci0JCSAqIGJ5dGUgYWdhaW4sIGFuZCBub3cgd2UgYmVsaWV2ZSB3ZSBoYXZlIGEgY29ycmVjdCByZWFkaW5nLgotCQkgKi8KLQkJaWYgKGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9URU1QSCwgJm9sZGgpID09IDAKLQkJICYmIGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9URU1QTCwgJmwpID09IDAKLQkJICYmIGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9URU1QSCwgJm5ld2gpID09IDAKLQkJICYmIChuZXdoID09IG9sZGgKLQkJICB8fCBsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfVEVNUEwsICZsKSA9PSAwKSkKLQkJCWRhdGEtPnRlbXAxMVswXSA9IChuZXdoIDw8IDgpIHwgbDsKKwkJaWYgKGRhdGEtPmtpbmQgPT0gbWF4NjY1NyB8fCBkYXRhLT5raW5kID09IG1heDY2NDYpIHsKKwkJCWxtOTBfcmVhZDE2KGNsaWVudCwgTE05MF9SRUdfUl9MT0NBTF9URU1QLAorCQkJCSAgICBNQVg2NjU3X1JFR19SX0xPQ0FMX1RFTVBMLAorCQkJCSAgICAmZGF0YS0+dGVtcDExWzRdKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9MT0NBTF9URU1QLAorCQkJCQkgICZoKSA9PSAwKQorCQkJCWRhdGEtPnRlbXAxMVs0XSA9IGggPDwgODsKKwkJfQorCQlsbTkwX3JlYWQxNihjbGllbnQsIExNOTBfUkVHX1JfUkVNT1RFX1RFTVBILAorCQkJICAgIExNOTBfUkVHX1JfUkVNT1RFX1RFTVBMLCAmZGF0YS0+dGVtcDExWzBdKTsKIAotCQlpZiAobG05MF9yZWFkX3JlZyhjbGllbnQsIExNOTBfUkVHX1JfUkVNT1RFX0xPV0gsICZuZXdoKSA9PSAwCi0JCSAmJiBsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfTE9XTCwgJmwpID09IDApCi0JCQlkYXRhLT50ZW1wMTFbMV0gPSAobmV3aCA8PCA4KSB8IGw7Ci0JCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfSElHSEgsICZuZXdoKSA9PSAwCi0JCSAmJiBsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfSElHSEwsICZsKSA9PSAwKQotCQkJZGF0YS0+dGVtcDExWzJdID0gKG5ld2ggPDwgOCkgfCBsOwotCQlpZiAoZGF0YS0+a2luZCAhPSBtYXg2NjU3KSB7CisJCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfTE9XSCwgJmgpID09IDApIHsKKwkJCWRhdGEtPnRlbXAxMVsxXSA9IGggPDwgODsKKwkJCWlmIChkYXRhLT5raW5kICE9IG1heDY2NTcgJiYgZGF0YS0+a2luZCAhPSBtYXg2NjgwCisJCQkgJiYgZGF0YS0+a2luZCAhPSBtYXg2NjQ2CisJCQkgJiYgbG05MF9yZWFkX3JlZyhjbGllbnQsIExNOTBfUkVHX1JfUkVNT1RFX0xPV0wsCisJCQkJCSAgJmwpID09IDApCisJCQkJZGF0YS0+dGVtcDExWzFdIHw9IGw7CisJCX0KKwkJaWYgKGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9ISUdISCwgJmgpID09IDApIHsKKwkJCWRhdGEtPnRlbXAxMVsyXSA9IGggPDwgODsKKwkJCWlmIChkYXRhLT5raW5kICE9IG1heDY2NTcgJiYgZGF0YS0+a2luZCAhPSBtYXg2NjgwCisJCQkgJiYgZGF0YS0+a2luZCAhPSBtYXg2NjQ2CisJCQkgJiYgbG05MF9yZWFkX3JlZyhjbGllbnQsIExNOTBfUkVHX1JfUkVNT1RFX0hJR0hMLAorCQkJCQkgICZsKSA9PSAwKQorCQkJCWRhdGEtPnRlbXAxMVsyXSB8PSBsOworCQl9CisKKwkJaWYgKGRhdGEtPmtpbmQgIT0gbWF4NjY1NyAmJiBkYXRhLT5raW5kICE9IG1heDY2NDYpIHsKIAkJCWlmIChsbTkwX3JlYWRfcmVnKGNsaWVudCwgTE05MF9SRUdfUl9SRU1PVEVfT0ZGU0gsCi0JCQkJCSAgJm5ld2gpID09IDAKKwkJCQkJICAmaCkgPT0gMAogCQkJICYmIGxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1JFTU9URV9PRkZTTCwKIAkJCQkJICAmbCkgPT0gMCkKLQkJCQlkYXRhLT50ZW1wMTFbM10gPSAobmV3aCA8PCA4KSB8IGw7CisJCQkJZGF0YS0+dGVtcDExWzNdID0gKGggPDwgOCkgfCBsOwogCQl9CiAJCWxtOTBfcmVhZF9yZWcoY2xpZW50LCBMTTkwX1JFR19SX1NUQVRVUywgJmRhdGEtPmFsYXJtcyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKaW5kZXggMWFiMWNhYy4uNzg5Nzc1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTY5LDExICs2OSwxOCBAQAogI2RlZmluZSBNQVgxNjE5X1JFR19XX1RDUklUX0hZU1QJMHgxMwogCiAvKgotICogQ29udmVyc2lvbnMgYW5kIHZhcmlvdXMgbWFjcm9zCisgKiBDb252ZXJzaW9ucwogICovCiAKLSNkZWZpbmUgVEVNUF9GUk9NX1JFRyh2YWwpCSgodmFsICYgMHg4MCA/IHZhbC0weDEwMCA6IHZhbCkgKiAxMDAwKQotI2RlZmluZSBURU1QX1RPX1JFRyh2YWwpCSgodmFsIDwgMCA/IHZhbCsweDEwMCoxMDAwIDogdmFsKSAvIDEwMDApCitzdGF0aWMgaW50IHRlbXBfZnJvbV9yZWcoaW50IHZhbCkKK3sKKwlyZXR1cm4gKHZhbCAmIDB4ODAgPyB2YWwtMHgxMDAgOiB2YWwpICogMTAwMDsKK30KKworc3RhdGljIGludCB0ZW1wX3RvX3JlZyhpbnQgdmFsKQoreworCXJldHVybiAodmFsIDwgMCA/IHZhbCsweDEwMCoxMDAwIDogdmFsKSAvIDEwMDA7Cit9CiAKIC8qCiAgKiBGdW5jdGlvbnMgZGVjbGFyYXRpb24KQEAgLTEzNSw3ICsxNDIsNyBAQAogc3RhdGljIHNzaXplX3Qgc2hvd18jI3ZhbHVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikgXAogeyBcCiAJc3RydWN0IG1heDE2MTlfZGF0YSAqZGF0YSA9IG1heDE2MTlfdXBkYXRlX2RldmljZShkZXYpOyBcCi0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIFRFTVBfRlJPTV9SRUcoZGF0YS0+dmFsdWUpKTsgXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB0ZW1wX2Zyb21fcmVnKGRhdGEtPnZhbHVlKSk7IFwKIH0KIHNob3dfdGVtcCh0ZW1wX2lucHV0MSk7CiBzaG93X3RlbXAodGVtcF9pbnB1dDIpOwpAQCAtMTUzLDcgKzE2MCw3IEBACiAJbG9uZyB2YWwgPSBzaW1wbGVfc3RydG9sKGJ1ZiwgTlVMTCwgMTApOyBcCiAgXAogCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsgXAotCWRhdGEtPnZhbHVlID0gVEVNUF9UT19SRUcodmFsKTsgXAorCWRhdGEtPnZhbHVlID0gdGVtcF90b19yZWcodmFsKTsgXAogCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcsIGRhdGEtPnZhbHVlKTsgXAogCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOyBcCiAJcmV0dXJuIGNvdW50OyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYyBiL2RyaXZlcnMvaHdtb24vdzgzNzgxZC5jCmluZGV4IGY5NDJlY2QuLmQ0ZDFiODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzgxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzgxZC5jCkBAIC00LDcgKzQsNyBAQAogICAgIENvcHlyaWdodCAoYykgMTk5OCAtIDIwMDEgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPgotICAgIENvcHlyaWdodCAoYykgMjAwNyAgICAgICAgIEplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPgorICAgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMDggIEplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPgogCiAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMzgsMjUgKzM4LDI0IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9od21vbi5oPgogI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXZpZC5oPgogI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgotI2luY2x1ZGUgPGFzbS9pby5oPgotI2luY2x1ZGUgImxtNzUuaCIKIAotLyogSVNBIGRldmljZSwgaWYgZm91bmQgKi8KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OworI2lmZGVmIENPTkZJR19JU0EKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAibG03NS5oIgogCiAvKiBBZGRyZXNzZXMgdG8gc2NhbiAqLwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgMHgyOCwgMHgyOSwgMHgyYSwgMHgyYiwgMHgyYywgMHgyZCwKIAkJCQkJCTB4MmUsIDB4MmYsIEkyQ19DTElFTlRfRU5EIH07Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaXNhX2FkZHJlc3MgPSAweDI5MDsKLQogLyogSW5zbW9kIHBhcmFtZXRlcnMgKi8KIEkyQ19DTElFTlRfSU5TTU9EXzQodzgzNzgxZCwgdzgzNzgyZCwgdzgzNzgzcywgYXM5OTEyN2YpOwogSTJDX0NMSUVOVF9NT0RVTEVfUEFSTShmb3JjZV9zdWJjbGllbnRzLCAiTGlzdCBvZiBzdWJjbGllbnQgYWRkcmVzc2VzOiAiCkBAIC0xNzgsOSArMTc3LDkgQEAKICNkZWZpbmUgVEVNUF9GUk9NX1JFRyh2YWwpCQkoKHZhbCkgKiAxMDAwKQogCiAjZGVmaW5lIEJFRVBfTUFTS19GUk9NX1JFRyh2YWwsdHlwZSkJKCh0eXBlKSA9PSBhczk5MTI3ZiA/IFwKLQkJCQkJICh2YWwpIF4gMHg3ZmZmIDogKHZhbCkpCisJCQkJCSAofih2YWwpKSAmIDB4N2ZmZiA6ICh2YWwpICYgMHhmZjdmZmYpCiAjZGVmaW5lIEJFRVBfTUFTS19UT19SRUcodmFsLHR5cGUpCSgodHlwZSkgPT0gYXM5OTEyN2YgPyBcCi0JCQkJCSAofih2YWwpKSAmIDB4N2ZmZiA6ICh2YWwpICYgMHhmZmZmZmYpCisJCQkJCSAofih2YWwpKSAmIDB4N2ZmZiA6ICh2YWwpICYgMHhmZjdmZmYpCiAKICNkZWZpbmUgRElWX0ZST01fUkVHKHZhbCkJCSgxIDw8ICh2YWwpKQogCkBAIC0xOTksMjUgKzE5OCwxNiBAQAogCXJldHVybiBpOwogfQogCi0vKiBUaGVyZSBhcmUgc29tZSBjb21wbGljYXRpb25zIGluIGEgbW9kdWxlIGxpa2UgdGhpcy4gRmlyc3Qgb2ZmLCBXODM3ODFEIGNoaXBzCi0gICBtYXkgYmUgYm90aCBwcmVzZW50IG9uIHRoZSBTTUJ1cyBhbmQgdGhlIElTQSBidXMsIGFuZCB3ZSBoYXZlIHRvIGhhbmRsZQotICAgdGhvc2UgY2FzZXMgc2VwYXJhdGVseSBhdCBzb21lIHBsYWNlcy4gU2Vjb25kLCB0aGVyZSBtaWdodCBiZSBzZXZlcmFsCi0gICBXODM3ODFEIGNoaXBzIGF2YWlsYWJsZSAod2VsbCwgYWN0dWFsbHksIHRoYXQgaXMgcHJvYmFibHkgbmV2ZXIgZG9uZTsgYnV0Ci0gICBpdCBpcyBhIGNsZWFuIGlsbHVzdHJhdGlvbiBvZiBob3cgdG8gaGFuZGxlIGEgY2FzZSBsaWtlIHRoYXQpLiBGaW5hbGx5LAotICAgYSBzcGVjaWZpYyBjaGlwIG1heSBiZSBhdHRhY2hlZCB0byAqYm90aCogSVNBIGFuZCBTTUJ1cywgYW5kIHdlIHdvdWxkCi0gICBub3QgbGlrZSB0byBkZXRlY3QgaXQgZG91YmxlLiBGb3J0dW5hdGVseSwgaW4gdGhlIGNhc2Ugb2YgdGhlIFc4Mzc4MUQgYXQKLSAgIGxlYXN0LCBhIHJlZ2lzdGVyIHRlbGxzIHVzIHdoYXQgU01CdXMgYWRkcmVzcyB3ZSBhcmUgb24sIHNvIHRoYXQgaGVscHMKLSAgIGEgYml0IC0gZXhjZXB0IGlmIHRoZXJlIGNvdWxkIGJlIG1vcmUgdGhhbiBvbmUgU01CdXMuIEdyb2FuLiBObyBzb2x1dGlvbgotICAgZm9yIHRoaXMgeWV0LiAqLwotCi0vKiBGb3IgSVNBIGNoaXBzLCB3ZSBhYnVzZSB0aGUgaTJjX2NsaWVudCBhZGRyIGFuZCBuYW1lIGZpZWxkcy4gV2UgYWxzbyB1c2UKLSAgIHRoZSBkcml2ZXIgZmllbGQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIEkyQyBhbmQgSVNBIGNoaXBzLiAqLwogc3RydWN0IHc4Mzc4MWRfZGF0YSB7Ci0Jc3RydWN0IGkyY19jbGllbnQgY2xpZW50OworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IGRldmljZSAqaHdtb25fZGV2OwogCXN0cnVjdCBtdXRleCBsb2NrOwogCWVudW0gY2hpcHMgdHlwZTsKIAorCS8qIEZvciBJU0EgZGV2aWNlIG9ubHkgKi8KKwljb25zdCBjaGFyICpuYW1lOworCWludCBpc2FfYWRkcjsKKwogCXN0cnVjdCBtdXRleCB1cGRhdGVfbG9jazsKIAljaGFyIHZhbGlkOwkJLyogIT0wIGlmIGZvbGxvd2luZyBmaWVsZHMgYXJlIHZhbGlkICovCiAJdW5zaWduZWQgbG9uZyBsYXN0X3VwZGF0ZWQ7CS8qIEluIGppZmZpZXMgKi8KQEAgLTI0MCw3ICsyMzAsNiBAQAogCXU4IHZpZDsJCQkvKiBSZWdpc3RlciBlbmNvZGluZywgY29tYmluZWQgKi8KIAl1MzIgYWxhcm1zOwkJLyogUmVnaXN0ZXIgZW5jb2RpbmcsIGNvbWJpbmVkICovCiAJdTMyIGJlZXBfbWFzazsJCS8qIFJlZ2lzdGVyIGVuY29kaW5nLCBjb21iaW5lZCAqLwotCXU4IGJlZXBfZW5hYmxlOwkJLyogQm9vbGVhbiAqLwogCXU4IHB3bVs0XTsJCS8qIFJlZ2lzdGVyIHZhbHVlICovCiAJdTggcHdtMl9lbmFibGU7CQkvKiBCb29sZWFuICovCiAJdTE2IHNlbnNbM107CQkvKiA3ODJELzc4M1Mgb25seS4KQEAgLTI0OSwzNiArMjM4LDE0IEBACiAJdTggdnJtOwogfTsKIAotc3RhdGljIGludCB3ODM3ODFkX2F0dGFjaF9hZGFwdGVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Ci1zdGF0aWMgaW50IHc4Mzc4MWRfZGV0ZWN0KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgaW50IGFkZHJlc3MsIGludCBraW5kKTsKLXN0YXRpYyBpbnQgdzgzNzgxZF9kZXRhY2hfY2xpZW50KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwotCi1zdGF0aWMgaW50IF9fZGV2aW5pdCB3ODM3ODFkX2lzYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsKLXN0YXRpYyBpbnQgX19kZXZleGl0IHc4Mzc4MWRfaXNhX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsKK3N0YXRpYyBzdHJ1Y3QgdzgzNzgxZF9kYXRhICp3ODM3ODFkX2RhdGFfaWZfaXNhKHZvaWQpOworc3RhdGljIGludCB3ODM3ODFkX2FsaWFzX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBjaGlwaWQpOwogCiBzdGF0aWMgaW50IHc4Mzc4MWRfcmVhZF92YWx1ZShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnKTsKIHN0YXRpYyBpbnQgdzgzNzgxZF93cml0ZV92YWx1ZShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnLCB1MTYgdmFsdWUpOwogc3RhdGljIHN0cnVjdCB3ODM3ODFkX2RhdGEgKnc4Mzc4MWRfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogc3RhdGljIHZvaWQgdzgzNzgxZF9pbml0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogCi1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgdzgzNzgxZF9kcml2ZXIgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAidzgzNzgxZCIsCi0JfSwKLQkuYXR0YWNoX2FkYXB0ZXIgPSB3ODM3ODFkX2F0dGFjaF9hZGFwdGVyLAotCS5kZXRhY2hfY2xpZW50ID0gdzgzNzgxZF9kZXRhY2hfY2xpZW50LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdzgzNzgxZF9pc2FfZHJpdmVyID0gewotCS5kcml2ZXIgPSB7Ci0JCS5vd25lciA9IFRISVNfTU9EVUxFLAotCQkubmFtZSA9ICJ3ODM3ODFkIiwKLQl9LAotCS5wcm9iZSA9IHc4Mzc4MWRfaXNhX3Byb2JlLAotCS5yZW1vdmUgPSB3ODM3ODFkX2lzYV9yZW1vdmUsCi19OwotCi0KIC8qIGZvbGxvd2luZyBhcmUgdGhlIHN5c2ZzIGNhbGxiYWNrIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBzaG93X2luX3JlZyhyZWcpIFwKIHN0YXRpYyBzc2l6ZV90IHNob3dfIyNyZWcgKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRhLCBcCkBAIC01MTMsMTEgKzQ4MCw2IEBACiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLAogCQkgICAgICAgKGxvbmcpQkVFUF9NQVNLX0ZST01fUkVHKGRhdGEtPmJlZXBfbWFzaywgZGF0YS0+dHlwZSkpOwogfQotc3RhdGljIHNzaXplX3Qgc2hvd19iZWVwX2VuYWJsZSAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEgPSB3ODM3ODFkX3VwZGF0ZV9kZXZpY2UoZGV2KTsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIChsb25nKWRhdGEtPmJlZXBfZW5hYmxlKTsKLX0KIAogc3RhdGljIHNzaXplX3QKIHN0b3JlX2JlZXBfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLApAQCAtNTI5LDEyICs0OTEsMTIgQEAKIAl2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKIAogCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKLQlkYXRhLT5iZWVwX21hc2sgPSBCRUVQX01BU0tfVE9fUkVHKHZhbCwgZGF0YS0+dHlwZSk7CisJZGF0YS0+YmVlcF9tYXNrICY9IDB4ODAwMDsgLyogcHJlc2VydmUgYmVlcCBlbmFibGUgKi8KKwlkYXRhLT5iZWVwX21hc2sgfD0gQkVFUF9NQVNLX1RPX1JFRyh2YWwsIGRhdGEtPnR5cGUpOwogCXc4Mzc4MWRfd3JpdGVfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQkVFUF9JTlRTMSwKIAkJCSAgICBkYXRhLT5iZWVwX21hc2sgJiAweGZmKTsKIAl3ODM3ODFkX3dyaXRlX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JFRVBfSU5UUzIsCi0JCQkgICAgKChkYXRhLT5iZWVwX21hc2sgPj4gOCkgJiAweDdmKQotCQkJICAgIHwgZGF0YS0+YmVlcF9lbmFibGUgPDwgNyk7CisJCQkgICAgKGRhdGEtPmJlZXBfbWFzayA+PiA4KSAmIDB4ZmYpOwogCWlmIChkYXRhLT50eXBlICE9IHc4Mzc4MWQgJiYgZGF0YS0+dHlwZSAhPSBhczk5MTI3ZikgewogCQl3ODM3ODFkX3dyaXRlX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JFRVBfSU5UUzMsCiAJCQkJICAgICgoZGF0YS0+YmVlcF9tYXNrKSA+PiAxNikgJiAweGZmKTsKQEAgLTU0NCwzMSArNTA2LDggQEAKIAlyZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRpYyBzc2l6ZV90Ci1zdG9yZV9iZWVwX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAotCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Ci0JdTMyIHZhbDsKLQotCXZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOwotCWlmICh2YWwgIT0gMCAmJiB2YWwgIT0gMSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7Ci0JZGF0YS0+YmVlcF9lbmFibGUgPSB2YWw7Ci0JdmFsID0gdzgzNzgxZF9yZWFkX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JFRVBfSU5UUzIpICYgMHg3ZjsKLQl2YWwgfD0gZGF0YS0+YmVlcF9lbmFibGUgPDwgNzsKLQl3ODM3ODFkX3dyaXRlX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JFRVBfSU5UUzIsIHZhbCk7Ci0JbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7Ci0KLQlyZXR1cm4gY291bnQ7Ci19Ci0KIHN0YXRpYyBERVZJQ0VfQVRUUihiZWVwX21hc2ssIFNfSVJVR08gfCBTX0lXVVNSLAogCQlzaG93X2JlZXBfbWFzaywgc3RvcmVfYmVlcF9tYXNrKTsKLXN0YXRpYyBERVZJQ0VfQVRUUihiZWVwX2VuYWJsZSwgU19JUlVHTyB8IFNfSVdVU1IsCi0JCXNob3dfYmVlcF9lbmFibGUsIHN0b3JlX2JlZXBfZW5hYmxlKTsKIAogc3RhdGljIHNzaXplX3Qgc2hvd19iZWVwKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCWNoYXIgKmJ1ZikKQEAgLTY2Myw2ICs2MDIsOCBAQAogCQkJc2hvd19iZWVwLCBzdG9yZV9iZWVwLCA1KTsKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDNfYmVlcCwgU19JUlVHTywKIAkJCXNob3dfdGVtcDNfYmVlcCwgc3RvcmVfYmVlcCwgMTMpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihiZWVwX2VuYWJsZSwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQlzaG93X2JlZXAsIHN0b3JlX2JlZXAsIDE1KTsKIAogc3RhdGljIHNzaXplX3QKIHNob3dfZmFuX2RpdihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwgY2hhciAqYnVmKQpAQCAtODY2LDQ1ICs4MDcsMTkgQEAKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDNfdHlwZSwgU19JUlVHTyB8IFNfSVdVU1IsCiAJc2hvd19zZW5zb3IsIHN0b3JlX3NlbnNvciwgMik7CiAKLS8qIEkyQyBkZXZpY2VzIGdldCB0aGlzIG5hbWUgYXR0cmlidXRlIGF1dG9tYXRpY2FsbHksIGJ1dCBmb3IgSVNBIGRldmljZXMKLSAgIHdlIG11c3QgY3JlYXRlIGl0IGJ5IG91cnNlbHZlcy4gKi8KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQotewotCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgZGF0YS0+Y2xpZW50Lm5hbWUpOwotfQotc3RhdGljIERFVklDRV9BVFRSKG5hbWUsIFNfSVJVR08sIHNob3dfbmFtZSwgTlVMTCk7Ci0KLS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW46Ci0gICAgICogdzgzNzgxZF9kcml2ZXIgaXMgaW5zZXJ0ZWQgKHdoZW4gdGhpcyBtb2R1bGUgaXMgbG9hZGVkKSwgZm9yIGVhY2gKLSAgICAgICBhdmFpbGFibGUgYWRhcHRlcgotICAgICAqIHdoZW4gYSBuZXcgYWRhcHRlciBpcyBpbnNlcnRlZCAoYW5kIHc4Mzc4MWRfZHJpdmVyIGlzIHN0aWxsIHByZXNlbnQpICovCi1zdGF0aWMgaW50Ci13ODM3ODFkX2F0dGFjaF9hZGFwdGVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKLXsKLQlpZiAoIShhZGFwdGVyLT5jbGFzcyAmIEkyQ19DTEFTU19IV01PTikpCi0JCXJldHVybiAwOwotCXJldHVybiBpMmNfcHJvYmUoYWRhcHRlciwgJmFkZHJfZGF0YSwgdzgzNzgxZF9kZXRlY3QpOwotfQotCiAvKiBBc3N1bWVzIHRoYXQgYWRhcHRlciBpcyBvZiBJMkMsIG5vdCBJU0EgdmFyaWV0eS4KICAqIE9USEVSV0lTRSBET04nVCBDQUxMIFRISVMKICAqLwogc3RhdGljIGludAotdzgzNzgxZF9kZXRlY3Rfc3ViY2xpZW50cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBhZGRyZXNzLCBpbnQga2luZCwKLQkJc3RydWN0IGkyY19jbGllbnQgKm5ld19jbGllbnQpCit3ODM3ODFkX2RldGVjdF9zdWJjbGllbnRzKHN0cnVjdCBpMmNfY2xpZW50ICpuZXdfY2xpZW50KQogewogCWludCBpLCB2YWwxID0gMCwgaWQ7CiAJaW50IGVycjsKLQljb25zdCBjaGFyICpjbGllbnRfbmFtZSA9ICIiOworCWludCBhZGRyZXNzID0gbmV3X2NsaWVudC0+YWRkcjsKKwl1bnNpZ25lZCBzaG9ydCBzY19hZGRyWzJdOworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IG5ld19jbGllbnQtPmFkYXB0ZXI7CiAJc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShuZXdfY2xpZW50KTsKLQotCWRhdGEtPmxtNzVbMF0gPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICghKGRhdGEtPmxtNzVbMF0pKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gRVJST1JfU0NfMDsKLQl9CisJZW51bSBjaGlwcyBraW5kID0gZGF0YS0+dHlwZTsKIAogCWlkID0gaTJjX2FkYXB0ZXJfaWQoYWRhcHRlcik7CiAKQEAgLTkyMiw1NSArODM3LDM1IEBACiAJCXc4Mzc4MWRfd3JpdGVfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfSTJDX1NVQkFERFIsCiAJCQkJKGZvcmNlX3N1YmNsaWVudHNbMl0gJiAweDA3KSB8CiAJCQkJKChmb3JjZV9zdWJjbGllbnRzWzNdICYgMHgwNykgPDwgNCkpOwotCQlkYXRhLT5sbTc1WzBdLT5hZGRyID0gZm9yY2Vfc3ViY2xpZW50c1syXTsKKwkJc2NfYWRkclswXSA9IGZvcmNlX3N1YmNsaWVudHNbMl07CiAJfSBlbHNlIHsKIAkJdmFsMSA9IHc4Mzc4MWRfcmVhZF92YWx1ZShkYXRhLCBXODM3ODFEX1JFR19JMkNfU1VCQUREUik7Ci0JCWRhdGEtPmxtNzVbMF0tPmFkZHIgPSAweDQ4ICsgKHZhbDEgJiAweDA3KTsKKwkJc2NfYWRkclswXSA9IDB4NDggKyAodmFsMSAmIDB4MDcpOwogCX0KIAogCWlmIChraW5kICE9IHc4Mzc4M3MpIHsKLQkJZGF0YS0+bG03NVsxXSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghKGRhdGEtPmxtNzVbMV0pKSB7Ci0JCQllcnIgPSAtRU5PTUVNOwotCQkJZ290byBFUlJPUl9TQ18xOwotCQl9Ci0KIAkJaWYgKGZvcmNlX3N1YmNsaWVudHNbMF0gPT0gaWQgJiYKIAkJICAgIGZvcmNlX3N1YmNsaWVudHNbMV0gPT0gYWRkcmVzcykgewotCQkJZGF0YS0+bG03NVsxXS0+YWRkciA9IGZvcmNlX3N1YmNsaWVudHNbM107CisJCQlzY19hZGRyWzFdID0gZm9yY2Vfc3ViY2xpZW50c1szXTsKIAkJfSBlbHNlIHsKLQkJCWRhdGEtPmxtNzVbMV0tPmFkZHIgPSAweDQ4ICsgKCh2YWwxID4+IDQpICYgMHgwNyk7CisJCQlzY19hZGRyWzFdID0gMHg0OCArICgodmFsMSA+PiA0KSAmIDB4MDcpOwogCQl9Ci0JCWlmIChkYXRhLT5sbTc1WzBdLT5hZGRyID09IGRhdGEtPmxtNzVbMV0tPmFkZHIpIHsKKwkJaWYgKHNjX2FkZHJbMF0gPT0gc2NfYWRkclsxXSkgewogCQkJZGV2X2VycigmbmV3X2NsaWVudC0+ZGV2LAogCQkJICAgICAgICJEdXBsaWNhdGUgYWRkcmVzc2VzIDB4JXggZm9yIHN1YmNsaWVudHMuXG4iLAotCQkJICAgICAgIGRhdGEtPmxtNzVbMF0tPmFkZHIpOworCQkJICAgICAgIHNjX2FkZHJbMF0pOwogCQkJZXJyID0gLUVCVVNZOwogCQkJZ290byBFUlJPUl9TQ18yOwogCQl9CiAJfQogCi0JaWYgKGtpbmQgPT0gdzgzNzgxZCkKLQkJY2xpZW50X25hbWUgPSAidzgzNzgxZCBzdWJjbGllbnQiOwotCWVsc2UgaWYgKGtpbmQgPT0gdzgzNzgyZCkKLQkJY2xpZW50X25hbWUgPSAidzgzNzgyZCBzdWJjbGllbnQiOwotCWVsc2UgaWYgKGtpbmQgPT0gdzgzNzgzcykKLQkJY2xpZW50X25hbWUgPSAidzgzNzgzcyBzdWJjbGllbnQiOwotCWVsc2UgaWYgKGtpbmQgPT0gYXM5OTEyN2YpCi0JCWNsaWVudF9uYW1lID0gImFzOTkxMjdmIHN1YmNsaWVudCI7Ci0KIAlmb3IgKGkgPSAwOyBpIDw9IDE7IGkrKykgewotCQkvKiBzdG9yZSBhbGwgZGF0YSBpbiB3ODM3ODFkICovCi0JCWkyY19zZXRfY2xpZW50ZGF0YShkYXRhLT5sbTc1W2ldLCBOVUxMKTsKLQkJZGF0YS0+bG03NVtpXS0+YWRhcHRlciA9IGFkYXB0ZXI7Ci0JCWRhdGEtPmxtNzVbaV0tPmRyaXZlciA9ICZ3ODM3ODFkX2RyaXZlcjsKLQkJZGF0YS0+bG03NVtpXS0+ZmxhZ3MgPSAwOwotCQlzdHJsY3B5KGRhdGEtPmxtNzVbaV0tPm5hbWUsIGNsaWVudF9uYW1lLAotCQkJSTJDX05BTUVfU0laRSk7Ci0JCWlmICgoZXJyID0gaTJjX2F0dGFjaF9jbGllbnQoZGF0YS0+bG03NVtpXSkpKSB7CisJCWRhdGEtPmxtNzVbaV0gPSBpMmNfbmV3X2R1bW15KGFkYXB0ZXIsIHNjX2FkZHJbaV0pOworCQlpZiAoIWRhdGEtPmxtNzVbaV0pIHsKIAkJCWRldl9lcnIoJm5ld19jbGllbnQtPmRldiwgIlN1YmNsaWVudCAlZCAiCiAJCQkJInJlZ2lzdHJhdGlvbiBhdCBhZGRyZXNzIDB4JXggIgotCQkJCSJmYWlsZWQuXG4iLCBpLCBkYXRhLT5sbTc1W2ldLT5hZGRyKTsKKwkJCQkiZmFpbGVkLlxuIiwgaSwgc2NfYWRkcltpXSk7CisJCQllcnIgPSAtRU5PTUVNOwogCQkJaWYgKGkgPT0gMSkKIAkJCQlnb3RvIEVSUk9SX1NDXzM7CiAJCQlnb3RvIEVSUk9SX1NDXzI7CkBAIC05ODMsMTIgKzg3OCw5IEBACiAKIC8qIFVuZG8gaW5pdHMgaW4gY2FzZSBvZiBlcnJvcnMgKi8KIEVSUk9SX1NDXzM6Ci0JaTJjX2RldGFjaF9jbGllbnQoZGF0YS0+bG03NVswXSk7CisJaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGRhdGEtPmxtNzVbMF0pOwogRVJST1JfU0NfMjoKLQlrZnJlZShkYXRhLT5sbTc1WzFdKTsKIEVSUk9SX1NDXzE6Ci0Ja2ZyZWUoZGF0YS0+bG03NVswXSk7Ci1FUlJPUl9TQ18wOgogCXJldHVybiBlcnI7CiB9CiAKQEAgLTEwMjksNyArOTIxLDcgQEAKIAkmZGV2X2F0dHJfdnJtLmF0dHIsCiAJJmRldl9hdHRyX2FsYXJtcy5hdHRyLAogCSZkZXZfYXR0cl9iZWVwX21hc2suYXR0ciwKLQkmZGV2X2F0dHJfYmVlcF9lbmFibGUuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX2JlZXBfZW5hYmxlLmRldl9hdHRyLmF0dHIsCiAJTlVMTAogfTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHc4Mzc4MWRfZ3JvdXAgPSB7CkBAIC0xMTUxLDk2ICsxMDQzLDc0IEBACiAJCX0KIAl9CiAKLQlpZiAoaXNfaXNhKSB7Ci0JCWVyciA9IGRldmljZV9jcmVhdGVfZmlsZSgmcGRldi0+ZGV2LCAmZGV2X2F0dHJfbmFtZSk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCX0KLQogCXJldHVybiAwOwogfQogCisvKiBSZXR1cm4gMCBpZiBkZXRlY3Rpb24gaXMgc3VjY2Vzc2Z1bCwgLUVOT0RFViBvdGhlcndpc2UgKi8KIHN0YXRpYyBpbnQKLXc4Mzc4MWRfZGV0ZWN0KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgaW50IGFkZHJlc3MsIGludCBraW5kKQordzgzNzgxZF9kZXRlY3Qoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IGtpbmQsCisJICAgICAgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbykKIHsKIAlpbnQgdmFsMSA9IDAsIHZhbDI7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKLQlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YTsKLQlpbnQgZXJyOworCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmlzYSA9IHc4Mzc4MWRfZGF0YV9pZl9pc2EoKTsKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBjbGllbnQtPmFkYXB0ZXI7CisJaW50IGFkZHJlc3MgPSBjbGllbnQtPmFkZHI7CiAJY29uc3QgY2hhciAqY2xpZW50X25hbWUgPSAiIjsKIAllbnVtIHZlbmRvciB7IHdpbmJvbmQsIGFzdXMgfSB2ZW5kaWQ7CiAKLQlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpIHsKLQkJZXJyID0gLUVJTlZBTDsKLQkJZ290byBFUlJPUjE7Ci0JfQorCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIC1FTk9ERVY7CiAKLQkvKiBPSy4gRm9yIG5vdywgd2UgcHJlc3VtZSB3ZSBoYXZlIGEgdmFsaWQgY2xpZW50LiBXZSBub3cgY3JlYXRlIHRoZQotCSAgIGNsaWVudCBzdHJ1Y3R1cmUsIGV2ZW4gdGhvdWdoIHdlIGNhbm5vdCBmaWxsIGl0IGNvbXBsZXRlbHkgeWV0LgotCSAgIEJ1dCBpdCBhbGxvd3MgdXMgdG8gYWNjZXNzIHc4Mzc4MWRfe3JlYWQsd3JpdGV9X3ZhbHVlLiAqLwotCi0JaWYgKCEoZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB3ODM3ODFkX2RhdGEpLCBHRlBfS0VSTkVMKSkpIHsKLQkJZXJyID0gLUVOT01FTTsKLQkJZ290byBFUlJPUjE7Ci0JfQotCi0JY2xpZW50ID0gJmRhdGEtPmNsaWVudDsKLQlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkYXRhKTsKLQljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwotCW11dGV4X2luaXQoJmRhdGEtPmxvY2spOwotCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7Ci0JY2xpZW50LT5kcml2ZXIgPSAmdzgzNzgxZF9kcml2ZXI7Ci0JZGV2ID0gJmNsaWVudC0+ZGV2OwotCi0JLyogTm93LCB3ZSBkbyB0aGUgcmVtYWluaW5nIGRldGVjdGlvbi4gKi8KKwkvKiBXZSBibG9jayB1cGRhdGVzIG9mIHRoZSBJU0EgZGV2aWNlIHRvIG1pbmltaXplIHRoZSByaXNrIG9mCisJICAgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIHNhbWUgVzgzNzgxRCBjaGlwIHRocm91Z2ggZGlmZmVyZW50CisJICAgaW50ZXJmYWNlcy4gKi8KKwlpZiAoaXNhKQorCQltdXRleF9sb2NrKCZpc2EtPnVwZGF0ZV9sb2NrKTsKIAogCS8qIFRoZSB3ODM3OD9kIG1heSBiZSBzdHVjayBpbiBzb21lIG90aGVyIGJhbmsgdGhhbiBiYW5rIDAuIFRoaXMgbWF5CiAJICAgbWFrZSByZWFkaW5nIG90aGVyIGluZm9ybWF0aW9uIGltcG9zc2libGUuIFNwZWNpZnkgYSBmb3JjZT0uLi4gb3IKIAkgICBmb3JjZV8qPS4uLiBwYXJhbWV0ZXIsIGFuZCB0aGUgV2luYm9uZCB3aWxsIGJlIHJlc2V0IHRvIHRoZSByaWdodAogCSAgIGJhbmsuICovCiAJaWYgKGtpbmQgPCAwKSB7Ci0JCWlmICh3ODM3ODFkX3JlYWRfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQ09ORklHKSAmIDB4ODApIHsKKwkJaWYgKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YQorCQkgICAgKGNsaWVudCwgVzgzNzgxRF9SRUdfQ09ORklHKSAmIDB4ODApIHsKIAkJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgIkRldGVjdGlvbiBvZiB3ODM3ODFkIGNoaXAgIgogCQkJCSJmYWlsZWQgYXQgc3RlcCAzXG4iKTsKLQkJCWVyciA9IC1FTk9ERVY7Ci0JCQlnb3RvIEVSUk9SMjsKKwkJCWdvdG8gZXJyX25vZGV2OwogCQl9Ci0JCXZhbDEgPSB3ODM3ODFkX3JlYWRfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQkFOSyk7Ci0JCXZhbDIgPSB3ODM3ODFkX3JlYWRfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQ0hJUE1BTik7CisJCXZhbDEgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBXODM3ODFEX1JFR19CQU5LKTsKKwkJdmFsMiA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0NISVBNQU4pOwogCQkvKiBDaGVjayBmb3IgV2luYm9uZCBvciBBc3VzIElEIGlmIGluIGJhbmsgMCAqLwogCQlpZiAoKCEodmFsMSAmIDB4MDcpKSAmJgogCQkgICAgKCgoISh2YWwxICYgMHg4MCkpICYmICh2YWwyICE9IDB4YTMpICYmICh2YWwyICE9IDB4YzMpKQogCQkgICAgIHx8ICgodmFsMSAmIDB4ODApICYmICh2YWwyICE9IDB4NWMpICYmICh2YWwyICE9IDB4MTIpKSkpIHsKIAkJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgIkRldGVjdGlvbiBvZiB3ODM3ODFkIGNoaXAgIgogCQkJCSJmYWlsZWQgYXQgc3RlcCA0XG4iKTsKLQkJCWVyciA9IC1FTk9ERVY7Ci0JCQlnb3RvIEVSUk9SMjsKKwkJCWdvdG8gZXJyX25vZGV2OwogCQl9CiAJCS8qIElmIFdpbmJvbmQgU01CdXMsIGNoZWNrIGFkZHJlc3MgYXQgMHg0OC4KIAkJICAgQXN1cyBkb2Vzbid0IHN1cHBvcnQsIGV4Y2VwdCBmb3IgYXM5OTEyN2YgcmV2LjIgKi8KIAkJaWYgKCghKHZhbDEgJiAweDgwKSAmJiAodmFsMiA9PSAweGEzKSkgfHwKIAkJICAgICgodmFsMSAmIDB4ODApICYmICh2YWwyID09IDB4NWMpKSkgewotCQkJaWYgKHc4Mzc4MWRfcmVhZF92YWx1ZQotCQkJICAgIChkYXRhLCBXODM3ODFEX1JFR19JMkNfQUREUikgIT0gYWRkcmVzcykgeworCQkJaWYgKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YQorCQkJICAgIChjbGllbnQsIFc4Mzc4MURfUkVHX0kyQ19BRERSKSAhPSBhZGRyZXNzKSB7CiAJCQkJZGV2X2RiZygmYWRhcHRlci0+ZGV2LCAiRGV0ZWN0aW9uIG9mIHc4Mzc4MWQgIgogCQkJCQkiY2hpcCBmYWlsZWQgYXQgc3RlcCA1XG4iKTsKLQkJCQllcnIgPSAtRU5PREVWOwotCQkJCWdvdG8gRVJST1IyOworCQkJCWdvdG8gZXJyX25vZGV2OwogCQkJfQogCQl9CiAJfQogCiAJLyogV2UgaGF2ZSBlaXRoZXIgaGFkIGEgZm9yY2UgcGFyYW1ldGVyLCBvciB3ZSBoYXZlIGFscmVhZHkgZGV0ZWN0ZWQgdGhlCiAJICAgV2luYm9uZC4gUHV0IGl0IG5vdyBpbnRvIGJhbmsgMCBhbmQgVmVuZG9yIElEIEhpZ2ggQnl0ZSAqLwotCXc4Mzc4MWRfd3JpdGVfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQkFOSywKLQkJCSAgICAodzgzNzgxZF9yZWFkX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JBTkspCi0JCQkgICAgICYgMHg3OCkgfCAweDgwKTsKKwlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgVzgzNzgxRF9SRUdfQkFOSywKKwkJKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0JBTkspCisJCSAmIDB4NzgpIHwgMHg4MCk7CiAKIAkvKiBEZXRlcm1pbmUgdGhlIGNoaXAgdHlwZS4gKi8KIAlpZiAoa2luZCA8PSAwKSB7CiAJCS8qIGdldCB2ZW5kb3IgSUQgKi8KLQkJdmFsMiA9IHc4Mzc4MWRfcmVhZF92YWx1ZShkYXRhLCBXODM3ODFEX1JFR19DSElQTUFOKTsKKwkJdmFsMiA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0NISVBNQU4pOwogCQlpZiAodmFsMiA9PSAweDVjKQogCQkJdmVuZGlkID0gd2luYm9uZDsKIAkJZWxzZSBpZiAodmFsMiA9PSAweDEyKQpAQCAtMTI0OCwxMSArMTExOCwxMCBAQAogCQllbHNlIHsKIAkJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwgInc4Mzc4MWQgY2hpcCB2ZW5kb3IgaXMgIgogCQkJCSJuZWl0aGVyIFdpbmJvbmQgbm9yIEFzdXNcbiIpOwotCQkJZXJyID0gLUVOT0RFVjsKLQkJCWdvdG8gRVJST1IyOworCQkJZ290byBlcnJfbm9kZXY7CiAJCX0KIAotCQl2YWwxID0gdzgzNzgxZF9yZWFkX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX1dDSElQSUQpOworCQl2YWwxID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgVzgzNzgxRF9SRUdfV0NISVBJRCk7CiAJCWlmICgodmFsMSA9PSAweDEwIHx8IHZhbDEgPT0gMHgxMSkgJiYgdmVuZGlkID09IHdpbmJvbmQpCiAJCQlraW5kID0gdzgzNzgxZDsKIAkJZWxzZSBpZiAodmFsMSA9PSAweDMwICYmIHZlbmRpZCA9PSB3aW5ib25kKQpAQCAtMTI2NiwxMSArMTEzNSwyMCBAQAogCQkJCWRldl93YXJuKCZhZGFwdGVyLT5kZXYsICJJZ25vcmluZyAnZm9yY2UnICIKIAkJCQkJICJwYXJhbWV0ZXIgZm9yIHVua25vd24gY2hpcCBhdCAiCiAJCQkJCSAiYWRkcmVzcyAweCUwMnhcbiIsIGFkZHJlc3MpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gRVJST1IyOworCQkJZ290byBlcnJfbm9kZXY7CisJCX0KKworCQlpZiAoKGtpbmQgPT0gdzgzNzgxZCB8fCBraW5kID09IHc4Mzc4MmQpCisJCSAmJiB3ODM3ODFkX2FsaWFzX2RldGVjdChjbGllbnQsIHZhbDEpKSB7CisJCQlkZXZfZGJnKCZhZGFwdGVyLT5kZXYsICJEZXZpY2UgYXQgMHglMDJ4IGFwcGVhcnMgdG8gIgorCQkJCSJiZSB0aGUgc2FtZSBhcyBJU0EgZGV2aWNlXG4iLCBhZGRyZXNzKTsKKwkJCWdvdG8gZXJyX25vZGV2OwogCQl9CiAJfQogCisJaWYgKGlzYSkKKwkJbXV0ZXhfdW5sb2NrKCZpc2EtPnVwZGF0ZV9sb2NrKTsKKwogCWlmIChraW5kID09IHc4Mzc4MWQpIHsKIAkJY2xpZW50X25hbWUgPSAidzgzNzgxZCI7CiAJfSBlbHNlIGlmIChraW5kID09IHc4Mzc4MmQpIHsKQEAgLTEyODEsMjQgKzExNTksNDYgQEAKIAkJY2xpZW50X25hbWUgPSAiYXM5OTEyN2YiOwogCX0KIAotCS8qIEZpbGwgaW4gdGhlIHJlbWFpbmluZyBjbGllbnQgZmllbGRzIGFuZCBwdXQgaW50byB0aGUgZ2xvYmFsIGxpc3QgKi8KLQlzdHJsY3B5KGNsaWVudC0+bmFtZSwgY2xpZW50X25hbWUsIEkyQ19OQU1FX1NJWkUpOwotCWRhdGEtPnR5cGUgPSBraW5kOworCXN0cmxjcHkoaW5mby0+dHlwZSwgY2xpZW50X25hbWUsIEkyQ19OQU1FX1NJWkUpOwogCi0JLyogVGVsbCB0aGUgSTJDIGxheWVyIGEgbmV3IGNsaWVudCBoYXMgYXJyaXZlZCAqLwotCWlmICgoZXJyID0gaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KSkpCi0JCWdvdG8gRVJST1IyOworCXJldHVybiAwOworCisgZXJyX25vZGV2OgorCWlmIChpc2EpCisJCW11dGV4X3VubG9jaygmaXNhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyBpbnQKK3c4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsKKwlzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhOworCWludCBlcnI7CisKKwlkYXRhID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHc4Mzc4MWRfZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghZGF0YSkgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIEVSUk9SMTsKKwl9CisKKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkYXRhKTsKKwltdXRleF9pbml0KCZkYXRhLT5sb2NrKTsKKwltdXRleF9pbml0KCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwlkYXRhLT50eXBlID0gaWQtPmRyaXZlcl9kYXRhOworCWRhdGEtPmNsaWVudCA9IGNsaWVudDsKIAogCS8qIGF0dGFjaCBzZWNvbmRhcnkgaTJjIGxtNzUtbGlrZSBjbGllbnRzICovCi0JaWYgKChlcnIgPSB3ODM3ODFkX2RldGVjdF9zdWJjbGllbnRzKGFkYXB0ZXIsIGFkZHJlc3MsCi0JCQlraW5kLCBjbGllbnQpKSkKKwllcnIgPSB3ODM3ODFkX2RldGVjdF9zdWJjbGllbnRzKGNsaWVudCk7CisJaWYgKGVycikKIAkJZ290byBFUlJPUjM7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBjaGlwICovCiAJdzgzNzgxZF9pbml0X2RldmljZShkZXYpOwogCiAJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KLQllcnIgPSB3ODM3ODFkX2NyZWF0ZV9maWxlcyhkZXYsIGtpbmQsIDApOworCWVyciA9IHc4Mzc4MWRfY3JlYXRlX2ZpbGVzKGRldiwgZGF0YS0+dHlwZSwgMCk7CiAJaWYgKGVycikKIAkJZ290byBFUlJPUjQ7CiAKQEAgLTEzMTQsMjY0ICsxMjE0LDExMyBAQAogCXN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2LT5rb2JqLCAmdzgzNzgxZF9ncm91cCk7CiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZkZXYtPmtvYmosICZ3ODM3ODFkX2dyb3VwX29wdCk7CiAKLQlpZiAoZGF0YS0+bG03NVsxXSkgewotCQlpMmNfZGV0YWNoX2NsaWVudChkYXRhLT5sbTc1WzFdKTsKLQkJa2ZyZWUoZGF0YS0+bG03NVsxXSk7Ci0JfQotCWlmIChkYXRhLT5sbTc1WzBdKSB7Ci0JCWkyY19kZXRhY2hfY2xpZW50KGRhdGEtPmxtNzVbMF0pOwotCQlrZnJlZShkYXRhLT5sbTc1WzBdKTsKLQl9CisJaWYgKGRhdGEtPmxtNzVbMF0pCisJCWkyY191bnJlZ2lzdGVyX2RldmljZShkYXRhLT5sbTc1WzBdKTsKKwlpZiAoZGF0YS0+bG03NVsxXSkKKwkJaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGRhdGEtPmxtNzVbMV0pOwogRVJST1IzOgotCWkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7Ci1FUlJPUjI6CisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgTlVMTCk7CiAJa2ZyZWUoZGF0YSk7CiBFUlJPUjE6CiAJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGludAotdzgzNzgxZF9kZXRhY2hfY2xpZW50KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit3ODM3ODFkX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JLyogbWFpbiBjbGllbnQgKi8KLQlpZiAoZGF0YSkgewotCQlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5od21vbl9kZXYpOwotCQlzeXNmc19yZW1vdmVfZ3JvdXAoJmNsaWVudC0+ZGV2LmtvYmosICZ3ODM3ODFkX2dyb3VwKTsKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmdzgzNzgxZF9ncm91cF9vcHQpOwotCX0KLQotCWlmICgoZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KSkpCi0JCXJldHVybiBlcnI7Ci0KLQkvKiBtYWluIGNsaWVudCAqLwotCWlmIChkYXRhKQotCQlrZnJlZShkYXRhKTsKLQotCS8qIHN1YmNsaWVudCAqLwotCWVsc2UKLQkJa2ZyZWUoY2xpZW50KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IF9fZGV2aW5pdAotdzgzNzgxZF9pc2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKLXsKLQlpbnQgZXJyLCByZWc7Ci0Jc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YTsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKLQljb25zdCBjaGFyICpuYW1lOwotCi0JLyogUmVzZXJ2ZSB0aGUgSVNBIHJlZ2lvbiAqLwotCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0lPLCAwKTsKLQlpZiAoIXJlcXVlc3RfcmVnaW9uKHJlcy0+c3RhcnQgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMiwKLQkJCSAgICAidzgzNzgxZCIpKSB7Ci0JCWVyciA9IC1FQlVTWTsKLQkJZ290byBleGl0OwotCX0KLQotCWlmICghKGRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdzgzNzgxZF9kYXRhKSwgR0ZQX0tFUk5FTCkpKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbjsKLQl9Ci0JbXV0ZXhfaW5pdCgmZGF0YS0+bG9jayk7Ci0JZGF0YS0+Y2xpZW50LmFkZHIgPSByZXMtPnN0YXJ0OwotCWkyY19zZXRfY2xpZW50ZGF0YSgmZGF0YS0+Y2xpZW50LCBkYXRhKTsKLQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRhKTsKLQotCXJlZyA9IHc4Mzc4MWRfcmVhZF92YWx1ZShkYXRhLCBXODM3ODFEX1JFR19XQ0hJUElEKTsKLQlzd2l0Y2ggKHJlZykgewotCWNhc2UgMHgzMDoKLQkJZGF0YS0+dHlwZSA9IHc4Mzc4MmQ7Ci0JCW5hbWUgPSAidzgzNzgyZCI7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWRhdGEtPnR5cGUgPSB3ODM3ODFkOwotCQluYW1lID0gInc4Mzc4MWQiOwotCX0KLQlzdHJsY3B5KGRhdGEtPmNsaWVudC5uYW1lLCBuYW1lLCBJMkNfTkFNRV9TSVpFKTsKLQotCS8qIEluaXRpYWxpemUgdGhlIFc4Mzc4MUQgY2hpcCAqLwotCXc4Mzc4MWRfaW5pdF9kZXZpY2UoJnBkZXYtPmRldik7Ci0KLQkvKiBSZWdpc3RlciBzeXNmcyBob29rcyAqLwotCWVyciA9IHc4Mzc4MWRfY3JlYXRlX2ZpbGVzKCZwZGV2LT5kZXYsIGRhdGEtPnR5cGUsIDEpOwotCWlmIChlcnIpCi0JCWdvdG8gZXhpdF9yZW1vdmVfZmlsZXM7Ci0KLQlkYXRhLT5od21vbl9kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldik7Ci0JaWYgKElTX0VSUihkYXRhLT5od21vbl9kZXYpKSB7Ci0JCWVyciA9IFBUUl9FUlIoZGF0YS0+aHdtb25fZGV2KTsKLQkJZ290byBleGl0X3JlbW92ZV9maWxlczsKLQl9Ci0KLQlyZXR1cm4gMDsKLQotIGV4aXRfcmVtb3ZlX2ZpbGVzOgotCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZ3ODM3ODFkX2dyb3VwKTsKLQlzeXNmc19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmdzgzNzgxZF9ncm91cF9vcHQpOwotCWRldmljZV9yZW1vdmVfZmlsZSgmcGRldi0+ZGV2LCAmZGV2X2F0dHJfbmFtZSk7Ci0Ja2ZyZWUoZGF0YSk7Ci0gZXhpdF9yZWxlYXNlX3JlZ2lvbjoKLQlyZWxlYXNlX3JlZ2lvbihyZXMtPnN0YXJ0ICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQsIDIpOwotIGV4aXQ6Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIGludCBfX2RldmV4aXQKLXc4Mzc4MWRfaXNhX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7CiAKIAlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5od21vbl9kZXYpOwotCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZ3ODM3ODFkX2dyb3VwKTsKLQlzeXNmc19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmdzgzNzgxZF9ncm91cF9vcHQpOwotCWRldmljZV9yZW1vdmVfZmlsZSgmcGRldi0+ZGV2LCAmZGV2X2F0dHJfbmFtZSk7Ci0JcmVsZWFzZV9yZWdpb24oZGF0YS0+Y2xpZW50LmFkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMik7CisKKwlzeXNmc19yZW1vdmVfZ3JvdXAoJmRldi0+a29iaiwgJnc4Mzc4MWRfZ3JvdXApOworCXN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2LT5rb2JqLCAmdzgzNzgxZF9ncm91cF9vcHQpOworCisJaWYgKGRhdGEtPmxtNzVbMF0pCisJCWkyY191bnJlZ2lzdGVyX2RldmljZShkYXRhLT5sbTc1WzBdKTsKKwlpZiAoZGF0YS0+bG03NVsxXSkKKwkJaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGRhdGEtPmxtNzVbMV0pOworCisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgTlVMTCk7CiAJa2ZyZWUoZGF0YSk7CiAKIAlyZXR1cm4gMDsKIH0KIAotLyogVGhlIFNNQnVzIGxvY2tzIGl0c2VsZiwgdXN1YWxseSwgYnV0IG5vdGhpbmcgbWF5IGFjY2VzcyB0aGUgV2luYm9uZCBiZXR3ZWVuCi0gICBiYW5rIHN3aXRjaGVzLiBJU0EgYWNjZXNzIG11c3QgYWx3YXlzIGJlIGxvY2tlZCBleHBsaWNpdGx5IQotICAgV2UgaWdub3JlIHRoZSBXODM3ODFEIEJVU1kgZmxhZyBhdCB0aGlzIG1vbWVudCAtIGl0IGNvdWxkIGxlYWQgdG8gZGVhZGxvY2tzLAotICAgd291bGQgc2xvdyBkb3duIHRoZSBXODM3ODFEIGFjY2VzcyBhbmQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuCi0gICBUaGVyZSBhcmUgc29tZSB1Z2x5IHR5cGVjYXN0cyBoZXJlLCBidXQgdGhlIGdvb2QgbmV3cyBpcyAtIHRoZXkgc2hvdWxkCi0gICBub3doZXJlIGVsc2UgYmUgbmVjZXNzYXJ5ISAqLwogc3RhdGljIGludAotdzgzNzgxZF9yZWFkX3ZhbHVlKHN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEsIHUxNiByZWcpCit3ODM3ODFkX3JlYWRfdmFsdWVfaTJjKHN0cnVjdCB3ODM3ODFkX2RhdGEgKmRhdGEsIHUxNiByZWcpCiB7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9ICZkYXRhLT5jbGllbnQ7Ci0JaW50IHJlcywgd29yZF9zaXplZCwgYmFuazsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gZGF0YS0+Y2xpZW50OworCWludCByZXMsIGJhbms7CiAJc3RydWN0IGkyY19jbGllbnQgKmNsOwogCi0JbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Ci0JaWYgKCFjbGllbnQtPmRyaXZlcikgeyAvKiBJU0EgZGV2aWNlICovCi0JCXdvcmRfc2l6ZWQgPSAoKChyZWcgJiAweGZmMDApID09IDB4MTAwKQotCQkJICAgICAgfHwgKChyZWcgJiAweGZmMDApID09IDB4MjAwKSkKLQkJICAgICYmICgoKHJlZyAmIDB4MDBmZikgPT0gMHg1MCkKLQkJCXx8ICgocmVnICYgMHgwMGZmKSA9PSAweDUzKQotCQkJfHwgKChyZWcgJiAweDAwZmYpID09IDB4NTUpKTsKLQkJaWYgKHJlZyAmIDB4ZmYwMCkgewotCQkJb3V0Yl9wKFc4Mzc4MURfUkVHX0JBTkssCi0JCQkgICAgICAgY2xpZW50LT5hZGRyICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQpOwotCQkJb3V0Yl9wKHJlZyA+PiA4LAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfREFUQV9SRUdfT0ZGU0VUKTsKLQkJfQotCQlvdXRiX3AocmVnICYgMHhmZiwgY2xpZW50LT5hZGRyICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQpOwotCQlyZXMgPSBpbmJfcChjbGllbnQtPmFkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7Ci0JCWlmICh3b3JkX3NpemVkKSB7Ci0JCQlvdXRiX3AoKHJlZyAmIDB4ZmYpICsgMSwKLQkJCSAgICAgICBjbGllbnQtPmFkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCk7Ci0JCQlyZXMgPQotCQkJICAgIChyZXMgPDwgOCkgKyBpbmJfcChjbGllbnQtPmFkZHIgKwotCQkJCQkgICAgICAgVzgzNzgxRF9EQVRBX1JFR19PRkZTRVQpOwotCQl9Ci0JCWlmIChyZWcgJiAweGZmMDApIHsKLQkJCW91dGJfcChXODM3ODFEX1JFR19CQU5LLAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKLQkJCW91dGJfcCgwLCBjbGllbnQtPmFkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7Ci0JCX0KKwliYW5rID0gKHJlZyA+PiA4KSAmIDB4MGY7CisJaWYgKGJhbmsgPiAyKQorCQkvKiBzd2l0Y2ggYmFua3MgKi8KKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0JBTkssCisJCQkJCSAgYmFuayk7CisJaWYgKGJhbmsgPT0gMCB8fCBiYW5rID4gMikgeworCQlyZXMgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCByZWcgJiAweGZmKTsKIAl9IGVsc2UgewotCQliYW5rID0gKHJlZyA+PiA4KSAmIDB4MGY7Ci0JCWlmIChiYW5rID4gMikKLQkJCS8qIHN3aXRjaCBiYW5rcyAqLwotCQkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0JBTkssCi0JCQkJCQkgIGJhbmspOwotCQlpZiAoYmFuayA9PSAwIHx8IGJhbmsgPiAyKSB7Ci0JCQlyZXMgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCByZWcgJiAweGZmKTsKLQkJfSBlbHNlIHsKLQkJCS8qIHN3aXRjaCB0byBzdWJjbGllbnQgKi8KLQkJCWNsID0gZGF0YS0+bG03NVtiYW5rIC0gMV07Ci0JCQkvKiBjb252ZXJ0IGZyb20gSVNBIHRvIExNNzUgSTJDIGFkZHJlc3NlcyAqLwotCQkJc3dpdGNoIChyZWcgJiAweGZmKSB7Ci0JCQljYXNlIDB4NTA6CS8qIFRFTVAgKi8KLQkJCQlyZXMgPSBzd2FiMTYoaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsLCAwKSk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDB4NTI6CS8qIENPTkZJRyAqLwotCQkJCXJlcyA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbCwgMSk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDB4NTM6CS8qIEhZU1QgKi8KLQkJCQlyZXMgPSBzd2FiMTYoaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsLCAyKSk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDB4NTU6CS8qIE9WRVIgKi8KLQkJCWRlZmF1bHQ6Ci0JCQkJcmVzID0gc3dhYjE2KGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbCwgMykpOwotCQkJCWJyZWFrOwotCQkJfQorCQkvKiBzd2l0Y2ggdG8gc3ViY2xpZW50ICovCisJCWNsID0gZGF0YS0+bG03NVtiYW5rIC0gMV07CisJCS8qIGNvbnZlcnQgZnJvbSBJU0EgdG8gTE03NSBJMkMgYWRkcmVzc2VzICovCisJCXN3aXRjaCAocmVnICYgMHhmZikgeworCQljYXNlIDB4NTA6CS8qIFRFTVAgKi8KKwkJCXJlcyA9IHN3YWIxNihpMmNfc21idXNfcmVhZF93b3JkX2RhdGEoY2wsIDApKTsKKwkJCWJyZWFrOworCQljYXNlIDB4NTI6CS8qIENPTkZJRyAqLworCQkJcmVzID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsLCAxKTsKKwkJCWJyZWFrOworCQljYXNlIDB4NTM6CS8qIEhZU1QgKi8KKwkJCXJlcyA9IHN3YWIxNihpMmNfc21idXNfcmVhZF93b3JkX2RhdGEoY2wsIDIpKTsKKwkJCWJyZWFrOworCQljYXNlIDB4NTU6CS8qIE9WRVIgKi8KKwkJZGVmYXVsdDoKKwkJCXJlcyA9IHN3YWIxNihpMmNfc21idXNfcmVhZF93b3JkX2RhdGEoY2wsIDMpKTsKKwkJCWJyZWFrOwogCQl9Ci0JCWlmIChiYW5rID4gMikKLQkJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBXODM3ODFEX1JFR19CQU5LLCAwKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsKKwlpZiAoYmFuayA+IDIpCisJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBXODM3ODFEX1JFR19CQU5LLCAwKTsKKwogCXJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKLXc4Mzc4MWRfd3JpdGVfdmFsdWUoc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSwgdTE2IHJlZywgdTE2IHZhbHVlKQordzgzNzgxZF93cml0ZV92YWx1ZV9pMmMoc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSwgdTE2IHJlZywgdTE2IHZhbHVlKQogewotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSAmZGF0YS0+Y2xpZW50OwotCWludCB3b3JkX3NpemVkLCBiYW5rOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7CisJaW50IGJhbms7CiAJc3RydWN0IGkyY19jbGllbnQgKmNsOwogCi0JbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Ci0JaWYgKCFjbGllbnQtPmRyaXZlcikgeyAvKiBJU0EgZGV2aWNlICovCi0JCXdvcmRfc2l6ZWQgPSAoKChyZWcgJiAweGZmMDApID09IDB4MTAwKQotCQkJICAgICAgfHwgKChyZWcgJiAweGZmMDApID09IDB4MjAwKSkKLQkJICAgICYmICgoKHJlZyAmIDB4MDBmZikgPT0gMHg1MykKLQkJCXx8ICgocmVnICYgMHgwMGZmKSA9PSAweDU1KSk7Ci0JCWlmIChyZWcgJiAweGZmMDApIHsKLQkJCW91dGJfcChXODM3ODFEX1JFR19CQU5LLAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKLQkJCW91dGJfcChyZWcgPj4gOCwKLQkJCSAgICAgICBjbGllbnQtPmFkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7Ci0JCX0KLQkJb3V0Yl9wKHJlZyAmIDB4ZmYsIGNsaWVudC0+YWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKLQkJaWYgKHdvcmRfc2l6ZWQpIHsKLQkJCW91dGJfcCh2YWx1ZSA+PiA4LAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfREFUQV9SRUdfT0ZGU0VUKTsKLQkJCW91dGJfcCgocmVnICYgMHhmZikgKyAxLAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKLQkJfQotCQlvdXRiX3AodmFsdWUgJiAweGZmLCBjbGllbnQtPmFkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7Ci0JCWlmIChyZWcgJiAweGZmMDApIHsKLQkJCW91dGJfcChXODM3ODFEX1JFR19CQU5LLAotCQkJICAgICAgIGNsaWVudC0+YWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKLQkJCW91dGJfcCgwLCBjbGllbnQtPmFkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7Ci0JCX0KKwliYW5rID0gKHJlZyA+PiA4KSAmIDB4MGY7CisJaWYgKGJhbmsgPiAyKQorCQkvKiBzd2l0Y2ggYmFua3MgKi8KKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0JBTkssCisJCQkJCSAgYmFuayk7CisJaWYgKGJhbmsgPT0gMCB8fCBiYW5rID4gMikgeworCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnICYgMHhmZiwKKwkJCQkJICB2YWx1ZSAmIDB4ZmYpOwogCX0gZWxzZSB7Ci0JCWJhbmsgPSAocmVnID4+IDgpICYgMHgwZjsKLQkJaWYgKGJhbmsgPiAyKQotCQkJLyogc3dpdGNoIGJhbmtzICovCi0JCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgVzgzNzgxRF9SRUdfQkFOSywKLQkJCQkJCSAgYmFuayk7Ci0JCWlmIChiYW5rID09IDAgfHwgYmFuayA+IDIpIHsKLQkJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcgJiAweGZmLAotCQkJCQkJICB2YWx1ZSAmIDB4ZmYpOwotCQl9IGVsc2UgewotCQkJLyogc3dpdGNoIHRvIHN1YmNsaWVudCAqLwotCQkJY2wgPSBkYXRhLT5sbTc1W2JhbmsgLSAxXTsKLQkJCS8qIGNvbnZlcnQgZnJvbSBJU0EgdG8gTE03NSBJMkMgYWRkcmVzc2VzICovCi0JCQlzd2l0Y2ggKHJlZyAmIDB4ZmYpIHsKLQkJCWNhc2UgMHg1MjoJLyogQ09ORklHICovCi0JCQkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbCwgMSwgdmFsdWUgJiAweGZmKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgMHg1MzoJLyogSFlTVCAqLwotCQkJCWkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoY2wsIDIsIHN3YWIxNih2YWx1ZSkpOwotCQkJCWJyZWFrOwotCQkJY2FzZSAweDU1OgkvKiBPVkVSICovCi0JCQkJaTJjX3NtYnVzX3dyaXRlX3dvcmRfZGF0YShjbCwgMywgc3dhYjE2KHZhbHVlKSk7Ci0JCQkJYnJlYWs7Ci0JCQl9CisJCS8qIHN3aXRjaCB0byBzdWJjbGllbnQgKi8KKwkJY2wgPSBkYXRhLT5sbTc1W2JhbmsgLSAxXTsKKwkJLyogY29udmVydCBmcm9tIElTQSB0byBMTTc1IEkyQyBhZGRyZXNzZXMgKi8KKwkJc3dpdGNoIChyZWcgJiAweGZmKSB7CisJCWNhc2UgMHg1MjoJLyogQ09ORklHICovCisJCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsLCAxLCB2YWx1ZSAmIDB4ZmYpOworCQkJYnJlYWs7CisJCWNhc2UgMHg1MzoJLyogSFlTVCAqLworCQkJaTJjX3NtYnVzX3dyaXRlX3dvcmRfZGF0YShjbCwgMiwgc3dhYjE2KHZhbHVlKSk7CisJCQlicmVhazsKKwkJY2FzZSAweDU1OgkvKiBPVkVSICovCisJCQlpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKGNsLCAzLCBzd2FiMTYodmFsdWUpKTsKKwkJCWJyZWFrOwogCQl9Ci0JCWlmIChiYW5rID4gMikKLQkJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBXODM3ODFEX1JFR19CQU5LLCAwKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsKKwlpZiAoYmFuayA+IDIpCisJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBXODM3ODFEX1JFR19CQU5LLCAwKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xNjc4LDcgKzE0MjcsNyBAQAogc3RhdGljIHN0cnVjdCB3ODM3ODFkX2RhdGEgKnc4Mzc4MWRfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSAmZGF0YS0+Y2xpZW50OworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7CiAJaW50IGk7CiAKIAltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CkBAIC0xNzc1LDggKzE1MjQsNyBAQAogCQkJCQkJVzgzNzgxRF9SRUdfQUxBUk0yKSA8PCA4KTsKIAkJfQogCQlpID0gdzgzNzgxZF9yZWFkX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX0JFRVBfSU5UUzIpOwotCQlkYXRhLT5iZWVwX2VuYWJsZSA9IGkgPj4gNzsKLQkJZGF0YS0+YmVlcF9tYXNrID0gKChpICYgMHg3ZikgPDwgOCkgKworCQlkYXRhLT5iZWVwX21hc2sgPSAoaSA8PCA4KSArCiAJCSAgICB3ODM3ODFkX3JlYWRfdmFsdWUoZGF0YSwgVzgzNzgxRF9SRUdfQkVFUF9JTlRTMSk7CiAJCWlmICgoZGF0YS0+dHlwZSAhPSB3ODM3ODFkKSAmJiAoZGF0YS0+dHlwZSAhPSBhczk5MTI3ZikpIHsKIAkJCWRhdGEtPmJlZXBfbWFzayB8PQpAQCAtMTc5Miw2ICsxNTQwLDI3NSBAQAogCXJldHVybiBkYXRhOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdzgzNzgxZF9pZHNbXSA9IHsKKwl7ICJ3ODM3ODFkIiwgdzgzNzgxZCwgfSwKKwl7ICJ3ODM3ODJkIiwgdzgzNzgyZCwgfSwKKwl7ICJ3ODM3ODNzIiwgdzgzNzgzcywgfSwKKwl7ICJhczk5MTI3ZiIsIGFzOTkxMjdmIH0sCisJeyAvKiBMSVNUIEVORCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHc4Mzc4MWRfaWRzKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc4MWRfZHJpdmVyID0geworCS5jbGFzcwkJPSBJMkNfQ0xBU1NfSFdNT04sCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAidzgzNzgxZCIsCisJfSwKKwkucHJvYmUJCT0gdzgzNzgxZF9wcm9iZSwKKwkucmVtb3ZlCQk9IHc4Mzc4MWRfcmVtb3ZlLAorCS5pZF90YWJsZQk9IHc4Mzc4MWRfaWRzLAorCS5kZXRlY3QJCT0gdzgzNzgxZF9kZXRlY3QsCisJLmFkZHJlc3NfZGF0YQk9ICZhZGRyX2RhdGEsCit9OworCisvKgorICogSVNBIHJlbGF0ZWQgY29kZQorICovCisjaWZkZWYgQ09ORklHX0lTQQorCisvKiBJU0EgZGV2aWNlLCBpZiBmb3VuZCAqLworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CisKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpc2FfYWRkcmVzcyA9IDB4MjkwOworCisvKiBJMkMgZGV2aWNlcyBnZXQgdGhpcyBuYW1lIGF0dHJpYnV0ZSBhdXRvbWF0aWNhbGx5LCBidXQgZm9yIElTQSBkZXZpY2VzCisgICB3ZSBtdXN0IGNyZWF0ZSBpdCBieSBvdXJzZWx2ZXMuICovCitzdGF0aWMgc3NpemVfdAorc2hvd19uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIGRhdGEtPm5hbWUpOworfQorc3RhdGljIERFVklDRV9BVFRSKG5hbWUsIFNfSVJVR08sIHNob3dfbmFtZSwgTlVMTCk7CisKK3N0YXRpYyBzdHJ1Y3QgdzgzNzgxZF9kYXRhICp3ODM3ODFkX2RhdGFfaWZfaXNhKHZvaWQpCit7CisJcmV0dXJuIHBkZXYgPyBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KSA6IE5VTEw7Cit9CisKKy8qIFJldHVybnMgMSBpZiB0aGUgSTJDIGNoaXAgYXBwZWFycyB0byBiZSBhbiBhbGlhcyBvZiB0aGUgSVNBIGNoaXAgKi8KK3N0YXRpYyBpbnQgdzgzNzgxZF9hbGlhc19kZXRlY3Qoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggY2hpcGlkKQoreworCXN0cnVjdCB3ODM3ODFkX2RhdGEgKmlzYTsKKwlpbnQgaTsKKworCWlmICghcGRldikJLyogTm8gSVNBIGNoaXAgKi8KKwkJcmV0dXJuIDA7CisKKwlpc2EgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmICh3ODM3ODFkX3JlYWRfdmFsdWUoaXNhLCBXODM3ODFEX1JFR19JMkNfQUREUikgIT0gY2xpZW50LT5hZGRyKQorCQlyZXR1cm4gMDsJLyogQWRkcmVzcyBkb2Vzbid0IG1hdGNoICovCisJaWYgKHc4Mzc4MWRfcmVhZF92YWx1ZShpc2EsIFc4Mzc4MURfUkVHX1dDSElQSUQpICE9IGNoaXBpZCkKKwkJcmV0dXJuIDA7CS8qIENoaXAgdHlwZSBkb2Vzbid0IG1hdGNoICovCisKKwkvKiBXZSBjb21wYXJlIGFsbCB0aGUgbGltaXQgcmVnaXN0ZXJzLCB0aGUgY29uZmlnIHJlZ2lzdGVyIGFuZCB0aGUKKwkgKiBpbnRlcnJ1cHQgbWFzayByZWdpc3RlcnMgKi8KKwlmb3IgKGkgPSAweDJiOyBpIDw9IDB4M2Q7IGkrKykgeworCQlpZiAodzgzNzgxZF9yZWFkX3ZhbHVlKGlzYSwgaSkgIT0KKwkJICAgIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIGkpKQorCQkJcmV0dXJuIDA7CisJfQorCWlmICh3ODM3ODFkX3JlYWRfdmFsdWUoaXNhLCBXODM3ODFEX1JFR19DT05GSUcpICE9CisJICAgIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIFc4Mzc4MURfUkVHX0NPTkZJRykpCisJCXJldHVybiAwOworCWZvciAoaSA9IDB4NDM7IGkgPD0gMHg0NjsgaSsrKSB7CisJCWlmICh3ODM3ODFkX3JlYWRfdmFsdWUoaXNhLCBpKSAhPQorCQkgICAgaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgaSkpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludAordzgzNzgxZF9yZWFkX3ZhbHVlX2lzYShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnKQoreworCWludCB3b3JkX3NpemVkLCByZXM7CisKKwl3b3JkX3NpemVkID0gKCgocmVnICYgMHhmZjAwKSA9PSAweDEwMCkKKwkJICAgICAgfHwgKChyZWcgJiAweGZmMDApID09IDB4MjAwKSkKKwkgICAgJiYgKCgocmVnICYgMHgwMGZmKSA9PSAweDUwKQorCQl8fCAoKHJlZyAmIDB4MDBmZikgPT0gMHg1MykKKwkJfHwgKChyZWcgJiAweDAwZmYpID09IDB4NTUpKTsKKwlpZiAocmVnICYgMHhmZjAwKSB7CisJCW91dGJfcChXODM3ODFEX1JFR19CQU5LLAorCQkgICAgICAgZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCk7CisJCW91dGJfcChyZWcgPj4gOCwKKwkJICAgICAgIGRhdGEtPmlzYV9hZGRyICsgVzgzNzgxRF9EQVRBX1JFR19PRkZTRVQpOworCX0KKwlvdXRiX3AocmVnICYgMHhmZiwgZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCk7CisJcmVzID0gaW5iX3AoZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7CisJaWYgKHdvcmRfc2l6ZWQpIHsKKwkJb3V0Yl9wKChyZWcgJiAweGZmKSArIDEsCisJCSAgICAgICBkYXRhLT5pc2FfYWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKKwkJcmVzID0KKwkJICAgIChyZXMgPDwgOCkgKyBpbmJfcChkYXRhLT5pc2FfYWRkciArCisJCQkJICAgICAgIFc4Mzc4MURfREFUQV9SRUdfT0ZGU0VUKTsKKwl9CisJaWYgKHJlZyAmIDB4ZmYwMCkgeworCQlvdXRiX3AoVzgzNzgxRF9SRUdfQkFOSywKKwkJICAgICAgIGRhdGEtPmlzYV9hZGRyICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQpOworCQlvdXRiX3AoMCwgZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7CisJfQorCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkCit3ODM3ODFkX3dyaXRlX3ZhbHVlX2lzYShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnLCB1MTYgdmFsdWUpCit7CisJaW50IHdvcmRfc2l6ZWQ7CisKKwl3b3JkX3NpemVkID0gKCgocmVnICYgMHhmZjAwKSA9PSAweDEwMCkKKwkJICAgICAgfHwgKChyZWcgJiAweGZmMDApID09IDB4MjAwKSkKKwkgICAgJiYgKCgocmVnICYgMHgwMGZmKSA9PSAweDUzKQorCQl8fCAoKHJlZyAmIDB4MDBmZikgPT0gMHg1NSkpOworCWlmIChyZWcgJiAweGZmMDApIHsKKwkJb3V0Yl9wKFc4Mzc4MURfUkVHX0JBTkssCisJCSAgICAgICBkYXRhLT5pc2FfYWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKKwkJb3V0Yl9wKHJlZyA+PiA4LAorCQkgICAgICAgZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0RBVEFfUkVHX09GRlNFVCk7CisJfQorCW91dGJfcChyZWcgJiAweGZmLCBkYXRhLT5pc2FfYWRkciArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VUKTsKKwlpZiAod29yZF9zaXplZCkgeworCQlvdXRiX3AodmFsdWUgPj4gOCwKKwkJICAgICAgIGRhdGEtPmlzYV9hZGRyICsgVzgzNzgxRF9EQVRBX1JFR19PRkZTRVQpOworCQlvdXRiX3AoKHJlZyAmIDB4ZmYpICsgMSwKKwkJICAgICAgIGRhdGEtPmlzYV9hZGRyICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQpOworCX0KKwlvdXRiX3AodmFsdWUgJiAweGZmLCBkYXRhLT5pc2FfYWRkciArIFc4Mzc4MURfREFUQV9SRUdfT0ZGU0VUKTsKKwlpZiAocmVnICYgMHhmZjAwKSB7CisJCW91dGJfcChXODM3ODFEX1JFR19CQU5LLAorCQkgICAgICAgZGF0YS0+aXNhX2FkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCk7CisJCW91dGJfcCgwLCBkYXRhLT5pc2FfYWRkciArIFc4Mzc4MURfREFUQV9SRUdfT0ZGU0VUKTsKKwl9Cit9CisKKy8qIFRoZSBTTUJ1cyBsb2NrcyBpdHNlbGYsIHVzdWFsbHksIGJ1dCBub3RoaW5nIG1heSBhY2Nlc3MgdGhlIFdpbmJvbmQgYmV0d2VlbgorICAgYmFuayBzd2l0Y2hlcy4gSVNBIGFjY2VzcyBtdXN0IGFsd2F5cyBiZSBsb2NrZWQgZXhwbGljaXRseSEKKyAgIFdlIGlnbm9yZSB0aGUgVzgzNzgxRCBCVVNZIGZsYWcgYXQgdGhpcyBtb21lbnQgLSBpdCBjb3VsZCBsZWFkIHRvIGRlYWRsb2NrcywKKyAgIHdvdWxkIHNsb3cgZG93biB0aGUgVzgzNzgxRCBhY2Nlc3MgYW5kIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LgorICAgVGhlcmUgYXJlIHNvbWUgdWdseSB0eXBlY2FzdHMgaGVyZSwgYnV0IHRoZSBnb29kIG5ld3MgaXMgLSB0aGV5IHNob3VsZAorICAgbm93aGVyZSBlbHNlIGJlIG5lY2Vzc2FyeSEgKi8KK3N0YXRpYyBpbnQKK3c4Mzc4MWRfcmVhZF92YWx1ZShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnKQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7CisJaW50IHJlczsKKworCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOworCWlmIChjbGllbnQpCisJCXJlcyA9IHc4Mzc4MWRfcmVhZF92YWx1ZV9pMmMoZGF0YSwgcmVnKTsKKwllbHNlCisJCXJlcyA9IHc4Mzc4MWRfcmVhZF92YWx1ZV9pc2EoZGF0YSwgcmVnKTsKKwltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKK3c4Mzc4MWRfd3JpdGVfdmFsdWUoc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSwgdTE2IHJlZywgdTE2IHZhbHVlKQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7CisKKwltdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKKwlpZiAoY2xpZW50KQorCQl3ODM3ODFkX3dyaXRlX3ZhbHVlX2kyYyhkYXRhLCByZWcsIHZhbHVlKTsKKwllbHNlCisJCXc4Mzc4MWRfd3JpdGVfdmFsdWVfaXNhKGRhdGEsIHJlZywgdmFsdWUpOworCW11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZpbml0Cit3ODM3ODFkX2lzYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWludCBlcnIsIHJlZzsKKwlzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCisJLyogUmVzZXJ2ZSB0aGUgSVNBIHJlZ2lvbiAqLworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0lPLCAwKTsKKwlpZiAoIXJlcXVlc3RfcmVnaW9uKHJlcy0+c3RhcnQgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMiwKKwkJCSAgICAidzgzNzgxZCIpKSB7CisJCWVyciA9IC1FQlVTWTsKKwkJZ290byBleGl0OworCX0KKworCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdzgzNzgxZF9kYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYXRhKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbjsKKwl9CisJbXV0ZXhfaW5pdCgmZGF0YS0+bG9jayk7CisJZGF0YS0+aXNhX2FkZHIgPSByZXMtPnN0YXJ0OworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRhdGEpOworCisJcmVnID0gdzgzNzgxZF9yZWFkX3ZhbHVlKGRhdGEsIFc4Mzc4MURfUkVHX1dDSElQSUQpOworCXN3aXRjaCAocmVnKSB7CisJY2FzZSAweDMwOgorCQlkYXRhLT50eXBlID0gdzgzNzgyZDsKKwkJZGF0YS0+bmFtZSA9ICJ3ODM3ODJkIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGF0YS0+dHlwZSA9IHc4Mzc4MWQ7CisJCWRhdGEtPm5hbWUgPSAidzgzNzgxZCI7CisJfQorCisJLyogSW5pdGlhbGl6ZSB0aGUgVzgzNzgxRCBjaGlwICovCisJdzgzNzgxZF9pbml0X2RldmljZSgmcGRldi0+ZGV2KTsKKworCS8qIFJlZ2lzdGVyIHN5c2ZzIGhvb2tzICovCisJZXJyID0gdzgzNzgxZF9jcmVhdGVfZmlsZXMoJnBkZXYtPmRldiwgZGF0YS0+dHlwZSwgMSk7CisJaWYgKGVycikKKwkJZ290byBleGl0X3JlbW92ZV9maWxlczsKKworCWVyciA9IGRldmljZV9jcmVhdGVfZmlsZSgmcGRldi0+ZGV2LCAmZGV2X2F0dHJfbmFtZSk7CisJaWYgKGVycikKKwkJZ290byBleGl0X3JlbW92ZV9maWxlczsKKworCWRhdGEtPmh3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3RlcigmcGRldi0+ZGV2KTsKKwlpZiAoSVNfRVJSKGRhdGEtPmh3bW9uX2RldikpIHsKKwkJZXJyID0gUFRSX0VSUihkYXRhLT5od21vbl9kZXYpOworCQlnb3RvIGV4aXRfcmVtb3ZlX2ZpbGVzOworCX0KKworCXJldHVybiAwOworCisgZXhpdF9yZW1vdmVfZmlsZXM6CisJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwgJnc4Mzc4MWRfZ3JvdXApOworCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZ3ODM3ODFkX2dyb3VwX29wdCk7CisJZGV2aWNlX3JlbW92ZV9maWxlKCZwZGV2LT5kZXYsICZkZXZfYXR0cl9uYW1lKTsKKwlrZnJlZShkYXRhKTsKKyBleGl0X3JlbGVhc2VfcmVnaW9uOgorCXJlbGVhc2VfcmVnaW9uKHJlcy0+c3RhcnQgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMik7CisgZXhpdDoKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhpdAordzgzNzgxZF9pc2FfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdtb25fZGV2KTsKKwlzeXNmc19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmdzgzNzgxZF9ncm91cCk7CisJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwgJnc4Mzc4MWRfZ3JvdXBfb3B0KTsKKwlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX25hbWUpOworCXJlbGVhc2VfcmVnaW9uKGRhdGEtPmlzYV9hZGRyICsgVzgzNzgxRF9BRERSX1JFR19PRkZTRVQsIDIpOworCWtmcmVlKGRhdGEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHc4Mzc4MWRfaXNhX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm5hbWUgPSAidzgzNzgxZCIsCisJfSwKKwkucHJvYmUgPSB3ODM3ODFkX2lzYV9wcm9iZSwKKwkucmVtb3ZlID0gX19kZXZleGl0X3AodzgzNzgxZF9pc2FfcmVtb3ZlKSwKK307CisKIC8qIHJldHVybiAxIGlmIGEgc3VwcG9ydGVkIGNoaXAgaXMgZm91bmQsIDAgb3RoZXJ3aXNlICovCiBzdGF0aWMgaW50IF9faW5pdAogdzgzNzgxZF9pc2FfZm91bmQodW5zaWduZWQgc2hvcnQgYWRkcmVzcykKQEAgLTE5MjgsMTggKzE5NDUsMTQgQEAKIH0KIAogc3RhdGljIGludCBfX2luaXQKLXNlbnNvcnNfdzgzNzgxZF9pbml0KHZvaWQpCit3ODM3ODFkX2lzYV9yZWdpc3Rlcih2b2lkKQogewogCWludCByZXM7CiAKLQlyZXMgPSBpMmNfYWRkX2RyaXZlcigmdzgzNzgxZF9kcml2ZXIpOwotCWlmIChyZXMpCi0JCWdvdG8gZXhpdDsKLQogCWlmICh3ODM3ODFkX2lzYV9mb3VuZChpc2FfYWRkcmVzcykpIHsKIAkJcmVzID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ3ODM3ODFkX2lzYV9kcml2ZXIpOwogCQlpZiAocmVzKQotCQkJZ290byBleGl0X3VucmVnX2kyY19kcml2ZXI7CisJCQlnb3RvIGV4aXQ7CiAKIAkJLyogU2V0cyBnbG9iYWwgcGRldiBhcyBhIHNpZGUgZWZmZWN0ICovCiAJCXJlcyA9IHc4Mzc4MWRfaXNhX2RldmljZV9hZGQoaXNhX2FkZHJlc3MpOwpAQCAtMTk0OSwxMCArMTk2Miw4NiBAQAogCiAJcmV0dXJuIDA7CiAKLSBleGl0X3VucmVnX2lzYV9kcml2ZXI6CitleGl0X3VucmVnX2lzYV9kcml2ZXI6CiAJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnc4Mzc4MWRfaXNhX2RyaXZlcik7Ci0gZXhpdF91bnJlZ19pMmNfZHJpdmVyOgotCWkyY19kZWxfZHJpdmVyKCZ3ODM3ODFkX2RyaXZlcik7CitleGl0OgorCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdAordzgzNzgxZF9pc2FfdW5yZWdpc3Rlcih2b2lkKQoreworCWlmIChwZGV2KSB7CisJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBkZXYpOworCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdzgzNzgxZF9pc2FfZHJpdmVyKTsKKwl9Cit9CisjZWxzZSAvKiAhQ09ORklHX0lTQSAqLworCitzdGF0aWMgc3RydWN0IHc4Mzc4MWRfZGF0YSAqdzgzNzgxZF9kYXRhX2lmX2lzYSh2b2lkKQoreworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50Cit3ODM3ODFkX2FsaWFzX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBjaGlwaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3c4Mzc4MWRfcmVhZF92YWx1ZShzdHJ1Y3QgdzgzNzgxZF9kYXRhICpkYXRhLCB1MTYgcmVnKQoreworCWludCByZXM7CisKKwltdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKKwlyZXMgPSB3ODM3ODFkX3JlYWRfdmFsdWVfaTJjKGRhdGEsIHJlZyk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsKKworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKK3c4Mzc4MWRfd3JpdGVfdmFsdWUoc3RydWN0IHc4Mzc4MWRfZGF0YSAqZGF0YSwgdTE2IHJlZywgdTE2IHZhbHVlKQoreworCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOworCXc4Mzc4MWRfd3JpdGVfdmFsdWVfaTJjKGRhdGEsIHJlZywgdmFsdWUpOworCW11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX2luaXQKK3c4Mzc4MWRfaXNhX3JlZ2lzdGVyKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdAordzgzNzgxZF9pc2FfdW5yZWdpc3Rlcih2b2lkKQoreworfQorI2VuZGlmIC8qIENPTkZJR19JU0EgKi8KKworc3RhdGljIGludCBfX2luaXQKK3NlbnNvcnNfdzgzNzgxZF9pbml0KHZvaWQpCit7CisJaW50IHJlczsKKworCS8qIFdlIHJlZ2lzdGVyIHRoZSBJU0EgZGV2aWNlIGZpcnN0LCBzbyB0aGF0IHdlIGNhbiBza2lwIHRoZQorCSAqIHJlZ2lzdHJhdGlvbiBvZiBhbiBJMkMgaW50ZXJmYWNlIHRvIHRoZSBzYW1lIGRldmljZS4gKi8KKwlyZXMgPSB3ODM3ODFkX2lzYV9yZWdpc3RlcigpOworCWlmIChyZXMpCisJCWdvdG8gZXhpdDsKKworCXJlcyA9IGkyY19hZGRfZHJpdmVyKCZ3ODM3ODFkX2RyaXZlcik7CisJaWYgKHJlcykKKwkJZ290byBleGl0X3VucmVnX2lzYTsKKworCXJldHVybiAwOworCisgZXhpdF91bnJlZ19pc2E6CisJdzgzNzgxZF9pc2FfdW5yZWdpc3RlcigpOwogIGV4aXQ6CiAJcmV0dXJuIHJlczsKIH0KQEAgLTE5NjAsMTAgKzIwNDksNyBAQAogc3RhdGljIHZvaWQgX19leGl0CiBzZW5zb3JzX3c4Mzc4MWRfZXhpdCh2b2lkKQogewotCWlmIChwZGV2KSB7Ci0JCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBkZXYpOwotCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdzgzNzgxZF9pc2FfZHJpdmVyKTsKLQl9CisJdzgzNzgxZF9pc2FfdW5yZWdpc3RlcigpOwogCWkyY19kZWxfZHJpdmVyKCZ3ODM3ODFkX2RyaXZlcik7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jIGIvZHJpdmVycy9od21vbi93ODM3OTFkLmMKaW5kZXggZGUyMTE0Mi4uNTc2OGRlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTFkLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAgICBTdXBwb3J0cyBmb2xsb3dpbmcgY2hpcHM6CiAKICAgICBDaGlwCSN2aW4JI2ZhbmluCSNwd20JI3RlbXAJd2NoaXBpZAl2ZW5kaWQJaTJjCUlTQQotICAgIHc4Mzc5MWQJMTAJNQkzCTMJMHg3MQkweDVjYTMJeWVzCW5vCisgICAgdzgzNzkxZAkxMAk1CTUJMwkweDcxCTB4NWNhMwl5ZXMJbm8KIAogICAgIFRoZSB3ODM3OTFkIGNoaXAgYXBwZWFycyB0byBiZSBwYXJ0IHdheSBiZXR3ZWVuIHRoZSA4Mzc4MWQgYW5kIHRoZQogICAgIDgzNzkyZC4gVGh1cywgdGhpcyBmaWxlIGlzIGRlcml2ZWQgZnJvbSBib3RoIHRoZSB3ODM3OTJkLmMgYW5kCkBAIC00NSw2ICs0NSw3IEBACiAjZGVmaW5lIE5VTUJFUl9PRl9WSU4JCTEwCiAjZGVmaW5lIE5VTUJFUl9PRl9GQU5JTgkJNQogI2RlZmluZSBOVU1CRVJfT0ZfVEVNUElOCTMKKyNkZWZpbmUgTlVNQkVSX09GX1BXTQkJNQogCiAvKiBBZGRyZXNzZXMgdG8gc2NhbiAqLwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgMHgyYywgMHgyZCwgMHgyZSwgMHgyZiwKQEAgLTExNiw2ICsxMTcsMjUgQEAKIAkweEJELAkJCS8qIEZBTiA1IENvdW50IExvdyBMaW1pdCBpbiBEYXRhU2hlZXQgKi8KIH07CiAKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19QV01bTlVNQkVSX09GX1BXTV0gPSB7CisJMHg4MSwJCQkvKiBQV00gMSBkdXR5IGN5Y2xlIHJlZ2lzdGVyIGluIERhdGFTaGVldCAqLworCTB4ODMsCQkJLyogUFdNIDIgZHV0eSBjeWNsZSByZWdpc3RlciBpbiBEYXRhU2hlZXQgKi8KKwkweDk0LAkJCS8qIFBXTSAzIGR1dHkgY3ljbGUgcmVnaXN0ZXIgaW4gRGF0YVNoZWV0ICovCisJMHhBMCwJCQkvKiBQV00gNCBkdXR5IGN5Y2xlIHJlZ2lzdGVyIGluIERhdGFTaGVldCAqLworCTB4QTEsCQkJLyogUFdNIDUgZHV0eSBjeWNsZSByZWdpc3RlciBpbiBEYXRhU2hlZXQgKi8KK307CisKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19URU1QX1RBUkdFVFszXSA9IHsKKwkweDg1LAkJCS8qIFBXTSAxIHRhcmdldCB0ZW1wZXJhdHVyZSBmb3IgdGVtcCAxICovCisJMHg4NiwJCQkvKiBQV00gMiB0YXJnZXQgdGVtcGVyYXR1cmUgZm9yIHRlbXAgMiAqLworCTB4OTYsCQkJLyogUFdNIDMgdGFyZ2V0IHRlbXBlcmF0dXJlIGZvciB0ZW1wIDMgKi8KK307CisKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19URU1QX1RPTFsyXSA9IHsKKwkweDg3LAkJCS8qIFBXTSAxLzIgdGVtcGVyYXR1cmUgdG9sZXJhbmNlICovCisJMHg5NywJCQkvKiBQV00gMyB0ZW1wZXJhdHVyZSB0b2xlcmFuY2UgKi8KK307CisKIHN0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19GQU5fQ0ZHWzJdID0gewogCTB4ODQsCQkJLyogRkFOIDEvMiBjb25maWd1cmF0aW9uICovCiAJMHg5NSwJCQkvKiBGQU4gMyBjb25maWd1cmF0aW9uICovCkBAIC0xNjAsNiArMTgwLDcgQEAKIAkweEEzLAkJCS8qIEJFRVAgQ29udHJvbCBSZWdpc3RlciAzICovCiB9OwogCisjZGVmaW5lIFc4Mzc5MURfUkVHX0dQSU8JCTB4MTUKICNkZWZpbmUgVzgzNzkxRF9SRUdfQ09ORklHCQkweDQwCiAjZGVmaW5lIFc4Mzc5MURfUkVHX1ZJRF9GQU5ESVYJCTB4NDcKICNkZWZpbmUgVzgzNzkxRF9SRUdfRElEX1ZJRDQJCTB4NDkKQEAgLTIyNCw2ICsyNDUsMTUgQEAKIAkJCQkgKHZhbCkgPCAwID8gKCh2YWwpIC0gMjUwKSAvIDUwMCAqIDEyOCA6IFwKIAkJCQkgKCh2YWwpICsgMjUwKSAvIDUwMCAqIDEyOCkKIAorLyogZm9yIHRoZXJtYWwgY3J1aXNlIHRhcmdldCB0ZW1wLCA3LWJpdHMsIExTQiA9IDEgZGVncmVlIENlbHNpdXMgKi8KKyNkZWZpbmUgVEFSR0VUX1RFTVBfVE9fUkVHKHZhbCkJCSgodmFsKSA8IDAgPyAwIDogXAorCQkJCQkodmFsKSA+PSAxMjcwMDAgPyAxMjcgOiBcCisJCQkJCSgodmFsKSArIDUwMCkgLyAxMDAwKQorCisvKiBmb3IgdGhlcm1hbCBjcnVpc2UgdGVtcCB0b2xlcmFuY2UsIDQtYml0cywgTFNCID0gMSBkZWdyZWUgQ2Vsc2l1cyAqLworI2RlZmluZSBUT0xfVEVNUF9UT19SRUcodmFsKQkJKCh2YWwpIDwgMCA/IDAgOiBcCisJCQkJCSh2YWwpID49IDE1MDAwID8gMTUgOiBcCisJCQkJCSgodmFsKSArIDUwMCkgLyAxMDAwKQogCiAjZGVmaW5lIEJFRVBfTUFTS19UT19SRUcodmFsKQkJKCh2YWwpICYgMHhmZmZmZmYpCiAjZGVmaW5lIEJFRVBfTUFTS19GUk9NX1JFRyh2YWwpCQkoKHZhbCkgJiAweGZmZmZmZikKQEAgLTI3NSw2ICszMDUsMTQgQEAKIAkJCQkgICB0d28gc2Vuc29ycyB3aXRoIHRocmVlIHZhbHVlcwogCQkJCSAgIChjdXIsIG92ZXIsIGh5c3QpICAqLwogCisJLyogUFdNcyAqLworCXU4IHB3bVs1XTsJCS8qIHB3bSBkdXR5IGN5Y2xlICovCisJdTggcHdtX2VuYWJsZVszXTsJLyogcHdtIGVuYWJsZSBzdGF0dXMgZm9yIGZhbiAxLTMKKwkJCQkJKGZhbiA0LTUgb25seSBzdXBwb3J0IG1hbnVhbCBtb2RlKSAqLworCisJdTggdGVtcF90YXJnZXRbM107CS8qIHB3bSAxLTMgdGFyZ2V0IHRlbXBlcmF0dXJlICovCisJdTggdGVtcF90b2xlcmFuY2VbM107CS8qIHB3bSAxLTMgdGVtcGVyYXR1cmUgdG9sZXJhbmNlICovCisKIAkvKiBNaXNjICovCiAJdTMyIGFsYXJtczsJCS8qIHJlYWx0aW1lIHN0YXR1cyByZWdpc3RlciBlbmNvZGluZyxjb21iaW5lZCAqLwogCXU4IGJlZXBfZW5hYmxlOwkJLyogR2xvYmFsIGJlZXAgZW5hYmxlICovCkBAIC02NTIsNiArNjkwLDIxNyBAQAogCVNFTlNPUl9BVFRSKGZhbjVfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDIyKSwKIH07CiAKKy8qIHJlYWQvd3JpdGUgUFdNcyAqLworc3RhdGljIHNzaXplX3Qgc2hvd19wd20oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBkYXRhLT5wd21bbnJdKTsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfcHdtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCXVuc2lnbmVkIGxvbmcgdmFsOworCisJaWYgKHN0cmljdF9zdHJ0b3VsKGJ1ZiwgMTAsICZ2YWwpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT5wd21bbnJdID0gU0VOU09SU19MSU1JVCh2YWwsIDAsIDI1NSk7CisJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX1BXTVtucl0sIGRhdGEtPnB3bVtucl0pOworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfcHdtW10gPSB7CisJU0VOU09SX0FUVFIocHdtMSwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X3B3bSwgc3RvcmVfcHdtLCAwKSwKKwlTRU5TT1JfQVRUUihwd20yLCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfcHdtLCBzdG9yZV9wd20sIDEpLAorCVNFTlNPUl9BVFRSKHB3bTMsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19wd20sIHN0b3JlX3B3bSwgMiksCisJU0VOU09SX0FUVFIocHdtNCwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X3B3bSwgc3RvcmVfcHdtLCAzKSwKKwlTRU5TT1JfQVRUUihwd201LCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfcHdtLCBzdG9yZV9wd20sIDQpLAorfTsKKworc3RhdGljIHNzaXplX3Qgc2hvd19wd21lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBkYXRhLT5wd21fZW5hYmxlW25yXSArIDEpOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9wd21lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJdW5zaWduZWQgbG9uZyB2YWw7CisJdTggcmVnX2NmZ190bXA7CisJdTggcmVnX2lkeCA9IDA7CisJdTggdmFsX3NoaWZ0ID0gMDsKKwl1OCBrZWVwX21hc2sgPSAwOworCisJaW50IHJldCA9IHN0cmljdF9zdHJ0b3VsKGJ1ZiwgMTAsICZ2YWwpOworCisJaWYgKHJldCB8fCB2YWwgPCAxIHx8IHZhbCA+IDMpCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCWRhdGEtPnB3bV9lbmFibGVbbnJdID0gdmFsIC0gMTsKKwlzd2l0Y2ggKG5yKSB7CisJY2FzZSAwOgorCQlyZWdfaWR4ID0gMDsKKwkJdmFsX3NoaWZ0ID0gMjsKKwkJa2VlcF9tYXNrID0gMHhmMzsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlyZWdfaWR4ID0gMDsKKwkJdmFsX3NoaWZ0ID0gNDsKKwkJa2VlcF9tYXNrID0gMHhjZjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlyZWdfaWR4ID0gMTsKKwkJdmFsX3NoaWZ0ID0gMjsKKwkJa2VlcF9tYXNrID0gMHhmMzsKKwkJYnJlYWs7CisJfQorCisJcmVnX2NmZ190bXAgPSB3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19GQU5fQ0ZHW3JlZ19pZHhdKTsKKwlyZWdfY2ZnX3RtcCA9IChyZWdfY2ZnX3RtcCAmIGtlZXBfbWFzaykgfAorCQkJCQlkYXRhLT5wd21fZW5hYmxlW25yXSA8PCB2YWxfc2hpZnQ7CisKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfRkFOX0NGR1tyZWdfaWR4XSwgcmVnX2NmZ190bXApOworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCisJcmV0dXJuIGNvdW50OworfQorc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfcHdtZW5hYmxlW10gPSB7CisJU0VOU09SX0FUVFIocHdtMV9lbmFibGUsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19wd21lbmFibGUsIHN0b3JlX3B3bWVuYWJsZSwgMCksCisJU0VOU09SX0FUVFIocHdtMl9lbmFibGUsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19wd21lbmFibGUsIHN0b3JlX3B3bWVuYWJsZSwgMSksCisJU0VOU09SX0FUVFIocHdtM19lbmFibGUsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19wd21lbmFibGUsIHN0b3JlX3B3bWVuYWJsZSwgMiksCit9OworCisvKiBGb3IgU21hcnQgRmFuIEkgLyBUaGVybWFsIENydWlzZSAqLworc3RhdGljIHNzaXplX3Qgc2hvd190ZW1wX3RhcmdldChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgVEVNUDFfRlJPTV9SRUcoZGF0YS0+dGVtcF90YXJnZXRbbnJdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3RlbXBfdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCXVuc2lnbmVkIGxvbmcgdmFsOworCXU4IHRhcmdldF9tYXNrOworCisJaWYgKHN0cmljdF9zdHJ0b3VsKGJ1ZiwgMTAsICZ2YWwpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT50ZW1wX3RhcmdldFtucl0gPSBUQVJHRVRfVEVNUF9UT19SRUcodmFsKTsKKwl0YXJnZXRfbWFzayA9IHc4Mzc5MWRfcmVhZChjbGllbnQsCisJCQkJVzgzNzkxRF9SRUdfVEVNUF9UQVJHRVRbbnJdKSAmIDB4ODA7CisJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX1RFTVBfVEFSR0VUW25yXSwKKwkJCQlkYXRhLT50ZW1wX3RhcmdldFtucl0gfCB0YXJnZXRfbWFzayk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHNkYV90ZW1wX3RhcmdldFtdID0geworCVNFTlNPUl9BVFRSKHRlbXAxX3RhcmdldCwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X3RlbXBfdGFyZ2V0LCBzdG9yZV90ZW1wX3RhcmdldCwgMCksCisJU0VOU09SX0FUVFIodGVtcDJfdGFyZ2V0LCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfdGVtcF90YXJnZXQsIHN0b3JlX3RlbXBfdGFyZ2V0LCAxKSwKKwlTRU5TT1JfQVRUUih0ZW1wM190YXJnZXQsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd190ZW1wX3RhcmdldCwgc3RvcmVfdGVtcF90YXJnZXQsIDIpLAorfTsKKworc3RhdGljIHNzaXplX3Qgc2hvd190ZW1wX3RvbGVyYW5jZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgVEVNUDFfRlJPTV9SRUcoZGF0YS0+dGVtcF90b2xlcmFuY2VbbnJdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3RlbXBfdG9sZXJhbmNlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCXVuc2lnbmVkIGxvbmcgdmFsOworCXU4IHRhcmdldF9tYXNrOworCXU4IHJlZ19pZHggPSAwOworCXU4IHZhbF9zaGlmdCA9IDA7CisJdTgga2VlcF9tYXNrID0gMDsKKworCWlmIChzdHJpY3Rfc3RydG91bChidWYsIDEwLCAmdmFsKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzd2l0Y2ggKG5yKSB7CisJY2FzZSAwOgorCQlyZWdfaWR4ID0gMDsKKwkJdmFsX3NoaWZ0ID0gMDsKKwkJa2VlcF9tYXNrID0gMHhmMDsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlyZWdfaWR4ID0gMDsKKwkJdmFsX3NoaWZ0ID0gNDsKKwkJa2VlcF9tYXNrID0gMHgwZjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlyZWdfaWR4ID0gMTsKKwkJdmFsX3NoaWZ0ID0gMDsKKwkJa2VlcF9tYXNrID0gMHhmMDsKKwkJYnJlYWs7CisJfQorCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCWRhdGEtPnRlbXBfdG9sZXJhbmNlW25yXSA9IFRPTF9URU1QX1RPX1JFRyh2YWwpOworCXRhcmdldF9tYXNrID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCVc4Mzc5MURfUkVHX1RFTVBfVE9MW3JlZ19pZHhdKSAmIGtlZXBfbWFzazsKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUF9UT0xbcmVnX2lkeF0sCisJCQkoZGF0YS0+dGVtcF90b2xlcmFuY2VbbnJdIDw8IHZhbF9zaGlmdCkgfCB0YXJnZXRfbWFzayk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHNkYV90ZW1wX3RvbGVyYW5jZVtdID0geworCVNFTlNPUl9BVFRSKHRlbXAxX3RvbGVyYW5jZSwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X3RlbXBfdG9sZXJhbmNlLCBzdG9yZV90ZW1wX3RvbGVyYW5jZSwgMCksCisJU0VOU09SX0FUVFIodGVtcDJfdG9sZXJhbmNlLCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfdGVtcF90b2xlcmFuY2UsIHN0b3JlX3RlbXBfdG9sZXJhbmNlLCAxKSwKKwlTRU5TT1JfQVRUUih0ZW1wM190b2xlcmFuY2UsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd190ZW1wX3RvbGVyYW5jZSwgc3RvcmVfdGVtcF90b2xlcmFuY2UsIDIpLAorfTsKKwogLyogcmVhZC93cml0ZSB0aGUgdGVtcGVyYXR1cmUxLCBpbmNsdWRlcyBtZWFzdXJlZCB2YWx1ZSBhbmQgbGltaXRzICovCiBzdGF0aWMgc3NpemVfdCBzaG93X3RlbXAxKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsCiAJCQkJY2hhciAqYnVmKQpAQCAtOTA4LDggKzExNTcsNiBAQAogCUZBTl9VTklUX0FUVFJTKDApLAogCUZBTl9VTklUX0FUVFJTKDEpLAogCUZBTl9VTklUX0FUVFJTKDIpLAotCUZBTl9VTklUX0FUVFJTKDMpLAotCUZBTl9VTklUX0FUVFJTKDQpLAogCVRFTVBfVU5JVF9BVFRSUygwKSwKIAlURU1QX1VOSVRfQVRUUlMoMSksCiAJVEVNUF9VTklUX0FUVFJTKDIpLApAQCAtOTE4LDYgKzExNjUsMTggQEAKIAkmc2RhX2JlZXBfY3RybFsxXS5kZXZfYXR0ci5hdHRyLAogCSZkZXZfYXR0cl9jcHUwX3ZpZC5hdHRyLAogCSZkZXZfYXR0cl92cm0uYXR0ciwKKwkmc2RhX3B3bVswXS5kZXZfYXR0ci5hdHRyLAorCSZzZGFfcHdtWzFdLmRldl9hdHRyLmF0dHIsCisJJnNkYV9wd21bMl0uZGV2X2F0dHIuYXR0ciwKKwkmc2RhX3B3bWVuYWJsZVswXS5kZXZfYXR0ci5hdHRyLAorCSZzZGFfcHdtZW5hYmxlWzFdLmRldl9hdHRyLmF0dHIsCisJJnNkYV9wd21lbmFibGVbMl0uZGV2X2F0dHIuYXR0ciwKKwkmc2RhX3RlbXBfdGFyZ2V0WzBdLmRldl9hdHRyLmF0dHIsCisJJnNkYV90ZW1wX3RhcmdldFsxXS5kZXZfYXR0ci5hdHRyLAorCSZzZGFfdGVtcF90YXJnZXRbMl0uZGV2X2F0dHIuYXR0ciwKKwkmc2RhX3RlbXBfdG9sZXJhbmNlWzBdLmRldl9hdHRyLmF0dHIsCisJJnNkYV90ZW1wX3RvbGVyYW5jZVsxXS5kZXZfYXR0ci5hdHRyLAorCSZzZGFfdGVtcF90b2xlcmFuY2VbMl0uZGV2X2F0dHIuYXR0ciwKIAlOVUxMCiB9OwogCkBAIC05MjUsNiArMTE4NCwyMCBAQAogCS5hdHRycyA9IHc4Mzc5MWRfYXR0cmlidXRlcywKIH07CiAKKy8qIFNlcGFyYXRlIGdyb3VwIG9mIGF0dHJpYnV0ZXMgZm9yIGZhbi9wd20gNC01LiBUaGVpciBwaW5zIGNhbiBhbHNvIGJlCisgICBpbiB1c2UgZm9yIEdQSU8gaW4gd2hpY2ggY2FzZSB0aGVpciBzeXNmcy1pbnRlcmZhY2Ugc2hvdWxkIG5vdCBiZSBtYWRlCisgICBhdmFpbGFibGUgKi8KK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp3ODM3OTFkX2F0dHJpYnV0ZXNfZmFucHdtNDVbXSA9IHsKKwlGQU5fVU5JVF9BVFRSUygzKSwKKwlGQU5fVU5JVF9BVFRSUyg0KSwKKwkmc2RhX3B3bVszXS5kZXZfYXR0ci5hdHRyLAorCSZzZGFfcHdtWzRdLmRldl9hdHRyLmF0dHIsCisJTlVMTAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdzgzNzkxZF9ncm91cF9mYW5wd200NSA9IHsKKwkuYXR0cnMgPSB3ODM3OTFkX2F0dHJpYnV0ZXNfZmFucHdtNDUsCit9OwogCiBzdGF0aWMgaW50IHc4Mzc5MWRfZGV0ZWN0X3N1YmNsaWVudHMoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKQEAgLTEwNTYsNiArMTMyOSw3IEBACiAJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7CiAJaW50IGksIGVycjsKKwl1OCBoYXNfZmFucHdtNDU7CiAKICNpZmRlZiBERUJVRwogCWludCB2YWwxOwpAQCAtMTA5MCwxNSArMTM2NCwyNyBAQAogCWlmICgoZXJyID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmdzgzNzkxZF9ncm91cCkpKQogCQlnb3RvIGVycm9yMzsKIAorCS8qIENoZWNrIGlmIHBpbnMgb2YgZmFuL3B3bSA0LTUgYXJlIGluIHVzZSBhcyBHUElPICovCisJaGFzX2ZhbnB3bTQ1ID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfR1BJTykgJiAweDEwOworCWlmIChoYXNfZmFucHdtNDUpIHsKKwkJZXJyID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLAorCQkJCQkgJnc4Mzc5MWRfZ3JvdXBfZmFucHdtNDUpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJvcjQ7CisJfQorCiAJLyogRXZlcnl0aGluZyBpcyByZWFkeSwgbm93IHJlZ2lzdGVyIHRoZSB3b3JraW5nIGRldmljZSAqLwogCWRhdGEtPmh3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3RlcihkZXYpOwogCWlmIChJU19FUlIoZGF0YS0+aHdtb25fZGV2KSkgewogCQllcnIgPSBQVFJfRVJSKGRhdGEtPmh3bW9uX2Rldik7Ci0JCWdvdG8gZXJyb3I0OworCQlnb3RvIGVycm9yNTsKIAl9CiAKIAlyZXR1cm4gMDsKIAorZXJyb3I1OgorCWlmIChoYXNfZmFucHdtNDUpCisJCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJnc4Mzc5MWRfZ3JvdXBfZmFucHdtNDUpOwogZXJyb3I0OgogCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJnc4Mzc5MWRfZ3JvdXApOwogZXJyb3IzOgpAQCAtMTIzNiw2ICsxNTIyLDM2IEBACiAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCQlkYXRhLT5mYW5fZGl2W2ldIHw9ICh2YmF0X3JlZyA+PiAoMyArIGkpKSAmIDB4MDQ7CiAKKwkJLyogVXBkYXRlIFBXTSBkdXR5IGN5Y2xlICovCisJCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfUFdNOyBpKyspIHsKKwkJCWRhdGEtPnB3bVtpXSA9ICB3ODM3OTFkX3JlYWQoY2xpZW50LAorCQkJCQkJVzgzNzkxRF9SRUdfUFdNW2ldKTsKKwkJfQorCisJCS8qIFVwZGF0ZSBQV00gZW5hYmxlIHN0YXR1cyAqLworCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCQlyZWdfYXJyYXlfdG1wW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCQkJCVc4Mzc5MURfUkVHX0ZBTl9DRkdbaV0pOworCQl9CisJCWRhdGEtPnB3bV9lbmFibGVbMF0gPSAocmVnX2FycmF5X3RtcFswXSA+PiAyKSAmIDB4MDM7CisJCWRhdGEtPnB3bV9lbmFibGVbMV0gPSAocmVnX2FycmF5X3RtcFswXSA+PiA0KSAmIDB4MDM7CisJCWRhdGEtPnB3bV9lbmFibGVbMl0gPSAocmVnX2FycmF5X3RtcFsxXSA+PiAyKSAmIDB4MDM7CisKKwkJLyogVXBkYXRlIFBXTSB0YXJnZXQgdGVtcGVyYXR1cmUgKi8KKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJZGF0YS0+dGVtcF90YXJnZXRbaV0gPSB3ODM3OTFkX3JlYWQoY2xpZW50LAorCQkJCVc4Mzc5MURfUkVHX1RFTVBfVEFSR0VUW2ldKSAmIDB4N2Y7CisJCX0KKworCQkvKiBVcGRhdGUgUFdNIHRlbXBlcmF0dXJlIHRvbGVyYW5jZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCQlyZWdfYXJyYXlfdG1wW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCQkJVzgzNzkxRF9SRUdfVEVNUF9UT0xbaV0pOworCQl9CisJCWRhdGEtPnRlbXBfdG9sZXJhbmNlWzBdID0gcmVnX2FycmF5X3RtcFswXSAmIDB4MGY7CisJCWRhdGEtPnRlbXBfdG9sZXJhbmNlWzFdID0gKHJlZ19hcnJheV90bXBbMF0gPj4gNCkgJiAweDBmOworCQlkYXRhLT50ZW1wX3RvbGVyYW5jZVsyXSA9IHJlZ19hcnJheV90bXBbMV0gJiAweDBmOworCiAJCS8qIFVwZGF0ZSB0aGUgZmlyc3QgdGVtcGVyYXR1cmUgc2Vuc29yICovCiAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKIAkJCWRhdGEtPnRlbXAxW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcG93ZXJtYWMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcG93ZXJtYWMuYwppbmRleCAwZTdiMWM2Li42MGNhOTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXBvd2VybWFjLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wb3dlcm1hYy5jCkBAIC0yNTksNiArMjU5LDM1IEBACiAJfQogCiAJcHJpbnRrKEtFUk5fSU5GTyAiUG93ZXJNYWMgaTJjIGJ1cyAlcyByZWdpc3RlcmVkXG4iLCBuYW1lKTsKKworCWlmICghc3RybmNtcChiYXNlbmFtZSwgInVuaS1uIiwgNSkpIHsKKwkJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwkJY29uc3QgdTMyICpwcm9wOworCQlzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gaW5mbzsKKworCQkvKiBJbnN0YW50aWF0ZSBJMkMgbW90aW9uIHNlbnNvciBpZiBwcmVzZW50ICovCisJCW5wID0gb2ZfZmluZF9ub2RlX2J5X25hbWUoTlVMTCwgImFjY2VsZXJvbWV0ZXIiKTsKKwkJaWYgKG5wICYmIG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAiQUFQTCxhY2NlbGVyb21ldGVyXzEiKSAmJgorCQkgICAgKHByb3AgPSBvZl9nZXRfcHJvcGVydHkobnAsICJyZWciLCBOVUxMKSkpIHsKKwkJCWludCBpMmNfYnVzOworCQkJY29uc3QgY2hhciAqdG1wX2J1czsKKworCQkJLyogbG9vayBmb3IgYnVzIGVpdGhlciB1c2luZyAicmVnIiBvciBieSBwYXRoICovCisJCQl0bXBfYnVzID0gc3Ryc3RyKG5wLT5mdWxsX25hbWUsICIvaTJjLWJ1c0AiKTsKKwkJCWlmICh0bXBfYnVzKQorCQkJCWkyY19idXMgPSAqKHRtcF9idXMgKyA5KSAtICcwJzsKKwkJCWVsc2UKKwkJCQlpMmNfYnVzID0gKCgqcHJvcCkgPj4gOCkgJiAweDBmOworCisJCQlpZiAocG1hY19pMmNfZ2V0X2NoYW5uZWwoYnVzKSA9PSBpMmNfYnVzKSB7CisJCQkJbWVtc2V0KCZpbmZvLCAwLCBzaXplb2Yoc3RydWN0IGkyY19ib2FyZF9pbmZvKSk7CisJCQkJaW5mby5hZGRyID0gKCgqcHJvcCkgJiAweGZmKSA+PiAxOworCQkJCXN0cmxjcHkoaW5mby50eXBlLCAiYW1zIiwgSTJDX05BTUVfU0laRSk7CisJCQkJaTJjX25ld19kZXZpY2UoYWRhcHRlciwgJmluZm8pOworCQkJfQorCQl9CisJfQorCiAJcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtaW8uYyBiL2RyaXZlcnMvaWRlL2lkZS1pby5jCmluZGV4IDc3YzZlYWUuLjcxNjJkNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1pby5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1pby5jCkBAIC0xNDkzLDggKzE0OTMsOCBAQAogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CiAJaHdncm91cC0+cnEgPSBOVUxMOwotCV9fZWx2X2FkZF9yZXF1ZXN0KGRyaXZlLT5xdWV1ZSwgcnEsIEVMRVZBVE9SX0lOU0VSVF9GUk9OVCwgMSk7Ci0JX19nZW5lcmljX3VucGx1Z19kZXZpY2UoZHJpdmUtPnF1ZXVlKTsKKwlfX2Vsdl9hZGRfcmVxdWVzdChkcml2ZS0+cXVldWUsIHJxLCBFTEVWQVRPUl9JTlNFUlRfRlJPTlQsIDApOworCWJsa19zdGFydF9xdWV1ZWluZyhkcml2ZS0+cXVldWUpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9sb2NrLCBmbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jCmluZGV4IDVhMWNmMjUuLjFlNWI2NDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYwpAQCAtMzc4LDYgKzM3OCw3IEBACiB7CiAJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBpc2NzaV9zZXNzaW9uX3RvX3Nob3N0KGNsc19zZXNzaW9uKTsKIAorCWlzY3NpX3Nlc3Npb25fdGVhcmRvd24oY2xzX3Nlc3Npb24pOwogCWlzY3NpX2hvc3RfcmVtb3ZlKHNob3N0KTsKIAlpc2NzaV9ob3N0X2ZyZWUoc2hvc3QpOwogfQpAQCAtNTk3LDcgKzU5OCw3IEBACiAJLmNtZF9wZXJfbHVuICAgICAgICAgICAgPSBJU0NTSV9NQVhfQ01EX1BFUl9MVU4sCiAJLmVoX2Fib3J0X2hhbmRsZXIgICAgICAgPSBpc2NzaV9laF9hYm9ydCwKIAkuZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXI9IGlzY3NpX2VoX2RldmljZV9yZXNldCwKLQkuZWhfaG9zdF9yZXNldF9oYW5kbGVyCT0gaXNjc2lfZWhfaG9zdF9yZXNldCwKKwkuZWhfdGFyZ2V0X3Jlc2V0X2hhbmRsZXI9IGlzY3NpX2VoX3RhcmdldF9yZXNldCwKIAkudXNlX2NsdXN0ZXJpbmcgICAgICAgICA9IERJU0FCTEVfQ0xVU1RFUklORywKIAkucHJvY19uYW1lICAgICAgICAgICAgICA9ICJpc2NzaV9pc2VyIiwKIAkudGhpc19pZCAgICAgICAgICAgICAgICA9IC0xLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLWZmLmMgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtZmYuYwppbmRleCA3ODM5YjdiLi4wZGU5YTA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtZmYuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtZmYuYwpAQCAtMTk3LDEzICsxOTcsMTYgQEAKICAqIEFuYWx5c2UgdGhlIGNoYW5nZXMgaW4gYW4gZWZmZWN0LCBhbmQgdGVsbCBpZiB3ZSBuZWVkIHRvIHNlbmQgYW4gY29uZGl0aW9uCiAgKiBwYXJhbWV0ZXIgcGFja2V0CiAgKi8KLXN0YXRpYyBpbnQgbmVlZF9jb25kaXRpb25fbW9kaWZpZXIoc3RydWN0IGZmX2VmZmVjdCAqb2xkLCBzdHJ1Y3QgZmZfZWZmZWN0ICpuZXcpCitzdGF0aWMgaW50IG5lZWRfY29uZGl0aW9uX21vZGlmaWVyKHN0cnVjdCBpZm9yY2UgKmlmb3JjZSwKKwkJCQkgICBzdHJ1Y3QgZmZfZWZmZWN0ICpvbGQsCisJCQkJICAgc3RydWN0IGZmX2VmZmVjdCAqbmV3KQogewogCWludCByZXQgPSAwOwogCWludCBpOwogCiAJaWYgKG5ldy0+dHlwZSAhPSBGRl9TUFJJTkcgJiYgbmV3LT50eXBlICE9IEZGX0ZSSUNUSU9OKSB7Ci0JCXdhcm4oImJhZCBlZmZlY3QgdHlwZSBpbiBuZWVkX2NvbmRpdGlvbl9tb2RpZmllciIpOworCQlkZXZfd2FybigmaWZvcmNlLT5kZXYtPmRldiwgImJhZCBlZmZlY3QgdHlwZSBpbiAlc1xuIiwKKwkJCSBfX2Z1bmNfXyk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMjIyLDEwICsyMjUsMTMgQEAKICAqIEFuYWx5c2UgdGhlIGNoYW5nZXMgaW4gYW4gZWZmZWN0LCBhbmQgdGVsbCBpZiB3ZSBuZWVkIHRvIHNlbmQgYSBtYWduaXR1ZGUKICAqIHBhcmFtZXRlciBwYWNrZXQKICAqLwotc3RhdGljIGludCBuZWVkX21hZ25pdHVkZV9tb2RpZmllcihzdHJ1Y3QgZmZfZWZmZWN0ICpvbGQsIHN0cnVjdCBmZl9lZmZlY3QgKmVmZmVjdCkKK3N0YXRpYyBpbnQgbmVlZF9tYWduaXR1ZGVfbW9kaWZpZXIoc3RydWN0IGlmb3JjZSAqaWZvcmNlLAorCQkJCSAgIHN0cnVjdCBmZl9lZmZlY3QgKm9sZCwKKwkJCQkgICBzdHJ1Y3QgZmZfZWZmZWN0ICplZmZlY3QpCiB7CiAJaWYgKGVmZmVjdC0+dHlwZSAhPSBGRl9DT05TVEFOVCkgewotCQl3YXJuKCJiYWQgZWZmZWN0IHR5cGUgaW4gbmVlZF9lbnZlbG9wZV9tb2RpZmllciIpOworCQlkZXZfd2FybigmaWZvcmNlLT5kZXYtPmRldiwgImJhZCBlZmZlY3QgdHlwZSBpbiAlc1xuIiwKKwkJCSBfX2Z1bmNfXyk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMjM2LDcgKzI0Miw4IEBACiAgKiBBbmFseXNlIHRoZSBjaGFuZ2VzIGluIGFuIGVmZmVjdCwgYW5kIHRlbGwgaWYgd2UgbmVlZCB0byBzZW5kIGFuIGVudmVsb3BlCiAgKiBwYXJhbWV0ZXIgcGFja2V0CiAgKi8KLXN0YXRpYyBpbnQgbmVlZF9lbnZlbG9wZV9tb2RpZmllcihzdHJ1Y3QgZmZfZWZmZWN0ICpvbGQsIHN0cnVjdCBmZl9lZmZlY3QgKmVmZmVjdCkKK3N0YXRpYyBpbnQgbmVlZF9lbnZlbG9wZV9tb2RpZmllcihzdHJ1Y3QgaWZvcmNlICppZm9yY2UsIHN0cnVjdCBmZl9lZmZlY3QgKm9sZCwKKwkJCQkgIHN0cnVjdCBmZl9lZmZlY3QgKmVmZmVjdCkKIHsKIAlzd2l0Y2ggKGVmZmVjdC0+dHlwZSkgewogCWNhc2UgRkZfQ09OU1RBTlQ6CkBAIC0yNTYsNyArMjYzLDggQEAKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQl3YXJuKCJiYWQgZWZmZWN0IHR5cGUgaW4gbmVlZF9lbnZlbG9wZV9tb2RpZmllciIpOworCQlkZXZfd2FybigmaWZvcmNlLT5kZXYtPmRldiwgImJhZCBlZmZlY3QgdHlwZSBpbiAlc1xuIiwKKwkJCSBfX2Z1bmNfXyk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0yNjYsMTAgKzI3NCwxMiBAQAogICogQW5hbHlzZSB0aGUgY2hhbmdlcyBpbiBhbiBlZmZlY3QsIGFuZCB0ZWxsIGlmIHdlIG5lZWQgdG8gc2VuZCBhIHBlcmlvZGljCiAgKiBwYXJhbWV0ZXIgZWZmZWN0CiAgKi8KLXN0YXRpYyBpbnQgbmVlZF9wZXJpb2RfbW9kaWZpZXIoc3RydWN0IGZmX2VmZmVjdCAqb2xkLCBzdHJ1Y3QgZmZfZWZmZWN0ICpuZXcpCitzdGF0aWMgaW50IG5lZWRfcGVyaW9kX21vZGlmaWVyKHN0cnVjdCBpZm9yY2UgKmlmb3JjZSwgc3RydWN0IGZmX2VmZmVjdCAqb2xkLAorCQkJCXN0cnVjdCBmZl9lZmZlY3QgKm5ldykKIHsKIAlpZiAobmV3LT50eXBlICE9IEZGX1BFUklPRElDKSB7Ci0JCXdhcm4oImJhZCBlZmZlY3QgdHlwZSBpbiBuZWVkX3BlcmlvZF9tb2RpZmllciIpOworCQlkZXZfd2FybigmaWZvcmNlLT5kZXYtPmRldiwgImJhZCBlZmZlY3QgdHlwZSBpbiAlc1xuIiwKKwkJCSBfX2Z1bmNfXyk7CiAJCXJldHVybiAwOwogCX0KIAlyZXR1cm4gKG9sZC0+dS5wZXJpb2RpYy5wZXJpb2QgIT0gbmV3LT51LnBlcmlvZGljLnBlcmlvZApAQCAtMzU1LDcgKzM2NSw3IEBACiAJaW50IHBhcmFtMl9lcnIgPSAxOwogCWludCBjb3JlX2VyciA9IDA7CiAKLQlpZiAoIW9sZCB8fCBuZWVkX3BlcmlvZF9tb2RpZmllcihvbGQsIGVmZmVjdCkpIHsKKwlpZiAoIW9sZCB8fCBuZWVkX3BlcmlvZF9tb2RpZmllcihpZm9yY2UsIG9sZCwgZWZmZWN0KSkgewogCQlwYXJhbTFfZXJyID0gbWFrZV9wZXJpb2RfbW9kaWZpZXIoaWZvcmNlLCBtb2QxX2NodW5rLAogCQkJb2xkICE9IE5VTEwsCiAJCQllZmZlY3QtPnUucGVyaW9kaWMubWFnbml0dWRlLCBlZmZlY3QtPnUucGVyaW9kaWMub2Zmc2V0LApAQCAtMzY1LDcgKzM3NSw3IEBACiAJCXNldF9iaXQoRkZfTU9EMV9JU19VU0VELCBjb3JlX2VmZmVjdC0+ZmxhZ3MpOwogCX0KIAotCWlmICghb2xkIHx8IG5lZWRfZW52ZWxvcGVfbW9kaWZpZXIob2xkLCBlZmZlY3QpKSB7CisJaWYgKCFvbGQgfHwgbmVlZF9lbnZlbG9wZV9tb2RpZmllcihpZm9yY2UsIG9sZCwgZWZmZWN0KSkgewogCQlwYXJhbTJfZXJyID0gbWFrZV9lbnZlbG9wZV9tb2RpZmllcihpZm9yY2UsIG1vZDJfY2h1bmssCiAJCQlvbGQgIT1OVUxMLAogCQkJZWZmZWN0LT51LnBlcmlvZGljLmVudmVsb3BlLmF0dGFja19sZW5ndGgsCkBAIC00MjUsNyArNDM1LDcgQEAKIAlpbnQgcGFyYW0yX2VyciA9IDE7CiAJaW50IGNvcmVfZXJyID0gMDsKIAotCWlmICghb2xkIHx8IG5lZWRfbWFnbml0dWRlX21vZGlmaWVyKG9sZCwgZWZmZWN0KSkgeworCWlmICghb2xkIHx8IG5lZWRfbWFnbml0dWRlX21vZGlmaWVyKGlmb3JjZSwgb2xkLCBlZmZlY3QpKSB7CiAJCXBhcmFtMV9lcnIgPSBtYWtlX21hZ25pdHVkZV9tb2RpZmllcihpZm9yY2UsIG1vZDFfY2h1bmssCiAJCQlvbGQgIT0gTlVMTCwKIAkJCWVmZmVjdC0+dS5jb25zdGFudC5sZXZlbCk7CkBAIC00MzQsNyArNDQ0LDcgQEAKIAkJc2V0X2JpdChGRl9NT0QxX0lTX1VTRUQsIGNvcmVfZWZmZWN0LT5mbGFncyk7CiAJfQogCi0JaWYgKCFvbGQgfHwgbmVlZF9lbnZlbG9wZV9tb2RpZmllcihvbGQsIGVmZmVjdCkpIHsKKwlpZiAoIW9sZCB8fCBuZWVkX2VudmVsb3BlX21vZGlmaWVyKGlmb3JjZSwgb2xkLCBlZmZlY3QpKSB7CiAJCXBhcmFtMl9lcnIgPSBtYWtlX2VudmVsb3BlX21vZGlmaWVyKGlmb3JjZSwgbW9kMl9jaHVuaywKIAkJCW9sZCAhPSBOVUxMLAogCQkJZWZmZWN0LT51LmNvbnN0YW50LmVudmVsb3BlLmF0dGFja19sZW5ndGgsCkBAIC00ODcsNyArNDk3LDcgQEAKIAkJZGVmYXVsdDogcmV0dXJuIC0xOwogCX0KIAotCWlmICghb2xkIHx8IG5lZWRfY29uZGl0aW9uX21vZGlmaWVyKG9sZCwgZWZmZWN0KSkgeworCWlmICghb2xkIHx8IG5lZWRfY29uZGl0aW9uX21vZGlmaWVyKGlmb3JjZSwgb2xkLCBlZmZlY3QpKSB7CiAJCXBhcmFtX2VyciA9IG1ha2VfY29uZGl0aW9uX21vZGlmaWVyKGlmb3JjZSwgbW9kMV9jaHVuaywKIAkJCW9sZCAhPSBOVUxMLAogCQkJZWZmZWN0LT51LmNvbmRpdGlvblswXS5yaWdodF9zYXR1cmF0aW9uLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLW1haW4uYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1tYWluLmMKaW5kZXggNjFlZTZlMy4uYmFhYmY4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLW1haW4uYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5jCkBAIC0yMTgsNyArMjE4LDkgQEAKIAkJLyogQ2hlY2s6IG5vIGVmZmVjdHMgc2hvdWxkIGJlIHByZXNlbnQgaW4gbWVtb3J5ICovCiAJCWZvciAoaSA9IDA7IGkgPCBkZXYtPmZmLT5tYXhfZWZmZWN0czsgaSsrKSB7CiAJCQlpZiAodGVzdF9iaXQoRkZfQ09SRV9JU19VU0VELCBpZm9yY2UtPmNvcmVfZWZmZWN0c1tpXS5mbGFncykpIHsKLQkJCQl3YXJuKCJpZm9yY2VfcmVsZWFzZTogRGV2aWNlIHN0aWxsIG93bnMgZWZmZWN0cyIpOworCQkJCWRldl93YXJuKCZkZXYtPmRldiwKKwkJCQkJIiVzOiBEZXZpY2Ugc3RpbGwgb3ducyBlZmZlY3RzXG4iLAorCQkJCQlfX2Z1bmNfXyk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTMzNSwyNiArMzM3LDI2IEBACiAJaWYgKCFpZm9yY2VfZ2V0X2lkX3BhY2tldChpZm9yY2UsICJNIikpCiAJCWlucHV0X2Rldi0+aWQudmVuZG9yID0gKGlmb3JjZS0+ZWRhdGFbMl0gPDwgOCkgfCBpZm9yY2UtPmVkYXRhWzFdOwogCWVsc2UKLQkJd2FybigiRGV2aWNlIGRvZXMgbm90IHJlc3BvbmQgdG8gaWQgcGFja2V0IE0iKTsKKwkJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsICJEZXZpY2UgZG9lcyBub3QgcmVzcG9uZCB0byBpZCBwYWNrZXQgTVxuIik7CiAKIAlpZiAoIWlmb3JjZV9nZXRfaWRfcGFja2V0KGlmb3JjZSwgIlAiKSkKIAkJaW5wdXRfZGV2LT5pZC5wcm9kdWN0ID0gKGlmb3JjZS0+ZWRhdGFbMl0gPDwgOCkgfCBpZm9yY2UtPmVkYXRhWzFdOwogCWVsc2UKLQkJd2FybigiRGV2aWNlIGRvZXMgbm90IHJlc3BvbmQgdG8gaWQgcGFja2V0IFAiKTsKKwkJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsICJEZXZpY2UgZG9lcyBub3QgcmVzcG9uZCB0byBpZCBwYWNrZXQgUFxuIik7CiAKIAlpZiAoIWlmb3JjZV9nZXRfaWRfcGFja2V0KGlmb3JjZSwgIkIiKSkKIAkJaWZvcmNlLT5kZXZpY2VfbWVtb3J5LmVuZCA9IChpZm9yY2UtPmVkYXRhWzJdIDw8IDgpIHwgaWZvcmNlLT5lZGF0YVsxXTsKIAllbHNlCi0JCXdhcm4oIkRldmljZSBkb2VzIG5vdCByZXNwb25kIHRvIGlkIHBhY2tldCBCIik7CisJCWRldl93YXJuKCZpZm9yY2UtPmRldi0+ZGV2LCAiRGV2aWNlIGRvZXMgbm90IHJlc3BvbmQgdG8gaWQgcGFja2V0IEJcbiIpOwogCiAJaWYgKCFpZm9yY2VfZ2V0X2lkX3BhY2tldChpZm9yY2UsICJOIikpCiAJCWZmX2VmZmVjdHMgPSBpZm9yY2UtPmVkYXRhWzFdOwogCWVsc2UKLQkJd2FybigiRGV2aWNlIGRvZXMgbm90IHJlc3BvbmQgdG8gaWQgcGFja2V0IE4iKTsKKwkJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsICJEZXZpY2UgZG9lcyBub3QgcmVzcG9uZCB0byBpZCBwYWNrZXQgTlxuIik7CiAKIAkvKiBDaGVjayBpZiB0aGUgZGV2aWNlIGNhbiBzdG9yZSBtb3JlIGVmZmVjdHMgdGhhbiB0aGUgZHJpdmVyIGNhbiByZWFsbHkgaGFuZGxlICovCiAJaWYgKGZmX2VmZmVjdHMgPiBJRk9SQ0VfRUZGRUNUU19NQVgpIHsKLQkJd2FybigiTGltaXRpbmcgbnVtYmVyIG9mIGVmZmVjdHMgdG8gJWQgKGRldmljZSByZXBvcnRzICVkKSIsCisJCWRldl93YXJuKCZpZm9yY2UtPmRldi0+ZGV2LCAiTGltaXRpbmcgbnVtYmVyIG9mIGVmZmVjdHMgdG8gJWQgKGRldmljZSByZXBvcnRzICVkKVxuIiwKIAkJICAgICAgIElGT1JDRV9FRkZFQ1RTX01BWCwgZmZfZWZmZWN0cyk7CiAJCWZmX2VmZmVjdHMgPSBJRk9SQ0VfRUZGRUNUU19NQVg7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLXBhY2tldHMuYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1wYWNrZXRzLmMKaW5kZXggMDE1YjUwYS4uYTE3YjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLXBhY2tldHMuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtcGFja2V0cy5jCkBAIC02NSw3ICs2NSw4IEBACiAKIAogCWlmIChDSVJDX1NQQUNFKGhlYWQsIHRhaWwsIFhNSVRfU0laRSkgPCBuKzIpIHsKLQkJd2Fybigibm90IGVub3VnaCBzcGFjZSBpbiB4bWl0IGJ1ZmZlciB0byBzZW5kIG5ldyBwYWNrZXQiKTsKKwkJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsCisJCQkgIm5vdCBlbm91Z2ggc3BhY2UgaW4geG1pdCBidWZmZXIgdG8gc2VuZCBuZXcgcGFja2V0XG4iKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWZvcmNlLT54bWl0X2xvY2ssIGZsYWdzKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTE0OCw3ICsxNDksNyBAQAogCQkJcmV0dXJuIDA7CiAJCX0KIAl9Ci0Jd2FybigidW51c2VkIGVmZmVjdCAlMDR4IHVwZGF0ZWQgISEhIiwgYWRkcik7CisJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsICJ1bnVzZWQgZWZmZWN0ICUwNHggdXBkYXRlZCAhISFcbiIsIGFkZHIpOwogCXJldHVybiAtMTsKIH0KIApAQCAtMTU5LDcgKzE2MCw4IEBACiAJc3RhdGljIGludCBiZWluZ191c2VkID0gMDsKIAogCWlmIChiZWluZ191c2VkKQotCQl3YXJuKCJyZS1lbnRyYW50IGNhbGwgdG8gaWZvcmNlX3Byb2Nlc3MgJWQiLCBiZWluZ191c2VkKTsKKwkJZGV2X3dhcm4oJmlmb3JjZS0+ZGV2LT5kZXYsCisJCQkgInJlLWVudHJhbnQgY2FsbCB0byBpZm9yY2VfcHJvY2VzcyAlZFxuIiwgYmVpbmdfdXNlZCk7CiAJYmVpbmdfdXNlZCsrOwogCiAjaWZkZWYgQ09ORklHX0pPWVNUSUNLX0lGT1JDRV8yMzIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS11c2IuYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS11c2IuYwppbmRleCA4NTFjYzQwLi5mODMxODVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtdXNiLmMKKysrIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLXVzYi5jCkBAIC02NCw3ICs2NCw3IEBACiAKIAlpZiAoIChuPXVzYl9zdWJtaXRfdXJiKGlmb3JjZS0+b3V0LCBHRlBfQVRPTUlDKSkgKSB7CiAJCWNsZWFyX2JpdChJRk9SQ0VfWE1JVF9SVU5OSU5HLCBpZm9yY2UtPnhtaXRfZmxhZ3MpOwotCQl3YXJuKCJ1c2Jfc3VibWl0X3VyYiBmYWlsZWQgJWRcbiIsIG4pOworCQlkZXZfd2FybigmaWZvcmNlLT5kZXYtPmRldiwgInVzYl9zdWJtaXRfdXJiIGZhaWxlZCAlZFxuIiwgbik7CiAJfQogCiAJLyogVGhlIElGT1JDRV9YTUlUX1JVTk5JTkcgYml0IGlzIG5vdCBjbGVhcmVkIGhlcmUuIFRoYXQncyBpbnRlbmRlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2sveHBhZC5jIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay94cGFkLmMKaW5kZXggODM5ZDFjOS4uYjg2OGI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay94cGFkLmMKKysrIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay94cGFkLmMKQEAgLTkxMSw3ICs5MTEsNyBAQAogewogCWludCByZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJnhwYWRfZHJpdmVyKTsKIAlpZiAocmVzdWx0ID09IDApCi0JCWluZm8oRFJJVkVSX0RFU0MpOworCQlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2F0aV9yZW1vdGUuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9hdGlfcmVtb3RlLmMKaW5kZXggZGViZmMxYS4uZTI5MGZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2F0aV9yZW1vdGUuYworKysgYi9kcml2ZXJzL2lucHV0L21pc2MvYXRpX3JlbW90ZS5jCkBAIC0yODUsNyArMjg1LDYgQEAKIH07CiAKIC8qIExvY2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KLXN0YXRpYyB2b2lkIGF0aV9yZW1vdGVfZHVtcAkJKHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBhY3R1YWxfbGVuZ3RoKTsKIHN0YXRpYyBpbnQgYXRpX3JlbW90ZV9vcGVuCQkoc3RydWN0IGlucHV0X2RldiAqaW5wdXRkZXYpOwogc3RhdGljIHZvaWQgYXRpX3JlbW90ZV9jbG9zZQkJKHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0ZGV2KTsKIHN0YXRpYyBpbnQgYXRpX3JlbW90ZV9zZW5kcGFja2V0CShzdHJ1Y3QgYXRpX3JlbW90ZSAqYXRpX3JlbW90ZSwgdTE2IGNtZCwgdW5zaWduZWQgY2hhciAqZGF0YSk7CkBAIC0zMDcsMTUgKzMwNiwxNiBAQAogLyoKICAqCWF0aV9yZW1vdGVfZHVtcF9pbnB1dAogICovCi1zdGF0aWMgdm9pZCBhdGlfcmVtb3RlX2R1bXAodW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKK3N0YXRpYyB2b2lkIGF0aV9yZW1vdGVfZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgKmRhdGEsCisJCQkgICAgdW5zaWduZWQgaW50IGxlbikKIHsKIAlpZiAoKGxlbiA9PSAxKSAmJiAoZGF0YVswXSAhPSAodW5zaWduZWQgY2hhcikweGZmKSAmJiAoZGF0YVswXSAhPSAweDAwKSkKLQkJd2FybigiV2VpcmQgYnl0ZSAweCUwMngiLCBkYXRhWzBdKTsKKwkJZGV2X3dhcm4oZGV2LCAiV2VpcmQgYnl0ZSAweCUwMnhcbiIsIGRhdGFbMF0pOwogCWVsc2UgaWYgKGxlbiA9PSA0KQotCQl3YXJuKCJXZWlyZCBrZXkgJTAyeCAlMDJ4ICUwMnggJTAyeCIsCisJCWRldl93YXJuKGRldiwgIldlaXJkIGtleSAlMDJ4ICUwMnggJTAyeCAlMDJ4XG4iLAogCQkgICAgIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10pOwogCWVsc2UKLQkJd2FybigiV2VpcmQgZGF0YSwgbGVuPSVkICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4IC4uLiIsCisJCWRldl93YXJuKGRldiwgIldlaXJkIGRhdGEsIGxlbj0lZCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAuLi5cbiIsCiAJCSAgICAgbGVuLCBkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdLCBkYXRhWzRdLCBkYXRhWzVdKTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBACiAJLyogRGVhbCB3aXRoIHN0cmFuZ2UgbG9va2luZyBpbnB1dHMgKi8KIAlpZiAoICh1cmItPmFjdHVhbF9sZW5ndGggIT0gNCkgfHwgKGRhdGFbMF0gIT0gMHgxNCkgfHwKIAkJKChkYXRhWzNdICYgMHgwZikgIT0gMHgwMCkgKSB7Ci0JCWF0aV9yZW1vdGVfZHVtcChkYXRhLCB1cmItPmFjdHVhbF9sZW5ndGgpOworCQlhdGlfcmVtb3RlX2R1bXAoJnVyYi0+ZGV2LT5kZXYsIGRhdGEsIHVyYi0+YWN0dWFsX2xlbmd0aCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTgxNCw3ICs4MTQsNyBAQAogCWF0aV9yZW1vdGUgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpOwogCWlmICghYXRpX3JlbW90ZSkgewotCQl3YXJuKCIlcyAtIG51bGwgZGV2aWNlP1xuIiwgX19mdW5jX18pOworCQlkZXZfd2FybigmaW50ZXJmYWNlLT5kZXYsICIlcyAtIG51bGwgZGV2aWNlP1xuIiwgX19mdW5jX18pOwogCQlyZXR1cm47CiAJfQogCkBAIC04MzQsOSArODM0LDExIEBACiAKIAlyZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJmF0aV9yZW1vdGVfZHJpdmVyKTsKIAlpZiAocmVzdWx0KQotCQllcnIoInVzYl9yZWdpc3RlciBlcnJvciAjJWRcbiIsIHJlc3VsdCk7CisJCXByaW50ayhLRVJOX0VSUiBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogdXNiX3JlZ2lzdGVyIGVycm9yICMlZFxuIiwgcmVzdWx0KTsKIAllbHNlCi0JCWluZm8oIlJlZ2lzdGVyZWQgVVNCIGRyaXZlciAiIERSSVZFUl9ERVNDICIgdi4gIiBEUklWRVJfVkVSU0lPTik7CisJCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy95ZWFsaW5rLmMgYi9kcml2ZXJzL2lucHV0L21pc2MveWVhbGluay5jCmluZGV4IDExYjVjN2UuLjkzYTIyYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy95ZWFsaW5rLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3llYWxpbmsuYwpAQCAtOTk5LDcgKzk5OSw4IEBACiB7CiAJaW50IHJldCA9IHVzYl9yZWdpc3RlcigmeWVhbGlua19kcml2ZXIpOwogCWlmIChyZXQgPT0gMCkKLQkJaW5mbyhEUklWRVJfREVTQyAiOiIgRFJJVkVSX1ZFUlNJT04pOworCQlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RhYmxldC9hY2VjYWQuYyBiL2RyaXZlcnMvaW5wdXQvdGFibGV0L2FjZWNhZC5jCmluZGV4IDU3MGUwZTguLjY3MGM2MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L2FjZWNhZC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdGFibGV0L2FjZWNhZC5jCkBAIC0yODAsNyArMjgwLDggQEAKIHsKIAlpbnQgcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZ1c2JfYWNlY2FkX2RyaXZlcik7CiAJaWYgKHJlc3VsdCA9PSAwKQotCQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L2FpcHRlay5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvYWlwdGVrLmMKaW5kZXggZTUzYzgzOC4uN2QwMDVhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90YWJsZXQvYWlwdGVrLmMKKysrIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvYWlwdGVrLmMKQEAgLTE3MDYsMjAgKzE3MDYsMjEgQEAKIAlhaXB0ZWsgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWlwdGVrKSwgR0ZQX0tFUk5FTCk7CiAJaW5wdXRkZXYgPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKIAlpZiAoIWFpcHRlayB8fCAhaW5wdXRkZXYpIHsKLQkJd2FybigiYWlwdGVrOiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IG9yIGlucHV0IGRldmljZSIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LAorCQkJICJjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IG9yIGlucHV0IGRldmljZVxuIik7CiAJCWdvdG8gZmFpbDE7CiAgICAgICAgIH0KIAogCWFpcHRlay0+ZGF0YSA9IHVzYl9idWZmZXJfYWxsb2ModXNiZGV2LCBBSVBURUtfUEFDS0VUX0xFTkdUSCwKIAkJCQkJR0ZQX0FUT01JQywgJmFpcHRlay0+ZGF0YV9kbWEpOwogICAgICAgICBpZiAoIWFpcHRlay0+ZGF0YSkgewotCQl3YXJuKCJhaXB0ZWs6IGNhbm5vdCBhbGxvY2F0ZSB1c2IgYnVmZmVyIik7CisJCWRldl93YXJuKCZpbnRmLT5kZXYsICJjYW5ub3QgYWxsb2NhdGUgdXNiIGJ1ZmZlclxuIik7CiAJCWdvdG8gZmFpbDE7CiAJfQogCiAJYWlwdGVrLT51cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCWlmICghYWlwdGVrLT51cmIpIHsKLQkgICAgICAgIHdhcm4oImFpcHRlazogY2Fubm90IGFsbG9jYXRlIHVyYiIpOworCSAgICAgICAgZGV2X3dhcm4oJmludGYtPmRldiwgImNhbm5vdCBhbGxvY2F0ZSB1cmJcbiIpOwogCQlnb3RvIGZhaWwyOwogCX0KIApAQCAtMTg0Myw4ICsxODQ0LDkgQEAKIAkJYWlwdGVrLT5jdXJTZXR0aW5nLnByb2dyYW1tYWJsZURlbGF5ID0gc3BlZWRzW2ldOwogCQkodm9pZClhaXB0ZWtfcHJvZ3JhbV90YWJsZXQoYWlwdGVrKTsKIAkJaWYgKGFpcHRlay0+aW5wdXRkZXYtPmFic21heFtBQlNfWF0gPiAwKSB7Ci0JCQlpbmZvKCJpbnB1dDogQWlwdGVrIHVzaW5nICVkIG1zIHByb2dyYW1taW5nIHNwZWVkXG4iLAotCQkJICAgICBhaXB0ZWstPmN1clNldHRpbmcucHJvZ3JhbW1hYmxlRGVsYXkpOworCQkJZGV2X2luZm8oJmludGYtPmRldiwKKwkJCQkgIkFpcHRlayB1c2luZyAlZCBtcyBwcm9ncmFtbWluZyBzcGVlZFxuIiwKKwkJCQkgYWlwdGVrLT5jdXJTZXR0aW5nLnByb2dyYW1tYWJsZURlbGF5KTsKIAkJCWJyZWFrOwogCQl9CiAJfQpAQCAtMTg1Miw3ICsxODU0LDggQEAKIAkvKiBNdXJwaHkgc2F5cyB0aGF0IHNvbWUgZGF5IHNvbWVvbmUgd2lsbCBoYXZlIGEgdGFibGV0IHRoYXQgZmFpbHMgdGhlCiAJICAgYWJvdmUgdGVzdC4gVGhhdCdzIHlvdSwgRnJlZGVyaWMgUm9kcmlnbyAqLwogCWlmIChpID09IEFSUkFZX1NJWkUoc3BlZWRzKSkgewotCQlpbmZvKCJpbnB1dDogQWlwdGVrIHRyaWVkIGFsbCBzcGVlZHMsIG5vIHNhbmUgcmVzcG9uc2UiKTsKKwkJZGV2X2luZm8oJmludGYtPmRldiwKKwkJCSAiQWlwdGVrIHRyaWVkIGFsbCBzcGVlZHMsIG5vIHNhbmUgcmVzcG9uc2VcbiIpOwogCQlnb3RvIGZhaWwyOwogCX0KIApAQCAtMTg2NCw3ICsxODY3LDggQEAKIAkgKi8KIAllcnIgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJmludGYtPmRldi5rb2JqLCAmYWlwdGVrX2F0dHJpYnV0ZV9ncm91cCk7CiAJaWYgKGVycikgewotCQl3YXJuKCJhaXB0ZWs6IGNhbm5vdCBjcmVhdGUgc3lzZnMgZ3JvdXAgZXJyOiAlZCIsIGVycik7CisJCWRldl93YXJuKCZpbnRmLT5kZXYsICJjYW5ub3QgY3JlYXRlIHN5c2ZzIGdyb3VwIGVycjogJWRcbiIsCisJCQkgZXJyKTsKIAkJZ290byBmYWlsMzsKICAgICAgICAgfQogCkBAIC0xODcyLDcgKzE4NzYsOCBAQAogCSAqLwogCWVyciA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShhaXB0ZWstPmlucHV0ZGV2KTsKIAlpZiAoZXJyKSB7Ci0JCXdhcm4oImFpcHRlazogaW5wdXRfcmVnaXN0ZXJfZGV2aWNlIHJldHVybmVkIGVycjogJWQiLCBlcnIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LAorCQkJICJpbnB1dF9yZWdpc3Rlcl9kZXZpY2UgcmV0dXJuZWQgZXJyOiAlZFxuIiwgZXJyKTsKIAkJZ290byBmYWlsNDsKICAgICAgICAgfQogCXJldHVybiAwOwpAQCAtMTkyMiw4ICsxOTI3LDkgQEAKIHsKIAlpbnQgcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZhaXB0ZWtfZHJpdmVyKTsKIAlpZiAocmVzdWx0ID09IDApIHsKLQkJaW5mbyhEUklWRVJfVkVSU0lPTiAiOiAiIERSSVZFUl9BVVRIT1IpOwotCQlpbmZvKERSSVZFUl9ERVNDKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCQkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CisJCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfQVVUSE9SICJcbiIpOwogCX0KIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90YWJsZXQvZ3Rjby5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvZ3Rjby5jCmluZGV4IDdkZjAyMjguLjU1MjRlMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L2d0Y28uYworKysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC9ndGNvLmMKQEAgLTIsNyArMiw3IEBACiAKIEdUQ08gZGlnaXRpemVyIFVTQiBkcml2ZXIKIAotVXNlIHRoZSBlcnIoKSwgZGJnKCkgYW5kIGluZm8oKSBtYWNyb3MgZnJvbSB1c2IuaCBmb3Igc3lzdGVtIGxvZ2dpbmcKK1VzZSB0aGUgZXJyKCkgYW5kIGRiZygpIG1hY3JvcyBmcm9tIHVzYi5oIGZvciBzeXN0ZW0gbG9nZ2luZwogCiBUTyBDSEVDSzogIElzIHByZXNzdXJlIGRvbmUgcmlnaHQgb24gcmVwb3J0IDU/CiAKQEAgLTEwMTAsNyArMTAxMCw3IEBACiAJCWtmcmVlKGd0Y28pOwogCX0KIAotCWluZm8oImd0Y28gZHJpdmVyIGRpc2Nvbm5lY3RlZCIpOworCWRldl9pbmZvKCZpbnRlcmZhY2UtPmRldiwgImd0Y28gZHJpdmVyIGRpc2Nvbm5lY3RlZFxuIik7CiB9CiAKIC8qICAgU1RBTkRBUkQgTU9EVUxFIExPQUQgUk9VVElORVMgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRhYi5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQva2J0YWIuYwppbmRleCBkODkxMTJmLi42NjgyYjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RhYmxldC9rYnRhYi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdGFibGV0L2tidGFiLmMKQEAgLTIxNSw3ICsyMTUsOCBAQAogCXJldHZhbCA9IHVzYl9yZWdpc3Rlcigma2J0YWJfZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIG91dDsKLQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIG91dDoKIAlyZXR1cm4gcmV0dmFsOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fc3lzLmMgYi9kcml2ZXJzL2lucHV0L3RhYmxldC93YWNvbV9zeXMuYwppbmRleCA1ZmJjNDYzLi4wOWUyMjdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RhYmxldC93YWNvbV9zeXMuYworKysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC93YWNvbV9zeXMuYwpAQCAtMzg1LDcgKzM4NSw4IEBACiAJd2Fjb21fZHJpdmVyLmlkX3RhYmxlID0gZ2V0X2RldmljZV90YWJsZSgpOwogCXJlc3VsdCA9IHVzYl9yZWdpc3Rlcigmd2Fjb21fZHJpdmVyKTsKIAlpZiAocmVzdWx0ID09IDApCi0JCWluZm8oRFJJVkVSX1ZFUlNJT04gIjoiIERSSVZFUl9ERVNDKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCQkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1tcGF0aC5jIGIvZHJpdmVycy9tZC9kbS1tcGF0aC5jCmluZGV4IDEwMzMwNGMuLjliZjM0NjBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLW1wYXRoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1tcGF0aC5jCkBAIC04NDksNyArODQ5LDcgQEAKIAlkbV9iaW9fcmVjb3JkKCZtcGlvLT5kZXRhaWxzLCBiaW8pOwogCiAJbWFwX2NvbnRleHQtPnB0ciA9IG1waW87Ci0JYmlvLT5iaV9ydyB8PSAoMSA8PCBCSU9fUldfRkFJTEZBU1QpOworCWJpby0+YmlfcncgfD0gKDEgPDwgQklPX1JXX0ZBSUxGQVNUX1RSQU5TUE9SVCk7CiAJciA9IG1hcF9pbyhtLCBiaW8sIG1waW8sIDApOwogCWlmIChyIDwgMCB8fCByID09IERNX01BUElPX1JFUVVFVUUpCiAJCW1lbXBvb2xfZnJlZShtcGlvLCBtLT5tcGlvX3Bvb2wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tdWx0aXBhdGguYyBiL2RyaXZlcnMvbWQvbXVsdGlwYXRoLmMKaW5kZXggODc0NDAxNC4uZDRhYzQ3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9tdWx0aXBhdGguYworKysgYi9kcml2ZXJzL21kL211bHRpcGF0aC5jCkBAIC0xNjcsNyArMTY3LDcgQEAKIAltcF9iaC0+YmlvID0gKmJpbzsKIAltcF9iaC0+YmlvLmJpX3NlY3RvciArPSBtdWx0aXBhdGgtPnJkZXYtPmRhdGFfb2Zmc2V0OwogCW1wX2JoLT5iaW8uYmlfYmRldiA9IG11bHRpcGF0aC0+cmRldi0+YmRldjsKLQltcF9iaC0+YmlvLmJpX3J3IHw9ICgxIDw8IEJJT19SV19GQUlMRkFTVCk7CisJbXBfYmgtPmJpby5iaV9ydyB8PSAoMSA8PCBCSU9fUldfRkFJTEZBU1RfVFJBTlNQT1JUKTsKIAltcF9iaC0+YmlvLmJpX2VuZF9pbyA9IG11bHRpcGF0aF9lbmRfcmVxdWVzdDsKIAltcF9iaC0+YmlvLmJpX3ByaXZhdGUgPSBtcF9iaDsKIAlnZW5lcmljX21ha2VfcmVxdWVzdCgmbXBfYmgtPmJpbyk7CkBAIC0zOTMsNyArMzkzLDcgQEAKIAkJCSpiaW8gPSAqKG1wX2JoLT5tYXN0ZXJfYmlvKTsKIAkJCWJpby0+Ymlfc2VjdG9yICs9IGNvbmYtPm11bHRpcGF0aHNbbXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bXVsdGlwYXRoc1ttcF9iaC0+cGF0aF0ucmRldi0+YmRldjsKLQkJCWJpby0+YmlfcncgfD0gKDEgPDwgQklPX1JXX0ZBSUxGQVNUKTsKKwkJCWJpby0+YmlfcncgfD0gKDEgPDwgQklPX1JXX0ZBSUxGQVNUX1RSQU5TUE9SVCk7CiAJCQliaW8tPmJpX2VuZF9pbyA9IG11bHRpcGF0aF9lbmRfcmVxdWVzdDsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IG1wX2JoOwogCQkJZ2VuZXJpY19tYWtlX3JlcXVlc3QoYmlvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKaW5kZXggMjI3NjQyYi4uYTg4NzgyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKQEAgLTM0ODEsNyArMzQ4MSw5IEBACiAJCQkJCX0KIAkJCQkJY3RybFZhbCA9IDA7CiAJCQkJCWZvciAoayA9IDA7IGsgPCBzdGF0ZS0+TVhMX0N0cmxbaV0uc2l6ZTsgaysrKQotCQkJCQkJY3RybFZhbCArPSBzdGF0ZS0+TVhMX0N0cmxbaV0udmFsW2tdICogKDEgPDwgayk7CisJCQkJCQljdHJsVmFsICs9IHN0YXRlLT4KKwkJCQkJCQlNWExfQ3RybFtpXS52YWxba10gKgorCQkJCQkJCSgxIDw8IGspOwogCQkJCX0gZWxzZQogCQkJCQlyZXR1cm4gLTE7CiAJCQl9CkBAIC0zNTgxLDcgKzM1ODMsNyBAQAogCiBzdGF0aWMgdTMyIE1YTF9DZWlsaW5nKHUzMiB2YWx1ZSwgdTMyIHJlc29sdXRpb24pCiB7Ci0JcmV0dXJuICh2YWx1ZS9yZXNvbHV0aW9uICsgKHZhbHVlICUgcmVzb2x1dGlvbiA+IDAgPyAxIDogMCkpOworCXJldHVybiB2YWx1ZSAvIHJlc29sdXRpb24gKyAodmFsdWUgJSByZXNvbHV0aW9uID4gMCA/IDEgOiAwKTsKIH0KIAogLyogUmV0cmlldmUgdGhlIEluaXRpYWx6YXRpb24gUmVnaXN0ZXJzICovCkBAIC0zOTEwLDcgKzM5MTIsMTAgQEAKIAogc3RhdGljIGludCBteGw1MDA1c19pbml0KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogeworCXN0cnVjdCBteGw1MDA1c19zdGF0ZSAqc3RhdGUgPSBmZS0+dHVuZXJfcHJpdjsKKwogCWRwcmludGsoMSwgIiVzKClcbiIsIF9fZnVuY19fKTsKKwlzdGF0ZS0+Y3VycmVudF9tb2RlID0gTVhMX1FBTTsKIAlyZXR1cm4gbXhsNTAwNXNfcmVjb25maWd1cmUoZmUsIE1YTF9RQU0sIE1YTDUwMDVTX0JBTkRXSURUSF82TUhaKTsKIH0KIApAQCAtNDA5Miw3ICs0MDk3LDYgQEAKIAlzdGF0ZS0+ZnJvbnRlbmQgPSBmZTsKIAlzdGF0ZS0+Y29uZmlnID0gY29uZmlnOwogCXN0YXRlLT5pMmMgPSBpMmM7Ci0Jc3RhdGUtPmN1cnJlbnRfbW9kZSA9IE1YTF9RQU07CiAKIAlwcmludGsoS0VSTl9JTkZPICJNWEw1MDA1UzogQXR0YWNoZWQgYXQgYWRkcmVzcyAweCUwMnhcbiIsCiAJCWNvbmZpZy0+aTJjX2FkZHJlc3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3R1bmVyLXNpbXBsZS5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3R1bmVyLXNpbXBsZS5jCmluZGV4IDJhMWFhYzEuLmZiM2YzYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy90dW5lci1zaW1wbGUuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdHVuZXItc2ltcGxlLmMKQEAgLTQ5Myw2ICs0OTMsNyBAQAogCWNhc2UgVFVORVJfUEhJTElQU19GTTEyMTZNRV9NSzM6CiAJY2FzZSBUVU5FUl9QSElMSVBTX0ZNMTIzNl9NSzM6CiAJY2FzZSBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRV9NSzM6CisJY2FzZSBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRVhfTUszOgogCWNhc2UgVFVORVJfTEdfTlRTQ19UQVBFOgogCWNhc2UgVFVORVJfUEhJTElQU19GTTEyNTZfSUgzOgogCWNhc2UgVFVORVJfVENMX01GMDJHSVBfNU46CkBAIC03NjcsNiArNzY4LDcgQEAKIAogCXN3aXRjaCAocHJpdi0+dHlwZSkgewogCWNhc2UgVFVORVJfUEhJTElQU19GTUQxMjE2TUVfTUszOgorCWNhc2UgVFVORVJfUEhJTElQU19GTUQxMjE2TUVYX01LMzoKIAkJaWYgKHBhcmFtcy0+dS5vZmRtLmJhbmR3aWR0aCA9PSBCQU5EV0lEVEhfOF9NSFogJiYKIAkJICAgIHBhcmFtcy0+ZnJlcXVlbmN5ID49IDE1ODg3MDAwMCkKIAkJCWJ1ZlszXSB8PSAweDA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3R1bmVyLXR5cGVzLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdHVuZXItdHlwZXMuYwppbmRleCAwNDk2MWExLi43YzBiYzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdHVuZXItdHlwZXMuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdHVuZXItdHlwZXMuYwpAQCAtOTQ2LDcgKzk0Niw3IEBACiAJfSwKIH07CiAKLS8qIC0tLS0tLS0tLS0tLSBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRV9NSzMgLSBQaGlsaXBzIFBBTCAtLS0tLS0tLS0tLS0gKi8KKy8qIC0tLS0tLS0tLS0tLSBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRShYKV9NSzMgLSBQaGlsaXBzIFBBTCAtLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIHN0cnVjdCB0dW5lcl9yYW5nZSB0dW5lcl9waGlsaXBzX2ZtZDEyMTZtZV9tazNfcGFsX3Jhbmdlc1tdID0gewogCXsgMTYgKiAxNjAuMDAgLypNSHoqLywgMHg4NiwgMHg1MSwgfSwKQEAgLTk4NCw2ICs5ODQsMjcgQEAKIAl9LAogfTsKIAorc3RhdGljIHN0cnVjdCB0dW5lcl9wYXJhbXMgdHVuZXJfcGhpbGlwc19mbWQxMjE2bWV4X21rM19wYXJhbXNbXSA9IHsKKwl7CisJCS50eXBlICAgPSBUVU5FUl9QQVJBTV9UWVBFX1BBTCwKKwkJLnJhbmdlcyA9IHR1bmVyX3BoaWxpcHNfZm1kMTIxNm1lX21rM19wYWxfcmFuZ2VzLAorCQkuY291bnQgID0gQVJSQVlfU0laRSh0dW5lcl9waGlsaXBzX2ZtZDEyMTZtZV9tazNfcGFsX3JhbmdlcyksCisJCS5oYXNfdGRhOTg4NyA9IDEsCisJCS5wb3J0MV9hY3RpdmUgPSAxLAorCQkucG9ydDJfYWN0aXZlID0gMSwKKwkJLnBvcnQyX2ZtX2hpZ2hfc2Vuc2l0aXZpdHkgPSAxLAorCQkucG9ydDJfaW52ZXJ0X2Zvcl9zZWNhbV9sYyA9IDEsCisJCS5wb3J0MV9zZXRfZm9yX2ZtX21vbm8gPSAxLAorCQkucmFkaW9faWYgPSAxLAorCQkuZm1fZ2Fpbl9ub3JtYWwgPSAxLAorCX0sCisJeworCQkudHlwZSAgID0gVFVORVJfUEFSQU1fVFlQRV9ESUdJVEFMLAorCQkucmFuZ2VzID0gdHVuZXJfcGhpbGlwc19mbWQxMjE2bWVfbWszX2R2Yl9yYW5nZXMsCisJCS5jb3VudCAgPSBBUlJBWV9TSVpFKHR1bmVyX3BoaWxpcHNfZm1kMTIxNm1lX21rM19kdmJfcmFuZ2VzKSwKKwkJLmlmZnJlcSA9IDE2ICogMzYuMTI1LCAvKk1IeiovCisJfSwKK307CiAKIC8qIC0tLS0tLSBUVU5FUl9MR19URFZTX0gwNlhGIC0gTEcgSU5OT1RFSyAvIElORklORU9OIEFUU0MgLS0tLS0gKi8KIApAQCAtMTY2Myw2ICsxNjg0LDE2IEBACiAJCS5wYXJhbXMgPSB0dW5lcl90Y2xfbWYwMmdpcF81bl9wYXJhbXMsCiAJCS5jb3VudCAgPSBBUlJBWV9TSVpFKHR1bmVyX3RjbF9tZjAyZ2lwXzVuX3BhcmFtcyksCiAJfSwKKwlbVFVORVJfUEhJTElQU19GTUQxMjE2TUVYX01LM10gPSB7IC8qIFBoaWxpcHMgUEFMICovCisJCS5uYW1lICAgPSAiUGhpbGlwcyBGTUQxMjE2TUVYIE1LMyBIeWJyaWQgVHVuZXIiLAorCQkucGFyYW1zID0gdHVuZXJfcGhpbGlwc19mbWQxMjE2bWV4X21rM19wYXJhbXMsCisJCS5jb3VudCAgPSBBUlJBWV9TSVpFKHR1bmVyX3BoaWxpcHNfZm1kMTIxNm1leF9tazNfcGFyYW1zKSwKKwkJLm1pbiA9IDE2ICogIDUwLjg3LAorCQkubWF4ID0gMTYgKiA4NTguMDAsCisJCS5zdGVwc2l6ZSA9IDE2NjY2NywKKwkJLmluaXRkYXRhID0gdHVhNjAzeF9hZ2MxMTIsCisJCS5zbGVlcGRhdGEgPSAodThbXSl7IDQsIDB4OWMsIDB4NjAsIDB4ODUsIDB4NTQgfSwKKwl9LAogfTsKIEVYUE9SVF9TWU1CT0wodHVuZXJzKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3hjNTAwMC5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3hjNTAwMC5jCmluZGV4IGY5YzJiYjkuLmUxMmQxM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy94YzUwMDAuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMveGM1MDAwLmMKQEAgLTQzLDcgKzQzLDcgQEAKIHN0YXRpYyBERUZJTkVfTVVURVgoeGM1MDAwX2xpc3RfbXV0ZXgpOwogc3RhdGljIExJU1RfSEVBRChoeWJyaWRfdHVuZXJfaW5zdGFuY2VfbGlzdCk7CiAKLSNkZWZpbmUgZHByaW50ayhsZXZlbCxmbXQsIGFyZy4uLikgaWYgKGRlYnVnID49IGxldmVsKSBcCisjZGVmaW5lIGRwcmludGsobGV2ZWwsIGZtdCwgYXJnLi4uKSBpZiAoZGVidWcgPj0gbGV2ZWwpIFwKIAlwcmludGsoS0VSTl9JTkZPICIlczogIiBmbXQsICJ4YzUwMDAiLCAjIyBhcmcpCiAKICNkZWZpbmUgWEM1MDAwX0RFRkFVTFRfRklSTVdBUkUgImR2Yi1mZS14YzUwMDAtMS4xLmZ3IgpAQCAtMTM4LDExICsxMzgsMTEgQEAKICAgIGltbWVkaWF0ZWx5IHRoZSBsZW5ndGggb2YgdGhlIGZvbGxvd2luZyB0cmFuc2FjdGlvbi4KIAogKi8KLXR5cGVkZWYgc3RydWN0IHsKK3N0cnVjdCBYQ19UVl9TVEFOREFSRCB7CiAJY2hhciAqTmFtZTsKIAl1MTYgQXVkaW9Nb2RlOwogCXUxNiBWaWRlb01vZGU7Ci19IFhDX1RWX1NUQU5EQVJEOworfTsKIAogLyogVHVuZXIgc3RhbmRhcmRzICovCiAjZGVmaW5lIE1OX05UU0NfUEFMX0JUU0MJMApAQCAtMTY5LDcgKzE2OSw3IEBACiAjZGVmaW5lIEZNX1JhZGlvX0lOUFVUMiAJMjEKICNkZWZpbmUgRk1fUmFkaW9fSU5QVVQxIAkyMgogCi1zdGF0aWMgWENfVFZfU1RBTkRBUkQgWEM1MDAwX1N0YW5kYXJkW01BWF9UVl9TVEFOREFSRF0gPSB7CitzdGF0aWMgc3RydWN0IFhDX1RWX1NUQU5EQVJEIFhDNTAwMF9TdGFuZGFyZFtNQVhfVFZfU1RBTkRBUkRdID0gewogCXsiTS9OLU5UU0MvUEFMLUJUU0MiLCAweDA0MDAsIDB4ODAyMH0sCiAJeyJNL04tTlRTQy9QQUwtQTIiLCAgIDB4MDYwMCwgMHg4MDIwfSwKIAl7Ik0vTi1OVFNDL1BBTC1FSUFKIiwgMHgwNDQwLCAweDgwMjB9LApAQCAtMTgzLDcgKzE4Myw3IEBACiAJeyJEL0stUEFMLU5JQ0FNIiwgICAgIDB4MEU4MCwgMHg4MDA5fSwKIAl7IkQvSy1QQUwtTU9OTyIsICAgICAgMHgxNDc4LCAweDgwMDl9LAogCXsiRC9LLVNFQ0FNLUEyIERLMSIsICAweDEyMDAsIDB4ODAwOX0sCi0JeyJEL0stU0VDQU0tQTIgTC9ESzMiLDB4MEUwMCwgMHg4MDA5fSwKKwl7IkQvSy1TRUNBTS1BMiBML0RLMyIsIDB4MEUwMCwgMHg4MDA5fSwKIAl7IkQvSy1TRUNBTS1BMiBNT05PIiwgMHgxNDc4LCAweDgwMDl9LAogCXsiTC1TRUNBTS1OSUNBTSIsICAgICAweDhFODIsIDB4MDAwOX0sCiAJeyJMJy1TRUNBTS1OSUNBTSIsICAgIDB4OEU4MiwgMHg0MDA5fSwKQEAgLTMwNyw5ICszMDcsMTAgQEAKIAl1bnNpZ25lZCBpbnQgbGVuLCBwb3MsIGluZGV4OwogCXU4IGJ1ZltYQ19NQVhfSTJDX1dSSVRFX0xFTkdUSF07CiAKLQlpbmRleD0wOwotCXdoaWxlICgoaTJjX3NlcXVlbmNlW2luZGV4XSE9MHhGRikgfHwgKGkyY19zZXF1ZW5jZVtpbmRleCsxXSE9MHhGRikpIHsKLQkJbGVuID0gaTJjX3NlcXVlbmNlW2luZGV4XSogMjU2ICsgaTJjX3NlcXVlbmNlW2luZGV4KzFdOworCWluZGV4ID0gMDsKKwl3aGlsZSAoKGkyY19zZXF1ZW5jZVtpbmRleF0gIT0gMHhGRikgfHwKKwkJKGkyY19zZXF1ZW5jZVtpbmRleCArIDFdICE9IDB4RkYpKSB7CisJCWxlbiA9IGkyY19zZXF1ZW5jZVtpbmRleF0gKiAyNTYgKyBpMmNfc2VxdWVuY2VbaW5kZXgrMV07CiAJCWlmIChsZW4gPT0gMHgwMDAwKSB7CiAJCQkvKiBSRVNFVCBjb21tYW5kICovCiAJCQlyZXN1bHQgPSB4Y19yZXNldChmZSk7CkBAIC0zMjksMTUgKzMzMCwxNyBAQAogCQkJYnVmWzFdID0gaTJjX3NlcXVlbmNlW2luZGV4ICsgMV07CiAJCQlwb3MgPSAyOwogCQkJd2hpbGUgKHBvcyA8IGxlbikgewotCQkJCWlmICgobGVuIC0gcG9zKSA+IFhDX01BWF9JMkNfV1JJVEVfTEVOR1RIIC0gMikgewotCQkJCQluYnl0ZXNfdG9fc2VuZCA9IFhDX01BWF9JMkNfV1JJVEVfTEVOR1RIOwotCQkJCX0gZWxzZSB7CisJCQkJaWYgKChsZW4gLSBwb3MpID4gWENfTUFYX0kyQ19XUklURV9MRU5HVEggLSAyKQorCQkJCQluYnl0ZXNfdG9fc2VuZCA9CisJCQkJCQlYQ19NQVhfSTJDX1dSSVRFX0xFTkdUSDsKKwkJCQllbHNlCiAJCQkJCW5ieXRlc190b19zZW5kID0gKGxlbiAtIHBvcyArIDIpOworCQkJCWZvciAoaSA9IDI7IGkgPCBuYnl0ZXNfdG9fc2VuZDsgaSsrKSB7CisJCQkJCWJ1ZltpXSA9IGkyY19zZXF1ZW5jZVtpbmRleCArIHBvcyArCisJCQkJCQlpIC0gMl07CiAJCQkJfQotCQkJCWZvciAoaT0yOyBpPG5ieXRlc190b19zZW5kOyBpKyspIHsKLQkJCQkJYnVmW2ldID0gaTJjX3NlcXVlbmNlW2luZGV4ICsgcG9zICsgaSAtIDJdOwotCQkJCX0KLQkJCQlyZXN1bHQgPSB4Y19zZW5kX2kyY19kYXRhKHByaXYsIGJ1ZiwgbmJ5dGVzX3RvX3NlbmQpOworCQkJCXJlc3VsdCA9IHhjX3NlbmRfaTJjX2RhdGEocHJpdiwgYnVmLAorCQkJCQluYnl0ZXNfdG9fc2VuZCk7CiAKIAkJCQlpZiAocmVzdWx0ICE9IFhDX1JFU1VMVF9TVUNDRVNTKQogCQkJCQlyZXR1cm4gcmVzdWx0OwpAQCAtMzg2LDggKzM4OSw3IEBACiAJZHByaW50aygxLCAiJXMoJWQpIFNvdXJjZSA9ICVzXG4iLCBfX2Z1bmNfXywgcmZfbW9kZSwKIAkJcmZfbW9kZSA9PSBYQ19SRl9NT0RFX0FJUiA/ICJBTlRFTk5BIiA6ICJDQUJMRSIpOwogCi0JaWYgKChyZl9tb2RlICE9IFhDX1JGX01PREVfQUlSKSAmJiAocmZfbW9kZSAhPSBYQ19SRl9NT0RFX0NBQkxFKSkKLQl7CisJaWYgKChyZl9tb2RlICE9IFhDX1JGX01PREVfQUlSKSAmJiAocmZfbW9kZSAhPSBYQ19SRl9NT0RFX0NBQkxFKSkgewogCQlyZl9tb2RlID0gWENfUkZfTU9ERV9DQUJMRTsKIAkJcHJpbnRrKEtFUk5fRVJSCiAJCQkiJXMoKSwgSW52YWxpZCBtb2RlLCBkZWZhdWx0aW5nIHRvIENBQkxFIiwKQEAgLTU2MCwxMyArNTYyLDEzIEBACiAJCS5mbGFncyA9IEkyQ19NX1JELCAuYnVmID0gYnVmLCAubGVuID0gbGVuIH07CiAKIAlpZiAoaTJjX3RyYW5zZmVyKHByaXYtPmkyY19wcm9wcy5hZGFwLCAmbXNnLCAxKSAhPSAxKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAieGM1MDAwIEkyQyByZWFkIGZhaWxlZCAobGVuPSVpKVxuIiwoaW50KWxlbik7CisJCXByaW50ayhLRVJOX0VSUiAieGM1MDAwIEkyQyByZWFkIGZhaWxlZCAobGVuPSVpKVxuIiwgKGludClsZW4pOwogCQlyZXR1cm4gLUVSRU1PVEVJTzsKIAl9CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgeGM1MDAwX2Z3dXBsb2FkKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIGludCB4YzUwMDBfZnd1cGxvYWQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7CiAJc3RydWN0IHhjNTAwMF9wcml2ICpwcml2ID0gZmUtPnR1bmVyX3ByaXY7CiAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKQEAgLTU3Niw3ICs1NzgsOCBAQAogCXByaW50ayhLRVJOX0lORk8gInhjNTAwMDogd2FpdGluZyBmb3IgZmlybXdhcmUgdXBsb2FkICglcykuLi5cbiIsCiAJCVhDNTAwMF9ERUZBVUxUX0ZJUk1XQVJFKTsKIAotCXJldCA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCBYQzUwMDBfREVGQVVMVF9GSVJNV0FSRSwgJnByaXYtPmkyY19wcm9wcy5hZGFwLT5kZXYpOworCXJldCA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCBYQzUwMDBfREVGQVVMVF9GSVJNV0FSRSwKKwkJJnByaXYtPmkyY19wcm9wcy5hZGFwLT5kZXYpOwogCWlmIChyZXQpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJ4YzUwMDA6IFVwbG9hZCBmYWlsZWQuIChmaWxlIG5vdCBmb3VuZD8pXG4iKTsKIAkJcmV0ID0gWENfUkVTVUxUX1JFU0VUX0ZBSUxVUkU7CkBAIC01OTIsNyArNTk1LDcgQEAKIAkJcmV0ID0gWENfUkVTVUxUX1JFU0VUX0ZBSUxVUkU7CiAJfSBlbHNlIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAieGM1MDAwOiBmaXJtd2FyZSB1cGxvYWRcbiIpOwotCQlyZXQgPSB4Y19sb2FkX2kyY19zZXF1ZW5jZShmZSwgIGZ3LT5kYXRhICk7CisJCXJldCA9IHhjX2xvYWRfaTJjX3NlcXVlbmNlKGZlLCAgZnctPmRhdGEpOwogCX0KIAogb3V0OgpAQCAtNjUxLDcgKzY1NCw3IEBACiAKIAlkcHJpbnRrKDEsICIlcygpIGZyZXF1ZW5jeT0lZCAoSHopXG4iLCBfX2Z1bmNfXywgcGFyYW1zLT5mcmVxdWVuY3kpOwogCi0Jc3dpdGNoKHBhcmFtcy0+dS52c2IubW9kdWxhdGlvbikgeworCXN3aXRjaCAocGFyYW1zLT51LnZzYi5tb2R1bGF0aW9uKSB7CiAJY2FzZSBWU0JfODoKIAljYXNlIFZTQl8xNjoKIAkJZHByaW50aygxLCAiJXMoKSBWU0IgbW9kdWxhdGlvblxuIiwgX19mdW5jX18pOwpAQCAtNzQ4LDQyICs3NTEsNDIgQEAKIAkvKiBGSVggTUU6IFNvbWUgdmlkZW8gc3RhbmRhcmRzIG1heSBoYXZlIHNldmVyYWwgcG9zc2libGUgYXVkaW8KIAkJICAgc3RhbmRhcmRzLiBXZSBzaW1wbHkgZGVmYXVsdCB0byBvbmUgb2YgdGhlbSBoZXJlLgogCSAqLwotCWlmKHBhcmFtcy0+c3RkICYgVjRMMl9TVERfTU4pIHsKKwlpZiAocGFyYW1zLT5zdGQgJiBWNEwyX1NURF9NTikgewogCQkvKiBkZWZhdWx0IHRvIEJUU0MgYXVkaW8gc3RhbmRhcmQgKi8KIAkJcHJpdi0+dmlkZW9fc3RhbmRhcmQgPSBNTl9OVFNDX1BBTF9CVFNDOwogCQlnb3RvIHR1bmVfY2hhbm5lbDsKIAl9CiAKLQlpZihwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1BBTF9CRykgeworCWlmIChwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1BBTF9CRykgewogCQkvKiBkZWZhdWx0IHRvIE5JQ0FNIGF1ZGlvIHN0YW5kYXJkICovCiAJCXByaXYtPnZpZGVvX3N0YW5kYXJkID0gQkdfUEFMX05JQ0FNOwogCQlnb3RvIHR1bmVfY2hhbm5lbDsKIAl9CiAKLQlpZihwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1BBTF9JKSB7CisJaWYgKHBhcmFtcy0+c3RkICYgVjRMMl9TVERfUEFMX0kpIHsKIAkJLyogZGVmYXVsdCB0byBOSUNBTSBhdWRpbyBzdGFuZGFyZCAqLwogCQlwcml2LT52aWRlb19zdGFuZGFyZCA9IElfUEFMX05JQ0FNOwogCQlnb3RvIHR1bmVfY2hhbm5lbDsKIAl9CiAKLQlpZihwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1BBTF9ESykgeworCWlmIChwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1BBTF9ESykgewogCQkvKiBkZWZhdWx0IHRvIE5JQ0FNIGF1ZGlvIHN0YW5kYXJkICovCiAJCXByaXYtPnZpZGVvX3N0YW5kYXJkID0gREtfUEFMX05JQ0FNOwogCQlnb3RvIHR1bmVfY2hhbm5lbDsKIAl9CiAKLQlpZihwYXJhbXMtPnN0ZCAmIFY0TDJfU1REX1NFQ0FNX0RLKSB7CisJaWYgKHBhcmFtcy0+c3RkICYgVjRMMl9TVERfU0VDQU1fREspIHsKIAkJLyogZGVmYXVsdCB0byBBMiBESzEgYXVkaW8gc3RhbmRhcmQgKi8KIAkJcHJpdi0+dmlkZW9fc3RhbmRhcmQgPSBES19TRUNBTV9BMkRLMTsKIAkJZ290byB0dW5lX2NoYW5uZWw7CiAJfQogCi0JaWYocGFyYW1zLT5zdGQgJiBWNEwyX1NURF9TRUNBTV9MKSB7CisJaWYgKHBhcmFtcy0+c3RkICYgVjRMMl9TVERfU0VDQU1fTCkgewogCQlwcml2LT52aWRlb19zdGFuZGFyZCA9IExfU0VDQU1fTklDQU07CiAJCWdvdG8gdHVuZV9jaGFubmVsOwogCX0KIAotCWlmKHBhcmFtcy0+c3RkICYgVjRMMl9TVERfU0VDQU1fTEMpIHsKKwlpZiAocGFyYW1zLT5zdGQgJiBWNEwyX1NURF9TRUNBTV9MQykgewogCQlwcml2LT52aWRlb19zdGFuZGFyZCA9IExDX1NFQ0FNX05JQ0FNOwogCQlnb3RvIHR1bmVfY2hhbm5lbDsKIAl9CkBAIC03OTEsNyArNzk0LDcgQEAKIHR1bmVfY2hhbm5lbDoKIAlyZXQgPSB4Y19TZXRTaWduYWxTb3VyY2UocHJpdiwgcHJpdi0+cmZfbW9kZSk7CiAJaWYgKHJldCAhPSBYQ19SRVNVTFRfU1VDQ0VTUykgewotCXByaW50ayhLRVJOX0VSUgorCQlwcmludGsoS0VSTl9FUlIKIAkJCSJ4YzUwMDA6IHhjX1NldFNpZ25hbFNvdXJjZSglZCkgZmFpbGVkXG4iLAogCQkJcHJpdi0+cmZfbW9kZSk7CiAJCXJldHVybiAtRVJFTU9URUlPOwpAQCAtODYzLDcgKzg2Niw3IEBACiAJICogSTJDIHRyYW5zYWN0aW9ucyB1bnRpbCBjYWxpYnJhdGlvbiBpcyBjb21wbGV0ZS4gIFRoaXMgd2F5IHdlCiAJICogZG9uJ3QgaGF2ZSB0byByZWx5IG9uIGNsb2NrIHN0cmV0Y2hpbmcgd29ya2luZy4KIAkgKi8KLQl4Y193YWl0KCAxMDAgKTsKKwl4Y193YWl0KDEwMCk7CiAKIAkvKiBEZWZhdWx0IHRvICJDQUJMRSIgbW9kZSAqLwogCXJldCB8PSB4Y193cml0ZV9yZWcocHJpdiwgWFJFR19TSUdOQUxTT1VSQ0UsIFhDX1JGX01PREVfQ0FCTEUpOwpAQCAtODg1LDE1ICs4ODgsMTMgQEAKIAkgKi8KIAogCXJldCA9IHhjX3NodXRkb3duKHByaXYpOwotCWlmKHJldCAhPSBYQ19SRVNVTFRfU1VDQ0VTUykgeworCWlmIChyZXQgIT0gWENfUkVTVUxUX1NVQ0NFU1MpIHsKIAkJcHJpbnRrKEtFUk5fRVJSCiAJCQkieGM1MDAwOiAlcygpIHVuYWJsZSB0byBzaHV0ZG93biB0dW5lclxuIiwKIAkJCV9fZnVuY19fKTsKIAkJcmV0dXJuIC1FUkVNT1RFSU87Ci0JfQotCWVsc2UgeworCX0gZWxzZQogCQlyZXR1cm4gWENfUkVTVUxUX1NVQ0NFU1M7Ci0JfQogfQogCiBzdGF0aWMgaW50IHhjNTAwMF9pbml0KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQpAQCAtOTg5LDcgKzk5MCw3IEBACiAJaWYgKHhjNTAwMF9yZWFkcmVnKHByaXYsIFhSRUdfUFJPRFVDVF9JRCwgJmlkKSAhPSAwKQogCQlnb3RvIGZhaWw7CiAKLQlzd2l0Y2goaWQpIHsKKwlzd2l0Y2ggKGlkKSB7CiAJY2FzZSBYQ19QUk9EVUNUX0lEX0ZXX0xPQURFRDoKIAkJcHJpbnRrKEtFUk5fSU5GTwogCQkJInhjNTAwMDogU3VjY2Vzc2Z1bGx5IGlkZW50aWZpZWQgYXQgYWRkcmVzcyAweCUwMnhcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMveGM1MDAwLmggYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMveGM1MDAwLmgKaW5kZXggY2YxYTU1OC4uZjRjMTQ2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3hjNTAwMC5oCisrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy94YzUwMDAuaApAQCAtNDUsMTcgKzQ1LDE3IEBACiAKICNpZiBkZWZpbmVkKENPTkZJR19NRURJQV9UVU5FUl9YQzUwMDApIHx8IFwKICAgICAoZGVmaW5lZChDT05GSUdfTUVESUFfVFVORVJfWEM1MDAwX01PRFVMRSkgJiYgZGVmaW5lZChNT0RVTEUpKQotZXh0ZXJuIHN0cnVjdCBkdmJfZnJvbnRlbmQqIHhjNTAwMF9hdHRhY2goc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCitleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCAqeGM1MDAwX2F0dGFjaChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKIAkJCQkJICBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYywKIAkJCQkJICBzdHJ1Y3QgeGM1MDAwX2NvbmZpZyAqY2ZnKTsKICNlbHNlCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBkdmJfZnJvbnRlbmQqIHhjNTAwMF9hdHRhY2goc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkdmJfZnJvbnRlbmQgKnhjNTAwMF9hdHRhY2goc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCiAJCQkJCQkgc3RydWN0IGkyY19hZGFwdGVyICppMmMsCiAJCQkJCQkgc3RydWN0IHhjNTAwMF9jb25maWcgKmNmZykKIHsKIAlwcmludGsoS0VSTl9XQVJOSU5HICIlczogZHJpdmVyIGRpc2FibGVkIGJ5IEtjb25maWdcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gTlVMTDsKIH0KLSNlbmRpZiAvLyBDT05GSUdfTUVESUFfVFVORVJfWEM1MDAwCisjZW5kaWYKIAotI2VuZGlmIC8vIF9fWEM1MDAwX0hfXworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kbTExMDUvZG0xMTA1LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9kbTExMDUvZG0xMTA1LmMKaW5kZXggZjczMjE0NC4uMTRlNjI3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZG0xMTA1L2RtMTEwNS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2RtMTEwNS9kbTExMDUuYwpAQCAtNTk1LDYgKzU5NSwxOCBAQAogCWRtMTEwNWR2Yl9kbWFfdW5tYXAoZG0xMTA1ZHZiKTsKIH0KIAorc3RhdGljIHN0cnVjdCBzdHYwMjk5X2NvbmZpZyBzaGFycF96MDE5NGFfY29uZmlnID0geworCS5kZW1vZF9hZGRyZXNzID0gMHg2OCwKKwkuaW5pdHRhYiA9IHNoYXJwX3owMTk0YV9pbml0dGFiLAorCS5tY2xrID0gODgwMDAwMDBVTCwKKwkuaW52ZXJ0ID0gMSwKKwkuc2tpcF9yZWluaXQgPSAwLAorCS5sb2NrX291dHB1dCA9IFNUVjAyOTlfTE9DS09VVFBVVF8xLAorCS52b2x0MTNfb3AwX29wMSA9IFNUVjAyOTlfVk9MVDEzX09QMSwKKwkubWluX2RlbGF5X21zID0gMTAwLAorCS5zZXRfc3ltYm9sX3JhdGUgPSBzaGFycF96MDE5NGFfc2V0X3N5bWJvbF9yYXRlLAorfTsKKwogc3RhdGljIHN0cnVjdCBzdHYwMjg4X2NvbmZpZyBlYXJkYV9jb25maWcgPSB7CiAJLmRlbW9kX2FkZHJlc3MgPSAweDY4LAogCS5taW5fZGVsYXlfbXMgPSAxMDAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJfZnJvbnRlbmQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCmluZGV4IGYxNzBlODIuLjU2ODlkMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCkBAIC00Nyw2ICs0Nyw3IEBACiBzdGF0aWMgaW50IGR2Yl9mb3JjZV9hdXRvX2ludmVyc2lvbjsKIHN0YXRpYyBpbnQgZHZiX292ZXJyaWRlX3R1bmVfZGVsYXk7CiBzdGF0aWMgaW50IGR2Yl9wb3dlcmRvd25fb25fc2xlZXAgPSAxOworc3RhdGljIGludCBkdmJfbWZlX3dhaXRfdGltZSA9IDU7CiAKIG1vZHVsZV9wYXJhbV9uYW1lZChmcm9udGVuZF9kZWJ1ZywgZHZiX2Zyb250ZW5kX2RlYnVnLCBpbnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhmcm9udGVuZF9kZWJ1ZywgIlR1cm4gb24vb2ZmIGZyb250ZW5kIGNvcmUgZGVidWdnaW5nIChkZWZhdWx0Om9mZikuIik7CkBAIC01OCw2ICs1OSw4IEBACiBNT0RVTEVfUEFSTV9ERVNDKGR2Yl9vdmVycmlkZV90dW5lX2RlbGF5LCAiMDogbm9ybWFsIChkZWZhdWx0KSwgPjAgPT4gZGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGxvY2sgYWZ0ZXIgYSB0dW5lIGF0dGVtcHQiKTsKIG1vZHVsZV9wYXJhbShkdmJfcG93ZXJkb3duX29uX3NsZWVwLCBpbnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhkdmJfcG93ZXJkb3duX29uX3NsZWVwLCAiMDogZG8gbm90IHBvd2VyIGRvd24sIDE6IHR1cm4gTE5CIHZvbHRhZ2Ugb2ZmIG9uIHNsZWVwIChkZWZhdWx0KSIpOworbW9kdWxlX3BhcmFtKGR2Yl9tZmVfd2FpdF90aW1lLCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyhkdmJfbWZlX3dhaXRfdGltZSwgIldhaXQgdXAgdG8gPG1mZV93YWl0X3RpbWU+IHNlY29uZHMgb24gb3BlbigpIGZvciBtdWx0aS1mcm9udGVuZCB0byBiZWNvbWUgYXZhaWxhYmxlIChkZWZhdWx0OjUgc2Vjb25kcykiKTsKIAogI2RlZmluZSBkcHJpbnRrIGlmIChkdmJfZnJvbnRlbmRfZGVidWcpIHByaW50awogCkBAIC0yMTIsOCArMjE1LDkgQEAKIAogc3RhdGljIHZvaWQgZHZiX2Zyb250ZW5kX2luaXQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7Ci0JZHByaW50ayAoIkRWQjogaW5pdGlhbGlzaW5nIGZyb250ZW5kICVpICglcykuLi5cbiIsCisJZHByaW50ayAoIkRWQjogaW5pdGlhbGlzaW5nIGFkYXB0ZXIgJWkgZnJvbnRlbmQgJWkgKCVzKS4uLlxuIiwKIAkJIGZlLT5kdmItPm51bSwKKwkJIGZlLT5pZCwKIAkJIGZlLT5vcHMuaW5mby5uYW1lKTsKIAogCWlmIChmZS0+b3BzLmluaXQpCkBAIC02ODYsNyArNjkwLDcgQEAKIAltYigpOwogCiAJZmVfdGhyZWFkID0ga3RocmVhZF9ydW4oZHZiX2Zyb250ZW5kX3RocmVhZCwgZmUsCi0JCSJrZHZiLWZlLSVpIiwgZmUtPmR2Yi0+bnVtKTsKKwkJImtkdmItYWQtJWktZmUtJWkiLCBmZS0+ZHZiLT5udW0sZmUtPmlkKTsKIAlpZiAoSVNfRVJSKGZlX3RocmVhZCkpIHsKIAkJcmV0ID0gUFRSX0VSUihmZV90aHJlYWQpOwogCQlwcmludGsoImR2Yl9mcm9udGVuZF9zdGFydDogZmFpbGVkIHRvIHN0YXJ0IGt0aHJlYWQgKCVkKVxuIiwgcmV0KTsKQEAgLTcxMCw4ICs3MTQsOCBAQAogCQkqZnJlcV9tYXggPSBtaW4oZmUtPm9wcy5pbmZvLmZyZXF1ZW5jeV9tYXgsIGZlLT5vcHMudHVuZXJfb3BzLmluZm8uZnJlcXVlbmN5X21heCk7CiAKIAlpZiAoKmZyZXFfbWluID09IDAgfHwgKmZyZXFfbWF4ID09IDApCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgIkRWQjogZnJvbnRlbmQgJXUgZnJlcXVlbmN5IGxpbWl0cyB1bmRlZmluZWQgLSBmaXggdGhlIGRyaXZlclxuIiwKLQkJICAgICAgIGZlLT5kdmItPm51bSk7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIkRWQjogYWRhcHRlciAlaSBmcm9udGVuZCAldSBmcmVxdWVuY3kgbGltaXRzIHVuZGVmaW5lZCAtIGZpeCB0aGUgZHJpdmVyXG4iLAorCQkgICAgICAgZmUtPmR2Yi0+bnVtLGZlLT5pZCk7CiB9CiAKIHN0YXRpYyBpbnQgZHZiX2Zyb250ZW5kX2NoZWNrX3BhcmFtZXRlcnMoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCkBAIC03MjQsOCArNzI4LDggQEAKIAlkdmJfZnJvbnRlbmRfZ2V0X2ZyZXF1ZW55X2xpbWl0cyhmZSwgJmZyZXFfbWluLCAmZnJlcV9tYXgpOwogCWlmICgoZnJlcV9taW4gJiYgcGFybXMtPmZyZXF1ZW5jeSA8IGZyZXFfbWluKSB8fAogCSAgICAoZnJlcV9tYXggJiYgcGFybXMtPmZyZXF1ZW5jeSA+IGZyZXFfbWF4KSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJEVkI6IGZyb250ZW5kICV1IGZyZXF1ZW5jeSAldSBvdXQgb2YgcmFuZ2UgKCV1Li4ldSlcbiIsCi0JCSAgICAgICBmZS0+ZHZiLT5udW0sIHBhcm1zLT5mcmVxdWVuY3ksIGZyZXFfbWluLCBmcmVxX21heCk7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIkRWQjogYWRhcHRlciAlaSBmcm9udGVuZCAlaSBmcmVxdWVuY3kgJXUgb3V0IG9mIHJhbmdlICgldS4uJXUpXG4iLAorCQkgICAgICAgZmUtPmR2Yi0+bnVtLCBmZS0+aWQsIHBhcm1zLT5mcmVxdWVuY3ksIGZyZXFfbWluLCBmcmVxX21heCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNzM1LDggKzczOSw4IEBACiAJCSAgICAgcGFybXMtPnUucXBzay5zeW1ib2xfcmF0ZSA8IGZlLT5vcHMuaW5mby5zeW1ib2xfcmF0ZV9taW4pIHx8CiAJCSAgICAoZmUtPm9wcy5pbmZvLnN5bWJvbF9yYXRlX21heCAmJgogCQkgICAgIHBhcm1zLT51LnFwc2suc3ltYm9sX3JhdGUgPiBmZS0+b3BzLmluZm8uc3ltYm9sX3JhdGVfbWF4KSkgewotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiRFZCOiBmcm9udGVuZCAldSBzeW1ib2wgcmF0ZSAldSBvdXQgb2YgcmFuZ2UgKCV1Li4ldSlcbiIsCi0JCQkgICAgICAgZmUtPmR2Yi0+bnVtLCBwYXJtcy0+dS5xcHNrLnN5bWJvbF9yYXRlLAorCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiRFZCOiBhZGFwdGVyICVpIGZyb250ZW5kICVpIHN5bWJvbCByYXRlICV1IG91dCBvZiByYW5nZSAoJXUuLiV1KVxuIiwKKwkJCSAgICAgICBmZS0+ZHZiLT5udW0sIGZlLT5pZCwgcGFybXMtPnUucXBzay5zeW1ib2xfcmF0ZSwKIAkJCSAgICAgICBmZS0+b3BzLmluZm8uc3ltYm9sX3JhdGVfbWluLCBmZS0+b3BzLmluZm8uc3ltYm9sX3JhdGVfbWF4KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CkBAIC03NDYsOCArNzUwLDggQEAKIAkJICAgICBwYXJtcy0+dS5xYW0uc3ltYm9sX3JhdGUgPCBmZS0+b3BzLmluZm8uc3ltYm9sX3JhdGVfbWluKSB8fAogCQkgICAgKGZlLT5vcHMuaW5mby5zeW1ib2xfcmF0ZV9tYXggJiYKIAkJICAgICBwYXJtcy0+dS5xYW0uc3ltYm9sX3JhdGUgPiBmZS0+b3BzLmluZm8uc3ltYm9sX3JhdGVfbWF4KSkgewotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiRFZCOiBmcm9udGVuZCAldSBzeW1ib2wgcmF0ZSAldSBvdXQgb2YgcmFuZ2UgKCV1Li4ldSlcbiIsCi0JCQkgICAgICAgZmUtPmR2Yi0+bnVtLCBwYXJtcy0+dS5xYW0uc3ltYm9sX3JhdGUsCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICJEVkI6IGFkYXB0ZXIgJWkgZnJvbnRlbmQgJWkgc3ltYm9sIHJhdGUgJXUgb3V0IG9mIHJhbmdlICgldS4uJXUpXG4iLAorCQkJICAgICAgIGZlLT5kdmItPm51bSwgZmUtPmlkLCBwYXJtcy0+dS5xYW0uc3ltYm9sX3JhdGUsCiAJCQkgICAgICAgZmUtPm9wcy5pbmZvLnN5bWJvbF9yYXRlX21pbiwgZmUtPm9wcy5pbmZvLnN5bWJvbF9yYXRlX21heCk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpAQCAtODk5LDMwICs5MDMsMzAgQEAKIAlpbnQgaTsKIAogCWlmICh0dnAtPmNtZCA8PSAwIHx8IHR2cC0+Y21kID4gRFRWX01BWF9DT01NQU5EKSB7Ci0JCXByaW50aygiJXM6IHR2cC5jbWQgPSAweCUwOHggKHVuZGVmaW5lZC91bmtub3duL2ludmFsaWQpXG4iLAorCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogdHZwLmNtZCA9IDB4JTA4eCB1bmRlZmluZWRcbiIsCiAJCQlfX2Z1bmNfXywgdHZwLT5jbWQpOwogCQlyZXR1cm47CiAJfQogCi0JcHJpbnRrKCIlcygpIHR2cC5jbWQgICAgPSAweCUwOHggKCVzKVxuIgotCQksX19GVU5DVElPTl9fCisJZHByaW50aygiJXMoKSB0dnAuY21kICAgID0gMHglMDh4ICglcylcbiIKKwkJLF9fZnVuY19fCiAJCSx0dnAtPmNtZAogCQksZHR2X2NtZHNbIHR2cC0+Y21kIF0ubmFtZSk7CiAKIAlpZihkdHZfY21kc1sgdHZwLT5jbWQgXS5idWZmZXIpIHsKIAotCQlwcmludGsoIiVzKCkgdHZwLnUuYnVmZmVyLmxlbiA9IDB4JTAyeFxuIgotCQkJLF9fRlVOQ1RJT05fXworCQlkcHJpbnRrKCIlcygpIHR2cC51LmJ1ZmZlci5sZW4gPSAweCUwMnhcbiIKKwkJCSxfX2Z1bmNfXwogCQkJLHR2cC0+dS5idWZmZXIubGVuKTsKIAogCQlmb3IoaSA9IDA7IGkgPCB0dnAtPnUuYnVmZmVyLmxlbjsgaSsrKQotCQkJcHJpbnRrKCIlcygpIHR2cC51LmJ1ZmZlci5kYXRhWzB4JTAyeF0gPSAweCUwMnhcbiIKLQkJCQksX19GVU5DVElPTl9fCisJCQlkcHJpbnRrKCIlcygpIHR2cC51LmJ1ZmZlci5kYXRhWzB4JTAyeF0gPSAweCUwMnhcbiIKKwkJCQksX19mdW5jX18KIAkJCQksaQogCQkJCSx0dnAtPnUuYnVmZmVyLmRhdGFbaV0pOwogCiAJfSBlbHNlCi0JCXByaW50aygiJXMoKSB0dnAudS5kYXRhID0gMHglMDh4XG4iLCBfX0ZVTkNUSU9OX18sIHR2cC0+dS5kYXRhKTsKKwkJZHByaW50aygiJXMoKSB0dnAudS5kYXRhID0gMHglMDh4XG4iLCBfX2Z1bmNfXywgdHZwLT51LmRhdGEpOwogfQogCiBpbnQgaXNfbGVnYWN5X2RlbGl2ZXJ5X3N5c3RlbShmZV9kZWxpdmVyeV9zeXN0ZW1fdCBzKQpAQCAtOTQyLDggKzk0Niw2IEBACiB7CiAJc3RydWN0IGR0dl9mcm9udGVuZF9wcm9wZXJ0aWVzICpjID0gJmZlLT5kdHZfcHJvcGVydHlfY2FjaGU7CiAKLQlwcmludGsoIiVzKClcbiIsIF9fRlVOQ1RJT05fXyk7Ci0KIAljLT5mcmVxdWVuY3kgPSBwLT5mcmVxdWVuY3k7CiAJYy0+aW52ZXJzaW9uID0gcC0+aW52ZXJzaW9uOwogCkBAIC05OTgsMjcgKzEwMDAsMjUgQEAKIAlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3ByaXZhdGUgKmZlcHJpdiA9IGZlLT5mcm9udGVuZF9wcml2OwogCXN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCA9ICZmZXByaXYtPnBhcmFtZXRlcnM7CiAKLQlwcmludGsoIiVzKClcbiIsIF9fRlVOQ1RJT05fXyk7Ci0KIAlwLT5mcmVxdWVuY3kgPSBjLT5mcmVxdWVuY3k7CiAJcC0+aW52ZXJzaW9uID0gYy0+aW52ZXJzaW9uOwogCiAJc3dpdGNoIChmZS0+b3BzLmluZm8udHlwZSkgewogCWNhc2UgRkVfUVBTSzoKLQkJcHJpbnRrKCIlcygpIFByZXBhcmluZyBRUFNLIHJlcVxuIiwgX19GVU5DVElPTl9fKTsKKwkJZHByaW50aygiJXMoKSBQcmVwYXJpbmcgUVBTSyByZXFcbiIsIF9fZnVuY19fKTsKIAkJcC0+dS5xcHNrLnN5bWJvbF9yYXRlID0gYy0+c3ltYm9sX3JhdGU7CiAJCXAtPnUucXBzay5mZWNfaW5uZXIgPSBjLT5mZWNfaW5uZXI7CiAJCWMtPmRlbGl2ZXJ5X3N5c3RlbSA9IFNZU19EVkJTOwogCQlicmVhazsKIAljYXNlIEZFX1FBTToKLQkJcHJpbnRrKCIlcygpIFByZXBhcmluZyBRQU0gcmVxXG4iLCBfX0ZVTkNUSU9OX18pOworCQlkcHJpbnRrKCIlcygpIFByZXBhcmluZyBRQU0gcmVxXG4iLCBfX2Z1bmNfXyk7CiAJCXAtPnUucWFtLnN5bWJvbF9yYXRlID0gYy0+c3ltYm9sX3JhdGU7CiAJCXAtPnUucWFtLmZlY19pbm5lciA9IGMtPmZlY19pbm5lcjsKIAkJcC0+dS5xYW0ubW9kdWxhdGlvbiA9IGMtPm1vZHVsYXRpb247CiAJCWMtPmRlbGl2ZXJ5X3N5c3RlbSA9IFNZU19EVkJDX0FOTkVYX0FDOwogCQlicmVhazsKIAljYXNlIEZFX09GRE06Ci0JCXByaW50aygiJXMoKSBQcmVwYXJpbmcgT0ZETSByZXFcbiIsIF9fRlVOQ1RJT05fXyk7CisJCWRwcmludGsoIiVzKCkgUHJlcGFyaW5nIE9GRE0gcmVxXG4iLCBfX2Z1bmNfXyk7CiAJCWlmIChjLT5iYW5kd2lkdGhfaHogPT0gNjAwMDAwMCkKIAkJCXAtPnUub2ZkbS5iYW5kd2lkdGggPSBCQU5EV0lEVEhfNl9NSFo7CiAJCWVsc2UgaWYgKGMtPmJhbmR3aWR0aF9oeiA9PSA3MDAwMDAwKQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAKIAkJYy0+ZGVsaXZlcnlfc3lzdGVtID0gU1lTX0RWQlQ7CiAJCWJyZWFrOwogCWNhc2UgRkVfQVRTQzoKLQkJcHJpbnRrKCIlcygpIFByZXBhcmluZyBWU0IgcmVxXG4iLCBfX0ZVTkNUSU9OX18pOworCQlkcHJpbnRrKCIlcygpIFByZXBhcmluZyBWU0IgcmVxXG4iLCBfX2Z1bmNfXyk7CiAJCXAtPnUudnNiLm1vZHVsYXRpb24gPSBjLT5tb2R1bGF0aW9uOwogCQlpZiAoKGMtPm1vZHVsYXRpb24gPT0gVlNCXzgpIHx8IChjLT5tb2R1bGF0aW9uID09IFZTQl8xNikpCiAJCQljLT5kZWxpdmVyeV9zeXN0ZW0gPSBTWVNfQVRTQzsKQEAgLTEwNTUsMTQgKzEwNTUsMTMgQEAKIAlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3ByaXZhdGUgKmZlcHJpdiA9IGZlLT5mcm9udGVuZF9wcml2OwogCXN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCA9ICZmZXByaXYtPnBhcmFtZXRlcnM7CiAKLQlwcmludGsoIiVzKClcbiIsIF9fRlVOQ1RJT05fXyk7Ci0KIAlwLT5mcmVxdWVuY3kgPSBjLT5mcmVxdWVuY3k7CiAJcC0+aW52ZXJzaW9uID0gYy0+aW52ZXJzaW9uOwogCiAJc3dpdGNoKGMtPm1vZHVsYXRpb24pIHsKIAljYXNlIFBTS184OgogCWNhc2UgQVBTS18xNjoKKwljYXNlIEFQU0tfMzI6CiAJY2FzZSBRUFNLOgogCQlwLT51LnFwc2suc3ltYm9sX3JhdGUgPSBjLT5zeW1ib2xfcmF0ZTsKIAkJcC0+dS5xcHNrLmZlY19pbm5lciA9IGMtPmZlY19pbm5lcjsKQEAgLTEwODksMTkgKzEwODgsMTcgQEAKIHsKIAlzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMgKmMgPSAmZmUtPmR0dl9wcm9wZXJ0eV9jYWNoZTsKIAotCXByaW50aygiJXMoKVxuIiwgX19GVU5DVElPTl9fKTsKLQogCS8qIEZvciBsZWdhY3kgZGVsaXZlcnkgc3lzdGVtcyB3ZSBkb24ndCBuZWVkIHRoZSBkZWxpdmVyeV9zeXN0ZW0gdG8KIAkgKiBiZSBzcGVjaWZpZWQsIGJ1dCB3ZSBwb3B1bGF0ZSB0aGUgb2xkZXIgc3RydWN0dXJlcyBmcm9tIHRoZSBjYWNoZQogCSAqIHNvIHdlIGNhbiBjYWxsIHNldF9mcm9udGVuZCBvbiBvbGRlciBkcml2ZXJzLgogCSAqLwogCWlmKGlzX2xlZ2FjeV9kZWxpdmVyeV9zeXN0ZW0oYy0+ZGVsaXZlcnlfc3lzdGVtKSkgewogCi0JCXByaW50aygiJXMoKSBsZWdhY3ksIG1vZHVsYXRpb24gPSAlZFxuIiwgX19GVU5DVElPTl9fLCBjLT5tb2R1bGF0aW9uKTsKKwkJZHByaW50aygiJXMoKSBsZWdhY3ksIG1vZHVsYXRpb24gPSAlZFxuIiwgX19mdW5jX18sIGMtPm1vZHVsYXRpb24pOwogCQlkdHZfcHJvcGVydHlfbGVnYWN5X3BhcmFtc19zeW5jKGZlKTsKIAogCX0gZWxzZSB7Ci0JCXByaW50aygiJXMoKSBhZHYsIG1vZHVsYXRpb24gPSAlZFxuIiwgX19GVU5DVElPTl9fLCBjLT5tb2R1bGF0aW9uKTsKKwkJZHByaW50aygiJXMoKSBhZHYsIG1vZHVsYXRpb24gPSAlZFxuIiwgX19mdW5jX18sIGMtPm1vZHVsYXRpb24pOwogCiAJCS8qIEZvciBhZHZhbmNlZCBkZWxpdmVyeSBzeXN0ZW1zIC8gbW9kdWxhdGlvbiB0eXBlcyAuLi4KIAkJICogd2Ugc2VlZCB0aGUgbGVjYWN5IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzIHN0cnVjdHVyZQpAQCAtMTEyMyw4ICsxMTIwLDYgQEAKIHsKIAlpbnQgciA9IDA7CiAKLQlwcmludGsoIiVzKClcbiIsIF9fRlVOQ1RJT05fXyk7Ci0KIAlkdHZfcHJvcGVydHlfZHVtcCh0dnApOwogCiAJLyogQWxsb3cgdGhlIGZyb250ZW5kIHRvIHZhbGlkYXRlIGluY29taW5nIHByb3BlcnRpZXMgKi8KQEAgLTExOTgsNyArMTE5Myw2IEBACiB7CiAJaW50IHIgPSAwOwogCXN0cnVjdCBkdmJfZnJvbnRlbmRfcHJpdmF0ZSAqZmVwcml2ID0gZmUtPmZyb250ZW5kX3ByaXY7Ci0JcHJpbnRrKCIlcygpXG4iLCBfX0ZVTkNUSU9OX18pOwogCWR0dl9wcm9wZXJ0eV9kdW1wKHR2cCk7CiAKIAkvKiBBbGxvdyB0aGUgZnJvbnRlbmQgdG8gdmFsaWRhdGUgaW5jb21pbmcgcHJvcGVydGllcyAqLwpAQCAtMTIxMyw3ICsxMjA3LDcgQEAKIAkJLyogUmVzZXQgYSBjYWNoZSBvZiBkYXRhIHNwZWNpZmljIHRvIHRoZSBmcm9udGVuZCBoZXJlLiBUaGlzIGRvZXMKIAkJICogbm90IGVmZmVjdCBoYXJkd2FyZS4KIAkJICovCi0JCXByaW50aygiJXMoKSBGbHVzaGluZyBwcm9wZXJ0eSBjYWNoZVxuIiwgX19GVU5DVElPTl9fKTsKKwkJZHByaW50aygiJXMoKSBGbHVzaGluZyBwcm9wZXJ0eSBjYWNoZVxuIiwgX19mdW5jX18pOwogCQltZW1zZXQoJmZlLT5kdHZfcHJvcGVydHlfY2FjaGUsIDAsIHNpemVvZihzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMpKTsKIAkJZmUtPmR0dl9wcm9wZXJ0eV9jYWNoZS5zdGF0ZSA9IHR2cC0+Y21kOwogCQlmZS0+ZHR2X3Byb3BlcnR5X2NhY2hlLmRlbGl2ZXJ5X3N5c3RlbSA9IFNZU19VTkRFRklORUQ7CkBAIC0xMjI0LDcgKzEyMTgsNyBAQAogCQkgKiBpb2N0bC4KIAkJICovCiAJCWZlLT5kdHZfcHJvcGVydHlfY2FjaGUuc3RhdGUgPSB0dnAtPmNtZDsKLQkJcHJpbnRrKCIlcygpIEZpbmFsaXNlZCBwcm9wZXJ0eSBjYWNoZVxuIiwgX19GVU5DVElPTl9fKTsKKwkJZHByaW50aygiJXMoKSBGaW5hbGlzZWQgcHJvcGVydHkgY2FjaGVcbiIsIF9fZnVuY19fKTsKIAkJZHR2X3Byb3BlcnR5X2NhY2hlX3N1Ym1pdChmZSk7CiAKIAkJciB8PSBkdmJfZnJvbnRlbmRfaW9jdGxfbGVnYWN5KGlub2RlLCBmaWxlLCBGRV9TRVRfRlJPTlRFTkQsCkBAIC0xMzM1LDEyICsxMzI5LDEwIEBACiAJZHByaW50aygiJXNcbiIsIF9fZnVuY19fKTsKIAogCWlmKGNtZCA9PSBGRV9TRVRfUFJPUEVSVFkpIHsKLQkJcHJpbnRrKCIlcygpIEZFX1NFVF9QUk9QRVJUWVxuIiwgX19GVU5DVElPTl9fKTsKLQogCQl0dnBzID0gKHN0cnVjdCBkdHZfcHJvcGVydGllcyBfX3VzZXIgKilwYXJnOwogCi0JCXByaW50aygiJXMoKSBwcm9wZXJ0aWVzLm51bSA9ICVkXG4iLCBfX0ZVTkNUSU9OX18sIHR2cHMtPm51bSk7Ci0JCXByaW50aygiJXMoKSBwcm9wZXJ0aWVzLnByb3BzID0gJXBcbiIsIF9fRlVOQ1RJT05fXywgdHZwcy0+cHJvcHMpOworCQlkcHJpbnRrKCIlcygpIHByb3BlcnRpZXMubnVtID0gJWRcbiIsIF9fZnVuY19fLCB0dnBzLT5udW0pOworCQlkcHJpbnRrKCIlcygpIHByb3BlcnRpZXMucHJvcHMgPSAlcFxuIiwgX19mdW5jX18sIHR2cHMtPnByb3BzKTsKIAogCQkvKiBQdXQgYW4gYXJiaXRyYXJ5IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCBjYW4KIAkJICogYmUgc2VudCBhdCBvbmNlICovCkBAIC0xMzY0LDE4ICsxMzU2LDE2IEBACiAJCQllcnIgfD0gKHR2cCArIGkpLT5yZXN1bHQ7CiAJCX0KIAotCQlpZihmZS0+ZHR2X3Byb3BlcnR5X2NhY2hlLnN0YXRlID09IERUVl9UVU5FKSB7Ci0JCQlwcmludGsoIiVzKCkgUHJvcGVydHkgY2FjaGUgaXMgZnVsbCwgdHVuaW5nXG4iLCBfX0ZVTkNUSU9OX18pOwotCQl9CisJCWlmKGZlLT5kdHZfcHJvcGVydHlfY2FjaGUuc3RhdGUgPT0gRFRWX1RVTkUpCisJCQlkcHJpbnRrKCIlcygpIFByb3BlcnR5IGNhY2hlIGlzIGZ1bGwsIHR1bmluZ1xuIiwgX19mdW5jX18pOwogCiAJfSBlbHNlCiAJaWYoY21kID09IEZFX0dFVF9QUk9QRVJUWSkgewotCQlwcmludGsoIiVzKCkgRkVfR0VUX1BST1BFUlRZXG4iLCBfX0ZVTkNUSU9OX18pOwogCiAJCXR2cHMgPSAoc3RydWN0IGR0dl9wcm9wZXJ0aWVzIF9fdXNlciAqKXBhcmc7CiAKLQkJcHJpbnRrKCIlcygpIHByb3BlcnRpZXMubnVtID0gJWRcbiIsIF9fRlVOQ1RJT05fXywgdHZwcy0+bnVtKTsKLQkJcHJpbnRrKCIlcygpIHByb3BlcnRpZXMucHJvcHMgPSAlcFxuIiwgX19GVU5DVElPTl9fLCB0dnBzLT5wcm9wcyk7CisJCWRwcmludGsoIiVzKCkgcHJvcGVydGllcy5udW0gPSAlZFxuIiwgX19mdW5jX18sIHR2cHMtPm51bSk7CisJCWRwcmludGsoIiVzKCkgcHJvcGVydGllcy5wcm9wcyA9ICVwXG4iLCBfX2Z1bmNfXywgdHZwcy0+cHJvcHMpOwogCiAJCS8qIFB1dCBhbiBhcmJpdHJhcnkgbGltaXQgb24gdGhlIG51bWJlciBvZiBtZXNzYWdlcyB0aGF0IGNhbgogCQkgKiBiZSBzZW50IGF0IG9uY2UgKi8KQEAgLTE3MDQsMTMgKzE2OTQsNTMgQEAKIAlzdHJ1Y3QgZHZiX2RldmljZSAqZHZiZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlID0gZHZiZGV2LT5wcml2OwogCXN0cnVjdCBkdmJfZnJvbnRlbmRfcHJpdmF0ZSAqZmVwcml2ID0gZmUtPmZyb250ZW5kX3ByaXY7CisJc3RydWN0IGR2Yl9hZGFwdGVyICphZGFwdGVyID0gZmUtPmR2YjsKIAlpbnQgcmV0OwogCiAJZHByaW50ayAoIiVzXG4iLCBfX2Z1bmNfXyk7CiAKKwlpZiAoYWRhcHRlci0+bWZlX3NoYXJlZCkgeworCQltdXRleF9sb2NrICgmYWRhcHRlci0+bWZlX2xvY2spOworCisJCWlmIChhZGFwdGVyLT5tZmVfZHZiZGV2ID09IE5VTEwpCisJCQlhZGFwdGVyLT5tZmVfZHZiZGV2ID0gZHZiZGV2OworCisJCWVsc2UgaWYgKGFkYXB0ZXItPm1mZV9kdmJkZXYgIT0gZHZiZGV2KSB7CisJCQlzdHJ1Y3QgZHZiX2RldmljZQorCQkJCSptZmVkZXYgPSBhZGFwdGVyLT5tZmVfZHZiZGV2OworCQkJc3RydWN0IGR2Yl9mcm9udGVuZAorCQkJCSptZmUgPSBtZmVkZXYtPnByaXY7CisJCQlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3ByaXZhdGUKKwkJCQkqbWZlcHJpdiA9IG1mZS0+ZnJvbnRlbmRfcHJpdjsKKwkJCWludCBtZmVyZXRyeSA9IChkdmJfbWZlX3dhaXRfdGltZSA8PCAxKTsKKworCQkJbXV0ZXhfdW5sb2NrICgmYWRhcHRlci0+bWZlX2xvY2spOworCQkJd2hpbGUgKG1mZXJldHJ5LS0gJiYgKG1mZWRldi0+dXNlcnMgIT0gLTEgfHwKKwkJCQkJbWZlcHJpdi0+dGhyZWFkICE9IE5VTEwpKSB7CisJCQkJaWYobXNsZWVwX2ludGVycnVwdGlibGUoNTAwKSkgeworCQkJCQlpZihzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKKwkJCQkJCXJldHVybiAtRUlOVFI7CisJCQkJfQorCQkJfQorCisJCQltdXRleF9sb2NrICgmYWRhcHRlci0+bWZlX2xvY2spOworCQkJaWYoYWRhcHRlci0+bWZlX2R2YmRldiAhPSBkdmJkZXYpIHsKKwkJCQltZmVkZXYgPSBhZGFwdGVyLT5tZmVfZHZiZGV2OworCQkJCW1mZSA9IG1mZWRldi0+cHJpdjsKKwkJCQltZmVwcml2ID0gbWZlLT5mcm9udGVuZF9wcml2OworCQkJCWlmIChtZmVkZXYtPnVzZXJzICE9IC0xIHx8CisJCQkJCQltZmVwcml2LT50aHJlYWQgIT0gTlVMTCkgeworCQkJCQltdXRleF91bmxvY2sgKCZhZGFwdGVyLT5tZmVfbG9jayk7CisJCQkJCXJldHVybiAtRUJVU1k7CisJCQkJfQorCQkJCWFkYXB0ZXItPm1mZV9kdmJkZXYgPSBkdmJkZXY7CisJCQl9CisJCX0KKwl9CisKIAlpZiAoZHZiZGV2LT51c2VycyA9PSAtMSAmJiBmZS0+b3BzLnRzX2J1c19jdHJsKSB7CiAJCWlmICgocmV0ID0gZmUtPm9wcy50c19idXNfY3RybChmZSwgMSkpIDwgMCkKLQkJCXJldHVybiByZXQ7CisJCQlnb3RvIGVycjA7CiAJfQogCiAJaWYgKChyZXQgPSBkdmJfZ2VuZXJpY19vcGVuIChpbm9kZSwgZmlsZSkpIDwgMCkKQEAgLTE3MzAsNiArMTc2MCw4IEBACiAJCWZlcHJpdi0+ZXZlbnRzLmV2ZW50ciA9IGZlcHJpdi0+ZXZlbnRzLmV2ZW50dyA9IDA7CiAJfQogCisJaWYgKGFkYXB0ZXItPm1mZV9zaGFyZWQpCisJCW11dGV4X3VubG9jayAoJmFkYXB0ZXItPm1mZV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogCiBlcnIyOgpAQCAtMTczNyw2ICsxNzY5LDkgQEAKIGVycjE6CiAJaWYgKGR2YmRldi0+dXNlcnMgPT0gLTEgJiYgZmUtPm9wcy50c19idXNfY3RybCkKIAkJZmUtPm9wcy50c19idXNfY3RybChmZSwgMCk7CitlcnIwOgorCWlmIChhZGFwdGVyLT5tZmVfc2hhcmVkKQorCQltdXRleF91bmxvY2sgKCZhZGFwdGVyLT5tZmVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTgwNiw4ICsxODQxLDkgQEAKIAlmZS0+ZHZiID0gZHZiOwogCWZlcHJpdi0+aW52ZXJzaW9uID0gSU5WRVJTSU9OX09GRjsKIAotCXByaW50ayAoIkRWQjogcmVnaXN0ZXJpbmcgZnJvbnRlbmQgJWkgKCVzKS4uLlxuIiwKKwlwcmludGsgKCJEVkI6IHJlZ2lzdGVyaW5nIGFkYXB0ZXIgJWkgZnJvbnRlbmQgJWkgKCVzKS4uLlxuIiwKIAkJZmUtPmR2Yi0+bnVtLAorCQlmZS0+aWQsCiAJCWZlLT5vcHMuaW5mby5uYW1lKTsKIAogCWR2Yl9yZWdpc3Rlcl9kZXZpY2UgKGZlLT5kdmIsICZmZXByaXYtPmR2YmRldiwgJmR2YmRldl90ZW1wbGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmgKaW5kZXggMzA1NTMwMS4uZGI0YTYzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmgKQEAgLTIyMiw2ICsyMjIsNyBAQAogCXN0cnVjdCBkdHZfZnJvbnRlbmRfcHJvcGVydGllcyBkdHZfcHJvcGVydHlfY2FjaGU7CiAjZGVmaW5lIERWQl9GUk9OVEVORF9DT01QT05FTlRfVFVORVIgMAogCWludCAoKmNhbGxiYWNrKSh2b2lkICphZGFwdGVyX3ByaXYsIGludCBjb21wb25lbnQsIGludCBjbWQsIGludCBhcmcpOworCWludCBpZDsKIH07CiAKIGV4dGVybiBpbnQgZHZiX3JlZ2lzdGVyX2Zyb250ZW5kKHN0cnVjdCBkdmJfYWRhcHRlciAqZHZiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiZGV2LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJkZXYuYwppbmRleCA2NjU3NzZkLi5hMTEzNzQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJkZXYuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJkZXYuYwpAQCAtMzI2LDYgKzMyNiw5IEBACiAJYWRhcC0+bmFtZSA9IG5hbWU7CiAJYWRhcC0+bW9kdWxlID0gbW9kdWxlOwogCWFkYXAtPmRldmljZSA9IGRldmljZTsKKwlhZGFwLT5tZmVfc2hhcmVkID0gMDsKKwlhZGFwLT5tZmVfZHZiZGV2ID0gTlVMTDsKKwltdXRleF9pbml0ICgmYWRhcC0+bWZlX2xvY2spOwogCiAJbGlzdF9hZGRfdGFpbCAoJmFkYXAtPmxpc3RfaGVhZCwgJmR2Yl9hZGFwdGVyX2xpc3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJkZXYuaCBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2YmRldi5oCmluZGV4IDg5ZDEyZGMuLjU3NGUzMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2YmRldi5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2YmRldi5oCkBAIC02Miw2ICs2MiwxMCBAQAogCXN0cnVjdCBkZXZpY2UgKmRldmljZTsKIAogCXN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKKworCWludCBtZmVfc2hhcmVkOwkJCS8qIGluZGljYXRlcyBtdXR1YWxseSBleGNsdXNpdmUgZnJvbnRlbmRzICovCisJc3RydWN0IGR2Yl9kZXZpY2UgKm1mZV9kdmJkZXY7CS8qIGZyb250ZW5kIGRldmljZSBpbiB1c2UgKi8KKwlzdHJ1Y3QgbXV0ZXggbWZlX2xvY2s7CQkvKiBhY2Nlc3MgbG9jayBmb3IgdGhyZWFkIGNyZWF0aW9uICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZHcyMTAyLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2R3MjEwMi5jCmluZGV4IGNhNTNkZjYuLjYyODZmYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZHcyMTAyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9kdzIxMDIuYwpAQCAtNDIyLDYgKzQyMiwxOCBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgc3RydWN0IHN0djAyOTlfY29uZmlnIHNoYXJwX3owMTk0YV9jb25maWcgPSB7CisJLmRlbW9kX2FkZHJlc3MgPSAweDY4LAorCS5pbml0dGFiID0gc2hhcnBfejAxOTRhX2luaXR0YWIsCisJLm1jbGsgPSA4ODAwMDAwMFVMLAorCS5pbnZlcnQgPSAxLAorCS5za2lwX3JlaW5pdCA9IDAsCisJLmxvY2tfb3V0cHV0ID0gU1RWMDI5OV9MT0NLT1VUUFVUXzEsCisJLnZvbHQxM19vcDBfb3AxID0gU1RWMDI5OV9WT0xUMTNfT1AxLAorCS5taW5fZGVsYXlfbXMgPSAxMDAsCisJLnNldF9zeW1ib2xfcmF0ZSA9IHNoYXJwX3owMTk0YV9zZXRfc3ltYm9sX3JhdGUsCit9OworCiBzdGF0aWMgc3RydWN0IGN4MjQxMTZfY29uZmlnIGR3MjEwNF9jb25maWcgPSB7CiAJLmRlbW9kX2FkZHJlc3MgPSAweDU1LAogCS5tcGdfY2xrX3Bvc19wb2wgPSAweDAxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAyLmMKaW5kZXggOTQzMGUwMy4uNWQxYWJlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jCkBAIC0zNCwxMyArMzQsMTIgQEAKICNpbmNsdWRlICJkdmJfZnJvbnRlbmQuaCIKICNpbmNsdWRlICJjeDIyNzAyLmgiCiAKLQogc3RydWN0IGN4MjI3MDJfc3RhdGUgewogCi0Jc3RydWN0IGkyY19hZGFwdGVyKiBpMmM7CisJc3RydWN0IGkyY19hZGFwdGVyICppMmM7CiAKIAkvKiBjb25maWd1cmF0aW9uIHNldHRpbmdzICovCi0JY29uc3Qgc3RydWN0IGN4MjI3MDJfY29uZmlnKiBjb25maWc7CisJY29uc3Qgc3RydWN0IGN4MjI3MDJfY29uZmlnICpjb25maWc7CiAKIAlzdHJ1Y3QgZHZiX2Zyb250ZW5kIGZyb250ZW5kOwogCkBAIC00OSwxMCArNDgsMTMgQEAKIH07CiAKIHN0YXRpYyBpbnQgZGVidWc7Cittb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRW5hYmxlIHZlcmJvc2UgZGVidWcgbWVzc2FnZXMiKTsKKwogI2RlZmluZSBkcHJpbnRrCWlmIChkZWJ1ZykgcHJpbnRrCiAKIC8qIFJlZ2lzdGVyIHZhbHVlcyB0byBpbml0aWFsaXNlIHRoZSBkZW1vZCAqLwotc3RhdGljIHU4IGluaXRfdGFiIFtdID0geworc3RhdGljIHU4IGluaXRfdGFiW10gPSB7CiAJMHgwMCwgMHgwMCwgLyogU3RvcCBhcXVpc2l0aW9uICovCiAJMHgwQiwgMHgwNiwKIAkweDA5LCAweDAxLApAQCAtODAsNjUgKzgyLDY3IEBACiAJMHhmZCwgMHgwMCwKIH07CiAKLXN0YXRpYyBpbnQgY3gyMjcwMl93cml0ZXJlZyAoc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlLCB1OCByZWcsIHU4IGRhdGEpCitzdGF0aWMgaW50IGN4MjI3MDJfd3JpdGVyZWcoc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlLCB1OCByZWcsIHU4IGRhdGEpCiB7CiAJaW50IHJldDsKLQl1OCBidWYgW10gPSB7IHJlZywgZGF0YSB9OwotCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsgLmFkZHIgPSBzdGF0ZS0+Y29uZmlnLT5kZW1vZF9hZGRyZXNzLCAuZmxhZ3MgPSAwLCAuYnVmID0gYnVmLCAubGVuID0gMiB9OworCXU4IGJ1ZltdID0geyByZWcsIGRhdGEgfTsKKwlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7CisJCS5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywgLmZsYWdzID0gMCwKKwkJCS5idWYgPSBidWYsIC5sZW4gPSAyIH07CiAKIAlyZXQgPSBpMmNfdHJhbnNmZXIoc3RhdGUtPmkyYywgJm1zZywgMSk7CiAKIAlpZiAocmV0ICE9IDEpCi0JCXByaW50aygiJXM6IHdyaXRlcmVnIGVycm9yIChyZWcgPT0gMHglMDJ4LCB2YWwgPT0gMHglMDJ4LCByZXQgPT0gJWkpXG4iLAorCQlwcmludGsoS0VSTl9FUlIKKwkJCSIlczogZXJyb3IgKHJlZyA9PSAweCUwMngsIHZhbCA9PSAweCUwMngsIHJldCA9PSAlaSlcbiIsCiAJCQlfX2Z1bmNfXywgcmVnLCBkYXRhLCByZXQpOwogCiAJcmV0dXJuIChyZXQgIT0gMSkgPyAtMSA6IDA7CiB9CiAKLXN0YXRpYyB1OCBjeDIyNzAyX3JlYWRyZWcgKHN0cnVjdCBjeDIyNzAyX3N0YXRlKiBzdGF0ZSwgdTggcmVnKQorc3RhdGljIHU4IGN4MjI3MDJfcmVhZHJlZyhzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUsIHU4IHJlZykKIHsKIAlpbnQgcmV0OwotCXU4IGIwIFtdID0geyByZWcgfTsKLQl1OCBiMSBbXSA9IHsgMCB9OworCXU4IGIwW10gPSB7IHJlZyB9OworCXU4IGIxW10gPSB7IDAgfTsKIAotCXN0cnVjdCBpMmNfbXNnIG1zZyBbXSA9IHsKLQkJeyAuYWRkciA9IHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsIC5mbGFncyA9IDAsIC5idWYgPSBiMCwgLmxlbiA9IDEgfSwKLQkJeyAuYWRkciA9IHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsIC5mbGFncyA9IEkyQ19NX1JELCAuYnVmID0gYjEsIC5sZW4gPSAxIH0gfTsKKwlzdHJ1Y3QgaTJjX21zZyBtc2dbXSA9IHsKKwkJeyAuYWRkciA9IHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsIC5mbGFncyA9IDAsCisJCQkuYnVmID0gYjAsIC5sZW4gPSAxIH0sCisJCXsgLmFkZHIgPSBzdGF0ZS0+Y29uZmlnLT5kZW1vZF9hZGRyZXNzLCAuZmxhZ3MgPSBJMkNfTV9SRCwKKwkJCS5idWYgPSBiMSwgLmxlbiA9IDEgfSB9OwogCiAJcmV0ID0gaTJjX3RyYW5zZmVyKHN0YXRlLT5pMmMsIG1zZywgMik7CiAKIAlpZiAocmV0ICE9IDIpCi0JCXByaW50aygiJXM6IHJlYWRyZWcgZXJyb3IgKHJldCA9PSAlaSlcbiIsIF9fZnVuY19fLCByZXQpOworCQlwcmludGsoS0VSTl9FUlIgIiVzOiByZWFkcmVnIGVycm9yIChyZXQgPT0gJWkpXG4iLAorCQkJX19mdW5jX18sIHJldCk7CiAKIAlyZXR1cm4gYjFbMF07CiB9CiAKLXN0YXRpYyBpbnQgY3gyMjcwMl9zZXRfaW52ZXJzaW9uIChzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUsIGludCBpbnZlcnNpb24pCitzdGF0aWMgaW50IGN4MjI3MDJfc2V0X2ludmVyc2lvbihzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUsIGludCBpbnZlcnNpb24pCiB7CiAJdTggdmFsOwogCiAJc3dpdGNoIChpbnZlcnNpb24pIHsKLQotCQljYXNlIElOVkVSU0lPTl9BVVRPOgotCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCi0JCWNhc2UgSU5WRVJTSU9OX09OOgotCQkJdmFsID0gY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHgwQyk7Ci0JCQlyZXR1cm4gY3gyMjcwMl93cml0ZXJlZyAoc3RhdGUsIDB4MEMsIHZhbCB8IDB4MDEpOwotCi0JCWNhc2UgSU5WRVJTSU9OX09GRjoKLQkJCXZhbCA9IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4MEMpOwotCQkJcmV0dXJuIGN4MjI3MDJfd3JpdGVyZWcgKHN0YXRlLCAweDBDLCB2YWwgJiAweGZlKTsKLQotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KKwljYXNlIElOVkVSU0lPTl9BVVRPOgorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJY2FzZSBJTlZFUlNJT05fT046CisJCXZhbCA9IGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQyk7CisJCXJldHVybiBjeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLCB2YWwgfCAweDAxKTsKKwljYXNlIElOVkVSU0lPTl9PRkY6CisJCXZhbCA9IGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQyk7CisJCXJldHVybiBjeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLCB2YWwgJiAweGZlKTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIH0KIAogLyogUmV0cmlldmUgdGhlIGRlbW9kIHNldHRpbmdzICovCi1zdGF0aWMgaW50IGN4MjI3MDJfZ2V0X3RwcyAoc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgZHZiX29mZG1fcGFyYW1ldGVycyAqcCkKK3N0YXRpYyBpbnQgY3gyMjcwMl9nZXRfdHBzKHN0cnVjdCBjeDIyNzAyX3N0YXRlICpzdGF0ZSwKKwlzdHJ1Y3QgZHZiX29mZG1fcGFyYW1ldGVycyAqcCkKIHsKIAl1OCB2YWw7CiAKQEAgLTE0NiwxODAgKzE1MCwyODEgQEAKIAlpZiAoIShjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEEpICYgMHgyMCkpCiAJCXJldHVybiAtRUFHQUlOOwogCi0JdmFsID0gY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHgwMSk7Ci0Jc3dpdGNoKCAodmFsJjB4MTgpPj4zKSB7Ci0JCWNhc2UgMDogcC0+Y29uc3RlbGxhdGlvbiA9ICAgUVBTSzsgYnJlYWs7Ci0JCWNhc2UgMTogcC0+Y29uc3RlbGxhdGlvbiA9IFFBTV8xNjsgYnJlYWs7Ci0JCWNhc2UgMjogcC0+Y29uc3RlbGxhdGlvbiA9IFFBTV82NDsgYnJlYWs7CisJdmFsID0gY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDAxKTsKKwlzd2l0Y2ggKCh2YWwgJiAweDE4KSA+PiAzKSB7CisJY2FzZSAwOgorCQlwLT5jb25zdGVsbGF0aW9uID0gUVBTSzsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlwLT5jb25zdGVsbGF0aW9uID0gUUFNXzE2OworCQlicmVhazsKKwljYXNlIDI6CisJCXAtPmNvbnN0ZWxsYXRpb24gPSBRQU1fNjQ7CisJCWJyZWFrOwogCX0KLQlzd2l0Y2goIHZhbCYweDA3ICkgewotCQljYXNlIDA6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV9OT05FOyBicmVhazsKLQkJY2FzZSAxOiBwLT5oaWVyYXJjaHlfaW5mb3JtYXRpb24gPSAgICBISUVSQVJDSFlfMTsgYnJlYWs7Ci0JCWNhc2UgMjogcC0+aGllcmFyY2h5X2luZm9ybWF0aW9uID0gICAgSElFUkFSQ0hZXzI7IGJyZWFrOwotCQljYXNlIDM6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9ICAgIEhJRVJBUkNIWV80OyBicmVhazsKKwlzd2l0Y2ggKHZhbCAmIDB4MDcpIHsKKwljYXNlIDA6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV9OT05FOworCQlicmVhazsKKwljYXNlIDE6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV8xOworCQlicmVhazsKKwljYXNlIDI6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV8yOworCQlicmVhazsKKwljYXNlIDM6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV80OworCQlicmVhazsKIAl9CiAKIAotCXZhbCA9IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4MDIpOwotCXN3aXRjaCggKHZhbCYweDM4KT4+MyApIHsKLQkJY2FzZSAwOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfMV8yOyBicmVhazsKLQkJY2FzZSAxOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfMl8zOyBicmVhazsKLQkJY2FzZSAyOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfM180OyBicmVhazsKLQkJY2FzZSAzOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfNV82OyBicmVhazsKLQkJY2FzZSA0OiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfN184OyBicmVhazsKKwl2YWwgPSBjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MDIpOworCXN3aXRjaCAoKHZhbCAmIDB4MzgpID4+IDMpIHsKKwljYXNlIDA6CisJCXAtPmNvZGVfcmF0ZV9IUCA9IEZFQ18xXzI7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcC0+Y29kZV9yYXRlX0hQID0gRkVDXzJfMzsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlwLT5jb2RlX3JhdGVfSFAgPSBGRUNfM180OworCQlicmVhazsKKwljYXNlIDM6CisJCXAtPmNvZGVfcmF0ZV9IUCA9IEZFQ181XzY7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJcC0+Y29kZV9yYXRlX0hQID0gRkVDXzdfODsKKwkJYnJlYWs7CiAJfQotCXN3aXRjaCggdmFsJjB4MDcgKSB7Ci0JCWNhc2UgMDogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzFfMjsgYnJlYWs7Ci0JCWNhc2UgMTogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzJfMzsgYnJlYWs7Ci0JCWNhc2UgMjogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzNfNDsgYnJlYWs7Ci0JCWNhc2UgMzogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzVfNjsgYnJlYWs7Ci0JCWNhc2UgNDogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzdfODsgYnJlYWs7CisJc3dpdGNoICh2YWwgJiAweDA3KSB7CisJY2FzZSAwOgorCQlwLT5jb2RlX3JhdGVfTFAgPSBGRUNfMV8yOworCQlicmVhazsKKwljYXNlIDE6CisJCXAtPmNvZGVfcmF0ZV9MUCA9IEZFQ18yXzM7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJcC0+Y29kZV9yYXRlX0xQID0gRkVDXzNfNDsKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlwLT5jb2RlX3JhdGVfTFAgPSBGRUNfNV82OworCQlicmVhazsKKwljYXNlIDQ6CisJCXAtPmNvZGVfcmF0ZV9MUCA9IEZFQ183Xzg7CisJCWJyZWFrOwogCX0KIAotCi0JdmFsID0gY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHgwMyk7Ci0Jc3dpdGNoKCAodmFsJjB4MGMpPj4yICkgewotCQljYXNlIDA6IHAtPmd1YXJkX2ludGVydmFsID0gR1VBUkRfSU5URVJWQUxfMV8zMjsgYnJlYWs7Ci0JCWNhc2UgMTogcC0+Z3VhcmRfaW50ZXJ2YWwgPSBHVUFSRF9JTlRFUlZBTF8xXzE2OyBicmVhazsKLQkJY2FzZSAyOiBwLT5ndWFyZF9pbnRlcnZhbCA9ICBHVUFSRF9JTlRFUlZBTF8xXzg7IGJyZWFrOwotCQljYXNlIDM6IHAtPmd1YXJkX2ludGVydmFsID0gIEdVQVJEX0lOVEVSVkFMXzFfNDsgYnJlYWs7CisJdmFsID0gY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDAzKTsKKwlzd2l0Y2ggKCh2YWwgJiAweDBjKSA+PiAyKSB7CisJY2FzZSAwOgorCQlwLT5ndWFyZF9pbnRlcnZhbCA9IEdVQVJEX0lOVEVSVkFMXzFfMzI7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcC0+Z3VhcmRfaW50ZXJ2YWwgPSBHVUFSRF9JTlRFUlZBTF8xXzE2OworCQlicmVhazsKKwljYXNlIDI6CisJCXAtPmd1YXJkX2ludGVydmFsID0gR1VBUkRfSU5URVJWQUxfMV84OworCQlicmVhazsKKwljYXNlIDM6CisJCXAtPmd1YXJkX2ludGVydmFsID0gR1VBUkRfSU5URVJWQUxfMV80OworCQlicmVhazsKIAl9Ci0Jc3dpdGNoKCB2YWwmMHgwMyApIHsKLQkJY2FzZSAwOiBwLT50cmFuc21pc3Npb25fbW9kZSA9IFRSQU5TTUlTU0lPTl9NT0RFXzJLOyBicmVhazsKLQkJY2FzZSAxOiBwLT50cmFuc21pc3Npb25fbW9kZSA9IFRSQU5TTUlTU0lPTl9NT0RFXzhLOyBicmVhazsKKwlzd2l0Y2ggKHZhbCAmIDB4MDMpIHsKKwljYXNlIDA6CisJCXAtPnRyYW5zbWlzc2lvbl9tb2RlID0gVFJBTlNNSVNTSU9OX01PREVfMks7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcC0+dHJhbnNtaXNzaW9uX21vZGUgPSBUUkFOU01JU1NJT05fTU9ERV84SzsKKwkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyMjcwMl9pMmNfZ2F0ZV9jdHJsKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBpbnQgZW5hYmxlKQorc3RhdGljIGludCBjeDIyNzAyX2kyY19nYXRlX2N0cmwoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGludCBlbmFibGUpCiB7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7Ci0JZHByaW50ayAoIiVzKCVkKVxuIiwgX19mdW5jX18sIGVuYWJsZSk7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJZHByaW50aygiJXMoJWQpXG4iLCBfX2Z1bmNfXywgZW5hYmxlKTsKIAlpZiAoZW5hYmxlKQotCQlyZXR1cm4gY3gyMjcwMl93cml0ZXJlZyAoc3RhdGUsIDB4MEQsIGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwRCkgJiAweGZlKTsKKwkJcmV0dXJuIGN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEQsCisJCQljeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEQpICYgMHhmZSk7CiAJZWxzZQotCQlyZXR1cm4gY3gyMjcwMl93cml0ZXJlZyAoc3RhdGUsIDB4MEQsIGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwRCkgfCAxKTsKKwkJcmV0dXJuIGN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEQsCisJCQljeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEQpIHwgMSk7CiB9CiAKIC8qIFRhbGsgdG8gdGhlIGRlbW9kLCBzZXQgdGhlIEZFQywgR1VBUkQsIFFBTSBzZXR0aW5ncyBldGMgKi8KLXN0YXRpYyBpbnQgY3gyMjcwMl9zZXRfdHBzIChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwKQorc3RhdGljIGludCBjeDIyNzAyX3NldF90cHMoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwKQogewogCXU4IHZhbDsKLQlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCWlmIChmZS0+b3BzLnR1bmVyX29wcy5zZXRfcGFyYW1zKSB7CiAJCWZlLT5vcHMudHVuZXJfb3BzLnNldF9wYXJhbXMoZmUsIHApOwotCQlpZiAoZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKSBmZS0+b3BzLmkyY19nYXRlX2N0cmwoZmUsIDApOworCQlpZiAoZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKQorCQkJZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKGZlLCAwKTsKIAl9CiAKIAkvKiBzZXQgaW52ZXJzaW9uICovCi0JY3gyMjcwMl9zZXRfaW52ZXJzaW9uIChzdGF0ZSwgcC0+aW52ZXJzaW9uKTsKKwljeDIyNzAyX3NldF9pbnZlcnNpb24oc3RhdGUsIHAtPmludmVyc2lvbik7CiAKIAkvKiBzZXQgYmFuZHdpZHRoICovCi0Jc3dpdGNoKHAtPnUub2ZkbS5iYW5kd2lkdGgpIHsKKwlzd2l0Y2ggKHAtPnUub2ZkbS5iYW5kd2lkdGgpIHsKIAljYXNlIEJBTkRXSURUSF82X01IWjoKLQkJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwQywgKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQykgJiAweGNmKSB8IDB4MjAgKTsKKwkJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwQywKKwkJCShjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEMpICYgMHhjZikgfCAweDIwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQU5EV0lEVEhfN19NSFo6Ci0JCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsIChjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEMpICYgMHhjZikgfCAweDEwICk7CisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsCisJCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4Y2YpIHwgMHgxMCk7CiAJCWJyZWFrOwogCWNhc2UgQkFORFdJRFRIXzhfTUhaOgotCQljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLCBjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEMpICYweGNmICk7CisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsCisJCQljeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEMpICYgMHhjZik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRwcmludGsgKCIlczogaW52YWxpZCBiYW5kd2lkdGhcbiIsX19mdW5jX18pOworCQlkcHJpbnRrKCIlczogaW52YWxpZCBiYW5kd2lkdGhcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0KLQlwLT51Lm9mZG0uY29kZV9yYXRlX0xQID0gRkVDX0FVVE87IC8vdGVtcCBoYWNrIGFzIG1hbnVhbCBub3Qgd29ya2luZworCXAtPnUub2ZkbS5jb2RlX3JhdGVfTFAgPSBGRUNfQVVUTzsgLyogdGVtcCBoYWNrIGFzIG1hbnVhbCBub3Qgd29ya2luZyAqLwogCiAJLyogdXNlIGF1dG8gY29uZmlndXJhdGlvbj8gKi8KLQlpZigocC0+dS5vZmRtLmhpZXJhcmNoeV9pbmZvcm1hdGlvbj09SElFUkFSQ0hZX0FVVE8pIHx8Ci0JICAgKHAtPnUub2ZkbS5jb25zdGVsbGF0aW9uPT1RQU1fQVVUTykgfHwKLQkgICAocC0+dS5vZmRtLmNvZGVfcmF0ZV9IUD09RkVDX0FVVE8pIHx8Ci0JICAgKHAtPnUub2ZkbS5jb2RlX3JhdGVfTFA9PUZFQ19BVVRPKSB8fAotCSAgIChwLT51Lm9mZG0uZ3VhcmRfaW50ZXJ2YWw9PUdVQVJEX0lOVEVSVkFMX0FVVE8pIHx8Ci0JICAgKHAtPnUub2ZkbS50cmFuc21pc3Npb25fbW9kZT09VFJBTlNNSVNTSU9OX01PREVfQVVUTykgKSB7CisJaWYgKChwLT51Lm9mZG0uaGllcmFyY2h5X2luZm9ybWF0aW9uID09IEhJRVJBUkNIWV9BVVRPKSB8fAorCSAgIChwLT51Lm9mZG0uY29uc3RlbGxhdGlvbiA9PSBRQU1fQVVUTykgfHwKKwkgICAocC0+dS5vZmRtLmNvZGVfcmF0ZV9IUCA9PSBGRUNfQVVUTykgfHwKKwkgICAocC0+dS5vZmRtLmNvZGVfcmF0ZV9MUCA9PSBGRUNfQVVUTykgfHwKKwkgICAocC0+dS5vZmRtLmd1YXJkX2ludGVydmFsID09IEdVQVJEX0lOVEVSVkFMX0FVVE8pIHx8CisJICAgKHAtPnUub2ZkbS50cmFuc21pc3Npb25fbW9kZSA9PSBUUkFOU01JU1NJT05fTU9ERV9BVVRPKSkgewogCiAJCS8qIFRQUyBTb3VyY2UgLSB1c2UgaGFyZHdhcmUgZHJpdmVuIHZhbHVlcyAqLwogCQljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDA2LCAweDEwKTsKIAkJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwNywgMHg5KTsKIAkJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwOCwgMHhDMSk7Ci0JCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEIsIGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQikgJiAweGZjICk7Ci0JCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsIChjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEMpICYgMHhCRikgfCAweDQwICk7CisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEIsIGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQikKKwkJCSYgMHhmYyk7CisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsCisJCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4QkYpIHwgMHg0MCk7CiAJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOyAvKiBCZWdpbiBhcXVpc2l0aW9uICovCi0JCWRwcmludGsoIiVzOiBBdXRvZGV0ZWN0aW5nXG4iLF9fZnVuY19fKTsKKwkJZHByaW50aygiJXM6IEF1dG9kZXRlY3RpbmdcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJLyogbWFudWFsbHkgcHJvZ3JhbW1lZCB2YWx1ZXMgKi8KLQl2YWw9MDsKLQlzd2l0Y2gocC0+dS5vZmRtLmNvbnN0ZWxsYXRpb24pIHsKLQkJY2FzZSAgIFFQU0s6IHZhbCA9ICh2YWwmMHhlNyk7IGJyZWFrOwotCQljYXNlIFFBTV8xNjogdmFsID0gKHZhbCYweGU3KXwweDA4OyBicmVhazsKLQkJY2FzZSBRQU1fNjQ6IHZhbCA9ICh2YWwmMHhlNyl8MHgxMDsgYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrICgiJXM6IGludmFsaWQgY29uc3RlbGxhdGlvblxuIixfX2Z1bmNfXyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKKwl2YWwgPSAwOworCXN3aXRjaCAocC0+dS5vZmRtLmNvbnN0ZWxsYXRpb24pIHsKKwljYXNlIFFQU0s6CisJCXZhbCA9ICh2YWwgJiAweGU3KTsKKwkJYnJlYWs7CisJY2FzZSBRQU1fMTY6CisJCXZhbCA9ICh2YWwgJiAweGU3KSB8IDB4MDg7CisJCWJyZWFrOworCWNhc2UgUUFNXzY0OgorCQl2YWwgPSAodmFsICYgMHhlNykgfCAweDEwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkcHJpbnRrKCIlczogaW52YWxpZCBjb25zdGVsbGF0aW9uXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlOVkFMOwogCX0KLQlzd2l0Y2gocC0+dS5vZmRtLmhpZXJhcmNoeV9pbmZvcm1hdGlvbikgewotCQljYXNlIEhJRVJBUkNIWV9OT05FOiB2YWwgPSAodmFsJjB4ZjgpOyBicmVhazsKLQkJY2FzZSAgICBISUVSQVJDSFlfMTogdmFsID0gKHZhbCYweGY4KXwxOyBicmVhazsKLQkJY2FzZSAgICBISUVSQVJDSFlfMjogdmFsID0gKHZhbCYweGY4KXwyOyBicmVhazsKLQkJY2FzZSAgICBISUVSQVJDSFlfNDogdmFsID0gKHZhbCYweGY4KXwzOyBicmVhazsKLQkJZGVmYXVsdDoKLQkJCWRwcmludGsgKCIlczogaW52YWxpZCBoaWVyYXJjaHlcbiIsX19mdW5jX18pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoIChwLT51Lm9mZG0uaGllcmFyY2h5X2luZm9ybWF0aW9uKSB7CisJY2FzZSBISUVSQVJDSFlfTk9ORToKKwkJdmFsID0gKHZhbCAmIDB4ZjgpOworCQlicmVhazsKKwljYXNlIEhJRVJBUkNIWV8xOgorCQl2YWwgPSAodmFsICYgMHhmOCkgfCAxOworCQlicmVhazsKKwljYXNlIEhJRVJBUkNIWV8yOgorCQl2YWwgPSAodmFsICYgMHhmOCkgfCAyOworCQlicmVhazsKKwljYXNlIEhJRVJBUkNIWV80OgorCQl2YWwgPSAodmFsICYgMHhmOCkgfCAzOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkcHJpbnRrKCIlczogaW52YWxpZCBoaWVyYXJjaHlcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCWN4MjI3MDJfd3JpdGVyZWcgKHN0YXRlLCAweDA2LCB2YWwpOworCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDYsIHZhbCk7CiAKLQl2YWw9MDsKLQlzd2l0Y2gocC0+dS5vZmRtLmNvZGVfcmF0ZV9IUCkgewotCQljYXNlIEZFQ19OT05FOgotCQljYXNlIEZFQ18xXzI6IHZhbCA9ICh2YWwmMHhjNyk7IGJyZWFrOwotCQljYXNlIEZFQ18yXzM6IHZhbCA9ICh2YWwmMHhjNyl8MHgwODsgYnJlYWs7Ci0JCWNhc2UgRkVDXzNfNDogdmFsID0gKHZhbCYweGM3KXwweDEwOyBicmVhazsKLQkJY2FzZSBGRUNfNV82OiB2YWwgPSAodmFsJjB4YzcpfDB4MTg7IGJyZWFrOwotCQljYXNlIEZFQ183Xzg6IHZhbCA9ICh2YWwmMHhjNyl8MHgyMDsgYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrICgiJXM6IGludmFsaWQgY29kZV9yYXRlX0hQXG4iLF9fZnVuY19fKTsKLQkJCXJldHVybiAtRUlOVkFMOworCXZhbCA9IDA7CisJc3dpdGNoIChwLT51Lm9mZG0uY29kZV9yYXRlX0hQKSB7CisJY2FzZSBGRUNfTk9ORToKKwljYXNlIEZFQ18xXzI6CisJCXZhbCA9ICh2YWwgJiAweGM3KTsKKwkJYnJlYWs7CisJY2FzZSBGRUNfMl8zOgorCQl2YWwgPSAodmFsICYgMHhjNykgfCAweDA4OworCQlicmVhazsKKwljYXNlIEZFQ18zXzQ6CisJCXZhbCA9ICh2YWwgJiAweGM3KSB8IDB4MTA7CisJCWJyZWFrOworCWNhc2UgRkVDXzVfNjoKKwkJdmFsID0gKHZhbCAmIDB4YzcpIHwgMHgxODsKKwkJYnJlYWs7CisJY2FzZSBGRUNfN184OgorCQl2YWwgPSAodmFsICYgMHhjNykgfCAweDIwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkcHJpbnRrKCIlczogaW52YWxpZCBjb2RlX3JhdGVfSFBcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXN3aXRjaChwLT51Lm9mZG0uY29kZV9yYXRlX0xQKSB7Ci0JCWNhc2UgRkVDX05PTkU6Ci0JCWNhc2UgRkVDXzFfMjogdmFsID0gKHZhbCYweGY4KTsgYnJlYWs7Ci0JCWNhc2UgRkVDXzJfMzogdmFsID0gKHZhbCYweGY4KXwxOyBicmVhazsKLQkJY2FzZSBGRUNfM180OiB2YWwgPSAodmFsJjB4ZjgpfDI7IGJyZWFrOwotCQljYXNlIEZFQ181XzY6IHZhbCA9ICh2YWwmMHhmOCl8MzsgYnJlYWs7Ci0JCWNhc2UgRkVDXzdfODogdmFsID0gKHZhbCYweGY4KXw0OyBicmVhazsKLQkJZGVmYXVsdDoKLQkJCWRwcmludGsgKCIlczogaW52YWxpZCBjb2RlX3JhdGVfTFBcbiIsX19mdW5jX18pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoIChwLT51Lm9mZG0uY29kZV9yYXRlX0xQKSB7CisJY2FzZSBGRUNfTk9ORToKKwljYXNlIEZFQ18xXzI6CisJCXZhbCA9ICh2YWwgJiAweGY4KTsKKwkJYnJlYWs7CisJY2FzZSBGRUNfMl8zOgorCQl2YWwgPSAodmFsICYgMHhmOCkgfCAxOworCQlicmVhazsKKwljYXNlIEZFQ18zXzQ6CisJCXZhbCA9ICh2YWwgJiAweGY4KSB8IDI7CisJCWJyZWFrOworCWNhc2UgRkVDXzVfNjoKKwkJdmFsID0gKHZhbCAmIDB4ZjgpIHwgMzsKKwkJYnJlYWs7CisJY2FzZSBGRUNfN184OgorCQl2YWwgPSAodmFsICYgMHhmOCkgfCA0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkcHJpbnRrKCIlczogaW52YWxpZCBjb2RlX3JhdGVfTFBcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCWN4MjI3MDJfd3JpdGVyZWcgKHN0YXRlLCAweDA3LCB2YWwpOworCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDcsIHZhbCk7CiAKLQl2YWw9MDsKLQlzd2l0Y2gocC0+dS5vZmRtLmd1YXJkX2ludGVydmFsKSB7Ci0JCWNhc2UgR1VBUkRfSU5URVJWQUxfMV8zMjogdmFsID0gKHZhbCYweGYzKTsgYnJlYWs7Ci0JCWNhc2UgR1VBUkRfSU5URVJWQUxfMV8xNjogdmFsID0gKHZhbCYweGYzKXwweDA0OyBicmVhazsKLQkJY2FzZSAgR1VBUkRfSU5URVJWQUxfMV84OiB2YWwgPSAodmFsJjB4ZjMpfDB4MDg7IGJyZWFrOwotCQljYXNlICBHVUFSRF9JTlRFUlZBTF8xXzQ6IHZhbCA9ICh2YWwmMHhmMyl8MHgwYzsgYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrICgiJXM6IGludmFsaWQgZ3VhcmRfaW50ZXJ2YWxcbiIsX19mdW5jX18pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJdmFsID0gMDsKKwlzd2l0Y2ggKHAtPnUub2ZkbS5ndWFyZF9pbnRlcnZhbCkgeworCWNhc2UgR1VBUkRfSU5URVJWQUxfMV8zMjoKKwkJdmFsID0gKHZhbCAmIDB4ZjMpOworCQlicmVhazsKKwljYXNlIEdVQVJEX0lOVEVSVkFMXzFfMTY6CisJCXZhbCA9ICh2YWwgJiAweGYzKSB8IDB4MDQ7CisJCWJyZWFrOworCWNhc2UgR1VBUkRfSU5URVJWQUxfMV84OgorCQl2YWwgPSAodmFsICYgMHhmMykgfCAweDA4OworCQlicmVhazsKKwljYXNlIEdVQVJEX0lOVEVSVkFMXzFfNDoKKwkJdmFsID0gKHZhbCAmIDB4ZjMpIHwgMHgwYzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZHByaW50aygiJXM6IGludmFsaWQgZ3VhcmRfaW50ZXJ2YWxcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCXN3aXRjaChwLT51Lm9mZG0udHJhbnNtaXNzaW9uX21vZGUpIHsKLQkJY2FzZSBUUkFOU01JU1NJT05fTU9ERV8ySzogdmFsID0gKHZhbCYweGZjKTsgYnJlYWs7Ci0JCWNhc2UgVFJBTlNNSVNTSU9OX01PREVfOEs6IHZhbCA9ICh2YWwmMHhmYyl8MTsgYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrICgiJXM6IGludmFsaWQgdHJhbnNtaXNzaW9uX21vZGVcbiIsX19mdW5jX18pOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoIChwLT51Lm9mZG0udHJhbnNtaXNzaW9uX21vZGUpIHsKKwljYXNlIFRSQU5TTUlTU0lPTl9NT0RFXzJLOgorCQl2YWwgPSAodmFsICYgMHhmYyk7CisJCWJyZWFrOworCWNhc2UgVFJBTlNNSVNTSU9OX01PREVfOEs6CisJCXZhbCA9ICh2YWwgJiAweGZjKSB8IDE7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRwcmludGsoIiVzOiBpbnZhbGlkIHRyYW5zbWlzc2lvbl9tb2RlXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDA4LCB2YWwpOwotCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEIsIChjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4MEIpICYgMHhmYykgfCAweDAyICk7Ci0JY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwQywgKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQykgJiAweEJGKSB8IDB4NDAgKTsKKwljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBCLAorCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBCKSAmIDB4ZmMpIHwgMHgwMik7CisJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwQywKKwkJKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQykgJiAweEJGKSB8IDB4NDApOwogCiAJLyogQmVnaW4gY2hhbm5lbCBhcXVpc2l0aW9uICovCiAJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgwMSk7CkBAIC0zMjksMTA5ICs0MzQsMTExIEBACiAKIC8qIFJlc2V0IHRoZSBkZW1vZCBoYXJkd2FyZSBhbmQgcmVzZXQgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycwogICAgdG8gYSBkZWZhdWx0IHN0YXRlLiAqLwotc3RhdGljIGludCBjeDIyNzAyX2luaXQgKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIGludCBjeDIyNzAyX2luaXQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7CiAJaW50IGk7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKLQljeDIyNzAyX3dyaXRlcmVnIChzdGF0ZSwgMHgwMCwgMHgwMik7CisJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgwMik7CiAKIAltc2xlZXAoMTApOwogCi0JZm9yIChpPTA7IGk8c2l6ZW9mKGluaXRfdGFiKTsgaSs9MikKLQkJY3gyMjcwMl93cml0ZXJlZyAoc3RhdGUsIGluaXRfdGFiW2ldLCBpbml0X3RhYltpKzFdKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbml0X3RhYik7IGkgKz0gMikKKwkJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgaW5pdF90YWJbaV0sIGluaXRfdGFiW2kgKyAxXSk7CiAKLQljeDIyNzAyX3dyaXRlcmVnIChzdGF0ZSwgMHhmOCwgKHN0YXRlLT5jb25maWctPm91dHB1dF9tb2RlIDw8IDEpICYgMHgwMik7CisJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHhmOCwgKHN0YXRlLT5jb25maWctPm91dHB1dF9tb2RlIDw8IDEpCisJCSYgMHgwMik7CiAKIAljeDIyNzAyX2kyY19nYXRlX2N0cmwoZmUsIDApOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyMjcwMl9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc3RhdHVzX3QqIHN0YXR1cykKK3N0YXRpYyBpbnQgY3gyMjcwMl9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgZmVfc3RhdHVzX3QgKnN0YXR1cykKIHsKLQlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAl1OCByZWcwQTsKIAl1OCByZWcyMzsKIAogCSpzdGF0dXMgPSAwOwogCi0JcmVnMEEgPSBjeDIyNzAyX3JlYWRyZWcgKHN0YXRlLCAweDBBKTsKLQlyZWcyMyA9IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4MjMpOworCXJlZzBBID0gY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBBKTsKKwlyZWcyMyA9IGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgyMyk7CiAKLQlkcHJpbnRrICgiJXM6IHN0YXR1cyBkZW1vZD0weCUwMnggYWdjPTB4JTAyeFxuIgotCQksX19mdW5jX18scmVnMEEscmVnMjMpOworCWRwcmludGsoIiVzOiBzdGF0dXMgZGVtb2Q9MHglMDJ4IGFnYz0weCUwMnhcbiIKKwkJLCBfX2Z1bmNfXywgcmVnMEEsIHJlZzIzKTsKIAotCWlmKHJlZzBBICYgMHgxMCkgeworCWlmIChyZWcwQSAmIDB4MTApIHsKIAkJKnN0YXR1cyB8PSBGRV9IQVNfTE9DSzsKIAkJKnN0YXR1cyB8PSBGRV9IQVNfVklURVJCSTsKIAkJKnN0YXR1cyB8PSBGRV9IQVNfU1lOQzsKIAl9CiAKLQlpZihyZWcwQSAmIDB4MjApCisJaWYgKHJlZzBBICYgMHgyMCkKIAkJKnN0YXR1cyB8PSBGRV9IQVNfQ0FSUklFUjsKIAotCWlmKHJlZzIzIDwgMHhmMCkKKwlpZiAocmVnMjMgPCAweGYwKQogCQkqc3RhdHVzIHw9IEZFX0hBU19TSUdOQUw7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDIyNzAyX3JlYWRfYmVyKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MzIqIGJlcikKK3N0YXRpYyBpbnQgY3gyMjcwMl9yZWFkX2JlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTMyICpiZXIpCiB7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKLQlpZihjeDIyNzAyX3JlYWRyZWcgKHN0YXRlLCAweEU0KSAmIDB4MDIpIHsKKwlpZiAoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweEU0KSAmIDB4MDIpIHsKIAkJLyogUmVhbHRpbWUgc3RhdGlzdGljcyAqLwotCQkqYmVyID0gKGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4REUpICYgMHg3RikgPDwgNwotCQkJfCAoY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHhERikmMHg3Rik7CisJCSpiZXIgPSAoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERFKSAmIDB4N0YpIDw8IDcKKwkJCXwgKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHhERikgJiAweDdGKTsKIAl9IGVsc2UgewogCQkvKiBBdmVyYWd0aW5lIHN0YXRpc3RpY3MgKi8KLQkJKmJlciA9IChjeDIyNzAyX3JlYWRyZWcgKHN0YXRlLCAweERFKSAmIDB4N0YpIDw8IDcKLQkJCXwgY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHhERik7CisJCSpiZXIgPSAoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERFKSAmIDB4N0YpIDw8IDcKKwkJCXwgY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERGKTsKIAl9CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDIyNzAyX3JlYWRfc2lnbmFsX3N0cmVuZ3RoKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MTYqIHNpZ25hbF9zdHJlbmd0aCkKK3N0YXRpYyBpbnQgY3gyMjcwMl9yZWFkX3NpZ25hbF9zdHJlbmd0aChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwl1MTYgKnNpZ25hbF9zdHJlbmd0aCkKIHsKLQlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCXUxNiByc19iZXIgPSAwOwotCXJzX2JlciA9IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4MjMpOworCXJzX2JlciA9IGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgyMyk7CiAJKnNpZ25hbF9zdHJlbmd0aCA9IChyc19iZXIgPDwgOCkgfCByc19iZXI7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDIyNzAyX3JlYWRfc25yKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MTYqIHNucikKK3N0YXRpYyBpbnQgY3gyMjcwMl9yZWFkX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTE2ICpzbnIpCiB7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKLQl1MTYgcnNfYmVyPTA7Ci0JaWYoY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHhFNCkgJiAweDAyKSB7CisJdTE2IHJzX2JlciA9IDA7CisJaWYgKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHhFNCkgJiAweDAyKSB7CiAJCS8qIFJlYWx0aW1lIHN0YXRpc3RpY3MgKi8KLQkJcnNfYmVyID0gKGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4REUpICYgMHg3RikgPDwgNwotCQkJfCAoY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHhERikmIDB4N0YpOworCQlyc19iZXIgPSAoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERFKSAmIDB4N0YpIDw8IDcKKwkJCXwgKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHhERikgJiAweDdGKTsKIAl9IGVsc2UgewogCQkvKiBBdmVyYWdpbmUgc3RhdGlzdGljcyAqLwotCQlyc19iZXIgPSAoY3gyMjcwMl9yZWFkcmVnIChzdGF0ZSwgMHhERSkgJiAweDdGKSA8PCA4Ci0JCQl8IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4REYpOworCQlyc19iZXIgPSAoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERFKSAmIDB4N0YpIDw8IDgKKwkJCXwgY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweERGKTsKIAl9CiAJKnNuciA9IH5yc19iZXI7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDIyNzAyX3JlYWRfdWNibG9ja3Moc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUzMiogdWNibG9ja3MpCitzdGF0aWMgaW50IGN4MjI3MDJfcmVhZF91Y2Jsb2NrcyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTMyICp1Y2Jsb2NrcykKIHsKLQlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCXU4IF91Y2Jsb2NrczsKIAogCS8qIFJTIFVuY29ycmVjdGFibGUgUGFja2V0IENvdW50IHRoZW4gcmVzZXQgKi8KLQlfdWNibG9ja3MgPSBjeDIyNzAyX3JlYWRyZWcgKHN0YXRlLCAweEUzKTsKKwlfdWNibG9ja3MgPSBjeDIyNzAyX3JlYWRyZWcoc3RhdGUsIDB4RTMpOwogCWlmIChzdGF0ZS0+cHJldlVDQmxvY2tzIDwgX3VjYmxvY2tzKQogCQkqdWNibG9ja3MgPSAoX3VjYmxvY2tzIC0gc3RhdGUtPnByZXZVQ0Jsb2Nrcyk7CiAJZWxzZQpAQCAtNDQxLDM0ICs1NDgsMzYgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDIyNzAyX2dldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwKQorc3RhdGljIGludCBjeDIyNzAyX2dldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgKnApCiB7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKLQl1OCByZWcwQyA9IGN4MjI3MDJfcmVhZHJlZyAoc3RhdGUsIDB4MEMpOworCXU4IHJlZzBDID0gY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKTsKIAogCXAtPmludmVyc2lvbiA9IHJlZzBDICYgMHgxID8gSU5WRVJTSU9OX09OIDogSU5WRVJTSU9OX09GRjsKLQlyZXR1cm4gY3gyMjcwMl9nZXRfdHBzIChzdGF0ZSwgJnAtPnUub2ZkbSk7CisJcmV0dXJuIGN4MjI3MDJfZ2V0X3RwcyhzdGF0ZSwgJnAtPnUub2ZkbSk7CiB9CiAKLXN0YXRpYyBpbnQgY3gyMjcwMl9nZXRfdHVuZV9zZXR0aW5ncyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3RydWN0IGR2Yl9mcm9udGVuZF90dW5lX3NldHRpbmdzICp0dW5lKQorc3RhdGljIGludCBjeDIyNzAyX2dldF90dW5lX3NldHRpbmdzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCXN0cnVjdCBkdmJfZnJvbnRlbmRfdHVuZV9zZXR0aW5ncyAqdHVuZSkKIHsKIAl0dW5lLT5taW5fZGVsYXlfbXMgPSAxMDAwOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBjeDIyNzAyX3JlbGVhc2Uoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpCitzdGF0aWMgdm9pZCBjeDIyNzAyX3JlbGVhc2Uoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7Ci0Jc3RydWN0IGN4MjI3MDJfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJa2ZyZWUoc3RhdGUpOwogfQogCiBzdGF0aWMgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgY3gyMjcwMl9vcHM7CiAKLXN0cnVjdCBkdmJfZnJvbnRlbmQqIGN4MjI3MDJfYXR0YWNoKGNvbnN0IHN0cnVjdCBjeDIyNzAyX2NvbmZpZyogY29uZmlnLAotCQkJCSAgICBzdHJ1Y3QgaTJjX2FkYXB0ZXIqIGkyYykKK3N0cnVjdCBkdmJfZnJvbnRlbmQgKmN4MjI3MDJfYXR0YWNoKGNvbnN0IHN0cnVjdCBjeDIyNzAyX2NvbmZpZyAqY29uZmlnLAorCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjKQogewotCXN0cnVjdCBjeDIyNzAyX3N0YXRlKiBzdGF0ZSA9IE5VTEw7CisJc3RydWN0IGN4MjI3MDJfc3RhdGUgKnN0YXRlID0gTlVMTDsKIAogCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovCiAJc3RhdGUgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgY3gyMjcwMl9zdGF0ZSksIEdGUF9LRVJORUwpOwpAQCAtNDg1LDcgKzU5NCw4IEBACiAJCWdvdG8gZXJyb3I7CiAKIAkvKiBjcmVhdGUgZHZiX2Zyb250ZW5kICovCi0JbWVtY3B5KCZzdGF0ZS0+ZnJvbnRlbmQub3BzLCAmY3gyMjcwMl9vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpOworCW1lbWNweSgmc3RhdGUtPmZyb250ZW5kLm9wcywgJmN4MjI3MDJfb3BzLAorCQlzaXplb2Yoc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMpKTsKIAlzdGF0ZS0+ZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlOwogCXJldHVybiAmc3RhdGUtPmZyb250ZW5kOwogCkBAIC00OTMsNiArNjAzLDcgQEAKIAlrZnJlZShzdGF0ZSk7CiAJcmV0dXJuIE5VTEw7CiB9CitFWFBPUlRfU1lNQk9MKGN4MjI3MDJfYXR0YWNoKTsKIAogc3RhdGljIHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIGN4MjI3MDJfb3BzID0gewogCkBAIC01MjUsMTEgKzYzNiw2IEBACiAJLnJlYWRfdWNibG9ja3MgPSBjeDIyNzAyX3JlYWRfdWNibG9ja3MsCiB9OwogCi1tb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRW5hYmxlIHZlcmJvc2UgZGVidWcgbWVzc2FnZXMiKTsKLQogTU9EVUxFX0RFU0NSSVBUSU9OKCJDb25leGFudCBDWDIyNzAyIERWQi1UIERlbW9kdWxhdG9yIGRyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiU3RldmVuIFRvdGgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotRVhQT1JUX1NZTUJPTChjeDIyNzAyX2F0dGFjaCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuaAppbmRleCBiMWU0NjVjLi5mMTU0ZTFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAyLmgKQEAgLTMwLDggKzMwLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2R2Yi9mcm9udGVuZC5oPgogCi1zdHJ1Y3QgY3gyMjcwMl9jb25maWcKLXsKK3N0cnVjdCBjeDIyNzAyX2NvbmZpZyB7CiAJLyogdGhlIGRlbW9kdWxhdG9yJ3MgaTJjIGFkZHJlc3MgKi8KIAl1OCBkZW1vZF9hZGRyZXNzOwogCkBAIC00MSwxNiArNDAsMTkgQEAKIAl1OCBvdXRwdXRfbW9kZTsKIH07CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EVkJfQ1gyMjcwMikgfHwgKGRlZmluZWQoQ09ORklHX0RWQl9DWDIyNzAyX01PRFVMRSkgJiYgZGVmaW5lZChNT0RVTEUpKQotZXh0ZXJuIHN0cnVjdCBkdmJfZnJvbnRlbmQqIGN4MjI3MDJfYXR0YWNoKGNvbnN0IHN0cnVjdCBjeDIyNzAyX2NvbmZpZyogY29uZmlnLAotCQkJCQkgICBzdHJ1Y3QgaTJjX2FkYXB0ZXIqIGkyYyk7CisjaWYgZGVmaW5lZChDT05GSUdfRFZCX0NYMjI3MDIpIHx8IChkZWZpbmVkKENPTkZJR19EVkJfQ1gyMjcwMl9NT0RVTEUpIFwKKwkmJiBkZWZpbmVkKE1PRFVMRSkpCitleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCAqY3gyMjcwMl9hdHRhY2goCisJY29uc3Qgc3RydWN0IGN4MjI3MDJfY29uZmlnICpjb25maWcsCisJc3RydWN0IGkyY19hZGFwdGVyICppMmMpOwogI2Vsc2UKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGR2Yl9mcm9udGVuZCogY3gyMjcwMl9hdHRhY2goY29uc3Qgc3RydWN0IGN4MjI3MDJfY29uZmlnKiBjb25maWcsCi0JCQkJCSAgIHN0cnVjdCBpMmNfYWRhcHRlciogaTJjKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgZHZiX2Zyb250ZW5kICpjeDIyNzAyX2F0dGFjaCgKKwljb25zdCBzdHJ1Y3QgY3gyMjcwMl9jb25maWcgKmNvbmZpZywKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYykKIHsKIAlwcmludGsoS0VSTl9XQVJOSU5HICIlczogZHJpdmVyIGRpc2FibGVkIGJ5IEtjb25maWdcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gTlVMTDsKIH0KLSNlbmRpZiAvLyBDT05GSUdfRFZCX0NYMjI3MDIKKyNlbmRpZgogCi0jZW5kaWYgLy8gQ1gyMjcwMl9ICisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTE2LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExNi5jCmluZGV4IGRlYjM2ZjQuLmIxNDRiMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTE2LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTYuYwpAQCAtNDEsMTAgKzQxLDE0IEBACiAjaW5jbHVkZSAiZHZiX2Zyb250ZW5kLmgiCiAjaW5jbHVkZSAiY3gyNDExNi5oIgogCi1zdGF0aWMgaW50IGRlYnVnID0gMDsKK3N0YXRpYyBpbnQgZGVidWc7Cittb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiQWN0aXZhdGVzIGZyb250ZW5kIGRlYnVnZ2luZyAoZGVmYXVsdDowKSIpOworCiAjZGVmaW5lIGRwcmludGsoYXJncy4uLikgXAogCWRvIHsgXAotCQlpZiAoZGVidWcpIHByaW50ayAoImN4MjQxMTY6ICIgYXJncyk7IFwKKwkJaWYgKGRlYnVnKSBcCisJCQlwcmludGsoS0VSTl9JTkZPICJjeDI0MTE2OiAiIGFyZ3MpOyBcCiAJfSB3aGlsZSAoMCkKIAogI2RlZmluZSBDWDI0MTE2X0RFRkFVTFRfRklSTVdBUkUgImR2Yi1mZS1jeDI0MTE2LmZ3IgpAQCAtNjgsMTMgKzcyLDIwIEBACiAjZGVmaW5lIENYMjQxMTZfUkVHX1VDQjggICAgKDB4Y2EpCiAjZGVmaW5lIENYMjQxMTZfUkVHX0NMS0RJViAgKDB4ZjMpCiAjZGVmaW5lIENYMjQxMTZfUkVHX1JBVEVESVYgKDB4ZjkpCi0jZGVmaW5lIENYMjQxMTZfUkVHX0ZFQ1NUQVRVUyAoMHg5YykgICAgLyogY29uZmlndXJlZCBmZWMgKG5vdCB0dW5lZCkgb3IgYWN0dWFsIEZFQyAodHVuZWQpIDE9MS8yIDI9Mi8zIGV0YyAqLworCisvKiBjb25maWd1cmVkIGZlYyAobm90IHR1bmVkKSBvciBhY3R1YWwgRkVDICh0dW5lZCkgMT0xLzIgMj0yLzMgZXRjICovCisjZGVmaW5lIENYMjQxMTZfUkVHX0ZFQ1NUQVRVUyAoMHg5YykKIAogLyogRkVDU1RBVFVTIGJpdHMgKi8KLSNkZWZpbmUgQ1gyNDExNl9GRUNfRkVDTUFTSyAgICgweDFmKSAgICAvKiBtYXNrIHRvIGRldGVybWluZSBjb25maWd1cmVkIGZlYyAobm90IHR1bmVkKSBvciBhY3R1YWwgZmVjICh0dW5lZCkgKi8KLSNkZWZpbmUgQ1gyNDExNl9GRUNfRFZCUyAgICAgICgweDIwKSAgICAvKiBTZWxlY3QgRFZCLVMgZGVtb2R1bGF0b3IsIGVsc2UgRFZCLVMyICovCisvKiBtYXNrIHRvIGRldGVybWluZSBjb25maWd1cmVkIGZlYyAobm90IHR1bmVkKSBvciBhY3R1YWwgZmVjICh0dW5lZCkgKi8KKyNkZWZpbmUgQ1gyNDExNl9GRUNfRkVDTUFTSyAgICgweDFmKQorCisvKiBTZWxlY3QgRFZCLVMgZGVtb2R1bGF0b3IsIGVsc2UgRFZCLVMyICovCisjZGVmaW5lIENYMjQxMTZfRkVDX0RWQlMgICAgICAoMHgyMCkKICNkZWZpbmUgQ1gyNDExNl9GRUNfVU5LTk9XTiAgICgweDQwKSAgICAvKiBVbmtub3duL3VudXNlZCAqLwotI2RlZmluZSBDWDI0MTE2X0ZFQ19QSUxPVCAgICAgKDB4ODApICAgIC8qIFBpbG90IG1vZGUgcmVxdWVzdGVkIHdoZW4gdHVuaW5nIGVsc2UgYWx3YXlzIHJlc2V0IHdoZW4gdHVuZWQgKi8KKworLyogUGlsb3QgbW9kZSByZXF1ZXN0ZWQgd2hlbiB0dW5pbmcgZWxzZSBhbHdheXMgcmVzZXQgd2hlbiB0dW5lZCAqLworI2RlZmluZSBDWDI0MTE2X0ZFQ19QSUxPVCAgICAgKDB4ODApCiAKIC8qIGFyZyBidWZmZXIgc2l6ZSAqLwogI2RlZmluZSBDWDI0MTE2X0FSR0xFTiAoMHgxZSkKQEAgLTExNiwxMiArMTI3LDE3IEBACiAKIC8qIERpU0VxQyB0b25lIGJ1cnN0ICovCiBzdGF0aWMgaW50IHRvbmVidXJzdCA9IDE7Cittb2R1bGVfcGFyYW0odG9uZWJ1cnN0LCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyh0b25lYnVyc3QsICJEaVNFcUMgdG9uZWJ1cnN0IDA9T0ZGLCAxPVRPTkUgQ0FDSEUsICJcCisJIjI9TUVTU0FHRSBDQUNIRSAoZGVmYXVsdDoxKSIpOwogCiAvKiBTTlIgbWVhc3VyZW1lbnRzICovCi1zdGF0aWMgaW50IGVzbm9fc25yID0gMDsKK3N0YXRpYyBpbnQgZXNub19zbnI7Cittb2R1bGVfcGFyYW0oZXNub19zbnIsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiU05SIHJldHVybiB1bml0cywgMD1QRVJDRU5UQUdFIDAtMTAwLCAiXAorCSIxPUVTTk8oZGIgKiAxMCkgKGRlZmF1bHQ6MCkiKTsKIAotZW51bSBjbWRzCi17CitlbnVtIGNtZHMgewogCUNNRF9TRVRfVkNPICAgICA9IDB4MTAsCiAJQ01EX1RVTkVSRVFVRVNUID0gMHgxMSwKIAlDTURfTVBFR0NPTkZJRyAgPSAweDEzLApAQCAtMTM4LDggKzE1NCw3IEBACiB9OwogCiAvKiBUaGUgRGVtb2QvVHVuZXIgY2FuJ3QgZWFzaWx5IHByb3ZpZGUgdGhlc2UsIHdlIGNhY2hlIHRoZW0gKi8KLXN0cnVjdCBjeDI0MTE2X3R1bmluZwoteworc3RydWN0IGN4MjQxMTZfdHVuaW5nIHsKIAl1MzIgZnJlcXVlbmN5OwogCXUzMiBzeW1ib2xfcmF0ZTsKIAlmZV9zcGVjdHJhbF9pbnZlcnNpb25fdCBpbnZlcnNpb247CkBAIC0xNTgsMTYgKzE3MywxNCBAQAogfTsKIAogLyogQmFzaWMgY29tbWFuZHMgdGhhdCBhcmUgc2VudCB0byB0aGUgZmlybXdhcmUgKi8KLXN0cnVjdCBjeDI0MTE2X2NtZAoteworc3RydWN0IGN4MjQxMTZfY21kIHsKIAl1OCBsZW47CiAJdTggYXJnc1tDWDI0MTE2X0FSR0xFTl07CiB9OwogCi1zdHJ1Y3QgY3gyNDExNl9zdGF0ZQotewotCXN0cnVjdCBpMmNfYWRhcHRlciogaTJjOwotCWNvbnN0IHN0cnVjdCBjeDI0MTE2X2NvbmZpZyogY29uZmlnOworc3RydWN0IGN4MjQxMTZfc3RhdGUgeworCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjOworCWNvbnN0IHN0cnVjdCBjeDI0MTE2X2NvbmZpZyAqY29uZmlnOwogCiAJc3RydWN0IGR2Yl9mcm9udGVuZCBmcm9udGVuZDsKIApAQCAtMTc5LDE5ICsxOTIsMjAgQEAKIAlzdHJ1Y3QgY3gyNDExNl9jbWQgZHNlY19jbWQ7CiB9OwogCi1zdGF0aWMgaW50IGN4MjQxMTZfd3JpdGVyZWcoc3RydWN0IGN4MjQxMTZfc3RhdGUqIHN0YXRlLCBpbnQgcmVnLCBpbnQgZGF0YSkKK3N0YXRpYyBpbnQgY3gyNDExNl93cml0ZXJlZyhzdHJ1Y3QgY3gyNDExNl9zdGF0ZSAqc3RhdGUsIGludCByZWcsIGludCBkYXRhKQogewogCXU4IGJ1ZltdID0geyByZWcsIGRhdGEgfTsKIAlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywKIAkJLmZsYWdzID0gMCwgLmJ1ZiA9IGJ1ZiwgLmxlbiA9IDIgfTsKIAlpbnQgZXJyOwogCi0JaWYgKGRlYnVnPjEpCisJaWYgKGRlYnVnID4gMSkKIAkJcHJpbnRrKCJjeDI0MTE2OiAlczogd3JpdGUgcmVnIDB4JTAyeCwgdmFsdWUgMHglMDJ4XG4iLAotCQkJCQkJX19mdW5jX18scmVnLCBkYXRhKTsKKwkJCV9fZnVuY19fLCByZWcsIGRhdGEpOwogCi0JaWYgKChlcnIgPSBpMmNfdHJhbnNmZXIoc3RhdGUtPmkyYywgJm1zZywgMSkpICE9IDEpIHsKLQkJcHJpbnRrKCIlczogd3JpdGVyZWcgZXJyb3IoZXJyID09ICVpLCByZWcgPT0gMHglMDJ4LCIKKwllcnIgPSBpMmNfdHJhbnNmZXIoc3RhdGUtPmkyYywgJm1zZywgMSk7CisJaWYgKGVyciAhPSAxKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHdyaXRlcmVnIGVycm9yKGVyciA9PSAlaSwgcmVnID09IDB4JTAyeCwiCiAJCQkgIiB2YWx1ZSA9PSAweCUwMngpXG4iLCBfX2Z1bmNfXywgZXJyLCByZWcsIGRhdGEpOwogCQlyZXR1cm4gLUVSRU1PVEVJTzsKIAl9CkBAIC0yMDAsNyArMjE0LDggQEAKIH0KIAogLyogQnVsayBieXRlIHdyaXRlcyB0byBhIHNpbmdsZSBJMkMgYWRkcmVzcywgZm9yIDMyayBmaXJtd2FyZSBsb2FkICovCi1zdGF0aWMgaW50IGN4MjQxMTZfd3JpdGVyZWdOKHN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSwgaW50IHJlZywgdTggKmRhdGEsIHUxNiBsZW4pCitzdGF0aWMgaW50IGN4MjQxMTZfd3JpdGVyZWdOKHN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSwgaW50IHJlZywKKwkJCSAgICAgY29uc3QgdTggKmRhdGEsIHUxNiBsZW4pCiB7CiAJaW50IHJldCA9IC1FUkVNT1RFSU87CiAJc3RydWN0IGkyY19tc2cgbXNnOwpAQCAtMjIxLDEyICsyMzYsMTMgQEAKIAltc2cuYnVmID0gYnVmOwogCW1zZy5sZW4gPSBsZW4gKyAxOwogCi0JaWYgKGRlYnVnPjEpCi0JCXByaW50aygiY3gyNDExNjogJXM6ICB3cml0ZSByZWdOIDB4JTAyeCwgbGVuID0gJWRcbiIsCi0JCQkJCQlfX2Z1bmNfXyxyZWcsIGxlbik7CisJaWYgKGRlYnVnID4gMSkKKwkJcHJpbnRrKEtFUk5fSU5GTyAiY3gyNDExNjogJXM6ICB3cml0ZSByZWdOIDB4JTAyeCwgbGVuID0gJWRcbiIsCisJCQlfX2Z1bmNfXywgcmVnLCBsZW4pOwogCi0JaWYgKChyZXQgPSBpMmNfdHJhbnNmZXIoc3RhdGUtPmkyYywgJm1zZywgMSkpICE9IDEpIHsKLQkJcHJpbnRrKCIlczogd3JpdGVyZWcgZXJyb3IoZXJyID09ICVpLCByZWcgPT0gMHglMDJ4XG4iLAorCXJldCA9IGkyY190cmFuc2ZlcihzdGF0ZS0+aTJjLCAmbXNnLCAxKTsKKwlpZiAocmV0ICE9IDEpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogd3JpdGVyZWcgZXJyb3IoZXJyID09ICVpLCByZWcgPT0gMHglMDJ4XG4iLAogCQkJIF9fZnVuY19fLCByZXQsIHJlZyk7CiAJCXJldCA9IC1FUkVNT1RFSU87CiAJfQpAQCAtMjM3LDMwICsyNTMsMzUgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGN4MjQxMTZfcmVhZHJlZyhzdHJ1Y3QgY3gyNDExNl9zdGF0ZSogc3RhdGUsIHU4IHJlZykKK3N0YXRpYyBpbnQgY3gyNDExNl9yZWFkcmVnKHN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSwgdTggcmVnKQogewogCWludCByZXQ7CiAJdTggYjBbXSA9IHsgcmVnIH07CiAJdTggYjFbXSA9IHsgMCB9OwogCXN0cnVjdCBpMmNfbXNnIG1zZ1tdID0gewotCQl7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywgLmZsYWdzID0gMCwgLmJ1ZiA9IGIwLCAubGVuID0gMSB9LAotCQl7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywgLmZsYWdzID0gSTJDX01fUkQsIC5idWYgPSBiMSwgLmxlbiA9IDEgfQorCQl7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywgLmZsYWdzID0gMCwKKwkJCS5idWYgPSBiMCwgLmxlbiA9IDEgfSwKKwkJeyAuYWRkciA9IHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsIC5mbGFncyA9IEkyQ19NX1JELAorCQkJLmJ1ZiA9IGIxLCAubGVuID0gMSB9CiAJfTsKIAogCXJldCA9IGkyY190cmFuc2ZlcihzdGF0ZS0+aTJjLCBtc2csIDIpOwogCiAJaWYgKHJldCAhPSAyKSB7Ci0JCXByaW50aygiJXM6IHJlZz0weCV4IChlcnJvcj0lZClcbiIsIF9fZnVuY19fLCByZWcsIHJldCk7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHJlZz0weCV4IChlcnJvcj0lZClcbiIsCisJCQlfX2Z1bmNfXywgcmVnLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCWlmIChkZWJ1Zz4xKQotCQlwcmludGsoImN4MjQxMTY6IHJlYWQgcmVnIDB4JTAyeCwgdmFsdWUgMHglMDJ4XG4iLHJlZywgYjFbMF0pOworCWlmIChkZWJ1ZyA+IDEpCisJCXByaW50ayhLRVJOX0lORk8gImN4MjQxMTY6IHJlYWQgcmVnIDB4JTAyeCwgdmFsdWUgMHglMDJ4XG4iLAorCQkJcmVnLCBiMVswXSk7CiAKIAlyZXR1cm4gYjFbMF07CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDExNl9zZXRfaW52ZXJzaW9uKHN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSwgZmVfc3BlY3RyYWxfaW52ZXJzaW9uX3QgaW52ZXJzaW9uKQorc3RhdGljIGludCBjeDI0MTE2X3NldF9pbnZlcnNpb24oc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlLAorCWZlX3NwZWN0cmFsX2ludmVyc2lvbl90IGludmVyc2lvbikKIHsKIAlkcHJpbnRrKCIlcyglZClcbiIsIF9fZnVuY19fLCBpbnZlcnNpb24pOwogCkBAIC0zMDgsMTAgKzMyOSwxMCBAQAogICogRWcuKDIvMykgc3phcCAiWm9uZSBIb3Jyb3IiCiAgKgogICogbWFzay92YWwgPSAweDA0LCAweDIwCi0gKiBzdGF0dXMgMWYgfCBzaWduYWwgYzNjMCB8IHNuciBhMzMzIHwgYmVyIDAwMDAwMDk4IHwgdW5jIDAwMDAwMDAwIHwgRkVfSEFTX0xPQ0sKKyAqIHN0YXR1cyAxZiB8IHNpZ25hbCBjM2MwIHwgc25yIGEzMzMgfCBiZXIgMDAwMDAwOTggfCB1bmMgMCB8IEZFX0hBU19MT0NLCiAgKgogICogbWFzay92YWwgPSAweDA0LCAweDMwCi0gKiBzdGF0dXMgMWYgfCBzaWduYWwgYzNjMCB8IHNuciBhMzMzIHwgYmVyIDAwMDAwMDAwIHwgdW5jIDAwMDAwMDAwIHwgRkVfSEFTX0xPQ0sKKyAqIHN0YXR1cyAxZiB8IHNpZ25hbCBjM2MwIHwgc25yIGEzMzMgfCBiZXIgMDAwMDAwMDAgfCB1bmMgMCB8IEZFX0hBU19MT0NLCiAgKgogICogQWZ0ZXIgdHVuaW5nIEZFQ1NUQVRVUyBjb250YWlucyBhY3R1YWwgRkVDCiAgKiBpbiB1c2UgbnVtYmVyZWQgMSB0aHJvdWdoIHRvIDggZm9yIDEvMiAuLiAyLzMgZXRjCkBAIC0zODksMTggKzQxMCwxNiBAQAogICAqLwogfTsKIAotc3RhdGljIGludCBjeDI0MTE2X2xvb2t1cF9mZWNtb2Qoc3RydWN0IGN4MjQxMTZfc3RhdGUqIHN0YXRlLAorc3RhdGljIGludCBjeDI0MTE2X2xvb2t1cF9mZWNtb2Qoc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlLAogCWZlX21vZHVsYXRpb25fdCBtLCBmZV9jb2RlX3JhdGVfdCBmKQogewogCWludCBpLCByZXQgPSAtRU9QTk9UU1VQUDsKIAogCWRwcmludGsoIiVzKDB4JTAyeCwweCUwMngpXG4iLCBfX2Z1bmNfXywgbSwgZik7CiAKLQlmb3IoaT0wIDsgaSA8IHNpemVvZihDWDI0MTE2X01PREZFQ19NT0RFUykgLyBzaXplb2Yoc3RydWN0IGN4MjQxMTZfbW9kZmVjKSA7IGkrKykKLQl7Ci0JCWlmKCAobSA9PSBDWDI0MTE2X01PREZFQ19NT0RFU1tpXS5tb2R1bGF0aW9uKSAmJgotCQkJKGYgPT0gQ1gyNDExNl9NT0RGRUNfTU9ERVNbaV0uZmVjKSApCi0JCQl7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoQ1gyNDExNl9NT0RGRUNfTU9ERVMpOyBpKyspIHsKKwkJaWYgKChtID09IENYMjQxMTZfTU9ERkVDX01PREVTW2ldLm1vZHVsYXRpb24pICYmCisJCQkoZiA9PSBDWDI0MTE2X01PREZFQ19NT0RFU1tpXS5mZWMpKSB7CiAJCQkJcmV0ID0gaTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTQwOSw3ICs0MjgsOCBAQAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDExNl9zZXRfZmVjKHN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSwgZmVfbW9kdWxhdGlvbl90IG1vZCwgZmVfY29kZV9yYXRlX3QgZmVjKQorc3RhdGljIGludCBjeDI0MTE2X3NldF9mZWMoc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlLAorCWZlX21vZHVsYXRpb25fdCBtb2QsIGZlX2NvZGVfcmF0ZV90IGZlYykKIHsKIAlpbnQgcmV0ID0gMDsKIApAQCAtNDE3LDcgKzQzNyw3IEBACiAKIAlyZXQgPSBjeDI0MTE2X2xvb2t1cF9mZWNtb2Qoc3RhdGUsIG1vZCwgZmVjKTsKIAotCWlmKHJldCA8IDApCisJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAKIAlzdGF0ZS0+ZG54dC5mZWMgPSBmZWM7CkBAIC00MjksNyArNDQ5LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X3NldF9zeW1ib2xyYXRlKHN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSwgdTMyIHJhdGUpCitzdGF0aWMgaW50IGN4MjQxMTZfc2V0X3N5bWJvbHJhdGUoc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlLCB1MzIgcmF0ZSkKIHsKIAlkcHJpbnRrKCIlcyglZClcbiIsIF9fZnVuY19fLCByYXRlKTsKIApAQCAtNDQ2LDQyICs0NjYsNDkgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X2xvYWRfZmlybXdhcmUgKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KTsKK3N0YXRpYyBpbnQgY3gyNDExNl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpOwogCi1zdGF0aWMgaW50IGN4MjQxMTZfZmlybXdhcmVfb25kZW1hbmQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpCitzdGF0aWMgaW50IGN4MjQxMTZfZmlybXdhcmVfb25kZW1hbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKIAlpbnQgcmV0ID0gMDsKIAotCWRwcmludGsoIiVzKClcbiIsX19mdW5jX18pOworCWRwcmludGsoIiVzKClcbiIsIF9fZnVuY19fKTsKIAotCWlmIChjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIDB4MjApID4gMCkKLQl7CisJaWYgKGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgMHgyMCkgPiAwKSB7CiAKIAkJaWYgKHN0YXRlLT5za2lwX2Z3X2xvYWQpCiAJCQlyZXR1cm4gMDsKIAogCQkvKiBMb2FkIGZpcm13YXJlICovCi0JCS8qIHJlcXVlc3QgdGhlIGZpcm13YXJlLCB0aGlzIHdpbGwgYmxvY2sgdW50aWwgc29tZW9uZSB1cGxvYWRzIGl0ICovCi0JCXByaW50aygiJXM6IFdhaXRpbmcgZm9yIGZpcm13YXJlIHVwbG9hZCAoJXMpLi4uXG4iLCBfX2Z1bmNfXywgQ1gyNDExNl9ERUZBVUxUX0ZJUk1XQVJFKTsKLQkJcmV0ID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIENYMjQxMTZfREVGQVVMVF9GSVJNV0FSRSwgJnN0YXRlLT5pMmMtPmRldik7Ci0JCXByaW50aygiJXM6IFdhaXRpbmcgZm9yIGZpcm13YXJlIHVwbG9hZCgyKS4uLlxuIiwgX19mdW5jX18pOworCQkvKiByZXF1ZXN0IHRoZSBmaXJtd2FyZSwgdGhpcyB3aWxsIGJsb2NrIHVudGlsIGxvYWRlZCAqLworCQlwcmludGsoS0VSTl9JTkZPICIlczogV2FpdGluZyBmb3IgZmlybXdhcmUgdXBsb2FkICglcykuLi5cbiIsCisJCQlfX2Z1bmNfXywgQ1gyNDExNl9ERUZBVUxUX0ZJUk1XQVJFKTsKKwkJcmV0ID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIENYMjQxMTZfREVGQVVMVF9GSVJNV0FSRSwKKwkJCSZzdGF0ZS0+aTJjLT5kZXYpOworCQlwcmludGsoS0VSTl9JTkZPICIlczogV2FpdGluZyBmb3IgZmlybXdhcmUgdXBsb2FkKDIpLi4uXG4iLAorCQkJX19mdW5jX18pOwogCQlpZiAocmV0KSB7Ci0JCQlwcmludGsoIiVzOiBObyBmaXJtd2FyZSB1cGxvYWRlZCAodGltZW91dCBvciBmaWxlIG5vdCBmb3VuZD8pXG4iLCBfX2Z1bmNfXyk7CisJCQlwcmludGsoS0VSTl9FUlIgIiVzOiBObyBmaXJtd2FyZSB1cGxvYWRlZCAiCisJCQkJIih0aW1lb3V0IG9yIGZpbGUgbm90IGZvdW5kPylcbiIsIF9fZnVuY19fKTsKIAkJCXJldHVybiByZXQ7CiAJCX0KIAotCQkvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVjdXJzZSBiYWNrIHRocm91Z2ggaGVyZSBkdXJpbmcgbG9hZGluZyAqLworCQkvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVjdXJzZSBiYWNrIHRocm91Z2ggaGVyZQorCQkgKiBkdXJpbmcgbG9hZGluZyAqLwogCQlzdGF0ZS0+c2tpcF9md19sb2FkID0gMTsKIAogCQlyZXQgPSBjeDI0MTE2X2xvYWRfZmlybXdhcmUoZmUsIGZ3KTsKIAkJaWYgKHJldCkKLQkJCXByaW50aygiJXM6IFdyaXRpbmcgZmlybXdhcmUgdG8gZGV2aWNlIGZhaWxlZFxuIiwgX19mdW5jX18pOworCQkJcHJpbnRrKEtFUk5fRVJSICIlczogV3JpdGluZyBmaXJtd2FyZSB0byBkZXZpY2UgZmFpbGVkXG4iLAorCQkJCV9fZnVuY19fKTsKIAogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKIAotCQlwcmludGsoIiVzOiBGaXJtd2FyZSB1cGxvYWQgJXNcbiIsIF9fZnVuY19fLCByZXQgPT0gMCA/ICJjb21wbGV0ZSIgOiAiZmFpbGVkIik7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBGaXJtd2FyZSB1cGxvYWQgJXNcbiIsIF9fZnVuY19fLAorCQkJcmV0ID09IDAgPyAiY29tcGxldGUiIDogImZhaWxlZCIpOwogCiAJCS8qIEVuc3VyZSBmaXJtd2FyZSBpcyBhbHdheXMgbG9hZGVkIGlmIHJlcXVpcmVkICovCiAJCXN0YXRlLT5za2lwX2Z3X2xvYWQgPSAwOwpAQCAtNDkwLDggKzUxNywxMCBAQAogCXJldHVybiByZXQ7CiB9CiAKLS8qIFRha2UgYSBiYXNpYyBmaXJtd2FyZSBjb21tYW5kIHN0cnVjdHVyZSwgZm9ybWF0IGl0IGFuZCBmb3J3YXJkIGl0IGZvciBwcm9jZXNzaW5nICovCi1zdGF0aWMgaW50IGN4MjQxMTZfY21kX2V4ZWN1dGUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjdCBjeDI0MTE2X2NtZCAqY21kKQorLyogVGFrZSBhIGJhc2ljIGZpcm13YXJlIGNvbW1hbmQgc3RydWN0dXJlLCBmb3JtYXQgaXQKKyAqIGFuZCBmb3J3YXJkIGl0IGZvciBwcm9jZXNzaW5nCisgKi8KK3N0YXRpYyBpbnQgY3gyNDExNl9jbWRfZXhlY3V0ZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgc3RydWN0IGN4MjQxMTZfY21kICpjbWQpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJaW50IGksIHJldDsKQEAgLTQ5OSw0OSArNTI4LDQ5IEBACiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCiAJLyogTG9hZCB0aGUgZmlybXdhcmUgaWYgcmVxdWlyZWQgKi8KLQlpZiAoIChyZXQgPSBjeDI0MTE2X2Zpcm13YXJlX29uZGVtYW5kKGZlKSkgIT0gMCkKLQl7Ci0JCXByaW50aygiJXMoKTogVW5hYmxlIGluaXRpYWxpc2UgdGhlIGZpcm13YXJlXG4iLCBfX2Z1bmNfXyk7CisJcmV0ID0gY3gyNDExNl9maXJtd2FyZV9vbmRlbWFuZChmZSk7CisJaWYgKHJldCAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXMoKTogVW5hYmxlIGluaXRpYWxpc2UgdGhlIGZpcm13YXJlXG4iLAorCQkJX19mdW5jX18pOwogCQlyZXR1cm4gcmV0OwogCX0KIAogCS8qIFdyaXRlIHRoZSBjb21tYW5kICovCi0JZm9yKGkgPSAwOyBpIDwgY21kLT5sZW4gOyBpKyspCi0JeworCWZvciAoaSA9IDA7IGkgPCBjbWQtPmxlbiA7IGkrKykgewogCQlkcHJpbnRrKCIlczogMHglMDJ4ID09IDB4JTAyeFxuIiwgX19mdW5jX18sIGksIGNtZC0+YXJnc1tpXSk7CiAJCWN4MjQxMTZfd3JpdGVyZWcoc3RhdGUsIGksIGNtZC0+YXJnc1tpXSk7CiAJfQogCiAJLyogU3RhcnQgZXhlY3V0aW9uIGFuZCB3YWl0IGZvciBjbWQgdG8gdGVybWluYXRlICovCiAJY3gyNDExNl93cml0ZXJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfRVhFQ1VURSwgMHgwMSk7Ci0Jd2hpbGUoIGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfRVhFQ1VURSkgKQotCXsKKwl3aGlsZSAoY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19FWEVDVVRFKSkgewogCQltc2xlZXAoMTApOwotCQlpZihpKysgPiA2NCkKLQkJewotCQkJLyogQXZvaWQgbG9vcGluZyBmb3JldmVyIGlmIHRoZSBmaXJtd2FyZSBkb2VzIG5vIHJlc3BvbmQgKi8KLQkJCXByaW50aygiJXMoKSBGaXJtd2FyZSBub3QgcmVzcG9uZGluZ1xuIiwgX19mdW5jX18pOworCQlpZiAoaSsrID4gNjQpIHsKKwkJCS8qIEF2b2lkIGxvb3BpbmcgZm9yZXZlciBpZiB0aGUgZmlybXdhcmUgZG9lcworCQkJCW5vdCByZXNwb25kICovCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlcygpIEZpcm13YXJlIG5vdCByZXNwb25kaW5nXG4iLAorCQkJCV9fZnVuY19fKTsKIAkJCXJldHVybiAtRVJFTU9URUlPOwogCQl9CiAJfQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMTZfbG9hZF9maXJtd2FyZSAoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpCitzdGF0aWMgaW50IGN4MjQxMTZfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQogewotCXN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCXN0cnVjdCBjeDI0MTE2X2NtZCBjbWQ7CiAJaW50IGksIHJldDsKIAl1bnNpZ25lZCBjaGFyIHZlcnNbNF07CiAKIAlkcHJpbnRrKCIlc1xuIiwgX19mdW5jX18pOwotCWRwcmludGsoIkZpcm13YXJlIGlzICV6dSBieXRlcyAoJTAyeCAlMDJ4IC4uICUwMnggJTAyeClcbiIKLQkJCSxmdy0+c2l6ZQotCQkJLGZ3LT5kYXRhWzBdCi0JCQksZnctPmRhdGFbMV0KLQkJCSxmdy0+ZGF0YVsgZnctPnNpemUtMiBdCi0JCQksZnctPmRhdGFbIGZ3LT5zaXplLTEgXQotCQkJKTsKKwlkcHJpbnRrKCJGaXJtd2FyZSBpcyAlenUgYnl0ZXMgKCUwMnggJTAyeCAuLiAlMDJ4ICUwMngpXG4iLAorCQkJZnctPnNpemUsCisJCQlmdy0+ZGF0YVswXSwKKwkJCWZ3LT5kYXRhWzFdLAorCQkJZnctPmRhdGFbZnctPnNpemUtMl0sCisJCQlmdy0+ZGF0YVtmdy0+c2l6ZS0xXSk7CiAKIAkvKiBUb2dnbGUgODh4IFNSU1QgcGluIHRvIHJlc2V0IGRlbW9kICovCiAJaWYgKHN0YXRlLT5jb25maWctPnJlc2V0X2RldmljZSkKQEAgLTU4Nyw3ICs2MTYsNyBAQAogCWNtZC5hcmdzWzB4MDddID0gMHg5ZDsKIAljbWQuYXJnc1sweDA4XSA9IDB4ZmM7CiAJY21kLmFyZ3NbMHgwOV0gPSAweDA2OwotCWNtZC5sZW49IDB4MGE7CisJY21kLmxlbiA9IDB4MGE7CiAJcmV0ID0gY3gyNDExNl9jbWRfZXhlY3V0ZShmZSwgJmNtZCk7CiAJaWYgKHJldCAhPSAwKQogCQlyZXR1cm4gcmV0OwpAQCAtNTk4LDcgKzYyNyw3IEBACiAJY21kLmFyZ3NbMHgwMF0gPSBDTURfVFVORVJJTklUOwogCWNtZC5hcmdzWzB4MDFdID0gMHgwMDsKIAljbWQuYXJnc1sweDAyXSA9IDB4MDA7Ci0JY21kLmxlbj0gMHgwMzsKKwljbWQubGVuID0gMHgwMzsKIAlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKIAlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CkBAIC02MTUsMzYgKzY0NCwzOCBAQAogCWVsc2UKIAkJY21kLmFyZ3NbMHgwNF0gPSAweDAyOwogCWNtZC5hcmdzWzB4MDVdID0gMHgwMDsKLQljbWQubGVuPSAweDA2OworCWNtZC5sZW4gPSAweDA2OwogCXJldCA9IGN4MjQxMTZfY21kX2V4ZWN1dGUoZmUsICZjbWQpOwogCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKIAogCS8qIEZpcm13YXJlIENNRCAzNTogR2V0IGZpcm13YXJlIHZlcnNpb24gKi8KIAljbWQuYXJnc1sweDAwXSA9IENNRF9VUERGV1ZFUlM7Ci0JY21kLmxlbj0gMHgwMjsKLQlmb3IoaT0wOyBpPDQ7IGkrKykgeworCWNtZC5sZW4gPSAweDAyOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKIAkJY21kLmFyZ3NbMHgwMV0gPSBpOwogCQlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKIAkJaWYgKHJldCAhPSAwKQogCQkJcmV0dXJuIHJldDsKLQkJdmVyc1tpXT0gY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19NQUlMQk9YKTsKKwkJdmVyc1tpXSA9IGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfTUFJTEJPWCk7CiAJfQotCXByaW50aygiJXM6IEZXIHZlcnNpb24gJWkuJWkuJWkuJWlcbiIsIF9fZnVuY19fLAorCXByaW50ayhLRVJOX0lORk8gIiVzOiBGVyB2ZXJzaW9uICVpLiVpLiVpLiVpXG4iLCBfX2Z1bmNfXywKIAkJdmVyc1swXSwgdmVyc1sxXSwgdmVyc1syXSwgdmVyc1szXSk7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X3NldF92b2x0YWdlKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBmZV9zZWNfdm9sdGFnZV90IHZvbHRhZ2UpCitzdGF0aWMgaW50IGN4MjQxMTZfc2V0X3ZvbHRhZ2Uoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJZmVfc2VjX3ZvbHRhZ2VfdCB2b2x0YWdlKQogewogCS8qIFRoZSBpc2w2NDIxIG1vZHVsZSB3aWxsIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gaW4gdGhlIGZvcHMuICovCi0JZHByaW50aygiJXMoKSBUaGlzIHNob3VsZCBuZXZlciBhcHBlYXIgaWYgdGhlIGlzbDY0MjEgbW9kdWxlIGlzIGxvYWRlZCBjb3JyZWN0bHlcbiIsX19mdW5jX18pOworCWRwcmludGsoIiVzKCkgVGhpcyBzaG91bGQgbmV2ZXIgYXBwZWFyIGlmIHRoZSBpc2w2NDIxIG1vZHVsZSAiCisJCSJpcyBsb2FkZWQgY29ycmVjdGx5XG4iLCBfX2Z1bmNfXyk7CiAKIAlyZXR1cm4gLUVPUE5PVFNVUFA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc3RhdHVzX3QqIHN0YXR1cykKK3N0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgZmVfc3RhdHVzX3QgKnN0YXR1cykKIHsKIAlzdHJ1Y3QgY3gyNDExNl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIApAQCAtNjY2LDIyICs2OTcsMjMgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X3JlYWRfYmVyKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MzIqIGJlcikKK3N0YXRpYyBpbnQgY3gyNDExNl9yZWFkX2JlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTMyICpiZXIpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKIAlkcHJpbnRrKCIlcygpXG4iLCBfX2Z1bmNfXyk7CiAKLQkqYmVyID0gICggY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVIyNCkgPDwgMjQgKSB8Ci0JCSggY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVIxNikgPDwgMTYgKSB8Ci0JCSggY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVI4ICkgPDwgOCAgKSB8Ci0JCSAgY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVIwICk7CisJKmJlciA9ICAoY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVIyNCkgPDwgMjQpIHwKKwkJKGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfQkVSMTYpIDw8IDE2KSB8CisJCShjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIENYMjQxMTZfUkVHX0JFUjgpICA8PCA4KSAgfAorCQkgY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19CRVIwKTsKIAogCXJldHVybiAwOwogfQogCiAvKiBUT0RPIERldGVybWluZSBmdW5jdGlvbiBhbmQgc2NhbGUgYXBwcm9wcmlhdGVseSAqLwotc3RhdGljIGludCBjeDI0MTE2X3JlYWRfc2lnbmFsX3N0cmVuZ3RoKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MTYqIHNpZ25hbF9zdHJlbmd0aCkKK3N0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3NpZ25hbF9zdHJlbmd0aChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwl1MTYgKnNpZ25hbF9zdHJlbmd0aCkKIHsKIAlzdHJ1Y3QgY3gyNDExNl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAlzdHJ1Y3QgY3gyNDExNl9jbWQgY21kOwpAQCAtNjkyLDM5ICs3MjQsNDMgQEAKIAogCS8qIEZpcm13YXJlIENNRCAxOTogR2V0IEFHQyAqLwogCWNtZC5hcmdzWzB4MDBdID0gQ01EX0dFVEFHQzsKLQljbWQubGVuPSAweDAxOworCWNtZC5sZW4gPSAweDAxOwogCXJldCA9IGN4MjQxMTZfY21kX2V4ZWN1dGUoZmUsICZjbWQpOwogCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKIAotCXNpZ19yZWFkaW5nID0gKCBjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIENYMjQxMTZfUkVHX1NTVEFUVVMpICYgQ1gyNDExNl9TSUdOQUxfTUFTSyApIHwKLQkJKCBjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIENYMjQxMTZfUkVHX1NJR05BTCkgPDwgNiApOwotCSpzaWduYWxfc3RyZW5ndGg9IDAgLSBzaWdfcmVhZGluZzsKKwlzaWdfcmVhZGluZyA9CisJCShjeDI0MTE2X3JlYWRyZWcoc3RhdGUsCisJCQlDWDI0MTE2X1JFR19TU1RBVFVTKSAmIENYMjQxMTZfU0lHTkFMX01BU0spIHwKKwkJKGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfU0lHTkFMKSA8PCA2KTsKKwkqc2lnbmFsX3N0cmVuZ3RoID0gMCAtIHNpZ19yZWFkaW5nOwogCi0JZHByaW50aygiJXM6IHJhdyAvIGNvb2tlZCA9IDB4JTA0eCAvIDB4JTA0eFxuIiwgX19mdW5jX18sIHNpZ19yZWFkaW5nLCAqc2lnbmFsX3N0cmVuZ3RoKTsKKwlkcHJpbnRrKCIlczogcmF3IC8gY29va2VkID0gMHglMDR4IC8gMHglMDR4XG4iLAorCQlfX2Z1bmNfXywgc2lnX3JlYWRpbmcsICpzaWduYWxfc3RyZW5ndGgpOwogCiAJcmV0dXJuIDA7CiB9CiAKIC8qIFNOUiAoMC4uMTAwKSUgPSAoc2lnICYgMHhmMCkgKiAxMCArIChzaWcgJiAweDBmKSAqIDEwIC8gMTYgKi8KLXN0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3Nucl9wY3Qoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUxNiogc25yKQorc3RhdGljIGludCBjeDI0MTE2X3JlYWRfc25yX3BjdChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTE2ICpzbnIpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJdTggc25yX3JlYWRpbmc7CiAJc3RhdGljIGNvbnN0IHUzMiBzbnJfdGFiW10gPSB7IC8qIDEwIHggVGFibGUgKHJvdW5kZWQgdXApICovCi0JCTB4MDAwMDAsMHgwMTk5QSwweDAzMzMzLDB4MDRjY0QsMHgwNjY2NywKLQkJCTB4MDgwMDAsMHgwOTk5QSwweDBiMzMzLDB4MGNjY0QsMHgwZTY2NywKLQkJMHgxMDAwMCwweDExOTlBLDB4MTMzMzMsMHgxNGNjRCwweDE2NjY3LDB4MTgwMDAgfTsKKwkJMHgwMDAwMCwgMHgwMTk5QSwgMHgwMzMzMywgMHgwNGNjRCwgMHgwNjY2NywKKwkJMHgwODAwMCwgMHgwOTk5QSwgMHgwYjMzMywgMHgwY2NjRCwgMHgwZTY2NywKKwkJMHgxMDAwMCwgMHgxMTk5QSwgMHgxMzMzMywgMHgxNGNjRCwgMHgxNjY2NywKKwkJMHgxODAwMCB9OwogCiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCiAJc25yX3JlYWRpbmcgPSBjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIENYMjQxMTZfUkVHX1FVQUxJVFkwKTsKIAotCWlmKHNucl9yZWFkaW5nID49IDB4YTAgLyogMTAwJSAqLykKKwlpZiAoc25yX3JlYWRpbmcgPj0gMHhhMCAvKiAxMDAlICovKQogCQkqc25yID0gMHhmZmZmOwogCWVsc2UKLQkJKnNuciA9IHNucl90YWIgWyAoIHNucl9yZWFkaW5nICYgMHhmMCApICAgPj4gNCBdICsKLQkJCSggc25yX3RhYiBbICggc25yX3JlYWRpbmcgJiAweDBmICkgXSA+PiA0ICk7CisJCSpzbnIgPSBzbnJfdGFiWyhzbnJfcmVhZGluZyAmIDB4ZjApID4+IDRdICsKKwkJCShzbnJfdGFiWyhzbnJfcmVhZGluZyAmIDB4MGYpXSA+PiA0KTsKIAogCWRwcmludGsoIiVzOiByYXcgLyBjb29rZWQgPSAweCUwMnggLyAweCUwNHhcbiIsIF9fZnVuY19fLAogCQlzbnJfcmVhZGluZywgKnNucik7CkBAIC03MzYsNyArNzcyLDcgQEAKICAqIEVTTk8sIGZyb20gMC0+MzBkYiAodmFsdWVzIDAtPjMwMCkuIFdlIHByb3ZpZGUgdGhpcyB2YWx1ZSBieQogICogZGVmYXVsdC4KICAqLwotc3RhdGljIGludCBjeDI0MTE2X3JlYWRfc25yX2Vzbm8oc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUxNiogc25yKQorc3RhdGljIGludCBjeDI0MTE2X3JlYWRfc25yX2Vzbm8oc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIHUxNiAqc25yKQogewogCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCkBAIC03NTAsNyArNzg2LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X3JlYWRfc25yKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MTYqIHNucikKK3N0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTE2ICpzbnIpCiB7CiAJaWYgKGVzbm9fc25yID09IDEpCiAJCXJldHVybiBjeDI0MTE2X3JlYWRfc25yX2Vzbm8oZmUsIHNucik7CkBAIC03NTgsMjcgKzc5NCwyNyBAQAogCQlyZXR1cm4gY3gyNDExNl9yZWFkX3Nucl9wY3QoZmUsIHNucik7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDExNl9yZWFkX3VjYmxvY2tzKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCB1MzIqIHVjYmxvY2tzKQorc3RhdGljIGludCBjeDI0MTE2X3JlYWRfdWNibG9ja3Moc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIHUzMiAqdWNibG9ja3MpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKIAlkcHJpbnRrKCIlcygpXG4iLCBfX2Z1bmNfXyk7CiAKLQkqdWNibG9ja3MgPSAoIGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfVUNCOCkgPDwgOCApIHwKKwkqdWNibG9ja3MgPSAoY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19VQ0I4KSA8PCA4KSB8CiAJCWN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfVUNCMCk7CiAKIAlyZXR1cm4gMDsKIH0KIAogLyogT3ZlcndyaXRlIHRoZSBjdXJyZW50IHR1bmluZyBwYXJhbXMsIHdlIGFyZSBhYm91dCB0byB0dW5lICovCi1zdGF0aWMgdm9pZCBjeDI0MTE2X2Nsb25lX3BhcmFtcyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSkKK3N0YXRpYyB2b2lkIGN4MjQxMTZfY2xvbmVfcGFyYW1zKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewogCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCW1lbWNweSgmc3RhdGUtPmRjdXIsICZzdGF0ZS0+ZG54dCwgc2l6ZW9mKHN0YXRlLT5kY3VyKSk7CiB9CiAKIC8qIFdhaXQgZm9yIExOQiAqLwotc3RhdGljIGludCBjeDI0MTE2X3dhaXRfZm9yX2xuYihzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSkKK3N0YXRpYyBpbnQgY3gyNDExNl93YWl0X2Zvcl9sbmIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJaW50IGk7CkBAIC03ODcsNyArODIzLDcgQEAKIAkJY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19RU1RBVFVTKSk7CiAKIAkvKiBXYWl0IGZvciB1cCB0byAzMDAgbXMgKi8KLQlmb3IoaSA9IDA7IGkgPCAzMCA7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCAzMCA7IGkrKykgewogCQlpZiAoY3gyNDExNl9yZWFkcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19RU1RBVFVTKSAmIDB4MjApCiAJCQlyZXR1cm4gMDsKIAkJbXNsZWVwKDEwKTsKQEAgLTc5OCwyMCArODM0LDIxIEBACiAJcmV0dXJuIC1FVElNRURPVVQ7IC8qIC1FQlVTWSA/ICovCiB9CiAKLXN0YXRpYyBpbnQgY3gyNDExNl9zZXRfdG9uZShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc2VjX3RvbmVfbW9kZV90IHRvbmUpCitzdGF0aWMgaW50IGN4MjQxMTZfc2V0X3RvbmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJZmVfc2VjX3RvbmVfbW9kZV90IHRvbmUpCiB7CiAJc3RydWN0IGN4MjQxMTZfY21kIGNtZDsKIAlpbnQgcmV0OwogCiAJZHByaW50aygiJXMoJWQpXG4iLCBfX2Z1bmNfXywgdG9uZSk7Ci0JaWYgKCAodG9uZSAhPSBTRUNfVE9ORV9PTikgJiYgKHRvbmUgIT0gU0VDX1RPTkVfT0ZGKSApIHsKLQkJcHJpbnRrKCIlczogSW52YWxpZCwgdG9uZT0lZFxuIiwgX19mdW5jX18sIHRvbmUpOworCWlmICgodG9uZSAhPSBTRUNfVE9ORV9PTikgJiYgKHRvbmUgIT0gU0VDX1RPTkVfT0ZGKSkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBJbnZhbGlkLCB0b25lPSVkXG4iLCBfX2Z1bmNfXywgdG9uZSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCS8qIFdhaXQgZm9yIExOQiByZWFkeSAqLwogCXJldCA9IGN4MjQxMTZfd2FpdF9mb3JfbG5iKGZlKTsKLQlpZihyZXQgIT0gMCkKKwlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CiAKIAkvKiBNaW4gZGVsYXkgdGltZSBhZnRlciBEaVNFcUMgc2VuZCAqLwpAQCAtODIwLDcgKzg1Nyw3IEBACiAJLyogVGhpcyBpcyBhbHdheXMgZG9uZSBiZWZvcmUgdGhlIHRvbmUgaXMgc2V0ICovCiAJY21kLmFyZ3NbMHgwMF0gPSBDTURfU0VUX1RPTkVQUkU7CiAJY21kLmFyZ3NbMHgwMV0gPSAweDAwOwotCWNtZC5sZW49IDB4MDI7CisJY21kLmxlbiA9IDB4MDI7CiAJcmV0ID0gY3gyNDExNl9jbWRfZXhlY3V0ZShmZSwgJmNtZCk7CiAJaWYgKHJldCAhPSAwKQogCQlyZXR1cm4gcmV0OwpAQCAtODM2LDExICs4NzMsMTEgQEAKIAkJY21kLmFyZ3NbMHgwM10gPSAweDAxOwogCQlicmVhazsKIAljYXNlIFNFQ19UT05FX09GRjoKLQkJZHByaW50aygiJXM6IHNldHRpbmcgdG9uZSBvZmZcbiIsX19mdW5jX18pOworCQlkcHJpbnRrKCIlczogc2V0dGluZyB0b25lIG9mZlxuIiwgX19mdW5jX18pOwogCQljbWQuYXJnc1sweDAzXSA9IDB4MDA7CiAJCWJyZWFrOwogCX0KLQljbWQubGVuPSAweDA0OworCWNtZC5sZW4gPSAweDA0OwogCiAJLyogTWluIGRlbGF5IHRpbWUgYmVmb3JlIERpU0VxQyBzZW5kICovCiAJbXNsZWVwKDE1KTsgLyogWFhYIGRldGVybWluZSBpcyBGVyBkb2VzIHRoaXMsIHNlZSBzZW5kX2Rpc2VxYy9idXJzdCAqLwpAQCAtODQ5LDcgKzg4Niw3IEBACiB9CiAKIC8qIEluaXRpYWxpc2UgRGlTRXFDICovCi1zdGF0aWMgaW50IGN4MjQxMTZfZGlzZXFjX2luaXQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpCitzdGF0aWMgaW50IGN4MjQxMTZfZGlzZXFjX2luaXQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJc3RydWN0IGN4MjQxMTZfY21kIGNtZDsKQEAgLTg2NCw3ICs5MDEsNyBAQAogCWNtZC5hcmdzWzB4MDVdID0gMHgyODsKIAljbWQuYXJnc1sweDA2XSA9ICh0b25lYnVyc3QgPT0gQ1gyNDExNl9ESVNFUUNfVE9ORU9GRikgPyAweDAwIDogMHgwMTsKIAljbWQuYXJnc1sweDA3XSA9IDB4MDE7Ci0JY21kLmxlbj0gMHgwODsKKwljbWQubGVuID0gMHgwODsKIAlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKIAlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CkBAIC04NzgsMzYgKzkxNSwzOCBAQAogCS8qIFVua25vd24gKi8KIAlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19BUkcyXzJdID0gMHgwMjsKIAlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19BUkczXzBdID0gMHgwMDsKLQlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19BUkc0XzBdID0gMHgwMDsgLyogQ29udGludWF0aW9uIGZsYWc/ICovCisJLyogQ29udGludWF0aW9uIGZsYWc/ICovCisJc3RhdGUtPmRzZWNfY21kLmFyZ3NbQ1gyNDExNl9ESVNFUUNfQVJHNF8wXSA9IDB4MDA7CiAKIAkvKiBEaVNFcUMgbWVzc2FnZSBsZW5ndGggKi8KIAlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19NU0dMRU5dID0gMHgwMDsKIAogCS8qIENvbW1hbmQgbGVuZ3RoICovCi0Jc3RhdGUtPmRzZWNfY21kLmxlbj0gQ1gyNDExNl9ESVNFUUNfTVNHT0ZTOworCXN0YXRlLT5kc2VjX2NtZC5sZW4gPSBDWDI0MTE2X0RJU0VRQ19NU0dPRlM7CiAKIAlyZXR1cm4gMDsKIH0KIAogLyogU2VuZCBEaVNFcUMgbWVzc2FnZSB3aXRoIGRlcml2ZWQgYnVyc3QgKGhhY2spIHx8IHByZXZpb3VzIGJ1cnN0ICovCi1zdGF0aWMgaW50IGN4MjQxMTZfc2VuZF9kaXNlcWNfbXNnKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y3QgZHZiX2Rpc2VxY19tYXN0ZXJfY21kICpkKQorc3RhdGljIGludCBjeDI0MTE2X3NlbmRfZGlzZXFjX21zZyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlzdHJ1Y3QgZHZiX2Rpc2VxY19tYXN0ZXJfY21kICpkKQogewogCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCWludCBpLCByZXQ7CiAKIAkvKiBEdW1wIERpU0VxQyBtZXNzYWdlICovCiAJaWYgKGRlYnVnKSB7Ci0JCXByaW50aygiY3gyNDExNjogJXMoIiwgX19mdW5jX18pOwotCQlmb3IoaSA9IDAgOyBpIDwgZC0+bXNnX2xlbiA7KSB7Ci0JCQlwcmludGsoIjB4JTAyeCIsIGQtPm1zZ1tpXSk7Ci0JCQlpZigrK2kgPCBkLT5tc2dfbGVuKQotCQkJCXByaW50aygiLCAiKTsKLQkJCX0KKwkJcHJpbnRrKEtFUk5fSU5GTyAiY3gyNDExNjogJXMoIiwgX19mdW5jX18pOworCQlmb3IgKGkgPSAwIDsgaSA8IGQtPm1zZ19sZW4gOykgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAiMHglMDJ4IiwgZC0+bXNnW2ldKTsKKwkJCWlmICgrK2kgPCBkLT5tc2dfbGVuKQorCQkJCXByaW50ayhLRVJOX0lORk8gIiwgIik7CisJCX0KIAkJcHJpbnRrKCIpIHRvbmVidXJzdD0lZFxuIiwgdG9uZWJ1cnN0KTsKIAl9CiAKIAkvKiBWYWxpZGF0ZSBsZW5ndGggKi8KLQlpZihkLT5tc2dfbGVuID4gKENYMjQxMTZfQVJHTEVOIC0gQ1gyNDExNl9ESVNFUUNfTVNHT0ZTKSkKKwlpZiAoZC0+bXNnX2xlbiA+IChDWDI0MTE2X0FSR0xFTiAtIENYMjQxMTZfRElTRVFDX01TR09GUykpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyogRGlTRXFDIG1lc3NhZ2UgKi8KQEAgLTkxOCwxOCArOTU3LDE5IEBACiAJc3RhdGUtPmRzZWNfY21kLmFyZ3NbQ1gyNDExNl9ESVNFUUNfTVNHTEVOXSA9IGQtPm1zZ19sZW47CiAKIAkvKiBDb21tYW5kIGxlbmd0aCAqLwotCXN0YXRlLT5kc2VjX2NtZC5sZW49IENYMjQxMTZfRElTRVFDX01TR09GUyArIHN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX01TR0xFTl07CisJc3RhdGUtPmRzZWNfY21kLmxlbiA9IENYMjQxMTZfRElTRVFDX01TR09GUyArCisJCXN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX01TR0xFTl07CiAKIAkvKiBEaVNFcUMgdG9uZWJ1cnN0ICovCi0JaWYodG9uZWJ1cnN0ID09IENYMjQxMTZfRElTRVFDX01FU0dDQUNIRSkKKwlpZiAodG9uZWJ1cnN0ID09IENYMjQxMTZfRElTRVFDX01FU0dDQUNIRSkKIAkJLyogTWVzc2FnZSBpcyBjYWNoZWQgKi8KIAkJcmV0dXJuIDA7CiAKLQllbHNlIGlmKHRvbmVidXJzdCA9PSBDWDI0MTE2X0RJU0VRQ19UT05FT0ZGKQorCWVsc2UgaWYgKHRvbmVidXJzdCA9PSBDWDI0MTE2X0RJU0VRQ19UT05FT0ZGKQogCQkvKiBNZXNzYWdlIGlzIHNlbnQgd2l0aG91dCBidXJzdCAqLwogCQlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19CVVJTVF0gPSAwOwogCi0JZWxzZSBpZih0b25lYnVyc3QgPT0gQ1gyNDExNl9ESVNFUUNfVE9ORUNBQ0hFKSB7CisJZWxzZSBpZiAodG9uZWJ1cnN0ID09IENYMjQxMTZfRElTRVFDX1RPTkVDQUNIRSkgewogCQkvKgogCQkgKiBNZXNzYWdlIGlzIHNlbnQgd2l0aCBkZXJpdmVkIGVsc2UgY2FjaGVkIGJ1cnN0CiAJCSAqCkBAIC05NDgsMTUgKzk4OCwxNyBAQAogCQkgKiAgICAgICAgICAgICAgWSA9IFZPTFRBR0UgICAgICAgICAgICAgKDA9MTNWLCAxPTE4VikKIAkJICogICAgICAgICAgICAgIFogPSBCQU5EICAgICAgICAgICAgICAgICgwPUxPVywgMT1ISUdIKDIySykpCiAJCSAqLwotCQlpZihkLT5tc2dfbGVuID49IDQgJiYgZC0+bXNnWzJdID09IDB4MzgpCi0JCQlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19CVVJTVF0gPSAoKGQtPm1zZ1szXSAmIDQpID4+IDIpOwotCQlpZihkZWJ1ZykKLQkJCWRwcmludGsoIiVzIGJ1cnN0PSVkXG4iLCBfX2Z1bmNfXywgc3RhdGUtPmRzZWNfY21kLmFyZ3NbQ1gyNDExNl9ESVNFUUNfQlVSU1RdKTsKKwkJaWYgKGQtPm1zZ19sZW4gPj0gNCAmJiBkLT5tc2dbMl0gPT0gMHgzOCkKKwkJCXN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX0JVUlNUXSA9CisJCQkJKChkLT5tc2dbM10gJiA0KSA+PiAyKTsKKwkJaWYgKGRlYnVnKQorCQkJZHByaW50aygiJXMgYnVyc3Q9JWRcbiIsIF9fZnVuY19fLAorCQkJCXN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX0JVUlNUXSk7CiAJfQogCiAJLyogV2FpdCBmb3IgTE5CIHJlYWR5ICovCiAJcmV0ID0gY3gyNDExNl93YWl0X2Zvcl9sbmIoZmUpOwotCWlmKHJldCAhPSAwKQorCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKIAogCS8qIFdhaXQgZm9yIHZvbHRhZ2UvbWluIHJlcGVhdCBkZWxheSAqLwpAQCAtOTY0LDcgKzEwMDYsNyBAQAogCiAJLyogQ29tbWFuZCAqLwogCXJldCA9IGN4MjQxMTZfY21kX2V4ZWN1dGUoZmUsICZzdGF0ZS0+ZHNlY19jbWQpOwotCWlmKHJldCAhPSAwKQorCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKIAkvKgogCSAqIFdhaXQgZm9yIHNlbmQKQEAgLTk3NiwyOSArMTAxOCwzMyBAQAogCSAqICAxMi41bXMgYnVyc3QgICAgICAgICsKIAkgKiA+MTVtcyBkZWxheSAgICAgICAgICAgIChYWFggZGV0ZXJtaW5lIGlmIEZXIGRvZXMgdGhpcywgc2VlIHNldF90b25lKQogCSAqLwotCW1zbGVlcCggKHN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX01TR0xFTl0gPDwgNCkgKyAoKHRvbmVidXJzdCA9PSBDWDI0MTE2X0RJU0VRQ19UT05FT0ZGKSA/IDMwIDogNjApICk7CisJbXNsZWVwKChzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19NU0dMRU5dIDw8IDQpICsKKwkJKCh0b25lYnVyc3QgPT0gQ1gyNDExNl9ESVNFUUNfVE9ORU9GRikgPyAzMCA6IDYwKSk7CiAKIAlyZXR1cm4gMDsKIH0KIAogLyogU2VuZCBEaVNFcUMgYnVyc3QgKi8KLXN0YXRpYyBpbnQgY3gyNDExNl9kaXNlcWNfc2VuZF9idXJzdChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc2VjX21pbmlfY21kX3QgYnVyc3QpCitzdGF0aWMgaW50IGN4MjQxMTZfZGlzZXFjX3NlbmRfYnVyc3Qoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJZmVfc2VjX21pbmlfY21kX3QgYnVyc3QpCiB7CiAJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJaW50IHJldDsKIAotCWRwcmludGsoIiVzKCVkKSB0b25lYnVyc3Q9JWRcbiIsX19mdW5jX18sIGJ1cnN0LCB0b25lYnVyc3QpOworCWRwcmludGsoIiVzKCVkKSB0b25lYnVyc3Q9JWRcbiIsIF9fZnVuY19fLCBidXJzdCwgdG9uZWJ1cnN0KTsKIAogCS8qIERpU0VxQyBidXJzdCAqLwogCWlmIChidXJzdCA9PSBTRUNfTUlOSV9BKQotCQlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19CVVJTVF0gPSBDWDI0MTE2X0RJU0VRQ19NSU5JX0E7Ci0JZWxzZSBpZihidXJzdCA9PSBTRUNfTUlOSV9CKQotCQlzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19CVVJTVF0gPSBDWDI0MTE2X0RJU0VRQ19NSU5JX0I7CisJCXN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX0JVUlNUXSA9CisJCQlDWDI0MTE2X0RJU0VRQ19NSU5JX0E7CisJZWxzZSBpZiAoYnVyc3QgPT0gU0VDX01JTklfQikKKwkJc3RhdGUtPmRzZWNfY21kLmFyZ3NbQ1gyNDExNl9ESVNFUUNfQlVSU1RdID0KKwkJCUNYMjQxMTZfRElTRVFDX01JTklfQjsKIAllbHNlCiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyogRGlTRXFDIHRvbmVidXJzdCAqLwotCWlmKHRvbmVidXJzdCAhPSBDWDI0MTE2X0RJU0VRQ19NRVNHQ0FDSEUpCisJaWYgKHRvbmVidXJzdCAhPSBDWDI0MTE2X0RJU0VRQ19NRVNHQ0FDSEUpCiAJCS8qIEJ1cnN0IGlzIGNhY2hlZCAqLwogCQlyZXR1cm4gMDsKIApAQCAtMTAwNiw3ICsxMDUyLDcgQEAKIAogCS8qIFdhaXQgZm9yIExOQiByZWFkeSAqLwogCXJldCA9IGN4MjQxMTZfd2FpdF9mb3JfbG5iKGZlKTsKLQlpZihyZXQgIT0gMCkKKwlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CiAKIAkvKiBXYWl0IGZvciB2b2x0YWdlL21pbiByZXBlYXQgZGVsYXkgKi8KQEAgLTEwMTQsNyArMTA2MCw3IEBACiAKIAkvKiBDb21tYW5kICovCiAJcmV0ID0gY3gyNDExNl9jbWRfZXhlY3V0ZShmZSwgJnN0YXRlLT5kc2VjX2NtZCk7Ci0JaWYocmV0ICE9IDApCisJaWYgKHJldCAhPSAwKQogCQlyZXR1cm4gcmV0OwogCiAJLyoKQEAgLTEwMjcsMzQgKzEwNzMsMzIgQEAKIAkgKiAgMTIuNW1zIGJ1cnN0ICAgICAgICArCiAJICogPjE1bXMgZGVsYXkgICAgICAgICAgICAoWFhYIGRldGVybWluZSBpZiBGVyBkb2VzIHRoaXMsIHNlZSBzZXRfdG9uZSkKIAkgKi8KLQltc2xlZXAoIChzdGF0ZS0+ZHNlY19jbWQuYXJnc1tDWDI0MTE2X0RJU0VRQ19NU0dMRU5dIDw8IDQpICsgNjAgKTsKKwltc2xlZXAoKHN0YXRlLT5kc2VjX2NtZC5hcmdzW0NYMjQxMTZfRElTRVFDX01TR0xFTl0gPDwgNCkgKyA2MCk7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgY3gyNDExNl9yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIHZvaWQgY3gyNDExNl9yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewotCXN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwotCWRwcmludGsoIiVzXG4iLF9fZnVuY19fKTsKKwlzdHJ1Y3QgY3gyNDExNl9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlkcHJpbnRrKCIlc1xuIiwgX19mdW5jX18pOwogCWtmcmVlKHN0YXRlKTsKIH0KIAogc3RhdGljIHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIGN4MjQxMTZfb3BzOwogCi1zdHJ1Y3QgZHZiX2Zyb250ZW5kKiBjeDI0MTE2X2F0dGFjaChjb25zdCBzdHJ1Y3QgY3gyNDExNl9jb25maWcqIGNvbmZpZywKLQkJCQkgICAgc3RydWN0IGkyY19hZGFwdGVyKiBpMmMpCitzdHJ1Y3QgZHZiX2Zyb250ZW5kICpjeDI0MTE2X2F0dGFjaChjb25zdCBzdHJ1Y3QgY3gyNDExNl9jb25maWcgKmNvbmZpZywKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYykKIHsKLQlzdHJ1Y3QgY3gyNDExNl9zdGF0ZSogc3RhdGUgPSBOVUxMOworCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJaW50IHJldDsKIAotCWRwcmludGsoIiVzXG4iLF9fZnVuY19fKTsKKwlkcHJpbnRrKCIlc1xuIiwgX19mdW5jX18pOwogCiAJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KIAlzdGF0ZSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBjeDI0MTE2X3N0YXRlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHN0YXRlID09IE5VTEwpIHsKLQkJcHJpbnRrKCJVbmFibGUgdG8ga21hbGxvY1xuIik7CisJaWYgKHN0YXRlID09IE5VTEwpCiAJCWdvdG8gZXJyb3IxOwotCX0KIAogCS8qIHNldHVwIHRoZSBzdGF0ZSAqLwogCW1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKHN0cnVjdCBjeDI0MTE2X3N0YXRlKSk7CkBAIC0xMDYzLDMyICsxMTA3LDM2IEBACiAJc3RhdGUtPmkyYyA9IGkyYzsKIAogCS8qIGNoZWNrIGlmIHRoZSBkZW1vZCBpcyBwcmVzZW50ICovCi0JcmV0ID0gKGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgMHhGRikgPDwgOCkgfCBjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIDB4RkUpOworCXJldCA9IChjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIDB4RkYpIDw8IDgpIHwKKwkJY3gyNDExNl9yZWFkcmVnKHN0YXRlLCAweEZFKTsKIAlpZiAocmV0ICE9IDB4MDUwMSkgewotCQlwcmludGsoIkludmFsaWQgcHJvYmUsIHByb2JhYmx5IG5vdCBhIENYMjQxMTYgZGV2aWNlXG4iKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiSW52YWxpZCBwcm9iZSwgcHJvYmFibHkgbm90IGEgQ1gyNDExNiBkZXZpY2VcbiIpOwogCQlnb3RvIGVycm9yMjsKIAl9CiAKIAkvKiBjcmVhdGUgZHZiX2Zyb250ZW5kICovCi0JbWVtY3B5KCZzdGF0ZS0+ZnJvbnRlbmQub3BzLCAmY3gyNDExNl9vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpOworCW1lbWNweSgmc3RhdGUtPmZyb250ZW5kLm9wcywgJmN4MjQxMTZfb3BzLAorCQlzaXplb2Yoc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMpKTsKIAlzdGF0ZS0+ZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlOwogCXJldHVybiAmc3RhdGUtPmZyb250ZW5kOwogCiBlcnJvcjI6IGtmcmVlKHN0YXRlKTsKIGVycm9yMTogcmV0dXJuIE5VTEw7CiB9CitFWFBPUlRfU1lNQk9MKGN4MjQxMTZfYXR0YWNoKTsKKwogLyoKICAqIEluaXRpYWxpc2Ugb3Igd2FrZSB1cCBkZXZpY2UKICAqCiAgKiBQb3dlciBjb25maWcgd2lsbCByZXNldCBhbmQgbG9hZCBpbml0aWFsIGZpcm13YXJlIGlmIHJlcXVpcmVkCiAgKi8KLXN0YXRpYyBpbnQgY3gyNDExNl9pbml0ZmUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpCitzdGF0aWMgaW50IGN4MjQxMTZfaW5pdGZlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewotCXN0cnVjdCBjeDI0MTE2X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCXN0cnVjdCBjeDI0MTE2X2NtZCBjbWQ7CiAJaW50IHJldDsKIAotCWRwcmludGsoIiVzKClcbiIsX19mdW5jX18pOworCWRwcmludGsoIiVzKClcbiIsIF9fZnVuY19fKTsKIAogCS8qIFBvd2VyIG9uICovCiAJY3gyNDExNl93cml0ZXJlZyhzdGF0ZSwgMHhlMCwgMCk7CkBAIC0xMDk4LDkgKzExNDYsOSBAQAogCS8qIEZpcm13YXJlIENNRCAzNjogUG93ZXIgY29uZmlnICovCiAJY21kLmFyZ3NbMHgwMF0gPSBDTURfVFVORVJTTEVFUDsKIAljbWQuYXJnc1sweDAxXSA9IDA7Ci0JY21kLmxlbj0gMHgwMjsKKwljbWQubGVuID0gMHgwMjsKIAlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKLQlpZihyZXQgIT0gMCkKKwlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CiAKIAlyZXR1cm4gY3gyNDExNl9kaXNlcWNfaW5pdChmZSk7CkBAIC0xMTA5LDIwICsxMTU3LDIwIEBACiAvKgogICogUHV0IGRldmljZSB0byBzbGVlcAogICovCi1zdGF0aWMgaW50IGN4MjQxMTZfc2xlZXAoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpCitzdGF0aWMgaW50IGN4MjQxMTZfc2xlZXAoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7Ci0Jc3RydWN0IGN4MjQxMTZfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IGN4MjQxMTZfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJc3RydWN0IGN4MjQxMTZfY21kIGNtZDsKIAlpbnQgcmV0OwogCi0JZHByaW50aygiJXMoKVxuIixfX2Z1bmNfXyk7CisJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCiAJLyogRmlybXdhcmUgQ01EIDM2OiBQb3dlciBjb25maWcgKi8KIAljbWQuYXJnc1sweDAwXSA9IENNRF9UVU5FUlNMRUVQOwogCWNtZC5hcmdzWzB4MDFdID0gMTsKLQljbWQubGVuPSAweDAyOworCWNtZC5sZW4gPSAweDAyOwogCXJldCA9IGN4MjQxMTZfY21kX2V4ZWN1dGUoZmUsICZjbWQpOwotCWlmKHJldCAhPSAwKQorCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKIAogCS8qIFBvd2VyIG9mZiAoU2h1dGRvd24gY2xvY2tzKSAqLwpAQCAtMTEzMywxMyArMTE4MSwxNSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMTZfc2V0X3Byb3BlcnR5KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBzdHJ1Y3QgZHR2X3Byb3BlcnR5KiB0dnApCitzdGF0aWMgaW50IGN4MjQxMTZfc2V0X3Byb3BlcnR5KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCXN0cnVjdCBkdHZfcHJvcGVydHkgKnR2cCkKIHsKIAlkcHJpbnRrKCIlcyguLilcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTE2X2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgc3RydWN0IGR0dl9wcm9wZXJ0eSogdHZwKQorc3RhdGljIGludCBjeDI0MTE2X2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlzdHJ1Y3QgZHR2X3Byb3BlcnR5ICp0dnApCiB7CiAJZHByaW50aygiJXMoLi4pXG4iLCBfX2Z1bmNfXyk7CiAJcmV0dXJuIDA7CkBAIC0xMTQ4LDcgKzExOTgsOCBAQAogLyogZHZiLWNvcmUgdG9sZCB1cyB0byB0dW5lLCB0aGUgdHYgcHJvcGVydHkgY2FjaGUgd2lsbCBiZSBjb21wbGV0ZSwKICAqIGl0J3Mgc2FmZSBmb3IgaXMgdG8gcHVsbCB2YWx1ZXMgYW5kIHVzZSB0aGVtIGZvciB0dW5pbmcgcHVycG9zZXMuCiAgKi8KLXN0YXRpYyBpbnQgY3gyNDExNl9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKK3N0YXRpYyBpbnQgY3gyNDExNl9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwKQogewogCXN0cnVjdCBjeDI0MTE2X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCXN0cnVjdCBkdHZfZnJvbnRlbmRfcHJvcGVydGllcyAqYyA9ICZmZS0+ZHR2X3Byb3BlcnR5X2NhY2hlOwpAQCAtMTE1Niw5NiArMTIwNywxMDIgQEAKIAlmZV9zdGF0dXNfdCB0dW5lcnN0YXQ7CiAJaW50IGksIHN0YXR1cywgcmV0LCByZXR1bmU7CiAKLQlkcHJpbnRrKCIlcygpXG4iLF9fZnVuY19fKTsKKwlkcHJpbnRrKCIlcygpXG4iLCBfX2Z1bmNfXyk7CiAKLQlzd2l0Y2goYy0+ZGVsaXZlcnlfc3lzdGVtKSB7Ci0JCWNhc2UgU1lTX0RWQlM6Ci0JCQlkcHJpbnRrKCIlczogRFZCLVMgZGVsaXZlcnkgc3lzdGVtIHNlbGVjdGVkXG4iLF9fZnVuY19fKTsKKwlzd2l0Y2ggKGMtPmRlbGl2ZXJ5X3N5c3RlbSkgeworCWNhc2UgU1lTX0RWQlM6CisJCWRwcmludGsoIiVzOiBEVkItUyBkZWxpdmVyeSBzeXN0ZW0gc2VsZWN0ZWRcbiIsIF9fZnVuY19fKTsKIAotCQkJLyogT25seSBRUFNLIGlzIHN1cHBvcnRlZCBmb3IgRFZCLVMgKi8KLQkJCWlmKGMtPm1vZHVsYXRpb24gIT0gUVBTSykgewotCQkJCWRwcmludGsoIiVzOiB1bnN1cHBvcnRlZCBtb2R1bGF0aW9uIHNlbGVjdGVkICglZClcbiIsCi0JCQkJCV9fZnVuY19fLCBjLT5tb2R1bGF0aW9uKTsKLQkJCQlyZXR1cm4gLUVPUE5PVFNVUFA7Ci0JCQl9CisJCS8qIE9ubHkgUVBTSyBpcyBzdXBwb3J0ZWQgZm9yIERWQi1TICovCisJCWlmIChjLT5tb2R1bGF0aW9uICE9IFFQU0spIHsKKwkJCWRwcmludGsoIiVzOiB1bnN1cHBvcnRlZCBtb2R1bGF0aW9uIHNlbGVjdGVkICglZClcbiIsCisJCQkJX19mdW5jX18sIGMtPm1vZHVsYXRpb24pOworCQkJcmV0dXJuIC1FT1BOT1RTVVBQOworCQl9CiAKLQkJCS8qIFBpbG90IGRvZXNuJ3QgZXhpc3QgaW4gRFZCLVMsIHR1cm4gYml0IG9mZiAqLworCQkvKiBQaWxvdCBkb2Vzbid0IGV4aXN0IGluIERWQi1TLCB0dXJuIGJpdCBvZmYgKi8KKwkJc3RhdGUtPmRueHQucGlsb3RfdmFsID0gQ1gyNDExNl9QSUxPVF9PRkY7CisJCXJldHVuZSA9IDE7CisKKwkJLyogRFZCLVMgb25seSBzdXBwb3J0cyAwLjM1ICovCisJCWlmIChjLT5yb2xsb2ZmICE9IFJPTExPRkZfMzUpIHsKKwkJCWRwcmludGsoIiVzOiB1bnN1cHBvcnRlZCByb2xsb2ZmIHNlbGVjdGVkICglZClcbiIsCisJCQkJX19mdW5jX18sIGMtPnJvbGxvZmYpOworCQkJcmV0dXJuIC1FT1BOT1RTVVBQOworCQl9CisJCXN0YXRlLT5kbnh0LnJvbGxvZmZfdmFsID0gQ1gyNDExNl9ST0xMT0ZGXzAzNTsKKwkJYnJlYWs7CisKKwljYXNlIFNZU19EVkJTMjoKKwkJZHByaW50aygiJXM6IERWQi1TMiBkZWxpdmVyeSBzeXN0ZW0gc2VsZWN0ZWRcbiIsIF9fZnVuY19fKTsKKworCQkvKgorCQkgKiBOQkMgOFBTSy9RUFNLIHdpdGggRFZCLVMgaXMgc3VwcG9ydGVkIGZvciBEVkItUzIsCisJCSAqIGJ1dCBub3QgaGFyZHdhcmUgYXV0byBkZXRlY3Rpb24KKwkJICovCisJCWlmIChjLT5tb2R1bGF0aW9uICE9IFBTS184ICYmIGMtPm1vZHVsYXRpb24gIT0gUVBTSykgeworCQkJZHByaW50aygiJXM6IHVuc3VwcG9ydGVkIG1vZHVsYXRpb24gc2VsZWN0ZWQgKCVkKVxuIiwKKwkJCQlfX2Z1bmNfXywgYy0+bW9kdWxhdGlvbik7CisJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJCX0KKworCQlzd2l0Y2ggKGMtPnBpbG90KSB7CisJCWNhc2UgUElMT1RfQVVUTzoJLyogTm90IHN1cHBvcnRlZCBidXQgZW11bGF0ZWQgKi8KKwkJCXN0YXRlLT5kbnh0LnBpbG90X3ZhbCA9IChjLT5tb2R1bGF0aW9uID09IFFQU0spCisJCQkJPyBDWDI0MTE2X1BJTE9UX09GRiA6IENYMjQxMTZfUElMT1RfT047CisJCQlyZXR1bmUgPSAyOworCQkJYnJlYWs7CisJCWNhc2UgUElMT1RfT0ZGOgogCQkJc3RhdGUtPmRueHQucGlsb3RfdmFsID0gQ1gyNDExNl9QSUxPVF9PRkY7Ci0JCQlyZXR1bmUgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgUElMT1RfT046CisJCQlzdGF0ZS0+ZG54dC5waWxvdF92YWwgPSBDWDI0MTE2X1BJTE9UX09OOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlkcHJpbnRrKCIlczogdW5zdXBwb3J0ZWQgcGlsb3QgbW9kZSBzZWxlY3RlZCAoJWQpXG4iLAorCQkJCV9fZnVuY19fLCBjLT5waWxvdCk7CisJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJCX0KIAotCQkJLyogRFZCLVMgb25seSBzdXBwb3J0cyAwLjM1ICovCi0JCQlpZihjLT5yb2xsb2ZmICE9IFJPTExPRkZfMzUpIHsKLQkJCQlkcHJpbnRrKCIlczogdW5zdXBwb3J0ZWQgcm9sbG9mZiBzZWxlY3RlZCAoJWQpXG4iLAotCQkJCQlfX2Z1bmNfXywgYy0+cm9sbG9mZik7Ci0JCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCQkJfQorCQlzd2l0Y2ggKGMtPnJvbGxvZmYpIHsKKwkJY2FzZSBST0xMT0ZGXzIwOgorCQkJc3RhdGUtPmRueHQucm9sbG9mZl92YWwgPSBDWDI0MTE2X1JPTExPRkZfMDIwOworCQkJYnJlYWs7CisJCWNhc2UgUk9MTE9GRl8yNToKKwkJCXN0YXRlLT5kbnh0LnJvbGxvZmZfdmFsID0gQ1gyNDExNl9ST0xMT0ZGXzAyNTsKKwkJCWJyZWFrOworCQljYXNlIFJPTExPRkZfMzU6CiAJCQlzdGF0ZS0+ZG54dC5yb2xsb2ZmX3ZhbCA9IENYMjQxMTZfUk9MTE9GRl8wMzU7CiAJCQlicmVhazsKLQotCQljYXNlIFNZU19EVkJTMjoKLQkJCWRwcmludGsoIiVzOiBEVkItUzIgZGVsaXZlcnkgc3lzdGVtIHNlbGVjdGVkXG4iLF9fZnVuY19fKTsKLQotCQkJLyoKLQkJCSAqIE5CQyA4UFNLL1FQU0sgd2l0aCBEVkItUyBpcyBzdXBwb3J0ZWQgZm9yIERWQi1TMiwKLQkJCSAqIGJ1dCBub3QgaGFyZHdhcmUgYXV0byBkZXRlY3Rpb24KLQkJCSAqLwotCQkJaWYoYy0+bW9kdWxhdGlvbiAhPSBQU0tfOCAmJiBjLT5tb2R1bGF0aW9uICE9IFFQU0spIHsKLQkJCQlkcHJpbnRrKCIlczogdW5zdXBwb3J0ZWQgbW9kdWxhdGlvbiBzZWxlY3RlZCAoJWQpXG4iLAotCQkJCQlfX2Z1bmNfXywgYy0+bW9kdWxhdGlvbik7Ci0JCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCQkJfQotCi0JCQlzd2l0Y2goYy0+cGlsb3QpIHsKLQkJCQljYXNlIFBJTE9UX0FVVE86CS8qIE5vdCBzdXBwb3J0ZWQgYnV0IGVtdWxhdGVkICovCi0JCQkJCXJldHVuZSA9IDI7CS8qIEZhbGwtdGhyb3VnaCAqLwotCQkJCWNhc2UgUElMT1RfT0ZGOgotCQkJCQlzdGF0ZS0+ZG54dC5waWxvdF92YWwgPSBDWDI0MTE2X1BJTE9UX09GRjsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSBQSUxPVF9PTjoKLQkJCQkJc3RhdGUtPmRueHQucGlsb3RfdmFsID0gQ1gyNDExNl9QSUxPVF9PTjsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJZHByaW50aygiJXM6IHVuc3VwcG9ydGVkIHBpbG90IG1vZGUgc2VsZWN0ZWQgKCVkKVxuIiwKLQkJCQkJCV9fZnVuY19fLCBjLT5waWxvdCk7Ci0JCQkJCXJldHVybiAtRU9QTk9UU1VQUDsKLQkJCX0KLQotCQkJc3dpdGNoKGMtPnJvbGxvZmYpIHsKLQkJCQljYXNlIFJPTExPRkZfMjA6Ci0JCQkJCXN0YXRlLT5kbnh0LnJvbGxvZmZfdmFsPSBDWDI0MTE2X1JPTExPRkZfMDIwOwotCQkJCQlicmVhazsKLQkJCQljYXNlIFJPTExPRkZfMjU6Ci0JCQkJCXN0YXRlLT5kbnh0LnJvbGxvZmZfdmFsPSBDWDI0MTE2X1JPTExPRkZfMDI1OwotCQkJCQlicmVhazsKLQkJCQljYXNlIFJPTExPRkZfMzU6Ci0JCQkJCXN0YXRlLT5kbnh0LnJvbGxvZmZfdmFsPSBDWDI0MTE2X1JPTExPRkZfMDM1OwotCQkJCQlicmVhazsKLQkJCQljYXNlIFJPTExPRkZfQVVUTzoJLyogUm9sbG9mZiBtdXN0IGJlIGV4cGxpY2l0ICovCi0JCQkJZGVmYXVsdDoKLQkJCQkJZHByaW50aygiJXM6IHVuc3VwcG9ydGVkIHJvbGxvZmYgc2VsZWN0ZWQgKCVkKVxuIiwKLQkJCQkJCV9fZnVuY19fLCBjLT5yb2xsb2ZmKTsKLQkJCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCQkJfQotCQkJYnJlYWs7Ci0KKwkJY2FzZSBST0xMT0ZGX0FVVE86CS8qIFJvbGxvZmYgbXVzdCBiZSBleHBsaWNpdCAqLwogCQlkZWZhdWx0OgotCQkJZHByaW50aygiJXM6IHVuc3VwcG9ydGVkIGRlbGl2ZXJ5IHN5c3RlbSBzZWxlY3RlZCAoJWQpXG4iLAotCQkJCV9fZnVuY19fLCBjLT5kZWxpdmVyeV9zeXN0ZW0pOworCQkJZHByaW50aygiJXM6IHVuc3VwcG9ydGVkIHJvbGxvZmYgc2VsZWN0ZWQgKCVkKVxuIiwKKwkJCQlfX2Z1bmNfXywgYy0+cm9sbG9mZik7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJCX0KKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlkcHJpbnRrKCIlczogdW5zdXBwb3J0ZWQgZGVsaXZlcnkgc3lzdGVtIHNlbGVjdGVkICglZClcbiIsCisJCQlfX2Z1bmNfXywgYy0+ZGVsaXZlcnlfc3lzdGVtKTsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCX0KIAlzdGF0ZS0+ZG54dC5tb2R1bGF0aW9uID0gYy0+bW9kdWxhdGlvbjsKIAlzdGF0ZS0+ZG54dC5mcmVxdWVuY3kgPSBjLT5mcmVxdWVuY3k7CiAJc3RhdGUtPmRueHQucGlsb3QgPSBjLT5waWxvdDsKIAlzdGF0ZS0+ZG54dC5yb2xsb2ZmID0gYy0+cm9sbG9mZjsKIAotCWlmICgocmV0ID0gY3gyNDExNl9zZXRfaW52ZXJzaW9uKHN0YXRlLCBjLT5pbnZlcnNpb24pKSAhPSAgMCkKKwlyZXQgPSBjeDI0MTE2X3NldF9pbnZlcnNpb24oc3RhdGUsIGMtPmludmVyc2lvbik7CisJaWYgKHJldCAhPSAgMCkKIAkJcmV0dXJuIHJldDsKIAogCS8qIEZFQ19OT05FL0FVVE8gZm9yIERWQi1TMiBpcyBub3Qgc3VwcG9ydGVkIGFuZCBkZXRlY3RlZCBoZXJlICovCi0JaWYgKChyZXQgPSBjeDI0MTE2X3NldF9mZWMoc3RhdGUsIGMtPm1vZHVsYXRpb24sIGMtPmZlY19pbm5lcikpICE9ICAwKQorCXJldCA9IGN4MjQxMTZfc2V0X2ZlYyhzdGF0ZSwgYy0+bW9kdWxhdGlvbiwgYy0+ZmVjX2lubmVyKTsKKwlpZiAocmV0ICE9ICAwKQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKChyZXQgPSBjeDI0MTE2X3NldF9zeW1ib2xyYXRlKHN0YXRlLCBjLT5zeW1ib2xfcmF0ZSkpICE9ICAwKQorCXJldCA9IGN4MjQxMTZfc2V0X3N5bWJvbHJhdGUoc3RhdGUsIGMtPnN5bWJvbF9yYXRlKTsKKwlpZiAocmV0ICE9ICAwKQogCQlyZXR1cm4gcmV0OwogCiAJLyogZGlzY2FyZCB0aGUgJ2N1cnJlbnQnIHR1bmluZyBwYXJhbWV0ZXJzIGFuZCBwcmVwYXJlIHRvIHR1bmUgKi8KQEAgLTEyNzEsNyArMTMyOCw3IEBACiAJLyogU2V0L1Jlc2V0IEIvVyAqLwogCWNtZC5hcmdzWzB4MDBdID0gQ01EX0JBTkRXSURUSDsKIAljbWQuYXJnc1sweDAxXSA9IDB4MDE7Ci0JY21kLmxlbj0gMHgwMjsKKwljbWQubGVuID0gMHgwMjsKIAlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKIAlpZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CkBAIC0xMzE5LDcgKzEzNzYsNyBAQAogCQljeDI0MTE2X3dyaXRlcmVnKHN0YXRlLCBDWDI0MTE2X1JFR19SQVRFRElWLCAweDAwKTsKIAl9CiAKLQljbWQubGVuPSAweDEzOworCWNtZC5sZW4gPSAweDEzOwogCiAJLyogV2UgbmVlZCB0byBzdXBwb3J0IHBpbG90IGFuZCBub24tcGlsb3QgdHVuaW5nIGluIHRoZQogCSAqIGRyaXZlciBhdXRvbWF0aWNhbGx5LiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYmVjYXVzZQpAQCAtMTMyNywxMiArMTM4NCwxMyBAQAogCSAqLwogCWRvIHsKIAkJLyogUmVzZXQgc3RhdHVzIHJlZ2lzdGVyICovCi0JCXN0YXR1cyA9IGN4MjQxMTZfcmVhZHJlZyhzdGF0ZSwgQ1gyNDExNl9SRUdfU1NUQVRVUykgJiBDWDI0MTE2X1NJR05BTF9NQVNLOworCQlzdGF0dXMgPSBjeDI0MTE2X3JlYWRyZWcoc3RhdGUsIENYMjQxMTZfUkVHX1NTVEFUVVMpCisJCQkmIENYMjQxMTZfU0lHTkFMX01BU0s7CiAJCWN4MjQxMTZfd3JpdGVyZWcoc3RhdGUsIENYMjQxMTZfUkVHX1NTVEFUVVMsIHN0YXR1cyk7CiAKIAkJLyogVHVuZSAqLwogCQlyZXQgPSBjeDI0MTE2X2NtZF9leGVjdXRlKGZlLCAmY21kKTsKLQkJaWYoIHJldCAhPSAwICkKKwkJaWYgKHJldCAhPSAwKQogCQkJYnJlYWs7CiAKIAkJLyoKQEAgLTEzNDEsMjggKzEzOTksMjcgQEAKIAkJICogSWYgd2UgYXJlIGFibGUgdG8gdHVuZSB0aGVuIGdlbmVyYWxseSBpdCBvY2N1cnMgd2l0aGluIDEwMG1zLgogCQkgKiBJZiBpdCB0YWtlcyBsb25nZXIsIHRyeSBhIGRpZmZlcmVudCB0b25lYnVyc3Qgc2V0dGluZy4KIAkJICovCi0JCWZvcihpID0gMDsgaSA8IDUwIDsgaSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCA1MCA7IGkrKykgewogCQkJY3gyNDExNl9yZWFkX3N0YXR1cyhmZSwgJnR1bmVyc3RhdCk7CiAJCQlzdGF0dXMgPSB0dW5lcnN0YXQgJiAoRkVfSEFTX1NJR05BTCB8IEZFX0hBU19TWU5DKTsKLQkJCWlmKHN0YXR1cyA9PSAoRkVfSEFTX1NJR05BTCB8IEZFX0hBU19TWU5DKSkgewotCQkJCWRwcmludGsoIiVzOiBUdW5lZFxuIixfX2Z1bmNfXyk7CisJCQlpZiAoc3RhdHVzID09IChGRV9IQVNfU0lHTkFMIHwgRkVfSEFTX1NZTkMpKSB7CisJCQkJZHByaW50aygiJXM6IFR1bmVkXG4iLCBfX2Z1bmNfXyk7CiAJCQkJZ290byB0dW5lZDsKIAkJCX0KIAkJCW1zbGVlcCgxMCk7CiAJCX0KIAotCQlkcHJpbnRrKCIlczogTm90IHR1bmVkXG4iLF9fZnVuY19fKTsKKwkJZHByaW50aygiJXM6IE5vdCB0dW5lZFxuIiwgX19mdW5jX18pOwogCiAJCS8qIFRvZ2dsZSBwaWxvdCBiaXQgd2hlbiBpbiBhdXRvLXBpbG90ICovCi0JCWlmKHN0YXRlLT5kY3VyLnBpbG90ID09IFBJTE9UX0FVVE8pCisJCWlmIChzdGF0ZS0+ZGN1ci5waWxvdCA9PSBQSUxPVF9BVVRPKQogCQkJY21kLmFyZ3NbMHgwN10gXj0gQ1gyNDExNl9QSUxPVF9PTjsKLQl9Ci0Jd2hpbGUoLS1yZXR1bmUpOworCX0gd2hpbGUgKC0tcmV0dW5lKTsKIAogdHVuZWQ6ICAvKiBTZXQvUmVzZXQgQi9XICovCiAJY21kLmFyZ3NbMHgwMF0gPSBDTURfQkFORFdJRFRIOwogCWNtZC5hcmdzWzB4MDFdID0gMHgwMDsKLQljbWQubGVuPSAweDAyOworCWNtZC5sZW4gPSAweDAyOwogCXJldCA9IGN4MjQxMTZfY21kX2V4ZWN1dGUoZmUsICZjbWQpOwogCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJuIHJldDsKQEAgLTE0MDcsMTcgKzE0NjQsNyBAQAogCS5zZXRfZnJvbnRlbmQgPSBjeDI0MTE2X3NldF9mcm9udGVuZCwKIH07CiAKLW1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsKLU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJBY3RpdmF0ZXMgZnJvbnRlbmQgZGVidWdnaW5nIChkZWZhdWx0OjApIik7Ci0KLW1vZHVsZV9wYXJhbSh0b25lYnVyc3QsIGludCwgMDY0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKHRvbmVidXJzdCwgIkRpU0VxQyB0b25lYnVyc3QgMD1PRkYsIDE9VE9ORSBDQUNIRSwgMj1NRVNTQUdFIENBQ0hFIChkZWZhdWx0OjEpIik7Ci0KLW1vZHVsZV9wYXJhbShlc25vX3NuciwgaW50LCAwNjQ0KTsKLU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJTTlIgcmV0dXJuIHVuaXRzLCAwPVBFUkNFTlRBR0UgMC0xMDAsIDE9RVNOTyhkYiAqIDEwKSAoZGVmYXVsdDowKSIpOwotCiBNT0RVTEVfREVTQ1JJUFRJT04oIkRWQiBGcm9udGVuZCBtb2R1bGUgZm9yIENvbmV4YW50IGN4MjQxMTYvY3gyNDExOCBoYXJkd2FyZSIpOwogTU9EVUxFX0FVVEhPUigiU3RldmVuIFRvdGgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAotRVhQT1JUX1NZTUJPTChjeDI0MTE2X2F0dGFjaCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExNi5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTYuaAppbmRleCA4ZGJjZWMyLi40Y2IzZGRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExNi5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTE2LmgKQEAgLTIzLDMxICsyMywzMiBAQAogCiAjaW5jbHVkZSA8bGludXgvZHZiL2Zyb250ZW5kLmg+CiAKLXN0cnVjdCBjeDI0MTE2X2NvbmZpZwoteworc3RydWN0IGN4MjQxMTZfY29uZmlnIHsKIAkvKiB0aGUgZGVtb2R1bGF0b3IncyBpMmMgYWRkcmVzcyAqLwogCXU4IGRlbW9kX2FkZHJlc3M7CiAKIAkvKiBOZWVkIHRvIHNldCBkZXZpY2UgcGFyYW0gZm9yIHN0YXJ0X2RtYSAqLwotCWludCAoKnNldF90c19wYXJhbXMpKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBpbnQgaXNfcHVuY3R1cmVkKTsKKwlpbnQgKCpzZXRfdHNfcGFyYW1zKShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgaW50IGlzX3B1bmN0dXJlZCk7CiAKIAkvKiBOZWVkIHRvIHJlc2V0IGRldmljZSBkdXJpbmcgZmlybXdhcmUgbG9hZGluZyAqLwotCWludCAoKnJlc2V0X2RldmljZSkoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUpOworCWludCAoKnJlc2V0X2RldmljZSkoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpOwogCiAJLyogTmVlZCB0byBzZXQgTVBFRyBwYXJhbWV0ZXJzICovCiAJdTggbXBnX2Nsa19wb3NfcG9sOjB4MDI7CiB9OwogCiAjaWYgZGVmaW5lZChDT05GSUdfRFZCX0NYMjQxMTYpIHx8IGRlZmluZWQoQ09ORklHX0RWQl9DWDI0MTE2X01PRFVMRSkKLWV4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBjeDI0MTE2X2F0dGFjaChjb25zdCBzdHJ1Y3QgY3gyNDExNl9jb25maWcqIGNvbmZpZywKLQkJCQkJICAgc3RydWN0IGkyY19hZGFwdGVyKiBpMmMpOworZXh0ZXJuIHN0cnVjdCBkdmJfZnJvbnRlbmQgKmN4MjQxMTZfYXR0YWNoKAorCWNvbnN0IHN0cnVjdCBjeDI0MTE2X2NvbmZpZyAqY29uZmlnLAorCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjKTsKICNlbHNlCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBkdmJfZnJvbnRlbmQqIGN4MjQxMTZfYXR0YWNoKGNvbnN0IHN0cnVjdCBjeDI0MTE2X2NvbmZpZyogY29uZmlnLAotCQkJCQkJICBzdHJ1Y3QgaTJjX2FkYXB0ZXIqIGkyYykKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGR2Yl9mcm9udGVuZCAqY3gyNDExNl9hdHRhY2goCisJY29uc3Qgc3RydWN0IGN4MjQxMTZfY29uZmlnICpjb25maWcsCisJc3RydWN0IGkyY19hZGFwdGVyICppMmMpCiB7Ci0JcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGRyaXZlciBkaXNhYmxlZCBieSBLY29uZmlnXG4iLCBfX0ZVTkNUSU9OX18pOworCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBkcml2ZXIgZGlzYWJsZWQgYnkgS2NvbmZpZ1xuIiwgX19mdW5jX18pOwogCXJldHVybiBOVUxMOwogfQotI2VuZGlmIC8vIENPTkZJR19EVkJfQ1gyNDExNgorI2VuZGlmCiAKICNlbmRpZiAvKiBDWDI0MTE2X0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jCmluZGV4IDcxNTYxNTcuLjFhOGMzNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuYwpAQCAtMzMsNyArMzMsMTMgQEAKICNkZWZpbmUgWFRBTCAxMDExMTAwMAogCiBzdGF0aWMgaW50IGZvcmNlX2JhbmQ7Cittb2R1bGVfcGFyYW0oZm9yY2VfYmFuZCwgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZm9yY2VfYmFuZCwgIkZvcmNlIGEgc3BlY2lmaWMgYmFuZCBzZWxlY3QgIlwKKwkiKDEtOSwgZGVmYXVsdDpvZmYpLiIpOworCiBzdGF0aWMgaW50IGRlYnVnOworbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkFjdGl2YXRlcyBmcm9udGVuZCBkZWJ1Z2dpbmcgKGRlZmF1bHQ6MCkiKTsKIAogI2RlZmluZSBpbmZvKGFyZ3MuLi4pIGRvIHsgcHJpbnRrKEtFUk5fSU5GTyAiQ1gyNDEyMzogIiBhcmdzKTsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZXJyKGFyZ3MuLi4pICBkbyB7IHByaW50ayhLRVJOX0VSUiAgIkNYMjQxMjM6ICIgYXJncyk7IH0gd2hpbGUgKDApCkBAIC00NiwxMCArNTIsOSBAQAogCQl9IFwKIAl9IHdoaWxlICgwKQogCi1zdHJ1Y3QgY3gyNDEyM19zdGF0ZQotewotCXN0cnVjdCBpMmNfYWRhcHRlciogaTJjOwotCWNvbnN0IHN0cnVjdCBjeDI0MTIzX2NvbmZpZyogY29uZmlnOworc3RydWN0IGN4MjQxMjNfc3RhdGUgeworCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjOworCWNvbnN0IHN0cnVjdCBjeDI0MTIzX2NvbmZpZyAqY29uZmlnOwogCiAJc3RydWN0IGR2Yl9mcm9udGVuZCBmcm9udGVuZDsKIApAQCAtNzAsOCArNzUsNyBAQAogfTsKIAogLyogVmFyaW91cyB0dW5lciBkZWZhdWx0cyBuZWVkIHRvIGJlIGVzdGFibGlzaGVkIGZvciBhIGdpdmVuIHN5bWJvbCByYXRlIFNwcyAqLwotc3RhdGljIHN0cnVjdAoteworc3RhdGljIHN0cnVjdCBjeDI0MTIzX0FHQ192YWwgewogCXUzMiBzeW1ib2xyYXRlX2xvdzsKIAl1MzIgc3ltYm9scmF0ZV9oaWdoOwogCXUzMiBWQ0Fwcm9nZGF0YTsKQEAgLTEwOSw4ICsxMTMsNyBAQAogICogZml4bWU6IFRoZSBib3VuZHMgb24gdGhlIGJhbmRzIGRvIG5vdCBtYXRjaCB0aGUgZG9jIGluIHJlYWwgbGlmZS4KICAqIGZpeG1lOiBTb21lIG9mIHRoZW0gaGF2ZSBiZWVuIG1vdmVkLCBvdGhlciBtaWdodCBuZWVkIGFkanVzdG1lbnQuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QKLXsKK3N0YXRpYyBzdHJ1Y3QgY3gyNDEyM19iYW5kc2VsZWN0X3ZhbCB7CiAJdTMyIGZyZXFfbG93OwogCXUzMiBmcmVxX2hpZ2g7CiAJdTMyIFZDT2RpdmlkZXI7CkBAIC0yNDksNyArMjUyLDggQEAKIAogCS8qIHByaW50ayhLRVJOX0RFQlVHICJ3ciglMDJ4KTogJTAyeCAlMDJ4XG4iLCBpMmNfYWRkciwgcmVnLCBkYXRhKTsgKi8KIAotCWlmICgoZXJyID0gaTJjX3RyYW5zZmVyKHN0YXRlLT5pMmMsICZtc2csIDEpKSAhPSAxKSB7CisJZXJyID0gaTJjX3RyYW5zZmVyKHN0YXRlLT5pMmMsICZtc2csIDEpOworCWlmIChlcnIgIT0gMSkgewogCQlwcmludGsoIiVzOiB3cml0ZXJlZyBlcnJvcihlcnIgPT0gJWksIHJlZyA9PSAweCUwMngsIgogCQkJICIgZGF0YSA9PSAweCUwMngpXG4iLCBfX2Z1bmNfXywgZXJyLCByZWcsIGRhdGEpOwogCQlyZXR1cm4gZXJyOwpAQCAtMjg0LDcgKzI4OCw4IEBACiAjZGVmaW5lIGN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIHJlZywgdmFsKSBcCiAJY3gyNDEyM19pMmNfd3JpdGVyZWcoc3RhdGUsIHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsIHJlZywgdmFsKQogCi1zdGF0aWMgaW50IGN4MjQxMjNfc2V0X2ludmVyc2lvbihzdHJ1Y3QgY3gyNDEyM19zdGF0ZSogc3RhdGUsIGZlX3NwZWN0cmFsX2ludmVyc2lvbl90IGludmVyc2lvbikKK3N0YXRpYyBpbnQgY3gyNDEyM19zZXRfaW52ZXJzaW9uKHN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSwKKwlmZV9zcGVjdHJhbF9pbnZlcnNpb25fdCBpbnZlcnNpb24pCiB7CiAJdTggbm9tX3JlZyA9IGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgwZSk7CiAJdTggYXV0b19yZWcgPSBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MTApOwpAQCAtMzExLDcgKzMxNiw4IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDEyM19nZXRfaW52ZXJzaW9uKHN0cnVjdCBjeDI0MTIzX3N0YXRlKiBzdGF0ZSwgZmVfc3BlY3RyYWxfaW52ZXJzaW9uX3QgKmludmVyc2lvbikKK3N0YXRpYyBpbnQgY3gyNDEyM19nZXRfaW52ZXJzaW9uKHN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSwKKwlmZV9zcGVjdHJhbF9pbnZlcnNpb25fdCAqaW52ZXJzaW9uKQogewogCXU4IHZhbDsKIApAQCAtMzI4LDE4ICszMzQsMjAgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTIzX3NldF9mZWMoc3RydWN0IGN4MjQxMjNfc3RhdGUqIHN0YXRlLCBmZV9jb2RlX3JhdGVfdCBmZWMpCitzdGF0aWMgaW50IGN4MjQxMjNfc2V0X2ZlYyhzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUsIGZlX2NvZGVfcmF0ZV90IGZlYykKIHsKIAl1OCBub21fcmVnID0gY3gyNDEyM19yZWFkcmVnKHN0YXRlLCAweDBlKSAmIH4weDA3OwogCi0JaWYgKCAoZmVjIDwgRkVDX05PTkUpIHx8IChmZWMgPiBGRUNfQVVUTykgKQorCWlmICgoZmVjIDwgRkVDX05PTkUpIHx8IChmZWMgPiBGRUNfQVVUTykpCiAJCWZlYyA9IEZFQ19BVVRPOwogCiAJLyogU2V0IHRoZSBzb2Z0IGRlY2lzaW9uIHRocmVzaG9sZCAqLwotCWlmKGZlYyA9PSBGRUNfMV8yKQotCQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDQzLCBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4NDMpIHwgMHgwMSk7CisJaWYgKGZlYyA9PSBGRUNfMV8yKQorCQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDQzLAorCQkJY3gyNDEyM19yZWFkcmVnKHN0YXRlLCAweDQzKSB8IDB4MDEpOwogCWVsc2UKLQkJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHg0MywgY3gyNDEyM19yZWFkcmVnKHN0YXRlLCAweDQzKSAmIH4weDAxKTsKKwkJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHg0MywKKwkJCWN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHg0MykgJiB+MHgwMSk7CiAKIAlzd2l0Y2ggKGZlYykgewogCWNhc2UgRkVDXzFfMjoKQEAgLTM4OCwxMSArMzk2LDExIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDEyM19nZXRfZmVjKHN0cnVjdCBjeDI0MTIzX3N0YXRlKiBzdGF0ZSwgZmVfY29kZV9yYXRlX3QgKmZlYykKK3N0YXRpYyBpbnQgY3gyNDEyM19nZXRfZmVjKHN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSwgZmVfY29kZV9yYXRlX3QgKmZlYykKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gY3gyNDEyM19yZWFkcmVnIChzdGF0ZSwgMHgxYik7CisJcmV0ID0gY3gyNDEyM19yZWFkcmVnKHN0YXRlLCAweDFiKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAlyZXQgPSByZXQgJiAweDA3OwpAQCAtNDMzLDE2ICs0NDEsMTYgQEAKIHsKIAl1MzIgZXhwLCBuZWFyZXN0ID0gMDsKIAl1MzIgZGl2ID0gYSAvIGI7Ci0JaWYoYSAlIGIgPj0gYiAvIDIpICsrZGl2OwotCWlmKGRpdiA8ICgxIDw8IDMxKSkKLQl7Ci0JCWZvcihleHAgPSAxOyBkaXYgPiBleHA7IG5lYXJlc3QrKykKKwlpZiAoYSAlIGIgPj0gYiAvIDIpCisJCSsrZGl2OworCWlmIChkaXYgPCAoMSA8PCAzMSkpIHsKKwkJZm9yIChleHAgPSAxOyBkaXYgPiBleHA7IG5lYXJlc3QrKykKIAkJCWV4cCArPSBleHA7CiAJfQogCXJldHVybiBuZWFyZXN0OwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfc2V0X3N5bWJvbHJhdGUoc3RydWN0IGN4MjQxMjNfc3RhdGUqIHN0YXRlLCB1MzIgc3JhdGUpCitzdGF0aWMgaW50IGN4MjQxMjNfc2V0X3N5bWJvbHJhdGUoc3RydWN0IGN4MjQxMjNfc3RhdGUgKnN0YXRlLCB1MzIgc3JhdGUpCiB7CiAJdTMyIHRtcCwgc2FtcGxlX3JhdGUsIHJhdGlvLCBzYW1wbGVfZ2FpbjsKIAl1OCBwbGxfbXVsdDsKQEAgLTQ5OCw5ICs1MDYsOSBAQAogCiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMSwgcGxsX211bHQgKiA2KTsKIAotCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MDgsIChyYXRpbyA+PiAxNikgJiAweDNmICk7Ci0JY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwOSwgKHJhdGlvID4+ICA4KSAmIDB4ZmYgKTsKLQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDBhLCAocmF0aW8gICAgICApICYgMHhmZiApOworCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MDgsIChyYXRpbyA+PiAxNikgJiAweDNmKTsKKwljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDA5LCAocmF0aW8gPj4gOCkgJiAweGZmKTsKKwljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDBhLCByYXRpbyAmIDB4ZmYpOwogCiAJLyogYWxzbyBzZXQgdGhlIGRlbW9kdWxhdG9yIHNhbXBsZSBnYWluICovCiAJc2FtcGxlX2dhaW4gPSBjeDI0MTIzX2ludF9sb2cyKHNhbXBsZV9yYXRlLCBzcmF0ZSk7CkBAIC01MTQsMTAgKzUyMiwxMiBAQAogfQogCiAvKgotICogQmFzZWQgb24gdGhlIHJlcXVpcmVkIGZyZXF1ZW5jeSBhbmQgc3ltYm9scmF0ZSwgdGhlIHR1bmVyIEFHQyBoYXMgdG8gYmUgY29uZmlndXJlZAotICogYW5kIHRoZSBjb3JyZWN0IGJhbmQgc2VsZWN0ZWQuIENhbGN1bGF0ZSB0aG9zZSB2YWx1ZXMKKyAqIEJhc2VkIG9uIHRoZSByZXF1aXJlZCBmcmVxdWVuY3kgYW5kIHN5bWJvbHJhdGUsIHRoZSB0dW5lciBBR0MgaGFzCisgKiB0byBiZSBjb25maWd1cmVkIGFuZCB0aGUgY29ycmVjdCBiYW5kIHNlbGVjdGVkLgorICogQ2FsY3VsYXRlIHRob3NlIHZhbHVlcy4KICAqLwotc3RhdGljIGludCBjeDI0MTIzX3BsbF9jYWxjdWxhdGUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKK3N0YXRpYyBpbnQgY3gyNDEyM19wbGxfY2FsY3VsYXRlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCXN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAl1MzIgbmRpdiA9IDAsIGFkaXYgPSAwLCB2Y29fZGl2ID0gMDsKQEAgLTUyNSw2ICs1MzUsOCBAQAogCWludCBwdW1wID0gMjsKIAlpbnQgYmFuZCA9IDA7CiAJaW50IG51bV9iYW5kcyA9IEFSUkFZX1NJWkUoY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHMpOworCXN0cnVjdCBjeDI0MTIzX2JhbmRzZWxlY3RfdmFsICpic3YgPSBOVUxMOworCXN0cnVjdCBjeDI0MTIzX0FHQ192YWwgKmFnY3YgPSBOVUxMOwogCiAJLyogRGVmYXVsdHMgZm9yIGxvdyBmcmVxLCBsb3cgcmF0ZSAqLwogCXN0YXRlLT5WQ0FhcmcgPSBjeDI0MTIzX0FHQ192YWxzWzBdLlZDQXByb2dkYXRhOwpAQCAtNTMyLDU4ICs1NDQsNjUgQEAKIAlzdGF0ZS0+YmFuZHNlbGVjdGFyZyA9IGN4MjQxMjNfYmFuZHNlbGVjdF92YWxzWzBdLnByb2dkYXRhOwogCXZjb19kaXYgPSBjeDI0MTIzX2JhbmRzZWxlY3RfdmFsc1swXS5WQ09kaXZpZGVyOwogCi0JLyogRm9yIHRoZSBnaXZlbiBzeW1ib2wgcmF0ZSwgZGV0ZXJtaW5lIHRoZSBWQ0EsIFZHQSBhbmQgRklMVFVORSBwcm9ncmFtbWluZyBiaXRzICovCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3gyNDEyM19BR0NfdmFscyk7IGkrKykKLQl7Ci0JCWlmICgoY3gyNDEyM19BR0NfdmFsc1tpXS5zeW1ib2xyYXRlX2xvdyA8PSBwLT51LnFwc2suc3ltYm9sX3JhdGUpICYmCi0JCSAgICAoY3gyNDEyM19BR0NfdmFsc1tpXS5zeW1ib2xyYXRlX2hpZ2ggPj0gcC0+dS5xcHNrLnN5bWJvbF9yYXRlKSApIHsKLQkJCXN0YXRlLT5WQ0FhcmcgPSBjeDI0MTIzX0FHQ192YWxzW2ldLlZDQXByb2dkYXRhOwotCQkJc3RhdGUtPlZHQWFyZyA9IGN4MjQxMjNfQUdDX3ZhbHNbaV0uVkdBcHJvZ2RhdGE7Ci0JCQlzdGF0ZS0+RklMVHVuZSA9IGN4MjQxMjNfQUdDX3ZhbHNbaV0uRklMVHVuZTsKKwkvKiBGb3IgdGhlIGdpdmVuIHN5bWJvbCByYXRlLCBkZXRlcm1pbmUgdGhlIFZDQSwgVkdBIGFuZAorCSAqIEZJTFRVTkUgcHJvZ3JhbW1pbmcgYml0cyAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN4MjQxMjNfQUdDX3ZhbHMpOyBpKyspIHsKKwkJYWdjdiA9ICZjeDI0MTIzX0FHQ192YWxzW2ldOworCQlpZiAoKGFnY3YtPnN5bWJvbHJhdGVfbG93IDw9IHAtPnUucXBzay5zeW1ib2xfcmF0ZSkgJiYKKwkJICAgIChhZ2N2LT5zeW1ib2xyYXRlX2hpZ2ggPj0gcC0+dS5xcHNrLnN5bWJvbF9yYXRlKSkgeworCQkJc3RhdGUtPlZDQWFyZyA9IGFnY3YtPlZDQXByb2dkYXRhOworCQkJc3RhdGUtPlZHQWFyZyA9IGFnY3YtPlZHQXByb2dkYXRhOworCQkJc3RhdGUtPkZJTFR1bmUgPSBhZ2N2LT5GSUxUdW5lOwogCQl9CiAJfQogCiAJLyogZGV0ZXJtaW5lIHRoZSBiYW5kIHRvIHVzZSAqLwotCWlmKGZvcmNlX2JhbmQgPCAxIHx8IGZvcmNlX2JhbmQgPiBudW1fYmFuZHMpCi0JewotCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2JhbmRzOyBpKyspCi0JCXsKLQkJCWlmICgoY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHNbaV0uZnJlcV9sb3cgPD0gcC0+ZnJlcXVlbmN5KSAmJgotCQkJICAgIChjeDI0MTIzX2JhbmRzZWxlY3RfdmFsc1tpXS5mcmVxX2hpZ2ggPj0gcC0+ZnJlcXVlbmN5KSApCisJaWYgKGZvcmNlX2JhbmQgPCAxIHx8IGZvcmNlX2JhbmQgPiBudW1fYmFuZHMpIHsKKwkJZm9yIChpID0gMDsgaSA8IG51bV9iYW5kczsgaSsrKSB7CisJCQlic3YgPSAmY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHNbaV07CisJCQlpZiAoKGJzdi0+ZnJlcV9sb3cgPD0gcC0+ZnJlcXVlbmN5KSAmJgorCQkJCShic3YtPmZyZXFfaGlnaCA+PSBwLT5mcmVxdWVuY3kpKQogCQkJCWJhbmQgPSBpOwogCQl9Ci0JfQotCWVsc2UKKwl9IGVsc2UKIAkJYmFuZCA9IGZvcmNlX2JhbmQgLSAxOwogCiAJc3RhdGUtPmJhbmRzZWxlY3RhcmcgPSBjeDI0MTIzX2JhbmRzZWxlY3RfdmFsc1tiYW5kXS5wcm9nZGF0YTsKIAl2Y29fZGl2ID0gY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHNbYmFuZF0uVkNPZGl2aWRlcjsKIAogCS8qIGRldGVybWluZSB0aGUgY2hhcmdlIHB1bXAgY3VycmVudCAqLwotCWlmICggcC0+ZnJlcXVlbmN5IDwgKGN4MjQxMjNfYmFuZHNlbGVjdF92YWxzW2JhbmRdLmZyZXFfbG93ICsgY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHNbYmFuZF0uZnJlcV9oaWdoKS8yICkKKwlpZiAocC0+ZnJlcXVlbmN5IDwgKGN4MjQxMjNfYmFuZHNlbGVjdF92YWxzW2JhbmRdLmZyZXFfbG93ICsKKwkJY3gyNDEyM19iYW5kc2VsZWN0X3ZhbHNbYmFuZF0uZnJlcV9oaWdoKSAvIDIpCiAJCXB1bXAgPSAweDAxOwogCWVsc2UKIAkJcHVtcCA9IDB4MDI7CiAKIAkvKiBEZXRlcm1pbmUgdGhlIE4vQSBkaXZpZGVycyBmb3IgdGhlIHJlcXVlc3RlZCBsYmFuZCBmcmVxIChpbiBrSHopLiAqLwotCS8qIE5vdGU6IHRoZSByZWZlcmVuY2UgZGl2aWRlciBSPTEwLCBmcmVxdWVuY3kgaXMgaW4gS0h6LCBYVEFMIGlzIGluIEh6ICovCi0JbmRpdiA9ICggKChwLT5mcmVxdWVuY3kgKiB2Y29fZGl2ICogMTApIC8gKDIgKiBYVEFMIC8gMTAwMCkpIC8gMzIpICYgMHgxZmY7Ci0JYWRpdiA9ICggKChwLT5mcmVxdWVuY3kgKiB2Y29fZGl2ICogMTApIC8gKDIgKiBYVEFMIC8gMTAwMCkpICUgMzIpICYgMHgxZjsKKwkvKiBOb3RlOiB0aGUgcmVmZXJlbmNlIGRpdmlkZXIgUj0xMCwgZnJlcXVlbmN5IGlzIGluIEtIeiwKKwkgKiBYVEFMIGlzIGluIEh6ICovCisJbmRpdiA9ICgoKHAtPmZyZXF1ZW5jeSAqIHZjb19kaXYgKiAxMCkgLworCQkoMiAqIFhUQUwgLyAxMDAwKSkgLyAzMikgJiAweDFmZjsKKwlhZGl2ID0gKCgocC0+ZnJlcXVlbmN5ICogdmNvX2RpdiAqIDEwKSAvCisJCSgyICogWFRBTCAvIDEwMDApKSAlIDMyKSAmIDB4MWY7CiAKIAlpZiAoYWRpdiA9PSAwICYmIG5kaXYgPiAwKQogCQluZGl2LS07CiAKLQkvKiBjb250cm9sIGJpdHMgMTEsIHJlZmRpdiAxMSwgY2hhcmdlIHB1bXAgcG9sYXJpdHkgMSwgY2hhcmdlIHB1bXAgY3VycmVudCwgbmRpdiwgYWRpdiAqLwotCXN0YXRlLT5wbGxhcmcgPSAoMyA8PCAxOSkgfCAoMyA8PCAxNykgfCAoMSA8PCAxNikgfCAocHVtcCA8PCAxNCkgfCAobmRpdiA8PCA1KSB8IGFkaXY7CisJLyogY29udHJvbCBiaXRzIDExLCByZWZkaXYgMTEsIGNoYXJnZSBwdW1wIHBvbGFyaXR5IDEsCisJICogY2hhcmdlIHB1bXAgY3VycmVudCwgbmRpdiwgYWRpdiAqLworCXN0YXRlLT5wbGxhcmcgPSAoMyA8PCAxOSkgfCAoMyA8PCAxNykgfCAoMSA8PCAxNikgfAorCQkocHVtcCA8PCAxNCkgfCAobmRpdiA8PCA1KSB8IGFkaXY7CiAKIAlyZXR1cm4gMDsKIH0KIAogLyoKICAqIFR1bmVyIGRhdGEgaXMgMjEgYml0cyBsb25nLCBtdXN0IGJlIGxlZnQtYWxpZ25lZCBpbiBkYXRhLgotICogVHVuZXIgY3gyNDEwOSBpcyB3cml0dGVuIHRocm91Z2ggYSBkZWRpY2F0ZWQgM3dpcmUgaW50ZXJmYWNlIG9uIHRoZSBkZW1vZCBjaGlwLgorICogVHVuZXIgY3gyNDEwOSBpcyB3cml0dGVuIHRocm91Z2ggYSBkZWRpY2F0ZWQgM3dpcmUgaW50ZXJmYWNlCisgKiBvbiB0aGUgZGVtb2QgY2hpcC4KICAqLwotc3RhdGljIGludCBjeDI0MTIzX3BsbF93cml0ZXJlZyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwLCB1MzIgZGF0YSkKK3N0YXRpYyBpbnQgY3gyNDEyM19wbGxfd3JpdGVyZWcoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwLCB1MzIgZGF0YSkKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CkBAIC02MTAsNyArNjI5LDcgQEAKIAogCS8qIHNlbmQgYW5vdGhlciA4IGJ5dGVzLCB3YWl0IGZvciB0aGUgc2VuZCB0byBiZSBjb21wbGV0ZWQgKi8KIAl0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoNDApOwotCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MjIsIChkYXRhPj44KSAmIDB4ZmYgKTsKKwljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDIyLCAoZGF0YSA+PiA4KSAmIDB4ZmYpOwogCXdoaWxlICgoY3gyNDEyM19yZWFkcmVnKHN0YXRlLCAweDIwKSAmIDB4NDApID09IDApIHsKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKIAkJCWVycigiJXM6ICBkZW1vZHVsYXRvciBpcyBub3QgcmVzcG9uZGluZywgIlwKQEAgLTYyMCw5ICs2MzksMTAgQEAKIAkJbXNsZWVwKDEwKTsKIAl9CiAKLQkvKiBzZW5kIHRoZSBsb3dlciA1IGJpdHMgb2YgdGhpcyBieXRlLCBwYWRkZWQgd2l0aCAzIExCQiwgd2FpdCBmb3IgdGhlIHNlbmQgdG8gYmUgY29tcGxldGVkICovCisJLyogc2VuZCB0aGUgbG93ZXIgNSBiaXRzIG9mIHRoaXMgYnl0ZSwgcGFkZGVkIHdpdGggMyBMQkIsCisJICogd2FpdCBmb3IgdGhlIHNlbmQgdG8gYmUgY29tcGxldGVkICovCiAJdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDQwKTsKLQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDIyLCAoZGF0YSkgJiAweGZmICk7CisJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgyMiwgKGRhdGEpICYgMHhmZik7CiAJd2hpbGUgKChjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MjApICYgMHg4MCkpIHsKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKIAkJCWVycigiJXM6ICBkZW1vZHVsYXRvciBpcyBub3QgcmVzcG9uZGluZywiIFwKQEAgLTYzOSw3ICs2NTksOCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfcGxsX3R1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKK3N0YXRpYyBpbnQgY3gyNDEyM19wbGxfdHVuZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgKnApCiB7CiAJc3RydWN0IGN4MjQxMjNfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJdTggdmFsOwpAQCAtNjkwLDcgKzcxMSw3IEBACiAJcmV0dXJuIGN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MjMsIHIpOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfaW5pdGZlKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIGludCBjeDI0MTIzX2luaXRmZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSkKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAlpbnQgaTsKQEAgLTY5OSwxOSArNzIwLDIyIEBACiAKIAkvKiBDb25maWd1cmUgdGhlIGRlbW9kIHRvIGEgZ29vZCBzZXQgb2YgZGVmYXVsdHMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjeDI0MTIzX3JlZ2RhdGEpOyBpKyspCi0JCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIGN4MjQxMjNfcmVnZGF0YVtpXS5yZWcsIGN4MjQxMjNfcmVnZGF0YVtpXS5kYXRhKTsKKwkJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgY3gyNDEyM19yZWdkYXRhW2ldLnJlZywKKwkJCWN4MjQxMjNfcmVnZGF0YVtpXS5kYXRhKTsKIAogCS8qIFNldCB0aGUgTE5CIHBvbGFyaXR5ICovCi0JaWYoc3RhdGUtPmNvbmZpZy0+bG5iX3BvbGFyaXR5KQotCQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDMyLCBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MzIpIHwgMHgwMik7CisJaWYgKHN0YXRlLT5jb25maWctPmxuYl9wb2xhcml0eSkKKwkJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgzMiwKKwkJCWN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgzMikgfCAweDAyKTsKIAogCWlmIChzdGF0ZS0+Y29uZmlnLT5kb250X3VzZV9wbGwpCi0JY3gyNDEyM19yZXBlYXRlcl9tb2RlKHN0YXRlLCAxLCAwKTsKKwkJY3gyNDEyM19yZXBlYXRlcl9tb2RlKHN0YXRlLCAxLCAwKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfc2V0X3ZvbHRhZ2Uoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGZlX3NlY192b2x0YWdlX3Qgdm9sdGFnZSkKK3N0YXRpYyBpbnQgY3gyNDEyM19zZXRfdm9sdGFnZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlmZV9zZWNfdm9sdGFnZV90IHZvbHRhZ2UpCiB7CiAJc3RydWN0IGN4MjQxMjNfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJdTggdmFsOwpAQCAtNzQwLDcgKzc2NCw3IEBACiB7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMjAwKTsKIAl3aGlsZSAoIShjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MjkpICYgMHg0MCkpIHsKLQkJaWYodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgeworCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewogCQkJZXJyKCIlczogZGlzZXFjIHF1ZXVlIG5vdCByZWFkeSwgIiBcCiAJCQkJImNvbW1hbmQgbWF5IGJlIGxvc3QuXG4iLCBfX2Z1bmNfXyk7CiAJCQlicmVhazsKQEAgLTc0OSw3ICs3NzMsOCBAQAogCX0KIH0KIAotc3RhdGljIGludCBjeDI0MTIzX3NlbmRfZGlzZXFjX21zZyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgc3RydWN0IGR2Yl9kaXNlcWNfbWFzdGVyX2NtZCAqY21kKQorc3RhdGljIGludCBjeDI0MTIzX3NlbmRfZGlzZXFjX21zZyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKKwlzdHJ1Y3QgZHZiX2Rpc2VxY19tYXN0ZXJfY21kICpjbWQpCiB7CiAJc3RydWN0IGN4MjQxMjNfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJaW50IGksIHZhbCwgdG9uZTsKQEAgLTc3MSwyMCArNzk2LDIxIEBACiAJCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MkMgKyBpLCBjbWQtPm1zZ1tpXSk7CiAKIAl2YWwgPSBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MjkpOwotCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MjksICgodmFsICYgMHg5MCkgfCAweDQwKSB8ICgoY21kLT5tc2dfbGVuLTMpICYgMykpOworCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MjksICgodmFsICYgMHg5MCkgfCAweDQwKSB8CisJCSgoY21kLT5tc2dfbGVuLTMpICYgMykpOwogCiAJLyogd2FpdCBmb3IgZGlzZXFjIG1lc3NhZ2UgdG8gZmluaXNoIHNlbmRpbmcgKi8KIAljeDI0MTIzX3dhaXRfZm9yX2Rpc2VxYyhzdGF0ZSk7CiAKIAkvKiByZXN0YXJ0IGNvbnRpbnVvdXMgdG9uZSBpZiBlbmFibGVkICovCi0JaWYgKHRvbmUgJiAweDEwKSB7CisJaWYgKHRvbmUgJiAweDEwKQogCQljeDI0MTIzX3dyaXRlcmVnKHN0YXRlLCAweDI5LCB0b25lICYgfjB4NDApOwotCX0KIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfZGlzZXFjX3NlbmRfYnVyc3Qoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGZlX3NlY19taW5pX2NtZF90IGJ1cnN0KQorc3RhdGljIGludCBjeDI0MTIzX2Rpc2VxY19zZW5kX2J1cnN0KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCWZlX3NlY19taW5pX2NtZF90IGJ1cnN0KQogewogCXN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCWludCB2YWwsIHRvbmU7CkBAIC04MTQsMTMgKzg0MCwxMyBAQAogCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MmEsIGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgyYSkgJiAweGZiKTsKIAogCS8qIHJlc3RhcnQgY29udGludW91cyB0b25lIGlmIGVuYWJsZWQgKi8KLQlpZiAodG9uZSAmIDB4MTApIHsKKwlpZiAodG9uZSAmIDB4MTApCiAJCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MjksIHRvbmUgJiB+MHg0MCk7Ci0JfQorCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDEyM19yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc3RhdHVzX3QqIHN0YXR1cykKK3N0YXRpYyBpbnQgY3gyNDEyM19yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgZmVfc3RhdHVzX3QgKnN0YXR1cykKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAlpbnQgc3luYyA9IGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgxNCk7CkBAIC04NTMsOCArODc5LDkgQEAKIH0KIAogLyoKLSAqIENvbmZpZ3VyZWQgdG8gcmV0dXJuIHRoZSBtZWFzdXJlbWVudCBvZiBlcnJvcnMgaW4gYmxvY2tzLCBiZWNhdXNlIG5vIFVDQkxPQ0tTIHZhbHVlCi0gKiBpcyBhdmFpbGFibGUsIHNvIHRoaXMgdmFsdWUgZG91YmxlcyB1cCB0byBzYXRpc2Z5IGJvdGggbWVhc3VyZW1lbnRzCisgKiBDb25maWd1cmVkIHRvIHJldHVybiB0aGUgbWVhc3VyZW1lbnQgb2YgZXJyb3JzIGluIGJsb2NrcywKKyAqIGJlY2F1c2Ugbm8gVUNCTE9DS1MgdmFsdWUgaXMgYXZhaWxhYmxlLCBzbyB0aGlzIHZhbHVlIGRvdWJsZXMgdXAKKyAqIHRvIHNhdGlzZnkgYm90aCBtZWFzdXJlbWVudHMuCiAgKi8KIHN0YXRpYyBpbnQgY3gyNDEyM19yZWFkX2JlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTMyICpiZXIpCiB7CkBAIC04NzYsNyArOTAzLDggQEAKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAotCSpzaWduYWxfc3RyZW5ndGggPSBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4M2IpIDw8IDg7IC8qIGxhcmdlciA9IGJldHRlciAqLworCS8qIGxhcmdlciA9IGJldHRlciAqLworCSpzaWduYWxfc3RyZW5ndGggPSBjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4M2IpIDw8IDg7CiAKIAlkcHJpbnRrKCJTaWduYWwgc3RyZW5ndGggPSAlZFxuIiwgKnNpZ25hbF9zdHJlbmd0aCk7CiAKQEAgLTkwNyw3ICs5MzUsNyBAQAogCWlmIChzdGF0ZS0+Y29uZmlnLT5zZXRfdHNfcGFyYW1zKQogCQlzdGF0ZS0+Y29uZmlnLT5zZXRfdHNfcGFyYW1zKGZlLCAwKTsKIAotCXN0YXRlLT5jdXJyZW50ZnJlcT1wLT5mcmVxdWVuY3k7CisJc3RhdGUtPmN1cnJlbnRmcmVxID0gcC0+ZnJlcXVlbmN5OwogCXN0YXRlLT5jdXJyZW50c3ltYm9scmF0ZSA9IHAtPnUucXBzay5zeW1ib2xfcmF0ZTsKIAogCWN4MjQxMjNfc2V0X2ludmVyc2lvbihzdGF0ZSwgcC0+aW52ZXJzaW9uKTsKQEAgLTkzMiw3ICs5NjAsOCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjQxMjNfZ2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgKnApCitzdGF0aWMgaW50IGN4MjQxMjNfZ2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCXN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKIHsKIAlzdHJ1Y3QgY3gyNDEyM19zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIApAQCAtOTUyLDcgKzk4MSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3gyNDEyM19zZXRfdG9uZShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgZmVfc2VjX3RvbmVfbW9kZV90IHRvbmUpCitzdGF0aWMgaW50IGN4MjQxMjNfc2V0X3RvbmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGZlX3NlY190b25lX21vZGVfdCB0b25lKQogewogCXN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCXU4IHZhbDsKQEAgLTk3Nyw4ICsxMDA2LDggQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjeDI0MTIzX3R1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsCi0JCQlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMqIHBhcmFtcywKK3N0YXRpYyBpbnQgY3gyNDEyM190dW5lKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLAorCQkJc3RydWN0IGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJCQl1bnNpZ25lZCBpbnQgbW9kZV9mbGFncywKIAkJCXVuc2lnbmVkIGludCAqZGVsYXksCiAJCQlmZV9zdGF0dXNfdCAqc3RhdHVzKQpAQCAtOTk3LDEyICsxMDI2LDEyIEBACiAKIHN0YXRpYyBpbnQgY3gyNDEyM19nZXRfYWxnbyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSkKIHsKLQlyZXR1cm4gMTsgLy9GRV9BTEdPX0hXCisJcmV0dXJuIDE7IC8qIEZFX0FMR09fSFcgKi8KIH0KIAotc3RhdGljIHZvaWQgY3gyNDEyM19yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIHZvaWQgY3gyNDEyM19yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewotCXN0cnVjdCBjeDI0MTIzX3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCWRwcmludGsoIlxuIik7CiAJaTJjX2RlbF9hZGFwdGVyKCZzdGF0ZS0+dHVuZXJfaTJjX2FkYXB0ZXIpOwogCWtmcmVlKHN0YXRlKTsKQEAgLTEwMTMsNyArMTA0Miw3IEBACiB7CiAJc3RydWN0IGN4MjQxMjNfc3RhdGUgKnN0YXRlID0gaTJjX2dldF9hZGFwZGF0YShpMmNfYWRhcCk7CiAJLyogdGhpcyByZXBlYXRlciBjbG9zZXMgYWZ0ZXIgdGhlIGZpcnN0IHN0b3AgKi8KLSAgICBjeDI0MTIzX3JlcGVhdGVyX21vZGUoc3RhdGUsIDEsIDEpOworCWN4MjQxMjNfcmVwZWF0ZXJfbW9kZShzdGF0ZSwgMSwgMSk7CiAJcmV0dXJuIGkyY190cmFuc2ZlcihzdGF0ZS0+aTJjLCBtc2csIG51bSk7CiB9CiAKQEAgLTEwMzcsOCArMTA2Niw4IEBACiAKIHN0YXRpYyBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyBjeDI0MTIzX29wczsKIAotc3RydWN0IGR2Yl9mcm9udGVuZCogY3gyNDEyM19hdHRhY2goY29uc3Qgc3RydWN0IGN4MjQxMjNfY29uZmlnKiBjb25maWcsCi0JCQkJICAgIHN0cnVjdCBpMmNfYWRhcHRlciogaTJjKQorc3RydWN0IGR2Yl9mcm9udGVuZCAqY3gyNDEyM19hdHRhY2goY29uc3Qgc3RydWN0IGN4MjQxMjNfY29uZmlnICpjb25maWcsCisJCQkJICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjKQogewogCXN0cnVjdCBjeDI0MTIzX3N0YXRlICpzdGF0ZSA9CiAJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjeDI0MTIzX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CkBAIC0xMDU3LDIwICsxMDg2LDI1IEBACiAJLyogY2hlY2sgaWYgdGhlIGRlbW9kIGlzIHRoZXJlICovCiAJc3RhdGUtPmRlbW9kX3JldiA9IGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgwMCk7CiAJc3dpdGNoIChzdGF0ZS0+ZGVtb2RfcmV2KSB7Ci0JY2FzZSAweGUxOiBpbmZvKCJkZXRlY3RlZCBDWDI0MTIzQ1xuIik7IGJyZWFrOwotCWNhc2UgMHhkMTogaW5mbygiZGV0ZWN0ZWQgQ1gyNDEyM1xuIik7IGJyZWFrOworCWNhc2UgMHhlMToKKwkJaW5mbygiZGV0ZWN0ZWQgQ1gyNDEyM0NcbiIpOworCQlicmVhazsKKwljYXNlIDB4ZDE6CisJCWluZm8oImRldGVjdGVkIENYMjQxMjNcbiIpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnIoIndyb25nIGRlbW9kIHJldmlzaW9uOiAleFxuIiwgc3RhdGUtPmRlbW9kX3Jldik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCiAJLyogY3JlYXRlIGR2Yl9mcm9udGVuZCAqLwotCW1lbWNweSgmc3RhdGUtPmZyb250ZW5kLm9wcywgJmN4MjQxMjNfb3BzLCBzaXplb2Yoc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMpKTsKKwltZW1jcHkoJnN0YXRlLT5mcm9udGVuZC5vcHMsICZjeDI0MTIzX29wcywKKwkJc2l6ZW9mKHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzKSk7CiAJc3RhdGUtPmZyb250ZW5kLmRlbW9kdWxhdG9yX3ByaXYgPSBzdGF0ZTsKIAotICAgIC8qIGNyZWF0ZSB0dW5lciBpMmMgYWRhcHRlciAqLwotICAgIGlmIChjb25maWctPmRvbnRfdXNlX3BsbCkKLQljeDI0MTIzX3JlcGVhdGVyX21vZGUoc3RhdGUsIDEsIDApOworCS8qIGNyZWF0ZSB0dW5lciBpMmMgYWRhcHRlciAqLworCWlmIChjb25maWctPmRvbnRfdXNlX3BsbCkKKwkJY3gyNDEyM19yZXBlYXRlcl9tb2RlKHN0YXRlLCAxLCAwKTsKIAogCXN0cmxjcHkoc3RhdGUtPnR1bmVyX2kyY19hZGFwdGVyLm5hbWUsICJDWDI0MTIzIHR1bmVyIEkyQyBidXMiLAogCQlzaXplb2Yoc3RhdGUtPnR1bmVyX2kyY19hZGFwdGVyLm5hbWUpKTsKQEAgLTEwNzksNyArMTExMyw3IEBACiAJc3RhdGUtPnR1bmVyX2kyY19hZGFwdGVyLmFsZ29fZGF0YSA9IE5VTEw7CiAJaTJjX3NldF9hZGFwZGF0YSgmc3RhdGUtPnR1bmVyX2kyY19hZGFwdGVyLCBzdGF0ZSk7CiAJaWYgKGkyY19hZGRfYWRhcHRlcigmc3RhdGUtPnR1bmVyX2kyY19hZGFwdGVyKSA8IDApIHsKLQllcnIoInR1bmVyIGkyYyBidXMgY291bGQgbm90IGJlIGluaXRpYWxpemVkXG4iKTsKKwkJZXJyKCJ0dW5lciBpMmMgYnVzIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZFxuIik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC0xMDkwLDYgKzExMjQsNyBAQAogCiAJcmV0dXJuIE5VTEw7CiB9CitFWFBPUlRfU1lNQk9MKGN4MjQxMjNfYXR0YWNoKTsKIAogc3RhdGljIHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIGN4MjQxMjNfb3BzID0gewogCkBAIC0xMTI2LDE1ICsxMTYxLDggQEAKIAkuZ2V0X2Zyb250ZW5kX2FsZ28gPSBjeDI0MTIzX2dldF9hbGdvLAogfTsKIAotbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDA2NDQpOwotTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkFjdGl2YXRlcyBmcm9udGVuZCBkZWJ1Z2dpbmcgKGRlZmF1bHQ6MCkiKTsKLQotbW9kdWxlX3BhcmFtKGZvcmNlX2JhbmQsIGludCwgMDY0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGZvcmNlX2JhbmQsICJGb3JjZSBhIHNwZWNpZmljIGJhbmQgc2VsZWN0ICgxLTksIGRlZmF1bHQ6b2ZmKS4iKTsKLQogTU9EVUxFX0RFU0NSSVBUSU9OKCJEVkIgRnJvbnRlbmQgbW9kdWxlIGZvciBDb25leGFudCAiIFwKIAkiQ1gyNDEyMy9DWDI0MTA5L0NYMjQxMTMgaGFyZHdhcmUiKTsKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlbiBUb3RoIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLUVYUE9SVF9TWU1CT0woY3gyNDEyM19hdHRhY2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuaCBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmgKaW5kZXggY2M2YjQxMS4uNTFhZTg2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5oCkBAIC0yMywxMyArMjMsMTIgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2R2Yi9mcm9udGVuZC5oPgogCi1zdHJ1Y3QgY3gyNDEyM19jb25maWcKLXsKK3N0cnVjdCBjeDI0MTIzX2NvbmZpZyB7CiAJLyogdGhlIGRlbW9kdWxhdG9yJ3MgaTJjIGFkZHJlc3MgKi8KIAl1OCBkZW1vZF9hZGRyZXNzOwogCiAJLyogTmVlZCB0byBzZXQgZGV2aWNlIHBhcmFtIGZvciBzdGFydF9kbWEgKi8KLQlpbnQgKCpzZXRfdHNfcGFyYW1zKShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgaW50IGlzX3B1bmN0dXJlZCk7CisJaW50ICgqc2V0X3RzX3BhcmFtcykoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGludCBpc19wdW5jdHVyZWQpOwogCiAJLyogMCA9IExOQiB2b2x0YWdlIG5vcm1hbCwgMSA9IExOQiB2b2x0YWdlIGludmVydGVkICovCiAJaW50IGxuYl9wb2xhcml0eTsKQEAgLTM5LDcgKzM4LDggQEAKIAl2b2lkICgqYWdjX2NhbGxiYWNrKSAoc3RydWN0IGR2Yl9mcm9udGVuZCAqKTsKIH07CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EVkJfQ1gyNDEyMykgfHwgKGRlZmluZWQoQ09ORklHX0RWQl9DWDI0MTIzX01PRFVMRSkgJiYgZGVmaW5lZChNT0RVTEUpKQorI2lmIGRlZmluZWQoQ09ORklHX0RWQl9DWDI0MTIzKSB8fCAoZGVmaW5lZChDT05GSUdfRFZCX0NYMjQxMjNfTU9EVUxFKSBcCisJJiYgZGVmaW5lZChNT0RVTEUpKQogZXh0ZXJuIHN0cnVjdCBkdmJfZnJvbnRlbmQgKmN4MjQxMjNfYXR0YWNoKGNvbnN0IHN0cnVjdCBjeDI0MTIzX2NvbmZpZyAqY29uZmlnLAogCQkJCQkgICBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYyk7CiBleHRlcm4gc3RydWN0IGkyY19hZGFwdGVyICpjeDI0MTIzX2dldF90dW5lcl9pMmNfYWRhcHRlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICopOwpAQCAtNTYsNiArNTYsNiBAQAogCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBkcml2ZXIgZGlzYWJsZWQgYnkgS2NvbmZpZ1xuIiwgX19mdW5jX18pOwogCXJldHVybiBOVUxMOwogfQotI2VuZGlmIC8vIENPTkZJR19EVkJfQ1gyNDEyMworI2VuZGlmCiAKICNlbmRpZiAvKiBDWDI0MTIzX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDA5LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQwOS5jCmluZGV4IDc1MDBhMWMuLmNmNGQ4OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDA5LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MDkuYwpAQCAtMzAsMTAgKzMwLDEwIEBACiAKIHN0cnVjdCBzNWgxNDA5X3N0YXRlIHsKIAotCXN0cnVjdCBpMmNfYWRhcHRlciogaTJjOworCXN0cnVjdCBpMmNfYWRhcHRlciAqaTJjOwogCiAJLyogY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqLwotCWNvbnN0IHN0cnVjdCBzNWgxNDA5X2NvbmZpZyogY29uZmlnOworCWNvbnN0IHN0cnVjdCBzNWgxNDA5X2NvbmZpZyAqY29uZmlnOwogCiAJc3RydWN0IGR2Yl9mcm9udGVuZCBmcm9udGVuZDsKIApAQCAtNDgsNiArNDgsOSBAQAogfTsKIAogc3RhdGljIGludCBkZWJ1ZzsKK21vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJFbmFibGUgdmVyYm9zZSBkZWJ1ZyBtZXNzYWdlcyIpOworCiAjZGVmaW5lIGRwcmludGsJaWYgKGRlYnVnKSBwcmludGsKIAogLyogUmVnaXN0ZXIgdmFsdWVzIHRvIGluaXRpYWxpc2UgdGhlIGRlbW9kLCB0aGlzIHdpbGwgc2V0IFZTQiBieSBkZWZhdWx0ICovCkBAIC0yOTksMTAgKzMwMiwxMCBAQAogfTsKIAogLyogOCBiaXQgcmVnaXN0ZXJzLCAxNiBiaXQgdmFsdWVzICovCi1zdGF0aWMgaW50IHM1aDE0MDlfd3JpdGVyZWcoc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlLCB1OCByZWcsIHUxNiBkYXRhKQorc3RhdGljIGludCBzNWgxNDA5X3dyaXRlcmVnKHN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSwgdTggcmVnLCB1MTYgZGF0YSkKIHsKIAlpbnQgcmV0OwotCXU4IGJ1ZiBbXSA9IHsgcmVnLCBkYXRhID4+IDgsICBkYXRhICYgMHhmZiB9OworCXU4IGJ1ZltdID0geyByZWcsIGRhdGEgPj4gOCwgIGRhdGEgJiAweGZmIH07CiAKIAlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywKIAkJCSAgICAgICAuZmxhZ3MgPSAwLCAuYnVmID0gYnVmLCAubGVuID0gMyB9OwpAQCAtMzEwLDE5ICszMTMsMTkgQEAKIAlyZXQgPSBpMmNfdHJhbnNmZXIoc3RhdGUtPmkyYywgJm1zZywgMSk7CiAKIAlpZiAocmV0ICE9IDEpCi0JCXByaW50aygiJXM6IHdyaXRlcmVnIGVycm9yIChyZWcgPT0gMHglMDJ4LCB2YWwgPT0gMHglMDR4LCAiCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGVycm9yIChyZWcgPT0gMHglMDJ4LCB2YWwgPT0gMHglMDR4LCAiCiAJCSAgICAgICAicmV0ID09ICVpKVxuIiwgX19mdW5jX18sIHJlZywgZGF0YSwgcmV0KTsKIAogCXJldHVybiAocmV0ICE9IDEpID8gLTEgOiAwOwogfQogCi1zdGF0aWMgdTE2IHM1aDE0MDlfcmVhZHJlZyhzdHJ1Y3QgczVoMTQwOV9zdGF0ZSogc3RhdGUsIHU4IHJlZykKK3N0YXRpYyB1MTYgczVoMTQwOV9yZWFkcmVnKHN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSwgdTggcmVnKQogewogCWludCByZXQ7Ci0JdTggYjAgW10gPSB7IHJlZyB9OwotCXU4IGIxIFtdID0geyAwLCAwIH07CisJdTggYjBbXSA9IHsgcmVnIH07CisJdTggYjFbXSA9IHsgMCwgMCB9OwogCi0Jc3RydWN0IGkyY19tc2cgbXNnIFtdID0geworCXN0cnVjdCBpMmNfbXNnIG1zZ1tdID0gewogCQl7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywgLmZsYWdzID0gMCwKIAkJICAuYnVmID0gYjAsIC5sZW4gPSAxIH0sCiAJCXsgLmFkZHIgPSBzdGF0ZS0+Y29uZmlnLT5kZW1vZF9hZGRyZXNzLCAuZmxhZ3MgPSBJMkNfTV9SRCwKQEAgLTMzNSw5ICszMzgsOSBAQAogCXJldHVybiAoYjFbMF0gPDwgOCkgfCBiMVsxXTsKIH0KIAotc3RhdGljIGludCBzNWgxNDA5X3NvZnRyZXNldChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSkKK3N0YXRpYyBpbnQgczVoMTQwOV9zb2Z0cmVzZXQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiB7Ci0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IHM1aDE0MDlfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKIAlkcHJpbnRrKCIlcygpXG4iLCBfX2Z1bmNfXyk7CiAKQEAgLTM0OSwxMSArMzUyLDExIEBACiB9CiAKICNkZWZpbmUgUzVIMTQwOV9WU0JfSUZfRlJFUSA1MzgwCi0jZGVmaW5lIFM1SDE0MDlfUUFNX0lGX0ZSRVEgc3RhdGUtPmNvbmZpZy0+cWFtX2lmCisjZGVmaW5lIFM1SDE0MDlfUUFNX0lGX0ZSRVEgKHN0YXRlLT5jb25maWctPnFhbV9pZikKIAotc3RhdGljIGludCBzNWgxNDA5X3NldF9pZl9mcmVxKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBpbnQgS0h6KQorc3RhdGljIGludCBzNWgxNDA5X3NldF9pZl9mcmVxKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBpbnQgS0h6KQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCiAJZHByaW50aygiJXMoJWQgS0h6KVxuIiwgX19mdW5jX18sIEtIeik7CiAKQEAgLTM3NiwyNiArMzc5LDI2IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgczVoMTQwOV9zZXRfc3BlY3RyYWxpbnZlcnNpb24oc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGludCBpbnZlcnRlZCkKK3N0YXRpYyBpbnQgczVoMTQwOV9zZXRfc3BlY3RyYWxpbnZlcnNpb24oc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGludCBpbnZlcnRlZCkKIHsKLQlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCWRwcmludGsoIiVzKCVkKVxuIiwgX19mdW5jX18sIGludmVydGVkKTsKIAotCWlmKGludmVydGVkID09IDEpCisJaWYgKGludmVydGVkID09IDEpCiAJCXJldHVybiBzNWgxNDA5X3dyaXRlcmVnKHN0YXRlLCAweDFiLCAweDExMDEpOyAvKiBJbnZlcnRlZCAqLwogCWVsc2UKIAkJcmV0dXJuIHM1aDE0MDlfd3JpdGVyZWcoc3RhdGUsIDB4MWIsIDB4MDExMCk7IC8qIE5vcm1hbCAqLwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfZW5hYmxlX21vZHVsYXRpb24oc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsCitzdGF0aWMgaW50IHM1aDE0MDlfZW5hYmxlX21vZHVsYXRpb24oc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCiAJCQkJICAgICBmZV9tb2R1bGF0aW9uX3QgbSkKIHsKLQlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCWRwcmludGsoIiVzKDB4JTA4eClcbiIsIF9fZnVuY19fLCBtKTsKIAotCXN3aXRjaChtKSB7CisJc3dpdGNoIChtKSB7CiAJY2FzZSBWU0JfODoKIAkJZHByaW50aygiJXMoKSBWU0JfOFxuIiwgX19mdW5jX18pOwogCQlpZiAoc3RhdGUtPmlmX2ZyZXEgIT0gUzVIMTQwOV9WU0JfSUZfRlJFUSkKQEAgLTQyMiw5ICs0MjUsOSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfaTJjX2dhdGVfY3RybChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgaW50IGVuYWJsZSkKK3N0YXRpYyBpbnQgczVoMTQwOV9pMmNfZ2F0ZV9jdHJsKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBpbnQgZW5hYmxlKQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCiAJZHByaW50aygiJXMoJWQpXG4iLCBfX2Z1bmNfXywgZW5hYmxlKTsKIApAQCAtNDM0LDkgKzQzNyw5IEBACiAJCXJldHVybiBzNWgxNDA5X3dyaXRlcmVnKHN0YXRlLCAweGYzLCAwKTsKIH0KIAotc3RhdGljIGludCBzNWgxNDA5X3NldF9ncGlvKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBpbnQgZW5hYmxlKQorc3RhdGljIGludCBzNWgxNDA5X3NldF9ncGlvKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBpbnQgZW5hYmxlKQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCiAJZHByaW50aygiJXMoJWQpXG4iLCBfX2Z1bmNfXywgZW5hYmxlKTsKIApAQCAtNDQ4LDE4ICs0NTEsMTggQEAKIAkJCXM1aDE0MDlfcmVhZHJlZyhzdGF0ZSwgMHhlMykgJiAweGZlZmYpOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfc2xlZXAoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGludCBlbmFibGUpCitzdGF0aWMgaW50IHM1aDE0MDlfc2xlZXAoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGludCBlbmFibGUpCiB7Ci0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IHM1aDE0MDlfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKIAlkcHJpbnRrKCIlcyglZClcbiIsIF9fZnVuY19fLCBlbmFibGUpOwogCiAJcmV0dXJuIHM1aDE0MDlfd3JpdGVyZWcoc3RhdGUsIDB4ZjIsIGVuYWJsZSk7CiB9CiAKLXN0YXRpYyBpbnQgczVoMTQwOV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSkKK3N0YXRpYyBpbnQgczVoMTQwOV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSkKIHsKLQlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCWRwcmludGsoIiVzKClcbiIsIF9fZnVuY19fKTsKIApAQCAtNDgzLDcgKzQ4Niw3IEBACiAJCXJlZyAmPSAweGZmOwogCiAJCXM1aDE0MDlfd3JpdGVyZWcoc3RhdGUsIDB4OTYsIDB4MDBjKTsKLQkJaWYgKChyZWcgPCAweDM4KSB8fCAocmVnID4gMHg2OCkgKSB7CisJCWlmICgocmVnIDwgMHgzOCkgfHwgKHJlZyA+IDB4NjgpKSB7CiAJCQlzNWgxNDA5X3dyaXRlcmVnKHN0YXRlLCAweDkzLCAweDMzMzIpOwogCQkJczVoMTQwOV93cml0ZXJlZyhzdGF0ZSwgMHg5ZSwgMHgyYzM3KTsKIAkJfSBlbHNlIHsKQEAgLTUxNCw3ICs1MTcsNyBAQAogCiAJCQlzNWgxNDA5X3dyaXRlcmVnKHN0YXRlLCAweDk2LCAweDIwKTsKIAkJCXM1aDE0MDlfd3JpdGVyZWcoc3RhdGUsIDB4YWQsCi0JCQkJKCAoKHJlZzEgJiAweGYwMDApID4+IDQpIHwgKHJlZzIgJiAweGYwZmYpKSApOworCQkJCSgoKHJlZzEgJiAweGYwMDApID4+IDQpIHwgKHJlZzIgJiAweGYwZmYpKSk7CiAJCQlzNWgxNDA5X3dyaXRlcmVnKHN0YXRlLCAweGFiLAogCQkJCXM1aDE0MDlfcmVhZHJlZyhzdGF0ZSwgMHhhYikgJiAweGVmZmUpOwogCQl9CkBAIC01MjksMTAgKzUzMiwxMCBAQAogfQogCiAvKiBUYWxrIHRvIHRoZSBkZW1vZCwgc2V0IHRoZSBGRUMsIEdVQVJELCBRQU0gc2V0dGluZ3MgZXRjICovCi1zdGF0aWMgaW50IHM1aDE0MDlfc2V0X2Zyb250ZW5kIChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwKK3N0YXRpYyBpbnQgczVoMTQwOV9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCiAJCQkJIHN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAqcCkKIHsKLQlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSogc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKKwlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSAqc3RhdGUgPSBmZS0+ZGVtb2R1bGF0b3JfcHJpdjsKIAogCWRwcmludGsoIiVzKGZyZXF1ZW5jeT0lZClcbiIsIF9fZnVuY19fLCBwLT5mcmVxdWVuY3kpOwogCkBAIC01NDYsOSArNTQ5LDExIEBACiAJbXNsZWVwKDEwMCk7CiAKIAlpZiAoZmUtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcykgewotCQlpZiAoZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKSBmZS0+b3BzLmkyY19nYXRlX2N0cmwoZmUsIDEpOworCQlpZiAoZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKQorCQkJZmUtPm9wcy5pMmNfZ2F0ZV9jdHJsKGZlLCAxKTsKIAkJZmUtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcyhmZSwgcCk7Ci0JCWlmIChmZS0+b3BzLmkyY19nYXRlX2N0cmwpIGZlLT5vcHMuaTJjX2dhdGVfY3RybChmZSwgMCk7CisJCWlmIChmZS0+b3BzLmkyY19nYXRlX2N0cmwpCisJCQlmZS0+b3BzLmkyY19nYXRlX2N0cmwoZmUsIDApOwogCX0KIAogCS8qIE9wdGltaXplIHRoZSBkZW1vZCBmb3IgUUFNICovCkBAIC01OTIsMTcgKzU5NywxNyBAQAogCiAvKiBSZXNldCB0aGUgZGVtb2QgaGFyZHdhcmUgYW5kIHJlc2V0IGFsbCBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKICAgIHRvIGEgZGVmYXVsdCBzdGF0ZS4gKi8KLXN0YXRpYyBpbnQgczVoMTQwOV9pbml0IChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSkKK3N0YXRpYyBpbnQgczVoMTQwOV9pbml0KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewogCWludCBpOwogCi0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IHM1aDE0MDlfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCiAJczVoMTQwOV9zbGVlcChmZSwgMCk7CiAJczVoMTQwOV9yZWdpc3Rlcl9yZXNldChmZSk7CiAKLQlmb3IgKGk9MDsgaSA8IEFSUkFZX1NJWkUoaW5pdF90YWIpOyBpKyspCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5pdF90YWIpOyBpKyspCiAJCXM1aDE0MDlfd3JpdGVyZWcoc3RhdGUsIGluaXRfdGFiW2ldLnJlZywgaW5pdF90YWJbaV0uZGF0YSk7CiAKIAkvKiBUaGUgZGF0YXNoZWV0IHNheXMgdGhhdCBhZnRlciBpbml0aWFsaXNhdGlvbiwgVlNCIGlzIGRlZmF1bHQgKi8KQEAgLTYyNyw5ICs2MzIsOSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfcmVhZF9zdGF0dXMoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGZlX3N0YXR1c190KiBzdGF0dXMpCitzdGF0aWMgaW50IHM1aDE0MDlfcmVhZF9zdGF0dXMoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGZlX3N0YXR1c190ICpzdGF0dXMpCiB7Ci0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IHM1aDE0MDlfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAJdTE2IHJlZzsKIAl1MzIgdHVuZXJfc3RhdHVzID0gMDsKIApAQCAtNjM3LDEyICs2NDIsMTIgQEAKIAogCS8qIEdldCB0aGUgZGVtb2R1bGF0b3Igc3RhdHVzICovCiAJcmVnID0gczVoMTQwOV9yZWFkcmVnKHN0YXRlLCAweGYxKTsKLQlpZihyZWcgJiAweDEwMDApCisJaWYgKHJlZyAmIDB4MTAwMCkKIAkJKnN0YXR1cyB8PSBGRV9IQVNfVklURVJCSTsKLQlpZihyZWcgJiAweDgwMDApCisJaWYgKHJlZyAmIDB4ODAwMCkKIAkJKnN0YXR1cyB8PSBGRV9IQVNfTE9DSyB8IEZFX0hBU19TWU5DOwogCi0Jc3dpdGNoKHN0YXRlLT5jb25maWctPnN0YXR1c19tb2RlKSB7CisJc3dpdGNoIChzdGF0ZS0+Y29uZmlnLT5zdGF0dXNfbW9kZSkgewogCWNhc2UgUzVIMTQwOV9ERU1PRExPQ0tJTkc6CiAJCWlmICgqc3RhdHVzICYgRkVfSEFTX1ZJVEVSQkkpCiAJCQkqc3RhdHVzIHw9IEZFX0hBU19DQVJSSUVSIHwgRkVfSEFTX1NJR05BTDsKQEAgLTY2OCwxMiArNjczLDEyIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgczVoMTQwOV9xYW0yNTZfbG9va3VwX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgdTE2KiBzbnIsIHUxNiB2KQorc3RhdGljIGludCBzNWgxNDA5X3FhbTI1Nl9sb29rdXBfc25yKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB1MTYgKnNuciwgdTE2IHYpCiB7CiAJaW50IGksIHJldCA9IC1FSU5WQUw7CiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCi0JZm9yIChpPTA7IGkgPCBBUlJBWV9TSVpFKHFhbTI1Nl9zbnJfdGFiKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocWFtMjU2X3Nucl90YWIpOyBpKyspIHsKIAkJaWYgKHYgPCBxYW0yNTZfc25yX3RhYltpXS52YWwpIHsKIAkJCSpzbnIgPSBxYW0yNTZfc25yX3RhYltpXS5kYXRhOwogCQkJcmV0ID0gMDsKQEAgLTY4MywxMiArNjg4LDEyIEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBzNWgxNDA5X3FhbTY0X2xvb2t1cF9zbnIoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUxNiogc25yLCB1MTYgdikKK3N0YXRpYyBpbnQgczVoMTQwOV9xYW02NF9sb29rdXBfc25yKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB1MTYgKnNuciwgdTE2IHYpCiB7CiAJaW50IGksIHJldCA9IC1FSU5WQUw7CiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCi0JZm9yIChpPTA7IGkgPCBBUlJBWV9TSVpFKHFhbTY0X3Nucl90YWIpOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShxYW02NF9zbnJfdGFiKTsgaSsrKSB7CiAJCWlmICh2IDwgcWFtNjRfc25yX3RhYltpXS52YWwpIHsKIAkJCSpzbnIgPSBxYW02NF9zbnJfdGFiW2ldLmRhdGE7CiAJCQlyZXQgPSAwOwpAQCAtNjk4LDEyICs3MDMsMTIgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfdnNiX2xvb2t1cF9zbnIoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUxNiogc25yLCB1MTYgdikKK3N0YXRpYyBpbnQgczVoMTQwOV92c2JfbG9va3VwX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwgdTE2ICpzbnIsIHUxNiB2KQogewogCWludCBpLCByZXQgPSAtRUlOVkFMOwogCWRwcmludGsoIiVzKClcbiIsIF9fZnVuY19fKTsKIAotCWZvciAoaT0wOyBpIDwgQVJSQVlfU0laRSh2c2Jfc25yX3RhYik7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZzYl9zbnJfdGFiKTsgaSsrKSB7CiAJCWlmICh2ID4gdnNiX3Nucl90YWJbaV0udmFsKSB7CiAJCQkqc25yID0gdnNiX3Nucl90YWJbaV0uZGF0YTsKIAkJCXJldCA9IDA7CkBAIC03MTQsMTMgKzcxOSwxMyBAQAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgczVoMTQwOV9yZWFkX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgdTE2KiBzbnIpCitzdGF0aWMgaW50IHM1aDE0MDlfcmVhZF9zbnIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIHUxNiAqc25yKQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCXUxNiByZWc7CiAJZHByaW50aygiJXMoKVxuIiwgX19mdW5jX18pOwogCi0Jc3dpdGNoKHN0YXRlLT5jdXJyZW50X21vZHVsYXRpb24pIHsKKwlzd2l0Y2ggKHN0YXRlLT5jdXJyZW50X21vZHVsYXRpb24pIHsKIAljYXNlIFFBTV82NDoKIAkJcmVnID0gczVoMTQwOV9yZWFkcmVnKHN0YXRlLCAweGYwKSAmIDB4ZmY7CiAJCXJldHVybiBzNWgxNDA5X3FhbTY0X2xvb2t1cF9zbnIoZmUsIHNuciwgcmVnKTsKQEAgLTczNywzMCArNzQyLDMwIEBACiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBpbnQgczVoMTQwOV9yZWFkX3NpZ25hbF9zdHJlbmd0aChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwKLQkJCQkJdTE2KiBzaWduYWxfc3RyZW5ndGgpCitzdGF0aWMgaW50IHM1aDE0MDlfcmVhZF9zaWduYWxfc3RyZW5ndGgoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCisJCQkJCXUxNiAqc2lnbmFsX3N0cmVuZ3RoKQogewogCXJldHVybiBzNWgxNDA5X3JlYWRfc25yKGZlLCBzaWduYWxfc3RyZW5ndGgpOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfcmVhZF91Y2Jsb2NrcyhzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgdTMyKiB1Y2Jsb2NrcykKK3N0YXRpYyBpbnQgczVoMTQwOV9yZWFkX3VjYmxvY2tzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB1MzIgKnVjYmxvY2tzKQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCiAJKnVjYmxvY2tzID0gczVoMTQwOV9yZWFkcmVnKHN0YXRlLCAweGI1KTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfcmVhZF9iZXIoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHUzMiogYmVyKQorc3RhdGljIGludCBzNWgxNDA5X3JlYWRfYmVyKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB1MzIgKmJlcikKIHsKIAlyZXR1cm4gczVoMTQwOV9yZWFkX3VjYmxvY2tzKGZlLCBiZXIpOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfZ2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLAorc3RhdGljIGludCBzNWgxNDA5X2dldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKIAkJCQlzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgKnApCiB7Ci0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CisJc3RydWN0IHM1aDE0MDlfc3RhdGUgKnN0YXRlID0gZmUtPmRlbW9kdWxhdG9yX3ByaXY7CiAKIAlwLT5mcmVxdWVuY3kgPSBzdGF0ZS0+Y3VycmVudF9mcmVxdWVuY3k7CiAJcC0+dS52c2IubW9kdWxhdGlvbiA9IHN0YXRlLT5jdXJyZW50X21vZHVsYXRpb247CkBAIC03NjgsMjUgKzc3MywyNSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHM1aDE0MDlfZ2V0X3R1bmVfc2V0dGluZ3Moc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsCitzdGF0aWMgaW50IHM1aDE0MDlfZ2V0X3R1bmVfc2V0dGluZ3Moc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsCiAJCQkJICAgICBzdHJ1Y3QgZHZiX2Zyb250ZW5kX3R1bmVfc2V0dGluZ3MgKnR1bmUpCiB7CiAJdHVuZS0+bWluX2RlbGF5X21zID0gMTAwMDsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgczVoMTQwOV9yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlKQorc3RhdGljIHZvaWQgczVoMTQwOV9yZWxlYXNlKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogewotCXN0cnVjdCBzNWgxNDA5X3N0YXRlKiBzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OworCXN0cnVjdCBzNWgxNDA5X3N0YXRlICpzdGF0ZSA9IGZlLT5kZW1vZHVsYXRvcl9wcml2OwogCWtmcmVlKHN0YXRlKTsKIH0KIAogc3RhdGljIHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHM1aDE0MDlfb3BzOwogCi1zdHJ1Y3QgZHZiX2Zyb250ZW5kKiBzNWgxNDA5X2F0dGFjaChjb25zdCBzdHJ1Y3QgczVoMTQwOV9jb25maWcqIGNvbmZpZywKLQkJCQkgICAgc3RydWN0IGkyY19hZGFwdGVyKiBpMmMpCitzdHJ1Y3QgZHZiX2Zyb250ZW5kICpzNWgxNDA5X2F0dGFjaChjb25zdCBzdHJ1Y3QgczVoMTQwOV9jb25maWcgKmNvbmZpZywKKwkJCQkgICAgc3RydWN0IGkyY19hZGFwdGVyICppMmMpCiB7Ci0Jc3RydWN0IHM1aDE0MDlfc3RhdGUqIHN0YXRlID0gTlVMTDsKKwlzdHJ1Y3QgczVoMTQwOV9zdGF0ZSAqc3RhdGUgPSBOVUxMOwogCXUxNiByZWc7CiAKIAkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpbnRlcm5hbCBzdGF0ZSAqLwpAQCAtODI1LDYgKzgzMCw3IEBACiAJa2ZyZWUoc3RhdGUpOwogCXJldHVybiBOVUxMOwogfQorRVhQT1JUX1NZTUJPTChzNWgxNDA5X2F0dGFjaCk7CiAKIHN0YXRpYyBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyBzNWgxNDA5X29wcyA9IHsKIApAQCAtODUwLDE0ICs4NTYsMTAgQEAKIAkucmVsZWFzZSAgICAgICAgICAgICAgPSBzNWgxNDA5X3JlbGVhc2UsCiB9OwogCi1tb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRW5hYmxlIHZlcmJvc2UgZGVidWcgbWVzc2FnZXMiKTsKLQogTU9EVUxFX0RFU0NSSVBUSU9OKCJTYW1zdW5nIFM1SDE0MDkgUUFNLUIvQVRTQyBEZW1vZHVsYXRvciBkcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlbiBUb3RoIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLUVYUE9SVF9TWU1CT0woczVoMTQwOV9hdHRhY2gpOwogCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MDkuaCBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDA5LmgKaW5kZXggZDFhMWQyZS4uMDcwZDk3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MDkuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQwOS5oCkBAIC0yNCw4ICsyNCw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9kdmIvZnJvbnRlbmQuaD4KIAotc3RydWN0IHM1aDE0MDlfY29uZmlnCi17CitzdHJ1Y3QgczVoMTQwOV9jb25maWcgewogCS8qIHRoZSBkZW1vZHVsYXRvcidzIGkyYyBhZGRyZXNzICovCiAJdTggZGVtb2RfYWRkcmVzczsKIApAQCAtNjAsMTIgKzU5LDE0IEBACiAJdTE2IG1wZWdfdGltaW5nOwogfTsKIAotI2lmIGRlZmluZWQoQ09ORklHX0RWQl9TNUgxNDA5KSB8fCAoZGVmaW5lZChDT05GSUdfRFZCX1M1SDE0MDlfTU9EVUxFKSAmJiBkZWZpbmVkKE1PRFVMRSkpCi1leHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCogczVoMTQwOV9hdHRhY2goY29uc3Qgc3RydWN0IHM1aDE0MDlfY29uZmlnKiBjb25maWcsCi0JCQkJCSAgIHN0cnVjdCBpMmNfYWRhcHRlciogaTJjKTsKKyNpZiBkZWZpbmVkKENPTkZJR19EVkJfUzVIMTQwOSkgfHwgKGRlZmluZWQoQ09ORklHX0RWQl9TNUgxNDA5X01PRFVMRSkgXAorCSYmIGRlZmluZWQoTU9EVUxFKSkKK2V4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kICpzNWgxNDA5X2F0dGFjaChjb25zdCBzdHJ1Y3QgczVoMTQwOV9jb25maWcgKmNvbmZpZywKKwkJCQkJICAgc3RydWN0IGkyY19hZGFwdGVyICppMmMpOwogI2Vsc2UKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGR2Yl9mcm9udGVuZCogczVoMTQwOV9hdHRhY2goY29uc3Qgc3RydWN0IHM1aDE0MDlfY29uZmlnKiBjb25maWcsCi0JCQkJCQkgIHN0cnVjdCBpMmNfYWRhcHRlciogaTJjKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgZHZiX2Zyb250ZW5kICpzNWgxNDA5X2F0dGFjaCgKKwljb25zdCBzdHJ1Y3QgczVoMTQwOV9jb25maWcgKmNvbmZpZywKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYykKIHsKIAlwcmludGsoS0VSTl9XQVJOSU5HICIlczogZHJpdmVyIGRpc2FibGVkIGJ5IEtjb25maWdcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDExLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQxMS5jCmluZGV4IDJkYTFhMzcuLjJmZWJmYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDExLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MTEuYwpAQCAtMzQzLDcgKzM0Myw3IEBACiAJdTggYWRkciwgdTggcmVnLCB1MTYgZGF0YSkKIHsKIAlpbnQgcmV0OwotCXU4IGJ1ZiBbXSA9IHsgcmVnLCBkYXRhID4+IDgsICBkYXRhICYgMHhmZiB9OworCXU4IGJ1ZltdID0geyByZWcsIGRhdGEgPj4gOCwgIGRhdGEgJiAweGZmIH07CiAKIAlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7IC5hZGRyID0gYWRkciwgLmZsYWdzID0gMCwgLmJ1ZiA9IGJ1ZiwgLmxlbiA9IDMgfTsKIApAQCAtMzU5LDEwICszNTksMTAgQEAKIHN0YXRpYyB1MTYgczVoMTQxMV9yZWFkcmVnKHN0cnVjdCBzNWgxNDExX3N0YXRlICpzdGF0ZSwgdTggYWRkciwgdTggcmVnKQogewogCWludCByZXQ7Ci0JdTggYjAgW10gPSB7IHJlZyB9OwotCXU4IGIxIFtdID0geyAwLCAwIH07CisJdTggYjBbXSA9IHsgcmVnIH07CisJdTggYjFbXSA9IHsgMCwgMCB9OwogCi0Jc3RydWN0IGkyY19tc2cgbXNnIFtdID0geworCXN0cnVjdCBpMmNfbXNnIG1zZ1tdID0gewogCQl7IC5hZGRyID0gYWRkciwgLmZsYWdzID0gMCwgLmJ1ZiA9IGIwLCAubGVuID0gMSB9LAogCQl7IC5hZGRyID0gYWRkciwgLmZsYWdzID0gSTJDX01fUkQsIC5idWYgPSBiMSwgLmxlbiA9IDIgfSB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvdGRhMTAwNDguYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy90ZGExMDA0OC5jCmluZGV4IDA0ZTdmMWMuLjJhOGJiY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy90ZGExMDA0OC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy90ZGExMDA0OC5jCkBAIC0xOTUsNyArMTk1LDcgQEAKIHN0YXRpYyBpbnQgdGRhMTAwNDhfd3JpdGVyZWcoc3RydWN0IHRkYTEwMDQ4X3N0YXRlICpzdGF0ZSwgdTggcmVnLCB1OCBkYXRhKQogewogCWludCByZXQ7Ci0JdTggYnVmIFtdID0geyByZWcsIGRhdGEgfTsKKwl1OCBidWZbXSA9IHsgcmVnLCBkYXRhIH07CiAJc3RydWN0IGkyY19tc2cgbXNnID0gewogCQkuYWRkciA9IHN0YXRlLT5jb25maWctPmRlbW9kX2FkZHJlc3MsCiAJCS5mbGFncyA9IDAsIC5idWYgPSBidWYsIC5sZW4gPSAyIH07CkBAIC0yMTMsOSArMjEzLDkgQEAKIHN0YXRpYyB1OCB0ZGExMDA0OF9yZWFkcmVnKHN0cnVjdCB0ZGExMDA0OF9zdGF0ZSAqc3RhdGUsIHU4IHJlZykKIHsKIAlpbnQgcmV0OwotCXU4IGIwIFtdID0geyByZWcgfTsKLQl1OCBiMSBbXSA9IHsgMCB9OwotCXN0cnVjdCBpMmNfbXNnIG1zZyBbXSA9IHsKKwl1OCBiMFtdID0geyByZWcgfTsKKwl1OCBiMVtdID0geyAwIH07CisJc3RydWN0IGkyY19tc2cgbXNnW10gPSB7CiAJCXsgLmFkZHIgPSBzdGF0ZS0+Y29uZmlnLT5kZW1vZF9hZGRyZXNzLAogCQkJLmZsYWdzID0gMCwgLmJ1ZiA9IGIwLCAubGVuID0gMSB9LAogCQl7IC5hZGRyID0gc3RhdGUtPmNvbmZpZy0+ZGVtb2RfYWRkcmVzcywKQEAgLTM5Myw0MyArMzkzLDg5IEBACiAKIAl2YWwgPSB0ZGExMDA0OF9yZWFkcmVnKHN0YXRlLCBUREExMDA0OF9PVVRfQ09ORjIpOwogCXN3aXRjaCAoKHZhbCAmIDB4NjApID4+IDUpIHsKLQljYXNlIDA6IHAtPmNvbnN0ZWxsYXRpb24gPSAgIFFQU0s7IGJyZWFrOwotCWNhc2UgMTogcC0+Y29uc3RlbGxhdGlvbiA9IFFBTV8xNjsgYnJlYWs7Ci0JY2FzZSAyOiBwLT5jb25zdGVsbGF0aW9uID0gUUFNXzY0OyBicmVhazsKKwljYXNlIDA6CisJCXAtPmNvbnN0ZWxsYXRpb24gPSBRUFNLOworCQlicmVhazsKKwljYXNlIDE6CisJCXAtPmNvbnN0ZWxsYXRpb24gPSBRQU1fMTY7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJcC0+Y29uc3RlbGxhdGlvbiA9IFFBTV82NDsKKwkJYnJlYWs7CiAJfQogCXN3aXRjaCAoKHZhbCAmIDB4MTgpID4+IDMpIHsKLQljYXNlIDA6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV9OT05FOyBicmVhazsKLQljYXNlIDE6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9ICAgIEhJRVJBUkNIWV8xOyBicmVhazsKLQljYXNlIDI6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9ICAgIEhJRVJBUkNIWV8yOyBicmVhazsKLQljYXNlIDM6IHAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9ICAgIEhJRVJBUkNIWV80OyBicmVhazsKKwljYXNlIDA6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV9OT05FOworCQlicmVhazsKKwljYXNlIDE6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV8xOworCQlicmVhazsKKwljYXNlIDI6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV8yOworCQlicmVhazsKKwljYXNlIDM6CisJCXAtPmhpZXJhcmNoeV9pbmZvcm1hdGlvbiA9IEhJRVJBUkNIWV80OworCQlicmVhazsKIAl9CiAJc3dpdGNoICh2YWwgJiAweDA3KSB7Ci0JY2FzZSAwOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfMV8yOyBicmVhazsKLQljYXNlIDE6IHAtPmNvZGVfcmF0ZV9IUCA9IEZFQ18yXzM7IGJyZWFrOwotCWNhc2UgMjogcC0+Y29kZV9yYXRlX0hQID0gRkVDXzNfNDsgYnJlYWs7Ci0JY2FzZSAzOiBwLT5jb2RlX3JhdGVfSFAgPSBGRUNfNV82OyBicmVhazsKLQljYXNlIDQ6IHAtPmNvZGVfcmF0ZV9IUCA9IEZFQ183Xzg7IGJyZWFrOworCWNhc2UgMDoKKwkJcC0+Y29kZV9yYXRlX0hQID0gRkVDXzFfMjsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlwLT5jb2RlX3JhdGVfSFAgPSBGRUNfMl8zOworCQlicmVhazsKKwljYXNlIDI6CisJCXAtPmNvZGVfcmF0ZV9IUCA9IEZFQ18zXzQ7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJcC0+Y29kZV9yYXRlX0hQID0gRkVDXzVfNjsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlwLT5jb2RlX3JhdGVfSFAgPSBGRUNfN184OworCQlicmVhazsKIAl9CiAKIAl2YWwgPSB0ZGExMDA0OF9yZWFkcmVnKHN0YXRlLCBUREExMDA0OF9PVVRfQ09ORjMpOwogCXN3aXRjaCAodmFsICYgMHgwNykgewotCWNhc2UgMDogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzFfMjsgYnJlYWs7Ci0JY2FzZSAxOiBwLT5jb2RlX3JhdGVfTFAgPSBGRUNfMl8zOyBicmVhazsKLQljYXNlIDI6IHAtPmNvZGVfcmF0ZV9MUCA9IEZFQ18zXzQ7IGJyZWFrOwotCWNhc2UgMzogcC0+Y29kZV9yYXRlX0xQID0gRkVDXzVfNjsgYnJlYWs7Ci0JY2FzZSA0OiBwLT5jb2RlX3JhdGVfTFAgPSBGRUNfN184OyBicmVhazsKKwljYXNlIDA6CisJCXAtPmNvZGVfcmF0ZV9MUCA9IEZFQ18xXzI7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcC0+Y29kZV9yYXRlX0xQID0gRkVDXzJfMzsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlwLT5jb2RlX3JhdGVfTFAgPSBGRUNfM180OworCQlicmVhazsKKwljYXNlIDM6CisJCXAtPmNvZGVfcmF0ZV9MUCA9IEZFQ181XzY7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJcC0+Y29kZV9yYXRlX0xQID0gRkVDXzdfODsKKwkJYnJlYWs7CiAJfQogCiAJdmFsID0gdGRhMTAwNDhfcmVhZHJlZyhzdGF0ZSwgVERBMTAwNDhfT1VUX0NPTkYxKTsKIAlzd2l0Y2ggKCh2YWwgJiAweDBjKSA+PiAyKSB7Ci0JY2FzZSAwOiBwLT5ndWFyZF9pbnRlcnZhbCA9IEdVQVJEX0lOVEVSVkFMXzFfMzI7IGJyZWFrOwotCWNhc2UgMTogcC0+Z3VhcmRfaW50ZXJ2YWwgPSBHVUFSRF9JTlRFUlZBTF8xXzE2OyBicmVhazsKLQljYXNlIDI6IHAtPmd1YXJkX2ludGVydmFsID0gIEdVQVJEX0lOVEVSVkFMXzFfODsgYnJlYWs7Ci0JY2FzZSAzOiBwLT5ndWFyZF9pbnRlcnZhbCA9ICBHVUFSRF9JTlRFUlZBTF8xXzQ7IGJyZWFrOworCWNhc2UgMDoKKwkJcC0+Z3VhcmRfaW50ZXJ2YWwgPSBHVUFSRF9JTlRFUlZBTF8xXzMyOworCQlicmVhazsKKwljYXNlIDE6CisJCXAtPmd1YXJkX2ludGVydmFsID0gR1VBUkRfSU5URVJWQUxfMV8xNjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlwLT5ndWFyZF9pbnRlcnZhbCA9ICBHVUFSRF9JTlRFUlZBTF8xXzg7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJcC0+Z3VhcmRfaW50ZXJ2YWwgPSAgR1VBUkRfSU5URVJWQUxfMV80OworCQlicmVhazsKIAl9CiAJc3dpdGNoICh2YWwgJiAweDAyKSB7Ci0JY2FzZSAwOiBwLT50cmFuc21pc3Npb25fbW9kZSA9IFRSQU5TTUlTU0lPTl9NT0RFXzJLOyBicmVhazsKLQljYXNlIDE6IHAtPnRyYW5zbWlzc2lvbl9tb2RlID0gVFJBTlNNSVNTSU9OX01PREVfOEs7IGJyZWFrOworCWNhc2UgMDoKKwkJcC0+dHJhbnNtaXNzaW9uX21vZGUgPSBUUkFOU01JU1NJT05fTU9ERV8ySzsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlwLT50cmFuc21pc3Npb25fbW9kZSA9IFRSQU5TTUlTU0lPTl9NT0RFXzhLOworCQlicmVhazsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy96MDE5NGEuaCBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy96MDE5NGEuaAppbmRleCBkMjg3NmQyLi4wN2YzZmMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvejAxOTRhLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3owMTk0YS5oCkBAIC0xMiw3ICsxMiw3IEBACiAjaWZuZGVmIFowMTk0QQogI2RlZmluZSBaMDE5NEEKIAotc3RhdGljIGludCBzaGFycF96MDE5NGFfX3NldF9zeW1ib2xfcmF0ZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKK3N0YXRpYyBpbnQgc2hhcnBfejAxOTRhX3NldF9zeW1ib2xfcmF0ZShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKIAkJCQkJIHUzMiBzcmF0ZSwgdTMyIHJhdGlvKQogewogCXU4IGFjbGsgPSAwOwpAQCAtNDAsNyArNDAsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTggc2hhcnBfejAxOTRhX19pbml0dGFiW10gPSB7CitzdGF0aWMgdTggc2hhcnBfejAxOTRhX2luaXR0YWJbXSA9IHsKIAkweDAxLCAweDE1LAogCTB4MDIsIDB4MDAsCiAJMHgwMywgMHgwMCwKQEAgLTgyLDE2ICs4Miw0IEBACiAJMHhmZiwgMHhmZgogfTsKIAotc3RhdGljIHN0cnVjdCBzdHYwMjk5X2NvbmZpZyBzaGFycF96MDE5NGFfY29uZmlnID0gewotCS5kZW1vZF9hZGRyZXNzID0gMHg2OCwKLQkuaW5pdHRhYiA9IHNoYXJwX3owMTk0YV9faW5pdHRhYiwKLQkubWNsayA9IDg4MDAwMDAwVUwsCi0JLmludmVydCA9IDEsCi0JLnNraXBfcmVpbml0ID0gMCwKLQkubG9ja19vdXRwdXQgPSBTVFYwMjk5X0xPQ0tPVVRQVVRfMSwKLQkudm9sdDEzX29wMF9vcDEgPSBTVFYwMjk5X1ZPTFQxM19PUDEsCi0JLm1pbl9kZWxheV9tcyA9IDEwMCwKLQkuc2V0X3N5bWJvbF9yYXRlID0gc2hhcnBfejAxOTRhX19zZXRfc3ltYm9sX3JhdGUsCi19OwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntcy1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zLWNhcmRzLmMKaW5kZXggOWRhMjYwZi4uNmY5Yjc3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zLWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zLWNhcmRzLmMKQEAgLTQyLDYgKzQyLDEwIEBACiAJCS5kcml2ZXJfaW5mbyA9IFNNUzFYWFhfQk9BUkRfSEFVUFBBVUdFX1dJTkRIQU0gfSwKIAl7IFVTQl9ERVZJQ0UoMHgyMDQwLCAweDU1MTApLAogCQkuZHJpdmVyX2luZm8gPSBTTVMxWFhYX0JPQVJEX0hBVVBQQVVHRV9XSU5ESEFNIH0sCisJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg1NTIwKSwKKwkJLmRyaXZlcl9pbmZvID0gU01TMVhYWF9CT0FSRF9IQVVQUEFVR0VfV0lOREhBTSB9LAorCXsgVVNCX0RFVklDRSgweDIwNDAsIDB4NTUzMCksCisJCS5kcml2ZXJfaW5mbyA9IFNNUzFYWFhfQk9BUkRfSEFVUFBBVUdFX1dJTkRIQU0gfSwKIAl7IFVTQl9ERVZJQ0UoMHgyMDQwLCAweDU1ODApLAogCQkuZHJpdmVyX2luZm8gPSBTTVMxWFhYX0JPQVJEX0hBVVBQQVVHRV9XSU5ESEFNIH0sCiAJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg1NTkwKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZwppbmRleCBlNTFkNzA3Li4wNGNkN2MwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnCkBAIC0zNTksNyArMzU5LDcgQEAKIAkgIGNvbXB1dGVyJ3MgVVNCIHBvcnQuCiAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQotCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHJhZGlvLXNpbGFicy4KKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby1zaTQ3MHguCiAKIGNvbmZpZyBVU0JfTVI4MDAKIAl0cmlzdGF0ZSAiQXZlck1lZGlhIE1SIDgwMCBVU0IgRk0gcmFkaW8gc3VwcG9ydCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vZHNicjEwMC5jIGIvZHJpdmVycy9tZWRpYS9yYWRpby9kc2JyMTAwLmMKaW5kZXggNjY3ODNmZi4uNzhmNTY5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9kc2JyMTAwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby9kc2JyMTAwLmMKQEAgLTMxMCw3ICszMTAsNyBAQAogCiAJcmFkaW8tPmN1cmZyZXEgPSBmLT5mcmVxdWVuY3k7CiAJaWYgKGRzYnIxMDBfc2V0ZnJlcShyYWRpbywgcmFkaW8tPmN1cmZyZXEpPT0tMSkKLQkJd2FybigiU2V0IGZyZXF1ZW5jeSBmYWlsZWQiKTsKKwkJZGV2X3dhcm4oJnJhZGlvLT51c2JkZXYtPmRldiwgIlNldCBmcmVxdWVuY3kgZmFpbGVkXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzYxLDEyICszNjEsMTQgQEAKIAljYXNlIFY0TDJfQ0lEX0FVRElPX01VVEU6CiAJCWlmIChjdHJsLT52YWx1ZSkgewogCQkJaWYgKGRzYnIxMDBfc3RvcChyYWRpbykgPT0gLTEpIHsKLQkJCQl3YXJuKCJSYWRpbyBkaWQgbm90IHJlc3BvbmQgcHJvcGVybHkiKTsKKwkJCQlkZXZfd2FybigmcmFkaW8tPnVzYmRldi0+ZGV2LAorCQkJCQkgIlJhZGlvIGRpZCBub3QgcmVzcG9uZCBwcm9wZXJseVxuIik7CiAJCQkJcmV0dXJuIC1FQlVTWTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlmIChkc2JyMTAwX3N0YXJ0KHJhZGlvKSA9PSAtMSkgewotCQkJCXdhcm4oIlJhZGlvIGRpZCBub3QgcmVzcG9uZCBwcm9wZXJseSIpOworCQkJCWRldl93YXJuKCZyYWRpby0+dXNiZGV2LT5kZXYsCisJCQkJCSAiUmFkaW8gZGlkIG5vdCByZXNwb25kIHByb3Blcmx5XG4iKTsKIAkJCQlyZXR1cm4gLUVCVVNZOwogCQkJfQogCQl9CkBAIC00MTYsNyArNDE4LDggQEAKIAlyYWRpby0+bXV0ZWQgPSAxOwogCiAJaWYgKGRzYnIxMDBfc3RhcnQocmFkaW8pPDApIHsKLQkJd2FybigiUmFkaW8gZGlkIG5vdCBzdGFydCB1cCBwcm9wZXJseSIpOworCQlkZXZfd2FybigmcmFkaW8tPnVzYmRldi0+ZGV2LAorCQkJICJSYWRpbyBkaWQgbm90IHN0YXJ0IHVwIHByb3Blcmx5XG4iKTsKIAkJcmFkaW8tPnVzZXJzID0gMDsKIAkJdW5sb2NrX2tlcm5lbCgpOwogCQlyZXR1cm4gLUVJTzsKQEAgLTUwMSw3ICs1MDQsNyBAQAogCXJhZGlvLT5jdXJmcmVxID0gRlJFUV9NSU4qRlJFUV9NVUw7CiAJdmlkZW9fc2V0X2RydmRhdGEocmFkaW8tPnZpZGVvZGV2LCByYWRpbyk7CiAJaWYgKHZpZGVvX3JlZ2lzdGVyX2RldmljZShyYWRpby0+dmlkZW9kZXYsIFZGTF9UWVBFX1JBRElPLCByYWRpb19ucikgPCAwKSB7Ci0JCXdhcm4oIkNvdWxkIG5vdCByZWdpc3RlciB2aWRlbyBkZXZpY2UiKTsKKwkJZGV2X3dhcm4oJmludGYtPmRldiwgIkNvdWxkIG5vdCByZWdpc3RlciB2aWRlbyBkZXZpY2VcbiIpOwogCQl2aWRlb19kZXZpY2VfcmVsZWFzZShyYWRpby0+dmlkZW9kZXYpOwogCQlrZnJlZShyYWRpby0+dHJhbnNmZXJfYnVmZmVyKTsKIAkJa2ZyZWUocmFkaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1zaTQ3MHguYyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tc2k0NzB4LmMKaW5kZXggZjZjZWRjZC4uNTkyMGNkMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tc2k0NzB4LmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1zaTQ3MHguYwpAQCAtMTA0LDYgKzEwNCw3IEBACiAgKgkJLSBoYXJkd2FyZSBmcmVxdWVuY3kgc2VlayBzdXBwb3J0CiAgKgkJLSBhZmMgaW5kaWNhdGlvbgogICoJCS0gbW9yZSBzYWZldHkgY2hlY2tzLCBsZXQgc2k0NzB4X2dldF9mcmVxIHJldHVybiBlcnJubworICoJCS0gdmlkaW9jIGJlaGF2aW9yIGNvcnJlY3RlZCBhY2NvcmRpbmcgdG8gdjRsMiBzcGVjCiAgKgogICogVG9EbzoKICAqIC0gYWRkIGZpcm13YXJlIGRvd25sb2FkL3VwZGF0ZSBzdXBwb3J0CkBAIC0xNDEsOSArMTQyLDkgQEAKIC8qIFVTQiBEZXZpY2UgSUQgTGlzdCAqLwogc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIHNpNDcweF91c2JfZHJpdmVyX2lkX3RhYmxlW10gPSB7CiAJLyogU2lsaWNvbiBMYWJzIFVTQiBGTSBSYWRpbyBSZWZlcmVuY2UgRGVzaWduICovCi0JeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDEwYzQsIDB4ODE4YSwJVVNCX0NMQVNTX0hJRCwgMCwgMCkgfSwKKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTBjNCwgMHg4MThhLCBVU0JfQ0xBU1NfSElELCAwLCAwKSB9LAogCS8qIEFEUy9UZWNoIEZNIFJhZGlvIFJlY2VpdmVyIChmb3JtZXJseSBJbnN0YW50IEZNIE11c2ljKSAqLwotCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwNmUxLCAweGExNTUsCVVTQl9DTEFTU19ISUQsIDAsIDApIH0sCisJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA2ZTEsIDB4YTE1NSwgVVNCX0NMQVNTX0hJRCwgMCwgMCkgfSwKIAkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLwogCXsgfQogfTsKQEAgLTE1Nyw3ICsxNTgsNyBAQAogCiAvKiBSYWRpbyBOciAqLwogc3RhdGljIGludCByYWRpb19uciA9IC0xOwotbW9kdWxlX3BhcmFtKHJhZGlvX25yLCBpbnQsIDApOworbW9kdWxlX3BhcmFtKHJhZGlvX25yLCBpbnQsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhyYWRpb19uciwgIlJhZGlvIE5yIik7CiAKIC8qIFNwYWNpbmcgKGtIeikgKi8KQEAgLTE2NSw0MiArMTY2LDQyIEBACiAvKiAxOiAxMDAga0h6IChFdXJvcGUsIEphcGFuKSAqLwogLyogMjogIDUwIGtIeiAqLwogc3RhdGljIHVuc2lnbmVkIHNob3J0IHNwYWNlID0gMjsKLW1vZHVsZV9wYXJhbShzcGFjZSwgdXNob3J0LCAwKTsKLU1PRFVMRV9QQVJNX0RFU0MocmFkaW9fbnIsICJTcGFjaW5nOiAwPTIwMGtIeiAxPTEwMGtIeiAqMj01MGtIeioiKTsKK21vZHVsZV9wYXJhbShzcGFjZSwgdXNob3J0LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0Moc3BhY2UsICJTcGFjaW5nOiAwPTIwMGtIeiAxPTEwMGtIeiAqMj01MGtIeioiKTsKIAogLyogQm90dG9tIG9mIEJhbmQgKE1IeikgKi8KIC8qIDA6IDg3LjUgLSAxMDggTUh6IChVU0EsIEV1cm9wZSkqLwogLyogMTogNzYgICAtIDEwOCBNSHogKEphcGFuIHdpZGUgYmFuZCkgKi8KIC8qIDI6IDc2ICAgLSAgOTAgTUh6IChKYXBhbikgKi8KIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBiYW5kID0gMTsKLW1vZHVsZV9wYXJhbShiYW5kLCB1c2hvcnQsIDApOwotTU9EVUxFX1BBUk1fREVTQyhyYWRpb19uciwgIkJhbmQ6IDA9ODcuNS4uMTA4TUh6ICoxPTc2Li4xMDhNSHoqIDI9NzYuLjkwTUh6Iik7Cittb2R1bGVfcGFyYW0oYmFuZCwgdXNob3J0LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoYmFuZCwgIkJhbmQ6IDA9ODcuNS4uMTA4TUh6ICoxPTc2Li4xMDhNSHoqIDI9NzYuLjkwTUh6Iik7CiAKIC8qIERlLWVtcGhhc2lzICovCiAvKiAwOiA3NSB1cyAoVVNBKSAqLwogLyogMTogNTAgdXMgKEV1cm9wZSwgQXVzdHJhbGlhLCBKYXBhbikgKi8KIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkZSA9IDE7Ci1tb2R1bGVfcGFyYW0oZGUsIHVzaG9ydCwgMCk7Ci1NT0RVTEVfUEFSTV9ERVNDKHJhZGlvX25yLCAiRGUtZW1waGFzaXM6IDA9NzV1cyAqMT01MHVzKiIpOworbW9kdWxlX3BhcmFtKGRlLCB1c2hvcnQsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhkZSwgIkRlLWVtcGhhc2lzOiAwPTc1dXMgKjE9NTB1cyoiKTsKIAogLyogVVNCIHRpbWVvdXQgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgdXNiX3RpbWVvdXQgPSA1MDA7Ci1tb2R1bGVfcGFyYW0odXNiX3RpbWVvdXQsIHVpbnQsIDApOworbW9kdWxlX3BhcmFtKHVzYl90aW1lb3V0LCB1aW50LCAwNjQ0KTsKIE1PRFVMRV9QQVJNX0RFU0ModXNiX3RpbWVvdXQsICJVU0IgdGltZW91dCAobXMpOiAqNTAwKiIpOwogCiAvKiBUdW5lIHRpbWVvdXQgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgdHVuZV90aW1lb3V0ID0gMzAwMDsKLW1vZHVsZV9wYXJhbSh0dW5lX3RpbWVvdXQsIHVpbnQsIDApOworbW9kdWxlX3BhcmFtKHR1bmVfdGltZW91dCwgdWludCwgMDY0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKHR1bmVfdGltZW91dCwgIlR1bmUgdGltZW91dDogKjMwMDAqIik7CiAKIC8qIFNlZWsgdGltZW91dCAqLwogc3RhdGljIHVuc2lnbmVkIGludCBzZWVrX3RpbWVvdXQgPSA1MDAwOwotbW9kdWxlX3BhcmFtKHNlZWtfdGltZW91dCwgdWludCwgMCk7Cittb2R1bGVfcGFyYW0oc2Vla190aW1lb3V0LCB1aW50LCAwNjQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moc2Vla190aW1lb3V0LCAiU2VlayB0aW1lb3V0OiAqNTAwMCoiKTsKIAogLyogUkRTIGJ1ZmZlciBibG9ja3MgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgcmRzX2J1ZiA9IDEwMDsKLW1vZHVsZV9wYXJhbShyZHNfYnVmLCB1aW50LCAwKTsKK21vZHVsZV9wYXJhbShyZHNfYnVmLCB1aW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MocmRzX2J1ZiwgIlJEUyBidWZmZXIgZW50cmllczogKjEwMCoiKTsKIAogLyogUkRTIG1heGltdW0gYmxvY2sgZXJyb3JzICovCkBAIC0yMDksNyArMjEwLDcgQEAKIC8qIDEgbWVhbnMgMS0yICBlcnJvcnMgcmVxdWlyaW5nIGNvcnJlY3Rpb24gKHVzZWQgYnkgb3JpZ2luYWwgVVNCUmFkaW8uZXhlKSAqLwogLyogMiBtZWFucyAzLTUgIGVycm9ycyByZXF1aXJpbmcgY29ycmVjdGlvbiAqLwogLyogMyBtZWFucyAgIDYrIGVycm9ycyBvciBlcnJvcnMgaW4gY2hlY2t3b3JkLCBjb3JyZWN0aW9uIG5vdCBwb3NzaWJsZSAqLwotbW9kdWxlX3BhcmFtKG1heF9yZHNfZXJyb3JzLCB1c2hvcnQsIDApOworbW9kdWxlX3BhcmFtKG1heF9yZHNfZXJyb3JzLCB1c2hvcnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhtYXhfcmRzX2Vycm9ycywgIlJEUyBtYXhpbXVtIGJsb2NrIGVycm9yczogKjEqIik7CiAKIC8qIFJEUyBwb2xsIGZyZXF1ZW5jeSAqLwpAQCAtMjE4LDcgKzIxOSw3IEBACiAvKiA1MCBpcyB1c2VkIGJ5IHJhZGlvLWNhZGV0ICovCiAvKiA3NSBzaG91bGQgYmUgb2theSAqLwogLyogODAgaXMgdGhlIHVzdWFsIFJEUyByZWNlaXZlIGludGVydmFsICovCi1tb2R1bGVfcGFyYW0ocmRzX3BvbGxfdGltZSwgdWludCwgMCk7Cittb2R1bGVfcGFyYW0ocmRzX3BvbGxfdGltZSwgdWludCwgMDY0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKHJkc19wb2xsX3RpbWUsICJSRFMgcG9sbCB0aW1lIChtcyk6ICo0MCoiKTsKIAogCkBAIC02NjcsMjMgKzY2OCwyOSBAQAogCWludCByZXR2YWw7CiAKIAkvKiBTcGFjaW5nIChrSHopICovCi0Jc3dpdGNoIChzcGFjZSkgeworCXN3aXRjaCAoKHJhZGlvLT5yZWdpc3RlcnNbU1lTQ09ORklHMl0gJiBTWVNDT05GSUcyX1NQQUNFKSA+PiA0KSB7CiAJLyogMDogMjAwIGtIeiAoVVNBLCBBdXN0cmFsaWEpICovCi0JY2FzZSAwIDogc3BhY2luZyA9IDAuMjAwICogRlJFUV9NVUw7IGJyZWFrOworCWNhc2UgMDoKKwkJc3BhY2luZyA9IDAuMjAwICogRlJFUV9NVUw7IGJyZWFrOwogCS8qIDE6IDEwMCBrSHogKEV1cm9wZSwgSmFwYW4pICovCi0JY2FzZSAxIDogc3BhY2luZyA9IDAuMTAwICogRlJFUV9NVUw7IGJyZWFrOworCWNhc2UgMToKKwkJc3BhY2luZyA9IDAuMTAwICogRlJFUV9NVUw7IGJyZWFrOwogCS8qIDI6ICA1MCBrSHogKi8KLQlkZWZhdWx0OiBzcGFjaW5nID0gMC4wNTAgKiBGUkVRX01VTDsgYnJlYWs7CisJZGVmYXVsdDoKKwkJc3BhY2luZyA9IDAuMDUwICogRlJFUV9NVUw7IGJyZWFrOwogCX07CiAKIAkvKiBCb3R0b20gb2YgQmFuZCAoTUh6KSAqLwotCXN3aXRjaCAoYmFuZCkgeworCXN3aXRjaCAoKHJhZGlvLT5yZWdpc3RlcnNbU1lTQ09ORklHMl0gJiBTWVNDT05GSUcyX0JBTkQpID4+IDYpIHsKIAkvKiAwOiA4Ny41IC0gMTA4IE1IeiAoVVNBLCBFdXJvcGUpICovCi0JY2FzZSAwIDogYmFuZF9ib3R0b20gPSA4Ny41ICogRlJFUV9NVUw7IGJyZWFrOworCWNhc2UgMDoKKwkJYmFuZF9ib3R0b20gPSA4Ny41ICogRlJFUV9NVUw7IGJyZWFrOwogCS8qIDE6IDc2ICAgLSAxMDggTUh6IChKYXBhbiB3aWRlIGJhbmQpICovCi0JZGVmYXVsdDogYmFuZF9ib3R0b20gPSA3NiAgICogRlJFUV9NVUw7IGJyZWFrOworCWRlZmF1bHQ6CisJCWJhbmRfYm90dG9tID0gNzYgICAqIEZSRVFfTVVMOyBicmVhazsKIAkvKiAyOiA3NiAgIC0gIDkwIE1IeiAoSmFwYW4pICovCi0JY2FzZSAyIDogYmFuZF9ib3R0b20gPSA3NiAgICogRlJFUV9NVUw7IGJyZWFrOworCWNhc2UgMjoKKwkJYmFuZF9ib3R0b20gPSA3NiAgICogRlJFUV9NVUw7IGJyZWFrOwogCX07CiAKIAkvKiByZWFkIGNoYW5uZWwgKi8KQEAgLTcwNiwyMyArNzEzLDI5IEBACiAJdW5zaWduZWQgc2hvcnQgY2hhbjsKIAogCS8qIFNwYWNpbmcgKGtIeikgKi8KLQlzd2l0Y2ggKHNwYWNlKSB7CisJc3dpdGNoICgocmFkaW8tPnJlZ2lzdGVyc1tTWVNDT05GSUcyXSAmIFNZU0NPTkZJRzJfU1BBQ0UpID4+IDQpIHsKIAkvKiAwOiAyMDAga0h6IChVU0EsIEF1c3RyYWxpYSkgKi8KLQljYXNlIDAgOiBzcGFjaW5nID0gMC4yMDAgKiBGUkVRX01VTDsgYnJlYWs7CisJY2FzZSAwOgorCQlzcGFjaW5nID0gMC4yMDAgKiBGUkVRX01VTDsgYnJlYWs7CiAJLyogMTogMTAwIGtIeiAoRXVyb3BlLCBKYXBhbikgKi8KLQljYXNlIDEgOiBzcGFjaW5nID0gMC4xMDAgKiBGUkVRX01VTDsgYnJlYWs7CisJY2FzZSAxOgorCQlzcGFjaW5nID0gMC4xMDAgKiBGUkVRX01VTDsgYnJlYWs7CiAJLyogMjogIDUwIGtIeiAqLwotCWRlZmF1bHQ6IHNwYWNpbmcgPSAwLjA1MCAqIEZSRVFfTVVMOyBicmVhazsKKwlkZWZhdWx0OgorCQlzcGFjaW5nID0gMC4wNTAgKiBGUkVRX01VTDsgYnJlYWs7CiAJfTsKIAogCS8qIEJvdHRvbSBvZiBCYW5kIChNSHopICovCi0Jc3dpdGNoIChiYW5kKSB7CisJc3dpdGNoICgocmFkaW8tPnJlZ2lzdGVyc1tTWVNDT05GSUcyXSAmIFNZU0NPTkZJRzJfQkFORCkgPj4gNikgewogCS8qIDA6IDg3LjUgLSAxMDggTUh6IChVU0EsIEV1cm9wZSkgKi8KLQljYXNlIDAgOiBiYW5kX2JvdHRvbSA9IDg3LjUgKiBGUkVRX01VTDsgYnJlYWs7CisJY2FzZSAwOgorCQliYW5kX2JvdHRvbSA9IDg3LjUgKiBGUkVRX01VTDsgYnJlYWs7CiAJLyogMTogNzYgICAtIDEwOCBNSHogKEphcGFuIHdpZGUgYmFuZCkgKi8KLQlkZWZhdWx0OiBiYW5kX2JvdHRvbSA9IDc2ICAgKiBGUkVRX01VTDsgYnJlYWs7CisJZGVmYXVsdDoKKwkJYmFuZF9ib3R0b20gPSA3NiAgICogRlJFUV9NVUw7IGJyZWFrOwogCS8qIDI6IDc2ICAgLSAgOTAgTUh6IChKYXBhbikgKi8KLQljYXNlIDIgOiBiYW5kX2JvdHRvbSA9IDc2ICAgKiBGUkVRX01VTDsgYnJlYWs7CisJY2FzZSAyOgorCQliYW5kX2JvdHRvbSA9IDc2ICAgKiBGUkVRX01VTDsgYnJlYWs7CiAJfTsKIAogCS8qIENoYW4gPSBbIEZyZXEgKE1oeikgLSBCb3R0b20gb2YgQmFuZCAoTUh6KSBdIC8gU3BhY2luZyAoa0h6KSAqLwpAQCAtMTE2NCw3ICsxMTc3LDYgQEAKICAqIHNpNDcweF92NGwyX3F1ZXJ5Y3RybCAtIHF1ZXJ5IGNvbnRyb2wKICAqLwogc3RhdGljIHN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCBzaTQ3MHhfdjRsMl9xdWVyeWN0cmxbXSA9IHsKLS8qIEhJTlQ6IHRoZSBkaXNhYmxlZCBjb250cm9scyBhcmUgb25seSBoZXJlIHRvIHNhdGlmeSBrcmFkaW8gYW5kIHN1Y2ggYXBwcyAqLwogCXsKIAkJLmlkCQk9IFY0TDJfQ0lEX0FVRElPX1ZPTFVNRSwKIAkJLnR5cGUJCT0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUiwKQEAgLTExNzUsMTggKzExODcsNiBAQAogCQkuZGVmYXVsdF92YWx1ZQk9IDE1LAogCX0sCiAJewotCQkuaWQJCT0gVjRMMl9DSURfQVVESU9fQkFMQU5DRSwKLQkJLmZsYWdzCQk9IFY0TDJfQ1RSTF9GTEFHX0RJU0FCTEVELAotCX0sCi0JewotCQkuaWQJCT0gVjRMMl9DSURfQVVESU9fQkFTUywKLQkJLmZsYWdzCQk9IFY0TDJfQ1RSTF9GTEFHX0RJU0FCTEVELAotCX0sCi0JewotCQkuaWQJCT0gVjRMMl9DSURfQVVESU9fVFJFQkxFLAotCQkuZmxhZ3MJCT0gVjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQsCi0JfSwKLQl7CiAJCS5pZAkJPSBWNEwyX0NJRF9BVURJT19NVVRFLAogCQkudHlwZQkJPSBWNEwyX0NUUkxfVFlQRV9CT09MRUFOLAogCQkubmFtZQkJPSAiTXV0ZSIsCkBAIC0xMTk1LDEwICsxMTk1LDYgQEAKIAkJLnN0ZXAJCT0gMSwKIAkJLmRlZmF1bHRfdmFsdWUJPSAxLAogCX0sCi0JewotCQkuaWQJCT0gVjRMMl9DSURfQVVESU9fTE9VRE5FU1MsCi0JCS5mbGFncwkJPSBWNEwyX0NUUkxfRkxBR19ESVNBQkxFRCwKLQl9LAogfTsKIAogCkBAIC0xMjIwLDU2ICsxMjE2LDM0IEBACiAKIAogLyoKLSAqIHNpNDcweF92aWRpb2NfZ19pbnB1dCAtIGdldCBpbnB1dAotICovCi1zdGF0aWMgaW50IHNpNDcweF92aWRpb2NfZ19pbnB1dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKLQkJdW5zaWduZWQgaW50ICppKQotewotCSppID0gMDsKLQotCXJldHVybiAwOwotfQotCi0KLS8qCi0gKiBzaTQ3MHhfdmlkaW9jX3NfaW5wdXQgLSBzZXQgaW5wdXQKLSAqLwotc3RhdGljIGludCBzaTQ3MHhfdmlkaW9jX3NfaW5wdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBpKQotewotCWludCByZXR2YWwgPSAwOwotCi0JLyogc2FmZXR5IGNoZWNrcyAqLwotCWlmIChpICE9IDApCi0JCXJldHZhbCA9IC1FSU5WQUw7Ci0KLQlpZiAocmV0dmFsIDwgMCkKLQkJcHJpbnRrKEtFUk5fV0FSTklORyBEUklWRVJfTkFNRQotCQkJIjogc2V0IGlucHV0IGZhaWxlZCB3aXRoICVkXG4iLCByZXR2YWwpOwotCXJldHVybiByZXR2YWw7Ci19Ci0KLQotLyoKICAqIHNpNDcweF92aWRpb2NfcXVlcnljdHJsIC0gZW51bWVyYXRlIGNvbnRyb2wgaXRlbXMKICAqLwogc3RhdGljIGludCBzaTQ3MHhfdmlkaW9jX3F1ZXJ5Y3RybChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKIAkJc3RydWN0IHY0bDJfcXVlcnljdHJsICpxYykKIHsKLQl1bnNpZ25lZCBjaGFyIGk7CisJdW5zaWduZWQgY2hhciBpID0gMDsKIAlpbnQgcmV0dmFsID0gLUVJTlZBTDsKIAotCS8qIHNhZmV0eSBjaGVja3MgKi8KLQlpZiAoIXFjLT5pZCkKKwkvKiBhYm9ydCBpZiBxYy0+aWQgaXMgYmVsb3cgVjRMMl9DSURfQkFTRSAqLworCWlmIChxYy0+aWQgPCBWNEwyX0NJRF9CQVNFKQogCQlnb3RvIGRvbmU7CiAKKwkvKiBzZWFyY2ggdmlkZW8gY29udHJvbCAqLwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpNDcweF92NGwyX3F1ZXJ5Y3RybCk7IGkrKykgewogCQlpZiAocWMtPmlkID09IHNpNDcweF92NGwyX3F1ZXJ5Y3RybFtpXS5pZCkgewogCQkJbWVtY3B5KHFjLCAmKHNpNDcweF92NGwyX3F1ZXJ5Y3RybFtpXSksIHNpemVvZigqcWMpKTsKLQkJCXJldHZhbCA9IDA7CisJCQlyZXR2YWwgPSAwOyAvKiBmb3VuZCAqLwogCQkJYnJlYWs7CiAJCX0KIAl9CiAKKwkvKiBkaXNhYmxlIHVuc3VwcG9ydGVkIGJhc2UgY29udHJvbHMgKi8KKwkvKiB0byBzYXRpc2Z5IGtyYWRpbyBhbmQgc3VjaCBhcHBzICovCisJaWYgKChyZXR2YWwgPT0gLUVJTlZBTCkgJiYgKHFjLT5pZCA8IFY0TDJfQ0lEX0xBU1RQMSkpIHsKKwkJcWMtPmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQ7CisJCXJldHZhbCA9IDA7CisJfQorCiBkb25lOgogCWlmIChyZXR2YWwgPCAwKQogCQlwcmludGsoS0VSTl9XQVJOSU5HIERSSVZFUl9OQU1FCkBAIC0xMzYwLDQ0ICsxMzM0LDEzIEBACiBzdGF0aWMgaW50IHNpNDcweF92aWRpb2NfZ19hdWRpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKIAkJc3RydWN0IHY0bDJfYXVkaW8gKmF1ZGlvKQogewotCWludCByZXR2YWwgPSAwOwotCi0JLyogc2FmZXR5IGNoZWNrcyAqLwotCWlmIChhdWRpby0+aW5kZXggIT0gMCkgewotCQlyZXR2YWwgPSAtRUlOVkFMOwotCQlnb3RvIGRvbmU7Ci0JfQotCisJLyogZHJpdmVyIGNvbnN0YW50cyAqLworCWF1ZGlvLT5pbmRleCA9IDA7CiAJc3RyY3B5KGF1ZGlvLT5uYW1lLCAiUmFkaW8iKTsKIAlhdWRpby0+Y2FwYWJpbGl0eSA9IFY0TDJfQVVEQ0FQX1NURVJFTzsKKwlhdWRpby0+bW9kZSA9IDA7CiAKLWRvbmU6Ci0JaWYgKHJldHZhbCA8IDApCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgRFJJVkVSX05BTUUKLQkJCSI6IGdldCBhdWRpbyBmYWlsZWQgd2l0aCAlZFxuIiwgcmV0dmFsKTsKLQlyZXR1cm4gcmV0dmFsOwotfQotCi0KLS8qCi0gKiBzaTQ3MHhfdmlkaW9jX3NfYXVkaW8gLSBzZXQgYXVkaW8gYXR0cmlidXRlcwotICovCi1zdGF0aWMgaW50IHNpNDcweF92aWRpb2Nfc19hdWRpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKLQkJc3RydWN0IHY0bDJfYXVkaW8gKmF1ZGlvKQotewotCWludCByZXR2YWwgPSAwOwotCi0JLyogc2FmZXR5IGNoZWNrcyAqLwotCWlmIChhdWRpby0+aW5kZXggIT0gMCkgewotCQlyZXR2YWwgPSAtRUlOVkFMOwotCQlnb3RvIGRvbmU7Ci0JfQotCi1kb25lOgotCWlmIChyZXR2YWwgPCAwKQotCQlwcmludGsoS0VSTl9XQVJOSU5HIERSSVZFUl9OQU1FCi0JCQkiOiBzZXQgYXVkaW8gZmFpbGVkIHdpdGggJWRcbiIsIHJldHZhbCk7Ci0JcmV0dXJuIHJldHZhbDsKKwlyZXR1cm4gMDsKIH0KIAogCkBAIC0xNDE1LDcgKzEzNTgsNyBAQAogCQlyZXR2YWwgPSAtRUlPOwogCQlnb3RvIGRvbmU7CiAJfQotCWlmICgodHVuZXItPmluZGV4ICE9IDApICYmICh0dW5lci0+dHlwZSAhPSBWNEwyX1RVTkVSX1JBRElPKSkgeworCWlmICh0dW5lci0+aW5kZXggIT0gMCkgewogCQlyZXR2YWwgPSAtRUlOVkFMOwogCQlnb3RvIGRvbmU7CiAJfQpAQCAtMTQyNCw4ICsxMzY3LDEzIEBACiAJaWYgKHJldHZhbCA8IDApCiAJCWdvdG8gZG9uZTsKIAorCS8qIGRyaXZlciBjb25zdGFudHMgKi8KIAlzdHJjcHkodHVuZXItPm5hbWUsICJGTSIpOwotCXN3aXRjaCAoYmFuZCkgeworCXR1bmVyLT50eXBlID0gVjRMMl9UVU5FUl9SQURJTzsKKwl0dW5lci0+Y2FwYWJpbGl0eSA9IFY0TDJfVFVORVJfQ0FQX0xPVyB8IFY0TDJfVFVORVJfQ0FQX1NURVJFTzsKKworCS8qIHJhbmdlIGxpbWl0cyAqLworCXN3aXRjaCAoKHJhZGlvLT5yZWdpc3RlcnNbU1lTQ09ORklHMl0gJiBTWVNDT05GSUcyX0JBTkQpID4+IDYpIHsKIAkvKiAwOiA4Ny41IC0gMTA4IE1IeiAoVVNBLCBFdXJvcGUsIGRlZmF1bHQpICovCiAJZGVmYXVsdDoKIAkJdHVuZXItPnJhbmdlbG93ICA9ICA4Ny41ICogRlJFUV9NVUw7CkBAIC0xNDQyLDE0ICsxMzkwLDE4IEBACiAJCXR1bmVyLT5yYW5nZWhpZ2ggPSAgOTAgICAqIEZSRVFfTVVMOwogCQlicmVhazsKIAl9OwotCXR1bmVyLT5yeHN1YmNoYW5zID0gVjRMMl9UVU5FUl9TVUJfTU9OTyB8IFY0TDJfVFVORVJfU1VCX1NURVJFTzsKLQl0dW5lci0+Y2FwYWJpbGl0eSA9IFY0TDJfVFVORVJfQ0FQX0xPVzsKIAotCS8qIFN0ZXJlbyBpbmRpY2F0b3IgPT0gU3RlcmVvIChpbnN0ZWFkIG9mIE1vbm8pICovCisJLyogc3RlcmVvIGluZGljYXRvciA9PSBzdGVyZW8gKGluc3RlYWQgb2YgbW9ubykgKi8KIAlpZiAoKHJhZGlvLT5yZWdpc3RlcnNbU1RBVFVTUlNTSV0gJiBTVEFUVVNSU1NJX1NUKSA9PSAxKQotCQl0dW5lci0+YXVkbW9kZSA9IFY0TDJfVFVORVJfTU9ERV9TVEVSRU87CisJCXR1bmVyLT5yeHN1YmNoYW5zID0gVjRMMl9UVU5FUl9TVUJfTU9OTyB8IFY0TDJfVFVORVJfU1VCX1NURVJFTzsKIAllbHNlCisJCXR1bmVyLT5yeHN1YmNoYW5zID0gVjRMMl9UVU5FUl9TVUJfTU9OTzsKKworCS8qIG1vbm8vc3RlcmVvIHNlbGVjdG9yICovCisJaWYgKChyYWRpby0+cmVnaXN0ZXJzW1BPV0VSQ0ZHXSAmIFBPV0VSQ0ZHX01PTk8pID09IDEpCiAJCXR1bmVyLT5hdWRtb2RlID0gVjRMMl9UVU5FUl9NT0RFX01PTk87CisJZWxzZQorCQl0dW5lci0+YXVkbW9kZSA9IFY0TDJfVFVORVJfTU9ERV9TVEVSRU87CiAKIAkvKiBtaW4gaXMgd29yc3QsIG1heCBpcyBiZXN0OyBzaWduYWw6MC4uMHhmZmZmOyByc3NpOiAwLi4weGZmICovCiAJdHVuZXItPnNpZ25hbCA9IChyYWRpby0+cmVnaXN0ZXJzW1NUQVRVU1JTU0ldICYgU1RBVFVTUlNTSV9SU1NJKQpAQCAtMTQ3NCwyMyArMTQyNiwyOCBAQAogCQlzdHJ1Y3QgdjRsMl90dW5lciAqdHVuZXIpCiB7CiAJc3RydWN0IHNpNDcweF9kZXZpY2UgKnJhZGlvID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKLQlpbnQgcmV0dmFsID0gMDsKKwlpbnQgcmV0dmFsID0gLUVJTlZBTDsKIAogCS8qIHNhZmV0eSBjaGVja3MgKi8KIAlpZiAocmFkaW8tPmRpc2Nvbm5lY3RlZCkgewogCQlyZXR2YWwgPSAtRUlPOwogCQlnb3RvIGRvbmU7CiAJfQotCWlmICgodHVuZXItPmluZGV4ICE9IDApICYmICh0dW5lci0+dHlwZSAhPSBWNEwyX1RVTkVSX1JBRElPKSkgewotCQlyZXR2YWwgPSAtRUlOVkFMOworCWlmICh0dW5lci0+aW5kZXggIT0gMCkKKwkJZ290byBkb25lOworCisJLyogbW9uby9zdGVyZW8gc2VsZWN0b3IgKi8KKwlzd2l0Y2ggKHR1bmVyLT5hdWRtb2RlKSB7CisJY2FzZSBWNEwyX1RVTkVSX01PREVfTU9OTzoKKwkJcmFkaW8tPnJlZ2lzdGVyc1tQT1dFUkNGR10gfD0gUE9XRVJDRkdfTU9OTzsgIC8qIGZvcmNlIG1vbm8gKi8KKwkJYnJlYWs7CisJY2FzZSBWNEwyX1RVTkVSX01PREVfU1RFUkVPOgorCQlyYWRpby0+cmVnaXN0ZXJzW1BPV0VSQ0ZHXSAmPSB+UE9XRVJDRkdfTU9OTzsgLyogdHJ5IHN0ZXJlbyAqLworCQlicmVhazsKKwlkZWZhdWx0OgogCQlnb3RvIGRvbmU7CiAJfQogCi0JaWYgKHR1bmVyLT5hdWRtb2RlID09IFY0TDJfVFVORVJfTU9ERV9NT05PKQotCQlyYWRpby0+cmVnaXN0ZXJzW1BPV0VSQ0ZHXSB8PSBQT1dFUkNGR19NT05POyAgLyogZm9yY2UgbW9ubyAqLwotCWVsc2UKLQkJcmFkaW8tPnJlZ2lzdGVyc1tQT1dFUkNGR10gJj0gflBPV0VSQ0ZHX01PTk87IC8qIHRyeSBzdGVyZW8gKi8KLQogCXJldHZhbCA9IHNpNDcweF9zZXRfcmVnaXN0ZXIocmFkaW8sIFBPV0VSQ0ZHKTsKIAogZG9uZToKQEAgLTE1MTUsMTEgKzE0NzIsMTIgQEAKIAkJcmV0dmFsID0gLUVJTzsKIAkJZ290byBkb25lOwogCX0KLQlpZiAoKGZyZXEtPnR1bmVyICE9IDApICYmIChmcmVxLT50eXBlICE9IFY0TDJfVFVORVJfUkFESU8pKSB7CisJaWYgKGZyZXEtPnR1bmVyICE9IDApIHsKIAkJcmV0dmFsID0gLUVJTlZBTDsKIAkJZ290byBkb25lOwogCX0KIAorCWZyZXEtPnR5cGUgPSBWNEwyX1RVTkVSX1JBRElPOwogCXJldHZhbCA9IHNpNDcweF9nZXRfZnJlcShyYWRpbywgJmZyZXEtPmZyZXF1ZW5jeSk7CiAKIGRvbmU6CkBAIC0xNTQ0LDcgKzE1MDIsNyBAQAogCQlyZXR2YWwgPSAtRUlPOwogCQlnb3RvIGRvbmU7CiAJfQotCWlmICgoZnJlcS0+dHVuZXIgIT0gMCkgJiYgKGZyZXEtPnR5cGUgIT0gVjRMMl9UVU5FUl9SQURJTykpIHsKKwlpZiAoZnJlcS0+dHVuZXIgIT0gMCkgewogCQlyZXR2YWwgPSAtRUlOVkFMOwogCQlnb3RvIGRvbmU7CiAJfQpAQCAtMTU3Myw3ICsxNTMxLDcgQEAKIAkJcmV0dmFsID0gLUVJTzsKIAkJZ290byBkb25lOwogCX0KLQlpZiAoKHNlZWstPnR1bmVyICE9IDApICYmIChzZWVrLT50eXBlICE9IFY0TDJfVFVORVJfUkFESU8pKSB7CisJaWYgKHNlZWstPnR1bmVyICE9IDApIHsKIAkJcmV0dmFsID0gLUVJTlZBTDsKIAkJZ290byBkb25lOwogCX0KQEAgLTE1ODgsMTUgKzE1NDYsMTYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisKKy8qCisgKiBzaTQ3MHhfaW9jdGxfb3BzIC0gdmlkZW8gZGV2aWNlIGlvY3RsIG9wZXJhdGlvbnMKKyAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcyBzaTQ3MHhfaW9jdGxfb3BzID0gewogCS52aWRpb2NfcXVlcnljYXAJPSBzaTQ3MHhfdmlkaW9jX3F1ZXJ5Y2FwLAotCS52aWRpb2NfZ19pbnB1dAkJPSBzaTQ3MHhfdmlkaW9jX2dfaW5wdXQsCi0JLnZpZGlvY19zX2lucHV0CQk9IHNpNDcweF92aWRpb2Nfc19pbnB1dCwKIAkudmlkaW9jX3F1ZXJ5Y3RybAk9IHNpNDcweF92aWRpb2NfcXVlcnljdHJsLAogCS52aWRpb2NfZ19jdHJsCQk9IHNpNDcweF92aWRpb2NfZ19jdHJsLAogCS52aWRpb2Nfc19jdHJsCQk9IHNpNDcweF92aWRpb2Nfc19jdHJsLAogCS52aWRpb2NfZ19hdWRpbwkJPSBzaTQ3MHhfdmlkaW9jX2dfYXVkaW8sCi0JLnZpZGlvY19zX2F1ZGlvCQk9IHNpNDcweF92aWRpb2Nfc19hdWRpbywKIAkudmlkaW9jX2dfdHVuZXIJCT0gc2k0NzB4X3ZpZGlvY19nX3R1bmVyLAogCS52aWRpb2Nfc190dW5lcgkJPSBzaTQ3MHhfdmlkaW9jX3NfdHVuZXIsCiAJLnZpZGlvY19nX2ZyZXF1ZW5jeQk9IHNpNDcweF92aWRpb2NfZ19mcmVxdWVuY3ksCkBAIC0xNjA0LDE0ICsxNTYzLDE1IEBACiAJLnZpZGlvY19zX2h3X2ZyZXFfc2Vlawk9IHNpNDcweF92aWRpb2Nfc19od19mcmVxX3NlZWssCiB9OwogCisKIC8qCi0gKiBzaTQ3MHhfdmlkZGV2X3RhbXBsZXMgLSB2aWRlbyBkZXZpY2UgaW50ZXJmYWNlCisgKiBzaTQ3MHhfdmlkZGV2X3RlbXBsYXRlIC0gdmlkZW8gZGV2aWNlIGludGVyZmFjZQogICovCiBzdGF0aWMgc3RydWN0IHZpZGVvX2RldmljZSBzaTQ3MHhfdmlkZGV2X3RlbXBsYXRlID0gewogCS5mb3BzCQkJPSAmc2k0NzB4X2ZvcHMsCi0JLmlvY3RsX29wcyAJCT0gJnNpNDcweF9pb2N0bF9vcHMsCiAJLm5hbWUJCQk9IERSSVZFUl9OQU1FLAogCS5yZWxlYXNlCQk9IHZpZGVvX2RldmljZV9yZWxlYXNlLAorCS5pb2N0bF9vcHMJCT0gJnNpNDcweF9pb2N0bF9vcHMsCiB9OwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3MC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKaW5kZXggZjc5NGYyZC4uZTBlYjRmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKQEAgLTI5LDQzICsyOSwyNCBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGFzbS9pby5oPgotI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+Ci0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+Ci0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMtaWQuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgogI2luY2x1ZGUgPGxpbnV4L3ZpZGVvX2VuY29kZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWNvbW1vbi5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaD4KIAogTU9EVUxFX0RFU0NSSVBUSU9OKCJBbmFsb2cgRGV2aWNlcyBBRFY3MTcwIHZpZGVvIGVuY29kZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJNYXhpbSBZZXZ0eXVzaGtpbiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi0KLSNkZWZpbmUgSTJDX05BTUUoeCkgKHgpLT5uYW1lCi0KLQogc3RhdGljIGludCBkZWJ1ZzsKIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJEZWJ1ZyBsZXZlbCAoMC0xKSIpOwogCi0jZGVmaW5lIGRwcmludGsobnVtLCBmb3JtYXQsIGFyZ3MuLi4pIFwKLQlkbyB7IFwKLQkJaWYgKGRlYnVnID49IG51bSkgXAotCQkJcHJpbnRrKGZvcm1hdCwgIyNhcmdzKTsgXAotCX0gd2hpbGUgKDApCi0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0cnVjdCBhZHY3MTcwIHsKQEAgLTgwLDIxICs2MSwxMiBAQAogCWludCBzYXQ7CiB9OwogCi0jZGVmaW5lICAgSTJDX0FEVjcxNzAgICAgICAgIDB4ZDQKLSNkZWZpbmUgICBJMkNfQURWNzE3MSAgICAgICAgMHg1NAotCi1zdGF0aWMgY2hhciBhZHY3MTcwX25hbWVbXSA9ICJhZHY3MTcwIjsKLXN0YXRpYyBjaGFyIGFkdjcxNzFfbmFtZVtdID0gImFkdjcxNzEiOwotCiBzdGF0aWMgY2hhciAqaW5wdXRzW10gPSB7ICJwYXNzX3Rocm91Z2giLCAicGxheV9iYWNrIiB9Owogc3RhdGljIGNoYXIgKm5vcm1zW10gPSB7ICJQQUwiLCAiTlRTQyIgfTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIGlubGluZSBpbnQKLWFkdjcxNzBfd3JpdGUgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgIHU4ICAgICAgICAgICAgICAgICByZWcsCi0JICAgICAgIHU4ICAgICAgICAgICAgICAgICB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgaW50IGFkdjcxNzBfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgYWR2NzE3MCAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCkBAIC0xMDIsMTcgKzc0LDEzIEBACiAJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcsIHZhbHVlKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLWFkdjcxNzBfcmVhZCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnKQorc3RhdGljIGlubGluZSBpbnQgYWR2NzE3MF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZykKIHsKIAlyZXR1cm4gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgcmVnKTsKIH0KIAotc3RhdGljIGludAotYWR2NzE3MF93cml0ZV9ibG9jayAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJICAgICBjb25zdCB1OCAgICAgICAgICAqZGF0YSwKLQkJICAgICB1bnNpZ25lZCBpbnQgICAgICAgbGVuKQorc3RhdGljIGludCBhZHY3MTcwX3dyaXRlX2Jsb2NrKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCSAgICAgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJaW50IHJldCA9IC0xOwogCXU4IHJlZzsKQEAgLTEzMywzMyArMTAxLDI1IEBACiAJCQkJICAgIGVuY29kZXItPnJlZ1tyZWcrK10gPSBkYXRhWzFdOwogCQkJCWxlbiAtPSAyOwogCQkJCWRhdGEgKz0gMjsKLQkJCX0gd2hpbGUgKGxlbiA+PSAyICYmIGRhdGFbMF0gPT0gcmVnICYmCi0JCQkJIGJsb2NrX2xlbiA8IDMyKTsKLQkJCWlmICgocmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwKLQkJCQkJCSAgIGJsb2NrX2xlbikpIDwgMCkKKwkJCX0gd2hpbGUgKGxlbiA+PSAyICYmIGRhdGFbMF0gPT0gcmVnICYmIGJsb2NrX2xlbiA8IDMyKTsKKwkJCXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQsIGJsb2NrX2RhdGEsIGJsb2NrX2xlbik7CisJCQlpZiAocmV0IDwgMCkKIAkJCQlicmVhazsKIAkJfQogCX0gZWxzZSB7CiAJCS8qIGRvIHNvbWUgc2xvdyBJMkMgZW11bGF0aW9uIGtpbmQgb2YgdGhpbmcgKi8KIAkJd2hpbGUgKGxlbiA+PSAyKSB7CiAJCQlyZWcgPSAqZGF0YSsrOwotCQkJaWYgKChyZXQgPSBhZHY3MTcwX3dyaXRlKGNsaWVudCwgcmVnLAotCQkJCQkJICpkYXRhKyspKSA8IDApCisJCQlyZXQgPSBhZHY3MTcwX3dyaXRlKGNsaWVudCwgcmVnLCAqZGF0YSsrKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQkJbGVuIC09IDI7CiAJCX0KIAl9Ci0KIAlyZXR1cm4gcmV0OwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLy8gT3V0cHV0IGZpbHRlcjogIFMtVmlkZW8gIENvbXBvc2l0ZQotCi0jZGVmaW5lIE1SMDUwICAgICAgIDB4MTEJLy8weDA5Ci0jZGVmaW5lIE1SMDYwICAgICAgIDB4MTQJLy8weDBjCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICNkZWZpbmUgVFIwTU9ERSAgICAgMHg0YwogI2RlZmluZSBUUjBSU1QJICAgIDB4ODAKQEAgLTE2Nyw3ICsxMjcsNiBAQAogI2RlZmluZSBUUjFDQVBUCSAgICAweDAwCiAjZGVmaW5lIFRSMVBMQVkJICAgIDB4MDAKIAotCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBpbml0X05UU0NbXSA9IHsKIAkweDAwLCAweDEwLAkJLy8gTVIwCiAJMHgwMSwgMHgyMCwJCS8vIE1SMQpAQCAtMjI3LDE1ICsxODYsMTEgQEAKIH07CiAKIAotc3RhdGljIGludAotYWR2NzE3MF9jb21tYW5kIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgdW5zaWduZWQgaW50ICAgICAgIGNtZCwKLQkJIHZvaWQgKiAgICAgICAgICAgICBhcmcpCitzdGF0aWMgaW50IGFkdjcxNzBfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjbWQsIHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgYWR2NzE3MCAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCiAJc3dpdGNoIChjbWQpIHsKLQogCWNhc2UgMDoKICNpZiAwCiAJCS8qIFRoaXMgaXMganVzdCBmb3IgdGVzdGluZyEhISAqLwpAQCAtMjU0LDE4ICsyMDksMTYgQEAKIAkJCSAgICAgVklERU9fRU5DT0RFUl9OVFNDOwogCQljYXAtPmlucHV0cyA9IDI7CiAJCWNhcC0+b3V0cHV0cyA9IDE7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfU0VUX05PUk06CiAJewogCQlpbnQgaWFyZyA9ICooaW50ICopIGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzX2NvbW1hbmQ6IHNldCBub3JtICVkIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgbm9ybSAlZFxuIiwgaWFyZyk7CiAKIAkJc3dpdGNoIChpYXJnKSB7Ci0KIAkJY2FzZSBWSURFT19NT0RFX05UU0M6CiAJCQlhZHY3MTcwX3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdF9OVFNDLAogCQkJCQkgICAgc2l6ZW9mKGluaXRfTlRTQykpOwpAQCAtMjg1LDE2ICsyMzgsMTMgQEAKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrKDEsIEtFUk5fRVJSICIlczogaWxsZWdhbCBub3JtOiAlZFxuIiwKLQkJCSAgICAgICBJMkNfTkFNRShjbGllbnQpLCBpYXJnKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgImlsbGVnYWwgbm9ybTogJWRcbiIsIGlhcmcpOwogCQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAkJfQotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBzd2l0Y2hlZCB0byAlc1xuIiwgSTJDX05BTUUoY2xpZW50KSwKLQkJCW5vcm1zW2lhcmddKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3dpdGNoZWQgdG8gJXNcbiIsIG5vcm1zW2lhcmddKTsKIAkJZW5jb2Rlci0+bm9ybSA9IGlhcmc7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfU0VUX0lOUFVUOgogCXsKQEAgLTMwNCwxOSArMjU0LDE3IEBACiAJCSAqaWFyZyA9IDE6IGlucHV0IGlzIGZyb20gWlIzNjA2MAogCQkgKmlhcmcgPSAyOiBjb2xvciBiYXIgKi8KIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzX2NvbW1hbmQ6IHNldCBpbnB1dCBmcm9tICVzXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic2V0IGlucHV0IGZyb20gJXNcbiIsCiAJCQlpYXJnID09IDAgPyAiZGVjb2RlciIgOiAiWlIzNjA2MCIpOwogCiAJCXN3aXRjaCAoaWFyZykgewotCiAJCWNhc2UgMDoKIAkJCWFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDAxLCAweDIwKTsKIAkJCWFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDA4LCBUUjFDQVBUKTsJLyogVFIxICovCiAJCQlhZHY3MTcwX3dyaXRlKGNsaWVudCwgMHgwMiwgMHgwZSk7CS8vIEVuYWJsZSBnZW5sb2NrCiAJCQlhZHY3MTcwX3dyaXRlKGNsaWVudCwgMHgwNywgVFIwTU9ERSB8IFRSMFJTVCk7CiAJCQlhZHY3MTcwX3dyaXRlKGNsaWVudCwgMHgwNywgVFIwTU9ERSk7Ci0JCQkvL3VkZWxheSgxMCk7CisJCQkvKiB1ZGVsYXkoMTApOyAqLwogCQkJYnJlYWs7CiAKIAkJY2FzZSAxOgpAQCAtMzI1LDIwICsyNzMsMTcgQEAKIAkJCWFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDAyLCAweDA4KTsKIAkJCWFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFIHwgVFIwUlNUKTsKIAkJCWFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFKTsKLQkJCS8vdWRlbGF5KDEwKTsKKwkJCS8qIHVkZWxheSgxMCk7ICovCiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJZHByaW50aygxLCBLRVJOX0VSUiAiJXM6IGlsbGVnYWwgaW5wdXQ6ICVkXG4iLAotCQkJCUkyQ19OQU1FKGNsaWVudCksIGlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiaWxsZWdhbCBpbnB1dDogJWRcbiIsIGlhcmcpOwogCQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAkJfQotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBzd2l0Y2hlZCB0byAlc1xuIiwgSTJDX05BTUUoY2xpZW50KSwKLQkJCWlucHV0c1tpYXJnXSk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInN3aXRjaGVkIHRvICVzXG4iLCBpbnB1dHNbaWFyZ10pOwogCQllbmNvZGVyLT5pbnB1dCA9IGlhcmc7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfU0VUX09VVFBVVDoKIAl7CkBAIC0zNDgsMTYgKzI5MywxNiBAQAogCQlpZiAoKmlhcmcgIT0gMCkgewogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9FTkFCTEVfT1VUUFVUOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCiAJCWVuY29kZXItPmVuYWJsZSA9ICEhKmlhcmc7Ci0JfQogCQlicmVhazsKKwl9CiAKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTM2OCwxNDkgKzMxMyw2NyBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKgotICogR2VuZXJpYyBpMmMgcHJvYmUKLSAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKLSAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9Ci0gICAgeyBJMkNfQURWNzE3MCA+PiAxLCAoSTJDX0FEVjcxNzAgPj4gMSkgKyAxLAotCUkyQ19BRFY3MTcxID4+IDEsIChJMkNfQURWNzE3MSA+PiAxKSArIDEsCitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geworCTB4ZDQgPj4gMSwgMHhkNiA+PiAxLAkvKiBhZHY3MTcwIElEcyAqLworCTB4NTQgPj4gMSwgMHg1NiA+PiAxLAkvKiBhZHY3MTcxIElEcyAqLwogCUkyQ19DTElFTlRfRU5ECiB9OwogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaWdub3JlID0gSTJDX0NMSUVOVF9FTkQ7CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50X2FkZHJlc3NfZGF0YSBhZGRyX2RhdGEgPSB7Ci0JLm5vcm1hbF9pMmMJCT0gbm9ybWFsX2kyYywKLQkucHJvYmUJCQk9ICZpZ25vcmUsCi0JLmlnbm9yZQkJCT0gJmlnbm9yZSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX2FkdjcxNzA7Ci0KLXN0YXRpYyBpbnQKLWFkdjcxNzBfZGV0ZWN0X2NsaWVudCAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBhZGRyZXNzLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBraW5kKQorc3RhdGljIGludCBhZHY3MTcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCiB7Ci0JaW50IGk7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAlzdHJ1Y3QgYWR2NzE3MCAqZW5jb2RlcjsKLQljaGFyICpkbmFtZTsKLQotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJhZHY3MTcwLmM6IGRldGVjdGluZyBhZHY3MTcwIGNsaWVudCBvbiBhZGRyZXNzIDB4JXhcbiIsCi0JCWFkZHJlc3MgPDwgMSk7CisJaW50IGk7CiAKIAkvKiBDaGVjayBpZiB0aGUgYWRhcHRlciBzdXBwb3J0cyB0aGUgbmVlZGVkIGZlYXR1cmVzICovCi0JaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQotCQlyZXR1cm4gMDsKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIC1FTk9ERVY7CiAKLQljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICghY2xpZW50KQotCQlyZXR1cm4gLUVOT01FTTsKLQljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwotCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7Ci0JY2xpZW50LT5kcml2ZXIgPSAmaTJjX2RyaXZlcl9hZHY3MTcwOwotCWlmICgoY2xpZW50LT5hZGRyID09IEkyQ19BRFY3MTcwID4+IDEpIHx8Ci0JICAgIChjbGllbnQtPmFkZHIgPT0gKEkyQ19BRFY3MTcwID4+IDEpICsgMSkpIHsKLQkJZG5hbWUgPSBhZHY3MTcwX25hbWU7Ci0JfSBlbHNlIGlmICgoY2xpZW50LT5hZGRyID09IEkyQ19BRFY3MTcxID4+IDEpIHx8Ci0JCSAgIChjbGllbnQtPmFkZHIgPT0gKEkyQ19BRFY3MTcxID4+IDEpICsgMSkpIHsKLQkJZG5hbWUgPSBhZHY3MTcxX25hbWU7Ci0JfSBlbHNlIHsKLQkJLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlISEhICovCi0JCWtmcmVlKGNsaWVudCk7Ci0JCXJldHVybiAwOwotCX0KLQlzdHJsY3B5KEkyQ19OQU1FKGNsaWVudCksIGRuYW1lLCBzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOworCXY0bF9pbmZvKGNsaWVudCwgImNoaXAgZm91bmQgQCAweCV4ICglcylcbiIsCisJCQljbGllbnQtPmFkZHIgPDwgMSwgY2xpZW50LT5hZGFwdGVyLT5uYW1lKTsKIAogCWVuY29kZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWR2NzE3MCksIEdGUF9LRVJORUwpOwotCWlmIChlbmNvZGVyID09IE5VTEwpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoZW5jb2RlciA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAJZW5jb2Rlci0+bm9ybSA9IFZJREVPX01PREVfTlRTQzsKIAllbmNvZGVyLT5pbnB1dCA9IDA7CiAJZW5jb2Rlci0+ZW5hYmxlID0gMTsKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBlbmNvZGVyKTsKIAotCWkgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOwotCWlmIChpKSB7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JCWtmcmVlKGVuY29kZXIpOwotCQlyZXR1cm4gaTsKLQl9Ci0KIAlpID0gYWR2NzE3MF93cml0ZV9ibG9jayhjbGllbnQsIGluaXRfTlRTQywgc2l6ZW9mKGluaXRfTlRTQykpOwogCWlmIChpID49IDApIHsKIAkJaSA9IGFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFIHwgVFIwUlNUKTsKIAkJaSA9IGFkdjcxNzBfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFKTsKIAkJaSA9IGFkdjcxNzBfcmVhZChjbGllbnQsIDB4MTIpOwotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXNfYXR0YWNoOiByZXYuICVkIGF0IDB4JTAyeFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGkgJiAxLCBjbGllbnQtPmFkZHIgPDwgMSk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInJldmlzaW9uICVkXG4iLCBpICYgMSk7CiAJfQotCWlmIChpIDwgMCkgewotCQlkcHJpbnRrKDEsIEtFUk5fRVJSICIlc19hdHRhY2g6IGluaXQgZXJyb3IgMHgleFxuIiwKLQkJICAgICAgIEkyQ19OQU1FKGNsaWVudCksIGkpOwotCX0KLQorCWlmIChpIDwgMCkKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiaW5pdCBlcnJvciAweCV4XG4iLCBpKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotYWR2NzE3MF9hdHRhY2hfYWRhcHRlciAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQorc3RhdGljIGludCBhZHY3MTcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJhZHY3MTcwLmM6IHN0YXJ0aW5nIHByb2JlIGZvciBhZGFwdGVyICVzICgweCV4KVxuIiwKLQkJSTJDX05BTUUoYWRhcHRlciksIGFkYXB0ZXItPmlkKTsKLQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsICZhZHY3MTcwX2RldGVjdF9jbGllbnQpOwotfQotCi1zdGF0aWMgaW50Ci1hZHY3MTcwX2RldGFjaF9jbGllbnQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCi17Ci0Jc3RydWN0IGFkdjcxNzAgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoZXJyKSB7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0Ja2ZyZWUoZW5jb2Rlcik7Ci0Ja2ZyZWUoY2xpZW50KTsKLQorCWtmcmVlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKIAlyZXR1cm4gMDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfYWR2NzE3MCA9IHsKLQkuZHJpdmVyID0gewotCQkubmFtZSA9ICJhZHY3MTcwIiwJLyogbmFtZSAqLwotCX0sCi0KLQkuaWQgPSBJMkNfRFJJVkVSSURfQURWNzE3MCwKLQotCS5hdHRhY2hfYWRhcHRlciA9IGFkdjcxNzBfYXR0YWNoX2FkYXB0ZXIsCi0JLmRldGFjaF9jbGllbnQgPSBhZHY3MTcwX2RldGFjaF9jbGllbnQsCi0JLmNvbW1hbmQgPSBhZHY3MTcwX2NvbW1hbmQsCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWR2NzE3MF9pZFtdID0geworCXsgImFkdjcxNzAiLCAwIH0sCisJeyAiYWR2NzE3MSIsIDAgfSwKKwl7IH0KIH07CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgYWR2NzE3MF9pZCk7CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1hZHY3MTcwX2luaXQgKHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZpMmNfZHJpdmVyX2FkdjcxNzApOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLWFkdjcxNzBfZXhpdCAodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmaTJjX2RyaXZlcl9hZHY3MTcwKTsKLX0KLQotbW9kdWxlX2luaXQoYWR2NzE3MF9pbml0KTsKLW1vZHVsZV9leGl0KGFkdjcxNzBfZXhpdCk7CitzdGF0aWMgc3RydWN0IHY0bDJfaTJjX2RyaXZlcl9kYXRhIHY0bDJfaTJjX2RhdGEgPSB7CisJLm5hbWUgPSAiYWR2NzE3MCIsCisJLmRyaXZlcmlkID0gSTJDX0RSSVZFUklEX0FEVjcxNzAsCisJLmNvbW1hbmQgPSBhZHY3MTcwX2NvbW1hbmQsCisJLnByb2JlID0gYWR2NzE3MF9wcm9iZSwKKwkucmVtb3ZlID0gYWR2NzE3MF9yZW1vdmUsCisJLmlkX3RhYmxlID0gYWR2NzE3MF9pZCwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2FkdjcxNzUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCmluZGV4IDhlZTA3YTYuLjYwMDhlODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCkBAIC0yNSw0MyArMjUsMjQgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWlkLmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb19lbmNvZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5Lmg+CiAKIE1PRFVMRV9ERVNDUklQVElPTigiQW5hbG9nIERldmljZXMgQURWNzE3NSB2aWRlbyBlbmNvZGVyIGRyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiRGF2ZSBQZXJrcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi0KLSNkZWZpbmUgSTJDX05BTUUocykgKHMpLT5uYW1lCi0KLQogc3RhdGljIGludCBkZWJ1ZzsKIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJEZWJ1ZyBsZXZlbCAoMC0xKSIpOwogCi0jZGVmaW5lIGRwcmludGsobnVtLCBmb3JtYXQsIGFyZ3MuLi4pIFwKLQlkbyB7IFwKLQkJaWYgKGRlYnVnID49IG51bSkgXAotCQkJcHJpbnRrKGZvcm1hdCwgIyNhcmdzKTsgXAotCX0gd2hpbGUgKDApCi0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0cnVjdCBhZHY3MTc1IHsKQEAgLTc3LDMzICs1OCwyMyBAQAogI2RlZmluZSAgIEkyQ19BRFY3MTc1ICAgICAgICAweGQ0CiAjZGVmaW5lICAgSTJDX0FEVjcxNzYgICAgICAgIDB4NTQKIAotc3RhdGljIGNoYXIgYWR2NzE3NV9uYW1lW10gPSAiYWR2NzE3NSI7Ci1zdGF0aWMgY2hhciBhZHY3MTc2X25hbWVbXSA9ICJhZHY3MTc2IjsKLQogc3RhdGljIGNoYXIgKmlucHV0c1tdID0geyAicGFzc190aHJvdWdoIiwgInBsYXlfYmFjayIsICJjb2xvcl9iYXIiIH07CiBzdGF0aWMgY2hhciAqbm9ybXNbXSA9IHsgIlBBTCIsICJOVFNDIiwgIlNFQ0FNLT5QQUwgKG1heSBub3Qgd29yayEpIiB9OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgaW5saW5lIGludAotYWR2NzE3NV93cml0ZSAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICAgdTggICAgICAgICAgICAgICAgIHJlZywKLQkgICAgICAgdTggICAgICAgICAgICAgICAgIHZhbHVlKQorc3RhdGljIGlubGluZSBpbnQgYWR2NzE3NV93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsIHU4IHZhbHVlKQogewogCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1hZHY3MTc1X3JlYWQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgdTggICAgICAgICAgICAgICAgIHJlZykKK3N0YXRpYyBpbmxpbmUgaW50IGFkdjcxNzVfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcpCiB7CiAJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIHJlZyk7CiB9CiAKLXN0YXRpYyBpbnQKLWFkdjcxNzVfd3JpdGVfYmxvY2sgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JCSAgICAgY29uc3QgdTggICAgICAgICAgKmRhdGEsCi0JCSAgICAgdW5zaWduZWQgaW50ICAgICAgIGxlbikKK3N0YXRpYyBpbnQgYWR2NzE3NV93cml0ZV9ibG9jayhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkgICAgIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQogewogCWludCByZXQgPSAtMTsKIAl1OCByZWc7CkBAIC0xMjMsMTggKzk0LDE3IEBACiAJCQkJcmVnKys7CiAJCQkJbGVuIC09IDI7CiAJCQkJZGF0YSArPSAyOwotCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYKLQkJCQkgYmxvY2tfbGVuIDwgMzIpOwotCQkJaWYgKChyZXQgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBibG9ja19kYXRhLAotCQkJCQkJICAgYmxvY2tfbGVuKSkgPCAwKQorCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYgYmxvY2tfbGVuIDwgMzIpOworCQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwgYmxvY2tfbGVuKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogZG8gc29tZSBzbG93IEkyQyBlbXVsYXRpb24ga2luZCBvZiB0aGluZyAqLwogCQl3aGlsZSAobGVuID49IDIpIHsKIAkJCXJlZyA9ICpkYXRhKys7Ci0JCQlpZiAoKHJldCA9IGFkdjcxNzVfd3JpdGUoY2xpZW50LCByZWcsCi0JCQkJCQkgKmRhdGErKykpIDwgMCkKKwkJCXJldCA9IGFkdjcxNzVfd3JpdGUoY2xpZW50LCByZWcsICpkYXRhKyspOworCQkJaWYgKHJldCA8IDApCiAJCQkJYnJlYWs7CiAJCQlsZW4gLT0gMjsKIAkJfQpAQCAtMTQzLDEzICsxMTMsMTEgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZAotc2V0X3N1YmNhcnJpZXJfZnJlcSAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJICAgICBpbnQgICAgICAgICAgICAgICAgcGFzc190aHJvdWdoKQorc3RhdGljIHZvaWQgc2V0X3N1YmNhcnJpZXJfZnJlcShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQgcGFzc190aHJvdWdoKQogewogCS8qIGZvciBzb21lIHJlYXNvbiBwYXNzX3Rocm91Z2ggTlRTQyBuZWVkcwogCSAqIGEgZGlmZmVyZW50IHN1Yi1jYXJyaWVyIGZyZXEgdG8gcmVtYWluIHN0YWJsZS4gKi8KLQlpZihwYXNzX3Rocm91Z2gpCisJaWYgKHBhc3NfdGhyb3VnaCkKIAkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MDIsIDB4MDApOwogCWVsc2UKIAkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MDIsIDB4NTUpOwpAQCAtMTYwLDEyICsxMjgsMTIgQEAKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8vIE91dHB1dCBmaWx0ZXI6ICBTLVZpZGVvICBDb21wb3NpdGUKKy8qIE91dHB1dCBmaWx0ZXI6ICBTLVZpZGVvICBDb21wb3NpdGUgKi8KIAotI2RlZmluZSBNUjA1MCAgICAgICAweDExCS8vMHgwOQotI2RlZmluZSBNUjA2MCAgICAgICAweDE0CS8vMHgwYworI2RlZmluZSBNUjA1MCAgICAgICAweDExCS8qIDB4MDkgKi8KKyNkZWZpbmUgTVIwNjAgICAgICAgMHgxNAkvKiAweDBjICovCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIFRSME1PREUgICAgIDB4NDYKICNkZWZpbmUgVFIwUlNUCSAgICAweDgwCkBAIC0yMTYsMTUgKzE4NCwxMSBAQAogCTB4MDYsIDB4MWEsCQkvKiBzdWJjLiBwaGFzZSAqLwogfTsKIAotc3RhdGljIGludAotYWR2NzE3NV9jb21tYW5kIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgdW5zaWduZWQgaW50ICAgICAgIGNtZCwKLQkJIHZvaWQgICAgICAgICAgICAgICphcmcpCitzdGF0aWMgaW50IGFkdjcxNzVfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjbWQsIHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgYWR2NzE3NSAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCiAJc3dpdGNoIChjbWQpIHsKLQogCWNhc2UgMDoKIAkJLyogVGhpcyBpcyBqdXN0IGZvciB0ZXN0aW5nISEhICovCiAJCWFkdjcxNzVfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0X2NvbW1vbiwKQEAgLTI0MiwxNSArMjA2LDE0IEBACiAJCQkgICAgIFZJREVPX0VOQ09ERVJfU0VDQU07IC8qIHdlbGwsIGhhY2t5ICovCiAJCWNhcC0+aW5wdXRzID0gMjsKIAkJY2FwLT5vdXRwdXRzID0gMTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9TRVRfTk9STToKIAl7CiAJCWludCBpYXJnID0gKihpbnQgKikgYXJnOwogCiAJCXN3aXRjaCAoaWFyZykgewotCiAJCWNhc2UgVklERU9fTU9ERV9OVFNDOgogCQkJYWR2NzE3NV93cml0ZV9ibG9jayhjbGllbnQsIGluaXRfbnRzYywKIAkJCQkJICAgIHNpemVvZihpbml0X250c2MpKTsKQEAgLTI4NCwxNiArMjQ3LDEzIEBACiAJCQlhZHY3MTc1X3dyaXRlKGNsaWVudCwgMHgwNywgVFIwTU9ERSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWRwcmludGsoMSwgS0VSTl9FUlIgIiVzOiBpbGxlZ2FsIG5vcm06ICVkXG4iLAotCQkJCUkyQ19OQU1FKGNsaWVudCksIGlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiaWxsZWdhbCBub3JtOiAlZFxuIiwgaWFyZyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9Ci0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc3dpdGNoZWQgdG8gJXNcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQlub3Jtc1tpYXJnXSk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInN3aXRjaGVkIHRvICVzXG4iLCBub3Jtc1tpYXJnXSk7CiAJCWVuY29kZXItPm5vcm0gPSBpYXJnOwotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBFTkNPREVSX1NFVF9JTlBVVDoKIAl7CkBAIC0zMDQsNyArMjY0LDYgQEAKIAkJICppYXJnID0gMjogY29sb3IgYmFyICovCiAKIAkJc3dpdGNoIChpYXJnKSB7Ci0KIAkJY2FzZSAwOgogCQkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MDEsIDB4MDApOwogCkBAIC0zMzEsNyArMjkwLDcgQEAKIAkJCWFkdjcxNzVfd3JpdGUoY2xpZW50LCAweDBkLCAweDQ5KTsKIAkJCWFkdjcxNzVfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFIHwgVFIwUlNUKTsKIAkJCWFkdjcxNzVfd3JpdGUoY2xpZW50LCAweDA3LCBUUjBNT0RFKTsKLQkJCS8vdWRlbGF5KDEwKTsKKwkJCS8qIHVkZWxheSgxMCk7ICovCiAJCQlicmVhazsKIAogCQljYXNlIDI6CkBAIC0zNDMsMzkgKzMwMiwzNSBAQAogCQkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MGQsIDB4NDkpOwogCQkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MDcsIFRSME1PREUgfCBUUjBSU1QpOwogCQkJYWR2NzE3NV93cml0ZShjbGllbnQsIDB4MDcsIFRSME1PREUpOwotCQkJLy91ZGVsYXkoMTApOworCQkJLyogdWRlbGF5KDEwKTsgKi8KIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrKDEsIEtFUk5fRVJSICIlczogaWxsZWdhbCBpbnB1dDogJWRcbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSwgaWFyZyk7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbGxlZ2FsIGlucHV0OiAlZFxuIiwgaWFyZyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9Ci0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc3dpdGNoZWQgdG8gJXNcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQlpbnB1dHNbaWFyZ10pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzd2l0Y2hlZCB0byAlc1xuIiwgaW5wdXRzW2lhcmddKTsKIAkJZW5jb2Rlci0+aW5wdXQgPSBpYXJnOwotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBFTkNPREVSX1NFVF9PVVRQVVQ6CiAJewogCQlpbnQgKmlhcmcgPSBhcmc7CiAKIAkJLyogbm90IG11Y2ggY2hvaWNlIG9mIG91dHB1dHMgKi8KLQkJaWYgKCppYXJnICE9IDApIHsKKwkJaWYgKCppYXJnICE9IDApCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBFTkNPREVSX0VOQUJMRV9PVVRQVVQ6CiAJewogCQlpbnQgKmlhcmcgPSBhcmc7CiAKIAkJZW5jb2Rlci0+ZW5hYmxlID0gISEqaWFyZzsKLQl9CiAJCWJyZWFrOworCX0KIAogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMzkwLDE0NSArMzQ1LDY3IEBACiAgKiBHZW5lcmljIGkyYyBwcm9iZQogICogY29uY2VybmluZyB0aGUgYWRkcmVzc2VzOiBpMmMgd2FudHMgNyBiaXQgKHdpdGhvdXQgdGhlIHIvdyBiaXQpLCBzbyAnPj4xJwogICovCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0KLSAgICB7IEkyQ19BRFY3MTc1ID4+IDEsIChJMkNfQURWNzE3NSA+PiAxKSArIDEsCitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geworCUkyQ19BRFY3MTc1ID4+IDEsIChJMkNfQURWNzE3NSA+PiAxKSArIDEsCiAJSTJDX0FEVjcxNzYgPj4gMSwgKEkyQ19BRFY3MTc2ID4+IDEpICsgMSwKIAlJMkNfQ0xJRU5UX0VORAogfTsKIAotc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZSA9IEkyQ19DTElFTlRfRU5EOworSTJDX0NMSUVOVF9JTlNNT0Q7CiAKLXN0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudF9hZGRyZXNzX2RhdGEgYWRkcl9kYXRhID0gewotCS5ub3JtYWxfaTJjCQk9IG5vcm1hbF9pMmMsCi0JLnByb2JlCQkJPSAmaWdub3JlLAotCS5pZ25vcmUJCQk9ICZpZ25vcmUsCi19OwotCi1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaTJjX2RyaXZlcl9hZHY3MTc1OwotCi1zdGF0aWMgaW50Ci1hZHY3MTc1X2RldGVjdF9jbGllbnQgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAgYWRkcmVzcywKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAga2luZCkKK3N0YXRpYyBpbnQgYWR2NzE3NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewogCWludCBpOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IGFkdjcxNzUgKmVuY29kZXI7Ci0JY2hhciAqZG5hbWU7Ci0KLQlkcHJpbnRrKDEsCi0JCUtFUk5fSU5GTwotCQkiYWR2NzE3NS5jOiBkZXRlY3RpbmcgYWR2NzE3NSBjbGllbnQgb24gYWRkcmVzcyAweCV4XG4iLAotCQlhZGRyZXNzIDw8IDEpOwogCiAJLyogQ2hlY2sgaWYgdGhlIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIG5lZWRlZCBmZWF0dXJlcyAqLwotCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKLQkJcmV0dXJuIDA7CisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCisJCXJldHVybiAtRU5PREVWOwogCi0JY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWNsaWVudCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0JY2xpZW50LT5hZGRyID0gYWRkcmVzczsKLQljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwotCWNsaWVudC0+ZHJpdmVyID0gJmkyY19kcml2ZXJfYWR2NzE3NTsKLQlpZiAoKGNsaWVudC0+YWRkciA9PSBJMkNfQURWNzE3NSA+PiAxKSB8fAotCSAgICAoY2xpZW50LT5hZGRyID09IChJMkNfQURWNzE3NSA+PiAxKSArIDEpKSB7Ci0JCWRuYW1lID0gYWR2NzE3NV9uYW1lOwotCX0gZWxzZSBpZiAoKGNsaWVudC0+YWRkciA9PSBJMkNfQURWNzE3NiA+PiAxKSB8fAotCQkgICAoY2xpZW50LT5hZGRyID09IChJMkNfQURWNzE3NiA+PiAxKSArIDEpKSB7Ci0JCWRuYW1lID0gYWR2NzE3Nl9uYW1lOwotCX0gZWxzZSB7Ci0JCS8qIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSEhISAqLwotCQlrZnJlZShjbGllbnQpOwotCQlyZXR1cm4gMDsKLQl9Ci0Jc3RybGNweShJMkNfTkFNRShjbGllbnQpLCBkbmFtZSwgc2l6ZW9mKEkyQ19OQU1FKGNsaWVudCkpKTsKKwl2NGxfaW5mbyhjbGllbnQsICJjaGlwIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQkJY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CiAKIAllbmNvZGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGFkdjcxNzUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoZW5jb2RlciA9PSBOVUxMKSB7Ci0JCWtmcmVlKGNsaWVudCk7CisJaWYgKGVuY29kZXIgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JfQogCWVuY29kZXItPm5vcm0gPSBWSURFT19NT0RFX1BBTDsKIAllbmNvZGVyLT5pbnB1dCA9IDA7CiAJZW5jb2Rlci0+ZW5hYmxlID0gMTsKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBlbmNvZGVyKTsKIAotCWkgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOwotCWlmIChpKSB7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JCWtmcmVlKGVuY29kZXIpOwotCQlyZXR1cm4gaTsKLQl9Ci0KIAlpID0gYWR2NzE3NV93cml0ZV9ibG9jayhjbGllbnQsIGluaXRfY29tbW9uLCBzaXplb2YoaW5pdF9jb21tb24pKTsKIAlpZiAoaSA+PSAwKSB7CiAJCWkgPSBhZHY3MTc1X3dyaXRlKGNsaWVudCwgMHgwNywgVFIwTU9ERSB8IFRSMFJTVCk7CiAJCWkgPSBhZHY3MTc1X3dyaXRlKGNsaWVudCwgMHgwNywgVFIwTU9ERSk7CiAJCWkgPSBhZHY3MTc1X3JlYWQoY2xpZW50LCAweDEyKTsKLQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzX2F0dGFjaDogcmV2LiAlZCBhdCAweCV4XG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgaSAmIDEsIGNsaWVudC0+YWRkciA8PCAxKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAicmV2aXNpb24gJWRcbiIsIGkgJiAxKTsKIAl9Ci0JaWYgKGkgPCAwKSB7Ci0JCWRwcmludGsoMSwgS0VSTl9FUlIgIiVzX2F0dGFjaDogaW5pdCBlcnJvciAweCV4XG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgaSk7Ci0JfQotCisJaWYgKGkgPCAwKQorCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbml0IGVycm9yIDB4JXhcbiIsIGkpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1hZHY3MTc1X2F0dGFjaF9hZGFwdGVyIChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCitzdGF0aWMgaW50IGFkdjcxNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7Ci0JZHByaW50aygxLAotCQlLRVJOX0lORk8KLQkJImFkdjcxNzUuYzogc3RhcnRpbmcgcHJvYmUgZm9yIGFkYXB0ZXIgJXMgKDB4JXgpXG4iLAotCQlJMkNfTkFNRShhZGFwdGVyKSwgYWRhcHRlci0+aWQpOwotCXJldHVybiBpMmNfcHJvYmUoYWRhcHRlciwgJmFkZHJfZGF0YSwgJmFkdjcxNzVfZGV0ZWN0X2NsaWVudCk7Ci19Ci0KLXN0YXRpYyBpbnQKLWFkdjcxNzVfZGV0YWNoX2NsaWVudCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgYWR2NzE3NSAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwotCWludCBlcnI7Ci0KLQllcnIgPSBpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpOwotCWlmIChlcnIpIHsKLQkJcmV0dXJuIGVycjsKLQl9Ci0KLQlrZnJlZShlbmNvZGVyKTsKLQlrZnJlZShjbGllbnQpOwotCisJa2ZyZWUoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwogCXJldHVybiAwOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaTJjX2RyaXZlcl9hZHY3MTc1ID0gewotCS5kcml2ZXIgPSB7Ci0JCS5uYW1lID0gImFkdjcxNzUiLAkvKiBuYW1lICovCi0JfSwKLQotCS5pZCA9IEkyQ19EUklWRVJJRF9BRFY3MTc1LAotCi0JLmF0dGFjaF9hZGFwdGVyID0gYWR2NzE3NV9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCA9IGFkdjcxNzVfZGV0YWNoX2NsaWVudCwKLQkuY29tbWFuZCA9IGFkdjcxNzVfY29tbWFuZCwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhZHY3MTc1X2lkW10gPSB7CisJeyAiYWR2NzE3NSIsIDAgfSwKKwl7ICJhZHY3MTc2IiwgMCB9LAorCXsgfQogfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBhZHY3MTc1X2lkKTsKIAotc3RhdGljIGludCBfX2luaXQKLWFkdjcxNzVfaW5pdCAodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmkyY19kcml2ZXJfYWR2NzE3NSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotYWR2NzE3NV9leGl0ICh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZpMmNfZHJpdmVyX2FkdjcxNzUpOwotfQotCi1tb2R1bGVfaW5pdChhZHY3MTc1X2luaXQpOwotbW9kdWxlX2V4aXQoYWR2NzE3NV9leGl0KTsKK3N0YXRpYyBzdHJ1Y3QgdjRsMl9pMmNfZHJpdmVyX2RhdGEgdjRsMl9pMmNfZGF0YSA9IHsKKwkubmFtZSA9ICJhZHY3MTc1IiwKKwkuZHJpdmVyaWQgPSBJMkNfRFJJVkVSSURfQURWNzE3NSwKKwkuY29tbWFuZCA9IGFkdjcxNzVfY29tbWFuZCwKKwkucHJvYmUgPSBhZHY3MTc1X3Byb2JlLAorCS5yZW1vdmUgPSBhZHY3MTc1X3JlbW92ZSwKKwkuaWRfdGFibGUgPSBhZHY3MTc1X2lkLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWNhcmRzLmMKaW5kZXggNWYwN2E4YS4uZDYwMTIzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWNhcmRzLmMKQEAgLTkwLDYgKzkwLDcgQEAKIAljYXNlIDcyMjIxOiAvKiBXaW5UVi1IVlI5NTBxIChPRU0sIElSLCBBVFNDL1FBTSBhbmQgYmFzaWMgYW5hbG9nIHZpZGVvICovCiAJY2FzZSA3MjIzMTogLyogV2luVFYtSFZSOTUwcSAoT0VNLCBJUiwgQVRTQy9RQU0gYW5kIGJhc2ljIGFuYWxvZyB2aWRlbyAqLwogCWNhc2UgNzIyNDE6IC8qIFdpblRWLUhWUjk1MHEgKE9FTSwgTm8gSVIsIEFUU0MvUUFNIGFuZCBiYXNpYyBhbmFsb2cgdmlkZW8gKi8KKwljYXNlIDcyMjUxOiAvKiBXaW5UVi1IVlI5NTBxIChSZXRhaWwsIElSLCBBVFNDL1FBTSBhbmQgYmFzaWMgYW5hbG9nIHZpZGVvICovCiAJY2FzZSA3MjMwMTogLyogV2luVFYtSFZSODUwIChSZXRhaWwsIElSLCBBVFNDIGFuZCBiYXNpYyBhbmFsb2cgdmlkZW8gKi8KIAljYXNlIDcyNTAwOiAvKiBXaW5UVi1IVlI5NTBxIChPRU0sIE5vIElSLCBBVFNDL1FBTSAqLwogCQlicmVhazsKQEAgLTE4NSw3ICsxODYsNyBAQAogfQogCiAvKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovCi1zdHJ1Y3QgdXNiX2RldmljZV9pZCBhdTA4MjhfdXNiX2lkX3RhYmxlIFtdID0geworc3RydWN0IHVzYl9kZXZpY2VfaWQgYXUwODI4X3VzYl9pZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDIwNDAsIDB4NzIwMCksCiAJCS5kcml2ZXJfaW5mbyA9IEFVMDgyOF9CT0FSRF9IQVVQUEFVR0VfSFZSOTUwUSB9LAogCXsgVVNCX0RFVklDRSgweDIwNDAsIDB4NzI0MCksCkBAIC0xOTgsNiArMTk5LDggQEAKIAkJLmRyaXZlcl9pbmZvID0gQVUwODI4X0JPQVJEX0hBVVBQQVVHRV9IVlI5NTBRIH0sCiAJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg3MjFiKSwKIAkJLmRyaXZlcl9pbmZvID0gQVUwODI4X0JPQVJEX0hBVVBQQVVHRV9IVlI5NTBRIH0sCisJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg3MjFlKSwKKwkJLmRyaXZlcl9pbmZvID0gQVUwODI4X0JPQVJEX0hBVVBQQVVHRV9IVlI5NTBRIH0sCiAJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg3MjFmKSwKIAkJLmRyaXZlcl9pbmZvID0gQVUwODI4X0JPQVJEX0hBVVBQQVVHRV9IVlI5NTBRIH0sCiAJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg3MjgwKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtY29yZS5jCmluZGV4IGQ4NTZkZTkuLjU3NjVlODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWNvcmUuYwpAQCAtOTEsNyArOTEsOCBAQAogCQlzdGF0dXMgPSB1c2JfY29udHJvbF9tc2coZGV2LT51c2JkZXYsCiAJCQkJdXNiX3NuZGN0cmxwaXBlKGRldi0+dXNiZGV2LCAwKSwKIAkJCQlyZXF1ZXN0LAotCQkJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCQlVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiB8CisJCQkJCVVTQl9SRUNJUF9ERVZJQ0UsCiAJCQkJdmFsdWUsIGluZGV4LAogCQkJCWNwLCBzaXplLCAxMDAwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWR2Yi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LWR2Yi5jCmluZGV4IGYwZmNkYjQuLmE4ODJjZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC1kdmIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtZHZiLmMKQEAgLTE3Myw3ICsxNzMsOCBAQAogCQlwdXJiLT5zdGF0dXMgPSAtRUlOUFJPR1JFU1M7CiAJCXVzYl9maWxsX2J1bGtfdXJiKHB1cmIsCiAJCQkJICBkZXYtPnVzYmRldiwKLQkJCQkgIHVzYl9yY3ZidWxrcGlwZShkZXYtPnVzYmRldiwgX0FVMDgyOF9CVUxLUElQRSksCisJCQkJICB1c2JfcmN2YnVsa3BpcGUoZGV2LT51c2JkZXYsCisJCQkJCV9BVTA4MjhfQlVMS1BJUEUpLAogCQkJCSAgcHVyYi0+dHJhbnNmZXJfYnVmZmVyLAogCQkJCSAgVVJCX0JVRlNJWkUsCiAJCQkJICB1cmJfY29tcGxldGlvbiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4MTkuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4MTkuYwppbmRleCBkZGQyYTc5Li5hMDdiN2I4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODE5LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDgxOS5jCkBAIC0yOSw0NCArMjksMjUgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWlkLmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb19kZWNvZGVyLmg+Ci0KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWNvbW1vbi5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaD4KIAogTU9EVUxFX0RFU0NSSVBUSU9OKCJCcm9va3RyZWUtODE5IHZpZGVvIGRlY29kZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJNaWtlIEJlcm5zb24gJiBEYXZlIFBlcmtzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLQotI2RlZmluZSBJMkNfTkFNRShzKSAocyktPm5hbWUKLQotCiBzdGF0aWMgaW50IGRlYnVnOwogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKLSNkZWZpbmUgZHByaW50ayhudW0sIGZvcm1hdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAoZGVidWcgPj0gbnVtKSBcCi0JCQlwcmludGsoZm9ybWF0LCAjI2FyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RydWN0IGJ0ODE5IHsKQEAgLTk3LDE0ICs3OCw5IEBACiAJezg1OCAtIDI0LCAyMCwgNTI1IC0gMiwgMSwgMHgwMGY4LCAweDAwMDB9LAogfTsKIAotI2RlZmluZSAgIEkyQ19CVDgxOSAgICAgICAgMHg4YQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgaW5saW5lIGludAotYnQ4MTlfd3JpdGUgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgdTggICAgICAgICAgICAgICAgIHZhbHVlKQorc3RhdGljIGlubGluZSBpbnQgYnQ4MTlfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgYnQ4MTkgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIApAQCAtMTEyLDI0ICs4OCwxNSBAQAogCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1idDgxOV9zZXRiaXQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgdTggICAgICAgICAgICAgICAgIHJlZywKLQkgICAgICB1OCAgICAgICAgICAgICAgICAgYml0LAotCSAgICAgIHU4ICAgICAgICAgICAgICAgICB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgaW50IGJ0ODE5X3NldGJpdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsIHU4IGJpdCwgdTggdmFsdWUpCiB7CiAJc3RydWN0IGJ0ODE5ICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CiAKIAlyZXR1cm4gYnQ4MTlfd3JpdGUoY2xpZW50LCByZWcsCi0JCQkgICAoZGVjb2Rlci0+Ci0JCQkgICAgcmVnW3JlZ10gJiB+KDEgPDwgYml0KSkgfAotCQkJICAgICh2YWx1ZSA/ICgxIDw8IGJpdCkgOiAwKSk7CisJCShkZWNvZGVyLT5yZWdbcmVnXSAmIH4oMSA8PCBiaXQpKSB8ICh2YWx1ZSA/ICgxIDw8IGJpdCkgOiAwKSk7CiB9CiAKLXN0YXRpYyBpbnQKLWJ0ODE5X3dyaXRlX2Jsb2NrIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgICBjb25zdCB1OCAgICAgICAgICAqZGF0YSwKLQkJICAgdW5zaWduZWQgaW50ICAgICAgIGxlbikKK3N0YXRpYyBpbnQgYnQ4MTlfd3JpdGVfYmxvY2soc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJaW50IHJldCA9IC0xOwogCXU4IHJlZzsKQEAgLTE1MCwxMCArMTE3LDkgQEAKIAkJCQkgICAgZGVjb2Rlci0+cmVnW3JlZysrXSA9IGRhdGFbMV07CiAJCQkJbGVuIC09IDI7CiAJCQkJZGF0YSArPSAyOwotCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYKLQkJCQkgYmxvY2tfbGVuIDwgMzIpOwotCQkJaWYgKChyZXQgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBibG9ja19kYXRhLAotCQkJCQkJICAgYmxvY2tfbGVuKSkgPCAwKQorCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYgYmxvY2tfbGVuIDwgMzIpOworCQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwgYmxvY2tfbGVuKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQl9CiAJfSBlbHNlIHsKQEAgLTE2OSwyMCArMTM1LDE3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLWJ0ODE5X3JlYWQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgIHU4ICAgICAgICAgICAgICAgICByZWcpCitzdGF0aWMgaW5saW5lIGludCBidDgxOV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZykKIHsKIAlyZXR1cm4gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgcmVnKTsKIH0KIAotc3RhdGljIGludAotYnQ4MTlfaW5pdCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgYnQ4MTlfaW5pdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCXN0cnVjdCBidDgxOSAqZGVjb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCiAJc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5pdFtdID0gewotCQkvLzB4MWYsIDB4MDAsICAgICAvKiBSZXNldCAqLworCQkvKjB4MWYsIDB4MDAsKi8gICAgIC8qIFJlc2V0ICovCiAJCTB4MDEsIDB4NTksCS8qIDB4MDEgaW5wdXQgZm9ybWF0ICovCiAJCTB4MDIsIDB4MDAsCS8qIDB4MDIgdGVtcG9yYWwgZGVjaW1hdGlvbiAqLwogCQkweDAzLCAweDEyLAkvKiAweDAzIENyb3BwaW5nIG1zYiAqLwpAQCAtMjE4LDEyICsxODEsMTAgQEAKIAlzdHJ1Y3QgdGltaW5nICp0aW1pbmcgPSAmdGltaW5nX2RhdGFbZGVjb2Rlci0+bm9ybV07CiAKIAlpbml0WzB4MDMgKiAyIC0gMV0gPQotCSAgICAoKCh0aW1pbmctPnZkZWxheSA+PiA4KSAmIDB4MDMpIDw8IDYpIHwgKCgodGltaW5nLT4KLQkJCQkJCSAgICAgICB2YWN0aXZlID4+IDgpICYKLQkJCQkJCSAgICAgIDB4MDMpIDw8IDQpIHwKLQkgICAgKCgodGltaW5nLT5oZGVsYXkgPj4gOCkgJiAweDAzKSA8PCAyKSB8ICgodGltaW5nLT4KLQkJCQkJCSAgICAgIGhhY3RpdmUgPj4gOCkgJgotCQkJCQkJICAgICAweDAzKTsKKwkgICAgKCgodGltaW5nLT52ZGVsYXkgPj4gOCkgJiAweDAzKSA8PCA2KSB8CisJICAgICgoKHRpbWluZy0+dmFjdGl2ZSA+PiA4KSAmIDB4MDMpIDw8IDQpIHwKKwkgICAgKCgodGltaW5nLT5oZGVsYXkgPj4gOCkgJiAweDAzKSA8PCAyKSB8CisJICAgICgodGltaW5nLT5oYWN0aXZlID4+IDgpICYgMHgwMyk7CiAJaW5pdFsweDA0ICogMiAtIDFdID0gdGltaW5nLT52ZGVsYXkgJiAweGZmOwogCWluaXRbMHgwNSAqIDIgLSAxXSA9IHRpbWluZy0+dmFjdGl2ZSAmIDB4ZmY7CiAJaW5pdFsweDA2ICogMiAtIDFdID0gdGltaW5nLT5oZGVsYXkgJiAweGZmOwpAQCAtMjM4LDI3ICsxOTksMjIgQEAKIAogCS8qIGluaXQgKi8KIAlyZXR1cm4gYnQ4MTlfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0LCBzaXplb2YoaW5pdCkpOwotCiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBpbnQKLWJ0ODE5X2NvbW1hbmQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgIHVuc2lnbmVkIGludCAgICAgICBjbWQsCi0JICAgICAgIHZvaWQgICAgICAgICAgICAgICphcmcpCitzdGF0aWMgaW50IGJ0ODE5X2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdW5zaWduZWQgY21kLCB2b2lkICphcmcpCiB7CiAJaW50IHRlbXA7CiAKIAlzdHJ1Y3QgYnQ4MTkgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAotCWlmICghZGVjb2Rlci0+aW5pdGlhbGl6ZWQpIHsJLy8gRmlyc3QgY2FsbCB0byBidDgxOV9pbml0IGNvdWxkIGJlCi0JCWJ0ODE5X2luaXQoY2xpZW50KTsJLy8gd2l0aG91dCAjRlJTVCA9IDAKKwlpZiAoIWRlY29kZXItPmluaXRpYWxpemVkKSB7CS8qIEZpcnN0IGNhbGwgdG8gYnQ4MTlfaW5pdCBjb3VsZCBiZSAqLworCQlidDgxOV9pbml0KGNsaWVudCk7CS8qIHdpdGhvdXQgI0ZSU1QgPSAwICovCiAJCWRlY29kZXItPmluaXRpYWxpemVkID0gMTsKIAl9CiAKIAlzd2l0Y2ggKGNtZCkgewotCiAJY2FzZSAwOgogCQkvKiBUaGlzIGlzIGp1c3QgZm9yIHRlc3RpbmchISEgKi8KIAkJYnQ4MTlfaW5pdChjbGllbnQpOwpAQCAtMjc0LDggKzIzMCw4IEBACiAJCQkgICAgIFZJREVPX0RFQ09ERVJfQ0NJUjsKIAkJY2FwLT5pbnB1dHMgPSA4OwogCQljYXAtPm91dHB1dHMgPSAxOwotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX0dFVF9TVEFUVVM6CiAJewpAQCAtMjg1LDkgKzI0MSw5IEBACiAKIAkJc3RhdHVzID0gYnQ4MTlfcmVhZChjbGllbnQsIDB4MDApOwogCQlyZXMgPSAwOwotCQlpZiAoKHN0YXR1cyAmIDB4ODApKSB7CisJCWlmICgoc3RhdHVzICYgMHg4MCkpCiAJCQlyZXMgfD0gREVDT0RFUl9TVEFUVVNfR09PRDsKLQkJfQorCiAJCXN3aXRjaCAoZGVjb2Rlci0+bm9ybSkgewogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCXJlcyB8PSBERUNPREVSX1NUQVRVU19OVFNDOwpAQCAtMjk3LDI4ICsyNTMsMjUgQEAKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQljYXNlIFZJREVPX01PREVfQVVUTzoKLQkJCWlmICgoc3RhdHVzICYgMHgxMCkpIHsKKwkJCWlmICgoc3RhdHVzICYgMHgxMCkpCiAJCQkJcmVzIHw9IERFQ09ERVJfU1RBVFVTX1BBTDsKLQkJCX0gZWxzZSB7CisJCQllbHNlCiAJCQkJcmVzIHw9IERFQ09ERVJfU1RBVFVTX05UU0M7Ci0JCQl9CiAJCQlicmVhazsKIAkJfQogCQlyZXMgfD0gREVDT0RFUl9TVEFUVVNfQ09MT1I7CiAJCSppYXJnID0gcmVzOwogCi0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogZ2V0IHN0YXR1cyAleFxuIiwgSTJDX05BTUUoY2xpZW50KSwKLQkJCSppYXJnKTsKLQl9CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgImdldCBzdGF0dXMgJXhcbiIsICppYXJnKTsKIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX1NFVF9OT1JNOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCQlzdHJ1Y3QgdGltaW5nICp0aW1pbmcgPSBOVUxMOwogCi0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc2V0IG5vcm0gJXhcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNldCBub3JtICV4XG4iLCAqaWFyZyk7CiAKIAkJc3dpdGNoICgqaWFyZykgewogCQljYXNlIFZJREVPX01PREVfTlRTQzoKQEAgLTMyNyw3ICsyODAsNyBAQAogCQkJYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgwMSwgNSwgMCk7CiAJCQlidDgxOV93cml0ZShjbGllbnQsIDB4MTgsIDB4NjgpOwogCQkJYnQ4MTlfd3JpdGUoY2xpZW50LCAweDE5LCAweDVkKTsKLQkJCS8vYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxYSwgIDUsIDEpOworCQkJLyogYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxYSwgIDUsIDEpOyAqLwogCQkJdGltaW5nID0gJnRpbWluZ19kYXRhW1ZJREVPX01PREVfTlRTQ107CiAJCQlicmVhazsKIAkJY2FzZSBWSURFT19NT0RFX1BBTDoKQEAgLTMzNiw3ICsyODksNyBAQAogCQkJYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgwMSwgNSwgMSk7CiAJCQlidDgxOV93cml0ZShjbGllbnQsIDB4MTgsIDB4N2YpOwogCQkJYnQ4MTlfd3JpdGUoY2xpZW50LCAweDE5LCAweDcyKTsKLQkJCS8vYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxYSwgIDUsIDApOworCQkJLyogYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxYSwgIDUsIDApOyAqLwogCQkJdGltaW5nID0gJnRpbWluZ19kYXRhW1ZJREVPX01PREVfUEFMXTsKIAkJCWJyZWFrOwogCQljYXNlIFZJREVPX01PREVfQVVUTzoKQEAgLTM0NCwxMCArMjk3LDcgQEAKIAkJCWJ0ODE5X3NldGJpdChjbGllbnQsIDB4MDEsIDEsIDApOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrKDEsCi0JCQkJS0VSTl9FUlIKLQkJCQkiJXM6IHVuc3VwcG9ydGVkIG5vcm0gJWRcbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSwgKmlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAidW5zdXBwb3J0ZWQgbm9ybSAleFxuIiwgKmlhcmcpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIApAQCAtMzY2LDE5ICszMTYsMTcgQEAKIAkJfQogCiAJCWRlY29kZXItPm5vcm0gPSAqaWFyZzsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfSU5QVVQ6CiAJewogCQlpbnQgKmlhcmcgPSBhcmc7CiAKLQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBzZXQgaW5wdXQgJXhcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNldCBpbnB1dCAleFxuIiwgKmlhcmcpOwogCi0JCWlmICgqaWFyZyA8IDAgfHwgKmlhcmcgPiA3KSB7CisJCWlmICgqaWFyZyA8IDAgfHwgKmlhcmcgPiA3KQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KIAogCQlpZiAoZGVjb2Rlci0+aW5wdXQgIT0gKmlhcmcpIHsKIAkJCWRlY29kZXItPmlucHV0ID0gKmlhcmc7CkBAIC0zOTEsNTIgKzMzOSw0MiBAQAogCQkJCWJ0ODE5X3NldGJpdChjbGllbnQsIDB4MWEsIDEsIDApOwogCQkJfQogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfU0VUX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHNldCBvdXRwdXQgJXhcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNldCBvdXRwdXQgJXhcbiIsICppYXJnKTsKIAogCQkvKiBub3QgbXVjaCBjaG9pY2Ugb2Ygb3V0cHV0cyAqLwotCQlpZiAoKmlhcmcgIT0gMCkgeworCQlpZiAoKmlhcmcgIT0gMCkKIAkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfRU5BQkxFX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAkJaW50IGVuYWJsZSA9ICgqaWFyZyAhPSAwKTsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IGVuYWJsZSBvdXRwdXQgJXhcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCAqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgImVuYWJsZSBvdXRwdXQgJXhcbiIsICppYXJnKTsKIAogCQlpZiAoZGVjb2Rlci0+ZW5hYmxlICE9IGVuYWJsZSkgewogCQkJZGVjb2Rlci0+ZW5hYmxlID0gZW5hYmxlOwotCi0JCQlpZiAoZGVjb2Rlci0+ZW5hYmxlKSB7Ci0JCQkJYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxNiwgNywgMCk7Ci0JCQl9IGVsc2UgewotCQkJCWJ0ODE5X3NldGJpdChjbGllbnQsIDB4MTYsIDcsIDEpOwotCQkJfQorCQkJYnQ4MTlfc2V0Yml0KGNsaWVudCwgMHgxNiwgNywgIWVuYWJsZSk7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfUElDVFVSRToKIAl7CiAJCXN0cnVjdCB2aWRlb19waWN0dXJlICpwaWMgPSBhcmc7CiAKLQkJZHByaW50aygxLAotCQkJS0VSTl9JTkZPCi0JCQkiJXM6IHNldCBwaWN0dXJlIGJyaWdodG5lc3MgJWQgY29udHJhc3QgJWQgY29sb3VyICVkXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgcGljLT5icmlnaHRuZXNzLCBwaWMtPmNvbnRyYXN0LAotCQkJcGljLT5jb2xvdXIpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsCisJCQkic2V0IHBpY3R1cmUgYnJpZ2h0bmVzcyAlZCBjb250cmFzdCAlZCBjb2xvdXIgJWRcbiIsCisJCQlwaWMtPmJyaWdodG5lc3MsIHBpYy0+Y29udHJhc3QsIHBpYy0+Y29sb3VyKTsKIAogCiAJCWlmIChkZWNvZGVyLT5icmlnaHQgIT0gcGljLT5icmlnaHRuZXNzKSB7CkBAIC00NzQsOCArNDEyLDggQEAKIAkJCWJ0ODE5X3dyaXRlKGNsaWVudCwgMHgwZiwKIAkJCQkgICAgMTI4IC0gKGRlY29kZXItPmh1ZSA+PiA4KSk7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNDg2LDU1ICs0MjQsNDQgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotLyoKLSAqIEdlbmVyaWMgaTJjIHByb2JlCi0gKiBjb25jZXJuaW5nIHRoZSBhZGRyZXNzZXM6IGkyYyB3YW50cyA3IGJpdCAod2l0aG91dCB0aGUgci93IGJpdCksIHNvICc+PjEnCi0gKi8KLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10gPSB7Ci0JSTJDX0JUODE5ID4+IDEsCi0JSTJDX0NMSUVOVF9FTkQsCi19Oworc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgMHg4YSA+PiAxLCBJMkNfQ0xJRU5UX0VORCB9OwogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaWdub3JlID0gSTJDX0NMSUVOVF9FTkQ7CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50X2FkZHJlc3NfZGF0YSBhZGRyX2RhdGEgPSB7Ci0JLm5vcm1hbF9pMmMJCT0gbm9ybWFsX2kyYywKLQkucHJvYmUJCQk9ICZpZ25vcmUsCi0JLmlnbm9yZQkJCT0gJmlnbm9yZSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX2J0ODE5OwotCi1zdGF0aWMgaW50Ci1idDgxOV9kZXRlY3RfY2xpZW50IChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCi0JCSAgICAgaW50ICAgICAgICAgICAgICAgICBhZGRyZXNzLAotCQkgICAgIGludCAgICAgICAgICAgICAgICAga2luZCkKK3N0YXRpYyBpbnQgYnQ4MTlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCWNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKIHsKLQlpbnQgaSwgaWQ7CisJaW50IGksIHZlcjsKIAlzdHJ1Y3QgYnQ4MTkgKmRlY29kZXI7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKLQotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJidDgxOTogZGV0ZWN0aW5nIGJ0ODE5IGNsaWVudCBvbiBhZGRyZXNzIDB4JXhcbiIsCi0JCWFkZHJlc3MgPDwgMSk7CisJY29uc3QgY2hhciAqbmFtZTsKIAogCS8qIENoZWNrIGlmIHRoZSBhZGFwdGVyIHN1cHBvcnRzIHRoZSBuZWVkZWQgZmVhdHVyZXMgKi8KLQlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCi0JCXJldHVybiAwOworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQorCQlyZXR1cm4gLUVOT0RFVjsKIAotCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFjbGllbnQpCi0JCXJldHVybiAtRU5PTUVNOwotCWNsaWVudC0+YWRkciA9IGFkZHJlc3M7Ci0JY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKLQljbGllbnQtPmRyaXZlciA9ICZpMmNfZHJpdmVyX2J0ODE5OworCXZlciA9IGJ0ODE5X3JlYWQoY2xpZW50LCAweDE3KTsKKwlzd2l0Y2ggKHZlciAmIDB4ZjApIHsKKwljYXNlIDB4NzA6CisJCW5hbWUgPSAiYnQ4MTlhIjsKKwkJYnJlYWs7CisJY2FzZSAweDYwOgorCQluYW1lID0gImJ0ODE3YSI7CisJCWJyZWFrOworCWNhc2UgMHgyMDoKKwkJbmFtZSA9ICJidDgxNWEiOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsCisJCQkidW5rbm93biBjaGlwIHZlcnNpb24gMHglMDJ4XG4iLCB2ZXIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwl2NGxfaW5mbyhjbGllbnQsICIlcyBmb3VuZCBAIDB4JXggKCVzKVxuIiwgbmFtZSwKKwkJCWNsaWVudC0+YWRkciA8PCAxLCBjbGllbnQtPmFkYXB0ZXItPm5hbWUpOwogCiAJZGVjb2RlciA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBidDgxOSksIEdGUF9LRVJORUwpOwotCWlmIChkZWNvZGVyID09IE5VTEwpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoZGVjb2RlciA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAJZGVjb2Rlci0+bm9ybSA9IFZJREVPX01PREVfTlRTQzsKIAlkZWNvZGVyLT5pbnB1dCA9IDA7CiAJZGVjb2Rlci0+ZW5hYmxlID0gMTsKQEAgLTU0NSw5NyArNDcyLDMzIEBACiAJZGVjb2Rlci0+aW5pdGlhbGl6ZWQgPSAwOwogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRlY29kZXIpOwogCi0JaWQgPSBidDgxOV9yZWFkKGNsaWVudCwgMHgxNyk7Ci0Jc3dpdGNoIChpZCAmIDB4ZjApIHsKLQljYXNlIDB4NzA6Ci0JCXN0cmxjcHkoSTJDX05BTUUoY2xpZW50KSwgImJ0ODE5YSIsIHNpemVvZihJMkNfTkFNRShjbGllbnQpKSk7Ci0JCWJyZWFrOwotCWNhc2UgMHg2MDoKLQkJc3RybGNweShJMkNfTkFNRShjbGllbnQpLCAiYnQ4MTdhIiwgc2l6ZW9mKEkyQ19OQU1FKGNsaWVudCkpKTsKLQkJYnJlYWs7Ci0JY2FzZSAweDIwOgotCQlzdHJsY3B5KEkyQ19OQU1FKGNsaWVudCksICJidDgxNWEiLCBzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlkcHJpbnRrKDEsCi0JCQlLRVJOX0VSUgotCQkJImJ0ODE5OiB1bmtub3duIGNoaXAgdmVyc2lvbiAweCV4ICh2ZXIgMHgleClcbiIsCi0JCQlpZCAmIDB4ZjAsIGlkICYgMHgwZik7Ci0JCWtmcmVlKGRlY29kZXIpOwotCQlrZnJlZShjbGllbnQpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlpID0gaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoaSkgewotCQlrZnJlZShjbGllbnQpOwotCQlrZnJlZShkZWNvZGVyKTsKLQkJcmV0dXJuIGk7Ci0JfQotCiAJaSA9IGJ0ODE5X2luaXQoY2xpZW50KTsKLQlpZiAoaSA8IDApIHsKLQkJZHByaW50aygxLCBLRVJOX0VSUiAiJXNfYXR0YWNoOiBpbml0IHN0YXR1cyAlZFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGkpOwotCX0gZWxzZSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fSU5GTwotCQkJIiVzX2F0dGFjaDogY2hpcCB2ZXJzaW9uIDB4JXggYXQgYWRkcmVzcyAweCV4XG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgaWQgJiAweDBmLAotCQkJY2xpZW50LT5hZGRyIDw8IDEpOwotCX0KLQorCWlmIChpIDwgMCkKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiaW5pdCBzdGF0dXMgJWRcbiIsIGkpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1idDgxOV9hdHRhY2hfYWRhcHRlciAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQorc3RhdGljIGludCBidDgxOV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKLQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsICZidDgxOV9kZXRlY3RfY2xpZW50KTsKLX0KLQotc3RhdGljIGludAotYnQ4MTlfZGV0YWNoX2NsaWVudCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgYnQ4MTkgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoZXJyKSB7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0Ja2ZyZWUoZGVjb2Rlcik7Ci0Ja2ZyZWUoY2xpZW50KTsKLQorCWtmcmVlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKIAlyZXR1cm4gMDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfYnQ4MTkgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAiYnQ4MTkiLAotCX0sCi0KLQkuaWQgPSBJMkNfRFJJVkVSSURfQlQ4MTksCi0KLQkuYXR0YWNoX2FkYXB0ZXIgPSBidDgxOV9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCA9IGJ0ODE5X2RldGFjaF9jbGllbnQsCi0JLmNvbW1hbmQgPSBidDgxOV9jb21tYW5kLAorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGJ0ODE5X2lkW10gPSB7CisJeyAiYnQ4MTlhIiwgMCB9LAorCXsgImJ0ODE3YSIsIDAgfSwKKwl7ICJidDgxNWEiLCAwIH0sCisJeyB9CiB9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGJ0ODE5X2lkKTsKIAotc3RhdGljIGludCBfX2luaXQKLWJ0ODE5X2luaXRfbW9kdWxlICh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmaTJjX2RyaXZlcl9idDgxOSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotYnQ4MTlfZXhpdCAodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmaTJjX2RyaXZlcl9idDgxOSk7Ci19Ci0KLW1vZHVsZV9pbml0KGJ0ODE5X2luaXRfbW9kdWxlKTsKLW1vZHVsZV9leGl0KGJ0ODE5X2V4aXQpOworc3RhdGljIHN0cnVjdCB2NGwyX2kyY19kcml2ZXJfZGF0YSB2NGwyX2kyY19kYXRhID0geworCS5uYW1lID0gImJ0ODE5IiwKKwkuZHJpdmVyaWQgPSBJMkNfRFJJVkVSSURfQlQ4MTksCisJLmNvbW1hbmQgPSBidDgxOV9jb21tYW5kLAorCS5wcm9iZSA9IGJ0ODE5X3Byb2JlLAorCS5yZW1vdmUgPSBidDgxOV9yZW1vdmUsCisJLmlkX3RhYmxlID0gYnQ4MTlfaWQsCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9idDg1Ni5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDg1Ni5jCmluZGV4IGFiMmNlNGQuLjQyMTM4NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4NTYuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODU2LmMKQEAgLTI5LDQzICsyOSwyNCBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L3ZpZGVvX2VuY29kZXIuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWlkLmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb19lbmNvZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5Lmg+CiAKIE1PRFVMRV9ERVNDUklQVElPTigiQnJvb2t0cmVlLTg1NkEgdmlkZW8gZW5jb2RlciBkcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIk1pa2UgQmVybnNvbiAmIERhdmUgUGVya3MiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAotCi0jZGVmaW5lIEkyQ19OQU1FKHMpIChzKS0+bmFtZQotCi0KIHN0YXRpYyBpbnQgZGVidWc7CiBtb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMCk7CiBNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRGVidWcgbGV2ZWwgKDAtMSkiKTsKIAotI2RlZmluZSBkcHJpbnRrKG51bSwgZm9ybWF0LCBhcmdzLi4uKSBcCi0JZG8geyBcCi0JCWlmIChkZWJ1ZyA+PSBudW0pIFwKLQkJCXByaW50ayhmb3JtYXQsICMjYXJncyk7IFwKLQl9IHdoaWxlICgwKQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIEJUODU2X1JFR19PRkZTRVQJMHhEQQpAQCAtNzgsMTQgKzU5LDkgQEAKIAlpbnQgZW5hYmxlOwogfTsKIAotI2RlZmluZSAgIEkyQ19CVDg1NiAgICAgICAgMHg4OAotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgaW5saW5lIGludAotYnQ4NTZfd3JpdGUgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgdTggICAgICAgICAgICAgICAgIHZhbHVlKQorc3RhdGljIGlubGluZSBpbnQgYnQ4NTZfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgYnQ4NTYgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIApAQCAtOTMsNDYgKzY5LDM2IEBACiAJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcsIHZhbHVlKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLWJ0ODU2X3NldGJpdCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgIHU4ICAgICAgICAgICAgICAgICBiaXQsCi0JICAgICAgdTggICAgICAgICAgICAgICAgIHZhbHVlKQorc3RhdGljIGlubGluZSBpbnQgYnQ4NTZfc2V0Yml0KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggYml0LCB1OCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgYnQ4NTYgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAogCXJldHVybiBidDg1Nl93cml0ZShjbGllbnQsIHJlZywKLQkJCSAgIChlbmNvZGVyLT4KLQkJCSAgICByZWdbcmVnIC0gQlQ4NTZfUkVHX09GRlNFVF0gJiB+KDEgPDwgYml0KSkgfAotCQkJICAgICh2YWx1ZSA/ICgxIDw8IGJpdCkgOiAwKSk7CisJCShlbmNvZGVyLT5yZWdbcmVnIC0gQlQ4NTZfUkVHX09GRlNFVF0gJiB+KDEgPDwgYml0KSkgfAorCQkJCSh2YWx1ZSA/ICgxIDw8IGJpdCkgOiAwKSk7CiB9CiAKLXN0YXRpYyB2b2lkCi1idDg1Nl9kdW1wIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIHZvaWQgYnQ4NTZfZHVtcChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCWludCBpOwogCXN0cnVjdCBidDg1NiAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiJXM6IHJlZ2lzdGVyIGR1bXA6IiwgSTJDX05BTUUoY2xpZW50KSk7CisJdjRsX2luZm8oY2xpZW50LCAicmVnaXN0ZXIgZHVtcDpcbiIpOwogCWZvciAoaSA9IDA7IGkgPCBCVDg1Nl9OUl9SRUc7IGkgKz0gMikKLQkJcHJpbnRrKCIgJTAyeCIsIGVuY29kZXItPnJlZ1tpXSk7Ci0JcHJpbnRrKCJcbiIpOworCQlwcmludGsoS0VSTl9DT05UICIgJTAyeCIsIGVuY29kZXItPnJlZ1tpXSk7CisJcHJpbnRrKEtFUk5fQ09OVCAiXG4iKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIGludAotYnQ4NTZfY29tbWFuZCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICAgdW5zaWduZWQgaW50ICAgICAgIGNtZCwKLQkgICAgICAgdm9pZCAgICAgICAgICAgICAgKmFyZykKK3N0YXRpYyBpbnQgYnQ4NTZfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjbWQsIHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgYnQ4NTYgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAogCXN3aXRjaCAoY21kKSB7Ci0KIAljYXNlIDA6CiAJCS8qIFRoaXMgaXMganVzdCBmb3IgdGVzdGluZyEhISAqLwotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiYnQ4NTY6IGluaXRcbiIpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbml0XG4iKTsKIAkJYnQ4NTZfd3JpdGUoY2xpZW50LCAweGRjLCAweDE4KTsKIAkJYnQ4NTZfd3JpdGUoY2xpZW50LCAweGRhLCAwKTsKIAkJYnQ4NTZfd3JpdGUoY2xpZW50LCAweGRlLCAwKTsKQEAgLTE0Miw3ICsxMDgsNiBAQAogCQlidDg1Nl9zZXRiaXQoY2xpZW50LCAweGRjLCA0LCAxKTsKIAogCQlzd2l0Y2ggKGVuY29kZXItPm5vcm0pIHsKLQogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCWJ0ODU2X3NldGJpdChjbGllbnQsIDB4ZGMsIDIsIDApOwogCQkJYnJlYWs7CkBAIC0xNjMsMjYgKzEyOCwyMyBAQAogCXsKIAkJc3RydWN0IHZpZGVvX2VuY29kZXJfY2FwYWJpbGl0eSAqY2FwID0gYXJnOwogCi0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogZ2V0IGNhcGFiaWxpdGllc1xuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJnZXQgY2FwYWJpbGl0aWVzXG4iKTsKIAogCQljYXAtPmZsYWdzID0gVklERU9fRU5DT0RFUl9QQUwgfAogCQkJICAgICBWSURFT19FTkNPREVSX05UU0MgfAogCQkJICAgICBWSURFT19FTkNPREVSX0NDSVI7CiAJCWNhcC0+aW5wdXRzID0gMjsKIAkJY2FwLT5vdXRwdXRzID0gMTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9TRVRfTk9STToKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHNldCBub3JtICVkXG4iLCBJMkNfTkFNRShjbGllbnQpLAotCQkJKmlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgbm9ybSAlZFxuIiwgKmlhcmcpOwogCiAJCXN3aXRjaCAoKmlhcmcpIHsKLQogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCWJ0ODU2X3NldGJpdChjbGllbnQsIDB4ZGMsIDIsIDApOwogCQkJYnJlYWs7CkBAIC0xOTUsMjcgKzE1NywyMyBAQAogCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9CiAJCWVuY29kZXItPm5vcm0gPSAqaWFyZzsKIAkJaWYgKGRlYnVnICE9IDApCiAJCQlidDg1Nl9kdW1wKGNsaWVudCk7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfU0VUX0lOUFVUOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCi0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc2V0IGlucHV0ICVkXG4iLCBJMkNfTkFNRShjbGllbnQpLAotCQkJKmlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgaW5wdXQgJWRcbiIsICppYXJnKTsKIAogCQkvKiBXZSBvbmx5IGhhdmUgdmlkZW8gYnVzLgogCQkgKiBpYXJnID0gMDogaW5wdXQgaXMgZnJvbSBidDgxOQogCQkgKiBpYXJnID0gMTogaW5wdXQgaXMgZnJvbSBaUjM2MDYwICovCi0KIAkJc3dpdGNoICgqaWFyZykgewotCiAJCWNhc2UgMDoKIAkJCWJ0ODU2X3NldGJpdChjbGllbnQsIDB4ZGUsIDQsIDApOwogCQkJYnQ4NTZfc2V0Yml0KGNsaWVudCwgMHhkZSwgMywgMSk7CkBAIC0yMzQsMjcgKzE5MiwyNCBAQAogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9CiAKIAkJaWYgKGRlYnVnICE9IDApCiAJCQlidDg1Nl9kdW1wKGNsaWVudCk7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfU0VUX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHNldCBvdXRwdXQgJWRcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNldCBvdXRwdXQgJWRcbiIsICppYXJnKTsKIAogCQkvKiBub3QgbXVjaCBjaG9pY2Ugb2Ygb3V0cHV0cyAqLwotCQlpZiAoKmlhcmcgIT0gMCkgeworCQlpZiAoKmlhcmcgIT0gMCkKIAkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIEVOQ09ERVJfRU5BQkxFX09VVFBVVDoKIAl7CkBAIC0yNjIsMTAgKzIxNyw5IEBACiAKIAkJZW5jb2Rlci0+ZW5hYmxlID0gISEqaWFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IGVuYWJsZSBvdXRwdXQgJWRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBlbmNvZGVyLT5lbmFibGUpOwotCX0KKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiZW5hYmxlIG91dHB1dCAlZFxuIiwgZW5jb2Rlci0+ZW5hYmxlKTsKIAkJYnJlYWs7CisJfQogCiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yNzYsNjQgKzIzMCwyOSBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKgotICogR2VuZXJpYyBpMmMgcHJvYmUKLSAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKLSAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgSTJDX0JUODU2ID4+IDEsIEkyQ19DTElFTlRfRU5EIH07CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyAweDg4ID4+IDEsIEkyQ19DTElFTlRfRU5EIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpZ25vcmUgPSBJMkNfQ0xJRU5UX0VORDsKK0kyQ19DTElFTlRfSU5TTU9EOwogCi1zdGF0aWMgc3RydWN0IGkyY19jbGllbnRfYWRkcmVzc19kYXRhIGFkZHJfZGF0YSA9IHsKLQkubm9ybWFsX2kyYwkJPSBub3JtYWxfaTJjLAotCS5wcm9iZQkJCT0gJmlnbm9yZSwKLQkuaWdub3JlCQkJPSAmaWdub3JlLAotfTsKLQotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfYnQ4NTY7Ci0KLXN0YXRpYyBpbnQKLWJ0ODU2X2RldGVjdF9jbGllbnQgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKLQkJICAgICBpbnQgICAgICAgICAgICAgICAgIGFkZHJlc3MsCi0JCSAgICAgaW50ICAgICAgICAgICAgICAgICBraW5kKQorc3RhdGljIGludCBidDg1Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewotCWludCBpOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IGJ0ODU2ICplbmNvZGVyOwogCi0JZHByaW50aygxLAotCQlLRVJOX0lORk8KLQkJImJ0ODU2LmM6IGRldGVjdGluZyBidDg1NiBjbGllbnQgb24gYWRkcmVzcyAweCV4XG4iLAotCQlhZGRyZXNzIDw8IDEpOwotCiAJLyogQ2hlY2sgaWYgdGhlIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIG5lZWRlZCBmZWF0dXJlcyAqLwotCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKLQkJcmV0dXJuIDA7CisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCisJCXJldHVybiAtRU5PREVWOwogCi0JY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWNsaWVudCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0JY2xpZW50LT5hZGRyID0gYWRkcmVzczsKLQljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwotCWNsaWVudC0+ZHJpdmVyID0gJmkyY19kcml2ZXJfYnQ4NTY7Ci0Jc3RybGNweShJMkNfTkFNRShjbGllbnQpLCAiYnQ4NTYiLCBzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOworCXY0bF9pbmZvKGNsaWVudCwgImNoaXAgZm91bmQgQCAweCV4ICglcylcbiIsCisJCQljbGllbnQtPmFkZHIgPDwgMSwgY2xpZW50LT5hZGFwdGVyLT5uYW1lKTsKIAogCWVuY29kZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYnQ4NTYpLCBHRlBfS0VSTkVMKTsKLQlpZiAoZW5jb2RlciA9PSBOVUxMKSB7Ci0JCWtmcmVlKGNsaWVudCk7CisJaWYgKGVuY29kZXIgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JfQogCWVuY29kZXItPm5vcm0gPSBWSURFT19NT0RFX05UU0M7CiAJZW5jb2Rlci0+ZW5hYmxlID0gMTsKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBlbmNvZGVyKTsKIAotCWkgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOwotCWlmIChpKSB7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JCWtmcmVlKGVuY29kZXIpOwotCQlyZXR1cm4gaTsKLQl9Ci0KIAlidDg1Nl93cml0ZShjbGllbnQsIDB4ZGMsIDB4MTgpOwogCWJ0ODU2X3dyaXRlKGNsaWVudCwgMHhkYSwgMCk7CiAJYnQ4NTZfd3JpdGUoY2xpZW50LCAweGRlLCAwKTsKQEAgLTM1OSw2NSArMjc4LDI2IEBACiAKIAlpZiAoZGVidWcgIT0gMCkKIAkJYnQ4NTZfZHVtcChjbGllbnQpOwotCi0JZHByaW50aygxLCBLRVJOX0lORk8gIiVzX2F0dGFjaDogYXQgYWRkcmVzcyAweCV4XG4iLCBJMkNfTkFNRShjbGllbnQpLAotCQljbGllbnQtPmFkZHIgPDwgMSk7Ci0KIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotYnQ4NTZfYXR0YWNoX2FkYXB0ZXIgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3N0YXRpYyBpbnQgYnQ4NTZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7Ci0JZHByaW50aygxLAotCQlLRVJOX0lORk8KLQkJImJ0ODU2LmM6IHN0YXJ0aW5nIHByb2JlIGZvciBhZGFwdGVyICVzICgweCV4KVxuIiwKLQkJSTJDX05BTUUoYWRhcHRlciksIGFkYXB0ZXItPmlkKTsKLQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsICZidDg1Nl9kZXRlY3RfY2xpZW50KTsKLX0KLQotc3RhdGljIGludAotYnQ4NTZfZGV0YWNoX2NsaWVudCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgYnQ4NTYgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoZXJyKSB7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0Ja2ZyZWUoZW5jb2Rlcik7Ci0Ja2ZyZWUoY2xpZW50KTsKLQorCWtmcmVlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKIAlyZXR1cm4gMDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfYnQ4NTYgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAiYnQ4NTYiLAotCX0sCi0KLQkuaWQgPSBJMkNfRFJJVkVSSURfQlQ4NTYsCi0KLQkuYXR0YWNoX2FkYXB0ZXIgPSBidDg1Nl9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCA9IGJ0ODU2X2RldGFjaF9jbGllbnQsCi0JLmNvbW1hbmQgPSBidDg1Nl9jb21tYW5kLAorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGJ0ODU2X2lkW10gPSB7CisJeyAiYnQ4NTYiLCAwIH0sCisJeyB9CiB9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGJ0ODU2X2lkKTsKIAotc3RhdGljIGludCBfX2luaXQKLWJ0ODU2X2luaXQgKHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZpMmNfZHJpdmVyX2J0ODU2KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1idDg1Nl9leGl0ICh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZpMmNfZHJpdmVyX2J0ODU2KTsKLX0KLQotbW9kdWxlX2luaXQoYnQ4NTZfaW5pdCk7Ci1tb2R1bGVfZXhpdChidDg1Nl9leGl0KTsKK3N0YXRpYyBzdHJ1Y3QgdjRsMl9pMmNfZHJpdmVyX2RhdGEgdjRsMl9pMmNfZGF0YSA9IHsKKwkubmFtZSA9ICJidDg1NiIsCisJLmRyaXZlcmlkID0gSTJDX0RSSVZFUklEX0JUODU2LAorCS5jb21tYW5kID0gYnQ4NTZfY29tbWFuZCwKKwkucHJvYmUgPSBidDg1Nl9wcm9iZSwKKwkucmVtb3ZlID0gYnQ4NTZfcmVtb3ZlLAorCS5pZF90YWJsZSA9IGJ0ODU2X2lkLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4NjYuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4NjYuYwppbmRleCA5NmI0MTU1Li41OTZmOWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODY2LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDg2Ni5jCkBAIC0yOSw0MiArMjksMjggQEAKICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+Ci0jaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgotCi0jaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+Ci0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMtaWQuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgogI2luY2x1ZGUgPGxpbnV4L3ZpZGVvX2VuY29kZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWNvbW1vbi5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaD4KIAorTU9EVUxFX0RFU0NSSVBUSU9OKCJCcm9va3RyZWUtODY2IHZpZGVvIGVuY29kZXIgZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJNaWtlIEJlcm5zb24gJiBEYXZlIFBlcmtzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLSNkZWZpbmUJQlQ4NjZfREVWTkFNRQkiYnQ4NjYiCi0jZGVmaW5lIEkyQ19CVDg2NgkweDg4Ci0KLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotI2RlZmluZSBERUJVRyh4KQkJLyogRGVidWcgZHJpdmVyICovCitzdGF0aWMgaW50IGRlYnVnOworbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOworTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0cnVjdCBidDg2NiB7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmkyYzsKLQlpbnQgYWRkcjsKLQl1bnNpZ25lZCBjaGFyIHJlZ1syNTZdOworCXU4IHJlZ1syNTZdOwogCiAJaW50IG5vcm07CiAJaW50IGVuYWJsZTsKQEAgLTc0LDIwICs2MCw0NSBAQAogCWludCBzYXQ7CiB9OwogCi1zdGF0aWMgaW50IGJ0ODY2X3dyaXRlKHN0cnVjdCBidDg2NiAqZGV2LAotCQkJdW5zaWduZWQgY2hhciBzdWJhZGRyLCB1bnNpZ25lZCBjaGFyIGRhdGEpOwotCi1zdGF0aWMgaW50IGJ0ODY2X2RvX2NvbW1hbmQoc3RydWN0IGJ0ODY2ICplbmNvZGVyLAotCQkJdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQorc3RhdGljIGludCBidDg2Nl93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBzdWJhZGRyLCB1OCBkYXRhKQogeworCXN0cnVjdCBidDg2NiAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCXU4IGJ1ZmZlclsyXTsKKwlpbnQgZXJyOworCisJYnVmZmVyWzBdID0gc3ViYWRkcjsKKwlidWZmZXJbMV0gPSBkYXRhOworCisJZW5jb2Rlci0+cmVnW3N1YmFkZHJdID0gZGF0YTsKKworCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgIndyaXRlIDB4JTAyeCA9IDB4JTAyeFxuIiwgc3ViYWRkciwgZGF0YSk7CisKKwlmb3IgKGVyciA9IDA7IGVyciA8IDM7KSB7CisJCWlmIChpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBidWZmZXIsIDIpID09IDIpCisJCQlicmVhazsKKwkJZXJyKys7CisJCXY0bF93YXJuKGNsaWVudCwgImVycm9yICMlZCB3cml0aW5nIHRvIDB4JTAyeFxuIiwKKwkJCQllcnIsIHN1YmFkZHIpOworCQlzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobXNlY3NfdG9famlmZmllcygxMDApKTsKKwl9CisJaWYgKGVyciA9PSAzKSB7CisJCXY0bF93YXJuKGNsaWVudCwgImdpdmluZyB1cFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBidDg2Nl9jb21tYW5kKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVuc2lnbmVkIGNtZCwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBidDg2NiAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCiAJc3dpdGNoIChjbWQpIHsKIAljYXNlIEVOQ09ERVJfR0VUX0NBUEFCSUxJVElFUzoKIAl7CiAJCXN0cnVjdCB2aWRlb19lbmNvZGVyX2NhcGFiaWxpdHkgKmNhcCA9IGFyZzsKIAotCQlERUJVRyhwcmludGsKLQkJICAgICAgKEtFUk5fSU5GTyAiJXM6IGdldCBjYXBhYmlsaXRpZXNcbiIsCi0JCSAgICAgICBlbmNvZGVyLT5pMmMtPm5hbWUpKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiZ2V0IGNhcGFiaWxpdGllc1xuIik7CiAKIAkJY2FwLT5mbGFncwogCQkJPSBWSURFT19FTkNPREVSX1BBTApAQCAtOTUsMTggKzEwNiwxNiBAQAogCQkJfCBWSURFT19FTkNPREVSX0NDSVI7CiAJCWNhcC0+aW5wdXRzID0gMjsKIAkJY2FwLT5vdXRwdXRzID0gMTsKKwkJYnJlYWs7CiAJfQotCWJyZWFrOwogCiAJY2FzZSBFTkNPREVSX1NFVF9OT1JNOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCi0JCURFQlVHKHByaW50ayhLRVJOX0lORk8gIiVzOiBzZXQgbm9ybSAlZFxuIiwKLQkJCSAgICAgZW5jb2Rlci0+aTJjLT5uYW1lLCAqaWFyZykpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgbm9ybSAlZFxuIiwgKmlhcmcpOwogCiAJCXN3aXRjaCAoKmlhcmcpIHsKLQogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCWJyZWFrOwogCkBAIC0xMTUsMTEgKzEyNCwxMCBAQAogCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9CiAJCWVuY29kZXItPm5vcm0gPSAqaWFyZzsKKwkJYnJlYWs7CiAJfQotCWJyZWFrOwogCiAJY2FzZSBFTkNPREVSX1NFVF9JTlBVVDoKIAl7CkBAIC0xNTUsNyArMTYzLDcgQEAKIAkJdTggdmFsOwogCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGluaXQpIC8gMjsgaSArPSAyKQotCQkJYnQ4NjZfd3JpdGUoZW5jb2RlciwgaW5pdFtpXSwgaW5pdFtpKzFdKTsKKwkJCWJ0ODY2X3dyaXRlKGNsaWVudCwgaW5pdFtpXSwgaW5pdFtpKzFdKTsKIAogCQl2YWwgPSBlbmNvZGVyLT5yZWdbMHhkY107CiAKQEAgLTE2NCwxNyArMTcyLDE2IEBACiAJCWVsc2UKIAkJCXZhbCAmPSB+MHg0MDsgLyogIUNCU1dBUCAqLwogCi0JCWJ0ODY2X3dyaXRlKGVuY29kZXIsIDB4ZGMsIHZhbCk7CisJCWJ0ODY2X3dyaXRlKGNsaWVudCwgMHhkYywgdmFsKTsKIAogCQl2YWwgPSBlbmNvZGVyLT5yZWdbMHhjY107CiAJCWlmICgqaWFyZyA9PSAyKQogCQkJdmFsIHw9IDB4MDE7IC8qIE9TREJBUiAqLwogCQllbHNlCiAJCQl2YWwgJj0gfjB4MDE7IC8qICFPU0RCQVIgKi8KLQkJYnQ4NjZfd3JpdGUoZW5jb2RlciwgMHhjYywgdmFsKTsKKwkJYnQ4NjZfd3JpdGUoY2xpZW50LCAweGNjLCB2YWwpOwogCi0JCURFQlVHKHByaW50ayhLRVJOX0lORk8gIiVzOiBzZXQgaW5wdXQgJWRcbiIsCi0JCQkgICAgIGVuY29kZXItPmkyYy0+bmFtZSwgKmlhcmcpKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic2V0IGlucHV0ICVkXG4iLCAqaWFyZyk7CiAKIAkJc3dpdGNoICgqaWFyZykgewogCQljYXNlIDA6CkBAIC0xODMsNDggKzE5MCw0NCBAQAogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9CisJCWJyZWFrOwogCX0KLQlicmVhazsKIAogCWNhc2UgRU5DT0RFUl9TRVRfT1VUUFVUOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCi0JCURFQlVHKHByaW50ayhLRVJOX0lORk8gIiVzOiBzZXQgb3V0cHV0ICVkXG4iLAotCQkJICAgICBlbmNvZGVyLT5pMmMtPm5hbWUsICppYXJnKSk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNldCBvdXRwdXQgJWRcbiIsICppYXJnKTsKIAogCQkvKiBub3QgbXVjaCBjaG9pY2Ugb2Ygb3V0cHV0cyAqLwogCQlpZiAoKmlhcmcgIT0gMCkKIAkJCXJldHVybiAtRUlOVkFMOworCQlicmVhazsKIAl9Ci0JYnJlYWs7CiAKIAljYXNlIEVOQ09ERVJfRU5BQkxFX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAkJZW5jb2Rlci0+ZW5hYmxlID0gISEqaWFyZzsKIAotCQlERUJVRyhwcmludGsKLQkJICAgICAgKEtFUk5fSU5GTyAiJXM6IGVuYWJsZSBvdXRwdXQgJWRcbiIsCi0JCSAgICAgICBlbmNvZGVyLT5pMmMtPm5hbWUsIGVuY29kZXItPmVuYWJsZSkpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJlbmFibGUgb3V0cHV0ICVkXG4iLCBlbmNvZGVyLT5lbmFibGUpOworCQlicmVhazsKIAl9Ci0JYnJlYWs7CiAKIAljYXNlIDQ3MTE6CiAJewogCQlpbnQgKmlhcmcgPSBhcmc7CiAJCV9fdTggdmFsOwogCi0JCXByaW50aygiYnQ4NjY6IHNxdWFyZSA9ICVkXG4iLCAqaWFyZyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInNxdWFyZSAlZFxuIiwgKmlhcmcpOwogCiAJCXZhbCA9IGVuY29kZXItPnJlZ1sweGRjXTsKIAkJaWYgKCppYXJnKQogCQkJdmFsIHw9IDE7IC8qIFNRVUFSRSAqLwogCQllbHNlCiAJCQl2YWwgJj0gfjE7IC8qICFTUVVBUkUgKi8KLQkJYnQ4NjZfd3JpdGUoZW5jb2RlciwgMHhkYywgdmFsKTsKKwkJYnQ4NjZfd3JpdGUoY2xpZW50LCAweGRjLCB2YWwpOwogCQlicmVhazsKIAl9CiAKQEAgLTIzNSwxNDEgKzIzOCw0OSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGJ0ODY2X3dyaXRlKHN0cnVjdCBidDg2NiAqZW5jb2RlciwKLQkJCXVuc2lnbmVkIGNoYXIgc3ViYWRkciwgdW5zaWduZWQgY2hhciBkYXRhKQotewotCXVuc2lnbmVkIGNoYXIgYnVmZmVyWzJdOwotCWludCBlcnI7CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyAweDg4ID4+IDEsIEkyQ19DTElFTlRfRU5EIH07CiAKLQlidWZmZXJbMF0gPSBzdWJhZGRyOwotCWJ1ZmZlclsxXSA9IGRhdGE7CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotCWVuY29kZXItPnJlZ1tzdWJhZGRyXSA9IGRhdGE7Ci0KLQlERUJVRyhwcmludGsKLQkgICAgICAoIiVzOiB3cml0ZSAweCUwMlggPSAweCUwMlhcbiIsCi0JICAgICAgIGVuY29kZXItPmkyYy0+bmFtZSwgc3ViYWRkciwgZGF0YSkpOwotCi0JZm9yIChlcnIgPSAwOyBlcnIgPCAzOykgewotCQlpZiAoaTJjX21hc3Rlcl9zZW5kKGVuY29kZXItPmkyYywgYnVmZmVyLCAyKSA9PSAyKQotCQkJYnJlYWs7Ci0JCWVycisrOwotCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogSS9PIGVycm9yICMlZCAiCi0JCSAgICAgICAiKHdyaXRlIDB4JTAyeC8weCUwMngpXG4iLAotCQkgICAgICAgZW5jb2Rlci0+aTJjLT5uYW1lLCBlcnIsIGVuY29kZXItPmFkZHIsIHN1YmFkZHIpOwotCQlzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobXNlY3NfdG9famlmZmllcygxMDApKTsKLQl9Ci0JaWYgKGVyciA9PSAzKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBnaXZpbmcgdXBcbiIsCi0JCSAgICAgICBlbmNvZGVyLT5pMmMtPm5hbWUpOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgYnQ4NjZfYXR0YWNoKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Ci1zdGF0aWMgaW50IGJ0ODY2X2RldGFjaChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKLXN0YXRpYyBpbnQgYnQ4NjZfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkJIHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZyk7Ci0KLQotLyogQWRkcmVzc2VzIHRvIHNjYW4gKi8KLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10JPSB7STJDX0JUODY2Pj4xLCBJMkNfQ0xJRU5UX0VORH07Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgcHJvYmVbMl0JCT0ge0kyQ19DTElFTlRfRU5ELCBJMkNfQ0xJRU5UX0VORH07Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaWdub3JlWzJdCQk9IHtJMkNfQ0xJRU5UX0VORCwgSTJDX0NMSUVOVF9FTkR9OwotCi1zdGF0aWMgc3RydWN0IGkyY19jbGllbnRfYWRkcmVzc19kYXRhIGFkZHJfZGF0YSA9IHsKLQlub3JtYWxfaTJjLAotCXByb2JlLAotCWlnbm9yZSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX2J0ODY2ID0gewotCS5kcml2ZXIubmFtZSA9IEJUODY2X0RFVk5BTUUsCi0JLmlkID0gSTJDX0RSSVZFUklEX0JUODY2LAotCS5hdHRhY2hfYWRhcHRlciA9IGJ0ODY2X2F0dGFjaCwKLQkuZGV0YWNoX2NsaWVudCA9IGJ0ODY2X2RldGFjaCwKLQkuY29tbWFuZCA9IGJ0ODY2X2NvbW1hbmQKLX07Ci0KLQotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IGJ0ODY2X2NsaWVudF90bXBsID0KLXsKLQkubmFtZSA9ICIobmlsKSIsCi0JLmFkZHIgPSAwLAotCS5hZGFwdGVyID0gTlVMTCwKLQkuZHJpdmVyID0gJmkyY19kcml2ZXJfYnQ4NjYsCi19OwotCi1zdGF0aWMgaW50IGJ0ODY2X2ZvdW5kX3Byb2Moc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAotCQkJICAgIGludCBhZGRyLCBpbnQga2luZCkKK3N0YXRpYyBpbnQgYnQ4NjZfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCWNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKIHsKIAlzdHJ1Y3QgYnQ4NjYgKmVuY29kZXI7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAotCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoY2xpZW50ID09IE5VTEwpCi0JCXJldHVybiAtRU5PTUVNOwotCW1lbWNweShjbGllbnQsICZidDg2Nl9jbGllbnRfdG1wbCwgc2l6ZW9mKCpjbGllbnQpKTsKKwl2NGxfaW5mbyhjbGllbnQsICJjaGlwIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQkJY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CiAKIAllbmNvZGVyID0ga3phbGxvYyhzaXplb2YoKmVuY29kZXIpLCBHRlBfS0VSTkVMKTsKLQlpZiAoZW5jb2RlciA9PSBOVUxMKSB7Ci0JCWtmcmVlKGNsaWVudCk7CisJaWYgKGVuY29kZXIgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JfQogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZW5jb2Rlcik7Ci0JY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKLQljbGllbnQtPmFkZHIgPSBhZGRyOwotCXNwcmludGYoY2xpZW50LT5uYW1lLCAiJXMtJTAyeCIsIEJUODY2X0RFVk5BTUUsIGFkYXB0ZXItPmlkKTsKLQotCWVuY29kZXItPmkyYyA9IGNsaWVudDsKLQllbmNvZGVyLT5hZGRyID0gYWRkcjsKLQkvL2VuY29kZXItPmVuY29kZXJfdHlwZSA9IEVOQ09ERVJfVFlQRV9VTktOT1dOOwotCi0JLyogaW5pdGlhbGl6ZSAqLwotCi0JaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKLQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGJ0ODY2X2F0dGFjaChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCitzdGF0aWMgaW50IGJ0ODY2X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewotCWlmIChhZGFwdGVyLT5pZCA9PSBJMkNfSFdfQl9aUjM2MDY3KQotCQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsIGJ0ODY2X2ZvdW5kX3Byb2MpOworCWtmcmVlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBidDg2Nl9kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgYnQ4NjZfbGVnYWN5X3Byb2JlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKIHsKLQlzdHJ1Y3QgYnQ4NjYgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQotCWkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7Ci0Ja2ZyZWUoZW5jb2Rlcik7Ci0Ja2ZyZWUoY2xpZW50KTsKLQotCXJldHVybiAwOworCXJldHVybiBhZGFwdGVyLT5pZCA9PSBJMkNfSFdfQl9aUjM2MDY3OwogfQogCi1zdGF0aWMgaW50IGJ0ODY2X2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJCSB1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcpCi17Ci0Jc3RydWN0IGJ0ODY2ICplbmNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Ci0JcmV0dXJuIGJ0ODY2X2RvX2NvbW1hbmQoZW5jb2RlciwgY21kLCBhcmcpOwotfQorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGJ0ODY2X2lkW10gPSB7CisJeyAiYnQ4NjYiLCAwIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGJ0ODY2X2lkKTsKIAotc3RhdGljIGludCBfX2RldmluaXQgYnQ4NjZfaW5pdCh2b2lkKQotewotCWkyY19hZGRfZHJpdmVyKCZpMmNfZHJpdmVyX2J0ODY2KTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgX19kZXZleGl0IGJ0ODY2X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmaTJjX2RyaXZlcl9idDg2Nik7Ci19Ci0KLW1vZHVsZV9pbml0KGJ0ODY2X2luaXQpOwotbW9kdWxlX2V4aXQoYnQ4NjZfZXhpdCk7CitzdGF0aWMgc3RydWN0IHY0bDJfaTJjX2RyaXZlcl9kYXRhIHY0bDJfaTJjX2RhdGEgPSB7CisJLm5hbWUgPSAiYnQ4NjYiLAorCS5kcml2ZXJpZCA9IEkyQ19EUklWRVJJRF9CVDg2NiwKKwkuY29tbWFuZCA9IGJ0ODY2X2NvbW1hbmQsCisJLnByb2JlID0gYnQ4NjZfcHJvYmUsCisJLnJlbW92ZSA9IGJ0ODY2X3JlbW92ZSwKKwkubGVnYWN5X3Byb2JlID0gYnQ4NjZfbGVnYWN5X3Byb2JlLAorCS5pZF90YWJsZSA9IGJ0ODY2X2lkLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNhcmRzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jYXJkcy5jCmluZGV4IDJjZGExNWYuLmRhYzVjY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtY2FyZHMuYwpAQCAtMzksMTYgKzM5LDE2IEBACiAJCS5pbnB1dCAgICAgICAgICA9IHt7CiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX0NPTVBPU0lURTEsCiAJCQkudm11eCAgID0gMCwKLQkJfSx7CisJCX0sIHsKIAkJCS50eXBlICAgPSBDWDIzODg1X1ZNVVhfQ09NUE9TSVRFMiwKIAkJCS52bXV4ICAgPSAxLAotCQl9LHsKKwkJfSwgewogCQkJLnR5cGUgICA9IENYMjM4ODVfVk1VWF9DT01QT1NJVEUzLAogCQkJLnZtdXggICA9IDIsCi0JCX0seworCQl9LCB7CiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX0NPTVBPU0lURTQsCiAJCQkudm11eCAgID0gMywKLQkJfX0sCisJCX0gfSwKIAl9LAogCVtDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxODAwbHBdID0gewogCQkubmFtZQkJPSAiSGF1cHBhdWdlIFdpblRWLUhWUjE4MDBscCIsCkBAIC01NywxOSArNTcsMTkgQEAKIAkJCS50eXBlICAgPSBDWDIzODg1X1ZNVVhfVEVMRVZJU0lPTiwKIAkJCS52bXV4ICAgPSAwLAogCQkJLmdwaW8wICA9IDB4ZmYwMCwKLQkJfSx7CisJCX0sIHsKIAkJCS50eXBlICAgPSBDWDIzODg1X1ZNVVhfREVCVUcsCiAJCQkudm11eCAgID0gMCwKIAkJCS5ncGlvMCAgPSAweGZmMDEsCi0JCX0seworCQl9LCB7CiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX0NPTVBPU0lURTEsCiAJCQkudm11eCAgID0gMSwKIAkJCS5ncGlvMCAgPSAweGZmMDIsCi0JCX0seworCQl9LCB7CiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX1NWSURFTywKIAkJCS52bXV4ICAgPSAyLAogCQkJLmdwaW8wICA9IDB4ZmYwMiwKLQkJfX0sCisJCX0gfSwKIAl9LAogCVtDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxODAwXSA9IHsKIAkJLm5hbWUJCT0gIkhhdXBwYXVnZSBXaW5UVi1IVlIxODAwIiwKQEAgLTg0LDIwICs4NCwyMCBAQAogCQkJCQlDWDI1ODQwX1ZJTjVfQ0gyIHwKIAkJCQkJQ1gyNTg0MF9WSU4yX0NIMSwKIAkJCS5ncGlvMCAgPSAwLAotCQl9LHsKKwkJfSwgewogCQkJLnR5cGUgICA9IENYMjM4ODVfVk1VWF9DT01QT1NJVEUxLAogCQkJLnZtdXggICA9CUNYMjU4NDBfVklON19DSDMgfAogCQkJCQlDWDI1ODQwX1ZJTjRfQ0gyIHwKIAkJCQkJQ1gyNTg0MF9WSU42X0NIMSwKIAkJCS5ncGlvMCAgPSAwLAotCQl9LHsKKwkJfSwgewogCQkJLnR5cGUgICA9IENYMjM4ODVfVk1VWF9TVklERU8sCiAJCQkudm11eCAgID0JQ1gyNTg0MF9WSU43X0NIMyB8CiAJCQkJCUNYMjU4NDBfVklONF9DSDIgfAogCQkJCQlDWDI1ODQwX1ZJTjhfQ0gxIHwKIAkJCQkJQ1gyNTg0MF9TVklERU9fT04sCiAJCQkuZ3BpbzAgID0gMCwKLQkJfX0sCisJCX0gfSwKIAl9LAogCVtDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxMjUwXSA9IHsKIAkJLm5hbWUJCT0gIkhhdXBwYXVnZSBXaW5UVi1IVlIxMjUwIiwKQEAgLTEwNiwxOSArMTA2LDE5IEBACiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX1RFTEVWSVNJT04sCiAJCQkudm11eCAgID0gMCwKIAkJCS5ncGlvMCAgPSAweGZmMDAsCi0JCX0seworCQl9LCB7CiAJCQkudHlwZSAgID0gQ1gyMzg4NV9WTVVYX0RFQlVHLAogCQkJLnZtdXggICA9IDAsCiAJCQkuZ3BpbzAgID0gMHhmZjAxLAotCQl9LHsKKwkJfSwgewogCQkJLnR5cGUgICA9IENYMjM4ODVfVk1VWF9DT01QT1NJVEUxLAogCQkJLnZtdXggICA9IDEsCiAJCQkuZ3BpbzAgID0gMHhmZjAyLAotCQl9LHsKKwkJfSwgewogCQkJLnR5cGUgICA9IENYMjM4ODVfVk1VWF9TVklERU8sCiAJCQkudm11eCAgID0gMiwKIAkJCS5ncGlvMCAgPSAweGZmMDIsCi0JCX19LAorCQl9IH0sCiAJfSwKIAlbQ1gyMzg4NV9CT0FSRF9EVklDT19GVVNJT05IRFRWXzVfRVhQXSA9IHsKIAkJLm5hbWUJCT0gIkRWaUNPIEZ1c2lvbkhEVFY1IEV4cHJlc3MiLApAQCAtMTY5LDQzICsxNjksNDMgQEAKIAkJLnN1YnZlbmRvciA9IDB4MDA3MCwKIAkJLnN1YmRldmljZSA9IDB4MzQwMCwKIAkJLmNhcmQgICAgICA9IENYMjM4ODVfQk9BUkRfVU5LTk9XTiwKLQl9LHsKKwl9LCB7CiAJCS5zdWJ2ZW5kb3IgPSAweDAwNzAsCiAJCS5zdWJkZXZpY2UgPSAweDc2MDAsCiAJCS5jYXJkICAgICAgPSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxODAwbHAsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgwMDcwLAogCQkuc3ViZGV2aWNlID0gMHg3ODAwLAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTgwMCwKLQl9LHsKKwl9LCB7CiAJCS5zdWJ2ZW5kb3IgPSAweDAwNzAsCiAJCS5zdWJkZXZpY2UgPSAweDc4MDEsCiAJCS5jYXJkICAgICAgPSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxODAwLAotCX0seworCX0sIHsKIAkJLnN1YnZlbmRvciA9IDB4MDA3MCwKIAkJLnN1YmRldmljZSA9IDB4NzgwOSwKIAkJLmNhcmQgICAgICA9IENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE4MDAsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgwMDcwLAogCQkuc3ViZGV2aWNlID0gMHg3OTExLAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTI1MCwKLQl9LHsKKwl9LCB7CiAJCS5zdWJ2ZW5kb3IgPSAweDE4YWMsCiAJCS5zdWJkZXZpY2UgPSAweGQ1MDAsCiAJCS5jYXJkICAgICAgPSBDWDIzODg1X0JPQVJEX0RWSUNPX0ZVU0lPTkhEVFZfNV9FWFAsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgwMDcwLAogCQkuc3ViZGV2aWNlID0gMHg3NzkwLAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTUwMFEsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgwMDcwLAogCQkuc3ViZGV2aWNlID0gMHg3Nzk3LAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTUwMFEsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgwMDcwLAogCQkuc3ViZGV2aWNlID0gMHg3NzEwLAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTUwMCwKLQl9LHsKKwl9LCB7CiAJCS5zdWJ2ZW5kb3IgPSAweDAwNzAsCiAJCS5zdWJkZXZpY2UgPSAweDc3MTcsCiAJCS5jYXJkICAgICAgPSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxNTAwLApAQCAtMjI1LDExICsyMjUsMTEgQEAKIAkJLnN1YnZlbmRvciA9IDB4MDA3MCwKIAkJLnN1YmRldmljZSA9IDB4ODAxMCwKIAkJLmNhcmQgICAgICA9IENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE0MDAsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgxOGFjLAogCQkuc3ViZGV2aWNlID0gMHhkNjE4LAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9EVklDT19GVVNJT05IRFRWXzdfRFVBTF9FWFAsCi0JfSx7CisJfSwgewogCQkuc3VidmVuZG9yID0gMHgxOGFjLAogCQkuc3ViZGV2aWNlID0gMHhkYjc4LAogCQkuY2FyZCAgICAgID0gQ1gyMzg4NV9CT0FSRF9EVklDT19GVVNJT05IRFRWX0RWQl9UX0RVQUxfRVhQLApAQCAtMjQ3LDIzICsyNDcsMjUgQEAKIAogCWlmICgwID09IGRldi0+cGNpLT5zdWJzeXN0ZW1fdmVuZG9yICYmCiAJICAgIDAgPT0gZGV2LT5wY2ktPnN1YnN5c3RlbV9kZXZpY2UpIHsKLQkJcHJpbnRrKCIlczogWW91ciBib2FyZCBoYXMgbm8gdmFsaWQgUENJZSBTdWJzeXN0ZW0gSUQgYW5kIHRodXMgY2FuJ3RcbiIKLQkJICAgICAgICIlczogYmUgYXV0b2RldGVjdGVkLiAgUGxlYXNlIHBhc3MgY2FyZD08bj4gaW5zbW9kIG9wdGlvbiB0b1xuIgotCQkgICAgICAgIiVzOiB3b3JrYXJvdW5kIHRoYXQuICBSZWRpcmVjdCBjb21wbGFpbnRzIHRvIHRoZSB2ZW5kb3Igb2ZcbiIKLQkJICAgICAgICIlczogdGhlIFRWIGNhcmQuICBCZXN0IHJlZ2FyZHMsXG4iCisJCXByaW50ayhLRVJOX0lORk8KKwkJCSIlczogQm9hcmQgaGFzIG5vIHZhbGlkIFBDSWUgU3Vic3lzdGVtIElEIGFuZCBjYW4ndFxuIgorCQkgICAgICAgIiVzOiBiZSBhdXRvZGV0ZWN0ZWQuIFBhc3MgY2FyZD08bj4gaW5zbW9kIG9wdGlvblxuIgorCQkgICAgICAgIiVzOiB0byB3b3JrYXJvdW5kIHRoYXQuIFJlZGlyZWN0IGNvbXBsYWludHMgdG8gdGhlXG4iCisJCSAgICAgICAiJXM6IHZlbmRvciBvZiB0aGUgVFYgY2FyZC4gIEJlc3QgcmVnYXJkcyxcbiIKIAkJICAgICAgICIlczogICAgICAgICAtLSB0dXhcbiIsCiAJCSAgICAgICBkZXYtPm5hbWUsIGRldi0+bmFtZSwgZGV2LT5uYW1lLCBkZXYtPm5hbWUsIGRldi0+bmFtZSk7CiAJfSBlbHNlIHsKLQkJcHJpbnRrKCIlczogWW91ciBib2FyZCBpc24ndCBrbm93biAoeWV0KSB0byB0aGUgZHJpdmVyLiAgWW91IGNhblxuIgotCQkgICAgICAgIiVzOiB0cnkgdG8gcGljayBvbmUgb2YgdGhlIGV4aXN0aW5nIGNhcmQgY29uZmlncyB2aWFcbiIKKwkJcHJpbnRrKEtFUk5fSU5GTworCQkJIiVzOiBZb3VyIGJvYXJkIGlzbid0IGtub3duICh5ZXQpIHRvIHRoZSBkcml2ZXIuXG4iCisJCSAgICAgICAiJXM6IFRyeSB0byBwaWNrIG9uZSBvZiB0aGUgZXhpc3RpbmcgY2FyZCBjb25maWdzIHZpYVxuIgogCQkgICAgICAgIiVzOiBjYXJkPTxuPiBpbnNtb2Qgb3B0aW9uLiAgVXBkYXRpbmcgdG8gdGhlIGxhdGVzdFxuIgogCQkgICAgICAgIiVzOiB2ZXJzaW9uIG1pZ2h0IGhlbHAgYXMgd2VsbC5cbiIsCiAJCSAgICAgICBkZXYtPm5hbWUsIGRldi0+bmFtZSwgZGV2LT5uYW1lLCBkZXYtPm5hbWUpOwogCX0KLQlwcmludGsoIiVzOiBIZXJlIGlzIGEgbGlzdCBvZiB2YWxpZCBjaG9pY2VzIGZvciB0aGUgY2FyZD08bj4gaW5zbW9kIG9wdGlvbjpcbiIsCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IEhlcmUgaXMgYSBsaXN0IG9mIHZhbGlkIGNob2ljZXMgZm9yIHRoZSBjYXJkPTxuPiBpbnNtb2Qgb3B0aW9uOlxuIiwKIAkgICAgICAgZGV2LT5uYW1lKTsKIAlmb3IgKGkgPSAwOyBpIDwgY3gyMzg4NV9iY291bnQ7IGkrKykKLQkJcHJpbnRrKCIlczogICAgY2FyZD0lZCAtPiAlc1xuIiwKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6ICAgIGNhcmQ9JWQgLT4gJXNcbiIsCiAJCSAgICAgICBkZXYtPm5hbWUsIGksIGN4MjM4ODVfYm9hcmRzW2ldLm5hbWUpOwogfQogCkBAIC0yNzEsMTEgKzI3MywxMSBAQAogewogCXN0cnVjdCB0dmVlcHJvbSB0djsKIAotCXR2ZWVwcm9tX2hhdXBwYXVnZV9hbmFsb2coJmRldi0+aTJjX2J1c1swXS5pMmNfY2xpZW50LCAmdHYsIGVlcHJvbV9kYXRhKTsKKwl0dmVlcHJvbV9oYXVwcGF1Z2VfYW5hbG9nKCZkZXYtPmkyY19idXNbMF0uaTJjX2NsaWVudCwgJnR2LAorCQllZXByb21fZGF0YSk7CiAKIAkvKiBNYWtlIHN1cmUgd2Ugc3VwcG9ydCB0aGUgYm9hcmQgbW9kZWwgKi8KLQlzd2l0Y2ggKHR2Lm1vZGVsKQotCXsKKwlzd2l0Y2ggKHR2Lm1vZGVsKSB7CiAJY2FzZSA3MTAwOToKIAkJLyogV2luVFYtSFZSMTIwMCAoUENJZSwgUmV0YWlsLCBmdWxsIGhlaWdodCkKIAkJICogRFZCLVQgYW5kIGJhc2ljIGFuYWxvZyAqLwpAQCAtMzAzLDIxICszMDUsNTEgQEAKIAljYXNlIDcxOTk5OgogCQkvKiBXaW5UVi1IVlIxMjAwIChQQ0llLCBPRU0sIGZ1bGwgaGVpZ2h0KQogCQkgKiBEVkItVCBhbmQgYmFzaWMgYW5hbG9nICovCi0JY2FzZSA3NjYwMTogLyogV2luVFYtSFZSMTgwMGxwIChQQ0llLCBSZXRhaWwsIE5vIElSLCBEdWFsIGNoYW5uZWwgQVRTQyBhbmQgTVBFRzIgSFcgRW5jb2RlciAqLwotCWNhc2UgNzcwMDE6IC8qIFdpblRWLUhWUjE1MDAgKEV4cHJlc3MgQ2FyZCwgT0VNLCBObyBJUiwgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCi0JY2FzZSA3NzAxMTogLyogV2luVFYtSFZSMTUwMCAoRXhwcmVzcyBDYXJkLCBSZXRhaWwsIE5vIElSLCBBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KLQljYXNlIDc3MDQxOiAvKiBXaW5UVi1IVlIxNTAwUSAoRXhwcmVzcyBDYXJkLCBPRU0sIE5vIElSLCBBVFNDL1FBTSBhbmQgQmFzaWMgYW5hbG9nICovCi0JY2FzZSA3NzA1MTogLyogV2luVFYtSFZSMTUwMFEgKEV4cHJlc3MgQ2FyZCwgUmV0YWlsLCBObyBJUiwgQVRTQy9RQU0gYW5kIEJhc2ljIGFuYWxvZyAqLwotCWNhc2UgNzgwMTE6IC8qIFdpblRWLUhWUjE4MDAgKFBDSWUsIFJldGFpbCwgMy41bW0gaW4sIElSLCBObyBGTSwgRHVhbCBjaGFubmVsIEFUU0MgYW5kIE1QRUcyIEhXIEVuY29kZXIgKi8KLQljYXNlIDc4NTAxOiAvKiBXaW5UVi1IVlIxODAwIChQQ0llLCBPRU0sIFJDQSBpbiwgTm8gSVIsIEZNLCBEdWFsIGNoYW5uZWwgQVRTQyBhbmQgTVBFRzIgSFcgRW5jb2RlciAqLwotCWNhc2UgNzg1MjE6IC8qIFdpblRWLUhWUjE4MDAgKFBDSWUsIE9FTSwgUkNBIGluLCBObyBJUiwgRk0sIER1YWwgY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCi0JY2FzZSA3ODUzMTogLyogV2luVFYtSFZSMTgwMCAoUENJZSwgT0VNLCBSQ0EgaW4sIE5vIElSLCBObyBGTSwgRHVhbCBjaGFubmVsIEFUU0MgYW5kIE1QRUcyIEhXIEVuY29kZXIgKi8KLQljYXNlIDc4NjMxOiAvKiBXaW5UVi1IVlIxODAwIChQQ0llLCBPRU0sIE5vIElSLCBObyBGTSwgRHVhbCBjaGFubmVsIEFUU0MgYW5kIE1QRUcyIEhXIEVuY29kZXIgKi8KLQljYXNlIDc5MDAxOiAvKiBXaW5UVi1IVlIxMjUwIChQQ0llLCBSZXRhaWwsIElSLCBmdWxsIGhlaWdodCwgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCi0JY2FzZSA3OTEwMTogLyogV2luVFYtSFZSMTI1MCAoUENJZSwgUmV0YWlsLCBJUiwgaGFsZiBoZWlnaHQsIEFUU0MgYW5kIEJhc2ljIGFuYWxvZyAqLwotCWNhc2UgNzk1NjE6IC8qIFdpblRWLUhWUjEyNTAgKFBDSWUsIE9FTSwgTm8gSVIsIGhhbGYgaGVpZ2h0LCBBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KLQljYXNlIDc5NTcxOiAvKiBXaW5UVi1IVlIxMjUwIChQQ0llLCBPRU0sIE5vIElSLCBmdWxsIGhlaWdodCwgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCi0JY2FzZSA3OTY3MTogLyogV2luVFYtSFZSMTI1MCAoUENJZSwgT0VNLCBObyBJUiwgaGFsZiBoZWlnaHQsIEFUU0MgYW5kIEJhc2ljIGFuYWxvZyAqLworCWNhc2UgNzY2MDE6CisJCS8qIFdpblRWLUhWUjE4MDBscCAoUENJZSwgUmV0YWlsLCBObyBJUiwgRHVhbAorCQkJY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCisJY2FzZSA3NzAwMToKKwkJLyogV2luVFYtSFZSMTUwMCAoRXhwcmVzcyBDYXJkLCBPRU0sIE5vIElSLCBBVFNDCisJCQlhbmQgQmFzaWMgYW5hbG9nICovCisJY2FzZSA3NzAxMToKKwkJLyogV2luVFYtSFZSMTUwMCAoRXhwcmVzcyBDYXJkLCBSZXRhaWwsIE5vIElSLCBBVFNDCisJCQlhbmQgQmFzaWMgYW5hbG9nICovCisJY2FzZSA3NzA0MToKKwkJLyogV2luVFYtSFZSMTUwMFEgKEV4cHJlc3MgQ2FyZCwgT0VNLCBObyBJUiwgQVRTQy9RQU0KKwkJCWFuZCBCYXNpYyBhbmFsb2cgKi8KKwljYXNlIDc3MDUxOgorCQkvKiBXaW5UVi1IVlIxNTAwUSAoRXhwcmVzcyBDYXJkLCBSZXRhaWwsIE5vIElSLCBBVFNDL1FBTQorCQkJYW5kIEJhc2ljIGFuYWxvZyAqLworCWNhc2UgNzgwMTE6CisJCS8qIFdpblRWLUhWUjE4MDAgKFBDSWUsIFJldGFpbCwgMy41bW0gaW4sIElSLCBObyBGTSwKKwkJCUR1YWwgY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCisJY2FzZSA3ODUwMToKKwkJLyogV2luVFYtSFZSMTgwMCAoUENJZSwgT0VNLCBSQ0EgaW4sIE5vIElSLCBGTSwKKwkJCUR1YWwgY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCisJY2FzZSA3ODUyMToKKwkJLyogV2luVFYtSFZSMTgwMCAoUENJZSwgT0VNLCBSQ0EgaW4sIE5vIElSLCBGTSwKKwkJCUR1YWwgY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCisJY2FzZSA3ODUzMToKKwkJLyogV2luVFYtSFZSMTgwMCAoUENJZSwgT0VNLCBSQ0EgaW4sIE5vIElSLCBObyBGTSwKKwkJCUR1YWwgY2hhbm5lbCBBVFNDIGFuZCBNUEVHMiBIVyBFbmNvZGVyICovCisJY2FzZSA3ODYzMToKKwkJLyogV2luVFYtSFZSMTgwMCAoUENJZSwgT0VNLCBObyBJUiwgTm8gRk0sCisJCQlEdWFsIGNoYW5uZWwgQVRTQyBhbmQgTVBFRzIgSFcgRW5jb2RlciAqLworCWNhc2UgNzkwMDE6CisJCS8qIFdpblRWLUhWUjEyNTAgKFBDSWUsIFJldGFpbCwgSVIsIGZ1bGwgaGVpZ2h0LAorCQkJQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCisJY2FzZSA3OTEwMToKKwkJLyogV2luVFYtSFZSMTI1MCAoUENJZSwgUmV0YWlsLCBJUiwgaGFsZiBoZWlnaHQsCisJCQlBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KKwljYXNlIDc5NTYxOgorCQkvKiBXaW5UVi1IVlIxMjUwIChQQ0llLCBPRU0sIE5vIElSLCBoYWxmIGhlaWdodCwKKwkJCUFUU0MgYW5kIEJhc2ljIGFuYWxvZyAqLworCWNhc2UgNzk1NzE6CisJCS8qIFdpblRWLUhWUjEyNTAgKFBDSWUsIE9FTSwgTm8gSVIsIGZ1bGwgaGVpZ2h0LAorCQkgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCisJY2FzZSA3OTY3MToKKwkJLyogV2luVFYtSFZSMTI1MCAoUENJZSwgT0VNLCBObyBJUiwgaGFsZiBoZWlnaHQsCisJCQlBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KIAljYXNlIDgwMDE5OgogCQkvKiBXaW5UVi1IVlIxNDAwIChFeHByZXNzIENhcmQsIFJldGFpbCwgSVIsCiAJCSAqIERWQi1UIGFuZCBCYXNpYyBhbmFsb2cgKi8KQEAgLTMyOSw3ICszNjEsOCBAQAogCQkgKiBEVkItVCBhbmQgTVBFRzIgSFcgRW5jb2RlciAqLwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlwcmludGsoIiVzOiB3YXJuaW5nOiB1bmtub3duIGhhdXBwYXVnZSBtb2RlbCAjJWRcbiIsIGRldi0+bmFtZSwgdHYubW9kZWwpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogd2FybmluZzogdW5rbm93biBoYXVwcGF1Z2UgbW9kZWwgIyVkXG4iLAorCQkJZGV2LT5uYW1lLCB0di5tb2RlbCk7CiAJCWJyZWFrOwogCX0KIApAQCAtMzUyLDcgKzM4NSw3IEBACiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXN3aXRjaChkZXYtPmJvYXJkKSB7CisJc3dpdGNoIChkZXYtPmJvYXJkKSB7CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxNDAwOgogCWNhc2UgQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTUwMDoKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE1MDBROgpAQCAtMzgzLDcgKzQxNiw3IEBACiAKIHZvaWQgY3gyMzg4NV9ncGlvX3NldHVwKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KQogewotCXN3aXRjaChkZXYtPmJvYXJkKSB7CisJc3dpdGNoIChkZXYtPmJvYXJkKSB7CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxMjUwOgogCQkvKiBHUElPLTAgY3gyNDIyNyBkZW1vZHVsYXRvciByZXNldCAqLwogCQljeF9zZXQoR1AwX0lPLCAweDAwMDEwMDAxKTsgLyogQnJpbmcgdGhlIHBhcnQgb3V0IG9mIHJlc2V0ICovCkBAIC02MTcsMTAgKzY1MCwzIEBACiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogYy1iYXNpYy1vZmZzZXQ6IDgKLSAqIEVuZDoKLSAqIGthdGU6IGVvbCAidW5peCI7IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdHJhaWxpbmctc3BhY2Utc2F2ZSBvbjsgdGFiLXdpZHRoIDg7IHJlcGxhY2UtdGFicyBvZmY7IHNwYWNlLWluZGVudCBvZmY7IG1peGVkLWluZGVudCBvZmYKLSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtY29yZS5jCmluZGV4IGJlYjNlNjEuLjhmNmZiMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jb3JlLmMKQEAgLTM3LDEyICszNywxMiBAQAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRlYnVnOwotbW9kdWxlX3BhcmFtKGRlYnVnLGludCwwNjQ0KTsKLU1PRFVMRV9QQVJNX0RFU0MoZGVidWcsImVuYWJsZSBkZWJ1ZyBtZXNzYWdlcyIpOworbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgImVuYWJsZSBkZWJ1ZyBtZXNzYWdlcyIpOwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNhcmRbXSAgPSB7WzAgLi4uIChDWDIzODg1X01BWEJPQVJEUyAtIDEpXSA9IFVOU0VUIH07CiBtb2R1bGVfcGFyYW1fYXJyYXkoY2FyZCwgIGludCwgTlVMTCwgMDQ0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGNhcmQsImNhcmQgdHlwZSIpOworTU9EVUxFX1BBUk1fREVTQyhjYXJkLCAiY2FyZCB0eXBlIik7CiAKICNkZWZpbmUgZHByaW50ayhsZXZlbCwgZm10LCBhcmcuLi4pXAogCWRvIHsgaWYgKGRlYnVnID49IGxldmVsKVwKQEAgLTM2NCwxMyArMzY0LDEyIEBACiAJCWxpc3RfZGVsKCZidWYtPnZiLnF1ZXVlKTsKIAkJd2FrZV91cCgmYnVmLT52Yi5kb25lKTsKIAl9Ci0JaWYgKGxpc3RfZW1wdHkoJnEtPmFjdGl2ZSkpIHsKKwlpZiAobGlzdF9lbXB0eSgmcS0+YWN0aXZlKSkKIAkJZGVsX3RpbWVyKCZxLT50aW1lb3V0KTsKLQl9IGVsc2UgeworCWVsc2UKIAkJbW9kX3RpbWVyKCZxLT50aW1lb3V0LCBqaWZmaWVzICsgQlVGRkVSX1RJTUVPVVQpOwotCX0KIAlpZiAoYmMgIT0gMSkKLQkJcHJpbnRrKCIlczogJWQgYnVmZmVycyBoYW5kbGVkIChzaG91bGQgYmUgMSlcbiIsCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAlZCBidWZmZXJzIGhhbmRsZWQgKHNob3VsZCBiZSAxKVxuIiwKIAkJICAgICAgIF9fZnVuY19fLCBiYyk7CiB9CiAKQEAgLTM4MSw4ICszODAsNyBAQAogCXVuc2lnbmVkIGludCBpLCBsaW5lczsKIAl1MzIgY2R0OwogCi0JaWYgKGNoLT5jbWRzX3N0YXJ0ID09IDApCi0JeworCWlmIChjaC0+Y21kc19zdGFydCA9PSAwKSB7CiAJCWRwcmludGsoMSwgIiVzKCkgRXJhc2luZyBjaGFubmVsIFslc11cbiIsIF9fZnVuY19fLAogCQkJY2gtPm5hbWUpOwogCQljeF93cml0ZShjaC0+cHRyMV9yZWcsIDApOwpAQCAtNDE4LDE1ICs0MTYsMTUgQEAKIAogCS8qIHdyaXRlIENNRFMgKi8KIAlpZiAoY2gtPmp1bXBvbmx5KQotCQljeF93cml0ZShjaC0+Y21kc19zdGFydCArICAwLCA4KTsKKwkJY3hfd3JpdGUoY2gtPmNtZHNfc3RhcnQgKyAwLCA4KTsKIAllbHNlCi0JCWN4X3dyaXRlKGNoLT5jbWRzX3N0YXJ0ICsgIDAsIHJpc2MpOworCQljeF93cml0ZShjaC0+Y21kc19zdGFydCArIDAsIHJpc2MpOwogCWN4X3dyaXRlKGNoLT5jbWRzX3N0YXJ0ICsgIDQsIDApOyAvKiA2NCBiaXRzIDYzLTMyICovCiAJY3hfd3JpdGUoY2gtPmNtZHNfc3RhcnQgKyAgOCwgY2R0KTsKIAljeF93cml0ZShjaC0+Y21kc19zdGFydCArIDEyLCAobGluZXMqMTYpID4+IDMpOwogCWN4X3dyaXRlKGNoLT5jbWRzX3N0YXJ0ICsgMTYsIGNoLT5jdHJsX3N0YXJ0KTsKIAlpZiAoY2gtPmp1bXBvbmx5KQotCQljeF93cml0ZShjaC0+Y21kc19zdGFydCArIDIwLCAweDgwMDAwMDAwIHwgKDY0ID4+IDIpICk7CisJCWN4X3dyaXRlKGNoLT5jbWRzX3N0YXJ0ICsgMjAsIDB4ODAwMDAwMDAgfCAoNjQgPj4gMikpOwogCWVsc2UKIAkJY3hfd3JpdGUoY2gtPmNtZHNfc3RhcnQgKyAyMCwgNjQgPj4gMik7CiAJZm9yIChpID0gMjQ7IGkgPCA4MDsgaSArPSA0KQpAQCAtNDM2LDkgKzQzNCw5IEBACiAJY3hfd3JpdGUoY2gtPnB0cjFfcmVnLCBjaC0+Zmlmb19zdGFydCk7CiAJY3hfd3JpdGUoY2gtPnB0cjJfcmVnLCBjZHQpOwogCWN4X3dyaXRlKGNoLT5jbnQyX3JlZywgKGxpbmVzKjE2KSA+PiAzKTsKLQljeF93cml0ZShjaC0+Y250MV9yZWcsIChicGwgPj4gMykgLTEpOworCWN4X3dyaXRlKGNoLT5jbnQxX3JlZywgKGJwbCA+PiAzKSAtIDEpOwogCi0JZHByaW50aygyLCJbYnJpZGdlICVkXSBzcmFtIHNldHVwICVzOiBicGw9JWQgbGluZXM9JWRcbiIsCisJZHByaW50aygyLCAiW2JyaWRnZSAlZF0gc3JhbSBzZXR1cCAlczogYnBsPSVkIGxpbmVzPSVkXG4iLAogCQlkZXYtPmJyaWRnZSwKIAkJY2gtPm5hbWUsCiAJCWJwbCwKQEAgLTQ2OSw0MyArNDY3LDQzIEBACiAJdTMyIHJpc2M7CiAJdW5zaWduZWQgaW50IGksIGosIG47CiAKLQlwcmludGsoIiVzOiAlcyAtIGRtYSBjaGFubmVsIHN0YXR1cyBkdW1wXG4iLAorCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAlcyAtIGRtYSBjaGFubmVsIHN0YXR1cyBkdW1wXG4iLAogCSAgICAgICBkZXYtPm5hbWUsIGNoLT5uYW1lKTsKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShuYW1lKTsgaSsrKQotCQlwcmludGsoIiVzOiAgIGNtZHM6ICUtMTVzOiAweCUwOHhcbiIsCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAgIGNtZHM6ICUtMTVzOiAweCUwOHhcbiIsCiAJCSAgICAgICBkZXYtPm5hbWUsIG5hbWVbaV0sCiAJCSAgICAgICBjeF9yZWFkKGNoLT5jbWRzX3N0YXJ0ICsgNCppKSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCXJpc2MgPSBjeF9yZWFkKGNoLT5jbWRzX3N0YXJ0ICsgNCAqIChpICsgMTQpKTsKLQkJcHJpbnRrKCIlczogICByaXNjJWQ6ICIsIGRldi0+bmFtZSwgaSk7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAgIHJpc2MlZDogIiwgZGV2LT5uYW1lLCBpKTsKIAkJY3gyMzg4NV9yaXNjX2RlY29kZShyaXNjKTsKIAl9CiAJZm9yIChpID0gMDsgaSA8ICg2NCA+PiAyKTsgaSArPSBuKSB7CiAJCXJpc2MgPSBjeF9yZWFkKGNoLT5jdHJsX3N0YXJ0ICsgNCAqIGkpOwogCQkvKiBObyBjb25zaWRlcmF0aW9uIGZvciBiaXRzIDYzLTMyICovCiAKLQkJcHJpbnRrKCIlczogICAoMHglMDh4KSBpcSAleDogIiwgZGV2LT5uYW1lLAorCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogICAoMHglMDh4KSBpcSAleDogIiwgZGV2LT5uYW1lLAogCQkgICAgICAgY2gtPmN0cmxfc3RhcnQgKyA0ICogaSwgaSk7CiAJCW4gPSBjeDIzODg1X3Jpc2NfZGVjb2RlKHJpc2MpOwogCQlmb3IgKGogPSAxOyBqIDwgbjsgaisrKSB7CiAJCQlyaXNjID0gY3hfcmVhZChjaC0+Y3RybF9zdGFydCArIDQgKiAoaSArIGopKTsKLQkJCXByaW50aygiJXM6ICAgaXEgJXg6IDB4JTA4eCBbIGFyZyAjJWQgXVxuIiwKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAgIGlxICV4OiAweCUwOHggWyBhcmcgIyVkIF1cbiIsCiAJCQkgICAgICAgZGV2LT5uYW1lLCBpK2osIHJpc2MsIGopOwogCQl9CiAJfQogCi0JcHJpbnRrKCIlczogZmlmbzogMHglMDh4IC0+IDB4JXhcbiIsCisJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGZpZm86IDB4JTA4eCAtPiAweCV4XG4iLAogCSAgICAgICBkZXYtPm5hbWUsIGNoLT5maWZvX3N0YXJ0LCBjaC0+Zmlmb19zdGFydCtjaC0+Zmlmb19zaXplKTsKLQlwcmludGsoIiVzOiBjdHJsOiAweCUwOHggLT4gMHgleFxuIiwKKwlwcmludGsoS0VSTl9XQVJOSU5HICIlczogY3RybDogMHglMDh4IC0+IDB4JXhcbiIsCiAJICAgICAgIGRldi0+bmFtZSwgY2gtPmN0cmxfc3RhcnQsIGNoLT5jdHJsX3N0YXJ0ICsgNioxNik7Ci0JcHJpbnRrKCIlczogICBwdHIxX3JlZzogMHglMDh4XG4iLAorCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAgIHB0cjFfcmVnOiAweCUwOHhcbiIsCiAJICAgICAgIGRldi0+bmFtZSwgY3hfcmVhZChjaC0+cHRyMV9yZWcpKTsKLQlwcmludGsoIiVzOiAgIHB0cjJfcmVnOiAweCUwOHhcbiIsCisJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6ICAgcHRyMl9yZWc6IDB4JTA4eFxuIiwKIAkgICAgICAgZGV2LT5uYW1lLCBjeF9yZWFkKGNoLT5wdHIyX3JlZykpOwotCXByaW50aygiJXM6ICAgY250MV9yZWc6IDB4JTA4eFxuIiwKKwlwcmludGsoS0VSTl9XQVJOSU5HICIlczogICBjbnQxX3JlZzogMHglMDh4XG4iLAogCSAgICAgICBkZXYtPm5hbWUsIGN4X3JlYWQoY2gtPmNudDFfcmVnKSk7Ci0JcHJpbnRrKCIlczogICBjbnQyX3JlZzogMHglMDh4XG4iLAorCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiAgIGNudDJfcmVnOiAweCUwOHhcbiIsCiAJICAgICAgIGRldi0+bmFtZSwgY3hfcmVhZChjaC0+Y250Ml9yZWcpKTsKIH0KIApAQCAtNTE1LDEzICs1MTMsMTMgQEAKIAlzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiA9IHBvcnQtPmRldjsKIAl1bnNpZ25lZCBpbnQgaSwgaiwgbjsKIAotCXByaW50aygiJXM6IHJpc2MgZGlzYXNtOiAlcCBbZG1hPTB4JTA4bHhdXG4iLAorCXByaW50ayhLRVJOX0lORk8gIiVzOiByaXNjIGRpc2FzbTogJXAgW2RtYT0weCUwOGx4XVxuIiwKIAkgICAgICAgZGV2LT5uYW1lLCByaXNjLT5jcHUsICh1bnNpZ25lZCBsb25nKXJpc2MtPmRtYSk7CiAJZm9yIChpID0gMDsgaSA8IChyaXNjLT5zaXplID4+IDIpOyBpICs9IG4pIHsKLQkJcHJpbnRrKCIlczogICAlMDRkOiAiLCBkZXYtPm5hbWUsIGkpOworCQlwcmludGsoS0VSTl9JTkZPICIlczogICAlMDRkOiAiLCBkZXYtPm5hbWUsIGkpOwogCQluID0gY3gyMzg4NV9yaXNjX2RlY29kZShsZTMyX3RvX2NwdShyaXNjLT5jcHVbaV0pKTsKIAkJZm9yIChqID0gMTsgaiA8IG47IGorKykKLQkJCXByaW50aygiJXM6ICAgJTA0ZDogMHglMDh4IFsgYXJnICMlZCBdXG4iLAorCQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6ICAgJTA0ZDogMHglMDh4IFsgYXJnICMlZCBdXG4iLAogCQkJICAgICAgIGRldi0+bmFtZSwgaSArIGosIHJpc2MtPmNwdVtpICsgal0sIGopOwogCQlpZiAocmlzYy0+Y3B1W2ldID09IGNwdV90b19sZTMyKFJJU0NfSlVNUCkpCiAJCQlicmVhazsKQEAgLTYwMCw3ICs1OTgsNyBAQAogCSAqIHdoZW4gRE1BIGJlZ2lucyBpZiBSRFJfVExDVEwwIGJpdDQgaXMgbm90IGNsZWFyZWQuIEl0IGRvZXMgbm90CiAJICogb2NjdXIgb24gdGhlIGN4MjM4ODcgYnJpZGdlLgogCSAqLwotCWlmKGRldi0+YnJpZGdlID09IENYMjM4ODVfQlJJREdFXzg4NSkKKwlpZiAoZGV2LT5icmlkZ2UgPT0gQ1gyMzg4NV9CUklER0VfODg1KQogCQljeF9jbGVhcihSRFJfVExDVEwwLCAxIDw8IDQpOwogCiAJcmV0dXJuIDA7CkBAIC02MDgsMTMgKzYwNiwxMyBAQAogCiBzdGF0aWMgaW50IGdldF9yZXNvdXJjZXMoc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYpCiB7Ci0JaWYgKHJlcXVlc3RfbWVtX3JlZ2lvbihwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wY2ksMCksCi0JCQkgICAgICAgcGNpX3Jlc291cmNlX2xlbihkZXYtPnBjaSwwKSwKKwlpZiAocmVxdWVzdF9tZW1fcmVnaW9uKHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBjaSwgMCksCisJCQkgICAgICAgcGNpX3Jlc291cmNlX2xlbihkZXYtPnBjaSwgMCksCiAJCQkgICAgICAgZGV2LT5uYW1lKSkKIAkJcmV0dXJuIDA7CiAKIAlwcmludGsoS0VSTl9FUlIgIiVzOiBjYW4ndCBnZXQgTU1JTyBtZW1vcnkgQCAweCVsbHhcbiIsCi0JCWRldi0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZylwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wY2ksMCkpOworCQlkZXYtPm5hbWUsICh1bnNpZ25lZCBsb25nIGxvbmcpcGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGNpLCAwKSk7CiAKIAlyZXR1cm4gLUVCVVNZOwogfQpAQCAtNjIzLDcgKzYyMSw4IEBACiBpbnQgY3gyMzg4NV9yaXNjX3N0b3BwZXIoc3RydWN0IHBjaV9kZXYgKnBjaSwgc3RydWN0IGJ0Y3hfcmlzY21lbSAqcmlzYywKIAkJCQl1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHZhbHVlKTsKIAotc3RhdGljIGludCBjeDIzODg1X2luaXRfdHNwb3J0KHN0cnVjdCBjeDIzODg1X2RldiAqZGV2LCBzdHJ1Y3QgY3gyMzg4NV90c3BvcnQgKnBvcnQsIGludCBwb3J0bm8pCitzdGF0aWMgaW50IGN4MjM4ODVfaW5pdF90c3BvcnQoc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsCisJc3RydWN0IGN4MjM4ODVfdHNwb3J0ICpwb3J0LCBpbnQgcG9ydG5vKQogewogCWRwcmludGsoMSwgIiVzKHBvcnRubz0lZClcbiIsIF9fZnVuY19fLCBwb3J0bm8pOwogCkBAIC02NDMsNyArNjQyLDE4IEBACiAJcG9ydC0+bXBlZ3EudGltZW91dC5kYXRhID0gKHVuc2lnbmVkIGxvbmcpcG9ydDsKIAlpbml0X3RpbWVyKCZwb3J0LT5tcGVncS50aW1lb3V0KTsKIAotCXN3aXRjaChwb3J0bm8pIHsKKwltdXRleF9pbml0KCZwb3J0LT5mcm9udGVuZHMubG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJnBvcnQtPmZyb250ZW5kcy5mZWxpc3QpOworCXBvcnQtPmZyb250ZW5kcy5hY3RpdmVfZmVfaWQgPSAwOworCisJLyogVGhpcyBzaG91bGQgYmUgaGFyZGNvZGVkIGFsbG93IGEgc2luZ2xlIGZyb250ZW5kCisJICogYXR0YWNobWVudCB0byB0aGlzIHRzcG9ydCwga2VlcGluZyB0aGUgLWR2Yi5jCisJICogY29kZSBjbGVhbiBhbmQgc2FmZS4KKwkgKi8KKwlpZiAoIXBvcnQtPm51bV9mcm9udGVuZHMpCisJCXBvcnQtPm51bV9mcm9udGVuZHMgPSAxOworCisJc3dpdGNoIChwb3J0bm8pIHsKIAljYXNlIDE6CiAJCXBvcnQtPnJlZ19ncGNudCAgICAgICAgICA9IFZJRF9CX0dQQ05UOwogCQlwb3J0LT5yZWdfZ3BjbnRfY3RsICAgICAgPSBWSURfQl9HUENOVF9DVEw7CkBAIC03NDQsMTMgKzc1NCwxMyBAQAogCW11dGV4X3VubG9jaygmZGV2bGlzdCk7CiAKIAkvKiBDb25maWd1cmUgdGhlIGludGVybmFsIG1lbW9yeSAqLwotCWlmKGRldi0+cGNpLT5kZXZpY2UgPT0gMHg4ODgwKSB7CisJaWYgKGRldi0+cGNpLT5kZXZpY2UgPT0gMHg4ODgwKSB7CiAJCWRldi0+YnJpZGdlID0gQ1gyMzg4NV9CUklER0VfODg3OwogCQkvKiBBcHBseSBhIHNlbnNpYmxlIGNsb2NrIGZyZXF1ZW5jeSBmb3IgdGhlIFBDSWUgYnJpZGdlICovCiAJCWRldi0+Y2xrX2ZyZXEgPSAyNTAwMDAwMDsKIAkJZGV2LT5zcmFtX2NoYW5uZWxzID0gY3gyMzg4N19zcmFtX2NoYW5uZWxzOwogCX0gZWxzZQotCWlmKGRldi0+cGNpLT5kZXZpY2UgPT0gMHg4ODUyKSB7CisJaWYgKGRldi0+cGNpLT5kZXZpY2UgPT0gMHg4ODUyKSB7CiAJCWRldi0+YnJpZGdlID0gQ1gyMzg4NV9CUklER0VfODg1OwogCQkvKiBBcHBseSBhIHNlbnNpYmxlIGNsb2NrIGZyZXF1ZW5jeSBmb3IgdGhlIFBDSWUgYnJpZGdlICovCiAJCWRldi0+Y2xrX2ZyZXEgPSAyODAwMDAwMDsKQEAgLTgzMSw4ICs4NDEsOCBAQAogCX0KIAogCS8qIFBDSWUgc3R1ZmYgKi8KLQlkZXYtPmxtbWlvID0gaW9yZW1hcChwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wY2ksMCksCi0JCQkgICAgIHBjaV9yZXNvdXJjZV9sZW4oZGV2LT5wY2ksMCkpOworCWRldi0+bG1taW8gPSBpb3JlbWFwKHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBjaSwgMCksCisJCQkgICAgIHBjaV9yZXNvdXJjZV9sZW4oZGV2LT5wY2ksIDApKTsKIAogCWRldi0+Ym1taW8gPSAodTggX19pb21lbSAqKWRldi0+bG1taW87CiAKQEAgLTg2Miw3ICs4NzIsNyBAQAogCWN4MjM4ODVfaTJjX3JlZ2lzdGVyKCZkZXYtPmkyY19idXNbMV0pOwogCWN4MjM4ODVfaTJjX3JlZ2lzdGVyKCZkZXYtPmkyY19idXNbMl0pOwogCWN4MjM4ODVfY2FyZF9zZXR1cChkZXYpOwotCWN4MjM4ODVfY2FsbF9pMmNfY2xpZW50cyAoJmRldi0+aTJjX2J1c1swXSwgVFVORVJfU0VUX1NUQU5EQlksIE5VTEwpOworCWN4MjM4ODVfY2FsbF9pMmNfY2xpZW50cygmZGV2LT5pMmNfYnVzWzBdLCBUVU5FUl9TRVRfU1RBTkRCWSwgTlVMTCk7CiAJY3gyMzg4NV9pcl9pbml0KGRldik7CiAKIAlpZiAoY3gyMzg4NV9ib2FyZHNbZGV2LT5ib2FyZF0ucG9ydGEgPT0gQ1gyMzg4NV9BTkFMT0dfVklERU8pIHsKQEAgLTkwOCw4ICs5MTgsOCBAQAogCiBzdGF0aWMgdm9pZCBjeDIzODg1X2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KQogewotCXJlbGVhc2VfbWVtX3JlZ2lvbihwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wY2ksMCksCi0JCQkgICBwY2lfcmVzb3VyY2VfbGVuKGRldi0+cGNpLDApKTsKKwlyZWxlYXNlX21lbV9yZWdpb24ocGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGNpLCAwKSwKKwkJCSAgIHBjaV9yZXNvdXJjZV9sZW4oZGV2LT5wY2ksIDApKTsKIAogCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmZGV2LT5yZWZjb3VudCkpCiAJCXJldHVybjsKQEAgLTkzNiw3ICs5NDYsNyBAQAogCWlvdW5tYXAoZGV2LT5sbW1pbyk7CiB9CiAKLXN0YXRpYyBfX2xlMzIqIGN4MjM4ODVfcmlzY19maWVsZChfX2xlMzIgKnJwLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbGlzdCwKK3N0YXRpYyBfX2xlMzIgKmN4MjM4ODVfcmlzY19maWVsZChfX2xlMzIgKnJwLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbGlzdCwKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1MzIgc3luY19saW5lLAogCQkJICAgICAgIHVuc2lnbmVkIGludCBicGwsIHVuc2lnbmVkIGludCBwYWRkaW5nLAogCQkJICAgICAgIHVuc2lnbmVkIGludCBsaW5lcykKQEAgLTk1NywzMSArOTY3LDMxIEBACiAJCX0KIAkJaWYgKGJwbCA8PSBzZ19kbWFfbGVuKHNnKS1vZmZzZXQpIHsKIAkJCS8qIGZpdHMgaW50byBjdXJyZW50IGNodW5rICovCi0JCQkqKHJwKyspPWNwdV90b19sZTMyKFJJU0NfV1JJVEV8UklTQ19TT0x8UklTQ19FT0x8YnBsKTsKLQkJCSoocnArKyk9Y3B1X3RvX2xlMzIoc2dfZG1hX2FkZHJlc3Moc2cpK29mZnNldCk7Ci0JCQkqKHJwKyspPWNwdV90b19sZTMyKDApOyAvKiBiaXRzIDYzLTMyICovCi0JCQlvZmZzZXQrPWJwbDsKKwkJCSoocnArKykgPSBjcHVfdG9fbGUzMihSSVNDX1dSSVRFfFJJU0NfU09MfFJJU0NfRU9MfGJwbCk7CisJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoc2dfZG1hX2FkZHJlc3Moc2cpK29mZnNldCk7CisJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoMCk7IC8qIGJpdHMgNjMtMzIgKi8KKwkJCW9mZnNldCArPSBicGw7CiAJCX0gZWxzZSB7CiAJCQkvKiBzY2FubGluZSBuZWVkcyB0byBiZSBzcGxpdCAqLwogCQkJdG9kbyA9IGJwbDsKLQkJCSoocnArKyk9Y3B1X3RvX2xlMzIoUklTQ19XUklURXxSSVNDX1NPTHwKKwkJCSoocnArKykgPSBjcHVfdG9fbGUzMihSSVNDX1dSSVRFfFJJU0NfU09MfAogCQkJCQkgICAgKHNnX2RtYV9sZW4oc2cpLW9mZnNldCkpOwotCQkJKihycCsrKT1jcHVfdG9fbGUzMihzZ19kbWFfYWRkcmVzcyhzZykrb2Zmc2V0KTsKLQkJCSoocnArKyk9Y3B1X3RvX2xlMzIoMCk7IC8qIGJpdHMgNjMtMzIgKi8KKwkJCSoocnArKykgPSBjcHVfdG9fbGUzMihzZ19kbWFfYWRkcmVzcyhzZykrb2Zmc2V0KTsKKwkJCSoocnArKykgPSBjcHVfdG9fbGUzMigwKTsgLyogYml0cyA2My0zMiAqLwogCQkJdG9kbyAtPSAoc2dfZG1hX2xlbihzZyktb2Zmc2V0KTsKIAkJCW9mZnNldCA9IDA7CiAJCQlzZysrOwogCQkJd2hpbGUgKHRvZG8gPiBzZ19kbWFfbGVuKHNnKSkgewotCQkJCSoocnArKyk9Y3B1X3RvX2xlMzIoUklTQ19XUklURXwKKwkJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoUklTQ19XUklURXwKIAkJCQkJCSAgICBzZ19kbWFfbGVuKHNnKSk7Ci0JCQkJKihycCsrKT1jcHVfdG9fbGUzMihzZ19kbWFfYWRkcmVzcyhzZykpOwotCQkJCSoocnArKyk9Y3B1X3RvX2xlMzIoMCk7IC8qIGJpdHMgNjMtMzIgKi8KKwkJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoc2dfZG1hX2FkZHJlc3Moc2cpKTsKKwkJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoMCk7IC8qIGJpdHMgNjMtMzIgKi8KIAkJCQl0b2RvIC09IHNnX2RtYV9sZW4oc2cpOwogCQkJCXNnKys7CiAJCQl9Ci0JCQkqKHJwKyspPWNwdV90b19sZTMyKFJJU0NfV1JJVEV8UklTQ19FT0x8dG9kbyk7Ci0JCQkqKHJwKyspPWNwdV90b19sZTMyKHNnX2RtYV9hZGRyZXNzKHNnKSk7Ci0JCQkqKHJwKyspPWNwdV90b19sZTMyKDApOyAvKiBiaXRzIDYzLTMyICovCisJCQkqKHJwKyspID0gY3B1X3RvX2xlMzIoUklTQ19XUklURXxSSVNDX0VPTHx0b2RvKTsKKwkJCSoocnArKykgPSBjcHVfdG9fbGUzMihzZ19kbWFfYWRkcmVzcyhzZykpOworCQkJKihycCsrKSA9IGNwdV90b19sZTMyKDApOyAvKiBiaXRzIDYzLTMyICovCiAJCQlvZmZzZXQgKz0gdG9kbzsKIAkJfQogCQlvZmZzZXQgKz0gcGFkZGluZzsKQEAgLTEwMTAsOSArMTAyMCwxMSBAQAogCSAgIGNhbiBjYXVzZSBuZXh0IGJwbCB0byBzdGFydCBjbG9zZSB0byBhIHBhZ2UgYm9yZGVyLiAgRmlyc3QgRE1BCiAJICAgcmVnaW9uIG1heSBiZSBzbWFsbGVyIHRoYW4gUEFHRV9TSVpFICovCiAJLyogd3JpdGUgYW5kIGp1bXAgbmVlZCBhbmQgZXh0cmEgZHdvcmQgKi8KLQlpbnN0cnVjdGlvbnMgID0gZmllbGRzICogKDEgKyAoKGJwbCArIHBhZGRpbmcpICogbGluZXMpIC8gUEFHRV9TSVpFICsgbGluZXMpOworCWluc3RydWN0aW9ucyAgPSBmaWVsZHMgKiAoMSArICgoYnBsICsgcGFkZGluZykgKiBsaW5lcykKKwkJLyBQQUdFX1NJWkUgKyBsaW5lcyk7CiAJaW5zdHJ1Y3Rpb25zICs9IDI7Ci0JaWYgKChyYyA9IGJ0Y3hfcmlzY21lbV9hbGxvYyhwY2kscmlzYyxpbnN0cnVjdGlvbnMqMTIpKSA8IDApCisJcmMgPSBidGN4X3Jpc2NtZW1fYWxsb2MocGNpLCByaXNjLCBpbnN0cnVjdGlvbnMqMTIpOworCWlmIChyYyA8IDApCiAJCXJldHVybiByYzsKIAogCS8qIHdyaXRlIHJpc2MgaW5zdHJ1Y3Rpb25zICovCkBAIC0xMDI2LDcgKzEwMzgsNyBAQAogCiAJLyogc2F2ZSBwb2ludGVyIHRvIGptcCBpbnN0cnVjdGlvbiBhZGRyZXNzICovCiAJcmlzYy0+am1wID0gcnA7Ci0JQlVHX09OKChyaXNjLT5qbXAgLSByaXNjLT5jcHUgKyAyKSAqIHNpemVvZiAoKnJpc2MtPmNwdSkgPiByaXNjLT5zaXplKTsKKwlCVUdfT04oKHJpc2MtPmptcCAtIHJpc2MtPmNwdSArIDIpICogc2l6ZW9mKCpyaXNjLT5jcHUpID4gcmlzYy0+c2l6ZSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwNDgsNyArMTA2MCw4IEBACiAJaW5zdHJ1Y3Rpb25zICA9IDEgKyAoYnBsICogbGluZXMpIC8gUEFHRV9TSVpFICsgbGluZXM7CiAJaW5zdHJ1Y3Rpb25zICs9IDE7CiAKLQlpZiAoKHJjID0gYnRjeF9yaXNjbWVtX2FsbG9jKHBjaSxyaXNjLGluc3RydWN0aW9ucyoxMikpIDwgMCkKKwlyYyA9IGJ0Y3hfcmlzY21lbV9hbGxvYyhwY2ksIHJpc2MsIGluc3RydWN0aW9ucyoxMik7CisJaWYgKHJjIDwgMCkKIAkJcmV0dXJuIHJjOwogCiAJLyogd3JpdGUgcmlzYyBpbnN0cnVjdGlvbnMgKi8KQEAgLTEwNTcsNyArMTA3MCw3IEBACiAKIAkvKiBzYXZlIHBvaW50ZXIgdG8gam1wIGluc3RydWN0aW9uIGFkZHJlc3MgKi8KIAlyaXNjLT5qbXAgPSBycDsKLQlCVUdfT04oKHJpc2MtPmptcCAtIHJpc2MtPmNwdSArIDIpICogc2l6ZW9mICgqcmlzYy0+Y3B1KSA+IHJpc2MtPnNpemUpOworCUJVR19PTigocmlzYy0+am1wIC0gcmlzYy0+Y3B1ICsgMikgKiBzaXplb2YoKnJpc2MtPmNwdSkgPiByaXNjLT5zaXplKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTA2Nyw3ICsxMDgwLDggQEAKIAlfX2xlMzIgKnJwOwogCWludCByYzsKIAotCWlmICgocmMgPSBidGN4X3Jpc2NtZW1fYWxsb2MocGNpLCByaXNjLCA0KjE2KSkgPCAwKQorCXJjID0gYnRjeF9yaXNjbWVtX2FsbG9jKHBjaSwgcmlzYywgNCoxNik7CisJaWYgKHJjIDwgMCkKIAkJcmV0dXJuIHJjOwogCiAJLyogd3JpdGUgcmlzYyBpbnN0cnVjdGlvbnMgKi8KQEAgLTExNjEsMjIgKzExNzUsMjMgQEAKIAogCS8qIHNldHVwIGZpZm8gKyBmb3JtYXQgKi8KIAljeDIzODg1X3NyYW1fY2hhbm5lbF9zZXR1cChkZXYsCi0JCQkJICAgJmRldi0+c3JhbV9jaGFubmVsc1sgcG9ydC0+c3JhbV9jaG5vIF0sCisJCQkJICAgJmRldi0+c3JhbV9jaGFubmVsc1twb3J0LT5zcmFtX2Nobm9dLAogCQkJCSAgIHBvcnQtPnRzX3BhY2tldF9zaXplLCBidWYtPnJpc2MuZG1hKTsKLQlpZihkZWJ1ZyA+IDUpIHsKLQkJY3gyMzg4NV9zcmFtX2NoYW5uZWxfZHVtcChkZXYsICZkZXYtPnNyYW1fY2hhbm5lbHNbIHBvcnQtPnNyYW1fY2hubyBdICk7CisJaWYgKGRlYnVnID4gNSkgeworCQljeDIzODg1X3NyYW1fY2hhbm5lbF9kdW1wKGRldiwKKwkJCSZkZXYtPnNyYW1fY2hhbm5lbHNbcG9ydC0+c3JhbV9jaG5vXSk7CiAJCWN4MjM4ODVfcmlzY19kaXNhc20ocG9ydCwgJmJ1Zi0+cmlzYyk7CiAJfQogCiAJLyogd3JpdGUgVFMgbGVuZ3RoIHRvIGNoaXAgKi8KIAljeF93cml0ZShwb3J0LT5yZWdfbG5ndGgsIGJ1Zi0+dmIud2lkdGgpOwogCi0JaWYgKCAoIShjeDIzODg1X2JvYXJkc1tkZXYtPmJvYXJkXS5wb3J0YiAmIENYMjM4ODVfTVBFR19EVkIpKSAmJgotCQkoIShjeDIzODg1X2JvYXJkc1tkZXYtPmJvYXJkXS5wb3J0YyAmIENYMjM4ODVfTVBFR19EVkIpKSApIHsKLQkJcHJpbnRrKCAiJXMoKSBGYWlsZWQuIFVuc3VwcG9ydGVkIHZhbHVlIGluIC5wb3J0Yi9jICgweCUwOHgpLygweCUwOHgpXG4iLAorCWlmICgoIShjeDIzODg1X2JvYXJkc1tkZXYtPmJvYXJkXS5wb3J0YiAmIENYMjM4ODVfTVBFR19EVkIpKSAmJgorCQkoIShjeDIzODg1X2JvYXJkc1tkZXYtPmJvYXJkXS5wb3J0YyAmIENYMjM4ODVfTVBFR19EVkIpKSkgeworCQlwcmludGsoIiVzKCkgVW5zdXBwb3J0ZWQgLnBvcnRiL2MgKDB4JTA4eCkvKDB4JTA4eClcbiIsCiAJCQlfX2Z1bmNfXywKIAkJCWN4MjM4ODVfYm9hcmRzW2Rldi0+Ym9hcmRdLnBvcnRiLAotCQkJY3gyMzg4NV9ib2FyZHNbZGV2LT5ib2FyZF0ucG9ydGMgKTsKKwkJCWN4MjM4ODVfYm9hcmRzW2Rldi0+Ym9hcmRdLnBvcnRjKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0xMTg2LDcgKzEyMDEsNyBAQAogCXVkZWxheSgxMDApOwogCiAJLyogSWYgdGhlIHBvcnQgc3VwcG9ydHMgU1JDIFNFTEVDVCwgY29uZmlndXJlIGl0ICovCi0JaWYocG9ydC0+cmVnX3NyY19zZWwpCisJaWYgKHBvcnQtPnJlZ19zcmNfc2VsKQogCQljeF93cml0ZShwb3J0LT5yZWdfc3JjX3NlbCwgcG9ydC0+c3JjX3NlbF92YWwpOwogCiAJY3hfd3JpdGUocG9ydC0+cmVnX2h3X3NvcF9jdHJsLCBwb3J0LT5od19zb3BfY3RybF92YWwpOwpAQCAtMTE5NSw3ICsxMjEwLDcgQEAKIAljeF93cml0ZShwb3J0LT5yZWdfZ2VuX2N0cmwsIHBvcnQtPmdlbl9jdHJsX3ZhbCk7CiAJdWRlbGF5KDEwMCk7CiAKLQkvLyBOT1RFOiB0aGlzIGlzIDIgKHJlc2VydmVkKSBmb3IgcG9ydGIsIGRvZXMgaXQgbWF0dGVyPworCS8qIE5PVEU6IHRoaXMgaXMgMiAocmVzZXJ2ZWQpIGZvciBwb3J0YiwgZG9lcyBpdCBtYXR0ZXI/ICovCiAJLyogcmVzZXQgY291bnRlciB0byB6ZXJvICovCiAJY3hfd3JpdGUocG9ydC0+cmVnX2dwY250X2N0bCwgMyk7CiAJcS0+Y291bnQgPSAxOwpAQCAtMTIyOSwxMSArMTI0NCwxMSBAQAogCQljeF93cml0ZShBTFRfUElOX09VVF9TRUwsIDB4MTAxMDAwNDUpOwogCX0KIAotCXN3aXRjaChkZXYtPmJyaWRnZSkgeworCXN3aXRjaCAoZGV2LT5icmlkZ2UpIHsKIAljYXNlIENYMjM4ODVfQlJJREdFXzg4NToKIAljYXNlIENYMjM4ODVfQlJJREdFXzg4NzoKIAkJLyogZW5hYmxlIGlycXMgKi8KLQkJZHByaW50aygxLCAiJXMoKSBlbmFibGluZyBUUyBpbnQncyBhbmQgRE1BXG4iLCBfX2Z1bmNfXyApOworCQlkcHJpbnRrKDEsICIlcygpIGVuYWJsaW5nIFRTIGludCdzIGFuZCBETUFcbiIsIF9fZnVuY19fKTsKIAkJY3hfc2V0KHBvcnQtPnJlZ190c19pbnRfbXNrLCAgcG9ydC0+dHNfaW50X21za192YWwpOwogCQljeF9zZXQocG9ydC0+cmVnX2RtYV9jdGwsIHBvcnQtPmRtYV9jdGxfdmFsKTsKIAkJY3hfc2V0KFBDSV9JTlRfTVNLLCBkZXYtPnBjaV9pcnFtYXNrIHwgcG9ydC0+cGNpX2lycW1hc2spOwpAQCAtMTI5Miw4ICsxMzA3LDcgQEAKIAlzdHJ1Y3QgY3gyMzg4NV9idWZmZXIgKmJ1ZjsKIAogCWRwcmludGsoNSwgIiVzKClcbiIsIF9fZnVuY19fKTsKLQlpZiAobGlzdF9lbXB0eSgmcS0+YWN0aXZlKSkKLQl7CisJaWYgKGxpc3RfZW1wdHkoJnEtPmFjdGl2ZSkpIHsKIAkJc3RydWN0IGN4MjM4ODVfYnVmZmVyICpwcmV2OwogCQlwcmV2ID0gTlVMTDsKIApAQCAtMTMxMSw3ICsxMzI1LDcgQEAKIAkJCQlidWYtPnZiLnN0YXRlID0gVklERU9CVUZfQUNUSVZFOwogCQkJCWJ1Zi0+Y291bnQgICAgPSBxLT5jb3VudCsrOwogCQkJCW1vZF90aW1lcigmcS0+dGltZW91dCwgamlmZmllcytCVUZGRVJfVElNRU9VVCk7Ci0JCQkJZHByaW50ayg1LCAiWyVwLyVkXSByZXN0YXJ0X3F1ZXVlIC0gZmlyc3QgYWN0aXZlXG4iLAorCQkJCWRwcmludGsoNSwgIlslcC8lZF0gcmVzdGFydF9xdWV1ZSAtIGYvYWN0aXZlXG4iLAogCQkJCQlidWYsIGJ1Zi0+dmIuaSk7CiAKIAkJCX0gZWxzZSBpZiAocHJldi0+dmIud2lkdGggID09IGJ1Zi0+dmIud2lkdGggICYmCkBAIC0xMzIyLDggKzEzMzYsOSBAQAogCQkJCWJ1Zi0+dmIuc3RhdGUgPSBWSURFT0JVRl9BQ1RJVkU7CiAJCQkJYnVmLT5jb3VudCAgICA9IHEtPmNvdW50Kys7CiAJCQkJcHJldi0+cmlzYy5qbXBbMV0gPSBjcHVfdG9fbGUzMihidWYtPnJpc2MuZG1hKTsKLQkJCQlwcmV2LT5yaXNjLmptcFsyXSA9IGNwdV90b19sZTMyKDApOyAvKiA2NCBiaXQgYml0cyA2My0zMiAqLwotCQkJCWRwcmludGsoNSwiWyVwLyVkXSByZXN0YXJ0X3F1ZXVlIC0gbW92ZSB0byBhY3RpdmVcbiIsCisJCQkJLyogNjQgYml0IGJpdHMgNjMtMzIgKi8KKwkJCQlwcmV2LT5yaXNjLmptcFsyXSA9IGNwdV90b19sZTMyKDApOworCQkJCWRwcmludGsoNSwgIlslcC8lZF0gcmVzdGFydF9xdWV1ZSAtIG0vYWN0aXZlXG4iLAogCQkJCQlidWYsIGJ1Zi0+dmIuaSk7CiAJCQl9IGVsc2UgewogCQkJCXJldHVybiAwOwpAQCAtMTM2Miw3ICsxMzc3LDggQEAKIAkJYnVmLT52Yi5zaXplICAgPSBzaXplOwogCQlidWYtPnZiLmZpZWxkICA9IGZpZWxkIC8qVjRMMl9GSUVMRF9UT1AqLzsKIAotCQlpZiAoMCAhPSAocmMgPSB2aWRlb2J1Zl9pb2xvY2socSwgJmJ1Zi0+dmIsIE5VTEwpKSkKKwkJcmMgPSB2aWRlb2J1Zl9pb2xvY2socSwgJmJ1Zi0+dmIsIE5VTEwpOworCQlpZiAoMCAhPSByYykKIAkJCWdvdG8gZmFpbDsKIAkJY3gyMzg4NV9yaXNjX2RhdGFidWZmZXIoZGV2LT5wY2ksICZidWYtPnJpc2MsCiAJCQkJCXZpZGVvYnVmX3RvX2RtYSgmYnVmLT52YiktPnNnbGlzdCwKQEAgLTEzODgsNyArMTQwNCw3IEBACiAJYnVmLT5yaXNjLmptcFsyXSA9IGNwdV90b19sZTMyKDApOyAvKiBiaXRzIDYzLTMyICovCiAKIAlpZiAobGlzdF9lbXB0eSgmY3g4OHEtPmFjdGl2ZSkpIHsKLQkJZHByaW50ayggMSwgInF1ZXVlIGlzIGVtcHR5IC0gZmlyc3QgYWN0aXZlXG4iICk7CisJCWRwcmludGsoMSwgInF1ZXVlIGlzIGVtcHR5IC0gZmlyc3QgYWN0aXZlXG4iKTsKIAkJbGlzdF9hZGRfdGFpbCgmYnVmLT52Yi5xdWV1ZSwgJmN4ODhxLT5hY3RpdmUpOwogCQljeDIzODg1X3N0YXJ0X2RtYShwb3J0LCBjeDg4cSwgYnVmKTsKIAkJYnVmLT52Yi5zdGF0ZSA9IFZJREVPQlVGX0FDVElWRTsKQEAgLTEzOTcsNyArMTQxMyw3IEBACiAJCWRwcmludGsoMSwgIlslcC8lZF0gJXMgLSBmaXJzdCBhY3RpdmVcbiIsCiAJCQlidWYsIGJ1Zi0+dmIuaSwgX19mdW5jX18pOwogCX0gZWxzZSB7Ci0JCWRwcmludGsoIDEsICJxdWV1ZSBpcyBub3QgZW1wdHkgLSBhcHBlbmQgdG8gYWN0aXZlXG4iICk7CisJCWRwcmludGsoMSwgInF1ZXVlIGlzIG5vdCBlbXB0eSAtIGFwcGVuZCB0byBhY3RpdmVcbiIpOwogCQlwcmV2ID0gbGlzdF9lbnRyeShjeDg4cS0+YWN0aXZlLnByZXYsIHN0cnVjdCBjeDIzODg1X2J1ZmZlciwKIAkJCQkgIHZiLnF1ZXVlKTsKIAkJbGlzdF9hZGRfdGFpbCgmYnVmLT52Yi5xdWV1ZSwgJmN4ODhxLT5hY3RpdmUpOwpAQCAtMTQwNSw3ICsxNDIxLDcgQEAKIAkJYnVmLT5jb3VudCAgICA9IGN4ODhxLT5jb3VudCsrOwogCQlwcmV2LT5yaXNjLmptcFsxXSA9IGNwdV90b19sZTMyKGJ1Zi0+cmlzYy5kbWEpOwogCQlwcmV2LT5yaXNjLmptcFsyXSA9IGNwdV90b19sZTMyKDApOyAvKiA2NCBiaXQgYml0cyA2My0zMiAqLwotCQlkcHJpbnRrKCAxLCAiWyVwLyVkXSAlcyAtIGFwcGVuZCB0byBhY3RpdmVcbiIsCisJCWRwcmludGsoMSwgIlslcC8lZF0gJXMgLSBhcHBlbmQgdG8gYWN0aXZlXG4iLAogCQkJIGJ1ZiwgYnVmLT52Yi5pLCBfX2Z1bmNfXyk7CiAJfQogfQpAQCAtMTQzMSw3ICsxNDQ3LDcgQEAKIAkJCWJ1ZiwgYnVmLT52Yi5pLCByZWFzb24sICh1bnNpZ25lZCBsb25nKWJ1Zi0+cmlzYy5kbWEpOwogCX0KIAlpZiAocmVzdGFydCkgewotCQlkcHJpbnRrKDEsICJyZXN0YXJ0aW5nIHF1ZXVlXG4iICk7CisJCWRwcmludGsoMSwgInJlc3RhcnRpbmcgcXVldWVcbiIpOwogCQljeDIzODg1X3Jlc3RhcnRfcXVldWUocG9ydCwgcSk7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPnNsb2NrLCBmbGFncyk7CkBAIC0xNDUzLDEwICsxNDY5LDExIEBACiAJc3RydWN0IGN4MjM4ODVfdHNwb3J0ICpwb3J0ID0gKHN0cnVjdCBjeDIzODg1X3RzcG9ydCAqKWRhdGE7CiAJc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYgPSBwb3J0LT5kZXY7CiAKLQlkcHJpbnRrKDEsICIlcygpXG4iLF9fZnVuY19fKTsKKwlkcHJpbnRrKDEsICIlcygpXG4iLCBfX2Z1bmNfXyk7CiAKIAlpZiAoZGVidWcgPiA1KQotCQljeDIzODg1X3NyYW1fY2hhbm5lbF9kdW1wKGRldiwgJmRldi0+c3JhbV9jaGFubmVsc1sgcG9ydC0+c3JhbV9jaG5vIF0pOworCQljeDIzODg1X3NyYW1fY2hhbm5lbF9kdW1wKGRldiwKKwkJCSZkZXYtPnNyYW1fY2hhbm5lbHNbcG9ydC0+c3JhbV9jaG5vXSk7CiAKIAljeDIzODg1X3N0b3BfZG1hKHBvcnQpOwogCWRvX2NhbmNlbF9idWZmZXJzKHBvcnQsICJ0aW1lb3V0IiwgMSk7CkBAIC0xNTMyLDE2ICsxNTQ5LDIzIEBACiAJaWYgKChzdGF0dXMgJiBWSURfQkNfTVNLX09QQ19FUlIpIHx8CiAJCShzdGF0dXMgJiBWSURfQkNfTVNLX0JBRF9QS1QpIHx8CiAJCShzdGF0dXMgJiBWSURfQkNfTVNLX1NZTkMpIHx8Ci0JCShzdGF0dXMgJiBWSURfQkNfTVNLX09GKSkKLQl7CisJCShzdGF0dXMgJiBWSURfQkNfTVNLX09GKSkgeworCiAJCWlmIChzdGF0dXMgJiBWSURfQkNfTVNLX09QQ19FUlIpCi0JCQlkcHJpbnRrKDcsICIgKFZJRF9CQ19NU0tfT1BDX0VSUiAweCUwOHgpXG4iLCBWSURfQkNfTVNLX09QQ19FUlIpOworCQkJZHByaW50ayg3LCAiIChWSURfQkNfTVNLX09QQ19FUlIgMHglMDh4KVxuIiwKKwkJCQlWSURfQkNfTVNLX09QQ19FUlIpOworCiAJCWlmIChzdGF0dXMgJiBWSURfQkNfTVNLX0JBRF9QS1QpCi0JCQlkcHJpbnRrKDcsICIgKFZJRF9CQ19NU0tfQkFEX1BLVCAweCUwOHgpXG4iLCBWSURfQkNfTVNLX0JBRF9QS1QpOworCQkJZHByaW50ayg3LCAiIChWSURfQkNfTVNLX0JBRF9QS1QgMHglMDh4KVxuIiwKKwkJCQlWSURfQkNfTVNLX0JBRF9QS1QpOworCiAJCWlmIChzdGF0dXMgJiBWSURfQkNfTVNLX1NZTkMpCi0JCQlkcHJpbnRrKDcsICIgKFZJRF9CQ19NU0tfU1lOQyAgICAweCUwOHgpXG4iLCBWSURfQkNfTVNLX1NZTkMpOworCQkJZHByaW50ayg3LCAiIChWSURfQkNfTVNLX1NZTkMgICAgMHglMDh4KVxuIiwKKwkJCQlWSURfQkNfTVNLX1NZTkMpOworCiAJCWlmIChzdGF0dXMgJiBWSURfQkNfTVNLX09GKQotCQkJZHByaW50ayg3LCAiIChWSURfQkNfTVNLX09GICAgICAgMHglMDh4KVxuIiwgVklEX0JDX01TS19PRik7CisJCQlkcHJpbnRrKDcsICIgKFZJRF9CQ19NU0tfT0YgICAgICAweCUwOHgpXG4iLAorCQkJCVZJRF9CQ19NU0tfT0YpOwogCiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IG1wZWcgcmlzYyBvcCBjb2RlIGVycm9yXG4iLCBkZXYtPm5hbWUpOwogCkBAIC0xNTk1LDcgKzE2MTksNyBAQAogCXRzMl9zdGF0dXMgPSBjeF9yZWFkKFZJRF9DX0lOVF9TVEFUKTsKIAl0czJfbWFzayA9IGN4X3JlYWQoVklEX0NfSU5UX01TSyk7CiAKLQlpZiAoIChwY2lfc3RhdHVzID09IDApICYmICh0czJfc3RhdHVzID09IDApICYmICh0czFfc3RhdHVzID09IDApICkKKwlpZiAoKHBjaV9zdGF0dXMgPT0gMCkgJiYgKHRzMl9zdGF0dXMgPT0gMCkgJiYgKHRzMV9zdGF0dXMgPT0gMCkpCiAJCWdvdG8gb3V0OwogCiAJdmlkYV9jb3VudCA9IGN4X3JlYWQoVklEX0FfR1BDTlQpOwpAQCAtMTYxMCwzOCArMTYzNCw1NiBAQAogCWRwcmludGsoNywgInRzMl9zdGF0dXM6IDB4JTA4eCAgdHMyX21hc2s6IDB4JTA4eCBjb3VudDogMHgleFxuIiwKIAkJdHMyX3N0YXR1cywgdHMyX21hc2ssIHRzMl9jb3VudCk7CiAKLQlpZiAoIChwY2lfc3RhdHVzICYgUENJX01TS19SSVNDX1JEKSB8fAotCSAgICAgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX1JJU0NfV1IpIHx8Ci0JICAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQUxfUkQpIHx8Ci0JICAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQUxfV1IpIHx8Ci0JICAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQVBCX0RNQSkgfHwKLQkgICAgIChwY2lfc3RhdHVzICYgUENJX01TS19WSURfQykgfHwKLQkgICAgIChwY2lfc3RhdHVzICYgUENJX01TS19WSURfQikgfHwKLQkgICAgIChwY2lfc3RhdHVzICYgUENJX01TS19WSURfQSkgfHwKLQkgICAgIChwY2lfc3RhdHVzICYgUENJX01TS19BVURfSU5UKSB8fAotCSAgICAgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX0FVRF9FWFQpICkKLQl7CisJaWYgKChwY2lfc3RhdHVzICYgUENJX01TS19SSVNDX1JEKSB8fAorCSAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfUklTQ19XUikgfHwKKwkgICAgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX0FMX1JEKSB8fAorCSAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQUxfV1IpIHx8CisJICAgIChwY2lfc3RhdHVzICYgUENJX01TS19BUEJfRE1BKSB8fAorCSAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfVklEX0MpIHx8CisJICAgIChwY2lfc3RhdHVzICYgUENJX01TS19WSURfQikgfHwKKwkgICAgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX1ZJRF9BKSB8fAorCSAgICAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQVVEX0lOVCkgfHwKKwkgICAgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX0FVRF9FWFQpKSB7CiAKIAkJaWYgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX1JJU0NfUkQpCi0JCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfUklTQ19SRCAgIDB4JTA4eClcbiIsIFBDSV9NU0tfUklTQ19SRCk7CisJCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfUklTQ19SRCAgIDB4JTA4eClcbiIsCisJCQkJUENJX01TS19SSVNDX1JEKTsKKwogCQlpZiAocGNpX3N0YXR1cyAmIFBDSV9NU0tfUklTQ19XUikKLQkJCWRwcmludGsoNywgIiAoUENJX01TS19SSVNDX1dSICAgMHglMDh4KVxuIiwgUENJX01TS19SSVNDX1dSKTsKKwkJCWRwcmludGsoNywgIiAoUENJX01TS19SSVNDX1dSICAgMHglMDh4KVxuIiwKKwkJCQlQQ0lfTVNLX1JJU0NfV1IpOworCiAJCWlmIChwY2lfc3RhdHVzICYgUENJX01TS19BTF9SRCkKLQkJCWRwcmludGsoNywgIiAoUENJX01TS19BTF9SRCAgICAgMHglMDh4KVxuIiwgUENJX01TS19BTF9SRCk7CisJCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfQUxfUkQgICAgIDB4JTA4eClcbiIsCisJCQkJUENJX01TS19BTF9SRCk7CisKIAkJaWYgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX0FMX1dSKQotCQkJZHByaW50ayg3LCAiIChQQ0lfTVNLX0FMX1dSICAgICAweCUwOHgpXG4iLCBQQ0lfTVNLX0FMX1dSKTsKKwkJCWRwcmludGsoNywgIiAoUENJX01TS19BTF9XUiAgICAgMHglMDh4KVxuIiwKKwkJCQlQQ0lfTVNLX0FMX1dSKTsKKwogCQlpZiAocGNpX3N0YXR1cyAmIFBDSV9NU0tfQVBCX0RNQSkKLQkJCWRwcmludGsoNywgIiAoUENJX01TS19BUEJfRE1BICAgMHglMDh4KVxuIiwgUENJX01TS19BUEJfRE1BKTsKKwkJCWRwcmludGsoNywgIiAoUENJX01TS19BUEJfRE1BICAgMHglMDh4KVxuIiwKKwkJCQlQQ0lfTVNLX0FQQl9ETUEpOworCiAJCWlmIChwY2lfc3RhdHVzICYgUENJX01TS19WSURfQykKLQkJCWRwcmludGsoNywgIiAoUENJX01TS19WSURfQyAgICAgMHglMDh4KVxuIiwgUENJX01TS19WSURfQyk7CisJCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfVklEX0MgICAgIDB4JTA4eClcbiIsCisJCQkJUENJX01TS19WSURfQyk7CisKIAkJaWYgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX1ZJRF9CKQotCQkJZHByaW50ayg3LCAiIChQQ0lfTVNLX1ZJRF9CICAgICAweCUwOHgpXG4iLCBQQ0lfTVNLX1ZJRF9CKTsKKwkJCWRwcmludGsoNywgIiAoUENJX01TS19WSURfQiAgICAgMHglMDh4KVxuIiwKKwkJCQlQQ0lfTVNLX1ZJRF9CKTsKKwogCQlpZiAocGNpX3N0YXR1cyAmIFBDSV9NU0tfVklEX0EpCi0JCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfVklEX0EgICAgIDB4JTA4eClcbiIsIFBDSV9NU0tfVklEX0EpOworCQkJZHByaW50ayg3LCAiIChQQ0lfTVNLX1ZJRF9BICAgICAweCUwOHgpXG4iLAorCQkJCVBDSV9NU0tfVklEX0EpOworCiAJCWlmIChwY2lfc3RhdHVzICYgUENJX01TS19BVURfSU5UKQotCQkJZHByaW50ayg3LCAiIChQQ0lfTVNLX0FVRF9JTlQgICAweCUwOHgpXG4iLCBQQ0lfTVNLX0FVRF9JTlQpOworCQkJZHByaW50ayg3LCAiIChQQ0lfTVNLX0FVRF9JTlQgICAweCUwOHgpXG4iLAorCQkJCVBDSV9NU0tfQVVEX0lOVCk7CisKIAkJaWYgKHBjaV9zdGF0dXMgJiBQQ0lfTVNLX0FVRF9FWFQpCi0JCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfQVVEX0VYVCAgIDB4JTA4eClcbiIsIFBDSV9NU0tfQVVEX0VYVCk7CisJCQlkcHJpbnRrKDcsICIgKFBDSV9NU0tfQVVEX0VYVCAgIDB4JTA4eClcbiIsCisJCQkJUENJX01TS19BVURfRVhUKTsKIAogCX0KIApAQCAtMTc1MywxMyArMTc5NSwxMyBAQAogCQkuZGV2aWNlICAgICAgID0gMHg4ODUyLAogCQkuc3VidmVuZG9yICAgID0gUENJX0FOWV9JRCwKIAkJLnN1YmRldmljZSAgICA9IFBDSV9BTllfSUQsCi0JfSx7CisJfSwgewogCQkvKiBDWDIzODg3IFJldiAyICovCiAJCS52ZW5kb3IgICAgICAgPSAweDE0ZjEsCiAJCS5kZXZpY2UgICAgICAgPSAweDg4ODAsCiAJCS5zdWJ2ZW5kb3IgICAgPSBQQ0lfQU5ZX0lELAogCQkuc3ViZGV2aWNlICAgID0gUENJX0FOWV9JRCwKLQl9LHsKKwl9LCB7CiAJCS8qIC0tLSBlbmQgb2YgbGlzdCAtLS0gKi8KIAl9CiB9OwpAQCAtMTc5Nyw5ICsxODM5LDMgQEAKIG1vZHVsZV9leGl0KGN4MjM4ODVfZmluaSk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogYy1iYXNpYy1vZmZzZXQ6IDgKLSAqIEVuZDoKLSAqIGthdGU6IGVvbCAidW5peCI7IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdHJhaWxpbmctc3BhY2Utc2F2ZSBvbjsgdGFiLXdpZHRoIDg7IHJlcGxhY2UtdGFicyBvZmY7IHNwYWNlLWluZGVudCBvZmY7IG1peGVkLWluZGVudCBvZmYKLSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtZHZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1kdmIuYwppbmRleCAyNGJkMTgzLi5lMWFhYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1kdmIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1kdmIuYwpAQCAtNzgsMTkgKzc4LDE5IEBACiAJCQkgICBzdHJ1Y3QgdmlkZW9idWZfYnVmZmVyICp2YiwgZW51bSB2NGwyX2ZpZWxkIGZpZWxkKQogewogCXN0cnVjdCBjeDIzODg1X3RzcG9ydCAqcG9ydCA9IHEtPnByaXZfZGF0YTsKLQlyZXR1cm4gY3gyMzg4NV9idWZfcHJlcGFyZShxLCBwb3J0LCAoc3RydWN0IGN4MjM4ODVfYnVmZmVyKil2YiwgZmllbGQpOworCXJldHVybiBjeDIzODg1X2J1Zl9wcmVwYXJlKHEsIHBvcnQsIChzdHJ1Y3QgY3gyMzg4NV9idWZmZXIgKil2YiwgZmllbGQpOwogfQogCiBzdGF0aWMgdm9pZCBkdmJfYnVmX3F1ZXVlKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwgc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqdmIpCiB7CiAJc3RydWN0IGN4MjM4ODVfdHNwb3J0ICpwb3J0ID0gcS0+cHJpdl9kYXRhOwotCWN4MjM4ODVfYnVmX3F1ZXVlKHBvcnQsIChzdHJ1Y3QgY3gyMzg4NV9idWZmZXIqKXZiKTsKKwljeDIzODg1X2J1Zl9xdWV1ZShwb3J0LCAoc3RydWN0IGN4MjM4ODVfYnVmZmVyICopdmIpOwogfQogCiBzdGF0aWMgdm9pZCBkdmJfYnVmX3JlbGVhc2Uoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLAogCQkJICAgIHN0cnVjdCB2aWRlb2J1Zl9idWZmZXIgKnZiKQogewotCWN4MjM4ODVfZnJlZV9idWZmZXIocSwgKHN0cnVjdCBjeDIzODg1X2J1ZmZlciopdmIpOworCWN4MjM4ODVfZnJlZV9idWZmZXIocSwgKHN0cnVjdCBjeDIzODg1X2J1ZmZlciAqKXZiKTsKIH0KIAogc3RhdGljIHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZV9vcHMgZHZiX3FvcHMgPSB7CkBAIC0zMTIsMTkgKzMxMiwyNSBAQAogewogCXN0cnVjdCBjeDIzODg1X2RldiAqZGV2ID0gcG9ydC0+ZGV2OwogCXN0cnVjdCBjeDIzODg1X2kyYyAqaTJjX2J1cyA9IE5VTEw7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqZmUwOworCisJLyogR2V0IHRoZSBmaXJzdCBmcm9udGVuZCAqLworCWZlMCA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJnBvcnQtPmZyb250ZW5kcywgMSk7CisJaWYgKCFmZTApCisJCXJldHVybiAtRUlOVkFMOwogCiAJLyogaW5pdCBzdHJ1Y3QgdmlkZW9idWZfZHZiICovCi0JcG9ydC0+ZHZiLm5hbWUgPSBkZXYtPm5hbWU7CisJZmUwLT5kdmIubmFtZSA9IGRldi0+bmFtZTsKIAogCS8qIGluaXQgZnJvbnRlbmQgKi8KIAlzd2l0Y2ggKGRldi0+Ym9hcmQpIHsKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjEyNTA6CiAJCWkyY19idXMgPSAmZGV2LT5pMmNfYnVzWzBdOwotCQlwb3J0LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCiAJCQkJCQkmaGF1cHBhdWdlX2dlbmVyaWNfY29uZmlnLAogCQkJCQkJJmkyY19idXMtPmkyY19hZGFwKTsKLQkJaWYgKHBvcnQtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlkdmJfYXR0YWNoKG10MjEzMV9hdHRhY2gsIHBvcnQtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWR2Yl9hdHRhY2gobXQyMTMxX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJICAgJmkyY19idXMtPmkyY19hZGFwLAogCQkJCSAgICZoYXVwcGF1Z2VfZ2VuZXJpY190dW5lcmNvbmZpZywgMCk7CiAJCX0KQEAgLTMzMywyNyArMzM5LDI3IEBACiAJCWkyY19idXMgPSAmZGV2LT5pMmNfYnVzWzBdOwogCQlzd2l0Y2ggKGFsdF90dW5lcikgewogCQljYXNlIDE6Ci0JCQlwb3J0LT5kdmIuZnJvbnRlbmQgPQorCQkJZmUwLT5kdmIuZnJvbnRlbmQgPQogCQkJCWR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCiAJCQkJCSAgICZoYXVwcGF1Z2VfZXpxYW1fY29uZmlnLAogCQkJCQkgICAmaTJjX2J1cy0+aTJjX2FkYXApOwotCQkJaWYgKHBvcnQtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQkJZHZiX2F0dGFjaCh0ZGE4Mjl4X2F0dGFjaCwgcG9ydC0+ZHZiLmZyb250ZW5kLAorCQkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCQlkdmJfYXR0YWNoKHRkYTgyOXhfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJICAgJmRldi0+aTJjX2J1c1sxXS5pMmNfYWRhcCwgMHg0MiwKIAkJCQkJICAgJnRkYTgyOXhfbm9fcHJvYmUpOwotCQkJCWR2Yl9hdHRhY2godGRhMTgyNzFfYXR0YWNoLCBwb3J0LT5kdmIuZnJvbnRlbmQsCisJCQkJZHZiX2F0dGFjaCh0ZGExODI3MV9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCQkgICAweDYwLCAmZGV2LT5pMmNfYnVzWzFdLmkyY19hZGFwLAogCQkJCQkgICAmaGF1cHBhdWdlX3RkYTE4MjcxX2NvbmZpZyk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAwOgogCQlkZWZhdWx0OgotCQkJcG9ydC0+ZHZiLmZyb250ZW5kID0KKwkJCWZlMC0+ZHZiLmZyb250ZW5kID0KIAkJCQlkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAogCQkJCQkgICAmaGF1cHBhdWdlX2dlbmVyaWNfY29uZmlnLAogCQkJCQkgICAmaTJjX2J1cy0+aTJjX2FkYXApOwotCQkJaWYgKHBvcnQtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKQotCQkJCWR2Yl9hdHRhY2gobXQyMTMxX2F0dGFjaCwgcG9ydC0+ZHZiLmZyb250ZW5kLAorCQkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpCisJCQkJZHZiX2F0dGFjaChtdDIxMzFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJICAgJmkyY19idXMtPmkyY19hZGFwLAogCQkJCQkgICAmaGF1cHBhdWdlX2dlbmVyaWNfdHVuZXJjb25maWcsIDApOwogCQkJYnJlYWs7CkBAIC0zNjEsNDIgKzM2Nyw0MiBAQAogCQlicmVhazsKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE4MDBscDoKIAkJaTJjX2J1cyA9ICZkZXYtPmkyY19idXNbMF07Ci0JCXBvcnQtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDA5X2F0dGFjaCwKIAkJCQkJCSZoYXVwcGF1Z2VfaHZyMTgwMGxwX2NvbmZpZywKIAkJCQkJCSZpMmNfYnVzLT5pMmNfYWRhcCk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJZHZiX2F0dGFjaChtdDIxMzFfYXR0YWNoLCBwb3J0LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlkdmJfYXR0YWNoKG10MjEzMV9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCSAgICZpMmNfYnVzLT5pMmNfYWRhcCwKIAkJCQkgICAmaGF1cHBhdWdlX2dlbmVyaWNfdHVuZXJjb25maWcsIDApOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQ1gyMzg4NV9CT0FSRF9EVklDT19GVVNJT05IRFRWXzVfRVhQOgogCQlpMmNfYnVzID0gJmRldi0+aTJjX2J1c1swXTsKLQkJcG9ydC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChsZ2R0MzMweF9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChsZ2R0MzMweF9hdHRhY2gsCiAJCQkJCQkmZnVzaW9uaGR0dl81X2V4cHJlc3MsCiAJCQkJCQkmaTJjX2J1cy0+aTJjX2FkYXApOwotCQlpZiAocG9ydC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWR2Yl9hdHRhY2goc2ltcGxlX3R1bmVyX2F0dGFjaCwgcG9ydC0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQkJZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkgICAmaTJjX2J1cy0+aTJjX2FkYXAsIDB4NjEsCiAJCQkJICAgVFVORVJfTEdfVERWU19IMDZYRik7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxNTAwUToKIAkJaTJjX2J1cyA9ICZkZXYtPmkyY19idXNbMV07Ci0JCXBvcnQtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDA5X2F0dGFjaCwKIAkJCQkJCSZoYXVwcGF1Z2VfaHZyMTUwMHFfY29uZmlnLAogCQkJCQkJJmRldi0+aTJjX2J1c1swXS5pMmNfYWRhcCk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkKLQkJCWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgcG9ydC0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkKKwkJCWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJICAgJmkyY19idXMtPmkyY19hZGFwLAogCQkJCSAgICZoYXVwcGF1Z2VfaHZyMTUwMHFfdHVuZXJjb25maWcpOwogCQlicmVhazsKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE1MDA6CiAJCWkyY19idXMgPSAmZGV2LT5pMmNfYnVzWzFdOwotCQlwb3J0LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCiAJCQkJCQkmaGF1cHBhdWdlX2h2cjE1MDBfY29uZmlnLAogCQkJCQkJJmRldi0+aTJjX2J1c1swXS5pMmNfYWRhcCk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewogCQkJc3RydWN0IGR2Yl9mcm9udGVuZCAqZmU7CiAJCQlzdHJ1Y3QgeGMyMDI4X2NvbmZpZyBjZmcgPSB7CiAJCQkJLmkyY19hZGFwICA9ICZpMmNfYnVzLT5pMmNfYWRhcCwKQEAgLTQwOSw3ICs0MTUsNyBAQAogCQkJfTsKIAogCQkJZmUgPSBkdmJfYXR0YWNoKHhjMjAyOF9hdHRhY2gsCi0JCQkJCXBvcnQtPmR2Yi5mcm9udGVuZCwgJmNmZyk7CisJCQkJCWZlMC0+ZHZiLmZyb250ZW5kLCAmY2ZnKTsKIAkJCWlmIChmZSAhPSBOVUxMICYmIGZlLT5vcHMudHVuZXJfb3BzLnNldF9jb25maWcgIT0gTlVMTCkKIAkJCQlmZS0+b3BzLnR1bmVyX29wcy5zZXRfY29uZmlnKGZlLCAmY3RsKTsKIAkJfQpAQCAtNDE3LDI0ICs0MjMsMjQgQEAKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjEyMDA6CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxNzAwOgogCQlpMmNfYnVzID0gJmRldi0+aTJjX2J1c1swXTsKLQkJcG9ydC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0OF9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0OF9hdHRhY2gsCiAJCQkmaGF1cHBhdWdlX2h2cjEyMDBfY29uZmlnLAogCQkJJmkyY19idXMtPmkyY19hZGFwKTsKLQkJaWYgKHBvcnQtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlkdmJfYXR0YWNoKHRkYTgyOXhfYXR0YWNoLCBwb3J0LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlkdmJfYXR0YWNoKHRkYTgyOXhfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkmZGV2LT5pMmNfYnVzWzFdLmkyY19hZGFwLCAweDQyLAogCQkJCSZ0ZGE4Mjl4X25vX3Byb2JlKTsKLQkJCWR2Yl9hdHRhY2godGRhMTgyNzFfYXR0YWNoLCBwb3J0LT5kdmIuZnJvbnRlbmQsCisJCQlkdmJfYXR0YWNoKHRkYTE4MjcxX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJMHg2MCwgJmRldi0+aTJjX2J1c1sxXS5pMmNfYWRhcCwKIAkJCQkmaGF1cHBhdWdlX2h2cjEyMDBfdHVuZXJfY29uZmlnKTsKIAkJfQogCQlicmVhazsKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE0MDA6CiAJCWkyY19idXMgPSAmZGV2LT5pMmNfYnVzWzBdOwotCQlwb3J0LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGRpYjcwMDBwX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGRpYjcwMDBwX2F0dGFjaCwKIAkJCSZpMmNfYnVzLT5pMmNfYWRhcCwKIAkJCTB4MTIsICZoYXVwcGF1Z2VfaHZyMTQwMF9kaWI3MDAwX2NvbmZpZyk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewogCQkJc3RydWN0IGR2Yl9mcm9udGVuZCAqZmU7CiAJCQlzdHJ1Y3QgeGMyMDI4X2NvbmZpZyBjZmcgPSB7CiAJCQkJLmkyY19hZGFwICA9ICZkZXYtPmkyY19idXNbMV0uaTJjX2FkYXAsCkBAIC00NDQsMTIgKzQ1MCwxMyBAQAogCQkJCS5mbmFtZSAgID0gWEMzMDI4TF9ERUZBVUxUX0ZJUk1XQVJFLAogCQkJCS5tYXhfbGVuID0gNjQsCiAJCQkJLmRlbW9kICAgPSA1MDAwLAotCQkJCS8qIFRoaXMgaXMgdHJ1ZSBmb3IgYWxsIGRlbW9kcyB3aXRoIHYzNiBmaXJtd2FyZT8gKi8KKwkJCQkvKiBUaGlzIGlzIHRydWUgZm9yIGFsbCBkZW1vZHMgd2l0aAorCQkJCQl2MzYgZmlybXdhcmU/ICovCiAJCQkJLnR5cGUgICAgPSBYQzIwMjhfRDI2MzMsCiAJCQl9OwogCiAJCQlmZSA9IGR2Yl9hdHRhY2goeGMyMDI4X2F0dGFjaCwKLQkJCQkJcG9ydC0+ZHZiLmZyb250ZW5kLCAmY2ZnKTsKKwkJCQkJZmUwLT5kdmIuZnJvbnRlbmQsICZjZmcpOwogCQkJaWYgKGZlICE9IE5VTEwgJiYgZmUtPm9wcy50dW5lcl9vcHMuc2V0X2NvbmZpZyAhPSBOVUxMKQogCQkJCWZlLT5vcHMudHVuZXJfb3BzLnNldF9jb25maWcoZmUsICZjdGwpOwogCQl9CkBAIC00NTcsMjUgKzQ2NCwyNSBAQAogCWNhc2UgQ1gyMzg4NV9CT0FSRF9EVklDT19GVVNJT05IRFRWXzdfRFVBTF9FWFA6CiAJCWkyY19idXMgPSAmZGV2LT5pMmNfYnVzW3BvcnQtPm5yIC0gMV07CiAKLQkJcG9ydC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDA5X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAogCQkJCQkJJmR2aWNvX3M1aDE0MDlfY29uZmlnLAogCQkJCQkJJmkyY19idXMtPmkyY19hZGFwKTsKLQkJaWYgKHBvcnQtPmR2Yi5mcm9udGVuZCA9PSBOVUxMKQotCQkJcG9ydC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDExX2F0dGFjaCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kID09IE5VTEwpCisJCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQxMV9hdHRhY2gsCiAJCQkJCQkJJmR2aWNvX3M1aDE0MTFfY29uZmlnLAogCQkJCQkJCSZpMmNfYnVzLT5pMmNfYWRhcCk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkKLQkJCWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgcG9ydC0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkKKwkJCWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJICAgJmkyY19idXMtPmkyY19hZGFwLAogCQkJCSAgICZkdmljb194YzUwMDBfdHVuZXJjb25maWcpOwogCQlicmVhazsKIAljYXNlIENYMjM4ODVfQk9BUkRfRFZJQ09fRlVTSU9OSERUVl9EVkJfVF9EVUFMX0VYUDogewogCQlpMmNfYnVzID0gJmRldi0+aTJjX2J1c1twb3J0LT5uciAtIDFdOwogCi0JCXBvcnQtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goemwxMDM1M19hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh6bDEwMzUzX2F0dGFjaCwKIAkJCQkJICAgICAgICZkdmljb19mdXNpb25oZHR2X3hjMzAyOCwKIAkJCQkJICAgICAgICZpMmNfYnVzLT5pMmNfYWRhcCk7Ci0JCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewogCQkJc3RydWN0IGR2Yl9mcm9udGVuZCAgICAgICpmZTsKIAkJCXN0cnVjdCB4YzIwMjhfY29uZmlnCSAgY2ZnID0gewogCQkJCS5pMmNfYWRhcCAgPSAmaTJjX2J1cy0+aTJjX2FkYXAsCkBAIC00ODcsNyArNDk0LDcgQEAKIAkJCQkuZGVtb2QgICAgICAgPSBYQzMwMjhfRkVfWkFSTElOSzQ1NiwKIAkJCX07CiAKLQkJCWZlID0gZHZiX2F0dGFjaCh4YzIwMjhfYXR0YWNoLCBwb3J0LT5kdmIuZnJvbnRlbmQsCisJCQlmZSA9IGR2Yl9hdHRhY2goeGMyMDI4X2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCSZjZmcpOwogCQkJaWYgKGZlICE9IE5VTEwgJiYgZmUtPm9wcy50dW5lcl9vcHMuc2V0X2NvbmZpZyAhPSBOVUxMKQogCQkJCWZlLT5vcHMudHVuZXJfb3BzLnNldF9jb25maWcoZmUsICZjdGwpOwpAQCAtNDk3LDEwICs1MDQsMTAgQEAKIAljYXNlIENYMjM4ODVfQk9BUkRfTEVBRFRFS19XSU5GQVNUX1BYRFZSMzIwMF9IOgogCQlpMmNfYnVzID0gJmRldi0+aTJjX2J1c1swXTsKIAotCQlwb3J0LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goemwxMDM1M19hdHRhY2gsCiAJCQkmZHZpY29fZnVzaW9uaGR0dl94YzMwMjgsCiAJCQkmaTJjX2J1cy0+aTJjX2FkYXApOwotCQlpZiAocG9ydC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKIAkJCXN0cnVjdCBkdmJfZnJvbnRlbmQgICAgICAqZmU7CiAJCQlzdHJ1Y3QgeGMyMDI4X2NvbmZpZwkgIGNmZyA9IHsKIAkJCQkuaTJjX2FkYXAgID0gJmRldi0+aTJjX2J1c1sxXS5pMmNfYWRhcCwKQEAgLTUxMiw3MyArNTE5LDEwOCBAQAogCQkJCS5kZW1vZCAgICAgICA9IFhDMzAyOF9GRV9aQVJMSU5LNDU2LAogCQkJfTsKIAotCQkJZmUgPSBkdmJfYXR0YWNoKHhjMjAyOF9hdHRhY2gsIHBvcnQtPmR2Yi5mcm9udGVuZCwKKwkJCWZlID0gZHZiX2F0dGFjaCh4YzIwMjhfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkmY2ZnKTsKIAkJCWlmIChmZSAhPSBOVUxMICYmIGZlLT5vcHMudHVuZXJfb3BzLnNldF9jb25maWcgIT0gTlVMTCkKIAkJCQlmZS0+b3BzLnR1bmVyX29wcy5zZXRfY29uZmlnKGZlLCAmY3RsKTsKIAkJfQogCQlicmVhazsKIAlkZWZhdWx0OgotCQlwcmludGsoIiVzOiBUaGUgZnJvbnRlbmQgb2YgeW91ciBEVkIvQVRTQyBjYXJkIGlzbid0IHN1cHBvcnRlZCB5ZXRcbiIsCisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBUaGUgZnJvbnRlbmQgb2YgeW91ciBEVkIvQVRTQyBjYXJkICIKKwkJCSIgaXNuJ3Qgc3VwcG9ydGVkIHlldFxuIiwKIAkJICAgICAgIGRldi0+bmFtZSk7CiAJCWJyZWFrOwogCX0KLQlpZiAoTlVMTCA9PSBwb3J0LT5kdmIuZnJvbnRlbmQpIHsKLQkJcHJpbnRrKCIlczogZnJvbnRlbmQgaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iLCBkZXYtPm5hbWUpOworCWlmIChOVUxMID09IGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGZyb250ZW5kIGluaXRpYWxpemF0aW9uIGZhaWxlZFxuIiwKKwkJCWRldi0+bmFtZSk7CiAJCXJldHVybiAtMTsKIAl9CiAJLyogZGVmaW5lIGdlbmVyYWwtcHVycG9zZSBjYWxsYmFjayBwb2ludGVyICovCi0JcG9ydC0+ZHZiLmZyb250ZW5kLT5jYWxsYmFjayA9IGN4MjM4ODVfdHVuZXJfY2FsbGJhY2s7CisJZmUwLT5kdmIuZnJvbnRlbmQtPmNhbGxiYWNrID0gY3gyMzg4NV90dW5lcl9jYWxsYmFjazsKIAogCS8qIFB1dCB0aGUgYW5hbG9nIGRlY29kZXIgaW4gc3RhbmRieSB0byBrZWVwIGl0IHF1aWV0ICovCiAJY3gyMzg4NV9jYWxsX2kyY19jbGllbnRzKGkyY19idXMsIFRVTkVSX1NFVF9TVEFOREJZLCBOVUxMKTsKIAotCWlmIChwb3J0LT5kdmIuZnJvbnRlbmQtPm9wcy5hbmFsb2dfb3BzLnN0YW5kYnkpCi0JCXBvcnQtPmR2Yi5mcm9udGVuZC0+b3BzLmFuYWxvZ19vcHMuc3RhbmRieShwb3J0LT5kdmIuZnJvbnRlbmQpOworCWlmIChmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLmFuYWxvZ19vcHMuc3RhbmRieSkKKwkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5hbmFsb2dfb3BzLnN0YW5kYnkoZmUwLT5kdmIuZnJvbnRlbmQpOwogCiAJLyogcmVnaXN0ZXIgZXZlcnl0aGluZyAqLwotCXJldHVybiB2aWRlb2J1Zl9kdmJfcmVnaXN0ZXIoJnBvcnQtPmR2YiwgVEhJU19NT0RVTEUsIHBvcnQsCi0JCQkJICAgICAmZGV2LT5wY2ktPmRldiwgYWRhcHRlcl9ucik7CisJcmV0dXJuIHZpZGVvYnVmX2R2Yl9yZWdpc3Rlcl9idXMoJnBvcnQtPmZyb250ZW5kcywgVEhJU19NT0RVTEUsIHBvcnQsCisJCSZkZXYtPnBjaS0+ZGV2LCBhZGFwdGVyX25yLCAwKTsKKwogfQogCiBpbnQgY3gyMzg4NV9kdmJfcmVnaXN0ZXIoc3RydWN0IGN4MjM4ODVfdHNwb3J0ICpwb3J0KQogeworCisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqZmUwOwogCXN0cnVjdCBjeDIzODg1X2RldiAqZGV2ID0gcG9ydC0+ZGV2OwotCWludCBlcnI7CisJaW50IGVyciwgaTsKIAotCWRwcmludGsoMSwgIiVzXG4iLCBfX2Z1bmNfXyk7Ci0JZHByaW50aygxLCAiIC0+YmVpbmcgcHJvYmVkIGJ5IENhcmQ9JWQgTmFtZT0lcywgUENJICUwMng6JTAyeFxuIiwKLQkJZGV2LT5ib2FyZCwKLQkJZGV2LT5uYW1lLAotCQlkZXYtPnBjaV9idXMsCi0JCWRldi0+cGNpX3Nsb3QpOworCS8qIEhlcmUgd2UgbmVlZCB0byBhbGxvY2F0ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgZnJvbnRlbmRzLAorCSAqIGFzIHJlZmxlY3RlZCBpbiB0aGUgY2FyZHMgc3RydWN0LiBUaGUgcmVhbGl0eSBpcyB0aGF0IGN1cnJyZW50bHkKKwkgKiBubyBjeDIzODg1IGJvYXJkcyBzdXBwb3J0IHRoaXMgLSB5ZXQuIEJ1dCwgaWYgd2UgZG9uJ3QgbW9kaWZ5IHRoaXMKKwkgKiBjb2RlIHRoZW4gdGhlIHNlY29uZCBmcm9udGVuZCB3b3VsZCBuZXZlciBiZSBhbGxvY2F0ZWQgKGxhdGVyKQorCSAqIGFuZCBmYWlsIHdpdGggZXJyb3IgYmVmb3JlIHRoZSBhdHRhY2ggaW4gZHZiX3JlZ2lzdGVyKCkuCisJICogV2l0aG91dCB0aGVzZSBjaGFuZ2VzIHdlIHJpc2sgYW4gT09QUyBsYXRlci4gVGhlIGNoYW5nZXMgaGVyZQorCSAqIGFyZSBmb3Igc2FmZXR5LCBhbmQgc2hvdWxkIHByb3ZpZGUgYSBnb29kIGZvdW5kYXRpb24gZm9yIHRoZQorCSAqIGZ1dHVyZSBhZGRpdGlvbiBvZiBhbnkgbXVsdGktZnJvbnRlbmQgY3gyMzg4NSBiYXNlZCBib2FyZHMuCisJICovCisJcHJpbnRrKEtFUk5fSU5GTyAiJXMoKSBhbGxvY2F0aW5nICVkIGZyb250ZW5kKHMpXG4iLCBfX2Z1bmNfXywKKwkJcG9ydC0+bnVtX2Zyb250ZW5kcyk7CiAKLQllcnIgPSAtRU5PREVWOworCWZvciAoaSA9IDE7IGkgPD0gcG9ydC0+bnVtX2Zyb250ZW5kczsgaSsrKSB7CisJCWlmICh2aWRlb2J1Zl9kdmJfYWxsb2NfZnJvbnRlbmQoCisJCQkmcG9ydC0+ZnJvbnRlbmRzLCBpKSA9PSBOVUxMKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIiVzKCkgZmFpbGVkIHRvIGFsbG9jXG4iLCBfX2Z1bmNfXyk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQogCi0JLyogZHZiIHN0dWZmICovCi0JcHJpbnRrKCIlczogY3gyMzg4NSBiYXNlZCBkdmIgY2FyZFxuIiwgZGV2LT5uYW1lKTsKLQl2aWRlb2J1Zl9xdWV1ZV9zZ19pbml0KCZwb3J0LT5kdmIuZHZicSwgJmR2Yl9xb3BzLCAmZGV2LT5wY2ktPmRldiwgJnBvcnQtPnNsb2NrLAorCQlmZTAgPSB2aWRlb2J1Zl9kdmJfZ2V0X2Zyb250ZW5kKCZwb3J0LT5mcm9udGVuZHMsIGkpOworCQlpZiAoIWZlMCkKKwkJCWVyciA9IC1FSU5WQUw7CisKKwkJZHByaW50aygxLCAiJXNcbiIsIF9fZnVuY19fKTsKKwkJZHByaW50aygxLCAiIC0+cHJvYmVkIGJ5IENhcmQ9JWQgTmFtZT0lcywgUENJICUwMng6JTAyeFxuIiwKKwkJCWRldi0+Ym9hcmQsCisJCQlkZXYtPm5hbWUsCisJCQlkZXYtPnBjaV9idXMsCisJCQlkZXYtPnBjaV9zbG90KTsKKworCQllcnIgPSAtRU5PREVWOworCisJCS8qIGR2YiBzdHVmZiAqLworCQkvKiBXZSBoYXZlIHRvIGluaXQgdGhlIHF1ZXVlIGZvciBlYWNoIGZyb250ZW5kIG9uIGEgcG9ydC4gKi8KKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGN4MjM4ODUgYmFzZWQgZHZiIGNhcmRcbiIsIGRldi0+bmFtZSk7CisJCXZpZGVvYnVmX3F1ZXVlX3NnX2luaXQoJmZlMC0+ZHZiLmR2YnEsICZkdmJfcW9wcywKKwkJCSAgICAmZGV2LT5wY2ktPmRldiwgJnBvcnQtPnNsb2NrLAogCQkJICAgIFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSwgVjRMMl9GSUVMRF9UT1AsCiAJCQkgICAgc2l6ZW9mKHN0cnVjdCBjeDIzODg1X2J1ZmZlciksIHBvcnQpOworCX0KIAllcnIgPSBkdmJfcmVnaXN0ZXIocG9ydCk7CiAJaWYgKGVyciAhPSAwKQotCQlwcmludGsoIiVzKCkgZHZiX3JlZ2lzdGVyIGZhaWxlZCBlcnIgPSAlZFxuIiwgX19mdW5jX18sIGVycik7CisJCXByaW50ayhLRVJOX0VSUiAiJXMoKSBkdmJfcmVnaXN0ZXIgZmFpbGVkIGVyciA9ICVkXG4iLAorCQkJX19mdW5jX18sIGVycik7CiAKIAlyZXR1cm4gZXJyOwogfQogCiBpbnQgY3gyMzg4NV9kdmJfdW5yZWdpc3RlcihzdHJ1Y3QgY3gyMzg4NV90c3BvcnQgKnBvcnQpCiB7Ci0JLyogZHZiICovCi0JaWYocG9ydC0+ZHZiLmZyb250ZW5kKQotCQl2aWRlb2J1Zl9kdmJfdW5yZWdpc3RlcigmcG9ydC0+ZHZiKTsKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kICpmZTA7CisKKwkvKiBGSVhNRTogaW4gYW4gZXJyb3IgY29uZGl0aW9uIHdoZXJlIHRoZSB3ZSBoYXZlCisJICogYW4gZXhwZWN0ZWQgbnVtYmVyIG9mIGZyb250ZW5kcyAoYXR0YWNoIHByb2JsZW0pCisJICogdGhlbiB0aGlzIG1pZ2h0IG5vdCBjbGVhbiB1cCBjb3JyZWN0bHksIGlmIDEKKwkgKiBpcyBpbnZhbGlkLgorCSAqIFRoaXMgY29tbWVudCBvbmx5IGFwcGxpZXMgdG8gZnV0dXJlIGJvYXJkcyBJRiB0aGV5CisJICogaW1wbGVtZW50IE1GRSBzdXBwb3J0LgorCSAqLworCWZlMCA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJnBvcnQtPmZyb250ZW5kcywgMSk7CisJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKQorCQl2aWRlb2J1Zl9kdmJfdW5yZWdpc3Rlcl9idXMoJnBvcnQtPmZyb250ZW5kcyk7CiAKIAlyZXR1cm4gMDsKIH0KIAotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIGMtYmFzaWMtb2Zmc2V0OiA4Ci0gKiBFbmQ6Ci0gKiBrYXRlOiBlb2wgInVuaXgiOyBpbmRlbnQtd2lkdGggMzsgcmVtb3ZlLXRyYWlsaW5nLXNwYWNlIG9uOyByZXBsYWNlLXRyYWlsaW5nLXNwYWNlLXNhdmUgb247IHRhYi13aWR0aCA4OyByZXBsYWNlLXRhYnMgb2ZmOyBzcGFjZS1pbmRlbnQgb2ZmOyBtaXhlZC1pbmRlbnQgb2ZmCi0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtaTJjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1pMmMuYwppbmRleCBmOThlNDc2Li5iYjdmNzFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1pMmMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1pMmMuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAJCQlwcmludGsoIiA+XG4iKTsKIAl9CiAKLQlmb3IgKGNudCA9IDE7IGNudCA8IG1zZy0+bGVuOyBjbnQrKyApIHsKKwlmb3IgKGNudCA9IDE7IGNudCA8IG1zZy0+bGVuOyBjbnQrKykgewogCQkvKiBmb2xsb3dpbmcgYnl0ZXMgKi8KIAkJd2RhdGEgPSBtc2ctPmJ1ZltjbnRdOwogCQljdHJsID0gYnVzLT5pMmNfcGVyaW9kIHwgKDEgPDwgMTIpIHwgKDEgPDwgMik7CkBAIC0xNTEsOSArMTUxLDkgQEAKIAkJaWYgKHJldHZhbCA9PSAwKQogCQkJZ290byBlaW87CiAJCWlmIChpMmNfZGVidWcpIHsKLQkJCXByaW50aygiICUwMngiLCBtc2ctPmJ1ZltjbnRdKTsKKwkJCWRwcmludGsoMSwgIiAlMDJ4IiwgbXNnLT5idWZbY250XSk7CiAJCQlpZiAoIShjdHJsICYgSTJDX05PU1RPUCkpCi0JCQkJcHJpbnRrKCIgPlxuIik7CisJCQkJZHByaW50aygxLCAiID5cbiIpOwogCQl9CiAJfQogCXJldHVybiBtc2ctPmxlbjsKQEAgLTE2Miw3ICsxNjIsNyBAQAogCXJldHZhbCA9IC1FSU87CiAgZXJyOgogCWlmIChpMmNfZGVidWcpCi0JCXByaW50aygiIEVSUjogJWRcbiIsIHJldHZhbCk7CisJCXByaW50ayhLRVJOX0VSUiAiIEVSUjogJWRcbiIsIHJldHZhbCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMTk0LDEyICsxOTQsMTIgQEAKIAogCWlmIChpMmNfZGVidWcpIHsKIAkJaWYgKGpvaW5lZCkKLQkJCXByaW50aygiIFIiKTsKKwkJCWRwcmludGsoMSwgIiBSIik7CiAJCWVsc2UKLQkJCXByaW50aygiIDxSICUwMngiLCAobXNnLT5hZGRyIDw8IDEpICsgMSk7CisJCQlkcHJpbnRrKDEsICIgPFIgJTAyeCIsIChtc2ctPmFkZHIgPDwgMSkgKyAxKTsKIAl9CiAKLQlmb3IoY250ID0gMDsgY250IDwgbXNnLT5sZW47IGNudCsrKSB7CisJZm9yIChjbnQgPSAwOyBjbnQgPCBtc2ctPmxlbjsgY250KyspIHsKIAogCQljdHJsID0gYnVzLT5pMmNfcGVyaW9kIHwgKDEgPDwgMTIpIHwgKDEgPDwgMikgfCAxOwogCkBAIC0yMTYsOSArMjE2LDkgQEAKIAkJCWdvdG8gZWlvOwogCQltc2ctPmJ1ZltjbnRdID0gY3hfcmVhZChidXMtPnJlZ19yZGF0YSkgJiAweGZmOwogCQlpZiAoaTJjX2RlYnVnKSB7Ci0JCQlwcmludGsoIiAlMDJ4IiwgbXNnLT5idWZbY250XSk7CisJCQlkcHJpbnRrKDEsICIgJTAyeCIsIG1zZy0+YnVmW2NudF0pOwogCQkJaWYgKCEoY3RybCAmIEkyQ19OT1NUT1ApKQotCQkJCXByaW50aygiID5cbiIpOworCQkJCWRwcmludGsoMSwgIiA+XG4iKTsKIAkJfQogCX0KIAlyZXR1cm4gbXNnLT5sZW47CkBAIC0yMjcsNyArMjI3LDcgQEAKIAlyZXR2YWwgPSAtRUlPOwogIGVycjoKIAlpZiAoaTJjX2RlYnVnKQotCQlwcmludGsoIiBFUlI6ICVkXG4iLCByZXR2YWwpOworCQlwcmludGsoS0VSTl9FUlIgIiBFUlI6ICVkXG4iLCByZXR2YWwpOwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTM1MywxNyArMzUzLDE3IEBACiB9OwogCiBzdGF0aWMgY2hhciAqaTJjX2RldnNbMTI4XSA9IHsKLQlbMHgxMCA+PiAxXSAgID0gInRkYTEwMDQ4IiwKLQlbMHgxMiA+PiAxXSAgID0gImRpYjcwMDBwYyIsCi0JWyAweDFjID4+IDEgXSA9ICJsZ2R0MzMwMyIsCi0JWyAweDg2ID4+IDEgXSA9ICJ0ZGE5ODg3IiwKLQlbIDB4MzIgPj4gMSBdID0gImN4MjQyMjciLAotCVsgMHg4OCA+PiAxIF0gPSAiY3gyNTgzNyIsCi0JWyAweDg0ID4+IDEgXSA9ICJ0ZGE4Mjk1IiwKLQlbIDB4YTAgPj4gMSBdID0gImVlcHJvbSIsCi0JWyAweGMwID4+IDEgXSA9ICJ0dW5lci9tdDIxMzEvdGRhODI3NSIsCisJWzB4MTAgPj4gMV0gPSAidGRhMTAwNDgiLAorCVsweDEyID4+IDFdID0gImRpYjcwMDBwYyIsCisJWzB4MWMgPj4gMV0gPSAibGdkdDMzMDMiLAorCVsweDg2ID4+IDFdID0gInRkYTk4ODciLAorCVsweDMyID4+IDFdID0gImN4MjQyMjciLAorCVsweDg4ID4+IDFdID0gImN4MjU4MzciLAorCVsweDg0ID4+IDFdID0gInRkYTgyOTUiLAorCVsweGEwID4+IDFdID0gImVlcHJvbSIsCisJWzB4YzAgPj4gMV0gPSAidHVuZXIvbXQyMTMxL3RkYTgyNzUiLAogCVsweGMyID4+IDFdID0gInR1bmVyL210MjEzMS90ZGE4Mjc1L3hjNTAwMC94YzMwMjgiLAotCVsweGM4ID4+IDFdICAgPSAidHVuZXIveGMzMDI4TCIsCisJWzB4YzggPj4gMV0gPSAidHVuZXIveGMzMDI4TCIsCiB9OwogCiBzdGF0aWMgdm9pZCBkb19pMmNfc2NhbihjaGFyICpuYW1lLCBzdHJ1Y3QgaTJjX2NsaWVudCAqYykKQEAgLTM3Niw3ICszNzYsNyBAQAogCQlyYyA9IGkyY19tYXN0ZXJfcmVjdihjLCAmYnVmLCAwKTsKIAkJaWYgKHJjIDwgMCkKIAkJCWNvbnRpbnVlOwotCQlwcmludGsoIiVzOiBpMmMgc2NhbjogZm91bmQgZGV2aWNlIEAgMHgleCAgWyVzXVxuIiwKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGkyYyBzY2FuOiBmb3VuZCBkZXZpY2UgQCAweCV4ICBbJXNdXG4iLAogCQkgICAgICAgbmFtZSwgaSA8PCAxLCBpMmNfZGV2c1tpXSA/IGkyY19kZXZzW2ldIDogIj8/PyIpOwogCX0KIH0KQEAgLTQwOCwxMSArNDA4LDEyIEBACiAJYnVzLT5pMmNfY2xpZW50LmFkYXB0ZXIgPSAmYnVzLT5pMmNfYWRhcDsKIAogCWlmICgwID09IGJ1cy0+aTJjX3JjKSB7Ci0JCXByaW50aygiJXM6IGkyYyBidXMgJWQgcmVnaXN0ZXJlZFxuIiwgZGV2LT5uYW1lLCBidXMtPm5yKTsKKwkJZHByaW50aygxLCAiJXM6IGkyYyBidXMgJWQgcmVnaXN0ZXJlZFxuIiwgZGV2LT5uYW1lLCBidXMtPm5yKTsKIAkJaWYgKGkyY19zY2FuKQogCQkJZG9faTJjX3NjYW4oZGV2LT5uYW1lLCAmYnVzLT5pMmNfY2xpZW50KTsKIAl9IGVsc2UKLQkJcHJpbnRrKCIlczogaTJjIGJ1cyAlZCByZWdpc3RlciBGQUlMRURcbiIsIGRldi0+bmFtZSwgYnVzLT5ucik7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBpMmMgYnVzICVkIHJlZ2lzdGVyIEZBSUxFRFxuIiwKKwkJCWRldi0+bmFtZSwgYnVzLT5ucik7CiAKIAlyZXR1cm4gYnVzLT5pMmNfcmM7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtdmlkZW8uYwppbmRleCBmNzVlZDFjLi5hYjMxMTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LXZpZGVvLmMKQEAgLTI4NSwxMSArMjg1LDEwIEBACiAJCWxpc3RfZGVsKCZidWYtPnZiLnF1ZXVlKTsKIAkJd2FrZV91cCgmYnVmLT52Yi5kb25lKTsKIAl9Ci0JaWYgKGxpc3RfZW1wdHkoJnEtPmFjdGl2ZSkpIHsKKwlpZiAobGlzdF9lbXB0eSgmcS0+YWN0aXZlKSkKIAkJZGVsX3RpbWVyKCZxLT50aW1lb3V0KTsKLQl9IGVsc2UgeworCWVsc2UKIAkJbW9kX3RpbWVyKCZxLT50aW1lb3V0LCBqaWZmaWVzK0JVRkZFUl9USU1FT1VUKTsKLQl9CiAJaWYgKGJjICE9IDEpCiAJCXByaW50ayhLRVJOX0VSUiAiJXM6ICVkIGJ1ZmZlcnMgaGFuZGxlZCAoc2hvdWxkIGJlIDEpXG4iLAogCQkJX19mdW5jX18sIGJjKTsKQEAgLTM3OSwxMiArMzc4LDEyIEBACiAKIHN0YXRpYyBpbnQgcmVzX2NoZWNrKHN0cnVjdCBjeDIzODg1X2ZoICpmaCwgdW5zaWduZWQgaW50IGJpdCkKIHsKLQlyZXR1cm4gKGZoLT5yZXNvdXJjZXMgJiBiaXQpOworCXJldHVybiBmaC0+cmVzb3VyY2VzICYgYml0OwogfQogCiBzdGF0aWMgaW50IHJlc19sb2NrZWQoc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsIHVuc2lnbmVkIGludCBiaXQpCiB7Ci0JcmV0dXJuIChkZXYtPnJlc291cmNlcyAmIGJpdCk7CisJcmV0dXJuIGRldi0+cmVzb3VyY2VzICYgYml0OwogfQogCiBzdGF0aWMgdm9pZCByZXNfZnJlZShzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiwgc3RydWN0IGN4MjM4ODVfZmggKmZoLApAQCAtODg3LDE0ICs4ODYsMTYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogVklERU8gQ1RSTCBJT0NUTFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLXN0YXRpYyBpbnQgY3gyMzg4NV9nZXRfY29udHJvbChzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiwgc3RydWN0IHY0bDJfY29udHJvbCAqY3RsKQorc3RhdGljIGludCBjeDIzODg1X2dldF9jb250cm9sKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2LAorCXN0cnVjdCB2NGwyX2NvbnRyb2wgKmN0bCkKIHsKIAlkcHJpbnRrKDEsICIlcygpIGNhbGxpbmcgY3gyNTg0MChWSURJT0NfR19DVFJMKVxuIiwgX19mdW5jX18pOwogCWN4MjM4ODVfY2FsbF9pMmNfY2xpZW50cygmZGV2LT5pMmNfYnVzWzJdLCBWSURJT0NfR19DVFJMLCBjdGwpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGN4MjM4ODVfc2V0X2NvbnRyb2woc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsIHN0cnVjdCB2NGwyX2NvbnRyb2wgKmN0bCkKK3N0YXRpYyBpbnQgY3gyMzg4NV9zZXRfY29udHJvbChzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiwKKwlzdHJ1Y3QgdjRsMl9jb250cm9sICpjdGwpCiB7CiAJZHByaW50aygxLCAiJXMoKSBjYWxsaW5nIGN4MjU4NDAoVklESU9DX1NfQ1RSTCkiCiAJCSIgKGRpc2FibGVkIC0gbm8gYWN0aW9uKVxuIiwgX19mdW5jX18pOwpAQCAtMTA3MywyOSArMTA3NCwyOSBAQAogCXN0cnVjdCB2NGwyX3JlcXVlc3RidWZmZXJzICpwKQogewogCXN0cnVjdCBjeDIzODg1X2ZoICpmaCA9IHByaXY7Ci0JcmV0dXJuICh2aWRlb2J1Zl9yZXFidWZzKGdldF9xdWV1ZShmaCksIHApKTsKKwlyZXR1cm4gdmlkZW9idWZfcmVxYnVmcyhnZXRfcXVldWUoZmgpLCBwKTsKIH0KIAogc3RhdGljIGludCB2aWRpb2NfcXVlcnlidWYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCiAJc3RydWN0IHY0bDJfYnVmZmVyICpwKQogewogCXN0cnVjdCBjeDIzODg1X2ZoICpmaCA9IHByaXY7Ci0JcmV0dXJuICh2aWRlb2J1Zl9xdWVyeWJ1ZihnZXRfcXVldWUoZmgpLCBwKSk7CisJcmV0dXJuIHZpZGVvYnVmX3F1ZXJ5YnVmKGdldF9xdWV1ZShmaCksIHApOwogfQogCiBzdGF0aWMgaW50IHZpZGlvY19xYnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAogCXN0cnVjdCB2NGwyX2J1ZmZlciAqcCkKIHsKIAlzdHJ1Y3QgY3gyMzg4NV9maCAqZmggPSBwcml2OwotCXJldHVybiAodmlkZW9idWZfcWJ1ZihnZXRfcXVldWUoZmgpLCBwKSk7CisJcmV0dXJuIHZpZGVvYnVmX3FidWYoZ2V0X3F1ZXVlKGZoKSwgcCk7CiB9CiAKIHN0YXRpYyBpbnQgdmlkaW9jX2RxYnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAogCXN0cnVjdCB2NGwyX2J1ZmZlciAqcCkKIHsKIAlzdHJ1Y3QgY3gyMzg4NV9maCAqZmggPSBwcml2OwotCXJldHVybiAodmlkZW9idWZfZHFidWYoZ2V0X3F1ZXVlKGZoKSwgcCwKLQkJCQlmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykpOworCXJldHVybiB2aWRlb2J1Zl9kcWJ1ZihnZXRfcXVldWUoZmgpLCBwLAorCQkJCWZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKTsKIH0KIAogc3RhdGljIGludCB2aWRpb2Nfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaAppbmRleCBiYTRlMGFhLi4xZDUzZjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KIAotI2RlZmluZSBDWDIzODg1X1ZFUlNJT05fQ09ERSBLRVJORUxfVkVSU0lPTigwLDAsMSkKKyNkZWZpbmUgQ1gyMzg4NV9WRVJTSU9OX0NPREUgS0VSTkVMX1ZFUlNJT04oMCwgMCwgMSkKIAogI2RlZmluZSBVTlNFVCAoLTFVKQogCkBAIC0yMjUsNyArMjI1LDcgQEAKIAlpbnQgICAgICAgICAgICAgICAgICAgICAgICBucjsKIAlpbnQgICAgICAgICAgICAgICAgICAgICAgICBzcmFtX2Nobm87CiAKLQlzdHJ1Y3QgdmlkZW9idWZfZHZiICAgICAgICBkdmI7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZHMgZnJvbnRlbmRzOwogCiAJLyogZG1hIHF1ZXVlcyAqLwogCXN0cnVjdCBjeDIzODg1X2RtYXF1ZXVlICAgIG1wZWdxOwpAQCAtMjYyLDYgKzI2Miw5IEBACiAJdTMyICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NlbF92YWw7CiAJdTMyICAgICAgICAgICAgICAgICAgICAgICAgdmxkX21pc2NfdmFsOwogCXUzMiAgICAgICAgICAgICAgICAgICAgICAgIGh3X3NvcF9jdHJsX3ZhbDsKKworCS8qIEFsbG93IGEgc2luZ2xlIHRzcG9ydCB0byBoYXZlIG11bHRpcGxlIGZyb250ZW5kcyAqLworCXUzMiAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mcm9udGVuZHM7CiB9OwogCiBzdHJ1Y3QgY3gyMzg4NV9kZXYgewpAQCAtMzY3LDE0ICszNzAsMTQgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUgY3hfcmVhZChyZWcpICAgICAgICAgICAgIHJlYWRsKGRldi0+bG1taW8gKyAoKHJlZyk+PjIpKQotI2RlZmluZSBjeF93cml0ZShyZWcsdmFsdWUpICAgICAgd3JpdGVsKCh2YWx1ZSksIGRldi0+bG1taW8gKyAoKHJlZyk+PjIpKQorI2RlZmluZSBjeF93cml0ZShyZWcsIHZhbHVlKSAgICAgd3JpdGVsKCh2YWx1ZSksIGRldi0+bG1taW8gKyAoKHJlZyk+PjIpKQogCi0jZGVmaW5lIGN4X2FuZG9yKHJlZyxtYXNrLHZhbHVlKSBcCisjZGVmaW5lIGN4X2FuZG9yKHJlZywgbWFzaywgdmFsdWUpIFwKICAgd3JpdGVsKChyZWFkbChkZXYtPmxtbWlvKygocmVnKT4+MikpICYgfihtYXNrKSkgfFwKICAgKCh2YWx1ZSkgJiAobWFzaykpLCBkZXYtPmxtbWlvKygocmVnKT4+MikpCiAKLSNkZWZpbmUgY3hfc2V0KHJlZyxiaXQpICAgICAgICAgIGN4X2FuZG9yKChyZWcpLChiaXQpLChiaXQpKQotI2RlZmluZSBjeF9jbGVhcihyZWcsYml0KSAgICAgICAgY3hfYW5kb3IoKHJlZyksKGJpdCksMCkKKyNkZWZpbmUgY3hfc2V0KHJlZywgYml0KSAgICAgICAgICBjeF9hbmRvcigocmVnKSwgKGJpdCksIChiaXQpKQorI2RlZmluZSBjeF9jbGVhcihyZWcsIGJpdCkgICAgICAgIGN4X2FuZG9yKChyZWcpLCAoYml0KSwgMCkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGN4MjM4ODUtY29yZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC00MTEsNyArNDE0LDggQEAKIGV4dGVybiBzdHJ1Y3QgY3gyMzg4NV9zdWJpZCBjeDIzODg1X3N1Ymlkc1tdOwogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGludCBjeDIzODg1X2lkY291bnQ7CiAKLWV4dGVybiBpbnQgY3gyMzg4NV90dW5lcl9jYWxsYmFjayh2b2lkICpwcml2LCBpbnQgY29tcG9uZW50LCBpbnQgY29tbWFuZCwgaW50IGFyZyk7CitleHRlcm4gaW50IGN4MjM4ODVfdHVuZXJfY2FsbGJhY2sodm9pZCAqcHJpdiwgaW50IGNvbXBvbmVudCwKKwlpbnQgY29tbWFuZCwgaW50IGFyZyk7CiBleHRlcm4gdm9pZCBjeDIzODg1X2NhcmRfbGlzdChzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldik7CiBleHRlcm4gaW50ICBjeDIzODg1X2lyX2luaXQoc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYpOwogZXh0ZXJuIHZvaWQgY3gyMzg4NV9ncGlvX3NldHVwKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KTsKQEAgLTQ3OSwxMSArNDgzLDMgQEAKIHsKIAlyZXR1cm4gKG5vcm0gJiAoVjRMMl9TVERfTU4gJiB+VjRMMl9TVERfUEFMX05jKSkgPyA3NTQgOiA5MjI7CiB9Ci0KLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIGMtYmFzaWMtb2Zmc2V0OiA4Ci0gKiBFbmQ6Ci0gKiBrYXRlOiBlb2wgInVuaXgiOyBpbmRlbnQtd2lkdGggMzsgcmVtb3ZlLXRyYWlsaW5nLXNwYWNlIG9uOyByZXBsYWNlLXRyYWlsaW5nLXNwYWNlLXNhdmUgb247IHRhYi13aWR0aCA4OyByZXBsYWNlLXRhYnMgb2ZmOyBzcGFjZS1pbmRlbnQgb2ZmOyBtaXhlZC1pbmRlbnQgb2ZmCi0gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LWNhcmRzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1jYXJkcy5jCmluZGV4IDVkYTA0ZTguLmZiYzIyNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtY2FyZHMuYwpAQCAtMTI3MCwyNyArMTI3MCw0MCBAQAogCQkubXBlZyAgICAgICAgICAgPSBDWDg4X01QRUdfRFZCLAogCX0sCiAJW0NYODhfQk9BUkRfSEFVUFBBVUdFX0hWUjMwMDBdID0gewotCQkvKiBGSVhNRTogQWRkIGR2YiAmIHJhZGlvIHN1cHBvcnQgKi8KIAkJLm5hbWUgICAgICAgICAgID0gIkhhdXBwYXVnZSBXaW5UVi1IVlIzMDAwIFRyaU1vZGUgQW5hbG9nL0RWQi1TL0RWQi1UIiwKIAkJLnR1bmVyX3R5cGUgICAgID0gVFVORVJfUEhJTElQU19GTUQxMjE2TUVfTUszLAogCQkucmFkaW9fdHlwZSAgICAgPSBVTlNFVCwKIAkJLnR1bmVyX2FkZHIgICAgID0gQUREUl9VTlNFVCwKIAkJLnJhZGlvX2FkZHIgICAgID0gQUREUl9VTlNFVCwKIAkJLnRkYTk4ODdfY29uZiAgID0gVERBOTg4N19QUkVTRU5ULAorCQkuYXVkaW9fY2hpcCAgICAgPSBWNEwyX0lERU5UX1dNODc3NSwKIAkJLmlucHV0ICAgICAgICAgID0ge3sKIAkJCS50eXBlICAgPSBDWDg4X1ZNVVhfVEVMRVZJU0lPTiwKIAkJCS52bXV4ICAgPSAwLAogCQkJLmdwaW8wICA9IDB4ODRiZiwKKwkJCS8qIDE6IFRWIEF1ZGlvIC8gRk0gTW9ubyAqLworCQkJLmF1ZGlvcm91dGUgPSAxLAogCQl9LHsKIAkJCS50eXBlICAgPSBDWDg4X1ZNVVhfQ09NUE9TSVRFMSwKIAkJCS52bXV4ICAgPSAxLAogCQkJLmdwaW8wICA9IDB4ODRiZiwKKwkJCS8qIDI6IExpbmUtSW4gKi8KKwkJCS5hdWRpb3JvdXRlID0gMiwKIAkJfSx7CiAJCQkudHlwZSAgID0gQ1g4OF9WTVVYX1NWSURFTywKIAkJCS52bXV4ICAgPSAyLAogCQkJLmdwaW8wICA9IDB4ODRiZiwKKwkJCS8qIDI6IExpbmUtSW4gKi8KKwkJCS5hdWRpb3JvdXRlID0gMiwKIAkJfX0sCisJCS5yYWRpbyA9IHsKKwkJCS50eXBlICAgPSBDWDg4X1JBRElPLAorCQkJLmdwaW8wCT0gMHg4NGJmLAorCQkJLyogNDogRk0gU3RlcmVvICh1bnRlc3RlZCkgKi8KKwkJCS5hdWRpb3JvdXRlID0gOCwKKwkJfSwKIAkJLm1wZWcgICAgICAgICAgID0gQ1g4OF9NUEVHX0RWQiwKKwkJLm51bV9mcm9udGVuZHMJPSAyLAogCX0sCiAJW0NYODhfQk9BUkRfTk9SV09PRF9NSUNST10gPSB7CiAJCS5uYW1lICAgICAgICAgICA9ICJOb3J3b29kIE1pY3JvIFRWIFR1bmVyIiwKQEAgLTEzNTYsMjMgKzEzNjksMjcgQEAKIAkJCS50eXBlICAgPSBDWDg4X1ZNVVhfVEVMRVZJU0lPTiwKIAkJCS52bXV4ICAgPSAwLAogCQkJLmdwaW8wCT0gMHhlZjg4LAorCQkJLyogMTogVFYgQXVkaW8gLyBGTSBNb25vICovCiAJCQkuYXVkaW9yb3V0ZSA9IDEsCiAJCX0sewogCQkJLnR5cGUJPSBDWDg4X1ZNVVhfQ09NUE9TSVRFMSwKIAkJCS52bXV4CT0gMSwKIAkJCS5ncGlvMAk9IDB4ZWY4OCwKKwkJCS8qIDI6IExpbmUtSW4gKi8KIAkJCS5hdWRpb3JvdXRlID0gMiwKIAkJfSx7CiAJCQkudHlwZQk9IENYODhfVk1VWF9TVklERU8sCiAJCQkudm11eAk9IDIsCiAJCQkuZ3BpbzAJPSAweGVmODgsCisJCQkvKiAyOiBMaW5lLUluICovCiAJCQkuYXVkaW9yb3V0ZSA9IDIsCiAJCX19LAotCQkvKiBmaXhtZTogQWRkIHJhZGlvIHN1cHBvcnQgKi8KIAkJLm1wZWcgICAgICAgICAgID0gQ1g4OF9NUEVHX0RWQiB8IENYODhfTVBFR19CTEFDS0JJUkQsCiAJCS5yYWRpbyA9IHsKIAkJCS50eXBlICAgPSBDWDg4X1JBRElPLAogCQkJLmdwaW8wCT0gMHhlZjg4LAorCQkJLyogNDogRk0gU3RlcmVvICh1bnRlc3RlZCkgKi8KKwkJCS5hdWRpb3JvdXRlID0gOCwKIAkJfSwKIAl9LAogCVtDWDg4X0JPQVJEX0FEU1RFQ0hfUFRWXzM5MF0gPSB7CkBAIC0xNzE2LDYgKzE3MzMsNyBAQAogCQkudHVuZXJfYWRkciAgICAgPSBBRERSX1VOU0VULAogCQkucmFkaW9fYWRkciAgICAgPSBBRERSX1VOU0VULAogCQkudGRhOTg4N19jb25mICAgPSBUREE5ODg3X1BSRVNFTlQsCisJCS5hdWRpb19jaGlwICAgICA9IFY0TDJfSURFTlRfV004Nzc1LAogCQkvKgogCQkgKiBHUElPMCAoV0lOVFYyMDAwKQogCQkgKgpAQCAtMTcyOSw3ICsxNzQ3LDcgQEAKIAkJICogQklUICBWQUxVRSAgIEZVTkNUSU9OIEdQe3h9X0lPCiAJCSAqIDAgICAgMSAgICAgICBJOj8KIAkJICogMSAgICAxICAgICAgIEk6PwotCQkgKiAyICAgIDEgICAgICAgTzpEVkItVCBERU1PRCBFTkFCTEUgTE9XL0FOQUxPRyBERU1PRCBFTkFCTEUgSElHSAorCQkgKiAyICAgIDEgICAgICAgTzpNUEVHIFBPUlQgMD1EVkItVCAxPURWQi1TCiAJCSAqIDMgICAgMSAgICAgICBJOj8KIAkJICogNCAgICAxICAgICAgIEk6PwogCQkgKiA1ICAgIDEgICAgICAgSTo/CkBAIC0xNzQ1LDIyICsxNzYzLDQxIEBACiAJCSAqIGQgICAgMCAgICAgICBJCiAJCSAqIGUgICAgMSAgICAgICBPCiAJCSAqIGYgICAgMSAgICAgICBPCisJCSAqCisJCSAqIFdNODc3NSBBREMKKwkJICoKKwkJICogMTogVFYgQXVkaW8gLyBGTSBNb25vCisJCSAqIDI6IExpbmUtSW4KKwkJICogMzogTGluZS1JbiBFeHBhbnNpb24KKwkJICogNDogRk0gU3RlcmVvCiAJCSAqLwogCQkuaW5wdXQgICAgICAgICAgPSB7ewogCQkJLnR5cGUgICA9IENYODhfVk1VWF9URUxFVklTSU9OLAogCQkJLnZtdXggICA9IDAsCiAJCQkuZ3BpbzAgID0gMHhjNGJmLAorCQkJLyogMTogVFYgQXVkaW8gLyBGTSBNb25vICovCisJCQkuYXVkaW9yb3V0ZSA9IDEsCiAJCX0sIHsKIAkJCS50eXBlICAgPSBDWDg4X1ZNVVhfQ09NUE9TSVRFMSwKIAkJCS52bXV4ICAgPSAxLAogCQkJLmdwaW8wICA9IDB4YzRiZiwKKwkJCS8qIDI6IExpbmUtSW4gKi8KKwkJCS5hdWRpb3JvdXRlID0gMiwKIAkJfSwgewogCQkJLnR5cGUgICA9IENYODhfVk1VWF9TVklERU8sCiAJCQkudm11eCAgID0gMiwKIAkJCS5ncGlvMCAgPSAweGM0YmYsCisJCQkvKiAyOiBMaW5lLUluICovCisJCQkuYXVkaW9yb3V0ZSA9IDIsCiAJCX0gfSwKLQkJLyogZml4bWU6IEFkZCByYWRpbyBzdXBwb3J0ICovCisJCS5yYWRpbyA9IHsKKwkJCS50eXBlICAgPSBDWDg4X1JBRElPLAorCQkJLmdwaW8wCT0gMHhjNGJmLAorCQkJLyogNDogRk0gU3RlcmVvICovCisJCQkuYXVkaW9yb3V0ZSA9IDgsCisJCX0sCiAJCS5tcGVnICAgICAgICAgICA9IENYODhfTVBFR19EVkIsCisJCS5udW1fZnJvbnRlbmRzCT0gMiwKIAl9LAogCVtDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlI0MDAwTElURV0gPSB7CiAJCS5uYW1lICAgICAgICAgICA9ICJIYXVwcGF1Z2UgV2luVFYtSFZSNDAwMChMaXRlKSBEVkItUy9TMiIsCkBAIC0yNjYyLDEwICsyNjk5LDEzIEBACiAKIAljYXNlIENYODhfQk9BUkRfSEFVUFBBVUdFX0hWUjMwMDA6CiAJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlI0MDAwOgotCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfSFZSNDAwMExJVEU6CiAJCS8qIEluaXQgR1BJTyAqLwogCQljeF93cml0ZShNT19HUDBfSU8sIGNvcmUtPmJvYXJkLmlucHV0WzBdLmdwaW8wKTsKIAkJdWRlbGF5KDEwMDApOworCQljeF9jbGVhcihNT19HUDBfSU8sIDB4MDAwMDAwODApOworCQl1ZGVsYXkoNTApOworCQljeF9zZXQoTU9fR1AwX0lPLCAweDAwMDAwMDgwKTsgLyogNzAyIG91dCBvZiByZXNldCAqLworCQl1ZGVsYXkoMTAwMCk7CiAJCWJyZWFrOwogCX0KIH0KQEAgLTMwMDQsMTAgKzMwNDQsMTQgQEAKIAogCW1lbWNweSgmY29yZS0+Ym9hcmQsICZjeDg4X2JvYXJkc1tjb3JlLT5ib2FyZG5yXSwgc2l6ZW9mKGNvcmUtPmJvYXJkKSk7CiAKLQlpbmZvX3ByaW50ayhjb3JlLCAic3Vic3lzdGVtOiAlMDR4OiUwNHgsIGJvYXJkOiAlcyBbY2FyZD0lZCwlc11cbiIsCisJaWYgKCFjb3JlLT5ib2FyZC5udW1fZnJvbnRlbmRzKQorCQljb3JlLT5ib2FyZC5udW1fZnJvbnRlbmRzPTE7CisKKwlpbmZvX3ByaW50ayhjb3JlLCAic3Vic3lzdGVtOiAlMDR4OiUwNHgsIGJvYXJkOiAlcyBbY2FyZD0lZCwlc10sIGZyb250ZW5kKHMpOiAlZFxuIiwKIAkJcGNpLT5zdWJzeXN0ZW1fdmVuZG9yLCBwY2ktPnN1YnN5c3RlbV9kZXZpY2UsIGNvcmUtPmJvYXJkLm5hbWUsCiAJCWNvcmUtPmJvYXJkbnIsIGNhcmRbY29yZS0+bnJdID09IGNvcmUtPmJvYXJkbnIgPwotCQkiaW5zbW9kIG9wdGlvbiIgOiAiYXV0b2RldGVjdGVkIik7CisJCSJpbnNtb2Qgb3B0aW9uIiA6ICJhdXRvZGV0ZWN0ZWQiLAorCQljb3JlLT5ib2FyZC5udW1fZnJvbnRlbmRzKTsKIAogCWlmICh0dW5lcltjb3JlLT5ucl0gIT0gVU5TRVQpCiAJCWNvcmUtPmJvYXJkLnR1bmVyX3R5cGUgPSB0dW5lcltjb3JlLT5ucl07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1jb3JlLmMKaW5kZXggZDY1NmZlYy4uNjA3MDViMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtY29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LWNvcmUuYwpAQCAtNTQ5LDcgKzU0OSw4IEBACiAJCW1vZF90aW1lcigmcS0+dGltZW91dCwgamlmZmllcytCVUZGRVJfVElNRU9VVCk7CiAJfQogCWlmIChiYyAhPSAxKQotCQlwcmludGsoIiVzOiAlZCBidWZmZXJzIGhhbmRsZWQgKHNob3VsZCBiZSAxKVxuIixfX2Z1bmNfXyxiYyk7CisJCWRwcmludGsoMiwgIiVzOiAlZCBidWZmZXJzIGhhbmRsZWQgKHNob3VsZCBiZSAxKVxuIiwKKwkJCV9fZnVuY19fLCBiYyk7CiB9CiAKIHZvaWQgY3g4OF9zaHV0ZG93bihzdHJ1Y3QgY3g4OF9jb3JlICpjb3JlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtZHZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1kdmIuYwppbmRleCAzNDRlZDI2Li42OTY4YWIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1kdmIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1kdmIuYwpAQCAtMTE2LDEzICsxMTYsMjMgQEAKIAlzdHJ1Y3QgY3g4ODAyX2RldiAqZGV2PSBmZS0+ZHZiLT5wcml2OwogCXN0cnVjdCBjeDg4MDJfZHJpdmVyICpkcnYgPSBOVUxMOwogCWludCByZXQgPSAwOworCWludCBmZV9pZDsKKworCWZlX2lkID0gdmlkZW9idWZfZHZiX2ZpbmRfZnJvbnRlbmQoJmRldi0+ZnJvbnRlbmRzLCBmZSk7CisJaWYgKCFmZV9pZCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzKCkgTm8gZnJvbnRlbmQgZm91bmRcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQogCiAJZHJ2ID0gY3g4ODAyX2dldF9kcml2ZXIoZGV2LCBDWDg4X01QRUdfRFZCKTsKIAlpZiAoZHJ2KSB7Ci0JCWlmIChhY3F1aXJlKQorCQlpZiAoYWNxdWlyZSl7CisJCQlkZXYtPmZyb250ZW5kcy5hY3RpdmVfZmVfaWQgPSBmZV9pZDsKIAkJCXJldCA9IGRydi0+cmVxdWVzdF9hY3F1aXJlKGRydik7Ci0JCWVsc2UKKwkJfSBlbHNlIHsKIAkJCXJldCA9IGRydi0+cmVxdWVzdF9yZWxlYXNlKGRydik7CisJCQlkZXYtPmZyb250ZW5kcy5hY3RpdmVfZmVfaWQgPSAwOworCQl9CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTM5Niw3ICs0MDYsNyBAQAogCQkJY3hfd3JpdGUoTU9fR1AwX0lPLCAweDAwMDA2MDYwKTsKIAkJCWJyZWFrOwogCQljYXNlIFNFQ19WT0xUQUdFX09GRjoKLQkJCXByaW50aygiTE5CIFZvbHRhZ2UgU0VDX1ZPTFRBR0Vfb2ZmXG4iKTsKKwkJICAgCXByaW50aygiTE5CIFZvbHRhZ2UgU0VDX1ZPTFRBR0Vfb2ZmXG4iKTsKIAkJCWJyZWFrOwogCX0KIApAQCAtNDgzLDYgKzQ5Myw3IEBACiBzdGF0aWMgaW50IGF0dGFjaF94YzMwMjgodTggYWRkciwgc3RydWN0IGN4ODgwMl9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZTsKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kICpmZTAgPSBOVUxMOwogCXN0cnVjdCB4YzIwMjhfY3RybCBjdGw7CiAJc3RydWN0IHhjMjAyOF9jb25maWcgY2ZnID0gewogCQkuaTJjX2FkYXAgID0gJmRldi0+Y29yZS0+aTJjX2FkYXAsCkBAIC00OTAsNyArNTAxLDEyIEBACiAJCS5jdHJsICAgICAgPSAmY3RsLAogCX07CiAKLQlpZiAoIWRldi0+ZHZiLmZyb250ZW5kKSB7CisJLyogR2V0IHRoZSBmaXJzdCBmcm9udGVuZCAqLworCWZlMCA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJmRldi0+ZnJvbnRlbmRzLCAxKTsKKwlpZiAoIWZlMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWZlMC0+ZHZiLmZyb250ZW5kKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiJXMvMjogZHZiIGZyb250ZW5kIG5vdCBhdHRhY2hlZC4gIgogCQkJCSJDYW4ndCBhdHRhY2ggeGMzMDI4XG4iLAogCQkgICAgICAgZGV2LT5jb3JlLT5uYW1lKTsKQEAgLTUwNCwxMCArNTIwLDEzIEBACiAJICovCiAJY3g4OF9zZXR1cF94YzMwMjgoZGV2LT5jb3JlLCAmY3RsKTsKIAotCWZlID0gZHZiX2F0dGFjaCh4YzIwMjhfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwgJmNmZyk7CisJZmUgPSBkdmJfYXR0YWNoKHhjMjAyOF9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLCAmY2ZnKTsKIAlpZiAoIWZlKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiJXMvMjogeGMzMDI4IGF0dGFjaCBmYWlsZWRcbiIsCiAJCSAgICAgICBkZXYtPmNvcmUtPm5hbWUpOworCQlkdmJfZnJvbnRlbmRfZGV0YWNoKGZlMC0+ZHZiLmZyb250ZW5kKTsKKwkJZHZiX3VucmVnaXN0ZXJfZnJvbnRlbmQoZmUwLT5kdmIuZnJvbnRlbmQpOworCQlmZTAtPmR2Yi5mcm9udGVuZCA9IE5VTEw7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNTMyLDggKzU1MSwxMCBAQAogCXN0cnVjdCBjeDg4X2NvcmUgKmNvcmUgPSBkZXYtPmNvcmU7CiAKIAkvKiBSZXNldCB0aGUgcGFydCAqLworCS8qIFB1dCB0aGUgY3gyNDExNiBpbnRvIHJlc2V0ICovCiAJY3hfd3JpdGUoTU9fU1JTVF9JTywgMCk7CiAJbXNsZWVwKDEwKTsKKwkvKiBUYWtlIHRoZSBjeDI0MTE2IG91dCBvZiByZXNldCAqLwogCWN4X3dyaXRlKE1PX1NSU1RfSU8sIDEpOwogCW1zbGVlcCgxMCk7CiAKQEAgLTU1NCwxNCArNTc1LDE0IEBACiAKIHN0YXRpYyBzdHJ1Y3Qgc3R2MDI5OV9jb25maWcgdGV2aWlfdHVuZXJfc2hhcnBfY29uZmlnID0gewogCS5kZW1vZF9hZGRyZXNzID0gMHg2OCwKLQkuaW5pdHRhYiA9IHNoYXJwX3owMTk0YV9faW5pdHRhYiwKKwkuaW5pdHRhYiA9IHNoYXJwX3owMTk0YV9pbml0dGFiLAogCS5tY2xrID0gODgwMDAwMDBVTCwKIAkuaW52ZXJ0ID0gMSwKIAkuc2tpcF9yZWluaXQgPSAwLAogCS5sb2NrX291dHB1dCA9IDEsCiAJLnZvbHQxM19vcDBfb3AxID0gU1RWMDI5OV9WT0xUMTNfT1AxLAogCS5taW5fZGVsYXlfbXMgPSAxMDAsCi0JLnNldF9zeW1ib2xfcmF0ZSA9IHNoYXJwX3owMTk0YV9fc2V0X3N5bWJvbF9yYXRlLAorCS5zZXRfc3ltYm9sX3JhdGUgPSBzaGFycF96MDE5NGFfc2V0X3N5bWJvbF9yYXRlLAogCS5zZXRfdHNfcGFyYW1zID0gY3gyNDExNl9zZXRfdHNfcGFyYW0sCiB9OwogCkBAIC01NzQsMTkgKzU5NSwyNSBAQAogc3RhdGljIGludCBkdmJfcmVnaXN0ZXIoc3RydWN0IGN4ODgwMl9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgY3g4OF9jb3JlICpjb3JlID0gZGV2LT5jb3JlOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlMCwgKmZlMSA9IE5VTEw7CisJaW50IG1mZV9zaGFyZWQgPSAwOyAvKiBidXMgbm90IHNoYXJlZCBieSBkZWZhdWx0ICovCiAKLQkvKiBpbml0IHN0cnVjdCB2aWRlb2J1Zl9kdmIgKi8KLQlkZXYtPmR2Yi5uYW1lID0gY29yZS0+bmFtZTsKLQlkZXYtPnRzX2dlbl9jbnRybCA9IDB4MGM7CisJLyogR2V0IHRoZSBmaXJzdCBmcm9udGVuZCAqLworCWZlMCA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJmRldi0+ZnJvbnRlbmRzLCAxKTsKKwlpZiAoIWZlMCkKKwkJcmV0dXJuIC1FSU5WQUw7CiAKLQkvKiBpbml0IGZyb250ZW5kICovCisJLyogbXVsdGktZnJvbnRlbmQgZ2F0ZSBjb250cm9sIGlzIHVuZGVmaW5lZCBvciBkZWZhdWx0cyB0byBmZTAgKi8KKwlkZXYtPmZyb250ZW5kcy5nYXRlID0gMDsKKworCS8qIGluaXQgZnJvbnRlbmQocykgKi8KIAlzd2l0Y2ggKGNvcmUtPmJvYXJkbnIpIHsKIAljYXNlIENYODhfQk9BUkRfSEFVUFBBVUdFX0RWQl9UMToKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjI3MDJfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyMjcwMl9hdHRhY2gsCiAJCQkJCSAgICAgICAmY29ubmV4YW50X3JlZmJvYXJkX2NvbmZpZywKIAkJCQkJICAgICAgICZjb3JlLT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlpZiAoIWR2Yl9hdHRhY2goZHZiX3BsbF9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJMHg2MSwgJmNvcmUtPmkyY19hZGFwLAogCQkJCQlEVkJfUExMX1RIT01TT05fRFRUNzU5WCkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CkBAIC01OTYsMTEgKzYyMywxMSBAQAogCWNhc2UgQ1g4OF9CT0FSRF9DT05FWEFOVF9EVkJfVDE6CiAJY2FzZSBDWDg4X0JPQVJEX0tXT1JMRF9EVkJfVF9DWDIyNzAyOgogCWNhc2UgQ1g4OF9CT0FSRF9XSU5GQVNUX0RUVjEwMDA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChjeDIyNzAyX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjI3MDJfYXR0YWNoLAogCQkJCQkgICAgICAgJmNvbm5leGFudF9yZWZib2FyZF9jb25maWcsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCTB4NjAsICZjb3JlLT5pMmNfYWRhcCwKIAkJCQkJRFZCX1BMTF9USE9NU09OX0RUVDc1NzkpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwpAQCAtNjEwLDMzICs2MzcsNjcgQEAKIAljYXNlIENYODhfQk9BUkRfSEFVUFBBVUdFX0hWUjExMDA6CiAJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlIxMTAwTFA6CiAJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlIxMzAwOgotCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfSFZSMzAwMDoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjI3MDJfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyMjcwMl9hdHRhY2gsCiAJCQkJCSAgICAgICAmaGF1cHBhdWdlX2h2cl9jb25maWcsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQkJaWYgKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCSAgICZjb3JlLT5pMmNfYWRhcCwgMHg2MSwKIAkJCQkgICBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRV9NSzMpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwogCQl9CiAJCWJyZWFrOworCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfSFZSMzAwMDoKKwkJLyogRFZCLVMgaW5pdCAqLworCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDEyM19hdHRhY2gsCisJCQkgICAgICAgJmhhdXBwYXVnZV9ub3Zhc19jb25maWcsCisJCQkgICAgICAgJmRldi0+Y29yZS0+aTJjX2FkYXApOworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWlmICghZHZiX2F0dGFjaChpc2w2NDIxX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCisJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCwgMHgwOCwgSVNMNjQyMV9EQ0wsIDB4MDApKSB7CisJCQkJZHByaW50ayggMSwgIiVzKCk6IEhWUjMwMDAgLSBEVkItUyBMTkIgSW5pdDogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkcHJpbnRrKCAxLCAiJXMoKTogSFZSMzAwMCAtIERWQi1TIEluaXQ6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQl9CisJCS8qIERWQi1UIGluaXQgKi8KKwkJZmUxID0gdmlkZW9idWZfZHZiX2dldF9mcm9udGVuZCgmZGV2LT5mcm9udGVuZHMsIDIpOworCQlpZiAoZmUxKSB7CisJCQlkZXYtPmZyb250ZW5kcy5nYXRlID0gMjsKKwkJCW1mZV9zaGFyZWQgPSAxOworCQkJZmUxLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjI3MDJfYXR0YWNoLAorCQkJCSZoYXVwcGF1Z2VfaHZyX2NvbmZpZywKKwkJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCk7CisJCQlpZiAoZmUxLT5kdmIuZnJvbnRlbmQpIHsKKwkJCQlmZTEtPmR2Yi5mcm9udGVuZC0+aWQgPSAxOworCQkJCWlmKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMS0+ZHZiLmZyb250ZW5kLAorCQkJCQkJJmRldi0+Y29yZS0+aTJjX2FkYXAsIDB4NjEsCisJCQkJCQlUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRV9NSzMpKSB7CisJCQkJCWRwcmludGsoIDEsICIlcygpOiBIVlIzMDAwIC0gRFZCLVQgbWlzYyBJbml0OiBmYWlsZWRcbiIsIF9fZnVuY19fKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWRwcmludGsoIDEsICIlcygpOiBIVlIzMDAwIC0gRFZCLVQgSW5pdDogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkcHJpbnRrKCAxLCAiJXMoKTogSFZSMzAwMCAtIERWQi1UIEluaXQ6IGNhbid0IGZpbmQgZnJvbnRlbmQgMi5cbiIsIF9fZnVuY19fKTsKKwkJfQorCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfRFZJQ09fRlVTSU9OSERUVl9EVkJfVF9QTFVTOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLAogCQkJCQkgICAgICAgJmR2aWNvX2Z1c2lvbmhkdHYsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCTB4NjAsIE5VTEwsIERWQl9QTExfVEhPTVNPTl9EVFQ3NTc5KSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJCWJyZWFrOwogCQl9CiAJCS8qIFpMMTAzNTMgcmVwbGFjZXMgTVQzNTIgb24gbGF0ZXIgY2FyZHMgKi8KLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goemwxMDM1M19hdHRhY2gsCiAJCQkJCSAgICAgICAmZHZpY29fZnVzaW9uaGR0dl9wbHVzX3YxXzEsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCTB4NjAsIE5VTEwsIERWQl9QTExfVEhPTVNPTl9EVFQ3NTc5KSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJfQpAQCAtNjQ0LDMxICs3MDUsMzEgQEAKIAljYXNlIENYODhfQk9BUkRfRFZJQ09fRlVTSU9OSERUVl9EVkJfVF9EVUFMOgogCQkvKiBUaGUgdGluIGJveCBzYXlzIERFRTE2MDEsIGJ1dCBpdCBzZWVtcyB0byBiZSBEVFQ3NTc5CiAJCSAqIGNvbXBhdGlibGUsIHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgTVQzNTIgQUdDIGdhaW4uICovCi0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsCiAJCQkJCSAgICAgICAmZHZpY29fZnVzaW9uaGR0dl9kdWFsLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlpZiAoIWR2Yl9hdHRhY2goZHZiX3BsbF9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCQkweDYxLCBOVUxMLCBEVkJfUExMX1RIT01TT05fRFRUNzU3OSkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CiAJCQlicmVhazsKIAkJfQogCQkvKiBaTDEwMzUzIHJlcGxhY2VzIE1UMzUyIG9uIGxhdGVyIGNhcmRzICovCi0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh6bDEwMzUzX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAogCQkJCQkgICAgICAgJmR2aWNvX2Z1c2lvbmhkdHZfcGx1c192MV8xLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlpZiAoIWR2Yl9hdHRhY2goZHZiX3BsbF9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCQkweDYxLCBOVUxMLCBEVkJfUExMX1RIT01TT05fRFRUNzU3OSkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDg4X0JPQVJEX0RWSUNPX0ZVU0lPTkhEVFZfRFZCX1QxOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLAogCQkJCQkgICAgICAgJmR2aWNvX2Z1c2lvbmhkdHYsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCTB4NjEsIE5VTEwsIERWQl9QTExfTEdfWjIwMSkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CiAJCX0KQEAgLTY3NiwxMSArNzM3LDExIEBACiAJY2FzZSBDWDg4X0JPQVJEX0tXT1JMRF9EVkJfVDoKIAljYXNlIENYODhfQk9BUkRfRE5UVl9MSVZFX0RWQl9UOgogCWNhc2UgQ1g4OF9CT0FSRF9BRFNURUNIX0RWQl9UX1BDSToKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKIAkJCQkJICAgICAgICZkbnR2X2xpdmVfZHZidF9jb25maWcsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChkdmJfcGxsX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCTB4NjEsIE5VTEwsIERWQl9QTExfVU5LTk9XTl8xKSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJfQpAQCAtNjg4LDEwICs3NDksMTAgQEAKIAljYXNlIENYODhfQk9BUkRfRE5UVl9MSVZFX0RWQl9UX1BSTzoKICNpZiBkZWZpbmVkKENPTkZJR19WSURFT19DWDg4X1ZQMzA1NCkgfHwgKGRlZmluZWQoQ09ORklHX1ZJREVPX0NYODhfVlAzMDU0X01PRFVMRSkgJiYgZGVmaW5lZChNT0RVTEUpKQogCQkvKiBNVDM1MiBpcyBvbiBhIHNlY29uZGFyeSBJMkMgYnVzIG1hZGUgZnJvbSBzb21lIEdQSU8gbGluZXMgKi8KLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwgJmRudHZfbGl2ZV9kdmJ0X3Byb19jb25maWcsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsICZkbnR2X2xpdmVfZHZidF9wcm9fY29uZmlnLAogCQkJCQkgICAgICAgJmRldi0+dnAzMDU0LT5hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCAweDYxLAogCQkJCQlUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRV9NSzMpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwpAQCAtNzAyLDIyICs3NjMsMjIgQEAKICNlbmRpZgogCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfRFZJQ09fRlVTSU9OSERUVl9EVkJfVF9IWUJSSUQ6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh6bDEwMzUzX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAogCQkJCQkgICAgICAgJmR2aWNvX2Z1c2lvbmhkdHZfaHlicmlkLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkgICAmY29yZS0+aTJjX2FkYXAsIDB4NjEsCiAJCQkJICAgVFVORVJfVEhPTVNPTl9GRTY2MDApKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQ1g4OF9CT0FSRF9EVklDT19GVVNJT05IRFRWX0RWQl9UX1BSTzoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goemwxMDM1M19hdHRhY2gsCiAJCQkJCSAgICAgICAmZHZpY29fZnVzaW9uaGR0dl94YzMwMjgsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgPT0gTlVMTCkKLQkJCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCA9PSBOVUxMKQorCQkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKIAkJCQkJCSZkdmljb19mdXNpb25oZHR2X210MzUyX3hjMzAyOCwKIAkJCQkJCSZjb3JlLT5pMmNfYWRhcCk7CiAJCS8qCkBAIC03MjUsMTYgKzc4NiwxNiBAQAogCQkgKiBXZSBtdXN0IG5vdCBwZXJtaXQgZ2F0ZV9jdHJsIHRvIGJlIHBlcmZvcm1lZCwgb3IKIAkJICogdGhlIHhjMzAyOCBjYW5ub3QgY29tbXVuaWNhdGUgb24gdGhlIGJ1cy4KIAkJICovCi0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCA9IE5VTEw7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCA9IE5VTEw7CiAJCWlmIChhdHRhY2hfeGMzMDI4KDB4NjEsIGRldikgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgQ1g4OF9CT0FSRF9QQ0hEVFZfSEQzMDAwOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gob3I1MTEzMl9hdHRhY2gsICZwY2hkdHZfaGQzMDAwLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gob3I1MTEzMl9hdHRhY2gsICZwY2hkdHZfaGQzMDAwLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCAweDYxLAogCQkJCQlUVU5FUl9USE9NU09OX0RUVDc2MVgpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwpAQCAtNzUxLDExICs4MTIsMTEgQEAKIAogCQkvKiBTZWxlY3QgUkYgY29ubmVjdG9yIGNhbGxiYWNrICovCiAJCWZ1c2lvbmhkdHZfM19nb2xkLnBsbF9yZl9zZXQgPSBsZ2R0MzMweF9wbGxfcmZfc2V0OwotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAogCQkJCQkgICAgICAgJmZ1c2lvbmhkdHZfM19nb2xkLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCAweDYxLAogCQkJCQlUVU5FUl9NSUNST1RVTkVfNDA0MkZJNSkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CkBAIC03NjksMTEgKzgzMCwxMSBAQAogCQltZGVsYXkoMTAwKTsKIAkJY3hfc2V0KE1PX0dQMF9JTywgOSk7CiAJCW1kZWxheSgyMDApOwotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAogCQkJCQkgICAgICAgJmZ1c2lvbmhkdHZfM19nb2xkLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCAweDYxLAogCQkJCQlUVU5FUl9USE9NU09OX0RUVDc2MVgpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwpAQCAtNzg3LDE1ICs4NDgsMTUgQEAKIAkJbWRlbGF5KDEwMCk7CiAJCWN4X3NldChNT19HUDBfSU8sIDEpOwogCQltZGVsYXkoMjAwKTsKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGxnZHQzMzB4X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGxnZHQzMzB4X2F0dGFjaCwKIAkJCQkJICAgICAgICZmdXNpb25oZHR2XzVfZ29sZCwKIAkJCQkJICAgICAgICZjb3JlLT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlpZiAoIWR2Yl9hdHRhY2goc2ltcGxlX3R1bmVyX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlpZiAoIWR2Yl9hdHRhY2goc2ltcGxlX3R1bmVyX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCSZjb3JlLT5pMmNfYWRhcCwgMHg2MSwKIAkJCQkJVFVORVJfTEdfVERWU19IMDZYRikpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7Ci0JCQlpZiAoIWR2Yl9hdHRhY2godGRhOTg4N19hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQkJaWYgKCFkdmJfYXR0YWNoKHRkYTk4ODdfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkgICAmY29yZS0+aTJjX2FkYXAsIDB4NDMpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwogCQl9CkBAIC04MDgsMjUgKzg2OSwyNSBAQAogCQltZGVsYXkoMTAwKTsKIAkJY3hfc2V0KE1PX0dQMF9JTywgMSk7CiAJCW1kZWxheSgyMDApOwotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobGdkdDMzMHhfYXR0YWNoLAogCQkJCQkgICAgICAgJnBjaGR0dl9oZDU1MDAsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQkJaWYgKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCQkmY29yZS0+aTJjX2FkYXAsIDB4NjEsCiAJCQkJCVRVTkVSX0xHX1REVlNfSDA2WEYpKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwotCQkJaWYgKCFkdmJfYXR0YWNoKHRkYTk4ODdfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJCWlmICghZHZiX2F0dGFjaCh0ZGE5ODg3X2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJICAgJmNvcmUtPmkyY19hZGFwLCAweDQzKSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJfQogCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfQVRJX0hEVFZXT05ERVI6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChueHQyMDB4X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG54dDIwMHhfYXR0YWNoLAogCQkJCQkgICAgICAgJmF0aV9oZHR2d29uZGVyLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCAweDYxLAogCQkJCQlUVU5FUl9QSElMSVBTX1RVVjEyMzZEKSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKQEAgLTgzNCw0OSArODk1LDQ5IEBACiAJCWJyZWFrOwogCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfTk9WQVNQTFVTX1MxOgogCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfTk9WQVNFMl9TMToKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjQxMjNfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDEyM19hdHRhY2gsCiAJCQkJCSAgICAgICAmaGF1cHBhdWdlX25vdmFzX2NvbmZpZywKIAkJCQkJICAgICAgICZjb3JlLT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJaWYgKCFkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlpZiAoIWR2Yl9hdHRhY2goaXNsNjQyMV9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCQkmY29yZS0+aTJjX2FkYXAsIDB4MDgsIElTTDY0MjFfRENMLCAweDAwKSkKIAkJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJfQogCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfS1dPUkxEX0RWQlNfMTAwOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDEyM19hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChjeDI0MTIzX2F0dGFjaCwKIAkJCQkJICAgICAgICZrd29ybGRfZHZic18xMDBfY29uZmlnLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSBrd29ybGRfZHZic18xMDBfc2V0X3ZvbHRhZ2U7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgeworCQkJY29yZS0+cHJldl9zZXRfdm9sdGFnZSA9IGZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2U7CisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlID0ga3dvcmxkX2R2YnNfMTAwX3NldF92b2x0YWdlOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQ1g4OF9CT0FSRF9HRU5JQVRFQ0hfRFZCUzoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjQxMjNfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDEyM19hdHRhY2gsCiAJCQkJCSAgICAgICAmZ2VuaWF0ZWNoX2R2YnNfY29uZmlnLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSBnZW5pYXRlY2hfZHZic19zZXRfdm9sdGFnZTsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSBnZW5pYXRlY2hfZHZic19zZXRfdm9sdGFnZTsKIAkJfQogCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfUElOTkFDTEVfUENUVl9IRF84MDBpOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDA5X2F0dGFjaCwKIAkJCQkJICAgICAgICZwaW5uYWNsZV9wY3R2X2hkXzgwMGlfY29uZmlnLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWlmICghZHZiX2F0dGFjaCh4YzUwMDBfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCWlmICghZHZiX2F0dGFjaCh4YzUwMDBfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLAogCQkJCQkmcGlubmFjbGVfcGN0dl9oZF84MDBpX3R1bmVyX2NvbmZpZykpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDg4X0JPQVJEX0RWSUNPX0ZVU0lPTkhEVFZfNV9QQ0lfTkFOTzoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goczVoMTQwOV9hdHRhY2gsCiAJCQkJCQkmZHZpY29faGR0djVfcGNpX25hbm9fY29uZmlnLAogCQkJCQkJJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKIAkJCXN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlOwogCQkJc3RydWN0IHhjMjAyOF9jb25maWcgY2ZnID0gewogCQkJCS5pMmNfYWRhcCAgPSAmY29yZS0+aTJjX2FkYXAsCkBAIC04ODksMTcgKzk1MCwxNyBAQAogCQkJfTsKIAogCQkJZmUgPSBkdmJfYXR0YWNoKHhjMjAyOF9hdHRhY2gsCi0JCQkJCWRldi0+ZHZiLmZyb250ZW5kLCAmY2ZnKTsKKwkJCQkJZmUwLT5kdmIuZnJvbnRlbmQsICZjZmcpOwogCQkJaWYgKGZlICE9IE5VTEwgJiYgZmUtPm9wcy50dW5lcl9vcHMuc2V0X2NvbmZpZyAhPSBOVUxMKQogCQkJCWZlLT5vcHMudHVuZXJfb3BzLnNldF9jb25maWcoZmUsICZjdGwpOwogCQl9CiAJCWJyZWFrOwogCSBjYXNlIENYODhfQk9BUkRfUElOTkFDTEVfSFlCUklEX1BDVFY6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh6bDEwMzUzX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAogCQkJCQkgICAgICAgJmN4ODhfcGlubmFjbGVfaHlicmlkX3BjdHYsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCA9IE5VTEw7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgeworCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsID0gTlVMTDsKIAkJCWlmIChhdHRhY2hfeGMzMDI4KDB4NjEsIGRldikgPCAwKQogCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwogCQl9CkBAIC05MDcsODUgKzk2OCwxMTggQEAKIAkgY2FzZSBDWDg4X0JPQVJEX0dFTklBVEVDSF9YODAwMF9NVDoKIAkJZGV2LT50c19nZW5fY250cmwgPSAweDAwOwogCi0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh6bDEwMzUzX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHpsMTAzNTNfYXR0YWNoLAogCQkJCQkgICAgICAgJmN4ODhfZ2VuaWF0ZWNoX3g4MDAwX210LAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKIAkJaWYgKGF0dGFjaF94YzMwMjgoMHg2MSwgZGV2KSA8IDApCiAJCQlnb3RvIGZyb250ZW5kX2RldGFjaDsKIAkJYnJlYWs7CiAJIGNhc2UgQ1g4OF9CT0FSRF9LV09STERfQVRTQ18xMjA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDA5X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MDlfYXR0YWNoLAogCQkJCQkgICAgICAgJmt3b3JsZF9hdHNjXzEyMF9jb25maWcsCiAJCQkJCSAgICAgICAmY29yZS0+aTJjX2FkYXApOwogCQlpZiAoYXR0YWNoX3hjMzAyOCgweDYxLCBkZXYpIDwgMCkKIAkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwogCQlicmVhazsKIAljYXNlIENYODhfQk9BUkRfRFZJQ09fRlVTSU9OSERUVl83X0dPTEQ6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzNWgxNDExX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHM1aDE0MTFfYXR0YWNoLAogCQkJCQkgICAgICAgJmR2aWNvX2Z1c2lvbmhkdHY3X2NvbmZpZywKIAkJCQkJICAgICAgICZjb3JlLT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlpZiAoIWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQlpZiAoIWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCSZjb3JlLT5pMmNfYWRhcCwKIAkJCQkJJmR2aWNvX2Z1c2lvbmhkdHY3X3R1bmVyX2NvbmZpZykpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlI0MDAwOgotCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfSFZSNDAwMExJVEU6Ci0JCS8qIFN1cHBvcnQgZm9yIERWQi1TIG9ubHksIG5vdCBEVkItVCBzdXBwb3J0ICovCi0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChjeDI0MTE2X2F0dGFjaCwKKwkJLyogRFZCLVMvUzIgSW5pdCAqLworCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDExNl9hdHRhY2gsCiAJCQkmaGF1cHBhdWdlX2h2cjQwMDBfY29uZmlnLAogCQkJJmRldi0+Y29yZS0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJCWR2Yl9hdHRhY2goaXNsNjQyMV9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWlmKCFkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKKwkJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCwgMHgwOCwgSVNMNjQyMV9EQ0wsIDB4MDApKSB7CisJCQkJZHByaW50ayggMSwgIiVzKCk6IEhWUjQwMDAgLSBEVkItUyBMTkIgSW5pdDogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkcHJpbnRrKCAxLCAiJXMoKTogSFZSNDAwMCAtIERWQi1TIEluaXQ6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQl9CisJCS8qIERWQi1UIEluaXQgKi8KKwkJZmUxID0gdmlkZW9idWZfZHZiX2dldF9mcm9udGVuZCgmZGV2LT5mcm9udGVuZHMsIDIpOworCQlpZiAoZmUxKSB7CisJCQlkZXYtPmZyb250ZW5kcy5nYXRlID0gMjsKKwkJCW1mZV9zaGFyZWQgPSAxOworCQkJZmUxLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjI3MDJfYXR0YWNoLAorCQkJCSZoYXVwcGF1Z2VfaHZyX2NvbmZpZywKKwkJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCk7CisJCQlpZiAoZmUxLT5kdmIuZnJvbnRlbmQpIHsKKwkJCQlmZTEtPmR2Yi5mcm9udGVuZC0+aWQgPSAxOworCQkJCWlmKCFkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMS0+ZHZiLmZyb250ZW5kLAorCQkJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCwgMHg2MSwKKwkJCQkJVFVORVJfUEhJTElQU19GTUQxMjE2TUVfTUszKSkgeworCQkJCQlkcHJpbnRrKCAxLCAiJXMoKTogSFZSNDAwMCAtIERWQi1UIG1pc2MgSW5pdDogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlkcHJpbnRrKCAxLCAiJXMoKTogSFZSNDAwMCAtIERWQi1UIEluaXQ6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQkJfQorCQl9IGVsc2UgeworCQkJZHByaW50ayggMSwgIiVzKCk6IEhWUjQwMDAgLSBEVkItVCBJbml0OiBjYW4ndCBmaW5kIGZyb250ZW5kIDIuXG4iLCBfX2Z1bmNfXyk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlI0MDAwTElURToKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjQxMTZfYXR0YWNoLAorCQkJJmhhdXBwYXVnZV9odnI0MDAwX2NvbmZpZywKKwkJCSZkZXYtPmNvcmUtPmkyY19hZGFwKTsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkmZGV2LT5jb3JlLT5pMmNfYWRhcCwKIAkJCQkweDA4LCBJU0w2NDIxX0RDTCwgMHgwMCk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDg4X0JPQVJEX1RFVklJX1M0MjA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChzdHYwMjk5X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHN0djAyOTlfYXR0YWNoLAogCQkJCQkJJnRldmlpX3R1bmVyX3NoYXJwX2NvbmZpZywKIAkJCQkJCSZjb3JlLT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQlpZiAoIWR2Yl9hdHRhY2goZHZiX3BsbF9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLCAweDYwLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQgIT0gTlVMTCkgeworCQkJaWYgKCFkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgMHg2MCwKIAkJCQkJJmNvcmUtPmkyY19hZGFwLCBEVkJfUExMX09QRVJBMSkpCiAJCQkJZ290byBmcm9udGVuZF9kZXRhY2g7Ci0JCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSB0ZXZpaV9kdmJzX3NldF92b2x0YWdlOworCQkJY29yZS0+cHJldl9zZXRfdm9sdGFnZSA9IGZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2U7CisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlID0gdGV2aWlfZHZic19zZXRfdm9sdGFnZTsKIAogCQl9IGVsc2UgewotCQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHN0djAyODhfYXR0YWNoLAorCQkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHN0djAyODhfYXR0YWNoLAogCQkJCQkJCSAgICAmdGV2aWlfdHVuZXJfZWFyZGFfY29uZmlnLAogCQkJCQkJCSAgICAmY29yZS0+aTJjX2FkYXApOwotCQkJCWlmIChkZXYtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7Ci0JCQkJCWlmICghZHZiX2F0dGFjaChzdGI2MDAwX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsIDB4NjEsCisJCQkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKKwkJCQkJaWYgKCFkdmJfYXR0YWNoKHN0YjYwMDBfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgMHg2MSwKIAkJCQkJCSZjb3JlLT5pMmNfYWRhcCkpCiAJCQkJCWdvdG8gZnJvbnRlbmRfZGV0YWNoOwotCQkJCWNvcmUtPnByZXZfc2V0X3ZvbHRhZ2UgPSBkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlOwotCQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSB0ZXZpaV9kdmJzX3NldF92b2x0YWdlOworCQkJCWNvcmUtPnByZXZfc2V0X3ZvbHRhZ2UgPSBmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlOworCQkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSB0ZXZpaV9kdmJzX3NldF92b2x0YWdlOwogCiAJCQl9CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBDWDg4X0JPQVJEX1RFVklJX1M0NjA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChjeDI0MTE2X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjQxMTZfYXR0YWNoLAogCQkJCQkgICAgICAgJnRldmlpX3M0NjBfY29uZmlnLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWNvcmUtPnByZXZfc2V0X3ZvbHRhZ2UgPSBkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlOwotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZSA9IHRldmlpX2R2YnNfc2V0X3ZvbHRhZ2U7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSB0ZXZpaV9kdmJzX3NldF92b2x0YWdlOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQ1g4OF9CT0FSRF9PTUlDT01fU1M0X1BDSToKIAljYXNlIENYODhfQk9BUkRfVEJTXzg5MjA6CiAJY2FzZSBDWDg4X0JPQVJEX1BST0ZfNzMwMDoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKGN4MjQxMTZfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2goY3gyNDExNl9hdHRhY2gsCiAJCQkJCSAgICAgICAmaGF1cHBhdWdlX2h2cjQwMDBfY29uZmlnLAogCQkJCQkgICAgICAgJmNvcmUtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kICE9IE5VTEwpIHsKLQkJCWNvcmUtPnByZXZfc2V0X3ZvbHRhZ2UgPSBkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNldF92b2x0YWdlOwotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZSA9IHRldmlpX2R2YnNfc2V0X3ZvbHRhZ2U7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCAhPSBOVUxMKSB7CisJCQljb3JlLT5wcmV2X3NldF92b2x0YWdlID0gZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5zZXRfdm9sdGFnZTsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2V0X3ZvbHRhZ2UgPSB0ZXZpaV9kdmJzX3NldF92b2x0YWdlOwogCQl9CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC05OTMsMjkgKzEwODcsMzIgQEAKIAkJICAgICAgIGNvcmUtPm5hbWUpOwogCQlicmVhazsKIAl9Ci0JaWYgKE5VTEwgPT0gZGV2LT5kdmIuZnJvbnRlbmQpIHsKKworICAgICAgICBpZiAoIChOVUxMID09IGZlMC0+ZHZiLmZyb250ZW5kKSB8fCAoZmUxICYmIE5VTEwgPT0gZmUxLT5kdmIuZnJvbnRlbmQpICkgewogCQlwcmludGsoS0VSTl9FUlIKIAkJICAgICAgICIlcy8yOiBmcm9udGVuZCBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIsCiAJCSAgICAgICBjb3JlLT5uYW1lKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCS8qIGRlZmluZSBnZW5lcmFsLXB1cnBvc2UgY2FsbGJhY2sgcG9pbnRlciAqLwotCWRldi0+ZHZiLmZyb250ZW5kLT5jYWxsYmFjayA9IGN4ODhfdHVuZXJfY2FsbGJhY2s7CisJZmUwLT5kdmIuZnJvbnRlbmQtPmNhbGxiYWNrID0gY3g4OF90dW5lcl9jYWxsYmFjazsKIAogCS8qIEVuc3VyZSBhbGwgZnJvbnRlbmRzIG5lZ290aWF0ZSBidXMgYWNjZXNzICovCi0JZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy50c19idXNfY3RybCA9IGN4ODhfZHZiX2J1c19jdHJsOworCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHNfYnVzX2N0cmwgPSBjeDg4X2R2Yl9idXNfY3RybDsKKwlpZiAoZmUxKQorCQlmZTEtPmR2Yi5mcm9udGVuZC0+b3BzLnRzX2J1c19jdHJsID0gY3g4OF9kdmJfYnVzX2N0cmw7CiAKIAkvKiBQdXQgdGhlIGFuYWxvZyBkZWNvZGVyIGluIHN0YW5kYnkgdG8ga2VlcCBpdCBxdWlldCAqLwogCWN4ODhfY2FsbF9pMmNfY2xpZW50cyhjb3JlLCBUVU5FUl9TRVRfU1RBTkRCWSwgTlVMTCk7CiAKIAkvKiByZWdpc3RlciBldmVyeXRoaW5nICovCi0JcmV0dXJuIHZpZGVvYnVmX2R2Yl9yZWdpc3RlcigmZGV2LT5kdmIsIFRISVNfTU9EVUxFLCBkZXYsCi0JCQkJICAgICAmZGV2LT5wY2ktPmRldiwgYWRhcHRlcl9ucik7CisJcmV0dXJuIHZpZGVvYnVmX2R2Yl9yZWdpc3Rlcl9idXMoJmRldi0+ZnJvbnRlbmRzLCBUSElTX01PRFVMRSwgZGV2LAorCQkmZGV2LT5wY2ktPmRldiwgYWRhcHRlcl9uciwgbWZlX3NoYXJlZCk7CiAKIGZyb250ZW5kX2RldGFjaDoKLQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJZHZiX2Zyb250ZW5kX2RldGFjaChkZXYtPmR2Yi5mcm9udGVuZCk7Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gTlVMTDsKKwlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJZHZiX2Zyb250ZW5kX2RldGFjaChmZTAtPmR2Yi5mcm9udGVuZCk7CisJCWZlMC0+ZHZiLmZyb250ZW5kID0gTlVMTDsKIAl9CiAJcmV0dXJuIC1FSU5WQUw7CiB9CkBAIC0xMDM5LDYgKzExMzYsMzggQEAKIAkJY3hfY2xlYXIoTU9fR1AwX0lPLCAweDAwMDAwMDA0KTsKIAkJdWRlbGF5KDEwMDApOwogCQlicmVhazsKKworCWNhc2UgQ1g4OF9CT0FSRF9IQVVQUEFVR0VfSFZSMzAwMDoKKwljYXNlIENYODhfQk9BUkRfSEFVUFBBVUdFX0hWUjQwMDA6CisJCWlmKGNvcmUtPmR2YmRldi0+ZnJvbnRlbmRzLmFjdGl2ZV9mZV9pZCA9PSAxKSB7CisJCQkvKiBEVkItUy9TMiBFbmFibGVkICovCisKKwkJCS8qIFRvZ2dsZSByZXNldCBvbiBjeDIyNzAyIGxlYXZpbmcgaTJjIGFjdGl2ZSAqLworCQkJY3hfd3JpdGUoTU9fR1AwX0lPLCAoY29yZS0+Ym9hcmQuaW5wdXRbMF0uZ3BpbzAgJiAweDAwMDBmZjAwKSB8IDB4MDAwMDAwODApOworCQkJdWRlbGF5KDEwMDApOworCQkJY3hfY2xlYXIoTU9fR1AwX0lPLCAweDAwMDAwMDgwKTsKKwkJCXVkZWxheSg1MCk7CisJCQljeF9zZXQoTU9fR1AwX0lPLCAweDAwMDAwMDgwKTsgLyogY3gyMjcwMiBvdXQgb2YgcmVzZXQgKi8KKwkJCWN4X3NldChNT19HUDBfSU8sIDB4MDAwMDAwMDQpOyAvKiB0cmktc3RhdGUgdGhlIGN4MjI3MDIgcGlucyAqLworCQkJdWRlbGF5KDEwMDApOworCisJCQljeF93cml0ZShNT19TUlNUX0lPLCAxKTsgLyogVGFrZSB0aGUgY3gyNDExNi9jeDI0MTIzIG91dCBvZiByZXNldCAqLworCQkJY29yZS0+ZHZiZGV2LT50c19nZW5fY250cmwgPSAweDAyOyAvKiBQYXJhbGxlbCBJTyAqLworCQl9IGVsc2UKKwkJaWYgKGNvcmUtPmR2YmRldi0+ZnJvbnRlbmRzLmFjdGl2ZV9mZV9pZCA9PSAyKSB7CisJCQkvKiBEVkItVCBFbmFibGVkICovCisKKwkJCS8qIFB1dCB0aGUgY3gyNDExNi9jeDI0MTIzIGludG8gcmVzZXQgKi8KKwkJCWN4X3dyaXRlKE1PX1NSU1RfSU8sIDApOworCisJCQkvKiBjeDIyNzAyIG91dCBvZiByZXNldCBhbmQgZW5hYmxlIGl0ICovCisJCQljeF9zZXQoTU9fR1AwX0lPLCAgIDB4MDAwMDAwODApOworCQkJY3hfY2xlYXIoTU9fR1AwX0lPLCAweDAwMDAwMDA0KTsKKwkJCWNvcmUtPmR2YmRldi0+dHNfZ2VuX2NudHJsID0gMHgwYzsgLyogU2VyaWFsIElPICovCisJCQl1ZGVsYXkoMTAwMCk7CisJCX0KKwkJYnJlYWs7CisKIAlkZWZhdWx0OgogCQllcnIgPSAtRU5PREVWOwogCX0KQEAgLTEwNTYsNiArMTE4NSw5IEBACiAJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlIxMzAwOgogCQkvKiBEbyBOb3RoaW5nLCBsZWF2ZSB0aGUgY3gyMjcwMiBvbiB0aGUgYnVzLiAqLwogCQlicmVhazsKKwljYXNlIENYODhfQk9BUkRfSEFVUFBBVUdFX0hWUjMwMDA6CisJY2FzZSBDWDg4X0JPQVJEX0hBVVBQQVVHRV9IVlI0MDAwOgorCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnIgPSAtRU5PREVWOwogCX0KQEAgLTEwNjYsNyArMTE5OCw4IEBACiB7CiAJc3RydWN0IGN4ODhfY29yZSAqY29yZSA9IGRydi0+Y29yZTsKIAlzdHJ1Y3QgY3g4ODAyX2RldiAqZGV2ID0gZHJ2LT5jb3JlLT5kdmJkZXY7Ci0JaW50IGVycjsKKwlpbnQgZXJyLCBpOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlOwogCiAJZHByaW50ayggMSwgIiVzXG4iLCBfX2Z1bmNfXyk7CiAJZHByaW50ayggMSwgIiAtPmJlaW5nIHByb2JlZCBieSBDYXJkPSVkIE5hbWU9JXMsIFBDSSAlMDJ4OiUwMnhcbiIsCkBAIC0xMDg2LDE4ICsxMjE5LDI4IEBACiAKIAkvKiBkdmIgc3R1ZmYgKi8KIAlwcmludGsoS0VSTl9JTkZPICIlcy8yOiBjeDIzODh4IGJhc2VkIERWQi9BVFNDIGNhcmRcbiIsIGNvcmUtPm5hbWUpOwotCXZpZGVvYnVmX3F1ZXVlX3NnX2luaXQoJmRldi0+ZHZiLmR2YnEsICZkdmJfcW9wcywKKwlkZXYtPnRzX2dlbl9jbnRybCA9IDB4MGM7CisKKwlmb3IgKGkgPSAxOyBpIDw9IGNvcmUtPmJvYXJkLm51bV9mcm9udGVuZHM7IGkrKykgeworCQlmZSA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJmNvcmUtPmR2YmRldi0+ZnJvbnRlbmRzLCBpKTsKKwkJaWYgKCFmZSkgeworCQkJcHJpbnRrKEtFUk5fRVJSICIlcygpIGZhaWxlZCB0byBnZXQgZnJvbnRlbmQoJWQpXG4iLCBfX2Z1bmNfXywgaSk7CisJCQljb250aW51ZTsKKwkJfQorCQl2aWRlb2J1Zl9xdWV1ZV9zZ19pbml0KCZmZS0+ZHZiLmR2YnEsICZkdmJfcW9wcywKIAkJCSAgICAmZGV2LT5wY2ktPmRldiwgJmRldi0+c2xvY2ssCiAJCQkgICAgVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFLAogCQkJICAgIFY0TDJfRklFTERfVE9QLAogCQkJICAgIHNpemVvZihzdHJ1Y3QgY3g4OF9idWZmZXIpLAogCQkJICAgIGRldik7CisJCS8qIGluaXQgc3RydWN0IHZpZGVvYnVmX2R2YiAqLworCQlmZS0+ZHZiLm5hbWUgPSBkZXYtPmNvcmUtPm5hbWU7CisJfQogCWVyciA9IGR2Yl9yZWdpc3RlcihkZXYpOwogCWlmIChlcnIgIT0gMCkKIAkJcHJpbnRrKEtFUk5fRVJSICIlcy8yOiBkdmJfcmVnaXN0ZXIgZmFpbGVkIChlcnIgPSAlZClcbiIsCiAJCSAgICAgICBjb3JlLT5uYW1lLCBlcnIpOwotCi0gZmFpbF9jb3JlOgorZmFpbF9jb3JlOgogCXJldHVybiBlcnI7CiB9CiAKQEAgLTExMDUsOSArMTI0OCw3IEBACiB7CiAJc3RydWN0IGN4ODgwMl9kZXYgKmRldiA9IGRydi0+Y29yZS0+ZHZiZGV2OwogCi0JLyogZHZiICovCi0JaWYgKGRldi0+ZHZiLmZyb250ZW5kKQotCQl2aWRlb2J1Zl9kdmJfdW5yZWdpc3RlcigmZGV2LT5kdmIpOworCXZpZGVvYnVmX2R2Yl91bnJlZ2lzdGVyX2J1cygmZGV2LT5mcm9udGVuZHMpOwogCiAJdnAzMDU0X2kyY19yZW1vdmUoZGV2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtaTJjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1pMmMuYwppbmRleCA4ZTc0ZDY0Li4wMWRlMjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1pMmMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1pMmMuYwpAQCAtMTE2LDE4ICsxMTYsMjUgQEAKIAogdm9pZCBjeDg4X2NhbGxfaTJjX2NsaWVudHMoc3RydWN0IGN4ODhfY29yZSAqY29yZSwgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQogeworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmRzICpmID0gJmNvcmUtPmR2YmRldi0+ZnJvbnRlbmRzOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlID0gTlVMTDsKIAlpZiAoMCAhPSBjb3JlLT5pMmNfcmMpCiAJCXJldHVybjsKIAogI2lmIGRlZmluZWQoQ09ORklHX1ZJREVPX0NYODhfRFZCKSB8fCBkZWZpbmVkKENPTkZJR19WSURFT19DWDg4X0RWQl9NT0RVTEUpCi0JaWYgKCAoY29yZS0+ZHZiZGV2KSAmJiAoY29yZS0+ZHZiZGV2LT5kdmIuZnJvbnRlbmQpICkgewotCQlpZiAoY29yZS0+ZHZiZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsKQotCQkJY29yZS0+ZHZiZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsKGNvcmUtPmR2YmRldi0+ZHZiLmZyb250ZW5kLCAxKTsKKwlpZiAoY29yZS0+ZHZiZGV2ICYmIGYpIHsKKwkJaWYoZi0+Z2F0ZSA8PSAxKSAvKiB1bmRlZmluZWQgb3IgZmUwICovCisJCQlmZSA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoZiwgMSk7CisJCWVsc2UKKwkJCWZlID0gdmlkZW9idWZfZHZiX2dldF9mcm9udGVuZChmLCBmLT5nYXRlKTsKKworCQlpZiAoZmUgJiYgZmUtPmR2Yi5mcm9udGVuZCAmJiBmZS0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCkKKwkJCWZlLT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsKGZlLT5kdmIuZnJvbnRlbmQsIDEpOwogCiAJCWkyY19jbGllbnRzX2NvbW1hbmQoJmNvcmUtPmkyY19hZGFwLCBjbWQsIGFyZyk7CiAKLQkJaWYgKGNvcmUtPmR2YmRldi0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCkKLQkJCWNvcmUtPmR2YmRldi0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybChjb3JlLT5kdmJkZXYtPmR2Yi5mcm9udGVuZCwgMCk7CisJCWlmIChmZSAmJiBmZS0+ZHZiLmZyb250ZW5kICYmIGZlLT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsKQorCQkJZmUtPmR2Yi5mcm9udGVuZC0+b3BzLmkyY19nYXRlX2N0cmwoZmUtPmR2Yi5mcm9udGVuZCwgMCk7CiAJfSBlbHNlCiAjZW5kaWYKIAkJaTJjX2NsaWVudHNfY29tbWFuZCgmY29yZS0+aTJjX2FkYXAsIGNtZCwgYXJnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LW1wZWcuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LW1wZWcuYwppbmRleCBhNmIwNjFjLi42ZGY1Y2YzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1tcGVnLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtbXBlZy5jCkBAIC03NjgsNyArNzY4LDggQEAKIHsKIAlzdHJ1Y3QgY3g4ODAyX2RldiAqZGV2OwogCXN0cnVjdCBjeDg4X2NvcmUgICpjb3JlOwotCWludCBlcnI7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqZGVtb2Q7CisJaW50IGVycixpOwogCiAJLyogZ2VuZXJhbCBzZXR1cCAqLwogCWNvcmUgPSBjeDg4X2NvcmVfZ2V0KHBjaV9kZXYpOwpAQCAtNzgxLDYgKzc4MiwxMSBAQAogCWlmICghY29yZS0+Ym9hcmQubXBlZykKIAkJZ290byBmYWlsX2NvcmU7CiAKKwlpZiAoIWNvcmUtPmJvYXJkLm51bV9mcm9udGVuZHMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlcygpIC5udW1fZnJvbnRlbmRzIHNob3VsZCBiZSBub24temVybywgZXJyID0gJWRcbiIsIF9fZnVuY19fLCBlcnIpOworCQlnb3RvIGZhaWxfY29yZTsKKwl9CisKIAllcnIgPSAtRU5PTUVNOwogCWRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLEdGUF9LRVJORUwpOwogCWlmIChOVUxMID09IGRldikKQEAgLTc5NSw2ICs4MDEsMjAgQEAKIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5kcnZsaXN0KTsKIAlsaXN0X2FkZF90YWlsKCZkZXYtPmRldmxpc3QsJmN4ODgwMl9kZXZsaXN0KTsKIAorCW11dGV4X2luaXQoJmRldi0+ZnJvbnRlbmRzLmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZkZXYtPmZyb250ZW5kcy5mZWxpc3QpOworCisJcHJpbnRrKEtFUk5fSU5GTyAiJXMoKSBhbGxvY2F0aW5nICVkIGZyb250ZW5kKHMpXG4iLCBfX2Z1bmNfXywgY29yZS0+Ym9hcmQubnVtX2Zyb250ZW5kcyk7CisKKwlmb3IgKGkgPSAxOyBpIDw9IGNvcmUtPmJvYXJkLm51bV9mcm9udGVuZHM7IGkrKykgeworCQlkZW1vZCA9IHZpZGVvYnVmX2R2Yl9hbGxvY19mcm9udGVuZCgmZGV2LT5mcm9udGVuZHMsIGkpOworCQlpZihkZW1vZCA9PSBOVUxMKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIiVzKCkgZmFpbGVkIHRvIGFsbG9jXG4iLCBfX2Z1bmNfXyk7CisJCQllcnIgPSAtRU5PTUVNOworCQkJZ290byBmYWlsX2ZyZWU7CisJCX0KKwl9CisKIAkvKiBNYWludGFpbiBhIHJlZmVyZW5jZSBzbyBjeDg4LXZpZGVvIGNhbiBxdWVyeSB0aGUgODgwMiBkZXZpY2UuICovCiAJY29yZS0+ZHZiZGV2ID0gZGV2OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC10dmF1ZGlvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC10dmF1ZGlvLmMKaW5kZXggM2ExOTc3Zi4uN2RkNTA2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtdHZhdWRpby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LXR2YXVkaW8uYwpAQCAtNzY3LDYgKzc2NywxNCBAQAogCWNhc2UgV1dfRk06CiAJCXNldF9hdWRpb19zdGFuZGFyZF9GTShjb3JlLCByYWRpb19kZWVtcGhhc2lzKTsKIAkJYnJlYWs7CisJY2FzZSBXV19JMlNBREM6CisJCXNldF9hdWRpb19zdGFydChjb3JlLCAweDAxKTsKKwkJLyogU2xhdmUvUGhpbGlwcy9BdXRvYmF1ZCAqLworCQljeF93cml0ZShBVURfSTJTSU5QVVRDTlRMLCAwKTsKKwkJLyogU3dpdGNoIHRvICJJMlMgQURDIG1vZGUiICovCisJCWN4X3dyaXRlKEFVRF9JMlNDTlRMLCAweDEpOworCQlzZXRfYXVkaW9fZmluaXNoKGNvcmUsIEVOX0kyU0lOX0VOQUJMRSk7CisJCWJyZWFrOwogCWNhc2UgV1dfTk9ORToKIAlkZWZhdWx0OgogCQlwcmludGsoIiVzLzA6IHVua25vd24gdHYgYXVkaW8gbW9kZSBbJWRdXG4iLApAQCAtODk1LDYgKzkwMyw5IEBACiAJCQlicmVhazsKIAkJfQogCQlicmVhazsKKwljYXNlIFdXX0kyU0FEQzoKKwkJLyogRE8gTk9USElORyAqLworCQlicmVhazsKIAl9CiAKIAlpZiAoVU5TRVQgIT0gY3RsKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtdmlkZW8uYwppbmRleCBiZTQ1OTU1Li4zOTA0YjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LXZpZGVvLmMKQEAgLTQyNiwyNCArNDI2LDcgQEAKIAogCS8qIGlmIHRoZXJlIGFyZSBhdWRpb3JvdXRlcyBkZWZpbmVkLCB3ZSBoYXZlIGFuIGV4dGVybmFsCiAJICAgQURDIHRvIGRlYWwgd2l0aCBhdWRpbyAqLwotCiAJaWYgKElOUFVUKGlucHV0KS5hdWRpb3JvdXRlKSB7Ci0KLQkJLyogY3gyMzg4J3MgQy1BREMgaXMgY29ubmVjdGVkIHRvIHRoZSB0dW5lciBvbmx5LgotCQkgICBXaGVuIHVzZWQgd2l0aCBTLVZpZGVvLCB0aGF0IEFEQyBpcyBidXN5IGRlYWxpbmcgd2l0aAotCQkgICBjaHJvbWEsIHNvIGFuIGV4dGVybmFsIG11c3QgYmUgdXNlZCBmb3IgYmFzZWJhbmQgYXVkaW8gKi8KLQotCQlpZiAoSU5QVVQoaW5wdXQpLnR5cGUgIT0gQ1g4OF9WTVVYX1RFTEVWSVNJT04gJiYKLQkJCUlOUFVUKGlucHV0KS50eXBlICE9IENYODhfUkFESU8pIHsKLQkJCS8qICJBREMgbW9kZSIgKi8KLQkJCWN4X3dyaXRlKEFVRF9JMlNDTlRMLCAweDEpOwotCQkJY3hfc2V0KEFVRF9DVEwsIEVOX0kyU0lOX0VOQUJMRSk7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBOb3JtYWwgbW9kZSAqLwotCQkJY3hfd3JpdGUoQVVEX0kyU0NOVEwsIDB4MCk7Ci0JCQljeF9jbGVhcihBVURfQ1RMLCBFTl9JMlNJTl9FTkFCTEUpOwotCQl9Ci0KIAkJLyogVGhlIHdtODc3NSBtb2R1bGUgaGFzIHRoZSAiMiIgcm91dGUgaGFyZHdpcmVkIGludG8KIAkJICAgdGhlIGluaXRpYWxpemF0aW9uLiBTb21lIGJvYXJkcyBtYXkgdXNlIGRpZmZlcmVudAogCQkgICByb3V0ZXMgZm9yIGRpZmZlcmVudCBpbnB1dHMuIEhWUi0xMzAwIHN1cmVseSBkb2VzICovCkBAIC00NTQsOSArNDM3LDE5IEBACiAJCQlyb3V0ZS5pbnB1dCA9IElOUFVUKGlucHV0KS5hdWRpb3JvdXRlOwogCQkJY3g4OF9jYWxsX2kyY19jbGllbnRzKGNvcmUsCiAJCQkJVklESU9DX0lOVF9TX0FVRElPX1JPVVRJTkcsICZyb3V0ZSk7Ci0KIAkJfQotCisJCS8qIGN4MjM4OCdzIEMtQURDIGlzIGNvbm5lY3RlZCB0byB0aGUgdHVuZXIgb25seS4KKwkJICAgV2hlbiB1c2VkIHdpdGggUy1WaWRlbywgdGhhdCBBREMgaXMgYnVzeSBkZWFsaW5nIHdpdGgKKwkJICAgY2hyb21hLCBzbyBhbiBleHRlcm5hbCBtdXN0IGJlIHVzZWQgZm9yIGJhc2ViYW5kIGF1ZGlvICovCisJCWlmIChJTlBVVChpbnB1dCkudHlwZSAhPSBDWDg4X1ZNVVhfVEVMRVZJU0lPTiApIHsKKwkJCS8qICJJMlMgQURDIG1vZGUiICovCisJCQljb3JlLT50dmF1ZGlvID0gV1dfSTJTQURDOworCQkJY3g4OF9zZXRfdHZhdWRpbyhjb3JlKTsKKwkJfSBlbHNlIHsKKwkJCS8qIE5vcm1hbCBtb2RlICovCisJCQljeF93cml0ZShBVURfSTJTQ05UTCwgMHgwKTsKKwkJCWN4X2NsZWFyKEFVRF9DVEwsIEVOX0kyU0lOX0VOQUJMRSk7CisJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTgzMiw5ICs4MjUsMjQgQEAKIAkJY3hfd3JpdGUoTU9fR1AwX0lPLCBjb3JlLT5ib2FyZC5yYWRpby5ncGlvMCk7CiAJCWN4X3dyaXRlKE1PX0dQMV9JTywgY29yZS0+Ym9hcmQucmFkaW8uZ3BpbzEpOwogCQljeF93cml0ZShNT19HUDJfSU8sIGNvcmUtPmJvYXJkLnJhZGlvLmdwaW8yKTsKLQkJY29yZS0+dHZhdWRpbyA9IFdXX0ZNOwotCQljeDg4X3NldF90dmF1ZGlvKGNvcmUpOwotCQljeDg4X3NldF9zdGVyZW8oY29yZSxWNEwyX1RVTkVSX01PREVfU1RFUkVPLDEpOworCQlpZiAoY29yZS0+Ym9hcmQucmFkaW8uYXVkaW9yb3V0ZSkgeworCQkJaWYoY29yZS0+Ym9hcmQuYXVkaW9fY2hpcCAmJgorCQkJCWNvcmUtPmJvYXJkLmF1ZGlvX2NoaXAgPT0gVjRMMl9JREVOVF9XTTg3NzUpIHsKKwkJCQlzdHJ1Y3QgdjRsMl9yb3V0aW5nIHJvdXRlOworCisJCQkJcm91dGUuaW5wdXQgPSBjb3JlLT5ib2FyZC5yYWRpby5hdWRpb3JvdXRlOworCQkJCWN4ODhfY2FsbF9pMmNfY2xpZW50cyhjb3JlLAorCQkJCQlWSURJT0NfSU5UX1NfQVVESU9fUk9VVElORywgJnJvdXRlKTsKKwkJCX0KKwkJCS8qICJJMlMgQURDIG1vZGUiICovCisJCQljb3JlLT50dmF1ZGlvID0gV1dfSTJTQURDOworCQkJY3g4OF9zZXRfdHZhdWRpbyhjb3JlKTsKKwkJfSBlbHNlIHsKKwkJCS8qIEZNIE1vZGUgKi8KKwkJCWNvcmUtPnR2YXVkaW8gPSBXV19GTTsKKwkJCWN4ODhfc2V0X3R2YXVkaW8oY29yZSk7CisJCQljeDg4X3NldF9zdGVyZW8oY29yZSxWNEwyX1RVTkVSX01PREVfU1RFUkVPLDEpOworCQl9CiAJCWN4ODhfY2FsbF9pMmNfY2xpZW50cyhjb3JlLEFVRENfU0VUX1JBRElPLE5VTEwpOwogCX0KIAl1bmxvY2tfa2VybmVsKCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODguaAppbmRleCBkYmYwMWI4Li43NjIwN2MyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LmgKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCWVudW0gY3g4OF9pdHlwZSB0eXBlOwogCXUzMiAgICAgICAgICAgICBncGlvMCwgZ3BpbzEsIGdwaW8yLCBncGlvMzsKIAl1bnNpZ25lZCBpbnQgICAgdm11eDoyOwotCXVuc2lnbmVkIGludCAgICBhdWRpb3JvdXRlOjI7CisJdW5zaWduZWQgaW50ICAgIGF1ZGlvcm91dGU6NDsKIH07CiAKIHN0cnVjdCBjeDg4X2JvYXJkIHsKQEAgLTI2MSw2ICsyNjEsNyBAQAogCXN0cnVjdCBjeDg4X2lucHV0ICAgICAgIHJhZGlvOwogCWVudW0gY3g4OF9ib2FyZF90eXBlICAgIG1wZWc7CiAJdW5zaWduZWQgaW50ICAgICAgICAgICAgYXVkaW9fY2hpcDsKKwlpbnQJCQludW1fZnJvbnRlbmRzOwogfTsKIAogc3RydWN0IGN4ODhfc3ViaWQgewpAQCAtMzU2LDYgKzM1Nyw3IEBACiAJc3RydWN0IGN4ODgwMl9kZXYgICAgICAgICAgKmR2YmRldjsKIAllbnVtIGN4ODhfYm9hcmRfdHlwZSAgICAgICBhY3RpdmVfdHlwZV9pZDsKIAlpbnQJCQkgICBhY3RpdmVfcmVmOworCWludAkJCSAgIGFjdGl2ZV9mZV9pZDsKIH07CiAKIHN0cnVjdCBjeDg4MDBfZGV2OwpAQCAtNDkwLDcgKzQ5Miw3IEBACiAKICNpZiBkZWZpbmVkKENPTkZJR19WSURFT19DWDg4X0RWQikgfHwgZGVmaW5lZChDT05GSUdfVklERU9fQ1g4OF9EVkJfTU9EVUxFKQogCS8qIGZvciBkdmIgb25seSAqLwotCXN0cnVjdCB2aWRlb2J1Zl9kdmIgICAgICAgIGR2YjsKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyBmcm9udGVuZHM7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQ09ORklHX1ZJREVPX0NYODhfVlAzMDU0KSB8fCBcCkBAIC02MjgsNiArNjMwLDcgQEAKICNkZWZpbmUgV1dfRUlBSgkJIDcKICNkZWZpbmUgV1dfSTJTUFQJIDgKICNkZWZpbmUgV1dfRk0JCSA5CisjZGVmaW5lIFdXX0kyU0FEQwkgMTAKIAogdm9pZCBjeDg4X3NldF90dmF1ZGlvKHN0cnVjdCBjeDg4X2NvcmUgKmNvcmUpOwogdm9pZCBjeDg4X25ld3N0YXRpb24oc3RydWN0IGN4ODhfY29yZSAqY29yZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhYnVzYi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9kYWJ1c2IuYwppbmRleCAzYWE1MzhhLi4yOTg4MTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhYnVzYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGFidXNiLmMKQEAgLTE5Miw3ICsxOTIsNyBAQAogCQkJCQllcnIoImRhYnVzYl9pc29fY29tcGxldGU6IGludmFsaWQgbGVuICVkIiwgbGVuKTsKIAkJCX0KIAkJCWVsc2UKLQkJCQl3YXJuKCJkYWJ1c2JfaXNvX2NvbXBsZXRlOiBjb3JydXB0ZWQgcGFja2V0IHN0YXR1czogJWQiLCBwdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5zdGF0dXMpOworCQkJCWRldl93YXJuKCZwdXJiLT5kZXYtPmRldiwgImRhYnVzYl9pc29fY29tcGxldGU6IGNvcnJ1cHRlZCBwYWNrZXQgc3RhdHVzOiAlZFxuIiwgcHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0uc3RhdHVzKTsKIAkJaWYgKGRzdCAhPSBwdXJiLT5hY3R1YWxfbGVuZ3RoKQogCQkJZXJyKCJkc3QhPXB1cmItPmFjdHVhbF9sZW5ndGg6JWQhPSVkIiwgZHN0LCBwdXJiLT5hY3R1YWxfbGVuZ3RoKTsKIAl9CkBAIC0yODksNyArMjg5LDcgQEAKIAl9CiAKIAlpZiggcmV0ID09IC1FUElQRSApIHsKLQkJd2FybigiQ0xFQVJfRkVBVFVSRSByZXF1ZXN0IHRvIHJlbW92ZSBTVEFMTCBjb25kaXRpb24uIik7CisJCWRldl93YXJuKCZzLT51c2JkZXYtPmRldiwgIkNMRUFSX0ZFQVRVUkUgcmVxdWVzdCB0byByZW1vdmUgU1RBTEwgY29uZGl0aW9uLlxuIik7CiAJCWlmKHVzYl9jbGVhcl9oYWx0KHMtPnVzYmRldiwgdXNiX3BpcGVlbmRwb2ludChwaXBlKSkpCiAJCQllcnIoInJlcXVlc3QgZmFpbGVkIik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jCmluZGV4IGMyMWFmMzEuLmU0OGZiZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dzcGNhLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgTU9EVUxFX05BTUUgImdzcGNhIgogCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgpAQCAtNDAzLDcgKzQwNCw3IEBACiAJdW5zaWduZWQgaW50IGk7CiAKIAlQREVCVUcoRF9TVFJFQU0sICJraWxsIHRyYW5zZmVyIik7Ci0JZm9yIChpID0gMDsgaSA8IE1BWF9OVVJCUzsgKytpKSB7CisJZm9yIChpID0gMDsgaSA8IE1BWF9OVVJCUzsgaSsrKSB7CiAJCXVyYiA9IGdzcGNhX2Rldi0+dXJiW2ldOwogCQlpZiAodXJiID09IE5VTEwpCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuaAppbmRleCA0Nzc5ZGQwLi4xZDlkYzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dzcGNhLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5oCkBAIC0yLDcgKzIsNiBAQAogI2RlZmluZSBHU1BDQVYyX0gKIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC91c2IuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfYnJpZGdlLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX2JyaWRnZS5oCmluZGV4IGM3ODZkN2QuLjFhMzdhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfYnJpZGdlLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9icmlkZ2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBVU0IgRHJpdmVyIGZvciBBTGkgbTU2MDIgYmFzZWQgd2ViY2FtcwogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBFcmlrIEFuZHJlbgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcsOpbgogICogQ29weXJpZ2h0IChDKSAyMDA3IElseWVzIEdvdXRhLiBCYXNlZCBvbiB0aGUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0LgogICogQ29weXJpZ2h0IChDKSAyMDA1IG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdCA8bTU2MDJAeDNuZy5jb20uYnI+CiAgKgpAQCAtMjUsMzMgKzI1LDYgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jdW5kZWYgUERFQlVHCi0jdW5kZWYgaW5mbwotI3VuZGVmIGVycgotCi0jZGVmaW5lIGVycihmb3JtYXQsIGFyZy4uLikgcHJpbnRrKEtFUk5fRVJSIEtCVUlMRF9NT0ROQU1FICI6ICIgXAotCWZvcm1hdCAiXG4iICwgIyMgYXJnKQotI2RlZmluZSBpbmZvKGZvcm1hdCwgYXJnLi4uKSBwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgXAotCWZvcm1hdCAiXG4iICwgIyMgYXJnKQotCi0vKiBEZWJ1ZyBwYXJhbWV0ZXJzICovCi0jZGVmaW5lIERCR19JTklUIDB4MQotI2RlZmluZSBEQkdfUFJPQkUgMHgyCi0jZGVmaW5lIERCR19WNEwyIDB4NAotI2RlZmluZSBEQkdfVFJBQ0UgMHg4Ci0jZGVmaW5lIERCR19EQVRBIDB4MTAKLSNkZWZpbmUgREJHX1Y0TDJfQ0lEIDB4MjAKLSNkZWZpbmUgREJHX0dTUENBIDB4NDAKLQotI2RlZmluZSBQREVCVUcobGV2ZWwsIGZtdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAobTU2MDJfZGVidWcgJiBsZXZlbCkgICAgIFwKLQkJCWluZm8oIlslczolZF0gIiBmbXQsIF9fZnVuY19fLCBfX0xJTkVfXyAsIFwKLQkJCSMjIGFyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiAjZGVmaW5lIE01NjAyX1hCX1NFTlNPUl9UWVBFIDB4MDAKICNkZWZpbmUgTTU2MDJfWEJfU0VOU09SX0NUUkwgMHgwMQogI2RlZmluZSBNNTYwMl9YQl9MSU5FX09GX0ZSQU1FX0ggMHgwMgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX2NvcmUuYwppbmRleCAxOWQ1ZTM1Li5mZDZjZTM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX2NvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX2NvcmUuYwpAQCAtMSw3ICsxLDcgQEAKLS8qCisgLyoKICAqIFVTQiBEcml2ZXIgZm9yIEFMaSBtNTYwMiBiYXNlZCB3ZWJjYW1zCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC0yNiw3ICsyNiw2IEBACiBpbnQgZm9yY2Vfc2Vuc29yOwogaW50IGR1bXBfYnJpZGdlOwogaW50IGR1bXBfc2Vuc29yOwotdW5zaWduZWQgaW50IG01NjAyX2RlYnVnOwogCiBzdGF0aWMgY29uc3QgX19kZXZpbml0ZGF0YSBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtNTYwMl90YWJsZVtdID0gewogCXtVU0JfREVWSUNFKDB4MDQwMiwgMHg1NjAyKX0sCkBAIC00OCw3ICs0Nyw3IEBACiAJCQkgICAgICAxLCBNNTYwMl9VUkJfTVNHX1RJTUVPVVQpOwogCSppMmNfZGF0YSA9IGJ1ZlswXTsKIAotCVBERUJVRyhEQkdfVFJBQ0UsICJSZWFkaW5nIGJyaWRnZSByZWdpc3RlciAweCV4IGNvbnRhaW5pbmcgMHgleCIsCisJUERFQlVHKERfQ09ORiwgIlJlYWRpbmcgYnJpZGdlIHJlZ2lzdGVyIDB4JXggY29udGFpbmluZyAweCV4IiwKIAkgICAgICAgYWRkcmVzcywgKmkyY19kYXRhKTsKIAogCS8qIHVzYl9jb250cm9sX21zZyguLi4pIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzZW50IHVwb24gc3VjY2VzcywKQEAgLTYzLDcgKzYyLDcgQEAKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHNkLT5nc3BjYV9kZXYuZGV2OwogCV9fdTggKmJ1ZiA9IHNkLT5nc3BjYV9kZXYudXNiX2J1ZjsKIAotCVBERUJVRyhEQkdfVFJBQ0UsICJXcml0aW5nIGJyaWRnZSByZWdpc3RlciAweCV4IHdpdGggMHgleCIsCisJUERFQlVHKERfQ09ORiwgIldyaXRpbmcgYnJpZGdlIHJlZ2lzdGVyIDB4JXggd2l0aCAweCV4IiwKIAkgICAgICAgYWRkcmVzcywgaTJjX2RhdGEpOwogCiAJbWVtY3B5KGJ1ZiwgYnJpZGdlX3VyYl9za2VsZXRvbiwKQEAgLTkxLDcgKzkwLDggQEAKIAkJbTU2MDJfcmVhZF9icmlkZ2Uoc2QsIGksICZ2YWwpOwogCQlpbmZvKCJBTGkgbTU2MDIgYWRkcmVzcyAweCV4IGNvbnRhaW5zIDB4JXgiLCBpLCB2YWwpOwogCX0KLQlpbmZvKCJXYXJuaW5nOiBUaGUgY2FtZXJhIHByb2JhYmx5IHdvbid0IHdvcmsgdW50aWwgaXQncyBwb3dlciBjeWNsZWQiKTsKKwlpbmZvKCJXYXJuaW5nOiBUaGUgQUxpIG01NjAyIHdlYmNhbSBwcm9iYWJseSB3b24ndCB3b3JrICIKKwkJInVudGlsIGl0J3MgcG93ZXIgY3ljbGVkIik7CiB9CiAKIHN0YXRpYyBpbnQgbTU2MDJfcHJvYmVfc2Vuc29yKHN0cnVjdCBzZCAqc2QpCkBAIC0xMzUsNyArMTM1LDcgQEAKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAJaW50IGVycjsKIAotCVBERUJVRyhEQkdfVFJBQ0UsICJJbml0aWFsaXppbmcgQUxpIG01NjAyIHdlYmNhbSIpOworCVBERUJVRyhEX0NPTkYsICJJbml0aWFsaXppbmcgQUxpIG01NjAyIHdlYmNhbSIpOwogCS8qIFJ1biB0aGUgaW5pdCBzZXF1ZW5jZSAqLwogCWVyciA9IHNkLT5zZW5zb3ItPmluaXQoc2QpOwogCkBAIC0xNDYsMTYgKzE0NiwxOCBAQAogewogCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKIAlfX3U4ICpidWYgPSBzZC0+Z3NwY2FfZGV2LnVzYl9idWY7CisJaW50IGVycjsKIAogCS8qIFNlbmQgc3RhcnQgY29tbWFuZCB0byB0aGUgY2FtZXJhICovCiAJY29uc3QgdTggYnVmZmVyWzRdID0gezB4MTMsIDB4ZjksIDB4MGYsIDB4MDF9OwogCW1lbWNweShidWYsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotCXVzYl9jb250cm9sX21zZyhnc3BjYV9kZXYtPmRldiwgdXNiX3NuZGN0cmxwaXBlKGdzcGNhX2Rldi0+ZGV2LCAwKSwKLQkJCTB4MDQsIDB4NDAsIDB4MTksIDB4MDAwMCwgYnVmLAotCQkJNCwgTTU2MDJfVVJCX01TR19USU1FT1VUKTsKKwllcnIgPSB1c2JfY29udHJvbF9tc2coZ3NwY2FfZGV2LT5kZXYsCisJCQkgICAgICB1c2Jfc25kY3RybHBpcGUoZ3NwY2FfZGV2LT5kZXYsIDApLAorCQkJICAgICAgMHgwNCwgMHg0MCwgMHgxOSwgMHgwMDAwLCBidWYsCisJCQkgICAgICA0LCBNNTYwMl9VUkJfTVNHX1RJTUVPVVQpOwogCi0JUERFQlVHKERCR19WNEwyLCAiVHJhbnNmZXIgc3RhcnRlZCIpOwotCXJldHVybiAwOworCVBERUJVRyhEX1NUUkVBTSwgIlRyYW5zZmVyIHN0YXJ0ZWQiKTsKKwlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KIAogc3RhdGljIHZvaWQgbTU2MDJfdXJiX2NvbXBsZXRlKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwKQEAgLTE2NSwxNCArMTY3LDE0IEBACiAJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OwogCiAJaWYgKGxlbiA8IDYpIHsKLQkJUERFQlVHKERCR19EQVRBLCAiUGFja2V0IGlzIGxlc3MgdGhhbiA2IGJ5dGVzIik7CisJCVBERUJVRyhEX1BBQ0ssICJQYWNrZXQgaXMgbGVzcyB0aGFuIDYgYnl0ZXMiKTsKIAkJcmV0dXJuOwogCX0KIAogCS8qIEZyYW1lIGRlbGltaXRlcjogZmYgeHggeHggeHggZmYgZmYgKi8KIAlpZiAoZGF0YVswXSA9PSAweGZmICYmIGRhdGFbNF0gPT0gMHhmZiAmJiBkYXRhWzVdID09IDB4ZmYgJiYKIAkgICAgZGF0YVsyXSAhPSBzZC0+ZnJhbWVfaWQpIHsKLQkJUERFQlVHKERCR19EQVRBLCAiRnJhbWUgZGVsaW1pdGVyIGRldGVjdGVkIik7CisJCVBERUJVRyhEX0ZSQU0sICJGcmFtZSBkZWxpbWl0ZXIgZGV0ZWN0ZWQiKTsKIAkJc2QtPmZyYW1lX2lkID0gZGF0YVsyXTsKIAogCQkvKiBSZW1vdmUgdGhlIGV4dHJhIGZsdWZmIGFwcGVuZGVkIG9uIGVhY2ggaGVhZGVyICovCkBAIC0xODcsNyArMTg5LDcgQEAKIAkJLyogQ3JlYXRlIGEgbmV3IGZyYW1lICovCiAJCWdzcGNhX2ZyYW1lX2FkZChnc3BjYV9kZXYsIEZJUlNUX1BBQ0tFVCwgZnJhbWUsIGRhdGEsIGxlbik7CiAKLQkJUERFQlVHKERCR19WNEwyLCAiU3RhcnRpbmcgbmV3IGZyYW1lICVkIiwKKwkJUERFQlVHKERfRlJBTSwgIlN0YXJ0aW5nIG5ldyBmcmFtZSAlZCIsCiAJCSAgICAgICBzZC0+ZnJhbWVfY291bnQpOwogCiAJfSBlbHNlIHsKQEAgLTE5OCw3ICsyMDAsNyBAQAogCQlsZW4gLT0gNDsKIAogCQlpZiAoY3VyX2ZyYW1lX2xlbiArIGxlbiA8PSBmcmFtZS0+djRsMl9idWYubGVuZ3RoKSB7Ci0JCQlQREVCVUcoREJHX0RBVEEsICJDb250aW51aW5nIGZyYW1lICVkIGNvcHlpbmcgJWQgYnl0ZXMiLAorCQkJUERFQlVHKERfRlJBTSwgIkNvbnRpbnVpbmcgZnJhbWUgJWQgY29weWluZyAlZCBieXRlcyIsCiAJCQkgICAgICAgc2QtPmZyYW1lX2NvdW50LCBsZW4pOwogCiAJCQlnc3BjYV9mcmFtZV9hZGQoZ3NwY2FfZGV2LCBJTlRFUl9QQUNLRVQsIGZyYW1lLApAQCAtMjM0LDggKzIzNiw2IEBACiAJc3RydWN0IGNhbSAqY2FtOwogCWludCBlcnI7CiAKLQlQREVCVUcoREJHX0dTUENBLCAibTU2MDJfY29uZmlndXJlIHN0YXJ0Iik7Ci0KIAljYW0gPSAmZ3NwY2FfZGV2LT5jYW07CiAJY2FtLT5lcGFkZHIgPSBNNTYwMl9JU09DX0VORFBPSU5UX0FERFI7CiAJc2QtPmRlc2MgPSAmc2RfZGVzYzsKQEAgLTI0OCwxMSArMjQ4LDEwIEBACiAJaWYgKGVycikKIAkJZ290byBmYWlsOwogCi0JUERFQlVHKERCR19HU1BDQSwgIm01NjAyX2NvbmZpZ3VyZSBlbmQiKTsKIAlyZXR1cm4gMDsKIAogZmFpbDoKLQlQREVCVUcoREJHX0dTUENBLCAibTU2MDJfY29uZmlndXJlIGZhaWxlZCIpOworCVBERUJVRyhEX0VSUiwgIkFMaSBtNTYwMiB3ZWJjYW0gZmFpbGVkIik7CiAJY2FtLT5jYW1fbW9kZSA9IE5VTEw7CiAJY2FtLT5ubW9kZXMgPSAwOwogCkBAIC0yODIsMTMgKzI4MSwxMyBAQAogewogCWlmICh1c2JfcmVnaXN0ZXIoJnNkX2RyaXZlcikgPCAwKQogCQlyZXR1cm4gLTE7Ci0JUERFQlVHKERfUFJPQkUsICJtNTYwMiBtb2R1bGUgcmVnaXN0ZXJlZCIpOworCVBERUJVRyhEX1BST0JFLCAicmVnaXN0ZXJlZCIpOwogCXJldHVybiAwOwogfQogc3RhdGljIHZvaWQgX19leGl0IG1vZF9tNTYwMl9leGl0KHZvaWQpCiB7CiAJdXNiX2RlcmVnaXN0ZXIoJnNkX2RyaXZlcik7Ci0JUERFQlVHKERfUFJPQkUsICJtNTYwMiBtb2R1bGUgZGVyZWdpc3RlcmVkIik7CisJUERFQlVHKERfUFJPQkUsICJkZXJlZ2lzdGVyZWQiKTsKIH0KIAogbW9kdWxlX2luaXQobW9kX201NjAyX2luaXQpOwpAQCAtMjk3LDkgKzI5Niw2IEBACiBNT0RVTEVfQVVUSE9SKERSSVZFUl9BVVRIT1IpOwogTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1ZywgbTU2MDJfZGVidWcsIGludCwgU19JUlVHTyB8IFNfSVdVU1IpOwotTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgInRvZ2dsZXMgZGVidWcgb24vb2ZmIik7Ci0KIG1vZHVsZV9wYXJhbShmb3JjZV9zZW5zb3IsIGludCwgU19JUlVHTyB8IFNfSVdVU1IpOwogTU9EVUxFX1BBUk1fREVTQyhmb3JjZV9zZW5zb3IsCiAJCSJmb3JjZSBkZXRlY3Rpb24gb2Ygc2Vuc29yLCAiCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jCmluZGV4IDU2NmQ0OTIuLmZiNzAwYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIERyaXZlciBmb3IgdGhlIG10OW0xMTEgc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC0xMDcsNyArMTA3LDcgQEAKIAllcnIgPSBtdDltMTExX3JlYWRfc2Vuc29yKHNkLCBNVDlNMTExX1NDX1JfTU9ERV9DT05URVhUX0IsCiAJCQkJICBkYXRhLCAyKTsKIAkqdmFsID0gZGF0YVswXSAmIE1UOU0xMTFfUk1CX01JUlJPUl9ST1dTOwotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIHZlcnRpY2FsIGZsaXAgJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCB2ZXJ0aWNhbCBmbGlwICVkIiwgKnZhbCk7CiAKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQAogCXU4IGRhdGFbMl0gPSB7MHgwMCwgMHgwMH07CiAJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlNldCB2ZXJ0aWNhbCBmbGlwIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IHZlcnRpY2FsIGZsaXAgdG8gJWQiLCB2YWwpOwogCiAJLyogU2V0IHRoZSBjb3JyZWN0IHBhZ2UgbWFwICovCiAJZXJyID0gbXQ5bTExMV93cml0ZV9zZW5zb3Ioc2QsIE1UOU0xMTFfUEFHRV9NQVAsIGRhdGEsIDIpOwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAJZXJyID0gbXQ5bTExMV9yZWFkX3NlbnNvcihzZCwgTVQ5TTExMV9TQ19SX01PREVfQ09OVEVYVF9CLAogCQkJCSAgZGF0YSwgMik7CiAJKnZhbCA9IGRhdGFbMF0gJiBNVDlNMTExX1JNQl9NSVJST1JfQ09MUzsKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiUmVhZCBob3Jpem9udGFsIGZsaXAgJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCBob3Jpem9udGFsIGZsaXAgJWQiLCAqdmFsKTsKIAogCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOwogfQpAQCAtMTU2LDcgKzE1Niw3IEBACiAJdTggZGF0YVsyXSA9IHsweDAwLCAweDAwfTsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiU2V0IGhvcml6b250YWwgZmxpcCB0byAlZCIsIHZhbCk7CisJUERFQlVHKERfVjRMMiwgIlNldCBob3Jpem9udGFsIGZsaXAgdG8gJWQiLCB2YWwpOwogCiAJLyogU2V0IHRoZSBjb3JyZWN0IHBhZ2UgbWFwICovCiAJZXJyID0gbXQ5bTExMV93cml0ZV9zZW5zb3Ioc2QsIE1UOU0xMTFfUEFHRV9NQVAsIGRhdGEsIDIpOwpAQCAtMTg4LDcgKzE4OCw3IEBACiAJICAgICAgKCh0bXAgJiAoMSA8PCAgOCkpICogMikgfAogCSAgICAgICAodG1wICYgMHg3Zik7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiUmVhZCBnYWluICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgZ2FpbiAlZCIsICp2YWwpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAKIAogCWRhdGFbMV0gPSAodG1wICYgMHhmZjAwKSA+PiA4OwogCWRhdGFbMF0gPSAodG1wICYgMHhmZik7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgInRtcD0lZCwgZGF0YVsxXT0lZCwgZGF0YVswXT0lZCIsIHRtcCwKKwlQREVCVUcoRF9WNEwyLCAidG1wPSVkLCBkYXRhWzFdPSVkLCBkYXRhWzBdPSVkIiwgdG1wLAogCSAgICAgICBkYXRhWzFdLCBkYXRhWzBdKTsKIAogCWVyciA9IG10OW0xMTFfd3JpdGVfc2Vuc29yKHNkLCBNVDlNMTExX1NDX0dMT0JBTF9HQUlOLApAQCAtMjU3LDcgKzI1Nyw3IEBACiAJZm9yIChpID0gMDsgaSA8IGxlbiAmJiAhZXJyOyBpKyspIHsKIAkJZXJyID0gbTU2MDJfcmVhZF9icmlkZ2Uoc2QsIE01NjAyX1hCX0kyQ19EQVRBLCAmKGkyY19kYXRhW2ldKSk7CiAKLQkJUERFQlVHKERCR19UUkFDRSwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKKwkJUERFQlVHKERfQ09ORiwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKIAkJICAgICAgICIweCV4IGNvbnRhaW5zIDB4JXggIiwgYWRkcmVzcywgKmkyY19kYXRhKTsKIAl9CiBvdXQ6CkBAIC0yOTAsNyArMjkwLDcgQEAKIAkJbWVtY3B5KHAsIHNlbnNvcl91cmJfc2tlbGV0b24gKyAxNiwgNCk7CiAJCXBbM10gPSBpMmNfZGF0YVtpXTsKIAkJcCArPSA0OwotCQlQREVCVUcoREJHX1RSQUNFLCAiV3JpdGluZyBzZW5zb3IgcmVnaXN0ZXIgMHgleCB3aXRoIDB4JXgiLAorCQlQREVCVUcoRF9DT05GLCAiV3JpdGluZyBzZW5zb3IgcmVnaXN0ZXIgMHgleCB3aXRoIDB4JXgiLAogCQkgICAgICAgYWRkcmVzcywgaTJjX2RhdGFbaV0pOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuaAppbmRleCA3OWE1ZDg4Li4zMTUyMDlkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogRHJpdmVyIGZvciB0aGUgbXQ5bTExMSBzZW5zb3IKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyZW4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmlrIEFuZHLDqW4KICAqIENvcHlyaWdodCAoQykgMjAwNyBJbHllcyBHb3V0YS4gQmFzZWQgb24gdGhlIG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QgPG01NjAyQHgzbmcuY29tLmJyPgogICoKQEAgLTgyLDcgKzgyLDYgQEAKIC8qIEtlcm5lbCBtb2R1bGUgcGFyYW1ldGVycyAqLwogZXh0ZXJuIGludCBmb3JjZV9zZW5zb3I7CiBleHRlcm4gaW50IGR1bXBfc2Vuc29yOwotZXh0ZXJuIHVuc2lnbmVkIGludCBtNTYwMl9kZWJ1ZzsKIAogaW50IG10OW0xMTFfcHJvYmUoc3RydWN0IHNkICpzZCk7CiBpbnQgbXQ5bTExMV9pbml0KHN0cnVjdCBzZCAqc2QpOwpAQCAtMTUyLDggKzE1MSw4IEBACiAJCQkuZGVmYXVsdF92YWx1ZSAgPSBERUZBVUxUX0dBSU4sCiAJCQkuZmxhZ3MgICAgICAgICAgPSBWNEwyX0NUUkxfRkxBR19TTElERVIKIAkJfSwKLQkJLnNldCA9IG10OW0xMTFfc2V0X2hmbGlwLAotCQkuZ2V0ID0gbXQ5bTExMV9nZXRfaGZsaXAKKwkJLnNldCA9IG10OW0xMTFfc2V0X2dhaW4sCisJCS5nZXQgPSBtdDltMTExX2dldF9nYWluCiAJfQogCX0sCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jCmluZGV4IDMxYzU4OTYuLjgzN2M3ZTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogRHJpdmVyIGZvciB0aGUgb3Y5NjUwIHNlbnNvcgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBFcmlrIEFuZHJlbgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcsOpbgogICogQ29weXJpZ2h0IChDKSAyMDA3IElseWVzIEdvdXRhLiBCYXNlZCBvbiB0aGUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0LgogICogQ29weXJpZ2h0IChDKSAyMDA1IG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdCA8bTU2MDJAeDNuZy5jb20uYnI+CiAgKgpAQCAtNDAsNyArNDAsNyBAQAogCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogCQllcnIgPSBtNTYwMl9yZWFkX2JyaWRnZShzZCwgTTU2MDJfWEJfSTJDX0RBVEEsICYoaTJjX2RhdGFbaV0pKTsKIAotCQlQREVCVUcoREJHX1RSQUNFLCAiUmVhZGluZyBzZW5zb3IgcmVnaXN0ZXIgIgorCQlQREVCVUcoRF9DT05GLCAiUmVhZGluZyBzZW5zb3IgcmVnaXN0ZXIgIgogCQkJCSIweCV4IGNvbnRhaW5pbmcgMHgleCAiLCBhZGRyZXNzLCAqaTJjX2RhdGEpOwogCX0KIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKQEAgLTcyLDcgKzcyLDcgQEAKIAkJbWVtY3B5KHAsIHNlbnNvcl91cmJfc2tlbGV0b24gKyAxNiwgNCk7CiAJCXBbM10gPSBpMmNfZGF0YVtpXTsKIAkJcCArPSA0OwotCQlQREVCVUcoREJHX1RSQUNFLCAiV3JpdGluZyBzZW5zb3IgcmVnaXN0ZXIgMHgleCB3aXRoIDB4JXgiLAorCQlQREVCVUcoRF9DT05GLCAiV3JpdGluZyBzZW5zb3IgcmVnaXN0ZXIgMHgleCB3aXRoIDB4JXgiLAogCQkgICAgICAgYWRkcmVzcywgaTJjX2RhdGFbaV0pOwogCX0KIApAQCAtMTk5LDcgKzE5OSw3IEBACiAJCWdvdG8gb3V0OwogCSp2YWwgfD0gKGkyY19kYXRhICYgMHgzZikgPDwgMTA7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiUmVhZCBleHBvc3VyZSAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIGV4cG9zdXJlICVkIiwgKnZhbCk7CiBvdXQ6CiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0yMTAsNyArMjEwLDcgQEAKIAl1OCBpMmNfZGF0YTsKIAlpbnQgZXJyOwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlNldCBleHBvc3VyZSB0byAlZCIsCisJUERFQlVHKERfVjRMMiwgIlNldCBleHBvc3VyZSB0byAlZCIsCiAJICAgICAgIHZhbCAmIDB4ZmZmZik7CiAKIAkvKiBUaGUgNiBNU0JzICovCkBAIC0yNDYsNyArMjQ2LDcgQEAKIAogCWVyciA9IG92OTY1MF9yZWFkX3NlbnNvcihzZCwgT1Y5NjUwX0dBSU4sICZpMmNfZGF0YSwgMSk7CiAJKnZhbCB8PSBpMmNfZGF0YTsKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiUmVhZCBnYWluICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgZ2FpbiAlZCIsICp2YWwpOwogCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAKIAllcnIgPSBvdjk2NTBfcmVhZF9zZW5zb3Ioc2QsIE9WOTY1MF9SRUQsICZpMmNfZGF0YSwgMSk7CiAJKnZhbCA9IGkyY19kYXRhOwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgcmVkIGdhaW4gJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCByZWQgZ2FpbiAlZCIsICp2YWwpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0yOTEsNyArMjkxLDcgQEAKIAl1OCBpMmNfZGF0YTsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiU2V0IHJlZCBnYWluIHRvICVkIiwKKwlQREVCVUcoRF9WNEwyLCAiU2V0IHJlZCBnYWluIHRvICVkIiwKIAkJCSAgICAgdmFsICYgMHhmZik7CiAKIAlpMmNfZGF0YSA9IHZhbCAmIDB4ZmY7CkBAIC0zMDksNyArMzA5LDcgQEAKIAllcnIgPSBvdjk2NTBfcmVhZF9zZW5zb3Ioc2QsIE9WOTY1MF9CTFVFLCAmaTJjX2RhdGEsIDEpOwogCSp2YWwgPSBpMmNfZGF0YTsKIAotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIGJsdWUgZ2FpbiAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIGJsdWUgZ2FpbiAlZCIsICp2YWwpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAKIAl1OCBpMmNfZGF0YTsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiU2V0IGJsdWUgZ2FpbiB0byAlZCIsCisJUERFQlVHKERfVjRMMiwgIlNldCBibHVlIGdhaW4gdG8gJWQiLAogCSAgICAgICB2YWwgJiAweGZmKTsKIAogCWkyY19kYXRhID0gdmFsICYgMHhmZjsKQEAgLTM0MCw3ICszNDAsNyBAQAogCQkqdmFsID0gKChpMmNfZGF0YSAmIE9WOTY1MF9IRkxJUCkgPj4gNSkgPyAwIDogMTsKIAllbHNlCiAJCSp2YWwgPSAoaTJjX2RhdGEgJiBPVjk2NTBfSEZMSVApID4+IDU7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgaG9yaXpvbnRhbCBmbGlwICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgaG9yaXpvbnRhbCBmbGlwICVkIiwgKnZhbCk7CiAKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KQEAgLTM1MSw3ICszNTEsNyBAQAogCXU4IGkyY19kYXRhOwogCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKIAotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJTZXQgaG9yaXpvbnRhbCBmbGlwIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGhvcml6b250YWwgZmxpcCB0byAlZCIsIHZhbCk7CiAJZXJyID0gb3Y5NjUwX3JlYWRfc2Vuc29yKHNkLCBPVjk2NTBfTVZGUCwgJmkyY19kYXRhLCAxKTsKIAlpZiAoZXJyIDwgMCkKIAkJZ290byBvdXQ7CkBAIC0zNzksNyArMzc5LDcgQEAKIAkJKnZhbCA9ICgoaTJjX2RhdGEgJiAweDEwKSA+PiA0KSA/IDAgOiAxOwogCWVsc2UKIAkJKnZhbCA9IChpMmNfZGF0YSAmIDB4MTApID4+IDQ7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgdmVydGljYWwgZmxpcCAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIHZlcnRpY2FsIGZsaXAgJWQiLCAqdmFsKTsKIAogCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOwogfQpAQCAtMzkwLDcgKzM5MCw3IEBACiAJdTggaTJjX2RhdGE7CiAJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlNldCB2ZXJ0aWNhbCBmbGlwIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IHZlcnRpY2FsIGZsaXAgdG8gJWQiLCB2YWwpOwogCWVyciA9IG92OTY1MF9yZWFkX3NlbnNvcihzZCwgT1Y5NjUwX01WRlAsICZpMmNfZGF0YSwgMSk7CiAJaWYgKGVyciA8IDApCiAJCWdvdG8gb3V0OwpAQCAtNDIwLDcgKzQyMCw3IEBACiAKIAllcnIgPSBvdjk2NTBfcmVhZF9zZW5zb3Ioc2QsIE9WOTY1MF9HQUlOLCAmaTJjX2RhdGEsIDEpOwogCSp2YWwgfD0gaTJjX2RhdGE7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgZ2FpbiAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIGdhaW4gJWQiLCAqdmFsKTsKIG91dDoKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KQEAgLTQzMSw3ICs0MzEsNyBAQAogCXU4IGkyY19kYXRhOwogCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKIAotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJTZXQgZ2FpbiB0byAlZCIsIHZhbCAmIDB4M2ZmKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGdhaW4gdG8gJWQiLCB2YWwgJiAweDNmZik7CiAKIAkvKiBSZWFkIHRoZSBPVjk2NTBfVlJFRiByZWdpc3RlciBmaXJzdCB0byBhdm9pZAogCQljb3JydXB0aW5nIHRoZSBWUkVGIGhpZ2ggYW5kIGxvdyBiaXRzICovCkBAIC00NjEsNyArNDYxLDcgQEAKIAogCWVyciA9IG92OTY1MF9yZWFkX3NlbnNvcihzZCwgT1Y5NjUwX0NPTTgsICZpMmNfZGF0YSwgMSk7CiAJKnZhbCA9IChpMmNfZGF0YSAmIE9WOTY1MF9BV0JfRU4pID4+IDE7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgYXV0byB3aGl0ZSBiYWxhbmNlICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgYXV0byB3aGl0ZSBiYWxhbmNlICVkIiwgKnZhbCk7CiAKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KQEAgLTQ3Miw3ICs0NzIsNyBAQAogCXU4IGkyY19kYXRhOwogCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKIAotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJTZXQgYXV0byB3aGl0ZSBiYWxhbmNlIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGF1dG8gd2hpdGUgYmFsYW5jZSB0byAlZCIsIHZhbCk7CiAJZXJyID0gb3Y5NjUwX3JlYWRfc2Vuc29yKHNkLCBPVjk2NTBfQ09NOCwgJmkyY19kYXRhLCAxKTsKIAlpZiAoZXJyIDwgMCkKIAkJZ290byBvdXQ7CkBAIC00OTEsNyArNDkxLDcgQEAKIAogCWVyciA9IG92OTY1MF9yZWFkX3NlbnNvcihzZCwgT1Y5NjUwX0NPTTgsICZpMmNfZGF0YSwgMSk7CiAJKnZhbCA9IChpMmNfZGF0YSAmIE9WOTY1MF9BR0NfRU4pID4+IDI7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgYXV0byBnYWluIGNvbnRyb2wgJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCBhdXRvIGdhaW4gY29udHJvbCAlZCIsICp2YWwpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC01MDIsNyArNTAyLDcgQEAKIAl1OCBpMmNfZGF0YTsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiU2V0IGF1dG8gZ2FpbiBjb250cm9sIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGF1dG8gZ2FpbiBjb250cm9sIHRvICVkIiwgdmFsKTsKIAllcnIgPSBvdjk2NTBfcmVhZF9zZW5zb3Ioc2QsIE9WOTY1MF9DT004LCAmaTJjX2RhdGEsIDEpOwogCWlmIChlcnIgPCAwKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX292OTY1MC5oCmluZGV4IDJmMjljYjAuLjA2NTYzMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9vdjk2NTAuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBEcml2ZXIgZm9yIHRoZSBvdjk2NTAgc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC0xMjEsNyArMTIxLDYgQEAKIC8qIEtlcm5lbCBtb2R1bGUgcGFyYW1ldGVycyAqLwogZXh0ZXJuIGludCBmb3JjZV9zZW5zb3I7CiBleHRlcm4gaW50IGR1bXBfc2Vuc29yOwotZXh0ZXJuIHVuc2lnbmVkIGludCBtNTYwMl9kZWJ1ZzsKIAogaW50IG92OTY1MF9wcm9iZShzdHJ1Y3Qgc2QgKnNkKTsKIGludCBvdjk2NTBfaW5pdChzdHJ1Y3Qgc2QgKnNkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jCmluZGV4IDA4YzAxNWIuLmQxN2FjNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBEcml2ZXIgZm9yIHRoZSBwbzEwMzAgc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC04Miw3ICs4Miw3IEBACiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAJCWVyciA9IG01NjAyX3JlYWRfYnJpZGdlKHNkLCBNNTYwMl9YQl9JMkNfREFUQSwgJihpMmNfZGF0YVtpXSkpOwogCi0JCVBERUJVRyhEQkdfVFJBQ0UsICJSZWFkaW5nIHNlbnNvciByZWdpc3RlciAiCisJCVBERUJVRyhEX0NPTkYsICJSZWFkaW5nIHNlbnNvciByZWdpc3RlciAiCiAJCQkJIjB4JXggY29udGFpbmluZyAweCV4ICIsIGFkZHJlc3MsICppMmNfZGF0YSk7CiAJfQogCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOwpAQCAtMTEyLDcgKzExMiw3IEBACiAJCW1lbWNweShwLCBzZW5zb3JfdXJiX3NrZWxldG9uICsgMTYsIDQpOwogCQlwWzNdID0gaTJjX2RhdGFbaV07CiAJCXAgKz0gNDsKLQkJUERFQlVHKERCR19UUkFDRSwgIldyaXRpbmcgc2Vuc29yIHJlZ2lzdGVyIDB4JXggd2l0aCAweCV4IiwKKwkJUERFQlVHKERfQ09ORiwgIldyaXRpbmcgc2Vuc29yIHJlZ2lzdGVyIDB4JXggd2l0aCAweCV4IiwKIAkJICAgICAgIGFkZHJlc3MsIGkyY19kYXRhW2ldKTsKIAl9CiAKQEAgLTE4NSw3ICsxODUsNyBAQAogCQkJCSAmaTJjX2RhdGEsIDEpOwogCSp2YWwgfD0gaTJjX2RhdGE7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiRXhwb3N1cmUgcmVhZCBhcyAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJFeHBvc3VyZSByZWFkIGFzICVkIiwgKnZhbCk7CiBvdXQ6CiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0xOTYsMTAgKzE5NiwxMCBAQAogCXU4IGkyY19kYXRhOwogCWludCBlcnI7CiAKLQlQREVCVUcoREJHX1Y0TDIsICJTZXQgZXhwb3N1cmUgdG8gJWQiLCB2YWwgJiAweGZmZmYpOworCVBERUJVRyhEX1Y0TDIsICJTZXQgZXhwb3N1cmUgdG8gJWQiLCB2YWwgJiAweGZmZmYpOwogCiAJaTJjX2RhdGEgPSAoKHZhbCAmIDB4ZmYwMCkgPj4gOCk7Ci0JUERFQlVHKERCR19WNEwyLCAiU2V0IGV4cG9zdXJlIHRvIGhpZ2ggYnl0ZSB0byAweCV4IiwKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGV4cG9zdXJlIHRvIGhpZ2ggYnl0ZSB0byAweCV4IiwKIAkgICAgICAgaTJjX2RhdGEpOwogCiAJZXJyID0gcG8xMDMwX3dyaXRlX3NlbnNvcihzZCwgUE8xMDMwX1JFR19JTlRFR0xJTkVTX0gsCkBAIC0yMDgsNyArMjA4LDcgQEAKIAkJZ290byBvdXQ7CiAKIAlpMmNfZGF0YSA9ICh2YWwgJiAweGZmKTsKLQlQREVCVUcoREJHX1Y0TDIsICJTZXQgZXhwb3N1cmUgdG8gbG93IGJ5dGUgdG8gMHgleCIsCisJUERFQlVHKERfVjRMMiwgIlNldCBleHBvc3VyZSB0byBsb3cgYnl0ZSB0byAweCV4IiwKIAkgICAgICAgaTJjX2RhdGEpOwogCWVyciA9IHBvMTAzMF93cml0ZV9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfSU5URUdMSU5FU19NLAogCQkJCSAgJmkyY19kYXRhLCAxKTsKQEAgLTIyNiw3ICsyMjYsNzEgQEAKIAllcnIgPSBwbzEwMzBfcmVhZF9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfR0xPQkFMR0FJTiwKIAkJCQkgJmkyY19kYXRhLCAxKTsKIAkqdmFsID0gaTJjX2RhdGE7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgZ2xvYmFsIGdhaW4gJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCBnbG9iYWwgZ2FpbiAlZCIsICp2YWwpOworCisJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7Cit9CisKK2ludCBwbzEwMzBfZ2V0X2hmbGlwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwgX19zMzIgKnZhbCkKK3sKKwlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CisJdTggaTJjX2RhdGE7CisJaW50IGVycjsKKworCWVyciA9IHBvMTAzMF9yZWFkX3NlbnNvcihzZCwgUE8xMDMwX1JFR19DT05UUk9MMiwKKwkJCQkgJmkyY19kYXRhLCAxKTsKKworCSp2YWwgPSAoaTJjX2RhdGEgPj4gNykgJiAweDAxIDsKKworCVBERUJVRyhEX1Y0TDIsICJSZWFkIGhmbGlwICVkIiwgKnZhbCk7CisKKwlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKK30KKworaW50IHBvMTAzMF9zZXRfaGZsaXAoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2LCBfX3MzMiB2YWwpCit7CisJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OworCXU4IGkyY19kYXRhOworCWludCBlcnI7CisKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGhmbGlwICVkIiwgdmFsKTsKKworCWkyY19kYXRhID0gKHZhbCAmIDB4MDEpIDw8IDc7CisKKwllcnIgPSBwbzEwMzBfd3JpdGVfc2Vuc29yKHNkLCBQTzEwMzBfUkVHX0NPTlRST0wyLAorCQkJCSAgJmkyY19kYXRhLCAxKTsKKworCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOworfQorCitpbnQgcG8xMDMwX2dldF92ZmxpcChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsIF9fczMyICp2YWwpCit7CisJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OworCXU4IGkyY19kYXRhOworCWludCBlcnI7CisKKwllcnIgPSBwbzEwMzBfcmVhZF9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfR0xPQkFMR0FJTiwKKwkJCQkgJmkyY19kYXRhLCAxKTsKKworCSp2YWwgPSAoaTJjX2RhdGEgPj4gNikgJiAweDAxOworCisJUERFQlVHKERfVjRMMiwgIlJlYWQgdmZsaXAgJWQiLCAqdmFsKTsKKworCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOworfQorCitpbnQgcG8xMDMwX3NldF92ZmxpcChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsIF9fczMyIHZhbCkKK3sKKwlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CisJdTggaTJjX2RhdGE7CisJaW50IGVycjsKKworCVBERUJVRyhEX1Y0TDIsICJTZXQgdmZsaXAgJWQiLCB2YWwpOworCisJaTJjX2RhdGEgPSAodmFsICYgMHgwMSkgPDwgNjsKKworCWVyciA9IHBvMTAzMF93cml0ZV9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfQ09OVFJPTDIsCisJCQkJICAmaTJjX2RhdGEsIDEpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0yMzgsNyArMzAyLDcgQEAKIAlpbnQgZXJyOwogCiAJaTJjX2RhdGEgPSB2YWwgJiAweGZmOwotCVBERUJVRyhEQkdfVjRMMiwgIlNldCBnbG9iYWwgZ2FpbiB0byAlZCIsIGkyY19kYXRhKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGdsb2JhbCBnYWluIHRvICVkIiwgaTJjX2RhdGEpOwogCWVyciA9IHBvMTAzMF93cml0ZV9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfR0xPQkFMR0FJTiwKIAkJCQkgICZpMmNfZGF0YSwgMSk7CiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CkBAIC0yNTMsNyArMzE3LDcgQEAKIAllcnIgPSBwbzEwMzBfcmVhZF9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfUkVEX0dBSU4sCiAJCQkJICZpMmNfZGF0YSwgMSk7CiAJKnZhbCA9IGkyY19kYXRhOwotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIHJlZCBnYWluICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgcmVkIGdhaW4gJWQiLCAqdmFsKTsKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KIApAQCAtMjY0LDcgKzMyOCw3IEBACiAJaW50IGVycjsKIAogCWkyY19kYXRhID0gdmFsICYgMHhmZjsKLQlQREVCVUcoREJHX1Y0TDIsICJTZXQgcmVkIGdhaW4gdG8gJWQiLCBpMmNfZGF0YSk7CisJUERFQlVHKERfVjRMMiwgIlNldCByZWQgZ2FpbiB0byAlZCIsIGkyY19kYXRhKTsKIAllcnIgPSBwbzEwMzBfd3JpdGVfc2Vuc29yKHNkLCBQTzEwMzBfUkVHX1JFRF9HQUlOLAogCQkJCSAgJmkyY19kYXRhLCAxKTsKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKQEAgLTI3OSw3ICszNDMsNyBAQAogCWVyciA9IHBvMTAzMF9yZWFkX3NlbnNvcihzZCwgUE8xMDMwX1JFR19CTFVFX0dBSU4sCiAJCQkJICZpMmNfZGF0YSwgMSk7CiAJKnZhbCA9IGkyY19kYXRhOwotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIGJsdWUgZ2FpbiAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIGJsdWUgZ2FpbiAlZCIsICp2YWwpOwogCiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0yOTAsNyArMzU0LDcgQEAKIAl1OCBpMmNfZGF0YTsKIAlpbnQgZXJyOwogCWkyY19kYXRhID0gdmFsICYgMHhmZjsKLQlQREVCVUcoREJHX1Y0TDIsICJTZXQgYmx1ZSBnYWluIHRvICVkIiwgaTJjX2RhdGEpOworCVBERUJVRyhEX1Y0TDIsICJTZXQgYmx1ZSBnYWluIHRvICVkIiwgaTJjX2RhdGEpOwogCWVyciA9IHBvMTAzMF93cml0ZV9zZW5zb3Ioc2QsIFBPMTAzMF9SRUdfQkxVRV9HQUlOLAogCQkJCSAgJmkyY19kYXRhLCAxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmgKaW5kZXggNjhmMzRjOS4uYTBiNzVmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5oCkBAIC0xLDggKzEsNyBAQAogLyoKICAqIERyaXZlciBmb3IgdGhlIHBvMTAzMCBzZW5zb3IuCi0gKiBUaGlzIGlzIHByb2JhYmx5IGEgcGl4ZWwgcGx1cyBzZW5zb3IgYnV0IHdlIGhhdmVuJ3QgaWRlbnRpZmllZCBpdCB5ZXQKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggRXJpayBBbmRyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwOCBFcmlrIEFuZHLDqW4KICAqIENvcHlyaWdodCAoYykgMjAwNyBJbHllcyBHb3V0YS4gQmFzZWQgb24gdGhlIG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdC4KICAqIENvcHlyaWdodCAoYykgMjAwNSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QgPG01NjAyQHgzbmcuY29tLmJyPgogICoKQEAgLTEwOSwxMCArMTA4LDEzIEBACiAjZGVmaW5lIFBPMTAzMF9SRUdfWUNPTlRSQVNUCQkweDc0CiAjZGVmaW5lIFBPMTAzMF9SRUdfWVNBVFVSQVRJT04JCTB4NzUKIAorI2RlZmluZSBQTzEwMzBfSEZMSVAJCQkoMSA8PCA3KQorI2RlZmluZSBQTzEwMzBfVkZMSVAJCQkoMSA8PCA2KQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNkZWZpbmUgUE8xMDMwX0dMT0JBTF9HQUlOX0RFRkFVTFQJMHgxMgotI2RlZmluZSBQTzEwMzBfRVhQT1NVUkVfREVGQVVMVAkJMHhmMGZmCisjZGVmaW5lIFBPMTAzMF9FWFBPU1VSRV9ERUZBVUxUCQkweDAwODUKICNkZWZpbmUgUE8xMDMwX0JMVUVfR0FJTl9ERUZBVUxUIAkweDQwCiAjZGVmaW5lIFBPMTAzMF9SRURfR0FJTl9ERUZBVUxUIAkweDQwCiAKQEAgLTEyMSw3ICsxMjMsNiBAQAogLyogS2VybmVsIG1vZHVsZSBwYXJhbWV0ZXJzICovCiBleHRlcm4gaW50IGZvcmNlX3NlbnNvcjsKIGV4dGVybiBpbnQgZHVtcF9zZW5zb3I7Ci1leHRlcm4gdW5zaWduZWQgaW50IG01NjAyX2RlYnVnOwogCiBpbnQgcG8xMDMwX3Byb2JlKHN0cnVjdCBzZCAqc2QpOwogaW50IHBvMTAzMF9pbml0KHN0cnVjdCBzZCAqc2QpOwpAQCAtMTQyLDYgKzE0MywxMCBAQAogaW50IHBvMTAzMF9zZXRfcmVkX2JhbGFuY2Uoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2LCBfX3MzMiB2YWwpOwogaW50IHBvMTAzMF9nZXRfYmx1ZV9iYWxhbmNlKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwgX19zMzIgKnZhbCk7CiBpbnQgcG8xMDMwX3NldF9ibHVlX2JhbGFuY2Uoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2LCBfX3MzMiB2YWwpOworaW50IHBvMTAzMF9nZXRfaGZsaXAoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2LCBfX3MzMiAqdmFsKTsKK2ludCBwbzEwMzBfc2V0X2hmbGlwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwgX19zMzIgdmFsKTsKK2ludCBwbzEwMzBfZ2V0X3ZmbGlwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwgX19zMzIgKnZhbCk7CitpbnQgcG8xMDMwX3NldF92ZmxpcChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsIF9fczMyIHZhbCk7CiAKIHN0YXRpYyBzdHJ1Y3QgbTU2MDJfc2Vuc29yIHBvMTAzMCA9IHsKIAkubmFtZSA9ICJQTzEwMzAiLApAQCAtMTUyLDcgKzE1Nyw3IEBACiAJLmluaXQgPSBwbzEwMzBfaW5pdCwKIAkucG93ZXJfZG93biA9IHBvMTAzMF9wb3dlcl9kb3duLAogCi0JLm5jdHJscyA9IDQsCisJLm5jdHJscyA9IDYsCiAJLmN0cmxzID0gewogCXsKIAkJewpAQCAtMTYwLDcgKzE2NSw3IEBACiAJCQkudHlwZSAJCT0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUiwKIAkJCS5uYW1lIAkJPSAiZ2FpbiIsCiAJCQkubWluaW11bSAJPSAweDAwLAotCQkJLm1heGltdW0gCT0gMHhmZiwKKwkJCS5tYXhpbXVtIAk9IDB4NGYsCiAJCQkuc3RlcCAJCT0gMHgxLAogCQkJLmRlZmF1bHRfdmFsdWUgCT0gUE8xMDMwX0dMT0JBTF9HQUlOX0RFRkFVTFQsCiAJCQkuZmxhZ3MgICAgICAgICAJPSBWNEwyX0NUUkxfRkxBR19TTElERVIKQEAgLTE3Myw3ICsxNzgsNyBAQAogCQkJLnR5cGUgCQk9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVIsCiAJCQkubmFtZSAJCT0gImV4cG9zdXJlIiwKIAkJCS5taW5pbXVtIAk9IDB4MDAsCi0JCQkubWF4aW11bSAJPSAweGZmZmYsCisJCQkubWF4aW11bSAJPSAweDAyZmYsCiAJCQkuc3RlcCAJCT0gMHgxLAogCQkJLmRlZmF1bHRfdmFsdWUgCT0gUE8xMDMwX0VYUE9TVVJFX0RFRkFVTFQsCiAJCQkuZmxhZ3MgICAgICAgICAJPSBWNEwyX0NUUkxfRkxBR19TTElERVIKQEAgLTIwNiw4ICsyMTEsMzMgQEAKIAkJfSwKIAkJLnNldCA9IHBvMTAzMF9zZXRfYmx1ZV9iYWxhbmNlLAogCQkuZ2V0ID0gcG8xMDMwX2dldF9ibHVlX2JhbGFuY2UKKwl9LCB7CisJCXsKKwkJCS5pZCAJCT0gVjRMMl9DSURfSEZMSVAsCisJCQkudHlwZSAJCT0gVjRMMl9DVFJMX1RZUEVfQk9PTEVBTiwKKwkJCS5uYW1lIAkJPSAiaG9yaXpvbnRhbCBmbGlwIiwKKwkJCS5taW5pbXVtIAk9IDAsCisJCQkubWF4aW11bSAJPSAxLAorCQkJLnN0ZXAgCQk9IDEsCisJCQkuZGVmYXVsdF92YWx1ZSAJPSAwLAorCQl9LAorCQkuc2V0ID0gcG8xMDMwX3NldF9oZmxpcCwKKwkJLmdldCA9IHBvMTAzMF9nZXRfaGZsaXAKKwl9LCB7CisJCXsKKwkJCS5pZCAJCT0gVjRMMl9DSURfVkZMSVAsCisJCQkudHlwZSAJCT0gVjRMMl9DVFJMX1RZUEVfQk9PTEVBTiwKKwkJCS5uYW1lIAkJPSAidmVydGljYWwgZmxpcCIsCisJCQkubWluaW11bSAJPSAwLAorCQkJLm1heGltdW0gCT0gMSwKKwkJCS5zdGVwIAkJPSAxLAorCQkJLmRlZmF1bHRfdmFsdWUgCT0gMCwKKwkJfSwKKwkJLnNldCA9IHBvMTAzMF9zZXRfdmZsaXAsCisJCS5nZXQgPSBwbzEwMzBfZ2V0X3ZmbGlwCiAJfQogCX0sCisKIAkubm1vZGVzID0gMSwKIAkubW9kZXMgPSB7CiAJewpAQCAtMzgxLDcgKzQxMSw3IEBACiAKIAkvKiBTZXQgdGhlIHkgd2luZG93IHRvIDEgKi8KIAl7U0VOU09SLCBQTzEwMzBfUkVHX1dJTkRPV1lfSCwgMHgwMH0sCi0Je1NFTlNPUiwgUE8xMDMwX1JFR19XSU5ET1dYX0wsIDB4MDF9LAorCXtTRU5TT1IsIFBPMTAzMF9SRUdfV0lORE9XWV9MLCAweDAxfSwKIAogCXtTRU5TT1IsIFBPMTAzMF9SRUdfV0lORE9XV0lEVEhfSCwgMHgwMn0sCiAJe1NFTlNPUiwgUE8xMDMwX1JFR19XSU5ET1dXSURUSF9MLCAweDg3fSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrNGFhLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3M1azRhYS5jCmluZGV4IDY4MjAyNTYuLjE0YjFlYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrNGFhLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9zNWs0YWEuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBEcml2ZXIgZm9yIHRoZSBzNWs0YWEgc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC0xMTcsNyArMTE3LDcgQEAKIAlmb3IgKGkgPSAwOyAoaSA8IGxlbikgJiAhZXJyOyBpKyspIHsKIAkJZXJyID0gbTU2MDJfcmVhZF9icmlkZ2Uoc2QsIE01NjAyX1hCX0kyQ19EQVRBLCAmKGkyY19kYXRhW2ldKSk7CiAKLQkJUERFQlVHKERCR19UUkFDRSwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKKwkJUERFQlVHKERfQ09ORiwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKIAkJCQkgICIweCV4IGNvbnRhaW5pbmcgMHgleCAiLCBhZGRyZXNzLCAqaTJjX2RhdGEpOwogCX0KIG91dDoKQEAgLTE1MCw3ICsxNTAsNyBAQAogCQltZW1jcHkocCwgc2Vuc29yX3VyYl9za2VsZXRvbiArIDE2LCA0KTsKIAkJcFszXSA9IGkyY19kYXRhW2ldOwogCQlwICs9IDQ7Ci0JCVBERUJVRyhEQkdfVFJBQ0UsICJXcml0aW5nIHNlbnNvciByZWdpc3RlciAweCV4IHdpdGggMHgleCIsCisJCVBERUJVRyhEX0NPTkYsICJXcml0aW5nIHNlbnNvciByZWdpc3RlciAweCV4IHdpdGggMHgleCIsCiAJCSAgICAgICBhZGRyZXNzLCBpMmNfZGF0YVtpXSk7CiAJfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkqdmFsID0gZGF0YSA8PCA4OwogCWVyciA9IHM1azRhYV9yZWFkX3NlbnNvcihzZCwgUzVLNEFBX0VYUE9TVVJFX0xPLCAmZGF0YSwgMSk7CiAJKnZhbCB8PSBkYXRhOwotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIGV4cG9zdXJlICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgZXhwb3N1cmUgJWQiLCAqdmFsKTsKIG91dDoKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKIH0KQEAgLTI1OSw3ICsyNTksNyBAQAogCXU4IGRhdGEgPSBTNUs0QUFfUEFHRV9NQVBfMjsKIAlpbnQgZXJyOwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlNldCBleHBvc3VyZSB0byAlZCIsIHZhbCk7CisJUERFQlVHKERfVjRMMiwgIlNldCBleHBvc3VyZSB0byAlZCIsIHZhbCk7CiAJZXJyID0gczVrNGFhX3dyaXRlX3NlbnNvcihzZCwgUzVLNEFBX1BBR0VfTUFQLCAmZGF0YSwgMSk7CiAJaWYgKGVyciA8IDApCiAJCWdvdG8gb3V0OwpAQCAtMjg1LDcgKzI4NSw3IEBACiAKIAllcnIgPSBzNWs0YWFfcmVhZF9zZW5zb3Ioc2QsIFM1SzRBQV9QQUdFX01BUCwgJmRhdGEsIDEpOwogCSp2YWwgPSAoZGF0YSAmIFM1SzRBQV9STV9WX0ZMSVApID4+IDc7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgdmVydGljYWwgZmxpcCAlZCIsICp2YWwpOworCVBERUJVRyhEX1Y0TDIsICJSZWFkIHZlcnRpY2FsIGZsaXAgJWQiLCAqdmFsKTsKIAogb3V0OgogCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOwpAQCAtMjk3LDcgKzI5Nyw3IEBACiAJdTggZGF0YSA9IFM1SzRBQV9QQUdFX01BUF8yOwogCWludCBlcnI7CiAKLQlQREVCVUcoREJHX1Y0TDJfQ0lELCAiU2V0IHZlcnRpY2FsIGZsaXAgdG8gJWQiLCB2YWwpOworCVBERUJVRyhEX1Y0TDIsICJTZXQgdmVydGljYWwgZmxpcCB0byAlZCIsIHZhbCk7CiAJZXJyID0gczVrNGFhX3dyaXRlX3NlbnNvcihzZCwgUzVLNEFBX1BBR0VfTUFQLCAmZGF0YSwgMSk7CiAJaWYgKGVyciA8IDApCiAJCWdvdG8gb3V0OwpAQCAtMzQxLDcgKzM0MSw3IEBACiAKIAllcnIgPSBzNWs0YWFfcmVhZF9zZW5zb3Ioc2QsIFM1SzRBQV9QQUdFX01BUCwgJmRhdGEsIDEpOwogCSp2YWwgPSAoZGF0YSAmIFM1SzRBQV9STV9IX0ZMSVApID4+IDY7Ci0JUERFQlVHKERCR19WNEwyX0NJRCwgIlJlYWQgaG9yaXpvbnRhbCBmbGlwICVkIiwgKnZhbCk7CisJUERFQlVHKERfVjRMMiwgIlJlYWQgaG9yaXpvbnRhbCBmbGlwICVkIiwgKnZhbCk7CiBvdXQ6CiAJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7CiB9CkBAIC0zNTIsNyArMzUyLDcgQEAKIAl1OCBkYXRhID0gUzVLNEFBX1BBR0VfTUFQXzI7CiAJaW50IGVycjsKIAotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJTZXQgaG9yaXpvbnRhbCBmbGlwIHRvICVkIiwKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGhvcml6b250YWwgZmxpcCB0byAlZCIsCiAJICAgICAgIHZhbCk7CiAJZXJyID0gczVrNGFhX3dyaXRlX3NlbnNvcihzZCwgUzVLNEFBX1BBR0VfTUFQLCAmZGF0YSwgMSk7CiAJaWYgKGVyciA8IDApCkBAIC0zOTcsNyArMzk3LDcgQEAKIAogCWVyciA9IHM1azRhYV9yZWFkX3NlbnNvcihzZCwgUzVLNEFBX0dBSU5fMiwgJmRhdGEsIDEpOwogCSp2YWwgPSBkYXRhOwotCVBERUJVRyhEQkdfVjRMMl9DSUQsICJSZWFkIGdhaW4gJWQiLCAqdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiUmVhZCBnYWluICVkIiwgKnZhbCk7CiAKIG91dDoKIAlyZXR1cm4gKGVyciA8IDApID8gZXJyIDogMDsKQEAgLTQwOSw3ICs0MDksNyBAQAogCXU4IGRhdGEgPSBTNUs0QUFfUEFHRV9NQVBfMjsKIAlpbnQgZXJyOwogCi0JUERFQlVHKERCR19WNEwyX0NJRCwgIlNldCBnYWluIHRvICVkIiwgdmFsKTsKKwlQREVCVUcoRF9WNEwyLCAiU2V0IGdhaW4gdG8gJWQiLCB2YWwpOwogCWVyciA9IHM1azRhYV93cml0ZV9zZW5zb3Ioc2QsIFM1SzRBQV9QQUdFX01BUCwgJmRhdGEsIDEpOwogCWlmIChlcnIgPCAwKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrNGFhLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3M1azRhYS5oCmluZGV4IGJiN2Y3ZTMuLmVhZWY2NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrNGFhLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9zNWs0YWEuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBEcml2ZXIgZm9yIHRoZSBzNWs0YWEgc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC02Myw3ICs2Myw2IEBACiAvKiBLZXJuZWwgbW9kdWxlIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBpbnQgZm9yY2Vfc2Vuc29yOwogZXh0ZXJuIGludCBkdW1wX3NlbnNvcjsKLWV4dGVybiB1bnNpZ25lZCBpbnQgbTU2MDJfZGVidWc7CiAKIGludCBzNWs0YWFfcHJvYmUoc3RydWN0IHNkICpzZCk7CiBpbnQgczVrNGFhX2luaXQoc3RydWN0IHNkICpzZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3M1azgzYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9zNWs4M2EuYwppbmRleCBiNGIzM2MyLi44OTg4YTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3M1azgzYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrODNhLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogRHJpdmVyIGZvciB0aGUgczVrODNhIHNlbnNvcgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBFcmlrIEFuZHJlbgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcsOpbgogICogQ29weXJpZ2h0IChDKSAyMDA3IElseWVzIEdvdXRhLiBCYXNlZCBvbiB0aGUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0LgogICogQ29weXJpZ2h0IChDKSAyMDA1IG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdCA8bTU2MDJAeDNuZy5jb20uYnI+CiAgKgpAQCAtMTAxLDcgKzEwMSw3IEBACiAJZm9yIChpID0gMDsgaSA8IGxlbiAmJiAhbGVuOyBpKyspIHsKIAkJZXJyID0gbTU2MDJfcmVhZF9icmlkZ2Uoc2QsIE01NjAyX1hCX0kyQ19EQVRBLCAmKGkyY19kYXRhW2ldKSk7CiAKLQkJUERFQlVHKERCR19UUkFDRSwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKKwkJUERFQlVHKERfQ09ORiwgIlJlYWRpbmcgc2Vuc29yIHJlZ2lzdGVyICIKIAkJCQkgICIweCV4IGNvbnRhaW5pbmcgMHgleCAiLCBhZGRyZXNzLCAqaTJjX2RhdGEpOwogCX0KIApAQCAtMTM1LDcgKzEzNSw3IEBACiAJCW1lbWNweShwLCBzZW5zb3JfdXJiX3NrZWxldG9uICsgMTYsIDQpOwogCQlwWzNdID0gaTJjX2RhdGFbaV07CiAJCXAgKz0gNDsKLQkJUERFQlVHKERCR19UUkFDRSwgIldyaXRpbmcgc2Vuc29yIHJlZ2lzdGVyIDB4JXggd2l0aCAweCV4IiwKKwkJUERFQlVHKERfQ09ORiwgIldyaXRpbmcgc2Vuc29yIHJlZ2lzdGVyIDB4JXggd2l0aCAweCV4IiwKIAkJICAgICAgIGFkZHJlc3MsIGkyY19kYXRhW2ldKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrODNhLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3M1azgzYS5oCmluZGV4IDgzMzcwOGUuLmVlM2VlOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfczVrODNhLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9zNWs4M2EuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBEcml2ZXIgZm9yIHRoZSBzNWs4M2Egc2Vuc29yCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcmVuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpayBBbmRyw6luCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSWx5ZXMgR291dGEuIEJhc2VkIG9uIHRoZSBtNTYwM3ggTGludXggRHJpdmVyIFByb2plY3QuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0IDxtNTYwMkB4M25nLmNvbS5icj4KICAqCkBAIC00MSw4ICs0MSw2IEBACiAvKiBLZXJuZWwgbW9kdWxlIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBpbnQgZm9yY2Vfc2Vuc29yOwogZXh0ZXJuIGludCBkdW1wX3NlbnNvcjsKLWV4dGVybiB1bnNpZ25lZCBpbnQgbTU2MDJfZGVidWc7Ci0KIAogaW50IHM1azgzYV9wcm9iZShzdHJ1Y3Qgc2QgKnNkKTsKIGludCBzNWs4M2FfaW5pdChzdHJ1Y3Qgc2QgKnNkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfc2Vuc29yLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL201NjAyL201NjAyX3NlbnNvci5oCmluZGV4IDkzMGZjYWEuLjYwYzlhNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbTU2MDIvbTU2MDJfc2Vuc29yLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tNTYwMi9tNTYwMl9zZW5zb3IuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBVU0IgRHJpdmVyIGZvciBBTGkgbTU2MDIgYmFzZWQgd2ViY2FtcwogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBFcmlrIEFuZHJlbgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWsgQW5kcsOpbgogICogQ29weXJpZ2h0IChDKSAyMDA3IElseWVzIEdvdXRhLiBCYXNlZCBvbiB0aGUgbTU2MDN4IExpbnV4IERyaXZlciBQcm9qZWN0LgogICogQ29weXJpZ2h0IChDKSAyMDA1IG01NjAzeCBMaW51eCBEcml2ZXIgUHJvamVjdCA8bTU2MDJAeDNuZy5jb20uYnI+CiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS90NjEzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Q2MTMuYwppbmRleCBiNTYxZjdjLi5lYWMyNDVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Q2MTMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Q2MTMuYwpAQCAtNTAsNyArNTAsNyBAQAogCiAJX191OCBzZW5zb3I7CiAjZGVmaW5lIFNFTlNPUl9UQVM1MTMwQSAwCi0jZGVmaW5lIFNFTlNPUl9PVEhFUiAxCisjZGVmaW5lIFNFTlNPUl9PTTY4MDIgMQogfTsKIAogLyogVjRMMiBjb250cm9scyBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLwpAQCAtMTg4LDcgKzE4OCw3IEBACiAJICAubWluaW11bSA9IDAsCiAJICAubWF4aW11bSA9IDEsCiAJICAuc3RlcCA9IDEsCi0JICAuZGVmYXVsdF92YWx1ZSA9IDEsCisJICAuZGVmYXVsdF92YWx1ZSA9IDAsCiAJICB9LAogCSAuc2V0ID0gc2Rfc2V0d2hpdGViYWxhbmNlLAogCSAuZ2V0ID0gc2RfZ2V0d2hpdGViYWxhbmNlCkBAIC0yNjEsNiArMjYxLDU5IEBACiAJCS5wcml2ID0gMH0sCiB9OwogCisvKiBzZW5zb3Igc3BlY2lmaWMgZGF0YSAqLworc3RydWN0IGFkZGl0aW9uYWxfc2Vuc29yX2RhdGEgeworCWNvbnN0IF9fdTggZGF0YTFbMjBdOworCWNvbnN0IF9fdTggZGF0YTJbMThdOworCWNvbnN0IF9fdTggZGF0YTNbMThdOworCWNvbnN0IF9fdTggZGF0YTRbNF07CisJY29uc3QgX191OCBkYXRhNVs2XTsKKwljb25zdCBfX3U4IHN0cmVhbVs0XTsKK307CisKK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgYWRkaXRpb25hbF9zZW5zb3JfZGF0YSBzZW5zb3JfZGF0YVtdID0geworICAgIHsJCQkJLyogVEFTNTEzMEEgKi8KKwkuZGF0YTEgPQorCQl7MHhkMCwgMHhiYiwgMHhkMSwgMHgyOCwgMHhkMiwgMHgxMCwgMHhkMywgMHgxMCwKKwkJIDB4ZDQsIDB4YmIsIDB4ZDUsIDB4MjgsIDB4ZDYsIDB4MWUsIDB4ZDcsIDB4MjcsCisJCSAweGQ4LCAweGM4LCAweGQ5LCAweGZjfSwKKwkuZGF0YTIgPQorCQl7MHhlMCwgMHg2MCwgMHhlMSwgMHhhOCwgMHhlMiwgMHhlMCwgMHhlMywgMHg2MCwKKwkJIDB4ZTQsIDB4YTgsIDB4ZTUsIDB4ZTAsIDB4ZTYsIDB4NjAsIDB4ZTcsIDB4YTgsCisJCSAweGU4LCAweGUwfSwKKwkuZGF0YTMgPQorCQl7MHhjNywgMHg2MCwgMHhjOCwgMHhhOCwgMHhjOSwgMHhlMCwgMHhjYSwgMHg2MCwKKwkJIDB4Y2IsIDB4YTgsIDB4Y2MsIDB4ZTAsIDB4Y2QsIDB4NjAsIDB4Y2UsIDB4YTgsCisJCSAweGNmLCAweGUwfSwKKwkuZGF0YTQgPQkvKiBGcmVxICg1MC82MEh6KS4gU3BsaXR0ZWQgZm9yIHRlc3QgcHVycG9zZSAqLworCQl7MHg2NiwgMHgwMCwgMHhhOCwgMHhlOH0sCisJLmRhdGE1ID0KKwkJezB4MGMsIDB4MDMsIDB4YWIsIDB4MTAsIDB4ODEsIDB4MjB9LAorCS5zdHJlYW0gPQorCQl7MHgwYiwgMHgwNCwgMHgwYSwgMHg0MH0sCisgICAgfSwKKyAgICB7CQkJCS8qIE9NNjgwMiAqLworCS5kYXRhMSA9CisJCXsweGQwLCAweGMyLCAweGQxLCAweDI4LCAweGQyLCAweDBmLCAweGQzLCAweDIyLAorCQkgMHhkNCwgMHhjZCwgMHhkNSwgMHgyNywgMHhkNiwgMHgyYywgMHhkNywgMHgwNiwKKwkJIDB4ZDgsIDB4YjMsIDB4ZDksIDB4ZmN9LAorCS5kYXRhMiA9CisJCXsweGUwLCAweDgwLCAweGUxLCAweGZmLCAweGUyLCAweGZmLCAweGUzLCAweDgwLAorCQkgMHhlNCwgMHhmZiwgMHhlNSwgMHhmZiwgMHhlNiwgMHg4MCwgMHhlNywgMHhmZiwKKwkJIDB4ZTgsIDB4ZmZ9LAorCS5kYXRhMyA9CisJCXsweGM3LCAweDgwLCAweGM4LCAweGZmLCAweGM5LCAweGZmLCAweGNhLCAweDgwLAorCQkgMHhjYiwgMHhmZiwgMHhjYywgMHhmZiwgMHhjZCwgMHg4MCwgMHhjZSwgMHhmZiwKKwkJIDB4Y2YsIDB4ZmZ9LAorCS5kYXRhNCA9CS8qRnJlcSAoNTAvNjBIeikuIFNwbGl0dGVkIGZvciB0ZXN0IHB1cnBvc2UgKi8KKwkJezB4NjYsIDB4Y2EsIDB4YTgsIDB4ZjAgfSwKKwkuZGF0YTUgPQkvKiB0aGlzIGNvdWxkIGJlIHJlbW92ZWQgbGF0ZXIgKi8KKwkJezB4MGMsIDB4MDMsIDB4YWIsIDB4MTMsIDB4ODEsIDB4MjN9LAorCS5zdHJlYW0gPQorCQl7MHgwYiwgMHgwNCwgMHgwYSwgMHg3OH0sCisgICAgfQorfTsKKwogI2RlZmluZSBNQVhfRUZGRUNUUyA3CiAvKiBlYXNpbHkgZG9uZSBieSBzb2Z0LCB0aGlzIHRhYmxlIGNvdWxkIGJlIHJlbW92ZWQsCiAgKiBpIGtlZXAgaXQgaGVyZSBqdXN0IGluIGNhc2UgKi8KQEAgLTM2NSw2ICs0MTgsOCBAQAogCXt9LAogfTsKIAorc3RhdGljIF9fdTggc2Vuc29yX3Jlc2V0W10gPSB7MHg2MSwgMHg2OCwgMHg2MiwgMHhmZiwgMHg2MCwgMHgwN307CisKIC8qIHJlYWQgMSBieXRlICovCiBzdGF0aWMgaW50IHJlZ19yKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldiwKIAkJICAgX191MTYgaW5kZXgpCkBAIC0zODUsMTIgKzQ0MCwxMiBAQAogCXVzYl9jb250cm9sX21zZyhnc3BjYV9kZXYtPmRldiwKIAkJCXVzYl9zbmRjdHJscGlwZShnc3BjYV9kZXYtPmRldiwgMCksCiAJCQkwLAotCQkJVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfSU5URVJGQUNFLAorCQkJVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfREVWSUNFLAogCQkJMCwgaW5kZXgsCiAJCQlOVUxMLCAwLCA1MDApOwogfQogCi1zdGF0aWMgdm9pZCBpMmNfdyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsCitzdGF0aWMgdm9pZCByZWdfd19idWYoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2LAogCQkgIGNvbnN0IF9fdTggKmJ1ZmZlciwgX191MTYgbGVuKQogewogCWlmIChsZW4gPD0gVVNCX0JVRl9TWikgewpAQCAtMzk4LDcgKzQ1Myw3IEBACiAJCXVzYl9jb250cm9sX21zZyhnc3BjYV9kZXYtPmRldiwKIAkJCQl1c2Jfc25kY3RybHBpcGUoZ3NwY2FfZGV2LT5kZXYsIDApLAogCQkJCTAsCi0JCQkgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCQkgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsCiAJCQkJMHgwMSwgMCwKIAkJCQlnc3BjYV9kZXYtPnVzYl9idWYsIGxlbiwgNTAwKTsKIAl9IGVsc2UgewpAQCAtNDA5LDE0ICs0NjQsMTUgQEAKIAkJdXNiX2NvbnRyb2xfbXNnKGdzcGNhX2Rldi0+ZGV2LAogCQkJCXVzYl9zbmRjdHJscGlwZShnc3BjYV9kZXYtPmRldiwgMCksCiAJCQkJMCwKLQkJCSAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKKwkJCSAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0RFVklDRSwKIAkJCQkweDAxLCAwLAogCQkJCXRtcGJ1ZiwgbGVuLCA1MDApOwogCQlrZnJlZSh0bXBidWYpOwogCX0KIH0KIAotc3RhdGljIHZvaWQgb3RoZXJfc2Vuc29yX2luaXQoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQorLyogUmVwb3J0ZWQgYXMgT002ODAyKi8KK3N0YXRpYyB2b2lkIG9tNjgwMl9zZW5zb3JfaW5pdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCiB7CiAJaW50IGk7CiAJY29uc3QgX191OCAqcDsKQEAgLTQzNiwxOSArNDkyLDMyIEBACiAJCTB4OTAsIDB4MjQsCiAJCTB4OTEsIDB4YjIsCiAJCTB4ODIsIDB4MzIsCi0JCTB4ZmQsIDB4MDAsCi0JCTB4ZmQsIDB4MDEsCiAJCTB4ZmQsIDB4NDEsCiAJCTB4MDAJCQkvKiB0YWJsZSBlbmQgKi8KIAl9OwogCisJcmVnX3dfYnVmKGdzcGNhX2Rldiwgc2Vuc29yX3Jlc2V0LCBzaXplb2Ygc2Vuc29yX3Jlc2V0KTsKKwltc2xlZXAoNSk7CisJaSA9IDQ7CisJd2hpbGUgKC0taSA8IDApIHsKKwkJYnl0ZSA9IHJlZ19yKGdzcGNhX2RldiwgMHgwMDYwKTsKKwkJaWYgKCEoYnl0ZSAmIDB4MDEpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgxMDApOworCX0KKwlieXRlID0gcmVnX3IoZ3NwY2FfZGV2LCAweDAwNjMpOworCWlmIChieXRlICE9IDB4MTcpIHsKKwkJZXJyKCJCYWQgc2Vuc29yIHJlc2V0ICUwMngiLCBieXRlKTsKKwkJLyogY29udGludWU/ICovCisJfQorCiAJcCA9IHNlbnNvcl9pbml0OwogCXdoaWxlICgqcCAhPSAwKSB7CiAJCXZhbFsxXSA9ICpwKys7CiAJCXZhbFszXSA9ICpwKys7CiAJCWlmICgqcCA9PSAwKQogCQkJcmVnX3coZ3NwY2FfZGV2LCAweDNjODApOwotCQlpMmNfdyhnc3BjYV9kZXYsIHZhbCwgc2l6ZW9mIHZhbCk7CisJCXJlZ193X2J1Zihnc3BjYV9kZXYsIHZhbCwgc2l6ZW9mIHZhbCk7CiAJCWkgPSA0OwogCQl3aGlsZSAoLS1pID49IDApIHsKIAkJCW1zbGVlcCgxNSk7CkBAIC00NTcsNyArNTI2LDggQEAKIAkJCQlicmVhazsKIAkJfQogCX0KLQkJCXJlZ193KGdzcGNhX2RldiwgMHgzYzgwKTsKKwltc2xlZXAoMTUpOworCXJlZ193KGdzcGNhX2RldiwgMHgzYzgwKTsKIH0KIAogLyogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgdGltZSAqLwpAQCAtNDg1LDEyICs1NTUsNzUgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgc2V0YnJpZ2h0bmVzcyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCit7CisJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OworCXVuc2lnbmVkIGludCBicmlnaHRuZXNzOworCV9fdTggc2V0Nls0XSA9IHsgMHg4ZiwgMHgyNCwgMHhjMywgMHgwMCB9OworCisJYnJpZ2h0bmVzcyA9IHNkLT5icmlnaHRuZXNzOworCWlmIChicmlnaHRuZXNzIDwgNykgeworCQlzZXQ2WzFdID0gMHgyNjsKKwkJc2V0NlszXSA9IDB4NzAgLSBicmlnaHRuZXNzICogMHgxMDsKKwl9IGVsc2UgeworCQlzZXQ2WzNdID0gMHgwMCArICgoYnJpZ2h0bmVzcyAtIDcpICogMHgxMCk7CisJfQorCisJcmVnX3dfYnVmKGdzcGNhX2Rldiwgc2V0Niwgc2l6ZW9mIHNldDYpOworfQorCitzdGF0aWMgdm9pZCBzZXRjb250cmFzdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCit7CisJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OworCXVuc2lnbmVkIGludCBjb250cmFzdCA9IHNkLT5jb250cmFzdDsKKwlfX3UxNiByZWdfdG9fd3JpdGU7CisKKwlpZiAoY29udHJhc3QgPCA3KQorCQlyZWdfdG9fd3JpdGUgPSAweDhlYTkgLSBjb250cmFzdCAqIDB4MjAwOworCWVsc2UKKwkJcmVnX3RvX3dyaXRlID0gMHgwMGE5ICsgKGNvbnRyYXN0IC0gNykgKiAweDIwMDsKKworCXJlZ193KGdzcGNhX2RldiwgcmVnX3RvX3dyaXRlKTsKK30KKworc3RhdGljIHZvaWQgc2V0Y29sb3JzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKK3sKKwlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CisJX191MTYgcmVnX3RvX3dyaXRlOworCisJcmVnX3RvX3dyaXRlID0gMHg4MGJiICsgc2QtPmNvbG9ycyAqIDB4MTAwOwkvKiB3YXMgMHhjMCAqLworCXJlZ193KGdzcGNhX2RldiwgcmVnX3RvX3dyaXRlKTsKK30KKwogc3RhdGljIHZvaWQgc2V0Z2FtbWEoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQogewogCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKIAogCVBERUJVRyhEX0NPTkYsICJHYW1tYTogJWQiLCBzZC0+Z2FtbWEpOwotCWkyY193KGdzcGNhX2RldiwgZ2FtbWFfdGFibGVbc2QtPmdhbW1hXSwgc2l6ZW9mIGdhbW1hX3RhYmxlWzBdKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBnYW1tYV90YWJsZVtzZC0+Z2FtbWFdLCBzaXplb2YgZ2FtbWFfdGFibGVbMF0pOworfQorCitzdGF0aWMgdm9pZCBzZXR3aGl0ZWJhbGFuY2Uoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQoreworCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKKworCV9fdTggd2hpdGVfYmFsYW5jZVs4XSA9CisJCXsweDg3LCAweDIwLCAweDg4LCAweDIwLCAweDg5LCAweDIwLCAweDgwLCAweDM4fTsKKworCWlmIChzZC0+d2hpdGViYWxhbmNlKQorCQl3aGl0ZV9iYWxhbmNlWzddID0gMHgzYzsKKworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHdoaXRlX2JhbGFuY2UsIHNpemVvZiB3aGl0ZV9iYWxhbmNlKTsKK30KKworc3RhdGljIHZvaWQgc2V0c2hhcnBuZXNzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKK3sKKwlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CisJX191MTYgcmVnX3RvX3dyaXRlOworCisJcmVnX3RvX3dyaXRlID0gMHgwYWE2ICsgMHgxMDAwICogc2QtPnNoYXJwbmVzczsKKworCXJlZ193KGdzcGNhX2RldiwgcmVnX3RvX3dyaXRlKTsKIH0KIAogLyogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgcHJvYmUgYW5kIHJlc3VtZSB0aW1lICovCkBAIC01MTEsOCArNjQ0LDYgQEAKIAkJCXsweDA4LCAweDAzLCAweDA5LCAweDAzLCAweDEyLCAweDA0fTsKIAlzdGF0aWMgY29uc3QgX191OCBuMltdID0KIAkJCXsweDA4LCAweDAwfTsKLQlzdGF0aWMgY29uc3QgX191OCBuc2V0W10gPQotCQkJeyAweDYxLCAweDY4LCAweDYyLCAweGZmLCAweDYwLCAweDA3IH07CiAJc3RhdGljIGNvbnN0IF9fdTggbjNbXSA9CiAJCQl7MHg2MSwgMHg2OCwgMHg2NSwgMHgwYSwgMHg2MCwgMHgwNH07CiAJc3RhdGljIGNvbnN0IF9fdTggbjRbXSA9CkBAIC01MjUsNTEgKzY1NiwyOSBAQAogCQkgMHg2NSwgMHgwYSwgMHhiYiwgMHg4NiwgMHhhZiwgMHg1OCwgMHhiMCwgMHg2OCwKIAkJIDB4ODcsIDB4NDAsIDB4ODksIDB4MmIsIDB4OGQsIDB4ZmYsIDB4ODMsIDB4NDAsCiAJCSAweGFjLCAweDg0LCAweGFkLCAweDg2LCAweGFmLCAweDQ2fTsKLQlzdGF0aWMgY29uc3QgX191OCBuc2V0NFtdID0gewotCQkweGUwLCAweDYwLCAweGUxLCAweGE4LCAweGUyLCAweGUwLCAweGUzLCAweDYwLCAweGU0LCAweGE4LAotCQkweGU1LCAweGUwLCAweGU2LCAweDYwLCAweGU3LCAweGE4LAotCQkweGU4LCAweGUwCi0JfTsKLQkvKiBvam8gcHVlZGUgc2VyIDB4ZTYgZW4gdmV6IGRlIDB4ZTkgKi8KLQlzdGF0aWMgY29uc3QgX191OCBuc2V0MltdID0gewotCQkweGQwLCAweGJiLCAweGQxLCAweDI4LCAweGQyLCAweDEwLCAweGQzLCAweDEwLCAweGQ0LCAweGJiLAotCQkweGQ1LCAweDI4LCAweGQ2LCAweDFlLCAweGQ3LCAweDI3LAotCQkweGQ4LCAweGM4LCAweGQ5LCAweGZjCi0JfTsKLQlzdGF0aWMgY29uc3QgX191OCBtaXNzaW5nW10gPQotCQl7IDB4ODcsIDB4MjAsIDB4ODgsIDB4MjAsIDB4ODksIDB4MjAsIDB4ODAsIDB4MzggfTsKLQlzdGF0aWMgY29uc3QgX191OCBuc2V0M1tdID0gewotCQkweGM3LCAweDYwLCAweGM4LCAweGE4LCAweGM5LCAweGUwLCAweGNhLCAweDYwLCAweGNiLCAweGE4LAotCQkweGNjLCAweGUwLCAweGNkLCAweDYwLCAweGNlLCAweGE4LAotCQkweGNmLCAweGUwCi0JfTsKLQlzdGF0aWMgY29uc3QgX191OCBuc2V0NVtdID0KLQkJCXsgMHg4ZiwgMHgyNCwgMHhjMywgMHgwMCB9OwkvKiBicmlnaHQgKi8KLQlzdGF0aWMgY29uc3QgX191OCBuc2V0N1s0XSA9Ci0JCQl7IDB4NjYsIDB4Y2EsIDB4YTgsIDB4ZjggfTsJLyogNTAvNjAgSHogKi8KIAlzdGF0aWMgY29uc3QgX191OCBuc2V0OVs0XSA9CiAJCQl7IDB4MGIsIDB4MDQsIDB4MGEsIDB4NzggfTsKIAlzdGF0aWMgY29uc3QgX191OCBuc2V0OFs2XSA9CiAJCQl7IDB4YTgsIDB4ZjAsIDB4YzYsIDB4ODgsIDB4YzAsIDB4MDAgfTsKLQlzdGF0aWMgY29uc3QgX191OCBuc2V0MTBbNl0gPQotCQkJeyAweDBjLCAweDAzLCAweGFiLCAweDEwLCAweDgxLCAweDIwIH07CiAKIAlieXRlID0gcmVnX3IoZ3NwY2FfZGV2LCAweDA2KTsKIAl0ZXN0X2J5dGUgPSByZWdfcihnc3BjYV9kZXYsIDB4MDcpOwogCWlmIChieXRlID09IDB4MDggJiYgdGVzdF9ieXRlID09IDB4MDcpIHsKLQkJUERFQlVHKERfQ09ORiwgIm90aGVyIHNlbnNvciIpOwotCQlzZC0+c2Vuc29yID0gU0VOU09SX09USEVSOworCQlQREVCVUcoRF9DT05GLCAic2Vuc29yIG9tNjgwMiIpOworCQlzZC0+c2Vuc29yID0gU0VOU09SX09NNjgwMjsKKwl9IGVsc2UgaWYgKGJ5dGUgPT0gMHgwOCAmJiB0ZXN0X2J5dGUgPT0gMHgwMSkgeworCQlQREVCVUcoRF9DT05GLCAic2Vuc29yIHRhczUxMzBhIik7CisJCXNkLT5zZW5zb3IgPSBTRU5TT1JfVEFTNTEzMEE7CiAJfSBlbHNlIHsKLQkJUERFQlVHKERfQ09ORiwgInNlbnNvciAlMDJ4ICUwMngiLCBieXRlLCB0ZXN0X2J5dGUpOworCQlQREVCVUcoRF9DT05GLCAidW5rbm93biBzZW5zb3IgJTAyeCAlMDJ4IiwgYnl0ZSwgdGVzdF9ieXRlKTsKIAkJc2QtPnNlbnNvciA9IFNFTlNPUl9UQVM1MTMwQTsKIAl9CiAKLQlpMmNfdyhnc3BjYV9kZXYsIG4xLCBzaXplb2YgbjEpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIG4xLCBzaXplb2YgbjEpOwogCXRlc3RfYnl0ZSA9IDA7CiAJaSA9IDU7CiAJd2hpbGUgKC0taSA+PSAwKSB7Ci0JCWkyY193KGdzcGNhX2RldiwgbnNldCwgc2l6ZW9mIG5zZXQpOwotCQltc2xlZXAoNSk7CisJCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9yZXNldCwgc2l6ZW9mIHNlbnNvcl9yZXNldCk7CiAJCXRlc3RfYnl0ZSA9IHJlZ19yKGdzcGNhX2RldiwgMHgwMDYzKTsKIAkJbXNsZWVwKDEwMCk7CiAJCWlmICh0ZXN0X2J5dGUgPT0gMHgxNykKQEAgLTU4MCw3ICs2ODksNyBAQAogLyoJCXJldHVybiAtRUlPOyAqLwogLypmaXhtZTogdGVzdCAtIGNvbnRpbnVlICovCiAJfQotCWkyY193KGdzcGNhX2RldiwgbjIsIHNpemVvZiBuMik7CisJcmVnX3dfYnVmKGdzcGNhX2RldiwgbjIsIHNpemVvZiBuMik7CiAKIAlpID0gMDsKIAl3aGlsZSAocmVhZF9pbmRleHNbaV0gIT0gMHgwMCkgewpAQCAtNTkwLDU4ICs2OTksNTIgQEAKIAkJaSsrOwogCX0KIAotCWkyY193KGdzcGNhX2RldiwgbjMsIHNpemVvZiBuMyk7Ci0JaTJjX3coZ3NwY2FfZGV2LCBuNCwgc2l6ZW9mIG40KTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBuMywgc2l6ZW9mIG4zKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBuNCwgc2l6ZW9mIG40KTsKIAlyZWdfcihnc3BjYV9kZXYsIDB4MDA4MCk7CiAJcmVnX3coZ3NwY2FfZGV2LCAweDJjODApOwotCWkyY193KGdzcGNhX2RldiwgbnNldDIsIHNpemVvZiBuc2V0Mik7Ci0JaTJjX3coZ3NwY2FfZGV2LCBuc2V0Mywgc2l6ZW9mIG5zZXQzKTsKLQlpMmNfdyhnc3BjYV9kZXYsIG5zZXQ0LCBzaXplb2YgbnNldDQpOworCisJcmVnX3dfYnVmKGdzcGNhX2Rldiwgc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTEsCisJCQlzaXplb2Ygc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTEpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGEzLAorCQkJc2l6ZW9mIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGEzKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5kYXRhMiwKKwkJCXNpemVvZiBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5kYXRhMik7CisKIAlyZWdfdyhnc3BjYV9kZXYsIDB4Mzg4MCk7CiAJcmVnX3coZ3NwY2FfZGV2LCAweDM4ODApOwogCXJlZ193KGdzcGNhX2RldiwgMHgzMzhlKTsKLQlpMmNfdyhnc3BjYV9kZXYsIG5zZXQ1LCBzaXplb2YgbnNldDUpOwotCXJlZ193KGdzcGNhX2RldiwgMHgwMGE5KTsKKworCXNldGJyaWdodG5lc3MoZ3NwY2FfZGV2KTsKKwlzZXRjb250cmFzdChnc3BjYV9kZXYpOwogCXNldGdhbW1hKGdzcGNhX2Rldik7Ci0JcmVnX3coZ3NwY2FfZGV2LCAweDg2YmIpOwotCXJlZ193KGdzcGNhX2RldiwgMHg0YWE2KTsKKwlzZXRjb2xvcnMoZ3NwY2FfZGV2KTsKKwlzZXRzaGFycG5lc3MoZ3NwY2FfZGV2KTsKKwlzZXR3aGl0ZWJhbGFuY2UoZ3NwY2FfZGV2KTsKIAotCWkyY193KGdzcGNhX2RldiwgbWlzc2luZywgc2l6ZW9mIG1pc3NpbmcpOwotCi0JcmVnX3coZ3NwY2FfZGV2LCAweDIwODcpOworCXJlZ193KGdzcGNhX2RldiwgMHgyMDg3KTsJLyogdGllZCB0byB3aGl0ZSBiYWxhbmNlPyAqLwogCXJlZ193KGdzcGNhX2RldiwgMHgyMDg4KTsKIAlyZWdfdyhnc3BjYV9kZXYsIDB4MjA4OSk7CiAKLQlpMmNfdyhnc3BjYV9kZXYsIG5zZXQ3LCBzaXplb2YgbnNldDcpOwotCWkyY193KGdzcGNhX2RldiwgbnNldDEwLCBzaXplb2YgbnNldDEwKTsKLQlpMmNfdyhnc3BjYV9kZXYsIG5zZXQ4LCBzaXplb2YgbnNldDgpOwotCWkyY193KGdzcGNhX2RldiwgbnNldDksIHNpemVvZiBuc2V0OSk7CisJcmVnX3dfYnVmKGdzcGNhX2Rldiwgc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTQsCisJCQlzaXplb2Ygc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTQpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGE1LAorCQkJc2l6ZW9mIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGE1KTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBuc2V0OCwgc2l6ZW9mIG5zZXQ4KTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBuc2V0OSwgc2l6ZW9mIG5zZXQ5KTsKIAogCXJlZ193KGdzcGNhX2RldiwgMHgyODgwKTsKLQlpMmNfdyhnc3BjYV9kZXYsIG5zZXQyLCBzaXplb2YgbnNldDIpOwotCWkyY193KGdzcGNhX2RldiwgbnNldDMsIHNpemVvZiBuc2V0Myk7Ci0JaTJjX3coZ3NwY2FfZGV2LCBuc2V0NCwgc2l6ZW9mIG5zZXQ0KTsKKworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGExLAorCQkJc2l6ZW9mIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGExKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5kYXRhMywKKwkJCXNpemVvZiBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5kYXRhMyk7CisJcmVnX3dfYnVmKGdzcGNhX2Rldiwgc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTIsCisJCQlzaXplb2Ygc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uZGF0YTIpOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNldGJyaWdodG5lc3Moc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQotewotCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKLQl1bnNpZ25lZCBpbnQgYnJpZ2h0bmVzczsKLQlfX3U4IHNldDZbNF0gPSB7IDB4OGYsIDB4MjYsIDB4YzMsIDB4MDAgfTsKLQotCWJyaWdodG5lc3MgPSBzZC0+YnJpZ2h0bmVzczsKLQlpZiAoYnJpZ2h0bmVzcyA8IDcpIHsKLQkJc2V0NlszXSA9IDB4NzAgLSBicmlnaHRuZXNzICogMHgxMDsKLQl9IGVsc2UgewotCQlzZXQ2WzFdID0gMHgyNDsKLQkJc2V0NlszXSA9IDB4MDAgKyAoKGJyaWdodG5lc3MgLSA3KSAqIDB4MTApOwotCX0KLQotCWkyY193KGdzcGNhX2Rldiwgc2V0Niwgc2l6ZW9mIHNldDYpOwotfQotCiBzdGF0aWMgdm9pZCBzZXRmbGlwKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKIHsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CkBAIC02NTEsMTQgKzc1NCwxNSBAQAogCWlmIChzZC0+bWlycm9yKQogCQlmbGlwY21kWzNdID0gMHgwMTsKIAotCWkyY193KGdzcGNhX2RldiwgZmxpcGNtZCwgc2l6ZW9mIGZsaXBjbWQpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIGZsaXBjbWQsIHNpemVvZiBmbGlwY21kKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0ZWZmZWN0KHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKIHsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CiAKLQlpMmNfdyhnc3BjYV9kZXYsIGVmZmVjdHNfdGFibGVbc2QtPmVmZmVjdF0sIHNpemVvZiBlZmZlY3RzX3RhYmxlWzBdKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBlZmZlY3RzX3RhYmxlW3NkLT5lZmZlY3RdLAorCQkJCXNpemVvZiBlZmZlY3RzX3RhYmxlWzBdKTsKIAlpZiAoc2QtPmVmZmVjdCA9PSAxIHx8IHNkLT5lZmZlY3QgPT0gNSkgewogCQlQREVCVUcoRF9DT05GLAogCQkgICAgICAgIlRoaXMgZWZmZWN0IGhhdmUgYmVlbiBkaXNhYmxlZCBmb3Igd2ViY2FtIFwic2FmZXR5XCIiKTsKQEAgLTY3MSwxOSArNzc1LDYgQEAKIAkJcmVnX3coZ3NwY2FfZGV2LCAweGZhYTYpOwogfQogCi1zdGF0aWMgdm9pZCBzZXR3aGl0ZWJhbGFuY2Uoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQotewotCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKLQotCV9fdTggd2hpdGVfYmFsYW5jZVs4XSA9Ci0JICAgIHsgMHg4NywgMHgyMCwgMHg4OCwgMHgyMCwgMHg4OSwgMHgyMCwgMHg4MCwgMHgzOCB9OwotCi0JaWYgKHNkLT53aGl0ZWJhbGFuY2UgPT0gMSkKLQkJd2hpdGVfYmFsYW5jZVs3XSA9IDB4M2M7Ci0KLQlpMmNfdyhnc3BjYV9kZXYsIHdoaXRlX2JhbGFuY2UsIHNpemVvZiB3aGl0ZV9iYWxhbmNlKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0bGlnaHRmcmVxKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKIHsKIAlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CkBAIC02OTIsNTIgKzc4Myw0NiBAQAogCWlmIChzZC0+ZnJlcSA9PSAyKQkvKiA2MGh6ICovCiAJCWZyZXFbMV0gPSAweDAwOwogCi0JaTJjX3coZ3NwY2FfZGV2LCBmcmVxLCBzaXplb2YgZnJlcSk7CisJcmVnX3dfYnVmKGdzcGNhX2RldiwgZnJlcSwgc2l6ZW9mIGZyZXEpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRjb250cmFzdChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCisvKiBJcyB0aGlzIHJlYWxseSBuZWVkZWQ/CisgKiBpIGFkZGVkIHNvbWUgbW9kdWxlIHBhcmFtZXRlcnMgZm9yIHRlc3Qgd2l0aCBzb21lIHVzZXJzICovCitzdGF0aWMgdm9pZCBwb2xsX3NlbnNvcihzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCiB7CiAJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OwotCXVuc2lnbmVkIGludCBjb250cmFzdCA9IHNkLT5jb250cmFzdDsKLQlfX3UxNiByZWdfdG9fd3JpdGU7CisJc3RhdGljIGNvbnN0IF9fdTggcG9sbDFbXSA9CisJCXsweDY3LCAweDA1LCAweDY4LCAweDgxLCAweDY5LCAweDgwLCAweDZhLCAweDgyLAorCQkgMHg2YiwgMHg2OCwgMHg2YywgMHg2OSwgMHg3MiwgMHhkOSwgMHg3MywgMHgzNCwKKwkJIDB4NzQsIDB4MzIsIDB4NzUsIDB4OTIsIDB4NzYsIDB4MDAsIDB4MDksIDB4MDEsCisJCSAweDYwLCAweDE0fTsKKwlzdGF0aWMgY29uc3QgX191OCBwb2xsMltdID0KKwkJezB4NjcsIDB4MDIsIDB4NjgsIDB4NzEsIDB4NjksIDB4NzIsIDB4NzIsIDB4YTksCisJCSAweDczLCAweDAyLCAweDczLCAweDAyLCAweDYwLCAweDE0fTsKKwlzdGF0aWMgY29uc3QgX191OCBwb2xsM1tdID0KKwkJezB4ODcsIDB4M2YsIDB4ODgsIDB4MjAsIDB4ODksIDB4MmR9OworCXN0YXRpYyBjb25zdCBfX3U4IHBvbGw0W10gPQorCQl7MHhhNiwgMHgwYSwgMHhlYSwgMHhjZiwgMHhiZSwgMHgyNiwgMHhiMSwgMHg1ZiwKKwkJIDB4YTEsIDB4YjEsIDB4ZGEsIDB4NmIsIDB4ZGIsIDB4OTgsIDB4ZGYsIDB4MGMsCisJCSAweGMyLCAweDgwLCAweGMzLCAweDEwfTsKIAotCWlmIChjb250cmFzdCA8IDcpCi0JCXJlZ190b193cml0ZSA9IDB4OGVhOSAtICgweDIwMCAqIGNvbnRyYXN0KTsKLQllbHNlCi0JCXJlZ190b193cml0ZSA9ICgweDAwYTkgKyAoKGNvbnRyYXN0IC0gNykgKiAweDIwMCkpOwotCi0JcmVnX3coZ3NwY2FfZGV2LCByZWdfdG9fd3JpdGUpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRjb2xvcnMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQotewotCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKLQlfX3UxNiByZWdfdG9fd3JpdGU7Ci0KLQlyZWdfdG9fd3JpdGUgPSAweGMwYmIgKyBzZC0+Y29sb3JzICogMHgxMDA7Ci0JcmVnX3coZ3NwY2FfZGV2LCByZWdfdG9fd3JpdGUpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRzaGFycG5lc3Moc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQotewotCXN0cnVjdCBzZCAqc2QgPSAoc3RydWN0IHNkICopIGdzcGNhX2RldjsKLQlfX3UxNiByZWdfdG9fd3JpdGU7Ci0KLQlyZWdfdG9fd3JpdGUgPSAweDBhYTYgKyAweDEwMDAgKiBzZC0+c2hhcnBuZXNzOwotCi0JcmVnX3coZ3NwY2FfZGV2LCByZWdfdG9fd3JpdGUpOworCWlmIChzZC0+c2Vuc29yICE9IFNFTlNPUl9UQVM1MTMwQSkgeworCQlQREVCVUcoRF9TVFJFQU0sICJbU2Vuc29yIHJlcXVpcmVzIHBvbGxpbmddIik7CisJCXJlZ193X2J1Zihnc3BjYV9kZXYsIHBvbGwxLCBzaXplb2YgcG9sbDEpOworCQlyZWdfd19idWYoZ3NwY2FfZGV2LCBwb2xsMiwgc2l6ZW9mIHBvbGwyKTsKKwkJcmVnX3dfYnVmKGdzcGNhX2RldiwgcG9sbDMsIHNpemVvZiBwb2xsMyk7CisJCXJlZ193X2J1Zihnc3BjYV9kZXYsIHBvbGw0LCBzaXplb2YgcG9sbDQpOworCX0KIH0KIAogc3RhdGljIGludCBzZF9zdGFydChzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpCiB7CiAJc3RydWN0IHNkICpzZCA9IChzdHJ1Y3Qgc2QgKikgZ3NwY2FfZGV2OwogCWludCBpLCBtb2RlOwotCXN0YXRpYyBjb25zdCBfX3U4IHQxW10gPSB7IDB4NjYsIDB4MDAsIDB4YTgsIDB4ZTggfTsKIAlfX3U4IHQyW10gPSB7IDB4MDcsIDB4MDAsIDB4MGQsIDB4NjAsIDB4MGUsIDB4ODAgfTsKIAlzdGF0aWMgY29uc3QgX191OCB0M1tdID0KIAkJeyAweGIzLCAweDA3LCAweGI0LCAweDAwLCAweGI1LCAweDg4LCAweGI2LCAweDAyLCAweGI3LCAweDA2LAogCQkgIDB4YjgsIDB4MDAsIDB4YjksIDB4ZTcsIDB4YmEsIDB4MDEgfTsKLQlzdGF0aWMgY29uc3QgX191OCB0NFtdID0geyAweDBiLCAweDA0LCAweDBhLCAweDQwIH07CiAKIAltb2RlID0gZ3NwY2FfZGV2LT5jYW0uY2FtX21vZGVbKGludCkgZ3NwY2FfZGV2LT5jdXJyX21vZGVdLiBwcml2OwogCXN3aXRjaCAobW9kZSkgewpAQCAtNzYwLDI1ICs4NDUsMjkgQEAKIAlpZiAoc2QtPnNlbnNvciA9PSBTRU5TT1JfVEFTNTEzMEEpIHsKIAkJaSA9IDA7CiAJCXdoaWxlICh0YXM1MTMwYV9zZW5zb3JfaW5pdFtpXVswXSAhPSAwKSB7Ci0JCQlpMmNfdyhnc3BjYV9kZXYsIHRhczUxMzBhX3NlbnNvcl9pbml0W2ldLAorCQkJcmVnX3dfYnVmKGdzcGNhX2RldiwgdGFzNTEzMGFfc2Vuc29yX2luaXRbaV0sCiAJCQkJCSBzaXplb2YgdGFzNTEzMGFfc2Vuc29yX2luaXRbMF0pOwogCQkJaSsrOwogCQl9CiAJCXJlZ193KGdzcGNhX2RldiwgMHgzYzgwKTsKIAkJLyoganVzdCBpbiBjYXNlIGFuZCB0byBrZWVwIHN5bmMgd2l0aCBsb2dzIChmb3IgbWluZSkgKi8KLQkJaTJjX3coZ3NwY2FfZGV2LCB0YXM1MTMwYV9zZW5zb3JfaW5pdFszXSwKKwkJcmVnX3dfYnVmKGdzcGNhX2RldiwgdGFzNTEzMGFfc2Vuc29yX2luaXRbM10sCiAJCQkJIHNpemVvZiB0YXM1MTMwYV9zZW5zb3JfaW5pdFswXSk7CiAJCXJlZ193KGdzcGNhX2RldiwgMHgzYzgwKTsKIAl9IGVsc2UgewotCQlvdGhlcl9zZW5zb3JfaW5pdChnc3BjYV9kZXYpOworCQlvbTY4MDJfc2Vuc29yX2luaXQoZ3NwY2FfZGV2KTsKIAl9Ci0JLyoganVzdCBpbiBjYXNlIGFuZCB0byBrZWVwIHN5bmMgd2l0aCBsb2dzICAoZm9yIG1pbmUpICovCi0JaTJjX3coZ3NwY2FfZGV2LCB0MSwgc2l6ZW9mIHQxKTsKLQlpMmNfdyhnc3BjYV9kZXYsIHQyLCBzaXplb2YgdDIpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGE0LAorCQkJc2l6ZW9mIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLmRhdGE0KTsKIAlyZWdfcihnc3BjYV9kZXYsIDB4MDAxMik7Ci0JaTJjX3coZ3NwY2FfZGV2LCB0Mywgc2l6ZW9mIHQzKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCB0Miwgc2l6ZW9mIHQyKTsKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCB0Mywgc2l6ZW9mIHQzKTsKIAlyZWdfdyhnc3BjYV9kZXYsIDB4MDAxMyk7Ci0JaTJjX3coZ3NwY2FfZGV2LCB0NCwgc2l6ZW9mIHQ0KTsKKwltc2xlZXAoMTUpOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLnN0cmVhbSwKKwkJCXNpemVvZiBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5zdHJlYW0pOworCXBvbGxfc2Vuc29yKGdzcGNhX2Rldik7CisKIAkvKiByZXN0YXJ0IG9uIGVhY2ggc3RhcnQsIGp1c3QgaW4gY2FzZSwgc29tZXRpbWVzIHJlZ3MgZ29lcyB3cm9uZwogCSAqIHdoZW4gdXNpbmcgY29udHJvbHMgZnJvbSBhcHAgKi8KIAlzZXRicmlnaHRuZXNzKGdzcGNhX2Rldik7CkBAIC03ODcsNiArODc2LDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHNkX3N0b3BOKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldikKK3sKKwlzdHJ1Y3Qgc2QgKnNkID0gKHN0cnVjdCBzZCAqKSBnc3BjYV9kZXY7CisKKwlyZWdfd19idWYoZ3NwY2FfZGV2LCBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5zdHJlYW0sCisJCQlzaXplb2Ygc2Vuc29yX2RhdGFbc2QtPnNlbnNvcl0uc3RyZWFtKTsKKwltc2xlZXAoMjApOworCXJlZ193X2J1Zihnc3BjYV9kZXYsIHNlbnNvcl9kYXRhW3NkLT5zZW5zb3JdLnN0cmVhbSwKKwkJCXNpemVvZiBzZW5zb3JfZGF0YVtzZC0+c2Vuc29yXS5zdHJlYW0pOworCW1zbGVlcCgyMCk7CisJcmVnX3coZ3NwY2FfZGV2LCAweDAzMDkpOworfQorCiBzdGF0aWMgdm9pZCBzZF9wa3Rfc2NhbihzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYsCiAJCQlzdHJ1Y3QgZ3NwY2FfZnJhbWUgKmZyYW1lLAkvKiB0YXJnZXQgKi8KIAkJCV9fdTggKmRhdGEsCQkJLyogaXNvYyBwYWNrZXQgKi8KQEAgLTEwMzYsNiArMTEzOCw3IEBACiAJLmNvbmZpZyA9IHNkX2NvbmZpZywKIAkuaW5pdCA9IHNkX2luaXQsCiAJLnN0YXJ0ID0gc2Rfc3RhcnQsCisJLnN0b3BOID0gc2Rfc3RvcE4sCiAJLnBrdF9zY2FuID0gc2RfcGt0X3NjYW4sCiAJLnF1ZXJ5bWVudSA9IHNkX3F1ZXJ5bWVudSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maWxlb3BzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maWxlb3BzLmMKaW5kZXggYjc0NTdmYy4uMWM0MDRlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtZmlsZW9wcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpbGVvcHMuYwpAQCAtNjAwLDEzICs2MDAsMTQgQEAKIAlzaW5jZSB3ZSBtYXkgZ2V0IGhlcmUgYmVmb3JlIHRoZSBzdHJlYW0gaGFzIGJlZW4gZnVsbHkgc2V0LXVwICovCiAJaWYgKG1vZGUgPT0gT1VUX1lVViAmJiBzLT5xX2Z1bGwubGVuZ3RoID09IDAgJiYgaXR2LT5kbWFfZGF0YV9yZXFfc2l6ZSkgewogCQl3aGlsZSAoY291bnQgPj0gaXR2LT5kbWFfZGF0YV9yZXFfc2l6ZSkgewotCQkJaWYgKCFpdnR2X3l1dl91ZG1hX3N0cmVhbV9mcmFtZSAoaXR2LCAodm9pZCBfX3VzZXIgKil1c2VyX2J1ZikpIHsKLQkJCQlieXRlc193cml0dGVuICs9IGl0di0+ZG1hX2RhdGFfcmVxX3NpemU7Ci0JCQkJdXNlcl9idWYgKz0gaXR2LT5kbWFfZGF0YV9yZXFfc2l6ZTsKLQkJCQljb3VudCAtPSBpdHYtPmRtYV9kYXRhX3JlcV9zaXplOwotCQkJfSBlbHNlIHsKLQkJCQlicmVhazsKLQkJCX0KKwkJCXJjID0gaXZ0dl95dXZfdWRtYV9zdHJlYW1fZnJhbWUoaXR2LCAodm9pZCBfX3VzZXIgKil1c2VyX2J1Zik7CisKKwkJCWlmIChyYyA8IDApCisJCQkJcmV0dXJuIHJjOworCisJCQlieXRlc193cml0dGVuICs9IGl0di0+ZG1hX2RhdGFfcmVxX3NpemU7CisJCQl1c2VyX2J1ZiArPSBpdHYtPmRtYV9kYXRhX3JlcV9zaXplOworCQkJY291bnQgLT0gaXR2LT5kbWFfZGF0YV9yZXFfc2l6ZTsKIAkJfQogCQlpZiAoY291bnQgPT0gMCkgewogCQkJSVZUVl9ERUJVR19ISV9GSUxFKCJXcm90ZSAlZCBieXRlcyB0byAlcyAoJWQpXG4iLCBieXRlc193cml0dGVuLCBzLT5uYW1lLCBzLT5xX2Z1bGwuYnl0ZXN1c2VkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1pb2N0bC5jCmluZGV4IDg2OTY1MjcuLjIwOGZiNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtaW9jdGwuYwpAQCAtNTA5LDcgKzUwOSw2IEBACiBzdGF0aWMgaW50IGl2dHZfdHJ5X2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQpCiB7CiAJc3RydWN0IGl2dHZfb3Blbl9pZCAqaWQgPSBmaDsKLQlzdHJ1Y3QgaXZ0diAqaXR2ID0gaWQtPml0djsKIAlzMzIgdyA9IGZtdC0+Zm10LnBpeC53aWR0aDsKIAlzMzIgaCA9IGZtdC0+Zm10LnBpeC5oZWlnaHQ7CiAJaW50IGZpZWxkID0gZm10LT5mbXQucGl4LmZpZWxkOwpAQCAtNTE3LDcgKzUxNiwyMiBAQAogCiAJdyA9IG1pbih3LCA3MjApOwogCXcgPSBtYXgodywgMik7Ci0JaCA9IG1pbihoLCBpdHYtPmlzX291dF81MGh6ID8gNTc2IDogNDgwKTsKKwkvKiBXaHkgY2FuIHRoZSBoZWlnaHQgYmUgNTc2IGV2ZW4gd2hlbiB0aGUgb3V0cHV0IGlzIE5UU0M/CisKKwkgICBJbnRlcm5hbGx5IHRoZSBidWZmZXJzIG9mIHRoZSBQVlIzNTAgYXJlIGFsd2F5cyBzZXQgdG8gNzIweDU3Ni4gVGhlCisJICAgZGVjb2RlZCB2aWRlbyBmcmFtZSB3aWxsIGFsd2F5cyBiZSBwbGFjZWQgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZgorCSAgIHRoaXMgYnVmZmVyLiBGb3IgYW55IHZpZGVvIHdoaWNoIGlzIG5vdCA3MjB4NTc2LCB0aGUgYnVmZmVyIHdpbGwKKwkgICB0aGVuIGJlIGNyb3BwZWQgdG8gcmVtb3ZlIHRoZSB1bnVzZWQgcmlnaHQgYW5kIGxvd2VyIGFyZWFzLCB3aXRoCisJICAgdGhlIHJlbWFpbmluZyBpbWFnZSBiZWluZyBzY2FsZWQgYnkgdGhlIGhhcmR3YXJlIHRvIGZpdCB0aGUgZGlzcGxheQorCSAgIGFyZWEuIFRoZSB2aWRlbyBjYW4gYmUgc2NhbGVkIGJvdGggdXAgYW5kIGRvd24sIHNvIGEgNzIweDQ4MCB2aWRlbworCSAgIGNhbiBiZSBkaXNwbGF5ZWQgZnVsbC1zY3JlZW4gb24gUEFMIGFuZCBhIDcyMHg1NzYgdmlkZW8gY2FuIGJlCisJICAgZGlzcGxheWVkIHdpdGhvdXQgY3JvcHBpbmcgb24gTlRTQy4KKworCSAgIE5vdGUgdGhhdCB0aGUgc2NhbGluZyBvbmx5IG9jY3VycyBvbiB0aGUgdmlkZW8gc3RyZWFtLCB0aGUgb3NkCisJICAgcmVzb2x1dGlvbiBpcyBsb2NrZWQgdG8gdGhlIGJyb2FkY2FzdCBzdGFuZGFyZCBhbmQgbm90IHNjYWxlZC4KKworCSAgIFRoYW5rcyB0byBJYW4gQXJtc3Ryb25nIGZvciB0aGlzIGV4cGxhbmF0aW9uLiAqLworCWggPSBtaW4oaCwgNTc2KTsKIAloID0gbWF4KGgsIDIpOwogCWlmIChpZC0+dHlwZSA9PSBJVlRWX0RFQ19TVFJFQU1fVFlQRV9ZVVYpCiAJCWZtdC0+Zm10LnBpeC5maWVsZCA9IGZpZWxkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9rczAxMjcuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8va3MwMTI3LmMKaW5kZXggMmZkNGI0YS4uYmFlMmQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9rczAxMjcuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2tzMDEyNy5jCkBAIC0zMywyNyArMzMsMjAgQEAKICAqIFYxLjEgR2VyYXJkIHYuZC4gSG9yc3QgIEFkZGVkIHNvbWUgZGVidWdvdXRwdXQsIHJlc2V0IHRoZSB2aWRlby1zdGFuZGFyZAogICovCiAKLSNpZm5kZWYgX19LRVJORUxfXwotI2RlZmluZSBfX0tFUk5FTF9fCi0jZW5kaWYKLQogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KLSNpbmNsdWRlICJrczAxMjcuaCIKLQogI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L3ZpZGVvX2RlY29kZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWNvbW1vbi5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaD4KKyNpbmNsdWRlICJrczAxMjcuaCIKIAotI2RlZmluZSBkcHJpbnRrICAgICBpZiAoZGVidWcpIHByaW50awotCi0vKiBpMmMgaWRlbnRpZmljYXRpb24gKi8KLSNkZWZpbmUgSTJDX0tTMDEyN19BRERPTiAgIDB4RDgKLSNkZWZpbmUgSTJDX0tTMDEyN19PTkJPQVJEIDB4REEKK01PRFVMRV9ERVNDUklQVElPTigiS1MwMTI3IHZpZGVvIGRlY29kZXIgZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJSeWFuIERyYWtlIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKICNkZWZpbmUgS1NfVFlQRV9VTktOT1dOCTAKICNkZWZpbmUgS1NfVFlQRV8wMTIyUwkxCkBAIC0yMDQsOCArMTk3LDYgQEAKIH07CiAKIHN0cnVjdCBrczAxMjcgewotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7Ci0JdW5zaWduZWQgY2hhcglhZGRyOwogCWludAkJZm9ybWF0X3dpZHRoOwogCWludAkJZm9ybWF0X2hlaWdodDsKIAlpbnQJCWNhcF93aWR0aDsKQEAgLTIyMCwxNiArMjExLDE4IEBACiAKIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJEZWJ1ZyBvdXRwdXQiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogc3RhdGljIHU4IHJlZ19kZWZhdWx0c1s2NF07CiAKLQotCiBzdGF0aWMgdm9pZCBpbml0X3JlZ19kZWZhdWx0cyh2b2lkKQogeworCXN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CiAJdTggKnRhYmxlID0gcmVnX2RlZmF1bHRzOwogCisJaWYgKGluaXRpYWxpemVkKQorCQlyZXR1cm47CisJaW5pdGlhbGl6ZWQgPSAxOworCiAJdGFibGVbS1NfQ01EQV0gICAgID0gMHgyYzsgIC8qIFZTRT0wLCBDQ0lSIDYwMSwgYXV0b2RldGVjdCBzdGFuZGFyZCAqLwogCXRhYmxlW0tTX0NNREJdICAgICA9IDB4MTI7ICAvKiBWQUxJR049MCwgQUdDIGNvbnRyb2wgYW5kIGlucHV0ICovCiAJdGFibGVbS1NfQ01EQ10gICAgID0gMHgwMDsgIC8qIFRlc3Qgb3B0aW9ucyAqLwpAQCAtMzA4LDUwICszMDEsNTMgQEAKICAqIEFuIGV4cGxhbmF0aW9uIGZyb20ga2F5b3JrQG1haWwudXRleGFzLmVkdToKICAqCiAgKiBEdXJpbmcgSTJDIHJlYWRzLCB0aGUgS1MwMTI3IG9ubHkgc2FtcGxlcyBmb3IgYSBzdG9wIGNvbmRpdGlvbgotICogZHVyaW5nIHRoZSBwbGFjZSB3aGVyZSB0aGUgYWNrbm9sZWRnZSBiaXQgc2hvdWxkIGJlLiBBbnkgc3RhbmRhcmQKKyAqIGR1cmluZyB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFja25vd2xlZGdlIGJpdCBzaG91bGQgYmUuIEFueSBzdGFuZGFyZAogICogSTJDIGltcGxlbWVudGF0aW9uIChjb3JyZWN0bHkpIHRocm93cyBpbiBhbm90aGVyIGNsb2NrIHRyYW5zaXRpb24KICAqIGF0IHRoZSA5dGggYml0LCBhbmQgdGhlIEtTMDEyNyB3aWxsIG5vdCByZWNvZ25pemUgdGhlIHN0b3AgY29uZGl0aW9uCiAgKiBhbmQgd2lsbCBjb250aW51ZSB0byBjbG9jayBvdXQgZGF0YS4KICAqCiAgKiBTbyB3ZSBoYXZlIHRvIGRvIHRoZSByZWFkIG91cnNlbGYuICBCaWcgZGVhbC4KLQkgICB3b3JrYXJvdW5kIGluIGkyYy1hbGdvLWJpdAorICoJICAgd29ya2Fyb3VuZCBpbiBpMmMtYWxnby1iaXQKICAqLwogCiAKLXN0YXRpYyB1OCBrczAxMjdfcmVhZChzdHJ1Y3Qga3MwMTI3ICprcywgdTggcmVnKQorc3RhdGljIHU4IGtzMDEyN19yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjLCB1OCByZWcpCiB7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmMgPSBrcy0+Y2xpZW50OwogCWNoYXIgdmFsID0gMDsKIAlzdHJ1Y3QgaTJjX21zZyBtc2dzW10gPSB7Ci0JCXtjLT5hZGRyLCAwLCBzaXplb2YocmVnKSwgJnJlZ30sCi0JCXtjLT5hZGRyLCBJMkNfTV9SRCB8IEkyQ19NX05PX1JEX0FDSywgc2l6ZW9mKHZhbCksICZ2YWx9fTsKKwkJeyBjLT5hZGRyLCAwLCBzaXplb2YocmVnKSwgJnJlZyB9LAorCQl7IGMtPmFkZHIsIEkyQ19NX1JEIHwgSTJDX01fTk9fUkRfQUNLLCBzaXplb2YodmFsKSwgJnZhbCB9CisJfTsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaTJjX3RyYW5zZmVyKGMtPmFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOwogCWlmIChyZXQgIT0gQVJSQVlfU0laRShtc2dzKSkKLQkJZHByaW50aygia3MwMTI3X3dyaXRlIGVycm9yXG4iKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgYywgInJlYWQgZXJyb3JcbiIpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAogCi1zdGF0aWMgdm9pZCBrczAxMjdfd3JpdGUoc3RydWN0IGtzMDEyNyAqa3MsIHU4IHJlZywgdTggdmFsKQorc3RhdGljIHZvaWQga3MwMTI3X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjLCB1OCByZWcsIHU4IHZhbCkKIHsKLQljaGFyIG1zZ1tdID0ge3JlZywgdmFsfTsKKwlzdHJ1Y3Qga3MwMTI3ICprcyA9IGkyY19nZXRfY2xpZW50ZGF0YShjKTsKKwljaGFyIG1zZ1tdID0geyByZWcsIHZhbCB9OwogCi0JaWYgKGkyY19tYXN0ZXJfc2VuZChrcy0+Y2xpZW50LCBtc2csIHNpemVvZihtc2cpKSAhPSBzaXplb2YobXNnKSkKLQkJZHByaW50aygia3MwMTI3X3dyaXRlIGVycm9yXG4iKTsKKwlpZiAoaTJjX21hc3Rlcl9zZW5kKGMsIG1zZywgc2l6ZW9mKG1zZykpICE9IHNpemVvZihtc2cpKQorCQl2NGxfZGJnKDEsIGRlYnVnLCBjLCAid3JpdGUgZXJyb3JcbiIpOwogCiAJa3MtPnJlZ3NbcmVnXSA9IHZhbDsKIH0KIAogCiAvKiBnZW5lcmljIGJpdC10d2lkZGxpbmcgKi8KLXN0YXRpYyB2b2lkIGtzMDEyN19hbmRfb3Ioc3RydWN0IGtzMDEyNyAqa3MsIHU4IHJlZywgdTggYW5kX3YsIHU4IG9yX3YpCitzdGF0aWMgdm9pZCBrczAxMjdfYW5kX29yKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggYW5kX3YsIHU4IG9yX3YpCiB7CisJc3RydWN0IGtzMDEyNyAqa3MgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwogCXU4IHZhbCA9IGtzLT5yZWdzW3JlZ107CiAJdmFsID0gKHZhbCAmIGFuZF92KSB8IG9yX3Y7Ci0Ja3MwMTI3X3dyaXRlKGtzLCByZWcsIHZhbCk7CisJa3MwMTI3X3dyaXRlKGNsaWVudCwgcmVnLCB2YWwpOwogfQogCiAKQEAgLTM1OSw3MyArMzU1LDY5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBrczAxMjcgcHJpdmF0ZSBhcGkKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZCBrczAxMjdfcmVzZXQoc3RydWN0IGtzMDEyNyoga3MpCitzdGF0aWMgdm9pZCBrczAxMjdfcmVzZXQoc3RydWN0IGkyY19jbGllbnQgKmMpCiB7Ci0JaW50IGk7CisJc3RydWN0IGtzMDEyNyAqa3MgPSBpMmNfZ2V0X2NsaWVudGRhdGEoYyk7CiAJdTggKnRhYmxlID0gcmVnX2RlZmF1bHRzOworCWludCBpOwogCiAJa3MtPmtzX3R5cGUgPSBLU19UWVBFX1VOS05PV047CiAKLQlkcHJpbnRrKCJrczAxMjc6IHJlc2V0XG4iKTsKKwl2NGxfZGJnKDEsIGRlYnVnLCBjLCAicmVzZXRcbiIpOwogCW1zbGVlcCgxKTsKIAogCS8qIGluaXRpYWxpemUgYWxsIHJlZ2lzdGVycyB0byBrbm93biB2YWx1ZXMgKi8KIAkvKiAoZXhjZXB0IFNUQVQsIDB4MjEsIDB4MjIsIFRFU1QgYW5kIDB4MzgsMHgzOSkgKi8KIAotCWZvcihpID0gMTsgaSA8IDMzOyBpKyspCi0JCWtzMDEyN193cml0ZShrcywgaSwgdGFibGVbaV0pOworCWZvciAoaSA9IDE7IGkgPCAzMzsgaSsrKQorCQlrczAxMjdfd3JpdGUoYywgaSwgdGFibGVbaV0pOwogCi0JZm9yKGkgPSAzNTsgaSA8IDQwOyBpKyspCi0JCWtzMDEyN193cml0ZShrcywgaSwgdGFibGVbaV0pOworCWZvciAoaSA9IDM1OyBpIDwgNDA7IGkrKykKKwkJa3MwMTI3X3dyaXRlKGMsIGksIHRhYmxlW2ldKTsKIAotCWZvcihpID0gNDE7IGkgPCA1NjsgaSsrKQotCQlrczAxMjdfd3JpdGUoa3MsIGksIHRhYmxlW2ldKTsKKwlmb3IgKGkgPSA0MTsgaSA8IDU2OyBpKyspCisJCWtzMDEyN193cml0ZShjLCBpLCB0YWJsZVtpXSk7CiAKLQlmb3IoaSA9IDU4OyBpIDwgNjQ7IGkrKykKLQkJa3MwMTI3X3dyaXRlKGtzLCBpLCB0YWJsZVtpXSk7CisJZm9yIChpID0gNTg7IGkgPCA2NDsgaSsrKQorCQlrczAxMjdfd3JpdGUoYywgaSwgdGFibGVbaV0pOwogCiAKLQlpZiAoKGtzMDEyN19yZWFkKGtzLCBLU19TVEFUKSAmIDB4ODApID09IDApIHsKKwlpZiAoKGtzMDEyN19yZWFkKGMsIEtTX1NUQVQpICYgMHg4MCkgPT0gMCkgewogCQlrcy0+a3NfdHlwZSA9IEtTX1RZUEVfMDEyMlM7Ci0JCWRwcmludGsoImtzMDEyNzoga3MwMTIycyBGb3VuZFxuIik7CisJCXY0bF9kYmcoMSwgZGVidWcsIGMsICJrczAxMjJzIGZvdW5kXG4iKTsKIAkJcmV0dXJuOwogCX0KIAotCXN3aXRjaChrczAxMjdfcmVhZChrcywgS1NfQ01ERSkgJiAweDBmKSB7Ci0KKwlzd2l0Y2ggKGtzMDEyN19yZWFkKGMsIEtTX0NNREUpICYgMHgwZikgewogCWNhc2UgMDoKIAkJa3MtPmtzX3R5cGUgPSBLU19UWVBFXzAxMjc7Ci0JCWRwcmludGsoImtzMDEyNzoga3MwMTI3IGZvdW5kXG4iKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgYywgImtzMDEyNyBmb3VuZFxuIik7CiAJCWJyZWFrOwogCiAJY2FzZSA5OgogCQlrcy0+a3NfdHlwZSA9IEtTX1RZUEVfMDEyN0I7Ci0JCWRwcmludGsoImtzMDEyNzoga3MwMTI3QiBSZXZpc2lvbiBBIGZvdW5kXG4iKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgYywgImtzMDEyN0IgUmV2aXNpb24gQSBmb3VuZFxuIik7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJZHByaW50aygia3MwMTI3OiB1bmtub3duIHJldmlzaW9uXG4iKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgYywgInVua25vd24gcmV2aXNpb25cbiIpOwogCQlicmVhazsKIAl9CiB9CiAKLXN0YXRpYyBpbnQga3MwMTI3X2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJCSAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQorc3RhdGljIGludCBrczAxMjdfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqYywgdW5zaWduZWQgY21kLCB2b2lkICphcmcpCiB7Ci0Jc3RydWN0IGtzMDEyNyAqa3MgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQotCWludAkJKmlhcmcgPSAoaW50Kilhcmc7Ci0KKwlzdHJ1Y3Qga3MwMTI3ICprcyA9IGkyY19nZXRfY2xpZW50ZGF0YShjKTsKKwlpbnQJCSppYXJnID0gKGludCAqKWFyZzsKIAlpbnQJCXN0YXR1czsKIAogCWlmICgha3MpCiAJCXJldHVybiAtRU5PREVWOwogCiAJc3dpdGNoIChjbWQpIHsKLQogCWNhc2UgREVDT0RFUl9JTklUOgotCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgREVDT0RFUl9JTklUXG4iKTsKLQkJa3MwMTI3X3Jlc2V0KGtzKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgYywgIkRFQ09ERVJfSU5JVFxuIik7CisJCWtzMDEyN19yZXNldChjKTsKIAkJYnJlYWs7CiAKIAljYXNlIERFQ09ERVJfU0VUX0lOUFVUOgpAQCAtNDM2LDE2MSArNDI4LDE2MCBAQAogCQljYXNlIEtTX0lOUFVUX0NPTVBPU0lURV80OgogCQljYXNlIEtTX0lOUFVUX0NPTVBPU0lURV81OgogCQljYXNlIEtTX0lOUFVUX0NPTVBPU0lURV82OgotCQkJZHByaW50aygia3MwMTI3OiBjb21tYW5kIERFQ09ERVJfU0VUX0lOUFVUICVkOiAiCi0JCQkJIkNvbXBvc2l0ZVxuIiwgKmlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9TRVRfSU5QVVQgJWQ6IENvbXBvc2l0ZVxuIiwgKmlhcmcpOwogCQkJLyogYXV0b2RldGVjdCA1MC82MCBIeiAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ01EQSwgICAweGZjLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ01EQSwgICAweGZjLCAweDAwKTsKIAkJCS8qIFZTRT0wICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DTURBLCAgIH4weDQwLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ01EQSwgICB+MHg0MCwgMHgwMCk7CiAJCQkvKiBzZXQgaW5wdXQgbGluZSAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ01EQiwgICAweGIwLCAqaWFyZyk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREIsICAgMHhiMCwgKmlhcmcpOwogCQkJLyogbm9uLWZyZWVydW5uaW5nIG1vZGUgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREMsICAgMHg3MCwgMHgwYSk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREMsICAgMHg3MCwgMHgwYSk7CiAJCQkvKiBhbmFsb2cgaW5wdXQgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREQsICAgMHgwMywgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREQsICAgMHgwMywgMHgwMCk7CiAJCQkvKiBlbmFibGUgY2hyb21hIGRlbW9kdWxhdGlvbiAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ1RSQUNLLCAweGNmLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ1RSQUNLLCAweGNmLCAweDAwKTsKIAkJCS8qIGNocm9tYSB0cmFwLCBIWUJXUj0xICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19MVU1BLCAgIDB4MDAsCisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0xVTUEsICAgMHgwMCwKIAkJCQkgICAgICAgKHJlZ19kZWZhdWx0c1tLU19MVU1BXSl8MHgwYyk7CiAJCQkvKiBzY2FsZXIgZnVsbGJ3LCBsdW1hIGNvbWIgb2ZmICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19WRVJUSUEsIDB4MDgsIDB4ODEpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19WRVJUSUEsIDB4MDgsIDB4ODEpOwogCQkJLyogbWFudWFsIGNocm9tYSBjb21iIC4yNSAuNSAuMjUgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX1ZFUlRJQywgMHgwZiwgMHg5MCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX1ZFUlRJQywgMHgwZiwgMHg5MCk7CiAKIAkJCS8qIGNocm9tYSBwYXRoIGRlbGF5ICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DSFJPTUIsIDB4MGYsIDB4OTApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DSFJPTUIsIDB4MGYsIDB4OTApOwogCi0JCQlrczAxMjdfd3JpdGUoa3MsIEtTX1VHQUlOLCByZWdfZGVmYXVsdHNbS1NfVUdBSU5dKTsKLQkJCWtzMDEyN193cml0ZShrcywgS1NfVkdBSU4sIHJlZ19kZWZhdWx0c1tLU19WR0FJTl0pOwotCQkJa3MwMTI3X3dyaXRlKGtzLCBLU19VVk9GRkgsIHJlZ19kZWZhdWx0c1tLU19VVk9GRkhdKTsKLQkJCWtzMDEyN193cml0ZShrcywgS1NfVVZPRkZMLCByZWdfZGVmYXVsdHNbS1NfVVZPRkZMXSk7CisJCQlrczAxMjdfd3JpdGUoYywgS1NfVUdBSU4sIHJlZ19kZWZhdWx0c1tLU19VR0FJTl0pOworCQkJa3MwMTI3X3dyaXRlKGMsIEtTX1ZHQUlOLCByZWdfZGVmYXVsdHNbS1NfVkdBSU5dKTsKKwkJCWtzMDEyN193cml0ZShjLCBLU19VVk9GRkgsIHJlZ19kZWZhdWx0c1tLU19VVk9GRkhdKTsKKwkJCWtzMDEyN193cml0ZShjLCBLU19VVk9GRkwsIHJlZ19kZWZhdWx0c1tLU19VVk9GRkxdKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgS1NfSU5QVVRfU1ZJREVPXzE6CiAJCWNhc2UgS1NfSU5QVVRfU1ZJREVPXzI6CiAJCWNhc2UgS1NfSU5QVVRfU1ZJREVPXzM6Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgREVDT0RFUl9TRVRfSU5QVVQgJWQ6ICIKLQkJCQkiUy1WaWRlb1xuIiwgKmlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9TRVRfSU5QVVQgJWQ6IFMtVmlkZW9cbiIsICppYXJnKTsKIAkJCS8qIGF1dG9kZXRlY3QgNTAvNjAgSHogKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREEsICAgMHhmYywgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREEsICAgMHhmYywgMHgwMCk7CiAJCQkvKiBWU0U9MCAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ01EQSwgICB+MHg0MCwgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREEsICAgfjB4NDAsIDB4MDApOwogCQkJLyogc2V0IGlucHV0IGxpbmUgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREIsICAgMHhiMCwgKmlhcmcpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURCLCAgIDB4YjAsICppYXJnKTsKIAkJCS8qIG5vbi1mcmVlcnVubmluZyBtb2RlICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DTURDLCAgIDB4NzAsIDB4MGEpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURDLCAgIDB4NzAsIDB4MGEpOwogCQkJLyogYW5hbG9nIGlucHV0ICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DTURELCAgIDB4MDMsIDB4MDApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURELCAgIDB4MDMsIDB4MDApOwogCQkJLyogZW5hYmxlIGNocm9tYSBkZW1vZHVsYXRpb24gKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NUUkFDSywgMHhjZiwgMHgwMCk7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19MVU1BLCAweDAwLAorCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DVFJBQ0ssIDB4Y2YsIDB4MDApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19MVU1BLCAweDAwLAogCQkJCSAgICAgICByZWdfZGVmYXVsdHNbS1NfTFVNQV0pOwogCQkJLyogZGlzYWJsZSBsdW1hIGNvbWIgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX1ZFUlRJQSwgMHgwOCwKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfVkVSVElBLCAweDA4LAogCQkJCSAgICAgICAocmVnX2RlZmF1bHRzW0tTX1ZFUlRJQV0mMHhmMCl8MHgwMSk7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19WRVJUSUMsIDB4MGYsCisJCQlrczAxMjdfYW5kX29yKGMsIEtTX1ZFUlRJQywgMHgwZiwKIAkJCQkgICAgICAgcmVnX2RlZmF1bHRzW0tTX1ZFUlRJQ10mMHhmMCk7CiAKLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NIUk9NQiwgMHgwZiwKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ0hST01CLCAweDBmLAogCQkJCSAgICAgICByZWdfZGVmYXVsdHNbS1NfQ0hST01CXSYweGYwKTsKIAotCQkJa3MwMTI3X3dyaXRlKGtzLCBLU19VR0FJTiwgcmVnX2RlZmF1bHRzW0tTX1VHQUlOXSk7Ci0JCQlrczAxMjdfd3JpdGUoa3MsIEtTX1ZHQUlOLCByZWdfZGVmYXVsdHNbS1NfVkdBSU5dKTsKLQkJCWtzMDEyN193cml0ZShrcywgS1NfVVZPRkZILCByZWdfZGVmYXVsdHNbS1NfVVZPRkZIXSk7Ci0JCQlrczAxMjdfd3JpdGUoa3MsIEtTX1VWT0ZGTCwgcmVnX2RlZmF1bHRzW0tTX1VWT0ZGTF0pOworCQkJa3MwMTI3X3dyaXRlKGMsIEtTX1VHQUlOLCByZWdfZGVmYXVsdHNbS1NfVUdBSU5dKTsKKwkJCWtzMDEyN193cml0ZShjLCBLU19WR0FJTiwgcmVnX2RlZmF1bHRzW0tTX1ZHQUlOXSk7CisJCQlrczAxMjdfd3JpdGUoYywgS1NfVVZPRkZILCByZWdfZGVmYXVsdHNbS1NfVVZPRkZIXSk7CisJCQlrczAxMjdfd3JpdGUoYywgS1NfVVZPRkZMLCByZWdfZGVmYXVsdHNbS1NfVVZPRkZMXSk7CiAJCQlicmVhazsKIAogCQljYXNlIEtTX0lOUFVUX1lVVjY1NjoKLQkJCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBERUNPREVSX1NFVF9JTlBVVCAxNTogIgotCQkJCSJZVVY2NTZcbiIpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9TRVRfSU5QVVQgMTU6IFlVVjY1NlxuIik7CiAJCQlpZiAoa3MtPm5vcm0gPT0gVklERU9fTU9ERV9OVFNDIHx8CiAJCQkgICAga3MtPm5vcm0gPT0gS1NfU1REX1BBTF9NKQogCQkJCS8qIGZvcmNlIDYwIEh6ICovCi0JCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ01EQSwgICAweGZjLCAweDAzKTsKKwkJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREEsICAgMHhmYywgMHgwMyk7CiAJCQllbHNlCiAJCQkJLyogZm9yY2UgNTAgSHogKi8KLQkJCQlrczAxMjdfYW5kX29yKGtzLCBLU19DTURBLCAgIDB4ZmMsIDB4MDIpOworCQkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ01EQSwgICAweGZjLCAweDAyKTsKIAotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ01EQSwgICAweGZmLCAweDQwKTsgLyogVlNFPTEgKi8KKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ01EQSwgICAweGZmLCAweDQwKTsgLyogVlNFPTEgKi8KIAkJCS8qIHNldCBpbnB1dCBsaW5lIGFuZCBWQUxJR04gKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREIsICAgMHhiMCwgKCppYXJnIHwgMHg0MCkpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURCLCAgIDB4YjAsICgqaWFyZyB8IDB4NDApKTsKIAkJCS8qIGZyZWVydW5uaW5nIG1vZGUsICovCiAJCQkvKiBUU1RHRU4gPSAxIFRTVEdGUj0xMSBUU1RHUEg9MCBUU1RHUEs9MCAgVk1FTT0xKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREMsICAgMHg3MCwgMHg4Nyk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NNREMsICAgMHg3MCwgMHg4Nyk7CiAJCQkvKiBkaWdpdGFsIGlucHV0LCBTWU5ESVIgPSAwIElOUFNMPTAxIENMS0RJUj0wIEVBVj0wICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DTURELCAgIDB4MDMsIDB4MDgpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURELCAgIDB4MDMsIDB4MDgpOwogCQkJLyogZGlzYWJsZSBjaHJvbWEgZGVtb2R1bGF0aW9uICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DVFJBQ0ssIDB4Y2YsIDB4MzApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DVFJBQ0ssIDB4Y2YsIDB4MzApOwogCQkJLyogSFlQSyA9MDEgQ1RSQVAgPSAwIEhZQldSPTAgUEVEPTEgUkdCSD0xIFVOSVQ9MSAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfTFVNQSwgICAweDAwLCAweDcxKTsKLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX1ZFUlRJQywgMHgwZiwKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfTFVNQSwgICAweDAwLCAweDcxKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfVkVSVElDLCAweDBmLAogCQkJCSAgICAgICByZWdfZGVmYXVsdHNbS1NfVkVSVElDXSYweGYwKTsKIAogCQkJLyogc2NhbGVyIGZ1bGxidywgbHVtYSBjb21iIG9mZiAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfVkVSVElBLCAweDA4LCAweDgxKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfVkVSVElBLCAweDA4LCAweDgxKTsKIAotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ0hST01CLCAweDBmLAorCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DSFJPTUIsIDB4MGYsCiAJCQkJICAgICAgIHJlZ19kZWZhdWx0c1tLU19DSFJPTUJdJjB4ZjApOwogCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DT04sIDB4MDAsIDB4MDApOwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQlJULCAweDAwLCAzMik7CS8qIHNwZWM6IDM0ICovCisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NPTiwgMHgwMCwgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0JSVCwgMHgwMCwgMzIpOwkvKiBzcGVjOiAzNCAqLwogCQkJCS8qIHNwZWM6IDIyOSAoZTUpICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19TQVQsIDB4MDAsIDB4ZTgpOwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfSFVFLCAweDAwLCAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfU0FULCAweDAwLCAweGU4KTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfSFVFLCAweDAwLCAwKTsKIAotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfVUdBSU4sIDB4MDAsIDIzOCk7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19WR0FJTiwgMHgwMCwgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX1VHQUlOLCAweDAwLCAyMzgpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19WR0FJTiwgMHgwMCwgMHgwMCk7CiAKIAkJCS8qVU9GRjoweDMwLCBWT0ZGOjB4MzAsIFRTVENHTj0xICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19VVk9GRkgsIDB4MDAsIDB4NGYpOwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfVVZPRkZMLCAweDAwLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfVVZPRkZILCAweDAwLCAweDRmKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfVVZPRkZMLCAweDAwLCAweDAwKTsKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgREVDT0RFUl9TRVRfSU5QVVQ6ICIKLQkJCQkiVW5rbm93biBpbnB1dCAlZFxuIiwgKmlhcmcpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9TRVRfSU5QVVQ6IFVua25vd24gaW5wdXQgJWRcbiIsICppYXJnKTsKIAkJCWJyZWFrOwogCQl9CiAKIAkJLyogaGFjazogQ0RNTFBGIHNvbWV0aW1lcyBzcG9udGFuZW91c2x5IHN3aXRjaGVzIG9uOyAqLwogCQkvKiBmb3JjZSBiYWNrIG9mZiAqLwotCQlrczAxMjdfd3JpdGUoa3MsIEtTX0RFTU9ELCByZWdfZGVmYXVsdHNbS1NfREVNT0RdKTsKKwkJa3MwMTI3X3dyaXRlKGMsIEtTX0RFTU9ELCByZWdfZGVmYXVsdHNbS1NfREVNT0RdKTsKIAkJYnJlYWs7CiAKIAljYXNlIERFQ09ERVJfU0VUX09VVFBVVDoKIAkJc3dpdGNoKCppYXJnKSB7CiAJCWNhc2UgS1NfT1VUUFVUX1lVVjY1NkU6Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgREVDT0RFUl9TRVRfT1VUUFVUOiAiCi0JCQkJIk9VVFBVVF9ZVVY2NTZFIChNaXNzaW5nKVxuIik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjLAorCQkJCSJERUNPREVSX1NFVF9PVVRQVVQ6IE9VVFBVVF9ZVVY2NTZFIChNaXNzaW5nKVxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJCWJyZWFrOwogCiAJCWNhc2UgS1NfT1VUUFVUX0VYVjoKLQkJCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBERUNPREVSX1NFVF9PVVRQVVQ6ICIKLQkJCQkiT1VUUFVUX0VYVlxuIik7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19PRk1UQSwgMHhmMCwgMHgwOSk7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjLAorCQkJCSJERUNPREVSX1NFVF9PVVRQVVQ6IE9VVFBVVF9FWFZcbiIpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19PRk1UQSwgMHhmMCwgMHgwOSk7CiAJCQlicmVhazsKIAkJfQogCQlicmVhazsKIAotCWNhc2UgREVDT0RFUl9TRVRfTk9STTogLy9zYW0gVGhpcyBibG9jayBtaXhlcyBvbGQgYW5kIG5ldyBub3JtIG5hbWVzLi4uCisJY2FzZSBERUNPREVSX1NFVF9OT1JNOiAvKiBzYW0gVGhpcyBibG9jayBtaXhlcyBvbGQgYW5kIG5ldyBub3JtIG5hbWVzLi4uICovCiAJCS8qIFNldCB0byBhdXRvbWF0aWMgU0VDQU0vRnNjIG1vZGUgKi8KLQkJa3MwMTI3X2FuZF9vcihrcywgS1NfREVNT0QsIDB4ZjAsIDB4MDApOworCQlrczAxMjdfYW5kX29yKGMsIEtTX0RFTU9ELCAweGYwLCAweDAwKTsKIAogCQlrcy0+bm9ybSA9ICppYXJnOwotCQlzd2l0Y2goKmlhcmcpCi0JCXsKKwkJc3dpdGNoICgqaWFyZykgewogCQkvKiB0aGlzIGlzIHVudGVzdGVkICEhICovCiAJCS8qIEl0IGp1c3QgZGV0ZWN0cyBQQUxfTi9OVFNDX00gKG5vIHNwZWNpYWwgZnJlcXVlbmNpZXMpICovCiAJCS8qIEFuZCB5b3UgaGF2ZSB0byBzZXQgdGhlIHN0YW5kYXJkIGEgc2Vjb25kIHRpbWUgYWZ0ZXJ3YXJkcyAqLwogCQljYXNlIFZJREVPX01PREVfQVVUTzoKLQkJCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBERUNPREVSX1NFVF9OT1JNOiBBVVRPXG4iKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGMsCisJCQkJIkRFQ09ERVJfU0VUX05PUk06IEFVVE9cbiIpOwogCiAJCQkvKiBUaGUgY2hpcCBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgKi8KIAkJCS8qIGJhc2VkIG9uIHRoZSBjdXJyZW50IGZpZWxkIHJhdGUgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NNREEsICAgMHhmYywgMHgwMCk7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DSFJPTUEsIDB4OWYsIDB4MjApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DTURBLCAgIDB4ZmMsIDB4MDApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19DSFJPTUEsIDB4OWYsIDB4MjApOwogCQkJLyogVGhpcyBpcyB3cm9uZyBmb3IgUEFMICEgQXMgSSBzYWlkLCAqLwogCQkJLyogeW91IG5lZWQgdG8gc2V0IHRoZSBzdGFuZGFyZCBvbmNlIGFnYWluICEhICovCiAJCQlrcy0+Zm9ybWF0X2hlaWdodCA9IDI0MDsKQEAgLTU5OCw4NCArNTg5LDg2IEBACiAJCQlicmVhazsKIAogCQljYXNlIFZJREVPX01PREVfTlRTQzoKLQkJCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBERUNPREVSX1NFVF9OT1JNOiBOVFNDX01cbiIpOwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ0hST01BLCAweDlmLCAweDIwKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGMsCisJCQkJIkRFQ09ERVJfU0VUX05PUk06IE5UU0NfTVxuIik7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NIUk9NQSwgMHg5ZiwgMHgyMCk7CiAJCQlrcy0+Zm9ybWF0X2hlaWdodCA9IDI0MDsKIAkJCWtzLT5mb3JtYXRfd2lkdGggPSA3MDQ7CiAJCQlicmVhazsKIAogCQljYXNlIEtTX1NURF9OVFNDX046Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgS1MwMTI3X1NFVF9TVEFOREFSRDogIgotCQkJCSJOVFNDX04gKGZpeG1lKVxuIik7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DSFJPTUEsIDB4OWYsIDB4NDApOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiS1MwMTI3X1NFVF9OT1JNOiBOVFNDX04gKGZpeG1lKVxuIik7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NIUk9NQSwgMHg5ZiwgMHg0MCk7CiAJCQlrcy0+Zm9ybWF0X2hlaWdodCA9IDI0MDsKIAkJCWtzLT5mb3JtYXRfd2lkdGggPSA3MDQ7CiAJCQlicmVhazsKIAogCQljYXNlIFZJREVPX01PREVfUEFMOgotCQkJZHByaW50aygia3MwMTI3OiBjb21tYW5kIERFQ09ERVJfU0VUX05PUk06IFBBTF9OXG4iKTsKLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NIUk9NQSwgMHg5ZiwgMHgyMCk7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjLAorCQkJCSJERUNPREVSX1NFVF9OT1JNOiBQQUxfTlxuIik7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NIUk9NQSwgMHg5ZiwgMHgyMCk7CiAJCQlrcy0+Zm9ybWF0X2hlaWdodCA9IDI5MDsKIAkJCWtzLT5mb3JtYXRfd2lkdGggPSA3MDQ7CiAJCQlicmVhazsKIAogCQljYXNlIEtTX1NURF9QQUxfTToKLQkJCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBLUzAxMjdfU0VUX1NUQU5EQVJEOiAiCi0JCQkJIlBBTF9NIChmaXhtZSlcbiIpOwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfQ0hST01BLCAweDlmLCAweDQwKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGMsCisJCQkJIktTMDEyN19TRVRfTk9STTogUEFMX00gKGZpeG1lKVxuIik7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NIUk9NQSwgMHg5ZiwgMHg0MCk7CiAJCQlrcy0+Zm9ybWF0X2hlaWdodCA9IDI5MDsKIAkJCWtzLT5mb3JtYXRfd2lkdGggPSA3MDQ7CiAJCQlicmVhazsKIAogCQljYXNlIFZJREVPX01PREVfU0VDQU06Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgS1MwMTI3X1NFVF9TVEFOREFSRDogIgotCQkJCSJTRUNBTVxuIik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjLAorCQkJCSJLUzAxMjdfU0VUX05PUk06IFNFQ0FNXG4iKTsKIAkJCWtzLT5mb3JtYXRfaGVpZ2h0ID0gMjkwOwogCQkJa3MtPmZvcm1hdF93aWR0aCA9IDcwNDsKIAogCQkJLyogc2V0IHRvIHNlY2FtIGF1dG9kZXRlY3Rpb24gKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX0NIUk9NQSwgMHhkZiwgMHgyMCk7Ci0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19ERU1PRCwgMHhmMCwgMHgwMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0NIUk9NQSwgMHhkZiwgMHgyMCk7CisJCQlrczAxMjdfYW5kX29yKGMsIEtTX0RFTU9ELCAweGYwLCAweDAwKTsKIAkJCXNjaGVkdWxlX3RpbWVvdXRfaW50ZXJydXB0aWJsZShIWi8xMCsxKTsKIAogCQkJLyogZGlkIGl0IGF1dG9kZXRlY3Q/ICovCi0JCQlpZiAoa3MwMTI3X3JlYWQoa3MsIEtTX0RFTU9EKSAmIDB4NDApCisJCQlpZiAoa3MwMTI3X3JlYWQoYywgS1NfREVNT0QpICYgMHg0MCkKIAkJCQlicmVhazsKIAogCQkJLyogZm9yY2UgdG8gc2VjYW0gbW9kZSAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfREVNT0QsIDB4ZjAsIDB4MGYpOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19ERU1PRCwgMHhmMCwgMHgwZik7CiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJZHByaW50aygia3MwMTI3OiBjb21tYW5kIERFQ09ERVJfU0VUX05PUk06ICIKLQkJCQkiVW5rbm93biBub3JtICVkXG4iLCAqaWFyZyk7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjLAorCQkJCSJERUNPREVSX1NFVF9OT1JNOiBVbmtub3duIG5vcm0gJWRcbiIsICppYXJnKTsKIAkJCWJyZWFrOwogCQl9CiAJCWJyZWFrOwogCiAJY2FzZSBERUNPREVSX1NFVF9QSUNUVVJFOgotCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgREVDT0RFUl9TRVRfUElDVFVSRSAiCi0JCQkibm90IHlldCBzdXBwb3J0ZWQgKGZpeG1lKVxuIik7CisJCXY0bF9kYmcoMSwgZGVidWcsIGMsCisJCQkiREVDT0RFUl9TRVRfUElDVFVSRTogbm90IHlldCBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAotCS8vc2FtIHRvZG86IEtTMDEyN19TRVRfQlJJR0hUTkVTUzogTWVyZ2UgaW50byBERUNPREVSX1NFVF9QSUNUVVJFCi0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9DT05UUkFTVDogTWVyZ2UgaW50byBERUNPREVSX1NFVF9QSUNUVVJFCi0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9IVUU6IE1lcmdlIGludG8gREVDT0RFUl9TRVRfUElDVFVSRT8KLQkvL3NhbSB0b2RvOiBLUzAxMjdfU0VUX1NBVFVSQVRJT046IE1lcmdlIGludG8gREVDT0RFUl9TRVRfUElDVFVSRQotCS8vc2FtIHRvZG86IEtTMDEyN19TRVRfQUdDX01PREU6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9BR0M6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9DSFJPTUFfTU9ERToKLQkvL3NhbSB0b2RvOiBLUzAxMjdfU0VUX1BJWENMS19NT0RFOgotCS8vc2FtIHRvZG86IEtTMDEyN19TRVRfR0FNTUFfTU9ERToKLQkvL3NhbSB0b2RvOiBLUzAxMjdfU0VUX1VHQUlOOgotCS8vc2FtIHRvZG86IEtTMDEyN19TRVRfVkdBSU46Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9JTlZBTFk6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9JTlZBTFU6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9JTlZBTFY6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9VTlVTRVk6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9VTlVTRVU6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9VTlVTRVY6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9WU0FMSUdOX01PREU6CisJLyogc2FtIHRvZG86IEtTMDEyN19TRVRfQlJJR0hUTkVTUzogTWVyZ2UgaW50byBERUNPREVSX1NFVF9QSUNUVVJFICovCisJLyogc2FtIHRvZG86IEtTMDEyN19TRVRfQ09OVFJBU1Q6IE1lcmdlIGludG8gREVDT0RFUl9TRVRfUElDVFVSRSAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX0hVRTogTWVyZ2UgaW50byBERUNPREVSX1NFVF9QSUNUVVJFPyAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX1NBVFVSQVRJT046IE1lcmdlIGludG8gREVDT0RFUl9TRVRfUElDVFVSRSAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX0FHQ19NT0RFOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX0FHQzogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9DSFJPTUFfTU9ERTogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9QSVhDTEtfTU9ERTogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9HQU1NQV9NT0RFOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX1VHQUlOOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX1ZHQUlOOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX0lOVkFMWTogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9JTlZBTFU6ICovCisJLyogc2FtIHRvZG86IEtTMDEyN19TRVRfSU5WQUxWOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX1VOVVNFWTogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9VTlVTRVU6ICovCisJLyogc2FtIHRvZG86IEtTMDEyN19TRVRfVU5VU0VWOiAqLworCS8qIHNhbSB0b2RvOiBLUzAxMjdfU0VUX1ZTQUxJR05fTU9ERTogKi8KIAogCWNhc2UgREVDT0RFUl9FTkFCTEVfT1VUUFVUOgogCXsKQEAgLTY4NCwzNCArNjc3LDMyIEBACiAJCWlhcmcgPSBhcmc7CiAJCWVuYWJsZSA9ICgqaWFyZyAhPSAwKTsKIAkJaWYgKGVuYWJsZSkgewotCQkJZHByaW50aygia3MwMTI3OiBjb21tYW5kICIKLQkJCQkJIkRFQ09ERVJfRU5BQkxFX09VVFBVVCBvbiAiCi0JCQkJCSIoJWQpXG4iLCBlbmFibGUpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9FTkFCTEVfT1VUUFVUIG9uXG4iKTsKIAkJCS8qIEFsbCBvdXRwdXQgcGlucyBvbiAqLwotCQkJa3MwMTI3X2FuZF9vcihrcywgS1NfT0ZNVEEsIDB4Y2YsIDB4MzApOworCQkJa3MwMTI3X2FuZF9vcihjLCBLU19PRk1UQSwgMHhjZiwgMHgzMCk7CiAJCQkvKiBPYmV5IHRoZSBPRU4gcGluICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DREVNLCAweDdmLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ0RFTSwgMHg3ZiwgMHgwMCk7CiAJCX0gZWxzZSB7Ci0JCQlkcHJpbnRrKCJrczAxMjc6IGNvbW1hbmQgIgotCQkJCQkiREVDT0RFUl9FTkFCTEVfT1VUUFVUIG9mZiAiCi0JCQkJCSIoJWQpXG4iLCBlbmFibGUpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgYywKKwkJCQkiREVDT0RFUl9FTkFCTEVfT1VUUFVUIG9mZlxuIik7CiAJCQkvKiBWaWRlbyBvdXRwdXQgcGlucyBvZmYgKi8KLQkJCWtzMDEyN19hbmRfb3Ioa3MsIEtTX09GTVRBLCAweGNmLCAweDAwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfT0ZNVEEsIDB4Y2YsIDB4MDApOwogCQkJLyogSWdub3JlIHRoZSBPRU4gcGluICovCi0JCQlrczAxMjdfYW5kX29yKGtzLCBLU19DREVNLCAweDdmLCAweDgwKTsKKwkJCWtzMDEyN19hbmRfb3IoYywgS1NfQ0RFTSwgMHg3ZiwgMHg4MCk7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAotCS8vc2FtIHRvZG86IEtTMDEyN19TRVRfT1VUUFVUX01PREU6Ci0JLy9zYW0gdG9kbzogS1MwMTI3X1NFVF9XSURUSDoKLQkvL3NhbSB0b2RvOiBLUzAxMjdfU0VUX0hFSUdIVDoKLQkvL3NhbSB0b2RvOiBLUzAxMjdfU0VUX0hTQ0FMRToKKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9PVVRQVVRfTU9ERTogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9XSURUSDogKi8KKwkvKiBzYW0gdG9kbzogS1MwMTI3X1NFVF9IRUlHSFQ6ICovCisJLyogc2FtIHRvZG86IEtTMDEyN19TRVRfSFNDQUxFOiAqLwogCiAJY2FzZSBERUNPREVSX0dFVF9TVEFUVVM6Ci0JCWRwcmludGsoImtzMDEyNzogY29tbWFuZCBERUNPREVSX0dFVF9TVEFUVVNcbiIpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjLCAiREVDT0RFUl9HRVRfU1RBVFVTXG4iKTsKIAkJKmlhcmcgPSAwOwotCQlzdGF0dXMgPSBrczAxMjdfcmVhZChrcywgS1NfU1RBVCk7CisJCXN0YXR1cyA9IGtzMDEyN19yZWFkKGMsIEtTX1NUQVQpOwogCQlpZiAoIShzdGF0dXMgJiAweDIwKSkJCSAvKiBOT1ZJRCBub3Qgc2V0ICovCiAJCQkqaWFyZyA9ICgqaWFyZyB8IERFQ09ERVJfU1RBVFVTX0dPT0QpOwogCQlpZiAoKHN0YXR1cyAmIDB4MDEpKQkJICAgICAgLyogQ0xPQ0sgc2V0ICovCkBAIC03MjIsMTI0ICs3MTMsODEgQEAKIAkJCSppYXJnID0gKCppYXJnIHwgREVDT0RFUl9TVEFUVVNfTlRTQyk7CiAJCWJyZWFrOwogCi0JLy9DYXRjaCBhbnkgdW5rbm93biBjb21tYW5kCisJLyogQ2F0Y2ggYW55IHVua25vd24gY29tbWFuZCAqLwogCWRlZmF1bHQ6Ci0JCWRwcmludGsoImtzMDEyNzogY29tbWFuZCB1bmtub3duOiAlMDRYXG4iLCBjbWQpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjLCAidW5rbm93bjogMHglMDh4XG4iLCBjbWQpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJcmV0dXJuIDA7CiB9CiAKIAotCi0KLXN0YXRpYyBpbnQga3MwMTI3X3Byb2JlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Ci1zdGF0aWMgaW50IGtzMDEyN19kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Ci1zdGF0aWMgaW50IGtzMDEyN19jb21tYW5kKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JCQkgIHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZyk7Ci0KLQotCiAvKiBBZGRyZXNzZXMgdG8gc2NhbiAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHtJMkNfS1MwMTI3X0FERE9OPj4xLAotCQkJCSAgICAgICBJMkNfS1MwMTI3X09OQk9BUkQ+PjEsIEkyQ19DTElFTlRfRU5EfTsKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBwcm9iZVsyXSA9CXtJMkNfQ0xJRU5UX0VORCwgSTJDX0NMSUVOVF9FTkR9Owotc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZVsyXSA9IAl7STJDX0NMSUVOVF9FTkQsIEkyQ19DTElFTlRfRU5EfTsKLXN0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudF9hZGRyZXNzX2RhdGEgYWRkcl9kYXRhID0gewotCW5vcm1hbF9pMmMsCi0JcHJvYmUsCi0JaWdub3JlLAorI2RlZmluZSBJMkNfS1MwMTI3X0FERE9OICAgMHhEOAorI2RlZmluZSBJMkNfS1MwMTI3X09OQk9BUkQgMHhEQQorCitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geworCUkyQ19LUzAxMjdfQURET04gPj4gMSwKKwlJMkNfS1MwMTI3X09OQk9BUkQgPj4gMSwKKwlJMkNfQ0xJRU5UX0VORAogfTsKIAotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfa3MwMTI3ID0gewotCS5kcml2ZXIubmFtZSA9ICJrczAxMjciLAotCS5pZCAgICAgICAgICAgICA9IEkyQ19EUklWRVJJRF9LUzAxMjcsCi0JLmF0dGFjaF9hZGFwdGVyID0ga3MwMTI3X3Byb2JlLAotCS5kZXRhY2hfY2xpZW50ICA9IGtzMDEyN19kZXRhY2gsCi0JLmNvbW1hbmQgICAgICAgID0ga3MwMTI3X2NvbW1hbmQKLX07CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IGtzMDEyN19jbGllbnRfdG1wbCA9Ci17Ci0JLm5hbWUgPSAiKGtzMDEyNyB1bnNldCkiLAotCS5hZGRyID0gMCwKLQkuYWRhcHRlciA9IE5VTEwsCi0JLmRyaXZlciA9ICZpMmNfZHJpdmVyX2tzMDEyNywKLX07Ci0KLXN0YXRpYyBpbnQga3MwMTI3X2ZvdW5kX3Byb2Moc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkciwgaW50IGtpbmQpCitzdGF0aWMgaW50IGtzMDEyN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqYywgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewogCXN0cnVjdCBrczAxMjcgKmtzOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAKLQljbGllbnQgPSBremFsbG9jKHNpemVvZigqY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGNsaWVudCA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT01FTTsKLQltZW1jcHkoY2xpZW50LCAma3MwMTI3X2NsaWVudF90bXBsLCBzaXplb2YoKmNsaWVudCkpOworCXY0bF9pbmZvKGMsICIlcyBjaGlwIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQljLT5hZGRyID09IChJMkNfS1MwMTI3X0FERE9OID4+IDEpID8gImFkZG9uIiA6ICJvbi1ib2FyZCIsCisJCWMtPmFkZHIgPDwgMSwgYy0+YWRhcHRlci0+bmFtZSk7CiAKIAlrcyA9IGt6YWxsb2Moc2l6ZW9mKCprcyksIEdGUF9LRVJORUwpOwotCWlmIChrcyA9PSBOVUxMKSB7Ci0JCWtmcmVlKGNsaWVudCk7CisJaWYgKGtzID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwotCX0KIAotCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGtzKTsKLQljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwotCWNsaWVudC0+YWRkciA9IGFkZHI7Ci0Jc3ByaW50ZihjbGllbnQtPm5hbWUsICJrczAxMjctJTAyeCIsIGFkYXB0ZXItPmlkKTsKKwlpMmNfc2V0X2NsaWVudGRhdGEoYywga3MpOwogCi0Ja3MtPmNsaWVudCA9IGNsaWVudDsKLQlrcy0+YWRkciA9IGFkZHI7CiAJa3MtPmtzX3R5cGUgPSBLU19UWVBFX1VOS05PV047CiAKIAkvKiBwb3dlciB1cCAqLwotCWtzMDEyN193cml0ZShrcywgS1NfQ01EQSwgMHgyYyk7CisJaW5pdF9yZWdfZGVmYXVsdHMoKTsKKwlrczAxMjdfd3JpdGUoYywgS1NfQ01EQSwgMHgyYyk7CiAJbWRlbGF5KDEwKTsKIAogCS8qIHJlc2V0IHRoZSBkZXZpY2UgKi8KLQlrczAxMjdfcmVzZXQoa3MpOwotCXByaW50ayhLRVJOX0lORk8gImtzMDEyNzogYXR0YWNoOiAlcyB2aWRlbyBkZWNvZGVyXG4iLAotCSAgICAgICBrcy0+YWRkcj09KEkyQ19LUzAxMjdfQURET04+PjEpID8gImFkZG9uIiA6ICJvbi1ib2FyZCIpOwotCi0JaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKKwlrczAxMjdfcmVzZXQoYyk7CiAJcmV0dXJuIDA7CiB9CiAKLQotc3RhdGljIGludCBrczAxMjdfcHJvYmUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQorc3RhdGljIGludCBrczAxMjdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjKQogewotCWlmIChhZGFwdGVyLT5pZCA9PSBJMkNfSFdfQl9aUjM2MDY3KQotCQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsIGtzMDEyN19mb3VuZF9wcm9jKTsKLQlyZXR1cm4gMDsKLX0KKwlzdHJ1Y3Qga3MwMTI3ICprcyA9IGkyY19nZXRfY2xpZW50ZGF0YShjKTsKIAotc3RhdGljIGludCBrczAxMjdfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCi17Ci0Jc3RydWN0IGtzMDEyNyAqa3MgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlrczAxMjdfd3JpdGUoYywgS1NfT0ZNVEEsIDB4MjApOyAvKiB0cmlzdGF0ZSAqLworCWtzMDEyN193cml0ZShjLCBLU19DTURBLCAweDJjIHwgMHg4MCk7IC8qIHBvd2VyIGRvd24gKi8KIAotCWtzMDEyN193cml0ZShrcywgS1NfT0ZNVEEsIDB4MjApOyAvKnRyaXN0YXRlKi8KLQlrczAxMjdfd3JpdGUoa3MsIEtTX0NNREEsIDB4MmMgfCAweDgwKTsgLyogcG93ZXIgZG93biAqLwotCi0JaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKIAlrZnJlZShrcyk7Ci0Ja2ZyZWUoY2xpZW50KTsKLQotCWRwcmludGsoImtzMDEyNzogZGV0YWNoXG4iKTsKIAlyZXR1cm4gMDsKIH0KIAotCi1zdGF0aWMgaW50IF9fZGV2aW5pdCBrczAxMjdfaW5pdF9tb2R1bGUodm9pZCkKK3N0YXRpYyBpbnQga3MwMTI3X2xlZ2FjeV9wcm9iZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7Ci0JaW5pdF9yZWdfZGVmYXVsdHMoKTsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmkyY19kcml2ZXJfa3MwMTI3KTsKKwlyZXR1cm4gYWRhcHRlci0+aWQgPT0gSTJDX0hXX0JfWlIzNjA2NzsKIH0KIAotc3RhdGljIHZvaWQgX19kZXZleGl0IGtzMDEyN19jbGVhbnVwX21vZHVsZSh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZpMmNfZHJpdmVyX2tzMDEyNyk7Ci19CitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQga3MwMTI3X2lkW10gPSB7CisJeyAia3MwMTI3IiwgMCB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBrczAxMjdfaWQpOwogCi0KLW1vZHVsZV9pbml0KGtzMDEyN19pbml0X21vZHVsZSk7Ci1tb2R1bGVfZXhpdChrczAxMjdfY2xlYW51cF9tb2R1bGUpOworc3RhdGljIHN0cnVjdCB2NGwyX2kyY19kcml2ZXJfZGF0YSB2NGwyX2kyY19kYXRhID0geworCS5uYW1lID0gImtzMDEyNyIsCisJLmRyaXZlcmlkID0gSTJDX0RSSVZFUklEX0tTMDEyNywKKwkuY29tbWFuZCA9IGtzMDEyN19jb21tYW5kLAorCS5wcm9iZSA9IGtzMDEyN19wcm9iZSwKKwkucmVtb3ZlID0ga3MwMTI3X3JlbW92ZSwKKwkubGVnYWN5X3Byb2JlID0ga3MwMTI3X2xlZ2FjeV9wcm9iZSwKKwkuaWRfdGFibGUgPSBrczAxMjdfaWQsCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjUxMS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vdjUxMS5jCmluZGV4IDkzNWQ3M2QuLjIxMGYxMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y1MTEuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL292NTExLmMKQEAgLTEwOTgsOSArMTA5OCwxMCBAQAogCQlyZWdfdyhvdiwgUjUxeF9TWVNfU05BUCwgMHgwMik7CiAJCXJlZ193KG92LCBSNTF4X1NZU19TTkFQLCAweDAwKTsKIAl9IGVsc2UgaWYgKG92LT5iY2xhc3MgPT0gQkNMX09WNTE4KSB7Ci0JCXdhcm4oInNuYXBzaG90IHJlc2V0IG5vdCBzdXBwb3J0ZWQgeWV0IG9uIE9WNTE4KCspIik7CisJCWRldl93YXJuKCZvdi0+ZGV2LT5kZXYsCisJCQkgInNuYXBzaG90IHJlc2V0IG5vdCBzdXBwb3J0ZWQgeWV0IG9uIE9WNTE4KCspXG4iKTsKIAl9IGVsc2UgewotCQllcnIoImNsZWFyIHNuYXA6IGludmFsaWQgYnJpZGdlIHR5cGUiKTsKKwkJZGV2X2Vycigmb3YtPmRldi0+ZGV2LCAiY2xlYXIgc25hcDogaW52YWxpZCBicmlkZ2UgdHlwZVxuIik7CiAJfQogfQogCkBAIC0xMTE1LDE0ICsxMTE2LDE2IEBACiAJaWYgKG92LT5iY2xhc3MgPT0gQkNMX09WNTExKSB7CiAJCXJldCA9IHJlZ19yKG92LCBSNTF4X1NZU19TTkFQKTsKIAkJaWYgKHJldCA8IDApIHsKLQkJCWVycigiRXJyb3IgY2hlY2tpbmcgc25zcHNob3Qgc3RhdHVzICglZCkiLCByZXQpOworCQkJZGV2X2Vycigmb3YtPmRldi0+ZGV2LAorCQkJCSJFcnJvciBjaGVja2luZyBzbnNwc2hvdCBzdGF0dXMgKCVkKVxuIiwgcmV0KTsKIAkJfSBlbHNlIGlmIChyZXQgJiAweDA4KSB7CiAJCQlzdGF0dXMgPSAxOwogCQl9CiAJfSBlbHNlIGlmIChvdi0+YmNsYXNzID09IEJDTF9PVjUxOCkgewotCQl3YXJuKCJzbmFwc2hvdCBjaGVjayBub3Qgc3VwcG9ydGVkIHlldCBvbiBPVjUxOCgrKSIpOworCQlkZXZfd2Fybigmb3YtPmRldi0+ZGV2LAorCQkJICJzbmFwc2hvdCBjaGVjayBub3Qgc3VwcG9ydGVkIHlldCBvbiBPVjUxOCgrKVxuIik7CiAJfSBlbHNlIHsKLQkJZXJyKCJjaGVjayBzbmFwOiBpbnZhbGlkIGJyaWRnZSB0eXBlIik7CisJCWRldl9lcnIoJm92LT5kZXYtPmRldiwgImNsZWFyIHNuYXA6IGludmFsaWQgYnJpZGdlIHR5cGVcbiIpOwogCX0KIAogCXJldHVybiBzdGF0dXM7CkBAIC01MjE3LDcgKzUyMjAsOCBAQAogCWlmIChvdi0+YmNsYXNzID09IEJDTF9PVjUxMSkKIAkJcmVnX3cob3YsIDB4MTEsIDB4MDApOwogCWVsc2UKLQkJd2FybigiU0FBNzExMUEgbm90IHlldCBzdXBwb3J0ZWQgd2l0aCBPVjUxOC9PVjUxOCsiKTsKKwkJZGV2X3dhcm4oJm92LT5kZXYtPmRldiwKKwkJCSAiU0FBNzExMUEgbm90IHlldCBzdXBwb3J0ZWQgd2l0aCBPVjUxOC9PVjUxOCtcbiIpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01NDU2LDcgKzU0NjAsOCBAQAogCSAqIHJlcXVpcmVkLiBPVjUxOCBoYXMgbm8gdW5jb21wcmVzc2VkIG1vZGUsIHRvIHNhdmUgUkFNLiAqLwogCWlmICghZHVtcHBpeCAmJiAhb3YtPmNvbXByZXNzKSB7CiAJCW92LT5jb21wcmVzcyA9IDE7Ci0JCXdhcm4oIkNvbXByZXNzaW9uIHJlcXVpcmVkIHdpdGggT1Y1MTguLi5lbmFibGluZyIpOworCQlkZXZfd2Fybigmb3YtPmRldi0+ZGV2LAorCQkJICJDb21wcmVzc2lvbiByZXF1aXJlZCB3aXRoIE9WNTE4Li4uZW5hYmxpbmdcbiIpOwogCX0KIAogCWlmIChvdi0+YnJpZGdlID09IEJSR19PVjUxOCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTEwLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTAuYwppbmRleCA0YWE4MmIzLi5hZGYyYmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTAuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTAuYwpAQCAtMzEsMzYgKzMxLDI0IEBACiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvd2FpdC5oPgotI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb19kZWNvZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5Lmg+CiAKIE1PRFVMRV9ERVNDUklQVElPTigiUGhpbGlwcyBTQUE3MTEwIHZpZGVvIGRlY29kZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJQYXVsaW5lIE1pZGRlbGluayIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0KLSNkZWZpbmUgSTJDX05BTUUocykgKHMpLT5uYW1lCi0KLSNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgotI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+Ci0jaW5jbHVkZSA8bGludXgvdmlkZW9fZGVjb2Rlci5oPgotCiBzdGF0aWMgaW50IGRlYnVnOwogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKLSNkZWZpbmUgZHByaW50ayhudW0sIGZvcm1hdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAoZGVidWcgPj0gbnVtKSBcCi0JCQlwcmludGsoZm9ybWF0LCAjI2FyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQogI2RlZmluZSBTQUE3MTEwX01BWF9JTlBVVAk5CS8qIDYgQ1ZCUywgMyBTVkhTICovCiAjZGVmaW5lIFNBQTcxMTBfTUFYX09VVFBVVAkwCS8qIGl0cyBhIGRlY29kZXIgb25seSAqLwogCi0jZGVmaW5lCUkyQ19TQUE3MTEwCQkweDlDCS8qIG9yIDB4OUUgKi8KLQogI2RlZmluZSBTQUE3MTEwX05SX1JFRwkJMHgzNQogCiBzdHJ1Y3Qgc2FhNzExMCB7CkBAIC04MSwxMCArNjksNyBAQAogLyogSTJDIHN1cHBvcnQgZnVuY3Rpb25zCQkJCQkJICAgKi8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBpbnQKLXNhYTcxMTBfd3JpdGUgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgIHU4ICAgICAgICAgICAgICAgICByZWcsCi0JICAgICAgIHU4ICAgICAgICAgICAgICAgICB2YWx1ZSkKK3N0YXRpYyBpbnQgc2FhNzExMF93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsIHU4IHZhbHVlKQogewogCXN0cnVjdCBzYWE3MTEwICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CiAKQEAgLTkyLDEwICs3Nyw3IEBACiAJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcsIHZhbHVlKTsKIH0KIAotc3RhdGljIGludAotc2FhNzExMF93cml0ZV9ibG9jayAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJICAgICBjb25zdCB1OCAgICAgICAgICAqZGF0YSwKLQkJICAgICB1bnNpZ25lZCBpbnQgICAgICAgbGVuKQorc3RhdGljIGludCBzYWE3MTEwX3dyaXRlX2Jsb2NrKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQogewogCWludCByZXQgPSAtMTsKIAl1OCByZWcgPSAqZGF0YTsJCS8qIGZpcnN0IHJlZ2lzdGVyIHRvIHdyaXRlIHRvICovCkBAIC0xMTUsOCArOTcsOCBAQAogCQltZW1jcHkoZGVjb2Rlci0+cmVnICsgcmVnLCBkYXRhICsgMSwgbGVuIC0gMSk7CiAJfSBlbHNlIHsKIAkJZm9yICgrK2RhdGEsIC0tbGVuOyBsZW47IGxlbi0tKSB7Ci0JCQlpZiAoKHJldCA9IHNhYTcxMTBfd3JpdGUoY2xpZW50LCByZWcrKywKLQkJCQkJCSAqZGF0YSsrKSkgPCAwKQorCQkJcmV0ID0gc2FhNzExMF93cml0ZShjbGllbnQsIHJlZysrLCAqZGF0YSsrKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQl9CiAJfQpAQCAtMTI0LDggKzEwNiw3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLXNhYTcxMTBfcmVhZCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbmxpbmUgaW50IHNhYTcxMTBfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCXJldHVybiBpMmNfc21idXNfcmVhZF9ieXRlKGNsaWVudCk7CiB9CkBAIC0xMzgsOSArMTE5LDcgQEAKICNkZWZpbmUgRlJFU1BfMDZIX1NWSURFTyAweDgzCS8vMHhDMAogCiAKLXN0YXRpYyBpbnQKLXNhYTcxMTBfc2VsbXV4IChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQlpbnQgICAgICAgICAgICAgICAgY2hhbikKK3N0YXRpYyBpbnQgc2FhNzExMF9zZWxtdXgoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IGNoYW4pCiB7CiAJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZXNbOV1bOF0gPSB7CiAJCS8qIG1vZGUgMCAqLwpAQCAtMTk3LDggKzE3Niw3IEBACiAJLyogMHgzMCAqLyAweDQ0LCAweDcxLCAweDAyLCAweDhDLCAweDAyCiB9OwogCi1zdGF0aWMgaW50Ci1kZXRlcm1pbmVfbm9ybSAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgZGV0ZXJtaW5lX25vcm0oc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAlERUZJTkVfV0FJVCh3YWl0KTsKIAlzdHJ1Y3Qgc2FhNzExMCAqZGVjb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwpAQCAtMjEyLDI5ICsxOTAsMjMgQEAKIAlmaW5pc2hfd2FpdCgmZGVjb2Rlci0+d3EsICZ3YWl0KTsKIAlzdGF0dXMgPSBzYWE3MTEwX3JlYWQoY2xpZW50KTsKIAlpZiAoc3RhdHVzICYgMHg0MCkgewotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHN0YXR1cz0weCUwMnggKG5vIHNpZ25hbClcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBzdGF0dXMpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzdGF0dXM9MHglMDJ4IChubyBzaWduYWwpXG4iLCBzdGF0dXMpOwogCQlyZXR1cm4gZGVjb2Rlci0+bm9ybTsJLy8gbm8gY2hhbmdlCiAJfQogCWlmICgoc3RhdHVzICYgMykgPT0gMCkgewogCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwNiwgMHg4Myk7CiAJCWlmIChzdGF0dXMgJiAweDIwKSB7Ci0JCQlkcHJpbnRrKDEsCi0JCQkJS0VSTl9JTkZPCi0JCQkJIiVzOiBzdGF0dXM9MHglMDJ4IChOVFNDL25vIGNvbG9yKVxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpLCBzdGF0dXMpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhdHVzPTB4JTAyeCAoTlRTQy9ubyBjb2xvcilcbiIsIHN0YXR1cyk7CiAJCQkvL3NhYTcxMTBfd3JpdGUoY2xpZW50LDB4MkUsMHg4MSk7CiAJCQlyZXR1cm4gVklERU9fTU9ERV9OVFNDOwogCQl9Ci0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc3RhdHVzPTB4JTAyeCAoUEFML25vIGNvbG9yKVxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIHN0YXR1cyk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInN0YXR1cz0weCUwMnggKFBBTC9ubyBjb2xvcilcbiIsIHN0YXR1cyk7CiAJCS8vc2FhNzExMF93cml0ZShjbGllbnQsMHgyRSwweDlBKTsKIAkJcmV0dXJuIFZJREVPX01PREVfUEFMOwogCX0KIAkvL3NhYTcxMTBfd3JpdGUoY2xpZW50LDB4MDYsMHgwMyk7CiAJaWYgKHN0YXR1cyAmIDB4MjApIHsJLyogNjBIeiAqLwotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHN0YXR1cz0weCUwMnggKE5UU0MpXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgc3RhdHVzKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhdHVzPTB4JTAyeCAoTlRTQylcbiIsIHN0YXR1cyk7CiAJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDBELCAweDg2KTsKIAkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MEYsIDB4NTApOwogCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgxMSwgMHgyQyk7CkBAIC0yNTQsMTMgKzIyNiwxMSBAQAogCiAJc3RhdHVzID0gc2FhNzExMF9yZWFkKGNsaWVudCk7CiAJaWYgKChzdGF0dXMgJiAweDAzKSA9PSAweDAxKSB7Ci0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogc3RhdHVzPTB4JTAyeCAoU0VDQU0pXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgc3RhdHVzKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhdHVzPTB4JTAyeCAoU0VDQU0pXG4iLCBzdGF0dXMpOwogCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwRCwgMHg4Nyk7CiAJCXJldHVybiBWSURFT19NT0RFX1NFQ0FNOwogCX0KLQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHN0YXR1cz0weCUwMnggKFBBTClcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCXN0YXR1cyk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhdHVzPTB4JTAyeCAoUEFMKVxuIiwgc3RhdHVzKTsKIAlyZXR1cm4gVklERU9fTU9ERV9QQUw7CiB9CiAKQEAgLTI4Niw4ICsyNTYsOCBAQAogCQkgICAgVklERU9fREVDT0RFUl9TRUNBTSB8IFZJREVPX0RFQ09ERVJfQVVUTzsKIAkJZGMtPmlucHV0cyA9IFNBQTcxMTBfTUFYX0lOUFVUOwogCQlkYy0+b3V0cHV0cyA9IFNBQTcxMTBfTUFYX09VVFBVVDsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9HRVRfU1RBVFVTOgogCXsKQEAgLTI5NSw4ICsyNjUsOCBAQAogCQlpbnQgcmVzID0gMDsKIAogCQlzdGF0dXMgPSBzYWE3MTEwX3JlYWQoY2xpZW50KTsKLQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBzdGF0dXM9MHglMDJ4IG5vcm09JWRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBzdGF0dXMsIGRlY29kZXItPm5vcm0pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzdGF0dXM9MHglMDJ4IG5vcm09JWRcbiIsCisJCQkgICAgICAgc3RhdHVzLCBkZWNvZGVyLT5ub3JtKTsKIAkJaWYgKCEoc3RhdHVzICYgMHg0MCkpCiAJCQlyZXMgfD0gREVDT0RFUl9TVEFUVVNfR09PRDsKIAkJaWYgKHN0YXR1cyAmIDB4MDMpCkBAIC0zMTQsOCArMjg0LDggQEAKIAkJCWJyZWFrOwogCQl9CiAJCSooaW50ICopIGFyZyA9IHJlczsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfTk9STToKIAkJdiA9ICooaW50ICopIGFyZzsKQEAgLTMyOCwzNCArMjk4LDI0IEBACiAJCQkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MEYsIDB4NTApOwogCQkJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDExLCAweDJDKTsKIAkJCQkvL3NhYTcxMTBfd3JpdGUoY2xpZW50LCAweDJFLCAweDgxKTsKLQkJCQlkcHJpbnRrKDEsCi0JCQkJCUtFUk5fSU5GTyAiJXM6IHN3aXRjaGVkIHRvIE5UU0NcbiIsCi0JCQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInN3aXRjaGVkIHRvIE5UU0NcbiIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBWSURFT19NT0RFX1BBTDoKIAkJCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwRCwgMHg4Nik7CiAJCQkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MEYsIDB4MTApOwogCQkJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDExLCAweDU5KTsKIAkJCQkvL3NhYTcxMTBfd3JpdGUoY2xpZW50LCAweDJFLCAweDlBKTsKLQkJCQlkcHJpbnRrKDEsCi0JCQkJCUtFUk5fSU5GTyAiJXM6IHN3aXRjaGVkIHRvIFBBTFxuIiwKLQkJCQkJSTJDX05BTUUoY2xpZW50KSk7CisJCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3dpdGNoZWQgdG8gUEFMXG4iKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgVklERU9fTU9ERV9TRUNBTToKIAkJCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwRCwgMHg4Nyk7CiAJCQkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MEYsIDB4MTApOwogCQkJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDExLCAweDU5KTsKIAkJCQkvL3NhYTcxMTBfd3JpdGUoY2xpZW50LCAweDJFLCAweDlBKTsKLQkJCQlkcHJpbnRrKDEsCi0JCQkJCUtFUk5fSU5GTwotCQkJCQkiJXM6IHN3aXRjaGVkIHRvIFNFQ0FNXG4iLAotCQkJCQlJMkNfTkFNRShjbGllbnQpKTsKKwkJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzd2l0Y2hlZCB0byBTRUNBTVxuIik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFZJREVPX01PREVfQVVUTzoKLQkJCQlkcHJpbnRrKDEsCi0JCQkJCUtFUk5fSU5GTwotCQkJCQkiJXM6IFRWIHN0YW5kYXJkIGRldGVjdGlvbi4uLlxuIiwKLQkJCQkJSTJDX05BTUUoY2xpZW50KSk7CisJCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3dpdGNoZWQgdG8gQVVUT1xuIik7CiAJCQkJZGVjb2Rlci0+bm9ybSA9IGRldGVybWluZV9ub3JtKGNsaWVudCk7CiAJCQkJKihpbnQgKikgYXJnID0gZGVjb2Rlci0+bm9ybTsKIAkJCQlicmVhazsKQEAgLTM2OCwxNSArMzI4LDEyIEBACiAJY2FzZSBERUNPREVSX1NFVF9JTlBVVDoKIAkJdiA9ICooaW50ICopIGFyZzsKIAkJaWYgKHYgPCAwIHx8IHYgPiBTQUE3MTEwX01BWF9JTlBVVCkgewotCQkJZHByaW50aygxLAotCQkJCUtFUk5fSU5GTyAiJXM6IGlucHV0PSVkIG5vdCBhdmFpbGFibGVcbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSwgdik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbnB1dD0lZCBub3QgYXZhaWxhYmxlXG4iLCB2KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJCWlmIChkZWNvZGVyLT5pbnB1dCAhPSB2KSB7CiAJCQlzYWE3MTEwX3NlbG11eChjbGllbnQsIHYpOwotCQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBzd2l0Y2hlZCB0byBpbnB1dD0lZFxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpLCB2KTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInN3aXRjaGVkIHRvIGlucHV0PSVkXG4iLCB2KTsKIAkJfQogCQlicmVhazsKIApAQCAtMzkyLDggKzM0OSw3IEBACiAJCWlmIChkZWNvZGVyLT5lbmFibGUgIT0gdikgewogCQkJZGVjb2Rlci0+ZW5hYmxlID0gdjsKIAkJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDBFLCB2ID8gMHgxOCA6IDB4ODApOwotCQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBZVVYgJXNcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkJdiA/ICJvbiIgOiAib2ZmIik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJZVVYgJXNcbiIsIHYgPyAib24iIDogIm9mZiIpOwogCQl9CiAJCWJyZWFrOwogCkBAIC00MjMsMjMgKzM3OSwyMyBAQAogCQkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MDcsCiAJCQkJICAgICAgKGRlY29kZXItPmh1ZSA+PiA4KSAtIDEyOCk7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9EVU1QOgorCQlpZiAoIWRlYnVnKQorCQkJYnJlYWs7CiAJCWZvciAodiA9IDA7IHYgPCBTQUE3MTEwX05SX1JFRzsgdiArPSAxNikgewogCQkJaW50IGo7Ci0JCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiAlMDJ4OiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQkJdik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICIlMDJ4OiIsIHYpOwogCQkJZm9yIChqID0gMDsgaiA8IDE2ICYmIHYgKyBqIDwgU0FBNzExMF9OUl9SRUc7IGorKykKLQkJCQlkcHJpbnRrKDEsICIgJTAyeCIsIGRlY29kZXItPnJlZ1t2ICsgal0pOwotCQkJZHByaW50aygxLCAiXG4iKTsKKwkJCQlwcmludGsoS0VSTl9DT05UICIgJTAyeCIsIGRlY29kZXItPnJlZ1t2ICsgal0pOworCQkJcHJpbnRrKEtFUk5fQ09OVCAiXG4iKTsKIAkJfQogCQlicmVhazsKIAogCWRlZmF1bHQ6Ci0JCWRwcmludGsoMSwgS0VSTl9JTkZPICJ1bmtub3duIHNhYTcxMTBfY29tbWFuZD8/KCVkKVxuIiwKLQkJCWNtZCk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInVua25vd24gY29tbWFuZCAlMDh4XG4iLCBjbWQpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJcmV0dXJuIDA7CkBAIC00NTEsNTUgKzQwNywyOCBAQAogICogR2VuZXJpYyBpMmMgcHJvYmUKICAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKICAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsKLQlJMkNfU0FBNzExMCA+PiAxLAotCShJMkNfU0FBNzExMCA+PiAxKSArIDEsCi0JSTJDX0NMSUVOVF9FTkQKLX07CiAKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpZ25vcmUgPSBJMkNfQ0xJRU5UX0VORDsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10gPSB7IDB4OWMgPj4gMSwgMHg5ZSA+PiAxLCBJMkNfQ0xJRU5UX0VORCB9OwogCi1zdGF0aWMgc3RydWN0IGkyY19jbGllbnRfYWRkcmVzc19kYXRhIGFkZHJfZGF0YSA9IHsKLQkubm9ybWFsX2kyYwkJPSBub3JtYWxfaTJjLAotCS5wcm9iZQkJCT0gJmlnbm9yZSwKLQkuaWdub3JlCQkJPSAmaWdub3JlLAotfTsKK0kyQ19DTElFTlRfSU5TTU9EOwogCi1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaTJjX2RyaXZlcl9zYWE3MTEwOwotCi1zdGF0aWMgaW50Ci1zYWE3MTEwX2RldGVjdF9jbGllbnQgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAgYWRkcmVzcywKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAga2luZCkKK3N0YXRpYyBpbnQgc2FhNzExMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IHNhYTcxMTAgKmRlY29kZXI7CiAJaW50IHJ2OwogCi0JZHByaW50aygxLAotCQlLRVJOX0lORk8KLQkJInNhYTcxMTAuYzogZGV0ZWN0aW5nIHNhYTcxMTAgY2xpZW50IG9uIGFkZHJlc3MgMHgleFxuIiwKLQkJYWRkcmVzcyA8PCAxKTsKLQogCS8qIENoZWNrIGlmIHRoZSBhZGFwdGVyIHN1cHBvcnRzIHRoZSBuZWVkZWQgZmVhdHVyZXMgKi8KLQlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5Ci0JICAgIChhZGFwdGVyLAotCSAgICAgSTJDX0ZVTkNfU01CVVNfUkVBRF9CWVRFIHwgSTJDX0ZVTkNfU01CVVNfV1JJVEVfQllURV9EQVRBKSkKLQkJcmV0dXJuIDA7CisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsCisJCUkyQ19GVU5DX1NNQlVTX1JFQURfQllURSB8IEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JZVEVfREFUQSkpCisJCXJldHVybiAtRU5PREVWOwogCi0JY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWNsaWVudCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0JY2xpZW50LT5hZGRyID0gYWRkcmVzczsKLQljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwotCWNsaWVudC0+ZHJpdmVyID0gJmkyY19kcml2ZXJfc2FhNzExMDsKLQlzdHJsY3B5KEkyQ19OQU1FKGNsaWVudCksICJzYWE3MTEwIiwgc2l6ZW9mKEkyQ19OQU1FKGNsaWVudCkpKTsKKwl2NGxfaW5mbyhjbGllbnQsICJjaGlwIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQkJY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CiAKIAlkZWNvZGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNhYTcxMTApLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWRlY29kZXIpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoIWRlY29kZXIpCiAJCXJldHVybiAtRU5PTUVNOwotCX0KIAlkZWNvZGVyLT5ub3JtID0gVklERU9fTU9ERV9QQUw7CiAJZGVjb2Rlci0+aW5wdXQgPSAwOwogCWRlY29kZXItPmVuYWJsZSA9IDE7CkBAIC01MTAsMTggKzQzOSwxMCBAQAogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRlY29kZXItPndxKTsKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkZWNvZGVyKTsKIAotCXJ2ID0gaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAocnYpIHsKLQkJa2ZyZWUoY2xpZW50KTsKLQkJa2ZyZWUoZGVjb2Rlcik7Ci0JCXJldHVybiBydjsKLQl9Ci0KIAlydiA9IHNhYTcxMTBfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0c2VxLCBzaXplb2YoaW5pdHNlcSkpOwotCWlmIChydiA8IDApCi0JCWRwcmludGsoMSwgS0VSTl9FUlIgIiVzX2F0dGFjaDogaW5pdCBzdGF0dXMgJWRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBydik7Ci0JZWxzZSB7CisJaWYgKHJ2IDwgMCkgeworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbml0IHN0YXR1cyAlZFxuIiwgcnYpOworCX0gZWxzZSB7CiAJCWludCB2ZXIsIHN0YXR1czsKIAkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MjEsIDB4MTApOwogCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwZSwgMHgxOCk7CkBAIC01MzAsMTAgKzQ1MSw4IEBACiAJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDBELCAweDA2KTsKIAkJLy9tZGVsYXkoMTUwKTsKIAkJc3RhdHVzID0gc2FhNzExMF9yZWFkKGNsaWVudCk7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fSU5GTwotCQkJIiVzX2F0dGFjaDogU0FBNzExMEEgdmVyc2lvbiAleCBhdCAweCUwMngsIHN0YXR1cz0weCUwMnhcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCB2ZXIsIGNsaWVudC0+YWRkciA8PCAxLCBzdGF0dXMpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJ2ZXJzaW9uICV4LCBzdGF0dXM9MHglMDJ4XG4iLAorCQkJICAgICAgIHZlciwgc3RhdHVzKTsKIAkJc2FhNzExMF93cml0ZShjbGllbnQsIDB4MEQsIDB4ODYpOwogCQlzYWE3MTEwX3dyaXRlKGNsaWVudCwgMHgwRiwgMHgxMCk7CiAJCXNhYTcxMTBfd3JpdGUoY2xpZW50LCAweDExLCAweDU5KTsKQEAgLTU0Nyw1OCArNDY2LDI1IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNhYTcxMTBfYXR0YWNoX2FkYXB0ZXIgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3N0YXRpYyBpbnQgc2FhNzExMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKLQlkcHJpbnRrKDEsCi0JCUtFUk5fSU5GTwotCQkic2FhNzExMC5jOiBzdGFydGluZyBwcm9iZSBmb3IgYWRhcHRlciAlcyAoMHgleClcbiIsCi0JCUkyQ19OQU1FKGFkYXB0ZXIpLCBhZGFwdGVyLT5pZCk7Ci0JcmV0dXJuIGkyY19wcm9iZShhZGFwdGVyLCAmYWRkcl9kYXRhLCAmc2FhNzExMF9kZXRlY3RfY2xpZW50KTsKLX0KLQotc3RhdGljIGludAotc2FhNzExMF9kZXRhY2hfY2xpZW50IChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQotewotCXN0cnVjdCBzYWE3MTEwICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Ci0JaW50IGVycjsKLQotCWVyciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGVycikgewotCQlyZXR1cm4gZXJyOwotCX0KLQotCWtmcmVlKGRlY29kZXIpOwotCWtmcmVlKGNsaWVudCk7Ci0KKwlrZnJlZShpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7CiAJcmV0dXJuIDA7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX3NhYTcxMTAgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAic2FhNzExMCIsCi0JfSwKLQotCS5pZCA9IEkyQ19EUklWRVJJRF9TQUE3MTEwLAotCi0JLmF0dGFjaF9hZGFwdGVyID0gc2FhNzExMF9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCA9IHNhYTcxMTBfZGV0YWNoX2NsaWVudCwKLQkuY29tbWFuZCA9IHNhYTcxMTBfY29tbWFuZCwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzYWE3MTEwX2lkW10gPSB7CisJeyAic2FhNzExMCIsIDAgfSwKKwl7IH0KIH07CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc2FhNzExMF9pZCk7CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zYWE3MTEwX2luaXQgKHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZpMmNfZHJpdmVyX3NhYTcxMTApOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNhYTcxMTBfZXhpdCAodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmaTJjX2RyaXZlcl9zYWE3MTEwKTsKLX0KLQotbW9kdWxlX2luaXQoc2FhNzExMF9pbml0KTsKLW1vZHVsZV9leGl0KHNhYTcxMTBfZXhpdCk7CitzdGF0aWMgc3RydWN0IHY0bDJfaTJjX2RyaXZlcl9kYXRhIHY0bDJfaTJjX2RhdGEgPSB7CisJLm5hbWUgPSAic2FhNzExMCIsCisJLmRyaXZlcmlkID0gSTJDX0RSSVZFUklEX1NBQTcxMTAsCisJLmNvbW1hbmQgPSBzYWE3MTEwX2NvbW1hbmQsCisJLnByb2JlID0gc2FhNzExMF9wcm9iZSwKKwkucmVtb3ZlID0gc2FhNzExMF9yZW1vdmUsCisJLmlkX3RhYmxlID0gc2FhNzExMF9pZCwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMS5jCmluZGV4IDk2YzNkNDMuLmE0NzM4YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMS5jCkBAIC0yOCw0MyArMjgsMjQgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWlkLmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb19kZWNvZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5Lmg+CiAKIE1PRFVMRV9ERVNDUklQVElPTigiUGhpbGlwcyBTQUE3MTExIHZpZGVvIGRlY29kZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJEYXZlIFBlcmtzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLQotI2RlZmluZSBJMkNfTkFNRShzKSAocyktPm5hbWUKLQotCiBzdGF0aWMgaW50IGRlYnVnOwogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKLSNkZWZpbmUgZHByaW50ayhudW0sIGZvcm1hdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAoZGVidWcgPj0gbnVtKSBcCi0JCQlwcmludGsoZm9ybWF0LCAjI2FyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBTQUE3MTExX05SX1JFRwkJMHgxOApAQCAtNzcsMTQgKzU4LDkgQEAKIAlpbnQgZW5hYmxlOwogfTsKIAotI2RlZmluZSAgIEkyQ19TQUE3MTExICAgICAgICAweDQ4Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1zYWE3MTExX3dyaXRlIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgdmFsdWUpCitzdGF0aWMgaW5saW5lIGludCBzYWE3MTExX3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUpCiB7CiAJc3RydWN0IHNhYTcxMTEgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIApAQCAtOTIsOCArNjgsNyBAQAogCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZAotc2FhNzExMV93cml0ZV9pZl9jaGFuZ2VkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgc2FhNzExMV93cml0ZV9pZl9jaGFuZ2VkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUpCiB7CiAJc3RydWN0IHNhYTcxMTEgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIApAQCAtMTAzLDEwICs3OCw3IEBACiAJfQogfQogCi1zdGF0aWMgaW50Ci1zYWE3MTExX3dyaXRlX2Jsb2NrIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgICAgIGNvbnN0IHU4ICAgICAgICAgICpkYXRhLAotCQkgICAgIHVuc2lnbmVkIGludCAgICAgICBsZW4pCitzdGF0aWMgaW50IHNhYTcxMTFfd3JpdGVfYmxvY2soc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJaW50IHJldCA9IC0xOwogCXU4IHJlZzsKQEAgLTEyNywxOCArOTksMTcgQEAKIAkJCQkgICAgZGVjb2Rlci0+cmVnW3JlZysrXSA9IGRhdGFbMV07CiAJCQkJbGVuIC09IDI7CiAJCQkJZGF0YSArPSAyOwotCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYKLQkJCQkgYmxvY2tfbGVuIDwgMzIpOwotCQkJaWYgKChyZXQgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBibG9ja19kYXRhLAotCQkJCQkJICAgYmxvY2tfbGVuKSkgPCAwKQorCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYgYmxvY2tfbGVuIDwgMzIpOworCQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwgYmxvY2tfbGVuKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogZG8gc29tZSBzbG93IEkyQyBlbXVsYXRpb24ga2luZCBvZiB0aGluZyAqLwogCQl3aGlsZSAobGVuID49IDIpIHsKIAkJCXJlZyA9ICpkYXRhKys7Ci0JCQlpZiAoKHJldCA9IHNhYTcxMTFfd3JpdGUoY2xpZW50LCByZWcsCi0JCQkJCQkgKmRhdGErKykpIDwgMCkKKwkJCXJldCA9IHNhYTcxMTFfd3JpdGUoY2xpZW50LCByZWcsICpkYXRhKyspOworCQkJaWYgKHJldCA8IDApCiAJCQkJYnJlYWs7CiAJCQlsZW4gLT0gMjsKIAkJfQpAQCAtMTQ3LDE2ICsxMTgsMTMgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50Ci1zYWE3MTExX2luaXRfZGVjb2RlciAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICBzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9pbml0ICppbml0KQorc3RhdGljIGludCBzYWE3MTExX2luaXRfZGVjb2RlcihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQlzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9pbml0ICppbml0KQogewogCXJldHVybiBzYWE3MTExX3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdC0+ZGF0YSwgaW5pdC0+bGVuKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLXNhYTcxMTFfcmVhZCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnKQorc3RhdGljIGlubGluZSBpbnQgc2FhNzExMV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZykKIHsKIAlyZXR1cm4gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgcmVnKTsKIH0KQEAgLTIwMywyOCArMTcxLDIzIEBACiAJMHgxNywgMHgwMCwJCS8qIDE3IC0gVkJJICovCiB9OwogCi1zdGF0aWMgaW50Ci1zYWE3MTExX2NvbW1hbmQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JCSB1bnNpZ25lZCBpbnQgICAgICAgY21kLAotCQkgdm9pZCAgICAgICAgICAgICAgKmFyZykKK3N0YXRpYyBpbnQgc2FhNzExMV9jb21tYW5kKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVuc2lnbmVkIGNtZCwgdm9pZCAqYXJnKQogewogCXN0cnVjdCBzYWE3MTExICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CiAKIAlzd2l0Y2ggKGNtZCkgewotCiAJY2FzZSAwOgogCQlicmVhazsKIAljYXNlIERFQ09ERVJfSU5JVDoKIAl7CiAJCXN0cnVjdCB2aWRlb19kZWNvZGVyX2luaXQgKmluaXQgPSBhcmc7CisJCXN0cnVjdCB2aWRlb19kZWNvZGVyX2luaXQgdmRpOworCiAJCWlmIChOVUxMICE9IGluaXQpCiAJCQlyZXR1cm4gc2FhNzExMV9pbml0X2RlY29kZXIoY2xpZW50LCBpbml0KTsKLQkJZWxzZSB7Ci0JCQlzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9pbml0IHZkaTsKLQkJCXZkaS5kYXRhID0gc2FhNzExMV9pMmNfaW5pdDsKLQkJCXZkaS5sZW4gPSBzaXplb2Yoc2FhNzExMV9pMmNfaW5pdCk7Ci0JCQlyZXR1cm4gc2FhNzExMV9pbml0X2RlY29kZXIoY2xpZW50LCAmdmRpKTsKLQkJfQorCQl2ZGkuZGF0YSA9IHNhYTcxMTFfaTJjX2luaXQ7CisJCXZkaS5sZW4gPSBzaXplb2Yoc2FhNzExMV9pMmNfaW5pdCk7CisJCXJldHVybiBzYWE3MTExX2luaXRfZGVjb2RlcihjbGllbnQsICZ2ZGkpOwogCX0KIAogCWNhc2UgREVDT0RFUl9EVU1QOgpAQCAtMjM0LDE1ICsxOTcsMTUgQEAKIAkJZm9yIChpID0gMDsgaSA8IFNBQTcxMTFfTlJfUkVHOyBpICs9IDE2KSB7CiAJCQlpbnQgajsKIAotCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiAlMDN4IiwgSTJDX05BTUUoY2xpZW50KSwgaSk7CisJCQl2NGxfaW5mbyhjbGllbnQsICIlMDN4IiwgaSk7CiAJCQlmb3IgKGogPSAwOyBqIDwgMTYgJiYgaSArIGogPCBTQUE3MTExX05SX1JFRzsgKytqKSB7Ci0JCQkJcHJpbnRrKCIgJTAyeCIsCisJCQkJcHJpbnRrKEtFUk5fQ09OVCAiICUwMngiLAogCQkJCSAgICAgICBzYWE3MTExX3JlYWQoY2xpZW50LCBpICsgaikpOwogCQkJfQotCQkJcHJpbnRrKCJcbiIpOworCQkJcHJpbnRrKEtFUk5fQ09OVCAiXG4iKTsKIAkJfQotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX0dFVF9DQVBBQklMSVRJRVM6CiAJewpAQCAtMjU1LDggKzIxOCw4IEBACiAJCQkgICAgIFZJREVPX0RFQ09ERVJfQ0NJUjsKIAkJY2FwLT5pbnB1dHMgPSA4OwogCQljYXAtPm91dHB1dHMgPSAxOwotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX0dFVF9TVEFUVVM6CiAJewpAQCAtMjY1LDggKzIyOCw3IEBACiAJCWludCByZXM7CiAKIAkJc3RhdHVzID0gc2FhNzExMV9yZWFkKGNsaWVudCwgMHgxZik7Ci0JCWRwcmludGsoMSwgS0VSTl9ERUJVRyAiJXMgc3RhdHVzOiAweCUwMnhcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQlzdGF0dXMpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzdGF0dXM6IDB4JTAyeFxuIiwgc3RhdHVzKTsKIAkJcmVzID0gMDsKIAkJaWYgKChzdGF0dXMgJiAoMSA8PCA2KSkgPT0gMCkgewogCQkJcmVzIHw9IERFQ09ERVJfU1RBVFVTX0dPT0Q7CkBAIC0yOTQsOCArMjU2LDggQEAKIAkJCXJlcyB8PSBERUNPREVSX1NUQVRVU19DT0xPUjsKIAkJfQogCQkqaWFyZyA9IHJlczsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfR1BJTzoKIAl7CkBAIC0zNjIsOCArMzI0LDggQEAKIAogCQl9CiAJCWRlY29kZXItPm5vcm0gPSAqaWFyZzsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfSU5QVVQ6CiAJewpAQCAtMzg3LDggKzM0OSw4IEBACiAJCQkJCQkJICAgICAzKSA/IDB4ODAgOgogCQkJCQkJCSAgICAwKSk7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfT1VUUFVUOgogCXsKQEAgLTM5OCw4ICszNjAsOCBAQAogCQlpZiAoKmlhcmcgIT0gMCkgewogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9FTkFCTEVfT1VUUFVUOgogCXsKQEAgLTQzOSw4ICs0MDEsOCBAQAogCQkJCQkgICAgICAoZGVjb2Rlci0+cmVnWzB4MTFdICYgMHhmMykpOwogCQkJfQogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfU0VUX1BJQ1RVUkU6CiAJewpAQCAtNDU0LDggKzQxNiw4IEBACiAJCXNhYTcxMTFfd3JpdGUoY2xpZW50LCAweDBjLCBwaWMtPmNvbG91ciA+PiA5KTsKIAkJLyogV2Ugd2FudCAtMTI4IHRvIDEyNyB3ZSBnZXQgMC02NTUzNSAqLwogCQlzYWE3MTExX3dyaXRlKGNsaWVudCwgMHgwZCwgKHBpYy0+aHVlIC0gMzI3NjgpID4+IDgpOwotCX0KIAkJYnJlYWs7CisJfQogCiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC00NjYsNDggKzQyOCwyMyBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKgotICogR2VuZXJpYyBpMmMgcHJvYmUKLSAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKLSAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgSTJDX1NBQTcxMTEgPj4gMSwgSTJDX0NMSUVOVF9FTkQgfTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10gPSB7IDB4NDggPj4gMSwgSTJDX0NMSUVOVF9FTkQgfTsKIAotc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZSA9IEkyQ19DTElFTlRfRU5EOworSTJDX0NMSUVOVF9JTlNNT0Q7CiAKLXN0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudF9hZGRyZXNzX2RhdGEgYWRkcl9kYXRhID0gewotCS5ub3JtYWxfaTJjCQk9IG5vcm1hbF9pMmMsCi0JLnByb2JlCQkJPSAmaWdub3JlLAotCS5pZ25vcmUJCQk9ICZpZ25vcmUsCi19OwotCi1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaTJjX2RyaXZlcl9zYWE3MTExOwotCi1zdGF0aWMgaW50Ci1zYWE3MTExX2RldGVjdF9jbGllbnQgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAgYWRkcmVzcywKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAga2luZCkKK3N0YXRpYyBpbnQgc2FhNzExMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewogCWludCBpOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IHNhYTcxMTEgKmRlY29kZXI7CiAJc3RydWN0IHZpZGVvX2RlY29kZXJfaW5pdCB2ZGk7CiAKLQlkcHJpbnRrKDEsCi0JCUtFUk5fSU5GTwotCQkic2FhNzExMS5jOiBkZXRlY3Rpbmcgc2FhNzExMSBjbGllbnQgb24gYWRkcmVzcyAweCV4XG4iLAotCQlhZGRyZXNzIDw8IDEpOwotCiAJLyogQ2hlY2sgaWYgdGhlIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIG5lZWRlZCBmZWF0dXJlcyAqLwotCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKLQkJcmV0dXJuIDA7CisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCisJCXJldHVybiAtRU5PREVWOwogCi0JY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWNsaWVudCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0JY2xpZW50LT5hZGRyID0gYWRkcmVzczsKLQljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwotCWNsaWVudC0+ZHJpdmVyID0gJmkyY19kcml2ZXJfc2FhNzExMTsKLQlzdHJsY3B5KEkyQ19OQU1FKGNsaWVudCksICJzYWE3MTExIiwgc2l6ZW9mKEkyQ19OQU1FKGNsaWVudCkpKTsKKwl2NGxfaW5mbyhjbGllbnQsICJjaGlwIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQkJY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CiAKIAlkZWNvZGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNhYTcxMTEpLCBHRlBfS0VSTkVMKTsKIAlpZiAoZGVjb2RlciA9PSBOVUxMKSB7CkBAIC01MTksODIgKzQ1NiwzNyBAQAogCWRlY29kZXItPmVuYWJsZSA9IDE7CiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGVjb2Rlcik7CiAKLQlpID0gaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoaSkgewotCQlrZnJlZShjbGllbnQpOwotCQlrZnJlZShkZWNvZGVyKTsKLQkJcmV0dXJuIGk7Ci0JfQotCiAJdmRpLmRhdGEgPSBzYWE3MTExX2kyY19pbml0OwogCXZkaS5sZW4gPSBzaXplb2Yoc2FhNzExMV9pMmNfaW5pdCk7CiAJaSA9IHNhYTcxMTFfaW5pdF9kZWNvZGVyKGNsaWVudCwgJnZkaSk7CiAJaWYgKGkgPCAwKSB7Ci0JCWRwcmludGsoMSwgS0VSTl9FUlIgIiVzX2F0dGFjaCBlcnJvcjogaW5pdCBzdGF0dXMgJWRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBpKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiaW5pdCBzdGF0dXMgJWRcbiIsIGkpOwogCX0gZWxzZSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fSU5GTwotCQkJIiVzX2F0dGFjaDogY2hpcCB2ZXJzaW9uICV4IGF0IGFkZHJlc3MgMHgleFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIHNhYTcxMTFfcmVhZChjbGllbnQsIDB4MDApID4+IDQsCi0JCQljbGllbnQtPmFkZHIgPDwgMSk7CisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgInJldmlzaW9uICV4XG4iLAorCQkJc2FhNzExMV9yZWFkKGNsaWVudCwgMHgwMCkgPj4gNCk7CiAJfQotCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNhYTcxMTFfYXR0YWNoX2FkYXB0ZXIgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3N0YXRpYyBpbnQgc2FhNzExMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKLQlkcHJpbnRrKDEsCi0JCUtFUk5fSU5GTwotCQkic2FhNzExMS5jOiBzdGFydGluZyBwcm9iZSBmb3IgYWRhcHRlciAlcyAoMHgleClcbiIsCi0JCUkyQ19OQU1FKGFkYXB0ZXIpLCBhZGFwdGVyLT5pZCk7Ci0JcmV0dXJuIGkyY19wcm9iZShhZGFwdGVyLCAmYWRkcl9kYXRhLCAmc2FhNzExMV9kZXRlY3RfY2xpZW50KTsKLX0KLQotc3RhdGljIGludAotc2FhNzExMV9kZXRhY2hfY2xpZW50IChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQotewotCXN0cnVjdCBzYWE3MTExICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Ci0JaW50IGVycjsKLQotCWVyciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGVycikgewotCQlyZXR1cm4gZXJyOwotCX0KLQotCWtmcmVlKGRlY29kZXIpOwotCWtmcmVlKGNsaWVudCk7Ci0KKwlrZnJlZShpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7CiAJcmV0dXJuIDA7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX3NhYTcxMTEgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAic2FhNzExMSIsCi0JfSwKLQotCS5pZCA9IEkyQ19EUklWRVJJRF9TQUE3MTExQSwKLQotCS5hdHRhY2hfYWRhcHRlciA9IHNhYTcxMTFfYXR0YWNoX2FkYXB0ZXIsCi0JLmRldGFjaF9jbGllbnQgPSBzYWE3MTExX2RldGFjaF9jbGllbnQsCi0JLmNvbW1hbmQgPSBzYWE3MTExX2NvbW1hbmQsCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc2FhNzExMV9pZFtdID0geworCXsgInNhYTcxMTFfb2xkIiwgMCB9LAkvKiAic2FhNzExMSIgbWFwcyB0byB0aGUgc2FhNzExNSBkcml2ZXIgKi8KKwl7IH0KIH07CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc2FhNzExMV9pZCk7CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zYWE3MTExX2luaXQgKHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZpMmNfZHJpdmVyX3NhYTcxMTEpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNhYTcxMTFfZXhpdCAodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmaTJjX2RyaXZlcl9zYWE3MTExKTsKLX0KLQotbW9kdWxlX2luaXQoc2FhNzExMV9pbml0KTsKLW1vZHVsZV9leGl0KHNhYTcxMTFfZXhpdCk7CitzdGF0aWMgc3RydWN0IHY0bDJfaTJjX2RyaXZlcl9kYXRhIHY0bDJfaTJjX2RhdGEgPSB7CisJLm5hbWUgPSAic2FhNzExMSIsCisJLmRyaXZlcmlkID0gSTJDX0RSSVZFUklEX1NBQTcxMTFBLAorCS5jb21tYW5kID0gc2FhNzExMV9jb21tYW5kLAorCS5wcm9iZSA9IHNhYTcxMTFfcHJvYmUsCisJLnJlbW92ZSA9IHNhYTcxMTFfcmVtb3ZlLAorCS5pZF90YWJsZSA9IHNhYTcxMTFfaWQsCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTE0LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTQuYwppbmRleCBlNzkwNzU1Li43Y2E3MDlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTQuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTQuYwpAQCAtMjksNDMgKzI5LDI0IEBACiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0jaW5jbHVkZSA8bGludXgvZnMuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlIDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0jaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KLSNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KLQorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy1pZC5oPgogI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Lmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9fZGVjb2Rlci5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1pMmMtZHJ2LWxlZ2FjeS5oPgogCiBNT0RVTEVfREVTQ1JJUFRJT04oIlBoaWxpcHMgU0FBNzExNEggdmlkZW8gZGVjb2RlciBkcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIk1heGltIFlldnR5dXNoa2luIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLQotI2RlZmluZSBJMkNfTkFNRSh4KSAoeCktPm5hbWUKLQotCiBzdGF0aWMgaW50IGRlYnVnOwogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKLSNkZWZpbmUgZHByaW50ayhudW0sIGZvcm1hdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAoZGVidWcgPj0gbnVtKSBcCi0JCQlwcmludGsoZm9ybWF0LCAjI2FyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RydWN0IHNhYTcxMTQgewpAQCAtODEsOSArNjIsNiBAQAogCWludCBwbGF5YmFjazsKIH07CiAKLSNkZWZpbmUgICBJMkNfU0FBNzExNCAgICAgICAgMHg0MgotI2RlZmluZSAgIEkyQ19TQUE3MTE0QSAgICAgICAweDQwCi0KICNkZWZpbmUgICBJMkNfREVMQVkgICAxMAogCiAKQEAgLTEyOSwxOCArMTA3LDEyIEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1zYWE3MTE0X3dyaXRlIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgdmFsdWUpCitzdGF0aWMgaW5saW5lIGludCBzYWE3MTE0X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUpCiB7CiAJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWcsIHZhbHVlKTsKIH0KIAotc3RhdGljIGludAotc2FhNzExNF93cml0ZV9ibG9jayAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJICAgICBjb25zdCB1OCAgICAgICAgICAqZGF0YSwKLQkJICAgICB1bnNpZ25lZCBpbnQgICAgICAgbGVuKQorc3RhdGljIGludCBzYWE3MTE0X3dyaXRlX2Jsb2NrKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQogewogCWludCByZXQgPSAtMTsKIAl1OCByZWc7CkBAIC0xNjAsMTggKzEzMiwxNyBAQAogCQkJCXJlZysrOwogCQkJCWxlbiAtPSAyOwogCQkJCWRhdGEgKz0gMjsKLQkJCX0gd2hpbGUgKGxlbiA+PSAyICYmIGRhdGFbMF0gPT0gcmVnICYmCi0JCQkJIGJsb2NrX2xlbiA8IDMyKTsKLQkJCWlmICgocmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwKLQkJCQkJCSAgIGJsb2NrX2xlbikpIDwgMCkKKwkJCX0gd2hpbGUgKGxlbiA+PSAyICYmIGRhdGFbMF0gPT0gcmVnICYmIGJsb2NrX2xlbiA8IDMyKTsKKwkJCXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQsIGJsb2NrX2RhdGEsIGJsb2NrX2xlbik7CisJCQlpZiAocmV0IDwgMCkKIAkJCQlicmVhazsKIAkJfQogCX0gZWxzZSB7CiAJCS8qIGRvIHNvbWUgc2xvdyBJMkMgZW11bGF0aW9uIGtpbmQgb2YgdGhpbmcgKi8KIAkJd2hpbGUgKGxlbiA+PSAyKSB7CiAJCQlyZWcgPSAqZGF0YSsrOwotCQkJaWYgKChyZXQgPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgcmVnLAotCQkJCQkJICpkYXRhKyspKSA8IDApCisJCQlyZXQgPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgcmVnLCAqZGF0YSsrKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQkJbGVuIC09IDI7CiAJCX0KQEAgLTE4MCw5ICsxNTEsNyBAQAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1zYWE3MTE0X3JlYWQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JICAgICAgdTggICAgICAgICAgICAgICAgIHJlZykKK3N0YXRpYyBpbmxpbmUgaW50IHNhYTcxMTRfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcpCiB7CiAJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIHJlZyk7CiB9CkBAIC00NTIsMTUgKzQyMSwxMSBAQAogCTB4ZWYsIDB4MDAKIH07CiAKLXN0YXRpYyBpbnQKLXNhYTcxMTRfY29tbWFuZCAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkJIHVuc2lnbmVkIGludCAgICAgICBjbWQsCi0JCSB2b2lkICAgICAgICAgICAgICAqYXJnKQorc3RhdGljIGludCBzYWE3MTE0X2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdW5zaWduZWQgY21kLCB2b2lkICphcmcpCiB7CiAJc3RydWN0IHNhYTcxMTQgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAogCXN3aXRjaCAoY21kKSB7Ci0KIAljYXNlIDA6CiAJCS8vZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiB3cml0aW5nIGluaXRcbiIsIEkyQ19OQU1FKGNsaWVudCkpOwogCQkvL3NhYTcxMTRfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0LCBzaXplb2YoaW5pdCkpOwpAQCAtNDcwLDI3ICs0MzUsMjggQEAKIAl7CiAJCWludCBpOwogCi0JCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogZGVjb2RlciBkdW1wXG4iLCBJMkNfTkFNRShjbGllbnQpKTsKKwkJaWYgKCFkZWJ1ZykKKwkJCWJyZWFrOworCQl2NGxfaW5mbyhjbGllbnQsICJkZWNvZGVyIGR1bXBcbiIpOwogCiAJCWZvciAoaSA9IDA7IGkgPCAzMjsgaSArPSAxNikgewogCQkJaW50IGo7CiAKLQkJCXByaW50ayhLRVJOX0RFQlVHICIlczogJTAzeCIsIEkyQ19OQU1FKGNsaWVudCksIGkpOworCQkJdjRsX2luZm8oY2xpZW50LCAiJTAzeCIsIGkpOwogCQkJZm9yIChqID0gMDsgaiA8IDE2OyArK2opIHsKLQkJCQlwcmludGsoIiAlMDJ4IiwKKwkJCQlwcmludGsoS0VSTl9DT05UICIgJTAyeCIsCiAJCQkJICAgICAgIHNhYTcxMTRfcmVhZChjbGllbnQsIGkgKyBqKSk7CiAJCQl9Ci0JCQlwcmludGsoIlxuIik7CisJCQlwcmludGsoS0VSTl9DT05UICJcbiIpOwogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfR0VUX0NBUEFCSUxJVElFUzoKIAl7CiAJCXN0cnVjdCB2aWRlb19kZWNvZGVyX2NhcGFiaWxpdHkgKmNhcCA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBkZWNvZGVyIGdldCBjYXBhYmlsaXRpZXNcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiZ2V0IGNhcGFiaWxpdGllc1xuIik7CiAKIAkJY2FwLT5mbGFncyA9IFZJREVPX0RFQ09ERVJfUEFMIHwKIAkJCSAgICAgVklERU9fREVDT0RFUl9OVFNDIHwKQEAgLTQ5OCw4ICs0NjQsOCBAQAogCQkJICAgICBWSURFT19ERUNPREVSX0NDSVI7CiAJCWNhcC0+aW5wdXRzID0gODsKIAkJY2FwLT5vdXRwdXRzID0gMTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9HRVRfU1RBVFVTOgogCXsKQEAgLTUwOSw4ICs0NzUsNyBAQAogCiAJCXN0YXR1cyA9IHNhYTcxMTRfcmVhZChjbGllbnQsIDB4MWYpOwogCi0JCWRwcmludGsoMSwgS0VSTl9ERUJVRyAiJXMgc3RhdHVzOiAweCUwMnhcbiIsIEkyQ19OQU1FKGNsaWVudCksCi0JCQlzdGF0dXMpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzdGF0dXM6IDB4JTAyeFxuIiwgc3RhdHVzKTsKIAkJcmVzID0gMDsKIAkJaWYgKChzdGF0dXMgJiAoMSA8PCA2KSkgPT0gMCkgewogCQkJcmVzIHw9IERFQ09ERVJfU1RBVFVTX0dPT0Q7CkBAIC01MzgsOCArNTAzLDggQEAKIAkJCXJlcyB8PSBERUNPREVSX1NUQVRVU19DT0xPUjsKIAkJfQogCQkqaWFyZyA9IHJlczsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfTk9STToKIAl7CkBAIC01NDcsMTIgKzUxMiwxMSBAQAogCiAJCXNob3J0IGludCBob2ZmID0gMCwgdm9mZiA9IDAsIHcgPSAwLCBoID0gMDsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBkZWNvZGVyIHNldCBub3JtICIsCi0JCQlJMkNfTkFNRShjbGllbnQpKTsKLQkJc3dpdGNoICgqaWFyZykgeworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgbm9ybVxuIik7CiAKKwkJc3dpdGNoICgqaWFyZykgewogCQljYXNlIFZJREVPX01PREVfTlRTQzoKLQkJCWRwcmludGsoMSwgIk5UU0NcbiIpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiTlRTQ1xuIik7CiAJCQlkZWNvZGVyLT5yZWdbUkVHX0FERFIoMHgwNildID0KIAkJCSAgICBTQUFfNzExNF9OVFNDX0hTWU5DX1NUQVJUOwogCQkJZGVjb2Rlci0+cmVnW1JFR19BRERSKDB4MDcpXSA9CkBAIC01NzEsNyArNTM1LDcgQEAKIAkJCWJyZWFrOwogCiAJCWNhc2UgVklERU9fTU9ERV9QQUw6Ci0JCQlkcHJpbnRrKDEsICJQQUxcbiIpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiUEFMXG4iKTsKIAkJCWRlY29kZXItPnJlZ1tSRUdfQUREUigweDA2KV0gPQogCQkJICAgIFNBQV83MTE0X1BBTF9IU1lOQ19TVEFSVDsKIAkJCWRlY29kZXItPnJlZ1tSRUdfQUREUigweDA3KV0gPQpAQCAtNTkwLDkgKzU1NCw4IEBACiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJZHByaW50aygxLCAiIFVua25vd24gdmlkZW8gbW9kZSEhIVxuIik7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJVbmtub3duIHZpZGVvIG1vZGVcbiIpOwogCQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAkJfQogCiAKQEAgLTY0NCwyMiArNjA3LDIwIEBACiAJCXNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDgwLCAweDM2KTsJLy8gaS1wb3J0IGFuZCBzY2FsZXIgYmFjayBlbmQgY2xvY2sgc2VsZWN0aW9uCiAKIAkJZGVjb2Rlci0+bm9ybSA9ICppYXJnOwotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX1NFVF9JTlBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBkZWNvZGVyIHNldCBpbnB1dCAoJWQpXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgKmlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJzZXQgaW5wdXQgKCVkKVxuIiwgKmlhcmcpOwogCQlpZiAoKmlhcmcgPCAwIHx8ICppYXJnID4gNykgewogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAogCQlpZiAoZGVjb2Rlci0+aW5wdXQgIT0gKmlhcmcpIHsKLQkJCWRwcmludGsoMSwgS0VSTl9ERUJVRyAiJXM6IG5vdyBzZXR0aW5nICVzIGlucHV0XG4iLAotCQkJCUkyQ19OQU1FKGNsaWVudCksCisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJub3cgc2V0dGluZyAlcyBpbnB1dFxuIiwKIAkJCQkqaWFyZyA+PSA2ID8gIlMtVmlkZW8iIDogIkNvbXBvc2l0ZSIpOwogCQkJZGVjb2Rlci0+aW5wdXQgPSAqaWFyZzsKIApAQCAtNjkwLDMwICs2NTEsMjkgQEAKIAkJCXNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDBlLAogCQkJCSAgICAgIGRlY29kZXItPnJlZ1tSRUdfQUREUigweDBlKV0pOwogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfU0VUX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBkZWNvZGVyIHNldCBvdXRwdXRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic2V0IG91dHB1dFxuIik7CiAKIAkJLyogbm90IG11Y2ggY2hvaWNlIG9mIG91dHB1dHMgKi8KIAkJaWYgKCppYXJnICE9IDApIHsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfRU5BQkxFX09VVFBVVDoKIAl7CiAJCWludCAqaWFyZyA9IGFyZzsKIAkJaW50IGVuYWJsZSA9ICgqaWFyZyAhPSAwKTsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBkZWNvZGVyICVzIG91dHB1dFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGVuYWJsZSA/ICJlbmFibGUiIDogImRpc2FibGUiKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiJXMgb3V0cHV0XG4iLAorCQkJZW5hYmxlID8gImVuYWJsZSIgOiAiZGlzYWJsZSIpOwogCiAJCWRlY29kZXItPnBsYXliYWNrID0gIWVuYWJsZTsKIApAQCAtNzU0LDE4ICs3MTQsMTYgQEAKIAkJCXNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDgwLCAweDM2KTsKIAogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfU0VUX1BJQ1RVUkU6CiAJewogCQlzdHJ1Y3QgdmlkZW9fcGljdHVyZSAqcGljID0gYXJnOwogCi0JCWRwcmludGsoMSwKLQkJCUtFUk5fREVCVUcKLQkJCSIlczogZGVjb2RlciBzZXQgcGljdHVyZSBicmlnaHQ9JWQgY29udHJhc3Q9JWQgc2F0dXJhdGlvbj0lZCBodWU9JWRcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBwaWMtPmJyaWdodG5lc3MsIHBpYy0+Y29udHJhc3QsCi0JCQlwaWMtPmNvbG91ciwgcGljLT5odWUpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsCisJCQkiZGVjb2RlciBzZXQgcGljdHVyZSBicmlnaHQ9JWQgY29udHJhc3Q9JWQgc2F0dXJhdGlvbj0lZCBodWU9JWRcbiIsCisJCQlwaWMtPmJyaWdodG5lc3MsIHBpYy0+Y29udHJhc3QsIHBpYy0+Y29sb3VyLCBwaWMtPmh1ZSk7CiAKIAkJaWYgKGRlY29kZXItPmJyaWdodCAhPSBwaWMtPmJyaWdodG5lc3MpIHsKIAkJCS8qIFdlIHdhbnQgMCB0byAyNTUgd2UgZ2V0IDAtNjU1MzUgKi8KQEAgLTc4OSw4ICs3NDcsOCBAQAogCQkJc2FhNzExNF93cml0ZShjbGllbnQsIDB4MGQsCiAJCQkJICAgICAgKGRlY29kZXItPmh1ZSAtIDMyNzY4KSA+PiA4KTsKIAkJfQotCX0KIAkJYnJlYWs7CisJfQogCiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC04MDEsNTggKzc1OSwzMCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKgotICogR2VuZXJpYyBpMmMgcHJvYmUKLSAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKLSAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9Ci0gICAgeyBJMkNfU0FBNzExNCA+PiAxLCBJMkNfU0FBNzExNEEgPj4gMSwgSTJDX0NMSUVOVF9FTkQgfTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10gPSB7IDB4NDIgPj4gMSwgMHg0MCA+PiAxLCBJMkNfQ0xJRU5UX0VORCB9OwogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaWdub3JlID0gSTJDX0NMSUVOVF9FTkQ7CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50X2FkZHJlc3NfZGF0YSBhZGRyX2RhdGEgPSB7Ci0JLm5vcm1hbF9pMmMJCT0gbm9ybWFsX2kyYywKLQkucHJvYmUJCQk9ICZpZ25vcmUsCi0JLmlnbm9yZQkJCT0gJmlnbm9yZSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX3NhYTcxMTQ7Ci0KLXN0YXRpYyBpbnQKLXNhYTcxMTRfZGV0ZWN0X2NsaWVudCAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBhZGRyZXNzLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBraW5kKQorc3RhdGljIGludCBzYWE3MTE0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCiB7CiAJaW50IGksIGVyclszMF07CiAJc2hvcnQgaW50IGhvZmYgPSBTQUFfNzExNF9OVFNDX0hPRkZTRVQ7CiAJc2hvcnQgaW50IHZvZmYgPSBTQUFfNzExNF9OVFNDX1ZPRkZTRVQ7CiAJc2hvcnQgaW50IHcgPSBTQUFfNzExNF9OVFNDX1dJRFRIOwogCXNob3J0IGludCBoID0gU0FBXzcxMTRfTlRTQ19IRUlHSFQ7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAlzdHJ1Y3Qgc2FhNzExNCAqZGVjb2RlcjsKIAotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJzYWE3MTE0LmM6IGRldGVjdGluZyBzYWE3MTE0IGNsaWVudCBvbiBhZGRyZXNzIDB4JXhcbiIsCi0JCWFkZHJlc3MgPDwgMSk7Ci0KIAkvKiBDaGVjayBpZiB0aGUgYWRhcHRlciBzdXBwb3J0cyB0aGUgbmVlZGVkIGZlYXR1cmVzICovCi0JaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQotCQlyZXR1cm4gMDsKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIC1FTk9ERVY7CiAKLQljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICghY2xpZW50KQotCQlyZXR1cm4gLUVOT01FTTsKLQljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwotCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7Ci0JY2xpZW50LT5kcml2ZXIgPSAmaTJjX2RyaXZlcl9zYWE3MTE0OwotCXN0cmxjcHkoSTJDX05BTUUoY2xpZW50KSwgInNhYTcxMTQiLCBzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOworCXY0bF9pbmZvKGNsaWVudCwgImNoaXAgZm91bmQgQCAweCV4ICglcylcbiIsCisJCQljbGllbnQtPmFkZHIgPDwgMSwgY2xpZW50LT5hZGFwdGVyLT5uYW1lKTsKIAogCWRlY29kZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2FhNzExNCksIEdGUF9LRVJORUwpOwotCWlmIChkZWNvZGVyID09IE5VTEwpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoZGVjb2RlciA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAJZGVjb2Rlci0+bm9ybSA9IFZJREVPX01PREVfTlRTQzsKIAlkZWNvZGVyLT5pbnB1dCA9IC0xOwogCWRlY29kZXItPmVuYWJsZSA9IDE7CkBAIC05MzcsOCArODY3LDcgQEAKIAlkZWNvZGVyLT5yZWdbUkVHX0FERFIoMHgwZSldIHw9IDE7CS8vIGNvbWJmaWx0ZXIgb24KIAogCi0JZHByaW50aygxLCBLRVJOX0RFQlVHICIlc19hdHRhY2g6IHN0YXJ0aW5nIGRlY29kZXIgaW5pdFxuIiwKLQkJSTJDX05BTUUoY2xpZW50KSk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhcnRpbmcgaW5pdFxuIik7CiAKIAllcnJbMF0gPQogCSAgICBzYWE3MTE0X3dyaXRlX2Jsb2NrKGNsaWVudCwgZGVjb2Rlci0+cmVnICsgKDB4MjAgPDwgMSksCkBAIC05NjIsMjggKzg5MSwyMyBAQAogCiAJZm9yIChpID0gMDsgaSA8PSA1OyBpKyspIHsKIAkJaWYgKGVycltpXSA8IDApIHsKLQkJCWRwcmludGsoMSwKLQkJCQlLRVJOX0VSUgotCQkJCSIlc19hdHRhY2g6IGluaXQgZXJyb3IgJWQgYXQgc3RhZ2UgJWQsIGxlYXZpbmcgYXR0YWNoLlxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpLCBpLCBlcnJbaV0pOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkJCSJpbml0IGVycm9yICVkIGF0IHN0YWdlICVkLCBsZWF2aW5nIGF0dGFjaC5cbiIsCisJCQkJaSwgZXJyW2ldKTsKIAkJCWtmcmVlKGRlY29kZXIpOwotCQkJa2ZyZWUoY2xpZW50KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIC1FSU87CiAJCX0KIAl9CiAKIAlmb3IgKGkgPSA2OyBpIDwgODsgaSsrKSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fREVCVUcKLQkJCSIlc19hdHRhY2g6IHJlZ1sweCUwMnhdID0gMHglMDJ4ICgweCUwMngpXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgaSwgc2FhNzExNF9yZWFkKGNsaWVudCwgaSksCisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwKKwkJCSJyZWdbMHglMDJ4XSA9IDB4JTAyeCAoMHglMDJ4KVxuIiwKKwkJCWksIHNhYTcxMTRfcmVhZChjbGllbnQsIGkpLAogCQkJZGVjb2Rlci0+cmVnW1JFR19BRERSKGkpXSk7CiAJfQogCi0JZHByaW50aygxLAotCQlLRVJOX0RFQlVHCi0JCSIlc19hdHRhY2g6IHBlcmZvcm1pbmcgZGVjb2RlciByZXNldCBzZXF1ZW5jZVxuIiwKLQkJSTJDX05BTUUoY2xpZW50KSk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkicGVyZm9ybWluZyBkZWNvZGVyIHJlc2V0IHNlcXVlbmNlXG4iKTsKIAogCWVycls2XSA9IHNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDgwLCAweDA2KTsJLy8gaS1wb3J0IGFuZCBzY2FsZXIgYmFja2VuZCBjbG9jayBzZWxlY3Rpb24sIHRhc2sgQSZCIG9mZgogCWVycls3XSA9IHNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDg4LCAweGQ4KTsJLy8gc3cgcmVzZXQgc2NhbGVyCkBAIC05OTEsMTkgKzkxNSwxNSBAQAogCiAJZm9yIChpID0gNjsgaSA8PSA4OyBpKyspIHsKIAkJaWYgKGVycltpXSA8IDApIHsKLQkJCWRwcmludGsoMSwKLQkJCQlLRVJOX0VSUgotCQkJCSIlc19hdHRhY2g6IGluaXQgZXJyb3IgJWQgYXQgc3RhZ2UgJWQsIGxlYXZpbmcgYXR0YWNoLlxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpLCBpLCBlcnJbaV0pOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkJCSJpbml0IGVycm9yICVkIGF0IHN0YWdlICVkLCBsZWF2aW5nIGF0dGFjaC5cbiIsCisJCQkJaSwgZXJyW2ldKTsKIAkJCWtmcmVlKGRlY29kZXIpOwotCQkJa2ZyZWUoY2xpZW50KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIC1FSU87CiAJCX0KIAl9CiAKLQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXNfYXR0YWNoOiBwZXJmb3JtaW5nIHRoZSByZXN0IG9mIGluaXRcbiIsCi0JCUkyQ19OQU1FKGNsaWVudCkpOwotCisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAicGVyZm9ybWluZyB0aGUgcmVzdCBvZiBpbml0XG4iKTsKIAogCWVycls5XSA9IHNhYTcxMTRfd3JpdGUoY2xpZW50LCAweDAxLCBkZWNvZGVyLT5yZWdbUkVHX0FERFIoMHgwMSldKTsKIAllcnJbMTBdID0gc2FhNzExNF93cml0ZV9ibG9jayhjbGllbnQsIGRlY29kZXItPnJlZyArICgweDAzIDw8IDEpLCAoMHgxZSArIDEgLSAweDAzKSA8PCAxKTsJLy8gYmlnIHNlcQpAQCAtMTAzOSwzNyArOTU5LDMyIEBACiAKIAlmb3IgKGkgPSA5OyBpIDw9IDE4OyBpKyspIHsKIAkJaWYgKGVycltpXSA8IDApIHsKLQkJCWRwcmludGsoMSwKLQkJCQlLRVJOX0VSUgotCQkJCSIlc19hdHRhY2g6IGluaXQgZXJyb3IgJWQgYXQgc3RhZ2UgJWQsIGxlYXZpbmcgYXR0YWNoLlxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpLCBpLCBlcnJbaV0pOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkJCSJpbml0IGVycm9yICVkIGF0IHN0YWdlICVkLCBsZWF2aW5nIGF0dGFjaC5cbiIsCisJCQkJaSwgZXJyW2ldKTsKIAkJCWtmcmVlKGRlY29kZXIpOwotCQkJa2ZyZWUoY2xpZW50KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIC1FSU87CiAJCX0KIAl9CiAKIAogCWZvciAoaSA9IDY7IGkgPCA4OyBpKyspIHsKLQkJZHByaW50aygxLAotCQkJS0VSTl9ERUJVRwotCQkJIiVzX2F0dGFjaDogcmVnWzB4JTAyeF0gPSAweCUwMnggKDB4JTAyeClcbiIsCi0JCQlJMkNfTkFNRShjbGllbnQpLCBpLCBzYWE3MTE0X3JlYWQoY2xpZW50LCBpKSwKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkJInJlZ1sweCUwMnhdID0gMHglMDJ4ICgweCUwMngpXG4iLAorCQkJaSwgc2FhNzExNF9yZWFkKGNsaWVudCwgaSksCiAJCQlkZWNvZGVyLT5yZWdbUkVHX0FERFIoaSldKTsKIAl9CiAKIAogCWZvciAoaSA9IDB4MTE7IGkgPD0gMHgxMzsgaSsrKSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fREVCVUcKLQkJCSIlc19hdHRhY2g6IHJlZ1sweCUwMnhdID0gMHglMDJ4ICgweCUwMngpXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgaSwgc2FhNzExNF9yZWFkKGNsaWVudCwgaSksCisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwKKwkJCSJyZWdbMHglMDJ4XSA9IDB4JTAyeCAoMHglMDJ4KVxuIiwKKwkJCWksIHNhYTcxMTRfcmVhZChjbGllbnQsIGkpLAogCQkJZGVjb2Rlci0+cmVnW1JFR19BRERSKGkpXSk7CiAJfQogCiAKLQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzX2F0dGFjaDogc2V0dGluZyB2aWRlbyBpbnB1dFxuIiwKLQkJSTJDX05BTUUoY2xpZW50KSk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic2V0dGluZyB2aWRlbyBpbnB1dFxuIik7CiAKIAllcnJbMTldID0KIAkgICAgc2FhNzExNF93cml0ZShjbGllbnQsIDB4MDIsIGRlY29kZXItPnJlZ1tSRUdfQUREUigweDAyKV0pOwpAQCAtMTA4MCwyMCArOTk1LDE1IEBACiAKIAlmb3IgKGkgPSAxOTsgaSA8PSAyMTsgaSsrKSB7CiAJCWlmIChlcnJbaV0gPCAwKSB7Ci0JCQlkcHJpbnRrKDEsCi0JCQkJS0VSTl9FUlIKLQkJCQkiJXNfYXR0YWNoOiBpbml0IGVycm9yICVkIGF0IHN0YWdlICVkLCBsZWF2aW5nIGF0dGFjaC5cbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSwgaSwgZXJyW2ldKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwKKwkJCQkiaW5pdCBlcnJvciAlZCBhdCBzdGFnZSAlZCwgbGVhdmluZyBhdHRhY2guXG4iLAorCQkJCWksIGVycltpXSk7CiAJCQlrZnJlZShkZWNvZGVyKTsKLQkJCWtmcmVlKGNsaWVudCk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiAtRUlPOwogCQl9CiAJfQogCi0JZHByaW50aygxLAotCQlLRVJOX0RFQlVHCi0JCSIlc19hdHRhY2g6IHBlcmZvcm1pbmcgZGVjb2RlciByZXNldCBzZXF1ZW5jZVxuIiwKLQkJSTJDX05BTUUoY2xpZW50KSk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAicGVyZm9ybWluZyBkZWNvZGVyIHJlc2V0IHNlcXVlbmNlXG4iKTsKIAogCWVyclsyMl0gPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgMHg4OCwgMHhkOCk7CS8vIHN3IHJlc2V0IHNjYWxlcgogCWVyclsyM10gPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgMHg4OCwgMHhmOCk7CS8vIHN3IHJlc2V0IHNjYWxlciByZWxlYXNlCkBAIC0xMTAyLDEzICsxMDEyLDExIEBACiAKIAlmb3IgKGkgPSAyMjsgaSA8PSAyNDsgaSsrKSB7CiAJCWlmIChlcnJbaV0gPCAwKSB7Ci0JCQlkcHJpbnRrKDEsCi0JCQkJS0VSTl9FUlIKLQkJCQkiJXNfYXR0YWNoOiBpbml0IGVycm9yICVkIGF0IHN0YWdlICVkLCBsZWF2aW5nIGF0dGFjaC5cbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSwgaSwgZXJyW2ldKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwKKwkJCQkiaW5pdCBlcnJvciAlZCBhdCBzdGFnZSAlZCwgbGVhdmluZyBhdHRhY2guXG4iLAorCQkJCWksIGVycltpXSk7CiAJCQlrZnJlZShkZWNvZGVyKTsKLQkJCWtmcmVlKGNsaWVudCk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiAtRUlPOwogCQl9CiAJfQogCkBAIC0xMTE2LDEwMSArMTAyNCw0NSBAQAogCWVyclsyNl0gPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgMHgwNywgaW5pdFtSRUdfQUREUigweDA3KV0pOwogCWVyclsyN10gPSBzYWE3MTE0X3dyaXRlKGNsaWVudCwgMHgxMCwgaW5pdFtSRUdfQUREUigweDEwKV0pOwogCi0JZHByaW50aygxLAotCQlLRVJOX0lORk8KLQkJIiVzX2F0dGFjaDogY2hpcCB2ZXJzaW9uICV4LCBkZWNvZGVyIHN0YXR1cyAweCUwMnhcbiIsCi0JCUkyQ19OQU1FKGNsaWVudCksIHNhYTcxMTRfcmVhZChjbGllbnQsIDB4MDApID4+IDQsCisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiY2hpcCB2ZXJzaW9uICV4LCBkZWNvZGVyIHN0YXR1cyAweCUwMnhcbiIsCisJCXNhYTcxMTRfcmVhZChjbGllbnQsIDB4MDApID4+IDQsCiAJCXNhYTcxMTRfcmVhZChjbGllbnQsIDB4MWYpKTsKLQlkcHJpbnRrKDEsCi0JCUtFUk5fREVCVUcKLQkJIiVzX2F0dGFjaDogcG93ZXIgc2F2ZSBjb250cm9sOiAweCUwMngsIHNjYWxlciBzdGF0dXM6IDB4JTAyeFxuIiwKLQkJSTJDX05BTUUoY2xpZW50KSwgc2FhNzExNF9yZWFkKGNsaWVudCwgMHg4OCksCisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LAorCQkicG93ZXIgc2F2ZSBjb250cm9sOiAweCUwMngsIHNjYWxlciBzdGF0dXM6IDB4JTAyeFxuIiwKKwkJc2FhNzExNF9yZWFkKGNsaWVudCwgMHg4OCksCiAJCXNhYTcxMTRfcmVhZChjbGllbnQsIDB4OGYpKTsKIAogCiAJZm9yIChpID0gMHg5NDsgaSA8IDB4OTY7IGkrKykgewotCQlkcHJpbnRrKDEsCi0JCQlLRVJOX0RFQlVHCi0JCQkiJXNfYXR0YWNoOiByZWdbMHglMDJ4XSA9IDB4JTAyeCAoMHglMDJ4KVxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGksIHNhYTcxMTRfcmVhZChjbGllbnQsIGkpLAorCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsCisJCQkicmVnWzB4JTAyeF0gPSAweCUwMnggKDB4JTAyeClcbiIsCisJCQlpLCBzYWE3MTE0X3JlYWQoY2xpZW50LCBpKSwKIAkJCWRlY29kZXItPnJlZ1tSRUdfQUREUihpKV0pOwogCX0KIAotCWkgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOwotCWlmIChpKSB7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JCWtmcmVlKGRlY29kZXIpOwotCQlyZXR1cm4gaTsKLQl9Ci0KIAkvL2kgPSBzYWE3MTE0X3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdCwgc2l6ZW9mKGluaXQpKTsKLQlpID0gMDsKLQlpZiAoaSA8IDApIHsKLQkJZHByaW50aygxLCBLRVJOX0VSUiAiJXNfYXR0YWNoIGVycm9yOiBpbml0IHN0YXR1cyAlZFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGkpOwotCX0gZWxzZSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fSU5GTwotCQkJIiVzX2F0dGFjaDogY2hpcCB2ZXJzaW9uICV4IGF0IGFkZHJlc3MgMHgleFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIHNhYTcxMTRfcmVhZChjbGllbnQsIDB4MDApID4+IDQsCi0JCQljbGllbnQtPmFkZHIgPDwgMSk7Ci0JfQotCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNhYTcxMTRfYXR0YWNoX2FkYXB0ZXIgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3N0YXRpYyBpbnQgc2FhNzExNF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKLQlkcHJpbnRrKDEsCi0JCUtFUk5fSU5GTwotCQkic2FhNzExNC5jOiBzdGFydGluZyBwcm9iZSBmb3IgYWRhcHRlciAlcyAoMHgleClcbiIsCi0JCUkyQ19OQU1FKGFkYXB0ZXIpLCBhZGFwdGVyLT5pZCk7Ci0JcmV0dXJuIGkyY19wcm9iZShhZGFwdGVyLCAmYWRkcl9kYXRhLCAmc2FhNzExNF9kZXRlY3RfY2xpZW50KTsKLX0KLQotc3RhdGljIGludAotc2FhNzExNF9kZXRhY2hfY2xpZW50IChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQotewotCXN0cnVjdCBzYWE3MTE0ICpkZWNvZGVyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Ci0JaW50IGVycjsKLQotCWVyciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGVycikgewotCQlyZXR1cm4gZXJyOwotCX0KLQotCWtmcmVlKGRlY29kZXIpOwotCWtmcmVlKGNsaWVudCk7Ci0KKwlrZnJlZShpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7CiAJcmV0dXJuIDA7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX3NhYTcxMTQgPSB7Ci0JLmRyaXZlciA9IHsKLQkJLm5hbWUgPSAic2FhNzExNCIsCi0JfSwKLQotCS5pZCA9IEkyQ19EUklWRVJJRF9TQUE3MTE0LAotCi0JLmF0dGFjaF9hZGFwdGVyID0gc2FhNzExNF9hdHRhY2hfYWRhcHRlciwKLQkuZGV0YWNoX2NsaWVudCA9IHNhYTcxMTRfZGV0YWNoX2NsaWVudCwKLQkuY29tbWFuZCA9IHNhYTcxMTRfY29tbWFuZCwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzYWE3MTE0X2lkW10gPSB7CisJeyAic2FhNzExNF9vbGQiLCAwIH0sCS8qICJzYWE3MTE0IiBtYXBzIHRvIHRoZSBzYWE3MTE1IGRyaXZlciAqLworCXsgfQogfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzYWE3MTE0X2lkKTsKIAotc3RhdGljIGludCBfX2luaXQKLXNhYTcxMTRfaW5pdCAodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmkyY19kcml2ZXJfc2FhNzExNCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotc2FhNzExNF9leGl0ICh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZpMmNfZHJpdmVyX3NhYTcxMTQpOwotfQotCi1tb2R1bGVfaW5pdChzYWE3MTE0X2luaXQpOwotbW9kdWxlX2V4aXQoc2FhNzExNF9leGl0KTsKK3N0YXRpYyBzdHJ1Y3QgdjRsMl9pMmNfZHJpdmVyX2RhdGEgdjRsMl9pMmNfZGF0YSA9IHsKKwkubmFtZSA9ICJzYWE3MTE0IiwKKwkuZHJpdmVyaWQgPSBJMkNfRFJJVkVSSURfU0FBNzExNCwKKwkuY29tbWFuZCA9IHNhYTcxMTRfY29tbWFuZCwKKwkucHJvYmUgPSBzYWE3MTE0X3Byb2JlLAorCS5yZW1vdmUgPSBzYWE3MTE0X3JlbW92ZSwKKwkuaWRfdGFibGUgPSBzYWE3MTE0X2lkLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEyNy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTI3LmMKaW5kZXggZDBlODNmZS4uY2MwMmZiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTI3LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTI3LmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIE5vdGU6IHRoZSBzYWE3MTI2IGlzIGlkZW50aWNhbCB0byB0aGUgc2FhNzEyNywgYW5kIHRoZSBzYWE3MTI4IGlzCiAgKiBpZGVudGljYWwgdG8gdGhlIHNhYTcxMjksIGV4Y2VwdCB0aGF0IHRoZSBzYWE3MTI2IGFuZCBzYWE3MTI4IGhhdmUKICAqIG1hY3JvdmlzaW9uIGFudGktdGFwaW5nIHN1cHBvcnQuIFRoaXMgZHJpdmVyIHdpbGwgYWxtb3N0IGNlcnRhaW5seQotICogd29yayBmaW5kIGZvciB0aG9zZSBjaGlwcywgZXhjZXB0IG9mIGNvdXJzZSBmb3IgdGhlIG1pc3NpbmcgYW50aS10YXBpbmcKKyAqIHdvcmsgZmluZSBmb3IgdGhvc2UgY2hpcHMsIGV4Y2VwdCBvZiBjb3Vyc2UgZm9yIHRoZSBtaXNzaW5nIGFudGktdGFwaW5nCiAgKiBzdXBwb3J0LgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1kdmIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWR2Yi5jCmluZGV4IDg3YzEwOTguLjhjNDYxMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWR2Yi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWR2Yi5jCkBAIC01MzUsMTEgKzUzNSwxNiBAQAogCQkJCXN0cnVjdCB0ZGExMDA0eF9jb25maWcgKmNkZWNfY29uZiwKIAkJCQlzdHJ1Y3QgdGRhODI3eF9jb25maWcgKnR1bmVyX2NvbmYpCiB7Ci0JZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDQ2X2F0dGFjaCwgY2RlY19jb25mLCAmZGV2LT5pMmNfYWRhcCk7Ci0JaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqZmUwOworCisJLyogR2V0IHRoZSBmaXJzdCBmcm9udGVuZCAqLworCWZlMCA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoJmRldi0+ZnJvbnRlbmRzLCAxKTsKKworCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsIGNkZWNfY29uZiwgJmRldi0+aTJjX2FkYXApOworCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgewogCQlpZiAoY2RlY19jb25mLT5pMmNfZ2F0ZSkKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMuaTJjX2dhdGVfY3RybCA9IHRkYTgyOTBfaTJjX2dhdGVfY3RybDsKLQkJaWYgKGR2Yl9hdHRhY2godGRhODI3eF9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5pMmNfZ2F0ZV9jdHJsID0gdGRhODI5MF9pMmNfZ2F0ZV9jdHJsOworCQlpZiAoZHZiX2F0dGFjaCh0ZGE4Mjd4X2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkgICAgICAgY2RlY19jb25mLT50dW5lcl9hZGRyZXNzLAogCQkJICAgICAgICZkZXYtPmkyY19hZGFwLCB0dW5lcl9jb25mKSkKIAkJCXJldHVybiAwOwpAQCAtOTQ0LDEyICs5NDksMzAgQEAKIHsKIAlpbnQgcmV0OwogCWludCBhdHRhY2hfeGMzMDI4ID0gMDsKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kICpmZTA7CisKKwkvKiBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG11bHRpLWZyb250ZW5kICovCisJbXV0ZXhfaW5pdCgmZGV2LT5mcm9udGVuZHMubG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmRldi0+ZnJvbnRlbmRzLmZlbGlzdCk7CisJZGV2LT5mcm9udGVuZHMuYWN0aXZlX2ZlX2lkID0gMDsKKworCXByaW50ayhLRVJOX0lORk8gIiVzKCkgYWxsb2NhdGluZyAxIGZyb250ZW5kXG4iLCBfX2Z1bmNfXyk7CisKKwlpZiAodmlkZW9idWZfZHZiX2FsbG9jX2Zyb250ZW5kKCZkZXYtPmZyb250ZW5kcywgMSkgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzKCkgZmFpbGVkIHRvIGFsbG9jXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qIEdldCB0aGUgZmlyc3QgZnJvbnRlbmQgKi8KKwlmZTAgPSB2aWRlb2J1Zl9kdmJfZ2V0X2Zyb250ZW5kKCZkZXYtPmZyb250ZW5kcywgMSk7CisJaWYgKCFmZTApCisJCXJldHVybiAtRUlOVkFMOwogCiAJLyogaW5pdCBzdHJ1Y3QgdmlkZW9idWZfZHZiICovCiAJZGV2LT50cy5ucl9idWZzICAgID0gMzI7CiAJZGV2LT50cy5ucl9wYWNrZXRzID0gMzIqNDsKLQlkZXYtPmR2Yi5uYW1lID0gZGV2LT5uYW1lOwotCXZpZGVvYnVmX3F1ZXVlX3NnX2luaXQoJmRldi0+ZHZiLmR2YnEsICZzYWE3MTM0X3RzX3FvcHMsCisJZmUwLT5kdmIubmFtZSA9IGRldi0+bmFtZTsKKwl2aWRlb2J1Zl9xdWV1ZV9zZ19pbml0KCZmZTAtPmR2Yi5kdmJxLCAmc2FhNzEzNF90c19xb3BzLAogCQkJICAgICZkZXYtPnBjaS0+ZGV2LCAmZGV2LT5zbG9jaywKIAkJCSAgICBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUsCiAJCQkgICAgVjRMMl9GSUVMRF9BTFRFUk5BVEUsCkBAIC05NTksNDcgKzk4Miw0NyBAQAogCXN3aXRjaCAoZGV2LT5ib2FyZCkgewogCWNhc2UgU0FBNzEzNF9CT0FSRF9QSU5OQUNMRV8zMDBJX0RWQlRfUEFMOgogCQlkcHJpbnRrKCJwaW5uYWNsZSAzMDBpIGR2YiBzZXR1cFxuIik7Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsICZwaW5uYWNsZV8zMDBpLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLCAmcGlubmFjbGVfMzAwaSwKIAkJCQkJICAgICAgICZkZXYtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5zZXRfcGFyYW1zID0gbXQzNTJfcGlubmFjbGVfdHVuZXJfc2V0X3BhcmFtczsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5zZXRfcGFyYW1zID0gbXQzNTJfcGlubmFjbGVfdHVuZXJfc2V0X3BhcmFtczsKIAkJfQogCQlicmVhazsKIAljYXNlIFNBQTcxMzRfQk9BUkRfQVZFUk1FRElBXzc3NzoKIAljYXNlIFNBQTcxMzRfQk9BUkRfQVZFUk1FRElBX0ExNkFSOgogCQlkcHJpbnRrKCJhdmVydHYgNzc3IGR2YiBzZXR1cFxuIik7Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsICZhdmVybWVkaWFfNzc3LAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobXQzNTJfYXR0YWNoLCAmYXZlcm1lZGlhXzc3NywKIAkJCQkJICAgICAgICZkZXYtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQlkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWR2Yl9hdHRhY2goc2ltcGxlX3R1bmVyX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJICAgJmRldi0+aTJjX2FkYXAsIDB4NjEsCiAJCQkJICAgVFVORVJfUEhJTElQU19URDEzMTYpOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9BVkVSTUVESUFfQTE2RDoKIAkJZHByaW50aygiQXZlck1lZGlhIEExNkQgZHZiIHNldHVwXG4iKTsKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKIAkJCQkJCSZhdmVybWVkaWFfeGMzMDI4X210MzUyX2RldiwKIAkJCQkJCSZkZXYtPmkyY19hZGFwKTsKIAkJYXR0YWNoX3hjMzAyOCA9IDE7CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9NRDcxMzQ6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCiAJCQkJCSAgICAgICAmbWVkaW9uX2NhcmRidXMsCiAJCQkJCSAgICAgICAmZGV2LT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCSAgICZkZXYtPmkyY19hZGFwLCBtZWRpb25fY2FyZGJ1cy50dW5lcl9hZGRyZXNzLAogCQkJCSAgIFRVTkVSX1BISUxJUFNfRk1EMTIxNk1FX01LMyk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX1BISUxJUFNfVE9VR0g6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCiAJCQkJCSAgICAgICAmcGhpbGlwc190dTEyMTZfNjBfY29uZmlnLAogCQkJCQkgICAgICAgJmRldi0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLmluaXQgPSBwaGlsaXBzX3R1MTIxNl9pbml0OwotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcyA9IHBoaWxpcHNfdGRhNjY1MV9wbGxfc2V0OworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLmluaXQgPSBwaGlsaXBzX3R1MTIxNl9pbml0OworCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcyA9IHBoaWxpcHNfdGRhNjY1MV9wbGxfc2V0OwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9GTFlEVkJURFVPOgpAQCAtMTAxMCwyNCArMTAzMywyNCBAQAogCQlicmVhazsKIAljYXNlIFNBQTcxMzRfQk9BUkRfUEhJTElQU19FVVJPUEE6CiAJY2FzZSBTQUE3MTM0X0JPQVJEX1ZJREVPTUFURV9EVkJUXzMwMDoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDQ2X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDQ2X2F0dGFjaCwKIAkJCQkJICAgICAgICZwaGlsaXBzX2V1cm9wYV9jb25maWcsCiAJCQkJCSAgICAgICAmZGV2LT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJZGV2LT5vcmlnaW5hbF9kZW1vZF9zbGVlcCA9IGRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXA7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNsZWVwID0gcGhpbGlwc19ldXJvcGFfZGVtb2Rfc2xlZXA7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5pbml0ID0gcGhpbGlwc19ldXJvcGFfdHVuZXJfaW5pdDsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLnNsZWVwID0gcGhpbGlwc19ldXJvcGFfdHVuZXJfc2xlZXA7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5zZXRfcGFyYW1zID0gcGhpbGlwc190ZDEzMTZfdHVuZXJfc2V0X3BhcmFtczsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlkZXYtPm9yaWdpbmFsX2RlbW9kX3NsZWVwID0gZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5zbGVlcDsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXAgPSBwaGlsaXBzX2V1cm9wYV9kZW1vZF9zbGVlcDsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLmluaXQgPSBwaGlsaXBzX2V1cm9wYV90dW5lcl9pbml0OworCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2xlZXAgPSBwaGlsaXBzX2V1cm9wYV90dW5lcl9zbGVlcDsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLnNldF9wYXJhbXMgPSBwaGlsaXBzX3RkMTMxNl90dW5lcl9zZXRfcGFyYW1zOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9WSURFT01BVEVfRFZCVF8yMDA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCiAJCQkJCSAgICAgICAmcGhpbGlwc190dTEyMTZfNjFfY29uZmlnLAogCQkJCQkgICAgICAgJmRldi0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJCWRldi0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLmluaXQgPSBwaGlsaXBzX3R1MTIxNl9pbml0OwotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcyA9IHBoaWxpcHNfdGRhNjY1MV9wbGxfc2V0OworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLmluaXQgPSBwaGlsaXBzX3R1MTIxNl9pbml0OworCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2V0X3BhcmFtcyA9IHBoaWxpcHNfdGRhNjY1MV9wbGxfc2V0OwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9LV09STERfRFZCVF8yMTA6CkBAIC0xMDY2LDE0ICsxMDg5LDE0IEBACiAJCQkJCQkgJnRkYTgyN3hfY2ZnXzApIDwgMCkKIAkJCQlnb3RvIGRldHRhY2hfZnJvbnRlbmQ7CiAJCX0gZWxzZSB7ICAJCS8qIHNhdGVsbGl0ZSAqLwotCQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDg2X2F0dGFjaCwgJmZseWR2YnMsICZkZXYtPmkyY19hZGFwKTsKLQkJCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJCWlmIChkdmJfYXR0YWNoKHRkYTgyNnhfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwgMHg2MywKKwkJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA4Nl9hdHRhY2gsICZmbHlkdmJzLCAmZGV2LT5pMmNfYWRhcCk7CisJCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCQlpZiAoZHZiX2F0dGFjaCh0ZGE4MjZ4X2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsIDB4NjMsCiAJCQkJCQkJCQkmZGV2LT5pMmNfYWRhcCwgMCkgPT0gTlVMTCkgewogCQkJCQl3cHJpbnRrKCIlczogTGlmZXZpZXcgVHJpbywgTm8gdGRhODI2eCBmb3VuZCFcbiIsIF9fZnVuY19fKTsKIAkJCQkJZ290byBkZXR0YWNoX2Zyb250ZW5kOwogCQkJCX0KLQkJCQlpZiAoZHZiX2F0dGFjaChpc2w2NDIxX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsICZkZXYtPmkyY19hZGFwLAorCQkJCWlmIChkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgJmRldi0+aTJjX2FkYXAsCiAJCQkJCQkJCQkJMHgwOCwgMCwgMCkgPT0gTlVMTCkgewogCQkJCQl3cHJpbnRrKCIlczogTGlmZXZpZXcgVHJpbywgTm8gSVNMNjQyMSBmb3VuZCFcbiIsIF9fZnVuY19fKTsKIAkJCQkJZ290byBkZXR0YWNoX2Zyb250ZW5kOwpAQCAtMTA4MywxMSArMTEwNiwxMSBAQAogCQlicmVhazsKIAljYXNlIFNBQTcxMzRfQk9BUkRfQURTX0RVT19DQVJEQlVTX1BUVjMzMToKIAljYXNlIFNBQTcxMzRfQk9BUkRfRkxZRFZCVF9IWUJSSURfQ0FSREJVUzoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDQ2X2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDQ2X2F0dGFjaCwKIAkJCQkJICAgICAgICZhZHNfdGVjaF9kdW9fY29uZmlnLAogCQkJCQkgICAgICAgJmRldi0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKLQkJCWlmIChkdmJfYXR0YWNoKHRkYTgyN3hfYXR0YWNoLGRldi0+ZHZiLmZyb250ZW5kLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCWlmIChkdmJfYXR0YWNoKHRkYTgyN3hfYXR0YWNoLGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCSAgIGFkc190ZWNoX2R1b19jb25maWcudHVuZXJfYWRkcmVzcywgJmRldi0+aTJjX2FkYXAsCiAJCQkJCQkJCSZhZHNfZHVvX2NmZykgPT0gTlVMTCkgewogCQkJCXdwcmludGsoIm5vIHRkYTgyN3ggdHVuZXIgZm91bmQgYXQgYWRkcjogJTAyeFxuIiwKQEAgLTExMDgsMTUgKzExMzEsMTUgQEAKIAkJCQkJCSAmdGRhODI3eF9jZmdfMCkgPCAwKQogCQkJCWdvdG8gZGV0dGFjaF9mcm9udGVuZDsKIAkJfSBlbHNlIHsgICAgICAgIC8qIHNhdGVsbGl0ZSAqLwotCQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDg2X2F0dGFjaCwKKwkJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA4Nl9hdHRhY2gsCiAJCQkJCQkJJmZseWR2YnMsICZkZXYtPmkyY19hZGFwKTsKLQkJCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJCXN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlID0gZGV2LT5kdmIuZnJvbnRlbmQ7CisJCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKKwkJCQlzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSA9IGZlMC0+ZHZiLmZyb250ZW5kOwogCQkJCXU4IGRldl9pZCA9IGRldi0+ZWVkYXRhWzJdOwogCQkJCXU4IGRhdGEgPSAweGM0OwogCQkJCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsuYWRkciA9IDB4MDgsIC5mbGFncyA9IDAsIC5sZW4gPSAxfTsKIAotCQkJCWlmIChkdmJfYXR0YWNoKHRkYTgyNnhfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJCQlpZiAoZHZiX2F0dGFjaCh0ZGE4MjZ4X2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCQkweDYwLCAmZGV2LT5pMmNfYWRhcCwgMCkgPT0gTlVMTCkgewogCQkJCQl3cHJpbnRrKCIlczogTWVkaW9uIFF1YWRybywgbm8gdGRhODI2eCAiCiAJCQkJCQkiZm91bmQgIVxuIiwgX19mdW5jX18pOwpAQCAtMTE1MCwzMSArMTE3MywzMSBAQAogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9BVkVSTUVESUFfQVZFUlRWSERfQTE4MDoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG54dDIwMHhfYXR0YWNoLCAmYXZlcnR2aGRhMTgwLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2gobnh0MjAweF9hdHRhY2gsICZhdmVydHZoZGExODAsCiAJCQkJCSAgICAgICAmZGV2LT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkKLQkJCWR2Yl9hdHRhY2goZHZiX3BsbF9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLCAweDYxLAorCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpCisJCQlkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgMHg2MSwKIAkJCQkgICBOVUxMLCBEVkJfUExMX1RESFUyKTsKIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX0FEU19JTlNUQU5UX0hEVFZfUENJOgogCWNhc2UgU0FBNzEzNF9CT0FSRF9LV09STERfQVRTQzExMDoKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG54dDIwMHhfYXR0YWNoLCAma3dvcmxkYXRzYzExMCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG54dDIwMHhfYXR0YWNoLCAma3dvcmxkYXRzYzExMCwKIAkJCQkJICAgICAgICZkZXYtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKQotCQkJZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKQorCQkJZHZiX2F0dGFjaChzaW1wbGVfdHVuZXJfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkgICAmZGV2LT5pMmNfYWRhcCwgMHg2MSwKIAkJCQkgICBUVU5FUl9QSElMSVBTX1RVVjEyMzZEKTsKIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX0ZMWURWQlNfTFIzMDA6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA4Nl9hdHRhY2gsICZmbHlkdmJzLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2godGRhMTAwODZfYXR0YWNoLCAmZmx5ZHZicywKIAkJCQkJICAgICAgICZkZXYtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQlpZiAoZHZiX2F0dGFjaCh0ZGE4MjZ4X2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsIDB4NjAsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgeworCQkJaWYgKGR2Yl9hdHRhY2godGRhODI2eF9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLCAweDYwLAogCQkJCSAgICAgICAmZGV2LT5pMmNfYWRhcCwgMCkgPT0gTlVMTCkgewogCQkJCXdwcmludGsoIiVzOiBObyB0ZGE4MjZ4IGZvdW5kIVxuIiwgX19mdW5jX18pOwogCQkJCWdvdG8gZGV0dGFjaF9mcm9udGVuZDsKIAkJCX0KLQkJCWlmIChkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJCWlmIChkdmJfYXR0YWNoKGlzbDY0MjFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkgICAgICAgJmRldi0+aTJjX2FkYXAsIDB4MDgsIDAsIDApID09IE5VTEwpIHsKIAkJCQl3cHJpbnRrKCIlczogTm8gSVNMNjQyMSBmb3VuZCFcbiIsIF9fZnVuY19fKTsKIAkJCQlnb3RvIGRldHRhY2hfZnJvbnRlbmQ7CkBAIC0xMTgyLDI1ICsxMjA1LDI1IEBACiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX0FTVVNfRVVST1BBMl9IWUJSSUQ6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCiAJCQkJCSAgICAgICAmbWVkaW9uX2NhcmRidXMsCiAJCQkJCSAgICAgICAmZGV2LT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJZGV2LT5vcmlnaW5hbF9kZW1vZF9zbGVlcCA9IGRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXA7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNsZWVwID0gcGhpbGlwc19ldXJvcGFfZGVtb2Rfc2xlZXA7CisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgeworCQkJZGV2LT5vcmlnaW5hbF9kZW1vZF9zbGVlcCA9IGZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXA7CisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnNsZWVwID0gcGhpbGlwc19ldXJvcGFfZGVtb2Rfc2xlZXA7CiAKLQkJCWR2Yl9hdHRhY2goc2ltcGxlX3R1bmVyX2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsCisJCQlkdmJfYXR0YWNoKHNpbXBsZV90dW5lcl9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLAogCQkJCSAgICZkZXYtPmkyY19hZGFwLCBtZWRpb25fY2FyZGJ1cy50dW5lcl9hZGRyZXNzLAogCQkJCSAgIFRVTkVSX1BISUxJUFNfRk1EMTIxNk1FX01LMyk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX1ZJREVPTUFURV9EVkJUXzIwMEE6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA0Nl9hdHRhY2gsCiAJCQkJJnBoaWxpcHNfZXVyb3BhX2NvbmZpZywKIAkJCQkmZGV2LT5pMmNfYWRhcCk7Ci0JCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkgewotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuaW5pdCA9IHBoaWxpcHNfdGQxMzE2X3R1bmVyX2luaXQ7Ci0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5zZXRfcGFyYW1zID0gcGhpbGlwc190ZDEzMTZfdHVuZXJfc2V0X3BhcmFtczsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnR1bmVyX29wcy5pbml0ID0gcGhpbGlwc190ZDEzMTZfdHVuZXJfaW5pdDsKKwkJCWZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLnNldF9wYXJhbXMgPSBwaGlsaXBzX3RkMTMxNl90dW5lcl9zZXRfcGFyYW1zOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgU0FBNzEzNF9CT0FSRF9DSU5FUkdZX0hUX1BDTUNJQToKQEAgLTEyMzksMTUgKzEyNjIsMTUgQEAKIAkJCWdvdG8gZGV0dGFjaF9mcm9udGVuZDsKIAkJYnJlYWs7CiAJY2FzZSBTQUE3MTM0X0JPQVJEX1BISUxJUFNfU05BS0U6Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA4Nl9hdHRhY2gsICZmbHlkdmJzLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2godGRhMTAwODZfYXR0YWNoLCAmZmx5ZHZicywKIAkJCQkJCSZkZXYtPmkyY19hZGFwKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7Ci0JCQlpZiAoZHZiX2F0dGFjaCh0ZGE4MjZ4X2F0dGFjaCwgZGV2LT5kdmIuZnJvbnRlbmQsIDB4NjAsCisJCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkgeworCQkJaWYgKGR2Yl9hdHRhY2godGRhODI2eF9hdHRhY2gsIGZlMC0+ZHZiLmZyb250ZW5kLCAweDYwLAogCQkJCQkmZGV2LT5pMmNfYWRhcCwgMCkgPT0gTlVMTCkgewogCQkJCXdwcmludGsoIiVzOiBObyB0ZGE4MjZ4IGZvdW5kIVxuIiwgX19mdW5jX18pOwogCQkJCWdvdG8gZGV0dGFjaF9mcm9udGVuZDsKIAkJCX0KLQkJCWlmIChkdmJfYXR0YWNoKGxuYnAyMV9hdHRhY2gsIGRldi0+ZHZiLmZyb250ZW5kLAorCQkJaWYgKGR2Yl9hdHRhY2gobG5icDIxX2F0dGFjaCwgZmUwLT5kdmIuZnJvbnRlbmQsCiAJCQkJCSZkZXYtPmkyY19hZGFwLCAwLCAwKSA9PSBOVUxMKSB7CiAJCQkJd3ByaW50aygiJXM6IE5vIGxuYnAyMSBmb3VuZCFcbiIsIF9fZnVuY19fKTsKIAkJCQlnb3RvIGRldHRhY2hfZnJvbnRlbmQ7CkBAIC0xMjY5LDI0ICsxMjkyLDI0IEBACiAJCXNhYTcxMzRfc2V0X2dwaW8oZGV2LCAyNSwgMCk7CiAJCW1zbGVlcCgxMCk7CiAJCXNhYTcxMzRfc2V0X2dwaW8oZGV2LCAyNSwgMSk7Ci0JCWRldi0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsCisJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaChtdDM1Ml9hdHRhY2gsCiAJCQkJCQkmYXZlcm1lZGlhX3hjMzAyOF9tdDM1Ml9kZXYsCiAJCQkJCQkmZGV2LT5pMmNfYWRhcCk7CiAJCWF0dGFjaF94YzMwMjggPSAxOwogCQlicmVhazsKIAljYXNlIFNBQTcxMzRfQk9BUkRfTUQ3MTM0X0JSSURHRV8yOgotCQlkZXYtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2godGRhMTAwODZfYXR0YWNoLAorCQlmZTAtPmR2Yi5mcm9udGVuZCA9IGR2Yl9hdHRhY2godGRhMTAwODZfYXR0YWNoLAogCQkJCQkJJnNkMTg3OF80bSwgJmRldi0+aTJjX2FkYXApOwotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQpIHsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kKSB7CiAJCQlzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZTsKLQkJCWlmIChkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwgMHg2MCwKKwkJCWlmIChkdmJfYXR0YWNoKGR2Yl9wbGxfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgMHg2MCwKIAkJCQkgICZkZXYtPmkyY19hZGFwLCBEVkJfUExMX1BISUxJUFNfU0QxODc4X1REQTgyNjEpID09IE5VTEwpIHsKIAkJCQl3cHJpbnRrKCIlczogTUQ3MTM0IERWQi1TLCBubyBTRDE4NzggIgogCQkJCQkiZm91bmQgIVxuIiwgX19mdW5jX18pOwogCQkJCWdvdG8gZGV0dGFjaF9mcm9udGVuZDsKIAkJCX0KIAkJCS8qIHdlIG5lZWQgdG8gb3BlbiB0aGUgaTJjIGdhdGUgKHdlIGtub3cgaXQgZXhpc3RzKSAqLwotCQkJZmUgPSBkZXYtPmR2Yi5mcm9udGVuZDsKKwkJCWZlID0gZmUwLT5kdmIuZnJvbnRlbmQ7CiAJCQlmZS0+b3BzLmkyY19nYXRlX2N0cmwoZmUsIDEpOwogCQkJaWYgKGR2Yl9hdHRhY2goaXNsNjQwNV9hdHRhY2gsIGZlLAogCQkJCQkmZGV2LT5pMmNfYWRhcCwgMHgwOCwgMCwgMCkgPT0gTlVMTCkgewpAQCAtMTMwNSw3ICsxMzI4LDcgQEAKIAkJc2FhNzEzNF9zZXRfZ3BpbyhkZXYsIDI1LCAwKTsKIAkJbXNsZWVwKDEwKTsKIAkJc2FhNzEzNF9zZXRfZ3BpbyhkZXYsIDI1LCAxKTsKLQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKKwkJZmUwLT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKG10MzUyX2F0dGFjaCwKIAkJCQkJCSZhdmVybWVkaWFfeGMzMDI4X210MzUyX2RldiwKIAkJCQkJCSZkZXYtPmkyY19hZGFwKTsKIAkJYXR0YWNoX3hjMzAyOCA9IDE7CkBAIC0xMzE2LDE3ICsxMzM5LDE3IEBACiAJCQkJCQkJJnRkYTgyN3hfY2ZnXzIpIDwgMCkKIAkJCQlnb3RvIGRldHRhY2hfZnJvbnRlbmQ7CiAJCX0gZWxzZSB7ICAJCS8qIHNhdGVsbGl0ZSAqLwotCQkJZGV2LT5kdmIuZnJvbnRlbmQgPSBkdmJfYXR0YWNoKHRkYTEwMDg2X2F0dGFjaCwKKwkJCWZlMC0+ZHZiLmZyb250ZW5kID0gZHZiX2F0dGFjaCh0ZGExMDA4Nl9hdHRhY2gsCiAJCQkJCQkmZmx5ZHZicywgJmRldi0+aTJjX2FkYXApOwotCQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kKSB7CisJCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpIHsKIAkJCQlpZiAoZHZiX2F0dGFjaCh0ZGE4MjZ4X2F0dGFjaCwKLQkJCQkJCWRldi0+ZHZiLmZyb250ZW5kLCAweDYwLAorCQkJCQkJZmUwLT5kdmIuZnJvbnRlbmQsIDB4NjAsCiAJCQkJCQkmZGV2LT5pMmNfYWRhcCwgMCkgPT0gTlVMTCkgewogCQkJCQl3cHJpbnRrKCIlczogQXN1cyBUaWdlciAzaW4xLCBubyAiCiAJCQkJCQkidGRhODI2eCBmb3VuZCFcbiIsIF9fZnVuY19fKTsKIAkJCQkJZ290byBkZXR0YWNoX2Zyb250ZW5kOwogCQkJCX0KLQkJCQlpZiAoZHZiX2F0dGFjaChsbmJwMjFfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwKKwkJCQlpZiAoZHZiX2F0dGFjaChsbmJwMjFfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwKIAkJCQkJCSZkZXYtPmkyY19hZGFwLCAwLCAwKSA9PSBOVUxMKSB7CiAJCQkJCXdwcmludGsoIiVzOiBBc3VzIFRpZ2VyIDNpbjEsIG5vIGxuYnAyMSIKIAkJCQkJCSIgZm91bmQhXG4iLCBfX2Z1bmNfXyk7CkBAIC0xMzUyLDEwICsxMzc1LDEwIEBACiAJCQkuaTJjX2FkZHIgID0gMHg2MSwKIAkJfTsKIAotCQlpZiAoIWRldi0+ZHZiLmZyb250ZW5kKQorCQlpZiAoIWZlMC0+ZHZiLmZyb250ZW5kKQogCQkJcmV0dXJuIC0xOwogCi0JCWZlID0gZHZiX2F0dGFjaCh4YzIwMjhfYXR0YWNoLCBkZXYtPmR2Yi5mcm9udGVuZCwgJmNmZyk7CisJCWZlID0gZHZiX2F0dGFjaCh4YzIwMjhfYXR0YWNoLCBmZTAtPmR2Yi5mcm9udGVuZCwgJmNmZyk7CiAJCWlmICghZmUpIHsKIAkJCXByaW50ayhLRVJOX0VSUiAiJXMvMjogeGMzMDI4IGF0dGFjaCBmYWlsZWRcbiIsCiAJCQkgICAgICAgZGV2LT5uYW1lKTsKQEAgLTEzNjMsNDAgKzEzODYsNDcgQEAKIAkJfQogCX0KIAotCWlmIChOVUxMID09IGRldi0+ZHZiLmZyb250ZW5kKSB7CisJaWYgKE5VTEwgPT0gZmUwLT5kdmIuZnJvbnRlbmQpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICIlcy9kdmI6IGZyb250ZW5kIGluaXRpYWxpemF0aW9uIGZhaWxlZFxuIiwgZGV2LT5uYW1lKTsKIAkJcmV0dXJuIC0xOwogCX0KIAkvKiBkZWZpbmUgZ2VuZXJhbC1wdXJwb3NlIGNhbGxiYWNrIHBvaW50ZXIgKi8KLQlkZXYtPmR2Yi5mcm9udGVuZC0+Y2FsbGJhY2sgPSBzYWE3MTM0X3R1bmVyX2NhbGxiYWNrOworCWZlMC0+ZHZiLmZyb250ZW5kLT5jYWxsYmFjayA9IHNhYTcxMzRfdHVuZXJfY2FsbGJhY2s7CiAKIAkvKiByZWdpc3RlciBldmVyeXRoaW5nIGVsc2UgKi8KLQlyZXQgPSB2aWRlb2J1Zl9kdmJfcmVnaXN0ZXIoJmRldi0+ZHZiLCBUSElTX01PRFVMRSwgZGV2LCAmZGV2LT5wY2ktPmRldiwKLQkJCQkgICAgYWRhcHRlcl9ucik7CisJcmV0ID0gdmlkZW9idWZfZHZiX3JlZ2lzdGVyX2J1cygmZGV2LT5mcm9udGVuZHMsIFRISVNfTU9EVUxFLCBkZXYsCisJCSZkZXYtPnBjaS0+ZGV2LCBhZGFwdGVyX25yLCAwKTsKIAogCS8qIHRoaXMgc2VxdWVuY2UgaXMgbmVjZXNzYXJ5IHRvIG1ha2UgdGhlIHRkYTEwMDR4IGxvYWQgaXRzIGZpcm13YXJlCiAJICogYW5kIHRvIGVudGVyIGFuYWxvZyBtb2RlIG9mIGh5YnJpZCBib2FyZHMKIAkgKi8KIAlpZiAoIXJldCkgewotCQlpZiAoZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5pbml0KQotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy5pbml0KGRldi0+ZHZiLmZyb250ZW5kKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXApCi0JCQlkZXYtPmR2Yi5mcm9udGVuZC0+b3BzLnNsZWVwKGRldi0+ZHZiLmZyb250ZW5kKTsKLQkJaWYgKGRldi0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLnNsZWVwKQotCQkJZGV2LT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2xlZXAoZGV2LT5kdmIuZnJvbnRlbmQpOworCQlpZiAoZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5pbml0KQorCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy5pbml0KGZlMC0+ZHZiLmZyb250ZW5kKTsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kLT5vcHMuc2xlZXApCisJCQlmZTAtPmR2Yi5mcm9udGVuZC0+b3BzLnNsZWVwKGZlMC0+ZHZiLmZyb250ZW5kKTsKKwkJaWYgKGZlMC0+ZHZiLmZyb250ZW5kLT5vcHMudHVuZXJfb3BzLnNsZWVwKQorCQkJZmUwLT5kdmIuZnJvbnRlbmQtPm9wcy50dW5lcl9vcHMuc2xlZXAoZmUwLT5kdmIuZnJvbnRlbmQpOwogCX0KIAlyZXR1cm4gcmV0OwogCiBkZXR0YWNoX2Zyb250ZW5kOgotCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkKLQkJZHZiX2Zyb250ZW5kX2RldGFjaChkZXYtPmR2Yi5mcm9udGVuZCk7Ci0JZGV2LT5kdmIuZnJvbnRlbmQgPSBOVUxMOworCWlmIChmZTAtPmR2Yi5mcm9udGVuZCkKKwkJZHZiX2Zyb250ZW5kX2RldGFjaChmZTAtPmR2Yi5mcm9udGVuZCk7CisJZmUwLT5kdmIuZnJvbnRlbmQgPSBOVUxMOwogCiAJcmV0dXJuIC0xOwogfQogCiBzdGF0aWMgaW50IGR2Yl9maW5pKHN0cnVjdCBzYWE3MTM0X2RldiAqZGV2KQogeworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlMDsKKworCS8qIEdldCB0aGUgZmlyc3QgZnJvbnRlbmQgKi8KKwlmZTAgPSB2aWRlb2J1Zl9kdmJfZ2V0X2Zyb250ZW5kKCZkZXYtPmZyb250ZW5kcywgMSk7CisJaWYgKCFmZTApCisJCXJldHVybiAtRUlOVkFMOworCiAJLyogRklYTUU6IEkgc3VzcGVjdCB0aGF0IHRoaXMgY29kZSBpcyBib2d1cywgc2luY2UgdGhlIGVudHJ5IGZvcgogCSAgIFBpbm5hY2xlIDMwMEkgRFZCLVQgUEFMIGFscmVhZHkgZGVmaW5lcyB0aGUgcHJvcGVyIGluaXQgdG8gYWxsb3cKIAkgICB0aGUgZGV0ZWN0aW9uIG9mIG10MjAzMiAoVERBOTg4N19QT1JUMl9JTkFDVElWRSkKQEAgLTE0MTYsNyArMTQ0Niw3IEBACiAJCQl1OCBkYXRhID0gMHg4MDsKIAkJCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsuYWRkciA9IDB4MDgsIC5idWYgPSAmZGF0YSwgLmZsYWdzID0gMCwgLmxlbiA9IDF9OwogCQkJc3RydWN0IGR2Yl9mcm9udGVuZCAqZmU7Ci0JCQlmZSA9IGRldi0+ZHZiLmZyb250ZW5kOworCQkJZmUgPSBmZTAtPmR2Yi5mcm9udGVuZDsKIAkJCWlmIChmZS0+b3BzLmkyY19nYXRlX2N0cmwpIHsKIAkJCQlmZS0+b3BzLmkyY19nYXRlX2N0cmwoZmUsIDEpOwogCQkJCWkyY190cmFuc2ZlcigmZGV2LT5pMmNfYWRhcCwgJm1zZywgMSk7CkBAIC0xNDI0LDggKzE0NTQsOCBAQAogCQkJfQogCQl9CiAJfQotCWlmIChkZXYtPmR2Yi5mcm9udGVuZCkKLQkJdmlkZW9idWZfZHZiX3VucmVnaXN0ZXIoJmRldi0+ZHZiKTsKKwlpZiAoZmUwLT5kdmIuZnJvbnRlbmQpCisJCXZpZGVvYnVmX2R2Yl91bnJlZ2lzdGVyX2J1cygmZGV2LT5mcm9udGVuZHMpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQuaAppbmRleCA0OTFhYjFmLi4yNDA5NmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LmgKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAjaWYgZGVmaW5lZChDT05GSUdfVklERU9fU0FBNzEzNF9EVkIpIHx8IGRlZmluZWQoQ09ORklHX1ZJREVPX1NBQTcxMzRfRFZCX01PRFVMRSkKIAkvKiBTQUE3MTM0X01QRUdfRFZCIG9ubHkgKi8KLQlzdHJ1Y3QgdmlkZW9idWZfZHZiICAgICAgICBkdmI7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZHMgZnJvbnRlbmRzOwogCWludCAoKm9yaWdpbmFsX2RlbW9kX3NsZWVwKShzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSk7CiAJaW50ICgqb3JpZ2luYWxfc2V0X3ZvbHRhZ2UpKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBmZV9zZWNfdm9sdGFnZV90IHZvbHRhZ2UpOwogCWludCAoKm9yaWdpbmFsX3NldF9oaWdoX3ZvbHRhZ2UpKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBsb25nIGFyZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxODUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCmluZGV4IDAyZmRhNGUuLjZkZWJiNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCkBAIC0yNSw0MyArMjUsMjUgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWlkLmg+CiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KICNpbmNsdWRlIDxsaW51eC92aWRlb19lbmNvZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5Lmg+CiAKIE1PRFVMRV9ERVNDUklQVElPTigiUGhpbGlwcyBTQUE3MTg1IHZpZGVvIGVuY29kZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJEYXZlIFBlcmtzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKIAotI2RlZmluZSBJMkNfTkFNRShzKSAocyktPm5hbWUKLQotCiBzdGF0aWMgaW50IGRlYnVnOwogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIkRlYnVnIGxldmVsICgwLTEpIik7CiAKLSNkZWZpbmUgZHByaW50ayhudW0sIGZvcm1hdCwgYXJncy4uLikgXAotCWRvIHsgXAotCQlpZiAoZGVidWcgPj0gbnVtKSBcCi0JCQlwcmludGsoZm9ybWF0LCAjI2FyZ3MpOyBcCi0JfSB3aGlsZSAoMCkKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RydWN0IHNhYTcxODUgewpAQCAtNzUsMzIgKzU3LDI0IEBACiAJaW50IHNhdDsKIH07CiAKLSNkZWZpbmUgICBJMkNfU0FBNzE4NSAgICAgICAgMHg4OAotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgaW5saW5lIGludAotc2FhNzE4NV9yZWFkIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIGlubGluZSBpbnQgc2FhNzE4NV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7CiAJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGUoY2xpZW50KTsKIH0KIAotc3RhdGljIGludAotc2FhNzE4NV93cml0ZSAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKLQkgICAgICAgdTggICAgICAgICAgICAgICAgIHJlZywKLQkgICAgICAgdTggICAgICAgICAgICAgICAgIHZhbHVlKQorc3RhdGljIGludCBzYWE3MTg1X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUpCiB7CiAJc3RydWN0IHNhYTcxODUgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAotCWRwcmludGsoMSwgS0VSTl9ERUJVRyAiU0FBNzE4NTogJTAyeCBzZXQgdG8gJTAyeFxuIiwgcmVnLCB2YWx1ZSk7CisJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiJTAyeCBzZXQgdG8gJTAyeFxuIiwgcmVnLCB2YWx1ZSk7CiAJZW5jb2Rlci0+cmVnW3JlZ10gPSB2YWx1ZTsKIAlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZywgdmFsdWUpOwogfQogCi1zdGF0aWMgaW50Ci1zYWE3MTg1X3dyaXRlX2Jsb2NrIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgICAgIGNvbnN0IHU4ICAgICAgICAgICpkYXRhLAotCQkgICAgIHVuc2lnbmVkIGludCAgICAgICBsZW4pCitzdGF0aWMgaW50IHNhYTcxODVfd3JpdGVfYmxvY2soc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJaW50IHJldCA9IC0xOwogCXU4IHJlZzsKQEAgLTEyMSwxOCArOTUsMTcgQEAKIAkJCQkgICAgZW5jb2Rlci0+cmVnW3JlZysrXSA9IGRhdGFbMV07CiAJCQkJbGVuIC09IDI7CiAJCQkJZGF0YSArPSAyOwotCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYKLQkJCQkgYmxvY2tfbGVuIDwgMzIpOwotCQkJaWYgKChyZXQgPSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBibG9ja19kYXRhLAotCQkJCQkJICAgYmxvY2tfbGVuKSkgPCAwKQorCQkJfSB3aGlsZSAobGVuID49IDIgJiYgZGF0YVswXSA9PSByZWcgJiYgYmxvY2tfbGVuIDwgMzIpOworCQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgYmxvY2tfZGF0YSwgYmxvY2tfbGVuKTsKKwkJCWlmIChyZXQgPCAwKQogCQkJCWJyZWFrOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogZG8gc29tZSBzbG93IEkyQyBlbXVsYXRpb24ga2luZCBvZiB0aGluZyAqLwogCQl3aGlsZSAobGVuID49IDIpIHsKIAkJCXJlZyA9ICpkYXRhKys7Ci0JCQlpZiAoKHJldCA9IHNhYTcxODVfd3JpdGUoY2xpZW50LCByZWcsCi0JCQkJCQkgKmRhdGErKykpIDwgMCkKKwkJCXJldCA9IHNhYTcxODVfd3JpdGUoY2xpZW50LCByZWcsICpkYXRhKyspOworCQkJaWYgKHJldCA8IDApCiAJCQkJYnJlYWs7CiAJCQlsZW4gLT0gMjsKIAkJfQpAQCAtMjQwLDE1ICsyMTMsMTEgQEAKIAkweDY2LCAweDIxLAkJLyogRlNDMyAqLwogfTsKIAotc3RhdGljIGludAotc2FhNzE4NV9jb21tYW5kIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgdW5zaWduZWQgaW50ICAgICAgIGNtZCwKLQkJIHZvaWQgICAgICAgICAgICAgICphcmcpCitzdGF0aWMgaW50IHNhYTcxODVfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjbWQsIHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3Qgc2FhNzE4NSAqZW5jb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCiAJc3dpdGNoIChjbWQpIHsKLQogCWNhc2UgMDoKIAkJc2FhNzE4NV93cml0ZV9ibG9jayhjbGllbnQsIGluaXRfY29tbW9uLAogCQkJCSAgICBzaXplb2YoaW5pdF9jb21tb24pKTsKQEAgLTI2NCw3ICsyMzMsNiBAQAogCQkJCQkgICAgc2l6ZW9mKGluaXRfcGFsKSk7CiAJCQlicmVhazsKIAkJfQotCiAJCWJyZWFrOwogCiAJY2FzZSBFTkNPREVSX0dFVF9DQVBBQklMSVRJRVM6CkBAIC0yNzYsOCArMjQ0LDggQEAKIAkJICAgIFZJREVPX0VOQ09ERVJfU0VDQU0gfCBWSURFT19FTkNPREVSX0NDSVI7CiAJCWNhcC0+aW5wdXRzID0gMTsKIAkJY2FwLT5vdXRwdXRzID0gMTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9TRVRfTk9STToKIAl7CkBAIC0yODYsNyArMjU0LDYgQEAKIAkJLy9zYWE3MTg1X3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdF9jb21tb24sIHNpemVvZihpbml0X2NvbW1vbikpOwogCiAJCXN3aXRjaCAoKmlhcmcpIHsKLQogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCXNhYTcxODVfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0X250c2MsCiAJCQkJCSAgICBzaXplb2YoaW5pdF9udHNjKSk7CkBAIC0zMDAsMTEgKzI2NywxMCBAQAogCQljYXNlIFZJREVPX01PREVfU0VDQU06CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQogCQl9CiAJCWVuY29kZXItPm5vcm0gPSAqaWFyZzsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9TRVRfSU5QVVQ6CiAJewpAQCAtMzE0LDcgKzI4MCw2IEBACiAJCSAqaWFyZyA9IDE6IGlucHV0IGlzIGZyb20gWlIzNjA2MCAqLwogCiAJCXN3aXRjaCAoKmlhcmcpIHsKLQogCQljYXNlIDA6CiAJCQkvKiBTd2l0Y2ggUlRDRSB0byAxICovCiAJCQlzYWE3MTg1X3dyaXRlKGNsaWVudCwgMHg2MSwKQEAgLTMzMiwyMSArMjk3LDE5IEBACiAKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwotCiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9TRVRfT1VUUFVUOgogCXsKIAkJaW50ICppYXJnID0gYXJnOwogCiAJCS8qIG5vdCBtdWNoIGNob2ljZSBvZiBvdXRwdXRzICovCi0JCWlmICgqaWFyZyAhPSAwKSB7CisJCWlmICgqaWFyZyAhPSAwKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgRU5DT0RFUl9FTkFCTEVfT1VUUFVUOgogCXsKQEAgLTM1Niw4ICszMTksOCBAQAogCQlzYWE3MTg1X3dyaXRlKGNsaWVudCwgMHg2MSwKIAkJCSAgICAgIChlbmNvZGVyLT5yZWdbMHg2MV0gJiAweGJmKSB8CiAJCQkgICAgICAoZW5jb2Rlci0+ZW5hYmxlID8gMHgwMCA6IDB4NDApKTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMzY4LDEzOCArMzMxLDY1IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qCi0gKiBHZW5lcmljIGkyYyBwcm9iZQotICogY29uY2VybmluZyB0aGUgYWRkcmVzc2VzOiBpMmMgd2FudHMgNyBiaXQgKHdpdGhvdXQgdGhlIHIvdyBiaXQpLCBzbyAnPj4xJwotICovCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyBJMkNfU0FBNzE4NSA+PiAxLCBJMkNfQ0xJRU5UX0VORCB9Oworc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgMHg4OCA+PiAxLCBJMkNfQ0xJRU5UX0VORCB9OwogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaWdub3JlID0gSTJDX0NMSUVOVF9FTkQ7CitJMkNfQ0xJRU5UX0lOU01PRDsKIAotc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50X2FkZHJlc3NfZGF0YSBhZGRyX2RhdGEgPSB7Ci0JLm5vcm1hbF9pMmMJCT0gbm9ybWFsX2kyYywKLQkucHJvYmUJCQk9ICZpZ25vcmUsCi0JLmlnbm9yZQkJCT0gJmlnbm9yZSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpMmNfZHJpdmVyX3NhYTcxODU7Ci0KLXN0YXRpYyBpbnQKLXNhYTcxODVfZGV0ZWN0X2NsaWVudCAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBhZGRyZXNzLAotCQkgICAgICAgaW50ICAgICAgICAgICAgICAgICBraW5kKQorc3RhdGljIGludCBzYWE3MTg1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCiB7CiAJaW50IGk7Ci0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAlzdHJ1Y3Qgc2FhNzE4NSAqZW5jb2RlcjsKIAotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJzYWE3MTg1LmM6IGRldGVjdGluZyBzYWE3MTg1IGNsaWVudCBvbiBhZGRyZXNzIDB4JXhcbiIsCi0JCWFkZHJlc3MgPDwgMSk7Ci0KIAkvKiBDaGVjayBpZiB0aGUgYWRhcHRlciBzdXBwb3J0cyB0aGUgbmVlZGVkIGZlYXR1cmVzICovCi0JaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQotCQlyZXR1cm4gMDsKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIC1FTk9ERVY7CiAKLQljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICghY2xpZW50KQotCQlyZXR1cm4gLUVOT01FTTsKLQljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwotCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7Ci0JY2xpZW50LT5kcml2ZXIgPSAmaTJjX2RyaXZlcl9zYWE3MTg1OwotCXN0cmxjcHkoSTJDX05BTUUoY2xpZW50KSwgInNhYTcxODUiLCBzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOworCXY0bF9pbmZvKGNsaWVudCwgImNoaXAgZm91bmQgQCAweCV4ICglcylcbiIsCisJCQljbGllbnQtPmFkZHIgPDwgMSwgY2xpZW50LT5hZGFwdGVyLT5uYW1lKTsKIAogCWVuY29kZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2FhNzE4NSksIEdGUF9LRVJORUwpOwotCWlmIChlbmNvZGVyID09IE5VTEwpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoZW5jb2RlciA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAJZW5jb2Rlci0+bm9ybSA9IFZJREVPX01PREVfTlRTQzsKIAllbmNvZGVyLT5lbmFibGUgPSAxOwogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGVuY29kZXIpOwogCi0JaSA9IGkyY19hdHRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGkpIHsKLQkJa2ZyZWUoY2xpZW50KTsKLQkJa2ZyZWUoZW5jb2Rlcik7Ci0JCXJldHVybiBpOwotCX0KLQogCWkgPSBzYWE3MTg1X3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdF9jb21tb24sIHNpemVvZihpbml0X2NvbW1vbikpOwotCWlmIChpID49IDApIHsKLQkJaSA9IHNhYTcxODVfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0X250c2MsCi0JCQkJCXNpemVvZihpbml0X250c2MpKTsKLQl9Ci0JaWYgKGkgPCAwKSB7Ci0JCWRwcmludGsoMSwgS0VSTl9FUlIgIiVzX2F0dGFjaDogaW5pdCBlcnJvciAlZFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGkpOwotCX0gZWxzZSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fSU5GTwotCQkJIiVzX2F0dGFjaDogY2hpcCB2ZXJzaW9uICVkIGF0IGFkZHJlc3MgMHgleFxuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIHNhYTcxODVfcmVhZChjbGllbnQpID4+IDUsCi0JCQljbGllbnQtPmFkZHIgPDwgMSk7Ci0JfQotCisJaWYgKGkgPj0gMCkKKwkJaSA9IHNhYTcxODVfd3JpdGVfYmxvY2soY2xpZW50LCBpbml0X250c2MsIHNpemVvZihpbml0X250c2MpKTsKKwlpZiAoaSA8IDApCisJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgImluaXQgZXJyb3IgJWRcbiIsIGkpOworCWVsc2UKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAicmV2aXNpb24gMHgleFxuIiwKKwkJCQlzYWE3MTg1X3JlYWQoY2xpZW50KSA+PiA1KTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotc2FhNzE4NV9hdHRhY2hfYWRhcHRlciAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQotewotCWRwcmludGsoMSwKLQkJS0VSTl9JTkZPCi0JCSJzYWE3MTg1LmM6IHN0YXJ0aW5nIHByb2JlIGZvciBhZGFwdGVyICVzICgweCV4KVxuIiwKLQkJSTJDX05BTUUoYWRhcHRlciksIGFkYXB0ZXItPmlkKTsKLQlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsICZzYWE3MTg1X2RldGVjdF9jbGllbnQpOwotfQotCi1zdGF0aWMgaW50Ci1zYWE3MTg1X2RldGFjaF9jbGllbnQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgaW50IHNhYTcxODVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7CiAJc3RydWN0IHNhYTcxODUgKmVuY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoZXJyKSB7Ci0JCXJldHVybiBlcnI7Ci0JfQogCiAJc2FhNzE4NV93cml0ZShjbGllbnQsIDB4NjEsIChlbmNvZGVyLT5yZWdbMHg2MV0pIHwgMHg0MCk7CS8qIFNXOiBvdXRwdXQgb2ZmIGlzIGFjdGl2ZSAqLwogCS8vc2FhNzE4NV93cml0ZShjbGllbnQsIDB4M2EsIChlbmNvZGVyLT5yZWdbMHgzYV0pIHwgMHg4MCk7IC8qIFNXOiBjb2xvciBiYXIgKi8KIAogCWtmcmVlKGVuY29kZXIpOwotCWtmcmVlKGNsaWVudCk7Ci0KIAlyZXR1cm4gMDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGkyY19kcml2ZXJfc2FhNzE4NSA9IHsKLQkuZHJpdmVyID0gewotCQkubmFtZSA9ICJzYWE3MTg1IiwJLyogbmFtZSAqLwotCX0sCi0KLQkuaWQgPSBJMkNfRFJJVkVSSURfU0FBNzE4NUIsCi0KLQkuYXR0YWNoX2FkYXB0ZXIgPSBzYWE3MTg1X2F0dGFjaF9hZGFwdGVyLAotCS5kZXRhY2hfY2xpZW50ID0gc2FhNzE4NV9kZXRhY2hfY2xpZW50LAotCS5jb21tYW5kID0gc2FhNzE4NV9jb21tYW5kLAorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNhYTcxODVfaWRbXSA9IHsKKwl7ICJzYWE3MTg1IiwgMCB9LAorCXsgfQogfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzYWE3MTg1X2lkKTsKIAotc3RhdGljIGludCBfX2luaXQKLXNhYTcxODVfaW5pdCAodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmkyY19kcml2ZXJfc2FhNzE4NSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotc2FhNzE4NV9leGl0ICh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZpMmNfZHJpdmVyX3NhYTcxODUpOwotfQotCi1tb2R1bGVfaW5pdChzYWE3MTg1X2luaXQpOwotbW9kdWxlX2V4aXQoc2FhNzE4NV9leGl0KTsKK3N0YXRpYyBzdHJ1Y3QgdjRsMl9pMmNfZHJpdmVyX2RhdGEgdjRsMl9pMmNfZGF0YSA9IHsKKwkubmFtZSA9ICJzYWE3MTg1IiwKKwkuZHJpdmVyaWQgPSBJMkNfRFJJVkVSSURfU0FBNzE4NUIsCisJLmNvbW1hbmQgPSBzYWE3MTg1X2NvbW1hbmQsCisJLnByb2JlID0gc2FhNzE4NV9wcm9iZSwKKwkucmVtb3ZlID0gc2FhNzE4NV9yZW1vdmUsCisJLmlkX3RhYmxlID0gc2FhNzE4NV9pZCwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NoX21vYmlsZV9jZXVfY2FtZXJhLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NoX21vYmlsZV9jZXVfY2FtZXJhLmMKaW5kZXggNzY4MzgwOS4uMjQwNzYwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zaF9tb2JpbGVfY2V1X2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2hfbW9iaWxlX2NldV9jYW1lcmEuYwpAQCAtNDAsMzkgKzQwLDM5IEBACiAKIC8qIHJlZ2lzdGVyIG9mZnNldHMgZm9yIHNoNzcyMiAvIHNoNzcyMyAqLwogCi0jZGVmaW5lIENBUFNSICAweDAwCi0jZGVmaW5lIENBUENSICAweDA0Ci0jZGVmaW5lIENBTUNSICAweDA4Ci0jZGVmaW5lIENNQ1lSICAweDBjCi0jZGVmaW5lIENBTU9SICAweDEwCi0jZGVmaW5lIENBUFdSICAweDE0Ci0jZGVmaW5lIENBSUZSICAweDE4Ci0jZGVmaW5lIENTVENSICAweDIwIC8qIG5vdCBvbiBzaDc3MjMgKi8KLSNkZWZpbmUgQ1NFQ1IgIDB4MjQgLyogbm90IG9uIHNoNzcyMyAqLwotI2RlZmluZSBDUkNOVFIgMHgyOAotI2RlZmluZSBDUkNNUFIgMHgyYwotI2RlZmluZSBDRkxDUiAgMHgzMAotI2RlZmluZSBDRlNaUiAgMHgzNAotI2RlZmluZSBDRFdEUiAgMHgzOAotI2RlZmluZSBDREFZUiAgMHgzYwotI2RlZmluZSBDREFDUiAgMHg0MAotI2RlZmluZSBDREJZUiAgMHg0NAotI2RlZmluZSBDREJDUiAgMHg0OAotI2RlZmluZSBDQkRTUiAgMHg0YwotI2RlZmluZSBDRldDUiAgMHg1YwotI2RlZmluZSBDTEZDUiAgMHg2MAotI2RlZmluZSBDRE9DUiAgMHg2NAotI2RlZmluZSBDRERDUiAgMHg2OAotI2RlZmluZSBDRERBUiAgMHg2YwotI2RlZmluZSBDRUlFUiAgMHg3MAotI2RlZmluZSBDRVRDUiAgMHg3NAotI2RlZmluZSBDU1RTUiAgMHg3YwotI2RlZmluZSBDU1JUUiAgMHg4MAotI2RlZmluZSBDRFNTUiAgMHg4NAotI2RlZmluZSBDREFZUjIgMHg5MAotI2RlZmluZSBDREFDUjIgMHg5NAotI2RlZmluZSBDREJZUjIgMHg5OAotI2RlZmluZSBDREJDUjIgMHg5YworI2RlZmluZSBDQVBTUiAgMHgwMCAvKiBDYXB0dXJlIHN0YXJ0IHJlZ2lzdGVyICovCisjZGVmaW5lIENBUENSICAweDA0IC8qIENhcHR1cmUgY29udHJvbCByZWdpc3RlciAqLworI2RlZmluZSBDQU1DUiAgMHgwOCAvKiBDYXB0dXJlIGludGVyZmFjZSBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIENNQ1lSICAweDBjIC8qIENhcHR1cmUgaW50ZXJmYWNlIGN5Y2xlICByZWdpc3RlciAqLworI2RlZmluZSBDQU1PUiAgMHgxMCAvKiBDYXB0dXJlIGludGVyZmFjZSBvZmZzZXQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0FQV1IgIDB4MTQgLyogQ2FwdHVyZSBpbnRlcmZhY2Ugd2lkdGggcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0FJRlIgIDB4MTggLyogQ2FwdHVyZSBpbnRlcmZhY2UgaW5wdXQgZm9ybWF0IHJlZ2lzdGVyICovCisjZGVmaW5lIENTVENSICAweDIwIC8qIENhbWVyYSBzdHJvYmUgY29udHJvbCByZWdpc3RlciAoPD0gc2g3NzIyKSAqLworI2RlZmluZSBDU0VDUiAgMHgyNCAvKiBDYW1lcmEgc3Ryb2JlIGVtaXNzaW9uIGNvdW50IHJlZ2lzdGVyICg8PSBzaDc3MjIpICovCisjZGVmaW5lIENSQ05UUiAweDI4IC8qIENFVSByZWdpc3RlciBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIENSQ01QUiAweDJjIC8qIENFVSByZWdpc3RlciBmb3JjaWJsZSBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIENGTENSICAweDMwIC8qIENhcHR1cmUgZmlsdGVyIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0ZTWlIgIDB4MzQgLyogQ2FwdHVyZSBmaWx0ZXIgc2l6ZSBjbGlwIHJlZ2lzdGVyICovCisjZGVmaW5lIENEV0RSICAweDM4IC8qIENhcHR1cmUgZGVzdGluYXRpb24gd2lkdGggcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0RBWVIgIDB4M2MgLyogQ2FwdHVyZSBkYXRhIGFkZHJlc3MgWSByZWdpc3RlciAqLworI2RlZmluZSBDREFDUiAgMHg0MCAvKiBDYXB0dXJlIGRhdGEgYWRkcmVzcyBDIHJlZ2lzdGVyICovCisjZGVmaW5lIENEQllSICAweDQ0IC8qIENhcHR1cmUgZGF0YSBib3R0b20tZmllbGQgYWRkcmVzcyBZIHJlZ2lzdGVyICovCisjZGVmaW5lIENEQkNSICAweDQ4IC8qIENhcHR1cmUgZGF0YSBib3R0b20tZmllbGQgYWRkcmVzcyBDIHJlZ2lzdGVyICovCisjZGVmaW5lIENCRFNSICAweDRjIC8qIENhcHR1cmUgYnVuZGxlIGRlc3RpbmF0aW9uIHNpemUgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0ZXQ1IgIDB4NWMgLyogRmlyZXdhbGwgb3BlcmF0aW9uIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0xGQ1IgIDB4NjAgLyogQ2FwdHVyZSBsb3ctcGFzcyBmaWx0ZXIgY29udHJvbCByZWdpc3RlciAqLworI2RlZmluZSBDRE9DUiAgMHg2NCAvKiBDYXB0dXJlIGRhdGEgb3V0cHV0IGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0REQ1IgIDB4NjggLyogQ2FwdHVyZSBkYXRhIGNvbXBsZXhpdHkgbGV2ZWwgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0REQVIgIDB4NmMgLyogQ2FwdHVyZSBkYXRhIGNvbXBsZXhpdHkgbGV2ZWwgYWRkcmVzcyByZWdpc3RlciAqLworI2RlZmluZSBDRUlFUiAgMHg3MCAvKiBDYXB0dXJlIGV2ZW50IGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0VUQ1IgIDB4NzQgLyogQ2FwdHVyZSBldmVudCBmbGFnIGNsZWFyIHJlZ2lzdGVyICovCisjZGVmaW5lIENTVFNSICAweDdjIC8qIENhcHR1cmUgc3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIENTUlRSICAweDgwIC8qIENhcHR1cmUgc29mdHdhcmUgcmVzZXQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0RTU1IgIDB4ODQgLyogQ2FwdHVyZSBkYXRhIHNpemUgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0RBWVIyIDB4OTAgLyogQ2FwdHVyZSBkYXRhIGFkZHJlc3MgWSByZWdpc3RlciAyICovCisjZGVmaW5lIENEQUNSMiAweDk0IC8qIENhcHR1cmUgZGF0YSBhZGRyZXNzIEMgcmVnaXN0ZXIgMiAqLworI2RlZmluZSBDREJZUjIgMHg5OCAvKiBDYXB0dXJlIGRhdGEgYm90dG9tLWZpZWxkIGFkZHJlc3MgWSByZWdpc3RlciAyICovCisjZGVmaW5lIENEQkNSMiAweDljIC8qIENhcHR1cmUgZGF0YSBib3R0b20tZmllbGQgYWRkcmVzcyBDIHJlZ2lzdGVyIDIgKi8KIAogc3RhdGljIERFRklORV9NVVRFWChjYW1lcmFfbG9jayk7CiAKQEAgLTE2NSw2ICsxNjUsNyBAQAogCWNldV93cml0ZShwY2RldiwgQ0VUQ1IsIDB4MDMxN2YzMTMgXiAweDEwKTsKIAogCWlmIChwY2Rldi0+YWN0aXZlKSB7CisJCXBjZGV2LT5hY3RpdmUtPnN0YXRlID0gVklERU9CVUZfQUNUSVZFOwogCQljZXVfd3JpdGUocGNkZXYsIENEQVlSLCB2aWRlb2J1Zl90b19kbWFfY29udGlnKHBjZGV2LT5hY3RpdmUpKTsKIAkJY2V1X3dyaXRlKHBjZGV2LCBDQVBTUiwgMHgxKTsgLyogc3RhcnQgY2FwdHVyZSAqLwogCX0KQEAgLTIzNiw3ICsyMzcsNyBAQAogCWRldl9kYmcoJmljZC0+ZGV2LCAiJXMgKHZiPTB4JXApIDB4JTA4bHggJXpkXG4iLCBfX2Z1bmNfXywKIAkJdmIsIHZiLT5iYWRkciwgdmItPmJzaXplKTsKIAotCXZiLT5zdGF0ZSA9IFZJREVPQlVGX0FDVElWRTsKKwl2Yi0+c3RhdGUgPSBWSURFT0JVRl9RVUVVRUQ7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJnBjZGV2LT5sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGRfdGFpbCgmdmItPnF1ZXVlLCAmcGNkZXYtPmNhcHR1cmUpOwogCkBAIC0zMjMsMTIgKzMyNCwyNCBAQAogewogCXN0cnVjdCBzb2NfY2FtZXJhX2hvc3QgKmljaSA9IHRvX3NvY19jYW1lcmFfaG9zdChpY2QtPmRldi5wYXJlbnQpOwogCXN0cnVjdCBzaF9tb2JpbGVfY2V1X2RldiAqcGNkZXYgPSBpY2ktPnByaXY7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCUJVR19PTihpY2QgIT0gcGNkZXYtPmljZCk7CiAKIAkvKiBkaXNhYmxlIGNhcHR1cmUsIGRpc2FibGUgaW50ZXJydXB0cyAqLwogCWNldV93cml0ZShwY2RldiwgQ0VJRVIsIDApOwogCWNldV93cml0ZShwY2RldiwgQ0FQU1IsIDEgPDwgMTYpOyAvKiByZXNldCAqLworCisJLyogbWFrZSBzdXJlIGFjdGl2ZSBidWZmZXIgaXMgY2FuY2VsZWQgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcGNkZXYtPmxvY2ssIGZsYWdzKTsKKwlpZiAocGNkZXYtPmFjdGl2ZSkgeworCQlsaXN0X2RlbCgmcGNkZXYtPmFjdGl2ZS0+cXVldWUpOworCQlwY2Rldi0+YWN0aXZlLT5zdGF0ZSA9IFZJREVPQlVGX0VSUk9SOworCQl3YWtlX3VwX2FsbCgmcGNkZXYtPmFjdGl2ZS0+ZG9uZSk7CisJCXBjZGV2LT5hY3RpdmUgPSBOVUxMOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2Rldi0+bG9jaywgZmxhZ3MpOworCiAJaWNkLT5vcHMtPnJlbGVhc2UoaWNkKTsKIAogCWRldl9pbmZvKCZpY2QtPmRldiwKQEAgLTM5MSw3ICs0MDQsMjAgQEAKIAljZXVfd3JpdGUocGNkZXYsIENGTENSLCAwKTsgLyogZGF0YSBmZXRjaCBtb2RlIC0gbm8gc2NhbGluZyAqLwogCWNldV93cml0ZShwY2RldiwgQ0ZTWlIsIChpY2QtPmhlaWdodCA8PCAxNikgfCBjZnN6cl93aWR0aCk7CiAJY2V1X3dyaXRlKHBjZGV2LCBDTEZDUiwgMCk7IC8qIGRhdGEgZmV0Y2ggbW9kZSAtIG5vIGxvd3Bhc3MgZmlsdGVyICovCi0JY2V1X3dyaXRlKHBjZGV2LCBDRE9DUiwgMHgwMDAwMDAxNik7CisKKwkvKiBBIGZldyB3b3JkcyBhYm91dCBieXRlIG9yZGVyIChvYnNlcnZlZCBpbiBCaWcgRW5kaWFuIG1vZGUpCisJICoKKwkgKiBJbiBkYXRhIGZldGNoIG1vZGUgYnl0ZXMgYXJlIHJlY2VpdmVkIGluIGNodW5rcyBvZiA4IGJ5dGVzLgorCSAqIEQwLCBEMSwgRDIsIEQzLCBENCwgRDUsIEQ2LCBENyAoRDAgcmVjZWl2ZWQgZmlyc3QpCisJICoKKwkgKiBUaGUgZGF0YSBpcyBob3dldmVyIGJ5IGRlZmF1bHQgd3JpdHRlbiB0byBtZW1vcnkgaW4gcmV2ZXJzZSBvcmRlcjoKKwkgKiBENywgRDYsIEQ1LCBENCwgRDMsIEQyLCBEMSwgRDAgKEQ3IHdyaXR0ZW4gdG8gbG93ZXN0IGJ5dGUpCisJICoKKwkgKiBUaGUgbG93ZXN0IHRocmVlIGJpdHMgb2YgQ0RPQ1IgYWxsb3dzIHVzIHRvIGRvIHN3YXBwaW5nLAorCSAqIHVzaW5nIDcgd2Ugc3dhcCB0aGUgZGF0YSBieXRlcyB0byBtYXRjaCB0aGUgaW5jb21pbmcgb3JkZXI6CisJICogRDAsIEQxLCBEMiwgRDMsIEQ0LCBENSwgRDYsIEQ3CisJICovCisJY2V1X3dyaXRlKHBjZGV2LCBDRE9DUiwgMHgwMDAwMDAxNyk7CiAKIAljZXVfd3JpdGUocGNkZXYsIENEV0RSLCBjZHdkcl93aWR0aCk7CiAJY2V1X3dyaXRlKHBjZGV2LCBDRldDUiwgMCk7IC8qIGtlZXAgImRhdGFmZXRjaCBmaXJld2FsbCIgZGlzYWJsZWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc29jX2NhbWVyYV9wbGF0Zm9ybS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zb2NfY2FtZXJhX3BsYXRmb3JtLmMKaW5kZXggMWFkYzI1Ny4uYmI3YTlkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zb2NfY2FtZXJhX3BsYXRmb3JtLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zb2NfY2FtZXJhX3BsYXRmb3JtLmMKQEAgLTE4LDE1ICsxOCw3IEBACiAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CiAjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KICNpbmNsdWRlIDxtZWRpYS9zb2NfY2FtZXJhLmg+Ci0KLXN0cnVjdCBzb2NfY2FtZXJhX3BsYXRmb3JtX2luZm8gewotCWludCBpZmFjZTsKLQljaGFyICpmb3JtYXRfbmFtZTsKLQl1bnNpZ25lZCBsb25nIGZvcm1hdF9kZXB0aDsKLQlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IGZvcm1hdDsKLQl1bnNpZ25lZCBsb25nIGJ1c19wYXJhbTsKLQlpbnQgKCpzZXRfY2FwdHVyZSkoc3RydWN0IHNvY19jYW1lcmFfcGxhdGZvcm1faW5mbyAqaW5mbywgaW50IGVuYWJsZSk7Ci19OworI2luY2x1ZGUgPG1lZGlhL3NvY19jYW1lcmFfcGxhdGZvcm0uaD4KIAogc3RydWN0IHNvY19jYW1lcmFfcGxhdGZvcm1fcHJpdiB7CiAJc3RydWN0IHNvY19jYW1lcmFfcGxhdGZvcm1faW5mbyAqaW5mbzsKQEAgLTQ0LDExICszNiwyMSBAQAogCiBzdGF0aWMgaW50IHNvY19jYW1lcmFfcGxhdGZvcm1faW5pdChzdHJ1Y3Qgc29jX2NhbWVyYV9kZXZpY2UgKmljZCkKIHsKKwlzdHJ1Y3Qgc29jX2NhbWVyYV9wbGF0Zm9ybV9pbmZvICpwID0gc29jX2NhbWVyYV9wbGF0Zm9ybV9nZXRfaW5mbyhpY2QpOworCisJaWYgKHAtPnBvd2VyKQorCQlwLT5wb3dlcigxKTsKKwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHNvY19jYW1lcmFfcGxhdGZvcm1fcmVsZWFzZShzdHJ1Y3Qgc29jX2NhbWVyYV9kZXZpY2UgKmljZCkKIHsKKwlzdHJ1Y3Qgc29jX2NhbWVyYV9wbGF0Zm9ybV9pbmZvICpwID0gc29jX2NhbWVyYV9wbGF0Zm9ybV9nZXRfaW5mbyhpY2QpOworCisJaWYgKHAtPnBvd2VyKQorCQlwLT5wb3dlcigwKTsKKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3N0ay13ZWJjYW0uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc3RrLXdlYmNhbS5jCmluZGV4IGRiNjliYzUuLmVkYWVhNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc3RrLXdlYmNhbS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc3RrLXdlYmNhbS5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgva3JlZi5oPgogCiAjaW5jbHVkZSA8bGludXgvdXNiLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KQEAgLTU2MCw3ICs1NTksNyBAQAogCiAJCXVyYiA9IGRldi0+aXNvYnVmc1tpXS51cmI7CiAJCWlmICh1cmIpIHsKLQkJCWlmIChhdG9taWNfcmVhZCgmZGV2LT51cmJzX3VzZWQpKQorCQkJaWYgKGF0b21pY19yZWFkKCZkZXYtPnVyYnNfdXNlZCkgJiYgaXNfcHJlc2VudChkZXYpKQogCQkJCXVzYl9raWxsX3VyYih1cmIpOwogCQkJdXNiX2ZyZWVfdXJiKHVyYik7CiAJCX0KQEAgLTY4OSwxOCArNjg4LDE0IEBACiB7CiAJc3RydWN0IHN0a19jYW1lcmEgKmRldiA9IGZwLT5wcml2YXRlX2RhdGE7CiAKLQlpZiAoZGV2LT5vd25lciAhPSBmcCkgewotCQl1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoZGV2LT5pbnRlcmZhY2UpOwotCQlyZXR1cm4gMDsKKwlpZiAoZGV2LT5vd25lciA9PSBmcCkgeworCQlzdGtfc3RvcF9zdHJlYW0oZGV2KTsKKwkJc3RrX2ZyZWVfYnVmZmVycyhkZXYpOworCQlkZXYtPm93bmVyID0gTlVMTDsKIAl9CiAKLQlzdGtfc3RvcF9zdHJlYW0oZGV2KTsKLQotCXN0a19mcmVlX2J1ZmZlcnMoZGV2KTsKLQotCWRldi0+b3duZXIgPSBOVUxMOwotCi0JdXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKGRldi0+aW50ZXJmYWNlKTsKKwlpZihpc19wcmVzZW50KGRldikpCisJCXVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShkZXYtPmludGVyZmFjZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcxNCw5ICs3MDksNiBAQAogCXN0cnVjdCBzdGtfc2lvX2J1ZmZlciAqc2J1ZjsKIAlzdHJ1Y3Qgc3RrX2NhbWVyYSAqZGV2ID0gZnAtPnByaXZhdGVfZGF0YTsKIAotCWlmIChkZXYgPT0gTlVMTCkKLQkJcmV0dXJuIC1FSU87Ci0KIAlpZiAoIWlzX3ByZXNlbnQoZGV2KSkKIAkJcmV0dXJuIC1FSU87CiAJaWYgKGRldi0+b3duZXIgJiYgZGV2LT5vd25lciAhPSBmcCkKQEAgLTc3Myw5ICs3NjUsNiBAQAogewogCXN0cnVjdCBzdGtfY2FtZXJhICpkZXYgPSBmcC0+cHJpdmF0ZV9kYXRhOwogCi0JaWYgKGRldiA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT0RFVjsKLQogCXBvbGxfd2FpdChmcCwgJmRldi0+d2FpdF9mcmFtZSwgd2FpdCk7CiAKIAlpZiAoIWlzX3ByZXNlbnQoZGV2KSkKQEAgLTE0MzYsNyArMTQyNSw3IEBACiAJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZkZXYtPndhaXRfZnJhbWUpOwogCXN0a19yZW1vdmVfc3lzZnNfZmlsZXMoJmRldi0+dmRldik7CiAKLQlTVEtfSU5GTygiU3ludGVrIFVTQjIuMCBDYW1lcmEgcmVsZWFzZSByZXNvdXJjZXMiCisJU1RLX0lORk8oIlN5bnRlayBVU0IyLjAgQ2FtZXJhIHJlbGVhc2UgcmVzb3VyY2VzICIKIAkJInZpZGVvIGRldmljZSAvZGV2L3ZpZGVvJWRcbiIsIGRldi0+dmRldi5taW5vcik7CiAKIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZSgmZGV2LT52ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc3RrLXdlYmNhbS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9zdGstd2ViY2FtLmgKaW5kZXggMDg0YTg1Yi4uOWY2NzM2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zdGstd2ViY2FtLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zdGstd2ViY2FtLmgKQEAgLTEyMiw3ICsxMjIsNiBAQAogCiAjZGVmaW5lIHZkZXZfdG9fY2FtZXJhKGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3Qgc3RrX2NhbWVyYSwgdmRldikKIAotdm9pZCBzdGtfY2FtZXJhX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqKTsKIGludCBzdGtfY2FtZXJhX3dyaXRlX3JlZyhzdHJ1Y3Qgc3RrX2NhbWVyYSAqLCB1MTYsIHU4KTsKIGludCBzdGtfY2FtZXJhX3JlYWRfcmVnKHN0cnVjdCBzdGtfY2FtZXJhICosIHUxNiwgaW50ICopOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2ZWVwcm9tLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2ZWVwcm9tLmMKaW5kZXggYmNjMzJmYS4uM2IwYjg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby90dmVlcHJvbS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdHZlZXByb20uYwpAQCAtMjQyLDcgKzI0Miw3IEBACiAJeyBUVU5FUl9BQlNFTlQsICAgICAgICAJCSJUQ0wgTTI1MjNfM0RCSF9FIn0sCiAJeyBUVU5FUl9BQlNFTlQsICAgICAgICAJCSJUQ0wgTTI1MjNfM0RJSF9FIn0sCiAJeyBUVU5FUl9BQlNFTlQsICAgICAgICAJCSJUQ0wgTUZQRTA1XzJfVSJ9LAotCXsgVFVORVJfUEhJTElQU19GTUQxMjE2TUVfTUszLAkiUGhpbGlwcyBGTUQxMjE2TUVYIn0sCisJeyBUVU5FUl9QSElMSVBTX0ZNRDEyMTZNRVhfTUszLAkiUGhpbGlwcyBGTUQxMjE2TUVYIn0sCiAJeyBUVU5FUl9BQlNFTlQsICAgICAgICAJCSJQaGlsaXBzIEZSSDIwMzZCIn0sCiAJeyBUVU5FUl9BQlNFTlQsICAgICAgICAJCSJQYW5hc29uaWMgRU5HRjc1XzAxR0YifSwKIAl7IFRVTkVSX0FCU0VOVCwgICAgICAgIAkJIk1heExpbmVhciBNWEw1MDA1In0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL2tvbmljYXdjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL2tvbmljYXdjLmMKaW5kZXggZTk4NmMyOC4uZGEyN2E1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby9rb25pY2F3Yy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlkZW8va29uaWNhd2MuYwpAQCAtMjI5LDcgKzIyOSw4IEBACiAKIAljYW0tPmlucHV0ID0gaW5wdXRfZGV2ID0gaW5wdXRfYWxsb2NhdGVfZGV2aWNlKCk7CiAJaWYgKCFpbnB1dF9kZXYpIHsKLQkJd2FybigiTm90IGVub3VnaCBtZW1vcnkgZm9yIGNhbWVyYSdzIGlucHV0IGRldmljZVxuIik7CisJCWRldl93YXJuKCZkZXYtPmRldiwKKwkJCSAiTm90IGVub3VnaCBtZW1vcnkgZm9yIGNhbWVyYSdzIGlucHV0IGRldmljZVxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTI0Myw4ICsyNDQsOSBAQAogCiAJZXJyb3IgPSBpbnB1dF9yZWdpc3Rlcl9kZXZpY2UoY2FtLT5pbnB1dCk7CiAJaWYgKGVycm9yKSB7Ci0JCXdhcm4oIkZhaWxlZCB0byByZWdpc3RlciBjYW1lcmEncyBpbnB1dCBkZXZpY2UsIGVycjogJWRcbiIsCi0JCSAgICAgZXJyb3IpOworCQlkZXZfd2FybigmZGV2LT5kZXYsCisJCQkgIkZhaWxlZCB0byByZWdpc3RlciBjYW1lcmEncyBpbnB1dCBkZXZpY2UsIGVycjogJWRcbiIsCisJCQkgZXJyb3IpOwogCQlpbnB1dF9mcmVlX2RldmljZShjYW0tPmlucHV0KTsKIAkJY2FtLT5pbnB1dCA9IE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby9xdWlja2NhbV9tZXNzZW5nZXIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlkZW8vcXVpY2tjYW1fbWVzc2VuZ2VyLmMKaW5kZXggMDVjNjFiNS4uNDQ1OWI4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby9xdWlja2NhbV9tZXNzZW5nZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL3F1aWNrY2FtX21lc3Nlbmdlci5jCkBAIC05Myw3ICs5Myw3IEBACiAKIAljYW0tPmlucHV0ID0gaW5wdXRfZGV2ID0gaW5wdXRfYWxsb2NhdGVfZGV2aWNlKCk7CiAJaWYgKCFpbnB1dF9kZXYpIHsKLQkJd2FybigiaW5zdWZmaWNpZW50IG1lbSBmb3IgY2FtIGlucHV0IGRldmljZSIpOworCQlkZXZfd2FybigmZGV2LT5kZXYsICJpbnN1ZmZpY2llbnQgbWVtIGZvciBjYW0gaW5wdXQgZGV2aWNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTA3LDggKzEwNyw5IEBACiAKIAllcnJvciA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShjYW0tPmlucHV0KTsKIAlpZiAoZXJyb3IpIHsKLQkJd2FybigiRmFpbGVkIHRvIHJlZ2lzdGVyIGNhbWVyYSdzIGlucHV0IGRldmljZSwgZXJyOiAlZFxuIiwKLQkJICAgICBlcnJvcik7CisJCWRldl93YXJuKCZkZXYtPmRldiwKKwkJCSAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNhbWVyYSdzIGlucHV0IGRldmljZSwgZXJyOiAlZFxuIiwKKwkJCSBlcnJvcik7CiAJCWlucHV0X2ZyZWVfZGV2aWNlKGNhbS0+aW5wdXQpOwogCQljYW0tPmlucHV0ID0gTlVMTDsKIAl9CkBAIC01ODcsOCArNTg4LDkgQEAKIAkJCWRhdGF1cmItPmlzb19mcmFtZV9kZXNjW2ldLm9mZnNldDsKIAogCQlpZiAoc3QgPCAwKSB7Ci0JCQl3YXJuKCJEYXRhIGVycm9yOiBwYWNrZXQ9JWQuIGxlbj0lZC4gc3RhdHVzPSVkLiIsCi0JCQkgICAgICBpLCBuLCBzdCk7CisJCQlkZXZfd2FybigmdXZkLT5kZXYtPmRldiwKKwkJCQkgIkRhdGEgZXJyb3I6IHBhY2tldD0lZC4gbGVuPSVkLiBzdGF0dXM9JWQuXG4iLAorCQkJCSBpLCBuLCBzdCk7CiAJCQl1dmQtPnN0YXRzLmlzb19lcnJfY291bnQrKzsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC02OTksNyArNzAxLDcgQEAKIAogCXJldCA9IHFjbV9jYW1lcmFfb2ZmKHV2ZCk7CiAJaWYgKHJldCkKLQkJd2FybigiY291bGRuJ3QgdHVybiB0aGUgY2FtIG9mZi4iKTsKKwkJZGV2X3dhcm4oJnV2ZC0+ZGV2LT5kZXYsICJjb3VsZG4ndCB0dXJuIHRoZSBjYW0gb2ZmLlxuIik7CiAKIAl1dmQtPnN0cmVhbWluZyA9IDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdmlkZW9idWYtZHZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZpZGVvYnVmLWR2Yi5jCmluZGV4IGI1NmNmZmMuLjkxNzI3N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdmlkZW9idWYtZHZiLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92aWRlb2J1Zi1kdmIuYwpAQCAtMTI2LDcgKzEyNiw2IEBACiAJbXV0ZXhfbG9jaygmZHZiLT5sb2NrKTsKIAlkdmItPm5mZWVkcy0tOwogCWlmICgwID09IGR2Yi0+bmZlZWRzICAmJiAgTlVMTCAhPSBkdmItPnRocmVhZCkgewotCQkvLyBGSVhNRTogY3g4ODAyX2NhbmNlbF9idWZmZXJzKGRldik7CiAJCWVyciA9IGt0aHJlYWRfc3RvcChkdmItPnRocmVhZCk7CiAJCWR2Yi0+dGhyZWFkID0gTlVMTDsKIAl9CkBAIC0xMzQsMzAgKzEzMywzOCBAQAogCXJldHVybiBlcnI7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbnQgdmlkZW9idWZfZHZiX3JlZ2lzdGVyKHN0cnVjdCB2aWRlb2J1Zl9kdmIgKmR2YiwKK3N0YXRpYyBpbnQgdmlkZW9idWZfZHZiX3JlZ2lzdGVyX2FkYXB0ZXIoc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZHMgKmZlLAogCQkJICBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsCiAJCQkgIHZvaWQgKmFkYXB0ZXJfcHJpdiwKIAkJCSAgc3RydWN0IGRldmljZSAqZGV2aWNlLAotCQkJICBzaG9ydCAqYWRhcHRlcl9ucikKKwkJCSAgY2hhciAqYWRhcHRlcl9uYW1lLAorCQkJICBzaG9ydCAqYWRhcHRlcl9uciwKKwkJCSAgaW50IG1mZV9zaGFyZWQpCiB7CiAJaW50IHJlc3VsdDsKIAotCW11dGV4X2luaXQoJmR2Yi0+bG9jayk7CisJbXV0ZXhfaW5pdCgmZmUtPmxvY2spOwogCiAJLyogcmVnaXN0ZXIgYWRhcHRlciAqLwotCXJlc3VsdCA9IGR2Yl9yZWdpc3Rlcl9hZGFwdGVyKCZkdmItPmFkYXB0ZXIsIGR2Yi0+bmFtZSwgbW9kdWxlLCBkZXZpY2UsCi0JCQkJICAgICAgYWRhcHRlcl9ucik7CisJcmVzdWx0ID0gZHZiX3JlZ2lzdGVyX2FkYXB0ZXIoJmZlLT5hZGFwdGVyLCBhZGFwdGVyX25hbWUsIG1vZHVsZSwKKwkJZGV2aWNlLCBhZGFwdGVyX25yKTsKIAlpZiAocmVzdWx0IDwgMCkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogZHZiX3JlZ2lzdGVyX2FkYXB0ZXIgZmFpbGVkIChlcnJubyA9ICVkKVxuIiwKLQkJICAgICAgIGR2Yi0+bmFtZSwgcmVzdWx0KTsKLQkJZ290byBmYWlsX2FkYXB0ZXI7CisJCSAgICAgICBhZGFwdGVyX25hbWUsIHJlc3VsdCk7CiAJfQotCWR2Yi0+YWRhcHRlci5wcml2ID0gYWRhcHRlcl9wcml2OworCWZlLT5hZGFwdGVyLnByaXYgPSBhZGFwdGVyX3ByaXY7CisJZmUtPmFkYXB0ZXIubWZlX3NoYXJlZCA9IG1mZV9zaGFyZWQ7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50IHZpZGVvYnVmX2R2Yl9yZWdpc3Rlcl9mcm9udGVuZChzdHJ1Y3QgZHZiX2FkYXB0ZXIgKmFkYXB0ZXIsCisJc3RydWN0IHZpZGVvYnVmX2R2YiAqZHZiKQoreworCWludCByZXN1bHQ7CiAKIAkvKiByZWdpc3RlciBmcm9udGVuZCAqLwotCXJlc3VsdCA9IGR2Yl9yZWdpc3Rlcl9mcm9udGVuZCgmZHZiLT5hZGFwdGVyLCBkdmItPmZyb250ZW5kKTsKKwlyZXN1bHQgPSBkdmJfcmVnaXN0ZXJfZnJvbnRlbmQoYWRhcHRlciwgZHZiLT5mcm9udGVuZCk7CiAJaWYgKHJlc3VsdCA8IDApIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGR2Yl9yZWdpc3Rlcl9mcm9udGVuZCBmYWlsZWQgKGVycm5vID0gJWQpXG4iLAogCQkgICAgICAgZHZiLT5uYW1lLCByZXN1bHQpOwpAQCAtMTgzLDcgKzE5MCw4IEBACiAJZHZiLT5kbXhkZXYuZmlsdGVybnVtICAgID0gMjU2OwogCWR2Yi0+ZG14ZGV2LmRlbXV4ICAgICAgICA9ICZkdmItPmRlbXV4LmRteDsKIAlkdmItPmRteGRldi5jYXBhYmlsaXRpZXMgPSAwOwotCXJlc3VsdCA9IGR2Yl9kbXhkZXZfaW5pdCgmZHZiLT5kbXhkZXYsICZkdmItPmFkYXB0ZXIpOworCXJlc3VsdCA9IGR2Yl9kbXhkZXZfaW5pdCgmZHZiLT5kbXhkZXYsIGFkYXB0ZXIpOworCiAJaWYgKHJlc3VsdCA8IDApIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGR2Yl9kbXhkZXZfaW5pdCBmYWlsZWQgKGVycm5vID0gJWQpXG4iLAogCQkgICAgICAgZHZiLT5uYW1lLCByZXN1bHQpOwpAQCAtMjE0LDcgKzIyMiwxMSBAQAogCX0KIAogCS8qIHJlZ2lzdGVyIG5ldHdvcmsgYWRhcHRlciAqLwotCWR2Yl9uZXRfaW5pdCgmZHZiLT5hZGFwdGVyLCAmZHZiLT5uZXQsICZkdmItPmRlbXV4LmRteCk7CisJZHZiX25ldF9pbml0KGFkYXB0ZXIsICZkdmItPm5ldCwgJmR2Yi0+ZGVtdXguZG14KTsKKwlpZiAoZHZiLT5uZXQuZHZiZGV2ID09IE5VTEwpIHsKKwkJcmVzdWx0ID0gLUVOT01FTTsKKwkJZ290byBmYWlsX2ZlX2Nvbm47CisJfQogCXJldHVybiAwOwogCiBmYWlsX2ZlX2Nvbm46CkBAIC0yMjksMzAgKzI0MSwxNTEgQEAKIAlkdmJfdW5yZWdpc3Rlcl9mcm9udGVuZChkdmItPmZyb250ZW5kKTsKIGZhaWxfZnJvbnRlbmQ6CiAJZHZiX2Zyb250ZW5kX2RldGFjaChkdmItPmZyb250ZW5kKTsKLQlkdmJfdW5yZWdpc3Rlcl9hZGFwdGVyKCZkdmItPmFkYXB0ZXIpOwotZmFpbF9hZGFwdGVyOgorCWR2Yi0+ZnJvbnRlbmQgPSBOVUxMOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCB2aWRlb2J1Zl9kdmJfdW5yZWdpc3RlcihzdHJ1Y3QgdmlkZW9idWZfZHZiICpkdmIpCi17Ci0JZHZiX25ldF9yZWxlYXNlKCZkdmItPm5ldCk7Ci0JZHZiLT5kZW11eC5kbXgucmVtb3ZlX2Zyb250ZW5kKCZkdmItPmRlbXV4LmRteCwgJmR2Yi0+ZmVfbWVtKTsKLQlkdmItPmRlbXV4LmRteC5yZW1vdmVfZnJvbnRlbmQoJmR2Yi0+ZGVtdXguZG14LCAmZHZiLT5mZV9odyk7Ci0JZHZiX2RteGRldl9yZWxlYXNlKCZkdmItPmRteGRldik7Ci0JZHZiX2RteF9yZWxlYXNlKCZkdmItPmRlbXV4KTsKLQlkdmJfdW5yZWdpc3Rlcl9mcm9udGVuZChkdmItPmZyb250ZW5kKTsKLQlkdmJfZnJvbnRlbmRfZGV0YWNoKGR2Yi0+ZnJvbnRlbmQpOwotCWR2Yl91bnJlZ2lzdGVyX2FkYXB0ZXIoJmR2Yi0+YWRhcHRlcik7Ci19Ci0KLUVYUE9SVF9TWU1CT0wodmlkZW9idWZfZHZiX3JlZ2lzdGVyKTsKLUVYUE9SVF9TWU1CT0wodmlkZW9idWZfZHZiX3VucmVnaXN0ZXIpOwotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBjLWJhc2ljLW9mZnNldDogOAotICogY29tcGlsZS1jb21tYW5kOiAibWFrZSBEVkI9MSIKLSAqIEVuZDoKLSAqLworLyogUmVnaXN0ZXIgYSBzaW5nbGUgYWRhcHRlciBhbmQgb25lIG9yIG1vcmUgZnJvbnRlbmRzICovCitpbnQgdmlkZW9idWZfZHZiX3JlZ2lzdGVyX2J1cyhzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyAqZiwKKwkJCSAgc3RydWN0IG1vZHVsZSAqbW9kdWxlLAorCQkJICB2b2lkICphZGFwdGVyX3ByaXYsCisJCQkgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwKKwkJCSAgc2hvcnQgKmFkYXB0ZXJfbnIsCisJCQkgIGludCBtZmVfc2hhcmVkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsICpxOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlOworCWludCByZXM7CisKKwlmZSA9IHZpZGVvYnVmX2R2Yl9nZXRfZnJvbnRlbmQoZiwgMSk7CisJaWYgKCFmZSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HICJVbmFibGUgdG8gcmVnaXN0ZXIgdGhlIGFkYXB0ZXIgd2hpY2ggaGFzIG5vIGZyb250ZW5kc1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIEJyaW5nIHVwIHRoZSBhZGFwdGVyICovCisJcmVzID0gdmlkZW9idWZfZHZiX3JlZ2lzdGVyX2FkYXB0ZXIoZiwgbW9kdWxlLCBhZGFwdGVyX3ByaXYsIGRldmljZSwKKwkJZmUtPmR2Yi5uYW1lLCBhZGFwdGVyX25yLCBtZmVfc2hhcmVkKTsKKwlpZiAocmVzIDwgMCkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HICJ2aWRlb2J1Zl9kdmJfcmVnaXN0ZXJfYWRhcHRlciBmYWlsZWQgKGVycm5vID0gJWQpXG4iLCByZXMpOworCQlyZXR1cm4gcmVzOworCX0KKworCS8qIEF0dGFjaCBhbGwgb2YgdGhlIGZyb250ZW5kcyB0byB0aGUgYWRhcHRlciAqLworCW11dGV4X2xvY2soJmYtPmxvY2spOworCWxpc3RfZm9yX2VhY2hfc2FmZShsaXN0LCBxLCAmZi0+ZmVsaXN0KSB7CisJCWZlID0gbGlzdF9lbnRyeShsaXN0LCBzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kLCBmZWxpc3QpOworCQlyZXMgPSB2aWRlb2J1Zl9kdmJfcmVnaXN0ZXJfZnJvbnRlbmQoJmYtPmFkYXB0ZXIsICZmZS0+ZHZiKTsKKwkJaWYgKHJlcyA8IDApIHsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiB2aWRlb2J1Zl9kdmJfcmVnaXN0ZXJfZnJvbnRlbmQgZmFpbGVkIChlcnJubyA9ICVkKVxuIiwKKwkJCQlmZS0+ZHZiLm5hbWUsIHJlcyk7CisJCQlnb3RvIGVycjsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmYtPmxvY2spOworCXJldHVybiAwOworCitlcnI6CisJbXV0ZXhfdW5sb2NrKCZmLT5sb2NrKTsKKwl2aWRlb2J1Zl9kdmJfdW5yZWdpc3Rlcl9idXMoZik7CisJcmV0dXJuIHJlczsKK30KK0VYUE9SVF9TWU1CT0wodmlkZW9idWZfZHZiX3JlZ2lzdGVyX2J1cyk7CisKK3ZvaWQgdmlkZW9idWZfZHZiX3VucmVnaXN0ZXJfYnVzKHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmRzICpmKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsICpxOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlOworCisJbXV0ZXhfbG9jaygmZi0+bG9jayk7CisJbGlzdF9mb3JfZWFjaF9zYWZlKGxpc3QsIHEsICZmLT5mZWxpc3QpIHsKKwkJZmUgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQsIGZlbGlzdCk7CisJCWlmIChmZS0+ZHZiLm5ldC5kdmJkZXYpIHsKKwkJCWR2Yl9uZXRfcmVsZWFzZSgmZmUtPmR2Yi5uZXQpOworCQkJZmUtPmR2Yi5kZW11eC5kbXgucmVtb3ZlX2Zyb250ZW5kKCZmZS0+ZHZiLmRlbXV4LmRteCwKKwkJCQkmZmUtPmR2Yi5mZV9tZW0pOworCQkJZmUtPmR2Yi5kZW11eC5kbXgucmVtb3ZlX2Zyb250ZW5kKCZmZS0+ZHZiLmRlbXV4LmRteCwKKwkJCQkmZmUtPmR2Yi5mZV9odyk7CisJCQlkdmJfZG14ZGV2X3JlbGVhc2UoJmZlLT5kdmIuZG14ZGV2KTsKKwkJCWR2Yl9kbXhfcmVsZWFzZSgmZmUtPmR2Yi5kZW11eCk7CisJCQlkdmJfdW5yZWdpc3Rlcl9mcm9udGVuZChmZS0+ZHZiLmZyb250ZW5kKTsKKwkJfQorCQlpZiAoZmUtPmR2Yi5mcm9udGVuZCkKKwkJCS8qIGFsd2F5cyBhbGxvY2F0ZWQsIG1heSBoYXZlIGJlZW4gcmVzZXQgKi8KKwkJCWR2Yl9mcm9udGVuZF9kZXRhY2goZmUtPmR2Yi5mcm9udGVuZCk7CisJCWxpc3RfZGVsKGxpc3QpOworCQlrZnJlZShmZSk7CisJfQorCW11dGV4X3VubG9jaygmZi0+bG9jayk7CisKKwlkdmJfdW5yZWdpc3Rlcl9hZGFwdGVyKCZmLT5hZGFwdGVyKTsKK30KK0VYUE9SVF9TWU1CT0wodmlkZW9idWZfZHZiX3VucmVnaXN0ZXJfYnVzKTsKKworc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqdmlkZW9idWZfZHZiX2dldF9mcm9udGVuZCgKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyAqZiwgaW50IGlkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsICpxOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlLCAqcmV0ID0gTlVMTDsKKworCW11dGV4X2xvY2soJmYtPmxvY2spOworCisJbGlzdF9mb3JfZWFjaF9zYWZlKGxpc3QsIHEsICZmLT5mZWxpc3QpIHsKKwkJZmUgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQsIGZlbGlzdCk7CisJCWlmIChmZS0+aWQgPT0gaWQpIHsKKwkJCXJldCA9IGZlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwltdXRleF91bmxvY2soJmYtPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0wodmlkZW9idWZfZHZiX2dldF9mcm9udGVuZCk7CisKK2ludCB2aWRlb2J1Zl9kdmJfZmluZF9mcm9udGVuZChzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyAqZiwKKwlzdHJ1Y3QgZHZiX2Zyb250ZW5kICpwKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsICpxOworCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgKmZlID0gTlVMTDsKKwlpbnQgcmV0ID0gMDsKKworCW11dGV4X2xvY2soJmYtPmxvY2spOworCisJbGlzdF9mb3JfZWFjaF9zYWZlKGxpc3QsIHEsICZmLT5mZWxpc3QpIHsKKwkJZmUgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQsIGZlbGlzdCk7CisJCWlmIChmZS0+ZHZiLmZyb250ZW5kID09IHApIHsKKwkJCXJldCA9IGZlLT5pZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJbXV0ZXhfdW5sb2NrKCZmLT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKHZpZGVvYnVmX2R2Yl9maW5kX2Zyb250ZW5kKTsKKworc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqdmlkZW9idWZfZHZiX2FsbG9jX2Zyb250ZW5kKAorCXN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmRzICpmLCBpbnQgaWQpCit7CisJc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZCAqZmU7CisKKwlmZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZmUgPT0gTlVMTCkKKwkJZ290byBmYWlsX2FsbG9jOworCisJZmUtPmlkID0gaWQ7CisJbXV0ZXhfaW5pdCgmZmUtPmR2Yi5sb2NrKTsKKworCW11dGV4X2xvY2soJmYtPmxvY2spOworCWxpc3RfYWRkX3RhaWwoJmZlLT5mZWxpc3QsICZmLT5mZWxpc3QpOworCW11dGV4X3VubG9jaygmZi0+bG9jayk7CisKK2ZhaWxfYWxsb2M6CisJcmV0dXJuIGZlOworfQorRVhQT1JUX1NZTUJPTCh2aWRlb2J1Zl9kdmJfYWxsb2NfZnJvbnRlbmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92aXZpLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZpdmkuYwppbmRleCA2NWM4YWYxLi43ZDdlNTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZpdmkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZpdmkuYwpAQCAtMTI4LDEyICsxMjgsNTYgQEAKIAlpbnQgICBkZXB0aDsKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgdml2aV9mbXQgZm9ybWF0ID0gewotCS5uYW1lICAgICA9ICI0OjI6MiwgcGFja2VkLCBZVVlWIiwKLQkuZm91cmNjICAgPSBWNEwyX1BJWF9GTVRfWVVZViwKLQkuZGVwdGggICAgPSAxNiwKK3N0YXRpYyBzdHJ1Y3Qgdml2aV9mbXQgZm9ybWF0c1tdID0geworCXsKKwkJLm5hbWUgICAgID0gIjQ6MjoyLCBwYWNrZWQsIFlVWVYiLAorCQkuZm91cmNjICAgPSBWNEwyX1BJWF9GTVRfWVVZViwKKwkJLmRlcHRoICAgID0gMTYsCisJfSwKKwl7CisJCS5uYW1lICAgICA9ICI0OjI6MiwgcGFja2VkLCBVWVZZIiwKKwkJLmZvdXJjYyAgID0gVjRMMl9QSVhfRk1UX1VZVlksCisJCS5kZXB0aCAgICA9IDE2LAorCX0sCisJeworCQkubmFtZSAgICAgPSAiUkdCNTY1IChMRSkiLAorCQkuZm91cmNjICAgPSBWNEwyX1BJWF9GTVRfUkdCNTY1LCAvKiBnZ2diYmJiYiBycnJycmdnZyAqLworCQkuZGVwdGggICAgPSAxNiwKKwl9LAorCXsKKwkJLm5hbWUgICAgID0gIlJHQjU2NSAoQkUpIiwKKwkJLmZvdXJjYyAgID0gVjRMMl9QSVhfRk1UX1JHQjU2NVgsIC8qIHJycnJyZ2dnIGdnZ2JiYmJiICovCisJCS5kZXB0aCAgICA9IDE2LAorCX0sCisJeworCQkubmFtZSAgICAgPSAiUkdCNTU1IChMRSkiLAorCQkuZm91cmNjICAgPSBWNEwyX1BJWF9GTVRfUkdCNTU1LCAvKiBnZ2diYmJiYiBhcnJycnJnZyAqLworCQkuZGVwdGggICAgPSAxNiwKKwl9LAorCXsKKwkJLm5hbWUgICAgID0gIlJHQjU1NSAoQkUpIiwKKwkJLmZvdXJjYyAgID0gVjRMMl9QSVhfRk1UX1JHQjU1NVgsIC8qIGFycnJycmdnIGdnZ2JiYmJiICovCisJCS5kZXB0aCAgICA9IDE2LAorCX0sCiB9OwogCitzdGF0aWMgc3RydWN0IHZpdmlfZm10ICpnZXRfZm9ybWF0KHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sKKwlzdHJ1Y3Qgdml2aV9mbXQgKmZtdDsKKwl1bnNpZ25lZCBpbnQgazsKKworCWZvciAoayA9IDA7IGsgPCBBUlJBWV9TSVpFKGZvcm1hdHMpOyBrKyspIHsKKwkJZm10ID0gJmZvcm1hdHNba107CisJCWlmIChmbXQtPmZvdXJjYyA9PSBmLT5mbXQucGl4LnBpeGVsZm9ybWF0KQorCQkJYnJlYWs7CisJfQorCisJaWYgKGsgPT0gQVJSQVlfU0laRShmb3JtYXRzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gJmZvcm1hdHNba107Cit9CisKIHN0cnVjdCBzZ190b19hZGRyIHsKIAlpbnQgcG9zOwogCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CkBAIC0xOTAsNiArMjM0LDcgQEAKIAlzdHJ1Y3QgdmlkZW9idWZfcXVldWUgICAgICB2Yl92aWRxOwogCiAJZW51bSB2NGwyX2J1Zl90eXBlICAgICAgICAgdHlwZTsKKwl1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICBiYXJzWzhdWzNdOwogfTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzQsMTMgKzI3OSwxMDcgQEAKICNkZWZpbmUgVFNUQU1QX01BWF9ZIFRTVEFNUF9NSU5fWSsxNQogI2RlZmluZSBUU1RBTVBfTUlOX1ggNjQKIAotc3RhdGljIHZvaWQgZ2VuX2xpbmUoY2hhciAqYmFzZXAsIGludCBpbmlwb3MsIGludCB3bWF4LAorc3RhdGljIHZvaWQgZ2VuX3R3b3BpeChzdHJ1Y3Qgdml2aV9maCAqZmgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvbG9ycG9zKQoreworCXVuc2lnbmVkIGNoYXIgcl95LCBnX3UsIGJfdjsKKwl1bnNpZ25lZCBjaGFyICpwOworCWludCBjb2xvcjsKKworCXJfeSA9IGZoLT5iYXJzW2NvbG9ycG9zXVswXTsgLyogUiBvciBwcmVjYWxjdWxhdGVkIFkgKi8KKwlnX3UgPSBmaC0+YmFyc1tjb2xvcnBvc11bMV07IC8qIEcgb3IgcHJlY2FsY3VsYXRlZCBVICovCisJYl92ID0gZmgtPmJhcnNbY29sb3Jwb3NdWzJdOyAvKiBCIG9yIHByZWNhbGN1bGF0ZWQgViAqLworCisJZm9yIChjb2xvciA9IDA7IGNvbG9yIDwgNDsgY29sb3IrKykgeworCQlwID0gYnVmICsgY29sb3I7CisKKwkJc3dpdGNoIChmaC0+Zm10LT5mb3VyY2MpIHsKKwkJY2FzZSBWNEwyX1BJWF9GTVRfWVVZVjoKKwkJCXN3aXRjaCAoY29sb3IpIHsKKwkJCWNhc2UgMDoKKwkJCWNhc2UgMjoKKwkJCQkqcCA9IHJfeTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMToKKwkJCQkqcCA9IGdfdTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMzoKKwkJCQkqcCA9IGJfdjsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFY0TDJfUElYX0ZNVF9VWVZZOgorCQkJc3dpdGNoIChjb2xvcikgeworCQkJY2FzZSAxOgorCQkJY2FzZSAzOgorCQkJCSpwID0gcl95OworCQkJCWJyZWFrOworCQkJY2FzZSAwOgorCQkJCSpwID0gZ191OworCQkJCWJyZWFrOworCQkJY2FzZSAyOgorCQkJCSpwID0gYl92OworCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9QSVhfRk1UX1JHQjU2NToKKwkJCXN3aXRjaCAoY29sb3IpIHsKKwkJCWNhc2UgMDoKKwkJCWNhc2UgMjoKKwkJCQkqcCA9IChnX3UgPDwgNSkgfCBiX3Y7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQljYXNlIDM6CisJCQkJKnAgPSAocl95IDw8IDMpIHwgKGdfdSA+PiAzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFY0TDJfUElYX0ZNVF9SR0I1NjVYOgorCQkJc3dpdGNoIChjb2xvcikgeworCQkJY2FzZSAwOgorCQkJY2FzZSAyOgorCQkJCSpwID0gKHJfeSA8PCAzKSB8IChnX3UgPj4gMyk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQljYXNlIDM6CisJCQkJKnAgPSAoZ191IDw8IDUpIHwgYl92OworCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9QSVhfRk1UX1JHQjU1NToKKwkJCXN3aXRjaCAoY29sb3IpIHsKKwkJCWNhc2UgMDoKKwkJCWNhc2UgMjoKKwkJCQkqcCA9IChnX3UgPDwgNSkgfCBiX3Y7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQljYXNlIDM6CisJCQkJKnAgPSAocl95IDw8IDIpIHwgKGdfdSA+PiAzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFY0TDJfUElYX0ZNVF9SR0I1NTVYOgorCQkJc3dpdGNoIChjb2xvcikgeworCQkJY2FzZSAwOgorCQkJY2FzZSAyOgorCQkJCSpwID0gKHJfeSA8PCAyKSB8IChnX3UgPj4gMyk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQljYXNlIDM6CisJCQkJKnAgPSAoZ191IDw8IDUpIHwgYl92OworCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGdlbl9saW5lKHN0cnVjdCB2aXZpX2ZoICpmaCwgY2hhciAqYmFzZXAsIGludCBpbmlwb3MsIGludCB3bWF4LAogCQlpbnQgaG1heCwgaW50IGxpbmUsIGludCBjb3VudCwgY2hhciAqdGltZXN0cikKIHsKLQlpbnQgIHcsIGksIGosIHk7CisJaW50ICB3LCBpLCBqOwogCWludCBwb3MgPSBpbmlwb3M7Ci0JY2hhciAqcCwgKnM7Ci0JdTggICBjaHIsIHIsIGcsIGIsIGNvbG9yOworCWNoYXIgKnM7CisJdTggY2hyOwogCiAJLyogV2Ugd2lsbCBqdXN0IGR1cGxpY2F0ZSB0aGUgc2Vjb25kIHBpeGVsIGF0IHRoZSBwYWNrZXQgKi8KIAl3bWF4IC89IDI7CkBAIC0yNDgsMjcgKzM4Nyw5IEBACiAJLyogR2VuZXJhdGUgYSBzdGFuZGFyZCBjb2xvciBiYXIgcGF0dGVybiAqLwogCWZvciAodyA9IDA7IHcgPCB3bWF4OyB3KyspIHsKIAkJaW50IGNvbG9ycG9zID0gKCh3ICsgY291bnQpICogOC8od21heCArIDEpKSAlIDg7Ci0JCXIgPSBiYXJzW2NvbG9ycG9zXVswXTsKLQkJZyA9IGJhcnNbY29sb3Jwb3NdWzFdOwotCQliID0gYmFyc1tjb2xvcnBvc11bMl07CiAKLQkJZm9yIChjb2xvciA9IDA7IGNvbG9yIDwgNDsgY29sb3IrKykgewotCQkJcCA9IGJhc2VwICsgcG9zOwotCi0JCQlzd2l0Y2ggKGNvbG9yKSB7Ci0JCQljYXNlIDA6Ci0JCQljYXNlIDI6Ci0JCQkJKnAgPSBUT19ZKHIsIGcsIGIpOwkvKiBMdW1hICovCi0JCQkJYnJlYWs7Ci0JCQljYXNlIDE6Ci0JCQkJKnAgPSBUT19VKHIsIGcsIGIpOwkvKiBDYiAqLwotCQkJCWJyZWFrOwotCQkJY2FzZSAzOgotCQkJCSpwID0gVE9fVihyLCBnLCBiKTsJLyogQ3IgKi8KLQkJCQlicmVhazsKLQkJCX0KLQkJCXBvcysrOwotCQl9CisJCWdlbl90d29waXgoZmgsIGJhc2VwICsgcG9zLCBjb2xvcnBvcyk7CisJCXBvcyArPSA0OyAvKiBvbmx5IDE2IGJwcCBzdXBwb3J0ZWQgZm9yIG5vdyAqLwogCX0KIAogCS8qIENoZWNrcyBpZiBpdCBpcyBwb3NzaWJsZSB0byBzaG93IHRpbWVzdGFtcCAqLwpAQCAtMjgzLDM4ICs0MDQsMTIgQEAKIAkJZm9yIChzID0gdGltZXN0cjsgKnM7IHMrKykgewogCQkJY2hyID0gcm9tOHgxNl9iaXRzWygqcy0weDMwKSoxNitsaW5lLVRTVEFNUF9NSU5fWV07CiAJCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7Ci0JCQkJaWYgKGNociAmIDEgPDwgKDcgLSBpKSkgewotCQkJCQkvKiBGb250IGNvbG9yKi8KLQkJCQkJciA9IDA7Ci0JCQkJCWcgPSAxOTg7Ci0JCQkJCWIgPSAwOwotCQkJCX0gZWxzZSB7Ci0JCQkJCS8qIEJhY2tncm91bmQgY29sb3IgKi8KLQkJCQkJciA9IGJhcnNbQkxBQ0tdWzBdOwotCQkJCQlnID0gYmFyc1tCTEFDS11bMV07Ci0JCQkJCWIgPSBiYXJzW0JMQUNLXVsyXTsKLQkJCQl9Ci0KIAkJCQlwb3MgPSBpbmlwb3MgKyBqICogMjsKLQkJCQlmb3IgKGNvbG9yID0gMDsgY29sb3IgPCA0OyBjb2xvcisrKSB7Ci0JCQkJCXAgPSBiYXNlcCArIHBvczsKLQotCQkJCQl5ID0gVE9fWShyLCBnLCBiKTsKLQotCQkJCQlzd2l0Y2ggKGNvbG9yKSB7Ci0JCQkJCWNhc2UgMDoKLQkJCQkJY2FzZSAyOgotCQkJCQkJKnAgPSBUT19ZKHIsIGcsIGIpOyAvKiBMdW1hICovCi0JCQkJCQlicmVhazsKLQkJCQkJY2FzZSAxOgotCQkJCQkJKnAgPSBUT19VKHIsIGcsIGIpOyAvKiBDYiAqLwotCQkJCQkJYnJlYWs7Ci0JCQkJCWNhc2UgMzoKLQkJCQkJCSpwID0gVE9fVihyLCBnLCBiKTsgLyogQ3IgKi8KLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJCXBvcysrOwotCQkJCX0KKwkJCQkvKiBEcmF3IHdoaXRlIGZvbnQgb24gYmxhY2sgYmFja2dyb3VuZCAqLworCQkJCWlmIChjaHIgJiAxIDw8ICg3IC0gaSkpCisJCQkJCWdlbl90d29waXgoZmgsIGJhc2VwICsgcG9zLCBXSElURSk7CisJCQkJZWxzZQorCQkJCQlnZW5fdHdvcGl4KGZoLCBiYXNlcCArIHBvcywgQkxBQ0spOwogCQkJCWorKzsKIAkJCX0KIAkJfQpAQCAtMzI0LDggKzQxOSw5IEBACiAJcmV0dXJuOwogfQogCi1zdGF0aWMgdm9pZCB2aXZpX2ZpbGxidWZmKHN0cnVjdCB2aXZpX2RldiAqZGV2LCBzdHJ1Y3Qgdml2aV9idWZmZXIgKmJ1ZikKK3N0YXRpYyB2b2lkIHZpdmlfZmlsbGJ1ZmYoc3RydWN0IHZpdmlfZmggKmZoLCBzdHJ1Y3Qgdml2aV9idWZmZXIgKmJ1ZikKIHsKKwlzdHJ1Y3Qgdml2aV9kZXYgKmRldiA9IGZoLT5kZXY7CiAJaW50IGggLCBwb3MgPSAwOwogCWludCBobWF4ICA9IGJ1Zi0+dmIuaGVpZ2h0OwogCWludCB3bWF4ICA9IGJ1Zi0+dmIud2lkdGg7CkBAIC0zNDEsNyArNDM3LDcgQEAKIAkJcmV0dXJuOwogCiAJZm9yIChoID0gMDsgaCA8IGhtYXg7IGgrKykgewotCQlnZW5fbGluZSh0bXBidWYsIDAsIHdtYXgsIGhtYXgsIGgsIGRldi0+bXZfY291bnQsCisJCWdlbl9saW5lKGZoLCB0bXBidWYsIDAsIHdtYXgsIGhtYXgsIGgsIGRldi0+bXZfY291bnQsCiAJCQkgZGV2LT50aW1lc3RyKTsKIAkJbWVtY3B5KHZidWYgKyBwb3MsIHRtcGJ1Ziwgd21heCAqIDIpOwogCQlwb3MgKz0gd21heCoyOwpAQCAtNDEwLDcgKzUwNiw3IEBACiAJZG9fZ2V0dGltZW9mZGF5KCZidWYtPnZiLnRzKTsKIAogCS8qIEZpbGwgYnVmZmVyICovCi0Jdml2aV9maWxsYnVmZihkZXYsIGJ1Zik7CisJdml2aV9maWxsYnVmZihmaCwgYnVmKTsKIAlkcHJpbnRrKGRldiwgMSwgImZpbGxlZCBidWZmZXIgJXBcbiIsIGJ1Zik7CiAKIAl3YWtlX3VwKCZidWYtPnZiLmRvbmUpOwpAQCAtNjM2LDExICs3MzIsMTUgQEAKIHN0YXRpYyBpbnQgdmlkaW9jX2VudW1fZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgICpwcml2LAogCQkJCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQogewotCWlmIChmLT5pbmRleCA+IDApCisJc3RydWN0IHZpdmlfZm10ICpmbXQ7CisKKwlpZiAoZi0+aW5kZXggPj0gQVJSQVlfU0laRShmb3JtYXRzKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlzdHJsY3B5KGYtPmRlc2NyaXB0aW9uLCBmb3JtYXQubmFtZSwgc2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSk7Ci0JZi0+cGl4ZWxmb3JtYXQgPSBmb3JtYXQuZm91cmNjOworCWZtdCA9ICZmb3JtYXRzW2YtPmluZGV4XTsKKworCXN0cmxjcHkoZi0+ZGVzY3JpcHRpb24sIGZtdC0+bmFtZSwgc2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSk7CisJZi0+cGl4ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNjcwLDEzICs3NzAsMTIgQEAKIAllbnVtIHY0bDJfZmllbGQgZmllbGQ7CiAJdW5zaWduZWQgaW50IG1heHcsIG1heGg7CiAKLQlpZiAoZm9ybWF0LmZvdXJjYyAhPSBmLT5mbXQucGl4LnBpeGVsZm9ybWF0KSB7Ci0JCWRwcmludGsoZGV2LCAxLCAiRm91cmNjIGZvcm1hdCAoMHglMDh4KSBpbnZhbGlkLiAiCi0JCQkiRHJpdmVyIGFjY2VwdHMgb25seSAweCUwOHhcbiIsCi0JCQlmLT5mbXQucGl4LnBpeGVsZm9ybWF0LCBmb3JtYXQuZm91cmNjKTsKKwlmbXQgPSBnZXRfZm9ybWF0KGYpOworCWlmICghZm10KSB7CisJCWRwcmludGsoZGV2LCAxLCAiRm91cmNjIGZvcm1hdCAoMHglMDh4KSBpbnZhbGlkLlxuIiwKKwkJCWYtPmZtdC5waXgucGl4ZWxmb3JtYXQpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JZm10ID0gJmZvcm1hdDsKIAogCWZpZWxkID0gZi0+Zm10LnBpeC5maWVsZDsKIApAQCAtNzE0LDYgKzgxMyw4IEBACiB7CiAJc3RydWN0IHZpdmlfZmggICpmaCA9IHByaXY7CiAJc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxID0gJmZoLT52Yl92aWRxOworCXVuc2lnbmVkIGNoYXIgciwgZywgYjsKKwlpbnQgaywgaXNfeXV2OwogCiAJaW50IHJldCA9IHZpZGlvY190cnlfZm10X3ZpZF9jYXAoZmlsZSwgZmgsIGYpOwogCWlmIChyZXQgPCAwKQpAQCAtNzI3LDEyICs4MjgsNDkgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JZmgtPmZtdCAgICAgICAgICAgPSAmZm9ybWF0OworCWZoLT5mbXQgICAgICAgICAgID0gZ2V0X2Zvcm1hdChmKTsKIAlmaC0+d2lkdGggICAgICAgICA9IGYtPmZtdC5waXgud2lkdGg7CiAJZmgtPmhlaWdodCAgICAgICAgPSBmLT5mbXQucGl4LmhlaWdodDsKIAlmaC0+dmJfdmlkcS5maWVsZCA9IGYtPmZtdC5waXguZmllbGQ7CiAJZmgtPnR5cGUgICAgICAgICAgPSBmLT50eXBlOwogCisJLyogcHJlY2FsY3VsYXRlIGNvbG9yIGJhciB2YWx1ZXMgdG8gc3BlZWQgdXAgcmVuZGVyaW5nICovCisJZm9yIChrID0gMDsgayA8IDg7IGsrKykgeworCQlyID0gYmFyc1trXVswXTsKKwkJZyA9IGJhcnNba11bMV07CisJCWIgPSBiYXJzW2tdWzJdOworCQlpc195dXYgPSAwOworCisJCXN3aXRjaCAoZmgtPmZtdC0+Zm91cmNjKSB7CisJCWNhc2UgVjRMMl9QSVhfRk1UX1lVWVY6CisJCWNhc2UgVjRMMl9QSVhfRk1UX1VZVlk6CisJCQlpc195dXYgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9QSVhfRk1UX1JHQjU2NToKKwkJY2FzZSBWNEwyX1BJWF9GTVRfUkdCNTY1WDoKKwkJCXIgPj49IDM7CisJCQlnID4+PSAyOworCQkJYiA+Pj0gMzsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfUElYX0ZNVF9SR0I1NTU6CisJCWNhc2UgVjRMMl9QSVhfRk1UX1JHQjU1NVg6CisJCQlyID4+PSAzOworCQkJZyA+Pj0gMzsKKwkJCWIgPj49IDM7CisJCQlicmVhazsKKwkJfQorCisJCWlmIChpc195dXYpIHsKKwkJCWZoLT5iYXJzW2tdWzBdID0gVE9fWShyLCBnLCBiKTsJLyogTHVtYSAqLworCQkJZmgtPmJhcnNba11bMV0gPSBUT19VKHIsIGcsIGIpOwkvKiBDYiAqLworCQkJZmgtPmJhcnNba11bMl0gPSBUT19WKHIsIGcsIGIpOwkvKiBDciAqLworCQl9IGVsc2UgeworCQkJZmgtPmJhcnNba11bMF0gPSByOworCQkJZmgtPmJhcnNba11bMV0gPSBnOworCQkJZmgtPmJhcnNba11bMl0gPSBiOworCQl9CisJfQorCiAJcmV0ID0gMDsKIG91dDoKIAltdXRleF91bmxvY2soJnEtPnZiX2xvY2spOwpAQCAtODg2LDggKzEwMjQsNiBAQAogCUZpbGUgb3BlcmF0aW9ucyBmb3IgdGhlIGRldmljZQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2RlZmluZSBsaW5lX2J1Zl9zaXplKG5vcm0pIChub3JtX21heHcobm9ybSkqKGZvcm1hdC5kZXB0aCs3KS84KQotCiBzdGF0aWMgaW50IHZpdmlfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlpbnQgbWlub3IgPSBpbWlub3IoaW5vZGUpOwpAQCAtOTM2LDcgKzEwNzIsNyBAQAogCWZoLT5kZXYgICAgICA9IGRldjsKIAogCWZoLT50eXBlICAgICA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKLQlmaC0+Zm10ICAgICAgPSAmZm9ybWF0OworCWZoLT5mbXQgICAgICA9ICZmb3JtYXRzWzBdOwogCWZoLT53aWR0aCAgICA9IDY0MDsKIAlmaC0+aGVpZ2h0ICAgPSA0ODA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby92cHgzMjIwLmMKaW5kZXggNDViZTllYy4uNjdhYTBkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby92cHgzMjIwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92cHgzMjIwLmMKQEAgLTIyLDMyICsyMiwyMSBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotCi0jaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KLQogI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgotCi0jZGVmaW5lIEkyQ19OQU1FKHgpICh4KS0+bmFtZQotCi0jaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KICNpbmNsdWRlIDxtZWRpYS92NGwyLWNvbW1vbi5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgogI2luY2x1ZGUgPGxpbnV4L3ZpZGVvX2RlY29kZXIuaD4KIAotI2RlZmluZSBJMkNfVlBYMzIyMCAgICAgICAgMHg4NgotI2RlZmluZSBWUFgzMjIwX0RFQlVHCUtFUk5fREVCVUcgInZweDMyMjA6ICIKK01PRFVMRV9ERVNDUklQVElPTigidnB4MzIyMGEvdnB4MzIxNmIvdnB4MzIxNGMgdmlkZW8gZGVjb2RlciBkcml2ZXIiKTsKK01PRFVMRV9BVVRIT1IoIkxhdXJlbnQgUGluY2hhcnQiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogc3RhdGljIGludCBkZWJ1ZzsKIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwKTsKIE1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJEZWJ1ZyBsZXZlbCAoMC0xKSIpOwogCi0jZGVmaW5lIGRwcmludGsobnVtLCBmb3JtYXQsIGFyZ3MuLi4pIFwKLQlkbyB7IFwKLQkJaWYgKGRlYnVnID49IG51bSkgXAotCQkJcHJpbnRrKGZvcm1hdCwgIyNhcmdzKTsgXAotCX0gd2hpbGUgKDApCi0KICNkZWZpbmUgVlBYX1RJTUVPVVRfQ09VTlQgIDEwCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC02NywxMCArNTYsOCBAQAogc3RhdGljIGNoYXIgKmlucHV0c1tdID0geyAiaW50ZXJuYWwiLCAiY29tcG9zaXRlIiwgInN2aWRlbyIgfTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLXN0YXRpYyBpbmxpbmUgaW50Ci12cHgzMjIwX3dyaXRlIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgcmVnLAotCSAgICAgICB1OCAgICAgICAgICAgICAgICAgdmFsdWUpCisKK3N0YXRpYyBpbmxpbmUgaW50IHZweDMyMjBfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgdnB4MzIyMCAqZGVjb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCkBAIC03OCwxNSArNjUsMTIgQEAKIAlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZywgdmFsdWUpOwogfQogCi1zdGF0aWMgaW5saW5lIGludAotdnB4MzIyMF9yZWFkIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCSAgICAgIHU4ICAgICAgICAgICAgICAgICByZWcpCitzdGF0aWMgaW5saW5lIGludCB2cHgzMjIwX3JlYWQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnKQogewogCXJldHVybiBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCByZWcpOwogfQogCi1zdGF0aWMgaW50Ci12cHgzMjIwX2ZwX3N0YXR1cyAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgdnB4MzIyMF9mcF9zdGF0dXMoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAl1bnNpZ25lZCBjaGFyIHN0YXR1czsKIAl1bnNpZ25lZCBpbnQgaTsKQEAgLTEwNiwxNCArOTAsMTEgQEAKIAlyZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLXZweDMyMjBfZnBfd3JpdGUgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCi0JCSAgdTggICAgICAgICAgICAgICAgIGZwYWRkciwKLQkJICB1MTYgICAgICAgICAgICAgICAgZGF0YSkKK3N0YXRpYyBpbnQgdnB4MzIyMF9mcF93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBmcGFkZHIsIHUxNiBkYXRhKQogewogCS8qIFdyaXRlIHRoZSAxNi1iaXQgYWRkcmVzcyB0byB0aGUgRlBXUiByZWdpc3RlciAqLwogCWlmIChpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKGNsaWVudCwgMHgyNywgc3dhYjE2KGZwYWRkcikpID09IC0xKSB7Ci0JCWRwcmludGsoMSwgVlBYMzIyMF9ERUJVRyAiJXM6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICIlczogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTEyMiwyMiArMTAzLDIwIEBACiAKIAkvKiBXcml0ZSB0aGUgMTYtYml0IGRhdGEgdG8gdGhlIEZQREFUIHJlZ2lzdGVyICovCiAJaWYgKGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoY2xpZW50LCAweDI4LCBzd2FiMTYoZGF0YSkpID09IC0xKSB7Ci0JCWRwcmludGsoMSwgVlBYMzIyMF9ERUJVRyAiJXM6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICIlczogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAtMTsKIAl9CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHUxNgotdnB4MzIyMF9mcF9yZWFkIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgdTE2ICAgICAgICAgICAgICAgIGZwYWRkcikKK3N0YXRpYyB1MTYgdnB4MzIyMF9mcF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHUxNiBmcGFkZHIpCiB7CiAJczE2IGRhdGE7CiAKIAkvKiBXcml0ZSB0aGUgMTYtYml0IGFkZHJlc3MgdG8gdGhlIEZQUkQgcmVnaXN0ZXIgKi8KIAlpZiAoaTJjX3NtYnVzX3dyaXRlX3dvcmRfZGF0YShjbGllbnQsIDB4MjYsIHN3YWIxNihmcGFkZHIpKSA9PSAtMSkgewotCQlkcHJpbnRrKDEsIFZQWDMyMjBfREVCVUcgIiVzOiBmYWlsZWRcbiIsIF9fZnVuY19fKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAiJXM6IGZhaWxlZFxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC0xNDcsMjUgKzEyNiwyMiBAQAogCS8qIFJlYWQgdGhlIDE2LWJpdCBkYXRhIGZyb20gdGhlIEZQREFUIHJlZ2lzdGVyICovCiAJZGF0YSA9IGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIDB4MjgpOwogCWlmIChkYXRhID09IC0xKSB7Ci0JCWRwcmludGsoMSwgVlBYMzIyMF9ERUJVRyAiJXM6IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICIlczogZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAtMTsKIAl9CiAKIAlyZXR1cm4gc3dhYjE2KGRhdGEpOwogfQogCi1zdGF0aWMgaW50Ci12cHgzMjIwX3dyaXRlX2Jsb2NrIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgICAgIGNvbnN0IHU4ICAgICAgICAgICpkYXRhLAotCQkgICAgIHVuc2lnbmVkIGludCAgICAgICBsZW4pCitzdGF0aWMgaW50IHZweDMyMjBfd3JpdGVfYmxvY2soc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJdTggcmVnOwogCWludCByZXQgPSAtMTsKIAogCXdoaWxlIChsZW4gPj0gMikgewogCQlyZWcgPSAqZGF0YSsrOwotCQlpZiAoKHJldCA9Ci0JCSAgICAgdnB4MzIyMF93cml0ZShjbGllbnQsIHJlZywgKmRhdGErKykpIDwgMCkKKwkJcmV0ID0gdnB4MzIyMF93cml0ZShjbGllbnQsIHJlZywgKmRhdGErKyk7CisJCWlmIChyZXQgPCAwKQogCQkJYnJlYWs7CiAJCWxlbiAtPSAyOwogCX0KQEAgLTE3MywxMCArMTQ5LDggQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50Ci12cHgzMjIwX3dyaXRlX2ZwX2Jsb2NrIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkJY29uc3QgdTE2ICAgICAgICAgKmRhdGEsCi0JCQl1bnNpZ25lZCBpbnQgICAgICAgbGVuKQorc3RhdGljIGludCB2cHgzMjIwX3dyaXRlX2ZwX2Jsb2NrKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCWNvbnN0IHUxNiAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIHsKIAl1OCByZWc7CiAJaW50IHJldCA9IDA7CkBAIC0yODUsMjUgKzI1OSwyMCBAQAogCTB4NGIsIDB4Mjk4LAkJLyogUExMIGdhaW4gKi8KIH07CiAKLXN0YXRpYyB2b2lkCi12cHgzMjIwX2R1bXBfaTJjIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIHZvaWQgdnB4MzIyMF9kdW1wX2kyYyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCWludCBsZW4gPSBzaXplb2YoaW5pdF9jb21tb24pOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEgPSBpbml0X2NvbW1vbjsKIAogCXdoaWxlIChsZW4gPiAxKSB7Ci0JCWRwcmludGsoMSwKLQkJCUtFUk5fREVCVUcgInZweDMyMTZiIGkyYyByZWcgMHglMDJ4IGRhdGEgMHglMDJ4XG4iLAorCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpMmMgcmVnIDB4JTAyeCBkYXRhIDB4JTAyeFxuIiwKIAkJCSpkYXRhLCB2cHgzMjIwX3JlYWQoY2xpZW50LCAqZGF0YSkpOwogCQlkYXRhICs9IDI7CiAJCWxlbiAtPSAyOwogCX0KIH0KIAotc3RhdGljIGludAotdnB4MzIyMF9jb21tYW5kIChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAotCQkgdW5zaWduZWQgaW50ICAgICAgIGNtZCwKLQkJIHZvaWQgICAgICAgICAgICAgICphcmcpCitzdGF0aWMgaW50IHZweDMyMjBfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjbWQsIHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgdnB4MzIyMCAqZGVjb2RlciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCkBAIC0zMTUsNyArMjg0LDYgQEAKIAkJdnB4MzIyMF93cml0ZV9mcF9ibG9jayhjbGllbnQsIGluaXRfZnAsCiAJCQkJICAgICAgIHNpemVvZihpbml0X2ZwKSA+PiAxKTsKIAkJc3dpdGNoIChkZWNvZGVyLT5ub3JtKSB7Ci0KIAkJY2FzZSBWSURFT19NT0RFX05UU0M6CiAJCQl2cHgzMjIwX3dyaXRlX2ZwX2Jsb2NrKGNsaWVudCwgaW5pdF9udHNjLAogCQkJCQkgICAgICAgc2l6ZW9mKGluaXRfbnRzYykgPj4gMSk7CkBAIC0zMzQsMjEgKzMwMiwyMCBAQAogCQkJCQkgICAgICAgc2l6ZW9mKGluaXRfcGFsKSA+PiAxKTsKIAkJCWJyZWFrOwogCQl9Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfRFVNUDoKIAl7CiAJCXZweDMyMjBfZHVtcF9pMmMoY2xpZW50KTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9HRVRfQ0FQQUJJTElUSUVTOgogCXsKIAkJc3RydWN0IHZpZGVvX2RlY29kZXJfY2FwYWJpbGl0eSAqY2FwID0gYXJnOwogCi0JCWRwcmludGsoMSwgS0VSTl9ERUJVRyAiJXM6IERFQ09ERVJfR0VUX0NBUEFCSUxJVElFU1xuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJERUNPREVSX0dFVF9DQVBBQklMSVRJRVNcbiIpOwogCiAJCWNhcC0+ZmxhZ3MgPSBWSURFT19ERUNPREVSX1BBTCB8CiAJCQkgICAgIFZJREVPX0RFQ09ERVJfTlRTQyB8CkBAIC0zNTcsMjAgKzMyNCwxOCBAQAogCQkJICAgICBWSURFT19ERUNPREVSX0NDSVI7CiAJCWNhcC0+aW5wdXRzID0gMzsKIAkJY2FwLT5vdXRwdXRzID0gMTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9HRVRfU1RBVFVTOgogCXsKIAkJaW50IHJlcyA9IDAsIHN0YXR1czsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IERFQ09ERVJfR0VUX1NUQVRVU1xuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJERUNPREVSX0dFVF9TVEFUVVNcbiIpOwogCiAJCXN0YXR1cyA9IHZweDMyMjBfZnBfcmVhZChjbGllbnQsIDB4MGYzKTsKIAotCQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHN0YXR1czogMHglMDR4XG4iLCBJMkNfTkFNRShjbGllbnQpLAotCQkJc3RhdHVzKTsKKwkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAic3RhdHVzOiAweCUwNHhcbiIsIHN0YXR1cyk7CiAKIAkJaWYgKHN0YXR1cyA8IDApCiAJCQlyZXR1cm4gc3RhdHVzOwpAQCAtMzc5LDcgKzM0NCw2IEBACiAJCQlyZXMgfD0gREVDT0RFUl9TVEFUVVNfR09PRCB8IERFQ09ERVJfU1RBVFVTX0NPTE9SOwogCiAJCQlzd2l0Y2ggKHN0YXR1cyAmIDB4MTgpIHsKLQogCQkJY2FzZSAweDAwOgogCQkJY2FzZSAweDEwOgogCQkJY2FzZSAweDE0OgpAQCAtNDAwLDggKzM2NCw4IEBACiAJCX0KIAogCQkqKGludCAqKSBhcmcgPSByZXM7Ci0JfQogCQlicmVhazsKKwl9CiAKIAljYXNlIERFQ09ERVJfU0VUX05PUk06CiAJewpAQCAtNDEzLDUwICszNzcsNDMgQEAKIAkJICAgY2hvb3NlbiB2aWRlbyBub3JtICovCiAJCXRlbXBfaW5wdXQgPSB2cHgzMjIwX2ZwX3JlYWQoY2xpZW50LCAweGYyKTsKIAotCQlkcHJpbnRrKDEsIEtFUk5fREVCVUcgIiVzOiBERUNPREVSX1NFVF9OT1JNICVkXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgKmlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJERUNPREVSX1NFVF9OT1JNICVkXG4iLCAqaWFyZyk7CiAJCXN3aXRjaCAoKmlhcmcpIHsKLQogCQljYXNlIFZJREVPX01PREVfTlRTQzoKIAkJCXZweDMyMjBfd3JpdGVfZnBfYmxvY2soY2xpZW50LCBpbml0X250c2MsCiAJCQkJCSAgICAgICBzaXplb2YoaW5pdF9udHNjKSA+PiAxKTsKLQkJCWRwcmludGsoMSwgS0VSTl9JTkZPICIlczogbm9ybSBzd2l0Y2hlZCB0byBOVFNDXG4iLAotCQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAibm9ybSBzd2l0Y2hlZCB0byBOVFNDXG4iKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVklERU9fTU9ERV9QQUw6CiAJCQl2cHgzMjIwX3dyaXRlX2ZwX2Jsb2NrKGNsaWVudCwgaW5pdF9wYWwsCiAJCQkJCSAgICAgICBzaXplb2YoaW5pdF9wYWwpID4+IDEpOwotCQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBub3JtIHN3aXRjaGVkIHRvIFBBTFxuIiwKLQkJCQlJMkNfTkFNRShjbGllbnQpKTsKKwkJCXY0bF9kYmcoMSwgZGVidWcsIGNsaWVudCwgIm5vcm0gc3dpdGNoZWQgdG8gUEFMXG4iKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVklERU9fTU9ERV9TRUNBTToKIAkJCXZweDMyMjBfd3JpdGVfZnBfYmxvY2soY2xpZW50LCBpbml0X3NlY2FtLAogCQkJCQkgICAgICAgc2l6ZW9mKGluaXRfc2VjYW0pID4+IDEpOwotCQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBub3JtIHN3aXRjaGVkIHRvIFNFQ0FNXG4iLAotCQkJCUkyQ19OQU1FKGNsaWVudCkpOworCQkJdjRsX2RiZygxLCBkZWJ1ZywgY2xpZW50LCAibm9ybSBzd2l0Y2hlZCB0byBTRUNBTVxuIik7CiAJCQlicmVhazsKIAogCQljYXNlIFZJREVPX01PREVfQVVUTzoKIAkJCS8qIEZJWE1FIFRoaXMgaXMgb25seSBwcmVsaW1pbmFyeSBzdXBwb3J0ICovCiAJCQlkYXRhID0gdnB4MzIyMF9mcF9yZWFkKGNsaWVudCwgMHhmMikgJiAweDIwOwogCQkJdnB4MzIyMF9mcF93cml0ZShjbGllbnQsIDB4ZjIsIDB4MDBjMCB8IGRhdGEpOwotCQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBub3JtIHN3aXRjaGVkIHRvIEF1dG9cbiIsCi0JCQkJSTJDX05BTUUoY2xpZW50KSk7CisJCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJub3JtIHN3aXRjaGVkIHRvIEFVVE9cbiIpOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwotCiAJCX0KIAkJZGVjb2Rlci0+bm9ybSA9ICppYXJnOwogCiAJCS8qIEFuZCBoZXJlIHdlIHNldCB0aGUgYmFja2VkIHVwIHZpZGVvIGlucHV0IGFnYWluICovCiAJCXZweDMyMjBfZnBfd3JpdGUoY2xpZW50LCAweGYyLCB0ZW1wX2lucHV0IHwgMHgwMDEwKTsKIAkJdWRlbGF5KDEwKTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfSU5QVVQ6CiAJewpAQCAtNDc1LDggKzQzMiw3IEBACiAJCWlmICgqaWFyZyA8IDAgfHwgKmlhcmcgPiAyKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJZHByaW50aygxLCBLRVJOX0lORk8gIiVzOiBpbnB1dCBzd2l0Y2hlZCB0byAlc1xuIiwKLQkJCUkyQ19OQU1FKGNsaWVudCksIGlucHV0c1sqaWFyZ10pOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJpbnB1dCBzd2l0Y2hlZCB0byAlc1xuIiwgaW5wdXRzWyppYXJnXSk7CiAKIAkJdnB4MzIyMF93cml0ZShjbGllbnQsIDB4MzMsIGlucHV0WyppYXJnXVswXSk7CiAKQEAgLTQ4OCw4ICs0NDQsOCBAQAogCQkJCSBkYXRhIHwgKGlucHV0WyppYXJnXVsxXSA8PCA1KSB8IDB4MDAxMCk7CiAKIAkJdWRlbGF5KDEwKTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfT1VUUFVUOgogCXsKQEAgLTQ5OSwxOSArNDU1LDE4IEBACiAJCWlmICgqaWFyZyAhPSAwKSB7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQotCX0KIAkJYnJlYWs7CisJfQogCiAJY2FzZSBERUNPREVSX0VOQUJMRV9PVVRQVVQ6CiAJewogCQlpbnQgKmlhcmcgPSBhcmc7CiAKLQkJZHByaW50aygxLCBLRVJOX0RFQlVHICIlczogREVDT0RFUl9FTkFCTEVfT1VUUFVUICVkXG4iLAotCQkJSTJDX05BTUUoY2xpZW50KSwgKmlhcmcpOworCQl2NGxfZGJnKDEsIGRlYnVnLCBjbGllbnQsICJERUNPREVSX0VOQUJMRV9PVVRQVVQgJWRcbiIsICppYXJnKTsKIAogCQl2cHgzMjIwX3dyaXRlKGNsaWVudCwgMHhmMiwgKCppYXJnID8gMHgxYiA6IDB4MDApKTsKLQl9CiAJCWJyZWFrOworCX0KIAogCWNhc2UgREVDT0RFUl9TRVRfUElDVFVSRToKIAl7CkBAIC01NDIsOCArNDk3LDggQEAKIAkJCXZweDMyMjBfZnBfd3JpdGUoY2xpZW50LCAweDFjLAogCQkJCQkgKChkZWNvZGVyLT5odWUgLSAzMjc2OCkgPj4gNikgJiAweEZGRik7CiAJCX0KLQl9CiAJCWJyZWFrOworCX0KIAogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNTUyLDggKzUwNyw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXZweDMyMjBfaW5pdF9jbGllbnQgKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgaW50IHZweDMyMjBfaW5pdF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAl2cHgzMjIwX3dyaXRlX2Jsb2NrKGNsaWVudCwgaW5pdF9jb21tb24sIHNpemVvZihpbml0X2NvbW1vbikpOwogCXZweDMyMjBfd3JpdGVfZnBfYmxvY2soY2xpZW50LCBpbml0X2ZwLCBzaXplb2YoaW5pdF9mcCkgPj4gMSk7CkBAIC01NjcsMTE1ICs1MjEsMjYgQEAKICAqIENsaWVudCBtYW5hZ2VtZW50IGNvZGUKICAqLwogCi0vKgotICogR2VuZXJpYyBpMmMgcHJvYmUKLSAqIGNvbmNlcm5pbmcgdGhlIGFkZHJlc3NlczogaTJjIHdhbnRzIDcgYml0ICh3aXRob3V0IHRoZSByL3cgYml0KSwgc28gJz4+MScKLSAqLwotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9Ci0gICAgeyBJMkNfVlBYMzIyMCA+PiAxLCAoSTJDX1ZQWDMyMjAgPj4gMSkgKyA0LAotCUkyQ19DTElFTlRfRU5ECi19Oworc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9pMmNbXSA9IHsgMHg4NiA+PiAxLCAweDhlID4+IDEsIEkyQ19DTElFTlRfRU5EIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpZ25vcmUgPSBJMkNfQ0xJRU5UX0VORDsKK0kyQ19DTElFTlRfSU5TTU9EOwogCi1zdGF0aWMgc3RydWN0IGkyY19jbGllbnRfYWRkcmVzc19kYXRhIGFkZHJfZGF0YSA9IHsKLQkubm9ybWFsX2kyYwkJPSBub3JtYWxfaTJjLAotCS5wcm9iZQkJCT0gJmlnbm9yZSwKLQkuaWdub3JlCQkJPSAmaWdub3JlLAotfTsKLQotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHZweDMyMjBfaTJjX2RyaXZlcjsKLQotc3RhdGljIGludAotdnB4MzIyMF9kZXRhY2hfY2xpZW50IChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIGludCB2cHgzMjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCiB7Ci0Jc3RydWN0IHZweDMyMjAgKmRlY29kZXIgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKLQlpZiAoZXJyKSB7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0Ja2ZyZWUoZGVjb2Rlcik7Ci0Ja2ZyZWUoY2xpZW50KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci12cHgzMjIwX2RldGVjdF9jbGllbnQgKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAgYWRkcmVzcywKLQkJICAgICAgIGludCAgICAgICAgICAgICAgICAga2luZCkKLXsKLQlpbnQgZXJyOwotCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IHZweDMyMjAgKmRlY29kZXI7Ci0KLQlkcHJpbnRrKDEsIFZQWDMyMjBfREVCVUcgIiVzXG4iLCBfX2Z1bmNfXyk7CisJY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7CisJdTggdmVyOworCXUxNiBwbjsKIAogCS8qIENoZWNrIGlmIHRoZSBhZGFwdGVyIHN1cHBvcnRzIHRoZSBuZWVkZWQgZmVhdHVyZXMgKi8KLQlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5Ci0JICAgIChhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfCBJMkNfRlVOQ19TTUJVU19XT1JEX0RBVEEpKQotCQlyZXR1cm4gMDsKLQotCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGNsaWVudCA9PSBOVUxMKSB7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCWNsaWVudC0+YWRkciA9IGFkZHJlc3M7Ci0JY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKLQljbGllbnQtPmRyaXZlciA9ICZ2cHgzMjIwX2kyY19kcml2ZXI7Ci0KLQkvKiBDaGVjayBmb3IgbWFudWZhY3R1cmUgSUQgYW5kIHBhcnQgbnVtYmVyICovCi0JaWYgKGtpbmQgPCAwKSB7Ci0JCXU4IGlkOwotCQl1MTYgcG47Ci0KLQkJaWQgPSB2cHgzMjIwX3JlYWQoY2xpZW50LCAweDAwKTsKLQkJaWYgKGlkICE9IDB4ZWMpIHsKLQkJCWRwcmludGsoMSwKLQkJCQlLRVJOX0lORk8KLQkJCQkidnB4MzIyMF9hdHRhY2g6IFdyb25nIG1hbnVmYWN0dXJlciBJRCAoMHglMDJ4KVxuIiwKLQkJCQlpZCk7Ci0JCQlrZnJlZShjbGllbnQpOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQotCQlwbiA9ICh2cHgzMjIwX3JlYWQoY2xpZW50LCAweDAyKSA8PCA4KSArCi0JCSAgICB2cHgzMjIwX3JlYWQoY2xpZW50LCAweDAxKTsKLQkJc3dpdGNoIChwbikgewotCQljYXNlIDB4NDY4MDoKLQkJCXN0cmxjcHkoSTJDX05BTUUoY2xpZW50KSwgInZweDMyMjBhIiwKLQkJCQlzaXplb2YoSTJDX05BTUUoY2xpZW50KSkpOwotCQkJYnJlYWs7Ci0JCWNhc2UgMHg0MjYwOgotCQkJc3RybGNweShJMkNfTkFNRShjbGllbnQpLCAidnB4MzIxNmIiLAotCQkJCXNpemVvZihJMkNfTkFNRShjbGllbnQpKSk7Ci0JCQlicmVhazsKLQkJY2FzZSAweDQyODA6Ci0JCQlzdHJsY3B5KEkyQ19OQU1FKGNsaWVudCksICJ2cHgzMjE0YyIsCi0JCQkJc2l6ZW9mKEkyQ19OQU1FKGNsaWVudCkpKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZHByaW50aygxLAotCQkJCUtFUk5fSU5GTwotCQkJCSIlczogV3JvbmcgcGFydCBudW1iZXIgKDB4JTA0eClcbiIsCi0JCQkJX19mdW5jX18sIHBuKTsKLQkJCWtmcmVlKGNsaWVudCk7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCX0gZWxzZSB7Ci0JCXN0cmxjcHkoSTJDX05BTUUoY2xpZW50KSwgImZvcmNlZCB2cHgzMnh4IiwKLQkJCXNpemVvZihJMkNfTkFNRShjbGllbnQpKSk7Ci0JfQorCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAorCQlJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfCBJMkNfRlVOQ19TTUJVU19XT1JEX0RBVEEpKQorCQlyZXR1cm4gLUVOT0RFVjsKIAogCWRlY29kZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdnB4MzIyMCksIEdGUF9LRVJORUwpOwotCWlmIChkZWNvZGVyID09IE5VTEwpIHsKLQkJa2ZyZWUoY2xpZW50KTsKKwlpZiAoZGVjb2RlciA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAJZGVjb2Rlci0+bm9ybSA9IFZJREVPX01PREVfUEFMOwogCWRlY29kZXItPmlucHV0ID0gMDsKIAlkZWNvZGVyLT5lbmFibGUgPSAxOwpAQCAtNjg1LDYzICs1NTAsNTIgQEAKIAlkZWNvZGVyLT5zYXQgPSAzMjc2ODsKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkZWNvZGVyKTsKIAotCWVyciA9IGkyY19hdHRhY2hfY2xpZW50KGNsaWVudCk7Ci0JaWYgKGVycikgewotCQlrZnJlZShjbGllbnQpOwotCQlrZnJlZShkZWNvZGVyKTsKLQkJcmV0dXJuIGVycjsKKwl2ZXIgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCAweDAwKTsKKwlwbiA9IChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCAweDAyKSA8PCA4KSArCisJCWkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIDB4MDEpOworCWlmICh2ZXIgPT0gMHhlYykgeworCQlzd2l0Y2ggKHBuKSB7CisJCWNhc2UgMHg0NjgwOgorCQkJbmFtZSA9ICJ2cHgzMjIwYSI7CisJCQlicmVhazsKKwkJY2FzZSAweDQyNjA6CisJCQluYW1lID0gInZweDMyMTZiIjsKKwkJCWJyZWFrOworCQljYXNlIDB4NDI4MDoKKwkJCW5hbWUgPSAidnB4MzIxNGMiOworCQkJYnJlYWs7CisJCX0KIAl9Ci0KLQlkcHJpbnRrKDEsIEtFUk5fSU5GTyAiJXM6IHZweDMyeHggY2xpZW50IGZvdW5kIGF0IGFkZHJlc3MgMHglMDJ4XG4iLAotCQlJMkNfTkFNRShjbGllbnQpLCBjbGllbnQtPmFkZHIgPDwgMSk7CisJaWYgKG5hbWUpCisJCXY0bF9pbmZvKGNsaWVudCwgIiVzIGZvdW5kIEAgMHgleCAoJXMpXG4iLCBuYW1lLAorCQkJY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CisJZWxzZQorCQl2NGxfaW5mbyhjbGllbnQsICJjaGlwICglMDJ4OiUwNHgpIGZvdW5kIEAgMHgleCAoJXMpXG4iLAorCQkJdmVyLCBwbiwgY2xpZW50LT5hZGRyIDw8IDEsIGNsaWVudC0+YWRhcHRlci0+bmFtZSk7CiAKIAl2cHgzMjIwX2luaXRfY2xpZW50KGNsaWVudCk7Ci0KIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotdnB4MzIyMF9hdHRhY2hfYWRhcHRlciAoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQorc3RhdGljIGludCB2cHgzMjIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewotCWludCByZXQ7Ci0KLQlyZXQgPSBpMmNfcHJvYmUoYWRhcHRlciwgJmFkZHJfZGF0YSwgJnZweDMyMjBfZGV0ZWN0X2NsaWVudCk7Ci0JZHByaW50aygxLCBWUFgzMjIwX0RFQlVHICIlczogaTJjX3Byb2JlIHJldHVybmVkICVkXG4iLAotCQlfX2Z1bmNfXywgcmV0KTsKLQlyZXR1cm4gcmV0OworCWtmcmVlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKKwlyZXR1cm4gMDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIERyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBjb2RlCi0gKi8KLQotc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHZweDMyMjBfaTJjX2RyaXZlciA9IHsKLQkuZHJpdmVyID0gewotCQkubmFtZSA9ICJ2cHgzMjIwIiwKLQl9LAotCi0JLmlkID0gSTJDX0RSSVZFUklEX1ZQWDMyMjAsCi0KLQkuYXR0YWNoX2FkYXB0ZXIgPSB2cHgzMjIwX2F0dGFjaF9hZGFwdGVyLAotCS5kZXRhY2hfY2xpZW50ID0gdnB4MzIyMF9kZXRhY2hfY2xpZW50LAotCS5jb21tYW5kID0gdnB4MzIyMF9jb21tYW5kLAorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHZweDMyMjBfaWRbXSA9IHsKKwl7ICJ2cHgzMjIwYSIsIDAgfSwKKwl7ICJ2cHgzMjE2YiIsIDAgfSwKKwl7ICJ2cHgzMjE0YyIsIDAgfSwKKwl7IH0KIH07CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgdnB4MzIyMF9pZCk7CiAKLXN0YXRpYyBpbnQgX19pbml0Ci12cHgzMjIwX2luaXQgKHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ2cHgzMjIwX2kyY19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXZweDMyMjBfY2xlYW51cCAodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmdnB4MzIyMF9pMmNfZHJpdmVyKTsKLX0KLQotbW9kdWxlX2luaXQodnB4MzIyMF9pbml0KTsKLW1vZHVsZV9leGl0KHZweDMyMjBfY2xlYW51cCk7Ci0KLU1PRFVMRV9ERVNDUklQVElPTigidnB4MzIyMGEvdnB4MzIxNmIvdnB4MzIxNGMgdmlkZW8gZGVjb2RlciBkcml2ZXIiKTsKLU1PRFVMRV9BVVRIT1IoIkxhdXJlbnQgUGluY2hhcnQiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK3N0YXRpYyBzdHJ1Y3QgdjRsMl9pMmNfZHJpdmVyX2RhdGEgdjRsMl9pMmNfZGF0YSA9IHsKKwkubmFtZSA9ICJ2cHgzMjIwIiwKKwkuZHJpdmVyaWQgPSBJMkNfRFJJVkVSSURfVlBYMzIyMCwKKwkuY29tbWFuZCA9IHZweDMyMjBfY29tbWFuZCwKKwkucHJvYmUgPSB2cHgzMjIwX3Byb2JlLAorCS5yZW1vdmUgPSB2cHgzMjIwX3JlbW92ZSwKKwkuaWRfdGFibGUgPSB2cHgzMjIwX2lkLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fY2FyZC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9jYXJkLmMKaW5kZXggMzI4MmJlNy4uZmE1ZjJmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9jYXJkLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9jYXJkLmMKQEAgLTgxNyw2ICs4MTcsNyBAQAogCW1lbWNweSgmenItPmkyY19hbGdvLCAmem9yYW5faTJjX2JpdF9kYXRhX3RlbXBsYXRlLAogCSAgICAgICBzaXplb2Yoc3RydWN0IGkyY19hbGdvX2JpdF9kYXRhKSk7CiAJenItPmkyY19hbGdvLmRhdGEgPSB6cjsKKwl6ci0+aTJjX2FkYXB0ZXIuY2xhc3MgPSBJMkNfQ0xBU1NfVFZfQU5BTE9HOwogCXpyLT5pMmNfYWRhcHRlci5pZCA9IEkyQ19IV19CX1pSMzYwNjc7CiAJenItPmkyY19hZGFwdGVyLmNsaWVudF9yZWdpc3RlciA9IHpvcmFuX2kyY19jbGllbnRfcmVnaXN0ZXI7CiAJenItPmkyY19hZGFwdGVyLmNsaWVudF91bnJlZ2lzdGVyID0gem9yYW5faTJjX2NsaWVudF91bnJlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9kcml2ZXIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMKaW5kZXggMjVkZTc2My4uZGIxMWFiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9kcml2ZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuX2RyaXZlci5jCkBAIC0yOTk2LDcgKzI5OTYsNiBAQAogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJCWRwcmludGsoMywgInVuc3VwcG9ydGVkXG4iKTsKIAkJCWRwcmludGsoMSwKIAkJCQlLRVJOX0VSUgogCQkJCSIlczogVklESU9DX1NfRk1UIC0gdW5zdXBwb3J0ZWQgdHlwZSAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvYWxhdWRhLmMgYi9kcml2ZXJzL210ZC9uYW5kL2FsYXVkYS5jCmluZGV4IDI1NzkzN2MuLjk2MjM4MDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvYWxhdWRhLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9hbGF1ZGEuYwpAQCAtNjkxLDcgKzY5MSw3IEBACiAJYWxbMF0ucG9ydCA9IEFMQVVEQV9QT1JUX1hEOwogCWFsWzFdLnBvcnQgPSBBTEFVREFfUE9SVF9TTTsKIAotCWluZm8oImFsYXVkYSBwcm9iZWQiKTsKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJhbGF1ZGEgcHJvYmVkXG4iKTsKIAlhbGF1ZGFfY2hlY2tfbWVkaWEoYWwpOwogCWFsYXVkYV9jaGVja19tZWRpYShhbCsxKTsKIApAQCAtNzE2LDcgKzcxNiw3IEBACiAJaWYgKGFsKQogCQlrcmVmX3B1dCgmYWwtPmtyZWYsIGFsYXVkYV9kZWxldGUpOwogCi0JaW5mbygiYWxhdWRhIGdvbmUiKTsKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJhbGF1ZGEgZ29uZSIpOwogfQogCiBzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYWxhdWRhX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L0tjb25maWcgYi9kcml2ZXJzL25ldC9LY29uZmlnCmluZGV4IDFkOGFmMzMuLmFkMzAxYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvS2NvbmZpZwpAQCAtMjQxMCw3ICsyNDEwLDYgQEAKIAl0cmlzdGF0ZSAiSW50ZWwoUikgMTBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFBDSSAmJiBJTkVUCiAJc2VsZWN0IElORVRfTFJPCi0Jc2VsZWN0IElOVEVMX0lPQVRETUEKIAktLS1oZWxwLS0tCiAJICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSAxMEdiRSBQQ0kgRXhwcmVzcyBmYW1pbHkgb2YKIAkgIGFkYXB0ZXJzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ28KQEAgLTI0MjYsNiArMjQyNSwxMSBAQAogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgaXhnYmUuCiAKK2NvbmZpZyBJWEdCRV9EQ0EKKwlib29sCisJZGVmYXVsdCB5CisJZGVwZW5kcyBvbiBJWEdCRSAmJiBEQ0EgJiYgIShJWEdCRT15ICYmIERDQT1tKQorCiBjb25maWcgSVhHQgogCXRyaXN0YXRlICJJbnRlbChSKSBQUk8vMTBHYkUgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFBDSQpAQCAtMjQ2Miw3ICsyNDY2LDYgQEAKIAlzZWxlY3QgRldfTE9BREVSCiAJc2VsZWN0IENSQzMyCiAJc2VsZWN0IElORVRfTFJPCi0Jc2VsZWN0IElOVEVMX0lPQVRETUEKIAktLS1oZWxwLS0tCiAJICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNeXJpY29tIE15cmktMTBHIER1YWwgUHJvdG9jb2wgaW50ZXJmYWNlIGluCiAJICBFdGhlcm5ldCBtb2RlLiBJZiB0aGUgZWVwcm9tIG9uIHlvdXIgYm9hcmQgaXMgbm90IHJlY2VudCBlbm91Z2gsCkBAIC0yNDc0LDYgKzI0NzcsMTEgQEAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIG15cmkxMGdlLgogCitjb25maWcgTVlSSTEwR0VfRENBCisJYm9vbAorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gTVlSSTEwR0UgJiYgRENBICYmICEoTVlSSTEwR0U9eSAmJiBEQ0E9bSkKKwogY29uZmlnIE5FVFhFTl9OSUMKIAl0cmlzdGF0ZSAiTmV0WGVuIE11bHRpIHBvcnQgKDEvMTApIEdpZ2FiaXQgRXRoZXJuZXQgTklDIgogCWRlcGVuZHMgb24gUENJCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2tpbmdzdW4tc2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL2tpbmdzdW4tc2lyLmMKaW5kZXggNzNmZTgzYi4uZTE0MjlmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9raW5nc3VuLXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEva2luZ3N1bi1zaXIuYwpAQCAtNTQwLDcgKzU0MCw4IEBACiAJaWYgKHJldCAhPSAwKQogCQlnb3RvIGZyZWVfbWVtOwogCi0JaW5mbygiSXJEQTogUmVnaXN0ZXJlZCBLaW5nU3VuL0RvblNoaW5lIGRldmljZSAlcyIsIG5ldC0+bmFtZSk7CisJZGV2X2luZm8oJm5ldC0+ZGV2LCAiSXJEQTogUmVnaXN0ZXJlZCBLaW5nU3VuL0RvblNoaW5lIGRldmljZSAlc1xuIiwKKwkJIG5ldC0+bmFtZSk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGtpbmdzdW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2tzOTU5LXNpci5jIGIvZHJpdmVycy9uZXQvaXJkYS9rczk1OS1zaXIuYwppbmRleCA4YzI1N2E1Li4yNDgyZDYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2tzOTU5LXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEva3M5NTktc2lyLmMKQEAgLTgwMSw3ICs4MDEsOCBAQAogCWlmIChyZXQgIT0gMCkKIAkJZ290byBmcmVlX21lbTsKIAotCWluZm8oIklyREE6IFJlZ2lzdGVyZWQgS2luZ1N1biBLUy05NTkgZGV2aWNlICVzIiwgbmV0LT5uYW1lKTsKKwlkZXZfaW5mbygmbmV0LT5kZXYsICJJckRBOiBSZWdpc3RlcmVkIEtpbmdTdW4gS1MtOTU5IGRldmljZSAlc1xuIiwKKwkJIG5ldC0+bmFtZSk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGtpbmdzdW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2tzZGF6emxlLXNpci5jIGIvZHJpdmVycy9uZXQvaXJkYS9rc2RhenpsZS1zaXIuYwppbmRleCBkMDFhMjg1Li4xZTBkZTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2tzZGF6emxlLXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEva3NkYXp6bGUtc2lyLmMKQEAgLTcwNSw3ICs3MDUsOCBAQAogCWlmIChyZXQgIT0gMCkKIAkJZ290byBmcmVlX21lbTsKIAotCWluZm8oIklyREE6IFJlZ2lzdGVyZWQgS2luZ1N1bi9EYXp6bGUgZGV2aWNlICVzIiwgbmV0LT5uYW1lKTsKKwlkZXZfaW5mbygmbmV0LT5kZXYsICJJckRBOiBSZWdpc3RlcmVkIEtpbmdTdW4vRGF6emxlIGRldmljZSAlc1xuIiwKKwkJIG5ldC0+bmFtZSk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGtpbmdzdW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL3N0aXI0MjAwLmMgYi9kcml2ZXJzL25ldC9pcmRhL3N0aXI0MjAwLmMKaW5kZXggMDUxOTYzNy4uMzU3NTgwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9zdGlyNDIwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvc3RpcjQyMDAuYwpAQCAtNTA2LDcgKzUwNiw3IEBACiAJCQlnb3RvIGZvdW5kOwogCX0KIAotCXdhcm4oIiVzOiBpbnZhbGlkIHNwZWVkICVkIiwgc3Rpci0+bmV0ZGV2LT5uYW1lLCBzcGVlZCk7CisJZGV2X3dhcm4oJnN0aXItPm5ldGRldi0+ZGV2LCAiaW52YWxpZCBzcGVlZCAlZFxuIiwgc3BlZWQpOwogCXJldHVybiAtRUlOVkFMOwogCiAgZm91bmQ6CkBAIC01OTgsOCArNTk4LDggQEAKIAkJZXJyID0gcmVhZF9yZWcoc3RpciwgUkVHX0ZJRk9DVEwsIHN0aXItPmZpZm9fc3RhdHVzLCAKIAkJCQkgICBGSUZPX1JFR1NfU0laRSk7CiAJCWlmICh1bmxpa2VseShlcnIgIT0gRklGT19SRUdTX1NJWkUpKSB7Ci0JCQl3YXJuKCIlczogRklGTyByZWdpc3RlciByZWFkIGVycm9yOiAlZCIsIAotCQkJICAgICBzdGlyLT5uZXRkZXYtPm5hbWUsIGVycik7CisJCQlkZXZfd2Fybigmc3Rpci0+bmV0ZGV2LT5kZXYsCisJCQkJICJGSUZPIHJlZ2lzdGVyIHJlYWQgZXJyb3I6ICVkXG4iLCBlcnIpOwogCiAJCQlyZXR1cm4gZXJyOwogCQl9CkBAIC03ODMsOCArNzgzLDkgQEAKIAogCQkJaWYgKHVubGlrZWx5KHJlY2VpdmVfc3RhcnQoc3RpcikpKSB7CiAJCQkJaWYgKG5ldF9yYXRlbGltaXQoKSkKLQkJCQkJaW5mbygiJXM6IHJlY2VpdmUgdXNiIHN1Ym1pdCBmYWlsZWQiLAotCQkJCQkgICAgIHN0aXItPm5ldGRldi0+bmFtZSk7CisJCQkJCWRldl9pbmZvKCZkZXYtPmRldiwKKwkJCQkJCSAiJXM6IHJlY2VpdmUgdXNiIHN1Ym1pdCBmYWlsZWRcbiIsCisJCQkJCQkgc3Rpci0+bmV0ZGV2LT5uYW1lKTsKIAkJCQlzdGlyLT5yZWNlaXZpbmcgPSAwOwogCQkJCW1zbGVlcCgxMCk7CiAJCQkJY29udGludWU7CkBAIC04MzYsOCArODM3LDggQEAKIAogCS8qIGluIGNhc2Ugb2YgZXJyb3IsIHRoZSBrZXJuZWwgdGhyZWFkIHdpbGwgcmVzdGFydCB1cyAqLwogCWlmIChlcnIpIHsKLQkJd2FybigiJXM6IHVzYiByZWNlaXZlIHN1Ym1pdCBlcnJvcjogJWQiLAotCQkJc3Rpci0+bmV0ZGV2LT5uYW1lLCBlcnIpOworCQlkZXZfd2Fybigmc3Rpci0+bmV0ZGV2LT5kZXYsICJ1c2IgcmVjZWl2ZSBzdWJtaXQgZXJyb3I6ICVkXG4iLAorCQkJIGVycik7CiAJCXN0aXItPnJlY2VpdmluZyA9IDA7CiAJCXdha2VfdXBfcHJvY2VzcyhzdGlyLT50aHJlYWQpOwogCX0KQEAgLTEwNzMsNyArMTA3NCw4IEBACiAJaWYgKHJldCAhPSAwKQogCQlnb3RvIGVycl9vdXQyOwogCi0JaW5mbygiSXJEQTogUmVnaXN0ZXJlZCBTaWdtYVRlbCBkZXZpY2UgJXMiLCBuZXQtPm5hbWUpOworCWRldl9pbmZvKCZpbnRmLT5kZXYsICJJckRBOiBSZWdpc3RlcmVkIFNpZ21hVGVsIGRldmljZSAlc1xuIiwKKwkJIG5ldC0+bmFtZSk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIHN0aXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZS5oIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmUuaAppbmRleCAyMTk4Yjc3Li5lMTE2ZDM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZS5oCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJpeGdiZV90eXBlLmgiCiAjaW5jbHVkZSAiaXhnYmVfY29tbW9uLmgiCiAKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogI2luY2x1ZGUgPGxpbnV4L2RjYS5oPgogI2VuZGlmCiAKQEAgLTEzNiw3ICsxMzYsNyBAQAogCQkgICAgICAqIG9mZnNldCBhc3NvY2lhdGVkIHdpdGggdGhpcyByaW5nLCB3aGljaCBpcyBkaWZmZXJlbnQKIAkJICAgICAgKiBmb3IgRENFIGFuZCBSU1MgbW9kZXMgKi8KIAotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiAJLyogY3B1IGZvciB0eCBxdWV1ZSAqLwogCWludCBjcHU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYwppbmRleCBjYTE3YWY0Li43NTQ4ZmI3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYwpAQCAtODAsNyArODAsNyBAQAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpeGdiZV9wY2lfdGJsKTsKIAotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiBzdGF0aWMgaW50IGl4Z2JlX25vdGlmeV9kY2Eoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcgZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcCk7CiBzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGRjYV9ub3RpZmllciA9IHsKQEAgLTI5Niw3ICsyOTYsNyBAQAogCXJldHVybiAodG90YWxfcGFja2V0cyA/IHRydWUgOiBmYWxzZSk7CiB9CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogc3RhdGljIHZvaWQgaXhnYmVfdXBkYXRlX3J4X2RjYShzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl4Z2JlX3JpbmcgKnJ4X3JpbmcpCiB7CkBAIC0zODMsNyArMzgzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotI2VuZGlmIC8qIENPTkZJR19EQ0Egb3IgQ09ORklHX0RDQV9NT0RVTEUgKi8KKyNlbmRpZiAvKiBDT05GSUdfSVhHQkVfRENBICovCiAvKioKICAqIGl4Z2JlX3JlY2VpdmVfc2tiIC0gU2VuZCBhIGNvbXBsZXRlZCBwYWNrZXQgdXAgdGhlIHN0YWNrCiAgKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTk0Nyw3ICs5NDcsNyBAQAogCXJfaWR4ID0gZmluZF9maXJzdF9iaXQocV92ZWN0b3ItPnR4cl9pZHgsIGFkYXB0ZXItPm51bV90eF9xdWV1ZXMpOwogCWZvciAoaSA9IDA7IGkgPCBxX3ZlY3Rvci0+dHhyX2NvdW50OyBpKyspIHsKIAkJdHhfcmluZyA9ICYoYWRhcHRlci0+dHhfcmluZ1tyX2lkeF0pOwotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiAJCWlmIChhZGFwdGVyLT5mbGFncyAmIElYR0JFX0ZMQUdfRENBX0VOQUJMRUQpCiAJCQlpeGdiZV91cGRhdGVfdHhfZGNhKGFkYXB0ZXIsIHR4X3JpbmcpOwogI2VuZGlmCkBAIC0xMDIyLDcgKzEwMjIsNyBAQAogCiAJcl9pZHggPSBmaW5kX2ZpcnN0X2JpdChxX3ZlY3Rvci0+cnhyX2lkeCwgYWRhcHRlci0+bnVtX3J4X3F1ZXVlcyk7CiAJcnhfcmluZyA9ICYoYWRhcHRlci0+cnhfcmluZ1tyX2lkeF0pOwotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiAJaWYgKGFkYXB0ZXItPmZsYWdzICYgSVhHQkVfRkxBR19EQ0FfRU5BQkxFRCkKIAkJaXhnYmVfdXBkYXRlX3J4X2RjYShhZGFwdGVyLCByeF9yaW5nKTsKICNlbmRpZgpAQCAtMTA2Niw3ICsxMDY2LDcgQEAKIAlyX2lkeCA9IGZpbmRfZmlyc3RfYml0KHFfdmVjdG9yLT5yeHJfaWR4LCBhZGFwdGVyLT5udW1fcnhfcXVldWVzKTsKIAlmb3IgKGkgPSAwOyBpIDwgcV92ZWN0b3ItPnJ4cl9jb3VudDsgaSsrKSB7CiAJCXJ4X3JpbmcgPSAmKGFkYXB0ZXItPnJ4X3Jpbmdbcl9pZHhdKTsKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogCQlpZiAoYWRhcHRlci0+ZmxhZ3MgJiBJWEdCRV9GTEFHX0RDQV9FTkFCTEVEKQogCQkJaXhnYmVfdXBkYXRlX3J4X2RjYShhZGFwdGVyLCByeF9yaW5nKTsKICNlbmRpZgpAQCAtMjE1NSw3ICsyMTU1LDcgQEAKIAogCW5ldGlmX2NhcnJpZXJfb2ZmKG5ldGRldik7CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogCWlmIChhZGFwdGVyLT5mbGFncyAmIElYR0JFX0ZMQUdfRENBX0VOQUJMRUQpIHsKIAkJYWRhcHRlci0+ZmxhZ3MgJj0gfklYR0JFX0ZMQUdfRENBX0VOQUJMRUQ7CiAJCWRjYV9yZW1vdmVfcmVxdWVzdGVyKCZhZGFwdGVyLT5wZGV2LT5kZXYpOwpAQCAtMjE2Nyw3ICsyMTY3LDcgQEAKIAlpeGdiZV9jbGVhbl9hbGxfdHhfcmluZ3MoYWRhcHRlcik7CiAJaXhnYmVfY2xlYW5fYWxsX3J4X3JpbmdzKGFkYXB0ZXIpOwogCi0jaWYgZGVmaW5lZChDT05GSUdfRENBKSB8fCBkZWZpbmVkKENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19JWEdCRV9EQ0EKIAkvKiBzaW5jZSB3ZSByZXNldCB0aGUgaGFyZHdhcmUgRENBIHNldHRpbmdzIHdlcmUgY2xlYXJlZCAqLwogCWlmIChkY2FfYWRkX3JlcXVlc3RlcigmYWRhcHRlci0+cGRldi0+ZGV2KSA9PSAwKSB7CiAJCWFkYXB0ZXItPmZsYWdzIHw9IElYR0JFX0ZMQUdfRENBX0VOQUJMRUQ7CkBAIC0yMTkzLDcgKzIxOTMsNyBAQAogCXN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyID0gcV92ZWN0b3ItPmFkYXB0ZXI7CiAJaW50IHR4X2NsZWFuZWQsIHdvcmtfZG9uZSA9IDA7CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogCWlmIChhZGFwdGVyLT5mbGFncyAmIElYR0JFX0ZMQUdfRENBX0VOQUJMRUQpIHsKIAkJaXhnYmVfdXBkYXRlX3R4X2RjYShhZGFwdGVyLCBhZGFwdGVyLT50eF9yaW5nKTsKIAkJaXhnYmVfdXBkYXRlX3J4X2RjYShhZGFwdGVyLCBhZGFwdGVyLT5yeF9yaW5nKTsKQEAgLTM5MjIsNyArMzkyMiw3IEBACiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVnaXN0ZXI7CiAKLSNpZiBkZWZpbmVkKENPTkZJR19EQ0EpIHx8IGRlZmluZWQoQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX0lYR0JFX0RDQQogCWlmIChkY2FfYWRkX3JlcXVlc3RlcigmcGRldi0+ZGV2KSA9PSAwKSB7CiAJCWFkYXB0ZXItPmZsYWdzIHw9IElYR0JFX0ZMQUdfRENBX0VOQUJMRUQ7CiAJCS8qIGFsd2F5cyB1c2UgQ0IyIG1vZGUsIGRpZmZlcmVuY2UgaXMgbWFza2VkCkBAIC0zOTcyLDcgKzM5NzIsNyBAQAogCiAJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKIAotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiAJaWYgKGFkYXB0ZXItPmZsYWdzICYgSVhHQkVfRkxBR19EQ0FfRU5BQkxFRCkgewogCQlhZGFwdGVyLT5mbGFncyAmPSB+SVhHQkVfRkxBR19EQ0FfRU5BQkxFRDsKIAkJZGNhX3JlbW92ZV9yZXF1ZXN0ZXIoJnBkZXYtPmRldik7CkBAIC00MTA1LDEwICs0MTA1LDEwIEBACiAKIAlwcmludGsoS0VSTl9JTkZPICIlczogJXNcbiIsIGl4Z2JlX2RyaXZlcl9uYW1lLCBpeGdiZV9jb3B5cmlnaHQpOwogCi0jaWYgZGVmaW5lZChDT05GSUdfRENBKSB8fCBkZWZpbmVkKENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19JWEdCRV9EQ0EKIAlkY2FfcmVnaXN0ZXJfbm90aWZ5KCZkY2Ffbm90aWZpZXIpOwotCiAjZW5kaWYKKwogCXJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoJml4Z2JlX2RyaXZlcik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQxMjMsMTMgKzQxMjMsMTMgQEAKICAqKi8KIHN0YXRpYyB2b2lkIF9fZXhpdCBpeGdiZV9leGl0X21vZHVsZSh2b2lkKQogewotI2lmIGRlZmluZWQoQ09ORklHX0RDQSkgfHwgZGVmaW5lZChDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfSVhHQkVfRENBCiAJZGNhX3VucmVnaXN0ZXJfbm90aWZ5KCZkY2Ffbm90aWZpZXIpOwogI2VuZGlmCiAJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZpeGdiZV9kcml2ZXIpOwogfQogCi0jaWYgZGVmaW5lZChDT05GSUdfRENBKSB8fCBkZWZpbmVkKENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19JWEdCRV9EQ0EKIHN0YXRpYyBpbnQgaXhnYmVfbm90aWZ5X2RjYShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnApCiB7CkBAIC00MTQwLDcgKzQxNDAsNyBAQAogCiAJcmV0dXJuIHJldF92YWwgPyBOT1RJRllfQkFEIDogTk9USUZZX0RPTkU7CiB9Ci0jZW5kaWYgLyogQ09ORklHX0RDQSBvciBDT05GSUdfRENBX01PRFVMRSAqLworI2VuZGlmIC8qIENPTkZJR19JWEdCRV9EQ0EgKi8KIAogbW9kdWxlX2V4aXQoaXhnYmVfZXhpdF9tb2R1bGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jIGIvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYwppbmRleCA2ZGNlOTAxLi5hOWFlYmFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jCisrKyBiL2RyaXZlcnMvbmV0L215cmkxMGdlL215cmkxMGdlLmMKQEAgLTE4OCw3ICsxODgsNyBAQAogCWRtYV9hZGRyX3QgZndfc3RhdHNfYnVzOwogCWludCB3YXRjaGRvZ190eF9kb25lOwogCWludCB3YXRjaGRvZ190eF9yZXE7Ci0jaWYgKGRlZmluZWQgQ09ORklHX0RDQSkgfHwgKGRlZmluZWQgQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX01ZUkkxMEdFX0RDQQogCWludCBjYWNoZWRfZGNhX3RhZzsKIAlpbnQgY3B1OwogCV9fYmUzMiBfX2lvbWVtICpkY2FfdGFnOwpAQCAtMjIwLDcgKzIyMCw3IEBACiAJaW50IG1zaV9lbmFibGVkOwogCWludCBtc2l4X2VuYWJsZWQ7CiAJc3RydWN0IG1zaXhfZW50cnkgKm1zaXhfdmVjdG9yczsKLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiAJaW50IGRjYV9lbmFibGVkOwogI2VuZGlmCiAJdTMyIGxpbmtfc3RhdGU7CkBAIC05MDIsNyArOTAyLDcgQEAKIAlzdHJ1Y3QgbXlyaTEwZ2Vfc2xpY2Vfc3RhdGUgKnNzOwogCWludCBpLCBzdGF0dXM7CiAJc2l6ZV90IGJ5dGVzOwotI2lmIChkZWZpbmVkIENPTkZJR19EQ0EpIHx8IChkZWZpbmVkIENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19NWVJJMTBHRV9EQ0EKIAl1bnNpZ25lZCBsb25nIGRjYV90YWdfb2ZmOwogI2VuZGlmCiAKQEAgLTEwMTIsNyArMTAxMiw3IEBACiAJfQogCXB1dF9iZTMyKGh0b25sKG1ncC0+aW50cl9jb2FsX2RlbGF5KSwgbWdwLT5pbnRyX2NvYWxfZGVsYXlfcHRyKTsKIAotI2lmIChkZWZpbmVkIENPTkZJR19EQ0EpIHx8IChkZWZpbmVkIENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19NWVJJMTBHRV9EQ0EKIAlzdGF0dXMgPSBteXJpMTBnZV9zZW5kX2NtZChtZ3AsIE1YR0VGV19DTURfR0VUX0RDQV9PRkZTRVQsICZjbWQsIDApOwogCWRjYV90YWdfb2ZmID0gY21kLmRhdGEwOwogCWZvciAoaSA9IDA7IGkgPCBtZ3AtPm51bV9zbGljZXM7IGkrKykgewpAQCAtMTA1MSw3ICsxMDUxLDcgQEAKIAlyZXR1cm4gc3RhdHVzOwogfQogCi0jaWYgKGRlZmluZWQgQ09ORklHX0RDQSkgfHwgKGRlZmluZWQgQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX01ZUkkxMEdFX0RDQQogc3RhdGljIHZvaWQKIG15cmkxMGdlX3dyaXRlX2RjYShzdHJ1Y3QgbXlyaTEwZ2Vfc2xpY2Vfc3RhdGUgKnNzLCBpbnQgY3B1LCBpbnQgdGFnKQogewpAQCAtMTUwNSw3ICsxNTA1LDcgQEAKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gc3MtPm1ncC0+ZGV2OwogCWludCB3b3JrX2RvbmU7CiAKLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiAJaWYgKHNzLT5tZ3AtPmRjYV9lbmFibGVkKQogCQlteXJpMTBnZV91cGRhdGVfZGNhKHNzKTsKICNlbmRpZgpAQCAtMTczNiw3ICsxNzM2LDcgQEAKIAkidHhfYm91bmRhcnkiLCAiV0MiLCAiaXJxIiwgIk1TSSIsICJNU0lYIiwKIAkicmVhZF9kbWFfYndfTUJzIiwgIndyaXRlX2RtYV9id19NQnMiLCAicmVhZF93cml0ZV9kbWFfYndfTUJzIiwKIAkic2VyaWFsX251bWJlciIsICJ3YXRjaGRvZ19yZXNldHMiLAotI2lmIChkZWZpbmVkIENPTkZJR19EQ0EpIHx8IChkZWZpbmVkIENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19NWVJJMTBHRV9EQ0EKIAkiZGNhX2NhcGFibGVfZmlybXdhcmUiLCAiZGNhX2RldmljZV9wcmVzZW50IiwKICNlbmRpZgogCSJsaW5rX2NoYW5nZXMiLCAibGlua191cCIsICJkcm9wcGVkX2xpbmtfb3ZlcmZsb3ciLApAQCAtMTgxNSw3ICsxODE1LDcgQEAKIAlkYXRhW2krK10gPSAodW5zaWduZWQgaW50KW1ncC0+cmVhZF93cml0ZV9kbWE7CiAJZGF0YVtpKytdID0gKHVuc2lnbmVkIGludCltZ3AtPnNlcmlhbF9udW1iZXI7CiAJZGF0YVtpKytdID0gKHVuc2lnbmVkIGludCltZ3AtPndhdGNoZG9nX3Jlc2V0czsKLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiAJZGF0YVtpKytdID0gKHVuc2lnbmVkIGludCkobWdwLT5zc1swXS5kY2FfdGFnICE9IE5VTEwpOwogCWRhdGFbaSsrXSA9ICh1bnNpZ25lZCBpbnQpKG1ncC0+ZGNhX2VuYWJsZWQpOwogI2VuZGlmCkBAIC0zODQ0LDcgKzM4NDQsNyBAQAogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgcmVzZXRcbiIpOwogCQlnb3RvIGFib3J0X3dpdGhfc2xpY2VzOwogCX0KLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiAJbXlyaTEwZ2Vfc2V0dXBfZGNhKG1ncCk7CiAjZW5kaWYKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgbWdwKTsKQEAgLTM5NDgsNyArMzk0OCw3IEBACiAJbmV0ZGV2ID0gbWdwLT5kZXY7CiAJdW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTsKIAotI2lmIChkZWZpbmVkIENPTkZJR19EQ0EpIHx8IChkZWZpbmVkIENPTkZJR19EQ0FfTU9EVUxFKQorI2lmZGVmIENPTkZJR19NWVJJMTBHRV9EQ0EKIAlteXJpMTBnZV90ZWFyZG93bl9kY2EobWdwKTsKICNlbmRpZgogCW15cmkxMGdlX2R1bW15X3JkbWEobWdwLCAwKTsKQEAgLTM5OTMsNyArMzk5Myw3IEBACiAjZW5kaWYKIH07CiAKLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiBzdGF0aWMgaW50CiBteXJpMTBnZV9ub3RpZnlfZGNhKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnApCiB7CkBAIC00MDI0LDcgKzQwMjQsNyBAQAogCQkgICAgICAgbXlyaTEwZ2VfZHJpdmVyLm5hbWUsIG15cmkxMGdlX3Jzc19oYXNoKTsKIAkJbXlyaTEwZ2VfcnNzX2hhc2ggPSBNWEdFRldfUlNTX0hBU0hfVFlQRV9TUkNfUE9SVDsKIAl9Ci0jaWYgKGRlZmluZWQgQ09ORklHX0RDQSkgfHwgKGRlZmluZWQgQ09ORklHX0RDQV9NT0RVTEUpCisjaWZkZWYgQ09ORklHX01ZUkkxMEdFX0RDQQogCWRjYV9yZWdpc3Rlcl9ub3RpZnkoJm15cmkxMGdlX2RjYV9ub3RpZmllcik7CiAjZW5kaWYKIAlpZiAobXlyaTEwZ2VfbWF4X3NsaWNlcyA+IE1ZUkkxMEdFX01BWF9TTElDRVMpCkBAIC00MDM3LDcgKzQwMzcsNyBAQAogCiBzdGF0aWMgX19leGl0IHZvaWQgbXlyaTEwZ2VfY2xlYW51cF9tb2R1bGUodm9pZCkKIHsKLSNpZiAoZGVmaW5lZCBDT05GSUdfRENBKSB8fCAoZGVmaW5lZCBDT05GSUdfRENBX01PRFVMRSkKKyNpZmRlZiBDT05GSUdfTVlSSTEwR0VfRENBCiAJZGNhX3VucmVnaXN0ZXJfbm90aWZ5KCZteXJpMTBnZV9kY2Ffbm90aWZpZXIpOwogI2VuZGlmCiAJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZteXJpMTBnZV9kcml2ZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNtY2lhL0tjb25maWcgYi9kcml2ZXJzL25ldC9wY21jaWEvS2NvbmZpZwppbmRleCBlOGY1NWQ4Li45YjhmNzkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY21jaWEvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9wY21jaWEvS2NvbmZpZwpAQCAtMTExLDcgKzExMSw3IEBACiAKIGNvbmZpZyBQQ01DSUFfSUJNVFIKIAl0cmlzdGF0ZSAiSUJNIFBDTUNJQSB0b2tlbnJpbmcgYWRhcHRlciBzdXBwb3J0IgotCWRlcGVuZHMgb24gSUJNVFIhPXkgJiYgVFIgJiYgITY0QklUCisJZGVwZW5kcyBvbiBJQk1UUiE9eSAmJiBUUgogCWhlbHAKIAkgIFNheSBZIGhlcmUgaWYgeW91IGludGVuZCB0byBhdHRhY2ggdGhpcyB0eXBlIG9mIFRva2VuIFJpbmcgUENNQ0lBCiAJICBjYXJkIHRvIHlvdXIgY29tcHV0ZXIuIFlvdSB0aGVuIGFsc28gbmVlZCB0byBzYXkgWSB0byAiVG9rZW4gUmluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMKaW5kZXggMjJjMTdiYi4uNDY2YTg5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYworKysgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCkBAIC00NTYsNyArNDU2LDcgQEAKIHsKIAlzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7CiAKLQl3YXJuKCJUcmFuc21pdCB0aW1lZCBvdXQuIik7CisJZGV2X3dhcm4oJm5ldGRldi0+ZGV2LCAiVHJhbnNtaXQgdGltZWQgb3V0LlxuIik7CiAJdXNiX3VubGlua191cmIoY2F0Yy0+dHhfdXJiKTsKIH0KIApAQCAtODQ3LDcgKzg0Nyw4IEBACiAJCQlkYmcoIjY0ayBNZW1vcnlcbiIpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQl3YXJuKCJDb3VsZG4ndCBkZXRlY3QgbWVtb3J5IHNpemUsIGFzc3VtaW5nIDMyayIpOworCQkJZGV2X3dhcm4oJmludGYtPmRldiwKKwkJCQkgIkNvdWxkbid0IGRldGVjdCBtZW1vcnkgc2l6ZSwgYXNzdW1pbmcgMzJrXG4iKTsKIAkJY2FzZSAweDg3NjU0MzIxOgogCQkJY2F0Y19zZXRfcmVnKGNhdGMsIFR4QnVmQ291bnQsIDQpOwogCQkJY2F0Y19zZXRfcmVnKGNhdGMsIFJ4QnVmQ291bnQsIDE2KTsKQEAgLTk1Myw3ICs5NTQsOCBAQAogewogCWludCByZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJmNhdGNfZHJpdmVyKTsKIAlpZiAocmVzdWx0ID09IDApCi0JCWluZm8oRFJJVkVSX1ZFUlNJT04gIiAiIERSSVZFUl9ERVNDKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCQkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jCmluZGV4IGQ2ODI5ZGIuLmZkYmYzYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9rYXdldGguYworKysgYi9kcml2ZXJzL25ldC91c2Iva2F3ZXRoLmMKQEAgLTgzMiw3ICs4MzIsNyBAQAogCiAJaWYoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKGthd2V0aC0+dHhfdXJiLCBHRlBfQVRPTUlDKSkpCiAJewotCQl3YXJuKCJrYXdldGggZmFpbGVkIHR4X3VyYiAlZCIsIHJlcyk7CisJCWRldl93YXJuKCZuZXQtPmRldiwgImthd2V0aCBmYWlsZWQgdHhfdXJiICVkXG4iLCByZXMpOwogc2tpcDoKIAkJa2F3ZXRoLT5zdGF0cy50eF9lcnJvcnMrKzsKIApAQCAtOTI0LDcgKzkyNCw3IEBACiB7CiAJc3RydWN0IGthd2V0aF9kZXZpY2UgKmthd2V0aCA9IG5ldGRldl9wcml2KG5ldCk7CiAKLQl3YXJuKCIlczogVHggdGltZWQgb3V0LiBSZXNldHRpbmcuIiwgbmV0LT5uYW1lKTsKKwlkZXZfd2FybigmbmV0LT5kZXYsICIlczogVHggdGltZWQgb3V0LiBSZXNldHRpbmcuXG4iLCBuZXQtPm5hbWUpOwogCWthd2V0aC0+c3RhdHMudHhfZXJyb3JzKys7CiAJbmV0LT50cmFuc19zdGFydCA9IGppZmZpZXM7CiAKQEAgLTEwMTYsMTAgKzEwMTYsMTAgQEAKIAkgKi8KIAogCWlmIChsZTE2X3RvX2NwdShkZXYtPmRlc2NyaXB0b3IuYmNkRGV2aWNlKSA+PiA4KSB7Ci0JCWluZm8oIkZpcm13YXJlIHByZXNlbnQgaW4gZGV2aWNlLiIpOworCQlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiRmlybXdhcmUgcHJlc2VudCBpbiBkZXZpY2UuXG4iKTsKIAl9IGVsc2UgewogCQkvKiBEb3dubG9hZCB0aGUgZmlybXdhcmUgKi8KLQkJaW5mbygiRG93bmxvYWRpbmcgZmlybXdhcmUuLi4iKTsKKwkJZGV2X2luZm8oJmludGYtPmRldiwgIkRvd25sb2FkaW5nIGZpcm13YXJlLi4uXG4iKTsKIAkJa2F3ZXRoLT5maXJtd2FyZV9idWYgPSAoX191OCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKIAkJaWYgKChyZXN1bHQgPSBrYXdldGhfZG93bmxvYWRfZmlybXdhcmUoa2F3ZXRoLAogCQkJCQkJICAgICAgImthd2V0aC9uZXdfY29kZS5iaW4iLApAQCAtMTA2MSw3ICsxMDYxLDcgQEAKIAkJfQogCiAJCS8qIERldmljZSB3aWxsIG5vdyBkaXNhcHBlYXIgZm9yIGEgbW9tZW50Li4uICAqLwotCQlpbmZvKCJGaXJtd2FyZSBsb2FkZWQuICBJJ2xsIGJlIGJhY2suLi4iKTsKKwkJZGV2X2luZm8oJmludGYtPmRldiwgIkZpcm13YXJlIGxvYWRlZC4gIEknbGwgYmUgYmFjay4uLlxuIik7CiBlcnJfZnc6CiAJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrYXdldGgtPmZpcm13YXJlX2J1Zik7CiAJCWZyZWVfbmV0ZGV2KG5ldGRldik7CkBAIC0xMDc1LDEwICsxMDc1LDEwIEBACiAJCWdvdG8gZXJyX2ZyZWVfbmV0ZGV2OwogCX0KIAotCWluZm8oIlN0YXRpc3RpY3MgY29sbGVjdGlvbjogJXgiLCBrYXdldGgtPmNvbmZpZ3VyYXRpb24uc3RhdGlzdGljc19tYXNrKTsKLQlpbmZvKCJNdWx0aWNhc3QgZmlsdGVyIGxpbWl0OiAleCIsIGthd2V0aC0+Y29uZmlndXJhdGlvbi5tYXhfbXVsdGljYXN0X2ZpbHRlcnMgJiAoKDEgPDwgMTUpIC0gMSkpOwotCWluZm8oIk1UVTogJWQiLCBsZTE2X3RvX2NwdShrYXdldGgtPmNvbmZpZ3VyYXRpb24uc2VnbWVudF9zaXplKSk7Ci0JaW5mbygiUmVhZCBNQUMgYWRkcmVzcyAlMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeCIsCisJZGV2X2luZm8oJmludGYtPmRldiwgIlN0YXRpc3RpY3MgY29sbGVjdGlvbjogJXhcbiIsIGthd2V0aC0+Y29uZmlndXJhdGlvbi5zdGF0aXN0aWNzX21hc2spOworCWRldl9pbmZvKCZpbnRmLT5kZXYsICJNdWx0aWNhc3QgZmlsdGVyIGxpbWl0OiAleFxuIiwga2F3ZXRoLT5jb25maWd1cmF0aW9uLm1heF9tdWx0aWNhc3RfZmlsdGVycyAmICgoMSA8PCAxNSkgLSAxKSk7CisJZGV2X2luZm8oJmludGYtPmRldiwgIk1UVTogJWRcbiIsIGxlMTZfdG9fY3B1KGthd2V0aC0+Y29uZmlndXJhdGlvbi5zZWdtZW50X3NpemUpKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiUmVhZCBNQUMgYWRkcmVzcyAlMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeFxuIiwKIAkJIChpbnQpa2F3ZXRoLT5jb25maWd1cmF0aW9uLmh3X2FkZHJbMF0sCiAJCSAoaW50KWthd2V0aC0+Y29uZmlndXJhdGlvbi5od19hZGRyWzFdLAogCQkgKGludClrYXdldGgtPmNvbmZpZ3VyYXRpb24uaHdfYWRkclsyXSwKQEAgLTExNzQsNyArMTE3NCw4IEBACiAJCWdvdG8gZXJyX2ludGZkYXRhOwogCX0KIAotCWluZm8oImthd2V0aCBpbnRlcmZhY2UgY3JlYXRlZCBhdCAlcyIsIGthd2V0aC0+bmV0LT5uYW1lKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAia2F3ZXRoIGludGVyZmFjZSBjcmVhdGVkIGF0ICVzXG4iLAorCQkga2F3ZXRoLT5uZXQtPm5hbWUpOwogCiAJZGJnKCJLYXdldGggcHJvYmUgcmV0dXJuaW5nLiIpOwogCkBAIC0xMjA1LDExICsxMjA2LDExIEBACiAJc3RydWN0IGthd2V0aF9kZXZpY2UgKmthd2V0aCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKIAotCWluZm8oIlVucmVnaXN0ZXJpbmciKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiVW5yZWdpc3RlcmluZ1xuIik7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpOwogCWlmICgha2F3ZXRoKSB7Ci0JCXdhcm4oInVucmVnaXN0ZXJpbmcgbm9uLWV4aXN0YW50IGRldmljZSIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LCAidW5yZWdpc3RlcmluZyBub24tZXhpc3RhbnQgZGV2aWNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAluZXRkZXYgPSBrYXdldGgtPm5ldDsKQEAgLTEyNjksNyArMTI3MCw3IEBACiAKIAlpZiAoIXdhaXRfZXZlbnRfdGltZW91dChhd2Qud3FoLCBhd2QuZG9uZSwgdGltZW91dCkpIHsKICAgICAgICAgICAgICAgICAvLyB0aW1lb3V0Ci0gICAgICAgICAgICAgICAgd2FybigidXNiX2NvbnRyb2wvYnVsa19tc2c6IHRpbWVvdXQiKTsKKyAgICAgICAgICAgICAgICBkZXZfd2FybigmdXJiLT5kZXYtPmRldiwgInVzYl9jb250cm9sL2J1bGtfbXNnOiB0aW1lb3V0XG4iKTsKICAgICAgICAgICAgICAgICB1c2Jfa2lsbF91cmIodXJiKTsgIC8vIHJlbW92ZSB1cmIgc2FmZWx5CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gLUVUSU1FRE9VVDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAuYyBiL2RyaXZlcnMvbmV0L3VzYi9ydGw4MTUwLmMKaW5kZXggZGY1NmE1MS4uNjEzMzQwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAuYworKysgYi9kcml2ZXJzL25ldC91c2IvcnRsODE1MC5jCkBAIC0yMjEsNyArMjIxLDcgQEAKIAljYXNlIC1FTk9FTlQ6CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXdhcm4oImN0cmwgdXJiIHN0YXR1cyAlZCIsIHVyYi0+c3RhdHVzKTsKKwkJZGV2X3dhcm4oJnVyYi0+ZGV2LT5kZXYsICJjdHJsIHVyYiBzdGF0dXMgJWRcbiIsIHVyYi0+c3RhdHVzKTsKIAl9CiAJZGV2ID0gdXJiLT5jb250ZXh0OwogCWNsZWFyX2JpdChSWF9SRUdfU0VULCAmZGV2LT5mbGFncyk7CkBAIC00NDEsMTAgKzQ0MSwxMCBAQAogCWNhc2UgLUVOT0VOVDoKIAkJcmV0dXJuOwkvKiB0aGUgdXJiIGlzIGluIHVubGluayBzdGF0ZSAqLwogCWNhc2UgLUVUSU1FOgotCQl3YXJuKCJtYXkgYmUgcmVzZXQgaXMgbmVlZGVkPy4uIik7CisJCWRldl93YXJuKCZ1cmItPmRldi0+ZGV2LCAibWF5IGJlIHJlc2V0IGlzIG5lZWRlZD8uLlxuIik7CiAJCWdvdG8gZ29vbjsKIAlkZWZhdWx0OgotCQl3YXJuKCJSeCBzdGF0dXMgJWQiLCB1cmItPnN0YXR1cyk7CisJCWRldl93YXJuKCZ1cmItPmRldi0+ZGV2LCAiUnggc3RhdHVzICVkXG4iLCB1cmItPnN0YXR1cyk7CiAJCWdvdG8gZ29vbjsKIAl9CiAKQEAgLTUzOCw3ICs1MzgsOCBAQAogCWlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2LT5uZXRkZXYpKQogCQlyZXR1cm47CiAJaWYgKHVyYi0+c3RhdHVzKQotCQlpbmZvKCIlczogVHggc3RhdHVzICVkIiwgZGV2LT5uZXRkZXYtPm5hbWUsIHVyYi0+c3RhdHVzKTsKKwkJZGV2X2luZm8oJnVyYi0+ZGV2LT5kZXYsICIlczogVHggc3RhdHVzICVkXG4iLAorCQkJIGRldi0+bmV0ZGV2LT5uYW1lLCB1cmItPnN0YXR1cyk7CiAJZGV2LT5uZXRkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmllczsKIAluZXRpZl93YWtlX3F1ZXVlKGRldi0+bmV0ZGV2KTsKIH0KQEAgLTU2MSw3ICs1NjIsOCBAQAogCQlyZXR1cm47CiAJLyogLUVQSVBFOiAgc2hvdWxkIGNsZWFyIHRoZSBoYWx0ICovCiAJZGVmYXVsdDoKLQkJaW5mbygiJXM6IGludHIgc3RhdHVzICVkIiwgZGV2LT5uZXRkZXYtPm5hbWUsIHVyYi0+c3RhdHVzKTsKKwkJZGV2X2luZm8oJnVyYi0+ZGV2LT5kZXYsICIlczogaW50ciBzdGF0dXMgJWRcbiIsCisJCQkgZGV2LT5uZXRkZXYtPm5hbWUsIHVyYi0+c3RhdHVzKTsKIAkJZ290byByZXN1Ym1pdDsKIAl9CiAKQEAgLTY2NSw3ICs2NjcsNyBAQAogCXU4IGNyLCB0Y3IsIHJjciwgbXNyOwogCiAJaWYgKCFydGw4MTUwX3Jlc2V0KGRldikpIHsKLQkJd2FybigiJXMgLSBkZXZpY2UgcmVzZXQgZmFpbGVkIiwgX19GVU5DVElPTl9fKTsKKwkJZGV2X3dhcm4oJmRldi0+dWRldi0+ZGV2LCAiZGV2aWNlIHJlc2V0IGZhaWxlZFxuIik7CiAJfQogCS8qIFJDUiBiaXQ3PTEgYXR0YWNoIFJ4IGluZm8gYXQgdGhlIGVuZDsgID0wIEhXIENSQyAod2hpY2ggaXMgYnJva2VuKSAqLwogCXJjciA9IDB4OWU7CkBAIC02OTksNyArNzAxLDcgQEAKIHN0YXRpYyB2b2lkIHJ0bDgxNTBfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQogewogCXJ0bDgxNTBfdCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKLQl3YXJuKCIlczogVHggdGltZW91dC4iLCBuZXRkZXYtPm5hbWUpOworCWRldl93YXJuKCZuZXRkZXYtPmRldiwgIlR4IHRpbWVvdXQuXG4iKTsKIAl1c2JfdW5saW5rX3VyYihkZXYtPnR4X3VyYik7CiAJZGV2LT5zdGF0cy50eF9lcnJvcnMrKzsKIH0KQEAgLTcxMCwxMiArNzEyLDEyIEBACiAJbmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpOwogCWlmIChuZXRkZXYtPmZsYWdzICYgSUZGX1BST01JU0MpIHsKIAkJZGV2LT5yeF9jcmVnIHw9IGNwdV90b19sZTE2KDB4MDAwMSk7Ci0JCWluZm8oIiVzOiBwcm9taXNjdW91cyBtb2RlIiwgbmV0ZGV2LT5uYW1lKTsKKwkJZGV2X2luZm8oJm5ldGRldi0+ZGV2LCAiJXM6IHByb21pc2N1b3VzIG1vZGVcbiIsIG5ldGRldi0+bmFtZSk7CiAJfSBlbHNlIGlmIChuZXRkZXYtPm1jX2NvdW50IHx8CiAJCSAgIChuZXRkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSkgewogCQlkZXYtPnJ4X2NyZWcgJj0gY3B1X3RvX2xlMTYoMHhmZmZlKTsKIAkJZGV2LT5yeF9jcmVnIHw9IGNwdV90b19sZTE2KDB4MDAwMik7Ci0JCWluZm8oIiVzOiBhbGxtdWx0aSBzZXQiLCBuZXRkZXYtPm5hbWUpOworCQlkZXZfaW5mbygmbmV0ZGV2LT5kZXYsICIlczogYWxsbXVsdGkgc2V0XG4iLCBuZXRkZXYtPm5hbWUpOwogCX0gZWxzZSB7CiAJCS8qIH5SWF9NVUxUSUNBU1QsIH5SWF9QUk9NSVNDVU9VUyAqLwogCQlkZXYtPnJ4X2NyZWcgJj0gY3B1X3RvX2xlMTYoMHgwMGZjKTsKQEAgLTc0MCw3ICs3NDIsNyBAQAogCQlpZiAocmVzID09IC1FTk9ERVYpCiAJCQluZXRpZl9kZXZpY2VfZGV0YWNoKGRldi0+bmV0ZGV2KTsKIAkJZWxzZSB7Ci0JCQl3YXJuKCJmYWlsZWQgdHhfdXJiICVkXG4iLCByZXMpOworCQkJZGV2X3dhcm4oJm5ldGRldi0+ZGV2LCAiZmFpbGVkIHR4X3VyYiAlZFxuIiwgcmVzKTsKIAkJCWRldi0+c3RhdHMudHhfZXJyb3JzKys7CiAJCQluZXRpZl9zdGFydF9xdWV1ZShuZXRkZXYpOwogCQl9CkBAIC03ODMsNyArNzg1LDcgQEAKIAlpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKGRldi0+cnhfdXJiLCBHRlBfS0VSTkVMKSkpIHsKIAkJaWYgKHJlcyA9PSAtRU5PREVWKQogCQkJbmV0aWZfZGV2aWNlX2RldGFjaChkZXYtPm5ldGRldik7Ci0JCXdhcm4oIiVzOiByeF91cmIgc3VibWl0IGZhaWxlZDogJWQiLCBfX0ZVTkNUSU9OX18sIHJlcyk7CisJCWRldl93YXJuKCZuZXRkZXYtPmRldiwgInJ4X3VyYiBzdWJtaXQgZmFpbGVkOiAlZFxuIiwgcmVzKTsKIAkJcmV0dXJuIHJlczsKIAl9CiAJdXNiX2ZpbGxfaW50X3VyYihkZXYtPmludHJfdXJiLCBkZXYtPnVkZXYsIHVzYl9yY3ZpbnRwaXBlKGRldi0+dWRldiwgMyksCkBAIC03OTIsNyArNzk0LDcgQEAKIAlpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKGRldi0+aW50cl91cmIsIEdGUF9LRVJORUwpKSkgewogCQlpZiAocmVzID09IC1FTk9ERVYpCiAJCQluZXRpZl9kZXZpY2VfZGV0YWNoKGRldi0+bmV0ZGV2KTsKLQkJd2FybigiJXM6IGludHJfdXJiIHN1Ym1pdCBmYWlsZWQ6ICVkIiwgX19GVU5DVElPTl9fLCByZXMpOworCQlkZXZfd2FybigmbmV0ZGV2LT5kZXYsICJpbnRyX3VyYiBzdWJtaXQgZmFpbGVkOiAlZFxuIiwgcmVzKTsKIAkJdXNiX2tpbGxfdXJiKGRldi0+cnhfdXJiKTsKIAkJcmV0dXJuIHJlczsKIAl9CkBAIC05NDcsNyArOTQ5LDcgQEAKIAkJZ290byBvdXQyOwogCX0KIAotCWluZm8oIiVzOiBydGw4MTUwIGlzIGRldGVjdGVkIiwgbmV0ZGV2LT5uYW1lKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiJXM6IHJ0bDgxNTAgaXMgZGV0ZWN0ZWRcbiIsIG5ldGRldi0+bmFtZSk7CiAKIAlyZXR1cm4gMDsKIApAQCAtOTg0LDcgKzk4Niw4IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IHVzYl9ydGw4MTUwX2luaXQodm9pZCkKIHsKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gdXNiX3JlZ2lzdGVyKCZydGw4MTUwX2RyaXZlcik7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX21haW4uYyBiL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX21haW4uYwppbmRleCBmODA2NDBmLi5kN2JiNjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfbWFpbi5jCkBAIC0xMjIsNyArMTIyLDYgQEAKICAgICAgKiBNb3N0IGZ1bmN0aW9ucyBtZXNzIHdpdGggdGhlIHN0cnVjdHVyZQogICAgICAqIERpc2FibGUgaW50ZXJydXB0cyB3aGlsZSB3ZSBkbyB0aGUgcG9sbGluZwogICAgICAqLwotICAgIHNwaW5fbG9ja19pcnFzYXZlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKIAogICAgIHN3aXRjaCAoY21kKSB7CiAgICAgICAgIC8qCkBAIC0xNTIsNiArMTUxLDcgQEAKIAkJYnJlYWs7CiAJfQogCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogICAgICAgICBzYy0+bG1jX21lZGlhLT5zZXRfc3RhdHVzIChzYywgJmN0bCk7CiAKICAgICAgICAgaWYoY3RsLmNyY19sZW5ndGggIT0gc2MtPmljdGwuY3JjX2xlbmd0aCkgewpAQCAtMTYxLDYgKzE2MSw3IEBACiAJICAgIGVsc2UKIAkJc2MtPlR4RGVzY3JpcHRDb250cm9sSW5pdCAmPSB+TE1DX1RERVNfQUREX0NSQ19ESVNBQkxFOwogICAgICAgICB9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAKICAgICAgICAgcmV0ID0gMDsKICAgICAgICAgYnJlYWs7CkBAIC0xODcsMTUgKzE4OCwxOCBAQAogCQlicmVhazsJCQkJLyogbm8gY2hhbmdlICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKwkgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogICAgICAgICAgICAgbG1jX3Byb3RvX2Nsb3NlKHNjKTsKIAogICAgICAgICAgICAgc2MtPmlmX3R5cGUgPSBuZXdfdHlwZTsKICAgICAgICAgICAgIGxtY19wcm90b19hdHRhY2goc2MpOwogCSAgICByZXQgPSBsbWNfcHJvdG9fb3BlbihzYyk7CisJICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogCSAgICBicmVhazsKIAl9CiAKICAgICBjYXNlIExNQ0lPQ0dFVFhJTkZPOiAvKmZvbGQwMSovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogICAgICAgICBzYy0+bG1jX3hpbmZvLk1hZ2ljMCA9IDB4QkVFRkNBRkU7CiAKICAgICAgICAgc2MtPmxtY194aW5mby5QY2lDYXJkVHlwZSA9IHNjLT5sbWNfY2FyZHR5cGU7CkBAIC0yMDgsNiArMjEyLDcgQEAKICAgICAgICAgc2MtPmxtY194aW5mby5NYXhGcmFtZVNpemUgPSBMTUNfUEtUX0JVRl9TWjsKICAgICAgICAgc2MtPmxtY194aW5mby5saW5rX3N0YXR1cyA9IHNjLT5sbWNfbWVkaWEtPmdldF9saW5rX3N0YXR1cyAoc2MpOwogICAgICAgICBzYy0+bG1jX3hpbmZvLm1paV9yZWcxNiA9IGxtY19taWlfcmVhZHJlZyAoc2MsIDAsIDE2KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKIAogICAgICAgICBzYy0+bG1jX3hpbmZvLk1hZ2ljMSA9IDB4REVBREJFRUY7CiAKQEAgLTIyMCw2ICsyMjUsNyBAQAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTE1DSU9DR0VUTE1DU1RBVFM6CisJICAgIHNwaW5fbG9ja19pcnFzYXZlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKIAkgICAgaWYgKHNjLT5sbWNfY2FyZHR5cGUgPT0gTE1DX0NBUkRUWVBFX1QxKSB7CiAJCSAgICBsbWNfbWlpX3dyaXRlcmVnKHNjLCAwLCAxNywgVDFGUkFNRVJfRkVSUl9MU0IpOwogCQkgICAgc2MtPmV4dHJhX3N0YXRzLmZyYW1pbmdCaXRFcnJvckNvdW50ICs9CkBAIC0yNDMsNiArMjQ5LDcgQEAKIAkJICAgIHNjLT5leHRyYV9zdGF0cy5zZXZlcmVseUVycm9yZWRGcmFtZUNvdW50ICs9CiAJCQkgICAgcmVnVmFsICYgVDFGUkFNRVJfU0VGX01BU0s7CiAJICAgIH0KKwkgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAJICAgIGlmIChjb3B5X3RvX3VzZXIoaWZyLT5pZnJfZGF0YSwgJnNjLT5sbWNfZGV2aWNlLT5zdGF0cywKIAkJCSAgICAgc2l6ZW9mKHNjLT5sbWNfZGV2aWNlLT5zdGF0cykpIHx8CiAJCWNvcHlfdG9fdXNlcihpZnItPmlmcl9kYXRhICsgc2l6ZW9mKHNjLT5sbWNfZGV2aWNlLT5zdGF0cyksCkBAIC0yNTgsMTIgKzI2NSwxNCBAQAogCQkgICAgYnJlYWs7CiAJICAgIH0KIAorCSAgICBzcGluX2xvY2tfaXJxc2F2ZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAJICAgIG1lbXNldCgmc2MtPmxtY19kZXZpY2UtPnN0YXRzLCAwLCBzaXplb2Yoc2MtPmxtY19kZXZpY2UtPnN0YXRzKSk7CiAJICAgIG1lbXNldCgmc2MtPmV4dHJhX3N0YXRzLCAwLCBzaXplb2Yoc2MtPmV4dHJhX3N0YXRzKSk7CiAJICAgIHNjLT5leHRyYV9zdGF0cy5jaGVjayA9IFNUQVRDSEVDSzsKIAkgICAgc2MtPmV4dHJhX3N0YXRzLnZlcnNpb25fc2l6ZSA9IChEUklWRVJfVkVSU0lPTiA8PCAxNikgKwogCQkgICAgc2l6ZW9mKHNjLT5sbWNfZGV2aWNlLT5zdGF0cykgKyBzaXplb2Yoc2MtPmV4dHJhX3N0YXRzKTsKIAkgICAgc2MtPmV4dHJhX3N0YXRzLmxtY19jYXJkdHlwZSA9IHNjLT5sbWNfY2FyZHR5cGU7CisJICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogCSAgICByZXQgPSAwOwogCSAgICBicmVhazsKIApAQCAtMjgyLDggKzI5MSwxMCBAQAogCQlyZXQgPSAtRUZBVUxUOwogCQlicmVhazsKIAl9CisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogICAgICAgICBzYy0+bG1jX21lZGlhLT5zZXRfY2lyY3VpdF90eXBlKHNjLCBjdGwuY2lyY3VpdF90eXBlKTsKICAgICAgICAgc2MtPmljdGwuY2lyY3VpdF90eXBlID0gY3RsLmNpcmN1aXRfdHlwZTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKICAgICAgICAgcmV0ID0gMDsKIAogICAgICAgICBicmVhazsKQEAgLTI5NCwxMiArMzA1LDE0IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjLT5sbWNfbG9jaywgZmxhZ3MpOwogICAgICAgICAvKiBSZXNldCBkcml2ZXIgYW5kIGJyaW5nIGJhY2sgdG8gY3VycmVudCBzdGF0ZSAqLwogICAgICAgICBwcmludGsgKCIgUkVHMTYgYmVmb3JlIHJlc2V0ICslMDR4XG4iLCBsbWNfbWlpX3JlYWRyZWcgKHNjLCAwLCAxNikpOwogICAgICAgICBsbWNfcnVubmluZ19yZXNldCAoZGV2KTsKICAgICAgICAgcHJpbnRrICgiIFJFRzE2IGFmdGVyIHJlc2V0ICslMDR4XG4iLCBsbWNfbWlpX3JlYWRyZWcgKHNjLCAwLCAxNikpOwogCiAgICAgICAgIExNQ19FVkVOVF9MT0coTE1DX0VWRU5UX0ZPUkNFRFJFU0VULCBMTUNfQ1NSX1JFQUQgKHNjLCBjc3Jfc3RhdHVzKSwgbG1jX21paV9yZWFkcmVnIChzYywgMCwgMTYpKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKIAogICAgICAgICByZXQgPSAwOwogICAgICAgICBicmVhazsKQEAgLTMzOCwxNCArMzUxLDE1IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG5ldGlmX3N0b3BfcXVldWUoZGV2KTsKIAotCWlmIChjb3B5X2Zyb21fdXNlcigmeGMsIGlmci0+aWZyX2RhdGEsIHNpemVvZihzdHJ1Y3QgbG1jX3hpbGlueF9jb250cm9sKSkpIHsKKwkgICAgaWYgKGNvcHlfZnJvbV91c2VyKCZ4YywgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKHN0cnVjdCBsbWNfeGlsaW54X2NvbnRyb2wpKSkgewogCQlyZXQgPSAtRUZBVUxUOwogCQlicmVhazsKLQl9CisJICAgIH0KICAgICAgICAgICAgIHN3aXRjaCh4Yy5jb21tYW5kKXsKICAgICAgICAgICAgIGNhc2UgbG1jX3hpbGlueF9yZXNldDogLypmb2xkMDIqLwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgdTE2IG1paTsKKwkJICAgIHNwaW5fbG9ja19pcnFzYXZlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAgbWlpID0gbG1jX21paV9yZWFkcmVnIChzYywgMCwgMTYpOwogCiAgICAgICAgICAgICAgICAgICAgIC8qCkBAIC00MDQsNiArNDE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbWNfbGVkX29mZihzYywgTE1DX0RTM19MRUQyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorCQkgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAKIApAQCAtNDE2LDYgKzQzMSw3IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICB1MTYgbWlpOwogICAgICAgICAgICAgICAgICAgICBpbnQgdGltZW91dCA9IDUwMDAwMDsKKwkJICAgIHNwaW5fbG9ja19pcnFzYXZlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAgbWlpID0gbG1jX21paV9yZWFkcmVnIChzYywgMCwgMTYpOwogCiAgICAgICAgICAgICAgICAgICAgIC8qCkBAIC00NTEsMTMgKzQ2NywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIChMTUNfQ1NSX1JFQUQoc2MsIGNzcl9ncCkgJiBMTUNfR0VQX0lOSVQpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lb3V0LS0gPiAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9yZWxheCgpOwogCiAKICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogc3RvcCBkcml2aW5nIFhpbGlueC1yZWxhdGVkIHNpZ25hbHMKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIGxtY19ncGlvX21raW5wdXQoc2MsIDB4ZmYpOworCQkgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAKICAgICAgICAgICAgICAgICAgICAgcmV0ID0gMHgwOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTQ5Myw2ICs1MTAsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgIHByaW50aygiJXM6IFN0YXJ0aW5nIGxvYWQgb2YgZGF0YSBMZW46ICVkIGF0IDB4JXAgPT0gMHglcFxuIiwgZGV2LT5uYW1lLCB4Yy5sZW4sIHhjLmRhdGEsIGRhdGEpOwogCisJCSAgICBzcGluX2xvY2tfaXJxc2F2ZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7CiAgICAgICAgICAgICAgICAgICAgIGxtY19ncGlvX21raW5wdXQoc2MsIDB4ZmYpOwogCiAgICAgICAgICAgICAgICAgICAgIC8qCkBAIC01NDUsNyArNTYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCAoTE1DX0NTUl9SRUFEKHNjLCBjc3JfZ3ApICYgTE1DX0dFUF9JTklUKSA9PSAwICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZW91dC0tID4gMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICAgICAgICAgICAgICBjcHVfcmVsYXgoKTsKIAogICAgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAiJXM6IFdhaXRlZCAlZCBmb3IgdGhlIFhpbGlueCB0byBjbGVhciBpdCdzIG1lbW9yeVxuIiwgZGV2LT5uYW1lLCA1MDAwMDAtdGltZW91dCk7CiAKQEAgLTU4OCw2ICs2MDYsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgIHNjLT5sbWNfbWlpcmVnMTYgJj0gfkxNQ19NSUkxNl9GSUZPX1JFU0VUOwogICAgICAgICAgICAgICAgICAgICBsbWNfbWlpX3dyaXRlcmVnKHNjLCAwLCAxNiwgc2MtPmxtY19taWlyZWcxNik7CisJCSAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzYy0+bG1jX2xvY2ssIGZsYWdzKTsKIAogICAgICAgICAgICAgICAgICAgICBrZnJlZShkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC02MTEsOCArNjMwLDYgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2MtPmxtY19sb2NrLCBmbGFncyk7IC8qZm9sZDAxKi8KLQogICAgIGxtY190cmFjZShkZXYsICJsbWNfaW9jdGwgb3V0Iik7CiAKICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwppbmRleCA1YzdhODdlLi5jNjk0OGQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwpAQCAtMjM5LDExICsyMzksMTQgQEAKIAkgKi8KIAliYXRjaF90YXJnZXQgPSBucC0+cnhfdGFyZ2V0IC0gKHJlcV9wcm9kIC0gbnAtPnJ4LnJzcF9jb25zKTsKIAlmb3IgKGkgPSBza2JfcXVldWVfbGVuKCZucC0+cnhfYmF0Y2gpOyBpIDwgYmF0Y2hfdGFyZ2V0OyBpKyspIHsKLQkJc2tiID0gX19uZXRkZXZfYWxsb2Nfc2tiKGRldiwgUlhfQ09QWV9USFJFU0hPTEQsCisJCXNrYiA9IF9fbmV0ZGV2X2FsbG9jX3NrYihkZXYsIFJYX0NPUFlfVEhSRVNIT0xEICsgTkVUX0lQX0FMSUdOLAogCQkJCQkgR0ZQX0FUT01JQyB8IF9fR0ZQX05PV0FSTik7CiAJCWlmICh1bmxpa2VseSghc2tiKSkKIAkJCWdvdG8gbm9fc2tiOwogCisJCS8qIEFsaWduIGlwIGhlYWRlciB0byBhIDE2IGJ5dGVzIGJvdW5kYXJ5ICovCisJCXNrYl9yZXNlcnZlKHNrYiwgTkVUX0lQX0FMSUdOKTsKKwogCQlwYWdlID0gYWxsb2NfcGFnZShHRlBfQVRPTUlDIHwgX19HRlBfTk9XQVJOKTsKIAkJaWYgKCFwYWdlKSB7CiAJCQlrZnJlZV9za2Ioc2tiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2RpYWcuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2RpYWcuYwppbmRleCA4NWZjYjQzLi43ODQ0NDYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kaWFnLmMKKysrIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZGlhZy5jCkBAIC01NDQsNyArNTQ0LDcgQEAKIAl9CiAJY3FyLT5yZXRyaWVzID0gRElBR19NQVhfUkVUUklFUzsKIAljcXItPmJ1aWxkY2xrID0gZ2V0X2Nsb2NrKCk7Ci0JaWYgKHJlcS0+Y21kX2ZsYWdzICYgUkVRX0ZBSUxGQVNUKQorCWlmIChibGtfbm9yZXRyeV9yZXF1ZXN0KHJlcSkpCiAJCXNldF9iaXQoREFTRF9DUVJfRkxBR1NfRkFJTEZBU1QsICZjcXItPmZsYWdzKTsKIAljcXItPnN0YXJ0ZGV2ID0gbWVtZGV2OwogCWNxci0+bWVtZGV2ID0gbWVtZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jCmluZGV4IDQ5ZjlkMjIuLjJlNjBkNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Vja2QuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9lY2tkLmMKQEAgLTE3MDAsNyArMTcwMCw3IEBACiAJCQlyZWNpZCsrOwogCQl9CiAJfQotCWlmIChyZXEtPmNtZF9mbGFncyAmIFJFUV9GQUlMRkFTVCkKKwlpZiAoYmxrX25vcmV0cnlfcmVxdWVzdChyZXEpKQogCQlzZXRfYml0KERBU0RfQ1FSX0ZMQUdTX0ZBSUxGQVNULCAmY3FyLT5mbGFncyk7CiAJY3FyLT5zdGFydGRldiA9IHN0YXJ0ZGV2OwogCWNxci0+bWVtZGV2ID0gc3RhcnRkZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9mYmEuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCmluZGV4IDkzZDliNjQuLjdkNDQyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkJCXJlY2lkKys7CiAJCX0KIAl9Ci0JaWYgKHJlcS0+Y21kX2ZsYWdzICYgUkVRX0ZBSUxGQVNUKQorCWlmIChibGtfbm9yZXRyeV9yZXF1ZXN0KHJlcSkpCiAJCXNldF9iaXQoREFTRF9DUVJfRkxBR1NfRkFJTEZBU1QsICZjcXItPmZsYWdzKTsKIAljcXItPnN0YXJ0ZGV2ID0gbWVtZGV2OwogCWNxci0+bWVtZGV2ID0gbWVtZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kZWYuaCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGVmLmgKaW5kZXggOGExMzA3MS4uOWNlNGM3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kZWYuaAorKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RlZi5oCkBAIC01ODMsNiArNTgzLDggQEAKIAl1bnNpZ25lZCBsb25nIGxvbmcgICAgIGlzc3VlZDsgICAgICAgICAvKiByZXF1ZXN0IHNlbnQgdGltZSAoU1RDSykgKi8KIAlzdHJ1Y3QgemZjcF91bml0ICAgICAgICp1bml0OwogCXZvaWQJCQkoKmhhbmRsZXIpKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKik7CisJdTE2CQkJcWRpb19vdXRiX3VzYWdlOy8qIHVzYWdlIG9mIG91dGJvdW5kIHF1ZXVlICovCisJdTE2CQkJcWRpb19pbmJfdXNhZ2U7CS8qIHVzYWdlIG9mIGluYm91bmQgcXVldWUgKi8KIH07CiAKIC8qIGRyaXZlciBkYXRhICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYwppbmRleCA3MzkzNTZhLi41YWUxZDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDIsIDIwMDgKICAqLwogCisjaW5jbHVkZSA8bGludXgvYmxrdHJhY2VfYXBpLmg+CiAjaW5jbHVkZSAiemZjcF9leHQuaCIKIAogc3RhdGljIHZvaWQgemZjcF9mc2ZfcmVxdWVzdF90aW1lb3V0X2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQpAQCAtNzc3LDYgKzc3OCw3IEBACiAJbGlzdF9hZGRfdGFpbCgmcmVxLT5saXN0LCAmYWRhcHRlci0+cmVxX2xpc3RbaWR4XSk7CiAJc3Bpbl91bmxvY2soJmFkYXB0ZXItPnJlcV9saXN0X2xvY2spOwogCisJcmVxLT5xZGlvX291dGJfdXNhZ2UgPSBhdG9taWNfcmVhZCgmcmVxX3EtPmNvdW50KTsKIAlyZXEtPmlzc3VlZCA9IGdldF9jbG9jaygpOwogCWlmICh6ZmNwX3FkaW9fc2VuZChyZXEpKSB7CiAJCS8qIFF1ZXVlcyBhcmUgZG93bi4uLi4uICovCkBAIC0yMDgyLDYgKzIwODQsMzYgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1bml0LT5sYXRlbmNpZXMubG9jaywgZmxhZ3MpOwogfQogCisjaWZkZWYgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UKK3N0YXRpYyB2b2lkIHpmY3BfZnNmX3RyYWNlX2xhdGVuY3koc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmX3JlcSkKK3sKKwlzdHJ1Y3QgZnNmX3F1YWxfbGF0ZW5jeV9pbmZvICpsYXRfaW5mOworCXN0cnVjdCBzY3NpX2NtbmQgKnNjc2lfY21uZCA9IChzdHJ1Y3Qgc2NzaV9jbW5kICopZnNmX3JlcS0+ZGF0YTsKKwlzdHJ1Y3QgcmVxdWVzdCAqcmVxID0gc2NzaV9jbW5kLT5yZXF1ZXN0OworCXN0cnVjdCB6ZmNwX2Jsa19kcnZfZGF0YSB0cmFjZTsKKwlpbnQgdGlja3MgPSBmc2ZfcmVxLT5hZGFwdGVyLT50aW1lcl90aWNrczsKKworCXRyYWNlLmZsYWdzID0gMDsKKwl0cmFjZS5tYWdpYyA9IFpGQ1BfQkxLX0RSVl9EQVRBX01BR0lDOworCWlmIChmc2ZfcmVxLT5hZGFwdGVyLT5hZGFwdGVyX2ZlYXR1cmVzICYgRlNGX0ZFQVRVUkVfTUVBU1VSRU1FTlRfREFUQSkgeworCQl0cmFjZS5mbGFncyB8PSBaRkNQX0JMS19MQVRfVkFMSUQ7CisJCWxhdF9pbmYgPSAmZnNmX3JlcS0+cXRjYi0+cHJlZml4LnByb3Rfc3RhdHVzX3F1YWwubGF0ZW5jeV9pbmZvOworCQl0cmFjZS5jaGFubmVsX2xhdCA9IGxhdF9pbmYtPmNoYW5uZWxfbGF0ICogdGlja3M7CisJCXRyYWNlLmZhYnJpY19sYXQgPSBsYXRfaW5mLT5mYWJyaWNfbGF0ICogdGlja3M7CisJfQorCWlmIChmc2ZfcmVxLT5zdGF0dXMgJiBaRkNQX1NUQVRVU19GU0ZSRVFfRVJST1IpCisJCXRyYWNlLmZsYWdzIHw9IFpGQ1BfQkxLX1JFUV9FUlJPUjsKKwl0cmFjZS5pbmJfdXNhZ2UgPSBmc2ZfcmVxLT5xZGlvX2luYl91c2FnZTsKKwl0cmFjZS5vdXRiX3VzYWdlID0gZnNmX3JlcS0+cWRpb19vdXRiX3VzYWdlOworCisJYmxrX2FkZF9kcml2ZXJfZGF0YShyZXEtPnEsIHJlcSwgJnRyYWNlLCBzaXplb2YodHJhY2UpKTsKK30KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgemZjcF9mc2ZfdHJhY2VfbGF0ZW5jeShzdHJ1Y3QgemZjcF9mc2ZfcmVxICpmc2ZfcmVxKQoreworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHpmY3BfZnNmX3NlbmRfZmNwX2NvbW1hbmRfdGFza19oYW5kbGVyKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSkKIHsKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpzY3BudCA9IHJlcS0+ZGF0YTsKQEAgLTIxMTQsNiArMjE0Niw4IEBACiAJaWYgKHJlcS0+YWRhcHRlci0+YWRhcHRlcl9mZWF0dXJlcyAmIEZTRl9GRUFUVVJFX01FQVNVUkVNRU5UX0RBVEEpCiAJCXpmY3BfZnNmX3JlcV9sYXRlbmN5KHJlcSk7CiAKKwl6ZmNwX2ZzZl90cmFjZV9sYXRlbmN5KHJlcSk7CisKIAlpZiAodW5saWtlbHkoZmNwX3JzcF9pdS0+dmFsaWRpdHkuYml0cy5mY3BfcnNwX2xlbl92YWxpZCkpIHsKIAkJaWYgKGZjcF9yc3BfaW5mb1szXSA9PSBSU1BfQ09ERV9HT09EKQogCQkJc2V0X2hvc3RfYnl0ZShzY3BudCwgRElEX09LKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmggYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCmluZGV4IGZkM2E4ODcuLmZhMmEzMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaApAQCAtNDM5LDQgKzQzOSwxNiBAQAogCXU4IGxvZ1tGU0ZfUVRDQl9MT0dfU0laRV07CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAorc3RydWN0IHpmY3BfYmxrX2Rydl9kYXRhIHsKKyNkZWZpbmUgWkZDUF9CTEtfRFJWX0RBVEFfTUFHSUMJCQkweDEKKwl1MzIgbWFnaWM7CisjZGVmaW5lIFpGQ1BfQkxLX0xBVF9WQUxJRAkJCTB4MQorI2RlZmluZSBaRkNQX0JMS19SRVFfRVJST1IJCQkweDIKKwl1MTYgZmxhZ3M7CisJdTggaW5iX3VzYWdlOworCXU4IG91dGJfdXNhZ2U7CisJdTY0IGNoYW5uZWxfbGF0OworCXU2NCBmYWJyaWNfbGF0OworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKICNlbmRpZgkJCQkvKiBGU0ZfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3FkaW8uYwppbmRleCAzZTA1MDgwLi42NjQ3NTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3FkaW8uYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3FkaW8uYwpAQCAtMTE1LDYgKzExNSw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRhcHRlci0+cmVxX2xpc3RfbG9jaywgZmxhZ3MpOwogCiAJZnNmX3JlcS0+c2JhbF9yZXNwb25zZSA9IHNiYWxfaWR4OworCWZzZl9yZXEtPnFkaW9faW5iX3VzYWdlID0gYXRvbWljX3JlYWQoJmFkYXB0ZXItPnJlc3BfcS5jb3VudCk7CiAJemZjcF9mc2ZfcmVxX2NvbXBsZXRlKGZzZl9yZXEpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvY29uc3RhbnRzLmMgYi9kcml2ZXJzL3Njc2kvY29uc3RhbnRzLmMKaW5kZXggOTc4NWQ3My4uNDAwM2RlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2NvbnN0YW50cy5jCisrKyBiL2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYwpAQCAtMTM2NCw3ICsxMzY0LDggQEAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaG9zdGJ5dGVfdGFibGVbXT17CiAiRElEX09LIiwgIkRJRF9OT19DT05ORUNUIiwgIkRJRF9CVVNfQlVTWSIsICJESURfVElNRV9PVVQiLCAiRElEX0JBRF9UQVJHRVQiLAogIkRJRF9BQk9SVCIsICJESURfUEFSSVRZIiwgIkRJRF9FUlJPUiIsICJESURfUkVTRVQiLCAiRElEX0JBRF9JTlRSIiwKLSJESURfUEFTU1RIUk9VR0giLCAiRElEX1NPRlRfRVJST1IiLCAiRElEX0lNTV9SRVRSWSIsICJESURfUkVRVUVVRSJ9OworIkRJRF9QQVNTVEhST1VHSCIsICJESURfU09GVF9FUlJPUiIsICJESURfSU1NX1JFVFJZIiwgIkRJRF9SRVFVRVVFIiwKKyJESURfVFJBTlNQT1JUX0RJU1JVUFRFRCIsICJESURfVFJBTlNQT1JUX0ZBSUxGQVNUIiB9OwogI2RlZmluZSBOVU1fSE9TVEJZVEVfU1RSUyBBUlJBWV9TSVpFKGhvc3RieXRlX3RhYmxlKQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRyaXZlcmJ5dGVfdGFibGVbXT17CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9hbHVhLmMgYi9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9hbHVhLmMKaW5kZXggNzA4ZTQ3NS4uZTM1NmI0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfYWx1YS5jCisrKyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2FsdWEuYwpAQCAtMTA5LDcgKzEwOSw4IEBACiAJfQogCiAJcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfQkxPQ0tfUEM7Ci0JcnEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1QgfCBSRVFfTk9NRVJHRTsKKwlycS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVF9ERVYgfCBSRVFfRkFJTEZBU1RfVFJBTlNQT1JUIHwKKwkJCSBSRVFfRkFJTEZBU1RfRFJJVkVSOwogCXJxLT5yZXRyaWVzID0gQUxVQV9GQUlMT1ZFUl9SRVRSSUVTOwogCXJxLT50aW1lb3V0ID0gQUxVQV9GQUlMT1ZFUl9USU1FT1VUOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9lbWMuYyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2VtYy5jCmluZGV4IDhmNDU1NzAuLjBlNTcyZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2VtYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2VtYy5jCkBAIC0zMDMsNyArMzAzLDggQEAKIAogCXJxLT5jbWRbNF0gPSBsZW47CiAJcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfQkxPQ0tfUEM7Ci0JcnEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1Q7CisJcnEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1RfREVWIHwgUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCB8CisJCQkgUkVRX0ZBSUxGQVNUX0RSSVZFUjsKIAlycS0+dGltZW91dCA9IENMQVJJSU9OX1RJTUVPVVQ7CiAJcnEtPnJldHJpZXMgPSBDTEFSSUlPTl9SRVRSSUVTOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9ocF9zdy5jIGIvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfaHBfc3cuYwppbmRleCA1ZTkzYzg4Li45YWVjNGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9ocF9zdy5jCisrKyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2hwX3N3LmMKQEAgLTExMiw3ICsxMTIsOCBAQAogCQlyZXR1cm4gU0NTSV9ESF9SRVNfVEVNUF9VTkFWQUlMOwogCiAJcmVxLT5jbWRfdHlwZSA9IFJFUV9UWVBFX0JMT0NLX1BDOwotCXJlcS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVDsKKwlyZXEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1RfREVWIHwgUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCB8CisJCQkgIFJFUV9GQUlMRkFTVF9EUklWRVI7CiAJcmVxLT5jbWRfbGVuID0gQ09NTUFORF9TSVpFKFRFU1RfVU5JVF9SRUFEWSk7CiAJcmVxLT5jbWRbMF0gPSBURVNUX1VOSVRfUkVBRFk7CiAJcmVxLT50aW1lb3V0ID0gSFBfU1dfVElNRU9VVDsKQEAgLTIwNCw3ICsyMDUsOCBAQAogCQlyZXR1cm4gU0NTSV9ESF9SRVNfVEVNUF9VTkFWQUlMOwogCiAJcmVxLT5jbWRfdHlwZSA9IFJFUV9UWVBFX0JMT0NLX1BDOwotCXJlcS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVDsKKwlyZXEtPmNtZF9mbGFncyB8PSBSRVFfRkFJTEZBU1RfREVWIHwgUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCB8CisJCQkgIFJFUV9GQUlMRkFTVF9EUklWRVI7CiAJcmVxLT5jbWRfbGVuID0gQ09NTUFORF9TSVpFKFNUQVJUX1NUT1ApOwogCXJlcS0+Y21kWzBdID0gU1RBUlRfU1RPUDsKIAlyZXEtPmNtZFs0XSA9IDE7CS8qIFN0YXJ0IHNwaW4gY3ljbGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX3JkYWMuYyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX3JkYWMuYwppbmRleCA1MGJmOTVmLi5hNDNjM2VkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9yZGFjLmMKKysrIGIvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfcmRhYy5jCkBAIC0yMjYsNyArMjI2LDggQEAKIAl9CiAKIAlycS0+Y21kX3R5cGUgPSBSRVFfVFlQRV9CTE9DS19QQzsKLQlycS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVCB8IFJFUV9OT01FUkdFOworCXJxLT5jbWRfZmxhZ3MgfD0gUkVRX0ZBSUxGQVNUX0RFViB8IFJFUV9GQUlMRkFTVF9UUkFOU1BPUlQgfAorCQkJIFJFUV9GQUlMRkFTVF9EUklWRVI7CiAJcnEtPnJldHJpZXMgPSBSREFDX1JFVFJJRVM7CiAJcnEtPnRpbWVvdXQgPSBSREFDX1RJTUVPVVQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaS9pYm12ZmMuYyBiL2RyaXZlcnMvc2NzaS9pYm12c2NzaS9pYm12ZmMuYwppbmRleCA0ZTBiN2M4Li43NjUwNzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaWJtdnNjc2kvaWJtdmZjLmMKKysrIGIvZHJpdmVycy9zY3NpL2libXZzY3NpL2libXZmYy5jCkBAIC0yMDMxLDggKzIwMzEsNiBAQAogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAl9IGVsc2UKIAkJaWJtdmZjX2lzc3VlX2ZjX2hvc3RfbGlwKHNob3N0KTsKLQotCXNjc2lfdGFyZ2V0X3VuYmxvY2soJnJwb3J0LT5kZXYpOwogCUxFQVZFOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMgYi9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMKaW5kZXggMmEyZjAwOS4uZWQ2YzU0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5jCisrKyBiL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuYwpAQCAtNTIzLDIyICs1MjMsMjAgQEAKIH0KIAogLyoqCi0gKiBpc2NzaV9kYXRhX3JzcCAtIFNDU0kgRGF0YS1JbiBSZXNwb25zZSBwcm9jZXNzaW5nCisgKiBpc2NzaV9kYXRhX2luIC0gU0NTSSBEYXRhLUluIFJlc3BvbnNlIHByb2Nlc3NpbmcKICAqIEBjb25uOiBpc2NzaSBjb25uZWN0aW9uCiAgKiBAdGFzazogc2NzaSBjb21tYW5kIHRhc2sKICAqKi8KIHN0YXRpYyBpbnQKLWlzY3NpX2RhdGFfcnNwKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfdGFzayAqdGFzaykKK2lzY3NpX2RhdGFfaW4oc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV90YXNrICp0YXNrKQogewogCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOwogCXN0cnVjdCBpc2NzaV90Y3BfdGFzayAqdGNwX3Rhc2sgPSB0YXNrLT5kZF9kYXRhOwogCXN0cnVjdCBpc2NzaV9kYXRhX3JzcCAqcmhkciA9IChzdHJ1Y3QgaXNjc2lfZGF0YV9yc3AgKil0Y3BfY29ubi0+aW4uaGRyOwotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKLQlzdHJ1Y3Qgc2NzaV9jbW5kICpzYyA9IHRhc2stPnNjOwogCWludCBkYXRhc24gPSBiZTMyX3RvX2NwdShyaGRyLT5kYXRhc24pOwotCXVuc2lnbmVkIHRvdGFsX2luX2xlbmd0aCA9IHNjc2lfaW4oc2MpLT5sZW5ndGg7CisJdW5zaWduZWQgdG90YWxfaW5fbGVuZ3RoID0gc2NzaV9pbih0YXNrLT5zYyktPmxlbmd0aDsKIAotCWlzY3NpX3VwZGF0ZV9jbWRzbihzZXNzaW9uLCAoc3RydWN0IGlzY3NpX25vcGluKilyaGRyKTsKKwlpc2NzaV91cGRhdGVfY21kc24oY29ubi0+c2Vzc2lvbiwgKHN0cnVjdCBpc2NzaV9ub3Bpbiopcmhkcik7CiAJaWYgKHRjcF9jb25uLT5pbi5kYXRhbGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC01NTgsMjMgKzU1Niw2IEBACiAJCXJldHVybiBJU0NTSV9FUlJfREFUQV9PRkZTRVQ7CiAJfQogCi0JaWYgKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19EQVRBX1NUQVRVUykgewotCQlzYy0+cmVzdWx0ID0gKERJRF9PSyA8PCAxNikgfCByaGRyLT5jbWRfc3RhdHVzOwotCQljb25uLT5leHBfc3RhdHNuID0gYmUzMl90b19jcHUocmhkci0+c3RhdHNuKSArIDE7Ci0JCWlmIChyaGRyLT5mbGFncyAmIChJU0NTSV9GTEFHX0RBVEFfVU5ERVJGTE9XIHwKLQkJICAgICAgICAgICAgICAgICAgIElTQ1NJX0ZMQUdfREFUQV9PVkVSRkxPVykpIHsKLQkJCWludCByZXNfY291bnQgPSBiZTMyX3RvX2NwdShyaGRyLT5yZXNpZHVhbF9jb3VudCk7Ci0KLQkJCWlmIChyZXNfY291bnQgPiAwICYmCi0JCQkgICAgKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19DTURfT1ZFUkZMT1cgfHwKLQkJCSAgICAgcmVzX2NvdW50IDw9IHRvdGFsX2luX2xlbmd0aCkpCi0JCQkJc2NzaV9pbihzYyktPnJlc2lkID0gcmVzX2NvdW50OwotCQkJZWxzZQotCQkJCXNjLT5yZXN1bHQgPSAoRElEX0JBRF9UQVJHRVQgPDwgMTYpIHwKLQkJCQkJcmhkci0+Y21kX3N0YXR1czsKLQkJfQotCX0KLQogCWNvbm4tPmRhdGFpbl9wZHVzX2NudCsrOwogCXJldHVybiAwOwogfQpAQCAtNzc0LDcgKzc1NSw3IEBACiAJCWlmICghdGFzaykKIAkJCXJjID0gSVNDU0lfRVJSX0JBRF9JVFQ7CiAJCWVsc2UKLQkJCXJjID0gaXNjc2lfZGF0YV9yc3AoY29ubiwgdGFzayk7CisJCQlyYyA9IGlzY3NpX2RhdGFfaW4oY29ubiwgdGFzayk7CiAJCWlmIChyYykgewogCQkJc3Bpbl91bmxvY2soJmNvbm4tPnNlc3Npb24tPmxvY2spOwogCQkJYnJlYWs7CkBAIC05OTgsNyArOTc5LDcgQEAKIAogZXJyb3I6CiAJZGVidWdfdGNwKCJFcnJvciByZWNlaXZpbmcgUERVLCBlcnJubz0lZFxuIiwgcmMpOwotCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOworCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCByYyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExMTcsOCArMTA5OCwxMCBAQAogCiAJd2hpbGUgKDEpIHsKIAkJcmMgPSBpc2NzaV90Y3BfeG1pdF9zZWdtZW50KHRjcF9jb25uLCBzZWdtZW50KTsKLQkJaWYgKHJjIDwgMCkKKwkJaWYgKHJjIDwgMCkgeworCQkJcmMgPSBJU0NTSV9FUlJfWE1JVF9GQUlMRUQ7CiAJCQlnb3RvIGVycm9yOworCQl9CiAJCWlmIChyYyA9PSAwKQogCQkJYnJlYWs7CiAKQEAgLTExMjcsNyArMTExMCw3IEBACiAJCWlmIChzZWdtZW50LT50b3RhbF9jb3BpZWQgPj0gc2VnbWVudC0+dG90YWxfc2l6ZSkgewogCQkJaWYgKHNlZ21lbnQtPmRvbmUgIT0gTlVMTCkgewogCQkJCXJjID0gc2VnbWVudC0+ZG9uZSh0Y3BfY29ubiwgc2VnbWVudCk7Ci0JCQkJaWYgKHJjIDwgMCkKKwkJCQlpZiAocmMgIT0gMCkKIAkJCQkJZ290byBlcnJvcjsKIAkJCX0KIAkJfQpAQCAtMTE0Miw4ICsxMTI1LDggQEAKIAkvKiBUcmFuc21pdCBlcnJvci4gV2UgY291bGQgaW5pdGlhdGUgZXJyb3IgcmVjb3ZlcnkKIAkgKiBoZXJlLiAqLwogCWRlYnVnX3RjcCgiRXJyb3Igc2VuZGluZyBQRFUsIGVycm5vPSVkXG4iLCByYyk7Ci0JaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7Ci0JcmV0dXJuIHJjOworCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCByYyk7CisJcmV0dXJuIC1FSU87CiB9CiAKIC8qKgpAQCAtMTkwNCw2ICsxODg3LDcgQEAKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGlzY3NpX3Nlc3Npb25fdG9fc2hvc3QoY2xzX3Nlc3Npb24pOwogCiAJaXNjc2lfcjJ0cG9vbF9mcmVlKGNsc19zZXNzaW9uLT5kZF9kYXRhKTsKKwlpc2NzaV9zZXNzaW9uX3RlYXJkb3duKGNsc19zZXNzaW9uKTsKIAogCWlzY3NpX2hvc3RfcmVtb3ZlKHNob3N0KTsKIAlpc2NzaV9ob3N0X2ZyZWUoc2hvc3QpOwpAQCAtMTkyNyw3ICsxOTExLDcgQEAKIAkuY21kX3Blcl9sdW4JCT0gSVNDU0lfREVGX0NNRF9QRVJfTFVOLAogCS5laF9hYm9ydF9oYW5kbGVyICAgICAgID0gaXNjc2lfZWhfYWJvcnQsCiAJLmVoX2RldmljZV9yZXNldF9oYW5kbGVyPSBpc2NzaV9laF9kZXZpY2VfcmVzZXQsCi0JLmVoX2hvc3RfcmVzZXRfaGFuZGxlcgk9IGlzY3NpX2VoX2hvc3RfcmVzZXQsCisJLmVoX3RhcmdldF9yZXNldF9oYW5kbGVyPSBpc2NzaV9laF90YXJnZXRfcmVzZXQsCiAJLnVzZV9jbHVzdGVyaW5nICAgICAgICAgPSBESVNBQkxFX0NMVVNURVJJTkcsCiAJLnNsYXZlX2NvbmZpZ3VyZSAgICAgICAgPSBpc2NzaV90Y3Bfc2xhdmVfY29uZmlndXJlLAogCS5wcm9jX25hbWUJCT0gImlzY3NpX3RjcCIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYyBiL2RyaXZlcnMvc2NzaS9saWJpc2NzaS5jCmluZGV4IGRhN2I2N2QuLjgwMWM3Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJpc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9saWJpc2NzaS5jCkBAIC00MDQsMTEgKzQwNCw2IEBACiAJCWNvbm4tPnNlc3Npb24tPnF1ZXVlZF9jbWRzbi0tOwogCWVsc2UKIAkJY29ubi0+c2Vzc2lvbi0+dHQtPmNsZWFudXBfdGFzayhjb25uLCB0YXNrKTsKLQkvKgotCSAqIENoZWNrIGlmIGNsZWFudXBfdGFzayBkcm9wcGVkIHRoZSBsb2NrIGFuZCB0aGUgY29tbWFuZCBjb21wbGV0ZWQsCi0JICovCi0JaWYgKCF0YXNrLT5zYykKLQkJcmV0dXJuOwogCiAJc2MtPnJlc3VsdCA9IGVycjsKIAlpZiAoIXNjc2lfYmlkaV9jbW5kKHNjKSkKQEAgLTYzMyw2ICs2MjgsNDAgQEAKIAlfX2lzY3NpX3B1dF90YXNrKHRhc2spOwogfQogCisvKioKKyAqIGlzY3NpX2RhdGFfaW5fcnNwIC0gU0NTSSBEYXRhLUluIFJlc3BvbnNlIHByb2Nlc3NpbmcKKyAqIEBjb25uOiBpc2NzaSBjb25uZWN0aW9uCisgKiBAaGRyOiAgaXNjc2kgcGR1CisgKiBAdGFzazogc2NzaSBjb21tYW5kIHRhc2sKKyAqKi8KK3N0YXRpYyB2b2lkCitpc2NzaV9kYXRhX2luX3JzcChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAorCQkgIHN0cnVjdCBpc2NzaV90YXNrICp0YXNrKQoreworCXN0cnVjdCBpc2NzaV9kYXRhX3JzcCAqcmhkciA9IChzdHJ1Y3QgaXNjc2lfZGF0YV9yc3AgKiloZHI7CisJc3RydWN0IHNjc2lfY21uZCAqc2MgPSB0YXNrLT5zYzsKKworCWlmICghKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19EQVRBX1NUQVRVUykpCisJCXJldHVybjsKKworCXNjLT5yZXN1bHQgPSAoRElEX09LIDw8IDE2KSB8IHJoZHItPmNtZF9zdGF0dXM7CisJY29ubi0+ZXhwX3N0YXRzbiA9IGJlMzJfdG9fY3B1KHJoZHItPnN0YXRzbikgKyAxOworCWlmIChyaGRyLT5mbGFncyAmIChJU0NTSV9GTEFHX0RBVEFfVU5ERVJGTE9XIHwKKwkgICAgICAgICAgICAgICAgICAgSVNDU0lfRkxBR19EQVRBX09WRVJGTE9XKSkgeworCQlpbnQgcmVzX2NvdW50ID0gYmUzMl90b19jcHUocmhkci0+cmVzaWR1YWxfY291bnQpOworCisJCWlmIChyZXNfY291bnQgPiAwICYmCisJCSAgICAocmhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0NNRF9PVkVSRkxPVyB8fAorCQkgICAgIHJlc19jb3VudCA8PSBzY3NpX2luKHNjKS0+bGVuZ3RoKSkKKwkJCXNjc2lfaW4oc2MpLT5yZXNpZCA9IHJlc19jb3VudDsKKwkJZWxzZQorCQkJc2MtPnJlc3VsdCA9IChESURfQkFEX1RBUkdFVCA8PCAxNikgfCByaGRyLT5jbWRfc3RhdHVzOworCX0KKworCWNvbm4tPnNjc2lyc3BfcGR1c19jbnQrKzsKKwlfX2lzY3NpX3B1dF90YXNrKHRhc2spOworfQorCiBzdGF0aWMgdm9pZCBpc2NzaV90bWZfcnNwKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfaGRyICpoZHIpCiB7CiAJc3RydWN0IGlzY3NpX3RtX3JzcCAqdG1mID0gKHN0cnVjdCBpc2NzaV90bV9yc3AgKiloZHI7CkBAIC04MTgsMTIgKzg0Nyw3IEBACiAJCWlzY3NpX3Njc2lfY21kX3JzcChjb25uLCBoZHIsIHRhc2ssIGRhdGEsIGRhdGFsZW4pOwogCQlicmVhazsKIAljYXNlIElTQ1NJX09QX1NDU0lfREFUQV9JTjoKLQkJaWYgKGhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0RBVEFfU1RBVFVTKSB7Ci0JCQljb25uLT5zY3NpcnNwX3BkdXNfY250Kys7Ci0JCQlpc2NzaV91cGRhdGVfY21kc24oc2Vzc2lvbiwKLQkJCQkJICAgKHN0cnVjdCBpc2NzaV9ub3BpbiopIGhkcik7Ci0JCQlfX2lzY3NpX3B1dF90YXNrKHRhc2spOwotCQl9CisJCWlzY3NpX2RhdGFfaW5fcnNwKGNvbm4sIGhkciwgdGFzayk7CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfT1BfTE9HT1VUX1JTUDoKIAkJaXNjc2lfdXBkYXRlX2NtZHNuKHNlc3Npb24sIChzdHJ1Y3QgaXNjc2lfbm9waW4qKWhkcik7CkBAIC05NTQsNiArOTc4LDM4IEBACiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9pdHRfdG9fY3Rhc2spOwogCit2b2lkIGlzY3NpX3Nlc3Npb25fZmFpbHVyZShzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uLAorCQkJICAgZW51bSBpc2NzaV9lcnIgZXJyKQoreworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY2xzX3Nlc3Npb24tPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm47CisJc3RydWN0IGRldmljZSAqZGV2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2Vzc2lvbi0+bG9jaywgZmxhZ3MpOworCWNvbm4gPSBzZXNzaW9uLT5sZWFkY29ubjsKKwlpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfVEVSTUlOQVRFIHx8ICFjb25uKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNlc3Npb24tPmxvY2ssIGZsYWdzKTsKKwkJcmV0dXJuOworCX0KKworCWRldiA9IGdldF9kZXZpY2UoJmNvbm4tPmNsc19jb25uLT5kZXYpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNlc3Npb24tPmxvY2ssIGZsYWdzKTsKKwlpZiAoIWRldikKKwkgICAgICAgIHJldHVybjsKKwkvKgorCSAqIGlmIHRoZSBob3N0IGlzIGJlaW5nIHJlbW92ZWQgYnlwYXNzIHRoZSBjb25uZWN0aW9uCisJICogcmVjb3ZlcnkgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8ga2lsbAorCSAqIHRoZSBzZXNzaW9uLgorCSAqLworCWlmIChlcnIgPT0gSVNDU0lfRVJSX0lOVkFMSURfSE9TVCkKKwkJaXNjc2lfY29ubl9lcnJvcl9ldmVudChjb25uLT5jbHNfY29ubiwgZXJyKTsKKwllbHNlCisJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBlcnIpOworCXB1dF9kZXZpY2UoZGV2KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Nlc3Npb25fZmFpbHVyZSk7CisKIHZvaWQgaXNjc2lfY29ubl9mYWlsdXJlKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBlbnVtIGlzY3NpX2VyciBlcnIpCiB7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwpAQCAtOTY4LDkgKzEwMjQsMTAgQEAKIAlpZiAoY29ubi0+c3RvcF9zdGFnZSA9PSAwKQogCQlzZXNzaW9uLT5zdGF0ZSA9IElTQ1NJX1NUQVRFX0ZBSUxFRDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZXNzaW9uLT5sb2NrLCBmbGFncyk7CisKIAlzZXRfYml0KElTQ1NJX1NVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF90eCk7CiAJc2V0X2JpdChJU0NTSV9TVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfcngpOwotCWlzY3NpX2Nvbm5fZXJyb3IoY29ubi0+Y2xzX2Nvbm4sIGVycik7CisJaXNjc2lfY29ubl9lcnJvcl9ldmVudChjb25uLT5jbHNfY29ubiwgZXJyKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2Nvbm5fZmFpbHVyZSk7CiAKQEAgLTExOTQsMTUgKzEyNTEsMTMgQEAKIAkJc3dpdGNoIChzZXNzaW9uLT5zdGF0ZSkgewogCQljYXNlIElTQ1NJX1NUQVRFX0lOX1JFQ09WRVJZOgogCQkJcmVhc29uID0gRkFJTFVSRV9TRVNTSU9OX0lOX1JFQ09WRVJZOwotCQkJc2MtPnJlc3VsdCA9IERJRF9JTU1fUkVUUlkgPDwgMTY7Ci0JCQlicmVhazsKKwkJCWdvdG8gcmVqZWN0OwogCQljYXNlIElTQ1NJX1NUQVRFX0xPR0dJTkdfT1VUOgogCQkJcmVhc29uID0gRkFJTFVSRV9TRVNTSU9OX0xPR0dJTkdfT1VUOwotCQkJc2MtPnJlc3VsdCA9IERJRF9JTU1fUkVUUlkgPDwgMTY7Ci0JCQlicmVhazsKKwkJCWdvdG8gcmVqZWN0OwogCQljYXNlIElTQ1NJX1NUQVRFX1JFQ09WRVJZX0ZBSUxFRDoKIAkJCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9SRUNPVkVSWV9USU1FT1VUOwotCQkJc2MtPnJlc3VsdCA9IERJRF9OT19DT05ORUNUIDw8IDE2OworCQkJc2MtPnJlc3VsdCA9IERJRF9UUkFOU1BPUlRfRkFJTEZBU1QgPDwgMTY7CiAJCQlicmVhazsKIAkJY2FzZSBJU0NTSV9TVEFURV9URVJNSU5BVEU6CiAJCQlyZWFzb24gPSBGQUlMVVJFX1NFU1NJT05fVEVSTUlOQVRFOwpAQCAtMTI2Nyw3ICsxMzIyLDcgQEAKIAlzcGluX3VubG9jaygmc2Vzc2lvbi0+bG9jayk7CiAJZGVidWdfc2NzaSgiY21kIDB4JXggcmVqZWN0ZWQgKCVkKVxuIiwgc2MtPmNtbmRbMF0sIHJlYXNvbik7CiAJc3Bpbl9sb2NrKGhvc3QtPmhvc3RfbG9jayk7Ci0JcmV0dXJuIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1k7CisJcmV0dXJuIFNDU0lfTUxRVUVVRV9UQVJHRVRfQlVTWTsKIAogZmF1bHQ6CiAJc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOwpAQCAtMTMwNyw3ICsxMzYyLDcgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Nlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQpOwogCi1pbnQgaXNjc2lfZWhfaG9zdF9yZXNldChzdHJ1Y3Qgc2NzaV9jbW5kICpzYykKK2ludCBpc2NzaV9laF90YXJnZXRfcmVzZXQoc3RydWN0IHNjc2lfY21uZCAqc2MpCiB7CiAJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbjsKIAlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbjsKQEAgLTEzMjEsNyArMTM3Niw3IEBACiAJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKIAlpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfVEVSTUlOQVRFKSB7CiBmYWlsZWQ6Ci0JCWRlYnVnX3Njc2koImZhaWxpbmcgaG9zdCByZXNldDogc2Vzc2lvbiB0ZXJtaW5hdGVkICIKKwkJZGVidWdfc2NzaSgiZmFpbGluZyB0YXJnZXQgcmVzZXQ6IHNlc3Npb24gdGVybWluYXRlZCAiCiAJCQkgICAiW0NJRCAlZCBhZ2UgJWRdXG4iLCBjb25uLT5pZCwgc2Vzc2lvbi0+YWdlKTsKIAkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwogCQltdXRleF91bmxvY2soJnNlc3Npb24tPmVoX211dGV4KTsKQEAgLTEzMzYsNyArMTM5MSw3IEBACiAJICovCiAJaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CiAKLQlkZWJ1Z19zY3NpKCJpc2NzaV9laF9ob3N0X3Jlc2V0IHdhaXQgZm9yIHJlbG9naW5cbiIpOworCWRlYnVnX3Njc2koImlzY3NpX2VoX3RhcmdldF9yZXNldCB3YWl0IGZvciByZWxvZ2luXG4iKTsKIAl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoY29ubi0+ZWh3YWl0LAogCQkJCSBzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9URVJNSU5BVEUgfHwKIAkJCQkgc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOIHx8CkBAIC0xMzQ4LDE0ICsxNDAzLDE0IEBACiAJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKIAlpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOKQogCQlpc2NzaV9zZXNzaW9uX3ByaW50ayhLRVJOX0lORk8sIHNlc3Npb24sCi0JCQkJICAgICAiaG9zdCByZXNldCBzdWNjZWVkZWRcbiIpOworCQkJCSAgICAgInRhcmdldCByZXNldCBzdWNjZWVkZWRcbiIpOwogCWVsc2UKIAkJZ290byBmYWlsZWQ7CiAJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwogCW11dGV4X3VubG9jaygmc2Vzc2lvbi0+ZWhfbXV0ZXgpOwogCXJldHVybiBTVUNDRVNTOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfZWhfaG9zdF9yZXNldCk7CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9laF90YXJnZXRfcmVzZXQpOwogCiBzdGF0aWMgdm9pZCBpc2NzaV90bWZfdGltZWRvdXQodW5zaWduZWQgbG9uZyBkYXRhKQogewpAQCAtMTc2OSwxMCArMTgyNCwxMCBAQAogCiAJaXNjc2lfc3VzcGVuZF90eChjb25uKTsKIAotCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7CisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKIAlmYWlsX2FsbF9jb21tYW5kcyhjb25uLCBzYy0+ZGV2aWNlLT5sdW4sIERJRF9FUlJPUik7CiAJY29ubi0+dG1mX3N0YXRlID0gVE1GX0lOSVRJQUw7Ci0Jc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOworCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKIAogCWlzY3NpX3N0YXJ0X3R4KGNvbm4pOwogCWdvdG8gZG9uZTsKQEAgLTE4NzgsNiArMTkzMyw3IEBACiAJCQkJICAgaW50IGRkX2RhdGFfc2l6ZSwgdWludDE2X3QgcWRlcHRoKQogewogCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0OworCXN0cnVjdCBpc2NzaV9ob3N0ICppaG9zdDsKIAogCXNob3N0ID0gc2NzaV9ob3N0X2FsbG9jKHNodCwgc2l6ZW9mKHN0cnVjdCBpc2NzaV9ob3N0KSArIGRkX2RhdGFfc2l6ZSk7CiAJaWYgKCFzaG9zdCkKQEAgLTE4OTIsMjIgKzE5NDgsNDMgQEAKIAkJcWRlcHRoID0gSVNDU0lfREVGX0NNRF9QRVJfTFVOOwogCX0KIAlzaG9zdC0+Y21kX3Blcl9sdW4gPSBxZGVwdGg7CisKKwlpaG9zdCA9IHNob3N0X3ByaXYoc2hvc3QpOworCXNwaW5fbG9ja19pbml0KCZpaG9zdC0+bG9jayk7CisJaWhvc3QtPnN0YXRlID0gSVNDU0lfSE9TVF9TRVRVUDsKKwlpaG9zdC0+bnVtX3Nlc3Npb25zID0gMDsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpaG9zdC0+c2Vzc2lvbl9yZW1vdmFsX3dxKTsKIAlyZXR1cm4gc2hvc3Q7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9ob3N0X2FsbG9jKTsKIAorc3RhdGljIHZvaWQgaXNjc2lfbm90aWZ5X2hvc3RfcmVtb3ZlZChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uKQoreworCWlzY3NpX3Nlc3Npb25fZmFpbHVyZShjbHNfc2Vzc2lvbiwgSVNDU0lfRVJSX0lOVkFMSURfSE9TVCk7Cit9CisKIC8qKgogICogaXNjc2lfaG9zdF9yZW1vdmUgLSByZW1vdmUgaG9zdCBhbmQgc2Vzc2lvbnMKICAqIEBzaG9zdDogc2NzaSBob3N0CiAgKgotICogVGhpcyB3aWxsIGFsc28gcmVtb3ZlIGFueSBzZXNzaW9ucyBhdHRhY2hlZCB0byB0aGUgaG9zdCwgYnV0IGlmIHVzZXJzcGFjZQotICogaXMgbWFuYWdpbmcgdGhlIHNlc3Npb24gYXQgdGhlIHNhbWUgdGltZSB0aGlzIHdpbGwgYnJlYWsuIFRPRE86IGFkZAotICogcmVmY291bnRpbmcgdG8gdGhlIG5ldGxpbmsgaXNjc2kgaW50ZXJmYWNlIHNvIGEgcm1tb2Qgb3IgaG9zdCBob3QgdW5wbHVnCi0gKiBkb2VzIG5vdCByZW1vdmUgdGhlIG1lbW9yeSBmcm9tIHVuZGVyIHVzLgorICogSWYgdGhlcmUgYXJlIGFueSBzZXNzaW9ucyBsZWZ0LCB0aGlzIHdpbGwgaW5pdGlhdGUgdGhlIHJlbW92YWwgYW5kIHdhaXQKKyAqIGZvciB0aGUgY29tcGxldGlvbi4KICAqLwogdm9pZCBpc2NzaV9ob3N0X3JlbW92ZShzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKIHsKLQlpc2NzaV9ob3N0X2Zvcl9lYWNoX3Nlc3Npb24oc2hvc3QsIGlzY3NpX3Nlc3Npb25fdGVhcmRvd24pOworCXN0cnVjdCBpc2NzaV9ob3N0ICppaG9zdCA9IHNob3N0X3ByaXYoc2hvc3QpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaWhvc3QtPmxvY2ssIGZsYWdzKTsKKwlpaG9zdC0+c3RhdGUgPSBJU0NTSV9IT1NUX1JFTU9WRUQ7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWhvc3QtPmxvY2ssIGZsYWdzKTsKKworCWlzY3NpX2hvc3RfZm9yX2VhY2hfc2Vzc2lvbihzaG9zdCwgaXNjc2lfbm90aWZ5X2hvc3RfcmVtb3ZlZCk7CisJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGlob3N0LT5zZXNzaW9uX3JlbW92YWxfd3EsCisJCQkJIGlob3N0LT5udW1fc2Vzc2lvbnMgPT0gMCk7CisJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQorCQlmbHVzaF9zaWduYWxzKGN1cnJlbnQpOworCiAJc2NzaV9yZW1vdmVfaG9zdChzaG9zdCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9ob3N0X3JlbW92ZSk7CkBAIC0xOTIzLDYgKzIwMDAsMjcgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2hvc3RfZnJlZSk7CiAKK3N0YXRpYyB2b2lkIGlzY3NpX2hvc3RfZGVjX3Nlc3Npb25fY250KHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KQoreworCXN0cnVjdCBpc2NzaV9ob3N0ICppaG9zdCA9IHNob3N0X3ByaXYoc2hvc3QpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzaG9zdCA9IHNjc2lfaG9zdF9nZXQoc2hvc3QpOworCWlmICghc2hvc3QpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJJbnZhbGlkIHN0YXRlLiBDYW5ub3Qgbm90aWZ5IGhvc3QgcmVtb3ZhbCAiCisJCSAgICAgICJvZiBzZXNzaW9uIHRlYXJkb3duIGV2ZW50IGJlY2F1c2UgaG9zdCBhbHJlYWR5ICIKKwkJICAgICAgInJlbW92ZWQuXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZpaG9zdC0+bG9jaywgZmxhZ3MpOworCWlob3N0LT5udW1fc2Vzc2lvbnMtLTsKKwlpZiAoaWhvc3QtPm51bV9zZXNzaW9ucyA9PSAwKQorCQl3YWtlX3VwKCZpaG9zdC0+c2Vzc2lvbl9yZW1vdmFsX3dxKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpaG9zdC0+bG9jaywgZmxhZ3MpOworCXNjc2lfaG9zdF9wdXQoc2hvc3QpOworfQorCiAvKioKICAqIGlzY3NpX3Nlc3Npb25fc2V0dXAgLSBjcmVhdGUgaXNjc2kgY2xzIHNlc3Npb24gYW5kIGhvc3QgYW5kIHNlc3Npb24KICAqIEBpc2NzaXQ6IGlzY3NpIHRyYW5zcG9ydCB0ZW1wbGF0ZQpAQCAtMTk0Myw5ICsyMDQxLDE5IEBACiAJCSAgICB1aW50MTZfdCBjbWRzX21heCwgaW50IGNtZF90YXNrX3NpemUsCiAJCSAgICB1aW50MzJfdCBpbml0aWFsX2NtZHNuLCB1bnNpZ25lZCBpbnQgaWQpCiB7CisJc3RydWN0IGlzY3NpX2hvc3QgKmlob3N0ID0gc2hvc3RfcHJpdihzaG9zdCk7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb247CiAJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbjsKIAlpbnQgY21kX2ksIHNjc2lfY21kcywgdG90YWxfY21kcyA9IGNtZHNfbWF4OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaWhvc3QtPmxvY2ssIGZsYWdzKTsKKwlpZiAoaWhvc3QtPnN0YXRlID09IElTQ1NJX0hPU1RfUkVNT1ZFRCkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpaG9zdC0+bG9jaywgZmxhZ3MpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaWhvc3QtPm51bV9zZXNzaW9ucysrOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlob3N0LT5sb2NrLCBmbGFncyk7CiAKIAlpZiAoIXRvdGFsX2NtZHMpCiAJCXRvdGFsX2NtZHMgPSBJU0NTSV9ERUZfWE1JVF9DTURTX01BWDsKQEAgLTE5NTgsNyArMjA2Niw3IEBACiAJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGludmFsaWQgY2FuX3F1ZXVlIG9mICVkLiBjYW5fcXVldWUgIgogCQkgICAgICAgIm11c3QgYmUgYSBwb3dlciBvZiB0d28gdGhhdCBpcyBhdCBsZWFzdCAlZC5cbiIsCiAJCSAgICAgICB0b3RhbF9jbWRzLCBJU0NTSV9UT1RBTF9DTURTX01JTik7Ci0JCXJldHVybiBOVUxMOworCQlnb3RvIGRlY19zZXNzaW9uX2NvdW50OwogCX0KIAogCWlmICh0b3RhbF9jbWRzID4gSVNDU0lfVE9UQUxfQ01EU19NQVgpIHsKQEAgLTE5ODIsNyArMjA5MCw3IEBACiAJY2xzX3Nlc3Npb24gPSBpc2NzaV9hbGxvY19zZXNzaW9uKHNob3N0LCBpc2NzaXQsCiAJCQkJCSAgc2l6ZW9mKHN0cnVjdCBpc2NzaV9zZXNzaW9uKSk7CiAJaWYgKCFjbHNfc2Vzc2lvbikKLQkJcmV0dXJuIE5VTEw7CisJCWdvdG8gZGVjX3Nlc3Npb25fY291bnQ7CiAJc2Vzc2lvbiA9IGNsc19zZXNzaW9uLT5kZF9kYXRhOwogCXNlc3Npb24tPmNsc19zZXNzaW9uID0gY2xzX3Nlc3Npb247CiAJc2Vzc2lvbi0+aG9zdCA9IHNob3N0OwpAQCAtMjAyMSw2ICsyMTI5LDcgQEAKIAogCWlmIChpc2NzaV9hZGRfc2Vzc2lvbihjbHNfc2Vzc2lvbiwgaWQpKQogCQlnb3RvIGNsc19zZXNzaW9uX2ZhaWw7CisKIAlyZXR1cm4gY2xzX3Nlc3Npb247CiAKIGNsc19zZXNzaW9uX2ZhaWw6CkBAIC0yMDI5LDYgKzIxMzgsOCBAQAogCWlzY3NpX3Bvb2xfZnJlZSgmc2Vzc2lvbi0+Y21kcG9vbCk7CiBjbWRwb29sX2FsbG9jX2ZhaWw6CiAJaXNjc2lfZnJlZV9zZXNzaW9uKGNsc19zZXNzaW9uKTsKK2RlY19zZXNzaW9uX2NvdW50OgorCWlzY3NpX2hvc3RfZGVjX3Nlc3Npb25fY250KHNob3N0KTsKIAlyZXR1cm4gTlVMTDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Nlc3Npb25fc2V0dXApOwpAQCAtMjA0NCw2ICsyMTU1LDcgQEAKIHsKIAlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNsc19zZXNzaW9uLT5kZF9kYXRhOwogCXN0cnVjdCBtb2R1bGUgKm93bmVyID0gY2xzX3Nlc3Npb24tPnRyYW5zcG9ydC0+b3duZXI7CisJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBzZXNzaW9uLT5ob3N0OwogCiAJaXNjc2lfcG9vbF9mcmVlKCZzZXNzaW9uLT5jbWRwb29sKTsKIApAQCAtMjA1Niw2ICsyMTY4LDcgQEAKIAlrZnJlZShzZXNzaW9uLT5pZmFjZW5hbWUpOwogCiAJaXNjc2lfZGVzdHJveV9zZXNzaW9uKGNsc19zZXNzaW9uKTsKKwlpc2NzaV9ob3N0X2RlY19zZXNzaW9uX2NudChzaG9zdCk7CiAJbW9kdWxlX3B1dChvd25lcik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9zZXNzaW9uX3RlYXJkb3duKTsKQEAgLTIzMzUsOCArMjQ0OCwxMCBAQAogCSAqIGZsdXNoIHF1ZXVlcy4KIAkgKi8KIAlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCWZhaWxfYWxsX2NvbW1hbmRzKGNvbm4sIC0xLAotCQkJU1RPUF9DT05OX1JFQ09WRVIgPyBESURfQlVTX0JVU1kgOiBESURfRVJST1IpOworCWlmIChmbGFnID09IFNUT1BfQ09OTl9SRUNPVkVSKQorCQlmYWlsX2FsbF9jb21tYW5kcyhjb25uLCAtMSwgRElEX1RSQU5TUE9SVF9ESVNSVVBURUQpOworCWVsc2UKKwkJZmFpbF9hbGxfY29tbWFuZHMoY29ubiwgLTEsIERJRF9FUlJPUik7CiAJZmx1c2hfY29udHJvbF9xdWV1ZXMoc2Vzc2lvbiwgY29ubik7CiAJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwogCW11dGV4X3VubG9jaygmc2Vzc2lvbi0+ZWhfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmYy5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmYy5oCmluZGV4IGUwZTAxOGQuLjYwYTllNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmMuaAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjLmgKQEAgLTM0LDcgKzM0LDE0IEBACiAjZGVmaW5lIExQRkNfSU9DQl9MSVNUX0NOVAkyMjUwCS8qIGxpc3Qgb2YgSU9DQnMgZm9yIGZhc3QtcGF0aCB1c2FnZS4gKi8KICNkZWZpbmUgTFBGQ19RX1JBTVBfVVBfSU5URVJWQUwgMTIwICAgICAvKiBsdW4gcV9kZXB0aCByYW1wIHVwIGludGVydmFsICovCiAjZGVmaW5lIExQRkNfVk5BTUVfTEVOCQkxMDAJLyogdnBvcnQgc3ltYm9saWMgbmFtZSBsZW5ndGggKi8KKyNkZWZpbmUgTFBGQ19UR1RRX0lOVEVSVkFMCTQwMDAwCS8qIE1pbiBhbW91bnQgb2YgdGltZSBiZXR3ZWVuIHRndAorCQkJCQkgICBxdWV1ZSBkZXB0aCBjaGFuZ2UgaW4gbWlsbGlzZWNzICovCisjZGVmaW5lIExQRkNfVEdUUV9SQU1QVVBfUENFTlQJNQkvKiBUYXJnZXQgcXVldWUgcmFtcHVwIGluIHBlcmNlbnRhZ2UgKi8KKyNkZWZpbmUgTFBGQ19NSU5fVEdUX1FERVBUSAkxMDAKKyNkZWZpbmUgTFBGQ19NQVhfVEdUX1FERVBUSAkweEZGRkYKIAorI2RlZmluZSAgTFBGQ19NQVhfQlVDS0VUX0NPVU5UIDIwCS8qIE1heGltdW0gbm8uIG9mIGJ1Y2tldHMgZm9yIHN0YXQgZGF0YQorCQkJCQkgICBjb2xsZWN0aW9uLiAqLwogLyoKICAqIEZvbGxvd2luZyB0aW1lIGludGVydmFscyBhcmUgdXNlZCBvZiBhZGp1c3RpbmcgU0NTSSBkZXZpY2UKICAqIHF1ZXVlIGRlcHRocyB3aGVuIHRoZXJlIGFyZSBkcml2ZXIgcmVzb3VyY2UgZXJyb3Igb3IgRmlybXdhcmUKQEAgLTQ5LDYgKzU2LDkgQEAKICNkZWZpbmUgTFBGQ19IQl9NQk9YX0lOVEVSVkFMICAgNQkvKiBIZWFydCBiZWF0IGludGVydmFsIGluIHNlY29uZHMuICovCiAjZGVmaW5lIExQRkNfSEJfTUJPWF9USU1FT1VUICAgIDMwCS8qIEhlYXJ0IGJlYXQgdGltZW91dCAgaW4gc2Vjb25kcy4gKi8KIAorLyogRXJyb3IgQXR0ZW50aW9uIGV2ZW50IHBvbGxpbmcgaW50ZXJ2YWwgKi8KKyNkZWZpbmUgTFBGQ19FUkFUVF9QT0xMX0lOVEVSVkFMCTUgLyogRUFUVCBwb2xsIGludGVydmFsIGluIHNlY29uZHMgKi8KKwogLyogRGVmaW5lIG1hY3JvcyBmb3IgNjQgYml0IHN1cHBvcnQgKi8KICNkZWZpbmUgcHV0UGFkZHJMb3coYWRkcikgICAgKCh1aW50MzJfdCkgKDB4ZmZmZmZmZmYgJiAodTY0KShhZGRyKSkpCiAjZGVmaW5lIHB1dFBhZGRySGlnaChhZGRyKSAgICgodWludDMyX3QpICgweGZmZmZmZmZmICYgKCgodTY0KShhZGRyKSk+PjMyKSkpCkBAIC02MCw2ICs3MCw5IEBACiAKICNkZWZpbmUgTUFYX0hCQUVWVAkzMgogCisvKiBOdW1iZXIgb2YgTVNJLVggdmVjdG9ycyB0aGUgZHJpdmVyIHVzZXMgKi8KKyNkZWZpbmUgTFBGQ19NU0lYX1ZFQ1RPUlMJMgorCiAvKiBscGZjIHdhaXQgZXZlbnQgZGF0YSByZWFkeSBmbGFnICovCiAjZGVmaW5lIExQRkNfREFUQV9SRUFEWQkJKDE8PDApCiAKQEAgLTM1Nyw2ICszNzAsNyBAQAogCXVpbnQzMl90IGNmZ19sb2dfdmVyYm9zZTsKIAl1aW50MzJfdCBjZmdfbWF4X2x1bnM7CiAJdWludDMyX3QgY2ZnX2VuYWJsZV9kYV9pZDsKKwl1aW50MzJfdCBjZmdfbWF4X3Njc2ljbXBsX3RpbWU7CiAKIAl1aW50MzJfdCBkZXZfbG9zc190bW9fY2hhbmdlZDsKIApAQCAtMzY5LDYgKzM4Myw4IEBACiAJc3RydWN0IGxwZmNfZGVidWdmc190cmMgKmRpc2NfdHJjOwogCWF0b21pY190IGRpc2NfdHJjX2NudDsKICNlbmRpZgorCXVpbnQ4X3Qgc3RhdF9kYXRhX2VuYWJsZWQ7CisJdWludDhfdCBzdGF0X2RhdGFfYmxvY2tlZDsKIH07CiAKIHN0cnVjdCBoYnFfcyB7CkBAIC00MDcsMTAgKzQyMywxMSBAQAogCXN0cnVjdCBscGZjX3NsaSBzbGk7CiAJdWludDMyX3Qgc2xpX3JldjsJCS8qIFNMSTIgb3IgU0xJMyAqLwogCXVpbnQzMl90IHNsaTNfb3B0aW9uczsJCS8qIE1hc2sgb2YgZW5hYmxlZCBTTEkzIG9wdGlvbnMgKi8KLSNkZWZpbmUgTFBGQ19TTEkzX0VOQUJMRUQJIDB4MDEKLSNkZWZpbmUgTFBGQ19TTEkzX0hCUV9FTkFCTEVECSAweDAyCi0jZGVmaW5lIExQRkNfU0xJM19OUElWX0VOQUJMRUQJIDB4MDQKLSNkZWZpbmUgTFBGQ19TTEkzX1ZQT1JUX1RFQVJET1dOIDB4MDgKKyNkZWZpbmUgTFBGQ19TTEkzX0hCUV9FTkFCTEVECQkweDAxCisjZGVmaW5lIExQRkNfU0xJM19OUElWX0VOQUJMRUQJCTB4MDIKKyNkZWZpbmUgTFBGQ19TTEkzX1ZQT1JUX1RFQVJET1dOCTB4MDQKKyNkZWZpbmUgTFBGQ19TTEkzX0NSUF9FTkFCTEVECQkweDA4CisjZGVmaW5lIExQRkNfU0xJM19JTkJfRU5BQkxFRAkJMHgxMAogCXVpbnQzMl90IGlvY2JfY21kX3NpemU7CiAJdWludDMyX3QgaW9jYl9yc3Bfc2l6ZTsKIApAQCAtNDIyLDEwICs0MzksMjAgQEAKICNkZWZpbmUgTFNfTlBJVl9GQUJfU1VQUE9SVEVEIDB4MgkvKiBGYWJyaWMgc3VwcG9ydHMgTlBJViAqLwogI2RlZmluZSBMU19JR05PUkVfRVJBVFQgICAgICAgMHg0CS8qIGludHIgaGFuZGxlciBzaG91bGQgaWdub3JlIEVSQVRUICovCiAKLQlzdHJ1Y3QgbHBmY19zbGkyX3NsaW0gKnNsaW0ycDsKLQlzdHJ1Y3QgbHBmY19kbWFidWYgaGJxc2xpbXA7CisJdWludDMyX3QgaGJhX2ZsYWc7CS8qIGhiYSBnZW5lcmljIGZsYWdzICovCisjZGVmaW5lIEhCQV9FUkFUVF9IQU5ETEVECTB4MSAvKiBUaGlzIGZsYWcgaXMgc2V0IHdoZW4gZXJhdHQgaGFuZGxlZCAqLwogCi0JZG1hX2FkZHJfdCBzbGltMnBfbWFwcGluZzsKKwlzdHJ1Y3QgbHBmY19kbWFidWYgc2xpbTJwOworCisJTUFJTEJPWF90ICptYm94OworCXVpbnQzMl90ICppbmJfaGFfY29weTsKKwl1aW50MzJfdCAqaW5iX2NvdW50ZXI7CisJdWludDMyX3QgaW5iX2xhc3RfY291bnRlcjsKKwl1aW50MzJfdCBoYV9jb3B5OworCXN0cnVjdCBfUENCICpwY2I7CisJc3RydWN0IF9JT0NCICpJT0NCczsKKworCXN0cnVjdCBscGZjX2RtYWJ1ZiBoYnFzbGltcDsKIAogCXVpbnQxNl90IHBjaV9jZmdfdmFsdWU7CiAKQEAgLTQ5Miw3ICs1MTksNyBAQAogCiAJd2FpdF9xdWV1ZV9oZWFkX3QgICAgd29ya193YWl0cTsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgICAqd29ya2VyX3RocmVhZDsKLQlsb25nIGRhdGFfZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBkYXRhX2ZsYWdzOwogCiAJdWludDMyX3QgaGJxX2luX3VzZTsJCS8qIEhCUXMgaW4gdXNlIGZsYWcgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGhicWJ1Zl9pbl9saXN0OyAgLyogaW4tZmx5IGhicSBidWZmZXIgbGlzdCAqLwpAQCAtNTE0LDYgKzU0MSw3IEBACiAJdm9pZCBfX2lvbWVtICpIQ3JlZ2FkZHI7CS8qIHZpcnR1YWwgYWRkcmVzcyBmb3IgaG9zdCBjdGwgcmVnICovCiAKIAlzdHJ1Y3QgbHBmY19oZ3AgX19pb21lbSAqaG9zdF9ncDsgLyogSG9zdCBzaWRlIGdldC9wdXQgcG9pbnRlcnMgKi8KKwlzdHJ1Y3QgbHBmY19wZ3AgICAqcG9ydF9ncDsKIAl1aW50MzJfdCBfX2lvbWVtICAqaGJxX3B1dDsgICAgIC8qIEFkZHJlc3MgaW4gU0xJTSB0byBIQlEgcHV0IHB0cnMgKi8KIAl1aW50MzJfdCAgICAgICAgICAqaGJxX2dldDsgICAgIC8qIEhvc3QgbWVtIGFkZHJlc3Mgb2YgSEJRIGdldCBwdHJzICovCiAKQEAgLTUzNiw2ICs1NjQsNyBAQAogCXVpbnQ4X3Qgc29mdF93d25fZW5hYmxlOwogCiAJc3RydWN0IHRpbWVyX2xpc3QgZmNwX3BvbGxfdGltZXI7CisJc3RydWN0IHRpbWVyX2xpc3QgZXJhdHRfcG9sbDsKIAogCS8qCiAJICogc3RhdCAgY291bnRlcnMKQEAgLTU2NSw3ICs1OTQsNyBAQAogCiAJc3RydWN0IGZjX2hvc3Rfc3RhdGlzdGljcyBsaW5rX3N0YXRzOwogCWVudW0gaW50cl90eXBlX3QgaW50cl90eXBlOwotCXN0cnVjdCBtc2l4X2VudHJ5IG1zaXhfZW50cmllc1sxXTsKKwlzdHJ1Y3QgbXNpeF9lbnRyeSBtc2l4X2VudHJpZXNbTFBGQ19NU0lYX1ZFQ1RPUlNdOwogCiAJc3RydWN0IGxpc3RfaGVhZCBwb3J0X2xpc3Q7CiAJc3RydWN0IGxwZmNfdnBvcnQgKnBwb3J0OwkvKiBwaHlzaWNhbCBscGZjX3Zwb3J0IHBvaW50ZXIgKi8KQEAgLTYwNSw2ICs2MzQsNyBAQAogCXVuc2lnbmVkIGxvbmcgbGFzdF9jb21wbGV0aW9uX3RpbWU7CiAJc3RydWN0IHRpbWVyX2xpc3QgaGJfdG1vZnVuYzsKIAl1aW50OF90IGhiX291dHN0YW5kaW5nOworCWVudW0gaGJhX3RlbXBfc3RhdGUgb3Zlcl90ZW1wX3N0YXRlOwogCS8qIG5kbHAgcmVmZXJlbmNlIG1hbmFnZW1lbnQgKi8KIAlzcGlubG9ja190IG5kbHBfbG9jazsKIAkvKgpAQCAtNjEzLDcgKzY0MywxOSBAQAogCSAqLwogI2RlZmluZSBRVUVfQlVGVEFHX0JJVCAgKDE8PDMxKQogCXVpbnQzMl90IGJ1ZmZlcl90YWdfY291bnQ7Ci0JZW51bSBoYmFfdGVtcF9zdGF0ZSBvdmVyX3RlbXBfc3RhdGU7CisJaW50IHdhaXRfNF9tbG9fbWFpbnRfZmxnOworCXdhaXRfcXVldWVfaGVhZF90IHdhaXRfNF9tbG9fbV9xOworCS8qIGRhdGEgc3RydWN0dXJlIHVzZWQgZm9yIGxhdGVuY3kgZGF0YSBjb2xsZWN0aW9uICovCisjZGVmaW5lIExQRkNfTk9fQlVDS0VUCSAgIDAKKyNkZWZpbmUgTFBGQ19MSU5FQVJfQlVDS0VUIDEKKyNkZWZpbmUgTFBGQ19QT1dFUjJfQlVDS0VUIDIKKwl1aW50OF90ICBidWNrZXRfdHlwZTsKKwl1aW50MzJfdCBidWNrZXRfYmFzZTsKKwl1aW50MzJfdCBidWNrZXRfc3RlcDsKKworLyogTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgY2FuIGJlIG91dHN0YW5kaW5nIGF0IGFueSB0aW1lKi8KKyNkZWZpbmUgTFBGQ19NQVhfRVZUX0NPVU5UIDUxMgorCWF0b21pY190IGZhc3RfZXZlbnRfY291bnQ7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBTY3NpX0hvc3QgKgpAQCAtNjUwLDE1ICs2OTIsMjUgQEAKIAlyZXR1cm47CiB9CiAKLSNkZWZpbmUgRkNfUkVHX0RVTVBfRVZFTlQJCTB4MTAJLyogUmVnaXN0ZXIgZm9yIER1bXAgZXZlbnRzICovCi0jZGVmaW5lIEZDX1JFR19URU1QRVJBVFVSRV9FVkVOVAkweDIwICAgIC8qIFJlZ2lzdGVyIGZvciB0ZW1wZXJhdHVyZQotCQkJCQkJICAgZXZlbnQgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorbHBmY19zbGlfcmVhZF9ocyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCit7CisJLyoKKwkgKiBUaGVyZSB3YXMgYSBsaW5rL2JvYXJkIGVycm9yLiBSZWFkIHRoZSBzdGF0dXMgcmVnaXN0ZXIgdG8gcmV0cmlldmUKKwkgKiB0aGUgZXJyb3IgZXZlbnQgYW5kIHByb2Nlc3MgaXQuCisJICovCisJcGhiYS0+c2xpLnNsaXN0YXQuZXJyX2F0dG5fZXZlbnQrKzsKIAotc3RydWN0IHRlbXBfZXZlbnQgewotCXVpbnQzMl90IGV2ZW50X3R5cGU7Ci0JdWludDMyX3QgZXZlbnRfY29kZTsKLQl1aW50MzJfdCBkYXRhOwotfTsKLSNkZWZpbmUgTFBGQ19DUklUX1RFTVAJCTB4MQotI2RlZmluZSBMUEZDX1RIUkVTSE9MRF9URU1QCTB4MgotI2RlZmluZSBMUEZDX05PUk1BTF9URU1QCTB4MworCS8qIFNhdmUgc3RhdHVzIGluZm8gKi8KKwlwaGJhLT53b3JrX2hzID0gcmVhZGwocGhiYS0+SFNyZWdhZGRyKTsKKwlwaGJhLT53b3JrX3N0YXR1c1swXSA9IHJlYWRsKHBoYmEtPk1Cc2xpbWFkZHIgKyAweGE4KTsKKwlwaGJhLT53b3JrX3N0YXR1c1sxXSA9IHJlYWRsKHBoYmEtPk1Cc2xpbWFkZHIgKyAweGFjKTsKKworCS8qIENsZWFyIGNoaXAgSG9zdCBBdHRlbnRpb24gZXJyb3IgYml0ICovCisJd3JpdGVsKEhBX0VSQVRULCBwaGJhLT5IQXJlZ2FkZHIpOworCXJlYWRsKHBoYmEtPkhBcmVnYWRkcik7IC8qIGZsdXNoICovCisJcGhiYS0+cHBvcnQtPnN0b3BwZWQgPSAxOworCisJcmV0dXJuOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2F0dHIuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCmluZGV4IDM3YmZhMGIuLmFhM2Q2MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJscGZjX2h3LmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zY3NpLmgiCiAjaW5jbHVkZSAibHBmYy5oIgpAQCAtNDksNiArNTAsMjEgQEAKICNkZWZpbmUgTFBGQ19MSU5LX1NQRUVEX0JJVE1BUCAweDAwMDAwMTE3CiAjZGVmaW5lIExQRkNfTElOS19TUEVFRF9TVFJJTkcgIjAsIDEsIDIsIDQsIDgiCiAKKy8qKgorICogbHBmY19qZWRlY190b19hc2NpaTogSGV4IHRvIGFzY2lpIGNvbnZlcnRvciBhY2NvcmRpbmcgdG8gSkVERUMgcnVsZXMuCisgKiBAaW5jcjogaW50ZWdlciB0byBjb252ZXJ0LgorICogQGhkdzogYXNjaWkgc3RyaW5nIGhvbGRpbmcgY29udmVydGVkIGludGVnZXIgcGx1cyBhIHN0cmluZyB0ZXJtaW5hdG9yLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogSkVERUMgSm9pbnQgRWxlY3Ryb24gRGV2aWNlIEVuZ2luZWVyaW5nIENvdW5jaWwuCisgKiBDb252ZXJ0IGEgMzIgYml0IGludGVnZXIgY29tcG9zZWQgb2YgOCBuaWJibGVzIGludG8gYW4gOCBieXRlIGFzY2lpCisgKiBjaGFyYWN0ZXIgc3RyaW5nLiBUaGUgc3RyaW5nIGlzIHRoZW4gdGVybWluYXRlZCB3aXRoIGEgTlVMTCBpbiBieXRlIDkuCisgKiBIZXggMC05IGJlY29tZXMgYXNjaWkgJzAnIHRvICc5Jy4KKyAqIEhleCBhLWYgYmVjb21lcyBhc2NpaSAnPScgdG8gJ0InIGNhcGl0YWwgQi4KKyAqCisgKiBOb3RlczoKKyAqIENvZGVkIGZvciAzMiBiaXQgaW50ZWdlcnMgb25seS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2plZGVjX3RvX2FzY2lpKGludCBpbmNyLCBjaGFyIGhkd1tdKQogewpAQCAtNjUsNiArODEsMTQgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19kcnZyX3ZlcnNpb25fc2hvdzogUmV0dXJuIHRoZSBFbXVsZXggZHJpdmVyIHN0cmluZyB3aXRoIHZlcnNpb24gbnVtYmVyLgorICogQGRldjogY2xhc3MgdW51c2VkIHZhcmlhYmxlLgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBtb2R1bGUgZGVzY3JpcHRpb24gdGV4dC4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19kcnZyX3ZlcnNpb25fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgICAgY2hhciAqYnVmKQpAQCAtNzIsNiArOTYsMTQgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsIExQRkNfTU9EVUxFX0RFU0MgIlxuIik7CiB9CiAKKy8qKgorICogbHBmY19pbmZvX3Nob3c6IFJldHVybiBzb21lIHBjaSBpbmZvIGFib3V0IHRoZSBob3N0IGluIGFzY2lpLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgZm9ybWF0dGVkIHRleHQgZnJvbSBscGZjX2luZm8oKS4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19pbmZvX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkgICAgICAgY2hhciAqYnVmKQpAQCAtODEsNiArMTEzLDE0IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsbHBmY19pbmZvKGhvc3QpKTsKIH0KIAorLyoqCisgKiBscGZjX3NlcmlhbG51bV9zaG93OiBSZXR1cm4gdGhlIGhiYSBzZXJpYWwgbnVtYmVyIGluIGFzY2lpLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgZm9ybWF0dGVkIHRleHQgc2VyaWFsIG51bWJlci4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19zZXJpYWxudW1fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgY2hhciAqYnVmKQpAQCAtOTIsNiArMTMyLDE4IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIscGhiYS0+U2VyaWFsTnVtYmVyKTsKIH0KIAorLyoqCisgKiBscGZjX3RlbXBfc2Vuc29yX3Nob3c6IFJldHVybiB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yIGxldmVsLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgZm9ybWF0dGVkIHN1cHBvcnQgbGV2ZWwuCisgKgorICogRGVzY3JpcHRpb246CisgKiBSZXR1cm5zIGEgbnVtYmVyIGluZGljYXRpbmcgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBsZXZlbCBjdXJyZW50bHkKKyAqIHN1cHBvcnRlZCwgemVybyBvciBvbmUgaW4gYXNjaWkuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfdGVtcF9zZW5zb3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgICBjaGFyICpidWYpCkBAIC0xMDIsNiArMTU0LDE0IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIscGhiYS0+dGVtcF9zZW5zb3Jfc3VwcG9ydCk7CiB9CiAKKy8qKgorICogbHBmY19tb2RlbGRlc2Nfc2hvdzogUmV0dXJuIHRoZSBtb2RlbCBkZXNjcmlwdGlvbiBvZiB0aGUgaGJhLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgc2NzaSB2cGQgbW9kZWwgZGVzY3JpcHRpb24uCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfbW9kZWxkZXNjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgIGNoYXIgKmJ1ZikKQEAgLTExMyw2ICsxNzMsMTQgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlc1xuIixwaGJhLT5Nb2RlbERlc2MpOwogfQogCisvKioKKyAqIGxwZmNfbW9kZWxuYW1lX3Nob3c6IFJldHVybiB0aGUgbW9kZWwgbmFtZSBvZiB0aGUgaGJhLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgc2NzaSB2cGQgbW9kZWwgbmFtZS4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19tb2RlbG5hbWVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgY2hhciAqYnVmKQpAQCAtMTI0LDYgKzE5MiwxNCBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVzXG4iLHBoYmEtPk1vZGVsTmFtZSk7CiB9CiAKKy8qKgorICogbHBmY19wcm9ncmFtdHlwZV9zaG93OiBSZXR1cm4gdGhlIHByb2dyYW0gdHlwZSBvZiB0aGUgaGJhLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgc2NzaSB2cGQgcHJvZ3JhbSB0eXBlLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX3Byb2dyYW10eXBlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgICAgY2hhciAqYnVmKQpAQCAtMTM1LDYgKzIxMSwzMyBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVzXG4iLHBoYmEtPlByb2dyYW1UeXBlKTsKIH0KIAorLyoqCisgKiBscGZjX21sb21nbXRfc2hvdzogUmV0dXJuIHRoZSBNZW5sbyBNYWludGVuYW5jZSBzbGkgZmxhZy4KKyAqIEBkZXY6IGNsYXNzIGNvbnZlcnRlZCB0byBhIFNjc2lfaG9zdCBzdHJ1Y3R1cmUuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIE1lbmxvIE1haW50ZW5hbmNlIHNsaSBmbGFnLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KK3N0YXRpYyBzc2l6ZV90CitscGZjX21sb21nbXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IFNjc2lfSG9zdCAgKnNob3N0ID0gY2xhc3NfdG9fc2hvc3QoZGV2KTsKKwlzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQgPSAoc3RydWN0IGxwZmNfdnBvcnQgKilzaG9zdC0+aG9zdGRhdGE7CisJc3RydWN0IGxwZmNfaGJhICAgKnBoYmEgPSB2cG9ydC0+cGhiYTsKKworCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAorCQkocGhiYS0+c2xpLnNsaV9mbGFnICYgTFBGQ19NRU5MT19NQUlOVCkpOworfQorCisvKioKKyAqIGxwZmNfdnBvcnRudW1fc2hvdzogUmV0dXJuIHRoZSBwb3J0IG51bWJlciBpbiBhc2NpaSBvZiB0aGUgaGJhLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyBzY3NpIHZwZCBwcm9ncmFtIHR5cGUuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfdnBvcnRudW1fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICBjaGFyICpidWYpCkBAIC0xNDYsNiArMjQ5LDE0IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIscGhiYS0+UG9ydCk7CiB9CiAKKy8qKgorICogbHBmY19md3Jldl9zaG93OiBSZXR1cm4gdGhlIGZpcm13YXJlIHJldiBydW5uaW5nIGluIHRoZSBoYmEuCisgKiBAZGV2OiBjbGFzcyBjb252ZXJ0ZWQgdG8gYSBTY3NpX2hvc3Qgc3RydWN0dXJlLgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBzY3NpIHZwZCBwcm9ncmFtIHR5cGUuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfZndyZXZfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQljaGFyICpidWYpCkBAIC0xNTksNiArMjcwLDE0IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXMsIHNsaS0lZFxuIiwgZndyZXYsIHBoYmEtPnNsaV9yZXYpOwogfQogCisvKioKKyAqIGxwZmNfaGR3X3Nob3c6IFJldHVybiB0aGUgamVkZWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhiYS4KKyAqIEBkZXY6IGNsYXNzIGNvbnZlcnRlZCB0byBhIFNjc2lfaG9zdCBzdHJ1Y3R1cmUuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIHNjc2kgdnBkIHByb2dyYW0gdHlwZS4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19oZHdfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CkBAIC0xNzEsNiArMjkwLDE1IEBACiAJbHBmY19qZWRlY190b19hc2NpaSh2cC0+cmV2LmJpdVJldiwgaGR3KTsKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlc1xuIiwgaGR3KTsKIH0KKworLyoqCisgKiBscGZjX29wdGlvbl9yb21fdmVyc2lvbl9zaG93OiBSZXR1cm4gdGhlIGFkYXB0ZXIgUk9NIEZDb2RlIHZlcnNpb24uCisgKiBAZGV2OiBjbGFzcyBjb252ZXJ0ZWQgdG8gYSBTY3NpX2hvc3Qgc3RydWN0dXJlLgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBST00gYW5kIEZDb2RlIGFzY2lpIHN0cmluZ3MuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfb3B0aW9uX3JvbV92ZXJzaW9uX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJCSAgICAgY2hhciAqYnVmKQpAQCAtMTgxLDYgKzMwOSwxOCBAQAogCiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsIHBoYmEtPk9wdGlvblJPTVZlcnNpb24pOwogfQorCisvKioKKyAqIGxwZmNfc3RhdGVfc2hvdzogUmV0dXJuIHRoZSBsaW5rIHN0YXRlIG9mIHRoZSBwb3J0LgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0ZXh0IGRlc2NyaWJpbmcgdGhlIHN0YXRlIG9mIHRoZSBsaW5rLgorICoKKyAqIE5vdGVzOgorICogVGhlIHN3aXRjaCBzdGF0ZW1lbnQgaGFzIG5vIGRlZmF1bHQgc28gemVybyB3aWxsIGJlIHJldHVybmVkLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX2xpbmtfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgIGNoYXIgKmJ1ZikKQEAgLTIzMiw4ICszNzIsMTAgQEAKIAkJCQkJIlVua25vd25cbiIpOwogCQkJYnJlYWs7CiAJCX0KLQotCQlpZiAocGhiYS0+ZmNfdG9wb2xvZ3kgPT0gVE9QT0xPR1lfTE9PUCkgeworCQlpZiAocGhiYS0+c2xpLnNsaV9mbGFnICYgTFBGQ19NRU5MT19NQUlOVCkKKwkJCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIFBBR0VfU0laRS1sZW4sCisJCQkJCSIgICBNZW5sbyBNYWludCBNb2RlXG4iKTsKKwkJZWxzZSBpZiAocGhiYS0+ZmNfdG9wb2xvZ3kgPT0gVE9QT0xPR1lfTE9PUCkgewogCQkJaWYgKHZwb3J0LT5mY19mbGFnICYgRkNfUFVCTElDX0xPT1ApCiAJCQkJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFLWxlbiwKIAkJCQkJCSIgICBQdWJsaWMgTG9vcFxuIik7CkBAIC0yNTMsNiArMzk1LDE4IEBACiAJcmV0dXJuIGxlbjsKIH0KIAorLyoqCisgKiBscGZjX251bV9kaXNjb3ZlcmVkX3BvcnRzX3Nob3c6IFJldHVybiBzdW0gb2YgbWFwcGVkIGFuZCB1bm1hcHBlZCB2cG9ydHMuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgc3VtIG9mIGZjIG1hcHBlZCBhbmQgdW5tYXBwZWQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBSZXR1cm5zIHRoZSBhc2NpaSB0ZXh0IG51bWJlciBvZiB0aGUgc3VtIG9mIHRoZSBmYyBtYXBwZWQgYW5kIHVubWFwcGVkCisgKiB2cG9ydCBjb3VudHMuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfbnVtX2Rpc2NvdmVyZWRfcG9ydHNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKQEAgLTI2NCw3ICs0MTgsMjAgQEAKIAkJCXZwb3J0LT5mY19tYXBfY250ICsgdnBvcnQtPmZjX3VubWFwX2NudCk7CiB9CiAKLQorLyoqCisgKiBscGZjX2lzc3VlX2xpcDogTWlzbm9tZXIsIG5hbWUgY2FycmllZCBvdmVyIGZyb20gbG9uZyBhZ28uCisgKiBAc2hvc3Q6IFNjc2lfSG9zdCBwb2ludGVyLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogQnJpbmcgdGhlIGxpbmsgZG93biBncmFjZWZ1bGx5IHRoZW4gcmUtaW5pdCB0aGUgbGluay4gVGhlIGZpcm13YXJlIHdpbGwKKyAqIHJlLWluaXQgdGhlIGZpYmVyIGNoYW5uZWwgaW50ZXJmYWNlIGFzIHJlcXVpcmVkLiBEb2VzIG5vdCBpc3N1ZSBhIExJUC4KKyAqCisgKiBSZXR1cm5zOgorICogLUVQRVJNIHBvcnQgb2ZmbGluZSBvciBtYW5hZ2VtZW50IGNvbW1hbmRzIGFyZSBiZWluZyBibG9ja2VkCisgKiAtRU5PTUVNIGNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBtYWlsYm94IGNvbW1hbmQKKyAqIC1FSU8gZXJyb3Igc2VuZGluZyB0aGUgbWFpbGJveCBjb21tYW5kCisgKiB6ZXJvIGZvciBzdWNjZXNzCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2lzc3VlX2xpcChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKIHsKQEAgLTMwNiw2ICs0NzMsMjEgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2RvX29mZmxpbmU6IElzc3VlcyBhIG1haWxib3ggY29tbWFuZCB0byBicmluZyB0aGUgbGluayBkb3duLgorICogQHBoYmE6IGxwZmNfaGJhIHBvaW50ZXIuCisgKiBAdHlwZTogTFBGQ19FVlRfT0ZGTElORSwgTFBGQ19FVlRfV0FSTV9TVEFSVCwgTFBGQ19FVlRfS0lMTC4KKyAqCisgKiBOb3RlczoKKyAqIEFzc3VtZXMgYW55IGVycm9yIGZyb20gbHBmY19kb19vZmZsaW5lKCkgd2lsbCBiZSBuZWdhdGl2ZS4KKyAqIENhbiB3YWl0IHVwIHRvIDUgc2Vjb25kcyBmb3IgdGhlIHBvcnQgcmluZyBidWZmZXJzIGNvdW50CisgKiB0byByZWFjaCB6ZXJvLCBwcmludHMgYSB3YXJuaW5nIGlmIGl0IGlzIG5vdCB6ZXJvIGFuZCBjb250aW51ZXMuCisgKiBscGZjX3dvcmtxX3Bvc3RfZXZlbnQoKSByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuIGNvY2UgaWYgY2FsbCBmYWlscy4KKyAqCisgKiBSZXR1cm5zOgorICogLUVJTyBlcnJvciBwb3N0aW5nIHRoZSBldmVudAorICogemVybyBmb3Igc3VjY2VzcworICoqLwogc3RhdGljIGludAogbHBmY19kb19vZmZsaW5lKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgdHlwZSkKIHsKQEAgLTM1Myw2ICs1MzUsMjIgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3NlbGVjdGl2ZV9yZXNldDogT2ZmbGluZSB0aGVuIG9ubGluZXMgdGhlIHBvcnQuCisgKiBAcGhiYTogbHBmY19oYmEgcG9pbnRlci4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIElmIHRoZSBwb3J0IGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgYSByZXNldCB0aGVuIHRoZSBoYmEgaXMgYnJvdWdodAorICogb2ZmbGluZSB0aGVuIG9ubGluZS4KKyAqCisgKiBOb3RlczoKKyAqIEFzc3VtZXMgYW55IGVycm9yIGZyb20gbHBmY19kb19vZmZsaW5lKCkgd2lsbCBiZSBuZWdhdGl2ZS4KKyAqCisgKiBSZXR1cm5zOgorICogbHBmY19kb19vZmZsaW5lKCkgcmV0dXJuIGNvZGUgaWYgbm90IHplcm8KKyAqIC1FSU8gcmVzZXQgbm90IGNvbmZpZ3VyZWQgb3IgZXJyb3IgcG9zdGluZyB0aGUgZXZlbnQKKyAqIHplcm8gZm9yIHN1Y2Nlc3MKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfc2VsZWN0aXZlX3Jlc2V0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTM3OCw2ICs1NzYsMjcgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2lzc3VlX3Jlc2V0OiBTZWxlY3RpdmVseSByZXNldHMgYW4gYWRhcHRlci4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1ZjogY29udGFpbmluZyB0aGUgc3RyaW5nICJzZWxlY3RpdmUiLgorICogQGNvdW50OiB1bnVzZWQgdmFyaWFibGUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBJZiB0aGUgYnVmIGNvbnRhaW5zIHRoZSBzdHJpbmcgInNlbGVjdGl2ZSIgdGhlbiBscGZjX3NlbGVjdGl2ZV9yZXNldCgpCisgKiBpcyBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgcmVzZXQuCisgKgorICogTm90ZXM6CisgKiBBc3N1bWVzIGFueSBlcnJvciBmcm9tIGxwZmNfc2VsZWN0aXZlX3Jlc2V0KCkgd2lsbCBiZSBuZWdhdGl2ZS4KKyAqIElmIGxwZmNfc2VsZWN0aXZlX3Jlc2V0KCkgcmV0dXJucyB6ZXJvIHRoZW4gdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyCisgKiBpcyByZXR1cm5lZCB3aGljaCBpbmRpY2F0ZXMgc3VjY2Nlc3MKKyAqCisgKiBSZXR1cm5zOgorICogLUVJTlZBTCBpZiB0aGUgYnVmZmVyIGRvZXMgbm90IGNvbnRhaW4gdGhlIHN0cmluZyAic2VsZWN0aXZlIgorICogbGVuZ3RoIG9mIGJ1ZiBpZiBscGZjLXNlbGVjdGl2ZV9yZXNldCgpIGlmIHRoZSBjYWxsIHN1Y2NlZWRzCisgKiByZXR1cm4gdmFsdWUgb2YgbHBmY19zZWxlY3RpdmVfcmVzZXQoKSBpZiB0aGUgY2FsbCBmYWlscworKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19pc3N1ZV9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCkBAIC0zOTcsNiArNjE2LDE0IEBACiAJCXJldHVybiBzdGF0dXM7CiB9CiAKKy8qKgorICogbHBmY19ucG9ydF9ldnRfY250X3Nob3c6IFJldHVybiB0aGUgbnVtYmVyIG9mIG5wb3J0IGV2ZW50cy4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBhc2NpaSBudW1iZXIgb2YgbnBvcnQgZXZlbnRzLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX25wb3J0X2V2dF9jbnRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJY2hhciAqYnVmKQpAQCAtNDA4LDYgKzYzNSwxNCBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLCBwaGJhLT5ucG9ydF9ldmVudF9jbnQpOwogfQogCisvKioKKyAqIGxwZmNfYm9hcmRfbW9kZV9zaG93OiBSZXR1cm4gdGhlIHN0YXRlIG9mIHRoZSBib2FyZC4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiB0aGUgYWRhcHRlci4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19ib2FyZF9tb2RlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgICBjaGFyICpidWYpCkBAIC00MjksNiArNjY0LDE5IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsIHN0YXRlKTsKIH0KIAorLyoqCisgKiBscGZjX2JvYXJkX21vZGVfc3RvcmU6IFB1dHMgdGhlIGhiYSBpbiBvbmxpbmUsIG9mZmxpbmUsIHdhcm0gb3IgZXJyb3Igc3RhdGUuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzdHJpbmdzICJvbmxpbmUiLCAib2ZmbGluZSIsICJ3YXJtIiBvciAiZXJyb3IiLgorICogQGNvdW50OiB1bnVzZWQgdmFyaWFibGUuCisgKgorICogUmV0dXJuczoKKyAqIC1FQUNDRVMgaWYgZW5hYmxlIGhiYSByZXNldCBub3QgZW5hYmxlZAorICogLUVJTlZBTCBpZiB0aGUgYnVmZmVyIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBzdHJpbmcgKHNlZSBhYm92ZSkKKyAqIC1FSU8gaWYgbHBmY193b3JrcV9wb3N0X2V2ZW50KCkgb3IgbHBmY19kb19vZmZsaW5lKCkgZmFpbHMKKyAqIGJ1ZiBsZW5ndGggZ3JlYXRlciB0aGFuIHplcm8gaW5kaWNhdGVzIHN1Y2Nlc3MKKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX2JvYXJkX21vZGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCkBAIC00NjIsNiArNzEwLDI0IEBACiAJCXJldHVybiAtRUlPOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X2hiYV9pbmZvOiBSZXR1cm4gdmFyaW91cyBiaXRzIG9mIGluZm9ybWF0b24gYWJvdXQgdGhlIGFkYXB0ZXIuCisgKiBAcGhiYTogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUuCisgKiBAbXhyaSBtYXggeHJpIGNvdW50LgorICogQGF4cmkgYXZhaWxhYmxlIHhyaSBjb3VudC4KKyAqIEBtcnBpIG1heCBycGkgY291bnQuCisgKiBAYXJwaSBhdmFpbGFibGUgcnBpIGNvdW50LgorICogQG12cGkgbWF4IHZwaSBjb3VudC4KKyAqIEBhdnBpIGF2YWlsYWJsZSB2cGkgY291bnQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBJZiBhbiBpbnRlZ2VyIHBvaW50ZXIgZm9yIGFuIGNvdW50IGlzIG5vdCBudWxsIHRoZW4gdGhlIHZhbHVlIGZvciB0aGUKKyAqIGNvdW50IGlzIHJldHVybmVkLgorICoKKyAqIFJldHVybnM6CisgKiB6ZXJvIG9uIGVycm9yCisgKiBvbmUgZm9yIHN1Y2Nlc3MKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZ2V0X2hiYV9pbmZvKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwKIAkJICB1aW50MzJfdCAqbXhyaSwgdWludDMyX3QgKmF4cmksCkBAIC01MjQsNiArNzkwLDIwIEBACiAJcmV0dXJuIDE7CiB9CiAKKy8qKgorICogbHBmY19tYXhfcnBpX3Nob3c6IFJldHVybiBtYXhpbXVtIHJwaS4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBtYXhpbXVtIHJwaSBjb3VudCBpbiBkZWNpbWFsIG9yICJVbmtub3duIi4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIENhbGxzIGxwZmNfZ2V0X2hiYV9pbmZvKCkgYXNraW5nIGZvciBqdXN0IHRoZSBtcnBpIGNvdW50LgorICogSWYgbHBmY19nZXRfaGJhX2luZm8oKSByZXR1cm5zIHplcm8gKGZhaWx1cmUpIHRoZSBidWZmZXIgdGV4dCBpcyBzZXQKKyAqIHRvICJVbmtub3duIiBhbmQgdGhlIGJ1ZmZlciBsZW5ndGggaXMgcmV0dXJuZWQsIHRoZXJlZm9yZSB0aGUgY2FsbGVyCisgKiBtdXN0IGNoZWNrIGZvciAiVW5rbm93biIgaW4gdGhlIGJ1ZmZlciB0byBkZXRlY3QgYSBmYWlsdXJlLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX21heF9ycGlfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgIGNoYXIgKmJ1ZikKQEAgLTUzOCw2ICs4MTgsMjAgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICJVbmtub3duXG4iKTsKIH0KIAorLyoqCisgKiBscGZjX3VzZWRfcnBpX3Nob3c6IFJldHVybiBtYXhpbXVtIHJwaSBtaW51cyBhdmFpbGFibGUgcnBpLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBjb250YWluaW5nIHRoZSB1c2VkIHJwaSBjb3VudCBpbiBkZWNpbWFsIG9yICJVbmtub3duIi4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIENhbGxzIGxwZmNfZ2V0X2hiYV9pbmZvKCkgYXNraW5nIGZvciBqdXN0IHRoZSBtcnBpIGFuZCBhcnBpIGNvdW50cy4KKyAqIElmIGxwZmNfZ2V0X2hiYV9pbmZvKCkgcmV0dXJucyB6ZXJvIChmYWlsdXJlKSB0aGUgYnVmZmVyIHRleHQgaXMgc2V0CisgKiB0byAiVW5rbm93biIgYW5kIHRoZSBidWZmZXIgbGVuZ3RoIGlzIHJldHVybmVkLCB0aGVyZWZvcmUgdGhlIGNhbGxlcgorICogbXVzdCBjaGVjayBmb3IgIlVua25vd24iIGluIHRoZSBidWZmZXIgdG8gZGV0ZWN0IGEgZmFpbHVyZS4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY191c2VkX3JwaV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCSAgIGNoYXIgKmJ1ZikKQEAgLTU1Miw2ICs4NDYsMjAgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICJVbmtub3duXG4iKTsKIH0KIAorLyoqCisgKiBscGZjX21heF94cmlfc2hvdzogUmV0dXJuIG1heGltdW0geHJpLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIG1heGltdW0geHJpIGNvdW50IGluIGRlY2ltYWwgb3IgIlVua25vd24iLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogQ2FsbHMgbHBmY19nZXRfaGJhX2luZm8oKSBhc2tpbmcgZm9yIGp1c3QgdGhlIG1ycGkgY291bnQuCisgKiBJZiBscGZjX2dldF9oYmFfaW5mbygpIHJldHVybnMgemVybyAoZmFpbHVyZSkgdGhlIGJ1ZmZlciB0ZXh0IGlzIHNldAorICogdG8gIlVua25vd24iIGFuZCB0aGUgYnVmZmVyIGxlbmd0aCBpcyByZXR1cm5lZCwgdGhlcmVmb3JlIHRoZSBjYWxsZXIKKyAqIG11c3QgY2hlY2sgZm9yICJVbmtub3duIiBpbiB0aGUgYnVmZmVyIHRvIGRldGVjdCBhIGZhaWx1cmUuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfbWF4X3hyaV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCSAgY2hhciAqYnVmKQpAQCAtNTY2LDYgKzg3NCwyMCBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIlVua25vd25cbiIpOwogfQogCisvKioKKyAqIGxwZmNfdXNlZF94cmlfc2hvdzogUmV0dXJuIG1heGltdW0geHBpIG1pbnVzIHRoZSBhdmFpbGFibGUgeHBpLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIHVzZWQgeHJpIGNvdW50IGluIGRlY2ltYWwgb3IgIlVua25vd24iLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogQ2FsbHMgbHBmY19nZXRfaGJhX2luZm8oKSBhc2tpbmcgZm9yIGp1c3QgdGhlIG14cmkgYW5kIGF4cmkgY291bnRzLgorICogSWYgbHBmY19nZXRfaGJhX2luZm8oKSByZXR1cm5zIHplcm8gKGZhaWx1cmUpIHRoZSBidWZmZXIgdGV4dCBpcyBzZXQKKyAqIHRvICJVbmtub3duIiBhbmQgdGhlIGJ1ZmZlciBsZW5ndGggaXMgcmV0dXJuZWQsIHRoZXJlZm9yZSB0aGUgY2FsbGVyCisgKiBtdXN0IGNoZWNrIGZvciAiVW5rbm93biIgaW4gdGhlIGJ1ZmZlciB0byBkZXRlY3QgYSBmYWlsdXJlLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX3VzZWRfeHJpX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgY2hhciAqYnVmKQpAQCAtNTgwLDYgKzkwMiwyMCBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIlVua25vd25cbiIpOwogfQogCisvKioKKyAqIGxwZmNfbWF4X3ZwaV9zaG93OiBSZXR1cm4gbWF4aW11bSB2cGkuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgbWF4aW11bSB2cGkgY291bnQgaW4gZGVjaW1hbCBvciAiVW5rbm93biIuCisgKgorICogRGVzY3JpcHRpb246CisgKiBDYWxscyBscGZjX2dldF9oYmFfaW5mbygpIGFza2luZyBmb3IganVzdCB0aGUgbXZwaSBjb3VudC4KKyAqIElmIGxwZmNfZ2V0X2hiYV9pbmZvKCkgcmV0dXJucyB6ZXJvIChmYWlsdXJlKSB0aGUgYnVmZmVyIHRleHQgaXMgc2V0CisgKiB0byAiVW5rbm93biIgYW5kIHRoZSBidWZmZXIgbGVuZ3RoIGlzIHJldHVybmVkLCB0aGVyZWZvcmUgdGhlIGNhbGxlcgorICogbXVzdCBjaGVjayBmb3IgIlVua25vd24iIGluIHRoZSBidWZmZXIgdG8gZGV0ZWN0IGEgZmFpbHVyZS4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19tYXhfdnBpX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICBjaGFyICpidWYpCkBAIC01OTQsNiArOTMwLDIwIEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiVW5rbm93blxuIik7CiB9CiAKKy8qKgorICogbHBmY191c2VkX3ZwaV9zaG93OiBSZXR1cm4gbWF4aW11bSB2cGkgbWludXMgdGhlIGF2YWlsYWJsZSB2cGkuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgdXNlZCB2cGkgY291bnQgaW4gZGVjaW1hbCBvciAiVW5rbm93biIuCisgKgorICogRGVzY3JpcHRpb246CisgKiBDYWxscyBscGZjX2dldF9oYmFfaW5mbygpIGFza2luZyBmb3IganVzdCB0aGUgbXZwaSBhbmQgYXZwaSBjb3VudHMuCisgKiBJZiBscGZjX2dldF9oYmFfaW5mbygpIHJldHVybnMgemVybyAoZmFpbHVyZSkgdGhlIGJ1ZmZlciB0ZXh0IGlzIHNldAorICogdG8gIlVua25vd24iIGFuZCB0aGUgYnVmZmVyIGxlbmd0aCBpcyByZXR1cm5lZCwgdGhlcmVmb3JlIHRoZSBjYWxsZXIKKyAqIG11c3QgY2hlY2sgZm9yICJVbmtub3duIiBpbiB0aGUgYnVmZmVyIHRvIGRldGVjdCBhIGZhaWx1cmUuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfdXNlZF92cGlfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICBjaGFyICpidWYpCkBAIC02MDgsNiArOTU4LDE5IEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiVW5rbm93blxuIik7CiB9CiAKKy8qKgorICogbHBmY19ucGl2X2luZm9fc2hvdzogUmV0dXJuIHRleHQgYWJvdXQgTlBJViBzdXBwb3J0IGZvciB0aGUgYWRhcHRlci4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1ZjogdGV4dCB0aGF0IG11c3QgYmUgaW50ZXJwcmV0ZWQgdG8gZGV0ZXJtaW5lIGlmIG5waXYgaXMgc3VwcG9ydGVkLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogQnVmZmVyIHdpbGwgY29udGFpbiB0ZXh0IGluZGljYXRpbmcgbnBpdiBpcyBub3Qgc3VwcG9lcnRlZCBvbiB0aGUgcG9ydCwKKyAqIHRoZSBwb3J0IGlzIGFuIE5QSVYgcGh5c2ljYWwgcG9ydCwgb3IgaXQgaXMgYW4gbnBpdiB2aXJ0dWFsIHBvcnQgd2l0aAorICogdGhlIGlkIG9mIHRoZSB2cG9ydC4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19ucGl2X2luZm9fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgY2hhciAqYnVmKQpAQCAtNjIzLDYgKzk4NiwxNyBAQAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIk5QSVYgVmlydHVhbCAoVlBJICVkKVxuIiwgdnBvcnQtPnZwaSk7CiB9CiAKKy8qKgorICogbHBmY19wb2xsX3Nob3c6IFJldHVybiB0ZXh0IGFib3V0IHBvbGwgc3VwcG9ydCBmb3IgdGhlIGFkYXB0ZXIuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgY2ZnX3BvbGwgaW4gaGV4LgorICoKKyAqIE5vdGVzOgorICogY2ZnX3BvbGwgc2hvdWxkIGJlIGEgbHBmY19wb2xsaW5nX2ZsYWdzIHR5cGUuCisgKgorICogUmV0dXJuczogc2l6ZSBvZiBmb3JtYXR0ZWQgc3RyaW5nLgorICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfcG9sbF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJICAgICAgIGNoYXIgKmJ1ZikKQEAgLTYzNCw2ICsxMDA4LDIwIEBACiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJSN4XG4iLCBwaGJhLT5jZmdfcG9sbCk7CiB9CiAKKy8qKgorICogbHBmY19wb2xsX3N0b3JlOiBTZXQgdGhlIHZhbHVlIG9mIGNmZ19wb2xsIGZvciB0aGUgYWRhcHRlci4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb25lIG9yIG1vcmUgbHBmY19wb2xsaW5nX2ZsYWdzIHZhbHVlcy4KKyAqIEBjb3VudDogbm90IHVzZWQuCisgKgorICogTm90ZXM6CisgKiBidWYgY29udGVudHMgY29udmVydGVkIHRvIGludGVnZXIgYW5kIGNoZWNrZWQgZm9yIGEgdmFsaWQgdmFsdWUuCisgKgorICogUmV0dXJuczoKKyAqIC1FSU5WQUwgaWYgdGhlIGJ1ZmZlciBjb25ub3QgYmUgY29udmVydGVkIG9yIGlzIG91dCBvZiByYW5nZQorICogbGVuZ3RoIG9mIHRoZSBidWYgb24gc3VjY2VzcworICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfcG9sbF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKQEAgLTY5Miw2ICsxMDgwLDIwIEBACiAJcmV0dXJuIHN0cmxlbihidWYpOwogfQogCisvKioKKyAqIGxwZmNfcGFyYW1fc2hvdzogUmV0dXJuIGEgY2ZnIGF0dHJpYnV0ZSB2YWx1ZSBpbiBkZWNpbWFsLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogTWFjcm8gdGhhdCBnaXZlbiBhbiBhdHRyIGUuZy4gaGJhX3F1ZXVlX2RlcHRoIGV4cGFuZHMKKyAqIGludG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBuYW1lIGxwZmNfaGJhX3F1ZXVlX2RlcHRoX3Nob3cuCisgKgorICogbHBmY18jI2F0dHIjI19zaG93OiBSZXR1cm4gdGhlIGRlY2ltYWwgdmFsdWUgb2YgYW4gYWRhcHRlcnMgY2ZnX3h4eCBmaWVsZC4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaW4gZGVjaW1hbC4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiAjZGVmaW5lIGxwZmNfcGFyYW1fc2hvdyhhdHRyKQlcCiBzdGF0aWMgc3NpemVfdCBcCiBscGZjXyMjYXR0ciMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXApAQCAtNzA2LDYgKzExMDgsMjAgQEAKIAkJCXBoYmEtPmNmZ18jI2F0dHIpO1wKIH0KIAorLyoqCisgKiBscGZjX3BhcmFtX2hleF9zaG93OiBSZXR1cm4gYSBjZmcgYXR0cmlidXRlIHZhbHVlIGluIGhleC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIE1hY3JvIHRoYXQgZ2l2ZW4gYW4gYXR0ciBlLmcuIGhiYV9xdWV1ZV9kZXB0aCBleHBhbmRzCisgKiBpbnRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgbmFtZSBscGZjX2hiYV9xdWV1ZV9kZXB0aF9zaG93CisgKgorICogbHBmY18jI2F0dHIjI19zaG93OiBSZXR1cm4gdGhlIGhleCB2YWx1ZSBvZiBhbiBhZGFwdGVycyBjZmdfeHh4IGZpZWxkLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpbiBoZXhpZGVjaW1hbC4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiAjZGVmaW5lIGxwZmNfcGFyYW1faGV4X3Nob3coYXR0cikJXAogc3RhdGljIHNzaXplX3QgXAogbHBmY18jI2F0dHIjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIFwKQEAgLTcyMCw2ICsxMTM2LDI1IEBACiAJCQlwaGJhLT5jZmdfIyNhdHRyKTtcCiB9CiAKKy8qKgorICogbHBmY19wYXJhbV9pbml0OiBJbnRpYWxpemVzIGEgY2ZnIGF0dHJpYnV0ZS4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIE1hY3JvIHRoYXQgZ2l2ZW4gYW4gYXR0ciBlLmcuIGhiYV9xdWV1ZV9kZXB0aCBleHBhbmRzCisgKiBpbnRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgbmFtZSBscGZjX2hiYV9xdWV1ZV9kZXB0aF9pbml0LiBUaGUgbWFjcm8gYWxzbworICogdGFrZXMgYSBkZWZhdWx0IGFyZ3VtZW50LCBhIG1pbmltdW0gYW5kIG1heGltdW0gYXJndW1lbnQuCisgKgorICogbHBmY18jI2F0dHIjI19pbml0OiBJbml0aWFsaXplcyBhbiBhdHRyaWJ1dGUuCisgKiBAcGhiYTogcG9pbnRlciB0aGUgdGhlIGFkYXB0ZXIgc3RydWN0dXJlLgorICogQHZhbDogaW50ZWdlciBhdHRyaWJ1dGUgdmFsdWUuCisgKgorICogVmFsaWRhdGVzIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgdGhlbiBzZXRzIHRoZSBhZGFwdGVyIGNvbmZpZyBmaWVsZAorICogYWNjb3JkaW5nbHksIG9yIHVzZXMgdGhlIGRlZmF1bHQgaWYgb3V0IG9mIHJhbmdlIGFuZCBwcmludHMgYW4gZXJyb3IgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBvbiBzdWNjZXNzCisgKiAtRUlOVkFMIGlmIGRlZmF1bHQgdXNlZAorICoqLwogI2RlZmluZSBscGZjX3BhcmFtX2luaXQoYXR0ciwgZGVmYXVsdCwgbWludmFsLCBtYXh2YWwpCVwKIHN0YXRpYyBpbnQgXAogbHBmY18jI2F0dHIjI19pbml0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgaW50IHZhbCkgXApAQCAtNzM1LDYgKzExNzAsMjYgQEAKIAlyZXR1cm4gLUVJTlZBTDtcCiB9CiAKKy8qKgorICogbHBmY19wYXJhbV9zZXQ6IFNldCBhIGNmZyBhdHRyaWJ1dGUgdmFsdWUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBNYWNybyB0aGF0IGdpdmVuIGFuIGF0dHIgZS5nLiBoYmFfcXVldWVfZGVwdGggZXhwYW5kcworICogaW50byBhIGZ1bmN0aW9uIHdpdGggdGhlIG5hbWUgbHBmY19oYmFfcXVldWVfZGVwdGhfc2V0CisgKgorICogbHBmY18jI2F0dHIjI19zZXQ6IFNldHMgYW4gYXR0cmlidXRlIHZhbHVlLgorICogQHBoYmE6IHBvaW50ZXIgdGhlIHRoZSBhZGFwdGVyIHN0cnVjdHVyZS4KKyAqIEB2YWw6IGludGVnZXIgYXR0cmlidXRlIHZhbHVlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogVmFsaWRhdGVzIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgdGhlbiBzZXRzIHRoZQorICogYWRhcHRlciBjb25maWcgZmllbGQgaWYgaW4gdGhlIHZhbGlkIHJhbmdlLiBwcmludHMgZXJyb3IgbWVzc2FnZQorICogYW5kIGRvZXMgbm90IHNldCB0aGUgcGFyYW1ldGVyIGlmIGludmFsaWQuCisgKgorICogUmV0dXJuczoKKyAqIHplcm8gb24gc3VjY2VzcworICogLUVJTlZBTCBpZiB2YWwgaXMgaW52YWxpZAorICoqLwogI2RlZmluZSBscGZjX3BhcmFtX3NldChhdHRyLCBkZWZhdWx0LCBtaW52YWwsIG1heHZhbCkJXAogc3RhdGljIGludCBcCiBscGZjXyMjYXR0ciMjX3NldChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIGludCB2YWwpIFwKQEAgLTc0OSw2ICsxMjA0LDI3IEBACiAJcmV0dXJuIC1FSU5WQUw7XAogfQogCisvKioKKyAqIGxwZmNfcGFyYW1fc3RvcmU6IFNldCBhIHZwb3J0IGF0dHJpYnV0ZSB2YWx1ZS4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIE1hY3JvIHRoYXQgZ2l2ZW4gYW4gYXR0ciBlLmcuIGhiYV9xdWV1ZV9kZXB0aCBleHBhbmRzCisgKiBpbnRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgbmFtZSBscGZjX2hiYV9xdWV1ZV9kZXB0aF9zdG9yZS4KKyAqCisgKiBscGZjXyMjYXR0ciMjX3N0b3JlOiBTZXQgYW4gc3R0cmlidXRlIHZhbHVlLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBjb250YWlucyB0aGUgYXR0cmlidXRlIHZhbHVlIGluIGFzY2lpLgorICogQGNvdW50OiBub3QgdXNlZC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIENvbnZlcnQgdGhlIGFzY2lpIHRleHQgbnVtYmVyIHRvIGFuIGludGVnZXIsIHRoZW4KKyAqIHVzZSB0aGUgbHBmY18jI2F0dHIjI19zZXQgZnVuY3Rpb24gdG8gc2V0IHRoZSB2YWx1ZS4KKyAqCisgKiBSZXR1cm5zOgorICogLUVJTlZBTCBpZiB2YWwgaXMgaW52YWxpZCBvciBscGZjXyMjYXR0ciMjX3NldCgpIGZhaWxzCisgKiBsZW5ndGggb2YgYnVmZmVyIHVwb24gc3VjY2Vzcy4KKyAqKi8KICNkZWZpbmUgbHBmY19wYXJhbV9zdG9yZShhdHRyKQlcCiBzdGF0aWMgc3NpemVfdCBcCiBscGZjXyMjYXR0ciMjX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIFwKQEAgLTc2OCw2ICsxMjQ0LDIwIEBACiAJCXJldHVybiAtRUlOVkFMO1wKIH0KIAorLyoqCisgKiBscGZjX3Zwb3J0X3BhcmFtX3Nob3c6IFJldHVybiBkZWNpbWFsIGZvcm1hdHRlZCBjZmcgYXR0cmlidXRlIHZhbHVlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogTWFjcm8gdGhhdCBnaXZlbiBhbiBhdHRyIGUuZy4gaGJhX3F1ZXVlX2RlcHRoIGV4cGFuZHMKKyAqIGludG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBuYW1lIGxwZmNfaGJhX3F1ZXVlX2RlcHRoX3Nob3cKKyAqCisgKiBscGZjXyMjYXR0ciMjX3Nob3c6IHByaW50cyB0aGUgYXR0cmlidXRlIHZhbHVlIGluIGRlY2ltYWwuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgYXR0cmlidXRlIHZhbHVlIGluIGRlY2ltYWwuCisgKgorICogUmV0dXJuczogbGVuZ3RoIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiAjZGVmaW5lIGxwZmNfdnBvcnRfcGFyYW1fc2hvdyhhdHRyKQlcCiBzdGF0aWMgc3NpemVfdCBcCiBscGZjXyMjYXR0ciMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXApAQCAtNzgwLDYgKzEyNzAsMjEgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgdnBvcnQtPmNmZ18jI2F0dHIpO1wKIH0KIAorLyoqCisgKiBscGZjX3Zwb3J0X3BhcmFtX2hleF9zaG93OiBSZXR1cm4gaGV4IGZvcm1hdHRlZCBhdHRyaWJ1dGUgdmFsdWUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBNYWNybyB0aGF0IGdpdmVuIGFuIGF0dHIgZS5nLgorICogaGJhX3F1ZXVlX2RlcHRoIGV4cGFuZHMgaW50byBhIGZ1bmN0aW9uIHdpdGggdGhlIG5hbWUKKyAqIGxwZmNfaGJhX3F1ZXVlX2RlcHRoX3Nob3cKKyAqCisgKiBscGZjXyMjYXR0ciMjX3Nob3c6IHByaW50cyB0aGUgYXR0cmlidXRlIHZhbHVlIGluIGhleGlkZWNpbWFsLgorICogQGRldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYXR0cjogZGV2aWNlIGF0dHJpYnV0ZSwgbm90IHVzZWQuCisgKiBAYnVmOiBvbiByZXR1cm4gY29udGFpbnMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpbiBoZXhpZGVjaW1hbC4KKyAqCisgKiBSZXR1cm5zOiBsZW5ndGggb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KICNkZWZpbmUgbHBmY192cG9ydF9wYXJhbV9oZXhfc2hvdyhhdHRyKQlcCiBzdGF0aWMgc3NpemVfdCBcCiBscGZjXyMjYXR0ciMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXApAQCAtNzkyLDYgKzEyOTcsMjQgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlI3hcbiIsIHZwb3J0LT5jZmdfIyNhdHRyKTtcCiB9CiAKKy8qKgorICogbHBmY192cG9ydF9wYXJhbV9pbml0OiBJbml0aWFsaXplIGEgdnBvcnQgY2ZnIGF0dHJpYnV0ZS4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIE1hY3JvIHRoYXQgZ2l2ZW4gYW4gYXR0ciBlLmcuIGhiYV9xdWV1ZV9kZXB0aCBleHBhbmRzCisgKiBpbnRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgbmFtZSBscGZjX2hiYV9xdWV1ZV9kZXB0aF9pbml0LiBUaGUgbWFjcm8gYWxzbworICogdGFrZXMgYSBkZWZhdWx0IGFyZ3VtZW50LCBhIG1pbmltdW0gYW5kIG1heGltdW0gYXJndW1lbnQuCisgKgorICogbHBmY18jI2F0dHIjI19pbml0OiB2YWxpZGF0ZXMgdGhlIG1pbiBhbmQgbWF4IHZhbHVlcyB0aGVuIHNldHMgdGhlCisgKiBhZGFwdGVyIGNvbmZpZyBmaWVsZCBhY2NvcmRpbmdseSwgb3IgdXNlcyB0aGUgZGVmYXVsdCBpZiBvdXQgb2YgcmFuZ2UKKyAqIGFuZCBwcmludHMgYW4gZXJyb3IgbWVzc2FnZS4KKyAqIEBwaGJhOiBwb2ludGVyIHRoZSB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUuCisgKiBAdmFsOiBpbnRlZ2VyIGF0dHJpYnV0ZSB2YWx1ZS4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBvbiBzdWNjZXNzCisgKiAtRUlOVkFMIGlmIGRlZmF1bHQgdXNlZAorICoqLwogI2RlZmluZSBscGZjX3Zwb3J0X3BhcmFtX2luaXQoYXR0ciwgZGVmYXVsdCwgbWludmFsLCBtYXh2YWwpCVwKIHN0YXRpYyBpbnQgXAogbHBmY18jI2F0dHIjI19pbml0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHZhbCkgXApAQCAtODAxLDEyICsxMzI0LDI5IEBACiAJCXJldHVybiAwO1wKIAl9XAogCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwgXAotCQkJICIwNDQ5IGxwZmNfIiNhdHRyIiBhdHRyaWJ1dGUgY2Fubm90IGJlIHNldCB0byAlZCwgIlwKKwkJCSAiMDQyMyBscGZjXyIjYXR0ciIgYXR0cmlidXRlIGNhbm5vdCBiZSBzZXQgdG8gJWQsICJcCiAJCQkgImFsbG93ZWQgcmFuZ2UgaXMgWyIjbWludmFsIiwgIiNtYXh2YWwiXVxuIiwgdmFsKTsgXAogCXZwb3J0LT5jZmdfIyNhdHRyID0gZGVmYXVsdDtcCiAJcmV0dXJuIC1FSU5WQUw7XAogfQogCisvKioKKyAqIGxwZmNfdnBvcnRfcGFyYW1fc2V0OiBTZXQgYSB2cG9ydCBjZmcgYXR0cmlidXRlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogTWFjcm8gdGhhdCBnaXZlbiBhbiBhdHRyIGUuZy4gaGJhX3F1ZXVlX2RlcHRoIGV4cGFuZHMKKyAqIGludG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBuYW1lIGxwZmNfaGJhX3F1ZXVlX2RlcHRoX3NldAorICoKKyAqIGxwZmNfIyNhdHRyIyNfc2V0OiB2YWxpZGF0ZXMgdGhlIG1pbiBhbmQgbWF4IHZhbHVlcyB0aGVuIHNldHMgdGhlCisgKiBhZGFwdGVyIGNvbmZpZyBmaWVsZCBpZiBpbiB0aGUgdmFsaWQgcmFuZ2UuIHByaW50cyBlcnJvciBtZXNzYWdlCisgKiBhbmQgZG9lcyBub3Qgc2V0IHRoZSBwYXJhbWV0ZXIgaWYgaW52YWxpZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRoZSB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUuCisgKiBAdmFsOglpbnRlZ2VyIGF0dHJpYnV0ZSB2YWx1ZS4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBvbiBzdWNjZXNzCisgKiAtRUlOVkFMIGlmIHZhbCBpcyBpbnZhbGlkCisgKiovCiAjZGVmaW5lIGxwZmNfdnBvcnRfcGFyYW1fc2V0KGF0dHIsIGRlZmF1bHQsIG1pbnZhbCwgbWF4dmFsKQlcCiBzdGF0aWMgaW50IFwKIGxwZmNfIyNhdHRyIyNfc2V0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHZhbCkgXApAQCAtODE2LDExICsxMzU2LDI4IEBACiAJCXJldHVybiAwO1wKIAl9XAogCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwgXAotCQkJICIwNDUwIGxwZmNfIiNhdHRyIiBhdHRyaWJ1dGUgY2Fubm90IGJlIHNldCB0byAlZCwgIlwKKwkJCSAiMDQyNCBscGZjXyIjYXR0ciIgYXR0cmlidXRlIGNhbm5vdCBiZSBzZXQgdG8gJWQsICJcCiAJCQkgImFsbG93ZWQgcmFuZ2UgaXMgWyIjbWludmFsIiwgIiNtYXh2YWwiXVxuIiwgdmFsKTsgXAogCXJldHVybiAtRUlOVkFMO1wKIH0KIAorLyoqCisgKiBscGZjX3Zwb3J0X3BhcmFtX3N0b3JlOiBTZXQgYSB2cG9ydCBhdHRyaWJ1dGUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBNYWNybyB0aGF0IGdpdmVuIGFuIGF0dHIgZS5nLiBoYmFfcXVldWVfZGVwdGgKKyAqIGV4cGFuZHMgaW50byBhIGZ1bmN0aW9uIHdpdGggdGhlIG5hbWUgbHBmY19oYmFfcXVldWVfZGVwdGhfc3RvcmUKKyAqCisgKiBscGZjXyMjYXR0ciMjX3N0b3JlOiBjb252ZXJ0IHRoZSBhc2NpaSB0ZXh0IG51bWJlciB0byBhbiBpbnRlZ2VyLCB0aGVuCisgKiB1c2UgdGhlIGxwZmNfIyNhdHRyIyNfc2V0IGZ1bmN0aW9uIHRvIHNldCB0aGUgdmFsdWUuCisgKiBAY2RldjogY2xhc3MgZGV2aWNlIHRoYXQgaXMgY29udmVydGVkIGludG8gYSBTY3NpX2hvc3QuCisgKiBAYnVmOgljb250YWlucyB0aGUgYXR0cmlidXRlIHZhbHVlIGluIGRlY2ltYWwuCisgKiBAY291bnQ6IG5vdCB1c2VkLgorICoKKyAqIFJldHVybnM6CisgKiAtRUlOVkFMIGlmIHZhbCBpcyBpbnZhbGlkIG9yIGxwZmNfIyNhdHRyIyNfc2V0KCkgZmFpbHMKKyAqIGxlbmd0aCBvZiBidWZmZXIgdXBvbiBzdWNjZXNzLgorICoqLwogI2RlZmluZSBscGZjX3Zwb3J0X3BhcmFtX3N0b3JlKGF0dHIpCVwKIHN0YXRpYyBzc2l6ZV90IFwKIGxwZmNfIyNhdHRyIyNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXApAQCAtOTQxLDYgKzE0OTgsNyBAQAogCQkgICBscGZjX29wdGlvbl9yb21fdmVyc2lvbl9zaG93LCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRUUihudW1fZGlzY292ZXJlZF9wb3J0cywgU19JUlVHTywKIAkJICAgbHBmY19udW1fZGlzY292ZXJlZF9wb3J0c19zaG93LCBOVUxMKTsKK3N0YXRpYyBERVZJQ0VfQVRUUihtZW5sb19tZ210X21vZGUsIFNfSVJVR08sIGxwZmNfbWxvbWdtdF9zaG93LCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRUUihucG9ydF9ldnRfY250LCBTX0lSVUdPLCBscGZjX25wb3J0X2V2dF9jbnRfc2hvdywgTlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIobHBmY19kcnZyX3ZlcnNpb24sIFNfSVJVR08sIGxwZmNfZHJ2cl92ZXJzaW9uX3Nob3csIE5VTEwpOwogc3RhdGljIERFVklDRV9BVFRSKGJvYXJkX21vZGUsIFNfSVJVR08gfCBTX0lXVVNSLApAQCAtOTU4LDYgKzE1MTYsMTcgQEAKIAogc3RhdGljIGNoYXIgKmxwZmNfc29mdF93d25fa2V5ID0gIkM5OUc3MVNMODAzMkEiOwogCisvKioKKyAqIGxwZmNfc29mdF93d25fZW5hYmxlX3N0b3JlOiBBbGxvd3Mgc2V0dGluZyBvZiB0aGUgd3duIGlmIHRoZSBrZXkgaXMgdmFsaWQuCisgKiBAZGV2OiBjbGFzcyBkZXZpY2UgdGhhdCBpcyBjb252ZXJ0ZWQgaW50byBhIFNjc2lfaG9zdC4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IGNvbnRhaW5pbmcgdGhlIHN0cmluZyBscGZjX3NvZnRfd3duX2tleS4KKyAqIEBjb3VudDogbXVzdCBiZSBzaXplIG9mIGxwZmNfc29mdF93d25fa2V5LgorICoKKyAqIFJldHVybnM6CisgKiAtRUlOVkFMIGlmIHRoZSBidWZmZXIgZG9lcyBub3QgY29udGFpbiBscGZjX3NvZnRfd3duX2tleQorICogbGVuZ3RoIG9mIGJ1ZiBpbmRpY2F0ZXMgc3VjY2VzcworICoqLwogc3RhdGljIHNzaXplX3QKIGxwZmNfc29mdF93d25fZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKQEAgLTk5NCw2ICsxNTYzLDE0IEBACiBzdGF0aWMgREVWSUNFX0FUVFIobHBmY19zb2Z0X3d3bl9lbmFibGUsIFNfSVdVU1IsIE5VTEwsCiAJCSAgIGxwZmNfc29mdF93d25fZW5hYmxlX3N0b3JlKTsKIAorLyoqCisgKiBscGZjX3NvZnRfd3dwbl9zaG93OiBSZXR1cm4gdGhlIGNmZyBzb2Z0IHd3IHBvcnQgbmFtZSBvZiB0aGUgYWRhcHRlci4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSB3d3BuIGluIGhleGlkZWNpbWFsLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX3NvZnRfd3dwbl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCSAgICBjaGFyICpidWYpCkBAIC0xMDA2LDcgKzE1ODMsMTkgQEAKIAkJCSh1bnNpZ25lZCBsb25nIGxvbmcpcGhiYS0+Y2ZnX3NvZnRfd3dwbik7CiB9CiAKLQorLyoqCisgKiBscGZjX3NvZnRfd3dwbl9zdG9yZTogU2V0IHRoZSB3dyBwb3J0IG5hbWUgb2YgdGhlIGFkYXB0ZXIuCisgKiBAZGV2IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1ZjogY29udGFpbnMgdGhlIHd3cG4gaW4gaGV4aWRlY2ltYWwuCisgKiBAY291bnQ6IG51bWJlciBvZiB3d3BuIGJ5dGVzIGluIGJ1ZgorICoKKyAqIFJldHVybnM6CisgKiAtRUFDQ0VTIGhiYSByZXNldCBub3QgZW5hYmxlZCwgYWRhcHRlciBvdmVyIHRlbXAKKyAqIC1FSU5WQUwgc29mdCB3d24gbm90IGVuYWJsZWQsIGNvdW50IGlzIGludmFsaWQsIGludmFsaWQgd3dwbiBieXRlIGludmFsaWQKKyAqIC1FSU8gZXJyb3IgdGFraW5nIGFkYXB0ZXIgb2ZmbGluZSBvciBvbmxpbmUKKyAqIHZhbHVlIG9mIGNvdW50IG9uIHN1Y2Nlc3MKKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX3NvZnRfd3dwbl9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQpAQCAtMTA4MCw2ICsxNjY5LDE0IEBACiBzdGF0aWMgREVWSUNFX0FUVFIobHBmY19zb2Z0X3d3cG4sIFNfSVJVR08gfCBTX0lXVVNSLFwKIAkJICAgbHBmY19zb2Z0X3d3cG5fc2hvdywgbHBmY19zb2Z0X3d3cG5fc3RvcmUpOwogCisvKioKKyAqIGxwZmNfc29mdF93d25uX3Nob3c6IFJldHVybiB0aGUgY2ZnIHNvZnQgd3cgbm9kZSBuYW1lIGZvciB0aGUgYWRhcHRlci4KKyAqIEBkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGF0dHI6IGRldmljZSBhdHRyaWJ1dGUsIG5vdCB1c2VkLgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSB3d25uIGluIGhleGlkZWNpbWFsLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX3NvZnRfd3dubl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCSAgICBjaGFyICpidWYpCkBAIC0xMDkwLDcgKzE2ODcsMTYgQEAKIAkJCSh1bnNpZ25lZCBsb25nIGxvbmcpcGhiYS0+Y2ZnX3NvZnRfd3dubik7CiB9CiAKLQorLyoqCisgKiBscGZjX3NvZnRfd3dubl9zdG9yZTogc2V0cyB0aGUgd3cgbm9kZSBuYW1lIG9mIHRoZSBhZGFwdGVyLgorICogQGNkZXY6IGNsYXNzIGRldmljZSB0aGF0IGlzIGNvbnZlcnRlZCBpbnRvIGEgU2NzaV9ob3N0LgorICogQGJ1ZjogY29udGFpbnMgdGhlIHd3IG5vZGUgbmFtZSBpbiBoZXhpZGVjaW1hbC4KKyAqIEBjb3VudDogbnVtYmVyIG9mIHd3bm4gYnl0ZXMgaW4gYnVmLgorICoKKyAqIFJldHVybnM6CisgKiAtRUlOVkFMIHNvZnQgd3duIG5vdCBlbmFibGVkLCBjb3VudCBpcyBpbnZhbGlkLCBpbnZhbGlkIHd3bm4gYnl0ZSBpbnZhbGlkCisgKiB2YWx1ZSBvZiBjb3VudCBvbiBzdWNjZXNzCisgKiovCiBzdGF0aWMgc3NpemVfdAogbHBmY19zb2Z0X3d3bm5fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKQEAgLTExNzgsNiArMTc4NCwxNSBAQAogTU9EVUxFX1BBUk1fREVTQyhscGZjX25vZGV2X3RtbywKIAkJICJTZWNvbmRzIGRyaXZlciB3aWxsIGhvbGQgSS9PIHdhaXRpbmcgIgogCQkgImZvciBhIGRldmljZSB0byBjb21lIGJhY2siKTsKKworLyoqCisgKiBscGZjX25vZGV2X3Rtb19zaG93OiBSZXR1cm4gdGhlIGhiYSBkZXYgbG9zcyB0aW1lb3V0IHZhbHVlLgorICogQGRldjogY2xhc3MgY29udmVydGVkIHRvIGEgU2NzaV9ob3N0IHN0cnVjdHVyZS4KKyAqIEBhdHRyOiBkZXZpY2UgYXR0cmlidXRlLCBub3QgdXNlZC4KKyAqIEBidWY6IG9uIHJldHVybiBjb250YWlucyB0aGUgZGV2IGxvc3MgdGltZW91dCBpbiBkZWNpbWFsLgorICoKKyAqIFJldHVybnM6IHNpemUgb2YgZm9ybWF0dGVkIHN0cmluZy4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX25vZGV2X3Rtb19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCSAgICBjaGFyICpidWYpCkBAIC0xMTg5LDYgKzE4MDQsMjEgQEAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwJdnBvcnQtPmNmZ19kZXZsb3NzX3Rtbyk7CiB9CiAKKy8qKgorICogbHBmY19ub2Rldl90bW9faW5pdDogU2V0IHRoZSBoYmEgbm9kZXYgdGltZW91dCB2YWx1ZS4KKyAqIEB2cG9ydDogbHBmYyB2cG9ydCBzdHJ1Y3R1cmUgcG9pbnRlci4KKyAqIEB2YWw6IGNvbnRhaW5zIHRoZSBub2RldiB0aW1lb3V0IHZhbHVlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogSWYgdGhlIGRldmxvc3MgdG1vIGlzIGFscmVhZHkgc2V0IHRoZW4gbm9kZXYgdG1vIGlzIHNldCB0byBkZXZsb3NzIHRtbywKKyAqIGEga2VybmVsIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCBhbmQgemVybyBpcyByZXR1cm5lZC4KKyAqIEVsc2UgaWYgdmFsIGlzIGluIHJhbmdlIHRoZW4gbm9kZXYgdG1vIGFuZCBkZXZsb3NzIHRtbyBhcmUgc2V0IHRvIHZhbC4KKyAqIE90aGVyd2lzZSBub2RldiB0bW8gaXMgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlLgorICoKKyAqIFJldHVybnM6CisgKiB6ZXJvIGlmIGFscmVhZHkgc2V0IG9yIGlmIHZhbCBpcyBpbiByYW5nZQorICogLUVJTlZBTCB2YWwgb3V0IG9mIHJhbmdlCisgKiovCiBzdGF0aWMgaW50CiBscGZjX25vZGV2X3Rtb19pbml0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHZhbCkKIHsKQEAgLTExOTYsNyArMTgyNiw3IEBACiAJCXZwb3J0LT5jZmdfbm9kZXZfdG1vID0gdnBvcnQtPmNmZ19kZXZsb3NzX3RtbzsKIAkJaWYgKHZhbCAhPSBMUEZDX0RFRl9ERVZMT1NTX1RNTykKIAkJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwKLQkJCQkJICIwNDAyIElnbm9yaW5nIG5vZGV2X3RtbyBtb2R1bGUgIgorCQkJCQkgIjA0MDcgSWdub3Jpbmcgbm9kZXZfdG1vIG1vZHVsZSAiCiAJCQkJCSAicGFyYW1ldGVyIGJlY2F1c2UgZGV2bG9zc190bW8gaXMgIgogCQkJCQkgInNldC5cbiIpOwogCQlyZXR1cm4gMDsKQEAgLTEyMTUsNiArMTg0NSwxMyBAQAogCXJldHVybiAtRUlOVkFMOwogfQogCisvKioKKyAqIGxwZmNfdXBkYXRlX3Jwb3J0X2Rldmxvc3NfdG1vOiBVcGRhdGUgZGV2IGxvc3MgdG1vIHZhbHVlLgorICogQHZwb3J0OiBscGZjIHZwb3J0IHN0cnVjdHVyZSBwb2ludGVyLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogVXBkYXRlIGFsbCB0aGUgbmRscCdzIGRldiBsb3NzIHRtbyB3aXRoIHRoZSB2cG9ydCBkZXZsb3NzIHRtbyB2YWx1ZS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3VwZGF0ZV9ycG9ydF9kZXZsb3NzX3RtbyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0xMjI5LDYgKzE4NjYsMjEgQEAKIAlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CiB9CiAKKy8qKgorICogbHBmY19ub2Rldl90bW9fc2V0OiBTZXQgdGhlIHZwb3J0IG5vZGV2IHRtbyBhbmQgZGV2bG9zcyB0bW8gdmFsdWVzLgorICogQHZwb3J0OiBscGZjIHZwb3J0IHN0cnVjdHVyZSBwb2ludGVyLgorICogQHZhbDogY29udGFpbnMgdGhlIHRtbyB2YWx1ZS4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIElmIHRoZSBkZXZsb3NzIHRtbyBpcyBhbHJlYWR5IHNldCBvciB0aGUgdnBvcnQgZGV2IGxvc3MgdG1vIGhhcyBjaGFuZ2VkCisgKiB0aGVuIGEga2VybmVsIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCBhbmQgemVybyBpcyByZXR1cm5lZC4KKyAqIEVsc2UgaWYgdmFsIGlzIGluIHJhbmdlIHRoZW4gbm9kZXYgdG1vIGFuZCBkZXZsb3NzIHRtbyBhcmUgc2V0IHRvIHZhbC4KKyAqIE90aGVyd2lzZSBub2RldiB0bW8gaXMgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlLgorICoKKyAqIFJldHVybnM6CisgKiB6ZXJvIGlmIGFscmVhZHkgc2V0IG9yIGlmIHZhbCBpcyBpbiByYW5nZQorICogLUVJTlZBTCB2YWwgb3V0IG9mIHJhbmdlCisgKiovCiBzdGF0aWMgaW50CiBscGZjX25vZGV2X3Rtb19zZXQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBpbnQgdmFsKQogewpAQCAtMTI2OSw2ICsxOTIxLDIxIEBACiBscGZjX3Zwb3J0X3BhcmFtX2luaXQoZGV2bG9zc190bW8sIExQRkNfREVGX0RFVkxPU1NfVE1PLAogCQkgICAgICBMUEZDX01JTl9ERVZMT1NTX1RNTywgTFBGQ19NQVhfREVWTE9TU19UTU8pCiBscGZjX3Zwb3J0X3BhcmFtX3Nob3coZGV2bG9zc190bW8pCisKKy8qKgorICogbHBmY19kZXZsb3NzX3Rtb19zZXQ6IFNldHMgdnBvcnQgbm9kZXYgdG1vLCBkZXZsb3NzIHRtbyB2YWx1ZXMsIGNoYW5nZWQgYml0LgorICogQHZwb3J0OiBscGZjIHZwb3J0IHN0cnVjdHVyZSBwb2ludGVyLgorICogQHZhbDogY29udGFpbnMgdGhlIHRtbyB2YWx1ZS4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIElmIHZhbCBpcyBpbiBhIHZhbGlkIHJhbmdlIHRoZW4gc2V0IHRoZSB2cG9ydCBub2RldiB0bW8sCisgKiBkZXZsb3NzIHRtbywgYWxzbyBzZXQgdGhlIHZwb3J0IGRldiBsb3NzIHRtbyBjaGFuZ2VkIGZsYWcuCisgKiBFbHNlIGEga2VybmVsIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZC4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBpZiB2YWwgaXMgaW4gcmFuZ2UKKyAqIC1FSU5WQUwgdmFsIG91dCBvZiByYW5nZQorICoqLwogc3RhdGljIGludAogbHBmY19kZXZsb3NzX3Rtb19zZXQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBpbnQgdmFsKQogewpAQCAtMTM2NiwxMiArMjAzMywyNyBAQAogCQkgIlJlc3RyaWN0IHZpcnR1YWwgcG9ydHMgbG9naW4gdG8gcmVtb3RlIGluaXRpYXRvcnMuIik7CiBscGZjX3Zwb3J0X3BhcmFtX3Nob3cocmVzdHJpY3RfbG9naW4pOwogCisvKioKKyAqIGxwZmNfcmVzdHJpY3RfbG9naW5faW5pdDogU2V0IHRoZSB2cG9ydCByZXN0cmljdCBsb2dpbiBmbGFnLgorICogQHZwb3J0OiBscGZjIHZwb3J0IHN0cnVjdHVyZSBwb2ludGVyLgorICogQHZhbDogY29udGFpbnMgdGhlIHJlc3RyaWN0IGxvZ2luIHZhbHVlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogSWYgdmFsIGlzIG5vdCBpbiBhIHZhbGlkIHJhbmdlIHRoZW4gbG9nIGEga2VybmVsIGVycm9yIG1lc3NhZ2UgYW5kIHNldAorICogdGhlIHZwb3J0IHJlc3RyaWN0IGxvZ2luIHRvIG9uZS4KKyAqIElmIHRoZSBwb3J0IHR5cGUgaXMgcGh5c2ljYWwgY2xlYXIgdGhlIHJlc3RyaWN0IGxvZ2luIGZsYWcgYW5kIHJldHVybi4KKyAqIEVsc2Ugc2V0IHRoZSByZXN0cmljdCBsb2dpbiBmbGFnIHRvIHZhbC4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBpZiB2YWwgaXMgaW4gcmFuZ2UKKyAqIC1FSU5WQUwgdmFsIG91dCBvZiByYW5nZQorICoqLwogc3RhdGljIGludAogbHBmY19yZXN0cmljdF9sb2dpbl9pbml0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHZhbCkKIHsKIAlpZiAodmFsIDwgMCB8fCB2YWwgPiAxKSB7CiAJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwKLQkJCQkgIjA0NDkgbHBmY19yZXN0cmljdF9sb2dpbiBhdHRyaWJ1dGUgY2Fubm90ICIKKwkJCQkgIjA0MjIgbHBmY19yZXN0cmljdF9sb2dpbiBhdHRyaWJ1dGUgY2Fubm90ICIKIAkJCQkgImJlIHNldCB0byAlZCwgYWxsb3dlZCByYW5nZSBpcyBbMCwgMV1cbiIsCiAJCQkJIHZhbCk7CiAJCXZwb3J0LT5jZmdfcmVzdHJpY3RfbG9naW4gPSAxOwpAQCAtMTM4NSwxMiArMjA2NywyOCBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfcmVzdHJpY3RfbG9naW5fc2V0OiBTZXQgdGhlIHZwb3J0IHJlc3RyaWN0IGxvZ2luIGZsYWcuCisgKiBAdnBvcnQ6IGxwZmMgdnBvcnQgc3RydWN0dXJlIHBvaW50ZXIuCisgKiBAdmFsOiBjb250YWlucyB0aGUgcmVzdHJpY3QgbG9naW4gdmFsdWUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBJZiB2YWwgaXMgbm90IGluIGEgdmFsaWQgcmFuZ2UgdGhlbiBsb2cgYSBrZXJuZWwgZXJyb3IgbWVzc2FnZSBhbmQgc2V0CisgKiB0aGUgdnBvcnQgcmVzdHJpY3QgbG9naW4gdG8gb25lLgorICogSWYgdGhlIHBvcnQgdHlwZSBpcyBwaHlzaWNhbCBhbmQgdGhlIHZhbCBpcyBub3QgemVybyBsb2cgYSBrZXJuZWwKKyAqIGVycm9yIG1lc3NhZ2UsIGNsZWFyIHRoZSByZXN0cmljdCBsb2dpbiBmbGFnIGFuZCByZXR1cm4gemVyby4KKyAqIEVsc2Ugc2V0IHRoZSByZXN0cmljdCBsb2dpbiBmbGFnIHRvIHZhbC4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBpZiB2YWwgaXMgaW4gcmFuZ2UKKyAqIC1FSU5WQUwgdmFsIG91dCBvZiByYW5nZQorICoqLwogc3RhdGljIGludAogbHBmY19yZXN0cmljdF9sb2dpbl9zZXQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBpbnQgdmFsKQogewogCWlmICh2YWwgPCAwIHx8IHZhbCA+IDEpIHsKIAkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCSAiMDQ1MCBscGZjX3Jlc3RyaWN0X2xvZ2luIGF0dHJpYnV0ZSBjYW5ub3QgIgorCQkJCSAiMDQyNSBscGZjX3Jlc3RyaWN0X2xvZ2luIGF0dHJpYnV0ZSBjYW5ub3QgIgogCQkJCSAiYmUgc2V0IHRvICVkLCBhbGxvd2VkIHJhbmdlIGlzIFswLCAxXVxuIiwKIAkJCQkgdmFsKTsKIAkJdnBvcnQtPmNmZ19yZXN0cmljdF9sb2dpbiA9IDE7CkBAIC0xNDQxLDYgKzIxMzksMjMgQEAKICMgU2V0IGxvb3AgbW9kZSBpZiB5b3Ugd2FudCB0byBydW4gYXMgYW4gTkxfUG9ydC4gVmFsdWUgcmFuZ2UgaXMgWzAsMHg2XS4KICMgRGVmYXVsdCB2YWx1ZSBpcyAwLgogKi8KKworLyoqCisgKiBscGZjX3RvcG9sb2d5X3NldDogU2V0IHRoZSBhZGFwdGVycyB0b3BvbG9neSBmaWVsZC4KKyAqIEBwaGJhOiBscGZjX2hiYSBwb2ludGVyLgorICogQHZhbDogdG9wb2xvZ3kgdmFsdWUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBJZiB2YWwgaXMgaW4gYSB2YWxpZCByYW5nZSB0aGVuIHNldCB0aGUgYWRhcHRlcidzIHRvcG9sb2d5IGZpZWxkIGFuZAorICogaXNzdWUgYSBsaXA7IGlmIHRoZSBsaXAgZmFpbHMgcmVzZXQgdGhlIHRvcG9sb2d5IHRvIHRoZSBvbGQgdmFsdWUuCisgKgorICogSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiByYW5nZSBsb2cgYSBrZXJuZWwgZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGVycm9yLgorICoKKyAqIFJldHVybnM6CisgKiB6ZXJvIGlmIHZhbCBpcyBpbiByYW5nZSBhbmQgbGlwIG9rYXkKKyAqIG5vbi16ZXJvIHJldHVybiB2YWx1ZSBmcm9tIGxwZmNfaXNzdWVfbGlwKCkKKyAqIC1FSU5WQUwgdmFsIG91dCBvZiByYW5nZQorICoqLwogc3RhdGljIGludAogbHBmY190b3BvbG9neV9zZXQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBpbnQgdmFsKQogewpAQCAtMTQ2OSw2ICsyMTg0LDMzNSBAQAogc3RhdGljIERFVklDRV9BVFRSKGxwZmNfdG9wb2xvZ3ksIFNfSVJVR08gfCBTX0lXVVNSLAogCQlscGZjX3RvcG9sb2d5X3Nob3csIGxwZmNfdG9wb2xvZ3lfc3RvcmUpOwogCisKKy8qKgorICogbHBmY19zdGF0X2RhdGFfY3RybF9zdG9yZTogd3JpdGUgY2FsbCBiYWNrIGZvciBscGZjX3N0YXRfZGF0YV9jdHJsCisgKiAgc3lzZnMgZmlsZS4KKyAqIEBkZXY6IFBvaW50ZXIgdG8gY2xhc3MgZGV2aWNlLgorICogQGJ1ZjogRGF0YSBidWZmZXIuCisgKiBAY291bnQ6IFNpemUgb2YgdGhlIGRhdGEgYnVmZmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZCB3aGVuIGFuIHVzZXIgd3JpdGUgdG8gdGhlIGxwZmNfc3RhdF9kYXRhX2N0cmwKKyAqIHN5c2ZzIGZpbGUuIFRoaXMgZnVuY3Rpb24gcGFyc2UgdGhlIGNvbW1hbmQgd3JpdHRlbiB0byB0aGUgc3lzZnMgZmlsZQorICogYW5kIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uLiBUaGVzZSBjb21tYW5kcyBhcmUgdXNlZCBmb3IgY29udHJvbGxpbmcKKyAqIGRyaXZlciBzdGF0aXN0aWNhbCBkYXRhIGNvbGxlY3Rpb24uCisgKiBGb2xsb3dpbmcgYXJlIHRoZSBjb21tYW5kIHRoaXMgZnVuY3Rpb24gaGFuZGxlcy4KKyAqCisgKiAgICBzZXRidWNrZXQgPGJ1Y2tldF90eXBlPiA8YmFzZT4gPHN0ZXA+CisgKgkJCSAgICAgICA9IFNldCB0aGUgbGF0ZW5jeSBidWNrZXRzLgorICogICAgZGVzdHJveWJ1Y2tldCAgICAgICAgICAgID0gZGVzdHJveSBhbGwgdGhlIGJ1Y2tldHMuCisgKiAgICBzdGFydCAgICAgICAgICAgICAgICAgICAgPSBzdGFydCBkYXRhIGNvbGxlY3Rpb24KKyAqICAgIHN0b3AgICAgICAgICAgICAgICAgICAgICA9IHN0b3AgZGF0YSBjb2xsZWN0aW9uCisgKiAgICByZXNldCAgICAgICAgICAgICAgICAgICAgPSByZXNldCB0aGUgY29sbGVjdGVkIGRhdGEKKyAqKi8KK3N0YXRpYyBzc2l6ZV90CitscGZjX3N0YXRfZGF0YV9jdHJsX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBTY3NpX0hvc3QgICpzaG9zdCA9IGNsYXNzX3RvX3Nob3N0KGRldik7CisJc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0ID0gKHN0cnVjdCBscGZjX3Zwb3J0ICopIHNob3N0LT5ob3N0ZGF0YTsKKwlzdHJ1Y3QgbHBmY19oYmEgICAqcGhiYSA9IHZwb3J0LT5waGJhOworI2RlZmluZSBMUEZDX01BWF9EQVRBX0NUUkxfTEVOIDEwMjQKKwlzdGF0aWMgY2hhciBidWNrZXRfZGF0YVtMUEZDX01BWF9EQVRBX0NUUkxfTEVOXTsKKwl1bnNpZ25lZCBsb25nIGk7CisJY2hhciAqc3RyX3B0ciwgKnRva2VuOworCXN0cnVjdCBscGZjX3Zwb3J0ICoqdnBvcnRzOworCXN0cnVjdCBTY3NpX0hvc3QgKnZfc2hvc3Q7CisJY2hhciAqYnVja2V0X3R5cGVfc3RyLCAqYmFzZV9zdHIsICpzdGVwX3N0cjsKKwl1bnNpZ25lZCBsb25nIGJhc2UsIHN0ZXAsIGJ1Y2tldF90eXBlOworCisJaWYgKCFzdHJuY21wKGJ1ZiwgInNldGJ1Y2tldCIsIHN0cmxlbigic2V0YnVja2V0IikpKSB7CisJCWlmIChzdHJsZW4oYnVmKSA+IExQRkNfTUFYX0RBVEFfQ1RSTF9MRU4pCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlzdHJjcHkoYnVja2V0X2RhdGEsIGJ1Zik7CisJCXN0cl9wdHIgPSAmYnVja2V0X2RhdGFbMF07CisJCS8qIElnbm9yZSB0aGlzIHRva2VuIC0gdGhpcyBpcyBjb21tYW5kIHRva2VuICovCisJCXRva2VuID0gc3Ryc2VwKCZzdHJfcHRyLCAiXHQgIik7CisJCWlmICghdG9rZW4pCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlidWNrZXRfdHlwZV9zdHIgPSBzdHJzZXAoJnN0cl9wdHIsICJcdCAiKTsKKwkJaWYgKCFidWNrZXRfdHlwZV9zdHIpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlpZiAoIXN0cm5jbXAoYnVja2V0X3R5cGVfc3RyLCAibGluZWFyIiwgc3RybGVuKCJsaW5lYXIiKSkpCisJCQlidWNrZXRfdHlwZSA9IExQRkNfTElORUFSX0JVQ0tFVDsKKwkJZWxzZSBpZiAoIXN0cm5jbXAoYnVja2V0X3R5cGVfc3RyLCAicG93ZXIyIiwgc3RybGVuKCJwb3dlcjIiKSkpCisJCQlidWNrZXRfdHlwZSA9IExQRkNfUE9XRVIyX0JVQ0tFVDsKKwkJZWxzZQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJYmFzZV9zdHIgPSBzdHJzZXAoJnN0cl9wdHIsICJcdCAiKTsKKwkJaWYgKCFiYXNlX3N0cikKKwkJCXJldHVybiAtRUlOVkFMOworCQliYXNlID0gc2ltcGxlX3N0cnRvdWwoYmFzZV9zdHIsIE5VTEwsIDApOworCisJCXN0ZXBfc3RyID0gc3Ryc2VwKCZzdHJfcHRyLCAiXHQgIik7CisJCWlmICghc3RlcF9zdHIpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJc3RlcCA9IHNpbXBsZV9zdHJ0b3VsKHN0ZXBfc3RyLCBOVUxMLCAwKTsKKwkJaWYgKCFzdGVwKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogQmxvY2sgdGhlIGRhdGEgY29sbGVjdGlvbiBmb3IgZXZlcnkgdnBvcnQgKi8KKwkJdnBvcnRzID0gbHBmY19jcmVhdGVfdnBvcnRfd29ya19hcnJheShwaGJhKTsKKwkJaWYgKHZwb3J0cyA9PSBOVUxMKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJZm9yIChpID0gMDsgaSA8PSBwaGJhLT5tYXhfdnBpICYmIHZwb3J0c1tpXSAhPSBOVUxMOyBpKyspIHsKKwkJCXZfc2hvc3QgPSBscGZjX3Nob3N0X2Zyb21fdnBvcnQodnBvcnRzW2ldKTsKKwkJCXNwaW5fbG9ja19pcnEodl9zaG9zdC0+aG9zdF9sb2NrKTsKKwkJCS8qIEJsb2NrIGFuZCByZXNldCBkYXRhIGNvbGxlY3Rpb24gKi8KKwkJCXZwb3J0c1tpXS0+c3RhdF9kYXRhX2Jsb2NrZWQgPSAxOworCQkJaWYgKHZwb3J0c1tpXS0+c3RhdF9kYXRhX2VuYWJsZWQpCisJCQkJbHBmY192cG9ydF9yZXNldF9zdGF0X2RhdGEodnBvcnRzW2ldKTsKKwkJCXNwaW5fdW5sb2NrX2lycSh2X3Nob3N0LT5ob3N0X2xvY2spOworCQl9CisKKwkJLyogU2V0IHRoZSBidWNrZXQgYXR0cmlidXRlcyAqLworCQlwaGJhLT5idWNrZXRfdHlwZSA9IGJ1Y2tldF90eXBlOworCQlwaGJhLT5idWNrZXRfYmFzZSA9IGJhc2U7CisJCXBoYmEtPmJ1Y2tldF9zdGVwID0gc3RlcDsKKworCQlmb3IgKGkgPSAwOyBpIDw9IHBoYmEtPm1heF92cGkgJiYgdnBvcnRzW2ldICE9IE5VTEw7IGkrKykgeworCQkJdl9zaG9zdCA9IGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydHNbaV0pOworCisJCQkvKiBVbmJsb2NrIGRhdGEgY29sbGVjdGlvbiAqLworCQkJc3Bpbl9sb2NrX2lycSh2X3Nob3N0LT5ob3N0X2xvY2spOworCQkJdnBvcnRzW2ldLT5zdGF0X2RhdGFfYmxvY2tlZCA9IDA7CisJCQlzcGluX3VubG9ja19pcnEodl9zaG9zdC0+aG9zdF9sb2NrKTsKKwkJfQorCQlscGZjX2Rlc3Ryb3lfdnBvcnRfd29ya19hcnJheShwaGJhLCB2cG9ydHMpOworCQlyZXR1cm4gc3RybGVuKGJ1Zik7CisJfQorCisJaWYgKCFzdHJuY21wKGJ1ZiwgImRlc3Ryb3lidWNrZXQiLCBzdHJsZW4oImRlc3Ryb3lidWNrZXQiKSkpIHsKKwkJdnBvcnRzID0gbHBmY19jcmVhdGVfdnBvcnRfd29ya19hcnJheShwaGJhKTsKKwkJaWYgKHZwb3J0cyA9PSBOVUxMKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJZm9yIChpID0gMDsgaSA8PSBwaGJhLT5tYXhfdnBpICYmIHZwb3J0c1tpXSAhPSBOVUxMOyBpKyspIHsKKwkJCXZfc2hvc3QgPSBscGZjX3Nob3N0X2Zyb21fdnBvcnQodnBvcnRzW2ldKTsKKwkJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCQl2cG9ydHNbaV0tPnN0YXRfZGF0YV9ibG9ja2VkID0gMTsKKwkJCWxwZmNfZnJlZV9idWNrZXQodnBvcnQpOworCQkJdnBvcnQtPnN0YXRfZGF0YV9lbmFibGVkID0gMDsKKwkJCXZwb3J0c1tpXS0+c3RhdF9kYXRhX2Jsb2NrZWQgPSAwOworCQkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQl9CisJCWxwZmNfZGVzdHJveV92cG9ydF93b3JrX2FycmF5KHBoYmEsIHZwb3J0cyk7CisJCXBoYmEtPmJ1Y2tldF90eXBlID0gTFBGQ19OT19CVUNLRVQ7CisJCXBoYmEtPmJ1Y2tldF9iYXNlID0gMDsKKwkJcGhiYS0+YnVja2V0X3N0ZXAgPSAwOworCQlyZXR1cm4gc3RybGVuKGJ1Zik7CisJfQorCisJaWYgKCFzdHJuY21wKGJ1ZiwgInN0YXJ0Iiwgc3RybGVuKCJzdGFydCIpKSkgeworCQkvKiBJZiBubyBidWNrZXRzIGNvbmZpZ3VyZWQgcmV0dXJuIGVycm9yICovCisJCWlmIChwaGJhLT5idWNrZXRfdHlwZSA9PSBMUEZDX05PX0JVQ0tFVCkKKwkJCXJldHVybiAtRUlOVkFMOworCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQlpZiAodnBvcnQtPnN0YXRfZGF0YV9lbmFibGVkKSB7CisJCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCQlyZXR1cm4gc3RybGVuKGJ1Zik7CisJCX0KKwkJbHBmY19hbGxvY19idWNrZXQodnBvcnQpOworCQl2cG9ydC0+c3RhdF9kYXRhX2VuYWJsZWQgPSAxOworCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCXJldHVybiBzdHJsZW4oYnVmKTsKKwl9CisKKwlpZiAoIXN0cm5jbXAoYnVmLCAic3RvcCIsIHN0cmxlbigic3RvcCIpKSkgeworCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQlpZiAodnBvcnQtPnN0YXRfZGF0YV9lbmFibGVkID09IDApIHsKKwkJCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwkJCXJldHVybiBzdHJsZW4oYnVmKTsKKwkJfQorCQlscGZjX2ZyZWVfYnVja2V0KHZwb3J0KTsKKwkJdnBvcnQtPnN0YXRfZGF0YV9lbmFibGVkID0gMDsKKwkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQlyZXR1cm4gc3RybGVuKGJ1Zik7CisJfQorCisJaWYgKCFzdHJuY21wKGJ1ZiwgInJlc2V0Iiwgc3RybGVuKCJyZXNldCIpKSkgeworCQlpZiAoKHBoYmEtPmJ1Y2tldF90eXBlID09IExQRkNfTk9fQlVDS0VUKQorCQkJfHwgIXZwb3J0LT5zdGF0X2RhdGFfZW5hYmxlZCkKKwkJCXJldHVybiBzdHJsZW4oYnVmKTsKKwkJc3Bpbl9sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwkJdnBvcnQtPnN0YXRfZGF0YV9ibG9ja2VkID0gMTsKKwkJbHBmY192cG9ydF9yZXNldF9zdGF0X2RhdGEodnBvcnQpOworCQl2cG9ydC0+c3RhdF9kYXRhX2Jsb2NrZWQgPSAwOworCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCXJldHVybiBzdHJsZW4oYnVmKTsKKwl9CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKKworLyoqCisgKiBscGZjX3N0YXRfZGF0YV9jdHJsX3Nob3c6IFJlYWQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCisgKiAgIGxwZmNfc3RhdF9kYXRhX2N0cmwgc3lzZnMgZmlsZS4KKyAqIEBkZXY6IFBvaW50ZXIgdG8gY2xhc3MgZGV2aWNlIG9iamVjdC4KKyAqIEBidWY6IERhdGEgYnVmZmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHJlYWQgY2FsbCBiYWNrIGZ1bmN0aW9uIGZvcgorICogbHBmY19zdGF0X2RhdGFfY3RybCBzeXNmcyBmaWxlLiBUaGlzIGZ1bmN0aW9uIHJlcG9ydCB0aGUKKyAqIGN1cnJlbnQgc3RhdGlzdGljYWwgZGF0YSBjb2xsZWN0aW9uIHN0YXRlLgorICoqLworc3RhdGljIHNzaXplX3QKK2xwZmNfc3RhdF9kYXRhX2N0cmxfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICAqc2hvc3QgPSBjbGFzc190b19zaG9zdChkZXYpOworCXN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCA9IChzdHJ1Y3QgbHBmY192cG9ydCAqKSBzaG9zdC0+aG9zdGRhdGE7CisJc3RydWN0IGxwZmNfaGJhICAgKnBoYmEgPSB2cG9ydC0+cGhiYTsKKwlpbnQgaW5kZXggPSAwOworCWludCBpOworCWNoYXIgKmJ1Y2tldF90eXBlOworCXVuc2lnbmVkIGxvbmcgYnVja2V0X3ZhbHVlOworCisJc3dpdGNoIChwaGJhLT5idWNrZXRfdHlwZSkgeworCWNhc2UgTFBGQ19MSU5FQVJfQlVDS0VUOgorCQlidWNrZXRfdHlwZSA9ICJsaW5lYXIiOworCQlicmVhazsKKwljYXNlIExQRkNfUE9XRVIyX0JVQ0tFVDoKKwkJYnVja2V0X3R5cGUgPSAicG93ZXIyIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnVja2V0X3R5cGUgPSAiTm8gQnVja2V0IjsKKwkJYnJlYWs7CisJfQorCisJc3ByaW50ZigmYnVmW2luZGV4XSwgIlN0YXRpc3RpY2FsIERhdGEgZW5hYmxlZCA6JWQsICIKKwkJImJsb2NrZWQgOiVkLCBCdWNrZXQgdHlwZSA6JXMsIEJ1Y2tldCBiYXNlIDolZCwiCisJCSIgQnVja2V0IHN0ZXAgOiVkXG5MYXRlbmN5IFJhbmdlcyA6IiwKKwkJdnBvcnQtPnN0YXRfZGF0YV9lbmFibGVkLCB2cG9ydC0+c3RhdF9kYXRhX2Jsb2NrZWQsCisJCWJ1Y2tldF90eXBlLCBwaGJhLT5idWNrZXRfYmFzZSwgcGhiYS0+YnVja2V0X3N0ZXApOworCWluZGV4ID0gc3RybGVuKGJ1Zik7CisJaWYgKHBoYmEtPmJ1Y2tldF90eXBlICE9IExQRkNfTk9fQlVDS0VUKSB7CisJCWZvciAoaSA9IDA7IGkgPCBMUEZDX01BWF9CVUNLRVRfQ09VTlQ7IGkrKykgeworCQkJaWYgKHBoYmEtPmJ1Y2tldF90eXBlID09IExQRkNfTElORUFSX0JVQ0tFVCkKKwkJCQlidWNrZXRfdmFsdWUgPSBwaGJhLT5idWNrZXRfYmFzZSArCisJCQkJCXBoYmEtPmJ1Y2tldF9zdGVwICogaTsKKwkJCWVsc2UKKwkJCQlidWNrZXRfdmFsdWUgPSBwaGJhLT5idWNrZXRfYmFzZSArCisJCQkJKDEgPDwgaSkgKiBwaGJhLT5idWNrZXRfc3RlcDsKKworCQkJaWYgKGluZGV4ICsgMTAgPiBQQUdFX1NJWkUpCisJCQkJYnJlYWs7CisJCQlzcHJpbnRmKCZidWZbaW5kZXhdLCAiJTA4bGQgIiwgYnVja2V0X3ZhbHVlKTsKKwkJCWluZGV4ID0gc3RybGVuKGJ1Zik7CisJCX0KKwl9CisJc3ByaW50ZigmYnVmW2luZGV4XSwgIlxuIik7CisJcmV0dXJuIHN0cmxlbihidWYpOworfQorCisvKgorICogU3lzZnMgYXR0cmlidXRlIHRvIGNvbnRyb2wgdGhlIHN0YXRpc3RpY2FsIGRhdGEgY29sbGVjdGlvbi4KKyAqLworc3RhdGljIERFVklDRV9BVFRSKGxwZmNfc3RhdF9kYXRhX2N0cmwsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkgICBscGZjX3N0YXRfZGF0YV9jdHJsX3Nob3csIGxwZmNfc3RhdF9kYXRhX2N0cmxfc3RvcmUpOworCisvKgorICogbHBmY19kcnZyX3N0YXRfZGF0YTogc3lzZnMgYXR0ciB0byBnZXQgZHJpdmVyIHN0YXRpc3RpY2FsIGRhdGEuCisgKi8KKworLyoKKyAqIEVhY2ggQnVja2V0IHRha2VzIDExIGNoYXJhY3RlcnMgYW5kIDEgbmV3IGxpbmUgKyAxNyBieXRlcyBXV04KKyAqIGZvciBlYWNoIHRhcmdldC4KKyAqLworI2RlZmluZSBTVEFUX0RBVEFfU0laRV9QRVJfVEFSR0VUKE5VTV9CVUNLRVRTKSAoKE5VTV9CVUNLRVRTKSAqIDExICsgMTgpCisjZGVmaW5lIE1BWF9TVEFUX0RBVEFfU0laRV9QRVJfVEFSR0VUIFwKKwlTVEFUX0RBVEFfU0laRV9QRVJfVEFSR0VUKExQRkNfTUFYX0JVQ0tFVF9DT1VOVCkKKworCisvKioKKyAqIHN5c2ZzX2RydnJfc3RhdF9kYXRhX3JlYWQ6IFJlYWQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGxwZmNfZHJ2cl9zdGF0X2RhdGEKKyAqICBzeXNmcyBhdHRyaWJ1dGUuCisgKiBAa29iajogUG9pbnRlciB0byB0aGUga2VybmVsIG9iamVjdAorICogQGJpbl9hdHRyOiBBdHRyaWJ1dGUgb2JqZWN0CisgKiBAYnVmZjogQnVmZmVyIHBvaW50ZXIKKyAqIEBvZmY6IEZpbGUgb2Zmc2V0CisgKiBAY291bnQ6IEJ1ZmZlciBzaXplCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmVhZCBjYWxsIGJhY2sgZnVuY3Rpb24gZm9yIGxwZmNfZHJ2cl9zdGF0X2RhdGEKKyAqIHN5c2ZzIGZpbGUuIFRoaXMgZnVuY3Rpb24gZXhwb3J0IHRoZSBzdGF0aXN0aWNhbCBkYXRhIHRvIHVzZXIKKyAqIGFwcGxpY2F0aW9ucy4KKyAqKi8KK3N0YXRpYyBzc2l6ZV90CitzeXNmc19kcnZyX3N0YXRfZGF0YV9yZWFkKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsCisJCWNoYXIgKmJ1ZiwgbG9mZl90IG9mZiwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGV2aWNlLAorCQlrb2JqKTsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICAqc2hvc3QgPSBjbGFzc190b19zaG9zdChkZXYpOworCXN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCA9IChzdHJ1Y3QgbHBmY192cG9ydCAqKSBzaG9zdC0+aG9zdGRhdGE7CisJc3RydWN0IGxwZmNfaGJhICAgKnBoYmEgPSB2cG9ydC0+cGhiYTsKKwlpbnQgaSA9IDAsIGluZGV4ID0gMDsKKwl1bnNpZ25lZCBsb25nIG5wb3J0X2luZGV4OworCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwID0gTlVMTDsKKwlucG9ydF9pbmRleCA9ICh1bnNpZ25lZCBsb25nKW9mZiAvCisJCU1BWF9TVEFUX0RBVEFfU0laRV9QRVJfVEFSR0VUOworCisJaWYgKCF2cG9ydC0+c3RhdF9kYXRhX2VuYWJsZWQgfHwgdnBvcnQtPnN0YXRfZGF0YV9ibG9ja2VkCisJCXx8IChwaGJhLT5idWNrZXRfdHlwZSA9PSBMUEZDX05PX0JVQ0tFVCkpCisJCXJldHVybiAwOworCisJc3Bpbl9sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5kbHAsICZ2cG9ydC0+ZmNfbm9kZXMsIG5scF9saXN0cCkgeworCQlpZiAoIU5MUF9DSEtfTk9ERV9BQ1QobmRscCkgfHwgIW5kbHAtPmxhdF9kYXRhKQorCQkJY29udGludWU7CisKKwkJaWYgKG5wb3J0X2luZGV4ID4gMCkgeworCQkJbnBvcnRfaW5kZXgtLTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKChpbmRleCArIE1BWF9TVEFUX0RBVEFfU0laRV9QRVJfVEFSR0VUKQorCQkJPiBjb3VudCkKKwkJCWJyZWFrOworCisJCWlmICghbmRscC0+bGF0X2RhdGEpCisJCQljb250aW51ZTsKKworCQkvKiBQcmludCB0aGUgV1dOICovCisJCXNwcmludGYoJmJ1ZltpbmRleF0sICIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeDoiLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzBdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzFdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzJdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzNdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzRdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzVdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzZdLAorCQkJbmRscC0+bmxwX3BvcnRuYW1lLnUud3duWzddKTsKKworCQlpbmRleCA9IHN0cmxlbihidWYpOworCisJCWZvciAoaSA9IDA7IGkgPCBMUEZDX01BWF9CVUNLRVRfQ09VTlQ7IGkrKykgeworCQkJc3ByaW50ZigmYnVmW2luZGV4XSwgIiUwMTB1LCIsCisJCQkJbmRscC0+bGF0X2RhdGFbaV0uY21kX2NvdW50KTsKKwkJCWluZGV4ID0gc3RybGVuKGJ1Zik7CisJCX0KKwkJc3ByaW50ZigmYnVmW2luZGV4XSwgIlxuIik7CisJCWluZGV4ID0gc3RybGVuKGJ1Zik7CisJfQorCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwlyZXR1cm4gaW5kZXg7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBzeXNmc19kcnZyX3N0YXRfZGF0YV9hdHRyID0geworCS5hdHRyID0geworCQkubmFtZSA9ICJscGZjX2RydnJfc3RhdF9kYXRhIiwKKwkJLm1vZGUgPSBTX0lSVVNSLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwl9LAorCS5zaXplID0gTFBGQ19NQVhfVEFSR0VUICogTUFYX1NUQVRfREFUQV9TSVpFX1BFUl9UQVJHRVQsCisJLnJlYWQgPSBzeXNmc19kcnZyX3N0YXRfZGF0YV9yZWFkLAorCS53cml0ZSA9IE5VTEwsCit9OworCiAvKgogIyBscGZjX2xpbmtfc3BlZWQ6IExpbmsgc3BlZWQgc2VsZWN0aW9uIGZvciBpbml0aWFsaXppbmcgdGhlIEZpYnJlIENoYW5uZWwKICMgY29ubmVjdGlvbi4KQEAgLTE0NzksNiArMjUyMywyNCBAQAogIyAgICAgICA4ICA9IDggR2lnYWJhdWQKICMgVmFsdWUgcmFuZ2UgaXMgWzAsOF0uIERlZmF1bHQgdmFsdWUgaXMgMC4KICovCisKKy8qKgorICogbHBmY19saW5rX3NwZWVkX3NldDogU2V0IHRoZSBhZGFwdGVycyBsaW5rIHNwZWVkLgorICogQHBoYmE6IGxwZmNfaGJhIHBvaW50ZXIuCisgKiBAdmFsOiBsaW5rIHNwZWVkIHZhbHVlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogSWYgdmFsIGlzIGluIGEgdmFsaWQgcmFuZ2UgdGhlbiBzZXQgdGhlIGFkYXB0ZXIncyBsaW5rIHNwZWVkIGZpZWxkIGFuZAorICogaXNzdWUgYSBsaXA7IGlmIHRoZSBsaXAgZmFpbHMgcmVzZXQgdGhlIGxpbmsgc3BlZWQgdG8gdGhlIG9sZCB2YWx1ZS4KKyAqCisgKiBOb3RlczoKKyAqIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gcmFuZ2UgbG9nIGEga2VybmVsIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiBhbiBlcnJvci4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBpZiB2YWwgaXMgaW4gcmFuZ2UgYW5kIGxpcCBva2F5LgorICogbm9uLXplcm8gcmV0dXJuIHZhbHVlIGZyb20gbHBmY19pc3N1ZV9saXAoKQorICogLUVJTlZBTCB2YWwgb3V0IG9mIHJhbmdlCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2xpbmtfc3BlZWRfc2V0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgaW50IHZhbCkKIHsKQEAgLTE1MTMsNiArMjU3NSwyMyBAQAogbW9kdWxlX3BhcmFtKGxwZmNfbGlua19zcGVlZCwgaW50LCAwKTsKIE1PRFVMRV9QQVJNX0RFU0MobHBmY19saW5rX3NwZWVkLCAiU2VsZWN0IGxpbmsgc3BlZWQiKTsKIGxwZmNfcGFyYW1fc2hvdyhsaW5rX3NwZWVkKQorCisvKioKKyAqIGxwZmNfbGlua19zcGVlZF9pbml0OiBTZXQgdGhlIGFkYXB0ZXJzIGxpbmsgc3BlZWQuCisgKiBAcGhiYTogbHBmY19oYmEgcG9pbnRlci4KKyAqIEB2YWw6IGxpbmsgc3BlZWQgdmFsdWUuCisgKgorICogRGVzY3JpcHRpb246CisgKiBJZiB2YWwgaXMgaW4gYSB2YWxpZCByYW5nZSB0aGVuIHNldCB0aGUgYWRhcHRlcidzIGxpbmsgc3BlZWQgZmllbGQuCisgKgorICogTm90ZXM6CisgKiBJZiB0aGUgdmFsdWUgaXMgbm90IGluIHJhbmdlIGxvZyBhIGtlcm5lbCBlcnJvciBtZXNzYWdlLCBjbGVhciB0aGUgbGluaworICogc3BlZWQgYW5kIHJldHVybiBhbiBlcnJvci4KKyAqCisgKiBSZXR1cm5zOgorICogemVybyBpZiB2YWwgc2F2ZWQuCisgKiAtRUlOVkFMIHZhbCBvdXQgb2YgcmFuZ2UKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfbGlua19zcGVlZF9pbml0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgaW50IHZhbCkKIHsKQEAgLTE1MjIsNyArMjYwMSw3IEBACiAJCXJldHVybiAwOwogCX0KIAlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19JTklULAotCQkJIjA0NTQgbHBmY19saW5rX3NwZWVkIGF0dHJpYnV0ZSBjYW5ub3QgIgorCQkJIjA0MDUgbHBmY19saW5rX3NwZWVkIGF0dHJpYnV0ZSBjYW5ub3QgIgogCQkJImJlIHNldCB0byAlZCwgYWxsb3dlZCB2YWx1ZXMgYXJlICIKIAkJCSJbIkxQRkNfTElOS19TUEVFRF9TVFJJTkciXVxuIiwgdmFsKTsKIAlwaGJhLT5jZmdfbGlua19zcGVlZCA9IDA7CkBAIC0xNTQ4LDYgKzI2MjcsNDggQEAKIAkJICAgIlVzZSBBRElTQyBvbiByZWRpc2NvdmVyeSB0byBhdXRoZW50aWNhdGUgRkNQIGRldmljZXMiKTsKIAogLyoKKyMgbHBmY19tYXhfc2NzaWNtcGxfdGltZTogVXNlIHNjc2kgY29tbWFuZCBjb21wbGV0aW9uIHRpbWUgdG8gY29udHJvbCBJL08gcXVldWUKKyMgZGVwdGguIERlZmF1bHQgdmFsdWUgaXMgMC4gV2hlbiB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgemVybyB0aGUKKyMgU0NTSSBjb21tYW5kIGNvbXBsZXRpb24gdGltZSBpcyBub3QgdXNlZCBmb3IgY29udHJvbGxpbmcgSS9PIHF1ZXVlIGRlcHRoLiBXaGVuCisjIHRoZSBwYXJhbWV0ZXIgaXMgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUsIHRoZSBJL08gcXVldWUgZGVwdGggaXMgY29udHJvbGxlZAorIyB0byBsaW1pdCB0aGUgSS9PIGNvbXBsZXRpb24gdGltZSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlLgorIyBUaGUgdmFsdWUgaXMgc2V0IGluIG1pbGxpc2Vjb25kcy4KKyovCitzdGF0aWMgaW50IGxwZmNfbWF4X3Njc2ljbXBsX3RpbWU7Cittb2R1bGVfcGFyYW0obHBmY19tYXhfc2NzaWNtcGxfdGltZSwgaW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MobHBmY19tYXhfc2NzaWNtcGxfdGltZSwKKwkiVXNlIGNvbW1hbmQgY29tcGxldGlvbiB0aW1lIHRvIGNvbnRyb2wgcXVldWUgZGVwdGgiKTsKK2xwZmNfdnBvcnRfcGFyYW1fc2hvdyhtYXhfc2NzaWNtcGxfdGltZSk7CitscGZjX3Zwb3J0X3BhcmFtX2luaXQobWF4X3Njc2ljbXBsX3RpbWUsIDAsIDAsIDYwMDAwKTsKK3N0YXRpYyBpbnQKK2xwZmNfbWF4X3Njc2ljbXBsX3RpbWVfc2V0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHZhbCkKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydCk7CisJc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsICpuZXh0X25kbHA7CisKKwlpZiAodmFsID09IHZwb3J0LT5jZmdfbWF4X3Njc2ljbXBsX3RpbWUpCisJCXJldHVybiAwOworCWlmICgodmFsIDwgMCkgfHwgKHZhbCA+IDYwMDAwKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJdnBvcnQtPmNmZ19tYXhfc2NzaWNtcGxfdGltZSA9IHZhbDsKKworCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5kbHAsIG5leHRfbmRscCwgJnZwb3J0LT5mY19ub2RlcywgbmxwX2xpc3RwKSB7CisJCWlmICghTkxQX0NIS19OT0RFX0FDVChuZGxwKSkKKwkJCWNvbnRpbnVlOworCQlpZiAobmRscC0+bmxwX3N0YXRlID09IE5MUF9TVEVfVU5VU0VEX05PREUpCisJCQljb250aW51ZTsKKwkJbmRscC0+Y21kX3FkZXB0aCA9IExQRkNfTUFYX1RHVF9RREVQVEg7CisJfQorCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwlyZXR1cm4gMDsKK30KK2xwZmNfdnBvcnRfcGFyYW1fc3RvcmUobWF4X3Njc2ljbXBsX3RpbWUpOworc3RhdGljIERFVklDRV9BVFRSKGxwZmNfbWF4X3Njc2ljbXBsX3RpbWUsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkgICBscGZjX21heF9zY3NpY21wbF90aW1lX3Nob3csCisJCSAgIGxwZmNfbWF4X3Njc2ljbXBsX3RpbWVfc3RvcmUpOworCisvKgogIyBscGZjX2FjazA6IFVzZSBBQ0swLCBpbnN0ZWFkIG9mIEFDSzEgZm9yIGNsYXNzIDIgYWNrbm93bGVkZ2VtZW50LiBWYWx1ZQogIyByYW5nZSBpcyBbMCwxXS4gRGVmYXVsdCB2YWx1ZSBpcyAwLgogKi8KQEAgLTE2MjMsMTIgKzI3NDQsMTIgQEAKIC8qCiAjIGxwZmNfdXNlX21zaTogVXNlIE1TSSAoTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzKSBpbiBzeXN0ZW1zIHRoYXQKICMJCXN1cHBvcnQgdGhpcyBmZWF0dXJlCi0jICAgICAgIDAgID0gTVNJIGRpc2FibGVkIChkZWZhdWx0KQorIyAgICAgICAwICA9IE1TSSBkaXNhYmxlZAogIyAgICAgICAxICA9IE1TSSBlbmFibGVkCi0jCTIgID0gTVNJLVggZW5hYmxlZAotIyBWYWx1ZSByYW5nZSBpcyBbMCwyXS4gRGVmYXVsdCB2YWx1ZSBpcyAwLgorIyAgICAgICAyICA9IE1TSS1YIGVuYWJsZWQgKGRlZmF1bHQpCisjIFZhbHVlIHJhbmdlIGlzIFswLDJdLiBEZWZhdWx0IHZhbHVlIGlzIDIuCiAqLwotTFBGQ19BVFRSX1IodXNlX21zaSwgMCwgMCwgMiwgIlVzZSBNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMgKDEpIG9yICIKK0xQRkNfQVRUUl9SKHVzZV9tc2ksIDIsIDAsIDIsICJVc2UgTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzICgxKSBvciAiCiAJICAgICJNU0ktWCAoMiksIGlmIHBvc3NpYmxlIik7CiAKIC8qCkBAIC0xNjY4LDYgKzI3ODksNyBAQAogCSZkZXZfYXR0cl9vcHRpb25fcm9tX3ZlcnNpb24sCiAJJmRldl9hdHRyX2xpbmtfc3RhdGUsCiAJJmRldl9hdHRyX251bV9kaXNjb3ZlcmVkX3BvcnRzLAorCSZkZXZfYXR0cl9tZW5sb19tZ210X21vZGUsCiAJJmRldl9hdHRyX2xwZmNfZHJ2cl92ZXJzaW9uLAogCSZkZXZfYXR0cl9scGZjX3RlbXBfc2Vuc29yLAogCSZkZXZfYXR0cl9scGZjX2xvZ192ZXJib3NlLApAQCAtMTcwOSw2ICsyODMxLDggQEAKIAkmZGV2X2F0dHJfbHBmY19lbmFibGVfaGJhX3Jlc2V0LAogCSZkZXZfYXR0cl9scGZjX2VuYWJsZV9oYmFfaGVhcnRiZWF0LAogCSZkZXZfYXR0cl9scGZjX3NnX3NlZ19jbnQsCisJJmRldl9hdHRyX2xwZmNfbWF4X3Njc2ljbXBsX3RpbWUsCisJJmRldl9hdHRyX2xwZmNfc3RhdF9kYXRhX2N0cmwsCiAJTlVMTCwKIH07CiAKQEAgLTE3MzEsOSArMjg1NSwyOSBAQAogCSZkZXZfYXR0cl9ucG9ydF9ldnRfY250LAogCSZkZXZfYXR0cl9ucGl2X2luZm8sCiAJJmRldl9hdHRyX2xwZmNfZW5hYmxlX2RhX2lkLAorCSZkZXZfYXR0cl9scGZjX21heF9zY3NpY21wbF90aW1lLAorCSZkZXZfYXR0cl9scGZjX3N0YXRfZGF0YV9jdHJsLAogCU5VTEwsCiB9OwogCisvKioKKyAqIHN5c2ZzX2N0bHJlZ193cml0ZTogV3JpdGUgbWV0aG9kIGZvciB3cml0aW5nIHRvIGN0bHJlZy4KKyAqIEBrb2JqOiBrZXJuZWwga29iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBrZXJuZWwgY2xhc3MgZGV2aWNlLgorICogQGJpbl9hdHRyOiBrZXJuZWwgYXR0cmlidXRlcyBwYXNzZWQgdG8gdXMuCisgKiBAYnVmOiBjb250YWlucyB0aGUgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBhZGFwdGVyIElPUkVHIHNwYWNlLgorICogQG9mZjogb2Zmc2V0IGludG8gYnVmZmVyIHRvIGJlZ2lubmluZyBvZiBkYXRhLgorICogQGNvdW50OiBieXRlcyB0byB0cmFuc2Zlci4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIEFjY2Vzc2VkIHZpYSAvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0eHh4L2N0bHJlZy4KKyAqIFVzZXMgdGhlIGFkYXB0ZXIgaW8gY29udHJvbCByZWdpc3RlcnMgdG8gc2VuZCBidWYgY29udGVudHMgdG8gdGhlIGFkYXB0ZXIuCisgKgorICogUmV0dXJuczoKKyAqIC1FUkFOR0Ugb2ZmIGFuZCBjb3VudCBjb21ibyBvdXQgb2YgcmFuZ2UKKyAqIC1FSU5WQUwgb2ZmLCBjb3VudCBvciBidWZmIGFkZHJlc3MgaW52YWxpZAorICogLUVQRVJNIGFkYXB0ZXIgaXMgb2ZmbGluZQorICogdmFsdWUgb2YgY291bnQsIGJ1ZiBjb250ZW50cyB3cml0dGVuCisgKiovCiBzdGF0aWMgc3NpemVfdAogc3lzZnNfY3RscmVnX3dyaXRlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsCiAJCSAgIGNoYXIgKmJ1ZiwgbG9mZl90IG9mZiwgc2l6ZV90IGNvdW50KQpAQCAtMTc2Niw2ICsyOTEwLDIzIEBACiAJcmV0dXJuIGNvdW50OwogfQogCisvKioKKyAqIHN5c2ZzX2N0bHJlZ19yZWFkOiBSZWFkIG1ldGhvZCBmb3IgcmVhZGluZyBmcm9tIGN0bHJlZy4KKyAqIEBrb2JqOiBrZXJuZWwga29iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBrZXJuZWwgY2xhc3MgZGV2aWNlLgorICogQGJpbl9hdHRyOiBrZXJuZWwgYXR0cmlidXRlcyBwYXNzZWQgdG8gdXMuCisgKiBAYnVmOiBpZiBzdWNjZXNmdWwgY29udGFpbnMgdGhlIGRhdGEgZnJvbSB0aGUgYWRhcHRlciBJT1JFRyBzcGFjZS4KKyAqIEBvZmY6IG9mZnNldCBpbnRvIGJ1ZmZlciB0byBiZWdpbm5pbmcgb2YgZGF0YS4KKyAqIEBjb3VudDogYnl0ZXMgdG8gdHJhbnNmZXIuCisgKgorICogRGVzY3JpcHRpb246CisgKiBBY2Nlc3NlZCB2aWEgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdHh4eC9jdGxyZWcuCisgKiBVc2VzIHRoZSBhZGFwdGVyIGlvIGNvbnRyb2wgcmVnaXN0ZXJzIHRvIHJlYWQgZGF0YSBpbnRvIGJ1Zi4KKyAqCisgKiBSZXR1cm5zOgorICogLUVSQU5HRSBvZmYgYW5kIGNvdW50IGNvbWJvIG91dCBvZiByYW5nZQorICogLUVJTlZBTCBvZmYsIGNvdW50IG9yIGJ1ZmYgYWRkcmVzcyBpbnZhbGlkCisgKiB2YWx1ZSBvZiBjb3VudCwgYnVmIGNvbnRlbnRzIHJlYWQKKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBzeXNmc19jdGxyZWdfcmVhZChzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLAogCQkgIGNoYXIgKmJ1ZiwgbG9mZl90IG9mZiwgc2l6ZV90IGNvdW50KQpAQCAtMTgxMCw3ICsyOTcxLDEwIEBACiAJLndyaXRlID0gc3lzZnNfY3RscmVnX3dyaXRlLAogfTsKIAotCisvKioKKyAqIHN5c2ZzX21ib3hfaWRsZTogZnJlZXMgdGhlIHN5c2ZzIG1haWxib3guCisgKiBAcGhiYTogbHBmY19oYmEgcG9pbnRlcgorICoqLwogc3RhdGljIHZvaWQKIHN5c2ZzX21ib3hfaWRsZShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0xODI0LDYgKzI5ODgsMjcgQEAKIAl9CiB9CiAKKy8qKgorICogc3lzZnNfbWJveF93cml0ZTogV3JpdGUgbWV0aG9kIGZvciB3cml0aW5nIGluZm9ybWF0aW9uIHZpYSBtYm94LgorICogQGtvYmo6IGtlcm5lbCBrb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGtlcm5lbCBjbGFzcyBkZXZpY2UuCisgKiBAYmluX2F0dHI6IGtlcm5lbCBhdHRyaWJ1dGVzIHBhc3NlZCB0byB1cy4KKyAqIEBidWY6IGNvbnRhaW5zIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gc3lzZnMgbWJveC4KKyAqIEBvZmY6IG9mZnNldCBpbnRvIGJ1ZmZlciB0byBiZWdpbm5pbmcgb2YgZGF0YS4KKyAqIEBjb3VudDogYnl0ZXMgdG8gdHJhbnNmZXIuCisgKgorICogRGVzY3JpcHRpb246CisgKiBBY2Nlc3NlZCB2aWEgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdHh4eC9tYm94LgorICogVXNlcyB0aGUgc3lzZnMgbWJveCB0byBzZW5kIGJ1ZiBjb250ZW50cyB0byB0aGUgYWRhcHRlci4KKyAqCisgKiBSZXR1cm5zOgorICogLUVSQU5HRSBvZmYgYW5kIGNvdW50IGNvbWJvIG91dCBvZiByYW5nZQorICogLUVJTlZBTCBvZmYsIGNvdW50IG9yIGJ1ZmYgYWRkcmVzcyBpbnZhbGlkCisgKiB6ZXJvIGlmIGNvdW50IGlzIHplcm8KKyAqIC1FUEVSTSBhZGFwdGVyIGlzIG9mZmxpbmUKKyAqIC1FTk9NRU0gZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG1haWwgYm94CisgKiAtRUFHQUlOIG9mZnNldCwgc3RhdGUgb3IgbWJveCBpcyBOVUxMCisgKiBjb3VudCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQKKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBzeXNmc19tYm94X3dyaXRlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsCiAJCSBjaGFyICpidWYsIGxvZmZfdCBvZmYsIHNpemVfdCBjb3VudCkKQEAgLTE4NzgsNiArMzA2MywyOSBAQAogCXJldHVybiBjb3VudDsKIH0KIAorLyoqCisgKiBzeXNmc19tYm94X3JlYWQ6IFJlYWQgbWV0aG9kIGZvciByZWFkaW5nIGluZm9ybWF0aW9uIHZpYSBtYm94LgorICogQGtvYmo6IGtlcm5lbCBrb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGtlcm5lbCBjbGFzcyBkZXZpY2UuCisgKiBAYmluX2F0dHI6IGtlcm5lbCBhdHRyaWJ1dGVzIHBhc3NlZCB0byB1cy4KKyAqIEBidWY6IGNvbnRhaW5zIHRoZSBkYXRhIHRvIGJlIHJlYWQgZnJvbSBzeXNmcyBtYm94LgorICogQG9mZjogb2Zmc2V0IGludG8gYnVmZmVyIHRvIGJlZ2lubmluZyBvZiBkYXRhLgorICogQGNvdW50OiBieXRlcyB0byB0cmFuc2Zlci4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIEFjY2Vzc2VkIHZpYSAvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0eHh4L21ib3guCisgKiBVc2VzIHRoZSBzeXNmcyBtYm94IHRvIHJlY2VpdmUgZGF0YSBmcm9tIHRvIHRoZSBhZGFwdGVyLgorICoKKyAqIFJldHVybnM6CisgKiAtRVJBTkdFIG9mZiBncmVhdGVyIHRoYW4gbWFpbGJveCBjb21tYW5kIHNpemUKKyAqIC1FSU5WQUwgb2ZmLCBjb3VudCBvciBidWZmIGFkZHJlc3MgaW52YWxpZAorICogemVybyBpZiBvZmYgYW5kIGNvdW50IGFyZSB6ZXJvCisgKiAtRUFDQ0VTIGFkYXB0ZXIgb3ZlciB0ZW1wCisgKiAtRVBFUk0gZ2FyYmFnZSBjYW4gdmFsdWUgdG8gY2F0Y2ggYSBtdWx0aXR1ZGUgb2YgZXJyb3JzCisgKiAtRUFHQUlOIG1hbmFnZW1lbnQgSU8gbm90IHBlcm1pdHRlZCwgc3RhdGUgb3Igb2ZmIGVycm9yCisgKiAtRVRJTUUgbWFpbGJveCB0aW1lb3V0CisgKiAtRU5PREVWIG1haWxib3ggZXJyb3IKKyAqIGNvdW50IG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZAorICoqLwogc3RhdGljIHNzaXplX3QKIHN5c2ZzX21ib3hfcmVhZChzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLAogCQljaGFyICpidWYsIGxvZmZfdCBvZmYsIHNpemVfdCBjb3VudCkKQEAgLTE5NTQsNiArMzE2Miw4IEBACiAJCWNhc2UgTUJYX0RFTF9MRF9FTlRSWToKIAkJY2FzZSBNQlhfU0VUX1ZBUklBQkxFOgogCQljYXNlIE1CWF9XUklURV9XV046CisJCWNhc2UgTUJYX1BPUlRfQ0FQQUJJTElUSUVTOgorCQljYXNlIE1CWF9QT1JUX0lPVl9DT05UUk9MOgogCQkJYnJlYWs7CiAJCWNhc2UgTUJYX1JFQURfU1BBUk02NDoKIAkJY2FzZSBNQlhfUkVBRF9MQToKQEAgLTE5NzgsMTcgKzMxODgsMTUgQEAKIAkJLyogSWYgSEJBIGVuY291bnRlcmVkIGFuIGVycm9yIGF0dGVudGlvbiwgYWxsb3cgb25seSBEVU1QCiAJCSAqIG9yIFJFU1RBUlQgbWFpbGJveCBjb21tYW5kcyB1bnRpbCB0aGUgSEJBIGlzIHJlc3RhcnRlZC4KIAkJICovCi0JCWlmICgocGhiYS0+cHBvcnQtPnN0b3BwZWQpICYmCi0JCQkocGhiYS0+c3lzZnNfbWJveC5tYm94LT5tYi5tYnhDb21tYW5kICE9Ci0JCQkJTUJYX0RVTVBfTUVNT1JZICYmCi0JCQkgcGhiYS0+c3lzZnNfbWJveC5tYm94LT5tYi5tYnhDb21tYW5kICE9Ci0JCQkJTUJYX1JFU1RBUlQgJiYKLQkJCSBwaGJhLT5zeXNmc19tYm94Lm1ib3gtPm1iLm1ieENvbW1hbmQgIT0KLQkJCQlNQlhfV1JJVEVfVlBBUk1TKSkgewotCQkJc3lzZnNfbWJveF9pZGxlKHBoYmEpOwotCQkJc3Bpbl91bmxvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKLQkJCXJldHVybiAtRVBFUk07Ci0JCX0KKwkJaWYgKHBoYmEtPnBwb3J0LT5zdG9wcGVkICYmCisJCSAgICBwaGJhLT5zeXNmc19tYm94Lm1ib3gtPm1iLm1ieENvbW1hbmQgIT0gTUJYX0RVTVBfTUVNT1JZICYmCisJCSAgICBwaGJhLT5zeXNmc19tYm94Lm1ib3gtPm1iLm1ieENvbW1hbmQgIT0gTUJYX1JFU1RBUlQgJiYKKwkJICAgIHBoYmEtPnN5c2ZzX21ib3gubWJveC0+bWIubWJ4Q29tbWFuZCAhPSBNQlhfV1JJVEVfVlBBUk1TICYmCisJCSAgICBwaGJhLT5zeXNmc19tYm94Lm1ib3gtPm1iLm1ieENvbW1hbmQgIT0gTUJYX1dSSVRFX1dXTikKKwkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX1dBUk5JTkcsIExPR19NQk9YLAorCQkJCQkiMTI1OSBtYm94OiBJc3N1ZWQgbWFpbGJveCBjbWQgIgorCQkJCQkiMHgleCB3aGlsZSBpbiBzdG9wcGVkIHN0YXRlLlxuIiwKKwkJCQkJcGhiYS0+c3lzZnNfbWJveC5tYm94LT5tYi5tYnhDb21tYW5kKTsKIAogCQlwaGJhLT5zeXNmc19tYm94Lm1ib3gtPnZwb3J0ID0gdnBvcnQ7CiAKQEAgLTIwNTksNiArMzI2NywxNCBAQAogCS53cml0ZSA9IHN5c2ZzX21ib3hfd3JpdGUsCiB9OwogCisvKioKKyAqIGxwZmNfYWxsb2Nfc3lzZnNfYXR0cjogQ3JlYXRlcyB0aGUgY3RscmVnIGFuZCBtYm94IGVudHJpZXMuCisgKiBAdnBvcnQ6IGFkZHJlc3Mgb2YgbHBmYyB2cG9ydCBzdHJ1Y3R1cmUuCisgKgorICogUmV0dXJuIGNvZGVzOgorICogemVybyBvbiBzdWNjZXNzCisgKiBlcnJvciByZXR1cm4gY29kZSBmcm9tIHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZSgpCisgKiovCiBpbnQKIGxwZmNfYWxsb2Nfc3lzZnNfYXR0cihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0yMDc1LDE4ICszMjkxLDMwIEBACiAJaWYgKGVycm9yKQogCQlnb3RvIG91dF9yZW1vdmVfY3RscmVnX2F0dHI7CiAKKwllcnJvciA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZSgmc2hvc3QtPnNob3N0X2Rldi5rb2JqLAorCQkJCSAgICAgICZzeXNmc19kcnZyX3N0YXRfZGF0YV9hdHRyKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X3JlbW92ZV9tYm94X2F0dHI7CisKIAlyZXR1cm4gMDsKK291dF9yZW1vdmVfbWJveF9hdHRyOgorCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmc2hvc3QtPnNob3N0X2Rldi5rb2JqLCAmc3lzZnNfbWJveF9hdHRyKTsKIG91dF9yZW1vdmVfY3RscmVnX2F0dHI6CiAJc3lzZnNfcmVtb3ZlX2Jpbl9maWxlKCZzaG9zdC0+c2hvc3RfZGV2LmtvYmosICZzeXNmc19jdGxyZWdfYXR0cik7CiBvdXQ6CiAJcmV0dXJuIGVycm9yOwogfQogCisvKioKKyAqIGxwZmNfZnJlZV9zeXNmc19hdHRyOiBSZW1vdmVzIHRoZSBjdGxyZWcgYW5kIG1ib3ggZW50cmllcy4KKyAqIEB2cG9ydDogYWRkcmVzcyBvZiBscGZjIHZwb3J0IHN0cnVjdHVyZS4KKyAqKi8KIHZvaWQKIGxwZmNfZnJlZV9zeXNmc19hdHRyKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydCk7Ci0KKwlzeXNmc19yZW1vdmVfYmluX2ZpbGUoJnNob3N0LT5zaG9zdF9kZXYua29iaiwKKwkJJnN5c2ZzX2RydnJfc3RhdF9kYXRhX2F0dHIpOwogCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmc2hvc3QtPnNob3N0X2Rldi5rb2JqLCAmc3lzZnNfbWJveF9hdHRyKTsKIAlzeXNmc19yZW1vdmVfYmluX2ZpbGUoJnNob3N0LT5zaG9zdF9kZXYua29iaiwgJnN5c2ZzX2N0bHJlZ19hdHRyKTsKIH0KQEAgLTIwOTYsNiArMzMyNCwxMCBAQAogICogRHluYW1pYyBGQyBIb3N0IEF0dHJpYnV0ZXMgU3VwcG9ydAogICovCiAKKy8qKgorICogbHBmY19nZXRfaG9zdF9wb3J0X2lkOiBDb3B5IHRoZSB2cG9ydCBESUQgaW50byB0aGUgc2NzaSBob3N0IHBvcnQgaWQuCisgKiBAc2hvc3Q6IGtlcm5lbCBzY3NpIGhvc3QgcG9pbnRlci4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2dldF9ob3N0X3BvcnRfaWQoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpCiB7CkBAIC0yMTA1LDYgKzMzMzcsMTAgQEAKIAlmY19ob3N0X3BvcnRfaWQoc2hvc3QpID0gdnBvcnQtPmZjX215RElEOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X2hvc3RfcG9ydF90eXBlOiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBzY3NpIGhvc3QgcG9ydCB0eXBlLgorICogQHNob3N0OiBrZXJuZWwgc2NzaSBob3N0IHBvaW50ZXIuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19nZXRfaG9zdF9wb3J0X3R5cGUoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpCiB7CkBAIC0yMTMzLDYgKzMzNjksMTAgQEAKIAlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CiB9CiAKKy8qKgorICogbHBmY19nZXRfaG9zdF9wb3J0X3N0YXRlOiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBzY3NpIGhvc3QgcG9ydCBzdGF0ZS4KKyAqIEBzaG9zdDoga2VybmVsIHNjc2kgaG9zdCBwb2ludGVyLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfZ2V0X2hvc3RfcG9ydF9zdGF0ZShzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKIHsKQEAgLTIxNjcsNiArMzQwNywxMCBAQAogCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKIH0KIAorLyoqCisgKiBscGZjX2dldF9ob3N0X3NwZWVkOiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBzY3NpIGhvc3Qgc3BlZWQuCisgKiBAc2hvc3Q6IGtlcm5lbCBzY3NpIGhvc3QgcG9pbnRlci4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2dldF9ob3N0X3NwZWVkKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KQogewpAQCAtMjE5OSw2ICszNDQzLDEwIEBACiAJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X2hvc3RfZmFicmljX25hbWU6IFNldCB0aGUgdmFsdWUgb2YgdGhlIHNjc2kgaG9zdCBmYWJyaWMgbmFtZS4KKyAqIEBzaG9zdDoga2VybmVsIHNjc2kgaG9zdCBwb2ludGVyLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfZ2V0X2hvc3RfZmFicmljX25hbWUgKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KQogewpAQCAtMjIyMSw2ICszNDY5LDE4IEBACiAJZmNfaG9zdF9mYWJyaWNfbmFtZShzaG9zdCkgPSBub2RlX25hbWU7CiB9CiAKKy8qKgorICogbHBmY19nZXRfc3RhdHM6IFJldHVybiBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWRhcHRlci4KKyAqIEBzaG9zdDoga2VybmVsIHNjc2kgaG9zdCBwb2ludGVyLgorICoKKyAqIE5vdGVzOgorICogTlVMTCBvbiBlcnJvciBmb3IgbGluayBkb3duLCBubyBtYm94IHBvb2wsIHNsaTIgYWN0aXZlLAorICogbWFuYWdlbWVudCBub3QgYWxsb3dlZCwgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IsIG9yIG1ib3ggZXJyb3IuCisgKgorICogUmV0dXJuczoKKyAqIE5VTEwgZm9yIGVycm9yCisgKiBhZGRyZXNzIG9mIHRoZSBhZGFwdGVyIGhvc3Qgc3RhdGlzdGljcworICoqLwogc3RhdGljIHN0cnVjdCBmY19ob3N0X3N0YXRpc3RpY3MgKgogbHBmY19nZXRfc3RhdHMoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpCiB7CkBAIC0yMzM0LDYgKzM1OTQsMTAgQEAKIAlyZXR1cm4gaHM7CiB9CiAKKy8qKgorICogbHBmY19yZXNldF9zdGF0czogQ29weSB0aGUgYWRhcHRlciBsaW5rIHN0YXRzIGluZm9ybWF0aW9uLgorICogQHNob3N0OiBrZXJuZWwgc2NzaSBob3N0IHBvaW50ZXIuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19yZXNldF9zdGF0cyhzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKIHsKQEAgLTI0MTEsNiArMzY3NSwxNCBAQAogICogYXJlIG5vIHN5c2ZzIGhhbmRsZXJzIGZvciBsaW5rX2Rvd25fdG1vLgogICovCiAKKy8qKgorICogbHBmY19nZXRfbm9kZV9ieV90YXJnZXQ6IFJldHVybiB0aGUgbm9kZWxpc3QgZm9yIGEgdGFyZ2V0LgorICogQHN0YXJnZXQ6IGtlcm5lbCBzY3NpIHRhcmdldCBwb2ludGVyLgorICoKKyAqIFJldHVybnM6CisgKiBhZGRyZXNzIG9mIHRoZSBub2RlIGxpc3QgaWYgZm91bmQKKyAqIE5VTEwgdGFyZ2V0IG5vdCBmb3VuZAorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX25vZGVsaXN0ICoKIGxwZmNfZ2V0X25vZGVfYnlfdGFyZ2V0KHN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCkKIHsKQEAgLTI0MzIsNiArMzcwNCwxMCBAQAogCXJldHVybiBOVUxMOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X3N0YXJnZXRfcG9ydF9pZDogU2V0IHRoZSB0YXJnZXQgcG9ydCBpZCB0byB0aGUgbmRscCBESUQgb3IgLTEuCisgKiBAc3RhcmdldDoga2VybmVsIHNjc2kgdGFyZ2V0IHBvaW50ZXIuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19nZXRfc3RhcmdldF9wb3J0X2lkKHN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCkKIHsKQEAgLTI0NDAsNiArMzcxNiwxMiBAQAogCWZjX3N0YXJnZXRfcG9ydF9pZChzdGFyZ2V0KSA9IG5kbHAgPyBuZGxwLT5ubHBfRElEIDogLTE7CiB9CiAKKy8qKgorICogbHBmY19nZXRfc3RhcmdldF9ub2RlX25hbWU6IFNldCB0aGUgdGFyZ2V0IG5vZGUgbmFtZS4KKyAqIEBzdGFyZ2V0OiBrZXJuZWwgc2NzaSB0YXJnZXQgcG9pbnRlci4KKyAqCisgKiBEZXNjcmlwdGlvbjogU2V0IHRoZSB0YXJnZXQgbm9kZSBuYW1lIHRvIHRoZSBuZGxwIG5vZGUgbmFtZSB3d24gb3IgemVyby4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2dldF9zdGFyZ2V0X25vZGVfbmFtZShzdHJ1Y3Qgc2NzaV90YXJnZXQgKnN0YXJnZXQpCiB7CkBAIC0yNDQ5LDYgKzM3MzEsMTIgQEAKIAkJbmRscCA/IHd3bl90b191NjQobmRscC0+bmxwX25vZGVuYW1lLnUud3duKSA6IDA7CiB9CiAKKy8qKgorICogbHBmY19nZXRfc3RhcmdldF9wb3J0X25hbWU6IFNldCB0aGUgdGFyZ2V0IHBvcnQgbmFtZS4KKyAqIEBzdGFyZ2V0OiBrZXJuZWwgc2NzaSB0YXJnZXQgcG9pbnRlci4KKyAqCisgKiBEZXNjcmlwdGlvbjogIHNldCB0aGUgdGFyZ2V0IHBvcnQgbmFtZSB0byB0aGUgbmRscCBwb3J0IG5hbWUgd3duIG9yIHplcm8uCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19nZXRfc3RhcmdldF9wb3J0X25hbWUoc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0KQogewpAQCAtMjQ1OCw2ICszNzQ2LDE1IEBACiAJCW5kbHAgPyB3d25fdG9fdTY0KG5kbHAtPm5scF9wb3J0bmFtZS51Lnd3bikgOiAwOwogfQogCisvKioKKyAqIGxwZmNfc2V0X3Jwb3J0X2xvc3NfdG1vOiBTZXQgdGhlIHJwb3J0IGRldiBsb3NzIHRtby4KKyAqIEBycG9ydDogZmMgcnBvcnQgYWRkcmVzcy4KKyAqIEB0aW1lb3V0OiBuZXcgdmFsdWUgZm9yIGRldiBsb3NzIHRtby4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIElmIHRpbWVvdXQgaXMgbm9uIHplcm8gc2V0IHRoZSBkZXZfbG9zc190bW8gdG8gdGltZW91dCwgZWxzZSBzZXQKKyAqIGRldl9sb3NzX3RtbyB0byBvbmUuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19zZXRfcnBvcnRfbG9zc190bW8oc3RydWN0IGZjX3Jwb3J0ICpycG9ydCwgdWludDMyX3QgdGltZW91dCkKIHsKQEAgLTI0NjcsNyArMzc2NCwxOCBAQAogCQlycG9ydC0+ZGV2X2xvc3NfdG1vID0gMTsKIH0KIAotCisvKioKKyAqIGxwZmNfcnBvcnRfc2hvd19mdW5jdGlvbjogUmV0dXJuIHJwb3J0IHRhcmdldCBpbmZvcm1hdGlvbi4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIE1hY3JvIHRoYXQgdXNlcyBmaWVsZCB0byBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHdpdGggdGhlIG5hbWUgbHBmY19zaG93X3Jwb3J0XworICoKKyAqIGxwZmNfc2hvd19ycG9ydF8jI2ZpZWxkOiByZXR1cm5zIHRoZSBieXRlcyBmb3JtYXR0ZWQgaW4gYnVmCisgKiBAY2RldjogY2xhc3MgY29udmVydGVkIHRvIGFuIGZjX3Jwb3J0LgorICogQGJ1Zjogb24gcmV0dXJuIGNvbnRhaW5zIHRoZSB0YXJnZXRfZmllbGQgb3IgemVyby4KKyAqCisgKiBSZXR1cm5zOiBzaXplIG9mIGZvcm1hdHRlZCBzdHJpbmcuCisgKiovCiAjZGVmaW5lIGxwZmNfcnBvcnRfc2hvd19mdW5jdGlvbihmaWVsZCwgZm9ybWF0X3N0cmluZywgc3osIGNhc3QpCVwKIHN0YXRpYyBzc2l6ZV90CQkJCQkJCQlcCiBscGZjX3Nob3dfcnBvcnRfIyNmaWVsZCAoc3RydWN0IGRldmljZSAqZGV2LAkJCQlcCkBAIC0yNjAyLDYgKzM5MTAsMTAgQEAKIAkudnBvcnRfZGlzYWJsZSA9IGxwZmNfdnBvcnRfZGlzYWJsZSwKIH07CiAKKy8qKgorICogbHBmY19nZXRfY2ZncGFyYW06IFVzZWQgZHVyaW5nIHByb2JlX29uZSB0byBpbml0IHRoZSBhZGFwdGVyIHN0cnVjdHVyZS4KKyAqIEBwaGJhOiBscGZjX2hiYSBwb2ludGVyLgorICoqLwogdm9pZAogbHBmY19nZXRfY2ZncGFyYW0oc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMjYzNyw2ICszOTQ5LDEwIEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X3Zwb3J0X2NmZ3BhcmFtOiBVc2VkIGR1cmluZyBwb3J0IGNyZWF0ZSwgaW5pdCB0aGUgdnBvcnQgc3RydWN0dXJlLgorICogQHZwb3J0OiBscGZjX3Zwb3J0IHBvaW50ZXIuCisgKiovCiB2b2lkCiBscGZjX2dldF92cG9ydF9jZmdwYXJhbShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0yNjQ4LDYgKzM5NjQsNyBAQAogCWxwZmNfcmVzdHJpY3RfbG9naW5faW5pdCh2cG9ydCwgbHBmY19yZXN0cmljdF9sb2dpbik7CiAJbHBmY19mY3BfY2xhc3NfaW5pdCh2cG9ydCwgbHBmY19mY3BfY2xhc3MpOwogCWxwZmNfdXNlX2FkaXNjX2luaXQodnBvcnQsIGxwZmNfdXNlX2FkaXNjKTsKKwlscGZjX21heF9zY3NpY21wbF90aW1lX2luaXQodnBvcnQsIGxwZmNfbWF4X3Njc2ljbXBsX3RpbWUpOwogCWxwZmNfZmRtaV9vbl9pbml0KHZwb3J0LCBscGZjX2ZkbWlfb24pOwogCWxwZmNfZGlzY292ZXJ5X3RocmVhZHNfaW5pdCh2cG9ydCwgbHBmY19kaXNjb3ZlcnlfdGhyZWFkcyk7CiAJbHBmY19tYXhfbHVuc19pbml0KHZwb3J0LCBscGZjX21heF9sdW5zKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfY3J0bi5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19jcnRuLmgKaW5kZXggMWI4MjQ1Mi4uMDQ0ZWY0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19jcnRuLmgKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19jcnRuLmgKQEAgLTE4LDcgKzE4LDcgQEAKICAqIGluY2x1ZGVkIHdpdGggdGhpcyBwYWNrYWdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdHlwZWRlZiBpbnQgKCpub2RlX2ZpbHRlcikoc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsIHZvaWQgKnBhcmFtKTsKK3R5cGVkZWYgaW50ICgqbm9kZV9maWx0ZXIpKHN0cnVjdCBscGZjX25vZGVsaXN0ICosIHZvaWQgKik7CiAKIHN0cnVjdCBmY19ycG9ydDsKIHZvaWQgbHBmY19kdW1wX21lbShzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICosIHVpbnQxNl90KTsKQEAgLTI2LDExICsyNiwxMSBAQAogdm9pZCBscGZjX2NvbmZpZ19hc3luYyhzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICosIHVpbnQzMl90KTsKIAogdm9pZCBscGZjX2hlYXJ0X2JlYXQoc3RydWN0IGxwZmNfaGJhICosIExQRkNfTUJPWFFfdCAqKTsKLWludCBscGZjX3JlYWRfbGEoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1iLAotCQkgc3RydWN0IGxwZmNfZG1hYnVmICptcCk7CitpbnQgbHBmY19yZWFkX2xhKHN0cnVjdCBscGZjX2hiYSAqLCBMUEZDX01CT1hRX3QgKiwgc3RydWN0IGxwZmNfZG1hYnVmICopOwogdm9pZCBscGZjX2NsZWFyX2xhKHN0cnVjdCBscGZjX2hiYSAqLCBMUEZDX01CT1hRX3QgKik7Ci12b2lkIGxwZmNfaXNzdWVfY2xlYXJfbGEoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpOwordm9pZCBscGZjX2lzc3VlX2NsZWFyX2xhKHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY192cG9ydCAqKTsKIHZvaWQgbHBmY19jb25maWdfbGluayhzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICopOworaW50IGxwZmNfY29uZmlnX21zaShzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICopOwogaW50IGxwZmNfcmVhZF9zcGFyYW0oc3RydWN0IGxwZmNfaGJhICosIExQRkNfTUJPWFFfdCAqLCBpbnQpOwogdm9pZCBscGZjX3JlYWRfY29uZmlnKHN0cnVjdCBscGZjX2hiYSAqLCBMUEZDX01CT1hRX3QgKik7CiB2b2lkIGxwZmNfcmVhZF9sbmtfc3RhdChzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICopOwpAQCAtNDMsNyArNDMsNyBAQAogdm9pZCBscGZjX2luaXRfbGluayhzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICosIHVpbnQzMl90LCB1aW50MzJfdCk7CiAKIHN0cnVjdCBscGZjX3Zwb3J0ICpscGZjX2ZpbmRfdnBvcnRfYnlfZGlkKHN0cnVjdCBscGZjX2hiYSAqLCB1aW50MzJfdCk7Ci12b2lkIGxwZmNfY2xlYW51cF9ycGlzKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgaW50IHJlbW92ZSk7Cit2b2lkIGxwZmNfY2xlYW51cF9ycGlzKHN0cnVjdCBscGZjX3Zwb3J0ICosIGludCk7CiBpbnQgbHBmY19saW5rZG93bihzdHJ1Y3QgbHBmY19oYmEgKik7CiB2b2lkIGxwZmNfcG9ydF9saW5rX2ZhaWx1cmUoc3RydWN0IGxwZmNfdnBvcnQgKik7CiB2b2lkIGxwZmNfbWJ4X2NtcGxfcmVhZF9sYShzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICopOwpAQCAtMTM1LDcgKzEzNSw3IEBACiBpbnQgbHBmY19uc19jbWQoc3RydWN0IGxwZmNfdnBvcnQgKiwgaW50LCB1aW50OF90LCB1aW50MzJfdCk7CiBpbnQgbHBmY19mZG1pX2NtZChzdHJ1Y3QgbHBmY192cG9ydCAqLCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqLCBpbnQpOwogdm9pZCBscGZjX2ZkbWlfdG1vKHVuc2lnbmVkIGxvbmcpOwotdm9pZCBscGZjX2ZkbWlfdGltZW91dF9oYW5kbGVyKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCk7Cit2b2lkIGxwZmNfZmRtaV90aW1lb3V0X2hhbmRsZXIoc3RydWN0IGxwZmNfdnBvcnQgKik7CiAKIGludCBscGZjX2NvbmZpZ19wb3J0X3ByZXAoc3RydWN0IGxwZmNfaGJhICopOwogaW50IGxwZmNfY29uZmlnX3BvcnRfcG9zdChzdHJ1Y3QgbHBmY19oYmEgKik7CkBAIC0xNTUsNiArMTU1LDggQEAKIHZvaWQgbHBmY19oYW5kbGVfZXJhdHQoc3RydWN0IGxwZmNfaGJhICopOwogdm9pZCBscGZjX2hhbmRsZV9sYXR0KHN0cnVjdCBscGZjX2hiYSAqKTsKIGlycXJldHVybl90IGxwZmNfaW50cl9oYW5kbGVyKGludCwgdm9pZCAqKTsKK2lycXJldHVybl90IGxwZmNfc3BfaW50cl9oYW5kbGVyKGludCwgdm9pZCAqKTsKK2lycXJldHVybl90IGxwZmNfZnBfaW50cl9oYW5kbGVyKGludCwgdm9pZCAqKTsKIAogdm9pZCBscGZjX3JlYWRfcmV2KHN0cnVjdCBscGZjX2hiYSAqLCBMUEZDX01CT1hRX3QgKik7CiB2b2lkIGxwZmNfY29uZmlnX3Jpbmcoc3RydWN0IGxwZmNfaGJhICosIGludCwgTFBGQ19NQk9YUV90ICopOwpAQCAtMTc1LDExICsxNzcsMTIgQEAKIHZvaWQgbHBmY19zdG9wX3Zwb3J0X3RpbWVycyhzdHJ1Y3QgbHBmY192cG9ydCAqKTsKIAogdm9pZCBscGZjX3BvbGxfdGltZW91dCh1bnNpZ25lZCBsb25nIHB0cik7Ci12b2lkIGxwZmNfcG9sbF9zdGFydF90aW1lcihzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhKTsKLXZvaWQgbHBmY19zbGlfcG9sbF9mY3BfcmluZyhzdHJ1Y3QgbHBmY19oYmEgKiBoYmEpOwordm9pZCBscGZjX3BvbGxfc3RhcnRfdGltZXIoc3RydWN0IGxwZmNfaGJhICopOwordm9pZCBscGZjX3BvbGxfZXJhdHQodW5zaWduZWQgbG9uZyk7Cit2b2lkIGxwZmNfc2xpX3BvbGxfZmNwX3Jpbmcoc3RydWN0IGxwZmNfaGJhICopOwogc3RydWN0IGxwZmNfaW9jYnEgKiBscGZjX3NsaV9nZXRfaW9jYnEoc3RydWN0IGxwZmNfaGJhICopOwotdm9pZCBscGZjX3NsaV9yZWxlYXNlX2lvY2JxKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICogaW9jYik7Ci11aW50MTZfdCBscGZjX3NsaV9uZXh0X2lvdGFnKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICogaW9jYik7Cit2b2lkIGxwZmNfc2xpX3JlbGVhc2VfaW9jYnEoc3RydWN0IGxwZmNfaGJhICosIHN0cnVjdCBscGZjX2lvY2JxICopOwordWludDE2X3QgbHBmY19zbGlfbmV4dF9pb3RhZyhzdHJ1Y3QgbHBmY19oYmEgKiwgc3RydWN0IGxwZmNfaW9jYnEgKik7CiAKIHZvaWQgbHBmY19yZXNldF9iYXJyaWVyKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEpOwogaW50IGxwZmNfc2xpX2JyZHJlYWR5KHN0cnVjdCBscGZjX2hiYSAqLCB1aW50MzJfdCk7CkBAIC0xODcsMTEgKzE5MCwxMyBAQAogaW50IGxwZmNfc2xpX2JyZHJlc2V0KHN0cnVjdCBscGZjX2hiYSAqKTsKIGludCBscGZjX3NsaV9icmRyZXN0YXJ0KHN0cnVjdCBscGZjX2hiYSAqKTsKIGludCBscGZjX3NsaV9oYmFfc2V0dXAoc3RydWN0IGxwZmNfaGJhICopOworaW50IGxwZmNfc2xpX2NvbmZpZ19wb3J0KHN0cnVjdCBscGZjX2hiYSAqLCBpbnQpOwogaW50IGxwZmNfc2xpX2hvc3RfZG93bihzdHJ1Y3QgbHBmY192cG9ydCAqKTsKIGludCBscGZjX3NsaV9oYmFfZG93bihzdHJ1Y3QgbHBmY19oYmEgKik7CiBpbnQgbHBmY19zbGlfaXNzdWVfbWJveChzdHJ1Y3QgbHBmY19oYmEgKiwgTFBGQ19NQk9YUV90ICosIHVpbnQzMl90KTsKIGludCBscGZjX3NsaV9oYW5kbGVfbWJfZXZlbnQoc3RydWN0IGxwZmNfaGJhICopOwogaW50IGxwZmNfc2xpX2ZsdXNoX21ib3hfcXVldWUoc3RydWN0IGxwZmNfaGJhICopOworaW50IGxwZmNfc2xpX2NoZWNrX2VyYXR0KHN0cnVjdCBscGZjX2hiYSAqKTsKIGludCBscGZjX3NsaV9oYW5kbGVfc2xvd19yaW5nX2V2ZW50KHN0cnVjdCBscGZjX2hiYSAqLAogCQkJCSAgICBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqLCB1aW50MzJfdCk7CiB2b2lkIGxwZmNfc2xpX2RlZl9tYm94X2NtcGwoc3RydWN0IGxwZmNfaGJhICosIExQRkNfTUJPWFFfdCAqKTsKQEAgLTE5OSw2ICsyMDQsNyBAQAogCQkJc3RydWN0IGxwZmNfaW9jYnEgKiwgdWludDMyX3QpOwogdm9pZCBscGZjX3NsaV9wY2ltZW1fYmNvcHkodm9pZCAqLCB2b2lkICosIHVpbnQzMl90KTsKIHZvaWQgbHBmY19zbGlfYWJvcnRfaW9jYl9yaW5nKHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqKTsKK3ZvaWQgbHBmY19zbGlfZmx1c2hfZmNwX3JpbmdzKHN0cnVjdCBscGZjX2hiYSAqKTsKIGludCBscGZjX3NsaV9yaW5ncG9zdGJ1Zl9wdXQoc3RydWN0IGxwZmNfaGJhICosIHN0cnVjdCBscGZjX3NsaV9yaW5nICosCiAJCQkgICAgIHN0cnVjdCBscGZjX2RtYWJ1ZiAqKTsKIHN0cnVjdCBscGZjX2RtYWJ1ZiAqbHBmY19zbGlfcmluZ3Bvc3RidWZfZ2V0KHN0cnVjdCBscGZjX2hiYSAqLApAQCAtMjI2LDE3ICsyMzIsMTMgQEAKIHN0cnVjdCBscGZjX25vZGVsaXN0ICpscGZjX2ZpbmRub2RlX3d3cG4oc3RydWN0IGxwZmNfdnBvcnQgKiwKIAkJCQkJIHN0cnVjdCBscGZjX25hbWUgKik7CiAKLWludCBscGZjX3NsaV9pc3N1ZV9tYm94X3dhaXQoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1ib3hxLAotCQkJICAgICB1aW50MzJfdCB0aW1lb3V0KTsKK2ludCBscGZjX3NsaV9pc3N1ZV9tYm94X3dhaXQoc3RydWN0IGxwZmNfaGJhICosIExQRkNfTUJPWFFfdCAqLCB1aW50MzJfdCk7CiAKLWludCBscGZjX3NsaV9pc3N1ZV9pb2NiX3dhaXQoc3RydWN0IGxwZmNfaGJhICogcGhiYSwKLQkJCSAgICAgc3RydWN0IGxwZmNfc2xpX3JpbmcgKiBwcmluZywKLQkJCSAgICAgc3RydWN0IGxwZmNfaW9jYnEgKiBwaW9jYiwKLQkJCSAgICAgc3RydWN0IGxwZmNfaW9jYnEgKiBwcnNwaW9jYnEsCi0JCQkgICAgIHVpbnQzMl90IHRpbWVvdXQpOwotdm9pZCBscGZjX3NsaV9hYm9ydF9mY3BfY21wbChzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLAotCQkJICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqIGNtZGlvY2IsCi0JCQkgICAgIHN0cnVjdCBscGZjX2lvY2JxICogcnNwaW9jYik7CitpbnQgbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0KHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqLAorCQkJICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqLCBzdHJ1Y3QgbHBmY19pb2NicSAqLAorCQkJICAgICB1aW50MzJfdCk7Cit2b2lkIGxwZmNfc2xpX2Fib3J0X2ZjcF9jbXBsKHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY19pb2NicSAqLAorCQkJICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqKTsKIAogdm9pZCBscGZjX3NsaV9mcmVlX2hicShzdHJ1Y3QgbHBmY19oYmEgKiwgc3RydWN0IGhicV9kbWFidWYgKik7CiAKQEAgLTI2OSw3ICsyNzEsNyBAQAogCiBzdHJ1Y3QgbHBmY192cG9ydCAqbHBmY19jcmVhdGVfcG9ydChzdHJ1Y3QgbHBmY19oYmEgKiwgaW50LCBzdHJ1Y3QgZGV2aWNlICopOwogaW50ICBscGZjX3Zwb3J0X2Rpc2FibGUoc3RydWN0IGZjX3Zwb3J0ICpmY192cG9ydCwgYm9vbCBkaXNhYmxlKTsKLXZvaWQgbHBmY19tYnhfdW5yZWdfdnBpKHN0cnVjdCBscGZjX3Zwb3J0ICopOworaW50IGxwZmNfbWJ4X3VucmVnX3ZwaShzdHJ1Y3QgbHBmY192cG9ydCAqKTsKIHZvaWQgZGVzdHJveV9wb3J0KHN0cnVjdCBscGZjX3Zwb3J0ICopOwogaW50IGxwZmNfZ2V0X2luc3RhbmNlKHZvaWQpOwogdm9pZCBscGZjX2hvc3RfYXR0cmliX2luaXQoc3RydWN0IFNjc2lfSG9zdCAqKTsKQEAgLTI5MCw2ICsyOTIsMTMgQEAKIHZvaWQgbHBmY19hZGp1c3RfcXVldWVfZGVwdGgoc3RydWN0IGxwZmNfaGJhICopOwogdm9pZCBscGZjX3JhbXBfZG93bl9xdWV1ZV9oYW5kbGVyKHN0cnVjdCBscGZjX2hiYSAqKTsKIHZvaWQgbHBmY19yYW1wX3VwX3F1ZXVlX2hhbmRsZXIoc3RydWN0IGxwZmNfaGJhICopOwordm9pZCBscGZjX3Njc2lfZGV2X2Jsb2NrKHN0cnVjdCBscGZjX2hiYSAqKTsKKwordm9pZAorbHBmY19zZW5kX2Vsc19mYWlsdXJlX2V2ZW50KHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY19pb2NicSAqLAorCQkJCXN0cnVjdCBscGZjX2lvY2JxICopOworc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50ICpscGZjX2FsbG9jX2Zhc3RfZXZ0KHN0cnVjdCBscGZjX2hiYSAqKTsKK3ZvaWQgbHBmY19mcmVlX2Zhc3RfZXZ0KHN0cnVjdCBscGZjX2hiYSAqLCBzdHJ1Y3QgbHBmY19mYXN0X3BhdGhfZXZlbnQgKik7CiAKICNkZWZpbmUgU2NzaVJlc3VsdChob3N0X2NvZGUsIHNjc2lfY29kZSkgKCgoaG9zdF9jb2RlKSA8PCAxNikgfCBzY3NpX2NvZGUpCiAjZGVmaW5lIEhCQV9FVkVOVF9SU0NOICAgICAgICAgICAgICAgICAgIDUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfY3QuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfY3QuYwppbmRleCA3ZmM3NGNmLi4yNmRhZThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2N0LmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19jdC5jCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJscGZjX2h3LmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zY3NpLmgiCiAjaW5jbHVkZSAibHBmYy5oIgpAQCAtMTM0LDI1ICsxMzUsMjQgQEAKIAkJfQogCQlsaXN0X2RlbCgmaGVhZCk7CiAJfSBlbHNlIHsKLQkJc3RydWN0IGxwZmNfaW9jYnEgICpuZXh0OwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpb2NicSwgbmV4dCwgJnBpb2NicS0+bGlzdCwgbGlzdCkgeworCQlJTklUX0xJU1RfSEVBRCgmaGVhZCk7CisJCWxpc3RfYWRkX3RhaWwoJmhlYWQsICZwaW9jYnEtPmxpc3QpOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGlvY2JxLCAmaGVhZCwgbGlzdCkgewogCQkJaWNtZCA9ICZpb2NicS0+aW9jYjsKIAkJCWlmIChpY21kLT51bHBCZGVDb3VudCA9PSAwKQotCQkJCWxwZmNfY3RfdW5zb2xfYnVmZmVyKHBoYmEsIHBpb2NicSwgTlVMTCwgMCk7CisJCQkJbHBmY19jdF91bnNvbF9idWZmZXIocGhiYSwgaW9jYnEsIE5VTEwsIDApOwogCQkJZm9yIChpID0gMDsgaSA8IGljbWQtPnVscEJkZUNvdW50OyBpKyspIHsKIAkJCQlwYWRkciA9IGdldFBhZGRyKGljbWQtPnVuLmNvbnQ2NFtpXS5hZGRySGlnaCwKIAkJCQkJCSBpY21kLT51bi5jb250NjRbaV0uYWRkckxvdyk7CiAJCQkJbXAgPSBscGZjX3NsaV9yaW5ncG9zdGJ1Zl9nZXQocGhiYSwgcHJpbmcsCiAJCQkJCQkJICAgICAgcGFkZHIpOwogCQkJCXNpemUgPSBpY21kLT51bi5jb250NjRbaV0udHVzLmYuYmRlU2l6ZTsKLQkJCQlscGZjX2N0X3Vuc29sX2J1ZmZlcihwaGJhLCBwaW9jYnEsIG1wLCBzaXplKTsKKwkJCQlscGZjX2N0X3Vuc29sX2J1ZmZlcihwaGJhLCBpb2NicSwgbXAsIHNpemUpOwogCQkJCWxwZmNfaW5fYnVmX2ZyZWUocGhiYSwgbXApOwogCQkJfQotCQkJbGlzdF9kZWwoJmlvY2JxLT5saXN0KTsKLQkJCWxwZmNfc2xpX3JlbGVhc2VfaW9jYnEocGhiYSwgaW9jYnEpOwogCQkJbHBmY19wb3N0X2J1ZmZlcihwaGJhLCBwcmluZywgaSk7CiAJCX0KKwkJbGlzdF9kZWwoJmhlYWQpOwogCX0KIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBACiAJCWVsc2UKIAkJCWxpc3RfYWRkX3RhaWwoJm1wLT5saXN0LCAmbWxpc3QtPmxpc3QpOwogCi0JCWJwbC0+dHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1VTRV9SQ1Y7CisJCWJwbC0+dHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRFXzY0STsKIAkJLyogYnVpbGQgYnVmZmVyIHB0ciBsaXN0IGZvciBJT0NCICovCiAJCWJwbC0+YWRkckxvdyA9IGxlMzJfdG9fY3B1KHB1dFBhZGRyTG93KG1wLT5waHlzKSApOwogCQlicGwtPmFkZHJIaWdoID0gbGUzMl90b19jcHUocHV0UGFkZHJIaWdoKG1wLT5waHlzKSApOwpAQCAtMjgzLDcgKzI4Myw3IEBACiAJaWNtZC0+dW4uZ2VucmVxNjQuYmRsLnVscElvVGFnMzIgPSAwOwogCWljbWQtPnVuLmdlbnJlcTY0LmJkbC5hZGRySGlnaCA9IHB1dFBhZGRySGlnaChibXAtPnBoeXMpOwogCWljbWQtPnVuLmdlbnJlcTY0LmJkbC5hZGRyTG93ID0gcHV0UGFkZHJMb3coYm1wLT5waHlzKTsKLQlpY21kLT51bi5nZW5yZXE2NC5iZGwuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRMOworCWljbWQtPnVuLmdlbnJlcTY0LmJkbC5iZGVGbGFncyA9IEJVRkZfVFlQRV9CTFBfNjQ7CiAJaWNtZC0+dW4uZ2VucmVxNjQuYmRsLmJkZVNpemUgPSAobnVtX2VudHJ5ICogc2l6ZW9mIChzdHJ1Y3QgdWxwX2JkZTY0KSk7CiAKIAlpZiAodXNyX2ZsZykKQEAgLTg2MSw3ICs4NjEsNyBAQAogCiAJCXJldHJ5Kys7CiAJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fSU5GTywgTE9HX0RJU0NPVkVSWSwKLQkJCQkgIjAyMTYgUmV0cnlpbmcgTlMgY21kICV4XG4iLCBjbWRjb2RlKTsKKwkJCQkgIjAyNTAgUmV0cnlpbmcgTlMgY21kICV4XG4iLCBjbWRjb2RlKTsKIAkJcmMgPSBscGZjX25zX2NtZCh2cG9ydCwgY21kY29kZSwgcmV0cnksIDApOwogCQlpZiAocmMgPT0gMCkKIAkJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19kZWJ1Z2ZzLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYwppbmRleCAwOTRiNDdlLi43NzE5MjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYwpAQCAtMSw3ICsxLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRW11bGV4IExpbnV4IERldmljZSBEcml2ZXIgZm9yICAgICAgICAgKgogICogRmlicmUgQ2hhbm5lbCBIb3N0IEJ1cyBBZGFwdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBFbXVsZXguICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBFbXVsZXguICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgKgogICogRU1VTEVYIGFuZCBTTEkgYXJlIHRyYWRlbWFya3Mgb2YgRW11bGV4LiAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIHd3dy5lbXVsZXguY29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAibHBmY19ody5oIgogI2luY2x1ZGUgImxwZmNfc2xpLmgiCisjaW5jbHVkZSAibHBmY19ubC5oIgogI2luY2x1ZGUgImxwZmNfZGlzYy5oIgogI2luY2x1ZGUgImxwZmNfc2NzaS5oIgogI2luY2x1ZGUgImxwZmMuaCIKQEAgLTQ2LDEzICs0NywxNCBAQAogI2luY2x1ZGUgImxwZmNfZGVidWdmcy5oIgogCiAjaWZkZWYgQ09ORklHX0xQRkNfREVCVUdfRlMKLS8qIGRlYnVnZnMgaW50ZXJmYWNlCisvKioKKyAqIGRlYnVnZnMgaW50ZXJmYWNlCiAgKgogICogVG8gYWNjZXNzIHRoaXMgaW50ZXJmYWNlIHRoZSB1c2VyIHNob3VsZDoKICAqICMgbWtkaXIgL2RlYnVnCiAgKiAjIG1vdW50IC10IGRlYnVnZnMgbm9uZSAvZGVidWcKICAqCi0gKiBUaGUgbHBmYyBkZWJ1Z2ZzIGRpcmVjdG9yeSBoaWVyYWNoeSBpczoKKyAqIFRoZSBscGZjIGRlYnVnZnMgZGlyZWN0b3J5IGhpZXJhcmNoeSBpczoKICAqIGxwZmMvbHBmY1gvdnBvcnRZCiAgKiB3aGVyZSBYIGlzIHRoZSBscGZjIGhiYSB1bmlxdWVfaWQKICAqIHdoZXJlIFkgaXMgdGhlIHZwb3J0IFZQSSBvbiB0aGF0IGhiYQpAQCAtNjEsMTQgKzYzLDIxIEBACiAgKiBkaXNjb3ZlcnlfdHJhY2UKICAqIFRoaXMgaXMgYW4gQUNTSUkgcmVhZGFibGUgZmlsZSB0aGF0IGNvbnRhaW5zIGEgdHJhY2Ugb2YgdGhlIGxhc3QKICAqIGxwZmNfZGVidWdmc19tYXhfZGlzY190cmMgZXZlbnRzIHRoYXQgaGFwcGVuZWQgb24gYSBzcGVjaWZpYyB2cG9ydC4KLSAqIFNlZSBscGZjX2RlYnVnZnMuaCBmb3IgZGlmZmVyZW50IGNhdGVnb3JpZXMgb2YKLSAqIGRpc2NvdmVyeSBldmVudHMuIFRvIGVuYWJsZSB0aGUgZGlzY292ZXJ5IHRyYWNlLCB0aGUgZm9sbG93aW5nCi0gKiBtb2R1bGUgcGFyYW1ldGVycyBtdXN0IGJlIHNldDoKKyAqIFNlZSBscGZjX2RlYnVnZnMuaCBmb3IgZGlmZmVyZW50IGNhdGVnb3JpZXMgb2YgIGRpc2NvdmVyeSBldmVudHMuCisgKiBUbyBlbmFibGUgdGhlIGRpc2NvdmVyeSB0cmFjZSwgdGhlIGZvbGxvd2luZyBtb2R1bGUgcGFyYW1ldGVycyBtdXN0IGJlIHNldDoKICAqIGxwZmNfZGVidWdmc19lbmFibGU9MSAgICAgICAgIFR1cm5zIG9uIGxwZmMgZGVidWdmcyBmaWxlc3lzdGVtIHN1cHBvcnQKICAqIGxwZmNfZGVidWdmc19tYXhfZGlzY190cmM9WCAgIFdoZXJlIFggaXMgdGhlIGV2ZW50IHRyYWNlIGRlcHRoIGZvcgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUFDSCB2cG9ydC4gWCBNVVNUIGFsc28gYmUgYSBwb3dlciBvZiAyLgogICogbHBmY19kZWJ1Z2ZzX21hc2tfZGlzY190cmM9WSAgV2hlcmUgWSBpcyBhbiBldmVudCBtYXNrIGFzIGRlZmluZWQgaW4KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwZmNfZGVidWdmcy5oIC4KKyAqCisgKiBzbG93X3JpbmdfdHJhY2UKKyAqIFRoaXMgaXMgYW4gQUNTSUkgcmVhZGFibGUgZmlsZSB0aGF0IGNvbnRhaW5zIGEgdHJhY2Ugb2YgdGhlIGxhc3QKKyAqIGxwZmNfZGVidWdmc19tYXhfc2xvd19yaW5nX3RyYyBldmVudHMgdGhhdCBoYXBwZW5lZCBvbiBhIHNwZWNpZmljIEhCQS4KKyAqIFRvIGVuYWJsZSB0aGUgc2xvdyByaW5nIHRyYWNlLCB0aGUgZm9sbG93aW5nIG1vZHVsZSBwYXJhbWV0ZXJzIG11c3QgYmUgc2V0OgorICogbHBmY19kZWJ1Z2ZzX2VuYWJsZT0xICAgICAgICAgVHVybnMgb24gbHBmYyBkZWJ1Z2ZzIGZpbGVzeXN0ZW0gc3VwcG9ydAorICogbHBmY19kZWJ1Z2ZzX21heF9zbG93X3JpbmdfdHJjPVggICBXaGVyZSBYIGlzIHRoZSBldmVudCB0cmFjZSBkZXB0aCBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBIQkEuIFggTVVTVCBhbHNvIGJlIGEgcG93ZXIgb2YgMi4KICAqLwogc3RhdGljIGludCBscGZjX2RlYnVnZnNfZW5hYmxlID0gMTsKIG1vZHVsZV9wYXJhbShscGZjX2RlYnVnZnNfZW5hYmxlLCBpbnQsIDApOwpAQCAtMTE3LDYgKzEyNiwyNSBAQAogc3RhdGljIGF0b21pY190IGxwZmNfZGVidWdmc19zZXFfdHJjX2NudCA9IEFUT01JQ19JTklUKDApOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbHBmY19kZWJ1Z2ZzX3N0YXJ0X3RpbWUgPSAwTDsKIAorLyoqCisgKiBscGZjX2RlYnVnZnNfZGlzY190cmNfZGF0YSAtIER1bXAgZGlzY292ZXJ5IGxvZ2dpbmcgdG8gYSBidWZmZXIuCisgKiBAdnBvcnQ6IFRoZSB2cG9ydCB0byBnYXRoZXIgdGhlIGxvZyBpbmZvIGZyb20uCisgKiBAYnVmOiBUaGUgYnVmZmVyIHRvIGR1bXAgbG9nIGludG8uCisgKiBAc2l6ZTogVGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gcHJvY2Vzcy4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBnYXRoZXJzIHRoZSBscGZjIGRpc2NvdmVyeSBkZWJ1Z2ZzIGRhdGEgZnJvbSB0aGUgQHZwb3J0IGFuZAorICogZHVtcHMgaXQgdG8gQGJ1ZiB1cCB0byBAc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIEl0IHdpbGwgc3RhcnQgYXQgdGhlIG5leHQgZW50cnkKKyAqIGluIHRoZSBsb2cgYW5kIHByb2Nlc3MgdGhlIGxvZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuIFRoZW4gaXQgd2lsbAorICogZ2F0aGVyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbG9nIGFuZCBwcm9jZXNzIHVudGlsIHRoZSBjdXJyZW50IGVudHJ5LgorICoKKyAqIE5vdGVzOgorICogRGlzY292ZXJ5IGxvZ2dpbmcgd2lsbCBiZSBkaXNhYmxlZCB3aGlsZSB3aGlsZSB0aGlzIHJvdXRpbmUgZHVtcHMgdGhlIGxvZy4KKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiBUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZSBkdW1wZWQgaW50byBAYnVmIGFuZCB3aWxsCisgKiBub3QgZXhjZWVkIEBzaXplLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX2Rpc2NfdHJjX2RhdGEoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBjaGFyICpidWYsIGludCBzaXplKQogewpAQCAtMTI1LDcgKzE1Myw2IEBACiAJc3RydWN0IGxwZmNfZGVidWdmc190cmMgKmR0cDsKIAljaGFyIGJ1ZmZlcltMUEZDX0RFQlVHX1RSQ19FTlRSWV9TSVpFXTsKIAotCiAJZW5hYmxlID0gbHBmY19kZWJ1Z2ZzX2VuYWJsZTsKIAlscGZjX2RlYnVnZnNfZW5hYmxlID0gMDsKIApAQCAtMTU5LDYgKzE4NiwyNSBAQAogCXJldHVybiBsZW47CiB9CiAKKy8qKgorICogbHBmY19kZWJ1Z2ZzX3Nsb3dfcmluZ190cmNfZGF0YSAtIER1bXAgc2xvdyByaW5nIGxvZ2dpbmcgdG8gYSBidWZmZXIuCisgKiBAcGhiYTogVGhlIEhCQSB0byBnYXRoZXIgdGhlIGxvZyBpbmZvIGZyb20uCisgKiBAYnVmOiBUaGUgYnVmZmVyIHRvIGR1bXAgbG9nIGludG8uCisgKiBAc2l6ZTogVGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gcHJvY2Vzcy4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBnYXRoZXJzIHRoZSBscGZjIHNsb3cgcmluZyBkZWJ1Z2ZzIGRhdGEgZnJvbSB0aGUgQHBoYmEgYW5kCisgKiBkdW1wcyBpdCB0byBAYnVmIHVwIHRvIEBzaXplIG51bWJlciBvZiBieXRlcy4gSXQgd2lsbCBzdGFydCBhdCB0aGUgbmV4dCBlbnRyeQorICogaW4gdGhlIGxvZyBhbmQgcHJvY2VzcyB0aGUgbG9nIHVudGlsIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4gVGhlbiBpdCB3aWxsCisgKiBnYXRoZXIgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2cgYW5kIHByb2Nlc3MgdW50aWwgdGhlIGN1cnJlbnQgZW50cnkuCisgKgorICogTm90ZXM6CisgKiBTbG93IHJpbmcgbG9nZ2luZyB3aWxsIGJlIGRpc2FibGVkIHdoaWxlIHdoaWxlIHRoaXMgcm91dGluZSBkdW1wcyB0aGUgbG9nLgorICoKKyAqIFJldHVybiBWYWx1ZToKKyAqIFRoaXMgcm91dGluZSByZXR1cm5zIHRoZSBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlIGR1bXBlZCBpbnRvIEBidWYgYW5kIHdpbGwKKyAqIG5vdCBleGNlZWQgQHNpemUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2RlYnVnZnNfc2xvd19yaW5nX3RyY19kYXRhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgY2hhciAqYnVmLCBpbnQgc2l6ZSkKIHsKQEAgLTIwMyw2ICsyNDksMjUgQEAKIAogc3RhdGljIGludCBscGZjX2RlYnVnZnNfbGFzdF9oYnEgPSAtMTsKIAorLyoqCisgKiBscGZjX2RlYnVnZnNfaGJxaW5mb19kYXRhIC0gRHVtcCBob3N0IGJ1ZmZlciBxdWV1ZSBpbmZvIHRvIGEgYnVmZmVyLgorICogQHBoYmE6IFRoZSBIQkEgdG8gZ2F0aGVyIGhvc3QgYnVmZmVyIGluZm8gZnJvbS4KKyAqIEBidWY6IFRoZSBidWZmZXIgdG8gZHVtcCBsb2cgaW50by4KKyAqIEBzaXplOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgZGF0YSB0byBwcm9jZXNzLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogVGhpcyByb3V0aW5lIGR1bXBzIHRoZSBob3N0IGJ1ZmZlciBxdWV1ZSBpbmZvIGZyb20gdGhlIEBwaGJhIHRvIEBidWYgdXAgdG8KKyAqIEBzaXplIG51bWJlciBvZiBieXRlcy4gQSBoZWFkZXIgdGhhdCBkZXNjcmliZXMgdGhlIGN1cnJlbnQgaGJxIHN0YXRlIHdpbGwgYmUKKyAqIGR1bXBlZCB0byBAYnVmIGZpcnN0IGFuZCB0aGVuIGluZm8gb24gZWFjaCBoYnEgZW50cnkgd2lsbCBiZSBkdW1wZWQgdG8gQGJ1ZgorICogdW50aWwgQHNpemUgYnl0ZXMgaGF2ZSBiZWVuIGR1bXBlZCBvciBhbGwgdGhlIGhicSBpbmZvIGhhcyBiZWVuIGR1bXBlZC4KKyAqCisgKiBOb3RlczoKKyAqIFRoaXMgcm91dGluZSB3aWxsIHJvdGF0ZSB0aHJvdWdoIGVhY2ggY29uZmlndXJlZCBIQlEgZWFjaCB0aW1lIGNhbGxlZC4KKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiBUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZSBkdW1wZWQgaW50byBAYnVmIGFuZCB3aWxsCisgKiBub3QgZXhjZWVkIEBzaXplLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX2hicWluZm9fZGF0YShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIGNoYXIgKmJ1ZiwgaW50IHNpemUpCiB7CkBAIC0zMDMsNiArMzY4LDI0IEBACiAKIHN0YXRpYyBpbnQgbHBmY19kZWJ1Z2ZzX2xhc3RfaGJhX3NsaW1fb2ZmOwogCisvKioKKyAqIGxwZmNfZGVidWdmc19kdW1wSEJBU2xpbV9kYXRhIC0gRHVtcCBIQkEgU0xJTSBpbmZvIHRvIGEgYnVmZmVyLgorICogQHBoYmE6IFRoZSBIQkEgdG8gZ2F0aGVyIFNMSU0gaW5mbyBmcm9tLgorICogQGJ1ZjogVGhlIGJ1ZmZlciB0byBkdW1wIGxvZyBpbnRvLgorICogQHNpemU6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRvIHByb2Nlc3MuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgZHVtcHMgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgSEJBIFNMSU0gZm9yIHRoZSBIQkEgYXNzb2NpYXRlZAorICogd2l0aCBAcGhiYSB0byBAYnVmIHVwIHRvIEBzaXplIGJ5dGVzIG9mIGRhdGEuIFRoaXMgaXMgdGhlIHJhdyBIQkEgU0xJTSBkYXRhLgorICoKKyAqIE5vdGVzOgorICogVGhpcyByb3V0aW5lIHdpbGwgb25seSBkdW1wIHVwIHRvIDEwMjQgYnl0ZXMgb2YgZGF0YSBlYWNoIHRpbWUgY2FsbGVkIGFuZAorICogc2hvdWxkIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBkdW1wIHRoZSBlbnRpcmUgSEJBIFNMSU0uCisgKgorICogUmV0dXJuIFZhbHVlOgorICogVGhpcyByb3V0aW5lIHJldHVybnMgdGhlIGFtb3VudCBvZiBieXRlcyB0aGF0IHdlcmUgZHVtcGVkIGludG8gQGJ1ZiBhbmQgd2lsbAorICogbm90IGV4Y2VlZCBAc2l6ZS4KKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZGVidWdmc19kdW1wSEJBU2xpbV9kYXRhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgY2hhciAqYnVmLCBpbnQgc2l6ZSkKIHsKQEAgLTM0Miw2ICs0MjUsMjEgQEAKIAlyZXR1cm4gbGVuOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19kdW1wSG9zdFNsaW1fZGF0YSAtIER1bXAgaG9zdCBTTElNIGluZm8gdG8gYSBidWZmZXIuCisgKiBAcGhiYTogVGhlIEhCQSB0byBnYXRoZXIgSG9zdCBTTElNIGluZm8gZnJvbS4KKyAqIEBidWY6IFRoZSBidWZmZXIgdG8gZHVtcCBsb2cgaW50by4KKyAqIEBzaXplOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgZGF0YSB0byBwcm9jZXNzLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogVGhpcyByb3V0aW5lIGR1bXBzIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIGhvc3QgU0xJTSBmb3IgdGhlIGhvc3QgYXNzb2NpYXRlZAorICogd2l0aCBAcGhiYSB0byBAYnVmIHVwIHRvIEBzaXplIGJ5dGVzIG9mIGRhdGEuIFRoZSBkdW1wIHdpbGwgY29udGFpbiB0aGUKKyAqIE1haWxib3gsIFBDQiwgUmluZ3MsIGFuZCBSZWdpc3RlcnMgdGhhdCBhcmUgbG9jYXRlZCBpbiBob3N0IG1lbW9yeS4KKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiBUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZSBkdW1wZWQgaW50byBAYnVmIGFuZCB3aWxsCisgKiBub3QgZXhjZWVkIEBzaXplLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX2R1bXBIb3N0U2xpbV9kYXRhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgY2hhciAqYnVmLCBpbnQgc2l6ZSkKIHsKQEAgLTM1Nyw3ICs0NTUsNyBAQAogCXNwaW5fbG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwogCiAJbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwgIlNMSU0gTWFpbGJveFxuIik7Ci0JcHRyID0gKHVpbnQzMl90ICopcGhiYS0+c2xpbTJwOworCXB0ciA9ICh1aW50MzJfdCAqKXBoYmEtPnNsaW0ycC52aXJ0OwogCWkgPSBzaXplb2YoTUFJTEJPWF90KTsKIAl3aGlsZSAoaSA+IDApIHsKIAkJbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKQEAgLTM3MCw3ICs0NjgsNyBAQAogCX0KIAogCWxlbiArPSAgc25wcmludGYoYnVmK2xlbiwgc2l6ZS1sZW4sICJTTElNIFBDQlxuIik7Ci0JcHRyID0gKHVpbnQzMl90ICopJnBoYmEtPnNsaW0ycC0+cGNiOworCXB0ciA9ICh1aW50MzJfdCAqKXBoYmEtPnBjYjsKIAlpID0gc2l6ZW9mKFBDQl90KTsKIAl3aGlsZSAoaSA+IDApIHsKIAkJbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKQEAgLTM4Miw0NCArNDgwLDE2IEBACiAJCW9mZiArPSAoOCAqIHNpemVvZih1aW50MzJfdCkpOwogCX0KIAotCXBncHAgPSAoc3RydWN0IGxwZmNfcGdwICopJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMzX3BncC5wb3J0OwotCXByaW5nID0gJnBzbGktPnJpbmdbMF07Ci0JbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKLQkJIlJpbmcgMDogQ01EIEdldElueDolZCAoTWF4OiVkIE5leHQ6JWQgTG9jYWw6JWQgZmxnOngleCkgICIKLQkJIlJTUCBQdXRJbng6JWQgTWF4OiVkXG4iLAotCQlwZ3BwLT5jbWRHZXRJbngsIHByaW5nLT5udW1DaW9jYiwKLQkJcHJpbmctPm5leHRfY21kaWR4LCBwcmluZy0+bG9jYWxfZ2V0aWR4LCBwcmluZy0+ZmxhZywKLQkJcGdwcC0+cnNwUHV0SW54LCBwcmluZy0+bnVtUmlvY2IpOwotCXBncHArKzsKLQotCXByaW5nID0gJnBzbGktPnJpbmdbMV07Ci0JbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKLQkJIlJpbmcgMTogQ01EIEdldElueDolZCAoTWF4OiVkIE5leHQ6JWQgTG9jYWw6JWQgZmxnOngleCkgICIKLQkJIlJTUCBQdXRJbng6JWQgTWF4OiVkXG4iLAotCQlwZ3BwLT5jbWRHZXRJbngsIHByaW5nLT5udW1DaW9jYiwKLQkJcHJpbmctPm5leHRfY21kaWR4LCBwcmluZy0+bG9jYWxfZ2V0aWR4LCBwcmluZy0+ZmxhZywKLQkJcGdwcC0+cnNwUHV0SW54LCBwcmluZy0+bnVtUmlvY2IpOwotCXBncHArKzsKLQotCXByaW5nID0gJnBzbGktPnJpbmdbMl07Ci0JbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKLQkJIlJpbmcgMjogQ01EIEdldElueDolZCAoTWF4OiVkIE5leHQ6JWQgTG9jYWw6JWQgZmxnOngleCkgICIKLQkJIlJTUCBQdXRJbng6JWQgTWF4OiVkXG4iLAotCQlwZ3BwLT5jbWRHZXRJbngsIHByaW5nLT5udW1DaW9jYiwKLQkJcHJpbmctPm5leHRfY21kaWR4LCBwcmluZy0+bG9jYWxfZ2V0aWR4LCBwcmluZy0+ZmxhZywKLQkJcGdwcC0+cnNwUHV0SW54LCBwcmluZy0+bnVtUmlvY2IpOwotCXBncHArKzsKLQotCXByaW5nID0gJnBzbGktPnJpbmdbM107Ci0JbGVuICs9ICBzbnByaW50ZihidWYrbGVuLCBzaXplLWxlbiwKLQkJIlJpbmcgMzogQ01EIEdldElueDolZCAoTWF4OiVkIE5leHQ6JWQgTG9jYWw6JWQgZmxnOngleCkgICIKLQkJIlJTUCBQdXRJbng6JWQgTWF4OiVkXG4iLAotCQlwZ3BwLT5jbWRHZXRJbngsIHByaW5nLT5udW1DaW9jYiwKLQkJcHJpbmctPm5leHRfY21kaWR4LCBwcmluZy0+bG9jYWxfZ2V0aWR4LCBwcmluZy0+ZmxhZywKLQkJcGdwcC0+cnNwUHV0SW54LCBwcmluZy0+bnVtUmlvY2IpOwotCi0KLQlwdHIgPSAodWludDMyX3QgKikmcGhiYS0+c2xpbTJwLT5tYngudXMuczNfcGdwLmhicV9nZXQ7CisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlwZ3BwID0gJnBoYmEtPnBvcnRfZ3BbaV07CisJCXByaW5nID0gJnBzbGktPnJpbmdbaV07CisJCWxlbiArPSAgc25wcmludGYoYnVmK2xlbiwgc2l6ZS1sZW4sCisJCQkJICJSaW5nICVkOiBDTUQgR2V0SW54OiVkIChNYXg6JWQgTmV4dDolZCAiCisJCQkJICJMb2NhbDolZCBmbGc6eCV4KSAgUlNQIFB1dElueDolZCBNYXg6JWRcbiIsCisJCQkJIGksIHBncHAtPmNtZEdldElueCwgcHJpbmctPm51bUNpb2NiLAorCQkJCSBwcmluZy0+bmV4dF9jbWRpZHgsIHByaW5nLT5sb2NhbF9nZXRpZHgsCisJCQkJIHByaW5nLT5mbGFnLCBwZ3BwLT5yc3BQdXRJbngsIHByaW5nLT5udW1SaW9jYik7CisJfQogCXdvcmQwID0gcmVhZGwocGhiYS0+SEFyZWdhZGRyKTsKIAl3b3JkMSA9IHJlYWRsKHBoYmEtPkNBcmVnYWRkcik7CiAJd29yZDIgPSByZWFkbChwaGJhLT5IU3JlZ2FkZHIpOwpAQCAtNDMwLDYgKzUwMCwyMSBAQAogCXJldHVybiBsZW47CiB9CiAKKy8qKgorICogbHBmY19kZWJ1Z2ZzX25vZGVsaXN0X2RhdGEgLSBEdW1wIHRhcmdldCBub2RlIGxpc3QgdG8gYSBidWZmZXIuCisgKiBAdnBvcnQ6IFRoZSB2cG9ydCB0byBnYXRoZXIgdGFyZ2V0IG5vZGUgaW5mbyBmcm9tLgorICogQGJ1ZjogVGhlIGJ1ZmZlciB0byBkdW1wIGxvZyBpbnRvLgorICogQHNpemU6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRvIHByb2Nlc3MuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgZHVtcHMgdGhlIGN1cnJlbnQgdGFyZ2V0IG5vZGUgbGlzdCBhc3NvY2lhdGVkIHdpdGggQHZwb3J0IHRvCisgKiBAYnVmIHVwIHRvIEBzaXplIGJ5dGVzIG9mIGRhdGEuIEVhY2ggbm9kZSBlbnRyeSBpbiB0aGUgZHVtcCB3aWxsIGNvbnRhaW4gYQorICogbm9kZSBzdGF0ZSwgRElELCBXV1BOLCBXV05OLCBSUEksIGZsYWdzLCB0eXBlLCBhbmQgb3RoZXIgdXNlZnVsIGZpZWxkcy4KKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiBUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZSBkdW1wZWQgaW50byBAYnVmIGFuZCB3aWxsCisgKiBub3QgZXhjZWVkIEBzaXplLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX25vZGVsaXN0X2RhdGEoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBjaGFyICpidWYsIGludCBzaXplKQogewpAQCAtNTEzLDcgKzU5OCwyMiBAQAogfQogI2VuZGlmCiAKLQorLyoqCisgKiBscGZjX2RlYnVnZnNfZGlzY190cmMgLSBTdG9yZSBkaXNjb3ZlcnkgdHJhY2UgbG9nLgorICogQHZwb3J0OiBUaGUgdnBvcnQgdG8gYXNzb2NpYXRlIHRoaXMgdHJhY2Ugc3RyaW5nIHdpdGggZm9yIHJldHJpZXZhbC4KKyAqIEBtYXNrOiBMb2cgZW50cnkgY2xhc3NpZmljYXRpb24uCisgKiBAZm10OiBGb3JtYXQgc3RyaW5nIHRvIGJlIGRpc3BsYXllZCB3aGVuIGR1bXBpbmcgdGhlIGxvZy4KKyAqIEBkYXRhMTogMXN0IGRhdGEgcGFyYW1ldGVyIHRvIGJlIGFwcGxpZWQgdG8gQGZtdC4KKyAqIEBkYXRhMjogMm5kIGRhdGEgcGFyYW1ldGVyIHRvIGJlIGFwcGxpZWQgdG8gQGZtdC4KKyAqIEBkYXRhMzogM3JkIGRhdGEgcGFyYW1ldGVyIHRvIGJlIGFwcGxpZWQgdG8gQGZtdC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBpcyB1c2VkIGJ5IHRoZSBkcml2ZXIgY29kZSB0byBhZGQgYSBkZWJ1Z2ZzIGxvZyBlbnRyeSB0byB0aGUKKyAqIGRpc2NvdmVyeSB0cmFjZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIEB2cG9ydC4gT25seSBlbnRyaWVzIHdpdGggYSBAbWFzayB0aGF0CisgKiBtYXRjaCB0aGUgY3VycmVudCBkZWJ1Z2ZzIGRpc2NvdmVyeSBtYXNrIHdpbGwgYmUgc2F2ZWQuIEVudHJpZXMgdGhhdCBkbyBub3QKKyAqIG1hdGNoIHdpbGwgYmUgdGhyb3duIGF3YXkuIEBmbXQsIEBkYXRhMSwgQGRhdGEyLCBhbmQgQGRhdGEzIGFyZSB1c2VkIGxpa2UKKyAqIHByaW50ZiB3aGVuIGRpc3BsYXlpbmcgdGhlIGxvZy4KKyAqKi8KIGlubGluZSB2b2lkCiBscGZjX2RlYnVnZnNfZGlzY190cmMoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBpbnQgbWFzaywgY2hhciAqZm10LAogCXVpbnQzMl90IGRhdGExLCB1aW50MzJfdCBkYXRhMiwgdWludDMyX3QgZGF0YTMpCkBAIC01NDIsNiArNjQyLDE5IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19zbG93X3JpbmdfdHJjIC0gU3RvcmUgc2xvdyByaW5nIHRyYWNlIGxvZy4KKyAqIEBwaGJhOiBUaGUgcGhiYSB0byBhc3NvY2lhdGUgdGhpcyB0cmFjZSBzdHJpbmcgd2l0aCBmb3IgcmV0cmlldmFsLgorICogQGZtdDogRm9ybWF0IHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgd2hlbiBkdW1waW5nIHRoZSBsb2cuCisgKiBAZGF0YTE6IDFzdCBkYXRhIHBhcmFtZXRlciB0byBiZSBhcHBsaWVkIHRvIEBmbXQuCisgKiBAZGF0YTI6IDJuZCBkYXRhIHBhcmFtZXRlciB0byBiZSBhcHBsaWVkIHRvIEBmbXQuCisgKiBAZGF0YTM6IDNyZCBkYXRhIHBhcmFtZXRlciB0byBiZSBhcHBsaWVkIHRvIEBmbXQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCBieSB0aGUgZHJpdmVyIGNvZGUgdG8gYWRkIGEgZGVidWdmcyBsb2cgZW50cnkgdG8gdGhlCisgKiBkaXNjb3ZlcnkgdHJhY2UgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBAdnBvcnQuIEBmbXQsIEBkYXRhMSwgQGRhdGEyLCBhbmQKKyAqIEBkYXRhMyBhcmUgdXNlZCBsaWtlIHByaW50ZiB3aGVuIGRpc3BsYXlpbmcgdGhlIGxvZy4KKyAqKi8KIGlubGluZSB2b2lkCiBscGZjX2RlYnVnZnNfc2xvd19yaW5nX3RyYyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIGNoYXIgKmZtdCwKIAl1aW50MzJfdCBkYXRhMSwgdWludDMyX3QgZGF0YTIsIHVpbnQzMl90IGRhdGEzKQpAQCAtNTY4LDYgKzY4MSwyMSBAQAogfQogCiAjaWZkZWYgQ09ORklHX0xQRkNfREVCVUdfRlMKKy8qKgorICogbHBmY19kZWJ1Z2ZzX2Rpc2NfdHJjX29wZW4gLSBPcGVuIHRoZSBkaXNjb3ZlcnkgdHJhY2UgbG9nLgorICogQGlub2RlOiBUaGUgaW5vZGUgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGEgdnBvcnQgcG9pbnRlci4KKyAqIEBmaWxlOiBUaGUgZmlsZSBwb2ludGVyIHRvIGF0dGFjaCB0aGUgbG9nIG91dHB1dC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkZWJ1Z2ZzIG9wZW4gZmlsZSBvcGVyYXRpb24uIEl0IGdldHMKKyAqIHRoZSB2cG9ydCBmcm9tIHRoZSBpX3ByaXZhdGUgZmllbGQgaW4gQGlub2RlLCBhbGxvY2F0ZXMgdGhlIG5lY2Vzc2FyeSBidWZmZXIKKyAqIGZvciB0aGUgbG9nLCBmaWxscyB0aGUgYnVmZmVyIGZyb20gdGhlIGluLW1lbW9yeSBsb2cgZm9yIHRoaXMgdnBvcnQsIGFuZCB0aGVuCisgKiByZXR1cm5zIGEgcG9pbnRlciB0byB0aGF0IGxvZyBpbiB0aGUgcHJpdmF0ZV9kYXRhIGZpZWxkIGluIEBmaWxlLgorICoKKyAqIFJldHVybnM6CisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLiBPbiBlcnJvciBpdCB3aWxsIHJldHVybiBhbiBuZWdhdGl2ZQorICogZXJyb3IgdmFsdWUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2RlYnVnZnNfZGlzY190cmNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKQEAgLTU4NSw3ICs3MTMsNyBAQAogCWlmICghZGVidWcpCiAJCWdvdG8gb3V0OwogCi0JLyogUm91bmQgdG8gcGFnZSBib3VuZHJ5ICovCisJLyogUm91bmQgdG8gcGFnZSBib3VuZGFyeSAqLwogCXNpemUgPSAgKGxwZmNfZGVidWdmc19tYXhfZGlzY190cmMgKiBMUEZDX0RFQlVHX1RSQ19FTlRSWV9TSVpFKTsKIAlzaXplID0gUEFHRV9BTElHTihzaXplKTsKIApAQCAtNjAzLDYgKzczMSwyMSBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKiBscGZjX2RlYnVnZnNfc2xvd19yaW5nX3RyY19vcGVuIC0gT3BlbiB0aGUgU2xvdyBSaW5nIHRyYWNlIGxvZy4KKyAqIEBpbm9kZTogVGhlIGlub2RlIHBvaW50ZXIgdGhhdCBjb250YWlucyBhIHZwb3J0IHBvaW50ZXIuCisgKiBAZmlsZTogVGhlIGZpbGUgcG9pbnRlciB0byBhdHRhY2ggdGhlIGxvZyBvdXRwdXQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZGVidWdmcyBvcGVuIGZpbGUgb3BlcmF0aW9uLiBJdCBnZXRzCisgKiB0aGUgdnBvcnQgZnJvbSB0aGUgaV9wcml2YXRlIGZpZWxkIGluIEBpbm9kZSwgYWxsb2NhdGVzIHRoZSBuZWNlc3NhcnkgYnVmZmVyCisgKiBmb3IgdGhlIGxvZywgZmlsbHMgdGhlIGJ1ZmZlciBmcm9tIHRoZSBpbi1tZW1vcnkgbG9nIGZvciB0aGlzIHZwb3J0LCBhbmQgdGhlbgorICogcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhhdCBsb2cgaW4gdGhlIHByaXZhdGVfZGF0YSBmaWVsZCBpbiBAZmlsZS4KKyAqCisgKiBSZXR1cm5zOgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bC4gT24gZXJyb3IgaXQgd2lsbCByZXR1cm4gYW4gbmVnYXRpdmUKKyAqIGVycm9yIHZhbHVlLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX3Nsb3dfcmluZ190cmNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKQEAgLTYyMCw3ICs3NjMsNyBAQAogCWlmICghZGVidWcpCiAJCWdvdG8gb3V0OwogCi0JLyogUm91bmQgdG8gcGFnZSBib3VuZHJ5ICovCisJLyogUm91bmQgdG8gcGFnZSBib3VuZGFyeSAqLwogCXNpemUgPSAgKGxwZmNfZGVidWdmc19tYXhfc2xvd19yaW5nX3RyYyAqIExQRkNfREVCVUdfVFJDX0VOVFJZX1NJWkUpOwogCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOwogCkBAIC02MzgsNiArNzgxLDIxIEBACiAJcmV0dXJuIHJjOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19oYnFpbmZvX29wZW4gLSBPcGVuIHRoZSBoYnFpbmZvIGRlYnVnZnMgYnVmZmVyLgorICogQGlub2RlOiBUaGUgaW5vZGUgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGEgdnBvcnQgcG9pbnRlci4KKyAqIEBmaWxlOiBUaGUgZmlsZSBwb2ludGVyIHRvIGF0dGFjaCB0aGUgbG9nIG91dHB1dC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkZWJ1Z2ZzIG9wZW4gZmlsZSBvcGVyYXRpb24uIEl0IGdldHMKKyAqIHRoZSB2cG9ydCBmcm9tIHRoZSBpX3ByaXZhdGUgZmllbGQgaW4gQGlub2RlLCBhbGxvY2F0ZXMgdGhlIG5lY2Vzc2FyeSBidWZmZXIKKyAqIGZvciB0aGUgbG9nLCBmaWxscyB0aGUgYnVmZmVyIGZyb20gdGhlIGluLW1lbW9yeSBsb2cgZm9yIHRoaXMgdnBvcnQsIGFuZCB0aGVuCisgKiByZXR1cm5zIGEgcG9pbnRlciB0byB0aGF0IGxvZyBpbiB0aGUgcHJpdmF0ZV9kYXRhIGZpZWxkIGluIEBmaWxlLgorICoKKyAqIFJldHVybnM6CisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLiBPbiBlcnJvciBpdCB3aWxsIHJldHVybiBhbiBuZWdhdGl2ZQorICogZXJyb3IgdmFsdWUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2RlYnVnZnNfaGJxaW5mb19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewpAQCAtNjQ5LDcgKzgwNyw3IEBACiAJaWYgKCFkZWJ1ZykKIAkJZ290byBvdXQ7CiAKLQkvKiBSb3VuZCB0byBwYWdlIGJvdW5kcnkgKi8KKwkvKiBSb3VuZCB0byBwYWdlIGJvdW5kYXJ5ICovCiAJZGVidWctPmJ1ZmZlciA9IGttYWxsb2MoTFBGQ19IQlFJTkZPX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICghZGVidWctPmJ1ZmZlcikgewogCQlrZnJlZShkZWJ1Zyk7CkBAIC02NjUsNiArODIzLDIxIEBACiAJcmV0dXJuIHJjOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19kdW1wSEJBU2xpbV9vcGVuIC0gT3BlbiB0aGUgRHVtcCBIQkEgU0xJTSBkZWJ1Z2ZzIGJ1ZmZlci4KKyAqIEBpbm9kZTogVGhlIGlub2RlIHBvaW50ZXIgdGhhdCBjb250YWlucyBhIHZwb3J0IHBvaW50ZXIuCisgKiBAZmlsZTogVGhlIGZpbGUgcG9pbnRlciB0byBhdHRhY2ggdGhlIGxvZyBvdXRwdXQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZGVidWdmcyBvcGVuIGZpbGUgb3BlcmF0aW9uLiBJdCBnZXRzCisgKiB0aGUgdnBvcnQgZnJvbSB0aGUgaV9wcml2YXRlIGZpZWxkIGluIEBpbm9kZSwgYWxsb2NhdGVzIHRoZSBuZWNlc3NhcnkgYnVmZmVyCisgKiBmb3IgdGhlIGxvZywgZmlsbHMgdGhlIGJ1ZmZlciBmcm9tIHRoZSBpbi1tZW1vcnkgbG9nIGZvciB0aGlzIHZwb3J0LCBhbmQgdGhlbgorICogcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhhdCBsb2cgaW4gdGhlIHByaXZhdGVfZGF0YSBmaWVsZCBpbiBAZmlsZS4KKyAqCisgKiBSZXR1cm5zOgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bC4gT24gZXJyb3IgaXQgd2lsbCByZXR1cm4gYW4gbmVnYXRpdmUKKyAqIGVycm9yIHZhbHVlLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX2R1bXBIQkFTbGltX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CkBAIC02NzYsNyArODQ5LDcgQEAKIAlpZiAoIWRlYnVnKQogCQlnb3RvIG91dDsKIAotCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRyeSAqLworCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRhcnkgKi8KIAlkZWJ1Zy0+YnVmZmVyID0ga21hbGxvYyhMUEZDX0RVTVBIQkFTTElNX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICghZGVidWctPmJ1ZmZlcikgewogCQlrZnJlZShkZWJ1Zyk7CkBAIC02OTIsNiArODY1LDIxIEBACiAJcmV0dXJuIHJjOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19kdW1wSG9zdFNsaW1fb3BlbiAtIE9wZW4gdGhlIER1bXAgSG9zdCBTTElNIGRlYnVnZnMgYnVmZmVyLgorICogQGlub2RlOiBUaGUgaW5vZGUgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGEgdnBvcnQgcG9pbnRlci4KKyAqIEBmaWxlOiBUaGUgZmlsZSBwb2ludGVyIHRvIGF0dGFjaCB0aGUgbG9nIG91dHB1dC4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBkZWJ1Z2ZzIG9wZW4gZmlsZSBvcGVyYXRpb24uIEl0IGdldHMKKyAqIHRoZSB2cG9ydCBmcm9tIHRoZSBpX3ByaXZhdGUgZmllbGQgaW4gQGlub2RlLCBhbGxvY2F0ZXMgdGhlIG5lY2Vzc2FyeSBidWZmZXIKKyAqIGZvciB0aGUgbG9nLCBmaWxscyB0aGUgYnVmZmVyIGZyb20gdGhlIGluLW1lbW9yeSBsb2cgZm9yIHRoaXMgdnBvcnQsIGFuZCB0aGVuCisgKiByZXR1cm5zIGEgcG9pbnRlciB0byB0aGF0IGxvZyBpbiB0aGUgcHJpdmF0ZV9kYXRhIGZpZWxkIGluIEBmaWxlLgorICoKKyAqIFJldHVybnM6CisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLiBPbiBlcnJvciBpdCB3aWxsIHJldHVybiBhbiBuZWdhdGl2ZQorICogZXJyb3IgdmFsdWUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2RlYnVnZnNfZHVtcEhvc3RTbGltX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CkBAIC03MDMsNyArODkxLDcgQEAKIAlpZiAoIWRlYnVnKQogCQlnb3RvIG91dDsKIAotCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRyeSAqLworCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRhcnkgKi8KIAlkZWJ1Zy0+YnVmZmVyID0ga21hbGxvYyhMUEZDX0RVTVBIT1NUU0xJTV9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRlYnVnLT5idWZmZXIpIHsKIAkJa2ZyZWUoZGVidWcpOwpAQCAtNzE5LDYgKzkwNywyMSBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKiBscGZjX2RlYnVnZnNfbm9kZWxpc3Rfb3BlbiAtIE9wZW4gdGhlIG5vZGVsaXN0IGRlYnVnZnMgZmlsZS4KKyAqIEBpbm9kZTogVGhlIGlub2RlIHBvaW50ZXIgdGhhdCBjb250YWlucyBhIHZwb3J0IHBvaW50ZXIuCisgKiBAZmlsZTogVGhlIGZpbGUgcG9pbnRlciB0byBhdHRhY2ggdGhlIGxvZyBvdXRwdXQuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZGVidWdmcyBvcGVuIGZpbGUgb3BlcmF0aW9uLiBJdCBnZXRzCisgKiB0aGUgdnBvcnQgZnJvbSB0aGUgaV9wcml2YXRlIGZpZWxkIGluIEBpbm9kZSwgYWxsb2NhdGVzIHRoZSBuZWNlc3NhcnkgYnVmZmVyCisgKiBmb3IgdGhlIGxvZywgZmlsbHMgdGhlIGJ1ZmZlciBmcm9tIHRoZSBpbi1tZW1vcnkgbG9nIGZvciB0aGlzIHZwb3J0LCBhbmQgdGhlbgorICogcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhhdCBsb2cgaW4gdGhlIHByaXZhdGVfZGF0YSBmaWVsZCBpbiBAZmlsZS4KKyAqCisgKiBSZXR1cm5zOgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bC4gT24gZXJyb3IgaXQgd2lsbCByZXR1cm4gYW4gbmVnYXRpdmUKKyAqIGVycm9yIHZhbHVlLgorICoqLwogc3RhdGljIGludAogbHBmY19kZWJ1Z2ZzX25vZGVsaXN0X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CkBAIC03MzAsNyArOTMzLDcgQEAKIAlpZiAoIWRlYnVnKQogCQlnb3RvIG91dDsKIAotCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRyeSAqLworCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRhcnkgKi8KIAlkZWJ1Zy0+YnVmZmVyID0ga21hbGxvYyhMUEZDX05PREVMSVNUX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICghZGVidWctPmJ1ZmZlcikgewogCQlrZnJlZShkZWJ1Zyk7CkBAIC03NDYsNiArOTQ5LDIzIEBACiAJcmV0dXJuIHJjOwogfQogCisvKioKKyAqIGxwZmNfZGVidWdmc19sc2VlayAtIFNlZWsgdGhyb3VnaCBhIGRlYnVnZnMgZmlsZS4KKyAqIEBmaWxlOiBUaGUgZmlsZSBwb2ludGVyIHRvIHNlZWsgdGhyb3VnaC4KKyAqIEBvZmY6IFRoZSBvZmZzZXQgdG8gc2VlayB0byBvciB0aGUgYW1vdW50IHRvIHNlZWsgYnkuCisgKiBAd2hlbmNlOiBJbmRpY2F0ZXMgaG93IHRvIHNlZWsuCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgZGVidWdmcyBsc2VlayBmaWxlIG9wZXJhdGlvbi4gVGhlCisgKiBAd2hlbmNlIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hldGhlciBAb2ZmIGlzIHRoZSBvZmZzZXQgdG8gZGlyZWN0bHkgc2VlayB0bywKKyAqIG9yIGlmIGl0IGlzIGEgdmFsdWUgdG8gc2VlayBmb3J3YXJkIG9yIHJldmVyc2UgYnkuIFRoaXMgZnVuY3Rpb24gZmlndXJlcyBvdXQKKyAqIHdoYXQgdGhlIG5ldyBvZmZzZXQgb2YgdGhlIGRlYnVnZnMgZmlsZSB3aWxsIGJlIGFuZCBhc3NpZ25zIHRoYXQgdmFsdWUgdG8gdGhlCisgKiBmX3BvcyBmaWVsZCBvZiBAZmlsZS4KKyAqCisgKiBSZXR1cm5zOgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBuZXcgb2Zmc2V0IGlmIHN1Y2Nlc3NmdWwgYW5kIHJldHVybnMgYSBuZWdhdGl2ZQorICogZXJyb3IgaWYgdW5hYmxlIHRvIHByb2Nlc3MgdGhlIHNlZWsuCisgKiovCiBzdGF0aWMgbG9mZl90CiBscGZjX2RlYnVnZnNfbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmYsIGludCB3aGVuY2UpCiB7CkBAIC03NjcsNiArOTg3LDIyIEBACiAJcmV0dXJuIChwb3MgPCAwIHx8IHBvcyA+IGRlYnVnLT5sZW4pID8gLUVJTlZBTCA6IChmaWxlLT5mX3BvcyA9IHBvcyk7CiB9CiAKKy8qKgorICogbHBmY19kZWJ1Z2ZzX3JlYWQgLSBSZWFkIGEgZGVidWdmcyBmaWxlLgorICogQGZpbGU6IFRoZSBmaWxlIHBvaW50ZXIgdG8gcmVhZCBmcm9tLgorICogQGJ1ZjogVGhlIGJ1ZmZlciB0byBjb3B5IHRoZSBkYXRhIHRvLgorICogQG5ieXRlczogVGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkLgorICogQHBwb3M6IFRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZSB0byBzdGFydCByZWFkaW5nIGZyb20uCisgKgorICogRGVzY3JpcHRpb246CisgKiBUaGlzIHJvdXRpbmUgcmVhZHMgZGF0YSBmcm9tIGZyb20gdGhlIGJ1ZmZlciBpbmRpY2F0ZWQgaW4gdGhlIHByaXZhdGVfZGF0YQorICogZmllbGQgb2YgQGZpbGUuIEl0IHdpbGwgc3RhcnQgcmVhZGluZyBhdCBAcHBvcyBhbmQgY29weSB1cCB0byBAbmJ5dGVzIG9mCisgKiBkYXRhIHRvIEBidWYuCisgKgorICogUmV0dXJuczoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYW1vdW50IG9mIGRhdGEgdGhhdCB3YXMgcmVhZCAodGhpcyBjb3VsZCBiZSBsZXNzCisgKiB0aGFuIEBuYnl0ZXMgaWYgdGhlIGVuZCBvZiB0aGUgZmlsZSB3YXMgcmVhY2hlZCkgb3IgYSBuZWdhdGl2ZSBlcnJvciB2YWx1ZS4KKyAqKi8KIHN0YXRpYyBzc2l6ZV90CiBscGZjX2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZiwKIAkJICBzaXplX3QgbmJ5dGVzLCBsb2ZmX3QgKnBwb3MpCkBAIC03NzYsNiArMTAxMiwxOCBAQAogCQkJCSAgICAgICBkZWJ1Zy0+bGVuKTsKIH0KIAorLyoqCisgKiBscGZjX2RlYnVnZnNfcmVsZWFzZSAtIFJlbGVhc2UgdGhlIGJ1ZmZlciB1c2VkIHRvIHN0b3JlIGRlYnVnZnMgZmlsZSBkYXRhLgorICogQGlub2RlOiBUaGUgaW5vZGUgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGEgdnBvcnQgcG9pbnRlci4gKHVudXNlZCkKKyAqIEBmaWxlOiBUaGUgZmlsZSBwb2ludGVyIHRoYXQgY29udGFpbnMgdGhlIGJ1ZmZlciB0byByZWxlYXNlLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogVGhpcyByb3V0aW5lIGZyZWVzIHRoZSBidWZmZXIgdGhhdCB3YXMgYWxsb2NhdGVkIHdoZW4gdGhlIGRlYnVnZnMgZmlsZSB3YXMKKyAqIG9wZW5lZC4KKyAqCisgKiBSZXR1cm5zOgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHplcm8uCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2RlYnVnZnNfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKQEAgLTg0NSw2ICsxMDkzLDE2IEBACiBzdGF0aWMgYXRvbWljX3QgbHBmY19kZWJ1Z2ZzX2hiYV9jb3VudDsKICNlbmRpZgogCisvKioKKyAqIGxwZmNfZGVidWdmc19pbml0aWFsaXplIC0gSW5pdGlhbGl6ZSBkZWJ1Z2ZzIGZvciBhIHZwb3J0LgorICogQHZwb3J0OiBUaGUgdnBvcnQgcG9pbnRlciB0byBpbml0aWFsaXplLgorICoKKyAqIERlc2NyaXB0aW9uOgorICogV2hlbiBEZWJ1Z2ZzIGlzIGNvbmZpZ3VyZWQgdGhpcyByb3V0aW5lIHNldHMgdXAgdGhlIGxwZmMgZGVidWdmcyBmaWxlIHN5c3RlbS4KKyAqIElmIG5vdCBhbHJlYWR5IGNyZWF0ZWQsIHRoaXMgcm91dGluZSB3aWxsIGNyZWF0ZSB0aGUgbHBmYyBkaXJlY3RvcnksIGFuZAorICogbHBmY1ggZGlyZWN0b3J5IChmb3IgdGhpcyBIQkEpLCBhbmQgdnBvcnRYIGRpcmVjdG9yeSBmb3IgdGhpcyB2cG9ydC4gSXQgd2lsbAorICogYWxzbyBjcmVhdGUgZWFjaCBmaWxlIHVzZWQgdG8gYWNjZXNzIGxwZmMgc3BlY2lmaWMgZGVidWdmcyBpbmZvcm1hdGlvbi4KKyAqKi8KIGlubGluZSB2b2lkCiBscGZjX2RlYnVnZnNfaW5pdGlhbGl6ZShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC04NjIsNyArMTEyMCw3IEBACiAJCWF0b21pY19zZXQoJmxwZmNfZGVidWdmc19oYmFfY291bnQsIDApOwogCQlpZiAoIWxwZmNfZGVidWdmc19yb290KSB7CiAJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0lOSVQsCi0JCQkJCSAiMDQwOSBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgcm9vdFxuIik7CisJCQkJCSAiMDQwOCBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgcm9vdFxuIik7CiAJCQlnb3RvIGRlYnVnX2ZhaWxlZDsKIAkJfQogCX0KQEAgLTg3Niw3ICsxMTM0LDcgQEAKIAkJCWRlYnVnZnNfY3JlYXRlX2RpcihuYW1lLCBscGZjX2RlYnVnZnNfcm9vdCk7CiAJCWlmICghcGhiYS0+aGJhX2RlYnVnZnNfcm9vdCkgewogCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCQkgIjA0MDkgQ2Fubm90IGNyZWF0ZSBkZWJ1Z2ZzIGhiYVxuIik7CisJCQkJCSAiMDQxMiBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgaGJhXG4iKTsKIAkJCWdvdG8gZGVidWdfZmFpbGVkOwogCQl9CiAJCWF0b21pY19pbmMoJmxwZmNfZGVidWdmc19oYmFfY291bnQpOwpAQCAtODkwLDcgKzExNDgsNyBAQAogCQkJCSBwaGJhLCAmbHBmY19kZWJ1Z2ZzX29wX2hicWluZm8pOwogCQlpZiAoIXBoYmEtPmRlYnVnX2hicWluZm8pIHsKIAkJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwKLQkJCQkiMDQwOSBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgaGJxaW5mb1xuIik7CisJCQkJIjA0MTEgQ2Fubm90IGNyZWF0ZSBkZWJ1Z2ZzIGhicWluZm9cbiIpOwogCQkJZ290byBkZWJ1Z19mYWlsZWQ7CiAJCX0KIApAQCAtOTAyLDcgKzExNjAsNyBAQAogCQkJCSBwaGJhLCAmbHBmY19kZWJ1Z2ZzX29wX2R1bXBIQkFTbGltKTsKIAkJaWYgKCFwaGJhLT5kZWJ1Z19kdW1wSEJBU2xpbSkgewogCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCSIwNDA5IENhbm5vdCBjcmVhdGUgZGVidWdmcyBkdW1wSEJBU2xpbVxuIik7CisJCQkJIjA0MTMgQ2Fubm90IGNyZWF0ZSBkZWJ1Z2ZzIGR1bXBIQkFTbGltXG4iKTsKIAkJCWdvdG8gZGVidWdfZmFpbGVkOwogCQl9CiAKQEAgLTkxNCw3ICsxMTcyLDcgQEAKIAkJCQkgcGhiYSwgJmxwZmNfZGVidWdmc19vcF9kdW1wSG9zdFNsaW0pOwogCQlpZiAoIXBoYmEtPmRlYnVnX2R1bXBIb3N0U2xpbSkgewogCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCSIwNDA5IENhbm5vdCBjcmVhdGUgZGVidWdmcyBkdW1wSG9zdFNsaW1cbiIpOworCQkJCSIwNDE0IENhbm5vdCBjcmVhdGUgZGVidWdmcyBkdW1wSG9zdFNsaW1cbiIpOwogCQkJZ290byBkZWJ1Z19mYWlsZWQ7CiAJCX0KIApAQCAtOTQ0LDcgKzEyMDIsNyBAQAogCQkJCSBwaGJhLCAmbHBmY19kZWJ1Z2ZzX29wX3Nsb3dfcmluZ190cmMpOwogCQlpZiAoIXBoYmEtPmRlYnVnX3Nsb3dfcmluZ190cmMpIHsKIAkJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwKLQkJCQkJICIwNDA5IENhbm5vdCBjcmVhdGUgZGVidWdmcyAiCisJCQkJCSAiMDQxNSBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgIgogCQkJCQkgInNsb3dfcmluZ190cmFjZVxuIik7CiAJCQlnb3RvIGRlYnVnX2ZhaWxlZDsKIAkJfQpAQCAtOTU1LDcgKzEyMTMsNyBAQAogCQkJCUdGUF9LRVJORUwpOwogCQkJaWYgKCFwaGJhLT5zbG93X3JpbmdfdHJjKSB7CiAJCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCQkJICIwNDA5IENhbm5vdCBjcmVhdGUgZGVidWdmcyAiCisJCQkJCQkgIjA0MTYgQ2Fubm90IGNyZWF0ZSBkZWJ1Z2ZzICIKIAkJCQkJCSAic2xvd19yaW5nIGJ1ZmZlclxuIik7CiAJCQkJZ290byBkZWJ1Z19mYWlsZWQ7CiAJCQl9CkBAIC05NzIsNyArMTIzMCw3IEBACiAJCQlkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmFtZSwgcGhiYS0+aGJhX2RlYnVnZnNfcm9vdCk7CiAJCWlmICghdnBvcnQtPnZwb3J0X2RlYnVnZnNfcm9vdCkgewogCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCQkgIjA0MDkgQ2FudCBjcmVhdGUgZGVidWdmcyIpOworCQkJCQkgIjA0MTcgQ2FudCBjcmVhdGUgZGVidWdmcyIpOwogCQkJZ290byBkZWJ1Z19mYWlsZWQ7CiAJCX0KIAkJYXRvbWljX2luYygmcGhiYS0+ZGVidWdmc192cG9ydF9jb3VudCk7CkBAIC0xMDAxLDcgKzEyNTksNyBAQAogCiAJaWYgKCF2cG9ydC0+ZGlzY190cmMpIHsKIAkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCSAiMDQwOSBDYW5ub3QgY3JlYXRlIGRlYnVnZnMgZGlzYyB0cmFjZSAiCisJCQkJICIwNDE4IENhbm5vdCBjcmVhdGUgZGVidWdmcyBkaXNjIHRyYWNlICIKIAkJCQkgImJ1ZmZlclxuIik7CiAJCWdvdG8gZGVidWdfZmFpbGVkOwogCX0KQEAgLTEwMTQsNyArMTI3Miw3IEBACiAJCQkJIHZwb3J0LCAmbHBmY19kZWJ1Z2ZzX29wX2Rpc2NfdHJjKTsKIAlpZiAoIXZwb3J0LT5kZWJ1Z19kaXNjX3RyYykgewogCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0lOSVQsCi0JCQkJICIwNDA5IENhbm5vdCBjcmVhdGUgZGVidWdmcyAiCisJCQkJICIwNDE5IENhbm5vdCBjcmVhdGUgZGVidWdmcyAiCiAJCQkJICJkaXNjb3ZlcnlfdHJhY2VcbiIpOwogCQlnb3RvIGRlYnVnX2ZhaWxlZDsKIAl9CkBAIC0xMDMzLDcgKzEyOTEsMTcgQEAKICNlbmRpZgogfQogCi0KKy8qKgorICogbHBmY19kZWJ1Z2ZzX3Rlcm1pbmF0ZSAtICBUZWFyIGRvd24gZGVidWdmcyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhpcyB2cG9ydC4KKyAqIEB2cG9ydDogVGhlIHZwb3J0IHBvaW50ZXIgdG8gcmVtb3ZlIGZyb20gZGVidWdmcy4KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIFdoZW4gRGVidWdmcyBpcyBjb25maWd1cmVkIHRoaXMgcm91dGluZSByZW1vdmVzIGRlYnVnZnMgZmlsZSBzeXN0ZW0gZWxlbWVudHMKKyAqIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoaXMgdnBvcnQuIEl0IGFsc28gY2hlY2tzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55CisgKiB1c2VycyBsZWZ0IGZvciB0aGUgZGVidWdmcyBkaXJlY3RvcmllcyBhc3NvY2lhdGVkIHdpdGggdGhlIEhCQSBhbmQgZHJpdmVyLiBJZgorICogdGhpcyBpcyB0aGUgbGFzdCB1c2VyIG9mIHRoZSBIQkEgZGlyZWN0b3J5IG9yIGRyaXZlciBkaXJlY3RvcnkgdGhlbiBpdCB3aWxsCisgKiByZW1vdmUgdGhvc2UgZnJvbSB0aGUgZGVidWdmcyBpbmZyYXN0cnVjdHVyZSBhcyB3ZWxsLgorICoqLwogaW5saW5lIHZvaWQKIGxwZmNfZGVidWdmc190ZXJtaW5hdGUoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMTA5Niw1ICsxMzY0LDMgQEAKICNlbmRpZgogCXJldHVybjsKIH0KLQotCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Rpc2MuaCBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZGlzYy5oCmluZGV4IDJkYjBiNzQuLmYyOWU1NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZGlzYy5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZGlzYy5oCkBAIC0zNyw2ICszNyw3IEBACiAJTFBGQ19FVlRfS0lMTCwKIAlMUEZDX0VWVF9FTFNfUkVUUlksCiAJTFBGQ19FVlRfREVWX0xPU1MsCisJTFBGQ19FVlRfRkFTVFBBVEhfTUdNVF9FVlQsCiB9OwogCiAvKiBzdHJ1Y3R1cmUgdXNlZCB0byBxdWV1ZSBldmVudCB0byB0aGUgZGlzY292ZXJ5IHRhc2tsZXQgKi8KQEAgLTQ3LDYgKzQ4LDI0IEBACiAJZW51bSBscGZjX3dvcmtfdHlwZSAgIGV2dDsKIH07CiAKK3N0cnVjdCBscGZjX3Njc2lfY2hlY2tfY29uZGl0aW9uX2V2ZW50Oworc3RydWN0IGxwZmNfc2NzaV92YXJxdWV1ZWRlcHRoX2V2ZW50Oworc3RydWN0IGxwZmNfc2NzaV9ldmVudF9oZWFkZXI7CitzdHJ1Y3QgbHBmY19mYWJyaWNfZXZlbnRfaGVhZGVyOworc3RydWN0IGxwZmNfZmNwcmRjaGtlcnJfZXZlbnQ7CisKKy8qIHN0cnVjdHVyZSB1c2VkIGZvciBzZW5kaW5nIGV2ZW50cyBmcm9tIGZhc3QgcGF0aCAqLworc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50IHsKKwlzdHJ1Y3QgbHBmY193b3JrX2V2dCB3b3JrX2V2dDsKKwlzdHJ1Y3QgbHBmY192cG9ydCAgICAgKnZwb3J0OworCXVuaW9uIHsKKwkJc3RydWN0IGxwZmNfc2NzaV9jaGVja19jb25kaXRpb25fZXZlbnQgY2hlY2tfY29uZF9ldnQ7CisJCXN0cnVjdCBscGZjX3Njc2lfdmFycXVldWVkZXB0aF9ldmVudCBxdWV1ZV9kZXB0aF9ldnQ7CisJCXN0cnVjdCBscGZjX3Njc2lfZXZlbnRfaGVhZGVyIHNjc2lfZXZ0OworCQlzdHJ1Y3QgbHBmY19mYWJyaWNfZXZlbnRfaGVhZGVyIGZhYnJpY19ldnQ7CisJCXN0cnVjdCBscGZjX2ZjcHJkY2hrZXJyX2V2ZW50IHJlYWRfY2hlY2tfZXJyb3I7CisJfSB1bjsKK307CiAKIHN0cnVjdCBscGZjX25vZGVsaXN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5scF9saXN0cDsKQEAgLTg4LDYgKzEwNywxMCBAQAogCXVuc2lnbmVkIGxvbmcgbGFzdF9yYW1wX3VwX3RpbWU7ICAgICAgICAvKiBqaWZmeSBvZiBsYXN0IHJhbXAgdXAgKi8KIAl1bnNpZ25lZCBsb25nIGxhc3RfcV9mdWxsX3RpbWU7CQkvKiBqaWZmeSBvZiBsYXN0IHF1ZXVlIGZ1bGwgKi8KIAlzdHJ1Y3Qga3JlZiAgICAga3JlZjsKKwlhdG9taWNfdCBjbWRfcGVuZGluZzsKKwl1aW50MzJfdCBjbWRfcWRlcHRoOworCXVuc2lnbmVkIGxvbmcgbGFzdF9jaGFuZ2VfdGltZTsKKwlzdHJ1Y3QgbHBmY19zY3NpY21kX2JrdCAqbGF0X2RhdGE7CS8qIExhdGVuY3kgZGF0YSAqLwogfTsKIAogLyogRGVmaW5lcyBmb3IgbmxwX2ZsYWcgKHVpbnQzMikgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZWxzLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Vscy5jCmluZGV4IGY1NGUwZjcuLjYzMGJkMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZWxzLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19lbHMuYwpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAibHBmY19ody5oIgogI2luY2x1ZGUgImxwZmNfc2xpLmgiCisjaW5jbHVkZSAibHBmY19ubC5oIgogI2luY2x1ZGUgImxwZmNfZGlzYy5oIgogI2luY2x1ZGUgImxwZmNfc2NzaS5oIgogI2luY2x1ZGUgImxwZmMuaCIKQEAgLTUzLDYgKzU0LDI4IEBACiAKIHN0YXRpYyBpbnQgbHBmY19tYXhfZWxzX3RyaWVzID0gMzsKIAorLyoqCisgKiBscGZjX2Vsc19jaGtfbGF0dDogQ2hlY2sgaG9zdCBsaW5rIGF0dGVudGlvbiBldmVudCBmb3IgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGNoZWNrcyB3aGV0aGVyIHRoZXJlIGlzIGFuIG91dHN0YW5kaW5nIGhvc3QgbGluaworICogYXR0ZW50aW9uIGV2ZW50IGR1cmluZyB0aGUgZGlzY292ZXJ5IHByb2Nlc3Mgd2l0aCB0aGUgQHZwb3J0LiBJdCBpcyBkb25lCisgKiBieSByZWFkaW5nIHRoZSBIQkEncyBIb3N0IEF0dGVudGlvbiAoSEEpIHJlZ2lzdGVyLiBJZiB0aGVyZSBpcyBhbnkgaG9zdAorICogbGluayBhdHRlbnRpb24gZXZlbnRzIGR1cmluZyB0aGlzIEB2cG9ydCdzIGRpc2NvdmVyeSBwcm9jZXNzLCB0aGUgQHZwb3J0CisgKiBzaGFsbCBiZSBtYXJrZWQgYXMgRkNfQUJPUlRfRElTQ09WRVJZLCBhIGhvc3QgbGluayBhdHRlbnRpb24gY2xlYXIgc2hhbGwKKyAqIGJlIGlzc3VlZCBpZiB0aGUgbGluayBzdGF0ZSBpcyBub3QgYWxyZWFkeSBpbiBob3N0IGxpbmsgY2xlYXJlZCBzdGF0ZSwKKyAqIGFuZCBhIHJldHVybiBjb2RlIHNoYWxsIGluZGljYXRlIHdoZXRoZXIgdGhlIGhvc3QgbGluayBhdHRlbnRpb24gZXZlbnQKKyAqIGhhZCBoYXBwZW5lZC4KKyAqCisgKiBOb3RlIHRoYXQsIGlmIGVpdGhlciB0aGUgaG9zdCBsaW5rIGlzIGluIHN0YXRlIExQRkNfTElOS19ET1dOIG9yIEB2cG9ydAorICogc3RhdGUgaW4gTFBGQ19WUE9SVF9SRUFEWSwgdGhlIHJlcXVlc3QgZm9yIGNoZWNraW5nIGhvc3QgbGluayBhdHRlbnRpb24KKyAqIGV2ZW50IHdpbGwgYmUgaWdub3JlZCBhbmQgYSByZXR1cm4gY29kZSBzaGFsbCBpbmRpY2F0ZSBubyBob3N0IGxpbmsKKyAqIGF0dGVudGlvbiBldmVudCBoYWQgaGFwcGVuZWQuCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgIDAgLSBubyBob3N0IGxpbmsgYXR0ZW50aW9uIGV2ZW50IGhhcHBlbmVkCisgKiAgIDEgLSBob3N0IGxpbmsgYXR0ZW50aW9uIGV2ZW50IGhhcHBlbmVkCisgKiovCiBpbnQKIGxwZmNfZWxzX2Noa19sYXR0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKQEAgLTkyLDYgKzExNSwzNCBAQAogCXJldHVybiAxOwogfQogCisvKioKKyAqIGxwZmNfcHJlcF9lbHNfaW9jYjogQWxsb2NhdGUgYW5kIHByZXBhcmUgYSBscGZjIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQGV4cGVjdFJzcDogZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgcmVzcG9uc2UgaXMgZXhwZWN0ZWQuCisgKiBAY21kU2l6ZTogc2l6ZSBvZiB0aGUgRUxTIGNvbW1hbmQuCisgKiBAcmV0cnk6IG51bWJlciBvZiByZXRyaWVzIHRvIHRoZSBjb21tYW5kIElPQ0Igd2hlbiBpdCBmYWlscy4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICogQGRpZDogZGVzdGluYXRpb24gaWRlbnRpZmllci4KKyAqIEBlbHNjbWQ6IHRoZSBFTFMgY29tbWFuZCBjb2RlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyB1c2VkIGZvciBhbGxvY2F0aW5nIGEgbHBmYy1JT0NCIGRhdGEgc3RydWN0dXJlIGZyb20KKyAqIHRoZSBkcml2ZXIgbHBmYy1JT0NCIGZyZWUtbGlzdCBhbmQgcHJlcGFyZSB0aGUgSU9DQiB3aXRoIHRoZSBwYXJhbWV0ZXJzCisgKiBwYXNzZWQgaW50byB0aGUgcm91dGluZSBmb3IgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUgdG8gaXNzdWUgYW4gRXh0ZW5kZWQKKyAqIExpbmsgU2VydmljZSAoRUxTKSBjb21tYW5kcy4gSXQgaXMgYSBnZW5lcmljIGxwZmMtSU9DQiBhbGxvY2F0aW9uCisgKiBhbmQgcHJlcGFyYXRpb24gcm91dGluZSB0aGF0IGlzIHVzZWQgYnkgYWxsIHRoZSBkaXNjb3Zlcnkgc3RhdGUgbWFjaGluZQorICogcm91dGluZXMgYW5kIHRoZSBFTFMgY29tbWFuZC1zcGVjaWZpYyBmaWVsZHMgd2lsbCBiZSBsYXRlciBzZXQgdXAgYnkKKyAqIHRoZSBpbmRpdmlkdWFsIGRpc2NvdmVyeSBtYWNoaW5lIHJvdXRpbmVzIGFmdGVyIGNhbGxpbmcgdGhpcyByb3V0aW5lCisgKiBhbGxvY2F0aW5nIGFuZCBwcmVwYXJpbmcgYSBnZW5lcmljIElPQ0IgZGF0YSBzdHJ1Y3R1cmUuIEl0IGZpbGxzIGluIHRoZQorICogQnVmZmVyIERlc2NyaXB0b3IgRW50cmllcyAoQkRFcyksIGFsbG9jYXRlcyBidWZmZXJzIGZvciBib3RoIGNvbW1hbmQKKyAqIHBheWxvYWQgYW5kIHJlc3BvbnNlIHBheWxvYWQgKGlmIGV4cGVjdGVkKS4gVGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUKKyAqIG5kbHAgaXMgaW5jcmVtZW50ZWQgYnkgMSBhbmQgdGhlIHJlZmVyZW5jZSB0byB0aGUgbmRscCBpcyBwdXQgaW50bworICogY29udGV4dDEgb2YgdGhlIElPQ0IgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoaXMgSU9DQiB0byBob2xkIHRoZSBuZGxwCisgKiByZWZlcmVuY2UgZm9yIHRoZSBjb21tYW5kJ3MgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWNjZXNzIGxhdGVyLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIFBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZC9wcmVwYXJlZCBlbHMgaW9jYiBkYXRhIHN0cnVjdHVyZQorICogICBOVUxMIC0gd2hlbiBlbHMgaW9jYiBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9uL3ByZXBhcmF0aW9uIGZhaWxlZAorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX2lvY2JxICoKIGxwZmNfcHJlcF9lbHNfaW9jYihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHVpbnQ4X3QgZXhwZWN0UnNwLAogCQkgICB1aW50MTZfdCBjbWRTaXplLCB1aW50OF90IHJldHJ5LApAQCAtMTUwLDcgKzIwMSw3IEBACiAKIAlpY21kLT51bi5lbHNyZXE2NC5iZGwuYWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGJ1Zmxpc3QtPnBoeXMpOwogCWljbWQtPnVuLmVsc3JlcTY0LmJkbC5hZGRyTG93ID0gcHV0UGFkZHJMb3cocGJ1Zmxpc3QtPnBoeXMpOwotCWljbWQtPnVuLmVsc3JlcTY0LmJkbC5iZGVGbGFncyA9IEJVRkZfVFlQRV9CREw7CisJaWNtZC0+dW4uZWxzcmVxNjQuYmRsLmJkZUZsYWdzID0gQlVGRl9UWVBFX0JMUF82NDsKIAlpY21kLT51bi5lbHNyZXE2NC5yZW1vdGVJRCA9IGRpZDsJLyogRElEICovCiAJaWYgKGV4cGVjdFJzcCkgewogCQlpY21kLT51bi5lbHNyZXE2NC5iZGwuYmRlU2l6ZSA9ICgyICogc2l6ZW9mKHN0cnVjdCB1bHBfYmRlNjQpKTsKQEAgLTE4NSw3ICsyMzYsNyBAQAogCQlicGwtPmFkZHJMb3cgPSBsZTMyX3RvX2NwdShwdXRQYWRkckxvdyhwcnNwLT5waHlzKSk7CiAJCWJwbC0+YWRkckhpZ2ggPSBsZTMyX3RvX2NwdShwdXRQYWRkckhpZ2gocHJzcC0+cGh5cykpOwogCQlicGwtPnR1cy5mLmJkZVNpemUgPSBGQ0VMU1NJWkU7Ci0JCWJwbC0+dHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1VTRV9SQ1Y7CisJCWJwbC0+dHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRFXzY0OwogCQlicGwtPnR1cy53ID0gbGUzMl90b19jcHUoYnBsLT50dXMudyk7CiAJfQogCkBAIC0yMzMsNiArMjg0LDIyIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qKgorICogbHBmY19pc3N1ZV9mYWJyaWNfcmVnbG9naW46IElzc3VlIGZhYnJpYyByZWdpc3RyYXRpb24gbG9naW4gZm9yIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgYSBmYWJyaWMgcmVnaXN0cmF0aW9uIGxvZ2luIGZvciBhIEB2cG9ydC4gQW4KKyAqIGFjdGl2ZSBuZGxwIG5vZGUgd2l0aCBGYWJyaWNfRElEIG11c3QgYWxyZWFkeSBleGlzdCBmb3IgdGhpcyBAdnBvcnQuCisgKiBUaGUgcm91dGluZSBpbnZva2VzIHR3byBtYWlsYm94IGNvbW1hbmRzIHRvIGNhcnJ5IG91dCBmYWJyaWMgcmVnaXN0cmF0aW9uCisgKiBsb2dpbiB0aHJvdWdoIHRoZSBIQkEgZmlybXdhcmU6IHRoZSBmaXJzdCBtYWlsYm94IGNvbW1hbmQgcmVxdWVzdHMgdGhlCisgKiBIQkEgdG8gcGVyZm9ybSBsaW5rIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBAdnBvcnQ7IGFuZCB0aGUgc2Vjb25kIG1haWxib3gKKyAqIGNvbW1hbmQgcmVxdWVzdHMgdGhlIEhCQSB0byBwZXJmb3JtIHRoZSBhY3R1YWwgZmFicmljIHJlZ2lzdHJhdGlvbiBsb2dpbgorICogd2l0aCB0aGUgQHZwb3J0LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBzdWNjZXNzZnVsbHkgaXNzdWVkIGZhYnJpYyByZWdpc3RyYXRpb24gbG9naW4gZm9yIEB2cG9ydAorICogICAtRU5YSU8gLS0gZmFpbGVkIHRvIGlzc3VlIGZhYnJpYyByZWdpc3RyYXRpb24gbG9naW4gZm9yIEB2cG9ydAorICoqLwogc3RhdGljIGludAogbHBmY19pc3N1ZV9mYWJyaWNfcmVnbG9naW4oc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMzEzLDYgKzM4MCwyNiBAQAogCXJldHVybiAtRU5YSU87CiB9CiAKKy8qKgorICogbHBmY19jbXBsX2Vsc19mbG9naV9mYWJyaWM6IENvbXBsZXRpb24gZnVuY3Rpb24gZm9yIGZsb2dpIHRvIGEgZmFicmljIHBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAc3A6IHBvaW50ZXIgdG8gc2VydmljZSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAaXJzcDogcG9pbnRlciB0byB0aGUgSU9DQiB3aXRoaW4gdGhlIGxwZmMgcmVzcG9uc2UgSU9DQi4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCBieSB0aGUgbHBmY19jbXBsX2Vsc19mbG9naSgpIGNvbXBsZXRpb24gY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgY29tcGxldGlvbiBvZiBhIEZhYnJpYyBMb2dpbiAoRkxPR0kpIGludG8gYSBmYWJyaWMKKyAqIHBvcnQgaW4gYSBmYWJyaWMgdG9wb2xvZ3kuIEl0IHByb3Blcmx5IHNldHMgdXAgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIEBuZGxwCisgKiBmcm9tIHRoZSBJT0NCIHJlc3BvbnNlLiBJdCBhbHNvIGNoZWNrIHRoZSBuZXdseSBhc3NpZ25lZCBOX1BvcnQgSUQgdG8gdGhlCisgKiBAdnBvcnQgYWdhaW5zdCB0aGUgcHJldmlvdXNseSBhc3NpZ25lZCBOX1BvcnQgSUQuIElmIGl0IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgcHJldmlvdXNseSBhc3NpZ25lZCBEZXN0aW5hdGlvbiBJRCAoRElEKSwgdGhlIGxwZmNfdW5yZWdfcnBpKCkgcm91dGluZQorICogaXMgaW52b2tlZCBvbiBhbGwgdGhlIHJlbWFpbmluZyBub2RlcyB3aXRoIHRoZSBAdnBvcnQgdG8gdW5yZWdpc3RlciB0aGUKKyAqIFJlbW90ZSBQb3J0IEluZGljYXRvcnMgKFJQSXMpLiBGaW5hbGx5LCB0aGUgbHBmY19pc3N1ZV9mYWJyaWNfcmVnbG9naW4oKQorICogaXMgaW52b2tlZCB0byByZWdpc3RlciBsb2dpbiB0byB0aGUgZmFicmljLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzIChjdXJyZW50bHksIGFsd2F5cyByZXR1cm4gMCkKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfY21wbF9lbHNfZmxvZ2lfZmFicmljKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsCiAJCQkgICBzdHJ1Y3Qgc2Vydl9wYXJtICpzcCwgSU9DQl90ICppcnNwKQpAQCAtMzg3LDcgKzQ3NCw3IEBACiAJCSAqLwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnAsIG5leHRfbnAsCiAJCQkJCSZ2cG9ydC0+ZmNfbm9kZXMsIG5scF9saXN0cCkgewotCQkJaWYgKCFOTFBfQ0hLX05PREVfQUNUKG5kbHApKQorCQkJaWYgKCFOTFBfQ0hLX05PREVfQUNUKG5wKSkKIAkJCQljb250aW51ZTsKIAkJCWlmICgobnAtPm5scF9zdGF0ZSAhPSBOTFBfU1RFX05QUl9OT0RFKSB8fAogCQkJCSAgICEobnAtPm5scF9mbGFnICYgTkxQX05QUl9BRElTQykpCkBAIC00MTYsOSArNTAzLDI2IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qCi0gKiBXZSBGTE9HSWVkIGludG8gYW4gTlBvcnQsIGluaXRpYXRlIHB0MnB0IHByb3RvY29sCi0gKi8KKy8qKgorICogbHBmY19jbXBsX2Vsc19mbG9naV9ucG9ydDogQ29tcGxldGlvbiBmdW5jdGlvbiBmb3IgZmxvZ2kgdG8gYW4gTl9Qb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICogQHNwOiBwb2ludGVyIHRvIHNlcnZpY2UgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyBpbnZva2VkIGJ5IHRoZSBscGZjX2NtcGxfZWxzX2Zsb2dpKCkgY29tcGxldGlvbiBjYWxsYmFjaworICogZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBjb21wbGV0aW9uIG9mIGEgRmFicmljIExvZ2luIChGTE9HSSkgaW50byBhbiBOX1BvcnQKKyAqIGluIGEgcG9pbnQtdG8tcG9pbnQgdG9wb2xvZ3kuIEZpcnN0LCB0aGUgQHZwb3J0J3MgTl9Qb3J0IE5hbWUgaXMgY29tcGFyZWQKKyAqIHdpdGggdGhlIHJlY2VpdmVkIE5fUG9ydCBOYW1lOiBpZiB0aGUgQHZwb3J0J3MgTl9Qb3J0IE5hbWUgaXMgZ3JlYXRlciB0aGFuCisgKiB0aGUgcmVjZWl2ZWQgTl9Qb3J0IE5hbWUgbGV4aWNvZ3JhcGhpY2FsbHksIHRoaXMgbm9kZSBzaGFsbCBhc3NpZ24gbG9jYWwKKyAqIE5fUG9ydCBJRCAoUFQyUFRfTG9jYWxJRDogMSkgYW5kIHJlbW90ZSBOX1BvcnQgSUQgKFBUMlBUX1JlbW90ZUlEOiAyKSBhbmQKKyAqIHdpbGwgc2VuZCBvdXQgUG9ydCBMb2dpbiAoUExPR0kpIHdpdGggdGhlIE5fUG9ydCBJRHMgYXNzaWduZWQuIE90aGVyd2lzZSwKKyAqIHRoaXMgbm9kZSBzaGFsbCBqdXN0IHdhaXQgZm9yIHRoZSByZW1vdGUgbm9kZSB0byBpc3N1ZSBQTE9HSSBhbmQgYXNzaWduCisgKiBOX1BvcnQgSURzLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzCisgKiAgIC1FTlhJTyAtIEZhaWwKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfY21wbF9lbHNfZmxvZ2lfbnBvcnQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKIAkJCSAgc3RydWN0IHNlcnZfcGFybSAqc3ApCkBAIC01MTYsNiArNjIwLDI5IEBACiAJcmV0dXJuIC1FTlhJTzsKIH0KIAorLyoqCisgKiBscGZjX2NtcGxfZWxzX2Zsb2dpOiBDb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBmbG9naS4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcnNwaW9jYjogcG9pbnRlciB0byBscGZjIHJlc3BvbnNlIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSB0b3AtbGV2ZWwgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaXNzdWluZworICogYSBGYWJyaWMgTG9naW4gKEZMT0dJKSBjb21tYW5kLiBJZiB0aGUgcmVzcG9uc2UgSU9DQiByZXBvcnRlZCBlcnJvciwKKyAqIHRoZSBscGZjX2Vsc19yZXRyeSgpIHJvdXRpbmUgc2hhbGwgYmUgaW52b2tlZCB0byByZXRyeSB0aGUgRkxPR0kuIElmCisgKiByZXRyeSBoYXMgYmVlbiBtYWRlIChlaXRoZXIgaW1tZWRpYXRlbHkgb3IgZGVsYXllZCB3aXRoIGxwZmNfZWxzX3JldHJ5KCkKKyAqIHJldHVybmluZyAxKSwgdGhlIGNvbW1hbmQgSU9DQiB3aWxsIGJlIHJlbGVhc2VkIGFuZCBmdW5jdGlvbiByZXR1cm5lZC4KKyAqIElmIHRoZSByZXRyeSBhdHRlbXB0IGhhcyBiZWVuIGdpdmVuIHVwIChwb3NzaWJseSByZWFjaCB0aGUgbWF4aW11bQorICogbnVtYmVyIG9mIHJldHJpZXMpLCBvbmUgYWRkaXRpb25hbCBkZWNyZW1lbnQgb2YgbmRscCByZWZlcmVuY2Ugc2hhbGwgYmUKKyAqIGludm9rZWQgYmVmb3JlIGdvaW5nIG91dCBhZnRlciByZWxlYXNpbmcgdGhlIGNvbW1hbmQgSU9DQi4gVGhpcyB3aWxsCisgKiBhY3R1YWxseSByZWxlYXNlIHRoZSByZW1vdGUgbm9kZSAoTm90ZSwgbHBmY19lbHNfZnJlZV9pb2NiKCkgd2lsbCBhbHNvCisgKiBpbnZva2Ugb25lIGRlY3JlbWVudCBvZiBuZGxwIHJlZmVyZW5jZSBjb3VudCkuIElmIG5vIGVycm9yIHJlcG9ydGVkIGluCisgKiB0aGUgSU9DQiBzdGF0dXMsIHRoZSBjb21tYW5kIFBvcnQgSUQgZmllbGQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlcgorICogdGhpcyBpcyBhIHBvaW50LXRvLXBvaW50IHRvcG9sb2d5IG9yIGEgZmFicmljIHRvcG9sb2d5OiBpZiB0aGUgUG9ydCBJRAorICogZmllbGQgaXMgYXNzaWduZWQsIGl0IGlzIGEgZmFicmljIHRvcG9sb2d5OyBvdGhlcndpc2UsIGl0IGlzIGEKKyAqIHBvaW50LXRvLXBvaW50IHRvcG9sb2d5LiBUaGUgcm91dGluZSBscGZjX2NtcGxfZWxzX2Zsb2dpX2ZhYnJpYygpIG9yCisgKiBscGZjX2NtcGxfZWxzX2Zsb2dpX25wb3J0KCkgc2hhbGwgYmUgaW52b2tlZCBhY2NvcmRpbmdseSB0byBoYW5kbGUgdGhlCisgKiBzcGVjaWZpYyB0b3BvbG9neSBjb21wbGV0aW9uIGNvbmRpdGlvbnMuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19mbG9naShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgICAgc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC02MTgsNiArNzQ1LDI4IEBACiAJbHBmY19lbHNfZnJlZV9pb2NiKHBoYmEsIGNtZGlvY2IpOwogfQogCisvKioKKyAqIGxwZmNfaXNzdWVfZWxzX2Zsb2dpOiBJc3N1ZSBhbiBmbG9naSBpb2NiIGNvbW1hbmQgZm9yIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcmV0cnk6IG51bWJlciBvZiByZXRyaWVzIHRvIHRoZSBjb21tYW5kIElPQ0IuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlcyBhIEZhYnJpYyBMb2dpbiAoRkxPR0kpIFJlcXVlc3QgRUxTIGNvbW1hbmQKKyAqIGZvciBhIEB2cG9ydC4gVGhlIGluaXRpYXRvciBzZXJ2aWNlIHBhcmFtZXRlcnMgYXJlIHB1dCBpbnRvIHRoZSBwYXlsb2FkCisgKiBvZiB0aGUgRkxPR0kgUmVxdWVzdCBJT0NCIGFuZCB0aGUgdG9wLWxldmVsIGNhbGxiYWNrIGZ1bmN0aW9uIHBvaW50ZXIKKyAqIHRvIGxwZmNfY21wbF9lbHNfZmxvZ2koKSByb3V0aW5lIGlzIHB1dCB0byB0aGUgSU9DQiBjb21wbGV0aW9uIGNhbGxiYWNrCisgKiBmdW5jdGlvbiBmaWVsZC4gVGhlIGxwZmNfaXNzdWVfZmFicmljX2lvY2Igcm91dGluZSBpcyBpbnZva2VkIHRvIHNlbmQKKyAqIG91dCBGTE9HSSBFTFMgY29tbWFuZCB3aXRoIG9uZSBvdXRzdGFuZGluZyBmYWJyaWMgSU9DQiBhdCBhIHRpbWUuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBGTE9HSSBFTFMgY29tbWFuZC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gc3VjY2Vzc2Z1bGx5IGlzc3VlZCBmbG9naSBpb2NiIGZvciBAdnBvcnQKKyAqICAgMSAtIGZhaWxlZCB0byBpc3N1ZSBmbG9naSBpb2NiIGZvciBAdnBvcnQKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfaXNzdWVfZWxzX2Zsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsCiAJCSAgICAgdWludDhfdCByZXRyeSkKQEAgLTY5NCw2ICs4NDMsMjAgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19hYm9ydF9mbG9naTogQWJvcnQgYWxsIG91dHN0YW5kaW5nIGZsb2dpIGlvY2JzLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGFib3J0cyBhbGwgdGhlIG91dHN0YW5kaW5nIEZhYnJpYyBMb2dpbiAoRkxPR0kpIElPQ0JzCisgKiB3aXRoIGEgQHBoYmEuIFRoaXMgcm91dGluZSB3YWxrcyBhbGwgdGhlIG91dHN0YW5kaW5nIElPQ0JzIG9uIHRoZSB0eGNtcGxxCisgKiBsaXN0IGFuZCBpc3N1ZXMgYW4gYWJvcnQgSU9DQiBjb21tb25kIG9uIGVhY2ggb3V0c3RhbmRpbmcgSU9DQiB0aGF0CisgKiBjb250YWlucyBhIGFjdGl2ZSBGYWJyaWNfRElEIG5kbHAuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHRvIGlzc3VlCisgKiB0aGUgYWJvcnQgSU9DQiBjb21tYW5kIG9uIGFsbCB0aGUgb3V0c3RhbmRpbmcgSU9DQnMsIHRodXMgd2hlbiB0aGlzCisgKiBmdW5jdGlvbiByZXR1cm5zLCBpdCBkb2VzIG5vdCBndWFyYW50ZWUgYWxsIHRoZSBJT0NCcyBhcmUgYWN0dWFsbHkgYWJvcnRlZC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjZXNzZnVsbHkgaXNzdWVkIGFib3J0IGlvY2Igb24gYWxsIG91dHN0YW5kaW5nIGZsb2dpcyAoQWx3YXlzIDApCisgKiovCiBpbnQKIGxwZmNfZWxzX2Fib3J0X2Zsb2dpKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTcyOSw2ICs4OTIsMjIgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2luaXRpYWxfZmxvZ2k6IElzc3VlIGFuIGluaXRpYWwgZmFicmljIGxvZ2luIGZvciBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXNzdWVzIGFuIGluaXRpYWwgRmFicmljIExvZ2luIChGTE9HSSkgZm9yIHRoZSBAdnBvcnQKKyAqIHNwZWNpZmllZC4gSXQgZmlyc3Qgc2VhcmNoZXMgdGhlIG5kbHAgd2l0aCB0aGUgRmFicmljX0RJRCAoMHhmZmZmZmUpIGZyb20KKyAqIHRoZSBAdnBvcnQncyBuZGxwIGxpc3QuIElmIG5vIHN1Y2ggbmRscCBmb3VuZCwgaXQgd2lsbCBjcmVhdGUgYW4gbmRscCBhbmQKKyAqIHB1dCBpdCBpbnRvIHRoZSBAdnBvcnQncyBuZGxwIGxpc3QuIElmIGFuIGluYWN0aXZlIG5kbHAgZm91bmQgb24gdGhlIGxpc3QsCisgKiBpdCB3aWxsIGp1c3QgYmUgZW5hYmxlZCBhbmQgbWFkZSBhY3RpdmUuIFRoZSBscGZjX2lzc3VlX2Vsc19mbG9naSgpIHJvdXRpbmUKKyAqIGlzIHRoZW4gaW52b2tlZCB3aXRoIHRoZSBAdnBvcnQgYW5kIHRoZSBuZGxwIHRvIHBlcmZvcm0gdGhlIEZMT0dJIGZvciB0aGUKKyAqIEB2cG9ydC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gZmFpbGVkIHRvIGlzc3VlIGluaXRpYWwgZmxvZ2kgZm9yIEB2cG9ydAorICogICAxIC0gc3VjY2Vzc2Z1bGx5IGlzc3VlZCBpbml0aWFsIGZsb2dpIGZvciBAdnBvcnQKKyAqKi8KIGludAogbHBmY19pbml0aWFsX2Zsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKQEAgLTc2NCw2ICs5NDMsMjIgQEAKIAlyZXR1cm4gMTsKIH0KIAorLyoqCisgKiBscGZjX2luaXRpYWxfZmRpc2M6IElzc3VlIGFuIGluaXRpYWwgZmFicmljIGRpc2NvdmVyeSBmb3IgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlcyBhbiBpbml0aWFsIEZhYnJpYyBEaXNjb3ZlciAoRkRJU0MpIGZvciB0aGUgQHZwb3J0CisgKiBzcGVjaWZpZWQuIEl0IGZpcnN0IHNlYXJjaGVzIHRoZSBuZGxwIHdpdGggdGhlIEZhYnJpY19ESUQgKDB4ZmZmZmZlKSBmcm9tCisgKiB0aGUgQHZwb3J0J3MgbmRscCBsaXN0LiBJZiBubyBzdWNoIG5kbHAgZm91bmQsIGl0IHdpbGwgY3JlYXRlIGFuIG5kbHAgYW5kCisgKiBwdXQgaXQgaW50byB0aGUgQHZwb3J0J3MgbmRscCBsaXN0LiBJZiBhbiBpbmFjdGl2ZSBuZGxwIGZvdW5kIG9uIHRoZSBsaXN0LAorICogaXQgd2lsbCBqdXN0IGJlIGVuYWJsZWQgYW5kIG1hZGUgYWN0aXZlLiBUaGUgbHBmY19pc3N1ZV9lbHNfZmRpc2MoKSByb3V0aW5lCisgKiBpcyB0aGVuIGludm9rZWQgd2l0aCB0aGUgQHZwb3J0IGFuZCB0aGUgbmRscCB0byBwZXJmb3JtIHRoZSBGRElTQyBmb3IgdGhlCisgKiBAdnBvcnQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIGZhaWxlZCB0byBpc3N1ZSBpbml0aWFsIGZkaXNjIGZvciBAdnBvcnQKKyAqICAgMSAtIHN1Y2Nlc3NmdWxseSBpc3N1ZWQgaW5pdGlhbCBmZGlzYyBmb3IgQHZwb3J0CisgKiovCiBpbnQKIGxwZmNfaW5pdGlhbF9mZGlzYyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC03OTcsNiArOTkyLDE3IEBACiAJcmV0dXJuIDE7CiB9CiAKKy8qKgorICogbHBmY19tb3JlX3Bsb2dpOiBDaGVjayBhbmQgaXNzdWUgcmVtYWluaW5nIHBsb2dpcyBmb3IgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGNoZWNrcyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlIHJlbWFpbmluZyBQb3J0IExvZ2lucworICogKFBMT0dJKSB0byBiZSBpc3N1ZWQgZm9yIHRoZSBAdnBvcnQuIElmIHNvLCBpdCB3aWxsIGludm9rZSB0aGUgcm91dGluZQorICogbHBmY19lbHNfZGlzY19wbG9naSgpIHRvIGdvIHRocm91Z2ggdGhlIE5vZGUgUG9ydCBSZWNvdmVyeSAoTlBSKSBub2RlcworICogdG8gaXNzdWUgRUxTIFBMT0dJcyB1cCB0byB0aGUgY29uZmlndXJlZCBkaXNjb3ZlciB0aHJlYWRzIHdpdGggdGhlCisgKiBAdnBvcnQgKEB2cG9ydC0+Y2ZnX2Rpc2NvdmVyeV90aHJlYWRzKS4gVGhlIGZ1bmN0aW9uIGFsc28gZGVjcmVtZW50CisgKiB0aGUgQHZwb3J0J3MgbnVtX2Rpc2Nfbm9kZSBieSAxIGlmIGl0IGlzIG5vdCBhbHJlYWR5IDAuCisgKiovCiB2b2lkCiBscGZjX21vcmVfcGxvZ2koc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtODE5LDYgKzEwMjUsMzcgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19wbG9naV9jb25maXJtX25wb3J0OiBDb25maXJtIHBvbG9naSB3d3BuIG1hdGNoZXMgc3RvcmVkIG5kbHAuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwcnNwOiBwb2ludGVyIHRvIHJlc3BvbnNlIElPQ0IgcGF5bG9hZC4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBjaGVja3MgYW5kIGluZGljYXRlcyB3aGV0aGVyIHRoZSBXV1BOIG9mIGFuIE5fUG9ydCwgcmV0cmlldmVkCisgKiBmcm9tIGEgUExPR0ksIG1hdGNoZXMgdGhlIFdXUE4gdGhhdCBpcyBzdG9yZWQgaW4gdGhlIEBuZGxwIGZvciB0aGF0IE5fUE9ydC4KKyAqIFRoZSBmb2xsb3dpbmcgY2FzZXMgYXJlIGNvbnNpZGVyZWQgTl9Qb3J0IGNvbmZpcm1lZDoKKyAqIDEpIFRoZSBOX1BvcnQgaXMgYSBGYWJyaWMgbmRscDsgMikgVGhlIEBuZGxwIGlzIG9uIHZwb3J0IGxpc3QgYW5kIG1hdGNoZXMKKyAqIHRoZSBXV1BOIG9mIHRoZSBOX1BvcnQgbG9nZ2VkIGludG87IDMpIFRoZSBAbmRscCBpcyBub3Qgb24gdnBvcnQgbGlzdCBidXQKKyAqIGl0IGRvZXMgbm90IGhhdmUgV1dQTiBhc3NpZ25lZCBlaXRoZXIuIElmIHRoZSBXV1BOIGlzIGNvbmZpcm1lZCwgdGhlCisgKiBwb2ludGVyIHRvIHRoZSBAbmRscCB3aWxsIGJlIHJldHVybmVkLiBJZiB0aGUgV1dQTiBpcyBub3QgY29uZmlybWVkOgorICogMSkgaWYgdGhlcmUgaXMgYSBub2RlIG9uIHZwb3J0IGxpc3Qgb3RoZXIgdGhhbiB0aGUgQG5kbHAgd2l0aCB0aGUgc2FtZQorICogV1dQTiBvZiB0aGUgTl9Qb3J0IFBMT0dJIGxvZ2dlZCBpbnRvLCB0aGUgbHBmY191bnJlZ19ycGkoKSB3aWxsIGJlIGludm9rZWQKKyAqIG9uIHRoYXQgbm9kZSB0byByZWxlYXNlIHRoZSBSUEkgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlOyAyKSBpZiB0aGVyZSBpcworICogbm8gbm9kZSBmb3VuZCBvbiB2cG9ydCBsaXN0IHdpdGggdGhlIHNhbWUgV1dQTiBvZiB0aGUgTl9Qb3J0IFBMT0dJIGxvZ2dlZAorICogaW50bywgYSBuZXcgbm9kZSBzaGFsbCBiZSBhbGxvY2F0ZWQgKG9yIGFjdGl2YXRlZCkuIEluIGVpdGhlciBjYXNlLCB0aGUKKyAqIHBhcmFtZXRlcnMgb2YgdGhlIEBuZGxwIHNoYWxsIGJlIGNvcGllZCB0byB0aGUgbmV3X25kbHAsIHRoZSBAbmRscCBzaGFsbAorICogYmUgcmVsZWFzZWQgYW5kIHRoZSBuZXdfbmRscCBzaGFsbCBiZSBwdXQgb24gdG8gdGhlIHZwb3J0IG5vZGUgbGlzdCBhbmQKKyAqIGl0cyBwb2ludGVyIHJldHVybmVkIGFzIHRoZSBjb25maXJtZWQgbm9kZS4KKyAqCisgKiBOb3RlIHRoYXQgYmVmb3JlIHRoZSBAbmRscCBnb3QgInJlbGVhc2VkIiwgdGhlIGtlZXBESUQgZnJvbSBub3QtbWF0Y2hpbmcKKyAqIG9yIGluYWN0aXZlICJuZXdfbmRscCIgb24gdGhlIHZwb3J0IG5vZGUgbGlzdCBpcyBhc3NpZ25lZCB0byB0aGUgbmxwX0RJRAorICogb2YgdGhlIEBuZGxwLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJlbGVhc2Ugb2YgQG5kbHAgaXMgYWN0dWFsbHkgdG8gcHV0IGl0CisgKiBpbnRvIGFuIGluYWN0aXZlIHN0YXRlIG9uIHRoZSB2cG9ydCBub2RlIGxpc3QgYW5kIHRoZSB2cG9ydCBub2RlIGxpc3QKKyAqIG1hbmFnZW1lbnQgYWxnb3JpdGhtIGRvZXMgbm90IGFsbG93IHR3byBub2RlIHdpdGggYSBzYW1lIERJRC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICBwb2ludGVyIHRvIHRoZSBQTE9HSSBOX1BvcnQgQG5kbHAKKyAqKi8KIHN0YXRpYyBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqCiBscGZjX3Bsb2dpX2NvbmZpcm1fbnBvcnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCB1aW50MzJfdCAqcHJzcCwKIAkJCSBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCkKQEAgLTkyMiw2ICsxMTU5LDE3IEBACiAJcmV0dXJuIG5ld19uZGxwOwogfQogCisvKioKKyAqIGxwZmNfZW5kX3JzY246IENoZWNrIGFuZCBoYW5kbGUgbW9yZSByc2NuIGZvciBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgY2hlY2tzIHdoZXRoZXIgbW9yZSBSZWdpc3RyYXRpb24gU3RhdGUgQ2hhbmdlCisgKiBOb3RpZmljYXRpb25zIChSU0NOcykgY2FtZSBpbiB3aGlsZSB0aGUgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUgd2FzIGluCisgKiB0aGUgRkNfUlNDTl9NT0RFLiBJZiBzbywgdGhlIGxwZmNfZWxzX2hhbmRsZV9yc2NuKCkgcm91dGluZSB3aWxsIGJlCisgKiBpbnZva2VkIHRvIGhhbmRsZSB0aGUgYWRkaXRpb25hbCBSU0NOcyBmb3IgdGhlIEB2cG9ydC4gT3RoZXJ3aXNlLCB0aGUKKyAqIEZDX1JTQ05fTU9ERSBiaXQgd2lsbCBiZSBjbGVhcmVkIHdpdGggdGhlIEB2cG9ydCB0byBtYXJrIGFzIHRoZSBlbmQgb2YKKyAqIGhhbmRsaW5nIHRoZSBSU0NOcy4KKyAqKi8KIHZvaWQKIGxwZmNfZW5kX3JzY24oc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtOTQzLDYgKzExOTEsMjYgQEAKIAl9CiB9CiAKKy8qKgorICogbHBmY19jbXBsX2Vsc19wbG9naTogQ29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgcGxvZ2kuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQHJzcGlvY2I6IHBvaW50ZXIgdG8gbHBmYyByZXNwb25zZSBpb2NiIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaXNzdWluZyB0aGUgUG9ydAorICogTG9naW4gKFBMT0dJKSBjb21tYW5kLiBGb3IgUExPR0kgY29tcGxldGlvbiwgdGhlcmUgbXVzdCBiZSBhbiBhY3RpdmUKKyAqIG5kbHAgb24gdGhlIHZwb3J0IG5vZGUgbGlzdCB0aGF0IG1hdGNoZXMgdGhlIHJlbW90ZSBub2RlIElEIGZyb20gdGhlCisgKiBQTE9HSSByZXBvbnNlIElPQ0IuIElmIHN1Y2ggbmRscCBkb2VzIG5vdCBleGlzdCwgdGhlIFBMT0dJIGlzIHNpbXBseQorICogaWdub3JlZCBhbmQgY29tbWFuZCBJT0NCIHJlbGVhc2VkLiBUaGUgUExPR0kgcmVzcG9uc2UgSU9DQiBzdGF0dXMgaXMKKyAqIGNoZWNrZWQgZm9yIGVycm9yIGNvbmRpdG9ucy4gSWYgdGhlcmUgaXMgZXJyb3Igc3RhdHVzIHJlcG9ydGVkLCBQTE9HSQorICogcmV0cnkgc2hhbGwgYmUgYXR0ZW1wdGVkIGJ5IGludm9raW5nIHRoZSBscGZjX2Vsc19yZXRyeSgpIHJvdXRpbmUuCisgKiBPdGhlcndpc2UsIHRoZSBscGZjX3Bsb2dpX2NvbmZpcm1fbnBvcnQoKSByb3V0aW5lIHNoYWxsIGJlIGludm9rZWQgb24KKyAqIHRoZSBuZGxwIGFuZCB0aGUgTkxQX0VWVF9DTVBMX1BMT0dJIHN0YXRlIHRvIHRoZSBEaXNjb3ZlciBTdGF0ZSBNYWNoaW5lCisgKiAoRFNNKSBpcyBzZXQgZm9yIHRoaXMgUExPR0kgY29tcGxldGlvbi4gRmluYWxseSwgaXQgY2hlY2tzIHdoZXRoZXIKKyAqIHRoZXJlIGFyZSBhZGRpdGlvbmFsIE5fUG9ydCBub2RlcyB3aXRoIHRoZSB2cG9ydCB0aGF0IG5lZWQgdG8gcGVyZm9ybQorICogUExPR0kuIElmIHNvLCB0aGUgbHBmY19tb3JlX3Bsb2dpKCkgcm91dGluZSBpcyBpbnZva2VkIHRvIGlzc3VlIGFkZGl0aW9uCisgKiBQTE9HSXMuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19wbG9naShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgICAgc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC0xMDQ4LDYgKzEzMTYsMjcgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19pc3N1ZV9lbHNfcGxvZ2k6IElzc3VlIGFuIHBsb2dpIGlvY2IgY29tbWFuZCBmb3IgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAZGlkOiBkZXN0aW5hdGlvbiBwb3J0IGlkZW50aWZpZXIuCisgKiBAcmV0cnk6IG51bWJlciBvZiByZXRyaWVzIHRvIHRoZSBjb21tYW5kIElPQ0IuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlcyBhIFBvcnQgTG9naW4gKFBMT0dJKSBjb21tYW5kIHRvIGEgcmVtb3RlIE5fUG9ydAorICogKHdpdGggdGhlIEBkaWQpIGZvciBhIEB2cG9ydC4gQmVmb3JlIGlzc3VpbmcgYSBQTE9HSSB0byBhIHJlbW90ZSBOX1BvcnQsCisgKiB0aGUgbmRscCB3aXRoIHRoZSByZW1vdGUgTl9Qb3J0IERJRCBtdXN0IGV4aXN0IG9uIHRoZSBAdnBvcnQncyBuZGxwIGxpc3QuCisgKiBUaGlzIHJvdXRpbmUgY29uc3RydWN0cyB0aGUgcHJvcGVyIGZlaWxkcyBvZiB0aGUgUExPR0kgSU9DQiBhbmQgaW52b2tlcworICogdGhlIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSByb3V0aW5lIHRvIHNlbmQgb3V0IFBMT0dJIEVMUyBjb21tYW5kLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgUExPR0kgRUxTIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgYSBwbG9naSBmb3IgQHZwb3J0CisgKiAgIDEgLSBmYWlsZWQgdG8gaXNzdWUgYSBwbG9naSBmb3IgQHZwb3J0CisgKiovCiBpbnQKIGxwZmNfaXNzdWVfZWxzX3Bsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWludDMyX3QgZGlkLCB1aW50OF90IHJldHJ5KQogewpAQCAtMTEwNiw2ICsxMzk1LDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19jbXBsX2Vsc19wcmxpOiBDb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcmxpLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEByc3Bpb2NiOiBwb2ludGVyIHRvIGxwZmMgcmVzcG9uc2UgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGEgUHJvY2VzcyBMb2dpbgorICogKFBSTEkpIEVMUyBjb21tYW5kLiBUaGUgUFJMSSByZXNwb25zZSBJT0NCIHN0YXR1cyBpcyBjaGVja2VkIGZvciBlcnJvcgorICogc3RhdHVzLiBJZiB0aGVyZSBpcyBlcnJvciBzdGF0dXMgcmVwb3J0ZWQsIFBSTEkgcmV0cnkgc2hhbGwgYmUgYXR0ZW1wdGVkCisgKiBieSBpbnZva2luZyB0aGUgbHBmY19lbHNfcmV0cnkoKSByb3V0aW5lLiBPdGhlcndpc2UsIHRoZSBzdGF0ZQorICogTkxQX0VWVF9DTVBMX1BSTEkgaXMgc2VudCB0byB0aGUgRGlzY292ZXIgU3RhdGUgTWFjaGluZSAoRFNNKSBmb3IgdGhpcworICogbmRscCB0byBtYXJrIHRoZSBQUkxJIGNvbXBsZXRpb24uCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19wcmxpKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgIHN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQpAQCAtMTE2NCw2ICsxNDY2LDI3IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfaXNzdWVfZWxzX3BybGk6IElzc3VlIGEgcHJsaSBpb2NiIGNvbW1hbmQgZm9yIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcmV0cnk6IG51bWJlciBvZiByZXRyaWVzIHRvIHRoZSBjb21tYW5kIElPQ0IuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlcyBhIFByb2Nlc3MgTG9naW4gKFBSTEkpIEVMUyBjb21tYW5kIGZvciB0aGUKKyAqIEB2cG9ydC4gVGhlIFBSTEkgc2VydmljZSBwYXJhbWV0ZXJzIGFyZSBzZXQgdXAgaW4gdGhlIHBheWxvYWQgb2YgdGhlCisgKiBQUkxJIFJlcXVlc3QgY29tbWFuZCBhbmQgdGhlIHBvaW50ZXIgdG8gbHBmY19jbXBsX2Vsc19wcmxpKCkgcm91dGluZQorICogaXMgcHV0IHRvIHRoZSBJT0NCIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuYyBmaWVsZCBiZWZvcmUgaW52b2tpbmcgdGhlCisgKiByb3V0aW5lIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSB0byBzZW5kIG91dCBQUkxJIGNvbW1hbmQuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBQUkxJIEVMUyBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBzdWNjZXNzZnVsbHkgaXNzdWVkIHBybGkgaW9jYiBjb21tYW5kIGZvciBAdnBvcnQKKyAqICAgMSAtIGZhaWxlZCB0byBpc3N1ZSBwcmxpIGlvY2IgY29tbWFuZCBmb3IgQHZwb3J0CisgKiovCiBpbnQKIGxwZmNfaXNzdWVfZWxzX3BybGkoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKIAkJICAgIHVpbnQ4X3QgcmV0cnkpCkBAIC0xMjMzLDYgKzE1NTYsOTIgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3JzY25fZGlzYzogUGVyZm9ybSByc2NuIGRpc2NvdmVyeSBmb3IgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHBlcmZvcm1zIFJlZ2lzdHJhdGlvbiBTdGF0ZSBDaGFuZ2UgTm90aWZpY2F0aW9uIChSU0NOKQorICogZGlzY292ZXJ5IGZvciBhIEB2cG9ydC4gSWYgdGhlIEB2cG9ydCdzIG5vZGUgcG9ydCByZWNvdmVyeSBjb3VudCBpcyBub3QKKyAqIHplcm8sIGl0IHdpbGwgaW52b2tlIHRoZSBscGZjX2Vsc19kaXNjX3Bsb2dpKCkgdG8gcGVyZm9ybSBQTE9HSSBmb3IgYWxsCisgKiB0aGUgbm9kZXMgdGhhdCBuZWVkIHJlY292ZXJ5LiBJZiBub25lIG9mIHRoZSBQTE9HSSB3ZXJlIG5lZWRlZCB0aHJvdWdoCisgKiB0aGUgbHBmY19lbHNfZGlzY19wbG9naSgpIHJvdXRpbmUsIHRoZSBscGZjX2VuZF9yc2NuKCkgcm91dGluZSBzaGFsbCBiZQorICogaW52b2tlZCB0byBjaGVjayBhbmQgaGFuZGxlIHBvc3NpYmxlIG1vcmUgUlNDTiBjYW1lIGluIGR1cmluZyB0aGUgcGVyaW9kCisgKiBvZiBwcm9jZXNzaW5nIHRoZSBjdXJyZW50IG9uZXMuCisgKiovCitzdGF0aWMgdm9pZAorbHBmY19yc2NuX2Rpc2Moc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQoreworCWxwZmNfY2FuX2Rpc2N0bW8odnBvcnQpOworCisJLyogUlNDTiBkaXNjb3ZlcnkgKi8KKwkvKiBnbyB0aHJ1IE5QUiBub2RlcyBhbmQgaXNzdWUgRUxTIFBMT0dJcyAqLworCWlmICh2cG9ydC0+ZmNfbnByX2NudCkKKwkJaWYgKGxwZmNfZWxzX2Rpc2NfcGxvZ2kodnBvcnQpKQorCQkJcmV0dXJuOworCisJbHBmY19lbmRfcnNjbih2cG9ydCk7Cit9CisKKy8qKgorICogbHBmY19hZGlzY19kb25lOiBDb21wbGV0ZSB0aGUgYWRpc2MgcGhhc2Ugb2YgZGlzY292ZXJ5LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGxwZmNfdnBvcnQgaGJhIGRhdGEgc3RydWN0dXJlIHRoYXQgZmluaXNoZWQgYWxsIEFESVNDcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSBmaW5hbCBBRElTQyBpcyBjb21wbGV0ZWQgZHVyaW5nIGRpc2NvdmVyeS4KKyAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjbGVhcmluZyBsaW5rIGF0dGVudGlvbiBvciBpc3N1aW5nIHJlZ192cGkgZGVwZW5kaW5nCisgKiBvbiB3aGV0aGVyIG5waXYgaXMgZW5hYmxlZC4gVGhpcyBmdW5jdGlvbiBhbHNvIGtpY2tzIG9mZiB0aGUgUExPR0kgcGhhc2Ugb2YKKyAqIGRpc2NvdmVyeS4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9ja3MgaGVsZC4KKyAqKi8KK3N0YXRpYyB2b2lkCitscGZjX2FkaXNjX2RvbmUoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQoreworCXN0cnVjdCBTY3NpX0hvc3QgICAqc2hvc3QgPSBscGZjX3Nob3N0X2Zyb21fdnBvcnQodnBvcnQpOworCXN0cnVjdCBscGZjX2hiYSAgICpwaGJhID0gdnBvcnQtPnBoYmE7CisKKwkvKgorCSAqIEZvciBOUElWLCBjbXBsX3JlZ192cGkgd2lsbCBzZXQgcG9ydF9zdGF0ZSB0byBSRUFEWSwKKwkgKiBhbmQgY29udGludWUgZGlzY292ZXJ5LgorCSAqLworCWlmICgocGhiYS0+c2xpM19vcHRpb25zICYgTFBGQ19TTEkzX05QSVZfRU5BQkxFRCkgJiYKKwkgICAgISh2cG9ydC0+ZmNfZmxhZyAmIEZDX1JTQ05fTU9ERSkpIHsKKwkJbHBmY19pc3N1ZV9yZWdfdnBpKHBoYmEsIHZwb3J0KTsKKwkJcmV0dXJuOworCX0KKwkvKgorCSogRm9yIFNMSTIsIHdlIG5lZWQgdG8gc2V0IHBvcnRfc3RhdGUgdG8gUkVBRFkKKwkqIGFuZCBjb250aW51ZSBkaXNjb3ZlcnkuCisJKi8KKwlpZiAodnBvcnQtPnBvcnRfc3RhdGUgPCBMUEZDX1ZQT1JUX1JFQURZKSB7CisJCS8qIElmIHdlIGdldCBoZXJlLCB0aGVyZSBpcyBub3RoaW5nIHRvIEFESVNDICovCisJCWlmICh2cG9ydC0+cG9ydF90eXBlID09IExQRkNfUEhZU0lDQUxfUE9SVCkKKwkJCWxwZmNfaXNzdWVfY2xlYXJfbGEocGhiYSwgdnBvcnQpOworCQlpZiAoISh2cG9ydC0+ZmNfZmxhZyAmIEZDX0FCT1JUX0RJU0NPVkVSWSkpIHsKKwkJCXZwb3J0LT5udW1fZGlzY19ub2RlcyA9IDA7CisJCQkvKiBnbyB0aHJ1IE5QUiBsaXN0LCBpc3N1ZSBFTFMgUExPR0lzICovCisJCQlpZiAodnBvcnQtPmZjX25wcl9jbnQpCisJCQkJbHBmY19lbHNfZGlzY19wbG9naSh2cG9ydCk7CisJCQlpZiAoIXZwb3J0LT5udW1fZGlzY19ub2RlcykgeworCQkJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCQkJdnBvcnQtPmZjX2ZsYWcgJj0gfkZDX05ESVNDX0FDVElWRTsKKwkJCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCQkJbHBmY19jYW5fZGlzY3Rtbyh2cG9ydCk7CisJCQkJbHBmY19lbmRfcnNjbih2cG9ydCk7CisJCQl9CisJCX0KKwkJdnBvcnQtPnBvcnRfc3RhdGUgPSBMUEZDX1ZQT1JUX1JFQURZOworCX0gZWxzZQorCQlscGZjX3JzY25fZGlzYyh2cG9ydCk7Cit9CisKKy8qKgorICogbHBmY19tb3JlX2FkaXNjOiBJc3N1ZSBtb3JlIGFkaXNjIGFzIG5lZWRlZC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGRldGVybWluZXMgd2hldGhlciB0aGVyZSBhcmUgbW9yZSBuZGxwcyBvbiBhIEB2cG9ydAorICogbm9kZSBsaXN0IG5lZWQgdG8gaGF2ZSBBZGRyZXNzIERpc2NvdmVyIChBRElTQykgaXNzdWVkLiBJZiBzbywgaXQgd2lsbAorICogaW52b2tlIHRoZSBscGZjX2Vsc19kaXNjX2FkaXNjKCkgcm91dGluZSB0byBpc3N1ZSBBRElTQyBvbiB0aGUgQHZwb3J0J3MKKyAqIHJlbWFpbmluZyBub2RlcyB3aGljaCBuZWVkIHRvIGhhdmUgQURJU0Mgc2VudC4KKyAqKi8KIHZvaWQKIGxwZmNfbW9yZV9hZGlzYyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0xMjUyLDIzICsxNjYxLDI3IEBACiAJCS8qIGdvIHRocnUgTlBSIG5vZGVzIGFuZCBpc3N1ZSBhbnkgcmVtYWluaW5nIEVMUyBBRElTQ3MgKi8KIAkJc2VudGFkaXNjID0gbHBmY19lbHNfZGlzY19hZGlzYyh2cG9ydCk7CiAJfQorCWlmICghdnBvcnQtPm51bV9kaXNjX25vZGVzKQorCQlscGZjX2FkaXNjX2RvbmUodnBvcnQpOwogCXJldHVybjsKIH0KIAotc3RhdGljIHZvaWQKLWxwZmNfcnNjbl9kaXNjKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKLXsKLQlscGZjX2Nhbl9kaXNjdG1vKHZwb3J0KTsKLQotCS8qIFJTQ04gZGlzY292ZXJ5ICovCi0JLyogZ28gdGhydSBOUFIgbm9kZXMgYW5kIGlzc3VlIEVMUyBQTE9HSXMgKi8KLQlpZiAodnBvcnQtPmZjX25wcl9jbnQpCi0JCWlmIChscGZjX2Vsc19kaXNjX3Bsb2dpKHZwb3J0KSkKLQkJCXJldHVybjsKLQotCWxwZmNfZW5kX3JzY24odnBvcnQpOwotfQotCisvKioKKyAqIGxwZmNfY21wbF9lbHNfYWRpc2M6IENvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFkaXNjLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEByc3Bpb2NiOiBwb2ludGVyIHRvIGxwZmMgcmVzcG9uc2UgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb24gZm9yIGlzc3VpbmcgdGhlIEFkZHJlc3MgRGlzY292ZXIKKyAqIChBRElTQykgY29tbWFuZC4gSXQgZmlyc3QgY2hlY2tzIHRvIHNlZSB3aGV0aGVyIGxpbmsgd2VudCBkb3duIGR1cmluZworICogdGhlIGRpc2NvdmVyeSBwcm9jZXNzLiBJZiBzbywgdGhlIG5vZGUgd2lsbCBiZSBtYXJrZWQgYXMgbm9kZSBwb3J0CisgKiByZWNvdmVyeSBmb3IgaXNzdWluZyBkaXNjb3ZlciBJT0NCIGJ5IHRoZSBsaW5rIGF0dGVudGlvbiBoYW5kbGVyIGFuZAorICogZXhpdC4gT3RoZXJ3aXNlLCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGlzIGNoZWNrZWQuIElmIGVycm9yIHdhcyByZXBvcnRlZAorICogaW4gdGhlIHJlc3BvbnNlIHN0YXR1cywgdGhlIEFESVNDIGNvbW1hbmQgc2hhbGwgYmUgcmV0cmllZCBieSBpbnZva2luZworICogdGhlIGxwZmNfZWxzX3JldHJ5KCkgcm91dGluZS4gT3RoZXJ3aXNlLCBpZiBubyBlcnJvciB3YXMgcmVwb3J0ZWQgaW4KKyAqIHRoZSByZXNwb25zZSBzdGF0dXMsIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIGludm9rZWQgdG8gc2V0IHRyYW5zaXRpb24KKyAqIHdpdGggcmVzcGVjdCB0byBOTFBfRVZUX0NNUExfQURJU0MgZXZlbnQuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19hZGlzYyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgICAgc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC0xMzMzLDU3ICsxNzQ2LDM0IEBACiAJCWxwZmNfZGlzY19zdGF0ZV9tYWNoaW5lKHZwb3J0LCBuZGxwLCBjbWRpb2NiLAogCQkJCQlOTFBfRVZUX0NNUExfQURJU0MpOwogCi0JaWYgKGRpc2MgJiYgdnBvcnQtPm51bV9kaXNjX25vZGVzKSB7Ci0JCS8qIENoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgbW9yZSBBRElTQ3MgdG8gYmUgc2VudCAqLworCS8qIENoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgbW9yZSBBRElTQ3MgdG8gYmUgc2VudCAqLworCWlmIChkaXNjICYmIHZwb3J0LT5udW1fZGlzY19ub2RlcykKIAkJbHBmY19tb3JlX2FkaXNjKHZwb3J0KTsKLQotCQkvKiBDaGVjayB0byBzZWUgaWYgd2UgYXJlIGRvbmUgd2l0aCBBRElTQyBhdXRoZW50aWNhdGlvbiAqLwotCQlpZiAodnBvcnQtPm51bV9kaXNjX25vZGVzID09IDApIHsKLQkJCS8qIElmIHdlIGdldCBoZXJlLCB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gQURJU0MgKi8KLQkJCS8qCi0JCQkgKiBGb3IgTlBJViwgY21wbF9yZWdfdnBpIHdpbGwgc2V0IHBvcnRfc3RhdGUgdG8gUkVBRFksCi0JCQkgKiBhbmQgY29udGludWUgZGlzY292ZXJ5LgotCQkJICovCi0JCQlpZiAoKHBoYmEtPnNsaTNfb3B0aW9ucyAmIExQRkNfU0xJM19OUElWX0VOQUJMRUQpICYmCi0JCQkgICAhKHZwb3J0LT5mY19mbGFnICYgRkNfUlNDTl9NT0RFKSkgewotCQkJCWxwZmNfaXNzdWVfcmVnX3ZwaShwaGJhLCB2cG9ydCk7Ci0JCQkJZ290byBvdXQ7Ci0JCQl9Ci0JCQkvKgotCQkJICogRm9yIFNMSTIsIHdlIG5lZWQgdG8gc2V0IHBvcnRfc3RhdGUgdG8gUkVBRFkKLQkJCSAqIGFuZCBjb250aW51ZSBkaXNjb3ZlcnkuCi0JCQkgKi8KLQkJCWlmICh2cG9ydC0+cG9ydF9zdGF0ZSA8IExQRkNfVlBPUlRfUkVBRFkpIHsKLQkJCQkvKiBJZiB3ZSBnZXQgaGVyZSwgdGhlcmUgaXMgbm90aGluZyB0byBBRElTQyAqLwotCQkJCWlmICh2cG9ydC0+cG9ydF90eXBlID09IExQRkNfUEhZU0lDQUxfUE9SVCkKLQkJCQkJbHBmY19pc3N1ZV9jbGVhcl9sYShwaGJhLCB2cG9ydCk7Ci0KLQkJCQlpZiAoISh2cG9ydC0+ZmNfZmxhZyAmIEZDX0FCT1JUX0RJU0NPVkVSWSkpIHsKLQkJCQkJdnBvcnQtPm51bV9kaXNjX25vZGVzID0gMDsKLQkJCQkJLyogZ28gdGhydSBOUFIgbGlzdCwgaXNzdWUgRUxTIFBMT0dJcyAqLwotCQkJCQlpZiAodnBvcnQtPmZjX25wcl9jbnQpCi0JCQkJCQlscGZjX2Vsc19kaXNjX3Bsb2dpKHZwb3J0KTsKLQotCQkJCQlpZiAoIXZwb3J0LT5udW1fZGlzY19ub2RlcykgewotCQkJCQkJc3Bpbl9sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKLQkJCQkJCXZwb3J0LT5mY19mbGFnICY9Ci0JCQkJCQkJfkZDX05ESVNDX0FDVElWRTsKLQkJCQkJCXNwaW5fdW5sb2NrX2lycSgKLQkJCQkJCQlzaG9zdC0+aG9zdF9sb2NrKTsKLQkJCQkJCWxwZmNfY2FuX2Rpc2N0bW8odnBvcnQpOwotCQkJCQl9Ci0JCQkJfQotCQkJCXZwb3J0LT5wb3J0X3N0YXRlID0gTFBGQ19WUE9SVF9SRUFEWTsKLQkJCX0gZWxzZSB7Ci0JCQkJbHBmY19yc2NuX2Rpc2ModnBvcnQpOwotCQkJfQotCQl9Ci0JfQogb3V0OgogCWxwZmNfZWxzX2ZyZWVfaW9jYihwaGJhLCBjbWRpb2NiKTsKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19pc3N1ZV9lbHNfYWRpc2M6IElzc3VlIGFuIGFkZHJlc3MgZGlzY292ZXIgaW9jYiB0byBhbiBub2RlIG9uIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICogQHJldHJ5OiBudW1iZXIgb2YgcmV0cmllcyB0byB0aGUgY29tbWFuZCBJT0NCLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgYW4gQWRkcmVzcyBEaXNjb3ZlciAoQURJU0MpIGZvciBhbiBAbmRscCBvbiBhCisgKiBAdnBvcnQuIEl0IHByZXBhcmVzIHRoZSBwYXlsb2FkIG9mIHRoZSBBRElTQyBFTFMgY29tbWFuZCwgdXBkYXRlcyB0aGUKKyAqIGFuZCBzdGF0ZXMgb2YgdGhlIG5kbHAsIGFuZCBpbnZva2VzIHRoZSBscGZjX3NsaV9pc3N1ZV9pb2NiKCkgcm91dGluZQorICogdG8gaXNzdWUgdGhlIEFESVNDIEVMUyBjb21tYW5kLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQURJU0MgRUxTIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIHN1Y2Nlc3NmdWxseSBpc3N1ZWQgYWRpc2MKKyAqICAgMSAtIGZhaWxlZCB0byBpc3N1ZSBhZGlzYworICoqLwogaW50CiBscGZjX2lzc3VlX2Vsc19hZGlzYyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwLAogCQkgICAgIHVpbnQ4X3QgcmV0cnkpCkBAIC0xNDM3LDYgKzE4MjcsMTggQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2NtcGxfZWxzX2xvZ286IENvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGxvZ28uCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQHJzcGlvY2I6IHBvaW50ZXIgdG8gbHBmYyByZXNwb25zZSBpb2NiIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgY29tcGxldGlvbiBmdW5jdGlvbiBmb3IgaXNzdWluZyB0aGUgRUxTIExvZ291dCAoTE9HTykKKyAqIGNvbW1hbmQuIElmIG5vIGVycm9yIHN0YXR1cyB3YXMgcmVwb3J0ZWQgZnJvbSB0aGUgTE9HTyByZXNwb25zZSwgdGhlCisgKiBzdGF0ZSBtYWNoaW5lIG9mIHRoZSBhc3NvY2lhdGVkIG5kbHAgc2hhbGwgYmUgaW52b2tlZCBmb3IgdHJhbnNpdGlvbiB3aXRoCisgKiByZXNwZWN0IHRvIE5MUF9FVlRfQ01QTF9MT0dPIGV2ZW50LiBPdGhlcndpc2UsIGlmIGVycm9yIHN0YXR1cyB3YXMgcmVwb3J0ZWQsCisgKiB0aGUgbHBmY19lbHNfcmV0cnkoKSByb3V0aW5lIHdpbGwgYmUgaW52b2tlZCB0byByZXRyeSB0aGUgTE9HTyBjb21tYW5kLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfY21wbF9lbHNfbG9nbyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgICBzdHJ1Y3QgbHBmY19pb2NicSAqcnNwaW9jYikKQEAgLTE1MDIsNiArMTkwNCwyNiBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX2lzc3VlX2Vsc19sb2dvOiBJc3N1ZSBhIGxvZ28gdG8gYW4gbm9kZSBvbiBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqIEByZXRyeTogbnVtYmVyIG9mIHJldHJpZXMgdG8gdGhlIGNvbW1hbmQgSU9DQi4KKyAqCisgKiBUaGlzIHJvdXRpbmUgY29uc3RydWN0cyBhbmQgaXNzdWVzIGFuIEVMUyBMb2dvdXQgKExPR08pIGlvY2IgY29tbWFuZAorICogdG8gYSByZW1vdGUgbm9kZSwgcmVmZXJyZWQgYnkgYW4gQG5kbHAgb24gYSBAdnBvcnQuIEl0IGNvbnN0cnVjdHMgdGhlCisgKiBwYXlsb2FkIG9mIHRoZSBJT0NCLCBwcm9wZXJseSBzZXRzIHVwIHRoZSBAbmRscCBzdGF0ZSwgYW5kIGludm9rZXMgdGhlCisgKiBscGZjX3NsaV9pc3N1ZV9pb2NiKCkgcm91dGluZSB0byBzZW5kIG91dCB0aGUgTE9HTyBFTFMgY29tbWFuZC4KKyAqCisgKiBOb3RlIHRoYXQsIGluIGxwZmNfcHJlcF9lbHNfaW9jYigpIHJvdXRpbmUsIHRoZSByZWZlcmVuY2UgY291bnQgb2YgbmRscAorICogd2lsbCBiZSBpbmNyZW1lbnRlZCBieSAxIGZvciBob2xkaW5nIHRoZSBuZGxwIGFuZCB0aGUgcmVmZXJlbmNlIHRvIG5kbHAKKyAqIHdpbGwgYmUgc3RvcmVkIGludG8gdGhlIGNvbnRleHQxIGZpZWxkIG9mIHRoZSBJT0NCIGZvciB0aGUgY29tcGxldGlvbgorICogY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIExPR08gRUxTIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIHN1Y2Nlc3NmdWxseSBpc3N1ZWQgbG9nbworICogICAxIC0gZmFpbGVkIHRvIGlzc3VlIGxvZ28KKyAqKi8KIGludAogbHBmY19pc3N1ZV9lbHNfbG9nbyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwLAogCQkgICAgdWludDhfdCByZXRyeSkKQEAgLTE1NjMsNiArMTk4NSwyMiBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfY21wbF9lbHNfY21kOiBDb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBnZW5lcmljIGVscyBjb21tYW5kLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEByc3Bpb2NiOiBwb2ludGVyIHRvIGxwZmMgcmVzcG9uc2UgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgYSBnZW5lcmljIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIEVMUyBjb21tYW5kcy4KKyAqIFNwZWNpZmljYWxseSwgaXQgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybQorICogYW55IGNvbW1hbmQgc3BlY2lmaWMgb3BlcmF0aW9ucy4gSXQgaXMgY3VycmVudGx5IHVzZWQgYnkgdGhlIEVMUyBjb21tYW5kCisgKiBpc3N1aW5nIHJvdXRpbmVzIGZvciB0aGUgRUxTIFN0YXRlIENoYW5nZSAgUmVxdWVzdCAoU0NSKSwKKyAqIGxwZmNfaXNzdWVfZWxzX3NjcigpLCBhbmQgdGhlIEVMUyBGaWJyZSBDaGFubmVsIEFkZHJlc3MgUmVzb2x1dGlvbgorICogUHJvdG9jb2wgUmVzcG9uc2UgKEZBUlBSKSByb3V0aW5lLCBscGZjX2lzc3VlX2Vsc19mYXJwcigpLiBPdGhlciB0aGFuCisgKiBjZXJ0YWluIGRlYnVnIGxvZ2dpbmdzLCB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHNpbXBseSBpbnZva2VzIHRoZQorICogbHBmY19lbHNfY2hrX2xhdHQoKSByb3V0aW5lIHRvIGNoZWNrIHdoZXRoZXIgbGluayB3ZW50IGRvd24gZHVyaW5nIHRoZQorICogZGlzY292ZXJ5IHByb2Nlc3MuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19jbWQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJICBzdHJ1Y3QgbHBmY19pb2NicSAqcnNwaW9jYikKQEAgLTE1ODcsNiArMjAyNSwyOCBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX2lzc3VlX2Vsc19zY3I6IElzc3VlIGEgc2NyIHRvIGFuIG5vZGUgb24gYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbnBvcnRpZDogTl9Qb3J0IGlkZW50aWZpZXIgdG8gdGhlIHJlbW90ZSBub2RlLgorICogQHJldHJ5OiBudW1iZXIgb2YgcmV0cmllcyB0byB0aGUgY29tbWFuZCBJT0NCLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgYSBTdGF0ZSBDaGFuZ2UgUmVxdWVzdCAoU0NSKSB0byBhIGZhYnJpYyBub2RlCisgKiBvbiBhIEB2cG9ydC4gVGhlIHJlbW90ZSBub2RlIEBucG9ydGlkIGlzIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi4gSXQKKyAqIGZpcnN0IHNlYXJjaCB0aGUgQHZwb3J0IG5vZGUgbGlzdCB0byBmaW5kIHRoZSBtYXRjaGluZyBuZGxwLiBJZiBubyBzdWNoCisgKiBuZGxwIGlzIGZvdW5kLCBhIG5ldyBuZGxwIHNoYWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgKFNDUikgcHVycG9zZS4gQW4KKyAqIElPQ0IgaXMgYWxsb2NhdGVkLCBwYXlsb2FkIHByZXBhcmVkLCBhbmQgdGhlIGxwZmNfc2xpX2lzc3VlX2lvY2IoKQorICogcm91dGluZSBpcyBpbnZva2VkIHRvIHNlbmQgdGhlIFNDUiBJT0NCLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgU0NSIEVMUyBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzZnVsbHkgaXNzdWVkIHNjciBjb21tYW5kCisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgc2NyIGNvbW1hbmQKKyAqKi8KIGludAogbHBmY19pc3N1ZV9lbHNfc2NyKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWludDMyX3QgbnBvcnRpZCwgdWludDhfdCByZXRyeSkKIHsKQEAgLTE2NTksNiArMjExOSwyOCBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfaXNzdWVfZWxzX2ZhcnByOiBJc3N1ZSBhIGZhcnAgdG8gYW4gbm9kZSBvbiBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBucG9ydGlkOiBOX1BvcnQgaWRlbnRpZmllciB0byB0aGUgcmVtb3RlIG5vZGUuCisgKiBAcmV0cnk6IG51bWJlciBvZiByZXRyaWVzIHRvIHRoZSBjb21tYW5kIElPQ0IuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlcyBhIEZpYnJlIENoYW5uZWwgQWRkcmVzcyBSZXNvbHV0aW9uIFJlc3BvbnNlCisgKiAoRkFSUFIpIHRvIGEgbm9kZSBvbiBhIHZwb3J0LiBUaGUgcmVtb3RlIG5vZGUgTl9Qb3J0IGlkZW50aWZpZXIgKEBucG9ydGlkKQorICogaXMgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uLiBJdCBmaXJzdCBzZWFyY2ggdGhlIEB2cG9ydCBub2RlIGxpc3QgdG8gZmluZAorICogdGhlIG1hdGNoaW5nIG5kbHAuIElmIG5vIHN1Y2ggbmRscCBpcyBmb3VuZCwgYSBuZXcgbmRscCBzaGFsbCBiZSBjcmVhdGVkCisgKiBmb3IgdGhpcyAoRkFSUFIpIHB1cnBvc2UuIEFuIElPQ0IgaXMgYWxsb2NhdGVkLCBwYXlsb2FkIHByZXBhcmVkLCBhbmQgdGhlCisgKiBscGZjX3NsaV9pc3N1ZV9pb2NiKCkgcm91dGluZSBpcyBpbnZva2VkIHRvIHNlbmQgdGhlIEZBUlBSIEVMUyBjb21tYW5kLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgUEFSUFIgRUxTIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgZmFycHIgY29tbWFuZAorICogICAxIC0gRmFpbGVkIHRvIGlzc3VlIGZhcnByIGNvbW1hbmQKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfaXNzdWVfZWxzX2ZhcnByKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWludDMyX3QgbnBvcnRpZCwgdWludDhfdCByZXRyeSkKIHsKQEAgLTE3NDgsNiArMjIzMCwxOCBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfY2FuY2VsX3JldHJ5X2RlbGF5X3RtbzogQ2FuY2VsIHRoZSB0aW1lciB3aXRoIGRlbGF5ZWQgaW9jYi1jbWQgcmV0cnkuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG5scDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgY2FuY2VscyB0aGUgdGltZXIgd2l0aCBhIGRlbGF5ZWQgSU9DQi1jb21tYW5kIHJldHJ5IGZvcgorICogYSBAdnBvcnQncyBAbmRscC4gSXQgc3RvcHMgdGhlIHRpbWVyIGZvciB0aGUgZGVsYXllZCBmdW5jdGlvbiByZXRyaWFsIGFuZAorICogcmVtb3ZlcyB0aGUgRUxTIHJldHJ5IGV2ZW50IGlmIGl0IHByZXNlbnRzLiBJbiBhZGRpdGlvbiwgaWYgdGhlCisgKiBOTFBfTlBSXzJCX0RJU0MgYml0IGlzIHNldCBpbiB0aGUgQG5scCdzIG5scF9mbGFnIGJpdG1hcCwgQURJU0MgSU9DQgorICogY29tbWFuZHMgYXJlIHNlbnQgZm9yIHRoZSBAdnBvcnQncyBub2RlcyB0aGF0IHJlcXVpcmUgaXNzdWluZyBkaXNjb3ZlcnkKKyAqIEFESVNDLgorICoqLwogdm9pZAogbHBmY19jYW5jZWxfcmV0cnlfZGVsYXlfdG1vKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5scCkKIHsKQEAgLTE3NzUsMjUgKzIyNjksMzYgQEAKIAkJCWlmICh2cG9ydC0+cG9ydF9zdGF0ZSA8IExQRkNfVlBPUlRfUkVBRFkpIHsKIAkJCQkvKiBDaGVjayBpZiB0aGVyZSBhcmUgbW9yZSBBRElTQ3MgdG8gYmUgc2VudCAqLwogCQkJCWxwZmNfbW9yZV9hZGlzYyh2cG9ydCk7Ci0JCQkJaWYgKCh2cG9ydC0+bnVtX2Rpc2Nfbm9kZXMgPT0gMCkgJiYKLQkJCQkgICAgKHZwb3J0LT5mY19ucHJfY250KSkKLQkJCQkJbHBmY19lbHNfZGlzY19wbG9naSh2cG9ydCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBtb3JlIFBMT0dJcyB0byBiZSBzZW50ICovCiAJCQkJbHBmY19tb3JlX3Bsb2dpKHZwb3J0KTsKLQkJCX0KLQkJCWlmICh2cG9ydC0+bnVtX2Rpc2Nfbm9kZXMgPT0gMCkgewotCQkJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7Ci0JCQkJdnBvcnQtPmZjX2ZsYWcgJj0gfkZDX05ESVNDX0FDVElWRTsKLQkJCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7Ci0JCQkJbHBmY19jYW5fZGlzY3Rtbyh2cG9ydCk7Ci0JCQkJbHBmY19lbmRfcnNjbih2cG9ydCk7CisJCQkJaWYgKHZwb3J0LT5udW1fZGlzY19ub2RlcyA9PSAwKSB7CisJCQkJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCQkJCXZwb3J0LT5mY19mbGFnICY9IH5GQ19ORElTQ19BQ1RJVkU7CisJCQkJCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKKwkJCQkJbHBmY19jYW5fZGlzY3Rtbyh2cG9ydCk7CisJCQkJCWxwZmNfZW5kX3JzY24odnBvcnQpOworCQkJCX0KIAkJCX0KIAkJfQogCX0KIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19lbHNfcmV0cnlfZGVsYXk6IFRpbWVyIGZ1bmN0aW9uIHdpdGggYSBuZGxwIGRlbGF5ZWQgZnVuY3Rpb24gdGltZXIuCisgKiBAcHRyOiBob2xkZXIgZm9yIHRoZSBwb2ludGVyIHRvIHRoZSB0aW1lciBmdW5jdGlvbiBhc3NvY2lhdGVkIGRhdGEgKG5kbHApLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyBpbnZva2VkIGJ5IHRoZSBuZGxwIGRlbGF5ZWQtZnVuY3Rpb24gdGltZXIgdG8gY2hlY2sKKyAqIHdoZXRoZXIgdGhlcmUgaXMgYW55IHBlbmRpbmcgRUxTIHJldHJ5IGV2ZW50KHMpIHdpdGggdGhlIG5vZGUuIElmIG5vdCwgaXQKKyAqIHNpbXBseSByZXR1cm5zLiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBFTFMgZGVsYXllZCBldmVudCwgaXQKKyAqIGFkZHMgdGhlIGRlbGF5ZWQgZXZlbnRzIHRvIHRoZSBIQkEgd29yayBsaXN0IGFuZCBpbnZva2VzIHRoZQorICogbHBmY193b3JrZXJfd2FrZV91cCgpIHJvdXRpbmUgdG8gd2FrZSB1cCB3b3JrZXIgdGhyZWFkIHRvIHByb2Nlc3MgdGhlCisgKiBldmVudC4gTm90ZSB0aGF0IGxwZmNfbmxwX2dldCgpIGlzIGNhbGxlZCBiZWZvcmUgcG9zdGluZyB0aGUgZXZlbnQgdG8KKyAqIHRoZSB3b3JrIGxpc3QgdG8gaG9sZCByZWZlcmVuY2UgY291bnQgb2YgbmRscCBzbyB0aGF0IGl0IGd1YXJhbnRlZXMgdGhlCisgKiByZWZlcmVuY2UgdG8gbmRscCB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHRoZSB3b3JrZXIgdGhyZWFkIGdldHMKKyAqIHRvIHRoZSBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIG5kbHAuCisgKiovCiB2b2lkCiBscGZjX2Vsc19yZXRyeV9kZWxheSh1bnNpZ25lZCBsb25nIHB0cikKIHsKQEAgLTE4MjIsNiArMjMyNywxNSBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yZXRyeV9kZWxheV9oYW5kbGVyOiBXb3JrIHRocmVhZCBoYW5kbGVyIGZvciBuZGxwIGRlbGF5ZWQgZnVuY3Rpb24uCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIHdvcmtlci10aHJlYWQgaGFuZGxlciBmb3IgcHJvY2Vzc2luZyB0aGUgQG5kbHAgZGVsYXllZAorICogZXZlbnQocyksIHBvc3RlZCBieSB0aGUgbHBmY19lbHNfcmV0cnlfZGVsYXkoKSByb3V0aW5lLiBJdCBzaW1wbHkgcmV0cmlldmVzCisgKiB0aGUgbGFzdCBFTFMgY29tbWFuZCBmcm9tIHRoZSBhc3NvY2lhdGVkIG5kbHAgYW5kIGludm9rZXMgdGhlIHByb3BlciBFTFMKKyAqIGZ1bmN0aW9uIGFjY29yZGluZyB0byB0aGUgZGVsYXllZCBFTFMgY29tbWFuZCB0byByZXRyeSB0aGUgY29tbWFuZC4KKyAqKi8KIHZvaWQKIGxwZmNfZWxzX3JldHJ5X2RlbGF5X2hhbmRsZXIoc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHApCiB7CkBAIC0xODg0LDYgKzIzOTgsMjcgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19lbHNfcmV0cnk6IE1ha2UgcmV0cnkgZGVjaXNpb24gb24gYW4gZWxzIGNvbW1hbmQgaW9jYi4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcnNwaW9jYjogcG9pbnRlciB0byBscGZjIHJlc3BvbnNlIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIG1ha2VzIGEgcmV0cnkgZGVjaXNpb24gb24gYW4gRUxTIGNvbW1hbmQgSU9DQiwgd2hpY2ggaGFzCisgKiBmYWlsZWQuIFRoZSBmb2xsb3dpbmcgRUxTIElPQ0JzIHVzZSB0aGlzIGZ1bmN0aW9uIGZvciByZXRyeWluZyB0aGUgY29tbWFuZAorICogd2hlbiBwcmV2aW91c2x5IGlzc3VlZCBjb21tYW5kIHJlc3BvbnNlZCB3aXRoIGVycm9yIHN0YXR1czogRkxPR0ksIFBMT0dJLAorICogUFJMSSwgQURJU0MsIExPR08sIGFuZCBGRElTQy4gQmFzZWQgb24gdGhlIEVMUyBjb21tYW5kIHR5cGUgYW5kIHRoZQorICogcmV0dXJuZWQgZXJyb3Igc3RhdHVzLCBpdCBtYWtlcyB0aGUgZGVjaXNpb24gd2hldGhlciBhIHJldHJ5IHNoYWxsIGJlCisgKiBpc3N1ZWQgZm9yIHRoZSBjb21tYW5kLCBhbmQgd2hldGhlciBhIHJldHJ5IHNoYWxsIGJlIG1hZGUgaW1tZWRpYXRlbHkgb3IKKyAqIGRlbGF5ZWQuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIGNvcnJlc3BvbmRpbmcgRUxTIGNvbW1hbmQgaXNzdWluZy1mdW5jdGlvbgorICogaXMgY2FsbGVkIHRvIHJldHJ5IHRoZSBjb21tYW5kLiBJbiB0aGUgbGF0ZXIgY2FzZSwgdGhlIEVMUyBjb21tYW5kIHNoYWxsCisgKiBiZSBwb3N0ZWQgdG8gdGhlIG5kbHAgZGVsYXllZCBldmVudCBhbmQgZGVsYXllZCBmdW5jdGlvbiB0aW1lciBzZXQgdG8gdGhlCisgKiBuZGxwIGZvciB0aGUgZGVsYXllZCBjb21tYW5kIGlzc3VzaW5nLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBObyByZXRyeSBvZiBlbHMgY29tbWFuZCBpcyBtYWRlCisgKiAgIDEgLSBJbW1lZGlhdGUgb3IgZGVsYXllZCByZXRyeSBvZiBlbHMgY29tbWFuZCBpcyBtYWRlCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yZXRyeShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCSAgICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqcnNwaW9jYikKQEAgLTIwNTEsNyArMjU4Niw3IEBACiAJCQkgIChzdGF0LnVuLmIubHNSanRSc25Db2RlRXhwID09IExTRVhQX0lOVkFMSURfTlBPUlRfSUQpKQogCQkJICApIHsKIAkJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0VMUywKLQkJCQkJCSAiMDEyMyBGRElTQyBGYWlsZWQgKHgleCkuICIKKwkJCQkJCSAiMDEyMiBGRElTQyBGYWlsZWQgKHgleCkuICIKIAkJCQkJCSAiRmFicmljIERldGVjdGVkIEJhZCBXV05cbiIsCiAJCQkJCQkgc3RhdC51bi5sc1JqdEVycm9yKTsKIAkJCQlscGZjX3Zwb3J0X3NldF9zdGF0ZSh2cG9ydCwKQEAgLTIxODIsMTIgKzI3MTcsMjYgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19mcmVlX2RhdGE6IEZyZWUgbHBmYyBkbWEgYnVmZmVyIGFuZCBkYXRhIHN0cnVjdHVyZSB3aXRoIGFuIGlvY2IuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBidWZfcHRyMTogcG9pbnRlciB0byB0aGUgbHBmYyBETUEgYnVmZmVyIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSByZWxlYXNlcyB0aGUgbHBmYyBETUEgKERpcmVjdCBNZW1vcnkgQWNjZXNzKSBidWZmZXIocykKKyAqIGFzc29jaWF0ZWQgd2l0aCBhIGNvbW1hbmQgSU9DQiBiYWNrIHRvIHRoZSBscGZjIERNQSBidWZmZXIgcG9vbC4gSXQgZmlyc3QKKyAqIGNoZWNrcyB0byBzZWUgd2hldGhlciB0aGVyZSBpcyBhIGxwZmMgRE1BIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhlCisgKiByZXNwb25zZSBvZiB0aGUgY29tbWFuZCBJT0NCLiBJZiBzbywgaXQgd2lsbCBiZSByZWxlYXNlZCBiZWZvcmUgcmVsZWFzaW5nCisgKiB0aGUgbHBmYyBETUEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgSU9DQiBpdHNlbGYuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSByZWxlYXNlZCBscGZjIERNQSBidWZmZXIgKGN1cnJlbnRseSwgYWx3YXlzIHJldHVybiAwKQorICoqLwogc3RhdGljIGludAogbHBmY19lbHNfZnJlZV9kYXRhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfZG1hYnVmICpidWZfcHRyMSkKIHsKIAlzdHJ1Y3QgbHBmY19kbWFidWYgKmJ1Zl9wdHI7CiAKLQkvKiBGcmVlIHRoZSByZXNwb25zZSBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZC4gICovCisJLyogRnJlZSB0aGUgcmVzcG9uc2UgYmVmb3JlIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQuICovCiAJaWYgKCFsaXN0X2VtcHR5KCZidWZfcHRyMS0+bGlzdCkpIHsKIAkJbGlzdF9yZW1vdmVfaGVhZCgmYnVmX3B0cjEtPmxpc3QsIGJ1Zl9wdHIsCiAJCQkJIHN0cnVjdCBscGZjX2RtYWJ1ZiwKQEAgLTIyMDAsNiArMjc0OSwxOCBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfZWxzX2ZyZWVfYnBsOiBGcmVlIGxwZmMgZG1hIGJ1ZmZlciBhbmQgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBicGwuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBidWZfcHRyOiBwb2ludGVyIHRvIHRoZSBscGZjIGRtYSBidWZmZXIgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHJlbGVhc2VzIHRoZSBscGZjIERpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIGJ1ZmZlcgorICogYXNzb2NpYXRlZCB3aXRoIGEgQnVmZmVyIFBvaW50ZXIgTGlzdCAoQlBMKSBiYWNrIHRvIHRoZSBscGZjIERNQSBidWZmZXIKKyAqIHBvb2wuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSByZWxlYXNlZCBscGZjIERNQSBidWZmZXIgKGN1cnJlbnRseSwgYWx3YXlzIHJldHVybiAwKQorICoqLwogc3RhdGljIGludAogbHBmY19lbHNfZnJlZV9icGwoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19kbWFidWYgKmJ1Zl9wdHIpCiB7CkBAIC0yMjA4LDYgKzI3NjksMzMgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19mcmVlX2lvY2I6IEZyZWUgYSBjb21tYW5kIGlvY2IgYW5kIGl0cyBhc3NvY2lhdGVkIHJlc291cmNlcy4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGVsc2lvY2I6IHBvaW50ZXIgdG8gbHBmYyBlbHMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBmcmVlcyBhIGNvbW1hbmQgSU9DQiBhbmQgaXRzIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBUaGUKKyAqIGNvbW1hbmQgSU9DQiBkYXRhIHN0cnVjdHVyZSBjb250YWlucyB0aGUgcmVmZXJlbmNlIHRvIHZhcmlvdXMgYXNzb2NpYXRlZAorICogcmVzb3VyY2VzLCB0aGVzZSBmaWVsZHMgbXVzdCBiZSBzZXQgdG8gTlVMTCBpZiB0aGUgYXNzb2NpYXRlZCByZWZlcmVuY2UKKyAqIG5vdCBwcmVzZW50OgorICogICBjb250ZXh0MSAtIHJlZmVyZW5jZSB0byBuZGxwCisgKiAgIGNvbnRleHQyIC0gcmVmZXJlbmNlIHRvIGNtZAorICogICBjb250ZXh0Mi0+bmV4dCAtIHJlZmVyZW5jZSB0byByc3AKKyAqICAgY29udGV4dDMgLSByZWZlcmVuY2UgdG8gYnBsCisgKgorICogSXQgZmlyc3QgcHJvcGVybHkgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGhlbGQgb24gbmRscCBmb3IgdGhlCisgKiBJT0NCIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24uIElmIExQRkNfREVMQVlfTUVNX0ZSRUUgZmxhZyBpcyBub3QKKyAqIHNldCwgaXQgaW52b2tlcyB0aGUgbHBmY19lbHNfZnJlZV9kYXRhKCkgcm91dGluZSB0byByZWxlYXNlIHRoZSBEaXJlY3QKKyAqIE1lbW9yeSBBY2Nlc3MgKERNQSkgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggdGhlIElPQ0IuIE90aGVyd2lzZSwgaXQKKyAqIGFkZHMgdGhlIERNQSBidWZmZXIgdGhlIEBwaGJhIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZGVsYXllZCByZWxlYXNlLgorICogSWYgcmVmZXJlbmNlIHRvIHRoZSBCdWZmZXIgUG9pbnRlciBMaXN0IChCUEwpIGlzIHByZXNlbnQsIHRoZQorICogbHBmY19lbHNfZnJlZV9icGwoKSByb3V0aW5lIGlzIGludm9rZWQgdG8gcmVsZWFzZSB0aGUgRE1BIG1lbW9yeQorICogYXNzb2NpYXRlZCB3aXRoIEJQTC4gRmluYWxseSwgdGhlIGxwZmNfc2xpX3JlbGVhc2VfaW9jYnEoKSByb3V0aW5lIGlzCisgKiBpbnZva2VkIHRvIHJlbGVhc2UgdGhlIElPQ0IgZGF0YSBzdHJ1Y3R1cmUgYmFjayB0byBAcGhiYSBJT0NCUSBsaXN0LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzIChjdXJyZW50bHksIGFsd2F5cyByZXR1cm4gMCkKKyAqKi8KIGludAogbHBmY19lbHNfZnJlZV9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmVsc2lvY2IpCiB7CkBAIC0yMjc0LDYgKzI4NjIsMjMgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2NtcGxfZWxzX2xvZ29fYWNjOiBDb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGxvZ28gYWNjIHJlc3BvbnNlLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEByc3Bpb2NiOiBwb2ludGVyIHRvIGxwZmMgcmVzcG9uc2UgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIExvZ291dCAoTE9HTykKKyAqIEFjY2VwdCAoQUNDKSBSZXNwb25zZSBFTFMgY29tbWFuZC4gVGhpcyByb3V0aW5lIGlzIGludm9rZWQgdG8gaW5kaWNhdGUKKyAqIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBMT0dPIHByb2Nlc3MuIEl0IGludm9rZXMgdGhlIGxwZmNfbmxwX25vdF91c2VkKCkgdG8KKyAqIHJlbGVhc2UgdGhlIG5kbHAgaWYgaXQgaGFzIHRoZSBsYXN0IHJlZmVyZW5jZSByZW1haW5pbmcgKHJlZmVyZW5jZSBjb3VudAorICogaXMgMSkuIElmIHN1Y2NlZWRlZCAobWVhbmluZyBuZGxwIHJlbGVhc2VkKSwgaXQgc2V0cyB0aGUgSU9DQiBjb250ZXh0MQorICogZmllbGQgdG8gTlVMTCB0byBpbmZvcm0gdGhlIGZvbGxvd2luZyBscGZjX2Vsc19mcmVlX2lvY2IoKSByb3V0aW5lIG5vCisgKiBuZGxwIHJlZmVyZW5jZSBjb3VudCBuZWVkcyB0byBiZSBkZWNyZW1lbnRlZC4gT3RoZXJ3aXNlLCB0aGUgbmRscAorICogcmVmZXJlbmNlIHVzZS1jb3VudCBzaGFsbCBiZSBkZWNyZW1lbnRlZCBieSB0aGUgbHBmY19lbHNfZnJlZV9pb2NiKCkKKyAqIHJvdXRpbmUuIEZpbmFsbHksIHRoZSBscGZjX2Vsc19mcmVlX2lvY2IoKSBpcyBpbnZva2VkIHRvIHJlbGVhc2UgdGhlCisgKiBJT0NCIGRhdGEgc3RydWN0dXJlLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfY21wbF9lbHNfbG9nb19hY2Moc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJICAgICAgIHN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQpAQCAtMjMxMSw2ICsyOTE2LDE5IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfbWJ4X2NtcGxfZGZsdF9ycGk6IENvbXBsZXRpb24gY2FsbGJrIGZ1bmMgZm9yIHVucmVnIGRmbHQgcnBpIG1ib3ggY21kLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcG1iOiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdW5yZWdpc3RlciBkZWZhdWx0CisgKiBSUEkgKFJlbW90ZSBQb3J0IEluZGV4KSBtYWlsYm94IGNvbW1hbmQgdG8gdGhlIEBwaGJhLiBJdCBzaW1wbHkgcmVsZWFzZXMKKyAqIHRoZSBhc3NvY2lhdGVkIGxwZmMgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgYnVmZmVyIGJhY2sgdG8gdGhlIHBvb2wgYW5kCisgKiBkZWNyZW1lbnRzIHRoZSBuZGxwIHJlZmVyZW5jZSBjb3VudCBoZWxkIGZvciB0aGlzIGNvbXBsZXRpb24gY2FsbGJhY2sKKyAqIGZ1bmN0aW9uLiBBZnRlciB0aGF0LCBpdCBpbnZva2VzIHRoZSBscGZjX25scF9ub3RfdXNlZCgpIHRvIGNoZWNrCisgKiB3aGV0aGVyIHRoZXJlIGlzIG9ubHkgb25lIHJlZmVyZW5jZSBsZWZ0IG9uIHRoZSBuZGxwLiBJZiBzbywgaXQgd2lsbAorICogcGVyZm9ybSBvbmUgbW9yZSBkZWNyZW1lbnQgYW5kIHRyaWdnZXIgdGhlIHJlbGVhc2Ugb2YgdGhlIG5kbHAuCisgKiovCiB2b2lkCiBscGZjX21ieF9jbXBsX2RmbHRfcnBpKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgTFBGQ19NQk9YUV90ICpwbWIpCiB7CkBAIC0yMzMyLDYgKzI5NTAsMjIgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19jbXBsX2Vsc19yc3A6IENvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGVscyByZXNwb25zZSBpb2NiIGNtZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcnNwaW9jYjogcG9pbnRlciB0byBscGZjIHJlc3BvbnNlIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBFTFMgUmVzcG9uc2UgSU9DQgorICogY29tbWFuZC4gSW4gbm9ybWFsIGNhc2UsIHRoaXMgY2FsbGJhY2sgZnVuY3Rpb24ganVzdCBwcm9wZXJseSBzZXRzIHRoZQorICogbmxwX2ZsYWcgYml0bWFwIGluIHRoZSBuZGxwIGRhdGEgc3RydWN0dXJlLCBpZiB0aGUgbWJveCBjb21tYW5kIHJlZmVyZW5jZQorICogZmllbGQgaW4gdGhlIGNvbW1hbmQgSU9DQiBpcyBub3QgTlVMTCwgdGhlIHJlZmVycmVkIG1haWxib3ggY29tbWFuZCB3aWxsCisgKiBiZSBzZW5kIG91dCwgYW5kIHRoZW4gaW52b2tlcyB0aGUgbHBmY19lbHNfZnJlZV9pb2NiKCkgcm91dGluZSB0byByZWxlYXNlCisgKiB0aGUgSU9DQi4gVW5kZXIgZXJyb3IgY29uZGl0aW9ucywgc3VjaCBhcyB3aGVuIGEgTFNfUkpUIGlzIHJldHVybmVkIG9yIGEKKyAqIGxpbmsgZG93biBldmVudCBvY2N1cnJlZCBkdXJpbmcgdGhlIGRpc2NvdmVyeSwgdGhlIGxwZmNfbmxwX25vdF91c2VkKCkKKyAqIHJvdXRpbmUgc2hhbGwgYmUgaW52b2tlZCB0cnlpbmcgdG8gcmVsZWFzZSB0aGUgbmRscCBpZiBubyBvdGhlciB0aHJlYWRzCisgKiBhcmUgY3VycmVudGx5IHJlZmVycmluZyBpdC4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2NtcGxfZWxzX3JzcChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgIHN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQpAQCAtMjQ4Nyw2ICszMTIxLDMxIEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfZWxzX3JzcF9hY2M6IFByZXBhcmUgYW5kIGlzc3VlIGFuIGFjYyByZXNwb25zZSBpb2NiIGNvbW1hbmQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQGZsYWc6IHRoZSBlbHMgY29tbWFuZCBjb2RlIHRvIGJlIGFjY2VwdGVkLgorICogQG9sZGlvY2I6IHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbWJveDogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgYW5kIGlzc3VlcyBhbiBBY2NlcHQgKEFDQykgcmVzcG9uc2UgSU9DQgorICogY29tbWFuZC4gSXQgdXNlcyB0aGUgQGZsYWcgdG8gcHJvcGVybHkgc2V0IHVwIHRoZSBJT0NCIGZpZWxkIGZvciB0aGUKKyAqIHNwZWNpZmljIEFDQyByZXNwb25zZSBjb21tYW5kIHRvIGJlIGlzc3VlZCBhbmQgaW52b2tlcyB0aGUKKyAqIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSByb3V0aW5lIHRvIHNlbmQgb3V0IEFDQyByZXNwb25zZSBJT0NCLiBJZiBhCisgKiBAbWJveCBwb2ludGVyIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCBiZSBwdXQgaW50byB0aGUgY29udGV4dF91bi5tYm94CisgKiBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gdG8gaXNzdWUgdGhlCisgKiBtYWlsYm94IGNvbW1hbmQgdG8gdGhlIEhCQSBsYXRlciB3aGVuIGNhbGxiYWNrIGlzIGludm9rZWQuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIEVMUyBJT0NCIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgYWNjIHJlc3BvbnNlCisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgYWNjIHJlc3BvbnNlCisgKiovCiBpbnQKIGxwZmNfZWxzX3JzcF9hY2Moc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCB1aW50MzJfdCBmbGFnLAogCQkgc3RydWN0IGxwZmNfaW9jYnEgKm9sZGlvY2IsIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwLApAQCAtMjYwMSw2ICszMjYwLDI4IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcnNwX3JlamVjdDogUHJvcGFyZSBhbmQgaXNzdWUgYSByanQgcmVzcG9uc2UgaW9jYiBjb21tYW5kLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcmVqZWN0RXJyb3I6CisgKiBAb2xkaW9jYjogcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBtYm94OiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyBhbmQgaXNzdWUgYW4gUmVqZWN0IChSSlQpIHJlc3BvbnNlIElPQ0IKKyAqIGNvbW1hbmQuIElmIGEgQG1ib3ggcG9pbnRlciBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgYmUgcHV0IGludG8gdGhlCisgKiBjb250ZXh0X3VuLm1ib3ggZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uCisgKiB0byBpc3N1ZSB0byB0aGUgSEJBIGxhdGVyLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgcmVqZWN0IHJlc3BvbnNlIEVMUyBJT0NCIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgcmVqZWN0IHJlc3BvbnNlCisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgcmVqZWN0IHJlc3BvbnNlCisgKiovCiBpbnQKIGxwZmNfZWxzX3JzcF9yZWplY3Qoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCB1aW50MzJfdCByZWplY3RFcnJvciwKIAkJICAgIHN0cnVjdCBscGZjX2lvY2JxICpvbGRpb2NiLCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKQEAgLTI2NjAsNiArMzM0MSwyNSBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfZWxzX3JzcF9hZGlzY19hY2M6IFByZXBhcmUgYW5kIGlzc3VlIGFjYyByZXNwb25zZSB0byBhZGlzYyBpb2NiIGNtZC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG9sZGlvY2I6IHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIGFuZCBpc3N1ZXMgYW4gQWNjZXB0IChBQ0MpIHJlc3BvbnNlIHRvIEFkZHJlc3MKKyAqIERpc2NvdmVyIChBRElTQykgRUxTIGNvbW1hbmQuIEl0IHNpbXBseSBwcmVwYXJlcyB0aGUgcGF5bG9hZCBvZiB0aGUgSU9DQgorICogYW5kIGludm9rZXMgdGhlIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSByb3V0aW5lIHRvIHNlbmQgb3V0IHRoZSBjb21tYW5kLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQURJU0MgQWNjZXB0IHJlc3BvbnNlIEVMUyBJT0NCIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgYWNjIGFkaXNjIHJlc3BvbnNlCisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgYWRpc2MgYWNjIHJlc3BvbnNlCisgKiovCiBpbnQKIGxwZmNfZWxzX3JzcF9hZGlzY19hY2Moc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19pb2NicSAqb2xkaW9jYiwKIAkJICAgICAgIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMjcxNiw2ICszNDE2LDI1IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcnNwX3BybGlfYWNjOiBQcmVwYXJlIGFuZCBpc3N1ZSBhY2MgcmVzcG9uc2UgdG8gcHJsaSBpb2NiIGNtZC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG9sZGlvY2I6IHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIGFuZCBpc3N1ZXMgYW4gQWNjZXB0IChBQ0MpIHJlc3BvbnNlIHRvIFByb2Nlc3MKKyAqIExvZ2luIChQUkxJKSBFTFMgY29tbWFuZC4gSXQgc2ltcGx5IHByZXBhcmVzIHRoZSBwYXlsb2FkIG9mIHRoZSBJT0NCCisgKiBhbmQgaW52b2tlcyB0aGUgbHBmY19zbGlfaXNzdWVfaW9jYigpIHJvdXRpbmUgdG8gc2VuZCBvdXQgdGhlIGNvbW1hbmQuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBQUkxJIEFjY2VwdCByZXNwb25zZSBFTFMgSU9DQiBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzZnVsbHkgaXNzdWVkIGFjYyBwcmxpIHJlc3BvbnNlCisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgYWNjIHBybGkgcmVzcG9uc2UKKyAqKi8KIGludAogbHBmY19lbHNfcnNwX3BybGlfYWNjKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKm9sZGlvY2IsCiAJCSAgICAgIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMjc5NSw2ICszNTE0LDMyIEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcnNwX3JuaWRfYWNjOiBJc3N1ZSBybmlkIGFjYyByZXNwb25zZSBpb2NiIGNvbW1hbmQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBmb3JtYXQ6IHJuaWQgY29tbWFuZCBmb3JtYXQuCisgKiBAb2xkaW9jYjogcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXNzdWVzIGEgUmVxdWVzdCBOb2RlIElkZW50aWZpY2F0aW9uIERhdGEgKFJOSUQpIEFjY2VwdAorICogKEFDQykgcmVzcG9uc2UuIEl0IGNvbnN0cnVjdHMgdGhlIFJOSUQgQUNDIHJlc3BvbnNlIGNvbW1hbmQgYWNjb3JkaW5nIHRvCisgKiB0aGUgcHJvcGVyIEBmb3JtYXQgYW5kIHRoZW4gY2FsbHMgdGhlIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSByb3V0aW5lIHRvCisgKiBpc3N1ZSB0aGUgcmVzcG9uc2UuIE5vdGUgdGhhdCB0aGlzIGNvbW1hbmQgZG9lcyBub3QgbmVlZCB0byBob2xkIHRoZSBuZGxwCisgKiByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBjYWxsYmFjay4gU28sIHRoZSBuZGxwIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBieQorICogdGhlIGxwZmNfcHJlcF9lbHNfaW9jYigpIHJvdXRpbmUgaXMgcHV0IGJhY2sgYW5kIHRoZSBjb250ZXh0MSBmaWVsZCBvZgorICogSU9DQiBpcyBzZXQgdG8gTlVMTCB0byBpbmRpY2F0ZSB0byB0aGUgbHBmY19lbHNfZnJlZV9pb2NiKCkgcm91dGluZSB0aGF0CisgKiB0aGVyZSBpcyBubyBuZGxwIHJlZmVyZW5jZSBhdmFpbGFibGUuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uLiBIb3dldmVyLCBmb3IgdGhlIFJOSUQgQWNjZXB0IFJlc3BvbnNlIEVMUyBjb21tYW5kLAorICogdGhpcyBpcyB1bmRvbmUgbGF0ZXIgYnkgdGhpcyByb3V0aW5lIGFmdGVyIHRoZSBJT0NCIGlzIGFsbG9jYXRlZC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjY2Vzc2Z1bGx5IGlzc3VlZCBhY2Mgcm5pZCByZXNwb25zZQorICogICAxIC0gRmFpbGVkIHRvIGlzc3VlIGFjYyBybmlkIHJlc3BvbnNlCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yc3Bfcm5pZF9hY2Moc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCB1aW50OF90IGZvcm1hdCwKIAkJICAgICAgc3RydWN0IGxwZmNfaW9jYnEgKm9sZGlvY2IsIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMjg3NSw2ICszNjIwLDI1IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfZGlzY19hZGlzYzogSXNzdWUgcmVtYWluaW5nIGFkaXNjIGlvY2JzIHRvIG5wciBub2RlcyBvZiBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXNzdWVzIEFkZHJlc3MgRGlzY292ZXIgKEFESVNDKSBFTFMgY29tbWFuZHMgdG8gdGhvc2UKKyAqIE5fUG9ydHMgd2hpY2ggYXJlIGluIG5vZGUgcG9ydCByZWNvdmVyeSBzdGF0ZSBhbmQgQURJU0MgaGFzIG5vdCBiZWVuIGlzc3VlZAorICogZm9yIHRoZSBAdnBvcnQuIEVhY2ggdGltZSBhbiBFTFMgQURJU0MgSU9DQiBpcyBpc3N1ZWQgYnkgaW52b2tpbmcgdGhlCisgKiBscGZjX2lzc3VlX2Vsc19hZGlzYygpIHJvdXRpbmUsIHRoZSBwZXIgQHZwb3J0IG51bWJlciBvZiBkaXNjb3ZlciBjb3VudAorICogKG51bV9kaXNjX25vZGVzKSBzaGFsbCBiZSBpbmNyZW1lbnRlZC4gSWYgdGhlIG51bV9kaXNjX25vZGVzIHJlYWNoZXMgYQorICogcHJlLWNvbmZpZ3VyZWQgdGhyZXNob2xkIChjZmdfZGlzY292ZXJ5X3RocmVhZHMpLCB0aGUgQHZwb3J0IGZjX2ZsYWcgd2lsbAorICogYmUgbWFya2VkIHdpdGggRkNfTkxQX01PUkUgYml0IGFuZCB0aGUgcHJvY2VzcyBvZiBpc3N1aW5nIHJlbWFpbmluZyBBRElTQworICogSU9DQnMgcXVpdCBmb3IgbGF0ZXIgcGljayB1cC4gT24gdGhlIG90aGVyIGhhbmQsIGFmdGVyIHdhbGtpbmcgdGhyb3VnaAorICogYWxsIHRoZSBuZGxwcyB3aXRoIHRoZSBAdnBvcnQgYW5kIHRoZXJlIGlzIG5vbmUgQURJU0MgSU9DQiBpc3N1ZWQsIHRoZQorICogQHZwb3J0IGZjX2ZsYWcgc2hhbGwgYmUgY2xlYXJlZCB3aXRoIEZDX05MUF9NT1JFIGJpdCBpbmRpY2F0aW5nIHRoZXJlIGlzCisgKiBubyBtb3JlIEFESVNDIG5lZWQgdG8gYmUgc2VudC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAgVGhlIG51bWJlciBvZiBOX1BvcnRzIHdpdGggYWRpc2MgaXNzdWVkLgorICoqLwogaW50CiBscGZjX2Vsc19kaXNjX2FkaXNjKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKQEAgLTI5MTQsNiArMzY3OCwyNSBAQAogCXJldHVybiBzZW50YWRpc2M7CiB9CiAKKy8qKgorICogbHBmY19lbHNfZGlzY19wbG9naTogSXNzdWUgcGxvZ2kgZm9yIGFsbCBucHIgbm9kZXMgb2YgYSB2cG9ydCBiZWZvcmUgYWRpc2MuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgUG9ydCBMb2dpbiAoUExPR0kpIEVMUyBjb21tYW5kcyB0byBhbGwgdGhlIE5fUG9ydHMKKyAqIHdoaWNoIGFyZSBpbiBub2RlIHBvcnQgcmVjb3Zlcnkgc3RhdGUsIHdpdGggYSBAdnBvcnQuIEVhY2ggdGltZSBhbiBFTFMKKyAqIEFESVNDIFBMT0dJIElPQ0IgaXMgaXNzdWVkIGJ5IGludm9raW5nIHRoZSBscGZjX2lzc3VlX2Vsc19wbG9naSgpIHJvdXRpbmUsCisgKiB0aGUgcGVyIEB2cG9ydCBudW1iZXIgb2YgZGlzY292ZXIgY291bnQgKG51bV9kaXNjX25vZGVzKSBzaGFsbCBiZQorICogaW5jcmVtZW50ZWQuIElmIHRoZSBudW1fZGlzY19ub2RlcyByZWFjaGVzIGEgcHJlLWNvbmZpZ3VyZWQgdGhyZXNob2xkCisgKiAoY2ZnX2Rpc2NvdmVyeV90aHJlYWRzKSwgdGhlIEB2cG9ydCBmY19mbGFnIHdpbGwgYmUgbWFya2VkIHdpdGggRkNfTkxQX01PUkUKKyAqIGJpdCBzZXQgYW5kIHF1aXQgdGhlIHByb2Nlc3Mgb2YgaXNzdWluZyByZW1haW5pbmcgQURJU0MgUExPR0lOIElPQ0JzIGZvcgorICogbGF0ZXIgcGljayB1cC4gT24gdGhlIG90aGVyIGhhbmQsIGFmdGVyIHdhbGtpbmcgdGhyb3VnaCBhbGwgdGhlIG5kbHBzIHdpdGgKKyAqIHRoZSBAdnBvcnQgYW5kIHRoZXJlIGlzIG5vbmUgQURJU0MgUExPR0kgSU9DQiBpc3N1ZWQsIHRoZSBAdnBvcnQgZmNfZmxhZworICogc2hhbGwgYmUgY2xlYXJlZCB3aXRoIHRoZSBGQ19OTFBfTU9SRSBiaXQgaW5kaWNhdGluZyB0aGVyZSBpcyBubyBtb3JlIEFESVNDCisgKiBQTE9HSSBuZWVkIHRvIGJlIHNlbnQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgVGhlIG51bWJlciBvZiBOX1BvcnRzIHdpdGggcGxvZ2kgaXNzdWVkLgorICoqLwogaW50CiBscGZjX2Vsc19kaXNjX3Bsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKQEAgLTI5NTQsNiArMzczNywxNSBAQAogCXJldHVybiBzZW50cGxvZ2k7CiB9CiAKKy8qKgorICogbHBmY19lbHNfZmx1c2hfcnNjbjogQ2xlYW4gdXAgYW55IHJzY24gYWN0aXZpdGllcyB3aXRoIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBjbGVhbnMgdXAgYW55IFJlZ2lzdHJhdGlvbiBTdGF0ZSBDaGFuZ2UgTm90aWZpY2F0aW9uCisgKiAoUlNDTikgYWN0aXZpdHkgd2l0aCBhIEB2cG9ydC4gTm90ZSB0aGF0IHRoZSBmY19yc2NuX2ZsdXNoIGZsYWcgb2YgdGhlCisgKiBAdnBvcnQgdG9nZXRoZXIgd2l0aCB0aGUgaG9zdF9sb2NrIGlzIHVzZWQgdG8gcHJldmVudCBtdWx0aXBsZSB0aHJlYWQKKyAqIHRyeWluZyB0byBhY2Nlc3MgdGhlIFJTQ04gYXJyYXkgb24gYSBzYW1lIEB2cG9ydCBhdCB0aGUgc2FtZSB0aW1lLgorICoqLwogdm9pZAogbHBmY19lbHNfZmx1c2hfcnNjbihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0yOTg0LDYgKzM3NzYsMTggQEAKIAl2cG9ydC0+ZmNfcnNjbl9mbHVzaCA9IDA7CiB9CiAKKy8qKgorICogbHBmY19yc2NuX3BheWxvYWRfY2hlY2s6IENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgYSBwZW5kaW5nIHJzY24gdG8gYSBkaWQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQGRpZDogcmVtb3RlIGRlc3RpbmF0aW9uIHBvcnQgaWRlbnRpZmllci4KKyAqCisgKiBUaGlzIHJvdXRpbmUgY2hlY2tzIHdoZXRoZXIgdGhlcmUgaXMgYW55IHBlbmRpbmcgUmVnaXN0cmF0aW9uIFN0YXRlCisgKiBDb25maWd1cmF0aW9uIE5vdGlmaWNhdGlvbiAoUlNDTikgdG8gYSBAZGlkIG9uIEB2cG9ydC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICBOb25lIHplcm8gLSBUaGUgQGRpZCBtYXRjaGVkIHdpdGggYSBwZW5kaW5nIHJzY24KKyAqICAgMCAtIG5vdCBhYmxlIHRvIG1hdGNoIEBkaWQgd2l0aCBhIHBlbmRpbmcgcnNjbgorICoqLwogaW50CiBscGZjX3JzY25fcGF5bG9hZF9jaGVjayhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHVpbnQzMl90IGRpZCkKIHsKQEAgLTMwNTMsNiArMzg1NywxNyBAQAogCXJldHVybiBkaWQ7CiB9CiAKKy8qKgorICogbHBmY19yc2NuX3JlY292ZXJ5X2NoZWNrOiBTZW5kIHJlY292ZXJ5IGV2ZW50IHRvIHZwb3J0IG5vZGVzIG1hdGNoaW5nIHJzY24KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHNlbmRzIHJlY292ZXJ5IChOTFBfRVZUX0RFVklDRV9SRUNPVkVSWSkgZXZlbnQgdG8gdGhlCisgKiBzdGF0ZSBtYWNoaW5lIGZvciBhIEB2cG9ydCdzIG5vZGVzIHRoYXQgYXJlIHdpdGggcGVuZGluZyBSU0NOIChSZWdpc3RyYXRpb24KKyAqIFN0YXRlIENoYW5nZSBOb3RpZmljYXRpb24pLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzZnVsIChjdXJyZW50bHkgYWx3YXkgcmV0dXJuIDApCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3JzY25fcmVjb3ZlcnlfY2hlY2soc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMzA3MSw2ICszODg2LDI4IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcmN2X3JzY246IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgcnNjbiBpb2NiLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByb2Nlc3NlcyBhbiB1bnNvbGljaXRlZCBSU0NOIChSZWdpc3RyYXRpb24gU3RhdGUgQ2hhbmdlCisgKiBOb3RpZmljYXRpb24pIElPQ0IuIEZpcnN0LCB0aGUgcGF5bG9hZCBvZiB0aGUgdW5zb2xpY2l0ZWQgUlNDTiBpcyB3YWxrZWQKKyAqIHRvIGludm9rZSBmY19ob3N0X3Bvc3RfZXZlbnQoKSByb3V0aW5lIHRvIHRoZSBGQyB0cmFuc3BvcnQgbGF5ZXIuIElmIHRoZQorICogZGlzY292ZXIgc3RhdGUgbWFjaGluZSBpcyBhYm91dCB0byBiZWdpbiBkaXNjb3ZlcnksIGl0IGp1c3QgYWNjZXB0cyB0aGUKKyAqIFJTQ04gYW5kIHRoZSBkaXNjb3ZlcnkgcHJvY2VzcyB3aWxsIHNhdGlzZnkgdGhlIFJTQ04uIElmIHRoaXMgUlNDTiBvbmx5CisgKiBjb250YWlucyBOX1BvcnQgSURzIGZvciBvdGhlciB2cG9ydHMgb24gdGhpcyBIQkEsIGl0IGp1c3QgYWNjZXB0cyB0aGUKKyAqIFJTQ04gYW5kIGlnbm9yZSBwcm9jZXNzaW5nIGl0LiBJZiB0aGUgc3RhdGUgbWFjaGluZSBpcyBpbiB0aGUgcmVjb3ZlcnkKKyAqIHN0YXRlLCB0aGUgZmNfcnNjbl9pZF9saXN0IG9mIHRoaXMgQHZwb3J0IGlzIHdhbGtlZCBhbmQgdGhlCisgKiBscGZjX3JzY25fcmVjb3ZlcnlfY2hlY2soKSByb3V0aW5lIGlzIGludm9rZWQgdG8gc2VuZCByZWNvdmVyeSBldmVudCBmb3IKKyAqIGFsbCBub2RlcyB0aGF0IG1hdGNoIFJTQ04gcGF5bG9hZC4gT3RoZXJ3aXNlLCB0aGUgbHBmY19lbHNfaGFuZGxlX3JzY24oKQorICogcm91dGluZSBpcyBpbnZva2VkIHRvIGhhbmRsZSB0aGUgUlNDTiBldmVudC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gSnVzdCBzZW50IHRoZSBhY2MgcmVzcG9uc2UKKyAqICAgMSAtIFNlbnQgdGhlIGFjYyByZXNwb25zZSBhbmQgd2FpdGVkIGZvciBuYW1lIHNlcnZlciBjb21wbGV0aW9uCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yY3ZfcnNjbihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkgIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMzEzMCw3ICszOTY3LDcgQEAKIAkJaWYgKHJzY25faWQgPT0gaGJhX2lkKSB7CiAJCQkvKiBBTEwgTlBvcnRJRHMgaW4gUlNDTiBhcmUgb24gSEJBICovCiAJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0lORk8sIExPR19ESVNDT1ZFUlksCi0JCQkJCSAiMDIxNCBJZ25vcmUgUlNDTiAiCisJCQkJCSAiMDIxOSBJZ25vcmUgUlNDTiAiCiAJCQkJCSAiRGF0YTogeCV4IHgleCB4JXggeCV4XG4iLAogCQkJCQkgdnBvcnQtPmZjX2ZsYWcsIHBheWxvYWRfbGVuLAogCQkJCQkgKmxwLCB2cG9ydC0+ZmNfcnNjbl9pZF9jbnQpOwpAQCAtMzI0MSw2ICs0MDc4LDIyIEBACiAJcmV0dXJuIGxwZmNfZWxzX2hhbmRsZV9yc2NuKHZwb3J0KTsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19oYW5kbGVfcnNjbjogSGFuZGxlIHJzY24gZm9yIGEgdnBvcnQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBoYW5kbGVzIHRoZSBSZWdpc3RyYXRpb24gU3RhdGUgQ29uZmlndXJhdGlvbiBOb3RpZmljYXRpb24KKyAqIChSU0NOKSBmb3IgYSBAdnBvcnQuIElmIGxvZ2luIHRvIE5hbWVTZXJ2ZXIgZG9lcyBub3QgZXhpc3QsIGEgbmV3IG5kbHAgc2hhbGwKKyAqIGJlIGNyZWF0ZWQgYW5kIGEgUG9ydCBMb2dpbiAoUExPR0kpIHRvIHRoZSBOYW1lU2VydmVyIGlzIGlzc3VlZC4gT3RoZXJ3aXNlLAorICogaWYgdGhlIG5kbHAgdG8gTmFtZVNlcnZlciBleGlzdHMsIGEgQ29tbW9uIFRyYW5zcG9ydCAoQ1QpIGNvbW1hbmQgdG8gdGhlCisgKiBOYW1lU2VydmVyIHNoYWxsIGJlIGlzc3VlZC4gSWYgQ1QgY29tbWFuZCB0byB0aGUgTmFtZVNlcnZlciBmYWlscyB0byBiZQorICogaXNzdWVkLCB0aGUgbHBmY19lbHNfZmx1c2hfcnNjbigpIHJvdXRpbmUgc2hhbGwgYmUgaW52b2tlZCB0byBjbGVhbiB1cCBhbnkKKyAqIFJTQ04gYWN0aXZpdGllcyB3aXRoIHRoZSBAdnBvcnQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIENsZWFuZWQgdXAgcnNjbiBvbiB0aGUgQHZwb3J0CisgKiAgIDEgLSBXYWl0IGZvciBwbG9naSB0byBuYW1lIHNlcnZlciBiZWZvcmUgcHJvY2VlZAorICoqLwogaW50CiBscGZjX2Vsc19oYW5kbGVfcnNjbihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0zMzEzLDYgKzQxNjYsMzEgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yY3ZfZmxvZ2k6IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgZmxvZ2kgaW9jYi4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBwcm9jZXNzZXMgRmFicmljIExvZ2luIChGTE9HSSkgSU9DQiByZWNlaXZlZCBhcyBhbiBFTFMKKyAqIHVuc29saWNpdGVkIGV2ZW50LiBBbiB1bnNvbGljaXRlZCBGTE9HSSBjYW4gYmUgcmVjZWl2ZWQgaW4gYSBwb2ludC10by0KKyAqIHBvaW50IHRvcG9sb2d5LiBBcyBhbiB1bnNvbGljaXRlZCBGTE9HSSBzaG91bGQgbm90IGJlIHJlY2VpdmVkIGluIGEgbG9vcAorICogbW9kZSwgYW55IHVuc29saWNpdGVkIEZMT0dJIHJlY2VpdmVkIGluIGxvb3AgbW9kZSBzaGFsbCBiZSBpZ25vcmVkLiBUaGUKKyAqIGxwZmNfY2hlY2tfc3Bhcm0oKSByb3V0aW5lIGlzIGludm9rZWQgdG8gY2hlY2sgdGhlIHBhcmFtZXRlcnMgaW4gdGhlCisgKiB1bnNvbGljaXRlZCBGTE9HSS4gSWYgcGFyYW1ldGVycyB2YWxpZGF0aW9uIGZhaWxlZCwgdGhlIHJvdXRpbmUKKyAqIGxwZmNfZWxzX3JzcF9yZWplY3QoKSBzaGFsbCBiZSBjYWxsZWQgd2l0aCByZWplY3QgcmVhc29uIGNvZGUgc2V0IHRvCisgKiBMU0VYUF9TUEFSTV9PUFRJT05TIHRvIHJlamVjdCB0aGUgRkxPR0kuIE90aGVyd2lzZSwgdGhlIFBvcnQgV1dOIGluIHRoZQorICogRkxPR0kgc2hhbGwgYmUgY29tcGFyZWQgd2l0aCB0aGUgUG9ydCBXV04gb2YgdGhlIEB2cG9ydCB0byBkZXRlcm1pbmUgd2hvCisgKiB3aWxsIGluaXRpYXRlIFBMT0dJLiBUaGUgaGlnaGVyIGxleGljb2dyYXBoaWNhbCB2YWx1ZSBwYXJ0eSBzaGFsbCBoYXMKKyAqIGhpZ2hlciBwcmlvcml0eSAoYXMgdGhlIHdpbm5pbmcgcG9ydCkgYW5kIHdpbGwgaW5pdGlhdGUgUExPR0kgYW5kCisgKiBjb21tdW5pY2F0ZSBQb3J0X0lEcyAoQWRkcmVzc2VzKSBmb3IgYm90aCBub2RlcyBpbiBQTE9HSS4gVGhlIHJlc3VsdAorICogb2YgdGhpcyB3aWxsIGJlIG1hcmtlZCBpbiB0aGUgQHZwb3J0IGZjX2ZsYWcgZmllbGQgd2l0aCBGQ19QVDJQVF9QTE9HSQorICogYW5kIHRoZW4gdGhlIGxwZmNfZWxzX3JzcF9hY2MoKSByb3V0aW5lIGlzIGludm9rZWQgdG8gYWNjZXB0IHRoZSBGTE9HSS4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCB0aGUgdW5zb2xpY2l0ZWQgZmxvZ2kKKyAqICAgMSAtIEZhaWxlZCB0byBwcm9jZXNzIHRoZSB1bnNvbGljaXRlZCBmbG9naQorICoqLwogc3RhdGljIGludAogbHBmY19lbHNfcmN2X2Zsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMzQwMiw2ICs0MjgwLDIyIEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcmN2X3JuaWQ6IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgcm5pZCBpb2NiLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByb2Nlc3NlcyBSZXF1ZXN0IE5vZGUgSWRlbnRpZmljYXRpb24gRGF0YSAoUk5JRCkgSU9DQgorICogcmVjZWl2ZWQgYXMgYW4gRUxTIHVuc29saWNpdGVkIGV2ZW50LiBPbmx5IHdoZW4gdGhlIFJOSUQgc3BlY2lmaWVkIGZvcm1hdAorICogMHgwIG9yIDB4REYgKFRvcG9sb2d5IERpc2NvdmVyeSBTcGVjaWZpYyBOb2RlIElkZW50aWZpY2F0aW9uIERhdGEpCisgKiBwcmVzZW50LCB0aGlzIHJvdXRpbmUgd2lsbCBpbnZva2UgdGhlIGxwZmNfZWxzX3JzcF9ybmlkX2FjYygpIHJvdXRpbmUgdG8KKyAqIEFjY2VwdCAoQUNDKSB0aGUgUk5JRCBFTFMgY29tbWFuZC4gQWxsIHRoZSBvdGhlciBSTklEIGZvcm1hdHMgYXJlCisgKiByZWplY3RlZCBieSBpbnZva2luZyB0aGUgbHBmY19lbHNfcnNwX3JlamVjdCgpIHJvdXRpbmUuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgcm5pZCBpb2NiIChjdXJyZW50bHkgYWx3YXlzIHJldHVybiAwKQorICoqLwogc3RhdGljIGludAogbHBmY19lbHNfcmN2X3JuaWQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJICBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCkKQEAgLTM0NDEsNiArNDMzNSwxOSBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfZWxzX3Jjdl9saXJyOiBQcm9jZXNzIGFuIHVuc29saWNpdGVkIGxpcnIgaW9jYi4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqIEBuZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBwcm9jZXNzZXMgYSBMaW5rIEluY2lkZW50IFJlcG9ydCBSZWdpc3RyYXRpb24oTElSUikgSU9DQgorICogcmVjZWl2ZWQgYXMgYW4gRUxTIHVuc29saWNpdGVkIGV2ZW50LiBDdXJyZW50bHksIHRoaXMgZnVuY3Rpb24ganVzdCBpbnZva2VzCisgKiB0aGUgbHBmY19lbHNfcnNwX3JlamVjdCgpIHJvdXRpbmUgdG8gcmVqZWN0IHRoZSBMSVJSIElPQ0IgdW5jb25kaXRpb25hbGx5LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIGxpcnIgaW9jYiAoY3VycmVudGx5IGFsd2F5cyByZXR1cm4gMCkKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZWxzX3Jjdl9saXJyKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHApCkBAIC0zNDU2LDYgKzQzNjMsMjUgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yc3BfcnBzX2FjYzogQ29tcGxldGlvbiBjYWxsYmsgZnVuYyBmb3IgTUJYX1JFQURfTE5LX1NUQVQgbWJveCBjbWQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgTUJYX1JFQURfTE5LX1NUQVQKKyAqIG1haWxib3ggY29tbWFuZC4gVGhpcyBjYWxsYmFjayBmdW5jdGlvbiBpcyB0byBhY3R1YWxseSBzZW5kIHRoZSBBY2NlcHQKKyAqIChBQ0MpIHJlc3BvbnNlIHRvIGEgUmVhZCBQb3J0IFN0YXR1cyAoUlBTKSB1bnNvbGljaXRlZCBJT0NCIGV2ZW50LiBJdAorICogY29sbGVjdHMgdGhlIGxpbmsgc3RhdGlzdGljcyBmcm9tIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBNQlhfUkVBRF9MTktfU1RBVAorICogbWFpbGJveCBjb21tYW5kLCBjb25zdHJ1Y3RzIHRoZSBSUFMgcmVzcG9uc2Ugd2l0aCB0aGUgbGluayBzdGF0aXN0aWNzCisgKiBjb2xsZWN0ZWQsIGFuZCB0aGVuIGludm9rZXMgdGhlIGxwZmNfc2xpX2lzc3VlX2lvY2IoKSByb3V0aW5lIHRvIHNlbmQgQUNDCisgKiByZXNwb25zZSB0byB0aGUgUlBTLgorICoKKyAqIE5vdGUgdGhhdCwgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkgcm91dGluZSwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBuZGxwCisgKiB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IDEgZm9yIGhvbGRpbmcgdGhlIG5kbHAgYW5kIHRoZSByZWZlcmVuY2UgdG8gbmRscAorICogd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgY29udGV4dDEgZmllbGQgb2YgdGhlIElPQ0IgZm9yIHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgUlBTIEFjY2VwdCBSZXNwb25zZSBFTFMgSU9DQiBjb21tYW5kLgorICoKKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2Vsc19yc3BfcnBzX2FjYyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1iKQogewpAQCAtMzUzMSw2ICs0NDU3LDI0IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfZWxzX3Jjdl9ycHM6IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgcnBzIGlvY2IuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJvY2Vzc2VzIFJlYWQgUG9ydCBTdGF0dXMgKFJQUykgSU9DQiByZWNlaXZlZCBhcyBhbgorICogRUxTIHVuc29saWNpdGVkIGV2ZW50LiBJdCBmaXJzdCBjaGVja3MgdGhlIHJlbW90ZSBwb3J0IHN0YXRlLiBJZiB0aGUKKyAqIHJlbW90ZSBwb3J0IGlzIG5vdCBpbiBOTFBfU1RFX1VOTUFQUEVEX05PREUgc3RhdGUgb3IgTkxQX1NURV9NQVBQRURfTk9ERQorICogc3RhdGUsIGl0IGludm9rZXMgdGhlIGxwZmNfZWxzX3JzcF9yZWplY3QoKSByb3V0aW5lIHRvIHNlbmQgdGhlIHJlamVjdAorICogcmVzcG9uc2UuIE90aGVyd2lzZSwgaXQgaXNzdWUgdGhlIE1CWF9SRUFEX0xOS19TVEFUIG1haWxib3ggY29tbWFuZAorICogZm9yIHJlYWRpbmcgdGhlIEhCQSBsaW5rIHN0YXRpc3RpY3MuIEl0IGlzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sCisgKiBscGZjX2Vsc19yc3BfcnBzX2FjYygpLCBzZXQgdG8gdGhlIE1CWF9SRUFEX0xOS19TVEFUIG1haWxib3ggY29tbWFuZAorICogdG8gYWN0dWFsbHkgc2VuZGluZyBvdXQgUlBTIEFjY2VwdCAoQUNDKSByZXNwb25zZS4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgcnBzIGlvY2IgKGN1cnJlbnRseSBhbHdheXMgcmV0dXJuIDApCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yY3ZfcnBzKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCkKQEAgLTM1NDQsMTQgKzQ0ODgsOSBAQAogCXN0cnVjdCBsc19yanQgc3RhdDsKIAogCWlmICgobmRscC0+bmxwX3N0YXRlICE9IE5MUF9TVEVfVU5NQVBQRURfTk9ERSkgJiYKLQkgICAgKG5kbHAtPm5scF9zdGF0ZSAhPSBOTFBfU1RFX01BUFBFRF9OT0RFKSkgewotCQlzdGF0LnVuLmIubHNSanRSc3ZkMCA9IDA7Ci0JCXN0YXQudW4uYi5sc1JqdFJzbkNvZGUgPSBMU1JKVF9VTkFCTEVfVFBDOwotCQlzdGF0LnVuLmIubHNSanRSc25Db2RlRXhwID0gTFNFWFBfQ0FOVF9HSVZFX0RBVEE7Ci0JCXN0YXQudW4uYi52ZW5kb3JVbmlxdWUgPSAwOwotCQlscGZjX2Vsc19yc3BfcmVqZWN0KHZwb3J0LCBzdGF0LnVuLmxzUmp0RXJyb3IsIGNtZGlvY2IsIG5kbHAsCi0JCQlOVUxMKTsKLQl9CisJICAgIChuZGxwLT5ubHBfc3RhdGUgIT0gTkxQX1NURV9NQVBQRURfTk9ERSkpCisJCS8qIHJlamVjdCB0aGUgdW5zb2xpY2l0ZWQgUlBTIHJlcXVlc3QgYW5kIGRvbmUgd2l0aCBpdCAqLworCQlnb3RvIHJlamVjdF9vdXQ7CiAKIAlwY21kID0gKHN0cnVjdCBscGZjX2RtYWJ1ZiAqKSBjbWRpb2NiLT5jb250ZXh0MjsKIAlscCA9ICh1aW50MzJfdCAqKSBwY21kLT52aXJ0OwpAQCAtMzU4NCw2ICs0NTIzLDkgQEAKIAkJCW1lbXBvb2xfZnJlZShtYm94LCBwaGJhLT5tYm94X21lbV9wb29sKTsKIAkJfQogCX0KKworcmVqZWN0X291dDoKKwkvKiBpc3N1ZSByZWplY3Rpb24gcmVzcG9uc2UgKi8KIAlzdGF0LnVuLmIubHNSanRSc3ZkMCA9IDA7CiAJc3RhdC51bi5iLmxzUmp0UnNuQ29kZSA9IExTUkpUX1VOQUJMRV9UUEM7CiAJc3RhdC51bi5iLmxzUmp0UnNuQ29kZUV4cCA9IExTRVhQX0NBTlRfR0lWRV9EQVRBOwpAQCAtMzU5Miw2ICs0NTM0LDI1IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcnNwX3JwbF9hY2M6IElzc3VlIGFuIGFjY2VwdCBycGwgZWxzIGNvbW1hbmQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQGNtZHNpemU6IHNpemUgb2YgdGhlIEVMUyBjb21tYW5kLgorICogQG9sZGlvY2I6IHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzc3VlZXMgYW4gQWNjZXB0IChBQ0MpIFJlYWQgUG9ydCBMaXN0IChSUEwpIEVMUyBjb21tYW5kLgorICogSXQgaXMgdG8gYmUgY2FsbGVkIGJ5IHRoZSBscGZjX2Vsc19yY3ZfcnBsKCkgcm91dGluZSB0byBhY2NlcHQgdGhlIFJQTC4KKyAqCisgKiBOb3RlIHRoYXQsIGluIGxwZmNfcHJlcF9lbHNfaW9jYigpIHJvdXRpbmUsIHRoZSByZWZlcmVuY2UgY291bnQgb2YgbmRscAorICogd2lsbCBiZSBpbmNyZW1lbnRlZCBieSAxIGZvciBob2xkaW5nIHRoZSBuZGxwIGFuZCB0aGUgcmVmZXJlbmNlIHRvIG5kbHAKKyAqIHdpbGwgYmUgc3RvcmVkIGludG8gdGhlIGNvbnRleHQxIGZpZWxkIG9mIHRoZSBJT0NCIGZvciB0aGUgY29tcGxldGlvbgorICogY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIFJQTCBBY2NlcHQgUmVzcG9uc2UgRUxTIGNvbW1hbmQuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgMCAtIFN1Y2Nlc3NmdWxseSBpc3N1ZWQgQUNDIFJQTCBFTFMgY29tbWFuZAorICogICAxIC0gRmFpbGVkIHRvIGlzc3VlIEFDQyBSUEwgRUxTIGNvbW1hbmQKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZWxzX3JzcF9ycGxfYWNjKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWludDE2X3QgY21kc2l6ZSwKIAkJICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqb2xkaW9jYiwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHApCkBAIC0zNjQ1LDYgKzQ2MDYsMjIgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yY3ZfcnBsOiBQcm9jZXNzIGFuIHVuc29saWNpdGVkIHJwbCBpb2NiLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByb2Nlc3NlcyBSZWFkIFBvcnQgTGlzdCAoUlBMKSBJT0NCIHJlY2VpdmVkIGFzIGFuIEVMUworICogdW5zb2xpY2l0ZWQgZXZlbnQuIEl0IGZpcnN0IGNoZWNrcyB0aGUgcmVtb3RlIHBvcnQgc3RhdGUuIElmIHRoZSByZW1vdGUKKyAqIHBvcnQgaXMgbm90IGluIE5MUF9TVEVfVU5NQVBQRURfTk9ERSBhbmQgTkxQX1NURV9NQVBQRURfTk9ERSBzdGF0ZXMsIGl0CisgKiBpbnZva2VzIHRoZSBscGZjX2Vsc19yc3BfcmVqZWN0KCkgcm91dGluZSB0byBzZW5kIHJlamVjdCByZXNwb25zZS4KKyAqIE90aGVyd2lzZSwgdGhpcyByb3V0aW5lIHRoZW4gaW52b2tlcyB0aGUgbHBmY19lbHNfcnNwX3JwbF9hY2MoKSByb3V0aW5lCisgKiB0byBhY2NlcHQgdGhlIFJQTC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBycGwgaW9jYiAoY3VycmVudGx5IGFsd2F5cyByZXR1cm4gMCkKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZWxzX3Jjdl9ycGwoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJIHN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtMzY1OCwxMiArNDYzNSwxNSBAQAogCiAJaWYgKChuZGxwLT5ubHBfc3RhdGUgIT0gTkxQX1NURV9VTk1BUFBFRF9OT0RFKSAmJgogCSAgICAobmRscC0+bmxwX3N0YXRlICE9IE5MUF9TVEVfTUFQUEVEX05PREUpKSB7CisJCS8qIGlzc3VlIHJlamVjdGlvbiByZXNwb25zZSAqLwogCQlzdGF0LnVuLmIubHNSanRSc3ZkMCA9IDA7CiAJCXN0YXQudW4uYi5sc1JqdFJzbkNvZGUgPSBMU1JKVF9VTkFCTEVfVFBDOwogCQlzdGF0LnVuLmIubHNSanRSc25Db2RlRXhwID0gTFNFWFBfQ0FOVF9HSVZFX0RBVEE7CiAJCXN0YXQudW4uYi52ZW5kb3JVbmlxdWUgPSAwOwogCQlscGZjX2Vsc19yc3BfcmVqZWN0KHZwb3J0LCBzdGF0LnVuLmxzUmp0RXJyb3IsIGNtZGlvY2IsIG5kbHAsCiAJCQlOVUxMKTsKKwkJLyogcmVqZWN0ZWQgdGhlIHVuc29saWNpdGVkIFJQTCByZXF1ZXN0IGFuZCBkb25lIHdpdGggaXQgKi8KKwkJcmV0dXJuIDA7CiAJfQogCiAJcGNtZCA9IChzdHJ1Y3QgbHBmY19kbWFidWYgKikgY21kaW9jYi0+Y29udGV4dDI7CkBAIC0zNjg1LDYgKzQ2NjUsMzAgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yY3ZfZmFycDogUHJvY2VzcyBhbiB1bnNvbGljaXRlZCBmYXJwIHJlcXVlc3QgZWxzIGNvbW1hbmQuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByb2Nlc3NlcyBGaWJyZSBDaGFubmVsIEFkZHJlc3MgUmVzb2x1dGlvbiBQcm90b2NvbAorICogKEZBUlApIFJlcXVlc3QgSU9DQiByZWNlaXZlZCBhcyBhbiBFTFMgdW5zb2xpY2l0ZWQgZXZlbnQuIEN1cnJlbnRseSwKKyAqIHRoZSBscGZjIGRyaXZlciBvbmx5IHN1cHBvcnRzIG1hdGNoaW5nIG9uIFdXUE4gb3IgV1dOTiBmb3IgRkFSUC4gQXMgc3VjaCwKKyAqIEZBUlBfTUFUQ0hfUE9SVCBmbGFnIGFuZCBGQVJQX01BVENIX05PREUgZmxhZyBhcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZQorICogTWF0Y2ggRmxhZyBpbiB0aGUgRkFSUCByZXF1ZXN0IElPQ0I6IGlmIEZBUlBfTUFUQ0hfUE9SVCBmbGFnIGlzIHNldCwgdGhlCisgKiByZW1vdGUgUG9ydE5hbWUgaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgRkMgUG9ydE5hbWUgc3RvcmVkIGluIHRoZSBAdnBvcnQKKyAqIGRhdGEgc3RydWN0dXJlOyBpZiBGQVJQX01BVENIX05PREUgZmxhZyBpcyBzZXQsIHRoZSByZW1vdGUgTm9kZU5hbWUgaXMKKyAqIGNvbXBhcmVkIGFnYWluc3QgdGhlIEZDIE5vZGVOYW1lIHN0b3JlZCBpbiB0aGUgQHZwb3J0IGRhdGEgc3RydWN0dXJlLgorICogSWYgYW55IG9mIHRoZXNlIG1hdGNoZXMgYW5kIHRoZSBGQVJQX1JFUVVFU1RfRkFSUFIgZmxhZyBpcyBzZXQgaW4gdGhlCisgKiBGQVJQIHJlcXVlc3QgSU9DQiBSZXNwb25zZSBGbGFnLCB0aGUgbHBmY19pc3N1ZV9lbHNfZmFycHIoKSByb3V0aW5lIGlzCisgKiBpbnZva2VkIHRvIHNlbmQgb3V0IEZBUlAgUmVzcG9uc2UgdG8gdGhlIHJlbW90ZSBub2RlLiBCZWZvcmUgc2VuZGluZyB0aGUKKyAqIEZBUlAgUmVzcG9uc2UsIGhvd2V2ZXIsIHRoZSBGQVJQX1JFUVVFU1RfUExPR0kgZmxhZyBpcyBjaGVjayBpbiB0aGUgRkFSUAorICogcmVxdWVzdCBJT0NCIFJlc3BvbnNlIEZsYWcgYW5kLCBpZiBpdCBpcyBzZXQsIHRoZSBscGZjX2lzc3VlX2Vsc19wbG9naSgpCisgKiByb3V0aW5lIGlzIGludm9rZWQgdG8gbG9nIGludG8gdGhlIHJlbW90ZSBwb3J0IGZpcnN0LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBFaXRoZXIgdGhlIEZBUlAgTWF0Y2ggTW9kZSBub3Qgc3VwcG9ydGVkIG9yIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZWxzX3Jjdl9mYXJwKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHApCkBAIC0zNzQ0LDYgKzQ3NDgsMjAgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19yY3ZfZmFycHI6IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgZmFycCByZXNwb25zZSBpb2NiLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHByb2Nlc3NlcyBGaWJyZSBDaGFubmVsIEFkZHJlc3MgUmVzb2x1dGlvbiBQcm90b2NvbAorICogUmVzcG9uc2UgKEZBUlBSKSBJT0NCIHJlY2VpdmVkIGFzIGFuIEVMUyB1bnNvbGljaXRlZCBldmVudC4gSXQgc2ltcGx5CisgKiBpbnZva2VzIHRoZSBscGZjX2Vsc19yc3BfYWNjKCkgcm91dGluZSB0byB0aGUgcmVtb3RlIG5vZGUgdG8gYWNjZXB0CisgKiB0aGUgRkFSUCByZXNwb25zZSByZXF1ZXN0LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBTdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIEZBUlBSIElPQ0IgKGN1cnJlbnRseSBhbHdheXMgcmV0dXJuIDApCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yY3ZfZmFycHIoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJICAgc3RydWN0IGxwZmNfbm9kZWxpc3QgICpuZGxwKQpAQCAtMzc2OCw2ICs0Nzg2LDI1IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19lbHNfcmN2X2ZhbjogUHJvY2VzcyBhbiB1bnNvbGljaXRlZCBmYW4gaW9jYiBjb21tYW5kLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQGZhbl9uZGxwOiBwb2ludGVyIHRvIGEgbm9kZS1saXN0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBwcm9jZXNzZXMgYSBGYWJyaWMgQWRkcmVzcyBOb3RpZmljYXRpb24gKEZBTikgSU9DQgorICogY29tbWFuZCByZWNlaXZlZCBhcyBhbiBFTFMgdW5zb2xpY2l0ZWQgZXZlbnQuIFRoZSBGQU4gRUxTIGNvbW1hbmQgd2lsbAorICogb25seSBiZSBwcm9jZXNzZWQgb24gYSBwaHlzaWNhbCBwb3J0IChpLmUuLCB0aGUgQHZwb3J0IHJlcHJlc2VudHMgdGhlCisgKiBwaHlzaWNhbCBwb3J0KS4gVGhlIGZhYnJpYyBOb2RlTmFtZSBhbmQgUG9ydE5hbWUgZnJvbSB0aGUgRkFOIElPQ0IgYXJlCisgKiBjb21wYXJlZCBhZ2FpbnN0IHRob3NlIGluIHRoZSBwaGJhIGRhdGEgc3RydWN0dXJlLiBJZiBhbnkgb2YgdGhvc2UgaXMKKyAqIGRpZmZlcmVudCwgdGhlIGxwZmNfaW5pdGlhbF9mbG9naSgpIHJvdXRpbmUgaXMgaW52b2tlZCB0byBpbml0aWFsaXplCisgKiBGYWJyaWMgTG9naW4gKEZMT0dJKSB0byB0aGUgZmFicmljIHRvIHN0YXJ0IHRoZSBkaXNjb3ZlciBvdmVyLiBPdGhlcndpc2UsCisgKiBpZiBib3RoIG9mIHRob3NlIGFyZSBpZGVudGljYWwsIHRoZSBscGZjX2lzc3VlX2ZhYnJpY19yZWdsb2dpbigpIHJvdXRpbmUKKyAqIGlzIGludm9rZWQgdG8gcmVnaXN0ZXIgbG9naW4gdG8gdGhlIGZhYnJpYy4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBmYW4gaW9jYiAoY3VycmVudGx5IGFsd2F5cyByZXR1cm4gMCkuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX2Vsc19yY3ZfZmFuKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqZmFuX25kbHApCkBAIC0zNzk3LDYgKzQ4MzQsMTYgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX2Vsc190aW1lb3V0OiBIYW5kbGVyIGZ1bmNpdG9uIHRvIHRoZSBlbHMgdGltZXIuCisgKiBAcHRyOiBob2xkZXIgZm9yIHRoZSB0aW1lciBmdW5jdGlvbiBhc3NvY2lhdGVkIGRhdGEuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGludm9rZWQgYnkgdGhlIEVMUyB0aW1lciBhZnRlciB0aW1lb3V0LiBJdCBwb3N0cyB0aGUgRUxTCisgKiB0aW1lciB0aW1lb3V0IGV2ZW50IGJ5IHNldHRpbmcgdGhlIFdPUktFUl9FTFNfVE1PIGJpdCB0byB0aGUgd29yayBwb3J0CisgKiBldmVudCBiaXRtYXAgYW5kIHRoZW4gaW52b2tlcyB0aGUgbHBmY193b3JrZXJfd2FrZV91cCgpIHJvdXRpbmUgdG8gd2FrZQorICogdXAgdGhlIHdvcmtlciB0aHJlYWQuIEl0IGlzIGZvciB0aGUgd29ya2VyIHRocmVhZCB0byBpbnZva2UgdGhlIHJvdXRpbmUKKyAqIGxwZmNfZWxzX3RpbWVvdXRfaGFuZGxlcigpIHRvIHdvcmsgb24gdGhlIHBvc3RlZCBldmVudCBXT1JLRVJfRUxTX1RNTy4KKyAqKi8KIHZvaWQKIGxwZmNfZWxzX3RpbWVvdXQodW5zaWduZWQgbG9uZyBwdHIpCiB7CkBAIC0zODE2LDYgKzQ4NjMsMTUgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19lbHNfdGltZW91dF9oYW5kbGVyOiBQcm9jZXNzIGFuIGVscyB0aW1lb3V0IGV2ZW50LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSBhY3R1YWwgaGFuZGxlciBmdW5jdGlvbiB0aGF0IHByb2Nlc3NlcyBhbiBFTFMgdGltZW91dAorICogZXZlbnQuIEl0IHdhbGtzIHRoZSBFTFMgcmluZyB0byBnZXQgYW5kIGFib3J0IGFsbCB0aGUgSU9DQnMgKGV4Y2VwdCB0aGUKKyAqIEFCT1JUL0NMT1NFL0ZBUlAvRkFSUFIvRkRJU0MpLCB3aGljaCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBAdnBvcnQgYnkKKyAqIGludm9raW5nIHRoZSBscGZjX3NsaV9pc3N1ZV9hYm9ydF9pb3RhZygpIHJvdXRpbmUuCisgKiovCiB2b2lkCiBscGZjX2Vsc190aW1lb3V0X2hhbmRsZXIoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMzg4Niw2ICs0OTQyLDI2IEBACiAJCW1vZF90aW1lcigmdnBvcnQtPmVsc190bW9mdW5jLCBqaWZmaWVzICsgSFogKiB0aW1lb3V0KTsKIH0KIAorLyoqCisgKiBscGZjX2Vsc19mbHVzaF9jbWQ6IENsZWFuIHVwIHRoZSBvdXRzdGFuZGluZyBlbHMgY29tbWFuZHMgdG8gYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gY2xlYW4gdXAgYWxsIHRoZSBvdXRzdGFuZGluZyBFTFMgY29tbWFuZHMgb24gYQorICogQHZwb3J0LiBJdCBmaXJzdCBhYm9ydHMgdGhlIEB2cG9ydCBieSBpbnZva2luZyBscGZjX2ZhYnJpY19hYm9ydF92cG9ydCgpCisgKiByb3V0aW5lLiBBZnRlciB0aGF0LCBpdCB3YWxrcyB0aGUgRUxTIHRyYW5zbWl0IHF1ZXVlIHRvIHJlbW92ZSBhbGwgdGhlCisgKiBJT0NCcyB3aXRoIHRoZSBAdnBvcnQgb3RoZXIgdGhhbiB0aGUgUVVFX1JJTkcgYW5kIEFCT1JUL0NMT1NFIElPQ0JzLiBGb3IKKyAqIHRoZSBJT0NCcyB3aXRoIGEgbm9uLU5VTEwgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiwgdGhlIGNhbGxiYWNrCisgKiBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgc3RhdHVzIHNldCB0byBJT1NUQVRfTE9DQUxfUkVKRUNUIGFuZAorICogdW4udWxwV29yZFs0XSBzZXQgdG8gSU9FUlJfU0xJX0FCT1JURUQuIEZvciBJT0NCcyB3aXRoIGEgTlVMTCBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiwgdGhlIElPQ0Igd2lsbCBzaW1wbHkgYmUgcmVsZWFzZWQuIEZpbmFsbHksIGl0IHdhbGtzCisgKiB0aGUgRUxTIHRyYW5zbWl0IGNvbXBsZXRpb24gcXVldWUgdG8gaXNzdWUgYW4gYWJvcnQgSU9DQiB0byBhbnkgdHJhbnNtaXQKKyAqIGNvbXBsZXRpb24gcXVldWUgSU9DQiB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgQHZwb3J0IGFuZCBpcyBub3QKKyAqIGFuIElPQ0IgZnJvbSBsaWJkZmMgKGkuZS4sIHRoZSBtYW5hZ2VtZW50IHBsYW5lIElPQ0JzIHRoYXQgYXJlIG5vdAorICogcGFydCBvZiB0aGUgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUpIG91dCB0byBIQkEgYnkgaW52b2tpbmcgdGhlCisgKiBscGZjX3NsaV9pc3N1ZV9hYm9ydF9pb3RhZygpIHJvdXRpbmUuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzc3VlcyB0aGUKKyAqIGFib3J0IElPQ0IgdG8gYW55IHRyYW5zbWl0IGNvbXBsZXRpb24gcXVldWVlZCBJT0NCLCBpdCBkb2VzIG5vdCBndWFyYW50ZWUKKyAqIHRoZSBJT0NCcyBhcmUgYWJvcnRlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KKyAqKi8KIHZvaWQKIGxwZmNfZWxzX2ZsdXNoX2NtZChzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0zOTQ4LDYgKzUwMjQsMjMgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19lbHNfZmx1c2hfYWxsX2NtZDogQ2xlYW4gdXAgYWxsIHRoZSBvdXRzdGFuZGluZyBlbHMgY29tbWFuZHMgdG8gYSBIQkEuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBjbGVhbiB1cCBhbGwgdGhlIG91dHN0YW5kaW5nIEVMUyBjb21tYW5kcyBvbiBhCisgKiBAcGhiYS4gSXQgZmlyc3QgYWJvcnRzIHRoZSBAcGhiYSBieSBpbnZva2luZyB0aGUgbHBmY19mYWJyaWNfYWJvcnRfaGJhKCkKKyAqIHJvdXRpbmUuIEFmdGVyIHRoYXQsIGl0IHdhbGtzIHRoZSBFTFMgdHJhbnNtaXQgcXVldWUgdG8gcmVtb3ZlIGFsbCB0aGUKKyAqIElPQ0JzIHRvIHRoZSBAcGhiYSBvdGhlciB0aGFuIHRoZSBRVUVfUklORyBhbmQgQUJPUlQvQ0xPU0UgSU9DQnMuIEZvcgorICogdGhlIElPQ0JzIHdpdGggdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gYXNzb2NpYXRlZCwgdGhlIGNhbGxiYWNrCisgKiBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgc3RhdHVzIHNldCB0byBJT1NUQVRfTE9DQUxfUkVKRUNUIGFuZAorICogdW4udWxwV29yZFs0XSBzZXQgdG8gSU9FUlJfU0xJX0FCT1JURUQuIEZvciBJT0NCcyB3aXRob3V0IHRoZSBjb21wbGV0aW9uCisgKiBjYWxsYmFjayBmdW5jdGlvbiBhc3NvY2lhdGVkLCB0aGUgSU9DQiB3aWxsIHNpbXBseSBiZSByZWxlYXNlZC4gRmluYWxseSwKKyAqIGl0IHdhbGtzIHRoZSBFTFMgdHJhbnNtaXQgY29tcGxldGlvbiBxdWV1ZSB0byBpc3N1ZSBhbiBhYm9ydCBJT0NCIHRvIGFueQorICogdHJhbnNtaXQgY29tcGxldGlvbiBxdWV1ZSBJT0NCIHRoYXQgaXMgbm90IGFuIElPQ0IgZnJvbSBsaWJkZmMgKGkuZS4sIHRoZQorICogbWFuYWdlbWVudCBwbGFuZSBJT0NCcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUpCisgKiBvdXQgdG8gSEJBIGJ5IGludm9raW5nIHRoZSBscGZjX3NsaV9pc3N1ZV9hYm9ydF9pb3RhZygpIHJvdXRpbmUuCisgKiovCiB2b2lkCiBscGZjX2Vsc19mbHVzaF9hbGxfY21kKHN0cnVjdCBscGZjX2hiYSAgKnBoYmEpCiB7CkBAIC0zOTkyLDYgKzUwODUsMTMwIEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfc2VuZF9lbHNfZmFpbHVyZV9ldmVudDogUG9zdHMgYW4gRUxTIGNvbW1hbmQgZmFpbHVyZSBldmVudC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIGhiYSBjb250ZXh0IG9iamVjdC4KKyAqIEBjbWRpb2NicDogUG9pbnRlciB0byBjb21tYW5kIGlvY2Igd2hpY2ggcmVwb3J0ZWQgZXJyb3IuCisgKiBAcnNwaW9jYnA6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYiB3aGljaCByZXBvcnRlZCBlcnJvci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGFuIGV2ZW50IHdoZW4gdGhlcmUgaXMgYW4gRUxTIGNvbW1hbmQKKyAqIGZhaWx1cmUuCisgKiovCit2b2lkCitscGZjX3NlbmRfZWxzX2ZhaWx1cmVfZXZlbnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLAorCQkJc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2JwLAorCQkJc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2JwKQoreworCXN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCA9IGNtZGlvY2JwLT52cG9ydDsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydCk7CisJc3RydWN0IGxwZmNfbHNyanRfZXZlbnQgbHNyanRfZXZlbnQ7CisJc3RydWN0IGxwZmNfZmFicmljX2V2ZW50X2hlYWRlciBmYWJyaWNfZXZlbnQ7CisJc3RydWN0IGxzX3JqdCBzdGF0OworCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwOworCXVpbnQzMl90ICpwY21kOworCisJbmRscCA9IGNtZGlvY2JwLT5jb250ZXh0MTsKKwlpZiAoIW5kbHAgfHwgIU5MUF9DSEtfTk9ERV9BQ1QobmRscCkpCisJCXJldHVybjsKKworCWlmIChyc3Bpb2NicC0+aW9jYi51bHBTdGF0dXMgPT0gSU9TVEFUX0xTX1JKVCkgeworCQlsc3JqdF9ldmVudC5oZWFkZXIuZXZlbnRfdHlwZSA9IEZDX1JFR19FTFNfRVZFTlQ7CisJCWxzcmp0X2V2ZW50LmhlYWRlci5zdWJjYXRlZ29yeSA9IExQRkNfRVZFTlRfTFNSSlRfUkNWOworCQltZW1jcHkobHNyanRfZXZlbnQuaGVhZGVyLnd3cG4sICZuZGxwLT5ubHBfcG9ydG5hbWUsCisJCQlzaXplb2Yoc3RydWN0IGxwZmNfbmFtZSkpOworCQltZW1jcHkobHNyanRfZXZlbnQuaGVhZGVyLnd3bm4sICZuZGxwLT5ubHBfbm9kZW5hbWUsCisJCQlzaXplb2Yoc3RydWN0IGxwZmNfbmFtZSkpOworCQlwY21kID0gKHVpbnQzMl90ICopICgoKHN0cnVjdCBscGZjX2RtYWJ1ZiAqKQorCQkJY21kaW9jYnAtPmNvbnRleHQyKS0+dmlydCk7CisJCWxzcmp0X2V2ZW50LmNvbW1hbmQgPSAqcGNtZDsKKwkJc3RhdC51bi5sc1JqdEVycm9yID0gYmUzMl90b19jcHUocnNwaW9jYnAtPmlvY2IudW4udWxwV29yZFs0XSk7CisJCWxzcmp0X2V2ZW50LnJlYXNvbl9jb2RlID0gc3RhdC51bi5iLmxzUmp0UnNuQ29kZTsKKwkJbHNyanRfZXZlbnQuZXhwbGFuYXRpb24gPSBzdGF0LnVuLmIubHNSanRSc25Db2RlRXhwOworCQlmY19ob3N0X3Bvc3RfdmVuZG9yX2V2ZW50KHNob3N0LAorCQkJZmNfZ2V0X2V2ZW50X251bWJlcigpLAorCQkJc2l6ZW9mKGxzcmp0X2V2ZW50KSwKKwkJCShjaGFyICopJmxzcmp0X2V2ZW50LAorCQkJU0NTSV9OTF9WSURfVFlQRV9QQ0kgfCBQQ0lfVkVORE9SX0lEX0VNVUxFWCk7CisJCXJldHVybjsKKwl9CisJaWYgKChyc3Bpb2NicC0+aW9jYi51bHBTdGF0dXMgPT0gSU9TVEFUX05QT1JUX0JTWSkgfHwKKwkJKHJzcGlvY2JwLT5pb2NiLnVscFN0YXR1cyA9PSBJT1NUQVRfRkFCUklDX0JTWSkpIHsKKwkJZmFicmljX2V2ZW50LmV2ZW50X3R5cGUgPSBGQ19SRUdfRkFCUklDX0VWRU5UOworCQlpZiAocnNwaW9jYnAtPmlvY2IudWxwU3RhdHVzID09IElPU1RBVF9OUE9SVF9CU1kpCisJCQlmYWJyaWNfZXZlbnQuc3ViY2F0ZWdvcnkgPSBMUEZDX0VWRU5UX1BPUlRfQlVTWTsKKwkJZWxzZQorCQkJZmFicmljX2V2ZW50LnN1YmNhdGVnb3J5ID0gTFBGQ19FVkVOVF9GQUJSSUNfQlVTWTsKKwkJbWVtY3B5KGZhYnJpY19ldmVudC53d3BuLCAmbmRscC0+bmxwX3BvcnRuYW1lLAorCQkJc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJbWVtY3B5KGZhYnJpY19ldmVudC53d25uLCAmbmRscC0+bmxwX25vZGVuYW1lLAorCQkJc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJZmNfaG9zdF9wb3N0X3ZlbmRvcl9ldmVudChzaG9zdCwKKwkJCWZjX2dldF9ldmVudF9udW1iZXIoKSwKKwkJCXNpemVvZihmYWJyaWNfZXZlbnQpLAorCQkJKGNoYXIgKikmZmFicmljX2V2ZW50LAorCQkJU0NTSV9OTF9WSURfVFlQRV9QQ0kgfCBQQ0lfVkVORE9SX0lEX0VNVUxFWCk7CisJCXJldHVybjsKKwl9CisKK30KKworLyoqCisgKiBscGZjX3NlbmRfZWxzX2V2ZW50OiBQb3N0cyB1bnNvbGljaXRlZCBlbHMgZXZlbnQuCisgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gdnBvcnQgb2JqZWN0LgorICogQG5kbHA6IFBvaW50ZXIgRkMgbm9kZSBvYmplY3QuCisgKiBAY21kOiBFTFMgY29tbWFuZCBjb2RlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcG9zdHMgYW4gZXZlbnQgd2hlbiB0aGVyZSBpcyBhbiBpbmNvbWluZworICogdW5zb2xpY2l0ZWQgRUxTIGNvbW1hbmQuCisgKiovCitzdGF0aWMgdm9pZAorbHBmY19zZW5kX2Vsc19ldmVudChzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCisJCSAgICBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKKwkJICAgIHVpbnQzMl90IGNtZCkKK3sKKwlzdHJ1Y3QgbHBmY19lbHNfZXZlbnRfaGVhZGVyIGVsc19kYXRhOworCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gbHBmY19zaG9zdF9mcm9tX3Zwb3J0KHZwb3J0KTsKKworCWVsc19kYXRhLmV2ZW50X3R5cGUgPSBGQ19SRUdfRUxTX0VWRU5UOworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBFTFNfQ01EX1BMT0dJOgorCQllbHNfZGF0YS5zdWJjYXRlZ29yeSA9IExQRkNfRVZFTlRfUExPR0lfUkNWOworCQlicmVhazsKKwljYXNlIEVMU19DTURfUFJMTzoKKwkJZWxzX2RhdGEuc3ViY2F0ZWdvcnkgPSBMUEZDX0VWRU5UX1BSTE9fUkNWOworCQlicmVhazsKKwljYXNlIEVMU19DTURfQURJU0M6CisJCWVsc19kYXRhLnN1YmNhdGVnb3J5ID0gTFBGQ19FVkVOVF9BRElTQ19SQ1Y7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisJbWVtY3B5KGVsc19kYXRhLnd3cG4sICZuZGxwLT5ubHBfcG9ydG5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJbWVtY3B5KGVsc19kYXRhLnd3bm4sICZuZGxwLT5ubHBfbm9kZW5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJZmNfaG9zdF9wb3N0X3ZlbmRvcl9ldmVudChzaG9zdCwKKwkJZmNfZ2V0X2V2ZW50X251bWJlcigpLAorCQlzaXplb2YoZWxzX2RhdGEpLAorCQkoY2hhciAqKSZlbHNfZGF0YSwKKwkJU0NTSV9OTF9WSURfVFlQRV9QQ0kgfCBQQ0lfVkVORE9SX0lEX0VNVUxFWCk7CisKKwlyZXR1cm47Cit9CisKKworLyoqCisgKiBscGZjX2Vsc191bnNvbF9idWZmZXI6IFByb2Nlc3MgYW4gdW5zb2xpY2l0ZWQgZXZlbnQgZGF0YSBidWZmZXIuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwcmluZzogcG9pbnRlciB0byBhIFNMSSByaW5nLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgaG9zdCB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBlbHNpb2NiOiBwb2ludGVyIHRvIGxwZmMgZWxzIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCBmb3IgcHJvY2Vzc2luZyB0aGUgSU9DQiBhc3NvY2lhdGVkIHdpdGggYSB1bnNvbGljaXRlZAorICogZXZlbnQuIEl0IGZpcnN0IGRldGVybWluZXMgd2hldGhlciB0aGVyZSBpcyBhbiBleGlzdGluZyBuZGxwIHRoYXQgbWF0Y2hlcworICogdGhlIERJRCBmcm9tIHRoZSB1bnNvbGljaXRlZCBJT0NCLiBJZiBub3QsIGl0IHdpbGwgY3JlYXRlIGEgbmV3IG9uZSB3aXRoCisgKiB0aGUgRElEIGZyb20gdGhlIHVuc29saWNpdGVkIElPQ0IuIFRoZSBFTFMgY29tbWFuZCBmcm9tIHRoZSB1bnNvbGljaXRlZAorICogSU9DQiBpcyB0aGVuIHVzZWQgdG8gaW52b2tlIHRoZSBwcm9wZXIgcm91dGluZSBhbmQgdG8gc2V0IHVwIHByb3BlciBzdGF0ZQorICogb2YgdGhlIGRpc2NvdmVyeSBzdGF0ZSBtYWNoaW5lLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfZWxzX3Vuc29sX2J1ZmZlcihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJICAgICAgc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19pb2NicSAqZWxzaW9jYikKQEAgLTQwNTksOCArNTI3Niw2IEBACiAJfQogCiAJcGhiYS0+ZmNfc3RhdC5lbHNSY3ZGcmFtZSsrOwotCWlmIChlbHNpb2NiLT5jb250ZXh0MSkKLQkJbHBmY19ubHBfcHV0KGVsc2lvY2ItPmNvbnRleHQxKTsKIAogCWVsc2lvY2ItPmNvbnRleHQxID0gbHBmY19ubHBfZ2V0KG5kbHApOwogCWVsc2lvY2ItPnZwb3J0ID0gdnBvcnQ7CkBAIC00MDgxLDYgKzUyOTYsNyBAQAogCQlwaGJhLT5mY19zdGF0LmVsc1JjdlBMT0dJKys7CiAJCW5kbHAgPSBscGZjX3Bsb2dpX2NvbmZpcm1fbnBvcnQocGhiYSwgcGF5bG9hZCwgbmRscCk7CiAKKwkJbHBmY19zZW5kX2Vsc19ldmVudCh2cG9ydCwgbmRscCwgY21kKTsKIAkJaWYgKHZwb3J0LT5wb3J0X3N0YXRlIDwgTFBGQ19ESVNDX0FVVEgpIHsKIAkJCWlmICghKHBoYmEtPnBwb3J0LT5mY19mbGFnICYgRkNfUFQyUFQpIHx8CiAJCQkJKHBoYmEtPnBwb3J0LT5mY19mbGFnICYgRkNfUFQyUFRfUExPR0kpKSB7CkBAIC00MTMwLDYgKzUzNDYsNyBAQAogCQkJZGlkLCB2cG9ydC0+cG9ydF9zdGF0ZSwgbmRscC0+bmxwX2ZsYWcpOwogCiAJCXBoYmEtPmZjX3N0YXQuZWxzUmN2UFJMTysrOworCQlscGZjX3NlbmRfZWxzX2V2ZW50KHZwb3J0LCBuZGxwLCBjbWQpOwogCQlpZiAodnBvcnQtPnBvcnRfc3RhdGUgPCBMUEZDX0RJU0NfQVVUSCkgewogCQkJcmp0X2VyciA9IExTUkpUX1VOQUJMRV9UUEM7CiAJCQlicmVhazsKQEAgLTQxNDcsNiArNTM2NCw3IEBACiAJCQkiUkNWIEFESVNDOiAgICAgICBkaWQ6eCV4L3N0ZTp4JXggZmxnOngleCIsCiAJCQlkaWQsIHZwb3J0LT5wb3J0X3N0YXRlLCBuZGxwLT5ubHBfZmxhZyk7CiAKKwkJbHBmY19zZW5kX2Vsc19ldmVudCh2cG9ydCwgbmRscCwgY21kKTsKIAkJcGhiYS0+ZmNfc3RhdC5lbHNSY3ZBRElTQysrOwogCQlpZiAodnBvcnQtPnBvcnRfc3RhdGUgPCBMUEZDX0RJU0NfQVVUSCkgewogCQkJcmp0X2VyciA9IExTUkpUX1VOQUJMRV9UUEM7CkBAIC00MjcwLDYgKzU0ODgsOCBAQAogCQkJTlVMTCk7CiAJfQogCisJbHBmY19ubHBfcHV0KGVsc2lvY2ItPmNvbnRleHQxKTsKKwllbHNpb2NiLT5jb250ZXh0MSA9IE5VTEw7CiAJcmV0dXJuOwogCiBkcm9waXQ6CkBAIC00MjgyLDYgKzU1MDIsMTkgQEAKIAlwaGJhLT5mY19zdGF0LmVsc1JjdkRyb3ArKzsKIH0KIAorLyoqCisgKiBscGZjX2ZpbmRfdnBvcnRfYnlfdnBpZDogRmluZCBhIHZwb3J0IG9uIGEgSEJBIHRocm91Z2ggdnBvcnQgaWRlbnRpZmllci4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHZwaTogaG9zdCB2aXJ0dWFsIE5fUG9ydCBpZGVudGlmaWVyLgorICoKKyAqIFRoaXMgcm91dGluZSBmaW5kcyBhIHZwb3J0IG9uIGEgSEJBIChyZWZlcnJlZCBieSBAcGhiYSkgdGhyb3VnaCBhCisgKiBAdnBpLiBUaGUgZnVuY3Rpb24gd2Fsa3MgdGhlIEhCQSdzIHZwb3J0IGxpc3QgYW5kIHJldHVybnMgdGhlIGFkZHJlc3MKKyAqIG9mIHRoZSB2cG9ydCB3aXRoIHRoZSBtYXRjaGluZyBAdnBpLgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgICBOVUxMIC0gTm8gdnBvcnQgd2l0aCB0aGUgbWF0Y2hpbmcgQHZwaSBmb3VuZAorICogICAgT3RoZXJ3aXNlIC0gQWRkcmVzcyB0byB0aGUgdnBvcnQgd2l0aCB0aGUgbWF0Y2hpbmcgQHZwaS4KKyAqKi8KIHN0YXRpYyBzdHJ1Y3QgbHBmY192cG9ydCAqCiBscGZjX2ZpbmRfdnBvcnRfYnlfdnBpZChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQxNl90IHZwaSkKIHsKQEAgLTQyOTksNiArNTUzMiwxOCBAQAogCXJldHVybiBOVUxMOwogfQogCisvKioKKyAqIGxwZmNfZWxzX3Vuc29sX2V2ZW50OiBQcm9jZXNzIGFuIHVuc29saWNpdGVkIGV2ZW50IGZyb20gYW4gZWxzIHNsaSByaW5nLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcHJpbmc6IHBvaW50ZXIgdG8gYSBTTEkgcmluZy4KKyAqIEBlbHNpb2NiOiBwb2ludGVyIHRvIGxwZmMgZWxzIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcHJvY2VzcyBhbiB1bnNvbGljaXRlZCBldmVudCByZWNlaXZlZCBmcm9tIGEgU0xJCisgKiAoU2VydmljZSBMZXZlbCBJbnRlcmZhY2UpIHJpbmcuIFRoZSBhY3R1YWwgcHJvY2Vzc2luZyBvZiB0aGUgZGF0YSBidWZmZXIKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5zb2xpY2l0ZWQgZXZlbnQgaXMgZG9uZSBieSBpbnZva2luZyB0aGUgcm91dGluZQorICogbHBmY19lbHNfdW5zb2xfYnVmZmVyKCkgYWZ0ZXIgcHJvcGVybHkgc2V0IHVwIHRoZSBpb2NiIGJ1ZmZlciBmcm9tIHRoZQorICogU0xJIHJpbmcgb24gd2hpY2ggdGhlIHVuc29saWNpdGVkIGV2ZW50IHdhcyByZWNlaXZlZC4KKyAqKi8KIHZvaWQKIGxwZmNfZWxzX3Vuc29sX2V2ZW50KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQkgICAgIHN0cnVjdCBscGZjX2lvY2JxICplbHNpb2NiKQpAQCAtNDMwOSw2ICs1NTU0LDcgQEAKIAlzdHJ1Y3QgbHBmY19kbWFidWYgKmJkZUJ1ZjEgPSBlbHNpb2NiLT5jb250ZXh0MjsKIAlzdHJ1Y3QgbHBmY19kbWFidWYgKmJkZUJ1ZjIgPSBlbHNpb2NiLT5jb250ZXh0MzsKIAorCWVsc2lvY2ItPmNvbnRleHQxID0gTlVMTDsKIAllbHNpb2NiLT5jb250ZXh0MiA9IE5VTEw7CiAJZWxzaW9jYi0+Y29udGV4dDMgPSBOVUxMOwogCkBAIC00MzU2LDggKzU2MDIsNiBAQAogCSAqIFRoZSBkaWZmZXJlbnQgdW5zb2xpY2l0ZWQgZXZlbnQgaGFuZGxlcnMgd291bGQgdGVsbCB1cwogCSAqIGlmIHRoZXkgYXJlIGRvbmUgd2l0aCAibXAiIGJ5IHNldHRpbmcgY29udGV4dDIgdG8gTlVMTC4KIAkgKi8KLQlscGZjX25scF9wdXQoZWxzaW9jYi0+Y29udGV4dDEpOwotCWVsc2lvY2ItPmNvbnRleHQxID0gTlVMTDsKIAlpZiAoZWxzaW9jYi0+Y29udGV4dDIpIHsKIAkJbHBmY19pbl9idWZfZnJlZShwaGJhLCAoc3RydWN0IGxwZmNfZG1hYnVmICopZWxzaW9jYi0+Y29udGV4dDIpOwogCQllbHNpb2NiLT5jb250ZXh0MiA9IE5VTEw7CkBAIC00Mzc2LDYgKzU2MjAsMTkgQEAKIAl9CiB9CiAKKy8qKgorICogbHBmY19kb19zY3JfbnNfcGxvZ2k6IElzc3VlIGEgcGxvZ2kgdG8gdGhlIG5hbWUgc2VydmVyIGZvciBzY3IuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgYSBQb3J0IExvZ2luIChQTE9HSSkgdG8gdGhlIE5hbWUgU2VydmVyIHdpdGgKKyAqIFN0YXRlIENoYW5nZSBSZXF1ZXN0IChTQ1IpIGZvciBhIEB2cG9ydC4gVGhpcyByb3V0aW5lIHdpbGwgY3JlYXRlIGFuCisgKiBuZGxwIGZvciB0aGUgTmFtZSBTZXJ2ZXIgYXNzb2NpYXRlZCB0byB0aGUgQHZwb3J0IGlmIHN1Y2ggbm9kZSBkb2VzCisgKiBub3QgYWxyZWFkeSBleGlzdC4gVGhlIFBMT0dJIHRvIE5hbWUgU2VydmVyIGlzIGlzc3VlZCBieSBpbnZva2luZyB0aGUKKyAqIGxwZmNfaXNzdWVfZWxzX3Bsb2dpKCkgcm91dGluZS4gSWYgRmFicmljLURldmljZSBNYW5hZ2VtZW50IEludGVyZmFjZQorICogKEZETUkpIGlzIGNvbmZpZ3VyZWQgdG8gdGhlIEB2cG9ydCwgYSBGRE1JIG5vZGUgd2lsbCBiZSBjcmVhdGVkIGFuZAorICogdGhlIFBMT0dJIHRvIEZETUkgaXMgaXNzdWVkIGJ5IGludm9raW5nIGxwZmNfaXNzdWVfZWxzX3Bsb2dpKCkgcm91dGluZS4KKyAqKi8KIHZvaWQKIGxwZmNfZG9fc2NyX25zX3Bsb2dpKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtNDQzNCw2ICs1NjkxLDE4IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfY21wbF9yZWdfbmV3X3Zwb3J0OiBDb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIG5ldyB2cG9ydC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVnaXN0ZXIgbmV3IHZwb3J0CisgKiBtYWlsYm94IGNvbW1hbmQuIElmIHRoZSBuZXcgdnBvcnQgbWFpbGJveCBjb21tYW5kIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksCisgKiB0aGUgZmFicmljIHJlZ2lzdHJhdGlvbiBsb2dpbiBzaGFsbCBiZSBwZXJmb3JtZWQgb24gcGh5c2ljYWwgcG9ydCAodGhlCisgKiBuZXcgdnBvcnQgY3JlYXRlZCBpcyBhY3R1YWxseSBhIHBoeXNpY2FsIHBvcnQsIHdpdGggVlBJIDApIG9yIHRoZSBwb3J0CisgKiBsb2dpbiB0byBOYW1lIFNlcnZlciBmb3IgU3RhdGUgQ2hhbmdlIFJlcXVlc3QgKFNDUikgd2lsbCBiZSBwZXJmb3JtZWQKKyAqIG9uIHZpcnR1YWwgcG9ydCAocmVhbCB2aXJ0dWFsIHBvcnQsIHdpdGggVlBJIGdyZWF0ZXIgdGhhbiAwKS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2NtcGxfcmVnX25ld192cG9ydChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1iKQogewpAQCAtNDQ5MSw2ICs1NzYwLDE1IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfcmVnaXN0ZXJfbmV3X3Zwb3J0OiBSZWdpc3RlciBhIG5ldyB2cG9ydCB3aXRoIGEgSEJBLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSBob3N0IHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHJlZ2lzdGVycyB0aGUgQHZwb3J0IGFzIGEgbmV3IHZpcnR1YWwgcG9ydCB3aXRoIGEgSEJBLgorICogSXQgaXMgZG9uZSB0aHJvdWdoIGEgcmVnaXN0ZXJpbmcgdnBpIG1haWxib3ggY29tbWFuZC4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3JlZ2lzdGVyX25ld192cG9ydChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwKIAkJCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwKQpAQCAtNDUzMSw2ICs1ODA5LDI2IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfY21wbF9lbHNfZmRpc2M6IENvbXBsZXRpb24gZnVuY3Rpb24gZm9yIGZkaXNjIGlvY2IgY29tbWFuZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcnNwaW9jYjogcG9pbnRlciB0byBscGZjIHJlc3BvbnNlIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGEgRmFicmljIERpc2NvdmVyCisgKiAoRkRJU0MpIEVMUyBjb21tYW5kLiBTaW5jZSBhbGwgdGhlIEZESVNDIEVMUyBjb21tYW5kcyBhcmUgaXNzdWVkCisgKiBzaW5nbGUgdGhyZWFkZWQsIGVhY2ggRkRJU0MgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIHJlc2V0CisgKiB0aGUgZGlzY292ZXJ5IHRpbWVyIGZvciBhbGwgdnBvcnRzIHN1Y2ggdGhhdCB0aGUgdGltZXJzIHdpbGwgbm90IGdldAorICogdW5uZWNlc3NhcnkgdGltZW91dC4gVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGUgRkRJU0MgSU9DQiBzdGF0dXMuIElmIGVycm9yCisgKiBkZXRlY3RlZCwgdGhlIHZwb3J0IHdpbGwgYmUgc2V0IHRvIEZDX1ZQT1JUX0ZBSUxFRCBzdGF0ZS4gT3RoZXJ3aXNlLHRoZQorICogdnBvcnQgd2lsbCBzZXQgdG8gRkNfVlBPUlRfQUNUSVZFIHN0YXRlLiBJdCB0aGVuIGNoZWNrcyB3aGV0aGVyIHRoZSBESUQKKyAqIGFzc2lnbmVkIHRvIHRoZSB2cG9ydCBoYXMgYmVlbiBjaGFuZ2VkIHdpdGggdGhlIGNvbXBsZXRpb24gb2YgdGhlIEZESVNDCisgKiBjb21tYW5kLiBJZiBzbywgYm90aCBSUEkgKFJlbW90ZSBQb3J0IEluZGV4KSBhbmQgVlBJIChWaXJ0dWFsIFBvcnQgSW5kZXgpCisgKiBhcmUgdW5yZWdpc3RlcmVkIGZyb20gdGhlIEhCQSwgYW5kIHRoZW4gdGhlIGxwZmNfcmVnaXN0ZXJfbmV3X3Zwb3J0KCkKKyAqIHJvdXRpbmUgaXMgaW52b2tlZCB0byByZWdpc3RlciBuZXcgdnBvcnQgd2l0aCB0aGUgSEJBLiBPdGhlcndpc2UsIHRoZQorICogbHBmY19kb19zY3JfbnNfcGxvZ2koKSByb3V0aW5lIGlzIGludm9rZWQgdG8gaXNzdWUgYSBQTE9HSSB0byB0aGUgTmFtZQorICogU2VydmVyIGZvciBTdGF0ZSBDaGFuZ2UgUmVxdWVzdCAoU0NSKS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2NtcGxfZWxzX2ZkaXNjKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgICBzdHJ1Y3QgbHBmY19pb2NicSAqcnNwaW9jYikKQEAgLTQ1NjUsNTggKzU4NjMsODAgQEAKIAkJCWdvdG8gb3V0OwogCQkvKiBGRElTQyBmYWlsZWQgKi8KIAkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19FTFMsCi0JCQkJICIwMTI0IEZESVNDIGZhaWxlZC4gKCVkLyVkKVxuIiwKKwkJCQkgIjAxMjYgRkRJU0MgZmFpbGVkLiAoJWQvJWQpXG4iLAogCQkJCSBpcnNwLT51bHBTdGF0dXMsIGlyc3AtPnVuLnVscFdvcmRbNF0pOworCQlnb3RvIGZkaXNjX2ZhaWxlZDsKKwl9CiAJCWlmICh2cG9ydC0+ZmNfdnBvcnQtPnZwb3J0X3N0YXRlID09IEZDX1ZQT1JUX0lOSVRJQUxJWklORykKIAkJCWxwZmNfdnBvcnRfc2V0X3N0YXRlKHZwb3J0LCBGQ19WUE9SVF9GQUlMRUQpOwogCQlscGZjX25scF9wdXQobmRscCk7CiAJCS8qIGdpdmluZyB1cCBvbiBGRElTQy4gQ2FuY2VsIGRpc2NvdmVyeSB0aW1lciAqLwogCQlscGZjX2Nhbl9kaXNjdG1vKHZwb3J0KTsKLQl9IGVsc2UgewotCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwotCQl2cG9ydC0+ZmNfZmxhZyB8PSBGQ19GQUJSSUM7Ci0JCWlmICh2cG9ydC0+cGhiYS0+ZmNfdG9wb2xvZ3kgPT0gVE9QT0xPR1lfTE9PUCkKLQkJCXZwb3J0LT5mY19mbGFnIHw9ICBGQ19QVUJMSUNfTE9PUDsKLQkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJdnBvcnQtPmZjX2ZsYWcgfD0gRkNfRkFCUklDOworCWlmICh2cG9ydC0+cGhiYS0+ZmNfdG9wb2xvZ3kgPT0gVE9QT0xPR1lfTE9PUCkKKwkJdnBvcnQtPmZjX2ZsYWcgfD0gIEZDX1BVQkxJQ19MT09QOworCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKIAotCQl2cG9ydC0+ZmNfbXlESUQgPSBpcnNwLT51bi51bHBXb3JkWzRdICYgTWFza19ESUQ7Ci0JCWxwZmNfdnBvcnRfc2V0X3N0YXRlKHZwb3J0LCBGQ19WUE9SVF9BQ1RJVkUpOwotCQlpZiAoKHZwb3J0LT5mY19wcmV2RElEICE9IHZwb3J0LT5mY19teURJRCkgJiYKLQkJCSEodnBvcnQtPmZjX2ZsYWcgJiBGQ19WUE9SVF9ORUVEU19SRUdfVlBJKSkgewotCQkJLyogSWYgb3VyIE5wb3J0SUQgY2hhbmdlZCwgd2UgbmVlZCB0byBlbnN1cmUgYWxsCi0JCQkgKiByZW1haW5pbmcgTlBPUlRzIGdldCB1bnJlZ19sb2dpbidlZCBzbyB3ZSBjYW4KLQkJCSAqIGlzc3VlIHVucmVnX3ZwaS4KLQkJCSAqLwotCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5wLCBuZXh0X25wLAotCQkJCSZ2cG9ydC0+ZmNfbm9kZXMsIG5scF9saXN0cCkgewotCQkJCWlmICghTkxQX0NIS19OT0RFX0FDVChuZGxwKSB8fAotCQkJCSAgICAobnAtPm5scF9zdGF0ZSAhPSBOTFBfU1RFX05QUl9OT0RFKSB8fAotCQkJCSAgICAhKG5wLT5ubHBfZmxhZyAmIE5MUF9OUFJfQURJU0MpKQotCQkJCQljb250aW51ZTsKLQkJCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwotCQkJCW5wLT5ubHBfZmxhZyAmPSB+TkxQX05QUl9BRElTQzsKLQkJCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7Ci0JCQkJbHBmY191bnJlZ19ycGkodnBvcnQsIG5wKTsKLQkJCX0KLQkJCWxwZmNfbWJ4X3VucmVnX3ZwaSh2cG9ydCk7CisJdnBvcnQtPmZjX215RElEID0gaXJzcC0+dW4udWxwV29yZFs0XSAmIE1hc2tfRElEOworCWxwZmNfdnBvcnRfc2V0X3N0YXRlKHZwb3J0LCBGQ19WUE9SVF9BQ1RJVkUpOworCWlmICgodnBvcnQtPmZjX3ByZXZESUQgIT0gdnBvcnQtPmZjX215RElEKSAmJgorCQkhKHZwb3J0LT5mY19mbGFnICYgRkNfVlBPUlRfTkVFRFNfUkVHX1ZQSSkpIHsKKwkJLyogSWYgb3VyIE5wb3J0SUQgY2hhbmdlZCwgd2UgbmVlZCB0byBlbnN1cmUgYWxsCisJCSAqIHJlbWFpbmluZyBOUE9SVHMgZ2V0IHVucmVnX2xvZ2luJ2VkIHNvIHdlIGNhbgorCQkgKiBpc3N1ZSB1bnJlZ192cGkuCisJCSAqLworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnAsIG5leHRfbnAsCisJCQkmdnBvcnQtPmZjX25vZGVzLCBubHBfbGlzdHApIHsKKwkJCWlmICghTkxQX0NIS19OT0RFX0FDVChuZGxwKSB8fAorCQkJICAgIChucC0+bmxwX3N0YXRlICE9IE5MUF9TVEVfTlBSX05PREUpIHx8CisJCQkgICAgIShucC0+bmxwX2ZsYWcgJiBOTFBfTlBSX0FESVNDKSkKKwkJCQljb250aW51ZTsKIAkJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7Ci0JCQl2cG9ydC0+ZmNfZmxhZyB8PSBGQ19WUE9SVF9ORUVEU19SRUdfVlBJOworCQkJbnAtPm5scF9mbGFnICY9IH5OTFBfTlBSX0FESVNDOwogCQkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQkJbHBmY191bnJlZ19ycGkodnBvcnQsIG5wKTsKIAkJfQotCi0JCWlmICh2cG9ydC0+ZmNfZmxhZyAmIEZDX1ZQT1JUX05FRURTX1JFR19WUEkpCi0JCQlscGZjX3JlZ2lzdGVyX25ld192cG9ydChwaGJhLCB2cG9ydCwgbmRscCk7Ci0JCWVsc2UKLQkJCWxwZmNfZG9fc2NyX25zX3Bsb2dpKHBoYmEsIHZwb3J0KTsKLQotCQkvKiBVbmNvbmRpdGlvbmFseSBraWNrIG9mZiByZWxlYXNpbmcgZmFicmljIG5vZGUgZm9yIHZwb3J0cyAqLwotCQlscGZjX25scF9wdXQobmRscCk7CisJCWxwZmNfbWJ4X3VucmVnX3ZwaSh2cG9ydCk7CisJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CisJCXZwb3J0LT5mY19mbGFnIHw9IEZDX1ZQT1JUX05FRURTX1JFR19WUEk7CisJCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKIAl9CiAKKwlpZiAodnBvcnQtPmZjX2ZsYWcgJiBGQ19WUE9SVF9ORUVEU19SRUdfVlBJKQorCQlscGZjX3JlZ2lzdGVyX25ld192cG9ydChwaGJhLCB2cG9ydCwgbmRscCk7CisJZWxzZQorCQlscGZjX2RvX3Njcl9uc19wbG9naShwaGJhLCB2cG9ydCk7CisJZ290byBvdXQ7CitmZGlzY19mYWlsZWQ6CisJbHBmY192cG9ydF9zZXRfc3RhdGUodnBvcnQsIEZDX1ZQT1JUX0ZBSUxFRCk7CisJLyogQ2FuY2VsIGRpc2NvdmVyeSB0aW1lciAqLworCWxwZmNfY2FuX2Rpc2N0bW8odnBvcnQpOworCWxwZmNfbmxwX3B1dChuZGxwKTsKIG91dDoKIAlscGZjX2Vsc19mcmVlX2lvY2IocGhiYSwgY21kaW9jYik7CiB9CiAKKy8qKgorICogbHBmY19pc3N1ZV9lbHNfZmRpc2M6IElzc3VlIGEgZmRpc2MgaW9jYiBjb21tYW5kLgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqIEByZXRyeTogbnVtYmVyIG9mIHJldHJpZXMgdG8gdGhlIGNvbW1hbmQgSU9DQi4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgYW5kIGlzc3VlcyBhIEZhYnJpYyBEaXNjb3ZlciAoRkRJU0MpIElPQ0IgdG8KKyAqIGEgcmVtb3RlIG5vZGUgKEBuZGxwKSBvZmYgYSBAdnBvcnQuIEl0IHVzZXMgdGhlIGxwZmNfaXNzdWVfZmFicmljX2lvY2IoKQorICogcm91dGluZSB0byBpc3N1ZSB0aGUgSU9DQiwgd2hpY2ggbWFrZXMgc3VyZSBvbmx5IG9uZSBvdXRzdGFuZGluZyBmYWJyaWMKKyAqIElPQ0Igd2lsbCBiZSBzZW50IG9mZiBIQkEgYXQgYW55IGdpdmVuIHRpbWUuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBGRElTQyBFTFMgY29tbWFuZC4KKyAqCisgKiBSZXR1cm4gY29kZQorICogICAwIC0gU3VjY2Vzc2Z1bGx5IGlzc3VlZCBmZGlzYyBpb2NiIGNvbW1hbmQKKyAqICAgMSAtIEZhaWxlZCB0byBpc3N1ZSBmZGlzYyBpb2NiIGNvbW1hbmQKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfaXNzdWVfZWxzX2ZkaXNjKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsCiAJCSAgICAgdWludDhfdCByZXRyeSkKQEAgLTQ2OTEsNiArNjAxMSwyMCBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfY21wbF9lbHNfbnBpdl9sb2dvOiBDb21wbGV0aW9uIGZ1bmN0aW9uIHdpdGggdnBvcnQgbG9nby4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQGNtZGlvY2I6IHBvaW50ZXIgdG8gbHBmYyBjb21tYW5kIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcnNwaW9jYjogcG9pbnRlciB0byBscGZjIHJlc3BvbnNlIGlvY2IgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBpc3N1aW5nIG9mIGEgTE9HTworICogRUxTIGNvbW1hbmQgb2ZmIGEgdnBvcnQuIEl0IGZyZWVzIHRoZSBjb21tYW5kIElPQ0IgYW5kIHRoZW4gZGVjcmVtZW50IHRoZQorICogcmVmZXJlbmNlIGNvdW50IGhlbGQgb24gbmRscCBmb3IgdGhpcyBjb21wbGV0aW9uIGZ1bmN0aW9uLCBpbmRpY2F0aW5nIHRoYXQKKyAqIHRoZSByZWZlcmVuY2UgdG8gdGhlIG5kbHAgaXMgbm8gbG9uZyBuZWVkZWQuIE5vdGUgdGhhdCB0aGUKKyAqIGxwZmNfZWxzX2ZyZWVfaW9jYigpIHJvdXRpbmUgZGVjcmVtZW50cyB0aGUgbmRscCByZWZlcmVuY2UgaGVsZCBmb3IgdGhpcworICogY2FsbGJhY2sgZnVuY3Rpb24gYW5kIGFuIGFkZGl0aW9uYWwgZXhwbGljaXQgbmRscCByZWZlcmVuY2UgZGVjcmVtZW50YXRpb24KKyAqIHdpbGwgdHJpZ2dlciB0aGUgYWN0dWFsIHJlbGVhc2Ugb2YgdGhlIG5kbHAuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2Vsc19ucGl2X2xvZ28oc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJCXN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQpAQCAtNDcxMiw2ICs2MDQ2LDIyIEBACiAJbHBmY19ubHBfcHV0KG5kbHApOwogfQogCisvKioKKyAqIGxwZmNfaXNzdWVfZWxzX25waXZfbG9nbzogSXNzdWUgYSBsb2dvIG9mZiBhIHZwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGEgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAbmRscDogcG9pbnRlciB0byBhIG5vZGUtbGlzdCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXNzdWVzIGEgTE9HTyBFTFMgY29tbWFuZCB0byBhbiBAbmRscCBvZmYgYSBAdnBvcnQuCisgKgorICogTm90ZSB0aGF0LCBpbiBscGZjX3ByZXBfZWxzX2lvY2IoKSByb3V0aW5lLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIG5kbHAKKyAqIHdpbGwgYmUgaW5jcmVtZW50ZWQgYnkgMSBmb3IgaG9sZGluZyB0aGUgbmRscCBhbmQgdGhlIHJlZmVyZW5jZSB0byBuZGxwCisgKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBjb250ZXh0MSBmaWVsZCBvZiB0aGUgSU9DQiBmb3IgdGhlIGNvbXBsZXRpb24KKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBMT0dPIEVMUyBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAwIC0gU3VjY2Vzc2Z1bGx5IGlzc3VlZCBsb2dvIG9mZiB0aGUgQHZwb3J0CisgKiAgIDEgLSBGYWlsZWQgdG8gaXNzdWUgbG9nbyBvZmYgdGhlIEB2cG9ydAorICoqLwogaW50CiBscGZjX2lzc3VlX2Vsc19ucGl2X2xvZ28oc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCkKIHsKQEAgLTQ3NTcsNiArNjEwNywxNyBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfZmFicmljX2Jsb2NrX3RpbWVvdXQ6IEhhbmRsZXIgZnVuY3Rpb24gdG8gdGhlIGZhYnJpYyBibG9jayB0aW1lci4KKyAqIEBwdHI6IGhvbGRlciBmb3IgdGhlIHRpbWVyIGZ1bmN0aW9uIGFzc29jaWF0ZWQgZGF0YS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCBieSB0aGUgZmFicmljIGlvY2IgYmxvY2sgdGltZXIgYWZ0ZXIKKyAqIHRpbWVvdXQuIEl0IHBvc3RzIHRoZSBmYWJyaWMgaW9jYiBibG9jayB0aW1lb3V0IGV2ZW50IGJ5IHNldHRpbmcgdGhlCisgKiBXT1JLRVJfRkFCUklDX0JMT0NLX1RNTyBiaXQgdG8gd29yayBwb3J0IGV2ZW50IGJpdG1hcCBhbmQgdGhlbiBpbnZva2VzCisgKiBscGZjX3dvcmtlcl93YWtlX3VwKCkgcm91dGluZSB0byB3YWtlIHVwIHRoZSB3b3JrZXIgdGhyZWFkLiBJdCBpcyBmb3IKKyAqIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGludm9rZSB0aGUgbHBmY191bmJsb2NrX2ZhYnJpY19pb2NicygpIG9uIHRoZQorICogcG9zdGVkIGV2ZW50IFdPUktFUl9GQUJSSUNfQkxPQ0tfVE1PLgorICoqLwogdm9pZAogbHBmY19mYWJyaWNfYmxvY2tfdGltZW91dCh1bnNpZ25lZCBsb25nIHB0cikKIHsKQEAgLTQ3NzUsNiArNjEzNiwxNiBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX3Jlc3VtZV9mYWJyaWNfaW9jYnM6IElzc3VlIGEgZmFicmljIGlvY2IgZnJvbSBkcml2ZXIgaW50ZXJuYWwgbGlzdC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpc3N1ZXMgb25lIGZhYnJpYyBpb2NiIGZyb20gdGhlIGRyaXZlciBpbnRlcm5hbCBsaXN0IHRvCisgKiB0aGUgSEJBLiBJdCBmaXJzdCBjaGVja3Mgd2hldGhlciBpdCdzIHJlYWR5IHRvIGlzc3VlIG9uZSBmYWJyaWMgaW9jYiB0bworICogdGhlIEhCQSAod2hldGhlciB0aGVyZSBpcyBubyBvdXRzdGFuZGluZyBmYWJyaWMgaW9jYikuIElmIHNvLCBpdCBzaGFsbAorICogcmVtb3ZlIG9uZSBwZW5kaW5nIGZhYnJpYyBpb2NiIGZyb20gdGhlIGRyaXZlciBpbnRlcm5hbCBsaXN0IGFuZCBpbnZva2VzCisgKiBscGZjX3NsaV9pc3N1ZV9pb2NiKCkgcm91dGluZSB0byBzZW5kIHRoZSBmYWJyaWMgaW9jYiB0byB0aGUgSEJBLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfcmVzdW1lX2ZhYnJpY19pb2NicyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC00ODI0LDYgKzYxOTUsMTUgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY191bmJsb2NrX2ZhYnJpY19pb2NiczogVW5ibG9jayBpc3N1aW5nIGZhYnJpYyBpb2NiIGNvbW1hbmQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgdW5ibG9ja3MgdGhlICBpc3N1aW5nIGZhYnJpYyBpb2NiIGNvbW1hbmQuIFRoZSBmdW5jdGlvbgorICogd2lsbCBjbGVhciB0aGUgZmFicmljIGlvY2IgYmxvY2sgYml0IGFuZCB0aGVuIGludm9rZSB0aGUgcm91dGluZQorICogbHBmY19yZXN1bWVfZmFicmljX2lvY2JzKCkgdG8gaXNzdWUgb25lIG9mIHRoZSBwZW5kaW5nIGZhYnJpYyBpb2NiCisgKiBmcm9tIHRoZSBkcml2ZXIgaW50ZXJuYWwgZmFicmljIGlvY2IgbGlzdC4KKyAqKi8KIHZvaWQKIGxwZmNfdW5ibG9ja19mYWJyaWNfaW9jYnMoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtNDgzMyw2ICs2MjEzLDE1IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfYmxvY2tfZmFicmljX2lvY2JzOiBCbG9jayBpc3N1aW5nIGZhYnJpYyBpb2NiIGNvbW1hbmQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgYmxvY2tzIHRoZSBpc3N1aW5nIGZhYnJpYyBpb2NiIGZvciBhIHNwZWNpZmllZCBhbW91bnQgb2YKKyAqIHRpbWUgKGN1cnJlbnRseSAxMDAgbXMpLiBUaGlzIGlzIGRvbmUgYnkgc2V0IHRoZSBmYWJyaWMgaW9jYiBibG9jayBiaXQKKyAqIGFuZCBzZXQgdXAgYSB0aW1lb3V0IHRpbWVyIGZvciAxMDBtcy4gV2hlbiB0aGUgYmxvY2sgYml0IGlzIHNldCwgbm8gbW9yZQorICogZmFicmljIGlvY2Igd2lsbCBiZSBpc3N1ZWQgb3V0IG9mIHRoZSBIQkEuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19ibG9ja19mYWJyaWNfaW9jYnMoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtNDg0Niw2ICs2MjM1LDE5IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfY21wbF9mYWJyaWNfaW9jYjogQ29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZmFicmljIGlvY2IuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBjbWRpb2NiOiBwb2ludGVyIHRvIGxwZmMgY29tbWFuZCBpb2NiIGRhdGEgc3RydWN0dXJlLgorICogQHJzcGlvY2I6IHBvaW50ZXIgdG8gbHBmYyByZXNwb25zZSBpb2NiIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBwdXQgdG8gdGhlIGZhYnJpYyBpb2NiJ3MKKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIHBvaW50ZXIgKGlvY2ItPmlvY2JfY21wbCkuIFRoZSBvcmlnaW5hbCBpb2NiJ3MgY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIHBvaW50ZXIgaGFzIGJlZW4gc3RvcmVkIGluIGlvY2ItPmZhYnJpY19pb2NiX2NtcGwuIFRoaXMgY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIGZpcnN0IHJlc3RvcmVzIGFuZCBpbnZva2VzIHRoZSBvcmlnaW5hbCBpb2NiJ3MgY2FsbGJhY2sgZnVuY3Rpb24KKyAqIGFuZCB0aGVuIGludm9rZXMgdGhlIGxwZmNfcmVzdW1lX2ZhYnJpY19pb2NicygpIHJvdXRpbmUgdG8gaXNzdWUgdGhlIG5leHQKKyAqIGZhYnJpYyBib3VuZCBpb2NiIGZyb20gdGhlIGRyaXZlciBpbnRlcm5hbCBmYWJyaWMgaW9jYiBsaXN0IG9udG8gdGhlIHdpcmUuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jbXBsX2ZhYnJpY19pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC00ODkyLDYgKzYyOTQsMzAgQEAKIAl9CiB9CiAKKy8qKgorICogbHBmY19pc3N1ZV9mYWJyaWNfaW9jYjogSXNzdWUgYSBmYWJyaWMgaW9jYiBjb21tYW5kLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAaW9jYjogcG9pbnRlciB0byBscGZjIGNvbW1hbmQgaW9jYiBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCBhcyB0aGUgdG9wLWxldmVsIEFQSSBmb3IgaXNzdWluZyBhIGZhYnJpYyBpb2NiIGNvbW1hbmQKKyAqIHN1Y2ggYXMgRkxPR0kgYW5kIEZESVNDLiBUbyBhY2NvbW1vZGF0ZSBjZXJ0YWluIHN3aXRjaCBmYWJyaWMsIHRoaXMgZHJpdmVyCisgKiBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoYXQgb25seSBvbmUgZmFicmljIGJvdW5kIGlvY2Igd2lsbCBiZSBvdXRzdGFuZGluZyBhdAorICogYW55IGdpdmVuIHRpbWUuIEFzIHN1Y2gsIHRoaXMgZnVuY3Rpb24gd2lsbCBmaXJzdCBjaGVjayB0byBzZWUgd2hldGhlciB0aGVyZQorICogaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyBmYWJyaWMgaW9jYiBvbiB0aGUgd2lyZS4gSWYgc28sIGl0IHdpbGwgcHV0IHRoZQorICogbmV3bHkgaXNzdWVkIGlvY2Igb250byB0aGUgZHJpdmVyIGludGVybmFsIGZhYnJpYyBpb2NiIGxpc3QsIHdhaXRpbmcgdG8gYmUKKyAqIGlzc3VlZCBsYXRlci4gT3RoZXJ3aXNlLCBpdCB3aWxsIGlzc3VlIHRoZSBpb2NiIG9uIHRoZSB3aXJlIGFuZCB1cGRhdGUgdGhlCisgKiBmYWJyaWMgaW9jYiBjb3VudCBpdCBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG9uZSBmYWJyaWMgaW9jYiBvbiB0aGUgd2lyZS4KKyAqCisgKiBOb3RlLCB0aGlzIGltcGxlbWVudGF0aW9uIGhhcyBhIHBvdGVudGlhbCBzZW5kaW5nIG91dCBmYWJyaWMgSU9DQnMgb3V0IG9mCisgKiBvcmRlci4gVGhlIHByb2JsZW0gaXMgY2F1c2VkIGJ5IHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlICJyZWFkeSIgYm9vbGVuIGRvZXMKKyAqIG5vdCBpbmNsdWRlIHRoZSBjb25kaXRpb24gdGhhdCB0aGUgaW50ZXJuYWwgZmFicmljIElPQ0IgbGlzdCBpcyBlbXB0eS4gQXMKKyAqIHN1Y2gsIGl0IGlzIHBvc3NpYmxlIGEgZmFicmljIElPQ0IgaXNzdWVkIGJ5IHRoaXMgcm91dGluZSBtaWdodCBiZSAianVtcCIKKyAqIGFoZWFkIG9mIHRoZSBmYWJyaWMgSU9DQnMgaW4gdGhlIGludGVybmFsIGxpc3QuCisgKgorICogUmV0dXJuIGNvZGUKKyAqICAgSU9DQl9TVUNDRVNTIC0gZWl0aGVyIGZhYnJpYyBpb2NiIHB1dCBvbiB0aGUgbGlzdCBvciBpc3N1ZWQgc3VjY2Vzc2Z1bGx5CisgKiAgIElPQ0JfRVJST1IgLSBmYWlsZWQgdG8gaXNzdWUgZmFicmljIGlvY2IKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfaXNzdWVfZmFicmljX2lvY2Ioc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqaW9jYikKIHsKQEAgLTQ5MzcsNyArNjM2MywxNyBAQAogCXJldHVybiByZXQ7CiB9CiAKLQorLyoqCisgKiBscGZjX2ZhYnJpY19hYm9ydF92cG9ydDogQWJvcnQgYSB2cG9ydCdzIGlvY2JzIGZyb20gZHJpdmVyIGZhYnJpYyBpb2NiIGxpc3QuCisgKiBAdnBvcnQ6IHBvaW50ZXIgdG8gYSB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgYWJvcnRzIGFsbCB0aGUgSU9DQnMgYXNzb2NpYXRlZCB3aXRoIGEgQHZwb3J0IGZyb20gdGhlCisgKiBkcml2ZXIgaW50ZXJuYWwgZmFicmljIElPQ0IgbGlzdC4gVGhlIGxpc3QgY29udGFpbnMgZmFicmljIElPQ0JzIHRvIGJlCisgKiBpc3N1ZWQgdG8gdGhlIEVMUyBJT0NCIHJpbmcuIFRoaXMgYWJvcnQgZnVuY3Rpb24gd2Fsa3MgdGhlIGZhYnJpYyBJT0NCCisgKiBsaXN0LCByZW1vdmVzIGVhY2ggSU9DQiBhc3NvY2lhdGVkIHdpdGggdGhlIEB2cG9ydCBvZmYgdGhlIGxpc3QsIHNldCB0aGUKKyAqIHN0YXR1cyBmZWlsZCB0byBJT1NUQVRfTE9DQUxfUkVKRUNULCBhbmQgaW52b2tlcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgSU9DQi4KKyAqKi8KIHN0YXRpYyB2b2lkIGxwZmNfZmFicmljX2Fib3J0X3Zwb3J0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKIAlMSVNUX0hFQUQoY29tcGxldGlvbnMpOwpAQCAtNDk2Nyw2ICs2NDAzLDE3IEBACiAJfQogfQogCisvKioKKyAqIGxwZmNfZmFicmljX2Fib3J0X25wb3J0OiBBYm9ydCBhIG5kbHAncyBpb2NicyBmcm9tIGRyaXZlciBmYWJyaWMgaW9jYiBsaXN0LgorICogQG5kbHA6IHBvaW50ZXIgdG8gYSBub2RlLWxpc3QgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGFib3J0cyBhbGwgdGhlIElPQ0JzIGFzc29jaWF0ZWQgd2l0aCBhbiBAbmRscCBmcm9tIHRoZQorICogZHJpdmVyIGludGVybmFsIGZhYnJpYyBJT0NCIGxpc3QuIFRoZSBsaXN0IGNvbnRhaW5zIGZhYnJpYyBJT0NCcyB0byBiZQorICogaXNzdWVkIHRvIHRoZSBFTFMgSU9DQiByaW5nLiBUaGlzIGFib3J0IGZ1bmN0aW9uIHdhbGtzIHRoZSBmYWJyaWMgSU9DQgorICogbGlzdCwgcmVtb3ZlcyBlYWNoIElPQ0IgYXNzb2NpYXRlZCB3aXRoIHRoZSBAbmRscCBvZmYgdGhlIGxpc3QsIHNldCB0aGUKKyAqIHN0YXR1cyBmZWlsZCB0byBJT1NUQVRfTE9DQUxfUkVKRUNULCBhbmQgaW52b2tlcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgSU9DQi4KKyAqKi8KIHZvaWQgbHBmY19mYWJyaWNfYWJvcnRfbnBvcnQoc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHApCiB7CiAJTElTVF9IRUFEKGNvbXBsZXRpb25zKTsKQEAgLTQ5OTYsNiArNjQ0MywxNyBAQAogCX0KIH0KIAorLyoqCisgKiBscGZjX2ZhYnJpY19hYm9ydF9oYmE6IEFib3J0IGFsbCBpb2NicyBvbiBkcml2ZXIgZmFicmljIGlvY2IgbGlzdC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBhYm9ydHMgYWxsIHRoZSBJT0NCcyBjdXJyZW50bHkgb24gdGhlIGRyaXZlciBpbnRlcm5hbAorICogZmFicmljIElPQ0IgbGlzdC4gVGhlIGxpc3QgY29udGFpbnMgZmFicmljIElPQ0JzIHRvIGJlIGlzc3VlZCB0byB0aGUgRUxTCisgKiBJT0NCIHJpbmcuIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGVudGlyZSBJT0NCIGxpc3Qgb2ZmIHRoZSBmYWJyaWMgSU9DQgorICogbGlzdCwgcmVtb3ZlcyBJT0NCcyBvZmYgdGhlIGxpc3QsIHNldCB0aGUgc3RhdHVzIGZlaWxkIHRvCisgKiBJT1NUQVRfTE9DQUxfUkVKRUNULCBhbmQgaW52b2tlcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCisgKiB0aGUgSU9DQi4KKyAqKi8KIHZvaWQgbHBmY19mYWJyaWNfYWJvcnRfaGJhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKIAlMSVNUX0hFQUQoY29tcGxldGlvbnMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19oYmFkaXNjLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2hiYWRpc2MuYwppbmRleCBhOThkMTFiLi5hMWE3MGQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2hiYWRpc2MuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2hiYWRpc2MuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHNjc2kvc2NzaV90cmFuc3BvcnRfZmMuaD4KIAogI2luY2x1ZGUgImxwZmNfaHcuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKICNpbmNsdWRlICJscGZjX3Njc2kuaCIKQEAgLTg4LDE0ICs4OSw2IEBACiAJCQkmcGhiYS0+c2xpLnJpbmdbcGhiYS0+c2xpLmZjcF9yaW5nXSwKIAkJCW5kbHAtPm5scF9zaWQsIDAsIExQRkNfQ1RYX1RHVCk7CiAJfQotCi0JLyoKLQkgKiBBIGRldmljZSBpcyBub3JtYWxseSBibG9ja2VkIGZvciByZWRpc2NvdmVyeSBhbmQgdW5ibG9ja2VkIHdoZW4KLQkgKiBkZXZsb3NzIHRpbWVvdXQgaGFwcGVucy4gIEluIGNhc2UgYSB2cG9ydCBpcyByZW1vdmVkIG9yIGRyaXZlcgotCSAqIHVubG9hZGVkIGJlZm9yZSBkZXZsb3NzIHRpbWVvdXQgaGFwcGVucywgd2UgbmVlZCB0byB1bmJsb2NrIGhlcmUuCi0JICovCi0Jc2NzaV90YXJnZXRfdW5ibG9jaygmcnBvcnQtPmRldik7Ci0JcmV0dXJuOwogfQogCiAvKgpAQCAtMjE1LDggKzIwOCwxNiBAQAogCQlyZXR1cm47CiAJfQogCi0JaWYgKG5kbHAtPm5scF9zdGF0ZSA9PSBOTFBfU1RFX01BUFBFRF9OT0RFKQorCWlmIChuZGxwLT5ubHBfc3RhdGUgPT0gTkxQX1NURV9NQVBQRURfTk9ERSkgeworCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0lORk8sIExPR19ESVNDT1ZFUlksCisJCQkJICIwMjg0IERldmxvc3MgdGltZW91dCBJZ25vcmVkIG9uICIKKwkJCQkgIldXUE4gJXg6JXg6JXg6JXg6JXg6JXg6JXg6JXggIgorCQkJCSAiTlBvcnQgeCV4XG4iLAorCQkJCSAqbmFtZSwgKihuYW1lKzEpLCAqKG5hbWUrMiksICoobmFtZSszKSwKKwkJCQkgKihuYW1lKzQpLCAqKG5hbWUrNSksICoobmFtZSs2KSwgKihuYW1lKzcpLAorCQkJCSBuZGxwLT5ubHBfRElEKTsKIAkJcmV0dXJuOworCX0KIAogCWlmIChuZGxwLT5ubHBfdHlwZSAmIE5MUF9GQUJSSUMpIHsKIAkJLyogV2Ugd2lsbCBjbGVhbiB1cCB0aGVzZSBOb2RlcyBpbiBsaW5rdXAgKi8KQEAgLTIzNyw4ICsyMzgsNiBAQAogCQlscGZjX3NsaV9hYm9ydF9pb2NiKHZwb3J0LCAmcGhiYS0+c2xpLnJpbmdbcGhiYS0+c2xpLmZjcF9yaW5nXSwKIAkJCQkgICAgbmRscC0+bmxwX3NpZCwgMCwgTFBGQ19DVFhfVEdUKTsKIAl9Ci0JaWYgKHZwb3J0LT5sb2FkX2ZsYWcgJiBGQ19VTkxPQURJTkcpCi0JCXdhcm5fb24gPSAwOwogCiAJaWYgKHdhcm5fb24pIHsKIAkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19ESVNDT1ZFUlksCkBAIC0yNzYsNiArMjc1LDEyNCBAQAogCQlscGZjX2Rpc2Nfc3RhdGVfbWFjaGluZSh2cG9ydCwgbmRscCwgTlVMTCwgTkxQX0VWVF9ERVZJQ0VfUk0pOwogfQogCisvKioKKyAqIGxwZmNfYWxsb2NfZmFzdF9ldnQ6IEFsbG9jYXRlcyBkYXRhIHN0cnVjdHVyZSBmb3IgcG9zdGluZyBldmVudC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIGhiYSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBmdW5jdGlvbnMgd2hpY2ggbmVlZCB0byBwb3N0CisgKiBldmVudHMgZnJvbSBpbnRlcnJ1cHQgY29udGV4dC4gVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgZGF0YQorICogc3RydWN0dXJlIHJlcXVpcmVkIGZvciBwb3N0aW5nIGV2ZW50LiBJdCBhbHNvIGtlZXBzIHRyYWNrIG9mCisgKiBudW1iZXIgb2YgZXZlbnRzIHBlbmRpbmcgYW5kIHByZXZlbnQgZXZlbnQgc3Rvcm0gd2hlbiB0aGVyZSBhcmUKKyAqIHRvbyBtYW55IGV2ZW50cy4KKyAqKi8KK3N0cnVjdCBscGZjX2Zhc3RfcGF0aF9ldmVudCAqCitscGZjX2FsbG9jX2Zhc3RfZXZ0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkgeworCXN0cnVjdCBscGZjX2Zhc3RfcGF0aF9ldmVudCAqcmV0OworCisJLyogSWYgdGhlcmUgYXJlIGxvdCBvZiBmYXN0IGV2ZW50IGRvIG5vdCBleGhhdXN0IG1lbW9yeSBkdWUgdG8gdGhpcyAqLworCWlmIChhdG9taWNfcmVhZCgmcGhiYS0+ZmFzdF9ldmVudF9jb3VudCkgPiBMUEZDX01BWF9FVlRfQ09VTlQpCisJCXJldHVybiBOVUxMOworCisJcmV0ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50KSwKKwkJCUdGUF9BVE9NSUMpOworCWlmIChyZXQpCisJCWF0b21pY19pbmMoJnBoYmEtPmZhc3RfZXZlbnRfY291bnQpOworCUlOSVRfTElTVF9IRUFEKCZyZXQtPndvcmtfZXZ0LmV2dF9saXN0cCk7CisJcmV0LT53b3JrX2V2dC5ldnQgPSBMUEZDX0VWVF9GQVNUUEFUSF9NR01UX0VWVDsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGxwZmNfZnJlZV9mYXN0X2V2dDogRnJlZXMgZXZlbnQgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcGhiYTogUG9pbnRlciB0byBoYmEgY29udGV4dCBvYmplY3QuCisgKiBAZXZ0OiAgRXZlbnQgb2JqZWN0IHdoaWNoIG5lZWQgdG8gYmUgZnJlZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIHBvc3RpbmcKKyAqIGV2ZW50cy4KKyAqKi8KK3ZvaWQKK2xwZmNfZnJlZV9mYXN0X2V2dChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsCisJCXN0cnVjdCBscGZjX2Zhc3RfcGF0aF9ldmVudCAqZXZ0KSB7CisKKwlhdG9taWNfZGVjKCZwaGJhLT5mYXN0X2V2ZW50X2NvdW50KTsKKwlrZnJlZShldnQpOworfQorCisvKioKKyAqIGxwZmNfc2VuZF9mYXN0cGF0aF9ldnQ6IFBvc3RzIGV2ZW50cyBnZW5lcmF0ZWQgZnJvbSBmYXN0IHBhdGguCisgKiBAcGhiYTogUG9pbnRlciB0byBoYmEgY29udGV4dCBvYmplY3QuCisgKiBAZXZ0cDogRXZlbnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB3b3JrZXIgdGhyZWFkLCB3aGVuIHRoZSBpbnRlcnJ1cHQKKyAqIGNvbnRleHQgbmVlZCB0byBwb3N0IGFuIGV2ZW50LiBUaGlzIGZ1bmN0aW9uIHBvc3RzIHRoZSBldmVudAorICogdG8gZmMgdHJhbnNwb3J0IG5ldGxpbmsgaW50ZXJmYWNlLgorICoqLworc3RhdGljIHZvaWQKK2xwZmNfc2VuZF9mYXN0cGF0aF9ldnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLAorCQlzdHJ1Y3QgbHBmY193b3JrX2V2dCAqZXZ0cCkKK3sKKwl1bnNpZ25lZCBsb25nIGV2dF9jYXRlZ29yeSwgZXZ0X3N1Yl9jYXRlZ29yeTsKKwlzdHJ1Y3QgbHBmY19mYXN0X3BhdGhfZXZlbnQgKmZhc3RfZXZ0X2RhdGE7CisJY2hhciAqZXZ0X2RhdGE7CisJdWludDMyX3QgZXZ0X2RhdGFfc2l6ZTsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdDsKKworCWZhc3RfZXZ0X2RhdGEgPSBjb250YWluZXJfb2YoZXZ0cCwgc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50LAorCQl3b3JrX2V2dCk7CisKKwlldnRfY2F0ZWdvcnkgPSAodW5zaWduZWQgbG9uZykgZmFzdF9ldnRfZGF0YS0+dW4uZmFicmljX2V2dC5ldmVudF90eXBlOworCWV2dF9zdWJfY2F0ZWdvcnkgPSAodW5zaWduZWQgbG9uZykgZmFzdF9ldnRfZGF0YS0+dW4uCisJCQlmYWJyaWNfZXZ0LnN1YmNhdGVnb3J5OworCXNob3N0ID0gbHBmY19zaG9zdF9mcm9tX3Zwb3J0KGZhc3RfZXZ0X2RhdGEtPnZwb3J0KTsKKwlpZiAoZXZ0X2NhdGVnb3J5ID09IEZDX1JFR19GQUJSSUNfRVZFTlQpIHsKKwkJaWYgKGV2dF9zdWJfY2F0ZWdvcnkgPT0gTFBGQ19FVkVOVF9GQ1BSRENIS0VSUikgeworCQkJZXZ0X2RhdGEgPSAoY2hhciAqKSAmZmFzdF9ldnRfZGF0YS0+dW4ucmVhZF9jaGVja19lcnJvcjsKKwkJCWV2dF9kYXRhX3NpemUgPSBzaXplb2YoZmFzdF9ldnRfZGF0YS0+dW4uCisJCQkJcmVhZF9jaGVja19lcnJvcik7CisJCX0gZWxzZSBpZiAoKGV2dF9zdWJfY2F0ZWdvcnkgPT0gTFBGQ19FVkVOVF9GQUJSSUNfQlVTWSkgfHwKKwkJCShldnRfc3ViX2NhdGVnb3J5ID09IElPU1RBVF9OUE9SVF9CU1kpKSB7CisJCQlldnRfZGF0YSA9IChjaGFyICopICZmYXN0X2V2dF9kYXRhLT51bi5mYWJyaWNfZXZ0OworCQkJZXZ0X2RhdGFfc2l6ZSA9IHNpemVvZihmYXN0X2V2dF9kYXRhLT51bi5mYWJyaWNfZXZ0KTsKKwkJfSBlbHNlIHsKKwkJCWxwZmNfZnJlZV9mYXN0X2V2dChwaGJhLCBmYXN0X2V2dF9kYXRhKTsKKwkJCXJldHVybjsKKwkJfQorCX0gZWxzZSBpZiAoZXZ0X2NhdGVnb3J5ID09IEZDX1JFR19TQ1NJX0VWRU5UKSB7CisJCXN3aXRjaCAoZXZ0X3N1Yl9jYXRlZ29yeSkgeworCQljYXNlIExQRkNfRVZFTlRfUUZVTEw6CisJCWNhc2UgTFBGQ19FVkVOVF9ERVZCU1k6CisJCQlldnRfZGF0YSA9IChjaGFyICopICZmYXN0X2V2dF9kYXRhLT51bi5zY3NpX2V2dDsKKwkJCWV2dF9kYXRhX3NpemUgPSBzaXplb2YoZmFzdF9ldnRfZGF0YS0+dW4uc2NzaV9ldnQpOworCQkJYnJlYWs7CisJCWNhc2UgTFBGQ19FVkVOVF9DSEVDS19DT05EOgorCQkJZXZ0X2RhdGEgPSAoY2hhciAqKSAmZmFzdF9ldnRfZGF0YS0+dW4uY2hlY2tfY29uZF9ldnQ7CisJCQlldnRfZGF0YV9zaXplID0gIHNpemVvZihmYXN0X2V2dF9kYXRhLT51bi4KKwkJCQljaGVja19jb25kX2V2dCk7CisJCQlicmVhazsKKwkJY2FzZSBMUEZDX0VWRU5UX1ZBUlFVRURFUFRIOgorCQkJZXZ0X2RhdGEgPSAoY2hhciAqKSAmZmFzdF9ldnRfZGF0YS0+dW4ucXVldWVfZGVwdGhfZXZ0OworCQkJZXZ0X2RhdGFfc2l6ZSA9IHNpemVvZihmYXN0X2V2dF9kYXRhLT51bi4KKwkJCQlxdWV1ZV9kZXB0aF9ldnQpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlscGZjX2ZyZWVfZmFzdF9ldnQocGhiYSwgZmFzdF9ldnRfZGF0YSk7CisJCQlyZXR1cm47CisJCX0KKwl9IGVsc2UgeworCQlscGZjX2ZyZWVfZmFzdF9ldnQocGhiYSwgZmFzdF9ldnRfZGF0YSk7CisJCXJldHVybjsKKwl9CisKKwlmY19ob3N0X3Bvc3RfdmVuZG9yX2V2ZW50KHNob3N0LAorCQlmY19nZXRfZXZlbnRfbnVtYmVyKCksCisJCWV2dF9kYXRhX3NpemUsCisJCWV2dF9kYXRhLAorCQlTQ1NJX05MX1ZJRF9UWVBFX1BDSSB8IFBDSV9WRU5ET1JfSURfRU1VTEVYKTsKKworCWxwZmNfZnJlZV9mYXN0X2V2dChwaGJhLCBmYXN0X2V2dF9kYXRhKTsKKwlyZXR1cm47Cit9CisKIHN0YXRpYyB2b2lkCiBscGZjX3dvcmtfbGlzdF9kb25lKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTM0Nyw2ICs0NjQsMTAgQEAKIAkJCWxwZmNfdW5ibG9ja19tZ210X2lvKHBoYmEpOwogCQkJY29tcGxldGUoKHN0cnVjdCBjb21wbGV0aW9uICopKGV2dHAtPmV2dF9hcmcyKSk7CiAJCQlicmVhazsKKwkJY2FzZSBMUEZDX0VWVF9GQVNUUEFUSF9NR01UX0VWVDoKKwkJCWxwZmNfc2VuZF9mYXN0cGF0aF9ldnQocGhiYSwgZXZ0cCk7CisJCQlmcmVlX2V2dCA9IDA7CisJCQlicmVhazsKIAkJfQogCQlpZiAoZnJlZV9ldnQpCiAJCQlrZnJlZShldnRwKTsKQEAgLTM3MSw2ICs0OTIsNyBAQAogCXNwaW5fdW5sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAKIAlpZiAoaGFfY29weSAmIEhBX0VSQVRUKQorCQkvKiBIYW5kbGUgdGhlIGVycm9yIGF0dGVudGlvbiBldmVudCAqLwogCQlscGZjX2hhbmRsZV9lcmF0dChwaGJhKTsKIAogCWlmIChoYV9jb3B5ICYgSEFfTUJBVFQpCkBAIC0zNzgsNiArNTAwLDcgQEAKIAogCWlmIChoYV9jb3B5ICYgSEFfTEFUVCkKIAkJbHBmY19oYW5kbGVfbGF0dChwaGJhKTsKKwogCXZwb3J0cyA9IGxwZmNfY3JlYXRlX3Zwb3J0X3dvcmtfYXJyYXkocGhiYSk7CiAJaWYgKHZwb3J0cyAhPSBOVUxMKQogCQlmb3IoaSA9IDA7IGkgPD0gcGhiYS0+bWF4X3ZwaTsgaSsrKSB7CkBAIC0xMDEzLDE0ICsxMTM2LDEwIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1scGZjX21ieF9pc3N1ZV9saW5rX2Rvd24oc3RydWN0IGxwZmNfaGJhICpwaGJhKQorbHBmY19lbmFibGVfbGEoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewogCXVpbnQzMl90IGNvbnRyb2w7CiAJc3RydWN0IGxwZmNfc2xpICpwc2xpID0gJnBoYmEtPnNsaTsKLQotCWxwZmNfbGlua2Rvd24ocGhiYSk7Ci0KLQkvKiB0dXJuIG9uIExpbmsgQXR0ZW50aW9uIGludGVycnVwdHMgLSBubyBDTEVBUl9MQSBuZWVkZWQgKi8KIAlzcGluX2xvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKIAlwc2xpLT5zbGlfZmxhZyB8PSBMUEZDX1BST0NFU1NfTEE7CiAJY29udHJvbCA9IHJlYWRsKHBoYmEtPkhDcmVnYWRkcik7CkBAIC0xMDMwLDYgKzExNDksMTUgQEAKIAlzcGluX3VubG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwogfQogCitzdGF0aWMgdm9pZAorbHBmY19tYnhfaXNzdWVfbGlua19kb3duKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKK3sKKwlscGZjX2xpbmtkb3duKHBoYmEpOworCWxwZmNfZW5hYmxlX2xhKHBoYmEpOworCS8qIHR1cm4gb24gTGluayBBdHRlbnRpb24gaW50ZXJydXB0cyAtIG5vIENMRUFSX0xBIG5lZWRlZCAqLworfQorCisKIC8qCiAgKiBUaGlzIHJvdXRpbmUgaGFuZGxlcyBwcm9jZXNzaW5nIGEgUkVBRF9MQSBtYWlsYm94CiAgKiBjb21tYW5kIHVwb24gY29tcGxldGlvbi4gSXQgaXMgc2V0dXAgaW4gdGhlIExQRkNfTUJPWFEKQEAgLTEwNzcsOCArMTIwNSwxMiBAQAogCX0KIAogCXBoYmEtPmZjX2V2ZW50VGFnID0gbGEtPmV2ZW50VGFnOworCWlmIChsYS0+bW0pCisJCXBoYmEtPnNsaS5zbGlfZmxhZyB8PSBMUEZDX01FTkxPX01BSU5UOworCWVsc2UKKwkJcGhiYS0+c2xpLnNsaV9mbGFnICY9IH5MUEZDX01FTkxPX01BSU5UOwogCi0JaWYgKGxhLT5hdHRUeXBlID09IEFUX0xJTktfVVApIHsKKwlpZiAobGEtPmF0dFR5cGUgPT0gQVRfTElOS19VUCAmJiAoIWxhLT5tbSkpIHsKIAkJcGhiYS0+ZmNfc3RhdC5MaW5rVXArKzsKIAkJaWYgKHBoYmEtPmxpbmtfZmxhZyAmIExTX0xPT1BCQUNLX01PREUpIHsKIAkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0xJTktfRVZFTlQsCkBAIC0xMDkwLDEzICsxMjIyLDE1IEBACiAJCX0gZWxzZSB7CiAJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19MSU5LX0VWRU5ULAogCQkJCQkiMTMwMyBMaW5rIFVwIEV2ZW50IHgleCByZWNlaXZlZCAiCi0JCQkJCSJEYXRhOiB4JXggeCV4IHgleCB4JXhcbiIsCisJCQkJCSJEYXRhOiB4JXggeCV4IHgleCB4JXggeCV4IHgleCAlZFxuIiwKIAkJCQkJbGEtPmV2ZW50VGFnLCBwaGJhLT5mY19ldmVudFRhZywKIAkJCQkJbGEtPmdyYW50ZWRfQUxfUEEsIGxhLT5VbG5rU3BlZWQsCi0JCQkJCXBoYmEtPmFscGFfbWFwWzBdKTsKKwkJCQkJcGhiYS0+YWxwYV9tYXBbMF0sCisJCQkJCWxhLT5tbSwgbGEtPmZhLAorCQkJCQlwaGJhLT53YWl0XzRfbWxvX21haW50X2ZsZyk7CiAJCX0KIAkJbHBmY19tYnhfcHJvY2Vzc19saW5rX3VwKHBoYmEsIGxhKTsKLQl9IGVsc2UgeworCX0gZWxzZSBpZiAobGEtPmF0dFR5cGUgPT0gQVRfTElOS19ET1dOKSB7CiAJCXBoYmEtPmZjX3N0YXQuTGlua0Rvd24rKzsKIAkJaWYgKHBoYmEtPmxpbmtfZmxhZyAmIExTX0xPT1BCQUNLX01PREUpIHsKIAkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0xJTktfRVZFTlQsCkBAIC0xMTA5LDExICsxMjQzLDQ2IEBACiAJCWVsc2UgewogCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfTElOS19FVkVOVCwKIAkJCQkiMTMwNSBMaW5rIERvd24gRXZlbnQgeCV4IHJlY2VpdmVkICIKKwkJCQkiRGF0YTogeCV4IHgleCB4JXggeCV4IHgleFxuIiwKKwkJCQlsYS0+ZXZlbnRUYWcsIHBoYmEtPmZjX2V2ZW50VGFnLAorCQkJCXBoYmEtPnBwb3J0LT5wb3J0X3N0YXRlLCB2cG9ydC0+ZmNfZmxhZywKKwkJCQlsYS0+bW0sIGxhLT5mYSk7CisJCX0KKwkJbHBmY19tYnhfaXNzdWVfbGlua19kb3duKHBoYmEpOworCX0KKwlpZiAobGEtPm1tICYmIGxhLT5hdHRUeXBlID09IEFUX0xJTktfVVApIHsKKwkJaWYgKHBoYmEtPmxpbmtfc3RhdGUgIT0gTFBGQ19MSU5LX0RPV04pIHsKKwkJCXBoYmEtPmZjX3N0YXQuTGlua0Rvd24rKzsKKwkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0xJTktfRVZFTlQsCisJCQkJIjEzMTIgTGluayBEb3duIEV2ZW50IHgleCByZWNlaXZlZCAiCiAJCQkJIkRhdGE6IHgleCB4JXggeCV4XG4iLAogCQkJCWxhLT5ldmVudFRhZywgcGhiYS0+ZmNfZXZlbnRUYWcsCiAJCQkJcGhiYS0+cHBvcnQtPnBvcnRfc3RhdGUsIHZwb3J0LT5mY19mbGFnKTsKKwkJCWxwZmNfbWJ4X2lzc3VlX2xpbmtfZG93bihwaGJhKTsKKwkJfSBlbHNlCisJCQlscGZjX2VuYWJsZV9sYShwaGJhKTsKKworCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19MSU5LX0VWRU5ULAorCQkJCSIxMzEwIE1lbmxvIE1haW50IE1vZGUgTGluayB1cCBFdmVudCB4JXggcmN2ZCAiCisJCQkJIkRhdGE6IHgleCB4JXggeCV4XG4iLAorCQkJCWxhLT5ldmVudFRhZywgcGhiYS0+ZmNfZXZlbnRUYWcsCisJCQkJcGhiYS0+cHBvcnQtPnBvcnRfc3RhdGUsIHZwb3J0LT5mY19mbGFnKTsKKwkJLyoKKwkJICogVGhlIGNtbmQgdGhhdCB0cmlnZ2VyZWQgdGhpcyB3aWxsIGJlIHdhaXRpbmcgZm9yIHRoaXMKKwkJICogc2lnbmFsLgorCQkgKi8KKwkJLyogV0FLRVVQIGZvciBNRU5MT19TRVRfTU9ERSBvciBNRU5MT19SRVNFVCBjb21tYW5kLiAqLworCQlpZiAocGhiYS0+d2FpdF80X21sb19tYWludF9mbGcpIHsKKwkJCXBoYmEtPndhaXRfNF9tbG9fbWFpbnRfZmxnID0gMDsKKwkJCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmcGhiYS0+d2FpdF80X21sb19tX3EpOwogCQl9Ci0JCWxwZmNfbWJ4X2lzc3VlX2xpbmtfZG93bihwaGJhKTsKKwl9CisKKwlpZiAobGEtPmZhKSB7CisJCWlmIChsYS0+bW0pCisJCQlscGZjX2lzc3VlX2NsZWFyX2xhKHBoYmEsIHZwb3J0KTsKKwkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fSU5GTywgTE9HX0xJTktfRVZFTlQsCisJCQkJIjEzMTEgZmEgJWRcbiIsIGxhLT5mYSk7CiAJfQogCiBscGZjX21ieF9jbXBsX3JlYWRfbGFfZnJlZV9tYnVmOgpAQCAtMTE3Nyw3ICsxMzQ2LDcgQEAKIAkJc2NzaV9ob3N0X3B1dChzaG9zdCk7CiB9CiAKLXZvaWQKK2ludAogbHBmY19tYnhfdW5yZWdfdnBpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKIHsKIAlzdHJ1Y3QgbHBmY19oYmEgICpwaGJhID0gdnBvcnQtPnBoYmE7CkBAIC0xMTg2LDcgKzEzNTUsNyBAQAogCiAJbWJveCA9IG1lbXBvb2xfYWxsb2MocGhiYS0+bWJveF9tZW1fcG9vbCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtYm94KQotCQlyZXR1cm47CisJCXJldHVybiAxOwogCiAJbHBmY191bnJlZ192cGkocGhiYSwgdnBvcnQtPnZwaSwgbWJveCk7CiAJbWJveC0+dnBvcnQgPSB2cG9ydDsKQEAgLTExOTcsNyArMTM2Niw5IEBACiAJCQkJICIxODAwIENvdWxkIG5vdCBpc3N1ZSB1bnJlZ192cGlcbiIpOwogCQltZW1wb29sX2ZyZWUobWJveCwgcGhiYS0+bWJveF9tZW1fcG9vbCk7CiAJCXZwb3J0LT51bnJlZ192cGlfY21wbCA9IFZQT1JUX0VSUk9SOworCQlyZXR1cm4gcmM7CiAJfQorCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTU1Myw2ICsxNzI0LDIyIEBACiAJCSAqLwogCQlscGZjX3JlZ2lzdGVyX3JlbW90ZV9wb3J0KHZwb3J0LCBuZGxwKTsKIAl9CisJaWYgKChuZXdfc3RhdGUgPT0gIE5MUF9TVEVfTUFQUEVEX05PREUpICYmCisJCSh2cG9ydC0+c3RhdF9kYXRhX2VuYWJsZWQpKSB7CisJCS8qCisJCSAqIEEgbmV3IHRhcmdldCBpcyBkaXNjb3ZlcmVkLCBpZiB0aGVyZSBpcyBubyBidWZmZXIgZm9yCisJCSAqIHN0YXRpc3RpY2FsIGRhdGEgY29sbGVjdGlvbiBhbGxvY2F0ZSBidWZmZXIuCisJCSAqLworCQluZGxwLT5sYXRfZGF0YSA9IGtjYWxsb2MoTFBGQ19NQVhfQlVDS0VUX0NPVU5ULAorCQkJCQkgc2l6ZW9mKHN0cnVjdCBscGZjX3Njc2ljbWRfYmt0KSwKKwkJCQkJIEdGUF9LRVJORUwpOworCisJCWlmICghbmRscC0+bGF0X2RhdGEpCisJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX05PREUsCisJCQkJIjAyODYgbHBmY19ubHBfc3RhdGVfY2xlYW51cCBmYWlsZWQgdG8gIgorCQkJCSJhbGxvY2F0ZSBzdGF0aXN0aWNhbCBkYXRhIGJ1ZmZlciBESUQgIgorCQkJCSIweCV4XG4iLCBuZGxwLT5ubHBfRElEKTsKKwl9CiAJLyoKIAkgKiBpZiB3ZSBhZGRlZCB0byBNYXBwZWQgbGlzdCwgYnV0IHRoZSByZW1vdGUgcG9ydAogCSAqIHJlZ2lzdHJhdGlvbiBmYWlsZWQgb3IgYXNzaWduZWQgYSB0YXJnZXQgaWQgb3V0c2lkZQpAQCAtMjc4Niw3ICsyOTczLDcgQEAKIAogCWRlZmF1bHQ6CiAJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfRElTQ09WRVJZLAotCQkJCSAiMDIyOSBVbmV4cGVjdGVkIGRpc2NvdmVyeSB0aW1lb3V0LCAiCisJCQkJICIwMjczIFVuZXhwZWN0ZWQgZGlzY292ZXJ5IHRpbWVvdXQsICIKIAkJCQkgInZwb3J0IFN0YXRlIHgleFxuIiwgdnBvcnQtPnBvcnRfc3RhdGUpOwogCQlicmVhazsKIAl9CkBAIC0yOTQwLDYgKzMxMjcsOCBAQAogCUlOSVRfTElTVF9IRUFEKCZuZGxwLT5ubHBfbGlzdHApOwogCWtyZWZfaW5pdCgmbmRscC0+a3JlZik7CiAJTkxQX0lOVF9OT0RFX0FDVChuZGxwKTsKKwlhdG9taWNfc2V0KCZuZGxwLT5jbWRfcGVuZGluZywgMCk7CisJbmRscC0+Y21kX3FkZXB0aCA9IExQRkNfTUFYX1RHVF9RREVQVEg7CiAKIAlscGZjX2RlYnVnZnNfZGlzY190cmModnBvcnQsIExQRkNfRElTQ19UUkNfTk9ERSwKIAkJIm5vZGUgaW5pdDogICAgICAgZGlkOngleCIsCkBAIC0yOTc5LDggKzMxNjgsMTAgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5uZGxwX2xvY2ssIGZsYWdzKTsKIAogCS8qIGZyZWUgbmRscCBtZW1vcnkgZm9yIGZpbmFsIG5kbHAgcmVsZWFzZSAqLwotCWlmIChOTFBfQ0hLX0ZSRUVfUkVRKG5kbHApKQorCWlmIChOTFBfQ0hLX0ZSRUVfUkVRKG5kbHApKSB7CisJCWtmcmVlKG5kbHAtPmxhdF9kYXRhKTsKIAkJbWVtcG9vbF9mcmVlKG5kbHAsIG5kbHAtPnZwb3J0LT5waGJhLT5ubHBfbWVtX3Bvb2wpOworCX0KIH0KIAogLyogVGhpcyByb3V0aW5lIGJ1bXBzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGEgbmRscCBzdHJ1Y3R1cmUgdG8gZW5zdXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2h3LmggYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2h3LmgKaW5kZXggNzc3M2I5NC4uNWRlNWRhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ody5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaHcuaApAQCAtMTEwNyw2ICsxMTA3LDggQEAKIC8qIFN0YXJ0IEZpcmVGbHkgUmVnaXN0ZXIgZGVmaW5pdGlvbnMgKi8KICNkZWZpbmUgUENJX1ZFTkRPUl9JRF9FTVVMRVggICAgICAgIDB4MTBkZgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0ZJUkVGTFkgICAgICAgMHgxYWU1CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfUFJPVEVVU19WRiAgICAweGUxMDAKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9QUk9URVVTX1BGICAgIDB4ZTE4MAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NBVF9TTUIgICAgICAgMHhmMDExCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU0FUX01JRCAgICAgICAweGYwMTUKICNkZWZpbmUgUENJX0RFVklDRV9JRF9SRkxZICAgICAgICAgIDB4ZjA5NQpAQCAtMTEzMywxMCArMTEzNSwxMiBAQAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0xQMTEwMDBTICAgICAgMHhmYzEwCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTFBFMTEwMDBTICAgICAweGZjMjAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9TQVRfUyAgICAgICAgIDB4ZmM0MAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1BST1RFVVNfUyAgICAgMHhmYzUwCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSEVMSU9TICAgICAgICAweGZkMDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9IRUxJT1NfU0NTUCAgIDB4ZmQxMQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0hFTElPU19EQ1NQICAgMHhmZDEyCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfWkVQSFlSICAgICAgICAweGZlMDAKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9IT1JORVQgICAgICAgIDB4ZmUwNQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1pFUEhZUl9TQ1NQICAgMHhmZTExCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfWkVQSFlSX0RDU1AgICAweGZlMTIKIApAQCAtMTE1NCw2ICsxMTU4LDcgQEAKICNkZWZpbmUgWkVQSFlSX0pFREVDX0lEICAgICAgICAgICAgIDB4MDU3NwogI2RlZmluZSBWSVBFUl9KRURFQ19JRCAgICAgICAgICAgICAgMHg0ODM4CiAjZGVmaW5lIFNBVFVSTl9KRURFQ19JRCAgICAgICAgICAgICAweDEwMDQKKyNkZWZpbmUgSE9STkVUX0pERUNfSUQgICAgICAgICAgICAgIDB4MjA1NzcwNkQKIAogI2RlZmluZSBKRURFQ19JRF9NQVNLICAgICAgICAgICAgICAgMHgwRkZGRjAwMAogI2RlZmluZSBKRURFQ19JRF9TSElGVCAgICAgICAgICAgICAgMTIKQEAgLTExOTgsNiArMTIwMywxOCBAQAogI2RlZmluZSBIQV9SWEFUVCAgICAgICAweDAwMDAwMDA4CS8qIEJpdCAgMyAqLwogI2RlZmluZSBIQV9SWE1BU0sgICAgICAweDAwMDAwMDBmCiAKKyNkZWZpbmUgSEFfUjBfQ0xSX01TSwkoSEFfUjBSRV9SRVEgfCBIQV9SMENFX1JTUCB8IEhBX1IwQVRUKQorI2RlZmluZSBIQV9SMV9DTFJfTVNLCShIQV9SMVJFX1JFUSB8IEhBX1IxQ0VfUlNQIHwgSEFfUjFBVFQpCisjZGVmaW5lIEhBX1IyX0NMUl9NU0sJKEhBX1IyUkVfUkVRIHwgSEFfUjJDRV9SU1AgfCBIQV9SMkFUVCkKKyNkZWZpbmUgSEFfUjNfQ0xSX01TSwkoSEFfUjNSRV9SRVEgfCBIQV9SM0NFX1JTUCB8IEhBX1IzQVRUKQorCisjZGVmaW5lIEhBX1IwX1BPUwkzCisjZGVmaW5lIEhBX1IxX1BPUwk3CisjZGVmaW5lIEhBX1IyX1BPUwkxMQorI2RlZmluZSBIQV9SM19QT1MJMTUKKyNkZWZpbmUgSEFfTEVfUE9TCTI5CisjZGVmaW5lIEhBX01CX1BPUwkzMAorI2RlZmluZSBIQV9FUl9QT1MJMzEKIC8qIENoaXAgQXR0ZW50aW9uIFJlZ2lzdGVyICovCiAKICNkZWZpbmUgQ0FfUkVHX09GRlNFVCAgNAkvKiBCeXRlIG9mZnNldCBmcm9tIHJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAqLwpAQCAtMTIzNSw3ICsxMjUyLDcgQEAKIAogLyogSG9zdCBDb250cm9sIFJlZ2lzdGVyICovCiAKLSNkZWZpbmUgSENfUkVHX09GRlNFVCAgMTIJLyogV29yZCBvZmZzZXQgZnJvbSByZWdpc3RlciBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgSENfUkVHX09GRlNFVCAgMTIJLyogQnl0ZSBvZmZzZXQgZnJvbSByZWdpc3RlciBiYXNlIGFkZHJlc3MgKi8KIAogI2RlZmluZSBIQ19NQklOVF9FTkEgICAweDAwMDAwMDAxCS8qIEJpdCAgMCAqLwogI2RlZmluZSBIQ19SMElOVF9FTkEgICAweDAwMDAwMDAyCS8qIEJpdCAgMSAqLwpAQCAtMTI0OCw2ICsxMjY1LDE5IEBACiAjZGVmaW5lIEhDX0xBSU5UX0VOQSAgIDB4MjAwMDAwMDAJLyogQml0IDI5ICovCiAjZGVmaW5lIEhDX0VSSU5UX0VOQSAgIDB4ODAwMDAwMDAJLyogQml0IDMxICovCiAKKy8qIE1lc3NhZ2UgU2lnbmFsZWQgSW50ZXJydXB0IGVYdGVuc2lvbiAoTVNJLVgpIG1lc3NhZ2UgaWRlbnRpZmllcnMgKi8KKyNkZWZpbmUgTVNJWF9ERkxUX0lECTAKKyNkZWZpbmUgTVNJWF9STkcwX0lECTAKKyNkZWZpbmUgTVNJWF9STkcxX0lECTEKKyNkZWZpbmUgTVNJWF9STkcyX0lECTIKKyNkZWZpbmUgTVNJWF9STkczX0lECTMKKworI2RlZmluZSBNU0lYX0xJTktfSUQJNAorI2RlZmluZSBNU0lYX01CT1hfSUQJNQorCisjZGVmaW5lIE1TSVhfU1BBUkUwX0lECTYKKyNkZWZpbmUgTVNJWF9TUEFSRTFfSUQJNworCiAvKiBNYWlsYm94IENvbW1hbmRzICovCiAjZGVmaW5lIE1CWF9TSFVURE9XTiAgICAgICAgMHgwMAkvKiB0ZXJtaW5hdGUgdGVzdGluZyAqLwogI2RlZmluZSBNQlhfTE9BRF9TTSAgICAgICAgIDB4MDEKQEAgLTEyODUsMTAgKzEzMTUsMTQgQEAKICNkZWZpbmUgTUJYX0tJTExfQk9BUkQgICAgICAweDI0CiAjZGVmaW5lIE1CWF9DT05GSUdfRkFSUCAgICAgMHgyNQogI2RlZmluZSBNQlhfQkVBQ09OICAgICAgICAgIDB4MkEKKyNkZWZpbmUgTUJYX0NPTkZJR19NU0kgICAgICAweDMwCiAjZGVmaW5lIE1CWF9IRUFSVEJFQVQgICAgICAgMHgzMQogI2RlZmluZSBNQlhfV1JJVEVfVlBBUk1TICAgIDB4MzIKICNkZWZpbmUgTUJYX0FTWU5DRVZUX0VOQUJMRSAweDMzCiAKKyNkZWZpbmUgTUJYX1BPUlRfQ0FQQUJJTElUSUVTIDB4M0IKKyNkZWZpbmUgTUJYX1BPUlRfSU9WX0NPTlRST0wgMHgzQworCiAjZGVmaW5lIE1CWF9DT05GSUdfSEJRCSAgICAweDdDCiAjZGVmaW5lIE1CWF9MT0FEX0FSRUEgICAgICAgMHg4MQogI2RlZmluZSBNQlhfUlVOX0JJVV9ESUFHNjQgIDB4ODQKQEAgLTE0NzQsMjQgKzE1MDgsMTggQEAKIAkJCXVpbnQzMl90IGJkZUZsYWdzOjg7CS8qIEJERSBGbGFncyAwIElTIEEgU1VQUE9SVEVECiAJCQkJCQkgICBWQUxVRSAhISAqLwogI2VuZGlmCi0KLSNkZWZpbmUgQlVGRl9VU0VfUlNWRCAgICAgICAweDAxCS8qIGJkZUZsYWdzICovCi0jZGVmaW5lIEJVRkZfVVNFX0lOVFJQVCAgICAgMHgwMgkvKiBOb3QgSW1wbGVtZW50ZWQgd2l0aCBMUDYwMDAgKi8KLSNkZWZpbmUgQlVGRl9VU0VfQ01ORCAgICAgICAweDA0CS8qIE9wdGlvbmFsLCAxPWNtZC9yc3AgMD1kYXRhIGJ1ZmZlciAqLwotI2RlZmluZSBCVUZGX1VTRV9SQ1YgICAgICAgIDB4MDgJLyogICIiICIiLCAxPXJjdiBidWZmZXIsIDA9eG1pdAotCQkJCQkgICAgYnVmZmVyICovCi0jZGVmaW5lIEJVRkZfVFlQRV8zMkJJVCAgICAgMHgxMAkvKiAgIiIgIiIsIDE9MzIgYml0IGFkZHIgMD02NCBiaXQKLQkJCQkJICAgIGFkZHIgKi8KLSNkZWZpbmUgQlVGRl9UWVBFX1NQRUNJQUwgICAweDIwCS8qIE5vdCBJbXBsZW1lbnRlZCB3aXRoIExQNjAwMCAgKi8KLSNkZWZpbmUgQlVGRl9UWVBFX0JETCAgICAgICAweDQwCS8qIE9wdGlvbmFsLCAgbWF5IGJlIHNldCBpbiBCREwgKi8KLSNkZWZpbmUgQlVGRl9UWVBFX0lOVkFMSUQgICAweDgwCS8qICAiIiAgIiIgKi8KKyNkZWZpbmUgQlVGRl9UWVBFX0JERV82NCAgICAweDAwCS8qIEJERSAoSG9zdF9yZXNpZGVudCkgKi8KKyNkZWZpbmUgQlVGRl9UWVBFX0JERV9JTU1FRCAweDAxCS8qIEltbWVkaWF0ZSBEYXRhIEJERSAqLworI2RlZmluZSBCVUZGX1RZUEVfQkRFXzY0UCAgIDB4MDIJLyogQkRFIChQb3J0LXJlc2lkZW50KSAqLworI2RlZmluZSBCVUZGX1RZUEVfQkRFXzY0SSAgIDB4MDgJLyogSW5wdXQgQkRFIChIb3N0LXJlc2lkZW50KSAqLworI2RlZmluZSBCVUZGX1RZUEVfQkRFXzY0SVAgIDB4MEEJLyogSW5wdXQgQkRFIChQb3J0LXJlc2lkZW50KSAqLworI2RlZmluZSBCVUZGX1RZUEVfQkxQXzY0ICAgIDB4NDAJLyogQkxQIChIb3N0LXJlc2lkZW50KSAqLworI2RlZmluZSBCVUZGX1RZUEVfQkxQXzY0UCAgIDB4NDIJLyogQkxQIChQb3J0LXJlc2lkZW50KSAqLwogCQl9IGY7CiAJfSB0dXM7CiAJdWludDMyX3QgYWRkckxvdzsKIAl1aW50MzJfdCBhZGRySGlnaDsKIH07Ci0jZGVmaW5lIEJERTY0X1NJWkVfV09SRCAwCi0jZGVmaW5lIEJQTDY0X1NJWkVfV09SRCAweDQwCiAKIHR5cGVkZWYgc3RydWN0IFVMUF9CREwgewkvKiBTTEktMiAqLwogI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRApAQCAtMjIwMSw3ICsyMjI5LDEwIEBACiB0eXBlZGVmIHN0cnVjdCB7CiAJdWludDMyX3QgZXZlbnRUYWc7CS8qIEV2ZW50IHRhZyAqLwogI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAotCXVpbnQzMl90IHJzdmQxOjIyOworCXVpbnQzMl90IHJzdmQxOjE5OworCXVpbnQzMl90IGZhOjE7CisJdWludDMyX3QgbW06MTsJCS8qIE1lbmxvIE1haW50ZW5hbmNlIG1vZGUgZW5hYmxlZCAqLworCXVpbnQzMl90IHJ4OjE7CiAJdWludDMyX3QgcGI6MTsKIAl1aW50MzJfdCBpbDoxOwogCXVpbnQzMl90IGF0dFR5cGU6ODsKQEAgLTIyMDksNyArMjI0MCwxMCBAQAogCXVpbnQzMl90IGF0dFR5cGU6ODsKIAl1aW50MzJfdCBpbDoxOwogCXVpbnQzMl90IHBiOjE7Ci0JdWludDMyX3QgcnN2ZDE6MjI7CisJdWludDMyX3Qgcng6MTsKKwl1aW50MzJfdCBtbToxOworCXVpbnQzMl90IGZhOjE7CisJdWludDMyX3QgcnN2ZDE6MTk7CiAjZW5kaWYKIAogI2RlZmluZSBBVF9SRVNFUlZFRCAgICAweDAwCS8qIFJlc2VydmVkIC0gYXR0VHlwZSAqLwpAQCAtMjIzMCw2ICsyMjY0LDcgQEAKIAogI2RlZmluZSBUT1BPTE9HWV9QVF9QVCAweDAxCS8qIFRvcG9sb2d5IGlzIHB0LXB0IC8gcHQtZmFicmljICovCiAjZGVmaW5lIFRPUE9MT0dZX0xPT1AgIDB4MDIJLyogVG9wb2xvZ3kgaXMgRkMtQUwgKi8KKyNkZWZpbmUgVE9QT0xPR1lfTE5LX01FTkxPX01BSU5URU5BTkNFIDB4MDUgLyogbWFpbnQgbW9kZSB6ZXBodHIgdG8gbWVubG8gKi8KIAogCXVuaW9uIHsKIAkJc3RydWN0IHVscF9iZGUgbGlscEJkZTsgLyogVGhpcyBCREUgcG9pbnRzIHRvIGEgMTI4IGJ5dGUgYnVmZmVyCkBAIC0yMzI0LDYgKzIzNTksMzYgQEAKICNkZWZpbmUgIERNUF9SU1BfT0ZGU0VUICAgICAgICAgIDB4MTQgICAvKiB3b3JkIDUgY29udGFpbnMgZmlyc3Qgd29yZCBvZiByc3AgKi8KICNkZWZpbmUgIERNUF9SU1BfU0laRSAgICAgICAgICAgIDB4NkMgICAvKiBtYXhpbXVtIG9mIDI3IHdvcmRzIG9mIHJzcCBkYXRhICovCiAKKy8qIFN0cnVjdHVyZSBmb3IgTUIgQ29tbWFuZCBVUERBVEVfQ0ZHICgweDFCKSAqLworCitzdHJ1Y3QgdXBkYXRlX2NmZ192YXIgeworI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAorCXVpbnQzMl90IHJzdmQyOjE2OworCXVpbnQzMl90IHR5cGU6ODsKKwl1aW50MzJfdCByc3ZkOjE7CisJdWludDMyX3QgcmE6MTsKKwl1aW50MzJfdCBjbzoxOworCXVpbnQzMl90IGN2OjE7CisJdWludDMyX3QgcmVxOjQ7CisJdWludDMyX3QgZW50cnlfbGVuZ3RoOjE2OworCXVpbnQzMl90IHJlZ2lvbl9pZDoxNjsKKyNlbHNlICAvKiAgX19MSVRUTEVfRU5ESUFOX0JJVEZJRUxEICovCisJdWludDMyX3QgcmVxOjQ7CisJdWludDMyX3QgY3Y6MTsKKwl1aW50MzJfdCBjbzoxOworCXVpbnQzMl90IHJhOjE7CisJdWludDMyX3QgcnN2ZDoxOworCXVpbnQzMl90IHR5cGU6ODsKKwl1aW50MzJfdCByc3ZkMjoxNjsKKwl1aW50MzJfdCByZWdpb25faWQ6MTY7CisJdWludDMyX3QgZW50cnlfbGVuZ3RoOjE2OworI2VuZGlmCisKKwl1aW50MzJfdCByZXNwX2luZm87CisJdWludDMyX3QgYnl0ZV9jbnQ7CisJdWludDMyX3QgZGF0YV9vZmZzZXQ7Cit9OworCiBzdHJ1Y3QgaGJxX21hc2sgewogI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAogCXVpbnQ4X3QgdG1hdGNoOwpAQCAtMjU2MCw2ICsyNjI1LDQwIEBACiAKIH0gQ09ORklHX1BPUlRfVkFSOwogCisvKiBTdHJ1Y3R1cmUgZm9yIE1CIENvbW1hbmQgQ09ORklHX01TSSAoMHgzMCkgKi8KK3N0cnVjdCBjb25maWdfbXNpX3ZhciB7CisjaWZkZWYgX19CSUdfRU5ESUFOX0JJVEZJRUxECisJdWludDMyX3QgZGZsdE1zZ051bTo4OwkvKiBEZWZhdWx0IG1lc3NhZ2UgbnVtYmVyICAgICAgICAgICAgKi8KKwl1aW50MzJfdCByc3ZkMToxMTsJLyogUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJdWludDMyX3QgTklEOjU7CQkvKiBOdW1iZXIgb2Ygc2Vjb25kYXJ5IGF0dGVudGlvbiBJRHMgKi8KKwl1aW50MzJfdCByc3ZkMjo1OwkvKiBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwl1aW50MzJfdCBkZmx0UHJlc2VudDoxOwkvKiBEZWZhdWx0IG1lc3NhZ2UgbnVtYmVyIHByZXNlbnQgICAgKi8KKwl1aW50MzJfdCBhZGRGbGFnOjE7CS8qIEFkZCBhc3NvY2lhdGlvbiBmbGFnICAgICAgICAgICAgICAqLworCXVpbnQzMl90IHJlcG9ydEZsYWc6MTsJLyogUmVwb3J0IGFzc29jaWF0aW9uIGZsYWcgICAgICAgICAgICovCisjZWxzZQkvKiAgX19MSVRUTEVfRU5ESUFOX0JJVEZJRUxEICovCisJdWludDMyX3QgcmVwb3J0RmxhZzoxOwkvKiBSZXBvcnQgYXNzb2NpYXRpb24gZmxhZyAgICAgICAgICAgKi8KKwl1aW50MzJfdCBhZGRGbGFnOjE7CS8qIEFkZCBhc3NvY2lhdGlvbiBmbGFnICAgICAgICAgICAgICAqLworCXVpbnQzMl90IGRmbHRQcmVzZW50OjE7CS8qIERlZmF1bHQgbWVzc2FnZSBudW1iZXIgcHJlc2VudCAgICAqLworCXVpbnQzMl90IHJzdmQyOjU7CS8qIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXVpbnQzMl90IE5JRDo1OwkJLyogTnVtYmVyIG9mIHNlY29uZGFyeSBhdHRlbnRpb24gSURzICovCisJdWludDMyX3QgcnN2ZDE6MTE7CS8qIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXVpbnQzMl90IGRmbHRNc2dOdW06ODsJLyogRGVmYXVsdCBtZXNzYWdlIG51bWJlciAgICAgICAgICAgICovCisjZW5kaWYKKwl1aW50MzJfdCBhdHRlbnRpb25Db25kaXRpb25zWzJdOworCXVpbnQ4X3QgIGF0dGVudGlvbklkWzE2XTsKKwl1aW50OF90ICBtZXNzYWdlTnVtYmVyQnlIQVs2NF07CisJdWludDhfdCAgbWVzc2FnZU51bWJlckJ5SURbMTZdOworCXVpbnQzMl90IGF1dG9DbGVhckhBWzJdOworI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAorCXVpbnQzMl90IHJzdmQzOjE2OworCXVpbnQzMl90IGF1dG9DbGVhcklEOjE2OworI2Vsc2UJLyogIF9fTElUVExFX0VORElBTl9CSVRGSUVMRCAqLworCXVpbnQzMl90IGF1dG9DbGVhcklEOjE2OworCXVpbnQzMl90IHJzdmQzOjE2OworI2VuZGlmCisJdWludDMyX3QgcnN2ZDQ7Cit9OworCiAvKiBTTEktMiBQb3J0IENvbnRyb2wgQmxvY2sgKi8KIAogLyogU0xJTSBQT0lOVEVSICovCkBAIC0yNjc4LDEwICsyNzc3LDEyIEBACiAJCQkJCSAqIE5FV19GRUFUVVJFCiAJCQkJCSAqLwogCXN0cnVjdCBjb25maWdfaGJxX3ZhciB2YXJDZmdIYnE7LyogY21kID0gMHg3YyAoQ09ORklHX0hCUSkgICovCisJc3RydWN0IHVwZGF0ZV9jZmdfdmFyIHZhclVwZGF0ZUNmZzsgLyogY21kID0gMHgxQiAoVVBEQVRFX0NGRykqLwogCUNPTkZJR19QT1JUX1ZBUiB2YXJDZmdQb3J0OwkvKiBjbWQgPSAweDg4IChDT05GSUdfUE9SVCkgICovCiAJUkVHX1ZQSV9WQVIgdmFyUmVnVnBpOwkJLyogY21kID0gMHg5NiAoUkVHX1ZQSSkgKi8KIAlVTlJFR19WUElfVkFSIHZhclVucmVnVnBpOwkvKiBjbWQgPSAweDk3IChVTlJFR19WUEkpICovCiAJQVNZTkNFVlRfRU5BQkxFX1ZBUiB2YXJDZmdBc3luY0V2ZW50OyAvKmNtZCA9IHgzMyAoQ09ORklHX0FTWU5DKSAqLworCXN0cnVjdCBjb25maWdfbXNpX3ZhciB2YXJDZmdNU0k7LyogY21kID0geDMwIChDT05GSUdfTVNJKSAgICAgKi8KIH0gTUFJTFZBUklBTlRTOwogCiAvKgpAQCAtMjcxNSwxMSArMjgxNiwxOSBAQAogCXVpbnQzMl90IGhicV9nZXRbMTZdOwogfTsKIAotdHlwZWRlZiB1bmlvbiB7Ci0Jc3RydWN0IHNsaTJfZGVzYyBzMjsKLQlzdHJ1Y3Qgc2xpM19kZXNjIHMzOwotCXN0cnVjdCBzbGkzX3BncCAgczNfcGdwOwotfSBTTElfVkFSOworc3RydWN0IHNsaTNfaW5iX3BncCB7CisJdWludDMyX3QgaGFfY29weTsKKwl1aW50MzJfdCBjb3VudGVyOworCXN0cnVjdCBscGZjX3BncCBwb3J0W01BWF9SSU5HU107CisJdWludDMyX3QgaGJxX2dldFsxNl07Cit9OworCit1bmlvbiBzbGlfdmFyIHsKKwlzdHJ1Y3Qgc2xpMl9kZXNjCXMyOworCXN0cnVjdCBzbGkzX2Rlc2MJczM7CisJc3RydWN0IHNsaTNfcGdwCQlzM19wZ3A7CisJc3RydWN0IHNsaTNfaW5iX3BncAlzM19pbmJfcGdwOworfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRApAQCAtMjczNyw3ICsyODQ2LDcgQEAKICNlbmRpZgogCiAJTUFJTFZBUklBTlRTIHVuOwotCVNMSV9WQVIgdXM7CisJdW5pb24gc2xpX3ZhciB1czsKIH0gTUFJTEJPWF90OwogCiAvKgpAQCAtMzEwNSw2ICszMjE0LDI3IEBACiAJc3RydWN0IGxwZmNfaGJxX2VudHJ5CWJ1ZmZbNV07CiB9OwogCisjZGVmaW5lIExQRkNfRVhUX0RBVEFfQkRFX0NPVU5UIDMKK3N0cnVjdCBmY3BfaXJ3X2V4dCB7CisJdWludDMyX3QJaW9fdGFnNjRfbG93OworCXVpbnQzMl90CWlvX3RhZzY0X2hpZ2g7CisjaWZkZWYgX19CSUdfRU5ESUFOX0JJVEZJRUxECisJdWludDhfdAkJcmVzZXJ2ZWQxOworCXVpbnQ4X3QJCXJlc2VydmVkMjsKKwl1aW50OF90CQlyZXNlcnZlZDM7CisJdWludDhfdAkJZWJkZV9jb3VudDsKKyNlbHNlICAvKiBfX0xJVFRMRV9FTkRJQU4gKi8KKwl1aW50OF90CQllYmRlX2NvdW50OworCXVpbnQ4X3QJCXJlc2VydmVkMzsKKwl1aW50OF90CQlyZXNlcnZlZDI7CisJdWludDhfdAkJcmVzZXJ2ZWQxOworI2VuZGlmCisJdWludDMyX3QJcmVzZXJ2ZWQ0OworCXN0cnVjdCB1bHBfYmRlNjQgcmJkZTsJCS8qIHJlc3BvbnNlIGJkZSAqLworCXN0cnVjdCB1bHBfYmRlNjQgZGJkZVtMUEZDX0VYVF9EQVRBX0JERV9DT1VOVF07CS8qIGRhdGEgQkRFIG9yIEJQTCAqLworCXVpbnQ4X3QgaWNkWzMyXTsJCS8qIGltbWVkaWF0ZSBjb21tYW5kIGRhdGEgKDMyIGJ5dGVzKSAqLworfTsKKwogdHlwZWRlZiBzdHJ1Y3QgX0lPQ0IgewkvKiBJT0NCIHN0cnVjdHVyZSAqLwogCXVuaW9uIHsKIAkJR0VORVJJQ19SU1AgZ3JzcDsJLyogR2VuZXJpYyByZXNwb25zZSAqLwpAQCAtMzE5MCw3ICszMzIwLDcgQEAKIAogCQkvKiB3b3JkcyA4LTMxIHVzZWQgZm9yIHF1ZV94cmlfY3ggaW9jYiAqLwogCQlzdHJ1Y3QgcXVlX3hyaTY0Y3hfZXh0X2ZpZWxkcyBxdWVfeHJpNjRjeF9leHRfd29yZHM7Ci0KKwkJc3RydWN0IGZjcF9pcndfZXh0IGZjcF9leHQ7CiAJCXVpbnQzMl90IHNsaTNXb3Jkc1syNF07IC8qIDk2IGV4dHJhIGJ5dGVzIGZvciBTTEktMyAqLwogCX0gdW5zbGkzOwogCkBAIC0zMjkyLDMgKzM0MjIsMTAgQEAKIAkJIGlvY2JwLT51bi51bHBXb3JkWzRdID09IElPRVJSX0xJTktfRE9XTiB8fAogCQkgaW9jYnAtPnVuLnVscFdvcmRbNF0gPT0gSU9FUlJfU0xJX0RPV04pKTsKIH0KKworI2RlZmluZSBNRU5MT19UUkFOU1BPUlRfVFlQRSAweGZlCisjZGVmaW5lIE1FTkxPX0NPTlRFWFQgMAorI2RlZmluZSBNRU5MT19QVSAzCisjZGVmaW5lIE1FTkxPX1RJTUVPVVQgMzAKKyNkZWZpbmUgU0VUVkFSX01MT01OVCAweDEwMzEwNworI2RlZmluZSBTRVRWQVJfTUxPUlNUIDB4MTAzMDA3CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jCmluZGV4IGQ1MWEyYTQuLjkwOWJlMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJscGZjX2h3LmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zY3NpLmgiCiAjaW5jbHVkZSAibHBmYy5oIgpAQCAtNTIsMTcgKzUzLDIwIEBACiBzdGF0aWMgc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICpscGZjX3Zwb3J0X3RyYW5zcG9ydF90ZW1wbGF0ZSA9IE5VTEw7CiBzdGF0aWMgREVGSU5FX0lEUihscGZjX2hiYV9pbmRleCk7CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgbHBmY19jb25maWdfcG9ydF9wcmVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIFRoaXMgcm91dGluZSB3aWxsIGRvIExQRkMgaW5pdGlhbGl6YXRpb24gcHJpb3IgdG8gdGhlICAgICAgICAgICAgICovCi0vKiAgICBDT05GSUdfUE9SVCBtYWlsYm94IGNvbW1hbmQuIFRoaXMgd2lsbCBiZSBpbml0aWFsaXplZCAgICAgICAgICAgICAqLwotLyogICAgYXMgYSBTTEkgbGF5ZXIgY2FsbGJhY2sgcm91dGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIFRoaXMgcm91dGluZSByZXR1cm5zIDAgb24gc3VjY2VzcyBvciAtRVJFU1RBUlQgaWYgaXQgd2FudHMgICAgICAgICovCi0vKiAgICB0aGUgU0xJIGxheWVyIHRvIHJlc2V0IHRoZSBIQkEgYW5kIHRyeSBhZ2Fpbi4gQW55ICAgICAgICAgICAgICAgICAqLwotLyogICAgb3RoZXIgcmV0dXJuIHZhbHVlIGluZGljYXRlcyBhbiBlcnJvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX2NvbmZpZ19wb3J0X3ByZXA6IFBlcmZvcm0gbHBmYyBpbml0aWFsaXphdGlvbiBwcmlvciB0byBjb25maWcgcG9ydC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSB3aWxsIGRvIExQRkMgaW5pdGlhbGl6YXRpb24gcHJpb3IgdG8gaXNzdWluZyB0aGUgQ09ORklHX1BPUlQKKyAqIG1haWxib3ggY29tbWFuZC4gSXQgcmV0cmlldmVzIHRoZSByZXZpc2lvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBIQkEgYW5kCisgKiBjb2xsZWN0cyB0aGUgVml0YWwgUHJvZHVjdCBEYXRhIChWUEQpIGFib3V0IHRoZSBIQkEgZm9yIHByZXBhcmluZyB0aGUKKyAqIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEhCQS4KKyAqCisgKiBSZXR1cm4gY29kZXM6CisgKiAgIDAgLSBzdWNjZXNzLgorICogICAtRVJFU1RBUlQgLSByZXF1ZXN0cyB0aGUgU0xJIGxheWVyIHRvIHJlc2V0IHRoZSBIQkEgYW5kIHRyeSBhZ2Fpbi4KKyAqICAgQW55IG90aGVyIHZhbHVlIC0gaW5kaWNhdGVzIGFuIGVycm9yLgorICoqLwogaW50CiBscGZjX2NvbmZpZ19wb3J0X3ByZXAoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMTgwLDEyICsxODQsOSBAQAogCQkJCQkJc2l6ZW9mIChwaGJhLT5SYW5kb21EYXRhKSk7CiAKIAkvKiBHZXQgYWRhcHRlciBWUEQgaW5mb3JtYXRpb24gKi8KLQlwbWItPmNvbnRleHQyID0ga21hbGxvYyhETVBfUlNQX1NJWkUsIEdGUF9LRVJORUwpOwotCWlmICghcG1iLT5jb250ZXh0MikKLQkJZ290byBvdXRfZnJlZV9tYm94OwogCWxwZmNfdnBkX2RhdGEgPSBrbWFsbG9jKERNUF9WUERfU0laRSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFscGZjX3ZwZF9kYXRhKQotCQlnb3RvIG91dF9mcmVlX2NvbnRleHQyOworCQlnb3RvIG91dF9mcmVlX21ib3g7CiAKIAlkbyB7CiAJCWxwZmNfZHVtcF9tZW0ocGhiYSwgcG1iLCBvZmZzZXQpOwpAQCAtMjAwLDIxICsyMDEsMjkgQEAKIAkJfQogCQlpZiAobWItPnVuLnZhckRtcC53b3JkX2NudCA+IERNUF9WUERfU0laRSAtIG9mZnNldCkKIAkJCW1iLT51bi52YXJEbXAud29yZF9jbnQgPSBETVBfVlBEX1NJWkUgLSBvZmZzZXQ7Ci0JCWxwZmNfc2xpX3BjaW1lbV9iY29weShwbWItPmNvbnRleHQyLCBscGZjX3ZwZF9kYXRhICsgb2Zmc2V0LAorCQlscGZjX3NsaV9wY2ltZW1fYmNvcHkoKCh1aW50OF90ICopbWIpICsgRE1QX1JTUF9PRkZTRVQsCisJCQkJICAgICAgbHBmY192cGRfZGF0YSArIG9mZnNldCwKIAkJCQkgICAgICBtYi0+dW4udmFyRG1wLndvcmRfY250KTsKIAkJb2Zmc2V0ICs9IG1iLT51bi52YXJEbXAud29yZF9jbnQ7CiAJfSB3aGlsZSAobWItPnVuLnZhckRtcC53b3JkX2NudCAmJiBvZmZzZXQgPCBETVBfVlBEX1NJWkUpOwogCWxwZmNfcGFyc2VfdnBkKHBoYmEsIGxwZmNfdnBkX2RhdGEsIG9mZnNldCk7CiAKIAlrZnJlZShscGZjX3ZwZF9kYXRhKTsKLW91dF9mcmVlX2NvbnRleHQyOgotCWtmcmVlKHBtYi0+Y29udGV4dDIpOwogb3V0X2ZyZWVfbWJveDoKIAltZW1wb29sX2ZyZWUocG1iLCBwaGJhLT5tYm94X21lbV9wb29sKTsKIAlyZXR1cm4gMDsKIH0KIAotLyogQ29tcGxldGlvbiBoYW5kbGVyIGZvciBjb25maWcgYXN5bmMgZXZlbnQgbWFpbGJveCBjb21tYW5kLiAqLworLyoqCisgKiBscGZjX2NvbmZpZ19hc3luY19jbXBsOiBDb21wbGV0aW9uIGhhbmRsZXIgZm9yIGNvbmZpZyBhc3luYyBldmVudCBtYm94IGNtZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYm94cTogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIGlzIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgZm9yIGRyaXZlcidzIGNvbmZpZ3VyaW5nIGFzeW5jaHJvbm91cyBldmVudAorICogbWFpbGJveCBjb21tYW5kIHRvIHRoZSBkZXZpY2UuIElmIHRoZSBtYWlsYm94IGNvbW1hbmQgcmV0dXJucyBzdWNjZXNzZnVsbHksCisgKiBpdCB3aWxsIHNldCBpbnRlcm5hbCBhc3luYyBldmVudCBzdXBwb3J0IGZsYWcgdG8gMTsgb3RoZXJ3aXNlLCBpdCB3aWxsCisgKiBzZXQgaW50ZXJuYWwgYXN5bmMgZXZlbnQgc3VwcG9ydCBmbGFnIHRvIDAuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jb25maWdfYXN5bmNfY21wbChzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLCBMUEZDX01CT1hRX3QgKiBwbWJveHEpCiB7CkBAIC0yMjYsMTYgKzIzNSwxOSBAQAogCXJldHVybjsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBscGZjX2NvbmZpZ19wb3J0X3Bvc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgVGhpcyByb3V0aW5lIHdpbGwgZG8gTFBGQyBpbml0aWFsaXphdGlvbiBhZnRlciB0aGUgICAgICAgICAgICAgICAgKi8KLS8qICAgIENPTkZJR19QT1JUIG1haWxib3ggY29tbWFuZC4gVGhpcyB3aWxsIGJlIGluaXRpYWxpemVkICAgICAgICAgICAgICovCi0vKiAgICBhcyBhIFNMSSBsYXllciBjYWxsYmFjayByb3V0aW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgVGhpcyByb3V0aW5lIHJldHVybnMgMCBvbiBzdWNjZXNzLiBBbnkgb3RoZXIgcmV0dXJuIHZhbHVlICAgICAgICAgKi8KLS8qICAgIGluZGljYXRlcyBhbiBlcnJvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19jb25maWdfcG9ydF9wb3N0OiBQZXJmb3JtIGxwZmMgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgY29uZmlnIHBvcnQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgd2lsbCBkbyBMUEZDIGluaXRpYWxpemF0aW9uIGFmdGVyIHRoZSBDT05GSUdfUE9SVCBtYWlsYm94CisgKiBjb21tYW5kIGNhbGwuIEl0IHBlcmZvcm1zIGFsbCBpbnRlcm5hbCByZXNvdXJjZSBhbmQgc3RhdGUgc2V0dXBzIG9uIHRoZQorICogcG9ydDogcG9zdCBJT0NCIGJ1ZmZlcnMsIGVuYWJsZSBhcHByb3ByaWF0ZSBob3N0IGludGVycnVwdCBhdHRlbnRpb25zLAorICogRUxTIHJpbmcgdGltZXJzLCBldGMuCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgIDAgLSBzdWNjZXNzLgorICogICBBbnkgb3RoZXIgdmFsdWUgLSBlcnJvci4KKyAqKi8KIGludAogbHBmY19jb25maWdfcG9ydF9wb3N0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTM3OCw2ICszOTAsMjkgQEAKIAlpZiAocGhiYS0+c2xpX3JldiAhPSAzKQogCQlscGZjX3Bvc3RfcmN2X2J1ZihwaGJhKTsKIAorCS8qCisJICogQ29uZmlndXJlIEhCQSBNU0ktWCBhdHRlbnRpb24gY29uZGl0aW9ucyB0byBtZXNzYWdlcyBpZiBNU0ktWCBtb2RlCisJICovCisJaWYgKHBoYmEtPmludHJfdHlwZSA9PSBNU0lYKSB7CisJCXJjID0gbHBmY19jb25maWdfbXNpKHBoYmEsIHBtYik7CisJCWlmIChyYykgeworCQkJbWVtcG9vbF9mcmVlKHBtYiwgcGhiYS0+bWJveF9tZW1fcG9vbCk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQlyYyA9IGxwZmNfc2xpX2lzc3VlX21ib3gocGhiYSwgcG1iLCBNQlhfUE9MTCk7CisJCWlmIChyYyAhPSBNQlhfU1VDQ0VTUykgeworCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfTUJPWCwKKwkJCQkJIjAzNTIgQ29uZmlnIE1TSSBtYWlsYm94IGNvbW1hbmQgIgorCQkJCQkiZmFpbGVkLCBtYnhDbWQgeCV4LCBtYnhTdGF0dXMgeCV4XG4iLAorCQkJCQlwbWItPm1iLm1ieENvbW1hbmQsIHBtYi0+bWIubWJ4U3RhdHVzKTsKKwkJCW1lbXBvb2xfZnJlZShwbWIsIHBoYmEtPm1ib3hfbWVtX3Bvb2wpOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwl9CisKKwkvKiBJbml0aWFsaXplIEVSQVRUIGhhbmRsaW5nIGZsYWcgKi8KKwlwaGJhLT5oYmFfZmxhZyAmPSB+SEJBX0VSQVRUX0hBTkRMRUQ7CisKIAkvKiBFbmFibGUgYXBwcm9wcmlhdGUgaG9zdCBpbnRlcnJ1cHRzICovCiAJc3Bpbl9sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAJc3RhdHVzID0gcmVhZGwocGhiYS0+SENyZWdhZGRyKTsKQEAgLTM5MywyNiArNDI4LDI2IEBACiAKIAlpZiAoKHBoYmEtPmNmZ19wb2xsICYgRU5BQkxFX0ZDUF9SSU5HX1BPTExJTkcpICYmCiAJICAgIChwaGJhLT5jZmdfcG9sbCAmIERJU0FCTEVfRkNQX1JJTkdfSU5UKSkKLQkJc3RhdHVzICY9IH4oSENfUjBJTlRfRU5BIDw8IExQRkNfRkNQX1JJTkcpOworCQlzdGF0dXMgJj0gfihIQ19SMElOVF9FTkEpOwogCiAJd3JpdGVsKHN0YXR1cywgcGhiYS0+SENyZWdhZGRyKTsKIAlyZWFkbChwaGJhLT5IQ3JlZ2FkZHIpOyAvKiBmbHVzaCAqLwogCXNwaW5fdW5sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAKLQkvKgotCSAqIFNldHVwIHRoZSByaW5nIDAgKGVscykgIHRpbWVvdXQgaGFuZGxlcgotCSAqLwotCXRpbWVvdXQgPSBwaGJhLT5mY19yYXRvdiA8PCAxOworCS8qIFNldCB1cCByaW5nLTAgKEVMUykgdGltZXIgKi8KKwl0aW1lb3V0ID0gcGhiYS0+ZmNfcmF0b3YgKiAyOwogCW1vZF90aW1lcigmdnBvcnQtPmVsc190bW9mdW5jLCBqaWZmaWVzICsgSFogKiB0aW1lb3V0KTsKKwkvKiBTZXQgdXAgaGVhcnQgYmVhdCAoSEIpIHRpbWVyICovCiAJbW9kX3RpbWVyKCZwaGJhLT5oYl90bW9mdW5jLCBqaWZmaWVzICsgSFogKiBMUEZDX0hCX01CT1hfSU5URVJWQUwpOwogCXBoYmEtPmhiX291dHN0YW5kaW5nID0gMDsKIAlwaGJhLT5sYXN0X2NvbXBsZXRpb25fdGltZSA9IGppZmZpZXM7CisJLyogU2V0IHVwIGVycm9yIGF0dGVudGlvbiAoRVJBVFQpIHBvbGxpbmcgdGltZXIgKi8KKwltb2RfdGltZXIoJnBoYmEtPmVyYXR0X3BvbGwsIGppZmZpZXMgKyBIWiAqIExQRkNfRVJBVFRfUE9MTF9JTlRFUlZBTCk7CiAKIAlscGZjX2luaXRfbGluayhwaGJhLCBwbWIsIHBoYmEtPmNmZ190b3BvbG9neSwgcGhiYS0+Y2ZnX2xpbmtfc3BlZWQpOwogCXBtYi0+bWJveF9jbXBsID0gbHBmY19zbGlfZGVmX21ib3hfY21wbDsKLQlwbWItPnZwb3J0ID0gdnBvcnQ7Ci0JcmMgPSBscGZjX3NsaV9pc3N1ZV9tYm94KHBoYmEsIHBtYiwgTUJYX05PV0FJVCk7CiAJbHBmY19zZXRfbG9vcGJhY2tfZmxhZyhwaGJhKTsKKwlyYyA9IGxwZmNfc2xpX2lzc3VlX21ib3gocGhiYSwgcG1iLCBNQlhfTk9XQUlUKTsKIAlpZiAocmMgIT0gTUJYX1NVQ0NFU1MpIHsKIAkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfSU5JVCwKIAkJCQkiMDQ1NCBBZGFwdGVyIGZhaWxlZCB0byBpbml0LCBtYnhDbWQgeCV4ICIKQEAgLTQ0NywxOSArNDgyLDIwIEBACiAJCQkJcmMpOwogCQltZW1wb29sX2ZyZWUocG1iLCBwaGJhLT5tYm94X21lbV9wb29sKTsKIAl9Ci0JcmV0dXJuICgwKTsKKwlyZXR1cm4gMDsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBscGZjX2hiYV9kb3duX3ByZXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgVGhpcyByb3V0aW5lIHdpbGwgZG8gTFBGQyB1bmluaXRpYWxpemF0aW9uIGJlZm9yZSB0aGUgICAgICAgICAgICAgKi8KLS8qICAgIEhCQSBpcyByZXNldCB3aGVuIGJyaW5naW5nIGRvd24gdGhlIFNMSSBMYXllci4gVGhpcyB3aWxsIGJlICAgICAgICovCi0vKiAgICBpbml0aWFsaXplZCBhcyBhIFNMSSBsYXllciBjYWxsYmFjayByb3V0aW5lLiAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgVGhpcyByb3V0aW5lIHJldHVybnMgMCBvbiBzdWNjZXNzLiBBbnkgb3RoZXIgcmV0dXJuIHZhbHVlICAgICAgICAgKi8KLS8qICAgIGluZGljYXRlcyBhbiBlcnJvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19oYmFfZG93bl9wcmVwOiBQZXJmb3JtIGxwZmMgdW5pbml0aWFsaXphdGlvbiBwcmlvciB0byBIQkEgcmVzZXQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIEhCQSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgd2lsbCBkbyBMUEZDIHVuaW5pdGlhbGl6YXRpb24gYmVmb3JlIHRoZSBIQkEgaXMgcmVzZXQgd2hlbgorICogYnJpbmdpbmcgZG93biB0aGUgU0xJIExheWVyLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAwIC0gc3VjY2Vzcy4KKyAqICAgQW55IG90aGVyIHZhbHVlIC0gZXJyb3IuCisgKiovCiBpbnQKIGxwZmNfaGJhX2Rvd25fcHJlcChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC00ODEsMTUgKzUxNywxNyBAQAogCXJldHVybiAwOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIGxwZmNfaGJhX2Rvd25fcG9zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBUaGlzIHJvdXRpbmUgd2lsbCBkbyB1bmluaXRpYWxpemF0aW9uIGFmdGVyIHRoZSBIQkEgaXMgcmVzZXQgICAgICAqLwotLyogICAgd2hlbiBicmluZ2luZyBkb3duIHRoZSBTTEkgTGF5ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIFRoaXMgcm91dGluZSByZXR1cm5zIDAgb24gc3VjY2Vzcy4gQW55IG90aGVyIHJldHVybiB2YWx1ZSAgICAgICAgICovCi0vKiAgICBpbmRpY2F0ZXMgYW4gZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfaGJhX2Rvd25fcG9zdDogUGVyZm9ybSBscGZjIHVuaW5pdGlhbGl6YXRpb24gYWZ0ZXIgSEJBIHJlc2V0LgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBIQkEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIHdpbGwgZG8gdW5pbml0aWFsaXphdGlvbiBhZnRlciB0aGUgSEJBIGlzIHJlc2V0IHdoZW4gYnJpbmcKKyAqIGRvd24gdGhlIFNMSSBMYXllci4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgMCAtIHN1Y2Vzcy4KKyAqICAgQW55IG90aGVyIHZhbHVlIC0gZXJyb3IuCisgKiovCiBpbnQKIGxwZmNfaGJhX2Rvd25fcG9zdChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC01NDgsNyArNTg2LDE4IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIEhCQSBoZWFydCBiZWF0IHRpbWVvdXQgaGFuZGxlciAqLworLyoqCisgKiBscGZjX2hiX3RpbWVvdXQ6IFRoZSBIQkEtdGltZXIgdGltZW91dCBoYW5kbGVyLgorICogQHB0cjogdW5zaWduZWQgbG9uZyBob2xkcyB0aGUgcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBIQkEtdGltZXIgdGltZW91dCBoYW5kbGVyIHJlZ2lzdGVyZWQgdG8gdGhlIGxwZmMgZHJpdmVyLiBXaGVuCisgKiB0aGlzIHRpbWVyIGZpcmVzLCBhIEhCQSB0aW1lb3V0IGV2ZW50IHNoYWxsIGJlIHBvc3RlZCB0byB0aGUgbHBmYyBkcml2ZXIKKyAqIHdvcmstcG9ydC1ldmVudHMgYml0bWFwIGFuZCB0aGUgd29ya2VyIHRocmVhZCBpcyBub3RpZmllZC4gVGhpcyB0aW1lb3V0CisgKiBldmVudCB3aWxsIGJlIHVzZWQgYnkgdGhlIHdvcmtlciB0aHJlYWQgdG8gaW52b2tlIHRoZSBhY3R1YWwgdGltZW91dAorICogaGFuZGxlciByb3V0aW5lLCBscGZjX2hiX3RpbWVvdXRfaGFuZGxlci4gQW55IHBlcmlvZGljYWwgb3BlcmF0aW9ucyB3aWxsCisgKiBiZSBwZXJmb3JtZWQgaW4gdGhlIHRpbWVvdXQgaGFuZGxlciBhbmQgdGhlIEhCQSB0aW1lb3V0IGV2ZW50IGJpdCBzaGFsbAorICogYmUgY2xlYXJlZCBieSB0aGUgd29ya2VyIHRocmVhZCBhZnRlciBpdCBoYXMgdGFrZW4gdGhlIGV2ZW50IGJpdG1hcCBvdXQuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19oYl90aW1lb3V0KHVuc2lnbmVkIGxvbmcgcHRyKQogewpAQCAtNTU3LDE3ICs2MDYsMzYgQEAKIAl1bnNpZ25lZCBsb25nIGlmbGFnOwogCiAJcGhiYSA9IChzdHJ1Y3QgbHBmY19oYmEgKilwdHI7CisKKwkvKiBDaGVjayBmb3IgaGVhcnQgYmVhdCB0aW1lb3V0IGNvbmRpdGlvbnMgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmcGhiYS0+cHBvcnQtPndvcmtfcG9ydF9sb2NrLCBpZmxhZyk7CiAJdG1vX3Bvc3RlZCA9IHBoYmEtPnBwb3J0LT53b3JrX3BvcnRfZXZlbnRzICYgV09SS0VSX0hCX1RNTzsKIAlpZiAoIXRtb19wb3N0ZWQpCiAJCXBoYmEtPnBwb3J0LT53b3JrX3BvcnRfZXZlbnRzIHw9IFdPUktFUl9IQl9UTU87CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGhiYS0+cHBvcnQtPndvcmtfcG9ydF9sb2NrLCBpZmxhZyk7CiAKKwkvKiBUZWxsIHRoZSB3b3JrZXIgdGhyZWFkIHRoZXJlIGlzIHdvcmsgdG8gZG8gKi8KIAlpZiAoIXRtb19wb3N0ZWQpCiAJCWxwZmNfd29ya2VyX3dha2VfdXAocGhiYSk7CiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfaGJfbWJveF9jbXBsOiBUaGUgbHBmYyBoZWFydC1iZWF0IG1haWxib3ggY29tbWFuZCBjYWxsYmFjayBmdW5jdGlvbi4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYm94cTogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgbHBmYyBoZWFydC1iZWF0IG1haWxib3ggY29tbWFuZC4KKyAqIElmIGNvbmZpZ3VyZWQsIHRoZSBscGZjIGRyaXZlciBpc3N1ZXMgdGhlIGhlYXJ0LWJlYXQgbWFpbGJveCBjb21tYW5kIHRvCisgKiB0aGUgSEJBIGV2ZXJ5IExQRkNfSEJfTUJPWF9JTlRFUlZBTCAoY3VycmVudCA1KSBzZWNvbmRzLiBBdCB0aGUgdGltZSB0aGUKKyAqIGhlYXJ0LWJlYXQgbWFpbGJveCBjb21tYW5kIGlzIGlzc3VlZCwgdGhlIGRyaXZlciBzaGFsbCBzZXQgdXAgaGVhcnQtYmVhdAorICogdGltZW91dCB0aW1lciB0byBMUEZDX0hCX01CT1hfVElNRU9VVCAoY3VycmVudCAzMCkgc2Vjb25kcyBhbmQgbWFya3MKKyAqIGhlYXJ0LWJlYXQgb3V0c3RhbmRpbmcgc3RhdGUuIE9uY2UgdGhlIG1haWxib3ggY29tbWFuZCBjb21lcyBiYWNrIGFuZAorICogbm8gZXJyb3IgY29uZGl0aW9ucyBkZXRlY3RlZCwgdGhlIGhlYXJ0LWJlYXQgbWFpbGJveCBjb21tYW5kIHRpbWVyIGlzCisgKiByZXNldCB0byBMUEZDX0hCX01CT1hfSU5URVJWQUwgc2Vjb25kcyBhbmQgdGhlIGhlYXJ0LWJlYXQgb3V0c3RhbmRpbmcKKyAqIHN0YXRlIGlzIGNsZWFyZWQgZm9yIHRoZSBuZXh0IGhlYXJ0LWJlYXQuIElmIHRoZSB0aW1lciBleHBpcmVkIHdpdGggdGhlCisgKiBoZWFydC1iZWF0IG91dHN0YW5kaW5nIHN0YXRlIHNldCwgdGhlIGRyaXZlciB3aWxsIHB1dCB0aGUgSEJBIG9mZmxpbmUuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19oYl9tYm94X2NtcGwoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1ib3hxKQogewpAQCAtNTc3LDYgKzY0NSw3IEBACiAJcGhiYS0+aGJfb3V0c3RhbmRpbmcgPSAwOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGRydnJfZmxhZyk7CiAKKwkvKiBDaGVjayBhbmQgcmVzZXQgaGVhcnQtYmVhdCB0aW1lciBpcyBuZWNlc3NhcnkgKi8KIAltZW1wb29sX2ZyZWUocG1ib3hxLCBwaGJhLT5tYm94X21lbV9wb29sKTsKIAlpZiAoIShwaGJhLT5wcG9ydC0+ZmNfZmxhZyAmIEZDX09GRkxJTkVfTU9ERSkgJiYKIAkJIShwaGJhLT5saW5rX3N0YXRlID09IExQRkNfSEJBX0VSUk9SKSAmJgpAQCAtNTg2LDYgKzY1NSwyMiBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX2hiX3RpbWVvdXRfaGFuZGxlcjogVGhlIEhCQS10aW1lciB0aW1lb3V0IGhhbmRsZXIuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBhY3R1YWwgSEJBLXRpbWVyIHRpbWVvdXQgaGFuZGxlciB0byBiZSBpbnZva2VkIGJ5IHRoZSB3b3JrZXIKKyAqIHRocmVhZCB3aGVuZXZlciB0aGUgSEJBIHRpbWVyIGZpcmVkIGFuZCBIQkEtdGltZW91dCBldmVudCBwb3N0ZWQuIFRoaXMKKyAqIGhhbmRsZXIgcGVyZm9ybXMgYW55IHBlcmlvZGljIG9wZXJhdGlvbnMgbmVlZGVkIGZvciB0aGUgZGV2aWNlLiBJZiBzdWNoCisgKiBwZXJpb2RpYyBldmVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVuZGVkIHRvIGVpdGhlciBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIKKyAqIG9yIGJ5IHByb2Nlc3Npbmcgc2xvdy1yaW5nIG9yIGZhc3QtcmluZyBldmVudHMgd2l0aGluIHRoZSBIQkEtdGltZXIKKyAqIHRpbWVvdXQgd2luZG93IChMUEZDX0hCX01CT1hfSU5URVJWQUwpLCB0aGlzIGhhbmRsZXIganVzdCBzaW1wbHkgcmVzZXRzCisgKiB0aGUgdGltZXIgZm9yIHRoZSBuZXh0IHRpbWVvdXQgcGVyaW9kLiBJZiBscGZjIGhlYXJ0LWJlYXQgbWFpbGJveCBjb21tYW5kCisgKiBpcyBjb25maWd1cmVkIGFuZCB0aGVyZSBpcyBubyBoZWFydC1iZWF0IG1haWxib3ggY29tbWFuZCBvdXRzdGFuZGluZywgYQorICogaGVhcnQtYmVhdCBtYWlsYm94IGlzIGlzc3VlZCBhbmQgdGltZXIgc2V0IHByb3Blcmx5LiBPdGhlcndpc2UsIGlmIHRoZXJlCisgKiBoYXMgYmVlbiBhIGhlYXJ0LWJlYXQgbWFpbGJveCBjb21tYW5kIG91dHN0YW5kaW5nLCB0aGUgSEJBIHNoYWxsIGJlIHB1dAorICogdG8gb2ZmbGluZS4KKyAqKi8KIHZvaWQKIGxwZmNfaGJfdGltZW91dF9oYW5kbGVyKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTY4NCw2ICs3NjksMTMgQEAKIAl9CiB9CiAKKy8qKgorICogbHBmY19vZmZsaW5lX2VyYXR0OiBCcmluZyBscGZjIG9mZmxpbmUgb24gaGFyZHdhcmUgZXJyb3IgYXR0ZW50aW9uLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBicmluZyB0aGUgSEJBIG9mZmxpbmUgd2hlbiBIQkEgaGFyZHdhcmUgZXJyb3IKKyAqIG90aGVyIHRoYW4gUG9ydCBFcnJvciA2IGhhcyBiZWVuIGRldGVjdGVkLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfb2ZmbGluZV9lcmF0dChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC03MDQsMTQgKzc5NiwxNiBAQAogCXJldHVybjsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBscGZjX2hhbmRsZV9lcmF0dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgVGhpcyByb3V0aW5lIHdpbGwgaGFuZGxlIHByb2Nlc3NpbmcgYSBIb3N0IEF0dGVudGlvbiAgICAgICAgICAgICAgKi8KLS8qICAgIEVycm9yIFN0YXR1cyBldmVudC4gVGhpcyB3aWxsIGJlIGluaXRpYWxpemVkICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBhcyBhIFNMSSBsYXllciBjYWxsYmFjayByb3V0aW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfaGFuZGxlX2VyYXR0OiBUaGUgSEJBIGhhcmR3YXJlIGVycm9yIGhhbmRsZXIuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCB0byBoYW5kbGUgdGhlIGZvbGxvd2luZyBIQkEgaGFyZHdhcmUgZXJyb3IKKyAqIGNvbmRpdGlvbnM6CisgKiAxIC0gSEJBIGVycm9yIGF0dGVudGlvbiBpbnRlcnJ1cHQKKyAqIDIgLSBETUEgcmluZyBpbmRleCBvdXQgb2YgcmFuZ2UKKyAqIDMgLSBNYWlsYm94IGNvbW1hbmQgY2FtZSBiYWNrIGFzIHVua25vd24KKyAqKi8KIHZvaWQKIGxwZmNfaGFuZGxlX2VyYXR0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTcyMiw2ICs4MTYsNyBAQAogCXVuc2lnbmVkIGxvbmcgdGVtcGVyYXR1cmU7CiAJc3RydWN0IHRlbXBfZXZlbnQgdGVtcF9ldmVudF9kYXRhOwogCXN0cnVjdCBTY3NpX0hvc3QgICpzaG9zdDsKKwlzdHJ1Y3QgbHBmY19ib2FyZF9ldmVudF9oZWFkZXIgYm9hcmRfZXZlbnQ7CiAKIAkvKiBJZiB0aGUgcGNpIGNoYW5uZWwgaXMgb2ZmbGluZSwgaWdub3JlIHBvc3NpYmxlIGVycm9ycywKIAkgKiBzaW5jZSB3ZSBjYW5ub3QgY29tbXVuaWNhdGUgd2l0aCB0aGUgcGNpIGNhcmQgYW55d2F5LiAqLwpAQCAtNzMxLDYgKzgyNiwxNiBAQAogCWlmICghcGhiYS0+Y2ZnX2VuYWJsZV9oYmFfcmVzZXQpCiAJCXJldHVybjsKIAorCS8qIFNlbmQgYW4gaW50ZXJuYWwgZXJyb3IgZXZlbnQgdG8gbWdtdCBhcHBsaWNhdGlvbiAqLworCWJvYXJkX2V2ZW50LmV2ZW50X3R5cGUgPSBGQ19SRUdfQk9BUkRfRVZFTlQ7CisJYm9hcmRfZXZlbnQuc3ViY2F0ZWdvcnkgPSBMUEZDX0VWRU5UX1BPUlRJTlRFUlI7CisJc2hvc3QgPSBscGZjX3Nob3N0X2Zyb21fdnBvcnQocGhiYS0+cHBvcnQpOworCWZjX2hvc3RfcG9zdF92ZW5kb3JfZXZlbnQoc2hvc3QsIGZjX2dldF9ldmVudF9udW1iZXIoKSwKKwkJCQkgIHNpemVvZihib2FyZF9ldmVudCksCisJCQkJICAoY2hhciAqKSAmYm9hcmRfZXZlbnQsCisJCQkJICBTQ1NJX05MX1ZJRF9UWVBFX1BDSQorCQkJCSAgfCBQQ0lfVkVORE9SX0lEX0VNVUxFWCk7CisKIAlpZiAocGhiYS0+d29ya19ocyAmIEhTX0ZGRVI2KSB7CiAJCS8qIFJlLWVzdGFibGlzaGluZyBMaW5rICovCiAJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19MSU5LX0VWRU5ULApAQCAtNzcxLDcgKzg3Niw3IEBACiAJCXRlbXBfZXZlbnRfZGF0YS5kYXRhID0gKHVpbnQzMl90KXRlbXBlcmF0dXJlOwogCiAJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0lOSVQsCi0JCQkJIjA0NTkgQWRhcHRlciBtYXhpbXVtIHRlbXBlcmF0dXJlIGV4Y2VlZGVkICIKKwkJCQkiMDQwNiBBZGFwdGVyIG1heGltdW0gdGVtcGVyYXR1cmUgZXhjZWVkZWQgIgogCQkJCSIoJWxkKSwgdGFraW5nIHRoaXMgcG9ydCBvZmZsaW5lICIKIAkJCQkiRGF0YTogeCV4IHgleCB4JXhcbiIsCiAJCQkJdGVtcGVyYXR1cmUsIHBoYmEtPndvcmtfaHMsCkBAIC03OTEsOCArODk2LDggQEAKIAogCX0gZWxzZSB7CiAJCS8qIFRoZSBpZiBjbGF1c2UgYWJvdmUgZm9yY2VzIHRoaXMgY29kZSBwYXRoIHdoZW4gdGhlIHN0YXR1cwotCQkgKiBmYWlsdXJlIGlzIGEgdmFsdWUgb3RoZXIgdGhhbiBGRkVSNi4gIERvIG5vdCBjYWxsIHRoZSBvZmZsaW5lCi0JCSAqICB0d2ljZS4gVGhpcyBpcyB0aGUgYWRhcHRlciBoYXJkd2FyZSBlcnJvciBwYXRoLgorCQkgKiBmYWlsdXJlIGlzIGEgdmFsdWUgb3RoZXIgdGhhbiBGRkVSNi4gRG8gbm90IGNhbGwgdGhlIG9mZmxpbmUKKwkJICogdHdpY2UuIFRoaXMgaXMgdGhlIGFkYXB0ZXIgaGFyZHdhcmUgZXJyb3IgcGF0aC4KIAkJICovCiAJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0lOSVQsCiAJCQkJIjA0NTcgQWRhcHRlciBIYXJkd2FyZSBFcnJvciAiCkBAIC04MDgsMTYgKzkxMywxNiBAQAogCiAJCWxwZmNfb2ZmbGluZV9lcmF0dChwaGJhKTsKIAl9CisJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIGxwZmNfaGFuZGxlX2xhdHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBUaGlzIHJvdXRpbmUgd2lsbCBoYW5kbGUgcHJvY2Vzc2luZyBhIEhvc3QgQXR0ZW50aW9uICAgICAgICAgICAgICAqLwotLyogICAgTGluayBTdGF0dXMgZXZlbnQuIFRoaXMgd2lsbCBiZSBpbml0aWFsaXplZCAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgIGFzIGEgU0xJIGxheWVyIGNhbGxiYWNrIHJvdXRpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19oYW5kbGVfbGF0dDogVGhlIEhCQSBsaW5rIGV2ZW50IGhhbmRsZXIuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCBmcm9tIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGhhbmRsZSBhIEhCQSBob3N0CisgKiBhdHRlbnRpb24gbGluayBldmVudC4KKyAqKi8KIHZvaWQKIGxwZmNfaGFuZGxlX2xhdHQoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtODk4LDEyICsxMDAzLDIwIEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgbHBmY19wYXJzZV92cGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgIFRoaXMgcm91dGluZSB3aWxsIHBhcnNlIHRoZSBWUEQgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfcGFyc2VfdnBkOiBQYXJzZSBWUEQgKFZpdGFsIFByb2R1Y3QgRGF0YSkuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEB2cGQ6IHBvaW50ZXIgdG8gdGhlIHZpdGFsIHByb2R1Y3QgZGF0YS4KKyAqIEBsZW46IGxlbmd0aCBvZiB0aGUgdml0YWwgcHJvZHVjdCBkYXRhIGluIGJ5dGVzLgorICoKKyAqIFRoaXMgcm91dGluZSBwYXJzZXMgdGhlIFZpdGFsIFByb2R1Y3QgRGF0YSAoVlBEKS4gVGhlIFZQRCBpcyB0cmVhdGVkIGFzCisgKiBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLiBJbiB0aGlzIHJvdXRpbmUsIHRoZSBNb2RlbE5hbWUsIFByb2dyYW1UeXBlLCBhbmQKKyAqIE1vZGVsRGVzYywgZXRjLiBmaWVsZHMgb2YgdGhlIHBoYmEgZGF0YSBzdHJ1Y3R1cmUgd2lsbCBiZSBwb3B1bGF0ZWQuCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgIDAgLSBwb2ludGVyIHRvIHRoZSBWUEQgcGFzc2VkIGluIGlzIE5VTEwKKyAqICAgMSAtIHN1Y2Nlc3MKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfcGFyc2VfdnBkKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDhfdCAqdnBkLCBpbnQgbGVuKQogewpAQCAtMTA0MCwxMiArMTE1MywyNSBAQAogCXJldHVybigxKTsKIH0KIAorLyoqCisgKiBscGZjX2dldF9oYmFfbW9kZWxfZGVzYzogUmV0cmlldmUgSEJBIGRldmljZSBtb2RlbCBuYW1lIGFuZCBkZXNjcmlwdGlvbi4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQG1kcDogcG9pbnRlciB0byB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgZGVyaXZlZCBtb2RlbCBuYW1lLgorICogQGRlc2NwOiBwb2ludGVyIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBkZXJpdmVkIGRlc2NyaXB0aW9uLgorICoKKyAqIFRoaXMgcm91dGluZSByZXRyaWV2ZXMgSEJBJ3MgZGVzY3JpcHRpb24gYmFzZWQgb24gaXRzIHJlZ2lzdGVyZWQgUENJIGRldmljZQorICogSUQuIFRoZSBAZGVzY3AgcGFzc2VkIGludG8gdGhpcyBmdW5jdGlvbiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgMjU2IGNoYXJzLiBJdAorICogc2hhbGwgYmUgcmV0dXJuZWQgd2l0aCB0aGUgbW9kZWwgbmFtZSwgbWF4aW11bSBzcGVlZCwgYW5kIHRoZSBob3N0IGJ1cyB0eXBlLgorICogVGhlIEBtZHAgcGFzc2VkIGludG8gdGhpcyBmdW5jdGlvbiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgODAgY2hhcnMuIFdoZW4gdGhlCisgKiBmdW5jdGlvbiByZXR1cm5zLCB0aGUgQG1kcCB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBtb2RlbCBuYW1lLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfZ2V0X2hiYV9tb2RlbF9kZXNjKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDhfdCAqbWRwLCB1aW50OF90ICpkZXNjcCkKIHsKIAlscGZjX3ZwZF90ICp2cDsKIAl1aW50MTZfdCBkZXZfaWQgPSBwaGJhLT5wY2lkZXYtPmRldmljZTsKIAlpbnQgbWF4X3NwZWVkOworCWludCBHRSA9IDA7CiAJc3RydWN0IHsKIAkJY2hhciAqIG5hbWU7CiAJCWludCAgICBtYXhfc3BlZWQ7CkBAIC0xMTc3LDYgKzEzMDMsMTkgQEAKIAljYXNlIFBDSV9ERVZJQ0VfSURfU0FUX1M6CiAJCW0gPSAodHlwZW9mKG0pKXsiTFBlMTIwMDAtUyIsIG1heF9zcGVlZCwgIlBDSWUifTsKIAkJYnJlYWs7CisJY2FzZSBQQ0lfREVWSUNFX0lEX0hPUk5FVDoKKwkJbSA9ICh0eXBlb2YobSkpeyJMUDIxMDAwIiwgbWF4X3NwZWVkLCAiUENJZSJ9OworCQlHRSA9IDE7CisJCWJyZWFrOworCWNhc2UgUENJX0RFVklDRV9JRF9QUk9URVVTX1ZGOgorCQltID0gKHR5cGVvZihtKSkgeyJMUGV2MTIwMDAiLCBtYXhfc3BlZWQsICJQQ0llIElPViJ9OworCQlicmVhazsKKwljYXNlIFBDSV9ERVZJQ0VfSURfUFJPVEVVU19QRjoKKwkJbSA9ICh0eXBlb2YobSkpIHsiTFBldjEyMDAwIiwgbWF4X3NwZWVkLCAiUENJZSBJT1YifTsKKwkJYnJlYWs7CisJY2FzZSBQQ0lfREVWSUNFX0lEX1BST1RFVVNfUzoKKwkJbSA9ICh0eXBlb2YobSkpIHsiTFBlbXYxMjAwMi1TIiwgbWF4X3NwZWVkLCAiUENJZSBJT1YifTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJbSA9ICh0eXBlb2YobSkpeyBOVUxMIH07CiAJCWJyZWFrOwpAQCAtMTE4NiwxOCArMTMyNSwyNSBAQAogCQlzbnByaW50ZihtZHAsIDc5LCIlcyIsIG0ubmFtZSk7CiAJaWYgKGRlc2NwICYmIGRlc2NwWzBdID09ICdcMCcpCiAJCXNucHJpbnRmKGRlc2NwLCAyNTUsCi0JCQkgIkVtdWxleCAlcyAlZEdiICVzIEZpYnJlIENoYW5uZWwgQWRhcHRlciIsCi0JCQkgbS5uYW1lLCBtLm1heF9zcGVlZCwgbS5idXMpOworCQkJIkVtdWxleCAlcyAlZCVzICVzICVzIiwKKwkJCW0ubmFtZSwgbS5tYXhfc3BlZWQsCisJCQkoR0UpID8gIkdFIiA6ICJHYiIsCisJCQltLmJ1cywKKwkJCShHRSkgPyAiRkNvRSBBZGFwdGVyIiA6ICJGaWJyZSBDaGFubmVsIEFkYXB0ZXIiKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICBscGZjX3Bvc3RfYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICBUaGlzIHJvdXRpbmUgd2lsbCBwb3N0IGNvdW50IGJ1ZmZlcnMgdG8gdGhlICAqLwotLyogICByaW5nIHdpdGggdGhlIFFVRV9SSU5HX0JVRl9DTiBjb21tYW5kLiBUaGlzICAqLwotLyogICBhbGxvd3MgMyBidWZmZXJzIC8gY29tbWFuZCB0byBiZSBwb3N0ZWQuICAgICAqLwotLyogICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnVmZmVycyBOT1QgcG9zdGVkLiAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3Bvc3RfYnVmZmVyOiBQb3N0IElPQ0Iocykgd2l0aCBETUEgYnVmZmVyIGRlc2NyaXB0b3IocykgdG8gYSBJT0NCIHJpbmcuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwcmluZzogcG9pbnRlciB0byBhIElPQ0IgcmluZy4KKyAqIEBjbnQ6IHRoZSBudW1iZXIgb2YgSU9DQnMgdG8gYmUgcG9zdGVkIHRvIHRoZSBJT0NCIHJpbmcuCisgKgorICogVGhpcyByb3V0aW5lIHBvc3RzIGEgZ2l2ZW4gbnVtYmVyIG9mIElPQ0JzIHdpdGggdGhlIGFzc29jaWF0ZWQgRE1BIGJ1ZmZlcgorICogZGVzY3JpcHRvcnMgc3BlY2lmaWVkIGJ5IHRoZSBjbnQgYXJndW1lbnQgdG8gdGhlIGdpdmVuIElPQ0IgcmluZy4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgVGhlIG51bWJlciBvZiBJT0NCcyBOT1QgYWJsZSB0byBiZSBwb3N0ZWQgdG8gdGhlIElPQ0IgcmluZy4KKyAqKi8KIGludAogbHBmY19wb3N0X2J1ZmZlcihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywgaW50IGNudCkKIHsKQEAgLTEyODcsMTIgKzE0MzMsMTcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgIGxwZmNfcG9zdF9yY3ZfYnVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICBUaGlzIHJvdXRpbmUgcG9zdCBpbml0aWFsIHJjdiBidWZmZXJzIHRvIHRoZSBjb25maWd1cmVkIHJpbmdzICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3Bvc3RfcmN2X2J1ZjogUG9zdCB0aGUgaW5pdGlhbCByZWNlaXZlIElPQ0IgYnVmZmVycyB0byBFTFMgcmluZy4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBwb3N0cyBpbml0aWFsIHJlY2VpdmUgSU9DQiBidWZmZXJzIHRvIHRoZSBFTFMgcmluZy4gVGhlCisgKiBjdXJyZW50IG51bWJlciBvZiBpbml0aWFsIElPQ0IgYnVmZmVycyBzcGVjaWZpZWQgYnkgTFBGQ19CVUZfUklORzAgaXMKKyAqIHNldCB0byA2NCBJT0NCcy4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgMCAtIHN1Y2Nlc3MgKGN1cnJlbnRseSBhbHdheXMgc3VjY2VzcykKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfcG9zdF9yY3ZfYnVmKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTEzMDcsMTEgKzE0NTgsMTMgQEAKIAogI2RlZmluZSBTKE4sVikgKCgoVik8PChOKSl8KChWKT4+KDMyLShOKSkpKQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgbHBmY19zaGFfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19zaGFfaW5pdDogU2V0IHVwIGluaXRpYWwgYXJyYXkgb2YgaGFzaCB0YWJsZSBlbnRyaWVzLgorICogQEhhc2hSZXN1bHRQb2ludGVyOiBwb2ludGVyIHRvIGFuIGFycmF5IGFzIGhhc2ggdGFibGUuCisgKgorICogVGhpcyByb3V0aW5lIHNldHMgdXAgdGhlIGluaXRpYWwgdmFsdWVzIHRvIHRoZSBhcnJheSBvZiBoYXNoIHRhYmxlIGVudHJpZXMKKyAqIGZvciB0aGUgTEMgSEJBcy4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NoYV9pbml0KHVpbnQzMl90ICogSGFzaFJlc3VsdFBvaW50ZXIpCiB7CkBAIC0xMzIyLDExICsxNDc1LDE2IEBACiAJSGFzaFJlc3VsdFBvaW50ZXJbNF0gPSAweEMzRDJFMUYwOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgbHBmY19zaGFfaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19zaGFfaXRlcmF0ZTogSXRlcmF0ZSBpbml0aWFsIGhhc2ggdGFibGUgd2l0aCB0aGUgd29ya2luZyBoYXNoIHRhYmxlLgorICogQEhhc2hSZXN1bHRQb2ludGVyOiBwb2ludGVyIHRvIGFuIGluaXRpYWwvcmVzdWx0IGhhc2ggdGFibGUuCisgKiBASGFzaFdvcmtpbmdQb2ludGVyOiBwb2ludGVyIHRvIGFuIHdvcmtpbmcgaGFzaCB0YWJsZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXRlcmF0ZXMgYW4gaW5pdGlhbCBoYXNoIHRhYmxlIHBvaW50ZWQgYnkgQEhhc2hSZXN1bHRQb2ludGVyCisgKiB3aXRoIHRoZSB2YWx1ZXMgZnJvbSB0aGUgd29ya2luZyBoYXNoIHRhYmxlIHBvaW50ZWVkIGJ5IEBIYXNoV29ya2luZ1BvaW50ZXIuCisgKiBUaGUgcmVzdWx0cyBhcmUgcHV0dGluZyBiYWNrIHRvIHRoZSBpbml0aWFsIGhhc2ggdGFibGUsIHJldHVybmVkIHRocm91Z2gKKyAqIHRoZSBASGFzaFJlc3VsdFBvaW50ZXIgYXMgdGhlIHJlc3VsdCBoYXNoIHRhYmxlLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2hhX2l0ZXJhdGUodWludDMyX3QgKiBIYXNoUmVzdWx0UG9pbnRlciwgdWludDMyX3QgKiBIYXNoV29ya2luZ1BvaW50ZXIpCiB7CkBAIC0xMzc0LDIyICsxNTMyLDI5IEBACiAKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgIGxwZmNfY2hhbGxlbmdlX2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfY2hhbGxlbmdlX2tleTogQ3JlYXRlIGNoYWxsZW5nZSBrZXkgYmFzZWQgb24gV1dQTiBvZiB0aGUgSEJBLgorICogQFJhbmRvbUNoYWxsZW5nZTogcG9pbnRlciB0byB0aGUgZW50cnkgb2YgaG9zdCBjaGFsbGVuZ2UgcmFuZG9tIG51bWJlciBhcnJheS4KKyAqIEBIYXNoV29ya2luZzogcG9pbnRlciB0byB0aGUgZW50cnkgb2YgdGhlIHdvcmtpbmcgaGFzaCBhcnJheS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgY2FsY3VsYXRlcyB0aGUgd29ya2luZyBoYXNoIGFycmF5IHJlZmVycmVkIGJ5IEBIYXNoV29ya2luZworICogZnJvbSB0aGUgY2hhbGxlbmdlIHJhbmRvbSBudW1iZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaG9zdCwgcmVmZXJyZWQgYnkKKyAqIEBSYW5kb21DaGFsbGVuZ2UuIFRoZSByZXN1bHQgaXMgcHV0IGludG8gdGhlIGVudHJ5IG9mIHRoZSB3b3JraW5nIGhhc2gKKyAqIGFycmF5IGFuZCByZXR1cm5lZCBieSByZWZlcmVuY2UgdGhyb3VnaCBASGFzaFdvcmtpbmcuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jaGFsbGVuZ2Vfa2V5KHVpbnQzMl90ICogUmFuZG9tQ2hhbGxlbmdlLCB1aW50MzJfdCAqIEhhc2hXb3JraW5nKQogewogCSpIYXNoV29ya2luZyA9ICgqUmFuZG9tQ2hhbGxlbmdlIF4gKkhhc2hXb3JraW5nKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgIGxwZmNfaGJhX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfaGJhX2luaXQ6IFBlcmZvcm0gc3BlY2lhbCBoYW5kbGluZyBmb3IgTEMgSEJBIGluaXRpYWxpemF0aW9uLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAaGJhaW5pdDogcG9pbnRlciB0byBhbiBhcnJheSBvZiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlcnMuCisgKgorICogVGhpcyByb3V0aW5lIHBlcmZvcm1zIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBMQyBIQkEgaW5pdGlhbGl6YXRpb24uCisgKiovCiB2b2lkCiBscGZjX2hiYV9pbml0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgKmhiYWluaXQpCiB7CkBAIC0xNDEyLDYgKzE1NzcsMTUgQEAKIAlrZnJlZShIYXNoV29ya2luZyk7CiB9CiAKKy8qKgorICogbHBmY19jbGVhbnVwOiBQZXJmb3JtcyB2cG9ydCBjbGVhbnVwcyBiZWZvcmUgZGVsZXRpbmcgYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBwZXJmb3JtcyB0aGUgbmVjZXNzYXJ5IGNsZWFudXBzIGJlZm9yZSBkZWxldGluZyB0aGUgQHZwb3J0LgorICogSXQgaW52b2tlcyB0aGUgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUgdG8gcGVyZm9ybSBuZWNlc3Nhcnkgc3RhdGUKKyAqIHRyYW5zaXRpb25zIGFuZCB0byByZWxlYXNlIHRoZSBuZGxwcyBhc3NvY2lhdGVkIHdpdGggdGhlIEB2cG9ydC4gTm90ZSwKKyAqIHRoZSBwaHlzaWNhbCBwb3J0IGlzIHRyZWF0ZWQgYXMgQHZwb3J0IDAuCisgKiovCiB2b2lkCiBscGZjX2NsZWFudXAoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMTQ1OSwxNCArMTYzMyw2IEBACiAJCWxwZmNfZGlzY19zdGF0ZV9tYWNoaW5lKHZwb3J0LCBuZGxwLCBOVUxMLAogCQkJCQkgICAgIE5MUF9FVlRfREVWSUNFX1JNKTsKIAotCQkvKiBubHBfdHlwZSB6ZXJvIGlzIG5vdCBkZWZpbmVkLCBubHBfZmxhZyB6ZXJvIGFsc28gbm90IGRlZmluZWQsCi0JCSAqIG5scF9zdGF0ZSBpcyB1bnVzZWQsIHRoaXMgaGFwcGVucyB3aGVuCi0JCSAqIGFuIGluaXRpYXRvciBoYXMgbG9nZ2VkCi0JCSAqIGludG8gdXMgc28gY2xlYW51cCB0aGlzIG5kbHAuCi0JCSAqLwotCQlpZiAoKG5kbHAtPm5scF90eXBlID09IDApICYmIChuZGxwLT5ubHBfZmxhZyA9PSAwKSAmJgotCQkJKG5kbHAtPm5scF9zdGF0ZSA9PSAwKSkKLQkJCWxwZmNfbmxwX3B1dChuZGxwKTsKIAl9CiAKIAkvKiBBdCB0aGlzIHBvaW50LCBBTEwgbmRscCdzIHNob3VsZCBiZSBnb25lCkBAIC0xNDgyLDcgKzE2NDgsNyBAQAogCQkJCQkJJnZwb3J0LT5mY19ub2RlcywgbmxwX2xpc3RwKSB7CiAJCQkJbHBmY19wcmludGZfdmxvZyhuZGxwLT52cG9ydCwgS0VSTl9FUlIsCiAJCQkJCQlMT0dfTk9ERSwKLQkJCQkJCSIwMjgyOiBkaWQ6eCV4IG5kbHA6eCVwICIKKwkJCQkJCSIwMjgyIGRpZDp4JXggbmRscDp4JXAgIgogCQkJCQkJInVzZ21hcDp4JXggcmVmY250OiVkXG4iLAogCQkJCQkJbmRscC0+bmxwX0RJRCwgKHZvaWQgKiluZGxwLAogCQkJCQkJbmRscC0+bmxwX3VzZ19tYXAsCkBAIC0xNDk4LDYgKzE2NjQsMTQgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19zdG9wX3Zwb3J0X3RpbWVyczogU3RvcCBhbGwgdGhlIHRpbWVycyBhc3NvY2lhdGVkIHdpdGggYSB2cG9ydC4KKyAqIEB2cG9ydDogcG9pbnRlciB0byBhIHZpcnR1YWwgTl9Qb3J0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBzdG9wcyBhbGwgdGhlIHRpbWVycyBhc3NvY2lhdGVkIHdpdGggYSBAdnBvcnQuIFRoaXMgZnVuY3Rpb24KKyAqIGlzIGludm9rZWQgYmVmb3JlIGRpc2FibGluZyBvciBkZWxldGluZyBhIEB2cG9ydC4gTm90ZSB0aGF0IHRoZSBwaHlzaWNhbAorICogcG9ydCBpcyB0cmVhdGVkIGFzIEB2cG9ydCAwLgorICoqLwogdm9pZAogbHBmY19zdG9wX3Zwb3J0X3RpbWVycyhzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0xNTA3LDYgKzE2ODEsMTMgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19zdG9wX3BoYmFfdGltZXJzOiBTdG9wIGFsbCB0aGUgdGltZXJzIGFzc29jaWF0ZWQgd2l0aCBhbiBIQkEuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgc3RvcHMgYWxsIHRoZSB0aW1lcnMgYXNzb2NpYXRlZCB3aXRoIGEgSEJBLiBUaGlzIGZ1bmN0aW9uIGlzCisgKiBpbnZva2VkIGJlZm9yZSBlaXRoZXIgcHV0dGluZyBhIEhCQSBvZmZsaW5lIG9yIHVubG9hZGluZyB0aGUgZHJpdmVyLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc3RvcF9waGJhX3RpbWVycyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0xNTE2LDkgKzE2OTcsMjAgQEAKIAlkZWxfdGltZXJfc3luYygmcGhiYS0+ZmFicmljX2Jsb2NrX3RpbWVyKTsKIAlwaGJhLT5oYl9vdXRzdGFuZGluZyA9IDA7CiAJZGVsX3RpbWVyX3N5bmMoJnBoYmEtPmhiX3Rtb2Z1bmMpOworCWRlbF90aW1lcl9zeW5jKCZwaGJhLT5lcmF0dF9wb2xsKTsKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19ibG9ja19tZ210X2lvOiBNYXJrIGEgSEJBJ3MgbWFuYWdlbWVudCBpbnRlcmZhY2UgYXMgYmxvY2tlZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBtYXJrcyBhIEhCQSdzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGFzIGJsb2NrZWQuIE9uY2UgdGhlIEhCQSdzCisgKiBtYW5hZ2VtZW50IGludGVyZmFjZSBpcyBtYXJrZWQgYXMgYmxvY2tlZCwgYWxsIHRoZSB1c2VyIHNwYWNlIGFjY2VzcyB0bworICogdGhlIEhCQSwgd2hldGhlciB0aGV5IGFyZSBmcm9tIHN5c2ZzIGludGVyZmFjZSBvciBsaWJkZmMgaW50ZXJmYWNlIHdpbGwKKyAqIGFsbCBiZSBibG9ja2VkLiBUaGUgSEJBIGlzIHNldCB0byBibG9jayB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2Ugd2hlbiB0aGUKKyAqIGRyaXZlciBwcmVwYXJlcyB0aGUgSEJBIGludGVyZmFjZSBmb3Igb25saW5lIG9yIG9mZmxpbmUuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19ibG9ja19tZ210X2lvKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEpCiB7CkBAIC0xNTI5LDYgKzE3MjEsMTggQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5oYmFsb2NrLCBpZmxhZyk7CiB9CiAKKy8qKgorICogbHBmY19vbmxpbmU6IEluaXRpYWxpemUgYW5kIGJyaW5nIGEgSEJBIG9ubGluZS4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpbml0aWFsaXplcyB0aGUgSEJBIGFuZCBicmluZ3MgYSBIQkEgb25saW5lLiBEdXJpbmcgdGhpcworICogcHJvY2VzcywgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGlzIGJsb2NrZWQgdG8gcHJldmVudCB1c2VyIHNwYWNlIGFjY2VzcworICogdG8gdGhlIEhCQSBpbnRlcmZlcmluZyB3aXRoIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgIDAgLSBzdWNjZXNzZnVsCisgKiAgIDEgLSBmYWlsZWQKKyAqKi8KIGludAogbHBmY19vbmxpbmUoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMTU3NCw2ICsxNzc4LDE3IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY191bmJsb2NrX21nbXRfaW86IE1hcmsgYSBIQkEncyBtYW5hZ2VtZW50IGludGVyZmFjZSB0byBiZSBub3QgYmxvY2tlZC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBtYXJrcyBhIEhCQSdzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGFzIG5vdCBibG9ja2VkLiBPbmNlIHRoZQorICogSEJBJ3MgbWFuYWdlbWVudCBpbnRlcmZhY2UgaXMgbWFya2VkIGFzIG5vdCBibG9ja2VkLCBhbGwgdGhlIHVzZXIgc3BhY2UKKyAqIGFjY2VzcyB0byB0aGUgSEJBLCB3aGV0aGVyIHRoZXkgYXJlIGZyb20gc3lzZnMgaW50ZXJmYWNlIG9yIGxpYmRmYworICogaW50ZXJmYWNlIHdpbGwgYmUgYWxsb3dlZC4gVGhlIEhCQSBpcyBzZXQgdG8gYmxvY2sgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlCisgKiB3aGVuIHRoZSBkcml2ZXIgcHJlcGFyZXMgdGhlIEhCQSBpbnRlcmZhY2UgZm9yIG9ubGluZSBvciBvZmZsaW5lIGFuZCB0aGVuCisgKiBzZXQgdG8gdW5ibG9jayB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UgYWZ0ZXJ3YXJkcy4KKyAqKi8KIHZvaWQKIGxwZmNfdW5ibG9ja19tZ210X2lvKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEpCiB7CkBAIC0xNTg0LDYgKzE3OTksMTQgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5oYmFsb2NrLCBpZmxhZyk7CiB9CiAKKy8qKgorICogbHBmY19vZmZsaW5lX3ByZXA6IFByZXBhcmUgYSBIQkEgdG8gYmUgYnJvdWdodCBvZmZsaW5lLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGludm9rZWQgdG8gcHJlcGFyZSBhIEhCQSB0byBiZSBicm91Z2h0IG9mZmxpbmUuIEl0IHBlcmZvcm1zCisgKiB1bnJlZ2lzdHJhdGlvbiBsb2dpbiB0byBhbGwgdGhlIG5vZGVzIG9uIGFsbCB2cG9ydHMgYW5kIGZsdXNoZXMgdGhlIG1haWxib3gKKyAqIHF1ZXVlIHRvIG1ha2UgaXQgcmVhZHkgdG8gYmUgYnJvdWdodCBvZmZsaW5lLgorICoqLwogdm9pZAogbHBmY19vZmZsaW5lX3ByZXAoc3RydWN0IGxwZmNfaGJhICogcGhiYSkKIHsKQEAgLTE2MzMsNiArMTg1NiwxNCBAQAogCWxwZmNfc2xpX2ZsdXNoX21ib3hfcXVldWUocGhiYSk7CiB9CiAKKy8qKgorICogbHBmY19vZmZsaW5lOiBCcmluZyBhIEhCQSBvZmZsaW5lLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGFjdHVhbGx5IGJyaW5ncyBhIEhCQSBvZmZsaW5lLiBJdCBzdG9wcyBhbGwgdGhlIHRpbWVycworICogYXNzb2NpYXRlZCB3aXRoIHRoZSBIQkEsIGJyaW5ncyBkb3duIHRoZSBTTEkgbGF5ZXIsIGFuZCBldmVudHVhbGx5CisgKiBtYXJrcyB0aGUgSEJBIGFzIGluIG9mZmxpbmUgc3RhdGUgZm9yIHRoZSB1cHBlciBsYXllciBwcm90b2NvbC4KKyAqKi8KIHZvaWQKIGxwZmNfb2ZmbGluZShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0xNjcwLDEyICsxOTAxLDE3IEBACiAJbHBmY19kZXN0cm95X3Zwb3J0X3dvcmtfYXJyYXkocGhiYSwgdnBvcnRzKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBGdW5jdGlvbiBuYW1lOiBscGZjX3Njc2lfZnJlZQotKgotKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGZyb20gbHBmY19wY2lfcmVtb3ZlX29uZSBmcmVlIGludGVybmFsIGRyaXZlciByZXNvdXJjZXMKLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19zY3NpX2ZyZWU6IEZyZWUgYWxsIHRoZSBTQ1NJIGJ1ZmZlcnMgYW5kIElPQ0JzIGZyb20gZHJpdmVyIGxpc3RzLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRvIGZyZWUgYWxsIHRoZSBTQ1NJIGJ1ZmZlcnMgYW5kIElPQ0JzIGZyb20gdGhlIGRyaXZlcgorICogbGlzdCBiYWNrIHRvIGtlcm5lbC4gSXQgaXMgY2FsbGVkIGZyb20gbHBmY19wY2lfcmVtb3ZlX29uZSB0byBmcmVlCisgKiB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGJlZm9yZSB0aGUgZGV2aWNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAwIC0gc3VjY2Vzc2Z1bCAoZm9yIG5vdywgaXQgYWx3YXlzIHJldHVybnMgMCkKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfc2NzaV9mcmVlKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTE3MDQsNiArMTk0MCwyMiBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfY3JlYXRlX3BvcnQ6IENyZWF0ZSBhbiBGQyBwb3J0LgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAaW5zdGFuY2U6IGEgdW5pcXVlIGludGVnZXIgSUQgdG8gdGhpcyBGQyBwb3J0LgorICogQGRldjogcG9pbnRlciB0byB0aGUgZGV2aWNlIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBjcmVhdGVzIGEgRkMgcG9ydCBmb3IgdGhlIHVwcGVyIGxheWVyIHByb3RvY29sLiBUaGUgRkMgcG9ydAorICogY2FuIGJlIGNyZWF0ZWQgb24gdG9wIG9mIGVpdGhlciBhIHBoeXNpY2FsIHBvcnQgb3IgYSB2aXJ0dWFsIHBvcnQgcHJvdmlkZWQKKyAqIGJ5IHRoZSBIQkEuIFRoaXMgcm91dGluZSBhbHNvIGFsbG9jYXRlcyBhIFNDU0kgaG9zdCBkYXRhIHN0cnVjdHVyZSAoc2hvc3QpCisgKiBhbmQgYXNzb2NpYXRlcyB0aGUgRkMgcG9ydCBjcmVhdGVkIGJlZm9yZSBhZGRpbmcgdGhlIHNob3N0IGludG8gdGhlIFNDU0kKKyAqIGxheWVyLgorICoKKyAqIFJldHVybiBjb2RlcworICogICBAdnBvcnQgLSBwb2ludGVyIHRvIHRoZSB2aXJ0dWFsIE5fUG9ydCBkYXRhIHN0cnVjdHVyZS4KKyAqICAgTlVMTCAtIHBvcnQgY3JlYXRlIGZhaWxlZC4KKyAqKi8KIHN0cnVjdCBscGZjX3Zwb3J0ICoKIGxwZmNfY3JlYXRlX3BvcnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBpbnQgaW5zdGFuY2UsIHN0cnVjdCBkZXZpY2UgKmRldikKIHsKQEAgLTE3NzcsNiArMjAyOSwxMyBAQAogCXJldHVybiBOVUxMOwogfQogCisvKioKKyAqIGRlc3Ryb3lfcG9ydDogRGVzdHJveSBhbiBGQyBwb3J0LgorICogQHZwb3J0OiBwb2ludGVyIHRvIGFuIGxwZmMgdmlydHVhbCBOX1BvcnQgZGF0YSBzdHJ1Y3R1cmUuCisgKgorICogVGhpcyByb3V0aW5lIGRlc3Ryb3lzIGEgRkMgcG9ydCBmcm9tIHRoZSB1cHBlciBsYXllciBwcm90b2NvbC4gQWxsIHRoZQorICogcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9ydCBhcmUgcmVsZWFzZWQuCisgKiovCiB2b2lkCiBkZXN0cm95X3BvcnQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQogewpAQCAtMTc5Nyw2ICsyMDU2LDE2IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfZ2V0X2luc3RhbmNlOiBHZXQgYSB1bmlxdWUgaW50ZWdlciBJRC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgYWxsb2NhdGVzIGEgdW5pcXVlIGludGVnZXIgSUQgZnJvbSBscGZjX2hiYV9pbmRleCBwb29sLiBJdAorICogdXNlcyB0aGUga2VybmVsIGlkciBmYWNpbGl0eSB0byBwZXJmb3JtIHRoZSB0YXNrLgorICoKKyAqIFJldHVybiBjb2RlczoKKyAqICAgaW5zdGFuY2UgLSBhIHVuaXF1ZSBpbnRlZ2VyIElEIGFsbG9jYXRlZCBhcyB0aGUgbmV3IGluc3RhbmNlLgorICogICAtMSAtIGxwZmMgZ2V0IGluc3RhbmNlIGZhaWxlZC4KKyAqKi8KIGludAogbHBmY19nZXRfaW5zdGFuY2Uodm9pZCkKIHsKQEAgLTE4MTAsMTEgKzIwNzksMjEgQEAKIAlyZXR1cm4gaW5zdGFuY2U7CiB9CiAKLS8qCi0gKiBOb3RlOiB0aGVyZSBpcyBubyBzY2FuX3N0YXJ0IGZ1bmN0aW9uIGFzIGFkYXB0ZXIgaW5pdGlhbGl6YXRpb24KLSAqIHdpbGwgaGF2ZSBhc3luY2hyb25vdXNseSBraWNrZWQgb2ZmIHRoZSBsaW5rIGluaXRpYWxpemF0aW9uLgotICovCi0KKy8qKgorICogbHBmY19zY2FuX2ZpbmlzaGVkOiBtZXRob2QgZm9yIFNDU0kgbGF5ZXIgdG8gZGV0ZWN0IHdoZXRoZXIgc2NhbiBpcyBkb25lLgorICogQHNob3N0OiBwb2ludGVyIHRvIFNDU0kgaG9zdCBkYXRhIHN0cnVjdHVyZS4KKyAqIEB0aW1lOiBlbGFwc2VkIHRpbWUgb2YgdGhlIHNjYW4gaW4gamlmZmllcy4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIGJ5IHRoZSBTQ1NJIGxheWVyIHdpdGggYSBTQ1NJIGhvc3QgdG8gZGV0ZXJtaW5lCisgKiB3aGV0aGVyIHRoZSBzY2FuIGhvc3QgaXMgZmluaXNoZWQuCisgKgorICogTm90ZTogdGhlcmUgaXMgbm8gc2Nhbl9zdGFydCBmdW5jdGlvbiBhcyBhZGFwdGVyIGluaXRpYWxpemF0aW9uIHdpbGwgaGF2ZQorICogYXN5bmNocm9ub3VzbHkga2lja2VkIG9mZiB0aGUgbGluayBpbml0aWFsaXphdGlvbi4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgMCAtIFNDU0kgaG9zdCBzY2FuIGlzIG5vdCBvdmVyIHlldC4KKyAqICAgMSAtIFNDU0kgaG9zdCBzY2FuIGlzIG92ZXIuCisgKiovCiBpbnQgbHBmY19zY2FuX2ZpbmlzaGVkKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCB1bnNpZ25lZCBsb25nIHRpbWUpCiB7CiAJc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0ID0gKHN0cnVjdCBscGZjX3Zwb3J0ICopIHNob3N0LT5ob3N0ZGF0YTsKQEAgLTE4NTgsNiArMjEzNywxMyBAQAogCXJldHVybiBzdGF0OwogfQogCisvKioKKyAqIGxwZmNfaG9zdF9hdHRyaWJfaW5pdDogSW5pdGlhbGl6ZSBTQ1NJIGhvc3QgYXR0cmlidXRlcyBvbiBhIEZDIHBvcnQuCisgKiBAc2hvc3Q6IHBvaW50ZXIgdG8gU0NTSSBob3N0IGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpbml0aWFsaXplcyBhIGdpdmVuIFNDU0kgaG9zdCBhdHRyaWJ1dGVzIG9uIGEgRkMgcG9ydC4gVGhlCisgKiBTQ1NJIGhvc3QgY2FuIGJlIGVpdGhlciBvbiB0b3Agb2YgYSBwaHlzaWNhbCBwb3J0IG9yIGEgdmlydHVhbCBwb3J0LgorICoqLwogdm9pZCBscGZjX2hvc3RfYXR0cmliX2luaXQoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpCiB7CiAJc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0ID0gKHN0cnVjdCBscGZjX3Zwb3J0ICopIHNob3N0LT5ob3N0ZGF0YTsKQEAgLTE5MDYsNDIgKzIxOTIsMTU3IEBACiAJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwogfQogCisvKioKKyAqIGxwZmNfZW5hYmxlX21zaXg6IEVuYWJsZSBNU0ktWCBpbnRlcnJ1cHQgbW9kZS4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyBpbnZva2VkIHRvIGVuYWJsZSB0aGUgTVNJLVggaW50ZXJydXB0IHZlY3RvcnMuIFRoZSBrZXJuZWwKKyAqIGZ1bmN0aW9uIHBjaV9lbmFibGVfbXNpeCgpIGlzIGNhbGxlZCB0byBlbmFibGUgdGhlIE1TSS1YIHZlY3RvcnMuIE5vdGUgdGhhdAorICogcGNpX2VuYWJsZV9tc2l4KCksIG9uY2UgaW52b2tlZCwgZW5hYmxlcyBlaXRoZXIgYWxsIG9yIG5vdGhpbmcsIGRlcGVuZGluZworICogb24gdGhlIGN1cnJlbnQgYXZhaWxhYmlsaXR5IG9mIFBDSSB2ZWN0b3IgcmVzb3VyY2VzLiBUaGUgZGV2aWNlIGRyaXZlciBpcworICogcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgdGhlIGluZGl2aWR1YWwgcmVxdWVzdF9pcnEoKSB0byByZWdpc3RlciBlYWNoIE1TSS1YCisgKiB2ZWN0b3Igd2l0aCBhIGludGVycnVwdCBoYW5kbGVyLCB3aGljaCBpcyBkb25lIGluIHRoaXMgZnVuY3Rpb24uIE5vdGUgdGhhdAorICogbGF0ZXIgd2hlbiBkZXZpY2UgaXMgdW5sb2FkaW5nLCB0aGUgZHJpdmVyIHNob3VsZCBhbHdheXMgY2FsbCBmcmVlX2lycSgpCisgKiBvbiBhbGwgTVNJLVggdmVjdG9ycyBpdCBoYXMgZG9uZSByZXF1ZXN0X2lycSgpIG9uIGJlZm9yZSBjYWxsaW5nCisgKiBwY2lfZGlzYWJsZV9tc2l4KCkuIEZhaWx1cmUgdG8gZG8gc28gcmVzdWx0cyBpbiBhIEJVR19PTigpIGFuZCBhIGRldmljZQorICogd2lsbCBiZSBsZWZ0IHdpdGggTVNJLVggZW5hYmxlZCBhbmQgbGVha3MgaXRzIHZlY3RvcnMuCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgIDAgLSBzdWNlc3NmdWwKKyAqICAgb3RoZXIgdmFsdWVzIC0gZXJyb3IKKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZW5hYmxlX21zaXgoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewotCWludCBlcnJvcjsKKwlpbnQgcmMsIGk7CisJTFBGQ19NQk9YUV90ICpwbWI7CiAKLQlwaGJhLT5tc2l4X2VudHJpZXNbMF0uZW50cnkgPSAwOwotCXBoYmEtPm1zaXhfZW50cmllc1swXS52ZWN0b3IgPSAwOworCS8qIFNldCB1cCBNU0ktWCBtdWx0aS1tZXNzYWdlIHZlY3RvcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTFBGQ19NU0lYX1ZFQ1RPUlM7IGkrKykKKwkJcGhiYS0+bXNpeF9lbnRyaWVzW2ldLmVudHJ5ID0gaTsKIAotCWVycm9yID0gcGNpX2VuYWJsZV9tc2l4KHBoYmEtPnBjaWRldiwgcGhiYS0+bXNpeF9lbnRyaWVzLAorCS8qIENvbmZpZ3VyZSBNU0ktWCBjYXBhYmlsaXR5IHN0cnVjdHVyZSAqLworCXJjID0gcGNpX2VuYWJsZV9tc2l4KHBoYmEtPnBjaWRldiwgcGhiYS0+bXNpeF9lbnRyaWVzLAogCQkJCUFSUkFZX1NJWkUocGhiYS0+bXNpeF9lbnRyaWVzKSk7Ci0JaWYgKGVycm9yKSB7CisJaWYgKHJjKSB7CiAJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAogCQkJCSIwNDIwIEVuYWJsZSBNU0ktWCBmYWlsZWQgKCVkKSwgY29udGludWluZyAiCi0JCQkJIndpdGggTVNJXG4iLCBlcnJvcik7Ci0JCXBjaV9kaXNhYmxlX21zaXgocGhiYS0+cGNpZGV2KTsKLQkJcmV0dXJuIGVycm9yOworCQkJCSJ3aXRoIE1TSVxuIiwgcmMpOworCQlnb3RvIG1zaV9mYWlsX291dDsKKwl9IGVsc2UKKwkJZm9yIChpID0gMDsgaSA8IExQRkNfTVNJWF9WRUNUT1JTOyBpKyspCisJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfSU5JVCwKKwkJCQkJIjA0NzcgTVNJLVggZW50cnlbJWRdOiB2ZWN0b3I9eCV4ICIKKwkJCQkJIm1lc3NhZ2U9JWRcbiIsIGksCisJCQkJCXBoYmEtPm1zaXhfZW50cmllc1tpXS52ZWN0b3IsCisJCQkJCXBoYmEtPm1zaXhfZW50cmllc1tpXS5lbnRyeSk7CisJLyoKKwkgKiBBc3NpZ24gTVNJLVggdmVjdG9ycyB0byBpbnRlcnJ1cHQgaGFuZGxlcnMKKwkgKi8KKworCS8qIHZlY3Rvci0wIGlzIGFzc29jaWF0ZWQgdG8gc2xvdy1wYXRoIGhhbmRsZXIgKi8KKwlyYyA9IHJlcXVlc3RfaXJxKHBoYmEtPm1zaXhfZW50cmllc1swXS52ZWN0b3IsICZscGZjX3NwX2ludHJfaGFuZGxlciwKKwkJCSBJUlFGX1NIQVJFRCwgTFBGQ19TUF9EUklWRVJfSEFORExFUl9OQU1FLCBwaGJhKTsKKwlpZiAocmMpIHsKKwkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfSU5JVCwKKwkJCQkiMDQyMSBNU0ktWCBzbG93LXBhdGggcmVxdWVzdF9pcnEgZmFpbGVkICIKKwkJCQkiKCVkKSwgY29udGludWluZyB3aXRoIE1TSVxuIiwgcmMpOworCQlnb3RvIG1zaV9mYWlsX291dDsKIAl9CiAKLQllcnJvciA9CXJlcXVlc3RfaXJxKHBoYmEtPm1zaXhfZW50cmllc1swXS52ZWN0b3IsIGxwZmNfaW50cl9oYW5kbGVyLCAwLAotCQkJICAgIExQRkNfRFJJVkVSX05BTUUsIHBoYmEpOwotCWlmIChlcnJvcikgeworCS8qIHZlY3Rvci0xIGlzIGFzc29jaWF0ZWQgdG8gZmFzdC1wYXRoIGhhbmRsZXIgKi8KKwlyYyA9IHJlcXVlc3RfaXJxKHBoYmEtPm1zaXhfZW50cmllc1sxXS52ZWN0b3IsICZscGZjX2ZwX2ludHJfaGFuZGxlciwKKwkJCSBJUlFGX1NIQVJFRCwgTFBGQ19GUF9EUklWRVJfSEFORExFUl9OQU1FLCBwaGJhKTsKKworCWlmIChyYykgewogCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCSIwNDIxIE1TSS1YIHJlcXVlc3RfaXJxIGZhaWxlZCAoJWQpLCAiCi0JCQkJImNvbnRpbnVpbmcgd2l0aCBNU0lcbiIsIGVycm9yKTsKLQkJcGNpX2Rpc2FibGVfbXNpeChwaGJhLT5wY2lkZXYpOworCQkJCSIwNDI5IE1TSS1YIGZhc3QtcGF0aCByZXF1ZXN0X2lycSBmYWlsZWQgIgorCQkJCSIoJWQpLCBjb250aW51aW5nIHdpdGggTVNJXG4iLCByYyk7CisJCWdvdG8gaXJxX2ZhaWxfb3V0OwogCX0KLQlyZXR1cm4gZXJyb3I7CisKKwkvKgorCSAqIENvbmZpZ3VyZSBIQkEgTVNJLVggYXR0ZW50aW9uIGNvbmRpdGlvbnMgdG8gbWVzc2FnZXMKKwkgKi8KKwlwbWIgPSAoTFBGQ19NQk9YUV90ICopIG1lbXBvb2xfYWxsb2MocGhiYS0+bWJveF9tZW1fcG9vbCwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXBtYikgeworCQlyYyA9IC1FTk9NRU07CisJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0lOSVQsCisJCQkJIjA0NzQgVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaXNzdWluZyAiCisJCQkJIk1CT1hfQ09ORklHX01TSSBjb21tYW5kXG4iKTsKKwkJZ290byBtZW1fZmFpbF9vdXQ7CisJfQorCXJjID0gbHBmY19jb25maWdfbXNpKHBoYmEsIHBtYik7CisJaWYgKHJjKQorCQlnb3RvIG1ieF9mYWlsX291dDsKKwlyYyA9IGxwZmNfc2xpX2lzc3VlX21ib3gocGhiYSwgcG1iLCBNQlhfUE9MTCk7CisJaWYgKHJjICE9IE1CWF9TVUNDRVNTKSB7CisJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX01CT1gsCisJCQkJIjAzNTEgQ29uZmlnIE1TSSBtYWlsYm94IGNvbW1hbmQgZmFpbGVkLCAiCisJCQkJIm1ieENtZCB4JXgsIG1ieFN0YXR1cyB4JXhcbiIsCisJCQkJcG1iLT5tYi5tYnhDb21tYW5kLCBwbWItPm1iLm1ieFN0YXR1cyk7CisJCWdvdG8gbWJ4X2ZhaWxfb3V0OworCX0KKworCS8qIEZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgbWFpbGJveCBjb21tYW5kICovCisJbWVtcG9vbF9mcmVlKHBtYiwgcGhiYS0+bWJveF9tZW1fcG9vbCk7CisJcmV0dXJuIHJjOworCittYnhfZmFpbF9vdXQ6CisJLyogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBtYWlsYm94IGNvbW1hbmQgKi8KKwltZW1wb29sX2ZyZWUocG1iLCBwaGJhLT5tYm94X21lbV9wb29sKTsKKworbWVtX2ZhaWxfb3V0OgorCS8qIGZyZWUgdGhlIGlycSBhbHJlYWR5IHJlcXVlc3RlZCAqLworCWZyZWVfaXJxKHBoYmEtPm1zaXhfZW50cmllc1sxXS52ZWN0b3IsIHBoYmEpOworCitpcnFfZmFpbF9vdXQ6CisJLyogZnJlZSB0aGUgaXJxIGFscmVhZHkgcmVxdWVzdGVkICovCisJZnJlZV9pcnEocGhiYS0+bXNpeF9lbnRyaWVzWzBdLnZlY3RvciwgcGhiYSk7CisKK21zaV9mYWlsX291dDoKKwkvKiBVbmNvbmZpZ3VyZSBNU0ktWCBjYXBhYmlsaXR5IHN0cnVjdHVyZSAqLworCXBjaV9kaXNhYmxlX21zaXgocGhiYS0+cGNpZGV2KTsKKwlyZXR1cm4gcmM7CiB9CiAKKy8qKgorICogbHBmY19kaXNhYmxlX21zaXg6IERpc2FibGUgTVNJLVggaW50ZXJydXB0IG1vZGUuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCB0byByZWxlYXNlIHRoZSBNU0ktWCB2ZWN0b3JzIGFuZCB0aGVuIGRpc2FibGUgdGhlCisgKiBNU0ktWCBpbnRlcnJ1cHQgbW9kZS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2Rpc2FibGVfbXNpeChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7Ci0JZnJlZV9pcnEocGhiYS0+bXNpeF9lbnRyaWVzWzBdLnZlY3RvciwgcGhiYSk7CisJaW50IGk7CisKKwkvKiBGcmVlIHVwIE1TSS1YIG11bHRpLW1lc3NhZ2UgdmVjdG9ycyAqLworCWZvciAoaSA9IDA7IGkgPCBMUEZDX01TSVhfVkVDVE9SUzsgaSsrKQorCQlmcmVlX2lycShwaGJhLT5tc2l4X2VudHJpZXNbaV0udmVjdG9yLCBwaGJhKTsKKwkvKiBEaXNhYmxlIE1TSS1YICovCiAJcGNpX2Rpc2FibGVfbXNpeChwaGJhLT5wY2lkZXYpOwogfQogCisvKioKKyAqIGxwZmNfcGNpX3Byb2JlX29uZTogbHBmYyBQQ0kgcHJvYmUgZnVuYyB0byByZWdpc3RlciBkZXZpY2UgdG8gUENJIHN1YnN5c3RlbS4KKyAqIEBwZGV2OiBwb2ludGVyIHRvIFBDSSBkZXZpY2UKKyAqIEBwaWQ6IHBvaW50ZXIgdG8gUENJIGRldmljZSBpZGVudGlmaWVyCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRvIGJlIHJlZ2lzdGVyZWQgdG8gdGhlIGtlcm5lbCdzIFBDSSBzdWJzeXN0ZW0uIFdoZW4gYW4KKyAqIEVtdWxleCBIQkEgaXMgcHJlc2VudGVkIGluIFBDSSBidXMsIHRoZSBrZXJuZWwgUENJIHN1YnN5c3RlbSBsb29rcyBhdAorICogUENJIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBvZiB0aGUgZGV2aWNlIGFuZCBkcml2ZXIgdG8gc2VlIGlmIHRoZQorICogZHJpdmVyIHN0YXRlIHRoYXQgaXQgY2FuIHN1cHBvcnQgdGhpcyBraW5kIG9mIGRldmljZS4gSWYgdGhlIG1hdGNoIGlzCisgKiBzdWNjZXNzZnVsLCB0aGUgZHJpdmVyIGNvcmUgaW52b2tlcyB0aGlzIHJvdXRpbmUuIElmIHRoaXMgcm91dGluZQorICogZGV0ZXJtaW5lcyBpdCBjYW4gY2xhaW0gdGhlIEhCQSwgaXQgZG9lcyBhbGwgdGhlIGluaXRpYWxpemF0aW9uIHRoYXQgaXQKKyAqIG5lZWRzIHRvIGRvIHRvIGhhbmRsZSB0aGUgSEJBIHByb3Blcmx5LgorICoKKyAqIFJldHVybiBjb2RlCisgKiAgIDAgLSBkcml2ZXIgY2FuIGNsYWltIHRoZSBkZXZpY2UKKyAqICAgbmVnYXRpdmUgdmFsdWUgLSBkcml2ZXIgY2FuIG5vdCBjbGFpbSB0aGUgZGV2aWNlCisgKiovCiBzdGF0aWMgaW50IF9fZGV2aW5pdAogbHBmY19wY2lfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlkKQogewpAQCAtMTk1Niw2ICsyMzU3LDcgQEAKIAlpbnQgIGksIGhicV9jb3VudDsKIAl1aW50MTZfdCBpb3RhZzsKIAlpbnQgYmFycyA9IHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSk7CisJc3RydWN0IGxwZmNfYWRhcHRlcl9ldmVudF9oZWFkZXIgYWRhcHRlcl9ldmVudDsKIAogCWlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpCiAJCWdvdG8gb3V0OwpAQCAtMTk2Niw2ICsyMzY4LDcgQEAKIAlpZiAoIXBoYmEpCiAJCWdvdG8gb3V0X3JlbGVhc2VfcmVnaW9uczsKIAorCWF0b21pY19zZXQoJnBoYmEtPmZhc3RfZXZlbnRfY291bnQsIDApOwogCXNwaW5fbG9ja19pbml0KCZwaGJhLT5oYmFsb2NrKTsKIAogCS8qIEluaXRpYWxpemUgbmRscCBtYW5hZ2VtZW50IHNwaW5sb2NrICovCkBAIC0xOTc4LDYgKzIzODEsNyBAQAogCQlnb3RvIG91dF9mcmVlX3BoYmE7CiAKIAlJTklUX0xJU1RfSEVBRCgmcGhiYS0+cG9ydF9saXN0KTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZwaGJhLT53YWl0XzRfbWxvX21fcSk7CiAJLyoKIAkgKiBHZXQgYWxsIHRoZSBtb2R1bGUgcGFyYW1zIGZvciBjb25maWd1cmluZyB0aGlzIGhvc3QgYW5kIHRoZW4KIAkgKiBlc3RhYmxpc2ggdGhlIGhvc3QuCkBAIC0yMDAwLDYgKzI0MDQsOSBAQAogCWluaXRfdGltZXIoJnBoYmEtPmZhYnJpY19ibG9ja190aW1lcik7CiAJcGhiYS0+ZmFicmljX2Jsb2NrX3RpbWVyLmZ1bmN0aW9uID0gbHBmY19mYWJyaWNfYmxvY2tfdGltZW91dDsKIAlwaGJhLT5mYWJyaWNfYmxvY2tfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBwaGJhOworCWluaXRfdGltZXIoJnBoYmEtPmVyYXR0X3BvbGwpOworCXBoYmEtPmVyYXR0X3BvbGwuZnVuY3Rpb24gPSBscGZjX3BvbGxfZXJhdHQ7CisJcGhiYS0+ZXJhdHRfcG9sbC5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIHBoYmE7CiAKIAlwY2lfc2V0X21hc3RlcihwZGV2KTsKIAlwY2lfdHJ5X3NldF9td2kocGRldik7CkBAIC0yMDE5LDcgKzI0MjYsNyBAQAogCWJhcjJtYXBfbGVuICAgICAgICA9IHBjaV9yZXNvdXJjZV9sZW4ocGhiYS0+cGNpZGV2LCAyKTsKIAogCS8qIE1hcCBIQkEgU0xJTSB0byBhIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3MuICovCi0JcGhiYS0+c2xpbV9tZW1tYXBfcCAgICAgID0gaW9yZW1hcChwaGJhLT5wY2lfYmFyMF9tYXAsIGJhcjBtYXBfbGVuKTsKKwlwaGJhLT5zbGltX21lbW1hcF9wID0gaW9yZW1hcChwaGJhLT5wY2lfYmFyMF9tYXAsIGJhcjBtYXBfbGVuKTsKIAlpZiAoIXBoYmEtPnNsaW1fbWVtbWFwX3ApIHsKIAkJZXJyb3IgPSAtRU5PREVWOwogCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmcGRldi0+ZGV2LApAQCAtMjAzNywxMiArMjQ0NCwxOCBAQAogCX0KIAogCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgU0xJLTIgc3RydWN0dXJlcyAqLwotCXBoYmEtPnNsaW0ycCA9IGRtYV9hbGxvY19jb2hlcmVudCgmcGhiYS0+cGNpZGV2LT5kZXYsIFNMSTJfU0xJTV9TSVpFLAotCQkJCQkgICZwaGJhLT5zbGltMnBfbWFwcGluZywgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwaGJhLT5zbGltMnApCisJcGhiYS0+c2xpbTJwLnZpcnQgPSBkbWFfYWxsb2NfY29oZXJlbnQoJnBoYmEtPnBjaWRldi0+ZGV2LAorCQkJCQkgICAgICAgU0xJMl9TTElNX1NJWkUsCisJCQkJCSAgICAgICAmcGhiYS0+c2xpbTJwLnBoeXMsCisJCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXBoYmEtPnNsaW0ycC52aXJ0KQogCQlnb3RvIG91dF9pb3VubWFwOwogCi0JbWVtc2V0KHBoYmEtPnNsaW0ycCwgMCwgU0xJMl9TTElNX1NJWkUpOworCW1lbXNldChwaGJhLT5zbGltMnAudmlydCwgMCwgU0xJMl9TTElNX1NJWkUpOworCXBoYmEtPm1ib3ggPSBwaGJhLT5zbGltMnAudmlydCArIG9mZnNldG9mKHN0cnVjdCBscGZjX3NsaTJfc2xpbSwgbWJ4KTsKKwlwaGJhLT5wY2IgPSAocGhiYS0+c2xpbTJwLnZpcnQgKyBvZmZzZXRvZihzdHJ1Y3QgbHBmY19zbGkyX3NsaW0sIHBjYikpOworCXBoYmEtPklPQ0JzID0gKHBoYmEtPnNsaW0ycC52aXJ0ICsKKwkJICAgICAgIG9mZnNldG9mKHN0cnVjdCBscGZjX3NsaTJfc2xpbSwgSU9DQnMpKTsKIAogCXBoYmEtPmhicXNsaW1wLnZpcnQgPSBkbWFfYWxsb2NfY29oZXJlbnQoJnBoYmEtPnBjaWRldi0+ZGV2LAogCQkJCQkJIGxwZmNfc2xpX2hicV9zaXplKCksCkBAIC0yMTExLDcgKzI1MjQsNyBAQAogCXBoYmEtPmZjX2FyYnRvdiA9IEZGX0RFRl9BUkJUT1Y7CiAKIAlJTklUX0xJU1RfSEVBRCgmcGhiYS0+d29ya19saXN0KTsKLQlwaGJhLT53b3JrX2hhX21hc2sgPSAoSEFfRVJBVFR8SEFfTUJBVFR8SEFfTEFUVCk7CisJcGhiYS0+d29ya19oYV9tYXNrID0gKEhBX0VSQVRUIHwgSEFfTUJBVFQgfCBIQV9MQVRUKTsKIAlwaGJhLT53b3JrX2hhX21hc2sgfD0gKEhBX1JYTUFTSyA8PCAoTFBGQ19FTFNfUklORyAqIDQpKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHdhaXQgcXVldWUgaGVhZCBmb3IgdGhlIGtlcm5lbCB0aHJlYWQgKi8KQEAgLTIxNDYsMjEgKzI1NTksNDIgQEAKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgc2hvc3QpOwogCXBoYmEtPmludHJfdHlwZSA9IE5PTkU7CiAKKwlwaGJhLT5NQnNsaW1hZGRyID0gcGhiYS0+c2xpbV9tZW1tYXBfcDsKKwlwaGJhLT5IQXJlZ2FkZHIgPSBwaGJhLT5jdHJsX3JlZ3NfbWVtbWFwX3AgKyBIQV9SRUdfT0ZGU0VUOworCXBoYmEtPkNBcmVnYWRkciA9IHBoYmEtPmN0cmxfcmVnc19tZW1tYXBfcCArIENBX1JFR19PRkZTRVQ7CisJcGhiYS0+SFNyZWdhZGRyID0gcGhiYS0+Y3RybF9yZWdzX21lbW1hcF9wICsgSFNfUkVHX09GRlNFVDsKKwlwaGJhLT5IQ3JlZ2FkZHIgPSBwaGJhLT5jdHJsX3JlZ3NfbWVtbWFwX3AgKyBIQ19SRUdfT0ZGU0VUOworCisJLyogQ29uZmlndXJlIGFuZCBlbmFibGUgaW50ZXJydXB0ICovCiAJaWYgKHBoYmEtPmNmZ191c2VfbXNpID09IDIpIHsKLQkJZXJyb3IgPSBscGZjX2VuYWJsZV9tc2l4KHBoYmEpOwotCQlpZiAoIWVycm9yKQotCQkJcGhiYS0+aW50cl90eXBlID0gTVNJWDsKKwkJLyogTmVlZCB0byBpc3N1ZSBjb25mX3BvcnQgbWJveCBjbWQgYmVmb3JlIGNvbmZfbXNpIG1ib3ggY21kICovCisJCWVycm9yID0gbHBmY19zbGlfY29uZmlnX3BvcnQocGhiYSwgMyk7CisJCWlmIChlcnJvcikKKwkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAorCQkJCSIwNDI3IEZpcm13YXJlIG5vdCBjYXBhYmxlIG9mIFNMSSAzIG1vZGUuXG4iKTsKKwkJZWxzZSB7CisJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfSU5JVCwKKwkJCQkiMDQyNiBGaXJtd2FyZSBjYXBhYmxlIG9mIFNMSSAzIG1vZGUuXG4iKTsKKwkJCS8qIE5vdywgdHJ5IHRvIGVuYWJsZSBNU0ktWCBpbnRlcnJ1cHQgbW9kZSAqLworCQkJZXJyb3IgPSBscGZjX2VuYWJsZV9tc2l4KHBoYmEpOworCQkJaWYgKCFlcnJvcikgeworCQkJCXBoYmEtPmludHJfdHlwZSA9IE1TSVg7CisJCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fSU5GTywgTE9HX0lOSVQsCisJCQkJCQkiMDQzMCBlbmFibGUgTVNJLVggbW9kZS5cbiIpOworCQkJfQorCQl9CiAJfQogCiAJLyogRmFsbGJhY2sgdG8gTVNJIGlmIE1TSS1YIGluaXRpYWxpemF0aW9uIGZhaWxlZCAqLwogCWlmIChwaGJhLT5jZmdfdXNlX21zaSA+PSAxICYmIHBoYmEtPmludHJfdHlwZSA9PSBOT05FKSB7CiAJCXJldHZhbCA9IHBjaV9lbmFibGVfbXNpKHBoYmEtPnBjaWRldik7Ci0JCWlmICghcmV0dmFsKQorCQlpZiAoIXJldHZhbCkgewogCQkJcGhiYS0+aW50cl90eXBlID0gTVNJOwotCQllbHNlCiAJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfSU5JVCwKLQkJCQkJIjA0NTIgRW5hYmxlIE1TSSBmYWlsZWQsIGNvbnRpbnVpbmcgIgotCQkJCQkid2l0aCBJUlFcbiIpOworCQkJCQkiMDQ3MyBlbmFibGUgTVNJIG1vZGUuXG4iKTsKKwkJfSBlbHNlCisJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfSU5JVCwKKwkJCQkJIjA0NTIgZW5hYmxlIElSUSBtb2RlLlxuIik7CiAJfQogCiAJLyogTVNJLVggaXMgdGhlIG9ubHkgY2FzZSB0aGUgZG9lc24ndCBuZWVkIHRvIGNhbGwgcmVxdWVzdF9pcnEgKi8KQEAgLTIxNzYsMTggKzI2MTAsMTYgQEAKIAkJCXBoYmEtPmludHJfdHlwZSA9IElOVHg7CiAJfQogCi0JcGhiYS0+TUJzbGltYWRkciA9IHBoYmEtPnNsaW1fbWVtbWFwX3A7Ci0JcGhiYS0+SEFyZWdhZGRyID0gcGhiYS0+Y3RybF9yZWdzX21lbW1hcF9wICsgSEFfUkVHX09GRlNFVDsKLQlwaGJhLT5DQXJlZ2FkZHIgPSBwaGJhLT5jdHJsX3JlZ3NfbWVtbWFwX3AgKyBDQV9SRUdfT0ZGU0VUOwotCXBoYmEtPkhTcmVnYWRkciA9IHBoYmEtPmN0cmxfcmVnc19tZW1tYXBfcCArIEhTX1JFR19PRkZTRVQ7Ci0JcGhiYS0+SENyZWdhZGRyID0gcGhiYS0+Y3RybF9yZWdzX21lbW1hcF9wICsgSENfUkVHX09GRlNFVDsKLQogCWlmIChscGZjX2FsbG9jX3N5c2ZzX2F0dHIodnBvcnQpKSB7CisJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0lOSVQsCisJCQkJIjE0NzYgRmFpbGVkIHRvIGFsbG9jYXRlIHN5c2ZzIGF0dHJcbiIpOwogCQllcnJvciA9IC1FTk9NRU07CiAJCWdvdG8gb3V0X2ZyZWVfaXJxOwogCX0KIAogCWlmIChscGZjX3NsaV9oYmFfc2V0dXAocGhiYSkpIHsKKwkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfSU5JVCwKKwkJCQkiMTQ3NyBGYWlsZWQgdG8gc2V0IHVwIGhiYVxuIik7CiAJCWVycm9yID0gLUVOT0RFVjsKIAkJZ290byBvdXRfcmVtb3ZlX2RldmljZTsKIAl9CkBAIC0yMjA2LDYgKzI2MzgsMTYgQEAKIAkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwogCX0KIAorCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAorCQkJIjA0MjggUGVyZm9ybSBTQ1NJIHNjYW5cbiIpOworCS8qIFNlbmQgYm9hcmQgYXJyaXZhbCBldmVudCB0byB1cHBlciBsYXllciAqLworCWFkYXB0ZXJfZXZlbnQuZXZlbnRfdHlwZSA9IEZDX1JFR19BREFQVEVSX0VWRU5UOworCWFkYXB0ZXJfZXZlbnQuc3ViY2F0ZWdvcnkgPSBMUEZDX0VWRU5UX0FSUklWQUw7CisJZmNfaG9zdF9wb3N0X3ZlbmRvcl9ldmVudChzaG9zdCwgZmNfZ2V0X2V2ZW50X251bWJlcigpLAorCQlzaXplb2YoYWRhcHRlcl9ldmVudCksCisJCShjaGFyICopICZhZGFwdGVyX2V2ZW50LAorCQlTQ1NJX05MX1ZJRF9UWVBFX1BDSSB8IFBDSV9WRU5ET1JfSURfRU1VTEVYKTsKKwogCXNjc2lfc2Nhbl9ob3N0KHNob3N0KTsKIAogCXJldHVybiAwOwpAQCAtMjIzOCwxMSArMjY4MCwxMSBAQAogCX0KIAlscGZjX21lbV9mcmVlKHBoYmEpOwogb3V0X2ZyZWVfaGJxc2xpbXA6Ci0JZG1hX2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwgbHBmY19zbGlfaGJxX3NpemUoKSwgcGhiYS0+aGJxc2xpbXAudmlydCwKLQkJCSAgcGhiYS0+aGJxc2xpbXAucGh5cyk7CisJZG1hX2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwgbHBmY19zbGlfaGJxX3NpemUoKSwKKwkJCSAgcGhiYS0+aGJxc2xpbXAudmlydCwgcGhiYS0+aGJxc2xpbXAucGh5cyk7CiBvdXRfZnJlZV9zbGltOgotCWRtYV9mcmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsIFNMSTJfU0xJTV9TSVpFLCBwaGJhLT5zbGltMnAsCi0JCQkJCQkJcGhiYS0+c2xpbTJwX21hcHBpbmcpOworCWRtYV9mcmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsIFNMSTJfU0xJTV9TSVpFLAorCQkJICBwaGJhLT5zbGltMnAudmlydCwgcGhiYS0+c2xpbTJwLnBoeXMpOwogb3V0X2lvdW5tYXA6CiAJaW91bm1hcChwaGJhLT5jdHJsX3JlZ3NfbWVtbWFwX3ApOwogb3V0X2lvdW5tYXBfc2xpbToKQEAgLTIyNjIsNiArMjcwNCwxNCBAQAogCXJldHVybiBlcnJvcjsKIH0KIAorLyoqCisgKiBscGZjX3BjaV9yZW1vdmVfb25lOiBscGZjIFBDSSBmdW5jIHRvIHVucmVnaXN0ZXIgZGV2aWNlIGZyb20gUENJIHN1YnN5c3RlbS4KKyAqIEBwZGV2OiBwb2ludGVyIHRvIFBDSSBkZXZpY2UKKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdG8gYmUgcmVnaXN0ZXJlZCB0byB0aGUga2VybmVsJ3MgUENJIHN1YnN5c3RlbS4gV2hlbiBhbgorICogRW11bGV4IEhCQSBpcyByZW1vdmVkIGZyb20gUENJIGJ1cy4gSXQgcGVyZm9ybSBhbGwgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwCisgKiBmb3IgdGhlIEhCQSBkZXZpY2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBQQ0kgc3Vic3lzdGVtIHByb3Blcmx5LgorICoqLwogc3RhdGljIHZvaWQgX19kZXZleGl0CiBscGZjX3BjaV9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewpAQCAtMjMxNiwxMiArMjc2NiwxMiBAQAogCWxwZmNfc2NzaV9mcmVlKHBoYmEpOwogCWxwZmNfbWVtX2ZyZWUocGhiYSk7CiAKLQlkbWFfZnJlZV9jb2hlcmVudCgmcGRldi0+ZGV2LCBscGZjX3NsaV9oYnFfc2l6ZSgpLCBwaGJhLT5oYnFzbGltcC52aXJ0LAotCQkJICBwaGJhLT5oYnFzbGltcC5waHlzKTsKKwlkbWFfZnJlZV9jb2hlcmVudCgmcGRldi0+ZGV2LCBscGZjX3NsaV9oYnFfc2l6ZSgpLAorCQkJICBwaGJhLT5oYnFzbGltcC52aXJ0LCBwaGJhLT5oYnFzbGltcC5waHlzKTsKIAogCS8qIEZyZWUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBTTEkyIGludGVyZmFjZSAqLwogCWRtYV9mcmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsIFNMSTJfU0xJTV9TSVpFLAotCQkJICBwaGJhLT5zbGltMnAsIHBoYmEtPnNsaW0ycF9tYXBwaW5nKTsKKwkJCSAgcGhiYS0+c2xpbTJwLnZpcnQsIHBoYmEtPnNsaW0ycC5waHlzKTsKIAogCS8qIHVubWFwIGFkYXB0ZXIgU0xJTSBhbmQgQ29udHJvbCBSZWdpc3RlcnMgKi8KIAlpb3VubWFwKHBoYmEtPmN0cmxfcmVnc19tZW1tYXBfcCk7CkBAIC0yMzM2LDEzICsyNzg2LDIxIEBACiB9CiAKIC8qKgotICogbHBmY19pb19lcnJvcl9kZXRlY3RlZCAtIGNhbGxlZCB3aGVuIFBDSSBlcnJvciBpcyBkZXRlY3RlZAotICogQHBkZXY6IFBvaW50ZXIgdG8gUENJIGRldmljZQotICogQHN0YXRlOiBUaGUgY3VycmVudCBwY2kgY29ubmVlY3Rpb24gc3RhdGUKKyAqIGxwZmNfaW9fZXJyb3JfZGV0ZWN0ZWQ6IERyaXZlciBtZXRob2QgZm9yIGhhbmRsaW5nIFBDSSBJL08gZXJyb3IgZGV0ZWN0ZWQuCisgKiBAcGRldjogcG9pbnRlciB0byBQQ0kgZGV2aWNlLgorICogQHN0YXRlOiB0aGUgY3VycmVudCBQQ0kgY29ubmVjdGlvbiBzdGF0ZS4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBhIFBDSSBidXMgZXJyb3IgYWZmZWN0aW5nCi0gKiB0aGlzIGRldmljZSBoYXMgYmVlbiBkZXRlY3RlZC4KLSAqLworICogVGhpcyByb3V0aW5lIGlzIHJlZ2lzdGVyZWQgdG8gdGhlIFBDSSBzdWJzeXN0ZW0gZm9yIGVycm9yIGhhbmRsaW5nLiBUaGlzCisgKiBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIFBDSSBzdWJzeXN0ZW0gYWZ0ZXIgYSBQQ0kgYnVzIGVycm9yIGFmZmVjdGluZworICogdGhpcyBkZXZpY2UgaGFzIGJlZW4gZGV0ZWN0ZWQuIFdoZW4gdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLCBpdCB3aWxsCisgKiBuZWVkIHRvIHN0b3AgYWxsIHRoZSBJL09zIGFuZCBpbnRlcnJ1cHQocykgdG8gdGhlIGRldmljZS4gT25jZSB0aGF0IGlzCisgKiBkb25lLCBpdCB3aWxsIHJldHVybiBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUIGZvciB0aGUgUENJIHN1YnN5c3RlbSB0bworICogcGVyZm9ybSBwcm9wZXIgcmVjb3ZlcnkgYXMgZGVzaXJlZC4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVCAtIG5lZWQgdG8gcmVzZXQgYmVmb3JlIHJlY292ZXJ5CisgKiAgIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QgLSBkZXZpY2UgY291bGQgbm90IGJlIHJlY292ZXJlZAorICoqLwogc3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgbHBmY19pb19lcnJvcl9kZXRlY3RlZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJCQlwY2lfY2hhbm5lbF9zdGF0ZV90IHN0YXRlKQogewpAQCAtMjM1MSw4ICsyODA5LDE1IEBACiAJc3RydWN0IGxwZmNfc2xpICpwc2xpID0gJnBoYmEtPnNsaTsKIAlzdHJ1Y3QgbHBmY19zbGlfcmluZyAgKnByaW5nOwogCi0JaWYgKHN0YXRlID09IHBjaV9jaGFubmVsX2lvX3Blcm1fZmFpbHVyZSkKKwlpZiAoc3RhdGUgPT0gcGNpX2NoYW5uZWxfaW9fcGVybV9mYWlsdXJlKSB7CisJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0VSUiwgTE9HX0lOSVQsCisJCQkJIjA0NzIgUENJIGNoYW5uZWwgSS9PIHBlcm1hbmVudCBmYWlsdXJlXG4iKTsKKwkJLyogQmxvY2sgYWxsIFNDU0kgZGV2aWNlcycgSS9PcyBvbiB0aGUgaG9zdCAqLworCQlscGZjX3Njc2lfZGV2X2Jsb2NrKHBoYmEpOworCQkvKiBDbGVhbiB1cCBhbGwgZHJpdmVyJ3Mgb3V0c3RhbmRpbmcgU0NTSSBJL09zICovCisJCWxwZmNfc2xpX2ZsdXNoX2ZjcF9yaW5ncyhwaGJhKTsKIAkJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7CisJfQogCiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwogCS8qCkBAIC0yMzc2LDEwICsyODQxLDIxIEBACiB9CiAKIC8qKgotICogbHBmY19pb19zbG90X3Jlc2V0IC0gY2FsbGVkIGFmdGVyIHRoZSBwY2kgYnVzIGhhcyBiZWVuIHJlc2V0LgotICogQHBkZXY6IFBvaW50ZXIgdG8gUENJIGRldmljZQorICogbHBmY19pb19zbG90X3Jlc2V0OiBSZXN0YXJ0IGEgUENJIGRldmljZSBmcm9tIHNjcmF0Y2guCisgKiBAcGRldjogcG9pbnRlciB0byBQQ0kgZGV2aWNlLgogICoKLSAqIFJlc3RhcnQgdGhlIGNhcmQgZnJvbSBzY3JhdGNoLCBhcyBpZiBmcm9tIGEgY29sZC1ib290LgorICogVGhpcyByb3V0aW5lIGlzIHJlZ2lzdGVyZWQgdG8gdGhlIFBDSSBzdWJzeXN0ZW0gZm9yIGVycm9yIGhhbmRsaW5nLiBUaGlzIGlzCisgKiBjYWxsZWQgYWZ0ZXIgUENJIGJ1cyBoYXMgYmVlbiByZXNldCB0byByZXN0YXJ0IHRoZSBQQ0kgY2FyZCBmcm9tIHNjcmF0Y2gsCisgKiBhcyBpZiBmcm9tIGEgY29sZC1ib290LiBEdXJpbmcgdGhlIFBDSSBzdWJzeXN0ZW0gZXJyb3IgcmVjb3ZlcnksIGFmdGVyIHRoZQorICogZHJpdmVyIHJldHVybnMgUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVCwgdGhlIFBDSSBzdWJzeXN0ZW0gd2lsbCBwZXJmb3JtCisgKiBwcm9wZXIgZXJyb3IgcmVjb3ZlcnkgYW5kIHRoZW4gY2FsbCB0aGlzIHJvdXRpbmUgYmVmb3JlIGNhbGxpbmcgdGhlIC5yZXN1bWUKKyAqIG1ldGhvZCB0byByZWNvdmVyIHRoZSBkZXZpY2UuIFRoaXMgZnVuY3Rpb24gd2lsbCBpbml0aWFsaXplIHRoZSBIQkEgZGV2aWNlLAorICogZW5hYmxlIHRoZSBpbnRlcnJ1cHQsIGJ1dCBpdCB3aWxsIGp1c3QgcHV0IHRoZSBIQkEgdG8gb2ZmbGluZSBzdGF0ZSB3aXRob3V0CisgKiBwYXNzaW5nIGFueSBJL08gdHJhZmZpYy4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVEIC0gdGhlIGRldmljZSBoYXMgYmVlbiByZWNvdmVyZWQKKyAqICAgUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVCAtIGRldmljZSBjb3VsZCBub3QgYmUgcmVjb3ZlcmVkCiAgKi8KIHN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IGxwZmNfaW9fc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKQEAgLTI0MDQsMjAgKzI4ODAsMzQgQEAKIAkvKiBFbmFibGUgY29uZmlndXJlZCBpbnRlcnJ1cHQgbWV0aG9kICovCiAJcGhiYS0+aW50cl90eXBlID0gTk9ORTsKIAlpZiAocGhiYS0+Y2ZnX3VzZV9tc2kgPT0gMikgewotCQllcnJvciA9IGxwZmNfZW5hYmxlX21zaXgocGhiYSk7Ci0JCWlmICghZXJyb3IpCi0JCQlwaGJhLT5pbnRyX3R5cGUgPSBNU0lYOworCQkvKiBOZWVkIHRvIGlzc3VlIGNvbmZfcG9ydCBtYm94IGNtZCBiZWZvcmUgY29uZl9tc2kgbWJveCBjbWQgKi8KKwkJZXJyb3IgPSBscGZjX3NsaV9jb25maWdfcG9ydChwaGJhLCAzKTsKKwkJaWYgKGVycm9yKQorCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fSU5GTywgTE9HX0lOSVQsCisJCQkJIjA0NzggRmlybXdhcmUgbm90IGNhcGFibGUgb2YgU0xJIDMgbW9kZS5cbiIpOworCQllbHNlIHsKKwkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAorCQkJCSIwNDc5IEZpcm13YXJlIGNhcGFibGUgb2YgU0xJIDMgbW9kZS5cbiIpOworCQkJLyogTm93LCB0cnkgdG8gZW5hYmxlIE1TSS1YIGludGVycnVwdCBtb2RlICovCisJCQllcnJvciA9IGxwZmNfZW5hYmxlX21zaXgocGhiYSk7CisJCQlpZiAoIWVycm9yKSB7CisJCQkJcGhiYS0+aW50cl90eXBlID0gTVNJWDsKKwkJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfSU5JVCwKKwkJCQkJCSIwNDgwIGVuYWJsZSBNU0ktWCBtb2RlLlxuIik7CisJCQl9CisJCX0KIAl9CiAKIAkvKiBGYWxsYmFjayB0byBNU0kgaWYgTVNJLVggaW5pdGlhbGl6YXRpb24gZmFpbGVkICovCiAJaWYgKHBoYmEtPmNmZ191c2VfbXNpID49IDEgJiYgcGhiYS0+aW50cl90eXBlID09IE5PTkUpIHsKIAkJcmV0dmFsID0gcGNpX2VuYWJsZV9tc2kocGhiYS0+cGNpZGV2KTsKLQkJaWYgKCFyZXR2YWwpCisJCWlmICghcmV0dmFsKSB7CiAJCQlwaGJhLT5pbnRyX3R5cGUgPSBNU0k7Ci0JCWVsc2UKIAkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAotCQkJCQkiMDQ3MCBFbmFibGUgTVNJIGZhaWxlZCwgY29udGludWluZyAiCi0JCQkJCSJ3aXRoIElSUVxuIik7CisJCQkJCSIwNDgxIGVuYWJsZSBNU0kgbW9kZS5cbiIpOworCQl9IGVsc2UKKwkJCWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0lORk8sIExPR19JTklULAorCQkJCQkiMDQ3MCBlbmFibGUgSVJRIG1vZGUuXG4iKTsKIAl9CiAKIAkvKiBNU0ktWCBpcyB0aGUgb25seSBjYXNlIHRoZSBkb2Vzbid0IG5lZWQgdG8gY2FsbCByZXF1ZXN0X2lycSAqLwpAQCAtMjQ0MCwxMSArMjkzMCwxMyBAQAogfQogCiAvKioKLSAqIGxwZmNfaW9fcmVzdW1lIC0gY2FsbGVkIHdoZW4gdHJhZmZpYyBjYW4gc3RhcnQgZmxvd2luZyBhZ2Fpbi4KLSAqIEBwZGV2OiBQb2ludGVyIHRvIFBDSSBkZXZpY2UKKyAqIGxwZmNfaW9fcmVzdW1lOiBSZXN1bWUgUENJIEkvTyBvcGVyYXRpb24uCisgKiBAcGRldjogcG9pbnRlciB0byBQQ0kgZGV2aWNlCiAgKgotICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgZXJyb3IgcmVjb3ZlcnkgZHJpdmVyIHRlbGxzIHVzIHRoYXQKLSAqIGl0cyBPSyB0byByZXN1bWUgbm9ybWFsIG9wZXJhdGlvbi4KKyAqIFRoaXMgcm91dGluZSBpcyByZWdpc3RlcmVkIHRvIHRoZSBQQ0kgc3Vic3lzdGVtIGZvciBlcnJvciBoYW5kbGluZy4gSXQgaXMKKyAqIGNhbGxlZCB3aGVuIGtlcm5lbCBlcnJvciByZWNvdmVyeSB0ZWxscyB0aGUgbHBmYyBkcml2ZXIgdGhhdCBpdCBpcyBvayB0bworICogcmVzdW1lIG5vcm1hbCBQQ0kgb3BlcmF0aW9uIGFmdGVyIFBDSSBidXMgZXJyb3IgcmVjb3ZlcnkuIEFmdGVyIHRoaXMgY2FsbCwKKyAqIHRyYWZmaWMgY2FuIHN0YXJ0IHRvIGZsb3cgZnJvbSB0aGlzIGRldmljZSBhZ2Fpbi4KICAqLwogc3RhdGljIHZvaWQgbHBmY19pb19yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CkBAIC0yNDkxLDYgKzI5ODMsOCBAQAogCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAogCXtQQ0lfVkVORE9SX0lEX0VNVUxFWCwgUENJX0RFVklDRV9JRF9aRVBIWVIsCiAJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCisJe1BDSV9WRU5ET1JfSURfRU1VTEVYLCBQQ0lfREVWSUNFX0lEX0hPUk5FVCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSwKIAl7UENJX1ZFTkRPUl9JRF9FTVVMRVgsIFBDSV9ERVZJQ0VfSURfWkVQSFlSX1NDU1AsCiAJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCiAJe1BDSV9WRU5ET1JfSURfRU1VTEVYLCBQQ0lfREVWSUNFX0lEX1pFUEhZUl9EQ1NQLApAQCAtMjUyMSw2ICszMDE1LDEyIEBACiAJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCiAJe1BDSV9WRU5ET1JfSURfRU1VTEVYLCBQQ0lfREVWSUNFX0lEX1NBVF9TLAogCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAorCXtQQ0lfVkVORE9SX0lEX0VNVUxFWCwgUENJX0RFVklDRV9JRF9QUk9URVVTX1ZGLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAorCXtQQ0lfVkVORE9SX0lEX0VNVUxFWCwgUENJX0RFVklDRV9JRF9QUk9URVVTX1BGLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAorCXtQQ0lfVkVORE9SX0lEX0VNVUxFWCwgUENJX0RFVklDRV9JRF9QUk9URVVTX1MsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCiAJeyAwIH0KIH07CiAKQEAgLTI1NDAsNiArMzA0MCwxOCBAQAogCS5lcnJfaGFuZGxlciAgICA9ICZscGZjX2Vycl9oYW5kbGVyLAogfTsKIAorLyoqCisgKiBscGZjX2luaXQ6IGxwZmMgbW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgbHBmYyBtb2R1bGUgaXMgbG9hZGVkIGludG8gdGhlCisgKiBrZXJuZWwuIFRoZSBzcGVjaWFsIGtlcm5lbCBtYWNybyBtb2R1bGVfaW5pdCgpIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlCisgKiByb2xlIG9mIHRoaXMgcm91dGluZSB0byB0aGUga2VybmVsIGFzIGxwZmMgbW9kdWxlIGVudHJ5IHBvaW50LgorICoKKyAqIFJldHVybiBjb2RlcworICogICAwIC0gc3VjY2Vzc2Z1bAorICogICAtRU5PTUVNIC0gRkMgYXR0YWNoIHRyYW5zcG9ydCBmYWlsZWQKKyAqICAgYWxsIG90aGVycyAtIGZhaWxlZAorICovCiBzdGF0aWMgaW50IF9faW5pdAogbHBmY19pbml0KHZvaWQpCiB7CkBAIC0yNTY3LDEyICszMDc5LDIwIEBACiAJZXJyb3IgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZscGZjX2RyaXZlcik7CiAJaWYgKGVycm9yKSB7CiAJCWZjX3JlbGVhc2VfdHJhbnNwb3J0KGxwZmNfdHJhbnNwb3J0X3RlbXBsYXRlKTsKLQkJZmNfcmVsZWFzZV90cmFuc3BvcnQobHBmY192cG9ydF90cmFuc3BvcnRfdGVtcGxhdGUpOworCQlpZiAobHBmY19lbmFibGVfbnBpdikKKwkJCWZjX3JlbGVhc2VfdHJhbnNwb3J0KGxwZmNfdnBvcnRfdHJhbnNwb3J0X3RlbXBsYXRlKTsKIAl9CiAKIAlyZXR1cm4gZXJyb3I7CiB9CiAKKy8qKgorICogbHBmY19leGl0OiBscGZjIG1vZHVsZSByZW1vdmFsIHJvdXRpbmUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGludm9rZWQgd2hlbiB0aGUgbHBmYyBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBrZXJuZWwuCisgKiBUaGUgc3BlY2lhbCBrZXJuZWwgbWFjcm8gbW9kdWxlX2V4aXQoKSBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSByb2xlIG9mCisgKiB0aGlzIHJvdXRpbmUgdG8gdGhlIGtlcm5lbCBhcyBscGZjIG1vZHVsZSBleGl0IHBvaW50LgorICovCiBzdGF0aWMgdm9pZCBfX2V4aXQKIGxwZmNfZXhpdCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwppbmRleCA3YTliZTRjLi43NDY1ZmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwpAQCAtMSw3ICsxLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRW11bGV4IExpbnV4IERldmljZSBEcml2ZXIgZm9yICAgICAgICAgKgogICogRmlicmUgQ2hhbm5lbCBIb3N0IEJ1cyBBZGFwdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA3IEVtdWxleC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCBFbXVsZXguICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgKgogICogRU1VTEVYIGFuZCBTTEkgYXJlIHRyYWRlbWFya3Mgb2YgRW11bGV4LiAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIHd3dy5lbXVsZXguY29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBDaHJpc3RvcGggSGVsbHdpZyAgICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAibHBmY19ody5oIgogI2luY2x1ZGUgImxwZmNfc2xpLmgiCisjaW5jbHVkZSAibHBmY19ubC5oIgogI2luY2x1ZGUgImxwZmNfZGlzYy5oIgogI2luY2x1ZGUgImxwZmNfc2NzaS5oIgogI2luY2x1ZGUgImxwZmMuaCIKQEAgLTM3LDEwICszOCwyMCBAQAogI2luY2x1ZGUgImxwZmNfY3J0bi5oIgogI2luY2x1ZGUgImxwZmNfY29tcGF0LmgiCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX2R1bXBfbWVtOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciByZXRyaWV2aW5nIEhCQSdzIFZQRCBtZW1vcnkuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKiBAb2Zmc2V0OiBvZmZzZXQgZm9yIGR1bXBpbmcgVlBEIG1lbW9yeSBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIGR1bXAgbWFpbGJveCBjb21tYW5kIHByb3ZpZGVzIGEgbWV0aG9kIGZvciB0aGUgZGV2aWNlIGRyaXZlciB0byBvYnRhaW4KKyAqIHZhcmlvdXMgdHlwZXMgb2YgaW5mb3JtYXRpb24gZnJvbSB0aGUgSEJBIGRldmljZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgZHVtcGluZyBIQkEgVml0YWwgUHJvZHVjdAorICogRGF0YSAoVlBEKSBtZW1vcnkuIFRoaXMgbWFpbGJveCBjb21tYW5kIGlzIHRvIGJlIHVzZWQgZm9yIHJldHJpZXZpbmcgYQorICogcG9ydGlvbiAoRE1QX1JTUF9TSVpFIGJ5dGVzKSBvZiBhIEhCQSdzIFZQRCBmcm9tIHRoZSBIQkEgYXQgYW4gYWRkcmVzcworICogb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgb2Zmc2V0IHBhcmFtZXRlci4KKyAqKi8KIHZvaWQKIGxwZmNfZHVtcF9tZW0oc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1iLCB1aW50MTZfdCBvZmZzZXQpCiB7CkBAIC02NSwxMCArNzYsMTcgQEAKIAlyZXR1cm47CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfcmVhZF9udiAgSXNzdWUgYSBSRUFEIE5WUEFSQU0gICAgICAgICovCi0vKiAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3JlYWRfbnY6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBJ3MgTlZSQU0gcGFyYW0uCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIHJlYWQgTlZSQU0gbWFpbGJveCBjb21tYW5kIHJldHVybnMgdGhlIEhCQSdzIG5vbi12b2xhdGlsZSBwYXJhbWV0ZXJzCisgKiB0aGF0IGFyZSB1c2VkIGFzIGRlZmF1bHRzIHdoZW4gdGhlIEZpYnJlIENoYW5uZWwgbGluayBpcyBicm91Z2h0IG9uLWxpbmUuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgaW5mb3JtYXRpb24gc3RvcmVkCisgKiBpbiB0aGUgSEJBJ3MgTlZSQU0uIFNwZWNpZmljYWxseSwgdGhlIEhCQSdzIFdXTk4gYW5kIFdXUE4uCisgKiovCiB2b2lkCiBscGZjX3JlYWRfbnYoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1iKQogewpAQCAtODEsMTAgKzk5LDE5IEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICBscGZjX2NvbmZpZ19hc3luYyAgSXNzdWUgYSAgICAgICAgICAgICAgICAqLwotLyogIE1CWF9BU1lOQ19FVlRfRU5BQkxFIG1haWxib3ggY29tbWFuZCAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19jb25maWdfYXN5bmM6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIGVuYWJsaW5nIEhCQSBhc3luYyBldmVudC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqIEByaW5nOiByaW5nIG51bWJlciBmb3IgdGhlIGFzeW5jaHJvbm91cyBldmVudCB0byBiZSBjb25maWd1cmVkLgorICoKKyAqIFRoZSBhc3luY2hyb25vdXMgZXZlbnQgZW5hYmxlIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIGVuYWJsZSB0aGUKKyAqIGFzeW5jaHJvbm91cyBldmVudCBwb3N0aW5nIHZpYSB0aGUgQVNZTkNfU1RBVFVTX0NOIElPQ0IgcmVzcG9uc2UgYW5kCisgKiBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgcmluZyB0byB3aGljaCBldmVudHMgYXJlIHBvc3RlZC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgZW5hYmxpbmcgSEJBIGFzeW5jaHJvbm91cworICogZXZlbnQgc3VwcG9ydCBvbiBhIElPQ0IgcmluZy4KKyAqKi8KIHZvaWQKIGxwZmNfY29uZmlnX2FzeW5jKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIHBtYiwKIAkJdWludDMyX3QgcmluZykKQEAgLTk5LDEwICsxMjYsMTkgQEAKIAlyZXR1cm47CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfaGVhcnRfYmVhdCAgSXNzdWUgYSBIRUFSVF9CRUFUICAgICAgICovCi0vKiAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX2hlYXJ0X2JlYXQ6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIGhlYXJ0IGJlYXQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIGhlYXJ0IGJlYXQgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gZGV0ZWN0IGFuIHVucmVzcG9uc2l2ZSBIQkEsIHdoaWNoCisgKiBpcyBkZWZpbmVkIGFzIGFueSBkZXZpY2Ugd2hlcmUgbm8gZXJyb3IgYXR0ZW50aW9uIGlzIHNlbnQgYW5kIGJvdGggbWFpbGJveAorICogYW5kIHJpbmdzIGFyZSBub3QgcHJvY2Vzc2VkLgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciBpc3N1aW5nIGEgaGVhcnQgYmVhdCBpbiB0aGUKKyAqIGZvcm0gb2YgbWFpbGJveCBjb21tYW5kIHRvIHRoZSBIQkEuIFRoZSB0aW1lbHkgY29tcGxldGlvbiBvZiB0aGUgaGVhcnQKKyAqIGJlYXQgbWFpbGJveCBjb21tYW5kIGluZGljYXRlcyB0aGUgaGVhbHRoIG9mIHRoZSBIQkEuCisgKiovCiB2b2lkCiBscGZjX2hlYXJ0X2JlYXQoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1iKQogewpAQCAtMTE1LDEwICsxNTEsMjYgQEAKIAlyZXR1cm47CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfcmVhZF9sYSAgSXNzdWUgYSBSRUFEIExBICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3JlYWRfbGE6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBIGxpbmsgYXR0ZW50aW9uLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcG1iOiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICogQG1wOiBETUEgYnVmZmVyIG1lbW9yeSBmb3IgcmVhZGluZyB0aGUgbGluayBhdHRlbnRpb24gaW5mb3JtYXRpb24gaW50by4KKyAqCisgKiBUaGUgcmVhZCBsaW5rIGF0dGVudGlvbiBtYWlsYm94IGNvbW1hbmQgaXMgaXNzdWVkIHRvIHJlYWQgdGhlIExpbmsgRXZlbnQKKyAqIEF0dGVudGlvbiBpbmZvcm1hdGlvbiBpbmRpY2F0ZWQgYnkgdGhlIEhCQSBwb3J0IHdoZW4gdGhlIExpbmsgRXZlbnQgYml0CisgKiBvZiB0aGUgSG9zdCBBdHRlbnRpb24gKEhTVEFUVCkgcmVnaXN0ZXIgaXMgc2V0IHRvIDEuIEEgTGluayBFdmVudAorICogQXR0ZW50aW9uIG9jY3VycyBiYXNlZCBvbiBhbiBleGNlcHRpb24gZGV0ZWN0ZWQgYXQgdGhlIEZpYnJlIENoYW5uZWwgbGluaworICogaW50ZXJmYWNlLgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciByZWFkaW5nIEhCQSBsaW5rIGF0dGVudGlvbgorICogaW5mb3JtYXRpb24uIEEgRE1BIG1lbW9yeSBoYXMgYmVlbiBzZXQgYXNpZGUgYW5kIGFkZHJlc3MgcGFzc2VkIHRvIHRoZQorICogSEJBIHRocm91Z2ggQG1wIGZvciB0aGUgSEJBIHRvIERNQSBsaW5rIGF0dGVudGlvbiBpbmZvcm1hdGlvbiBpbnRvIHRoZQorICogbWVtb3J5IGFzIHBhcnQgb2YgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAgMCAtIFN1Y2Nlc3MgKGN1cnJlbnRseSBhbHdheXMgcmV0dXJuIDApCisgKiovCiBpbnQKIGxwZmNfcmVhZF9sYShzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLCBMUEZDX01CT1hRX3QgKiBwbWIsIHN0cnVjdCBscGZjX2RtYWJ1ZiAqbXApCiB7CkBAIC0xNDMsMTAgKzE5NSwyMSBAQAogCXJldHVybiAoMCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfY2xlYXJfbGEgIElzc3VlIGEgQ0xFQVIgTEEgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgbWFpbGJveCBjb21tYW5kICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX2NsZWFyX2xhOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciBjbGVhcmluZyBIQkEgbGluayBhdHRlbnRpb24uCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIGNsZWFyIGxpbmsgYXR0ZW50aW9uIG1haWxib3ggY29tbWFuZCBpcyBpc3N1ZWQgdG8gY2xlYXIgdGhlIGxpbmsgZXZlbnQKKyAqIGF0dGVudGlvbiBjb25kaXRpb24gaW5kaWNhdGVkIGJ5IHRoZSBMaW5rIEV2ZW50IGJpdCBvZiB0aGUgSG9zdCBBdHRlbnRpb24KKyAqIChIU1RBVFQpIHJlZ2lzdGVyLiBUaGUgbGluayBldmVudCBhdHRlbnRpb24gY29uZGl0aW9uIGlzIGNsZWFyZWQgb25seSBpZgorICogdGhlIGV2ZW50IHRhZyBzcGVjaWZpZWQgbWF0Y2hlcyB0aGF0IG9mIHRoZSBjdXJyZW50IGxpbmsgZXZlbnQgY291bnRlci4KKyAqIFRoZSBjdXJyZW50IGV2ZW50IHRhZyBpcyByZWFkIHVzaW5nIHRoZSByZWFkIGxpbmsgYXR0ZW50aW9uIGV2ZW50IG1haWxib3gKKyAqIGNvbW1hbmQuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIGNsZWFyaW5nIEhCQSBsaW5rIGF0dGVudGlvbgorICogaW5mb3JtYXRpb24uCisgKiovCiB2b2lkCiBscGZjX2NsZWFyX2xhKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIHBtYikKIHsKQEAgLTE2MSwxMCArMjI0LDIwIEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgbHBmY19jb25maWdfbGluayAgSXNzdWUgYSBDT05GSUcgTElOSyAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgbWFpbGJveCBjb21tYW5kICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfY29uZmlnX2xpbms6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIGNvbmZpZ3VyaW5nIGxpbmsgb24gYSBIQkEuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIGNvbmZpZ3VyZSBsaW5rIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIGJlZm9yZSB0aGUgaW5pdGlhbGl6ZSBsaW5rCisgKiBtYWlsYm94IGNvbW1hbmQgdG8gb3ZlcnJpZGUgZGVmYXVsdCB2YWx1ZSBhbmQgdG8gY29uZmlndXJlIGxpbmstb3JpZW50ZWQKKyAqIHBhcmFtZXRlcnMgc3VjaCBhcyBESUQgYWRkcmVzcyBhbmQgdmFyaW91cyB0aW1lcnMuIFR5cGljYWxseSwgdGhpcworICogY29tbWFuZCB3b3VsZCBiZSB1c2VkIGFmdGVyIGFuIEZfUG9ydCBsb2dpbiB0byBzZXQgdGhlIHJldHVybmVkIERJRCBhZGRyZXNzCisgKiBhbmQgdGhlIGZhYnJpYyB0aW1lb3V0IHZhbHVlcy4gVGhpcyBjb21tYW5kIGlzIG5vdCB2YWxpZCBiZWZvcmUgYSBjb25maWd1cmUKKyAqIHBvcnQgY29tbWFuZCBoYXMgY29uZmlndXJlZCB0aGUgSEJBIHBvcnQuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIGNvbmZpZ3VyaW5nIGxpbmsgb24gYSBIQkEuCisgKiovCiB2b2lkCiBscGZjX2NvbmZpZ19saW5rKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIHBtYikKIHsKQEAgLTE5OSwxMCArMjcyLDk4IEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICBscGZjX2luaXRfbGluayAgSXNzdWUgYW4gSU5JVCBMSU5LICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19jb25maWdfbXNpOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciBjb25maWd1cmluZyBtc2kteC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgY29uZmlndXJlIE1TSS1YIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgSEJBJ3MgU0xJLTMKKyAqIE1TSS1YIG11bHRpLW1lc3NhZ2UgaW50ZXJydXB0IHZlY3RvciBhc3NvY2lhdGlvbiB0byBpbnRlcnJ1cHQgYXR0ZW50aW9uCisgKiBjb25kaXRpb25zLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAgMCAtIFN1Y2Nlc3MKKyAqICAgIC1FSU5WQUwgLSBGYWlsdXJlCisgKiovCitpbnQKK2xwZmNfY29uZmlnX21zaShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1iKQoreworCU1BSUxCT1hfdCAqbWIgPSAmcG1iLT5tYjsKKwl1aW50MzJfdCBhdHRlbnRpb25Db25kaXRpb25zWzJdOworCisJLyogU2FuaXR5IGNoZWNrICovCisJaWYgKHBoYmEtPmNmZ191c2VfbXNpICE9IDIpIHsKKwkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfSU5JVCwKKwkJCQkiMDQ3NSBOb3QgY29uZmlndXJlZCBmb3Igc3VwcG9ydGluZyBNU0ktWCAiCisJCQkJImNmZ191c2VfbXNpOiAweCV4XG4iLCBwaGJhLT5jZmdfdXNlX21zaSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChwaGJhLT5zbGlfcmV2IDwgMykgeworCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19JTklULAorCQkJCSIwNDc2IEhCQSBub3Qgc3VwcG9ydGluZyBTTEktMyBvciBsYXRlciAiCisJCQkJIlNMSSBSZXZpc2lvbjogMHgleFxuIiwgcGhiYS0+c2xpX3Jldik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIENsZWFyIG1haWxib3ggY29tbWFuZCBmaWVsZHMgKi8KKwltZW1zZXQocG1iLCAwLCBzaXplb2YoTFBGQ19NQk9YUV90KSk7CisKKwkvKgorCSAqIFNMSS0zLCBNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdCBGZWFydXJlLgorCSAqLworCisJLyogTXVsdGktbWVzc2FnZSBhdHRlbnRpb24gY29uZmlndXJhdGlvbiAqLworCWF0dGVudGlvbkNvbmRpdGlvbnNbMF0gPSAoSEFfUjBBVFQgfCBIQV9SMUFUVCB8IEhBX1IyQVRUIHwgSEFfRVJBVFQgfAorCQkJCSAgSEFfTEFUVCB8IEhBX01CQVRUKTsKKwlhdHRlbnRpb25Db25kaXRpb25zWzFdID0gMDsKKworCW1iLT51bi52YXJDZmdNU0kuYXR0ZW50aW9uQ29uZGl0aW9uc1swXSA9IGF0dGVudGlvbkNvbmRpdGlvbnNbMF07CisJbWItPnVuLnZhckNmZ01TSS5hdHRlbnRpb25Db25kaXRpb25zWzFdID0gYXR0ZW50aW9uQ29uZGl0aW9uc1sxXTsKKworCS8qCisJICogU2V0IHVwIG1lc3NhZ2UgbnVtYmVyIHRvIEhBIGJpdCBhc3NvY2lhdGlvbgorCSAqLworI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAorCS8qIFJBMCAoRkNQIFJpbmcpICovCisJbWItPnVuLnZhckNmZ01TSS5tZXNzYWdlTnVtYmVyQnlIQVtIQV9SMF9QT1NdID0gMTsKKwkvKiBSQTEgKE90aGVyIFByb3RvY29sIEV4dHJhIFJpbmcpICovCisJbWItPnVuLnZhckNmZ01TSS5tZXNzYWdlTnVtYmVyQnlIQVtIQV9SMV9QT1NdID0gMTsKKyNlbHNlICAgLyogIF9fTElUVExFX0VORElBTl9CSVRGSUVMRCAqLworCS8qIFJBMCAoRkNQIFJpbmcpICovCisJbWItPnVuLnZhckNmZ01TSS5tZXNzYWdlTnVtYmVyQnlIQVtIQV9SMF9QT1NeM10gPSAxOworCS8qIFJBMSAoT3RoZXIgUHJvdG9jb2wgRXh0cmEgUmluZykgKi8KKwltYi0+dW4udmFyQ2ZnTVNJLm1lc3NhZ2VOdW1iZXJCeUhBW0hBX1IxX1BPU14zXSA9IDE7CisjZW5kaWYKKwkvKiBNdWx0aS1tZXNzYWdlIGludGVycnVwdCBhdXRvY2xlYXIgY29uZmlndXJhdGlvbiovCisJbWItPnVuLnZhckNmZ01TSS5hdXRvQ2xlYXJIQVswXSA9IGF0dGVudGlvbkNvbmRpdGlvbnNbMF07CisJbWItPnVuLnZhckNmZ01TSS5hdXRvQ2xlYXJIQVsxXSA9IGF0dGVudGlvbkNvbmRpdGlvbnNbMV07CisKKwkvKiBGb3Igbm93LCBIQkEgYXV0b2NsZWFyIGRvZXMgbm90IHdvcmsgcmVsaWFibHksIGRpc2FibGUgaXQgKi8KKwltYi0+dW4udmFyQ2ZnTVNJLmF1dG9DbGVhckhBWzBdID0gMDsKKwltYi0+dW4udmFyQ2ZnTVNJLmF1dG9DbGVhckhBWzFdID0gMDsKKworCS8qIFNldCBjb21tYW5kIGFuZCBvd25lciBiaXQgKi8KKwltYi0+bWJ4Q29tbWFuZCA9IE1CWF9DT05GSUdfTVNJOworCW1iLT5tYnhPd25lciA9IE9XTl9IT1NUOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogbHBmY19pbml0X2xpbms6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIGluaXRpYWxpemUgbGluayBvbiBhIEhCQS4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqIEB0b3BvbG9neTogdGhlIGxpbmsgdG9wb2xvZ3kgZm9yIHRoZSBsaW5rIHRvIGJlIGluaXRpYWxpemVkIHRvLgorICogQGxpbmtzcGVlZDogdGhlIGxpbmsgc3BlZWQgZm9yIHRoZSBsaW5rIHRvIGJlIGluaXRpYWxpemVkIHRvLgorICoKKyAqIFRoZSBpbml0aWFsaXplIGxpbmsgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRmlicmUKKyAqIENoYW5uZWwgbGluay4gVGhpcyBjb21tYW5kIG11c3QgZm9sbG93IGEgY29uZmlndXJlIHBvcnQgY29tbWFuZCB0aGF0CisgKiBlc3RhYmxpc2hlcyB0aGUgbW9kZSBvZiBvcGVyYXRpb24uCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIGluaXRpYWxpemluZyBsaW5rIG9uIGEgSEJBCisgKiB3aXRoIHRoZSBzcGVjaWZpZWQgbGluayB0b3BvbG9neSBhbmQgc3BlZWQuCisgKiovCiB2b2lkCiBscGZjX2luaXRfbGluayhzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLAogCSAgICAgICBMUEZDX01CT1hRX3QgKiBwbWIsIHVpbnQzMl90IHRvcG9sb2d5LCB1aW50MzJfdCBsaW5rc3BlZWQpCkBAIC0yNjksMTAgKzQzMCwyNyBAQAogCXJldHVybjsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgbHBmY19yZWFkX3NwYXJhbSAgSXNzdWUgYSBSRUFEIFNQQVJBTSAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfcmVhZF9zcGFyYW06IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBIHBhcmFtZXRlcnMuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKiBAdnBpOiB2aXJ0dWFsIE5fUG9ydCBpZGVudGlmaWVyLgorICoKKyAqIFRoZSByZWFkIHNlcnZpY2UgcGFyYW1ldGVyIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIHJlYWQgdGhlIEhCQSBwb3J0CisgKiBzZXJ2aWNlIHBhcmFtZXRlcnMuIFRoZSBzZXJ2aWNlIHBhcmFtZXRlcnMgYXJlIHJlYWQgaW50byB0aGUgYnVmZmVyCisgKiBzcGVjaWZpZWQgZGlyZWN0bHkgYnkgYSBCREUgaW4gdGhlIG1haWxib3ggY29tbWFuZC4gVGhlc2Ugc2VydmljZQorICogcGFyYW1ldGVycyBtYXkgdGhlbiBiZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYXlsb2FkIG9mIGFuIE5fUG9ydC9GX1BPcnQKKyAqIGxvZ2luIHJlcXVlc3QgYW5kIHJlcGx5IChMT0dJL0FDQykuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBIHBvcnQgc2VydmljZQorICogcGFyYW1ldGVycy4gVGhlIERNQSBtZW1vcnkgaXMgYWxsb2NhdGVkIGluIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBhZGRyZXNzZXMKKyAqIGFyZSBwb3B1bGF0ZWQgaW50byB0aGUgbWFpbGJveCBjb21tYW5kIGZvciB0aGUgSEJBIHRvIERNQSB0aGUgc2VydmljZQorICogcGFyYW1ldGVycyBpbnRvLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAgMCAtIFN1Y2Nlc3MKKyAqICAgIDEgLSBETUEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkCisgKiovCiBpbnQKIGxwZmNfcmVhZF9zcGFyYW0oc3RydWN0IGxwZmNfaGJhICpwaGJhLCBMUEZDX01CT1hRX3QgKnBtYiwgaW50IHZwaSkKIHsKQEAgLTMxMiwxMCArNDkwLDIxIEBACiAJcmV0dXJuICgwKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfdW5yZWdfZGlkICBJc3N1ZSBhIFVOUkVHX0RJRCAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3VucmVnX2RpZDogUHJlcGFyZSBhIG1haWxib3ggY29tbWFuZCBmb3IgdW5yZWdpc3RlcmluZyBESUQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEB2cGk6IHZpcnR1YWwgTl9Qb3J0IGlkZW50aWZpZXIuCisgKiBAZGlkOiByZW1vdGUgcG9ydCBpZGVudGlmaWVyLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgdW5yZWdpc3RlciBESUQgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gdW5yZWdpc3RlciBhbiBOX1BvcnQvRl9Qb3J0CisgKiBsb2dpbiBmb3IgYW4gdW5rbm93biBSUEkgYnkgc3BlY2lmeWluZyB0aGUgRElEIG9mIGEgcmVtb3RlIHBvcnQuIFRoaXMKKyAqIGNvbW1hbmQgZnJlZXMgYW4gUlBJIGNvbnRleHQgaW4gdGhlIEhCQSBwb3J0LiBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mCisgKiBwZXJmb3JtaW5nIGFuIGltcGxpY2l0IE5fUG9ydC9GX1BvcnQgbG9nb3V0LgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciB1bnJlZ2lzdGVyaW5nIGEgcmVtb3RlCisgKiBOX1BvcnQvRl9Qb3J0IChESUQpIGxvZ2luLgorICoqLwogdm9pZAogbHBmY191bnJlZ19kaWQoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgdWludDE2X3QgdnBpLCB1aW50MzJfdCBkaWQsCiAJICAgICAgIExQRkNfTUJPWFFfdCAqIHBtYikKQEAgLTMzMywxMCArNTIyLDE5IEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICBscGZjX3JlYWRfbnYgIElzc3VlIGEgUkVBRCBDT05GSUcgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgbWFpbGJveCBjb21tYW5kICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY19yZWFkX2NvbmZpZzogUHJlcGFyZSBhIG1haWxib3ggY29tbWFuZCBmb3IgcmVhZGluZyBIQkEgY29uZmlndXJhdGlvbi4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgcmVhZCBjb25maWd1cmF0aW9uIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIHJlYWQgdGhlIEhCQSBwb3J0CisgKiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIFRoaXMgbWFpbGJveCBjb21tYW5kIHByb3ZpZGVzIGEgbWV0aG9kIGZvcgorICogc2VlaW5nIGFueSBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCB2aWEgdmFyaW91cyBjb25maWd1cmF0aW9uCisgKiBtYWlsYm94IGNvbW1hbmRzLgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciByZWFkaW5nIG91dCBIQkEgY29uZmlndXJhdGlvbgorICogcGFyYW1ldGVycy4KKyAqKi8KIHZvaWQKIGxwZmNfcmVhZF9jb25maWcoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogcG1iKQogewpAQCAtMzUwLDEwICs1NDgsMTggQEAKIAlyZXR1cm47CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogIGxwZmNfcmVhZF9sbmtfc3RhdCAgSXNzdWUgYSBSRUFEIExJTksgU1RBVFVTICovCi0vKiAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBscGZjX3JlYWRfbG5rX3N0YXQ6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBIGxpbmsgc3RhdHMuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogVGhlIHJlYWQgbGluayBzdGF0dXMgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gcmVhZCB0aGUgbGluayBzdGF0dXMgZnJvbQorICogdGhlIEhCQS4gTGluayBzdGF0dXMgaW5jbHVkZXMgYWxsIGxpbmstcmVsYXRlZCBlcnJvciBjb3VudGVycy4gVGhlc2UKKyAqIGNvdW50ZXJzIGFyZSBtYWludGFpbmVkIGJ5IHRoZSBIQkEgYW5kIG9yaWdpbmF0ZWQgaW4gdGhlIGxpbmsgaGFyZHdhcmUKKyAqIHVuaXQuIE5vdGUgdGhhdCBhbGwgb2YgdGhlc2UgY291bnRlcnMgd3JhcC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgcmVhZGluZyBvdXQgSEJBIGxpbmsgc3RhdHVzLgorICoqLwogdm9pZAogbHBmY19yZWFkX2xua19zdGF0KHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIHBtYikKIHsKQEAgLTM2NywxMCArNTczLDMwIEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgbHBmY19yZWdfbG9naW4gIElzc3VlIGEgUkVHX0xPR0lOICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgIG1haWxib3ggY29tbWFuZCAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfcmVnX2xvZ2luOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciByZWdpc3RlcmluZyByZW1vdGUgbG9naW4uCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEB2cGk6IHZpcnR1YWwgTl9Qb3J0IGlkZW50aWZpZXIuCisgKiBAZGlkOiByZW1vdGUgcG9ydCBpZGVudGlmaWVyLgorICogQHBhcmFtOiBwb2ludGVyIHRvIG1lbW9yeSBob2xkaW5nIHRoZSBzZXJ2ZXIgcGFyYW1ldGVycy4KKyAqIEBwbWI6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKiBAZmxhZzogYWN0aW9uIGZsYWcgdG8gYmUgcGFzc2VkIGJhY2sgZm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgcmVnaXN0cmF0aW9uIGxvZ2luIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIHJlZ2lzdGVyIGFuIE5fUG9ydCBvcgorICogRl9Qb3J0IGxvZ2luLiBUaGlzIHJlZ2lzdHJhdGlvbiBhbGxvd3MgdGhlIEhCQSB0byBjYWNoZSB0aGUgcmVtb3RlIE5fUG9ydAorICogc2VydmljZSBwYXJhbWV0ZXJzIGludGVybmFsbHkgYW5kIHRoZXJlYnkgbWFrZSB0aGUgYXBwcm9wcmlhdGUgRkMtMgorICogZGVjaXNpb25zLiBUaGUgcmVtb3RlIHBvcnQgc2VydmljZSBwYXJhbWV0ZXJzIGFyZSBoYW5kZWQgb2ZmIGJ5IHRoZSBkcml2ZXIKKyAqIHRvIHRoZSBIQkEgdXNpbmcgYSBkZXNjcmlwdG9yIGVudHJ5IHRoYXQgZGlyZWN0bHkgaWRlbnRpZmllcyBhIGJ1ZmZlciBpbgorICogaG9zdCBtZW1vcnkuIEluIGV4Y2hhbmdlLCB0aGUgSEJBIHJldHVybnMgYW4gUlBJIGlkZW50aWZpZXIuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlZ2lzdGVyaW5nIHJlbW90ZSBwb3J0IGxvZ2luLgorICogVGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyBETUEgYnVmZmVyIGZvciBwYXNzaW5nIHRoZSBzZXJ2aWNlIHBhcmFtZXRlcnMgdG8gdGhlCisgKiBIQkEgd2l0aCB0aGUgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFJldHVybiBjb2RlcworICogICAgMCAtIFN1Y2Nlc3MKKyAqICAgIDEgLSBETUEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkCisgKiovCiBpbnQKIGxwZmNfcmVnX2xvZ2luKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDE2X3QgdnBpLCB1aW50MzJfdCBkaWQsCiAJICAgICAgIHVpbnQ4X3QgKnBhcmFtLCBMUEZDX01CT1hRX3QgKnBtYiwgdWludDMyX3QgZmxhZykKQEAgLTQxOCwxMCArNjQ0LDIwIEBACiAJcmV0dXJuICgwKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgbHBmY191bnJlZ19sb2dpbiAgSXNzdWUgYSBVTlJFR19MT0dJTiAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfdW5yZWdfbG9naW46IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHVucmVnaXN0ZXJpbmcgcmVtb3RlIGxvZ2luLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAdnBpOiB2aXJ0dWFsIE5fUG9ydCBpZGVudGlmaWVyLgorICogQHJwaTogcmVtb3RlIHBvcnQgaWRlbnRpZmllcgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgdW5yZWdpc3RyYXRpb24gbG9naW4gbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gdW5yZWdpc3RlciBhbiBOX1BvcnQKKyAqIG9yIEZfUG9ydCBsb2dpbi4gVGhpcyBjb21tYW5kIGZyZWVzIGFuIFJQSSBjb250ZXh0IGluIHRoZSBIQkEuIEl0IGhhcyB0aGUKKyAqIGVmZmVjdCBvZiBwZXJmb3JtaW5nIGFuIGltcGxpY2l0IE5fUG9ydC9GX1BvcnQgbG9nb3V0LgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciB1bnJlZ2lzdGVyaW5nIHJlbW90ZSBwb3J0CisgKiBsb2dpbi4KKyAqKi8KIHZvaWQKIGxwZmNfdW5yZWdfbG9naW4oc3RydWN0IGxwZmNfaGJhICpwaGJhLCB1aW50MTZfdCB2cGksIHVpbnQzMl90IHJwaSwKIAkJIExQRkNfTUJPWFFfdCAqIHBtYikKQEAgLTQ0MCwxMCArNjc2LDIxIEBACiAJcmV0dXJuOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgbHBmY19yZWdfdnBpICAgSXNzdWUgYSBSRUdfVlBJICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgbWFpbGJveCBjb21tYW5kICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIGxwZmNfcmVnX3ZwaTogUHJlcGFyZSBhIG1haWxib3ggY29tbWFuZCBmb3IgcmVnaXN0ZXJpbmcgdnBvcnQgaWRlbnRpZmllci4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHZwaTogdmlydHVhbCBOX1BvcnQgaWRlbnRpZmllci4KKyAqIEBzaWQ6IEZpYnJlIENoYW5uZWwgU19JRCAoTl9Qb3J0X0lEIGFzc2lnbmVkIHRvIGEgdmlydHVhbCBOX1BvcnQpLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgcmVnaXN0cmF0aW9uIHZwb3J0IGlkZW50aWZpZXIgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gYWN0aXZhdGUgYQorICogdmlydHVhbCBOX1BvcnQgYWZ0ZXIgaXQgaGFzIGFjcXVpcmVkIGFuIE5fUG9ydF9JRC4gVGhlIEhCQSB2YWxpZGF0ZXMgdGhlCisgKiBOX1BvcnRfSUQgYWdhaW5zdCB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlbGVjdGVkIHZpcnR1YWwgTl9Qb3J0IGNvbnRleHQKKyAqIGJsb2NrIGFuZCBtYXJrcyBpdCBhY3RpdmUgdG8gYWxsb3cgbm9ybWFsIHByb2Nlc3Npbmcgb2YgSU9DQiBjb21tYW5kcyBhbmQKKyAqIHJlY2VpdmVkIHVuc29saWNpdGVkIGV4Y2hhbmdlcy4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgcmVnaXN0ZXJpbmcgYSB2aXJ0dWFsIE5fUG9ydC4KKyAqKi8KIHZvaWQKIGxwZmNfcmVnX3ZwaShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQxNl90IHZwaSwgdWludDMyX3Qgc2lkLAogCSAgICAgTFBGQ19NQk9YUV90ICpwbWIpCkBAIC00NjEsMTAgKzcwOCwyMiBAQAogCiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qICBscGZjX3VucmVnX3ZwaSAgIElzc3VlIGEgVU5SRUdfVk5QSSAgICAgICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICBtYWlsYm94IGNvbW1hbmQgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogbHBmY191bnJlZ192cGk6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHVucmVnaXN0ZXJpbmcgdnBvcnQgaWQuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEB2cGk6IHZpcnR1YWwgTl9Qb3J0IGlkZW50aWZpZXIuCisgKiBAcG1iOiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFRoZSB1bnJlZ2lzdHJhdGlvbiB2cG9ydCBpZGVudGlmaWVyIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIGluYWN0aXZhdGUKKyAqIGEgdmlydHVhbCBOX1BvcnQuIFRoZSBkcml2ZXIgbXVzdCBoYXZlIGxvZ2dlZCBvdXQgYW5kIHVucmVnaXN0ZXJlZCBhbGwKKyAqIHJlbW90ZSBOX1BvcnRzIHRvIGFib3J0IGFueSBhY3Rpdml0eSBvbiB0aGUgdmlydHVhbCBOX1BvcnQuIFRoZSBIQkEgd2lsbAorICogdW5yZWdpc3RlcnMgYW55IGRlZmF1bHQgUlBJcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCB2cGksIGFib3J0aW5nCisgKiBhbnkgYWN0aXZlIGV4Y2hhbmdlcy4gVGhlIEhCQSB3aWxsIHBvc3QgdGhlIG1haWxib3ggcmVzcG9uc2UgYWZ0ZXIgbWFraW5nCisgKiB0aGUgdmlydHVhbCBOX1BvcnQgaW5hY3RpdmUuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIHVucmVnaXN0ZXJpbmcgYSB2aXJ0dWFsCisgKiBOX1BvcnQuCisgKiovCiB2b2lkCiBscGZjX3VucmVnX3ZwaShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQxNl90IHZwaSwgTFBGQ19NQk9YUV90ICpwbWIpCiB7CkBAIC00NzksMTIgKzczOCwxOSBAQAogCiB9CiAKKy8qKgorICogbHBmY19jb25maWdfcGNiX3NldHVwOiBTZXQgdXAgSU9DQiByaW5ncyBpbiB0aGUgUG9ydCBDb250cm9sIEJsb2NrIChQQ0IpCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgc2V0cyB1cCBhbmQgaW5pdGlhbGl6ZXMgdGhlIElPQ0IgcmluZ3MgaW4gdGhlIFBvcnQgQ29udHJvbAorICogQmxvY2sgKFBDQikuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19jb25maWdfcGNiX3NldHVwKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEpCiB7CiAJc3RydWN0IGxwZmNfc2xpICpwc2xpID0gJnBoYmEtPnNsaTsKIAlzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmc7Ci0JUENCX3QgKnBjYnAgPSAmcGhiYS0+c2xpbTJwLT5wY2I7CisJUENCX3QgKnBjYnAgPSBwaGJhLT5wY2I7CiAJZG1hX2FkZHJfdCBwZG1hX2FkZHI7CiAJdWludDMyX3Qgb2Zmc2V0OwogCXVpbnQzMl90IGlvY2JDbnQgPSAwOwpAQCAtNTEzLDI5ICs3NzksNDMgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAJCS8qIENvbW1hbmQgcmluZyBzZXR1cCBmb3IgcmluZyAqLwotCQlwcmluZy0+Y21kcmluZ2FkZHIgPSAodm9pZCAqKSAmcGhiYS0+c2xpbTJwLT5JT0NCc1tpb2NiQ250XTsKKwkJcHJpbmctPmNtZHJpbmdhZGRyID0gKHZvaWQgKikmcGhiYS0+SU9DQnNbaW9jYkNudF07CiAJCXBjYnAtPnJkc2NbaV0uY21kRW50cmllcyA9IHByaW5nLT5udW1DaW9jYjsKIAotCQlvZmZzZXQgPSAodWludDhfdCAqKSAmcGhiYS0+c2xpbTJwLT5JT0NCc1tpb2NiQ250XSAtCi0JCQkgKHVpbnQ4X3QgKikgcGhiYS0+c2xpbTJwOwotCQlwZG1hX2FkZHIgPSBwaGJhLT5zbGltMnBfbWFwcGluZyArIG9mZnNldDsKKwkJb2Zmc2V0ID0gKHVpbnQ4X3QgKikgJnBoYmEtPklPQ0JzW2lvY2JDbnRdIC0KKwkJCSAodWludDhfdCAqKSBwaGJhLT5zbGltMnAudmlydDsKKwkJcGRtYV9hZGRyID0gcGhiYS0+c2xpbTJwLnBoeXMgKyBvZmZzZXQ7CiAJCXBjYnAtPnJkc2NbaV0uY21kQWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGRtYV9hZGRyKTsKIAkJcGNicC0+cmRzY1tpXS5jbWRBZGRyTG93ID0gcHV0UGFkZHJMb3cocGRtYV9hZGRyKTsKIAkJaW9jYkNudCArPSBwcmluZy0+bnVtQ2lvY2I7CiAKIAkJLyogUmVzcG9uc2UgcmluZyBzZXR1cCBmb3IgcmluZyAqLwotCQlwcmluZy0+cnNwcmluZ2FkZHIgPSAodm9pZCAqKSAmcGhiYS0+c2xpbTJwLT5JT0NCc1tpb2NiQ250XTsKKwkJcHJpbmctPnJzcHJpbmdhZGRyID0gKHZvaWQgKikgJnBoYmEtPklPQ0JzW2lvY2JDbnRdOwogCiAJCXBjYnAtPnJkc2NbaV0ucnNwRW50cmllcyA9IHByaW5nLT5udW1SaW9jYjsKLQkJb2Zmc2V0ID0gKHVpbnQ4X3QgKikmcGhiYS0+c2xpbTJwLT5JT0NCc1tpb2NiQ250XSAtCi0JCQkgKHVpbnQ4X3QgKilwaGJhLT5zbGltMnA7Ci0JCXBkbWFfYWRkciA9IHBoYmEtPnNsaW0ycF9tYXBwaW5nICsgb2Zmc2V0OworCQlvZmZzZXQgPSAodWludDhfdCAqKSZwaGJhLT5JT0NCc1tpb2NiQ250XSAtCisJCQkgKHVpbnQ4X3QgKilwaGJhLT5zbGltMnAudmlydDsKKwkJcGRtYV9hZGRyID0gcGhiYS0+c2xpbTJwLnBoeXMgKyBvZmZzZXQ7CiAJCXBjYnAtPnJkc2NbaV0ucnNwQWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGRtYV9hZGRyKTsKIAkJcGNicC0+cmRzY1tpXS5yc3BBZGRyTG93ID0gcHV0UGFkZHJMb3cocGRtYV9hZGRyKTsKIAkJaW9jYkNudCArPSBwcmluZy0+bnVtUmlvY2I7CiAJfQogfQogCisvKioKKyAqIGxwZmNfcmVhZF9yZXY6IFByZXBhcmUgYSBtYWlsYm94IGNvbW1hbmQgZm9yIHJlYWRpbmcgSEJBIHJldmlzaW9uLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcG1iOiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFRoZSByZWFkIHJldmlzaW9uIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIHJlYWQgdGhlIHJldmlzaW9uIGxldmVscyBvZgorICogdGhlIEhCQSBjb21wb25lbnRzLiBUaGVzZSBjb21wb25lbnRzIGluY2x1ZGUgaGFyZHdhcmUgdW5pdHMsIHJlc2lkZW50CisgKiBmaXJtd2FyZSwgYW5kIGF2YWlsYWJsZSBmaXJtd2FyZS4gSEJBcyB0aGF0IHN1cHBvcnRzIFNMSS0zIG1vZGUgb2YKKyAqIG9wZXJhdGlvbiBwcm92aWRlIGRpZmZlcmVudCByZXNwb25zZSBpbmZvcm1hdGlvbiBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24KKyAqIHJlcXVlc3RlZCBieSB0aGUgZHJpdmVyLgorICoKKyAqIFRoaXMgcm91dGluZSBwcmVwYXJlcyB0aGUgbWFpbGJveCBjb21tYW5kIGZvciByZWFkaW5nIEhCQSByZXZpc2lvbgorICogaW5mb3JtYXRpb24uCisgKiovCiB2b2lkCiBscGZjX3JlYWRfcmV2KHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIHBtYikKIHsKQEAgLTU0OCw2ICs4MjgsMTYgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19idWlsZF9oYnFfcHJvZmlsZTI6IFNldCB1cCB0aGUgSEJRIFNlbGVjdGlvbiBQcm9maWxlIDIuCisgKiBAaGJxbWI6IHBvaW50ZXIgdG8gdGhlIEhCUSBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlIGluIG1haWxib3ggY29tbWFuZC4KKyAqIEBoYnFfZGVzYzogcG9pbnRlciB0byB0aGUgSEJRIHNlbGVjdGlvbiBwcm9maWxlIGRlc2NyaXB0b3IuCisgKgorICogVGhlIEhvc3QgQnVmZmVyIFF1ZXVlIChIQlEpIFNlbGVjdGlvbiBQcm9maWxlIDIgc3BlY2lmaWVzIHRoYXQgdGhlIEhCQQorICogdGVzdHMgdGhlIGluY29taW5nIGZyYW1lcycgUl9DVEwvVFlQRSBmaWVsZHMgd2l0aCB3b3JrcyAxMDoxNSBhbmQgcGVyZm9ybXMKKyAqIHRoZSBTZXF1ZW5jZSBMZW5ndGggVGVzdCB1c2luZyB0aGUgZmllbGRzIGluIHRoZSBTZWxlY3Rpb24gUHJvZmlsZSAyCisgKiBleHRlbnNpb24gaW4gd29yZHMgMjA6MzEuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19idWlsZF9oYnFfcHJvZmlsZTIoc3RydWN0IGNvbmZpZ19oYnFfdmFyICpoYnFtYiwKIAkJCXN0cnVjdCBscGZjX2hicV9pbml0ICAqaGJxX2Rlc2MpCkBAIC01NTcsNiArODQ3LDE2IEBACiAJaGJxbWItPnByb2ZpbGVzLnByb2ZpbGUyLnNlcWxlbm9mZiAgPSBoYnFfZGVzYy0+c2VxbGVub2ZmOwogfQogCisvKioKKyAqIGxwZmNfYnVpbGRfaGJxX3Byb2ZpbGUzOiBTZXQgdXAgdGhlIEhCUSBTZWxlY3Rpb24gUHJvZmlsZSAzLgorICogQGhicW1iOiBwb2ludGVyIHRvIHRoZSBIQlEgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSBpbiBtYWlsYm94IGNvbW1hbmQuCisgKiBAaGJxX2Rlc2M6IHBvaW50ZXIgdG8gdGhlIEhCUSBzZWxlY3Rpb24gcHJvZmlsZSBkZXNjcmlwdG9yLgorICoKKyAqIFRoZSBIb3N0IEJ1ZmZlciBRdWV1ZSAoSEJRKSBTZWxlY3Rpb24gUHJvZmlsZSAzIHNwZWNpZmllcyB0aGF0IHRoZSBIQkEKKyAqIHRlc3RzIHRoZSBpbmNvbWluZyBmcmFtZSdzIFJfQ1RML1RZUEUgZmllbGRzIHdpdGggd29yZHMgMTA6MTUgYW5kIHBlcmZvcm1zCisgKiB0aGUgU2VxdWVuY2UgTGVuZ3RoIFRlc3QgYW5kIEJ5dGUgRmllbGQgVGVzdCB1c2luZyB0aGUgZmllbGRzIGluIHRoZQorICogU2VsZWN0aW9uIFByb2ZpbGUgMyBleHRlbnNpb24gaW4gd29yZHMgMjA6MzEuCisgKiovCiBzdGF0aWMgdm9pZAogbHBmY19idWlsZF9oYnFfcHJvZmlsZTMoc3RydWN0IGNvbmZpZ19oYnFfdmFyICpoYnFtYiwKIAkJCXN0cnVjdCBscGZjX2hicV9pbml0ICAqaGJxX2Rlc2MpCkBAIC01NjksNiArODY5LDE3IEBACiAJICAgICAgIHNpemVvZihoYnFtYi0+cHJvZmlsZXMucHJvZmlsZTMuY21kbWF0Y2gpKTsKIH0KIAorLyoqCisgKiBscGZjX2J1aWxkX2hicV9wcm9maWxlNTogU2V0IHVwIHRoZSBIQlEgU2VsZWN0aW9uIFByb2ZpbGUgNS4KKyAqIEBoYnFtYjogcG9pbnRlciB0byB0aGUgSEJRIGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUgaW4gbWFpbGJveCBjb21tYW5kLgorICogQGhicV9kZXNjOiBwb2ludGVyIHRvIHRoZSBIQlEgc2VsZWN0aW9uIHByb2ZpbGUgZGVzY3JpcHRvci4KKyAqCisgKiBUaGUgSG9zdCBCdWZmZXIgUXVldWUgKEhCUSkgU2VsZWN0aW9uIFByb2ZpbGUgNSBzcGVjaWZpZXMgYSBoZWFkZXIgSEJRLiBUaGUKKyAqIEhCQSB0ZXN0cyB0aGUgaW5pdGlhbCBmcmFtZSBvZiBhbiBpbmNvbWluZyBzZXF1ZW5jZSB1c2luZyB0aGUgZnJhbWUncworICogUl9DVEwvVFlQRSBmaWVsZHMgd2l0aCB3b3JkcyAxMDoxNSBhbmQgcGVyZm9ybXMgdGhlIFNlcXVlbmNlIExlbmd0aCBUZXN0CisgKiBhbmQgQnl0ZSBGaWVsZCBUZXN0IHVzaW5nIHRoZSBmaWVsZHMgaW4gdGhlIFNlbGVjdGlvbiBQcm9maWxlIDUgZXh0ZW5zaW9uCisgKiB3b3JkcyAyMDozMS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX2J1aWxkX2hicV9wcm9maWxlNShzdHJ1Y3QgY29uZmlnX2hicV92YXIgKmhicW1iLAogCQkJc3RydWN0IGxwZmNfaGJxX2luaXQgICpoYnFfZGVzYykKQEAgLTU4MSw2ICs4OTIsMjAgQEAKIAkgICAgICAgc2l6ZW9mKGhicW1iLT5wcm9maWxlcy5wcm9maWxlNS5jbWRtYXRjaCkpOwogfQogCisvKioKKyAqIGxwZmNfY29uZmlnX2hicTogUHJlcGFyZSBhIG1haWxib3ggY29tbWFuZCBmb3IgY29uZmlndXJpbmcgYW4gSEJRLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAaWQ6IEhCUSBpZGVudGlmaWVyLgorICogQGhicV9kZXNjOiBwb2ludGVyIHRvIHRoZSBIQkEgZGVzY3JpcHRvciBkYXRhIHN0cnVjdHVyZS4KKyAqIEBoYnFfZW50cnlfaW5kZXg6IGluZGV4IG9mIHRoZSBIQlEgZW50cnkgZGF0YSBzdHJ1Y3R1cmVzLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgY29uZmlndXJlIEhCUSAoSG9zdCBCdWZmZXIgUXVldWUpIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIGNvbmZpZ3VyZQorICogYW4gSEJRLiBUaGUgY29uZmlndXJhdGlvbiBiaW5kcyBldmVudHMgdGhhdCByZXF1aXJlIGJ1ZmZlcnMgdG8gYSBwYXJ0aWN1bGFyCisgKiByaW5nIGFuZCBIQlEgYmFzZWQgb24gYSBzZWxlY3Rpb24gcHJvZmlsZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgY29uZmlndXJpbmcgYW4gSEJRLgorICoqLwogdm9pZAogbHBmY19jb25maWdfaGJxKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgaWQsCiAJCSBzdHJ1Y3QgbHBmY19oYnFfaW5pdCAqaGJxX2Rlc2MsCkBAIC02NDEsOCArOTY2LDIzIEBACiAJcmV0dXJuOwogfQogCi0KLQorLyoqCisgKiBscGZjX2NvbmZpZ19yaW5nOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciBjb25maWd1cmluZyBhbiBJT0NCIHJpbmcuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEByaW5nOgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgY29uZmlndXJlIHJpbmcgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gY29uZmlndXJlIGFuIElPQ0IgcmluZy4gVGhpcworICogY29uZmlndXJhdGlvbiBiaW5kcyBmcm9tIG9uZSB0byBzaXggb2YgSEJBIFJDX0NUTC9UWVBFIG1hc2sgZW50cmllcyB0byB0aGUKKyAqIHJpbmcuIFRoaXMgaXMgdXNlZCB0byBtYXAgaW5jb21pbmcgc2VxdWVuY2VzIHRvIGEgcGFydGljdWxhciByaW5nIHdob3NlCisgKiBSQ19DVEwvVFlQRSBtYXNrIGVudHJ5IG1hdGNoZXMgdGhhdCBvZiB0aGUgc2VxdWVuY2UuIFRoZSBkcml2ZXIgc2hvdWxkIG5vdAorICogYXR0ZW1wdCB0byBjb25maWd1cmUgYSByaW5nIHdob3NlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlcgorICogc3BlY2lmaWVkIGluIHRoZSBQb3J0IENvbnRyb2wgQmxvY2sgKFBDQikuIEl0IGlzIGFuIGVycm9yIHRvIGlzc3VlIHRoZQorICogY29uZmlndXJlIHJpbmcgY29tbWFuZCBtb3JlIHRoYW4gb25jZSB3aXRoIHRoZSBzYW1lIHJpbmcgbnVtYmVyLiBUaGUgSEJBCisgKiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdGhpcy4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgY29uZmlndXJpbmcgSU9DQiByaW5nLgorICoqLwogdm9pZAogbHBmY19jb25maWdfcmluZyhzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLCBpbnQgcmluZywgTFBGQ19NQk9YUV90ICogcG1iKQogewpAQCAtNjg0LDYgKzEwMjQsMjAgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19jb25maWdfcG9ydDogUHJlcGFyZSBhIG1haWxib3ggY29tbWFuZCBmb3IgY29uZmlndXJpbmcgcG9ydC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQHBtYjogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGUgY29uZmlndXJlIHBvcnQgbWFpbGJveCBjb21tYW5kIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFBvcnQgQ29udHJvbAorICogQmxvY2sgKFBDQikgaW4gdGhlIGRyaXZlciBtZW1vcnkuIEFmdGVyIHRoaXMgY29tbWFuZCBpcyBpc3N1ZWQsIHRoZQorICogZHJpdmVyIG11c3Qgbm90IGFjY2VzcyB0aGUgbWFpbGJveCBpbiB0aGUgSEJBIHdpdGhvdXQgZmlyc3QgcmVzZXR0aW5nCisgKiB0aGUgSEJBLiBUaGUgSEJBIG1heSBjb3B5IHRoZSBQQ0IgaW5mb3JtYXRpb24gdG8gaW50ZXJuYWwgc3RvcmFnZSBmb3IKKyAqIHN1YnNlcXVlbnQgdXNlOyB0aGUgZHJpdmVyIGNhbiBub3QgY2hhbmdlIHRoZSBQQ0IgaW5mb3JtYXRpb24gdW5sZXNzIGl0CisgKiByZXNldHMgdGhlIEhCQS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHJlcGFyZXMgdGhlIG1haWxib3ggY29tbWFuZCBmb3IgY29uZmlndXJpbmcgcG9ydC4KKyAqKi8KIHZvaWQKIGxwZmNfY29uZmlnX3BvcnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBMUEZDX01CT1hRX3QgKnBtYikKIHsKQEAgLTcwMiw4ICsxMDU2LDggQEAKIAogCW1iLT51bi52YXJDZmdQb3J0LnBjYkxlbiA9IHNpemVvZihQQ0JfdCk7CiAKLQlvZmZzZXQgPSAodWludDhfdCAqKSZwaGJhLT5zbGltMnAtPnBjYiAtICh1aW50OF90ICopcGhiYS0+c2xpbTJwOwotCXBkbWFfYWRkciA9IHBoYmEtPnNsaW0ycF9tYXBwaW5nICsgb2Zmc2V0OworCW9mZnNldCA9ICh1aW50OF90ICopcGhiYS0+cGNiIC0gKHVpbnQ4X3QgKilwaGJhLT5zbGltMnAudmlydDsKKwlwZG1hX2FkZHIgPSBwaGJhLT5zbGltMnAucGh5cyArIG9mZnNldDsKIAltYi0+dW4udmFyQ2ZnUG9ydC5wY2JMb3cgPSBwdXRQYWRkckxvdyhwZG1hX2FkZHIpOwogCW1iLT51bi52YXJDZmdQb3J0LnBjYkhpZ2ggPSBwdXRQYWRkckhpZ2gocGRtYV9hZGRyKTsKIApAQCAtNzExLDEyICsxMDY1LDEzIEBACiAKIAlpZiAocGhiYS0+c2xpX3JldiA9PSAzICYmIHBoYmEtPnZwZC5zbGkzRmVhdC5jZXJibSkgewogCQltYi0+dW4udmFyQ2ZnUG9ydC5jZXJibSA9IDE7IC8qIFJlcXVlc3QgSEJRcyAqLworCQltYi0+dW4udmFyQ2ZnUG9ydC5jY3JwID0gMTsgLyogQ29tbWFuZCBSaW5nIFBvbGxpbmcgKi8KKwkJbWItPnVuLnZhckNmZ1BvcnQuY2luYiA9IDE7IC8qIEludGVycnVwdCBOb3RpZmljYXRpb24gQmxvY2sgKi8KIAkJbWItPnVuLnZhckNmZ1BvcnQubWF4X2hicSA9IGxwZmNfc2xpX2hicV9jb3VudCgpOwogCQlpZiAocGhiYS0+bWF4X3ZwaSAmJiBwaGJhLT5jZmdfZW5hYmxlX25waXYgJiYKIAkJICAgIHBoYmEtPnZwZC5zbGkzRmVhdC5jbXYpIHsKIAkJCW1iLT51bi52YXJDZmdQb3J0Lm1heF92cGkgPSBwaGJhLT5tYXhfdnBpOwogCQkJbWItPnVuLnZhckNmZ1BvcnQuY212ID0gMTsKLQkJCXBoYmEtPnNsaTNfb3B0aW9ucyB8PSBMUEZDX1NMSTNfTlBJVl9FTkFCTEVEOwogCQl9IGVsc2UKIAkJCW1iLT51bi52YXJDZmdQb3J0Lm1heF92cGkgPSBwaGJhLT5tYXhfdnBpID0gMDsKIAl9IGVsc2UKQEAgLTcyNCwxNiArMTA3OSwxNSBAQAogCW1iLT51bi52YXJDZmdQb3J0LnNsaV9tb2RlID0gcGhiYS0+c2xpX3JldjsKIAogCS8qIE5vdyBzZXR1cCBwY2IgKi8KLQlwaGJhLT5zbGltMnAtPnBjYi50eXBlID0gVFlQRV9OQVRJVkVfU0xJMjsKLQlwaGJhLT5zbGltMnAtPnBjYi5mZWF0dXJlID0gRkVBVFVSRV9JTklUSUFMX1NMSTI7CisJcGhiYS0+cGNiLT50eXBlID0gVFlQRV9OQVRJVkVfU0xJMjsKKwlwaGJhLT5wY2ItPmZlYXR1cmUgPSBGRUFUVVJFX0lOSVRJQUxfU0xJMjsKIAogCS8qIFNldHVwIE1haWxib3ggcG9pbnRlcnMgKi8KLQlwaGJhLT5zbGltMnAtPnBjYi5tYWlsQm94U2l6ZSA9IG9mZnNldG9mKE1BSUxCT1hfdCwgdXMpICsKLQkJc2l6ZW9mKHN0cnVjdCBzbGkyX2Rlc2MpOwotCW9mZnNldCA9ICh1aW50OF90ICopJnBoYmEtPnNsaW0ycC0+bWJ4IC0gKHVpbnQ4X3QgKilwaGJhLT5zbGltMnA7Ci0JcGRtYV9hZGRyID0gcGhiYS0+c2xpbTJwX21hcHBpbmcgKyBvZmZzZXQ7Ci0JcGhiYS0+c2xpbTJwLT5wY2IubWJBZGRySGlnaCA9IHB1dFBhZGRySGlnaChwZG1hX2FkZHIpOwotCXBoYmEtPnNsaW0ycC0+cGNiLm1iQWRkckxvdyA9IHB1dFBhZGRyTG93KHBkbWFfYWRkcik7CisJcGhiYS0+cGNiLT5tYWlsQm94U2l6ZSA9IHNpemVvZihNQUlMQk9YX3QpOworCW9mZnNldCA9ICh1aW50OF90ICopcGhiYS0+bWJveCAtICh1aW50OF90ICopcGhiYS0+c2xpbTJwLnZpcnQ7CisJcGRtYV9hZGRyID0gcGhiYS0+c2xpbTJwLnBoeXMgKyBvZmZzZXQ7CisJcGhiYS0+cGNiLT5tYkFkZHJIaWdoID0gcHV0UGFkZHJIaWdoKHBkbWFfYWRkcik7CisJcGhiYS0+cGNiLT5tYkFkZHJMb3cgPSBwdXRQYWRkckxvdyhwZG1hX2FkZHIpOwogCiAJLyoKIAkgKiBTZXR1cCBIb3N0IEdyb3VwIHJpbmcgcG9pbnRlci4KQEAgLTc5NCwxMyArMTE0OCwxMyBAQAogCX0KIAogCS8qIG1hc2sgb2ZmIEJBUjAncyBmbGFnIGJpdHMgMCAtIDMgKi8KLQlwaGJhLT5zbGltMnAtPnBjYi5oZ3BBZGRyTG93ID0gKGJhcl9sb3cgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLKSArCi0JCSh2b2lkIF9faW9tZW0gKikgcGhiYS0+aG9zdF9ncCAtCisJcGhiYS0+cGNiLT5oZ3BBZGRyTG93ID0gKGJhcl9sb3cgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLKSArCisJCSh2b2lkIF9faW9tZW0gKilwaGJhLT5ob3N0X2dwIC0KIAkJKHZvaWQgX19pb21lbSAqKXBoYmEtPk1Cc2xpbWFkZHI7CiAJaWYgKGJhcl9sb3cgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KQotCQlwaGJhLT5zbGltMnAtPnBjYi5oZ3BBZGRySGlnaCA9IGJhcl9oaWdoOworCQlwaGJhLT5wY2ItPmhncEFkZHJIaWdoID0gYmFyX2hpZ2g7CiAJZWxzZQotCQlwaGJhLT5zbGltMnAtPnBjYi5oZ3BBZGRySGlnaCA9IDA7CisJCXBoYmEtPnBjYi0+aGdwQWRkckhpZ2ggPSAwOwogCS8qIHdyaXRlIEhHUCBkYXRhIHRvIFNMSU0gYXQgdGhlIHJlcXVpcmVkIGxvbmd3b3JkIG9mZnNldCAqLwogCW1lbXNldCgmaGdwLCAwLCBzaXplb2Yoc3RydWN0IGxwZmNfaGdwKSk7CiAKQEAgLTgxMCwxNyArMTE2NCwxOSBAQAogCX0KIAogCS8qIFNldHVwIFBvcnQgR3JvdXAgcmluZyBwb2ludGVyICovCi0JaWYgKHBoYmEtPnNsaV9yZXYgPT0gMykKLQkJcGdwX29mZnNldCA9ICh1aW50OF90ICopJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMzX3BncC5wb3J0IC0KLQkJCSh1aW50OF90ICopcGhiYS0+c2xpbTJwOwotCWVsc2UKLQkJcGdwX29mZnNldCA9ICh1aW50OF90ICopJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMyLnBvcnQgLQotCQkJKHVpbnQ4X3QgKilwaGJhLT5zbGltMnA7Ci0KLQlwZG1hX2FkZHIgPSBwaGJhLT5zbGltMnBfbWFwcGluZyArIHBncF9vZmZzZXQ7Ci0JcGhiYS0+c2xpbTJwLT5wY2IucGdwQWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGRtYV9hZGRyKTsKLQlwaGJhLT5zbGltMnAtPnBjYi5wZ3BBZGRyTG93ID0gcHV0UGFkZHJMb3cocGRtYV9hZGRyKTsKLQlwaGJhLT5oYnFfZ2V0ID0gJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMzX3BncC5oYnFfZ2V0WzBdOworCWlmIChwaGJhLT5zbGkzX29wdGlvbnMgJiBMUEZDX1NMSTNfSU5CX0VOQUJMRUQpIHsKKwkJcGdwX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBscGZjX3NsaTJfc2xpbSwKKwkJCQkgICAgICBtYngudXMuczNfaW5iX3BncC5wb3J0KTsKKwkJcGhiYS0+aGJxX2dldCA9IHBoYmEtPm1ib3gtPnVzLnMzX2luYl9wZ3AuaGJxX2dldDsKKwl9IGVsc2UgaWYgKHBoYmEtPnNsaV9yZXYgPT0gMykgeworCQlwZ3Bfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGxwZmNfc2xpMl9zbGltLAorCQkJCSAgICAgIG1ieC51cy5zM19wZ3AucG9ydCk7CisJCXBoYmEtPmhicV9nZXQgPSBwaGJhLT5tYm94LT51cy5zM19wZ3AuaGJxX2dldDsKKwl9IGVsc2UKKwkJcGdwX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBscGZjX3NsaTJfc2xpbSwgbWJ4LnVzLnMyLnBvcnQpOworCXBkbWFfYWRkciA9IHBoYmEtPnNsaW0ycC5waHlzICsgcGdwX29mZnNldDsKKwlwaGJhLT5wY2ItPnBncEFkZHJIaWdoID0gcHV0UGFkZHJIaWdoKHBkbWFfYWRkcik7CisJcGhiYS0+cGNiLT5wZ3BBZGRyTG93ID0gcHV0UGFkZHJMb3cocGRtYV9hZGRyKTsKIAogCS8qIFVzZSBjYWxsYmFjayByb3V0aW5lIHRvIHNldHAgcmluZ3MgaW4gdGhlIHBjYiAqLwogCWxwZmNfY29uZmlnX3BjYl9zZXR1cChwaGJhKTsKQEAgLTgzNSwxMCArMTE5MSwyNCBAQAogCX0KIAogCS8qIFN3YXAgUENCIGlmIG5lZWRlZCAqLwotCWxwZmNfc2xpX3BjaW1lbV9iY29weSgmcGhiYS0+c2xpbTJwLT5wY2IsICZwaGJhLT5zbGltMnAtPnBjYiwKLQkJCSAgICAgIHNpemVvZihQQ0JfdCkpOworCWxwZmNfc2xpX3BjaW1lbV9iY29weShwaGJhLT5wY2IsIHBoYmEtPnBjYiwgc2l6ZW9mKFBDQl90KSk7CiB9CiAKKy8qKgorICogbHBmY19raWxsX2JvYXJkOiBQcmVwYXJlIGEgbWFpbGJveCBjb21tYW5kIGZvciBraWxsaW5nIGJvYXJkLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAcG1iOiBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoKKyAqIFRoZSBraWxsIGJvYXJkIG1haWxib3ggY29tbWFuZCBpcyB1c2VkIHRvIHRlbGwgZmlybXdhcmUgdG8gcGVyZm9ybSBhCisgKiBncmFjZWZ1bCBzaHV0ZG93biBvZiBhIGNoYW5uZWwgb24gYSBzcGVjaWZpZWQgYm9hcmQgdG8gcHJlcGFyZSBmb3IgcmVzZXQuCisgKiBXaGVuIHRoZSBraWxsIGJvYXJkIG1haWxib3ggY29tbWFuZCBpcyByZWNlaXZlZCwgdGhlIEVSMyBiaXQgaXMgc2V0IHRvIDEKKyAqIGluIHRoZSBIb3N0IFN0YXR1cyByZWdpc3RlciBhbmQgdGhlIEVSIEF0dGVudGlvbiBiaXQgaXMgc2V0IHRvIDEgaW4gdGhlCisgKiBIb3N0IEF0dGVudGlvbiByZWdpc3RlciBvZiB0aGUgSEJBIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGtpbGwgYm9hcmQKKyAqIGNvbW1hbmQuCisgKgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIHRoZSBtYWlsYm94IGNvbW1hbmQgZm9yIGtpbGxpbmcgdGhlIGJvYXJkIGluCisgKiBwcmVwYXJhdGlvbiBmb3IgYSBncmFjZWZ1bCBzaHV0ZG93bi4KKyAqKi8KIHZvaWQKIGxwZmNfa2lsbF9ib2FyZChzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLCBMUEZDX01CT1hRX3QgKiBwbWIpCiB7CkBAIC04NTAsNiArMTIyMCwxNiBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX21ib3hfcHV0OiBQdXQgYSBtYWlsYm94IGNtZCBpbnRvIHRoZSB0YWlsIG9mIGRyaXZlcidzIG1haWxib3ggcXVldWUuCisgKiBAcGhiYTogcG9pbnRlciB0byBscGZjIGhiYSBkYXRhIHN0cnVjdHVyZS4KKyAqIEBtYnE6IHBvaW50ZXIgdG8gdGhlIGRyaXZlciBpbnRlcm5hbCBxdWV1ZSBlbGVtZW50IGZvciBtYWlsYm94IGNvbW1hbmQuCisgKgorICogRHJpdmVyIG1haW50YWlucyBhIGludGVybmFsIG1haWxib3ggY29tbWFuZCBxdWV1ZSBpbXBsZW1lbnRlZCBhcyBhIGxpbmtlZAorICogbGlzdC4gV2hlbiBhIG1haWxib3ggY29tbWFuZCBpcyBpc3N1ZWQsIGl0IHNoYWxsIGJlIHB1dCBpbnRvIHRoZSBtYWlsYm94CisgKiBjb21tYW5kIHF1ZXVlIHN1Y2ggdGhhdCB0aGV5IHNoYWxsIGJlIHByb2Nlc3NlZCBvcmRlcmx5IGFzIEhCQSBjYW4gcHJvY2VzcworICogb25lIG1haWxib3ggY29tbWFuZCBhdCBhIHRpbWUuCisgKiovCiB2b2lkCiBscGZjX21ib3hfcHV0KHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIExQRkNfTUJPWFFfdCAqIG1icSkKIHsKQEAgLTg2NCw2ICsxMjQ0LDIwIEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfbWJveF9nZXQ6IFJlbW92ZSBhIG1haWxib3ggY21kIGZyb20gdGhlIGhlYWQgb2YgZHJpdmVyJ3MgbWFpbGJveCBxdWV1ZS4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICoKKyAqIERyaXZlciBtYWludGFpbnMgYSBpbnRlcm5hbCBtYWlsYm94IGNvbW1hbmQgcXVldWUgaW1wbGVtZW50ZWQgYXMgYSBsaW5rZWQKKyAqIGxpc3QuIFdoZW4gYSBtYWlsYm94IGNvbW1hbmQgaXMgaXNzdWVkLCBpdCBzaGFsbCBiZSBwdXQgaW50byB0aGUgbWFpbGJveAorICogY29tbWFuZCBxdWV1ZSBzdWNoIHRoYXQgdGhleSBzaGFsbCBiZSBwcm9jZXNzZWQgb3JkZXJseSBhcyBIQkEgY2FuIHByb2Nlc3MKKyAqIG9uZSBtYWlsYm94IGNvbW1hbmQgYXQgYSB0aW1lLiBBZnRlciBIQkEgZmluaXNoZWQgcHJvY2Vzc2luZyBhIG1haWxib3gKKyAqIGNvbW1hbmQsIHRoZSBkcml2ZXIgd2lsbCByZW1vdmUgYSBwZW5kaW5nIG1haWxib3ggY29tbWFuZCBmcm9tIHRoZSBoZWFkIG9mCisgKiB0aGUgbWFpbGJveCBjb21tYW5kIHF1ZXVlIGFuZCBzZW5kIHRvIHRoZSBIQkEgZm9yIHByb2Nlc3NpbmcuCisgKgorICogUmV0dXJuIGNvZGVzCisgKiAgICBwb2ludGVyIHRvIHRoZSBkcml2ZXIgaW50ZXJuYWwgcXVldWUgZWxlbWVudCBmb3IgbWFpbGJveCBjb21tYW5kLgorICoqLwogTFBGQ19NQk9YUV90ICoKIGxwZmNfbWJveF9nZXQoc3RydWN0IGxwZmNfaGJhICogcGhiYSkKIHsKQEAgLTg3Nyw2ICsxMjcxLDE3IEBACiAJcmV0dXJuIG1icTsKIH0KIAorLyoqCisgKiBscGZjX21ib3hfY21wbF9wdXQ6IFB1dCBtYWlsYm94IGNvbW1hbmQgaW50byBtYWlsYm94IGNvbW1hbmQgY29tcGxldGUgbGlzdC4KKyAqIEBwaGJhOiBwb2ludGVyIHRvIGxwZmMgaGJhIGRhdGEgc3RydWN0dXJlLgorICogQG1icTogcG9pbnRlciB0byB0aGUgZHJpdmVyIGludGVybmFsIHF1ZXVlIGVsZW1lbnQgZm9yIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcHV0IHRoZSBjb21wbGV0ZWQgbWFpbGJveCBjb21tYW5kIGludG8gdGhlIG1haWxib3ggY29tbWFuZAorICogY29tcGxldGUgbGlzdC4gVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBmcm9tIGRyaXZlciBpbnRlcnJ1cHQgaGFuZGxlcgorICogY29udGV4dC5UaGUgbWFpbGJveCBjb21wbGV0ZSBsaXN0IGlzIHVzZWQgYnkgdGhlIGRyaXZlciB3b3JrZXIgdGhyZWFkCisgKiB0byBwcm9jZXNzIG1haWxib3ggY29tcGxldGUgY2FsbGJhY2sgZnVuY3Rpb25zIG91dHNpZGUgdGhlIGRyaXZlciBpbnRlcnJ1cHQKKyAqIGhhbmRsZXIuCisgKiovCiB2b2lkCiBscGZjX21ib3hfY21wbF9wdXQoc3RydWN0IGxwZmNfaGJhICogcGhiYSwgTFBGQ19NQk9YUV90ICogbWJxKQogewpAQCAtODg3LDYgKzEyOTIsMTcgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19tYm94X3Rtb192YWw6IFJldHJpZXZlIG1haWxib3ggY29tbWFuZCB0aW1lb3V0IHZhbHVlLgorICogQHBoYmE6IHBvaW50ZXIgdG8gbHBmYyBoYmEgZGF0YSBzdHJ1Y3R1cmUuCisgKiBAY21kOiBtYWlsYm94IGNvbW1hbmQgY29kZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgcmV0cmlldmVzIHRoZSBwcm9wZXIgdGltZW91dCB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIG1haWxib3gKKyAqIGNvbW1hbmQgY29kZS4KKyAqCisgKiBSZXR1cm4gY29kZXMKKyAqICAgIFRpbWVvdXQgdmFsdWUgdG8gYmUgdXNlZCBmb3IgdGhlIGdpdmVuIG1haWxib3ggY29tbWFuZAorICoqLwogaW50CiBscGZjX21ib3hfdG1vX3ZhbChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIGludCBjbWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21lbS5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tZW0uYwppbmRleCAzYzBjZWJjLi5hNGJiYTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21lbS5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbWVtLmMKQEAgLTEsNyArMSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEVtdWxleCBMaW51eCBEZXZpY2UgRHJpdmVyIGZvciAgICAgICAgICoKICAqIEZpYnJlIENoYW5uZWwgSG9zdCBCdXMgQWRhcHRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBFbXVsZXguICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDggRW11bGV4LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAgICAgICoKICAqIEVNVUxFWCBhbmQgU0xJIGFyZSB0cmFkZW1hcmtzIG9mIEVtdWxleC4gICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiB3d3cuZW11bGV4LmNvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUgQ2hyaXN0b3BoIEhlbGx3aWcgICAgICAgICAgICAgICoKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgImxwZmNfaHcuaCIKICNpbmNsdWRlICJscGZjX3NsaS5oIgorI2luY2x1ZGUgImxwZmNfbmwuaCIKICNpbmNsdWRlICJscGZjX2Rpc2MuaCIKICNpbmNsdWRlICJscGZjX3Njc2kuaCIKICNpbmNsdWRlICJscGZjLmgiCkBAIC0zOSw3ICs0MCwyMSBAQAogI2RlZmluZSBMUEZDX01FTV9QT09MX1NJWkUgICAgICA2NCAgICAgIC8qIG1heCBlbGVtIGluIG5vbi1ETUEgc2FmZXR5IHBvb2wgKi8KIAogCi0KKy8qKgorICogbHBmY19tZW1fYWxsb2M6IGNyZWF0ZSBhbmQgYWxsb2NhdGUgYWxsIFBDSSBhbmQgbWVtb3J5IHBvb2xzCisgKiBAcGhiYTogSEJBIHRvIGFsbG9jYXRlIHBvb2xzIGZvcgorICoKKyAqIERlc2NyaXB0aW9uOiBDcmVhdGVzIGFuZCBhbGxvY2F0ZXMgUENJIHBvb2xzIGxwZmNfc2NzaV9kbWFfYnVmX3Bvb2wsCisgKiBscGZjX21idWZfcG9vbCwgbHBmY19oYnFfcG9vbC4gIENyZWF0ZXMgYW5kIGFsbG9jYXRlcyBrbWFsbG9jLWJhY2tlZCBtZW1wb29scworICogZm9yIExQRkNfTUJPWFFfdCBhbmQgbHBmY19ub2RlbGlzdC4gIEFsc28gYWxsb2NhdGVzIHRoZSBWUEkgYml0bWFzay4KKyAqCisgKiBOb3RlczogTm90IGludGVycnVwdC1zYWZlLiAgTXVzdCBiZSBjYWxsZWQgd2l0aCBubyBsb2NrcyBoZWxkLiAgSWYgYW55CisgKiBhbGxvY2F0aW9uIGZhaWxzLCBmcmVlcyBhbGwgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBtZW1vcnkgYmVmb3JlIHJldHVybmluZy4KKyAqCisgKiBSZXR1cm5zOgorICogICAwIG9uIHN1Y2Nlc3MKKyAqICAgLUVOT01FTSBvbiBmYWlsdXJlIChpZiBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIGZhaWwpCisgKiovCiBpbnQKIGxwZmNfbWVtX2FsbG9jKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEpCiB7CkBAIC0xMjAsNiArMTM1LDE2IEBACiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKKy8qKgorICogbHBmY19tZW1fZnJlZTogRnJlZXMgYWxsIFBDSSBhbmQgbWVtb3J5IGFsbG9jYXRlZCBieSBscGZjX21lbV9hbGxvYworICogQHBoYmE6IEhCQSB0byBmcmVlIG1lbW9yeSBmb3IKKyAqCisgKiBEZXNjcmlwdGlvbjogRnJlZXMgUENJIHBvb2xzIGxwZmNfc2NzaV9kbWFfYnVmX3Bvb2wsIGxwZmNfbWJ1Zl9wb29sLAorICogbHBmY19oYnFfcG9vbC4gIEZyZWVzIGttYWxsb2MtYmFja2VkIG1lbXBvb2xzIGZvciBMUEZDX01CT1hRX3QgYW5kCisgKiBscGZjX25vZGVsaXN0LiAgQWxzbyBmcmVlcyB0aGUgVlBJIGJpdG1hc2suCisgKgorICogUmV0dXJuczogTm9uZQorICoqLwogdm9pZAogbHBmY19tZW1fZnJlZShzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhKQogewpAQCAtMTgxLDEyICsyMDYsMjkgQEAKIAlwaGJhLT5scGZjX3Njc2lfZG1hX2J1Zl9wb29sID0gTlVMTDsKIAlwaGJhLT5scGZjX21idWZfcG9vbCA9IE5VTEw7CiAKLQkJCQkvKiBGcmVlIHRoZSBpb2NiIGxvb2t1cCBhcnJheSAqLworCS8qIEZyZWUgdGhlIGlvY2IgbG9va3VwIGFycmF5ICovCiAJa2ZyZWUocHNsaS0+aW9jYnFfbG9va3VwKTsKIAlwc2xpLT5pb2NicV9sb29rdXAgPSBOVUxMOwotCiB9CiAKKy8qKgorICogbHBmY19tYnVmX2FsbG9jOiBBbGxvY2F0ZSBhbiBtYnVmIGZyb20gdGhlIGxwZmNfbWJ1Zl9wb29sIFBDSSBwb29sCisgKiBAcGhiYTogSEJBIHdoaWNoIG93bnMgdGhlIHBvb2wgdG8gYWxsb2NhdGUgZnJvbQorICogQG1lbV9mbGFnczogaW5kaWNhdGVzIGlmIHRoaXMgaXMgYSBwcmlvcml0eSAoTUVNX1BSSSkgYWxsb2NhdGlvbgorICogQGhhbmRsZTogdXNlZCB0byByZXR1cm4gdGhlIERNQS1tYXBwZWQgYWRkcmVzcyBvZiB0aGUgbWJ1ZgorICoKKyAqIERlc2NyaXB0aW9uOiBBbGxvY2F0ZXMgYSBETUEtbWFwcGVkIGJ1ZmZlciBmcm9tIHRoZSBscGZjX21idWZfcG9vbCBQQ0kgcG9vbC4KKyAqIEFsbG9jYXRlcyBmcm9tIGdlbmVyaWMgcGNpX3Bvb2xfYWxsb2MgZnVuY3Rpb24gZmlyc3QgYW5kIGlmIHRoYXQgZmFpbHMgYW5kCisgKiBtZW1fZmxhZ3MgaGFzIE1FTV9QUkkgc2V0ICh0aGUgb25seSBkZWZpbmVkIGZsYWcpLCByZXR1cm5zIGFuIG1idWYgZnJvbSB0aGUKKyAqIEhCQSdzIHBvb2wuCisgKgorICogTm90ZXM6IE5vdCBpbnRlcnJ1cHQtc2FmZS4gIE11c3QgYmUgY2FsbGVkIHdpdGggbm8gbG9ja3MgaGVsZC4gIFRha2VzCisgKiBwaGJhLT5oYmFsb2NrLgorICoKKyAqIFJldHVybnM6CisgKiAgIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBtYnVmIG9uIHN1Y2Nlc3MKKyAqICAgTlVMTCBvbiBmYWlsdXJlCisgKiovCiB2b2lkICoKIGxwZmNfbWJ1Zl9hbGxvYyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIGludCBtZW1fZmxhZ3MsIGRtYV9hZGRyX3QgKmhhbmRsZSkKIHsKQEAgLTIwNiw2ICsyNDgsMjAgQEAKIAlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIF9fbHBmY19tZW1fZnJlZTogRnJlZSBhbiBtYnVmIGZyb20gdGhlIGxwZmNfbWJ1Zl9wb29sIFBDSSBwb29sIChsb2NrZWQpCisgKiBAcGhiYTogSEJBIHdoaWNoIG93bnMgdGhlIHBvb2wgdG8gcmV0dXJuIHRvCisgKiBAdmlydDogbWJ1ZiB0byBmcmVlCisgKiBAZG1hOiB0aGUgRE1BLW1hcHBlZCBhZGRyZXNzIG9mIHRoZSBscGZjX21idWZfcG9vbCB0byBiZSBmcmVlZAorICoKKyAqIERlc2NyaXB0aW9uOiBSZXR1cm5zIGFuIG1idWYgbHBmY19tYnVmX3Bvb2wgdG8gdGhlIGxwZmNfbWJ1Zl9zYWZldHlfcG9vbCBpZgorICogaXQgaXMgYmVsb3cgaXRzIG1heF9jb3VudCwgZnJlZXMgdGhlIG1idWYgb3RoZXJ3aXNlLgorICoKKyAqIE5vdGVzOiBNdXN0IGJlIGNhbGxlZCB3aXRoIHBoYmEtPmhiYWxvY2sgaGVsZCB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8KKyAqIGxwZmNfbWJ1Zl9zYWZldHlfcG9vbC4KKyAqCisgKiBSZXR1cm5zOiBOb25lCisgKiovCiB2b2lkCiBfX2xwZmNfbWJ1Zl9mcmVlKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIHZvaWQgKnZpcnQsIGRtYV9hZGRyX3QgZG1hKQogewpAQCAtMjIxLDcgKzI3NywyMSBAQAogCXJldHVybjsKIH0KIAorLyoqCisgKiBscGZjX21lbV9mcmVlOiBGcmVlIGFuIG1idWYgZnJvbSB0aGUgbHBmY19tYnVmX3Bvb2wgUENJIHBvb2wgKHVubG9ja2VkKQorICogQHBoYmE6IEhCQSB3aGljaCBvd25zIHRoZSBwb29sIHRvIHJldHVybiB0bworICogQHZpcnQ6IG1idWYgdG8gZnJlZQorICogQGRtYTogdGhlIERNQS1tYXBwZWQgYWRkcmVzcyBvZiB0aGUgbHBmY19tYnVmX3Bvb2wgdG8gYmUgZnJlZWQKKyAqCisgKiBEZXNjcmlwdGlvbjogUmV0dXJucyBhbiBtYnVmIGxwZmNfbWJ1Zl9wb29sIHRvIHRoZSBscGZjX21idWZfc2FmZXR5X3Bvb2wgaWYKKyAqIGl0IGlzIGJlbG93IGl0cyBtYXhfY291bnQsIGZyZWVzIHRoZSBtYnVmIG90aGVyd2lzZS4KKyAqCisgKiBOb3RlczogVGFrZXMgcGhiYS0+aGJhbG9jay4gIENhbiBiZSBjYWxsZWQgd2l0aCBvciB3aXRob3V0IG90aGVyIGxvY2tzIGhlbGQuCisgKgorICogUmV0dXJuczogTm9uZQorICoqLwogdm9pZAorCiBscGZjX21idWZfZnJlZShzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhLCB2b2lkICp2aXJ0LCBkbWFfYWRkcl90IGRtYSkKIHsKIAl1bnNpZ25lZCBsb25nIGlmbGFnczsKQEAgLTIzMiw2ICszMDIsMTkgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19lbHNfaGJxX2FsbG9jOiBBbGxvY2F0ZSBhbiBIQlEgYnVmZmVyCisgKiBAcGhiYTogSEJBIHRvIGFsbG9jYXRlIEhCUSBidWZmZXIgZm9yCisgKgorICogRGVzY3JpcHRpb246IEFsbG9jYXRlcyBhIERNQS1tYXBwZWQgSEJRIGJ1ZmZlciBmcm9tIHRoZSBscGZjX2hicV9wb29sIFBDSQorICogcG9vbCBhbG9uZyBhIG5vbi1ETUEtbWFwcGVkIGNvbnRhaW5lciBmb3IgaXQuCisgKgorICogTm90ZXM6IE5vdCBpbnRlcnJ1cHQtc2FmZS4gIE11c3QgYmUgY2FsbGVkIHdpdGggbm8gbG9ja3MgaGVsZC4KKyAqCisgKiBSZXR1cm5zOgorICogICBwb2ludGVyIHRvIEhCUSBvbiBzdWNjZXNzCisgKiAgIE5VTEwgb24gZmFpbHVyZQorICoqLwogc3RydWN0IGhicV9kbWFidWYgKgogbHBmY19lbHNfaGJxX2FsbG9jKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTI1MSw2ICszMzQsMTggQEAKIAlyZXR1cm4gaGJxYnA7CiB9CiAKKy8qKgorICogbHBmY19tZW1faGJxX2ZyZWU6IEZyZWVzIGFuIEhCUSBidWZmZXIgYWxsb2NhdGVkIHdpdGggbHBmY19lbHNfaGJxX2FsbG9jCisgKiBAcGhiYTogSEJBIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZvcgorICogQGhicWJwOiBIQlEgY29udGFpbmVyIHJldHVybmVkIGJ5IGxwZmNfZWxzX2hicV9hbGxvYworICoKKyAqIERlc2NyaXB0aW9uOiBGcmVlcyBib3RoIHRoZSBjb250YWluZXIgYW5kIHRoZSBETUEtbWFwcGVkIGJ1ZmZlciByZXR1cm5lZCBieQorICogbHBmY19lbHNfaGJxX2FsbG9jLgorICoKKyAqIE5vdGVzOiBDYW4gYmUgY2FsbGVkIHdpdGggb3Igd2l0aG91dCBsb2NrcyBoZWxkLgorICoKKyAqIFJldHVybnM6IE5vbmUKKyAqKi8KIHZvaWQKIGxwZmNfZWxzX2hicV9mcmVlKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGhicV9kbWFidWYgKmhicWJwKQogewpAQCAtMjU5LDcgKzM1NCwxOCBAQAogCXJldHVybjsKIH0KIAotLyogVGhpcyBpcyBPTkxZIGNhbGxlZCBmb3IgdGhlIExQRkNfRUxTX0hCUSAqLworLyoqCisgKiBscGZjX2luX2J1Zl9mcmVlOiBGcmVlIGEgRE1BIGJ1ZmZlcgorICogQHBoYmE6IEhCQSBidWZmZXIgaXMgYXNzb2NpYXRlZCB3aXRoCisgKiBAbXA6IEJ1ZmZlciB0byBmcmVlCisgKgorICogRGVzY3JpcHRpb246IEZyZWVzIHRoZSBnaXZlbiBETUEgYnVmZmVyIGluIHRoZSBhcHByb3ByaWF0ZSB3YXkgZ2l2ZW4gaWYgdGhlCisgKiBIQkEgaXMgcnVubmluZyBpbiBTTEkzIG1vZGUgd2l0aCBIQlFzIGVuYWJsZWQuCisgKgorICogTm90ZXM6IFRha2VzIHBoYmEtPmhiYWxvY2suICBDYW4gYmUgY2FsbGVkIHdpdGggb3Igd2l0aG91dCBvdGhlciBsb2NrcyBoZWxkLgorICoKKyAqIFJldHVybnM6IE5vbmUKKyAqKi8KIHZvaWQKIGxwZmNfaW5fYnVmX2ZyZWUoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19kbWFidWYgKm1wKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhY2NiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRW11bGV4IExpbnV4IERldmljZSBEcml2ZXIgZm9yICAgICAgICAgKgorICogRmlicmUgQ2hhbm5lbCBIb3N0IEJ1cyBBZGFwdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBFbXVsZXguICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAqCisgKiBFTVVMRVggYW5kIFNMSSBhcmUgdHJhZGVtYXJrcyBvZiBFbXVsZXguICAgICAgICAgICAgICAgICAgICAgICAgKgorICogd3d3LmVtdWxleC5jb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgKgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsICAgICAgICoKKyAqIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gKgorICogQUxMIEVYUFJFU1MgT1IgSU1QTElFRCBDT05ESVRJT05TLCBSRVBSRVNFTlRBVElPTlMgQU5EICAgICAgICAgICoKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORyBBTlkgSU1QTElFRCBXQVJSQU5UWSBPRiBNRVJDSEFOVEFCSUxJVFksICAqCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgT1IgTk9OLUlORlJJTkdFTUVOVCwgQVJFICAgICAgKgorICogRElTQ0xBSU1FRCwgRVhDRVBUIFRPIFRIRSBFWFRFTlQgVEhBVCBTVUNIIERJU0NMQUlNRVJTIEFSRSBIRUxEICoKKyAqIFRPIEJFIExFR0FMTFkgSU5WQUxJRC4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yICAqCisgKiBtb3JlIGRldGFpbHMsIGEgY29weSBvZiB3aGljaCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUgQ09QWUlORyAgKgorICogaW5jbHVkZWQgd2l0aCB0aGlzIHBhY2thZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBFdmVudCBkZWZpbml0aW9ucyBmb3IgUmVnaXN0ZXJGb3JFdmVudCAqLworI2RlZmluZSBGQ19SRUdfTElOS19FVkVOVAkJMHgwMDAxCS8qIGxpbmsgdXAgLyBkb3duIGV2ZW50cyAqLworI2RlZmluZSBGQ19SRUdfUlNDTl9FVkVOVAkJMHgwMDAyCS8qIFJTQ04gZXZlbnRzICovCisjZGVmaW5lIEZDX1JFR19DVF9FVkVOVAkJCTB4MDAwNAkvKiBDVCByZXF1ZXN0IGV2ZW50cyAqLworI2RlZmluZSBGQ19SRUdfRFVNUF9FVkVOVAkJMHgwMDA4CS8qIER1bXAgZXZlbnRzICovCisjZGVmaW5lIEZDX1JFR19URU1QRVJBVFVSRV9FVkVOVAkweDAwMTAJLyogdGVtcGVyYXR1cmUgZXZlbnRzICovCisjZGVmaW5lIEZDX1JFR19FTFNfRVZFTlQJCTB4MDAyMAkvKiBscGZjIGVscyBldmVudHMgKi8KKyNkZWZpbmUgRkNfUkVHX0ZBQlJJQ19FVkVOVAkJMHgwMDQwCS8qIGxwZmMgZmFicmljIGV2ZW50cyAqLworI2RlZmluZSBGQ19SRUdfU0NTSV9FVkVOVAkJMHgwMDgwCS8qIGxwZmMgc2NzaSBldmVudHMgKi8KKyNkZWZpbmUgRkNfUkVHX0JPQVJEX0VWRU5UCQkweDAxMDAJLyogbHBmYyBib2FyZCBldmVudHMgKi8KKyNkZWZpbmUgRkNfUkVHX0FEQVBURVJfRVZFTlQJCTB4MDIwMAkvKiBscGZjIGFkYXB0ZXIgZXZlbnRzICovCisjZGVmaW5lIEZDX1JFR19FVkVOVF9NQVNLCQkoRkNfUkVHX0xJTktfRVZFTlQgfCBcCisJCQkJCQlGQ19SRUdfUlNDTl9FVkVOVCB8IFwKKwkJCQkJCUZDX1JFR19DVF9FVkVOVCB8IFwKKwkJCQkJCUZDX1JFR19EVU1QX0VWRU5UIHwgXAorCQkJCQkJRkNfUkVHX1RFTVBFUkFUVVJFX0VWRU5UIHwgXAorCQkJCQkJRkNfUkVHX0VMU19FVkVOVCB8IFwKKwkJCQkJCUZDX1JFR19GQUJSSUNfRVZFTlQgfCBcCisJCQkJCQlGQ19SRUdfU0NTSV9FVkVOVCB8IFwKKwkJCQkJCUZDX1JFR19CT0FSRF9FVkVOVCB8IFwKKwkJCQkJCUZDX1JFR19BREFQVEVSX0VWRU5UKQorLyogVGVtcGVyYXR1cmUgZXZlbnRzICovCisjZGVmaW5lIExQRkNfQ1JJVF9URU1QCQkweDEKKyNkZWZpbmUgTFBGQ19USFJFU0hPTERfVEVNUAkweDIKKyNkZWZpbmUgTFBGQ19OT1JNQUxfVEVNUAkweDMKKy8qCisgKiBBbGwgbmV0IGxpbmsgZXZlbnQgcGF5bG9hZHMgd2lsbCBiZWdpbiB3aXRoIGFuZCBldmVudCB0eXBlCisgKiBhbmQgc3ViY2F0ZWdvcnkuIFRoZSBldmVudCB0eXBlIG11c3QgY29tZSBmaXJzdC4KKyAqIFRoZSBzdWJjYXRlZ29yeSBmdXJ0aGVyIGRlZmluZXMgdGhlIGRhdGEgdGhhdCBmb2xsb3dzIGluIHRoZSByZXN0CisgKiBvZiB0aGUgcGF5bG9hZC4gRWFjaCBjYXRlZ29yeSB3aWxsIGhhdmUgaXRzIG93biB1bmlxdWUgaGVhZGVyIHBsdXMKKyAqIGFueSBhZGR0aW9uYWwgZGF0YSB1bmlxdWUgdG8gdGhlIHN1YmNhdGVnb3J5LgorICogVGhlIHBheWxvYWQgc2VudCB2aWEgdGhlIGZjIHRyYW5zcG9ydCBpcyBvbmUtd2F5IGRyaXZlci0+YXBwbGljYXRpb24uCisgKi8KKworLyogZWxzIGV2ZW50IGhlYWRlciAqLworc3RydWN0IGxwZmNfZWxzX2V2ZW50X2hlYWRlciB7CisJdWludDMyX3QgZXZlbnRfdHlwZTsKKwl1aW50MzJfdCBzdWJjYXRlZ29yeTsKKwl1aW50OF90IHd3cG5bOF07CisJdWludDhfdCB3d25uWzhdOworfTsKKworLyogc3ViY2F0ZWdvcnkgY29kZXMgZm9yIEZDX1JFR19FTFNfRVZFTlQgKi8KKyNkZWZpbmUgTFBGQ19FVkVOVF9QTE9HSV9SQ1YJCTB4MDEKKyNkZWZpbmUgTFBGQ19FVkVOVF9QUkxPX1JDVgkJMHgwMgorI2RlZmluZSBMUEZDX0VWRU5UX0FESVNDX1JDVgkJMHgwNAorI2RlZmluZSBMUEZDX0VWRU5UX0xTUkpUX1JDVgkJMHgwOAorCisvKiBzcGVjaWFsIGVscyBsc3JqdCBldmVudCAqLworc3RydWN0IGxwZmNfbHNyanRfZXZlbnQgeworCXN0cnVjdCBscGZjX2Vsc19ldmVudF9oZWFkZXIgaGVhZGVyOworCXVpbnQzMl90IGNvbW1hbmQ7CisJdWludDMyX3QgcmVhc29uX2NvZGU7CisJdWludDMyX3QgZXhwbGFuYXRpb247Cit9OworCisKKy8qIGZhYnJpYyBldmVudCBoZWFkZXIgKi8KK3N0cnVjdCBscGZjX2ZhYnJpY19ldmVudF9oZWFkZXIgeworCXVpbnQzMl90IGV2ZW50X3R5cGU7CisJdWludDMyX3Qgc3ViY2F0ZWdvcnk7CisJdWludDhfdCB3d3BuWzhdOworCXVpbnQ4X3Qgd3dubls4XTsKK307CisKKy8qIHN1YmNhdGVnb3J5IGNvZGVzIGZvciBGQ19SRUdfRkFCUklDX0VWRU5UICovCisjZGVmaW5lIExQRkNfRVZFTlRfRkFCUklDX0JVU1kJCTB4MDEKKyNkZWZpbmUgTFBGQ19FVkVOVF9QT1JUX0JVU1kJCTB4MDIKKyNkZWZpbmUgTFBGQ19FVkVOVF9GQ1BSRENIS0VSUgkJMHgwNAorCisvKiBzcGVjaWFsIGNhc2UgZmFicmljIGZjcHJkY2hrZXJyIGV2ZW50ICovCitzdHJ1Y3QgbHBmY19mY3ByZGNoa2Vycl9ldmVudCB7CisJc3RydWN0IGxwZmNfZmFicmljX2V2ZW50X2hlYWRlciBoZWFkZXI7CisJdWludDMyX3QgbHVuOworCXVpbnQzMl90IG9wY29kZTsKKwl1aW50MzJfdCBmY3BpcGFyYW07Cit9OworCisKKy8qIHNjc2kgZXZlbnQgaGVhZGVyICovCitzdHJ1Y3QgbHBmY19zY3NpX2V2ZW50X2hlYWRlciB7CisJdWludDMyX3QgZXZlbnRfdHlwZTsKKwl1aW50MzJfdCBzdWJjYXRlZ29yeTsKKwl1aW50MzJfdCBsdW47CisJdWludDhfdCB3d3BuWzhdOworCXVpbnQ4X3Qgd3dubls4XTsKK307CisKKy8qIHN1YmNhdGVnb3J5IGNvZGVzIGZvciBGQ19SRUdfU0NTSV9FVkVOVCAqLworI2RlZmluZSBMUEZDX0VWRU5UX1FGVUxMCTB4MDAwMQorI2RlZmluZSBMUEZDX0VWRU5UX0RFVkJTWQkweDAwMDIKKyNkZWZpbmUgTFBGQ19FVkVOVF9DSEVDS19DT05ECTB4MDAwNAorI2RlZmluZSBMUEZDX0VWRU5UX0xVTlJFU0VUCTB4MDAwOAorI2RlZmluZSBMUEZDX0VWRU5UX1RHVFJFU0VUCTB4MDAxMAorI2RlZmluZSBMUEZDX0VWRU5UX0JVU1JFU0VUCTB4MDAyMAorI2RlZmluZSBMUEZDX0VWRU5UX1ZBUlFVRURFUFRICTB4MDA0MAorCisvKiBzcGVjaWFsIGNhc2Ugc2NzaSB2YXJxdWV1ZWRlcHRoIGV2ZW50ICovCitzdHJ1Y3QgbHBmY19zY3NpX3ZhcnF1ZXVlZGVwdGhfZXZlbnQgeworCXN0cnVjdCBscGZjX3Njc2lfZXZlbnRfaGVhZGVyIHNjc2lfZXZlbnQ7CisJdWludDMyX3Qgb2xkdmFsOworCXVpbnQzMl90IG5ld3ZhbDsKK307CisKKy8qIHNwZWNpYWwgY2FzZSBzY3NpIGNoZWNrIGNvbmRpdGlvbiBldmVudCAqLworc3RydWN0IGxwZmNfc2NzaV9jaGVja19jb25kaXRpb25fZXZlbnQgeworCXN0cnVjdCBscGZjX3Njc2lfZXZlbnRfaGVhZGVyIHNjc2lfZXZlbnQ7CisJdWludDhfdCBzZW5zZV9rZXk7CisJdWludDhfdCBhc2M7CisJdWludDhfdCBhc2NxOworfTsKKworLyogZXZlbnQgY29kZXMgZm9yIEZDX1JFR19CT0FSRF9FVkVOVCAqLworI2RlZmluZSBMUEZDX0VWRU5UX1BPUlRJTlRFUlIJCTB4MDEKKworLyogYm9hcmQgZXZlbnQgaGVhZGVyICovCitzdHJ1Y3QgbHBmY19ib2FyZF9ldmVudF9oZWFkZXIgeworCXVpbnQzMl90IGV2ZW50X3R5cGU7CisJdWludDMyX3Qgc3ViY2F0ZWdvcnk7Cit9OworCisKKy8qIGV2ZW50IGNvZGVzIGZvciBGQ19SRUdfQURBUFRFUl9FVkVOVCAqLworI2RlZmluZSBMUEZDX0VWRU5UX0FSUklWQUwJMHgwMQorCisvKiBhZGFwdGVyIGV2ZW50IGhlYWRlciAqLworc3RydWN0IGxwZmNfYWRhcHRlcl9ldmVudF9oZWFkZXIgeworCXVpbnQzMl90IGV2ZW50X3R5cGU7CisJdWludDMyX3Qgc3ViY2F0ZWdvcnk7Cit9OworCisKKy8qIGV2ZW50IGNvZGVzIGZvciB0ZW1wX2V2ZW50ICovCisjZGVmaW5lIExQRkNfQ1JJVF9URU1QCQkweDEKKyNkZWZpbmUgTFBGQ19USFJFU0hPTERfVEVNUAkweDIKKyNkZWZpbmUgTFBGQ19OT1JNQUxfVEVNUAkweDMKKworc3RydWN0IHRlbXBfZXZlbnQgeworCXVpbnQzMl90IGV2ZW50X3R5cGU7CisJdWludDMyX3QgZXZlbnRfY29kZTsKKwl1aW50MzJfdCBkYXRhOworfTsKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ucG9ydGRpc2MuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMKaW5kZXggNjY4OGE4Ni4uMGMyNWQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ucG9ydGRpc2MuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJscGZjX2h3LmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zY3NpLmgiCiAjaW5jbHVkZSAibHBmYy5oIgpAQCAtMTAwMywyMCArMTAwNCw4IEBACiAJCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwogCQkJbmRscC0+bmxwX2ZsYWcgJj0gfk5MUF9OUFJfMkJfRElTQzsKIAkJCXNwaW5fdW5sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKLQotCQkJaWYgKHZwb3J0LT5udW1fZGlzY19ub2RlcykgeworCQkJaWYgKHZwb3J0LT5udW1fZGlzY19ub2RlcykKIAkJCQlscGZjX21vcmVfYWRpc2ModnBvcnQpOwotCQkJCWlmICgodnBvcnQtPm51bV9kaXNjX25vZGVzID09IDApICYmCi0JCQkJICAgICh2cG9ydC0+ZmNfbnByX2NudCkpCi0JCQkJCWxwZmNfZWxzX2Rpc2NfcGxvZ2kodnBvcnQpOwotCQkJCWlmICh2cG9ydC0+bnVtX2Rpc2Nfbm9kZXMgPT0gMCkgewotCQkJCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOwotCQkJCQl2cG9ydC0+ZmNfZmxhZyAmPSB+RkNfTkRJU0NfQUNUSVZFOwotCQkJCQlzcGluX3VubG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7Ci0JCQkJCWxwZmNfY2FuX2Rpc2N0bW8odnBvcnQpOwotCQkJCQlscGZjX2VuZF9yc2NuKHZwb3J0KTsKLQkJCQl9Ci0JCQl9CiAJCX0KIAkJcmV0dXJuIG5kbHAtPm5scF9zdGF0ZTsKIAl9CkBAIC0xODY1LDggKzE4NTQsMTMgQEAKIGxwZmNfY21wbF9sb2dvX25wcl9ub2RlKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAsCiAJCQl2b2lkICphcmcsIHVpbnQzMl90IGV2dCkKIHsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydCk7CisJaWYgKG5kbHAtPm5scF9ESUQgPT0gRmFicmljX0RJRCkgeworCQlzcGluX2xvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCQl2cG9ydC0+ZmNfZmxhZyAmPSB+KEZDX0ZBQlJJQyB8IEZDX1BVQkxJQ19MT09QKTsKKwkJc3Bpbl91bmxvY2tfaXJxKHNob3N0LT5ob3N0X2xvY2spOworCX0KIAlscGZjX3VucmVnX3JwaSh2cG9ydCwgbmRscCk7Ci0JLyogVGhpcyByb3V0aW5lIGRvZXMgbm90aGluZywganVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUgKi8KIAlyZXR1cm4gbmRscC0+bmxwX3N0YXRlOwogfQogCkBAIC0yMTU1LDcgKzIxNDksNyBAQAogCQlscGZjX25scF9wdXQobmRscCk7CiAJfSBlbHNlIHsKIAkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9JTkZPLCBMT0dfRElTQ09WRVJZLAotCQkJIjAyMTIgRFNNIG91dCBzdGF0ZSAlZCBvbiBOUG9ydCBmcmVlXG4iLCByYyk7CisJCQkiMDIxMyBEU00gb3V0IHN0YXRlICVkIG9uIE5Qb3J0IGZyZWVcbiIsIHJjKTsKIAogCQlscGZjX2RlYnVnZnNfZGlzY190cmModnBvcnQsIExQRkNfRElTQ19UUkNfRFNNLAogCQkJIkRTTSBvdXQ6ICAgICAgICAgc3RlOiVkIGRpZDp4JXggZmxnOngleCIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCmluZGV4IDFiY2ViYmQuLmJkMTg2NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAibHBmY192ZXJzaW9uLmgiCiAjaW5jbHVkZSAibHBmY19ody5oIgogI2luY2x1ZGUgImxwZmNfc2xpLmgiCisjaW5jbHVkZSAibHBmY19ubC5oIgogI2luY2x1ZGUgImxwZmNfZGlzYy5oIgogI2luY2x1ZGUgImxwZmNfc2NzaS5oIgogI2luY2x1ZGUgImxwZmMuaCIKQEAgLTQyLDYgKzQzLDExMSBAQAogI2RlZmluZSBMUEZDX1JFU0VUX1dBSVQgIDIKICNkZWZpbmUgTFBGQ19BQk9SVF9XQUlUICAyCiAKKy8qKgorICogbHBmY191cGRhdGVfc3RhdHM6IFVwZGF0ZSBzdGF0aXN0aWNhbCBkYXRhIGZvciB0aGUgY29tbWFuZCBjb21wbGV0aW9uLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIG9iamVjdC4KKyAqIEBscGZjX2NtZDogbHBmYyBzY3NpIGNvbW1hbmQgb2JqZWN0IHBvaW50ZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhIGNvbW1hbmQgY29tcGxldGlvbiBhbmQgdGhpcworICogZnVuY3Rpb24gdXBkYXRlcyB0aGUgc3RhdGlzdGljYWwgZGF0YSBmb3IgdGhlIGNvbW1hbmQgY29tcGxldGlvbi4KKyAqKi8KK3N0YXRpYyB2b2lkCitscGZjX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCAgbHBmY19zY3NpX2J1ZiAqbHBmY19jbWQpCit7CisJc3RydWN0IGxwZmNfcnBvcnRfZGF0YSAqcmRhdGEgPSBscGZjX2NtZC0+cmRhdGE7CisJc3RydWN0IGxwZmNfbm9kZWxpc3QgKnBub2RlID0gcmRhdGEtPnBub2RlOworCXN0cnVjdCBzY3NpX2NtbmQgKmNtZCA9IGxwZmNfY21kLT5wQ21kOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IFNjc2lfSG9zdCAgKnNob3N0ID0gY21kLT5kZXZpY2UtPmhvc3Q7CisJc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0ID0gKHN0cnVjdCBscGZjX3Zwb3J0ICopIHNob3N0LT5ob3N0ZGF0YTsKKwl1bnNpZ25lZCBsb25nIGxhdGVuY3k7CisJaW50IGk7CisKKwlpZiAoY21kLT5yZXN1bHQpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKKwlpZiAoIXZwb3J0LT5zdGF0X2RhdGFfZW5hYmxlZCB8fAorCQl2cG9ydC0+c3RhdF9kYXRhX2Jsb2NrZWQgfHwKKwkJIXBub2RlLT5sYXRfZGF0YSB8fAorCQkocGhiYS0+YnVja2V0X3R5cGUgPT0gTFBGQ19OT19CVUNLRVQpKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQlyZXR1cm47CisJfQorCWxhdGVuY3kgPSBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBscGZjX2NtZC0+c3RhcnRfdGltZSk7CisKKwlpZiAocGhiYS0+YnVja2V0X3R5cGUgPT0gTFBGQ19MSU5FQVJfQlVDS0VUKSB7CisJCWkgPSAobGF0ZW5jeSArIHBoYmEtPmJ1Y2tldF9zdGVwIC0gMSAtIHBoYmEtPmJ1Y2tldF9iYXNlKS8KKwkJCXBoYmEtPmJ1Y2tldF9zdGVwOworCQlpZiAoaSA+PSBMUEZDX01BWF9CVUNLRVRfQ09VTlQpCisJCQlpID0gTFBGQ19NQVhfQlVDS0VUX0NPVU5UOworCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBMUEZDX01BWF9CVUNLRVRfQ09VTlQtMTsgaSsrKQorCQkJaWYgKGxhdGVuY3kgPD0gKHBoYmEtPmJ1Y2tldF9iYXNlICsKKwkJCQkoKDE8PGkpKnBoYmEtPmJ1Y2tldF9zdGVwKSkpCisJCQkJYnJlYWs7CisJfQorCisJcG5vZGUtPmxhdF9kYXRhW2ldLmNtZF9jb3VudCsrOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworfQorCisKKy8qKgorICogbHBmY19zZW5kX3NkZXZfcXVldWVkZXB0aF9jaGFuZ2VfZXZlbnQ6IFBvc3RzIGEgcXVldWVkZXB0aCBjaGFuZ2UKKyAqICAgICAgICAgICAgICAgICAgIGV2ZW50LgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHZwb3J0OiBQb2ludGVyIHRvIHZwb3J0IG9iamVjdC4KKyAqIEBuZGxwOiBQb2ludGVyIHRvIEZDIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXJnZXQuCisgKiBAbHVuOiBMdW4gbnVtYmVyIG9mIHRoZSBzY3NpIGRldmljZS4KKyAqIEBvbGRfdmFsOiBPbGQgdmFsdWUgb2YgdGhlIHF1ZXVlIGRlcHRoLgorICogQG5ld192YWw6IE5ldyB2YWx1ZSBvZiB0aGUgcXVldWUgZGVwdGguCisgKgorICogVGhpcyBmdW5jdGlvbiBzZW5kcyBhbiBldmVudCB0byB0aGUgbWdtdCBhcHBsaWNhdGlvbiBpbmRpY2F0aW5nCisgKiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgc2NzaSBkZXZpY2UgcXVldWUgZGVwdGguCisgKiovCitzdGF0aWMgdm9pZAorbHBmY19zZW5kX3NkZXZfcXVldWVkZXB0aF9jaGFuZ2VfZXZlbnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLAorCQlzdHJ1Y3QgbHBmY192cG9ydCAgKnZwb3J0LAorCQlzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKKwkJdWludDMyX3QgbHVuLAorCQl1aW50MzJfdCBvbGRfdmFsLAorCQl1aW50MzJfdCBuZXdfdmFsKQoreworCXN0cnVjdCBscGZjX2Zhc3RfcGF0aF9ldmVudCAqZmFzdF9wYXRoX2V2dDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJZmFzdF9wYXRoX2V2dCA9IGxwZmNfYWxsb2NfZmFzdF9ldnQocGhiYSk7CisJaWYgKCFmYXN0X3BhdGhfZXZ0KQorCQlyZXR1cm47CisKKwlmYXN0X3BhdGhfZXZ0LT51bi5xdWV1ZV9kZXB0aF9ldnQuc2NzaV9ldmVudC5ldmVudF90eXBlID0KKwkJRkNfUkVHX1NDU0lfRVZFTlQ7CisJZmFzdF9wYXRoX2V2dC0+dW4ucXVldWVfZGVwdGhfZXZ0LnNjc2lfZXZlbnQuc3ViY2F0ZWdvcnkgPQorCQlMUEZDX0VWRU5UX1ZBUlFVRURFUFRIOworCisJLyogUmVwb3J0IGFsbCBsdW5zIHdpdGggY2hhbmdlIGluIHF1ZXVlIGRlcHRoICovCisJZmFzdF9wYXRoX2V2dC0+dW4ucXVldWVfZGVwdGhfZXZ0LnNjc2lfZXZlbnQubHVuID0gbHVuOworCWlmIChuZGxwICYmIE5MUF9DSEtfTk9ERV9BQ1QobmRscCkpIHsKKwkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5xdWV1ZV9kZXB0aF9ldnQuc2NzaV9ldmVudC53d3BuLAorCQkJJm5kbHAtPm5scF9wb3J0bmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5xdWV1ZV9kZXB0aF9ldnQuc2NzaV9ldmVudC53d25uLAorCQkJJm5kbHAtPm5scF9ub2RlbmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwl9CisKKwlmYXN0X3BhdGhfZXZ0LT51bi5xdWV1ZV9kZXB0aF9ldnQub2xkdmFsID0gb2xkX3ZhbDsKKwlmYXN0X3BhdGhfZXZ0LT51bi5xdWV1ZV9kZXB0aF9ldnQubmV3dmFsID0gbmV3X3ZhbDsKKwlmYXN0X3BhdGhfZXZ0LT52cG9ydCA9IHZwb3J0OworCisJZmFzdF9wYXRoX2V2dC0+d29ya19ldnQuZXZ0ID0gTFBGQ19FVlRfRkFTVFBBVEhfTUdNVF9FVlQ7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKKwlsaXN0X2FkZF90YWlsKCZmYXN0X3BhdGhfZXZ0LT53b3JrX2V2dC5ldnRfbGlzdHAsICZwaGJhLT53b3JrX2xpc3QpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKKwlscGZjX3dvcmtlcl93YWtlX3VwKHBoYmEpOworCisJcmV0dXJuOworfQorCiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQgd2hlbiB0aGVyZSBpcyBhIHJlc291cmNlCiAgKiBlcnJvciBpbiBkcml2ZXIgb3IgaW4gZmlybXdhcmUuCkBAIC0xMTcsOSArMjIzLDEwIEBACiAJc3RydWN0IGxwZmNfdnBvcnQgKip2cG9ydHM7CiAJc3RydWN0IFNjc2lfSG9zdCAgKnNob3N0OwogCXN0cnVjdCBzY3NpX2RldmljZSAqc2RldjsKLQl1bnNpZ25lZCBsb25nIG5ld19xdWV1ZV9kZXB0aDsKKwl1bnNpZ25lZCBsb25nIG5ld19xdWV1ZV9kZXB0aCwgb2xkX3F1ZXVlX2RlcHRoOwogCXVuc2lnbmVkIGxvbmcgbnVtX3JzcmNfZXJyLCBudW1fY21kX3N1Y2Nlc3M7CiAJaW50IGk7CisJc3RydWN0IGxwZmNfcnBvcnRfZGF0YSAqcmRhdGE7CiAKIAludW1fcnNyY19lcnIgPSBhdG9taWNfcmVhZCgmcGhiYS0+bnVtX3JzcmNfZXJyKTsKIAludW1fY21kX3N1Y2Nlc3MgPSBhdG9taWNfcmVhZCgmcGhiYS0+bnVtX2NtZF9zdWNjZXNzKTsKQEAgLTEzNyw2ICsyNDQsNyBAQAogCQkJCWVsc2UKIAkJCQkJbmV3X3F1ZXVlX2RlcHRoID0gc2Rldi0+cXVldWVfZGVwdGggLQogCQkJCQkJCQluZXdfcXVldWVfZGVwdGg7CisJCQkJb2xkX3F1ZXVlX2RlcHRoID0gc2Rldi0+cXVldWVfZGVwdGg7CiAJCQkJaWYgKHNkZXYtPm9yZGVyZWRfdGFncykKIAkJCQkJc2NzaV9hZGp1c3RfcXVldWVfZGVwdGgoc2RldiwKIAkJCQkJCQlNU0dfT1JERVJFRF9UQUcsCkBAIC0xNDUsNiArMjUzLDEzIEBACiAJCQkJCXNjc2lfYWRqdXN0X3F1ZXVlX2RlcHRoKHNkZXYsCiAJCQkJCQkJTVNHX1NJTVBMRV9UQUcsCiAJCQkJCQkJbmV3X3F1ZXVlX2RlcHRoKTsKKwkJCQlyZGF0YSA9IHNkZXYtPmhvc3RkYXRhOworCQkJCWlmIChyZGF0YSkKKwkJCQkJbHBmY19zZW5kX3NkZXZfcXVldWVkZXB0aF9jaGFuZ2VfZXZlbnQoCisJCQkJCQlwaGJhLCB2cG9ydHNbaV0sCisJCQkJCQlyZGF0YS0+cG5vZGUsCisJCQkJCQlzZGV2LT5sdW4sIG9sZF9xdWV1ZV9kZXB0aCwKKwkJCQkJCW5ld19xdWV1ZV9kZXB0aCk7CiAJCQl9CiAJCX0KIAlscGZjX2Rlc3Ryb3lfdnBvcnRfd29ya19hcnJheShwaGJhLCB2cG9ydHMpOwpAQCAtMTU5LDYgKzI3NCw3IEBACiAJc3RydWN0IFNjc2lfSG9zdCAgKnNob3N0OwogCXN0cnVjdCBzY3NpX2RldmljZSAqc2RldjsKIAlpbnQgaTsKKwlzdHJ1Y3QgbHBmY19ycG9ydF9kYXRhICpyZGF0YTsKIAogCXZwb3J0cyA9IGxwZmNfY3JlYXRlX3Zwb3J0X3dvcmtfYXJyYXkocGhiYSk7CiAJaWYgKHZwb3J0cyAhPSBOVUxMKQpAQCAtMTc2LDYgKzI5MiwxNCBAQAogCQkJCQlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChzZGV2LAogCQkJCQkJCU1TR19TSU1QTEVfVEFHLAogCQkJCQkJCXNkZXYtPnF1ZXVlX2RlcHRoKzEpOworCQkJCXJkYXRhID0gc2Rldi0+aG9zdGRhdGE7CisJCQkJaWYgKHJkYXRhKQorCQkJCQlscGZjX3NlbmRfc2Rldl9xdWV1ZWRlcHRoX2NoYW5nZV9ldmVudCgKKwkJCQkJCXBoYmEsIHZwb3J0c1tpXSwKKwkJCQkJCXJkYXRhLT5wbm9kZSwKKwkJCQkJCXNkZXYtPmx1biwKKwkJCQkJCXNkZXYtPnF1ZXVlX2RlcHRoIC0gMSwKKwkJCQkJCXNkZXYtPnF1ZXVlX2RlcHRoKTsKIAkJCX0KIAkJfQogCWxwZmNfZGVzdHJveV92cG9ydF93b3JrX2FycmF5KHBoYmEsIHZwb3J0cyk7CkBAIC0xODMsNiArMzA3LDM1IEBACiAJYXRvbWljX3NldCgmcGhiYS0+bnVtX2NtZF9zdWNjZXNzLCAwKTsKIH0KIAorLyoqCisgKiBscGZjX3Njc2lfZGV2X2Jsb2NrOiBzZXQgYWxsIHNjc2kgaG9zdHMgdG8gYmxvY2sgc3RhdGUuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiB3YWxrcyB2cG9ydCBsaXN0IGFuZCBzZXQgZWFjaCBTQ1NJIGhvc3QgdG8gYmxvY2sgc3RhdGUKKyAqIGJ5IGludm9raW5nIGZjX3JlbW90ZV9wb3J0X2RlbGV0ZSgpIHJvdXRpbmUuIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZAorICogd2l0aCBFRUggd2hlbiBkZXZpY2UncyBQQ0kgc2xvdCBoYXMgYmVlbiBwZXJtYW5lbnRseSBkaXNhYmxlZC4KKyAqKi8KK3ZvaWQKK2xwZmNfc2NzaV9kZXZfYmxvY2soc3RydWN0IGxwZmNfaGJhICpwaGJhKQoreworCXN0cnVjdCBscGZjX3Zwb3J0ICoqdnBvcnRzOworCXN0cnVjdCBTY3NpX0hvc3QgICpzaG9zdDsKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7CisJc3RydWN0IGZjX3Jwb3J0ICpycG9ydDsKKwlpbnQgaTsKKworCXZwb3J0cyA9IGxwZmNfY3JlYXRlX3Zwb3J0X3dvcmtfYXJyYXkocGhiYSk7CisJaWYgKHZwb3J0cyAhPSBOVUxMKQorCQlmb3IgKGkgPSAwOyBpIDw9IHBoYmEtPm1heF92cGkgJiYgdnBvcnRzW2ldICE9IE5VTEw7IGkrKykgeworCQkJc2hvc3QgPSBscGZjX3Nob3N0X2Zyb21fdnBvcnQodnBvcnRzW2ldKTsKKwkJCXNob3N0X2Zvcl9lYWNoX2RldmljZShzZGV2LCBzaG9zdCkgeworCQkJCXJwb3J0ID0gc3RhcmdldF90b19ycG9ydChzY3NpX3RhcmdldChzZGV2KSk7CisJCQkJZmNfcmVtb3RlX3BvcnRfZGVsZXRlKHJwb3J0KTsKKwkJCX0KKwkJfQorCWxwZmNfZGVzdHJveV92cG9ydF93b3JrX2FycmF5KHBoYmEsIHZwb3J0cyk7Cit9CisKIC8qCiAgKiBUaGlzIHJvdXRpbmUgYWxsb2NhdGVzIGEgc2NzaSBidWZmZXIsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5CiAgKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5pdGlhdGUgYSBTQ1NJIEkvTy4gIFRoZSBub24tRE1BYWJsZSBidWZmZXIgcmVnaW9uCkBAIC0xOTgsNyArMzUxLDkgQEAKIAlzdHJ1Y3QgbHBmY19zY3NpX2J1ZiAqcHNiOwogCXN0cnVjdCB1bHBfYmRlNjQgKmJwbDsKIAlJT0NCX3QgKmlvY2I7Ci0JZG1hX2FkZHJfdCBwZG1hX3BoeXM7CisJZG1hX2FkZHJfdCBwZG1hX3BoeXNfZmNwX2NtZDsKKwlkbWFfYWRkcl90IHBkbWFfcGh5c19mY3BfcnNwOworCWRtYV9hZGRyX3QgcGRtYV9waHlzX2JwbDsKIAl1aW50MTZfdCBpb3RhZzsKIAogCXBzYiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBscGZjX3Njc2lfYnVmKSwgR0ZQX0tFUk5FTCk7CkBAIC0yMzgsNDAgKzM5Myw2MCBAQAogCiAJLyogSW5pdGlhbGl6ZSBsb2NhbCBzaG9ydC1oYW5kIHBvaW50ZXJzLiAqLwogCWJwbCA9IHBzYi0+ZmNwX2JwbDsKLQlwZG1hX3BoeXMgPSBwc2ItPmRtYV9oYW5kbGU7CisJcGRtYV9waHlzX2ZjcF9jbWQgPSBwc2ItPmRtYV9oYW5kbGU7CisJcGRtYV9waHlzX2ZjcF9yc3AgPSBwc2ItPmRtYV9oYW5kbGUgKyBzaXplb2Yoc3RydWN0IGZjcF9jbW5kKTsKKwlwZG1hX3BoeXNfYnBsID0gcHNiLT5kbWFfaGFuZGxlICsgc2l6ZW9mKHN0cnVjdCBmY3BfY21uZCkgKworCQkJc2l6ZW9mKHN0cnVjdCBmY3BfcnNwKTsKIAogCS8qCiAJICogVGhlIGZpcnN0IHR3byBiZGVzIGFyZSB0aGUgRkNQX0NNRCBhbmQgRkNQX1JTUC4gIFRoZSBiYWxhbmNlIGFyZSBzZwogCSAqIGxpc3QgYmRlcy4gIEluaXRpYWxpemUgdGhlIGZpcnN0IHR3byBhbmQgbGVhdmUgdGhlIHJlc3QgZm9yCiAJICogcXVldWVjb21tYW5kLgogCSAqLwotCWJwbC0+YWRkckhpZ2ggPSBsZTMyX3RvX2NwdShwdXRQYWRkckhpZ2gocGRtYV9waHlzKSk7Ci0JYnBsLT5hZGRyTG93ID0gbGUzMl90b19jcHUocHV0UGFkZHJMb3cocGRtYV9waHlzKSk7Ci0JYnBsLT50dXMuZi5iZGVTaXplID0gc2l6ZW9mIChzdHJ1Y3QgZmNwX2NtbmQpOwotCWJwbC0+dHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1VTRV9DTU5EOwotCWJwbC0+dHVzLncgPSBsZTMyX3RvX2NwdShicGwtPnR1cy53KTsKLQlicGwrKzsKKwlicGxbMF0uYWRkckhpZ2ggPSBsZTMyX3RvX2NwdShwdXRQYWRkckhpZ2gocGRtYV9waHlzX2ZjcF9jbWQpKTsKKwlicGxbMF0uYWRkckxvdyA9IGxlMzJfdG9fY3B1KHB1dFBhZGRyTG93KHBkbWFfcGh5c19mY3BfY21kKSk7CisJYnBsWzBdLnR1cy5mLmJkZVNpemUgPSBzaXplb2Yoc3RydWN0IGZjcF9jbW5kKTsKKwlicGxbMF0udHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRFXzY0OworCWJwbFswXS50dXMudyA9IGxlMzJfdG9fY3B1KGJwbC0+dHVzLncpOwogCiAJLyogU2V0dXAgdGhlIHBoeXNpY2FsIHJlZ2lvbiBmb3IgdGhlIEZDUCBSU1AgKi8KLQlwZG1hX3BoeXMgKz0gc2l6ZW9mIChzdHJ1Y3QgZmNwX2NtbmQpOwotCWJwbC0+YWRkckhpZ2ggPSBsZTMyX3RvX2NwdShwdXRQYWRkckhpZ2gocGRtYV9waHlzKSk7Ci0JYnBsLT5hZGRyTG93ID0gbGUzMl90b19jcHUocHV0UGFkZHJMb3cocGRtYV9waHlzKSk7Ci0JYnBsLT50dXMuZi5iZGVTaXplID0gc2l6ZW9mIChzdHJ1Y3QgZmNwX3JzcCk7Ci0JYnBsLT50dXMuZi5iZGVGbGFncyA9IChCVUZGX1VTRV9DTU5EIHwgQlVGRl9VU0VfUkNWKTsKLQlicGwtPnR1cy53ID0gbGUzMl90b19jcHUoYnBsLT50dXMudyk7CisJYnBsWzFdLmFkZHJIaWdoID0gbGUzMl90b19jcHUocHV0UGFkZHJIaWdoKHBkbWFfcGh5c19mY3BfcnNwKSk7CisJYnBsWzFdLmFkZHJMb3cgPSBsZTMyX3RvX2NwdShwdXRQYWRkckxvdyhwZG1hX3BoeXNfZmNwX3JzcCkpOworCWJwbFsxXS50dXMuZi5iZGVTaXplID0gc2l6ZW9mKHN0cnVjdCBmY3BfcnNwKTsKKwlicGxbMV0udHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRFXzY0OworCWJwbFsxXS50dXMudyA9IGxlMzJfdG9fY3B1KGJwbC0+dHVzLncpOwogCiAJLyoKIAkgKiBTaW5jZSB0aGUgSU9DQiBmb3IgdGhlIEZDUCBJL08gaXMgYnVpbHQgaW50byB0aGlzIGxwZmNfc2NzaV9idWYsCiAJICogaW5pdGlhbGl6ZSBpdCB3aXRoIGFsbCBrbm93biBkYXRhIG5vdy4KIAkgKi8KLQlwZG1hX3BoeXMgKz0gKHNpemVvZiAoc3RydWN0IGZjcF9yc3ApKTsKIAlpb2NiID0gJnBzYi0+Y3VyX2lvY2JxLmlvY2I7CiAJaW9jYi0+dW4uZmNwaTY0LmJkbC51bHBJb1RhZzMyID0gMDsKLQlpb2NiLT51bi5mY3BpNjQuYmRsLmFkZHJIaWdoID0gcHV0UGFkZHJIaWdoKHBkbWFfcGh5cyk7Ci0JaW9jYi0+dW4uZmNwaTY0LmJkbC5hZGRyTG93ID0gcHV0UGFkZHJMb3cocGRtYV9waHlzKTsKLQlpb2NiLT51bi5mY3BpNjQuYmRsLmJkZVNpemUgPSAoMiAqIHNpemVvZiAoc3RydWN0IHVscF9iZGU2NCkpOwotCWlvY2ItPnVuLmZjcGk2NC5iZGwuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRMOwotCWlvY2ItPnVscEJkZUNvdW50ID0gMTsKKwlpZiAocGhiYS0+c2xpX3JldiA9PSAzKSB7CisJCS8qIGZpbGwgaW4gaW1tZWRpYXRlIGZjcCBjb21tYW5kIEJERSAqLworCQlpb2NiLT51bi5mY3BpNjQuYmRsLmJkZUZsYWdzID0gQlVGRl9UWVBFX0JERV9JTU1FRDsKKwkJaW9jYi0+dW4uZmNwaTY0LmJkbC5iZGVTaXplID0gc2l6ZW9mKHN0cnVjdCBmY3BfY21uZCk7CisJCWlvY2ItPnVuLmZjcGk2NC5iZGwuYWRkckxvdyA9IG9mZnNldG9mKElPQ0JfdCwKKwkJCQkJCSAgICAgICB1bnNsaTMuZmNwX2V4dC5pY2QpOworCQlpb2NiLT51bi5mY3BpNjQuYmRsLmFkZHJIaWdoID0gMDsKKwkJaW9jYi0+dWxwQmRlQ291bnQgPSAwOworCQlpb2NiLT51bHBMZSA9IDA7CisJCS8qIGZpbGwgaW4gcmVzcG9uY2UgQkRFICovCisJCWlvY2ItPnVuc2xpMy5mY3BfZXh0LnJiZGUudHVzLmYuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkRFXzY0OworCQlpb2NiLT51bnNsaTMuZmNwX2V4dC5yYmRlLnR1cy5mLmJkZVNpemUgPQorCQkJCQkJc2l6ZW9mKHN0cnVjdCBmY3BfcnNwKTsKKwkJaW9jYi0+dW5zbGkzLmZjcF9leHQucmJkZS5hZGRyTG93ID0KKwkJCQkJCXB1dFBhZGRyTG93KHBkbWFfcGh5c19mY3BfcnNwKTsKKwkJaW9jYi0+dW5zbGkzLmZjcF9leHQucmJkZS5hZGRySGlnaCA9CisJCQkJCQlwdXRQYWRkckhpZ2gocGRtYV9waHlzX2ZjcF9yc3ApOworCX0gZWxzZSB7CisJCWlvY2ItPnVuLmZjcGk2NC5iZGwuYmRlRmxhZ3MgPSBCVUZGX1RZUEVfQkxQXzY0OworCQlpb2NiLT51bi5mY3BpNjQuYmRsLmJkZVNpemUgPSAoMiAqIHNpemVvZihzdHJ1Y3QgdWxwX2JkZTY0KSk7CisJCWlvY2ItPnVuLmZjcGk2NC5iZGwuYWRkckxvdyA9IHB1dFBhZGRyTG93KHBkbWFfcGh5c19icGwpOworCQlpb2NiLT51bi5mY3BpNjQuYmRsLmFkZHJIaWdoID0gcHV0UGFkZHJIaWdoKHBkbWFfcGh5c19icGwpOworCQlpb2NiLT51bHBCZGVDb3VudCA9IDE7CisJCWlvY2ItPnVscExlID0gMTsKKwl9CiAJaW9jYi0+dWxwQ2xhc3MgPSBDTEFTUzM7CiAKIAlyZXR1cm4gcHNiOwpAQCAtMzEzLDggKzQ4OCw5IEBACiAJc3RydWN0IGZjcF9jbW5kICpmY3BfY21uZCA9IGxwZmNfY21kLT5mY3BfY21uZDsKIAlzdHJ1Y3QgdWxwX2JkZTY0ICpicGwgPSBscGZjX2NtZC0+ZmNwX2JwbDsKIAlJT0NCX3QgKmlvY2JfY21kID0gJmxwZmNfY21kLT5jdXJfaW9jYnEuaW9jYjsKKwlzdHJ1Y3QgdWxwX2JkZTY0ICpkYXRhX2JkZSA9IGlvY2JfY21kLT51bnNsaTMuZmNwX2V4dC5kYmRlOwogCWRtYV9hZGRyX3QgcGh5c2FkZHI7Ci0JdWludDMyX3QgaSwgbnVtX2JkZSA9IDA7CisJdWludDMyX3QgbnVtX2JkZSA9IDA7CiAJaW50IG5zZWcsIGRhdGFkaXIgPSBzY3NpX2NtbmQtPnNjX2RhdGFfZGlyZWN0aW9uOwogCiAJLyoKQEAgLTM1MiwzNyArNTI4LDE1OSBAQAogCQkgKiBkdXJpbmcgcHJvYmUgdGhhdCBsaW1pdHMgdGhlIG51bWJlciBvZiBzZyBlbGVtZW50cyBpbiBhbnkKIAkJICogc2luZ2xlIHNjc2kgY29tbWFuZC4gIEp1c3QgcnVuIHRocm91Z2ggdGhlIHNlZ19jbnQgYW5kIGZvcm1hdAogCQkgKiB0aGUgYmRlJ3MuCisJCSAqIFdoZW4gdXNpbmcgU0xJLTMgdGhlIGRyaXZlciB3aWxsIHRyeSB0byBmaXQgYWxsIHRoZSBCREVzIGludG8KKwkJICogdGhlIElPQ0IuIElmIGl0IGNhbid0IHRoZW4gdGhlIEJERXMgZ2V0IGFkZGVkIHRvIGEgQlBMIGFzIGl0CisJCSAqIGRvZXMgZm9yIFNMSS0yIG1vZGUuCiAJCSAqLwotCQlzY3NpX2Zvcl9lYWNoX3NnKHNjc2lfY21uZCwgc2dlbCwgbnNlZywgaSkgeworCQlzY3NpX2Zvcl9lYWNoX3NnKHNjc2lfY21uZCwgc2dlbCwgbnNlZywgbnVtX2JkZSkgewogCQkJcGh5c2FkZHIgPSBzZ19kbWFfYWRkcmVzcyhzZ2VsKTsKLQkJCWJwbC0+YWRkckxvdyA9IGxlMzJfdG9fY3B1KHB1dFBhZGRyTG93KHBoeXNhZGRyKSk7Ci0JCQlicGwtPmFkZHJIaWdoID0gbGUzMl90b19jcHUocHV0UGFkZHJIaWdoKHBoeXNhZGRyKSk7Ci0JCQlicGwtPnR1cy5mLmJkZVNpemUgPSBzZ19kbWFfbGVuKHNnZWwpOwotCQkJaWYgKGRhdGFkaXIgPT0gRE1BX1RPX0RFVklDRSkKLQkJCQlicGwtPnR1cy5mLmJkZUZsYWdzID0gMDsKLQkJCWVsc2UKLQkJCQlicGwtPnR1cy5mLmJkZUZsYWdzID0gQlVGRl9VU0VfUkNWOwotCQkJYnBsLT50dXMudyA9IGxlMzJfdG9fY3B1KGJwbC0+dHVzLncpOwotCQkJYnBsKys7Ci0JCQludW1fYmRlKys7CisJCQlpZiAocGhiYS0+c2xpX3JldiA9PSAzICYmCisJCQkgICAgbnNlZyA8PSBMUEZDX0VYVF9EQVRBX0JERV9DT1VOVCkgeworCQkJCWRhdGFfYmRlLT50dXMuZi5iZGVGbGFncyA9IEJVRkZfVFlQRV9CREVfNjQ7CisJCQkJZGF0YV9iZGUtPnR1cy5mLmJkZVNpemUgPSBzZ19kbWFfbGVuKHNnZWwpOworCQkJCWRhdGFfYmRlLT5hZGRyTG93ID0gcHV0UGFkZHJMb3cocGh5c2FkZHIpOworCQkJCWRhdGFfYmRlLT5hZGRySGlnaCA9IHB1dFBhZGRySGlnaChwaHlzYWRkcik7CisJCQkJZGF0YV9iZGUrKzsKKwkJCX0gZWxzZSB7CisJCQkJYnBsLT50dXMuZi5iZGVGbGFncyA9IEJVRkZfVFlQRV9CREVfNjQ7CisJCQkJYnBsLT50dXMuZi5iZGVTaXplID0gc2dfZG1hX2xlbihzZ2VsKTsKKwkJCQlicGwtPnR1cy53ID0gbGUzMl90b19jcHUoYnBsLT50dXMudyk7CisJCQkJYnBsLT5hZGRyTG93ID0KKwkJCQkJbGUzMl90b19jcHUocHV0UGFkZHJMb3cocGh5c2FkZHIpKTsKKwkJCQlicGwtPmFkZHJIaWdoID0KKwkJCQkJbGUzMl90b19jcHUocHV0UGFkZHJIaWdoKHBoeXNhZGRyKSk7CisJCQkJYnBsKys7CisJCQl9CiAJCX0KIAl9CiAKIAkvKgogCSAqIEZpbmlzaCBpbml0aWFsaXppbmcgdGhvc2UgSU9DQiBmaWVsZHMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHRoZQotCSAqIHNjc2lfY21uZCByZXF1ZXN0X2J1ZmZlci4gIE5vdGUgdGhhdCB0aGUgYmRlU2l6ZSBpcyBleHBsaWNpdGx5Ci0JICogcmVpbml0aWFsaXplZCBzaW5jZSBhbGwgaW9jYiBtZW1vcnkgcmVzb3VyY2VzIGFyZSB1c2VkIG1hbnkgdGltZXMKLQkgKiBmb3IgdHJhbnNtaXQsIHJlY2VpdmUsIGFuZCBjb250aW51YXRpb24gYnBsJ3MuCisJICogc2NzaV9jbW5kIHJlcXVlc3RfYnVmZmVyLiAgTm90ZSB0aGF0IGZvciBTTEktMiB0aGUgYmRlU2l6ZSBpcworCSAqIGV4cGxpY2l0bHkgcmVpbml0aWFsaXplZCBhbmQgZm9yIFNMSS0zIHRoZSBleHRlbmRlZCBiZGUgY291bnQgaXMKKwkgKiBleHBsaWNpdGx5IHJlaW5pdGlhbGl6ZWQgc2luY2UgYWxsIGlvY2IgbWVtb3J5IHJlc291cmNlcyBhcmUgcmV1c2VkLgogCSAqLwotCWlvY2JfY21kLT51bi5mY3BpNjQuYmRsLmJkZVNpemUgPSAoMiAqIHNpemVvZiAoc3RydWN0IHVscF9iZGU2NCkpOwotCWlvY2JfY21kLT51bi5mY3BpNjQuYmRsLmJkZVNpemUgKz0KLQkJKG51bV9iZGUgKiBzaXplb2YgKHN0cnVjdCB1bHBfYmRlNjQpKTsKLQlpb2NiX2NtZC0+dWxwQmRlQ291bnQgPSAxOwotCWlvY2JfY21kLT51bHBMZSA9IDE7CisJaWYgKHBoYmEtPnNsaV9yZXYgPT0gMykgeworCQlpZiAobnVtX2JkZSA+IExQRkNfRVhUX0RBVEFfQkRFX0NPVU5UKSB7CisJCQkvKgorCQkJICogVGhlIGV4dGVuZGVkIElPQ0IgZm9ybWF0IGNhbiBvbmx5IGZpdCAzIEJERSBvciBhIEJQTC4KKwkJCSAqIFRoaXMgSS9PIGhhcyBtb3JlIHRoYW4gMyBCREUgc28gdGhlIDFzdCBkYXRhIGJkZSB3aWxsCisJCQkgKiBiZSBhIEJQTCB0aGF0IGlzIGZpbGxlZCBpbiBoZXJlLgorCQkJICovCisJCQlwaHlzYWRkciA9IGxwZmNfY21kLT5kbWFfaGFuZGxlOworCQkJZGF0YV9iZGUtPnR1cy5mLmJkZUZsYWdzID0gQlVGRl9UWVBFX0JMUF82NDsKKwkJCWRhdGFfYmRlLT50dXMuZi5iZGVTaXplID0gKG51bV9iZGUgKgorCQkJCQkJICAgc2l6ZW9mKHN0cnVjdCB1bHBfYmRlNjQpKTsKKwkJCXBoeXNhZGRyICs9IChzaXplb2Yoc3RydWN0IGZjcF9jbW5kKSArCisJCQkJICAgICBzaXplb2Yoc3RydWN0IGZjcF9yc3ApICsKKwkJCQkgICAgICgyICogc2l6ZW9mKHN0cnVjdCB1bHBfYmRlNjQpKSk7CisJCQlkYXRhX2JkZS0+YWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGh5c2FkZHIpOworCQkJZGF0YV9iZGUtPmFkZHJMb3cgPSBwdXRQYWRkckxvdyhwaHlzYWRkcik7CisJCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25jZSBiZGUgYW5kIGRhdGEgYnBsICovCisJCQlpb2NiX2NtZC0+dW5zbGkzLmZjcF9leHQuZWJkZV9jb3VudCA9IDI7CisJCX0gZWxzZSB7CisJCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25jZSBiZGUgYW5kIGRhdGEgYmRlcyAqLworCQkJaW9jYl9jbWQtPnVuc2xpMy5mY3BfZXh0LmViZGVfY291bnQgPSAobnVtX2JkZSArIDEpOworCQl9CisJfSBlbHNlIHsKKwkJaW9jYl9jbWQtPnVuLmZjcGk2NC5iZGwuYmRlU2l6ZSA9CisJCQkoKG51bV9iZGUgKyAyKSAqIHNpemVvZihzdHJ1Y3QgdWxwX2JkZTY0KSk7CisJfQogCWZjcF9jbW5kLT5mY3BEbCA9IGNwdV90b19iZTMyKHNjc2lfYnVmZmxlbihzY3NpX2NtbmQpKTsKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3NlbmRfc2NzaV9lcnJvcl9ldmVudDogUG9zdHMgYW4gZXZlbnQgd2hlbiB0aGVyZSBpcyBTQ1NJIGVycm9yLgorICogQHBoYmE6IFBvaW50ZXIgdG8gaGJhIGNvbnRleHQgb2JqZWN0LgorICogQHZwb3J0OiBQb2ludGVyIHRvIHZwb3J0IG9iamVjdC4KKyAqIEBscGZjX2NtZDogUG9pbnRlciB0byBscGZjIHNjc2kgY29tbWFuZCB3aGljaCByZXBvcnRlZCB0aGUgZXJyb3IuCisgKiBAcnNwX2lvY2I6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYiBvYmplY3Qgd2hpY2ggcmVwb3J0ZWQgZXJyb3IuCisgKgorICogVGhpcyBmdW5jdGlvbiBwb3N0cyBhbiBldmVudCB3aGVuIHRoZXJlIGlzIGEgU0NTSSBjb21tYW5kIHJlcG9ydGluZworICogZXJyb3IgZnJvbSB0aGUgc2NzaSBkZXZpY2UuCisgKiovCitzdGF0aWMgdm9pZAorbHBmY19zZW5kX3Njc2lfZXJyb3JfZXZlbnQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCisJCXN0cnVjdCBscGZjX3Njc2lfYnVmICpscGZjX2NtZCwgc3RydWN0IGxwZmNfaW9jYnEgKnJzcF9pb2NiKSB7CisJc3RydWN0IHNjc2lfY21uZCAqY21uZCA9IGxwZmNfY21kLT5wQ21kOworCXN0cnVjdCBmY3BfcnNwICpmY3Byc3AgPSBscGZjX2NtZC0+ZmNwX3JzcDsKKwl1aW50MzJfdCByZXNwX2luZm8gPSBmY3Byc3AtPnJzcFN0YXR1czI7CisJdWludDMyX3Qgc2NzaV9zdGF0dXMgPSBmY3Byc3AtPnJzcFN0YXR1czM7CisJdWludDMyX3QgZmNwaV9wYXJtID0gcnNwX2lvY2ItPmlvY2IudW4uZmNwaS5mY3BpX3Bhcm07CisJc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50ICpmYXN0X3BhdGhfZXZ0ID0gTlVMTDsKKwlzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqcG5vZGUgPSBscGZjX2NtZC0+cmRhdGEtPnBub2RlOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBJZiB0aGVyZSBpcyBxdWV1ZWZ1bGwgb3IgYnVzeSBjb25kaXRpb24gc2VuZCBhIHNjc2kgZXZlbnQgKi8KKwlpZiAoKGNtbmQtPnJlc3VsdCA9PSBTQU1fU1RBVF9UQVNLX1NFVF9GVUxMKSB8fAorCQkoY21uZC0+cmVzdWx0ID09IFNBTV9TVEFUX0JVU1kpKSB7CisJCWZhc3RfcGF0aF9ldnQgPSBscGZjX2FsbG9jX2Zhc3RfZXZ0KHBoYmEpOworCQlpZiAoIWZhc3RfcGF0aF9ldnQpCisJCQlyZXR1cm47CisJCWZhc3RfcGF0aF9ldnQtPnVuLnNjc2lfZXZ0LmV2ZW50X3R5cGUgPQorCQkJRkNfUkVHX1NDU0lfRVZFTlQ7CisJCWZhc3RfcGF0aF9ldnQtPnVuLnNjc2lfZXZ0LnN1YmNhdGVnb3J5ID0KKwkJKGNtbmQtPnJlc3VsdCA9PSBTQU1fU1RBVF9UQVNLX1NFVF9GVUxMKSA/CisJCUxQRkNfRVZFTlRfUUZVTEwgOiBMUEZDX0VWRU5UX0RFVkJTWTsKKwkJZmFzdF9wYXRoX2V2dC0+dW4uc2NzaV9ldnQubHVuID0gY21uZC0+ZGV2aWNlLT5sdW47CisJCW1lbWNweSgmZmFzdF9wYXRoX2V2dC0+dW4uc2NzaV9ldnQud3dwbiwKKwkJCSZwbm9kZS0+bmxwX3BvcnRuYW1lLCBzaXplb2Yoc3RydWN0IGxwZmNfbmFtZSkpOworCQltZW1jcHkoJmZhc3RfcGF0aF9ldnQtPnVuLnNjc2lfZXZ0Lnd3bm4sCisJCQkmcG5vZGUtPm5scF9ub2RlbmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwl9IGVsc2UgaWYgKChyZXNwX2luZm8gJiBTTlNfTEVOX1ZBTElEKSAmJiBmY3Byc3AtPnJzcFNuc0xlbiAmJgorCQkoKGNtbmQtPmNtbmRbMF0gPT0gUkVBRF8xMCkgfHwgKGNtbmQtPmNtbmRbMF0gPT0gV1JJVEVfMTApKSkgeworCQlmYXN0X3BhdGhfZXZ0ID0gbHBmY19hbGxvY19mYXN0X2V2dChwaGJhKTsKKwkJaWYgKCFmYXN0X3BhdGhfZXZ0KQorCQkJcmV0dXJuOworCQlmYXN0X3BhdGhfZXZ0LT51bi5jaGVja19jb25kX2V2dC5zY3NpX2V2ZW50LmV2ZW50X3R5cGUgPQorCQkJRkNfUkVHX1NDU0lfRVZFTlQ7CisJCWZhc3RfcGF0aF9ldnQtPnVuLmNoZWNrX2NvbmRfZXZ0LnNjc2lfZXZlbnQuc3ViY2F0ZWdvcnkgPQorCQkJTFBGQ19FVkVOVF9DSEVDS19DT05EOworCQlmYXN0X3BhdGhfZXZ0LT51bi5jaGVja19jb25kX2V2dC5zY3NpX2V2ZW50Lmx1biA9CisJCQljbW5kLT5kZXZpY2UtPmx1bjsKKwkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5jaGVja19jb25kX2V2dC5zY3NpX2V2ZW50Lnd3cG4sCisJCQkmcG5vZGUtPm5scF9wb3J0bmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5jaGVja19jb25kX2V2dC5zY3NpX2V2ZW50Lnd3bm4sCisJCQkmcG5vZGUtPm5scF9ub2RlbmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJZmFzdF9wYXRoX2V2dC0+dW4uY2hlY2tfY29uZF9ldnQuc2Vuc2Vfa2V5ID0KKwkJCWNtbmQtPnNlbnNlX2J1ZmZlclsyXSAmIDB4ZjsKKwkJZmFzdF9wYXRoX2V2dC0+dW4uY2hlY2tfY29uZF9ldnQuYXNjID0gY21uZC0+c2Vuc2VfYnVmZmVyWzEyXTsKKwkJZmFzdF9wYXRoX2V2dC0+dW4uY2hlY2tfY29uZF9ldnQuYXNjcSA9IGNtbmQtPnNlbnNlX2J1ZmZlclsxM107CisJfSBlbHNlIGlmICgoY21uZC0+c2NfZGF0YV9kaXJlY3Rpb24gPT0gRE1BX0ZST01fREVWSUNFKSAmJgorCQkgICAgIGZjcGlfcGFybSAmJgorCQkgICAgICgoYmUzMl90b19jcHUoZmNwcnNwLT5yc3BSZXNJZCkgIT0gZmNwaV9wYXJtKSB8fAorCQkJKChzY3NpX3N0YXR1cyA9PSBTQU1fU1RBVF9HT09EKSAmJgorCQkJIShyZXNwX2luZm8gJiAoUkVTSURfVU5ERVIgfCBSRVNJRF9PVkVSKSkpKSkgeworCQkvKgorCQkgKiBJZiBzdGF0dXMgaXMgZ29vZCBvciByZXNpZCBkb2VzIG5vdCBtYXRjaCB3aXRoIGZjcF9wYXJhbSBhbmQKKwkJICogdGhlcmUgaXMgdmFsaWQgZmNwaV9wYXJtLCB0aGVuIHRoZXJlIGlzIGEgcmVhZF9jaGVjayBlcnJvcgorCQkgKi8KKwkJZmFzdF9wYXRoX2V2dCA9IGxwZmNfYWxsb2NfZmFzdF9ldnQocGhiYSk7CisJCWlmICghZmFzdF9wYXRoX2V2dCkKKwkJCXJldHVybjsKKwkJZmFzdF9wYXRoX2V2dC0+dW4ucmVhZF9jaGVja19lcnJvci5oZWFkZXIuZXZlbnRfdHlwZSA9CisJCQlGQ19SRUdfRkFCUklDX0VWRU5UOworCQlmYXN0X3BhdGhfZXZ0LT51bi5yZWFkX2NoZWNrX2Vycm9yLmhlYWRlci5zdWJjYXRlZ29yeSA9CisJCQlMUEZDX0VWRU5UX0ZDUFJEQ0hLRVJSOworCQltZW1jcHkoJmZhc3RfcGF0aF9ldnQtPnVuLnJlYWRfY2hlY2tfZXJyb3IuaGVhZGVyLnd3cG4sCisJCQkmcG5vZGUtPm5scF9wb3J0bmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKwkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5yZWFkX2NoZWNrX2Vycm9yLmhlYWRlci53d25uLAorCQkJJnBub2RlLT5ubHBfbm9kZW5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJCWZhc3RfcGF0aF9ldnQtPnVuLnJlYWRfY2hlY2tfZXJyb3IubHVuID0gY21uZC0+ZGV2aWNlLT5sdW47CisJCWZhc3RfcGF0aF9ldnQtPnVuLnJlYWRfY2hlY2tfZXJyb3Iub3Bjb2RlID0gY21uZC0+Y21uZFswXTsKKwkJZmFzdF9wYXRoX2V2dC0+dW4ucmVhZF9jaGVja19lcnJvci5mY3BpcGFyYW0gPQorCQkJZmNwaV9wYXJtOworCX0gZWxzZQorCQlyZXR1cm47CisKKwlmYXN0X3BhdGhfZXZ0LT52cG9ydCA9IHZwb3J0OworCXNwaW5fbG9ja19pcnFzYXZlKCZwaGJhLT5oYmFsb2NrLCBmbGFncyk7CisJbGlzdF9hZGRfdGFpbCgmZmFzdF9wYXRoX2V2dC0+d29ya19ldnQuZXZ0X2xpc3RwLCAmcGhiYS0+d29ya19saXN0KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5oYmFsb2NrLCBmbGFncyk7CisJbHBmY193b3JrZXJfd2FrZV91cChwaGJhKTsKKwlyZXR1cm47Cit9CiBzdGF0aWMgdm9pZAogbHBmY19zY3NpX3VucHJlcF9kbWFfYnVmKHN0cnVjdCBscGZjX2hiYSAqIHBoYmEsIHN0cnVjdCBscGZjX3Njc2lfYnVmICogcHNiKQogewpAQCAtNDExLDYgKzcwOSw3IEBACiAJdWludDMyX3QgcnNwbGVuID0gMDsKIAl1aW50MzJfdCBsb2dpdCA9IExPR19GQ1AgfCBMT0dfRkNQX0VSUk9SOwogCisKIAkvKgogCSAqICBJZiB0aGlzIGlzIGEgdGFzayBtYW5hZ2VtZW50IGNvbW1hbmQsIHRoZXJlIGlzIG5vCiAJICogIHNjc2kgcGFja2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxwZmNfY21kLiAgVGhlIGRyaXZlcgpAQCAtNTI2LDYgKzgyNSw3IEBACiAKICBvdXQ6CiAJY21uZC0+cmVzdWx0ID0gU2NzaVJlc3VsdChob3N0X3N0YXR1cywgc2NzaV9zdGF0dXMpOworCWxwZmNfc2VuZF9zY3NpX2Vycm9yX2V2ZW50KHZwb3J0LT5waGJhLCB2cG9ydCwgbHBmY19jbWQsIHJzcF9pb2NiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTU0Miw5ICs4NDIsMTEgQEAKIAlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsICp0bXBfc2RldjsKIAlpbnQgZGVwdGggPSAwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGxwZmNfZmFzdF9wYXRoX2V2ZW50ICpmYXN0X3BhdGhfZXZ0OwogCiAJbHBmY19jbWQtPnJlc3VsdCA9IHBJb2NiT3V0LT5pb2NiLnVuLnVscFdvcmRbNF07CiAJbHBmY19jbWQtPnN0YXR1cyA9IHBJb2NiT3V0LT5pb2NiLnVscFN0YXR1czsKKwlhdG9taWNfZGVjKCZwbm9kZS0+Y21kX3BlbmRpbmcpOwogCiAJaWYgKGxwZmNfY21kLT5zdGF0dXMpIHsKIAkJaWYgKGxwZmNfY21kLT5zdGF0dXMgPT0gSU9TVEFUX0xPQ0FMX1JFSkVDVCAmJgpAQCAtNTcwLDEyICs4NzIsMzYgQEAKIAkJCWJyZWFrOwogCQljYXNlIElPU1RBVF9OUE9SVF9CU1k6CiAJCWNhc2UgSU9TVEFUX0ZBQlJJQ19CU1k6Ci0JCQljbWQtPnJlc3VsdCA9IFNjc2lSZXN1bHQoRElEX0JVU19CVVNZLCAwKTsKKwkJCWNtZC0+cmVzdWx0ID0gU2NzaVJlc3VsdChESURfVFJBTlNQT1JUX0RJU1JVUFRFRCwgMCk7CisJCQlmYXN0X3BhdGhfZXZ0ID0gbHBmY19hbGxvY19mYXN0X2V2dChwaGJhKTsKKwkJCWlmICghZmFzdF9wYXRoX2V2dCkKKwkJCQlicmVhazsKKwkJCWZhc3RfcGF0aF9ldnQtPnVuLmZhYnJpY19ldnQuZXZlbnRfdHlwZSA9CisJCQkJRkNfUkVHX0ZBQlJJQ19FVkVOVDsKKwkJCWZhc3RfcGF0aF9ldnQtPnVuLmZhYnJpY19ldnQuc3ViY2F0ZWdvcnkgPQorCQkJCShscGZjX2NtZC0+c3RhdHVzID09IElPU1RBVF9OUE9SVF9CU1kpID8KKwkJCQlMUEZDX0VWRU5UX1BPUlRfQlVTWSA6IExQRkNfRVZFTlRfRkFCUklDX0JVU1k7CisJCQlpZiAocG5vZGUgJiYgTkxQX0NIS19OT0RFX0FDVChwbm9kZSkpIHsKKwkJCQltZW1jcHkoJmZhc3RfcGF0aF9ldnQtPnVuLmZhYnJpY19ldnQud3dwbiwKKwkJCQkJJnBub2RlLT5ubHBfcG9ydG5hbWUsCisJCQkJCXNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJCQkJbWVtY3B5KCZmYXN0X3BhdGhfZXZ0LT51bi5mYWJyaWNfZXZ0Lnd3bm4sCisJCQkJCSZwbm9kZS0+bmxwX25vZGVuYW1lLAorCQkJCQlzaXplb2Yoc3RydWN0IGxwZmNfbmFtZSkpOworCQkJfQorCQkJZmFzdF9wYXRoX2V2dC0+dnBvcnQgPSB2cG9ydDsKKwkJCWZhc3RfcGF0aF9ldnQtPndvcmtfZXZ0LmV2dCA9CisJCQkJTFBGQ19FVlRfRkFTVFBBVEhfTUdNVF9FVlQ7CisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmcGhiYS0+aGJhbG9jaywgZmxhZ3MpOworCQkJbGlzdF9hZGRfdGFpbCgmZmFzdF9wYXRoX2V2dC0+d29ya19ldnQuZXZ0X2xpc3RwLAorCQkJCSZwaGJhLT53b3JrX2xpc3QpOworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGhiYS0+aGJhbG9jaywgZmxhZ3MpOworCQkJbHBmY193b3JrZXJfd2FrZV91cChwaGJhKTsKIAkJCWJyZWFrOwogCQljYXNlIElPU1RBVF9MT0NBTF9SRUpFQ1Q6Ci0JCQlpZiAobHBmY19jbWQtPnJlc3VsdCA9PSBSSlRfVU5BVkFJTF9QRVJNIHx8CisJCQlpZiAobHBmY19jbWQtPnJlc3VsdCA9PSBJT0VSUl9JTlZBTElEX1JQSSB8fAogCQkJICAgIGxwZmNfY21kLT5yZXN1bHQgPT0gSU9FUlJfTk9fUkVTT1VSQ0VTIHx8Ci0JCQkgICAgbHBmY19jbWQtPnJlc3VsdCA9PSBSSlRfTE9HSU5fUkVRVUlSRUQpIHsKKwkJCSAgICBscGZjX2NtZC0+cmVzdWx0ID09IElPRVJSX0FCT1JUX1JFUVVFU1RFRCkgewogCQkJCWNtZC0+cmVzdWx0ID0gU2NzaVJlc3VsdChESURfUkVRVUVVRSwgMCk7CiAJCQkJYnJlYWs7CiAJCQl9IC8qIGVsc2U6IGZhbGwgdGhyb3VnaCAqLwpAQCAtNTg2LDcgKzkxMiw4IEBACiAKIAkJaWYgKCFwbm9kZSB8fCAhTkxQX0NIS19OT0RFX0FDVChwbm9kZSkKIAkJICAgIHx8IChwbm9kZS0+bmxwX3N0YXRlICE9IE5MUF9TVEVfTUFQUEVEX05PREUpKQotCQkJY21kLT5yZXN1bHQgPSBTY3NpUmVzdWx0KERJRF9CVVNfQlVTWSwgU0FNX1NUQVRfQlVTWSk7CisJCQljbWQtPnJlc3VsdCA9IFNjc2lSZXN1bHQoRElEX1RSQU5TUE9SVF9ESVNSVVBURUQsCisJCQkJCQkgU0FNX1NUQVRfQlVTWSk7CiAJfSBlbHNlIHsKIAkJY21kLT5yZXN1bHQgPSBTY3NpUmVzdWx0KERJRF9PSywgMCk7CiAJfQpAQCAtNjAyLDggKzkyOSwzMiBAQAogCQkJCSBzY3NpX2dldF9yZXNpZChjbWQpKTsKIAl9CiAKKwlscGZjX3VwZGF0ZV9zdGF0cyhwaGJhLCBscGZjX2NtZCk7CiAJcmVzdWx0ID0gY21kLT5yZXN1bHQ7CiAJc2RldiA9IGNtZC0+ZGV2aWNlOworCWlmICh2cG9ydC0+Y2ZnX21heF9zY3NpY21wbF90aW1lICYmCisJICAgdGltZV9hZnRlcihqaWZmaWVzLCBscGZjX2NtZC0+c3RhcnRfdGltZSArCisJCW1zZWNzX3RvX2ppZmZpZXModnBvcnQtPmNmZ19tYXhfc2NzaWNtcGxfdGltZSkpKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKHNkZXYtPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQlpZiAoKHBub2RlLT5jbWRfcWRlcHRoID4gYXRvbWljX3JlYWQoJnBub2RlLT5jbWRfcGVuZGluZykgJiYKKwkJICAgIChhdG9taWNfcmVhZCgmcG5vZGUtPmNtZF9wZW5kaW5nKSA+IExQRkNfTUlOX1RHVF9RREVQVEgpICYmCisJCSAgICAoKGNtZC0+Y21uZFswXSA9PSBSRUFEXzEwKSB8fCAoY21kLT5jbW5kWzBdID09IFdSSVRFXzEwKSkpKQorCQkJcG5vZGUtPmNtZF9xZGVwdGggPSBhdG9taWNfcmVhZCgmcG5vZGUtPmNtZF9wZW5kaW5nKTsKKworCQlwbm9kZS0+bGFzdF9jaGFuZ2VfdGltZSA9IGppZmZpZXM7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2Rldi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CisJfSBlbHNlIGlmICgocG5vZGUtPmNtZF9xZGVwdGggPCBMUEZDX01BWF9UR1RfUURFUFRIKSAmJgorCQkgICB0aW1lX2FmdGVyKGppZmZpZXMsIHBub2RlLT5sYXN0X2NoYW5nZV90aW1lICsKKwkJCW1zZWNzX3RvX2ppZmZpZXMoTFBGQ19UR1RRX0lOVEVSVkFMKSkpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoc2Rldi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CisJCXBub2RlLT5jbWRfcWRlcHRoICs9IHBub2RlLT5jbWRfcWRlcHRoICoKKwkJCUxQRkNfVEdUUV9SQU1QVVBfUENFTlQgLyAxMDA7CisJCWlmIChwbm9kZS0+Y21kX3FkZXB0aCA+IExQRkNfTUFYX1RHVF9RREVQVEgpCisJCQlwbm9kZS0+Y21kX3FkZXB0aCA9IExQRkNfTUFYX1RHVF9RREVQVEg7CisJCXBub2RlLT5sYXN0X2NoYW5nZV90aW1lID0gamlmZmllczsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzZGV2LT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKKwl9CisKIAlscGZjX3Njc2lfdW5wcmVwX2RtYV9idWYocGhiYSwgbHBmY19jbWQpOwogCWNtZC0+c2NzaV9kb25lKGNtZCk7CiAKQEAgLTY0Nyw2ICs5OTgsOSBAQAogCQkJCXBub2RlLT5sYXN0X3JhbXBfdXBfdGltZSA9IGppZmZpZXM7CiAJCQl9CiAJCX0KKwkJbHBmY19zZW5kX3NkZXZfcXVldWVkZXB0aF9jaGFuZ2VfZXZlbnQocGhiYSwgdnBvcnQsIHBub2RlLAorCQkJMHhGRkZGRkZGRiwKKwkJCXNkZXYtPnF1ZXVlX2RlcHRoIC0gMSwgc2Rldi0+cXVldWVfZGVwdGgpOwogCX0KIAogCS8qCkBAIC02NzYsNiArMTAzMCw5IEBACiAJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX1dBUk5JTkcsIExPR19GQ1AsCiAJCQkJCSAiMDcxMSBkZXRlY3RlZCBxdWV1ZSBmdWxsIC0gbHVuIHF1ZXVlICIKIAkJCQkJICJkZXB0aCBhZGp1c3RlZCB0byAlZC5cbiIsIGRlcHRoKTsKKwkJCWxwZmNfc2VuZF9zZGV2X3F1ZXVlZGVwdGhfY2hhbmdlX2V2ZW50KHBoYmEsIHZwb3J0LAorCQkJCXBub2RlLCAweEZGRkZGRkZGLAorCQkJCWRlcHRoKzEsIGRlcHRoKTsKIAkJfQogCX0KIApAQCAtNjkyLDYgKzEwNDksMjQgQEAKIAlscGZjX3JlbGVhc2Vfc2NzaV9idWYocGhiYSwgbHBmY19jbWQpOwogfQogCisvKioKKyAqIGxwZmNfZmNwY21kX3RvX2lvY2IgLSBjb3B5IHRoZSBmY3BfY21kIGRhdGEgaW50byB0aGUgSU9DQi4KKyAqIEBkYXRhOiBBIHBvaW50ZXIgdG8gdGhlIGltbWVkaWF0ZSBjb21tYW5kIGRhdGEgcG9ydGlvbiBvZiB0aGUgSU9DQi4KKyAqIEBmY3BfY21uZDogVGhlIEZDUCBDb21tYW5kIHRoYXQgaXMgcHJvdmlkZWQgYnkgdGhlIFNDU0kgbGF5ZXIuCisgKgorICogVGhlIHJvdXRpbmUgY29waWVzIHRoZSBlbnRpcmUgRkNQIGNvbW1hbmQgZnJvbSBAZmNwX2NtbmQgdG8gQGRhdGEgd2hpbGUKKyAqIGJ5dGUgc3dhcHBpbmcgdGhlIGRhdGEgdG8gYmlnIGVuZGlhbiBmb3JtYXQgZm9yIHRyYW5zbWlzc2lvbiBvbiB0aGUgd2lyZS4KKyAqKi8KK3N0YXRpYyB2b2lkCitscGZjX2ZjcGNtZF90b19pb2NiKHVpbnQ4X3QgKmRhdGEsIHN0cnVjdCBmY3BfY21uZCAqZmNwX2NtbmQpCit7CisJaW50IGksIGo7CisJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplb2Yoc3RydWN0IGZjcF9jbW5kKTsKKwkgICAgIGkgKz0gc2l6ZW9mKHVpbnQzMl90KSwgaisrKSB7CisJCSgodWludDMyX3QgKilkYXRhKVtqXSA9IGNwdV90b19iZTMyKCgodWludDMyX3QgKilmY3BfY21uZClbal0pOworCX0KK30KKwogc3RhdGljIHZvaWQKIGxwZmNfc2NzaV9wcmVwX2NtbmQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19zY3NpX2J1ZiAqbHBmY19jbWQsCiAJCSAgICBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqcG5vZGUpCkBAIC03NTgsNyArMTEzMyw4IEBACiAJCWZjcF9jbW5kLT5mY3BDbnRsMyA9IDA7CiAJCXBoYmEtPmZjNENvbnRyb2xSZXF1ZXN0cysrOwogCX0KLQorCWlmIChwaGJhLT5zbGlfcmV2ID09IDMpCisJCWxwZmNfZmNwY21kX3RvX2lvY2IoaW9jYl9jbWQtPnVuc2xpMy5mY3BfZXh0LmljZCwgZmNwX2NtbmQpOwogCS8qCiAJICogRmluaXNoIGluaXRpYWxpemluZyB0aG9zZSBJT0NCIGZpZWxkcyB0aGF0IGFyZSBpbmRlcGVuZGVudAogCSAqIG9mIHRoZSBzY3NpX2NtbmQgcmVxdWVzdF9idWZmZXIKQEAgLTc5OCwxMSArMTE3NCwxMyBAQAogCXBpb2NiID0gJnBpb2NicS0+aW9jYjsKIAogCWZjcF9jbW5kID0gbHBmY19jbWQtPmZjcF9jbW5kOwotCWludF90b19zY3NpbHVuKGx1biwgJmxwZmNfY21kLT5mY3BfY21uZC0+ZmNwX2x1bik7CisJLyogQ2xlYXIgb3V0IGFueSBvbGQgZGF0YSBpbiB0aGUgRkNQIGNvbW1hbmQgYXJlYSAqLworCW1lbXNldChmY3BfY21uZCwgMCwgc2l6ZW9mKHN0cnVjdCBmY3BfY21uZCkpOworCWludF90b19zY3NpbHVuKGx1biwgJmZjcF9jbW5kLT5mY3BfbHVuKTsKIAlmY3BfY21uZC0+ZmNwQ250bDIgPSB0YXNrX21nbXRfY21kOwotCisJaWYgKHZwb3J0LT5waGJhLT5zbGlfcmV2ID09IDMpCisJCWxwZmNfZmNwY21kX3RvX2lvY2IocGlvY2ItPnVuc2xpMy5mY3BfZXh0LmljZCwgZmNwX2NtbmQpOwogCXBpb2NiLT51bHBDb21tYW5kID0gQ01EX0ZDUF9JQ01ORDY0X0NSOwotCiAJcGlvY2ItPnVscENvbnRleHQgPSBuZGxwLT5ubHBfcnBpOwogCWlmIChuZGxwLT5ubHBfZmNwX2luZm8gJiBOTFBfRkNQXzJfREVWSUNFKSB7CiAJCXBpb2NiLT51bHBGQ1AyUmN2eSA9IDE7CkBAIC05NjcsOSArMTM0NSwxMiBAQAogCSAqIHRyYW5zcG9ydCBpcyBzdGlsbCB0cmFuc2l0aW9uaW5nLgogCSAqLwogCWlmICghbmRscCB8fCAhTkxQX0NIS19OT0RFX0FDVChuZGxwKSkgewotCQljbW5kLT5yZXN1bHQgPSBTY3NpUmVzdWx0KERJRF9CVVNfQlVTWSwgMCk7CisJCWNtbmQtPnJlc3VsdCA9IFNjc2lSZXN1bHQoRElEX1RSQU5TUE9SVF9ESVNSVVBURUQsIDApOwogCQlnb3RvIG91dF9mYWlsX2NvbW1hbmQ7CiAJfQorCWlmIChhdG9taWNfcmVhZCgmbmRscC0+Y21kX3BlbmRpbmcpID49IG5kbHAtPmNtZF9xZGVwdGgpCisJCWdvdG8gb3V0X2hvc3RfYnVzeTsKKwogCWxwZmNfY21kID0gbHBmY19nZXRfc2NzaV9idWYocGhiYSk7CiAJaWYgKGxwZmNfY21kID09IE5VTEwpIHsKIAkJbHBmY19hZGp1c3RfcXVldWVfZGVwdGgocGhiYSk7CkBAIC05ODAsNiArMTM2MSw3IEBACiAJCWdvdG8gb3V0X2hvc3RfYnVzeTsKIAl9CiAKKwlscGZjX2NtZC0+c3RhcnRfdGltZSA9IGppZmZpZXM7CiAJLyoKIAkgKiBTdG9yZSB0aGUgbWlkbGF5ZXIncyBjb21tYW5kIHN0cnVjdHVyZSBmb3IgdGhlIGNvbXBsZXRpb24gcGhhc2UKIAkgKiBhbmQgY29tcGxldGUgdGhlIGNvbW1hbmQgaW5pdGlhbGl6YXRpb24uCkBAIC05ODcsNiArMTM2OSw3IEBACiAJbHBmY19jbWQtPnBDbWQgID0gY21uZDsKIAlscGZjX2NtZC0+cmRhdGEgPSByZGF0YTsKIAlscGZjX2NtZC0+dGltZW91dCA9IDA7CisJbHBmY19jbWQtPnN0YXJ0X3RpbWUgPSBqaWZmaWVzOwogCWNtbmQtPmhvc3Rfc2NyaWJibGUgPSAodW5zaWduZWQgY2hhciAqKWxwZmNfY21kOwogCWNtbmQtPnNjc2lfZG9uZSA9IGRvbmU7CiAKQEAgLTk5Niw2ICsxMzc5LDcgQEAKIAogCWxwZmNfc2NzaV9wcmVwX2NtbmQodnBvcnQsIGxwZmNfY21kLCBuZGxwKTsKIAorCWF0b21pY19pbmMoJm5kbHAtPmNtZF9wZW5kaW5nKTsKIAllcnIgPSBscGZjX3NsaV9pc3N1ZV9pb2NiKHBoYmEsICZwaGJhLT5zbGkucmluZ1twc2xpLT5mY3BfcmluZ10sCiAJCQkJICAmbHBmY19jbWQtPmN1cl9pb2NicSwgU0xJX0lPQ0JfUkVUX0lPQ0IpOwogCWlmIChlcnIpCkBAIC0xMDEwLDYgKzEzOTQsNyBAQAogCXJldHVybiAwOwogCiAgb3V0X2hvc3RfYnVzeV9mcmVlX2J1ZjoKKwlhdG9taWNfZGVjKCZuZGxwLT5jbWRfcGVuZGluZyk7CiAJbHBmY19zY3NpX3VucHJlcF9kbWFfYnVmKHBoYmEsIGxwZmNfY21kKTsKIAlscGZjX3JlbGVhc2Vfc2NzaV9idWYocGhiYSwgbHBmY19jbWQpOwogIG91dF9ob3N0X2J1c3k6CkBAIC0xMTQ1LDYgKzE1MzAsNyBAQAogCWludCByZXQgPSBTVUNDRVNTOwogCWludCBzdGF0dXM7CiAJaW50IGNudDsKKwlzdHJ1Y3QgbHBmY19zY3NpX2V2ZW50X2hlYWRlciBzY3NpX2V2ZW50OwogCiAJbHBmY19ibG9ja19lcnJvcl9oYW5kbGVyKGNtbmQpOwogCS8qCkBAIC0xMTYzLDYgKzE1NDksMTkgQEAKIAkJCWJyZWFrOwogCQlwbm9kZSA9IHJkYXRhLT5wbm9kZTsKIAl9CisKKwlzY3NpX2V2ZW50LmV2ZW50X3R5cGUgPSBGQ19SRUdfU0NTSV9FVkVOVDsKKwlzY3NpX2V2ZW50LnN1YmNhdGVnb3J5ID0gTFBGQ19FVkVOVF9UR1RSRVNFVDsKKwlzY3NpX2V2ZW50Lmx1biA9IDA7CisJbWVtY3B5KHNjc2lfZXZlbnQud3dwbiwgJnBub2RlLT5ubHBfcG9ydG5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJbWVtY3B5KHNjc2lfZXZlbnQud3dubiwgJnBub2RlLT5ubHBfbm9kZW5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisKKwlmY19ob3N0X3Bvc3RfdmVuZG9yX2V2ZW50KHNob3N0LAorCQlmY19nZXRfZXZlbnRfbnVtYmVyKCksCisJCXNpemVvZihzY3NpX2V2ZW50KSwKKwkJKGNoYXIgKikmc2NzaV9ldmVudCwKKwkJU0NTSV9OTF9WSURfVFlQRV9QQ0kgfCBQQ0lfVkVORE9SX0lEX0VNVUxFWCk7CisKIAlpZiAoIXJkYXRhIHx8IHBub2RlLT5ubHBfc3RhdGUgIT0gTkxQX1NURV9NQVBQRURfTk9ERSkgewogCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0ZDUCwKIAkJCQkgIjA3MjEgTFVOIFJlc2V0IHJwb3J0ICIKQEAgLTEyNDIsMTAgKzE2NDEsMjMgQEAKIAlzdHJ1Y3QgbHBmY19oYmEgICAqcGhiYSA9IHZwb3J0LT5waGJhOwogCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwID0gTlVMTDsKIAlpbnQgbWF0Y2g7Ci0JaW50IHJldCA9IFNVQ0NFU1MsIHN0YXR1cywgaTsKKwlpbnQgcmV0ID0gU1VDQ0VTUywgc3RhdHVzID0gU1VDQ0VTUywgaTsKIAlpbnQgY250OwogCXN0cnVjdCBscGZjX3Njc2lfYnVmICogbHBmY19jbWQ7CiAJdW5zaWduZWQgbG9uZyBsYXRlcjsKKwlzdHJ1Y3QgbHBmY19zY3NpX2V2ZW50X2hlYWRlciBzY3NpX2V2ZW50OworCisJc2NzaV9ldmVudC5ldmVudF90eXBlID0gRkNfUkVHX1NDU0lfRVZFTlQ7CisJc2NzaV9ldmVudC5zdWJjYXRlZ29yeSA9IExQRkNfRVZFTlRfQlVTUkVTRVQ7CisJc2NzaV9ldmVudC5sdW4gPSAwOworCW1lbWNweShzY3NpX2V2ZW50Lnd3cG4sICZ2cG9ydC0+ZmNfcG9ydG5hbWUsIHNpemVvZihzdHJ1Y3QgbHBmY19uYW1lKSk7CisJbWVtY3B5KHNjc2lfZXZlbnQud3dubiwgJnZwb3J0LT5mY19ub2RlbmFtZSwgc2l6ZW9mKHN0cnVjdCBscGZjX25hbWUpKTsKKworCWZjX2hvc3RfcG9zdF92ZW5kb3JfZXZlbnQoc2hvc3QsCisJCWZjX2dldF9ldmVudF9udW1iZXIoKSwKKwkJc2l6ZW9mKHNjc2lfZXZlbnQpLAorCQkoY2hhciAqKSZzY3NpX2V2ZW50LAorCQlTQ1NJX05MX1ZJRF9UWVBFX1BDSSB8IFBDSV9WRU5ET1JfSURfRU1VTEVYKTsKIAogCWxwZmNfYmxvY2tfZXJyb3JfaGFuZGxlcihjbW5kKTsKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmggYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaAppbmRleCBkYWJhOTIzLi40MzdmMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaApAQCAtMTA3LDYgKzEwNywxMCBAQAogCiB9OwogCitzdHJ1Y3QgbHBmY19zY3NpY21kX2JrdCB7CisJdWludDMyX3QgY21kX2NvdW50OworfTsKKwogc3RydWN0IGxwZmNfc2NzaV9idWYgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpwQ21kOwpAQCAtMTM5LDYgKzE0Myw3IEBACiAJICovCiAJc3RydWN0IGxwZmNfaW9jYnEgY3VyX2lvY2JxOwogCXdhaXRfcXVldWVfaGVhZF90ICp3YWl0cTsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWU7CiB9OwogCiAjZGVmaW5lIExQRkNfU0NTSV9ETUFfRVhUX1NJWkUgMjY0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuYwppbmRleCA1MGZlMDc2Li44YWI1YmFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmMKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgImxwZmNfaHcuaCIKICNpbmNsdWRlICJscGZjX3NsaS5oIgorI2luY2x1ZGUgImxwZmNfbmwuaCIKICNpbmNsdWRlICJscGZjX2Rpc2MuaCIKICNpbmNsdWRlICJscGZjX3Njc2kuaCIKICNpbmNsdWRlICJscGZjLmgiCkBAIC02NiwxMCArNjcsMTYgQEAKIAlMUEZDX0FCT1JUX0lPQ0IKIH0gbHBmY19pb2NiX3R5cGU7CiAKLQkJLyogU0xJLTIvU0xJLTMgcHJvdmlkZSBkaWZmZXJlbnQgc2l6ZWQgaW9jYnMuICBHaXZlbiBhIHBvaW50ZXIKLQkJICogdG8gdGhlIHN0YXJ0IG9mIHRoZSByaW5nLCBhbmQgdGhlIHNsb3QgbnVtYmVyIG9mIHRoZQotCQkgKiBkZXNpcmVkIGlvY2IgZW50cnksIGNhbGMgYSBwb2ludGVyIHRvIHRoYXQgZW50cnkuCi0JCSAqLworLyoqCisgKiBscGZjX2NtZF9pb2NiOiBHZXQgbmV4dCBjb21tYW5kIGlvY2IgZW50cnkgaW4gdGhlIHJpbmcuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcHJpbmc6IFBvaW50ZXIgdG8gZHJpdmVyIFNMSSByaW5nIG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgcG9pbnRlciB0byBuZXh0IGNvbW1hbmQgaW9jYiBlbnRyeQorICogaW4gdGhlIGNvbW1hbmQgcmluZy4gVGhlIGNhbGxlciBtdXN0IGhvbGQgaGJhbG9jayB0byBwcmV2ZW50CisgKiBvdGhlciB0aHJlYWRzIGNvbnN1bWUgdGhlIG5leHQgY29tbWFuZCBpb2NiLgorICogU0xJLTIvU0xJLTMgcHJvdmlkZSBkaWZmZXJlbnQgc2l6ZWQgaW9jYnMuCisgKiovCiBzdGF0aWMgaW5saW5lIElPQ0JfdCAqCiBscGZjX2NtZF9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nKQogewpAQCAtNzcsNiArODQsMTYgQEAKIAkJCSAgIHByaW5nLT5jbWRpZHggKiBwaGJhLT5pb2NiX2NtZF9zaXplKTsKIH0KIAorLyoqCisgKiBscGZjX3Jlc3BfaW9jYjogR2V0IG5leHQgcmVzcG9uc2UgaW9jYiBlbnRyeSBpbiB0aGUgcmluZy4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBwb2ludGVyIHRvIG5leHQgcmVzcG9uc2UgaW9jYiBlbnRyeQorICogaW4gdGhlIHJlc3BvbnNlIHJpbmcuIFRoZSBjYWxsZXIgbXVzdCBob2xkIGhiYWxvY2sgdG8gbWFrZSBzdXJlCisgKiB0aGF0IG5vIG90aGVyIHRocmVhZCBjb25zdW1lIHRoZSBuZXh0IHJlc3BvbnNlIGlvY2IuCisgKiBTTEktMi9TTEktMyBwcm92aWRlIGRpZmZlcmVudCBzaXplZCBpb2Nicy4KKyAqKi8KIHN0YXRpYyBpbmxpbmUgSU9DQl90ICoKIGxwZmNfcmVzcF9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nKQogewpAQCAtODQsNiArMTAxLDE1IEBACiAJCQkgICBwcmluZy0+cnNwaWR4ICogcGhiYS0+aW9jYl9yc3Bfc2l6ZSk7CiB9CiAKKy8qKgorICogX19scGZjX3NsaV9nZXRfaW9jYnE6IEFsbG9jYXRlcyBhbiBpb2NiIG9iamVjdCBmcm9tIGlvY2IgcG9vbC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGhiYWxvY2sgaGVsZC4gVGhpcyBmdW5jdGlvbgorICogYWxsb2NhdGVzIGEgbmV3IGRyaXZlciBpb2NiIG9iamVjdCBmcm9tIHRoZSBpb2NiIHBvb2wuIElmIHRoZQorICogYWxsb2NhdGlvbiBpcyBzdWNjZXNzZnVsLCBpdCByZXR1cm5zIHBvaW50ZXIgdG8gdGhlIG5ld2x5CisgKiBhbGxvY2F0ZWQgaW9jYiBvYmplY3QgZWxzZSBpdCByZXR1cm5zIE5VTEwuCisgKiovCiBzdGF0aWMgc3RydWN0IGxwZmNfaW9jYnEgKgogX19scGZjX3NsaV9nZXRfaW9jYnEoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtOTQsNiArMTIwLDE1IEBACiAJcmV0dXJuIGlvY2JxOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2dldF9pb2NicTogQWxsb2NhdGVzIGFuIGlvY2Igb2JqZWN0IGZyb20gaW9jYiBwb29sLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9jayBoZWxkLiBUaGlzIGZ1bmN0aW9uCisgKiBhbGxvY2F0ZXMgYSBuZXcgZHJpdmVyIGlvY2Igb2JqZWN0IGZyb20gdGhlIGlvY2IgcG9vbC4gSWYgdGhlCisgKiBhbGxvY2F0aW9uIGlzIHN1Y2Nlc3NmdWwsIGl0IHJldHVybnMgcG9pbnRlciB0byB0aGUgbmV3bHkKKyAqIGFsbG9jYXRlZCBpb2NiIG9iamVjdCBlbHNlIGl0IHJldHVybnMgTlVMTC4KKyAqKi8KIHN0cnVjdCBscGZjX2lvY2JxICoKIGxwZmNfc2xpX2dldF9pb2NicShzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0xMDYsNiArMTQxLDE2IEBACiAJcmV0dXJuIGlvY2JxOwogfQogCisvKioKKyAqIF9fbHBmY19zbGlfcmVsZWFzZV9pb2NicTogUmVsZWFzZSBpb2NiIHRvIHRoZSBpb2NiIHBvb2wuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAaW9jYnE6IFBvaW50ZXIgdG8gZHJpdmVyIGlvY2Igb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkIHRvIHJlbGVhc2UgZHJpdmVyCisgKiBpb2NiIG9iamVjdCB0byB0aGUgaW9jYiBwb29sLiBUaGUgaW90YWcgaW4gdGhlIGlvY2Igb2JqZWN0CisgKiBkb2VzIG5vdCBjaGFuZ2UgZm9yIGVhY2ggdXNlIG9mIHRoZSBpb2NiIG9iamVjdC4gVGhpcyBmdW5jdGlvbgorICogY2xlYXJzIGFsbCBvdGhlciBmaWVsZHMgb2YgdGhlIGlvY2Igb2JqZWN0IHdoZW4gaXQgaXMgZnJlZWQuCisgKiovCiBzdGF0aWMgdm9pZAogX19scGZjX3NsaV9yZWxlYXNlX2lvY2JxKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmlvY2JxKQogewpAQCAtMTE4LDYgKzE2MywxNCBAQAogCWxpc3RfYWRkX3RhaWwoJmlvY2JxLT5saXN0LCAmcGhiYS0+bHBmY19pb2NiX2xpc3QpOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3JlbGVhc2VfaW9jYnE6IFJlbGVhc2UgaW9jYiB0byB0aGUgaW9jYiBwb29sLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQGlvY2JxOiBQb2ludGVyIHRvIGRyaXZlciBpb2NiIG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZCB0byByZWxlYXNlIHRoZSBpb2NiIHRvCisgKiBpb2NiIHBvb2wuCisgKiovCiB2b2lkCiBscGZjX3NsaV9yZWxlYXNlX2lvY2JxKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmlvY2JxKQogewpAQCAtMTMxLDEwICsxODQsMjEgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5oYmFsb2NrLCBpZmxhZ3MpOwogfQogCi0vKgotICogVHJhbnNsYXRlIHRoZSBpb2NiIGNvbW1hbmQgdG8gYW4gaW9jYiBjb21tYW5kIHR5cGUgdXNlZCB0byBkZWNpZGUgdGhlIGZpbmFsCi0gKiBkaXNwb3NpdGlvbiBvZiBlYWNoIGNvbXBsZXRlZCBJT0NCLgotICovCisvKioKKyAqIGxwZmNfc2xpX2lvY2JfY21kX3R5cGU6IEdldCB0aGUgaW9jYiB0eXBlLgorICogQGlvY2JfY21uZCA6IGlvY2IgY29tbWFuZCBjb2RlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHJpbmcgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB0byBnZXQgdGhlIGlvY2IgdHlwZS4KKyAqIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB0aGUgaW9jYiBjb21tYW5kIHRvIGFuIGlvY2IgY29tbWFuZCB0eXBlIHVzZWQgdG8KKyAqIGRlY2lkZSB0aGUgZmluYWwgZGlzcG9zaXRpb24gb2YgZWFjaCBjb21wbGV0ZWQgSU9DQi4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zCisgKiBMUEZDX1VOS05PV05fSU9DQiBpZiBpdCBpcyBhbiB1bnN1cHBvcnRlZCBpb2NiCisgKiBMUEZDX1NPTF9JT0NCICAgICBpZiBpdCBpcyBhIHNvbGljaXRlZCBpb2NiIGNvbXBsZXRpb24KKyAqIExQRkNfQUJPUlRfSU9DQiAgIGlmIGl0IGlzIGFuIGFib3J0IGlvY2IKKyAqIExQRkNfVU5TT0xfSU9DQiAgIGlmIGl0IGlzIGFuIHVuc29saWNpdGVkIGlvY2IKKyAqCisgKiBUaGUgY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueSBsb2NrLgorICoqLwogc3RhdGljIGxwZmNfaW9jYl90eXBlCiBscGZjX3NsaV9pb2NiX2NtZF90eXBlKHVpbnQ4X3QgaW9jYl9jbW5kKQogewpAQCAtMjMwLDYgKzI5NCwxNyBAQAogCXJldHVybiB0eXBlOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3JpbmdfbWFwOiBJc3N1ZSBjb25maWdfcmluZyBtYm94IGZvciBhbGwgcmluZ3MuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBTTEkgaW5pdGlhbGl6YXRpb24gY29kZQorICogdG8gY29uZmlndXJlIGV2ZXJ5IHJpbmcgb2YgdGhlIEhCQSdzIFNMSSBpbnRlcmZhY2UuIFRoZQorICogY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueSBsb2NrLiBUaGlzIGZ1bmN0aW9uIGlzc3VlcworICogYSBjb25maWdfcmluZyBtYWlsYm94IGNvbW1hbmQgZm9yIGVhY2ggcmluZy4KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwgZWxzZSByZXR1cm5zIGEgbmVnYXRpdmUKKyAqIGVycm9yIGNvZGUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9yaW5nX21hcChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0yNjIsNiArMzM3LDE4IEBACiAJcmV0dXJuIHJldDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9yaW5ndHhjbXBsX3B1dDogQWRkcyBuZXcgaW9jYiB0byB0aGUgdHhjbXBscS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHBpb2NiOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgaW9jYiBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBoYmFsb2NrIGhlbGQuIFRoZSBmdW5jdGlvbiBhZGRzIHRoZQorICogbmV3IGlvY2IgdG8gdHhjbXBscSBvZiB0aGUgZ2l2ZW4gcmluZy4gVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucworICogMC4gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIEVMUyByaW5nLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZgorICogdGhlcmUgaXMgYSB2cG9ydCBhc3NvY2lhdGVkIHdpdGggdGhlIEVMUyBjb21tYW5kLiBUaGlzIGZ1bmN0aW9uIGFsc28KKyAqIHN0YXJ0cyBlbHNfdG1vZnVuYyB0aW1lciBpZiB0aGlzIGlzIGFuIEVMUyBjb21tYW5kLgorICoqLwogc3RhdGljIGludAogbHBmY19zbGlfcmluZ3R4Y21wbF9wdXQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsCiAJCQlzdHJ1Y3QgbHBmY19pb2NicSAqcGlvY2IpCkBAIC0yODIsNiArMzY5LDE2IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19zbGlfcmluZ3R4X2dldDogR2V0IGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR4cS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkIHRvIGdldCBuZXh0CisgKiBpb2NiIGluIHR4cSBvZiB0aGUgZ2l2ZW4gcmluZy4gSWYgdGhlcmUgaXMgYW55IGlvY2IgaW4KKyAqIHRoZSB0eHEsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZpcnN0IGlvY2IgaW4gdGhlIGxpc3QgYWZ0ZXIKKyAqIHJlbW92aW5nIHRoZSBpb2NiIGZyb20gdGhlIGxpc3QsIGVsc2UgaXQgcmV0dXJucyBOVUxMLgorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX2lvY2JxICoKIGxwZmNfc2xpX3Jpbmd0eF9nZXQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcpCiB7CkBAIC0yOTMsMTQgKzM5MCwyNSBAQAogCXJldHVybiBjbWRfaW9jYjsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9uZXh0X2lvY2Jfc2xvdDogR2V0IG5leHQgaW9jYiBzbG90IGluIHRoZSByaW5nLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBoYmFsb2NrIGhlbGQgYW5kIHRoZSBjYWxsZXIgbXVzdCBwb3N0IHRoZQorICogaW9jYiB3aXRob3V0IHJlbGVhc2luZyB0aGUgbG9jay4gSWYgdGhlIGNhbGxlciByZWxlYXNlcyB0aGUgbG9jaywKKyAqIGlvY2Igc2xvdCByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgYXZhaWxhYmxlLgorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgcG9pbnRlciB0byB0aGUgbmV4dCBhdmFpbGFibGUgaW9jYiBzbG90IGlmIHRoZXJlCisgKiBpcyBhdmFpbGFibGUgc2xvdCBpbiB0aGUgcmluZywgZWxzZSBpdCByZXR1cm5zIE5VTEwuCisgKiBJZiB0aGUgZ2V0IGluZGV4IG9mIHRoZSByaW5nIGlzIGFoZWFkIG9mIHRoZSBwdXQgaW5kZXgsIHRoZSBmdW5jdGlvbgorICogd2lsbCBwb3N0IGFuIGVycm9yIGF0dGVudGlvbiBldmVudCB0byB0aGUgd29ya2VyIHRocmVhZCB0byB0YWtlIHRoZQorICogSEJBIHRvIG9mZmxpbmUgc3RhdGUuCisgKiovCiBzdGF0aWMgSU9DQl90ICoKIGxwZmNfc2xpX25leHRfaW9jYl9zbG90IChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZykKIHsKLQlzdHJ1Y3QgbHBmY19wZ3AgKnBncCA9IChwaGJhLT5zbGlfcmV2ID09IDMpID8KLQkJJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMzX3BncC5wb3J0W3ByaW5nLT5yaW5nbm9dIDoKLQkJJnBoYmEtPnNsaW0ycC0+bWJ4LnVzLnMyLnBvcnRbcHJpbmctPnJpbmdub107CisJc3RydWN0IGxwZmNfcGdwICpwZ3AgPSAmcGhiYS0+cG9ydF9ncFtwcmluZy0+cmluZ25vXTsKIAl1aW50MzJfdCAgbWF4X2NtZF9pZHggPSBwcmluZy0+bnVtQ2lvY2I7Ci0KIAlpZiAoKHByaW5nLT5uZXh0X2NtZGlkeCA9PSBwcmluZy0+Y21kaWR4KSAmJgogCSAgICgrK3ByaW5nLT5uZXh0X2NtZGlkeCA+PSBtYXhfY21kX2lkeCkpCiAJCXByaW5nLT5uZXh0X2NtZGlkeCA9IDA7CkBAIC0zMzYsNiArNDQ0LDE4IEBACiAJcmV0dXJuIGxwZmNfY21kX2lvY2IocGhiYSwgcHJpbmcpOwogfQogCisvKioKKyAqIGxwZmNfc2xpX25leHRfaW90YWc6IEdldCBhbiBpb3RhZyBmb3IgdGhlIGlvY2IuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAaW9jYnE6IFBvaW50ZXIgdG8gZHJpdmVyIGlvY2Igb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBhbiBpb3RhZyBmb3IgdGhlIGlvY2IuIElmIHRoZXJlIGlzIG5vIHVudXNlZCBpb3RhZyBhbmQKKyAqIHRoZSBpb2NicV9sb29rdXBfbGVuIDwgMHhmZmZmLCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBhIGJpZ2dlciBpb3RhZ19sb29rdXAKKyAqIGFycmF5IGFuZCBhc3NpZ25zIGEgbmV3IGlvdGFnLgorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFsbG9jYXRlZCBpb3RhZyBpZiBzdWNjZXNzZnVsLCBlbHNlIHJldHVybnMgemVyby4KKyAqIFplcm8gaXMgbm90IGEgdmFsaWQgaW90YWcuCisgKiBUaGUgY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueSBsb2NrLgorICoqLwogdWludDE2X3QKIGxwZmNfc2xpX25leHRfaW90YWcoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqaW9jYnEpCiB7CkBAIC0zOTksNiArNTE5LDIwIEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19zbGlfc3VibWl0X2lvY2I6IFN1Ym1pdCBhbiBpb2NiIHRvIHRoZSBmaXJtd2FyZS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQGlvY2I6IFBvaW50ZXIgdG8gaW9jYiBzbG90IGluIHRoZSByaW5nLgorICogQG5leHRpb2NiOiBQb2ludGVyIHRvIGRyaXZlciBpb2NiIG9iamVjdCB3aGljaCBuZWVkIHRvIGJlCisgKiAgICAgICAgICAgIHBvc3RlZCB0byBmaXJtd2FyZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGhiYWxvY2sgaGVsZCB0byBwb3N0IGEgbmV3IGlvY2IgdG8KKyAqIHRoZSBmaXJtd2FyZS4gVGhpcyBmdW5jdGlvbiBjb3BpZXMgdGhlIG5ldyBpb2NiIHRvIHJpbmcgaW9jYiBzbG90IGFuZAorICogdXBkYXRlcyB0aGUgcmluZyBwb2ludGVycy4gSXQgYWRkcyB0aGUgbmV3IGlvY2IgdG8gdHhjbXBscSBpZiB0aGVyZSBpcworICogYSBjb21wbGV0aW9uIGNhbGwgYmFjayBmb3IgdGhpcyBpb2NiIGVsc2UgdGhlIGZ1bmN0aW9uIHdpbGwgZnJlZSB0aGUKKyAqIGlvY2Igb2JqZWN0LgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2xpX3N1Ym1pdF9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQlJT0NCX3QgKmlvY2IsIHN0cnVjdCBscGZjX2lvY2JxICpuZXh0aW9jYikKQEAgLTQ0MSw2ICs1NzUsMTggQEAKIAl3cml0ZWwocHJpbmctPmNtZGlkeCwgJnBoYmEtPmhvc3RfZ3BbcHJpbmctPnJpbmdub10uY21kUHV0SW54KTsKIH0KIAorLyoqCisgKiBscGZjX3NsaV91cGRhdGVfZnVsbF9yaW5nOiBVcGRhdGUgdGhlIGNoaXAgYXR0ZW50aW9uIHJlZ2lzdGVyLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKgorICogVGhlIGNhbGxlciBpcyBub3QgcmVxdWlyZWQgdG8gaG9sZCBhbnkgbG9jayBmb3IgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICogVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjaGlwIGF0dGVudGlvbiBiaXRzIGZvciB0aGUgcmluZyB0byBpbmZvcm0gZmlybXdhcmUKKyAqIHRoYXQgdGhlcmUgYXJlIHBlbmRpbmcgd29yayB0byBiZSBkb25lIGZvciB0aGlzIHJpbmcgYW5kIHJlcXVlc3RzIGFuCisgKiBpbnRlcnJ1cHQgd2hlbiB0aGVyZSBpcyBzcGFjZSBhdmFpbGFibGUgaW4gdGhlIHJpbmcuIFRoaXMgZnVuY3Rpb24gaXMKKyAqIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXMgdW5hYmxlIHRvIHBvc3QgbW9yZSBpb2NicyB0byB0aGUgcmluZyBkdWUKKyAqIHRvIHVuYXZhaWxhYmlsaXR5IG9mIHNwYWNlIGluIHRoZSByaW5nLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2xpX3VwZGF0ZV9mdWxsX3Jpbmcoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcpCiB7CkBAIC00NjAsNiArNjA2LDE1IEBACiAJcHJpbmctPnN0YXRzLmlvY2JfY21kX2Z1bGwrKzsKIH0KIAorLyoqCisgKiBscGZjX3NsaV91cGRhdGVfcmluZzogVXBkYXRlIGNoaXAgYXR0ZW50aW9uIHJlZ2lzdGVyLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjaGlwIGF0dGVudGlvbiByZWdpc3RlciBiaXQgZm9yIHRoZQorICogZ2l2ZW4gcmluZyB0byBpbmZvcm0gSEJBIHRoYXQgdGhlcmUgaXMgbW9yZSB3b3JrIHRvIGJlIGRvbmUKKyAqIGluIHRoaXMgcmluZy4gVGhlIGNhbGxlciBpcyBub3QgcmVxdWlyZWQgdG8gaG9sZCBhbnkgbG9jay4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NsaV91cGRhdGVfcmluZyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZykKIHsKQEAgLTQ2OCwxMSArNjIzLDIyIEBACiAJLyoKIAkgKiBUZWxsIHRoZSBIQkEgdGhhdCB0aGVyZSBpcyB3b3JrIHRvIGRvIGluIHRoaXMgcmluZy4KIAkgKi8KLQl3bWIoKTsKLQl3cml0ZWwoQ0FfUjBBVFQgPDwgKHJpbmdubyAqIDQpLCBwaGJhLT5DQXJlZ2FkZHIpOwotCXJlYWRsKHBoYmEtPkNBcmVnYWRkcik7IC8qIGZsdXNoICovCisJaWYgKCEocGhiYS0+c2xpM19vcHRpb25zICYgTFBGQ19TTEkzX0NSUF9FTkFCTEVEKSkgeworCQl3bWIoKTsKKwkJd3JpdGVsKENBX1IwQVRUIDw8IChyaW5nbm8gKiA0KSwgcGhiYS0+Q0FyZWdhZGRyKTsKKwkJcmVhZGwocGhiYS0+Q0FyZWdhZGRyKTsgLyogZmx1c2ggKi8KKwl9CiB9CiAKKy8qKgorICogbHBmY19zbGlfcmVzdW1lX2lvY2I6IFByb2Nlc3MgaW9jYnMgaW4gdGhlIHR4cS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkIHRvIHBvc3QgcGVuZGluZyBpb2NicworICogaW4gdGhlIHR4cSB0byB0aGUgZmlybXdhcmUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gZHJpdmVyCisgKiBkZXRlY3RzIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgcmluZy4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NsaV9yZXN1bWVfaW9jYihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZykKIHsKQEAgLTUwNCw2ICs2NzAsMTYgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19zbGlfbmV4dF9oYnFfc2xvdDogR2V0IG5leHQgaGJxIGVudHJ5IGZvciB0aGUgSEJRLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQGhicW5vOiBIQlEgbnVtYmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkIHRvIGdldCB0aGUgbmV4dAorICogYXZhaWxhYmxlIHNsb3QgZm9yIHRoZSBnaXZlbiBIQlEuIElmIHRoZXJlIGlzIGZyZWUgc2xvdAorICogYXZhaWxhYmxlIGZvciB0aGUgSEJRIGl0IHdpbGwgcmV0dXJuIHBvaW50ZXIgdG8gdGhlIG5leHQgYXZhaWxhYmxlCisgKiBIQlEgZW50cnkgZWxzZSBpdCB3aWxsIHJldHVybiBOVUxMLgorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX2hicV9lbnRyeSAqCiBscGZjX3NsaV9uZXh0X2hicV9zbG90KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgaGJxbm8pCiB7CkBAIC01MzksNiArNzE1LDE1IEBACiAJCQloYnFwLT5oYnFQdXRJZHg7CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGJxYnVmX2ZyZWVfYWxsOiBGcmVlIGFsbCB0aGUgaGJxIGJ1ZmZlcnMuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQgdG8gZnJlZSBhbGwgdGhlCisgKiBoYnEgYnVmZmVycyB3aGlsZSB1bmluaXRpYWxpemluZyB0aGUgU0xJIGludGVyZmFjZS4gSXQgYWxzbworICogZnJlZXMgdGhlIEhCUSBidWZmZXJzIHJldHVybmVkIGJ5IHRoZSBmaXJtd2FyZSBidXQgbm90IHlldAorICogcHJvY2Vzc2VkIGJ5IHRoZSB1cHBlciBsYXllcnMuCisgKiovCiB2b2lkCiBscGZjX3NsaV9oYnFidWZfZnJlZV9hbGwoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtNTg0LDYgKzc2OSwxOCBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9oYnFfdG9fZmlybXdhcmU6IFBvc3QgdGhlIGhicSBidWZmZXIgdG8gZmlybXdhcmUuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAaGJxbm86IEhCUSBudW1iZXIuCisgKiBAaGJxX2J1ZjogUG9pbnRlciB0byBIQlEgYnVmZmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIGhiYWxvY2sgaGVsZCB0byBwb3N0IGEKKyAqIGhicSBidWZmZXIgdG8gdGhlIGZpcm13YXJlLiBJZiB0aGUgZnVuY3Rpb24gZmluZHMgYW4gZW1wdHkKKyAqIHNsb3QgaW4gdGhlIEhCUSwgaXQgd2lsbCBwb3N0IHRoZSBidWZmZXIuIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybgorICogcG9pbnRlciB0byB0aGUgaGJxIGVudHJ5IGlmIGl0IHN1Y2Nlc3NmdWxseSBwb3N0IHRoZSBidWZmZXIKKyAqIGVsc2UgaXQgd2lsbCByZXR1cm4gTlVMTC4KKyAqKi8KIHN0YXRpYyBzdHJ1Y3QgbHBmY19oYnFfZW50cnkgKgogbHBmY19zbGlfaGJxX3RvX2Zpcm13YXJlKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgaGJxbm8sCiAJCQkgc3RydWN0IGhicV9kbWFidWYgKmhicV9idWYpCkBAIC02MTIsNiArODA5LDcgQEAKIAlyZXR1cm4gaGJxZTsKIH0KIAorLyogSEJRIGZvciBFTFMgYW5kIENUIHRyYWZmaWMuICovCiBzdGF0aWMgc3RydWN0IGxwZmNfaGJxX2luaXQgbHBmY19lbHNfaGJxID0gewogCS5ybiA9IDEsCiAJLmVudHJ5X2NvdW50ID0gMjAwLApAQCAtNjIzLDYgKzgyMSw3IEBACiAJLmFkZF9jb3VudCA9IDUsCiB9OwogCisvKiBIQlEgZm9yIHRoZSBleHRyYSByaW5nIGlmIG5lZWRlZCAqLwogc3RhdGljIHN0cnVjdCBscGZjX2hicV9pbml0IGxwZmNfZXh0cmFfaGJxID0gewogCS5ybiA9IDEsCiAJLmVudHJ5X2NvdW50ID0gMjAwLApAQCAtNjM0LDUxICs4MzMsODEgQEAKIAkuYWRkX2NvdW50ID0gNSwKIH07CiAKKy8qIEFycmF5IG9mIEhCUXMgKi8KIHN0cnVjdCBscGZjX2hicV9pbml0ICpscGZjX2hicV9kZWZzW10gPSB7CiAJJmxwZmNfZWxzX2hicSwKIAkmbHBmY19leHRyYV9oYnEsCiB9OwogCisvKioKKyAqIGxwZmNfc2xpX2hicWJ1Zl9maWxsX2hicXM6IFBvc3QgbW9yZSBoYnEgYnVmZmVycyB0byBIQlEuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAaGJxbm86IEhCUSBudW1iZXIuCisgKiBAY291bnQ6IE51bWJlciBvZiBIQlEgYnVmZmVycyB0byBiZSBwb3N0ZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQgdG8gcG9zdCBtb3JlIGhicSBidWZmZXJzIHRvIHRoZQorICogZ2l2ZW4gSEJRLiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIEhCUSBidWZmZXJzIHN1Y2Nlc3NmdWxseQorICogcG9zdGVkLgorICoqLwogc3RhdGljIGludAogbHBmY19zbGlfaGJxYnVmX2ZpbGxfaGJxcyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQzMl90IGhicW5vLCB1aW50MzJfdCBjb3VudCkKIHsKLQl1aW50MzJfdCBpLCBzdGFydCwgZW5kOworCXVpbnQzMl90IGksIHBvc3RlZCA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgaGJxX2RtYWJ1ZiAqaGJxX2J1ZmZlcjsKLQorCUxJU1RfSEVBRChoYnFfYnVmX2xpc3QpOwogCWlmICghcGhiYS0+aGJxc1toYnFub10uaGJxX2FsbG9jX2J1ZmZlcikKIAkJcmV0dXJuIDA7CiAKLQlzdGFydCA9IHBoYmEtPmhicXNbaGJxbm9dLmJ1ZmZlcl9jb3VudDsKLQllbmQgPSBjb3VudCArIHN0YXJ0OwotCWlmIChlbmQgPiBscGZjX2hicV9kZWZzW2hicW5vXS0+ZW50cnlfY291bnQpCi0JCWVuZCA9IGxwZmNfaGJxX2RlZnNbaGJxbm9dLT5lbnRyeV9jb3VudDsKLQorCWlmICgocGhiYS0+aGJxc1toYnFub10uYnVmZmVyX2NvdW50ICsgY291bnQpID4KKwkgICAgbHBmY19oYnFfZGVmc1toYnFub10tPmVudHJ5X2NvdW50KQorCQljb3VudCA9IGxwZmNfaGJxX2RlZnNbaGJxbm9dLT5lbnRyeV9jb3VudCAtCisJCQkJCXBoYmEtPmhicXNbaGJxbm9dLmJ1ZmZlcl9jb3VudDsKKwlpZiAoIWNvdW50KQorCQlyZXR1cm4gMDsKKwkvKiBBbGxvY2F0ZSBIQlEgZW50cmllcyAqLworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCWhicV9idWZmZXIgPSAocGhiYS0+aGJxc1toYnFub10uaGJxX2FsbG9jX2J1ZmZlcikocGhiYSk7CisJCWlmICghaGJxX2J1ZmZlcikKKwkJCWJyZWFrOworCQlsaXN0X2FkZF90YWlsKCZoYnFfYnVmZmVyLT5kYnVmLmxpc3QsICZoYnFfYnVmX2xpc3QpOworCX0KIAkvKiBDaGVjayB3aGV0aGVyIEhCUSBpcyBzdGlsbCBpbiB1c2UgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmcGhiYS0+aGJhbG9jaywgZmxhZ3MpOwogCWlmICghcGhiYS0+aGJxX2luX3VzZSkKLQkJZ290byBvdXQ7Ci0KLQkvKiBQb3B1bGF0ZSBIQlEgZW50cmllcyAqLwotCWZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKLQkJaGJxX2J1ZmZlciA9IChwaGJhLT5oYnFzW2hicW5vXS5oYnFfYWxsb2NfYnVmZmVyKShwaGJhKTsKLQkJaWYgKCFoYnFfYnVmZmVyKQotCQkJZ290byBlcnI7Ci0JCWhicV9idWZmZXItPnRhZyA9IChpIHwgKGhicW5vIDw8IDE2KSk7Ci0JCWlmIChscGZjX3NsaV9oYnFfdG9fZmlybXdhcmUocGhiYSwgaGJxbm8sIGhicV9idWZmZXIpKQorCQlnb3RvIGVycjsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmhicV9idWZfbGlzdCkpIHsKKwkJbGlzdF9yZW1vdmVfaGVhZCgmaGJxX2J1Zl9saXN0LCBoYnFfYnVmZmVyLCBzdHJ1Y3QgaGJxX2RtYWJ1ZiwKKwkJCQkgZGJ1Zi5saXN0KTsKKwkJaGJxX2J1ZmZlci0+dGFnID0gKHBoYmEtPmhicXNbaGJxbm9dLmJ1ZmZlcl9jb3VudCB8CisJCQkJICAgICAgKGhicW5vIDw8IDE2KSk7CisJCWlmIChscGZjX3NsaV9oYnFfdG9fZmlybXdhcmUocGhiYSwgaGJxbm8sIGhicV9idWZmZXIpKSB7CiAJCQlwaGJhLT5oYnFzW2hicW5vXS5idWZmZXJfY291bnQrKzsKLQkJZWxzZQorCQkJcG9zdGVkKys7CisJCX0gZWxzZQogCQkJKHBoYmEtPmhicXNbaGJxbm9dLmhicV9mcmVlX2J1ZmZlcikocGhiYSwgaGJxX2J1ZmZlcik7CiAJfQotCi0gb3V0OgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcG9zdGVkOworZXJyOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmhicV9idWZfbGlzdCkpIHsKKwkJbGlzdF9yZW1vdmVfaGVhZCgmaGJxX2J1Zl9saXN0LCBoYnFfYnVmZmVyLCBzdHJ1Y3QgaGJxX2RtYWJ1ZiwKKwkJCQkgZGJ1Zi5saXN0KTsKKwkJKHBoYmEtPmhicXNbaGJxbm9dLmhicV9mcmVlX2J1ZmZlcikocGhiYSwgaGJxX2J1ZmZlcik7CisJfQogCXJldHVybiAwOwotIGVycjoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwaGJhLT5oYmFsb2NrLCBmbGFncyk7Ci0JcmV0dXJuIDE7CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGJxYnVmX2FkZF9oYnFzOiBQb3N0IG1vcmUgSEJRIGJ1ZmZlcnMgdG8gZmlybXdhcmUuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcW5vOiBIQlEgbnVtYmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcG9zdHMgbW9yZSBidWZmZXJzIHRvIHRoZSBIQlEuIFRoaXMgZnVuY3Rpb24KKyAqIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBIQlEgZW50cmllcworICogc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4KKyAqKi8KIGludAogbHBmY19zbGlfaGJxYnVmX2FkZF9oYnFzKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgcW5vKQogewpAQCAtNjg2LDYgKzkxNSwxNSBAQAogCQkJCQkgbHBmY19oYnFfZGVmc1txbm9dLT5hZGRfY291bnQpKTsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9oYnFidWZfaW5pdF9oYnFzOiBQb3N0IGluaXRpYWwgYnVmZmVycyB0byB0aGUgSEJRLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHFubzogIEhCUSBxdWV1ZSBudW1iZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBTTEkgaW5pdGlhbGl6YXRpb24gY29kZSBwYXRoIHdpdGgKKyAqIG5vIGxvY2sgaGVsZCB0byBwb3N0IGluaXRpYWwgSEJRIGJ1ZmZlcnMgdG8gZmlybXdhcmUuIFRoZQorICogZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIEhCUSBlbnRyaWVzIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9oYnFidWZfaW5pdF9oYnFzKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgcW5vKQogewpAQCAtNjkzLDYgKzkzMSwxNiBAQAogCQkJCQkgbHBmY19oYnFfZGVmc1txbm9dLT5pbml0X2NvdW50KSk7CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGJxYnVmX2ZpbmQ6IEZpbmQgdGhlIGhicSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGEgdGFnLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHRhZzogVGFnIG9mIHRoZSBoYnEgYnVmZmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkLiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzCisgKiBmb3IgdGhlIGhicSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0YWcgaW4gdGhlIGhicSBidWZmZXIKKyAqIGxpc3QuIElmIGl0IGZpbmRzIHRoZSBoYnEgYnVmZmVyLCBpdCByZXR1cm5zIHRoZSBoYnFfYnVmZmVyIG90aGVyIHdpc2UKKyAqIGl0IHJldHVybnMgTlVMTC4KKyAqKi8KIHN0YXRpYyBzdHJ1Y3QgaGJxX2RtYWJ1ZiAqCiBscGZjX3NsaV9oYnFidWZfZmluZChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQzMl90IHRhZykKIHsKQEAgLTcxNiw2ICs5NjQsMTUgQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9mcmVlX2hicTogR2l2ZSBiYWNrIHRoZSBoYnEgYnVmZmVyIHRvIGZpcm13YXJlLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQGhicV9idWZmZXI6IFBvaW50ZXIgdG8gSEJRIGJ1ZmZlci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGhiYWxvY2suIFRoaXMgZnVuY3Rpb24gZ2l2ZXMgYmFjaworICogdGhlIGhicSBidWZmZXIgdG8gZmlybXdhcmUuIElmIHRoZSBIQlEgZG9lcyBub3QgaGF2ZSBzcGFjZSB0bworICogcG9zdCB0aGUgYnVmZmVyLCBpdCB3aWxsIGZyZWUgdGhlIGJ1ZmZlci4KKyAqKi8KIHZvaWQKIGxwZmNfc2xpX2ZyZWVfaGJxKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGhicV9kbWFidWYgKmhicV9idWZmZXIpCiB7CkBAIC03MjksNiArOTg2LDE1IEBACiAJfQogfQogCisvKioKKyAqIGxwZmNfc2xpX2Noa19tYnhfY29tbWFuZDogQ2hlY2sgaWYgdGhlIG1haWxib3ggaXMgYSBsZWdpdGltYXRlIG1haWxib3guCisgKiBAbWJ4Q29tbWFuZDogbWFpbGJveCBjb21tYW5kIGNvZGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIG1haWxib3ggZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB0byB2ZXJpZnkKKyAqIHRoYXQgdGhlIGNvbXBsZXRlZCBtYWlsYm94IGNvbW1hbmQgaXMgYSBsZWdpdGltYXRlIG1haWxib3ggY29tbWFuZC4gSWYgdGhlCisgKiBjb21wbGV0ZWQgbWFpbGJveCBpcyBub3Qga25vd24gdG8gdGhlIGZ1bmN0aW9uLCBpdCB3aWxsIHJldHVybiBNQlhfU0hVVERPV04KKyAqIGFuZCB0aGUgbWFpbGJveCBldmVudCBoYW5kbGVyIHdpbGwgdGFrZSB0aGUgSEJBIG9mZmxpbmUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9jaGtfbWJ4X2NvbW1hbmQodWludDhfdCBtYnhDb21tYW5kKQogewpAQCAtNzg1LDYgKzEwNTEsOCBAQAogCWNhc2UgTUJYX1JFR19WUEk6CiAJY2FzZSBNQlhfVU5SRUdfVlBJOgogCWNhc2UgTUJYX0hFQVJUQkVBVDoKKwljYXNlIE1CWF9QT1JUX0NBUEFCSUxJVElFUzoKKwljYXNlIE1CWF9QT1JUX0lPVl9DT05UUk9MOgogCQlyZXQgPSBtYnhDb21tYW5kOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNzkzLDYgKzEwNjEsMTkgQEAKIAl9CiAJcmV0dXJuIHJldDsKIH0KKworLyoqCisgKiBscGZjX3NsaV93YWtlX21ib3hfd2FpdDogQ29tcGxldGlvbiBoYW5kbGVyIGZvciBtYm94IGlzc3VlZCBmcm9tCisgKiAgICAgICAgICBscGZjX3NsaV9pc3N1ZV9tYm94X3dhaXQuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcG1ib3hxOiBQb2ludGVyIHRvIG1haWxib3ggY29tbWFuZC4KKyAqCisgKiBUaGlzIGlzIGNvbXBsZXRpb24gaGFuZGxlciBmdW5jdGlvbiBmb3IgbWFpbGJveCBjb21tYW5kcyBpc3N1ZWQgZnJvbQorICogbHBmY19zbGlfaXNzdWVfbWJveF93YWl0IGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUKKyAqIG1haWxib3ggZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB3aXRoIG5vIGxvY2sgaGVsZC4gVGhpcyBmdW5jdGlvbgorICogd2lsbCB3YWtlIHVwIHRocmVhZCB3YWl0aW5nIG9uIHRoZSB3YWl0IHF1ZXVlIHBvaW50ZWQgYnkgY29udGV4dDEKKyAqIG9mIHRoZSBtYWlsYm94LgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2xpX3dha2VfbWJveF93YWl0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgTFBGQ19NQk9YUV90ICpwbWJveHEpCiB7CkBAIC04MTIsNiArMTA5MywxNyBAQAogCXJldHVybjsKIH0KIAorCisvKioKKyAqIGxwZmNfc2xpX2RlZl9tYm94X2NtcGw6IERlZmF1bHQgbWFpbGJveCBjb21wbGV0aW9uIGhhbmRsZXIuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcG1iOiBQb2ludGVyIHRvIG1haWxib3ggb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGRlZmF1bHQgbWFpbGJveCBjb21wbGV0aW9uIGhhbmRsZXIuIEl0CisgKiBmcmVlcyB0aGUgbWVtb3J5IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBsZXRlZCBtYWlsYm94CisgKiBjb21tYW5kLiBJZiB0aGUgY29tcGxldGVkIGNvbW1hbmQgaXMgYSBSRUdfTE9HSU4gbWFpbGJveCBjb21tYW5kLAorICogdGhpcyBmdW5jdGlvbiB3aWxsIGlzc3VlIGEgVVJFR19MT0dJTiB0byByZS1jbGFpbSB0aGUgUlBJLgorICoqLwogdm9pZAogbHBmY19zbGlfZGVmX21ib3hfY21wbChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1iKQogewpAQCAtODQ2LDYgKzExMzgsMTkgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGFuZGxlX21iX2V2ZW50OiBIYW5kbGUgbWFpbGJveCBjb21wbGV0aW9ucyBmcm9tIGZpcm13YXJlLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9jayBoZWxkLiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBhbGwKKyAqIHRoZSBjb21wbGV0ZWQgbWFpbGJveCBjb21tYW5kcyBhbmQgZ2l2ZXMgaXQgdG8gdXBwZXIgbGF5ZXJzLiBUaGUgaW50ZXJydXB0CisgKiBzZXJ2aWNlIHJvdXRpbmUgcHJvY2Vzc2VzIG1haWxib3ggY29tcGxldGlvbiBpbnRlcnJ1cHQgYW5kIGFkZHMgY29tcGxldGVkCisgKiBtYWlsYm94IGNvbW1hbmRzIHRvIHRoZSBtYm94cV9jbXBsIHF1ZXVlIGFuZCBzaWduYWxzIHRoZSB3b3JrZXIgdGhyZWFkLgorICogV29ya2VyIHRocmVhZCBjYWxsIGxwZmNfc2xpX2hhbmRsZV9tYl9ldmVudCwgd2hpY2ggd2lsbCByZXR1cm4gdGhlCisgKiBjb21wbGV0ZWQgbWFpbGJveCBjb21tYW5kcyBpbiBtYm94cV9jbXBsIHF1ZXVlIHRvIHRoZSB1cHBlciBsYXllcnMuIFRoaXMKKyAqIGZ1bmN0aW9uIHJldHVybnMgdGhlIG1haWxib3ggY29tbWFuZHMgdG8gdGhlIHVwcGVyIGxheWVyIGJ5IGNhbGxpbmcgdGhlCisgKiBjb21wbGV0aW9uIGhhbmRsZXIgZnVuY3Rpb24gb2YgZWFjaCBtYWlsYm94LgorICoqLwogaW50CiBscGZjX3NsaV9oYW5kbGVfbWJfZXZlbnQoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtOTUzLDYgKzEyNTgsMTggQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9yZXBsYWNlX2hicWJ1ZmY6IFJlcGxhY2UgdGhlIEhCUSBidWZmZXIgd2l0aCBhIG5ldyBidWZmZXIuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAdGFnOiBUYWcgZm9yIHRoZSBIQlEgYnVmZmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdW5zb2xpY2l0ZWQgZXZlbnQgaGFuZGxlciBjb2RlIHBhdGggdG8gZ2V0IHRoZQorICogSEJRIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggYW4gdW5zb2xpY2l0ZWQgaW9jYi4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAorICogbm8gbG9jayBoZWxkLiBJdCByZXR1cm5zIHRoZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0YWcgYW5kIHBvc3RzCisgKiBhbm90aGVyIGJ1ZmZlciB0byB0aGUgZmlybXdhcmUuIE5vdGUgdGhhdCB0aGUgbmV3IGJ1ZmZlciBtdXN0IGJlIGFsbG9jYXRlZAorICogYmVmb3JlIHRha2luZyB0aGUgaGJhbG9jayBhbmQgdGhhdCB0aGUgaGJhIGxvY2sgbXVzdCBiZSBoZWxkIHVudGlsIGl0IGlzCisgKiBmaW5pc2hlZCB3aXRoIHRoZSBoYnEgZW50cnkgc3dhcC4KKyAqKi8KIHN0YXRpYyBzdHJ1Y3QgbHBmY19kbWFidWYgKgogbHBmY19zbGlfcmVwbGFjZV9oYnFidWZmKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgdGFnKQogewpAQCAtOTYyLDIyICsxMjc5LDI4IEBACiAJZG1hX2FkZHJfdCBwaHlzOwkvKiBtYXBwZWQgYWRkcmVzcyAqLwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKKwloYnFubyA9IHRhZyA+PiAxNjsKKwluZXdfaGJxX2VudHJ5ID0gKHBoYmEtPmhicXNbaGJxbm9dLmhicV9hbGxvY19idWZmZXIpKHBoYmEpOwogCS8qIENoZWNrIHdoZXRoZXIgSEJRIGlzIHN0aWxsIGluIHVzZSAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZwaGJhLT5oYmFsb2NrLCBmbGFncyk7CiAJaWYgKCFwaGJhLT5oYnFfaW5fdXNlKSB7CisJCWlmIChuZXdfaGJxX2VudHJ5KQorCQkJKHBoYmEtPmhicXNbaGJxbm9dLmhicV9mcmVlX2J1ZmZlcikocGhiYSwKKwkJCQkJCQkgICAgbmV3X2hicV9lbnRyeSk7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBoYmEtPmhiYWxvY2ssIGZsYWdzKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaGJxX2VudHJ5ID0gbHBmY19zbGlfaGJxYnVmX2ZpbmQocGhiYSwgdGFnKTsKIAlpZiAoaGJxX2VudHJ5ID09IE5VTEwpIHsKKwkJaWYgKG5ld19oYnFfZW50cnkpCisJCQkocGhiYS0+aGJxc1toYnFub10uaGJxX2ZyZWVfYnVmZmVyKShwaGJhLAorCQkJCQkJCSAgICBuZXdfaGJxX2VudHJ5KTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGhiYS0+aGJhbG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAJbGlzdF9kZWwoJmhicV9lbnRyeS0+ZGJ1Zi5saXN0KTsKIAotCWhicW5vID0gdGFnID4+IDE2OwotCW5ld19oYnFfZW50cnkgPSAocGhiYS0+aGJxc1toYnFub10uaGJxX2FsbG9jX2J1ZmZlcikocGhiYSk7CiAJaWYgKG5ld19oYnFfZW50cnkgPT0gTlVMTCkgewogCQlsaXN0X2FkZF90YWlsKCZoYnFfZW50cnktPmRidWYubGlzdCwgJnBoYmEtPmhicWJ1Zl9pbl9saXN0KTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGhiYS0+aGJhbG9jaywgZmxhZ3MpOwpAQCAtOTk3LDYgKzEzMjAsMTggQEAKIAlyZXR1cm4gJm5ld19oYnFfZW50cnktPmRidWY7CiB9CiAKKy8qKgorICogbHBmY19zbGlfZ2V0X2J1ZmY6IEdldCB0aGUgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnVmZmVyIHRhZy4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHRhZzogYnVmZmVyIHRhZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4gV2hlbiBRVUVfQlVGVEFHX0JJVCBiaXQKKyAqIGlzIHNldCBpbiB0aGUgdGFnIHRoZSBidWZmZXIgaXMgcG9zdGVkIGZvciBhIHBhcnRpY3VsYXIgZXhjaGFuZ2UsCisgKiB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGJ1ZmZlciB3aXRob3V0IHJlcGxhY2luZyB0aGUgYnVmZmVyLgorICogSWYgdGhlIGJ1ZmZlciBpcyBmb3IgdW5zb2xpY2l0ZWQgRUxTIG9yIENUIHRyYWZmaWMsIHRoaXMgZnVuY3Rpb24KKyAqIHJldHVybnMgdGhlIGJ1ZmZlciBhbmQgYWxzbyBwb3N0cyBhbm90aGVyIGJ1ZmZlciB0byB0aGUgZmlybXdhcmUuCisgKiovCiBzdGF0aWMgc3RydWN0IGxwZmNfZG1hYnVmICoKIGxwZmNfc2xpX2dldF9idWZmKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwKIAkJCXN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKQEAgLTEwMDgsNiArMTM0MywyMSBAQAogCQlyZXR1cm4gbHBmY19zbGlfcmVwbGFjZV9oYnFidWZmKHBoYmEsIHRhZyk7CiB9CiAKKworLyoqCisgKiBscGZjX3NsaV9wcm9jZXNzX3Vuc29sX2lvY2I6IFVuc29saWNpdGVkIGlvY2IgaGFuZGxlci4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHNhdmVxOiBQb2ludGVyIHRvIHRoZSB1bnNvbGljaXRlZCBpb2NiLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9jayBoZWxkIGJ5IHRoZSByaW5nIGV2ZW50IGhhbmRsZXIKKyAqIHdoZW4gdGhlcmUgaXMgYW4gdW5zb2xpY2l0ZWQgaW9jYiBwb3N0ZWQgdG8gdGhlIHJlc3BvbnNlIHJpbmcgYnkgdGhlCisgKiBmaXJtd2FyZS4gVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBpb2NicworICogYW5kIGNhbGxzIHRoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgcmluZy4gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGJvdGgKKyAqIHFyaW5nIGJ1ZmZlcnMgYW5kIGhicSBidWZmZXJzLgorICogV2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyAxIHRoZSBjYWxsZXIgY2FuIGZyZWUgdGhlIGlvY2Igb2JqZWN0IG90aGVyd2lzZQorICogdXBwZXIgbGF5ZXIgZnVuY3Rpb25zIHdpbGwgZnJlZSB0aGUgaW9jYiBvYmplY3RzLgorICoqLwogc3RhdGljIGludAogbHBmY19zbGlfcHJvY2Vzc191bnNvbF9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQkJICAgIHN0cnVjdCBscGZjX2lvY2JxICpzYXZlcSkKQEAgLTExOTIsNiArMTU0MiwxOCBAQAogCXJldHVybiAxOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2lvY2JxX2xvb2t1cDogRmluZCBjb21tYW5kIGlvY2IgZm9yIHRoZSBnaXZlbiByZXNwb25zZSBpb2NiLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAcHJzcGlvY2I6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYiBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBsb29rcyB1cCB0aGUgaW9jYl9sb29rdXAgdGFibGUgdG8gZ2V0IHRoZSBjb21tYW5kIGlvY2IKKyAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHJlc3BvbnNlIGlvY2IgdXNpbmcgdGhlIGlvdGFnIG9mIHRoZQorICogcmVzcG9uc2UgaW9jYi4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgaGJhbG9jayBoZWxkLgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb21tYW5kIGlvY2Igb2JqZWN0IGlmIGl0IGZpbmRzIHRoZSBjb21tYW5kCisgKiBpb2NiIGVsc2UgcmV0dXJucyBOVUxMLgorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX2lvY2JxICoKIGxwZmNfc2xpX2lvY2JxX2xvb2t1cChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsCiAJCSAgICAgIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKQEAgLTEyMTcsNiArMTU3OSwyMyBAQAogCXJldHVybiBOVUxMOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3Byb2Nlc3Nfc29sX2lvY2I6IHByb2Nlc3Mgc29saWNpdGVkIGlvY2IgY29tcGxldGlvbi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHNhdmVxOiBQb2ludGVyIHRvIHRoZSByZXNwb25zZSBpb2NiIHRvIGJlIHByb2Nlc3NlZC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgcmluZyBldmVudCBoYW5kbGVyIGZvciBub24tZmNwCisgKiByaW5ncyB3aGVuIHRoZXJlIGlzIGEgbmV3IHJlc3BvbnNlIGlvY2IgaW4gdGhlIHJlc3BvbnNlIHJpbmcuCisgKiBUaGUgY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueSBsb2Nrcy4gVGhpcyBmdW5jdGlvbgorICogZ2V0cyB0aGUgY29tbWFuZCBpb2NiIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVzcG9uc2UgaW9jYiBhbmQKKyAqIGNhbGxzIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgZm9yIHRoZSBjb21tYW5kIGlvY2IuIElmIHRoZXJlCisgKiBpcyBubyBjb21wbGV0aW9uIGhhbmRsZXIsIHRoZSBmdW5jdGlvbiB3aWxsIGZyZWUgdGhlIHJlc291cmNlcworICogYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQgaW9jYi4gSWYgdGhlIHJlc3BvbnNlIGlvY2IgaXMgZm9yCisgKiBhbiBhbHJlYWR5IGFib3J0ZWQgY29tbWFuZCBpb2NiLCB0aGUgc3RhdHVzIG9mIHRoZSBjb21wbGV0aW9uCisgKiBpcyBjaGFuZ2VkIHRvIElPU1RBVF9MT0NBTF9SRUpFQ1QvSU9FUlJfU0xJX0FCT1JURUQuCisgKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDEuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9wcm9jZXNzX3NvbF9pb2NiKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQkJICBzdHJ1Y3QgbHBmY19pb2NicSAqc2F2ZXEpCkBAIC0xMjMzLDYgKzE2MTIsMTcgQEAKIAlpZiAoY21kaW9jYnApIHsKIAkJaWYgKGNtZGlvY2JwLT5pb2NiX2NtcGwpIHsKIAkJCS8qCisJCQkgKiBJZiBhbiBFTFMgY29tbWFuZCBmYWlsZWQgc2VuZCBhbiBldmVudCB0byBtZ210CisJCQkgKiBhcHBsaWNhdGlvbi4KKwkJCSAqLworCQkJaWYgKHNhdmVxLT5pb2NiLnVscFN0YXR1cyAmJgorCQkJICAgICAocHJpbmctPnJpbmdubyA9PSBMUEZDX0VMU19SSU5HKSAmJgorCQkJICAgICAoY21kaW9jYnAtPmlvY2IudWxwQ29tbWFuZCA9PQorCQkJCUNNRF9FTFNfUkVRVUVTVDY0X0NSKSkKKwkJCQlscGZjX3NlbmRfZWxzX2ZhaWx1cmVfZXZlbnQocGhiYSwKKwkJCQkJY21kaW9jYnAsIHNhdmVxKTsKKworCQkJLyoKIAkJCSAqIFBvc3QgYWxsIEVMUyBjb21wbGV0aW9ucyB0byB0aGUgd29ya2VyIHRocmVhZC4KIAkJCSAqIEFsbCBvdGhlciBhcmUgcGFzc2VkIHRvIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrLgogCQkJICovCkBAIC0xMjgyLDEyICsxNjcyLDIwIEBACiAJcmV0dXJuIHJjOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3JzcF9wb2ludGVyc19lcnJvcjogUmVzcG9uc2UgcmluZyBwb2ludGVyIGVycm9yIGhhbmRsZXIuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcHJpbmc6IFBvaW50ZXIgdG8gZHJpdmVyIFNMSSByaW5nIG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBpb2NiIHJpbmcgZXZlbnQgaGFuZGxlcnMgd2hlbgorICogcHV0IHBvaW50ZXIgaXMgYWhlYWQgb2YgdGhlIGdldCBwb2ludGVyIGZvciBhIHJpbmcuIFRoaXMgZnVuY3Rpb24gc2lnbmFsCisgKiBhbiBlcnJvciBhdHRlbnRpb24gY29uZGl0aW9uIHRvIHRoZSB3b3JrZXIgdGhyZWFkIGFuZCB0aGUgd29ya2VyCisgKiB0aHJlYWQgd2lsbCB0cmFuc2l0aW9uIHRoZSBIQkEgdG8gb2ZmbGluZSBzdGF0ZS4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NsaV9yc3BfcG9pbnRlcnNfZXJyb3Ioc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcpCiB7Ci0Jc3RydWN0IGxwZmNfcGdwICpwZ3AgPSAocGhiYS0+c2xpX3JldiA9PSAzKSA/Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zM19wZ3AucG9ydFtwcmluZy0+cmluZ25vXSA6Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zMi5wb3J0W3ByaW5nLT5yaW5nbm9dOworCXN0cnVjdCBscGZjX3BncCAqcGdwID0gJnBoYmEtPnBvcnRfZ3BbcHJpbmctPnJpbmdub107CiAJLyoKIAkgKiBSaW5nIDxyaW5nbm8+IGhhbmRsZXI6IHBvcnRSc3BQdXQgPHBvcnRSc3BQdXQ+IGlzIGJpZ2dlciB0aGVuCiAJICogcnNwIHJpbmcgPHBvcnRSc3BNYXg+CkBAIC0xMzEyLDYgKzE3MTAsNTEgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19wb2xsX2VyYXR0OiBFcnJvciBhdHRlbnRpb24gcG9sbGluZyB0aW1lciB0aW1lb3V0IGhhbmRsZXIuCisgKiBAcHRyOiBQb2ludGVyIHRvIGFkZHJlc3Mgb2YgSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBieSB0aGUgRXJyb3IgQXR0ZW50aW9uIHBvbGxpbmcgdGltZXIgd2hlbiB0aGUKKyAqIHRpbWVyIHRpbWVzIG91dC4gSXQgd2lsbCBjaGVjayB0aGUgU0xJIEVycm9yIEF0dGVudGlvbiByZWdpc3RlciBmb3IKKyAqIHBvc3NpYmxlIGF0dGVudGlvbiBldmVudHMuIElmIHNvLCBpdCB3aWxsIHBvc3QgYW4gRXJyb3IgQXR0ZW50aW9uIGV2ZW50CisgKiBhbmQgd2FrZSB1cCB3b3JrZXIgdGhyZWFkIHRvIHByb2Nlc3MgaXQuIE90aGVyd2lzZSwgaXQgd2lsbCBzZXQgdXAgdGhlCisgKiBFcnJvciBBdHRlbnRpb24gcG9sbGluZyB0aW1lciBmb3IgdGhlIG5leHQgcG9sbC4KKyAqKi8KK3ZvaWQgbHBmY19wb2xsX2VyYXR0KHVuc2lnbmVkIGxvbmcgcHRyKQoreworCXN0cnVjdCBscGZjX2hiYSAqcGhiYTsKKwl1aW50MzJfdCBlcmF0dCA9IDA7CisKKwlwaGJhID0gKHN0cnVjdCBscGZjX2hiYSAqKXB0cjsKKworCS8qIENoZWNrIGNoaXAgSEEgcmVnaXN0ZXIgZm9yIGVycm9yIGV2ZW50ICovCisJZXJhdHQgPSBscGZjX3NsaV9jaGVja19lcmF0dChwaGJhKTsKKworCWlmIChlcmF0dCkKKwkJLyogVGVsbCB0aGUgd29ya2VyIHRocmVhZCB0aGVyZSBpcyB3b3JrIHRvIGRvICovCisJCWxwZmNfd29ya2VyX3dha2VfdXAocGhiYSk7CisJZWxzZQorCQkvKiBSZXN0YXJ0IHRoZSB0aW1lciBmb3IgbmV4dCBlcmF0dCBwb2xsICovCisJCW1vZF90aW1lcigmcGhiYS0+ZXJhdHRfcG9sbCwgamlmZmllcyArCisJCQkJCUhaICogTFBGQ19FUkFUVF9QT0xMX0lOVEVSVkFMKTsKKwlyZXR1cm47Cit9CisKKy8qKgorICogbHBmY19zbGlfcG9sbF9mY3BfcmluZzogSGFuZGxlIEZDUCByaW5nIGNvbXBsZXRpb24gaW4gcG9sbGluZyBtb2RlLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gbHBmY19xdWV1ZWNvbW1hbmQsIGxwZmNfcG9sbF90aW1lb3V0LAorICogbHBmY19hYm9ydF9oYW5kbGVyIGFuZCBscGZjX3NsYXZlX2NvbmZpZ3VyZSB3aGVuIEZDUF9SSU5HX1BPTExJTkcKKyAqIGlzIGVuYWJsZWQuCisgKgorICogVGhlIGNhbGxlciBkb2VzIG5vdCBob2xkIGFueSBsb2NrLgorICogVGhlIGZ1bmN0aW9uIHByb2Nlc3NlcyBlYWNoIHJlc3BvbnNlIGlvY2IgaW4gdGhlIHJlc3BvbnNlIHJpbmcgdW50aWwgaXQKKyAqIGZpbmRzIGFuIGlvY2Igd2l0aCBMRSBiaXQgc2V0IGFuZCBjaGFpbnMgYWxsIHRoZSBpb2NicyB1cHRvIHRoZSBpb2NiIHdpdGgKKyAqIExFIGJpdCBzZXQuIFRoZSBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgY29tbWFuZCBpb2NiCisgKiBpZiB0aGUgcmVzcG9uc2UgaW9jYiBpbmRpY2F0ZXMgYSBjb21wbGV0aW9uIGZvciBhIGNvbW1hbmQgaW9jYiBvciBpdCBpcworICogYW4gYWJvcnQgY29tcGxldGlvbi4KKyAqKi8KIHZvaWQgbHBmY19zbGlfcG9sbF9mY3BfcmluZyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CiAJc3RydWN0IGxwZmNfc2xpICAgICAgKnBzbGkgID0gJnBoYmEtPnNsaTsKQEAgLTEzMjAsNyArMTc2Myw3IEBACiAJSU9DQl90ICplbnRyeSA9IE5VTEw7CiAJc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2JxID0gTlVMTDsKIAlzdHJ1Y3QgbHBmY19pb2NicSByc3Bpb2NicTsKLQlzdHJ1Y3QgbHBmY19wZ3AgKnBncDsKKwlzdHJ1Y3QgbHBmY19wZ3AgKnBncCA9ICZwaGJhLT5wb3J0X2dwW3ByaW5nLT5yaW5nbm9dOwogCXVpbnQzMl90IHN0YXR1czsKIAl1aW50MzJfdCBwb3J0UnNwUHV0LCBwb3J0UnNwTWF4OwogCWludCB0eXBlOwpAQCAtMTMzMCwxMSArMTc3Myw2IEBACiAKIAlwcmluZy0+c3RhdHMuaW9jYl9ldmVudCsrOwogCi0JcGdwID0gKHBoYmEtPnNsaV9yZXYgPT0gMykgPwotCQkmcGhiYS0+c2xpbTJwLT5tYngudXMuczNfcGdwLnBvcnRbcHJpbmctPnJpbmdub10gOgotCQkmcGhiYS0+c2xpbTJwLT5tYngudXMuczIucG9ydFtwcmluZy0+cmluZ25vXTsKLQotCiAJLyoKIAkgKiBUaGUgbmV4dCBhdmFpbGFibGUgcmVzcG9uc2UgZW50cnkgc2hvdWxkIG5ldmVyIGV4Y2VlZCB0aGUgbWF4aW11bQogCSAqIGVudHJpZXMuICBJZiBpdCBkb2VzLCB0cmVhdCBpdCBhcyBhbiBhZGFwdGVyIGhhcmR3YXJlIGVycm9yLgpAQCAtMTM3Miw4ICsxODEwLDggQEAKIAkJCQkJaXJzcC0+dW4udWxwV29yZFszXSwKIAkJCQkJaXJzcC0+dW4udWxwV29yZFs0XSwKIAkJCQkJaXJzcC0+dW4udWxwV29yZFs1XSwKLQkJCQkJKigoKHVpbnQzMl90ICopIGlyc3ApICsgNiksCi0JCQkJCSooKCh1aW50MzJfdCAqKSBpcnNwKSArIDcpKTsKKwkJCQkJKih1aW50MzJfdCAqKSZpcnNwLT51bjEsCisJCQkJCSooKHVpbnQzMl90ICopJmlyc3AtPnVuMSArIDEpKTsKIAkJfQogCiAJCXN3aXRjaCAodHlwZSkgewpAQCAtMTQ2NSwxNyArMTkwMywyOCBAQAogCXJldHVybjsKIH0KIAotLyoKKy8qKgorICogbHBmY19zbGlfaGFuZGxlX2Zhc3RfcmluZ19ldmVudDogSGFuZGxlIHJpbmcgZXZlbnRzIG9uIEZDUCByaW5nLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAbWFzazogSG9zdCBhdHRlbnRpb24gcmVnaXN0ZXIgbWFzayBmb3IgdGhpcyByaW5nLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGludGVycnVwdCBjb250ZXh0IHdoZW4gdGhlcmUgaXMgYSByaW5nCisgKiBldmVudCBmb3IgdGhlIGZjcCByaW5nLiBUaGUgY2FsbGVyIGRvZXMgbm90IGhvbGQgYW55IGxvY2suCisgKiBUaGUgZnVuY3Rpb24gcHJvY2Vzc2VzIGVhY2ggcmVzcG9uc2UgaW9jYiBpbiB0aGUgcmVzcG9uc2UgcmluZyB1bnRpbCBpdAorICogZmluZHMgYW4gaW9jYiB3aXRoIExFIGJpdCBzZXQgYW5kIGNoYWlucyBhbGwgdGhlIGlvY2JzIHVwdG8gdGhlIGlvY2Igd2l0aAorICogTEUgYml0IHNldC4gVGhlIGZ1bmN0aW9uIHdpbGwgY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIG9mIHRoZSBjb21tYW5kIGlvY2IKKyAqIGlmIHRoZSByZXNwb25zZSBpb2NiIGluZGljYXRlcyBhIGNvbXBsZXRpb24gZm9yIGEgY29tbWFuZCBpb2NiIG9yIGl0IGlzCisgKiBhbiBhYm9ydCBjb21wbGV0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCBjYWxsIGxwZmNfc2xpX3Byb2Nlc3NfdW5zb2xfaW9jYgorICogZnVuY3Rpb24gaWYgdGhpcyBpcyBhbiB1bnNvbGljaXRlZCBpb2NiLgogICogVGhpcyByb3V0aW5lIHByZXN1bWVzIExQRkNfRkNQX1JJTkcgaGFuZGxpbmcgYW5kIGRvZXNuJ3QgYm90aGVyCi0gKiB0byBjaGVjayBpdCBleHBsaWNpdGx5LgotICovCisgKiB0byBjaGVjayBpdCBleHBsaWNpdGx5LiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDEuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9oYW5kbGVfZmFzdF9yaW5nX2V2ZW50KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwKIAkJCQlzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsIHVpbnQzMl90IG1hc2spCiB7Ci0Jc3RydWN0IGxwZmNfcGdwICpwZ3AgPSAocGhiYS0+c2xpX3JldiA9PSAzKSA/Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zM19wZ3AucG9ydFtwcmluZy0+cmluZ25vXSA6Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zMi5wb3J0W3ByaW5nLT5yaW5nbm9dOworCXN0cnVjdCBscGZjX3BncCAqcGdwID0gJnBoYmEtPnBvcnRfZ3BbcHJpbmctPnJpbmdub107CiAJSU9DQl90ICppcnNwID0gTlVMTDsKIAlJT0NCX3QgKmVudHJ5ID0gTlVMTDsKIAlzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYnEgPSBOVUxMOwpAQCAtMTU0OCw4ICsxOTk3LDggQEAKIAkJCQkJaXJzcC0+dW4udWxwV29yZFszXSwKIAkJCQkJaXJzcC0+dW4udWxwV29yZFs0XSwKIAkJCQkJaXJzcC0+dW4udWxwV29yZFs1XSwKLQkJCQkJKigoKHVpbnQzMl90ICopIGlyc3ApICsgNiksCi0JCQkJCSooKCh1aW50MzJfdCAqKSBpcnNwKSArIDcpKTsKKwkJCQkJKih1aW50MzJfdCAqKSZpcnNwLT51bjEsCisJCQkJCSooKHVpbnQzMl90ICopJmlyc3AtPnVuMSArIDEpKTsKIAkJfQogCiAJCXN3aXRjaCAodHlwZSkgewpAQCAtMTY0NiwxMyArMjA5NSwyOCBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9oYW5kbGVfc2xvd19yaW5nX2V2ZW50OiBIYW5kbGUgcmluZyBldmVudHMgZm9yIG5vbi1GQ1AgcmluZ3MuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcHJpbmc6IFBvaW50ZXIgdG8gZHJpdmVyIFNMSSByaW5nIG9iamVjdC4KKyAqIEBtYXNrOiBIb3N0IGF0dGVudGlvbiByZWdpc3RlciBtYXNrIGZvciB0aGlzIHJpbmcuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgd29ya2VyIHRocmVhZCB3aGVuIHRoZXJlIGlzIGEgcmluZworICogZXZlbnQgZm9yIG5vbi1mY3AgcmluZ3MuIFRoZSBjYWxsZXIgZG9lcyBub3QgaG9sZCBhbnkgbG9jayAuCisgKiBUaGUgZnVuY3Rpb24gcHJvY2Vzc2VzIGVhY2ggcmVzcG9uc2UgaW9jYiBpbiB0aGUgcmVzcG9uc2UgcmluZyB1bnRpbCBpdAorICogZmluZHMgYW4gaW9jYiB3aXRoIExFIGJpdCBzZXQgYW5kIGNoYWlucyBhbGwgdGhlIGlvY2JzIHVwdG8gdGhlIGlvY2Igd2l0aAorICogTEUgYml0IHNldC4gVGhlIGZ1bmN0aW9uIHdpbGwgY2FsbCBscGZjX3NsaV9wcm9jZXNzX3NvbF9pb2NiIGZ1bmN0aW9uIGlmIHRoZQorICogcmVzcG9uc2UgaW9jYiBpbmRpY2F0ZXMgYSBjb21wbGV0aW9uIG9mIGEgY29tbWFuZCBpb2NiLiBUaGUgZnVuY3Rpb24KKyAqIHdpbGwgY2FsbCBscGZjX3NsaV9wcm9jZXNzX3Vuc29sX2lvY2IgZnVuY3Rpb24gaWYgdGhpcyBpcyBhbiB1bnNvbGljaXRlZAorICogaW9jYi4gVGhlIGZ1bmN0aW9uIGZyZWVzIHRoZSByZXNvdXJjZXMgb3IgY2FsbHMgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpZgorICogdGhpcyBpb2NiIGlzIGFuIGFib3J0IGNvbXBsZXRpb24uIFRoZSBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiB0aGUgYWxsb2NhdGVkCisgKiBpb2NicyBhcmUgbm90IGZyZWVkLCBvdGhlcndpc2UgcmV0dXJucyAxLgorICoqLwogaW50CiBscGZjX3NsaV9oYW5kbGVfc2xvd19yaW5nX2V2ZW50KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwKIAkJCQlzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsIHVpbnQzMl90IG1hc2spCiB7Ci0Jc3RydWN0IGxwZmNfcGdwICpwZ3AgPSAocGhiYS0+c2xpX3JldiA9PSAzKSA/Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zM19wZ3AucG9ydFtwcmluZy0+cmluZ25vXSA6Ci0JCSZwaGJhLT5zbGltMnAtPm1ieC51cy5zMi5wb3J0W3ByaW5nLT5yaW5nbm9dOworCXN0cnVjdCBscGZjX3BncCAqcGdwOwogCUlPQ0JfdCAqZW50cnk7CiAJSU9DQl90ICppcnNwID0gTlVMTDsKIAlzdHJ1Y3QgbHBmY19pb2NicSAqcnNwaW9jYnAgPSBOVUxMOwpAQCAtMTY2Niw2ICsyMTMwLDcgQEAKIAlpbnQgcmMgPSAxOwogCXVuc2lnbmVkIGxvbmcgaWZsYWc7CiAKKwlwZ3AgPSAmcGhiYS0+cG9ydF9ncFtwcmluZy0+cmluZ25vXTsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcGhiYS0+aGJhbG9jaywgaWZsYWcpOwogCXByaW5nLT5zdGF0cy5pb2NiX2V2ZW50Kys7CiAKQEAgLTE5MDQsNiArMjM2OSwxNiBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9hYm9ydF9pb2NiX3Jpbmc6IEFib3J0IGFsbCBpb2NicyBpbiB0aGUgcmluZy4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWJvcnRzIGFsbCBpb2NicyBpbiB0aGUgZ2l2ZW4gcmluZyBhbmQgZnJlZXMgYWxsIHRoZSBpb2NiCisgKiBvYmplY3RzIGluIHR4cS4gVGhpcyBmdW5jdGlvbiBpc3N1ZXMgYW4gYWJvcnQgaW9jYiBmb3IgYWxsIHRoZSBpb2NiIGNvbW1hbmRzCisgKiBpbiB0eGNtcGxxLiBUaGUgaW9jYnMgaW4gdGhlIHR4Y21wbHEgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29tcGxldGUgYmVmb3JlCisgKiB0aGUgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb24uIFRoZSBjYWxsZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhvbGQgYW55IGxvY2tzLgorICoqLwogdm9pZAogbHBmY19zbGlfYWJvcnRfaW9jYl9yaW5nKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nKQogewpAQCAtMTk0Myw2ICsyNDE4LDgzIEBACiAJfQogfQogCisvKioKKyAqIGxwZmNfc2xpX2ZsdXNoX2ZjcF9yaW5nczogZmx1c2ggYWxsIGlvY2JzIGluIHRoZSBmY3AgcmluZy4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgYWxsIGlvY2JzIGluIHRoZSBmY3AgcmluZyBhbmQgZnJlZXMgYWxsIHRoZSBpb2NiCisgKiBvYmplY3RzIGluIHR4cSBhbmQgdHhjbXBscS4gVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBpc3N1ZSBhYm9ydCBpb2NicworICogZm9yIGFsbCB0aGUgaW9jYiBjb21tYW5kcyBpbiB0eGNtcGxxLCB0aGV5IHdpbGwganVzdCBiZSByZXR1cm5lZCB3aXRoCisgKiBJT0VSUl9TTElfRE9XTi4gVGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggRUVIIHdoZW4gZGV2aWNlJ3MgUENJCisgKiBzbG90IGhhcyBiZWVuIHBlcm1hbmVudGx5IGRpc2FibGVkLgorICoqLwordm9pZAorbHBmY19zbGlfZmx1c2hfZmNwX3JpbmdzKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKK3sKKwlMSVNUX0hFQUQodHhxKTsKKwlMSVNUX0hFQUQodHhjbXBscSk7CisJc3RydWN0IGxwZmNfaW9jYnEgKmlvY2I7CisJSU9DQl90ICpjbWQgPSBOVUxMOworCXN0cnVjdCBscGZjX3NsaSAqcHNsaSA9ICZwaGJhLT5zbGk7CisJc3RydWN0IGxwZmNfc2xpX3JpbmcgICpwcmluZzsKKworCS8qIEN1cnJlbnRseSwgb25seSBvbmUgZmNwIHJpbmcgKi8KKwlwcmluZyA9ICZwc2xpLT5yaW5nW3BzbGktPmZjcF9yaW5nXTsKKworCXNwaW5fbG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOworCS8qIFJldHJpZXZlIGV2ZXJ5dGhpbmcgb24gdHhxICovCisJbGlzdF9zcGxpY2VfaW5pdCgmcHJpbmctPnR4cSwgJnR4cSk7CisJcHJpbmctPnR4cV9jbnQgPSAwOworCisJLyogUmV0cmlldmUgZXZlcnl0aGluZyBvbiB0aGUgdHhjbXBscSAqLworCWxpc3Rfc3BsaWNlX2luaXQoJnByaW5nLT50eGNtcGxxLCAmdHhjbXBscSk7CisJcHJpbmctPnR4Y21wbHFfY250ID0gMDsKKwlzcGluX3VubG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOworCisJLyogRmx1c2ggdGhlIHR4cSAqLworCXdoaWxlICghbGlzdF9lbXB0eSgmdHhxKSkgeworCQlpb2NiID0gbGlzdF9nZXRfZmlyc3QoJnR4cSwgc3RydWN0IGxwZmNfaW9jYnEsIGxpc3QpOworCQljbWQgPSAmaW9jYi0+aW9jYjsKKwkJbGlzdF9kZWxfaW5pdCgmaW9jYi0+bGlzdCk7CisKKwkJaWYgKCFpb2NiLT5pb2NiX2NtcGwpCisJCQlscGZjX3NsaV9yZWxlYXNlX2lvY2JxKHBoYmEsIGlvY2IpOworCQllbHNlIHsKKwkJCWNtZC0+dWxwU3RhdHVzID0gSU9TVEFUX0xPQ0FMX1JFSkVDVDsKKwkJCWNtZC0+dW4udWxwV29yZFs0XSA9IElPRVJSX1NMSV9ET1dOOworCQkJKGlvY2ItPmlvY2JfY21wbCkgKHBoYmEsIGlvY2IsIGlvY2IpOworCQl9CisJfQorCisJLyogRmx1c2ggdGhlIHR4Y21wcSAqLworCXdoaWxlICghbGlzdF9lbXB0eSgmdHhjbXBscSkpIHsKKwkJaW9jYiA9IGxpc3RfZ2V0X2ZpcnN0KCZ0eGNtcGxxLCBzdHJ1Y3QgbHBmY19pb2NicSwgbGlzdCk7CisJCWNtZCA9ICZpb2NiLT5pb2NiOworCQlsaXN0X2RlbF9pbml0KCZpb2NiLT5saXN0KTsKKworCQlpZiAoIWlvY2ItPmlvY2JfY21wbCkKKwkJCWxwZmNfc2xpX3JlbGVhc2VfaW9jYnEocGhiYSwgaW9jYik7CisJCWVsc2UgeworCQkJY21kLT51bHBTdGF0dXMgPSBJT1NUQVRfTE9DQUxfUkVKRUNUOworCQkJY21kLT51bi51bHBXb3JkWzRdID0gSU9FUlJfU0xJX0RPV047CisJCQkoaW9jYi0+aW9jYl9jbXBsKSAocGhiYSwgaW9jYiwgaW9jYik7CisJCX0KKwl9Cit9CisKKy8qKgorICogbHBmY19zbGlfYnJkcmVhZHk6IENoZWNrIGZvciBob3N0IHN0YXR1cyBiaXRzLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQG1hc2s6IEJpdCBtYXNrIHRvIGJlIGNoZWNrZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgaG9zdCBzdGF0dXMgcmVnaXN0ZXIgYW5kIGNvbXBhcmVzCisgKiB3aXRoIHRoZSBwcm92aWRlZCBiaXQgbWFzayB0byBjaGVjayBpZiBIQkEgY29tcGxldGVkCisgKiB0aGUgcmVzdGFydC4gVGhpcyBmdW5jdGlvbiB3aWxsIHdhaXQgaW4gYSBsb29wIGZvciB0aGUKKyAqIEhCQSB0byBjb21wbGV0ZSByZXN0YXJ0LiBJZiB0aGUgSEJBIGRvZXMgbm90IHJlc3RhcnQgd2l0aGluCisgKiAxNSBpdGVyYXRpb25zLCB0aGUgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgSEJBIGFnYWluLiBUaGUKKyAqIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIEhCQSBmYWlsIHRvIHJlc3RhcnQgb3RoZXJ3aXNlIHJldHVybnMKKyAqIHplcm8uCisgKiovCiBpbnQKIGxwZmNfc2xpX2JyZHJlYWR5KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgdWludDMyX3QgbWFzaykKIHsKQEAgLTE5OTAsNiArMjU0MiwxMyBAQAogCiAjZGVmaW5lIEJBUlJJRVJfVEVTVF9QQVRURVJOICgweGRlYWRiZWVmKQogCisvKioKKyAqIGxwZmNfcmVzZXRfYmFycmllcjogTWFrZSBIQkEgcmVhZHkgZm9yIEhCQSByZXNldC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgcmVzZXR0aW5nIGFuIEhCQS4gVGhpcworICogZnVuY3Rpb24gcmVxdWVzdHMgSEJBIHRvIHF1aWVzY2UgRE1BcyBiZWZvcmUgYSByZXNldC4KKyAqKi8KIHZvaWQgbHBmY19yZXNldF9iYXJyaWVyKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKIAl1aW50MzJfdCBfX2lvbWVtICpyZXNwX2J1ZjsKQEAgLTIwNjMsNiArMjYyMiwxNyBAQAogCXJlYWRsKHBoYmEtPkhDcmVnYWRkcik7IC8qIGZsdXNoICovCiB9CiAKKy8qKgorICogbHBmY19zbGlfYnJka2lsbDogSXNzdWUgYSBraWxsX2JvYXJkIG1haWxib3ggY29tbWFuZC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzc3VlcyBhIGtpbGxfYm9hcmQgbWFpbGJveCBjb21tYW5kIGFuZCB3YWl0cyBmb3IKKyAqIHRoZSBlcnJvciBhdHRlbnRpb24gaW50ZXJydXB0LiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3Igc3RvcHBpbmcKKyAqIHRoZSBmaXJtd2FyZSBwcm9jZXNzaW5nLiBUaGUgY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueQorICogbG9ja3MuIFRoaXMgZnVuY3Rpb24gY2FsbHMgbHBmY19oYmFfZG93bl9wb3N0IGZ1bmN0aW9uIHRvIGZyZWUKKyAqIGFueSBwZW5kaW5nIGNvbW1hbmRzIGFmdGVyIHRoZSBraWxsLiBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gMSB3aGVuIGl0CisgKiBmYWlscyB0byBraWxsIHRoZSBib2FyZCBlbHNlIHdpbGwgcmV0dXJuIDAuCisgKiovCiBpbnQKIGxwZmNfc2xpX2JyZGtpbGwoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMjEzOSw2ICsyNzA5LDE3IEBACiAJcmV0dXJuIGhhX2NvcHkgJiBIQV9FUkFUVCA/IDAgOiAxOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2JyZHJlc2V0OiBSZXNldCB0aGUgSEJBLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBIQkEgYnkgd3JpdGluZyBIQ19JTklURkYgdG8gdGhlIGNvbnRyb2wKKyAqIHJlZ2lzdGVyLiBBZnRlciB0aGUgSEJBIHJlc2V0cywgdGhpcyBmdW5jdGlvbiByZXNldHMgYWxsIHRoZSBpb2NiIHJpbmcKKyAqIGluZGljZXMuIFRoaXMgZnVuY3Rpb24gZGlzYWJsZXMgUENJIGxheWVyIHBhcml0eSBjaGVja2luZyBkdXJpbmcKKyAqIHRoZSByZXNldC4KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGFsd2F5cy4KKyAqIFRoZSBjYWxsZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhvbGQgYW55IGxvY2tzLgorICoqLwogaW50CiBscGZjX3NsaV9icmRyZXNldChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0yMTkxLDYgKzI3NzIsMTkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9icmRyZXN0YXJ0OiBSZXN0YXJ0IHRoZSBIQkEuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIFNMSSBpbml0aWFsaXphdGlvbiBjb2RlIHBhdGggdG8KKyAqIHJlc3RhcnQgdGhlIEhCQS4gVGhlIGNhbGxlciBpcyBub3QgcmVxdWlyZWQgdG8gaG9sZCBhbnkgbG9jay4KKyAqIFRoaXMgZnVuY3Rpb24gd3JpdGVzIE1CWF9SRVNUQVJUIG1haWxib3ggY29tbWFuZCB0byB0aGUgU0xJTSBhbmQKKyAqIHJlc2V0cyB0aGUgSEJBLiBBdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgaXQgY2FsbHMgbHBmY19oYmFfZG93bl9wb3N0CisgKiBmdW5jdGlvbiB0byBmcmVlIGFueSBwZW5kaW5nIGNvbW1hbmRzLiBUaGUgZnVuY3Rpb24gZW5hYmxlcworICogUE9TVCBvbmx5IGR1cmluZyB0aGUgZmlyc3QgaW5pdGlhbGl6YXRpb24uIFRoZSBmdW5jdGlvbiByZXR1cm5zIHplcm8uCisgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgZ3VhcmFudGVlIGNvbXBsZXRpb24gb2YgTUJYX1JFU1RBUlQgbWFpbGJveAorICogY29tbWFuZCBiZWZvcmUgdGhlIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLgorICoqLwogaW50CiBscGZjX3NsaV9icmRyZXN0YXJ0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTIyNTEsNiArMjg0NSwxNiBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2NoaXBzZXRfaW5pdDogV2FpdCBmb3IgdGhlIHJlc3RhcnQgb2YgdGhlIEhCQSBhZnRlciBhIHJlc3RhcnQuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgYSBIQkEgcmVzdGFydCB0byB3YWl0IGZvciBzdWNjZXNzZnVsCisgKiByZXN0YXJ0IG9mIHRoZSBIQkEuIFN1Y2Nlc3NmdWwgcmVzdGFydCBvZiB0aGUgSEJBIGlzIGluZGljYXRlZCBieQorICogSFNfRkZSRFkgYW5kIEhTX01CUkRZIGJpdHMuIElmIHRoZSBIQkEgZmFpbHMgdG8gcmVzdGFydCBldmVuIGFmdGVyIDE1CisgKiBpdGVyYXRpb24sIHRoZSBmdW5jdGlvbiB3aWxsIHJlc3RhcnQgdGhlIEhCQSBhZ2Fpbi4gVGhlIGZ1bmN0aW9uIHJldHVybnMKKyAqIHplcm8gaWYgSEJBIHN1Y2Nlc3NmdWxseSByZXN0YXJ0ZWQgZWxzZSByZXR1cm5zIG5lZ2F0aXZlIGVycm9yIGNvZGUuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9jaGlwc2V0X2luaXQoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMjMzNiwxMiArMjk0MCwyNSBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2hicV9jb3VudDogR2V0IHRoZSBudW1iZXIgb2YgSEJRcyB0byBiZSBjb25maWd1cmVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIEhCUXMgcmVxdWlyZWQgdG8gYmUKKyAqIGNvbmZpZ3VyZWQuCisgKiovCiBpbnQKIGxwZmNfc2xpX2hicV9jb3VudCh2b2lkKQogewogCXJldHVybiBBUlJBWV9TSVpFKGxwZmNfaGJxX2RlZnMpOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2hicV9lbnRyeV9jb3VudDogQ2FsY3VsYXRlIHRvdGFsIG51bWJlciBvZiBoYnEgZW50cmllcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgdGhlIG51bWJlciBvZiBoYnEgZW50cmllcyBpbiBldmVyeSBIQlEgdG8gZ2V0CisgKiB0aGUgdG90YWwgbnVtYmVyIG9mIGhicSBlbnRyaWVzIHJlcXVpcmVkIGZvciB0aGUgSEJBIGFuZCByZXR1cm5zCisgKiB0aGUgdG90YWwgY291bnQuCisgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaV9oYnFfZW50cnlfY291bnQodm9pZCkKIHsKQEAgLTIzNTQsMTIgKzI5NzEsMjcgQEAKIAlyZXR1cm4gY291bnQ7CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGJxX3NpemU6IENhbGN1bGF0ZSBtZW1vcnkgcmVxdWlyZWQgZm9yIGFsbCBoYnEgZW50cmllcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW1vdW50IG9mIG1lbW9yeSByZXF1aXJlZCBmb3IgYWxsIGhicSBlbnRyaWVzCisgKiB0byBiZSBjb25maWd1cmVkIGFuZCByZXR1cm5zIHRoZSB0b3RhbCBtZW1vcnkgcmVxdWlyZWQuCisgKiovCiBpbnQKIGxwZmNfc2xpX2hicV9zaXplKHZvaWQpCiB7CiAJcmV0dXJuIGxwZmNfc2xpX2hicV9lbnRyeV9jb3VudCgpICogc2l6ZW9mKHN0cnVjdCBscGZjX2hicV9lbnRyeSk7CiB9CiAKKy8qKgorICogbHBmY19zbGlfaGJxX3NldHVwOiBjb25maWd1cmUgYW5kIGluaXRpYWxpemUgSEJRcy4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgdGhlIFNMSSBpbml0aWFsaXphdGlvbiB0byBjb25maWd1cmUKKyAqIGFsbCB0aGUgSEJRcyBhbmQgcG9zdCBidWZmZXJzIHRvIHRoZSBIQlEuIFRoZSBjYWxsZXIgaXMgbm90CisgKiByZXF1aXJlZCB0byBob2xkIGFueSBsb2Nrcy4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB6ZXJvIGlmIHN1Y2Nlc3NmdWwKKyAqIGVsc2UgaXQgd2lsbCByZXR1cm4gbmVnYXRpdmUgZXJyb3IgY29kZS4KKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfc2xpX2hicV9zZXR1cChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0yNDE1LDE1ICszMDQ3LDI2IEBACiAJbWVtcG9vbF9mcmVlKHBtYiwgcGhiYS0+bWJveF9tZW1fcG9vbCk7CiAKIAkvKiBJbml0aWFsbHkgcG9wdWxhdGUgb3IgcmVwbGVuaXNoIHRoZSBIQlFzICovCi0JZm9yIChoYnFubyA9IDA7IGhicW5vIDwgaGJxX2NvdW50OyArK2hicW5vKSB7Ci0JCWlmIChscGZjX3NsaV9oYnFidWZfaW5pdF9oYnFzKHBoYmEsIGhicW5vKSkKLQkJCXJldHVybiAtRU5PTUVNOwotCX0KKwlmb3IgKGhicW5vID0gMDsgaGJxbm8gPCBoYnFfY291bnQ7ICsraGJxbm8pCisJCWxwZmNfc2xpX2hicWJ1Zl9pbml0X2hicXMocGhiYSwgaGJxbm8pOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1scGZjX2RvX2NvbmZpZ19wb3J0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgaW50IHNsaV9tb2RlKQorLyoqCisgKiBscGZjX3NsaV9jb25maWdfcG9ydDogSXNzdWUgY29uZmlnIHBvcnQgbWFpbGJveCBjb21tYW5kLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHNsaV9tb2RlOiBzbGkgbW9kZSAtIDIvMworICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBzbGkgaW50aWFsaXphdGlvbiBjb2RlIHBhdGgKKyAqIHRvIGlzc3VlIGNvbmZpZ19wb3J0IG1haWxib3ggY29tbWFuZC4gVGhpcyBmdW5jdGlvbiByZXN0YXJ0cyB0aGUKKyAqIEhCQSBmaXJtd2FyZSBhbmQgaXNzdWVzIGEgY29uZmlnX3BvcnQgbWFpbGJveCBjb21tYW5kIHRvIGNvbmZpZ3VyZQorICogdGhlIFNMSSBpbnRlcmZhY2UgaW4gdGhlIHNsaSBtb2RlIHNwZWNpZmllZCBieSBzbGlfbW9kZQorICogdmFyaWFibGUuIFRoZSBjYWxsZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhvbGQgYW55IGxvY2tzLgorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBzdWNjZXNzZnVsLCBlbHNlIHJldHVybnMgbmVnYXRpdmUgZXJyb3IKKyAqIGNvZGUuCisgKiovCitpbnQKK2xwZmNfc2xpX2NvbmZpZ19wb3J0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgaW50IHNsaV9tb2RlKQogewogCUxQRkNfTUJPWFFfdCAqcG1iOwogCXVpbnQzMl90IHJlc2V0Y291bnQgPSAwLCByYyA9IDAsIGRvbmUgPSAwOwpAQCAtMjQ2MCwxMyArMzEwMywxNSBAQAogCQlpZiAocmMgPT0gLUVSRVNUQVJUKSB7CiAJCQlwaGJhLT5saW5rX3N0YXRlID0gTFBGQ19MSU5LX1VOS05PV047CiAJCQljb250aW51ZTsKLQkJfSBlbHNlIGlmIChyYykgeworCQl9IGVsc2UgaWYgKHJjKQogCQkJYnJlYWs7Ci0JCX0KLQogCQlwaGJhLT5saW5rX3N0YXRlID0gTFBGQ19JTklUX01CWF9DTURTOwogCQlscGZjX2NvbmZpZ19wb3J0KHBoYmEsIHBtYik7CiAJCXJjID0gbHBmY19zbGlfaXNzdWVfbWJveChwaGJhLCBwbWIsIE1CWF9QT0xMKTsKKwkJcGhiYS0+c2xpM19vcHRpb25zICY9IH4oTFBGQ19TTEkzX05QSVZfRU5BQkxFRCB8CisJCQkJCUxQRkNfU0xJM19IQlFfRU5BQkxFRCB8CisJCQkJCUxQRkNfU0xJM19DUlBfRU5BQkxFRCB8CisJCQkJCUxQRkNfU0xJM19JTkJfRU5BQkxFRCk7CiAJCWlmIChyYyAhPSBNQlhfU1VDQ0VTUykgewogCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfSU5JVCwKIAkJCQkiMDQ0MiBBZGFwdGVyIGZhaWxlZCB0byBpbml0LCBtYnhDbWQgeCV4ICIKQEAgLTI0NzYsMzAgKzMxMjEsNjQgQEAKIAkJCXBoYmEtPnNsaS5zbGlfZmxhZyAmPSB+TFBGQ19TTEkyX0FDVElWRTsKIAkJCXNwaW5fdW5sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAJCQlyYyA9IC1FTlhJTzsKLQkJfSBlbHNlIHsKKwkJfSBlbHNlCiAJCQlkb25lID0gMTsKLQkJCXBoYmEtPm1heF92cGkgPSAocGhiYS0+bWF4X3ZwaSAmJgotCQkJCQkgcG1iLT5tYi51bi52YXJDZmdQb3J0LmdtdikgIT0gMAotCQkJCT8gcG1iLT5tYi51bi52YXJDZmdQb3J0Lm1heF92cGkKLQkJCQk6IDA7Ci0JCX0KIAl9Ci0KIAlpZiAoIWRvbmUpIHsKIAkJcmMgPSAtRUlOVkFMOwogCQlnb3RvIGRvX3ByZXBfZmFpbGVkOwogCX0KLQotCWlmICgocG1iLT5tYi51bi52YXJDZmdQb3J0LnNsaV9tb2RlID09IDMpICYmCi0JCSghcG1iLT5tYi51bi52YXJDZmdQb3J0LmNNQSkpIHsKLQkJcmMgPSAtRU5YSU87CisJaWYgKHBtYi0+bWIudW4udmFyQ2ZnUG9ydC5zbGlfbW9kZSA9PSAzKSB7CisJCWlmICghcG1iLT5tYi51bi52YXJDZmdQb3J0LmNNQSkgeworCQkJcmMgPSAtRU5YSU87CisJCQlnb3RvIGRvX3ByZXBfZmFpbGVkOworCQl9CisJCWlmIChwaGJhLT5tYXhfdnBpICYmIHBtYi0+bWIudW4udmFyQ2ZnUG9ydC5nbXYpIHsKKwkJCXBoYmEtPnNsaTNfb3B0aW9ucyB8PSBMUEZDX1NMSTNfTlBJVl9FTkFCTEVEOworCQkJcGhiYS0+bWF4X3ZwaSA9IHBtYi0+bWIudW4udmFyQ2ZnUG9ydC5tYXhfdnBpOworCQl9IGVsc2UKKwkJCXBoYmEtPm1heF92cGkgPSAwOworCQlpZiAocG1iLT5tYi51bi52YXJDZmdQb3J0LmdlcmJtKQorCQkJcGhiYS0+c2xpM19vcHRpb25zIHw9IExQRkNfU0xJM19IQlFfRU5BQkxFRDsKKwkJaWYgKHBtYi0+bWIudW4udmFyQ2ZnUG9ydC5nY3JwKQorCQkJcGhiYS0+c2xpM19vcHRpb25zIHw9IExQRkNfU0xJM19DUlBfRU5BQkxFRDsKKwkJaWYgKHBtYi0+bWIudW4udmFyQ2ZnUG9ydC5naW5iKSB7CisJCQlwaGJhLT5zbGkzX29wdGlvbnMgfD0gTFBGQ19TTEkzX0lOQl9FTkFCTEVEOworCQkJcGhiYS0+cG9ydF9ncCA9IHBoYmEtPm1ib3gtPnVzLnMzX2luYl9wZ3AucG9ydDsKKwkJCXBoYmEtPmluYl9oYV9jb3B5ID0gJnBoYmEtPm1ib3gtPnVzLnMzX2luYl9wZ3AuaGFfY29weTsKKwkJCXBoYmEtPmluYl9jb3VudGVyID0gJnBoYmEtPm1ib3gtPnVzLnMzX2luYl9wZ3AuY291bnRlcjsKKwkJCXBoYmEtPmluYl9sYXN0X2NvdW50ZXIgPQorCQkJCQlwaGJhLT5tYm94LT51cy5zM19pbmJfcGdwLmNvdW50ZXI7CisJCX0gZWxzZSB7CisJCQlwaGJhLT5wb3J0X2dwID0gcGhiYS0+bWJveC0+dXMuczNfcGdwLnBvcnQ7CisJCQlwaGJhLT5pbmJfaGFfY29weSA9IE5VTEw7CisJCQlwaGJhLT5pbmJfY291bnRlciA9IE5VTEw7CisJCX0KKwl9IGVsc2UgeworCQlwaGJhLT5wb3J0X2dwID0gcGhiYS0+bWJveC0+dXMuczIucG9ydDsKKwkJcGhiYS0+aW5iX2hhX2NvcHkgPSBOVUxMOworCQlwaGJhLT5pbmJfY291bnRlciA9IE5VTEw7CisJCXBoYmEtPm1heF92cGkgPSAwOwogCX0KLQogZG9fcHJlcF9mYWlsZWQ6CiAJbWVtcG9vbF9mcmVlKHBtYiwgcGhiYS0+bWJveF9tZW1fcG9vbCk7CiAJcmV0dXJuIHJjOwogfQogCisKKy8qKgorICogbHBmY19zbGlfaGJhX3NldHVwOiBTTEkgaW50aWFsaXphdGlvbiBmdW5jdGlvbi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBtYWluIFNMSSBpbnRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uCisgKiBpcyBjYWxsZWQgYnkgdGhlIEhCQSBpbnRpYWxpemF0aW9uIGNvZGUsIEhCQSByZXNldCBjb2RlIGFuZCBIQkEKKyAqIGVycm9yIGF0dGVudGlvbiBoYW5kbGVyIGNvZGUuIENhbGxlciBpcyBub3QgcmVxdWlyZWQgdG8gaG9sZCBhbnkKKyAqIGxvY2tzLiBUaGlzIGZ1bmN0aW9uIGlzc3VlcyBjb25maWdfcG9ydCBtYWlsYm94IGNvbW1hbmQgdG8gY29uZmlndXJlCisgKiB0aGUgU0xJLCBzZXR1cCBpb2NiIHJpbmdzIGFuZCBIQlEgcmluZ3MuIEluIHRoZSBlbmQgdGhlIGZ1bmN0aW9uCisgKiBjYWxscyB0aGUgY29uZmlnX3BvcnRfcG9zdCBmdW5jdGlvbiB0byBpc3N1ZSBpbml0X2xpbmsgbWFpbGJveAorICogY29tbWFuZCBhbmQgdG8gc3RhcnQgdGhlIGRpc2NvdmVyeS4gVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHplcm8KKyAqIGlmIHN1Y2Nlc3NmdWwsIGVsc2UgaXQgd2lsbCByZXR1cm4gbmVnYXRpdmUgZXJyb3IgY29kZS4KKyAqKi8KIGludAogbHBmY19zbGlfaGJhX3NldHVwKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTI1MjgsMjIgKzMyMDcsMjAgQEAKIAkJYnJlYWs7CiAJfQogCi0JcmMgPSBscGZjX2RvX2NvbmZpZ19wb3J0KHBoYmEsIG1vZGUpOworCXJjID0gbHBmY19zbGlfY29uZmlnX3BvcnQocGhiYSwgbW9kZSk7CisKIAlpZiAocmMgJiYgbHBmY19zbGlfbW9kZSA9PSAzKQogCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19JTklUIHwgTE9HX1ZQT1JULAogCQkJCSIxODIwIFVuYWJsZSB0byBzZWxlY3QgU0xJLTMuICAiCiAJCQkJIk5vdCBzdXBwb3J0ZWQgYnkgYWRhcHRlci5cbiIpOwogCWlmIChyYyAmJiBtb2RlICE9IDIpCi0JCXJjID0gbHBmY19kb19jb25maWdfcG9ydChwaGJhLCAyKTsKKwkJcmMgPSBscGZjX3NsaV9jb25maWdfcG9ydChwaGJhLCAyKTsKIAlpZiAocmMpCiAJCWdvdG8gbHBmY19zbGlfaGJhX3NldHVwX2Vycm9yOwogCiAJaWYgKHBoYmEtPnNsaV9yZXYgPT0gMykgewogCQlwaGJhLT5pb2NiX2NtZF9zaXplID0gU0xJM19JT0NCX0NNRF9TSVpFOwogCQlwaGJhLT5pb2NiX3JzcF9zaXplID0gU0xJM19JT0NCX1JTUF9TSVpFOwotCQlwaGJhLT5zbGkzX29wdGlvbnMgfD0gTFBGQ19TTEkzX0VOQUJMRUQ7Ci0JCXBoYmEtPnNsaTNfb3B0aW9ucyB8PSBMUEZDX1NMSTNfSEJRX0VOQUJMRUQ7Ci0KIAl9IGVsc2UgewogCQlwaGJhLT5pb2NiX2NtZF9zaXplID0gU0xJMl9JT0NCX0NNRF9TSVpFOwogCQlwaGJhLT5pb2NiX3JzcF9zaXplID0gU0xJMl9JT0NCX1JTUF9TSVpFOwpAQCAtMjU1OCw4ICszMjM1LDcgQEAKIAlpZiAocmMpCiAJCWdvdG8gbHBmY19zbGlfaGJhX3NldHVwX2Vycm9yOwogCi0JCQkJLyogSW5pdCBIQlFzICovCi0KKwkvKiBJbml0IEhCUXMgKi8KIAlpZiAocGhiYS0+c2xpM19vcHRpb25zICYgTFBGQ19TTEkzX0hCUV9FTkFCTEVEKSB7CiAJCXJjID0gbHBmY19zbGlfaGJxX3NldHVwKHBoYmEpOwogCQlpZiAocmMpCkBAIC0yNTgxLDE5ICszMjU3LDE5IEBACiAJcmV0dXJuIHJjOwogfQogCi0vKiEgbHBmY19tYm94X3RpbWVvdXQKKworLyoqCisgKiBscGZjX21ib3hfdGltZW91dDogVGltZW91dCBjYWxsIGJhY2sgZnVuY3Rpb24gZm9yIG1ib3ggdGltZXIuCisgKiBAcHRyOiBjb250ZXh0IG9iamVjdCAtIHBvaW50ZXIgdG8gaGJhIHN0cnVjdHVyZS4KICAqCi0gKiBccHJlCi0gKiBccG9zdAotICogXHBhcmFtIGhiYSBQb2ludGVyIHRvIHBlciBzdHJ1Y3QgbHBmY19oYmEgc3RydWN0dXJlCi0gKiBccGFyYW0gbDEgIFBvaW50ZXIgdG8gdGhlIGRyaXZlcidzIG1haWxib3ggcXVldWUuCi0gKiBccmV0dXJuCi0gKiAgIHZvaWQKLSAqCi0gKiBcYiBEZXNjcmlwdGlvbjoKLSAqCi0gKiBUaGlzIHJvdXRpbmUgaGFuZGxlcyBtYWlsYm94IHRpbWVvdXQgZXZlbnRzIGF0IHRpbWVyIGludGVycnVwdCBjb250ZXh0LgotICovCisgKiBUaGlzIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgbWFpbGJveCB0aW1lci4gVGhlIG1haWxib3gKKyAqIHRpbWVyIGlzIGFybWVkIHdoZW4gYSBuZXcgbWFpbGJveCBjb21tYW5kIGlzIGlzc3VlZCBhbmQgdGhlIHRpbWVyCisgKiBpcyBkZWxldGVkIHdoZW4gdGhlIG1haWxib3ggY29tcGxldGUuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYnkKKyAqIHRoZSBrZXJuZWwgdGltZXIgY29kZSB3aGVuIGEgbWFpbGJveCBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4KKyAqIGV4cGVjdGVkIHRpbWUuIFRoaXMgZnVuY3Rpb24gd2FrZXMgdXAgdGhlIHdvcmtlciB0aHJlYWQgdG8KKyAqIHByb2Nlc3MgdGhlIG1haWxib3ggdGltZW91dCBhbmQgcmV0dXJucy4gQWxsIHRoZSBwcm9jZXNzaW5nIGlzCisgKiBkb25lIGJ5IHRoZSB3b3JrZXIgdGhyZWFkIGZ1bmN0aW9uIGxwZmNfbWJveF90aW1lb3V0X2hhbmRsZXIuCisgKiovCiB2b2lkCiBscGZjX21ib3hfdGltZW91dCh1bnNpZ25lZCBsb25nIHB0cikKIHsKQEAgLTI2MTIsNiArMzI4OCwxNSBAQAogCXJldHVybjsKIH0KIAorCisvKioKKyAqIGxwZmNfbWJveF90aW1lb3V0X2hhbmRsZXI6IFdvcmtlciB0aHJlYWQgZnVuY3Rpb24gdG8gaGFuZGxlIG1haWxib3ggdGltZW91dC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdvcmtlciB0aHJlYWQgd2hlbiBhIG1haWxib3ggY29tbWFuZCB0aW1lcyBvdXQuCisgKiBUaGUgY2FsbGVyIGlzIG5vdCByZXF1aXJlZCB0byBob2xkIGFueSBsb2Nrcy4gVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHRoZQorICogSEJBIGFuZCByZWNvdmVyIGFsbCB0aGUgcGVuZGluZyBjb21tYW5kcy4KKyAqKi8KIHZvaWQKIGxwZmNfbWJveF90aW1lb3V0X2hhbmRsZXIoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMjY2Niw2ICszMzUxLDMyIEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2lzc3VlX21ib3g6IElzc3VlIGEgbWFpbGJveCBjb21tYW5kIHRvIGZpcm13YXJlLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHBtYm94OiBQb2ludGVyIHRvIG1haWxib3ggb2JqZWN0LgorICogQGZsYWc6IEZsYWcgaW5kaWNhdGluZyBob3cgdGhlIG1haWxib3ggbmVlZCB0byBiZSBwcm9jZXNzZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZGlzY292ZXJ5IGNvZGUgYW5kIEhCQSBtYW5hZ2VtZW50IGNvZGUKKyAqIHRvIHN1Ym1pdCBhIG1haWxib3ggY29tbWFuZCB0byBmaXJtd2FyZS4gVGhpcyBmdW5jdGlvbiBnZXRzIHRoZQorICogaGJhbG9jayB0byBwcm90ZWN0IHRoZSBkYXRhIHN0cnVjdHVyZXMuCisgKiBUaGUgbWFpbGJveCBjb21tYW5kIGNhbiBiZSBzdWJtaXR0ZWQgaW4gcG9sbGluZyBtb2RlLCBpbiB3aGljaCBjYXNlCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgd2FpdCBpbiBhIHBvbGxpbmcgbG9vcCBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlCisgKiBtYWlsYm94LgorICogSWYgdGhlIG1haWxib3ggaXMgc3VibWl0dGVkIGluIG5vX3dhaXQgbW9kZSAobm90IHBvbGxpbmcpIHRoZQorICogZnVuY3Rpb24gd2lsbCBzdWJtaXQgdGhlIGNvbW1hbmQgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nCisgKiBmb3IgdGhlIG1haWxib3ggY29tcGxldGlvbi4gVGhlIG5vX3dhaXQgaXMgc3VwcG9ydGVkIG9ubHkgd2hlbiBIQkEKKyAqIGlzIGluIFNMSTIvU0xJMyBtb2RlIC0gaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4KKyAqIFRoZSBTTEkgaW50ZXJmYWNlIGFsbG93cyBvbmx5IG9uZSBtYWlsYm94IHBlbmRpbmcgYXQgYSB0aW1lLiBJZiB0aGUKKyAqIG1haWxib3ggaXMgaXNzdWVkIGluIHBvbGxpbmcgbW9kZSBhbmQgdGhlcmUgaXMgYWxyZWFkeSBhIG1haWxib3gKKyAqIHBlbmRpbmcsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yLiBJZiB0aGUgbWFpbGJveCBpcyBpc3N1ZWQKKyAqIGluIE5PX1dBSVQgbW9kZSBhbmQgdGhlcmUgaXMgYSBtYWlsYm94IHBlbmRpbmcgYWxyZWFkeSwgdGhlIGZ1bmN0aW9uCisgKiB3aWxsIHJldHVybiBNQlhfQlVTWSBhZnRlciBxdWV1aW5nIHRoZSBtYWlsYm94IGludG8gbWFpbGJveCBxdWV1ZS4KKyAqIFRoZSBzbGkgbGF5ZXIgb3ducyB0aGUgbWFpbGJveCBvYmplY3QgdW50aWwgdGhlIGNvbXBsZXRpb24gb2YgbWFpbGJveAorICogY29tbWFuZCBpZiB0aGlzIGZ1bmN0aW9uIHJldHVybiBNQlhfQlVTWSBvciBNQlhfU1VDQ0VTUy4gRm9yIGFsbCBvdGhlcgorICogcmV0dXJuIGNvZGVzIHRoZSBjYWxsZXIgb3ducyB0aGUgbWFpbGJveCBjb21tYW5kIGFmdGVyIHRoZSByZXR1cm4gb2YKKyAqIHRoZSBmdW5jdGlvbi4KKyAqKi8KIGludAogbHBmY19zbGlfaXNzdWVfbWJveChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1ib3gsIHVpbnQzMl90IGZsYWcpCiB7CkBAIC0yNjc2LDcgKzMzODcsNyBAQAogCWludCBpOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAl1bnNpZ25lZCBsb25nIGRydnJfZmxhZyA9IDA7Ci0Jdm9sYXRpbGUgdWludDMyX3Qgd29yZDAsIGxkYXRhOworCXVpbnQzMl90IHdvcmQwLCBsZGF0YTsKIAl2b2lkIF9faW9tZW0gKnRvX3NsaW07CiAJaW50IHByb2Nlc3NpbmdfcXVldWUgPSAwOwogCkBAIC0yODM2LDEyICszNTQ3LDExIEBACiAKIAlpZiAocHNsaS0+c2xpX2ZsYWcgJiBMUEZDX1NMSTJfQUNUSVZFKSB7CiAJCS8qIEZpcnN0IGNvcHkgY29tbWFuZCBkYXRhIHRvIGhvc3QgU0xJTSBhcmVhICovCi0JCWxwZmNfc2xpX3BjaW1lbV9iY29weShtYiwgJnBoYmEtPnNsaW0ycC0+bWJ4LCBNQUlMQk9YX0NNRF9TSVpFKTsKKwkJbHBmY19zbGlfcGNpbWVtX2Jjb3B5KG1iLCBwaGJhLT5tYm94LCBNQUlMQk9YX0NNRF9TSVpFKTsKIAl9IGVsc2UgewogCQlpZiAobWItPm1ieENvbW1hbmQgPT0gTUJYX0NPTkZJR19QT1JUKSB7CiAJCQkvKiBjb3B5IGNvbW1hbmQgZGF0YSBpbnRvIGhvc3QgbWJveCBmb3IgY21wbCAqLwotCQkJbHBmY19zbGlfcGNpbWVtX2Jjb3B5KG1iLCAmcGhiYS0+c2xpbTJwLT5tYngsCi0JCQkJCSAgICAgIE1BSUxCT1hfQ01EX1NJWkUpOworCQkJbHBmY19zbGlfcGNpbWVtX2Jjb3B5KG1iLCBwaGJhLT5tYm94LCBNQUlMQk9YX0NNRF9TSVpFKTsKIAkJfQogCiAJCS8qIEZpcnN0IGNvcHkgbWJveCBjb21tYW5kIGRhdGEgdG8gSEJBIFNMSU0sIHNraXAgcGFzdCBmaXJzdApAQCAtMjg1MSw3ICszNTYxLDcgQEAKIAkJCSAgICBNQUlMQk9YX0NNRF9TSVpFIC0gc2l6ZW9mICh1aW50MzJfdCkpOwogCiAJCS8qIE5leHQgY29weSBvdmVyIGZpcnN0IHdvcmQsIHdpdGggbWJ4T3duZXIgc2V0ICovCi0JCWxkYXRhID0gKigodm9sYXRpbGUgdWludDMyX3QgKiltYik7CisJCWxkYXRhID0gKigodWludDMyX3QgKiltYik7CiAJCXRvX3NsaW0gPSBwaGJhLT5NQnNsaW1hZGRyOwogCQl3cml0ZWwobGRhdGEsIHRvX3NsaW0pOwogCQlyZWFkbCh0b19zbGltKTsgLyogZmx1c2ggKi8KQEAgLTI4ODMsNyArMzU5Myw3IEBACiAKIAkJaWYgKHBzbGktPnNsaV9mbGFnICYgTFBGQ19TTEkyX0FDVElWRSkgewogCQkJLyogRmlyc3QgcmVhZCBtYm94IHN0YXR1cyB3b3JkICovCi0JCQl3b3JkMCA9ICooKHZvbGF0aWxlIHVpbnQzMl90ICopJnBoYmEtPnNsaW0ycC0+bWJ4KTsKKwkJCXdvcmQwID0gKigodWludDMyX3QgKilwaGJhLT5tYm94KTsKIAkJCXdvcmQwID0gbGUzMl90b19jcHUod29yZDApOwogCQl9IGVsc2UgewogCQkJLyogRmlyc3QgcmVhZCBtYm94IHN0YXR1cyB3b3JkICovCkBAIC0yOTIyLDEyICszNjMyLDExIEBACiAKIAkJCWlmIChwc2xpLT5zbGlfZmxhZyAmIExQRkNfU0xJMl9BQ1RJVkUpIHsKIAkJCQkvKiBGaXJzdCBjb3B5IGNvbW1hbmQgZGF0YSAqLwotCQkJCXdvcmQwID0gKigodm9sYXRpbGUgdWludDMyX3QgKikKLQkJCQkJCSZwaGJhLT5zbGltMnAtPm1ieCk7CisJCQkJd29yZDAgPSAqKCh1aW50MzJfdCAqKXBoYmEtPm1ib3gpOwogCQkJCXdvcmQwID0gbGUzMl90b19jcHUod29yZDApOwogCQkJCWlmIChtYi0+bWJ4Q29tbWFuZCA9PSBNQlhfQ09ORklHX1BPUlQpIHsKIAkJCQkJTUFJTEJPWF90ICpzbGltbWI7Ci0JCQkJCXZvbGF0aWxlIHVpbnQzMl90IHNsaW13b3JkMDsKKwkJCQkJdWludDMyX3Qgc2xpbXdvcmQwOwogCQkJCQkvKiBDaGVjayByZWFsIFNMSU0gZm9yIGFueSBlcnJvcnMgKi8KIAkJCQkJc2xpbXdvcmQwID0gcmVhZGwocGhiYS0+TUJzbGltYWRkcik7CiAJCQkJCXNsaW1tYiA9IChNQUlMQk9YX3QgKikgJiBzbGltd29yZDA7CkBAIC0yOTQ4LDggKzM2NTcsNyBAQAogCiAJCWlmIChwc2xpLT5zbGlfZmxhZyAmIExQRkNfU0xJMl9BQ1RJVkUpIHsKIAkJCS8qIGNvcHkgcmVzdWx0cyBiYWNrIHRvIHVzZXIgKi8KLQkJCWxwZmNfc2xpX3BjaW1lbV9iY29weSgmcGhiYS0+c2xpbTJwLT5tYngsIG1iLAotCQkJCQkgICAgICBNQUlMQk9YX0NNRF9TSVpFKTsKKwkJCWxwZmNfc2xpX3BjaW1lbV9iY29weShwaGJhLT5tYm94LCBtYiwgTUFJTEJPWF9DTURfU0laRSk7CiAJCX0gZWxzZSB7CiAJCQkvKiBGaXJzdCBjb3B5IGNvbW1hbmQgZGF0YSAqLwogCQkJbHBmY19tZW1jcHlfZnJvbV9zbGltKG1iLCBwaGJhLT5NQnNsaW1hZGRyLApAQCAtMjk4MCw5ICszNjg4LDE2IEBACiAJcmV0dXJuIE1CWF9OT1RfRklOSVNIRUQ7CiB9CiAKLS8qCi0gKiBDYWxsZXIgbmVlZHMgdG8gaG9sZCBsb2NrLgotICovCisvKioKKyAqIF9fbHBmY19zbGlfcmluZ3R4X3B1dDogQWRkIGFuIGlvY2IgdG8gdGhlIHR4cS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHBpb2NiOiBQb2ludGVyIHRvIGFkZHJlc3Mgb2YgbmV3bHkgYWRkZWQgY29tbWFuZCBpb2NiLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaGJhbG9jayBoZWxkIHRvIGFkZCBhIGNvbW1hbmQKKyAqIGlvY2IgdG8gdGhlIHR4cSB3aGVuIFNMSSBsYXllciBjYW5ub3Qgc3VibWl0IHRoZSBjb21tYW5kIGlvY2IKKyAqIHRvIHRoZSByaW5nLgorICoqLwogc3RhdGljIHZvaWQKIF9fbHBmY19zbGlfcmluZ3R4X3B1dChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJICAgIHN0cnVjdCBscGZjX2lvY2JxICpwaW9jYikKQEAgLTI5OTIsNiArMzcwNywyMyBAQAogCXByaW5nLT50eHFfY250Kys7CiB9CiAKKy8qKgorICogbHBmY19zbGlfbmV4dF9pb2NiOiBHZXQgdGhlIG5leHQgaW9jYiBpbiB0aGUgdHhxLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAcGlvY2I6IFBvaW50ZXIgdG8gYWRkcmVzcyBvZiBuZXdseSBhZGRlZCBjb21tYW5kIGlvY2IuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBoYmFsb2NrIGhlbGQgYmVmb3JlIGEgbmV3CisgKiBpb2NiIGlzIHN1Ym1pdHRlZCB0byB0aGUgZmlybXdhcmUuIFRoaXMgZnVuY3Rpb24gY2hlY2tzCisgKiB0eHEgdG8gZmx1c2ggdGhlIGlvY2JzIGluIHR4cSB0byBGaXJtd2FyZSBiZWZvcmUKKyAqIHN1Ym1pdHRpbmcgbmV3IGlvY2JzIHRvIHRoZSBGaXJtd2FyZS4KKyAqIElmIHRoZXJlIGFyZSBpb2NicyBpbiB0aGUgdHhxIHdoaWNoIG5lZWQgdG8gYmUgc3VibWl0dGVkCisgKiB0byBmaXJtd2FyZSwgbHBmY19zbGlfbmV4dF9pb2NiIHJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQKKyAqIG9mIHRoZSB0eHEgYWZ0ZXIgZGVxdWV1aW5nIGl0IGZyb20gdHhxLgorICogSWYgdGhlcmUgaXMgbm8gaW9jYiBpbiB0aGUgdHhxIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisgKiAqcGlvY2IgYW5kICpwaW9jYiBpcyBzZXQgdG8gTlVMTC4gQ2FsbGVyIG5lZWRzIHRvIGNoZWNrCisgKiAqcGlvY2IgdG8gZmluZCBpZiB0aGVyZSBhcmUgbW9yZSBjb21tYW5kcyBpbiB0aGUgdHhxLgorICoqLwogc3RhdGljIHN0cnVjdCBscGZjX2lvY2JxICoKIGxwZmNfc2xpX25leHRfaW9jYihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJICAgc3RydWN0IGxwZmNfaW9jYnEgKipwaW9jYikKQEAgLTMwMDcsOSArMzczOSwzMCBAQAogCXJldHVybiBuZXh0aW9jYjsKIH0KIAotLyoKLSAqIExvY2tsZXNzIHZlcnNpb24gb2YgbHBmY19zbGlfaXNzdWVfaW9jYi4KLSAqLworLyoqCisgKiBfX2xwZmNfc2xpX2lzc3VlX2lvY2I6IExvY2tsZXNzIHZlcnNpb24gb2YgbHBmY19zbGlfaXNzdWVfaW9jYi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHBpb2NiOiBQb2ludGVyIHRvIGNvbW1hbmQgaW9jYi4KKyAqIEBmbGFnOiBGbGFnIGluZGljYXRpbmcgaWYgdGhpcyBjb21tYW5kIGNhbiBiZSBwdXQgaW50byB0eHEuCisgKgorICogX19scGZjX3NsaV9pc3N1ZV9pb2NiIGlzIHVzZWQgYnkgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIKKyAqIHRvIGlzc3VlIGFuIGlvY2IgY29tbWFuZCB0byB0aGUgSEJBLiBJZiB0aGUgUENJIHNsb3QgaXMgcmVjb3ZlcmluZworICogZnJvbSBlcnJvciBzdGF0ZSBvciBpZiBIQkEgaXMgcmVzZXR0aW5nIG9yIGlmIExQRkNfU1RPUF9JT0NCX0VWRU5UCisgKiBmbGFnIGlzIHR1cm5lZCBvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSU9DQl9FUlJPUi4KKyAqIFdoZW4gdGhlIGxpbmsgaXMgZG93biwgdGhpcyBmdW5jdGlvbiBhbGxvd3Mgb25seSBpb2NicyBmb3IKKyAqIHBvc3RpbmcgYnVmZmVycy4KKyAqIFRoaXMgZnVuY3Rpb24gZmluZHMgbmV4dCBhdmFpbGFibGUgc2xvdCBpbiB0aGUgY29tbWFuZCByaW5nIGFuZAorICogcG9zdHMgdGhlIGNvbW1hbmQgdG8gdGhlIGF2YWlsYWJsZSBzbG90IGFuZCB3cml0ZXMgdGhlIHBvcnQKKyAqIGF0dGVudGlvbiByZWdpc3RlciB0byByZXF1ZXN0IEhCQSBzdGFydCBwcm9jZXNzaW5nIG5ldyBpb2NiLgorICogSWYgdGhlcmUgaXMgbm8gc2xvdCBhdmFpbGFibGUgaW4gdGhlIHJpbmcgYW5kCisgKiBmbGFnICYgU0xJX0lPQ0JfUkVUX0lPQ0IgaXMgc2V0LCB0aGUgbmV3IGlvY2IgaXMgYWRkZWQgdG8gdGhlCisgKiB0eHEsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb24gcmV0dXJucyBJT0NCX0JVU1kuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBoYmFsb2NrIGhlbGQuCisgKiBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gc3VjY2VzcyBhZnRlciBpdCBzdWNjZXNzZnVsbHkgc3VibWl0IHRoZQorICogaW9jYiB0byBmaXJtd2FyZSBvciBhZnRlciBhZGRpbmcgdG8gdGhlIHR4cS4KKyAqKi8KIHN0YXRpYyBpbnQKIF9fbHBmY19zbGlfaXNzdWVfaW9jYihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJICAgIHN0cnVjdCBscGZjX2lvY2JxICpwaW9jYiwgdWludDMyX3QgZmxhZykKQEAgLTMwNTIsNiArMzgwNSwxNiBAQAogCQkgKiBjYW4gYmUgaXNzdWVkIGlmIHRoZSBsaW5rIGlzIG5vdCB1cC4KIAkJICovCiAJCXN3aXRjaCAocGlvY2ItPmlvY2IudWxwQ29tbWFuZCkgeworCQljYXNlIENNRF9HRU5fUkVRVUVTVDY0X0NSOgorCQljYXNlIENNRF9HRU5fUkVRVUVTVDY0X0NYOgorCQkJaWYgKCEocGhiYS0+c2xpLnNsaV9mbGFnICYgTFBGQ19NRU5MT19NQUlOVCkgfHwKKwkJCQkocGlvY2ItPmlvY2IudW4uZ2VucmVxNjQudzUuaGNzdy5SY3RsICE9CisJCQkJCUZDX0ZDUF9DTU5EKSB8fAorCQkJCShwaW9jYi0+aW9jYi51bi5nZW5yZXE2NC53NS5oY3N3LlR5cGUgIT0KKwkJCQkJTUVOTE9fVFJBTlNQT1JUX1RZUEUpKQorCisJCQkJZ290byBpb2NiX2J1c3k7CisJCQlicmVhazsKIAkJY2FzZSBDTURfUVVFX1JJTkdfQlVGX0NOOgogCQljYXNlIENNRF9RVUVfUklOR19CVUY2NF9DTjoKIAkJCS8qCkBAIC0zMTA2LDYgKzM4NjksMTkgQEAKIH0KIAogCisvKioKKyAqIGxwZmNfc2xpX2lzc3VlX2lvY2I6IFdyYXBwZXIgZnVuY3Rpb24gZm9yIF9fbHBmY19zbGlfaXNzdWVfaW9jYi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHBpb2NiOiBQb2ludGVyIHRvIGNvbW1hbmQgaW9jYi4KKyAqIEBmbGFnOiBGbGFnIGluZGljYXRpbmcgaWYgdGhpcyBjb21tYW5kIGNhbiBiZSBwdXQgaW50byB0eHEuCisgKgorICogbHBmY19zbGlfaXNzdWVfaW9jYiBpcyBhIHdyYXBwZXIgYXJvdW5kIF9fbHBmY19zbGlfaXNzdWVfaW9jYgorICogZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgaGJhbG9jayBhbmQgY2FsbHMKKyAqIF9fbHBmY19zbGlfaXNzdWVfaW9jYiBmdW5jdGlvbiBhbmQgd2lsbCByZXR1cm4gdGhlIGVycm9yIHJldHVybmVkCisgKiBieSBfX2xwZmNfc2xpX2lzc3VlX2lvY2IgZnVuY3Rpb24uIFRoaXMgd3JhcHBlciBpcyB1c2VkIGJ5CisgKiBmdW5jdGlvbnMgd2hpY2ggZG8gbm90IGhvbGQgaGJhbG9jay4KKyAqKi8KIGludAogbHBmY19zbGlfaXNzdWVfaW9jYihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJICAgIHN0cnVjdCBscGZjX2lvY2JxICpwaW9jYiwgdWludDMyX3QgZmxhZykKQEAgLTMxMjAsNiArMzg5NiwxNyBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKiBscGZjX2V4dHJhX3Jpbmdfc2V0dXA6IEV4dHJhIHJpbmcgc2V0dXAgZnVuY3Rpb24uCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpbGUgZHJpdmVyIGF0dGFjaGVzIHdpdGggdGhlCisgKiBIQkEgdG8gc2V0dXAgdGhlIGV4dHJhIHJpbmcuIFRoZSBleHRyYSByaW5nIGlzIHVzZWQKKyAqIG9ubHkgd2hlbiBkcml2ZXIgbmVlZHMgdG8gc3VwcG9ydCB0YXJnZXQgbW9kZSBmdW5jdGlvbmFsaXR5CisgKiBvciBJUCBvdmVyIEZDIGZ1bmN0aW9uYWxpdGllcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4KKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfZXh0cmFfcmluZ19zZXR1cCggc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMzE1NSw2ICszOTQyLDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qKgorICogbHBmY19zbGlfYXN5bmNfZXZlbnRfaGFuZGxlcjogQVNZTkMgaW9jYiBoYW5kbGVyIGZ1bmN0aW9uLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAaW9jYnE6IFBvaW50ZXIgdG8gaW9jYiBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHNsb3cgcmluZyBldmVudCBoYW5kbGVyCisgKiBmdW5jdGlvbiB3aGVuIHRoZXJlIGlzIGFuIEFTWU5DIGV2ZW50IGlvY2IgaW4gdGhlIHJpbmcuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4KKyAqIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgb25seSB0ZW1wZXJhdHVyZSByZWxhdGVkCisgKiBBU1lOQyBldmVudHMuIFRoZSBmdW5jdGlvbiBkZWNvZGVzIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IKKyAqIGV2ZW50IG1lc3NhZ2UgYW5kIHBvc3RzIGV2ZW50cyBmb3IgdGhlIG1hbmFnZW1lbnQgYXBwbGljYXRpb25zLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2xpX2FzeW5jX2V2ZW50X2hhbmRsZXIoc3RydWN0IGxwZmNfaGJhICogcGhiYSwKIAlzdHJ1Y3QgbHBmY19zbGlfcmluZyAqIHByaW5nLCBzdHJ1Y3QgbHBmY19pb2NicSAqIGlvY2JxKQpAQCAtMzIxMCw2ICs0MDEwLDE3IEBACiB9CiAKIAorLyoqCisgKiBscGZjX3NsaV9zZXR1cDogU0xJIHJpbmcgc2V0dXAgZnVuY3Rpb24uCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKgorICogbHBmY19zbGlfc2V0dXAgc2V0cyB1cCByaW5ncyBvZiB0aGUgU0xJIGludGVyZmFjZSB3aXRoCisgKiBudW1iZXIgb2YgaW9jYnMgcGVyIHJpbmcgYW5kIGlvdGFncy4gVGhpcyBmdW5jdGlvbiBpcworICogY2FsbGVkIHdoaWxlIGRyaXZlciBhdHRhY2ggdG8gdGhlIEhCQSBhbmQgYmVmb3JlIHRoZQorICogaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4gU28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgbG9ja2luZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDAuCisgKiovCiBpbnQKIGxwZmNfc2xpX3NldHVwKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTMzMjEsNiArNDEzMiwxNyBAQAogCXJldHVybiAwOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3F1ZXVlX3NldHVwOiBRdWV1ZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBscGZjX3NsaV9xdWV1ZV9zZXR1cCBzZXRzIHVwIG1haWxib3ggcXVldWVzIGFuZCBpb2NiIHF1ZXVlcyBmb3IgZWFjaAorICogcmluZy4gVGhpcyBmdW5jdGlvbiBhbHNvIGluaXRpYWxpemVzIHJpbmcgaW5kaWNlcyBvZiBlYWNoIHJpbmcuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBTTEkKKyAqIGludGVyZmFjZSBvZiBhbiBIQkEuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZCBhbmQgYWx3YXlzIHJldHVybnMKKyAqIDEuCisgKiovCiBpbnQKIGxwZmNfc2xpX3F1ZXVlX3NldHVwKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKIHsKQEAgLTMzNDksNiArNDE3MSwyMyBAQAogCXJldHVybiAxOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2hvc3RfZG93bjogVnBvcnQgY2xlYW51cCBmdW5jdGlvbi4KKyAqIEB2cG9ydDogUG9pbnRlciB0byB2aXJ0dWFsIHBvcnQgb2JqZWN0LgorICoKKyAqIGxwZmNfc2xpX2hvc3RfZG93biBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlc291cmNlcworICogYXNzb2NpYXRlZCB3aXRoIGEgdnBvcnQgYmVmb3JlIGRlc3Ryb3lpbmcgdmlydHVhbAorICogcG9ydCBkYXRhIHN0cnVjdHVyZXMuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgZm9sbG93aW5nIG9wZXJhdGlvbnM6CisgKiAtIEZyZWUgZGlzY292ZXJ5IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aXJ0dWFsCisgKiAgIHBvcnQuCisgKiAtIEZyZWUgaW9jYnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlydHVhbCBwb3J0IGluCisgKiAgIHRoZSB0eHEuCisgKiAtIFNlbmQgYWJvcnQgZm9yIGFsbCBpb2NiIGNvbW1hbmRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAgIHZwb3J0IGluIHR4Y21wbHEuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQgYW5kIGFsd2F5cyByZXR1cm5zIDEuCisgKiovCiBpbnQKIGxwZmNfc2xpX2hvc3RfZG93bihzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCiB7CkBAIC0zNDExLDYgKzQyNTAsMjEgQEAKIAlyZXR1cm4gMTsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9oYmFfZG93bjogUmVzb3VyY2UgY2xlYW51cCBmdW5jdGlvbiBmb3IgdGhlIEhCQS4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNsZWFucyB1cCBhbGwgaW9jYiwgYnVmZmVycywgbWFpbGJveCBjb21tYW5kcworICogd2hpbGUgc2h1dHRpbmcgZG93biB0aGUgSEJBLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vCisgKiBsb2NrIGhlbGQgYW5kIGFsd2F5cyByZXR1cm5zIDEuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGZvbGxvd2luZyB0byBjbGVhbnVwIGRyaXZlciByZXNvdXJjZXM6CisgKiAtIEZyZWUgZGlzY292ZXJ5IHJlc291cmNlcyBmb3IgZWFjaCB2aXJ0dWFsIHBvcnQKKyAqIC0gQ2xlYW51cCBhbnkgcGVuZGluZyBmYWJyaWMgaW9jYnMKKyAqIC0gSXRlcmF0ZSB0aHJvdWdoIHRoZSBpb2NiIHR4cSBhbmQgZnJlZSBlYWNoIGVudHJ5CisgKiAgIGluIHRoZSBsaXN0LgorICogLSBGcmVlIHVwIGFueSBidWZmZXIgcG9zdGVkIHRvIHRoZSBIQkEKKyAqIC0gRnJlZSBtYWlsYm94IGNvbW1hbmRzIGluIHRoZSBtYWlsYm94IHF1ZXVlLgorICoqLwogaW50CiBscGZjX3NsaV9oYmFfZG93bihzdHJ1Y3QgbHBmY19oYmEgKnBoYmEpCiB7CkBAIC0zNTAxLDYgKzQzNTUsMTggQEAKIAlyZXR1cm4gMTsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9wY2ltZW1fYmNvcHk6IFNMSSBtZW1vcnkgY29weSBmdW5jdGlvbi4KKyAqIEBzcmNwOiBTb3VyY2UgbWVtb3J5IHBvaW50ZXIuCisgKiBAZGVzdHA6IERlc3RpbmF0aW9uIG1lbW9yeSBwb2ludGVyLgorICogQGNudDogTnVtYmVyIG9mIHdvcmRzIHJlcXVpcmVkIHRvIGJlIGNvcGllZC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIGNvcHlpbmcgZGF0YSBiZXR3ZWVuIGRyaXZlciBtZW1vcnkKKyAqIGFuZCB0aGUgU0xJIG1lbW9yeS4gVGhpcyBmdW5jdGlvbiBhbHNvIGNoYW5nZXMgdGhlIGVuZGlhbm5lc3MKKyAqIG9mIGVhY2ggd29yZCBpZiBuYXRpdmUgZW5kaWFubmVzcyBpcyBkaWZmZXJlbnQgZnJvbSBTTEkKKyAqIGVuZGlhbm5lc3MuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIG9yIHdpdGhvdXQKKyAqIGxvY2suCisgKiovCiB2b2lkCiBscGZjX3NsaV9wY2ltZW1fYmNvcHkodm9pZCAqc3JjcCwgdm9pZCAqZGVzdHAsIHVpbnQzMl90IGNudCkKIHsKQEAgLTM1MTgsNiArNDM4NCwxNyBAQAogCX0KIH0KIAorCisvKioKKyAqIGxwZmNfc2xpX3Jpbmdwb3N0YnVmX3B1dDogRnVuY3Rpb24gdG8gYWRkIGEgYnVmZmVyIHRvIHBvc3RidWZxLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAbXA6IFBvaW50ZXIgdG8gZHJpdmVyIGJ1ZmZlciBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQuCisgKiBJdCBhbHdheXMgcmV0dXJuIHplcm8gYWZ0ZXIgYWRkaW5nIHRoZSBidWZmZXIgdG8gdGhlIHBvc3RidWZxCisgKiBidWZmZXIgbGlzdC4KKyAqKi8KIGludAogbHBmY19zbGlfcmluZ3Bvc3RidWZfcHV0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQkJIHN0cnVjdCBscGZjX2RtYWJ1ZiAqbXApCkBAIC0zNTMxLDYgKzQ0MDgsMTggQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9nZXRfYnVmZmVyX3RhZzogVGFnIGFsbG9jYXRpb24gZnVuY3Rpb24gZm9yIGEgYnVmZmVyIHBvc3RlZAorICogICAgICAgICAgdXNpbmcgQ01EX1FVRV9YUkk2NF9DWCBpb2NiLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICoKKyAqIFdoZW4gSEJRIGlzIGVuYWJsZWQsIGJ1ZmZlcnMgYXJlIHNlYXJjaGVkIGJhc2VkIG9uIHRhZ3MuIFRoaXMgZnVuY3Rpb24KKyAqIGFsbG9jYXRlcyBhIHRhZyBmb3IgYnVmZmVyIHBvc3RlZCB1c2luZyBDTURfUVVFX1hSSTY0X0NYIGlvY2IuIFRoZQorICogdGFnIGlzIGJpdCB3aXNlIG9yLWVkIHdpdGggUVVFX0JVRlRBR19CSVQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHRhZworICogZG9lcyBub3QgY29uZmxpY3Qgd2l0aCB0YWdzIG9mIGJ1ZmZlciBwb3N0ZWQgZm9yIHVuc29saWNpdGVkIGV2ZW50cy4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhbGxvY2F0ZWQgdGFnLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGgKKyAqIG5vIGxvY2tzIGhlbGQuCisgKiovCiB1aW50MzJfdAogbHBmY19zbGlfZ2V0X2J1ZmZlcl90YWcoc3RydWN0IGxwZmNfaGJhICpwaGJhKQogewpAQCAtMzU0NSw2ICs0NDM0LDIyIEBACiAJcmV0dXJuIHBoYmEtPmJ1ZmZlcl90YWdfY291bnQ7CiB9CiAKKy8qKgorICogbHBmY19zbGlfcmluZ190YWdnZWRidWZfZ2V0OiBTZWFyY2ggSEJRIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGgKKyAqICAgICAgICAgICAgICBwb3N0ZWQgdXNpbmcgQ01EX1FVRV9YUkk2NF9DWCBpb2NiLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAdGFnOiBCdWZmZXIgdGFnLgorICoKKyAqIEJ1ZmZlcnMgcG9zdGVkIHVzaW5nIENNRF9RVUVfWFJJNjRfQ1ggaW9jYiBhcmUgaW4gcHJpbmctPnBvc3RidWZxCisgKiBsaXN0LiBBZnRlciBIQkEgRE1BIGRhdGEgdG8gdGhlc2UgYnVmZmVycywgQ01EX0lPQ0JfUkVUX1hSSTY0X0NYCisgKiBpb2NiIGlzIHBvc3RlZCB0byB0aGUgcmVzcG9uc2UgcmluZyB3aXRoIHRoZSB0YWcgb2YgdGhlIGJ1ZmZlci4KKyAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgdGhlIHByaW5nLT5wb3N0YnVmcSBsaXN0IHVzaW5nIHRoZSB0YWcKKyAqIHRvIGZpbmQgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBDTURfSU9DQl9SRVRfWFJJNjRfQ1gKKyAqIGlvY2IuIElmIHRoZSBidWZmZXIgaXMgZm91bmQgdGhlbiBscGZjX2RtYWJ1ZiBvYmplY3Qgb2YgdGhlCisgKiBidWZmZXIgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBlbHNlIE5VTEwgaXMgcmV0dXJuZWQuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4KKyAqKi8KIHN0cnVjdCBscGZjX2RtYWJ1ZiAqCiBscGZjX3NsaV9yaW5nX3RhZ2dlZGJ1Zl9nZXQoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsCiAJCQl1aW50MzJfdCB0YWcpCkBAIC0zNTY1LDcgKzQ0NzAsNyBAQAogCiAJc3Bpbl91bmxvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKIAlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9FUlIsIExPR19JTklULAotCQkJIjA0MTAgQ2Fubm90IGZpbmQgdmlydHVhbCBhZGRyIGZvciBidWZmZXIgdGFnIG9uICIKKwkJCSIwNDAyIENhbm5vdCBmaW5kIHZpcnR1YWwgYWRkciBmb3IgYnVmZmVyIHRhZyBvbiAiCiAJCQkicmluZyAlZCBEYXRhIHglbHggeCVwIHglcCB4JXhcbiIsCiAJCQlwcmluZy0+cmluZ25vLCAodW5zaWduZWQgbG9uZykgdGFnLAogCQkJc2xwLT5uZXh0LCBzbHAtPnByZXYsIHByaW5nLT5wb3N0YnVmcV9jbnQpOwpAQCAtMzU3Myw2ICs0NDc4LDIzIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qKgorICogbHBmY19zbGlfcmluZ3Bvc3RidWZfZ2V0OiBTTEkyIGJ1ZmZlciBzZWFyY2ggZnVuY3Rpb24gZm9yCisgKiAgICAgIHVuc29saWNpdGVkIGN0IGFuZCBlbHMgZXZlbnRzLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQHByaW5nOiBQb2ludGVyIHRvIGRyaXZlciBTTEkgcmluZyBvYmplY3QuCisgKiBAcGh5czogRE1BIGFkZHJlc3Mgb2YgdGhlIGJ1ZmZlci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRoZSBidWZmZXIgbGlzdCB1c2luZyB0aGUgZG1hX2FkZHJlc3MKKyAqIG9mIHVuc29saWNpdGVkIGV2ZW50IHRvIGZpbmQgdGhlIGRyaXZlcidzIGxwZmNfZG1hYnVmIG9iamVjdAorICogY29ycmVzcG9uZGluZyB0byB0aGUgZG1hX2FkZHJlc3MuIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZQorICogbHBmY19kbWFidWYgb2JqZWN0IGlmIGEgYnVmZmVyIGlzIGZvdW5kIGVsc2UgaXQgcmV0dXJucyBOVUxMLgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGN0IGFuZCBlbHMgdW5zb2xpY2l0ZWQgZXZlbnQKKyAqIGhhbmRsZXJzIHRvIGdldCB0aGUgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5zb2xpY2l0ZWQKKyAqIGV2ZW50LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9jayBoZWxkLgorICoqLwogc3RydWN0IGxwZmNfZG1hYnVmICoKIGxwZmNfc2xpX3Jpbmdwb3N0YnVmX2dldChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX3NsaV9yaW5nICpwcmluZywKIAkJCSBkbWFfYWRkcl90IHBoeXMpCkBAIC0zNjAwLDYgKzQ1MjIsMTcgQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9hYm9ydF9lbHNfY21wbDogQ29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgZWxzIGFib3J0IGlvY2JzLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0LgorICogQGNtZGlvY2I6IFBvaW50ZXIgdG8gZHJpdmVyIGNvbW1hbmQgaW9jYiBvYmplY3QuCisgKiBAcnNwaW9jYjogUG9pbnRlciB0byBkcml2ZXIgcmVzcG9uc2UgaW9jYiBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgYWJvcnQgaW9jYnMgZm9yCisgKiBFTFMgY29tbWFuZHMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIEVMUyByaW5nIGV2ZW50CisgKiBoYW5kbGVyIHdpdGggbm8gbG9jayBoZWxkLiBUaGlzIGZ1bmN0aW9uIGZyZWVzIG1lbW9yeSByZXNvdXJjZXMKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWJvcnQgaW9jYi4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NsaV9hYm9ydF9lbHNfY21wbChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAogCQkJc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC0zNjY1LDYgKzQ1OTgsMTcgQEAKIAlyZXR1cm47CiB9CiAKKy8qKgorICogbHBmY19pZ25vcmVfZWxzX2NtcGw6IENvbXBsZXRpb24gaGFuZGxlciBmb3IgYWJvcnRlZCBFTFMgY29tbWFuZC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBjbWRpb2NiOiBQb2ludGVyIHRvIGRyaXZlciBjb21tYW5kIGlvY2Igb2JqZWN0LgorICogQHJzcGlvY2I6IFBvaW50ZXIgdG8gZHJpdmVyIHJlc3BvbnNlIGlvY2Igb2JqZWN0LgorICoKKyAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBTTEkgcmluZyBldmVudCBoYW5kbGVyIHdpdGggbm8KKyAqIGxvY2sgaGVsZC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGZvciBFTFMgY29tbWFuZHMKKyAqIHdoaWNoIGFyZSBhYm9ydGVkLiBUaGUgZnVuY3Rpb24gZnJlZXMgbWVtb3J5IHJlc291cmNlcyB1c2VkIGZvcgorICogdGhlIGFib3J0ZWQgRUxTIGNvbW1hbmRzLgorICoqLwogc3RhdGljIHZvaWQKIGxwZmNfaWdub3JlX2Vsc19jbXBsKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCiAJCSAgICAgc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCkBAIC0zNjczLDcgKzQ2MTcsNyBAQAogCiAJLyogRUxTIGNtZCB0YWcgPHVscElvVGFnPiBjb21wbGV0ZXMgKi8KIAlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfRUxTLAotCQkJIjAxMzMgSWdub3JpbmcgRUxTIGNtZCB0YWcgeCV4IGNvbXBsZXRpb24gRGF0YTogIgorCQkJIjAxMzkgSWdub3JpbmcgRUxTIGNtZCB0YWcgeCV4IGNvbXBsZXRpb24gRGF0YTogIgogCQkJIngleCB4JXggeCV4XG4iLAogCQkJaXJzcC0+dWxwSW9UYWcsIGlyc3AtPnVscFN0YXR1cywKIAkJCWlyc3AtPnVuLnVscFdvcmRbNF0sIGlyc3AtPnVscFRpbWVvdXQpOwpAQCAtMzY4NCw2ICs0NjI4LDE3IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2lzc3VlX2Fib3J0X2lvdGFnOiBBYm9ydCBmdW5jdGlvbiBmb3IgYSBjb21tYW5kIGlvY2IuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuCisgKiBAcHJpbmc6IFBvaW50ZXIgdG8gZHJpdmVyIFNMSSByaW5nIG9iamVjdC4KKyAqIEBjbWRpb2NiOiBQb2ludGVyIHRvIGRyaXZlciBjb21tYW5kIGlvY2Igb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXNzdWVzIGFuIGFib3J0IGlvY2IgZm9yIHRoZSBwcm92aWRlZCBjb21tYW5kCisgKiBpb2NiLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGhiYWxvY2sgaGVsZC4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiBpdCBmYWlscyBkdWUgdG8gbWVtb3J5IGFsbG9jYXRpb24KKyAqIGZhaWx1cmUgb3Igd2hlbiB0aGUgY29tbWFuZCBpb2NiIGlzIGFuIGFib3J0IHJlcXVlc3QuCisgKiovCiBpbnQKIGxwZmNfc2xpX2lzc3VlX2Fib3J0X2lvdGFnKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfc2xpX3JpbmcgKnByaW5nLAogCQkJICAgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IpCkBAIC0zNzQ4LDYgKzQ3MDMsOCBAQAogCQkJIGlhYnQtPnVuLmFjeHJpLmFib3J0SW9UYWcsIGFidHNpb2NicC0+aW90YWcpOwogCXJldHZhbCA9IF9fbHBmY19zbGlfaXNzdWVfaW9jYihwaGJhLCBwcmluZywgYWJ0c2lvY2JwLCAwKTsKIAorCWlmIChyZXR2YWwpCisJCV9fbHBmY19zbGlfcmVsZWFzZV9pb2NicShwaGJhLCBhYnRzaW9jYnApOwogYWJvcnRfaW90YWdfZXhpdDoKIAkvKgogCSAqIENhbGxlciB0byB0aGlzIHJvdXRpbmUgc2hvdWxkIGNoZWNrIGZvciBJT0NCX0VSUk9SCkBAIC0zNzU3LDYgKzQ3MTQsMjkgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKioKKyAqIGxwZmNfc2xpX3ZhbGlkYXRlX2ZjcF9pb2NiOiBGaWx0ZXJpbmcgZnVuY3Rpb24sIHVzZWQgdG8gZmluZCBjb21tYW5kcworICogICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhIHZwb3J0L1NDU0kgdGFyZ2V0L2x1bi4KKyAqIEBpb2NicTogUG9pbnRlciB0byBkcml2ZXIgaW9jYiBvYmplY3QuCisgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gZHJpdmVyIHZpcnR1YWwgcG9ydCBvYmplY3QuCisgKiBAdGd0X2lkOiBTQ1NJIElEIG9mIHRoZSB0YXJnZXQuCisgKiBAbHVuX2lkOiBMVU4gSUQgb2YgdGhlIHNjc2kgZGV2aWNlLgorICogQGN0eF9jbWQ6IExQRkNfQ1RYX0xVTi9MUEZDX0NUWF9UR1QvTFBGQ19DVFhfSE9TVAorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWN0cyBhcyBpb2NiIGZpbHRlciBmb3IgZnVuY3Rpb25zIHdoaWNoIGFib3J0IG9yIGNvdW50CisgKiBhbGwgRkNQIGlvY2JzIHBlbmRpbmcgb24gYSBsdW4vU0NTSSB0YXJnZXQvU0NTSSBob3N0LiBJdCB3aWxsIHJldHVybgorICogMCBpZiB0aGUgZmlsdGVyaW5nIGNyaXRlcmlhIGlzIG1ldCBmb3IgdGhlIGdpdmVuIGlvY2IgYW5kIHdpbGwgcmV0dXJuCisgKiAxIGlmIHRoZSBmaWx0ZXJpbmcgY3JpdGVyaWEgaXMgbm90IG1ldC4KKyAqIElmIGN0eF9jbWQgPT0gTFBGQ19DVFhfTFVOLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwIG9ubHkgaWYgdGhlCisgKiBnaXZlbiBpb2NiIGlzIGZvciB0aGUgU0NTSSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHZwb3J0LCB0Z3RfaWQgYW5kCisgKiBsdW5faWQgcGFyYW1ldGVyLgorICogSWYgY3R4X2NtZCA9PSBMUEZDX0NUWF9UR1QsICB0aGUgZnVuY3Rpb24gcmV0dXJucyAwIG9ubHkgaWYgdGhlCisgKiBnaXZlbiBpb2NiIGlzIGZvciB0aGUgU0NTSSB0YXJnZXQgc3BlY2lmaWVkIGJ5IHZwb3J0IGFuZCB0Z3RfaWQKKyAqIHBhcmFtZXRlcnMuCisgKiBJZiBjdHhfY21kID09IExQRkNfQ1RYX0hPU1QsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAgb25seSBpZiB0aGUKKyAqIGdpdmVuIGlvY2IgaXMgZm9yIHRoZSBTQ1NJIGhvc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB2cG9ydC4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gbG9ja3MgaGVsZC4KKyAqKi8KIHN0YXRpYyBpbnQKIGxwZmNfc2xpX3ZhbGlkYXRlX2ZjcF9pb2NiKHN0cnVjdCBscGZjX2lvY2JxICppb2NicSwgc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LAogCQkJICAgdWludDE2X3QgdGd0X2lkLCB1aW50NjRfdCBsdW5faWQsCkBAIC0zODAwLDYgKzQ3ODAsMjUgQEAKIAlyZXR1cm4gcmM7CiB9CiAKKy8qKgorICogbHBmY19zbGlfc3VtX2lvY2I6IEZ1bmN0aW9uIHRvIGNvdW50IHRoZSBudW1iZXIgb2YgRkNQIGlvY2JzIHBlbmRpbmcuCisgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gdmlydHVhbCBwb3J0LgorICogQHRndF9pZDogU0NTSSBJRCBvZiB0aGUgdGFyZ2V0LgorICogQGx1bl9pZDogTFVOIElEIG9mIHRoZSBzY3NpIGRldmljZS4KKyAqIEBjdHhfY21kOiBMUEZDX0NUWF9MVU4vTFBGQ19DVFhfVEdUL0xQRkNfQ1RYX0hPU1QuCisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG51bWJlciBvZiBGQ1AgY29tbWFuZHMgcGVuZGluZyBmb3IgdGhlIHZwb3J0LgorICogV2hlbiBjdHhfY21kID09IExQRkNfQ1RYX0xVTiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVtYmVyIG9mIEZDUAorICogY29tbWFuZHMgcGVuZGluZyBvbiB0aGUgdnBvcnQgYXNzb2NpYXRlZCB3aXRoIFNDU0kgZGV2aWNlIHNwZWNpZmllZAorICogYnkgdGd0X2lkIGFuZCBsdW5faWQgcGFyYW1ldGVycy4KKyAqIFdoZW4gY3R4X2NtZCA9PSBMUEZDX0NUWF9UR1QsIHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bWJlciBvZiBGQ1AKKyAqIGNvbW1hbmRzIHBlbmRpbmcgb24gdGhlIHZwb3J0IGFzc29jaWF0ZWQgd2l0aCBTQ1NJIHRhcmdldCBzcGVjaWZpZWQKKyAqIGJ5IHRndF9pZCBwYXJhbWV0ZXIuCisgKiBXaGVuIGN0eF9jbWQgPT0gTFBGQ19DVFhfSE9TVCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVtYmVyIG9mIEZDUAorICogY29tbWFuZHMgcGVuZGluZyBvbiB0aGUgdnBvcnQuCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBpb2NicyB3aGljaCBzYXRpc2Z5IHRoZSBmaWx0ZXIuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRob3V0IGFueSBsb2NrIGhlbGQuCisgKiovCiBpbnQKIGxwZmNfc2xpX3N1bV9pb2NiKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWludDE2X3QgdGd0X2lkLCB1aW50NjRfdCBsdW5faWQsCiAJCSAgbHBmY19jdHhfY21kIGN0eF9jbWQpCkBAIC0zODE5LDYgKzQ4MTgsMTcgQEAKIAlyZXR1cm4gc3VtOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2Fib3J0X2ZjcF9jbXBsOiBDb21wbGV0aW9uIGhhbmRsZXIgZnVuY3Rpb24gZm9yIGFuIGFib3J0ZWQKKyAqICAgICAgIEZDUCBpb2NiLgorICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQgb2JqZWN0CisgKiBAY21kaW9jYjogUG9pbnRlciB0byBjb21tYW5kIGlvY2Igb2JqZWN0LgorICogQHJzcGlvY2I6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYiBvYmplY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBhYm9ydGVkIEZDUCBpb2NiIGNvbXBsZXRlcy4gVGhpcworICogZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSByaW5nIGV2ZW50IGhhbmRsZXIgd2l0aCBubyBsb2NrIGhlbGQuCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIHRoZSBpb2NiLgorICoqLwogdm9pZAogbHBmY19zbGlfYWJvcnRfZmNwX2NtcGwoc3RydWN0IGxwZmNfaGJhICpwaGJhLCBzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYiwKIAkJCXN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQpAQCAtMzgyNyw2ICs0ODM3LDI4IEBACiAJcmV0dXJuOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2Fib3J0X2lvY2I6IFRoaXMgZnVuY3Rpb24gaXNzdWUgYWJvcnQgZm9yIGFsbCBTQ1NJIGNvbW1hbmRzCisgKiAgICAgICAgICBwZW5kaW5nIG9uIGEgU0NTSSBob3N0KHZwb3J0KS90YXJnZXQvbHVuLgorICogQHZwb3J0OiBQb2ludGVyIHRvIHZpcnR1YWwgcG9ydC4KKyAqIEBwcmluZzogUG9pbnRlciB0byBkcml2ZXIgU0xJIHJpbmcgb2JqZWN0LgorICogQHRndF9pZDogU0NTSSBJRCBvZiB0aGUgdGFyZ2V0LgorICogQGx1bl9pZDogTFVOIElEIG9mIHRoZSBzY3NpIGRldmljZS4KKyAqIEBhYm9ydF9jbWQ6IExQRkNfQ1RYX0xVTi9MUEZDX0NUWF9UR1QvTFBGQ19DVFhfSE9TVC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGFuIGFib3J0IGNvbW1hbmQgZm9yIGV2ZXJ5IFNDU0kgY29tbWFuZAorICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB2aXJ0dWFsIHBvcnQgcGVuZGluZyBvbiB0aGUgcmluZworICogZmlsdGVyZWQgYnkgbHBmY19zbGlfdmFsaWRhdGVfZmNwX2lvY2IgZnVuY3Rpb24uCisgKiBXaGVuIGFib3J0X2NtZCA9PSBMUEZDX0NUWF9MVU4sIHRoZSBmdW5jdGlvbiBzZW5kcyBhYm9ydCBvbmx5IHRvIHRoZQorICogRkNQIGlvY2JzIGFzc29jaWF0ZWQgd2l0aCBsdW4gc3BlY2lmaWVkIGJ5IHRndF9pZCBhbmQgbHVuX2lkCisgKiBwYXJhbWV0ZXJzCisgKiBXaGVuIGFib3J0X2NtZCA9PSBMUEZDX0NUWF9UR1QsIHRoZSBmdW5jdGlvbiBzZW5kcyBhYm9ydCBvbmx5IHRvIHRoZQorICogRkNQIGlvY2JzIGFzc29jaWF0ZWQgd2l0aCBTQ1NJIHRhcmdldCBzcGVjaWZpZWQgYnkgdGd0X2lkIHBhcmFtZXRlci4KKyAqIFdoZW4gYWJvcnRfY21kID09IExQRkNfQ1RYX0hPU1QsIHRoZSBmdW5jdGlvbiBzZW5kcyBhYm9ydCB0byBhbGwKKyAqIEZDUCBpb2NicyBhc3NvY2lhdGVkIHdpdGggdmlydHVhbCBwb3J0LgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG51bWJlciBvZiBpb2NicyBpdCBmYWlsZWQgdG8gYWJvcnQuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2tzIGhlbGQuCisgKiovCiBpbnQKIGxwZmNfc2xpX2Fib3J0X2lvY2Ioc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsCiAJCSAgICB1aW50MTZfdCB0Z3RfaWQsIHVpbnQ2NF90IGx1bl9pZCwgbHBmY19jdHhfY21kIGFib3J0X2NtZCkKQEAgLTM4NzgsNiArNDkxMCwyNCBAQAogCXJldHVybiBlcnJjbnQ7CiB9CiAKKy8qKgorICogbHBmY19zbGlfd2FrZV9pb2NiX3dhaXQ6IGlvY2IgY29tcGxldGlvbiBoYW5kbGVyIGZvciBpb2NiIGlzc3VlZCB1c2luZworICogICAgICAgICAgICAgICAgICAgICAgICAgIGxwZmNfc2xpX2lzc3VlX2lvY2Jfd2FpdC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBjbWRpb2NicTogUG9pbnRlciB0byBjb21tYW5kIGlvY2IuCisgKiBAcnNwaW9jYnE6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgZm9yIGlvY2JzIGlzc3VlZCB1c2luZworICogbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0IGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUKKyAqIHJpbmcgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB3aXRob3V0IGFueSBsb2NrIGhlbGQuIFRoaXMgZnVuY3Rpb24KKyAqIGNhbiBiZSBjYWxsZWQgZnJvbSBib3RoIHdvcmtlciB0aHJlYWQgY29udGV4dCBhbmQgaW50ZXJydXB0CisgKiBjb250ZXh0LiBUaGlzIGZ1bmN0aW9uIGFsc28gY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIHRocmVhZCB3aGljaAorICogY2xlYW5zIHVwIHRoZSBTTEkgbGF5ZXIgb2JqZWN0cy4KKyAqIFRoaXMgZnVuY3Rpb24gY29weSB0aGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNlIGlvY2IgdG8gdGhlCisgKiByZXNwb25zZSBpb2NiIG1lbW9yeSBvYmplY3QgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciBvZgorICogbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0IGFuZCB0aGVuIHdha2VzIHVwIHRoZSB0aHJlYWQgd2hpY2gKKyAqIHNsZWVwcyBmb3IgdGhlIGlvY2IgY29tcGxldGlvbi4KKyAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NsaV93YWtlX2lvY2Jfd2FpdChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsCiAJCQlzdHJ1Y3QgbHBmY19pb2NicSAqY21kaW9jYnEsCkBAIC0zODk5LDEzICs0OTQ5LDM2IEBACiAJcmV0dXJuOwogfQogCi0vKgotICogSXNzdWUgdGhlIGNhbGxlcidzIGlvY2IgYW5kIHdhaXQgZm9yIGl0cyBjb21wbGV0aW9uLCBidXQgbm8gbG9uZ2VyIHRoYW4gdGhlCi0gKiBjYWxsZXIncyB0aW1lb3V0LiAgTm90ZSB0aGF0IGlvY2JfZmxhZ3MgaXMgY2xlYXJlZCBiZWZvcmUgdGhlCi0gKiBscGZjX3NsaV9pc3N1ZV9jYWxsIHNpbmNlIHRoZSB3YWtlIHJvdXRpbmUgc2V0cyBhIHVuaXF1ZSB2YWx1ZSBhbmQgYnkKLSAqIGRlZmluaXRpb24gdGhpcyBpcyBhIHdhaXQgZnVuY3Rpb24uCi0gKi8KLQorLyoqCisgKiBscGZjX3NsaV9pc3N1ZV9pb2NiX3dhaXQ6IFN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGlzc3VlIGlvY2IgY29tbWFuZHMuCisgKiBAcGhiYTogUG9pbnRlciB0byBIQkEgY29udGV4dCBvYmplY3QuLgorICogQHByaW5nOiBQb2ludGVyIHRvIHNsaSByaW5nLgorICogQHBpb2NiOiBQb2ludGVyIHRvIGNvbW1hbmQgaW9jYi4KKyAqIEBwcnNwaW9jYnE6IFBvaW50ZXIgdG8gcmVzcG9uc2UgaW9jYi4KKyAqIEB0aW1lb3V0OiBUaW1lb3V0IGluIG51bWJlciBvZiBzZWNvbmRzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXNzdWVzIHRoZSBpb2NiIHRvIGZpcm13YXJlIGFuZCB3YWl0cyBmb3IgdGhlCisgKiBpb2NiIHRvIGNvbXBsZXRlLiBJZiB0aGUgaW9jYiBjb21tYW5kIGlzIG5vdAorICogY29tcGxldGVkIHdpdGhpbiB0aW1lb3V0IHNlY29uZHMsIGl0IHJldHVybnMgSU9DQl9USU1FRE9VVC4KKyAqIENhbGxlciBzaG91bGQgbm90IGZyZWUgdGhlIGlvY2IgcmVzb3VyY2VzIGlmIHRoaXMgZnVuY3Rpb24KKyAqIHJldHVybnMgSU9DQl9USU1FRE9VVC4KKyAqIFRoZSBmdW5jdGlvbiB3YWl0cyBmb3IgdGhlIGlvY2IgY29tcGxldGlvbiB1c2luZyBhbgorICogbm9uLWludGVycnVwdGlibGUgd2FpdC4KKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBzbGVlcCB3aGlsZSB3YWl0aW5nIGZvciBpb2NiIGNvbXBsZXRpb24uCisgKiBTbywgdGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIGFueSBjb250ZXh0IHdoaWNoCisgKiBkb2VzIG5vdCBhbGxvdyBzbGVlcGluZy4gRHVlIHRvIHRoZSBzYW1lIHJlYXNvbiwgdGhpcyBmdW5jdGlvbgorICogY2Fubm90IGJlIGNhbGxlZCB3aXRoIGludGVycnVwdCBkaXNhYmxlZC4KKyAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBpb2NiIGNvbXBsZXRpb25zIG9jY3VyIHdoaWxlCisgKiB0aGlzIGZ1bmN0aW9uIHNsZWVwLiBTbywgdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUgY2FsbGVkIGZyb20KKyAqIHRoZSB0aHJlYWQgd2hpY2ggcHJvY2VzcyBpb2NiIGNvbXBsZXRpb24gZm9yIHRoaXMgcmluZy4KKyAqIFRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSBpb2NiX2ZsYWcgb2YgdGhlIGlvY2Igb2JqZWN0IGJlZm9yZQorICogaXNzdWluZyB0aGUgaW9jYiBhbmQgdGhlIGlvY2IgY29tcGxldGlvbiBoYW5kbGVyIHNldHMgdGhpcworICogZmxhZyBhbmQgd2FrZXMgdGhpcyB0aHJlYWQgd2hlbiB0aGUgaW9jYiBjb21wbGV0ZXMuCisgKiBUaGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNlIGlvY2Igd2lsbCBiZSBjb3BpZWQgdG8gcHJzcGlvY2JxCisgKiBieSB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHdoZW4gdGhlIGNvbW1hbmQgY29tcGxldGVzLgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIElPQ0JfU1VDQ0VTUyB3aGVuIHN1Y2Nlc3MuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2sgaGVsZC4KKyAqKi8KIGludAogbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSwKIAkJCSBzdHJ1Y3QgbHBmY19zbGlfcmluZyAqcHJpbmcsCkBAIC0zOTYzLDcgKzUwMzYsNyBAQAogCQl9CiAJfSBlbHNlIHsKIAkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fSU5GTywgTE9HX1NMSSwKLQkJCQkiOjAzMzIgSU9DQiB3YWl0IGlzc3VlIGZhaWxlZCwgRGF0YSB4JXhcbiIsCisJCQkJIjAzMzIgSU9DQiB3YWl0IGlzc3VlIGZhaWxlZCwgRGF0YSB4JXhcbiIsCiAJCQkJcmV0dmFsKTsKIAkJcmV0dmFsID0gSU9DQl9FUlJPUjsKIAl9CkBAIC0zOTgzLDYgKzUwNTYsMzIgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2lzc3VlX21ib3hfd2FpdDogU3luY2hyb25vdXMgZnVuY3Rpb24gdG8gaXNzdWUgbWFpbGJveC4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0IG9iamVjdC4KKyAqIEBwbWJveHE6IFBvaW50ZXIgdG8gZHJpdmVyIG1haWxib3ggb2JqZWN0LgorICogQHRpbWVvdXQ6IFRpbWVvdXQgaW4gbnVtYmVyIG9mIHNlY29uZHMuCisgKgorICogVGhpcyBmdW5jdGlvbiBpc3N1ZXMgdGhlIG1haWxib3ggdG8gZmlybXdhcmUgYW5kIHdhaXRzIGZvciB0aGUKKyAqIG1haWxib3ggY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBub3QKKyAqIGNvbXBsZXRlZCB3aXRoaW4gdGltZW91dCBzZWNvbmRzLCBpdCByZXR1cm5zIE1CWF9USU1FT1VULgorICogVGhlIGZ1bmN0aW9uIHdhaXRzIGZvciB0aGUgbWFpbGJveCBjb21wbGV0aW9uIHVzaW5nIGFuCisgKiBpbnRlcnJ1cHRpYmxlIHdhaXQuIElmIHRoZSB0aHJlYWQgaXMgd29rZW4gdXAgZHVlIHRvIGEKKyAqIHNpZ25hbCwgTUJYX1RJTUVPVVQgZXJyb3IgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gQ2FsbGVyCisgKiBzaG91bGQgbm90IGZyZWUgdGhlIG1haWxib3ggcmVzb3VyY2VzLCBpZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMKKyAqIE1CWF9USU1FT1VULgorICogVGhpcyBmdW5jdGlvbiB3aWxsIHNsZWVwIHdoaWxlIHdhaXRpbmcgZm9yIG1haWxib3ggY29tcGxldGlvbi4KKyAqIFNvLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gYW55IGNvbnRleHQgd2hpY2gKKyAqIGRvZXMgbm90IGFsbG93IHNsZWVwaW5nLiBEdWUgdG8gdGhlIHNhbWUgcmVhc29uLCB0aGlzIGZ1bmN0aW9uCisgKiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0IGRpc2FibGVkLgorICogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlIG1haWxib3ggY29tcGxldGlvbiBvY2N1cnMgd2hpbGUKKyAqIHRoaXMgZnVuY3Rpb24gc2xlZXAuIFNvLCB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSBjYWxsZWQgZnJvbQorICogdGhlIHdvcmtlciB0aHJlYWQgd2hpY2ggcHJvY2Vzc2VzIG1haWxib3ggY29tcGxldGlvbi4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIEhCQSBtYW5hZ2VtZW50CisgKiBhcHBsaWNhdGlvbnMuCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgTUJYX1NVQ0NFU1Mgd2hlbiBzdWNjZXNzZnVsLgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBsb2NrIGhlbGQuCisgKiovCiBpbnQKIGxwZmNfc2xpX2lzc3VlX21ib3hfd2FpdChzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIExQRkNfTUJPWFFfdCAqcG1ib3hxLAogCQkJIHVpbnQzMl90IHRpbWVvdXQpCkBAIC00MDI3LDYgKzUxMjYsMTggQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKioKKyAqIGxwZmNfc2xpX2ZsdXNoX21ib3hfcXVldWU6IG1haWxib3ggcXVldWUgY2xlYW51cCBmdW5jdGlvbi4KKyAqIEBwaGJhOiBQb2ludGVyIHRvIEhCQSBjb250ZXh0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGNsZWFudXAgYW55IHBlbmRpbmcgbWFpbGJveAorICogb2JqZWN0cyBpbiB0aGUgZHJpdmVyIHF1ZXVlIGJlZm9yZSBicmluZ2luZyB0aGUgSEJBIG9mZmxpbmUuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGlsZSByZXNldHRpbmcgdGhlIEhCQS4KKyAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aG91dCBhbnkgbG9jayBoZWxkLiBUaGUgZnVuY3Rpb24KKyAqIHRha2VzIGhiYWxvY2sgdG8gdXBkYXRlIFNMSSBkYXRhIHN0cnVjdHVyZS4KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgYW4gYWN0aXZlIG1haWxib3gKKyAqIGNvbW1hbmQgcGVuZGluZyBlbHNlIHJldHVybnMgMC4KKyAqKi8KIGludAogbHBmY19zbGlfZmx1c2hfbWJveF9xdWV1ZShzdHJ1Y3QgbHBmY19oYmEgKiBwaGJhKQogewpAQCAtNDA1OCw4ICs1MTY5LDc0IEBACiAJcmV0dXJuIChwaGJhLT5zbGkuc2xpX2ZsYWcgJiBMUEZDX1NMSV9NQk9YX0FDVElWRSkgPyAxIDogMDsKIH0KIAorLyoqCisgKiBscGZjX3NsaV9jaGVja19lcmF0dDogY2hlY2sgZXJyb3IgYXR0ZW50aW9uIGV2ZW50cworICogQHBoYmE6IFBvaW50ZXIgdG8gSEJBIGNvbnRleHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9ybSB0aW1lciBzb2Z0IGludGVycnVwdCBjb250ZXh0IHRvIGNoZWNrIEhCQSdzCisgKiBlcnJvciBhdHRlbnRpb24gcmVnaXN0ZXIgYml0IGZvciBlcnJvciBhdHRlbnRpb24gZXZlbnRzLgorICoKKyAqIFRoaXMgZnVjbnRpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgorICogUmVnaXN0ZXIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCisgKiovCitpbnQKK2xwZmNfc2xpX2NoZWNrX2VyYXR0KHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKK3sKKwl1aW50MzJfdCBoYV9jb3B5OworCisJLyogSWYgc29tZWJvZHkgaXMgd2FpdGluZyB0byBoYW5kbGUgYW4gZXJhdHQsIGRvbid0IHByb2Nlc3MgaXQKKwkgKiBoZXJlLiBUaGUgYnJka2lsbCBmdW5jdGlvbiB3aWxsIGRvIHRoaXMuCisJICovCisJaWYgKHBoYmEtPmxpbmtfZmxhZyAmIExTX0lHTk9SRV9FUkFUVCkKKwkJcmV0dXJuIDA7CisKKwkvKiBDaGVjayBpZiBpbnRlcnJ1cHQgaGFuZGxlciBoYW5kbGVzIHRoaXMgRVJBVFQgKi8KKwlzcGluX2xvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKKwlpZiAocGhiYS0+aGJhX2ZsYWcgJiBIQkFfRVJBVFRfSEFORExFRCkgeworCQkvKiBJbnRlcnJ1cHQgaGFuZGxlciBoYXMgaGFuZGxlZCBFUkFUVCAqLworCQlzcGluX3VubG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBSZWFkIGNoaXAgSG9zdCBBdHRlbnRpb24gKEhBKSByZWdpc3RlciAqLworCWhhX2NvcHkgPSByZWFkbChwaGJhLT5IQXJlZ2FkZHIpOworCWlmIChoYV9jb3B5ICYgSEFfRVJBVFQpIHsKKwkJLyogUmVhZCBob3N0IHN0YXR1cyByZWdpc3RlciB0byByZXRyaWV2ZSBlcnJvciBldmVudCAqLworCQlscGZjX3NsaV9yZWFkX2hzKHBoYmEpOworCQkvKiBTZXQgdGhlIGRyaXZlciBIQSB3b3JrIGJpdG1hcCAqLworCQlwaGJhLT53b3JrX2hhIHw9IEhBX0VSQVRUOworCQkvKiBJbmRpY2F0ZSBwb2xsaW5nIGhhbmRsZXMgdGhpcyBFUkFUVCAqLworCQlwaGJhLT5oYmFfZmxhZyB8PSBIQkFfRVJBVFRfSEFORExFRDsKKwkJc3Bpbl91bmxvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKKwkJcmV0dXJuIDE7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogbHBmY19zcF9pbnRyX2hhbmRsZXI6IFRoZSBzbG93LXBhdGggaW50ZXJydXB0IGhhbmRsZXIgb2YgbHBmYyBkcml2ZXIuCisgKiBAaXJxOiBJbnRlcnJ1cHQgbnVtYmVyLgorICogQGRldl9pZDogVGhlIGRldmljZSBjb250ZXh0IHBvaW50ZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSB0aGUgUENJIGxheWVyIGFzIGFuIGludGVycnVwdAorICogc2VydmljZSByb3V0aW5lIHdoZW4gdGhlIGRldmljZSBpcyBlbmFibGVkIHdpdGggTVNJLVggbXVsdGktbWVzc2FnZQorICogaW50ZXJydXB0IG1vZGUgYW5kIHRoZXJlIGFyZSBzbG93LXBhdGggZXZlbnRzIGluIHRoZSBIQkEuIEhvd2V2ZXIsCisgKiB3aGVuIHRoZSBkZXZpY2UgaXMgZW5hYmxlZCB3aXRoIGVpdGhlciBNU0kgb3IgUGluLUlSUSBpbnRlcnJ1cHQgbW9kZSwKKyAqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGRldmljZS1sZXZlbCBpbnRlcnJ1cHQgaGFuZGxlci4KKyAqIFdoZW4gdGhlIFBDSSBzbG90IGlzIGluIGVycm9yIHJlY292ZXJ5IG9yIHRoZSBIQkEgaXMgdW5kZXJnb2luZworICogaW5pdGlhbGl6YXRpb24sIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3aWxsIG5vdCBwcm9jZXNzIHRoZSBpbnRlcnJ1cHQuCisgKiBUaGUgbGluayBhdHRlbnRpb24gYW5kIEVMUyByaW5nIGF0dGVudGlvbiBldmVudHMgYXJlIGhhbmRsZWQgYnkgdGhlCisgKiB3b3JrZXIgdGhyZWFkLiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgc2lnbmFscyB0aGUgd29ya2VyIHRocmVhZCBhbmQKKyAqIGFuZCByZXR1cm5zIGZvciB0aGVzZSBldmVudHMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhvdXQgYW55CisgKiBsb2NrIGhlbGQuIEl0IGdldHMgdGhlIGhiYWxvY2sgdG8gYWNjZXNzIGFuZCB1cGRhdGUgU0xJIGRhdGEKKyAqIHN0cnVjdHVyZXMuCisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIElSUV9IQU5ETEVEIHdoZW4gaW50ZXJydXB0IGlzIGhhbmRsZWQgZWxzZSBpdAorICogcmV0dXJucyBJUlFfTk9ORS4KKyAqKi8KIGlycXJldHVybl90Ci1scGZjX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCitscGZjX3NwX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IGxwZmNfaGJhICAqcGhiYTsKIAl1aW50MzJfdCBoYV9jb3B5OwpAQCAtNDA3OCw0OCArNTI1NSw1MiBAQAogCSAqIEdldCB0aGUgZHJpdmVyJ3MgcGhiYSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZGV2X2lkIGFuZAogCSAqIGFzc3VtZSB0aGUgSEJBIGlzIG5vdCBpbnRlcnJ1cHRpbmcuCiAJICovCi0JcGhiYSA9IChzdHJ1Y3QgbHBmY19oYmEgKikgZGV2X2lkOworCXBoYmEgPSAoc3RydWN0IGxwZmNfaGJhICopZGV2X2lkOwogCiAJaWYgKHVubGlrZWx5KCFwaGJhKSkKIAkJcmV0dXJuIElSUV9OT05FOwogCi0JLyogSWYgdGhlIHBjaSBjaGFubmVsIGlzIG9mZmxpbmUsIGlnbm9yZSBhbGwgdGhlIGludGVycnVwdHMuICovCi0JaWYgKHVubGlrZWx5KHBjaV9jaGFubmVsX29mZmxpbmUocGhiYS0+cGNpZGV2KSkpCi0JCXJldHVybiBJUlFfTk9ORTsKLQotCXBoYmEtPnNsaS5zbGlzdGF0LnNsaV9pbnRyKys7Ci0KIAkvKgotCSAqIENhbGwgdGhlIEhCQSB0byBzZWUgaWYgaXQgaXMgaW50ZXJydXB0aW5nLiAgSWYgbm90LCBkb24ndCBjbGFpbQotCSAqIHRoZSBpbnRlcnJ1cHQKKwkgKiBTdHVmZiBuZWVkcyB0byBiZSBhdHRlbnRlZCB0byB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhcyBhbgorCSAqIGluZGl2aWR1YWwgaW50ZXJydXB0IGhhbmRsZXIgaW4gTVNJLVggbXVsdGktbWVzc2FnZSBpbnRlcnJ1cHQgbW9kZQogCSAqLwotCi0JLyogSWdub3JlIGFsbCBpbnRlcnJ1cHRzIGR1cmluZyBpbml0aWFsaXphdGlvbi4gKi8KLQlpZiAodW5saWtlbHkocGhiYS0+bGlua19zdGF0ZSA8IExQRkNfTElOS19ET1dOKSkKLQkJcmV0dXJuIElSUV9OT05FOwotCi0JLyoKLQkgKiBSZWFkIGhvc3QgYXR0ZW50aW9uIHJlZ2lzdGVyIHRvIGRldGVybWluZSBpbnRlcnJ1cHQgc291cmNlCi0JICogQ2xlYXIgQXR0ZW50aW9uIFNvdXJjZXMsIGV4Y2VwdCBFcnJvciBBdHRlbnRpb24gKHRvCi0JICogcHJlc2VydmUgc3RhdHVzKSBhbmQgTGluayBBdHRlbnRpb24KLQkgKi8KLQlzcGluX2xvY2soJnBoYmEtPmhiYWxvY2spOwotCWhhX2NvcHkgPSByZWFkbChwaGJhLT5IQXJlZ2FkZHIpOwotCS8qIElmIHNvbWVib2R5IGlzIHdhaXRpbmcgdG8gaGFuZGxlIGFuIGVyYXR0IGRvbid0IHByb2Nlc3MgaXQKLQkgKiBoZXJlLiAgVGhlIGJyZGtpbGwgZnVuY3Rpb24gd2lsbCBkbyB0aGlzLgotCSAqLwotCWlmIChwaGJhLT5saW5rX2ZsYWcgJiBMU19JR05PUkVfRVJBVFQpCi0JCWhhX2NvcHkgJj0gfkhBX0VSQVRUOwotCXdyaXRlbCgoaGFfY29weSAmIH4oSEFfTEFUVCB8IEhBX0VSQVRUKSksIHBoYmEtPkhBcmVnYWRkcik7Ci0JcmVhZGwocGhiYS0+SEFyZWdhZGRyKTsgLyogZmx1c2ggKi8KLQlzcGluX3VubG9jaygmcGhiYS0+aGJhbG9jayk7Ci0KLQlpZiAodW5saWtlbHkoIWhhX2NvcHkpKQotCQlyZXR1cm4gSVJRX05PTkU7CisJaWYgKHBoYmEtPmludHJfdHlwZSA9PSBNU0lYKSB7CisJCS8qIElmIHRoZSBwY2kgY2hhbm5lbCBpcyBvZmZsaW5lLCBpZ25vcmUgYWxsIHRoZSBpbnRlcnJ1cHRzICovCisJCWlmICh1bmxpa2VseShwY2lfY2hhbm5lbF9vZmZsaW5lKHBoYmEtPnBjaWRldikpKQorCQkJcmV0dXJuIElSUV9OT05FOworCQkvKiBVcGRhdGUgZGV2aWNlLWxldmVsIGludGVycnVwdCBzdGF0aXN0aWNzICovCisJCXBoYmEtPnNsaS5zbGlzdGF0LnNsaV9pbnRyKys7CisJCS8qIElnbm9yZSBhbGwgaW50ZXJydXB0cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICovCisJCWlmICh1bmxpa2VseShwaGJhLT5saW5rX3N0YXRlIDwgTFBGQ19MSU5LX0RPV04pKQorCQkJcmV0dXJuIElSUV9OT05FOworCQkvKiBOZWVkIHRvIHJlYWQgSEEgUkVHIGZvciBzbG93LXBhdGggZXZlbnRzICovCisJCXNwaW5fbG9jaygmcGhiYS0+aGJhbG9jayk7CisJCWhhX2NvcHkgPSByZWFkbChwaGJhLT5IQXJlZ2FkZHIpOworCQkvKiBJZiBzb21lYm9keSBpcyB3YWl0aW5nIHRvIGhhbmRsZSBhbiBlcmF0dCBkb24ndCBwcm9jZXNzIGl0CisJCSAqIGhlcmUuIFRoZSBicmRraWxsIGZ1bmN0aW9uIHdpbGwgZG8gdGhpcy4KKwkJICovCisJCWlmIChwaGJhLT5saW5rX2ZsYWcgJiBMU19JR05PUkVfRVJBVFQpCisJCQloYV9jb3B5ICY9IH5IQV9FUkFUVDsKKwkJLyogQ2hlY2sgdGhlIG5lZWQgZm9yIGhhbmRsaW5nIEVSQVRUIGluIGludGVycnVwdCBoYW5kbGVyICovCisJCWlmIChoYV9jb3B5ICYgSEFfRVJBVFQpIHsKKwkJCWlmIChwaGJhLT5oYmFfZmxhZyAmIEhCQV9FUkFUVF9IQU5ETEVEKQorCQkJCS8qIEVSQVRUIHBvbGxpbmcgaGFzIGhhbmRsZWQgRVJBVFQgKi8KKwkJCQloYV9jb3B5ICY9IH5IQV9FUkFUVDsKKwkJCWVsc2UKKwkJCQkvKiBJbmRpY2F0ZSBpbnRlcnJ1cHQgaGFuZGxlciBoYW5kbGVzIEVSQVRUICovCisJCQkJcGhiYS0+aGJhX2ZsYWcgfD0gSEJBX0VSQVRUX0hBTkRMRUQ7CisJCX0KKwkJLyogQ2xlYXIgdXAgb25seSBhdHRlbnRpb24gc291cmNlIHJlbGF0ZWQgdG8gc2xvdy1wYXRoICovCisJCXdyaXRlbCgoaGFfY29weSAmIChIQV9NQkFUVCB8IEhBX1IyX0NMUl9NU0spKSwKKwkJCXBoYmEtPkhBcmVnYWRkcik7CisJCXJlYWRsKHBoYmEtPkhBcmVnYWRkcik7IC8qIGZsdXNoICovCisJCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKwl9IGVsc2UKKwkJaGFfY29weSA9IHBoYmEtPmhhX2NvcHk7CiAKIAl3b3JrX2hhX2NvcHkgPSBoYV9jb3B5ICYgcGhiYS0+d29ya19oYV9tYXNrOwogCi0JaWYgKHVubGlrZWx5KHdvcmtfaGFfY29weSkpIHsKKwlpZiAod29ya19oYV9jb3B5KSB7CiAJCWlmICh3b3JrX2hhX2NvcHkgJiBIQV9MQVRUKSB7CiAJCQlpZiAocGhiYS0+c2xpLnNsaV9mbGFnICYgTFBGQ19QUk9DRVNTX0xBKSB7CiAJCQkJLyoKQEAgLTQxMzgsNyArNTMxOSw3IEBACiAJCQkJd29ya19oYV9jb3B5ICY9IH5IQV9MQVRUOwogCQl9CiAKLQkJaWYgKHdvcmtfaGFfY29weSAmIH4oSEFfRVJBVFR8SEFfTUJBVFR8SEFfTEFUVCkpIHsKKwkJaWYgKHdvcmtfaGFfY29weSAmIH4oSEFfRVJBVFQgfCBIQV9NQkFUVCB8IEhBX0xBVFQpKSB7CiAJCQkvKgogCQkJICogVHVybiBvZmYgU2xvdyBSaW5ncyBpbnRlcnJ1cHRzLCBMUEZDX0VMU19SSU5HIGlzCiAJCQkgKiB0aGUgb25seSBzbG93IHJpbmcuCkBAIC00MTc5LDMxICs1MzYwLDEzIEBACiAJCQkJc3Bpbl91bmxvY2soJnBoYmEtPmhiYWxvY2spOwogCQkJfQogCQl9Ci0KLQkJaWYgKHdvcmtfaGFfY29weSAmIEhBX0VSQVRUKSB7Ci0JCQkvKgotCQkJICogVGhlcmUgd2FzIGEgbGluay9ib2FyZCBlcnJvci4gIFJlYWQgdGhlCi0JCQkgKiBzdGF0dXMgcmVnaXN0ZXIgdG8gcmV0cmlldmUgdGhlIGVycm9yIGV2ZW50Ci0JCQkgKiBhbmQgcHJvY2VzcyBpdC4KLQkJCSAqLwotCQkJcGhiYS0+c2xpLnNsaXN0YXQuZXJyX2F0dG5fZXZlbnQrKzsKLQkJCS8qIFNhdmUgc3RhdHVzIGluZm8gKi8KLQkJCXBoYmEtPndvcmtfaHMgPSByZWFkbChwaGJhLT5IU3JlZ2FkZHIpOwotCQkJcGhiYS0+d29ya19zdGF0dXNbMF0gPSByZWFkbChwaGJhLT5NQnNsaW1hZGRyICsgMHhhOCk7Ci0JCQlwaGJhLT53b3JrX3N0YXR1c1sxXSA9IHJlYWRsKHBoYmEtPk1Cc2xpbWFkZHIgKyAweGFjKTsKLQotCQkJLyogQ2xlYXIgQ2hpcCBlcnJvciBiaXQgKi8KLQkJCXdyaXRlbChIQV9FUkFUVCwgcGhiYS0+SEFyZWdhZGRyKTsKLQkJCXJlYWRsKHBoYmEtPkhBcmVnYWRkcik7IC8qIGZsdXNoICovCi0JCQlwaGJhLT5wcG9ydC0+c3RvcHBlZCA9IDE7Ci0JCX0KLQogCQlzcGluX2xvY2soJnBoYmEtPmhiYWxvY2spOwotCQlpZiAoKHdvcmtfaGFfY29weSAmIEhBX01CQVRUKSAmJgotCQkgICAgKHBoYmEtPnNsaS5tYm94X2FjdGl2ZSkpIHsKKwkJaWYgKHdvcmtfaGFfY29weSAmIEhBX0VSQVRUKQorCQkJbHBmY19zbGlfcmVhZF9ocyhwaGJhKTsKKwkJaWYgKCh3b3JrX2hhX2NvcHkgJiBIQV9NQkFUVCkgJiYgKHBoYmEtPnNsaS5tYm94X2FjdGl2ZSkpIHsKIAkJCXBtYiA9IHBoYmEtPnNsaS5tYm94X2FjdGl2ZTsKIAkJCXBtYm94ID0gJnBtYi0+bWI7Ci0JCQltYm94ID0gJnBoYmEtPnNsaW0ycC0+bWJ4OworCQkJbWJveCA9IHBoYmEtPm1ib3g7CiAJCQl2cG9ydCA9IHBtYi0+dnBvcnQ7CiAKIAkJCS8qIEZpcnN0IGNoZWNrIG91dCB0aGUgc3RhdHVzIHdvcmQgKi8KQEAgLTQyNzAsNyArNTQzMyw3IEBACiAJCQkJCQkJbHBmY19wcmludGZfbG9nKHBoYmEsCiAJCQkJCQkJS0VSTl9FUlIsCiAJCQkJCQkJTE9HX01CT1ggfCBMT0dfU0xJLAotCQkJCQkJCSIwMzA2IHJjIHNob3VsZCBoYXZlIgorCQkJCQkJCSIwMzUwIHJjIHNob3VsZCBoYXZlIgogCQkJCQkJCSJiZWVuIE1CWF9CVVNZIik7CiAJCQkJCQlnb3RvIHNlbmRfY3VycmVudF9tYm94OwogCQkJCQl9CkBAIC00MjgzLDYgKzU0NDYsNyBAQAogCQkJfQogCQl9IGVsc2UKIAkJCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKwogCQlpZiAoKHdvcmtfaGFfY29weSAmIEhBX01CQVRUKSAmJgogCQkgICAgKHBoYmEtPnNsaS5tYm94X2FjdGl2ZSA9PSBOVUxMKSkgewogc2VuZF9jdXJyZW50X21ib3g6CkBAIC00MzAyLDE1ICs1NDY2LDc0IEBACiAJCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKIAkJbHBmY193b3JrZXJfd2FrZV91cChwaGJhKTsKIAl9CisJcmV0dXJuIElSUV9IQU5ETEVEOwogCi0JaGFfY29weSAmPSB+KHBoYmEtPndvcmtfaGFfbWFzayk7Cit9IC8qIGxwZmNfc3BfaW50cl9oYW5kbGVyICovCisKKy8qKgorICogbHBmY19mcF9pbnRyX2hhbmRsZXI6IFRoZSBmYXN0LXBhdGggaW50ZXJydXB0IGhhbmRsZXIgb2YgbHBmYyBkcml2ZXIuCisgKiBAaXJxOiBJbnRlcnJ1cHQgbnVtYmVyLgorICogQGRldl9pZDogVGhlIGRldmljZSBjb250ZXh0IHBvaW50ZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSB0aGUgUENJIGxheWVyIGFzIGFuIGludGVycnVwdAorICogc2VydmljZSByb3V0aW5lIHdoZW4gdGhlIGRldmljZSBpcyBlbmFibGVkIHdpdGggTVNJLVggbXVsdGktbWVzc2FnZQorICogaW50ZXJydXB0IG1vZGUgYW5kIHRoZXJlIGlzIGEgZmFzdC1wYXRoIEZDUCBJT0NCIHJpbmcgZXZlbnQgaW4gdGhlCisgKiBIQkEuIEhvd2V2ZXIsIHdoZW4gdGhlIGRldmljZSBpcyBlbmFibGVkIHdpdGggZWl0aGVyIE1TSSBvciBQaW4tSVJRCisgKiBpbnRlcnJ1cHQgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgZGV2aWNlLWxldmVsCisgKiBpbnRlcnJ1cHQgaGFuZGxlci4gV2hlbiB0aGUgUENJIHNsb3QgaXMgaW4gZXJyb3IgcmVjb3Zlcnkgb3IgdGhlIEhCQQorICogaXMgdW5kZXJnb2luZyBpbml0aWFsaXphdGlvbiwgdGhlIGludGVycnVwdCBoYW5kbGVyIHdpbGwgbm90IHByb2Nlc3MKKyAqIHRoZSBpbnRlcnJ1cHQuIFRoZSBTQ1NJIEZDUCBmYXN0LXBhdGggcmluZyBldmVudCBhcmUgaGFuZGxlZCBpbiB0aGUKKyAqIGludHJydXB0IGNvbnRleHQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhvdXQgYW55IGxvY2sgaGVsZC4gSXQKKyAqIGdldHMgdGhlIGhiYWxvY2sgdG8gYWNjZXNzIGFuZCB1cGRhdGUgU0xJIGRhdGEgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgSVJRX0hBTkRMRUQgd2hlbiBpbnRlcnJ1cHQgaXMgaGFuZGxlZCBlbHNlIGl0CisgKiByZXR1cm5zIElSUV9OT05FLgorICoqLworaXJxcmV0dXJuX3QKK2xwZmNfZnBfaW50cl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgbHBmY19oYmEgICpwaGJhOworCXVpbnQzMl90IGhhX2NvcHk7CisJdW5zaWduZWQgbG9uZyBzdGF0dXM7CisKKwkvKiBHZXQgdGhlIGRyaXZlcidzIHBoYmEgc3RydWN0dXJlIGZyb20gdGhlIGRldl9pZCBhbmQKKwkgKiBhc3N1bWUgdGhlIEhCQSBpcyBub3QgaW50ZXJydXB0aW5nLgorCSAqLworCXBoYmEgPSAoc3RydWN0IGxwZmNfaGJhICopIGRldl9pZDsKKworCWlmICh1bmxpa2VseSghcGhiYSkpCisJCXJldHVybiBJUlFfTk9ORTsKIAogCS8qCi0JICogUHJvY2VzcyBhbGwgZXZlbnRzIG9uIEZDUCByaW5nLiAgVGFrZSB0aGUgb3B0aW1pemVkIHBhdGggZm9yCi0JICogRkNQIElPLiAgQW55IG90aGVyIElPIGlzIHNsb3cgcGF0aCBhbmQgaXMgaGFuZGxlZCBieQotCSAqIHRoZSB3b3JrZXIgdGhyZWFkLgorCSAqIFN0dWZmIG5lZWRzIHRvIGJlIGF0dGVudGVkIHRvIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGFzIGFuCisJICogaW5kaXZpZHVhbCBpbnRlcnJ1cHQgaGFuZGxlciBpbiBNU0ktWCBtdWx0aS1tZXNzYWdlIGludGVycnVwdCBtb2RlCiAJICovCi0Jc3RhdHVzID0gKGhhX2NvcHkgJiAoSEFfUlhNQVNLICA8PCAoNCpMUEZDX0ZDUF9SSU5HKSkpOworCWlmIChwaGJhLT5pbnRyX3R5cGUgPT0gTVNJWCkgeworCQkvKiBJZiBwY2kgY2hhbm5lbCBpcyBvZmZsaW5lLCBpZ25vcmUgYWxsIHRoZSBpbnRlcnJ1cHRzICovCisJCWlmICh1bmxpa2VseShwY2lfY2hhbm5lbF9vZmZsaW5lKHBoYmEtPnBjaWRldikpKQorCQkJcmV0dXJuIElSUV9OT05FOworCQkvKiBVcGRhdGUgZGV2aWNlLWxldmVsIGludGVycnVwdCBzdGF0aXN0aWNzICovCisJCXBoYmEtPnNsaS5zbGlzdGF0LnNsaV9pbnRyKys7CisJCS8qIElnbm9yZSBhbGwgaW50ZXJydXB0cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICovCisJCWlmICh1bmxpa2VseShwaGJhLT5saW5rX3N0YXRlIDwgTFBGQ19MSU5LX0RPV04pKQorCQkJcmV0dXJuIElSUV9OT05FOworCQkvKiBOZWVkIHRvIHJlYWQgSEEgUkVHIGZvciBGQ1AgcmluZyBhbmQgb3RoZXIgcmluZyBldmVudHMgKi8KKwkJaGFfY29weSA9IHJlYWRsKHBoYmEtPkhBcmVnYWRkcik7CisJCS8qIENsZWFyIHVwIG9ubHkgYXR0ZW50aW9uIHNvdXJjZSByZWxhdGVkIHRvIGZhc3QtcGF0aCAqLworCQlzcGluX2xvY2soJnBoYmEtPmhiYWxvY2spOworCQl3cml0ZWwoKGhhX2NvcHkgJiAoSEFfUjBfQ0xSX01TSyB8IEhBX1IxX0NMUl9NU0spKSwKKwkJCXBoYmEtPkhBcmVnYWRkcik7CisJCXJlYWRsKHBoYmEtPkhBcmVnYWRkcik7IC8qIGZsdXNoICovCisJCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKwl9IGVsc2UKKwkJaGFfY29weSA9IHBoYmEtPmhhX2NvcHk7CisKKwkvKgorCSAqIFByb2Nlc3MgYWxsIGV2ZW50cyBvbiBGQ1AgcmluZy4gVGFrZSB0aGUgb3B0aW1pemVkIHBhdGggZm9yIEZDUCBJTy4KKwkgKi8KKwloYV9jb3B5ICY9IH4ocGhiYS0+d29ya19oYV9tYXNrKTsKKworCXN0YXR1cyA9IChoYV9jb3B5ICYgKEhBX1JYTUFTSyA8PCAoNCpMUEZDX0ZDUF9SSU5HKSkpOwogCXN0YXR1cyA+Pj0gKDQqTFBGQ19GQ1BfUklORyk7CiAJaWYgKHN0YXR1cyAmIEhBX1JYTUFTSykKIAkJbHBmY19zbGlfaGFuZGxlX2Zhc3RfcmluZ19ldmVudChwaGJhLApAQCAtNDMxOSwxMSArNTU0MiwxMCBAQAogCiAJaWYgKHBoYmEtPmNmZ19tdWx0aV9yaW5nX3N1cHBvcnQgPT0gMikgewogCQkvKgotCQkgKiBQcm9jZXNzIGFsbCBldmVudHMgb24gZXh0cmEgcmluZy4gIFRha2UgdGhlIG9wdGltaXplZCBwYXRoCi0JCSAqIGZvciBleHRyYSByaW5nIElPLiAgQW55IG90aGVyIElPIGlzIHNsb3cgcGF0aCBhbmQgaXMgaGFuZGxlZAotCQkgKiBieSB0aGUgd29ya2VyIHRocmVhZC4KKwkJICogUHJvY2VzcyBhbGwgZXZlbnRzIG9uIGV4dHJhIHJpbmcuIFRha2UgdGhlIG9wdGltaXplZCBwYXRoCisJCSAqIGZvciBleHRyYSByaW5nIElPLgogCQkgKi8KLQkJc3RhdHVzID0gKGhhX2NvcHkgJiAoSEFfUlhNQVNLICA8PCAoNCpMUEZDX0VYVFJBX1JJTkcpKSk7CisJCXN0YXR1cyA9IChoYV9jb3B5ICYgKEhBX1JYTUFTSyA8PCAoNCpMUEZDX0VYVFJBX1JJTkcpKSk7CiAJCXN0YXR1cyA+Pj0gKDQqTFBGQ19FWFRSQV9SSU5HKTsKIAkJaWYgKHN0YXR1cyAmIEhBX1JYTUFTSykgewogCQkJbHBmY19zbGlfaGFuZGxlX2Zhc3RfcmluZ19ldmVudChwaGJhLApAQCAtNDMzMiw1ICs1NTU0LDEwNiBAQAogCQl9CiAJfQogCXJldHVybiBJUlFfSEFORExFRDsKK30gIC8qIGxwZmNfZnBfaW50cl9oYW5kbGVyICovCiAKLX0gLyogbHBmY19pbnRyX2hhbmRsZXIgKi8KKy8qKgorICogbHBmY19pbnRyX2hhbmRsZXI6IFRoZSBkZXZpY2UtbGV2ZWwgaW50ZXJydXB0IGhhbmRsZXIgb2YgbHBmYyBkcml2ZXIuCisgKiBAaXJxOiBJbnRlcnJ1cHQgbnVtYmVyLgorICogQGRldl9pZDogVGhlIGRldmljZSBjb250ZXh0IHBvaW50ZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgZGV2aWNlLWxldmVsIGludGVycnVwdCBoYW5kbGVyIGNhbGxlZCBmcm9tIHRoZSBQQ0kKKyAqIGxheWVyIHdoZW4gZWl0aGVyIE1TSSBvciBQaW4tSVJRIGludGVycnVwdCBtb2RlIGlzIGVuYWJsZWQgYW5kIHRoZXJlIGlzCisgKiBhbiBldmVudCBpbiB0aGUgSEJBIHdoaWNoIHJlcXVpcmVzIGRyaXZlciBhdHRlbnRpb24uIFRoaXMgZnVuY3Rpb24KKyAqIGludm9rZXMgdGhlIHNsb3ctcGF0aCBpbnRlcnJ1cHQgYXR0ZW50aW9uIGhhbmRsaW5nIGZ1bmN0aW9uIGFuZCBmYXN0LXBhdGgKKyAqIGludGVycnVwdCBhdHRlbnRpb24gaGFuZGxpbmcgZnVuY3Rpb24gaW4gdHVybiB0byBwcm9jZXNzIHRoZSByZWxldmFudAorICogSEJBIGF0dGVudGlvbiBldmVudHMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhvdXQgYW55IGxvY2sgaGVsZC4gSXQKKyAqIGdldHMgdGhlIGhiYWxvY2sgdG8gYWNjZXNzIGFuZCB1cGRhdGUgU0xJIGRhdGEgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgSVJRX0hBTkRMRUQgd2hlbiBpbnRlcnJ1cHQgaXMgaGFuZGxlZCwgZWxzZSBpdAorICogcmV0dXJucyBJUlFfTk9ORS4KKyAqKi8KK2lycXJldHVybl90CitscGZjX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IGxwZmNfaGJhICAqcGhiYTsKKwlpcnFyZXR1cm5fdCBzcF9pcnFfcmMsIGZwX2lycV9yYzsKKwl1bnNpZ25lZCBsb25nIHN0YXR1czEsIHN0YXR1czI7CisKKwkvKgorCSAqIEdldCB0aGUgZHJpdmVyJ3MgcGhiYSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZGV2X2lkIGFuZAorCSAqIGFzc3VtZSB0aGUgSEJBIGlzIG5vdCBpbnRlcnJ1cHRpbmcuCisJICovCisJcGhiYSA9IChzdHJ1Y3QgbHBmY19oYmEgKikgZGV2X2lkOworCisJaWYgKHVubGlrZWx5KCFwaGJhKSkKKwkJcmV0dXJuIElSUV9OT05FOworCisJLyogSWYgdGhlIHBjaSBjaGFubmVsIGlzIG9mZmxpbmUsIGlnbm9yZSBhbGwgdGhlIGludGVycnVwdHMuICovCisJaWYgKHVubGlrZWx5KHBjaV9jaGFubmVsX29mZmxpbmUocGhiYS0+cGNpZGV2KSkpCisJCXJldHVybiBJUlFfTk9ORTsKKworCS8qIFVwZGF0ZSBkZXZpY2UgbGV2ZWwgaW50ZXJydXB0IHN0YXRpc3RpY3MgKi8KKwlwaGJhLT5zbGkuc2xpc3RhdC5zbGlfaW50cisrOworCisJLyogSWdub3JlIGFsbCBpbnRlcnJ1cHRzIGR1cmluZyBpbml0aWFsaXphdGlvbi4gKi8KKwlpZiAodW5saWtlbHkocGhiYS0+bGlua19zdGF0ZSA8IExQRkNfTElOS19ET1dOKSkKKwkJcmV0dXJuIElSUV9OT05FOworCisJc3Bpbl9sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKwlwaGJhLT5oYV9jb3B5ID0gcmVhZGwocGhiYS0+SEFyZWdhZGRyKTsKKwlpZiAodW5saWtlbHkoIXBoYmEtPmhhX2NvcHkpKSB7CisJCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKwkJcmV0dXJuIElSUV9OT05FOworCX0gZWxzZSBpZiAocGhiYS0+aGFfY29weSAmIEhBX0VSQVRUKSB7CisJCWlmIChwaGJhLT5oYmFfZmxhZyAmIEhCQV9FUkFUVF9IQU5ETEVEKQorCQkJLyogRVJBVFQgcG9sbGluZyBoYXMgaGFuZGxlZCBFUkFUVCAqLworCQkJcGhiYS0+aGFfY29weSAmPSB+SEFfRVJBVFQ7CisJCWVsc2UKKwkJCS8qIEluZGljYXRlIGludGVycnVwdCBoYW5kbGVyIGhhbmRsZXMgRVJBVFQgKi8KKwkJCXBoYmEtPmhiYV9mbGFnIHw9IEhCQV9FUkFUVF9IQU5ETEVEOworCX0KKworCS8qIENsZWFyIGF0dGVudGlvbiBzb3VyY2VzIGV4Y2VwdCBsaW5rIGFuZCBlcnJvciBhdHRlbnRpb25zICovCisJd3JpdGVsKChwaGJhLT5oYV9jb3B5ICYgfihIQV9MQVRUIHwgSEFfRVJBVFQpKSwgcGhiYS0+SEFyZWdhZGRyKTsKKwlyZWFkbChwaGJhLT5IQXJlZ2FkZHIpOyAvKiBmbHVzaCAqLworCXNwaW5fdW5sb2NrKCZwaGJhLT5oYmFsb2NrKTsKKworCS8qCisJICogSW52b2tlcyBzbG93LXBhdGggaG9zdCBhdHRlbnRpb24gaW50ZXJydXB0IGhhbmRsaW5nIGFzIGFwcHJvcHJpYXRlLgorCSAqLworCisJLyogc3RhdHVzIG9mIGV2ZW50cyB3aXRoIG1haWxib3ggYW5kIGxpbmsgYXR0ZW50aW9uICovCisJc3RhdHVzMSA9IHBoYmEtPmhhX2NvcHkgJiAoSEFfTUJBVFQgfCBIQV9MQVRUIHwgSEFfRVJBVFQpOworCisJLyogc3RhdHVzIG9mIGV2ZW50cyB3aXRoIEVMUyByaW5nICovCisJc3RhdHVzMiA9IChwaGJhLT5oYV9jb3B5ICYgKEhBX1JYTUFTSyAgPDwgKDQqTFBGQ19FTFNfUklORykpKTsKKwlzdGF0dXMyID4+PSAoNCpMUEZDX0VMU19SSU5HKTsKKworCWlmIChzdGF0dXMxIHx8IChzdGF0dXMyICYgSEFfUlhNQVNLKSkKKwkJc3BfaXJxX3JjID0gbHBmY19zcF9pbnRyX2hhbmRsZXIoaXJxLCBkZXZfaWQpOworCWVsc2UKKwkJc3BfaXJxX3JjID0gSVJRX05PTkU7CisKKwkvKgorCSAqIEludm9rZSBmYXN0LXBhdGggaG9zdCBhdHRlbnRpb24gaW50ZXJydXB0IGhhbmRsaW5nIGFzIGFwcHJvcHJpYXRlLgorCSAqLworCisJLyogc3RhdHVzIG9mIGV2ZW50cyB3aXRoIEZDUCByaW5nICovCisJc3RhdHVzMSA9IChwaGJhLT5oYV9jb3B5ICYgKEhBX1JYTUFTSyA8PCAoNCpMUEZDX0ZDUF9SSU5HKSkpOworCXN0YXR1czEgPj49ICg0KkxQRkNfRkNQX1JJTkcpOworCisJLyogc3RhdHVzIG9mIGV2ZW50cyB3aXRoIGV4dHJhIHJpbmcgKi8KKwlpZiAocGhiYS0+Y2ZnX211bHRpX3Jpbmdfc3VwcG9ydCA9PSAyKSB7CisJCXN0YXR1czIgPSAocGhiYS0+aGFfY29weSAmIChIQV9SWE1BU0sgPDwgKDQqTFBGQ19FWFRSQV9SSU5HKSkpOworCQlzdGF0dXMyID4+PSAoNCpMUEZDX0VYVFJBX1JJTkcpOworCX0gZWxzZQorCQlzdGF0dXMyID0gMDsKKworCWlmICgoc3RhdHVzMSAmIEhBX1JYTUFTSykgfHwgKHN0YXR1czIgJiBIQV9SWE1BU0spKQorCQlmcF9pcnFfcmMgPSBscGZjX2ZwX2ludHJfaGFuZGxlcihpcnEsIGRldl9pZCk7CisJZWxzZQorCQlmcF9pcnFfcmMgPSBJUlFfTk9ORTsKKworCS8qIFJldHVybiBkZXZpY2UtbGV2ZWwgaW50ZXJydXB0IGhhbmRsaW5nIHN0YXR1cyAqLworCXJldHVybiAoc3BfaXJxX3JjID09IElSUV9IQU5ETEVEKSA/IHNwX2lycV9yYyA6IGZwX2lycV9yYzsKK30gIC8qIGxwZmNfaW50cl9oYW5kbGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuaAppbmRleCA3MjQ5ZmQyLi44ODM5Mzg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmgKQEAgLTIzMyw2ICsyMzMsNyBAQAogI2RlZmluZSBMUEZDX1NMSTJfQUNUSVZFICAgICAgICAgIDB4MjAwCS8qIFNMSTIgb3ZlcmxheSBpbiBmaXJtd2FyZSBpcyBhY3RpdmUgKi8KICNkZWZpbmUgTFBGQ19QUk9DRVNTX0xBICAgICAgICAgICAweDQwMAkvKiBBYmxlIHRvIHByb2Nlc3MgbGluayBhdHRlbnRpb24gKi8KICNkZWZpbmUgTFBGQ19CTE9DS19NR01UX0lPICAgICAgICAweDgwMAkvKiBEb24ndCBhbGxvdyBtZ210IG1ieCBvciBpb2NiIGNtZHMgKi8KKyNkZWZpbmUgTFBGQ19NRU5MT19NQUlOVCAgICAgICAgICAweDEwMDAgLyogbmVlZCBmb3IgbWVubCBmdyBkb3dubG9hZCAqLwogCiAJc3RydWN0IGxwZmNfc2xpX3JpbmcgcmluZ1tMUEZDX01BWF9SSU5HXTsKIAlpbnQgZmNwX3Jpbmc7CQkvKiByaW5nIHVzZWQgZm9yIEZDUCBpbml0aWF0b3IgY29tbWFuZHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfdmVyc2lvbi5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192ZXJzaW9uLmgKaW5kZXggYWQyNGNhYy4uY2M0M2U5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192ZXJzaW9uLmgKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192ZXJzaW9uLmgKQEAgLTE4LDkgKzE4LDExIEBACiAgKiBpbmNsdWRlZCB3aXRoIHRoaXMgcGFja2FnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSNkZWZpbmUgTFBGQ19EUklWRVJfVkVSU0lPTiAiOC4yLjciCisjZGVmaW5lIExQRkNfRFJJVkVSX1ZFUlNJT04gIjguMi44IgogCi0jZGVmaW5lIExQRkNfRFJJVkVSX05BTUUgImxwZmMiCisjZGVmaW5lIExQRkNfRFJJVkVSX05BTUUJCSJscGZjIgorI2RlZmluZSBMUEZDX1NQX0RSSVZFUl9IQU5ETEVSX05BTUUJImxwZmM6c3AiCisjZGVmaW5lIExQRkNfRlBfRFJJVkVSX0hBTkRMRVJfTkFNRQkibHBmYzpmcCIKIAogI2RlZmluZSBMUEZDX01PRFVMRV9ERVNDICJFbXVsZXggTGlnaHRQdWxzZSBGaWJyZSBDaGFubmVsIFNDU0kgZHJpdmVyICIgXAogCQlMUEZDX0RSSVZFUl9WRVJTSU9OCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Zwb3J0LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Zwb3J0LmMKaW5kZXggMTA5Zjg5ZC4uYTdkZTFjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192cG9ydC5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfdnBvcnQuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHNjc2kvc2NzaV90cmFuc3BvcnRfZmMuaD4KICNpbmNsdWRlICJscGZjX2h3LmgiCiAjaW5jbHVkZSAibHBmY19zbGkuaCIKKyNpbmNsdWRlICJscGZjX25sLmgiCiAjaW5jbHVkZSAibHBmY19kaXNjLmgiCiAjaW5jbHVkZSAibHBmY19zY3NpLmgiCiAjaW5jbHVkZSAibHBmYy5oIgpAQCAtMjA0LDYgKzIwNSw3NyBAQAogCXJldHVybiAxOwogfQogCisvKioKKyAqIGxwZmNfZGlzY292ZXJ5X3dhaXQ6IFdhaXQgZm9yIGRyaXZlciBkaXNjb3ZlcnkgdG8gcXVpZXNjZS4KKyAqIEB2cG9ydDogVGhlIHZpcnR1YWwgcG9ydCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVkLgorICoKKyAqIFRoaXMgZHJpdmVyIGNhbGxzIHRoaXMgcm91dGluZSBzcGVjaWZpY2FsbHkgZnJvbSBscGZjX3Zwb3J0X2RlbGV0ZQorICogdG8gZW5mb3JjZSBhIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB2cG9ydAorICogZGVsZXRlIHJlbGF0aXZlIHRvIGRpc2NvdmVyeSBhY3Rpdml0aWVzLiAgVGhlCisgKiBscGZjX3Zwb3J0X2RlbGV0ZSByb3V0aW5lIHNob3VsZCBub3QgcmV0dXJuIHVudGlsIGl0CisgKiBjYW4gcmVhc29uYWJseSBndWFyYW50ZWUgdGhhdCBkaXNjb3ZlcnkgaGFzIHF1aWVzY2VkLgorICogUG9zdCBGRElTQyBMT0dPLCB0aGUgZHJpdmVyIG11c3Qgd2FpdCB1bnRpbCBpdHMgU0FOIHRlYXJkb3duIGlzCisgKiBjb21wbGV0ZSBhbmQgYWxsIHJlc291cmNlcyByZWNvdmVyZWQgYmVmb3JlIGFsbG93aW5nCisgKiBjbGVhbnVwLgorICoKKyAqIFRoaXMgcm91dGluZSBkb2VzIG5vdCByZXF1aXJlIGFueSBsb2NrcyBoZWxkLgorICoqLworc3RhdGljIHZvaWQgbHBmY19kaXNjb3Zlcnlfd2FpdChzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQpCit7CisJc3RydWN0IGxwZmNfaGJhICpwaGJhID0gdnBvcnQtPnBoYmE7CisJdWludDMyX3Qgd2FpdF9mbGFncyA9IDA7CisJdW5zaWduZWQgbG9uZyB3YWl0X3RpbWVfbWF4OworCXVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKKworCXdhaXRfZmxhZ3MgPSBGQ19SU0NOX01PREUgfCBGQ19SU0NOX0RJU0NPVkVSWSB8IEZDX05MUF9NT1JFIHwKKwkJICAgICBGQ19SU0NOX0RFRkVSUkVEIHwgRkNfTkRJU0NfQUNUSVZFIHwgRkNfRElTQ19UTU87CisKKwkvKgorCSAqIFRoZSB0aW1lIGNvbnN0cmFpbnQgb24gdGhpcyBsb29wIGlzIGEgYmFsYW5jZSBiZXR3ZWVuIHRoZQorCSAqIGZhYnJpYyBSQV9UT1YgdmFsdWUgYW5kIGRldl9sb3NzIHRtby4gIFRoZSBkcml2ZXIncworCSAqIGRldmxvc3NfdG1vIGlzIDEwIGdpdmluZyB0aGlzIGxvb3AgYSAzeCBtdWx0aXBsaWVyIG1pbmltYWxseS4KKwkgKi8KKwl3YWl0X3RpbWVfbWF4ID0gbXNlY3NfdG9famlmZmllcygoKHBoYmEtPmZjX3JhdG92ICogMykgKyAzKSAqIDEwMDApOworCXdhaXRfdGltZV9tYXggKz0gamlmZmllczsKKwlzdGFydF90aW1lID0gamlmZmllczsKKwl3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgd2FpdF90aW1lX21heCkpIHsKKwkJaWYgKCh2cG9ydC0+bnVtX2Rpc2Nfbm9kZXMgPiAwKSAgICB8fAorCQkgICAgKHZwb3J0LT5mY19mbGFnICYgd2FpdF9mbGFncykgIHx8CisJCSAgICAoKHZwb3J0LT5wb3J0X3N0YXRlID4gTFBGQ19WUE9SVF9GQUlMRUQpICYmCisJCSAgICAgKHZwb3J0LT5wb3J0X3N0YXRlIDwgTFBGQ19WUE9SVF9SRUFEWSkpKSB7CisJCQlscGZjX3ByaW50Zl9sb2cocGhiYSwgS0VSTl9JTkZPLCBMT0dfVlBPUlQsCisJCQkJCSIxODMzIFZwb3J0IGRpc2NvdmVyeSBxdWllc2NlIFdhaXQ6IgorCQkJCQkiIHZwaSB4JXggc3RhdGUgeCV4IGZjX2ZsYWdzIHgleCIKKwkJCQkJIiBudW1fbm9kZXMgeCV4LCB3YWl0aW5nIDEwMDAgbXNlY3MiCisJCQkJCSIgdG90YWwgd2FpdCBtc2VjcyB4JXhcbiIsCisJCQkJCXZwb3J0LT52cGksIHZwb3J0LT5wb3J0X3N0YXRlLAorCQkJCQl2cG9ydC0+ZmNfZmxhZywgdnBvcnQtPm51bV9kaXNjX25vZGVzLAorCQkJCQlqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBzdGFydF90aW1lKSk7CisJCQltc2xlZXAoMTAwMCk7CisJCX0gZWxzZSB7CisJCQkvKiBCYXNlIGNhc2UuICBXYWl0IHZhcmlhbnRzIHNhdGlzZmllZC4gIEJyZWFrIG91dCAqLworCQkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fSU5GTywgTE9HX1ZQT1JULAorCQkJCQkgIjE4MzQgVnBvcnQgZGlzY292ZXJ5IHF1aWVzY2VkOiIKKwkJCQkJICIgdnBpIHgleCBzdGF0ZSB4JXggZmNfZmxhZ3MgeCV4IgorCQkJCQkgIiB3YWl0IG1zZWNzIHgleFxuIiwKKwkJCQkJIHZwb3J0LT52cGksIHZwb3J0LT5wb3J0X3N0YXRlLAorCQkJCQkgdnBvcnQtPmZjX2ZsYWcsCisJCQkJCSBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMKKwkJCQkJCS0gc3RhcnRfdGltZSkpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB3YWl0X3RpbWVfbWF4KSkKKwkJbHBmY19wcmludGZfbG9nKHBoYmEsIEtFUk5fRVJSLCBMT0dfVlBPUlQsCisJCQkJIjE4MzUgVnBvcnQgZGlzY292ZXJ5IHF1aWVzY2UgZmFpbGVkOiIKKwkJCQkiIHZwaSB4JXggc3RhdGUgeCV4IGZjX2ZsYWdzIHgleCIKKwkJCQkiIHdhaXQgbXNlY3MgeCV4XG4iLAorCQkJCXZwb3J0LT52cGksIHZwb3J0LT5wb3J0X3N0YXRlLAorCQkJCXZwb3J0LT5mY19mbGFnLAorCQkJCWppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIHN0YXJ0X3RpbWUpKTsKK30KKwogaW50CiBscGZjX3Zwb3J0X2NyZWF0ZShzdHJ1Y3QgZmNfdnBvcnQgKmZjX3Zwb3J0LCBib29sIGRpc2FibGUpCiB7CkBAIC01MDYsOCArNTc4LDEyIEBACiAJICogaW5pdGlhdGVkIGFmdGVyIHdlJ3ZlIGRpc3Bvc2VkIG9mIGFsbCBvdGhlciByZXNvdXJjZXMgYXNzb2NpYXRlZAogCSAqIHdpdGggdGhlIHBvcnQuCiAJICovCi0JaWYgKCFzY3NpX2hvc3RfZ2V0KHNob3N0KSB8fCAhc2NzaV9ob3N0X2dldChzaG9zdCkpCisJaWYgKCFzY3NpX2hvc3RfZ2V0KHNob3N0KSkKIAkJcmV0dXJuIFZQT1JUX0lOVkFMOworCWlmICghc2NzaV9ob3N0X2dldChzaG9zdCkpIHsKKwkJc2NzaV9ob3N0X3B1dChzaG9zdCk7CisJCXJldHVybiBWUE9SVF9JTlZBTDsKKwl9CiAJc3Bpbl9sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAJdnBvcnQtPmxvYWRfZmxhZyB8PSBGQ19VTkxPQURJTkc7CiAJc3Bpbl91bmxvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKQEAgLTU5NywxMSArNjczLDE2IEBACiAJCX0KIAkJdnBvcnQtPnVucmVnX3ZwaV9jbXBsID0gVlBPUlRfSU5WQUw7CiAJCXRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKHBoYmEtPmZjX3JhdG92ICogMjAwMCk7CisJCWlmIChuZGxwLT5ubHBfc3RhdGUgPT0gTkxQX1NURV9VTlVTRURfTk9ERSkKKwkJCWdvdG8gc2tpcF9sb2dvOwogCQlpZiAoIWxwZmNfaXNzdWVfZWxzX25waXZfbG9nbyh2cG9ydCwgbmRscCkpCiAJCQl3aGlsZSAodnBvcnQtPnVucmVnX3ZwaV9jbXBsID09IFZQT1JUX0lOVkFMICYmIHRpbWVvdXQpCiAJCQkJdGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7CiAJfQogCisJaWYgKCEocGhiYS0+cHBvcnQtPmxvYWRfZmxhZyAmIEZDX1VOTE9BRElORykpCisJCWxwZmNfZGlzY292ZXJ5X3dhaXQodnBvcnQpOworCiBza2lwX2xvZ286CiAJbHBmY19jbGVhbnVwKHZwb3J0KTsKIAlscGZjX3NsaV9ob3N0X2Rvd24odnBvcnQpOwpAQCAtNjE1LDggKzY5NiwxMCBAQAogCQkgKiBDb21wbGV0aW9uIG9mIHVucmVnX3ZwaSAobHBmY19tYnhfY21wbF91bnJlZ192cGkpCiAJCSAqIGRvZXMgdGhlIHNjc2lfaG9zdF9wdXQoKSB0byByZWxlYXNlIHRoZSB2cG9ydC4KIAkJICovCi0JCWxwZmNfbWJ4X3VucmVnX3ZwaSh2cG9ydCk7Ci0JfQorCQlpZiAobHBmY19tYnhfdW5yZWdfdnBpKHZwb3J0KSkKKwkJCXNjc2lfaG9zdF9wdXQoc2hvc3QpOworCX0gZWxzZQorCQlzY3NpX2hvc3RfcHV0KHNob3N0KTsKIAogCWxwZmNfZnJlZV92cGkocGhiYSwgdnBvcnQtPnZwaSk7CiAJdnBvcnQtPndvcmtfcG9ydF9ldmVudHMgPSAwOwpAQCAtNjYzLDMgKzc0Niw4MiBAQAogCQlzY3NpX2hvc3RfcHV0KGxwZmNfc2hvc3RfZnJvbV92cG9ydCh2cG9ydHNbaV0pKTsKIAlrZnJlZSh2cG9ydHMpOwogfQorCisKKy8qKgorICogbHBmY192cG9ydF9yZXNldF9zdGF0X2RhdGE6IFJlc2V0IHRoZSBzdGF0aXN0aWNhbCBkYXRhIGZvciB0aGUgdnBvcnQuCisgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gdnBvcnQgb2JqZWN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBzdGF0aXN0aWNhbCBkYXRhIGZvciB0aGUgdnBvcnQuIFRoaXMgZnVuY3Rpb24KKyAqIGlzIGNhbGxlZCB3aXRoIHRoZSBob3N0X2xvY2sgaGVsZAorICoqLwordm9pZAorbHBmY192cG9ydF9yZXNldF9zdGF0X2RhdGEoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQoreworCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwID0gTlVMTCwgKm5leHRfbmRscCA9IE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmRscCwgbmV4dF9uZGxwLCAmdnBvcnQtPmZjX25vZGVzLCBubHBfbGlzdHApIHsKKwkJaWYgKCFOTFBfQ0hLX05PREVfQUNUKG5kbHApKQorCQkJY29udGludWU7CisJCWlmIChuZGxwLT5sYXRfZGF0YSkKKwkJCW1lbXNldChuZGxwLT5sYXRfZGF0YSwgMCwgTFBGQ19NQVhfQlVDS0VUX0NPVU5UICoKKwkJCQlzaXplb2Yoc3RydWN0IGxwZmNfc2NzaWNtZF9ia3QpKTsKKwl9Cit9CisKKworLyoqCisgKiBscGZjX2FsbG9jX2J1Y2tldDogQWxsb2NhdGUgZGF0YSBidWZmZXIgcmVxdWlyZWQgZm9yIGNvbGxlY3RpbmcKKyAqICBzdGF0aXN0aWNhbCBkYXRhLgorICogQHZwb3J0OiBQb2ludGVyIHRvIHZwb3J0IG9iamVjdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBkYXRhIGJ1ZmZlciByZXF1aXJlZCBmb3IgYWxsIHRoZSBGQworICogbm9kZXMgb2YgdGhlIHZwb3J0IHRvIGNvbGxlY3Qgc3RhdGlzdGljYWwgZGF0YS4KKyAqKi8KK3ZvaWQKK2xwZmNfYWxsb2NfYnVja2V0KHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKK3sKKwlzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCA9IE5VTEwsICpuZXh0X25kbHAgPSBOVUxMOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5kbHAsIG5leHRfbmRscCwgJnZwb3J0LT5mY19ub2RlcywgbmxwX2xpc3RwKSB7CisJCWlmICghTkxQX0NIS19OT0RFX0FDVChuZGxwKSkKKwkJCWNvbnRpbnVlOworCisJCWtmcmVlKG5kbHAtPmxhdF9kYXRhKTsKKwkJbmRscC0+bGF0X2RhdGEgPSBOVUxMOworCisJCWlmIChuZGxwLT5ubHBfc3RhdGUgPT0gTkxQX1NURV9NQVBQRURfTk9ERSkgeworCQkJbmRscC0+bGF0X2RhdGEgPSBrY2FsbG9jKExQRkNfTUFYX0JVQ0tFVF9DT1VOVCwKKwkJCQkJIHNpemVvZihzdHJ1Y3QgbHBmY19zY3NpY21kX2JrdCksCisJCQkJCSBHRlBfQVRPTUlDKTsKKworCQkJaWYgKCFuZGxwLT5sYXRfZGF0YSkKKwkJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX05PREUsCisJCQkJCSIwMjg3IGxwZmNfYWxsb2NfYnVja2V0IGZhaWxlZCB0byAiCisJCQkJCSJhbGxvY2F0ZSBzdGF0aXN0aWNhbCBkYXRhIGJ1ZmZlciBESUQgIgorCQkJCQkiMHgleFxuIiwgbmRscC0+bmxwX0RJRCk7CisJCX0KKwl9Cit9CisKKy8qKgorICogbHBmY19mcmVlX2J1Y2tldDogRnJlZSBkYXRhIGJ1ZmZlciByZXF1aXJlZCBmb3IgY29sbGVjdGluZworICogIHN0YXRpc3RpY2FsIGRhdGEuCisgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gdnBvcnQgb2JqZWN0LgorICoKKyAqIFRoIGZ1bmN0aW9uIGZyZWVzIHN0YXRpc3RpY2FsIGRhdGEgYnVmZmVyIG9mIGFsbCB0aGUgRkMKKyAqIG5vZGVzIG9mIHRoZSB2cG9ydC4KKyAqKi8KK3ZvaWQKK2xwZmNfZnJlZV9idWNrZXQoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQoreworCXN0cnVjdCBscGZjX25vZGVsaXN0ICpuZGxwID0gTlVMTCwgKm5leHRfbmRscCA9IE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmRscCwgbmV4dF9uZGxwLCAmdnBvcnQtPmZjX25vZGVzLCBubHBfbGlzdHApIHsKKwkJaWYgKCFOTFBfQ0hLX05PREVfQUNUKG5kbHApKQorCQkJY29udGludWU7CisKKwkJa2ZyZWUobmRscC0+bGF0X2RhdGEpOworCQluZGxwLT5sYXRfZGF0YSA9IE5VTEw7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192cG9ydC5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY192cG9ydC5oCmluZGV4IDk2YzQ0NTMuLjkwODI4MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfdnBvcnQuaAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Zwb3J0LmgKQEAgLTExMiw0ICsxMTIsOCBAQAogdm9pZCBscGZjX3Zwb3J0X3NldF9zdGF0ZShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCiAJCQkgIGVudW0gZmNfdnBvcnRfc3RhdGUgbmV3X3N0YXRlKTsKIAordm9pZCBscGZjX3Zwb3J0X3Jlc2V0X3N0YXRfZGF0YShzdHJ1Y3QgbHBmY192cG9ydCAqKTsKK3ZvaWQgbHBmY19hbGxvY19idWNrZXQoc3RydWN0IGxwZmNfdnBvcnQgKik7Cit2b2lkIGxwZmNfZnJlZV9idWNrZXQoc3RydWN0IGxwZmNfdnBvcnQgKik7CisKICNlbmRpZiAvKiBIX0xQRkNfVlBPUlQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9hdHRyLmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfYXR0ci5jCmluZGV4IDBkZGZlNzEuLmVkNzMxOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9hdHRyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2F0dHIuYwpAQCAtMTAwNiw3ICsxMDA2LDYgQEAKIAl9CiAKIAlxbGEyeDAwX2Fib3J0X2ZjcG9ydF9jbWRzKGZjcG9ydCk7Ci0Jc2NzaV90YXJnZXRfdW5ibG9jaygmcnBvcnQtPmRldik7CiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYwppbmRleCBmYzRiZmE3Li5hNzZlZmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jCkBAIC0xMTg3LDcgKzExODcsMTIgQEAKIAkJICAgIGNwLT5zZXJpYWxfbnVtYmVyLCBjb21wX3N0YXR1cywKIAkJICAgIGF0b21pY19yZWFkKCZmY3BvcnQtPnN0YXRlKSkpOwogCi0JCWNwLT5yZXN1bHQgPSBESURfQlVTX0JVU1kgPDwgMTY7CisJCS8qCisJCSAqIFdlIGFyZSBnb2luZyB0byBoYXZlIHRoZSBmYyBjbGFzcyBibG9jayB0aGUgcnBvcnQKKwkJICogd2hpbGUgd2UgdHJ5IHRvIHJlY292ZXIgc28gaW5zdHJ1Y3QgdGhlIG1pZCBsYXllcgorCQkgKiB0byByZXF1ZXVlIHVudGlsIHRoZSBjbGFzcyBkZWNpZGVzIGhvdyB0byBoYW5kbGUgdGhpcy4KKwkJICovCisJCWNwLT5yZXN1bHQgPSBESURfVFJBTlNQT1JUX0RJU1JVUFRFRCA8PCAxNjsKIAkJaWYgKGF0b21pY19yZWFkKCZmY3BvcnQtPnN0YXRlKSA9PSBGQ1NfT05MSU5FKQogCQkJcWxhMngwMF9tYXJrX2RldmljZV9sb3N0KGZjcG9ydC0+aGEsIGZjcG9ydCwgMSwgMSk7CiAJCWJyZWFrOwpAQCAtMTIxNCw3ICsxMjE5LDEyIEBACiAJCWJyZWFrOwogCiAJY2FzZSBDU19USU1FT1VUOgotCQljcC0+cmVzdWx0ID0gRElEX0JVU19CVVNZIDw8IDE2OworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gaGF2ZSB0aGUgZmMgY2xhc3MgYmxvY2sgdGhlIHJwb3J0CisJCSAqIHdoaWxlIHdlIHRyeSB0byByZWNvdmVyIHNvIGluc3RydWN0IHRoZSBtaWQgbGF5ZXIKKwkJICogdG8gcmVxdWV1ZSB1bnRpbCB0aGUgY2xhc3MgZGVjaWRlcyBob3cgdG8gaGFuZGxlIHRoaXMuCisJCSAqLworCQljcC0+cmVzdWx0ID0gRElEX1RSQU5TUE9SVF9ESVNSVVBURUQgPDwgMTY7CiAKIAkJaWYgKElTX0ZXSTJfQ0FQQUJMRShoYSkpIHsKIAkJCURFQlVHMihwcmludGsoS0VSTl9JTkZPCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCmluZGV4IDM0MzM0NDEuLjJhZWQ0NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCkBAIC0zOTQsMTAgKzM5NCw4IEBACiAJfQogCiAJLyogQ2xvc2Ugd2luZG93IG9uIGZjcG9ydC9ycG9ydCBzdGF0ZS10cmFuc2l0aW9uaW5nLiAqLwotCWlmIChmY3BvcnQtPmRycG9ydCkgewotCQljbWQtPnJlc3VsdCA9IERJRF9JTU1fUkVUUlkgPDwgMTY7Ci0JCWdvdG8gcWNfZmFpbF9jb21tYW5kOwotCX0KKwlpZiAoZmNwb3J0LT5kcnBvcnQpCisJCWdvdG8gcWNfdGFyZ2V0X2J1c3k7CiAKIAlpZiAoYXRvbWljX3JlYWQoJmZjcG9ydC0+c3RhdGUpICE9IEZDU19PTkxJTkUpIHsKIAkJaWYgKGF0b21pY19yZWFkKCZmY3BvcnQtPnN0YXRlKSA9PSBGQ1NfREVWSUNFX0RFQUQgfHwKQEAgLTQwNSw3ICs0MDMsNyBAQAogCQkJY21kLT5yZXN1bHQgPSBESURfTk9fQ09OTkVDVCA8PCAxNjsKIAkJCWdvdG8gcWNfZmFpbF9jb21tYW5kOwogCQl9Ci0JCWdvdG8gcWNfaG9zdF9idXN5OworCQlnb3RvIHFjX3RhcmdldF9idXN5OwogCX0KIAogCXNwaW5fdW5sb2NrX2lycShoYS0+aG9zdC0+aG9zdF9sb2NrKTsKQEAgLTQyOCwxMCArNDI2LDExIEBACiAKIHFjX2hvc3RfYnVzeV9sb2NrOgogCXNwaW5fbG9ja19pcnEoaGEtPmhvc3QtPmhvc3RfbG9jayk7Ci0KLXFjX2hvc3RfYnVzeToKIAlyZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1RfQlVTWTsKIAorcWNfdGFyZ2V0X2J1c3k6CisJcmV0dXJuIFNDU0lfTUxRVUVVRV9UQVJHRVRfQlVTWTsKKwogcWNfZmFpbF9jb21tYW5kOgogCWRvbmUoY21kKTsKIApAQCAtNDYxLDEwICs0NjAsOCBAQAogCX0KIAogCS8qIENsb3NlIHdpbmRvdyBvbiBmY3BvcnQvcnBvcnQgc3RhdGUtdHJhbnNpdGlvbmluZy4gKi8KLQlpZiAoZmNwb3J0LT5kcnBvcnQpIHsKLQkJY21kLT5yZXN1bHQgPSBESURfSU1NX1JFVFJZIDw8IDE2OwotCQlnb3RvIHFjMjRfZmFpbF9jb21tYW5kOwotCX0KKwlpZiAoZmNwb3J0LT5kcnBvcnQpCisJCWdvdG8gcWMyNF90YXJnZXRfYnVzeTsKIAogCWlmIChhdG9taWNfcmVhZCgmZmNwb3J0LT5zdGF0ZSkgIT0gRkNTX09OTElORSkgewogCQlpZiAoYXRvbWljX3JlYWQoJmZjcG9ydC0+c3RhdGUpID09IEZDU19ERVZJQ0VfREVBRCB8fApAQCAtNDcyLDcgKzQ2OSw3IEBACiAJCQljbWQtPnJlc3VsdCA9IERJRF9OT19DT05ORUNUIDw8IDE2OwogCQkJZ290byBxYzI0X2ZhaWxfY29tbWFuZDsKIAkJfQotCQlnb3RvIHFjMjRfaG9zdF9idXN5OworCQlnb3RvIHFjMjRfdGFyZ2V0X2J1c3k7CiAJfQogCiAJc3Bpbl91bmxvY2tfaXJxKGhhLT5ob3N0LT5ob3N0X2xvY2spOwpAQCAtNDk1LDEwICs0OTIsMTEgQEAKIAogcWMyNF9ob3N0X2J1c3lfbG9jazoKIAlzcGluX2xvY2tfaXJxKGhhLT5ob3N0LT5ob3N0X2xvY2spOwotCi1xYzI0X2hvc3RfYnVzeToKIAlyZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1RfQlVTWTsKIAorcWMyNF90YXJnZXRfYnVzeToKKwlyZXR1cm4gU0NTSV9NTFFVRVVFX1RBUkdFVF9CVVNZOworCiBxYzI0X2ZhaWxfY29tbWFuZDoKIAlkb25lKGNtZCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pc3IuYyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pc3IuYwppbmRleCBhOTFhNTdjLi43OTkxMjBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaXNyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2lzci5jCkBAIC0xMzksNyArMTM5LDcgQEAKIAkJCSAgICAgIGhhLT5ob3N0X25vLCBjbWQtPmRldmljZS0+Y2hhbm5lbCwKIAkJCSAgICAgIGNtZC0+ZGV2aWNlLT5pZCwgY21kLT5kZXZpY2UtPmx1bikpOwogCi0JCWNtZC0+cmVzdWx0ID0gRElEX0JVU19CVVNZIDw8IDE2OworCQljbWQtPnJlc3VsdCA9IERJRF9UUkFOU1BPUlRfRElTUlVQVEVEIDw8IDE2OwogCiAJCS8qCiAJCSAqIE1hcmsgZGV2aWNlIG1pc3Npbmcgc28gdGhhdCB3ZSB3b24ndCBjb250aW51ZSB0byBzZW5kCkBAIC0yNDMsNyArMjQzLDcgQEAKIAkJaWYgKGF0b21pY19yZWFkKCZkZGJfZW50cnktPnN0YXRlKSA9PSBEREJfU1RBVEVfT05MSU5FKQogCQkJcWxhNHh4eF9tYXJrX2RldmljZV9taXNzaW5nKGhhLCBkZGJfZW50cnkpOwogCi0JCWNtZC0+cmVzdWx0ID0gRElEX0JVU19CVVNZIDw8IDE2OworCQljbWQtPnJlc3VsdCA9IERJRF9UUkFOU1BPUlRfRElTUlVQVEVEIDw8IDE2OwogCQlicmVhazsKIAogCWNhc2UgU0NTX1FVRVVFX0ZVTEw6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCmluZGV4IGRlODI3OWEuLmRiN2VhM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCkBAIC0zNTMsNyArMzUzLDcgQEAKIAkJICAgICAgaGEtPmhvc3Rfbm8sIGRkYl9lbnRyeS0+YnVzLCBkZGJfZW50cnktPnRhcmdldCwKIAkJICAgICAgZGRiX2VudHJ5LT5md19kZGJfaW5kZXgpKTsKIAlpc2NzaV9ibG9ja19zZXNzaW9uKGRkYl9lbnRyeS0+c2Vzcyk7Ci0JaXNjc2lfY29ubl9lcnJvcihkZGJfZW50cnktPmNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CisJaXNjc2lfY29ubl9lcnJvcl9ldmVudChkZGJfZW50cnktPmNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc3JiKiBxbGE0eHh4X2dldF9uZXdfc3JiKHN0cnVjdCBzY3NpX3FsYV9ob3N0ICpoYSwKQEAgLTQzOSw3ICs0MzksNyBAQAogCQkJY21kLT5yZXN1bHQgPSBESURfTk9fQ09OTkVDVCA8PCAxNjsKIAkJCWdvdG8gcWNfZmFpbF9jb21tYW5kOwogCQl9Ci0JCWdvdG8gcWNfaG9zdF9idXN5OworCQlyZXR1cm4gU0NTSV9NTFFVRVVFX1RBUkdFVF9CVVNZOwogCX0KIAogCWlmICh0ZXN0X2JpdChEUENfUkVTRVRfSEFfSU5UUiwgJmhhLT5kcGNfZmxhZ3MpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2kuYyBiL2RyaXZlcnMvc2NzaS9zY3NpLmMKaW5kZXggMmFjM2NiMi4uZjhiNzlkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2kuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaS5jCkBAIC03NTQsOCArNzU0LDEyIEBACiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiAJaWYgKHJ0bikgewotCQlzY3NpX3F1ZXVlX2luc2VydChjbWQsIChydG4gPT0gU0NTSV9NTFFVRVVFX0RFVklDRV9CVVNZKSA/Ci0JCQkJCQlydG4gOiBTQ1NJX01MUVVFVUVfSE9TVF9CVVNZKTsKKwkJaWYgKHJ0biAhPSBTQ1NJX01MUVVFVUVfREVWSUNFX0JVU1kgJiYKKwkJICAgIHJ0biAhPSBTQ1NJX01MUVVFVUVfVEFSR0VUX0JVU1kpCisJCQlydG4gPSBTQ1NJX01MUVVFVUVfSE9TVF9CVVNZOworCisJCXNjc2lfcXVldWVfaW5zZXJ0KGNtZCwgcnRuKTsKKwogCQlTQ1NJX0xPR19NTFFVRVVFKDMsCiAJCSAgICBwcmludGsoInF1ZXVlY29tbWFuZCA6IHJlcXVlc3QgcmVqZWN0ZWRcbiIpKTsKIAl9CkBAIC04MDAsNiArODA0LDcgQEAKIHZvaWQgc2NzaV9maW5pc2hfY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpCiB7CiAJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2ID0gY21kLT5kZXZpY2U7CisJc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0ID0gc2NzaV90YXJnZXQoc2Rldik7CiAJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBzZGV2LT5ob3N0OwogCXN0cnVjdCBzY3NpX2RyaXZlciAqZHJ2OwogCXVuc2lnbmVkIGludCBnb29kX2J5dGVzOwpAQCAtODE1LDYgKzgyMCw3IEBACiAJICogWFhYKGhjaCk6IFdoYXQgYWJvdXQgbG9ja2luZz8KICAgICAgICAgICovCiAgICAgICAgIHNob3N0LT5ob3N0X2Jsb2NrZWQgPSAwOworCXN0YXJnZXQtPnRhcmdldF9ibG9ja2VkID0gMDsKICAgICAgICAgc2Rldi0+ZGV2aWNlX2Jsb2NrZWQgPSAwOwogCiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2Vycm9yLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9lcnJvci5jCmluZGV4IGZlY2VmYTAuLjk0ZWQyNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2Vycm9yLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfZXJyb3IuYwpAQCAtMTA2NSwxMCArMTA2NSwxMCBAQAogCQkJCXN0cnVjdCBsaXN0X2hlYWQgKmRvbmVfcSkKIHsKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLCAqdGd0cl9zY21kLCAqbmV4dDsKLQl1bnNpZ25lZCBpbnQgaWQ7CisJdW5zaWduZWQgaW50IGlkID0gMDsKIAlpbnQgcnRuOwogCi0JZm9yIChpZCA9IDA7IGlkIDw9IHNob3N0LT5tYXhfaWQ7IGlkKyspIHsKKwlkbyB7CiAJCXRndHJfc2NtZCA9IE5VTEw7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2NtZCwgd29ya19xLCBlaF9lbnRyeSkgewogCQkJaWYgKGlkID09IHNjbWRfaWQoc2NtZCkpIHsKQEAgLTEwNzYsOCArMTA3NiwxOCBAQAogCQkJCWJyZWFrOwogCQkJfQogCQl9CisJCWlmICghdGd0cl9zY21kKSB7CisJCQkvKiBub3Qgb25lIGV4YWN0bHkgZXF1YWw7IGZpbmQgdGhlIG5leHQgaGlnaGVzdCAqLworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShzY21kLCB3b3JrX3EsIGVoX2VudHJ5KSB7CisJCQkJaWYgKHNjbWRfaWQoc2NtZCkgPiBpZCAmJgorCQkJCSAgICAoIXRndHJfc2NtZCB8fAorCQkJCSAgICAgc2NtZF9pZCh0Z3RyX3NjbWQpID4gc2NtZF9pZChzY21kKSkpCisJCQkJCQl0Z3RyX3NjbWQgPSBzY21kOworCQkJfQorCQl9CiAJCWlmICghdGd0cl9zY21kKQotCQkJY29udGludWU7CisJCQkvKiBubyBtb3JlIGNvbW1hbmRzLCB0aGF0J3MgaXQgKi8KKwkJCWJyZWFrOwogCiAJCVNDU0lfTE9HX0VSUk9SX1JFQ09WRVJZKDMsIHByaW50aygiJXM6IFNlbmRpbmcgdGFyZ2V0IHJlc2V0ICIKIAkJCQkJCSAgInRvIHRhcmdldCAlZFxuIiwKQEAgLTEwOTYsNyArMTEwNiw4IEBACiAJCQkJCQkJICAiIGZhaWxlZCB0YXJnZXQ6ICIKIAkJCQkJCQkgICIlZFxuIiwKIAkJCQkJCQkgIGN1cnJlbnQtPmNvbW0sIGlkKSk7Ci0JfQorCQlpZCsrOworCX0gd2hpbGUoaWQgIT0gMCk7CiAKIAlyZXR1cm4gbGlzdF9lbXB0eSh3b3JrX3EpOwogfQpAQCAtMTIxOSw2ICsxMjMwLDQwIEBACiB9CiAKIC8qKgorICogc2NzaV9ub3JldHJ5X2NtZCAtIGRldGVybWludGUgaWYgY29tbWFuZCBzaG91bGQgYmUgZmFpbGVkIGZhc3QKKyAqIEBzY21kOglTQ1NJIGNtZCB0byBleGFtaW5lLgorICovCitpbnQgc2NzaV9ub3JldHJ5X2NtZChzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kKQoreworCXN3aXRjaCAoaG9zdF9ieXRlKHNjbWQtPnJlc3VsdCkpIHsKKwljYXNlIERJRF9PSzoKKwkJYnJlYWs7CisJY2FzZSBESURfQlVTX0JVU1k6CisJCXJldHVybiBibGtfZmFpbGZhc3RfdHJhbnNwb3J0KHNjbWQtPnJlcXVlc3QpOworCWNhc2UgRElEX1BBUklUWToKKwkJcmV0dXJuIGJsa19mYWlsZmFzdF9kZXYoc2NtZC0+cmVxdWVzdCk7CisJY2FzZSBESURfRVJST1I6CisJCWlmIChtc2dfYnl0ZShzY21kLT5yZXN1bHQpID09IENPTU1BTkRfQ09NUExFVEUgJiYKKwkJICAgIHN0YXR1c19ieXRlKHNjbWQtPnJlc3VsdCkgPT0gUkVTRVJWQVRJT05fQ09ORkxJQ1QpCisJCQlyZXR1cm4gMDsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBESURfU09GVF9FUlJPUjoKKwkJcmV0dXJuIGJsa19mYWlsZmFzdF9kcml2ZXIoc2NtZC0+cmVxdWVzdCk7CisJfQorCisJc3dpdGNoIChzdGF0dXNfYnl0ZShzY21kLT5yZXN1bHQpKSB7CisJY2FzZSBDSEVDS19DT05ESVRJT046CisJCS8qCisJCSAqIGFzc3VtZSBjYWxsZXIgaGFzIGNoZWNrZWQgc2Vuc2UgYW5kIGRldGVybWludGVkCisJCSAqIHRoZSBjaGVjayBjb25kaXRpb24gd2FzIHJldHJ5YWJsZS4KKwkJICovCisJCXJldHVybiBibGtfZmFpbGZhc3RfZGV2KHNjbWQtPnJlcXVlc3QpOworCX0KKworCXJldHVybiAwOworfQorCisvKioKICAqIHNjc2lfZGVjaWRlX2Rpc3Bvc2l0aW9uIC0gRGlzcG9zaXRpb24gYSBjbWQgb24gcmV0dXJuIGZyb20gTExELgogICogQHNjbWQ6CVNDU0kgY21kIHRvIGV4YW1pbmUuCiAgKgpAQCAtMTI5MCw3ICsxMzM1LDIwIEBACiAKIAljYXNlIERJRF9SRVFVRVVFOgogCQlyZXR1cm4gQUREX1RPX01MUVVFVUU7Ci0KKwljYXNlIERJRF9UUkFOU1BPUlRfRElTUlVQVEVEOgorCQkvKgorCQkgKiBMTEQvdHJhbnNwb3J0IHdhcyBkaXNydXB0ZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgdGhlIElPLgorCQkgKiBUaGUgdHJhbnNwb3J0IGNsYXNzIGlzIG5vdyBibG9ja2VkL2Jsb2NraW5nLAorCQkgKiBhbmQgdGhlIHRyYW5zcG9ydCB3aWxsIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIElPCisJCSAqIGJhc2VkIG9uIGl0cyB0aW1lcnMgYW5kIHJlY292ZXJ5IGNhcGFibGlsaXRpZXMuCisJCSAqLworCQlyZXR1cm4gQUREX1RPX01MUVVFVUU7CisJY2FzZSBESURfVFJBTlNQT1JUX0ZBSUxGQVNUOgorCQkvKgorCQkgKiBUaGUgdHJhbnNwb3J0IGRlY2lkZWQgdG8gZmFpbGZhc3QgdGhlIElPIChtb3N0IGxpa2VseQorCQkgKiB0aGUgZmFzdCBpbyBmYWlsIHRtbyBmaXJlZCksIHNvIHNlbmQgSU8gZGlyZWN0bHkgdXB3YXJkcy4KKwkJICovCisJCXJldHVybiBTVUNDRVNTOwogCWNhc2UgRElEX0VSUk9SOgogCQlpZiAobXNnX2J5dGUoc2NtZC0+cmVzdWx0KSA9PSBDT01NQU5EX0NPTVBMRVRFICYmCiAJCSAgICBzdGF0dXNfYnl0ZShzY21kLT5yZXN1bHQpID09IFJFU0VSVkFUSU9OX0NPTkZMSUNUKQpAQCAtMTM4Myw3ICsxNDQxLDcgQEAKIAkgKiBldmVuIGlmIHRoZSByZXF1ZXN0IGlzIG1hcmtlZCBmYXN0IGZhaWwsIHdlIHN0aWxsIHJlcXVldWUKIAkgKiBmb3IgcXVldWUgY29uZ2VzdGlvbiBjb25kaXRpb25zIChRVUVVRV9GVUxMIG9yIEJVU1kpICovCiAJaWYgKCgrK3NjbWQtPnJldHJpZXMpIDw9IHNjbWQtPmFsbG93ZWQKLQkgICAgJiYgIWJsa19ub3JldHJ5X3JlcXVlc3Qoc2NtZC0+cmVxdWVzdCkpIHsKKwkgICAgJiYgIXNjc2lfbm9yZXRyeV9jbWQoc2NtZCkpIHsKIAkJcmV0dXJuIE5FRURTX1JFVFJZOwogCX0gZWxzZSB7CiAJCS8qCkBAIC0xNTA4LDcgKzE1NjYsNyBAQAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzY21kLCBuZXh0LCBkb25lX3EsIGVoX2VudHJ5KSB7CiAJCWxpc3RfZGVsX2luaXQoJnNjbWQtPmVoX2VudHJ5KTsKIAkJaWYgKHNjc2lfZGV2aWNlX29ubGluZShzY21kLT5kZXZpY2UpICYmCi0JCSAgICAhYmxrX25vcmV0cnlfcmVxdWVzdChzY21kLT5yZXF1ZXN0KSAmJgorCQkgICAgIXNjc2lfbm9yZXRyeV9jbWQoc2NtZCkgJiYKIAkJICAgICgrK3NjbWQtPnJldHJpZXMgPD0gc2NtZC0+YWxsb3dlZCkpIHsKIAkJCVNDU0lfTE9HX0VSUk9SX1JFQ09WRVJZKDMsIHByaW50aygiJXM6IGZsdXNoIgogCQkJCQkJCSAgIiByZXRyeSBjbWQ6ICVwXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9saWIuYwppbmRleCA5OGVlNTVjLi5lNWE5NTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9saWIuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9saWIuYwpAQCAtMTE0LDYgKzExNCw3IEBACiB7CiAJc3RydWN0IFNjc2lfSG9zdCAqaG9zdCA9IGNtZC0+ZGV2aWNlLT5ob3N0OwogCXN0cnVjdCBzY3NpX2RldmljZSAqZGV2aWNlID0gY21kLT5kZXZpY2U7CisJc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0ID0gc2NzaV90YXJnZXQoZGV2aWNlKTsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGRldmljZS0+cmVxdWVzdF9xdWV1ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xMzMsMTAgKzEzNCwxNyBAQAogCSAqIGlmIGEgY29tbWFuZCBpcyByZXF1ZXVlZCB3aXRoIG5vIG90aGVyIGNvbW1hbmRzIG91dHN0YW5kaW5nCiAJICogZWl0aGVyIGZvciB0aGUgZGV2aWNlIG9yIGZvciB0aGUgaG9zdC4KIAkgKi8KLQlpZiAocmVhc29uID09IFNDU0lfTUxRVUVVRV9IT1NUX0JVU1kpCisJc3dpdGNoIChyZWFzb24pIHsKKwljYXNlIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1k6CiAJCWhvc3QtPmhvc3RfYmxvY2tlZCA9IGhvc3QtPm1heF9ob3N0X2Jsb2NrZWQ7Ci0JZWxzZSBpZiAocmVhc29uID09IFNDU0lfTUxRVUVVRV9ERVZJQ0VfQlVTWSkKKwkJYnJlYWs7CisJY2FzZSBTQ1NJX01MUVVFVUVfREVWSUNFX0JVU1k6CiAJCWRldmljZS0+ZGV2aWNlX2Jsb2NrZWQgPSBkZXZpY2UtPm1heF9kZXZpY2VfYmxvY2tlZDsKKwkJYnJlYWs7CisJY2FzZSBTQ1NJX01MUVVFVUVfVEFSR0VUX0JVU1k6CisJCXN0YXJnZXQtPnRhcmdldF9ibG9ja2VkID0gc3RhcmdldC0+bWF4X3RhcmdldF9ibG9ja2VkOworCQlicmVhazsKKwl9CiAKIAkvKgogCSAqIERlY3JlbWVudCB0aGUgY291bnRlcnMsIHNpbmNlIHRoZXNlIGNvbW1hbmRzIGFyZSBubyBsb25nZXIKQEAgLTQ2MCwxMCArNDY4LDEyIEBACiB2b2lkIHNjc2lfZGV2aWNlX3VuYnVzeShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCiB7CiAJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBzZGV2LT5ob3N0OworCXN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCA9IHNjc2lfdGFyZ2V0KHNkZXYpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiAJc2hvc3QtPmhvc3RfYnVzeS0tOworCXN0YXJnZXQtPnRhcmdldF9idXN5LS07CiAJaWYgKHVubGlrZWx5KHNjc2lfaG9zdF9pbl9yZWNvdmVyeShzaG9zdCkgJiYKIAkJICAgICAoc2hvc3QtPmhvc3RfZmFpbGVkIHx8IHNob3N0LT5ob3N0X2VoX3NjaGVkdWxlZCkpKQogCQlzY3NpX2VoX3dha2V1cChzaG9zdCk7CkBAIC01MTksNiArNTI5LDEzIEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHNjc2lfdGFyZ2V0X2lzX2J1c3koc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0KQoreworCXJldHVybiAoKHN0YXJnZXQtPmNhbl9xdWV1ZSA+IDAgJiYKKwkJIHN0YXJnZXQtPnRhcmdldF9idXN5ID49IHN0YXJnZXQtPmNhbl9xdWV1ZSkgfHwKKwkJIHN0YXJnZXQtPnRhcmdldF9ibG9ja2VkKTsKK30KKwogLyoKICAqIEZ1bmN0aW9uOglzY3NpX3J1bl9xdWV1ZSgpCiAgKgpAQCAtNTMzLDcgKzU1MCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkIHNjc2lfcnVuX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQogewotCXN0cnVjdCBzY3NpX2RldmljZSAqc2RldiA9IHEtPnF1ZXVlZGF0YTsKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnN0YXJ2ZWRfaGVhZCA9IE5VTEwsICpzZGV2ID0gcS0+cXVldWVkYXRhOwogCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gc2Rldi0+aG9zdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC01NjAsNiArNTc3LDIxIEBACiAJCSAqLwogCQlzZGV2ID0gbGlzdF9lbnRyeShzaG9zdC0+c3RhcnZlZF9saXN0Lm5leHQsCiAJCQkJCSAgc3RydWN0IHNjc2lfZGV2aWNlLCBzdGFydmVkX2VudHJ5KTsKKwkJLyoKKwkJICogVGhlICpxdWV1ZV9yZWFkeSBmdW5jdGlvbnMgY2FuIGFkZCBhIGRldmljZSBiYWNrIG9udG8gdGhlCisJCSAqIHN0YXJ2ZWQgbGlzdCdzIHRhaWwsIHNvIHdlIG11c3QgY2hlY2sgZm9yIGEgaW5maW5pdGUgbG9vcC4KKwkJICovCisJCWlmIChzZGV2ID09IHN0YXJ2ZWRfaGVhZCkKKwkJCWJyZWFrOworCQlpZiAoIXN0YXJ2ZWRfaGVhZCkKKwkJCXN0YXJ2ZWRfaGVhZCA9IHNkZXY7CisKKwkJaWYgKHNjc2lfdGFyZ2V0X2lzX2J1c3koc2NzaV90YXJnZXQoc2RldikpKSB7CisJCQlsaXN0X21vdmVfdGFpbCgmc2Rldi0+c3RhcnZlZF9lbnRyeSwKKwkJCQkgICAgICAgJnNob3N0LT5zdGFydmVkX2xpc3QpOworCQkJY29udGludWU7CisJCX0KKwogCQlsaXN0X2RlbF9pbml0KCZzZGV2LT5zdGFydmVkX2VudHJ5KTsKIAkJc3Bpbl91bmxvY2soc2hvc3QtPmhvc3RfbG9jayk7CiAKQEAgLTU3NSwxMyArNjA3LDYgQEAKIAkJc3Bpbl91bmxvY2soc2Rldi0+cmVxdWVzdF9xdWV1ZS0+cXVldWVfbG9jayk7CiAKIAkJc3Bpbl9sb2NrKHNob3N0LT5ob3N0X2xvY2spOwotCQlpZiAodW5saWtlbHkoIWxpc3RfZW1wdHkoJnNkZXYtPnN0YXJ2ZWRfZW50cnkpKSkKLQkJCS8qCi0JCQkgKiBzZGV2IGxvc3QgYSByYWNlLCBhbmQgd2FzIHB1dCBiYWNrIG9uIHRoZQotCQkJICogc3RhcnZlZCBsaXN0LiBUaGlzIGlzIHVubGlrZWx5IGJ1dCB3aXRob3V0IHRoaXMKLQkJCSAqIGluIHRoZW9yeSB3ZSBjb3VsZCBsb29wIGZvcmV2ZXIuCi0JCQkgKi8KLQkJCWJyZWFrOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIApAQCAtNjgxLDcgKzcwNiw3IEBACiAJCQlsZWZ0b3ZlciA9IHJlcS0+ZGF0YV9sZW47CiAKIAkJLyoga2lsbCByZW1haW5kZXIgaWYgbm8gcmV0cnlzICovCi0JCWlmIChlcnJvciAmJiBibGtfbm9yZXRyeV9yZXF1ZXN0KHJlcSkpCisJCWlmIChlcnJvciAmJiBzY3NpX25vcmV0cnlfY21kKGNtZCkpCiAJCQlibGtfZW5kX3JlcXVlc3QocmVxLCBlcnJvciwgbGVmdG92ZXIpOwogCQllbHNlIHsKIAkJCWlmIChyZXF1ZXVlKSB7CkBAIC0xMzQ0LDYgKzEzNjksNTIgQEAKIAlyZXR1cm4gMTsKIH0KIAorCisvKgorICogc2NzaV90YXJnZXRfcXVldWVfcmVhZHk6IGNoZWNrcyBpZiB0aGVyZSB3ZSBjYW4gc2VuZCBjb21tYW5kcyB0byB0YXJnZXQKKyAqIEBzZGV2OiBzY3NpIGRldmljZSBvbiBzdGFyZ2V0IHRvIGNoZWNrLgorICoKKyAqIENhbGxlZCB3aXRoIHRoZSBob3N0IGxvY2sgaGVsZC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgc2NzaV90YXJnZXRfcXVldWVfcmVhZHkoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsCisJCQkJCSAgIHN0cnVjdCBzY3NpX2RldmljZSAqc2RldikKK3sKKwlzdHJ1Y3Qgc2NzaV90YXJnZXQgKnN0YXJnZXQgPSBzY3NpX3RhcmdldChzZGV2KTsKKworCWlmIChzdGFyZ2V0LT5zaW5nbGVfbHVuKSB7CisJCWlmIChzdGFyZ2V0LT5zdGFyZ2V0X3NkZXZfdXNlciAmJgorCQkgICAgc3RhcmdldC0+c3RhcmdldF9zZGV2X3VzZXIgIT0gc2RldikKKwkJCXJldHVybiAwOworCQlzdGFyZ2V0LT5zdGFyZ2V0X3NkZXZfdXNlciA9IHNkZXY7CisJfQorCisJaWYgKHN0YXJnZXQtPnRhcmdldF9idXN5ID09IDAgJiYgc3RhcmdldC0+dGFyZ2V0X2Jsb2NrZWQpIHsKKwkJLyoKKwkJICogdW5ibG9jayBhZnRlciB0YXJnZXRfYmxvY2tlZCBpdGVyYXRlcyB0byB6ZXJvCisJCSAqLworCQlpZiAoLS1zdGFyZ2V0LT50YXJnZXRfYmxvY2tlZCA9PSAwKSB7CisJCQlTQ1NJX0xPR19NTFFVRVVFKDMsIHN0YXJnZXRfcHJpbnRrKEtFUk5fSU5GTywgc3RhcmdldCwKKwkJCQkJICJ1bmJsb2NraW5nIHRhcmdldCBhdCB6ZXJvIGRlcHRoXG4iKSk7CisJCX0gZWxzZSB7CisJCQlibGtfcGx1Z19kZXZpY2Uoc2Rldi0+cmVxdWVzdF9xdWV1ZSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCWlmIChzY3NpX3RhcmdldF9pc19idXN5KHN0YXJnZXQpKSB7CisJCWlmIChsaXN0X2VtcHR5KCZzZGV2LT5zdGFydmVkX2VudHJ5KSkgeworCQkJbGlzdF9hZGRfdGFpbCgmc2Rldi0+c3RhcnZlZF9lbnRyeSwKKwkJCQkgICAgICAmc2hvc3QtPnN0YXJ2ZWRfbGlzdCk7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCS8qIFdlJ3JlIE9LIHRvIHByb2Nlc3MgdGhlIGNvbW1hbmQsIHNvIHdlIGNhbid0IGJlIHN0YXJ2ZWQgKi8KKwlpZiAoIWxpc3RfZW1wdHkoJnNkZXYtPnN0YXJ2ZWRfZW50cnkpKQorCQlsaXN0X2RlbF9pbml0KCZzZGV2LT5zdGFydmVkX2VudHJ5KTsKKwlyZXR1cm4gMTsKK30KKwogLyoKICAqIHNjc2lfaG9zdF9xdWV1ZV9yZWFkeTogaWYgd2UgY2FuIHNlbmQgcmVxdWVzdHMgdG8gc2hvc3QsIHJldHVybiAxIGVsc2UKICAqIHJldHVybiAwLiBXZSBtdXN0IGVuZCB1cCBydW5uaW5nIHRoZSBxdWV1ZSBhZ2FpbiB3aGVuZXZlciAwIGlzCkBAIC0xMzkwLDYgKzE0NjEsNyBAQAogewogCXN0cnVjdCBzY3NpX2NtbmQgKmNtZCA9IHJlcS0+c3BlY2lhbDsKIAlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYgPSBjbWQtPmRldmljZTsKKwlzdHJ1Y3Qgc2NzaV90YXJnZXQgKnN0YXJnZXQgPSBzY3NpX3RhcmdldChzZGV2KTsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHNkZXYtPmhvc3Q7CiAKIAlibGtkZXZfZGVxdWV1ZV9yZXF1ZXN0KHJlcSk7CkBAIC0xNDEzLDYgKzE0ODUsNyBAQAogCXNwaW5fdW5sb2NrKHNkZXYtPnJlcXVlc3RfcXVldWUtPnF1ZXVlX2xvY2spOwogCXNwaW5fbG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKIAlzaG9zdC0+aG9zdF9idXN5Kys7CisJc3RhcmdldC0+dGFyZ2V0X2J1c3krKzsKIAlzcGluX3VubG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKIAlzcGluX2xvY2soc2Rldi0+cmVxdWVzdF9xdWV1ZS0+cXVldWVfbG9jayk7CiAKQEAgLTE1NTAsMTQgKzE2MjMsMTMgQEAKIAkJCWdvdG8gbm90X3JlYWR5OwogCQl9CiAKKwkJaWYgKCFzY3NpX3RhcmdldF9xdWV1ZV9yZWFkeShzaG9zdCwgc2RldikpCisJCQlnb3RvIG5vdF9yZWFkeTsKKwogCQlpZiAoIXNjc2lfaG9zdF9xdWV1ZV9yZWFkeShxLCBzaG9zdCwgc2RldikpCiAJCQlnb3RvIG5vdF9yZWFkeTsKLQkJaWYgKHNjc2lfdGFyZ2V0KHNkZXYpLT5zaW5nbGVfbHVuKSB7Ci0JCQlpZiAoc2NzaV90YXJnZXQoc2RldiktPnN0YXJnZXRfc2Rldl91c2VyICYmCi0JCQkgICAgc2NzaV90YXJnZXQoc2RldiktPnN0YXJnZXRfc2Rldl91c2VyICE9IHNkZXYpCi0JCQkJZ290byBub3RfcmVhZHk7Ci0JCQlzY3NpX3RhcmdldChzZGV2KS0+c3RhcmdldF9zZGV2X3VzZXIgPSBzZGV2OwotCQl9CisKKwkJc2NzaV90YXJnZXQoc2RldiktPnRhcmdldF9idXN5Kys7CiAJCXNob3N0LT5ob3N0X2J1c3krKzsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfcHJpdi5oIGIvZHJpdmVycy9zY3NpL3Njc2lfcHJpdi5oCmluZGV4IDZjZGRkNWQuLmUxODUwOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3ByaXYuaAorKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9wcml2LmgKQEAgLTU5LDYgKzU5LDcgQEAKIAkJCXN0cnVjdCBsaXN0X2hlYWQgKmRvbmVfcSk7CiBpbnQgc2NzaV9laF9nZXRfc2Vuc2Uoc3RydWN0IGxpc3RfaGVhZCAqd29ya19xLAogCQkgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpkb25lX3EpOworaW50IHNjc2lfbm9yZXRyeV9jbWQoc3RydWN0IHNjc2lfY21uZCAqc2NtZCk7CiAKIC8qIHNjc2lfbGliLmMgKi8KIGV4dGVybiBpbnQgc2NzaV9tYXliZV91bmJsb2NrX2hvc3Qoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYwppbmRleCAzMzQ4NjJlLi5iMTRkYzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jCkBAIC00MTksNiArNDE5LDcgQEAKIAlkZXYtPnR5cGUgPSAmc2NzaV90YXJnZXRfdHlwZTsKIAlzdGFyZ2V0LT5pZCA9IGlkOwogCXN0YXJnZXQtPmNoYW5uZWwgPSBjaGFubmVsOworCXN0YXJnZXQtPmNhbl9xdWV1ZSA9IDA7CiAJSU5JVF9MSVNUX0hFQUQoJnN0YXJnZXQtPnNpYmxpbmdzKTsKIAlJTklUX0xJU1RfSEVBRCgmc3RhcmdldC0+ZGV2aWNlcyk7CiAJc3RhcmdldC0+c3RhdGUgPSBTVEFSR0VUX0NSRUFURUQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jCmluZGV4IGQ1Zjc2NTMuLjFlNzFhYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jCkBAIC0yMTMzLDggKzIxMzMsNyBAQAogCVNFVFVQX1BSSVZBVEVfUlBPUlRfQVRUUklCVVRFX1JEKHJvbGVzKTsKIAlTRVRVUF9QUklWQVRFX1JQT1JUX0FUVFJJQlVURV9SRChwb3J0X3N0YXRlKTsKIAlTRVRVUF9QUklWQVRFX1JQT1JUX0FUVFJJQlVURV9SRChzY3NpX3RhcmdldF9pZCk7Ci0JaWYgKGZ0LT50ZXJtaW5hdGVfcnBvcnRfaW8pCi0JCVNFVFVQX1BSSVZBVEVfUlBPUlRfQVRUUklCVVRFX1JXKGZhc3RfaW9fZmFpbF90bW8pOworCVNFVFVQX1BSSVZBVEVfUlBPUlRfQVRUUklCVVRFX1JXKGZhc3RfaW9fZmFpbF90bW8pOwogCiAJQlVHX09OKGNvdW50ID4gRkNfUlBPUlRfTlVNX0FUVFJTKTsKIApAQCAtMjMyOCw2ICsyMzI3LDIyIEBACiB9CiBFWFBPUlRfU1lNQk9MKGZjX3JlbW92ZV9ob3N0KTsKIAorc3RhdGljIHZvaWQgZmNfdGVybWluYXRlX3Jwb3J0X2lvKHN0cnVjdCBmY19ycG9ydCAqcnBvcnQpCit7CisJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBycG9ydF90b19zaG9zdChycG9ydCk7CisJc3RydWN0IGZjX2ludGVybmFsICppID0gdG9fZmNfaW50ZXJuYWwoc2hvc3QtPnRyYW5zcG9ydHQpOworCisJLyogSW52b2x2ZSB0aGUgTExERCBpZiBwb3NzaWJsZSB0byB0ZXJtaW5hdGUgYWxsIGlvIG9uIHRoZSBycG9ydC4gKi8KKwlpZiAoaS0+Zi0+dGVybWluYXRlX3Jwb3J0X2lvKQorCQlpLT5mLT50ZXJtaW5hdGVfcnBvcnRfaW8ocnBvcnQpOworCisJLyoKKwkgKiBtdXN0IHVuYmxvY2sgdG8gZmx1c2ggcXVldWVkIElPLiBUaGUgY2FsbGVyIHdpbGwgaGF2ZSBzZXQKKwkgKiB0aGUgcG9ydF9zdGF0ZSBvciBmbGFncywgc28gdGhhdCBmY19yZW1vdGVfcG9ydF9jaGtyZWFkeSB3aWxsCisJICogZmFpbCBJTy4KKwkgKi8KKwlzY3NpX3RhcmdldF91bmJsb2NrKCZycG9ydC0+ZGV2KTsKK30KIAogLyoqCiAgKiBmY19zdGFyZ2V0X2RlbGV0ZSAtIGNhbGxlZCB0byBkZWxldGUgdGhlIHNjc2kgZGVjZW5kZW50cyBvZiBhbiBycG9ydApAQCAtMjM0MCwxMyArMjM1NSw4IEBACiB7CiAJc3RydWN0IGZjX3Jwb3J0ICpycG9ydCA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZmNfcnBvcnQsIHN0Z3RfZGVsZXRlX3dvcmspOwotCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gcnBvcnRfdG9fc2hvc3QocnBvcnQpOwotCXN0cnVjdCBmY19pbnRlcm5hbCAqaSA9IHRvX2ZjX2ludGVybmFsKHNob3N0LT50cmFuc3BvcnR0KTsKIAotCS8qIEludm9sdmUgdGhlIExMREQgaWYgcG9zc2libGUgdG8gdGVybWluYXRlIGFsbCBpbyBvbiB0aGUgcnBvcnQuICovCi0JaWYgKGktPmYtPnRlcm1pbmF0ZV9ycG9ydF9pbykKLQkJaS0+Zi0+dGVybWluYXRlX3Jwb3J0X2lvKHJwb3J0KTsKLQorCWZjX3Rlcm1pbmF0ZV9ycG9ydF9pbyhycG9ydCk7CiAJc2NzaV9yZW1vdmVfdGFyZ2V0KCZycG9ydC0+ZGV2KTsKIH0KIApAQCAtMjM3MiwxMCArMjM4Miw3IEBACiAJaWYgKHJwb3J0LT5mbGFncyAmIEZDX1JQT1JUX1NDQU5fUEVORElORykKIAkJc2NzaV9mbHVzaF93b3JrKHNob3N0KTsKIAotCS8qIGludm9sdmUgdGhlIExMREQgdG8gdGVybWluYXRlIGFsbCBwZW5kaW5nIGkvbyAqLwotCWlmIChpLT5mLT50ZXJtaW5hdGVfcnBvcnRfaW8pCi0JCWktPmYtPnRlcm1pbmF0ZV9ycG9ydF9pbyhycG9ydCk7Ci0KKwlmY190ZXJtaW5hdGVfcnBvcnRfaW8ocnBvcnQpOwogCS8qCiAJICogQ2FuY2VsIGFueSBvdXRzdGFuZGluZyB0aW1lcnMuIFRoZXNlIHNob3VsZCByZWFsbHkgZXhpc3QKIAkgKiBvbmx5IHdoZW4gcm1tb2QnaW5nIHRoZSBMTEREIGFuZCB3ZSdyZSBhc2tpbmcgZm9yCkBAIC0yNjM5LDcgKzI2NDYsOCBAQAogCiAJCQkJc3Bpbl9sb2NrX2lycXNhdmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCi0JCQkJcnBvcnQtPmZsYWdzICY9IH5GQ19SUE9SVF9ERVZMT1NTX1BFTkRJTkc7CisJCQkJcnBvcnQtPmZsYWdzICY9IH4oRkNfUlBPUlRfRkFTVF9GQUlMX1RJTUVET1VUIHwKKwkJCQkJCSAgRkNfUlBPUlRfREVWTE9TU19QRU5ESU5HKTsKIAogCQkJCS8qIGlmIHRhcmdldCwgaW5pdGlhdGUgYSBzY2FuICovCiAJCQkJaWYgKHJwb3J0LT5zY3NpX3RhcmdldF9pZCAhPSAtMSkgewpAQCAtMjcwMiw2ICsyNzEwLDcgQEAKIAkJCXJwb3J0LT5wb3J0X2lkID0gaWRzLT5wb3J0X2lkOwogCQkJcnBvcnQtPnJvbGVzID0gaWRzLT5yb2xlczsKIAkJCXJwb3J0LT5wb3J0X3N0YXRlID0gRkNfUE9SVFNUQVRFX09OTElORTsKKwkJCXJwb3J0LT5mbGFncyAmPSB+RkNfUlBPUlRfRkFTVF9GQUlMX1RJTUVET1VUOwogCiAJCQlpZiAoZmNpLT5mLT5kZF9mY3Jwb3J0X3NpemUpCiAJCQkJbWVtc2V0KHJwb3J0LT5kZF9kYXRhLCAwLApAQCAtMjc4NCw3ICsyNzkzLDYgQEAKIGZjX3JlbW90ZV9wb3J0X2RlbGV0ZShzdHJ1Y3QgZmNfcnBvcnQgICpycG9ydCkKIHsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHJwb3J0X3RvX3Nob3N0KHJwb3J0KTsKLQlzdHJ1Y3QgZmNfaW50ZXJuYWwgKmkgPSB0b19mY19pbnRlcm5hbChzaG9zdC0+dHJhbnNwb3J0dCk7CiAJaW50IHRpbWVvdXQgPSBycG9ydC0+ZGV2X2xvc3NfdG1vOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKQEAgLTI4MzAsNyArMjgzOCw3IEBACiAKIAkvKiBzZWUgaWYgd2UgbmVlZCB0byBraWxsIGlvIGZhc3RlciB0aGFuIHdhaXRpbmcgZm9yIGRldmljZSBsb3NzICovCiAJaWYgKChycG9ydC0+ZmFzdF9pb19mYWlsX3RtbyAhPSAtMSkgJiYKLQkgICAgKHJwb3J0LT5mYXN0X2lvX2ZhaWxfdG1vIDwgdGltZW91dCkgJiYgKGktPmYtPnRlcm1pbmF0ZV9ycG9ydF9pbykpCisJICAgIChycG9ydC0+ZmFzdF9pb19mYWlsX3RtbyA8IHRpbWVvdXQpKQogCQlmY19xdWV1ZV9kZXZsb3NzX3dvcmsoc2hvc3QsICZycG9ydC0+ZmFpbF9pb193b3JrLAogCQkJCQlycG9ydC0+ZmFzdF9pb19mYWlsX3RtbyAqIEhaKTsKIApAQCAtMjkwNiw3ICsyOTE0LDggQEAKIAkJCWZjX2ZsdXNoX2Rldmxvc3Moc2hvc3QpOwogCiAJCXNwaW5fbG9ja19pcnFzYXZlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKLQkJcnBvcnQtPmZsYWdzICY9IH5GQ19SUE9SVF9ERVZMT1NTX1BFTkRJTkc7CisJCXJwb3J0LT5mbGFncyAmPSB+KEZDX1JQT1JUX0ZBU1RfRkFJTF9USU1FRE9VVCB8CisJCQkJICBGQ19SUE9SVF9ERVZMT1NTX1BFTkRJTkcpOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAogCQkvKiBlbnN1cmUgYW55IHN0Z3QgZGVsZXRlIGZ1bmN0aW9ucyBhcmUgZG9uZSAqLwpAQCAtMzAwMSw2ICszMDEwLDcgQEAKIAlycG9ydC0+c3VwcG9ydGVkX2NsYXNzZXMgPSBGQ19DT1NfVU5TUEVDSUZJRUQ7CiAJcnBvcnQtPnJvbGVzID0gRkNfUE9SVF9ST0xFX1VOS05PV047CiAJcnBvcnQtPnBvcnRfc3RhdGUgPSBGQ19QT1JUU1RBVEVfTk9UUFJFU0VOVDsKKwlycG9ydC0+ZmxhZ3MgJj0gfkZDX1JQT1JUX0ZBU1RfRkFJTF9USU1FRE9VVDsKIAogCS8qIHJlbW92ZSB0aGUgaWRlbnRpZmllcnMgdGhhdCBhcmVuJ3QgdXNlZCBpbiB0aGUgY29uc2lzdGluZyBiaW5kaW5nICovCiAJc3dpdGNoIChmY19ob3N0LT50Z3RpZF9iaW5kX3R5cGUpIHsKQEAgLTMwNDMsMTMgKzMwNTMsMTIgQEAKIHsKIAlzdHJ1Y3QgZmNfcnBvcnQgKnJwb3J0ID0KIAkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBmY19ycG9ydCwgZmFpbF9pb193b3JrLndvcmspOwotCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gcnBvcnRfdG9fc2hvc3QocnBvcnQpOwotCXN0cnVjdCBmY19pbnRlcm5hbCAqaSA9IHRvX2ZjX2ludGVybmFsKHNob3N0LT50cmFuc3BvcnR0KTsKIAogCWlmIChycG9ydC0+cG9ydF9zdGF0ZSAhPSBGQ19QT1JUU1RBVEVfQkxPQ0tFRCkKIAkJcmV0dXJuOwogCi0JaS0+Zi0+dGVybWluYXRlX3Jwb3J0X2lvKHJwb3J0KTsKKwlycG9ydC0+ZmxhZ3MgfD0gRkNfUlBPUlRfRkFTVF9GQUlMX1RJTUVET1VUOworCWZjX3Rlcm1pbmF0ZV9ycG9ydF9pbyhycG9ydCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2lzY3NpLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYwppbmRleCAwY2U1ZjdjLi40YTgwM2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYwpAQCAtMTM4LDcgKzEzOCw3IEBACiBzaG93X2VwX2hhbmRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJc3RydWN0IGlzY3NpX2VuZHBvaW50ICplcCA9IGlzY3NpX2Rldl90b19lbmRwb2ludChkZXYpOwotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBlcC0+aWQpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsbHVcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpIGVwLT5pZCk7CiB9CiBzdGF0aWMgSVNDU0lfQVRUUihlcCwgaGFuZGxlLCBTX0lSVUdPLCBzaG93X2VwX2hhbmRsZSwgTlVMTCk7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQAogc3RhdGljIGludCBpc2NzaV9tYXRjaF9lcGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaXNjc2lfZW5kcG9pbnQgKmVwID0gaXNjc2lfZGV2X3RvX2VuZHBvaW50KGRldik7Ci0JdW5zaWduZWQgaW50ICplcGlkID0gKHVuc2lnbmVkIGludCAqKSBkYXRhOworCXVpbnQ2NF90ICplcGlkID0gKHVpbnQ2NF90ICopIGRhdGE7CiAKIAlyZXR1cm4gKmVwaWQgPT0gZXAtPmlkOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBACiB7CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBpc2NzaV9lbmRwb2ludCAqZXA7Ci0JdW5zaWduZWQgaW50IGlkOworCXVpbnQ2NF90IGlkOwogCWludCBlcnI7CiAKIAlmb3IgKGlkID0gMTsgaWQgPCBJU0NTSV9NQVhfRVBJRDsgaWQrKykgewpAQCAtMTg3LDcgKzE4Nyw4IEBACiAKIAllcC0+aWQgPSBpZDsKIAllcC0+ZGV2LmNsYXNzID0gJmlzY3NpX2VuZHBvaW50X2NsYXNzOwotCXNucHJpbnRmKGVwLT5kZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgImVwLSV1IiwgaWQpOworCXNucHJpbnRmKGVwLT5kZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgImVwLSVsbHUiLAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgaWQpOwogCWVyciA9IGRldmljZV9yZWdpc3RlcigmZXAtPmRldik7CiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICAgICAgZ290byBmcmVlX2VwOwpAQCAtMzc0LDEwICszNzUsMTAgQEAKIAkJZXJyID0gMDsKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9TRVNTSU9OX0ZBSUxFRDoKLQkJZXJyID0gRElEX0lNTV9SRVRSWSA8PCAxNjsKKwkJZXJyID0gRElEX1RSQU5TUE9SVF9ESVNSVVBURUQgPDwgMTY7CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfU0VTU0lPTl9GUkVFOgotCQllcnIgPSBESURfTk9fQ09OTkVDVCA8PCAxNjsKKwkJZXJyID0gRElEX1RSQU5TUE9SVF9GQUlMRkFTVCA8PCAxNjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJyID0gRElEX05PX0NPTk5FQ1QgPDwgMTY7CkBAIC0xMDEwLDcgKzEwMTEsNyBAQAogCiAJc2tiID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7CiAJaWYgKCFza2IpIHsKLQkJaXNjc2lfY29ubl9lcnJvcihjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOworCQlpc2NzaV9jb25uX2Vycm9yX2V2ZW50KGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CiAJCWlzY3NpX2Nsc19jb25uX3ByaW50ayhLRVJOX0VSUiwgY29ubiwgImNhbiBub3QgZGVsaXZlciAiCiAJCQkJICAgICAgImNvbnRyb2wgUERVOiBPT01cbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTEwMzEsNyArMTAzMiw3IEBACiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9yZWN2X3BkdSk7CiAKLXZvaWQgaXNjc2lfY29ubl9lcnJvcihzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4sIGVudW0gaXNjc2lfZXJyIGVycm9yKQordm9pZCBpc2NzaV9jb25uX2Vycm9yX2V2ZW50KHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwgZW51bSBpc2NzaV9lcnIgZXJyb3IpCiB7CiAJc3RydWN0IG5sbXNnaGRyCSpubGg7CiAJc3RydWN0IHNrX2J1ZmYJKnNrYjsKQEAgLTEwNjMsNyArMTA2NCw3IEBACiAJaXNjc2lfY2xzX2Nvbm5fcHJpbnRrKEtFUk5fSU5GTywgY29ubiwgImRldGVjdGVkIGNvbm4gZXJyb3IgKCVkKVxuIiwKIAkJCSAgICAgIGVycm9yKTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2Nvbm5fZXJyb3IpOworRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfY29ubl9lcnJvcl9ldmVudCk7CiAKIHN0YXRpYyBpbnQKIGlzY3NpX2lmX3NlbmRfcmVwbHkoaW50IHBpZCwgaW50IHNlcSwgaW50IHR5cGUsIGludCBkb25lLCBpbnQgbXVsdGksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3BpLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3BpLmMKaW5kZXggYjI5MzYwZS4uN2MyZDI4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NwaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcGkuYwpAQCAtMTA5LDcgKzEwOSw5IEBACiAJZm9yKGkgPSAwOyBpIDwgRFZfUkVUUklFUzsgaSsrKSB7CiAJCXJlc3VsdCA9IHNjc2lfZXhlY3V0ZShzZGV2LCBjbWQsIGRpciwgYnVmZmVyLCBidWZmbGVuLAogCQkJCSAgICAgIHNlbnNlLCBEVl9USU1FT1VULCAvKiByZXRyaWVzICovIDEsCi0JCQkJICAgICAgUkVRX0ZBSUxGQVNUKTsKKwkJCQkgICAgICBSRVFfRkFJTEZBU1RfREVWIHwKKwkJCQkgICAgICBSRVFfRkFJTEZBU1RfVFJBTlNQT1JUIHwKKwkJCQkgICAgICBSRVFfRkFJTEZBU1RfRFJJVkVSKTsKIAkJaWYgKHJlc3VsdCAmIERSSVZFUl9TRU5TRSkgewogCQkJc3RydWN0IHNjc2lfc2Vuc2VfaGRyIHNzaGRyX3RtcDsKIAkJCWlmICghc3NoZHIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2QuYyBiL2RyaXZlcnMvc2NzaS9zZC5jCmluZGV4IGE3YjUzYmUuLjdjNGQyZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9zZC5jCkBAIC0zODQsNyArMzg0LDcgQEAKIAlzZWN0b3JfdCBibG9jayA9IHJxLT5zZWN0b3I7CiAJc2VjdG9yX3QgdGhyZXNob2xkOwogCXVuc2lnbmVkIGludCB0aGlzX2NvdW50ID0gcnEtPm5yX3NlY3RvcnM7Ci0JaW50IHJldDsKKwlpbnQgcmV0LCBob3N0X2RpZjsKIAogCWlmIChycS0+Y21kX3R5cGUgPT0gUkVRX1RZUEVfQkxPQ0tfUEMpIHsKIAkJcmV0ID0gc2NzaV9zZXR1cF9ibGtfcGNfY21uZChzZHAsIHJxKTsKQEAgLTUxNSw3ICs1MTUsOCBAQAogCQkJCQlycS0+bnJfc2VjdG9ycykpOwogCiAJLyogU2V0IFJEUFJPVEVDVC9XUlBST1RFQ1QgaWYgZGlzayBpcyBmb3JtYXR0ZWQgd2l0aCBESUYgKi8KLQlpZiAoc2NzaV9ob3N0X2RpZl9jYXBhYmxlKHNkcC0+aG9zdCwgc2RrcC0+cHJvdGVjdGlvbl90eXBlKSkKKwlob3N0X2RpZiA9IHNjc2lfaG9zdF9kaWZfY2FwYWJsZShzZHAtPmhvc3QsIHNka3AtPnByb3RlY3Rpb25fdHlwZSk7CisJaWYgKGhvc3RfZGlmKQogCQlTQ3BudC0+Y21uZFsxXSA9IDEgPDwgNTsKIAllbHNlCiAJCVNDcG50LT5jbW5kWzFdID0gMDsKQEAgLTU3Myw4ICs1NzQsOSBAQAogCVNDcG50LT5zZGIubGVuZ3RoID0gdGhpc19jb3VudCAqIHNkcC0+c2VjdG9yX3NpemU7CiAKIAkvKiBJZiBESUYgb3IgRElYIGlzIGVuYWJsZWQsIHRlbGwgSEJBIGhvdyB0byBoYW5kbGUgcmVxdWVzdCAqLwotCWlmIChzZGtwLT5wcm90ZWN0aW9uX3R5cGUgfHwgc2NzaV9wcm90X3NnX2NvdW50KFNDcG50KSkKLQkJc2RfZGlmX29wKFNDcG50LCBzZGtwLT5wcm90ZWN0aW9uX3R5cGUsIHNjc2lfcHJvdF9zZ19jb3VudChTQ3BudCkpOworCWlmIChob3N0X2RpZiB8fCBzY3NpX3Byb3Rfc2dfY291bnQoU0NwbnQpKQorCQlzZF9kaWZfb3AoU0NwbnQsIGhvc3RfZGlmLCBzY3NpX3Byb3Rfc2dfY291bnQoU0NwbnQpLAorCQkJICBzZGtwLT5wcm90ZWN0aW9uX3R5cGUpOwogCiAJLyoKIAkgKiBXZSBzaG91bGRuJ3QgZGlzY29ubmVjdCBpbiB0aGUgbWlkZGxlIG9mIGEgc2VjdG9yLCBzbyB3aXRoIGEgZHVtYgpAQCAtMTI1MiwxNCArMTI1NCwxMiBAQAogCWVsc2UKIAkJdHlwZSA9ICgoYnVmZmVyWzEyXSA+PiAxKSAmIDcpICsgMTsgLyogUF9UWVBFIDAgPSBUeXBlIDEgKi8KIAorCXNka3AtPnByb3RlY3Rpb25fdHlwZSA9IHR5cGU7CisKIAlzd2l0Y2ggKHR5cGUpIHsKIAljYXNlIFNEX0RJRl9UWVBFMF9QUk9URUNUSU9OOgotCQlzZGtwLT5wcm90ZWN0aW9uX3R5cGUgPSAwOwotCQlicmVhazsKLQogCWNhc2UgU0RfRElGX1RZUEUxX1BST1RFQ1RJT046CiAJY2FzZSBTRF9ESUZfVFlQRTNfUFJPVEVDVElPTjoKLQkJc2RrcC0+cHJvdGVjdGlvbl90eXBlID0gdHlwZTsKIAkJYnJlYWs7CiAKIAljYXNlIFNEX0RJRl9UWVBFMl9QUk9URUNUSU9OOgpAQCAtMTI3Nyw3ICsxMjc3LDYgQEAKIAlyZXR1cm47CiAKIGRpc2FibGU6Ci0Jc2RrcC0+cHJvdGVjdGlvbl90eXBlID0gMDsKIAlzZGtwLT5jYXBhY2l0eSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5oIGIvZHJpdmVycy9zY3NpL3NkLmgKaW5kZXggOTViOWYwNi4uNzU2MzhlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmgKKysrIGIvZHJpdmVycy9zY3NpL3NkLmgKQEAgLTk3LDE5ICs5NywyOCBAQAogICAgICAgIF9fYmUzMiByZWZfdGFnOwkJLyogVGFyZ2V0IExCQSBvciBpbmRpcmVjdCBMQkEgKi8KIH07CiAKLSNpZiBkZWZpbmVkKENPTkZJR19CTEtfREVWX0lOVEVHUklUWSkKKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkKIAotZXh0ZXJuIHZvaWQgc2RfZGlmX29wKHN0cnVjdCBzY3NpX2NtbmQgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOworZXh0ZXJuIHZvaWQgc2RfZGlmX29wKHN0cnVjdCBzY3NpX2NtbmQgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CiBleHRlcm4gdm9pZCBzZF9kaWZfY29uZmlnX2hvc3Qoc3RydWN0IHNjc2lfZGlzayAqKTsKIGV4dGVybiBpbnQgc2RfZGlmX3ByZXBhcmUoc3RydWN0IHJlcXVlc3QgKnJxLCBzZWN0b3JfdCwgdW5zaWduZWQgaW50KTsKIGV4dGVybiB2b2lkIHNkX2RpZl9jb21wbGV0ZShzdHJ1Y3Qgc2NzaV9jbW5kICosIHVuc2lnbmVkIGludCk7CiAKICNlbHNlIC8qIENPTkZJR19CTEtfREVWX0lOVEVHUklUWSAqLwogCi0jZGVmaW5lIHNkX2RpZl9vcChhLCBiLCBjKQkJCWRvIHsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc2RfZGlmX2NvbmZpZ19ob3N0KGEpCQkJZG8geyB9IHdoaWxlICgwKQotI2RlZmluZSBzZF9kaWZfcHJlcGFyZShhLCBiLCBjKQkJCSgwKQotI2RlZmluZSBzZF9kaWZfY29tcGxldGUoYSwgYikJCQkoMCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZF9kaWZfb3Aoc3RydWN0IHNjc2lfY21uZCAqY21kLCB1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIsIHVuc2lnbmVkIGludCBjKQoreworfQorc3RhdGljIGlubGluZSB2b2lkIHNkX2RpZl9jb25maWdfaG9zdChzdHJ1Y3Qgc2NzaV9kaXNrICpkaXNrKQoreworfQorc3RhdGljIGlubGluZSBpbnQgc2RfZGlmX3ByZXBhcmUoc3RydWN0IHJlcXVlc3QgKnJxLCBzZWN0b3JfdCBzLCB1bnNpZ25lZCBpbnQgYSkKK3sKKwlyZXR1cm4gMDsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZF9kaWZfY29tcGxldGUoc3RydWN0IHNjc2lfY21uZCAqY21kLCB1bnNpZ25lZCBpbnQgYSkKK3sKK30KIAogI2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0lOVEVHUklUWSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2RfZGlmLmMgYi9kcml2ZXJzL3Njc2kvc2RfZGlmLmMKaW5kZXggNGQxN2YzZC4uM2ViYjFmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkX2RpZi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zZF9kaWYuYwpAQCAtMzExLDI2ICszMTEsMjcgQEAKIAlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCA9IHNka3AtPmRldmljZTsKIAlzdHJ1Y3QgZ2VuZGlzayAqZGlzayA9IHNka3AtPmRpc2s7CiAJdTggdHlwZSA9IHNka3AtPnByb3RlY3Rpb25fdHlwZTsKKwlpbnQgZGlmLCBkaXg7CiAKLQkvKiBJZiB0aGlzIEhCQSBkb2Vzbid0IHN1cHBvcnQgRElYLCByZXNvcnQgdG8gbm9ybWFsIEkvTyBvciBESUYgKi8KLQlpZiAoc2NzaV9ob3N0X2RpeF9jYXBhYmxlKHNkcC0+aG9zdCwgdHlwZSkgPT0gMCkgeworCWRpZiA9IHNjc2lfaG9zdF9kaWZfY2FwYWJsZShzZHAtPmhvc3QsIHR5cGUpOworCWRpeCA9IHNjc2lfaG9zdF9kaXhfY2FwYWJsZShzZHAtPmhvc3QsIHR5cGUpOwogCi0JCWlmICh0eXBlID09IFNEX0RJRl9UWVBFMF9QUk9URUNUSU9OKQotCQkJcmV0dXJuOwotCi0JCWlmIChzY3NpX2hvc3RfZGlmX2NhcGFibGUoc2RwLT5ob3N0LCB0eXBlKSA9PSAwKSB7Ci0JCQlzZF9wcmludGsoS0VSTl9JTkZPLCBzZGtwLCAiVHlwZSAlZCBwcm90ZWN0aW9uICIgXAotCQkJCSAgInVuc3VwcG9ydGVkIGJ5IEhCQS4gRGlzYWJsaW5nIERJRi5cbiIsIHR5cGUpOwotCQkJc2RrcC0+cHJvdGVjdGlvbl90eXBlID0gMDsKLQkJCXJldHVybjsKLQkJfQotCi0JCXNkX3ByaW50ayhLRVJOX0lORk8sIHNka3AsICJFbmFibGluZyBESUYgVHlwZSAlZCBwcm90ZWN0aW9uXG4iLAotCQkJICB0eXBlKTsKLQotCQlyZXR1cm47CisJaWYgKCFkaXggJiYgc2NzaV9ob3N0X2RpeF9jYXBhYmxlKHNkcC0+aG9zdCwgMCkpIHsKKwkJZGlmID0gMDsgZGl4ID0gMTsKIAl9CiAKKwlpZiAodHlwZSkgeworCQlpZiAoZGlmKQorCQkJc2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLAorCQkJCSAgIkVuYWJsaW5nIERJRiBUeXBlICVkIHByb3RlY3Rpb25cbiIsIHR5cGUpOworCQllbHNlCisJCQlzZF9wcmludGsoS0VSTl9OT1RJQ0UsIHNka3AsCisJCQkJICAiRGlzYWJsaW5nIERJRiBUeXBlICVkIHByb3RlY3Rpb25cbiIsIHR5cGUpOworCX0KKworCWlmICghZGl4KQorCQlyZXR1cm47CisKIAkvKiBFbmFibGUgRE1BIG9mIHByb3RlY3Rpb24gaW5mb3JtYXRpb24gKi8KIAlpZiAoc2NzaV9ob3N0X2dldF9ndWFyZChzZGtwLT5kZXZpY2UtPmhvc3QpICYgU0hPU1RfRElYX0dVQVJEX0lQKQogCQlpZiAodHlwZSA9PSBTRF9ESUZfVFlQRTNfUFJPVEVDVElPTikKQEAgLTM0MywxNyArMzQ0LDE3IEBACiAJCWVsc2UKIAkJCWJsa19pbnRlZ3JpdHlfcmVnaXN0ZXIoZGlzaywgJmRpZl90eXBlMV9pbnRlZ3JpdHlfY3JjKTsKIAotCXNkX3ByaW50ayhLRVJOX0lORk8sIHNka3AsCi0JCSAgIkVuYWJsaW5nICVzIGludGVncml0eSBwcm90ZWN0aW9uXG4iLCBkaXNrLT5pbnRlZ3JpdHktPm5hbWUpOworCXNkX3ByaW50ayhLRVJOX05PVElDRSwgc2RrcCwKKwkJICAiRW5hYmxpbmcgRElYICVzIHByb3RlY3Rpb25cbiIsIGRpc2stPmludGVncml0eS0+bmFtZSk7CiAKIAkvKiBTaWduYWwgdG8gYmxvY2sgbGF5ZXIgdGhhdCB3ZSBzdXBwb3J0IHNlY3RvciB0YWdnaW5nICovCi0JaWYgKHR5cGUgJiYgc2RrcC0+QVRPKSB7CisJaWYgKGRpZiAmJiB0eXBlICYmIHNka3AtPkFUTykgewogCQlpZiAodHlwZSA9PSBTRF9ESUZfVFlQRTNfUFJPVEVDVElPTikKIAkJCWRpc2stPmludGVncml0eS0+dGFnX3NpemUgPSBzaXplb2YodTE2KSArIHNpemVvZih1MzIpOwogCQllbHNlCiAJCQlkaXNrLT5pbnRlZ3JpdHktPnRhZ19zaXplID0gc2l6ZW9mKHUxNik7CiAKLQkJc2RfcHJpbnRrKEtFUk5fSU5GTywgc2RrcCwgIkRJRiBhcHBsaWNhdGlvbiB0YWcgc2l6ZSAldVxuIiwKKwkJc2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiRElGIGFwcGxpY2F0aW9uIHRhZyBzaXplICV1XG4iLAogCQkJICBkaXNrLT5pbnRlZ3JpdHktPnRhZ19zaXplKTsKIAl9CiB9CkBAIC0zNjEsNyArMzYyLDcgQEAKIC8qCiAgKiBESUYgRE1BIG9wZXJhdGlvbiBtYWdpYyBkZWNvZGVyIHJpbmcuCiAgKi8KLXZvaWQgc2RfZGlmX29wKHN0cnVjdCBzY3NpX2NtbmQgKnNjbWQsIHVuc2lnbmVkIGludCBkaWYsIHVuc2lnbmVkIGludCBkaXgpCit2b2lkIHNkX2RpZl9vcChzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLCB1bnNpZ25lZCBpbnQgZGlmLCB1bnNpZ25lZCBpbnQgZGl4LCB1bnNpZ25lZCBpbnQgdHlwZSkKIHsKIAlpbnQgY3N1bV9jb252ZXJ0LCBwcm90X29wOwogCkBAIC00MDYsNyArNDA3LDggQEAKIAl9CiAKIAlzY3NpX3NldF9wcm90X29wKHNjbWQsIHByb3Rfb3ApOwotCXNjc2lfc2V0X3Byb3RfdHlwZShzY21kLCBkaWYpOworCWlmIChkaWYpCisJCXNjc2lfc2V0X3Byb3RfdHlwZShzY21kLCB0eXBlKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3OWRlYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnCkBAIC0wLDAgKzEsNDYgQEAKK21lbnVjb25maWcgU1RBR0lORworCWJvb2wgIlN0YWdpbmcgZHJpdmVycyIKKwlkZWZhdWx0IG4KKwktLS1oZWxwLS0tCisJICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNlbGVjdCBhIG51bWJlciBvZiBkcml2ZXJzIHRoYXQgYXJlCisJICBub3Qgb2YgdGhlICJub3JtYWwiIExpbnV4IGtlcm5lbCBxdWFsaXR5IGxldmVsLiAgVGhlc2UgZHJpdmVycworCSAgYXJlIHBsYWNlZCBoZXJlIGluIG9yZGVyIHRvIGdldCBhIHdpZGVyIGF1ZGllbmNlIGZvciB1c2Ugb2YKKwkgIHRoZW0uICBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIGRyaXZlcnMgYXJlIHVuZGVyIGhlYXZ5CisJICBkZXZlbG9wbWVudCwgbWF5IG9yIG1heSBub3Qgd29yaywgYW5kIG1heSBjb250YWluIHVzZXJzcGFjZQorCSAgaW50ZXJmYWNlcyB0aGF0IG1vc3QgbGlrZWx5IHdpbGwgYmUgY2hhbmdlZCBpbiB0aGUgbmVhcgorCSAgZnV0dXJlLgorCisJICBVc2luZyBhbnkgb2YgdGhlc2UgZHJpdmVycyB3aWxsIHRhaW50IHlvdXIga2VybmVsIHdoaWNoIG1pZ2h0CisJICBhZmZlY3Qgc3VwcG9ydCBvcHRpb25zIGZyb20gYm90aCB0aGUgY29tbXVuaXR5LCBhbmQgdmFyaW91cworCSAgY29tbWVyY2lhbCBzdXBwb3J0IG9yZ2luaXphdGlvbnMuCisKKwkgIElmIHlvdSB3aXNoIHRvIHdvcmsgb24gdGhlc2UgZHJpdmVycywgdG8gaGVscCBpbXByb3ZlIHRoZW0sIG9yCisJICB0byByZXBvcnQgcHJvYmxlbXMgeW91IGhhdmUgd2l0aCB0aGVtLCBwbGVhc2Ugc2VlIHRoZQorCSAgZHJpdmVyX25hbWUuUkVBRE1FIGZpbGUgaW4gdGhlIGRyaXZlcnMvc3RhZ2luZy8gZGlyZWN0b3J5IHRvCisJICBzZWUgd2hhdCBuZWVkcyB0byBiZSB3b3JrZWQgb24sIGFuZCB3aG8gdG8gY29udGFjdC4KKworCSAgSWYgaW4gZG91YnQsIHNheSBOIGhlcmUuCisKK2lmIFNUQUdJTkcKKworc291cmNlICJkcml2ZXJzL3N0YWdpbmcvZXQxMzF4L0tjb25maWciCisKK3NvdXJjZSAiZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvS2NvbmZpZyIKKworc291cmNlICJkcml2ZXJzL3N0YWdpbmcvc3hnL0tjb25maWciCisKK3NvdXJjZSAiZHJpdmVycy9zdGFnaW5nL21lNDAwMC9LY29uZmlnIgorCitzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9nbzcwMDcvS2NvbmZpZyIKKworc291cmNlICJkcml2ZXJzL3N0YWdpbmcvdXNiaXAvS2NvbmZpZyIKKworc291cmNlICJkcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9LY29uZmlnIgorCitzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy93bGFuLW5nL0tjb25maWciCisKK3NvdXJjZSAiZHJpdmVycy9zdGFnaW5nL2VjaG8vS2NvbmZpZyIKKworc291cmNlICJkcml2ZXJzL3N0YWdpbmcvYXQ3Nl91c2IvS2NvbmZpZyIKKworZW5kaWYgIyBTVEFHSU5HCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1YmNhNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9NYWtlZmlsZQpAQCAtMCwwICsxLDE1IEBACisjIE1ha2VmaWxlIGZvciBzdGFnaW5nIGRpcmVjdG9yeQorCisjIGZpeCBmb3IgYnVpbGQgc3lzdGVtIGJ1Zy4uLgorb2JqLSQoQ09ORklHX1NUQUdJTkcpCQkrPSBzdGFnaW5nLm8KKworb2JqLSQoQ09ORklHX0VUMTMxWCkJCSs9IGV0MTMxeC8KK29iai0kKENPTkZJR19TTElDT1NTKQkJKz0gc2xpY29zcy8KK29iai0kKENPTkZJR19TWEcpCQkrPSBzeGcvCitvYmotJChDT05GSUdfTUU0MDAwKQkJKz0gbWU0MDAwLworb2JqLSQoQ09ORklHX1ZJREVPX0dPNzAwNykJKz0gZ283MDA3Lworb2JqLSQoQ09ORklHX1VTQl9JUF9DT01NT04pCSs9IHVzYmlwLworb2JqLSQoQ09ORklHX1czNVVORCkJCSs9IHdpbmJvbmQvCitvYmotJChDT05GSUdfUFJJU00yX1VTQikJKz0gd2xhbi1uZy8KK29iai0kKENPTkZJR19FQ0hPKQkJKz0gZWNoby8KK29iai0kKENPTkZJR19VU0JfQVRNRUwpCQkrPSBhdDc2X3VzYi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYwNmY5NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9LY29uZmlnCkBAIC0wLDAgKzEsOCBAQAorY29uZmlnIFVTQl9BVE1FTAorCXRyaXN0YXRlICJBdG1lbCBhdDc2YzUwMy9hdDc2YzUwNS9hdDc2YzUwNWEgVVNCIGNhcmRzIgorCWRlcGVuZHMgb24gV0xBTl84MDIxMSAmJiBVU0IKKwlkZWZhdWx0IE4KKwlzZWxlY3QgRldfTE9BREVSCisJLS0taGVscC0tLQorCSAgRW5hYmxlIHN1cHBvcnQgZm9yIFVTQiBXaXJlbGVzcyBkZXZpY2VzIHVzaW5nIEF0bWVsIGF0NzZjNTAzLAorCSAgYXQ3NmM1MDUgb3IgYXQ3NmM1MDVhIGNoaXBzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNDdlODgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXQ3Nl91c2IvTWFrZWZpbGUKQEAgLTAsMCArMSBAQAorb2JqLSQoQ09ORklHX1VTQl9BVE1FTCkJCSs9IGF0NzZfdXNiLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9UT0RPIGIvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL1RPRE8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxMWNhNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9UT0RPCkBAIC0wLDAgKzEsMiBAQAorcmV3cml0ZSB0aGUgZHJpdmVyIHRvIHVzZSB0aGUgcHJvcGVyIGluLWtlcm5lbCB3aXJlbGVzcyBzdGFjaworaW5zdGVhZCBvZiB1c2luZyBpdHMgb3duLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL2F0NzZfdXNiLmMgYi9kcml2ZXJzL3N0YWdpbmcvYXQ3Nl91c2IvYXQ3Nl91c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmRmMGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL2F0NzZfdXNiLmMKQEAgLTAsMCArMSw1NTU5IEBACisvKgorICogYXQ3NmM1MDMvYXQ3NmM1MDUgVVNCIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiAtIDIwMDMgT2xpdmVyIEt1cnRoCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgSm9lcmcgQWxiZXJ0IDxqb2VyZy5hbGJlcnRAZ214LmRlPgorICogQ29weXJpZ2h0IChjKSAyMDA0IE5pY2sgSm9uZXMKKyAqIENvcHlyaWdodCAoYykgMjAwNCBCYWxpbnQgU2VlYmVyIDxuMF81cDRtX3AxMzQ1M0Bob3RtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwNyBHdWlkbyBHdWVudGhlciA8YWd4QHNpZ3hjcHUub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEJlcmxpb3MgZHJpdmVyIGZvciBXTEFOIFVTQiBkZXZpY2VzIGJhc2VkIG9uIHRoZQorICogQXRtZWwgQVQ3NkM1MDNBLzUwNS81MDVBLgorICoKKyAqIFNvbWUgaXdfaGFuZGxlciBjb2RlIHdhcyB0YWtlbiBmcm9tIGFpcm8uYywgKEMpIDE5OTkgQmVuamFtaW4gUmVlZAorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorI2luY2x1ZGUgPG5ldC9pd19oYW5kbGVyLmg+CisjaW5jbHVkZSA8bmV0L2llZWU4MDIxMV9yYWRpb3RhcC5oPgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSA8bGludXgvbGVkcy5oPgorI2luY2x1ZGUgPG5ldC9pZWVlODAyMTEuaD4KKworI2luY2x1ZGUgImF0NzZfdXNiLmgiCisKKy8qIFZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgRFJJVkVSX05BTUUgImF0NzZfdXNiIgorI2RlZmluZSBEUklWRVJfVkVSU0lPTgkiMC4xNyIKKyNkZWZpbmUgRFJJVkVSX0RFU0MgIkF0bWVsIGF0NzZ4IFVTQiBXaXJlbGVzcyBMQU4gRHJpdmVyIgorCisvKiBhdDc2X2RlYnVnIGJpdHMgKi8KKyNkZWZpbmUgREJHX1BST0dSRVNTCQkweDAwMDAwMDAxCS8qIGF1dGhlbnRpY2F0aW9uL2FjY29jaWF0aW9uICovCisjZGVmaW5lIERCR19CU1NfVEFCTEUJCTB4MDAwMDAwMDIJLyogc2hvdyBCU1MgdGFibGUgYWZ0ZXIgc2NhbnMgKi8KKyNkZWZpbmUgREJHX0lPQ1RMCQkweDAwMDAwMDA0CS8qIGlvY3RsIGNhbGxzIC8gc2V0dGluZ3MgKi8KKyNkZWZpbmUgREJHX01BQ19TVEFURQkJMHgwMDAwMDAwOAkvKiBNQUMgc3RhdGUgdHJhbnNpdGlvbnMgKi8KKyNkZWZpbmUgREJHX1RYX0RBVEEJCTB4MDAwMDAwMTAJLyogdHggaGVhZGVyICovCisjZGVmaW5lIERCR19UWF9EQVRBX0NPTlRFTlQJMHgwMDAwMDAyMAkvKiB0eCBjb250ZW50ICovCisjZGVmaW5lIERCR19UWF9NR01UCQkweDAwMDAwMDQwCS8qIHR4IG1hbmFnZW1lbnQgKi8KKyNkZWZpbmUgREJHX1JYX0RBVEEJCTB4MDAwMDAwODAJLyogcnggZGF0YSBoZWFkZXIgKi8KKyNkZWZpbmUgREJHX1JYX0RBVEFfQ09OVEVOVAkweDAwMDAwMTAwCS8qIHJ4IGRhdGEgY29udGVudCAqLworI2RlZmluZSBEQkdfUlhfTUdNVAkJMHgwMDAwMDIwMAkvKiByeCBtZ210IGZyYW1lIGhlYWRlcnMgKi8KKyNkZWZpbmUgREJHX1JYX0JFQUNPTgkJMHgwMDAwMDQwMAkvKiByeCBiZWFjb24gKi8KKyNkZWZpbmUgREJHX1JYX0NUUkwJCTB4MDAwMDA4MDAJLyogcnggY29udHJvbCAqLworI2RlZmluZSBEQkdfUlhfTUdNVF9DT05URU5UCTB4MDAwMDEwMDAJLyogcnggbWdtdCBjb250ZW50ICovCisjZGVmaW5lIERCR19SWF9GUkFHUwkJMHgwMDAwMjAwMAkvKiByeCBkYXRhIGZyYWdtZW50IGhhbmRsaW5nICovCisjZGVmaW5lIERCR19ERVZTVEFSVAkJMHgwMDAwNDAwMAkvKiBmdyBkb3dubG9hZCwgZGV2aWNlIHN0YXJ0ICovCisjZGVmaW5lIERCR19VUkIJCQkweDAwMDA4MDAwCS8qIHJ4IHVyYiBzdGF0dXMsIC4uLiAqLworI2RlZmluZSBEQkdfUlhfQVRNRUxfSERSCTB4MDAwMTAwMDAJLyogQXRtZWwtc3BlY2lmaWMgUnggaGVhZGVycyAqLworI2RlZmluZSBEQkdfUFJPQ19FTlRSWQkJMHgwMDAyMDAwMAkvKiBwcm9jZWR1cmUgZW50cmllcy9leGl0cyAqLworI2RlZmluZSBEQkdfUE0JCQkweDAwMDQwMDAwCS8qIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3MgKi8KKyNkZWZpbmUgREJHX0JTU19NQVRDSAkJMHgwMDA4MDAwMAkvKiBCU1MgbWF0Y2ggZmFpbHVyZXMgKi8KKyNkZWZpbmUgREJHX1BBUkFNUwkJMHgwMDEwMDAwMAkvKiBzaG93IGNvbmZpZ3VyZWQgcGFyYW1ldGVycyAqLworI2RlZmluZSBEQkdfV0FJVF9DT01QTEVURQkweDAwMjAwMDAwCS8qIGNvbW1hbmQgY29tcGxldGlvbiAqLworI2RlZmluZSBEQkdfUlhfRlJBR1NfU0tCCTB4MDA0MDAwMDAJLyogc2tiIGhlYWRlciBvZiBSeCBmcmFnbWVudHMgKi8KKyNkZWZpbmUgREJHX0JTU19UQUJMRV9STQkweDAwODAwMDAwCS8qIHB1cmdpbmcgYnNzIHRhYmxlIGVudHJpZXMgKi8KKyNkZWZpbmUgREJHX01PTklUT1JfTU9ERQkweDAxMDAwMDAwCS8qIG1vbml0b3IgbW9kZSAqLworI2RlZmluZSBEQkdfTUlCCQkJMHgwMjAwMDAwMAkvKiBkdW1wIGFsbCBNSUJzIG9uIHN0YXJ0dXAgKi8KKyNkZWZpbmUgREJHX01HTVRfVElNRVIJCTB4MDQwMDAwMDAJLyogZHVtcCBtZ210X3RpbWVyIG9wcyAqLworI2RlZmluZSBEQkdfV0VfRVZFTlRTCQkweDA4MDAwMDAwCS8qIGR1bXAgd2lyZWxlc3MgZXZlbnRzICovCisjZGVmaW5lIERCR19GVwkJCTB4MTAwMDAwMDAJLyogZmlybXdhcmUgZG93bmxvYWQgKi8KKyNkZWZpbmUgREJHX0RGVQkJCTB4MjAwMDAwMDAJLyogZGV2aWNlIGZpcm13YXJlIHVwZ3JhZGUgKi8KKworI2RlZmluZSBEQkdfREVGQVVMVFMJCTAKKworLyogVXNlIG91ciBvd24gZGJnIG1hY3JvICovCisjZGVmaW5lIGF0NzZfZGJnKGJpdHMsIGZvcm1hdCwgYXJnLi4uKSBcCisJZG8geyBcCisJCWlmIChhdDc2X2RlYnVnICYgKGJpdHMpKSBcCisJCXByaW50ayhLRVJOX0RFQlVHIERSSVZFUl9OQU1FICI6ICIgZm9ybWF0ICJcbiIgLCAjIyBhcmcpOyBcCisJfSB3aGlsZSAoMCkKKworc3RhdGljIGludCBhdDc2X2RlYnVnID0gREJHX0RFRkFVTFRTOworCisvKiBQcm90ZWN0IGFnYWluc3QgY29uY3VycmVudCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBwYXJzaW5nICovCitzdGF0aWMgc3RydWN0IG11dGV4IGZ3X211dGV4OworCitzdGF0aWMgc3RydWN0IGZ3ZW50cnkgZmlybXdhcmVzW10gPSB7CisJWzBdID0geyIifSwKKwlbQk9BUkRfNTAzX0lTTDM4NjFdID0geyJhdG1lbF9hdDc2YzUwMy1pMzg2MS5iaW4ifSwKKwlbQk9BUkRfNTAzX0lTTDM4NjNdID0geyJhdG1lbF9hdDc2YzUwMy1pMzg2My5iaW4ifSwKKwlbQk9BUkRfNTAzXSA9IHsiYXRtZWxfYXQ3NmM1MDMtcmZtZC5iaW4ifSwKKwlbQk9BUkRfNTAzX0FDQ10gPSB7ImF0bWVsX2F0NzZjNTAzLXJmbWQtYWNjLmJpbiJ9LAorCVtCT0FSRF81MDVdID0geyJhdG1lbF9hdDc2YzUwNS1yZm1kLmJpbiJ9LAorCVtCT0FSRF81MDVfMjk1OF0gPSB7ImF0bWVsX2F0NzZjNTA1LXJmbWQyOTU4LmJpbiJ9LAorCVtCT0FSRF81MDVBXSA9IHsiYXRtZWxfYXQ3NmM1MDVhLXJmbWQyOTU4LmJpbiJ9LAorCVtCT0FSRF81MDVBTVhdID0geyJhdG1lbF9hdDc2YzUwNWFteC1yZm1kLmJpbiJ9LAorfTsKKworI2RlZmluZSBVU0JfREVWSUNFX0RBVEEoX19vcHMpCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkoX19vcHMpCisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBkZXZfdGFibGVbXSA9IHsKKwkvKgorCSAqIGF0NzZjNTAzLWkzODYxCisJICovCisJLyogR2VuZXJpYyBBVDc2QzUwMy8zODYxIGRldmljZSAqLworCXtVU0JfREVWSUNFKDB4MDNlYiwgMHg3NjAzKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogTGlua3N5cyBXVVNCMTEgdjIuMS92Mi42ICovCisJe1VTQl9ERVZJQ0UoMHgwNjZiLCAweDIyMTEpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzX0lTTDM4NjEpfSwKKwkvKiBOZXRnZWFyIE1BMTAxIHJldi4gQSAqLworCXtVU0JfREVWSUNFKDB4MDg2NCwgMHg0MTAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogVGVrcmFtIFUzMDBDIC8gQWxsbmV0IEFMTDAxOTMgKi8KKwl7VVNCX0RFVklDRSgweDBiM2IsIDB4MTYxMiksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfSVNMMzg2MSl9LAorCS8qIEhQIEhOMjEwVyBKNzgwMUEgKi8KKwl7VVNCX0RFVklDRSgweDAzZjAsIDB4MDExYyksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfSVNMMzg2MSl9LAorCS8qIFNpdGVjb20vWi1Db20vWnl4ZWwgTTRZLTc1MCAqLworCXtVU0JfREVWSUNFKDB4MGNkZSwgMHgwMDAxKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogRHluYWxpbmsvQXNrZXkgV0xMMDEzIChpbnRlcnNpbCkgKi8KKwl7VVNCX0RFVklDRSgweDA2OWEsIDB4MDMyMCksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfSVNMMzg2MSl9LAorCS8qIEVaIGNvbm5lY3QgMTFNcGJzIFdpcmVsZXNzIFVTQiBBZGFwdGVyIFNNQzI2NjJXIHYxICovCisJe1VTQl9ERVZJQ0UoMHgwZDVjLCAweGEwMDEpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzX0lTTDM4NjEpfSwKKwkvKiBCZW5RIEFXTDMwMCAqLworCXtVU0JfREVWSUNFKDB4MDRhNSwgMHg5MDAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogQWRkdHJvbiBBV1UtMTIwLCBDb21wZXggV0xVMTEgKi8KKwl7VVNCX0RFVklDRSgweDA1ZGQsIDB4ZmYzMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfSVNMMzg2MSl9LAorCS8qIEludGVsIEFQMzEwIEFueVBvaW50IElJIFVTQiAqLworCXtVU0JfREVWSUNFKDB4ODA4NiwgMHgwMjAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogRHluYWxpbmsgTDExVSAqLworCXtVU0JfREVWSUNFKDB4MGQ4ZSwgMHg3MTAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYxKX0sCisJLyogQXJlc2NvbSBXTC0yMTAsIEZDQyBpZCAwN0otR0wyNDExVVNCICovCisJe1VTQl9ERVZJQ0UoMHgwZDhlLCAweDcxMTApLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzX0lTTDM4NjEpfSwKKwkvKiBJLU8gREFUQSBXTi1CMTEvVVNCICovCisJe1VTQl9ERVZJQ0UoMHgwNGJiLCAweDA5MTkpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzX0lTTDM4NjEpfSwKKwkvKiBCVCBWb3lhZ2VyIDEwMTAgKi8KKwl7VVNCX0RFVklDRSgweDA2OWEsIDB4MDgyMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfSVNMMzg2MSl9LAorCS8qCisJICogYXQ3NmM1MDMtaTM4NjMKKwkgKi8KKwkvKiBHZW5lcmljIEFUNzZDNTAzLzM4NjMgZGV2aWNlICovCisJe1VTQl9ERVZJQ0UoMHgwM2ViLCAweDc2MDQpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzX0lTTDM4NjMpfSwKKwkvKiBTYW1zdW5nIFNXTC0yMTAwVSAqLworCXtVU0JfREVWSUNFKDB4MDU1ZCwgMHhhMDAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19JU0wzODYzKX0sCisJLyoKKwkgKiBhdDc2YzUwMy1yZm1kCisJICovCisJLyogR2VuZXJpYyBBVDc2QzUwMy9SRk1EIGRldmljZSAqLworCXtVU0JfREVWSUNFKDB4MDNlYiwgMHg3NjA1KSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIER5bmFsaW5rL0Fza2V5IFdMTDAxMyAocmZtZCkgKi8KKwl7VVNCX0RFVklDRSgweDA2OWEsIDB4MDMyMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBMaW5rc3lzIFdVU0IxMSB2Mi42ICovCisJe1VTQl9ERVZJQ0UoMHgwNzdiLCAweDIyMTkpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogTmV0d29yayBFdmVyeXdoZXJlIE5XVTExQiAqLworCXtVU0JfREVWSUNFKDB4MDc3YiwgMHgyMjI3KSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIE5ldGdlYXIgTUExMDEgcmV2LiBCICovCisJe1VTQl9ERVZJQ0UoMHgwODY0LCAweDQxMDIpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogRC1MaW5rIERXTC0xMjAgcmV2LiBFICovCisJe1VTQl9ERVZJQ0UoMHgyMDAxLCAweDMyMDApLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogQWN0aW9udGVjIDgwMlVBVDEsIEhXVTAxMTUwLTAxVUsgKi8KKwl7VVNCX0RFVklDRSgweDE2NjgsIDB4NzYwNSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBBaXJWYXN0IFctQnVkZGllIFdOMjEwICovCisJe1VTQl9ERVZJQ0UoMHgwM2ViLCAweDQxMDIpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogRGljayBTbWl0aCBFbGVjdHJvbmljcyBYSDExNTMgODAyLjExYiBVU0IgYWRhcHRlciAqLworCXtVU0JfREVWSUNFKDB4MTM3MSwgMHg1NzQzKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIENOZXQgQ05VU0I2MTEgKi8KKwl7VVNCX0RFVklDRSgweDEzNzEsIDB4MDAwMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBGaWJlckxpbmUgRkwtV0wyMDBVICovCisJe1VTQl9ERVZJQ0UoMHgxMzcxLCAweDAwMDIpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogQmVuUSBBV0w0MDAgVVNCIHN0aWNrICovCisJe1VTQl9ERVZJQ0UoMHgwNGE1LCAweDkwMDEpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogM0NvbSAzQ1JTSEVXNjk2ICovCisJe1VTQl9ERVZJQ0UoMHgwNTA2LCAweDBhMDEpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogU2llbWVucyBTYW50aXMgQURTTCBXTEFOIFVTQiBhZGFwdGVyIFdMTCAwMTMgKi8KKwl7VVNCX0RFVklDRSgweDA2ODEsIDB4MDAxYiksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBCZWxraW4gRjVENjA1MCwgdmVyc2lvbiAyICovCisJe1VTQl9ERVZJQ0UoMHgwNTBkLCAweDAwNTApLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTAzKX0sCisJLyogaUJsaXR6eiwgQldVNjEzIChub3QgKkIgb3IgKlNCKSAqLworCXtVU0JfREVWSUNFKDB4MDdiOCwgMHhiMDAwKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIEdpZ2FieXRlIEdOLVdMQk0xMDEgKi8KKwl7VVNCX0RFVklDRSgweDEwNDQsIDB4ODAwMyksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBQbGFuZXggR1ctVVMxMVMgKi8KKwl7VVNCX0RFVklDRSgweDIwMTksIDB4MzIyMCksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBJbnRlcm5hbCBXTEFOIGFkYXB0ZXIgaW4gaDVbNCw1XXh4IHNlcmllcyBpUEFRcyAqLworCXtVU0JfREVWSUNFKDB4MDQ5ZiwgMHgwMDMyKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIENvcmVnYSBXaXJlbGVzcyBMQU4gVVNCLTExIG1pbmkgKi8KKwl7VVNCX0RFVklDRSgweDA3YWEsIDB4MDAxMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKiBDb3JlZ2EgV2lyZWxlc3MgTEFOIFVTQi0xMSBtaW5pMiAqLworCXtVU0JfREVWSUNFKDB4MDdhYSwgMHgwMDE4KSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwMyl9LAorCS8qIFVuaWRlbiBQQ1cxMDAgKi8KKwl7VVNCX0RFVklDRSgweDA1ZGQsIDB4ZmYzNSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDMpfSwKKwkvKgorCSAqIGF0NzZjNTAzLXJmbWQtYWNjCisJICovCisJLyogU01DMjY2NFcgKi8KKwl7VVNCX0RFVklDRSgweDA4M2EsIDB4MzUwMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDNfQUNDKX0sCisJLyogQmVsa2luIEY1RDYwNTAsIFNNQzI2NjJXIHYyLCBTTUMyNjYyVy1BUiAqLworCXtVU0JfREVWSUNFKDB4MGQ1YywgMHhhMDAyKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwM19BQ0MpfSwKKwkvKgorCSAqIGF0NzZjNTA1LXJmbWQKKwkgKi8KKwkvKiBHZW5lcmljIEFUNzZDNTA1L1JGTUQgKi8KKwl7VVNCX0RFVklDRSgweDAzZWIsIDB4NzYwNiksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDUpfSwKKwkvKgorCSAqIGF0NzZjNTA1LXJmbWQyOTU4CisJICovCisJLyogR2VuZXJpYyBBVDc2QzUwNS9SRk1ELCBPdmlzTGluayBXTC0xMTMwVVNCICovCisJe1VTQl9ERVZJQ0UoMHgwM2ViLCAweDc2MTMpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1XzI5NTgpfSwKKwkvKiBGaWJlcmxpbmUgRkwtV0wyNDBVICovCisJe1VTQl9ERVZJQ0UoMHgxMzcxLCAweDAwMTQpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1XzI5NTgpfSwKKwkvKiBDTmV0IENOVVNCLTYxMUcgKi8KKwl7VVNCX0RFVklDRSgweDEzNzEsIDB4MDAxMyksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDVfMjk1OCl9LAorCS8qIExpbmtzeXMgV1VTQjExIHYyLjggKi8KKwl7VVNCX0RFVklDRSgweDE5MTUsIDB4MjIzMyksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDVfMjk1OCl9LAorCS8qIFh0ZXJhc3lzIFhOLTIxMjJCLCBJQmxpdHp6IEJXVTYxM0IvQldVNjEzU0IgKi8KKwl7VVNCX0RFVklDRSgweDEyZmQsIDB4MTAwMSksIFVTQl9ERVZJQ0VfREFUQShCT0FSRF81MDVfMjk1OCl9LAorCS8qIENvcmVnYSBXTEFOIFVTQiBTdGljayAxMSAqLworCXtVU0JfREVWSUNFKDB4MDdhYSwgMHg3NjEzKSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwNV8yOTU4KX0sCisJLyogTWljcm9zdGFyIE1TSSBCb3ggTVM2OTc4ICovCisJe1VTQl9ERVZJQ0UoMHgwZGIwLCAweDEwMjApLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1XzI5NTgpfSwKKwkvKgorCSAqIGF0NzZjNTA1YS1yZm1kMjk1OAorCSAqLworCS8qIEdlbmVyaWMgQVQ3NkM1MDVBIGRldmljZSAqLworCXtVU0JfREVWSUNFKDB4MDNlYiwgMHg3NjE0KSwgVVNCX0RFVklDRV9EQVRBKEJPQVJEXzUwNUEpfSwKKwkvKiBHZW5lcmljIEFUNzZDNTA1QVMgZGV2aWNlICovCisJe1VTQl9ERVZJQ0UoMHgwM2ViLCAweDc2MTcpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1QSl9LAorCS8qIFNpZW1lbnMgR2lnYXNldCBVU0IgV0xBTiBBZGFwdGVyIDExICovCisJe1VTQl9ERVZJQ0UoMHgxNjkwLCAweDA3MDEpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1QSl9LAorCS8qCisJICogYXQ3NmM1MDVhbXgtcmZtZAorCSAqLworCS8qIEdlbmVyaWMgQVQ3NkM1MDVBTVggZGV2aWNlICovCisJe1VTQl9ERVZJQ0UoMHgwM2ViLCAweDc2MTUpLCBVU0JfREVWSUNFX0RBVEEoQk9BUkRfNTA1QU1YKX0sCisJe30KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBkZXZfdGFibGUpOworCisvKiBTdXBwb3J0ZWQgcmF0ZXMgb2YgdGhpcyBoYXJkd2FyZSwgYml0IDcgbWFya3MgYmFzaWMgcmF0ZXMgKi8KK3N0YXRpYyBjb25zdCB1OCBod19yYXRlc1tdID0geyAweDgyLCAweDg0LCAweDBiLCAweDE2IH07CisKKy8qIEZyZXF1ZW5jeSBvZiBlYWNoIGNoYW5uZWwgaW4gTUh6ICovCitzdGF0aWMgY29uc3QgbG9uZyBjaGFubmVsX2ZyZXF1ZW5jeVtdID0geworCTI0MTIsIDI0MTcsIDI0MjIsIDI0MjcsIDI0MzIsIDI0MzcsIDI0NDIsCisJMjQ0NywgMjQ1MiwgMjQ1NywgMjQ2MiwgMjQ2NywgMjQ3MiwgMjQ4NAorfTsKKworI2RlZmluZSBOVU1fQ0hBTk5FTFMgQVJSQVlfU0laRShjaGFubmVsX2ZyZXF1ZW5jeSkKKworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHByZWFtYmxlc1tdID0geyAibG9uZyIsICJzaG9ydCIsICJhdXRvIiB9OworCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbWFjX3N0YXRlc1tdID0geworCVtNQUNfSU5JVF0gPSAiSU5JVCIsCisJW01BQ19TQ0FOTklOR10gPSAiU0NBTk5JTkciLAorCVtNQUNfQVVUSF0gPSAiQVVUSCIsCisJW01BQ19BU1NPQ10gPSAiQVNTT0MiLAorCVtNQUNfSk9JTklOR10gPSAiSk9JTklORyIsCisJW01BQ19DT05ORUNURURdID0gIkNPTk5FQ1RFRCIsCisJW01BQ19PV05fSUJTU10gPSAiT1dOX0lCU1MiCit9OworCisvKiBGaXJtd2FyZSBkb3dubG9hZCAqLworLyogREZVIHN0YXRlcyAqLworI2RlZmluZSBTVEFURV9JRExFCQkJMHgwMAorI2RlZmluZSBTVEFURV9ERVRBQ0gJCQkweDAxCisjZGVmaW5lIFNUQVRFX0RGVV9JRExFCQkJMHgwMgorI2RlZmluZSBTVEFURV9ERlVfRE9XTkxPQURfU1lOQwkJMHgwMworI2RlZmluZSBTVEFURV9ERlVfRE9XTkxPQURfQlVTWQkJMHgwNAorI2RlZmluZSBTVEFURV9ERlVfRE9XTkxPQURfSURMRQkJMHgwNQorI2RlZmluZSBTVEFURV9ERlVfTUFOSUZFU1RfU1lOQwkJMHgwNgorI2RlZmluZSBTVEFURV9ERlVfTUFOSUZFU1QJCTB4MDcKKyNkZWZpbmUgU1RBVEVfREZVX01BTklGRVNUX1dBSVRfUkVTRVQJMHgwOAorI2RlZmluZSBTVEFURV9ERlVfVVBMT0FEX0lETEUJCTB4MDkKKyNkZWZpbmUgU1RBVEVfREZVX0VSUk9SCQkJMHgwYQorCisvKiBERlUgY29tbWFuZHMgKi8KKyNkZWZpbmUgREZVX0RFVEFDSAkJCTAKKyNkZWZpbmUgREZVX0ROTE9BRAkJCTEKKyNkZWZpbmUgREZVX1VQTE9BRAkJCTIKKyNkZWZpbmUgREZVX0dFVFNUQVRVUwkJCTMKKyNkZWZpbmUgREZVX0NMUlNUQVRVUwkJCTQKKyNkZWZpbmUgREZVX0dFVFNUQVRFCQkJNQorI2RlZmluZSBERlVfQUJPUlQJCQk2CisKKyNkZWZpbmUgRldfQkxPQ0tfU0laRSAxMDI0CisKK3N0cnVjdCBkZnVfc3RhdHVzIHsKKwl1bnNpZ25lZCBjaGFyIHN0YXR1czsKKwl1bnNpZ25lZCBjaGFyIHBvbGxfdGltZW91dFszXTsKKwl1bnNpZ25lZCBjaGFyIHN0YXRlOworCXVuc2lnbmVkIGNoYXIgc3RyaW5nOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RhdGljIGlubGluZSBpbnQgYXQ3Nl9pc19pbnRlcnNpbChlbnVtIGJvYXJkX3R5cGUgYm9hcmQpCit7CisJcmV0dXJuIChib2FyZCA9PSBCT0FSRF81MDNfSVNMMzg2MSB8fCBib2FyZCA9PSBCT0FSRF81MDNfSVNMMzg2Myk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfaXNfNTAzcmZtZChlbnVtIGJvYXJkX3R5cGUgYm9hcmQpCit7CisJcmV0dXJuIChib2FyZCA9PSBCT0FSRF81MDMgfHwgYm9hcmQgPT0gQk9BUkRfNTAzX0FDQyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfaXNfNTA1YShlbnVtIGJvYXJkX3R5cGUgYm9hcmQpCit7CisJcmV0dXJuIChib2FyZCA9PSBCT0FSRF81MDVBIHx8IGJvYXJkID09IEJPQVJEXzUwNUFNWCk7Cit9CisKKy8qIExvYWQgYSBibG9jayBvZiB0aGUgZmlyc3QgKGludGVybmFsKSBwYXJ0IG9mIHRoZSBmaXJtd2FyZSAqLworc3RhdGljIGludCBhdDc2X2xvYWRfaW50X2Z3X2Jsb2NrKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCBpbnQgYmxvY2tubywKKwkJCQkgIHZvaWQgKmJsb2NrLCBpbnQgc2l6ZSkKK3sKKwlyZXR1cm4gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSwgREZVX0ROTE9BRCwKKwkJCSAgICAgICBVU0JfVFlQRV9DTEFTUyB8IFVTQl9ESVJfT1VUIHwKKwkJCSAgICAgICBVU0JfUkVDSVBfSU5URVJGQUNFLCBibG9ja25vLCAwLCBibG9jaywgc2l6ZSwKKwkJCSAgICAgICBVU0JfQ1RSTF9HRVRfVElNRU9VVCk7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9kZnVfZ2V0X3N0YXR1cyhzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKKwkJCSAgICAgICBzdHJ1Y3QgZGZ1X3N0YXR1cyAqc3RhdHVzKQoreworCWludCByZXQ7CisKKwlyZXQgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDApLCBERlVfR0VUU1RBVFVTLAorCQkJICAgICAgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfRElSX0lOIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKKwkJCSAgICAgIDAsIDAsIHN0YXR1cywgc2l6ZW9mKHN0cnVjdCBkZnVfc3RhdHVzKSwKKwkJCSAgICAgIFVTQl9DVFJMX0dFVF9USU1FT1VUKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdTggYXQ3Nl9kZnVfZ2V0X3N0YXRlKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB1OCAqc3RhdGUpCit7CisJaW50IHJldDsKKworCXJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksIERGVV9HRVRTVEFURSwKKwkJCSAgICAgIFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RJUl9JTiB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCQkgICAgICAwLCAwLCBzdGF0ZSwgMSwgVVNCX0NUUkxfR0VUX1RJTUVPVVQpOworCXJldHVybiByZXQ7Cit9CisKKy8qIENvbnZlcnQgdGltZW91dCBmcm9tIHRoZSBERlUgc3RhdHVzIHRvIGppZmZpZXMgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBhdDc2X2dldF90aW1lb3V0KHN0cnVjdCBkZnVfc3RhdHVzICpzKQoreworCXJldHVybiBtc2Vjc190b19qaWZmaWVzKChzLT5wb2xsX3RpbWVvdXRbMl0gPDwgMTYpCisJCQkJfCAocy0+cG9sbF90aW1lb3V0WzFdIDw8IDgpCisJCQkJfCAocy0+cG9sbF90aW1lb3V0WzBdKSk7Cit9CisKKy8qIExvYWQgaW50ZXJuYWwgZmlybXdhcmUgZnJvbSB0aGUgYnVmZmVyLiAgSWYgbWFuaWZlc3Rfc3luY190aW1lb3V0ID4gMCwgdXNlCisgKiBpdHMgdmFsdWUgaW4gamlmZmllcyBpbiB0aGUgTUFOSUZFU1RfU1lOQyBzdGF0ZS4gICovCitzdGF0aWMgaW50IGF0NzZfdXNiZGZ1X2Rvd25sb2FkKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB1OCAqYnVmLCB1MzIgc2l6ZSwKKwkJCQlpbnQgbWFuaWZlc3Rfc3luY190aW1lb3V0KQoreworCXU4ICpibG9jazsKKwlzdHJ1Y3QgZGZ1X3N0YXR1cyBkZnVfc3RhdF9idWY7CisJaW50IHJldCA9IDA7CisJaW50IG5lZWRfZGZ1X3N0YXRlID0gMTsKKwlpbnQgaXNfZG9uZSA9IDA7CisJdTggZGZ1X3N0YXRlID0gMDsKKwl1MzIgZGZ1X3RpbWVvdXQgPSAwOworCWludCBic2l6ZSA9IDA7CisJaW50IGJsb2Nrbm8gPSAwOworCisJYXQ3Nl9kYmcoREJHX0RGVSwgIiVzKCAlcCwgJXUsICVkKSIsIF9fZnVuY19fLCBidWYsIHNpemUsCisJCSBtYW5pZmVzdF9zeW5jX3RpbWVvdXQpOworCisJaWYgKCFzaXplKSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsICJGVyBidWZmZXIgbGVuZ3RoIGludmFsaWQhXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYmxvY2sgPSBrbWFsbG9jKEZXX0JMT0NLX1NJWkUsIEdGUF9LRVJORUwpOworCWlmICghYmxvY2spCisJCXJldHVybiAtRU5PTUVNOworCisJZG8geworCQlpZiAobmVlZF9kZnVfc3RhdGUpIHsKKwkJCXJldCA9IGF0NzZfZGZ1X2dldF9zdGF0ZSh1ZGV2LCAmZGZ1X3N0YXRlKTsKKwkJCWlmIChyZXQgPCAwKSB7CisJCQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJnVkZXYtPmRldiwKKwkJCQkJICAgImNhbm5vdCBnZXQgREZVIHN0YXRlOiAlZFxuIiwgcmV0KTsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCQluZWVkX2RmdV9zdGF0ZSA9IDA7CisJCX0KKworCQlzd2l0Y2ggKGRmdV9zdGF0ZSkgeworCQljYXNlIFNUQVRFX0RGVV9ET1dOTE9BRF9TWU5DOgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIlNUQVRFX0RGVV9ET1dOTE9BRF9TWU5DIik7CisJCQlyZXQgPSBhdDc2X2RmdV9nZXRfc3RhdHVzKHVkZXYsICZkZnVfc3RhdF9idWYpOworCQkJaWYgKHJldCA+PSAwKSB7CisJCQkJZGZ1X3N0YXRlID0gZGZ1X3N0YXRfYnVmLnN0YXRlOworCQkJCWRmdV90aW1lb3V0ID0gYXQ3Nl9nZXRfdGltZW91dCgmZGZ1X3N0YXRfYnVmKTsKKwkJCQluZWVkX2RmdV9zdGF0ZSA9IDA7CisJCQl9IGVsc2UKKwkJCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmdWRldi0+ZGV2LAorCQkJCQkgICAiYXQ3Nl9kZnVfZ2V0X3N0YXR1cyByZXR1cm5lZCAlZFxuIiwKKwkJCQkJICAgcmV0KTsKKwkJCWJyZWFrOworCisJCWNhc2UgU1RBVEVfREZVX0RPV05MT0FEX0JVU1k6CisJCQlhdDc2X2RiZyhEQkdfREZVLCAiU1RBVEVfREZVX0RPV05MT0FEX0JVU1kiKTsKKwkJCW5lZWRfZGZ1X3N0YXRlID0gMTsKKworCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIkRGVTogUmVzZXR0aW5nIGRldmljZSIpOworCQkJc2NoZWR1bGVfdGltZW91dF9pbnRlcnJ1cHRpYmxlKGRmdV90aW1lb3V0KTsKKwkJCWJyZWFrOworCisJCWNhc2UgU1RBVEVfREZVX0RPV05MT0FEX0lETEU6CisJCQlhdDc2X2RiZyhEQkdfREZVLCAiRE9XTkxPQUQuLi4iKTsKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFNUQVRFX0RGVV9JRExFOgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIkRGVSBJRExFIik7CisKKwkJCWJzaXplID0gbWluX3QoaW50LCBzaXplLCBGV19CTE9DS19TSVpFKTsKKwkJCW1lbWNweShibG9jaywgYnVmLCBic2l6ZSk7CisJCQlhdDc2X2RiZyhEQkdfREZVLCAiaW50IGZ3LCBzaXplIGxlZnQgPSAlNWQsICIKKwkJCQkgImJzaXplID0gJTRkLCBibG9ja25vID0gJTJkIiwgc2l6ZSwgYnNpemUsCisJCQkJIGJsb2Nrbm8pOworCQkJcmV0ID0KKwkJCSAgICBhdDc2X2xvYWRfaW50X2Z3X2Jsb2NrKHVkZXYsIGJsb2Nrbm8sIGJsb2NrLCBic2l6ZSk7CisJCQlidWYgKz0gYnNpemU7CisJCQlzaXplIC09IGJzaXplOworCQkJYmxvY2tubysrOworCisJCQlpZiAocmV0ICE9IGJzaXplKQorCQkJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkJCSAgICJhdDc2X2xvYWRfaW50X2Z3X2Jsb2NrICIKKwkJCQkJICAgInJldHVybmVkICVkXG4iLCByZXQpOworCQkJbmVlZF9kZnVfc3RhdGUgPSAxOworCQkJYnJlYWs7CisKKwkJY2FzZSBTVEFURV9ERlVfTUFOSUZFU1RfU1lOQzoKKwkJCWF0NzZfZGJnKERCR19ERlUsICJTVEFURV9ERlVfTUFOSUZFU1RfU1lOQyIpOworCisJCQlyZXQgPSBhdDc2X2RmdV9nZXRfc3RhdHVzKHVkZXYsICZkZnVfc3RhdF9idWYpOworCQkJaWYgKHJldCA8IDApCisJCQkJYnJlYWs7CisKKwkJCWRmdV9zdGF0ZSA9IGRmdV9zdGF0X2J1Zi5zdGF0ZTsKKwkJCWRmdV90aW1lb3V0ID0gYXQ3Nl9nZXRfdGltZW91dCgmZGZ1X3N0YXRfYnVmKTsKKwkJCW5lZWRfZGZ1X3N0YXRlID0gMDsKKworCQkJLyogb3ZlcnJpZGUgdGhlIHRpbWVvdXQgZnJvbSB0aGUgc3RhdHVzIHJlc3BvbnNlLAorCQkJICAgbmVlZGVkIGZvciBBVDc2QzUwNUEgKi8KKwkJCWlmIChtYW5pZmVzdF9zeW5jX3RpbWVvdXQgPiAwKQorCQkJCWRmdV90aW1lb3V0ID0gbWFuaWZlc3Rfc3luY190aW1lb3V0OworCisJCQlhdDc2X2RiZyhEQkdfREZVLCAiREZVOiBXYWl0aW5nIGZvciBtYW5pZmVzdCBwaGFzZSIpOworCQkJc2NoZWR1bGVfdGltZW91dF9pbnRlcnJ1cHRpYmxlKGRmdV90aW1lb3V0KTsKKwkJCWJyZWFrOworCisJCWNhc2UgU1RBVEVfREZVX01BTklGRVNUOgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIlNUQVRFX0RGVV9NQU5JRkVTVCIpOworCQkJaXNfZG9uZSA9IDE7CisJCQlicmVhazsKKworCQljYXNlIFNUQVRFX0RGVV9NQU5JRkVTVF9XQUlUX1JFU0VUOgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIlNUQVRFX0RGVV9NQU5JRkVTVF9XQUlUX1JFU0VUIik7CisJCQlpc19kb25lID0gMTsKKwkJCWJyZWFrOworCisJCWNhc2UgU1RBVEVfREZVX1VQTE9BRF9JRExFOgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIlNUQVRFX0RGVV9VUExPQURfSURMRSIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTVEFURV9ERlVfRVJST1I6CisJCQlhdDc2X2RiZyhEQkdfREZVLCAiU1RBVEVfREZVX0VSUk9SIik7CisJCQlyZXQgPSAtRVBJUEU7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYXQ3Nl9kYmcoREJHX0RGVSwgIkRGVSBVTktOT1dOIFNUQVRFICglZCkiLCBkZnVfc3RhdGUpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9CisJfSB3aGlsZSAoIWlzX2RvbmUgJiYgKHJldCA+PSAwKSk7CisKK2V4aXQ6CisJa2ZyZWUoYmxvY2spOworCWlmIChyZXQgPj0gMCkKKwkJcmV0ID0gMDsKKworCXJldHVybiByZXQ7Cit9CisKKy8qIFJlcG9ydCB0aGF0IHRoZSBzY2FuIHJlc3VsdHMgYXJlIHJlYWR5ICovCitzdGF0aWMgaW5saW5lIHZvaWQgYXQ3Nl9pd2V2ZW50X3NjYW5fY29tcGxldGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwl1bmlvbiBpd3JlcV9kYXRhIHdycXU7CisJd3JxdS5kYXRhLmxlbmd0aCA9IDA7CisJd3JxdS5kYXRhLmZsYWdzID0gMDsKKwl3aXJlbGVzc19zZW5kX2V2ZW50KG5ldGRldiwgU0lPQ0dJV1NDQU4sICZ3cnF1LCBOVUxMKTsKKwlhdDc2X2RiZyhEQkdfV0VfRVZFTlRTLCAiJXM6IFNJT0NHSVdTQ0FOIHNlbnQiLCBuZXRkZXYtPm5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXQ3Nl9pd2V2ZW50X2Jzc19jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJCSAgICB1OCAqYnNzaWQpCit7CisJdW5pb24gaXdyZXFfZGF0YSB3cnF1OworCXdycXUuZGF0YS5sZW5ndGggPSAwOworCXdycXUuZGF0YS5mbGFncyA9IDA7CisJbWVtY3B5KHdycXUuYXBfYWRkci5zYV9kYXRhLCBic3NpZCwgRVRIX0FMRU4pOworCXdycXUuYXBfYWRkci5zYV9mYW1pbHkgPSBBUlBIUkRfRVRIRVI7CisJd2lyZWxlc3Nfc2VuZF9ldmVudChuZXRkZXYsIFNJT0NHSVdBUCwgJndycXUsIE5VTEwpOworCWF0NzZfZGJnKERCR19XRV9FVkVOVFMsICIlczogJXM6IFNJT0NHSVdBUCBzZW50IiwgbmV0ZGV2LT5uYW1lLAorCQkgX19mdW5jX18pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXQ3Nl9pd2V2ZW50X2Jzc19kaXNjb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJdW5pb24gaXdyZXFfZGF0YSB3cnF1OworCXdycXUuZGF0YS5sZW5ndGggPSAwOworCXdycXUuZGF0YS5mbGFncyA9IDA7CisJbWVtc2V0KHdycXUuYXBfYWRkci5zYV9kYXRhLCAwLCBFVEhfQUxFTik7CisJd3JxdS5hcF9hZGRyLnNhX2ZhbWlseSA9IEFSUEhSRF9FVEhFUjsKKwl3aXJlbGVzc19zZW5kX2V2ZW50KG5ldGRldiwgU0lPQ0dJV0FQLCAmd3JxdSwgTlVMTCk7CisJYXQ3Nl9kYmcoREJHX1dFX0VWRU5UUywgIiVzOiAlczogU0lPQ0dJV0FQIHNlbnQiLCBuZXRkZXYtPm5hbWUsCisJCSBfX2Z1bmNfXyk7Cit9CisKKyNkZWZpbmUgSEVYMlNUUl9CVUZGRVJTIDQKKyNkZWZpbmUgSEVYMlNUUl9NQVhfTEVOIDY0CisjZGVmaW5lIEJJTjJIRVgoeCkgKCh4KSA8IDEwID8gJzAnICsgKHgpIDogKHgpICsgJ0EnIC0gMTApCisKKy8qIENvbnZlcnQgYmluYXJ5IGRhdGEgaW50byBoZXggc3RyaW5nICovCitzdGF0aWMgY2hhciAqaGV4MnN0cih2b2lkICpidWYsIGludCBsZW4pCit7CisJc3RhdGljIGF0b21pY190IGEgPSBBVE9NSUNfSU5JVCgwKTsKKwlzdGF0aWMgY2hhciBidWZzW0hFWDJTVFJfQlVGRkVSU11bMyAqIEhFWDJTVFJfTUFYX0xFTiArIDFdOworCWNoYXIgKnJldCA9IGJ1ZnNbYXRvbWljX2luY19yZXR1cm4oJmEpICYgKEhFWDJTVFJfQlVGRkVSUyAtIDEpXTsKKwljaGFyICpvYnVmID0gcmV0OworCXU4ICppYnVmID0gYnVmOworCisJaWYgKGxlbiA+IEhFWDJTVFJfTUFYX0xFTikKKwkJbGVuID0gSEVYMlNUUl9NQVhfTEVOOworCisJaWYgKGxlbiA8PSAwKSB7CisJCXJldFswXSA9ICdcMCc7CisJCXJldHVybiByZXQ7CisJfQorCisJd2hpbGUgKGxlbi0tKSB7CisJCSpvYnVmKysgPSBCSU4ySEVYKCppYnVmID4+IDQpOworCQkqb2J1ZisrID0gQklOMkhFWCgqaWJ1ZiAmIDB4Zik7CisJCSpvYnVmKysgPSAnLSc7CisJCWlidWYrKzsKKwl9CisJKigtLW9idWYpID0gJ1wwJzsKKworCXJldHVybiByZXQ7Cit9CisKKyNkZWZpbmUgTUFDMlNUUl9CVUZGRVJTIDQKKworc3RhdGljIGlubGluZSBjaGFyICptYWMyc3RyKHU4ICptYWMpCit7CisJc3RhdGljIGF0b21pY190IGEgPSBBVE9NSUNfSU5JVCgwKTsKKwlzdGF0aWMgY2hhciBidWZzW01BQzJTVFJfQlVGRkVSU11bNiAqIDNdOworCWNoYXIgKnN0cjsKKworCXN0ciA9IGJ1ZnNbYXRvbWljX2luY19yZXR1cm4oJmEpICYgKE1BQzJTVFJfQlVGRkVSUyAtIDEpXTsKKwlzcHJpbnRmKHN0ciwgIiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4IiwKKwkJbWFjWzBdLCBtYWNbMV0sIG1hY1syXSwgbWFjWzNdLCBtYWNbNF0sIG1hY1s1XSk7CisJcmV0dXJuIHN0cjsKK30KKworLyogTEVEIHRyaWdnZXIgKi8KK3N0YXRpYyBpbnQgdHhfYWN0aXZpdHk7CitzdGF0aWMgdm9pZCBhdDc2X2xlZHRyaWdfdHhfdGltZXJmdW5jKHVuc2lnbmVkIGxvbmcgZGF0YSk7CitzdGF0aWMgREVGSU5FX1RJTUVSKGxlZHRyaWdfdHhfdGltZXIsIGF0NzZfbGVkdHJpZ190eF90aW1lcmZ1bmMsIDAsIDApOworREVGSU5FX0xFRF9UUklHR0VSKGxlZHRyaWdfdHgpOworCitzdGF0aWMgdm9pZCBhdDc2X2xlZHRyaWdfdHhfdGltZXJmdW5jKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdGF0aWMgaW50IHR4X2xhc3RhY3Rpdml0eTsKKworCWlmICh0eF9sYXN0YWN0aXZpdHkgIT0gdHhfYWN0aXZpdHkpIHsKKwkJdHhfbGFzdGFjdGl2aXR5ID0gdHhfYWN0aXZpdHk7CisJCWxlZF90cmlnZ2VyX2V2ZW50KGxlZHRyaWdfdHgsIExFRF9GVUxMKTsKKwkJbW9kX3RpbWVyKCZsZWR0cmlnX3R4X3RpbWVyLCBqaWZmaWVzICsgSFogLyA0KTsKKwl9IGVsc2UKKwkJbGVkX3RyaWdnZXJfZXZlbnQobGVkdHJpZ190eCwgTEVEX09GRik7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfbGVkdHJpZ190eF9hY3Rpdml0eSh2b2lkKQoreworCXR4X2FjdGl2aXR5Kys7CisJaWYgKCF0aW1lcl9wZW5kaW5nKCZsZWR0cmlnX3R4X3RpbWVyKSkKKwkJbW9kX3RpbWVyKCZsZWR0cmlnX3R4X3RpbWVyLCBqaWZmaWVzICsgSFogLyA0KTsKK30KKworLyogQ2hlY2sgaWYgdGhlIGdpdmVuIHNzaWQgaXMgaGlkZGVuICovCitzdGF0aWMgaW5saW5lIGludCBhdDc2X2lzX2hpZGRlbl9zc2lkKHU4ICpzc2lkLCBpbnQgbGVuZ3RoKQoreworCXN0YXRpYyBjb25zdCB1OCB6ZXJvc1szMl07CisKKwlpZiAobGVuZ3RoID09IDApCisJCXJldHVybiAxOworCisJaWYgKGxlbmd0aCA9PSAxICYmIHNzaWRbMF0gPT0gJyAnKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAobWVtY21wKHNzaWQsIHplcm9zLCBsZW5ndGgpID09IDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXQ3Nl9mcmVlX2Jzc19saXN0KHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwgKnB0cjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7CisKKwlwcml2LT5jdXJyX2JzcyA9IE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNoX3NhZmUocHRyLCBuZXh0LCAmcHJpdi0+YnNzX2xpc3QpIHsKKwkJbGlzdF9kZWwocHRyKTsKKwkJa2ZyZWUobGlzdF9lbnRyeShwdHIsIHN0cnVjdCBic3NfaW5mbywgbGlzdCkpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9yZW1hcChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikKK3sKKwlpbnQgcmV0OworCXJldCA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2Jfc25kY3RybHBpcGUodWRldiwgMCksIDB4MGEsCisJCQkgICAgICBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfRElSX09VVCB8CisJCQkgICAgICBVU0JfUkVDSVBfSU5URVJGQUNFLCAwLCAwLCBOVUxMLCAwLAorCQkJICAgICAgVVNCX0NUUkxfR0VUX1RJTUVPVVQpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfZ2V0X29wX21vZGUoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYpCit7CisJaW50IHJldDsKKwl1OCBvcF9tb2RlOworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSwgMHgzMywKKwkJCSAgICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJfSU4gfAorCQkJICAgICAgVVNCX1JFQ0lQX0lOVEVSRkFDRSwgMHgwMSwgMCwgJm9wX21vZGUsIDEsCisJCQkgICAgICBVU0JfQ1RSTF9HRVRfVElNRU9VVCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJZWxzZSBpZiAocmV0IDwgMSkKKwkJcmV0dXJuIC1FSU87CisJZWxzZQorCQlyZXR1cm4gb3BfbW9kZTsKK30KKworLyogTG9hZCBhIGJsb2NrIG9mIHRoZSBzZWNvbmQgKCJleHRlcm5hbCIpIHBhcnQgb2YgdGhlIGZpcm13YXJlICovCitzdGF0aWMgaW5saW5lIGludCBhdDc2X2xvYWRfZXh0X2Z3X2Jsb2NrKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCBpbnQgYmxvY2tubywKKwkJCQkJIHZvaWQgKmJsb2NrLCBpbnQgc2l6ZSkKK3sKKwlyZXR1cm4gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSwgMHgwZSwKKwkJCSAgICAgICBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfRElSX09VVCB8IFVTQl9SRUNJUF9ERVZJQ0UsCisJCQkgICAgICAgMHgwODAyLCBibG9ja25vLCBibG9jaywgc2l6ZSwKKwkJCSAgICAgICBVU0JfQ1RSTF9HRVRfVElNRU9VVCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfZ2V0X2h3X2NmZyhzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKKwkJCQkgIHVuaW9uIGF0NzZfaHdjZmcgKmJ1ZiwgaW50IGJ1Zl9zaXplKQoreworCXJldHVybiB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDApLCAweDMzLAorCQkJICAgICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJfSU4gfAorCQkJICAgICAgIFVTQl9SRUNJUF9JTlRFUkZBQ0UsIDB4MGEwMiwgMCwKKwkJCSAgICAgICBidWYsIGJ1Zl9zaXplLCBVU0JfQ1RSTF9HRVRfVElNRU9VVCk7Cit9CisKKy8qIEludGVyc2lsIGJvYXJkcyB1c2UgYSBkaWZmZXJlbnQgInZhbHVlIiBmb3IgR2V0SFdDb25maWcgcmVxdWVzdHMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfZ2V0X2h3X2NmZ19pbnRlcnNpbChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKKwkJCQkJICAgdW5pb24gYXQ3Nl9od2NmZyAqYnVmLCBpbnQgYnVmX3NpemUpCit7CisJcmV0dXJuIHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksIDB4MzMsCisJCQkgICAgICAgVVNCX1RZUEVfVkVORE9SIHwgVVNCX0RJUl9JTiB8CisJCQkgICAgICAgVVNCX1JFQ0lQX0lOVEVSRkFDRSwgMHgwOTAyLCAwLAorCQkJICAgICAgIGJ1ZiwgYnVmX3NpemUsIFVTQl9DVFJMX0dFVF9USU1FT1VUKTsKK30KKworLyogR2V0IHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYWRhcHRlciBhbmQgcHV0IGl0IHRvIHRoZSBhcHByb3ByaWF0ZQorICogZmllbGRzIG9mICdwcml2JyAodGhlIEdldEhXQ29uZmlnIHJlcXVlc3QgYW5kIGludGVycHJldGF0aW9uIG9mIHRoZSByZXN1bHQKKyAqIGRlcGVuZHMgb24gdGhlIGJvYXJkIHR5cGUpICovCitzdGF0aWMgaW50IGF0NzZfZ2V0X2h3X2NvbmZpZyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCWludCByZXQ7CisJdW5pb24gYXQ3Nl9od2NmZyAqaHdjZmcgPSBrbWFsbG9jKHNpemVvZigqaHdjZmcpLCBHRlBfS0VSTkVMKTsKKworCWlmICghaHdjZmcpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKGF0NzZfaXNfaW50ZXJzaWwocHJpdi0+Ym9hcmRfdHlwZSkpIHsKKwkJcmV0ID0gYXQ3Nl9nZXRfaHdfY2ZnX2ludGVyc2lsKHByaXYtPnVkZXYsIGh3Y2ZnLAorCQkJCQkgICAgICAgc2l6ZW9mKGh3Y2ZnLT5pKSk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBleGl0OworCQltZW1jcHkocHJpdi0+bWFjX2FkZHIsIGh3Y2ZnLT5pLm1hY19hZGRyLCBFVEhfQUxFTik7CisJCXByaXYtPnJlZ3VsYXRvcnlfZG9tYWluID0gaHdjZmctPmkucmVndWxhdG9yeV9kb21haW47CisJfSBlbHNlIGlmIChhdDc2X2lzXzUwM3JmbWQocHJpdi0+Ym9hcmRfdHlwZSkpIHsKKwkJcmV0ID0gYXQ3Nl9nZXRfaHdfY2ZnKHByaXYtPnVkZXYsIGh3Y2ZnLCBzaXplb2YoaHdjZmctPnIzKSk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBleGl0OworCQltZW1jcHkocHJpdi0+bWFjX2FkZHIsIGh3Y2ZnLT5yMy5tYWNfYWRkciwgRVRIX0FMRU4pOworCQlwcml2LT5yZWd1bGF0b3J5X2RvbWFpbiA9IGh3Y2ZnLT5yMy5yZWd1bGF0b3J5X2RvbWFpbjsKKwl9IGVsc2UgeworCQlyZXQgPSBhdDc2X2dldF9od19jZmcocHJpdi0+dWRldiwgaHdjZmcsIHNpemVvZihod2NmZy0+cjUpKTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3RvIGV4aXQ7CisJCW1lbWNweShwcml2LT5tYWNfYWRkciwgaHdjZmctPnI1Lm1hY19hZGRyLCBFVEhfQUxFTik7CisJCXByaXYtPnJlZ3VsYXRvcnlfZG9tYWluID0gaHdjZmctPnI1LnJlZ3VsYXRvcnlfZG9tYWluOworCX0KKworZXhpdDoKKwlrZnJlZShod2NmZyk7CisJaWYgKHJldCA8IDApCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbm5vdCBnZXQgSFcgQ29uZmlnIChlcnJvciAlZClcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IHJlZ19kb21haW4gY29uc3QgKmF0NzZfZ2V0X3JlZ19kb21haW4odTE2IGNvZGUpCit7CisJaW50IGk7CisJc3RhdGljIHN0cnVjdCByZWdfZG9tYWluIGNvbnN0IGZkX3RhYltdID0geworCQl7MHgxMCwgIkZDQyAoVVNBKSIsIDB4N2ZmfSwJLyogY2ggMS0xMSAqLworCQl7MHgyMCwgIklDIChDYW5hZGEpIiwgMHg3ZmZ9LAkvKiBjaCAxLTExICovCisJCXsweDMwLCAiRVRTSSAobW9zdCBvZiBFdXJvcGUpIiwgMHgxZmZmfSwJLyogY2ggMS0xMyAqLworCQl7MHgzMSwgIlNwYWluIiwgMHg2MDB9LAkvKiBjaCAxMC0xMSAqLworCQl7MHgzMiwgIkZyYW5jZSIsIDB4MWUwMH0sCS8qIGNoIDEwLTEzICovCisJCXsweDQwLCAiTUtLIChKYXBhbikiLCAweDIwMDB9LAkvKiBjaCAxNCAqLworCQl7MHg0MSwgIk1LSzEgKEphcGFuKSIsIDB4M2ZmZn0sCS8qIGNoIDEtMTQgKi8KKwkJezB4NTAsICJJc3JhZWwiLCAweDNmY30sCS8qIGNoIDMtOSAqLworCQl7MHgwMCwgIjx1bmtub3duPiIsIDB4ZmZmZmZmZmZ9CS8qIGNoIDEtMzIgKi8KKwl9OworCisJLyogTGFzdCBlbnRyeSBpcyBmYWxsYmFjayBmb3IgdW5rbm93biBkb21haW4gY29kZSAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZkX3RhYikgLSAxOyBpKyspCisJCWlmIChjb2RlID09IGZkX3RhYltpXS5jb2RlKQorCQkJYnJlYWs7CisKKwlyZXR1cm4gJmZkX3RhYltpXTsKK30KKworc3RhdGljIGlubGluZSBpbnQgYXQ3Nl9nZXRfbWliKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB1MTYgbWliLCB2b2lkICpidWYsCisJCQkgICAgICAgaW50IGJ1Zl9zaXplKQoreworCWludCByZXQ7CisKKwlyZXQgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDApLCAweDMzLAorCQkJICAgICAgVVNCX1RZUEVfVkVORE9SIHwgVVNCX0RJUl9JTiB8CisJCQkgICAgICBVU0JfUkVDSVBfSU5URVJGQUNFLCBtaWIgPDwgOCwgMCwgYnVmLCBidWZfc2l6ZSwKKwkJCSAgICAgIFVTQl9DVFJMX0dFVF9USU1FT1VUKTsKKwlpZiAocmV0ID49IDAgJiYgcmV0ICE9IGJ1Zl9zaXplKQorCQlyZXR1cm4gLUVJTzsKKwlyZXR1cm4gcmV0OworfQorCisvKiBSZXR1cm4gcG9zaXRpdmUgbnVtYmVyIGZvciBzdGF0dXMsIG5lZ2F0aXZlIGZvciBhbiBlcnJvciAqLworc3RhdGljIGlubGluZSBpbnQgYXQ3Nl9nZXRfY21kX3N0YXR1cyhzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwgdTggY21kKQoreworCXU4IHN0YXRfYnVmWzQwXTsKKwlpbnQgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSwgMHgyMiwKKwkJCSAgICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJfSU4gfAorCQkJICAgICAgVVNCX1JFQ0lQX0lOVEVSRkFDRSwgY21kLCAwLCBzdGF0X2J1ZiwKKwkJCSAgICAgIHNpemVvZihzdGF0X2J1ZiksIFVTQl9DVFJMX0dFVF9USU1FT1VUKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiBzdGF0X2J1Zls1XTsKK30KKworc3RhdGljIGludCBhdDc2X3NldF9jYXJkX2NvbW1hbmQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIGludCBjbWQsIHZvaWQgKmJ1ZiwKKwkJCQkgaW50IGJ1Zl9zaXplKQoreworCWludCByZXQ7CisJc3RydWN0IGF0NzZfY29tbWFuZCAqY21kX2J1ZiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBhdDc2X2NvbW1hbmQpICsKKwkJCQkJICAgICAgIGJ1Zl9zaXplLCBHRlBfS0VSTkVMKTsKKworCWlmICghY21kX2J1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwljbWRfYnVmLT5jbWQgPSBjbWQ7CisJY21kX2J1Zi0+cmVzZXJ2ZWQgPSAwOworCWNtZF9idWYtPnNpemUgPSBjcHVfdG9fbGUxNihidWZfc2l6ZSk7CisJbWVtY3B5KGNtZF9idWYtPmRhdGEsIGJ1ZiwgYnVmX3NpemUpOworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9zbmRjdHJscGlwZSh1ZGV2LCAwKSwgMHgwZSwKKwkJCSAgICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJfT1VUIHwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCSAgICAgIDAsIDAsIGNtZF9idWYsCisJCQkgICAgICBzaXplb2Yoc3RydWN0IGF0NzZfY29tbWFuZCkgKyBidWZfc2l6ZSwKKwkJCSAgICAgIFVTQl9DVFJMX0dFVF9USU1FT1VUKTsKKwlrZnJlZShjbWRfYnVmKTsKKwlyZXR1cm4gcmV0OworfQorCisjZGVmaW5lIE1BS0VfQ01EX1NUQVRVU19DQVNFKGMpCWNhc2UgKGMpOiByZXR1cm4gI2MKK3N0YXRpYyBjb25zdCBjaGFyICphdDc2X2dldF9jbWRfc3RhdHVzX3N0cmluZyh1OCBjbWRfc3RhdHVzKQoreworCXN3aXRjaCAoY21kX3N0YXR1cykgeworCQlNQUtFX0NNRF9TVEFUVVNfQ0FTRShDTURfU1RBVFVTX0lETEUpOworCQlNQUtFX0NNRF9TVEFUVVNfQ0FTRShDTURfU1RBVFVTX0NPTVBMRVRFKTsKKwkJTUFLRV9DTURfU1RBVFVTX0NBU0UoQ01EX1NUQVRVU19VTktOT1dOKTsKKwkJTUFLRV9DTURfU1RBVFVTX0NBU0UoQ01EX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUik7CisJCU1BS0VfQ01EX1NUQVRVU19DQVNFKENNRF9TVEFUVVNfRlVOQ1RJT05fTk9UX1NVUFBPUlRFRCk7CisJCU1BS0VfQ01EX1NUQVRVU19DQVNFKENNRF9TVEFUVVNfVElNRV9PVVQpOworCQlNQUtFX0NNRF9TVEFUVVNfQ0FTRShDTURfU1RBVFVTX0lOX1BST0dSRVNTKTsKKwkJTUFLRV9DTURfU1RBVFVTX0NBU0UoQ01EX1NUQVRVU19IT1NUX0ZBSUxVUkUpOworCQlNQUtFX0NNRF9TVEFUVVNfQ0FTRShDTURfU1RBVFVTX1NDQU5fRkFJTEVEKTsKKwl9CisKKwlyZXR1cm4gIlVOS05PV04iOworfQorCisvKiBXYWl0IHVudGlsIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlZCAqLworc3RhdGljIGludCBhdDc2X3dhaXRfY29tcGxldGlvbihzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCBpbnQgY21kKQoreworCWludCBzdGF0dXMgPSAwOworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBDTURfQ09NUExFVElPTl9USU1FT1VUOworCisJZG8geworCQlzdGF0dXMgPSBhdDc2X2dldF9jbWRfc3RhdHVzKHByaXYtPnVkZXYsIGNtZCk7CisJCWlmIChzdGF0dXMgPCAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9jbWRfc3RhdHVzIGZhaWxlZDogJWRcbiIsCisJCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBzdGF0dXMpOworCQkJYnJlYWs7CisJCX0KKworCQlhdDc2X2RiZyhEQkdfV0FJVF9DT01QTEVURSwKKwkJCSAiJXM6IFdhaXRpbmcgb24gY21kICVkLCBzdGF0dXMgPSAlZCAoJXMpIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGNtZCwgc3RhdHVzLAorCQkJIGF0NzZfZ2V0X2NtZF9zdGF0dXNfc3RyaW5nKHN0YXR1cykpOworCisJCWlmIChzdGF0dXMgIT0gQ01EX1NUQVRVU19JTl9QUk9HUkVTUworCQkgICAgJiYgc3RhdHVzICE9IENNRF9TVEFUVVNfSURMRSkKKwkJCWJyZWFrOworCisJCXNjaGVkdWxlX3RpbWVvdXRfaW50ZXJydXB0aWJsZShIWiAvIDEwKTsJLyogMTAwIG1zICovCisJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiJXM6IGNvbXBsZXRpb24gdGltZW91dCBmb3IgY29tbWFuZCAlZFxuIiwKKwkJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIGNtZCk7CisJCQlzdGF0dXMgPSAtRVRJTUVET1VUOworCQkJYnJlYWs7CisJCX0KKwl9IHdoaWxlICgxKTsKKworCXJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zZXRfbWliKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBzZXRfbWliX2J1ZmZlciAqYnVmKQoreworCWludCByZXQ7CisKKwlyZXQgPSBhdDc2X3NldF9jYXJkX2NvbW1hbmQocHJpdi0+dWRldiwgQ01EX1NFVF9NSUIsIGJ1ZiwKKwkJCQkgICAgb2Zmc2V0b2Yoc3RydWN0IHNldF9taWJfYnVmZmVyLAorCQkJCQkgICAgIGRhdGEpICsgYnVmLT5zaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGF0NzZfd2FpdF9jb21wbGV0aW9uKHByaXYsIENNRF9TRVRfTUlCKTsKKwlpZiAocmV0ICE9IENNRF9TVEFUVVNfQ09NUExFVEUpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTworCQkgICAgICAgIiVzOiBzZXRfbWliOiBhdDc2X3dhaXRfY29tcGxldGlvbiBmYWlsZWQgIgorCQkgICAgICAgIndpdGggJWRcbiIsIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKwkJcmV0ID0gLUVJTzsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBSZXR1cm4gPCAwIG9uIGVycm9yLCA9PSAwIGlmIG5vIGNvbW1hbmQgc2VudCwgPT0gMSBpZiBjbWQgc2VudCAqLworc3RhdGljIGludCBhdDc2X3NldF9yYWRpbyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCBpbnQgZW5hYmxlKQoreworCWludCByZXQ7CisJaW50IGNtZDsKKworCWlmIChwcml2LT5yYWRpb19vbiA9PSBlbmFibGUpCisJCXJldHVybiAwOworCisJY21kID0gZW5hYmxlID8gQ01EX1JBRElPX09OIDogQ01EX1JBRElPX09GRjsKKworCXJldCA9IGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBjbWQsIE5VTEwsIDApOworCWlmIChyZXQgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X3NldF9jYXJkX2NvbW1hbmQoJWQpIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIGNtZCwgcmV0KTsKKwllbHNlCisJCXJldCA9IDE7CisKKwlwcml2LT5yYWRpb19vbiA9IGVuYWJsZTsKKwlyZXR1cm4gcmV0OworfQorCisvKiBTZXQgY3VycmVudCBwb3dlciBzYXZlIG1vZGUgKEFUNzZfUE1fT0ZGL0FUNzZfUE1fT04vQVQ3Nl9QTV9TTUFSVCkgKi8KK3N0YXRpYyBpbnQgYXQ3Nl9zZXRfcG1fbW9kZShzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCWludCByZXQgPSAwOworCisJcHJpdi0+bWliX2J1Zi50eXBlID0gTUlCX01BQ19NR01UOworCXByaXYtPm1pYl9idWYuc2l6ZSA9IDE7CisJcHJpdi0+bWliX2J1Zi5pbmRleCA9IG9mZnNldG9mKHN0cnVjdCBtaWJfbWFjX21nbXQsIHBvd2VyX21nbXRfbW9kZSk7CisJcHJpdi0+bWliX2J1Zi5kYXRhLmJ5dGUgPSBwcml2LT5wbV9tb2RlOworCisJcmV0ID0gYXQ3Nl9zZXRfbWliKHByaXYsICZwcml2LT5taWJfYnVmKTsKKwlpZiAocmV0IDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogc2V0X21pYiAocG1fbW9kZSkgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qIFNldCB0aGUgYXNzb2NpYXRpb24gaWQgZm9yIHBvd2VyIHNhdmUgbW9kZSAqLworc3RhdGljIGludCBhdDc2X3NldF9hc3NvY2lkKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHUxNiBpZCkKK3sKKwlpbnQgcmV0ID0gMDsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9NQUNfTUdNVDsKKwlwcml2LT5taWJfYnVmLnNpemUgPSAyOworCXByaXYtPm1pYl9idWYuaW5kZXggPSBvZmZzZXRvZihzdHJ1Y3QgbWliX21hY19tZ210LCBzdGF0aW9uX2lkKTsKKwlwcml2LT5taWJfYnVmLmRhdGEud29yZCA9IGNwdV90b19sZTE2KGlkKTsKKworCXJldCA9IGF0NzZfc2V0X21pYihwcml2LCAmcHJpdi0+bWliX2J1Zik7CisJaWYgKHJldCA8IDApCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHNldF9taWIgKGFzc29jaWQpIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBTZXQgdGhlIGxpc3RlbiBpbnRlcnZhbCBmb3IgcG93ZXIgc2F2ZSBtb2RlICovCitzdGF0aWMgaW50IGF0NzZfc2V0X2xpc3Rlbl9pbnRlcnZhbChzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCB1MTYgaW50ZXJ2YWwpCit7CisJaW50IHJldCA9IDA7CisKKwlwcml2LT5taWJfYnVmLnR5cGUgPSBNSUJfTUFDOworCXByaXYtPm1pYl9idWYuc2l6ZSA9IDI7CisJcHJpdi0+bWliX2J1Zi5pbmRleCA9IG9mZnNldG9mKHN0cnVjdCBtaWJfbWFjLCBsaXN0ZW5faW50ZXJ2YWwpOworCXByaXYtPm1pYl9idWYuZGF0YS53b3JkID0gY3B1X3RvX2xlMTYoaW50ZXJ2YWwpOworCisJcmV0ID0gYXQ3Nl9zZXRfbWliKHByaXYsICZwcml2LT5taWJfYnVmKTsKKwlpZiAocmV0IDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiJXM6IHNldF9taWIgKGxpc3Rlbl9pbnRlcnZhbCkgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zZXRfcHJlYW1ibGUoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwgdTggdHlwZSkKK3sKKwlpbnQgcmV0ID0gMDsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9MT0NBTDsKKwlwcml2LT5taWJfYnVmLnNpemUgPSAxOworCXByaXYtPm1pYl9idWYuaW5kZXggPSBvZmZzZXRvZihzdHJ1Y3QgbWliX2xvY2FsLCBwcmVhbWJsZV90eXBlKTsKKwlwcml2LT5taWJfYnVmLmRhdGEuYnl0ZSA9IHR5cGU7CisKKwlyZXQgPSBhdDc2X3NldF9taWIocHJpdiwgJnByaXYtPm1pYl9idWYpOworCWlmIChyZXQgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBzZXRfbWliIChwcmVhbWJsZSkgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zZXRfZnJhZyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCB1MTYgc2l6ZSkKK3sKKwlpbnQgcmV0ID0gMDsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9NQUM7CisJcHJpdi0+bWliX2J1Zi5zaXplID0gMjsKKwlwcml2LT5taWJfYnVmLmluZGV4ID0gb2Zmc2V0b2Yoc3RydWN0IG1pYl9tYWMsIGZyYWdfdGhyZXNob2xkKTsKKwlwcml2LT5taWJfYnVmLmRhdGEud29yZCA9IGNwdV90b19sZTE2KHNpemUpOworCisJcmV0ID0gYXQ3Nl9zZXRfbWliKHByaXYsICZwcml2LT5taWJfYnVmKTsKKwlpZiAocmV0IDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogc2V0X21pYiAoZnJhZyB0aHJlc2hvbGQpIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF0NzZfc2V0X3J0cyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCB1MTYgc2l6ZSkKK3sKKwlpbnQgcmV0ID0gMDsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9NQUM7CisJcHJpdi0+bWliX2J1Zi5zaXplID0gMjsKKwlwcml2LT5taWJfYnVmLmluZGV4ID0gb2Zmc2V0b2Yoc3RydWN0IG1pYl9tYWMsIHJ0c190aHJlc2hvbGQpOworCXByaXYtPm1pYl9idWYuZGF0YS53b3JkID0gY3B1X3RvX2xlMTYoc2l6ZSk7CisKKwlyZXQgPSBhdDc2X3NldF9taWIocHJpdiwgJnByaXYtPm1pYl9idWYpOworCWlmIChyZXQgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBzZXRfbWliIChydHMpIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF0NzZfc2V0X2F1dG9yYXRlX2ZhbGxiYWNrKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIGludCBvbm9mZikKK3sKKwlpbnQgcmV0ID0gMDsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9MT0NBTDsKKwlwcml2LT5taWJfYnVmLnNpemUgPSAxOworCXByaXYtPm1pYl9idWYuaW5kZXggPSBvZmZzZXRvZihzdHJ1Y3QgbWliX2xvY2FsLCB0eGF1dG9yYXRlX2ZhbGxiYWNrKTsKKwlwcml2LT5taWJfYnVmLmRhdGEuYnl0ZSA9IG9ub2ZmOworCisJcmV0ID0gYXQ3Nl9zZXRfbWliKHByaXYsICZwcml2LT5taWJfYnVmKTsKKwlpZiAocmV0IDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogc2V0X21pYiAoYXV0b3JhdGUgZmFsbGJhY2spIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF0NzZfYWRkX21hY19hZGRyZXNzKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHZvaWQgKmFkZHIpCit7CisJaW50IHJldCA9IDA7CisKKwlwcml2LT5taWJfYnVmLnR5cGUgPSBNSUJfTUFDX0FERFI7CisJcHJpdi0+bWliX2J1Zi5zaXplID0gRVRIX0FMRU47CisJcHJpdi0+bWliX2J1Zi5pbmRleCA9IG9mZnNldG9mKHN0cnVjdCBtaWJfbWFjX2FkZHIsIG1hY19hZGRyKTsKKwltZW1jcHkocHJpdi0+bWliX2J1Zi5kYXRhLmFkZHIsIGFkZHIsIEVUSF9BTEVOKTsKKworCXJldCA9IGF0NzZfc2V0X21pYihwcml2LCAmcHJpdi0+bWliX2J1Zik7CisJaWYgKHJldCA8IDApCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHNldF9taWIgKE1BQ19BRERSLCBtYWNfYWRkcikgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfZHVtcF9taWJfbWFjX2FkZHIoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgaTsKKwlpbnQgcmV0OworCXN0cnVjdCBtaWJfbWFjX2FkZHIgKm0gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgbWliX21hY19hZGRyKSwKKwkJCQkJIEdGUF9LRVJORUwpOworCisJaWYgKCFtKQorCQlyZXR1cm47CisKKwlyZXQgPSBhdDc2X2dldF9taWIocHJpdi0+dWRldiwgTUlCX01BQ19BRERSLCBtLAorCQkJICAgc2l6ZW9mKHN0cnVjdCBtaWJfbWFjX2FkZHIpKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgKE1BQ19BRERSKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgTUFDX0FERFI6IG1hY19hZGRyICVzIHJlcyAweCV4IDB4JXgiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkgbWFjMnN0cihtLT5tYWNfYWRkciksIG0tPnJlc1swXSwgbS0+cmVzWzFdKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtLT5ncm91cF9hZGRyKTsgaSsrKQorCQlhdDc2X2RiZyhEQkdfTUlCLCAiJXM6IE1JQiBNQUNfQUREUjogZ3JvdXAgYWRkciAlZDogJXMsICIKKwkJCSAic3RhdHVzICVkIiwgcHJpdi0+bmV0ZGV2LT5uYW1lLCBpLAorCQkJIG1hYzJzdHIobS0+Z3JvdXBfYWRkcltpXSksIG0tPmdyb3VwX2FkZHJfc3RhdHVzW2ldKTsKK2V4aXQ6CisJa2ZyZWUobSk7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfZHVtcF9taWJfbWFjX3dlcChzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCWludCBpOworCWludCByZXQ7CisJaW50IGtleV9sZW47CisJc3RydWN0IG1pYl9tYWNfd2VwICptID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1pYl9tYWNfd2VwKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIW0pCisJCXJldHVybjsKKworCXJldCA9IGF0NzZfZ2V0X21pYihwcml2LT51ZGV2LCBNSUJfTUFDX1dFUCwgbSwKKwkJCSAgIHNpemVvZihzdHJ1Y3QgbWliX21hY193ZXApKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgKE1BQ19XRVApIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlhdDc2X2RiZyhEQkdfTUlCLCAiJXM6IE1JQiBNQUNfV0VQOiBwcml2X2ludm9rZWQgJXUgZGVmX2tleV9pZCAldSAiCisJCSAia2V5X2xlbiAldSBleGNsX3VuZW5jciAldSB3ZXBfaWN2X2VyciAldSB3ZXBfZXhjbHVkZWQgJXUgIgorCQkgImVuY3JfbGV2ZWwgJXUga2V5ICVkIiwgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkgbS0+cHJpdmFjeV9pbnZva2VkLCBtLT53ZXBfZGVmYXVsdF9rZXlfaWQsCisJCSBtLT53ZXBfa2V5X21hcHBpbmdfbGVuLCBtLT5leGNsdWRlX3VuZW5jcnlwdGVkLAorCQkgbGUzMl90b19jcHUobS0+d2VwX2ljdl9lcnJvcl9jb3VudCksCisJCSBsZTMyX3RvX2NwdShtLT53ZXBfZXhjbHVkZWRfY291bnQpLCBtLT5lbmNyeXB0aW9uX2xldmVsLAorCQkgbS0+d2VwX2RlZmF1bHRfa2V5X2lkKTsKKworCWtleV9sZW4gPSAobS0+ZW5jcnlwdGlvbl9sZXZlbCA9PSAxKSA/CisJICAgIFdFUF9TTUFMTF9LRVlfTEVOIDogV0VQX0xBUkdFX0tFWV9MRU47CisKKwlmb3IgKGkgPSAwOyBpIDwgV0VQX0tFWVM7IGkrKykKKwkJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgTUFDX1dFUDoga2V5ICVkOiAlcyIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBpLAorCQkJIGhleDJzdHIobS0+d2VwX2RlZmF1bHRfa2V5dmFsdWVbaV0sIGtleV9sZW4pKTsKK2V4aXQ6CisJa2ZyZWUobSk7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfZHVtcF9taWJfbWFjX21nbXQoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBtaWJfbWFjX21nbXQgKm0gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgbWliX21hY19tZ210KSwKKwkJCQkJIEdGUF9LRVJORUwpOworCisJaWYgKCFtKQorCQlyZXR1cm47CisKKwlyZXQgPSBhdDc2X2dldF9taWIocHJpdi0+dWRldiwgTUlCX01BQ19NR01ULCBtLAorCQkJICAgc2l6ZW9mKHN0cnVjdCBtaWJfbWFjX21nbXQpKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgKE1BQ19NR01UKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgTUFDX01HTVQ6IGJlYWNvbl9wZXJpb2QgJWQgQ0ZQX21heF9kdXJhdGlvbiAiCisJCSAiJWQgbWVkaXVtX29jY3VwYW5jeV9saW1pdCAlZCBzdGF0aW9uX2lkIDB4JXggQVRJTV93aW5kb3cgJWQgIgorCQkgIkNGUF9tb2RlICVkIHByaXZhY3lfb3B0X2ltcGwgJWQgRFRJTV9wZXJpb2QgJWQgQ0ZQX3BlcmlvZCAlZCAiCisJCSAiY3VycmVudF9ic3NpZCAlcyBjdXJyZW50X2Vzc2lkICVzIGN1cnJlbnRfYnNzX3R5cGUgJWQgIgorCQkgInBtX21vZGUgJWQgaWJzc19jaGFuZ2UgJWQgcmVzICVkICIKKwkJICJtdWx0aV9kb21haW5fY2FwYWJpbGl0eV9pbXBsZW1lbnRlZCAlZCAiCisJCSAiaW50ZXJuYXRpb25hbF9yb2FtaW5nICVkIGNvdW50cnlfc3RyaW5nICUuM3MiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBsZTE2X3RvX2NwdShtLT5iZWFjb25fcGVyaW9kKSwKKwkJIGxlMTZfdG9fY3B1KG0tPkNGUF9tYXhfZHVyYXRpb24pLAorCQkgbGUxNl90b19jcHUobS0+bWVkaXVtX29jY3VwYW5jeV9saW1pdCksCisJCSBsZTE2X3RvX2NwdShtLT5zdGF0aW9uX2lkKSwgbGUxNl90b19jcHUobS0+QVRJTV93aW5kb3cpLAorCQkgbS0+Q0ZQX21vZGUsIG0tPnByaXZhY3lfb3B0aW9uX2ltcGxlbWVudGVkLCBtLT5EVElNX3BlcmlvZCwKKwkJIG0tPkNGUF9wZXJpb2QsIG1hYzJzdHIobS0+Y3VycmVudF9ic3NpZCksCisJCSBoZXgyc3RyKG0tPmN1cnJlbnRfZXNzaWQsIElXX0VTU0lEX01BWF9TSVpFKSwKKwkJIG0tPmN1cnJlbnRfYnNzX3R5cGUsIG0tPnBvd2VyX21nbXRfbW9kZSwgbS0+aWJzc19jaGFuZ2UsCisJCSBtLT5yZXMsIG0tPm11bHRpX2RvbWFpbl9jYXBhYmlsaXR5X2ltcGxlbWVudGVkLAorCQkgbS0+bXVsdGlfZG9tYWluX2NhcGFiaWxpdHlfZW5hYmxlZCwgbS0+Y291bnRyeV9zdHJpbmcpOworZXhpdDoKKwlrZnJlZShtKTsKK30KKworc3RhdGljIHZvaWQgYXQ3Nl9kdW1wX21pYl9tYWMoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBtaWJfbWFjICptID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1pYl9tYWMpLCBHRlBfS0VSTkVMKTsKKworCWlmICghbSkKKwkJcmV0dXJuOworCisJcmV0ID0gYXQ3Nl9nZXRfbWliKHByaXYtPnVkZXYsIE1JQl9NQUMsIG0sIHNpemVvZihzdHJ1Y3QgbWliX21hYykpOworCWlmIChyZXQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGF0NzZfZ2V0X21pYiAoTUFDKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgTUFDOiBtYXhfdHhfbXNkdV9saWZldGltZSAlZCAiCisJCSAibWF4X3J4X2xpZmV0aW1lICVkIGZyYWdfdGhyZXNob2xkICVkIHJ0c190aHJlc2hvbGQgJWQgIgorCQkgImN3bWluICVkIGN3bWF4ICVkIHNob3J0X3JldHJ5X3RpbWUgJWQgbG9uZ19yZXRyeV90aW1lICVkICIKKwkJICJzY2FuX3R5cGUgJWQgc2Nhbl9jaGFubmVsICVkIHByb2JlX2RlbGF5ICV1ICIKKwkJICJtaW5fY2hhbm5lbF90aW1lICVkIG1heF9jaGFubmVsX3RpbWUgJWQgbGlzdGVuX2ludCAlZCAiCisJCSAiZGVzaXJlZF9zc2lkICVzIGRlc2lyZWRfYnNzaWQgJXMgZGVzaXJlZF9ic3N0eXBlICVkIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwgbGUzMl90b19jcHUobS0+bWF4X3R4X21zZHVfbGlmZXRpbWUpLAorCQkgbGUzMl90b19jcHUobS0+bWF4X3J4X2xpZmV0aW1lKSwKKwkJIGxlMTZfdG9fY3B1KG0tPmZyYWdfdGhyZXNob2xkKSwgbGUxNl90b19jcHUobS0+cnRzX3RocmVzaG9sZCksCisJCSBsZTE2X3RvX2NwdShtLT5jd21pbiksIGxlMTZfdG9fY3B1KG0tPmN3bWF4KSwKKwkJIG0tPnNob3J0X3JldHJ5X3RpbWUsIG0tPmxvbmdfcmV0cnlfdGltZSwgbS0+c2Nhbl90eXBlLAorCQkgbS0+c2Nhbl9jaGFubmVsLCBsZTE2X3RvX2NwdShtLT5wcm9iZV9kZWxheSksCisJCSBsZTE2X3RvX2NwdShtLT5taW5fY2hhbm5lbF90aW1lKSwKKwkJIGxlMTZfdG9fY3B1KG0tPm1heF9jaGFubmVsX3RpbWUpLAorCQkgbGUxNl90b19jcHUobS0+bGlzdGVuX2ludGVydmFsKSwKKwkJIGhleDJzdHIobS0+ZGVzaXJlZF9zc2lkLCBJV19FU1NJRF9NQVhfU0laRSksCisJCSBtYWMyc3RyKG0tPmRlc2lyZWRfYnNzaWQpLCBtLT5kZXNpcmVkX2Jzc3R5cGUpOworZXhpdDoKKwlrZnJlZShtKTsKK30KKworc3RhdGljIHZvaWQgYXQ3Nl9kdW1wX21pYl9waHkoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBtaWJfcGh5ICptID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1pYl9waHkpLCBHRlBfS0VSTkVMKTsKKworCWlmICghbSkKKwkJcmV0dXJuOworCisJcmV0ID0gYXQ3Nl9nZXRfbWliKHByaXYtPnVkZXYsIE1JQl9QSFksIG0sIHNpemVvZihzdHJ1Y3QgbWliX3BoeSkpOworCWlmIChyZXQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGF0NzZfZ2V0X21pYiAoUEhZKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgUEhZOiBlZF90aHJlc2hvbGQgJWQgc2xvdF90aW1lICVkICIKKwkJICJzaWZzX3RpbWUgJWQgcHJlYW1ibGVfbGVuZ3RoICVkIHBsY3BfaGVhZGVyX2xlbmd0aCAlZCAiCisJCSAibXBkdV9tYXhfbGVuZ3RoICVkIGNjYV9tb2RlX3N1cHBvcnRlZCAlZCBvcGVyYXRpb25fcmF0ZV9zZXQgIgorCQkgIjB4JXggMHgleCAweCV4IDB4JXggY2hhbm5lbF9pZCAlZCBjdXJyZW50X2NjYV9tb2RlICVkICIKKwkJICJwaHlfdHlwZSAlZCBjdXJyZW50X3JlZ19kb21haW4gJWQiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBsZTMyX3RvX2NwdShtLT5lZF90aHJlc2hvbGQpLAorCQkgbGUxNl90b19jcHUobS0+c2xvdF90aW1lKSwgbGUxNl90b19jcHUobS0+c2lmc190aW1lKSwKKwkJIGxlMTZfdG9fY3B1KG0tPnByZWFtYmxlX2xlbmd0aCksCisJCSBsZTE2X3RvX2NwdShtLT5wbGNwX2hlYWRlcl9sZW5ndGgpLAorCQkgbGUxNl90b19jcHUobS0+bXBkdV9tYXhfbGVuZ3RoKSwKKwkJIGxlMTZfdG9fY3B1KG0tPmNjYV9tb2RlX3N1cHBvcnRlZCksIG0tPm9wZXJhdGlvbl9yYXRlX3NldFswXSwKKwkJIG0tPm9wZXJhdGlvbl9yYXRlX3NldFsxXSwgbS0+b3BlcmF0aW9uX3JhdGVfc2V0WzJdLAorCQkgbS0+b3BlcmF0aW9uX3JhdGVfc2V0WzNdLCBtLT5jaGFubmVsX2lkLCBtLT5jdXJyZW50X2NjYV9tb2RlLAorCQkgbS0+cGh5X3R5cGUsIG0tPmN1cnJlbnRfcmVnX2RvbWFpbik7CitleGl0OgorCWtmcmVlKG0pOworfQorCitzdGF0aWMgdm9pZCBhdDc2X2R1bXBfbWliX2xvY2FsKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgbWliX2xvY2FsICptID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1pYl9waHkpLCBHRlBfS0VSTkVMKTsKKworCWlmICghbSkKKwkJcmV0dXJuOworCisJcmV0ID0gYXQ3Nl9nZXRfbWliKHByaXYtPnVkZXYsIE1JQl9MT0NBTCwgbSwgc2l6ZW9mKHN0cnVjdCBtaWJfbG9jYWwpKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgKExPQ0FMKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX01JQiwgIiVzOiBNSUIgTE9DQUw6IGJlYWNvbl9lbmFibGUgJWQgIgorCQkgInR4YXV0b3JhdGVfZmFsbGJhY2sgJWQgc3NpZF9zaXplICVkIHByb21pc2N1b3VzX21vZGUgJWQgIgorCQkgInByZWFtYmxlX3R5cGUgJWQiLCBwcml2LT5uZXRkZXYtPm5hbWUsIG0tPmJlYWNvbl9lbmFibGUsCisJCSBtLT50eGF1dG9yYXRlX2ZhbGxiYWNrLCBtLT5zc2lkX3NpemUsIG0tPnByb21pc2N1b3VzX21vZGUsCisJCSBtLT5wcmVhbWJsZV90eXBlKTsKK2V4aXQ6CisJa2ZyZWUobSk7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfZHVtcF9taWJfbWRvbWFpbihzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCWludCByZXQ7CisJc3RydWN0IG1pYl9tZG9tYWluICptID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1pYl9tZG9tYWluKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIW0pCisJCXJldHVybjsKKworCXJldCA9IGF0NzZfZ2V0X21pYihwcml2LT51ZGV2LCBNSUJfTURPTUFJTiwgbSwKKwkJCSAgIHNpemVvZihzdHJ1Y3QgbWliX21kb21haW4pKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgKE1ET01BSU4pIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlhdDc2X2RiZyhEQkdfTUlCLCAiJXM6IE1JQiBNRE9NQUlOOiBjaGFubmVsX2xpc3QgJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkgaGV4MnN0cihtLT5jaGFubmVsX2xpc3QsIHNpemVvZihtLT5jaGFubmVsX2xpc3QpKSk7CisKKwlhdDc2X2RiZyhEQkdfTUlCLCAiJXM6IE1JQiBNRE9NQUlOOiB0eF9wb3dlcmxldmVsICVzIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwKKwkJIGhleDJzdHIobS0+dHhfcG93ZXJsZXZlbCwgc2l6ZW9mKG0tPnR4X3Bvd2VybGV2ZWwpKSk7CitleGl0OgorCWtmcmVlKG0pOworfQorCitzdGF0aWMgaW50IGF0NzZfZ2V0X2N1cnJlbnRfYnNzaWQoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgbWliX21hY19tZ210ICptYWNfbWdtdCA9CisJICAgIGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBtaWJfbWFjX21nbXQpLCBHRlBfS0VSTkVMKTsKKworCWlmICghbWFjX21nbXQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBleGl0OworCX0KKworCXJldCA9IGF0NzZfZ2V0X21pYihwcml2LT51ZGV2LCBNSUJfTUFDX01HTVQsIG1hY19tZ210LAorCQkJICAgc2l6ZW9mKHN0cnVjdCBtaWJfbWFjX21nbXQpKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X2dldF9taWIgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKwkJZ290byBlcnJvcjsKKwl9CisJbWVtY3B5KHByaXYtPmJzc2lkLCBtYWNfbWdtdC0+Y3VycmVudF9ic3NpZCwgRVRIX0FMRU4pOworCXByaW50ayhLRVJOX0lORk8gIiVzOiB1c2luZyBCU1NJRCAlc1xuIiwgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCSAgICAgICBtYWMyc3RyKHByaXYtPmJzc2lkKSk7CitlcnJvcjoKKwlrZnJlZShtYWNfbWdtdCk7CitleGl0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9nZXRfY3VycmVudF9jaGFubmVsKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IG1pYl9waHkgKnBoeSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBtaWJfcGh5KSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXBoeSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGV4aXQ7CisJfQorCXJldCA9IGF0NzZfZ2V0X21pYihwcml2LT51ZGV2LCBNSUJfUEhZLCBwaHksIHNpemVvZihzdHJ1Y3QgbWliX3BoeSkpOworCWlmIChyZXQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGF0NzZfZ2V0X21pYihNSUJfUEhZKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlnb3RvIGVycm9yOworCX0KKwlwcml2LT5jaGFubmVsID0gcGh5LT5jaGFubmVsX2lkOworZXJyb3I6CisJa2ZyZWUocGh5KTsKK2V4aXQ6CisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBhdDc2X3N0YXJ0X3NjYW4gLSBzdGFydCBhIHNjYW4KKyAqCisgKiBAdXNlX2Vzc2lkIC0gdXNlIHRoZSBjb25maWd1cmVkIEVTU0lEIGluIG5vbiBwYXNzaXZlIG1vZGUKKyAqLworc3RhdGljIGludCBhdDc2X3N0YXJ0X3NjYW4oc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwgaW50IHVzZV9lc3NpZCkKK3sKKwlzdHJ1Y3QgYXQ3Nl9yZXFfc2NhbiBzY2FuOworCisJbWVtc2V0KCZzY2FuLCAwLCBzaXplb2Yoc3RydWN0IGF0NzZfcmVxX3NjYW4pKTsKKwltZW1zZXQoc2Nhbi5ic3NpZCwgMHhmZiwgRVRIX0FMRU4pOworCisJaWYgKHVzZV9lc3NpZCkgeworCQltZW1jcHkoc2Nhbi5lc3NpZCwgcHJpdi0+ZXNzaWQsIElXX0VTU0lEX01BWF9TSVpFKTsKKwkJc2Nhbi5lc3NpZF9zaXplID0gcHJpdi0+ZXNzaWRfc2l6ZTsKKwl9IGVsc2UKKwkJc2Nhbi5lc3NpZF9zaXplID0gMDsKKworCS8qIGphbDogd2h5IHNob3VsZCB3ZSBzdGFydCBhdCBhIGNlcnRhaW4gY2hhbm5lbD8gd2UgZG8gc2NhbiB0aGUgd2hvbGUKKwkgICByYW5nZSBhbGxvd2VkIGJ5IHJlZyBkb21haW4uICovCisJc2Nhbi5jaGFubmVsID0gcHJpdi0+Y2hhbm5lbDsKKworCS8qIGF0bWVsd2xhbmRyaXZlciBkaWZmZXJzIGJldHdlZW4gc2NhbiB0eXBlIDAgYW5kIDEgKGFjdGl2ZS9wYXNzaXZlKQorCSAgIEZvciBhZC1ob2MgbW9kZSwgaXQgdXNlcyB0eXBlIDAgb25seS4gKi8KKwlzY2FuLnNjYW5fdHlwZSA9IHByaXYtPnNjYW5fbW9kZTsKKworCS8qIElORk86IEZvciBwcm9iZV9kZWxheSwgbm90IG11bHRpcGx5aW5nIGJ5IDEwMjQgYXMgdGhpcyB3aWxsIGJlCisJICAgc2xpZ2h0bHkgbGVzcyB0aGFuIG1pbl9jaGFubmVsX3RpbWUKKwkgICAocGVyIHNwZWM6IHByb2JlIGRlbGF5IDwgbWluLiBjaGFubmVsIHRpbWUpICovCisJc2Nhbi5taW5fY2hhbm5lbF90aW1lID0gY3B1X3RvX2xlMTYocHJpdi0+c2Nhbl9taW5fdGltZSk7CisJc2Nhbi5tYXhfY2hhbm5lbF90aW1lID0gY3B1X3RvX2xlMTYocHJpdi0+c2Nhbl9tYXhfdGltZSk7CisJc2Nhbi5wcm9iZV9kZWxheSA9IGNwdV90b19sZTE2KHByaXYtPnNjYW5fbWluX3RpbWUgKiAxMDAwKTsKKwlzY2FuLmludGVybmF0aW9uYWxfc2NhbiA9IDA7CisKKwkvKiBvdGhlciB2YWx1ZXMgYXJlIHNldCB0byAwIGZvciB0eXBlIDAgKi8KKworCWF0NzZfZGJnKERCR19QUk9HUkVTUywgIiVzOiBzdGFydF9zY2FuICh1c2VfZXNzaWQgPSAlZCwgaW50bCA9ICVkLCAiCisJCSAiY2hhbm5lbCA9ICVkLCBwcm9iZV9kZWxheSA9ICVkLCBzY2FuX21pbl90aW1lID0gJWQsICIKKwkJICJzY2FuX21heF90aW1lID0gJWQpIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwgdXNlX2Vzc2lkLAorCQkgc2Nhbi5pbnRlcm5hdGlvbmFsX3NjYW4sIHNjYW4uY2hhbm5lbCwKKwkJIGxlMTZfdG9fY3B1KHNjYW4ucHJvYmVfZGVsYXkpLAorCQkgbGUxNl90b19jcHUoc2Nhbi5taW5fY2hhbm5lbF90aW1lKSwKKwkJIGxlMTZfdG9fY3B1KHNjYW4ubWF4X2NoYW5uZWxfdGltZSkpOworCisJcmV0dXJuIGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBDTURfU0NBTiwgJnNjYW4sIHNpemVvZihzY2FuKSk7Cit9CisKKy8qIEVuYWJsZSBtb25pdG9yIG1vZGUgKi8KK3N0YXRpYyBpbnQgYXQ3Nl9zdGFydF9tb25pdG9yKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJc3RydWN0IGF0NzZfcmVxX3NjYW4gc2NhbjsKKwlpbnQgcmV0OworCisJbWVtc2V0KCZzY2FuLCAwLCBzaXplb2Yoc3RydWN0IGF0NzZfcmVxX3NjYW4pKTsKKwltZW1zZXQoc2Nhbi5ic3NpZCwgMHhmZiwgRVRIX0FMRU4pOworCisJc2Nhbi5jaGFubmVsID0gcHJpdi0+Y2hhbm5lbDsKKwlzY2FuLnNjYW5fdHlwZSA9IFNDQU5fVFlQRV9QQVNTSVZFOworCXNjYW4uaW50ZXJuYXRpb25hbF9zY2FuID0gMDsKKworCXJldCA9IGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBDTURfU0NBTiwgJnNjYW4sIHNpemVvZihzY2FuKSk7CisJaWYgKHJldCA+PSAwKQorCQlyZXQgPSBhdDc2X2dldF9jbWRfc3RhdHVzKHByaXYtPnVkZXYsIENNRF9TQ0FOKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zdGFydF9pYnNzKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJc3RydWN0IGF0NzZfcmVxX2lic3MgYnNzOworCWludCByZXQ7CisKKwlXQVJOX09OKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfT1dOX0lCU1MpOworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX09XTl9JQlNTKQorCQlyZXR1cm4gLUVCVVNZOworCisJbWVtc2V0KCZic3MsIDAsIHNpemVvZihzdHJ1Y3QgYXQ3Nl9yZXFfaWJzcykpOworCW1lbXNldChic3MuYnNzaWQsIDB4ZmYsIEVUSF9BTEVOKTsKKwltZW1jcHkoYnNzLmVzc2lkLCBwcml2LT5lc3NpZCwgSVdfRVNTSURfTUFYX1NJWkUpOworCWJzcy5lc3NpZF9zaXplID0gcHJpdi0+ZXNzaWRfc2l6ZTsKKwlic3MuYnNzX3R5cGUgPSBBREhPQ19NT0RFOworCWJzcy5jaGFubmVsID0gcHJpdi0+Y2hhbm5lbDsKKworCXJldCA9IGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBDTURfU1RBUlRfSUJTUywgJmJzcywKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBhdDc2X3JlcV9pYnNzKSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogc3RhcnRfaWJzcyBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGF0NzZfd2FpdF9jb21wbGV0aW9uKHByaXYsIENNRF9TVEFSVF9JQlNTKTsKKwlpZiAocmV0ICE9IENNRF9TVEFUVVNfQ09NUExFVEUpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogc3RhcnRfaWJzcyBmYWlsZWQgdG8gY29tcGxldGUsICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGF0NzZfZ2V0X2N1cnJlbnRfYnNzaWQocHJpdik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBhdDc2X2dldF9jdXJyZW50X2NoYW5uZWwocHJpdik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBub3Qgc3VyZSB3aGF0IHRoaXMgaXMgZ29vZCBmb3IgPz8/ICovCisJcHJpdi0+bWliX2J1Zi50eXBlID0gTUlCX01BQ19NR01UOworCXByaXYtPm1pYl9idWYuc2l6ZSA9IDE7CisJcHJpdi0+bWliX2J1Zi5pbmRleCA9IG9mZnNldG9mKHN0cnVjdCBtaWJfbWFjX21nbXQsIGlic3NfY2hhbmdlKTsKKwlwcml2LT5taWJfYnVmLmRhdGEuYnl0ZSA9IDA7CisKKwlyZXQgPSBhdDc2X3NldF9taWIocHJpdiwgJnByaXYtPm1pYl9idWYpOworCWlmIChyZXQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHNldF9taWIgKGlic3MgY2hhbmdlIG9rKSBmYWlsZWQ6ICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCW5ldGlmX2NhcnJpZXJfb24ocHJpdi0+bmV0ZGV2KTsKKwluZXRpZl9zdGFydF9xdWV1ZShwcml2LT5uZXRkZXYpOworCXJldHVybiAwOworfQorCisvKiBSZXF1ZXN0IGNhcmQgdG8gam9pbiBCU1MgaW4gbWFuYWdlZCBvciBhZC1ob2MgbW9kZSAqLworc3RhdGljIGludCBhdDc2X2pvaW5fYnNzKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBic3NfaW5mbyAqcHRyKQoreworCXN0cnVjdCBhdDc2X3JlcV9qb2luIGpvaW47CisKKwlCVUdfT04oIXB0cik7CisKKwltZW1zZXQoJmpvaW4sIDAsIHNpemVvZihzdHJ1Y3QgYXQ3Nl9yZXFfam9pbikpOworCW1lbWNweShqb2luLmJzc2lkLCBwdHItPmJzc2lkLCBFVEhfQUxFTik7CisJbWVtY3B5KGpvaW4uZXNzaWQsIHB0ci0+c3NpZCwgcHRyLT5zc2lkX2xlbik7CisJam9pbi5lc3NpZF9zaXplID0gcHRyLT5zc2lkX2xlbjsKKwlqb2luLmJzc190eXBlID0gKHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9BREhPQyA/IDEgOiAyKTsKKwlqb2luLmNoYW5uZWwgPSBwdHItPmNoYW5uZWw7CisJam9pbi50aW1lb3V0ID0gY3B1X3RvX2xlMTYoMjAwMCk7CisKKwlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsCisJCSAiJXMgam9pbiBhZGRyICVzIHNzaWQgJXMgdHlwZSAlZCBjaCAlZCB0aW1lb3V0ICVkIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwgbWFjMnN0cihqb2luLmJzc2lkKSwgam9pbi5lc3NpZCwKKwkJIGpvaW4uYnNzX3R5cGUsIGpvaW4uY2hhbm5lbCwgbGUxNl90b19jcHUoam9pbi50aW1lb3V0KSk7CisJcmV0dXJuIGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBDTURfSk9JTiwgJmpvaW4sCisJCQkJICAgICBzaXplb2Yoc3RydWN0IGF0NzZfcmVxX2pvaW4pKTsKK30KKworLyogQ2FsY3VsYXRlIHBhZGRpbmcgZnJvbSB0eGJ1Zi0+d2xlbmd0aCAod2hpY2ggZXhjbHVkZXMgdGhlIFVTQiBUWCBoZWFkZXIpLAorICAgbGlrZWx5IHRvIGNvbXBlbnNhdGUgYSBmbGF3IGluIHRoZSBBVDc2QzUwM0EgVVNCIHBhcnQgLi4uICovCitzdGF0aWMgaW5saW5lIGludCBhdDc2X2NhbGNfcGFkZGluZyhpbnQgd2xlbikKK3sKKwkvKiBhZGQgdGhlIFVTQiBUWCBoZWFkZXIgKi8KKwl3bGVuICs9IEFUNzZfVFhfSERSTEVOOworCisJd2xlbiA9IHdsZW4gJSA2NDsKKworCWlmICh3bGVuIDwgNTApCisJCXJldHVybiA1MCAtIHdsZW47CisKKwlpZiAod2xlbiA+PSA2MSkKKwkJcmV0dXJuIDY0ICsgNTAgLSB3bGVuOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFdlIGFyZSBkb2luZyBhIGxvdCBvZiB0aGluZ3MgaGVyZSBpbiBhbiBpbnRlcnJ1cHQuIE5lZWQKKyAgIGEgYmggaGFuZGxlciAoV2F0Y2hpbmcgVFYgd2l0aCBhIFRWIGNhcmQgaXMgcHJvYmFibHkKKyAgIGEgZ29vZCB0ZXN0OiBpZiB5b3Ugc2VlIGZsaWNrZXJzLCB3ZSBhcmUgZG9pbmcgdG9vIG11Y2guCisgICBDdXJyZW50bHkgSSBkbyBzZWUgZmxpY2tlcnMuLi4gZXZlbiB3aXRoIG91ciB0YXNrbGV0IDotKCApCisgICBNYXliZSBiZWNhdXNlIHRoZSBidHR2IGRyaXZlciBhbmQgdXNiLXVoY2kgdXNlIHRoZSBzYW1lIGludGVycnVwdAorKi8KKy8qIE9yIG1heWJlIGJlY2F1c2Ugb3VyIEJIIGhhbmRsZXIgaXMgcHJlZW1wdGluZyBidHR2J3MgQkggaGFuZGxlci4uIEJIcyBkb24ndAorICogc29sdmUgZXZlcnl0aGluZy4uIChhbGV4KSAqLworc3RhdGljIHZvaWQgYXQ3Nl9yeF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IHVyYi0+Y29udGV4dDsKKworCXByaXYtPnJ4X3Rhc2tsZXQuZGF0YSA9ICh1bnNpZ25lZCBsb25nKXVyYjsKKwl0YXNrbGV0X3NjaGVkdWxlKCZwcml2LT5yeF90YXNrbGV0KTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfdHhfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSB1cmItPmNvbnRleHQ7CisJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzID0gJnByaXYtPnN0YXRzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGF0NzZfdHhfYnVmZmVyICptZ210X2J1ZjsKKwlpbnQgcmV0OworCisJc3dpdGNoICh1cmItPnN0YXR1cykgeworCWNhc2UgMDoKKwkJc3RhdHMtPnR4X3BhY2tldHMrKzsKKwkJYnJlYWs7CisJY2FzZSAtRU5PRU5UOgorCWNhc2UgLUVDT05OUkVTRVQ6CisJCS8qIHVyYiBoYXMgYmVlbiB1bmxpbmtlZCAqLworCQlyZXR1cm47CisJZGVmYXVsdDoKKwkJYXQ3Nl9kYmcoREJHX1VSQiwgIiVzIC0gbm9uemVybyB0eCBzdGF0dXMgcmVjZWl2ZWQ6ICVkIiwKKwkJCSBfX2Z1bmNfXywgdXJiLT5zdGF0dXMpOworCQlzdGF0cy0+dHhfZXJyb3JzKys7CisJCWJyZWFrOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5tZ210X3NwaW5sb2NrLCBmbGFncyk7CisJbWdtdF9idWYgPSBwcml2LT5uZXh0X21nbXRfYnVsazsKKwlwcml2LT5uZXh0X21nbXRfYnVsayA9IE5VTEw7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bWdtdF9zcGlubG9jaywgZmxhZ3MpOworCisJaWYgKCFtZ210X2J1ZikgeworCQluZXRpZl93YWtlX3F1ZXVlKHByaXYtPm5ldGRldik7CisJCXJldHVybjsKKwl9CisKKwkvKiB3ZSBkb24ndCBjb3B5IHRoZSBwYWRkaW5nIGJ5dGVzLCBidXQgYWRkIHRoZW0KKwkgICB0byB0aGUgbGVuZ3RoICovCisJbWVtY3B5KHByaXYtPmJ1bGtfb3V0X2J1ZmZlciwgbWdtdF9idWYsCisJICAgICAgIGxlMTZfdG9fY3B1KG1nbXRfYnVmLT53bGVuZ3RoKSArIEFUNzZfVFhfSERSTEVOKTsKKwl1c2JfZmlsbF9idWxrX3VyYihwcml2LT50eF91cmIsIHByaXYtPnVkZXYsIHByaXYtPnR4X3BpcGUsCisJCQkgIHByaXYtPmJ1bGtfb3V0X2J1ZmZlciwKKwkJCSAgbGUxNl90b19jcHUobWdtdF9idWYtPndsZW5ndGgpICsgbWdtdF9idWYtPnBhZGRpbmcgKworCQkJICBBVDc2X1RYX0hEUkxFTiwgYXQ3Nl90eF9jYWxsYmFjaywgcHJpdik7CisJcmV0ID0gdXNiX3N1Ym1pdF91cmIocHJpdi0+dHhfdXJiLCBHRlBfQVRPTUlDKTsKKwlpZiAocmV0KQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBlcnJvciBpbiB0eCBzdWJtaXQgdXJiOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworCWtmcmVlKG1nbXRfYnVmKTsKK30KKworLyogU2VuZCBhIG1hbmFnZW1lbnQgZnJhbWUgb24gYnVsay1vdXQuICB0eGJ1Zi0+d2xlbmd0aCBtdXN0IGJlIHNldCAqLworc3RhdGljIGludCBhdDc2X3R4X21nbXQoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwgc3RydWN0IGF0NzZfdHhfYnVmZmVyICp0eGJ1ZikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCByZXQ7CisJaW50IHVyYl9zdGF0dXM7CisJdm9pZCAqb2xkYnVmID0gTlVMTDsKKworCW5ldGlmX2NhcnJpZXJfb2ZmKHByaXYtPm5ldGRldik7CS8qIHN0b3AgbmV0ZGV2IHdhdGNoZG9nICovCisJbmV0aWZfc3RvcF9xdWV1ZShwcml2LT5uZXRkZXYpOwkvKiBzdG9wIHR4IGRhdGEgcGFja2V0cyAqLworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPm1nbXRfc3BpbmxvY2ssIGZsYWdzKTsKKworCXVyYl9zdGF0dXMgPSBwcml2LT50eF91cmItPnN0YXR1czsKKwlpZiAodXJiX3N0YXR1cyA9PSAtRUlOUFJPR1JFU1MpIHsKKwkJLyogY2Fubm90IHRyYW5zbWl0IG5vdywgcHV0IGluIHRoZSBxdWV1ZSAqLworCQlvbGRidWYgPSBwcml2LT5uZXh0X21nbXRfYnVsazsKKwkJcHJpdi0+bmV4dF9tZ210X2J1bGsgPSB0eGJ1ZjsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bWdtdF9zcGlubG9jaywgZmxhZ3MpOworCisJaWYgKG9sZGJ1ZikgeworCQkvKiBhIGRhdGEvbWdtdCB0eCBpcyBhbHJlYWR5IHBlbmRpbmcgaW4gdGhlIFVSQiAtCisJCSAgIGlmIHRoaXMgaXMgbm8gZXJyb3IgaW4gc29tZSBzaXR1YXRpb25zIHdlIG11c3QKKwkJICAgaW1wbGVtZW50IGEgcXVldWUgb3Igc2lsZW50bHkgbW9kaWZ5IHRoZSBvbGQgbXNnICovCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHJlbW92ZWQgcGVuZGluZyBtZ210IGJ1ZmZlciAlc1xuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgaGV4MnN0cihvbGRidWYsIDY0KSk7CisJCWtmcmVlKG9sZGJ1Zik7CisJCXJldHVybiAwOworCX0KKworCXR4YnVmLT50eF9yYXRlID0gVFhfUkFURV8xTUJJVDsKKwl0eGJ1Zi0+cGFkZGluZyA9IGF0NzZfY2FsY19wYWRkaW5nKGxlMTZfdG9fY3B1KHR4YnVmLT53bGVuZ3RoKSk7CisJbWVtc2V0KHR4YnVmLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKHR4YnVmLT5yZXNlcnZlZCkpOworCisJaWYgKHByaXYtPm5leHRfbWdtdF9idWxrKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBVUkIgc3RhdHVzICVkLCBidXQgbWdtdCBpcyBwZW5kaW5nXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCB1cmJfc3RhdHVzKTsKKworCWF0NzZfZGJnKERCR19UWF9NR01ULAorCQkgIiVzOiB0eCBtZ210OiB3bGVuICVkIHR4X3JhdGUgJWQgcGFkICVkICVzIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwgbGUxNl90b19jcHUodHhidWYtPndsZW5ndGgpLAorCQkgdHhidWYtPnR4X3JhdGUsIHR4YnVmLT5wYWRkaW5nLAorCQkgaGV4MnN0cih0eGJ1Zi0+cGFja2V0LCBsZTE2X3RvX2NwdSh0eGJ1Zi0+d2xlbmd0aCkpKTsKKworCS8qIHR4YnVmIHdhcyBub3QgY29uc3VtZWQgYWJvdmUgLT4gc2VuZCBtZ210IG1zZyBpbW1lZGlhdGVseSAqLworCW1lbWNweShwcml2LT5idWxrX291dF9idWZmZXIsIHR4YnVmLAorCSAgICAgICBsZTE2X3RvX2NwdSh0eGJ1Zi0+d2xlbmd0aCkgKyBBVDc2X1RYX0hEUkxFTik7CisJdXNiX2ZpbGxfYnVsa191cmIocHJpdi0+dHhfdXJiLCBwcml2LT51ZGV2LCBwcml2LT50eF9waXBlLAorCQkJICBwcml2LT5idWxrX291dF9idWZmZXIsCisJCQkgIGxlMTZfdG9fY3B1KHR4YnVmLT53bGVuZ3RoKSArIHR4YnVmLT5wYWRkaW5nICsKKwkJCSAgQVQ3Nl9UWF9IRFJMRU4sIGF0NzZfdHhfY2FsbGJhY2ssIHByaXYpOworCXJldCA9IHVzYl9zdWJtaXRfdXJiKHByaXYtPnR4X3VyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHJldCkKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogZXJyb3IgaW4gdHggc3VibWl0IHVyYjogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwlrZnJlZSh0eGJ1Zik7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBHbyB0byB0aGUgbmV4dCBpbmZvcm1hdGlvbiBlbGVtZW50ICovCitzdGF0aWMgaW5saW5lIHZvaWQgbmV4dF9pZShzdHJ1Y3QgaWVlZTgwMjExX2luZm9fZWxlbWVudCAqKmllKQoreworCSppZSA9IChzdHJ1Y3QgaWVlZTgwMjExX2luZm9fZWxlbWVudCAqKSgmKCppZSktPmRhdGFbKCppZSktPmxlbl0pOworfQorCisvKiBDaGFsbGVuZ2UgaXMgdGhlIGNoYWxsZW5nZSBzdHJpbmcgKGluIFRMViBmb3JtYXQpCisgICB3ZSBnb3Qgd2l0aCBzZXFfbnIgMiBmb3Igc2hhcmVkIHNlY3JldCBhdXRoZW50aWNhdGlvbiBvbmx5IGFuZAorICAgc2VuZCBpbiBzZXFfbnIgMyBXRVAgZW5jcnlwdGVkIHRvIHByb3ZlIHdlIGhhdmUgdGhlIGNvcnJlY3QgV0VQIGtleTsKKyAgIG90aGVyd2lzZSBpdCBpcyBOVUxMICovCitzdGF0aWMgaW50IGF0NzZfYXV0aF9yZXEoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwgc3RydWN0IGJzc19pbmZvICpic3MsCisJCQkgaW50IHNlcV9uciwgc3RydWN0IGllZWU4MDIxMV9pbmZvX2VsZW1lbnQgKmNoYWxsZW5nZSkKK3sKKwlzdHJ1Y3QgYXQ3Nl90eF9idWZmZXIgKnR4X2J1ZmZlcjsKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqbWdtdDsKKwlzdHJ1Y3QgaWVlZTgwMjExX2F1dGggKnJlcTsKKwlpbnQgYnVmX2xlbiA9IChzZXFfbnIgIT0gMyA/IEFVVEhfRlJBTUVfU0laRSA6CisJCSAgICAgICBBVVRIX0ZSQU1FX1NJWkUgKyAxICsgMSArIGNoYWxsZW5nZS0+bGVuKTsKKworCUJVR19PTighYnNzKTsKKwlCVUdfT04oc2VxX25yID09IDMgJiYgIWNoYWxsZW5nZSk7CisJdHhfYnVmZmVyID0ga21hbGxvYyhidWZfbGVuICsgTUFYX1BBRERJTkdfU0laRSwgR0ZQX0FUT01JQyk7CisJaWYgKCF0eF9idWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcmVxID0gKHN0cnVjdCBpZWVlODAyMTFfYXV0aCAqKXR4X2J1ZmZlci0+cGFja2V0OworCW1nbXQgPSAmcmVxLT5oZWFkZXI7CisKKwkvKiBtYWtlIHdpcmVsZXNzIGhlYWRlciAqLworCS8qIGZpcnN0IGF1dGggbXNnIGlzIG5vdCBlbmNyeXB0ZWQsIG9ubHkgdGhlIHNlY29uZCAoc2VxX25yID09IDMpICovCisJbWdtdC0+ZnJhbWVfY3RsID0KKwkgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZUWVBFX01HTVQgfCBJRUVFODAyMTFfU1RZUEVfQVVUSCB8CisJCQkoc2VxX25yID09IDMgPyBJRUVFODAyMTFfRkNUTF9QUk9URUNURUQgOiAwKSk7CisKKwltZ210LT5kdXJhdGlvbl9pZCA9IGNwdV90b19sZTE2KDB4ODAwMCk7CisJbWVtY3B5KG1nbXQtPmFkZHIxLCBic3MtPmJzc2lkLCBFVEhfQUxFTik7CisJbWVtY3B5KG1nbXQtPmFkZHIyLCBwcml2LT5uZXRkZXYtPmRldl9hZGRyLCBFVEhfQUxFTik7CisJbWVtY3B5KG1nbXQtPmFkZHIzLCBic3MtPmJzc2lkLCBFVEhfQUxFTik7CisJbWdtdC0+c2VxX2N0bCA9IGNwdV90b19sZTE2KDApOworCisJcmVxLT5hbGdvcml0aG0gPSBjcHVfdG9fbGUxNihwcml2LT5hdXRoX21vZGUpOworCXJlcS0+dHJhbnNhY3Rpb24gPSBjcHVfdG9fbGUxNihzZXFfbnIpOworCXJlcS0+c3RhdHVzID0gY3B1X3RvX2xlMTYoMCk7CisKKwlpZiAoc2VxX25yID09IDMpCisJCW1lbWNweShyZXEtPmluZm9fZWxlbWVudCwgY2hhbGxlbmdlLCAxICsgMSArIGNoYWxsZW5nZS0+bGVuKTsKKworCS8qIGluaXQuIGF0NzZfcHJpdiB0eCBoZWFkZXIgKi8KKwl0eF9idWZmZXItPndsZW5ndGggPSBjcHVfdG9fbGUxNihidWZfbGVuIC0gQVQ3Nl9UWF9IRFJMRU4pOworCWF0NzZfZGJnKERCR19UWF9NR01ULCAiJXM6IEF1dGhSZXEgYnNzaWQgJXMgYWxnICVkIHNlcV9uciAlZCIsCisJCSBwcml2LT5uZXRkZXYtPm5hbWUsIG1hYzJzdHIobWdtdC0+YWRkcjMpLAorCQkgbGUxNl90b19jcHUocmVxLT5hbGdvcml0aG0pLCBsZTE2X3RvX2NwdShyZXEtPnRyYW5zYWN0aW9uKSk7CisJaWYgKHNlcV9uciA9PSAzKQorCQlhdDc2X2RiZyhEQkdfVFhfTUdNVCwgIiVzOiBBdXRoUmVxIGNoYWxsZW5nZTogJXMgLi4uIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGhleDJzdHIocmVxLT5pbmZvX2VsZW1lbnQsIDE4KSk7CisKKwkvKiBlaXRoZXIgc2VuZCBpbW1lZGlhdGVseSAoaWYgbm8gZGF0YSB0eCBpcyBwZW5kaW5nCisJICAgb3IgcHV0IGl0IGluIHBlbmRpbmcgbGlzdCAqLworCXJldHVybiBhdDc2X3R4X21nbXQocHJpdiwgdHhfYnVmZmVyKTsKK30KKworc3RhdGljIGludCBhdDc2X2Fzc29jX3JlcShzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCBzdHJ1Y3QgYnNzX2luZm8gKmJzcykKK3sKKwlzdHJ1Y3QgYXQ3Nl90eF9idWZmZXIgKnR4X2J1ZmZlcjsKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqbWdtdDsKKwlzdHJ1Y3QgaWVlZTgwMjExX2Fzc29jX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaWVlZTgwMjExX2luZm9fZWxlbWVudCAqaWU7CisJY2hhciAqZXNzaWQ7CisJaW50IGVzc2lkX2xlbjsKKwl1MTYgY2FwYTsKKworCUJVR19PTighYnNzKTsKKworCXR4X2J1ZmZlciA9IGttYWxsb2MoQVNTT0NSRVFfTUFYX1NJWkUgKyBNQVhfUEFERElOR19TSVpFLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXR4X2J1ZmZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXEgPSAoc3RydWN0IGllZWU4MDIxMV9hc3NvY19yZXF1ZXN0ICopdHhfYnVmZmVyLT5wYWNrZXQ7CisJbWdtdCA9ICZyZXEtPmhlYWRlcjsKKwlpZSA9IHJlcS0+aW5mb19lbGVtZW50OworCisJLyogbWFrZSB3aXJlbGVzcyBoZWFkZXIgKi8KKwltZ210LT5mcmFtZV9jdGwgPSBjcHVfdG9fbGUxNihJRUVFODAyMTFfRlRZUEVfTUdNVCB8CisJCQkJICAgICAgSUVFRTgwMjExX1NUWVBFX0FTU09DX1JFUSk7CisKKwltZ210LT5kdXJhdGlvbl9pZCA9IGNwdV90b19sZTE2KDB4ODAwMCk7CisJbWVtY3B5KG1nbXQtPmFkZHIxLCBic3MtPmJzc2lkLCBFVEhfQUxFTik7CisJbWVtY3B5KG1nbXQtPmFkZHIyLCBwcml2LT5uZXRkZXYtPmRldl9hZGRyLCBFVEhfQUxFTik7CisJbWVtY3B5KG1nbXQtPmFkZHIzLCBic3MtPmJzc2lkLCBFVEhfQUxFTik7CisJbWdtdC0+c2VxX2N0bCA9IGNwdV90b19sZTE2KDApOworCisJLyogd2UgbXVzdCBzZXQgdGhlIFByaXZhY3kgYml0IGluIHRoZSBjYXBhYmlsaXRpZXMgdG8gYXNzdXJlIGFuCisJICAgQWdlcmUtYmFzZWQgQVAgd2l0aCBvcHRpb25hbCBXRVAgdHJhbnNtaXRzIGVuY3J5cHRlZCBmcmFtZXMKKwkgICB0byB1cy4gIEFQIG9ubHkgc2V0IHRoZSBQcml2YWN5IGJpdCBpbiB0aGVpciBjYXBhYmlsaXRpZXMKKwkgICBpZiBXRVAgaXMgbWFuZGF0b3J5IGluIHRoZSBCU1MhICovCisJY2FwYSA9IGJzcy0+Y2FwYTsKKwlpZiAocHJpdi0+d2VwX2VuYWJsZWQpCisJCWNhcGEgfD0gV0xBTl9DQVBBQklMSVRZX1BSSVZBQ1k7CisJaWYgKHByaXYtPnByZWFtYmxlX3R5cGUgIT0gUFJFQU1CTEVfVFlQRV9MT05HKQorCQljYXBhIHw9IFdMQU5fQ0FQQUJJTElUWV9TSE9SVF9QUkVBTUJMRTsKKwlyZXEtPmNhcGFiaWxpdHkgPSBjcHVfdG9fbGUxNihjYXBhKTsKKworCXJlcS0+bGlzdGVuX2ludGVydmFsID0gY3B1X3RvX2xlMTYoMiAqIGJzcy0+YmVhY29uX2ludGVydmFsKTsKKworCS8qIHdyaXRlIFRMViBkYXRhIGVsZW1lbnRzICovCisKKwlpZS0+aWQgPSBNRklFX1RZUEVfU1NJRDsKKwlpZS0+bGVuID0gYnNzLT5zc2lkX2xlbjsKKwltZW1jcHkoaWUtPmRhdGEsIGJzcy0+c3NpZCwgYnNzLT5zc2lkX2xlbik7CisJbmV4dF9pZSgmaWUpOworCisJaWUtPmlkID0gTUZJRV9UWVBFX1JBVEVTOworCWllLT5sZW4gPSBzaXplb2YoaHdfcmF0ZXMpOworCW1lbWNweShpZS0+ZGF0YSwgaHdfcmF0ZXMsIHNpemVvZihod19yYXRlcykpOworCW5leHRfaWUoJmllKTsJCS8qIGllIHBvaW50cyBiZWhpbmQgdGhlIHN1cHBfcmF0ZXMgZmllbGQgKi8KKworCS8qIGluaXQuIGF0NzZfcHJpdiB0eCBoZWFkZXIgKi8KKwl0eF9idWZmZXItPndsZW5ndGggPSBjcHVfdG9fbGUxNigodTggKilpZSAtICh1OCAqKW1nbXQpOworCisJaWUgPSByZXEtPmluZm9fZWxlbWVudDsKKwllc3NpZCA9IGllLT5kYXRhOworCWVzc2lkX2xlbiA9IG1pbl90KGludCwgSVdfRVNTSURfTUFYX1NJWkUsIGllLT5sZW4pOworCisJbmV4dF9pZSgmaWUpOwkJLyogcG9pbnRzIHRvIElFIG9mIHJhdGVzIG5vdyAqLworCWF0NzZfZGJnKERCR19UWF9NR01ULAorCQkgIiVzOiBBc3NvY1JlcSBic3NpZCAlcyBjYXBhIDB4JTA0eCBzc2lkICUuKnMgcmF0ZXMgJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBtYWMyc3RyKG1nbXQtPmFkZHIzKSwKKwkJIGxlMTZfdG9fY3B1KHJlcS0+Y2FwYWJpbGl0eSksIGVzc2lkX2xlbiwgZXNzaWQsCisJCSBoZXgyc3RyKGllLT5kYXRhLCBpZS0+bGVuKSk7CisKKwkvKiBlaXRoZXIgc2VuZCBpbW1lZGlhdGVseSAoaWYgbm8gZGF0YSB0eCBpcyBwZW5kaW5nCisJICAgb3IgcHV0IGl0IGluIHBlbmRpbmcgbGlzdCAqLworCXJldHVybiBhdDc2X3R4X21nbXQocHJpdiwgdHhfYnVmZmVyKTsKK30KKworLyogV2UgZ290IHRvIGNoZWNrIHRoZSBic3NfbGlzdCBmb3Igb2xkIGVudHJpZXMgKi8KK3N0YXRpYyB2b2lkIGF0NzZfYnNzX2xpc3RfdGltZW91dCh1bnNpZ25lZCBsb25nIHBhcikKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gKHN0cnVjdCBhdDc2X3ByaXYgKilwYXI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpscHRyLCAqbnB0cjsKKwlzdHJ1Y3QgYnNzX2luZm8gKnB0cjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5ic3NfbGlzdF9zcGlubG9jaywgZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaF9zYWZlKGxwdHIsIG5wdHIsICZwcml2LT5ic3NfbGlzdCkgeworCisJCXB0ciA9IGxpc3RfZW50cnkobHB0ciwgc3RydWN0IGJzc19pbmZvLCBsaXN0KTsKKworCQlpZiAocHRyICE9IHByaXYtPmN1cnJfYnNzCisJCSAgICAmJiB0aW1lX2FmdGVyKGppZmZpZXMsIHB0ci0+bGFzdF9yeCArIEJTU19MSVNUX1RJTUVPVVQpKSB7CisJCQlhdDc2X2RiZyhEQkdfQlNTX1RBQkxFX1JNLAorCQkJCSAiJXM6IGJzc19saXN0OiByZW1vdmluZyBvbGQgQlNTICVzIGNoICVkIiwKKwkJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBtYWMyc3RyKHB0ci0+YnNzaWQpLAorCQkJCSBwdHItPmNoYW5uZWwpOworCQkJbGlzdF9kZWwoJnB0ci0+bGlzdCk7CisJCQlrZnJlZShwdHIpOworCQl9CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7CisJLyogcmVzdGFydCB0aGUgdGltZXIgKi8KKwltb2RfdGltZXIoJnByaXYtPmJzc19saXN0X3RpbWVyLCBqaWZmaWVzICsgQlNTX0xJU1RfVElNRU9VVCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDc2X3NldF9tYWNfc3RhdGUoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCQkgICAgICBlbnVtIG1hY19zdGF0ZSBtYWNfc3RhdGUpCit7CisJYXQ3Nl9kYmcoREJHX01BQ19TVEFURSwgIiVzIHN0YXRlOiAlcyIsIHByaXYtPm5ldGRldi0+bmFtZSwKKwkJIG1hY19zdGF0ZXNbbWFjX3N0YXRlXSk7CisJcHJpdi0+bWFjX3N0YXRlID0gbWFjX3N0YXRlOworfQorCitzdGF0aWMgdm9pZCBhdDc2X2R1bXBfYnNzX3RhYmxlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJc3RydWN0IGJzc19pbmZvICpwdHI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpscHRyOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7CisKKwlhdDc2X2RiZyhEQkdfQlNTX1RBQkxFLCAiJXMgQlNTIHRhYmxlIChjdXJyPSVwKToiLCBwcml2LT5uZXRkZXYtPm5hbWUsCisJCSBwcml2LT5jdXJyX2Jzcyk7CisKKwlsaXN0X2Zvcl9lYWNoKGxwdHIsICZwcml2LT5ic3NfbGlzdCkgeworCQlwdHIgPSBsaXN0X2VudHJ5KGxwdHIsIHN0cnVjdCBic3NfaW5mbywgbGlzdCk7CisJCWF0NzZfZGJnKERCR19CU1NfVEFCTEUsICIweCVwOiBic3NpZCAlcyBjaGFubmVsICVkIHNzaWQgJS4qcyAiCisJCQkgIiglcykgY2FwYSAweCUwNHggcmF0ZXMgJXMgcnNzaSAlZCBsaW5rICVkIG5vaXNlICVkIiwKKwkJCSBwdHIsIG1hYzJzdHIocHRyLT5ic3NpZCksIHB0ci0+Y2hhbm5lbCwgcHRyLT5zc2lkX2xlbiwKKwkJCSBwdHItPnNzaWQsIGhleDJzdHIocHRyLT5zc2lkLCBwdHItPnNzaWRfbGVuKSwKKwkJCSBwdHItPmNhcGEsIGhleDJzdHIocHRyLT5yYXRlcywgcHRyLT5yYXRlc19sZW4pLAorCQkJIHB0ci0+cnNzaSwgcHRyLT5saW5rX3F1YWwsIHB0ci0+bm9pc2VfbGV2ZWwpOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5ic3NfbGlzdF9zcGlubG9jaywgZmxhZ3MpOworfQorCisvKiBDYWxsZWQgdXBvbiBzdWNjZXNzZnVsIGFzc29jaWF0aW9uIHRvIG1hcmsgaW50ZXJmYWNlIGFzIGNvbm5lY3RlZCAqLworc3RhdGljIHZvaWQgYXQ3Nl93b3JrX2Fzc29jX2RvbmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGF0NzZfcHJpdiwKKwkJCQkJICAgICAgd29ya19hc3NvY19kb25lKTsKKworCW11dGV4X2xvY2soJnByaXYtPm10eCk7CisKKwlXQVJOX09OKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfQVNTT0MpOworCVdBUk5fT04oIXByaXYtPmN1cnJfYnNzKTsKKwlpZiAocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19BU1NPQyB8fCAhcHJpdi0+Y3Vycl9ic3MpCisJCWdvdG8gZXhpdDsKKworCWlmIChwcml2LT5pd19tb2RlID09IElXX01PREVfSU5GUkEpIHsKKwkJaWYgKHByaXYtPnBtX21vZGUgIT0gQVQ3Nl9QTV9PRkYpIHsKKwkJCS8qIGNhbGN1bGF0ZSB0aGUgbGlzdGVuIGludGVydmFsIGluIHVuaXRzIG9mCisJCQkgICBiZWFjb24gaW50ZXJ2YWxzIG9mIHRoZSBjdXJyX2JzcyAqLworCQkJdTMyIHBtX3BlcmlvZF9iZWFjb24gPSAocHJpdi0+cG1fcGVyaW9kID4+IDEwKSAvCisJCQkgICAgcHJpdi0+Y3Vycl9ic3MtPmJlYWNvbl9pbnRlcnZhbDsKKworCQkJcG1fcGVyaW9kX2JlYWNvbiA9IG1heChwbV9wZXJpb2RfYmVhY29uLCAydSk7CisJCQlwbV9wZXJpb2RfYmVhY29uID0gbWluKHBtX3BlcmlvZF9iZWFjb24sIDB4ZmZmZnUpOworCisJCQlhdDc2X2RiZyhEQkdfUE0sCisJCQkJICIlczogcG1fbW9kZSAlZCBhc3NvYyBpZCAweCV4IGxpc3RlbiBpbnQgJWQiLAorCQkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIHByaXYtPnBtX21vZGUsCisJCQkJIHByaXYtPmFzc29jX2lkLCBwbV9wZXJpb2RfYmVhY29uKTsKKworCQkJYXQ3Nl9zZXRfYXNzb2NpZChwcml2LCBwcml2LT5hc3NvY19pZCk7CisJCQlhdDc2X3NldF9saXN0ZW5faW50ZXJ2YWwocHJpdiwgKHUxNilwbV9wZXJpb2RfYmVhY29uKTsKKwkJfQorCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2JlYWNvbiwgQkVBQ09OX1RJTUVPVVQpOworCX0KKwlhdDc2X3NldF9wbV9tb2RlKHByaXYpOworCisJbmV0aWZfY2Fycmllcl9vbihwcml2LT5uZXRkZXYpOworCW5ldGlmX3dha2VfcXVldWUocHJpdi0+bmV0ZGV2KTsKKwlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX0NPTk5FQ1RFRCk7CisJYXQ3Nl9pd2V2ZW50X2Jzc19jb25uZWN0KHByaXYtPm5ldGRldiwgcHJpdi0+Y3Vycl9ic3MtPmJzc2lkKTsKKwlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsICIlczogY29ubmVjdGVkIHRvIEJTU0lEICVzIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwgbWFjMnN0cihwcml2LT5jdXJyX2Jzcy0+YnNzaWQpKTsKKworZXhpdDoKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7Cit9CisKKy8qIFdlIG9ubHkgc3RvcmUgdGhlIG5ldyBtYWMgYWRkcmVzcyBpbiBuZXRkZXYgc3RydWN0LAorICAgaXQgZ2V0cyBzZXQgd2hlbiB0aGUgbmV0ZGV2IGlzIG9wZW5lZC4gKi8KK3N0YXRpYyBpbnQgYXQ3Nl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqYWRkcikKK3sKKwlzdHJ1Y3Qgc29ja2FkZHIgKm1hYyA9IGFkZHI7CisJbWVtY3B5KG5ldGRldi0+ZGV2X2FkZHIsIG1hYy0+c2FfZGF0YSwgRVRIX0FMRU4pOworCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKmF0NzZfZ2V0X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJcmV0dXJuICZwcml2LT5zdGF0czsKK30KKworc3RhdGljIHN0cnVjdCBpd19zdGF0aXN0aWNzICphdDc2X2dldF93aXJlbGVzc19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiUkVUVVJOIHF1YWwgJWQgbGV2ZWwgJWQgbm9pc2UgJWQgdXBkYXRlZCAlZCIsCisJCSBwcml2LT53c3RhdHMucXVhbC5xdWFsLCBwcml2LT53c3RhdHMucXVhbC5sZXZlbCwKKwkJIHByaXYtPndzdGF0cy5xdWFsLm5vaXNlLCBwcml2LT53c3RhdHMucXVhbC51cGRhdGVkKTsKKworCXJldHVybiAmcHJpdi0+d3N0YXRzOworfQorCitzdGF0aWMgdm9pZCBhdDc2X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgcHJvbWlzYzsKKworCXByb21pc2MgPSAoKG5ldGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgIT0gMCk7CisJaWYgKHByb21pc2MgIT0gcHJpdi0+cHJvbWlzYykgeworCQkvKiBUaGlzIGdldHMgY2FsbGVkIGluIGludGVycnVwdCwgbXVzdCByZXNjaGVkdWxlICovCisJCXByaXYtPnByb21pc2MgPSBwcm9taXNjOworCQlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX3NldF9wcm9taXNjKTsKKwl9Cit9CisKKy8qIFN0b3AgYWxsIG5ldHdvcmsgYWN0aXZpdHksIGZsdXNoIGFsbCBwZW5kaW5nIHRhc2tzICovCitzdGF0aWMgdm9pZCBhdDc2X3F1aWVzY2Uoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbmV0aWZfc3RvcF9xdWV1ZShwcml2LT5uZXRkZXYpOworCW5ldGlmX2NhcnJpZXJfb2ZmKHByaXYtPm5ldGRldik7CisKKwlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX0lOSVQpOworCisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfZ2V0X3NjYW4pOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2JlYWNvbik7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYXV0aCk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYXNzb2MpOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX3Jlc3RhcnQpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPm1nbXRfc3BpbmxvY2ssIGZsYWdzKTsKKwlrZnJlZShwcml2LT5uZXh0X21nbXRfYnVsayk7CisJcHJpdi0+bmV4dF9tZ210X2J1bGsgPSBOVUxMOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPm1nbXRfc3BpbmxvY2ssIGZsYWdzKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGF0NzZfcHJpdiBpbXBsZW1lbnRhdGlvbnMgb2YgaXdfaGFuZGxlciBmdW5jdGlvbnM6CisgKi8KK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2NvbW1pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgIHZvaWQgKm51bGwsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXMgJXM6IHJlc3RhcnRpbmcgdGhlIGRldmljZSIsIG5ldGRldi0+bmFtZSwKKwkJIF9fZnVuY19fKTsKKworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0lOSVQpCisJCWF0NzZfcXVpZXNjZShwcml2KTsKKworCS8qIFdhaXQgaGFsZiBzZWNvbmQgYmVmb3JlIHRoZSByZXN0YXJ0IHRvIHByb2Nlc3Mgc3Vic2VxdWVudAorCSAqIHJlcXVlc3RzIGZyb20gdGhlIHNhbWUgaXdjb25maWcgaW4gYSBzaW5nbGUgcmVzdGFydCAqLworCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfcmVzdGFydCwgSFogLyAyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9nZXRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBjaGFyICpuYW1lLCBjaGFyICpleHRyYSkKK3sKKwlzdHJjcHkobmFtZSwgIklFRUUgODAyLjExYiIpOworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DR0lXTkFNRSAtIG5hbWUgJXMiLCBuZXRkZXYtPm5hbWUsIG5hbWUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfZnJlcShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBzdHJ1Y3QgaXdfZnJlcSAqZnJlcSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50IGNoYW4gPSAtMTsKKwlpbnQgcmV0ID0gLUVJV0NPTU1JVDsKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ1NJV0ZSRVEgLSBmcmVxLm0gJWQgZnJlcS5lICVkIiwKKwkJIG5ldGRldi0+bmFtZSwgZnJlcS0+bSwgZnJlcS0+ZSk7CisKKwlpZiAoKGZyZXEtPmUgPT0gMCkgJiYgKGZyZXEtPm0gPD0gMTAwMCkpCisJCS8qIFNldHRpbmcgYnkgY2hhbm5lbCBudW1iZXIgKi8KKwkJY2hhbiA9IGZyZXEtPm07CisJZWxzZSB7CisJCS8qIFNldHRpbmcgYnkgZnJlcXVlbmN5IC0gc2VhcmNoIHRoZSB0YWJsZSAqLworCQlpbnQgbXVsdCA9IDE7CisJCWludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCAoNiAtIGZyZXEtPmUpOyBpKyspCisJCQltdWx0ICo9IDEwOworCisJCWZvciAoaSA9IDA7IGkgPCBOVU1fQ0hBTk5FTFM7IGkrKykgeworCQkJaWYgKGZyZXEtPm0gPT0gKGNoYW5uZWxfZnJlcXVlbmN5W2ldICogbXVsdCkpCisJCQkJY2hhbiA9IGkgKyAxOworCQl9CisJfQorCisJaWYgKGNoYW4gPCAxIHx8ICFwcml2LT5kb21haW4pCisJCS8qIG5vbi1wb3NpdGl2ZSBjaGFubmVscyBhcmUgaW52YWxpZAorCQkgKiB3ZSBuZWVkIGEgZG9tYWluIGluZm8gdG8gc2V0IHRoZSBjaGFubmVsCisJCSAqIGVpdGhlciB0aGF0IG9yIGFuIGludmFsaWQgZnJlcXVlbmN5IHdhcworCQkgKiBwcm92aWRlZCBieSB0aGUgdXNlciAqLworCQlyZXQgPSAtRUlOVkFMOworCWVsc2UgaWYgKCEocHJpdi0+ZG9tYWluLT5jaGFubmVsX21hcCAmICgxIDw8IChjaGFuIC0gMSkpKSkgeworCQlwcmludGsoS0VSTl9JTkZPICIlczogY2hhbm5lbCAlZCBub3QgYWxsb3dlZCBmb3IgZG9tYWluICVzXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBjaGFuLCBwcml2LT5kb21haW4tPm5hbWUpOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworCWlmIChyZXQgPT0gLUVJV0NPTU1JVCkgeworCQlwcml2LT5jaGFubmVsID0gY2hhbjsKKwkJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NTSVdGUkVRIC0gY2ggJWQiLCBuZXRkZXYtPm5hbWUsCisJCQkgY2hhbik7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X2ZyZXEoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgc3RydWN0IGl3X2ZyZXEgKmZyZXEsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJZnJlcS0+bSA9IHByaXYtPmNoYW5uZWw7CisJZnJlcS0+ZSA9IDA7CisKKwlpZiAocHJpdi0+Y2hhbm5lbCkKKwkJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdGUkVRIC0gZnJlcSAlbGQgeCAxMGUlZCIsCisJCQkgbmV0ZGV2LT5uYW1lLCBjaGFubmVsX2ZyZXF1ZW5jeVtwcml2LT5jaGFubmVsIC0gMV0sIDYpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdGUkVRIC0gY2ggJWQiLCBuZXRkZXYtPm5hbWUsCisJCSBwcml2LT5jaGFubmVsKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBfX3UzMiAqbW9kZSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ1NJV01PREUgLSAlZCIsIG5ldGRldi0+bmFtZSwgKm1vZGUpOworCisJaWYgKCgqbW9kZSAhPSBJV19NT0RFX0FESE9DKSAmJiAoKm1vZGUgIT0gSVdfTU9ERV9JTkZSQSkgJiYKKwkgICAgKCptb2RlICE9IElXX01PREVfTU9OSVRPUikpCisJCXJldHVybiAtRUlOVkFMOworCisJcHJpdi0+aXdfbW9kZSA9ICptb2RlOworCWlmIChwcml2LT5pd19tb2RlICE9IElXX01PREVfSU5GUkEpCisJCXByaXYtPnBtX21vZGUgPSBBVDc2X1BNX09GRjsKKworCXJldHVybiAtRUlXQ09NTUlUOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9nZXRfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBfX3UzMiAqbW9kZSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwkqbW9kZSA9IHByaXYtPml3X21vZGU7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ0dJV01PREUgLSAlZCIsIG5ldGRldi0+bmFtZSwgKm1vZGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9yYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgIHN0cnVjdCBpd19wb2ludCAqZGF0YSwgY2hhciAqZXh0cmEpCit7CisJLyogaW5zcGlyZWQgYnkgYXRtZWwuYyAqLworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCXN0cnVjdCBpd19yYW5nZSAqcmFuZ2UgPSAoc3RydWN0IGl3X3JhbmdlICopZXh0cmE7CisJaW50IGk7CisKKwlkYXRhLT5sZW5ndGggPSBzaXplb2Yoc3RydWN0IGl3X3JhbmdlKTsKKwltZW1zZXQocmFuZ2UsIDAsIHNpemVvZihzdHJ1Y3QgaXdfcmFuZ2UpKTsKKworCS8qIFRPRE86IHJhbmdlLT50aHJvdWdocHV0ID0geHh4eHh4OyAqLworCisJcmFuZ2UtPm1pbl9ud2lkID0gMHgwMDAwOworCXJhbmdlLT5tYXhfbndpZCA9IDB4MDAwMDsKKworCS8qIHRoaXMgZHJpdmVyIGRvZXNuJ3QgbWFpbnRhaW4gc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24gKi8KKwlyYW5nZS0+c2Vuc2l0aXZpdHkgPSAwOworCisJcmFuZ2UtPm1heF9xdWFsLnF1YWwgPSAxMDA7CisJcmFuZ2UtPm1heF9xdWFsLmxldmVsID0gMTAwOworCXJhbmdlLT5tYXhfcXVhbC5ub2lzZSA9IDA7CisJcmFuZ2UtPm1heF9xdWFsLnVwZGF0ZWQgPSBJV19RVUFMX05PSVNFX0lOVkFMSUQ7CisKKwlyYW5nZS0+YXZnX3F1YWwucXVhbCA9IDUwOworCXJhbmdlLT5hdmdfcXVhbC5sZXZlbCA9IDUwOworCXJhbmdlLT5hdmdfcXVhbC5ub2lzZSA9IDA7CisJcmFuZ2UtPmF2Z19xdWFsLnVwZGF0ZWQgPSBJV19RVUFMX05PSVNFX0lOVkFMSUQ7CisKKwlyYW5nZS0+Yml0cmF0ZVswXSA9IDEwMDAwMDA7CisJcmFuZ2UtPmJpdHJhdGVbMV0gPSAyMDAwMDAwOworCXJhbmdlLT5iaXRyYXRlWzJdID0gNTUwMDAwMDsKKwlyYW5nZS0+Yml0cmF0ZVszXSA9IDExMDAwMDAwOworCXJhbmdlLT5udW1fYml0cmF0ZXMgPSA0OworCisJcmFuZ2UtPm1pbl9ydHMgPSAwOworCXJhbmdlLT5tYXhfcnRzID0gTUFYX1JUU19USFJFU0hPTEQ7CisKKwlyYW5nZS0+bWluX2ZyYWcgPSBNSU5fRlJBR19USFJFU0hPTEQ7CisJcmFuZ2UtPm1heF9mcmFnID0gTUFYX0ZSQUdfVEhSRVNIT0xEOworCisJcmFuZ2UtPnBtcF9mbGFncyA9IElXX1BPV0VSX1BFUklPRDsKKwlyYW5nZS0+cG10X2ZsYWdzID0gSVdfUE9XRVJfT047CisJcmFuZ2UtPnBtX2NhcGEgPSBJV19QT1dFUl9QRVJJT0QgfCBJV19QT1dFUl9BTExfUjsKKworCXJhbmdlLT5lbmNvZGluZ19zaXplWzBdID0gV0VQX1NNQUxMX0tFWV9MRU47CisJcmFuZ2UtPmVuY29kaW5nX3NpemVbMV0gPSBXRVBfTEFSR0VfS0VZX0xFTjsKKwlyYW5nZS0+bnVtX2VuY29kaW5nX3NpemVzID0gMjsKKwlyYW5nZS0+bWF4X2VuY29kaW5nX3Rva2VucyA9IFdFUF9LRVlTOworCisJLyogYm90aCBXTC0yNDBVIGFuZCBMaW5rc3lzIFdVU0IxMSB2Mi42IHNwZWNpZnkgMTUgZEJtIGFzIG91dHB1dCBwb3dlcgorCSAgIC0gdGFrZSB0aGlzIGZvciBhbGwgKGlnbm9yZSBhbnRlbm5hIGdhaW5zKSAqLworCXJhbmdlLT50eHBvd2VyWzBdID0gMTU7CisJcmFuZ2UtPm51bV90eHBvd2VyID0gMTsKKwlyYW5nZS0+dHhwb3dlcl9jYXBhID0gSVdfVFhQT1dfREJNOworCisJcmFuZ2UtPndlX3ZlcnNpb25fc291cmNlID0gV0lSRUxFU1NfRVhUOworCXJhbmdlLT53ZV92ZXJzaW9uX2NvbXBpbGVkID0gV0lSRUxFU1NfRVhUOworCisJLyogc2FtZSBhcyB0aGUgdmFsdWVzIHVzZWQgaW4gYXRtZWwuYyAqLworCXJhbmdlLT5yZXRyeV9jYXBhID0gSVdfUkVUUllfTElNSVQ7CisJcmFuZ2UtPnJldHJ5X2ZsYWdzID0gSVdfUkVUUllfTElNSVQ7CisJcmFuZ2UtPnJfdGltZV9mbGFncyA9IDA7CisJcmFuZ2UtPm1pbl9yZXRyeSA9IDE7CisJcmFuZ2UtPm1heF9yZXRyeSA9IDI1NTsKKworCXJhbmdlLT5udW1fY2hhbm5lbHMgPSBOVU1fQ0hBTk5FTFM7CisJcmFuZ2UtPm51bV9mcmVxdWVuY3kgPSAwOworCisJZm9yIChpID0gMDsgaSA8IE5VTV9DSEFOTkVMUzsgaSsrKSB7CisJCS8qIHRlc3QgaWYgY2hhbm5lbCBtYXAgYml0IGlzIHJhaXNlZCAqLworCQlpZiAocHJpdi0+ZG9tYWluLT5jaGFubmVsX21hcCAmICgweDEgPDwgaSkpIHsKKwkJCXJhbmdlLT5udW1fZnJlcXVlbmN5ICs9IDE7CisKKwkJCXJhbmdlLT5mcmVxW2ldLmkgPSBpICsgMTsKKwkJCXJhbmdlLT5mcmVxW2ldLm0gPSBjaGFubmVsX2ZyZXF1ZW5jeVtpXSAqIDEwMDAwMDsKKwkJCXJhbmdlLT5mcmVxW2ldLmUgPSAxOwkvKiBmcmVxICogMTBeMSAqLworCQl9CisJfQorCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdSQU5HRSIsIG5ldGRldi0+bmFtZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X3NweShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgcmV0ID0gMDsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DU0lXU1BZIC0gbnVtYmVyIG9mIGFkZHJlc3NlcyAlZCIsCisJCSBuZXRkZXYtPm5hbWUsIGRhdGEtPmxlbmd0aCk7CisKKwlzcGluX2xvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisJcmV0ID0gaXdfaGFuZGxlcl9zZXRfc3B5KHByaXYtPm5ldGRldiwgaW5mbywgKHVuaW9uIGl3cmVxX2RhdGEgKilkYXRhLAorCQkJCSBleHRyYSk7CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9nZXRfc3B5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICBzdHJ1Y3QgaXdfcG9pbnQgKmRhdGEsIGNoYXIgKmV4dHJhKQoreworCisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50IHJldCA9IDA7CisKKwlzcGluX2xvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisJcmV0ID0gaXdfaGFuZGxlcl9nZXRfc3B5KHByaXYtPm5ldGRldiwgaW5mbywKKwkJCQkgKHVuaW9uIGl3cmVxX2RhdGEgKilkYXRhLCBleHRyYSk7CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ0dJV1NQWSAtIG51bWJlciBvZiBhZGRyZXNzZXMgJWQiLAorCQkgbmV0ZGV2LT5uYW1lLCBkYXRhLT5sZW5ndGgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X3RocnNweShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgICAgc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgcmV0OworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NTSVdUSFJTUFkgLSBudW1iZXIgb2YgYWRkcmVzc2VzICVkKSIsCisJCSBuZXRkZXYtPm5hbWUsIGRhdGEtPmxlbmd0aCk7CisKKwlzcGluX2xvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisJcmV0ID0gaXdfaGFuZGxlcl9zZXRfdGhyc3B5KG5ldGRldiwgaW5mbywgKHVuaW9uIGl3cmVxX2RhdGEgKilkYXRhLAorCQkJCSAgICBleHRyYSk7CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9nZXRfdGhyc3B5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgICBzdHJ1Y3QgaXdfcG9pbnQgKmRhdGEsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCByZXQ7CisKKwlzcGluX2xvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisJcmV0ID0gaXdfaGFuZGxlcl9nZXRfdGhyc3B5KG5ldGRldiwgaW5mbywgKHVuaW9uIGl3cmVxX2RhdGEgKilkYXRhLAorCQkJCSAgICBleHRyYSk7CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnNweV9zcGlubG9jayk7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ0dJV1RIUlNQWSAtIG51bWJlciBvZiBhZGRyZXNzZXMgJWQpIiwKKwkJIG5ldGRldi0+bmFtZSwgZGF0YS0+bGVuZ3RoKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX3NldF93YXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgIHN0cnVjdCBzb2NrYWRkciAqYXBfYWRkciwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ1NJV0FQIC0gd2FwL2Jzc2lkICVzIiwgbmV0ZGV2LT5uYW1lLAorCQkgbWFjMnN0cihhcF9hZGRyLT5zYV9kYXRhKSk7CisKKwkvKiBpZiB0aGUgaW5jb21pbmcgYWRkcmVzcyA9PSBmZjpmZjpmZjpmZjpmZjpmZiwgdGhlIHVzZXIgaGFzCisJICAgY2hvc2VuIGFueSBvciBhdXRvIEFQIHByZWZlcmVuY2UgKi8KKwlpZiAoaXNfYnJvYWRjYXN0X2V0aGVyX2FkZHIoYXBfYWRkci0+c2FfZGF0YSkKKwkgICAgfHwgaXNfemVyb19ldGhlcl9hZGRyKGFwX2FkZHItPnNhX2RhdGEpKQorCQlwcml2LT53YW50ZWRfYnNzaWRfdmFsaWQgPSAwOworCWVsc2UgeworCQkvKiB1c2VyIHdhbnRzIHRvIHNldCBhIHByZWZlcnJlZCBBUCBhZGRyZXNzICovCisJCXByaXYtPndhbnRlZF9ic3NpZF92YWxpZCA9IDE7CisJCW1lbWNweShwcml2LT53YW50ZWRfYnNzaWQsIGFwX2FkZHItPnNhX2RhdGEsIEVUSF9BTEVOKTsKKwl9CisKKwlyZXR1cm4gLUVJV0NPTU1JVDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3dhcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgc3RydWN0IHNvY2thZGRyICphcF9hZGRyLCBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKworCWFwX2FkZHItPnNhX2ZhbWlseSA9IEFSUEhSRF9FVEhFUjsKKwltZW1jcHkoYXBfYWRkci0+c2FfZGF0YSwgcHJpdi0+YnNzaWQsIEVUSF9BTEVOKTsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DR0lXQVAgLSB3YXAvYnNzaWQgJXMiLCBuZXRkZXYtPm5hbWUsCisJCSBtYWMyc3RyKGFwX2FkZHItPnNhX2RhdGEpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfc2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgcmV0ID0gMDsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DU0lXU0NBTiIsIG5ldGRldi0+bmFtZSk7CisKKwlpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZwcml2LT5tdHgpKQorCQlyZXR1cm4gLUVJTlRSOworCisJaWYgKCFuZXRpZl9ydW5uaW5nKG5ldGRldikpIHsKKwkJcmV0ID0gLUVORVRET1dOOworCQlnb3RvIGV4aXQ7CisJfQorCisJLyogamFsOiB3ZSBkb24ndCBhbGxvdyAiaXdsaXN0IGV0aFggc2NhbiIgd2hpbGUgd2UgYXJlCisJICAgaW4gbW9uaXRvciBtb2RlICovCisJaWYgKHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9NT05JVE9SKSB7CisJCXJldCA9IC1FQlVTWTsKKwkJZ290byBleGl0OworCX0KKworCS8qIERpc2NhcmQgb2xkIHNjYW4gcmVzdWx0cyAqLworCWlmICgoamlmZmllcyAtIHByaXYtPmxhc3Rfc2NhbikgPiAoMjAgKiBIWikpCisJCXByaXYtPnNjYW5fc3RhdGUgPSBTQ0FOX0lETEU7CisJcHJpdi0+bGFzdF9zY2FuID0gamlmZmllczsKKworCS8qIEluaXRpYXRlIGEgc2NhbiBjb21tYW5kICovCisJaWYgKHByaXYtPnNjYW5fc3RhdGUgPT0gU0NBTl9JTl9QUk9HUkVTUykgeworCQlyZXQgPSAtRUJVU1k7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlwcml2LT5zY2FuX3N0YXRlID0gU0NBTl9JTl9QUk9HUkVTUzsKKworCWF0NzZfcXVpZXNjZShwcml2KTsKKworCS8qIFRyeSB0byBkbyBwYXNzaXZlIG9yIGFjdGl2ZSBzY2FuIGlmIFdFIGFza3MgYXMuICovCisJaWYgKHdycXUtPmRhdGEubGVuZ3RoCisJICAgICYmIHdycXUtPmRhdGEubGVuZ3RoID09IHNpemVvZihzdHJ1Y3QgaXdfc2Nhbl9yZXEpKSB7CisJCXN0cnVjdCBpd19zY2FuX3JlcSAqcmVxID0gKHN0cnVjdCBpd19zY2FuX3JlcSAqKWV4dHJhOworCisJCWlmIChyZXEtPnNjYW5fdHlwZSA9PSBJV19TQ0FOX1RZUEVfUEFTU0lWRSkKKwkJCXByaXYtPnNjYW5fbW9kZSA9IFNDQU5fVFlQRV9QQVNTSVZFOworCQllbHNlIGlmIChyZXEtPnNjYW5fdHlwZSA9PSBJV19TQ0FOX1RZUEVfQUNUSVZFKQorCQkJcHJpdi0+c2Nhbl9tb2RlID0gU0NBTl9UWVBFX0FDVElWRTsKKworCQkvKiBTYW5pdHkgY2hlY2sgdmFsdWVzPyAqLworCQlpZiAocmVxLT5taW5fY2hhbm5lbF90aW1lID4gMCkKKwkJCXByaXYtPnNjYW5fbWluX3RpbWUgPSByZXEtPm1pbl9jaGFubmVsX3RpbWU7CisKKwkJaWYgKHJlcS0+bWF4X2NoYW5uZWxfdGltZSA+IDApCisJCQlwcml2LT5zY2FuX21heF90aW1lID0gcmVxLT5tYXhfY2hhbm5lbF90aW1lOworCX0KKworCS8qIGNoYW5nZSB0byBzY2FubmluZyBzdGF0ZSAqLworCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfU0NBTk5JTkcpOworCXNjaGVkdWxlX3dvcmsoJnByaXYtPndvcmtfc3RhcnRfc2Nhbik7CisKK2V4aXQ6CisJbXV0ZXhfdW5sb2NrKCZwcml2LT5tdHgpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9zY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgIHN0cnVjdCBpd19wb2ludCAqZGF0YSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpscHRyLCAqbnB0cjsKKwlzdHJ1Y3QgYnNzX2luZm8gKmN1cnJfYnNzOworCXN0cnVjdCBpd19ldmVudCAqaXdlID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGl3X2V2ZW50KSwgR0ZQX0tFUk5FTCk7CisJY2hhciAqY3Vycl92YWwsICpjdXJyX3BvcyA9IGV4dHJhOworCWludCBpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdTQ0FOIiwgbmV0ZGV2LT5uYW1lKTsKKworCWlmICghaXdlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChwcml2LT5zY2FuX3N0YXRlICE9IFNDQU5fQ09NUExFVEVEKQorCQkvKiBzY2FuIG5vdCB5ZXQgZmluaXNoZWQgKi8KKwkJcmV0dXJuIC1FQUdBSU47CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+YnNzX2xpc3Rfc3BpbmxvY2ssIGZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfc2FmZShscHRyLCBucHRyLCAmcHJpdi0+YnNzX2xpc3QpIHsKKwkJY3Vycl9ic3MgPSBsaXN0X2VudHJ5KGxwdHIsIHN0cnVjdCBic3NfaW5mbywgbGlzdCk7CisKKwkJaXdlLT5jbWQgPSBTSU9DR0lXQVA7CisJCWl3ZS0+dS5hcF9hZGRyLnNhX2ZhbWlseSA9IEFSUEhSRF9FVEhFUjsKKwkJbWVtY3B5KGl3ZS0+dS5hcF9hZGRyLnNhX2RhdGEsIGN1cnJfYnNzLT5ic3NpZCwgNik7CisJCWN1cnJfcG9zID0gaXdlX3N0cmVhbV9hZGRfZXZlbnQoaW5mbywgY3Vycl9wb3MsCisJCQkJCQlleHRyYSArIElXX1NDQU5fTUFYX0RBVEEsIGl3ZSwKKwkJCQkJCUlXX0VWX0FERFJfTEVOKTsKKworCQlpd2UtPnUuZGF0YS5sZW5ndGggPSBjdXJyX2Jzcy0+c3NpZF9sZW47CisJCWl3ZS0+Y21kID0gU0lPQ0dJV0VTU0lEOworCQlpd2UtPnUuZGF0YS5mbGFncyA9IDE7CisKKwkJY3Vycl9wb3MgPSBpd2Vfc3RyZWFtX2FkZF9wb2ludChpbmZvLCBjdXJyX3BvcywKKwkJCQkJCWV4dHJhICsgSVdfU0NBTl9NQVhfREFUQSwgaXdlLAorCQkJCQkJY3Vycl9ic3MtPnNzaWQpOworCisJCWl3ZS0+Y21kID0gU0lPQ0dJV01PREU7CisJCWl3ZS0+dS5tb2RlID0gKGN1cnJfYnNzLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX0lCU1MpID8KKwkJICAgIElXX01PREVfQURIT0MgOgorCQkgICAgKGN1cnJfYnNzLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX0VTUykgPworCQkgICAgSVdfTU9ERV9NQVNURVIgOiBJV19NT0RFX0FVVE87CisJCS8qIElXX01PREVfQVVUTyA9IDAgd2hpY2ggSSB0aG91Z2h0IGlzCisJCSAqIHRoZSBtb3N0IGxvZ2ljYWwgdmFsdWUgdG8gcmV0dXJuIGluIHRoaXMgY2FzZSAqLworCQljdXJyX3BvcyA9IGl3ZV9zdHJlYW1fYWRkX2V2ZW50KGluZm8sIGN1cnJfcG9zLAorCQkJCQkJZXh0cmEgKyBJV19TQ0FOX01BWF9EQVRBLCBpd2UsCisJCQkJCQlJV19FVl9VSU5UX0xFTik7CisKKwkJaXdlLT5jbWQgPSBTSU9DR0lXRlJFUTsKKwkJaXdlLT51LmZyZXEubSA9IGN1cnJfYnNzLT5jaGFubmVsOworCQlpd2UtPnUuZnJlcS5lID0gMDsKKwkJY3Vycl9wb3MgPSBpd2Vfc3RyZWFtX2FkZF9ldmVudChpbmZvLCBjdXJyX3BvcywKKwkJCQkJCWV4dHJhICsgSVdfU0NBTl9NQVhfREFUQSwgaXdlLAorCQkJCQkJSVdfRVZfRlJFUV9MRU4pOworCisJCWl3ZS0+Y21kID0gU0lPQ0dJV0VOQ09ERTsKKwkJaWYgKGN1cnJfYnNzLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX1BSSVZBQ1kpCisJCQlpd2UtPnUuZGF0YS5mbGFncyA9IElXX0VOQ09ERV9FTkFCTEVEIHwgSVdfRU5DT0RFX05PS0VZOworCQllbHNlCisJCQlpd2UtPnUuZGF0YS5mbGFncyA9IElXX0VOQ09ERV9ESVNBQkxFRDsKKworCQlpd2UtPnUuZGF0YS5sZW5ndGggPSAwOworCQljdXJyX3BvcyA9IGl3ZV9zdHJlYW1fYWRkX3BvaW50KGluZm8sIGN1cnJfcG9zLAorCQkJCQkJZXh0cmEgKyBJV19TQ0FOX01BWF9EQVRBLCBpd2UsCisJCQkJCQlOVUxMKTsKKworCQkvKiBBZGQgcXVhbGl0eSBzdGF0aXN0aWNzICovCisJCWl3ZS0+Y21kID0gSVdFVlFVQUw7CisJCWl3ZS0+dS5xdWFsLm5vaXNlID0gMDsKKwkJaXdlLT51LnF1YWwudXBkYXRlZCA9CisJCSAgICBJV19RVUFMX05PSVNFX0lOVkFMSUQgfCBJV19RVUFMX0xFVkVMX1VQREFURUQ7CisJCWl3ZS0+dS5xdWFsLmxldmVsID0gKGN1cnJfYnNzLT5yc3NpICogMTAwIC8gNDIpOworCQlpZiAoaXdlLT51LnF1YWwubGV2ZWwgPiAxMDApCisJCQlpd2UtPnUucXVhbC5sZXZlbCA9IDEwMDsKKwkJaWYgKGF0NzZfaXNfaW50ZXJzaWwocHJpdi0+Ym9hcmRfdHlwZSkpCisJCQlpd2UtPnUucXVhbC5xdWFsID0gY3Vycl9ic3MtPmxpbmtfcXVhbDsKKwkJZWxzZSB7CisJCQlpd2UtPnUucXVhbC5xdWFsID0gMDsKKwkJCWl3ZS0+dS5xdWFsLnVwZGF0ZWQgfD0gSVdfUVVBTF9RVUFMX0lOVkFMSUQ7CisJCX0KKwkJLyogQWRkIG5ldyB2YWx1ZSB0byBldmVudCAqLworCQljdXJyX3BvcyA9IGl3ZV9zdHJlYW1fYWRkX2V2ZW50KGluZm8sIGN1cnJfcG9zLAorCQkJCQkJZXh0cmEgKyBJV19TQ0FOX01BWF9EQVRBLCBpd2UsCisJCQkJCQlJV19FVl9RVUFMX0xFTik7CisKKwkJLyogUmF0ZTogc3R1ZmZpbmcgbXVsdGlwbGUgdmFsdWVzIGluIGEgc2luZ2xlIGV2ZW50IHJlcXVpcmVzCisJCSAqIGEgYml0IG1vcmUgb2YgbWFnaWMgLSBKZWFuIElJICovCisJCWN1cnJfdmFsID0gY3Vycl9wb3MgKyBJV19FVl9MQ1BfTEVOOworCisJCWl3ZS0+Y21kID0gU0lPQ0dJV1JBVEU7CisJCS8qIFRob3NlIHR3byBmbGFncyBhcmUgaWdub3JlZC4uLiAqLworCQlpd2UtPnUuYml0cmF0ZS5maXhlZCA9IDA7CisJCWl3ZS0+dS5iaXRyYXRlLmRpc2FibGVkID0gMDsKKwkJLyogTWF4IDggdmFsdWVzICovCisJCWZvciAoaSA9IDA7IGkgPCBjdXJyX2Jzcy0+cmF0ZXNfbGVuOyBpKyspIHsKKwkJCS8qIEJpdCByYXRlIGdpdmVuIGluIDUwMCBrYi9zIHVuaXRzICgrIDB4ODApICovCisJCQlpd2UtPnUuYml0cmF0ZS52YWx1ZSA9CisJCQkgICAgKChjdXJyX2Jzcy0+cmF0ZXNbaV0gJiAweDdmKSAqIDUwMDAwMCk7CisJCQkvKiBBZGQgbmV3IHZhbHVlIHRvIGV2ZW50ICovCisJCQljdXJyX3ZhbCA9IGl3ZV9zdHJlYW1fYWRkX3ZhbHVlKGluZm8sIGN1cnJfcG9zLAorCQkJCQkJCWN1cnJfdmFsLAorCQkJCQkJCWV4dHJhICsKKwkJCQkJCQlJV19TQ0FOX01BWF9EQVRBLCBpd2UsCisJCQkJCQkJSVdfRVZfUEFSQU1fTEVOKTsKKwkJfQorCisJCS8qIENoZWNrIGlmIHdlIGFkZGVkIGFueSBldmVudCAqLworCQlpZiAoKGN1cnJfdmFsIC0gY3Vycl9wb3MpID4gSVdfRVZfTENQX0xFTikKKwkJCWN1cnJfcG9zID0gY3Vycl92YWw7CisKKwkJLyogbW9yZSBpbmZvcm1hdGlvbiBtYXkgYmUgc2VudCBiYWNrIHVzaW5nIElXRUNVU1RPTSAqLworCisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+YnNzX2xpc3Rfc3BpbmxvY2ssIGZsYWdzKTsKKworCWRhdGEtPmxlbmd0aCA9IChjdXJyX3BvcyAtIGV4dHJhKTsKKwlkYXRhLT5mbGFncyA9IDA7CisKKwlrZnJlZShpd2UpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfZXNzaWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgICBzdHJ1Y3QgaXdfcG9pbnQgKmRhdGEsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NTSVdFU1NJRCAtICVzIiwgbmV0ZGV2LT5uYW1lLCBleHRyYSk7CisKKwlpZiAoZGF0YS0+ZmxhZ3MpIHsKKwkJbWVtY3B5KHByaXYtPmVzc2lkLCBleHRyYSwgZGF0YS0+bGVuZ3RoKTsKKwkJcHJpdi0+ZXNzaWRfc2l6ZSA9IGRhdGEtPmxlbmd0aDsKKwl9IGVsc2UKKwkJcHJpdi0+ZXNzaWRfc2l6ZSA9IDA7CS8qIFVzZSBhbnkgU1NJRCAqLworCisJcmV0dXJuIC1FSVdDT01NSVQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9lc3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgIHN0cnVjdCBpd19wb2ludCAqZGF0YSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlpZiAocHJpdi0+ZXNzaWRfc2l6ZSkgeworCQkvKiBub3QgdGhlIEFOWSBzc2lkIGluIHByaXYtPmVzc2lkICovCisJCWRhdGEtPmZsYWdzID0gMTsKKwkJZGF0YS0+bGVuZ3RoID0gcHJpdi0+ZXNzaWRfc2l6ZTsKKwkJbWVtY3B5KGV4dHJhLCBwcml2LT5lc3NpZCwgZGF0YS0+bGVuZ3RoKTsKKwl9IGVsc2UgeworCQkvKiB0aGUgQU5ZIHNzaWQgd2FzIHNwZWNpZmllZCAqLworCQlpZiAocHJpdi0+bWFjX3N0YXRlID09IE1BQ19DT05ORUNURUQgJiYgcHJpdi0+Y3Vycl9ic3MpIHsKKwkJCS8qIHJlcG9ydCB0aGUgU1NJRCB3ZSBoYXZlIGZvdW5kICovCisJCQlkYXRhLT5mbGFncyA9IDE7CisJCQlkYXRhLT5sZW5ndGggPSBwcml2LT5jdXJyX2Jzcy0+c3NpZF9sZW47CisJCQltZW1jcHkoZXh0cmEsIHByaXYtPmN1cnJfYnNzLT5zc2lkLCBkYXRhLT5sZW5ndGgpOworCQl9IGVsc2UgeworCQkJLyogcmVwb3J0IEFOWSBiYWNrICovCisJCQlkYXRhLT5mbGFncyA9IDA7CisJCQlkYXRhLT5sZW5ndGggPSAwOworCQl9CisJfQorCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdFU1NJRCAtICUuKnMiLCBuZXRkZXYtPm5hbWUsCisJCSBkYXRhLT5sZW5ndGgsIGV4dHJhKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBzdHJ1Y3QgaXdfcGFyYW0gKmJpdHJhdGUsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCByZXQgPSAtRUlXQ09NTUlUOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NTSVdSQVRFIC0gJWQiLCBuZXRkZXYtPm5hbWUsCisJCSBiaXRyYXRlLT52YWx1ZSk7CisKKwlzd2l0Y2ggKGJpdHJhdGUtPnZhbHVlKSB7CisJY2FzZSAtMToKKwkJcHJpdi0+dHhyYXRlID0gVFhfUkFURV9BVVRPOworCQlicmVhazsJCS8qIGF1dG8gcmF0ZSAqLworCWNhc2UgMTAwMDAwMDoKKwkJcHJpdi0+dHhyYXRlID0gVFhfUkFURV8xTUJJVDsKKwkJYnJlYWs7CisJY2FzZSAyMDAwMDAwOgorCQlwcml2LT50eHJhdGUgPSBUWF9SQVRFXzJNQklUOworCQlicmVhazsKKwljYXNlIDU1MDAwMDA6CisJCXByaXYtPnR4cmF0ZSA9IFRYX1JBVEVfNV81TUJJVDsKKwkJYnJlYWs7CisJY2FzZSAxMTAwMDAwMDoKKwkJcHJpdi0+dHhyYXRlID0gVFhfUkFURV8xMU1CSVQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldCA9IC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3JhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgc3RydWN0IGl3X3BhcmFtICpiaXRyYXRlLCBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgcmV0ID0gMDsKKworCXN3aXRjaCAocHJpdi0+dHhyYXRlKSB7CisJCS8qIHJldHVybiBtYXggcmF0ZSBpZiBSQVRFX0FVVE8gKi8KKwljYXNlIFRYX1JBVEVfQVVUTzoKKwkJYml0cmF0ZS0+dmFsdWUgPSAxMTAwMDAwMDsKKwkJYnJlYWs7CisJY2FzZSBUWF9SQVRFXzFNQklUOgorCQliaXRyYXRlLT52YWx1ZSA9IDEwMDAwMDA7CisJCWJyZWFrOworCWNhc2UgVFhfUkFURV8yTUJJVDoKKwkJYml0cmF0ZS0+dmFsdWUgPSAyMDAwMDAwOworCQlicmVhazsKKwljYXNlIFRYX1JBVEVfNV81TUJJVDoKKwkJYml0cmF0ZS0+dmFsdWUgPSA1NTAwMDAwOworCQlicmVhazsKKwljYXNlIFRYX1JBVEVfMTFNQklUOgorCQliaXRyYXRlLT52YWx1ZSA9IDExMDAwMDAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRUlOVkFMOworCX0KKworCWJpdHJhdGUtPmZpeGVkID0gKHByaXYtPnR4cmF0ZSAhPSBUWF9SQVRFX0FVVE8pOworCWJpdHJhdGUtPmRpc2FibGVkID0gMDsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DR0lXUkFURSAtICVkIiwgbmV0ZGV2LT5uYW1lLAorCQkgYml0cmF0ZS0+dmFsdWUpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgc3RydWN0IGl3X3BhcmFtICpydHMsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCByZXQgPSAtRUlXQ09NTUlUOworCWludCBydGhyID0gcnRzLT52YWx1ZTsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DU0lXUlRTIC0gdmFsdWUgJWQgZGlzYWJsZWQgJXMiLAorCQkgbmV0ZGV2LT5uYW1lLCBydHMtPnZhbHVlLCAocnRzLT5kaXNhYmxlZCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworCWlmIChydHMtPmRpc2FibGVkKQorCQlydGhyID0gTUFYX1JUU19USFJFU0hPTEQ7CisKKwlpZiAoKHJ0aHIgPCAwKSB8fCAocnRociA+IE1BWF9SVFNfVEhSRVNIT0xEKSkKKwkJcmV0ID0gLUVJTlZBTDsKKwllbHNlCisJCXByaXYtPnJ0c190aHJlc2hvbGQgPSBydGhyOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3J0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgc3RydWN0IGl3X3BhcmFtICpydHMsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJcnRzLT52YWx1ZSA9IHByaXYtPnJ0c190aHJlc2hvbGQ7CisJcnRzLT5kaXNhYmxlZCA9IChydHMtPnZhbHVlID49IE1BWF9SVFNfVEhSRVNIT0xEKTsKKwlydHMtPmZpeGVkID0gMTsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBTSU9DR0lXUlRTIC0gdmFsdWUgJWQgZGlzYWJsZWQgJXMiLAorCQkgbmV0ZGV2LT5uYW1lLCBydHMtPnZhbHVlLCAocnRzLT5kaXNhYmxlZCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfaGFuZGxlcl9zZXRfZnJhZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICBzdHJ1Y3QgaXdfcGFyYW0gKmZyYWcsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCByZXQgPSAtRUlXQ09NTUlUOworCWludCBmdGhyID0gZnJhZy0+dmFsdWU7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ1NJV0ZSQUcgLSB2YWx1ZSAlZCwgZGlzYWJsZWQgJXMiLAorCQkgbmV0ZGV2LT5uYW1lLCBmcmFnLT52YWx1ZSwKKwkJIChmcmFnLT5kaXNhYmxlZCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworCWlmIChmcmFnLT5kaXNhYmxlZCkKKwkJZnRociA9IE1BWF9GUkFHX1RIUkVTSE9MRDsKKworCWlmICgoZnRociA8IE1JTl9GUkFHX1RIUkVTSE9MRCkgfHwgKGZ0aHIgPiBNQVhfRlJBR19USFJFU0hPTEQpKQorCQlyZXQgPSAtRUlOVkFMOworCWVsc2UKKwkJcHJpdi0+ZnJhZ190aHJlc2hvbGQgPSBmdGhyICYgfjB4MTsJLyogZ2V0IGFuIGV2ZW4gdmFsdWUgKi8KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9mcmFnKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgIHN0cnVjdCBpd19wYXJhbSAqZnJhZywgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlmcmFnLT52YWx1ZSA9IHByaXYtPmZyYWdfdGhyZXNob2xkOworCWZyYWctPmRpc2FibGVkID0gKGZyYWctPnZhbHVlID49IE1BWF9GUkFHX1RIUkVTSE9MRCk7CisJZnJhZy0+Zml4ZWQgPSAxOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdGUkFHIC0gdmFsdWUgJWQsIGRpc2FibGVkICVzIiwKKwkJIG5ldGRldi0+bmFtZSwgZnJhZy0+dmFsdWUsCisJCSAoZnJhZy0+ZGlzYWJsZWQpID8gInRydWUiIDogImZhbHNlIik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3R4cG93KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgc3RydWN0IGl3X3BhcmFtICpwb3dlciwgY2hhciAqZXh0cmEpCit7CisJcG93ZXItPnZhbHVlID0gMTU7CisJcG93ZXItPmZpeGVkID0gMTsJLyogTm8gcG93ZXIgY29udHJvbCAqLworCXBvd2VyLT5kaXNhYmxlZCA9IDA7CisJcG93ZXItPmZsYWdzID0gSVdfVFhQT1dfREJNOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdUWFBPVyAtIHR4cG93ICVkIGRCbSIsIG5ldGRldi0+bmFtZSwKKwkJIHBvd2VyLT52YWx1ZSk7CisKKwlyZXR1cm4gMDsKK30KKworLyogamFsOiBzaG9ydCByZXRyeSBpcyBoYW5kbGVkIGJ5IHRoZSBmaXJtd2FyZSAoYXQgbGVhc3QgMC45MC54KSwKKyAgIHdoaWxlIGxvbmcgcmV0cnkgaXMgbm90ICg/KSAqLworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgc3RydWN0IGl3X3BhcmFtICpyZXRyeSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50IHJldCA9IC1FSVdDT01NSVQ7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ1NJV1JFVFJZIGRpc2FibGVkICVkIGZsYWdzIDB4JXggdmFsICVkIiwKKwkJIG5ldGRldi0+bmFtZSwgcmV0cnktPmRpc2FibGVkLCByZXRyeS0+ZmxhZ3MsIHJldHJ5LT52YWx1ZSk7CisKKwlpZiAoIXJldHJ5LT5kaXNhYmxlZCAmJiAocmV0cnktPmZsYWdzICYgSVdfUkVUUllfTElNSVQpKSB7CisJCWlmICgocmV0cnktPmZsYWdzICYgSVdfUkVUUllfTUlOKSB8fAorCQkgICAgIShyZXRyeS0+ZmxhZ3MgJiBJV19SRVRSWV9NQVgpKQorCQkJcHJpdi0+c2hvcnRfcmV0cnlfbGltaXQgPSByZXRyeS0+dmFsdWU7CisJCWVsc2UKKwkJCXJldCA9IC1FSU5WQUw7CisJfSBlbHNlCisJCXJldCA9IC1FSU5WQUw7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBBZGFwdGVkIChyaXBwZWQpIGZyb20gYXRtZWwuYyAqLworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3JldHJ5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgc3RydWN0IGl3X3BhcmFtICpyZXRyeSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogU0lPQ0dJV1JFVFJZIiwgbmV0ZGV2LT5uYW1lKTsKKworCXJldHJ5LT5kaXNhYmxlZCA9IDA7CS8qIENhbid0IGJlIGRpc2FibGVkICovCisJcmV0cnktPmZsYWdzID0gSVdfUkVUUllfTElNSVQ7CisJcmV0cnktPnZhbHVlID0gcHJpdi0+c2hvcnRfcmV0cnlfbGltaXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X2VuY29kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgICAgc3RydWN0IGl3X3BvaW50ICplbmNvZGluZywgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50IGluZGV4ID0gKGVuY29kaW5nLT5mbGFncyAmIElXX0VOQ09ERV9JTkRFWCkgLSAxOworCWludCBsZW4gPSBlbmNvZGluZy0+bGVuZ3RoOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NTSVdFTkNPREUgLSBlbmMuZmxhZ3MgJTA4eCAiCisJCSAicG9pbnRlciAlcCBsZW4gJWQiLCBuZXRkZXYtPm5hbWUsIGVuY29kaW5nLT5mbGFncywKKwkJIGVuY29kaW5nLT5wb2ludGVyLCBlbmNvZGluZy0+bGVuZ3RoKTsKKwlhdDc2X2RiZyhEQkdfSU9DVEwsCisJCSAiJXM6IFNJT0NTSVdFTkNPREUgLSBvbGQgd2Vwc3RhdGU6IGVuYWJsZWQgJXMga2V5X2lkICVkICIKKwkJICJhdXRoX21vZGUgJXMiLCBuZXRkZXYtPm5hbWUsCisJCSAocHJpdi0+d2VwX2VuYWJsZWQpID8gInRydWUiIDogImZhbHNlIiwgcHJpdi0+d2VwX2tleV9pZCwKKwkJIChwcml2LT5hdXRoX21vZGUgPT0KKwkJICBXTEFOX0FVVEhfU0hBUkVEX0tFWSkgPyAicmVzdHJpY3RlZCIgOiAib3BlbiIpOworCisJLyogdGFrZSB0aGUgb2xkIGRlZmF1bHQga2V5IGlmIGluZGV4IGlzIGludmFsaWQgKi8KKwlpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IFdFUF9LRVlTKSkKKwkJaW5kZXggPSBwcml2LT53ZXBfa2V5X2lkOworCisJaWYgKGxlbiA+IDApIHsKKwkJaWYgKGxlbiA+IFdFUF9MQVJHRV9LRVlfTEVOKQorCQkJbGVuID0gV0VQX0xBUkdFX0tFWV9MRU47CisKKwkJbWVtc2V0KHByaXYtPndlcF9rZXlzW2luZGV4XSwgMCwgV0VQX0tFWV9MRU4pOworCQltZW1jcHkocHJpdi0+d2VwX2tleXNbaW5kZXhdLCBleHRyYSwgbGVuKTsKKwkJcHJpdi0+d2VwX2tleXNfbGVuW2luZGV4XSA9IChsZW4gPD0gV0VQX1NNQUxMX0tFWV9MRU4pID8KKwkJICAgIFdFUF9TTUFMTF9LRVlfTEVOIDogV0VQX0xBUkdFX0tFWV9MRU47CisJCXByaXYtPndlcF9lbmFibGVkID0gMTsKKwl9CisKKwlwcml2LT53ZXBfa2V5X2lkID0gaW5kZXg7CisJcHJpdi0+d2VwX2VuYWJsZWQgPSAoKGVuY29kaW5nLT5mbGFncyAmIElXX0VOQ09ERV9ESVNBQkxFRCkgPT0gMCk7CisKKwlpZiAoZW5jb2RpbmctPmZsYWdzICYgSVdfRU5DT0RFX1JFU1RSSUNURUQpCisJCXByaXYtPmF1dGhfbW9kZSA9IFdMQU5fQVVUSF9TSEFSRURfS0VZOworCWlmIChlbmNvZGluZy0+ZmxhZ3MgJiBJV19FTkNPREVfT1BFTikKKwkJcHJpdi0+YXV0aF9tb2RlID0gV0xBTl9BVVRIX09QRU47CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsCisJCSAiJXM6IFNJT0NTSVdFTkNPREUgLSBuZXcgd2Vwc3RhdGU6IGVuYWJsZWQgJXMga2V5X2lkICVkICIKKwkJICJrZXlfbGVuICVkIGF1dGhfbW9kZSAlcyIsIG5ldGRldi0+bmFtZSwKKwkJIChwcml2LT53ZXBfZW5hYmxlZCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBwcml2LT53ZXBfa2V5X2lkICsgMSwKKwkJIHByaXYtPndlcF9rZXlzX2xlbltwcml2LT53ZXBfa2V5X2lkXSwKKwkJIChwcml2LT5hdXRoX21vZGUgPT0KKwkJICBXTEFOX0FVVEhfU0hBUkVEX0tFWSkgPyAicmVzdHJpY3RlZCIgOiAib3BlbiIpOworCisJcmV0dXJuIC1FSVdDT01NSVQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9lbmNvZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgIHN0cnVjdCBpd19wb2ludCAqZW5jb2RpbmcsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCBpbmRleCA9IChlbmNvZGluZy0+ZmxhZ3MgJiBJV19FTkNPREVfSU5ERVgpIC0gMTsKKworCWlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gV0VQX0tFWVMpKQorCQlpbmRleCA9IHByaXYtPndlcF9rZXlfaWQ7CisKKwllbmNvZGluZy0+ZmxhZ3MgPQorCSAgICAocHJpdi0+YXV0aF9tb2RlID09IFdMQU5fQVVUSF9TSEFSRURfS0VZKSA/CisJICAgIElXX0VOQ09ERV9SRVNUUklDVEVEIDogSVdfRU5DT0RFX09QRU47CisKKwlpZiAoIXByaXYtPndlcF9lbmFibGVkKQorCQllbmNvZGluZy0+ZmxhZ3MgfD0gSVdfRU5DT0RFX0RJU0FCTEVEOworCisJaWYgKGVuY29kaW5nLT5wb2ludGVyKSB7CisJCWVuY29kaW5nLT5sZW5ndGggPSBwcml2LT53ZXBfa2V5c19sZW5baW5kZXhdOworCisJCW1lbWNweShleHRyYSwgcHJpdi0+d2VwX2tleXNbaW5kZXhdLCBwcml2LT53ZXBfa2V5c19sZW5baW5kZXhdKTsKKworCQllbmNvZGluZy0+ZmxhZ3MgfD0gKGluZGV4ICsgMSk7CisJfQorCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdFTkNPREUgLSBlbmMuZmxhZ3MgJTA4eCAiCisJCSAicG9pbnRlciAlcCBsZW4gJWQiLCBuZXRkZXYtPm5hbWUsIGVuY29kaW5nLT5mbGFncywKKwkJIGVuY29kaW5nLT5wb2ludGVyLCBlbmNvZGluZy0+bGVuZ3RoKTsKKwlhdDc2X2RiZyhEQkdfSU9DVEwsCisJCSAiJXM6IFNJT0NHSVdFTkNPREUgLSB3ZXBzdGF0ZTogZW5hYmxlZCAlcyBrZXlfaWQgJWQgIgorCQkgImtleV9sZW4gJWQgYXV0aF9tb2RlICVzIiwgbmV0ZGV2LT5uYW1lLAorCQkgKHByaXYtPndlcF9lbmFibGVkKSA/ICJ0cnVlIiA6ICJmYWxzZSIsIHByaXYtPndlcF9rZXlfaWQgKyAxLAorCQkgcHJpdi0+d2VwX2tleXNfbGVuW3ByaXYtPndlcF9rZXlfaWRdLAorCQkgKHByaXYtPmF1dGhfbW9kZSA9PQorCQkgIFdMQU5fQVVUSF9TSEFSRURfS0VZKSA/ICJyZXN0cmljdGVkIiA6ICJvcGVuIik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2hhbmRsZXJfc2V0X3Bvd2VyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgc3RydWN0IGl3X3BhcmFtICpwcnEsIGNoYXIgKmV4dHJhKQoreworCWludCBlcnIgPSAtRUlXQ09NTUlUOworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLAorCQkgIiVzOiBTSU9DU0lXUE9XRVIgLSBkaXNhYmxlZCAlcyBmbGFncyAweCV4IHZhbHVlIDB4JXgiLAorCQkgbmV0ZGV2LT5uYW1lLCAocHJxLT5kaXNhYmxlZCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBwcnEtPmZsYWdzLAorCQkgcHJxLT52YWx1ZSk7CisKKwlpZiAocHJxLT5kaXNhYmxlZCkKKwkJcHJpdi0+cG1fbW9kZSA9IEFUNzZfUE1fT0ZGOworCWVsc2UgeworCQlzd2l0Y2ggKHBycS0+ZmxhZ3MgJiBJV19QT1dFUl9NT0RFKSB7CisJCWNhc2UgSVdfUE9XRVJfQUxMX1I6CisJCWNhc2UgSVdfUE9XRVJfT046CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJaWYgKHBycS0+ZmxhZ3MgJiBJV19QT1dFUl9QRVJJT0QpCisJCQlwcml2LT5wbV9wZXJpb2QgPSBwcnEtPnZhbHVlOworCisJCWlmIChwcnEtPmZsYWdzICYgSVdfUE9XRVJfVElNRU9VVCkgeworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCQlwcml2LT5wbV9tb2RlID0gQVQ3Nl9QTV9PTjsKKwl9CitleGl0OgorCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19oYW5kbGVyX2dldF9wb3dlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICAgIHN0cnVjdCBpd19wYXJhbSAqcG93ZXIsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJcG93ZXItPmRpc2FibGVkID0gKHByaXYtPnBtX21vZGUgPT0gQVQ3Nl9QTV9PRkYpOworCWlmICghcG93ZXItPmRpc2FibGVkKSB7CisJCXBvd2VyLT5mbGFncyA9IElXX1BPV0VSX1BFUklPRCB8IElXX1BPV0VSX0FMTF9SOworCQlwb3dlci0+dmFsdWUgPSBwcml2LT5wbV9wZXJpb2Q7CisJfQorCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IFNJT0NHSVdQT1dFUiAtICVzIGZsYWdzIDB4JXggdmFsdWUgMHgleCIsCisJCSBuZXRkZXYtPm5hbWUsIHBvd2VyLT5kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiZW5hYmxlZCIsCisJCSBwb3dlci0+ZmxhZ3MsIHBvd2VyLT52YWx1ZSk7CisKKwlyZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFByaXZhdGUgSU9DVExTCisgKi8KK3N0YXRpYyBpbnQgYXQ3Nl9pd19zZXRfc2hvcnRfcHJlYW1ibGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLCBjaGFyICpuYW1lLAorCQkJCSAgICAgIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCB2YWwgPSAqKChpbnQgKiluYW1lKTsKKwlpbnQgcmV0ID0gLUVJV0NPTU1JVDsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBBVDc2X1NFVF9TSE9SVF9QUkVBTUJMRSwgJWQiLAorCQkgbmV0ZGV2LT5uYW1lLCB2YWwpOworCisJaWYgKHZhbCA8IFBSRUFNQkxFX1RZUEVfTE9ORyB8fCB2YWwgPiBQUkVBTUJMRV9UWVBFX0FVVE8pCisJCXJldCA9IC1FSU5WQUw7CisJZWxzZQorCQlwcml2LT5wcmVhbWJsZV90eXBlID0gdmFsOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2dldF9zaG9ydF9wcmVhbWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJICAgICAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlzbnByaW50Zih3cnF1LT5uYW1lLCBzaXplb2Yod3JxdS0+bmFtZSksICIlcyAoJWQpIiwKKwkJIHByZWFtYmxlc1twcml2LT5wcmVhbWJsZV90eXBlXSwgcHJpdi0+cHJlYW1ibGVfdHlwZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19zZXRfZGVidWcoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCSAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICpleHRyYSkKK3sKKwljaGFyICpwdHI7CisJdTMyIHZhbDsKKworCWlmIChkYXRhLT5sZW5ndGggPiAwKSB7CisJCXZhbCA9IHNpbXBsZV9zdHJ0b2woZXh0cmEsICZwdHIsIDApOworCisJCWlmIChwdHIgPT0gZXh0cmEpCisJCQl2YWwgPSBEQkdfREVGQVVMVFM7CisKKwkJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IEFUNzZfU0VUX0RFQlVHIGlucHV0ICVkOiAlcyAtPiAweCV4IiwKKwkJCSBuZXRkZXYtPm5hbWUsIGRhdGEtPmxlbmd0aCwgZXh0cmEsIHZhbCk7CisJfSBlbHNlCisJCXZhbCA9IERCR19ERUZBVUxUUzsKKworCWF0NzZfZGJnKERCR19JT0NUTCwgIiVzOiBBVDc2X1NFVF9ERUJVRywgb2xkIDB4JXgsIG5ldyAweCV4IiwKKwkJIG5ldGRldi0+bmFtZSwgYXQ3Nl9kZWJ1ZywgdmFsKTsKKworCS8qIGphbDogc29tZSBtb3JlIG91dHB1dCB0byBwaW4gZG93biBsb2NrdXBzICovCisJYXQ3Nl9kYmcoREJHX0lPQ1RMLCAiJXM6IG5ldGlmIHJ1bm5pbmcgJWQgcXVldWVfc3RvcHBlZCAlZCAiCisJCSAiY2Fycmllcl9vayAlZCIsIG5ldGRldi0+bmFtZSwgbmV0aWZfcnVubmluZyhuZXRkZXYpLAorCQkgbmV0aWZfcXVldWVfc3RvcHBlZChuZXRkZXYpLCBuZXRpZl9jYXJyaWVyX29rKG5ldGRldikpOworCisJYXQ3Nl9kZWJ1ZyA9IHZhbDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfZ2V0X2RlYnVnKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKQoreworCXNucHJpbnRmKHdycXUtPm5hbWUsIHNpemVvZih3cnF1LT5uYW1lKSwgIjB4JTA4eCIsIGF0NzZfZGVidWcpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfc2V0X3Bvd2Vyc2F2ZV9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywgY2hhciAqbmFtZSwKKwkJCQkgICAgICBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgdmFsID0gKigoaW50ICopbmFtZSk7CisJaW50IHJldCA9IC1FSVdDT01NSVQ7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogQVQ3Nl9TRVRfUE9XRVJTQVZFX01PREUsICVkICglcykiLAorCQkgbmV0ZGV2LT5uYW1lLCB2YWwsCisJCSB2YWwgPT0gQVQ3Nl9QTV9PRkYgPyAiYWN0aXZlIiA6IHZhbCA9PSBBVDc2X1BNX09OID8gInNhdmUiIDoKKwkJIHZhbCA9PSBBVDc2X1BNX1NNQVJUID8gInNtYXJ0IHNhdmUiIDogIjxpbnZhbGlkPiIpOworCWlmICh2YWwgPCBBVDc2X1BNX09GRiB8fCB2YWwgPiBBVDc2X1BNX1NNQVJUKQorCQlyZXQgPSAtRUlOVkFMOworCWVsc2UKKwkJcHJpdi0+cG1fbW9kZSA9IHZhbDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19nZXRfcG93ZXJzYXZlX21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCSAgICAgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCAqcGFyYW0gPSAoaW50ICopZXh0cmE7CisKKwlwYXJhbVswXSA9IHByaXYtPnBtX21vZGU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19zZXRfc2Nhbl90aW1lcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywgY2hhciAqbmFtZSwKKwkJCQkgIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCBtaW50ID0gKigoaW50ICopbmFtZSk7CisJaW50IG1heHQgPSAqKChpbnQgKiluYW1lICsgMSk7CisJaW50IHJldCA9IC1FSVdDT01NSVQ7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogQVQ3Nl9TRVRfU0NBTl9USU1FUyAtIG1pbiAlZCBtYXggJWQiLAorCQkgbmV0ZGV2LT5uYW1lLCBtaW50LCBtYXh0KTsKKwlpZiAobWludCA8PSAwIHx8IG1heHQgPD0gMCB8fCBtaW50ID4gbWF4dCkKKwkJcmV0ID0gLUVJTlZBTDsKKwllbHNlIHsKKwkJcHJpdi0+c2Nhbl9taW5fdGltZSA9IG1pbnQ7CisJCXByaXYtPnNjYW5fbWF4X3RpbWUgPSBtYXh0OworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9pd19nZXRfc2Nhbl90aW1lcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWludCAqcGFyYW0gPSAoaW50ICopZXh0cmE7CisKKwlwYXJhbVswXSA9IHByaXYtPnNjYW5fbWluX3RpbWU7CisJcGFyYW1bMV0gPSBwcml2LT5zY2FuX21heF90aW1lOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfaXdfc2V0X3NjYW5fbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAorCQkJCSBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLCBjaGFyICpuYW1lLAorCQkJCSBjaGFyICpleHRyYSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwlpbnQgdmFsID0gKigoaW50ICopbmFtZSk7CisJaW50IHJldCA9IC1FSVdDT01NSVQ7CisKKwlhdDc2X2RiZyhEQkdfSU9DVEwsICIlczogQVQ3Nl9TRVRfU0NBTl9NT0RFIC0gbW9kZSAlcyIsCisJCSBuZXRkZXYtPm5hbWUsICh2YWwgPSBTQ0FOX1RZUEVfQUNUSVZFKSA/ICJhY3RpdmUiIDoKKwkJICh2YWwgPSBTQ0FOX1RZUEVfUEFTU0lWRSkgPyAicGFzc2l2ZSIgOiAiPGludmFsaWQ+Iik7CisKKwlpZiAodmFsICE9IFNDQU5fVFlQRV9BQ1RJVkUgJiYgdmFsICE9IFNDQU5fVFlQRV9QQVNTSVZFKQorCQlyZXQgPSAtRUlOVkFMOworCWVsc2UKKwkJcHJpdi0+c2Nhbl9tb2RlID0gdmFsOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X2l3X2dldF9zY2FuX21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50ICpwYXJhbSA9IChpbnQgKilleHRyYTsKKworCXBhcmFtWzBdID0gcHJpdi0+c2Nhbl9tb2RlOworCXJldHVybiAwOworfQorCisjZGVmaW5lIEFUNzZfU0VUX0hBTkRMRVIoaCwgZikgW2ggLSBTSU9DSVdGSVJTVF0gPSAoaXdfaGFuZGxlcikgZgorCisvKiBTdGFuZGFyZCB3aXJlbGVzcyBoYW5kbGVycyAqLworc3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgYXQ3Nl9oYW5kbGVyc1tdID0geworCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ1NJV0NPTU1JVCwgYXQ3Nl9pd19oYW5kbGVyX2NvbW1pdCksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DR0lXTkFNRSwgYXQ3Nl9pd19oYW5kbGVyX2dldF9uYW1lKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdGUkVRLCBhdDc2X2l3X2hhbmRsZXJfc2V0X2ZyZXEpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ0dJV0ZSRVEsIGF0NzZfaXdfaGFuZGxlcl9nZXRfZnJlcSksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DU0lXTU9ERSwgYXQ3Nl9pd19oYW5kbGVyX3NldF9tb2RlKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdNT0RFLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X21vZGUpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ0dJV1JBTkdFLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3JhbmdlKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdTUFksIGF0NzZfaXdfaGFuZGxlcl9zZXRfc3B5KSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdTUFksIGF0NzZfaXdfaGFuZGxlcl9nZXRfc3B5KSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdUSFJTUFksIGF0NzZfaXdfaGFuZGxlcl9zZXRfdGhyc3B5KSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdUSFJTUFksIGF0NzZfaXdfaGFuZGxlcl9nZXRfdGhyc3B5KSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdBUCwgYXQ3Nl9pd19oYW5kbGVyX3NldF93YXApLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ0dJV0FQLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3dhcCksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DU0lXU0NBTiwgYXQ3Nl9pd19oYW5kbGVyX3NldF9zY2FuKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdTQ0FOLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3NjYW4pLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ1NJV0VTU0lELCBhdDc2X2l3X2hhbmRsZXJfc2V0X2Vzc2lkKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdFU1NJRCwgYXQ3Nl9pd19oYW5kbGVyX2dldF9lc3NpZCksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DU0lXUkFURSwgYXQ3Nl9pd19oYW5kbGVyX3NldF9yYXRlKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdSQVRFLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3JhdGUpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ1NJV1JUUywgYXQ3Nl9pd19oYW5kbGVyX3NldF9ydHMpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ0dJV1JUUywgYXQ3Nl9pd19oYW5kbGVyX2dldF9ydHMpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ1NJV0ZSQUcsIGF0NzZfaXdfaGFuZGxlcl9zZXRfZnJhZyksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DR0lXRlJBRywgYXQ3Nl9pd19oYW5kbGVyX2dldF9mcmFnKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdUWFBPVywgYXQ3Nl9pd19oYW5kbGVyX2dldF90eHBvdyksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DU0lXUkVUUlksIGF0NzZfaXdfaGFuZGxlcl9zZXRfcmV0cnkpLAorCUFUNzZfU0VUX0hBTkRMRVIoU0lPQ0dJV1JFVFJZLCBhdDc2X2l3X2hhbmRsZXJfZ2V0X3JldHJ5KSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdFTkNPREUsIGF0NzZfaXdfaGFuZGxlcl9zZXRfZW5jb2RlKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NHSVdFTkNPREUsIGF0NzZfaXdfaGFuZGxlcl9nZXRfZW5jb2RlKSwKKwlBVDc2X1NFVF9IQU5ETEVSKFNJT0NTSVdQT1dFUiwgYXQ3Nl9pd19oYW5kbGVyX3NldF9wb3dlciksCisJQVQ3Nl9TRVRfSEFORExFUihTSU9DR0lXUE9XRVIsIGF0NzZfaXdfaGFuZGxlcl9nZXRfcG93ZXIpCit9OworCisjZGVmaW5lIEFUNzZfU0VUX1BSSVYoaCwgZikgW2ggLSBTSU9DSVdGSVJTVFBSSVZdID0gKGl3X2hhbmRsZXIpIGYKKworLyogUHJpdmF0ZSB3aXJlbGVzcyBoYW5kbGVycyAqLworc3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgYXQ3Nl9wcml2X2hhbmRsZXJzW10gPSB7CisJQVQ3Nl9TRVRfUFJJVihBVDc2X1NFVF9TSE9SVF9QUkVBTUJMRSwgYXQ3Nl9pd19zZXRfc2hvcnRfcHJlYW1ibGUpLAorCUFUNzZfU0VUX1BSSVYoQVQ3Nl9HRVRfU0hPUlRfUFJFQU1CTEUsIGF0NzZfaXdfZ2V0X3Nob3J0X3ByZWFtYmxlKSwKKwlBVDc2X1NFVF9QUklWKEFUNzZfU0VUX0RFQlVHLCBhdDc2X2l3X3NldF9kZWJ1ZyksCisJQVQ3Nl9TRVRfUFJJVihBVDc2X0dFVF9ERUJVRywgYXQ3Nl9pd19nZXRfZGVidWcpLAorCUFUNzZfU0VUX1BSSVYoQVQ3Nl9TRVRfUE9XRVJTQVZFX01PREUsIGF0NzZfaXdfc2V0X3Bvd2Vyc2F2ZV9tb2RlKSwKKwlBVDc2X1NFVF9QUklWKEFUNzZfR0VUX1BPV0VSU0FWRV9NT0RFLCBhdDc2X2l3X2dldF9wb3dlcnNhdmVfbW9kZSksCisJQVQ3Nl9TRVRfUFJJVihBVDc2X1NFVF9TQ0FOX1RJTUVTLCBhdDc2X2l3X3NldF9zY2FuX3RpbWVzKSwKKwlBVDc2X1NFVF9QUklWKEFUNzZfR0VUX1NDQU5fVElNRVMsIGF0NzZfaXdfZ2V0X3NjYW5fdGltZXMpLAorCUFUNzZfU0VUX1BSSVYoQVQ3Nl9TRVRfU0NBTl9NT0RFLCBhdDc2X2l3X3NldF9zY2FuX21vZGUpLAorCUFUNzZfU0VUX1BSSVYoQVQ3Nl9HRVRfU0NBTl9NT0RFLCBhdDc2X2l3X2dldF9zY2FuX21vZGUpLAorfTsKKworLyogTmFtZXMgYW5kIGFyZ3VtZW50cyBvZiBwcml2YXRlIHdpcmVsZXNzIGhhbmRsZXJzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGl3X3ByaXZfYXJncyBhdDc2X3ByaXZfYXJnc1tdID0geworCS8qIDAgLSBsb25nLCAxIC0gc2hvcnQgKi8KKwl7QVQ3Nl9TRVRfU0hPUlRfUFJFQU1CTEUsCisJIElXX1BSSVZfVFlQRV9JTlQgfCBJV19QUklWX1NJWkVfRklYRUQgfCAxLCAwLCAic2V0X3ByZWFtYmxlIn0sCisKKwl7QVQ3Nl9HRVRfU0hPUlRfUFJFQU1CTEUsCisJIDAsIElXX1BSSVZfVFlQRV9DSEFSIHwgSVdfUFJJVl9TSVpFX0ZJWEVEIHwgMTAsICJnZXRfcHJlYW1ibGUifSwKKworCS8qIHdlIG11c3QgcGFzcyB0aGUgbmV3IGRlYnVnIG1hc2sgYXMgYSBzdHJpbmcsIGJlY2F1c2UgaXdwcml2IGNhbm5vdAorCSAqIHBhcnNlIGhleCBudW1iZXJzIHN0YXJ0aW5nIHdpdGggMHggOi0oICAqLworCXtBVDc2X1NFVF9ERUJVRywKKwkgSVdfUFJJVl9UWVBFX0NIQVIgfCAxMCwgMCwgInNldF9kZWJ1ZyJ9LAorCisJe0FUNzZfR0VUX0RFQlVHLAorCSAwLCBJV19QUklWX1RZUEVfQ0hBUiB8IElXX1BSSVZfU0laRV9GSVhFRCB8IDEwLCAiZ2V0X2RlYnVnIn0sCisKKwkvKiAxIC0gYWN0aXZlLCAyIC0gcG93ZXIgc2F2ZSwgMyAtIHNtYXJ0IHBvd2VyIHNhdmUgKi8KKwl7QVQ3Nl9TRVRfUE9XRVJTQVZFX01PREUsCisJIElXX1BSSVZfVFlQRV9JTlQgfCBJV19QUklWX1NJWkVfRklYRUQgfCAxLCAwLCAic2V0X3Bvd2Vyc2F2ZSJ9LAorCisJe0FUNzZfR0VUX1BPV0VSU0FWRV9NT0RFLAorCSAwLCBJV19QUklWX1RZUEVfSU5UIHwgSVdfUFJJVl9TSVpFX0ZJWEVEIHwgMSwgImdldF9wb3dlcnNhdmUifSwKKworCS8qIG1pbl9jaGFubmVsX3RpbWUsIG1heF9jaGFubmVsX3RpbWUgKi8KKwl7QVQ3Nl9TRVRfU0NBTl9USU1FUywKKwkgSVdfUFJJVl9UWVBFX0lOVCB8IElXX1BSSVZfU0laRV9GSVhFRCB8IDIsIDAsICJzZXRfc2Nhbl90aW1lcyJ9LAorCisJe0FUNzZfR0VUX1NDQU5fVElNRVMsCisJIDAsIElXX1BSSVZfVFlQRV9JTlQgfCBJV19QUklWX1NJWkVfRklYRUQgfCAyLCAiZ2V0X3NjYW5fdGltZXMifSwKKworCS8qIDAgLSBhY3RpdmUsIDEgLSBwYXNzaXZlIHNjYW4gKi8KKwl7QVQ3Nl9TRVRfU0NBTl9NT0RFLAorCSBJV19QUklWX1RZUEVfSU5UIHwgSVdfUFJJVl9TSVpFX0ZJWEVEIHwgMSwgMCwgInNldF9zY2FuX21vZGUifSwKKworCXtBVDc2X0dFVF9TQ0FOX01PREUsCisJIDAsIElXX1BSSVZfVFlQRV9JTlQgfCBJV19QUklWX1NJWkVfRklYRUQgfCAxLCAiZ2V0X3NjYW5fbW9kZSJ9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpd19oYW5kbGVyX2RlZiBhdDc2X2hhbmRsZXJfZGVmID0geworCS5udW1fc3RhbmRhcmQgPSBBUlJBWV9TSVpFKGF0NzZfaGFuZGxlcnMpLAorCS5udW1fcHJpdmF0ZSA9IEFSUkFZX1NJWkUoYXQ3Nl9wcml2X2hhbmRsZXJzKSwKKwkubnVtX3ByaXZhdGVfYXJncyA9IEFSUkFZX1NJWkUoYXQ3Nl9wcml2X2FyZ3MpLAorCS5zdGFuZGFyZCA9IGF0NzZfaGFuZGxlcnMsCisJLnByaXZhdGUgPSBhdDc2X3ByaXZfaGFuZGxlcnMsCisJLnByaXZhdGVfYXJncyA9IGF0NzZfcHJpdl9hcmdzLAorCS5nZXRfd2lyZWxlc3Nfc3RhdHMgPSBhdDc2X2dldF93aXJlbGVzc19zdGF0cywKK307CisKK3N0YXRpYyBjb25zdCB1OCBzbmFwc2lnW10gPSB7IDB4YWEsIDB4YWEsIDB4MDMgfTsKKworLyogUkZDIDEwNDIgZW5jYXBzdWxhdGVzIEV0aGVybmV0IGZyYW1lcyBpbiA4MDIuMiBTTkFQICgweGFhLCAweGFhLCAweDAzKSB3aXRoCisgKiBhIFNOQVAgT0lEIG9mIDAgKDB4MDAsIDB4MDAsIDB4MDApICovCitzdGF0aWMgY29uc3QgdTggcmZjMTA0MnNpZ1tdID0geyAweGFhLCAweGFhLCAweDAzLCAweDAwLCAweDAwLCAweDAwIH07CisKK3N0YXRpYyBpbnQgYXQ3Nl90eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpzdGF0cyA9ICZwcml2LT5zdGF0czsKKwlpbnQgcmV0ID0gMDsKKwlpbnQgd2xlbjsKKwlpbnQgc3VibWl0X2xlbjsKKwlzdHJ1Y3QgYXQ3Nl90eF9idWZmZXIgKnR4X2J1ZmZlciA9IHByaXYtPmJ1bGtfb3V0X2J1ZmZlcjsKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaTgwMl8xMV9oZHIgPQorCSAgICAoc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKil0eF9idWZmZXItPnBhY2tldDsKKwl1OCAqcGF5bG9hZCA9IGk4MDJfMTFfaGRyLT5wYXlsb2FkOworCXN0cnVjdCBldGhoZHIgKmVoID0gKHN0cnVjdCBldGhoZHIgKilza2ItPmRhdGE7CisKKwlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChuZXRkZXYpKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6ICVzIGNhbGxlZCB3aGlsZSBuZXRkZXYgaXMgc3RvcHBlZFxuIiwKKwkJICAgICAgIG5ldGRldi0+bmFtZSwgX19mdW5jX18pOworCQkvKiBza2lwIHRoaXMgcGFja2V0ICovCisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHByaXYtPnR4X3VyYi0+c3RhdHVzID09IC1FSU5QUk9HUkVTUykgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiAlcyBjYWxsZWQgd2hpbGUgdHggdXJiIGlzIHBlbmRpbmdcbiIsCisJCSAgICAgICBuZXRkZXYtPm5hbWUsIF9fZnVuY19fKTsKKwkJLyogc2tpcCB0aGlzIHBhY2tldCAqLworCQlkZXZfa2ZyZWVfc2tiKHNrYik7CisJCXJldHVybiAwOworCX0KKworCWlmIChza2ItPmxlbiA8IEVUSF9ITEVOKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6ICVzOiBza2IgdG9vIHNob3J0ICglZClcbiIsCisJCSAgICAgICBuZXRkZXYtPm5hbWUsIF9fZnVuY19fLCBza2ItPmxlbik7CisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJYXQ3Nl9sZWR0cmlnX3R4X2FjdGl2aXR5KCk7CS8qIHRlbGwgbGVkdHJpZ2dlciB3ZSBzZW5kIGEgcGFja2V0ICovCisKKwkvKiB3ZSBjYW4gZ2V0IHJpZCBvZiBtZW1jcHkgaWYgd2Ugc2V0IG5ldGRldi0+aGFyZF9oZWFkZXJfbGVuIHRvCisJICAgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UsIGJ1dCB3ZSB3b3VsZCBuZWVkIHRvIGtlZXAgdGhlIHNrYiBhcm91bmQgKi8KKworCWlmIChudG9ocyhlaC0+aF9wcm90bykgPD0gRVRIX0RBVEFfTEVOKSB7CisJCS8qIHRoaXMgaXMgYSA4MDIuMyBwYWNrZXQgKi8KKwkJaWYgKHNrYi0+bGVuID49IEVUSF9ITEVOICsgc2l6ZW9mKHJmYzEwNDJzaWcpCisJCSAgICAmJiBza2ItPmRhdGFbRVRIX0hMRU5dID09IHJmYzEwNDJzaWdbMF0KKwkJICAgICYmIHNrYi0+ZGF0YVtFVEhfSExFTiArIDFdID09IHJmYzEwNDJzaWdbMV0pIHsKKwkJCS8qIGhpZ2hlciBsYXllciBkZWxpdmVyZWQgU05BUCBoZWFkZXIgLSBrZWVwIGl0ICovCisJCQltZW1jcHkocGF5bG9hZCwgc2tiLT5kYXRhICsgRVRIX0hMRU4sCisJCQkgICAgICAgc2tiLT5sZW4gLSBFVEhfSExFTik7CisJCQl3bGVuID0gSUVFRTgwMjExXzNBRERSX0xFTiArIHNrYi0+bGVuIC0gRVRIX0hMRU47CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9FUlIgIiVzOiBkcm9wcGluZyBub24tU05BUCA4MDIuMiBwYWNrZXQgIgorCQkJICAgICAgICIoRFNBUCAweCUwMnggU1NBUCAweCUwMnggY250cmwgMHglMDJ4KVxuIiwKKwkJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHNrYi0+ZGF0YVtFVEhfSExFTl0sCisJCQkgICAgICAgc2tiLT5kYXRhW0VUSF9ITEVOICsgMV0sCisJCQkgICAgICAgc2tiLT5kYXRhW0VUSF9ITEVOICsgMl0pOworCQkJZGV2X2tmcmVlX3NrYihza2IpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9IGVsc2UgeworCQkvKiBhZGQgUkZDIDEwNDIgaGVhZGVyIGluIGZyb250ICovCisJCW1lbWNweShwYXlsb2FkLCByZmMxMDQyc2lnLCBzaXplb2YocmZjMTA0MnNpZykpOworCQltZW1jcHkocGF5bG9hZCArIHNpemVvZihyZmMxMDQyc2lnKSwgJmVoLT5oX3Byb3RvLAorCQkgICAgICAgc2tiLT5sZW4gLSBvZmZzZXRvZihzdHJ1Y3QgZXRoaGRyLCBoX3Byb3RvKSk7CisJCXdsZW4gPSBJRUVFODAyMTFfM0FERFJfTEVOICsgc2l6ZW9mKHJmYzEwNDJzaWcpICsgc2tiLT5sZW4gLQorCQkgICAgb2Zmc2V0b2Yoc3RydWN0IGV0aGhkciwgaF9wcm90byk7CisJfQorCisJLyogbWFrZSB3aXJlbGVzcyBoZWFkZXIgKi8KKwlpODAyXzExX2hkci0+ZnJhbWVfY3RsID0KKwkgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZUWVBFX0RBVEEgfAorCQkJKHByaXYtPndlcF9lbmFibGVkID8gSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEIDogMCkgfAorCQkJKHByaXYtPml3X21vZGUgPT0KKwkJCSBJV19NT0RFX0lORlJBID8gSUVFRTgwMjExX0ZDVExfVE9EUyA6IDApKTsKKworCWlmIChwcml2LT5pd19tb2RlID09IElXX01PREVfQURIT0MpIHsKKwkJbWVtY3B5KGk4MDJfMTFfaGRyLT5hZGRyMSwgZWgtPmhfZGVzdCwgRVRIX0FMRU4pOworCQltZW1jcHkoaTgwMl8xMV9oZHItPmFkZHIyLCBlaC0+aF9zb3VyY2UsIEVUSF9BTEVOKTsKKwkJbWVtY3B5KGk4MDJfMTFfaGRyLT5hZGRyMywgcHJpdi0+YnNzaWQsIEVUSF9BTEVOKTsKKwl9IGVsc2UgaWYgKHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9JTkZSQSkgeworCQltZW1jcHkoaTgwMl8xMV9oZHItPmFkZHIxLCBwcml2LT5ic3NpZCwgRVRIX0FMRU4pOworCQltZW1jcHkoaTgwMl8xMV9oZHItPmFkZHIyLCBlaC0+aF9zb3VyY2UsIEVUSF9BTEVOKTsKKwkJbWVtY3B5KGk4MDJfMTFfaGRyLT5hZGRyMywgZWgtPmhfZGVzdCwgRVRIX0FMRU4pOworCX0KKworCWk4MDJfMTFfaGRyLT5kdXJhdGlvbl9pZCA9IGNwdV90b19sZTE2KDApOworCWk4MDJfMTFfaGRyLT5zZXFfY3RsID0gY3B1X3RvX2xlMTYoMCk7CisKKwkvKiBzZXR1cCAnQXRtZWwnIGhlYWRlciAqLworCXR4X2J1ZmZlci0+d2xlbmd0aCA9IGNwdV90b19sZTE2KHdsZW4pOworCXR4X2J1ZmZlci0+dHhfcmF0ZSA9IHByaXYtPnR4cmF0ZTsKKwkvKiBmb3IgYnJvYWRjYXN0IGRlc3RpbmF0aW9uIGFkZHJlc3NlcywgdGhlIGZpcm13YXJlIDAuMTAwLngKKwkgICBzZWVtcyB0byBjaG9vc2UgdGhlIGhpZ2hlc3QgcmF0ZSBzZXQgd2l0aCBDTURfU1RBUlRVUCBpbgorCSAgIGJhc2ljX3JhdGVfc2V0IHJlcGxhY2luZyB0aGlzIHZhbHVlICovCisKKwltZW1zZXQodHhfYnVmZmVyLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKHR4X2J1ZmZlci0+cmVzZXJ2ZWQpKTsKKworCXR4X2J1ZmZlci0+cGFkZGluZyA9IGF0NzZfY2FsY19wYWRkaW5nKHdsZW4pOworCXN1Ym1pdF9sZW4gPSB3bGVuICsgQVQ3Nl9UWF9IRFJMRU4gKyB0eF9idWZmZXItPnBhZGRpbmc7CisKKwlhdDc2X2RiZyhEQkdfVFhfREFUQV9DT05URU5ULCAiJXMgc2tiLT5kYXRhICVzIiwgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkgaGV4MnN0cihza2ItPmRhdGEsIDMyKSk7CisJYXQ3Nl9kYmcoREJHX1RYX0RBVEEsICIlcyB0eDogd2xlbiAweCV4IHBhZCAweCV4IHJhdGUgJWQgaGRyICVzIiwKKwkJIHByaXYtPm5ldGRldi0+bmFtZSwKKwkJIGxlMTZfdG9fY3B1KHR4X2J1ZmZlci0+d2xlbmd0aCksCisJCSB0eF9idWZmZXItPnBhZGRpbmcsIHR4X2J1ZmZlci0+dHhfcmF0ZSwKKwkJIGhleDJzdHIoaTgwMl8xMV9oZHIsIHNpemVvZigqaTgwMl8xMV9oZHIpKSk7CisJYXQ3Nl9kYmcoREJHX1RYX0RBVEFfQ09OVEVOVCwgIiVzIHBheWxvYWQgJXMiLCBwcml2LT5uZXRkZXYtPm5hbWUsCisJCSBoZXgyc3RyKHBheWxvYWQsIDQ4KSk7CisKKwkvKiBzZW5kIHN0dWZmICovCisJbmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpOworCW5ldGRldi0+dHJhbnNfc3RhcnQgPSBqaWZmaWVzOworCisJdXNiX2ZpbGxfYnVsa191cmIocHJpdi0+dHhfdXJiLCBwcml2LT51ZGV2LCBwcml2LT50eF9waXBlLCB0eF9idWZmZXIsCisJCQkgIHN1Ym1pdF9sZW4sIGF0NzZfdHhfY2FsbGJhY2ssIHByaXYpOworCXJldCA9IHVzYl9zdWJtaXRfdXJiKHByaXYtPnR4X3VyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHJldCkgeworCQlzdGF0cy0+dHhfZXJyb3JzKys7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGVycm9yIGluIHR4IHN1Ym1pdCB1cmI6ICVkXG4iLAorCQkgICAgICAgbmV0ZGV2LT5uYW1lLCByZXQpOworCQlpZiAocmV0ID09IC1FSU5WQUwpCisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiJXM6IC1FSU5WQUw6IHR4IHVyYiAlcCBoY3ByaXYgJXAgY29tcGxldGUgJXBcbiIsCisJCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBwcml2LT50eF91cmIsCisJCQkgICAgICAgcHJpdi0+dHhfdXJiLT5oY3ByaXYsIHByaXYtPnR4X3VyYi0+Y29tcGxldGUpOworCX0gZWxzZSB7CisJCXN0YXRzLT50eF9ieXRlcyArPSBza2ItPmxlbjsKKwkJZGV2X2tmcmVlX3NrYihza2IpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJaWYgKCFwcml2KQorCQlyZXR1cm47CisJZGV2X3dhcm4oJm5ldGRldi0+ZGV2LCAidHggdGltZW91dC4iKTsKKworCXVzYl91bmxpbmtfdXJiKHByaXYtPnR4X3VyYik7CisJcHJpdi0+c3RhdHMudHhfZXJyb3JzKys7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zdWJtaXRfcnhfdXJiKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpCit7CisJaW50IHJldDsKKwlpbnQgc2l6ZTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcHJpdi0+cnhfc2tiOworCisJaWYgKCFwcml2LT5yeF91cmIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogJXM6IHByaXYtPnJ4X3VyYiBpcyBOVUxMXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCWlmICghc2tiKSB7CisJCXNrYiA9IGRldl9hbGxvY19za2Ioc2l6ZW9mKHN0cnVjdCBhdDc2X3J4X2J1ZmZlcikpOworCQlpZiAoIXNrYikgeworCQkJcHJpbnRrKEtFUk5fRVJSICIlczogY2Fubm90IGFsbG9jYXRlIHJ4IHNrYnVmZlxuIiwKKwkJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUpOworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCQlwcml2LT5yeF9za2IgPSBza2I7CisJfSBlbHNlIHsKKwkJc2tiX3B1c2goc2tiLCBza2JfaGVhZHJvb20oc2tiKSk7CisJCXNrYl90cmltKHNrYiwgMCk7CisJfQorCisJc2l6ZSA9IHNrYl90YWlscm9vbShza2IpOworCXVzYl9maWxsX2J1bGtfdXJiKHByaXYtPnJ4X3VyYiwgcHJpdi0+dWRldiwgcHJpdi0+cnhfcGlwZSwKKwkJCSAgc2tiX3B1dChza2IsIHNpemUpLCBzaXplLCBhdDc2X3J4X2NhbGxiYWNrLCBwcml2KTsKKwlyZXQgPSB1c2Jfc3VibWl0X3VyYihwcml2LT5yeF91cmIsIEdGUF9BVE9NSUMpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChyZXQgPT0gLUVOT0RFVikKKwkJCWF0NzZfZGJnKERCR19ERVZTVEFSVCwKKwkJCQkgInVzYl9zdWJtaXRfdXJiIHJldHVybmVkIC1FTk9ERVYiKTsKKwkJZWxzZQorCQkJcHJpbnRrKEtFUk5fRVJSICIlczogcngsIHVzYl9zdWJtaXRfdXJiIGZhaWxlZDogJWRcbiIsCisJCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCX0KKworZXhpdDoKKwlpZiAocmV0IDwgMCAmJiByZXQgIT0gLUVOT0RFVikKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogY2Fubm90IHN1Ym1pdCByeCB1cmIgLSBwbGVhc2UgdW5sb2FkIHRoZSAiCisJCSAgICAgICAiZHJpdmVyIGFuZC9vciBwb3dlciBjeWNsZSB0aGUgZGV2aWNlXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisJaW50IHJldCA9IDA7CisKKwlhdDc2X2RiZyhEQkdfUFJPQ19FTlRSWSwgIiVzKCk6IGVudHJ5IiwgX19mdW5jX18pOworCisJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcHJpdi0+bXR4KSkKKwkJcmV0dXJuIC1FSU5UUjsKKworCS8qIGlmIG5ldGRldi0+ZGV2X2FkZHIgIT0gcHJpdi0+bWFjX2FkZHIgd2UgbXVzdAorCSAgIHNldCB0aGUgbWFjIGFkZHJlc3MgaW4gdGhlIGRldmljZSAhICovCisJaWYgKGNvbXBhcmVfZXRoZXJfYWRkcihuZXRkZXYtPmRldl9hZGRyLCBwcml2LT5tYWNfYWRkcikpIHsKKwkJaWYgKGF0NzZfYWRkX21hY19hZGRyZXNzKHByaXYsIG5ldGRldi0+ZGV2X2FkZHIpID49IDApCisJCQlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsICIlczogc2V0IG5ldyBNQUMgYWRkciAlcyIsCisJCQkJIG5ldGRldi0+bmFtZSwgbWFjMnN0cihuZXRkZXYtPmRldl9hZGRyKSk7CisJfQorCisJcHJpdi0+c2Nhbl9zdGF0ZSA9IFNDQU5fSURMRTsKKwlwcml2LT5sYXN0X3NjYW4gPSBqaWZmaWVzOworCisJcmV0ID0gYXQ3Nl9zdWJtaXRfcnhfdXJiKHByaXYpOworCWlmIChyZXQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IG9wZW46IHN1Ym1pdF9yeF91cmIgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIG5ldGRldi0+bmFtZSwgcmV0KTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX3Jlc3RhcnQsIDApOworCisJYXQ3Nl9kYmcoREJHX1BST0NfRU5UUlksICIlcygpOiBlbmQiLCBfX2Z1bmNfXyk7CitlcnJvcjoKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7CisJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOworfQorCitzdGF0aWMgaW50IGF0NzZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAiJXM6IEVOVEVSIiwgX19mdW5jX18pOworCisJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcHJpdi0+bXR4KSkKKwkJcmV0dXJuIC1FSU5UUjsKKworCWF0NzZfcXVpZXNjZShwcml2KTsKKworCWlmICghcHJpdi0+ZGV2aWNlX3VucGx1Z2dlZCkgeworCQkvKiBXZSBhcmUgY2FsbGVkIGJ5ICJpZmNvbmZpZyBldGhYIGRvd24iLCBub3QgYmVjYXVzZSB0aGUKKwkJICogZGV2aWNlIGlzIG5vdCBhdmFpbGFibGUgYW55bW9yZS4gKi8KKwkJYXQ3Nl9zZXRfcmFkaW8ocHJpdiwgMCk7CisKKwkJLyogV2UgdW5saW5rIHJ4X3VyYiBiZWNhdXNlIGF0NzZfb3BlbigpIHJlLXN1Ym1pdHMgaXQuCisJCSAqIElmIHVucGx1Z2dlZCwgYXQ3Nl9kZWxldGVfZGV2aWNlKCkgdGFrZXMgY2FyZSBvZiBpdC4gKi8KKwkJdXNiX2tpbGxfdXJiKHByaXYtPnJ4X3VyYik7CisJfQorCisJLyogZnJlZSB0aGUgYnNzX2xpc3QgKi8KKwlhdDc2X2ZyZWVfYnNzX2xpc3QocHJpdik7CisKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7CisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAiJXM6IEVYSVQiLCBfX2Z1bmNfXyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYXQ3Nl9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkJICAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJc3RybmNweShpbmZvLT5kcml2ZXIsIERSSVZFUl9OQU1FLCBzaXplb2YoaW5mby0+ZHJpdmVyKSk7CisJc3RybmNweShpbmZvLT52ZXJzaW9uLCBEUklWRVJfVkVSU0lPTiwgc2l6ZW9mKGluZm8tPnZlcnNpb24pKTsKKworCXVzYl9tYWtlX3BhdGgocHJpdi0+dWRldiwgaW5mby0+YnVzX2luZm8sIHNpemVvZihpbmZvLT5idXNfaW5mbykpOworCisJc25wcmludGYoaW5mby0+ZndfdmVyc2lvbiwgc2l6ZW9mKGluZm8tPmZ3X3ZlcnNpb24pLCAiJWQuJWQuJWQtJWQiLAorCQkgcHJpdi0+ZndfdmVyc2lvbi5tYWpvciwgcHJpdi0+ZndfdmVyc2lvbi5taW5vciwKKwkJIHByaXYtPmZ3X3ZlcnNpb24ucGF0Y2gsIHByaXYtPmZ3X3ZlcnNpb24uYnVpbGQpOworfQorCitzdGF0aWMgdTMyIGF0NzZfZXRodG9vbF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCXJldHVybiBwcml2LT5tYWNfc3RhdGUgPT0gTUFDX0NPTk5FQ1RFRDsKK30KKworc3RhdGljIHN0cnVjdCBldGh0b29sX29wcyBhdDc2X2V0aHRvb2xfb3BzID0geworCS5nZXRfZHJ2aW5mbyA9IGF0NzZfZXRodG9vbF9nZXRfZHJ2aW5mbywKKwkuZ2V0X2xpbmsgPSBhdDc2X2V0aHRvb2xfZ2V0X2xpbmssCit9OworCisvKiBEb3dubG9hZCBleHRlcm5hbCBmaXJtd2FyZSAqLworc3RhdGljIGludCBhdDc2X2xvYWRfZXh0ZXJuYWxfZncoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIHN0cnVjdCBmd2VudHJ5ICpmd2UpCit7CisJaW50IHJldDsKKwlpbnQgb3BfbW9kZTsKKwlpbnQgYmxvY2tubyA9IDA7CisJaW50IGJzaXplOworCXU4ICpibG9jazsKKwl1OCAqYnVmID0gZndlLT5leHRmdzsKKwlpbnQgc2l6ZSA9IGZ3ZS0+ZXh0Zndfc2l6ZTsKKworCWlmICghYnVmIHx8ICFzaXplKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCW9wX21vZGUgPSBhdDc2X2dldF9vcF9tb2RlKHVkZXYpOworCWF0NzZfZGJnKERCR19ERVZTVEFSVCwgIm9wbW9kZSAlZCIsIG9wX21vZGUpOworCisJaWYgKG9wX21vZGUgIT0gT1BNT0RFX05PUk1BTF9OSUNfV0lUSE9VVF9GTEFTSCkgeworCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmdWRldi0+ZGV2LCAidW5leHBlY3RlZCBvcG1vZGUgJWRcbiIsCisJCQkgICBvcF9tb2RlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYmxvY2sgPSBrbWFsbG9jKEZXX0JMT0NLX1NJWkUsIEdGUF9LRVJORUwpOworCWlmICghYmxvY2spCisJCXJldHVybiAtRU5PTUVNOworCisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAiZG93bmxvYWRpbmcgZXh0ZXJuYWwgZmlybXdhcmUiKTsKKworCS8qIGZvciBmdyA+PSAwLjEwMCwgdGhlIGRldmljZSBuZWVkcyBhbiBleHRyYSBlbXB0eSBibG9jayAqLworCWRvIHsKKwkJYnNpemUgPSBtaW5fdChpbnQsIHNpemUsIEZXX0JMT0NLX1NJWkUpOworCQltZW1jcHkoYmxvY2ssIGJ1ZiwgYnNpemUpOworCQlhdDc2X2RiZyhEQkdfREVWU1RBUlQsCisJCQkgImV4dCBmdywgc2l6ZSBsZWZ0ID0gJTVkLCBic2l6ZSA9ICU0ZCwgYmxvY2tubyA9ICUyZCIsCisJCQkgc2l6ZSwgYnNpemUsIGJsb2Nrbm8pOworCQlyZXQgPSBhdDc2X2xvYWRfZXh0X2Z3X2Jsb2NrKHVkZXYsIGJsb2Nrbm8sIGJsb2NrLCBic2l6ZSk7CisJCWlmIChyZXQgIT0gYnNpemUpIHsKKwkJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkJICAgImxvYWRpbmcgJWR0aCBmaXJtd2FyZSBibG9jayBmYWlsZWQ6ICVkXG4iLAorCQkJCSAgIGJsb2Nrbm8sIHJldCk7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJYnVmICs9IGJzaXplOworCQlzaXplIC09IGJzaXplOworCQlibG9ja25vKys7CisJfSB3aGlsZSAoYnNpemUgPiAwKTsKKworCWlmIChhdDc2X2lzXzUwNWEoZndlLT5ib2FyZF90eXBlKSkgeworCQlhdDc2X2RiZyhEQkdfREVWU1RBUlQsICIyMDAgbXMgZGVsYXkgZm9yIDUwNWEiKTsKKwkJc2NoZWR1bGVfdGltZW91dF9pbnRlcnJ1cHRpYmxlKEhaIC8gNSArIDEpOworCX0KKworZXhpdDoKKwlrZnJlZShibG9jayk7CisJaWYgKHJldCA8IDApCisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkgICAiZG93bmxvYWRpbmcgZXh0ZXJuYWwgZmlybXdhcmUgZmFpbGVkOiAlZFxuIiwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCisvKiBEb3dubG9hZCBpbnRlcm5hbCBmaXJtd2FyZSAqLworc3RhdGljIGludCBhdDc2X2xvYWRfaW50ZXJuYWxfZncoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIHN0cnVjdCBmd2VudHJ5ICpmd2UpCit7CisJaW50IHJldDsKKwlpbnQgbmVlZF9yZW1hcCA9ICFhdDc2X2lzXzUwNWEoZndlLT5ib2FyZF90eXBlKTsKKworCXJldCA9IGF0NzZfdXNiZGZ1X2Rvd25sb2FkKHVkZXYsIGZ3ZS0+aW50ZncsIGZ3ZS0+aW50Zndfc2l6ZSwKKwkJCQkgICBuZWVkX3JlbWFwID8gMCA6IDIgKiBIWik7CisKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmdWRldi0+ZGV2LAorCQkJICAgImRvd25sb2FkaW5nIGludGVybmFsIGZ3IGZhaWxlZCB3aXRoICVkXG4iLCByZXQpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAic2VuZGluZyBSRU1BUCIpOworCisJLyogbm8gUkVNQVAgZm9yIDUwNUEgKHNlZSBTRiBkcml2ZXIpICovCisJaWYgKG5lZWRfcmVtYXApIHsKKwkJcmV0ID0gYXQ3Nl9yZW1hcCh1ZGV2KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkJICAgInNlbmRpbmcgUkVNQVAgZmFpbGVkIHdpdGggJWRcbiIsIHJldCk7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9CisKKwlhdDc2X2RiZyhEQkdfREVWU1RBUlQsICJzbGVlcGluZyBmb3IgMiBzZWNvbmRzIik7CisJc2NoZWR1bGVfdGltZW91dF9pbnRlcnJ1cHRpYmxlKDIgKiBIWiArIDEpOworCXVzYl9yZXNldF9kZXZpY2UodWRldik7CisKK2V4aXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X21hdGNoX2Vzc2lkKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBic3NfaW5mbyAqcHRyKQoreworCS8qIGNvbW1vbiBjcml0ZXJpYSBmb3IgYm90aCBtb2RpICovCisKKwlpbnQgcmV0ID0gKHByaXYtPmVzc2lkX3NpemUgPT0gMCAvKiBBTlkgc3NpZCAqLyAgfHwKKwkJICAgKHByaXYtPmVzc2lkX3NpemUgPT0gcHRyLT5zc2lkX2xlbiAmJgorCQkgICAgIW1lbWNtcChwcml2LT5lc3NpZCwgcHRyLT5zc2lkLCBwdHItPnNzaWRfbGVuKSkpOworCWlmICghcmV0KQorCQlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkJICIlcyBic3MgdGFibGUgZW50cnkgJXA6IGVzc2lkIGRpZG4ndCBtYXRjaCIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBwdHIpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfbWF0Y2hfbW9kZShzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCBzdHJ1Y3QgYnNzX2luZm8gKnB0cikKK3sKKwlpbnQgcmV0OworCisJaWYgKHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9BREhPQykKKwkJcmV0ID0gcHRyLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX0lCU1M7CisJZWxzZQorCQlyZXQgPSBwdHItPmNhcGEgJiBXTEFOX0NBUEFCSUxJVFlfRVNTOworCWlmICghcmV0KQorCQlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkJICIlcyBic3MgdGFibGUgZW50cnkgJXA6IG1vZGUgZGlkbid0IG1hdGNoIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIHB0cik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhdDc2X21hdGNoX3JhdGVzKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBic3NfaW5mbyAqcHRyKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHB0ci0+cmF0ZXNfbGVuOyBpKyspIHsKKwkJdTggcmF0ZSA9IHB0ci0+cmF0ZXNbaV07CisKKwkJaWYgKCEocmF0ZSAmIDB4ODApKQorCQkJY29udGludWU7CisKKwkJLyogdGhpcyBpcyBhIGJhc2ljIHJhdGUgd2UgaGF2ZSB0byBzdXBwb3J0CisJCSAgIChzZWUgSUVFRTgwMi4xMSwgY2guIDcuMy4yLjIpICovCisJCWlmIChyYXRlICE9ICgweDgwIHwgaHdfcmF0ZXNbMF0pCisJCSAgICAmJiByYXRlICE9ICgweDgwIHwgaHdfcmF0ZXNbMV0pCisJCSAgICAmJiByYXRlICE9ICgweDgwIHwgaHdfcmF0ZXNbMl0pCisJCSAgICAmJiByYXRlICE9ICgweDgwIHwgaHdfcmF0ZXNbM10pKSB7CisJCQlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkJCSAiJXM6IGJzcyB0YWJsZSBlbnRyeSAlcDogYmFzaWMgcmF0ZSAlMDJ4IG5vdCAiCisJCQkJICJzdXBwb3J0ZWQiLCBwcml2LT5uZXRkZXYtPm5hbWUsIHB0ciwgcmF0ZSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCS8qIGlmIHdlIHVzZSBzaG9ydCBwcmVhbWJsZSwgdGhlIGJzcyBtdXN0IHN1cHBvcnQgaXQgKi8KKwlpZiAocHJpdi0+cHJlYW1ibGVfdHlwZSA9PSBQUkVBTUJMRV9UWVBFX1NIT1JUICYmCisJICAgICEocHRyLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX1NIT1JUX1BSRUFNQkxFKSkgeworCQlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkJICIlczogJXAgZG9lcyBub3Qgc3VwcG9ydCBzaG9ydCBwcmVhbWJsZSIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBwdHIpOworCQlyZXR1cm4gMDsKKwl9IGVsc2UKKwkJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0NzZfbWF0Y2hfd2VwKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBic3NfaW5mbyAqcHRyKQoreworCWlmICghcHJpdi0+d2VwX2VuYWJsZWQgJiYgcHRyLT5jYXBhICYgV0xBTl9DQVBBQklMSVRZX1BSSVZBQ1kpIHsKKwkJLyogd2UgaGF2ZSBkaXNhYmxlZCBXRVAsIGJ1dCB0aGUgQlNTIHNpZ25hbHMgcHJpdmFjeSAqLworCQlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkJICIlczogYnNzIHRhYmxlIGVudHJ5ICVwOiByZXF1aXJlcyBlbmNyeXB0aW9uIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIHB0cik7CisJCXJldHVybiAwOworCX0KKwkvKiBvdGhlcndpc2UgaWYgdGhlIEJTUyBkb2VzIG5vdCBzaWduYWwgcHJpdmFjeSBpdCBtYXkgd2VsbAorCSAgIGFjY2VwdCBlbmNyeXB0ZWQgcGFja2V0cyBmcm9tIHVzIC4uLiAqLworCXJldHVybiAxOworfQorCitzdGF0aWMgaW5saW5lIGludCBhdDc2X21hdGNoX2Jzc2lkKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBic3NfaW5mbyAqcHRyKQoreworCWlmICghcHJpdi0+d2FudGVkX2Jzc2lkX3ZhbGlkIHx8CisJICAgICFjb21wYXJlX2V0aGVyX2FkZHIocHRyLT5ic3NpZCwgcHJpdi0+d2FudGVkX2Jzc2lkKSkKKwkJcmV0dXJuIDE7CisKKwlhdDc2X2RiZyhEQkdfQlNTX01BVENILAorCQkgIiVzOiByZXF1ZXN0ZWQgYnNzaWQgLSAlcyBkb2VzIG5vdCBtYXRjaCIsCisJCSBwcml2LT5uZXRkZXYtPm5hbWUsIG1hYzJzdHIocHJpdi0+d2FudGVkX2Jzc2lkKSk7CisJYXQ3Nl9kYmcoREJHX0JTU19NQVRDSCwKKwkJICIgICAgICBBUCBic3NpZCAtICVzIG9mIGJzcyB0YWJsZSBlbnRyeSAlcCIsCisJCSBtYWMyc3RyKHB0ci0+YnNzaWQpLCBwdHIpOworCXJldHVybiAwOworfQorCisvKioKKyAqIGF0NzZfbWF0Y2hfYnNzIC0gdHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBic3MgaW4gcHJpdi0+YnNzCisgKgorICogbGFzdCAtIGxhc3QgYnNzIHRyaWVkCisgKgorICogbGFzdCA9PSBOVUxMIHNpZ25hbHMgYSBuZXcgcm91bmQgc3RhcnRpbmcgd2l0aCBwcml2LT5ic3NfbGlzdC5uZXh0CisgKiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGluc2lkZSBhbiBhY3F1aXJlZCBwcml2LT5ic3NfbGlzdF9zcGlubG9jaworICogb3RoZXJ3aXNlIHRoZSB0aW1lb3V0IG9uIGJzcyBtYXkgcmVtb3ZlIHRoZSBuZXdseSBjaG9zZW4gZW50cnkKKyAqLworc3RhdGljIHN0cnVjdCBic3NfaW5mbyAqYXQ3Nl9tYXRjaF9ic3Moc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCQkgICAgICAgc3RydWN0IGJzc19pbmZvICpsYXN0KQoreworCXN0cnVjdCBic3NfaW5mbyAqcHRyID0gTlVMTDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpjdXJyOworCisJY3VyciA9IGxhc3QgPyBsYXN0LT5saXN0Lm5leHQgOiBwcml2LT5ic3NfbGlzdC5uZXh0OworCXdoaWxlIChjdXJyICE9ICZwcml2LT5ic3NfbGlzdCkgeworCQlwdHIgPSBsaXN0X2VudHJ5KGN1cnIsIHN0cnVjdCBic3NfaW5mbywgbGlzdCk7CisJCWlmIChhdDc2X21hdGNoX2Vzc2lkKHByaXYsIHB0cikgJiYgYXQ3Nl9tYXRjaF9tb2RlKHByaXYsIHB0cikKKwkJICAgICYmIGF0NzZfbWF0Y2hfd2VwKHByaXYsIHB0cikgJiYgYXQ3Nl9tYXRjaF9yYXRlcyhwcml2LCBwdHIpCisJCSAgICAmJiBhdDc2X21hdGNoX2Jzc2lkKHByaXYsIHB0cikpCisJCQlicmVhazsKKwkJY3VyciA9IGN1cnItPm5leHQ7CisJfQorCisJaWYgKGN1cnIgPT0gJnByaXYtPmJzc19saXN0KQorCQlwdHIgPSBOVUxMOworCS8qIG90aGVyd2lzZSBwdHIgcG9pbnRzIHRvIHRoZSBzdHJ1Y3QgYnNzX2luZm8gd2UgaGF2ZSBjaG9zZW4gKi8KKworCWF0NzZfZGJnKERCR19CU1NfVEFCTEUsICIlcyAlczogcmV0dXJuZWQgJXAiLCBwcml2LT5uZXRkZXYtPm5hbWUsCisJCSBfX2Z1bmNfXywgcHRyKTsKKwlyZXR1cm4gcHRyOworfQorCisvKiBTdGFydCBqb2luaW5nIGEgbWF0Y2hpbmcgQlNTLCBvciBjcmVhdGUgb3duIElCU1MgKi8KK3N0YXRpYyB2b2lkIGF0NzZfd29ya19qb2luKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIHdvcmtfam9pbik7CisJaW50IHJldDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKworCVdBUk5fT04ocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19KT0lOSU5HKTsKKwlpZiAocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19KT0lOSU5HKQorCQlnb3RvIGV4aXQ7CisKKwkvKiBzZWN1cmUgdGhlIGFjY2VzcyB0byBwcml2LT5jdXJyX2JzcyAhICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7CisJcHJpdi0+Y3Vycl9ic3MgPSBhdDc2X21hdGNoX2Jzcyhwcml2LCBwcml2LT5jdXJyX2Jzcyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+YnNzX2xpc3Rfc3BpbmxvY2ssIGZsYWdzKTsKKworCWlmICghcHJpdi0+Y3Vycl9ic3MpIHsKKwkJLyogaGVyZSB3ZSBoYXZlbid0IGZvdW5kIGEgbWF0Y2hpbmcgKGkpYnNzIC4uLiAqLworCQlpZiAocHJpdi0+aXdfbW9kZSA9PSBJV19NT0RFX0FESE9DKSB7CisJCQlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX09XTl9JQlNTKTsKKwkJCWF0NzZfc3RhcnRfaWJzcyhwcml2KTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCQkvKiBoYXZlbid0IGZvdW5kIGEgbWF0Y2hpbmcgQlNTIGluIGluZnJhIG1vZGUgLSB0cnkgYWdhaW4gKi8KKwkJYXQ3Nl9zZXRfbWFjX3N0YXRlKHByaXYsIE1BQ19TQ0FOTklORyk7CisJCXNjaGVkdWxlX3dvcmsoJnByaXYtPndvcmtfc3RhcnRfc2Nhbik7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlyZXQgPSBhdDc2X2pvaW5fYnNzKHByaXYsIHByaXYtPmN1cnJfYnNzKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBqb2luX2JzcyBmYWlsZWQgd2l0aCAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKwkJZ290byBleGl0OworCX0KKworCXJldCA9IGF0NzZfd2FpdF9jb21wbGV0aW9uKHByaXYsIENNRF9KT0lOKTsKKwlpZiAocmV0ICE9IENNRF9TVEFUVVNfQ09NUExFVEUpIHsKKwkJaWYgKHJldCAhPSBDTURfU1RBVFVTX1RJTUVfT1VUKQorCQkJcHJpbnRrKEtFUk5fRVJSICIlczogam9pbl9ic3MgY29tcGxldGVkIHdpdGggJWRcbiIsCisJCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCByZXQpOworCQllbHNlCisJCQlwcmludGsoS0VSTl9JTkZPICIlczogam9pbl9ic3Mgc3NpZCAlcyB0aW1lZCBvdXRcbiIsCisJCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkJICAgICAgIG1hYzJzdHIocHJpdi0+Y3Vycl9ic3MtPmJzc2lkKSk7CisKKwkJLyogcmV0cnkgbmV4dCBCU1MgaW1tZWRpYXRlbHkgKi8KKwkJc2NoZWR1bGVfd29yaygmcHJpdi0+d29ya19qb2luKTsKKwkJZ290byBleGl0OworCX0KKworCS8qIGhlcmUgd2UgaGF2ZSBqb2luZWQgdGhlIChJKUJTUyAqLworCWlmIChwcml2LT5pd19tb2RlID09IElXX01PREVfQURIT0MpIHsKKwkJc3RydWN0IGJzc19pbmZvICpicHRyID0gcHJpdi0+Y3Vycl9ic3M7CisJCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfQ09OTkVDVEVEKTsKKwkJLyogZ2V0IEVTU0lELCBCU1NJRCBhbmQgY2hhbm5lbCBmb3IgcHJpdi0+Y3Vycl9ic3MgKi8KKwkJcHJpdi0+ZXNzaWRfc2l6ZSA9IGJwdHItPnNzaWRfbGVuOworCQltZW1jcHkocHJpdi0+ZXNzaWQsIGJwdHItPnNzaWQsIGJwdHItPnNzaWRfbGVuKTsKKwkJbWVtY3B5KHByaXYtPmJzc2lkLCBicHRyLT5ic3NpZCwgRVRIX0FMRU4pOworCQlwcml2LT5jaGFubmVsID0gYnB0ci0+Y2hhbm5lbDsKKwkJYXQ3Nl9pd2V2ZW50X2Jzc19jb25uZWN0KHByaXYtPm5ldGRldiwgYnB0ci0+YnNzaWQpOworCQluZXRpZl9jYXJyaWVyX29uKHByaXYtPm5ldGRldik7CisJCW5ldGlmX3N0YXJ0X3F1ZXVlKHByaXYtPm5ldGRldik7CisJCS8qIGp1c3QgdG8gYmUgc3VyZSAqLworCQljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19nZXRfc2Nhbik7CisJCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2F1dGgpOworCQljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19hc3NvYyk7CisJfSBlbHNlIHsKKwkJLyogc2VuZCBhdXRoIHJlcSAqLworCQlwcml2LT5yZXRyaWVzID0gQVVUSF9SRVRSSUVTOworCQlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX0FVVEgpOworCQlhdDc2X2F1dGhfcmVxKHByaXYsIHByaXYtPmN1cnJfYnNzLCAxLCBOVUxMKTsKKwkJYXQ3Nl9kYmcoREJHX01HTVRfVElNRVIsCisJCQkgIiVzOiVkOiBzdGFydGluZyBtZ210X3RpbWVyICsgSFoiLCBfX2Z1bmNfXywgX19MSU5FX18pOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2F1dGgsIEFVVEhfVElNRU9VVCk7CisJfQorCitleGl0OgorCW11dGV4X3VubG9jaygmcHJpdi0+bXR4KTsKK30KKworLyogUmVhcCBzY2FuIHJlc3VsdHMgKi8KK3N0YXRpYyB2b2lkIGF0NzZfZHdvcmtfZ2V0X3NjYW4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCWludCBzdGF0dXM7CisJaW50IHJldDsKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIGR3b3JrX2dldF9zY2FuLndvcmspOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKwlXQVJOX09OKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfU0NBTk5JTkcpOworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX1NDQU5OSU5HKQorCQlnb3RvIGV4aXQ7CisKKwlzdGF0dXMgPSBhdDc2X2dldF9jbWRfc3RhdHVzKHByaXYtPnVkZXYsIENNRF9TQ0FOKTsKKwlpZiAoc3RhdHVzIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiAlczogYXQ3Nl9nZXRfY21kX3N0YXR1cyBmYWlsZWQgd2l0aCAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgX19mdW5jX18sIHN0YXR1cyk7CisJCXN0YXR1cyA9IENNRF9TVEFUVVNfSU5fUFJPR1JFU1M7CisJCS8qIElORk86IEhvcGUgaXQgd2FzIGEgb25lIG9mZiBlcnJvciAtIGlmIG5vdCwgc2Nhbm5pbmcKKwkJICAgZnVydGhlciBkb3duIHRoZSBsaW5lIGFuZCBzdG9wIHRoaXMgY3ljbGUgKi8KKwl9CisJYXQ3Nl9kYmcoREJHX1BST0dSRVNTLAorCQkgIiVzICVzOiBnb3QgY21kX3N0YXR1cyAlZCAoc3RhdGUgJXMsIG5lZWRfYW55ICVkKSIsCisJCSBwcml2LT5uZXRkZXYtPm5hbWUsIF9fZnVuY19fLCBzdGF0dXMsCisJCSBtYWNfc3RhdGVzW3ByaXYtPm1hY19zdGF0ZV0sIHByaXYtPnNjYW5fbmVlZF9hbnkpOworCisJaWYgKHN0YXR1cyAhPSBDTURfU1RBVFVTX0NPTVBMRVRFKSB7CisJCWlmICgoc3RhdHVzICE9IENNRF9TVEFUVVNfSU5fUFJPR1JFU1MpICYmCisJCSAgICAoc3RhdHVzICE9IENNRF9TVEFUVVNfSURMRSkpCisJCQlwcmludGsoS0VSTl9FUlIgIiVzOiAlczogQmFkIHNjYW4gc3RhdHVzOiAlc1xuIiwKKwkJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIF9fZnVuY19fLAorCQkJICAgICAgIGF0NzZfZ2V0X2NtZF9zdGF0dXNfc3RyaW5nKHN0YXR1cykpOworCisJCS8qIHRoZSBmaXJzdCBjbWQgc3RhdHVzIGFmdGVyIHNjYW4gc3RhcnQgaXMgYWx3YXlzIGEgSURMRSAtPgorCQkgICBzdGFydCB0aGUgdGltZXIgdG8gcG9sbCBhZ2FpbiB1bnRpbCBDT01QTEVURUQgKi8KKwkJYXQ3Nl9kYmcoREJHX01HTVRfVElNRVIsCisJCQkgIiVzOiVkOiBzdGFydGluZyBtZ210X3RpbWVyIGZvciAlZCB0aWNrcyIsCisJCQkgX19mdW5jX18sIF9fTElORV9fLCBTQ0FOX1BPTExfSU5URVJWQUwpOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2dldF9zY2FuLAorCQkJCSAgICAgIFNDQU5fUE9MTF9JTlRFUlZBTCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlpZiAoYXQ3Nl9kZWJ1ZyAmIERCR19CU1NfVEFCTEUpCisJCWF0NzZfZHVtcF9ic3NfdGFibGUocHJpdik7CisKKwlpZiAocHJpdi0+c2Nhbl9uZWVkX2FueSkgeworCQlyZXQgPSBhdDc2X3N0YXJ0X3NjYW4ocHJpdiwgMCk7CisJCWlmIChyZXQgPCAwKQorCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIiVzOiAlczogc3RhcnRfc2NhbiAoQU5ZKSBmYWlsZWQgd2l0aCAlZFxuIiwKKwkJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIF9fZnVuY19fLCByZXQpOworCQlhdDc2X2RiZyhEQkdfTUdNVF9USU1FUiwKKwkJCSAiJXM6JWQ6IHN0YXJ0aW5nIG1nbXRfdGltZXIgZm9yICVkIHRpY2tzIiwgX19mdW5jX18sCisJCQkgX19MSU5FX18sIFNDQU5fUE9MTF9JTlRFUlZBTCk7CisJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfZ2V0X3NjYW4sCisJCQkJICAgICAgU0NBTl9QT0xMX0lOVEVSVkFMKTsKKwkJcHJpdi0+c2Nhbl9uZWVkX2FueSA9IDA7CisJfSBlbHNlIHsKKwkJcHJpdi0+c2Nhbl9zdGF0ZSA9IFNDQU5fQ09NUExFVEVEOworCQkvKiByZXBvcnQgdGhlIGVuZCBvZiBzY2FuIHRvIHVzZXIgc3BhY2UgKi8KKwkJYXQ3Nl9pd2V2ZW50X3NjYW5fY29tcGxldGUocHJpdi0+bmV0ZGV2KTsKKwkJYXQ3Nl9zZXRfbWFjX3N0YXRlKHByaXYsIE1BQ19KT0lOSU5HKTsKKwkJc2NoZWR1bGVfd29yaygmcHJpdi0+d29ya19qb2luKTsKKwl9CisKK2V4aXQ6CisJbXV0ZXhfdW5sb2NrKCZwcml2LT5tdHgpOworfQorCisvKiBIYW5kbGUgbG9zcyBvZiBiZWFjb25zIGZyb20gdGhlIEFQICovCitzdGF0aWMgdm9pZCBhdDc2X2R3b3JrX2JlYWNvbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXQ3Nl9wcml2LAorCQkJCQkgICAgICBkd29ya19iZWFjb24ud29yayk7CisKKwltdXRleF9sb2NrKCZwcml2LT5tdHgpOworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0NPTk5FQ1RFRCB8fCBwcml2LT5pd19tb2RlICE9IElXX01PREVfSU5GUkEpCisJCWdvdG8gZXhpdDsKKworCS8qIFdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGJlYWNvbnMgZnJvbSBvdXQgQVAgZm9yIEJFQUNPTl9USU1FT1VUICovCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGxvc3QgYmVhY29uIGJzc2lkICVzXG4iLAorCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIG1hYzJzdHIocHJpdi0+Y3Vycl9ic3MtPmJzc2lkKSk7CisKKwluZXRpZl9jYXJyaWVyX29mZihwcml2LT5uZXRkZXYpOworCW5ldGlmX3N0b3BfcXVldWUocHJpdi0+bmV0ZGV2KTsKKwlhdDc2X2l3ZXZlbnRfYnNzX2Rpc2Nvbm5lY3QocHJpdi0+bmV0ZGV2KTsKKwlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX1NDQU5OSU5HKTsKKwlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX3N0YXJ0X3NjYW4pOworCitleGl0OgorCW11dGV4X3VubG9jaygmcHJpdi0+bXR4KTsKK30KKworLyogSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHRpbWVvdXQgKi8KK3N0YXRpYyB2b2lkIGF0NzZfZHdvcmtfYXV0aChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXQ3Nl9wcml2LAorCQkJCQkgICAgICBkd29ya19hdXRoLndvcmspOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKwlXQVJOX09OKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfQVVUSCk7CisJaWYgKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfQVVUSCkKKwkJZ290byBleGl0OworCisJYXQ3Nl9kYmcoREJHX1BST0dSRVNTLCAiJXM6IGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHRpbWVvdXQiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lKTsKKworCWlmIChwcml2LT5yZXRyaWVzLS0gPj0gMCkgeworCQlhdDc2X2F1dGhfcmVxKHByaXYsIHByaXYtPmN1cnJfYnNzLCAxLCBOVUxMKTsKKwkJYXQ3Nl9kYmcoREJHX01HTVRfVElNRVIsICIlczolZDogc3RhcnRpbmcgbWdtdF90aW1lciArIEhaIiwKKwkJCSBfX2Z1bmNfXywgX19MSU5FX18pOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2F1dGgsIEFVVEhfVElNRU9VVCk7CisJfSBlbHNlIHsKKwkJLyogdHJ5IHRvIGdldCBuZXh0IG1hdGNoaW5nIEJTUyAqLworCQlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX0pPSU5JTkcpOworCQlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX2pvaW4pOworCX0KKworZXhpdDoKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7Cit9CisKKy8qIEhhbmRsZSBhc3NvY2lhdGlvbiByZXNwb25zZSB0aW1lb3V0ICovCitzdGF0aWMgdm9pZCBhdDc2X2R3b3JrX2Fzc29jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIGR3b3JrX2Fzc29jLndvcmspOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKwlXQVJOX09OKHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfQVNTT0MpOworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0FTU09DKQorCQlnb3RvIGV4aXQ7CisKKwlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsICIlczogYXNzb2NpYXRpb24gcmVzcG9uc2UgdGltZW91dCIsCisJCSBwcml2LT5uZXRkZXYtPm5hbWUpOworCisJaWYgKHByaXYtPnJldHJpZXMtLSA+PSAwKSB7CisJCWF0NzZfYXNzb2NfcmVxKHByaXYsIHByaXYtPmN1cnJfYnNzKTsKKwkJYXQ3Nl9kYmcoREJHX01HTVRfVElNRVIsICIlczolZDogc3RhcnRpbmcgbWdtdF90aW1lciArIEhaIiwKKwkJCSBfX2Z1bmNfXywgX19MSU5FX18pOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2Fzc29jLCBBU1NPQ19USU1FT1VUKTsKKwl9IGVsc2UgeworCQkvKiB0cnkgdG8gZ2V0IG5leHQgbWF0Y2hpbmcgQlNTICovCisJCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfSk9JTklORyk7CisJCXNjaGVkdWxlX3dvcmsoJnByaXYtPndvcmtfam9pbik7CisJfQorCitleGl0OgorCW11dGV4X3VubG9jaygmcHJpdi0+bXR4KTsKK30KKworLyogUmVhZCBuZXcgYnNzaWQgaW4gYWQtaG9jIG1vZGUgKi8KK3N0YXRpYyB2b2lkIGF0NzZfd29ya19uZXdfYnNzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIHdvcmtfbmV3X2Jzcyk7CisJaW50IHJldDsKKwlzdHJ1Y3QgbWliX21hY19tZ210IG1hY19tZ210OworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKworCXJldCA9IGF0NzZfZ2V0X21pYihwcml2LT51ZGV2LCBNSUJfTUFDX01HTVQsICZtYWNfbWdtdCwKKwkJCSAgIHNpemVvZihzdHJ1Y3QgbWliX21hY19tZ210KSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogYXQ3Nl9nZXRfbWliIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsICJpYnNzX2NoYW5nZSA9IDB4JTJ4IiwgbWFjX21nbXQuaWJzc19jaGFuZ2UpOworCW1lbWNweShwcml2LT5ic3NpZCwgbWFjX21nbXQuY3VycmVudF9ic3NpZCwgRVRIX0FMRU4pOworCWF0NzZfZGJnKERCR19QUk9HUkVTUywgInVzaW5nIEJTU0lEICVzIiwgbWFjMnN0cihwcml2LT5ic3NpZCkpOworCisJYXQ3Nl9pd2V2ZW50X2Jzc19jb25uZWN0KHByaXYtPm5ldGRldiwgcHJpdi0+YnNzaWQpOworCisJcHJpdi0+bWliX2J1Zi50eXBlID0gTUlCX01BQ19NR01UOworCXByaXYtPm1pYl9idWYuc2l6ZSA9IDE7CisJcHJpdi0+bWliX2J1Zi5pbmRleCA9IG9mZnNldG9mKHN0cnVjdCBtaWJfbWFjX21nbXQsIGlic3NfY2hhbmdlKTsKKwlwcml2LT5taWJfYnVmLmRhdGEuYnl0ZSA9IDA7CisKKwlyZXQgPSBhdDc2X3NldF9taWIocHJpdiwgJnByaXYtPm1pYl9idWYpOworCWlmIChyZXQgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBzZXRfbWliIChpYnNzIGNoYW5nZSBvaykgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKworZXhpdDoKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9zdGFydHVwX2RldmljZShzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCXN0cnVjdCBhdDc2X2NhcmRfY29uZmlnICpjY2ZnID0gJnByaXYtPmNhcmRfY29uZmlnOworCWludCByZXQ7CisKKwlhdDc2X2RiZyhEQkdfUEFSQU1TLAorCQkgIiVzIHBhcmFtOiBzc2lkICUuKnMgKCVzKSBtb2RlICVzIGNoICVkIHdlcCAlcyBrZXkgJWQgIgorCQkgImtleWxlbiAlZCIsIHByaXYtPm5ldGRldi0+bmFtZSwgcHJpdi0+ZXNzaWRfc2l6ZSwgcHJpdi0+ZXNzaWQsCisJCSBoZXgyc3RyKHByaXYtPmVzc2lkLCBJV19FU1NJRF9NQVhfU0laRSksCisJCSBwcml2LT5pd19tb2RlID09IElXX01PREVfQURIT0MgPyAiYWRob2MiIDogImluZnJhIiwKKwkJIHByaXYtPmNoYW5uZWwsIHByaXYtPndlcF9lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKKwkJIHByaXYtPndlcF9rZXlfaWQsIHByaXYtPndlcF9rZXlzX2xlbltwcml2LT53ZXBfa2V5X2lkXSk7CisJYXQ3Nl9kYmcoREJHX1BBUkFNUywKKwkJICIlcyBwYXJhbTogcHJlYW1ibGUgJXMgcnRzICVkIHJldHJ5ICVkIGZyYWcgJWQgIgorCQkgInR4cmF0ZSAlcyBhdXRoX21vZGUgJWQiLCBwcml2LT5uZXRkZXYtPm5hbWUsCisJCSBwcmVhbWJsZXNbcHJpdi0+cHJlYW1ibGVfdHlwZV0sIHByaXYtPnJ0c190aHJlc2hvbGQsCisJCSBwcml2LT5zaG9ydF9yZXRyeV9saW1pdCwgcHJpdi0+ZnJhZ190aHJlc2hvbGQsCisJCSBwcml2LT50eHJhdGUgPT0gVFhfUkFURV8xTUJJVCA/ICIxTUJpdCIgOiBwcml2LT50eHJhdGUgPT0KKwkJIFRYX1JBVEVfMk1CSVQgPyAiMk1CaXQiIDogcHJpdi0+dHhyYXRlID09CisJCSBUWF9SQVRFXzVfNU1CSVQgPyAiNS41TUJpdCIgOiBwcml2LT50eHJhdGUgPT0KKwkJIFRYX1JBVEVfMTFNQklUID8gIjExTUJpdCIgOiBwcml2LT50eHJhdGUgPT0KKwkJIFRYX1JBVEVfQVVUTyA/ICJhdXRvIiA6ICI8aW52YWxpZD4iLCBwcml2LT5hdXRoX21vZGUpOworCWF0NzZfZGJnKERCR19QQVJBTVMsCisJCSAiJXMgcGFyYW06IHBtX21vZGUgJWQgcG1fcGVyaW9kICVkIGF1dGhfbW9kZSAlcyAiCisJCSAic2Nhbl90aW1lcyAlZCAlZCBzY2FuX21vZGUgJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBwcml2LT5wbV9tb2RlLCBwcml2LT5wbV9wZXJpb2QsCisJCSBwcml2LT5hdXRoX21vZGUgPT0gV0xBTl9BVVRIX09QRU4gPyAib3BlbiIgOiAic2hhcmVkX3NlY3JldCIsCisJCSBwcml2LT5zY2FuX21pbl90aW1lLCBwcml2LT5zY2FuX21heF90aW1lLAorCQkgcHJpdi0+c2Nhbl9tb2RlID09IFNDQU5fVFlQRV9BQ1RJVkUgPyAiYWN0aXZlIiA6ICJwYXNzaXZlIik7CisKKwltZW1zZXQoY2NmZywgMCwgc2l6ZW9mKHN0cnVjdCBhdDc2X2NhcmRfY29uZmlnKSk7CisJY2NmZy0+cHJvbWlzY3VvdXNfbW9kZSA9IDA7CisJY2NmZy0+c2hvcnRfcmV0cnlfbGltaXQgPSBwcml2LT5zaG9ydF9yZXRyeV9saW1pdDsKKworCWlmIChwcml2LT53ZXBfZW5hYmxlZCkgeworCQlpZiAocHJpdi0+d2VwX2tleXNfbGVuW3ByaXYtPndlcF9rZXlfaWRdID4gV0VQX1NNQUxMX0tFWV9MRU4pCisJCQljY2ZnLT5lbmNyeXB0aW9uX3R5cGUgPSAyOworCQllbHNlCisJCQljY2ZnLT5lbmNyeXB0aW9uX3R5cGUgPSAxOworCisJCS8qIGphbDogYWx3YXlzIGV4Y2x1ZGUgdW5lbmNyeXB0ZWQgaWYgV0VQIGlzIGFjdGl2ZSAqLworCQljY2ZnLT5leGNsdWRlX3VuZW5jcnlwdGVkID0gMTsKKwl9IGVsc2UgeworCQljY2ZnLT5leGNsdWRlX3VuZW5jcnlwdGVkID0gMDsKKwkJY2NmZy0+ZW5jcnlwdGlvbl90eXBlID0gMDsKKwl9CisKKwljY2ZnLT5ydHNfdGhyZXNob2xkID0gY3B1X3RvX2xlMTYocHJpdi0+cnRzX3RocmVzaG9sZCk7CisJY2NmZy0+ZnJhZ21lbnRhdGlvbl90aHJlc2hvbGQgPSBjcHVfdG9fbGUxNihwcml2LT5mcmFnX3RocmVzaG9sZCk7CisKKwltZW1jcHkoY2NmZy0+YmFzaWNfcmF0ZV9zZXQsIGh3X3JhdGVzLCA0KTsKKwkvKiBqYWw6IHJlYWxseSBuZWVkZWQsIHdlIGRvIGEgc2V0X21pYiBmb3IgYXV0b3JhdGUgbGF0ZXIgPz8/ICovCisJY2NmZy0+YXV0b19yYXRlX2ZhbGxiYWNrID0gKHByaXYtPnR4cmF0ZSA9PSBUWF9SQVRFX0FVVE8gPyAxIDogMCk7CisJY2NmZy0+Y2hhbm5lbCA9IHByaXYtPmNoYW5uZWw7CisJY2NmZy0+cHJpdmFjeV9pbnZva2VkID0gcHJpdi0+d2VwX2VuYWJsZWQ7CisJbWVtY3B5KGNjZmctPmN1cnJlbnRfc3NpZCwgcHJpdi0+ZXNzaWQsIElXX0VTU0lEX01BWF9TSVpFKTsKKwljY2ZnLT5zc2lkX2xlbiA9IHByaXYtPmVzc2lkX3NpemU7CisKKwljY2ZnLT53ZXBfZGVmYXVsdF9rZXlfaWQgPSBwcml2LT53ZXBfa2V5X2lkOworCW1lbWNweShjY2ZnLT53ZXBfZGVmYXVsdF9rZXlfdmFsdWUsIHByaXYtPndlcF9rZXlzLCA0ICogV0VQX0tFWV9MRU4pOworCisJY2NmZy0+c2hvcnRfcHJlYW1ibGUgPSBwcml2LT5wcmVhbWJsZV90eXBlOworCWNjZmctPmJlYWNvbl9wZXJpb2QgPSBjcHVfdG9fbGUxNihwcml2LT5iZWFjb25fcGVyaW9kKTsKKworCXJldCA9IGF0NzZfc2V0X2NhcmRfY29tbWFuZChwcml2LT51ZGV2LCBDTURfU1RBUlRVUCwgJnByaXYtPmNhcmRfY29uZmlnLAorCQkJCSAgICBzaXplb2Yoc3RydWN0IGF0NzZfY2FyZF9jb25maWcpKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhdDc2X3NldF9jYXJkX2NvbW1hbmQgZmFpbGVkOiAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlhdDc2X3dhaXRfY29tcGxldGlvbihwcml2LCBDTURfU1RBUlRVUCk7CisKKwkvKiByZW1vdmUgQlNTSUQgZnJvbSBwcmV2aW91cyBydW4gKi8KKwltZW1zZXQocHJpdi0+YnNzaWQsIDAsIEVUSF9BTEVOKTsKKworCWlmIChhdDc2X3NldF9yYWRpbyhwcml2LCAxKSA9PSAxKQorCQlhdDc2X3dhaXRfY29tcGxldGlvbihwcml2LCBDTURfUkFESU9fT04pOworCisJcmV0ID0gYXQ3Nl9zZXRfcHJlYW1ibGUocHJpdiwgcHJpdi0+cHJlYW1ibGVfdHlwZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBhdDc2X3NldF9mcmFnKHByaXYsIHByaXYtPmZyYWdfdGhyZXNob2xkKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGF0NzZfc2V0X3J0cyhwcml2LCBwcml2LT5ydHNfdGhyZXNob2xkKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGF0NzZfc2V0X2F1dG9yYXRlX2ZhbGxiYWNrKHByaXYsCisJCQkJCSBwcml2LT50eHJhdGUgPT0gVFhfUkFURV9BVVRPID8gMSA6IDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gYXQ3Nl9zZXRfcG1fbW9kZShwcml2KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChhdDc2X2RlYnVnICYgREJHX01JQikgeworCQlhdDc2X2R1bXBfbWliX21hYyhwcml2KTsKKwkJYXQ3Nl9kdW1wX21pYl9tYWNfYWRkcihwcml2KTsKKwkJYXQ3Nl9kdW1wX21pYl9tYWNfbWdtdChwcml2KTsKKwkJYXQ3Nl9kdW1wX21pYl9tYWNfd2VwKHByaXYpOworCQlhdDc2X2R1bXBfbWliX21kb21haW4ocHJpdik7CisJCWF0NzZfZHVtcF9taWJfcGh5KHByaXYpOworCQlhdDc2X2R1bXBfbWliX2xvY2FsKHByaXYpOworCX0KKworCXJldHVybiAwOworfQorCisvKiBSZXN0YXJ0IHRoZSBpbnRlcmZhY2UgKi8KK3N0YXRpYyB2b2lkIGF0NzZfZHdvcmtfcmVzdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXQ3Nl9wcml2LAorCQkJCQkgICAgICBkd29ya19yZXN0YXJ0LndvcmspOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKworCW5ldGlmX2NhcnJpZXJfb2ZmKHByaXYtPm5ldGRldik7CS8qIHN0b3AgbmV0ZGV2IHdhdGNoZG9nICovCisJbmV0aWZfc3RvcF9xdWV1ZShwcml2LT5uZXRkZXYpOwkvKiBzdG9wIHR4IGRhdGEgcGFja2V0cyAqLworCisJYXQ3Nl9zdGFydHVwX2RldmljZShwcml2KTsKKworCWlmIChwcml2LT5pd19tb2RlICE9IElXX01PREVfTU9OSVRPUikgeworCQlwcml2LT5uZXRkZXYtPnR5cGUgPSBBUlBIUkRfRVRIRVI7CisJCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfU0NBTk5JTkcpOworCQlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX3N0YXJ0X3NjYW4pOworCX0gZWxzZSB7CisJCXByaXYtPm5ldGRldi0+dHlwZSA9IEFSUEhSRF9JRUVFODAyMTFfUkFESU9UQVA7CisJCWF0NzZfc3RhcnRfbW9uaXRvcihwcml2KTsKKwl9CisKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7Cit9CisKKy8qIEluaXRpYXRlIHNjYW5uaW5nICovCitzdGF0aWMgdm9pZCBhdDc2X3dvcmtfc3RhcnRfc2NhbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGF0NzZfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXQ3Nl9wcml2LAorCQkJCQkgICAgICB3b3JrX3N0YXJ0X3NjYW4pOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZwcml2LT5tdHgpOworCisJV0FSTl9PTihwcml2LT5tYWNfc3RhdGUgIT0gTUFDX1NDQU5OSU5HKTsKKwlpZiAocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19TQ0FOTklORykKKwkJZ290byBleGl0OworCisJLyogb25seSBjbGVhciB0aGUgYnNzIGxpc3Qgd2hlbiBhIHNjYW4gaXMgYWN0aXZlbHkgaW5pdGlhdGVkLAorCSAqIG90aGVyd2lzZSBzaW1wbHkgcmVseSBvbiBhdDc2X2Jzc19saXN0X3RpbWVvdXQgKi8KKwlpZiAocHJpdi0+c2Nhbl9zdGF0ZSA9PSBTQ0FOX0lOX1BST0dSRVNTKSB7CisJCWF0NzZfZnJlZV9ic3NfbGlzdChwcml2KTsKKwkJcHJpdi0+c2Nhbl9uZWVkX2FueSA9IDE7CisJfSBlbHNlCisJCXByaXYtPnNjYW5fbmVlZF9hbnkgPSAwOworCisJcmV0ID0gYXQ3Nl9zdGFydF9zY2FuKHByaXYsIDEpOworCisJaWYgKHJldCA8IDApCisJCXByaW50ayhLRVJOX0VSUiAiJXM6ICVzOiBzdGFydF9zY2FuIGZhaWxlZCB3aXRoICVkXG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBfX2Z1bmNfXywgcmV0KTsKKwllbHNlIHsKKwkJYXQ3Nl9kYmcoREJHX01HTVRfVElNRVIsCisJCQkgIiVzOiVkOiBzdGFydGluZyBtZ210X3RpbWVyIGZvciAlZCB0aWNrcyIsCisJCQkgX19mdW5jX18sIF9fTElORV9fLCBTQ0FOX1BPTExfSU5URVJWQUwpOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2dldF9zY2FuLAorCQkJCSAgICAgIFNDQU5fUE9MTF9JTlRFUlZBTCk7CisJfQorCitleGl0OgorCW11dGV4X3VubG9jaygmcHJpdi0+bXR4KTsKK30KKworLyogRW5hYmxlIG9yIGRpc2FibGUgcHJvbWlzY3VvdXMgbW9kZSAqLworc3RhdGljIHZvaWQgYXQ3Nl93b3JrX3NldF9wcm9taXNjKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIHdvcmtfc2V0X3Byb21pc2MpOworCWludCByZXQgPSAwOworCisJbXV0ZXhfbG9jaygmcHJpdi0+bXR4KTsKKworCXByaXYtPm1pYl9idWYudHlwZSA9IE1JQl9MT0NBTDsKKwlwcml2LT5taWJfYnVmLnNpemUgPSAxOworCXByaXYtPm1pYl9idWYuaW5kZXggPSBvZmZzZXRvZihzdHJ1Y3QgbWliX2xvY2FsLCBwcm9taXNjdW91c19tb2RlKTsKKwlwcml2LT5taWJfYnVmLmRhdGEuYnl0ZSA9IHByaXYtPnByb21pc2MgPyAxIDogMDsKKworCXJldCA9IGF0NzZfc2V0X21pYihwcml2LCAmcHJpdi0+bWliX2J1Zik7CisJaWYgKHJldCA8IDApCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IHNldF9taWIgKHByb21pc2N1b3VzX21vZGUpIGZhaWxlZDogJWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIHJldCk7CisKKwltdXRleF91bmxvY2soJnByaXYtPm10eCk7Cit9CisKKy8qIFN1Ym1pdCBSeCB1cmIgYmFjayB0byB0aGUgZGV2aWNlICovCitzdGF0aWMgdm9pZCBhdDc2X3dvcmtfc3VibWl0X3J4KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhdDc2X3ByaXYsCisJCQkJCSAgICAgIHdvcmtfc3VibWl0X3J4KTsKKworCW11dGV4X2xvY2soJnByaXYtPm10eCk7CisJYXQ3Nl9zdWJtaXRfcnhfdXJiKHByaXYpOworCW11dGV4X3VubG9jaygmcHJpdi0+bXR4KTsKK30KKworLyogV2UgZ290IGFuIGFzc29jaWF0aW9uIHJlc3BvbnNlICovCitzdGF0aWMgdm9pZCBhdDc2X3J4X21nbXRfYXNzb2Moc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX2Fzc29jX3Jlc3BvbnNlICpyZXNwID0KKwkgICAgKHN0cnVjdCBpZWVlODAyMTFfYXNzb2NfcmVzcG9uc2UgKilidWYtPnBhY2tldDsKKwl1MTYgYXNzb2NfaWQgPSBsZTE2X3RvX2NwdShyZXNwLT5haWQpOworCXUxNiBzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXNwLT5zdGF0dXMpOworCisJYXQ3Nl9kYmcoREJHX1JYX01HTVQsICIlczogcnggQXNzb2NSZXNwIGJzc2lkICVzIGNhcGEgMHglMDR4IHN0YXR1cyAiCisJCSAiMHglMDR4IGFzc29jX2lkIDB4JTA0eCByYXRlcyAlcyIsIHByaXYtPm5ldGRldi0+bmFtZSwKKwkJIG1hYzJzdHIocmVzcC0+aGVhZGVyLmFkZHIzKSwgbGUxNl90b19jcHUocmVzcC0+Y2FwYWJpbGl0eSksCisJCSBzdGF0dXMsIGFzc29jX2lkLCBoZXgyc3RyKHJlc3AtPmluZm9fZWxlbWVudC0+ZGF0YSwKKwkJCQkJICAgcmVzcC0+aW5mb19lbGVtZW50LT5sZW4pKTsKKworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0FTU09DKSB7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBBc3NvY1Jlc3AgaW4gc3RhdGUgJXMgaWdub3JlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgbWFjX3N0YXRlc1twcml2LT5tYWNfc3RhdGVdKTsKKwkJcmV0dXJuOworCX0KKworCUJVR19PTighcHJpdi0+Y3Vycl9ic3MpOworCisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYXNzb2MpOworCWlmIChzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykgeworCQlzdHJ1Y3QgYnNzX2luZm8gKnB0ciA9IHByaXYtPmN1cnJfYnNzOworCQlwcml2LT5hc3NvY19pZCA9IGFzc29jX2lkICYgMHgzZmZmOworCQkvKiB1cGRhdGUgaXdjb25maWcgcGFyYW1zICovCisJCW1lbWNweShwcml2LT5ic3NpZCwgcHRyLT5ic3NpZCwgRVRIX0FMRU4pOworCQltZW1jcHkocHJpdi0+ZXNzaWQsIHB0ci0+c3NpZCwgcHRyLT5zc2lkX2xlbik7CisJCXByaXYtPmVzc2lkX3NpemUgPSBwdHItPnNzaWRfbGVuOworCQlwcml2LT5jaGFubmVsID0gcHRyLT5jaGFubmVsOworCQlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX2Fzc29jX2RvbmUpOworCX0gZWxzZSB7CisJCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfSk9JTklORyk7CisJCXNjaGVkdWxlX3dvcmsoJnByaXYtPndvcmtfam9pbik7CisJfQorfQorCisvKiBQcm9jZXNzIGRpc2Fzc29jaWF0aW9uIHJlcXVlc3QgZnJvbSB0aGUgQVAgKi8KK3N0YXRpYyB2b2lkIGF0NzZfcnhfbWdtdF9kaXNhc3NvYyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LAorCQkJCSAgc3RydWN0IGF0NzZfcnhfYnVmZmVyICpidWYpCit7CisJc3RydWN0IGllZWU4MDIxMV9kaXNhc3NvYyAqcmVzcCA9CisJICAgIChzdHJ1Y3QgaWVlZTgwMjExX2Rpc2Fzc29jICopYnVmLT5wYWNrZXQ7CisJc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKm1nbXQgPSAmcmVzcC0+aGVhZGVyOworCisJYXQ3Nl9kYmcoREJHX1JYX01HTVQsCisJCSAiJXM6IHJ4IERpc0Fzc29jIGJzc2lkICVzIHJlYXNvbiAweCUwNHggZGVzdGluYXRpb24gJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBtYWMyc3RyKG1nbXQtPmFkZHIzKSwKKwkJIGxlMTZfdG9fY3B1KHJlc3AtPnJlYXNvbiksIG1hYzJzdHIobWdtdC0+YWRkcjEpKTsKKworCS8qIFdlIGFyZSBub3QgY29ubmVjdGVkLCBpZ25vcmUgKi8KKwlpZiAocHJpdi0+bWFjX3N0YXRlID09IE1BQ19TQ0FOTklORyB8fCBwcml2LT5tYWNfc3RhdGUgPT0gTUFDX0lOSVQKKwkgICAgfHwgIXByaXYtPmN1cnJfYnNzKQorCQlyZXR1cm47CisKKwkvKiBOb3Qgb3VyIEJTU0lELCBpZ25vcmUgKi8KKwlpZiAoY29tcGFyZV9ldGhlcl9hZGRyKG1nbXQtPmFkZHIzLCBwcml2LT5jdXJyX2Jzcy0+YnNzaWQpKQorCQlyZXR1cm47CisKKwkvKiBOb3QgZm9yIG91ciBTVEEgYW5kIG5vdCBicm9hZGNhc3QsIGlnbm9yZSAqLworCWlmIChjb21wYXJlX2V0aGVyX2FkZHIocHJpdi0+bmV0ZGV2LT5kZXZfYWRkciwgbWdtdC0+YWRkcjEpCisJICAgICYmICFpc19icm9hZGNhc3RfZXRoZXJfYWRkcihtZ210LT5hZGRyMSkpCisJCXJldHVybjsKKworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0FTU09DICYmIHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfQ09OTkVDVEVECisJICAgICYmIHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfSk9JTklORykgeworCQlwcmludGsoS0VSTl9JTkZPICIlczogRGlzQXNzb2MgaW4gc3RhdGUgJXMgaWdub3JlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgbWFjX3N0YXRlc1twcml2LT5tYWNfc3RhdGVdKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChwcml2LT5tYWNfc3RhdGUgPT0gTUFDX0NPTk5FQ1RFRCkgeworCQluZXRpZl9jYXJyaWVyX29mZihwcml2LT5uZXRkZXYpOworCQluZXRpZl9zdG9wX3F1ZXVlKHByaXYtPm5ldGRldik7CisJCWF0NzZfaXdldmVudF9ic3NfZGlzY29ubmVjdChwcml2LT5uZXRkZXYpOworCX0KKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19nZXRfc2Nhbik7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYmVhY29uKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19hdXRoKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19hc3NvYyk7CisJYXQ3Nl9zZXRfbWFjX3N0YXRlKHByaXYsIE1BQ19KT0lOSU5HKTsKKwlzY2hlZHVsZV93b3JrKCZwcml2LT53b3JrX2pvaW4pOworfQorCitzdGF0aWMgdm9pZCBhdDc2X3J4X21nbXRfYXV0aChzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LAorCQkJICAgICAgc3RydWN0IGF0NzZfcnhfYnVmZmVyICpidWYpCit7CisJc3RydWN0IGllZWU4MDIxMV9hdXRoICpyZXNwID0gKHN0cnVjdCBpZWVlODAyMTFfYXV0aCAqKWJ1Zi0+cGFja2V0OworCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICptZ210ID0gJnJlc3AtPmhlYWRlcjsKKwlpbnQgc2VxX25yID0gbGUxNl90b19jcHUocmVzcC0+dHJhbnNhY3Rpb24pOworCWludCBhbGcgPSBsZTE2X3RvX2NwdShyZXNwLT5hbGdvcml0aG0pOworCWludCBzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXNwLT5zdGF0dXMpOworCisJYXQ3Nl9kYmcoREJHX1JYX01HTVQsCisJCSAiJXM6IHJ4IEF1dGhGcmFtZSBic3NpZCAlcyBhbGcgJWQgc2VxX25yICVkIHN0YXR1cyAlZCAiCisJCSAiZGVzdGluYXRpb24gJXMiLCBwcml2LT5uZXRkZXYtPm5hbWUsIG1hYzJzdHIobWdtdC0+YWRkcjMpLAorCQkgYWxnLCBzZXFfbnIsIHN0YXR1cywgbWFjMnN0cihtZ210LT5hZGRyMSkpOworCisJaWYgKGFsZyA9PSBXTEFOX0FVVEhfU0hBUkVEX0tFWSAmJiBzZXFfbnIgPT0gMikKKwkJYXQ3Nl9kYmcoREJHX1JYX01HTVQsICIlczogQXV0aEZyYW1lIGNoYWxsZW5nZSAlcyAuLi4iLAorCQkJIHByaXYtPm5ldGRldi0+bmFtZSwgaGV4MnN0cihyZXNwLT5pbmZvX2VsZW1lbnQsIDE4KSk7CisKKwlpZiAocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19BVVRIKSB7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBpZ25vcmVkIEF1dGhGcmFtZSBpbiBzdGF0ZSAlc1xuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgbWFjX3N0YXRlc1twcml2LT5tYWNfc3RhdGVdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocHJpdi0+YXV0aF9tb2RlICE9IGFsZykgeworCQlwcmludGsoS0VSTl9JTkZPICIlczogaWdub3JlZCBBdXRoRnJhbWUgZm9yIGFsZyAlZFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgYWxnKTsKKwkJcmV0dXJuOworCX0KKworCUJVR19PTighcHJpdi0+Y3Vycl9ic3MpOworCisJLyogTm90IG91ciBCU1NJRCBvciBub3QgZm9yIG91ciBTVEEsIGlnbm9yZSAqLworCWlmIChjb21wYXJlX2V0aGVyX2FkZHIobWdtdC0+YWRkcjMsIHByaXYtPmN1cnJfYnNzLT5ic3NpZCkKKwkgICAgfHwgY29tcGFyZV9ldGhlcl9hZGRyKHByaXYtPm5ldGRldi0+ZGV2X2FkZHIsIG1nbXQtPmFkZHIxKSkKKwkJcmV0dXJuOworCisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYXV0aCk7CisJaWYgKHN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7CisJCS8qIHRyeSB0byBqb2luIG5leHQgYnNzICovCisJCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfSk9JTklORyk7CisJCXNjaGVkdWxlX3dvcmsoJnByaXYtPndvcmtfam9pbik7CisJCXJldHVybjsKKwl9CisKKwlpZiAocHJpdi0+YXV0aF9tb2RlID09IFdMQU5fQVVUSF9PUEVOIHx8IHNlcV9uciA9PSA0KSB7CisJCXByaXYtPnJldHJpZXMgPSBBU1NPQ19SRVRSSUVTOworCQlhdDc2X3NldF9tYWNfc3RhdGUocHJpdiwgTUFDX0FTU09DKTsKKwkJYXQ3Nl9hc3NvY19yZXEocHJpdiwgcHJpdi0+Y3Vycl9ic3MpOworCQlhdDc2X2RiZyhEQkdfTUdNVF9USU1FUiwKKwkJCSAiJXM6JWQ6IHN0YXJ0aW5nIG1nbXRfdGltZXIgKyBIWiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7CisJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYXNzb2MsIEFTU09DX1RJTUVPVVQpOworCQlyZXR1cm47CisJfQorCisJV0FSTl9PTihzZXFfbnIgIT0gMik7CisJYXQ3Nl9hdXRoX3JlcShwcml2LCBwcml2LT5jdXJyX2Jzcywgc2VxX25yICsgMSwgcmVzcC0+aW5mb19lbGVtZW50KTsKKwlhdDc2X2RiZyhEQkdfTUdNVF9USU1FUiwgIiVzOiVkOiBzdGFydGluZyBtZ210X3RpbWVyICsgSFoiLCBfX2Z1bmNfXywKKwkJIF9fTElORV9fKTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2F1dGgsIEFVVEhfVElNRU9VVCk7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfcnhfbWdtdF9kZWF1dGgoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCQlzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX2Rpc2Fzc29jICpyZXNwID0KKwkgICAgKHN0cnVjdCBpZWVlODAyMTFfZGlzYXNzb2MgKilidWYtPnBhY2tldDsKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqbWdtdCA9ICZyZXNwLT5oZWFkZXI7CisKKwlhdDc2X2RiZyhEQkdfUlhfTUdNVCB8IERCR19QUk9HUkVTUywKKwkJICIlczogcnggRGVBdXRoIGJzc2lkICVzIHJlYXNvbiAweCUwNHggZGVzdGluYXRpb24gJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBtYWMyc3RyKG1nbXQtPmFkZHIzKSwKKwkJIGxlMTZfdG9fY3B1KHJlc3AtPnJlYXNvbiksIG1hYzJzdHIobWdtdC0+YWRkcjEpKTsKKworCWlmIChwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0FVVEggJiYgcHJpdi0+bWFjX3N0YXRlICE9IE1BQ19BU1NPQworCSAgICAmJiBwcml2LT5tYWNfc3RhdGUgIT0gTUFDX0NPTk5FQ1RFRCkgeworCQlwcmludGsoS0VSTl9JTkZPICIlczogRGVBdXRoIGluIHN0YXRlICVzIGlnbm9yZWRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUsIG1hY19zdGF0ZXNbcHJpdi0+bWFjX3N0YXRlXSk7CisJCXJldHVybjsKKwl9CisKKwlCVUdfT04oIXByaXYtPmN1cnJfYnNzKTsKKworCS8qIE5vdCBvdXIgQlNTSUQsIGlnbm9yZSAqLworCWlmIChjb21wYXJlX2V0aGVyX2FkZHIobWdtdC0+YWRkcjMsIHByaXYtPmN1cnJfYnNzLT5ic3NpZCkpCisJCXJldHVybjsKKworCS8qIE5vdCBmb3Igb3VyIFNUQSBhbmQgbm90IGJyb2FkY2FzdCwgaWdub3JlICovCisJaWYgKGNvbXBhcmVfZXRoZXJfYWRkcihwcml2LT5uZXRkZXYtPmRldl9hZGRyLCBtZ210LT5hZGRyMSkKKwkgICAgJiYgIWlzX2Jyb2FkY2FzdF9ldGhlcl9hZGRyKG1nbXQtPmFkZHIxKSkKKwkJcmV0dXJuOworCisJaWYgKHByaXYtPm1hY19zdGF0ZSA9PSBNQUNfQ09OTkVDVEVEKQorCQlhdDc2X2l3ZXZlbnRfYnNzX2Rpc2Nvbm5lY3QocHJpdi0+bmV0ZGV2KTsKKworCWF0NzZfc2V0X21hY19zdGF0ZShwcml2LCBNQUNfSk9JTklORyk7CisJc2NoZWR1bGVfd29yaygmcHJpdi0+d29ya19qb2luKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19nZXRfc2Nhbik7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcHJpdi0+ZHdvcmtfYmVhY29uKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19hdXRoKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19hc3NvYyk7Cit9CisKK3N0YXRpYyB2b2lkIGF0NzZfcnhfbWdtdF9iZWFjb24oc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCQlzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZikKK3sKKwlpbnQgdmFycGFyX2xlbjsKKwkvKiBiZWFjb24gY29udGVudCAqLworCXN0cnVjdCBpZWVlODAyMTFfYmVhY29uICpiZGF0YSA9IChzdHJ1Y3QgaWVlZTgwMjExX2JlYWNvbiAqKWJ1Zi0+cGFja2V0OworCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICptZ210ID0gJmJkYXRhLT5oZWFkZXI7CisKKwlzdHJ1Y3QgbGlzdF9oZWFkICpscHRyOworCXN0cnVjdCBic3NfaW5mbyAqbWF0Y2g7CS8qIGVudHJ5IG1hdGNoaW5nIGFkZHIzIHdpdGggaXRzIGJzc2lkICovCisJaW50IG5ld19lbnRyeSA9IDA7CisJaW50IGxlbjsKKwlzdHJ1Y3QgaWVlZTgwMjExX2luZm9fZWxlbWVudCAqaWU7CisJaW50IGhhdmVfc3NpZCA9IDA7CisJaW50IGhhdmVfcmF0ZXMgPSAwOworCWludCBoYXZlX2NoYW5uZWwgPSAwOworCWludCBrZWVwX2dvaW5nID0gMTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmJzc19saXN0X3NwaW5sb2NrLCBmbGFncyk7CisJaWYgKHByaXYtPm1hY19zdGF0ZSA9PSBNQUNfQ09OTkVDVEVEKSB7CisJCS8qIGluIHN0YXRlIE1BQ19DT05ORUNURUQgd2UgdXNlIHRoZSBtZ210X3RpbWVyIHRvIGNvbnRyb2wKKwkJICAgdGhlIGJlYWNvbiBvZiB0aGUgQlNTICovCisJCUJVR19PTighcHJpdi0+Y3Vycl9ic3MpOworCisJCWlmICghY29tcGFyZV9ldGhlcl9hZGRyKHByaXYtPmN1cnJfYnNzLT5ic3NpZCwgbWdtdC0+YWRkcjMpKSB7CisJCQkvKiBXZSBnb3Qgb3VyIEFQJ3MgYmVhY29uLCBkZWZlciB0aGUgdGltZW91dCBoYW5kbGVyLgorCQkJICAgS2lsbCBwZW5kaW5nIHdvcmsgZmlyc3QsIGFzIHNjaGVkdWxlX2RlbGF5ZWRfd29yaygpCisJCQkgICB3b24ndCBkbyBpdC4gKi8KKwkJCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2JlYWNvbik7CisJCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2JlYWNvbiwKKwkJCQkJICAgICAgQkVBQ09OX1RJTUVPVVQpOworCQkJcHJpdi0+Y3Vycl9ic3MtPnJzc2kgPSBidWYtPnJzc2k7CisJCQlwcml2LT5iZWFjb25zX3JlY2VpdmVkKys7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9CisKKwkvKiBsb29rIGlmIHdlIGhhdmUgdGhpcyBCU1MgYWxyZWFkeSBpbiB0aGUgbGlzdCAqLworCW1hdGNoID0gTlVMTDsKKworCWlmICghbGlzdF9lbXB0eSgmcHJpdi0+YnNzX2xpc3QpKSB7CisJCWxpc3RfZm9yX2VhY2gobHB0ciwgJnByaXYtPmJzc19saXN0KSB7CisJCQlzdHJ1Y3QgYnNzX2luZm8gKmJzc19wdHIgPQorCQkJICAgIGxpc3RfZW50cnkobHB0ciwgc3RydWN0IGJzc19pbmZvLCBsaXN0KTsKKwkJCWlmICghY29tcGFyZV9ldGhlcl9hZGRyKGJzc19wdHItPmJzc2lkLCBtZ210LT5hZGRyMykpIHsKKwkJCQltYXRjaCA9IGJzc19wdHI7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIW1hdGNoKSB7CisJCS8qIEJTUyBub3QgaW4gdGhlIGxpc3QgLSBhcHBlbmQgaXQgKi8KKwkJbWF0Y2ggPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYnNzX2luZm8pLCBHRlBfQVRPTUlDKTsKKwkJaWYgKCFtYXRjaCkgeworCQkJYXQ3Nl9kYmcoREJHX0JTU19UQUJMRSwKKwkJCQkgIiVzOiBjYW5ub3Qga21hbGxvYyBuZXcgYnNzIGluZm8gKCV6ZCBieXRlKSIsCisJCQkJIHByaXYtPm5ldGRldi0+bmFtZSwgc2l6ZW9mKHN0cnVjdCBic3NfaW5mbykpOworCQkJZ290byBleGl0OworCQl9CisJCW5ld19lbnRyeSA9IDE7CisJCWxpc3RfYWRkX3RhaWwoJm1hdGNoLT5saXN0LCAmcHJpdi0+YnNzX2xpc3QpOworCX0KKworCW1hdGNoLT5jYXBhID0gbGUxNl90b19jcHUoYmRhdGEtPmNhcGFiaWxpdHkpOworCW1hdGNoLT5iZWFjb25faW50ZXJ2YWwgPSBsZTE2X3RvX2NwdShiZGF0YS0+YmVhY29uX2ludGVydmFsKTsKKwltYXRjaC0+cnNzaSA9IGJ1Zi0+cnNzaTsKKwltYXRjaC0+bGlua19xdWFsID0gYnVmLT5saW5rX3F1YWxpdHk7CisJbWF0Y2gtPm5vaXNlX2xldmVsID0gYnVmLT5ub2lzZV9sZXZlbDsKKwltZW1jcHkobWF0Y2gtPmJzc2lkLCBtZ210LT5hZGRyMywgRVRIX0FMRU4pOworCWF0NzZfZGJnKERCR19SWF9CRUFDT04sICIlczogYnNzaWQgJXMiLCBwcml2LT5uZXRkZXYtPm5hbWUsCisJCSBtYWMyc3RyKG1hdGNoLT5ic3NpZCkpOworCisJaWUgPSBiZGF0YS0+aW5mb19lbGVtZW50OworCisJLyogbGVuZ3RoIG9mIHZhciBsZW5ndGggYmVhY29uIHBhcmFtZXRlcnMgKi8KKwl2YXJwYXJfbGVuID0gbWluX3QoaW50LCBsZTE2X3RvX2NwdShidWYtPndsZW5ndGgpIC0KKwkJCSAgIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2JlYWNvbiksCisJCQkgICBCRUFDT05fTUFYX0RBVEFfTEVOR1RIKTsKKworCS8qIFRoaXMgcm91dGluZSBzdGVwcyB0aHJvdWdoIHRoZSBiZGF0YS0+ZGF0YSBhcnJheSB0byBnZXQKKwkgKiBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWNjZXNzIHBvaW50LgorCSAqIEN1cnJlbnRseSwgdGhpcyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyByZWNlaXB0IG9mOiBTU0lELAorCSAqIHN1cHBvcnRlZCB0cmFuc2ZlciByYXRlcyBhbmQgY2hhbm5lbCwgaW4gYW55IG9yZGVyLCB3aXRoIHNvbWUKKwkgKiB0b2xlcmFuY2UgZm9yIGludGVybWl0dGVudCB1bmtub3duIGNvZGVzIChhbHRob3VnaCB0aGlzCisJICogZnVuY3Rpb25hbGl0eSBtYXkgbm90IGJlIG5lY2Vzc2FyeSBhcyB0aGUgdXNlZnVsIGluZm9ybWF0aW9uIHdpbGwKKwkgKiB1c3VhbGx5IGFycml2ZSBpbiBjb25zZWN1dGl2ZWx5LCBidXQgdGhlcmUgaGF2ZSBiZWVuIHNvbWUKKwkgKiByZXBvcnRzIG9mIHNvbWUgb2YgdGhlIHVzZWZ1bCBpbmZvcm1hdGlvbiBmaWVsZHMgYXJyaXZpbmcgaW4gYQorCSAqIGRpZmZlcmVudCBvcmRlcikuCisJICogSXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgbW9yZSBJRSB0eXBlcyBhbHRob3VnaCBNRklFX1RZUEVfVElNIG1heQorCSAqIGJlIHN1cHBvcnRlZCAob24gbXkgQVAgYXQgbGVhc3QpLgorCSAqIFRoZSBiZGF0YS0+ZGF0YSBhcnJheSBpcyBhYm91dCAxNTAwIGJ5dGVzIGxvbmcgYnV0IG9ubHkgfjM2IG9mIHRob3NlCisJICogYnl0ZXMgYXJlIHVzZWZ1bCwgaGVuY2UgdGhlIGhhdmVfc3NpZCBldGMgb3B0aW1pemF0aW9ucy4gKi8KKworCXdoaWxlIChrZWVwX2dvaW5nICYmCisJICAgICAgICgoJmllLT5kYXRhW2llLT5sZW5dIC0gKHU4ICopYmRhdGEtPmluZm9fZWxlbWVudCkgPD0KKwkJdmFycGFyX2xlbikpIHsKKworCQlzd2l0Y2ggKGllLT5pZCkgeworCisJCWNhc2UgTUZJRV9UWVBFX1NTSUQ6CisJCQlpZiAoaGF2ZV9zc2lkKQorCQkJCWJyZWFrOworCisJCQlsZW4gPSBtaW5fdChpbnQsIElXX0VTU0lEX01BWF9TSVpFLCBpZS0+bGVuKTsKKworCQkJLyogd2UgY29weSBvbmx5IGlmIHRoaXMgaXMgYSBuZXcgZW50cnksCisJCQkgICBvciB0aGUgaW5jb21pbmcgU1NJRCBpcyBub3QgYSBoaWRkZW4gU1NJRC4gVGhpcworCQkJICAgd2lsbCBwcm90ZWN0IHVzIGZyb20gb3ZlcndyaXRpbmcgYSByZWFsIFNTSUQgcmVhZAorCQkJICAgaW4gYSBQcm9iZVJlc3BvbnNlIHdpdGggYSBoaWRkZW4gb25lIGZyb20gYQorCQkJICAgZm9sbG93aW5nIGJlYWNvbi4gKi8KKwkJCWlmICghbmV3X2VudHJ5ICYmIGF0NzZfaXNfaGlkZGVuX3NzaWQoaWUtPmRhdGEsIGxlbikpIHsKKwkJCQloYXZlX3NzaWQgPSAxOworCQkJCWJyZWFrOworCQkJfQorCisJCQltYXRjaC0+c3NpZF9sZW4gPSBsZW47CisJCQltZW1jcHkobWF0Y2gtPnNzaWQsIGllLT5kYXRhLCBsZW4pOworCQkJYXQ3Nl9kYmcoREJHX1JYX0JFQUNPTiwgIiVzOiBTU0lEIC0gJS4qcyIsCisJCQkJIHByaXYtPm5ldGRldi0+bmFtZSwgbGVuLCBtYXRjaC0+c3NpZCk7CisJCQloYXZlX3NzaWQgPSAxOworCQkJYnJlYWs7CisKKwkJY2FzZSBNRklFX1RZUEVfUkFURVM6CisJCQlpZiAoaGF2ZV9yYXRlcykKKwkJCQlicmVhazsKKworCQkJbWF0Y2gtPnJhdGVzX2xlbiA9CisJCQkgICAgbWluX3QoaW50LCBzaXplb2YobWF0Y2gtPnJhdGVzKSwgaWUtPmxlbik7CisJCQltZW1jcHkobWF0Y2gtPnJhdGVzLCBpZS0+ZGF0YSwgbWF0Y2gtPnJhdGVzX2xlbik7CisJCQloYXZlX3JhdGVzID0gMTsKKwkJCWF0NzZfZGJnKERCR19SWF9CRUFDT04sICIlczogU1VQUE9SVEVEIFJBVEVTICVzIiwKKwkJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkJCSBoZXgyc3RyKGllLT5kYXRhLCBpZS0+bGVuKSk7CisJCQlicmVhazsKKworCQljYXNlIE1GSUVfVFlQRV9EU19TRVQ6CisJCQlpZiAoaGF2ZV9jaGFubmVsKQorCQkJCWJyZWFrOworCisJCQltYXRjaC0+Y2hhbm5lbCA9IGllLT5kYXRhWzBdOworCQkJaGF2ZV9jaGFubmVsID0gMTsKKwkJCWF0NzZfZGJnKERCR19SWF9CRUFDT04sICIlczogQ0hBTk5FTCAtICVkIiwKKwkJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBtYXRjaC0+Y2hhbm5lbCk7CisJCQlicmVhazsKKworCQljYXNlIE1GSUVfVFlQRV9DRl9TRVQ6CisJCWNhc2UgTUZJRV9UWVBFX1RJTToKKwkJY2FzZSBNRklFX1RZUEVfSUJTU19TRVQ6CisJCWRlZmF1bHQ6CisJCQlhdDc2X2RiZyhEQkdfUlhfQkVBQ09OLCAiJXM6IGJlYWNvbiBJRSBpZCAlZCBsZW4gJWQgJXMiLAorCQkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGllLT5pZCwgaWUtPmxlbiwKKwkJCQkgaGV4MnN0cihpZS0+ZGF0YSwgaWUtPmxlbikpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBhZHZhbmNlIHRvIHRoZSBuZXh0IGluZm9ybWF0aW9uYWwgZWxlbWVudCAqLworCQluZXh0X2llKCZpZSk7CisKKwkJLyogT3B0aW1pemF0aW9uOiBhZnRlciBhbGwsIHRoZSBiZGF0YS0+ZGF0YSBhcnJheSBpcworCQkgKiB2YXJwYXJfbGVuIGJ5dGVzIGxvbmcsIHdoZXJlYXMgd2UgZ2V0IGFsbCBvZiB0aGUgdXNlZnVsCisJCSAqIGluZm9ybWF0aW9uIGFmdGVyIG9ubHkgfjM2IGJ5dGVzLCB0aGlzIHNhdmVzIHVzIGEgbG90IG9mCisJCSAqIHRpbWUgKGFuZCB0cm91YmxlIGFzIHRoZSByZW1haW5pbmcgcG9ydGlvbiBvZiB0aGUgYXJyYXkKKwkJICogY291bGQgYmUgZnVsbCBvZiBqdW5rKQorCQkgKiBDb21tZW50IHRoaXMgb3V0IGlmIHlvdSB3YW50IHRvIHNlZSB3aGF0IG90aGVyIGluZm9ybWF0aW9uCisJCSAqIGNvbWVzIGZyb20gdGhlIEFQIC0gYWx0aG91Z2ggbGl0dGxlIG9mIGl0IG1heSBiZSB1c2VmdWwgKi8KKwl9CisKKwlhdDc2X2RiZyhEQkdfUlhfQkVBQ09OLCAiJXM6IEZpbmlzaGVkIHByb2Nlc3NpbmcgYmVhY29uIGRhdGEiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lKTsKKworCW1hdGNoLT5sYXN0X3J4ID0gamlmZmllczsJLyogcmVjb3JkIGxhc3Qgcnggb2YgYmVhY29uICovCisKK2V4aXQ6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+YnNzX2xpc3Rfc3BpbmxvY2ssIGZsYWdzKTsKK30KKworLyogQ2FsY3VsYXRlIHRoZSBsaW5rIGxldmVsIGZyb20gYSBnaXZlbiByeF9idWZmZXIgKi8KK3N0YXRpYyB2b2lkIGF0NzZfY2FsY19sZXZlbChzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LCBzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZiwKKwkJCSAgICBzdHJ1Y3QgaXdfcXVhbGl0eSAqcXVhbCkKK3sKKwkvKiBqdXN0IGEgZ3Vlc3MgZm9yIG5vdywgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBvdGhlciBjaGlwcyAqLworCWludCBtYXhfcnNzaSA9IDQyOworCisJcXVhbC0+bGV2ZWwgPSAoYnVmLT5yc3NpICogMTAwIC8gbWF4X3Jzc2kpOworCWlmIChxdWFsLT5sZXZlbCA+IDEwMCkKKwkJcXVhbC0+bGV2ZWwgPSAxMDA7CisJcXVhbC0+dXBkYXRlZCB8PSBJV19RVUFMX0xFVkVMX1VQREFURUQ7Cit9CisKKy8qIENhbGN1bGF0ZSB0aGUgbGluayBxdWFsaXR5IGZyb20gYSBnaXZlbiByeF9idWZmZXIgKi8KK3N0YXRpYyB2b2lkIGF0NzZfY2FsY19xdWFsKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBhdDc2X3J4X2J1ZmZlciAqYnVmLAorCQkJICAgc3RydWN0IGl3X3F1YWxpdHkgKnF1YWwpCit7CisJaWYgKGF0NzZfaXNfaW50ZXJzaWwocHJpdi0+Ym9hcmRfdHlwZSkpCisJCXF1YWwtPnF1YWwgPSBidWYtPmxpbmtfcXVhbGl0eTsKKwllbHNlIHsKKwkJdW5zaWduZWQgbG9uZyBlbGFwc2VkOworCisJCS8qIFVwZGF0ZSBxdWFsIGF0IG1vc3Qgb25jZSBhIHNlY29uZCAqLworCQllbGFwc2VkID0gamlmZmllcyAtIHByaXYtPmJlYWNvbnNfbGFzdF9xdWFsOworCQlpZiAoZWxhcHNlZCA8IDEgKiBIWikKKwkJCXJldHVybjsKKworCQlxdWFsLT5xdWFsID0gcXVhbC0+bGV2ZWwgKiBwcml2LT5iZWFjb25zX3JlY2VpdmVkICoKKwkJICAgIG1zZWNzX3RvX2ppZmZpZXMocHJpdi0+YmVhY29uX3BlcmlvZCkgLyBlbGFwc2VkOworCisJCXByaXYtPmJlYWNvbnNfbGFzdF9xdWFsID0gamlmZmllczsKKwkJcHJpdi0+YmVhY29uc19yZWNlaXZlZCA9IDA7CisJfQorCXF1YWwtPnF1YWwgPSAocXVhbC0+cXVhbCA+IDEwMCkgPyAxMDAgOiBxdWFsLT5xdWFsOworCXF1YWwtPnVwZGF0ZWQgfD0gSVdfUVVBTF9RVUFMX1VQREFURUQ7Cit9CisKKy8qIENhbGN1bGF0ZSB0aGUgbm9pc2UgcXVhbGl0eSBmcm9tIGEgZ2l2ZW4gcnhfYnVmZmVyICovCitzdGF0aWMgdm9pZCBhdDc2X2NhbGNfbm9pc2Uoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwgc3RydWN0IGF0NzZfcnhfYnVmZmVyICpidWYsCisJCQkgICAgc3RydWN0IGl3X3F1YWxpdHkgKnF1YWwpCit7CisJcXVhbC0+bm9pc2UgPSAwOworCXF1YWwtPnVwZGF0ZWQgfD0gSVdfUVVBTF9OT0lTRV9JTlZBTElEOworfQorCitzdGF0aWMgdm9pZCBhdDc2X3VwZGF0ZV93c3RhdHMoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgaXdfcXVhbGl0eSAqcXVhbCA9ICZwcml2LT53c3RhdHMucXVhbDsKKworCWlmIChidWYtPnJzc2kgJiYgcHJpdi0+bWFjX3N0YXRlID09IE1BQ19DT05ORUNURUQpIHsKKwkJcXVhbC0+dXBkYXRlZCA9IDA7CisJCWF0NzZfY2FsY19sZXZlbChwcml2LCBidWYsIHF1YWwpOworCQlhdDc2X2NhbGNfcXVhbChwcml2LCBidWYsIHF1YWwpOworCQlhdDc2X2NhbGNfbm9pc2UocHJpdiwgYnVmLCBxdWFsKTsKKwl9IGVsc2UgeworCQlxdWFsLT5xdWFsID0gMDsKKwkJcXVhbC0+bGV2ZWwgPSAwOworCQlxdWFsLT5ub2lzZSA9IDA7CisJCXF1YWwtPnVwZGF0ZWQgPSBJV19RVUFMX0FMTF9JTlZBTElEOworCX0KK30KKworc3RhdGljIHZvaWQgYXQ3Nl9yeF9tZ210KHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsIHN0cnVjdCBhdDc2X3J4X2J1ZmZlciAqYnVmKQoreworCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICptZ210ID0KKwkgICAgKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICopYnVmLT5wYWNrZXQ7CisJdTE2IGZyYW1lY3RsID0gbGUxNl90b19jcHUobWdtdC0+ZnJhbWVfY3RsKTsKKworCS8qIHVwZGF0ZSB3c3RhdHMgKi8KKwlpZiAocHJpdi0+bWFjX3N0YXRlICE9IE1BQ19JTklUICYmIHByaXYtPm1hY19zdGF0ZSAhPSBNQUNfU0NBTk5JTkcpIHsKKwkJLyogamFsOiB0aGlzIGlzIGEgZGlydHkgaGFjayBuZWVkZWQgYnkgVGltIGluIGFkLWhvYyBtb2RlICovCisJCS8qIERhdGEgcGFja2V0cyBhbHdheXMgc2VlbSB0byBoYXZlIGEgMCBsaW5rIGxldmVsLCBzbyB3ZQorCQkgICBvbmx5IHJlYWQgbGluayBxdWFsaXR5IGluZm8gZnJvbSBtYW5hZ2VtZW50IHBhY2tldHMuCisJCSAgIEF0bWVsIGRyaXZlciBhY3R1YWxseSBhdmVyYWdlcyB0aGUgcHJlc2VudCwgYW5kIHByZXZpb3VzCisJCSAgIHZhbHVlcywgd2UganVzdCBwcmVzZW50IHRoZSByYXcgdmFsdWUgYXQgdGhlIG1vbWVudCAtIFRKUyAqLworCQlpZiAocHJpdi0+aXdfbW9kZSA9PSBJV19NT0RFX0FESE9DCisJCSAgICB8fCAocHJpdi0+Y3Vycl9ic3MKKwkJCSYmICFjb21wYXJlX2V0aGVyX2FkZHIobWdtdC0+YWRkcjMsCisJCQkJCSAgICAgICBwcml2LT5jdXJyX2Jzcy0+YnNzaWQpKSkKKwkJCWF0NzZfdXBkYXRlX3dzdGF0cyhwcml2LCBidWYpOworCX0KKworCWF0NzZfZGJnKERCR19SWF9NR01UX0NPTlRFTlQsICIlcyByeCBtZ210IGZyYW1lY3RsIDB4JXggJXMiLAorCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBmcmFtZWN0bCwKKwkJIGhleDJzdHIobWdtdCwgbGUxNl90b19jcHUoYnVmLT53bGVuZ3RoKSkpOworCisJc3dpdGNoIChmcmFtZWN0bCAmIElFRUU4MDIxMV9GQ1RMX1NUWVBFKSB7CisJY2FzZSBJRUVFODAyMTFfU1RZUEVfQkVBQ09OOgorCWNhc2UgSUVFRTgwMjExX1NUWVBFX1BST0JFX1JFU1A6CisJCWF0NzZfcnhfbWdtdF9iZWFjb24ocHJpdiwgYnVmKTsKKwkJYnJlYWs7CisKKwljYXNlIElFRUU4MDIxMV9TVFlQRV9BU1NPQ19SRVNQOgorCQlhdDc2X3J4X21nbXRfYXNzb2MocHJpdiwgYnVmKTsKKwkJYnJlYWs7CisKKwljYXNlIElFRUU4MDIxMV9TVFlQRV9ESVNBU1NPQzoKKwkJYXQ3Nl9yeF9tZ210X2Rpc2Fzc29jKHByaXYsIGJ1Zik7CisJCWJyZWFrOworCisJY2FzZSBJRUVFODAyMTFfU1RZUEVfQVVUSDoKKwkJYXQ3Nl9yeF9tZ210X2F1dGgocHJpdiwgYnVmKTsKKwkJYnJlYWs7CisKKwljYXNlIElFRUU4MDIxMV9TVFlQRV9ERUFVVEg6CisJCWF0NzZfcnhfbWdtdF9kZWF1dGgocHJpdiwgYnVmKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGlnbm9yaW5nIGZyYW1lIHdpdGggZnJhbWVjdGwgMHglMDR4XG4iLAorCQkgICAgICAgcHJpdi0+bmV0ZGV2LT5uYW1lLCBmcmFtZWN0bCk7CisJfQorCisJcmV0dXJuOworfQorCisvKiBDb252ZXJ0IHRoZSA4MDIuMTEgaGVhZGVyIGludG8gYW4gZXRoZXJuZXQtc3R5bGUgaGVhZGVyLCBtYWtlIHNrYgorICogcmVhZHkgZm9yIGNvbnN1bXB0aW9uIGJ5IG5ldGlmX3J4KCkgKi8KK3N0YXRpYyB2b2lkIGF0NzZfaWVlZTgwMjExX3RvX2V0aChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaXdfbW9kZSkKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaTgwMl8xMV9oZHI7CisJc3RydWN0IGV0aGhkciAqZXRoX2hkcl9wOworCXU4ICpzcmNfYWRkcjsKKwl1OCAqZGVzdF9hZGRyOworCisJaTgwMl8xMV9oZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKilza2ItPmRhdGE7CisKKwkvKiBUaGF0IHdvdWxkIGJlIHRoZSBldGhlcm5ldCBoZWFkZXIgaWYgdGhlIGhhcmR3YXJlIGNvbnZlcnRlZAorCSAqIHRoZSBmcmFtZSBmb3IgdXMuICBNYWtlIHN1cmUgdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uCisJICogbWF0Y2ggdGhlIDgwMi4xMSBoZWFkZXIuICBXaGljaCBoYXJkd2FyZSBkb2VzIGl0PyAqLworCWV0aF9oZHJfcCA9IChzdHJ1Y3QgZXRoaGRyICopc2tiX3B1bGwoc2tiLCBJRUVFODAyMTFfM0FERFJfTEVOKTsKKworCWRlc3RfYWRkciA9IGk4MDJfMTFfaGRyLT5hZGRyMTsKKwlpZiAoaXdfbW9kZSA9PSBJV19NT0RFX0FESE9DKQorCQlzcmNfYWRkciA9IGk4MDJfMTFfaGRyLT5hZGRyMjsKKwllbHNlCisJCXNyY19hZGRyID0gaTgwMl8xMV9oZHItPmFkZHIzOworCisJaWYgKCFjb21wYXJlX2V0aGVyX2FkZHIoZXRoX2hkcl9wLT5oX3NvdXJjZSwgc3JjX2FkZHIpICYmCisJICAgICFjb21wYXJlX2V0aGVyX2FkZHIoZXRoX2hkcl9wLT5oX2Rlc3QsIGRlc3RfYWRkcikpCisJCS8qIFllcywgd2UgYWxyZWFkeSBoYXZlIGFuIGV0aGVybmV0IGhlYWRlciAqLworCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOworCWVsc2UgeworCQl1MTYgbGVuOworCisJCS8qIE5lZWQgdG8gYnVpbGQgYW4gZXRoZXJuZXQgaGVhZGVyICovCisJCWlmICghbWVtY21wKHNrYi0+ZGF0YSwgc25hcHNpZywgc2l6ZW9mKHNuYXBzaWcpKSkgeworCQkJLyogU05BUCBmcmFtZSAtIGRlY2Fwc3VsYXRlLCBrZWVwIHByb3RvICovCisJCQlza2JfcHVzaChza2IsIG9mZnNldG9mKHN0cnVjdCBldGhoZHIsIGhfcHJvdG8pIC0KKwkJCQkgc2l6ZW9mKHJmYzEwNDJzaWcpKTsKKwkJCWxlbiA9IDA7CisJCX0gZWxzZSB7CisJCQkvKiA4MDIuMyBmcmFtZSwgcHJvdG8gaXMgbGVuZ3RoICovCisJCQlsZW4gPSBza2ItPmxlbjsKKwkJCXNrYl9wdXNoKHNrYiwgRVRIX0hMRU4pOworCQl9CisKKwkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKwkJZXRoX2hkcl9wID0gZXRoX2hkcihza2IpOworCQkvKiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgaW4gdGhpcyBvcmRlciAoZXRoX2hkcl9wLT5oX2Rlc3QgbWF5CisJCSAqIG92ZXJsYXAgc3JjX2FkZHIpICovCisJCW1lbWNweShldGhfaGRyX3AtPmhfc291cmNlLCBzcmNfYWRkciwgRVRIX0FMRU4pOworCQltZW1jcHkoZXRoX2hkcl9wLT5oX2Rlc3QsIGRlc3RfYWRkciwgRVRIX0FMRU4pOworCQlpZiAobGVuKQorCQkJZXRoX2hkcl9wLT5oX3Byb3RvID0gaHRvbnMobGVuKTsKKwl9CisKKwlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBza2ItPmRldik7Cit9CisKKy8qIENoZWNrIGZvciBmcmFnbWVudGVkIGRhdGEgaW4gcHJpdi0+cnhfc2tiLiBJZiB0aGUgcGFja2V0IHdhcyBubyBmcmFnbWVudAorICAgb3IgaXQgd2FzIHRoZSBsYXN0IG9mIGEgZnJhZ21lbnQgc2V0IGEgc2tiIGNvbnRhaW5pbmcgdGhlIHdob2xlIHBhY2tldAorICAgaXMgcmV0dXJuZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gT3RoZXJ3aXNlIHdlIGdldCBOVUxMIGFuZCBhcmUKKyAgIGRvbmUgYW5kIHRoZSBwYWNrZXQgaXMgZWl0aGVyIHN0b3JlZCBpbnNpZGUgdGhlIGZyYWdtZW50IGJ1ZmZlcgorICAgb3IgdGhyb3duIGF3YXkuICBFdmVyeSByZXR1cm5lZCBza2Igc3RhcnRzIHdpdGggdGhlIGllZWU4MDJfMTEgaGVhZGVyCisgICBhbmQgY29udGFpbnMgX25vXyBGQ1MgYXQgdGhlIGVuZCAqLworc3RhdGljIHN0cnVjdCBza19idWZmICphdDc2X2NoZWNrX2Zvcl9yeF9mcmFncyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCXN0cnVjdCBza19idWZmICpza2IgPSBwcml2LT5yeF9za2I7CisJc3RydWN0IGF0NzZfcnhfYnVmZmVyICpidWYgPSAoc3RydWN0IGF0NzZfcnhfYnVmZmVyICopc2tiLT5kYXRhOworCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICppODAyXzExX2hkciA9CisJICAgIChzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqKWJ1Zi0+cGFja2V0OworCS8qIHNlcV9jdHJsLCBmcmFnbWVudF9udW1iZXIsIHNlcXVlbmNlIG51bWJlciBvZiBuZXcgcGFja2V0ICovCisJdTE2IHNjdGwgPSBsZTE2X3RvX2NwdShpODAyXzExX2hkci0+c2VxX2N0bCk7CisJdTE2IGZyYWduciA9IHNjdGwgJiAweGY7CisJdTE2IHNlcW5yID0gc2N0bCA+PiA0OworCXUxNiBmcmFtZV9jdGwgPSBsZTE2X3RvX2NwdShpODAyXzExX2hkci0+ZnJhbWVfY3RsKTsKKworCS8qIExlbmd0aCBpbmNsdWRpbmcgdGhlIElFRUU4MDIuMTEgaGVhZGVyLCBidXQgd2l0aG91dCB0aGUgdHJhaWxpbmcKKwkgKiBGQ1MgYW5kIHdpdGhvdXQgdGhlIEF0bWVsIFJ4IGhlYWRlciAqLworCWludCBsZW5ndGggPSBsZTE2X3RvX2NwdShidWYtPndsZW5ndGgpIC0gSUVFRTgwMjExX0ZDU19MRU47CisKKwkvKiB3aGVyZSBkb2VzIHRoZSBkYXRhIHBheWxvYWQgc3RhcnQgaW4gc2tiLT5kYXRhID8gKi8KKwl1OCAqZGF0YSA9IGk4MDJfMTFfaGRyLT5wYXlsb2FkOworCisJLyogbGVuZ3RoIG9mIHBheWxvYWQsIGV4Y2wuIHRoZSB0cmFpbGluZyBGQ1MgKi8KKwlpbnQgZGF0YV9sZW4gPSBsZW5ndGggLSBJRUVFODAyMTFfM0FERFJfTEVOOworCisJaW50IGk7CisJc3RydWN0IHJ4X2RhdGFfYnVmICpicHRyLCAqb3B0cjsKKwl1bnNpZ25lZCBsb25nIG9sZGVzdCA9IH4wVUw7CisKKwlhdDc2X2RiZyhEQkdfUlhfRlJBR1MsCisJCSAiJXM6IHJ4IGRhdGEgZnJhbWVfY3RsICUwNHggYWRkcjIgJXMgc2VxL2ZyYWcgJWQvJWQgIgorCQkgImxlbmd0aCAlZCBkYXRhICVkOiAlcyAuLi4iLCBwcml2LT5uZXRkZXYtPm5hbWUsIGZyYW1lX2N0bCwKKwkJIG1hYzJzdHIoaTgwMl8xMV9oZHItPmFkZHIyKSwgc2VxbnIsIGZyYWduciwgbGVuZ3RoLCBkYXRhX2xlbiwKKwkJIGhleDJzdHIoZGF0YSwgMzIpKTsKKworCWF0NzZfZGJnKERCR19SWF9GUkFHU19TS0IsICIlczogaW5jb21pbmcgc2tiOiBoZWFkICVwIGRhdGEgJXAgIgorCQkgInRhaWwgJXAgZW5kICVwIGxlbiAlZCIsIHByaXYtPm5ldGRldi0+bmFtZSwgc2tiLT5oZWFkLAorCQkgc2tiLT5kYXRhLCBza2JfdGFpbF9wb2ludGVyKHNrYiksIHNrYl9lbmRfcG9pbnRlcihza2IpLAorCQkgc2tiLT5sZW4pOworCisJaWYgKGRhdGFfbGVuIDwgMCkgeworCQkvKiBtYWtlIHN1cmUgZGF0YSBzdGFydHMgaW4gdGhlIGJ1ZmZlciAqLworCQlwcmludGsoS0VSTl9JTkZPICIlczogZGF0YSBmcmFtZSB0b28gc2hvcnRcbiIsCisJCSAgICAgICBwcml2LT5uZXRkZXYtPm5hbWUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlXQVJOX09OKGxlbmd0aCA8PSBBVDc2X1JYX0hEUkxFTik7CisJaWYgKGxlbmd0aCA8PSBBVDc2X1JYX0hEUkxFTikKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiByZW1vdmUgdGhlIGF0NzZfcnhfYnVmZmVyIGhlYWRlciAtIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZSAqLworCS8qIHdlIG5lZWQgdGhlIElFRUU4MDIuMTEgaGVhZGVyIChmb3IgdGhlIGFkZHJlc3NlcykgaWYgdGhpcyBwYWNrZXQKKwkgICBpcyB0aGUgZmlyc3Qgb2YgYSBjaGFpbiAqLworCXNrYl9wdWxsKHNrYiwgQVQ3Nl9SWF9IRFJMRU4pOworCisJLyogcmVtb3ZlIEZDUyBhdCBlbmQgKi8KKwlza2JfdHJpbShza2IsIGxlbmd0aCk7CisKKwlhdDc2X2RiZyhEQkdfUlhfRlJBR1NfU0tCLCAiJXM6IHRyaW1tZWQgc2tiOiBoZWFkICVwIGRhdGEgJXAgdGFpbCAlcCAiCisJCSAiZW5kICVwIGxlbiAlZCBkYXRhICVwIGRhdGFfbGVuICVkIiwgcHJpdi0+bmV0ZGV2LT5uYW1lLAorCQkgc2tiLT5oZWFkLCBza2ItPmRhdGEsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSwKKwkJIHNrYl9lbmRfcG9pbnRlcihza2IpLCBza2ItPmxlbiwgZGF0YSwgZGF0YV9sZW4pOworCisJaWYgKGZyYWduciA9PSAwICYmICEoZnJhbWVfY3RsICYgSUVFRTgwMjExX0ZDVExfTU9SRUZSQUdTKSkgeworCQkvKiB1bmZyYWdtZW50ZWQgcGFja2V0IHJlY2VpdmVkICovCisJCS8qIFVzZSBhIG5ldyBza2IgZm9yIHRoZSBuZXh0IHJlY2VpdmUgKi8KKwkJcHJpdi0+cnhfc2tiID0gTlVMTDsKKwkJYXQ3Nl9kYmcoREJHX1JYX0ZSQUdTLCAiJXM6IHVuZnJhZ21lbnRlZCIsIHByaXYtPm5ldGRldi0+bmFtZSk7CisJCXJldHVybiBza2I7CisJfQorCisJLyogbG9vayBpZiB3ZSd2ZSBnb3QgYSBjaGFpbiBmb3IgdGhlIHNlbmRlciBhZGRyZXNzLgorCSAgIGFmdGVyd2FyZHMgb3B0ciBwb2ludHMgdG8gZmlyc3QgZnJlZSBvciB0aGUgb2xkZXN0IGVudHJ5LAorCSAgIG9yLCBpZiBpIDwgTlJfUlhfREFUQV9CVUYsIGJwdHIgcG9pbnRzIHRvIHRoZSBlbnRyeSBmb3IgdGhlCisJICAgc2VuZGVyIGFkZHJlc3MgKi8KKwkvKiBkZXRlcm1pbmluZyB0aGUgb2xkZXN0IGVudHJ5IGRvZXNuJ3QgY29wZSB3aXRoIGppZmZpZXMgd3JhcHBpbmcKKwkgICBidXQgSSBkb24ndCBjYXJlIHRvIGRlbGV0ZSBhIHlvdW5nIGVudHJ5IGF0IHRoZXNlIHJhcmUgbW9tZW50cyAuLi4gKi8KKworCWJwdHIgPSBwcml2LT5yeF9kYXRhOworCW9wdHIgPSBOVUxMOworCWZvciAoaSA9IDA7IGkgPCBOUl9SWF9EQVRBX0JVRjsgaSsrLCBicHRyKyspIHsKKwkJaWYgKCFicHRyLT5za2IpIHsKKwkJCW9wdHIgPSBicHRyOworCQkJb2xkZXN0ID0gMFVMOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoIWNvbXBhcmVfZXRoZXJfYWRkcihpODAyXzExX2hkci0+YWRkcjIsIGJwdHItPnNlbmRlcikpCisJCQlicmVhazsKKworCQlpZiAoIW9wdHIpIHsKKwkJCW9wdHIgPSBicHRyOworCQkJb2xkZXN0ID0gYnB0ci0+bGFzdF9yeDsKKwkJfSBlbHNlIGlmIChicHRyLT5sYXN0X3J4IDwgb2xkZXN0KQorCQkJb3B0ciA9IGJwdHI7CisJfQorCisJaWYgKGkgPCBOUl9SWF9EQVRBX0JVRikgeworCisJCWF0NzZfZGJnKERCR19SWF9GUkFHUywgIiVzOiAlZC4gY2FjaGVlbnRyeSAoc2VxL2ZyYWcgPSAlZC8lZCkgIgorCQkJICJtYXRjaGVkIHNlbmRlciBhZGRyIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGksIGJwdHItPnNlcW5yLCBicHRyLT5mcmFnbnIpOworCisJCS8qIGJwdHIgcG9pbnRzIHRvIGFuIGVudHJ5IGZvciB0aGUgc2VuZGVyIGFkZHJlc3MgKi8KKwkJaWYgKGJwdHItPnNlcW5yID09IHNlcW5yKSB7CisJCQlpbnQgbGVmdDsKKwkJCS8qIHRoZSBmcmFnbWVudCBoYXMgdGhlIGN1cnJlbnQgc2VxdWVuY2UgbnVtYmVyICovCisJCQlpZiAoKChicHRyLT5mcmFnbnIgKyAxKSAmIDB4ZikgIT0gZnJhZ25yKSB7CisJCQkJLyogd3JvbmcgZnJhZ21lbnQgbnVtYmVyIC0+IGlnbm9yZSBpdCAqLworCQkJCS8qIGlzICYgMHhmIG5lY2Vzc2FyeSBhYm92ZSA/Pz8gKi8KKwkJCQlhdDc2X2RiZyhEQkdfUlhfRlJBR1MsCisJCQkJCSAiJXM6IGZyYWcgbnIgbWlzbWF0Y2g6ICVkICsgMSAhPSAlZCIsCisJCQkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGJwdHItPmZyYWduciwKKwkJCQkJIGZyYWducik7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlicHRyLT5sYXN0X3J4ID0gamlmZmllczsKKwkJCS8qIHRoZSBuZXh0IGZvbGxvd2luZyBmcmFnbWVudCBudW1iZXIgLT4KKwkJCSAgIGFkZCB0aGUgZGF0YSBhdCB0aGUgZW5kICovCisKKwkJCS8qIGZvciB0ZXN0IG9ubHkgPz8/ICovCisJCQlsZWZ0ID0gc2tiX3RhaWxyb29tKGJwdHItPnNrYik7CisJCQlpZiAobGVmdCA8IGRhdGFfbGVuKQorCQkJCXByaW50ayhLRVJOX0lORk8KKwkJCQkgICAgICAgIiVzOiBvbmx5ICVkIGJ5dGUgZnJlZSAobmVlZCAlZClcbiIsCisJCQkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgbGVmdCwgZGF0YV9sZW4pOworCQkJZWxzZQorCQkJCW1lbWNweShza2JfcHV0KGJwdHItPnNrYiwgZGF0YV9sZW4pLCBkYXRhLAorCQkJCSAgICAgICBkYXRhX2xlbik7CisKKwkJCWJwdHItPmZyYWduciA9IGZyYWducjsKKwkJCWlmIChmcmFtZV9jdGwgJiBJRUVFODAyMTFfRkNUTF9NT1JFRlJBR1MpCisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCS8qIHRoaXMgd2FzIHRoZSBsYXN0IGZyYWdtZW50IC0gc2VuZCBpdCAqLworCQkJc2tiID0gYnB0ci0+c2tiOworCQkJYnB0ci0+c2tiID0gTlVMTDsJLyogZnJlZSB0aGUgZW50cnkgKi8KKwkJCWF0NzZfZGJnKERCR19SWF9GUkFHUywgIiVzOiBsYXN0IGZyYWcgb2Ygc2VxICVkIiwKKwkJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBzZXFucik7CisJCQlyZXR1cm4gc2tiOworCQl9CisKKwkJLyogZ290IGFub3RoZXIgc2VxdWVuY2UgbnVtYmVyICovCisJCWlmIChmcmFnbnIgPT0gMCkgeworCQkJLyogaXQncyB0aGUgc3RhcnQgb2YgYSBuZXcgY2hhaW4gLSByZXBsYWNlIHRoZQorCQkJICAgb2xkIG9uZSBieSB0aGlzICovCisJCQkvKiBicHRyLT5zZW5kZXIgaGFzIHRoZSBjb3JyZWN0IHZhbHVlIGFscmVhZHkgKi8KKwkJCWF0NzZfZGJnKERCR19SWF9GUkFHUywKKwkJCQkgIiVzOiBzdGFydCBvZiBuZXcgc2VxICVkLCByZW1vdmluZyBvbGQgc2VxICVkIiwKKwkJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBzZXFuciwgYnB0ci0+c2VxbnIpOworCQkJYnB0ci0+c2VxbnIgPSBzZXFucjsKKwkJCWJwdHItPmZyYWduciA9IDA7CisJCQlicHRyLT5sYXN0X3J4ID0gamlmZmllczsKKwkJCS8qIHN3YXAgYnB0ci0+c2tiIGFuZCBwcml2LT5yeF9za2IgKi8KKwkJCXNrYiA9IGJwdHItPnNrYjsKKwkJCWJwdHItPnNrYiA9IHByaXYtPnJ4X3NrYjsKKwkJCXByaXYtPnJ4X3NrYiA9IHNrYjsKKwkJfSBlbHNlIHsKKwkJCS8qIGl0IGZyb20gdGhlIG1pZGRsZSBvZiBhIG5ldyBjaGFpbiAtPgorCQkJICAgZGVsZXRlIHRoZSBvbGQgZW50cnkgYW5kIHNraXAgdGhlIG5ldyBvbmUgKi8KKwkJCWF0NzZfZGJnKERCR19SWF9GUkFHUywKKwkJCQkgIiVzOiBtaWRkbGUgb2YgbmV3IHNlcSAlZCAoJWQpICIKKwkJCQkgInJlbW92aW5nIG9sZCBzZXEgJWQiLAorCQkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIHNlcW5yLCBmcmFnbnIsCisJCQkJIGJwdHItPnNlcW5yKTsKKwkJCWRldl9rZnJlZV9za2IoYnB0ci0+c2tiKTsKKwkJCWJwdHItPnNrYiA9IE5VTEw7CisJCX0KKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogaWYgd2UgZGlkbid0IGZpbmQgYSBjaGFpbiBmb3IgdGhlIHNlbmRlciBhZGRyZXNzLCBvcHRyCisJICAgcG9pbnRzIGVpdGhlciB0byB0aGUgZmlyc3QgZnJlZSBvciB0aGUgb2xkZXN0IGVudHJ5ICovCisKKwlpZiAoZnJhZ25yICE9IDApIHsKKwkJLyogdGhpcyBpcyBub3QgdGhlIGJlZ2luIG9mIGEgZnJhZ21lbnQgY2hhaW4gLi4uICovCisJCWF0NzZfZGJnKERCR19SWF9GUkFHUywKKwkJCSAiJXM6IG5vIGNoYWluIGZvciBub24tZmlyc3QgZnJhZ21lbnQgKCVkKSIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lLCBmcmFnbnIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlCVUdfT04oIW9wdHIpOworCWlmIChvcHRyLT5za2IpIHsKKwkJLyogc3dhcCB0aGUgc2tiJ3MgKi8KKwkJc2tiID0gb3B0ci0+c2tiOworCQlvcHRyLT5za2IgPSBwcml2LT5yeF9za2I7CisJCXByaXYtPnJ4X3NrYiA9IHNrYjsKKworCQlhdDc2X2RiZyhEQkdfUlhfRlJBR1MsCisJCQkgIiVzOiBmcmVlIG9sZCBjb250ZW50czogc2VuZGVyICVzIHNlcS9mcmFnICVkLyVkIiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIG1hYzJzdHIob3B0ci0+c2VuZGVyKSwKKwkJCSBvcHRyLT5zZXFuciwgb3B0ci0+ZnJhZ25yKTsKKworCX0gZWxzZSB7CisJCS8qIHRha2UgdGhlIHNrYiBmcm9tIHByaXYtPnJ4X3NrYiAqLworCQlvcHRyLT5za2IgPSBwcml2LT5yeF9za2I7CisJCS8qIGxldCBhdDc2X3N1Ym1pdF9yeF91cmIoKSBhbGxvY2F0ZSBhIG5ldyBza2IgKi8KKwkJcHJpdi0+cnhfc2tiID0gTlVMTDsKKworCQlhdDc2X2RiZyhEQkdfUlhfRlJBR1MsICIlczogdXNlIGEgZnJlZSBlbnRyeSIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lKTsKKwl9CisJbWVtY3B5KG9wdHItPnNlbmRlciwgaTgwMl8xMV9oZHItPmFkZHIyLCBFVEhfQUxFTik7CisJb3B0ci0+c2VxbnIgPSBzZXFucjsKKwlvcHRyLT5mcmFnbnIgPSAwOworCW9wdHItPmxhc3RfcnggPSBqaWZmaWVzOworCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qIFJ4IGludGVycnVwdDogd2UgZXhwZWN0IHRoZSBjb21wbGV0ZSBkYXRhIGJ1ZmZlciBpbiBwcml2LT5yeF9za2IgKi8KK3N0YXRpYyB2b2lkIGF0NzZfcnhfZGF0YShzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2KQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwcml2LT5uZXRkZXY7CisJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzID0gJnByaXYtPnN0YXRzOworCXN0cnVjdCBza19idWZmICpza2IgPSBwcml2LT5yeF9za2I7CisJc3RydWN0IGF0NzZfcnhfYnVmZmVyICpidWYgPSAoc3RydWN0IGF0NzZfcnhfYnVmZmVyICopc2tiLT5kYXRhOworCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICppODAyXzExX2hkcjsKKwlpbnQgbGVuZ3RoID0gbGUxNl90b19jcHUoYnVmLT53bGVuZ3RoKTsKKworCWF0NzZfZGJnKERCR19SWF9EQVRBLCAiJXMgcmVjZWl2ZWQgZGF0YSBwYWNrZXQ6ICVzIiwgbmV0ZGV2LT5uYW1lLAorCQkgaGV4MnN0cihza2ItPmRhdGEsIEFUNzZfUlhfSERSTEVOKSk7CisKKwlhdDc2X2RiZyhEQkdfUlhfREFUQV9DT05URU5ULCAicnggcGFja2V0OiAlcyIsCisJCSBoZXgyc3RyKHNrYi0+ZGF0YSArIEFUNzZfUlhfSERSTEVOLCBsZW5ndGgpKTsKKworCXNrYiA9IGF0NzZfY2hlY2tfZm9yX3J4X2ZyYWdzKHByaXYpOworCWlmICghc2tiKQorCQlyZXR1cm47CisKKwkvKiBBdG1lbCBoZWFkZXIgYW5kIHRoZSBGQ1MgYXJlIGFscmVhZHkgcmVtb3ZlZCAqLworCWk4MDJfMTFfaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICopc2tiLT5kYXRhOworCisJc2tiLT5kZXYgPSBuZXRkZXY7CisJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwkvKiBUT0RPOiBzaG91bGQgY2hlY2sgQ1JDICovCisKKwlpZiAoaXNfYnJvYWRjYXN0X2V0aGVyX2FkZHIoaTgwMl8xMV9oZHItPmFkZHIxKSkgeworCQlpZiAoIWNvbXBhcmVfZXRoZXJfYWRkcihpODAyXzExX2hkci0+YWRkcjEsIG5ldGRldi0+YnJvYWRjYXN0KSkKKwkJCXNrYi0+cGt0X3R5cGUgPSBQQUNLRVRfQlJPQURDQVNUOworCQllbHNlCisJCQlza2ItPnBrdF90eXBlID0gUEFDS0VUX01VTFRJQ0FTVDsKKwl9IGVsc2UgaWYgKGNvbXBhcmVfZXRoZXJfYWRkcihpODAyXzExX2hkci0+YWRkcjEsIG5ldGRldi0+ZGV2X2FkZHIpKQorCQlza2ItPnBrdF90eXBlID0gUEFDS0VUX09USEVSSE9TVDsKKworCWF0NzZfaWVlZTgwMjExX3RvX2V0aChza2IsIHByaXYtPml3X21vZGUpOworCisJbmV0ZGV2LT5sYXN0X3J4ID0gamlmZmllczsKKwluZXRpZl9yeChza2IpOworCXN0YXRzLT5yeF9wYWNrZXRzKys7CisJc3RhdHMtPnJ4X2J5dGVzICs9IGxlbmd0aDsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQgYXQ3Nl9yeF9tb25pdG9yX21vZGUoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgYXQ3Nl9yeF9yYWRpb3RhcCAqcnQ7CisJdTggKnBheWxvYWQ7CisJaW50IHNrYmxlbjsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcHJpdi0+bmV0ZGV2OworCXN0cnVjdCBhdDc2X3J4X2J1ZmZlciAqYnVmID0KKwkgICAgKHN0cnVjdCBhdDc2X3J4X2J1ZmZlciAqKXByaXYtPnJ4X3NrYi0+ZGF0YTsKKwkvKiBsZW5ndGggaW5jbHVkaW5nIHRoZSBJRUVFODAyLjExIGhlYWRlciBhbmQgdGhlIHRyYWlsaW5nIEZDUywKKwkgICBidXQgbm90IGF0NzZfcnhfYnVmZmVyICovCisJaW50IGxlbmd0aCA9IGxlMTZfdG9fY3B1KGJ1Zi0+d2xlbmd0aCk7CisJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHByaXYtPnJ4X3NrYjsKKwlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMgPSAmcHJpdi0+c3RhdHM7CisKKwlpZiAobGVuZ3RoIDwgSUVFRTgwMjExX0ZDU19MRU4pIHsKKwkJLyogYnVmZmVyIGNvbnRhaW5zIG5vIGRhdGEgKi8KKwkJYXQ3Nl9kYmcoREJHX01PTklUT1JfTU9ERSwKKwkJCSAiJXM6IE1PTklUT1IgTU9ERTogcnggc2tiIHdpdGhvdXQgZGF0YSIsCisJCQkgcHJpdi0+bmV0ZGV2LT5uYW1lKTsKKwkJcmV0dXJuOworCX0KKworCXNrYmxlbiA9IHNpemVvZihzdHJ1Y3QgYXQ3Nl9yeF9yYWRpb3RhcCkgKyBsZW5ndGg7CisKKwlza2IgPSBkZXZfYWxsb2Nfc2tiKHNrYmxlbik7CisJaWYgKCFza2IpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogTU9OSVRPUiBNT0RFOiBkZXZfYWxsb2Nfc2tiIGZvciByYWRpb3RhcCAiCisJCSAgICAgICAiaGVhZGVyIHJldHVybmVkIE5VTExcbiIsIHByaXYtPm5ldGRldi0+bmFtZSk7CisJCXJldHVybjsKKwl9CisKKwlza2JfcHV0KHNrYiwgc2tibGVuKTsKKworCXJ0ID0gKHN0cnVjdCBhdDc2X3J4X3JhZGlvdGFwICopc2tiLT5kYXRhOworCXBheWxvYWQgPSBza2ItPmRhdGEgKyBzaXplb2Yoc3RydWN0IGF0NzZfcnhfcmFkaW90YXApOworCisJcnQtPnJ0X2hkci5pdF92ZXJzaW9uID0gMDsKKwlydC0+cnRfaGRyLml0X3BhZCA9IDA7CisJcnQtPnJ0X2hkci5pdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGF0NzZfcnhfcmFkaW90YXApKTsKKwlydC0+cnRfaGRyLml0X3ByZXNlbnQgPSBjcHVfdG9fbGUzMihBVDc2X1JYX1JBRElPVEFQX1BSRVNFTlQpOworCisJcnQtPnJ0X3RzZnQgPSBjcHVfdG9fbGU2NChsZTMyX3RvX2NwdShidWYtPnJ4X3RpbWUpKTsKKwlydC0+cnRfcmF0ZSA9IGh3X3JhdGVzW2J1Zi0+cnhfcmF0ZV0gJiAofjB4ODApOworCXJ0LT5ydF9zaWduYWwgPSBidWYtPnJzc2k7CisJcnQtPnJ0X25vaXNlID0gYnVmLT5ub2lzZV9sZXZlbDsKKwlydC0+cnRfZmxhZ3MgPSBJRUVFODAyMTFfUkFESU9UQVBfRl9GQ1M7CisJaWYgKGJ1Zi0+ZnJhZ21lbnRhdGlvbikKKwkJcnQtPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9GX0ZSQUc7CisKKwltZW1jcHkocGF5bG9hZCwgYnVmLT5wYWNrZXQsIGxlbmd0aCk7CisJc2tiLT5kZXYgPSBuZXRkZXY7CisJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOworCXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CisJc2tiLT5wa3RfdHlwZSA9IFBBQ0tFVF9PVEhFUkhPU1Q7CisJc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QXzgwMl8yKTsKKworCW5ldGRldi0+bGFzdF9yeCA9IGppZmZpZXM7CisJbmV0aWZfcngoc2tiKTsKKwlzdGF0cy0+cnhfcGFja2V0cysrOworCXN0YXRzLT5yeF9ieXRlcyArPSBsZW5ndGg7Cit9CisKKy8qIENoZWNrIGlmIHdlIHNweSBvbiB0aGUgc2VuZGVyIGFkZHJlc3MgaW4gYnVmIGFuZCB1cGRhdGUgc3RhdHMgKi8KK3N0YXRpYyB2b2lkIGF0NzZfaXdzcHlfdXBkYXRlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsCisJCQkgICAgICBzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaGRyID0KKwkgICAgKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICopYnVmLT5wYWNrZXQ7CisJc3RydWN0IGl3X3F1YWxpdHkgcXVhbDsKKworCS8qIFdlIGNhbiBvbmx5IHNldCB0aGUgbGV2ZWwgaGVyZSAqLworCXF1YWwudXBkYXRlZCA9IElXX1FVQUxfUVVBTF9JTlZBTElEIHwgSVdfUVVBTF9OT0lTRV9JTlZBTElEOworCXF1YWwubGV2ZWwgPSAwOworCXF1YWwubm9pc2UgPSAwOworCWF0NzZfY2FsY19sZXZlbChwcml2LCBidWYsICZxdWFsKTsKKworCXNwaW5fbG9ja19iaCgmcHJpdi0+c3B5X3NwaW5sb2NrKTsKKworCWlmIChwcml2LT5zcHlfZGF0YS5zcHlfbnVtYmVyID4gMCkKKwkJd2lyZWxlc3Nfc3B5X3VwZGF0ZShwcml2LT5uZXRkZXYsIGhkci0+YWRkcjIsICZxdWFsKTsKKworCXNwaW5fdW5sb2NrX2JoKCZwcml2LT5zcHlfc3BpbmxvY2spOworfQorCitzdGF0aWMgdm9pZCBhdDc2X3J4X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBwYXJhbSkKK3sKKwlzdHJ1Y3QgdXJiICp1cmIgPSAoc3RydWN0IHVyYiAqKXBhcmFtOworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXYgPSB1cmItPmNvbnRleHQ7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHByaXYtPm5ldGRldjsKKwlzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKmJ1ZjsKKwlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaTgwMl8xMV9oZHI7CisJdTE2IGZyYW1lX2N0bDsKKworCWlmIChwcml2LT5kZXZpY2VfdW5wbHVnZ2VkKSB7CisJCWF0NzZfZGJnKERCR19ERVZTVEFSVCwgImRldmljZSB1bnBsdWdnZWQiKTsKKwkJaWYgKHVyYikKKwkJCWF0NzZfZGJnKERCR19ERVZTVEFSVCwgInVyYiBzdGF0dXMgJWQiLCB1cmItPnN0YXR1cyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIXByaXYtPnJ4X3NrYiB8fCAhbmV0ZGV2IHx8ICFwcml2LT5yeF9za2ItPmRhdGEpCisJCXJldHVybjsKKworCWJ1ZiA9IChzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIgKilwcml2LT5yeF9za2ItPmRhdGE7CisKKwlpODAyXzExX2hkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqKWJ1Zi0+cGFja2V0OworCisJZnJhbWVfY3RsID0gbGUxNl90b19jcHUoaTgwMl8xMV9oZHItPmZyYW1lX2N0bCk7CisKKwlpZiAodXJiLT5zdGF0dXMgIT0gMCkgeworCQlpZiAodXJiLT5zdGF0dXMgIT0gLUVOT0VOVCAmJiB1cmItPnN0YXR1cyAhPSAtRUNPTk5SRVNFVCkKKwkJCWF0NzZfZGJnKERCR19VUkIsCisJCQkJICIlcyAlczogLSBub256ZXJvIFJ4IGJ1bGsgc3RhdHVzIHJlY2VpdmVkOiAlZCIsCisJCQkJIF9fZnVuY19fLCBuZXRkZXYtPm5hbWUsIHVyYi0+c3RhdHVzKTsKKwkJcmV0dXJuOworCX0KKworCWF0NzZfZGJnKERCR19SWF9BVE1FTF9IRFIsCisJCSAiJXM6IHJ4IGZyYW1lOiByYXRlICVkIHJzc2kgJWQgbm9pc2UgJWQgbGluayAlZCAlcyIsCisJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGJ1Zi0+cnhfcmF0ZSwgYnVmLT5yc3NpLCBidWYtPm5vaXNlX2xldmVsLAorCQkgYnVmLT5saW5rX3F1YWxpdHksIGhleDJzdHIoaTgwMl8xMV9oZHIsIDQ4KSk7CisJaWYgKHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9NT05JVE9SKSB7CisJCWF0NzZfcnhfbW9uaXRvcl9tb2RlKHByaXYpOworCQlnb3RvIGV4aXQ7CisJfQorCisJLyogdGhlcmUgaXMgYSBuZXcgYnNzaWQgYXJvdW5kLCBhY2NlcHQgaXQ6ICovCisJaWYgKGJ1Zi0+bmV3YnNzICYmIHByaXYtPml3X21vZGUgPT0gSVdfTU9ERV9BREhPQykgeworCQlhdDc2X2RiZyhEQkdfUFJPR1JFU1MsICIlczogcnggbmV3YnNzIiwgbmV0ZGV2LT5uYW1lKTsKKwkJc2NoZWR1bGVfd29yaygmcHJpdi0+d29ya19uZXdfYnNzKTsKKwl9CisKKwlzd2l0Y2ggKGZyYW1lX2N0bCAmIElFRUU4MDIxMV9GQ1RMX0ZUWVBFKSB7CisJY2FzZSBJRUVFODAyMTFfRlRZUEVfREFUQToKKwkJYXQ3Nl9yeF9kYXRhKHByaXYpOworCQlicmVhazsKKworCWNhc2UgSUVFRTgwMjExX0ZUWVBFX01HTVQ6CisJCS8qIGphbDogVE9ETzogZmluZCBvdXQgaWYgd2UgY2FuIHVwZGF0ZSBpd3NweSBhbHNvIG9uCisJCSAgIG90aGVyIGZyYW1lcyB0aGFuIG1hbmFnZW1lbnQgKG1pZ2h0IGRlcGVuZCBvbiB0aGUKKwkJICAgcmFkaW8gY2hpcCAvIGZpcm13YXJlIHZlcnNpb24gISkgKi8KKworCQlhdDc2X2l3c3B5X3VwZGF0ZShwcml2LCBidWYpOworCisJCWF0NzZfcnhfbWdtdChwcml2LCBidWYpOworCQlicmVhazsKKworCWNhc2UgSUVFRTgwMjExX0ZUWVBFX0NUTDoKKwkJYXQ3Nl9kYmcoREJHX1JYX0NUUkwsICIlczogaWdub3JlZCBjdHJsIGZyYW1lOiAlMDR4IiwKKwkJCSBwcml2LT5uZXRkZXYtPm5hbWUsIGZyYW1lX2N0bCk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBpZ25vcmluZyBmcmFtZSB3aXRoIGZyYW1lY3RsIDB4JTA0eFxuIiwKKwkJICAgICAgIHByaXYtPm5ldGRldi0+bmFtZSwgZnJhbWVfY3RsKTsKKwl9CitleGl0OgorCWF0NzZfc3VibWl0X3J4X3VyYihwcml2KTsKK30KKworLyogTG9hZCBmaXJtd2FyZSBpbnRvIGtlcm5lbCBtZW1vcnkgYW5kIHBhcnNlIGl0ICovCitzdGF0aWMgc3RydWN0IGZ3ZW50cnkgKmF0NzZfbG9hZF9maXJtd2FyZShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKKwkJCQkJICBlbnVtIGJvYXJkX3R5cGUgYm9hcmRfdHlwZSkKK3sKKwlpbnQgcmV0OworCWNoYXIgKnN0cjsKKwlzdHJ1Y3QgYXQ3Nl9md19oZWFkZXIgKmZ3aDsKKwlzdHJ1Y3QgZndlbnRyeSAqZndlID0gJmZpcm13YXJlc1tib2FyZF90eXBlXTsKKworCW11dGV4X2xvY2soJmZ3X211dGV4KTsKKworCWlmIChmd2UtPmxvYWRlZCkgeworCQlhdDc2X2RiZyhEQkdfRlcsICJyZS11c2luZyBwcmV2aW91c2x5IGxvYWRlZCBmdyIpOworCQlnb3RvIGV4aXQ7CisJfQorCisJYXQ3Nl9kYmcoREJHX0ZXLCAiZG93bmxvYWRpbmcgZmlybXdhcmUgJXMiLCBmd2UtPmZ3bmFtZSk7CisJcmV0ID0gcmVxdWVzdF9maXJtd2FyZSgmZndlLT5mdywgZndlLT5md25hbWUsICZ1ZGV2LT5kZXYpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsICJmaXJtd2FyZSAlcyBub3QgZm91bmQhXG4iLAorCQkJICAgZndlLT5md25hbWUpOworCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmdWRldi0+ZGV2LAorCQkJICAgInlvdSBtYXkgbmVlZCB0byBkb3dubG9hZCB0aGUgZmlybXdhcmUgZnJvbSAiCisJCQkgICAiaHR0cDovL2RldmVsb3Blci5iZXJsaW9zLmRlL3Byb2plY3RzL2F0NzZjNTAzYS8iKTsKKwkJZ290byBleGl0OworCX0KKworCWF0NzZfZGJnKERCR19GVywgImdvdCBpdC4iKTsKKwlmd2ggPSAoc3RydWN0IGF0NzZfZndfaGVhZGVyICopKGZ3ZS0+ZnctPmRhdGEpOworCisJaWYgKGZ3ZS0+ZnctPnNpemUgPD0gc2l6ZW9mKCpmd2gpKSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkgICAiZmlybXdhcmUgaXMgdG9vIHNob3J0ICgweCV6eClcbiIsIGZ3ZS0+ZnctPnNpemUpOworCQlnb3RvIGV4aXQ7CisJfQorCisJLyogQ1JDIGN1cnJlbnRseSBub3QgY2hlY2tlZCAqLworCWZ3ZS0+Ym9hcmRfdHlwZSA9IGxlMzJfdG9fY3B1KGZ3aC0+Ym9hcmRfdHlwZSk7CisJaWYgKGZ3ZS0+Ym9hcmRfdHlwZSAhPSBib2FyZF90eXBlKSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsCisJCQkgICAiYm9hcmQgdHlwZSBtaXNtYXRjaCwgcmVxdWVzdGVkICV1LCBnb3QgJXVcbiIsCisJCQkgICBib2FyZF90eXBlLCBmd2UtPmJvYXJkX3R5cGUpOworCQlnb3RvIGV4aXQ7CisJfQorCisJZndlLT5md192ZXJzaW9uLm1ham9yID0gZndoLT5tYWpvcjsKKwlmd2UtPmZ3X3ZlcnNpb24ubWlub3IgPSBmd2gtPm1pbm9yOworCWZ3ZS0+ZndfdmVyc2lvbi5wYXRjaCA9IGZ3aC0+cGF0Y2g7CisJZndlLT5md192ZXJzaW9uLmJ1aWxkID0gZndoLT5idWlsZDsKKworCXN0ciA9IChjaGFyICopZndoICsgbGUzMl90b19jcHUoZndoLT5zdHJfb2Zmc2V0KTsKKwlmd2UtPmludGZ3ID0gKHU4ICopZndoICsgbGUzMl90b19jcHUoZndoLT5pbnRfZndfb2Zmc2V0KTsKKwlmd2UtPmludGZ3X3NpemUgPSBsZTMyX3RvX2NwdShmd2gtPmludF9md19sZW4pOworCWZ3ZS0+ZXh0ZncgPSAodTggKilmd2ggKyBsZTMyX3RvX2NwdShmd2gtPmV4dF9md19vZmZzZXQpOworCWZ3ZS0+ZXh0Zndfc2l6ZSA9IGxlMzJfdG9fY3B1KGZ3aC0+ZXh0X2Z3X2xlbik7CisKKwlmd2UtPmxvYWRlZCA9IDE7CisKKwlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZ1ZGV2LT5kZXYsCisJCSAgICJ1c2luZyBmaXJtd2FyZSAlcyAodmVyc2lvbiAlZC4lZC4lZC0lZClcbiIsCisJCSAgIGZ3ZS0+ZnduYW1lLCBmd2gtPm1ham9yLCBmd2gtPm1pbm9yLCBmd2gtPnBhdGNoLCBmd2gtPmJ1aWxkKTsKKworCWF0NzZfZGJnKERCR19ERVZTVEFSVCwgImJvYXJkICV1LCBpbnQgJWQ6JWQsIGV4dCAlZDolZCIsIGJvYXJkX3R5cGUsCisJCSBsZTMyX3RvX2NwdShmd2gtPmludF9md19vZmZzZXQpLCBsZTMyX3RvX2NwdShmd2gtPmludF9md19sZW4pLAorCQkgbGUzMl90b19jcHUoZndoLT5leHRfZndfb2Zmc2V0KSwgbGUzMl90b19jcHUoZndoLT5leHRfZndfbGVuKSk7CisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAiZmlybXdhcmUgaWQgJXMiLCBzdHIpOworCitleGl0OgorCW11dGV4X3VubG9jaygmZndfbXV0ZXgpOworCisJaWYgKGZ3ZS0+bG9hZGVkKQorCQlyZXR1cm4gZndlOworCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKKy8qIEFsbG9jYXRlIG5ldHdvcmsgZGV2aWNlIGFuZCBpbml0aWFsaXplIHByaXZhdGUgZGF0YSAqLworc3RhdGljIHN0cnVjdCBhdDc2X3ByaXYgKmF0NzZfYWxsb2NfbmV3X2RldmljZShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OworCXN0cnVjdCBhdDc2X3ByaXYgKnByaXY7CisJaW50IGk7CisKKwkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91ciBkZXZpY2Ugc3RhdGUgYW5kIGluaXRpYWxpemUgaXQgKi8KKwluZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2Yoc3RydWN0IGF0NzZfcHJpdikpOworCWlmICghbmV0ZGV2KSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZ1ZGV2LT5kZXYsICJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlwcml2LT51ZGV2ID0gdWRldjsKKwlwcml2LT5uZXRkZXYgPSBuZXRkZXY7CisKKwltdXRleF9pbml0KCZwcml2LT5tdHgpOworCUlOSVRfV09SSygmcHJpdi0+d29ya19hc3NvY19kb25lLCBhdDc2X3dvcmtfYXNzb2NfZG9uZSk7CisJSU5JVF9XT1JLKCZwcml2LT53b3JrX2pvaW4sIGF0NzZfd29ya19qb2luKTsKKwlJTklUX1dPUksoJnByaXYtPndvcmtfbmV3X2JzcywgYXQ3Nl93b3JrX25ld19ic3MpOworCUlOSVRfV09SSygmcHJpdi0+d29ya19zdGFydF9zY2FuLCBhdDc2X3dvcmtfc3RhcnRfc2Nhbik7CisJSU5JVF9XT1JLKCZwcml2LT53b3JrX3NldF9wcm9taXNjLCBhdDc2X3dvcmtfc2V0X3Byb21pc2MpOworCUlOSVRfV09SSygmcHJpdi0+d29ya19zdWJtaXRfcngsIGF0NzZfd29ya19zdWJtaXRfcngpOworCUlOSVRfREVMQVlFRF9XT1JLKCZwcml2LT5kd29ya19yZXN0YXJ0LCBhdDc2X2R3b3JrX3Jlc3RhcnQpOworCUlOSVRfREVMQVlFRF9XT1JLKCZwcml2LT5kd29ya19nZXRfc2NhbiwgYXQ3Nl9kd29ya19nZXRfc2Nhbik7CisJSU5JVF9ERUxBWUVEX1dPUksoJnByaXYtPmR3b3JrX2JlYWNvbiwgYXQ3Nl9kd29ya19iZWFjb24pOworCUlOSVRfREVMQVlFRF9XT1JLKCZwcml2LT5kd29ya19hdXRoLCBhdDc2X2R3b3JrX2F1dGgpOworCUlOSVRfREVMQVlFRF9XT1JLKCZwcml2LT5kd29ya19hc3NvYywgYXQ3Nl9kd29ya19hc3NvYyk7CisKKwlzcGluX2xvY2tfaW5pdCgmcHJpdi0+bWdtdF9zcGlubG9jayk7CisJcHJpdi0+bmV4dF9tZ210X2J1bGsgPSBOVUxMOworCXByaXYtPm1hY19zdGF0ZSA9IE1BQ19JTklUOworCisJLyogaW5pdGlhbGl6ZSBlbXB0eSBCU1MgbGlzdCAqLworCXByaXYtPmN1cnJfYnNzID0gTlVMTDsKKwlJTklUX0xJU1RfSEVBRCgmcHJpdi0+YnNzX2xpc3QpOworCXNwaW5fbG9ja19pbml0KCZwcml2LT5ic3NfbGlzdF9zcGlubG9jayk7CisKKwlpbml0X3RpbWVyKCZwcml2LT5ic3NfbGlzdF90aW1lcik7CisJcHJpdi0+YnNzX2xpc3RfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKXByaXY7CisJcHJpdi0+YnNzX2xpc3RfdGltZXIuZnVuY3Rpb24gPSBhdDc2X2Jzc19saXN0X3RpbWVvdXQ7CisKKwlzcGluX2xvY2tfaW5pdCgmcHJpdi0+c3B5X3NwaW5sb2NrKTsKKworCS8qIG1hcmsgYWxsIHJ4IGRhdGEgZW50cmllcyBhcyB1bnVzZWQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlJfUlhfREFUQV9CVUY7IGkrKykKKwkJcHJpdi0+cnhfZGF0YVtpXS5za2IgPSBOVUxMOworCisJcHJpdi0+cnhfdGFza2xldC5mdW5jID0gYXQ3Nl9yeF90YXNrbGV0OworCXByaXYtPnJ4X3Rhc2tsZXQuZGF0YSA9IDA7CisKKwlwcml2LT5wbV9tb2RlID0gQVQ3Nl9QTV9PRkY7CisJcHJpdi0+cG1fcGVyaW9kID0gMDsKKworCXJldHVybiBwcml2OworfQorCitzdGF0aWMgaW50IGF0NzZfYWxsb2NfdXJicyhzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2LAorCQkJICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50LCAqZXBfaW4sICplcF9vdXQ7CisJaW50IGk7CisJaW50IGJ1ZmZlcl9zaXplOworCXN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmlmYWNlX2Rlc2M7CisKKwlhdDc2X2RiZyhEQkdfUFJPQ19FTlRSWSwgIiVzOiBFTlRFUiIsIF9fZnVuY19fKTsKKworCWF0NzZfZGJnKERCR19VUkIsICIlczogTnVtRW5kcG9pbnRzICVkICIsIF9fZnVuY19fLAorCQkgaW50ZXJmYWNlLT5hbHRzZXR0aW5nWzBdLmRlc2MuYk51bUVuZHBvaW50cyk7CisKKwllcF9pbiA9IE5VTEw7CisJZXBfb3V0ID0gTlVMTDsKKwlpZmFjZV9kZXNjID0gaW50ZXJmYWNlLT5jdXJfYWx0c2V0dGluZzsKKwlmb3IgKGkgPSAwOyBpIDwgaWZhY2VfZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzOyBpKyspIHsKKwkJZW5kcG9pbnQgPSAmaWZhY2VfZGVzYy0+ZW5kcG9pbnRbaV0uZGVzYzsKKworCQlhdDc2X2RiZyhEQkdfVVJCLCAiJXM6ICVkLiBlbmRwb2ludDogYWRkciAweCV4IGF0dHIgMHgleCIsCisJCQkgX19mdW5jX18sIGksIGVuZHBvaW50LT5iRW5kcG9pbnRBZGRyZXNzLAorCQkJIGVuZHBvaW50LT5ibUF0dHJpYnV0ZXMpOworCisJCWlmICghZXBfaW4gJiYgdXNiX2VuZHBvaW50X2lzX2J1bGtfaW4oZW5kcG9pbnQpKQorCQkJZXBfaW4gPSBlbmRwb2ludDsKKworCQlpZiAoIWVwX291dCAmJiB1c2JfZW5kcG9pbnRfaXNfYnVsa19vdXQoZW5kcG9pbnQpKQorCQkJZXBfb3V0ID0gZW5kcG9pbnQ7CisJfQorCisJaWYgKCFlcF9pbiB8fCAhZXBfb3V0KSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZpbnRlcmZhY2UtPmRldiwKKwkJCSAgICJidWxrIGVuZHBvaW50cyBtaXNzaW5nXG4iKTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisKKwlwcml2LT5yeF9waXBlID0gdXNiX3JjdmJ1bGtwaXBlKHByaXYtPnVkZXYsIGVwX2luLT5iRW5kcG9pbnRBZGRyZXNzKTsKKwlwcml2LT50eF9waXBlID0gdXNiX3NuZGJ1bGtwaXBlKHByaXYtPnVkZXYsIGVwX291dC0+YkVuZHBvaW50QWRkcmVzcyk7CisKKwlwcml2LT5yeF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOworCXByaXYtPnR4X3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2LT5yeF91cmIgfHwgIXByaXYtPnR4X3VyYikgeworCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmaW50ZXJmYWNlLT5kZXYsICJjYW5ub3QgYWxsb2NhdGUgVVJCXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJYnVmZmVyX3NpemUgPSBzaXplb2Yoc3RydWN0IGF0NzZfdHhfYnVmZmVyKSArIE1BWF9QQURESU5HX1NJWkU7CisJcHJpdi0+YnVsa19vdXRfYnVmZmVyID0ga21hbGxvYyhidWZmZXJfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2LT5idWxrX291dF9idWZmZXIpIHsKKwkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJmludGVyZmFjZS0+ZGV2LAorCQkJICAgImNhbm5vdCBhbGxvY2F0ZSBvdXRwdXQgYnVmZmVyXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJYXQ3Nl9kYmcoREJHX1BST0NfRU5UUlksICIlczogRVhJVCIsIF9fZnVuY19fKTsKKworCXJldHVybiAwOworfQorCisvKiBSZWdpc3RlciBuZXR3b3JrIGRldmljZSBhbmQgaW5pdGlhbGl6ZSB0aGUgaGFyZHdhcmUgKi8KK3N0YXRpYyBpbnQgYXQ3Nl9pbml0X25ld19kZXZpY2Uoc3RydWN0IGF0NzZfcHJpdiAqcHJpdiwKKwkJCQlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwcml2LT5uZXRkZXY7CisJaW50IHJldDsKKworCS8qIHNldCB1cCB0aGUgZW5kcG9pbnQgaW5mb3JtYXRpb24gKi8KKwkvKiBjaGVjayBvdXQgdGhlIGVuZHBvaW50cyAqLworCisJYXQ3Nl9kYmcoREJHX0RFVlNUQVJULCAiVVNCIGludGVyZmFjZTogJWQgZW5kcG9pbnRzIiwKKwkJIGludGVyZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYk51bUVuZHBvaW50cyk7CisKKwlyZXQgPSBhdDc2X2FsbG9jX3VyYnMocHJpdiwgaW50ZXJmYWNlKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBleGl0OworCisJLyogTUFDIGFkZHJlc3MgKi8KKwlyZXQgPSBhdDc2X2dldF9od19jb25maWcocHJpdik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJmludGVyZmFjZS0+ZGV2LAorCQkJICAgImNhbm5vdCBnZXQgTUFDIGFkZHJlc3NcbiIpOworCQlnb3RvIGV4aXQ7CisJfQorCisJcHJpdi0+ZG9tYWluID0gYXQ3Nl9nZXRfcmVnX2RvbWFpbihwcml2LT5yZWd1bGF0b3J5X2RvbWFpbik7CisJLyogaW5pdC4gbmV0ZGV2LT5kZXZfYWRkciAqLworCW1lbWNweShuZXRkZXYtPmRldl9hZGRyLCBwcml2LT5tYWNfYWRkciwgRVRIX0FMRU4pOworCisJcHJpdi0+Y2hhbm5lbCA9IERFRl9DSEFOTkVMOworCXByaXYtPml3X21vZGUgPSBJV19NT0RFX0lORlJBOworCXByaXYtPnJ0c190aHJlc2hvbGQgPSBERUZfUlRTX1RIUkVTSE9MRDsKKwlwcml2LT5mcmFnX3RocmVzaG9sZCA9IERFRl9GUkFHX1RIUkVTSE9MRDsKKwlwcml2LT5zaG9ydF9yZXRyeV9saW1pdCA9IERFRl9TSE9SVF9SRVRSWV9MSU1JVDsKKwlwcml2LT50eHJhdGUgPSBUWF9SQVRFX0FVVE87CisJcHJpdi0+cHJlYW1ibGVfdHlwZSA9IFBSRUFNQkxFX1RZUEVfTE9ORzsKKwlwcml2LT5iZWFjb25fcGVyaW9kID0gMTAwOworCXByaXYtPmJlYWNvbnNfbGFzdF9xdWFsID0gamlmZmllczsKKwlwcml2LT5hdXRoX21vZGUgPSBXTEFOX0FVVEhfT1BFTjsKKwlwcml2LT5zY2FuX21pbl90aW1lID0gREVGX1NDQU5fTUlOX1RJTUU7CisJcHJpdi0+c2Nhbl9tYXhfdGltZSA9IERFRl9TQ0FOX01BWF9USU1FOworCXByaXYtPnNjYW5fbW9kZSA9IFNDQU5fVFlQRV9BQ1RJVkU7CisKKwluZXRkZXYtPmZsYWdzICY9IH5JRkZfTVVMVElDQVNUOwkvKiBub3QgeWV0IG9yIG5ldmVyICovCisJbmV0ZGV2LT5vcGVuID0gYXQ3Nl9vcGVuOworCW5ldGRldi0+c3RvcCA9IGF0NzZfc3RvcDsKKwluZXRkZXYtPmdldF9zdGF0cyA9IGF0NzZfZ2V0X3N0YXRzOworCW5ldGRldi0+ZXRodG9vbF9vcHMgPSAmYXQ3Nl9ldGh0b29sX29wczsKKworCS8qIEFkZCBwb2ludGVycyB0byBlbmFibGUgaXdzcHkgc3VwcG9ydC4gKi8KKwlwcml2LT53aXJlbGVzc19kYXRhLnNweV9kYXRhID0gJnByaXYtPnNweV9kYXRhOworCW5ldGRldi0+d2lyZWxlc3NfZGF0YSA9ICZwcml2LT53aXJlbGVzc19kYXRhOworCisJbmV0ZGV2LT5oYXJkX3N0YXJ0X3htaXQgPSBhdDc2X3R4OworCW5ldGRldi0+dHhfdGltZW91dCA9IGF0NzZfdHhfdGltZW91dDsKKwluZXRkZXYtPndhdGNoZG9nX3RpbWVvID0gMiAqIEhaOworCW5ldGRldi0+d2lyZWxlc3NfaGFuZGxlcnMgPSAmYXQ3Nl9oYW5kbGVyX2RlZjsKKwluZXRkZXYtPnNldF9tdWx0aWNhc3RfbGlzdCA9IGF0NzZfc2V0X211bHRpY2FzdDsKKwluZXRkZXYtPnNldF9tYWNfYWRkcmVzcyA9IGF0NzZfc2V0X21hY19hZGRyZXNzOworCWRldl9hbGxvY19uYW1lKG5ldGRldiwgIndsYW4lZCIpOworCisJcmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KHByaXYtPm5ldGRldik7CisJaWYgKHJldCkgeworCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmaW50ZXJmYWNlLT5kZXYsCisJCQkgICAiY2Fubm90IHJlZ2lzdGVyIG5ldGRldmljZSAoc3RhdHVzICVkKSFcbiIsIHJldCk7CisJCWdvdG8gZXhpdDsKKwl9CisJcHJpdi0+bmV0ZGV2X3JlZ2lzdGVyZWQgPSAxOworCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IFVTQiAlcywgTUFDICVzLCBmaXJtd2FyZSAlZC4lZC4lZC0lZFxuIiwKKwkgICAgICAgbmV0ZGV2LT5uYW1lLCBpbnRlcmZhY2UtPmRldi5idXNfaWQsIG1hYzJzdHIocHJpdi0+bWFjX2FkZHIpLAorCSAgICAgICBwcml2LT5md192ZXJzaW9uLm1ham9yLCBwcml2LT5md192ZXJzaW9uLm1pbm9yLAorCSAgICAgICBwcml2LT5md192ZXJzaW9uLnBhdGNoLCBwcml2LT5md192ZXJzaW9uLmJ1aWxkKTsKKwlwcmludGsoS0VSTl9JTkZPICIlczogcmVndWxhdG9yeSBkb21haW4gMHglMDJ4OiAlc1xuIiwgbmV0ZGV2LT5uYW1lLAorCSAgICAgICBwcml2LT5yZWd1bGF0b3J5X2RvbWFpbiwgcHJpdi0+ZG9tYWluLT5uYW1lKTsKKworCS8qIHdlIGxldCB0aGlzIHRpbWVyIHJ1biB0aGUgd2hvbGUgdGltZSB0aGlzIGRyaXZlciBpbnN0YW5jZSBsaXZlcyAqLworCW1vZF90aW1lcigmcHJpdi0+YnNzX2xpc3RfdGltZXIsIGppZmZpZXMgKyBCU1NfTElTVF9USU1FT1VUKTsKKworZXhpdDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBhdDc2X2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGF0NzZfcHJpdiAqcHJpdikKK3sKKwlpbnQgaTsKKworCWF0NzZfZGJnKERCR19QUk9DX0VOVFJZLCAiJXM6IEVOVEVSIiwgX19mdW5jX18pOworCisJLyogVGhlIGRldmljZSBpcyBnb25lLCBkb24ndCBib3RoZXIgdHVybmluZyBpdCBvZmYgKi8KKwlwcml2LT5kZXZpY2VfdW5wbHVnZ2VkID0gMTsKKworCWlmIChwcml2LT5uZXRkZXZfcmVnaXN0ZXJlZCkKKwkJdW5yZWdpc3Rlcl9uZXRkZXYocHJpdi0+bmV0ZGV2KTsKKworCS8qIGFzc3VtaW5nIHdlIHVzZWQga2V2ZW50ZCwgaXQgbXVzdCBxdWllc2NlIHRvbyAqLworCWZsdXNoX3NjaGVkdWxlZF93b3JrKCk7CisKKwlrZnJlZShwcml2LT5idWxrX291dF9idWZmZXIpOworCisJaWYgKHByaXYtPnR4X3VyYikgeworCQl1c2Jfa2lsbF91cmIocHJpdi0+dHhfdXJiKTsKKwkJdXNiX2ZyZWVfdXJiKHByaXYtPnR4X3VyYik7CisJfQorCWlmIChwcml2LT5yeF91cmIpIHsKKwkJdXNiX2tpbGxfdXJiKHByaXYtPnJ4X3VyYik7CisJCXVzYl9mcmVlX3VyYihwcml2LT5yeF91cmIpOworCX0KKworCWF0NzZfZGJnKERCR19QUk9DX0VOVFJZLCAiJXM6IHVubGlua2VkIHVyYnMiLCBfX2Z1bmNfXyk7CisKKwlpZiAocHJpdi0+cnhfc2tiKQorCQlrZnJlZV9za2IocHJpdi0+cnhfc2tiKTsKKworCWF0NzZfZnJlZV9ic3NfbGlzdChwcml2KTsKKwlkZWxfdGltZXJfc3luYygmcHJpdi0+YnNzX2xpc3RfdGltZXIpOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2dldF9zY2FuKTsKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwcml2LT5kd29ya19iZWFjb24pOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2F1dGgpOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnByaXYtPmR3b3JrX2Fzc29jKTsKKworCWlmIChwcml2LT5tYWNfc3RhdGUgPT0gTUFDX0NPTk5FQ1RFRCkKKwkJYXQ3Nl9pd2V2ZW50X2Jzc19kaXNjb25uZWN0KHByaXYtPm5ldGRldik7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlJfUlhfREFUQV9CVUY7IGkrKykKKwkJaWYgKHByaXYtPnJ4X2RhdGFbaV0uc2tiKSB7CisJCQlkZXZfa2ZyZWVfc2tiKHByaXYtPnJ4X2RhdGFbaV0uc2tiKTsKKwkJCXByaXYtPnJ4X2RhdGFbaV0uc2tiID0gTlVMTDsKKwkJfQorCXVzYl9wdXRfZGV2KHByaXYtPnVkZXYpOworCisJYXQ3Nl9kYmcoREJHX1BST0NfRU5UUlksICIlczogYmVmb3JlIGZyZWVpbmcgcHJpdi9uZXRkZXYiLCBfX2Z1bmNfXyk7CisJZnJlZV9uZXRkZXYocHJpdi0+bmV0ZGV2KTsJLyogcHJpdiBpcyBpbiBuZXRkZXYgKi8KKworCWF0NzZfZGJnKERCR19QUk9DX0VOVFJZLCAiJXM6IEVYSVQiLCBfX2Z1bmNfXyk7Cit9CisKK3N0YXRpYyBpbnQgYXQ3Nl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2OworCXN0cnVjdCBmd2VudHJ5ICpmd2U7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7CisJaW50IG9wX21vZGU7CisJaW50IG5lZWRfZXh0X2Z3ID0gMDsKKwlzdHJ1Y3QgbWliX2Z3X3ZlcnNpb24gZnd2OworCWludCBib2FyZF90eXBlID0gKGludClpZC0+ZHJpdmVyX2luZm87CisKKwl1ZGV2ID0gdXNiX2dldF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpKTsKKworCS8qIExvYWQgZmlybXdhcmUgaW50byBrZXJuZWwgbWVtb3J5ICovCisJZndlID0gYXQ3Nl9sb2FkX2Zpcm13YXJlKHVkZXYsIGJvYXJkX3R5cGUpOworCWlmICghZndlKSB7CisJCXJldCA9IC1FTk9FTlQ7CisJCWdvdG8gZXJyb3I7CisJfQorCisJb3BfbW9kZSA9IGF0NzZfZ2V0X29wX21vZGUodWRldik7CisKKwlhdDc2X2RiZyhEQkdfREVWU1RBUlQsICJvcG1vZGUgJWQiLCBvcF9tb2RlKTsKKworCS8qIHdlIGdldCBPUE1PREVfTk9ORSB3aXRoIDIuNC4yMywgU01DMjY2MlctQVIgPz8/CisJICAgd2UgZ2V0IDIwNCB3aXRoIDIuNC4yMywgRmliZXJsaW5lIEZMLVdMMjQwdSAoNTA1QStSRk1EMjk1OCkgPz8/ICovCisKKwlpZiAob3BfbW9kZSA9PSBPUE1PREVfSFdfQ09ORklHX01PREUpIHsKKwkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJmludGVyZmFjZS0+ZGV2LAorCQkJICAgImNhbm5vdCBoYW5kbGUgYSBkZXZpY2UgaW4gSFdfQ09ORklHX01PREVcbiIpOworCQlyZXQgPSAtRUJVU1k7CisJCWdvdG8gZXJyb3I7CisJfQorCisJaWYgKG9wX21vZGUgIT0gT1BNT0RFX05PUk1BTF9OSUNfV0lUSF9GTEFTSAorCSAgICAmJiBvcF9tb2RlICE9IE9QTU9ERV9OT1JNQUxfTklDX1dJVEhPVVRfRkxBU0gpIHsKKwkJLyogZG93bmxvYWQgaW50ZXJuYWwgZmlybXdhcmUgcGFydCAqLworCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZpbnRlcmZhY2UtPmRldiwKKwkJCSAgICJkb3dubG9hZGluZyBpbnRlcm5hbCBmaXJtd2FyZVxuIik7CisJCXJldCA9IGF0NzZfbG9hZF9pbnRlcm5hbF9mdyh1ZGV2LCBmd2UpOworCQlpZiAocmV0IDwgMCkgeworCQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJmludGVyZmFjZS0+ZGV2LAorCQkJCSAgICJlcnJvciAlZCBkb3dubG9hZGluZyBpbnRlcm5hbCBmaXJtd2FyZVxuIiwKKwkJCQkgICByZXQpOworCQkJZ290byBlcnJvcjsKKwkJfQorCQl1c2JfcHV0X2Rldih1ZGV2KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBJbnRlcm5hbCBmaXJtd2FyZSBhbHJlYWR5IGluc2lkZSB0aGUgZGV2aWNlLiAgR2V0IGZpcm13YXJlCisJICogdmVyc2lvbiB0byB0ZXN0IGlmIGV4dGVybmFsIGZpcm13YXJlIGlzIGxvYWRlZC4KKwkgKiBUaGlzIHdvcmtzIG9ubHkgZm9yIG5ld2VyIGZpcm13YXJlLCBlLmcuIHRoZSBJbnRlcnNpbCAwLjkwLngKKwkgKiBzYXlzICJjb250cm9sIHRpbWVvdXQgb24gZXAwaW4iIGFuZCBzdWJzZXF1ZW50CisJICogYXQ3Nl9nZXRfb3BfbW9kZSgpIGZhaWwgdG9vIDotKCAqLworCisJLyogaWYgdmVyc2lvbiA+PSAwLjEwMC54Lnkgb3IgZGV2aWNlIHdpdGggYnVpbHQtaW4gZmxhc2ggd2UgY2FuCisJICogcXVlcnkgdGhlIGRldmljZSBmb3IgdGhlIGZ3IHZlcnNpb24gKi8KKwlpZiAoKGZ3ZS0+ZndfdmVyc2lvbi5tYWpvciA+IDAgfHwgZndlLT5md192ZXJzaW9uLm1pbm9yID49IDEwMCkKKwkgICAgfHwgKG9wX21vZGUgPT0gT1BNT0RFX05PUk1BTF9OSUNfV0lUSF9GTEFTSCkpIHsKKwkJcmV0ID0gYXQ3Nl9nZXRfbWliKHVkZXYsIE1JQl9GV19WRVJTSU9OLCAmZnd2LCBzaXplb2YoZnd2KSk7CisJCWlmIChyZXQgPCAwIHx8IChmd3YubWFqb3IgfCBmd3YubWlub3IpID09IDApCisJCQluZWVkX2V4dF9mdyA9IDE7CisJfSBlbHNlCisJCS8qIE5vIHdheSB0byBjaGVjayBmaXJtd2FyZSB2ZXJzaW9uLCByZWxvYWQgdG8gYmUgc3VyZSAqLworCQluZWVkX2V4dF9mdyA9IDE7CisKKwlpZiAobmVlZF9leHRfZncpIHsKKwkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmaW50ZXJmYWNlLT5kZXYsCisJCQkgICAiZG93bmxvYWRpbmcgZXh0ZXJuYWwgZmlybXdhcmVcbiIpOworCisJCXJldCA9IGF0NzZfbG9hZF9leHRlcm5hbF9mdyh1ZGV2LCBmd2UpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcjsKKworCQkvKiBSZS1jaGVjayBmaXJtd2FyZSB2ZXJzaW9uICovCisJCXJldCA9IGF0NzZfZ2V0X21pYih1ZGV2LCBNSUJfRldfVkVSU0lPTiwgJmZ3diwgc2l6ZW9mKGZ3dikpOworCQlpZiAocmV0IDwgMCkgeworCQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJmludGVyZmFjZS0+ZGV2LAorCQkJCSAgICJlcnJvciAlZCBnZXR0aW5nIGZpcm13YXJlIHZlcnNpb25cbiIsIHJldCk7CisJCQlnb3RvIGVycm9yOworCQl9CisJfQorCisJcHJpdiA9IGF0NzZfYWxsb2NfbmV3X2RldmljZSh1ZGV2KTsKKwlpZiAoIXByaXYpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwlTRVRfTkVUREVWX0RFVihwcml2LT5uZXRkZXYsICZpbnRlcmZhY2UtPmRldik7CisJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIHByaXYpOworCisJbWVtY3B5KCZwcml2LT5md192ZXJzaW9uLCAmZnd2LCBzaXplb2Yoc3RydWN0IG1pYl9md192ZXJzaW9uKSk7CisJcHJpdi0+Ym9hcmRfdHlwZSA9IGJvYXJkX3R5cGU7CisKKwlyZXQgPSBhdDc2X2luaXRfbmV3X2RldmljZShwcml2LCBpbnRlcmZhY2UpOworCWlmIChyZXQgPCAwKQorCQlhdDc2X2RlbGV0ZV9kZXZpY2UocHJpdik7CisKKwlyZXR1cm4gcmV0OworCitlcnJvcjoKKwl1c2JfcHV0X2Rldih1ZGV2KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBhdDc2X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3QgYXQ3Nl9wcml2ICpwcml2OworCisJcHJpdiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTsKKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7CisKKwkvKiBEaXNjb25uZWN0IGFmdGVyIGxvYWRpbmcgaW50ZXJuYWwgZmlybXdhcmUgKi8KKwlpZiAoIXByaXYpCisJCXJldHVybjsKKworCXByaW50ayhLRVJOX0lORk8gIiVzOiBkaXNjb25uZWN0aW5nXG4iLCBwcml2LT5uZXRkZXYtPm5hbWUpOworCWF0NzZfZGVsZXRlX2RldmljZShwcml2KTsKKwlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJmludGVyZmFjZS0+ZGV2LCAiZGlzY29ubmVjdGVkXG4iKTsKK30KKworLyogU3RydWN0dXJlIGZvciByZWdpc3RlcmluZyB0aGlzIGRyaXZlciB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtICovCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXQ3Nl9kcml2ZXIgPSB7CisJLm5hbWUgPSBEUklWRVJfTkFNRSwKKwkucHJvYmUgPSBhdDc2X3Byb2JlLAorCS5kaXNjb25uZWN0ID0gYXQ3Nl9kaXNjb25uZWN0LAorCS5pZF90YWJsZSA9IGRldl90YWJsZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGF0NzZfbW9kX2luaXQodm9pZCkKK3sKKwlpbnQgcmVzdWx0OworCisJcHJpbnRrKEtFUk5fSU5GTyBEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04gIiBsb2FkaW5nXG4iKTsKKworCW11dGV4X2luaXQoJmZ3X211dGV4KTsKKworCS8qIHJlZ2lzdGVyIHRoaXMgZHJpdmVyIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gKi8KKwlyZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJmF0NzZfZHJpdmVyKTsKKwlpZiAocmVzdWx0IDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSIERSSVZFUl9OQU1FCisJCSAgICAgICAiOiB1c2JfcmVnaXN0ZXIgZmFpbGVkIChzdGF0dXMgJWQpXG4iLCByZXN1bHQpOworCisJbGVkX3RyaWdnZXJfcmVnaXN0ZXJfc2ltcGxlKCJhdDc2X3VzYi10eCIsICZsZWR0cmlnX3R4KTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgYXQ3Nl9tb2RfZXhpdCh2b2lkKQoreworCWludCBpOworCisJcHJpbnRrKEtFUk5fSU5GTyBEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04gIiB1bmxvYWRpbmdcbiIpOworCXVzYl9kZXJlZ2lzdGVyKCZhdDc2X2RyaXZlcik7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmlybXdhcmVzKTsgaSsrKSB7CisJCWlmIChmaXJtd2FyZXNbaV0uZncpCisJCQlyZWxlYXNlX2Zpcm13YXJlKGZpcm13YXJlc1tpXS5mdyk7CisJfQorCWxlZF90cmlnZ2VyX3VucmVnaXN0ZXJfc2ltcGxlKGxlZHRyaWdfdHgpOworfQorCittb2R1bGVfcGFyYW1fbmFtZWQoZGVidWcsIGF0NzZfZGVidWcsIGludCwgMDYwMCk7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRGVidWdnaW5nIGxldmVsIik7CisKK21vZHVsZV9pbml0KGF0NzZfbW9kX2luaXQpOworbW9kdWxlX2V4aXQoYXQ3Nl9tb2RfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIk9saXZlciBLdXJ0aCA8b2t1QG1hc3FtYWlsLmN4PiIpOworTU9EVUxFX0FVVEhPUigiSm9lcmcgQWxiZXJ0IDxqb2VyZy5hbGJlcnRAZ214LmRlPiIpOworTU9EVUxFX0FVVEhPUigiQWxleCA8YWxleEBmb29nb2QuY29tPiIpOworTU9EVUxFX0FVVEhPUigiTmljayBKb25lcyIpOworTU9EVUxFX0FVVEhPUigiQmFsaW50IFNlZWJlciA8bjBfNXA0bV9wMTM0NTNAaG90bWFpbC5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9hdDc2X3VzYi5oIGIvZHJpdmVycy9zdGFnaW5nL2F0NzZfdXNiL2F0NzZfdXNiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIwYmU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdDc2X3VzYi9hdDc2X3VzYi5oCkBAIC0wLDAgKzEsNjE5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDMgT2xpdmVyIEt1cnRoCisgKgkgICAgIChjKSAyMDAzLDIwMDQgSm9lcmcgQWxiZXJ0IDxqb2VyZy5hbGJlcnRAZ214LmRlPgorICoJICAgICAoYykgMjAwNyBHdWlkbyBHdWVudGhlciA8YWd4QHNpZ3hjcHUub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBkcml2ZXIgd2FzIGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFNvdXJjZWZvcmdlIGRyaXZlcgorICogcmVsZWFzZWQgYW5kIG1haW50YWluZWQgYnkgQXRtZWw6CisgKgorICogIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvYXRtZWx3bGFuZHJpdmVyLworICoKKyAqIEFsdGhvdWdoIHRoZSBjb2RlIHdhcyBjb21wbGV0ZWx5IHJlLXdyaXR0ZW4sCisgKiBpdCB3b3VsZCBoYXZlIGJlZW4gaW1wb3NzaWJsZSB3aXRob3V0IEF0bWVsJ3MgZGVjaXNpb24gdG8KKyAqIHJlbGVhc2UgYW4gT3BlbiBTb3VyY2UgZHJpdmVyICh1bmZvcnR1bmF0ZWx5IHRoZSBmaXJtd2FyZSB3YXMKKyAqIGtlcHQgYmluYXJ5IG9ubHkpLiBUaGFua3MgZm9yIHRoYXQgZGVjaXNpb24gdG8gQXRtZWwhCisgKi8KKworI2lmbmRlZiBfQVQ3Nl9VU0JfSAorI2RlZmluZSBfQVQ3Nl9VU0JfSAorCisvKiBCb2FyZCB0eXBlcyAqLworZW51bSBib2FyZF90eXBlIHsKKwlCT0FSRF81MDNfSVNMMzg2MSA9IDEsCisJQk9BUkRfNTAzX0lTTDM4NjMgPSAyLAorCUJPQVJEXzUwMyA9IDMsCisJQk9BUkRfNTAzX0FDQyA9IDQsCisJQk9BUkRfNTA1ID0gNSwKKwlCT0FSRF81MDVfMjk1OCA9IDYsCisJQk9BUkRfNTA1QSA9IDcsCisJQk9BUkRfNTA1QU1YID0gOAorfTsKKworLyogb3VyIHByaXZhdGUgaW9jdGwncyAqLworLyogcHJlYW1ibGUgbGVuZ3RoICgwIC0gbG9uZywgMSAtIHNob3J0LCAyIC0gYXV0bykgKi8KKyNkZWZpbmUgQVQ3Nl9TRVRfU0hPUlRfUFJFQU1CTEUJCShTSU9DSVdGSVJTVFBSSVYgKyAwKQorI2RlZmluZSBBVDc2X0dFVF9TSE9SVF9QUkVBTUJMRQkJKFNJT0NJV0ZJUlNUUFJJViArIDEpCisvKiB3aGljaCBkZWJ1ZyBjaGFubmVscyBhcmUgZW5hYmxlZCAqLworI2RlZmluZSBBVDc2X1NFVF9ERUJVRwkJCShTSU9DSVdGSVJTVFBSSVYgKyAyKQorI2RlZmluZSBBVDc2X0dFVF9ERUJVRwkJCShTSU9DSVdGSVJTVFBSSVYgKyAzKQorLyogcG93ZXIgc2F2ZSBtb2RlIChpbmNsLiB0aGUgQXRtZWwgcHJvcHJpZXRhcnkgc21hcnQgc2F2ZSBtb2RlKSAqLworI2RlZmluZSBBVDc2X1NFVF9QT1dFUlNBVkVfTU9ERQkJKFNJT0NJV0ZJUlNUUFJJViArIDQpCisjZGVmaW5lIEFUNzZfR0VUX1BPV0VSU0FWRV9NT0RFCQkoU0lPQ0lXRklSU1RQUklWICsgNSkKKy8qIG1pbiBhbmQgbWF4IGNoYW5uZWwgdGltZXMgZm9yIHNjYW4gKi8KKyNkZWZpbmUgQVQ3Nl9TRVRfU0NBTl9USU1FUwkJKFNJT0NJV0ZJUlNUUFJJViArIDYpCisjZGVmaW5lIEFUNzZfR0VUX1NDQU5fVElNRVMJCShTSU9DSVdGSVJTVFBSSVYgKyA3KQorLyogc2NhbiBtb2RlICgwIC0gYWN0aXZlLCAxIC0gcGFzc2l2ZSkgKi8KKyNkZWZpbmUgQVQ3Nl9TRVRfU0NBTl9NT0RFCQkoU0lPQ0lXRklSU1RQUklWICsgOCkKKyNkZWZpbmUgQVQ3Nl9HRVRfU0NBTl9NT0RFCQkoU0lPQ0lXRklSU1RQUklWICsgOSkKKworI2RlZmluZSBDTURfU1RBVFVTX0lETEUJCQkJMHgwMAorI2RlZmluZSBDTURfU1RBVFVTX0NPTVBMRVRFCQkJMHgwMQorI2RlZmluZSBDTURfU1RBVFVTX1VOS05PV04JCQkweDAyCisjZGVmaW5lIENNRF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIJCTB4MDMKKyNkZWZpbmUgQ01EX1NUQVRVU19GVU5DVElPTl9OT1RfU1VQUE9SVEVECTB4MDQKKyNkZWZpbmUgQ01EX1NUQVRVU19USU1FX09VVAkJCTB4MDcKKyNkZWZpbmUgQ01EX1NUQVRVU19JTl9QUk9HUkVTUwkJCTB4MDgKKyNkZWZpbmUgQ01EX1NUQVRVU19IT1NUX0ZBSUxVUkUJCQkweGZmCisjZGVmaW5lIENNRF9TVEFUVVNfU0NBTl9GQUlMRUQJCQkweGYwCisKKy8qIGFuc3dlcnMgdG8gZ2V0IG9wIG1vZGUgKi8KKyNkZWZpbmUgT1BNT0RFX05PTkUJCQkJMHgwMAorI2RlZmluZSBPUE1PREVfTk9STUFMX05JQ19XSVRIX0ZMQVNICQkweDAxCisjZGVmaW5lIE9QTU9ERV9IV19DT05GSUdfTU9ERQkJCTB4MDIKKyNkZWZpbmUgT1BNT0RFX0RGVV9NT0RFX1dJVEhfRkxBU0gJCTB4MDMKKyNkZWZpbmUgT1BNT0RFX05PUk1BTF9OSUNfV0lUSE9VVF9GTEFTSAkJMHgwNAorCisjZGVmaW5lIENNRF9TRVRfTUlCCQkweDAxCisjZGVmaW5lIENNRF9HRVRfTUlCCQkweDAyCisjZGVmaW5lIENNRF9TQ0FOCQkweDAzCisjZGVmaW5lIENNRF9KT0lOCQkweDA0CisjZGVmaW5lIENNRF9TVEFSVF9JQlNTCQkweDA1CisjZGVmaW5lIENNRF9SQURJT19PTgkJMHgwNgorI2RlZmluZSBDTURfUkFESU9fT0ZGCQkweDA3CisjZGVmaW5lIENNRF9TVEFSVFVQCQkweDBCCisKKyNkZWZpbmUgTUlCX0xPQ0FMCQkweDAxCisjZGVmaW5lIE1JQl9NQUNfQUREUgkJMHgwMgorI2RlZmluZSBNSUJfTUFDCQkJMHgwMworI2RlZmluZSBNSUJfTUFDX01HTVQJCTB4MDUKKyNkZWZpbmUgTUlCX01BQ19XRVAJCTB4MDYKKyNkZWZpbmUgTUlCX1BIWQkJCTB4MDcKKyNkZWZpbmUgTUlCX0ZXX1ZFUlNJT04JCTB4MDgKKyNkZWZpbmUgTUlCX01ET01BSU4JCTB4MDkKKworI2RlZmluZSBBREhPQ19NT0RFCQkxCisjZGVmaW5lIElORlJBU1RSVUNUVVJFX01PREUJMgorCisvKiB2YWx1ZXMgZm9yIHN0cnVjdCBtaWJfbG9jYWwsIGZpZWxkIHByZWFtYmxlX3R5cGUgKi8KKyNkZWZpbmUgUFJFQU1CTEVfVFlQRV9MT05HCTAKKyNkZWZpbmUgUFJFQU1CTEVfVFlQRV9TSE9SVAkxCisjZGVmaW5lIFBSRUFNQkxFX1RZUEVfQVVUTwkyCisKKy8qIHZhbHVlcyBmb3IgdHhfcmF0ZSAqLworI2RlZmluZSBUWF9SQVRFXzFNQklUCQkwCisjZGVmaW5lIFRYX1JBVEVfMk1CSVQJCTEKKyNkZWZpbmUgVFhfUkFURV81XzVNQklUIAkyCisjZGVmaW5lIFRYX1JBVEVfMTFNQklUCQkzCisjZGVmaW5lIFRYX1JBVEVfQVVUTwkJNAorCisvKiBwb3dlciBtYW5hZ2VtZW50IG1vZGVzICovCisjZGVmaW5lIEFUNzZfUE1fT0ZGCQkxCisjZGVmaW5lIEFUNzZfUE1fT04JCTIKKyNkZWZpbmUgQVQ3Nl9QTV9TTUFSVAkJMworCitzdHJ1Y3QgaHdjZmdfcjUwNSB7CisJdTggY3IzOV92YWx1ZXNbMTRdOworCXU4IHJlc2VydmVkMVsxNF07CisJdTggYmJfY3JbMTRdOworCXU4IHBpZHZpZFs0XTsKKwl1OCBtYWNfYWRkcltFVEhfQUxFTl07CisJdTggcmVndWxhdG9yeV9kb21haW47CisJdTggcmVzZXJ2ZWQyWzE0XTsKKwl1OCBjcjE1X3ZhbHVlc1sxNF07CisJdTggcmVzZXJ2ZWQzWzNdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGh3Y2ZnX3JmbWQgeworCXU4IGNyMjBfdmFsdWVzWzE0XTsKKwl1OCBjcjIxX3ZhbHVlc1sxNF07CisJdTggYmJfY3JbMTRdOworCXU4IHBpZHZpZFs0XTsKKwl1OCBtYWNfYWRkcltFVEhfQUxFTl07CisJdTggcmVndWxhdG9yeV9kb21haW47CisJdTggbG93X3Bvd2VyX3ZhbHVlc1sxNF07CisJdTggbm9ybWFsX3Bvd2VyX3ZhbHVlc1sxNF07CisJdTggcmVzZXJ2ZWQxWzNdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGh3Y2ZnX2ludGVyc2lsIHsKKwl1OCBtYWNfYWRkcltFVEhfQUxFTl07CisJdTggY3IzMV92YWx1ZXNbMTRdOworCXU4IGNyNThfdmFsdWVzWzE0XTsKKwl1OCBwaWR2aWRbNF07CisJdTggcmVndWxhdG9yeV9kb21haW47CisJdTggcmVzZXJ2ZWRbMV07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCit1bmlvbiBhdDc2X2h3Y2ZnIHsKKwlzdHJ1Y3QgaHdjZmdfaW50ZXJzaWwgaTsKKwlzdHJ1Y3QgaHdjZmdfcmZtZCByMzsKKwlzdHJ1Y3QgaHdjZmdfcjUwNSByNTsKK307CisKKyNkZWZpbmUgV0VQX1NNQUxMX0tFWV9MRU4JKDQwIC8gOCkKKyNkZWZpbmUgV0VQX0xBUkdFX0tFWV9MRU4JKDEwNCAvIDgpCisKK3N0cnVjdCBhdDc2X2NhcmRfY29uZmlnIHsKKwl1OCBleGNsdWRlX3VuZW5jcnlwdGVkOworCXU4IHByb21pc2N1b3VzX21vZGU7CisJdTggc2hvcnRfcmV0cnlfbGltaXQ7CisJdTggZW5jcnlwdGlvbl90eXBlOworCV9fbGUxNiBydHNfdGhyZXNob2xkOworCV9fbGUxNiBmcmFnbWVudGF0aW9uX3RocmVzaG9sZDsJLyogMjU2Li4yMzQ2ICovCisJdTggYmFzaWNfcmF0ZV9zZXRbNF07CisJdTggYXV0b19yYXRlX2ZhbGxiYWNrOwkvKiAwLDEgKi8KKwl1OCBjaGFubmVsOworCXU4IHByaXZhY3lfaW52b2tlZDsKKwl1OCB3ZXBfZGVmYXVsdF9rZXlfaWQ7CS8qIDAuLjMgKi8KKwl1OCBjdXJyZW50X3NzaWRbMzJdOworCXU4IHdlcF9kZWZhdWx0X2tleV92YWx1ZVs0XVtXRVBfS0VZX0xFTl07CisJdTggc3NpZF9sZW47CisJdTggc2hvcnRfcHJlYW1ibGU7CisJX19sZTE2IGJlYWNvbl9wZXJpb2Q7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYXQ3Nl9jb21tYW5kIHsKKwl1OCBjbWQ7CisJdTggcmVzZXJ2ZWQ7CisJX19sZTE2IHNpemU7CisJdTggZGF0YVswXTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qIExlbmd0aCBvZiBBdG1lbC1zcGVjaWZpYyBSeCBoZWFkZXIgYmVmb3JlIDgwMi4xMSBmcmFtZSAqLworI2RlZmluZSBBVDc2X1JYX0hEUkxFTiBvZmZzZXRvZihzdHJ1Y3QgYXQ3Nl9yeF9idWZmZXIsIHBhY2tldCkKKworc3RydWN0IGF0NzZfcnhfYnVmZmVyIHsKKwlfX2xlMTYgd2xlbmd0aDsKKwl1OCByeF9yYXRlOworCXU4IG5ld2JzczsKKwl1OCBmcmFnbWVudGF0aW9uOworCXU4IHJzc2k7CisJdTggbGlua19xdWFsaXR5OworCXU4IG5vaXNlX2xldmVsOworCV9fbGUzMiByeF90aW1lOworCXU4IHBhY2tldFtJRUVFODAyMTFfRlJBTUVfTEVOICsgSUVFRTgwMjExX0ZDU19MRU5dOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworLyogTGVuZ3RoIG9mIEF0bWVsLXNwZWNpZmljIFR4IGhlYWRlciBiZWZvcmUgODAyLjExIGZyYW1lICovCisjZGVmaW5lIEFUNzZfVFhfSERSTEVOIG9mZnNldG9mKHN0cnVjdCBhdDc2X3R4X2J1ZmZlciwgcGFja2V0KQorCitzdHJ1Y3QgYXQ3Nl90eF9idWZmZXIgeworCV9fbGUxNiB3bGVuZ3RoOworCXU4IHR4X3JhdGU7CisJdTggcGFkZGluZzsKKwl1OCByZXNlcnZlZFs0XTsKKwl1OCBwYWNrZXRbSUVFRTgwMjExX0ZSQU1FX0xFTiArIElFRUU4MDIxMV9GQ1NfTEVOXTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qIGRlZmluZXMgZm9yIHNjYW5fdHlwZSBiZWxvdyAqLworI2RlZmluZSBTQ0FOX1RZUEVfQUNUSVZFCTAKKyNkZWZpbmUgU0NBTl9UWVBFX1BBU1NJVkUJMQorCitzdHJ1Y3QgYXQ3Nl9yZXFfc2NhbiB7CisJdTggYnNzaWRbRVRIX0FMRU5dOworCXU4IGVzc2lkWzMyXTsKKwl1OCBzY2FuX3R5cGU7CisJdTggY2hhbm5lbDsKKwlfX2xlMTYgcHJvYmVfZGVsYXk7CisJX19sZTE2IG1pbl9jaGFubmVsX3RpbWU7CisJX19sZTE2IG1heF9jaGFubmVsX3RpbWU7CisJdTggZXNzaWRfc2l6ZTsKKwl1OCBpbnRlcm5hdGlvbmFsX3NjYW47Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYXQ3Nl9yZXFfaWJzcyB7CisJdTggYnNzaWRbRVRIX0FMRU5dOworCXU4IGVzc2lkWzMyXTsKKwl1OCBic3NfdHlwZTsKKwl1OCBjaGFubmVsOworCXU4IGVzc2lkX3NpemU7CisJdTggcmVzZXJ2ZWRbM107Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYXQ3Nl9yZXFfam9pbiB7CisJdTggYnNzaWRbRVRIX0FMRU5dOworCXU4IGVzc2lkWzMyXTsKKwl1OCBic3NfdHlwZTsKKwl1OCBjaGFubmVsOworCV9fbGUxNiB0aW1lb3V0OworCXU4IGVzc2lkX3NpemU7CisJdTggcmVzZXJ2ZWQ7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3Qgc2V0X21pYl9idWZmZXIgeworCXU4IHR5cGU7CisJdTggc2l6ZTsKKwl1OCBpbmRleDsKKwl1OCByZXNlcnZlZDsKKwl1bmlvbiB7CisJCXU4IGJ5dGU7CisJCV9fbGUxNiB3b3JkOworCQl1OCBhZGRyW0VUSF9BTEVOXTsKKwl9IGRhdGE7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX2xvY2FsIHsKKwl1MTYgcmVzZXJ2ZWQwOworCXU4IGJlYWNvbl9lbmFibGU7CisJdTggdHhhdXRvcmF0ZV9mYWxsYmFjazsKKwl1OCByZXNlcnZlZDE7CisJdTggc3NpZF9zaXplOworCXU4IHByb21pc2N1b3VzX21vZGU7CisJdTE2IHJlc2VydmVkMjsKKwl1OCBwcmVhbWJsZV90eXBlOworCXUxNiByZXNlcnZlZDM7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX21hY19hZGRyIHsKKwl1OCBtYWNfYWRkcltFVEhfQUxFTl07CisJdTggcmVzWzJdOwkJLyogPz8/ICovCisJdTggZ3JvdXBfYWRkcls0XVtFVEhfQUxFTl07CisJdTggZ3JvdXBfYWRkcl9zdGF0dXNbNF07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX21hYyB7CisJX19sZTMyIG1heF90eF9tc2R1X2xpZmV0aW1lOworCV9fbGUzMiBtYXhfcnhfbGlmZXRpbWU7CisJX19sZTE2IGZyYWdfdGhyZXNob2xkOworCV9fbGUxNiBydHNfdGhyZXNob2xkOworCV9fbGUxNiBjd21pbjsKKwlfX2xlMTYgY3dtYXg7CisJdTggc2hvcnRfcmV0cnlfdGltZTsKKwl1OCBsb25nX3JldHJ5X3RpbWU7CisJdTggc2Nhbl90eXBlOwkJLyogYWN0aXZlIG9yIHBhc3NpdmUgKi8KKwl1OCBzY2FuX2NoYW5uZWw7CisJX19sZTE2IHByb2JlX2RlbGF5OwkvKiBkZWxheSBiZWZvcmUgUHJvYmVSZXEgaW4gYWN0aXZlIHNjYW4sIFJPICovCisJX19sZTE2IG1pbl9jaGFubmVsX3RpbWU7CisJX19sZTE2IG1heF9jaGFubmVsX3RpbWU7CisJX19sZTE2IGxpc3Rlbl9pbnRlcnZhbDsKKwl1OCBkZXNpcmVkX3NzaWRbMzJdOworCXU4IGRlc2lyZWRfYnNzaWRbRVRIX0FMRU5dOworCXU4IGRlc2lyZWRfYnNzdHlwZTsJLyogYWQtaG9jIG9yIGluZnJhc3RydWN0dXJlICovCisJdTggcmVzZXJ2ZWQyOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IG1pYl9tYWNfbWdtdCB7CisJX19sZTE2IGJlYWNvbl9wZXJpb2Q7CisJX19sZTE2IENGUF9tYXhfZHVyYXRpb247CisJX19sZTE2IG1lZGl1bV9vY2N1cGFuY3lfbGltaXQ7CisJX19sZTE2IHN0YXRpb25faWQ7CS8qIGFzc29jIGlkICovCisJX19sZTE2IEFUSU1fd2luZG93OworCXU4IENGUF9tb2RlOworCXU4IHByaXZhY3lfb3B0aW9uX2ltcGxlbWVudGVkOworCXU4IERUSU1fcGVyaW9kOworCXU4IENGUF9wZXJpb2Q7CisJdTggY3VycmVudF9ic3NpZFtFVEhfQUxFTl07CisJdTggY3VycmVudF9lc3NpZFszMl07CisJdTggY3VycmVudF9ic3NfdHlwZTsKKwl1OCBwb3dlcl9tZ210X21vZGU7CisJLyogcmZtZCBhbmQgNTA1ICovCisJdTggaWJzc19jaGFuZ2U7CisJdTggcmVzOworCXU4IG11bHRpX2RvbWFpbl9jYXBhYmlsaXR5X2ltcGxlbWVudGVkOworCXU4IG11bHRpX2RvbWFpbl9jYXBhYmlsaXR5X2VuYWJsZWQ7CisJdTggY291bnRyeV9zdHJpbmdbM107CisJdTggcmVzZXJ2ZWRbM107Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX21hY193ZXAgeworCXU4IHByaXZhY3lfaW52b2tlZDsJLyogMCBkaXNhYmxlIGVuY3IuLCAxIGVuYWJsZSBlbmNyICovCisJdTggd2VwX2RlZmF1bHRfa2V5X2lkOworCXU4IHdlcF9rZXlfbWFwcGluZ19sZW47CisJdTggZXhjbHVkZV91bmVuY3J5cHRlZDsKKwlfX2xlMzIgd2VwX2ljdl9lcnJvcl9jb3VudDsKKwlfX2xlMzIgd2VwX2V4Y2x1ZGVkX2NvdW50OworCXU4IHdlcF9kZWZhdWx0X2tleXZhbHVlW1dFUF9LRVlTXVtXRVBfS0VZX0xFTl07CisJdTggZW5jcnlwdGlvbl9sZXZlbDsJLyogMSBmb3IgNDBiaXQsIDIgZm9yIDEwNGJpdCBlbmNyeXB0aW9uICovCit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX3BoeSB7CisJX19sZTMyIGVkX3RocmVzaG9sZDsKKworCV9fbGUxNiBzbG90X3RpbWU7CisJX19sZTE2IHNpZnNfdGltZTsKKwlfX2xlMTYgcHJlYW1ibGVfbGVuZ3RoOworCV9fbGUxNiBwbGNwX2hlYWRlcl9sZW5ndGg7CisJX19sZTE2IG1wZHVfbWF4X2xlbmd0aDsKKwlfX2xlMTYgY2NhX21vZGVfc3VwcG9ydGVkOworCisJdTggb3BlcmF0aW9uX3JhdGVfc2V0WzRdOworCXU4IGNoYW5uZWxfaWQ7CisJdTggY3VycmVudF9jY2FfbW9kZTsKKwl1OCBwaHlfdHlwZTsKKwl1OCBjdXJyZW50X3JlZ19kb21haW47Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgbWliX2Z3X3ZlcnNpb24geworCXU4IG1ham9yOworCXU4IG1pbm9yOworCXU4IHBhdGNoOworCXU4IGJ1aWxkOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IG1pYl9tZG9tYWluIHsKKwl1OCB0eF9wb3dlcmxldmVsWzE0XTsKKwl1OCBjaGFubmVsX2xpc3RbMTRdOwkvKiAwIGZvciBpbnZhbGlkIGNoYW5uZWxzICovCit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYXQ3Nl9md19oZWFkZXIgeworCV9fbGUzMiBjcmM7CQkvKiBDUkMzMiBvZiB0aGUgd2hvbGUgaW1hZ2UgKi8KKwlfX2xlMzIgYm9hcmRfdHlwZTsJLyogZmlybXdhcmUgY29tcGF0aWJpbGl0eSBjb2RlICovCisJdTggYnVpbGQ7CQkvKiBmaXJtd2FyZSBidWlsZCBudW1iZXIgKi8KKwl1OCBwYXRjaDsJCS8qIGZpcm13YXJlIHBhdGNoIGxldmVsICovCisJdTggbWlub3I7CQkvKiBmaXJtd2FyZSBtaW5vciB2ZXJzaW9uICovCisJdTggbWFqb3I7CQkvKiBmaXJtd2FyZSBtYWpvciB2ZXJzaW9uICovCisJX19sZTMyIHN0cl9vZmZzZXQ7CS8qIG9mZnNldCBvZiB0aGUgY29weXJpZ2h0IHN0cmluZyAqLworCV9fbGUzMiBpbnRfZndfb2Zmc2V0OwkvKiBpbnRlcm5hbCBmaXJtd2FyZSBpbWFnZSBvZmZzZXQgKi8KKwlfX2xlMzIgaW50X2Z3X2xlbjsJLyogaW50ZXJuYWwgZmlybXdhcmUgaW1hZ2UgbGVuZ3RoICovCisJX19sZTMyIGV4dF9md19vZmZzZXQ7CS8qIGV4dGVybmFsIGZpcm13YXJlIGltYWdlIG9mZnNldCAqLworCV9fbGUzMiBleHRfZndfbGVuOwkvKiBleHRlcm5hbCBmaXJtd2FyZSBpbWFnZSBsZW5ndGggKi8KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK2VudW0gbWFjX3N0YXRlIHsKKwlNQUNfSU5JVCwKKwlNQUNfU0NBTk5JTkcsCisJTUFDX0FVVEgsCisJTUFDX0FTU09DLAorCU1BQ19KT0lOSU5HLAorCU1BQ19DT05ORUNURUQsCisJTUFDX09XTl9JQlNTCit9OworCisvKiBhIGRlc2NyaXB0aW9uIG9mIGEgcmVndWxhdG9yeSBkb21haW4gYW5kIHRoZSBhbGxvd2VkIGNoYW5uZWxzICovCitzdHJ1Y3QgcmVnX2RvbWFpbiB7CisJdTE2IGNvZGU7CisJY2hhciBjb25zdCAqbmFtZTsKKwl1MzIgY2hhbm5lbF9tYXA7CS8qIGlmIGJpdCBOIGlzIHNldCwgY2hhbm5lbCAoTisxKSBpcyBhbGxvd2VkICovCit9OworCisvKiBob3cgbG9uZyBkbyB3ZSBrZWVwIGEgKEkpQlNTIGluIHRoZSBic3NfbGlzdCBpbiBqaWZmaWVzCisgICB0aGlzIHNob3VsZCBiZSBsb25nIGVub3VnaCBmb3IgdGhlIHVzZXIgdG8gcmV0cmlldmUgdGhlIHRhYmxlCisgICAoYnkgaXdsaXN0ID8pIGFmdGVyIHRoZSBkZXZpY2Ugc3RhcnRlZCwgYmVjYXVzZSBhbGwgZW50cmllcyBmcm9tCisgICBvdGhlciBjaGFubmVscyB0aGFuIHRoZSBvbmUgdGhlIGRldmljZSBsb2NrcyBvbiBnZXQgcmVtb3ZlZCwgdG9vICovCisjZGVmaW5lIEJTU19MSVNUX1RJTUVPVVQJKDEyMCAqIEhaKQorLyogc3RydWN0IHRvIHN0b3JlIEJTUyBpbmZvIGZvdW5kIGR1cmluZyBzY2FuICovCisjZGVmaW5lIEJTU19MSVNUX01BWF9SQVRFX0xFTgkzMgkvKiAzMiByYXRlcyBzaG91bGQgYmUgZW5vdWdoIC4uLiAqLworCitzdHJ1Y3QgYnNzX2luZm8geworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCXU4IGJzc2lkW0VUSF9BTEVOXTsJLyogYnNzaWQgKi8KKwl1OCBzc2lkW0lXX0VTU0lEX01BWF9TSVpFXTsJLyogZXNzaWQgKi8KKwl1OCBzc2lkX2xlbjsJCS8qIGxlbmd0aCBvZiBzc2lkIGFib3ZlICovCisJdTggY2hhbm5lbDsKKwl1MTYgY2FwYTsJCS8qIEJTUyBjYXBhYmlsaXRpZXMgKi8KKwl1MTYgYmVhY29uX2ludGVydmFsOwkvKiBiZWFjb24gaW50ZXJ2YWwsIEt1cyAoMTAyNCBtaWNyb3NlY29uZHMpICovCisJdTggcmF0ZXNbQlNTX0xJU1RfTUFYX1JBVEVfTEVOXTsJLyogc3VwcG9ydGVkIHJhdGVzIGluIHVuaXRzIG9mCisJCQkJCQkgICA1MDAga2JwcywgT1JlZCB3aXRoIDB4ODAgZm9yCisJCQkJCQkgICBiYXNpYyByYXRlcyAqLworCXU4IHJhdGVzX2xlbjsKKworCS8qIHF1YWxpdHkgb2YgcmVjZWl2ZWQgYmVhY29uICovCisJdTggcnNzaTsKKwl1OCBsaW5rX3F1YWw7CisJdTggbm9pc2VfbGV2ZWw7CisKKwl1bnNpZ25lZCBsb25nIGxhc3Rfcng7CS8qIHRpbWUgKGppZmZpZXMpIG9mIGxhc3QgYmVhY29uIHJlY2VpdmVkICovCit9OworCisvKiBhIHJ4IGRhdGEgYnVmZmVyIHRvIGNvbGxlY3QgcnggZnJhZ21lbnRzICovCitzdHJ1Y3QgcnhfZGF0YV9idWYgeworCXU4IHNlbmRlcltFVEhfQUxFTl07CS8qIHNlbmRlciBhZGRyZXNzICovCisJdTE2IHNlcW5yOwkJLyogc2VxdWVuY2UgbnVtYmVyICovCisJdTE2IGZyYWducjsJCS8qIGxhc3QgZnJhZ21lbnQgcmVjZWl2ZWQgKi8KKwl1bnNpZ25lZCBsb25nIGxhc3Rfcng7CS8qIGppZmZpZXMgb2YgbGFzdCByeCAqLworCXN0cnVjdCBza19idWZmICpza2I7CS8qID09IE5VTEwgaWYgZW50cnkgaXMgZnJlZSAqLworfTsKKworI2RlZmluZSBOUl9SWF9EQVRBX0JVRgkJOAorCisvKiBEYXRhIGZvciBvbmUgbG9hZGVkIGZpcm13YXJlIGZpbGUgKi8KK3N0cnVjdCBmd2VudHJ5IHsKKwljb25zdCBjaGFyICpjb25zdCBmd25hbWU7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKKwlpbnQgZXh0Zndfc2l6ZTsKKwlpbnQgaW50Zndfc2l6ZTsKKwkvKiBwb2ludGVyIHRvIGxvYWRlZCBmaXJtd2FyZSwgbm8gbmVlZCB0byBmcmVlICovCisJdTggKmV4dGZ3OwkJLyogZXh0ZXJuYWwgZmlybXdhcmUsIGV4dGZ3X3NpemUgYnl0ZXMgbG9uZyAqLworCXU4ICppbnRmdzsJCS8qIGludGVybmFsIGZpcm13YXJlLCBpbnRmd19zaXplIGJ5dGVzIGxvbmcgKi8KKwllbnVtIGJvYXJkX3R5cGUgYm9hcmRfdHlwZTsJLyogYm9hcmQgdHlwZSAqLworCXN0cnVjdCBtaWJfZndfdmVyc2lvbiBmd192ZXJzaW9uOworCWludCBsb2FkZWQ7CQkvKiBMb2FkZWQgYW5kIHBhcnNlZCBzdWNjZXNzZnVsbHkgKi8KK307CisKK3N0cnVjdCBhdDc2X3ByaXYgeworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OwkvKiBVU0IgZGV2aWNlIHBvaW50ZXIgKi8KKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OwkvKiBuZXQgZGV2aWNlIHBvaW50ZXIgKi8KKwlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyBzdGF0czsJLyogbmV0IGRldmljZSBzdGF0cyAqLworCXN0cnVjdCBpd19zdGF0aXN0aWNzIHdzdGF0czsJLyogd2lyZWxlc3Mgc3RhdHMgKi8KKworCXN0cnVjdCBza19idWZmICpyeF9za2I7CS8qIHNrYnVmZiBmb3IgcmVjZWl2aW5nIGRhdGEgKi8KKwl2b2lkICpidWxrX291dF9idWZmZXI7CS8qIGJ1ZmZlciBmb3Igc2VuZGluZyBkYXRhICovCisKKwlzdHJ1Y3QgdXJiICp0eF91cmI7CS8qIFVSQiBmb3Igc2VuZGluZyBkYXRhICovCisJc3RydWN0IHVyYiAqcnhfdXJiOwkvKiBVUkIgZm9yIHJlY2VpdmluZyBkYXRhICovCisKKwl1bnNpZ25lZCBpbnQgdHhfcGlwZTsJLyogYnVsayBvdXQgcGlwZSAqLworCXVuc2lnbmVkIGludCByeF9waXBlOwkvKiBidWxrIGluIHBpcGUgKi8KKworCXN0cnVjdCBtdXRleCBtdHg7CS8qIGxvY2tzIHRoaXMgc3RydWN0dXJlICovCisKKwkvKiB3b3JrIHF1ZXVlcyAqLworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrX2Fzc29jX2RvbmU7CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcmtfam9pbjsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29ya19uZXdfYnNzOworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrX3N0YXJ0X3NjYW47CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcmtfc2V0X3Byb21pc2M7CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcmtfc3VibWl0X3J4OworCXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcmtfcmVzdGFydDsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGR3b3JrX2dldF9zY2FuOworCXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcmtfYmVhY29uOworCXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcmtfYXV0aDsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGR3b3JrX2Fzc29jOworCisJc3RydWN0IHRhc2tsZXRfc3RydWN0IHJ4X3Rhc2tsZXQ7CisKKwkvKiB0aGUgV0VQIHN0dWZmICovCisJaW50IHdlcF9lbmFibGVkOwkvKiAxIGlmIFdFUCBpcyBlbmFibGVkICovCisJaW50IHdlcF9rZXlfaWQ7CQkvKiBrZXkgaWQgdG8gYmUgdXNlZCAqLworCXU4IHdlcF9rZXlzW1dFUF9LRVlTXVtXRVBfS0VZX0xFTl07CS8qIHRoZSBmb3VyIFdFUCBrZXlzLAorCQkJCQkJICAgNSBvciAxMyBieXRlcyBhcmUgdXNlZCAqLworCXU4IHdlcF9rZXlzX2xlbltXRVBfS0VZU107CS8qIHRoZSBsZW5ndGggb2YgdGhlIGFib3ZlIGtleXMgKi8KKworCWludCBjaGFubmVsOworCWludCBpd19tb2RlOworCXU4IGJzc2lkW0VUSF9BTEVOXTsKKwl1OCBlc3NpZFtJV19FU1NJRF9NQVhfU0laRV07CisJaW50IGVzc2lkX3NpemU7CisJaW50IHJhZGlvX29uOworCWludCBwcm9taXNjOworCisJaW50IHByZWFtYmxlX3R5cGU7CS8qIDAgLSBsb25nLCAxIC0gc2hvcnQsIDIgLSBhdXRvICovCisJaW50IGF1dGhfbW9kZTsJCS8qIGF1dGhlbnRpY2F0aW9uIHR5cGU6IDAgb3BlbiwgMSBzaGFyZWQga2V5ICovCisJaW50IHR4cmF0ZTsJCS8qIDAsMSwyLDMgPSAxLDIsNS41LDExIE1icHMsIDQgaXMgYXV0byAqLworCWludCBmcmFnX3RocmVzaG9sZDsJLyogdGhyZXNob2xkIGZvciBmcmFnbWVudGF0aW9uIG9mIHR4IHBhY2tldHMgKi8KKwlpbnQgcnRzX3RocmVzaG9sZDsJLyogdGhyZXNob2xkIGZvciBSVFMgbWVjaGFuaXNtICovCisJaW50IHNob3J0X3JldHJ5X2xpbWl0OworCisJaW50IHNjYW5fbWluX3RpbWU7CS8qIHNjYW4gbWluIGNoYW5uZWwgdGltZSAqLworCWludCBzY2FuX21heF90aW1lOwkvKiBzY2FuIG1heCBjaGFubmVsIHRpbWUgKi8KKwlpbnQgc2Nhbl9tb2RlOwkJLyogU0NBTl9UWVBFX0FDVElWRSwgU0NBTl9UWVBFX1BBU1NJVkUgKi8KKwlpbnQgc2Nhbl9uZWVkX2FueTsJLyogaWYgc2V0LCBuZWVkIHRvIHNjYW4gZm9yIGFueSBFU1NJRCAqLworCisJLyogdGhlIGxpc3Qgd2UgZ290IGZyb20gc2Nhbm5pbmcgKi8KKwlzcGlubG9ja190IGJzc19saXN0X3NwaW5sb2NrOwkvKiBwcm90ZWN0cyBic3NfbGlzdCBvcGVyYXRpb25zICovCisJc3RydWN0IGxpc3RfaGVhZCBic3NfbGlzdDsJLyogbGlzdCBvZiBCU1Mgd2UgZ290IGJlYWNvbnMgZnJvbSAqLworCXN0cnVjdCB0aW1lcl9saXN0IGJzc19saXN0X3RpbWVyOwkvKiB0aW1lciB0byBwdXJnZSBvbGQgZW50cmllcworCQkJCQkJICAgZnJvbSBic3NfbGlzdCAqLworCXN0cnVjdCBic3NfaW5mbyAqY3Vycl9ic3M7CS8qIGN1cnJlbnQgQlNTICovCisJdTE2IGFzc29jX2lkOwkJLyogY3VycmVudCBhc3NvY2lhdGlvbiBJRCwgaWYgYXNzb2NpYXRlZCAqLworCisJdTggd2FudGVkX2Jzc2lkW0VUSF9BTEVOXTsKKwlpbnQgd2FudGVkX2Jzc2lkX3ZhbGlkOwkvKiAhPSAwIGlmIHdhbnRlZF9ic3NpZCBpcyB0byBiZSB1c2VkICovCisKKwkvKiBzb21lIGRhdGEgZm9yIGluZnJhc3RydWN0dXJlIG1vZGUgb25seSAqLworCXNwaW5sb2NrX3QgbWdtdF9zcGlubG9jazsJLyogdGhpcyBzcGlubG9jayBwcm90ZWN0cyBhY2Nlc3MgdG8KKwkJCQkJICAgbmV4dF9tZ210X2J1bGsgKi8KKworCXN0cnVjdCBhdDc2X3R4X2J1ZmZlciAqbmV4dF9tZ210X2J1bGs7CS8qIHBlbmRpbmcgbWFuYWdlbWVudCBtc2cgdG8KKwkJCQkJCSAgIHNlbmQgdmlhIGJ1bGsgb3V0ICovCisJZW51bSBtYWNfc3RhdGUgbWFjX3N0YXRlOworCWVudW0geworCQlTQ0FOX0lETEUsCisJCVNDQU5fSU5fUFJPR1JFU1MsCisJCVNDQU5fQ09NUExFVEVECisJfSBzY2FuX3N0YXRlOworCXRpbWVfdCBsYXN0X3NjYW47CisKKwlpbnQgcmV0cmllczsJCS8qIHJlbWFpbmluZyByZXRyaWVzIGluIGNhc2Ugb2YgdGltZW91dCB3aGVuCisJCQkJICogc2VuZGluZyBBdXRoUmVxIG9yIEFzc29jUmVxICovCisJdTggcG1fbW9kZTsJCS8qIHBvd2VyIG1hbmFnZW1lbnQgbW9kZSAqLworCXUzMiBwbV9wZXJpb2Q7CQkvKiBwb3dlciBtYW5hZ2VtZW50IHBlcmlvZCBpbiBtaWNyb3NlY29uZHMgKi8KKworCXN0cnVjdCByZWdfZG9tYWluIGNvbnN0ICpkb21haW47CS8qIHJlZyBkb21haW4gZGVzY3JpcHRpb24gKi8KKworCS8qIGl3c3B5IHN1cHBvcnQgKi8KKwlzcGlubG9ja190IHNweV9zcGlubG9jazsKKwlzdHJ1Y3QgaXdfc3B5X2RhdGEgc3B5X2RhdGE7CisKKwlzdHJ1Y3QgaXdfcHVibGljX2RhdGEgd2lyZWxlc3NfZGF0YTsKKworCS8qIFRoZXNlIGZpZWxkcyBjb250YWluIEhXIGNvbmZpZyBwcm92aWRlZCBieSB0aGUgZGV2aWNlIChub3QgYWxsIG9mCisJICogdGhlc2UgZmllbGRzIGFyZSB1c2VkIGJ5IGFsbCBib2FyZCB0eXBlcykgKi8KKwl1OCBtYWNfYWRkcltFVEhfQUxFTl07CisJdTggcmVndWxhdG9yeV9kb21haW47CisKKwlzdHJ1Y3QgYXQ3Nl9jYXJkX2NvbmZpZyBjYXJkX2NvbmZpZzsKKworCS8qIHN0b3JlIHJ4IGZyYWdtZW50cyB1bnRpbCBjb21wbGV0ZSAqLworCXN0cnVjdCByeF9kYXRhX2J1ZiByeF9kYXRhW05SX1JYX0RBVEFfQlVGXTsKKworCWVudW0gYm9hcmRfdHlwZSBib2FyZF90eXBlOworCXN0cnVjdCBtaWJfZndfdmVyc2lvbiBmd192ZXJzaW9uOworCisJdW5zaWduZWQgaW50IGRldmljZV91bnBsdWdnZWQ6MTsKKwl1bnNpZ25lZCBpbnQgbmV0ZGV2X3JlZ2lzdGVyZWQ6MTsKKwlzdHJ1Y3Qgc2V0X21pYl9idWZmZXIgbWliX2J1ZjsJLyogZ2xvYmFsIGJ1ZmZlciBmb3Igc2V0X21pYiBjYWxscyAqLworCisJLyogYmVhY29uIGNvdW50aW5nICovCisJaW50IGJlYWNvbl9wZXJpb2Q7CS8qIHBlcmlvZCBvZiBtZ210IGJlYWNvbnMsIEt1cyAqLworCWludCBiZWFjb25zX3JlY2VpdmVkOworCXVuc2lnbmVkIGxvbmcgYmVhY29uc19sYXN0X3F1YWw7CS8qIHRpbWUgd2UgcmVzdGFydGVkIGNvdW50aW5nCisJCQkJCQkgICBiZWFjb25zICovCit9OworCitzdHJ1Y3QgYXQ3Nl9yeF9yYWRpb3RhcCB7CisJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgcnRfaGRyOworCV9fbGU2NCBydF90c2Z0OworCXU4IHJ0X2ZsYWdzOworCXU4IHJ0X3JhdGU7CisJczggcnRfc2lnbmFsOworCXM4IHJ0X25vaXNlOworfTsKKworI2RlZmluZSBBVDc2X1JYX1JBRElPVEFQX1BSRVNFTlQJCSAgXAorCSgoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfVFNGVCkJCXwgXAorCSgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9GTEFHUykJCXwgXAorCSgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9SQVRFKQkJfCBcCisJKDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0RCX0FOVFNJR05BTCkJfCBcCisJKDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0RCX0FOVE5PSVNFKSkKKworI2RlZmluZSBCRUFDT05fTUFYX0RBVEFfTEVOR1RICTE1MDAKKworLyogdGhlIG1heGltdW0gc2l6ZSBvZiBhbiBBc3NvY1JlcSBwYWNrZXQgKi8KKyNkZWZpbmUgQVNTT0NSRVFfTUFYX1NJWkUgXAorICAoQVQ3Nl9UWF9IRFJMRU4gKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9hc3NvY19yZXF1ZXN0KSArIFwKKyAgIDEgKyAxICsgSVdfRVNTSURfTUFYX1NJWkUgKyAxICsgMSArIDQpCisKKy8qIGZvciBzaGFyZWQgc2VjcmV0IGF1dGgsIGFkZCB0aGUgY2hhbGxlbmdlIHRleHQgc2l6ZSAqLworI2RlZmluZSBBVVRIX0ZSQU1FX1NJWkUgKEFUNzZfVFhfSERSTEVOICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfYXV0aCkpCisKKy8qIE1heGltYWwgbnVtYmVyIG9mIEF1dGhSZXEgcmV0cmllcyAqLworI2RlZmluZSBBVVRIX1JFVFJJRVMJCTMKKworLyogTWF4aW1hbCBudW1iZXIgb2YgQXNzb2NSZXEgcmV0cmllcyAqLworI2RlZmluZSBBU1NPQ19SRVRSSUVTCQkzCisKKy8qIEJlYWNvbiB0aW1lb3V0IGluIG1hbmFnZWQgbW9kZSB3aGVuIHdlIGFyZSBjb25uZWN0ZWQgKi8KKyNkZWZpbmUgQkVBQ09OX1RJTUVPVVQJCSgxMCAqIEhaKQorCisvKiBUaW1lb3V0IGZvciBhdXRoZW50aWNhdGlvbiByZXNwb25zZSAqLworI2RlZmluZSBBVVRIX1RJTUVPVVQJCSgxICogSFopCisKKy8qIFRpbWVvdXQgZm9yIGFzc29jaWF0aW9uIHJlc3BvbnNlICovCisjZGVmaW5lIEFTU09DX1RJTUVPVVQJCSgxICogSFopCisKKy8qIFBvbGxpbmcgaW50ZXJ2YWwgd2hlbiBzY2FuIGlzIHJ1bm5pbmcgKi8KKyNkZWZpbmUgU0NBTl9QT0xMX0lOVEVSVkFMCShIWiAvIDQpCisKKy8qIENvbW1hbmQgY29tcGxldGlvbiB0aW1lb3V0ICovCisjZGVmaW5lIENNRF9DT01QTEVUSU9OX1RJTUVPVVQJKDUgKiBIWikKKworI2RlZmluZSBERUZfUlRTX1RIUkVTSE9MRAkxNTM2CisjZGVmaW5lIERFRl9GUkFHX1RIUkVTSE9MRAkxNTM2CisjZGVmaW5lIERFRl9TSE9SVF9SRVRSWV9MSU1JVAk4CisjZGVmaW5lIERFRl9DSEFOTkVMCQkxMAorI2RlZmluZSBERUZfU0NBTl9NSU5fVElNRQkxMAorI2RlZmluZSBERUZfU0NBTl9NQVhfVElNRQkxMjAKKworI2RlZmluZSBNQVhfUlRTX1RIUkVTSE9MRAkoTUFYX0ZSQUdfVEhSRVNIT0xEICsgMSkKKworLyogdGhlIG1heCBwYWRkaW5nIHNpemUgZm9yIHR4IGluIGJ5dGVzIChzZWUgY2FsY19wYWRkaW5nKSAqLworI2RlZmluZSBNQVhfUEFERElOR19TSVpFCTUzCisKKyNlbmRpZgkJCQkvKiBfQVQ3Nl9VU0JfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2VjaG8vS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkNDFlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9LY29uZmlnCkBAIC0wLDAgKzEsOSBAQAorY29uZmlnIEVDSE8KKwl0cmlzdGF0ZSAiTGluZSBFY2hvIENhbmNlbGxlciBzdXBwb3J0IgorCWRlZmF1bHQgbgorCS0tLWhlbHAtLS0KKwkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGxpbmUgZWNobyBjYW5jZWxsaW5nIHN1cHBvcnQgZm9yIG1JU0ROIGFuZAorCSAgWmFwdGVsIGRyaXZlcnMuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGVjaG8uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZWNoby9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNGNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmotJChDT05GSUdfRUNITykgKz0gZWNoby5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZWNoby9UT0RPIGIvZHJpdmVycy9zdGFnaW5nL2VjaG8vVE9ETwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwOWFmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2VjaG8vVE9ETwpAQCAtMCwwICsxLDEwIEBACitUT0RPOgorCS0gY2hlY2twYXRjaC5wbCBjbGVhbnVwcworCS0gTGluZGVudAorCS0gdHlwZWRlZiByZW1vdmFscworCS0gaGFuZGxlIGJpdF9vcGVyYXRpb25zLmggKG1lcmdlIGluIG9yIG1ha2UgcGFydCBvZiBjb21tb24gY29kZT8pCisJLSByZW1vdmUgcHJvYyBpbnRlcmZhY2UsIG9ubHkgdXNlIGVjaG8uaCBpbnRlcmZhY2UgKHByb2MgaW50ZXJmYWNlIGlzCisJICByYWN5IGFuZCBub3QgY29ycmVjdC4pCisKK1BsZWFzZSBzZW5kIHBhdGNoZXMgdG8gR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4gYW5kIENjOiBTdGV2ZQorVW5kZXJ3b29kIDxzdGV2ZXVAY29wcGljZS5vcmc+IGFuZCBEYXZpZCBSb3dlIDxkYXZpZEByb3dldGVsLmNvbT4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2JpdF9vcGVyYXRpb25zLmggYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9iaXRfb3BlcmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMmY0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9iaXRfb3BlcmF0aW9ucy5oCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogU3BhbkRTUCAtIGEgc2VyaWVzIG9mIERTUCBjb21wb25lbnRzIGZvciB0ZWxlcGhvbnkKKyAqCisgKiBiaXRfb3BlcmF0aW9ucy5oIC0gVmFyaW91cyBiaXQgbGV2ZWwgb3BlcmF0aW9ucywgc3VjaCBhcyBiaXQgcmV2ZXJzYWwKKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXZlIFVuZGVyd29vZCA8c3RldmV1QGNvcHBpY2Uub3JnPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTdGV2ZSBVbmRlcndvb2QKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKiAkSWQ6IGJpdF9vcGVyYXRpb25zLmgsdiAxLjExIDIwMDYvMTEvMjggMTU6Mzc6MDMgc3RldmV1IEV4cCAkCisgKi8KKworLyohIFxmaWxlICovCisKKyNpZiAhZGVmaW5lZChfQklUX09QRVJBVElPTlNfSF8pCisjZGVmaW5lIF9CSVRfT1BFUkFUSU9OU19IXworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAgfHwgIGRlZmluZWQoX194ODZfNjRfXykKKy8qISBcYnJpZWYgRmluZCB0aGUgYml0IHBvc2l0aW9uIG9mIHRoZSBoaWdoZXN0IHNldCBiaXQgaW4gYSB3b3JkCisgICAgXHBhcmFtIGJpdHMgVGhlIHdvcmQgdG8gYmUgc2VhcmNoZWQKKyAgICBccmV0dXJuIFRoZSBiaXQgbnVtYmVyIG9mIHRoZSBoaWdoZXN0IHNldCBiaXQsIG9yIC0xIGlmIHRoZSB3b3JkIGlzIHplcm8uICovCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgdG9wX2JpdCh1bnNpZ25lZCBpbnQgYml0cykKK3sKKyAgICBpbnQgcmVzOworCisgICAgX19hc21fXyAoIiB4b3JsICVbcmVzXSwlW3Jlc107XG4iCisgICAgICAgICAgICAgIiBkZWNsICVbcmVzXTtcbiIKKyAgICAgICAgICAgICAiIGJzcmwgJVtiaXRzXSwlW3Jlc11cbiIKKyAgICAgICAgICAgICA6IFtyZXNdICI9JnIiIChyZXMpCisgICAgICAgICAgICAgOiBbYml0c10gInJtIiAoYml0cykpOworICAgIHJldHVybiByZXM7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyohIFxicmllZiBGaW5kIHRoZSBiaXQgcG9zaXRpb24gb2YgdGhlIGxvd2VzdCBzZXQgYml0IGluIGEgd29yZAorICAgIFxwYXJhbSBiaXRzIFRoZSB3b3JkIHRvIGJlIHNlYXJjaGVkCisgICAgXHJldHVybiBUaGUgYml0IG51bWJlciBvZiB0aGUgbG93ZXN0IHNldCBiaXQsIG9yIC0xIGlmIHRoZSB3b3JkIGlzIHplcm8uICovCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgYm90dG9tX2JpdCh1bnNpZ25lZCBpbnQgYml0cykKK3sKKyAgICBpbnQgcmVzOworCisgICAgX19hc21fXyAoIiB4b3JsICVbcmVzXSwlW3Jlc107XG4iCisgICAgICAgICAgICAgIiBkZWNsICVbcmVzXTtcbiIKKyAgICAgICAgICAgICAiIGJzZmwgJVtiaXRzXSwlW3Jlc11cbiIKKyAgICAgICAgICAgICA6IFtyZXNdICI9JnIiIChyZXMpCisgICAgICAgICAgICAgOiBbYml0c10gInJtIiAoYml0cykpOworICAgIHJldHVybiByZXM7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNlbHNlCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgdG9wX2JpdCh1bnNpZ25lZCBpbnQgYml0cykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChiaXRzID09IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpID0gMDsKKyAgICBpZiAoYml0cyAmIDB4RkZGRjAwMDApCisgICAgeworICAgICAgICBiaXRzICY9IDB4RkZGRjAwMDA7CisgICAgICAgIGkgKz0gMTY7CisgICAgfQorICAgIGlmIChiaXRzICYgMHhGRjAwRkYwMCkKKyAgICB7CisgICAgICAgIGJpdHMgJj0gMHhGRjAwRkYwMDsKKyAgICAgICAgaSArPSA4OworICAgIH0KKyAgICBpZiAoYml0cyAmIDB4RjBGMEYwRjApCisgICAgeworICAgICAgICBiaXRzICY9IDB4RjBGMEYwRjA7CisgICAgICAgIGkgKz0gNDsKKyAgICB9CisgICAgaWYgKGJpdHMgJiAweENDQ0NDQ0NDKQorICAgIHsKKyAgICAgICAgYml0cyAmPSAweENDQ0NDQ0NDOworICAgICAgICBpICs9IDI7CisgICAgfQorICAgIGlmIChiaXRzICYgMHhBQUFBQUFBQSkKKyAgICB7CisgICAgICAgIGJpdHMgJj0gMHhBQUFBQUFBQTsKKyAgICAgICAgaSArPSAxOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgYm90dG9tX2JpdCh1bnNpZ25lZCBpbnQgYml0cykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChiaXRzID09IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpID0gMzI7CisgICAgaWYgKGJpdHMgJiAweDAwMDBGRkZGKQorICAgIHsKKyAgICAgICAgYml0cyAmPSAweDAwMDBGRkZGOworICAgICAgICBpIC09IDE2OworICAgIH0KKyAgICBpZiAoYml0cyAmIDB4MDBGRjAwRkYpCisgICAgeworICAgICAgICBiaXRzICY9IDB4MDBGRjAwRkY7CisgICAgICAgIGkgLT0gODsKKyAgICB9CisgICAgaWYgKGJpdHMgJiAweDBGMEYwRjBGKQorICAgIHsKKyAgICAgICAgYml0cyAmPSAweDBGMEYwRjBGOworICAgICAgICBpIC09IDQ7CisgICAgfQorICAgIGlmIChiaXRzICYgMHgzMzMzMzMzMykKKyAgICB7CisgICAgICAgIGJpdHMgJj0gMHgzMzMzMzMzMzsKKyAgICAgICAgaSAtPSAyOworICAgIH0KKyAgICBpZiAoYml0cyAmIDB4NTU1NTU1NTUpCisgICAgeworICAgICAgICBiaXRzICY9IDB4NTU1NTU1NTU7CisgICAgICAgIGkgLT0gMTsKKyAgICB9CisgICAgcmV0dXJuIGk7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNlbmRpZgorCisvKiEgXGJyaWVmIEJpdCByZXZlcnNlIGEgYnl0ZS4KKyAgICBccGFyYW0gZGF0YSBUaGUgYnl0ZSB0byBiZSByZXZlcnNlZC4KKyAgICBccmV0dXJuIFRoZSBiaXQgcmV2ZXJzZWQgdmVyc2lvbiBvZiBkYXRhLiAqLworc3RhdGljIF9faW5saW5lX18gdWludDhfdCBiaXRfcmV2ZXJzZTgodWludDhfdCB4KQoreworI2lmIGRlZmluZWQoX19pMzg2X18pICB8fCAgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgIC8qIElmIG11bHRpcGx5IGlzIGZhc3QgKi8KKyAgICByZXR1cm4gKCh4KjB4MDgwMlUgJiAweDIyMTEwVSkgfCAoeCoweDgwMjBVICYgMHg4ODQ0MFUpKSoweDEwMTAxVSA+PiAxNjsKKyNlbHNlCisgICAgLyogSWYgbXVsdGlwbHkgaXMgc2xvdywgYnV0IHdlIGhhdmUgYSBiYXJyZWwgc2hpZnRlciAqLworICAgIHggPSAoeCA+PiA0KSB8ICh4IDw8IDQpOworICAgIHggPSAoKHggJiAweENDKSA+PiAyKSB8ICgoeCAmIDB4MzMpIDw8IDIpOworICAgIHJldHVybiAoKHggJiAweEFBKSA+PiAxKSB8ICgoeCAmIDB4NTUpIDw8IDEpOworI2VuZGlmCit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyohIFxicmllZiBCaXQgcmV2ZXJzZSBhIDE2IGJpdCB3b3JkLgorICAgIFxwYXJhbSBkYXRhIFRoZSB3b3JkIHRvIGJlIHJldmVyc2VkLgorICAgIFxyZXR1cm4gVGhlIGJpdCByZXZlcnNlZCB2ZXJzaW9uIG9mIGRhdGEuICovCit1aW50MTZfdCBiaXRfcmV2ZXJzZTE2KHVpbnQxNl90IGRhdGEpOworCisvKiEgXGJyaWVmIEJpdCByZXZlcnNlIGEgMzIgYml0IHdvcmQuCisgICAgXHBhcmFtIGRhdGEgVGhlIHdvcmQgdG8gYmUgcmV2ZXJzZWQuCisgICAgXHJldHVybiBUaGUgYml0IHJldmVyc2VkIHZlcnNpb24gb2YgZGF0YS4gKi8KK3VpbnQzMl90IGJpdF9yZXZlcnNlMzIodWludDMyX3QgZGF0YSk7CisKKy8qISBcYnJpZWYgQml0IHJldmVyc2UgZWFjaCBvZiB0aGUgZm91ciBieXRlcyBpbiBhIDMyIGJpdCB3b3JkLgorICAgIFxwYXJhbSBkYXRhIFRoZSB3b3JkIHRvIGJlIHJldmVyc2VkLgorICAgIFxyZXR1cm4gVGhlIGJpdCByZXZlcnNlZCB2ZXJzaW9uIG9mIGRhdGEuICovCit1aW50MzJfdCBiaXRfcmV2ZXJzZV80Ynl0ZXModWludDMyX3QgZGF0YSk7CisKKy8qISBcYnJpZWYgRmluZCB0aGUgbnVtYmVyIG9mIHNldCBiaXRzIGluIGEgMzIgYml0IHdvcmQuCisgICAgXHBhcmFtIHggVGhlIHdvcmQgdG8gYmUgc2VhcmNoZWQuCisgICAgXHJldHVybiBUaGUgbnVtYmVyIG9mIHNldCBiaXRzLiAqLworaW50IG9uZV9iaXRzMzIodWludDMyX3QgeCk7CisKKy8qISBcYnJpZWYgQ3JlYXRlIGEgbWFzayBhcyB3aWRlIGFzIHRoZSBudW1iZXIgaW4gYSAzMiBiaXQgd29yZC4KKyAgICBccGFyYW0geCBUaGUgd29yZCB0byBiZSBzZWFyY2hlZC4KKyAgICBccmV0dXJuIFRoZSBtYXNrLiAqLwordWludDMyX3QgbWFrZV9tYXNrMzIodWludDMyX3QgeCk7CisKKy8qISBcYnJpZWYgQ3JlYXRlIGEgbWFzayBhcyB3aWRlIGFzIHRoZSBudW1iZXIgaW4gYSAxNiBiaXQgd29yZC4KKyAgICBccGFyYW0geCBUaGUgd29yZCB0byBiZSBzZWFyY2hlZC4KKyAgICBccmV0dXJuIFRoZSBtYXNrLiAqLwordWludDE2X3QgbWFrZV9tYXNrMTYodWludDE2X3QgeCk7CisKKy8qISBcYnJpZWYgRmluZCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgb25lIGluIGEgd29yZCwgYW5kIHJldHVybiBhIHdvcmQKKyAgICAgICAgICAgd2l0aCBqdXN0IHRoYXQgYml0IHNldC4KKyAgICBccGFyYW0geCBUaGUgd29yZCB0byBiZSBzZWFyY2hlZC4KKyAgICBccmV0dXJuIFRoZSB3b3JkIHdpdGggdGhlIHNpbmdsZSBzZXQgYml0LiAqLworc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgbGVhc3Rfc2lnbmlmaWNhbnRfb25lMzIodWludDMyX3QgeCkKK3sKKyAgICByZXR1cm4gKHggJiAoLShpbnQzMl90KSB4KSk7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyohIFxicmllZiBGaW5kIHRoZSBtb3N0IHNpZ25pZmljYW50IG9uZSBpbiBhIHdvcmQsIGFuZCByZXR1cm4gYSB3b3JkCisgICAgICAgICAgIHdpdGgganVzdCB0aGF0IGJpdCBzZXQuCisgICAgXHBhcmFtIHggVGhlIHdvcmQgdG8gYmUgc2VhcmNoZWQuCisgICAgXHJldHVybiBUaGUgd29yZCB3aXRoIHRoZSBzaW5nbGUgc2V0IGJpdC4gKi8KK3N0YXRpYyBfX2lubGluZV9fIHVpbnQzMl90IG1vc3Rfc2lnbmlmaWNhbnRfb25lMzIodWludDMyX3QgeCkKK3sKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAgfHwgIGRlZmluZWQoX194ODZfNjRfXykKKyAgICByZXR1cm4gMSA8PCB0b3BfYml0KHgpOworI2Vsc2UKKyAgICB4ID0gbWFrZV9tYXNrMzIoeCk7CisgICAgcmV0dXJuICh4IF4gKHggPj4gMSkpOworI2VuZGlmCit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyohIFxicmllZiBGaW5kIHRoZSBwYXJpdHkgb2YgYSBieXRlLgorICAgIFxwYXJhbSB4IFRoZSBieXRlIHRvIGJlIGNoZWNrZWQuCisgICAgXHJldHVybiAxIGZvciBvZGQsIG9yIDAgZm9yIGV2ZW4uICovCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgcGFyaXR5OCh1aW50OF90IHgpCit7CisgICAgeCA9ICh4IF4gKHggPj4gNCkpICYgMHgwRjsKKyAgICByZXR1cm4gKDB4Njk5NiA+PiB4KSAmIDE7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyohIFxicmllZiBGaW5kIHRoZSBwYXJpdHkgb2YgYSAxNiBiaXQgd29yZC4KKyAgICBccGFyYW0geCBUaGUgd29yZCB0byBiZSBjaGVja2VkLgorICAgIFxyZXR1cm4gMSBmb3Igb2RkLCBvciAwIGZvciBldmVuLiAqLworc3RhdGljIF9faW5saW5lX18gaW50IHBhcml0eTE2KHVpbnQxNl90IHgpCit7CisgICAgeCBePSAoeCA+PiA4KTsKKyAgICB4ID0gKHggXiAoeCA+PiA0KSkgJiAweDBGOworICAgIHJldHVybiAoMHg2OTk2ID4+IHgpICYgMTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiEgXGJyaWVmIEZpbmQgdGhlIHBhcml0eSBvZiBhIDMyIGJpdCB3b3JkLgorICAgIFxwYXJhbSB4IFRoZSB3b3JkIHRvIGJlIGNoZWNrZWQuCisgICAgXHJldHVybiAxIGZvciBvZGQsIG9yIDAgZm9yIGV2ZW4uICovCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgcGFyaXR5MzIodWludDMyX3QgeCkKK3sKKyAgICB4IF49ICh4ID4+IDE2KTsKKyAgICB4IF49ICh4ID4+IDgpOworICAgIHggPSAoeCBeICh4ID4+IDQpKSAmIDB4MEY7CisgICAgcmV0dXJuICgweDY5OTYgPj4geCkgJiAxOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgorLyotIEVuZCBvZiBmaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZWNoby9lY2hvLmMgYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9lY2hvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEyODFiMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2VjaG8uYwpAQCAtMCwwICsxLDYzMiBAQAorLyoKKyAqIFNwYW5EU1AgLSBhIHNlcmllcyBvZiBEU1AgY29tcG9uZW50cyBmb3IgdGVsZXBob255CisgKgorICogZWNoby5jIC0gQSBsaW5lIGVjaG8gY2FuY2VsbGVyLiAgVGhpcyBjb2RlIGlzIGJlaW5nIGRldmVsb3BlZAorICogICAgICAgICAgYWdhaW5zdCBhbmQgcGFydGlhbGx5IGNvbXBsaWVzIHdpdGggRzE2OC4KKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXZlIFVuZGVyd29vZCA8c3RldmV1QGNvcHBpY2Uub3JnPgorICogICAgICAgICBhbmQgRGF2aWQgUm93ZSA8ZGF2aWRfYXRfcm93ZXRlbF9kb3RfY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMyBTdGV2ZSBVbmRlcndvb2QsIDIwMDcgRGF2aWQgUm93ZQorICoKKyAqIEJhc2VkIG9uIGEgYml0IGZyb20gaGVyZSwgYSBiaXQgZnJvbSB0aGVyZSwgZXllIG9mIHRvYWQsIGVhciBvZgorICogYmF0LCAxNSB5ZWFycyBvZiBmYWlsZWQgYXR0ZW1wdHMgYnkgRGF2aWQgYW5kIGEgZmV3IGZyaWVkIGJyYWluCisgKiBjZWxscy4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKiAkSWQ6IGVjaG8uYyx2IDEuMjAgMjAwNi8xMi8wMSAxODowMDo0OCBzdGV2ZXUgRXhwICQKKyAqLworCisvKiEgXGZpbGUgKi8KKworLyogSW1wbGVtZW50YXRpb24gTm90ZXMKKyAgIERhdmlkIFJvd2UKKyAgIEFwcmlsIDIwMDcKKworICAgVGhpcyBjb2RlIHN0YXJ0ZWQgbGlmZSBhcyBTdGV2ZSdzIE5MTVMgYWxnb3JpdGhtIHdpdGggYSB0YXAKKyAgIHJvdGF0aW9uIGFsZ29yaXRobSB0byBoYW5kbGUgZGl2ZXJnZW5jZSBkdXJpbmcgZG91YmxlIHRhbGsuICBJCisgICBhZGRlZCBhIEdlaWdlbCBEb3VibGUgVGFsayBEZXRlY3RvciAoRFREKSBbMl0gYW5kIHBlcmZvcm1lZCBzb21lCisgICBHMTY4IHRlc3RzLiAgSG93ZXZlciBJIGhhZCB0cm91YmxlIG1lZXRpbmcgdGhlIEcxNjggcmVxdWlyZW1lbnRzLAorICAgZXNwZWNpYWxseSBmb3IgZG91YmxlIHRhbGsgLSB0aGVyZSB3ZXJlIGFsd2F5cyBjYXNlcyB3aGVyZSBteSBEVEQKKyAgIGZhaWxlZCwgZm9yIGV4YW1wbGUgd2hlcmUgbmVhciBlbmQgc3BlZWNoIHdhcyB1bmRlciB0aGUgNmRCCisgICB0aHJlc2hvbGQgcmVxdWlyZWQgZm9yIGRlY2xhcmluZyBkb3VibGUgdGFsay4KKworICAgU28gSSB0cmllZCBhIHR3byBwYXRoIGFsZ29yaXRobSBbMV0sIHdoaWNoIGhhcyBzbyBmYXIgZ2l2ZW4gYmV0dGVyCisgICByZXN1bHRzLiAgVGhlIG9yaWdpbmFsIHRhcCByb3RhdGlvbi9HZWlnZWwgYWxnb3JpdGhtIGlzIGF2YWlsYWJsZQorICAgaW4gU1ZOIGh0dHA6Ly9zdm4ucm93ZXRlbC5jb20vc29mdHdhcmUvb3NsZWMvdGFncy9iZWZvcmVfMTZiaXQuCisgICBJdCdzIHByb2JhYmx5IHBvc3NpYmxlIHRvIG1ha2UgaXQgd29yayBpZiBzb21lIG9uZSB3YW50cyB0byBwdXQgc29tZQorICAgc2VyaW91cyB3b3JrIGludG8gaXQuCisKKyAgIEF0IHByZXNlbnQgbm8gc3BlY2lhbCB0cmVhdG1lbnQgaXMgcHJvdmlkZWQgZm9yIHRvbmVzLCB3aGljaAorICAgZ2VuZXJhbGx5IGNhdXNlIE5MTVMgYWxnb3JpdGhtcyB0byBkaXZlcmdlLiAgSW5pdGlhbCBydW5zIG9mIGEKKyAgIHN1YnNldCBvZiB0aGUgRzE2OCB0ZXN0cyBmb3IgdG9uZXMgKGUuZyAuL2VjaG9fdGVzdCA2KSBzaG93IHRoZQorICAgY3VycmVudCBhbGdvcml0aG0gaXMgcGFzc2luZyBPSywgd2hpY2ggaXMga2luZCBvZiBzdXJwcmlzaW5nLiAgVGhlCisgICBmdWxsIHNldCBvZiB0ZXN0cyBuZWVkcyB0byBiZSBwZXJmb3JtZWQgdG8gY29uZmlybSB0aGlzIHJlc3VsdC4KKworICAgT25lIG90aGVyIGludGVyZXN0aW5nIGNoYW5nZSBpcyB0aGF0IEkgaGF2ZSBtYW5hZ2VkIHRvIGdldCB0aGUgTkxNUworICAgY29kZSB0byB3b3JrIHdpdGggMTYgYml0IGNvZWZmaWNpZW50cywgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIDMyCisgICBiaXQgY29lZmZpY2VudHMuICBUaGlzIHJlZHVjZXMgdGhlIE1JUHMgYW5kIHN0b3JhZ2UgcmVxdWlyZWQuCisgICBJIGV2YXVsYXRlZCB0aGUgMTYgYml0IHBvcnQgdXNpbmcgZzE2OF90ZXN0cy5zaCBhbmQgbGlzdGVuaW5nIHRlc3RzCisgICBvbiA0IHJlYWwtd29ybGQgc2FtcGxlcy4KKworICAgSSBhbHNvIGF0dGVtcHRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBibG9jayBiYXNlZCBOTE1TIHVwZGF0ZQorICAgWzJdIGJ1dCBhbHRob3VnaCB0aGlzIHBhc3NlcyBnMTY4X3Rlc3RzLnNoIGl0IGRpZG4ndCBjb252ZXJnZSB3ZWxsCisgICBvbiB0aGUgcmVhbC13b3JsZCBzYW1wbGVzLiAgSSBoYXZlIG5vIGlkZWEgd2h5LCBwZXJoYXBzIGEgc2NhbGluZworICAgcHJvYmxlbS4gIFRoZSBibG9jayBiYXNlZCBjb2RlIGlzIGFsc28gYXZhaWxhYmxlIGluIFNWTgorICAgaHR0cDovL3N2bi5yb3dldGVsLmNvbS9zb2Z0d2FyZS9vc2xlYy90YWdzL2JlZm9yZV8xNmJpdC4gIElmIHRoaXMKKyAgIGNvZGUgY2FuIGJlIGRlYnVnZ2VkLCBpdCB3aWxsIGxlYWQgdG8gZnVydGhlciByZWR1Y3Rpb24gaW4gTUlQUywgYXMKKyAgIHRoZSBibG9jayB1cGRhdGUgY29kZSBtYXBzIG5pY2VseSBvbnRvIERTUCBpbnN0cnVjdGlvbiBzZXRzIChpdCdzIGEKKyAgIGRvdCBwcm9kdWN0KSBjb21wYXJlZCB0byB0aGUgY3VycmVudCBzYW1wbGUtYnktc2FtcGxlIHVwZGF0ZS4KKworICAgU3RldmUgYWxzbyBoYXMgc29tZSBuaWNlIG5vdGVzIG9uIGVjaG8gY2FuY2VsbGVycyBpbiBlY2hvLmgKKworCisgICBSZWZlcmVuY2VzOgorCisgICBbMV0gT2NoaWFpLCBBcmVzZWtpLCBhbmQgT2dpaGFyYSwgIkVjaG8gQ2FuY2VsbGVyIHdpdGggVHdvIEVjaG8KKyAgICAgICBQYXRoIE1vZGVscyIsIElFRUUgVHJhbnNhY3Rpb25zIG9uIGNvbW11bmljYXRpb25zLCBDT00tMjUsCisgICAgICAgTm8uIDYsIEp1bmUKKyAgICAgICAxOTc3LgorICAgICAgIGh0dHA6Ly93d3cucm93ZXRlbC5jb20vaW1hZ2VzL2VjaG8vZHVhbF9wYXRoX3BhcGVyLnBkZgorCisgICBbMl0gVGhlIGNsYXNzaWMsIHZlcnkgdXNlZnVsIHBhcGVyIHRoYXQgdGVsbHMgeW91IGhvdyB0bworICAgICAgIGFjdHVhbGx5IGJ1aWxkIGEgcmVhbCB3b3JsZCBlY2hvIGNhbmNlbGxlcjoKKyAgICAgICAgIE1lc3NlcnNjaG1pdHQsIEhlZGJlcmcsIENvbGUsIEhhb3VpLCBXaW5zaGlwLCAiRGlnaXRhbCBWb2ljZQorICAgICAgICAgRWNobyBDYW5jZWxsZXIgd2l0aCBhIFRNUzMyMDAyMCwKKyAgICAgICAgIGh0dHA6Ly93d3cucm93ZXRlbC5jb20vaW1hZ2VzL2VjaG8vc3ByYTEyOS5wZGYKKworICAgWzNdIEkgaGF2ZSB3cml0dGVuIGEgc2VyaWVzIG9mIGJsb2cgcG9zdHMgb24gdGhpcyB3b3JrLCBoZXJlIGlzCisgICAgICAgUGFydCAxOiBodHRwOi8vd3d3LnJvd2V0ZWwuY29tL2Jsb2cvP3A9MTgKKworICAgWzRdIFRoZSBzb3VyY2UgY29kZSBodHRwOi8vc3ZuLnJvd2V0ZWwuY29tL3NvZnR3YXJlL29zbGVjLworCisgICBbNV0gQSBuaWNlIHJlZmVyZW5jZSBvbiBMTVMgZmlsdGVyczoKKyAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGVhc3RfbWVhbl9zcXVhcmVzX2ZpbHRlcgorCisgICBDcmVkaXRzOgorCisgICBUaGFua3MgdG8gU3RldmUgVW5kZXJ3b29kLCBKZWFuLU1hcmMgVmFsaW4sIGFuZCBSYW1ha3Jpc2huYW4KKyAgIE11dGh1a3Jpc2huYW4gZm9yIHRoZWlyIHN1Z2dlc3Rpb25zIGFuZCBlbWFpbCBkaXNjdXNzaW9ucy4gIFRoYW5rcworICAgYWxzbyB0byB0aG9zZSBwZW9wbGUgd2hvIGNvbGxlY3RlZCBlY2hvIHNhbXBsZXMgZm9yIG1lIHN1Y2ggYXMKKyAgIE1hcmssIFBhd2VsLCBhbmQgUGF2ZWwuCisqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ICAgICAgIC8qIFdlJ3JlIGRvaW5nIGtlcm5lbCB3b3JrICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2RlZmluZSBtYWxsb2MoYSkga21hbGxvYygoYSksIEdGUF9LRVJORUwpCisjZGVmaW5lIGZyZWUoYSkga2ZyZWUoYSkKKworI2luY2x1ZGUgImJpdF9vcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiZWNoby5oIgorCisjZGVmaW5lIE1JTl9UWF9QT1dFUl9GT1JfQURBUFRJT04gICA2NAorI2RlZmluZSBNSU5fUlhfUE9XRVJfRk9SX0FEQVBUSU9OICAgNjQKKyNkZWZpbmUgRFREX0hBTkdPVkVSICAgICAgICAgICAgICAgNjAwICAgICAvKiA2MDAgc2FtcGxlcywgb3IgNzVtcyAgICAgKi8KKyNkZWZpbmUgRENfTE9HMkJFVEEgICAgICAgICAgICAgICAgICAzICAgICAvKiBsb2cyKCkgb2YgREMgZmlsdGVyIEJldGEgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT05TCitcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogYWRhcHRpbmcgY29lZmZzIHVzaW5nIHRoZSB0cmFkaXRpb25hbCBzdG9jaGFzdGljIGRlc2NlbnQgKE4pTE1TIGFsZ29yaXRobSAqLworCisKKyNpZmRlZiBfX0JMQUNLRklOX0FTTV9fCitzdGF0aWMgdm9pZCBfX2lubGluZV9fIGxtc19hZGFwdF9iZyhlY2hvX2Nhbl9zdGF0ZV90ICplYywgaW50IGNsZWFuLCBpbnQgc2hpZnQpCit7CisgICAgaW50IGksIGo7CisgICAgaW50IG9mZnNldDE7CisgICAgaW50IG9mZnNldDI7CisgICAgaW50IGZhY3RvcjsKKyAgICBpbnQgZXhwOworICAgIGludDE2X3QgKnBoaXN0OworICAgIGludCBuOworCisgICAgaWYgKHNoaWZ0ID4gMCkKKwlmYWN0b3IgPSBjbGVhbiA8PCBzaGlmdDsKKyAgICBlbHNlCisJZmFjdG9yID0gY2xlYW4gPj4gLXNoaWZ0OworCisgICAgLyogVXBkYXRlIHRoZSBGSVIgdGFwcyAqLworCisgICAgb2Zmc2V0MiA9IGVjLT5jdXJyX3BvczsKKyAgICBvZmZzZXQxID0gZWMtPnRhcHMgLSBvZmZzZXQyOworICAgIHBoaXN0ID0gJmVjLT5maXJfc3RhdGVfYmcuaGlzdG9yeVtvZmZzZXQyXTsKKworICAgIC8qIHN0OiBhbmQgZW46IGhlbHAgdXMgbG9jYXRlIHRoZSBhc3NlbWJsZXIgaW4gZWNoby5zICovCisKKyAgICAvL2FzbSgic3Q6Iik7CisgICAgbiA9IGVjLT50YXBzOworICAgIGZvciAoaSA9IDAsIGogPSBvZmZzZXQyOyAgaSA8IG47ICBpKyssIGorKykKKyAgICB7CisgICAgICAgZXhwID0gKnBoaXN0KysgKiBmYWN0b3I7CisgICAgICAgZWMtPmZpcl90YXBzMTZbMV1baV0gKz0gKGludDE2X3QpICgoZXhwKygxPDwxNCkpID4+IDE1KTsKKyAgICB9CisgICAgLy9hc20oImVuOiIpOworCisgICAgLyogTm90ZSB0aGUgYXNtIGZvciB0aGUgaW5uZXIgbG9vcCBhYm92ZSBnZW5lcmF0ZWQgYnkgQmxhY2tmaW4gZ2NjCisgICAgICAgNC4xLjEgaXMgcHJldHR5IGdvb2QgKG5vdGUgZXZlbiBwYXJhbGxlbCBpbnN0cnVjdGlvbnMgdXNlZCk6CisKKyAgICAJUjAgPSBXIFtQMCsrXSAoWCk7CisJUjAgKj0gUjI7CisJUjAgPSBSMCArIFIzIChOUykgfHwKKwlSMSA9IFcgW1AxXSAoWCkgfHwKKwlub3A7CisJUjAgPj4+PSAxNTsKKwlSMCA9IFIwICsgUjE7CisJVyBbUDErK10gPSBSMDsKKworCUEgYmxvY2sgYmFzZWQgdXBkYXRlIGFsZ29yaXRobSB3b3VsZCBiZSBtdWNoIGZhc3RlciBidXQgdGhlCisJYWJvdmUgY2FuJ3QgYmUgaW1wcm92ZWQgb24gbXVjaC4gIEV2ZXJ5IGluc3RydWN0aW9uIHNhdmVkIGluCisJdGhlIGxvb3AgYWJvdmUgaXMgMiBNSVBzL2NoISAgVGhlIGZvciBsb29wIGFib3ZlIGlzIHdoZXJlIHRoZQorCUJsYWNrZmluIHNwZW5kcyBtb3N0IG9mIGl0J3MgdGltZSAtIGFib3V0IDE3IE1JUHMvY2ggbWVhc3VyZWQKKwl3aXRoIHNwZWVkdGVzdC5jIHdpdGggMjU2IHRhcHMgKDMybXMpLiAgV3JpdGUtYmFjayBhbmQKKwlXcml0ZS10aHJvdWdoIGNhY2hlIGdhdmUgYWJvdXQgdGhlIHNhbWUgcGVyZm9ybWFuY2UuCisgICAgKi8KK30KKworLyoKKyAgIElERUFTIGZvciBmdXJ0aGVyIG9wdGltaXNhdGlvbiBvZiBsbXNfYWRhcHRfYmcoKToKKworICAgMS8gVGhlIHJvdW5kaW5nIGlzIHF1aXRlIGNvc3RseS4gIENvdWxkIHdlIGtlZXAgYXMgMzIgYml0IGNvZWZmcworICAgdGhlbiBtYWtlIGZpbHRlciBwbHVjayB0aGUgTVMgMTYtYml0cyBvZiB0aGUgY29lZmZzIHdoZW4gZmlsdGVyaW5nPworICAgSG93ZXZlciB0aGlzIHdvdWxkIGxvd2VyIHBvdGVudGlhbCBvcHRpbWlzYXRpb24gb2YgZmlsdGVyLCBhcyBJCisgICB0aGluayB0aGUgZHVhbC1NQUMgYXJjaGl0ZWN0dXJlIHJlcXVpcmVzIHBhY2tlZCAxNiBiaXQgY29lZmZzLgorCisgICAyLyBCbG9jayBiYXNlZCB1cGRhdGUgd291bGQgYmUgbW9yZSBlZmZpY2llbnQsIGFzIHBlciBjb21tZW50cyBhYm92ZSwKKyAgIGNvdWxkIHVzZSBkdWFsIE1BQyBhcmNoaXRlY3R1cmUuCisKKyAgIDMvIExvb2sgZm9yIHNhbWUgc2FtcGxlIEJsYWNrZmluIExNUyBjb2RlLCBzZWUgaWYgd2UgY2FuIGdldCBkdWFsLU1BQworICAgcGFja2luZy4KKworICAgNC8gRXhlY3V0ZSB0aGUgd2hvbGUgZS9jIGluIGEgYmxvY2sgb2Ygc2F5IDIwbXMgcmF0aGVyIHRoYW4gc2FtcGxlCisgICBieSBzYW1wbGUuICBQcm9jZXNzaW5nIGEgZmV3IHNhbXBsZXMgZXZlcnkgbXMgaXMgaW5lZmZpY2llbnQuCisqLworCisjZWxzZQorc3RhdGljIF9faW5saW5lX18gdm9pZCBsbXNfYWRhcHRfYmcoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludCBjbGVhbiwgaW50IHNoaWZ0KQoreworICAgIGludCBpOworCisgICAgaW50IG9mZnNldDE7CisgICAgaW50IG9mZnNldDI7CisgICAgaW50IGZhY3RvcjsKKyAgICBpbnQgZXhwOworCisgICAgaWYgKHNoaWZ0ID4gMCkKKwlmYWN0b3IgPSBjbGVhbiA8PCBzaGlmdDsKKyAgICBlbHNlCisJZmFjdG9yID0gY2xlYW4gPj4gLXNoaWZ0OworCisgICAgLyogVXBkYXRlIHRoZSBGSVIgdGFwcyAqLworCisgICAgb2Zmc2V0MiA9IGVjLT5jdXJyX3BvczsKKyAgICBvZmZzZXQxID0gZWMtPnRhcHMgLSBvZmZzZXQyOworCisgICAgZm9yIChpID0gZWMtPnRhcHMgLSAxOyAgaSA+PSBvZmZzZXQxOyAgaS0tKQorICAgIHsKKyAgICAgICBleHAgPSAoZWMtPmZpcl9zdGF0ZV9iZy5oaXN0b3J5W2kgLSBvZmZzZXQxXSpmYWN0b3IpOworICAgICAgIGVjLT5maXJfdGFwczE2WzFdW2ldICs9IChpbnQxNl90KSAoKGV4cCsoMTw8MTQpKSA+PiAxNSk7CisgICAgfQorICAgIGZvciAoICA7ICBpID49IDA7ICBpLS0pCisgICAgeworICAgICAgIGV4cCA9IChlYy0+ZmlyX3N0YXRlX2JnLmhpc3RvcnlbaSArIG9mZnNldDJdKmZhY3Rvcik7CisgICAgICAgZWMtPmZpcl90YXBzMTZbMV1baV0gKz0gKGludDE2X3QpICgoZXhwKygxPDwxNCkpID4+IDE1KTsKKyAgICB9Cit9CisjZW5kaWYKKworLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2VjaG9fY2FuX3N0YXRlX3QgKmVjaG9fY2FuX2NyZWF0ZShpbnQgbGVuLCBpbnQgYWRhcHRpb25fbW9kZSkKK3sKKyAgICBlY2hvX2Nhbl9zdGF0ZV90ICplYzsKKyAgICBpbnQgaTsKKyAgICBpbnQgajsKKworICAgIGVjID0ga21hbGxvYyhzaXplb2YoKmVjKSwgR0ZQX0tFUk5FTCk7CisgICAgaWYgKGVjID09IE5VTEwpCisgICAgICAgIHJldHVybiAgTlVMTDsKKyAgICBtZW1zZXQoZWMsIDAsIHNpemVvZigqZWMpKTsKKworICAgIGVjLT50YXBzID0gbGVuOworICAgIGVjLT5sb2cydGFwcyA9IHRvcF9iaXQobGVuKTsKKyAgICBlYy0+Y3Vycl9wb3MgPSBlYy0+dGFwcyAtIDE7CisKKyAgICBmb3IgKGkgPSAwOyAgaSA8IDI7ICBpKyspCisgICAgeworICAgICAgICBpZiAoKGVjLT5maXJfdGFwczE2W2ldID0gKGludDE2X3QgKikgbWFsbG9jKChlYy0+dGFwcykqc2l6ZW9mKGludDE2X3QpKSkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChqID0gMDsgIGogPCBpOyAgaisrKQorICAgICAgICAgICAgICAgIGtmcmVlKGVjLT5maXJfdGFwczE2W2pdKTsKKyAgICAgICAgICAgIGtmcmVlKGVjKTsKKyAgICAgICAgICAgIHJldHVybiAgTlVMTDsKKyAgICAgICAgfQorICAgICAgICBtZW1zZXQoZWMtPmZpcl90YXBzMTZbaV0sIDAsIChlYy0+dGFwcykqc2l6ZW9mKGludDE2X3QpKTsKKyAgICB9CisKKyAgICBmaXIxNl9jcmVhdGUoJmVjLT5maXJfc3RhdGUsCisgICAgICAgICAgICAgICAgIGVjLT5maXJfdGFwczE2WzBdLAorICAgICAgICAgICAgICAgICBlYy0+dGFwcyk7CisgICAgZmlyMTZfY3JlYXRlKCZlYy0+ZmlyX3N0YXRlX2JnLAorICAgICAgICAgICAgICAgICBlYy0+ZmlyX3RhcHMxNlsxXSwKKyAgICAgICAgICAgICAgICAgZWMtPnRhcHMpOworCisgICAgZm9yKGk9MDsgaTw1OyBpKyspIHsKKyAgICAgIGVjLT54dnR4W2ldID0gZWMtPnl2dHhbaV0gPSBlYy0+eHZyeFtpXSA9IGVjLT55dnJ4W2ldID0gMDsKKyAgICB9CisKKyAgICBlYy0+Y25nX2xldmVsID0gMTAwMDsKKyAgICBlY2hvX2Nhbl9hZGFwdGlvbl9tb2RlKGVjLCBhZGFwdGlvbl9tb2RlKTsKKworICAgIGVjLT5zbmFwc2hvdCA9IChpbnQxNl90KiltYWxsb2MoZWMtPnRhcHMqc2l6ZW9mKGludDE2X3QpKTsKKyAgICBtZW1zZXQoZWMtPnNuYXBzaG90LCAwLCBzaXplb2YoaW50MTZfdCkqZWMtPnRhcHMpOworCisgICAgZWMtPmNvbmRfbWV0ID0gMDsKKyAgICBlYy0+UHN0YXRlcyA9IDA7CisgICAgZWMtPkx0eGFjYyA9IGVjLT5McnhhY2MgPSBlYy0+TGNsZWFuYWNjID0gZWMtPkxjbGVhbl9iZ2FjYyA9IDA7CisgICAgZWMtPkx0eCA9IGVjLT5McnggPSBlYy0+TGNsZWFuID0gZWMtPkxjbGVhbl9iZyA9IDA7CisgICAgZWMtPnR4XzEgPSBlYy0+dHhfMiA9IGVjLT5yeF8xID0gZWMtPnJ4XzIgPSAwOworICAgIGVjLT5MYmduID0gZWMtPkxiZ25fYWNjID0gMDsKKyAgICBlYy0+TGJnbl91cHBlciA9IDIwMDsKKyAgICBlYy0+TGJnbl91cHBlcl9hY2MgPSBlYy0+TGJnbl91cHBlciA8PCAxMzsKKworICAgIHJldHVybiAgZWM7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBlY2hvX2Nhbl9mcmVlKGVjaG9fY2FuX3N0YXRlX3QgKmVjKQoreworCWludCBpOworCisJZmlyMTZfZnJlZSgmZWMtPmZpcl9zdGF0ZSk7CisJZmlyMTZfZnJlZSgmZWMtPmZpcl9zdGF0ZV9iZyk7CisJZm9yIChpID0gMDsgIGkgPCAyOyAgaSsrKQorCQlrZnJlZShlYy0+ZmlyX3RhcHMxNltpXSk7CisJa2ZyZWUoZWMtPnNuYXBzaG90KTsKKwlrZnJlZShlYyk7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBlY2hvX2Nhbl9hZGFwdGlvbl9tb2RlKGVjaG9fY2FuX3N0YXRlX3QgKmVjLCBpbnQgYWRhcHRpb25fbW9kZSkKK3sKKyAgICBlYy0+YWRhcHRpb25fbW9kZSA9IGFkYXB0aW9uX21vZGU7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBlY2hvX2Nhbl9mbHVzaChlY2hvX2Nhbl9zdGF0ZV90ICplYykKK3sKKyAgICBpbnQgaTsKKworICAgIGVjLT5MdHhhY2MgPSBlYy0+THJ4YWNjID0gZWMtPkxjbGVhbmFjYyA9IGVjLT5MY2xlYW5fYmdhY2MgPSAwOworICAgIGVjLT5MdHggPSBlYy0+THJ4ID0gZWMtPkxjbGVhbiA9IGVjLT5MY2xlYW5fYmcgPSAwOworICAgIGVjLT50eF8xID0gZWMtPnR4XzIgPSBlYy0+cnhfMSA9IGVjLT5yeF8yID0gMDsKKworICAgIGVjLT5MYmduID0gZWMtPkxiZ25fYWNjID0gMDsKKyAgICBlYy0+TGJnbl91cHBlciA9IDIwMDsKKyAgICBlYy0+TGJnbl91cHBlcl9hY2MgPSBlYy0+TGJnbl91cHBlciA8PCAxMzsKKworICAgIGVjLT5ub251cGRhdGVfZHdlbGwgPSAwOworCisgICAgZmlyMTZfZmx1c2goJmVjLT5maXJfc3RhdGUpOworICAgIGZpcjE2X2ZsdXNoKCZlYy0+ZmlyX3N0YXRlX2JnKTsKKyAgICBlYy0+ZmlyX3N0YXRlLmN1cnJfcG9zID0gZWMtPnRhcHMgLSAxOworICAgIGVjLT5maXJfc3RhdGVfYmcuY3Vycl9wb3MgPSBlYy0+dGFwcyAtIDE7CisgICAgZm9yIChpID0gMDsgIGkgPCAyOyAgaSsrKQorICAgICAgICBtZW1zZXQoZWMtPmZpcl90YXBzMTZbaV0sIDAsIGVjLT50YXBzKnNpemVvZihpbnQxNl90KSk7CisKKyAgICBlYy0+Y3Vycl9wb3MgPSBlYy0+dGFwcyAtIDE7CisgICAgZWMtPlBzdGF0ZXMgPSAwOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3ZvaWQgZWNob19jYW5fc25hcHNob3QoZWNob19jYW5fc3RhdGVfdCAqZWMpIHsKKyAgICBtZW1jcHkoZWMtPnNuYXBzaG90LCBlYy0+ZmlyX3RhcHMxNlswXSwgZWMtPnRhcHMqc2l6ZW9mKGludDE2X3QpKTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBEdWFsIFBhdGggRWNobyBDYW5jZWxsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworaW50MTZfdCBlY2hvX2Nhbl91cGRhdGUoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludDE2X3QgdHgsIGludDE2X3QgcngpCit7CisgICAgaW50MzJfdCBlY2hvX3ZhbHVlOworICAgIGludCBjbGVhbl9iZzsKKyAgICBpbnQgdG1wLCB0bXAxOworCisgICAgLyogSW5wdXQgc2NhbGluZyB3YXMgZm91bmQgYmUgcmVxdWlyZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aGVuIHR4CisgICAgICAgc3RhcnRzIGNsaXBwaW5nLiAgQW5vdGhlciBwb3NzaWJsZSB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdGhlCisgICAgICAgZmlsdGVyIGNvZWZmaWNlbnQgc2NhbGluZy4gKi8KKworICAgIGVjLT50eCA9IHR4OyBlYy0+cnggPSByeDsKKyAgICB0eCA+Pj0xOworICAgIHJ4ID4+PTE7CisKKyAgICAvKgorICAgICAgIEZpbHRlciBEQywgM2RCIHBvaW50IGlzIDE2MEh6IChJIHRoaW5rKSwgbm90ZSAzMiBiaXQgcHJlY2lzaW9uIHJlcXVpcmVkCisgICAgICAgb3RoZXJ3aXNlIHZhbHVlcyBkbyBub3QgdHJhY2sgZG93biB0byAwLiBaZXJvIGF0IERDLCBQb2xlIGF0ICgxLUJldGEpCisgICAgICAgb25seSByZWFsIGF4aXMuICBTb21lIGNoaXAgc2V0cyAobGlrZSBTaSBsYWJzKSBkb24ndCBuZWVkCisgICAgICAgdGhpcywgYnV0IHNvbWV0aGluZyBsaWtlIGEgJDEwIFgxMDBQIGNhcmQgZG9lcy4gIEFueSBEQyByZWFsbHkgc2xvd3MKKyAgICAgICBkb3duIGNvbnZlcmdlbmNlLgorCisgICAgICAgTm90ZTogcmVtb3ZlcyBzb21lIGxvdyBmcmVxdWVuY3kgZnJvbSB0aGUgc2lnbmFsLCB0aGlzIHJlZHVjZXMKKyAgICAgICB0aGUgc3BlZWNoIHF1YWxpdHkgd2hlbiBsaXN0ZW5pbmcgdG8gc2FtcGxlcyB0aHJvdWdoIGhlYWRwaG9uZXMKKyAgICAgICBidXQgbWF5IG5vdCBiZSBvYnZpb3VzIHRocm91Z2ggYSB0ZWxlcGhvbmUgaGFuZHNldC4KKworICAgICAgIE5vdGUgdGhhdCB0aGUgM2RCIGZyZXF1ZW5jeSBpbiByYWRpYW5zIGlzIGFwcHJveCBCZXRhLCBlLmcuIGZvcgorICAgICAgIEJldGEgPSAyXigtMykgPSAwLjEyNSwgM2RCIGZyZXEgaXMgMC4xMjUgcmFkcyA9IDE1OUh6LgorICAgICovCisKKyAgICBpZiAoZWMtPmFkYXB0aW9uX21vZGUgJiBFQ0hPX0NBTl9VU0VfUlhfSFBGKSB7CisgICAgICB0bXAgPSByeCA8PCAxNTsKKyNpZiAxCisgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgZ2FpbiBvZiB0aGUgSFBGIGlzIDEuMC4gVGhpcyBjYW4gc3RpbGwgc2F0dXJhdGUgYSBsaXR0bGUgdW5kZXIKKyAgICAgICAgICAgaW1wdWxzZSBjb25kaXRpb25zLCBhbmQgaXQgbWlnaHQgcm9sbCB0byAzMjc2OCBhbmQgbmVlZCBjbGlwcGluZyBvbiBzdXN0YWluZWQgcGVhaworICAgICAgICAgICBsZXZlbCBzaWduYWxzLiBIb3dldmVyLCB0aGUgc2NhbGUgb2Ygc3VjaCBjbGlwcGluZyBpcyBzbWFsbCwgYW5kIHRoZSBlcnJvciBkdWUgdG8KKyAgICAgICAgICAgYW55IHNhdHVyYXRpb24gc2hvdWxkIG5vdCBtYXJrZWRseSBhZmZlY3QgdGhlIGRvd25zdHJlYW0gcHJvY2Vzc2luZy4gKi8KKyAgICAgICAgdG1wIC09ICh0bXAgPj4gNCk7CisjZW5kaWYKKyAgICAgIGVjLT5yeF8xICs9IC0oZWMtPnJ4XzE+PkRDX0xPRzJCRVRBKSArIHRtcCAtIGVjLT5yeF8yOworCisgICAgICAvKiBoYXJkIGxpbWl0IGZpbHRlciB0byBwcmV2ZW50IGNsaXBwaW5nLiAgTm90ZSB0aGF0IGF0IHRoaXMgc3RhZ2UKKwkgcnggc2hvdWxkIGJlIGxpbWl0ZWQgdG8gKy8tIDE2MzgzIGR1ZSB0byByaWdodCBzaGlmdCBhYm92ZSAqLworICAgICAgdG1wMSA9IGVjLT5yeF8xID4+IDE1OworICAgICAgaWYgKHRtcDEgPiAxNjM4MykgdG1wMSA9IDE2MzgzOworICAgICAgaWYgKHRtcDEgPCAtMTYzODMpIHRtcDEgPSAtMTYzODM7CisgICAgICByeCA9IHRtcDE7CisgICAgICBlYy0+cnhfMiA9IHRtcDsKKyAgICB9CisKKyAgICAvKiBCbG9jayBhdmVyYWdlIG9mIHBvd2VyIGluIHRoZSBmaWx0ZXIgc3RhdGVzLiAgVXNlZCBmb3IKKyAgICAgICBhZGFwdGlvbiBwb3dlciBjYWxjdWxhdGlvbi4gKi8KKworICAgIHsKKwlpbnQgbmV3LCBvbGQ7CisKKwkvKiBlZmZpY2llbnQgIm91dCB3aXRoIHRoZSBvbGQgYW5kIGluIHdpdGggdGhlIG5ldyIgYWxnb3JpdGhtIHNvCisJICAgd2UgZG9uJ3QgaGF2ZSB0byByZWNhbGN1bGF0ZSBvdmVyIHRoZSB3aG9sZSBibG9jayBvZgorCSAgIHNhbXBsZXMuICovCisJbmV3ID0gKGludCl0eCAqIChpbnQpdHg7CisJb2xkID0gKGludCllYy0+ZmlyX3N0YXRlLmhpc3RvcnlbZWMtPmZpcl9zdGF0ZS5jdXJyX3Bvc10gKgorICAgICAgICAgICAgICAoaW50KWVjLT5maXJfc3RhdGUuaGlzdG9yeVtlYy0+ZmlyX3N0YXRlLmN1cnJfcG9zXTsKKwllYy0+UHN0YXRlcyArPSAoKG5ldyAtIG9sZCkgKyAoMTw8ZWMtPmxvZzJ0YXBzKSkgPj4gZWMtPmxvZzJ0YXBzOworCWlmIChlYy0+UHN0YXRlcyA8IDApIGVjLT5Qc3RhdGVzID0gMDsKKyAgICB9CisKKyAgICAvKiBDYWxjdWxhdGUgc2hvcnQgdGVybSBhdmVyYWdlIGxldmVscyB1c2luZyBzaW1wbGUgc2luZ2xlIHBvbGUgSUlScyAqLworCisgICAgZWMtPkx0eGFjYyArPSBhYnModHgpIC0gZWMtPkx0eDsKKyAgICBlYy0+THR4ID0gKGVjLT5MdHhhY2MgKyAoMTw8NCkpID4+IDU7CisgICAgZWMtPkxyeGFjYyArPSBhYnMocngpIC0gZWMtPkxyeDsKKyAgICBlYy0+THJ4ID0gKGVjLT5McnhhY2MgKyAoMTw8NCkpID4+IDU7CisKKyAgICAvKiBGb3JlZ3JvdW5kIGZpbHRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisgICAgZWMtPmZpcl9zdGF0ZS5jb2VmZnMgPSBlYy0+ZmlyX3RhcHMxNlswXTsKKyAgICBlY2hvX3ZhbHVlID0gZmlyMTYoJmVjLT5maXJfc3RhdGUsIHR4KTsKKyAgICBlYy0+Y2xlYW4gPSByeCAtIGVjaG9fdmFsdWU7CisgICAgZWMtPkxjbGVhbmFjYyArPSBhYnMoZWMtPmNsZWFuKSAtIGVjLT5MY2xlYW47CisgICAgZWMtPkxjbGVhbiA9IChlYy0+TGNsZWFuYWNjICsgKDE8PDQpKSA+PiA1OworCisgICAgLyogQmFja2dyb3VuZCBmaWx0ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworICAgIGVjaG9fdmFsdWUgPSBmaXIxNigmZWMtPmZpcl9zdGF0ZV9iZywgdHgpOworICAgIGNsZWFuX2JnID0gcnggLSBlY2hvX3ZhbHVlOworICAgIGVjLT5MY2xlYW5fYmdhY2MgKz0gYWJzKGNsZWFuX2JnKSAtIGVjLT5MY2xlYW5fYmc7CisgICAgZWMtPkxjbGVhbl9iZyA9IChlYy0+TGNsZWFuX2JnYWNjICsgKDE8PDQpKSA+PiA1OworCisgICAgLyogQmFja2dyb3VuZCBGaWx0ZXIgYWRhcHRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisgICAgLyogQWxtb3N0IGFsd2F5cyBhZGFwIGJnIGZpbHRlciwganVzdCBzaW1wbGUgRFQgYW5kIGVuZXJneQorICAgICAgIGRldGVjdGlvbiB0byBtaW5pbWlzZSBhZGFwdGlvbiBpbiBjYXNlcyBvZiBzdHJvbmcgZG91YmxlIHRhbGsuCisgICAgICAgSG93ZXZlciB0aGlzIGlzIG5vdCBjcml0aWNhbCBmb3IgdGhlIGR1YWwgcGF0aCBhbGdvcml0aG0uCisgICAgKi8KKyAgICBlYy0+ZmFjdG9yID0gMDsKKyAgICBlYy0+c2hpZnQgPSAwOworICAgIGlmICgoZWMtPm5vbnVwZGF0ZV9kd2VsbCA9PSAwKSkgeworCWludCAgIFAsIGxvZ1AsIHNoaWZ0OworCisJLyogRGV0ZXJtaW5lOgorCisJICAgZiA9IEJldGEgKiBjbGVhbl9iZ19yeC9QIC0tLS0tLSAoMSkKKworCSAgIHdoZXJlIFAgaXMgdGhlIHRvdGFsIHBvd2VyIGluIHRoZSBmaWx0ZXIgc3RhdGVzLgorCisJICAgVGhlIEJvZmZpbnMgaGF2ZSBzaG93biB0aGF0IGlmIHdlIG9iZXkgKDEpIHdlIGNvbnZlcmdlCisJICAgcXVpY2tseSBhbmQgYXZvaWQgaW5zdGFiaWxpdHkuCisKKwkgICBUaGUgY29ycmVjdCBmYWN0b3IgZiBtdXN0IGJlIGluIFEzMCwgYXMgdGhpcyBpcyB0aGUgZml4ZWQKKwkgICBwb2ludCBmb3JtYXQgcmVxdWlyZWQgYnkgdGhlIGxtc19hZGFwdF9iZygpIGZ1bmN0aW9uLAorCSAgIHRoZXJlZm9yZSB0aGUgc2NhbGVkIHZlcnNpb24gb2YgKDEpIGlzOgorCisJICAgKDJeMzApICogZiAgPSAoMl4zMCkgKiBCZXRhICogY2xlYW5fYmdfcngvUAorCSAgICAgICBmYWN0b3IgID0gKDJeMzApICogQmV0YSAqIGNsZWFuX2JnX3J4L1AgICAgICAgICAtLS0tLSAoMikKKworCSAgIFdlIGhhdmUgY2hvc2VuIEJldGEgPSAwLjI1IGJ5IGV4cGVyaW1lbnQsIHNvOgorCisJICAgICAgIGZhY3RvciAgPSAoMl4zMCkgKiAoMl4tMikgKiBjbGVhbl9iZ19yeC9QCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzMCAtIDIgLSBsb2cyKFApKQorCSAgICAgICBmYWN0b3IgID0gY2xlYW5fYmdfcnggMiAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAoMykKKworCSAgIFRvIGF2b2lkIGEgZGl2aWRlIHdlIGFwcHJveGltYXRlIGxvZzIoUCkgYXMgdG9wX2JpdChQKSwKKwkgICB3aGljaCByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgaGlnaGVzdCBub24temVybyBiaXQgaW4KKwkgICBQLiAgVGhpcyBhcHByb3hpbWF0aW9uIGludHJvZHVjZXMgYW4gZXJyb3IgYXMgbGFyZ2UgYXMgYQorCSAgIGZhY3RvciBvZiAyLCBidXQgdGhlIGFsZ29yaXRobSBzZWVtcyB0byBoYW5kbGUgaXQgT0suCisKKwkgICBDb21lIHRvIHRoaW5rIG9mIGl0IGEgZGl2aWRlIG1heSBub3QgYmUgYSBiaWcgZGVhbCBvbiBhCisJICAgbW9kZXJuIERTUCwgc28gaXRzIHByb2JhYmx5IHdvcnRoIGNoZWNraW5nIG91dCB0aGUgY3ljbGVzCisJICAgZm9yIGEgZGl2aWRlIHZlcnN1cyBhIHRvcF9iaXQoKSBpbXBsZW1lbnRhdGlvbi4KKwkqLworCisJUCA9IE1JTl9UWF9QT1dFUl9GT1JfQURBUFRJT04gKyBlYy0+UHN0YXRlczsKKwlsb2dQID0gdG9wX2JpdChQKSArIGVjLT5sb2cydGFwczsKKwlzaGlmdCA9IDMwIC0gMiAtIGxvZ1A7CisJZWMtPnNoaWZ0ID0gc2hpZnQ7CisKKwlsbXNfYWRhcHRfYmcoZWMsIGNsZWFuX2JnLCBzaGlmdCk7CisgICAgfQorCisgICAgLyogdmVyeSBzaW1wbGUgRFREIHRvIG1ha2Ugc3VyZSB3ZSBkb250IHRyeSBhbmQgYWRhcHQgd2l0aCBzdHJvbmcKKyAgICAgICBuZWFyIGVuZCBzcGVlY2ggKi8KKworICAgIGVjLT5hZGFwdCA9IDA7CisgICAgaWYgKChlYy0+THJ4ID4gTUlOX1JYX1BPV0VSX0ZPUl9BREFQVElPTikgJiYgKGVjLT5McnggPiBlYy0+THR4KSkKKwllYy0+bm9udXBkYXRlX2R3ZWxsID0gRFREX0hBTkdPVkVSOworICAgIGlmIChlYy0+bm9udXBkYXRlX2R3ZWxsKQorCWVjLT5ub251cGRhdGVfZHdlbGwtLTsKKworICAgIC8qIFRyYW5zZmVyIGxvZ2ljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyAgICAvKiBUaGVzZSBjb25kaXRpb25zIGFyZSBmcm9tIHRoZSBkdWFsIHBhdGggcGFwZXIgWzFdLCBJIG1lc3NlZCB3aXRoCisgICAgICAgdGhlbSBhIGJpdCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiAqLworCisgICAgaWYgKChlYy0+YWRhcHRpb25fbW9kZSAmIEVDSE9fQ0FOX1VTRV9BREFQVElPTikgJiYKKwkoZWMtPm5vbnVwZGF0ZV9kd2VsbCA9PSAwKSAmJgorCSg4KmVjLT5MY2xlYW5fYmcgPCA3KmVjLT5MY2xlYW4pIC8qIChlYy0+TGNsZWFuX2JnIDwgMC44NzUqZWMtPkxjbGVhbikgKi8gJiYKKwkoOCplYy0+TGNsZWFuX2JnIDwgZWMtPkx0eCkgICAgICAvKiAoZWMtPkxjbGVhbl9iZyA8IDAuMTI1KmVjLT5MdHgpICAgICovICkKKyAgICB7CisJaWYgKGVjLT5jb25kX21ldCA9PSA2KSB7CisJICAgIC8qIEJHIGZpbHRlciBoYXMgaGFkIGJldHRlciByZXN1bHRzIGZvciA2IGNvbnNlY3V0aXZlIHNhbXBsZXMgKi8KKwkgICAgZWMtPmFkYXB0ID0gMTsKKwkgICAgbWVtY3B5KGVjLT5maXJfdGFwczE2WzBdLCBlYy0+ZmlyX3RhcHMxNlsxXSwgZWMtPnRhcHMqc2l6ZW9mKGludDE2X3QpKTsKKwl9CisJZWxzZQorCSAgICBlYy0+Y29uZF9tZXQrKzsKKyAgICB9CisgICAgZWxzZQorCWVjLT5jb25kX21ldCA9IDA7CisKKyAgICAvKiBOb24tTGluZWFyIFByb2Nlc3NpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworICAgIGVjLT5jbGVhbl9ubHAgPSBlYy0+Y2xlYW47CisgICAgaWYgKGVjLT5hZGFwdGlvbl9tb2RlICYgRUNIT19DQU5fVVNFX05MUCkKKyAgICB7CisgICAgICAgIC8qIE5vbi1saW5lYXIgcHJvY2Vzc29yIC0gYSBmYW5jeSB3YXkgdG8gc2F5ICJ6YXAgc21hbGwgc2lnbmFscywgdG8gYXZvaWQKKyAgICAgICAgICAgcmVzaWR1YWwgZWNobyBkdWUgdG8gKHVMYXcvQUxhdykgbm9uLWxpbmVhcml0eSBpbiB0aGUgY2hhbm5lbC4iLiAqLworCisgICAgICBpZiAoKDE2KmVjLT5MY2xlYW4gPCBlYy0+THR4KSkKKyAgICAgIHsKKwkvKiBPdXIgZS9jIGhhcyBpbXByb3ZlZCBlY2hvIGJ5IGF0IGxlYXN0IDI0IGRCIChlYWNoIGZhY3RvciBvZiAyIGlzIDZkQiwKKwkgICBzbyAyKjIqMioyPTE2IGlzIHRoZSBzYW1lIGFzIDYrNis2KzY9MjRkQikgKi8KKyAgICAgICAgaWYgKGVjLT5hZGFwdGlvbl9tb2RlICYgRUNIT19DQU5fVVNFX0NORykKKwl7CisJICAgIGVjLT5jbmdfbGV2ZWwgPSBlYy0+TGJnbjsKKworCSAgICAvKiBWZXJ5IGVsZW1lbnRhcnkgY29tZm9ydCBub2lzZSBnZW5lcmF0aW9uLiAgSnVzdCByYW5kb20KKwkgICAgICAgbnVtYmVycyByb2xsZWQgb2ZmIHZlcnkgdmFndWVseSBIb3RoLWxpa2UuICBEUjogVGhpcworCSAgICAgICBub2lzZSBkb2Vzbid0IHNvdW5kIHF1aXRlIHJpZ2h0IHRvIG1lIC0gSSBzdXNwZWN0IHRoZXJlCisJICAgICAgIGFyZSBzb21lIG92ZXJsZm93IGlzc3VlcyBpbiB0aGUgZmlsdGVyaW5nIGFzIGl0J3MgdG9vCisJICAgICAgICJjcmFja2x5Ii4gIFRPRE86IGRlYnVnIHRoaXMsIG1heWJlIGp1c3QgcGxheSBub2lzZSBhdAorCSAgICAgICBoaWdoIGxldmVsIG9yIGxvb2sgYXQgc3BlY3RydW0uCisJICAgICovCisKKwkgICAgZWMtPmNuZ19ybmRudW0gPSAxNjY0NTI1VSplYy0+Y25nX3JuZG51bSArIDEwMTM5MDQyMjNVOworCSAgICBlYy0+Y25nX2ZpbHRlciA9ICgoZWMtPmNuZ19ybmRudW0gJiAweEZGRkYpIC0gMzI3NjggKyA1KmVjLT5jbmdfZmlsdGVyKSA+PiAzOworCSAgICBlYy0+Y2xlYW5fbmxwID0gKGVjLT5jbmdfZmlsdGVyKmVjLT5jbmdfbGV2ZWwqOCkgPj4gMTQ7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlYy0+YWRhcHRpb25fbW9kZSAmIEVDSE9fQ0FOX1VTRV9DTElQKQorCXsKKwkgICAgLyogVGhpcyBzb3VuZHMgbXVjaCBiZXR0ZXIgdGhhbiBDTkcgKi8KKwkgICAgaWYgKGVjLT5jbGVhbl9ubHAgPiBlYy0+TGJnbikKKwkgICAgICBlYy0+Y2xlYW5fbmxwID0gZWMtPkxiZ247CisJICAgIGlmIChlYy0+Y2xlYW5fbmxwIDwgLWVjLT5MYmduKQorCSAgICAgIGVjLT5jbGVhbl9ubHAgPSAtZWMtPkxiZ247CisJfQorCWVsc2UKKyAgICAgICAgeworCSAgLyoganVzdCBtdXRlIHRoZSByZXNpZHVhbCwgZG9lc24ndCBzb3VuZCB2ZXJ5IGdvb2QsIHVzZWQgbWFpbmx5CisJICAgICBpbiBHMTY4IHRlc3RzICovCisgICAgICAgICAgZWMtPmNsZWFuX25scCA9IDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworCSAgLyogQmFja2dyb3VuZCBub2lzZSBlc3RpbWF0b3IuICBJIHRyaWVkIGEgZmV3IGFsZ29yaXRobXMKKwkgICAgIGhlcmUgd2l0aG91dCBtdWNoIGx1Y2suICBUaGlzIHZlcnkgc2ltcGxlIG9uZSBzZWVtcyB0bworCSAgICAgd29yayBiZXN0LCB3ZSBqdXN0IGF2ZXJhZ2UgdGhlIGxldmVsIHVzaW5nIGEgc2xvdyAoMSBzZWMKKwkgICAgIHRpbWUgY29uc3QpIGZpbHRlciBpZiB0aGUgY3VycmVudCBsZXZlbCBpcyBsZXNzIHRoYW4gYQorCSAgICAgKGV4cGVyaW1lbnRhbGx5IGRlcml2ZWQpIGNvbnN0YW50LiAgVGhpcyBtZWFucyB3ZSBkb250CisJICAgICBpbmNsdWRlIGhpZ2ggbGV2ZWwgc2lnbmFscyBsaWtlIG5lYXIgZW5kIHNwZWVjaC4gIFdoZW4KKwkgICAgIGNvbWJpbmVkIHdpdGggQ05HIG9yIGVzcGVjaWFsbHkgQ0xJUCBzZWVtcyB0byB3b3JrIE9LLgorCSAgKi8KKwkgIGlmIChlYy0+TGNsZWFuIDwgNDApIHsKKwkgICAgICBlYy0+TGJnbl9hY2MgKz0gYWJzKGVjLT5jbGVhbikgLSBlYy0+TGJnbjsKKwkgICAgICBlYy0+TGJnbiA9IChlYy0+TGJnbl9hY2MgKyAoMTw8MTEpKSA+PiAxMjsKKwkgIH0KKyAgICAgICB9CisgICAgfQorCisgICAgLyogUm9sbCBhcm91bmQgdGhlIHRhcHMgYnVmZmVyICovCisgICAgaWYgKGVjLT5jdXJyX3BvcyA8PSAwKQorICAgICAgICBlYy0+Y3Vycl9wb3MgPSBlYy0+dGFwczsKKyAgICBlYy0+Y3Vycl9wb3MtLTsKKworICAgIGlmIChlYy0+YWRhcHRpb25fbW9kZSAmIEVDSE9fQ0FOX0RJU0FCTEUpCisgICAgICBlYy0+Y2xlYW5fbmxwID0gcng7CisKKyAgICAvKiBPdXRwdXQgc2NhbGVkIGJhY2sgdXAgYWdhaW4gdG8gbWF0Y2ggaW5wdXQgc2NhbGluZyAqLworCisgICAgcmV0dXJuIChpbnQxNl90KSBlYy0+Y2xlYW5fbmxwIDw8IDE7Cit9CisKKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBUaGlzIGZ1bmN0aW9uIGlzIHNlcGVyYXRlZCBmcm9tIHRoZSBlY2hvIGNhbmNlbGxlciBpcyBpdCBpcyB1c3VhbGx5IGNhbGxlZAorICAgYXMgcGFydCBvZiB0aGUgdHggcHJvY2Vzcy4gIFNlZSByeCBIUCAoREMgYmxvY2tpbmcpIGZpbHRlciBhYm92ZSwgaXQncworICAgdGhlIHNhbWUgZGVzaWduLgorCisgICBTb21lIHNvZnQgcGhvbmVzIHNlbmQgc3BlZWNoIHNpZ25hbHMgd2l0aCBhIGxvdCBvZiBsb3cgZnJlcXVlbmN5CisgICBlbmVyZ3ksIGUuZy4gZG93biB0byAyMEh6LiAgVGhpcyBjYW4gbWFrZSB0aGUgaHlicmlkIG5vbi1saW5lYXIKKyAgIHdoaWNoIGNhdXNlcyB0aGUgZWNobyBjYW5jZWxsZXIgdG8gZmFsbCBvdmVyLiAgVGhpcyBmaWx0ZXIgY2FuIGhlbHAKKyAgIGJ5IHJlbW92aW5nIGFueSBsb3cgZnJlcXVlbmN5IGJlZm9yZSBpdCBnZXRzIHRvIHRoZSB0eCBwb3J0IG9mIHRoZQorICAgaHlicmlkLgorCisgICBJdCBjYW4gYWxzbyBoZWxwIGJ5IHJlbW92aW5nIGFuZCBEQyBpbiB0aGUgdHggc2lnbmFsLiAgREMgaXMgYmFkCisgICBmb3IgTE1TIGFsZ29yaXRobXMuCisKKyAgIFRoaXMgaXMgb25lIG9mIHRoZSBjbGFzc2ljIERDIHJlbW92YWwgZmlsdGVycywgYWRqdXN0ZWQgdG8gcHJvdmlkZSBzdWZmaWNpZW50CisgICBiYXNzIHJvbGxvZmYgdG8gbWVldCB0aGUgYWJvdmUgcmVxdWlyZW1lbnQgdG8gcHJvdGVjdCBoeWJyaWRzIGZyb20gdGhpbmdzIHRoYXQKKyAgIHVwc2V0IHRoZW0uIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3VjY2Vzc2l2ZSBzYW1wbGVzIHByb2R1Y2VzIGEgbG91c3kgSFBGLCBhbmQKKyAgIHRoZW4gYSBzdWl0YWJseSBwbGFjZWQgcG9sZSBmbGF0dGVucyB0aGluZ3Mgb3V0LiBUaGUgZmluYWwgcmVzdWx0IGlzIGEgbmljZWx5CisgICByb2xsZWQgb2ZmIGJhc3MgZW5kLiBUaGUgZmlsdGVyaW5nIGlzIGltcGxlbWVudGVkIHdpdGggZXh0ZW5kZWQgZnJhY3Rpb25hbAorICAgcHJlY2lzaW9uLCB3aGljaCBub2lzZSBzaGFwZXMgdGhpbmdzLCBnaXZpbmcgdmVyeSBjbGVhbiBEQyByZW1vdmFsLgorKi8KKworaW50MTZfdCBlY2hvX2Nhbl9ocGZfdHgoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludDE2X3QgdHgpIHsKKyAgICBpbnQgdG1wLCB0bXAxOworCisgICAgaWYgKGVjLT5hZGFwdGlvbl9tb2RlICYgRUNIT19DQU5fVVNFX1RYX0hQRikgeworICAgICAgICB0bXAgPSB0eCA8PCAxNTsKKyNpZiAxCisgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgZ2FpbiBvZiB0aGUgSFBGIGlzIDEuMC4gVGhlIGZpcnN0IGNhbiBzdGlsbCBzYXR1cmF0ZSBhIGxpdHRsZSB1bmRlcgorICAgICAgICAgICBpbXB1bHNlIGNvbmRpdGlvbnMsIGFuZCBpdCBtaWdodCByb2xsIHRvIDMyNzY4IGFuZCBuZWVkIGNsaXBwaW5nIG9uIHN1c3RhaW5lZCBwZWFrCisgICAgICAgICAgIGxldmVsIHNpZ25hbHMuIEhvd2V2ZXIsIHRoZSBzY2FsZSBvZiBzdWNoIGNsaXBwaW5nIGlzIHNtYWxsLCBhbmQgdGhlIGVycm9yIGR1ZSB0bworICAgICAgICAgICBhbnkgc2F0dXJhdGlvbiBzaG91bGQgbm90IG1hcmtlZGx5IGFmZmVjdCB0aGUgZG93bnN0cmVhbSBwcm9jZXNzaW5nLiAqLworICAgICAgICB0bXAgLT0gKHRtcCA+PiA0KTsKKyNlbmRpZgorICAgICAgICBlYy0+dHhfMSArPSAtKGVjLT50eF8xPj5EQ19MT0cyQkVUQSkgKyB0bXAgLSBlYy0+dHhfMjsKKyAgICAgICAgdG1wMSA9IGVjLT50eF8xID4+IDE1OworCWlmICh0bXAxID4gMzI3NjcpIHRtcDEgPSAzMjc2NzsKKwlpZiAodG1wMSA8IC0zMjc2NykgdG1wMSA9IC0zMjc2NzsKKwl0eCA9IHRtcDE7CisgICAgICAgIGVjLT50eF8yID0gdG1wOworICAgIH0KKworICAgIHJldHVybiB0eDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2VjaG8uaCBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2VjaG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTkxYjQzOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2VjaG8uaApAQCAtMCwwICsxLDIyMCBAQAorLyoKKyAqIFNwYW5EU1AgLSBhIHNlcmllcyBvZiBEU1AgY29tcG9uZW50cyBmb3IgdGVsZXBob255CisgKgorICogZWNoby5jIC0gQSBsaW5lIGVjaG8gY2FuY2VsbGVyLiAgVGhpcyBjb2RlIGlzIGJlaW5nIGRldmVsb3BlZAorICogICAgICAgICAgYWdhaW5zdCBhbmQgcGFydGlhbGx5IGNvbXBsaWVzIHdpdGggRzE2OC4KKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXZlIFVuZGVyd29vZCA8c3RldmV1QGNvcHBpY2Uub3JnPgorICogICAgICAgICBhbmQgRGF2aWQgUm93ZSA8ZGF2aWRfYXRfcm93ZXRlbF9kb3RfY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBTdGV2ZSBVbmRlcndvb2QgYW5kIDIwMDcgRGF2aWQgUm93ZQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICoKKyAqICRJZDogZWNoby5oLHYgMS45IDIwMDYvMTAvMjQgMTM6NDU6Mjggc3RldmV1IEV4cCAkCisgKi8KKworI2lmbmRlZiBfX0VDSE9fSAorI2RlZmluZSBfX0VDSE9fSAorCisvKiEgXHBhZ2UgZWNob19jYW5fcGFnZSBMaW5lIGVjaG8gY2FuY2VsbGF0aW9uIGZvciB2b2ljZQorCitcc2VjdGlvbiBlY2hvX2Nhbl9wYWdlX3NlY18xIFdoYXQgZG9lcyBpdCBkbz8KK1RoaXMgbW9kdWxlIGFpbXMgdG8gcHJvdmlkZSBHLjE2OC0yMDAyIGNvbXBsaWFudCBlY2hvIGNhbmNlbGxhdGlvbiwgdG8gcmVtb3ZlCitlbGVjdHJpY2FsIGVjaG9lcyAoZS5nLiBmcm9tIDItNCB3aXJlIGh5YnJpZHMpIGZyb20gdm9pY2UgY2FsbHMuCisKK1xzZWN0aW9uIGVjaG9fY2FuX3BhZ2Vfc2VjXzIgSG93IGRvZXMgaXQgd29yaz8KK1RoZSBoZWFydCBvZiB0aGUgZWNobyBjYW5jZWxsb3IgaXMgRklSIGZpbHRlci4gVGhpcyBpcyBhZGFwdGVkIHRvIG1hdGNoIHRoZQorZWNobyBpbXB1bHNlIHJlc3BvbnNlIG9mIHRoZSB0ZWxlcGhvbmUgbGluZS4gSXQgbXVzdCBiZSBsb25nIGVub3VnaCB0bworYWRlcXVhdGVseSBjb3ZlciB0aGUgZHVyYXRpb24gb2YgdGhhdCBpbXB1bHNlIHJlc3BvbnNlLiBUaGUgc2lnbmFsIHRyYW5zbWl0dGVkCit0byB0aGUgdGVsZXBob25lIGxpbmUgaXMgcGFzc2VkIHRocm91Z2ggdGhlIEZJUiBmaWx0ZXIuIE9uY2UgdGhlIEZJUiBpcworcHJvcGVybHkgYWRhcHRlZCwgdGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgYW4gZXN0aW1hdGUgb2YgdGhlIGVjaG8gc2lnbmFsCityZWNlaXZlZCBmcm9tIHRoZSBsaW5lLiBUaGlzIGlzIHN1YnRyYWN0ZWQgZnJvbSB0aGUgcmVjZWl2ZWQgc2lnbmFsLiBUaGUgcmVzdWx0CitpcyBhbiBlc3RpbWF0ZSBvZiB0aGUgc2lnbmFsIHdoaWNoIG9yaWdpbmF0ZWQgYXQgdGhlIGZhciBlbmQgb2YgdGhlIGxpbmUsIGZyZWUKK2Zyb20gZWNob3Mgb2Ygb3VyIG93biB0cmFuc21pdHRlZCBzaWduYWwuCisKK1RoZSBsZWFzdCBtZWFuIHNxdWFyZXMgKExNUykgYWxnb3JpdGhtIGlzIGF0dHJpYnV0ZWQgdG8gV2lkcm93IGFuZCBIb2ZmLCBhbmQKK3dhcyBpbnRyb2R1Y2VkIGluIDE5NjAuIEl0IGlzIHRoZSBjb21tb25lc3QgZm9ybSBvZiBmaWx0ZXIgYWRhcHRpb24gdXNlZCBpbgordGhpbmdzIGxpa2UgbW9kZW0gbGluZSBlcXVhbGlzZXJzIGFuZCBsaW5lIGVjaG8gY2FuY2VsbGVycy4gVGhlcmUgaXQgd29ya3MgdmVyeQord2VsbC4gIEhvd2V2ZXIsIGl0IG9ubHkgd29ya3Mgd2VsbCBmb3Igc2lnbmFscyBvZiBjb25zdGFudCBhbXBsaXR1ZGUuIEl0IHdvcmtzCit2ZXJ5IHBvb3JseSBmb3IgdGhpbmdzIGxpa2Ugc3BlZWNoIGVjaG8gY2FuY2VsbGF0aW9uLCB3aGVyZSB0aGUgc2lnbmFsIGxldmVsCit2YXJpZXMgd2lkZWx5LiAgVGhpcyBpcyBxdWl0ZSBlYXN5IHRvIGZpeC4gSWYgdGhlIHNpZ25hbCBsZXZlbCBpcyBub3JtYWxpc2VkIC0KK3NpbWlsYXIgdG8gYXBwbHlpbmcgQUdDIC0gTE1TIGNhbiB3b3JrIGFzIHdlbGwgZm9yIGEgc2lnbmFsIG9mIHZhcnlpbmcKK2FtcGxpdHVkZSBhcyBpdCBkb2VzIGZvciBhIG1vZGVtIHNpZ25hbC4gVGhpcyBub3JtYWxpc2VkIGxlYXN0IG1lYW4gc3F1YXJlcworKE5MTVMpIGFsZ29yaXRobSBpcyB0aGUgY29tbW9uZXN0IG9uZSB1c2VkIGZvciBzcGVlY2ggZWNobyBjYW5jZWxsYXRpb24uIE1hbnkKK290aGVyIGFsZ29yaXRobXMgZXhpc3QgLSBlLmcuIFJMUyAoZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgS2FsbWFuIGZpbHRlcmluZyksCitGQVAsIGV0Yy4gU29tZSBwZXJmb3JtIHNpZ25pZmljYW50bHkgYmV0dGVyIHRoYW4gTkxNUy4gIEhvd2V2ZXIsIGZhY3RvcnMgc3VjaAorYXMgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5IGFuZCBwYXRlbnRzIGZhdm91ciB0aGUgdXNlIG9mIE5MTVMuCisKK0Egc2ltcGxlIHJlZmluZW1lbnQgdG8gTkxNUyBjYW4gaW1wcm92ZSBpdHMgcGVyZm9ybWFuY2Ugd2l0aCBzcGVlY2guIE5MTVMgdGVuZHMKK3RvIGFkYXB0IGJlc3QgdG8gdGhlIHN0cm9uZ2VzdCBwYXJ0cyBvZiBhIHNpZ25hbC4gSWYgdGhlIHNpZ25hbCBpcyB3aGl0ZSBub2lzZSwKK3RoZSBOTE1TIGFsZ29yaXRobSB3b3JrcyB2ZXJ5IHdlbGwuIEhvd2V2ZXIsIHNwZWVjaCBoYXMgbW9yZSBsb3cgZnJlcXVlbmN5IHRoYW4KK2hpZ2ggZnJlcXVlbmN5IGNvbnRlbnQuIFByZS13aGl0ZW5pbmcgKGkuZS4gZmlsdGVyaW5nIHRoZSBzaWduYWwgdG8gZmxhdHRlbiBpdHMKK3NwZWN0cnVtKSB0aGUgZWNobyBzaWduYWwgaW1wcm92ZXMgdGhlIGFkYXB0IHJhdGUgZm9yIHNwZWVjaCwgYW5kIGVuc3VyZXMgdGhlCitmaW5hbCByZXNpZHVhbCBzaWduYWwgaXMgbm90IGhlYXZpbHkgYmlhc2VkIHRvd2FyZHMgaGlnaCBmcmVxdWVuY2llcy4gQSB2ZXJ5Citsb3cgY29tcGxleGl0eSBmaWx0ZXIgaXMgYWRlcXVhdGUgZm9yIHRoaXMsIHNvIHByZS13aGl0ZW5pbmcgYWRkcyBsaXR0bGUgdG8gdGhlCitjb21wdXRlIHJlcXVpcmVtZW50cyBvZiB0aGUgZWNobyBjYW5jZWxsZXIuCisKK0FuIEZJUiBmaWx0ZXIgYWRhcHRlZCB1c2luZyBwcmUtd2hpdGVuZWQgTkxNUyBwZXJmb3JtcyB3ZWxsLCBwcm92aWRlZCBjZXJ0YWluCitjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgICAtIFRoZSB0cmFuc21pdHRlZCBzaWduYWwgaGFzIHBvb3Igc2VsZi1jb3JyZWxhdGlvbi4KKyAgICAtIFRoZXJlIGlzIG5vIHNpZ25hbCBiZWluZyBnZW5lcmF0ZWQgd2l0aGluIHRoZSBlbnZpcm9ubWVudCBiZWluZworICAgICAgY2FuY2VsbGVkLgorCitUaGUgZGlmZmljdWx0eSBpcyB0aGF0IG5laXRoZXIgb2YgdGhlc2UgY2FuIGJlIGd1YXJhbnRlZWQuCisKK0lmIHRoZSBhZGFwdGlvbiBpcyBwZXJmb3JtZWQgd2hpbGUgdHJhbnNtaXR0aW5nIG5vaXNlIChvciBzb21ldGhpbmcgZmFpcmx5Citub2lzZSBsaWtlLCBzdWNoIGFzIHZvaWNlKSB0aGUgYWRhcHRpb24gd29ya3MgdmVyeSB3ZWxsLiBJZiB0aGUgYWRhcHRpb24gaXMKK3BlcmZvcm1lZCB3aGlsZSB0cmFuc21pdHRpbmcgc29tZXRoaW5nIGhpZ2hseSBjb3JyZWxhdGl2ZSAodHlwaWNhbGx5IG5hcnJvdworYmFuZCBlbmVyZ3kgc3VjaCBhcyBzaWduYWxsaW5nIHRvbmVzIG9yIERUTUYpLCB0aGUgYWRhcHRpb24gY2FuIGdvIHNlcmlvdXNseQord3JvbmcuIFRoZSByZWFzb24gaXMgdGhlcmUgaXMgb25seSBvbmUgc29sdXRpb24gZm9yIHRoZSBhZGFwdGlvbiBvbiBhIG5lYXIKK3JhbmRvbSBzaWduYWwgLSB0aGUgaW1wdWxzZSByZXNwb25zZSBvZiB0aGUgbGluZS4gRm9yIGEgcmVwZXRpdGl2ZSBzaWduYWwsCit0aGVyZSBhcmUgYW55IG51bWJlciBvZiBzb2x1dGlvbnMgd2hpY2ggY29udmVyZ2UgdGhlIGFkYXB0aW9uLCBhbmQgbm90aGluZworZ3VpZGVzIHRoZSBhZGFwdGlvbiB0byBjaG9vc2UgdGhlIGdlbmVyYWxpc2VkIG9uZS4gQWxsb3dpbmcgYW4gdW50cmFpbmVkCitjYW5jZWxsZXIgdG8gY29udmVyZ2Ugb24gdGhpcyBraW5kIG9mIG5hcnJvd2JhbmQgZW5lcmd5IHByb2JhYmx5IGEgZ29vZCB0aGluZywKK3NpbmNlIGF0IGxlYXN0IGl0IGNhbmNlbHMgdGhlIHRvbmVzLiBBbGxvd2luZyBhIHdlbGwgY29udmVyZ2VkIGNhbmNlbGxlciB0bworY29udGludWUgY29udmVyZ2luZyBvbiBzdWNoIGVuZXJneSBpcyBqdXN0IGEgd2F5IHRvIHJ1aW4gaXRzIGdlbmVyYWxpc2VkCithZGFwdGlvbi4gQSBuYXJyb3diYW5kIGRldGVjdG9yIGlzIG5lZWRlZCwgc28gYWRhcGF0aW9uIGNhbiBiZSBzdXNwZW5kZWQgYXQKK2FwcHJvcHJpYXRlIHRpbWVzLgorCitUaGUgYWRhcHRpb24gcHJvY2VzcyBpcyBiYXNlZCBvbiB0cnlpbmcgdG8gZWxpbWluYXRlIHRoZSByZWNlaXZlZCBzaWduYWwuIFdoZW4KK3RoZXJlIGlzIGFueSBzaWduYWwgZnJvbSB3aXRoaW4gdGhlIGVudmlyb25tZW50IGJlaW5nIGNhbmNlbGxlZCBpdCBtYXkgdXBzZXQKK3RoZSBhZGFwdGlvbiBwcm9jZXNzLiBTaW1pbGFybHksIGlmIHRoZSBzaWduYWwgd2UgYXJlIHRyYW5zbWl0dGluZyBpcyBzbWFsbCwKK25vaXNlIG1heSBkb21pbmF0ZSBhbmQgZGlzdHVyYiB0aGUgYWRhcHRpb24gcHJvY2Vzcy4gSWYgd2UgY2FuIGVuc3VyZSB0aGF0IHRoZQorYWRhcHRpb24gaXMgb25seSBwZXJmb3JtZWQgd2hlbiB3ZSBhcmUgdHJhbnNtaXR0aW5nIGEgc2lnbmlmaWNhbnQgc2lnbmFsIGxldmVsLAorYW5kIHRoZSBlbnZpcm9ubWVudCBpcyBub3QsIHRoaW5ncyB3aWxsIGJlIE9LLiBDbGVhcmx5LCBpdCBpcyBlYXN5IHRvIHRlbGwgd2hlbgord2UgYXJlIHNlbmRpbmcgYSBzaWduaWZpY2FudCBzaWduYWwuIFRlbGxpbmcsIGlmIHRoZSBlbnZpcm9ubWVudCBpcyBnZW5lcmF0aW5nCithIHNpZ25pZmljYW50IHNpZ25hbCwgYW5kIGRvaW5nIGl0IHdpdGggc3VmZmljaWVudCBzcGVlZCB0aGF0IHRoZSBhZGFwdGlvbiB3aWxsCitub3QgaGF2ZSBkaXZlcmdlZCB0b28gbXVjaCBtb3JlIHdlIHN0b3AgaXQsIGlzIGEgbGl0dGxlIGhhcmRlci4KKworVGhlIGtleSBwcm9ibGVtIGluIGRldGVjdGluZyB3aGVuIHRoZSBlbnZpcm9ubWVudCBpcyBzb3VyY2luZyBzaWduaWZpY2FudAorZW5lcmd5IGlzIHRoYXQgd2UgbXVzdCBkbyB0aGlzIHZlcnkgcXVpY2tseS4gR2l2ZW4gYSByZWFzb25hYmx5IGxvbmcgc2FtcGxlIG9mCit0aGUgcmVjZWl2ZWQgc2lnbmFsLCB0aGVyZSBhcmUgYSBudW1iZXIgb2Ygc3RyYXRlZ2llcyB3aGljaCBtYXkgYmUgdXNlZCB0bworYXNzZXNzIHdoZXRoZXIgdGhhdCBzaWduYWwgY29udGFpbnMgYSBzdHJvbmcgZmFyIGVuZCBjb21wb25lbnQuIEhvd2V2ZXIsIGJ5IHRoZQordGltZSB0aGF0IGFzc2Vzc21lbnQgaXMgY29tcGxldGUgdGhlIGZhciBlbmQgc2lnbmFsIHdpbGwgaGF2ZSBhbHJlYWR5IGNhdXNlZAorbWFqb3IgbWlzLWNvbnZlcmdlbmNlIGluIHRoZSBhZGFwdGlvbiBwcm9jZXNzLiBBbiBhc3Nlc3NtZW50IGFsZ29yaXRobSBpcworbmVlZGVkIHdoaWNoIHByb2R1Y2VzIGEgZmFpcmx5IGFjY3VyYXRlIHJlc3VsdCBmcm9tIGEgdmVyeSBzaG9ydCBidXJzdCBvZiBmYXIKK2VuZCBlbmVyZ3kuCisKK1xzZWN0aW9uIGVjaG9fY2FuX3BhZ2Vfc2VjXzMgSG93IGRvIEkgdXNlIGl0PworVGhlIGVjaG8gY2FuY2VsbG9yIHByb2Nlc3NlcyBib3RoIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZSBzdHJlYW1zIHNhbXBsZSBieQorc2FtcGxlLiBUaGUgcHJvY2Vzc2luZyBmdW5jdGlvbiBpcyBub3QgZGVjbGFyZWQgaW5saW5lLiBVbmZvcnR1bmF0ZWx5LAorY2FuY2VsbGF0aW9uIHJlcXVpcmVzIG1hbnkgb3BlcmF0aW9ucyBwZXIgc2FtcGxlLCBzbyB0aGUgY2FsbCBvdmVyaGVhZCBpcyBvbmx5CithIG1pbm9yIGJ1cmRlbi4KKyovCisKKyNpbmNsdWRlICJmaXIuaCIKKworLyogTWFzayBiaXRzIGZvciB0aGUgYWRhcHRpb24gbW9kZSAqLworI2RlZmluZSBFQ0hPX0NBTl9VU0VfQURBUFRJT04JMHgwMQorI2RlZmluZSBFQ0hPX0NBTl9VU0VfTkxQCTB4MDIKKyNkZWZpbmUgRUNIT19DQU5fVVNFX0NORwkweDA0CisjZGVmaW5lIEVDSE9fQ0FOX1VTRV9DTElQCTB4MDgKKyNkZWZpbmUgRUNIT19DQU5fVVNFX1RYX0hQRgkweDEwCisjZGVmaW5lIEVDSE9fQ0FOX1VTRV9SWF9IUEYJMHgyMAorI2RlZmluZSBFQ0hPX0NBTl9ESVNBQkxFCTB4NDAKKworLyohCisgICAgRy4xNjggZWNobyBjYW5jZWxsZXIgZGVzY3JpcHRvci4gVGhpcyBkZWZpbmVzIHRoZSB3b3JraW5nIHN0YXRlIGZvciBhIGxpbmUKKyAgICBlY2hvIGNhbmNlbGxlci4KKyovCit0eXBlZGVmIHN0cnVjdAoreworCWludDE2X3QgdHgscng7CisJaW50MTZfdCBjbGVhbjsKKwlpbnQxNl90IGNsZWFuX25scDsKKworCWludCBub251cGRhdGVfZHdlbGw7CisJaW50IGN1cnJfcG9zOworCWludCB0YXBzOworCWludCBsb2cydGFwczsKKwlpbnQgYWRhcHRpb25fbW9kZTsKKworCWludCBjb25kX21ldDsKKwlpbnQzMl90IFBzdGF0ZXM7CisJaW50MTZfdCBhZGFwdDsKKwlpbnQzMl90IGZhY3RvcjsKKwlpbnQxNl90IHNoaWZ0OworCisJLyogQXZlcmFnZSBsZXZlbHMgYW5kIGF2ZXJhZ2luZyBmaWx0ZXIgc3RhdGVzICovCisJaW50IEx0eGFjYywgTHJ4YWNjLCBMY2xlYW5hY2MsIExjbGVhbl9iZ2FjYzsKKwlpbnQgTHR4LCBMcng7CisJaW50IExjbGVhbjsKKwlpbnQgTGNsZWFuX2JnOworCWludCBMYmduLCBMYmduX2FjYywgTGJnbl91cHBlciwgTGJnbl91cHBlcl9hY2M7CisKKwkvKiBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGZpbHRlciBzdGF0ZXMgKi8KKwlmaXIxNl9zdGF0ZV90IGZpcl9zdGF0ZTsKKwlmaXIxNl9zdGF0ZV90IGZpcl9zdGF0ZV9iZzsKKwlpbnQxNl90ICpmaXJfdGFwczE2WzJdOworCisJLyogREMgYmxvY2tpbmcgZmlsdGVyIHN0YXRlcyAqLworCWludCB0eF8xLCB0eF8yLCByeF8xLCByeF8yOworCisJLyogb3B0aW9uYWwgSGlnaCBQYXNzIEZpbHRlciBzdGF0ZXMgKi8KKwlpbnQzMl90IHh2dHhbNV0sIHl2dHhbNV07CisJaW50MzJfdCB4dnJ4WzVdLCB5dnJ4WzVdOworCisJLyogUGFyYW1ldGVycyBmb3IgdGhlIG9wdGlvbmFsIEhvdGggbm9pc2UgZ2VuZXJhdG9yICovCisJaW50IGNuZ19sZXZlbDsKKwlpbnQgY25nX3JuZG51bTsKKwlpbnQgY25nX2ZpbHRlcjsKKworCS8qIHNuYXBzaG90IHNhbXBsZSBvZiBjb2VmZnMgdXNlZCBmb3IgZGV2ZWxvcG1lbnQgKi8KKwlpbnQxNl90ICpzbmFwc2hvdDsKK30gZWNob19jYW5fc3RhdGVfdDsKKworLyohIENyZWF0ZSBhIHZvaWNlIGVjaG8gY2FuY2VsbGVyIGNvbnRleHQuCisgICAgXHBhcmFtIGxlbiBUaGUgbGVuZ3RoIG9mIHRoZSBjYW5jZWxsZXIsIGluIHNhbXBsZXMuCisgICAgXHJldHVybiBUaGUgbmV3IGNhbmNlbGxlciBjb250ZXh0LCBvciBOVUxMIGlmIHRoZSBjYW5jZWxsZXIgY291bGQgbm90IGJlIGNyZWF0ZWQuCisqLworZWNob19jYW5fc3RhdGVfdCAqZWNob19jYW5fY3JlYXRlKGludCBsZW4sIGludCBhZGFwdGlvbl9tb2RlKTsKKworLyohIEZyZWUgYSB2b2ljZSBlY2hvIGNhbmNlbGxlciBjb250ZXh0LgorICAgIFxwYXJhbSBlYyBUaGUgZWNobyBjYW5jZWxsZXIgY29udGV4dC4KKyovCit2b2lkIGVjaG9fY2FuX2ZyZWUoZWNob19jYW5fc3RhdGVfdCAqZWMpOworCisvKiEgRmx1c2ggKHJlaW5pdGlhbGlzZSkgYSB2b2ljZSBlY2hvIGNhbmNlbGxlciBjb250ZXh0LgorICAgIFxwYXJhbSBlYyBUaGUgZWNobyBjYW5jZWxsZXIgY29udGV4dC4KKyovCit2b2lkIGVjaG9fY2FuX2ZsdXNoKGVjaG9fY2FuX3N0YXRlX3QgKmVjKTsKKworLyohIFNldCB0aGUgYWRhcHRpb24gbW9kZSBvZiBhIHZvaWNlIGVjaG8gY2FuY2VsbGVyIGNvbnRleHQuCisgICAgXHBhcmFtIGVjIFRoZSBlY2hvIGNhbmNlbGxlciBjb250ZXh0LgorICAgIFxwYXJhbSBhZGFwdCBUaGUgbW9kZS4KKyovCit2b2lkIGVjaG9fY2FuX2FkYXB0aW9uX21vZGUoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludCBhZGFwdGlvbl9tb2RlKTsKKwordm9pZCBlY2hvX2Nhbl9zbmFwc2hvdChlY2hvX2Nhbl9zdGF0ZV90ICplYyk7CisKKy8qISBQcm9jZXNzIGEgc2FtcGxlIHRocm91Z2ggYSB2b2ljZSBlY2hvIGNhbmNlbGxlci4KKyAgICBccGFyYW0gZWMgVGhlIGVjaG8gY2FuY2VsbGVyIGNvbnRleHQuCisgICAgXHBhcmFtIHR4IFRoZSB0cmFuc21pdHRlZCBhdWRpbyBzYW1wbGUuCisgICAgXHBhcmFtIHJ4IFRoZSByZWNlaXZlZCBhdWRpbyBzYW1wbGUuCisgICAgXHJldHVybiBUaGUgY2xlYW4gKGVjaG8gY2FuY2VsbGVkKSByZWNlaXZlZCBzYW1wbGUuCisqLworaW50MTZfdCBlY2hvX2Nhbl91cGRhdGUoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludDE2X3QgdHgsIGludDE2X3QgcngpOworCisvKiEgUHJvY2VzcyB0byBoaWdoIHBhc3MgZmlsdGVyIHRoZSB0eCBzaWduYWwuCisgICAgXHBhcmFtIGVjIFRoZSBlY2hvIGNhbmNlbGxlciBjb250ZXh0LgorICAgIFxwYXJhbSB0eCBUaGUgdHJhbnNtaXR0ZWQgYXVpbyBzYW1wbGUuCisgICAgXHJldHVybiBUaGUgSFAgZmlsdGVyZWQgdHJhbnNtaXQgc2FtcGxlLCBzZW5kIHRoaXMgdG8geW91ciBEL0EuCisqLworaW50MTZfdCBlY2hvX2Nhbl9ocGZfdHgoZWNob19jYW5fc3RhdGVfdCAqZWMsIGludDE2X3QgdHgpOworCisjZW5kaWYJLyogX19FQ0hPX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2Zpci5oIGIvZHJpdmVycy9zdGFnaW5nL2VjaG8vZmlyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiZmM0OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9lY2hvL2Zpci5oCkBAIC0wLDAgKzEsMzY5IEBACisvKgorICogU3BhbkRTUCAtIGEgc2VyaWVzIG9mIERTUCBjb21wb25lbnRzIGZvciB0ZWxlcGhvbnkKKyAqCisgKiBmaXIuaCAtIEdlbmVyYWwgdGVsZXBob255IEZJUiByb3V0aW5lcworICoKKyAqIFdyaXR0ZW4gYnkgU3RldmUgVW5kZXJ3b29kIDxzdGV2ZXVAY29wcGljZS5vcmc+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIFN0ZXZlIFVuZGVyd29vZAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICoKKyAqICRJZDogZmlyLmgsdiAxLjggMjAwNi8xMC8yNCAxMzo0NToyOCBzdGV2ZXUgRXhwICQKKyAqLworCisvKiEgXHBhZ2UgZmlyX3BhZ2UgRklSIGZpbHRlcmluZworXHNlY3Rpb24gZmlyX3BhZ2Vfc2VjXzEgV2hhdCBkb2VzIGl0IGRvPworPz8/LgorCitcc2VjdGlvbiBmaXJfcGFnZV9zZWNfMiBIb3cgZG9lcyBpdCB3b3JrPworPz8/LgorKi8KKworI2lmICFkZWZpbmVkKF9GSVJfSF8pCisjZGVmaW5lIF9GSVJfSF8KKworLyoKKyAgIEJsYWNrZmluIE5PVEVTICYgSURFQVM6CisKKyAgIEEgc2ltcGxlIGRvdCBwcm9kdWN0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBmaWx0ZXIuICBUaGlzIHBlcmZvcm1zCisgICBqdXN0IG9uZSBNQUMvY3ljbGUgd2hpY2ggaXMgaW5lZmZpY2llbnQgYnV0IHdhcyBlYXN5IHRvIGltcGxlbWVudCBhcyBhIGZpcnN0CisgICBwYXNzLiAgVGhlIGN1cnJlbnQgQmxhY2tmaW4gY29kZSBhbHNvIHVzZXMgYW4gdW5yb2xsZWQgZm9ybSBvZiB0aGUgZmlsdGVyCisgICBoaXN0b3J5IHRvIGF2b2lkIDAgbGVuZ3RoIGhhcmR3YXJlIGxvb3AgaXNzdWVzLiAgVGhpcyBpcyB3YXN0ZWZ1bCBvZgorICAgbWVtb3J5LgorCisgICBJZGVhcyBmb3IgaW1wcm92ZW1lbnQ6CisKKyAgIDEvIFJld3JpdGUgZmlsdGVyIGZvciBkdWFsIE1BQyBpbm5lciBsb29wLiAgVGhlIGlzc3VlIGhlcmUgaXMgaGFuZGxpbmcKKyAgIGhpc3Rvcnkgc2FtcGxlIG9mZnNldHMgdGhhdCBhcmUgMTYgYml0IGFsaWduZWQgLSB0aGUgZHVhbCBNQUMgbmVlZHMKKyAgIDMyIGJpdCBhbGlnbW5lbnQuICBUaGVyZSBhcmUgc29tZSBnb29kIGV4YW1wbGVzIGluIGxpYmJmZHNwLgorCisgICAyLyBVc2UgdGhlIGhhcmR3YXJlIGNpcmN1bGFyIGJ1ZmZlciBmYWNpbGl0eSB0b2hhbHZlIG1lbW9yeSB1c2FnZS4KKworICAgMy8gQ29uc2lkZXIgdXNpbmcgaW50ZXJuYWwgbWVtb3J5LgorCisgICBVc2luZyBsZXNzIG1lbW9yeSBtaWdodCBhbHNvIGltcHJvdmUgc3BlZWQgYXMgY2FjaGUgbWlzc2VzIHdpbGwgYmUKKyAgIHJlZHVjZWQuIEEgZHJvcCBpbiBNSVBzIGFuZCBtZW1vcnkgYXBwcm9hY2hpbmcgNTAlIHNob3VsZCBiZQorICAgcG9zc2libGUuCisKKyAgIFRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGZpbHRlcnMgY3VycmVubHR5IHVzZSBhIHRvdGFsIG9mCisgICBhYm91dCAxMCBNSVBzL2NoIGFzIG1lYXN1cmVkIHdpdGggc3BlZWR0ZXN0LmMgb24gYSAyNTYgVEFQIGVjaG8KKyAgIGNhbi4KKyovCisKKyNpZiBkZWZpbmVkKFVTRV9NTVgpICB8fCAgZGVmaW5lZChVU0VfU1NFMikKKyNpbmNsdWRlICJtbXguaCIKKyNlbmRpZgorCisvKiEKKyAgICAxNiBiaXQgaW50ZWdlciBGSVIgZGVzY3JpcHRvci4gVGhpcyBkZWZpbmVzIHRoZSB3b3JraW5nIHN0YXRlIGZvciBhIHNpbmdsZQorICAgIGluc3RhbmNlIG9mIGFuIEZJUiBmaWx0ZXIgdXNpbmcgMTYgYml0IGludGVnZXIgY29lZmZpY2llbnRzLgorKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJaW50IHRhcHM7CisJaW50IGN1cnJfcG9zOworCWNvbnN0IGludDE2X3QgKmNvZWZmczsKKwlpbnQxNl90ICpoaXN0b3J5OworfSBmaXIxNl9zdGF0ZV90OworCisvKiEKKyAgICAzMiBiaXQgaW50ZWdlciBGSVIgZGVzY3JpcHRvci4gVGhpcyBkZWZpbmVzIHRoZSB3b3JraW5nIHN0YXRlIGZvciBhIHNpbmdsZQorICAgIGluc3RhbmNlIG9mIGFuIEZJUiBmaWx0ZXIgdXNpbmcgMzIgYml0IGludGVnZXIgY29lZmZpY2llbnRzLCBhbmQgZmlsdGVyaW5nCisgICAgMTYgYml0IGludGVnZXIgZGF0YS4KKyovCit0eXBlZGVmIHN0cnVjdAoreworCWludCB0YXBzOworCWludCBjdXJyX3BvczsKKwljb25zdCBpbnQzMl90ICpjb2VmZnM7CisJaW50MTZfdCAqaGlzdG9yeTsKK30gZmlyMzJfc3RhdGVfdDsKKworLyohCisgICAgRmxvYXRpbmcgcG9pbnQgRklSIGRlc2NyaXB0b3IuIFRoaXMgZGVmaW5lcyB0aGUgd29ya2luZyBzdGF0ZSBmb3IgYSBzaW5nbGUKKyAgICBpbnN0YW5jZSBvZiBhbiBGSVIgZmlsdGVyIHVzaW5nIGZsb2F0aW5nIHBvaW50IGNvZWZmaWNpZW50cyBhbmQgZGF0YS4KKyovCit0eXBlZGVmIHN0cnVjdAoreworCWludCB0YXBzOworCWludCBjdXJyX3BvczsKKwljb25zdCBmbG9hdCAqY29lZmZzOworCWZsb2F0ICpoaXN0b3J5OworfSBmaXJfZmxvYXRfc3RhdGVfdDsKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitzdGF0aWMgX19pbmxpbmVfXyBjb25zdCBpbnQxNl90ICpmaXIxNl9jcmVhdGUoZmlyMTZfc3RhdGVfdCAqZmlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKmNvZWZmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFwcykKK3sKKwlmaXItPnRhcHMgPSB0YXBzOworCWZpci0+Y3Vycl9wb3MgPSB0YXBzIC0gMTsKKwlmaXItPmNvZWZmcyA9IGNvZWZmczsKKyNpZiBkZWZpbmVkKFVTRV9NTVgpICB8fCAgZGVmaW5lZChVU0VfU1NFMikgfHwgZGVmaW5lZChfX0JMQUNLRklOX0FTTV9fKQorCWlmICgoZmlyLT5oaXN0b3J5ID0gbWFsbG9jKDIqdGFwcypzaXplb2YoaW50MTZfdCkpKSkKKwkJbWVtc2V0KGZpci0+aGlzdG9yeSwgMCwgMip0YXBzKnNpemVvZihpbnQxNl90KSk7CisjZWxzZQorCWlmICgoZmlyLT5oaXN0b3J5ID0gKGludDE2X3QgKikgbWFsbG9jKHRhcHMqc2l6ZW9mKGludDE2X3QpKSkpCisJCW1lbXNldChmaXItPmhpc3RvcnksIDAsIHRhcHMqc2l6ZW9mKGludDE2X3QpKTsKKyNlbmRpZgorCXJldHVybiBmaXItPmhpc3Rvcnk7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBmaXIxNl9mbHVzaChmaXIxNl9zdGF0ZV90ICpmaXIpCit7CisjaWYgZGVmaW5lZChVU0VfTU1YKSAgfHwgIGRlZmluZWQoVVNFX1NTRTIpIHx8IGRlZmluZWQoX19CTEFDS0ZJTl9BU01fXykKKyAgICBtZW1zZXQoZmlyLT5oaXN0b3J5LCAwLCAyKmZpci0+dGFwcypzaXplb2YoaW50MTZfdCkpOworI2Vsc2UKKyAgICBtZW1zZXQoZmlyLT5oaXN0b3J5LCAwLCBmaXItPnRhcHMqc2l6ZW9mKGludDE2X3QpKTsKKyNlbmRpZgorfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgZmlyMTZfZnJlZShmaXIxNl9zdGF0ZV90ICpmaXIpCit7CisJZnJlZShmaXItPmhpc3RvcnkpOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZmRlZiBfX0JMQUNLRklOX0FTTV9fCitzdGF0aWMgaW5saW5lIGludDMyX3QgZG90X2FzbShzaG9ydCAqeCwgc2hvcnQgKnksIGludCBsZW4pCit7CisgICBpbnQgZG90OworCisgICBsZW4tLTsKKworICAgX19hc21fXworICAgKAorICAgIkkwID0gJTE7XG5cdCIKKyAgICJJMSA9ICUyO1xuXHQiCisgICAiQTAgPSAwO1xuXHQiCisgICAiUjAuTCA9IFdbSTArK10gfHwgUjEuTCA9IFdbSTErK107XG5cdCIKKyAgICJMT09QIGRvdCU9IExDMCA9ICUzO1xuXHQiCisgICAiTE9PUF9CRUdJTiBkb3QlPTtcblx0IgorICAgICAgIkEwICs9IFIwLkwgKiBSMS5MIChJUykgfHwgUjAuTCA9IFdbSTArK10gfHwgUjEuTCA9IFdbSTErK107XG5cdCIKKyAgICJMT09QX0VORCBkb3QlPTtcblx0IgorICAgIkEwICs9IFIwLkwqUjEuTCAoSVMpO1xuXHQiCisgICAiUjAgPSBBMDtcblx0IgorICAgIiUwID0gUjA7XG5cdCIKKyAgIDogIj0mZCIgKGRvdCkKKyAgIDogImEiICh4KSwgImEiICh5KSwgImEiIChsZW4pCisgICA6ICJJMCIsICJJMSIsICJBMSIsICJBMCIsICJSMCIsICJSMSIKKyAgICk7CisKKyAgIHJldHVybiBkb3Q7Cit9CisjZW5kaWYKKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90IGZpcjE2KGZpcjE2X3N0YXRlX3QgKmZpciwgaW50MTZfdCBzYW1wbGUpCit7CisgICAgaW50MzJfdCB5OworI2lmIGRlZmluZWQoVVNFX01NWCkKKyAgICBpbnQgaTsKKyAgICBtbXhfdCAqbW14X2NvZWZmczsKKyAgICBtbXhfdCAqbW14X2hpc3Q7CisKKyAgICBmaXItPmhpc3RvcnlbZmlyLT5jdXJyX3Bvc10gPSBzYW1wbGU7CisgICAgZmlyLT5oaXN0b3J5W2Zpci0+Y3Vycl9wb3MgKyBmaXItPnRhcHNdID0gc2FtcGxlOworCisgICAgbW14X2NvZWZmcyA9IChtbXhfdCAqKSBmaXItPmNvZWZmczsKKyAgICBtbXhfaGlzdCA9IChtbXhfdCAqKSAmZmlyLT5oaXN0b3J5W2Zpci0+Y3Vycl9wb3NdOworICAgIGkgPSBmaXItPnRhcHM7CisgICAgcHhvcl9yMnIobW00LCBtbTQpOworICAgIC8qIDggc2FtcGxlcyBwZXIgaXRlcmF0aW9uLCBzbyB0aGUgZmlsdGVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4IGxvbmcuICovCisgICAgd2hpbGUgKGkgPiAwKQorICAgIHsKKyAgICAgICAgbW92cV9tMnIobW14X2NvZWZmc1swXSwgbW0wKTsKKyAgICAgICAgbW92cV9tMnIobW14X2NvZWZmc1sxXSwgbW0yKTsKKyAgICAgICAgbW92cV9tMnIobW14X2hpc3RbMF0sIG1tMSk7CisgICAgICAgIG1vdnFfbTJyKG1teF9oaXN0WzFdLCBtbTMpOworICAgICAgICBtbXhfY29lZmZzICs9IDI7CisgICAgICAgIG1teF9oaXN0ICs9IDI7CisgICAgICAgIHBtYWRkd2RfcjJyKG1tMSwgbW0wKTsKKyAgICAgICAgcG1hZGR3ZF9yMnIobW0zLCBtbTIpOworICAgICAgICBwYWRkZF9yMnIobW0wLCBtbTQpOworICAgICAgICBwYWRkZF9yMnIobW0yLCBtbTQpOworICAgICAgICBpIC09IDg7CisgICAgfQorICAgIG1vdnFfcjJyKG1tNCwgbW0wKTsKKyAgICBwc3JscV9pMnIoMzIsIG1tMCk7CisgICAgcGFkZGRfcjJyKG1tMCwgbW00KTsKKyAgICBtb3ZkX3IybShtbTQsIHkpOworICAgIGVtbXMoKTsKKyNlbGlmIGRlZmluZWQoVVNFX1NTRTIpCisgICAgaW50IGk7CisgICAgeG1tX3QgKnhtbV9jb2VmZnM7CisgICAgeG1tX3QgKnhtbV9oaXN0OworCisgICAgZmlyLT5oaXN0b3J5W2Zpci0+Y3Vycl9wb3NdID0gc2FtcGxlOworICAgIGZpci0+aGlzdG9yeVtmaXItPmN1cnJfcG9zICsgZmlyLT50YXBzXSA9IHNhbXBsZTsKKworICAgIHhtbV9jb2VmZnMgPSAoeG1tX3QgKikgZmlyLT5jb2VmZnM7CisgICAgeG1tX2hpc3QgPSAoeG1tX3QgKikgJmZpci0+aGlzdG9yeVtmaXItPmN1cnJfcG9zXTsKKyAgICBpID0gZmlyLT50YXBzOworICAgIHB4b3JfcjJyKHhtbTQsIHhtbTQpOworICAgIC8qIDE2IHNhbXBsZXMgcGVyIGl0ZXJhdGlvbiwgc28gdGhlIGZpbHRlciBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYgbG9uZy4gKi8KKyAgICB3aGlsZSAoaSA+IDApCisgICAgeworICAgICAgICBtb3ZkcXVfbTJyKHhtbV9jb2VmZnNbMF0sIHhtbTApOworICAgICAgICBtb3ZkcXVfbTJyKHhtbV9jb2VmZnNbMV0sIHhtbTIpOworICAgICAgICBtb3ZkcXVfbTJyKHhtbV9oaXN0WzBdLCB4bW0xKTsKKyAgICAgICAgbW92ZHF1X20ycih4bW1faGlzdFsxXSwgeG1tMyk7CisgICAgICAgIHhtbV9jb2VmZnMgKz0gMjsKKyAgICAgICAgeG1tX2hpc3QgKz0gMjsKKyAgICAgICAgcG1hZGR3ZF9yMnIoeG1tMSwgeG1tMCk7CisgICAgICAgIHBtYWRkd2RfcjJyKHhtbTMsIHhtbTIpOworICAgICAgICBwYWRkZF9yMnIoeG1tMCwgeG1tNCk7CisgICAgICAgIHBhZGRkX3Iycih4bW0yLCB4bW00KTsKKyAgICAgICAgaSAtPSAxNjsKKyAgICB9CisgICAgbW92ZHFhX3Iycih4bW00LCB4bW0wKTsKKyAgICBwc3JsZHFfaTJyKDgsIHhtbTApOworICAgIHBhZGRkX3Iycih4bW0wLCB4bW00KTsKKyAgICBtb3ZkcWFfcjJyKHhtbTQsIHhtbTApOworICAgIHBzcmxkcV9pMnIoNCwgeG1tMCk7CisgICAgcGFkZGRfcjJyKHhtbTAsIHhtbTQpOworICAgIG1vdmRfcjJtKHhtbTQsIHkpOworI2VsaWYgZGVmaW5lZChfX0JMQUNLRklOX0FTTV9fKQorICAgIGZpci0+aGlzdG9yeVtmaXItPmN1cnJfcG9zXSA9IHNhbXBsZTsKKyAgICBmaXItPmhpc3RvcnlbZmlyLT5jdXJyX3BvcyArIGZpci0+dGFwc10gPSBzYW1wbGU7CisgICAgeSA9IGRvdF9hc20oKGludDE2X3QqKWZpci0+Y29lZmZzLCAmZmlyLT5oaXN0b3J5W2Zpci0+Y3Vycl9wb3NdLCBmaXItPnRhcHMpOworI2Vsc2UKKyAgICBpbnQgaTsKKyAgICBpbnQgb2Zmc2V0MTsKKyAgICBpbnQgb2Zmc2V0MjsKKworICAgIGZpci0+aGlzdG9yeVtmaXItPmN1cnJfcG9zXSA9IHNhbXBsZTsKKworICAgIG9mZnNldDIgPSBmaXItPmN1cnJfcG9zOworICAgIG9mZnNldDEgPSBmaXItPnRhcHMgLSBvZmZzZXQyOworICAgIHkgPSAwOworICAgIGZvciAoaSA9IGZpci0+dGFwcyAtIDE7ICBpID49IG9mZnNldDE7ICBpLS0pCisgICAgICAgIHkgKz0gZmlyLT5jb2VmZnNbaV0qZmlyLT5oaXN0b3J5W2kgLSBvZmZzZXQxXTsKKyAgICBmb3IgKCAgOyAgaSA+PSAwOyAgaS0tKQorICAgICAgICB5ICs9IGZpci0+Y29lZmZzW2ldKmZpci0+aGlzdG9yeVtpICsgb2Zmc2V0Ml07CisjZW5kaWYKKyAgICBpZiAoZmlyLT5jdXJyX3BvcyA8PSAwKQorICAgIAlmaXItPmN1cnJfcG9zID0gZmlyLT50YXBzOworICAgIGZpci0+Y3Vycl9wb3MtLTsKKyAgICByZXR1cm4gKGludDE2X3QpICh5ID4+IDE1KTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgX19pbmxpbmVfXyBjb25zdCBpbnQxNl90ICpmaXIzMl9jcmVhdGUoZmlyMzJfc3RhdGVfdCAqZmlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDMyX3QgKmNvZWZmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFwcykKK3sKKyAgICBmaXItPnRhcHMgPSB0YXBzOworICAgIGZpci0+Y3Vycl9wb3MgPSB0YXBzIC0gMTsKKyAgICBmaXItPmNvZWZmcyA9IGNvZWZmczsKKyAgICBmaXItPmhpc3RvcnkgPSAoaW50MTZfdCAqKSBtYWxsb2ModGFwcypzaXplb2YoaW50MTZfdCkpOworICAgIGlmIChmaXItPmhpc3RvcnkpCisgICAgCW1lbXNldChmaXItPmhpc3RvcnksICdcMCcsIHRhcHMqc2l6ZW9mKGludDE2X3QpKTsKKyAgICByZXR1cm4gZmlyLT5oaXN0b3J5OworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgZmlyMzJfZmx1c2goZmlyMzJfc3RhdGVfdCAqZmlyKQoreworICAgIG1lbXNldChmaXItPmhpc3RvcnksIDAsIGZpci0+dGFwcypzaXplb2YoaW50MTZfdCkpOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgZmlyMzJfZnJlZShmaXIzMl9zdGF0ZV90ICpmaXIpCit7CisgICAgZnJlZShmaXItPmhpc3RvcnkpOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBfX2lubGluZV9fIGludDE2X3QgZmlyMzIoZmlyMzJfc3RhdGVfdCAqZmlyLCBpbnQxNl90IHNhbXBsZSkKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQzMl90IHk7CisgICAgaW50IG9mZnNldDE7CisgICAgaW50IG9mZnNldDI7CisKKyAgICBmaXItPmhpc3RvcnlbZmlyLT5jdXJyX3Bvc10gPSBzYW1wbGU7CisgICAgb2Zmc2V0MiA9IGZpci0+Y3Vycl9wb3M7CisgICAgb2Zmc2V0MSA9IGZpci0+dGFwcyAtIG9mZnNldDI7CisgICAgeSA9IDA7CisgICAgZm9yIChpID0gZmlyLT50YXBzIC0gMTsgIGkgPj0gb2Zmc2V0MTsgIGktLSkKKyAgICAgICAgeSArPSBmaXItPmNvZWZmc1tpXSpmaXItPmhpc3RvcnlbaSAtIG9mZnNldDFdOworICAgIGZvciAoICA7ICBpID49IDA7ICBpLS0pCisgICAgICAgIHkgKz0gZmlyLT5jb2VmZnNbaV0qZmlyLT5oaXN0b3J5W2kgKyBvZmZzZXQyXTsKKyAgICBpZiAoZmlyLT5jdXJyX3BvcyA8PSAwKQorICAgIAlmaXItPmN1cnJfcG9zID0gZmlyLT50YXBzOworICAgIGZpci0+Y3Vycl9wb3MtLTsKKyAgICByZXR1cm4gKGludDE2X3QpICh5ID4+IDE1KTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjaWZuZGVmIF9fS0VSTkVMX18KK3N0YXRpYyBfX2lubGluZV9fIGNvbnN0IGZsb2F0ICpmaXJfZmxvYXRfY3JlYXRlKGZpcl9mbG9hdF9zdGF0ZV90ICpmaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqY29lZmZzLAorICAgIAkgICAgCSAgICAJICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcHMpCit7CisgICAgZmlyLT50YXBzID0gdGFwczsKKyAgICBmaXItPmN1cnJfcG9zID0gdGFwcyAtIDE7CisgICAgZmlyLT5jb2VmZnMgPSBjb2VmZnM7CisgICAgZmlyLT5oaXN0b3J5ID0gKGZsb2F0ICopIG1hbGxvYyh0YXBzKnNpemVvZihmbG9hdCkpOworICAgIGlmIChmaXItPmhpc3RvcnkpCisgICAgICAgIG1lbXNldChmaXItPmhpc3RvcnksICdcMCcsIHRhcHMqc2l6ZW9mKGZsb2F0KSk7CisgICAgcmV0dXJuIGZpci0+aGlzdG9yeTsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGZpcl9mbG9hdF9mcmVlKGZpcl9mbG9hdF9zdGF0ZV90ICpmaXIpCit7CisgICAgZnJlZShmaXItPmhpc3RvcnkpOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBfX2lubGluZV9fIGludDE2X3QgZmlyX2Zsb2F0KGZpcl9mbG9hdF9zdGF0ZV90ICpmaXIsIGludDE2X3Qgc2FtcGxlKQoreworICAgIGludCBpOworICAgIGZsb2F0IHk7CisgICAgaW50IG9mZnNldDE7CisgICAgaW50IG9mZnNldDI7CisKKyAgICBmaXItPmhpc3RvcnlbZmlyLT5jdXJyX3Bvc10gPSBzYW1wbGU7CisKKyAgICBvZmZzZXQyID0gZmlyLT5jdXJyX3BvczsKKyAgICBvZmZzZXQxID0gZmlyLT50YXBzIC0gb2Zmc2V0MjsKKyAgICB5ID0gMDsKKyAgICBmb3IgKGkgPSBmaXItPnRhcHMgLSAxOyAgaSA+PSBvZmZzZXQxOyAgaS0tKQorICAgICAgICB5ICs9IGZpci0+Y29lZmZzW2ldKmZpci0+aGlzdG9yeVtpIC0gb2Zmc2V0MV07CisgICAgZm9yICggIDsgIGkgPj0gMDsgIGktLSkKKyAgICAgICAgeSArPSBmaXItPmNvZWZmc1tpXSpmaXItPmhpc3RvcnlbaSArIG9mZnNldDJdOworICAgIGlmIChmaXItPmN1cnJfcG9zIDw9IDApCisgICAgCWZpci0+Y3Vycl9wb3MgPSBmaXItPnRhcHM7CisgICAgZmlyLT5jdXJyX3Bvcy0tOworICAgIHJldHVybiAgKGludDE2X3QpIHk7Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKKy8qLSBFbmQgb2YgZmlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2VjaG8vbW14LmggYi9kcml2ZXJzL3N0YWdpbmcvZWNoby9tbXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWEzOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2VjaG8vbW14LmgKQEAgLTAsMCArMSwyODggQEAKKy8qCisgKiBtbXguaAorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDEgSC4gRGlldHogYW5kIFIuIEZpc2hlcgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworI2lmbmRlZiBBVkNPREVDX0kzODZNTVhfSAorI2RlZmluZSBBVkNPREVDX0kzODZNTVhfSAorCisvKgorICogVGhlIHR5cGUgb2YgYW4gdmFsdWUgdGhhdCBmaXRzIGluIGFuIE1NWCByZWdpc3RlciAobm90ZSB0aGF0IGxvbmcKKyAqIGxvbmcgY29uc3RhbnQgdmFsdWVzIE1VU1QgYmUgc3VmZml4ZWQgYnkgTEwgYW5kIHVuc2lnbmVkIGxvbmcgbG9uZworICogdmFsdWVzIGJ5IFVMTCwgbGVzdCB0aGV5IGJlIHRydW5jYXRlZCBieSB0aGUgY29tcGlsZXIpCisgKi8KKwordHlwZWRlZiAgICAgICAgdW5pb24geworICAgICAgICBsb25nIGxvbmcgICAgICAgICAgICAgICBxOyAgICAgIC8qIFF1YWR3b3JkICg2NC1iaXQpIHZhbHVlICovCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgIHVxOyAgICAgLyogVW5zaWduZWQgUXVhZHdvcmQgKi8KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZFsyXTsgICAvKiAyIERvdWJsZXdvcmQgKDMyLWJpdCkgdmFsdWVzICovCisgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHVkWzJdOyAgLyogMiBVbnNpZ25lZCBEb3VibGV3b3JkICovCisgICAgICAgIHNob3J0ICAgICAgICAgICAgICAgICAgIHdbNF07ICAgLyogNCBXb3JkICgxNi1iaXQpIHZhbHVlcyAqLworICAgICAgICB1bnNpZ25lZCBzaG9ydCAgICAgICAgICB1d1s0XTsgIC8qIDQgVW5zaWduZWQgV29yZCAqLworICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICBiWzhdOyAgIC8qIDggQnl0ZSAoOC1iaXQpIHZhbHVlcyAqLworICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICB1Yls4XTsgIC8qIDggVW5zaWduZWQgQnl0ZSAqLworICAgICAgICBmbG9hdCAgICAgICAgICAgICAgICAgICBzWzJdOyAgIC8qIFNpbmdsZS1wcmVjaXNpb24gKDMyLWJpdCkgdmFsdWUgKi8KK30gbW14X3Q7ICAgICAgICAvKiBPbiBhbiA4LWJ5dGUgKDY0LWJpdCkgYm91bmRhcnkgKi8KKworLyogU1NFIHJlZ2lzdGVycyAqLwordHlwZWRlZiB1bmlvbiB7CisJY2hhciBiWzE2XTsKK30geG1tX3Q7CisKKworI2RlZmluZSAgICAgICAgIG1teF9pMnIob3AsaW1tLHJlZykgXAorICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoI29wICIgJTAsICUlIiAjcmVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLyogbm90aGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJpIiAoaW1tKSApCisKKyNkZWZpbmUgICAgICAgICBtbXhfbTJyKG9wLG1lbSxyZWcpIFwKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCNvcCAiICUwLCAlJSIgI3JlZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC8qIG5vdGhpbmcgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAibSIgKG1lbSkpCisKKyNkZWZpbmUgICAgICAgICBtbXhfcjJtKG9wLHJlZyxtZW0pIFwKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCNvcCAiICUlIiAjcmVnICIsICUwIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKG1lbSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAvKiBub3RoaW5nICovICkKKworI2RlZmluZSAgICAgICAgIG1teF9yMnIob3AscmVncyxyZWdkKSBcCisgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgjb3AgIiAlIiAjcmVncyAiLCAlIiAjcmVnZCkKKworCisjZGVmaW5lICAgICAgICAgZW1tcygpIF9fYXNtX18gX192b2xhdGlsZV9fICgiZW1tcyIpCisKKyNkZWZpbmUgICAgICAgICBtb3ZkX20ycih2YXIscmVnKSAgICAgICAgICAgbW14X20yciAobW92ZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgbW92ZF9yMm0ocmVnLHZhcikgICAgICAgICAgIG1teF9yMm0gKG1vdmQsIHJlZywgdmFyKQorI2RlZmluZSAgICAgICAgIG1vdmRfcjJyKHJlZ3MscmVnZCkgICAgICAgICBtbXhfcjJyIChtb3ZkLCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgbW92cV9tMnIodmFyLHJlZykgICAgICAgICAgIG1teF9tMnIgKG1vdnEsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIG1vdnFfcjJtKHJlZyx2YXIpICAgICAgICAgICBtbXhfcjJtIChtb3ZxLCByZWcsIHZhcikKKyNkZWZpbmUgICAgICAgICBtb3ZxX3IycihyZWdzLHJlZ2QpICAgICAgICAgbW14X3IyciAobW92cSwgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBhY2tzc2R3X20ycih2YXIscmVnKSAgICAgICBtbXhfbTJyIChwYWNrc3NkdywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGFja3NzZHdfcjJyKHJlZ3MscmVnZCkgICAgIG1teF9yMnIgKHBhY2tzc2R3LCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHBhY2tzc3diX20ycih2YXIscmVnKSAgICAgICBtbXhfbTJyIChwYWNrc3N3YiwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGFja3Nzd2JfcjJyKHJlZ3MscmVnZCkgICAgIG1teF9yMnIgKHBhY2tzc3diLCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcGFja3Vzd2JfbTJyKHZhcixyZWcpICAgICAgIG1teF9tMnIgKHBhY2t1c3diLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwYWNrdXN3Yl9yMnIocmVncyxyZWdkKSAgICAgbW14X3IyciAocGFja3Vzd2IsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwYWRkYl9tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocGFkZGIsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBhZGRiX3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwYWRkYiwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwYWRkZF9tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocGFkZGQsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBhZGRkX3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwYWRkZCwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwYWRkd19tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocGFkZHcsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBhZGR3X3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwYWRkdywgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBhZGRzYl9tMnIodmFyLHJlZykgICAgICAgICBtbXhfbTJyIChwYWRkc2IsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBhZGRzYl9yMnIocmVncyxyZWdkKSAgICAgICBtbXhfcjJyIChwYWRkc2IsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcGFkZHN3X20ycih2YXIscmVnKSAgICAgICAgIG1teF9tMnIgKHBhZGRzdywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGFkZHN3X3IycihyZWdzLHJlZ2QpICAgICAgIG1teF9yMnIgKHBhZGRzdywgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBhZGR1c2JfbTJyKHZhcixyZWcpICAgICAgICBtbXhfbTJyIChwYWRkdXNiLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwYWRkdXNiX3IycihyZWdzLHJlZ2QpICAgICAgbW14X3IyciAocGFkZHVzYiwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwYWRkdXN3X20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocGFkZHVzdywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGFkZHVzd19yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBhZGR1c3csIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwYW5kX20ycih2YXIscmVnKSAgICAgICAgICAgbW14X20yciAocGFuZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGFuZF9yMnIocmVncyxyZWdkKSAgICAgICAgIG1teF9yMnIgKHBhbmQsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwYW5kbl9tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocGFuZG4sIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBhbmRuX3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwYW5kbiwgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBjbXBlcWJfbTJyKHZhcixyZWcpICAgICAgICBtbXhfbTJyIChwY21wZXFiLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwY21wZXFiX3IycihyZWdzLHJlZ2QpICAgICAgbW14X3IyciAocGNtcGVxYiwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwY21wZXFkX20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocGNtcGVxZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGNtcGVxZF9yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBjbXBlcWQsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcGNtcGVxd19tMnIodmFyLHJlZykgICAgICAgIG1teF9tMnIgKHBjbXBlcXcsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBjbXBlcXdfcjJyKHJlZ3MscmVnZCkgICAgICBtbXhfcjJyIChwY21wZXF3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcGNtcGd0Yl9tMnIodmFyLHJlZykgICAgICAgIG1teF9tMnIgKHBjbXBndGIsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBjbXBndGJfcjJyKHJlZ3MscmVnZCkgICAgICBtbXhfcjJyIChwY21wZ3RiLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHBjbXBndGRfbTJyKHZhcixyZWcpICAgICAgICBtbXhfbTJyIChwY21wZ3RkLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwY21wZ3RkX3IycihyZWdzLHJlZ2QpICAgICAgbW14X3IyciAocGNtcGd0ZCwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwY21wZ3R3X20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocGNtcGd0dywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGNtcGd0d19yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBjbXBndHcsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwbWFkZHdkX20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocG1hZGR3ZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcG1hZGR3ZF9yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBtYWRkd2QsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwbXVsaHdfbTJyKHZhcixyZWcpICAgICAgICAgbW14X20yciAocG11bGh3LCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwbXVsaHdfcjJyKHJlZ3MscmVnZCkgICAgICAgbW14X3IyciAocG11bGh3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcG11bGx3X20ycih2YXIscmVnKSAgICAgICAgIG1teF9tMnIgKHBtdWxsdywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcG11bGx3X3IycihyZWdzLHJlZ2QpICAgICAgIG1teF9yMnIgKHBtdWxsdywgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBvcl9tMnIodmFyLHJlZykgICAgICAgICAgICBtbXhfbTJyIChwb3IsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBvcl9yMnIocmVncyxyZWdkKSAgICAgICAgICBtbXhfcjJyIChwb3IsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwc2xsZF9pMnIoaW1tLHJlZykgICAgICAgICAgbW14X2kyciAocHNsbGQsIGltbSwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzbGxkX20ycih2YXIscmVnKSAgICAgICAgICBtbXhfbTJyIChwc2xsZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcHNsbGRfcjJyKHJlZ3MscmVnZCkgICAgICAgIG1teF9yMnIgKHBzbGxkLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHBzbGxxX2kycihpbW0scmVnKSAgICAgICAgICBtbXhfaTJyIChwc2xscSwgaW1tLCByZWcpCisjZGVmaW5lICAgICAgICAgcHNsbHFfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzbGxxLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc2xscV9yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHNsbHEsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHNsbHdfaTJyKGltbSxyZWcpICAgICAgICAgIG1teF9pMnIgKHBzbGx3LCBpbW0sIHJlZykKKyNkZWZpbmUgICAgICAgICBwc2xsd19tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocHNsbHcsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzbGx3X3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwc2xsdywgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBzcmFkX2kycihpbW0scmVnKSAgICAgICAgICBtbXhfaTJyIChwc3JhZCwgaW1tLCByZWcpCisjZGVmaW5lICAgICAgICAgcHNyYWRfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzcmFkLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3JhZF9yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHNyYWQsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHNyYXdfaTJyKGltbSxyZWcpICAgICAgICAgIG1teF9pMnIgKHBzcmF3LCBpbW0sIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3Jhd19tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocHNyYXcsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzcmF3X3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwc3JhdywgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBzcmxkX2kycihpbW0scmVnKSAgICAgICAgICBtbXhfaTJyIChwc3JsZCwgaW1tLCByZWcpCisjZGVmaW5lICAgICAgICAgcHNybGRfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzcmxkLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3JsZF9yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHNybGQsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHNybHFfaTJyKGltbSxyZWcpICAgICAgICAgIG1teF9pMnIgKHBzcmxxLCBpbW0sIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3JscV9tMnIodmFyLHJlZykgICAgICAgICAgbW14X20yciAocHNybHEsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzcmxxX3IycihyZWdzLHJlZ2QpICAgICAgICBtbXhfcjJyIChwc3JscSwgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwc3Jsd19pMnIoaW1tLHJlZykgICAgICAgICAgbW14X2kyciAocHNybHcsIGltbSwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzcmx3X20ycih2YXIscmVnKSAgICAgICAgICBtbXhfbTJyIChwc3JsdywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcHNybHdfcjJyKHJlZ3MscmVnZCkgICAgICAgIG1teF9yMnIgKHBzcmx3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcHN1YmJfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzdWJiLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3ViYl9yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHN1YmIsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHN1YmRfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzdWJkLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3ViZF9yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHN1YmQsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHN1YndfbTJyKHZhcixyZWcpICAgICAgICAgIG1teF9tMnIgKHBzdWJ3LCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3Vid19yMnIocmVncyxyZWdkKSAgICAgICAgbW14X3IyciAocHN1YncsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwc3Vic2JfbTJyKHZhcixyZWcpICAgICAgICAgbW14X20yciAocHN1YnNiLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwc3Vic2JfcjJyKHJlZ3MscmVnZCkgICAgICAgbW14X3IyciAocHN1YnNiLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHBzdWJzd19tMnIodmFyLHJlZykgICAgICAgICBtbXhfbTJyIChwc3Vic3csIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzdWJzd19yMnIocmVncyxyZWdkKSAgICAgICBtbXhfcjJyIChwc3Vic3csIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwc3VidXNiX20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocHN1YnVzYiwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcHN1YnVzYl9yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBzdWJ1c2IsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHN1YnVzd19tMnIodmFyLHJlZykgICAgICAgIG1teF9tMnIgKHBzdWJ1c3csIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzdWJ1c3dfcjJyKHJlZ3MscmVnZCkgICAgICBtbXhfcjJyIChwc3VidXN3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcHVucGNraGJ3X20ycih2YXIscmVnKSAgICAgIG1teF9tMnIgKHB1bnBja2hidywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcHVucGNraGJ3X3IycihyZWdzLHJlZ2QpICAgIG1teF9yMnIgKHB1bnBja2hidywgcmVncywgcmVnZCkKKyNkZWZpbmUgICAgICAgICBwdW5wY2toZHFfbTJyKHZhcixyZWcpICAgICAgbW14X20yciAocHVucGNraGRxLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwdW5wY2toZHFfcjJyKHJlZ3MscmVnZCkgICAgbW14X3IyciAocHVucGNraGRxLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHB1bnBja2h3ZF9tMnIodmFyLHJlZykgICAgICBtbXhfbTJyIChwdW5wY2tod2QsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHB1bnBja2h3ZF9yMnIocmVncyxyZWdkKSAgICBtbXhfcjJyIChwdW5wY2tod2QsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwdW5wY2tsYndfbTJyKHZhcixyZWcpICAgICAgbW14X20yciAocHVucGNrbGJ3LCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwdW5wY2tsYndfcjJyKHJlZ3MscmVnZCkgICAgbW14X3IyciAocHVucGNrbGJ3LCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHB1bnBja2xkcV9tMnIodmFyLHJlZykgICAgICBtbXhfbTJyIChwdW5wY2tsZHEsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHB1bnBja2xkcV9yMnIocmVncyxyZWdkKSAgICBtbXhfcjJyIChwdW5wY2tsZHEsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHVucGNrbHdkX20ycih2YXIscmVnKSAgICAgIG1teF9tMnIgKHB1bnBja2x3ZCwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcHVucGNrbHdkX3IycihyZWdzLHJlZ2QpICAgIG1teF9yMnIgKHB1bnBja2x3ZCwgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHB4b3JfbTJyKHZhcixyZWcpICAgICAgICAgICBtbXhfbTJyIChweG9yLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBweG9yX3IycihyZWdzLHJlZ2QpICAgICAgICAgbW14X3IyciAocHhvciwgcmVncywgcmVnZCkKKworCisvKiAzRE5PVyBleHRlbnNpb25zICovCisKKyNkZWZpbmUgICAgICAgICBwYXZndXNiX20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocGF2Z3VzYiwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGF2Z3VzYl9yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBhdmd1c2IsIHJlZ3MsIHJlZ2QpCisKKworLyogQU1EIE1NWCBleHRlbnNpb25zIC0gYWxzbyBhdmFpbGFibGUgaW4gaW50ZWwgU1NFICovCisKKworI2RlZmluZSAgICAgICAgIG1teF9tMnJpKG9wLG1lbSxyZWcsaW1tKSBcCisgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgjb3AgIiAlMSwgJTAsICUlIiAjcmVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLyogbm90aGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtIiAobWVtKSwgImkiIChpbW0pKQorI2RlZmluZSAgICAgICAgIG1teF9yMnJpKG9wLHJlZ3MscmVnZCxpbW0pIFwKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCNvcCAiICUwLCAlJSIgI3JlZ3MgIiwgJSUiICNyZWdkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLyogbm90aGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJpIiAoaW1tKSApCisKKyNkZWZpbmUgICAgICAgICBtbXhfZmV0Y2gobWVtLGhpbnQpIFwKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJwcmVmZXRjaCIgI2hpbnQgIiAlMCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAvKiBub3RoaW5nICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm0iIChtZW0pKQorCisKKyNkZWZpbmUgICAgICAgICBtYXNrbW92cShyZWdzLG1hc2tyZWcpICAgICAgbW14X3IycmkgKG1hc2ttb3ZxLCByZWdzLCBtYXNrcmVnKQorCisjZGVmaW5lICAgICAgICAgbW92bnRxX3IybShtbXJlZyx2YXIpICAgICAgIG1teF9yMm0gKG1vdm50cSwgbW1yZWcsIHZhcikKKworI2RlZmluZSAgICAgICAgIHBhdmdiX20ycih2YXIscmVnKSAgICAgICAgICBtbXhfbTJyIChwYXZnYiwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGF2Z2JfcjJyKHJlZ3MscmVnZCkgICAgICAgIG1teF9yMnIgKHBhdmdiLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIHBhdmd3X20ycih2YXIscmVnKSAgICAgICAgICBtbXhfbTJyIChwYXZndywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcGF2Z3dfcjJyKHJlZ3MscmVnZCkgICAgICAgIG1teF9yMnIgKHBhdmd3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcGV4dHJ3X3IycihtbXJlZyxyZWcsaW1tKSAgIG1teF9yMnJpIChwZXh0cncsIG1tcmVnLCByZWcsIGltbSkKKworI2RlZmluZSAgICAgICAgIHBpbnNyd19yMnIocmVnLG1tcmVnLGltbSkgICBtbXhfcjJyaSAocGluc3J3LCByZWcsIG1tcmVnLCBpbW0pCisKKyNkZWZpbmUgICAgICAgICBwbWF4c3dfbTJyKHZhcixyZWcpICAgICAgICAgbW14X20yciAocG1heHN3LCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwbWF4c3dfcjJyKHJlZ3MscmVnZCkgICAgICAgbW14X3IyciAocG1heHN3LCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcG1heHViX20ycih2YXIscmVnKSAgICAgICAgIG1teF9tMnIgKHBtYXh1YiwgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcG1heHViX3IycihyZWdzLHJlZ2QpICAgICAgIG1teF9yMnIgKHBtYXh1YiwgcmVncywgcmVnZCkKKworI2RlZmluZSAgICAgICAgIHBtaW5zd19tMnIodmFyLHJlZykgICAgICAgICBtbXhfbTJyIChwbWluc3csIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBtaW5zd19yMnIocmVncyxyZWdkKSAgICAgICBtbXhfcjJyIChwbWluc3csIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwbWludWJfbTJyKHZhcixyZWcpICAgICAgICAgbW14X20yciAocG1pbnViLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBwbWludWJfcjJyKHJlZ3MscmVnZCkgICAgICAgbW14X3IyciAocG1pbnViLCByZWdzLCByZWdkKQorCisjZGVmaW5lICAgICAgICAgcG1vdm1za2IobW1yZWcscmVnKSBcCisgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibW92bXNrcHMgJSIgI21tcmVnICIsICUiICNyZWcpCisKKyNkZWZpbmUgICAgICAgICBwbXVsaHV3X20ycih2YXIscmVnKSAgICAgICAgbW14X20yciAocG11bGh1dywgdmFyLCByZWcpCisjZGVmaW5lICAgICAgICAgcG11bGh1d19yMnIocmVncyxyZWdkKSAgICAgIG1teF9yMnIgKHBtdWxodXcsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwcmVmZXRjaHQwKG1lbSkgICAgICAgICAgICAgbW14X2ZldGNoIChtZW0sIHQwKQorI2RlZmluZSAgICAgICAgIHByZWZldGNodDEobWVtKSAgICAgICAgICAgICBtbXhfZmV0Y2ggKG1lbSwgdDEpCisjZGVmaW5lICAgICAgICAgcHJlZmV0Y2h0MihtZW0pICAgICAgICAgICAgIG1teF9mZXRjaCAobWVtLCB0MikKKyNkZWZpbmUgICAgICAgICBwcmVmZXRjaG50YShtZW0pICAgICAgICAgICAgbW14X2ZldGNoIChtZW0sIG50YSkKKworI2RlZmluZSAgICAgICAgIHBzYWRid19tMnIodmFyLHJlZykgICAgICAgICBtbXhfbTJyIChwc2FkYncsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzYWRid19yMnIocmVncyxyZWdkKSAgICAgICBtbXhfcjJyIChwc2FkYncsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwc2h1ZndfbTJyKHZhcixyZWcsaW1tKSAgICAgbW14X20ycmkocHNodWZ3LCB2YXIsIHJlZywgaW1tKQorI2RlZmluZSAgICAgICAgIHBzaHVmd19yMnIocmVncyxyZWdkLGltbSkgICBtbXhfcjJyaShwc2h1ZncsIHJlZ3MsIHJlZ2QsIGltbSkKKworI2RlZmluZSAgICAgICAgIHNmZW5jZSgpIF9fYXNtX18gX192b2xhdGlsZV9fICgic2ZlbmNlXG5cdCIpCisKKy8qIFNTRTIgKi8KKyNkZWZpbmUgICAgICAgICBwc2h1Zmh3X20ycih2YXIscmVnLGltbSkgICAgbW14X20ycmkocHNodWZodywgdmFyLCByZWcsIGltbSkKKyNkZWZpbmUgICAgICAgICBwc2h1Zmh3X3IycihyZWdzLHJlZ2QsaW1tKSAgbW14X3IycmkocHNodWZodywgcmVncywgcmVnZCwgaW1tKQorI2RlZmluZSAgICAgICAgIHBzaHVmbHdfbTJyKHZhcixyZWcsaW1tKSAgICBtbXhfbTJyaShwc2h1Zmx3LCB2YXIsIHJlZywgaW1tKQorI2RlZmluZSAgICAgICAgIHBzaHVmbHdfcjJyKHJlZ3MscmVnZCxpbW0pICBtbXhfcjJyaShwc2h1Zmx3LCByZWdzLCByZWdkLCBpbW0pCisKKyNkZWZpbmUgICAgICAgICBwc2h1ZmRfcjJyKHJlZ3MscmVnZCxpbW0pICAgbW14X3IycmkocHNodWZkLCByZWdzLCByZWdkLCBpbW0pCisKKyNkZWZpbmUgICAgICAgICBtb3ZkcWFfbTJyKHZhcixyZWcpICAgICAgICAgbW14X20yciAobW92ZHFhLCB2YXIsIHJlZykKKyNkZWZpbmUgICAgICAgICBtb3ZkcWFfcjJtKHJlZyx2YXIpICAgICAgICAgbW14X3IybSAobW92ZHFhLCByZWcsIHZhcikKKyNkZWZpbmUgICAgICAgICBtb3ZkcWFfcjJyKHJlZ3MscmVnZCkgICAgICAgbW14X3IyciAobW92ZHFhLCByZWdzLCByZWdkKQorI2RlZmluZSAgICAgICAgIG1vdmRxdV9tMnIodmFyLHJlZykgICAgICAgICBtbXhfbTJyIChtb3ZkcXUsIHZhciwgcmVnKQorI2RlZmluZSAgICAgICAgIG1vdmRxdV9yMm0ocmVnLHZhcikgICAgICAgICBtbXhfcjJtIChtb3ZkcXUsIHJlZywgdmFyKQorI2RlZmluZSAgICAgICAgIG1vdmRxdV9yMnIocmVncyxyZWdkKSAgICAgICBtbXhfcjJyIChtb3ZkcXUsIHJlZ3MsIHJlZ2QpCisKKyNkZWZpbmUgICAgICAgICBwbXVsbHdfcjJtKHJlZyx2YXIpICAgICAgICAgbW14X3IybSAocG11bGx3LCByZWcsIHZhcikKKworI2RlZmluZSAgICAgICAgIHBzbGxkcV9pMnIoaW1tLHJlZykgICAgICAgICBtbXhfaTJyIChwc2xsZHEsIGltbSwgcmVnKQorI2RlZmluZSAgICAgICAgIHBzcmxkcV9pMnIoaW1tLHJlZykgICAgICAgICBtbXhfaTJyIChwc3JsZHEsIGltbSwgcmVnKQorCisjZGVmaW5lICAgICAgICAgcHVucGNrbHFkcV9yMnIocmVncyxyZWdkKSAgIG1teF9yMnIgKHB1bnBja2xxZHEsIHJlZ3MsIHJlZ2QpCisjZGVmaW5lICAgICAgICAgcHVucGNraHFkcV9yMnIocmVncyxyZWdkKSAgIG1teF9yMnIgKHB1bnBja2hxZHEsIHJlZ3MsIHJlZ2QpCisKKworI2VuZGlmIC8qIEFWQ09ERUNfSTM4Nk1NWF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExY2YzNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvS2NvbmZpZwpAQCAtMCwwICsxLDE4IEBACitjb25maWcgRVQxMzFYCisJdHJpc3RhdGUgIkFnZXJlIEVULTEzMTAgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0IgorCWRlcGVuZHMgb24gTkVUREVWXzEwMDAgJiYgUENJCisJZGVmYXVsdCBuCisJLS0taGVscC0tLQorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQWdlcmUgRVQtMTMxMCBldGhlcm5ldCBhZGFwdGVycy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgZXQxMzF4LgorCitjb25maWcgRVQxMzFYX0RFQlVHCisJYm9vbCAiRW5hYmxlIGV0MTMxeCBkZWJ1Z2dpbmciCisJZGVwZW5kcyBvbiBFVDEzMVgKKwlkZWZhdWx0IG4KKwktLS1oZWxwLS0tCisJICBTYXkgWSBmb3IgZGV0YWlsZWQgZGVidWcgaW5mb3JtYXRpb24uCisKKwkgIElmIGluIGRvdWJ0LCBzYXkgTi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZDU3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L01ha2VmaWxlCkBAIC0wLDAgKzEsMTggQEAKKyMKKyMgTWFrZWZpbGUgZm9yIHRoZSBBZ2VyZSBFVC0xMzF4IGV0aGVybmV0IGRyaXZlcgorIworCitvYmotJChDT05GSUdfRVQxMzFYKSArPSBldDEzMXgubworCitldDEzMXgtb2JqcyA6PQlldDEzMTBfZWVwcm9tLm8gXAorCQlldDEzMTBfamFnY29yZS5vIFwKKwkJZXQxMzEwX21hYy5vIFwKKwkJZXQxMzEwX3BoeS5vIFwKKwkJZXQxMzEwX3BtLm8gXAorCQlldDEzMTBfcngubyBcCisJCWV0MTMxMF90eC5vIFwKKwkJZXQxMzF4X2NvbmZpZy5vIFwKKwkJZXQxMzF4X2RlYnVnLm8gXAorCQlldDEzMXhfaW5pdHBjaS5vIFwKKwkJZXQxMzF4X2lzci5vIFwKKwkJZXQxMzF4X25ldGRldi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NzUyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L1JFQURNRQpAQCAtMCwwICsxLDI1IEBACitUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgRVQxMzEwIG5ldHdvcmsgZGV2aWNlLgorCitCYXNlZCBvbiB0aGUgZHJpdmVyIGZvdW5kIGF0IGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V0MTMxeC8KKworQ2xlYW5lZCB1cCBpbW1lbnNlbHkgYnkgT2xhZiBIYXJ0bWFuIDxvLmhhcnRtYW5uQHRlbG92aXRhbC5jb20+IGFuZCBDaHJpc3RvcGgKK0hlbGx3aWcgPGhjaEBpbmZyYWRlYWQub3JnPgorCitOb3RlLCB0aGUgcG93ZXJtYW5hZ2VtZW50IG9wdGlvbnMgd2VyZSByZW1vdmVkIGZyb20gdGhlIHZlbmRvciBwcm92aWRlZAorZHJpdmVyIGFzIHRoZXkgZGlkIG5vdCBidWlsZCBwcm9wZXJseSBhdCB0aGUgdGltZS4KKworVE9ETzoKKwktIGtlcm5lbCBjb2Rpbmcgc3R5bGUgY2xlYW51cHMKKwktIGZvcndhcmQgcG9ydCBmb3IgbGF0ZXN0IG5ldHdvcmsgZHJpdmVyIGNoYW5nZXMKKwktIGtpbGwgdXNlbGVzcyB0eXBlY2FzdHMgKGUuZy4gaW4gZXQxMzEwX3BoeS5jKQorCS0gYWxsb2NfZXRoZXJkZXYgaXMgaW5pdGlhbGl6aW5nIG1lbW9yeSB3aXRoIHplcm8/IT8KKwktIGFkZF90aW1lciBjYWxsIGluIGV0MTMxeF9uZXRkZXYuYyBpcyBjb3JyZWN0PworCS0gQWRkIHBvd2VyIHNhdmluZyBmdW5jdGlvbmFsaXR5IChzdXNwZW5kLCBzbGVlcCwgcmVzdW1lKQorCS0gSW1wbGVtZW50IGEgZmV3IG1vcmUga2VybmVsIFBhcmFtZXRlciAoc2V0IG1hYyApCisKK1BsZWFzZSBzZW5kIHBhdGNoZXMgdG86CisJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KKworQW5kIENjOiBPbGFmIEhhcnRtYW5uIDxvLmhhcnRtYW5uQHRlbG92aXRhbC5jb20+IGFzIGhlIGhhcyB0aGlzIGRldmljZSBhbmQgY2FuCit0ZXN0IGFueSBjaGFuZ2VzLgorCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9hZGRyZXNzX21hcC5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzg1OTk5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaApAQCAtMCwwICsxLDIzOTkgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzEwX2FkZHJlc3NfbWFwLmggLSBDb250YWlucyB0aGUgcmVnaXN0ZXIgbWFwcGluZyBmb3IgdGhlIEVUMTMxMAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU09GVFdBUkUgTElDRU5TRQorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAorICogd2hpY2ggeW91IHNob3VsZCByZWFkIGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgdGhlIHNvZnR3YXJlLiAgVXNpbmcgdGhpcworICogc29mdHdhcmUgaW5kaWNhdGVzIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIElmIHlvdSBkbworICogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgorICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb25zLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGFzIGNvbW1lbnRzIGluIHRoZSBjb2RlIGFzCisgKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIERpc2NsYWltZXIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIJNBUyBJU5QgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTkZSSU5HRU1FTlQgQU5EIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKKyAqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCisgKiBSSVNLLiBJTiBOTyBFVkVOVCBTSEFMTCBBR0VSRSBTWVNURU1TIElOQy4gT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9FVDEzMTBfQUREUkVTU19NQVBfSF8KKyNkZWZpbmUgX0VUMTMxMF9BRERSRVNTX01BUF9IXworCisKKy8qIFNUQVJUIE9GIEdMT0JBTCBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCit0eXBlZGVmIHVuaW9uIF9RX0FERFJfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjIyOwkvLyBiaXRzIDEwLTMxCisJCXUzMiBhZGRyOjEwOwkvLyBiaXRzIDAtOQorI2Vsc2UKKwkJdTMyIGFkZHI6MTA7CS8vIGJpdHMgMC05CisJCXUzMiB1bnVzZWQ6MjI7CS8vIGJpdHMgMTAtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUV9BRERSX3QsICpQUV9BRERSX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4IHF1ZXVlIHN0YXJ0IGFkZHJlc3MgcmVnIGluIGdsb2JhbCBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MDAwMAorICogRGVmaW5lZCBlYXJsaWVyIChRX0FERFJfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciB0eCBxdWV1ZSBlbmQgYWRkcmVzcyByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDA0CisgKiBEZWZpbmVkIGVhcmxpZXIgKFFfQUREUl90KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHJ4IHF1ZXVlIHN0YXJ0IGFkZHJlc3MgcmVnIGluIGdsb2JhbCBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MDAwOAorICogRGVmaW5lZCBlYXJsaWVyIChRX0FERFJfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciByeCBxdWV1ZSBlbmQgYWRkcmVzcyByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDBDCisgKiBEZWZpbmVkIGVhcmxpZXIgKFFfQUREUl90KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHBvd2VyIG1hbmFnZW1lbnQgY29udHJvbCBzdGF0dXMgcmVnIGluIGdsb2JhbCBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MDAxMAorICovCit0eXBlZGVmIHVuaW9uIF9QTV9DU1JfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjIyOwkJLy8gYml0cyAxMC0zMQorCQl1MzIgcG1famFnY29yZV9yeF9yZHk6MTsJLy8gYml0IDkKKwkJdTMyIHBtX2phZ2NvcmVfdHhfcmR5OjE7CS8vIGJpdCA4CisJCXUzMiBwbV9waHlfbHBlZF9lbjoxOwkvLyBiaXQgNworCQl1MzIgcG1fcGh5X3N3X2NvbWE6MTsJLy8gYml0IDYKKwkJdTMyIHBtX3J4Y2xrX2dhdGU6MTsJLy8gYml0IDUKKwkJdTMyIHBtX3R4Y2xrX2dhdGU6MTsJLy8gYml0IDQKKwkJdTMyIHBtX3N5c2Nsa19nYXRlOjE7CS8vIGJpdCAzCisJCXUzMiBwbV9qYWdjb3JlX3J4X2VuOjE7CS8vIGJpdCAyCisJCXUzMiBwbV9qYWdjb3JlX3R4X2VuOjE7CS8vIGJpdCAxCisJCXUzMiBwbV9naWdlcGh5X2VuOjE7CS8vIGJpdCAwCisjZWxzZQorCQl1MzIgcG1fZ2lnZXBoeV9lbjoxOwkvLyBiaXQgMAorCQl1MzIgcG1famFnY29yZV90eF9lbjoxOwkvLyBiaXQgMQorCQl1MzIgcG1famFnY29yZV9yeF9lbjoxOwkvLyBiaXQgMgorCQl1MzIgcG1fc3lzY2xrX2dhdGU6MTsJLy8gYml0IDMKKwkJdTMyIHBtX3R4Y2xrX2dhdGU6MTsJLy8gYml0IDQKKwkJdTMyIHBtX3J4Y2xrX2dhdGU6MTsJLy8gYml0IDUKKwkJdTMyIHBtX3BoeV9zd19jb21hOjE7CS8vIGJpdCA2CisJCXUzMiBwbV9waHlfbHBlZF9lbjoxOwkvLyBiaXQgNworCQl1MzIgcG1famFnY29yZV90eF9yZHk6MTsJLy8gYml0IDgKKwkJdTMyIHBtX2phZ2NvcmVfcnhfcmR5OjE7CS8vIGJpdCA5CisJCXUzMiB1bnVzZWQ6MjI7CQkvLyBiaXRzIDEwLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFBNX0NTUl90LCAqUFBNX0NTUl90OworCisvKgorICogc3RydWN0dXJlIGZvciBpbnRlcnJ1cHQgc3RhdHVzIHJlZyBpbiBnbG9iYWwgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDAwMTgKKyAqLwordHlwZWRlZiB1bmlvbiBfSU5URVJSVVBUX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDU6MTE7CQkJLy8gYml0cyAyMS0zMQorCQl1MzIgc2x2X3RpbWVvdXQ6MTsJCQkvLyBiaXQgMjAKKwkJdTMyIG1hY19zdGF0X2ludGVycnVwdDoxOwkJLy8gYml0IDE5CisJCXUzMiByeG1hY19pbnRlcnJ1cHQ6MTsJCS8vIGJpdCAxOAorCQl1MzIgdHhtYWNfaW50ZXJydXB0OjE7CQkvLyBiaXQgMTcKKwkJdTMyIHBoeV9pbnRlcnJ1cHQ6MTsJCS8vIGJpdCAxNgorCQl1MzIgd2FrZV9vbl9sYW46MTsJCQkvLyBiaXQgMTUKKwkJdTMyIHdhdGNoZG9nX2ludGVycnVwdDoxOwkJLy8gYml0IDE0CisJCXUzMiB1bnVzZWQ0OjQ7CQkJLy8gYml0cyAxMC0xMworCQl1MzIgcnhkbWFfZXJyOjE7CQkJLy8gYml0IDkKKwkJdTMyIHJ4ZG1hX3BrdF9zdGF0X3JpbmdfbG93OjE7CS8vIGJpdCA4CisJCXUzMiByeGRtYV9mYl9yaW5nMV9sb3c6MTsJCS8vIGJpdCA3CisJCXUzMiByeGRtYV9mYl9yaW5nMF9sb3c6MTsJCS8vIGJpdCA2CisJCXUzMiByeGRtYV94ZnJfZG9uZToxOwkJLy8gYml0IDUKKwkJdTMyIHR4ZG1hX2VycjoxOwkJCS8vIGJpdCA0CisJCXUzMiB0eGRtYV9pc3I6MTsJCQkvLyBiaXQgMworCQl1MzIgdW51c2VkMzoxOwkJCS8vIGJpdCAyCisJCXUzMiB1bnVzZWQyOjE7CQkJLy8gYml0IDEKKwkJdTMyIHVudXNlZDE6MTsJCQkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHVudXNlZDE6MTsJCQkvLyBiaXQgMAorCQl1MzIgdW51c2VkMjoxOwkJCS8vIGJpdCAxCisJCXUzMiB1bnVzZWQzOjE7CQkJLy8gYml0IDIKKwkJdTMyIHR4ZG1hX2lzcjoxOwkJCS8vIGJpdCAzCisJCXUzMiB0eGRtYV9lcnI6MTsJCQkvLyBiaXQgNAorCQl1MzIgcnhkbWFfeGZyX2RvbmU6MTsJCS8vIGJpdCA1CisJCXUzMiByeGRtYV9mYl9yaW5nMF9sb3c6MTsJCS8vIGJpdCA2CisJCXUzMiByeGRtYV9mYl9yaW5nMV9sb3c6MTsJCS8vIGJpdCA3CisJCXUzMiByeGRtYV9wa3Rfc3RhdF9yaW5nX2xvdzoxOwkvLyBiaXQgOAorCQl1MzIgcnhkbWFfZXJyOjE7CQkJLy8gYml0IDkKKwkJdTMyIHVudXNlZDQ6NDsJCQkvLyBiaXRzIDEwLTEzCisJCXUzMiB3YXRjaGRvZ19pbnRlcnJ1cHQ6MTsJCS8vIGJpdCAxNAorCQl1MzIgd2FrZV9vbl9sYW46MTsJCQkvLyBiaXQgMTUKKwkJdTMyIHBoeV9pbnRlcnJ1cHQ6MTsJCS8vIGJpdCAxNgorCQl1MzIgdHhtYWNfaW50ZXJydXB0OjE7CQkvLyBiaXQgMTcKKwkJdTMyIHJ4bWFjX2ludGVycnVwdDoxOwkJLy8gYml0IDE4CisJCXUzMiBtYWNfc3RhdF9pbnRlcnJ1cHQ6MTsJCS8vIGJpdCAxOQorCQl1MzIgc2x2X3RpbWVvdXQ6MTsJCQkvLyBiaXQgMjAKKwkJdTMyIHVudXNlZDU6MTE7CQkJLy8gYml0cyAyMS0zMQorI2VuZGlmCisJfSBiaXRzOworfSBJTlRFUlJVUFRfdCwgKlBJTlRFUlJVUFRfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgaW50ZXJydXB0IG1hc2sgcmVnIGluIGdsb2JhbCBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MDAxQworICogRGVmaW5lZCBlYXJsaWVyIChJTlRFUlJVUFRfdCksIGJ1dCAnd2F0Y2hkb2dfaW50ZXJydXB0JyBpcyBub3QgdXNlZC4KKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBpbnRlcnJ1cHQgYWxpYXMgY2xlYXIgbWFzayByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDIwCisgKiBEZWZpbmVkIGVhcmxpZXIgKElOVEVSUlVQVF90KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGludGVycnVwdCBzdGF0dXMgYWxpYXMgcmVnIGluIGdsb2JhbCBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MDAyNAorICogRGVmaW5lZCBlYXJsaWVyIChJTlRFUlJVUFRfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBzb2Z0d2FyZSByZXNldCByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDI4CisgKi8KK3R5cGVkZWYgdW5pb24gX1NXX1JFU0VUX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHNlbGZjbHJfZGlzYWJsZToxOwkvLyBiaXQgMzEKKwkJdTMyIHVudXNlZDoyNDsJCS8vIGJpdHMgNy0zMAorCQl1MzIgbW1jX3N3X3Jlc2V0OjE7CS8vIGJpdCA2CisJCXUzMiBtYWNfc3RhdF9zd19yZXNldDoxOwkvLyBiaXQgNQorCQl1MzIgbWFjX3N3X3Jlc2V0OjE7CS8vIGJpdCA0CisJCXUzMiByeG1hY19zd19yZXNldDoxOwkvLyBiaXQgMworCQl1MzIgdHhtYWNfc3dfcmVzZXQ6MTsJLy8gYml0IDIKKwkJdTMyIHJ4ZG1hX3N3X3Jlc2V0OjE7CS8vIGJpdCAxCisJCXUzMiB0eGRtYV9zd19yZXNldDoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHR4ZG1hX3N3X3Jlc2V0OjE7CS8vIGJpdCAwCisJCXUzMiByeGRtYV9zd19yZXNldDoxOwkvLyBiaXQgMQorCQl1MzIgdHhtYWNfc3dfcmVzZXQ6MTsJLy8gYml0IDIKKwkJdTMyIHJ4bWFjX3N3X3Jlc2V0OjE7CS8vIGJpdCAzCisJCXUzMiBtYWNfc3dfcmVzZXQ6MTsJLy8gYml0IDQKKwkJdTMyIG1hY19zdGF0X3N3X3Jlc2V0OjE7CS8vIGJpdCA1CisJCXUzMiBtbWNfc3dfcmVzZXQ6MTsJLy8gYml0IDYKKwkJdTMyIHVudXNlZDoyNDsJCS8vIGJpdHMgNy0zMAorCQl1MzIgc2VsZmNscl9kaXNhYmxlOjE7CS8vIGJpdCAzMQorI2VuZGlmCisJfSBiaXRzOworfSBTV19SRVNFVF90LCAqUFNXX1JFU0VUX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIFNMViBUaW1lciByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDJDCisgKi8KK3R5cGVkZWYgdW5pb24gX1NMVl9USU1FUl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6ODsJLy8gYml0cyAyNC0zMQorCQl1MzIgdGltZXJfaW5pOjI0OwkvLyBiaXRzIDAtMjMKKyNlbHNlCisJCXUzMiB0aW1lcl9pbmk6MjQ7CS8vIGJpdHMgMC0yMworCQl1MzIgdW51c2VkOjg7CS8vIGJpdHMgMjQtMzEKKyNlbmRpZgorCX0gYml0czsKK30gU0xWX1RJTUVSX3QsICpQU0xWX1RJTUVSX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1TSSBDb25maWd1cmF0aW9uIHJlZyBpbiBnbG9iYWwgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDAwMzAKKyAqLwordHlwZWRlZiB1bmlvbiBfTVNJX0NPTkZJR190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQxOjEzOwkvLyBiaXRzIDE5LTMxCisJCXUzMiBtc2lfdGM6MzsJLy8gYml0cyAxNi0xOAorCQl1MzIgdW51c2VkMjoxMTsJLy8gYml0cyA1LTE1CisJCXUzMiBtc2lfdmVjdG9yOjU7CS8vIGJpdHMgMC00CisjZWxzZQorCQl1MzIgbXNpX3ZlY3Rvcjo1OwkvLyBiaXRzIDAtNAorCQl1MzIgdW51c2VkMjoxMTsJLy8gYml0cyA1LTE1CisJCXUzMiBtc2lfdGM6MzsJLy8gYml0cyAxNi0xOAorCQl1MzIgdW51c2VkMToxMzsJLy8gYml0cyAxOS0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNU0lfQ09ORklHX3QsICpQTVNJX0NPTkZJR190OworCisvKgorICogc3RydWN0dXJlIGZvciBMb29wYmFjayByZWcgaW4gZ2xvYmFsIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgwMDM0CisgKi8KK3R5cGVkZWYgdW5pb24gX0xPT1BCQUNLX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDozMDsJCS8vIGJpdHMgMi0zMQorCQl1MzIgZG1hX2xvb3BiYWNrOjE7CS8vIGJpdCAxCisJCXUzMiBtYWNfbG9vcGJhY2s6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBtYWNfbG9vcGJhY2s6MTsJLy8gYml0IDAKKwkJdTMyIGRtYV9sb29wYmFjazoxOwkvLyBiaXQgMQorCQl1MzIgdW51c2VkOjMwOwkJLy8gYml0cyAyLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IExPT1BCQUNLX3QsICpQTE9PUEJBQ0tfdDsKKworLyoKKyAqIEdMT0JBTCBNb2R1bGUgb2YgSkFHQ29yZSBBZGRyZXNzIE1hcHBpbmcKKyAqIExvY2F0ZWQgYXQgYWRkcmVzcyAweDAwMDAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dMT0JBTF90IHsJCQkvLyBMb2NhdGlvbjoKKwlRX0FERFJfdCB0eHFfc3RhcnRfYWRkcjsJCS8vICAweDAwMDAKKwlRX0FERFJfdCB0eHFfZW5kX2FkZHI7CQkJLy8gIDB4MDAwNAorCVFfQUREUl90IHJ4cV9zdGFydF9hZGRyOwkJLy8gIDB4MDAwOAorCVFfQUREUl90IHJ4cV9lbmRfYWRkcjsJCQkvLyAgMHgwMDBDCisJUE1fQ1NSX3QgcG1fY3NyOwkJCS8vICAweDAwMTAKKwl1MzIgdW51c2VkOwkJCQkvLyAgMHgwMDE0CisJSU5URVJSVVBUX3QgaW50X3N0YXR1czsJCQkvLyAgMHgwMDE4CisJSU5URVJSVVBUX3QgaW50X21hc2s7CQkJLy8gIDB4MDAxQworCUlOVEVSUlVQVF90IGludF9hbGlhc19jbHJfZW47CQkvLyAgMHgwMDIwCisJSU5URVJSVVBUX3QgaW50X3N0YXR1c19hbGlhczsJCS8vICAweDAwMjQKKwlTV19SRVNFVF90IHN3X3Jlc2V0OwkJCS8vICAweDAwMjgKKwlTTFZfVElNRVJfdCBzbHZfdGltZXI7CQkJLy8gIDB4MDAyQworCU1TSV9DT05GSUdfdCBtc2lfY29uZmlnOwkJLy8gIDB4MDAzMAorCUxPT1BCQUNLX3QgbG9vcGJhY2s7CQkJLy8gIDB4MDAzNAorCXUzMiB3YXRjaGRvZ190aW1lcjsJCQkvLyAgMHgwMDM4Cit9IEdMT0JBTF90LCAqUEdMT0JBTF90OworCisvKiBFTkQgT0YgR0xPQkFMIFJFR0lTVEVSIEFERFJFU1MgTUFQICovCisKKworLyogU1RBUlQgT0YgVFhETUEgUkVHSVNURVIgQUREUkVTUyBNQVAgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgdHhkbWEgY29udHJvbCBzdGF0dXMgcmVnIGluIHR4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDAwCisgKi8KK3R5cGVkZWYgdW5pb24gX1RYRE1BX0NTUl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQyOjE5OwkJLy8gYml0cyAxMy0zMQorCQl1MzIgdHJhZmZpY19jbGFzczo0OwkvLyBiaXRzIDktMTIKKwkJdTMyIHNuZ2xfZXBrdF9tb2RlOjE7CS8vIGJpdCA4CisJCXUzMiBjYWNoZV90aHJzaGxkOjQ7CS8vIGJpdHMgNC03CisJCXUzMiB1bnVzZWQxOjI7CQkvLyBiaXRzIDItMworCQl1MzIgZHJvcF9UTFBfZGlzYWJsZToxOwkvLyBiaXQgMQorCQl1MzIgaGFsdDoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBoYWx0OjE7CQkvLyBiaXQgMAorCQl1MzIgZHJvcF9UTFBfZGlzYWJsZToxOwkvLyBiaXQgMQorCQl1MzIgdW51c2VkMToyOwkJLy8gYml0cyAyLTMKKwkJdTMyIGNhY2hlX3RocnNobGQ6NDsJLy8gYml0cyA0LTcKKwkJdTMyIHNuZ2xfZXBrdF9tb2RlOjE7CS8vIGJpdCA4CisJCXUzMiB0cmFmZmljX2NsYXNzOjQ7CS8vIGJpdHMgOS0xMgorCQl1MzIgdW51c2VkMjoxOTsJCS8vIGJpdHMgMTMtMzEKKyNlbmRpZgorCX0gYml0czsKK30gVFhETUFfQ1NSX3QsICpQVFhETUFfQ1NSX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHBhY2tldCByaW5nIGJhc2UgYWRkcmVzcyBoaSByZWcgaW4gdHhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDEwMDQKKyAqIERlZmluZWQgZWFybGllciAodTMyKQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHBhY2tldCByaW5nIGJhc2UgYWRkcmVzcyBsb3cgcmVnIGluIHR4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDA4CisgKiBEZWZpbmVkIGVhcmxpZXIgKHUzMikKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciB0eGRtYSBwYWNrZXQgcmluZyBudW1iZXIgb2YgZGVzY3JpcHRvciByZWcgaW4gdHhkbWEgYWRkcmVzcworICogbWFwLiAgTG9jYXRlZCBhdCBhZGRyZXNzIDB4MTAwQworICovCit0eXBlZGVmIHVuaW9uIF9UWERNQV9QUl9OVU1fREVTX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoyMjsJLy8gYml0cyAxMC0zMQorCQl1MzIgcHJfbmRlczoxMDsJLy8gYml0cyAwLTkKKyNlbHNlCisJCXUzMiBwcl9uZGVzOjEwOwkvLyBiaXRzIDAtOQorCQl1MzIgdW51c2VkOjIyOwkvLyBiaXRzIDEwLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFRYRE1BX1BSX05VTV9ERVNfdCwgKlBUWERNQV9QUl9OVU1fREVTX3Q7CisKKwordHlwZWRlZiB1bmlvbiBfRE1BMTBXX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoyMTsJLy8gYml0cyAxMS0zMQorCQl1MzIgd3JhcDoxOwkvLyBiaXQgMTAKKwkJdTMyIHZhbDoxMDsJLy8gYml0cyAwLTkKKyNlbHNlCisJCXUzMiB2YWw6MTA7CS8vIGJpdHMgMC05CisJCXUzMiB3cmFwOjE7CS8vIGJpdCAxMAorCQl1MzIgdW51c2VkOjIxOwkvLyBiaXRzIDExLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IERNQTEwV190LCAqUERNQTEwV190OworCisvKgorICogc3RydWN0dXJlIGZvciB0eGRtYSB0eCBxdWV1ZSB3cml0ZSBhZGRyZXNzIHJlZyBpbiB0eGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MTAxMAorICogRGVmaW5lZCBlYXJsaWVyIChETUExMFdfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciB0eGRtYSB0eCBxdWV1ZSB3cml0ZSBhZGRyZXNzIGV4dGVybmFsIHJlZyBpbiB0eGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MTAxNAorICogRGVmaW5lZCBlYXJsaWVyIChETUExMFdfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciB0eGRtYSB0eCBxdWV1ZSByZWFkIGFkZHJlc3MgcmVnIGluIHR4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDE4CisgKiBEZWZpbmVkIGVhcmxpZXIgKERNQTEwV190KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHN0YXR1cyB3cml0ZWJhY2sgYWRkcmVzcyBoaSByZWcgaW4gdHhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDEwMUMKKyAqIERlZmluZWQgZWFybGllciAodTMyKQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHN0YXR1cyB3cml0ZWJhY2sgYWRkcmVzcyBsbyByZWcgaW4gdHhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDEwMjAKKyAqIERlZmluZWQgZWFybGllciAodTMyKQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHNlcnZpY2UgcmVxdWVzdCByZWcgaW4gdHhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDEwMjQKKyAqIERlZmluZWQgZWFybGllciAoRE1BMTBXX3QpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgdHhkbWEgc2VydmljZSBjb21wbGV0ZSByZWcgaW4gdHhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDEwMjgKKyAqIERlZmluZWQgZWFybGllciAoRE1BMTBXX3QpCisgKi8KKwordHlwZWRlZiB1bmlvbiBfRE1BNFdfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjI3OwkvLyBiaXRzIDUtMzEKKwkJdTMyIHdyYXA6MTsJLy8gYml0IDQKKwkJdTMyIHZhbDo0OwkJLy8gYml0IDAtMworI2Vsc2UKKwkJdTMyIHZhbDo0OwkJLy8gYml0cyAwLTMKKwkJdTMyIHdyYXA6MTsJLy8gYml0IDQKKwkJdTMyIHVudXNlZDoyNzsJLy8gYml0cyA1LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IERNQTRXX3QsICpQRE1BNFdfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgdHhkbWEgdHggZGVzY3JpcHRvciBjYWNoZSByZWFkIGluZGV4IHJlZyBpbiB0eGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MTAyQworICogRGVmaW5lZCBlYXJsaWVyIChETUE0V190KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHR4ZG1hIHR4IGRlc2NyaXB0b3IgY2FjaGUgd3JpdGUgaW5kZXggcmVnIGluIHR4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDMwCisgKiBEZWZpbmVkIGVhcmxpZXIgKERNQTRXX3QpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgdHhkbWEgZXJyb3IgcmVnIGluIHR4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDM0CisgKi8KK3R5cGVkZWYgdW5pb24gX1RYRE1BX0VSUk9SX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDM6MjI7CQkvLyBiaXRzIDEwLTMxCisJCXUzMiBXcmJrUmV3aW5kOjE7CS8vIGJpdCA5CisJCXUzMiBXcmJrUmVzZW5kOjE7CS8vIGJpdCA4CisJCXUzMiB1bnVzZWQyOjI7CQkvLyBiaXRzIDYtNworCQl1MzIgRGVzY3JSZXdpbmQ6MTsJLy8gYml0IDUKKwkJdTMyIERlc2NyUmVzZW5kOjE7CS8vIGJpdCA0CisJCXUzMiB1bnVzZWQxOjI7CQkvLyBiaXRzIDItMworCQl1MzIgUHlsZFJld2luZDoxOwkvLyBiaXQgMQorCQl1MzIgUHlsZFJlc2VuZDoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIFB5bGRSZXNlbmQ6MTsJLy8gYml0IDAKKwkJdTMyIFB5bGRSZXdpbmQ6MTsJLy8gYml0IDEKKwkJdTMyIHVudXNlZDE6MjsJCS8vIGJpdHMgMi0zCisJCXUzMiBEZXNjclJlc2VuZDoxOwkvLyBiaXQgNAorCQl1MzIgRGVzY3JSZXdpbmQ6MTsJLy8gYml0IDUKKwkJdTMyIHVudXNlZDI6MjsJCS8vIGJpdHMgNi03CisJCXUzMiBXcmJrUmVzZW5kOjE7CS8vIGJpdCA4CisJCXUzMiBXcmJrUmV3aW5kOjE7CS8vIGJpdCA5CisJCXUzMiB1bnVzZWQzOjIyOwkJLy8gYml0cyAxMC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWERNQV9FUlJPUl90LCAqUFRYRE1BX0VSUk9SX3Q7CisKKy8qCisgKiBUeCBETUEgTW9kdWxlIG9mIEpBR0NvcmUgQWRkcmVzcyBNYXBwaW5nCisgKiBMb2NhdGVkIGF0IGFkZHJlc3MgMHgxMDAwCisgKi8KK3R5cGVkZWYgc3RydWN0IF9UWERNQV90IHsJCS8vIExvY2F0aW9uOgorCVRYRE1BX0NTUl90IGNzcjsJCS8vICAweDEwMDAKKwl1MzIgcHJfYmFzZV9oaTsJCQkvLyAgMHgxMDA0CisJdTMyIHByX2Jhc2VfbG87CQkJLy8gIDB4MTAwOAorCVRYRE1BX1BSX05VTV9ERVNfdCBwcl9udW1fZGVzOwkvLyAgMHgxMDBDCisJRE1BMTBXX3QgdHhxX3dyX2FkZHI7CQkvLyAgMHgxMDEwCisJRE1BMTBXX3QgdHhxX3dyX2FkZHJfZXh0OwkvLyAgMHgxMDE0CisJRE1BMTBXX3QgdHhxX3JkX2FkZHI7CQkvLyAgMHgxMDE4CisJdTMyIGRtYV93Yl9iYXNlX2hpOwkJLy8gIDB4MTAxQworCXUzMiBkbWFfd2JfYmFzZV9sbzsJCS8vICAweDEwMjAKKwlETUExMFdfdCBzZXJ2aWNlX3JlcXVlc3Q7CS8vICAweDEwMjQKKwlETUExMFdfdCBzZXJ2aWNlX2NvbXBsZXRlOwkvLyAgMHgxMDI4CisJRE1BNFdfdCBjYWNoZV9yZF9pbmRleDsJCS8vICAweDEwMkMKKwlETUE0V190IGNhY2hlX3dyX2luZGV4OwkJLy8gIDB4MTAzMAorCVRYRE1BX0VSUk9SX3QgVHhEbWFFcnJvcjsJLy8gIDB4MTAzNAorCXUzMiBEZXNjQWJvcnRDb3VudDsJCS8vICAweDEwMzgKKwl1MzIgUGF5bG9hZEFib3J0Q250OwkJLy8gIDB4MTAzYworCXUzMiBXcml0ZUJhY2tBYm9ydENudDsJCS8vICAweDEwNDAKKwl1MzIgRGVzY1RpbWVvdXRDbnQ7CQkvLyAgMHgxMDQ0CisJdTMyIFBheWxvYWRUaW1lb3V0Q250OwkJLy8gIDB4MTA0OAorCXUzMiBXcml0ZUJhY2tUaW1lb3V0Q250OwkvLyAgMHgxMDRjCisJdTMyIERlc2NFcnJvckNvdW50OwkJLy8gIDB4MTA1MAorCXUzMiBQYXlsb2FkRXJyb3JDbnQ7CQkvLyAgMHgxMDU0CisJdTMyIFdyaXRlQmFja0Vycm9yQ250OwkJLy8gIDB4MTA1OAorCXUzMiBEcm9wcGVkVExQQ291bnQ7CQkvLyAgMHgxMDVjCisJRE1BMTBXX3QgTmV3U2VydmljZUNvbXBsZXRlOwkvLyAgMHgxMDYwCisJdTMyIEV0aGVybmV0UGFja2V0Q291bnQ7CS8vICAweDEwNjQKK30gVFhETUFfdCwgKlBUWERNQV90OworCisvKiBFTkQgT0YgVFhETUEgUkVHSVNURVIgQUREUkVTUyBNQVAgKi8KKworCisvKiBTVEFSVCBPRiBSWERNQSBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogc3RydWN0dXJlIGZvciBjb250cm9sIHN0YXR1cyByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIExvY2F0ZWQgYXQgYWRkcmVzcyAweDIwMDAKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhETUFfQ1NSX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDI6MTQ7CQkvLyBiaXRzIDE4LTMxCisJCXUzMiBoYWx0X3N0YXR1czoxOwkvLyBiaXQgMTcKKwkJdTMyIHBrdF9kb25lX2ZsdXNoOjE7CS8vIGJpdCAxNgorCQl1MzIgcGt0X2Ryb3BfZGlzYWJsZToxOwkvLyBiaXQgMTUKKwkJdTMyIHVudXNlZDE6MTsJCS8vIGJpdCAxNAorCQl1MzIgZmJyMV9lbmFibGU6MTsJLy8gYml0IDEzCisJCXUzMiBmYnIxX3NpemU6MjsJLy8gYml0cyAxMS0xMgorCQl1MzIgZmJyMF9lbmFibGU6MTsJLy8gYml0IDEwCisJCXUzMiBmYnIwX3NpemU6MjsJLy8gYml0cyA4LTkKKwkJdTMyIGRtYV9iaWdfZW5kaWFuOjE7CS8vIGJpdCA3CisJCXUzMiBwa3RfYmlnX2VuZGlhbjoxOwkvLyBiaXQgNgorCQl1MzIgcHNyX2JpZ19lbmRpYW46MTsJLy8gYml0IDUKKwkJdTMyIGZicl9iaWdfZW5kaWFuOjE7CS8vIGJpdCA0CisJCXUzMiB0YzozOwkJLy8gYml0cyAxLTMKKwkJdTMyIGhhbHQ6MTsJCS8vIGJpdCAwCisjZWxzZQorCQl1MzIgaGFsdDoxOwkJLy8gYml0IDAKKwkJdTMyIHRjOjM7CQkvLyBiaXRzIDEtMworCQl1MzIgZmJyX2JpZ19lbmRpYW46MTsJLy8gYml0IDQKKwkJdTMyIHBzcl9iaWdfZW5kaWFuOjE7CS8vIGJpdCA1CisJCXUzMiBwa3RfYmlnX2VuZGlhbjoxOwkvLyBiaXQgNgorCQl1MzIgZG1hX2JpZ19lbmRpYW46MTsJLy8gYml0IDcKKwkJdTMyIGZicjBfc2l6ZToyOwkvLyBiaXRzIDgtOQorCQl1MzIgZmJyMF9lbmFibGU6MTsJLy8gYml0IDEwCisJCXUzMiBmYnIxX3NpemU6MjsJLy8gYml0cyAxMS0xMgorCQl1MzIgZmJyMV9lbmFibGU6MTsJLy8gYml0IDEzCisJCXUzMiB1bnVzZWQxOjE7CQkvLyBiaXQgMTQKKwkJdTMyIHBrdF9kcm9wX2Rpc2FibGU6MTsJLy8gYml0IDE1CisJCXUzMiBwa3RfZG9uZV9mbHVzaDoxOwkvLyBiaXQgMTYKKwkJdTMyIGhhbHRfc3RhdHVzOjE7CS8vIGJpdCAxNworCQl1MzIgdW51c2VkMjoxNDsJCS8vIGJpdHMgMTgtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfQ1NSX3QsICpQUlhETUFfQ1NSX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGRtYSB3cml0ZWJhY2sgbG8gcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDA0CisgKiBEZWZpbmVkIGVhcmxpZXIgKHUzMikKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBkbWEgd3JpdGViYWNrIGhpIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAwOAorICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgbnVtYmVyIG9mIHBhY2tldHMgZG9uZSByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDIwMEMKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhETUFfTlVNX1BLVF9ET05FX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoyNDsJLy8gYml0cyA4LTMxCisJCXUzMiBudW1fZG9uZTo4OwkvLyBiaXRzIDAtNworI2Vsc2UKKwkJdTMyIG51bV9kb25lOjg7CS8vIGJpdHMgMC03CisJCXUzMiB1bnVzZWQ6MjQ7CS8vIGJpdHMgOC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWERNQV9OVU1fUEtUX0RPTkVfdCwgKlBSWERNQV9OVU1fUEtUX0RPTkVfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgbWF4IHBhY2tldCB0aW1lIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAxMAorICovCit0eXBlZGVmIHVuaW9uIF9SWERNQV9NQVhfUEtUX1RJTUVfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjE0OwkJLy8gYml0cyAxOC0zMQorCQl1MzIgdGltZV9kb25lOjE4OwkvLyBiaXRzIDAtMTcKKyNlbHNlCisJCXUzMiB0aW1lX2RvbmU6MTg7CS8vIGJpdHMgMC0xNworCQl1MzIgdW51c2VkOjE0OwkJLy8gYml0cyAxOC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWERNQV9NQVhfUEtUX1RJTUVfdCwgKlBSWERNQV9NQVhfUEtUX1RJTUVfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgcnggcXVldWUgcmVhZCBhZGRyZXNzIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAxNAorICogRGVmaW5lZCBlYXJsaWVyIChETUExMFdfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciByeCBxdWV1ZSByZWFkIGFkZHJlc3MgZXh0ZXJuYWwgcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDE4CisgKiBEZWZpbmVkIGVhcmxpZXIgKERNQTEwV190KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHJ4IHF1ZXVlIHdyaXRlIGFkZHJlc3MgcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDFDCisgKiBEZWZpbmVkIGVhcmxpZXIgKERNQTEwV190KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHBhY2tldCBzdGF0dXMgcmluZyBiYXNlIGFkZHJlc3MgbG8gcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDIwCisgKiBEZWZpbmVkIGVhcmxpZXIgKHUzMikKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBwYWNrZXQgc3RhdHVzIHJpbmcgYmFzZSBhZGRyZXNzIGhpIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAyNAorICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgcGFja2V0IHN0YXR1cyByaW5nIG51bWJlciBvZiBkZXNjcmlwdG9ycyByZWcgaW4gcnhkbWEgYWRkcmVzcworICogbWFwLiAgTG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAyOAorICovCit0eXBlZGVmIHVuaW9uIF9SWERNQV9QU1JfTlVNX0RFU190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6MjA7CQkvLyBiaXRzIDEyLTMxCisJCXUzMiBwc3JfbmRlczoxMjsJLy8gYml0IDAtMTEKKyNlbHNlCisJCXUzMiBwc3JfbmRlczoxMjsJLy8gYml0IDAtMTEKKwkJdTMyIHVudXNlZDoyMDsJCS8vIGJpdHMgMTItMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfUFNSX05VTV9ERVNfdCwgKlBSWERNQV9QU1JfTlVNX0RFU190OworCisvKgorICogc3RydWN0dXJlIGZvciBwYWNrZXQgc3RhdHVzIHJpbmcgYXZhaWxhYmxlIG9mZnNldCByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDIwMkMKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhETUFfUFNSX0FWQUlMX09GRlNFVF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6MTk7CQkvLyBiaXRzIDEzLTMxCisJCXUzMiBwc3JfYXZhaWxfd3JhcDoxOwkvLyBiaXQgMTIKKwkJdTMyIHBzcl9hdmFpbDoxMjsJLy8gYml0IDAtMTEKKyNlbHNlCisJCXUzMiBwc3JfYXZhaWw6MTI7CS8vIGJpdCAwLTExCisJCXUzMiBwc3JfYXZhaWxfd3JhcDoxOwkvLyBiaXQgMTIKKwkJdTMyIHVudXNlZDoxOTsJCS8vIGJpdHMgMTMtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfUFNSX0FWQUlMX09GRlNFVF90LCAqUFJYRE1BX1BTUl9BVkFJTF9PRkZTRVRfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgcGFja2V0IHN0YXR1cyByaW5nIGZ1bGwgb2Zmc2V0IHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAzMAorICovCit0eXBlZGVmIHVuaW9uIF9SWERNQV9QU1JfRlVMTF9PRkZTRVRfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjE5OwkJLy8gYml0cyAxMy0zMQorCQl1MzIgcHNyX2Z1bGxfd3JhcDoxOwkvLyBiaXQgMTIKKwkJdTMyIHBzcl9mdWxsOjEyOwkvLyBiaXQgMC0xMQorI2Vsc2UKKwkJdTMyIHBzcl9mdWxsOjEyOwkvLyBiaXQgMC0xMQorCQl1MzIgcHNyX2Z1bGxfd3JhcDoxOwkvLyBiaXQgMTIKKwkJdTMyIHVudXNlZDoxOTsJCS8vIGJpdHMgMTMtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfUFNSX0ZVTExfT0ZGU0VUX3QsICpQUlhETUFfUFNSX0ZVTExfT0ZGU0VUX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHBhY2tldCBzdGF0dXMgcmluZyBhY2Nlc3MgaW5kZXggcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDM0CisgKi8KK3R5cGVkZWYgdW5pb24gX1JYRE1BX1BTUl9BQ0NFU1NfSU5ERVhfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjI3OwkvLyBiaXRzIDUtMzEKKwkJdTMyIHBzcl9haTo1OwkvLyBiaXRzIDAtNAorI2Vsc2UKKwkJdTMyIHBzcl9haTo1OwkvLyBiaXRzIDAtNAorCQl1MzIgdW51c2VkOjI3OwkvLyBiaXRzIDUtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfUFNSX0FDQ0VTU19JTkRFWF90LCAqUFJYRE1BX1BTUl9BQ0NFU1NfSU5ERVhfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgcGFja2V0IHN0YXR1cyByaW5nIG1pbmltdW0gZGVzY3JpcHRvcnMgcmVnIGluIHJ4ZG1hIGFkZHJlc3MKKyAqIG1hcC4gIExvY2F0ZWQgYXQgYWRkcmVzcyAweDIwMzgKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhETUFfUFNSX01JTl9ERVNfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjIwOwkvLyBiaXRzIDEyLTMxCisJCXUzMiBwc3JfbWluOjEyOwkvLyBiaXRzIDAtMTEKKyNlbHNlCisJCXUzMiBwc3JfbWluOjEyOwkvLyBiaXRzIDAtMTEKKwkJdTMyIHVudXNlZDoyMDsJLy8gYml0cyAxMi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWERNQV9QU1JfTUlOX0RFU190LCAqUFJYRE1BX1BTUl9NSU5fREVTX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGZyZWUgYnVmZmVyIHJpbmcgYmFzZSBsbyBhZGRyZXNzIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjAzQworICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgZnJlZSBidWZmZXIgcmluZyBiYXNlIGhpIGFkZHJlc3MgcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDQwCisgKiBEZWZpbmVkIGVhcmxpZXIgKHUzMikKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBmcmVlIGJ1ZmZlciByaW5nIG51bWJlciBvZiBkZXNjcmlwdG9ycyByZWcgaW4gcnhkbWEgYWRkcmVzcworICogbWFwLiAgTG9jYXRlZCBhdCBhZGRyZXNzIDB4MjA0NAorICovCit0eXBlZGVmIHVuaW9uIF9SWERNQV9GQlJfTlVNX0RFU190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6MjI7CQkvLyBiaXRzIDEwLTMxCisJCXUzMiBmYnJfbmRlc2M6MTA7CS8vIGJpdHMgMC05CisjZWxzZQorCQl1MzIgZmJyX25kZXNjOjEwOwkvLyBiaXRzIDAtOQorCQl1MzIgdW51c2VkOjIyOwkJLy8gYml0cyAxMC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWERNQV9GQlJfTlVNX0RFU190LCAqUFJYRE1BX0ZCUl9OVU1fREVTX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGZyZWUgYnVmZmVyIHJpbmcgMCBhdmFpbGFibGUgb2Zmc2V0IHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjA0OAorICogRGVmaW5lZCBlYXJsaWVyIChETUExMFdfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBmcmVlIGJ1ZmZlciByaW5nIDAgZnVsbCBvZmZzZXQgcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDRDCisgKiBEZWZpbmVkIGVhcmxpZXIgKERNQTEwV190KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGZyZWUgYnVmZmVyIGNhY2hlIDAgZnVsbCBvZmZzZXQgcmVnIGluIHJ4ZG1hIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDUwCisgKi8KK3R5cGVkZWYgdW5pb24gX1JYRE1BX0ZCQ19SRF9JTkRFWF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6Mjc7CS8vIGJpdHMgNS0zMQorCQl1MzIgZmJjX3JkaTo1OwkvLyBiaXQgMC00CisjZWxzZQorCQl1MzIgZmJjX3JkaTo1OwkvLyBiaXQgMC00CisJCXUzMiB1bnVzZWQ6Mjc7CS8vIGJpdHMgNS0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWERNQV9GQkNfUkRfSU5ERVhfdCwgKlBSWERNQV9GQkNfUkRfSU5ERVhfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgZnJlZSBidWZmZXIgcmluZyAwIG1pbmltdW0gZGVzY3JpcHRvciByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDIwNTQKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhETUFfRkJSX01JTl9ERVNfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjIyOwkvLyBiaXRzIDEwLTMxCisJCXUzMiBmYnJfbWluOjEwOwkvLyBiaXRzIDAtOQorI2Vsc2UKKwkJdTMyIGZicl9taW46MTA7CS8vIGJpdHMgMC05CisJCXUzMiB1bnVzZWQ6MjI7CS8vIGJpdHMgMTAtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhETUFfRkJSX01JTl9ERVNfdCwgKlBSWERNQV9GQlJfTUlOX0RFU190OworCisvKgorICogc3RydWN0dXJlIGZvciBmcmVlIGJ1ZmZlciByaW5nIDEgYmFzZSBhZGRyZXNzIGxvIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjA1OCAtIDB4MjA1QworICogRGVmaW5lZCBlYXJsaWVyIChSWERNQV9GQlJfQkFTRV9MT190IGFuZCBSWERNQV9GQlJfQkFTRV9ISV90KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGZyZWUgYnVmZmVyIHJpbmcgMSBudW1iZXIgb2YgZGVzY3JpcHRvcnMgcmVnIGluIHJ4ZG1hIGFkZHJlc3MKKyAqIG1hcC4gIExvY2F0ZWQgYXQgYWRkcmVzcyAweDIwNjAKKyAqIERlZmluZWQgZWFybGllciAoUlhETUFfRkJSX05VTV9ERVNfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBmcmVlIGJ1ZmZlciByaW5nIDEgYXZhaWxhYmxlIG9mZnNldCByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDIwNjQKKyAqIERlZmluZWQgRWFybGllciAoUlhETUFfRkJSX0FWQUlMX09GRlNFVF90KQorICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGZyZWUgYnVmZmVyIHJpbmcgMSBmdWxsIG9mZnNldCByZWcgaW4gcnhkbWEgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDIwNjgKKyAqIERlZmluZWQgRWFybGllciAoUlhETUFfRkJSX0ZVTExfT0ZGU0VUX3QpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgZnJlZSBidWZmZXIgY2FjaGUgMSByZWFkIGluZGV4IHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjA2QworICogRGVmaW5lZCBFYXJsaWVyIChSWERNQV9GQkNfUkRfSU5ERVhfdCkKKyAqLworCisvKgorICogc3RydWN0dXJlIGZvciBmcmVlIGJ1ZmZlciByaW5nIDEgbWluaW11bSBkZXNjcmlwdG9yIHJlZyBpbiByeGRtYSBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MjA3MAorICogRGVmaW5lZCBFYXJsaWVyIChSWERNQV9GQlJfTUlOX0RFU190KQorICovCisKKy8qCisgKiBSeCBETUEgTW9kdWxlIG9mIEpBR0NvcmUgQWRkcmVzcyBNYXBwaW5nCisgKiBMb2NhdGVkIGF0IGFkZHJlc3MgMHgyMDAwCisgKi8KK3R5cGVkZWYgc3RydWN0IF9SWERNQV90IHsJCQkJLy8gTG9jYXRpb246CisJUlhETUFfQ1NSX3QgY3NyOwkJCQkvLyAgMHgyMDAwCisJdTMyIGRtYV93Yl9iYXNlX2xvOwkJCQkvLyAgMHgyMDA0CisJdTMyIGRtYV93Yl9iYXNlX2hpOwkJCQkvLyAgMHgyMDA4CisJUlhETUFfTlVNX1BLVF9ET05FX3QgbnVtX3BrdF9kb25lOwkJLy8gIDB4MjAwQworCVJYRE1BX01BWF9QS1RfVElNRV90IG1heF9wa3RfdGltZTsJCS8vICAweDIwMTAKKwlETUExMFdfdCByeHFfcmRfYWRkcjsJCQkJLy8gIDB4MjAxNAorCURNQTEwV190IHJ4cV9yZF9hZGRyX2V4dDsJCQkvLyAgMHgyMDE4CisJRE1BMTBXX3QgcnhxX3dyX2FkZHI7CQkJCS8vICAweDIwMUMKKwl1MzIgcHNyX2Jhc2VfbG87CQkJCS8vICAweDIwMjAKKwl1MzIgcHNyX2Jhc2VfaGk7CQkJCS8vICAweDIwMjQKKwlSWERNQV9QU1JfTlVNX0RFU190IHBzcl9udW1fZGVzOwkJLy8gIDB4MjAyOAorCVJYRE1BX1BTUl9BVkFJTF9PRkZTRVRfdCBwc3JfYXZhaWxfb2Zmc2V0OwkvLyAgMHgyMDJDCisJUlhETUFfUFNSX0ZVTExfT0ZGU0VUX3QgcHNyX2Z1bGxfb2Zmc2V0OwkvLyAgMHgyMDMwCisJUlhETUFfUFNSX0FDQ0VTU19JTkRFWF90IHBzcl9hY2Nlc3NfaW5kZXg7CS8vICAweDIwMzQKKwlSWERNQV9QU1JfTUlOX0RFU190IHBzcl9taW5fZGVzOwkJLy8gIDB4MjAzOAorCXUzMiBmYnIwX2Jhc2VfbG87CQkJCS8vICAweDIwM0MKKwl1MzIgZmJyMF9iYXNlX2hpOwkJCQkvLyAgMHgyMDQwCisJUlhETUFfRkJSX05VTV9ERVNfdCBmYnIwX251bV9kZXM7CQkvLyAgMHgyMDQ0CisJRE1BMTBXX3QgZmJyMF9hdmFpbF9vZmZzZXQ7CQkJLy8gIDB4MjA0OAorCURNQTEwV190IGZicjBfZnVsbF9vZmZzZXQ7CQkJLy8gIDB4MjA0QworCVJYRE1BX0ZCQ19SRF9JTkRFWF90IGZicjBfcmRfaW5kZXg7CQkvLyAgMHgyMDUwCisJUlhETUFfRkJSX01JTl9ERVNfdCBmYnIwX21pbl9kZXM7CQkvLyAgMHgyMDU0CisJdTMyIGZicjFfYmFzZV9sbzsJCQkJLy8gIDB4MjA1OAorCXUzMiBmYnIxX2Jhc2VfaGk7CQkJCS8vICAweDIwNUMKKwlSWERNQV9GQlJfTlVNX0RFU190IGZicjFfbnVtX2RlczsJCS8vICAweDIwNjAKKwlETUExMFdfdCBmYnIxX2F2YWlsX29mZnNldDsJCQkvLyAgMHgyMDY0CisJRE1BMTBXX3QgZmJyMV9mdWxsX29mZnNldDsJCQkvLyAgMHgyMDY4CisJUlhETUFfRkJDX1JEX0lOREVYX3QgZmJyMV9yZF9pbmRleDsJCS8vICAweDIwNkMKKwlSWERNQV9GQlJfTUlOX0RFU190IGZicjFfbWluX2RlczsJCS8vICAweDIwNzAKK30gUlhETUFfdCwgKlBSWERNQV90OworCisvKiBFTkQgT0YgUlhETUEgUkVHSVNURVIgQUREUkVTUyBNQVAgKi8KKworCisvKiBTVEFSVCBPRiBUWE1BQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogc3RydWN0dXJlIGZvciBjb250cm9sIHJlZyBpbiB0eG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MzAwMAorICovCit0eXBlZGVmIHVuaW9uIF9UWE1BQ19DVExfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjI0OwkJLy8gYml0cyA4LTMxCisJCXUzMiBja2xzZWdfZGlhYmxlOjE7CS8vIGJpdCA3CisJCXUzMiBja2JjbnRfZGlzYWJsZToxOwkvLyBiaXQgNgorCQl1MzIgY2tzZWdudW06MTsJCS8vIGJpdCA1CisJCXUzMiBhc3luY19kaXNhYmxlOjE7CS8vIGJpdCA0CisJCXUzMiBmY19kaXNhYmxlOjE7CS8vIGJpdCAzCisJCXUzMiBtY2lmX2Rpc2FibGU6MTsJLy8gYml0IDIKKwkJdTMyIG1pZl9kaXNhYmxlOjE7CS8vIGJpdCAxCisJCXUzMiB0eG1hY19lbjoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiB0eG1hY19lbjoxOwkJLy8gYml0IDAKKwkJdTMyIG1pZl9kaXNhYmxlOjE7CS8vIGJpdCAxIG1hYyBpbnRlcmZhY2UKKwkJdTMyIG1jaWZfZGlzYWJsZToxOwkvLyBiaXQgMiBtZW0uIGNvbnRyLiBpbnRlcmZhY2UKKwkJdTMyIGZjX2Rpc2FibGU6MTsJLy8gYml0IDMKKwkJdTMyIGFzeW5jX2Rpc2FibGU6MTsJLy8gYml0IDQKKwkJdTMyIGNrc2VnbnVtOjE7CQkvLyBiaXQgNQorCQl1MzIgY2tiY250X2Rpc2FibGU6MTsJLy8gYml0IDYKKwkJdTMyIGNrbHNlZ19kaWFibGU6MTsJLy8gYml0IDcKKwkJdTMyIHVudXNlZDoyNDsJCS8vIGJpdHMgOC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWE1BQ19DVExfdCwgKlBUWE1BQ19DVExfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3Igc2hhZG93IHBvaW50ZXIgcmVnIGluIHR4bWFjIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgzMDA0CisgKi8KK3R5cGVkZWYgdW5pb24gX1RYTUFDX1NIQURPV19QVFJfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQyOjU7CS8vIGJpdHMgMjctMzEKKwkJdTMyIHR4cV9yZF9wdHI6MTE7CS8vIGJpdHMgMTYtMjYKKwkJdTMyIHJlc2VydmVkOjU7CQkvLyBiaXRzIDExLTE1CisJCXUzMiB0eHFfd3JfcHRyOjExOwkvLyBiaXRzIDAtMTAKKyNlbHNlCisJCXUzMiB0eHFfd3JfcHRyOjExOwkvLyBiaXRzIDAtMTAKKwkJdTMyIHJlc2VydmVkOjU7CQkvLyBiaXRzIDExLTE1CisJCXUzMiB0eHFfcmRfcHRyOjExOwkvLyBiaXRzIDE2LTI2CisJCXUzMiByZXNlcnZlZDI6NTsJLy8gYml0cyAyNy0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWE1BQ19TSEFET1dfUFRSX3QsICpQVFhNQUNfU0hBRE9XX1BUUl90OworCisvKgorICogc3RydWN0dXJlIGZvciBlcnJvciBjb3VudCByZWcgaW4gdHhtYWMgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDMwMDgKKyAqLwordHlwZWRlZiB1bmlvbiBfVFhNQUNfRVJSX0NOVF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6MjA7CQkvLyBiaXRzIDEyLTMxCisJCXUzMiByZXNlcnZlZDo0OwkJLy8gYml0cyA4LTExCisJCXUzMiB0eHFfdW5kZXJydW46NDsJLy8gYml0cyA0LTcKKwkJdTMyIGZpZm9fdW5kZXJydW46NDsJLy8gYml0cyAwLTMKKyNlbHNlCisJCXUzMiBmaWZvX3VuZGVycnVuOjQ7CS8vIGJpdHMgMC0zCisJCXUzMiB0eHFfdW5kZXJydW46NDsJLy8gYml0cyA0LTcKKwkJdTMyIHJlc2VydmVkOjQ7CQkvLyBiaXRzIDgtMTEKKwkJdTMyIHVudXNlZDoyMDsJCS8vIGJpdHMgMTItMzEKKyNlbmRpZgorCX0gYml0czsKK30gVFhNQUNfRVJSX0NOVF90LCAqUFRYTUFDX0VSUl9DTlRfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgbWF4IGZpbGwgcmVnIGluIHR4bWFjIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgzMDBDCisgKi8KK3R5cGVkZWYgdW5pb24gX1RYTUFDX01BWF9GSUxMX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoyMDsJCS8vIGJpdHMgMTItMzEKKwkJdTMyIG1heF9maWxsOjEyOwkvLyBiaXRzIDAtMTEKKyNlbHNlCisJCXUzMiBtYXhfZmlsbDoxMjsJLy8gYml0cyAwLTExCisJCXUzMiB1bnVzZWQ6MjA7CQkvLyBiaXRzIDEyLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFRYTUFDX01BWF9GSUxMX3QsICpQVFhNQUNfTUFYX0ZJTExfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgY2YgcGFyYW1ldGVyIHJlZyBpbiB0eG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MzAxMAorICovCit0eXBlZGVmIHVuaW9uIF9UWE1BQ19DRl9QQVJBTV90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiBjZmVwOjE2OwkvLyBiaXRzIDE2LTMxCisJCXUzMiBjZnB0OjE2OwkvLyBiaXRzIDAtMTUKKyNlbHNlCisJCXUzMiBjZnB0OjE2OwkvLyBiaXRzIDAtMTUKKwkJdTMyIGNmZXA6MTY7CS8vIGJpdHMgMTYtMzEKKyNlbmRpZgorCX0gYml0czsKK30gVFhNQUNfQ0ZfUEFSQU1fdCwgKlBUWE1BQ19DRl9QQVJBTV90OworCisvKgorICogc3RydWN0dXJlIGZvciB0eCB0ZXN0IHJlZyBpbiB0eG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MzAxNAorICovCit0eXBlZGVmIHVuaW9uIF9UWE1BQ19UWFRFU1RfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkMjoxNTsJCS8vIGJpdHMgMTctMzEKKwkJdTMyIHJlc2VydmVkMToxOwkvLyBiaXQgMTYKKwkJdTMyIHR4dGVzdF9lbjoxOwkvLyBiaXQgMTUKKwkJdTMyIHVudXNlZDE6NDsJCS8vIGJpdHMgMTEtMTQKKwkJdTMyIHR4cXRlc3RfcHRyOjExOwkvLyBiaXRzIDAtMTEKKyNlbHNlCisJCXUzMiB0eHF0ZXN0X3B0cjoxMTsJLy8gYml0cyAwLTEwCisJCXUzMiB1bnVzZWQxOjQ7CQkvLyBiaXRzIDExLTE0CisJCXUzMiB0eHRlc3RfZW46MTsJLy8gYml0IDE1CisJCXUzMiByZXNlcnZlZDE6MTsJLy8gYml0IDE2CisJCXUzMiB1bnVzZWQyOjE1OwkJLy8gYml0cyAxNy0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWE1BQ19UWFRFU1RfdCwgKlBUWE1BQ19UWFRFU1RfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgZXJyb3IgcmVnIGluIHR4bWFjIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHgzMDE4CisgKi8KK3R5cGVkZWYgdW5pb24gX1RYTUFDX0VSUl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQyOjIzOwkJLy8gYml0cyA5LTMxCisJCXUzMiBmaWZvX3VuZGVycnVuOjE7CS8vIGJpdCA4CisJCXUzMiB1bnVzZWQxOjI7CQkvLyBiaXRzIDYtNworCQl1MzIgY3RybDJfZXJyOjE7CS8vIGJpdCA1CisJCXUzMiB0eHFfdW5kZXJydW46MTsJLy8gYml0IDQKKwkJdTMyIGJjbnRfZXJyOjE7CQkvLyBiaXQgMworCQl1MzIgbHNlZ19lcnI6MTsJCS8vIGJpdCAyCisJCXUzMiBzZWdudW1fZXJyOjE7CS8vIGJpdCAxCisJCXUzMiBzZWcwX2VycjoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBzZWcwX2VycjoxOwkJLy8gYml0IDAKKwkJdTMyIHNlZ251bV9lcnI6MTsJLy8gYml0IDEKKwkJdTMyIGxzZWdfZXJyOjE7CQkvLyBiaXQgMgorCQl1MzIgYmNudF9lcnI6MTsJCS8vIGJpdCAzCisJCXUzMiB0eHFfdW5kZXJydW46MTsJLy8gYml0IDQKKwkJdTMyIGN0cmwyX2VycjoxOwkvLyBiaXQgNQorCQl1MzIgdW51c2VkMToyOwkJLy8gYml0cyA2LTcKKwkJdTMyIGZpZm9fdW5kZXJydW46MTsJLy8gYml0IDgKKwkJdTMyIHVudXNlZDI6MjM7CQkvLyBiaXRzIDktMzEKKyNlbmRpZgorCX0gYml0czsKK30gVFhNQUNfRVJSX3QsICpQVFhNQUNfRVJSX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGVycm9yIGludGVycnVwdCByZWcgaW4gdHhtYWMgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDMwMUMKKyAqLwordHlwZWRlZiB1bmlvbiBfVFhNQUNfRVJSX0lOVF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQyOjIzOwkJLy8gYml0cyA5LTMxCisJCXUzMiBmaWZvX3VuZGVycnVuOjE7CS8vIGJpdCA4CisJCXUzMiB1bnVzZWQxOjI7CQkvLyBiaXRzIDYtNworCQl1MzIgY3RybDJfZXJyOjE7CS8vIGJpdCA1CisJCXUzMiB0eHFfdW5kZXJydW46MTsJLy8gYml0IDQKKwkJdTMyIGJjbnRfZXJyOjE7CQkvLyBiaXQgMworCQl1MzIgbHNlZ19lcnI6MTsJCS8vIGJpdCAyCisJCXUzMiBzZWdudW1fZXJyOjE7CS8vIGJpdCAxCisJCXUzMiBzZWcwX2VycjoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBzZWcwX2VycjoxOwkJLy8gYml0IDAKKwkJdTMyIHNlZ251bV9lcnI6MTsJLy8gYml0IDEKKwkJdTMyIGxzZWdfZXJyOjE7CQkvLyBiaXQgMgorCQl1MzIgYmNudF9lcnI6MTsJCS8vIGJpdCAzCisJCXUzMiB0eHFfdW5kZXJydW46MTsJLy8gYml0IDQKKwkJdTMyIGN0cmwyX2VycjoxOwkvLyBiaXQgNQorCQl1MzIgdW51c2VkMToyOwkJLy8gYml0cyA2LTcKKwkJdTMyIGZpZm9fdW5kZXJydW46MTsJLy8gYml0IDgKKwkJdTMyIHVudXNlZDI6MjM7CQkvLyBiaXRzIDktMzEKKyNlbmRpZgorCX0gYml0czsKK30gVFhNQUNfRVJSX0lOVF90LCAqUFRYTUFDX0VSUl9JTlRfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgZXJyb3IgaW50ZXJydXB0IHJlZyBpbiB0eG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4MzAyMAorICovCit0eXBlZGVmIHVuaW9uIF9UWE1BQ19DUF9DVFJMX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDozMDsJCS8vIGJpdHMgMi0zMQorCQl1MzIgYnBfcmVxOjE7CQkvLyBiaXQgMQorCQl1MzIgYnBfeG9ueG9mZjoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIGJwX3hvbnhvZmY6MTsJLy8gYml0IDAKKwkJdTMyIGJwX3JlcToxOwkJLy8gYml0IDEKKwkJdTMyIHVudXNlZDozMDsJCS8vIGJpdHMgMi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWE1BQ19CUF9DVFJMX3QsICpQVFhNQUNfQlBfQ1RSTF90OworCisvKgorICogVHggTUFDIE1vZHVsZSBvZiBKQUdDb3JlIEFkZHJlc3MgTWFwcGluZworICovCit0eXBlZGVmIHN0cnVjdCBfVFhNQUNfdCB7CQkvLyBMb2NhdGlvbjoKKwlUWE1BQ19DVExfdCBjdGw7CQkvLyAgMHgzMDAwCisJVFhNQUNfU0hBRE9XX1BUUl90IHNoYWRvd19wdHI7CS8vICAweDMwMDQKKwlUWE1BQ19FUlJfQ05UX3QgZXJyX2NudDsJLy8gIDB4MzAwOAorCVRYTUFDX01BWF9GSUxMX3QgbWF4X2ZpbGw7CS8vICAweDMwMEMKKwlUWE1BQ19DRl9QQVJBTV90IGNmX3BhcmFtOwkvLyAgMHgzMDEwCisJVFhNQUNfVFhURVNUX3QgdHhfdGVzdDsJCS8vICAweDMwMTQKKwlUWE1BQ19FUlJfdCBlcnI7CQkvLyAgMHgzMDE4CisJVFhNQUNfRVJSX0lOVF90IGVycl9pbnQ7CS8vICAweDMwMUMKKwlUWE1BQ19CUF9DVFJMX3QgYnBfY3RybDsJLy8gIDB4MzAyMAorfSBUWE1BQ190LCAqUFRYTUFDX3Q7CisKKy8qIEVORCBPRiBUWE1BQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKiBTVEFSVCBPRiBSWE1BQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogc3RydWN0dXJlIGZvciByeG1hYyBjb250cm9sIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDAwMAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19DVFJMX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkOjI1OwkJLy8gYml0cyA3LTMxCisJCXUzMiByeG1hY19pbnRfZGlzYWJsZToxOwkvLyBiaXQgNgorCQl1MzIgYXN5bmNfZGlzYWJsZToxOwkJLy8gYml0IDUKKwkJdTMyIG1pZl9kaXNhYmxlOjE7CQkvLyBiaXQgNAorCQl1MzIgd29sX2Rpc2FibGU6MTsJCS8vIGJpdCAzCisJCXUzMiBwa3RfZmlsdGVyX2Rpc2FibGU6MTsJLy8gYml0IDIKKwkJdTMyIG1jaWZfZGlzYWJsZToxOwkJLy8gYml0IDEKKwkJdTMyIHJ4bWFjX2VuOjE7CQkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiByeG1hY19lbjoxOwkJCS8vIGJpdCAwCisJCXUzMiBtY2lmX2Rpc2FibGU6MTsJCS8vIGJpdCAxCisJCXUzMiBwa3RfZmlsdGVyX2Rpc2FibGU6MTsJLy8gYml0IDIKKwkJdTMyIHdvbF9kaXNhYmxlOjE7CQkvLyBiaXQgMworCQl1MzIgbWlmX2Rpc2FibGU6MTsJCS8vIGJpdCA0CisJCXUzMiBhc3luY19kaXNhYmxlOjE7CQkvLyBiaXQgNQorCQl1MzIgcnhtYWNfaW50X2Rpc2FibGU6MTsJLy8gYml0IDYKKwkJdTMyIHJlc2VydmVkOjI1OwkJLy8gYml0cyA3LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFJYTUFDX0NUUkxfdCwgKlBSWE1BQ19DVFJMX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIFdha2UgT24gTGFuIENvbnRyb2wgYW5kIENSQyAwIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDAwNAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19XT0xfQ1RMX0NSQzBfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgY3JjMDoxNjsJCS8vIGJpdHMgMTYtMzEKKwkJdTMyIHJlc2VydmU6NDsJCS8vIGJpdHMgMTItMTUKKwkJdTMyIGlnbm9yZV9wcDoxOwkvLyBiaXQgMTEKKwkJdTMyIGlnbm9yZV9tcDoxOwkvLyBiaXQgMTAKKwkJdTMyIGNscl9pbnRyOjE7CQkvLyBiaXQgOQorCQl1MzIgaWdub3JlX2xpbmtfY2hnOjE7CS8vIGJpdCA4CisJCXUzMiBpZ25vcmVfdW5pOjE7CS8vIGJpdCA3CisJCXUzMiBpZ25vcmVfbXVsdGk6MTsJLy8gYml0IDYKKwkJdTMyIGlnbm9yZV9icm9hZDoxOwkvLyBiaXQgNQorCQl1MzIgdmFsaWRfY3JjNDoxOwkvLyBiaXQgNAorCQl1MzIgdmFsaWRfY3JjMzoxOwkvLyBiaXQgMworCQl1MzIgdmFsaWRfY3JjMjoxOwkvLyBiaXQgMgorCQl1MzIgdmFsaWRfY3JjMToxOwkvLyBiaXQgMQorCQl1MzIgdmFsaWRfY3JjMDoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHZhbGlkX2NyYzA6MTsJLy8gYml0IDAKKwkJdTMyIHZhbGlkX2NyYzE6MTsJLy8gYml0IDEKKwkJdTMyIHZhbGlkX2NyYzI6MTsJLy8gYml0IDIKKwkJdTMyIHZhbGlkX2NyYzM6MTsJLy8gYml0IDMKKwkJdTMyIHZhbGlkX2NyYzQ6MTsJLy8gYml0IDQKKwkJdTMyIGlnbm9yZV9icm9hZDoxOwkvLyBiaXQgNQorCQl1MzIgaWdub3JlX211bHRpOjE7CS8vIGJpdCA2CisJCXUzMiBpZ25vcmVfdW5pOjE7CS8vIGJpdCA3CisJCXUzMiBpZ25vcmVfbGlua19jaGc6MTsJLy8gYml0IDgKKwkJdTMyIGNscl9pbnRyOjE7CQkvLyBiaXQgOQorCQl1MzIgaWdub3JlX21wOjE7CS8vIGJpdCAxMAorCQl1MzIgaWdub3JlX3BwOjE7CS8vIGJpdCAxMQorCQl1MzIgcmVzZXJ2ZTo0OwkJLy8gYml0cyAxMi0xNQorCQl1MzIgY3JjMDoxNjsJCS8vIGJpdHMgMTYtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhNQUNfV09MX0NUTF9DUkMwX3QsICpQUlhNQUNfV09MX0NUTF9DUkMwX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIENSQyAxIGFuZCBDUkMgMiByZWcgaW4gcnhtYWMgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDQwMDgKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhNQUNfV09MX0NSQzEyX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIGNyYzI6MTY7CS8vIGJpdHMgMTYtMzEKKwkJdTMyIGNyYzE6MTY7CS8vIGJpdHMgMC0xNQorI2Vsc2UKKwkJdTMyIGNyYzE6MTY7CS8vIGJpdHMgMC0xNQorCQl1MzIgY3JjMjoxNjsJLy8gYml0cyAxNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19XT0xfQ1JDMTJfdCwgKlBSWE1BQ19XT0xfQ1JDMTJfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgQ1JDIDMgYW5kIENSQyA0IHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDAwQworICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19XT0xfQ1JDMzRfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgY3JjNDoxNjsJLy8gYml0cyAxNi0zMQorCQl1MzIgY3JjMzoxNjsJLy8gYml0cyAwLTE1CisjZWxzZQorCQl1MzIgY3JjMzoxNjsJLy8gYml0cyAwLTE1CisJCXUzMiBjcmM0OjE2OwkvLyBiaXRzIDE2LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFJYTUFDX1dPTF9DUkMzNF90LCAqUFJYTUFDX1dPTF9DUkMzNF90OworCisvKgorICogc3RydWN0dXJlIGZvciBXYWtlIE9uIExhbiBTb3VyY2UgQWRkcmVzcyBMbyByZWcgaW4gcnhtYWMgYWRkcmVzcyBtYXAKKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDQwMTAKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhNQUNfV09MX1NBX0xPX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHNhMzo4OwkvLyBiaXRzIDI0LTMxCisJCXUzMiBzYTQ6ODsJLy8gYml0cyAxNi0yMworCQl1MzIgc2E1Ojg7CS8vIGJpdHMgOC0xNQorCQl1MzIgc2E2Ojg7CS8vIGJpdHMgMC03CisjZWxzZQorCQl1MzIgc2E2Ojg7CS8vIGJpdHMgMC03CisJCXUzMiBzYTU6ODsJLy8gYml0cyA4LTE1CisJCXUzMiBzYTQ6ODsJLy8gYml0cyAxNi0yMworCQl1MzIgc2EzOjg7CS8vIGJpdHMgMjQtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhNQUNfV09MX1NBX0xPX3QsICpQUlhNQUNfV09MX1NBX0xPX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIFdha2UgT24gTGFuIFNvdXJjZSBBZGRyZXNzIEhpIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDAxNAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19XT0xfU0FfSElfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQ6MTY7CS8vIGJpdHMgMTYtMzEKKwkJdTMyIHNhMTo4OwkJLy8gYml0cyA4LTE1CisJCXUzMiBzYTI6ODsJCS8vIGJpdHMgMC03CisjZWxzZQorCQl1MzIgc2EyOjg7CQkvLyBiaXRzIDAtNworCQl1MzIgc2ExOjg7CQkvLyBiaXRzIDgtMTUKKwkJdTMyIHJlc2VydmVkOjE2OwkvLyBiaXRzIDE2LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFJYTUFDX1dPTF9TQV9ISV90LCAqUFJYTUFDX1dPTF9TQV9ISV90OworCisvKgorICogc3RydWN0dXJlIGZvciBXYWtlIE9uIExhbiBtYXNrIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDAxOCAtIDB4NDA2NAorICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgVW5pY2FzdCBQYWtldCBGaWx0ZXIgQWRkcmVzcyAxIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDA2OAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19VTklfUEZfQUREUjFfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgYWRkcjFfMzo4OwkvLyBiaXRzIDI0LTMxCisJCXUzMiBhZGRyMV80Ojg7CS8vIGJpdHMgMTYtMjMKKwkJdTMyIGFkZHIxXzU6ODsJLy8gYml0cyA4LTE1CisJCXUzMiBhZGRyMV82Ojg7CS8vIGJpdHMgMC03CisjZWxzZQorCQl1MzIgYWRkcjFfNjo4OwkvLyBiaXRzIDAtNworCQl1MzIgYWRkcjFfNTo4OwkvLyBiaXRzIDgtMTUKKwkJdTMyIGFkZHIxXzQ6ODsJLy8gYml0cyAxNi0yMworCQl1MzIgYWRkcjFfMzo4OwkvLyBiaXRzIDI0LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFJYTUFDX1VOSV9QRl9BRERSMV90LCAqUFJYTUFDX1VOSV9QRl9BRERSMV90OworCisvKgorICogc3RydWN0dXJlIGZvciBVbmljYXN0IFBha2V0IEZpbHRlciBBZGRyZXNzIDIgcmVnIGluIHJ4bWFjIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDZDCisgKi8KK3R5cGVkZWYgdW5pb24gX1JYTUFDX1VOSV9QRl9BRERSMl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiBhZGRyMl8zOjg7CS8vIGJpdHMgMjQtMzEKKwkJdTMyIGFkZHIyXzQ6ODsJLy8gYml0cyAxNi0yMworCQl1MzIgYWRkcjJfNTo4OwkvLyBiaXRzIDgtMTUKKwkJdTMyIGFkZHIyXzY6ODsJLy8gYml0cyAwLTcKKyNlbHNlCisJCXUzMiBhZGRyMl82Ojg7CS8vIGJpdHMgMC03CisJCXUzMiBhZGRyMl81Ojg7CS8vIGJpdHMgOC0xNQorCQl1MzIgYWRkcjJfNDo4OwkvLyBiaXRzIDE2LTIzCisJCXUzMiBhZGRyMl8zOjg7CS8vIGJpdHMgMjQtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhNQUNfVU5JX1BGX0FERFIyX3QsICpQUlhNQUNfVU5JX1BGX0FERFIyX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIFVuaWNhc3QgUGFrZXQgRmlsdGVyIEFkZHJlc3MgMSAmIDIgcmVnIGluIHJ4bWFjIGFkZHJlc3MgbWFwCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDcwCisgKi8KK3R5cGVkZWYgdW5pb24gX1JYTUFDX1VOSV9QRl9BRERSM190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiBhZGRyMl8xOjg7CS8vIGJpdHMgMjQtMzEKKwkJdTMyIGFkZHIyXzI6ODsJLy8gYml0cyAxNi0yMworCQl1MzIgYWRkcjFfMTo4OwkvLyBiaXRzIDgtMTUKKwkJdTMyIGFkZHIxXzI6ODsJLy8gYml0cyAwLTcKKyNlbHNlCisJCXUzMiBhZGRyMV8yOjg7CS8vIGJpdHMgMC03CisJCXUzMiBhZGRyMV8xOjg7CS8vIGJpdHMgOC0xNQorCQl1MzIgYWRkcjJfMjo4OwkvLyBiaXRzIDE2LTIzCisJCXUzMiBhZGRyMl8xOjg7CS8vIGJpdHMgMjQtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUlhNQUNfVU5JX1BGX0FERFIzX3QsICpQUlhNQUNfVU5JX1BGX0FERFIzX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE11bHRpY2FzdCBIYXNoIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDA3NCAtIDB4NDA4MAorICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgUGFja2V0IEZpbHRlciBDb250cm9sIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcAorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDA4NAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19QRl9DVFJMX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDI6OTsJCS8vIGJpdHMgMjMtMzEKKwkJdTMyIG1pbl9wa3Rfc2l6ZTo3OwkvLyBiaXRzIDE2LTIyCisJCXUzMiB1bnVzZWQxOjEyOwkJLy8gYml0cyA0LTE1CisJCXUzMiBmaWx0ZXJfZnJhZ19lbjoxOwkvLyBiaXQgMworCQl1MzIgZmlsdGVyX3VuaV9lbjoxOwkvLyBiaXQgMgorCQl1MzIgZmlsdGVyX211bHRpX2VuOjE7CS8vIGJpdCAxCisJCXUzMiBmaWx0ZXJfYnJvYWRfZW46MTsJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBmaWx0ZXJfYnJvYWRfZW46MTsJLy8gYml0IDAKKwkJdTMyIGZpbHRlcl9tdWx0aV9lbjoxOwkvLyBiaXQgMQorCQl1MzIgZmlsdGVyX3VuaV9lbjoxOwkvLyBiaXQgMgorCQl1MzIgZmlsdGVyX2ZyYWdfZW46MTsJLy8gYml0IDMKKwkJdTMyIHVudXNlZDE6MTI7CQkvLyBiaXRzIDQtMTUKKwkJdTMyIG1pbl9wa3Rfc2l6ZTo3OwkvLyBiaXRzIDE2LTIyCisJCXUzMiB1bnVzZWQyOjk7CQkvLyBiaXRzIDIzLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IFJYTUFDX1BGX0NUUkxfdCwgKlBSWE1BQ19QRl9DVFJMX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1lbW9yeSBDb250cm9sbGVyIEludGVyZmFjZSBDb250cm9sIE1heCBTZWdtZW50IHJlZyBpbiByeG1hYworICogYWRkcmVzcyBtYXAuICBMb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDg4CisgKi8KK3R5cGVkZWYgdW5pb24gX1JYTUFDX01DSUZfQ1RSTF9NQVhfU0VHX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkOjIyOwkvLyBiaXRzIDEwLTMxCisJCXUzMiBtYXhfc2l6ZTo4OwkvLyBiaXRzIDItOQorCQl1MzIgZmNfZW46MTsJLy8gYml0IDEKKwkJdTMyIHNlZ19lbjoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHNlZ19lbjoxOwkvLyBiaXQgMAorCQl1MzIgZmNfZW46MTsJLy8gYml0IDEKKwkJdTMyIG1heF9zaXplOjg7CS8vIGJpdHMgMi05CisJCXUzMiByZXNlcnZlZDoyMjsJLy8gYml0cyAxMC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19NQ0lGX0NUUkxfTUFYX1NFR190LCAqUFJYTUFDX01DSUZfQ1RSTF9NQVhfU0VHX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1lbW9yeSBDb250cm9sbGVyIEludGVyZmFjZSBXYXRlciBNYXJrIHJlZyBpbiByeG1hYyBhZGRyZXNzCisgKiBtYXAuICBMb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDhDCisgKi8KK3R5cGVkZWYgdW5pb24gX1JYTUFDX01DSUZfV0FURVJfTUFSS190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlZDI6NjsJLy8gYml0cyAyNi0zMQorCQl1MzIgbWFya19oaToxMDsJLy8gYml0cyAxNi0yNQorCQl1MzIgcmVzZXJ2ZWQxOjY7CS8vIGJpdHMgMTAtMTUKKwkJdTMyIG1hcmtfbG86MTA7CS8vIGJpdHMgMC05CisjZWxzZQorCQl1MzIgbWFya19sbzoxMDsJLy8gYml0cyAwLTkKKwkJdTMyIHJlc2VydmVkMTo2OwkvLyBiaXRzIDEwLTE1CisJCXUzMiBtYXJrX2hpOjEwOwkvLyBiaXRzIDE2LTI1CisJCXUzMiByZXNlcnZlZDI6NjsJLy8gYml0cyAyNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19NQ0lGX1dBVEVSX01BUktfdCwgKlBSWE1BQ19NQ0lGX1dBVEVSX01BUktfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgUnggUXVldWUgRGlhbG9nIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDQwOTAKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhNQUNfUlhRX0RJQUdfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQyOjY7CS8vIGJpdHMgMjYtMzEKKwkJdTMyIHJkX3B0cjoxMDsJLy8gYml0cyAxNi0yNQorCQl1MzIgcmVzZXJ2ZWQxOjY7CS8vIGJpdHMgMTAtMTUKKwkJdTMyIHdyX3B0cjoxMDsJLy8gYml0cyAwLTkKKyNlbHNlCisJCXUzMiB3cl9wdHI6MTA7CS8vIGJpdHMgMC05CisJCXUzMiByZXNlcnZlZDE6NjsJLy8gYml0cyAxMC0xNQorCQl1MzIgcmRfcHRyOjEwOwkvLyBiaXRzIDE2LTI1CisJCXUzMiByZXNlcnZlZDI6NjsJLy8gYml0cyAyNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19SWFFfRElBR190LCAqUFJYTUFDX1JYUV9ESUFHX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIHNwYWNlIGF2YWlsaWFibGUgcmVnIGluIHJ4bWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDA5NAorICovCit0eXBlZGVmIHVuaW9uIF9SWE1BQ19TUEFDRV9BVkFJTF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlZDI6MTU7CQkvLyBiaXRzIDE3LTMxCisJCXUzMiBzcGFjZV9hdmFpbF9lbjoxOwkvLyBiaXQgMTYKKwkJdTMyIHJlc2VydmVkMTo2OwkJLy8gYml0cyAxMC0xNQorCQl1MzIgc3BhY2VfYXZhaWw6MTA7CS8vIGJpdHMgMC05CisjZWxzZQorCQl1MzIgc3BhY2VfYXZhaWw6MTA7CS8vIGJpdHMgMC05CisJCXUzMiByZXNlcnZlZDE6NjsJCS8vIGJpdHMgMTAtMTUKKwkJdTMyIHNwYWNlX2F2YWlsX2VuOjE7CS8vIGJpdCAxNgorCQl1MzIgcmVzZXJ2ZWQyOjE1OwkJLy8gYml0cyAxNy0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19TUEFDRV9BVkFJTF90LCAqUFJYTUFDX1NQQUNFX0FWQUlMX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIG1hbmFnZW1lbnQgaW50ZXJmYWNlIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDQwOTgKKyAqLwordHlwZWRlZiB1bmlvbiBfUlhNQUNfTUlGX0NUTF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlOjE0OwkJLy8gYml0cyAxOC0zMQorCQl1MzIgZHJvcF9wa3RfZW46MTsJCS8vIGJpdCAxNworCQl1MzIgZHJvcF9wa3RfbWFzazoxNzsJLy8gYml0cyAwLTE2CisjZWxzZQorCQl1MzIgZHJvcF9wa3RfbWFzazoxNzsJLy8gYml0cyAwLTE2CisJCXUzMiBkcm9wX3BrdF9lbjoxOwkJLy8gYml0IDE3CisJCXUzMiByZXNlcnZlOjE0OwkJLy8gYml0cyAxOC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19NSUZfQ1RMX3QsICpQUlhNQUNfTUlGX0NUTF90OworCisvKgorICogc3RydWN0dXJlIGZvciBFcnJvciByZWcgaW4gcnhtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDlDCisgKi8KK3R5cGVkZWYgdW5pb24gX1JYTUFDX0VSUk9SX1JFR190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlOjI4OwkvLyBiaXRzIDQtMzEKKwkJdTMyIG1pZjoxOwkJLy8gYml0IDMKKwkJdTMyIGFzeW5jOjE7CS8vIGJpdCAyCisJCXUzMiBwa3RfZmlsdGVyOjE7CS8vIGJpdCAxCisJCXUzMiBtY2lmOjE7CS8vIGJpdCAwCisjZWxzZQorCQl1MzIgbWNpZjoxOwkvLyBiaXQgMAorCQl1MzIgcGt0X2ZpbHRlcjoxOwkvLyBiaXQgMQorCQl1MzIgYXN5bmM6MTsJLy8gYml0IDIKKwkJdTMyIG1pZjoxOwkJLy8gYml0IDMKKwkJdTMyIHJlc2VydmU6Mjg7CS8vIGJpdHMgNC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWE1BQ19FUlJPUl9SRUdfdCwgKlBSWE1BQ19FUlJPUl9SRUdfdDsKKworLyoKKyAqIFJ4IE1BQyBNb2R1bGUgb2YgSkFHQ29yZSBBZGRyZXNzIE1hcHBpbmcKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1JYTUFDX3QgewkJCQkvLyBMb2NhdGlvbjoKKwlSWE1BQ19DVFJMX3QgY3RybDsJCQkJLy8gIDB4NDAwMAorCVJYTUFDX1dPTF9DVExfQ1JDMF90IGNyYzA7CQkJLy8gIDB4NDAwNAorCVJYTUFDX1dPTF9DUkMxMl90IGNyYzEyOwkJCS8vICAweDQwMDgKKwlSWE1BQ19XT0xfQ1JDMzRfdCBjcmMzNDsJCQkvLyAgMHg0MDBDCisJUlhNQUNfV09MX1NBX0xPX3Qgc2FfbG87CQkJLy8gIDB4NDAxMAorCVJYTUFDX1dPTF9TQV9ISV90IHNhX2hpOwkJCS8vICAweDQwMTQKKwl1MzIgbWFzazBfd29yZDA7CQkJCS8vICAweDQwMTgKKwl1MzIgbWFzazBfd29yZDE7CQkJCS8vICAweDQwMUMKKwl1MzIgbWFzazBfd29yZDI7CQkJCS8vICAweDQwMjAKKwl1MzIgbWFzazBfd29yZDM7CQkJCS8vICAweDQwMjQKKwl1MzIgbWFzazFfd29yZDA7CQkJCS8vICAweDQwMjgKKwl1MzIgbWFzazFfd29yZDE7CQkJCS8vICAweDQwMkMKKwl1MzIgbWFzazFfd29yZDI7CQkJCS8vICAweDQwMzAKKwl1MzIgbWFzazFfd29yZDM7CQkJCS8vICAweDQwMzQKKwl1MzIgbWFzazJfd29yZDA7CQkJCS8vICAweDQwMzgKKwl1MzIgbWFzazJfd29yZDE7CQkJCS8vICAweDQwM0MKKwl1MzIgbWFzazJfd29yZDI7CQkJCS8vICAweDQwNDAKKwl1MzIgbWFzazJfd29yZDM7CQkJCS8vICAweDQwNDQKKwl1MzIgbWFzazNfd29yZDA7CQkJCS8vICAweDQwNDgKKwl1MzIgbWFzazNfd29yZDE7CQkJCS8vICAweDQwNEMKKwl1MzIgbWFzazNfd29yZDI7CQkJCS8vICAweDQwNTAKKwl1MzIgbWFzazNfd29yZDM7CQkJCS8vICAweDQwNTQKKwl1MzIgbWFzazRfd29yZDA7CQkJCS8vICAweDQwNTgKKwl1MzIgbWFzazRfd29yZDE7CQkJCS8vICAweDQwNUMKKwl1MzIgbWFzazRfd29yZDI7CQkJCS8vICAweDQwNjAKKwl1MzIgbWFzazRfd29yZDM7CQkJCS8vICAweDQwNjQKKwlSWE1BQ19VTklfUEZfQUREUjFfdCB1bmlfcGZfYWRkcjE7CQkvLyAgMHg0MDY4CisJUlhNQUNfVU5JX1BGX0FERFIyX3QgdW5pX3BmX2FkZHIyOwkJLy8gIDB4NDA2QworCVJYTUFDX1VOSV9QRl9BRERSM190IHVuaV9wZl9hZGRyMzsJCS8vICAweDQwNzAKKwl1MzIgbXVsdGlfaGFzaDE7CQkJCS8vICAweDQwNzQKKwl1MzIgbXVsdGlfaGFzaDI7CQkJCS8vICAweDQwNzgKKwl1MzIgbXVsdGlfaGFzaDM7CQkJCS8vICAweDQwN0MKKwl1MzIgbXVsdGlfaGFzaDQ7CQkJCS8vICAweDQwODAKKwlSWE1BQ19QRl9DVFJMX3QgcGZfY3RybDsJCQkvLyAgMHg0MDg0CisJUlhNQUNfTUNJRl9DVFJMX01BWF9TRUdfdCBtY2lmX2N0cmxfbWF4X3NlZzsJLy8gIDB4NDA4OAorCVJYTUFDX01DSUZfV0FURVJfTUFSS190IG1jaWZfd2F0ZXJfbWFyazsJLy8gIDB4NDA4QworCVJYTUFDX1JYUV9ESUFHX3QgcnhxX2RpYWc7CQkJLy8gIDB4NDA5MAorCVJYTUFDX1NQQUNFX0FWQUlMX3Qgc3BhY2VfYXZhaWw7CQkvLyAgMHg0MDk0CisKKwlSWE1BQ19NSUZfQ1RMX3QgbWlmX2N0cmw7CQkJLy8gIDB4NDA5OAorCVJYTUFDX0VSUk9SX1JFR190IGVycl9yZWc7CQkJLy8gIDB4NDA5QworfSBSWE1BQ190LCAqUFJYTUFDX3Q7CisKKy8qIEVORCBPRiBUWE1BQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisKKy8qIFNUQVJUIE9GIE1BQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogc3RydWN0dXJlIGZvciBjb25maWd1cmF0aW9uICMxIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDAwCisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19DRkcxX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHNvZnRfcmVzZXQ6MTsJCS8vIGJpdCAzMQorCQl1MzIgc2ltX3Jlc2V0OjE7CQkvLyBiaXQgMzAKKwkJdTMyIHJlc2VydmVkMzoxMDsJCS8vIGJpdHMgMjAtMjkKKwkJdTMyIHJlc2V0X3J4X21jOjE7CQkvLyBiaXQgMTkKKwkJdTMyIHJlc2V0X3R4X21jOjE7CQkvLyBiaXQgMTgKKwkJdTMyIHJlc2V0X3J4X2Z1bjoxOwkvLyBiaXQgMTcKKwkJdTMyIHJlc2V0X3R4X2Z1bjoxOwkvLyBiaXQgMTYKKwkJdTMyIHJlc2VydmVkMjo3OwkJLy8gYml0cyA5LTE1CisJCXUzMiBsb29wX2JhY2s6MTsJCS8vIGJpdCA4CisJCXUzMiByZXNlcnZlZDE6MjsJCS8vIGJpdHMgNi03CisJCXUzMiByeF9mbG93OjE7CQkvLyBiaXQgNQorCQl1MzIgdHhfZmxvdzoxOwkJLy8gYml0IDQKKwkJdTMyIHN5bmNkX3J4X2VuOjE7CQkvLyBiaXQgMworCQl1MzIgcnhfZW5hYmxlOjE7CQkvLyBiaXQgMgorCQl1MzIgc3luY2RfdHhfZW46MTsJCS8vIGJpdCAxCisJCXUzMiB0eF9lbmFibGU6MTsJCS8vIGJpdCAwCisjZWxzZQorCQl1MzIgdHhfZW5hYmxlOjE7CQkvLyBiaXQgMAorCQl1MzIgc3luY2RfdHhfZW46MTsJCS8vIGJpdCAxCisJCXUzMiByeF9lbmFibGU6MTsJCS8vIGJpdCAyCisJCXUzMiBzeW5jZF9yeF9lbjoxOwkJLy8gYml0IDMKKwkJdTMyIHR4X2Zsb3c6MTsJCS8vIGJpdCA0CisJCXUzMiByeF9mbG93OjE7CQkvLyBiaXQgNQorCQl1MzIgcmVzZXJ2ZWQxOjI7CQkvLyBiaXRzIDYtNworCQl1MzIgbG9vcF9iYWNrOjE7CQkvLyBiaXQgOAorCQl1MzIgcmVzZXJ2ZWQyOjc7CQkvLyBiaXRzIDktMTUKKwkJdTMyIHJlc2V0X3R4X2Z1bjoxOwkvLyBiaXQgMTYKKwkJdTMyIHJlc2V0X3J4X2Z1bjoxOwkvLyBiaXQgMTcKKwkJdTMyIHJlc2V0X3R4X21jOjE7CQkvLyBiaXQgMTgKKwkJdTMyIHJlc2V0X3J4X21jOjE7CQkvLyBiaXQgMTkKKwkJdTMyIHJlc2VydmVkMzoxMDsJCS8vIGJpdHMgMjAtMjkKKwkJdTMyIHNpbV9yZXNldDoxOwkJLy8gYml0IDMwCisJCXUzMiBzb2Z0X3Jlc2V0OjE7CQkvLyBiaXQgMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX0NGRzFfdCwgKlBNQUNfQ0ZHMV90OworCisvKgorICogc3RydWN0dXJlIGZvciBjb25maWd1cmF0aW9uICMyIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDA0CisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19DRkcyX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkMzoxNjsJCS8vIGJpdHMgMTYtMzEKKwkJdTMyIHByZWFtYmxlX2xlbjo0OwkvLyBiaXRzIDEyLTE1CisJCXUzMiByZXNlcnZlZDI6MjsJCS8vIGJpdHMgMTAtMTEKKwkJdTMyIGlmX21vZGU6MjsJCS8vIGJpdHMgOC05CisJCXUzMiByZXNlcnZlZDE6MjsJCS8vIGJpdHMgNi03CisJCXUzMiBodWdlX2ZyYW1lOjE7CQkvLyBiaXQgNQorCQl1MzIgbGVuX2NoZWNrOjE7CQkvLyBiaXQgNAorCQl1MzIgdW5kZWZpbmVkOjE7CQkvLyBiaXQgMworCQl1MzIgcGFkX2NyYzoxOwkJLy8gYml0IDIKKwkJdTMyIGNyY19lbmFibGU6MTsJCS8vIGJpdCAxCisJCXUzMiBmdWxsX2R1cGxleDoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBmdWxsX2R1cGxleDoxOwkJLy8gYml0IDAKKwkJdTMyIGNyY19lbmFibGU6MTsJCS8vIGJpdCAxCisJCXUzMiBwYWRfY3JjOjE7CQkvLyBiaXQgMgorCQl1MzIgdW5kZWZpbmVkOjE7CQkvLyBiaXQgMworCQl1MzIgbGVuX2NoZWNrOjE7CQkvLyBiaXQgNAorCQl1MzIgaHVnZV9mcmFtZToxOwkJLy8gYml0IDUKKwkJdTMyIHJlc2VydmVkMToyOwkJLy8gYml0cyA2LTcKKwkJdTMyIGlmX21vZGU6MjsJCS8vIGJpdHMgOC05CisJCXUzMiByZXNlcnZlZDI6MjsJCS8vIGJpdHMgMTAtMTEKKwkJdTMyIHByZWFtYmxlX2xlbjo0OwkvLyBiaXRzIDEyLTE1CisJCXUzMiByZXNlcnZlZDM6MTY7CQkvLyBiaXRzIDE2LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IE1BQ19DRkcyX3QsICpQTUFDX0NGRzJfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgSW50ZXJwYWNrZXQgZ2FwIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDA4CisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19JUEdfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQ6MTsJCS8vIGJpdCAzMQorCQl1MzIgbm9uX0IyQl9pcGdfMTo3OwkvLyBiaXRzIDI0LTMwCisJCXUzMiB1bmRlZmluZWQyOjE7CQkvLyBiaXQgMjMKKwkJdTMyIG5vbl9CMkJfaXBnXzI6NzsJLy8gYml0cyAxNi0yMgorCQl1MzIgbWluX2lmZ19lbmZvcmNlOjg7CS8vIGJpdHMgOC0xNQorCQl1MzIgdW5kZWZpbmVkMToxOwkJLy8gYml0IDcKKwkJdTMyIEIyQl9pcGc6NzsJCS8vIGJpdHMgMC02CisjZWxzZQorCQl1MzIgQjJCX2lwZzo3OwkJLy8gYml0cyAwLTYKKwkJdTMyIHVuZGVmaW5lZDE6MTsJCS8vIGJpdCA3CisJCXUzMiBtaW5faWZnX2VuZm9yY2U6ODsJLy8gYml0cyA4LTE1CisJCXUzMiBub25fQjJCX2lwZ18yOjc7CS8vIGJpdHMgMTYtMjIKKwkJdTMyIHVuZGVmaW5lZDI6MTsJCS8vIGJpdCAyMworCQl1MzIgbm9uX0IyQl9pcGdfMTo3OwkvLyBiaXRzIDI0LTMwCisJCXUzMiByZXNlcnZlZDoxOwkJLy8gYml0IDMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IE1BQ19JUEdfdCwgKlBNQUNfSVBHX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIGhhbGYgZHVwbGV4IHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDBDCisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19IRkRQX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkMjo4OwkJLy8gYml0cyAyNC0zMQorCQl1MzIgYWx0X2JlYl90cnVuYzo0OwkvLyBiaXRzIDIzLTIwCisJCXUzMiBhbHRfYmViX2VuYWJsZToxOwkvLyBiaXQgMTkKKwkJdTMyIGJwX25vX2JhY2tvZmY6MTsJLy8gYml0IDE4CisJCXUzMiBub19iYWNrb2ZmOjE7CQkvLyBiaXQgMTcKKwkJdTMyIGV4Y2Vzc19kZWZlcjoxOwkvLyBiaXQgMTYKKwkJdTMyIHJleG1pdF9tYXg6NDsJCS8vIGJpdHMgMTItMTUKKwkJdTMyIHJlc2VydmVkMToyOwkJLy8gYml0cyAxMC0xMQorCQl1MzIgY29sbF93aW5kb3c6MTA7CS8vIGJpdHMgMC05CisjZWxzZQorCQl1MzIgY29sbF93aW5kb3c6MTA7CS8vIGJpdHMgMC05CisJCXUzMiByZXNlcnZlZDE6MjsJCS8vIGJpdHMgMTAtMTEKKwkJdTMyIHJleG1pdF9tYXg6NDsJCS8vIGJpdHMgMTItMTUKKwkJdTMyIGV4Y2Vzc19kZWZlcjoxOwkvLyBiaXQgMTYKKwkJdTMyIG5vX2JhY2tvZmY6MTsJCS8vIGJpdCAxNworCQl1MzIgYnBfbm9fYmFja29mZjoxOwkvLyBiaXQgMTgKKwkJdTMyIGFsdF9iZWJfZW5hYmxlOjE7CS8vIGJpdCAxOQorCQl1MzIgYWx0X2JlYl90cnVuYzo0OwkvLyBiaXRzIDIzLTIwCisJCXUzMiByZXNlcnZlZDI6ODsJCS8vIGJpdHMgMjQtMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX0hGRFBfdCwgKlBNQUNfSEZEUF90OworCisvKgorICogc3RydWN0dXJlIGZvciBNYXhpbXVtIEZyYW1lIExlbmd0aCByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTAxMAorICovCit0eXBlZGVmIHVuaW9uIF9NQUNfTUFYX0ZNX0xFTl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0cyAxNi0zMQorCQl1MzIgbWF4X2xlbjoxNjsJLy8gYml0cyAwLTE1CisjZWxzZQorCQl1MzIgbWF4X2xlbjoxNjsJLy8gYml0cyAwLTE1CisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0cyAxNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNQUNfTUFYX0ZNX0xFTl90LCAqUE1BQ19NQVhfRk1fTEVOX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIFJlc2VydmUgMSByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTAxNCAtIDB4NTAxOAorICogRGVmaW5lZCBlYXJsaWVyICh1MzIpCisgKi8KKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgVGVzdCByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTAxQworICovCit0eXBlZGVmIHVuaW9uIF9NQUNfVEVTVF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6Mjk7CS8vIGJpdHMgMy0zMQorCQl1MzIgbWFjX3Rlc3Q6MzsJLy8gYml0cyAwLTIKKyNlbHNlCisJCXUzMiBtYWNfdGVzdDozOwkvLyBiaXRzIDAtMgorCQl1MzIgdW51c2VkOjI5OwkvLyBiaXRzIDMtMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX1RFU1RfdCwgKlBNQUNfVEVTVF90OworCisvKgorICogc3RydWN0dXJlIGZvciBNSUkgTWFuYWdlbWVudCBDb25maWd1cmF0aW9uIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDIwCisgKi8KK3R5cGVkZWYgdW5pb24gX01JSV9NR01UX0NGR190IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNldF9taWlfbWdtdDoxOwkvLyBiaXQgMzEKKwkJdTMyIHJlc2VydmVkOjI1OwkJLy8gYml0cyA2LTMwCisJCXUzMiBzY2FuX2F1dG9faW5jcmVtdDoxOwkvLyBiaXQgNQorCQl1MzIgcHJlYW1ibGVfc3VwcHJlc3M6MTsJLy8gYml0IDQKKwkJdTMyIHVuZGVmaW5lZDoxOwkJLy8gYml0IDMKKwkJdTMyIG1nbXRfY2xrX3Jlc2V0OjM7CS8vIGJpdHMgMC0yCisjZWxzZQorCQl1MzIgbWdtdF9jbGtfcmVzZXQ6MzsJLy8gYml0cyAwLTIKKwkJdTMyIHVuZGVmaW5lZDoxOwkJLy8gYml0IDMKKwkJdTMyIHByZWFtYmxlX3N1cHByZXNzOjE7CS8vIGJpdCA0CisJCXUzMiBzY2FuX2F1dG9faW5jcmVtdDoxOwkvLyBiaXQgNQorCQl1MzIgcmVzZXJ2ZWQ6MjU7CQkvLyBiaXRzIDYtMzAKKwkJdTMyIHJlc2V0X21paV9tZ210OjE7CS8vIGJpdCAzMQorI2VuZGlmCisJfSBiaXRzOworfSBNSUlfTUdNVF9DRkdfdCwgKlBNSUlfTUdNVF9DRkdfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgTUlJIE1hbmFnZW1lbnQgQ29tbWFuZCByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTAyNAorICovCit0eXBlZGVmIHVuaW9uIF9NSUlfTUdNVF9DTURfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQ6MzA7CS8vIGJpdHMgMi0zMQorCQl1MzIgc2Nhbl9jeWNsZToxOwkvLyBiaXQgMQorCQl1MzIgcmVhZF9jeWNsZToxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHJlYWRfY3ljbGU6MTsJLy8gYml0IDAKKwkJdTMyIHNjYW5fY3ljbGU6MTsJLy8gYml0IDEKKwkJdTMyIHJlc2VydmVkOjMwOwkvLyBiaXRzIDItMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUlJX01HTVRfQ01EX3QsICpQTUlJX01HTVRfQ01EX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1JSSBNYW5hZ2VtZW50IEFkZHJlc3MgcmVnIGluIG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDUwMjgKKyAqLwordHlwZWRlZiB1bmlvbiBfTUlJX01HTVRfQUREUl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlZDI6MTk7CS8vIGJpdCAxMy0zMQorCQl1MzIgcGh5X2FkZHI6NTsJLy8gYml0cyA4LTEyCisJCXUzMiByZXNlcnZlZDE6MzsJLy8gYml0cyA1LTcKKwkJdTMyIHJlZ19hZGRyOjU7CS8vIGJpdHMgMC00CisjZWxzZQorCQl1MzIgcmVnX2FkZHI6NTsJLy8gYml0cyAwLTQKKwkJdTMyIHJlc2VydmVkMTozOwkvLyBiaXRzIDUtNworCQl1MzIgcGh5X2FkZHI6NTsJLy8gYml0cyA4LTEyCisJCXUzMiByZXNlcnZlZDI6MTk7CS8vIGJpdCAxMy0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNSUlfTUdNVF9BRERSX3QsICpQTUlJX01HTVRfQUREUl90OworCisvKgorICogc3RydWN0dXJlIGZvciBNSUkgTWFuYWdlbWVudCBDb250cm9sIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDJDCisgKi8KK3R5cGVkZWYgdW5pb24gX01JSV9NR01UX0NUUkxfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQ6MTY7CS8vIGJpdHMgMTYtMzEKKwkJdTMyIHBoeV9jdHJsOjE2OwkvLyBiaXRzIDAtMTUKKyNlbHNlCisJCXUzMiBwaHlfY3RybDoxNjsJLy8gYml0cyAwLTE1CisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0cyAxNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNSUlfTUdNVF9DVFJMX3QsICpQTUlJX01HTVRfQ1RSTF90OworCisvKgorICogc3RydWN0dXJlIGZvciBNSUkgTWFuYWdlbWVudCBTdGF0dXMgcmVnIGluIG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDUwMzAKKyAqLwordHlwZWRlZiB1bmlvbiBfTUlJX01HTVRfU1RBVF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0cyAxNi0zMQorCQl1MzIgcGh5X3N0YXQ6MTY7CS8vIGJpdHMgMC0xNQorI2Vsc2UKKwkJdTMyIHBoeV9zdGF0OjE2OwkvLyBiaXRzIDAtMTUKKwkJdTMyIHJlc2VydmVkOjE2OwkvLyBiaXRzIDE2LTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JSV9NR01UX1NUQVRfdCwgKlBNSUlfTUdNVF9TVEFUX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1JSSBNYW5hZ2VtZW50IEluZGljYXRvcnMgcmVnIGluIG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDUwMzQKKyAqLwordHlwZWRlZiB1bmlvbiBfTUlJX01HTVRfSU5ESUNBVE9SX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkOjI5OwkvLyBiaXRzIDMtMzEKKwkJdTMyIG5vdF92YWxpZDoxOwkvLyBiaXQgMgorCQl1MzIgc2Nhbm5pbmc6MTsJLy8gYml0IDEKKwkJdTMyIGJ1c3k6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBidXN5OjE7CS8vIGJpdCAwCisJCXUzMiBzY2FubmluZzoxOwkvLyBiaXQgMQorCQl1MzIgbm90X3ZhbGlkOjE7CS8vIGJpdCAyCisJCXUzMiByZXNlcnZlZDoyOTsJLy8gYml0cyAzLTMxCisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JSV9NR01UX0lORElDQVRPUl90LCAqUE1JSV9NR01UX0lORElDQVRPUl90OworCisvKgorICogc3RydWN0dXJlIGZvciBJbnRlcmZhY2UgQ29udHJvbCByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTAzOAorICovCit0eXBlZGVmIHVuaW9uIF9NQUNfSUZfQ1RSTF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiByZXNldF9pZl9tb2R1bGU6MTsJLy8gYml0IDMxCisJCXUzMiByZXNlcnZlZDQ6MzsJCS8vIGJpdCAyOC0zMAorCQl1MzIgdGJpX21vZGU6MTsJCS8vIGJpdCAyNworCQl1MzIgZ2hkX21vZGU6MTsJCS8vIGJpdCAyNgorCQl1MzIgbGhkX21vZGU6MTsJCS8vIGJpdCAyNQorCQl1MzIgcGh5X21vZGU6MTsJCS8vIGJpdCAyNAorCQl1MzIgcmVzZXRfcGVyX21paToxOwkvLyBiaXQgMjMKKwkJdTMyIHJlc2VydmVkMzo2OwkJLy8gYml0cyAxNy0yMgorCQl1MzIgc3BlZWQ6MTsJCS8vIGJpdCAxNgorCQl1MzIgcmVzZXRfcGUxMDB4OjE7CS8vIGJpdCAxNQorCQl1MzIgcmVzZXJ2ZWQyOjQ7CQkvLyBiaXRzIDExLTE0CisJCXUzMiBmb3JjZV9xdWlldDoxOwkJLy8gYml0IDEwCisJCXUzMiBub19jaXBoZXI6MTsJCS8vIGJpdCA5CisJCXUzMiBkaXNhYmxlX2xpbmtfZmFpbDoxOwkvLyBiaXQgOAorCQl1MzIgcmVzZXRfZ3BzaToxOwkJLy8gYml0IDcKKwkJdTMyIHJlc2VydmVkMTo2OwkJLy8gYml0cyAxLTYKKwkJdTMyIGVuYWJfamFiX3Byb3RlY3Q6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUzMiBlbmFiX2phYl9wcm90ZWN0OjE7CS8vIGJpdCAwCisJCXUzMiByZXNlcnZlZDE6NjsJCS8vIGJpdHMgMS02CisJCXUzMiByZXNldF9ncHNpOjE7CQkvLyBiaXQgNworCQl1MzIgZGlzYWJsZV9saW5rX2ZhaWw6MTsJLy8gYml0IDgKKwkJdTMyIG5vX2NpcGhlcjoxOwkJLy8gYml0IDkKKwkJdTMyIGZvcmNlX3F1aWV0OjE7CQkvLyBiaXQgMTAKKwkJdTMyIHJlc2VydmVkMjo0OwkJLy8gYml0cyAxMS0xNAorCQl1MzIgcmVzZXRfcGUxMDB4OjE7CS8vIGJpdCAxNQorCQl1MzIgc3BlZWQ6MTsJCS8vIGJpdCAxNgorCQl1MzIgcmVzZXJ2ZWQzOjY7CQkvLyBiaXRzIDE3LTIyCisJCXUzMiByZXNldF9wZXJfbWlpOjE7CS8vIGJpdCAyMworCQl1MzIgcGh5X21vZGU6MTsJCS8vIGJpdCAyNAorCQl1MzIgbGhkX21vZGU6MTsJCS8vIGJpdCAyNQorCQl1MzIgZ2hkX21vZGU6MTsJCS8vIGJpdCAyNgorCQl1MzIgdGJpX21vZGU6MTsJCS8vIGJpdCAyNworCQl1MzIgcmVzZXJ2ZWQ0OjM7CQkvLyBiaXQgMjgtMzAKKwkJdTMyIHJlc2V0X2lmX21vZHVsZToxOwkvLyBiaXQgMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX0lGX0NUUkxfdCwgKlBNQUNfSUZfQ1RSTF90OworCisvKgorICogc3RydWN0dXJlIGZvciBJbnRlcmZhY2UgU3RhdHVzIHJlZyBpbiBtYWMgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MDNDCisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19JRl9TVEFUX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkOjIyOwkJLy8gYml0cyAxMC0zMQorCQl1MzIgZXhjZXNzX2RlZmVyOjE7CS8vIGJpdCA5CisJCXUzMiBjbGFzaDoxOwkJLy8gYml0IDgKKwkJdTMyIHBoeV9qYWJiZXI6MTsJCS8vIGJpdCA3CisJCXUzMiBwaHlfbGlua19vazoxOwkJLy8gYml0IDYKKwkJdTMyIHBoeV9mdWxsX2R1cGxleDoxOwkvLyBiaXQgNQorCQl1MzIgcGh5X3NwZWVkOjE7CQkvLyBiaXQgNAorCQl1MzIgcGUxMDB4X2xpbmtfZmFpbDoxOwkvLyBiaXQgMworCQl1MzIgcGUxMHRfbG9zc19jYXJyaWU6MTsJLy8gYml0IDIKKwkJdTMyIHBlMTB0X3NxZV9lcnJvcjoxOwkvLyBiaXQgMQorCQl1MzIgcGUxMHRfamFiYmVyOjE7CS8vIGJpdCAwCisjZWxzZQorCQl1MzIgcGUxMHRfamFiYmVyOjE7CS8vIGJpdCAwCisJCXUzMiBwZTEwdF9zcWVfZXJyb3I6MTsJLy8gYml0IDEKKwkJdTMyIHBlMTB0X2xvc3NfY2FycmllOjE7CS8vIGJpdCAyCisJCXUzMiBwZTEwMHhfbGlua19mYWlsOjE7CS8vIGJpdCAzCisJCXUzMiBwaHlfc3BlZWQ6MTsJCS8vIGJpdCA0CisJCXUzMiBwaHlfZnVsbF9kdXBsZXg6MTsJLy8gYml0IDUKKwkJdTMyIHBoeV9saW5rX29rOjE7CQkvLyBiaXQgNgorCQl1MzIgcGh5X2phYmJlcjoxOwkJLy8gYml0IDcKKwkJdTMyIGNsYXNoOjE7CQkvLyBiaXQgOAorCQl1MzIgZXhjZXNzX2RlZmVyOjE7CS8vIGJpdCA5CisJCXUzMiByZXNlcnZlZDoyMjsJCS8vIGJpdHMgMTAtMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX0lGX1NUQVRfdCwgKlBNQUNfSUZfU1RBVF90OworCisvKgorICogc3RydWN0dXJlIGZvciBNYWMgU3RhdGlvbiBBZGRyZXNzLCBQYXJ0IDEgcmVnIGluIG1hYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDUwNDAKKyAqLwordHlwZWRlZiB1bmlvbiBfTUFDX1NUQVRJT05fQUREUjFfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgT2N0ZXQ2Ojg7CS8vIGJpdHMgMjQtMzEKKwkJdTMyIE9jdGV0NTo4OwkvLyBiaXRzIDE2LTIzCisJCXUzMiBPY3RldDQ6ODsJLy8gYml0cyA4LTE1CisJCXUzMiBPY3RldDM6ODsJLy8gYml0cyAwLTcKKyNlbHNlCisJCXUzMiBPY3RldDM6ODsJLy8gYml0cyAwLTcKKwkJdTMyIE9jdGV0NDo4OwkvLyBiaXRzIDgtMTUKKwkJdTMyIE9jdGV0NTo4OwkvLyBiaXRzIDE2LTIzCisJCXUzMiBPY3RldDY6ODsJLy8gYml0cyAyNC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNQUNfU1RBVElPTl9BRERSMV90LCAqUE1BQ19TVEFUSU9OX0FERFIxX3Q7CisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIE1hYyBTdGF0aW9uIEFkZHJlc3MsIFBhcnQgMiByZWcgaW4gbWFjIGFkZHJlc3MgbWFwLgorICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NTA0NAorICovCit0eXBlZGVmIHVuaW9uIF9NQUNfU1RBVElPTl9BRERSMl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiBPY3RldDI6ODsJLy8gYml0cyAyNC0zMQorCQl1MzIgT2N0ZXQxOjg7CS8vIGJpdHMgMTYtMjMKKwkJdTMyIHJlc2VydmVkOjE2OwkvLyBiaXRzIDAtMTUKKyNlbHNlCisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0IDAtMTUKKwkJdTMyIE9jdGV0MTo4OwkvLyBiaXRzIDE2LTIzCisJCXUzMiBPY3RldDI6ODsJLy8gYml0cyAyNC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNQUNfU1RBVElPTl9BRERSMl90LCAqUE1BQ19TVEFUSU9OX0FERFIyX3Q7CisKKy8qCisgKiBNQUMgTW9kdWxlIG9mIEpBR0NvcmUgQWRkcmVzcyBNYXBwaW5nCisgKi8KK3R5cGVkZWYgc3RydWN0IF9NQUNfdCB7CQkJCQkvLyBMb2NhdGlvbjoKKwlNQUNfQ0ZHMV90IGNmZzE7CQkJCS8vICAweDUwMDAKKwlNQUNfQ0ZHMl90IGNmZzI7CQkJCS8vICAweDUwMDQKKwlNQUNfSVBHX3QgaXBnOwkJCQkJLy8gIDB4NTAwOAorCU1BQ19IRkRQX3QgaGZkcDsJCQkJLy8gIDB4NTAwQworCU1BQ19NQVhfRk1fTEVOX3QgbWF4X2ZtX2xlbjsJCQkvLyAgMHg1MDEwCisJdTMyIHJzdjE7CQkJCQkvLyAgMHg1MDE0CisJdTMyIHJzdjI7CQkJCQkvLyAgMHg1MDE4CisJTUFDX1RFU1RfdCBtYWNfdGVzdDsJCQkJLy8gIDB4NTAxQworCU1JSV9NR01UX0NGR190IG1paV9tZ210X2NmZzsJCQkvLyAgMHg1MDIwCisJTUlJX01HTVRfQ01EX3QgbWlpX21nbXRfY21kOwkJCS8vICAweDUwMjQKKwlNSUlfTUdNVF9BRERSX3QgbWlpX21nbXRfYWRkcjsJCQkvLyAgMHg1MDI4CisJTUlJX01HTVRfQ1RSTF90IG1paV9tZ210X2N0cmw7CQkJLy8gIDB4NTAyQworCU1JSV9NR01UX1NUQVRfdCBtaWlfbWdtdF9zdGF0OwkJCS8vICAweDUwMzAKKwlNSUlfTUdNVF9JTkRJQ0FUT1JfdCBtaWlfbWdtdF9pbmRpY2F0b3I7CS8vICAweDUwMzQKKwlNQUNfSUZfQ1RSTF90IGlmX2N0cmw7CQkJCS8vICAweDUwMzgKKwlNQUNfSUZfU1RBVF90IGlmX3N0YXQ7CQkJCS8vICAweDUwM0MKKwlNQUNfU1RBVElPTl9BRERSMV90IHN0YXRpb25fYWRkcl8xOwkJLy8gIDB4NTA0MAorCU1BQ19TVEFUSU9OX0FERFIyX3Qgc3RhdGlvbl9hZGRyXzI7CQkvLyAgMHg1MDQ0Cit9IE1BQ190LCAqUE1BQ190OworCisvKiBFTkQgT0YgTUFDIFJFR0lTVEVSIEFERFJFU1MgTUFQICovCisKKy8qIFNUQVJUIE9GIE1BQyBTVEFUIFJFR0lTVEVSIEFERFJFU1MgTUFQICovCisKKy8qCisgKiBzdHJ1Y3R1cmUgZm9yIENhcnJ5IFJlZ2lzdGVyIE9uZSBhbmQgaXQncyBNYXNrIFJlZ2lzdGVyIHJlZyBsb2NhdGVkIGluIG1hYworICogc3RhdCBhZGRyZXNzIG1hcCBhZGRyZXNzIDB4NjEzMCBhbmQgMHg2MTM4LgorICovCit0eXBlZGVmIHVuaW9uIF9NQUNfU1RBVF9SRUdfMV90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB0cjY0OjE7CS8vIGJpdCAzMQorCQl1MzIgdHIxMjc6MTsJLy8gYml0IDMwCisJCXUzMiB0cjI1NToxOwkvLyBiaXQgMjkKKwkJdTMyIHRyNTExOjE7CS8vIGJpdCAyOAorCQl1MzIgdHIxazoxOwkvLyBiaXQgMjcKKwkJdTMyIHRybWF4OjE7CS8vIGJpdCAyNgorCQl1MzIgdHJtZ3Y6MTsJLy8gYml0IDI1CisJCXUzMiB1bnVzZWQ6ODsJLy8gYml0cyAxNy0yNAorCQl1MzIgcmJ5dDoxOwkvLyBiaXQgMTYKKwkJdTMyIHJwa3Q6MTsJLy8gYml0IDE1CisJCXUzMiByZmNzOjE7CS8vIGJpdCAxNAorCQl1MzIgcm1jYToxOwkvLyBiaXQgMTMKKwkJdTMyIHJiY2E6MTsJLy8gYml0IDEyCisJCXUzMiByeGNmOjE7CS8vIGJpdCAxMQorCQl1MzIgcnhwZjoxOwkvLyBiaXQgMTAKKwkJdTMyIHJ4dW86MTsJLy8gYml0IDkKKwkJdTMyIHJhbG46MTsJLy8gYml0IDgKKwkJdTMyIHJmbHI6MTsJLy8gYml0IDcKKwkJdTMyIHJjZGU6MTsJLy8gYml0IDYKKwkJdTMyIHJjc2U6MTsJLy8gYml0IDUKKwkJdTMyIHJ1bmQ6MTsJLy8gYml0IDQKKwkJdTMyIHJvdnI6MTsJLy8gYml0IDMKKwkJdTMyIHJmcmc6MTsJLy8gYml0IDIKKwkJdTMyIHJqYnI6MTsJLy8gYml0IDEKKwkJdTMyIHJkcnA6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUzMiByZHJwOjE7CS8vIGJpdCAwCisJCXUzMiByamJyOjE7CS8vIGJpdCAxCisJCXUzMiByZnJnOjE7CS8vIGJpdCAyCisJCXUzMiByb3ZyOjE7CS8vIGJpdCAzCisJCXUzMiBydW5kOjE7CS8vIGJpdCA0CisJCXUzMiByY3NlOjE7CS8vIGJpdCA1CisJCXUzMiByY2RlOjE7CS8vIGJpdCA2CisJCXUzMiByZmxyOjE7CS8vIGJpdCA3CisJCXUzMiByYWxuOjE7CS8vIGJpdCA4CisJCXUzMiByeHVvOjE7CS8vIGJpdCA5CisJCXUzMiByeHBmOjE7CS8vIGJpdCAxMAorCQl1MzIgcnhjZjoxOwkvLyBiaXQgMTEKKwkJdTMyIHJiY2E6MTsJLy8gYml0IDEyCisJCXUzMiBybWNhOjE7CS8vIGJpdCAxMworCQl1MzIgcmZjczoxOwkvLyBiaXQgMTQKKwkJdTMyIHJwa3Q6MTsJLy8gYml0IDE1CisJCXUzMiByYnl0OjE7CS8vIGJpdCAxNgorCQl1MzIgdW51c2VkOjg7CS8vIGJpdHMgMTctMjQKKwkJdTMyIHRybWd2OjE7CS8vIGJpdCAyNQorCQl1MzIgdHJtYXg6MTsJLy8gYml0IDI2CisJCXUzMiB0cjFrOjE7CS8vIGJpdCAyNworCQl1MzIgdHI1MTE6MTsJLy8gYml0IDI4CisJCXUzMiB0cjI1NToxOwkvLyBiaXQgMjkKKwkJdTMyIHRyMTI3OjE7CS8vIGJpdCAzMAorCQl1MzIgdHI2NDoxOwkvLyBiaXQgMzEKKyNlbmRpZgorCX0gYml0czsKK30gTUFDX1NUQVRfUkVHXzFfdCwgKlBNQUNfU1RBVF9SRUdfMV90OworCisvKgorICogc3RydWN0dXJlIGZvciBDYXJyeSBSZWdpc3RlciBUd28gTWFzayBSZWdpc3RlciByZWcgaW4gbWFjIHN0YXQgYWRkcmVzcyBtYXAuCisgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg2MTNDCisgKi8KK3R5cGVkZWYgdW5pb24gX01BQ19TVEFUX1JFR18yX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoxMjsJLy8gYml0IDIwLTMxCisJCXUzMiB0amJyOjE7CS8vIGJpdCAxOQorCQl1MzIgdGZjczoxOwkvLyBiaXQgMTgKKwkJdTMyIHR4Y2Y6MTsJLy8gYml0IDE3CisJCXUzMiB0b3ZyOjE7CS8vIGJpdCAxNgorCQl1MzIgdHVuZDoxOwkvLyBiaXQgMTUKKwkJdTMyIHRmcmc6MTsJLy8gYml0IDE0CisJCXUzMiB0Ynl0OjE7CS8vIGJpdCAxMworCQl1MzIgdHBrdDoxOwkvLyBiaXQgMTIKKwkJdTMyIHRtY2E6MTsJLy8gYml0IDExCisJCXUzMiB0YmNhOjE7CS8vIGJpdCAxMAorCQl1MzIgdHhwZjoxOwkvLyBiaXQgOQorCQl1MzIgdGRmcjoxOwkvLyBiaXQgOAorCQl1MzIgdGVkZjoxOwkvLyBiaXQgNworCQl1MzIgdHNjbDoxOwkvLyBiaXQgNgorCQl1MzIgdG1jbDoxOwkvLyBiaXQgNQorCQl1MzIgdGxjbDoxOwkvLyBiaXQgNAorCQl1MzIgdHhjbDoxOwkvLyBiaXQgMworCQl1MzIgdG5jbDoxOwkvLyBiaXQgMgorCQl1MzIgdHBmaDoxOwkvLyBiaXQgMQorCQl1MzIgdGRycDoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIHRkcnA6MTsJLy8gYml0IDAKKwkJdTMyIHRwZmg6MTsJLy8gYml0IDEKKwkJdTMyIHRuY2w6MTsJLy8gYml0IDIKKwkJdTMyIHR4Y2w6MTsJLy8gYml0IDMKKwkJdTMyIHRsY2w6MTsJLy8gYml0IDQKKwkJdTMyIHRtY2w6MTsJLy8gYml0IDUKKwkJdTMyIHRzY2w6MTsJLy8gYml0IDYKKwkJdTMyIHRlZGY6MTsJLy8gYml0IDcKKwkJdTMyIHRkZnI6MTsJLy8gYml0IDgKKwkJdTMyIHR4cGY6MTsJLy8gYml0IDkKKwkJdTMyIHRiY2E6MTsJLy8gYml0IDEwCisJCXUzMiB0bWNhOjE7CS8vIGJpdCAxMQorCQl1MzIgdHBrdDoxOwkvLyBiaXQgMTIKKwkJdTMyIHRieXQ6MTsJLy8gYml0IDEzCisJCXUzMiB0ZnJnOjE7CS8vIGJpdCAxNAorCQl1MzIgdHVuZDoxOwkvLyBiaXQgMTUKKwkJdTMyIHRvdnI6MTsJLy8gYml0IDE2CisJCXUzMiB0eGNmOjE7CS8vIGJpdCAxNworCQl1MzIgdGZjczoxOwkvLyBiaXQgMTgKKwkJdTMyIHRqYnI6MTsJLy8gYml0IDE5CisJCXUzMiB1bnVzZWQ6MTI7CS8vIGJpdCAyMC0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNQUNfU1RBVF9SRUdfMl90LCAqUE1BQ19TVEFUX1JFR18yX3Q7CisKKy8qCisgKiBNQUMgU1RBVFMgTW9kdWxlIG9mIEpBR0NvcmUgQWRkcmVzcyBNYXBwaW5nCisgKi8KK3R5cGVkZWYgc3RydWN0IF9NQUNfU1RBVF90IHsJCS8vIExvY2F0aW9uOgorCXUzMiBwYWRbMzJdOwkJLy8gIDB4NjAwMCAtIDYwN0MKKworCS8vIFR4L1J4IDAtNjQgQnl0ZSBGcmFtZSBDb3VudGVyCisJdTMyIFRSNjQ7CQkJLy8gIDB4NjA4MAorCisJLy8gVHgvUnggNjUtMTI3IEJ5dGUgRnJhbWUgQ291bnRlcgorCXUzMiBUUjEyNzsJCQkvLyAgMHg2MDg0CisKKwkvLyBUeC9SeCAxMjgtMjU1IEJ5dGUgRnJhbWUgQ291bnRlcgorCXUzMiBUUjI1NTsJCQkvLyAgMHg2MDg4CisKKwkvLyBUeC9SeCAyNTYtNTExIEJ5dGUgRnJhbWUgQ291bnRlcgorCXUzMiBUUjUxMTsJCQkvLyAgMHg2MDhDCisKKwkvLyBUeC9SeCA1MTItMTAyMyBCeXRlIEZyYW1lIENvdW50ZXIKKwl1MzIgVFIxSzsJCQkvLyAgMHg2MDkwCisKKwkvLyBUeC9SeCAxMDI0LTE1MTggQnl0ZSBGcmFtZSBDb3VudGVyCisJdTMyIFRSTWF4OwkJCS8vICAweDYwOTQKKworCS8vIFR4L1J4IDE1MTktMTUyMiBCeXRlIEdvb2QgVkxBTiBGcmFtZSBDb3VudAorCXUzMiBUUk1ndjsJCQkvLyAgMHg2MDk4CisKKwkvLyBSeCBCeXRlIENvdW50ZXIKKwl1MzIgUkJ5dDsJCQkvLyAgMHg2MDlDCisKKwkvLyBSeCBQYWNrZXQgQ291bnRlcgorCXUzMiBSUGt0OwkJCS8vICAweDYwQTAKKworCS8vIFJ4IEZDUyBFcnJvciBDb3VudGVyCisJdTMyIFJGY3M7CQkJLy8gIDB4NjBBNAorCisJLy8gUnggTXVsdGljYXN0IFBhY2tldCBDb3VudGVyCisJdTMyIFJNY2E7CQkJLy8gIDB4NjBBOAorCisJLy8gUnggQnJvYWRjYXN0IFBhY2tldCBDb3VudGVyCisJdTMyIFJCY2E7CQkJLy8gIDB4NjBBQworCisJLy8gUnggQ29udHJvbCBGcmFtZSBQYWNrZXQgQ291bnRlcgorCXUzMiBSeENmOwkJCS8vICAweDYwQjAKKworCS8vIFJ4IFBhdXNlIEZyYW1lIFBhY2tldCBDb3VudGVyCisJdTMyIFJ4UGY7CQkJLy8gIDB4NjBCNAorCisJLy8gUnggVW5rbm93biBPUCBDb2RlIENvdW50ZXIKKwl1MzIgUnhVbzsJCQkvLyAgMHg2MEI4CisKKwkvLyBSeCBBbGlnbm1lbnQgRXJyb3IgQ291bnRlcgorCXUzMiBSQWxuOwkJCS8vICAweDYwQkMKKworCS8vIFJ4IEZyYW1lIExlbmd0aCBFcnJvciBDb3VudGVyCisJdTMyIFJGbHI7CQkJLy8gIDB4NjBDMAorCisJLy8gUnggQ29kZSBFcnJvciBDb3VudGVyCisJdTMyIFJDZGU7CQkJLy8gIDB4NjBDNAorCisJLy8gUnggQ2FycmllciBTZW5zZSBFcnJvciBDb3VudGVyCisJdTMyIFJDc2U7CQkJLy8gIDB4NjBDOAorCisJLy8gUnggVW5kZXJzaXplIFBhY2tldCBDb3VudGVyCisJdTMyIFJVbmQ7CQkJLy8gIDB4NjBDQworCisJLy8gUnggT3ZlcnNpemUgUGFja2V0IENvdW50ZXIKKwl1MzIgUk92cjsJCQkvLyAgMHg2MEQwCisKKwkvLyBSeCBGcmFnbWVudCBDb3VudGVyCisJdTMyIFJGcmc7CQkJLy8gIDB4NjBENAorCisJLy8gUnggSmFiYmVyIENvdW50ZXIKKwl1MzIgUkpicjsJCQkvLyAgMHg2MEQ4CisKKwkvLyBSeCBEcm9wCisJdTMyIFJEcnA7CQkJLy8gIDB4NjBEQworCisJLy8gVHggQnl0ZSBDb3VudGVyCisJdTMyIFRCeXQ7CQkJLy8gIDB4NjBFMAorCisJLy8gVHggUGFja2V0IENvdW50ZXIKKwl1MzIgVFBrdDsJCQkvLyAgMHg2MEU0CisKKwkvLyBUeCBNdWx0aWNhc3QgUGFja2V0IENvdW50ZXIKKwl1MzIgVE1jYTsJCQkvLyAgMHg2MEU4CisKKwkvLyBUeCBCcm9hZGNhc3QgUGFja2V0IENvdW50ZXIKKwl1MzIgVEJjYTsJCQkvLyAgMHg2MEVDCisKKwkvLyBUeCBQYXVzZSBDb250cm9sIEZyYW1lIENvdW50ZXIKKwl1MzIgVHhQZjsJCQkvLyAgMHg2MEYwCisKKwkvLyBUeCBEZWZlcnJhbCBQYWNrZXQgQ291bnRlcgorCXUzMiBURGZyOwkJCS8vICAweDYwRjQKKworCS8vIFR4IEV4Y2Vzc2l2ZSBEZWZlcnJhbCBQYWNrZXQgQ291bnRlcgorCXUzMiBURWRmOwkJCS8vICAweDYwRjgKKworCS8vIFR4IFNpbmdsZSBDb2xsaXNpb24gUGFja2V0IENvdW50ZXIKKwl1MzIgVFNjbDsJCQkvLyAgMHg2MEZDCisKKwkvLyBUeCBNdWx0aXBsZSBDb2xsaXNpb24gUGFja2V0IENvdW50ZXIKKwl1MzIgVE1jbDsJCQkvLyAgMHg2MTAwCisKKwkvLyBUeCBMYXRlIENvbGxpc2lvbiBQYWNrZXQgQ291bnRlcgorCXUzMiBUTGNsOwkJCS8vICAweDYxMDQKKworCS8vIFR4IEV4Y2Vzc2l2ZSBDb2xsaXNpb24gUGFja2V0IENvdW50ZXIKKwl1MzIgVFhjbDsJCQkvLyAgMHg2MTA4CisKKwkvLyBUeCBUb3RhbCBDb2xsaXNpb24gUGFja2V0IENvdW50ZXIKKwl1MzIgVE5jbDsJCQkvLyAgMHg2MTBDCisKKwkvLyBUeCBQYXVzZSBGcmFtZSBIb25vcmVkIENvdW50ZXIKKwl1MzIgVFBmaDsJCQkvLyAgMHg2MTEwCisKKwkvLyBUeCBEcm9wIEZyYW1lIENvdW50ZXIKKwl1MzIgVERycDsJCQkvLyAgMHg2MTE0CisKKwkvLyBUeCBKYWJiZXIgRnJhbWUgQ291bnRlcgorCXUzMiBUSmJyOwkJCS8vICAweDYxMTgKKworCS8vIFR4IEZDUyBFcnJvciBDb3VudGVyCisJdTMyIFRGY3M7CQkJLy8gIDB4NjExQworCisJLy8gVHggQ29udHJvbCBGcmFtZSBDb3VudGVyCisJdTMyIFR4Q2Y7CQkJLy8gIDB4NjEyMAorCisJLy8gVHggT3ZlcnNpemUgRnJhbWUgQ291bnRlcgorCXUzMiBUT3ZyOwkJCS8vICAweDYxMjQKKworCS8vIFR4IFVuZGVyc2l6ZSBGcmFtZSBDb3VudGVyCisJdTMyIFRVbmQ7CQkJLy8gIDB4NjEyOAorCisJLy8gVHggRnJhZ21lbnRzIEZyYW1lIENvdW50ZXIKKwl1MzIgVEZyZzsJCQkvLyAgMHg2MTJDCisKKwkvLyBDYXJyeSBSZWdpc3RlciBPbmUgUmVnaXN0ZXIKKwlNQUNfU1RBVF9SRUdfMV90IENhcnJ5MTsJLy8gIDB4NjEzMAorCisJLy8gQ2FycnkgUmVnaXN0ZXIgVHdvIFJlZ2lzdGVyCisJTUFDX1NUQVRfUkVHXzJfdCBDYXJyeTI7CS8vICAweDYxMzQKKworCS8vIENhcnJ5IFJlZ2lzdGVyIE9uZSBNYXNrIFJlZ2lzdGVyCisJTUFDX1NUQVRfUkVHXzFfdCBDYXJyeTFNOwkvLyAgMHg2MTM4CisKKwkvLyBDYXJyeSBSZWdpc3RlciBUd28gTWFzayBSZWdpc3RlcgorCU1BQ19TVEFUX1JFR18yX3QgQ2FycnkyTTsJLy8gIDB4NjEzQworfSBNQUNfU1RBVF90LCAqUE1BQ19TVEFUX3Q7CisKKy8qIEVORCBPRiBNQUMgU1RBVCBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisKKy8qIFNUQVJUIE9GIE1NQyBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogc3RydWN0dXJlIGZvciBNYWluIE1lbW9yeSBDb250cm9sbGVyIENvbnRyb2wgcmVnIGluIG1tYyBhZGRyZXNzIG1hcC4KKyAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDcwMDAKKyAqLwordHlwZWRlZiB1bmlvbiBfTU1DX0NUUkxfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgcmVzZXJ2ZWQ6MjU7CQkvLyBiaXRzIDctMzEKKwkJdTMyIGZvcmNlX2NlOjE7CQkvLyBiaXQgNgorCQl1MzIgcnhkbWFfZGlzYWJsZToxOwkvLyBiaXQgNQorCQl1MzIgdHhkbWFfZGlzYWJsZToxOwkvLyBiaXQgNAorCQl1MzIgdHhtYWNfZGlzYWJsZToxOwkvLyBiaXQgMworCQl1MzIgcnhtYWNfZGlzYWJsZToxOwkvLyBiaXQgMgorCQl1MzIgYXJiX2Rpc2FibGU6MTsJCS8vIGJpdCAxCisJCXUzMiBtbWNfZW5hYmxlOjE7CQkvLyBiaXQgMAorI2Vsc2UKKwkJdTMyIG1tY19lbmFibGU6MTsJCS8vIGJpdCAwCisJCXUzMiBhcmJfZGlzYWJsZToxOwkJLy8gYml0IDEKKwkJdTMyIHJ4bWFjX2Rpc2FibGU6MTsJLy8gYml0IDIKKwkJdTMyIHR4bWFjX2Rpc2FibGU6MTsJLy8gYml0IDMKKwkJdTMyIHR4ZG1hX2Rpc2FibGU6MTsJLy8gYml0IDQKKwkJdTMyIHJ4ZG1hX2Rpc2FibGU6MTsJLy8gYml0IDUKKwkJdTMyIGZvcmNlX2NlOjE7CQkvLyBiaXQgNgorCQl1MzIgcmVzZXJ2ZWQ6MjU7CQkvLyBiaXRzIDctMzEKKyNlbmRpZgorCX0gYml0czsKK30gTU1DX0NUUkxfdCwgKlBNTUNfQ1RSTF90OworCisvKgorICogc3RydWN0dXJlIGZvciBNYWluIE1lbW9yeSBDb250cm9sbGVyIEhvc3QgTWVtb3J5IEFjY2VzcyBBZGRyZXNzIHJlZyBpbiBtbWMKKyAqIGFkZHJlc3MgbWFwLiAgTG9jYXRlZCBhdCBhZGRyZXNzIDB4NzAwNAorICovCit0eXBlZGVmIHVuaW9uIF9NTUNfU1JBTV9BQ0NFU1NfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgYnl0ZV9lbmFibGU6MTY7CS8vIGJpdHMgMTYtMzEKKwkJdTMyIHJlc2VydmVkMjoyOwkJLy8gYml0cyAxNC0xNQorCQl1MzIgcmVxX2FkZHI6MTA7CQkvLyBiaXRzIDQtMTMKKwkJdTMyIHJlc2VydmVkMToxOwkJLy8gYml0IDMKKwkJdTMyIGlzX2N0cmxfd29yZDoxOwkvLyBiaXQgMgorCQl1MzIgd3JfYWNjZXNzOjE7CQkvLyBiaXQgMQorCQl1MzIgcmVxX2FjY2VzczoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUzMiByZXFfYWNjZXNzOjE7CQkvLyBiaXQgMAorCQl1MzIgd3JfYWNjZXNzOjE7CQkvLyBiaXQgMQorCQl1MzIgaXNfY3RybF93b3JkOjE7CS8vIGJpdCAyCisJCXUzMiByZXNlcnZlZDE6MTsJCS8vIGJpdCAzCisJCXUzMiByZXFfYWRkcjoxMDsJCS8vIGJpdHMgNC0xMworCQl1MzIgcmVzZXJ2ZWQyOjI7CQkvLyBiaXRzIDE0LTE1CisJCXUzMiBieXRlX2VuYWJsZToxNjsJLy8gYml0cyAxNi0zMQorI2VuZGlmCisJfSBiaXRzOworfSBNTUNfU1JBTV9BQ0NFU1NfdCwgKlBNTUNfU1JBTV9BQ0NFU1NfdDsKKworLyoKKyAqIHN0cnVjdHVyZSBmb3IgTWFpbiBNZW1vcnkgQ29udHJvbGxlciBIb3N0IE1lbW9yeSBBY2Nlc3MgRGF0YSByZWcgaW4gbW1jCisgKiBhZGRyZXNzIG1hcC4gIExvY2F0ZWQgYXQgYWRkcmVzcyAweDcwMDggLSAweDcwMTQKKyAqIERlZmluZWQgZWFybGllciAodTMyKQorICovCisKKy8qCisgKiBNZW1vcnkgQ29udHJvbCBNb2R1bGUgb2YgSkFHQ29yZSBBZGRyZXNzIE1hcHBpbmcKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX01NQ190IHsJCQkvLyBMb2NhdGlvbjoKKwlNTUNfQ1RSTF90IG1tY19jdHJsOwkJLy8gIDB4NzAwMAorCU1NQ19TUkFNX0FDQ0VTU190IHNyYW1fYWNjZXNzOwkvLyAgMHg3MDA0CisJdTMyIHNyYW1fd29yZDE7CQkvLyAgMHg3MDA4CisJdTMyIHNyYW1fd29yZDI7CQkvLyAgMHg3MDBDCisJdTMyIHNyYW1fd29yZDM7CQkvLyAgMHg3MDEwCisJdTMyIHNyYW1fd29yZDQ7CQkvLyAgMHg3MDE0Cit9IE1NQ190LCAqUE1NQ190OworCisvKiBFTkQgT0YgTU1DIFJFR0lTVEVSIEFERFJFU1MgTUFQICovCisKKworLyogU1RBUlQgT0YgRVhQIFJPTSBSRUdJU1RFUiBBRERSRVNTIE1BUCAqLworCisvKgorICogRXhwYW5zaW9uIFJPTSBNb2R1bGUgb2YgSkFHQ29yZSBBZGRyZXNzIE1hcHBpbmcKKyAqLworCisvKiBUYWtlIHRoaXMgb3V0IHVudGlsIGl0IGlzIG5vdCBlbXB0eSAqLworI2lmIDAKK3R5cGVkZWYgc3RydWN0IF9FWFBfUk9NX3QgeworCit9IEVYUF9ST01fdCwgKlBFWFBfUk9NX3Q7CisjZW5kaWYKKworLyogRU5EIE9GIEVYUCBST00gUkVHSVNURVIgQUREUkVTUyBNQVAgKi8KKworCisvKgorICogSkFHQ29yZSBBZGRyZXNzIE1hcHBpbmcKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0FERFJFU1NfTUFQX3QgeworCUdMT0JBTF90IGdsb2JhbDsKKwkvLyB1bnVzZWQgc2VjdGlvbiBvZiBnbG9iYWwgYWRkcmVzcyBtYXAKKwl1OCB1bnVzZWRfZ2xvYmFsWzQwOTYgLSBzaXplb2YoR0xPQkFMX3QpXTsKKwlUWERNQV90IHR4ZG1hOworCS8vIHVudXNlZCBzZWN0aW9uIG9mIHR4ZG1hIGFkZHJlc3MgbWFwCisJdTggdW51c2VkX3R4ZG1hWzQwOTYgLSBzaXplb2YoVFhETUFfdCldOworCVJYRE1BX3QgcnhkbWE7CisJLy8gdW51c2VkIHNlY3Rpb24gb2YgcnhkbWEgYWRkcmVzcyBtYXAKKwl1OCB1bnVzZWRfcnhkbWFbNDA5NiAtIHNpemVvZihSWERNQV90KV07CisJVFhNQUNfdCB0eG1hYzsKKwkvLyB1bnVzZWQgc2VjdGlvbiBvZiB0eG1hYyBhZGRyZXNzIG1hcAorCXU4IHVudXNlZF90eG1hY1s0MDk2IC0gc2l6ZW9mKFRYTUFDX3QpXTsKKwlSWE1BQ190IHJ4bWFjOworCS8vIHVudXNlZCBzZWN0aW9uIG9mIHJ4bWFjIGFkZHJlc3MgbWFwCisJdTggdW51c2VkX3J4bWFjWzQwOTYgLSBzaXplb2YoUlhNQUNfdCldOworCU1BQ190IG1hYzsKKwkvLyB1bnVzZWQgc2VjdGlvbiBvZiBtYWMgYWRkcmVzcyBtYXAKKwl1OCB1bnVzZWRfbWFjWzQwOTYgLSBzaXplb2YoTUFDX3QpXTsKKwlNQUNfU1RBVF90IG1hY1N0YXQ7CisJLy8gdW51c2VkIHNlY3Rpb24gb2YgbWFjIHN0YXQgYWRkcmVzcyBtYXAKKwl1OCB1bnVzZWRfbWFjX3N0YXRbNDA5NiAtIHNpemVvZihNQUNfU1RBVF90KV07CisJTU1DX3QgbW1jOworCS8vIHVudXNlZCBzZWN0aW9uIG9mIG1tYyBhZGRyZXNzIG1hcAorCXU4IHVudXNlZF9tbWNbNDA5NiAtIHNpemVvZihNTUNfdCldOworCS8vIHVudXNlZCBzZWN0aW9uIG9mIGFkZHJlc3MgbWFwCisJdTggdW51c2VkX1sxMDE1ODA4XTsKKworLyogVGFrZSB0aGlzIG91dCB1bnRpbCBpdCBpcyBub3QgZW1wdHkgKi8KKyNpZiAwCisJRVhQX1JPTV90IGV4cF9yb207CisjZW5kaWYKKworCXU4IHVudXNlZF9leHBfcm9tWzQwOTZdOwkvLyBNR1Mtc2l6ZSBUQkQKKwl1OCB1bnVzZWRfX1s1MjQyODhdOwkvLyB1bnVzZWQgc2VjdGlvbiBvZiBhZGRyZXNzIG1hcAorfSBBRERSRVNTX01BUF90LCAqUEFERFJFU1NfTUFQX3Q7CisKKyNlbmRpZiAvKiBfRVQxMzEwX0FERFJFU1NfTUFQX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9lZXByb20uYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2VlcHJvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYjE5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9lZXByb20uYwpAQCAtMCwwICsxLDQ4MCBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfZWVwcm9tLmMgLSBDb2RlIHVzZWQgdG8gYWNjZXNzIHRoZSBkZXZpY2UncyBFRVBST00KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKworI2luY2x1ZGUgImV0MTMxMF9waHkuaCIKKyNpbmNsdWRlICJldDEzMTBfcG0uaCIKKyNpbmNsdWRlICJldDEzMTBfamFnY29yZS5oIgorI2luY2x1ZGUgImV0MTMxMF9lZXByb20uaCIKKworI2luY2x1ZGUgImV0MTMxeF9hZGFwdGVyLmgiCisjaW5jbHVkZSAiZXQxMzF4X2luaXRwY2kuaCIKKyNpbmNsdWRlICJldDEzMXhfaXNyLmgiCisKKyNpbmNsdWRlICJldDEzMTBfdHguaCIKKworCisvKgorICogRUVQUk9NIERlZmluZXMKKyAqLworCisvKiBMQkNJRiBSZWdpc3RlciBHcm91cHMgKGFkZHJlc3NlZCB2aWEgMzItYml0IG9mZnNldHMpICovCisjZGVmaW5lIExCQ0lGX0RXT1JEMF9HUk9VUF9PRkZTRVQgICAgICAgMHhBQworI2RlZmluZSBMQkNJRl9EV09SRDFfR1JPVVBfT0ZGU0VUICAgICAgIDB4QjAKKworLyogTEJDSUYgUmVnaXN0ZXJzIChhZGRyZXNzZWQgdmlhIDgtYml0IG9mZnNldHMpICovCisjZGVmaW5lIExCQ0lGX0FERFJFU1NfUkVHSVNURVJfT0ZGU0VUICAgMHhBQworI2RlZmluZSBMQkNJRl9EQVRBX1JFR0lTVEVSX09GRlNFVCAgICAgIDB4QjAKKyNkZWZpbmUgTEJDSUZfQ09OVFJPTF9SRUdJU1RFUl9PRkZTRVQgICAweEIxCisjZGVmaW5lIExCQ0lGX1NUQVRVU19SRUdJU1RFUl9PRkZTRVQgICAgMHhCMgorCisvKiBMQkNJRiBDb250cm9sIFJlZ2lzdGVyIEJpdHMgKi8KKyNkZWZpbmUgTEJDSUZfQ09OVFJPTF9TRVFVRU5USUFMX1JFQUQgICAweDAxCisjZGVmaW5lIExCQ0lGX0NPTlRST0xfUEFHRV9XUklURSAgICAgICAgMHgwMgorI2RlZmluZSBMQkNJRl9DT05UUk9MX1VOVVNFRDEgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgTEJDSUZfQ09OVFJPTF9FRVBST01fUkVMT0FEICAgICAweDA4CisjZGVmaW5lIExCQ0lGX0NPTlRST0xfVU5VU0VEMiAgICAgICAgICAgMHgxMAorI2RlZmluZSBMQkNJRl9DT05UUk9MX1RXT19CWVRFX0FERFIgICAgIDB4MjAKKyNkZWZpbmUgTEJDSUZfQ09OVFJPTF9JMkNfV1JJVEUgICAgICAgICAweDQwCisjZGVmaW5lIExCQ0lGX0NPTlRST0xfTEJDSUZfRU5BQkxFICAgICAgMHg4MAorCisvKiBMQkNJRiBTdGF0dXMgUmVnaXN0ZXIgQml0cyAqLworI2RlZmluZSBMQkNJRl9TVEFUVVNfUEhZX1FVRVVFX0FWQUlMICAgIDB4MDEKKyNkZWZpbmUgTEJDSUZfU1RBVFVTX0kyQ19JRExFICAgICAgICAgICAweDAyCisjZGVmaW5lIExCQ0lGX1NUQVRVU19BQ0tfRVJST1IgICAgICAgICAgMHgwNAorI2RlZmluZSBMQkNJRl9TVEFUVVNfR0VORVJBTF9FUlJPUiAgICAgIDB4MDgKKyNkZWZpbmUgTEJDSUZfU1RBVFVTX1VOVVNFRCAgICAgICAgICAgICAweDMwCisjZGVmaW5lIExCQ0lGX1NUQVRVU19DSEVDS1NVTV9FUlJPUiAgICAgMHg0MAorI2RlZmluZSBMQkNJRl9TVEFUVVNfRUVQUk9NX1BSRVNFTlQgICAgIDB4ODAKKworLyogTWlzY2VsbGFuZW91cyBDb25zdHJhaW50cyAqLworI2RlZmluZSBNQVhfTlVNX1JFR0lTVEVSX1BPTExTICAgICAgICAgIDEwMDAKKyNkZWZpbmUgTUFYX05VTV9XUklURV9SRVRSSUVTICAgICAgICAgICAyCisKKy8qCisgKiBEZWZpbmUgbWFjcm9zIHRoYXQgYWxsb3cgaW5kaXZpZHVhbCByZWdpc3RlciB2YWx1ZXMgdG8gYmUgZXh0cmFjdGVkIGZyb20gYQorICogRFdPUkQxIHJlZ2lzdGVyIGdyb3VwaW5nCisgKi8KKyNkZWZpbmUgRVhUUkFDVF9EQVRBX1JFR0lTVEVSKHgpICAgICh1aW50OF90KSh4ICYgMHhGRikKKyNkZWZpbmUgRVhUUkFDVF9TVEFUVVNfUkVHSVNURVIoeCkgICh1aW50OF90KSgoeCA+PiAxNikgJiAweEZGKQorI2RlZmluZSBFWFRSQUNUX0NPTlRST0xfUkVHKHgpICAgICAgKHVpbnQ4X3QpKCh4ID4+IDgpICYgMHhGRikKKworLyoqCisgKiBFZXByb21Xcml0ZUJ5dGUgLSBXcml0ZSBhIGJ5dGUgdG8gdGhlIEVUMTMxMCdzIEVFUFJPTQorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKiBAdW5BZGRyZXNzOiB0aGUgYWRkcmVzcyB0byB3cml0ZQorICogQGJEYXRhOiB0aGUgdmFsdWUgdG8gd3JpdGUKKyAqIEB1bkVlcHJvbklkOiB0aGUgSUQgb2YgdGhlIEVFUFJPTQorICogQHVuQWRkcmVzc2luZ01vZGU6IGhvdyB0aGUgRUVQUk9NIGlzIHRvIGJlIGFjY2Vzc2VkCisgKgorICogUmV0dXJucyBTVUNDRVNTIG9yIEZBSUxVUkUKKyAqLworaW50MzJfdCBFZXByb21Xcml0ZUJ5dGUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgdWludDMyX3QgdW5BZGRyZXNzLAorCQkJdWludDhfdCBiRGF0YSwgdWludDMyX3QgdW5FZXByb21JZCwKKwkJCXVpbnQzMl90IHVuQWRkcmVzc2luZ01vZGUpCit7CisgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gcEFkYXB0ZXItPnBkZXY7CisJaW50MzJfdCBuSW5kZXg7CisJaW50MzJfdCBuUmV0cmllczsKKwlpbnQzMl90IG5FcnJvciA9IGZhbHNlOworCWludDMyX3QgbkkyQ1dyaXRlQWN0aXZlID0gMDsKKwlpbnQzMl90IG5Xcml0ZVN1Y2Nlc3NmdWwgPSAwOworCXVpbnQ4X3QgYkNvbnRyb2w7CisJdWludDhfdCBiU3RhdHVzID0gMDsKKwl1aW50MzJfdCB1bkR3b3JkMSA9IDA7CisJdWludDMyX3QgdW5EYXRhID0gMDsKKworCS8qCisJICogVGhlIGZvbGxvd2luZyBleGNlcnB0IGlzIGZyb20gIlNlcmlhbCBFRVBST00gSFcgRGVzaWduCisJICogU3BlY2lmaWNhdGlvbiIgVmVyc2lvbiAwLjkyICg5LzIwLzIwMDQpOgorCSAqCisJICogU2luZ2xlIEJ5dGUgV3JpdGVzCisJICoKKwkgKiBGb3IgYW4gRUVQUk9NLCBhbiBJMkMgc2luZ2xlIGJ5dGUgd3JpdGUgaXMgZGVmaW5lZCBhcyBhIFNUQVJUCisJICogY29uZGl0aW9uIGZvbGxvd2VkIGJ5IHRoZSBkZXZpY2UgYWRkcmVzcywgRUVQUk9NIGFkZHJlc3MsIG9uZSBieXRlCisJICogb2YgZGF0YSBhbmQgYSBTVE9QIGNvbmRpdGlvbi4gIFRoZSBTVE9QIGNvbmRpdGlvbiB3aWxsIHRyaWdnZXIgdGhlCisJICogRUVQUk9NJ3MgaW50ZXJuYWxseSB0aW1lZCB3cml0ZSBjeWNsZSB0byB0aGUgbm9udm9sYXRpbGUgbWVtb3J5LgorCSAqIEFsbCBpbnB1dHMgYXJlIGRpc2FibGVkIGR1cmluZyB0aGlzIHdyaXRlIGN5Y2xlIGFuZCB0aGUgRUVQUk9NIHdpbGwKKwkgKiBub3QgcmVzcG9uZCB0byBhbnkgYWNjZXNzIHVudGlsIHRoZSBpbnRlcm5hbCB3cml0ZSBpcyBjb21wbGV0ZS4KKwkgKiBUaGUgc3RlcHMgdG8gZXhlY3V0ZSBhIHNpbmdsZSBieXRlIHdyaXRlIGFyZSBhcyBmb2xsb3dzOgorCSAqCisJICogMS4gQ2hlY2sgTEJDSUYgU3RhdHVzIFJlZ2lzdGVyIGZvciBiaXRzIDYgJiAzOjIgYWxsIGVxdWFsIHRvIDAgYW5kCisJICogICAgYml0cyA3LDE6MCBib3RoIGVxdWFsIHRvIDEsIGF0IGxlYXN0IG9uY2UgYWZ0ZXIgcmVzZXQuCisJICogICAgU3Vic2VxdWVudCBvcGVyYXRpb25zIG5lZWQgb25seSB0byBjaGVjayB0aGF0IGJpdHMgMTowIGFyZQorCSAqICAgIGVxdWFsIHRvIDEgcHJpb3IgdG8gc3RhcnRpbmcgYSBzaW5nbGUgYnl0ZSB3cml0ZS4KKwkgKgorCSAqIDIuIFdyaXRlIHRvIHRoZSBMQkNJRiBDb250cm9sIFJlZ2lzdGVyOiAgYml0IDc9MSwgYml0IDY9MSwgYml0IDM9MCwKKwkgKiAgICBhbmQgYml0cyAxOjAgYm90aCA9MC4gIEJpdCA1IHNob3VsZCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZQorCSAqICAgIHR5cGUgb2YgRUVQUk9NIGJlaW5nIGFjY2Vzc2VkICgxPXR3byBieXRlIGFkZHJlc3NpbmcsIDA9b25lCisJICogICAgYnl0ZSBhZGRyZXNzaW5nKS4KKwkgKgorCSAqIDMuIFdyaXRlIHRoZSBhZGRyZXNzIHRvIHRoZSBMQkNJRiBBZGRyZXNzIFJlZ2lzdGVyLgorCSAqCisJICogNC4gV3JpdGUgdGhlIGRhdGEgdG8gdGhlIExCQ0lGIERhdGEgUmVnaXN0ZXIgKHRoZSBJMkMgd3JpdGUgd2lsbAorCSAqICAgIGJlZ2luKS4KKwkgKgorCSAqIDUuIE1vbml0b3IgYml0IDE6MCBvZiB0aGUgTEJDSUYgU3RhdHVzIFJlZ2lzdGVyLiAgV2hlbiBiaXRzIDE6MCBhcmUKKwkgKiAgICBib3RoIGVxdWFsIHRvIDEsIHRoZSBJMkMgd3JpdGUgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIGludGVybmFsCisJICogICAgd3JpdGUgY3ljbGUgb2YgdGhlIEVFUFJPTSBpcyBhYm91dCB0byBzdGFydC4gKGJpdHMgMTowID0gMDEgaXMKKwkgKiAgICBhIGxlZ2FsIHN0YXRlIHdoaWxlIHdhaXRpbmcgZnJvbSBib3RoIGVxdWFsIHRvIDEsIGJ1dCBiaXRzCisJICogICAgMTowID0gMTAgaXMgaW52YWxpZCBhbmQgaW1wbGllcyB0aGF0IHNvbWV0aGluZyBpcyBicm9rZW4pLgorCSAqCisJICogNi4gQ2hlY2sgYml0IDMgb2YgdGhlIExCQ0lGIFN0YXR1cyBSZWdpc3Rlci4gIElmICBlcXVhbCB0byAxLCBhbgorCSAqICAgIGVycm9yIGhhcyBvY2N1cnJlZC4KKwkgKgorCSAqIDcuIENoZWNrIGJpdCAyIG9mIHRoZSBMQkNJRiBTdGF0dXMgUmVnaXN0ZXIuICBJZiBlcXVhbCB0byAxIGFuIEFDSworCSAqICAgIGVycm9yIGhhcyBvY2N1cnJlZCBvbiB0aGUgYWRkcmVzcyBwaGFzZSBvZiB0aGUgd3JpdGUuICBUaGlzCisJICogICAgY291bGQgYmUgZHVlIHRvIGFuIGFjdHVhbCBoYXJkd2FyZSBmYWlsdXJlIG9yIHRoZSBFRVBST00gbWF5CisJICogICAgc3RpbGwgYmUgaW4gaXRzIGludGVybmFsIHdyaXRlIGN5Y2xlIGZyb20gYSBwcmV2aW91cyB3cml0ZS4KKwkgKiAgICBUaGlzIHdyaXRlIG9wZXJhdGlvbiB3YXMgaWdub3JlZCBhbmQgbXVzdCBiZSByZXBlYXRlZCBsYXRlci4KKwkgKgorCSAqIDguIFNldCBiaXQgNiBvZiB0aGUgTEJDSUYgQ29udHJvbCBSZWdpc3RlciA9IDAuIElmIGFub3RoZXIgd3JpdGUgaXMKKwkgKiAgICByZXF1aXJlZCwgZ28gdG8gc3RlcCAxLgorCSAqLworCisJLyogU3RlcCAxOiAqLworCWZvciAobkluZGV4ID0gMDsgbkluZGV4IDwgTUFYX05VTV9SRUdJU1RFUl9QT0xMUzsgbkluZGV4KyspIHsKKwkJLyogUmVhZCByZWdpc3RlcnMgZ3JvdXBlZCBpbiBEV09SRDEgKi8KKwkJaWYgKHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBMQkNJRl9EV09SRDFfR1JPVVBfT0ZGU0VULAorCQkJCQkgICZ1bkR3b3JkMSkpIHsKKwkJCW5FcnJvciA9IDE7CisJCQlicmVhazsKKwkJfQorCisJCWJTdGF0dXMgPSBFWFRSQUNUX1NUQVRVU19SRUdJU1RFUih1bkR3b3JkMSk7CisKKwkJaWYgKGJTdGF0dXMgJiBMQkNJRl9TVEFUVVNfUEhZX1FVRVVFX0FWQUlMICYmCisJCSAgICBiU3RhdHVzICYgTEJDSUZfU1RBVFVTX0kyQ19JRExFKSB7CisJCSAgICAJLyogYml0cyAxOjAgYXJlIGVxdWFsIHRvIDEgKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKG5FcnJvciB8fCAobkluZGV4ID49IE1BWF9OVU1fUkVHSVNURVJfUE9MTFMpKSB7CisJCXJldHVybiBGQUlMVVJFOworCX0KKworCS8qIFN0ZXAgMjogKi8KKwliQ29udHJvbCA9IDA7CisJYkNvbnRyb2wgfD0gTEJDSUZfQ09OVFJPTF9MQkNJRl9FTkFCTEUgfCBMQkNJRl9DT05UUk9MX0kyQ19XUklURTsKKworCWlmICh1bkFkZHJlc3NpbmdNb2RlID09IERVQUxfQllURSkgeworCQliQ29udHJvbCB8PSBMQkNJRl9DT05UUk9MX1RXT19CWVRFX0FERFI7CisJfQorCisJaWYgKHBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBMQkNJRl9DT05UUk9MX1JFR0lTVEVSX09GRlNFVCwKKwkJCQkgIGJDb250cm9sKSkgeworCQlyZXR1cm4gRkFJTFVSRTsKKwl9CisKKwluSTJDV3JpdGVBY3RpdmUgPSAxOworCisJLyogUHJlcGFyZSBFRVBST00gYWRkcmVzcyBmb3IgU3RlcCAzICovCisJdW5BZGRyZXNzIHw9ICh1bkFkZHJlc3NpbmdNb2RlID09IERVQUxfQllURSkgPworCSAgICAodW5FZXByb21JZCA8PCAxNikgOiAodW5FZXByb21JZCA8PCA4KTsKKworCWZvciAoblJldHJpZXMgPSAwOyBuUmV0cmllcyA8IE1BWF9OVU1fV1JJVEVfUkVUUklFUzsgblJldHJpZXMrKykgeworCQkvKiBTdGVwIDM6Ki8KKwkJaWYgKHBjaV93cml0ZV9jb25maWdfZHdvcmQocGRldiwgTEJDSUZfQUREUkVTU19SRUdJU1RFUl9PRkZTRVQsCisJCQkJCSAgIHVuQWRkcmVzcykpIHsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogU3RlcCA0OiAqLworCQlpZiAocGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBkZXYsIExCQ0lGX0RBVEFfUkVHSVNURVJfT0ZGU0VULAorCQkJCQkgIGJEYXRhKSkgeworCQkJYnJlYWs7CisJCX0KKworCQkvKiBTdGVwIDU6ICovCisJCWZvciAobkluZGV4ID0gMDsgbkluZGV4IDwgTUFYX05VTV9SRUdJU1RFUl9QT0xMUzsgbkluZGV4KyspIHsKKwkJCS8qIFJlYWQgcmVnaXN0ZXJzIGdyb3VwZWQgaW4gRFdPUkQxICovCisJCQlpZiAocGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsCisJCQkJCQkgIExCQ0lGX0RXT1JEMV9HUk9VUF9PRkZTRVQsCisJCQkJCQkgICZ1bkR3b3JkMSkpIHsKKwkJCQluRXJyb3IgPSAxOworCQkJCWJyZWFrOworCQkJfQorCisJCQliU3RhdHVzID0gRVhUUkFDVF9TVEFUVVNfUkVHSVNURVIodW5Ed29yZDEpOworCisJCQlpZiAoYlN0YXR1cyAmIExCQ0lGX1NUQVRVU19QSFlfUVVFVUVfQVZBSUwgJiYKKwkJCSAgICBiU3RhdHVzICYgTEJDSUZfU1RBVFVTX0kyQ19JRExFKSB7CisJCQkgICAgCS8qIEkyQyB3cml0ZSBjb21wbGV0ZSAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKG5FcnJvciB8fCAobkluZGV4ID49IE1BWF9OVU1fUkVHSVNURVJfUE9MTFMpKSB7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIFN0ZXAgNjogRG9uJ3QgYnJlYWsgaGVyZSBpZiB3ZSBhcmUgcmV2aXNpb24gMSwgdGhpcyBpcworCQkgKgkgICBzbyB3ZSBkbyBhIGJsaW5kIHdyaXRlIGZvciBsb2FkIGJ1Zy4KKwkgICAgICAgICAqLworCQlpZiAoYlN0YXR1cyAmIExCQ0lGX1NUQVRVU19HRU5FUkFMX0VSUk9SCisJCSAgICAmJiBwQWRhcHRlci0+UmV2aXNpb25JRCA9PSAwKSB7CisJCQlicmVhazsKKwkJfQorCisJCS8qIFN0ZXAgNyAqLworCQlpZiAoYlN0YXR1cyAmIExCQ0lGX1NUQVRVU19BQ0tfRVJST1IpIHsKKwkJCS8qCisJCQkgKiBUaGlzIGNvdWxkIGJlIGR1ZSB0byBhbiBhY3R1YWwgaGFyZHdhcmUgZmFpbHVyZQorCQkJICogb3IgdGhlIEVFUFJPTSBtYXkgc3RpbGwgYmUgaW4gaXRzIGludGVybmFsIHdyaXRlCisJCQkgKiBjeWNsZSBmcm9tIGEgcHJldmlvdXMgd3JpdGUuIFRoaXMgd3JpdGUgb3BlcmF0aW9uCisJCQkgKiB3YXMgaWdub3JlZCBhbmQgbXVzdCBiZSByZXBlYXRlZCBsYXRlci4KKwkJCSAqLworCQkJdWRlbGF5KDEwKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJbldyaXRlU3VjY2Vzc2Z1bCA9IDE7CisJCWJyZWFrOworCX0KKworCS8qIFN0ZXAgODogKi8KKwl1ZGVsYXkoMTApOworCW5JbmRleCA9IDA7CisJd2hpbGUgKG5JMkNXcml0ZUFjdGl2ZSkgeworCQliQ29udHJvbCAmPSB+TEJDSUZfQ09OVFJPTF9JMkNfV1JJVEU7CisKKwkJaWYgKHBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBMQkNJRl9DT05UUk9MX1JFR0lTVEVSX09GRlNFVCwKKwkJCQkJICBiQ29udHJvbCkpIHsKKwkJCW5Xcml0ZVN1Y2Nlc3NmdWwgPSAwOworCQl9CisKKwkJLyogRG8gcmVhZCB1bnRpbCBpbnRlcm5hbCBBQ0tfRVJST1IgZ29lcyBhd2F5IG1lYW5pbmcgd3JpdGUKKwkJICogY29tcGxldGVkCisJCSAqLworCQlkbyB7CisJCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHBkZXYsCisJCQkJCSAgICAgICBMQkNJRl9BRERSRVNTX1JFR0lTVEVSX09GRlNFVCwKKwkJCQkJICAgICAgIHVuQWRkcmVzcyk7CisJCQlkbyB7CisJCQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsCisJCQkJCUxCQ0lGX0RBVEFfUkVHSVNURVJfT0ZGU0VULCAmdW5EYXRhKTsKKwkJCX0gd2hpbGUgKCh1bkRhdGEgJiAweDAwMDEwMDAwKSA9PSAwKTsKKwkJfSB3aGlsZSAodW5EYXRhICYgMHgwMDA0MDAwMCk7CisKKwkJYkNvbnRyb2wgPSBFWFRSQUNUX0NPTlRST0xfUkVHKHVuRGF0YSk7CisKKwkJaWYgKGJDb250cm9sICE9IDB4QzAgfHwgbkluZGV4ID09IDEwMDAwKSB7CisJCQlicmVhazsKKwkJfQorCisJCW5JbmRleCsrOworCX0KKworCXJldHVybiBuV3JpdGVTdWNjZXNzZnVsID8gU1VDQ0VTUyA6IEZBSUxVUkU7Cit9CisKKy8qKgorICogRWVwcm9tUmVhZEJ5dGUgLSBSZWFkIGEgYnl0ZSBmcm9tIHRoZSBFVDEzMTAncyBFRVBST00KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICogQHVuQWRkcmVzczogdGhlIGFkZHJlc3MgZnJvbSB3aGljaCB0byByZWFkCisgKiBAcGJEYXRhOiBhIHBvaW50ZXIgdG8gYSBieXRlIGluIHdoaWNoIHRvIHN0b3JlIHRoZSB2YWx1ZSBvZiB0aGUgcmVhZAorICogQHVuRWVwcm9uSWQ6IHRoZSBJRCBvZiB0aGUgRUVQUk9NCisgKiBAdW5BZGRyZXNzaW5nTW9kZTogaG93IHRoZSBFRVBST00gaXMgdG8gYmUgYWNjZXNzZWQKKyAqCisgKiBSZXR1cm5zIFNVQ0NFU1Mgb3IgRkFJTFVSRQorICovCitpbnQzMl90IEVlcHJvbVJlYWRCeXRlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIsIHVpbnQzMl90IHVuQWRkcmVzcywKKwkJICAgICAgIHVpbnQ4X3QgKnBiRGF0YSwgdWludDMyX3QgdW5FZXByb21JZCwKKwkJICAgICAgIHVpbnQzMl90IHVuQWRkcmVzc2luZ01vZGUpCit7CisgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gcEFkYXB0ZXItPnBkZXY7CisJaW50MzJfdCBuSW5kZXg7CisJaW50MzJfdCBuRXJyb3IgPSAwOworCXVpbnQ4X3QgYkNvbnRyb2w7CisJdWludDhfdCBiU3RhdHVzID0gMDsKKwl1aW50MzJfdCB1bkR3b3JkMSA9IDA7CisKKwkvKgorCSAqIFRoZSBmb2xsb3dpbmcgZXhjZXJwdCBpcyBmcm9tICJTZXJpYWwgRUVQUk9NIEhXIERlc2lnbgorCSAqIFNwZWNpZmljYXRpb24iIFZlcnNpb24gMC45MiAoOS8yMC8yMDA0KToKKwkgKgorCSAqIFNpbmdsZSBCeXRlIFJlYWRzCisJICoKKwkgKiBBIHNpbmdsZSBieXRlIHJlYWQgaXMgc2ltaWxhciB0byB0aGUgc2luZ2xlIGJ5dGUgd3JpdGUsIHdpdGggdGhlCisJICogZXhjZXB0aW9uIG9mIHRoZSBkYXRhIGZsb3c6CisJICoKKwkgKiAxLiBDaGVjayBMQkNJRiBTdGF0dXMgUmVnaXN0ZXIgZm9yIGJpdHMgNiAmIDM6MiBhbGwgZXF1YWwgdG8gMCBhbmQKKwkgKiAgICBiaXRzIDcsMTowIGJvdGggZXF1YWwgdG8gMSwgYXQgbGVhc3Qgb25jZSBhZnRlciByZXNldC4KKwkgKiAgICBTdWJzZXF1ZW50IG9wZXJhdGlvbnMgbmVlZCBvbmx5IHRvIGNoZWNrIHRoYXQgYml0cyAxOjAgYXJlIGVxdWFsCisJICogICAgdG8gMSBwcmlvciB0byBzdGFydGluZyBhIHNpbmdsZSBieXRlIHJlYWQuCisJICoKKwkgKiAyLiBXcml0ZSB0byB0aGUgTEJDSUYgQ29udHJvbCBSZWdpc3RlcjogIGJpdCA3PTEsIGJpdCA2PTAsIGJpdCAzPTAsCisJICogICAgYW5kIGJpdHMgMTowIGJvdGggPTAuICBCaXQgNSBzaG91bGQgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgdHlwZQorCSAqICAgIG9mIEVFUFJPTSBiZWluZyBhY2Nlc3NlZCAoMT10d28gYnl0ZSBhZGRyZXNzaW5nLCAwPW9uZSBieXRlCisJICogICAgYWRkcmVzc2luZykuCisJICoKKwkgKiAzLiBXcml0ZSB0aGUgYWRkcmVzcyB0byB0aGUgTEJDSUYgQWRkcmVzcyBSZWdpc3RlciAoSTJDIHJlYWQgd2lsbAorCSAqICAgIGJlZ2luKS4KKwkgKgorCSAqIDQuIE1vbml0b3IgYml0IDAgb2YgdGhlIExCQ0lGIFN0YXR1cyBSZWdpc3Rlci4gIFdoZW4gPTEsIEkyQyByZWFkCisJICogICAgaXMgY29tcGxldGUuIChpZiBiaXQgMSA9MSBhbmQgYml0IDAgc3RheXMgPTAsIGEgaGFyZHdhcmUgZmFpbHVyZQorCSAqICAgIGhhcyBvY2N1cnJlZCkuCisJICoKKwkgKiA1LiBDaGVjayBiaXQgMiBvZiB0aGUgTEJDSUYgU3RhdHVzIFJlZ2lzdGVyLiAgSWYgPTEsIHRoZW4gYW4gZXJyb3IKKwkgKiAgICBoYXMgb2NjdXJyZWQuICBUaGUgZGF0YSB0aGF0IGhhcyBiZWVuIHJldHVybmVkIGZyb20gdGhlIFBIWSBtYXkKKwkgKiAgICBiZSBpbnZhbGlkLgorCSAqCisJICogNi4gUmVnYXJkbGVzcyBvZiBlcnJvciBzdGF0dXMsIHJlYWQgZGF0YSBieXRlIGZyb20gTEJDSUYgRGF0YQorCSAqICAgIFJlZ2lzdGVyLiAgSWYgYW5vdGhlciBieXRlIGlzIHJlcXVpcmVkLCBnbyB0byBzdGVwIDEuCisJICovCisKKwkvKiBTdGVwIDE6ICovCisJZm9yIChuSW5kZXggPSAwOyBuSW5kZXggPCBNQVhfTlVNX1JFR0lTVEVSX1BPTExTOyBuSW5kZXgrKykgeworCQkvKiBSZWFkIHJlZ2lzdGVycyBncm91cGVkIGluIERXT1JEMSAqLworCQlpZiAocGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIExCQ0lGX0RXT1JEMV9HUk9VUF9PRkZTRVQsCisJCQkJCSAgJnVuRHdvcmQxKSkgeworCQkJbkVycm9yID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJYlN0YXR1cyA9IEVYVFJBQ1RfU1RBVFVTX1JFR0lTVEVSKHVuRHdvcmQxKTsKKworCQlpZiAoYlN0YXR1cyAmIExCQ0lGX1NUQVRVU19QSFlfUVVFVUVfQVZBSUwgJiYKKwkJICAgIGJTdGF0dXMgJiBMQkNJRl9TVEFUVVNfSTJDX0lETEUpIHsKKwkJCS8qIGJpdHMgMTowIGFyZSBlcXVhbCB0byAxICovCisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChuRXJyb3IgfHwgKG5JbmRleCA+PSBNQVhfTlVNX1JFR0lTVEVSX1BPTExTKSkgeworCQlyZXR1cm4gRkFJTFVSRTsKKwl9CisKKwkvKiBTdGVwIDI6ICovCisJYkNvbnRyb2wgPSAwOworCWJDb250cm9sIHw9IExCQ0lGX0NPTlRST0xfTEJDSUZfRU5BQkxFOworCisJaWYgKHVuQWRkcmVzc2luZ01vZGUgPT0gRFVBTF9CWVRFKSB7CisJCWJDb250cm9sIHw9IExCQ0lGX0NPTlRST0xfVFdPX0JZVEVfQUREUjsKKwl9CisKKwlpZiAocGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBkZXYsIExCQ0lGX0NPTlRST0xfUkVHSVNURVJfT0ZGU0VULAorCQkJCSAgYkNvbnRyb2wpKSB7CisJCXJldHVybiBGQUlMVVJFOworCX0KKworCS8qIFN0ZXAgMzogKi8KKwl1bkFkZHJlc3MgfD0gKHVuQWRkcmVzc2luZ01vZGUgPT0gRFVBTF9CWVRFKSA/CisJICAgICh1bkVlcHJvbUlkIDw8IDE2KSA6ICh1bkVlcHJvbUlkIDw8IDgpOworCisJaWYgKHBjaV93cml0ZV9jb25maWdfZHdvcmQocGRldiwgTEJDSUZfQUREUkVTU19SRUdJU1RFUl9PRkZTRVQsCisJCQkJICAgdW5BZGRyZXNzKSkgeworCQlyZXR1cm4gRkFJTFVSRTsKKwl9CisKKwkvKiBTdGVwIDQ6ICovCisJZm9yIChuSW5kZXggPSAwOyBuSW5kZXggPCBNQVhfTlVNX1JFR0lTVEVSX1BPTExTOyBuSW5kZXgrKykgeworCQkvKiBSZWFkIHJlZ2lzdGVycyBncm91cGVkIGluIERXT1JEMSAqLworCQlpZiAocGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIExCQ0lGX0RXT1JEMV9HUk9VUF9PRkZTRVQsCisJCQkJCSAgJnVuRHdvcmQxKSkgeworCQkJbkVycm9yID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJYlN0YXR1cyA9IEVYVFJBQ1RfU1RBVFVTX1JFR0lTVEVSKHVuRHdvcmQxKTsKKworCQlpZiAoYlN0YXR1cyAmIExCQ0lGX1NUQVRVU19QSFlfUVVFVUVfQVZBSUwKKwkJICAgICYmIGJTdGF0dXMgJiBMQkNJRl9TVEFUVVNfSTJDX0lETEUpIHsKKwkJCS8qIEkyQyByZWFkIGNvbXBsZXRlICovCisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChuRXJyb3IgfHwgKG5JbmRleCA+PSBNQVhfTlVNX1JFR0lTVEVSX1BPTExTKSkgeworCQlyZXR1cm4gRkFJTFVSRTsKKwl9CisKKwkvKiBTdGVwIDY6ICovCisJKnBiRGF0YSA9IEVYVFJBQ1RfREFUQV9SRUdJU1RFUih1bkR3b3JkMSk7CisKKwlyZXR1cm4gKGJTdGF0dXMgJiBMQkNJRl9TVEFUVVNfQUNLX0VSUk9SKSA/IEZBSUxVUkUgOiBTVUNDRVNTOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfZWVwcm9tLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9lZXByb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjZmOGFkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfZWVwcm9tLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfZWVwcm9tLmggLSBEZWZpbmVzLCBzdHJ1Y3RzLCBlbnVtcywgcHJvdG90eXBlcywgZXRjLiB1c2VkIGZvciBFRVBST00KKyAqICAgICAgICAgICAgICAgICAgIGFjY2VzcyByb3V0aW5lcworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU09GVFdBUkUgTElDRU5TRQorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAorICogd2hpY2ggeW91IHNob3VsZCByZWFkIGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgdGhlIHNvZnR3YXJlLiAgVXNpbmcgdGhpcworICogc29mdHdhcmUgaW5kaWNhdGVzIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIElmIHlvdSBkbworICogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgorICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb25zLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGFzIGNvbW1lbnRzIGluIHRoZSBjb2RlIGFzCisgKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIERpc2NsYWltZXIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIJNBUyBJU5QgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTkZSSU5HRU1FTlQgQU5EIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKKyAqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCisgKiBSSVNLLiBJTiBOTyBFVkVOVCBTSEFMTCBBR0VSRSBTWVNURU1TIElOQy4gT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fRVQxMzEwX0VFUFJPTV9IX18KKyNkZWZpbmUgX19FVDEzMTBfRUVQUk9NX0hfXworCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisKKyNpZm5kZWYgU1VDQ0VTUworI2RlZmluZSBTVUNDRVNTCQkwCisjZGVmaW5lIEZBSUxVUkUJCTEKKyNlbmRpZgorCisjaWZuZGVmIFJFQUQKKyNkZWZpbmUgUkVBRAkJMAorI2RlZmluZSBXUklURQkJMQorI2VuZGlmCisKKyNpZm5kZWYgU0lOR0xFX0JZVEUKKyNkZWZpbmUgU0lOR0xFX0JZVEUJMAorI2RlZmluZSBEVUFMX0JZVEUJMQorI2VuZGlmCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBldDEzMXhfYWRhcHRlcjsKKworaW50MzJfdCBFZXByb21Xcml0ZUJ5dGUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgdW5BZGRyZXNzLAorCQkJdTggYkRhdGEsIHUzMiB1bkVlcHJvbUlkLAorCQkJdTMyIHVuQWRkcmVzc2luZ01vZGUpOworaW50MzJfdCBFZXByb21SZWFkQnl0ZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB1bkFkZHJlc3MsCisJCSAgICAgICB1OCAqcGJEYXRhLCB1MzIgdW5FZXByb21JZCwKKwkJICAgICAgIHUzMiB1bkFkZHJlc3NpbmdNb2RlKTsKKworI2VuZGlmIC8qIF9FVDEzMTBfRUVQUk9NX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9qYWdjb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9qYWdjb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzYjMwZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2phZ2NvcmUuYwpAQCAtMCwwICsxLDIyMCBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfamFnY29yZS5jIC0gQWxsIGNvZGUgcGVydGFpbmluZyB0byB0aGUgRVQxMzAxL0VUMTMxeCdzIEpBR2NvcmUKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKworI2luY2x1ZGUgImV0MTMxMF9waHkuaCIKKyNpbmNsdWRlICJldDEzMTBfcG0uaCIKKyNpbmNsdWRlICJldDEzMTBfamFnY29yZS5oIgorCisjaW5jbHVkZSAiZXQxMzF4X2FkYXB0ZXIuaCIKKyNpbmNsdWRlICJldDEzMXhfaW5pdHBjaS5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKK2V4dGVybiBkYmdfaW5mb190ICpldDEzMXhfZGJnaW5mbzsKKyNlbmRpZiAvKiBDT05GSUdfRVQxMzFYX0RFQlVHICovCisKKy8qKgorICogQ29uZmlnR2xvYmFsUmVncyAtIFVzZWQgdG8gY29uZmlndXJlIHRoZSBnbG9iYWwgcmVnaXN0ZXJzIG9uIHRoZSBKQUdDb3JlCisgKiBAcEFkcGF0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgQ29uZmlnR2xvYmFsUmVncyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXN0cnVjdCBfR0xPQkFMX3QgX19pb21lbSAqcEdibCA9ICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCWlmIChwQWRhcHRlci0+UmVnaXN0cnlQaHlMb29wYmsgPT0gZmFsc2UpIHsKKwkJaWYgKHBBZGFwdGVyLT5SZWdpc3RyeUp1bWJvUGFja2V0IDwgMjA0OCkgeworCQkJLyogVHggLyBSeERNQSBhbmQgVHgvUnggTUFDIGludGVyZmFjZXMgaGF2ZSBhIDFrIHdvcmQKKwkJCSAqIGJsb2NrIG9mIFJBTSB0aGF0IHRoZSBkcml2ZXIgY2FuIHNwbGl0IGJldHdlZW4gVHgKKwkJCSAqIGFuZCBSeCBhcyBpdCBkZXNpcmVzLiAgT3VyIGRlZmF1bHQgaXMgdG8gc3BsaXQgaXQKKwkJCSAqIDUwLzUwOgorCQkJICovCisJCQl3cml0ZWwoMCwgJnBHYmwtPnJ4cV9zdGFydF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbChwQWRhcHRlci0+UmVnaXN0cnlSeE1lbUVuZCwKKwkJCSAgICAgICAmcEdibC0+cnhxX2VuZF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbChwQWRhcHRlci0+UmVnaXN0cnlSeE1lbUVuZCArIDEsCisJCQkgICAgICAgJnBHYmwtPnR4cV9zdGFydF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbChJTlRFUk5BTF9NRU1fU0laRSAtIDEsCisJCQkgICAgICAgJnBHYmwtPnR4cV9lbmRfYWRkci52YWx1ZSk7CisJCX0gZWxzZSBpZiAocEFkYXB0ZXItPlJlZ2lzdHJ5SnVtYm9QYWNrZXQgPCA4MTkyKSB7CisJCQkvKiBGb3IganVtYm8gcGFja2V0cyA+IDJrIGJ1dCA8IDhrLCBzcGxpdCA1MC01MC4gKi8KKwkJCXdyaXRlbCgwLCAmcEdibC0+cnhxX3N0YXJ0X2FkZHIudmFsdWUpOworCQkJd3JpdGVsKElOVEVSTkFMX01FTV9SWF9PRkZTRVQsCisJCQkgICAgICAgJnBHYmwtPnJ4cV9lbmRfYWRkci52YWx1ZSk7CisJCQl3cml0ZWwoSU5URVJOQUxfTUVNX1JYX09GRlNFVCArIDEsCisJCQkgICAgICAgJnBHYmwtPnR4cV9zdGFydF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbChJTlRFUk5BTF9NRU1fU0laRSAtIDEsCisJCQkgICAgICAgJnBHYmwtPnR4cV9lbmRfYWRkci52YWx1ZSk7CisJCX0gZWxzZSB7CisJCQkvKiA5MjE2IGlzIHRoZSBvbmx5IHBhY2tldCBzaXplIGdyZWF0ZXIgdGhhbiA4ayB0aGF0CisJCQkgKiBpcyBhdmFpbGFibGUuIFRoZSBUeCBidWZmZXIgaGFzIHRvIGJlIGJpZyBlbm91Z2gKKwkJCSAqIGZvciBvbmUgd2hvbGUgcGFja2V0IG9uIHRoZSBUeCBzaWRlLiBXZSdsbCBtYWtlCisJCQkgKiB0aGUgVHggOTQwOCwgYW5kIGdpdmUgdGhlIHJlc3QgdG8gUngKKwkJCSAqLworCQkJd3JpdGVsKDB4MDAwMCwgJnBHYmwtPnJ4cV9zdGFydF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbCgweDAxYjMsICZwR2JsLT5yeHFfZW5kX2FkZHIudmFsdWUpOworCQkJd3JpdGVsKDB4MDFiNCwgJnBHYmwtPnR4cV9zdGFydF9hZGRyLnZhbHVlKTsKKwkJCXdyaXRlbChJTlRFUk5BTF9NRU1fU0laRSAtIDEsCisJCQkgICAgICAgJnBHYmwtPnR4cV9lbmRfYWRkci52YWx1ZSk7CisJCX0KKworCQkvKiBJbml0aWFsaXplIHRoZSBsb29wYmFjayByZWdpc3Rlci4gRGlzYWJsZSBhbGwgbG9vcGJhY2tzLiAqLworCQl3cml0ZWwoMCwgJnBHYmwtPmxvb3BiYWNrLnZhbHVlKTsKKwl9IGVsc2UgeworCQkvKiBGb3IgUEhZIExpbmUgbG9vcGJhY2ssIHRoZSBtZW1vcnkgaXMgY29uZmlndXJlZCBhcyBpZiBUeAorCQkgKiBhbmQgUnggYm90aCBoYXZlIGFsbCB0aGUgbWVtb3J5LiAgVGhpcyBpcyBiZWNhdXNlIHRoZQorCQkgKiBSeE1BQyB3aWxsIHdyaXRlIGRhdGEgaW50byB0aGUgc3BhY2UsIGFuZCB0aGUgVHhNQUMgd2lsbAorCQkgKiByZWFkIGl0IG91dC4KKwkJICovCisJCXdyaXRlbCgwLCAmcEdibC0+cnhxX3N0YXJ0X2FkZHIudmFsdWUpOworCQl3cml0ZWwoSU5URVJOQUxfTUVNX1NJWkUgLSAxLCAmcEdibC0+cnhxX2VuZF9hZGRyLnZhbHVlKTsKKwkJd3JpdGVsKDAsICZwR2JsLT50eHFfc3RhcnRfYWRkci52YWx1ZSk7CisJCXdyaXRlbChJTlRFUk5BTF9NRU1fU0laRSAtIDEsICZwR2JsLT50eHFfZW5kX2FkZHIudmFsdWUpOworCisJCS8qIEluaXRpYWxpemUgdGhlIGxvb3BiYWNrIHJlZ2lzdGVyIChNQUMgbG9vcGJhY2spLiAqLworCQl3cml0ZWwoMSwgJnBHYmwtPmxvb3BiYWNrLnZhbHVlKTsKKwl9CisKKwkvKiBNU0kgUmVnaXN0ZXIgKi8KKwl3cml0ZWwoMCwgJnBHYmwtPm1zaV9jb25maWcudmFsdWUpOworCisJLyogQnkgZGVmYXVsdCwgZGlzYWJsZSB0aGUgd2F0Y2hkb2cgdGltZXIuICBJdCB3aWxsIGJlIGVuYWJsZWQgd2hlbgorCSAqIGEgcGFja2V0IGlzIHF1ZXVlZC4KKwkgKi8KKwl3cml0ZWwoMCwgJnBHYmwtPndhdGNoZG9nX3RpbWVyKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogQ29uZmlnTU1DUmVncyAtIFVzZWQgdG8gY29uZmlndXJlIHRoZSBtYWluIG1lbW9yeSByZWdpc3RlcnMgaW4gdGhlIEpBR0NvcmUKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBDb25maWdNTUNSZWdzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJTU1DX0NUUkxfdCBtbWNfY3RybCA9IHsgMCB9OworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIEFsbCB3ZSBuZWVkIHRvIGRvIGlzIGluaXRpYWxpemUgdGhlIE1lbW9yeSBDb250cm9sIFJlZ2lzdGVyICovCisJbW1jX2N0cmwuYml0cy5mb3JjZV9jZSA9IDB4MDsKKwltbWNfY3RybC5iaXRzLnJ4ZG1hX2Rpc2FibGUgPSAweDA7CisJbW1jX2N0cmwuYml0cy50eGRtYV9kaXNhYmxlID0gMHgwOworCW1tY19jdHJsLmJpdHMudHhtYWNfZGlzYWJsZSA9IDB4MDsKKwltbWNfY3RybC5iaXRzLnJ4bWFjX2Rpc2FibGUgPSAweDA7CisJbW1jX2N0cmwuYml0cy5hcmJfZGlzYWJsZSA9IDB4MDsKKwltbWNfY3RybC5iaXRzLm1tY19lbmFibGUgPSAweDE7CisKKwl3cml0ZWwobW1jX2N0cmwudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+bW1jLm1tY19jdHJsLnZhbHVlKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKK3ZvaWQgZXQxMzF4X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1aW50MzJfdCBNYXNrVmFsdWU7CisKKwkvKiBFbmFibGUgYWxsIGdsb2JhbCBpbnRlcnJ1cHRzICovCisJaWYgKChhZGFwdGVyLT5GbG93Q29udHJvbCA9PSBUeE9ubHkpIHx8IChhZGFwdGVyLT5GbG93Q29udHJvbCA9PSBCb3RoKSkgeworCQlNYXNrVmFsdWUgPSBJTlRfTUFTS19FTkFCTEU7CisJfSBlbHNlIHsKKwkJTWFza1ZhbHVlID0gSU5UX01BU0tfRU5BQkxFX05PX0ZMT1c7CisJfQorCisJaWYgKGFkYXB0ZXItPkRyaXZlck5vUGh5QWNjZXNzKSB7CisJCU1hc2tWYWx1ZSB8PSAweDEwMDAwOworCX0KKworCWFkYXB0ZXItPkNhY2hlZE1hc2tWYWx1ZS52YWx1ZSA9IE1hc2tWYWx1ZTsKKwl3cml0ZWwoTWFza1ZhbHVlLCAmYWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLmludF9tYXNrLnZhbHVlKTsKK30KKwordm9pZCBldDEzMXhfZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqIGFkYXB0ZXIpCit7CisJLyogRGlzYWJsZSBhbGwgZ2xvYmFsIGludGVycnVwdHMgKi8KKwlhZGFwdGVyLT5DYWNoZWRNYXNrVmFsdWUudmFsdWUgPSBJTlRfTUFTS19ESVNBQkxFOworCXdyaXRlbChJTlRfTUFTS19ESVNBQkxFLCAmYWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLmludF9tYXNrLnZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2phZ2NvcmUuaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2phZ2NvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM4MjkzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfamFnY29yZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxMF9qYWdjb3JlLmggLSBEZWZpbmVzLCBzdHJ1Y3RzLCBlbnVtcywgcHJvdG90eXBlcywgZXRjLiBwZXJ0YWluaW5nIHRvCisgKiAgICAgICAgICAgICAgICAgICAgdGhlIEpBR0NvcmUKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxMF9KQUdDT1JFX0hfXworI2RlZmluZSBfX0VUMTMxMF9KQUdDT1JFX0hfXworCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisKKworI2RlZmluZSBJTlRFUk5BTF9NRU1fU0laRSAgICAgICAweDQwMAkvLzEwMjQgb2YgaW50ZXJuYWwgbWVtb3J5CisjZGVmaW5lIElOVEVSTkFMX01FTV9SWF9PRkZTRVQgIDB4MUZGCS8vNTAlICAgVHgsIDUwJSAgIFJ4CisKKyNkZWZpbmUgUkVHU19NQVhfQVJSQVkgICAgICAgICAgNDA5NgorCisvKgorICogRm9yIGludGVycnVwdHMsIG5vcm1hbCBydW5uaW5nIGlzOgorICogICAgICAgcnhkbWFfeGZyX2RvbmUsIHBoeV9pbnRlcnJ1cHQsIG1hY19zdGF0X2ludGVycnVwdCwKKyAqICAgICAgIHdhdGNoZG9nX2ludGVycnVwdCAmIHR4ZG1hX3hmZXJfZG9uZQorICoKKyAqIEluIGJvdGggY2FzZXMsIHdoZW4gZmxvdyBjb250cm9sIGlzIGVuYWJsZWQgZm9yIGVpdGhlciBUeCBvciBiaS1kaXJlY3Rpb24sCisgKiB3ZSBhZGRpdGlvbmFsIGVuYWJsZSByeF9mYnIwX2xvdyBhbmQgcnhfZmJyMV9sb3csIHNvIHdlIGtub3cgd2hlbiB0aGUKKyAqIGJ1ZmZlciByaW5ncyBhcmUgcnVubmluZyBsb3cuCisgKi8KKyNkZWZpbmUgSU5UX01BU0tfRElTQUJMRSAgICAgICAgICAgIDB4ZmZmZmZmZmYKKworLy8gTk9URTogTWFza2luZyBvdXQgTUFDX1NUQVQgSW50ZXJydXB0IGZvciBub3cuLi4KKy8vI2RlZmluZSBJTlRfTUFTS19FTkFCTEUgICAgICAgICAgICAgMHhmZmY2YmYxNworLy8jZGVmaW5lIElOVF9NQVNLX0VOQUJMRV9OT19GTE9XICAgICAweGZmZjZiZmQ3CisjZGVmaW5lIElOVF9NQVNLX0VOQUJMRSAgICAgICAgICAgICAweGZmZmViZjE3CisjZGVmaW5lIElOVF9NQVNLX0VOQUJMRV9OT19GTE9XICAgICAweGZmZmViZmQ3CisKKy8qIERBVEEgU1RSVUNUVVJFUyBGT1IgRElSRUNUIFJFR0lTVEVSIEFDQ0VTUyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisJdTggYlJlYWRXcml0ZTsKKwl1MzIgblJlZ0NvdW50OworCXUzMiBuRGF0YVtSRUdTX01BWF9BUlJBWV07CisJdTMyIG5PZmZzZXRzW1JFR1NfTUFYX0FSUkFZXTsKK30gSkFHQ09SRV9BQ0NFU1NfUkVHUywgKlBKQUdDT1JFX0FDQ0VTU19SRUdTOworCit0eXBlZGVmIHN0cnVjdCB7CisJdTggYlJlYWRXcml0ZTsKKwl1MzIgbkRhdGFXaWR0aDsKKwl1MzIgblJlZ0NvdW50OworCXUzMiBuT2Zmc2V0c1tSRUdTX01BWF9BUlJBWV07CisJdTMyIG5EYXRhW1JFR1NfTUFYX0FSUkFZXTsKK30gUENJX0NGR19TUEFDRV9SRUdTLCAqUFBDSV9DRkdfU1BBQ0VfUkVHUzsKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZSAqLworc3RydWN0IGV0MTMxeF9hZGFwdGVyOworCit2b2lkIENvbmZpZ0dsb2JhbFJlZ3Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcik7Cit2b2lkIENvbmZpZ01NQ1JlZ3Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcik7Cit2b2lkIGV0MTMxeF9lbmFibGVfaW50ZXJydXB0cyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBldDEzMXhfZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKKyNlbmRpZiAvKiBfX0VUMTMxMF9KQUdDT1JFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfbWFjLmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9tYWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTI0OTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfbWFjLmMKQEAgLTAsMCArMSw3OTIgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzEwX21hYy5jIC0gQWxsIGNvZGUgYW5kIHJvdXRpbmVzIHBlcnRhaW5pbmcgdG8gdGhlIE1BQworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU09GVFdBUkUgTElDRU5TRQorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAorICogd2hpY2ggeW91IHNob3VsZCByZWFkIGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgdGhlIHNvZnR3YXJlLiAgVXNpbmcgdGhpcworICogc29mdHdhcmUgaW5kaWNhdGVzIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIElmIHlvdSBkbworICogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgorICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb25zLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGFzIGNvbW1lbnRzIGluIHRoZSBjb2RlIGFzCisgKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIERpc2NsYWltZXIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIJNBUyBJU5QgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTkZSSU5HRU1FTlQgQU5EIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKKyAqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCisgKiBSSVNLLiBJTiBOTyBFVkVOVCBTSEFMTCBBR0VSRSBTWVNURU1TIElOQy4gT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiZXQxMzF4X3ZlcnNpb24uaCIKKyNpbmNsdWRlICJldDEzMXhfZGVidWcuaCIKKyNpbmNsdWRlICJldDEzMXhfZGVmcy5oIgorCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisKKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3B0cmFjZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvaW4uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxhc20vYml0b3BzLmg+CisKKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyYzMyLmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKyNpbmNsdWRlICJldDEzMTBfbWFjLmgiCisKKyNpbmNsdWRlICJldDEzMXhfYWRhcHRlci5oIgorI2luY2x1ZGUgImV0MTMxeF9pbml0cGNpLmgiCisKKy8qIERhdGEgZm9yIGRlYnVnZ2luZyBmYWNpbGl0aWVzICovCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworZXh0ZXJuIGRiZ19pbmZvX3QgKmV0MTMxeF9kYmdpbmZvOworI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworLyoqCisgKiBDb25maWdNYWNSZWdzMSAtIEluaXRpYWxpemUgdGhlIGZpcnN0IHBhcnQgb2YgTUFDIHJlZ3MKKyAqIEBwQWRwYXRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBDb25maWdNQUNSZWdzMShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXN0cnVjdCBfTUFDX3QgX19pb21lbSAqcE1hYyA9ICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjOworCU1BQ19TVEFUSU9OX0FERFIxX3Qgc3RhdGlvbjE7CisJTUFDX1NUQVRJT05fQUREUjJfdCBzdGF0aW9uMjsKKwlNQUNfSVBHX3QgaXBnOworCU1BQ19IRkRQX3QgaGZkcDsKKwlNSUlfTUdNVF9DRkdfdCBtaWlfbWdtdF9jZmc7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogRmlyc3Qgd2UgbmVlZCB0byByZXNldCBldmVyeXRoaW5nLiAgV3JpdGUgdG8gTUFDIGNvbmZpZ3VyYXRpb24KKwkgKiByZWdpc3RlciAxIHRvIHBlcmZvcm0gcmVzZXQuCisJICovCisJd3JpdGVsKDB4QzAwRjAwMDAsICZwTWFjLT5jZmcxLnZhbHVlKTsKKworCS8qIE5leHQgbGV0cyBjb25maWd1cmUgdGhlIE1BQyBJbnRlci1wYWNrZXQgZ2FwIHJlZ2lzdGVyICovCisJaXBnLmJpdHMubm9uX0IyQl9pcGdfMSA9IDB4Mzg7CQkvLyA1OGQKKwlpcGcuYml0cy5ub25fQjJCX2lwZ18yID0gMHg1ODsJCS8vIDg4ZAorCWlwZy5iaXRzLm1pbl9pZmdfZW5mb3JjZSA9IDB4NTA7CS8vIDgwZAorCWlwZy5iaXRzLkIyQl9pcGcgPSAweDYwOwkJLy8gOTZkCisJd3JpdGVsKGlwZy52YWx1ZSwgJnBNYWMtPmlwZy52YWx1ZSk7CisKKwkvKiBOZXh0IGxldHMgY29uZmlndXJlIHRoZSBNQUMgSGFsZiBEdXBsZXggcmVnaXN0ZXIgKi8KKwloZmRwLmJpdHMuYWx0X2JlYl90cnVuYyA9IDB4QTsKKwloZmRwLmJpdHMuYWx0X2JlYl9lbmFibGUgPSAweDA7CisJaGZkcC5iaXRzLmJwX25vX2JhY2tvZmYgPSAweDA7CisJaGZkcC5iaXRzLm5vX2JhY2tvZmYgPSAweDA7CisJaGZkcC5iaXRzLmV4Y2Vzc19kZWZlciA9IDB4MTsKKwloZmRwLmJpdHMucmV4bWl0X21heCA9IDB4RjsKKwloZmRwLmJpdHMuY29sbF93aW5kb3cgPSAweDM3OwkJLy8gNTVkCisJd3JpdGVsKGhmZHAudmFsdWUsICZwTWFjLT5oZmRwLnZhbHVlKTsKKworCS8qIE5leHQgbGV0cyBjb25maWd1cmUgdGhlIE1BQyBJbnRlcmZhY2UgQ29udHJvbCByZWdpc3RlciAqLworCXdyaXRlbCgwLCAmcE1hYy0+aWZfY3RybC52YWx1ZSk7CisKKwkvKiBMZXQncyBtb3ZlIG9uIHRvIHNldHRpbmcgdXAgdGhlIG1paSBtYW5hZ21lbnQgY29uZmlndXJhdGlvbiAqLworCW1paV9tZ210X2NmZy5iaXRzLnJlc2V0X21paV9tZ210ID0gMDsKKwltaWlfbWdtdF9jZmcuYml0cy5zY2FuX2F1dG9faW5jcmVtdCA9IDA7CisJbWlpX21nbXRfY2ZnLmJpdHMucHJlYW1ibGVfc3VwcHJlc3MgPSAwOworCW1paV9tZ210X2NmZy5iaXRzLm1nbXRfY2xrX3Jlc2V0ID0gMHg3OworCXdyaXRlbChtaWlfbWdtdF9jZmcudmFsdWUsICZwTWFjLT5taWlfbWdtdF9jZmcudmFsdWUpOworCisJLyogTmV4dCBsZXRzIGNvbmZpZ3VyZSB0aGUgTUFDIFN0YXRpb24gQWRkcmVzcyByZWdpc3Rlci4gIFRoZXNlCisJICogdmFsdWVzIGFyZSByZWFkIGZyb20gdGhlIEVFUFJPTSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHN0b3JlZAorCSAqIGluIHRoZSBhZGFwdGVyIHN0cnVjdHVyZS4gIFdlIHdyaXRlIHdoYXQgaXMgc3RvcmVkIGluIHRoZSBhZGFwdGVyCisJICogc3RydWN0dXJlIHRvIHRoZSBNQUMgU3RhdGlvbiBBZGRyZXNzIHJlZ2lzdGVycyBoaWdoIGFuZCBsb3cuICBUaGlzCisJICogc3RhdGlvbiBhZGRyZXNzIGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgYW5kIGNoZWNraW5nIHBhdXNlIGNvbnRyb2wKKwkgKiBwYWNrZXRzLgorCSAqLworCXN0YXRpb24yLmJpdHMuT2N0ZXQxID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzBdOworCXN0YXRpb24yLmJpdHMuT2N0ZXQyID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzFdOworCXN0YXRpb24xLmJpdHMuT2N0ZXQzID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzJdOworCXN0YXRpb24xLmJpdHMuT2N0ZXQ0ID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzNdOworCXN0YXRpb24xLmJpdHMuT2N0ZXQ1ID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzRdOworCXN0YXRpb24xLmJpdHMuT2N0ZXQ2ID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzVdOworCXdyaXRlbChzdGF0aW9uMS52YWx1ZSwgJnBNYWMtPnN0YXRpb25fYWRkcl8xLnZhbHVlKTsKKwl3cml0ZWwoc3RhdGlvbjIudmFsdWUsICZwTWFjLT5zdGF0aW9uX2FkZHJfMi52YWx1ZSk7CisKKwkvKiBNYXggZXRoZXJuZXQgcGFja2V0IGluIGJ5dGVzIHRoYXQgd2lsbCBwYXNzZWQgYnkgdGhlIG1hYyB3aXRob3V0CisJICogYmVpbmcgdHJ1bmNhdGVkLiAgQWxsb3cgdGhlIE1BQyB0byBwYXNzIDQgbW9yZSB0aGFuIG91ciBtYXggcGFja2V0CisJICogc2l6ZS4gIFRoaXMgaXMgNCBmb3IgdGhlIEV0aGVybmV0IENSQy4KKwkgKgorCSAqIFBhY2tldHMgbGFyZ2VyIHRoYW4gKFJlZ2lzdHJ5SnVtYm9QYWNrZXQpIHRoYXQgZG8gbm90IGNvbnRhaW4gYQorCSAqIFZMQU4gSUQgd2lsbCBiZSBkcm9wcGVkIGJ5IHRoZSBSeCBmdW5jdGlvbi4KKwkgKi8KKwl3cml0ZWwocEFkYXB0ZXItPlJlZ2lzdHJ5SnVtYm9QYWNrZXQgKyA0LCAmcE1hYy0+bWF4X2ZtX2xlbi52YWx1ZSk7CisKKwkvKiBjbGVhciBvdXQgTUFDIGNvbmZpZyByZXNldCAqLworCXdyaXRlbCgwLCAmcE1hYy0+Y2ZnMS52YWx1ZSk7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIENvbmZpZ01hY1JlZ3MyIC0gSW5pdGlhbGl6ZSB0aGUgc2Vjb25kIHBhcnQgb2YgTUFDIHJlZ3MKKyAqIEBwQWRwYXRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBDb25maWdNQUNSZWdzMihzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCWludDMyX3QgZGVsYXkgPSAwOworCXN0cnVjdCBfTUFDX3QgX19pb21lbSAqcE1hYyA9ICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjOworCU1BQ19DRkcxX3QgY2ZnMTsKKwlNQUNfQ0ZHMl90IGNmZzI7CisJTUFDX0lGX0NUUkxfdCBpZmN0cmw7CisJVFhNQUNfQ1RMX3QgY3RsOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCWN0bC52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhtYWMuY3RsLnZhbHVlKTsKKwljZmcxLnZhbHVlID0gcmVhZGwoJnBNYWMtPmNmZzEudmFsdWUpOworCWNmZzIudmFsdWUgPSByZWFkbCgmcE1hYy0+Y2ZnMi52YWx1ZSk7CisJaWZjdHJsLnZhbHVlID0gcmVhZGwoJnBNYWMtPmlmX2N0cmwudmFsdWUpOworCisJaWYgKHBBZGFwdGVyLT51aUxpbmtTcGVlZCA9PSBUUlVFUEhZX1NQRUVEXzEwMDBNQlBTKSB7CisJCWNmZzIuYml0cy5pZl9tb2RlID0gMHgyOworCQlpZmN0cmwuYml0cy5waHlfbW9kZSA9IDB4MDsKKwl9IGVsc2UgeworCQljZmcyLmJpdHMuaWZfbW9kZSA9IDB4MTsKKwkJaWZjdHJsLmJpdHMucGh5X21vZGUgPSAweDE7CisJfQorCisJLyogV2UgbmVlZCB0byBlbmFibGUgUngvVHggKi8KKwljZmcxLmJpdHMucnhfZW5hYmxlID0gMHgxOworCWNmZzEuYml0cy50eF9lbmFibGUgPSAweDE7CisKKwkvKiBTZXQgdXAgZmxvdyBjb250cm9sICovCisJY2ZnMS5iaXRzLnR4X2Zsb3cgPSAweDE7CisKKwlpZiAoKHBBZGFwdGVyLT5GbG93Q29udHJvbCA9PSBSeE9ubHkpIHx8CisJICAgIChwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPT0gQm90aCkpIHsKKwkJY2ZnMS5iaXRzLnJ4X2Zsb3cgPSAweDE7CisJfSBlbHNlIHsKKwkJY2ZnMS5iaXRzLnJ4X2Zsb3cgPSAweDA7CisJfQorCisJLyogSW5pdGlhbGl6ZSBsb29wIGJhY2sgdG8gb2ZmICovCisJY2ZnMS5iaXRzLmxvb3BfYmFjayA9IDA7CisKKwl3cml0ZWwoY2ZnMS52YWx1ZSwgJnBNYWMtPmNmZzEudmFsdWUpOworCisJLyogTm93IHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTUFDIENvbmZpZ3VyYXRpb24gMiByZWdpc3RlciAqLworCWNmZzIuYml0cy5wcmVhbWJsZV9sZW4gPSAweDc7CisJY2ZnMi5iaXRzLmh1Z2VfZnJhbWUgPSAweDA7CisJLyogTEVOR1RIIEZJRUxEIENIRUNLSU5HIGJpdDQ6IFNldCB0aGlzIGJpdCB0byBjYXVzZSB0aGUgTUFDIHRvIGNoZWNrCisJICogdGhlIGZyYW1lJ3MgbGVuZ3RoIGZpZWxkIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBhY3R1YWwgZGF0YQorCSAqIGZpZWxkIGxlbmd0aC4gQ2xlYXIgdGhpcyBiaXQgaWYgbm8gbGVuZ3RoIGZpZWxkIGNoZWNraW5nIGlzCisJICogZGVzaXJlZC4gSXRzIGRlZmF1bHQgaXMgMC4KKwkgKi8KKwljZmcyLmJpdHMubGVuX2NoZWNrID0gMHgxOworCisJaWYgKHBBZGFwdGVyLT5SZWdpc3RyeVBoeUxvb3BiayA9PSBmYWxzZSkgeworCQljZmcyLmJpdHMucGFkX2NyYyA9IDB4MTsKKwkJY2ZnMi5iaXRzLmNyY19lbmFibGUgPSAweDE7CisJfSBlbHNlIHsKKwkJY2ZnMi5iaXRzLnBhZF9jcmMgPSAwOworCQljZmcyLmJpdHMuY3JjX2VuYWJsZSA9IDA7CisJfQorCisJLyogMSAtIGZ1bGwgZHVwbGV4LCAwIC0gaGFsZi1kdXBsZXggKi8KKwljZmcyLmJpdHMuZnVsbF9kdXBsZXggPSBwQWRhcHRlci0+dWlEdXBsZXhNb2RlOworCWlmY3RybC5iaXRzLmdoZF9tb2RlID0gIXBBZGFwdGVyLT51aUR1cGxleE1vZGU7CisKKwl3cml0ZWwoaWZjdHJsLnZhbHVlLCAmcE1hYy0+aWZfY3RybC52YWx1ZSk7CisJd3JpdGVsKGNmZzIudmFsdWUsICZwTWFjLT5jZmcyLnZhbHVlKTsKKworCWRvIHsKKwkJdWRlbGF5KDEwKTsKKwkJZGVsYXkrKzsKKwkJY2ZnMS52YWx1ZSA9IHJlYWRsKCZwTWFjLT5jZmcxLnZhbHVlKTsKKwl9IHdoaWxlICgoIWNmZzEuYml0cy5zeW5jZF9yeF9lbiB8fAorCQkgICFjZmcxLmJpdHMuc3luY2RfdHhfZW4pICYmCisJCSBkZWxheSA8IDEwMCk7CisKKwlpZiAoZGVsYXkgPT0gMTAwKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIlN5bmNkIGJpdHMgZGlkIG5vdCByZXNwb25kIGNvcnJlY3RseSBjZmcxIHdvcmQgMHglMDh4XG4iLAorCQkJICBjZmcxLnZhbHVlKTsKKwl9CisKKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sCisJCSAgIlNwZWVkICVkLCBEdXAgJWQsIENGRzEgMHglMDh4LCBDRkcyIDB4JTA4eCwgaWZfY3RybCAweCUwOHhcbiIsCisJCSAgcEFkYXB0ZXItPnVpTGlua1NwZWVkLCBwQWRhcHRlci0+dWlEdXBsZXhNb2RlLAorCQkgIHJlYWRsKCZwTWFjLT5jZmcxLnZhbHVlKSwgcmVhZGwoJnBNYWMtPmNmZzIudmFsdWUpLAorCQkgIHJlYWRsKCZwTWFjLT5pZl9jdHJsLnZhbHVlKSk7CisKKwkvKiBFbmFibGUgVFhNQUMgKi8KKwljdGwuYml0cy50eG1hY19lbiA9IDB4MTsKKwljdGwuYml0cy5mY19kaXNhYmxlID0gMHgxOworCXdyaXRlbChjdGwudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhtYWMuY3RsLnZhbHVlKTsKKworCS8qIFJlYWR5IHRvIHN0YXJ0IHRoZSBSWERNQS9UWERNQSBlbmdpbmUgKi8KKwlpZiAoIU1QX1RFU1RfRkxBRyhwQWRhcHRlciwgZk1QX0FEQVBURVJfTE9XRVJfUE9XRVIpKSB7CisJCWV0MTMxeF9yeF9kbWFfZW5hYmxlKHBBZGFwdGVyKTsKKwkJZXQxMzF4X3R4X2RtYV9lbmFibGUocEFkYXB0ZXIpOworCX0gZWxzZSB7CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICJEaWRuJ3QgZW5hYmxlIFJ4L1R4IGR1ZSB0byBsb3ctcG93ZXIgbW9kZVxuIik7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKwordm9pZCBDb25maWdSeE1hY1JlZ3Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlzdHJ1Y3QgX1JYTUFDX3QgX19pb21lbSAqcFJ4TWFjID0gJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeG1hYzsKKwlSWE1BQ19XT0xfU0FfTE9fdCBzYV9sbzsKKwlSWE1BQ19XT0xfU0FfSElfdCBzYV9oaTsKKwlSWE1BQ19QRl9DVFJMX3QgcGZfY3RybCA9IHsgMCB9OworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIERpc2FibGUgdGhlIE1BQyB3aGlsZSBpdCBpcyBiZWluZyBjb25maWd1cmVkIChhbHNvIGRpc2FibGUgV09MKSAqLworCXdyaXRlbCgweDgsICZwUnhNYWMtPmN0cmwudmFsdWUpOworCisJLyogSW5pdGlhbGl6ZSBXT0wgdG8gZGlzYWJsZWQuICovCisJd3JpdGVsKDAsICZwUnhNYWMtPmNyYzAudmFsdWUpOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5jcmMxMi52YWx1ZSk7CisJd3JpdGVsKDAsICZwUnhNYWMtPmNyYzM0LnZhbHVlKTsKKworCS8qIFdlIG5lZWQgdG8gc2V0IHRoZSBXT0wgbWFzazAgLSBtYXNrNCBuZXh0LiAgV2UgaW5pdGlhbGl6ZSBpdCB0bworCSAqIGl0cyBkZWZhdWx0IFZhbHVlcyBvZiAweDAwMDAwMDAwIGJlY2F1c2UgdGhlcmUgYXJlIG5vdCBXT0wgbWFza3MKKwkgKiBhcyBvZiB0aGlzIHRpbWUuCisJICovCisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2swX3dvcmQwKTsKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazBfd29yZDEpOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrMF93b3JkMik7CisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2swX3dvcmQzKTsKKworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrMV93b3JkMCk7CisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2sxX3dvcmQxKTsKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazFfd29yZDIpOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrMV93b3JkMyk7CisKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazJfd29yZDApOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrMl93b3JkMSk7CisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2syX3dvcmQyKTsKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazJfd29yZDMpOworCisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2szX3dvcmQwKTsKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazNfd29yZDEpOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrM193b3JkMik7CisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2szX3dvcmQzKTsKKworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrNF93b3JkMCk7CisJd3JpdGVsKDAsICZwUnhNYWMtPm1hc2s0X3dvcmQxKTsKKwl3cml0ZWwoMCwgJnBSeE1hYy0+bWFzazRfd29yZDIpOworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tYXNrNF93b3JkMyk7CisKKwkvKiBMZXRzIHNldHVwIHRoZSBXT0wgU291cmNlIEFkZHJlc3MgKi8KKwlzYV9sby5iaXRzLnNhMyA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1syXTsKKwlzYV9sby5iaXRzLnNhNCA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1szXTsKKwlzYV9sby5iaXRzLnNhNSA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s0XTsKKwlzYV9sby5iaXRzLnNhNiA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s1XTsKKwl3cml0ZWwoc2FfbG8udmFsdWUsICZwUnhNYWMtPnNhX2xvLnZhbHVlKTsKKworCXNhX2hpLmJpdHMuc2ExID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzBdOworCXNhX2hpLmJpdHMuc2EyID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzFdOworCXdyaXRlbChzYV9oaS52YWx1ZSwgJnBSeE1hYy0+c2FfaGkudmFsdWUpOworCisJLyogRGlzYWJsZSBhbGwgUGFja2V0IEZpbHRlcmluZyAqLworCXdyaXRlbCgwLCAmcFJ4TWFjLT5wZl9jdHJsLnZhbHVlKTsKKworCS8qIExldCdzIGluaXRpYWxpemUgdGhlIFVuaWNhc3QgUGFja2V0IGZpbHRlcmluZyBhZGRyZXNzICovCisJaWYgKHBBZGFwdGVyLT5QYWNrZXRGaWx0ZXIgJiBFVDEzMVhfUEFDS0VUX1RZUEVfRElSRUNURUQpIHsKKwkJU2V0dXBEZXZpY2VGb3JVbmljYXN0KHBBZGFwdGVyKTsKKwkJcGZfY3RybC5iaXRzLmZpbHRlcl91bmlfZW4gPSAxOworCX0gZWxzZSB7CisJCXdyaXRlbCgwLCAmcFJ4TWFjLT51bmlfcGZfYWRkcjEudmFsdWUpOworCQl3cml0ZWwoMCwgJnBSeE1hYy0+dW5pX3BmX2FkZHIyLnZhbHVlKTsKKwkJd3JpdGVsKDAsICZwUnhNYWMtPnVuaV9wZl9hZGRyMy52YWx1ZSk7CisJfQorCisJLyogTGV0J3MgaW5pdGlhbGl6ZSB0aGUgTXVsdGljYXN0IGhhc2ggKi8KKwlpZiAocEFkYXB0ZXItPlBhY2tldEZpbHRlciAmIEVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUKSB7CisJCXBmX2N0cmwuYml0cy5maWx0ZXJfbXVsdGlfZW4gPSAwOworCX0gZWxzZSB7CisJCXBmX2N0cmwuYml0cy5maWx0ZXJfbXVsdGlfZW4gPSAxOworCQlTZXR1cERldmljZUZvck11bHRpY2FzdChwQWRhcHRlcik7CisJfQorCisJLyogUnVudCBwYWNrZXQgZmlsdGVyaW5nLiAgRGlkbid0IHdvcmsgaW4gdmVyc2lvbiBBIHNpbGljb24uICovCisJcGZfY3RybC5iaXRzLm1pbl9wa3Rfc2l6ZSA9IE5JQ19NSU5fUEFDS0VUX1NJWkUgKyA0OworCXBmX2N0cmwuYml0cy5maWx0ZXJfZnJhZ19lbiA9IDE7CisKKwlpZiAocEFkYXB0ZXItPlJlZ2lzdHJ5SnVtYm9QYWNrZXQgPiA4MTkyKSB7CisJCVJYTUFDX01DSUZfQ1RSTF9NQVhfU0VHX3QgbWNpZl9jdHJsX21heF9zZWc7CisKKwkJLyogSW4gb3JkZXIgdG8gdHJhbnNtaXQganVtYm8gcGFja2V0cyBncmVhdGVyIHRoYW4gOGssIHRoZQorCQkgKiBGSUZPIGJldHdlZW4gUnhNQUMgYW5kIFJ4RE1BIG5lZWRzIHRvIGJlIHJlZHVjZWQgaW4gc2l6ZQorCQkgKiB0byAoMTZrIC0gSnVtYm8gcGFja2V0IHNpemUpLiAgSW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoaXMsCisJCSAqIHdlIG11c3QgdXNlICJjdXQgdGhyb3VnaCIgbW9kZSBpbiB0aGUgUnhNQUMsIHdoaWNoIGNob3BzCisJCSAqIHBhY2tldHMgZG93biBpbnRvIHNlZ21lbnRzIHdoaWNoIGFyZSAobWF4X3NpemUgKiAxNikuICBJbgorCQkgKiB0aGlzIGNhc2Ugd2Ugc2VsZWN0ZWQgMjU2IGJ5dGVzLCBzaW5jZSB0aGlzIGlzIHRoZSBzaXplIG9mCisJCSAqIHRoZSBQQ0ktRXhwcmVzcyBUTFAncyB0aGF0IHRoZSAxMzEwIHVzZXMuCisJCSAqLworCQltY2lmX2N0cmxfbWF4X3NlZy5iaXRzLnNlZ19lbiA9IDB4MTsKKwkJbWNpZl9jdHJsX21heF9zZWcuYml0cy5mY19lbiA9IDB4MDsKKwkJbWNpZl9jdHJsX21heF9zZWcuYml0cy5tYXhfc2l6ZSA9IDB4MTA7CisKKwkJd3JpdGVsKG1jaWZfY3RybF9tYXhfc2VnLnZhbHVlLAorCQkgICAgICAgJnBSeE1hYy0+bWNpZl9jdHJsX21heF9zZWcudmFsdWUpOworCX0gZWxzZSB7CisJCXdyaXRlbCgwLCAmcFJ4TWFjLT5tY2lmX2N0cmxfbWF4X3NlZy52YWx1ZSk7CisJfQorCisJLyogSW5pdGlhbGl6ZSB0aGUgTUNJRiB3YXRlciBtYXJrcyAqLworCXdyaXRlbCgwLCAmcFJ4TWFjLT5tY2lmX3dhdGVyX21hcmsudmFsdWUpOworCisJLyogIEluaXRpYWxpemUgdGhlIE1JRiBjb250cm9sICovCisJd3JpdGVsKDAsICZwUnhNYWMtPm1pZl9jdHJsLnZhbHVlKTsKKworCS8qIEluaXRpYWxpemUgdGhlIFNwYWNlIEF2YWlsYWJsZSBSZWdpc3RlciAqLworCXdyaXRlbCgwLCAmcFJ4TWFjLT5zcGFjZV9hdmFpbC52YWx1ZSk7CisKKwkvKiBJbml0aWFsaXplIHRoZSB0aGUgbWlmX2N0cmwgcmVnaXN0ZXIKKwkgKiBiaXQgMzogIFJlY2VpdmUgY29kZSBlcnJvci4gT25lIG9yIG1vcmUgbmliYmxlcyB3ZXJlIHNpZ25hbGVkIGFzCisJICoJICAgZXJyb3JzICBkdXJpbmcgdGhlIHJlY2VwdGlvbiBvZiB0aGUgcGFja2V0LiAgQ2xlYXIgdGhpcworCSAqCSAgIGJpdCBpbiBHaWdhYml0LCBzZXQgaXQgaW4gMTAwTWJpdC4gIFRoaXMgd2FzIGRlcml2ZWQKKwkgKgkgICBleHBlcmltZW50YWxseSBhdCBVTkguCisJICogYml0IDQ6ICBSZWNlaXZlIENSQyBlcnJvci4gVGhlIHBhY2tldCdzIENSQyBkaWQgbm90IG1hdGNoIHRoZQorCSAqCSAgIGludGVybmFsbHkgZ2VuZXJhdGVkIENSQy4KKwkgKiBiaXQgNTogIFJlY2VpdmUgbGVuZ3RoIGNoZWNrIGVycm9yLiBJbmRpY2F0ZXMgdGhhdCBmcmFtZSBsZW5ndGgKKwkgKgkgICBmaWVsZCB2YWx1ZSBpbiB0aGUgcGFja2V0IGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZGF0YQorCSAqCSAgIGJ5dGUgbGVuZ3RoIGFuZCBpcyBub3QgYSB0eXBlIGZpZWxkLgorCSAqIGJpdCAxNjogUmVjZWl2ZSBmcmFtZSB0cnVuY2F0ZWQuCisJICogYml0IDE3OiBEcm9wIHBhY2tldCBlbmFibGUKKwkgKi8KKwlpZiAocEFkYXB0ZXItPnVpTGlua1NwZWVkID09IFRSVUVQSFlfU1BFRURfMTAwTUJQUykgeworCQl3cml0ZWwoMHgzMDAzOCwgJnBSeE1hYy0+bWlmX2N0cmwudmFsdWUpOworCX0gZWxzZSB7CisJCXdyaXRlbCgweDMwMDMwLCAmcFJ4TWFjLT5taWZfY3RybC52YWx1ZSk7CisJfQorCisJLyogRmluYWxseSB3ZSBpbml0aWFsaXplIFJ4TWFjIHRvIGJlIGVuYWJsZWQgJiBXT0wgZGlzYWJsZWQuICBQYWNrZXQKKwkgKiBmaWx0ZXIgaXMgYWx3YXlzIGVuYWJsZWQgc2luY2UgaXQgaXMgd2hlcmUgdGhlIHJ1bnQgcGFja2V0cyBhcmUKKwkgKiBzdXBwb3NlZCB0byBiZSBkcm9wcGVkLiAgRm9yIHZlcnNpb24gQSBzaWxpY29uLCBydW50IHBhY2tldAorCSAqIGRyb3BwaW5nIGRvZXNuJ3Qgd29yaywgc28gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIHBmX2N0cmwgcmVnaXN0ZXIsCisJICogYnV0IHdlIHN0aWxsIGxlYXZlIHRoZSBwYWNrZXQgZmlsdGVyIG9uLgorCSAqLworCXdyaXRlbChwZl9jdHJsLnZhbHVlLCAmcFJ4TWFjLT5wZl9jdHJsLnZhbHVlKTsKKwl3cml0ZWwoMHg5LCAmcFJ4TWFjLT5jdHJsLnZhbHVlKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKK3ZvaWQgQ29uZmlnVHhNYWNSZWdzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJc3RydWN0IF9UWE1BQ190IF9faW9tZW0gKnBUeE1hYyA9ICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhtYWM7CisJVFhNQUNfQ0ZfUEFSQU1fdCBMb2NhbDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgQ29udHJvbCBGcmFtZSBQYXJhbWV0ZXJzCisJICogY2ZwdCAtIGNvbnRyb2wgZnJhbWUgcGF1c2UgdGltZXIgc2V0IHRvIDY0ICgweDQwKQorCSAqIGNmZXAgLSBjb250cm9sIGZyYW1lIGV4dGVuZGVkIHBhdXNlIHRpbWVyIHNldCB0byAweDAKKwkgKi8KKwlpZiAocEFkYXB0ZXItPkZsb3dDb250cm9sID09IE5vbmUpIHsKKwkJd3JpdGVsKDAsICZwVHhNYWMtPmNmX3BhcmFtLnZhbHVlKTsKKwl9IGVsc2UgeworCQlMb2NhbC5iaXRzLmNmcHQgPSAweDQwOworCQlMb2NhbC5iaXRzLmNmZXAgPSAweDA7CisJCXdyaXRlbChMb2NhbC52YWx1ZSwgJnBUeE1hYy0+Y2ZfcGFyYW0udmFsdWUpOworCX0KKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKK3ZvaWQgQ29uZmlnTWFjU3RhdFJlZ3Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlzdHJ1Y3QgX01BQ19TVEFUX3QgX19pb21lbSAqcERldk1hY1N0YXQgPQorCQkmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPm1hY1N0YXQ7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogTmV4dCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgYWxsIHRoZSBNQUNfU1RBVCByZWdpc3RlcnMgdG8gemVybyBvbgorCSAqIHRoZSBkZXZpY2UuCisJICovCisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkZjcyk7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkFsbik7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkZscik7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkRycCk7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkNkZSk7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+Uk92cik7CisJd3JpdGVsKDAsICZwRGV2TWFjU3RhdC0+UkZyZyk7CisKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UU2NsKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5URGZyKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UTWNsKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UTGNsKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UTmNsKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UT3ZyKTsKKwl3cml0ZWwoMCwgJnBEZXZNYWNTdGF0LT5UVW5kKTsKKworCS8qIFVubWFzayBhbnkgY291bnRlcnMgdGhhdCB3ZSB3YW50IHRvIHRyYWNrIHRoZSBvdmVyZmxvdyBvZi4KKwkgKiBJbml0aWFsbHkgdGhpcyB3aWxsIGJlIGFsbCBjb3VudGVycy4gIEl0IG1heSBiZWNvbWUgY2xlYXIgbGF0ZXIKKwkgKiB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHRyYWNrIGFsbCBjb3VudGVycy4KKwkgKi8KKwl7CisJCU1BQ19TVEFUX1JFR18xX3QgQ2FycnkxTSA9IHsgMHhmZmZmZmZmZiB9OworCisJCUNhcnJ5MU0uYml0cy5yZHJwID0gMDsKKwkJQ2FycnkxTS5iaXRzLnJqYnIgPSAxOworCQlDYXJyeTFNLmJpdHMucmZyZyA9IDA7CisJCUNhcnJ5MU0uYml0cy5yb3ZyID0gMDsKKwkJQ2FycnkxTS5iaXRzLnJ1bmQgPSAxOworCQlDYXJyeTFNLmJpdHMucmNzZSA9IDE7CisJCUNhcnJ5MU0uYml0cy5yY2RlID0gMDsKKwkJQ2FycnkxTS5iaXRzLnJmbHIgPSAwOworCQlDYXJyeTFNLmJpdHMucmFsbiA9IDA7CisJCUNhcnJ5MU0uYml0cy5yeHVvID0gMTsKKwkJQ2FycnkxTS5iaXRzLnJ4cGYgPSAxOworCQlDYXJyeTFNLmJpdHMucnhjZiA9IDE7CisJCUNhcnJ5MU0uYml0cy5yYmNhID0gMTsKKwkJQ2FycnkxTS5iaXRzLnJtY2EgPSAxOworCQlDYXJyeTFNLmJpdHMucmZjcyA9IDA7CisJCUNhcnJ5MU0uYml0cy5ycGt0ID0gMTsKKwkJQ2FycnkxTS5iaXRzLnJieXQgPSAxOworCQlDYXJyeTFNLmJpdHMudHJtZ3YgPSAxOworCQlDYXJyeTFNLmJpdHMudHJtYXggPSAxOworCQlDYXJyeTFNLmJpdHMudHIxayA9IDE7CisJCUNhcnJ5MU0uYml0cy50cjUxMSA9IDE7CisJCUNhcnJ5MU0uYml0cy50cjI1NSA9IDE7CisJCUNhcnJ5MU0uYml0cy50cjEyNyA9IDE7CisJCUNhcnJ5MU0uYml0cy50cjY0ID0gMTsKKworCQl3cml0ZWwoQ2FycnkxTS52YWx1ZSwgJnBEZXZNYWNTdGF0LT5DYXJyeTFNLnZhbHVlKTsKKwl9CisKKwl7CisJCU1BQ19TVEFUX1JFR18yX3QgQ2FycnkyTSA9IHsgMHhmZmZmZmZmZiB9OworCisJCUNhcnJ5Mk0uYml0cy50ZHJwID0gMTsKKwkJQ2FycnkyTS5iaXRzLnRwZmggPSAxOworCQlDYXJyeTJNLmJpdHMudG5jbCA9IDA7CisJCUNhcnJ5Mk0uYml0cy50eGNsID0gMTsKKwkJQ2FycnkyTS5iaXRzLnRsY2wgPSAwOworCQlDYXJyeTJNLmJpdHMudG1jbCA9IDA7CisJCUNhcnJ5Mk0uYml0cy50c2NsID0gMDsKKwkJQ2FycnkyTS5iaXRzLnRlZGYgPSAxOworCQlDYXJyeTJNLmJpdHMudGRmciA9IDA7CisJCUNhcnJ5Mk0uYml0cy50eHBmID0gMTsKKwkJQ2FycnkyTS5iaXRzLnRiY2EgPSAxOworCQlDYXJyeTJNLmJpdHMudG1jYSA9IDE7CisJCUNhcnJ5Mk0uYml0cy50cGt0ID0gMTsKKwkJQ2FycnkyTS5iaXRzLnRieXQgPSAxOworCQlDYXJyeTJNLmJpdHMudGZyZyA9IDE7CisJCUNhcnJ5Mk0uYml0cy50dW5kID0gMDsKKwkJQ2FycnkyTS5iaXRzLnRvdnIgPSAwOworCQlDYXJyeTJNLmJpdHMudHhjZiA9IDE7CisJCUNhcnJ5Mk0uYml0cy50ZmNzID0gMTsKKwkJQ2FycnkyTS5iaXRzLnRqYnIgPSAxOworCisJCXdyaXRlbChDYXJyeTJNLnZhbHVlLCAmcERldk1hY1N0YXQtPkNhcnJ5Mk0udmFsdWUpOworCX0KKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKK3ZvaWQgQ29uZmlnRmxvd0NvbnRyb2woc3RydWN0IGV0MTMxeF9hZGFwdGVyICogcEFkYXB0ZXIpCit7CisJaWYgKHBBZGFwdGVyLT51aUR1cGxleE1vZGUgPT0gMCkgeworCQlwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPSBOb25lOworCX0gZWxzZSB7CisJCWNoYXIgUmVtb3RlUGF1c2UsIFJlbW90ZUFzeW5jUGF1c2U7CisKKwkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KHBBZGFwdGVyLAorCQkJCSAgICAgIFRSVUVQSFlfQklUX1JFQUQsIDUsIDEwLCAmUmVtb3RlUGF1c2UpOworCQlFVDEzMTBfUGh5QWNjZXNzTWlCaXQocEFkYXB0ZXIsCisJCQkJICAgICAgVFJVRVBIWV9CSVRfUkVBRCwgNSwgMTEsCisJCQkJICAgICAgJlJlbW90ZUFzeW5jUGF1c2UpOworCisJCWlmICgoUmVtb3RlUGF1c2UgPT0gVFJVRVBIWV9CSVRfU0VUKSAmJgorCQkgICAgKFJlbW90ZUFzeW5jUGF1c2UgPT0gVFJVRVBIWV9CSVRfU0VUKSkgeworCQkJcEFkYXB0ZXItPkZsb3dDb250cm9sID0gcEFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2w7CisJCX0gZWxzZSBpZiAoKFJlbW90ZVBhdXNlID09IFRSVUVQSFlfQklUX1NFVCkgJiYKKwkJCSAgIChSZW1vdGVBc3luY1BhdXNlID09IFRSVUVQSFlfQklUX0NMRUFSKSkgeworCQkJaWYgKHBBZGFwdGVyLT5SZWdpc3RyeUZsb3dDb250cm9sID09IEJvdGgpIHsKKwkJCQlwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPSBCb3RoOworCQkJfSBlbHNlIHsKKwkJCQlwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPSBOb25lOworCQkJfQorCQl9IGVsc2UgaWYgKChSZW1vdGVQYXVzZSA9PSBUUlVFUEhZX0JJVF9DTEVBUikgJiYKKwkJCSAgIChSZW1vdGVBc3luY1BhdXNlID09IFRSVUVQSFlfQklUX0NMRUFSKSkgeworCQkJcEFkYXB0ZXItPkZsb3dDb250cm9sID0gTm9uZTsKKwkJfSBlbHNlIHsvKiBpZiAoUmVtb3RlUGF1c2UgPT0gVFJVRVBIWV9DTEVBUl9CSVQgJiYKKwkJCSAgICAgICBSZW1vdGVBc3luY1BhdXNlID09IFRSVUVQSFlfU0VUX0JJVCkgKi8KKwkJCWlmIChwQWRhcHRlci0+UmVnaXN0cnlGbG93Q29udHJvbCA9PSBCb3RoKSB7CisJCQkJcEFkYXB0ZXItPkZsb3dDb250cm9sID0gUnhPbmx5OworCQkJfSBlbHNlIHsKKwkJCQlwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPSBOb25lOworCQkJfQorCQl9CisJfQorfQorCisvKioKKyAqIFVwZGF0ZU1hY1N0YXRIb3N0Q291bnRlcnMgLSBVcGRhdGUgdGhlIGxvY2FsIGNvcHkgb2YgdGhlIHN0YXRpc3RpY3MKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBVcGRhdGVNYWNTdGF0SG9zdENvdW50ZXJzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJc3RydWN0IF9jZV9zdGF0c190ICpzdGF0cyA9ICZwQWRhcHRlci0+U3RhdHM7CisJc3RydWN0IF9NQUNfU1RBVF90IF9faW9tZW0gKnBEZXZNYWNTdGF0ID0KKwkJJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5tYWNTdGF0OworCisJc3RhdHMtPmNvbGxpc2lvbnMgKz0gcmVhZGwoJnBEZXZNYWNTdGF0LT5UTmNsKTsKKwlzdGF0cy0+Zmlyc3RfY29sbGlzaW9uICs9IHJlYWRsKCZwRGV2TWFjU3RhdC0+VFNjbCk7CisJc3RhdHMtPnR4X2RlZmVycmVkICs9IHJlYWRsKCZwRGV2TWFjU3RhdC0+VERmcik7CisJc3RhdHMtPmV4Y2Vzc2l2ZV9jb2xsaXNpb25zICs9IHJlYWRsKCZwRGV2TWFjU3RhdC0+VE1jbCk7CisJc3RhdHMtPmxhdGVfY29sbGlzaW9ucyArPSByZWFkbCgmcERldk1hY1N0YXQtPlRMY2wpOworCXN0YXRzLT50eF91ZmxvICs9IHJlYWRsKCZwRGV2TWFjU3RhdC0+VFVuZCk7CisJc3RhdHMtPm1heF9wa3RfZXJyb3IgKz0gcmVhZGwoJnBEZXZNYWNTdGF0LT5UT3ZyKTsKKworCXN0YXRzLT5hbGlnbm1lbnRfZXJyICs9IHJlYWRsKCZwRGV2TWFjU3RhdC0+UkFsbik7CisJc3RhdHMtPmNyY19lcnIgKz0gcmVhZGwoJnBEZXZNYWNTdGF0LT5SQ2RlKTsKKwlzdGF0cy0+bm9yY3ZidWYgKz0gcmVhZGwoJnBEZXZNYWNTdGF0LT5SRHJwKTsKKwlzdGF0cy0+cnhfb3ZfZmxvdyArPSByZWFkbCgmcERldk1hY1N0YXQtPlJPdnIpOworCXN0YXRzLT5jb2RlX3Zpb2xhdGlvbnMgKz0gcmVhZGwoJnBEZXZNYWNTdGF0LT5SRmNzKTsKKwlzdGF0cy0+bGVuZ3RoX2VyciArPSByZWFkbCgmcERldk1hY1N0YXQtPlJGbHIpOworCisJc3RhdHMtPm90aGVyX2Vycm9ycyArPSByZWFkbCgmcERldk1hY1N0YXQtPlJGcmcpOworfQorCisvKioKKyAqIEhhbmRsZU1hY1N0YXRJbnRlcnJ1cHQKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBPbmUgb2YgdGhlIE1BQ1NUQVQgY291bnRlcnMgaGFzIHdyYXBwZWQuICBVcGRhdGUgdGhlIGxvY2FsIGNvcHkgb2YKKyAqIHRoZSBzdGF0aXN0aWNzIGhlbGQgaW4gdGhlIGFkYXB0ZXIgc3RydWN0dXJlLCBjaGVja2luZyB0aGUgIndyYXAiCisgKiBiaXQgZm9yIGVhY2ggY291bnRlci4KKyAqLwordm9pZCBIYW5kbGVNYWNTdGF0SW50ZXJydXB0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJTUFDX1NUQVRfUkVHXzFfdCBDYXJyeTE7CisJTUFDX1NUQVRfUkVHXzJfdCBDYXJyeTI7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUmVhZCB0aGUgaW50ZXJydXB0IGJpdHMgZnJvbSB0aGUgcmVnaXN0ZXIocykuICBUaGVzZSBhcmUgQ2xlYXIgT24KKwkgKiBXcml0ZS4KKwkgKi8KKwlDYXJyeTEudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPm1hY1N0YXQuQ2FycnkxLnZhbHVlKTsKKwlDYXJyeTIudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPm1hY1N0YXQuQ2FycnkyLnZhbHVlKTsKKworCXdyaXRlbChDYXJyeTEudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjU3RhdC5DYXJyeTEudmFsdWUpOworCXdyaXRlbChDYXJyeTIudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjU3RhdC5DYXJyeTIudmFsdWUpOworCisJLyogV2UgbmVlZCB0byBkbyB1cGRhdGUgdGhlIGhvc3QgY29weSBvZiBhbGwgdGhlIE1BQ19TVEFUIGNvdW50ZXJzLgorCSAqIEZvciBlYWNoIGNvdW50ZXIsIGNoZWNrIGl0J3Mgb3ZlcmZsb3cgYml0LiAgSWYgdGhlIG92ZXJmbG93IGJpdCBpcworCSAqIHNldCwgdGhlbiBpbmNyZW1lbnQgdGhlIGhvc3QgdmVyc2lvbiBvZiB0aGUgY291bnQgYnkgb25lIGNvbXBsZXRlCisJICogcmV2b2x1dGlvbiBvZiB0aGUgY291bnRlci4gIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgd2hlbiB0aGUgY291bnRlcgorCSAqIGJsb2NrIGluZGljYXRlcyB0aGF0IG9uZSBvZiB0aGUgY291bnRlcnMgaGFzIHdyYXBwZWQuCisJICovCisJaWYgKENhcnJ5MS5iaXRzLnJmY3MpIHsKKwkJcEFkYXB0ZXItPlN0YXRzLmNvZGVfdmlvbGF0aW9ucyArPSBDT1VOVEVSX1dSQVBfMTZfQklUOworCX0KKwlpZiAoQ2FycnkxLmJpdHMucmFsbikgeworCQlwQWRhcHRlci0+U3RhdHMuYWxpZ25tZW50X2VyciArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKwlpZiAoQ2FycnkxLmJpdHMucmZscikgeworCQlwQWRhcHRlci0+U3RhdHMubGVuZ3RoX2VyciArPSBDT1VOVEVSX1dSQVBfMTZfQklUOworCX0KKwlpZiAoQ2FycnkxLmJpdHMucmZyZykgeworCQlwQWRhcHRlci0+U3RhdHMub3RoZXJfZXJyb3JzICs9IENPVU5URVJfV1JBUF8xNl9CSVQ7CisJfQorCWlmIChDYXJyeTEuYml0cy5yY2RlKSB7CisJCXBBZGFwdGVyLT5TdGF0cy5jcmNfZXJyICs9IENPVU5URVJfV1JBUF8xNl9CSVQ7CisJfQorCWlmIChDYXJyeTEuYml0cy5yb3ZyKSB7CisJCXBBZGFwdGVyLT5TdGF0cy5yeF9vdl9mbG93ICs9IENPVU5URVJfV1JBUF8xNl9CSVQ7CisJfQorCWlmIChDYXJyeTEuYml0cy5yZHJwKSB7CisJCXBBZGFwdGVyLT5TdGF0cy5ub3JjdmJ1ZiArPSBDT1VOVEVSX1dSQVBfMTZfQklUOworCX0KKwlpZiAoQ2FycnkyLmJpdHMudG92cikgeworCQlwQWRhcHRlci0+U3RhdHMubWF4X3BrdF9lcnJvciArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKwlpZiAoQ2FycnkyLmJpdHMudHVuZCkgeworCQlwQWRhcHRlci0+U3RhdHMudHhfdWZsbyArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKwlpZiAoQ2FycnkyLmJpdHMudHNjbCkgeworCQlwQWRhcHRlci0+U3RhdHMuZmlyc3RfY29sbGlzaW9uICs9IENPVU5URVJfV1JBUF8xMl9CSVQ7CisJfQorCWlmIChDYXJyeTIuYml0cy50ZGZyKSB7CisJCXBBZGFwdGVyLT5TdGF0cy50eF9kZWZlcnJlZCArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKwlpZiAoQ2FycnkyLmJpdHMudG1jbCkgeworCQlwQWRhcHRlci0+U3RhdHMuZXhjZXNzaXZlX2NvbGxpc2lvbnMgKz0gQ09VTlRFUl9XUkFQXzEyX0JJVDsKKwl9CisJaWYgKENhcnJ5Mi5iaXRzLnRsY2wpIHsKKwkJcEFkYXB0ZXItPlN0YXRzLmxhdGVfY29sbGlzaW9ucyArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKwlpZiAoQ2FycnkyLmJpdHMudG5jbCkgeworCQlwQWRhcHRlci0+U3RhdHMuY29sbGlzaW9ucyArPSBDT1VOVEVSX1dSQVBfMTJfQklUOworCX0KKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKK3ZvaWQgU2V0dXBEZXZpY2VGb3JNdWx0aWNhc3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlzdHJ1Y3QgX1JYTUFDX3QgX19pb21lbSAqcnhtYWMgPSAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4bWFjOworCXVpbnQzMl90IG5JbmRleDsKKwl1aW50MzJfdCByZXN1bHQ7CisJdWludDMyX3QgaGFzaDEgPSAwOworCXVpbnQzMl90IGhhc2gyID0gMDsKKwl1aW50MzJfdCBoYXNoMyA9IDA7CisJdWludDMyX3QgaGFzaDQgPSAwOworCVBNX0NTUl90IHBtX2NzcjsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBJZiBFVDEzMVhfUEFDS0VUX1RZUEVfTVVMVElDQVNUIGlzIHNwZWNpZmllZCwgdGhlbiB3ZSBwcm92aXNpb24KKwkgKiB0aGUgbXVsdGktY2FzdCBMSVNULiAgSWYgaXQgaXMgTk9UIHNwZWNpZmllZCwgKGFuZCAiQUxMIiBpcyBub3QKKwkgKiBzcGVjaWZpZWQpIHRoZW4gd2Ugc2hvdWxkIHBhc3MgTk8gbXVsdGktY2FzdCBhZGRyZXNzZXMgdG8gdGhlCisJICogZHJpdmVyLgorCSAqLworCWlmIChwQWRhcHRlci0+UGFja2V0RmlsdGVyICYgRVQxMzFYX1BBQ0tFVF9UWVBFX01VTFRJQ0FTVCkgeworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywKKwkJCSAgICAiTVVMVElDQVNUIGZsYWcgaXMgc2V0LCBNQ0NvdW50OiAlZFxuIiwKKwkJCSAgICBwQWRhcHRlci0+TUNBZGRyZXNzQ291bnQpOworCisJCS8qIExvb3AgdGhyb3VnaCBvdXIgbXVsdGljYXN0IGFycmF5IGFuZCBzZXQgdXAgdGhlIGRldmljZSAqLworCQlmb3IgKG5JbmRleCA9IDA7IG5JbmRleCA8IHBBZGFwdGVyLT5NQ0FkZHJlc3NDb3VudDsgbkluZGV4KyspIHsKKwkJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgICAiTUNMaXN0WyVkXTogJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsCisJCQkJICAgIG5JbmRleCwKKwkJCQkgICAgcEFkYXB0ZXItPk1DTGlzdFtuSW5kZXhdWzBdLAorCQkJCSAgICBwQWRhcHRlci0+TUNMaXN0W25JbmRleF1bMV0sCisJCQkJICAgIHBBZGFwdGVyLT5NQ0xpc3RbbkluZGV4XVsyXSwKKwkJCQkgICAgcEFkYXB0ZXItPk1DTGlzdFtuSW5kZXhdWzNdLAorCQkJCSAgICBwQWRhcHRlci0+TUNMaXN0W25JbmRleF1bNF0sCisJCQkJICAgIHBBZGFwdGVyLT5NQ0xpc3RbbkluZGV4XVs1XSk7CisKKwkJCXJlc3VsdCA9IGV0aGVyX2NyYyg2LCBwQWRhcHRlci0+TUNMaXN0W25JbmRleF0pOworCisJCQlyZXN1bHQgPSAocmVzdWx0ICYgMHgzRjgwMDAwMCkgPj4gMjM7CisKKwkJCWlmIChyZXN1bHQgPCAzMikgeworCQkJCWhhc2gxIHw9ICgxIDw8IHJlc3VsdCk7CisJCQl9IGVsc2UgaWYgKCgzMSA8IHJlc3VsdCkgJiYgKHJlc3VsdCA8IDY0KSkgeworCQkJCXJlc3VsdCAtPSAzMjsKKwkJCQloYXNoMiB8PSAoMSA8PCByZXN1bHQpOworCQkJfSBlbHNlIGlmICgoNjMgPCByZXN1bHQpICYmIChyZXN1bHQgPCA5NikpIHsKKwkJCQlyZXN1bHQgLT0gNjQ7CisJCQkJaGFzaDMgfD0gKDEgPDwgcmVzdWx0KTsKKwkJCX0gZWxzZSB7CisJCQkJcmVzdWx0IC09IDk2OworCQkJCWhhc2g0IHw9ICgxIDw8IHJlc3VsdCk7CisJCQl9CisJCX0KKwl9CisKKwkvKiBXcml0ZSBvdXQgdGhlIG5ldyBoYXNoIHRvIHRoZSBkZXZpY2UgKi8KKwlwbV9jc3IudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPmdsb2JhbC5wbV9jc3IudmFsdWUpOworCWlmIChwbV9jc3IuYml0cy5wbV9waHlfc3dfY29tYSA9PSAwKSB7CisJCXdyaXRlbChoYXNoMSwgJnJ4bWFjLT5tdWx0aV9oYXNoMSk7CisJCXdyaXRlbChoYXNoMiwgJnJ4bWFjLT5tdWx0aV9oYXNoMik7CisJCXdyaXRlbChoYXNoMywgJnJ4bWFjLT5tdWx0aV9oYXNoMyk7CisJCXdyaXRlbChoYXNoNCwgJnJ4bWFjLT5tdWx0aV9oYXNoNCk7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKwordm9pZCBTZXR1cERldmljZUZvclVuaWNhc3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlzdHJ1Y3QgX1JYTUFDX3QgX19pb21lbSAqcnhtYWMgPSAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4bWFjOworCVJYTUFDX1VOSV9QRl9BRERSMV90IHVuaV9wZjE7CisJUlhNQUNfVU5JX1BGX0FERFIyX3QgdW5pX3BmMjsKKwlSWE1BQ19VTklfUEZfQUREUjNfdCB1bmlfcGYzOworCVBNX0NTUl90IHBtX2NzcjsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBTZXQgdXAgdW5pY2FzdCBwYWNrZXQgZmlsdGVyIHJlZyAzIHRvIGJlIHRoZSBmaXJzdCB0d28gb2N0ZXRzIG9mCisJICogdGhlIE1BQyBhZGRyZXNzIGZvciBib3RoIGFkZHJlc3MKKwkgKgorCSAqIFNldCB1cCB1bmljYXN0IHBhY2tldCBmaWx0ZXIgcmVnIDIgdG8gYmUgdGhlIG9jdGV0cyAyIC0gNSBvZiB0aGUKKwkgKiBNQUMgYWRkcmVzcyBmb3Igc2Vjb25kIGFkZHJlc3MKKwkgKgorCSAqIFNldCB1cCB1bmljYXN0IHBhY2tldCBmaWx0ZXIgcmVnIDMgdG8gYmUgdGhlIG9jdGV0cyAyIC0gNSBvZiB0aGUKKwkgKiBNQUMgYWRkcmVzcyBmb3IgZmlyc3QgYWRkcmVzcworCSAqLworCXVuaV9wZjMuYml0cy5hZGRyMV8xID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzBdOworCXVuaV9wZjMuYml0cy5hZGRyMV8yID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzFdOworCXVuaV9wZjMuYml0cy5hZGRyMl8xID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzBdOworCXVuaV9wZjMuYml0cy5hZGRyMl8yID0gcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzFdOworCisJdW5pX3BmMi5iaXRzLmFkZHIyXzMgPSBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbMl07CisJdW5pX3BmMi5iaXRzLmFkZHIyXzQgPSBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbM107CisJdW5pX3BmMi5iaXRzLmFkZHIyXzUgPSBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbNF07CisJdW5pX3BmMi5iaXRzLmFkZHIyXzYgPSBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbNV07CisKKwl1bmlfcGYxLmJpdHMuYWRkcjFfMyA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1syXTsKKwl1bmlfcGYxLmJpdHMuYWRkcjFfNCA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1szXTsKKwl1bmlfcGYxLmJpdHMuYWRkcjFfNSA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s0XTsKKwl1bmlfcGYxLmJpdHMuYWRkcjFfNiA9IHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s1XTsKKworCXBtX2Nzci52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLnBtX2Nzci52YWx1ZSk7CisJaWYgKHBtX2Nzci5iaXRzLnBtX3BoeV9zd19jb21hID09IDApIHsKKwkJd3JpdGVsKHVuaV9wZjEudmFsdWUsICZyeG1hYy0+dW5pX3BmX2FkZHIxLnZhbHVlKTsKKwkJd3JpdGVsKHVuaV9wZjIudmFsdWUsICZyeG1hYy0+dW5pX3BmX2FkZHIyLnZhbHVlKTsKKwkJd3JpdGVsKHVuaV9wZjMudmFsdWUsICZyeG1hYy0+dW5pX3BmX2FkZHIzLnZhbHVlKTsKKwl9CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfbWFjLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9tYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDI2Y2QzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfbWFjLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfbWFjLmggLSAgRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gcGVydGFpbmluZyB0byB0aGUKKyAqICAgICAgICAgICAgICAgICBNQUMuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX0VUMTMxMF9NQUNfSF8KKyNkZWZpbmUgX0VUMTMxMF9NQUNfSF8KKworCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisKKworI2RlZmluZSBDT1VOVEVSX1dSQVBfMjhfQklUIDB4MTAwMDAwMDAKKyNkZWZpbmUgQ09VTlRFUl9XUkFQXzIyX0JJVCAweDQwMDAwMAorI2RlZmluZSBDT1VOVEVSX1dSQVBfMTZfQklUIDB4MTAwMDAKKyNkZWZpbmUgQ09VTlRFUl9XUkFQXzEyX0JJVCAweDEwMDAKKworI2RlZmluZSBDT1VOVEVSX01BU0tfMjhfQklUIChDT1VOVEVSX1dSQVBfMjhfQklUIC0gMSkKKyNkZWZpbmUgQ09VTlRFUl9NQVNLXzIyX0JJVCAoQ09VTlRFUl9XUkFQXzIyX0JJVCAtIDEpCisjZGVmaW5lIENPVU5URVJfTUFTS18xNl9CSVQgKENPVU5URVJfV1JBUF8xNl9CSVQgLSAxKQorI2RlZmluZSBDT1VOVEVSX01BU0tfMTJfQklUIChDT1VOVEVSX1dSQVBfMTJfQklUIC0gMSkKKworI2RlZmluZSBVUERBVEVfQ09VTlRFUihIb3N0Q250LERldkNudCkgXAorICAgIEhvc3RDbnQgPSBIb3N0Q250ICsgRGV2Q250OworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlICovCitzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXI7CisKK3ZvaWQgQ29uZmlnTUFDUmVnczEoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgQ29uZmlnTUFDUmVnczIoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgQ29uZmlnUnhNYWNSZWdzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIENvbmZpZ1R4TWFjUmVncyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBDb25maWdNYWNTdGF0UmVncyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBDb25maWdGbG93Q29udHJvbChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBVcGRhdGVNYWNTdGF0SG9zdENvdW50ZXJzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIEhhbmRsZU1hY1N0YXRJbnRlcnJ1cHQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgU2V0dXBEZXZpY2VGb3JNdWx0aWNhc3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgU2V0dXBEZXZpY2VGb3JVbmljYXN0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKKyNlbmRpZiAvKiBfRVQxMzEwX01BQ19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzRmYTU0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmMKQEAgLTAsMCArMSwxMjgxIEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxMF9waHkuYyAtIFJvdXRpbmVzIGZvciBjb25maWd1cmluZyBhbmQgYWNjZXNzaW5nIHRoZSBQSFkKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorCisjaW5jbHVkZSAiZXQxMzEwX3BoeS5oIgorI2luY2x1ZGUgImV0MTMxMF9wbS5oIgorI2luY2x1ZGUgImV0MTMxMF9qYWdjb3JlLmgiCisKKyNpbmNsdWRlICJldDEzMXhfYWRhcHRlci5oIgorI2luY2x1ZGUgImV0MTMxeF9uZXRkZXYuaCIKKyNpbmNsdWRlICJldDEzMXhfaW5pdHBjaS5oIgorCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKyNpbmNsdWRlICJldDEzMTBfdHguaCIKKyNpbmNsdWRlICJldDEzMTBfcnguaCIKKyNpbmNsdWRlICJldDEzMTBfbWFjLmgiCisKKy8qIERhdGEgZm9yIGRlYnVnZ2luZyBmYWNpbGl0aWVzICovCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworZXh0ZXJuIGRiZ19pbmZvX3QgKmV0MTMxeF9kYmdpbmZvOworI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworLyogUHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIHdpdGggbG9jYWwgc2NvcGUgKi8KK3N0YXRpYyBpbnQgZXQxMzF4X3hjdnJfaW5pdChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOworCisvKioKKyAqIFBoeU1pUmVhZCAtIFJlYWQgZnJvbSB0aGUgUEhZIHRocm91Z2ggdGhlIE1JSSBJbnRlcmZhY2Ugb24gdGhlIE1BQworICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqIEB4Y3ZyQWRkcjogdGhlIGFkZHJlc3Mgb2YgdGhlIHRyYW5zY2lldmVyCisgKiBAeGN2clJlZzogdGhlIHJlZ2lzdGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcG9pbnRlciB0byBhIDE2LWJpdCB2YWx1ZSBpbiB3aGljaCB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICovCitpbnQgUGh5TWlSZWFkKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwgdWludDhfdCB4Y3ZyQWRkciwKKwkgICAgICB1aW50OF90IHhjdnJSZWcsIHVpbnQxNl90ICp2YWx1ZSkKK3sKKwlzdHJ1Y3QgX01BQ190IF9faW9tZW0gKm1hYyA9ICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5tYWM7CisJaW50IHN0YXR1cyA9IDA7CisJdWludDMyX3QgZGVsYXk7CisJTUlJX01HTVRfQUREUl90IG1paUFkZHI7CisJTUlJX01HTVRfQ01EX3QgbWlpQ21kOworCU1JSV9NR01UX0lORElDQVRPUl90IG1paUluZGljYXRvcjsKKworCS8qIFNhdmUgYSBsb2NhbCBjb3B5IG9mIHRoZSByZWdpc3RlcnMgd2UgYXJlIGRlYWxpbmcgd2l0aCBzbyB3ZSBjYW4KKwkgKiBzZXQgdGhlbSBiYWNrCisJICovCisJbWlpQWRkci52YWx1ZSA9IHJlYWRsKCZtYWMtPm1paV9tZ210X2FkZHIudmFsdWUpOworCW1paUNtZC52YWx1ZSA9IHJlYWRsKCZtYWMtPm1paV9tZ210X2NtZC52YWx1ZSk7CisKKwkvKiBTdG9wIHRoZSBjdXJyZW50IG9wZXJhdGlvbiAqLworCXdyaXRlbCgwLCAmbWFjLT5taWlfbWdtdF9jbWQudmFsdWUpOworCisJLyogU2V0IHVwIHRoZSByZWdpc3RlciB3ZSBuZWVkIHRvIHJlYWQgZnJvbSBvbiB0aGUgY29ycmVjdCBQSFkgKi8KKwl7CisJCU1JSV9NR01UX0FERFJfdCBtaWlfbWdtdF9hZGRyID0geyAwIH07CisKKwkJbWlpX21nbXRfYWRkci5iaXRzLnBoeV9hZGRyID0geGN2ckFkZHI7CisJCW1paV9tZ210X2FkZHIuYml0cy5yZWdfYWRkciA9IHhjdnJSZWc7CisJCXdyaXRlbChtaWlfbWdtdF9hZGRyLnZhbHVlLCAmbWFjLT5taWlfbWdtdF9hZGRyLnZhbHVlKTsKKwl9CisKKwkvKiBLaWNrIHRoZSByZWFkIGN5Y2xlIG9mZiAqLworCWRlbGF5ID0gMDsKKworCXdyaXRlbCgweDEsICZtYWMtPm1paV9tZ210X2NtZC52YWx1ZSk7CisKKwlkbyB7CisJCXVkZWxheSg1MCk7CisJCWRlbGF5Kys7CisJCW1paUluZGljYXRvci52YWx1ZSA9IHJlYWRsKCZtYWMtPm1paV9tZ210X2luZGljYXRvci52YWx1ZSk7CisJfSB3aGlsZSAoKG1paUluZGljYXRvci5iaXRzLm5vdF92YWxpZCB8fCBtaWlJbmRpY2F0b3IuYml0cy5idXN5KSAmJgorCQkgZGVsYXkgPCA1MCk7CisKKwkvKiBJZiB3ZSBoaXQgdGhlIG1heCBkZWxheSwgd2UgY291bGQgbm90IHJlYWQgdGhlIHJlZ2lzdGVyICovCisJaWYgKGRlbGF5ID49IDUwKSB7CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICJ4Y3ZyUmVnIDB4JTA4eCBjb3VsZCBub3QgYmUgcmVhZFxuIiwgeGN2clJlZyk7CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLCAic3RhdHVzIGlzICAweCUwOHhcbiIsCisJCQkgICAgbWlpSW5kaWNhdG9yLnZhbHVlKTsKKworCQlzdGF0dXMgPSAtRUlPOworCX0KKworCS8qIElmIHdlIGhpdCBoZXJlIHdlIHdlcmUgYWJsZSB0byByZWFkIHRoZSByZWdpc3RlciBhbmQgd2UgbmVlZCB0bworCSAqIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlcgorCSAqLworCS8qIFRPRE86IG1ha2UgdGhpcyBzdHVmZiBhIHNpbXBsZSByZWFkdygpPyEgKi8KKwl7CisJCU1JSV9NR01UX1NUQVRfdCBtaWlfbWdtdF9zdGF0OworCisJCW1paV9tZ210X3N0YXQudmFsdWUgPSByZWFkbCgmbWFjLT5taWlfbWdtdF9zdGF0LnZhbHVlKTsKKwkJKnZhbHVlID0gKHVpbnQxNl90KSBtaWlfbWdtdF9zdGF0LmJpdHMucGh5X3N0YXQ7CisJfQorCisJLyogU3RvcCB0aGUgcmVhZCBvcGVyYXRpb24gKi8KKwl3cml0ZWwoMCwgJm1hYy0+bWlpX21nbXRfY21kLnZhbHVlKTsKKworCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiICB4Y3ZyX2FkZHIgPSAweCUwMngsICIKKwkJICAgICJ4Y3ZyX3JlZyAgPSAweCUwMngsICIKKwkJICAgICJ2YWx1ZSAgICAgPSAweCUwNHguXG4iLCB4Y3ZyQWRkciwgeGN2clJlZywgKnZhbHVlKTsKKworCS8qIHNldCB0aGUgcmVnaXN0ZXJzIHdlIHRvdWNoZWQgYmFjayB0byB0aGUgc3RhdGUgYXQgd2hpY2ggd2UgZW50ZXJlZAorCSAqIHRoaXMgZnVuY3Rpb24KKwkgKi8KKwl3cml0ZWwobWlpQWRkci52YWx1ZSwgJm1hYy0+bWlpX21nbXRfYWRkci52YWx1ZSk7CisJd3JpdGVsKG1paUNtZC52YWx1ZSwgJm1hYy0+bWlpX21nbXRfY21kLnZhbHVlKTsKKworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICogTWlXcml0ZSAtIFdyaXRlIHRvIGEgUEhZIHJlZ2lzdGVyIHRocm91Z2ggdGhlIE1JSSBpbnRlcmZhY2Ugb2YgdGhlIE1BQworICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqIEB4Y3ZyUmVnOiB0aGUgcmVnaXN0ZXIgdG8gcmVhZAorICogQHZhbHVlOiAxNi1iaXQgdmFsdWUgdG8gd3JpdGUKKyAqCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBNaVdyaXRlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwgdWludDhfdCB4Y3ZyUmVnLCB1aW50MTZfdCB2YWx1ZSkKK3sKKwlzdHJ1Y3QgX01BQ190IF9faW9tZW0gKm1hYyA9ICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5tYWM7CisJaW50IHN0YXR1cyA9IDA7CisJdWludDhfdCB4Y3ZyQWRkciA9IGFkYXB0ZXItPlN0YXRzLnhjdnJfYWRkcjsKKwl1aW50MzJfdCBkZWxheTsKKwlNSUlfTUdNVF9BRERSX3QgbWlpQWRkcjsKKwlNSUlfTUdNVF9DTURfdCBtaWlDbWQ7CisJTUlJX01HTVRfSU5ESUNBVE9SX3QgbWlpSW5kaWNhdG9yOworCisJLyogU2F2ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIHJlZ2lzdGVycyB3ZSBhcmUgZGVhbGluZyB3aXRoIHNvIHdlIGNhbgorCSAqIHNldCB0aGVtIGJhY2sKKwkgKi8KKwltaWlBZGRyLnZhbHVlID0gcmVhZGwoJm1hYy0+bWlpX21nbXRfYWRkci52YWx1ZSk7CisJbWlpQ21kLnZhbHVlID0gcmVhZGwoJm1hYy0+bWlpX21nbXRfY21kLnZhbHVlKTsKKworCS8qIFN0b3AgdGhlIGN1cnJlbnQgb3BlcmF0aW9uICovCisJd3JpdGVsKDAsICZtYWMtPm1paV9tZ210X2NtZC52YWx1ZSk7CisKKwkvKiBTZXQgdXAgdGhlIHJlZ2lzdGVyIHdlIG5lZWQgdG8gd3JpdGUgdG8gb24gdGhlIGNvcnJlY3QgUEhZICovCisJeworCQlNSUlfTUdNVF9BRERSX3QgbWlpX21nbXRfYWRkcjsKKworCQltaWlfbWdtdF9hZGRyLmJpdHMucGh5X2FkZHIgPSB4Y3ZyQWRkcjsKKwkJbWlpX21nbXRfYWRkci5iaXRzLnJlZ19hZGRyID0geGN2clJlZzsKKwkJd3JpdGVsKG1paV9tZ210X2FkZHIudmFsdWUsICZtYWMtPm1paV9tZ210X2FkZHIudmFsdWUpOworCX0KKworCS8qIEFkZCB0aGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlZ2lzdGVycyB0byB0aGUgbWFjICovCisJd3JpdGVsKHZhbHVlLCAmbWFjLT5taWlfbWdtdF9jdHJsLnZhbHVlKTsKKwlkZWxheSA9IDA7CisKKwlkbyB7CisJCXVkZWxheSg1MCk7CisJCWRlbGF5Kys7CisJCW1paUluZGljYXRvci52YWx1ZSA9IHJlYWRsKCZtYWMtPm1paV9tZ210X2luZGljYXRvci52YWx1ZSk7CisJfSB3aGlsZSAobWlpSW5kaWNhdG9yLmJpdHMuYnVzeSAmJiBkZWxheSA8IDEwMCk7CisKKwkvKiBJZiB3ZSBoaXQgdGhlIG1heCBkZWxheSwgd2UgY291bGQgbm90IHdyaXRlIHRoZSByZWdpc3RlciAqLworCWlmIChkZWxheSA9PSAxMDApIHsKKwkJdWludDE2X3QgVGVtcFZhbHVlOworCisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICJ4Y3ZyUmVnIDB4JTA4eCBjb3VsZCBub3QgYmUgd3JpdHRlbiIsIHhjdnJSZWcpOworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgInN0YXR1cyBpcyAgMHglMDh4XG4iLAorCQkJICAgIG1paUluZGljYXRvci52YWx1ZSk7CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLCAiY29tbWFuZCBpcyAgMHglMDh4XG4iLAorCQkJICAgIHJlYWRsKCZtYWMtPm1paV9tZ210X2NtZC52YWx1ZSkpOworCisJCU1pUmVhZChhZGFwdGVyLCB4Y3ZyUmVnLCAmVGVtcFZhbHVlKTsKKworCQlzdGF0dXMgPSAtRUlPOworCX0KKworCS8qIFN0b3AgdGhlIHdyaXRlIG9wZXJhdGlvbiAqLworCXdyaXRlbCgwLCAmbWFjLT5taWlfbWdtdF9jbWQudmFsdWUpOworCisJLyogc2V0IHRoZSByZWdpc3RlcnMgd2UgdG91Y2hlZCBiYWNrIHRvIHRoZSBzdGF0ZSBhdCB3aGljaCB3ZSBlbnRlcmVkCisgICAgICAgICAqIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICovCisJd3JpdGVsKG1paUFkZHIudmFsdWUsICZtYWMtPm1paV9tZ210X2FkZHIudmFsdWUpOworCXdyaXRlbChtaWlDbWQudmFsdWUsICZtYWMtPm1paV9tZ210X2NtZC52YWx1ZSk7CisKKwlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIiB4Y3ZyX2FkZHIgPSAweCUwMngsICIKKwkJICAgICJ4Y3ZyX3JlZyAgPSAweCUwMngsICIKKwkJICAgICJ2YWx1ZSAgICAgPSAweCUwNHguXG4iLCB4Y3ZyQWRkciwgeGN2clJlZywgdmFsdWUpOworCisJcmV0dXJuIHN0YXR1czsKK30KKworLyoqCisgKiBldDEzMXhfeGN2cl9maW5kIC0gRmluZCB0aGUgUEhZIElECisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfeGN2cl9maW5kKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpbnQgc3RhdHVzID0gLUVOT0RFVjsKKwl1aW50OF90IHhjdnJfYWRkcjsKKwlNSV9JRFIxX3QgaWRyMTsKKwlNSV9JRFIyX3QgaWRyMjsKKwl1aW50MzJfdCB4Y3ZyX2lkOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFdlIG5lZWQgdG8gZ2V0IHhjdnIgaWQgYW5kIGFkZHJlc3Mgd2UganVzdCBnZXQgdGhlIGZpcnN0IG9uZSAqLworCWZvciAoeGN2cl9hZGRyID0gMDsgeGN2cl9hZGRyIDwgMzI7IHhjdnJfYWRkcisrKSB7CisJCS8qIFJlYWQgdGhlIElEIGZyb20gdGhlIFBIWSAqLworCQlQaHlNaVJlYWQoYWRhcHRlciwgeGN2cl9hZGRyLAorCQkJICAodWludDhfdCkgb2Zmc2V0b2YoTUlfUkVHU190LCBpZHIxKSwKKwkJCSAgJmlkcjEudmFsdWUpOworCQlQaHlNaVJlYWQoYWRhcHRlciwgeGN2cl9hZGRyLAorCQkJICAodWludDhfdCkgb2Zmc2V0b2YoTUlfUkVHU190LCBpZHIyKSwKKwkJCSAgJmlkcjIudmFsdWUpOworCisJCXhjdnJfaWQgPSAodWludDMyX3QpICgoaWRyMS52YWx1ZSA8PCAxNikgfCBpZHIyLnZhbHVlKTsKKworCQlpZiAoKGlkcjEudmFsdWUgIT0gMCkgJiYgKGlkcjEudmFsdWUgIT0gMHhmZmZmKSkgeworCQkJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIlhjdnIgYWRkcjogMHglMDJ4XHRYY3ZyX2lkOiAweCUwOHhcbiIsCisJCQkJICB4Y3ZyX2FkZHIsIHhjdnJfaWQpOworCisJCQlhZGFwdGVyLT5TdGF0cy54Y3ZyX2lkID0geGN2cl9pZDsKKwkJCWFkYXB0ZXItPlN0YXRzLnhjdnJfYWRkciA9IHhjdnJfYWRkcjsKKworCQkJc3RhdHVzID0gMDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9zZXRwaHlfbm9ybWFsIC0gU2V0IFBIWSBmb3Igbm9ybWFsIG9wZXJhdGlvbi4KKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogVXNlZCBieSBQb3dlciBNYW5hZ2VtZW50IHRvIGZvcmNlIHRoZSBQSFkgaW50byAxMCBCYXNlIFQgaGFsZi1kdXBsZXggbW9kZSwKKyAqIHdoZW4gZ29pbmcgdG8gRDMgaW4gV09MIG1vZGUuIEFsc28gdXNlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gdG8gc2V0IHRoZQorICogUEhZIGZvciBub3JtYWwgb3BlcmF0aW9uLgorICovCitpbnQgZXQxMzF4X3NldHBoeV9ub3JtYWwoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCWludCBzdGF0dXM7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogTWFrZSBzdXJlIHRoZSBQSFkgaXMgcG93ZXJlZCB1cCAqLworCUVUMTMxMF9QaHlQb3dlckRvd24oYWRhcHRlciwgMCk7CisJc3RhdHVzID0gZXQxMzF4X3hjdnJfaW5pdChhZGFwdGVyKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIHN0YXR1czsKK30KKworLyoqCisgKiBldDEzMXhfeGN2cl9pbml0IC0gSW5pdCB0aGUgcGh5IGlmIHdlIGFyZSBzZXR0aW5nIGl0IGludG8gZm9yY2UgbW9kZQorICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICovCitzdGF0aWMgaW50IGV0MTMxeF94Y3ZyX2luaXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCWludCBzdGF0dXMgPSAwOworCU1JX0lNUl90IGltcjsKKwlNSV9JU1JfdCBpc3I7CisJTUlfTENSMl90IGxjcjI7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogWmVybyBvdXQgdGhlIGFkYXB0ZXIgc3RydWN0dXJlIHZhcmlhYmxlIHJlcHJlc2VudGluZyBCTVNSICovCisJYWRhcHRlci0+Qm1zci52YWx1ZSA9IDA7CisKKwlNaVJlYWQoYWRhcHRlciwgKHVpbnQ4X3QpIG9mZnNldG9mKE1JX1JFR1NfdCwgaXNyKSwgJmlzci52YWx1ZSk7CisKKwlNaVJlYWQoYWRhcHRlciwgKHVpbnQ4X3QpIG9mZnNldG9mKE1JX1JFR1NfdCwgaW1yKSwgJmltci52YWx1ZSk7CisKKwkvKiBTZXQgdGhlIGxpbmsgc3RhdHVzIGludGVycnVwdCBvbmx5LiAgQmFkIGJlaGF2aW9yIHdoZW4gbGluayBzdGF0dXMKKwkgKiBhbmQgYXV0byBuZWcgYXJlIHNldCwgd2UgcnVuIGludG8gYSBuZXN0ZWQgaW50ZXJydXB0IHByb2JsZW0KKwkgKi8KKwlpbXIuYml0cy5pbnRfZW4gPSAweDE7CisJaW1yLmJpdHMubGlua19zdGF0dXMgPSAweDE7CisJaW1yLmJpdHMuYXV0b25lZ19zdGF0dXMgPSAweDE7CisKKwlNaVdyaXRlKGFkYXB0ZXIsICh1aW50OF90KSBvZmZzZXRvZihNSV9SRUdTX3QsIGltciksIGltci52YWx1ZSk7CisKKwkvKiBTZXQgdGhlIExFRCBiZWhhdmlvciBzdWNoIHRoYXQgTEVEIDEgaW5kaWNhdGVzIHNwZWVkIChvZmYgPQorCSAqIDEwTWJpdHMsIGJsaW5rID0gMTAwTWJpdHMsIG9uID0gMTAwME1iaXRzKSBhbmQgTEVEIDIgaW5kaWNhdGVzCisJICogbGluayBhbmQgYWN0aXZpdHkgKG9uIGZvciBsaW5rLCBibGluayBvZmYgZm9yIGFjdGl2aXR5KS4KKwkgKgorCSAqIE5PVEU6IFNvbWUgY3VzdG9taXphdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIGhlcmUgZm9yIHNwZWNpZmljCisJICogdmVuZG9yczsgVGhlIExFRCBiZWhhdmlvciBpcyBub3cgZGV0ZXJtaW5lZCBieSB2ZW5kb3IgZGF0YSBpbiB0aGUKKwkgKiBFRVBST00uIEhvd2V2ZXIsIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiBpcyB0aGUgZGVmYXVsdC4KKwkgKi8KKwlpZiAoKGFkYXB0ZXItPmVlcHJvbURhdGFbMV0gJiAweDQpID09IDApIHsKKwkJTWlSZWFkKGFkYXB0ZXIsICh1aW50OF90KSBvZmZzZXRvZihNSV9SRUdTX3QsIGxjcjIpLAorCQkgICAgICAgJmxjcjIudmFsdWUpOworCQlpZiAoKGFkYXB0ZXItPmVlcHJvbURhdGFbMV0gJiAweDgpID09IDApCisJCQlsY3IyLmJpdHMubGVkX3R4X3J4ID0gMHgzOworCQllbHNlCisJCQlsY3IyLmJpdHMubGVkX3R4X3J4ID0gMHg0OworCQlsY3IyLmJpdHMubGVkX2xpbmsgPSAweGE7CisJCU1pV3JpdGUoYWRhcHRlciwgKHVpbnQ4X3QpIG9mZnNldG9mKE1JX1JFR1NfdCwgbGNyMiksCisJCQlsY3IyLnZhbHVlKTsKKwl9CisKKwkvKiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBnbyBpbnRvIGEgZm9yY2UgbW9kZSBhbmQgc2V0IGl0ICovCisJaWYgKGFkYXB0ZXItPkFpRm9yY2VTcGVlZCA9PSAwICYmIGFkYXB0ZXItPkFpRm9yY2VEcHggPT0gMCkgeworCQlpZiAoKGFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2wgPT0gVHhPbmx5KSB8fAorCQkgICAgKGFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2wgPT0gQm90aCkpIHsKKwkJCUVUMTMxMF9QaHlBY2Nlc3NNaUJpdChhZGFwdGVyLAorCQkJCQkgICAgICBUUlVFUEhZX0JJVF9TRVQsIDQsIDExLCBOVUxMKTsKKwkJfSBlbHNlIHsKKwkJCUVUMTMxMF9QaHlBY2Nlc3NNaUJpdChhZGFwdGVyLAorCQkJCQkgICAgICBUUlVFUEhZX0JJVF9DTEVBUiwgNCwgMTEsIE5VTEwpOworCQl9CisKKwkJaWYgKGFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2wgPT0gQm90aCkgeworCQkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KGFkYXB0ZXIsCisJCQkJCSAgICAgIFRSVUVQSFlfQklUX1NFVCwgNCwgMTAsIE5VTEwpOworCQl9IGVsc2UgeworCQkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KGFkYXB0ZXIsCisJCQkJCSAgICAgIFRSVUVQSFlfQklUX0NMRUFSLCA0LCAxMCwgTlVMTCk7CisJCX0KKworCQkvKiBTZXQgdGhlIHBoeSB0byBhdXRvbmVnb3RpYXRpb24gKi8KKwkJRVQxMzEwX1BoeUF1dG9OZWcoYWRhcHRlciwgdHJ1ZSk7CisKKwkJLyogTk9URSAtIERvIHdlIG5lZWQgdGhpcz8gKi8KKwkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KGFkYXB0ZXIsIFRSVUVQSFlfQklUX1NFVCwgMCwgOSwgTlVMTCk7CisKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIHN0YXR1czsKKwl9IGVsc2UgeworCQlFVDEzMTBfUGh5QXV0b05lZyhhZGFwdGVyLCBmYWxzZSk7CisKKwkJLyogU2V0IHRvIHRoZSBjb3JyZWN0IGZvcmNlIG1vZGUuICovCisJCWlmIChhZGFwdGVyLT5BaUZvcmNlRHB4ICE9IDEpIHsKKwkJCWlmICgoYWRhcHRlci0+UmVnaXN0cnlGbG93Q29udHJvbCA9PSBUeE9ubHkpIHx8CisJCQkgICAgKGFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2wgPT0gQm90aCkpIHsKKwkJCQlFVDEzMTBfUGh5QWNjZXNzTWlCaXQoYWRhcHRlciwKKwkJCQkJCSAgICAgIFRSVUVQSFlfQklUX1NFVCwgNCwgMTEsCisJCQkJCQkgICAgICBOVUxMKTsKKwkJCX0gZWxzZSB7CisJCQkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KGFkYXB0ZXIsCisJCQkJCQkgICAgICBUUlVFUEhZX0JJVF9DTEVBUiwgNCwgMTEsCisJCQkJCQkgICAgICBOVUxMKTsKKwkJCX0KKworCQkJaWYgKGFkYXB0ZXItPlJlZ2lzdHJ5Rmxvd0NvbnRyb2wgPT0gQm90aCkgeworCQkJCUVUMTMxMF9QaHlBY2Nlc3NNaUJpdChhZGFwdGVyLAorCQkJCQkJICAgICAgVFJVRVBIWV9CSVRfU0VULCA0LCAxMCwKKwkJCQkJCSAgICAgIE5VTEwpOworCQkJfSBlbHNlIHsKKwkJCQlFVDEzMTBfUGh5QWNjZXNzTWlCaXQoYWRhcHRlciwKKwkJCQkJCSAgICAgIFRSVUVQSFlfQklUX0NMRUFSLCA0LCAxMCwKKwkJCQkJCSAgICAgIE5VTEwpOworCQkJfQorCQl9IGVsc2UgeworCQkJRVQxMzEwX1BoeUFjY2Vzc01pQml0KGFkYXB0ZXIsCisJCQkJCSAgICAgIFRSVUVQSFlfQklUX0NMRUFSLCA0LCAxMCwgTlVMTCk7CisJCQlFVDEzMTBfUGh5QWNjZXNzTWlCaXQoYWRhcHRlciwKKwkJCQkJICAgICAgVFJVRVBIWV9CSVRfQ0xFQVIsIDQsIDExLCBOVUxMKTsKKwkJfQorCisJCXN3aXRjaCAoYWRhcHRlci0+QWlGb3JjZVNwZWVkKSB7CisJCWNhc2UgMTA6CisJCQlpZiAoYWRhcHRlci0+QWlGb3JjZURweCA9PSAxKSB7CisJCQkJVFBBTF9TZXRQaHkxMEhhbGZEdXBsZXgoYWRhcHRlcik7CisJCQl9IGVsc2UgaWYgKGFkYXB0ZXItPkFpRm9yY2VEcHggPT0gMikgeworCQkJCVRQQUxfU2V0UGh5MTBGdWxsRHVwbGV4KGFkYXB0ZXIpOworCQkJfSBlbHNlIHsKKwkJCQlUUEFMX1NldFBoeTEwRm9yY2UoYWRhcHRlcik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAxMDA6CisJCQlpZiAoYWRhcHRlci0+QWlGb3JjZURweCA9PSAxKSB7CisJCQkJVFBBTF9TZXRQaHkxMDBIYWxmRHVwbGV4KGFkYXB0ZXIpOworCQkJfSBlbHNlIGlmIChhZGFwdGVyLT5BaUZvcmNlRHB4ID09IDIpIHsKKwkJCQlUUEFMX1NldFBoeTEwMEZ1bGxEdXBsZXgoYWRhcHRlcik7CisJCQl9IGVsc2UgeworCQkJCVRQQUxfU2V0UGh5MTAwRm9yY2UoYWRhcHRlcik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAxMDAwOgorCQkJVFBBTF9TZXRQaHkxMDAwRnVsbER1cGxleChhZGFwdGVyKTsKKwkJCWJyZWFrOworCQl9CisKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIHN0YXR1czsKKwl9Cit9CisKK3ZvaWQgZXQxMzF4X01paV9jaGVjayhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLAorCQkgICAgICBNSV9CTVNSX3QgYm1zciwgTUlfQk1TUl90IGJtc3JfaW50cykKK3sKKwl1aW50OF90IHVjTGlua1N0YXR1czsKKwl1aW50MzJfdCB1aUF1dG9OZWdTdGF0dXM7CisJdWludDMyX3QgdWlTcGVlZDsKKwl1aW50MzJfdCB1aUR1cGxleDsKKwl1aW50MzJfdCB1aU1kaU1kaXg7CisJdWludDMyX3QgdWlNYXN0ZXJTbGF2ZTsKKwl1aW50MzJfdCB1aVBvbGFyaXR5OworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCWlmIChibXNyX2ludHMuYml0cy5saW5rX3N0YXR1cykgeworCQlpZiAoYm1zci5iaXRzLmxpbmtfc3RhdHVzKSB7CisJCQlwQWRhcHRlci0+UG9NZ210LlRyYW5zUGh5Q29tYU1vZGVPbkJvb3QgPSAyMDsKKworCQkJLyogVXBkYXRlIG91ciBzdGF0ZSB2YXJpYWJsZXMgYW5kIGluZGljYXRlIHRoZQorCQkJICogY29ubmVjdGVkIHN0YXRlCisJCQkgKi8KKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+TG9jaywgbG9ja2ZsYWdzKTsKKworCQkJcEFkYXB0ZXItPk1lZGlhU3RhdGUgPSBORVRJRl9TVEFUVVNfTUVESUFfQ09OTkVDVDsKKwkJCU1QX0NMRUFSX0ZMQUcocEFkYXB0ZXIsIGZNUF9BREFQVEVSX0xJTktfREVURUNUSU9OKTsKKworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPkxvY2ssIGxvY2tmbGFncyk7CisKKwkJCS8qIERvbid0IGluZGljYXRlIHN0YXRlIGlmIHdlJ3JlIGluIGxvb3BiYWNrIG1vZGUgKi8KKwkJCWlmIChwQWRhcHRlci0+UmVnaXN0cnlQaHlMb29wYmsgPT0gZmFsc2UpIHsKKwkJCQluZXRpZl9jYXJyaWVyX29uKHBBZGFwdGVyLT5uZXRkZXYpOworCQkJfQorCQl9IGVsc2UgeworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJMaW5rIGRvd24gY2FibGUgcHJvYmxlbVxuIik7CisKKwkJCWlmIChwQWRhcHRlci0+dWlMaW5rU3BlZWQgPT0gVFJVRVBIWV9TUEVFRF8xME1CUFMpIHsKKwkJCQkvLyBOT1RFIC0gSXMgdGhlcmUgYSB3YXkgdG8gcXVlcnkgdGhpcyB3aXRob3V0IFRydWVQSFk/CisJCQkJLy8gJiYgVFJVX1F1ZXJ5Q29yZVR5cGUocEFkYXB0ZXItPmhUcnVlUGh5LCAwKSA9PSBFTUlfVFJVRVBIWV9BMTNPKSB7CisJCQkJdWludDE2X3QgUmVnaXN0ZXIxODsKKworCQkJCU1pUmVhZChwQWRhcHRlciwgMHgxMiwgJlJlZ2lzdGVyMTgpOworCQkJCU1pV3JpdGUocEFkYXB0ZXIsIDB4MTIsIFJlZ2lzdGVyMTggfCAweDQpOworCQkJCU1pV3JpdGUocEFkYXB0ZXIsIDB4MTAsIFJlZ2lzdGVyMTggfCAweDg0MDIpOworCQkJCU1pV3JpdGUocEFkYXB0ZXIsIDB4MTEsIFJlZ2lzdGVyMTggfCA1MTEpOworCQkJCU1pV3JpdGUocEFkYXB0ZXIsIDB4MTIsIFJlZ2lzdGVyMTgpOworCQkJfQorCisJCQkvKiBGb3IgdGhlIGZpcnN0IE4gc2Vjb25kcyBvZiBsaWZlLCB3ZSBhcmUgaW4gImxpbmsKKwkJCSAqIGRldGVjdGlvbiIgV2hlbiB3ZSBhcmUgaW4gdGhpcyBzdGF0ZSwgd2Ugc2hvdWxkCisJCQkgKiBvbmx5IHJlcG9ydCAiY29ubmVjdGVkIi4gV2hlbiB0aGUgTGlua0RldGVjdGlvbgorCQkJICogVGltZXIgZXhwaXJlcywgd2UgY2FuIHJlcG9ydCBkaXNjb25uZWN0ZWQgKGhhbmRsZWQKKwkJCSAqIGluIHRoZSBMaW5rRGV0ZWN0aW9uRFBDKS4KKwkJCSAqLworCQkJaWYgKChNUF9JU19GTEFHX0NMRUFSCisJCQkgICAgIChwQWRhcHRlciwgZk1QX0FEQVBURVJfTElOS19ERVRFQ1RJT04pKQorCQkJICAgIHx8IChwQWRhcHRlci0+TWVkaWFTdGF0ZSA9PQorCQkJCU5FVElGX1NUQVRVU19NRURJQV9ESVNDT05ORUNUKSkgeworCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+TG9jaywgbG9ja2ZsYWdzKTsKKwkJCQlwQWRhcHRlci0+TWVkaWFTdGF0ZSA9CisJCQkJICAgIE5FVElGX1NUQVRVU19NRURJQV9ESVNDT05ORUNUOworCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5Mb2NrLAorCQkJCQkJICAgICAgIGxvY2tmbGFncyk7CisKKwkJCQkvKiBPbmx5IGluZGljYXRlIHN0YXRlIGlmIHdlJ3JlIGluIGxvb3BiYWNrCisJCQkJICogbW9kZQorCQkJCSAqLworCQkJCWlmIChwQWRhcHRlci0+UmVnaXN0cnlQaHlMb29wYmsgPT0gZmFsc2UpIHsKKwkJCQkJbmV0aWZfY2Fycmllcl9vZmYocEFkYXB0ZXItPm5ldGRldik7CisJCQkJfQorCQkJfQorCisJCQlwQWRhcHRlci0+dWlMaW5rU3BlZWQgPSAwOworCQkJcEFkYXB0ZXItPnVpRHVwbGV4TW9kZSA9IDA7CisKKwkJCS8qIEZyZWUgdGhlIHBhY2tldHMgYmVpbmcgYWN0aXZlbHkgc2VudCAmIHN0b3BwZWQgKi8KKwkJCWV0MTMxeF9mcmVlX2J1c3lfc2VuZF9wYWNrZXRzKHBBZGFwdGVyKTsKKworCQkJLyogUmUtaW5pdGlhbGl6ZSB0aGUgc2VuZCBzdHJ1Y3R1cmVzICovCisJCQlldDEzMXhfaW5pdF9zZW5kKHBBZGFwdGVyKTsKKworCQkJLyogUmVzZXQgdGhlIFJGRCBsaXN0IGFuZCByZS1zdGFydCBSVSAqLworCQkJZXQxMzF4X3Jlc2V0X3JlY3YocEFkYXB0ZXIpOworCisJCQkvKgorCQkJICogQnJpbmcgdGhlIGRldmljZSBiYWNrIHRvIHRoZSBzdGF0ZSBpdCB3YXMgZHVyaW5nCisJCQkgKiBpbml0IHByaW9yIHRvIGF1dG9uZWdvdGlhdGlvbiBiZWluZyBjb21wbGV0ZS4gVGhpcworCQkJICogd2F5LCB3aGVuIHdlIGdldCB0aGUgYXV0by1uZWcgY29tcGxldGUgaW50ZXJydXB0LAorCQkJICogd2UgY2FuIGNvbXBsZXRlIGluaXQgYnkgY2FsbGluZyBDb25maWdNYWNSRUdTMi4KKwkJCSAqLworCQkJZXQxMzF4X3NvZnRfcmVzZXQocEFkYXB0ZXIpOworCisJCQkvKiBTZXR1cCBFVDEzMTAgYXMgcGVyIHRoZSBkb2N1bWVudGF0aW9uICovCisJCQlldDEzMXhfYWRhcHRlcl9zZXR1cChwQWRhcHRlcik7CisKKwkJCS8qIFNldHVwIHRoZSBQSFkgaW50byBjb21hIG1vZGUgdW50aWwgdGhlIGNhYmxlIGlzCisJCQkgKiBwbHVnZ2VkIGJhY2sgaW4KKwkJCSAqLworCQkJaWYgKHBBZGFwdGVyLT5SZWdpc3RyeVBoeUNvbWEgPT0gMSkgeworCQkJCUVuYWJsZVBoeUNvbWEocEFkYXB0ZXIpOworCQkJfQorCQl9CisJfQorCisJaWYgKGJtc3JfaW50cy5iaXRzLmF1dG9fbmVnX2NvbXBsZXRlIHx8CisJICAgICgocEFkYXB0ZXItPkFpRm9yY2VEcHggPT0gMykgJiYgKGJtc3JfaW50cy5iaXRzLmxpbmtfc3RhdHVzKSkpIHsKKwkJaWYgKGJtc3IuYml0cy5hdXRvX25lZ19jb21wbGV0ZSB8fCAocEFkYXB0ZXItPkFpRm9yY2VEcHggPT0gMykpIHsKKwkJCUVUMTMxMF9QaHlMaW5rU3RhdHVzKHBBZGFwdGVyLAorCQkJCQkgICAgICZ1Y0xpbmtTdGF0dXMsICZ1aUF1dG9OZWdTdGF0dXMsCisJCQkJCSAgICAgJnVpU3BlZWQsICZ1aUR1cGxleCwgJnVpTWRpTWRpeCwKKwkJCQkJICAgICAmdWlNYXN0ZXJTbGF2ZSwgJnVpUG9sYXJpdHkpOworCisJCQlwQWRhcHRlci0+dWlMaW5rU3BlZWQgPSB1aVNwZWVkOworCQkJcEFkYXB0ZXItPnVpRHVwbGV4TW9kZSA9IHVpRHVwbGV4OworCisJCQlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAicEFkYXB0ZXItPnVpTGlua1NwZWVkIDB4JTA0eCwgcEFkYXB0ZXItPnVpRHVwbGV4IDB4JTA4eFxuIiwKKwkJCQkgIHBBZGFwdGVyLT51aUxpbmtTcGVlZCwKKwkJCQkgIHBBZGFwdGVyLT51aUR1cGxleE1vZGUpOworCisJCQlwQWRhcHRlci0+UG9NZ210LlRyYW5zUGh5Q29tYU1vZGVPbkJvb3QgPSAyMDsKKworCQkJaWYgKHBBZGFwdGVyLT51aUxpbmtTcGVlZCA9PSBUUlVFUEhZX1NQRUVEXzEwTUJQUykgeworCQkJCS8vIE5PVEUgLSBJcyB0aGVyZSBhIHdheSB0byBxdWVyeSB0aGlzIHdpdGhvdXQgVHJ1ZVBIWT8KKwkJCQkvLyAmJiBUUlVfUXVlcnlDb3JlVHlwZShwQWRhcHRlci0+aFRydWVQaHksIDApID09IEVNSV9UUlVFUEhZX0ExM08pIHsKKwkJCQl1aW50MTZfdCBSZWdpc3RlcjE4OworCisJCQkJTWlSZWFkKHBBZGFwdGVyLCAweDEyLCAmUmVnaXN0ZXIxOCk7CisJCQkJTWlXcml0ZShwQWRhcHRlciwgMHgxMiwgUmVnaXN0ZXIxOCB8IDB4NCk7CisJCQkJTWlXcml0ZShwQWRhcHRlciwgMHgxMCwgUmVnaXN0ZXIxOCB8IDB4ODQwMik7CisJCQkJTWlXcml0ZShwQWRhcHRlciwgMHgxMSwgUmVnaXN0ZXIxOCB8IDUxMSk7CisJCQkJTWlXcml0ZShwQWRhcHRlciwgMHgxMiwgUmVnaXN0ZXIxOCk7CisJCQl9CisKKwkJCUNvbmZpZ0Zsb3dDb250cm9sKHBBZGFwdGVyKTsKKworCQkJaWYgKChwQWRhcHRlci0+dWlMaW5rU3BlZWQgPT0gVFJVRVBIWV9TUEVFRF8xMDAwTUJQUykgJiYKKwkJCSAgICAocEFkYXB0ZXItPlJlZ2lzdHJ5SnVtYm9QYWNrZXQgPiAyMDQ4KSkKKwkJCXsKKwkJCQlFVDEzMTBfUGh5QW5kT3JSZWcocEFkYXB0ZXIsIDB4MTYsIDB4Y2ZmZiwKKwkJCQkJCSAgIDB4MjAwMCk7CisJCQl9CisKKwkJCVNldFJ4RG1hVGltZXIocEFkYXB0ZXIpOworCQkJQ29uZmlnTUFDUmVnczIocEFkYXB0ZXIpOworCQl9CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBUUEFMX1NldFBoeTEwSGFsZkR1cGxleCAtIEZvcmNlIHRoZSBwaHkgaW50byAxMCBCYXNlIFQgSGFsZiBEdXBsZXggbW9kZS4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBBbHNvIHNldHMgdGhlIE1BQyBzbyBpdCBpcyBzeW5jZCB1cCBwcm9wZXJseQorICovCit2b2lkIFRQQUxfU2V0UGh5MTBIYWxmRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFBvd2VyIGRvd24gUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMSk7CisKKwkvKiBGaXJzdCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIGFsbCBvdGhlciBhZHZlcnRpc2VtZW50ICovCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisKKwkvKiBTZXQgb3VyIGFkdmVydGlzZSB2YWx1ZXMgYWNjb3JkaW5nbHkgKi8KKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX0hBTEYpOworCisJLyogUG93ZXIgdXAgUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMCk7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIFRQQUxfU2V0UGh5MTBGdWxsRHVwbGV4IC0gRm9yY2UgdGhlIHBoeSBpbnRvIDEwIEJhc2UgVCBGdWxsIER1cGxleCBtb2RlLgorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIHRoZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIEFsc28gc2V0cyB0aGUgTUFDIHNvIGl0IGlzIHN5bmNkIHVwIHByb3Blcmx5CisgKi8KK3ZvaWQgVFBBTF9TZXRQaHkxMEZ1bGxEdXBsZXgoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUG93ZXIgZG93biBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAxKTsKKworCS8qIEZpcnN0IHdlIG5lZWQgdG8gdHVybiBvZmYgYWxsIG90aGVyIGFkdmVydGlzZW1lbnQgKi8KKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisKKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9OT05FKTsKKworCS8qIFNldCBvdXIgYWR2ZXJ0aXNlIHZhbHVlcyBhY2NvcmRpbmdseSAqLworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfRlVMTCk7CisKKwkvKiBQb3dlciB1cCBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAwKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogVFBBTF9TZXRQaHkxMEZvcmNlIC0gRm9yY2UgQmFzZS1UIEZEIG1vZGUgV0lUSE9VVCB1c2luZyBhdXRvbmVnb3RpYXRpb24KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBUUEFMX1NldFBoeTEwRm9yY2Uoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUG93ZXIgZG93biBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAxKTsKKworCS8qIERpc2FibGUgYXV0b25lZyAqLworCUVUMTMxMF9QaHlBdXRvTmVnKHBBZGFwdGVyLCBmYWxzZSk7CisKKwkvKiBEaXNhYmxlIGFsbCBhZHZlcnRpc2VtZW50ICovCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisJRVQxMzEwX1BoeUFkdmVydGlzZTEwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisKKwkvKiBGb3JjZSAxMCBNYnBzICovCisJRVQxMzEwX1BoeVNwZWVkU2VsZWN0KHBBZGFwdGVyLCBUUlVFUEhZX1NQRUVEXzEwTUJQUyk7CisKKwkvKiBGb3JjZSBGdWxsIGR1cGxleCAqLworCUVUMTMxMF9QaHlEdXBsZXhNb2RlKHBBZGFwdGVyLCBUUlVFUEhZX0RVUExFWF9GVUxMKTsKKworCS8qIFBvd2VyIHVwIFBIWSAqLworCUVUMTMxMF9QaHlQb3dlckRvd24ocEFkYXB0ZXIsIDApOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBUUEFMX1NldFBoeTEwMEhhbGZEdXBsZXggLSBGb3JjZSAxMDAgQmFzZSBUIEhhbGYgRHVwbGV4IG1vZGUuCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gdGhlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogQWxzbyBzZXRzIHRoZSBNQUMgc28gaXQgaXMgc3luY2QgdXAgcHJvcGVybHkuCisgKi8KK3ZvaWQgVFBBTF9TZXRQaHkxMDBIYWxmRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFBvd2VyIGRvd24gUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMSk7CisKKwkvKiBmaXJzdCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIGFsbCBvdGhlciBhZHZlcnRpc2VtZW50ICovCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9OT05FKTsKKworCS8qIFNldCBvdXIgYWR2ZXJ0aXNlIHZhbHVlcyBhY2NvcmRpbmdseSAqLworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX0hBTEYpOworCisJLyogU2V0IHNwZWVkICovCisJRVQxMzEwX1BoeVNwZWVkU2VsZWN0KHBBZGFwdGVyLCBUUlVFUEhZX1NQRUVEXzEwME1CUFMpOworCisJLyogUG93ZXIgdXAgUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMCk7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIFRQQUxfU2V0UGh5MTAwRnVsbER1cGxleCAtIEZvcmNlIDEwMCBCYXNlIFQgRnVsbCBEdXBsZXggbW9kZS4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBBbHNvIHNldHMgdGhlIE1BQyBzbyBpdCBpcyBzeW5jZCB1cCBwcm9wZXJseQorICovCit2b2lkIFRQQUxfU2V0UGh5MTAwRnVsbER1cGxleChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBQb3dlciBkb3duIFBIWSAqLworCUVUMTMxMF9QaHlQb3dlckRvd24ocEFkYXB0ZXIsIDEpOworCisJLyogRmlyc3Qgd2UgbmVlZCB0byB0dXJuIG9mZiBhbGwgb3RoZXIgYWR2ZXJ0aXNlbWVudCAqLworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9OT05FKTsKKworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisKKwkvKiBTZXQgb3VyIGFkdmVydGlzZSB2YWx1ZXMgYWNjb3JkaW5nbHkgKi8KKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9GVUxMKTsKKworCS8qIFBvd2VyIHVwIFBIWSAqLworCUVUMTMxMF9QaHlQb3dlckRvd24ocEFkYXB0ZXIsIDApOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBUUEFMX1NldFBoeTEwMEZvcmNlIC0gRm9yY2UgMTAwIEJhc2VUIEZEIG1vZGUgV0lUSE9VVCB1c2luZyBhdXRvbmVnb3RpYXRpb24KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBUUEFMX1NldFBoeTEwMEZvcmNlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFBvd2VyIGRvd24gUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMSk7CisKKwkvKiBEaXNhYmxlIGF1dG9uZWcgKi8KKwlFVDEzMTBfUGh5QXV0b05lZyhwQWRhcHRlciwgZmFsc2UpOworCisJLyogRGlzYWJsZSBhbGwgYWR2ZXJ0aXNlbWVudCAqLworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9OT05FKTsKKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCisJLyogRm9yY2UgMTAwIE1icHMgKi8KKwlFVDEzMTBfUGh5U3BlZWRTZWxlY3QocEFkYXB0ZXIsIFRSVUVQSFlfU1BFRURfMTAwTUJQUyk7CisKKwkvKiBGb3JjZSBGdWxsIGR1cGxleCAqLworCUVUMTMxMF9QaHlEdXBsZXhNb2RlKHBBZGFwdGVyLCBUUlVFUEhZX0RVUExFWF9GVUxMKTsKKworCS8qIFBvd2VyIHVwIFBIWSAqLworCUVUMTMxMF9QaHlQb3dlckRvd24ocEFkYXB0ZXIsIDApOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBUUEFMX1NldFBoeTEwMDBGdWxsRHVwbGV4IC0gRm9yY2UgMTAwMCBCYXNlIFQgRnVsbCBEdXBsZXggbW9kZQorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIHRoZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIEFsc28gc2V0cyB0aGUgTUFDIHNvIGl0IGlzIHN5bmNkIHVwIHByb3Blcmx5LgorICovCit2b2lkIFRQQUxfU2V0UGh5MTAwMEZ1bGxEdXBsZXgoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUG93ZXIgZG93biBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAxKTsKKworCS8qIGZpcnN0IHdlIG5lZWQgdG8gdHVybiBvZmYgYWxsIG90aGVyIGFkdmVydGlzZW1lbnQgKi8KKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9OT05FKTsKKworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisKKwkvKiBzZXQgb3VyIGFkdmVydGlzZSB2YWx1ZXMgYWNjb3JkaW5nbHkgKi8KKwlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfRlVMTCk7CisKKwkvKiBwb3dlciB1cCBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAwKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogVFBBTF9TZXRQaHlBdXRvTmVnIC0gU2V0IHBoeSB0byBhdXRvbmVnb3RpYXRpb24gbW9kZS4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBUUEFMX1NldFBoeUF1dG9OZWcoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUG93ZXIgZG93biBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAxKTsKKworCS8qIFR1cm4gb24gYWR2ZXJ0aXNlbWVudCBvZiBhbGwgY2FwYWJpbGl0aWVzICovCisJRVQxMzEwX1BoeUFkdmVydGlzZTEwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9CT1RIKTsKKworCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX0JPVEgpOworCisJaWYgKHBBZGFwdGVyLT5EZXZpY2VJRCAhPSBFVDEzMVhfUENJX0RFVklDRV9JRF9GQVNUKSB7CisJCUVUMTMxMF9QaHlBZHZlcnRpc2UxMDAwQmFzZVQocEFkYXB0ZXIsIFRSVUVQSFlfQURWX0RVUExFWF9GVUxMKTsKKwl9IGVsc2UgeworCQlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSk7CisJfQorCisJLyogTWFrZSBzdXJlIGF1dG8tbmVnIGlzIE9OIChpdCBpcyBkaXNhYmxlZCBpbiBGT1JDRSBtb2RlcykgKi8KKwlFVDEzMTBfUGh5QXV0b05lZyhwQWRhcHRlciwgdHJ1ZSk7CisKKwkvKiBQb3dlciB1cCBQSFkgKi8KKwlFVDEzMTBfUGh5UG93ZXJEb3duKHBBZGFwdGVyLCAwKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKworLyoKKyAqIFRoZSByb3V0aW5lcyB3aGljaCBmb2xsb3cgcHJvdmlkZSBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBQSFksIGFuZCBhcmUgdXNlZAorICogcHJpbWFyaWx5IGJ5IHRoZSByb3V0aW5lcyBhYm92ZSAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgZmV3IHBsYWNlcyBlbHNld2hlcmUKKyAqIGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBsZXZlbCBvZiBhY2Nlc3MgaXMgcmVxdWlyZWQpLgorICovCisKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBDb25maWdQaHlbMjVdWzJdID0geworCS8qIFJlZyAgICAgIFZhbHVlICAgICAgUmVnaXN0ZXIgKi8KKwkvKiBBZGRyICAgICAgICAgICAgICAgICAgICAgICAgICovCisJezB4ODgwQiwgMHgwOTI2fSwJLyogQWZlSWZDcmVnNEIxMDAwTXNicyAqLworCXsweDg4MEMsIDB4MDkyNn0sCS8qIEFmZUlmQ3JlZzRCMTAwTXNicyAqLworCXsweDg4MEQsIDB4MDkyNn0sCS8qIEFmZUlmQ3JlZzRCMTBNc2JzICovCisKKwl7MHg4ODBFLCAweEI0RDN9LAkvKiBBZmVJZkNyZWc0QjEwMDBMc2JzICovCisJezB4ODgwRiwgMHhCNEQzfSwJLyogQWZlSWZDcmVnNEIxMDBMc2JzICovCisJezB4ODgxMCwgMHhCNEQzfSwJLyogQWZlSWZDcmVnNEIxMExzYnMgKi8KKworCXsweDg4MDUsIDB4QjAzRX0sCS8qIEFmZUlmQ3JlZzNCMTAwME1zYnMgKi8KKwl7MHg4ODA2LCAweEIwM0V9LAkvKiBBZmVJZkNyZWczQjEwME1zYnMgKi8KKwl7MHg4ODA3LCAweEZGMDB9LAkvKiBBZmVJZkNyZWczQjEwTXNicyAqLworCisJezB4ODgwOCwgMHhFMDkwfSwJLyogQWZlSWZDcmVnM0IxMDAwTHNicyAqLworCXsweDg4MDksIDB4RTExMH0sCS8qIEFmZUlmQ3JlZzNCMTAwTHNicyAqLworCXsweDg4MEEsIDB4MDAwMH0sCS8qIEFmZUlmQ3JlZzNCMTBMc2JzICovCisKKwl7MHgzMDBELCAxfSwJCS8qIERpc2FibGVOb3JtICovCisKKwl7MHgyODBDLCAweDAxODB9LAkvKiBMaW5rSG9sZEVuZCAqLworCisJezB4MUMyMSwgMHgwMDAyfSwJLyogQWxwaGFNICovCisKKwl7MHgzODIxLCA2fSwJCS8qIEZmZUxrZ1R4MCAqLworCXsweDM4MUQsIDF9LAkJLyogRmZlTGtnMWc0ICovCisJezB4MzgxRSwgMX0sCQkvKiBGZmVMa2cxZzUgKi8KKwl7MHgzODFGLCAxfSwJCS8qIEZmZUxrZzFnNiAqLworCXsweDM4MjAsIDF9LAkJLyogRmZlTGtnMWc3ICovCisKKwl7MHg4NDAyLCAweDAxRjB9LAkvKiBCdGluYWN0ICovCisJezB4ODAwRSwgMjB9LAkJLyogTGZ0cmFpblRpbWUgKi8KKwl7MHg4MDBGLCAyNH0sCQkvKiBEdmd1YXJkVGltZSAqLworCXsweDgwMTAsIDQ2fSwJCS8qIElkbGd1YXJkVGltZSAqLworCisJezAsIDB9CisKK307CisKKy8qIGNvbmRlbnNlZCB2ZXJzaW9uIG9mIHRoZSBwaHkgaW5pdGlhbGl6YXRpb24gcm91dGluZSAqLwordm9pZCBFVDEzMTBfUGh5SW5pdChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXVpbnQxNl90IHVzRGF0YSwgdXNJbmRleDsKKworCWlmIChwQWRhcHRlciA9PSBOVUxMKSB7CisJCXJldHVybjsKKwl9CisKKwkvLyBnZXQgdGhlIGlkZW50aXR5IChhZ2FpbiA/KQorCU1pUmVhZChwQWRhcHRlciwgUEhZX0lEXzEsICZ1c0RhdGEpOworCU1pUmVhZChwQWRhcHRlciwgUEhZX0lEXzIsICZ1c0RhdGEpOworCisJLy8gd2hhdCBkb2VzIHRoaXMgZG8vYWNoaWV2ZSA/CisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfTVBIWV9DT05UUk9MX1JFRywgJnVzRGF0YSk7CS8vIHNob3VsZCByZWFkIDAwMDIKKwlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfTVBIWV9DT05UUk9MX1JFRywJMHgwMDA2KTsKKworCS8vIHJlYWQgbW9kZW0gcmVnaXN0ZXIgMDQwMiwgc2hvdWxkIEkgZG8gc29tZXRoaW5nIHdpdGggdGhlIHJldHVybiBkYXRhID8KKwlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfSU5ERVhfUkVHLCAweDA0MDIpOworCU1pUmVhZChwQWRhcHRlciwgUEhZX0RBVEFfUkVHLCAmdXNEYXRhKTsKKworCS8vIHdoYXQgZG9lcyB0aGlzIGRvL2FjaGlldmUgPworCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9NUEhZX0NPTlRST0xfUkVHLCAweDAwMDIpOworCisJLy8gZ2V0IHRoZSBpZGVudGl0eSAoYWdhaW4gPykKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9JRF8xLCAmdXNEYXRhKTsKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9JRF8yLCAmdXNEYXRhKTsKKworCS8vIHdoYXQgZG9lcyB0aGlzIGFjaGlldmUgPworCU1pUmVhZChwQWRhcHRlciwgUEhZX01QSFlfQ09OVFJPTF9SRUcsICZ1c0RhdGEpOwkvLyBzaG91bGQgcmVhZCAwMDAyCisJTWlXcml0ZShwQWRhcHRlciwgUEhZX01QSFlfQ09OVFJPTF9SRUcsIDB4MDAwNik7CisKKwkvLyByZWFkIG1vZGVtIHJlZ2lzdGVyIDA0MDIsIHNob3VsZCBJIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXR1cm4gZGF0YT8KKwlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfSU5ERVhfUkVHLCAweDA0MDIpOworCU1pUmVhZChwQWRhcHRlciwgUEhZX0RBVEFfUkVHLCAmdXNEYXRhKTsKKworCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9NUEhZX0NPTlRST0xfUkVHLCAweDAwMDIpOworCisJLy8gd2hhdCBkb2VzIHRoaXMgYWNoaWV2ZSAoc2hvdWxkIHJldHVybiAweDEwNDApCisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgJnVzRGF0YSk7CisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfTVBIWV9DT05UUk9MX1JFRywgJnVzRGF0YSk7CS8vIHNob3VsZCByZWFkIDAwMDIKKwlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgMHgxODQwKTsKKworCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9NUEhZX0NPTlRST0xfUkVHLCAweDAwMDcpOworCisJLy8gaGVyZSB0aGUgd3JpdGluZyBvZiB0aGUgYXJyYXkgc3RhcnRzLi4uLgorCXVzSW5kZXggPSAwOworCXdoaWxlIChDb25maWdQaHlbdXNJbmRleF1bMF0gIT0gMHgwMDAwKSB7CisJCS8vIHdyaXRlIHZhbHVlCisJCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9JTkRFWF9SRUcsIENvbmZpZ1BoeVt1c0luZGV4XVswXSk7CisJCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9EQVRBX1JFRywgQ29uZmlnUGh5W3VzSW5kZXhdWzFdKTsKKworCQkvLyByZWFkIGl0IGJhY2sKKwkJTWlXcml0ZShwQWRhcHRlciwgUEhZX0lOREVYX1JFRywgQ29uZmlnUGh5W3VzSW5kZXhdWzBdKTsKKwkJTWlSZWFkKHBBZGFwdGVyLCBQSFlfREFUQV9SRUcsICZ1c0RhdGEpOworCisJCS8vIGRvIGEgY2hlY2sgb24gdGhlIHZhbHVlIHJlYWQgYmFjayA/CisJCXVzSW5kZXgrKzsKKwl9CisJLy8gaGVyZSB0aGUgd3JpdGluZyBvZiB0aGUgYXJyYXkgZW5kcy4uLgorCisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgJnVzRGF0YSk7CS8vIDB4MTg0MAorCU1pUmVhZChwQWRhcHRlciwgUEhZX01QSFlfQ09OVFJPTF9SRUcsICZ1c0RhdGEpOwkvLyBzaG91bGQgcmVhZCAwMDA3CisJTWlXcml0ZShwQWRhcHRlciwgUEhZX0NPTlRST0wsIDB4MTA0MCk7CisJTWlXcml0ZShwQWRhcHRlciwgUEhZX01QSFlfQ09OVFJPTF9SRUcsIDB4MDAwMik7Cit9CisKK3ZvaWQgRVQxMzEwX1BoeVJlc2V0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJTWlXcml0ZShwQWRhcHRlciwgUEhZX0NPTlRST0wsIDB4ODAwMCk7Cit9CisKK3ZvaWQgRVQxMzEwX1BoeVBvd2VyRG93bihzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLCBib29sIGRvd24pCit7CisJdWludDE2X3QgdXNEYXRhOworCisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgJnVzRGF0YSk7CisKKwlpZiAoZG93biA9PSBmYWxzZSkgeworCQkvLyBQb3dlciBVUAorCQl1c0RhdGEgJj0gfjB4MDgwMDsKKwkJTWlXcml0ZShwQWRhcHRlciwgUEhZX0NPTlRST0wsIHVzRGF0YSk7CisJfSBlbHNlIHsKKwkJLy8gUG93ZXIgRE9XTgorCQl1c0RhdGEgfD0gMHgwODAwOworCQlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgdXNEYXRhKTsKKwl9Cit9CisKK3ZvaWQgRVQxMzEwX1BoeUF1dG9OZWcoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgYm9vbCBlbmFibGUpCit7CisJdWludDE2X3QgdXNEYXRhOworCisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgJnVzRGF0YSk7CisKKwlpZiAoZW5hYmxlID09IHRydWUpIHsKKwkJLy8gQXV0b25lZ290aWF0aW9uIE9OCisJCXVzRGF0YSB8PSAweDEwMDA7CisJCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9DT05UUk9MLCB1c0RhdGEpOworCX0gZWxzZSB7CisJCS8vIEF1dG9uZWdvdGlhdGlvbiBPRkYKKwkJdXNEYXRhICY9IH4weDEwMDA7CisJCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9DT05UUk9MLCB1c0RhdGEpOworCX0KK30KKwordm9pZCBFVDEzMTBfUGh5RHVwbGV4TW9kZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLCB1aW50MTZfdCBkdXBsZXgpCit7CisJdWludDE2X3QgdXNEYXRhOworCisJTWlSZWFkKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgJnVzRGF0YSk7CisKKwlpZiAoZHVwbGV4ID09IFRSVUVQSFlfRFVQTEVYX0ZVTEwpIHsKKwkJLy8gU2V0IEZ1bGwgRHVwbGV4CisJCXVzRGF0YSB8PSAweDEwMDsKKwkJTWlXcml0ZShwQWRhcHRlciwgUEhZX0NPTlRST0wsIHVzRGF0YSk7CisJfSBlbHNlIHsKKwkJLy8gU2V0IEhhbGYgRHVwbGV4CisJCXVzRGF0YSAmPSB+MHgxMDA7CisJCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9DT05UUk9MLCB1c0RhdGEpOworCX0KK30KKwordm9pZCBFVDEzMTBfUGh5U3BlZWRTZWxlY3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgdWludDE2X3Qgc3BlZWQpCit7CisJdWludDE2X3QgdXNEYXRhOworCisJLy8gUmVhZCB0aGUgUEhZIGNvbnRyb2wgcmVnaXN0ZXIKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9DT05UUk9MLCAmdXNEYXRhKTsKKworCS8vIENsZWFyIGFsbCBTcGVlZCBzZXR0aW5ncyAoQml0cyA2LCAxMykKKwl1c0RhdGEgJj0gfjB4MjA0MDsKKworCS8vIFJlc2V0IHRoZSBzcGVlZCBiaXRzIGJhc2VkIG9uIHVzZXIgc2VsZWN0aW9uCisJc3dpdGNoIChzcGVlZCkgeworCWNhc2UgVFJVRVBIWV9TUEVFRF8xME1CUFM6CisJCS8vIEJpdHMgYWxyZWFkeSBjbGVhcmVkIGFib3ZlLCBkbyBub3RoaW5nCisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX1NQRUVEXzEwME1CUFM6CisJCS8vIDEwME0gPT0gU2V0IGJpdCAxMworCQl1c0RhdGEgfD0gMHgyMDAwOworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9TUEVFRF8xMDAwTUJQUzoKKwlkZWZhdWx0OgorCQl1c0RhdGEgfD0gMHgwMDQwOworCQlicmVhazsKKwl9CisKKwkvLyBXcml0ZSBiYWNrIHRoZSBuZXcgc3BlZWQKKwlNaVdyaXRlKHBBZGFwdGVyLCBQSFlfQ09OVFJPTCwgdXNEYXRhKTsKK30KKwordm9pZCBFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwMEJhc2VUKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIsCisJCQkJICB1aW50MTZfdCBkdXBsZXgpCit7CisJdWludDE2X3QgdXNEYXRhOworCisJLy8gUmVhZCB0aGUgUEhZIDEwMDAgQmFzZS1UIENvbnRyb2wgUmVnaXN0ZXIKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV8xMDAwX0NPTlRST0wsICZ1c0RhdGEpOworCisJLy8gQ2xlYXIgQml0cyA4LDkKKwl1c0RhdGEgJj0gfjB4MDMwMDsKKworCXN3aXRjaCAoZHVwbGV4KSB7CisJY2FzZSBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORToKKwkJLy8gRHVwbGV4IGFscmVhZHkgY2xlYXJlZCwgZG8gbm90aGluZworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0ZVTEw6CisJCS8vIFNldCBCaXQgOQorCQl1c0RhdGEgfD0gMHgwMjAwOworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0hBTEY6CisJCS8vIFNldCBCaXQgOAorCQl1c0RhdGEgfD0gMHgwMTAwOworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0JPVEg6CisJZGVmYXVsdDoKKwkJdXNEYXRhIHw9IDB4MDMwMDsKKwkJYnJlYWs7CisJfQorCisJLy8gV3JpdGUgYmFjayBhZHZlcnRpc2VtZW50CisJTWlXcml0ZShwQWRhcHRlciwgUEhZXzEwMDBfQ09OVFJPTCwgdXNEYXRhKTsKK30KKwordm9pZCBFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwQmFzZVQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwKKwkJCQkgdWludDE2X3QgZHVwbGV4KQoreworCXVpbnQxNl90IHVzRGF0YTsKKworCS8vIFJlYWQgdGhlIEF1dG9uZWdvdGlhdGlvbiBSZWdpc3RlciAoMTAvMTAwKQorCU1pUmVhZChwQWRhcHRlciwgUEhZX0FVVE9fQURWRVJUSVNFTUVOVCwgJnVzRGF0YSk7CisKKwkvLyBDbGVhciBiaXRzIDcsOAorCXVzRGF0YSAmPSB+MHgwMTgwOworCisJc3dpdGNoIChkdXBsZXgpIHsKKwljYXNlIFRSVUVQSFlfQURWX0RVUExFWF9OT05FOgorCQkvLyBEdXBsZXggYWxyZWFkeSBjbGVhcmVkLCBkbyBub3RoaW5nCisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX0FEVl9EVVBMRVhfRlVMTDoKKwkJLy8gU2V0IEJpdCA4CisJCXVzRGF0YSB8PSAweDAxMDA7CisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX0FEVl9EVVBMRVhfSEFMRjoKKwkJLy8gU2V0IEJpdCA3CisJCXVzRGF0YSB8PSAweDAwODA7CisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX0FEVl9EVVBMRVhfQk9USDoKKwlkZWZhdWx0OgorCQkvLyBTZXQgQml0cyA3LDgKKwkJdXNEYXRhIHw9IDB4MDE4MDsKKwkJYnJlYWs7CisJfQorCisJLy8gV3JpdGUgYmFjayBhZHZlcnRpc2VtZW50CisJTWlXcml0ZShwQWRhcHRlciwgUEhZX0FVVE9fQURWRVJUSVNFTUVOVCwgdXNEYXRhKTsKK30KKwordm9pZCBFVDEzMTBfUGh5QWR2ZXJ0aXNlMTBCYXNlVChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLAorCQkJCXVpbnQxNl90IGR1cGxleCkKK3sKKwl1aW50MTZfdCB1c0RhdGE7CisKKwkvLyBSZWFkIHRoZSBBdXRvbmVnb3RpYXRpb24gUmVnaXN0ZXIgKDEwLzEwMCkKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9BVVRPX0FEVkVSVElTRU1FTlQsICZ1c0RhdGEpOworCisJLy8gQ2xlYXIgYml0cyA1LDYKKwl1c0RhdGEgJj0gfjB4MDA2MDsKKworCXN3aXRjaCAoZHVwbGV4KSB7CisJY2FzZSBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORToKKwkJLy8gRHVwbGV4IGFscmVhZHkgY2xlYXJlZCwgZG8gbm90aGluZworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0ZVTEw6CisJCS8vIFNldCBCaXQgNgorCQl1c0RhdGEgfD0gMHgwMDQwOworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0hBTEY6CisJCS8vIFNldCBCaXQgNQorCQl1c0RhdGEgfD0gMHgwMDIwOworCQlicmVhazsKKworCWNhc2UgVFJVRVBIWV9BRFZfRFVQTEVYX0JPVEg6CisJZGVmYXVsdDoKKwkJLy8gU2V0IEJpdHMgNSw2CisJCXVzRGF0YSB8PSAweDAwNjA7CisJCWJyZWFrOworCX0KKworCS8vIFdyaXRlIGJhY2sgYWR2ZXJ0aXNlbWVudAorCU1pV3JpdGUocEFkYXB0ZXIsIFBIWV9BVVRPX0FEVkVSVElTRU1FTlQsIHVzRGF0YSk7Cit9CisKK3ZvaWQgRVQxMzEwX1BoeUxpbmtTdGF0dXMoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwKKwkJCSAgdWludDhfdCAqdWNMaW5rU3RhdHVzLAorCQkJICB1aW50MzJfdCAqdWlBdXRvTmVnLAorCQkJICB1aW50MzJfdCAqdWlMaW5rU3BlZWQsCisJCQkgIHVpbnQzMl90ICp1aUR1cGxleE1vZGUsCisJCQkgIHVpbnQzMl90ICp1aU1kaU1kaXgsCisJCQkgIHVpbnQzMl90ICp1aU1hc3RlclNsYXZlLCB1aW50MzJfdCAqdWlQb2xhcml0eSkKK3sKKwl1aW50MTZfdCB1c01pU3RhdHVzID0gMDsKKwl1aW50MTZfdCB1czEwMDBCYXNlVCA9IDA7CisJdWludDE2X3QgdXNWbWlQaHlTdGF0dXMgPSAwOworCXVpbnQxNl90IHVzQ29udHJvbCA9IDA7CisKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9TVEFUVVMsICZ1c01pU3RhdHVzKTsKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV8xMDAwX1NUQVRVUywgJnVzMTAwMEJhc2VUKTsKKwlNaVJlYWQocEFkYXB0ZXIsIFBIWV9QSFlfU1RBVFVTLCAmdXNWbWlQaHlTdGF0dXMpOworCU1pUmVhZChwQWRhcHRlciwgUEhZX0NPTlRST0wsICZ1c0NvbnRyb2wpOworCisJaWYgKHVjTGlua1N0YXR1cykgeworCQkqdWNMaW5rU3RhdHVzID0KKwkJICAgICh1bnNpZ25lZCBjaGFyKSgodXNWbWlQaHlTdGF0dXMgJiAweDAwNDApID8gMSA6IDApOworCX0KKworCWlmICh1aUF1dG9OZWcpIHsKKwkJKnVpQXV0b05lZyA9CisJCSAgICAodXNDb250cm9sICYgMHgxMDAwKSA/ICgodXNWbWlQaHlTdGF0dXMgJiAweDAwMjApID8KKwkJCQkJICAgIFRSVUVQSFlfQU5FR19DT01QTEVURSA6CisJCQkJCSAgICBUUlVFUEhZX0FORUdfTk9UX0NPTVBMRVRFKSA6CisJCSAgICBUUlVFUEhZX0FORUdfRElTQUJMRUQ7CisJfQorCisJaWYgKHVpTGlua1NwZWVkKSB7CisJCSp1aUxpbmtTcGVlZCA9ICh1c1ZtaVBoeVN0YXR1cyAmIDB4MDMwMCkgPj4gODsKKwl9CisKKwlpZiAodWlEdXBsZXhNb2RlKSB7CisJCSp1aUR1cGxleE1vZGUgPSAodXNWbWlQaHlTdGF0dXMgJiAweDAwODApID4+IDc7CisJfQorCisJaWYgKHVpTWRpTWRpeCkgeworCQkvKiBOT1RFOiBOZWVkIHRvIGNvbXBsZXRlIHRoaXMgKi8KKwkJKnVpTWRpTWRpeCA9IDA7CisJfQorCisJaWYgKHVpTWFzdGVyU2xhdmUpIHsKKwkJKnVpTWFzdGVyU2xhdmUgPQorCQkgICAgKHVzMTAwMEJhc2VUICYgMHg0MDAwKSA/IFRSVUVQSFlfQ0ZHX01BU1RFUiA6CisJCSAgICBUUlVFUEhZX0NGR19TTEFWRTsKKwl9CisKKwlpZiAodWlQb2xhcml0eSkgeworCQkqdWlQb2xhcml0eSA9CisJCSAgICAodXNWbWlQaHlTdGF0dXMgJiAweDA0MDApID8gVFJVRVBIWV9QT0xBUklUWV9JTlZFUlRFRCA6CisJCSAgICBUUlVFUEhZX1BPTEFSSVRZX05PUk1BTDsKKwl9Cit9CisKK3ZvaWQgRVQxMzEwX1BoeUFuZE9yUmVnKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIsCisJCQl1aW50MTZfdCByZWdudW0sIHVpbnQxNl90IGFuZE1hc2ssIHVpbnQxNl90IG9yTWFzaykKK3sKKwl1aW50MTZfdCByZWc7CisKKwkvLyBSZWFkIHRoZSByZXF1ZXN0ZWQgcmVnaXN0ZXIKKwlNaVJlYWQocEFkYXB0ZXIsIHJlZ251bSwgJnJlZyk7CisKKwkvLyBBcHBseSB0aGUgQU5EIG1hc2sKKwlyZWcgJj0gYW5kTWFzazsKKworCS8vIEFwcGx5IHRoZSBPUiBtYXNrCisJcmVnIHw9IG9yTWFzazsKKworCS8vIFdyaXRlIHRoZSB2YWx1ZSBiYWNrIHRvIHRoZSByZWdpc3RlcgorCU1pV3JpdGUocEFkYXB0ZXIsIHJlZ251bSwgcmVnKTsKK30KKwordm9pZCBFVDEzMTBfUGh5QWNjZXNzTWlCaXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgdWludDE2X3QgYWN0aW9uLAorCQkJICAgdWludDE2X3QgcmVnbnVtLCB1aW50MTZfdCBiaXRudW0sIHVpbnQ4X3QgKnZhbHVlKQoreworCXVpbnQxNl90IHJlZzsKKwl1aW50MTZfdCBtYXNrID0gMDsKKworCS8vIENyZWF0ZSBhIG1hc2sgdG8gaXNvbGF0ZSB0aGUgcmVxdWVzdGVkIGJpdAorCW1hc2sgPSAweDAwMDEgPDwgYml0bnVtOworCisJLy8gUmVhZCB0aGUgcmVxdWVzdGVkIHJlZ2lzdGVyCisJTWlSZWFkKHBBZGFwdGVyLCByZWdudW0sICZyZWcpOworCisJc3dpdGNoIChhY3Rpb24pIHsKKwljYXNlIFRSVUVQSFlfQklUX1JFQUQ6CisJCWlmICh2YWx1ZSAhPSBOVUxMKSB7CisJCQkqdmFsdWUgPSAocmVnICYgbWFzaykgPj4gYml0bnVtOworCQl9CisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX0JJVF9TRVQ6CisJCXJlZyB8PSBtYXNrOworCQlNaVdyaXRlKHBBZGFwdGVyLCByZWdudW0sIHJlZyk7CisJCWJyZWFrOworCisJY2FzZSBUUlVFUEhZX0JJVF9DTEVBUjoKKwkJcmVnICY9IH5tYXNrOworCQlNaVdyaXRlKHBBZGFwdGVyLCByZWdudW0sIHJlZyk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjI0Y2JiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmgKQEAgLTAsMCArMSw5MTAgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzEwX3BoeS5oIC0gRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gcGVydGFpbmluZyB0byB0aGUKKyAqICAgICAgICAgICAgICAgIFBIWS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfRVQxMzEwX1BIWV9IXworI2RlZmluZSBfRVQxMzEwX1BIWV9IXworCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisKKyNkZWZpbmUgVFJVRVBIWV9TVUNDRVNTIDAKKyNkZWZpbmUgVFJVRVBIWV9GQUlMVVJFIDEKK3R5cGVkZWYgdm9pZCAqVFJVRVBIWV9IQU5ETEU7Cit0eXBlZGVmIHZvaWQgKlRSVUVQSFlfUExBVEZPUk1fSEFORExFOwordHlwZWRlZiB2b2lkICpUUlVFUEhZX09TQUxfSEFORExFOworCisvKiBNSSBSZWdpc3RlciBBZGRyZXNzZXMgKi8KKyNkZWZpbmUgTUlfQ09OVFJPTF9SRUcgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBNSV9TVEFUVVNfUkVHICAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIE1JX1BIWV9JREVOVElGSUVSXzFfUkVHICAgICAgICAgICAgIDIKKyNkZWZpbmUgTUlfUEhZX0lERU5USUZJRVJfMl9SRUcgICAgICAgICAgICAgMworI2RlZmluZSBNSV9BVVRPTkVHX0FEVkVSVElTRU1FTlRfUkVHICAgICAgICA0CisjZGVmaW5lIE1JX0FVVE9ORUdfTElOS19QQVJUTkVSX0FCSUxJVFlfUkVHIDUKKyNkZWZpbmUgTUlfQVVUT05FR19FWFBBTlNJT05fUkVHICAgICAgICAgICAgNgorI2RlZmluZSBNSV9BVVRPTkVHX05FWFRfUEFHRV9UUkFOU01JVF9SRUcgICA3CisjZGVmaW5lIE1JX0xJTktfUEFSVE5FUl9ORVhUX1BBR0VfUkVHICAgICAgIDgKKyNkZWZpbmUgTUlfMTAwMEJBU0VUX0NPTlRST0xfUkVHICAgICAgICAgICAgOQorI2RlZmluZSBNSV8xMDAwQkFTRVRfU1RBVFVTX1JFRyAgICAgICAgICAgICAxMAorI2RlZmluZSBNSV9SRVNFUlZFRDExX1JFRyAgICAgICAgICAgICAgICAgICAxMQorI2RlZmluZSBNSV9SRVNFUlZFRDEyX1JFRyAgICAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBNSV9SRVNFUlZFRDEzX1JFRyAgICAgICAgICAgICAgICAgICAxMworI2RlZmluZSBNSV9SRVNFUlZFRDE0X1JFRyAgICAgICAgICAgICAgICAgICAxNAorI2RlZmluZSBNSV9FWFRFTkRFRF9TVEFUVVNfUkVHICAgICAgICAgICAgICAxNQorCisvKiBWTUkgUmVnaXN0ZXIgQWRkcmVzc2VzICovCisjZGVmaW5lIFZNSV9SRVNFUlZFRDE2X1JFRyAgICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIFZNSV9SRVNFUlZFRDE3X1JFRyAgICAgICAgICAgICAgICAgIDE3CisjZGVmaW5lIFZNSV9SRVNFUlZFRDE4X1JFRyAgICAgICAgICAgICAgICAgIDE4CisjZGVmaW5lIFZNSV9MT09QQkFDS19DT05UUk9MX1JFRyAgICAgICAgICAgIDE5CisjZGVmaW5lIFZNSV9SRVNFUlZFRDIwX1JFRyAgICAgICAgICAgICAgICAgIDIwCisjZGVmaW5lIFZNSV9NSV9DT05UUk9MX1JFRyAgICAgICAgICAgICAgICAgIDIxCisjZGVmaW5lIFZNSV9QSFlfQ09ORklHVVJBVElPTl9SRUcgICAgICAgICAgIDIyCisjZGVmaW5lIFZNSV9QSFlfQ09OVFJPTF9SRUcgICAgICAgICAgICAgICAgIDIzCisjZGVmaW5lIFZNSV9JTlRFUlJVUFRfTUFTS19SRUcgICAgICAgICAgICAgIDI0CisjZGVmaW5lIFZNSV9JTlRFUlJVUFRfU1RBVFVTX1JFRyAgICAgICAgICAgIDI1CisjZGVmaW5lIFZNSV9QSFlfU1RBVFVTX1JFRyAgICAgICAgICAgICAgICAgIDI2CisjZGVmaW5lIFZNSV9MRURfQ09OVFJPTF8xX1JFRyAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIFZNSV9MRURfQ09OVFJPTF8yX1JFRyAgICAgICAgICAgICAgIDI4CisjZGVmaW5lIFZNSV9SRVNFUlZFRDI5X1JFRyAgICAgICAgICAgICAgICAgIDI5CisjZGVmaW5lIFZNSV9SRVNFUlZFRDMwX1JFRyAgICAgICAgICAgICAgICAgIDMwCisjZGVmaW5lIFZNSV9SRVNFUlZFRDMxX1JFRyAgICAgICAgICAgICAgICAgIDMxCisKKy8qIFBIWSBSZWdpc3RlciBNYXBwaW5nKE1JKSBNYW5hZ2VtZW50IEludGVyZmFjZSBSZWdzICovCit0eXBlZGVmIHN0cnVjdCBfTUlfUkVHU190IHsKKwl1OCBibWNyOwkJLy8gQmFzaWMgbW9kZSBjb250cm9sIHJlZyhSZWcgMHgwMCkKKwl1OCBibXNyOwkJLy8gQmFzaWMgbW9kZSBzdGF0dXMgcmVnKFJlZyAweDAxKQorCXU4IGlkcjE7CQkvLyBQaHkgaWRlbnRpZmllciByZWcgMShSZWcgMHgwMikKKwl1OCBpZHIyOwkJLy8gUGh5IGlkZW50aWZpZXIgcmVnIDIoUmVnIDB4MDMpCisJdTggYW5hcjsJCS8vIEF1dG8tTmVnb3RpYXRpb24gYWR2ZXJ0aXNlbWVudChSZWcgMHgwNCkKKwl1OCBhbmxwYXI7CQkvLyBBdXRvLU5lZ290aWF0aW9uIGxpbmsgUGFydG5lciBBYmlsaXR5KFJlZyAweDA1KQorCXU4IGFuZXI7CQkvLyBBdXRvLU5lZ290aWF0aW9uIGV4cGFuc2lvbiByZWcoUmVnIDB4MDYpCisJdTggYW5ucHRyOwkJLy8gQXV0by1OZWdvdGlhdGlvbiBuZXh0IHBhZ2UgdHJhbnNtaXQgcmVnKFJlZyAweDA3KQorCXU4IGxwbnByOwkJLy8gbGluayBwYXJ0bmVyIG5leHQgcGFnZSByZWcoUmVnIDB4MDgpCisJdTggZ2NyOwkJLy8gR2lnYWJpdCBiYXNpYyBtb2RlIGNvbnRyb2wgcmVnKFJlZyAweDA5KQorCXU4IGdzcjsJCS8vIEdpZ2FiaXQgYmFzaWMgbW9kZSBzdGF0dXMgcmVnKFJlZyAweDBBKQorCXU4IG1pX3JlczFbNF07CS8vIEZ1dHVyZSB1c2UgYnkgTUkgd29ya2luZyBncm91cChSZWcgMHgwQiAtIDB4MEUpCisJdTggZXNyOwkJLy8gRXh0ZW5kZWQgc3RhdHVzIHJlZyhSZWcgMHgwRikKKwl1OCBtaV9yZXMyWzNdOwkvLyBGdXR1cmUgdXNlIGJ5IE1JIHdvcmtpbmcgZ3JvdXAoUmVnIDB4MTAgLSAweDEyKQorCXU4IGxvb3BfY3RsOwkvLyBMb29wYmFjayBDb250cm9sIFJlZyhSZWcgMHgxMykKKwl1OCBtaV9yZXMzOwkvLyBGdXR1cmUgdXNlIGJ5IE1JIHdvcmtpbmcgZ3JvdXAoUmVnIDB4MTQpCisJdTggbWNyOwkJLy8gTUkgQ29udHJvbCBSZWcoUmVnIDB4MTUpCisJdTggcGNyOwkJLy8gQ29uZmlndXJhdGlvbiBSZWcoUmVnIDB4MTYpCisJdTggcGh5X2N0bDsJLy8gUEhZIENvbnRyb2wgUmVnKFJlZyAweDE3KQorCXU4IGltcjsJCS8vIEludGVycnVwdCBNYXNrIFJlZyhSZWcgMHgxOCkKKwl1OCBpc3I7CQkvLyBJbnRlcnJ1cHQgU3RhdHVzIFJlZyhSZWcgMHgxOSkKKwl1OCBwc3I7CQkvLyBQSFkgU3RhdHVzIFJlZyhSZWcgMHgxQSkKKwl1OCBsY3IxOwkJLy8gTEVEIENvbnRyb2wgMSBSZWcoUmVnIDB4MUIpCisJdTggbGNyMjsJCS8vIExFRCBDb250cm9sIDIgUmVnKFJlZyAweDFDKQorCXU4IG1pX3JlczRbM107CS8vIEZ1dHVyZSB1c2UgYnkgTUkgd29ya2luZyBncm91cChSZWcgMHgxRCAtIDB4MUYpCit9IE1JX1JFR1NfdCwgKlBNSV9SRUdTX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDA6IEJhc2ljIG1vZGUgY29udHJvbCByZWdpc3RlciAqLwordHlwZWRlZiB1bmlvbiBfTUlfQk1DUl90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUxNiByZXNldDoxOwkJLy8gYml0IDE1CisJCXUxNiBsb29wYmFjazoxOwkJLy8gYml0IDE0CisJCXUxNiBzcGVlZF9zZWw6MTsJCS8vIGJpdCAxMworCQl1MTYgZW5hYmxlX2F1dG9uZWc6MTsJLy8gYml0IDEyCisJCXUxNiBwb3dlcl9kb3duOjE7CQkvLyBiaXQgMTEKKwkJdTE2IGlzb2xhdGU6MTsJCS8vIGJpdCAxMAorCQl1MTYgcmVzdGFydF9hdXRvbmVnOjE7CS8vIGJpdCA5CisJCXUxNiBkdXBsZXhfbW9kZToxOwkJLy8gYml0IDgKKwkJdTE2IGNvbF90ZXN0OjE7CQkvLyBiaXQgNworCQl1MTYgc3BlZWRfMTAwMF9zZWw6MTsJLy8gYml0IDYKKwkJdTE2IHJlczE6NjsJCS8vIGJpdHMgMC01CisjZWxzZQorCQl1MTYgcmVzMTo2OwkJLy8gYml0cyAwLTUKKwkJdTE2IHNwZWVkXzEwMDBfc2VsOjE7CS8vIGJpdCA2CisJCXUxNiBjb2xfdGVzdDoxOwkJLy8gYml0IDcKKwkJdTE2IGR1cGxleF9tb2RlOjE7CQkvLyBiaXQgOAorCQl1MTYgcmVzdGFydF9hdXRvbmVnOjE7CS8vIGJpdCA5CisJCXUxNiBpc29sYXRlOjE7CQkvLyBiaXQgMTAKKwkJdTE2IHBvd2VyX2Rvd246MTsJCS8vIGJpdCAxMQorCQl1MTYgZW5hYmxlX2F1dG9uZWc6MTsJLy8gYml0IDEyCisJCXUxNiBzcGVlZF9zZWw6MTsJCS8vIGJpdCAxMworCQl1MTYgbG9vcGJhY2s6MTsJCS8vIGJpdCAxNAorCQl1MTYgcmVzZXQ6MTsJCS8vIGJpdCAxNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9CTUNSX3QsICpQTUlfQk1DUl90OworCisvKiBNSSBSZWdpc3RlciAxOiAgQmFzaWMgbW9kZSBzdGF0dXMgcmVnaXN0ZXIgKi8KK3R5cGVkZWYgdW5pb24gX01JX0JNU1JfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgbGlua18xMDBUNDoxOwkJLy8gYml0IDE1CisJCXUxNiBsaW5rXzEwMGZkeDoxOwkJLy8gYml0IDE0CisJCXUxNiBsaW5rXzEwMGhkeDoxOwkJLy8gYml0IDEzCisJCXUxNiBsaW5rXzEwZmR4OjE7CQkvLyBiaXQgMTIKKwkJdTE2IGxpbmtfMTBoZHg6MTsJCS8vIGJpdCAxMQorCQl1MTYgbGlua18xMDBUMmZkeDoxOwkvLyBiaXQgMTAKKwkJdTE2IGxpbmtfMTAwVDJoZHg6MTsJLy8gYml0IDkKKwkJdTE2IGV4dGVuZF9zdGF0dXM6MTsJLy8gYml0IDgKKwkJdTE2IHJlczE6MTsJCS8vIGJpdCA3CisJCXUxNiBwcmVhbWJsZV9zdXByZXNzOjE7CS8vIGJpdCA2CisJCXUxNiBhdXRvX25lZ19jb21wbGV0ZToxOwkvLyBiaXQgNQorCQl1MTYgcmVtb3RlX2ZhdWx0OjE7CS8vIGJpdCA0CisJCXUxNiBhdXRvX25lZ19hYmxlOjE7CS8vIGJpdCAzCisJCXUxNiBsaW5rX3N0YXR1czoxOwkJLy8gYml0IDIKKwkJdTE2IGphYmJlcl9kZXRlY3Q6MTsJLy8gYml0IDEKKwkJdTE2IGV4dF9jYXA6MTsJCS8vIGJpdCAwCisjZWxzZQorCQl1MTYgZXh0X2NhcDoxOwkJLy8gYml0IDAKKwkJdTE2IGphYmJlcl9kZXRlY3Q6MTsJLy8gYml0IDEKKwkJdTE2IGxpbmtfc3RhdHVzOjE7CQkvLyBiaXQgMgorCQl1MTYgYXV0b19uZWdfYWJsZToxOwkvLyBiaXQgMworCQl1MTYgcmVtb3RlX2ZhdWx0OjE7CS8vIGJpdCA0CisJCXUxNiBhdXRvX25lZ19jb21wbGV0ZToxOwkvLyBiaXQgNQorCQl1MTYgcHJlYW1ibGVfc3VwcmVzczoxOwkvLyBiaXQgNgorCQl1MTYgcmVzMToxOwkJLy8gYml0IDcKKwkJdTE2IGV4dGVuZF9zdGF0dXM6MTsJLy8gYml0IDgKKwkJdTE2IGxpbmtfMTAwVDJoZHg6MTsJLy8gYml0IDkKKwkJdTE2IGxpbmtfMTAwVDJmZHg6MTsJLy8gYml0IDEwCisJCXUxNiBsaW5rXzEwaGR4OjE7CQkvLyBiaXQgMTEKKwkJdTE2IGxpbmtfMTBmZHg6MTsJCS8vIGJpdCAxMgorCQl1MTYgbGlua18xMDBoZHg6MTsJCS8vIGJpdCAxMworCQl1MTYgbGlua18xMDBmZHg6MTsJCS8vIGJpdCAxNAorCQl1MTYgbGlua18xMDBUNDoxOwkJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0JNU1JfdCwgKlBNSV9CTVNSX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDI6IFBoeXNpY2FsIElkZW50aWZpZXIgMSAqLwordHlwZWRlZiB1bmlvbiBfTUlfSURSMV90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKwkJdTE2IGllZWVfYWRkcmVzczoxNjsJLy8gMHgwMjgyIGRlZmF1bHQoYml0cyAwLTE1KQorCX0gYml0czsKK30gTUlfSURSMV90LCAqUE1JX0lEUjFfdDsKKworLyogTUkgUmVnaXN0ZXIgMzogUGh5c2ljYWwgSWRlbnRpZmllciAyICovCit0eXBlZGVmIHVuaW9uIF9NSV9JRFIyX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IGllZWVfYWRkcmVzczo2OwkvLyAxMTExMDAgZGVmYXVsdChiaXRzIDEwLTE1KQorCQl1MTYgbW9kZWxfbm86NjsJCS8vIDAwMDAwMSBkZWZhdWx0KGJpdHMgNC05KQorCQl1MTYgcmV2X25vOjQ7CQkvLyAwMDEwICAgZGVmYXVsdChiaXRzIDAtMykKKyNlbHNlCisJCXUxNiByZXZfbm86NDsJCS8vIDAwMTAgICBkZWZhdWx0KGJpdHMgMC0zKQorCQl1MTYgbW9kZWxfbm86NjsJCS8vIDAwMDAwMSBkZWZhdWx0KGJpdHMgNC05KQorCQl1MTYgaWVlZV9hZGRyZXNzOjY7CS8vIDExMTEwMCBkZWZhdWx0KGJpdHMgMTAtMTUpCisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0lEUjJfdCwgKlBNSV9JRFIyX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDQ6IEF1dG8tbmVnb3RpYXRpb24gYWR2ZXJ0aXNlbWVudCByZWdpc3RlciAqLwordHlwZWRlZiB1bmlvbiBfTUlfQU5BUl90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUxNiBucF9pbmRpY2F0aW9uOjE7CS8vIGJpdCAxNQorCQl1MTYgcmVzMjoxOwkJLy8gYml0IDE0CisJCXUxNiByZW1vdGVfZmF1bHQ6MTsJLy8gYml0IDEzCisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTIKKwkJdTE2IGNhcF9hc21wYXVzZToxOwkvLyBiaXQgMTEKKwkJdTE2IGNhcF9wYXVzZToxOwkJLy8gYml0IDEwCisJCXUxNiBjYXBfMTAwVDQ6MTsJCS8vIGJpdCA5CisJCXUxNiBjYXBfMTAwZmR4OjE7CQkvLyBiaXQgOAorCQl1MTYgY2FwXzEwMGhkeDoxOwkJLy8gYml0IDcKKwkJdTE2IGNhcF8xMGZkeDoxOwkJLy8gYml0IDYKKwkJdTE2IGNhcF8xMGhkeDoxOwkJLy8gYml0IDUKKwkJdTE2IHNlbGVjdG9yOjU7CQkvLyBiaXRzIDAtNAorI2Vsc2UKKwkJdTE2IHNlbGVjdG9yOjU7CQkvLyBiaXRzIDAtNAorCQl1MTYgY2FwXzEwaGR4OjE7CQkvLyBiaXQgNQorCQl1MTYgY2FwXzEwZmR4OjE7CQkvLyBiaXQgNgorCQl1MTYgY2FwXzEwMGhkeDoxOwkJLy8gYml0IDcKKwkJdTE2IGNhcF8xMDBmZHg6MTsJCS8vIGJpdCA4CisJCXUxNiBjYXBfMTAwVDQ6MTsJCS8vIGJpdCA5CisJCXUxNiBjYXBfcGF1c2U6MTsJCS8vIGJpdCAxMAorCQl1MTYgY2FwX2FzbXBhdXNlOjE7CS8vIGJpdCAxMQorCQl1MTYgcmVzMToxOwkJLy8gYml0IDEyCisJCXUxNiByZW1vdGVfZmF1bHQ6MTsJLy8gYml0IDEzCisJCXUxNiByZXMyOjE7CQkvLyBiaXQgMTQKKwkJdTE2IG5wX2luZGljYXRpb246MTsJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0FOQVJfdCwgKlBNSV9BTkFSX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDU6IEF1dG8tbmVnb3RpYXRpb24gbGluayBwYXJ0bmVyIGFkdmVydGlzZW1lbnQgcmVnaXN0ZXIgKi8KK3R5cGVkZWYgc3RydWN0IF9NSV9BTkxQQVJfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgbnBfaW5kaWNhdGlvbjoxOwkvLyBiaXQgMTUKKwkJdTE2IGFja25vd2xlZGdlOjE7CQkvLyBiaXQgMTQKKwkJdTE2IHJlbW90ZV9mYXVsdDoxOwkvLyBiaXQgMTMKKwkJdTE2IHJlczE6MTsJCS8vIGJpdCAxMgorCQl1MTYgY2FwX2FzbXBhdXNlOjE7CS8vIGJpdCAxMQorCQl1MTYgY2FwX3BhdXNlOjE7CQkvLyBiaXQgMTAKKwkJdTE2IGNhcF8xMDBUNDoxOwkJLy8gYml0IDkKKwkJdTE2IGNhcF8xMDBmZHg6MTsJCS8vIGJpdCA4CisJCXUxNiBjYXBfMTAwaGR4OjE7CQkvLyBiaXQgNworCQl1MTYgY2FwXzEwZmR4OjE7CQkvLyBiaXQgNgorCQl1MTYgY2FwXzEwaGR4OjE7CQkvLyBiaXQgNQorCQl1MTYgc2VsZWN0b3I6NTsJCS8vIGJpdHMgMC00CisjZWxzZQorCQl1MTYgc2VsZWN0b3I6NTsJCS8vIGJpdHMgMC00CisJCXUxNiBjYXBfMTBoZHg6MTsJCS8vIGJpdCA1CisJCXUxNiBjYXBfMTBmZHg6MTsJCS8vIGJpdCA2CisJCXUxNiBjYXBfMTAwaGR4OjE7CQkvLyBiaXQgNworCQl1MTYgY2FwXzEwMGZkeDoxOwkJLy8gYml0IDgKKwkJdTE2IGNhcF8xMDBUNDoxOwkJLy8gYml0IDkKKwkJdTE2IGNhcF9wYXVzZToxOwkJLy8gYml0IDEwCisJCXUxNiBjYXBfYXNtcGF1c2U6MTsJLy8gYml0IDExCisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTIKKwkJdTE2IHJlbW90ZV9mYXVsdDoxOwkvLyBiaXQgMTMKKwkJdTE2IGFja25vd2xlZGdlOjE7CQkvLyBiaXQgMTQKKwkJdTE2IG5wX2luZGljYXRpb246MTsJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0FOTFBBUl90LCAqUE1JX0FOTFBBUl90OworCisvKiBNSSBSZWdpc3RlciA2OiBBdXRvLW5lZ290aWF0aW9uIGV4cGFuc2lvbiByZWdpc3RlciAqLwordHlwZWRlZiB1bmlvbiBfTUlfQU5FUl90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUxNiByZXM6MTE7CS8vIGJpdHMgNS0xNQorCQl1MTYgcGRmOjE7CQkvLyBiaXQgNAorCQl1MTYgbHBfbnBfYWJsZToxOwkvLyBiaXQgMworCQl1MTYgbnBfYWJsZToxOwkvLyBiaXQgMgorCQl1MTYgcGFnZV9yeDoxOwkvLyBiaXQgMQorCQl1MTYgbHBfYW5fYWJsZToxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTE2IGxwX2FuX2FibGU6MTsJLy8gYml0IDAKKwkJdTE2IHBhZ2Vfcng6MTsJLy8gYml0IDEKKwkJdTE2IG5wX2FibGU6MTsJLy8gYml0IDIKKwkJdTE2IGxwX25wX2FibGU6MTsJLy8gYml0IDMKKwkJdTE2IHBkZjoxOwkJLy8gYml0IDQKKwkJdTE2IHJlczoxMTsJLy8gYml0cyA1LTE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0FORVJfdCwgKlBNSV9BTkVSX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDc6IEF1dG8tbmVnb3RpYXRpb24gbmV4dCBwYWdlIHRyYW5zbWl0IHJlZygweDA3KSAqLwordHlwZWRlZiB1bmlvbiBfTUlfQU5OUFRSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IG5wOjE7CQkvLyBiaXQgMTUKKwkJdTE2IHJlczE6MTsJLy8gYml0IDE0CisJCXUxNiBtc2dfcGFnZToxOwkvLyBiaXQgMTMKKwkJdTE2IGFjazI6MTsJLy8gYml0IDEyCisJCXUxNiB0b2dnbGU6MTsJLy8gYml0IDExCisJCXUxNiBtc2c6MTE7CS8vIGJpdHMgMC0xMAorI2Vsc2UKKwkJdTE2IG1zZzoxMTsJLy8gYml0cyAwLTEwCisJCXUxNiB0b2dnbGU6MTsJLy8gYml0IDExCisJCXUxNiBhY2syOjE7CS8vIGJpdCAxMgorCQl1MTYgbXNnX3BhZ2U6MTsJLy8gYml0IDEzCisJCXUxNiByZXMxOjE7CS8vIGJpdCAxNAorCQl1MTYgbnA6MTsJCS8vIGJpdCAxNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9BTk5QVFJfdCwgKlBNSV9BTk5QVFJfdDsKKworLyogTUkgUmVnaXN0ZXIgODogTGluayBQYXJ0bmVyIE5leHQgUGFnZSBSZWcoMHgwOCkgKi8KK3R5cGVkZWYgdW5pb24gX01JX0xQTlBSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IG5wOjE7CQkvLyBiaXQgMTUKKwkJdTE2IGFjazoxOwkJLy8gYml0IDE0CisJCXUxNiBtc2dfcGFnZToxOwkvLyBiaXQgMTMKKwkJdTE2IGFjazI6MTsJLy8gYml0IDEyCisJCXUxNiB0b2dnbGU6MTsJLy8gYml0IDExCisJCXUxNiBtc2c6MTE7CS8vIGJpdHMgMC0xMAorI2Vsc2UKKwkJdTE2IG1zZzoxMTsJLy8gYml0cyAwLTEwCisJCXUxNiB0b2dnbGU6MTsJLy8gYml0IDExCisJCXUxNiBhY2syOjE7CS8vIGJpdCAxMgorCQl1MTYgbXNnX3BhZ2U6MTsJLy8gYml0IDEzCisJCXUxNiBhY2s6MTsJCS8vIGJpdCAxNAorCQl1MTYgbnA6MTsJCS8vIGJpdCAxNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9MUE5QUl90LCAqUE1JX0xQTlBSX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDk6IDEwMDBCYXNlVCBDb250cm9sIFJlZygweDA5KSAqLwordHlwZWRlZiB1bmlvbiBfTUlfR0NSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IHRlc3RfbW9kZTozOwkJLy8gYml0cyAxMy0xNQorCQl1MTYgbXNfY29uZmlnX2VuOjE7CS8vIGJpdCAxMgorCQl1MTYgbXNfdmFsdWU6MTsJCS8vIGJpdCAxMQorCQl1MTYgcG9ydF90eXBlOjE7CQkvLyBiaXQgMTAKKwkJdTE2IGxpbmtfMTAwMGZkeDoxOwkvLyBiaXQgOQorCQl1MTYgbGlua18xMDAwaGR4OjE7CS8vIGJpdCA4CisJCXUxNiByZXM6ODsJCQkvLyBiaXQgMC03CisjZWxzZQorCQl1MTYgcmVzOjg7CQkJLy8gYml0IDAtNworCQl1MTYgbGlua18xMDAwaGR4OjE7CS8vIGJpdCA4CisJCXUxNiBsaW5rXzEwMDBmZHg6MTsJLy8gYml0IDkKKwkJdTE2IHBvcnRfdHlwZToxOwkJLy8gYml0IDEwCisJCXUxNiBtc192YWx1ZToxOwkJLy8gYml0IDExCisJCXUxNiBtc19jb25maWdfZW46MTsJLy8gYml0IDEyCisJCXUxNiB0ZXN0X21vZGU6MzsJCS8vIGJpdHMgMTMtMTUKKyNlbmRpZgorCX0gYml0czsKK30gTUlfR0NSX3QsICpQTUlfR0NSX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDEwOiAxMDAwQmFzZVQgU3RhdHVzIFJlZygweDBBKSAqLwordHlwZWRlZiB1bmlvbiBfTUlfR1NSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IG1zX2NvbmZpZ19mYXVsdDoxOwkvLyBiaXQgMTUKKwkJdTE2IG1zX3Jlc29sdmU6MTsJCS8vIGJpdCAxNAorCQl1MTYgbG9jYWxfcnhfc3RhdHVzOjE7CS8vIGJpdCAxMworCQl1MTYgcmVtb3RlX3J4X3N0YXR1czoxOwkvLyBiaXQgMTIKKwkJdTE2IGxpbmtfMTAwMGZkeDoxOwkvLyBiaXQgMTEKKwkJdTE2IGxpbmtfMTAwMGhkeDoxOwkvLyBiaXQgMTAKKwkJdTE2IHJlczoyOwkJCS8vIGJpdHMgOC05CisJCXUxNiBpZGxlX2Vycl9jbnQ6ODsJLy8gYml0cyAwLTcKKyNlbHNlCisJCXUxNiBpZGxlX2Vycl9jbnQ6ODsJLy8gYml0cyAwLTcKKwkJdTE2IHJlczoyOwkJCS8vIGJpdHMgOC05CisJCXUxNiBsaW5rXzEwMDBoZHg6MTsJLy8gYml0IDEwCisJCXUxNiBsaW5rXzEwMDBmZHg6MTsJLy8gYml0IDExCisJCXUxNiByZW1vdGVfcnhfc3RhdHVzOjE7CS8vIGJpdCAxMgorCQl1MTYgbG9jYWxfcnhfc3RhdHVzOjE7CS8vIGJpdCAxMworCQl1MTYgbXNfcmVzb2x2ZToxOwkJLy8gYml0IDE0CisJCXUxNiBtc19jb25maWdfZmF1bHQ6MTsJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0dTUl90LCAqUE1JX0dTUl90OworCisvKiBNSSBSZWdpc3RlciAxMSAtIDE0OiBSZXNlcnZlZCBSZWdzKDB4MEIgLSAweDBFKSAqLwordHlwZWRlZiB1bmlvbiBfTUlfUkVTX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IHJlczE1OjE7CS8vIGJpdCAxNQorCQl1MTYgcmVzMTQ6MTsJLy8gYml0IDE0CisJCXUxNiByZXMxMzoxOwkvLyBiaXQgMTMKKwkJdTE2IHJlczEyOjE7CS8vIGJpdCAxMgorCQl1MTYgcmVzMTE6MTsJLy8gYml0IDExCisJCXUxNiByZXMxMDoxOwkvLyBiaXQgMTAKKwkJdTE2IHJlczk6MTsJLy8gYml0IDkKKwkJdTE2IHJlczg6MTsJLy8gYml0IDgKKwkJdTE2IHJlczc6MTsJLy8gYml0IDcKKwkJdTE2IHJlczY6MTsJLy8gYml0IDYKKwkJdTE2IHJlczU6MTsJLy8gYml0IDUKKwkJdTE2IHJlczQ6MTsJLy8gYml0IDQKKwkJdTE2IHJlczM6MTsJLy8gYml0IDMKKwkJdTE2IHJlczI6MTsJLy8gYml0IDIKKwkJdTE2IHJlczE6MTsJLy8gYml0IDEKKwkJdTE2IHJlczA6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUxNiByZXMwOjE7CS8vIGJpdCAwCisJCXUxNiByZXMxOjE7CS8vIGJpdCAxCisJCXUxNiByZXMyOjE7CS8vIGJpdCAyCisJCXUxNiByZXMzOjE7CS8vIGJpdCAzCisJCXUxNiByZXM0OjE7CS8vIGJpdCA0CisJCXUxNiByZXM1OjE7CS8vIGJpdCA1CisJCXUxNiByZXM2OjE7CS8vIGJpdCA2CisJCXUxNiByZXM3OjE7CS8vIGJpdCA3CisJCXUxNiByZXM4OjE7CS8vIGJpdCA4CisJCXUxNiByZXM5OjE7CS8vIGJpdCA5CisJCXUxNiByZXMxMDoxOwkvLyBiaXQgMTAKKwkJdTE2IHJlczExOjE7CS8vIGJpdCAxMQorCQl1MTYgcmVzMTI6MTsJLy8gYml0IDEyCisJCXUxNiByZXMxMzoxOwkvLyBiaXQgMTMKKwkJdTE2IHJlczE0OjE7CS8vIGJpdCAxNAorCQl1MTYgcmVzMTU6MTsJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX1JFU190LCAqUE1JX1JFU190OworCisvKiBNSSBSZWdpc3RlciAxNTogRXh0ZW5kZWQgc3RhdHVzIFJlZygweDBGKSAqLwordHlwZWRlZiB1bmlvbiBfTUlfRVNSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IGxpbmtfMTAwMFhmZHg6MTsJLy8gYml0IDE1CisJCXUxNiBsaW5rXzEwMDBYaGR4OjE7CS8vIGJpdCAxNAorCQl1MTYgbGlua18xMDAwZmR4OjE7CS8vIGJpdCAxMworCQl1MTYgbGlua18xMDAwaGR4OjE7CS8vIGJpdCAxMgorCQl1MTYgcmVzOjEyOwkJLy8gYml0IDAtMTEKKyNlbHNlCisJCXUxNiByZXM6MTI7CQkvLyBiaXQgMC0xMQorCQl1MTYgbGlua18xMDAwaGR4OjE7CS8vIGJpdCAxMgorCQl1MTYgbGlua18xMDAwZmR4OjE7CS8vIGJpdCAxMworCQl1MTYgbGlua18xMDAwWGhkeDoxOwkvLyBiaXQgMTQKKwkJdTE2IGxpbmtfMTAwMFhmZHg6MTsJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0VTUl90LCAqUE1JX0VTUl90OworCisvKiBNSSBSZWdpc3RlciAxNiAtIDE4OiBSZXNlcnZlZCBSZWcoMHgxMC0weDEyKSAqLworCisvKiBNSSBSZWdpc3RlciAxOTogTG9vcGJhY2sgQ29udHJvbCBSZWcoMHgxMykgKi8KK3R5cGVkZWYgdW5pb24gX01JX0xDUl90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUxNiBtaWlfZW46MTsJCS8vIGJpdCAxNQorCQl1MTYgcGNzX2VuOjE7CQkvLyBiaXQgMTQKKwkJdTE2IHBtZF9lbjoxOwkJLy8gYml0IDEzCisJCXUxNiBhbGxfZGlnaXRhbF9lbjoxOwkvLyBiaXQgMTIKKwkJdTE2IHJlcGxpY2FfZW46MTsJCS8vIGJpdCAxMQorCQl1MTYgbGluZV9kcml2ZXJfZW46MTsJLy8gYml0IDEwCisJCXUxNiByZXM6MTA7CQkvLyBiaXQgMC05CisjZWxzZQorCQl1MTYgcmVzOjEwOwkJLy8gYml0IDAtOQorCQl1MTYgbGluZV9kcml2ZXJfZW46MTsJLy8gYml0IDEwCisJCXUxNiByZXBsaWNhX2VuOjE7CQkvLyBiaXQgMTEKKwkJdTE2IGFsbF9kaWdpdGFsX2VuOjE7CS8vIGJpdCAxMgorCQl1MTYgcG1kX2VuOjE7CQkvLyBiaXQgMTMKKwkJdTE2IHBjc19lbjoxOwkJLy8gYml0IDE0CisJCXUxNiBtaWlfZW46MTsJCS8vIGJpdCAxNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9MQ1JfdCwgKlBNSV9MQ1JfdDsKKworLyogTUkgUmVnaXN0ZXIgMjA6IFJlc2VydmVkIFJlZygweDE0KSAqLworCisvKiBNSSBSZWdpc3RlciAyMTogTWFuYWdlbWVudCBJbnRlcmZhY2UgQ29udHJvbCBSZWcoMHgxNSkgKi8KK3R5cGVkZWYgdW5pb24gX01JX01JQ1JfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgcmVzMTo1OwkJLy8gYml0cyAxMS0xNQorCQl1MTYgbWlfZXJyb3JfY291bnQ6NzsJLy8gYml0cyA0LTEwCisJCXUxNiByZXMyOjE7CQkvLyBiaXQgMworCQl1MTYgaWdub3JlXzEwZ19mcjoxOwkvLyBiaXQgMgorCQl1MTYgcmVzMzoxOwkJLy8gYml0IDEKKwkJdTE2IHByZWFtYmxlX3N1cHJlc3NfZW46MTsJLy8gYml0IDAKKyNlbHNlCisJCXUxNiBwcmVhbWJsZV9zdXByZXNzX2VuOjE7CS8vIGJpdCAwCisJCXUxNiByZXMzOjE7CQkvLyBiaXQgMQorCQl1MTYgaWdub3JlXzEwZ19mcjoxOwkvLyBiaXQgMgorCQl1MTYgcmVzMjoxOwkJLy8gYml0IDMKKwkJdTE2IG1pX2Vycm9yX2NvdW50Ojc7CS8vIGJpdHMgNC0xMAorCQl1MTYgcmVzMTo1OwkJLy8gYml0cyAxMS0xNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9NSUNSX3QsICpQTUlfTUlDUl90OworCisvKiBNSSBSZWdpc3RlciAyMjogUEhZIENvbmZpZ3VyYXRpb24gUmVnKDB4MTYpICovCit0eXBlZGVmIHVuaW9uIF9NSV9QSFlfQ09ORklHX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IGNyc190eF9lbjoxOwkJLy8gYml0IDE1CisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTQKKwkJdTE2IHR4X2ZpZm9fZGVwdGg6MjsJLy8gYml0cyAxMi0xMworCQl1MTYgc3BlZWRfZG93bnNoaWZ0OjI7CS8vIGJpdHMgMTAtMTEKKwkJdTE2IHBiaV9kZXRlY3Q6MTsJCS8vIGJpdCA5CisJCXUxNiB0YmlfcmF0ZToxOwkJLy8gYml0IDgKKwkJdTE2IGFsdGVybmF0ZV9ucDoxOwkvLyBiaXQgNworCQl1MTYgZ3JvdXBfbWRpb19lbjoxOwkvLyBiaXQgNgorCQl1MTYgdHhfY2xvY2tfZW46MTsJCS8vIGJpdCA1CisJCXUxNiBzeXNfY2xvY2tfZW46MTsJLy8gYml0IDQKKwkJdTE2IHJlczI6MTsJCS8vIGJpdCAzCisJCXUxNiBtYWNfaWZfbW9kZTozOwkJLy8gYml0cyAwLTIKKyNlbHNlCisJCXUxNiBtYWNfaWZfbW9kZTozOwkJLy8gYml0cyAwLTIKKwkJdTE2IHJlczI6MTsJCS8vIGJpdCAzCisJCXUxNiBzeXNfY2xvY2tfZW46MTsJLy8gYml0IDQKKwkJdTE2IHR4X2Nsb2NrX2VuOjE7CQkvLyBiaXQgNQorCQl1MTYgZ3JvdXBfbWRpb19lbjoxOwkvLyBiaXQgNgorCQl1MTYgYWx0ZXJuYXRlX25wOjE7CS8vIGJpdCA3CisJCXUxNiB0YmlfcmF0ZToxOwkJLy8gYml0IDgKKwkJdTE2IHBiaV9kZXRlY3Q6MTsJCS8vIGJpdCA5CisJCXUxNiBzcGVlZF9kb3duc2hpZnQ6MjsJLy8gYml0cyAxMC0xMQorCQl1MTYgdHhfZmlmb19kZXB0aDoyOwkvLyBiaXRzIDEyLTEzCisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTQKKwkJdTE2IGNyc190eF9lbjoxOwkJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX1BIWV9DT05GSUdfdCwgKlBNSV9QSFlfQ09ORklHX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDIzOiBQSFkgQ09OVFJPTCBSZWcoMHgxNykgKi8KK3R5cGVkZWYgdW5pb24gX01JX1BIWV9DT05UUk9MX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IHJlczE6MTsJCS8vIGJpdCAxNQorCQl1MTYgdGRyX2VuOjE7CQkvLyBiaXQgMTQKKwkJdTE2IHJlczI6MTsJCS8vIGJpdCAxMworCQl1MTYgZG93bnNoaWZ0X2F0dGVtcHRzOjI7CS8vIGJpdHMgMTEtMTIKKwkJdTE2IHJlczM6NTsJCS8vIGJpdCA2LTEwCisJCXUxNiBqYWJiZXJfMTBiYXNlVDoxOwkvLyBiaXQgNQorCQl1MTYgc3FlXzEwYmFzZVQ6MTsJCS8vIGJpdCA0CisJCXUxNiB0cF9sb29wYmFja18xMGJhc2VUOjE7CS8vIGJpdCAzCisJCXUxNiBwcmVhbWJsZV9nZW5fZW46MTsJLy8gYml0IDIKKwkJdTE2IHJlczQ6MTsJCS8vIGJpdCAxCisJCXUxNiBmb3JjZV9pbnQ6MTsJCS8vIGJpdCAwCisjZWxzZQorCQl1MTYgZm9yY2VfaW50OjE7CQkvLyBiaXQgMAorCQl1MTYgcmVzNDoxOwkJLy8gYml0IDEKKwkJdTE2IHByZWFtYmxlX2dlbl9lbjoxOwkvLyBiaXQgMgorCQl1MTYgdHBfbG9vcGJhY2tfMTBiYXNlVDoxOwkvLyBiaXQgMworCQl1MTYgc3FlXzEwYmFzZVQ6MTsJCS8vIGJpdCA0CisJCXUxNiBqYWJiZXJfMTBiYXNlVDoxOwkvLyBiaXQgNQorCQl1MTYgcmVzMzo1OwkJLy8gYml0IDYtMTAKKwkJdTE2IGRvd25zaGlmdF9hdHRlbXB0czoyOwkvLyBiaXRzIDExLTEyCisJCXUxNiByZXMyOjE7CQkvLyBiaXQgMTMKKwkJdTE2IHRkcl9lbjoxOwkJLy8gYml0IDE0CisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTUKKyNlbmRpZgorCX0gYml0czsKK30gTUlfUEhZX0NPTlRST0xfdCwgKlBNSV9QSFlfQ09OVFJPTF90OworCisvKiBNSSBSZWdpc3RlciAyNDogSW50ZXJydXB0IE1hc2sgUmVnKDB4MTgpICovCit0eXBlZGVmIHVuaW9uIF9NSV9JTVJfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgcmVzMTo2OwkJLy8gYml0cyAxMC0xNQorCQl1MTYgbWRpb19zeW5jX2xvc3Q6MTsJLy8gYml0IDkKKwkJdTE2IGF1dG9uZWdfc3RhdHVzOjE7CS8vIGJpdCA4CisJCXUxNiBoaV9iaXRfZXJyOjE7CQkvLyBiaXQgNworCQl1MTYgbnBfcng6MTsJCS8vIGJpdCA2CisJCXUxNiBlcnJfY291bnRlcl9mdWxsOjE7CS8vIGJpdCA1CisJCXUxNiBmaWZvX292ZXJfdW5kZXJmbG93OjE7CS8vIGJpdCA0CisJCXUxNiByeF9zdGF0dXM6MTsJCS8vIGJpdCAzCisJCXUxNiBsaW5rX3N0YXR1czoxOwkJLy8gYml0IDIKKwkJdTE2IGF1dG9tYXRpY19zcGVlZDoxOwkvLyBiaXQgMQorCQl1MTYgaW50X2VuOjE7CQkvLyBiaXQgMAorI2Vsc2UKKwkJdTE2IGludF9lbjoxOwkJLy8gYml0IDAKKwkJdTE2IGF1dG9tYXRpY19zcGVlZDoxOwkvLyBiaXQgMQorCQl1MTYgbGlua19zdGF0dXM6MTsJCS8vIGJpdCAyCisJCXUxNiByeF9zdGF0dXM6MTsJCS8vIGJpdCAzCisJCXUxNiBmaWZvX292ZXJfdW5kZXJmbG93OjE7CS8vIGJpdCA0CisJCXUxNiBlcnJfY291bnRlcl9mdWxsOjE7CS8vIGJpdCA1CisJCXUxNiBucF9yeDoxOwkJLy8gYml0IDYKKwkJdTE2IGhpX2JpdF9lcnI6MTsJCS8vIGJpdCA3CisJCXUxNiBhdXRvbmVnX3N0YXR1czoxOwkvLyBiaXQgOAorCQl1MTYgbWRpb19zeW5jX2xvc3Q6MTsJLy8gYml0IDkKKwkJdTE2IHJlczE6NjsJCS8vIGJpdHMgMTAtMTUKKyNlbmRpZgorCX0gYml0czsKK30gTUlfSU1SX3QsICpQTUlfSU1SX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDI1OiBJbnRlcnJ1cHQgU3RhdHVzIFJlZygweDE5KSAqLwordHlwZWRlZiB1bmlvbiBfTUlfSVNSX3QgeworCXUxNiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTE2IHJlczE6NjsJCS8vIGJpdHMgMTAtMTUKKwkJdTE2IG1kaW9fc3luY19sb3N0OjE7CS8vIGJpdCA5CisJCXUxNiBhdXRvbmVnX3N0YXR1czoxOwkvLyBiaXQgOAorCQl1MTYgaGlfYml0X2VycjoxOwkJLy8gYml0IDcKKwkJdTE2IG5wX3J4OjE7CQkvLyBiaXQgNgorCQl1MTYgZXJyX2NvdW50ZXJfZnVsbDoxOwkvLyBiaXQgNQorCQl1MTYgZmlmb19vdmVyX3VuZGVyZmxvdzoxOwkvLyBiaXQgNAorCQl1MTYgcnhfc3RhdHVzOjE7CQkvLyBiaXQgMworCQl1MTYgbGlua19zdGF0dXM6MTsJCS8vIGJpdCAyCisJCXUxNiBhdXRvbWF0aWNfc3BlZWQ6MTsJLy8gYml0IDEKKwkJdTE2IGludF9lbjoxOwkJLy8gYml0IDAKKyNlbHNlCisJCXUxNiBpbnRfZW46MTsJCS8vIGJpdCAwCisJCXUxNiBhdXRvbWF0aWNfc3BlZWQ6MTsJLy8gYml0IDEKKwkJdTE2IGxpbmtfc3RhdHVzOjE7CQkvLyBiaXQgMgorCQl1MTYgcnhfc3RhdHVzOjE7CQkvLyBiaXQgMworCQl1MTYgZmlmb19vdmVyX3VuZGVyZmxvdzoxOwkvLyBiaXQgNAorCQl1MTYgZXJyX2NvdW50ZXJfZnVsbDoxOwkvLyBiaXQgNQorCQl1MTYgbnBfcng6MTsJCS8vIGJpdCA2CisJCXUxNiBoaV9iaXRfZXJyOjE7CQkvLyBiaXQgNworCQl1MTYgYXV0b25lZ19zdGF0dXM6MTsJLy8gYml0IDgKKwkJdTE2IG1kaW9fc3luY19sb3N0OjE7CS8vIGJpdCA5CisJCXUxNiByZXMxOjY7CQkvLyBiaXRzIDEwLTE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0lTUl90LCAqUE1JX0lTUl90OworCisvKiBNSSBSZWdpc3RlciAyNjogUEhZIFN0YXR1cyBSZWcoMHgxQSkgKi8KK3R5cGVkZWYgdW5pb24gX01JX1BTUl90IHsKKwl1MTYgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUxNiByZXMxOjE7CQkvLyBiaXQgMTUKKwkJdTE2IGF1dG9uZWdfZmF1bHQ6MjsJLy8gYml0IDEzLTE0CisJCXUxNiBhdXRvbmVnX3N0YXR1czoxOwkvLyBiaXQgMTIKKwkJdTE2IG1kaV94X3N0YXR1czoxOwkvLyBiaXQgMTEKKwkJdTE2IHBvbGFyaXR5X3N0YXR1czoxOwkvLyBiaXQgMTAKKwkJdTE2IHNwZWVkX3N0YXR1czoyOwkvLyBiaXRzIDgtOQorCQl1MTYgZHVwbGV4X3N0YXR1czoxOwkvLyBiaXQgNworCQl1MTYgbGlua19zdGF0dXM6MTsJCS8vIGJpdCA2CisJCXUxNiB0eF9zdGF0dXM6MTsJCS8vIGJpdCA1CisJCXUxNiByeF9zdGF0dXM6MTsJCS8vIGJpdCA0CisJCXUxNiBjb2xsaXNpb25fc3RhdHVzOjE7CS8vIGJpdCAzCisJCXUxNiBhdXRvbmVnX2VuOjE7CQkvLyBiaXQgMgorCQl1MTYgcGF1c2VfZW46MTsJCS8vIGJpdCAxCisJCXUxNiBhc3ltbWV0cmljX2RpcjoxOwkvLyBiaXQgMAorI2Vsc2UKKwkJdTE2IGFzeW1tZXRyaWNfZGlyOjE7CS8vIGJpdCAwCisJCXUxNiBwYXVzZV9lbjoxOwkJLy8gYml0IDEKKwkJdTE2IGF1dG9uZWdfZW46MTsJCS8vIGJpdCAyCisJCXUxNiBjb2xsaXNpb25fc3RhdHVzOjE7CS8vIGJpdCAzCisJCXUxNiByeF9zdGF0dXM6MTsJCS8vIGJpdCA0CisJCXUxNiB0eF9zdGF0dXM6MTsJCS8vIGJpdCA1CisJCXUxNiBsaW5rX3N0YXR1czoxOwkJLy8gYml0IDYKKwkJdTE2IGR1cGxleF9zdGF0dXM6MTsJLy8gYml0IDcKKwkJdTE2IHNwZWVkX3N0YXR1czoyOwkvLyBiaXRzIDgtOQorCQl1MTYgcG9sYXJpdHlfc3RhdHVzOjE7CS8vIGJpdCAxMAorCQl1MTYgbWRpX3hfc3RhdHVzOjE7CS8vIGJpdCAxMQorCQl1MTYgYXV0b25lZ19zdGF0dXM6MTsJLy8gYml0IDEyCisJCXUxNiBhdXRvbmVnX2ZhdWx0OjI7CS8vIGJpdCAxMy0xNAorCQl1MTYgcmVzMToxOwkJLy8gYml0IDE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX1BTUl90LCAqUE1JX1BTUl90OworCisvKiBNSSBSZWdpc3RlciAyNzogTEVEIENvbnRyb2wgUmVnIDEoMHgxQikgKi8KK3R5cGVkZWYgdW5pb24gX01JX0xDUjFfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgcmVzMToyOwkJLy8gYml0cyAxNC0xNQorCQl1MTYgbGVkX2R1cF9pbmRpY2F0ZToyOwkvLyBiaXRzIDEyLTEzCisJCXUxNiBsZWRfMTBiYXNlVDoyOwkJLy8gYml0cyAxMC0xMQorCQl1MTYgbGVkX2NvbGxpc2lvbjoyOwkvLyBiaXRzIDgtOQorCQl1MTYgcmVzMjoyOwkJLy8gYml0cyA2LTcKKwkJdTE2IHJlczM6MjsJCS8vIGJpdHMgNC01CisJCXUxNiBwdWxzZV9kdXI6MjsJCS8vIGJpdHMgMi0zCisJCXUxNiBwdWxzZV9zdHJldGNoMToxOwkvLyBiaXQgMQorCQl1MTYgcHVsc2Vfc3RyZXRjaDA6MTsJLy8gYml0IDAKKyNlbHNlCisJCXUxNiBwdWxzZV9zdHJldGNoMDoxOwkvLyBiaXQgMAorCQl1MTYgcHVsc2Vfc3RyZXRjaDE6MTsJLy8gYml0IDEKKwkJdTE2IHB1bHNlX2R1cjoyOwkJLy8gYml0cyAyLTMKKwkJdTE2IHJlczM6MjsJCS8vIGJpdHMgNC01CisJCXUxNiByZXMyOjI7CQkvLyBiaXRzIDYtNworCQl1MTYgbGVkX2NvbGxpc2lvbjoyOwkvLyBiaXRzIDgtOQorCQl1MTYgbGVkXzEwYmFzZVQ6MjsJCS8vIGJpdHMgMTAtMTEKKwkJdTE2IGxlZF9kdXBfaW5kaWNhdGU6MjsJLy8gYml0cyAxMi0xMworCQl1MTYgcmVzMToyOwkJLy8gYml0cyAxNC0xNQorI2VuZGlmCisJfSBiaXRzOworfSBNSV9MQ1IxX3QsICpQTUlfTENSMV90OworCisvKiBNSSBSZWdpc3RlciAyODogTEVEIENvbnRyb2wgUmVnIDIoMHgxQykgKi8KK3R5cGVkZWYgdW5pb24gX01JX0xDUjJfdCB7CisJdTE2IHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MTYgbGVkX2xpbms6NDsJCS8vIGJpdHMgMTItMTUKKwkJdTE2IGxlZF90eF9yeDo0OwkJLy8gYml0cyA4LTExCisJCXUxNiBsZWRfMTAwQmFzZVRYOjQ7CS8vIGJpdHMgNC03CisJCXUxNiBsZWRfMTAwMEJhc2VUOjQ7CS8vIGJpdHMgMC0zCisjZWxzZQorCQl1MTYgbGVkXzEwMDBCYXNlVDo0OwkvLyBiaXRzIDAtMworCQl1MTYgbGVkXzEwMEJhc2VUWDo0OwkvLyBiaXRzIDQtNworCQl1MTYgbGVkX3R4X3J4OjQ7CQkvLyBiaXRzIDgtMTEKKwkJdTE2IGxlZF9saW5rOjQ7CQkvLyBiaXRzIDEyLTE1CisjZW5kaWYKKwl9IGJpdHM7Cit9IE1JX0xDUjJfdCwgKlBNSV9MQ1IyX3Q7CisKKy8qIE1JIFJlZ2lzdGVyIDI5IC0gMzE6IFJlc2VydmVkIFJlZygweDFEIC0gMHgxRSkgKi8KKworLyogVHJ1ZVBIWSBoZWFkZXJzICovCit0eXBlZGVmIHN0cnVjdCBfVFJVRVBIWV9BQ0NFU1NfTUlfUkVHU18geworCVRSVUVQSFlfSEFORExFIGhUcnVlUGh5OworCWludDMyX3QgblBoeUlkOworCXU4IGJSZWFkV3JpdGU7CisJdTggKnBieVJlZ3M7CisJdTggKnB3RGF0YTsKKwlpbnQzMl90IG5SZWdDb3VudDsKK30gVFJVRVBIWV9BQ0NFU1NfTUlfUkVHUywgKlBUUlVFUEhZX0FDQ0VTU19NSV9SRUdTOworCisvKiBUcnVlUEhZIGhlYWRlcnMgKi8KK3R5cGVkZWYgc3RydWN0IF9UQUdfVFBBTF9BQ0NFU1NfTUlfUkVHU18geworCXUzMiBuUGh5SWQ7CisJdTggYlJlYWRXcml0ZTsKKwl1MzIgblJlZ0NvdW50OworCXUxNiBEYXRhWzQwOTZdOworCXU4IFJlZ3NbNDA5Nl07Cit9IFRQQUxfQUNDRVNTX01JX1JFR1MsICpQVFBBTF9BQ0NFU1NfTUlfUkVHUzsKKworCit0eXBlZGVmIFRSVUVQSFlfSEFORExFIFRQQUxfSEFORExFOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlICovCitzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXI7CisKKy8qIE9TIFNwZWNpZmljIEZ1bmN0aW9ucyovCit2b2lkIFRQQUxfU2V0UGh5MTBIYWxmRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIFRQQUxfU2V0UGh5MTBGdWxsRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIFRQQUxfU2V0UGh5MTBGb3JjZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKTsKK3ZvaWQgVFBBTF9TZXRQaHkxMDBIYWxmRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIFRQQUxfU2V0UGh5MTAwRnVsbER1cGxleChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBUUEFMX1NldFBoeTEwMEZvcmNlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpOwordm9pZCBUUEFMX1NldFBoeTEwMDBGdWxsRHVwbGV4KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIFRQQUxfU2V0UGh5QXV0b05lZyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOworCisvKiBQcm90b3R5cGVzIGZvciBFVDEzMTBfcGh5LmMgKi8KK2ludCBldDEzMXhfeGN2cl9maW5kKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CitpbnQgZXQxMzF4X3NldHBoeV9ub3JtYWwoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK2ludDMyX3QgUGh5TWlSZWFkKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkgICAgICAgdTggeGN2ckFkZHIsIHU4IHhjdnJSZWcsIHUxNiAqdmFsdWUpOworCisvKiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgYmVjYXVzZSBldDEzMXhfYWRhcHRlciBpcyBub3QgYWx3YXlzCisgKiBkZWZpbmVkCisgKi8KKyNkZWZpbmUgTWlSZWFkKGFkYXB0ZXIsIHhjdnJSZWcsIHZhbHVlKSBcCisJUGh5TWlSZWFkKChhZGFwdGVyKSwgKGFkYXB0ZXIpLT5TdGF0cy54Y3ZyX2FkZHIsICh4Y3ZyUmVnKSwgKHZhbHVlKSkKKworaW50MzJfdCBNaVdyaXRlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJdTggeGN2UmVnLCB1MTYgdmFsdWUpOwordm9pZCBldDEzMXhfTWlpX2NoZWNrKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIsCisJCSAgICAgIE1JX0JNU1JfdCBibXNyLCBNSV9CTVNSX3QgYm1zcl9pbnRzKTsKKworLyogVGhpcyBsYXN0IGlzIG5vdCBzdHJpY3RseSByZXF1aXJlZCAodGhlIGRyaXZlciBjb3VsZCBjYWxsIHRoZSBUUEFMCisgKiB2ZXJzaW9uIGluc3RlYWQpLCBidXQgdGhpcyBzZXRzIHRoZSBhZGFwdGVyIHVwIGNvcnJlY3RseSwgYW5kIGNhbGxzIHRoZQorICogYWNjZXNzIHJvdXRpbmUgaW5kaXJlY3RseS4gIFRoaXMgcHJvdGVjdHMgdGhlIGRyaXZlciBmcm9tIGNoYW5nZXMgaW4gVFBBTC4KKyAqLwordm9pZCBTZXRQaHlfMTBCYXNlVEhhbGZEdXBsZXgoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKKworLyogRGVmaW5lcyBmb3IgUEhZIGFjY2VzcyByb3V0aW5lcyAqLworCisvLyBEZWZpbmUgYml0IG9wZXJhdGlvbiBmbGFncworI2RlZmluZSBUUlVFUEhZX0JJVF9DTEVBUiAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgVFJVRVBIWV9CSVRfU0VUICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFRSVUVQSFlfQklUX1JFQUQgICAgICAgICAgICAgICAgMgorCisvLyBEZWZpbmUgcmVhZC93cml0ZSBvcGVyYXRpb24gZmxhZ3MKKyNpZm5kZWYgVFJVRVBIWV9SRUFECisjZGVmaW5lIFRSVUVQSFlfUkVBRCAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBUUlVFUEhZX1dSSVRFICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgVFJVRVBIWV9NQVNLICAgICAgICAgICAgICAgICAgICAyCisjZW5kaWYKKworLy8gRGVmaW5lIHNwZWVkcworI2RlZmluZSBUUlVFUEhZX1NQRUVEXzEwTUJQUyAgICAgICAgICAgIDAKKyNkZWZpbmUgVFJVRVBIWV9TUEVFRF8xMDBNQlBTICAgICAgICAgICAxCisjZGVmaW5lIFRSVUVQSFlfU1BFRURfMTAwME1CUFMgICAgICAgICAgMgorCisvLyBEZWZpbmUgZHVwbGV4IG1vZGVzCisjZGVmaW5lIFRSVUVQSFlfRFVQTEVYX0hBTEYgICAgICAgICAgICAgMAorI2RlZmluZSBUUlVFUEhZX0RVUExFWF9GVUxMICAgICAgICAgICAgIDEKKworLy8gRGVmaW5lIG1hc3Rlci9zbGF2ZSBjb25maWd1cmF0aW9uIHZhbHVlcworI2RlZmluZSBUUlVFUEhZX0NGR19TTEFWRSAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgVFJVRVBIWV9DRkdfTUFTVEVSICAgICAgICAgICAgICAxCisKKy8vIERlZmluZSBNREkvTURJLVggc2V0dGluZ3MKKyNkZWZpbmUgVFJVRVBIWV9NREkgICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFRSVUVQSFlfTURJWCAgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBUUlVFUEhZX0FVVE9fTURJX01ESVggICAgICAgICAgIDIKKworLy8gRGVmaW5lIDEwQmFzZS1UIGxpbmsgcG9sYXJpdGllcworI2RlZmluZSBUUlVFUEhZX1BPTEFSSVRZX05PUk1BTCAgICAgICAgIDAKKyNkZWZpbmUgVFJVRVBIWV9QT0xBUklUWV9JTlZFUlRFRCAgICAgICAxCisKKy8vIERlZmluZSBhdXRvLW5lZ290aWF0aW9uIHJlc3VsdHMKKyNkZWZpbmUgVFJVRVBIWV9BTkVHX05PVF9DT01QTEVURSAgICAgICAwCisjZGVmaW5lIFRSVUVQSFlfQU5FR19DT01QTEVURSAgICAgICAgICAgMQorI2RlZmluZSBUUlVFUEhZX0FORUdfRElTQUJMRUQgICAgICAgICAgIDIKKworLyogRGVmaW5lIGR1cGxleCBhZHZlcnRpc21lbnQgZmxhZ3MgKi8KKyNkZWZpbmUgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUgICAgICAgICAweDAwCisjZGVmaW5lIFRSVUVQSFlfQURWX0RVUExFWF9GVUxMICAgICAgICAgMHgwMQorI2RlZmluZSBUUlVFUEhZX0FEVl9EVVBMRVhfSEFMRiAgICAgICAgIDB4MDIKKyNkZWZpbmUgVFJVRVBIWV9BRFZfRFVQTEVYX0JPVEggICAgIFwKKyAgICAoVFJVRVBIWV9BRFZfRFVQTEVYX0ZVTEwgfCBUUlVFUEhZX0FEVl9EVVBMRVhfSEFMRikKKworI2RlZmluZSBQSFlfQ09OVFJPTCAgICAgICAgICAgICAgICAweDAwCS8vI2RlZmluZSBUUlVfTUlfQ09OVFJPTF9SRUdJU1RFUiAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBQSFlfU1RBVFVTICAgICAgICAgICAgICAgICAweDAxCS8vI2RlZmluZSBUUlVfTUlfU1RBVFVTX1JFR0lTVEVSICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBQSFlfSURfMSAgICAgICAgICAgICAgICAgICAweDAyCS8vI2RlZmluZSBUUlVfTUlfUEhZX0lERU5USUZJRVJfMV9SRUdJU1RFUiAgICAgICAgMgorI2RlZmluZSBQSFlfSURfMiAgICAgICAgICAgICAgICAgICAweDAzCS8vI2RlZmluZSBUUlVfTUlfUEhZX0lERU5USUZJRVJfMl9SRUdJU1RFUiAgICAgICAgMworI2RlZmluZSBQSFlfQVVUT19BRFZFUlRJU0VNRU5UICAgICAweDA0CS8vI2RlZmluZSBUUlVfTUlfQURWRVJUSVNFTUVOVF9SRUdJU1RFUiAgICAgICAgICAgNAorI2RlZmluZSBQSFlfQVVUT19MSU5LX1BBUlRORVIgICAgICAweDA1CS8vI2RlZmluZSBUUlVfTUlfTElOS19QQVJUTkVSX0FCSUxJVFlfUkVHSVNURVIgICAgNQorI2RlZmluZSBQSFlfQVVUT19FWFBBTlNJT04gICAgICAgICAweDA2CS8vI2RlZmluZSBUUlVfTUlfRVhQQU5TSU9OX1JFR0lTVEVSICAgICAgICAgICAgICAgNgorI2RlZmluZSBQSFlfQVVUT19ORVhUX1BBR0VfVFggICAgICAweDA3CS8vI2RlZmluZSBUUlVfTUlfTkVYVF9QQUdFX1RSQU5TTUlUX1JFR0lTVEVSICAgICAgNworI2RlZmluZSBQSFlfTElOS19QQVJUTkVSX05FWFRfUEFHRSAweDA4CS8vI2RlZmluZSBUUlVfTUlfTElOS19QQVJUTkVSX05FWFRfUEFHRV9SRUdJU1RFUiAgOAorI2RlZmluZSBQSFlfMTAwMF9DT05UUk9MICAgICAgICAgICAweDA5CS8vI2RlZmluZSBUUlVfTUlfMTAwMEJBU0VUX0NPTlRST0xfUkVHSVNURVIgICAgICAgOQorI2RlZmluZSBQSFlfMTAwMF9TVEFUVVMgICAgICAgICAgICAweDBBCS8vI2RlZmluZSBUUlVfTUlfMTAwMEJBU0VUX1NUQVRVU19SRUdJU1RFUiAgICAgICAgMTAKKworI2RlZmluZSBQSFlfRVhURU5ERURfU1RBVFVTICAgICAgICAweDBGCS8vI2RlZmluZSBUUlVfTUlfRVhURU5ERURfU1RBVFVTX1JFR0lTVEVSICAgICAgICAgMTUKKworLy8gc29tZSBkZWZpbmVzIGZvciBtb2RlbSByZWdpc3RlcnMgdGhhdCBzZWVtIHRvIGJlICdyZXNlcnZlZCcKKyNkZWZpbmUgUEhZX0lOREVYX1JFRyAgICAgICAgICAgICAgMHgxMAorI2RlZmluZSBQSFlfREFUQV9SRUcgICAgICAgICAgICAgICAweDExCisKKyNkZWZpbmUgUEhZX01QSFlfQ09OVFJPTF9SRUcgICAgICAgMHgxMgkvLyNkZWZpbmUgVFJVX1ZNSV9NUEhZX0NPTlRST0xfUkVHSVNURVIgICAgICAgICAgIDE4CisKKyNkZWZpbmUgUEhZX0xPT1BCQUNLX0NPTlRST0wgICAgICAgMHgxMwkvLyNkZWZpbmUgVFJVX1ZNSV9MT09QQkFDS19DT05UUk9MXzFfUkVHSVNURVIgICAgIDE5CisJCQkJCS8vI2RlZmluZSBUUlVfVk1JX0xPT1BCQUNLX0NPTlRST0xfMl9SRUdJU1RFUiAgICAgMjAKKyNkZWZpbmUgUEhZX1JFR0lTVEVSX01HTVRfQ09OVFJPTCAgMHgxNQkvLyNkZWZpbmUgVFJVX1ZNSV9NSV9TRVFfQ09OVFJPTF9SRUdJU1RFUiAgICAgICAgIDIxCisjZGVmaW5lIFBIWV9DT05GSUcgICAgICAgICAgICAgICAgIDB4MTYJLy8jZGVmaW5lIFRSVV9WTUlfQ09ORklHVVJBVElPTl9SRUdJU1RFUiAgICAgICAgICAyMgorI2RlZmluZSBQSFlfUEhZX0NPTlRST0wgICAgICAgICAgICAweDE3CS8vI2RlZmluZSBUUlVfVk1JX1BIWV9DT05UUk9MX1JFR0lTVEVSICAgICAgICAgICAgMjMKKyNkZWZpbmUgUEhZX0lOVEVSUlVQVF9NQVNLICAgICAgICAgMHgxOAkvLyNkZWZpbmUgVFJVX1ZNSV9JTlRFUlJVUFRfTUFTS19SRUdJU1RFUiAgICAgICAgIDI0CisjZGVmaW5lIFBIWV9JTlRFUlJVUFRfU1RBVFVTICAgICAgIDB4MTkJLy8jZGVmaW5lIFRSVV9WTUlfSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiAgICAgICAyNQorI2RlZmluZSBQSFlfUEhZX1NUQVRVUyAgICAgICAgICAgICAweDFBCS8vI2RlZmluZSBUUlVfVk1JX1BIWV9TVEFUVVNfUkVHSVNURVIgICAgICAgICAgICAgMjYKKyNkZWZpbmUgUEhZX0xFRF8xICAgICAgICAgICAgICAgICAgMHgxQgkvLyNkZWZpbmUgVFJVX1ZNSV9MRURfQ09OVFJPTF8xX1JFR0lTVEVSICAgICAgICAgIDI3CisjZGVmaW5lIFBIWV9MRURfMiAgICAgICAgICAgICAgICAgIDB4MUMJLy8jZGVmaW5lIFRSVV9WTUlfTEVEX0NPTlRST0xfMl9SRUdJU1RFUiAgICAgICAgICAyOAorCQkJCQkvLyNkZWZpbmUgVFJVX1ZNSV9MSU5LX0NPTlRST0xfUkVHSVNURVIgICAgICAgICAgIDI5CisJCQkJCS8vI2RlZmluZSBUUlVfVk1JX1RJTUlOR19DT05UUk9MX1JFR0lTVEVSCisKKy8qIFByb3RvdHlwZXMgZm9yIFBIWSBhY2Nlc3Mgcm91dGluZXMgKi8KK3ZvaWQgRVQxMzEwX1BoeUluaXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgRVQxMzEwX1BoeVJlc2V0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIEVUMTMxMF9QaHlQb3dlckRvd24oc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLCBib29sIGRvd24pOwordm9pZCBFVDEzMTBfUGh5QXV0b05lZyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgZW5hYmxlKTsKK3ZvaWQgRVQxMzEwX1BoeUR1cGxleE1vZGUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLCB1MTYgZHVwbGV4KTsKK3ZvaWQgRVQxMzEwX1BoeVNwZWVkU2VsZWN0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwgdTE2IHNwZWVkKTsKK3ZvaWQgRVQxMzEwX1BoeUFkdmVydGlzZTEwMDBCYXNlVChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsCisJCQkJICB1MTYgZHVwbGV4KTsKK3ZvaWQgRVQxMzEwX1BoeUFkdmVydGlzZTEwMEJhc2VUKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgdTE2IGR1cGxleCk7Cit2b2lkIEVUMTMxMF9QaHlBZHZlcnRpc2UxMEJhc2VUKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJCQl1MTYgZHVwbGV4KTsKK3ZvaWQgRVQxMzEwX1BoeUxpbmtTdGF0dXMoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLAorCQkJICB1OCAqdWNMaW5rU3RhdHVzLAorCQkJICB1MzIgKnVpQXV0b05lZywKKwkJCSAgdTMyICp1aUxpbmtTcGVlZCwKKwkJCSAgdTMyICp1aUR1cGxleE1vZGUsCisJCQkgIHUzMiAqdWlNZGlNZGl4LAorCQkJICB1MzIgKnVpTWFzdGVyU2xhdmUsIHUzMiAqdWlQb2xhcml0eSk7Cit2b2lkIEVUMTMxMF9QaHlBbmRPclJlZyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsCisJCQl1MTYgcmVnbnVtLCB1MTYgYW5kTWFzaywgdTE2IG9yTWFzayk7Cit2b2lkIEVUMTMxMF9QaHlBY2Nlc3NNaUJpdChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsCisJCQkgICB1MTYgYWN0aW9uLAorCQkJICAgdTE2IHJlZ251bSwgdTE2IGJpdG51bSwgdTggKnZhbHVlKTsKKworI2VuZGlmIC8qIF9FVDEzMTBfUEhZX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9wbS5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTM5YmM2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcG0uYwpAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfcG0uYyAtIEFsbCBwb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgY29kZSAobm90IGNvbXBsZXRlbHkgaW1wbGVtZW50ZWQpCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJldDEzMXhfdmVyc2lvbi5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWJ1Zy5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWZzLmgiCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKyNpbmNsdWRlICJldDEzMTBfbWFjLmgiCisjaW5jbHVkZSAiZXQxMzEwX3J4LmgiCisKKyNpbmNsdWRlICJldDEzMXhfYWRhcHRlci5oIgorI2luY2x1ZGUgImV0MTMxeF9pbml0cGNpLmgiCisKKy8qIERhdGEgZm9yIGRlYnVnZ2luZyBmYWNpbGl0aWVzICovCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworZXh0ZXJuIGRiZ19pbmZvX3QgKmV0MTMxeF9kYmdpbmZvOworI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworLyoqCisgKiBFbmFibGVQaHlDb21hIC0gY2FsbGVkIHdoZW4gbmV0d29yayBjYWJsZSBpcyB1bnBsdWdnZWQKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBkcml2ZXIgcmVjZWl2ZSBhbiBwaHkgc3RhdHVzIGNoYW5nZSBpbnRlcnJ1cHQgd2hpbGUgaW4gRDAgYW5kIGNoZWNrIHRoYXQKKyAqIHBoeV9zdGF0dXMgaXMgZG93bi4KKyAqCisgKiAgICAgICAgICAtLSBnYXRlIG9mZiBKQUdDb3JlOworICogICAgICAgICAgLS0gc2V0IGdpZ0UgUEhZIGluIENvbWEgbW9kZQorICogICAgICAgICAgLS0gd2FrZSBvbiBwaHlfaW50ZXJydXB0OyBQZXJmb3JtIHNvZnR3YXJlIHJlc2V0IEpBR0NvcmUsCisgKiAgICAgICAgICAgICByZS1pbml0aWFsaXplIGphZ2NvcmUgYW5kIGdpZ0UgUEhZCisgKgorICogICAgICBBZGQgRDAtQVNQTS1QaHlMaW5rRG93biBTdXBwb3J0OgorICogICAgICAgICAgLS0gd2hpbGUgaW4gRDAsIHdoZW4gdGhlcmUgaXMgYSBwaHlfaW50ZXJydXB0IGluZGljYXRpbmcgcGh5IGxpbmsKKyAqICAgICAgICAgICAgIGRvd24gc3RhdHVzLCBjYWxsIHRoZSBNUFNldFBoeUNvbWEgcm91dGluZSB0byBlbnRlciB0aGlzIGFjdGl2ZQorICogICAgICAgICAgICAgc3RhdGUgcG93ZXIgc2F2aW5nIG1vZGUKKyAqICAgICAgICAgIC0tIHdoaWxlIGluIEQwLUFTUE0tUGh5TGlua0Rvd24gbW9kZSwgd2hlbiB0aGVyZSBpcyBhIHBoeV9pbnRlcnJ1cHQKKyAqICAgICAgIGluZGljYXRpbmcgbGlua3VwIHN0YXR1cywgY2FsbCB0aGUgTVBEaXNhYmxlUGh5Q29tYSByb3V0aW5lIHRvCisgKiAgICAgICAgICAgICByZXN0b3JlIEpBR0NvcmUgYW5kIGdpZ0UgUEhZCisgKi8KK3ZvaWQgRW5hYmxlUGh5Q29tYShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCVBNX0NTUl90IEdsb2JhbFBtQ1NSOworCWludDMyX3QgTG9vcENvdW50ZXIgPSAxMDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlHbG9iYWxQbUNTUi52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLnBtX2Nzci52YWx1ZSk7CisKKwkvKiBTYXZlIHRoZSBHYkUgUEhZIHNwZWVkIGFuZCBkdXBsZXggbW9kZXMuIE5lZWQgdG8gcmVzdG9yZSB0aGlzCisJICogd2hlbiBjYWJsZSBpcyBwbHVnZ2VkIGJhY2sgaW4KKwkgKi8KKwlwQWRhcHRlci0+UG9NZ210LlBvd2VyRG93blNwZWVkID0gcEFkYXB0ZXItPkFpRm9yY2VTcGVlZDsKKwlwQWRhcHRlci0+UG9NZ210LlBvd2VyRG93bkR1cGxleCA9IHBBZGFwdGVyLT5BaUZvcmNlRHB4OworCisJLyogU3RvcCBzZW5kaW5nIHBhY2tldHMuICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBBZGFwdGVyLT5TZW5kSFdMb2NrLCBsb2NrZmxhZ3MpOworCU1QX1NFVF9GTEFHKHBBZGFwdGVyLCBmTVBfQURBUFRFUl9MT1dFUl9QT1dFUik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlNlbmRIV0xvY2ssIGxvY2tmbGFncyk7CisKKwkvKiBXYWl0IGZvciBvdXRzdGFuZGluZyBSZWNlaXZlIHBhY2tldHMgKi8KKwl3aGlsZSAoKE1QX0dFVF9SQ1ZfUkVGKHBBZGFwdGVyKSAhPSAwKSAmJiAoTG9vcENvdW50ZXItLSA+IDApKSB7CisJCW1kZWxheSgyKTsKKwl9CisKKwkvKiBHYXRlIG9mZiBKQUdDb3JlIDMgY2xvY2sgZG9tYWlucyAqLworCUdsb2JhbFBtQ1NSLmJpdHMucG1fc3lzY2xrX2dhdGUgPSAwOworCUdsb2JhbFBtQ1NSLmJpdHMucG1fdHhjbGtfZ2F0ZSA9IDA7CisJR2xvYmFsUG1DU1IuYml0cy5wbV9yeGNsa19nYXRlID0gMDsKKwl3cml0ZWwoR2xvYmFsUG1DU1IudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLnBtX2Nzci52YWx1ZSk7CisKKwkvKiBQcm9ncmFtIGdpZ0UgUEhZIGluIHRvIENvbWEgbW9kZSAqLworCUdsb2JhbFBtQ1NSLmJpdHMucG1fcGh5X3N3X2NvbWEgPSAxOworCXdyaXRlbChHbG9iYWxQbUNTUi52YWx1ZSwgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5nbG9iYWwucG1fY3NyLnZhbHVlKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogRGlzYWJsZVBoeUNvbWEgLSBEaXNhYmxlIHRoZSBQaHkgQ29tYSBNb2RlCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgRGlzYWJsZVBoeUNvbWEoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlQTV9DU1JfdCBHbG9iYWxQbUNTUjsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlHbG9iYWxQbUNTUi52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLnBtX2Nzci52YWx1ZSk7CisKKwkvKiBEaXNhYmxlIHBoeV9zd19jb21hIHJlZ2lzdGVyIGFuZCByZS1lbmFibGUgSkFHQ29yZSBjbG9ja3MgKi8KKwlHbG9iYWxQbUNTUi5iaXRzLnBtX3N5c2Nsa19nYXRlID0gMTsKKwlHbG9iYWxQbUNTUi5iaXRzLnBtX3R4Y2xrX2dhdGUgPSAxOworCUdsb2JhbFBtQ1NSLmJpdHMucG1fcnhjbGtfZ2F0ZSA9IDE7CisJR2xvYmFsUG1DU1IuYml0cy5wbV9waHlfc3dfY29tYSA9IDA7CisJd3JpdGVsKEdsb2JhbFBtQ1NSLnZhbHVlLCAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPmdsb2JhbC5wbV9jc3IudmFsdWUpOworCisJLyogUmVzdG9yZSB0aGUgR2JFIFBIWSBzcGVlZCBhbmQgZHVwbGV4IG1vZGVzOworCSAqIFJlc2V0IEpBR0NvcmU7IHJlLWNvbmZpZ3VyZSBhbmQgaW5pdGlhbGl6ZSBKQUdDb3JlIGFuZCBnaWdFIFBIWQorCSAqLworCXBBZGFwdGVyLT5BaUZvcmNlU3BlZWQgPSBwQWRhcHRlci0+UG9NZ210LlBvd2VyRG93blNwZWVkOworCXBBZGFwdGVyLT5BaUZvcmNlRHB4ID0gcEFkYXB0ZXItPlBvTWdtdC5Qb3dlckRvd25EdXBsZXg7CisKKwkvKiBSZS1pbml0aWFsaXplIHRoZSBzZW5kIHN0cnVjdHVyZXMgKi8KKwlldDEzMXhfaW5pdF9zZW5kKHBBZGFwdGVyKTsKKworCS8qIFJlc2V0IHRoZSBSRkQgbGlzdCBhbmQgcmUtc3RhcnQgUlUgICovCisJZXQxMzF4X3Jlc2V0X3JlY3YocEFkYXB0ZXIpOworCisJLyogQnJpbmcgdGhlIGRldmljZSBiYWNrIHRvIHRoZSBzdGF0ZSBpdCB3YXMgZHVyaW5nIGluaXQgcHJpb3IgdG8KKyAgICAgICAgICogYXV0b25lZ290aWF0aW9uIGJlaW5nIGNvbXBsZXRlLiAgVGhpcyB3YXksIHdoZW4gd2UgZ2V0IHRoZSBhdXRvLW5lZworICAgICAgICAgKiBjb21wbGV0ZSBpbnRlcnJ1cHQsIHdlIGNhbiBjb21wbGV0ZSBpbml0IGJ5IGNhbGxpbmcgQ29uZmlnTWFjUkVHUzIuCisgICAgICAgICAqLworCWV0MTMxeF9zb2Z0X3Jlc2V0KHBBZGFwdGVyKTsKKworCS8qIHNldHVwIGV0MTMxMCBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24gPz8gKi8KKwlldDEzMXhfYWRhcHRlcl9zZXR1cChwQWRhcHRlcik7CisKKwkvKiBBbGxvdyBUeCB0byByZXN0YXJ0ICovCisJTVBfQ0xFQVJfRkxBRyhwQWRhcHRlciwgZk1QX0FEQVBURVJfTE9XRVJfUE9XRVIpOworCisJLyogTmVlZCB0byByZS1lbmFibGUgUnguICovCisJZXQxMzF4X3J4X2RtYV9lbmFibGUocEFkYXB0ZXIpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcG0uaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwMjMzOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BtLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzEwX3BtLmggLSBEZWZpbmVzLCBzdHJ1Y3RzLCBlbnVtcywgcHJvdG90eXBlcywgZXRjLiBwZXJ0YWluaW5nIHRvIHBvd2VyCisgKiAgICAgICAgICAgICAgIG1hbmFnZW1lbnQuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX0VUMTMxMF9QTV9IXworI2RlZmluZSBfRVQxMzEwX1BNX0hfCisKKyNpbmNsdWRlICJldDEzMTBfYWRkcmVzc19tYXAuaCIKKworI2RlZmluZSBNQVhfV09MX1BBQ0tFVF9TSVpFICAgIDB4ODAKKyNkZWZpbmUgTUFYX1dPTF9NQVNLX1NJWkUgICAgICAoIE1BWF9XT0xfUEFDS0VUX1NJWkUgLyA4ICkKKyNkZWZpbmUgTlVNX1dPTF9QQVRURVJOUyAgICAgICAweDUKKyNkZWZpbmUgQ1JDMTZfUE9MWSAgICAgICAgICAgICAweDEwMjEKKworLyogRGVmaW5pdGlvbiBvZiBORElTX0RFVklDRV9QT1dFUl9TVEFURSAqLwordHlwZWRlZiBlbnVtIHsKKwlOZGlzRGV2aWNlU3RhdGVVbnNwZWNpZmllZCA9IDAsCisJTmRpc0RldmljZVN0YXRlRDAsCisJTmRpc0RldmljZVN0YXRlRDEsCisJTmRpc0RldmljZVN0YXRlRDIsCisJTmRpc0RldmljZVN0YXRlRDMKK30gTkRJU19ERVZJQ0VfUE9XRVJfU1RBVEU7CisKK3R5cGVkZWYgc3RydWN0IF9NUF9QT1dFUl9NR01UIHsKKwkvKiB2YXJpYWJsZSBwdXR0aW5nIHRoZSBwaHkgaW50byBjb21hIG1vZGUgd2hlbiBib290IHVwIHdpdGggbm8gY2FibGUKKwkgKiBwbHVnZ2VkIGluIGFmdGVyIDUgc2Vjb25kcworCSAqLworCXU4IFRyYW5zUGh5Q29tYU1vZGVPbkJvb3Q7CisKKwkvKiBBcnJheSBob2xkaW5nIHRoZSBmaXZlIENSQyB2YWx1ZXMgdGhhdCB0aGUgZGV2aWNlIGlzIGN1cnJlbnRseQorCSAqIHVzaW5nIGZvciBXT0wuICBUaGlzIHdpbGwgYmUgcXVlcmllZCB3aGVuIGEgcGF0dGVybiBpcyB0byBiZQorCSAqIHJlbW92ZWQuCisJICovCisJdTMyIGxvY2FsV29sQW5kQ3JjMDsKKwl1MTYgV09MUGF0dGVybkxpc3RbTlVNX1dPTF9QQVRURVJOU107CisJdTggV09MTWFza0xpc3RbTlVNX1dPTF9QQVRURVJOU11bTUFYX1dPTF9NQVNLX1NJWkVdOworCXUzMiBXT0xNYXNrU2l6ZVtOVU1fV09MX1BBVFRFUk5TXTsKKworCS8qIElQIGFkZHJlc3MgKi8KKwl1bmlvbiB7CisJCXUzMiB1MzI7CisJCXU4IHU4WzRdOworCX0gSVBBZGRyZXNzOworCisJLyogQ3VycmVudCBQb3dlciBzdGF0ZSBvZiB0aGUgYWRhcHRlci4gKi8KKwlORElTX0RFVklDRV9QT1dFUl9TVEFURSBQb3dlclN0YXRlOworCWJvb2wgV09MU3RhdGU7CisJYm9vbCBXT0xFbmFibGVkOworCWJvb2wgRmFpbGVkMTBIYWxmOworCWJvb2wgYkZhaWxlZFN0YXRlVHJhbnNpdGlvbjsKKworCS8qIE5leHQgdHdvIHVzZWQgdG8gc2F2ZSBwb3dlciBpbmZvcm1hdGlvbiBhdCBwb3dlciBkb3duLiBUaGlzCisJICogaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGR1cmluZyBwb3dlciB1cCB0byBzZXQgdXAgcGFydHMgb2YgUG93ZXIKKwkgKiBNYW5hZ2VtZW50IGluIEpBR0NvcmUKKwkgKi8KKwl1MzIgdHhfZW47CisJdTMyIHJ4X2VuOworCXUxNiBQb3dlckRvd25TcGVlZDsKKwl1OCBQb3dlckRvd25EdXBsZXg7Cit9IE1QX1BPV0VSX01HTVQsICpQTVBfUE9XRVJfTUdNVDsKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICogKCBJUyBUSEVSRSBBIFdBWSBUTyBETyBUSElTIFdJVEggQSBUWVBFREVGPz8/ICkKKyAqLworc3RydWN0IGV0MTMxeF9hZGFwdGVyOworCit1MTYgQ2FsY3VsYXRlQ0NJVENSQzE2KHU4ICpQYXR0ZXJuLCB1OCAqTWFzaywgdTMyIE1hc2tTaXplKTsKK3ZvaWQgRW5hYmxlUGh5Q29tYShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBEaXNhYmxlUGh5Q29tYShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOworCisjZW5kaWYgLyogX0VUMTMxMF9QTV9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5OGRhNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMKQEAgLTAsMCArMSwxMzkxIEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxMF9yeC5jIC0gUm91dGluZXMgdXNlZCB0byBwZXJmb3JtIGRhdGEgcmVjZXB0aW9uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJldDEzMXhfdmVyc2lvbi5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWJ1Zy5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWZzLmgiCisKKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKworI2luY2x1ZGUgImV0MTMxeF9hZGFwdGVyLmgiCisjaW5jbHVkZSAiZXQxMzF4X2luaXRwY2kuaCIKKworI2luY2x1ZGUgImV0MTMxMF9yeC5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKK2V4dGVybiBkYmdfaW5mb190ICpldDEzMXhfZGJnaW5mbzsKKyNlbmRpZiAvKiBDT05GSUdfRVQxMzFYX0RFQlVHICovCisKKwordm9pZCBuaWNfcmV0dXJuX3JmZChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLCBQTVBfUkZEIHBNcFJmZCk7CisKKy8qKgorICogZXQxMzF4X3J4X2RtYV9tZW1vcnlfYWxsb2MKKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkKKyAqCisgKiBBbGxvY2F0ZXMgRnJlZSBidWZmZXIgcmluZyAxIGZvciBzdXJlLCBmcmVlIGJ1ZmZlciByaW5nIDAgaWYgcmVxdWlyZWQsCisgKiBhbmQgdGhlIFBhY2tldCBTdGF0dXMgUmluZy4KKyAqLworaW50IGV0MTMxeF9yeF9kbWFfbWVtb3J5X2FsbG9jKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1aW50MzJfdCBPdXRlckxvb3AsIElubmVyTG9vcDsKKwl1aW50MzJfdCBidWZzaXplOworCXVpbnQzMl90IHBrdFN0YXRSaW5nU2l6ZSwgRkJSQ2h1bmtTaXplOworCVJYX1JJTkdfdCAqcnhfcmluZzsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBTZXR1cCBzb21lIGNvbnZlbmllbmNlIHBvaW50ZXJzICovCisJcnhfcmluZyA9IChSWF9SSU5HX3QgKikgJiBhZGFwdGVyLT5SeFJpbmc7CisKKwkvKiBBbGxvYyBtZW1vcnkgZm9yIHRoZSBsb29rdXAgdGFibGUgKi8KKyNpZmRlZiBVU0VfRkJSMAorCXJ4X3JpbmctPkZiclswXSA9IGttYWxsb2Moc2l6ZW9mKEZCUkxPT0tVUFRBQkxFKSwgR0ZQX0tFUk5FTCk7CisjZW5kaWYKKworCXJ4X3JpbmctPkZiclsxXSA9IGttYWxsb2Moc2l6ZW9mKEZCUkxPT0tVUFRBQkxFKSwgR0ZQX0tFUk5FTCk7CisKKwkvKiBUaGUgZmlyc3QgdGhpbmcgd2Ugd2lsbCBkbyBpcyBjb25maWd1cmUgdGhlIHNpemVzIG9mIHRoZSBidWZmZXIKKwkgKiByaW5ncy4gVGhlc2Ugd2lsbCBjaGFuZ2UgYmFzZWQgb24ganVtYm8gcGFja2V0IHN1cHBvcnQuICBMYXJnZXIKKwkgKiBqdW1ibyBwYWNrZXRzIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiBlYWNoIGVudHJ5IGluIEZCUjAsIGFuZCB0aGUKKwkgKiBudW1iZXIgb2YgZW50cmllcyBpbiBGQlIwLCB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIGRlY3JlYXNpbmcgdGhlCisJICogbnVtYmVyIG9mIGVudHJpZXMgaW4gRkJSMS4KKwkgKgorCSAqIEZCUjEgaG9sZHMgImxhcmdlIiBmcmFtZXMsIEZCUjAgaG9sZHMgInNtYWxsIiBmcmFtZXMuICBJZiBGQlIxCisJICogZW50cmllcyBhcmUgaHVnZSBpbiBvcmRlciB0byBhY2NvbW9kYXRlIGEgImp1bWJvIiBmcmFtZSwgdGhlbiBpdAorCSAqIHdpbGwgaGF2ZSBsZXNzIGVudHJpZXMuICBDb252ZXJzZWx5LCBGQlIxIHdpbGwgbm93IGJlIHJlbGllZCB1cG9uCisJICogdG8gY2FycnkgbW9yZSAibm9ybWFsIiBmcmFtZXMsIHRodXMgaXQncyBlbnRyeSBzaXplIGFsc28gaW5jcmVhc2VzCisJICogYW5kIHRoZSBudW1iZXIgb2YgZW50cmllcyBnb2VzIHVwIHRvbyAoc2luY2UgaXQgbm93IGNhcnJpZXMKKwkgKiAic21hbGwiICsgInJlZ3VsYXIiIHBhY2tldHMuCisJICoKKwkgKiBJbiB0aGlzIHNjaGVtZSwgd2UgdHJ5IHRvIG1haW50YWluIDUxMiBlbnRyaWVzIGJldHdlZW4gdGhlIHR3bworCSAqIHJpbmdzLiBBbHNvLCBGQlIxIHJlbWFpbnMgYSBjb25zdGFudCBzaXplIC0gd2hlbiBpdCdzIHNpemUgZG91YmxlcworCSAqIHRoZSBudW1iZXIgb2YgZW50cmllcyBoYWx2ZXMuICBGQlIwIGluY3JlYXNlcyBpbiBzaXplLCBob3dldmVyLgorCSAqLworCisJaWYgKGFkYXB0ZXItPlJlZ2lzdHJ5SnVtYm9QYWNrZXQgPCAyMDQ4KSB7CisjaWZkZWYgVVNFX0ZCUjAKKwkJcnhfcmluZy0+RmJyMEJ1ZmZlclNpemUgPSAyNTY7CisJCXJ4X3JpbmctPkZicjBOdW1FbnRyaWVzID0gNTEyOworI2VuZGlmCisJCXJ4X3JpbmctPkZicjFCdWZmZXJTaXplID0gMjA0ODsKKwkJcnhfcmluZy0+RmJyMU51bUVudHJpZXMgPSA1MTI7CisJfSBlbHNlIGlmIChhZGFwdGVyLT5SZWdpc3RyeUp1bWJvUGFja2V0IDwgNDA5NikgeworI2lmZGVmIFVTRV9GQlIwCisJCXJ4X3JpbmctPkZicjBCdWZmZXJTaXplID0gNTEyOworCQlyeF9yaW5nLT5GYnIwTnVtRW50cmllcyA9IDEwMjQ7CisjZW5kaWYKKwkJcnhfcmluZy0+RmJyMUJ1ZmZlclNpemUgPSA0MDk2OworCQlyeF9yaW5nLT5GYnIxTnVtRW50cmllcyA9IDUxMjsKKwl9IGVsc2UgeworI2lmZGVmIFVTRV9GQlIwCisJCXJ4X3JpbmctPkZicjBCdWZmZXJTaXplID0gMTAyNDsKKwkJcnhfcmluZy0+RmJyME51bUVudHJpZXMgPSA3Njg7CisjZW5kaWYKKwkJcnhfcmluZy0+RmJyMUJ1ZmZlclNpemUgPSAxNjM4NDsKKwkJcnhfcmluZy0+RmJyMU51bUVudHJpZXMgPSAxMjg7CisJfQorCisjaWZkZWYgVVNFX0ZCUjAKKwlhZGFwdGVyLT5SeFJpbmcuUHNyTnVtRW50cmllcyA9IGFkYXB0ZXItPlJ4UmluZy5GYnIwTnVtRW50cmllcyArCisJICAgIGFkYXB0ZXItPlJ4UmluZy5GYnIxTnVtRW50cmllczsKKyNlbHNlCisJYWRhcHRlci0+UnhSaW5nLlBzck51bUVudHJpZXMgPSBhZGFwdGVyLT5SeFJpbmcuRmJyMU51bUVudHJpZXM7CisjZW5kaWYKKworCS8qIEFsbG9jYXRlIGFuIGFyZWEgb2YgbWVtb3J5IGZvciBGcmVlIEJ1ZmZlciBSaW5nIDEgKi8KKwlidWZzaXplID0gKHNpemVvZihGQlJfREVTQ190KSAqIHJ4X3JpbmctPkZicjFOdW1FbnRyaWVzKSArIDB4ZmZmOworCXJ4X3JpbmctPnBGYnIxUmluZ1ZhID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkJCSAgICBidWZzaXplLAorCQkJCQkJICAgICZyeF9yaW5nLT5wRmJyMVJpbmdQYSk7CisJaWYgKCFyeF9yaW5nLT5wRmJyMVJpbmdWYSkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDYW5ub3QgYWxsb2MgbWVtb3J5IGZvciBGcmVlIEJ1ZmZlciBSaW5nIDFcbiIpOworCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiBTYXZlIHBoeXNpY2FsIGFkZHJlc3MKKwkgKgorCSAqIE5PVEU6IHBjaV9hbGxvY19jb25zaXN0ZW50KCksIHVzZWQgYWJvdmUgdG8gYWxsb2MgRE1BIHJlZ2lvbnMsCisJICogQUxXQVlTIHJldHVybnMgU0FDICgzMi1iaXQpIGFkZHJlc3Nlcy4gSWYgREFDICg2NC1iaXQpIGFkZHJlc3NlcworCSAqIGFyZSBldmVyIHJldHVybmVkLCBtYWtlIHN1cmUgdGhlIGhpZ2ggcGFydCBpcyByZXRyaWV2ZWQgaGVyZQorCSAqIGJlZm9yZSBzdG9yaW5nIHRoZSBhZGp1c3RlZCBhZGRyZXNzLgorCSAqLworCXJ4X3JpbmctPkZicjFSZWFscGEgPSByeF9yaW5nLT5wRmJyMVJpbmdQYTsKKworCS8qIEFsaWduIEZyZWUgQnVmZmVyIFJpbmcgMSBvbiBhIDRLIGJvdW5kYXJ5ICovCisJZXQxMzF4X2FsaWduX2FsbG9jYXRlZF9tZW1vcnkoYWRhcHRlciwKKwkJCQkgICAgICAmcnhfcmluZy0+RmJyMVJlYWxwYSwKKwkJCQkgICAgICAmcnhfcmluZy0+RmJyMW9mZnNldCwgMHgwRkZGKTsKKworCXJ4X3JpbmctPnBGYnIxUmluZ1ZhID0gKHZvaWQgKikoKHVpbnQ4X3QgKikgcnhfcmluZy0+cEZicjFSaW5nVmEgKworCQkJCQlyeF9yaW5nLT5GYnIxb2Zmc2V0KTsKKworI2lmZGVmIFVTRV9GQlIwCisJLyogQWxsb2NhdGUgYW4gYXJlYSBvZiBtZW1vcnkgZm9yIEZyZWUgQnVmZmVyIFJpbmcgMCAqLworCWJ1ZnNpemUgPSAoc2l6ZW9mKEZCUl9ERVNDX3QpICogcnhfcmluZy0+RmJyME51bUVudHJpZXMpICsgMHhmZmY7CisJcnhfcmluZy0+cEZicjBSaW5nVmEgPSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCQkJICAgIGJ1ZnNpemUsCisJCQkJCQkgICAgJnJ4X3JpbmctPnBGYnIwUmluZ1BhKTsKKwlpZiAoIXJ4X3JpbmctPnBGYnIwUmluZ1ZhKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIkNhbm5vdCBhbGxvYyBtZW1vcnkgZm9yIEZyZWUgQnVmZmVyIFJpbmcgMFxuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qIFNhdmUgcGh5c2ljYWwgYWRkcmVzcworCSAqCisJICogTk9URTogcGNpX2FsbG9jX2NvbnNpc3RlbnQoKSwgdXNlZCBhYm92ZSB0byBhbGxvYyBETUEgcmVnaW9ucywKKwkgKiBBTFdBWVMgcmV0dXJucyBTQUMgKDMyLWJpdCkgYWRkcmVzc2VzLiBJZiBEQUMgKDY0LWJpdCkgYWRkcmVzc2VzCisJICogYXJlIGV2ZXIgcmV0dXJuZWQsIG1ha2Ugc3VyZSB0aGUgaGlnaCBwYXJ0IGlzIHJldHJpZXZlZCBoZXJlIGJlZm9yZQorCSAqIHN0b3JpbmcgdGhlIGFkanVzdGVkIGFkZHJlc3MuCisJICovCisJcnhfcmluZy0+RmJyMFJlYWxwYSA9IHJ4X3JpbmctPnBGYnIwUmluZ1BhOworCisJLyogQWxpZ24gRnJlZSBCdWZmZXIgUmluZyAwIG9uIGEgNEsgYm91bmRhcnkgKi8KKwlldDEzMXhfYWxpZ25fYWxsb2NhdGVkX21lbW9yeShhZGFwdGVyLAorCQkJCSAgICAgICZyeF9yaW5nLT5GYnIwUmVhbHBhLAorCQkJCSAgICAgICZyeF9yaW5nLT5GYnIwb2Zmc2V0LCAweDBGRkYpOworCisJcnhfcmluZy0+cEZicjBSaW5nVmEgPSAodm9pZCAqKSgodWludDhfdCAqKSByeF9yaW5nLT5wRmJyMFJpbmdWYSArCisJCQkJCXJ4X3JpbmctPkZicjBvZmZzZXQpOworI2VuZGlmCisKKwlmb3IgKE91dGVyTG9vcCA9IDA7IE91dGVyTG9vcCA8IChyeF9yaW5nLT5GYnIxTnVtRW50cmllcyAvIEZCUl9DSFVOS1MpOworCSAgICAgT3V0ZXJMb29wKyspIHsKKwkJdWludDY0X3QgRmJyMU9mZnNldDsKKwkJdWludDY0X3QgRmJyMVRlbXBQYTsKKwkJdWludDMyX3QgRmJyMUFsaWduOworCisJCS8qIFRoaXMgY29kZSBhbGxvY2F0ZXMgYW4gYXJlYSBvZiBtZW1vcnkgYmlnIGVub3VnaCBmb3IgTgorCQkgKiBmcmVlIGJ1ZmZlcnMgKyAoYnVmZmVyX3NpemUgLSAxKSBzbyB0aGF0IHRoZSBidWZmZXJzIGNhbgorCQkgKiBiZSBhbGlnbmVkIG9uIDRrIGJvdW5kYXJpZXMuICBJZiBlYWNoIGJ1ZmZlciB3ZXJlIGFsaWduZWQKKwkJICogdG8gYSBidWZmZXJfc2l6ZSBib3VuZGFyeSwgdGhlIGVmZmVjdCB3b3VsZCBiZSB0byBkb3VibGUKKwkJICogdGhlIHNpemUgb2YgRkJSMC4gIEJ5IGFsbG9jYXRpbmcgTiBidWZmZXJzIGF0IG9uY2UsIHdlCisJCSAqIHJlZHVjZSB0aGlzIG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKHJ4X3JpbmctPkZicjFCdWZmZXJTaXplID4gNDA5NikgeworCQkJRmJyMUFsaWduID0gNDA5NjsKKwkJfSBlbHNlIHsKKwkJCUZicjFBbGlnbiA9IHJ4X3JpbmctPkZicjFCdWZmZXJTaXplOworCQl9CisKKwkJRkJSQ2h1bmtTaXplID0KKwkJICAgIChGQlJfQ0hVTktTICogcnhfcmluZy0+RmJyMUJ1ZmZlclNpemUpICsgRmJyMUFsaWduIC0gMTsKKwkJcnhfcmluZy0+RmJyMU1lbVZhW091dGVyTG9vcF0gPQorCQkgICAgcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwgRkJSQ2h1bmtTaXplLAorCQkJCQkgJnJ4X3JpbmctPkZicjFNZW1QYVtPdXRlckxvb3BdKTsKKworCQlpZiAoIXJ4X3JpbmctPkZicjFNZW1WYVtPdXRlckxvb3BdKSB7CisJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDb3VsZCBub3QgYWxsb2MgbWVtb3J5XG4iKTsKKwkJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCisJCS8qIFNlZSBOT1RFIGluICJTYXZlIFBoeXNpY2FsIEFkZHJlc3MiIGNvbW1lbnQgYWJvdmUgKi8KKwkJRmJyMVRlbXBQYSA9IHJ4X3JpbmctPkZicjFNZW1QYVtPdXRlckxvb3BdOworCisJCWV0MTMxeF9hbGlnbl9hbGxvY2F0ZWRfbWVtb3J5KGFkYXB0ZXIsCisJCQkJCSAgICAgICZGYnIxVGVtcFBhLAorCQkJCQkgICAgICAmRmJyMU9mZnNldCwgKEZicjFBbGlnbiAtIDEpKTsKKworCQlmb3IgKElubmVyTG9vcCA9IDA7IElubmVyTG9vcCA8IEZCUl9DSFVOS1M7IElubmVyTG9vcCsrKSB7CisJCQl1aW50MzJfdCBpbmRleCA9IChPdXRlckxvb3AgKiBGQlJfQ0hVTktTKSArIElubmVyTG9vcDsKKworCQkJLyogU2F2ZSB0aGUgVmlydHVhbCBhZGRyZXNzIG9mIHRoaXMgaW5kZXggZm9yIHF1aWNrCisJCQkgKiBhY2Nlc3MgbGF0ZXIKKwkJCSAqLworCQkJcnhfcmluZy0+RmJyWzFdLT5WYVtpbmRleF0gPQorCQkJICAgICh1aW50OF90ICopIHJ4X3JpbmctPkZicjFNZW1WYVtPdXRlckxvb3BdICsKKwkJCSAgICAoSW5uZXJMb29wICogcnhfcmluZy0+RmJyMUJ1ZmZlclNpemUpICsgRmJyMU9mZnNldDsKKworCQkJLyogbm93IHN0b3JlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGluIHRoZSBkZXNjcmlwdG9yCisJCQkgKiBzbyB0aGUgZGV2aWNlIGNhbiBhY2Nlc3MgaXQKKwkJCSAqLworCQkJcnhfcmluZy0+RmJyWzFdLT5QQUhpZ2hbaW5kZXhdID0KKwkJCSAgICAodWludDMyX3QpIChGYnIxVGVtcFBhID4+IDMyKTsKKwkJCXJ4X3JpbmctPkZiclsxXS0+UEFMb3dbaW5kZXhdID0gKHVpbnQzMl90KSBGYnIxVGVtcFBhOworCisJCQlGYnIxVGVtcFBhICs9IHJ4X3JpbmctPkZicjFCdWZmZXJTaXplOworCisJCQlyeF9yaW5nLT5GYnJbMV0tPkJ1ZmZlcjFbaW5kZXhdID0KKwkJCSAgICByeF9yaW5nLT5GYnJbMV0tPlZhW2luZGV4XTsKKwkJCXJ4X3JpbmctPkZiclsxXS0+QnVmZmVyMltpbmRleF0gPQorCQkJICAgIHJ4X3JpbmctPkZiclsxXS0+VmFbaW5kZXhdIC0gNDsKKwkJfQorCX0KKworI2lmZGVmIFVTRV9GQlIwCisJLyogU2FtZSBmb3IgRkJSMCAoaWYgaW4gdXNlKSAqLworCWZvciAoT3V0ZXJMb29wID0gMDsgT3V0ZXJMb29wIDwgKHJ4X3JpbmctPkZicjBOdW1FbnRyaWVzIC8gRkJSX0NIVU5LUyk7CisJICAgICBPdXRlckxvb3ArKykgeworCQl1aW50NjRfdCBGYnIwT2Zmc2V0OworCQl1aW50NjRfdCBGYnIwVGVtcFBhOworCisJCUZCUkNodW5rU2l6ZSA9ICgoRkJSX0NIVU5LUyArIDEpICogcnhfcmluZy0+RmJyMEJ1ZmZlclNpemUpIC0gMTsKKwkJcnhfcmluZy0+RmJyME1lbVZhW091dGVyTG9vcF0gPQorCQkgICAgcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwgRkJSQ2h1bmtTaXplLAorCQkJCQkgJnJ4X3JpbmctPkZicjBNZW1QYVtPdXRlckxvb3BdKTsKKworCQlpZiAoIXJ4X3JpbmctPkZicjBNZW1WYVtPdXRlckxvb3BdKSB7CisJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDb3VsZCBub3QgYWxsb2MgbWVtb3J5XG4iKTsKKwkJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCisJCS8qIFNlZSBOT1RFIGluICJTYXZlIFBoeXNpY2FsIEFkZHJlc3MiIGNvbW1lbnQgYWJvdmUgKi8KKwkJRmJyMFRlbXBQYSA9IHJ4X3JpbmctPkZicjBNZW1QYVtPdXRlckxvb3BdOworCisJCWV0MTMxeF9hbGlnbl9hbGxvY2F0ZWRfbWVtb3J5KGFkYXB0ZXIsCisJCQkJCSAgICAgICZGYnIwVGVtcFBhLAorCQkJCQkgICAgICAmRmJyME9mZnNldCwKKwkJCQkJICAgICAgcnhfcmluZy0+RmJyMEJ1ZmZlclNpemUgLSAxKTsKKworCQlmb3IgKElubmVyTG9vcCA9IDA7IElubmVyTG9vcCA8IEZCUl9DSFVOS1M7IElubmVyTG9vcCsrKSB7CisJCQl1aW50MzJfdCBpbmRleCA9IChPdXRlckxvb3AgKiBGQlJfQ0hVTktTKSArIElubmVyTG9vcDsKKworCQkJcnhfcmluZy0+RmJyWzBdLT5WYVtpbmRleF0gPQorCQkJICAgICh1aW50OF90ICopIHJ4X3JpbmctPkZicjBNZW1WYVtPdXRlckxvb3BdICsKKwkJCSAgICAoSW5uZXJMb29wICogcnhfcmluZy0+RmJyMEJ1ZmZlclNpemUpICsgRmJyME9mZnNldDsKKworCQkJcnhfcmluZy0+RmJyWzBdLT5QQUhpZ2hbaW5kZXhdID0KKwkJCSAgICAodWludDMyX3QpIChGYnIwVGVtcFBhID4+IDMyKTsKKwkJCXJ4X3JpbmctPkZiclswXS0+UEFMb3dbaW5kZXhdID0gKHVpbnQzMl90KSBGYnIwVGVtcFBhOworCisJCQlGYnIwVGVtcFBhICs9IHJ4X3JpbmctPkZicjBCdWZmZXJTaXplOworCisJCQlyeF9yaW5nLT5GYnJbMF0tPkJ1ZmZlcjFbaW5kZXhdID0KKwkJCSAgICByeF9yaW5nLT5GYnJbMF0tPlZhW2luZGV4XTsKKwkJCXJ4X3JpbmctPkZiclswXS0+QnVmZmVyMltpbmRleF0gPQorCQkJICAgIHJ4X3JpbmctPkZiclswXS0+VmFbaW5kZXhdIC0gNDsKKwkJfQorCX0KKyNlbmRpZgorCisJLyogQWxsb2NhdGUgYW4gYXJlYSBvZiBtZW1vcnkgZm9yIEZJRk8gb2YgUGFja2V0IFN0YXR1cyByaW5nIGVudHJpZXMgKi8KKwlwa3RTdGF0UmluZ1NpemUgPQorCSAgICBzaXplb2YoUEtUX1NUQVRfREVTQ190KSAqIGFkYXB0ZXItPlJ4UmluZy5Qc3JOdW1FbnRyaWVzOworCisJcnhfcmluZy0+cFBTUmluZ1ZhID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkJCSAgcGt0U3RhdFJpbmdTaXplICsgMHgwZmZmLAorCQkJCQkJICAmcnhfcmluZy0+cFBTUmluZ1BhKTsKKworCWlmICghcnhfcmluZy0+cFBTUmluZ1ZhKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIkNhbm5vdCBhbGxvYyBtZW1vcnkgZm9yIFBhY2tldCBTdGF0dXMgUmluZ1xuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qIFNhdmUgcGh5c2ljYWwgYWRkcmVzcworCSAqCisJICogTk9URSA6IHBjaV9hbGxvY19jb25zaXN0ZW50KCksIHVzZWQgYWJvdmUgdG8gYWxsb2MgRE1BIHJlZ2lvbnMsCisJICogQUxXQVlTIHJldHVybnMgU0FDICgzMi1iaXQpIGFkZHJlc3Nlcy4gSWYgREFDICg2NC1iaXQpIGFkZHJlc3NlcworCSAqIGFyZSBldmVyIHJldHVybmVkLCBtYWtlIHN1cmUgdGhlIGhpZ2ggcGFydCBpcyByZXRyaWV2ZWQgaGVyZSBiZWZvcmUKKwkgKiBzdG9yaW5nIHRoZSBhZGp1c3RlZCBhZGRyZXNzLgorCSAqLworCXJ4X3JpbmctPnBQU1JpbmdSZWFsUGEgPSByeF9yaW5nLT5wUFNSaW5nUGE7CisKKwkvKiBBbGlnbiBQYWNrZXQgU3RhdHVzIFJpbmcgb24gYSA0SyBib3VuZGFyeSAqLworCWV0MTMxeF9hbGlnbl9hbGxvY2F0ZWRfbWVtb3J5KGFkYXB0ZXIsCisJCQkJICAgICAgJnJ4X3JpbmctPnBQU1JpbmdSZWFsUGEsCisJCQkJICAgICAgJnJ4X3JpbmctPnBQU1JpbmdPZmZzZXQsIDB4MEZGRik7CisKKwlyeF9yaW5nLT5wUFNSaW5nVmEgPSAodm9pZCAqKSgodWludDhfdCAqKSByeF9yaW5nLT5wUFNSaW5nVmEgKworCQkJCSAgICAgIHJ4X3JpbmctPnBQU1JpbmdPZmZzZXQpOworCisJLyogQWxsb2NhdGUgYW4gYXJlYSBvZiBtZW1vcnkgZm9yIHdyaXRlYmFjayBvZiBzdGF0dXMgaW5mb3JtYXRpb24gKi8KKwlyeF9yaW5nLT5wUnhTdGF0dXNWYSA9IHBjaV9hbGxvY19jb25zaXN0ZW50KGFkYXB0ZXItPnBkZXYsCisJCQkJCQkgICAgc2l6ZW9mKFJYX1NUQVRVU19CTE9DS190KSArCisJCQkJCQkgICAgMHg3LCAmcnhfcmluZy0+cFJ4U3RhdHVzUGEpOworCWlmICghcnhfcmluZy0+cFJ4U3RhdHVzVmEpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiQ2Fubm90IGFsbG9jIG1lbW9yeSBmb3IgU3RhdHVzIEJsb2NrXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogU2F2ZSBwaHlzaWNhbCBhZGRyZXNzICovCisJcnhfcmluZy0+UnhTdGF0dXNSZWFsUEEgPSByeF9yaW5nLT5wUnhTdGF0dXNQYTsKKworCS8qIEFsaWduIHdyaXRlIGJhY2sgb24gYW4gOCBieXRlIGJvdW5kYXJ5ICovCisJZXQxMzF4X2FsaWduX2FsbG9jYXRlZF9tZW1vcnkoYWRhcHRlciwKKwkJCQkgICAgICAmcnhfcmluZy0+UnhTdGF0dXNSZWFsUEEsCisJCQkJICAgICAgJnJ4X3JpbmctPlJ4U3RhdHVzT2Zmc2V0LCAweDA3KTsKKworCXJ4X3JpbmctPnBSeFN0YXR1c1ZhID0gKHZvaWQgKikoKHVpbnQ4X3QgKikgcnhfcmluZy0+cFJ4U3RhdHVzVmEgKworCQkJCQlyeF9yaW5nLT5SeFN0YXR1c09mZnNldCk7CisJcnhfcmluZy0+TnVtUmZkID0gTklDX0RFRkFVTFRfTlVNX1JGRDsKKworCS8qIFJlY3YKKwkgKiBwY2lfcG9vbF9jcmVhdGUgaW5pdGlhbGl6ZXMgYSBsb29rYXNpZGUgbGlzdC4gQWZ0ZXIgc3VjY2Vzc2Z1bAorCSAqIGNyZWF0aW9uLCBub25wYWdlZCBmaXhlZC1zaXplIGJsb2NrcyBjYW4gYmUgYWxsb2NhdGVkIGZyb20gYW5kCisJICogZnJlZWQgdG8gdGhlIGxvb2thc2lkZSBsaXN0LgorCSAqIFJGRHMgd2lsbCBiZSBhbGxvY2F0ZWQgZnJvbSB0aGlzIHBvb2wuCisJICovCisJcnhfcmluZy0+UmVjdkxvb2thc2lkZSA9IGttZW1fY2FjaGVfY3JlYXRlKGFkYXB0ZXItPm5ldGRldi0+bmFtZSwKKwkJCQkJCSAgIHNpemVvZihNUF9SRkQpLAorCQkJCQkJICAgMCwKKwkJCQkJCSAgIFNMQUJfQ0FDSEVfRE1BIHwKKwkJCQkJCSAgIFNMQUJfSFdDQUNIRV9BTElHTiwKKwkJCQkJCSAgIE5VTEwpOworCisJTVBfU0VUX0ZMQUcoYWRhcHRlciwgZk1QX0FEQVBURVJfUkVDVl9MT09LQVNJREUpOworCisJLyogVGhlIFJGRHMgYXJlIGdvaW5nIHRvIGJlIHB1dCBvbiBsaXN0cyBsYXRlciBvbiwgc28gaW5pdGlhbGl6ZSB0aGUKKwkgKiBsaXN0cyBub3cuCisJICovCisJSU5JVF9MSVNUX0hFQUQoJnJ4X3JpbmctPlJlY3ZMaXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmcnhfcmluZy0+UmVjdlBlbmRpbmdMaXN0KTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZXQxMzF4X3J4X2RtYV9tZW1vcnlfZnJlZSAtIEZyZWUgYWxsIG1lbW9yeSBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgbW9kdWxlLgorICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBldDEzMXhfcnhfZG1hX21lbW9yeV9mcmVlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1aW50MzJfdCBpbmRleDsKKwl1aW50MzJfdCBidWZzaXplOworCXVpbnQzMl90IHBrdFN0YXRSaW5nU2l6ZTsKKwlQTVBfUkZEIHBNcFJmZDsKKwlSWF9SSU5HX3QgKnJ4X3Jpbmc7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogU2V0dXAgc29tZSBjb252ZW5pZW5jZSBwb2ludGVycyAqLworCXJ4X3JpbmcgPSAoUlhfUklOR190ICopICYgYWRhcHRlci0+UnhSaW5nOworCisJLyogRnJlZSBSRkRzIGFuZCBhc3NvY2lhdGVkIHBhY2tldCBkZXNjcmlwdG9ycyAqLworCURCR19BU1NFUlQocnhfcmluZy0+blJlYWR5UmVjdiA9PSByeF9yaW5nLT5OdW1SZmQpOworCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZyeF9yaW5nLT5SZWN2TGlzdCkpIHsKKwkJcE1wUmZkID0gKE1QX1JGRCAqKSBsaXN0X2VudHJ5KHJ4X3JpbmctPlJlY3ZMaXN0Lm5leHQsCisJCQkJCSAgICAgICBNUF9SRkQsIGxpc3Rfbm9kZSk7CisKKwkJbGlzdF9kZWwoJnBNcFJmZC0+bGlzdF9ub2RlKTsKKwkJZXQxMzF4X3JmZF9yZXNvdXJjZXNfZnJlZShhZGFwdGVyLCBwTXBSZmQpOworCX0KKworCXdoaWxlICghbGlzdF9lbXB0eSgmcnhfcmluZy0+UmVjdlBlbmRpbmdMaXN0KSkgeworCQlwTXBSZmQgPSAoTVBfUkZEICopIGxpc3RfZW50cnkocnhfcmluZy0+UmVjdlBlbmRpbmdMaXN0Lm5leHQsCisJCQkJCSAgICAgICBNUF9SRkQsIGxpc3Rfbm9kZSk7CisJCWxpc3RfZGVsKCZwTXBSZmQtPmxpc3Rfbm9kZSk7CisJCWV0MTMxeF9yZmRfcmVzb3VyY2VzX2ZyZWUoYWRhcHRlciwgcE1wUmZkKTsKKwl9CisKKwkvKiBGcmVlIEZyZWUgQnVmZmVyIFJpbmcgMSAqLworCWlmIChyeF9yaW5nLT5wRmJyMVJpbmdWYSkgeworCQkvKiBGaXJzdCB0aGUgcGFja2V0IG1lbW9yeSAqLworCQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPAorCQkgICAgIChyeF9yaW5nLT5GYnIxTnVtRW50cmllcyAvIEZCUl9DSFVOS1MpOyBpbmRleCsrKSB7CisJCQlpZiAocnhfcmluZy0+RmJyMU1lbVZhW2luZGV4XSkgeworCQkJCXVpbnQzMl90IEZicjFBbGlnbjsKKworCQkJCWlmIChyeF9yaW5nLT5GYnIxQnVmZmVyU2l6ZSA+IDQwOTYpIHsKKwkJCQkJRmJyMUFsaWduID0gNDA5NjsKKwkJCQl9IGVsc2UgeworCQkJCQlGYnIxQWxpZ24gPSByeF9yaW5nLT5GYnIxQnVmZmVyU2l6ZTsKKwkJCQl9CisKKwkJCQlidWZzaXplID0KKwkJCQkgICAgKHJ4X3JpbmctPkZicjFCdWZmZXJTaXplICogRkJSX0NIVU5LUykgKworCQkJCSAgICBGYnIxQWxpZ24gLSAxOworCisJCQkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCQkJICAgIGJ1ZnNpemUsCisJCQkJCQkgICAgcnhfcmluZy0+RmJyMU1lbVZhW2luZGV4XSwKKwkJCQkJCSAgICByeF9yaW5nLT5GYnIxTWVtUGFbaW5kZXhdKTsKKworCQkJCXJ4X3JpbmctPkZicjFNZW1WYVtpbmRleF0gPSBOVUxMOworCQkJfQorCQl9CisKKwkJLyogTm93IHRoZSBGSUZPIGl0c2VsZiAqLworCQlyeF9yaW5nLT5wRmJyMVJpbmdWYSA9ICh2b2lkICopKCh1aW50OF90ICopIHJ4X3JpbmctPnBGYnIxUmluZ1ZhIC0KKwkJCQkJCXJ4X3JpbmctPkZicjFvZmZzZXQpOworCisJCWJ1ZnNpemUgPQorCQkgICAgKHNpemVvZihGQlJfREVTQ190KSAqIHJ4X3JpbmctPkZicjFOdW1FbnRyaWVzKSArIDB4ZmZmOworCisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkgICAgYnVmc2l6ZSwKKwkJCQkgICAgcnhfcmluZy0+cEZicjFSaW5nVmEsIHJ4X3JpbmctPnBGYnIxUmluZ1BhKTsKKworCQlyeF9yaW5nLT5wRmJyMVJpbmdWYSA9IE5VTEw7CisJfQorCisjaWZkZWYgVVNFX0ZCUjAKKwkvKiBOb3cgdGhlIHNhbWUgZm9yIEZyZWUgQnVmZmVyIFJpbmcgMCAqLworCWlmIChyeF9yaW5nLT5wRmJyMFJpbmdWYSkgeworCQkvKiBGaXJzdCB0aGUgcGFja2V0IG1lbW9yeSAqLworCQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPAorCQkgICAgIChyeF9yaW5nLT5GYnIwTnVtRW50cmllcyAvIEZCUl9DSFVOS1MpOyBpbmRleCsrKSB7CisJCQlpZiAocnhfcmluZy0+RmJyME1lbVZhW2luZGV4XSkgeworCQkJCWJ1ZnNpemUgPQorCQkJCSAgICAocnhfcmluZy0+RmJyMEJ1ZmZlclNpemUgKgorCQkJCSAgICAgKEZCUl9DSFVOS1MgKyAxKSkgLSAxOworCisJCQkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCQkJICAgIGJ1ZnNpemUsCisJCQkJCQkgICAgcnhfcmluZy0+RmJyME1lbVZhW2luZGV4XSwKKwkJCQkJCSAgICByeF9yaW5nLT5GYnIwTWVtUGFbaW5kZXhdKTsKKworCQkJCXJ4X3JpbmctPkZicjBNZW1WYVtpbmRleF0gPSBOVUxMOworCQkJfQorCQl9CisKKwkJLyogTm93IHRoZSBGSUZPIGl0c2VsZiAqLworCQlyeF9yaW5nLT5wRmJyMFJpbmdWYSA9ICh2b2lkICopKCh1aW50OF90ICopIHJ4X3JpbmctPnBGYnIwUmluZ1ZhIC0KKwkJCQkJCXJ4X3JpbmctPkZicjBvZmZzZXQpOworCisJCWJ1ZnNpemUgPQorCQkgICAgKHNpemVvZihGQlJfREVTQ190KSAqIHJ4X3JpbmctPkZicjBOdW1FbnRyaWVzKSArIDB4ZmZmOworCisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkgICAgYnVmc2l6ZSwKKwkJCQkgICAgcnhfcmluZy0+cEZicjBSaW5nVmEsIHJ4X3JpbmctPnBGYnIwUmluZ1BhKTsKKworCQlyeF9yaW5nLT5wRmJyMFJpbmdWYSA9IE5VTEw7CisJfQorI2VuZGlmCisKKwkvKiBGcmVlIFBhY2tldCBTdGF0dXMgUmluZyAqLworCWlmIChyeF9yaW5nLT5wUFNSaW5nVmEpIHsKKwkJcnhfcmluZy0+cFBTUmluZ1ZhID0gKHZvaWQgKikoKHVpbnQ4X3QgKikgcnhfcmluZy0+cFBTUmluZ1ZhIC0KKwkJCQkJICAgICAgcnhfcmluZy0+cFBTUmluZ09mZnNldCk7CisKKwkJcGt0U3RhdFJpbmdTaXplID0KKwkJICAgIHNpemVvZihQS1RfU1RBVF9ERVNDX3QpICogYWRhcHRlci0+UnhSaW5nLlBzck51bUVudHJpZXM7CisKKwkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCSAgICBwa3RTdGF0UmluZ1NpemUgKyAweDBmZmYsCisJCQkJICAgIHJ4X3JpbmctPnBQU1JpbmdWYSwgcnhfcmluZy0+cFBTUmluZ1BhKTsKKworCQlyeF9yaW5nLT5wUFNSaW5nVmEgPSBOVUxMOworCX0KKworCS8qIEZyZWUgYXJlYSBvZiBtZW1vcnkgZm9yIHRoZSB3cml0ZWJhY2sgb2Ygc3RhdHVzIGluZm9ybWF0aW9uICovCisJaWYgKHJ4X3JpbmctPnBSeFN0YXR1c1ZhKSB7CisJCXJ4X3JpbmctPnBSeFN0YXR1c1ZhID0gKHZvaWQgKikoKHVpbnQ4X3QgKikgcnhfcmluZy0+cFJ4U3RhdHVzVmEgLQorCQkJCQkJcnhfcmluZy0+UnhTdGF0dXNPZmZzZXQpOworCisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkgICAgc2l6ZW9mKFJYX1NUQVRVU19CTE9DS190KSArIDB4NywKKwkJCQkgICAgcnhfcmluZy0+cFJ4U3RhdHVzVmEsIHJ4X3JpbmctPnBSeFN0YXR1c1BhKTsKKworCQlyeF9yaW5nLT5wUnhTdGF0dXNWYSA9IE5VTEw7CisJfQorCisJLyogRnJlZSByZWNlaXZlIGJ1ZmZlciBwb29sICovCisKKwkvKiBGcmVlIHJlY2VpdmUgcGFja2V0IHBvb2wgKi8KKworCS8qIERlc3Ryb3kgdGhlIGxvb2thc2lkZSAoUkZEKSBwb29sICovCisJaWYgKE1QX1RFU1RfRkxBRyhhZGFwdGVyLCBmTVBfQURBUFRFUl9SRUNWX0xPT0tBU0lERSkpIHsKKwkJa21lbV9jYWNoZV9kZXN0cm95KHJ4X3JpbmctPlJlY3ZMb29rYXNpZGUpOworCQlNUF9DTEVBUl9GTEFHKGFkYXB0ZXIsIGZNUF9BREFQVEVSX1JFQ1ZfTE9PS0FTSURFKTsKKwl9CisKKwkvKiBGcmVlIHRoZSBGQlIgTG9va3VwIFRhYmxlICovCisjaWZkZWYgVVNFX0ZCUjAKKwlrZnJlZShyeF9yaW5nLT5GYnJbMF0pOworI2VuZGlmCisKKwlrZnJlZShyeF9yaW5nLT5GYnJbMV0pOworCisJLyogUmVzZXQgQ291bnRlcnMgKi8KKwlyeF9yaW5nLT5uUmVhZHlSZWN2ID0gMDsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogZXQxMzF4X2luaXRfcmVjdiAtIEluaXRpYWxpemUgcmVjZWl2ZSBkYXRhIHN0cnVjdHVyZXMuCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfaW5pdF9yZWN2KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpbnQgc3RhdHVzID0gLUVOT01FTTsKKwlQTVBfUkZEIHBNcFJmZCA9IE5VTEw7CisJdWludDMyX3QgUmZkQ291bnQ7CisJdWludDMyX3QgVG90YWxOdW1SZmQgPSAwOworCVJYX1JJTkdfdCAqcnhfcmluZyA9IE5VTEw7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogU2V0dXAgc29tZSBjb252ZW5pZW5jZSBwb2ludGVycyAqLworCXJ4X3JpbmcgPSAoUlhfUklOR190ICopICYgYWRhcHRlci0+UnhSaW5nOworCisJLyogU2V0dXAgZWFjaCBSRkQgKi8KKwlmb3IgKFJmZENvdW50ID0gMDsgUmZkQ291bnQgPCByeF9yaW5nLT5OdW1SZmQ7IFJmZENvdW50KyspIHsKKwkJcE1wUmZkID0gKE1QX1JGRCAqKSBrbWVtX2NhY2hlX2FsbG9jKHJ4X3JpbmctPlJlY3ZMb29rYXNpZGUsCisJCQkJCQkgICAgIEdGUF9BVE9NSUMgfCBHRlBfRE1BKTsKKworCQlpZiAoIXBNcFJmZCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIkNvdWxkbid0IGFsbG9jIFJGRCBvdXQgb2Yga21lbV9jYWNoZVxuIik7CisJCQlzdGF0dXMgPSAtRU5PTUVNOworCQkJY29udGludWU7CisJCX0KKworCQlzdGF0dXMgPSBldDEzMXhfcmZkX3Jlc291cmNlc19hbGxvYyhhZGFwdGVyLCBwTXBSZmQpOworCQlpZiAoc3RhdHVzICE9IDApIHsKKwkJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCQkgICJDb3VsZG4ndCBhbGxvYyBwYWNrZXQgZm9yIFJGRFxuIik7CisJCQlrbWVtX2NhY2hlX2ZyZWUocnhfcmluZy0+UmVjdkxvb2thc2lkZSwgcE1wUmZkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogQWRkIHRoaXMgUkZEIHRvIHRoZSBSZWN2TGlzdCAqLworCQlsaXN0X2FkZF90YWlsKCZwTXBSZmQtPmxpc3Rfbm9kZSwgJnJ4X3JpbmctPlJlY3ZMaXN0KTsKKworCQkvKiBJbmNyZW1lbnQgYm90aCB0aGUgYXZhaWxhYmxlIFJGRCdzLCBhbmQgdGhlIHRvdGFsIFJGRCdzLiAqLworCQlyeF9yaW5nLT5uUmVhZHlSZWN2Kys7CisJCVRvdGFsTnVtUmZkKys7CisJfQorCisJaWYgKFRvdGFsTnVtUmZkID4gTklDX01JTl9OVU1fUkZEKSB7CisJCXN0YXR1cyA9IDA7CisJfQorCisJcnhfcmluZy0+TnVtUmZkID0gVG90YWxOdW1SZmQ7CisKKwlpZiAoc3RhdHVzICE9IDApIHsKKwkJa21lbV9jYWNoZV9mcmVlKHJ4X3JpbmctPlJlY3ZMb29rYXNpZGUsIHBNcFJmZCk7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIkFsbG9jYXRpb24gcHJvYmxlbXMgaW4gZXQxMzF4X2luaXRfcmVjdlxuIik7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9yZmRfcmVzb3VyY2VzX2FsbG9jCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICogQHBNcFJmZDogcG9pbnRlciB0byBhIFJGRAorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfcmZkX3Jlc291cmNlc19hbGxvYyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIsIE1QX1JGRCAqcE1wUmZkKQoreworCXBNcFJmZC0+UGFja2V0ID0gTlVMTDsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIGV0MTMxeF9yZmRfcmVzb3VyY2VzX2ZyZWUgLSBGcmVlIHRoZSBwYWNrZXQgYWxsb2NhdGVkIGZvciB0aGUgZ2l2ZW4gUkZECisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICogQHBNcFJmZDogcG9pbnRlciB0byBhIFJGRAorICovCit2b2lkIGV0MTMxeF9yZmRfcmVzb3VyY2VzX2ZyZWUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLCBNUF9SRkQgKnBNcFJmZCkKK3sKKwlwTXBSZmQtPlBhY2tldCA9IE5VTEw7CisJa21lbV9jYWNoZV9mcmVlKGFkYXB0ZXItPlJ4UmluZy5SZWN2TG9va2FzaWRlLCBwTXBSZmQpOworfQorCisvKioKKyAqIENvbmZpZ1J4RG1hUmVncyAtIFN0YXJ0IG9mIFJ4X0RNQSBpbml0IHNlcXVlbmNlCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgQ29uZmlnUnhEbWFSZWdzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJc3RydWN0IF9SWERNQV90IF9faW9tZW0gKnBSeERtYSA9ICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+cnhkbWE7CisJc3RydWN0IF9yeF9yaW5nX3QgKnBSeExvY2FsID0gJnBBZGFwdGVyLT5SeFJpbmc7CisJUEZCUl9ERVNDX3QgcEZickVudHJ5OworCXVpbnQzMl90IGlFbnRyeTsKKwlSWERNQV9QU1JfTlVNX0RFU190IHBzcl9udW1fZGVzOworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIEhhbHQgUlhETUEgdG8gcGVyZm9ybSB0aGUgcmVjb25maWd1cmUuICAqLworCWV0MTMxeF9yeF9kbWFfZGlzYWJsZShwQWRhcHRlcik7CisKKwkvKiBMb2FkIHRoZSBjb21wbGV0aW9uIHdyaXRlYmFjayBwaHlzaWNhbCBhZGRyZXNzCisJICoKKwkgKiBOT1RFIDogcGNpX2FsbG9jX2NvbnNpc3RlbnQoKSwgdXNlZCBhYm92ZSB0byBhbGxvYyBETUEgcmVnaW9ucywKKwkgKiBBTFdBWVMgcmV0dXJucyBTQUMgKDMyLWJpdCkgYWRkcmVzc2VzLiBJZiBEQUMgKDY0LWJpdCkgYWRkcmVzc2VzCisJICogYXJlIGV2ZXIgcmV0dXJuZWQsIG1ha2Ugc3VyZSB0aGUgaGlnaCBwYXJ0IGlzIHJldHJpZXZlZCBoZXJlCisJICogYmVmb3JlIHN0b3JpbmcgdGhlIGFkanVzdGVkIGFkZHJlc3MuCisJICovCisJd3JpdGVsKCh1aW50MzJfdCkgKHBSeExvY2FsLT5SeFN0YXR1c1JlYWxQQSA+PiAzMiksCisJICAgICAgICZwUnhEbWEtPmRtYV93Yl9iYXNlX2hpKTsKKwl3cml0ZWwoKHVpbnQzMl90KSBwUnhMb2NhbC0+UnhTdGF0dXNSZWFsUEEsICZwUnhEbWEtPmRtYV93Yl9iYXNlX2xvKTsKKworCW1lbXNldChwUnhMb2NhbC0+cFJ4U3RhdHVzVmEsIDAsIHNpemVvZihSWF9TVEFUVVNfQkxPQ0tfdCkpOworCisJLyogU2V0IHRoZSBhZGRyZXNzIGFuZCBwYXJhbWV0ZXJzIG9mIHRoZSBwYWNrZXQgc3RhdHVzIHJpbmcgaW50byB0aGUKKwkgKiAxMzEwJ3MgcmVnaXN0ZXJzCisJICovCisJd3JpdGVsKCh1aW50MzJfdCkgKHBSeExvY2FsLT5wUFNSaW5nUmVhbFBhID4+IDMyKSwKKwkgICAgICAgJnBSeERtYS0+cHNyX2Jhc2VfaGkpOworCXdyaXRlbCgodWludDMyX3QpIHBSeExvY2FsLT5wUFNSaW5nUmVhbFBhLCAmcFJ4RG1hLT5wc3JfYmFzZV9sbyk7CisJd3JpdGVsKHBSeExvY2FsLT5Qc3JOdW1FbnRyaWVzIC0gMSwgJnBSeERtYS0+cHNyX251bV9kZXMudmFsdWUpOworCXdyaXRlbCgwLCAmcFJ4RG1hLT5wc3JfZnVsbF9vZmZzZXQudmFsdWUpOworCisJcHNyX251bV9kZXMudmFsdWUgPSByZWFkbCgmcFJ4RG1hLT5wc3JfbnVtX2Rlcy52YWx1ZSk7CisJd3JpdGVsKChwc3JfbnVtX2Rlcy5iaXRzLnBzcl9uZGVzICogTE9fTUFSS19QRVJDRU5UX0ZPUl9QU1IpIC8gMTAwLAorCSAgICAgICAmcFJ4RG1hLT5wc3JfbWluX2Rlcy52YWx1ZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlJjdkxvY2ssIGxvY2tmbGFncyk7CisKKwkvKiBUaGVzZSBsb2NhbCB2YXJpYWJsZXMgdHJhY2sgdGhlIFBTUiBpbiB0aGUgYWRhcHRlciBzdHJ1Y3R1cmUgKi8KKwlwUnhMb2NhbC0+bG9jYWxfcHNyX2Z1bGwuYml0cy5wc3JfZnVsbCA9IDA7CisJcFJ4TG9jYWwtPmxvY2FsX3Bzcl9mdWxsLmJpdHMucHNyX2Z1bGxfd3JhcCA9IDA7CisKKwkvKiBOb3cncyB0aGUgYmVzdCB0aW1lIHRvIGluaXRpYWxpemUgRkJSMSBjb250ZW50cyAqLworCXBGYnJFbnRyeSA9IChQRkJSX0RFU0NfdCkgcFJ4TG9jYWwtPnBGYnIxUmluZ1ZhOworCWZvciAoaUVudHJ5ID0gMDsgaUVudHJ5IDwgcFJ4TG9jYWwtPkZicjFOdW1FbnRyaWVzOyBpRW50cnkrKykgeworCQlwRmJyRW50cnktPmFkZHJfaGkgPSBwUnhMb2NhbC0+RmJyWzFdLT5QQUhpZ2hbaUVudHJ5XTsKKwkJcEZickVudHJ5LT5hZGRyX2xvID0gcFJ4TG9jYWwtPkZiclsxXS0+UEFMb3dbaUVudHJ5XTsKKwkJcEZickVudHJ5LT53b3JkMi5iaXRzLmJpID0gaUVudHJ5OworCQlwRmJyRW50cnkrKzsKKwl9CisKKwkvKiBTZXQgdGhlIGFkZHJlc3MgYW5kIHBhcmFtZXRlcnMgb2YgRnJlZSBidWZmZXIgcmluZyAxIChhbmQgMCBpZgorCSAqIHJlcXVpcmVkKSBpbnRvIHRoZSAxMzEwJ3MgcmVnaXN0ZXJzCisJICovCisJd3JpdGVsKCh1aW50MzJfdCkgKHBSeExvY2FsLT5GYnIxUmVhbHBhID4+IDMyKSwgJnBSeERtYS0+ZmJyMV9iYXNlX2hpKTsKKwl3cml0ZWwoKHVpbnQzMl90KSBwUnhMb2NhbC0+RmJyMVJlYWxwYSwgJnBSeERtYS0+ZmJyMV9iYXNlX2xvKTsKKwl3cml0ZWwocFJ4TG9jYWwtPkZicjFOdW1FbnRyaWVzIC0gMSwgJnBSeERtYS0+ZmJyMV9udW1fZGVzLnZhbHVlKTsKKworCXsKKwkJRE1BMTBXX3QgZmJyMV9mdWxsID0geyAwIH07CisKKwkJZmJyMV9mdWxsLmJpdHMudmFsID0gMDsKKwkJZmJyMV9mdWxsLmJpdHMud3JhcCA9IDE7CisJCXdyaXRlbChmYnIxX2Z1bGwudmFsdWUsICZwUnhEbWEtPmZicjFfZnVsbF9vZmZzZXQudmFsdWUpOworCX0KKworCS8qIFRoaXMgdmFyaWFibGUgdHJhY2tzIHRoZSBmcmVlIGJ1ZmZlciByaW5nIDEgZnVsbCBwb3NpdGlvbiwgc28gaXQKKwkgKiBoYXMgdG8gbWF0Y2ggdGhlIGFib3ZlLgorCSAqLworCXBSeExvY2FsLT5sb2NhbF9GYnIxX2Z1bGwuYml0cy52YWwgPSAwOworCXBSeExvY2FsLT5sb2NhbF9GYnIxX2Z1bGwuYml0cy53cmFwID0gMTsKKwl3cml0ZWwoKChwUnhMb2NhbC0+RmJyMU51bUVudHJpZXMgKiBMT19NQVJLX1BFUkNFTlRfRk9SX1JYKSAvIDEwMCkgLSAxLAorCSAgICAgICAmcFJ4RG1hLT5mYnIxX21pbl9kZXMudmFsdWUpOworCisjaWZkZWYgVVNFX0ZCUjAKKwkvKiBOb3cncyB0aGUgYmVzdCB0aW1lIHRvIGluaXRpYWxpemUgRkJSMCBjb250ZW50cyAqLworCXBGYnJFbnRyeSA9IChQRkJSX0RFU0NfdCkgcFJ4TG9jYWwtPnBGYnIwUmluZ1ZhOworCWZvciAoaUVudHJ5ID0gMDsgaUVudHJ5IDwgcFJ4TG9jYWwtPkZicjBOdW1FbnRyaWVzOyBpRW50cnkrKykgeworCQlwRmJyRW50cnktPmFkZHJfaGkgPSBwUnhMb2NhbC0+RmJyWzBdLT5QQUhpZ2hbaUVudHJ5XTsKKwkJcEZickVudHJ5LT5hZGRyX2xvID0gcFJ4TG9jYWwtPkZiclswXS0+UEFMb3dbaUVudHJ5XTsKKwkJcEZickVudHJ5LT53b3JkMi5iaXRzLmJpID0gaUVudHJ5OworCQlwRmJyRW50cnkrKzsKKwl9CisKKwl3cml0ZWwoKHVpbnQzMl90KSAocFJ4TG9jYWwtPkZicjBSZWFscGEgPj4gMzIpLCAmcFJ4RG1hLT5mYnIwX2Jhc2VfaGkpOworCXdyaXRlbCgodWludDMyX3QpIHBSeExvY2FsLT5GYnIwUmVhbHBhLCAmcFJ4RG1hLT5mYnIwX2Jhc2VfbG8pOworCXdyaXRlbChwUnhMb2NhbC0+RmJyME51bUVudHJpZXMgLSAxLCAmcFJ4RG1hLT5mYnIwX251bV9kZXMudmFsdWUpOworCisJeworCQlETUExMFdfdCBmYnIwX2Z1bGwgPSB7IDAgfTsKKworCQlmYnIwX2Z1bGwuYml0cy52YWwgPSAwOworCQlmYnIwX2Z1bGwuYml0cy53cmFwID0gMTsKKwkJd3JpdGVsKGZicjBfZnVsbC52YWx1ZSwgJnBSeERtYS0+ZmJyMF9mdWxsX29mZnNldC52YWx1ZSk7CisJfQorCisJLyogVGhpcyB2YXJpYWJsZSB0cmFja3MgdGhlIGZyZWUgYnVmZmVyIHJpbmcgMCBmdWxsIHBvc2l0aW9uLCBzbyBpdAorCSAqIGhhcyB0byBtYXRjaCB0aGUgYWJvdmUuCisJICovCisJcFJ4TG9jYWwtPmxvY2FsX0ZicjBfZnVsbC5iaXRzLnZhbCA9IDA7CisJcFJ4TG9jYWwtPmxvY2FsX0ZicjBfZnVsbC5iaXRzLndyYXAgPSAxOworCXdyaXRlbCgoKHBSeExvY2FsLT5GYnIwTnVtRW50cmllcyAqIExPX01BUktfUEVSQ0VOVF9GT1JfUlgpIC8gMTAwKSAtIDEsCisJICAgICAgICZwUnhEbWEtPmZicjBfbWluX2Rlcy52YWx1ZSk7CisjZW5kaWYKKworCS8qIFByb2dyYW0gdGhlIG51bWJlciBvZiBwYWNrZXRzIHdlIHdpbGwgcmVjZWl2ZSBiZWZvcmUgZ2VuZXJhdGluZyBhbgorCSAqIGludGVycnVwdC4KKwkgKiBGb3IgdmVyc2lvbiBCIHNpbGljb24sIHRoaXMgdmFsdWUgZ2V0cyB1cGRhdGVkIG9uY2UgYXV0b25lZyBpcworCSAqY29tcGxldGUuCisJICovCisJd3JpdGVsKHBBZGFwdGVyLT5SZWdpc3RyeVJ4TnVtQnVmZmVycywgJnBSeERtYS0+bnVtX3BrdF9kb25lLnZhbHVlKTsKKworCS8qIFRoZSAidGltZV9kb25lIiBpcyBub3Qgd29ya2luZyBjb3JyZWN0bHkgdG8gY29hbGVzY2UgaW50ZXJydXB0cworCSAqIGFmdGVyIGEgZ2l2ZW4gdGltZSBwZXJpb2QsIGJ1dCByYXRoZXIgaXMgZ2l2aW5nIHVzIGFuIGludGVycnVwdAorCSAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSBoYXZlIHJlY2VpdmVkIHBhY2tldHMuCisJICogVGhpcyB2YWx1ZSBnZXRzIHVwZGF0ZWQgb25jZSBhdXRvbmVnIGlzIGNvbXBsZXRlLgorCSAqLworCXdyaXRlbChwQWRhcHRlci0+UmVnaXN0cnlSeFRpbWVJbnRlcnZhbCwgJnBSeERtYS0+bWF4X3BrdF90aW1lLnZhbHVlKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5SY3ZMb2NrLCBsb2NrZmxhZ3MpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBTZXRSeERtYVRpbWVyIC0gU2V0IHRoZSBoZWFydGJlYXQgdGltZXIgYWNjb3JkaW5nIHRvIGxpbmUgcmF0ZS4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBTZXRSeERtYVRpbWVyKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJLyogRm9yIHZlcnNpb24gQiBzaWxpY29uLCB3ZSBkbyBub3QgdXNlIHRoZSBSeERNQSB0aW1lciBmb3IgMTAgYW5kIDEwMAorCSAqIE1iaXRzL3MgbGluZSByYXRlcy4gV2UgZG8gbm90IGVuYWJsZSBhbmQgUnhETUEgaW50ZXJydXB0IGNvYWxlc2NpbmcuCisJICovCisJaWYgKChwQWRhcHRlci0+dWlMaW5rU3BlZWQgPT0gVFJVRVBIWV9TUEVFRF8xMDBNQlBTKSB8fAorCSAgICAocEFkYXB0ZXItPnVpTGlua1NwZWVkID09IFRSVUVQSFlfU1BFRURfMTBNQlBTKSkgeworCQl3cml0ZWwoMCwgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeGRtYS5tYXhfcGt0X3RpbWUudmFsdWUpOworCQl3cml0ZWwoMSwgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeGRtYS5udW1fcGt0X2RvbmUudmFsdWUpOworCX0KK30KKworLyoqCisgKiBldDEzMXhfcnhfZG1hX2Rpc2FibGUgLSBTdG9wIG9mIFJ4X0RNQSBvbiB0aGUgRVQxMzEwCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgZXQxMzF4X3J4X2RtYV9kaXNhYmxlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJUlhETUFfQ1NSX3QgY3NyOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFNldHVwIHRoZSByZWNlaXZlIGRtYSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCisJd3JpdGVsKDB4MDAwMDIwMDEsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+cnhkbWEuY3NyLnZhbHVlKTsKKwljc3IudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4ZG1hLmNzci52YWx1ZSk7CisJaWYgKGNzci5iaXRzLmhhbHRfc3RhdHVzICE9IDEpIHsKKwkJdWRlbGF5KDUpOworCQljc3IudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4ZG1hLmNzci52YWx1ZSk7CisJCWlmIChjc3IuYml0cy5oYWx0X3N0YXR1cyAhPSAxKSB7CisJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAiUlggRG1hIGZhaWxlZCB0byBlbnRlciBoYWx0IHN0YXRlLiBDU1IgMHglMDh4XG4iLAorCQkJCSAgY3NyLnZhbHVlKTsKKwkJfQorCX0KKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogZXQxMzF4X3J4X2RtYV9lbmFibGUgLSByZS1zdGFydCBvZiBSeF9ETUEgb24gdGhlIEVUMTMxMC4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBldDEzMXhfcnhfZG1hX2VuYWJsZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCURCR19SWF9FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlpZiAocEFkYXB0ZXItPlJlZ2lzdHJ5UGh5TG9vcGJrKSB7CisJLyogUnhETUEgaXMgZGlzYWJsZWQgZm9yIGxvb3BiYWNrIG9wZXJhdGlvbi4gKi8KKwkJd3JpdGVsKDB4MSwgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeGRtYS5jc3IudmFsdWUpOworCX0gZWxzZSB7CisJLyogU2V0dXAgdGhlIHJlY2VpdmUgZG1hIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgZm9yIG5vcm1hbCBvcGVyYXRpb24gKi8KKwkJUlhETUFfQ1NSX3QgY3NyID0geyAwIH07CisKKwkJY3NyLmJpdHMuZmJyMV9lbmFibGUgPSAxOworCQlpZiAocEFkYXB0ZXItPlJ4UmluZy5GYnIxQnVmZmVyU2l6ZSA9PSA0MDk2KSB7CisJCQljc3IuYml0cy5mYnIxX3NpemUgPSAxOworCQl9IGVsc2UgaWYgKHBBZGFwdGVyLT5SeFJpbmcuRmJyMUJ1ZmZlclNpemUgPT0gODE5MikgeworCQkJY3NyLmJpdHMuZmJyMV9zaXplID0gMjsKKwkJfSBlbHNlIGlmIChwQWRhcHRlci0+UnhSaW5nLkZicjFCdWZmZXJTaXplID09IDE2Mzg0KSB7CisJCQljc3IuYml0cy5mYnIxX3NpemUgPSAzOworCQl9CisjaWZkZWYgVVNFX0ZCUjAKKwkJY3NyLmJpdHMuZmJyMF9lbmFibGUgPSAxOworCQlpZiAocEFkYXB0ZXItPlJ4UmluZy5GYnIwQnVmZmVyU2l6ZSA9PSAyNTYpIHsKKwkJCWNzci5iaXRzLmZicjBfc2l6ZSA9IDE7CisJCX0gZWxzZSBpZiAocEFkYXB0ZXItPlJ4UmluZy5GYnIwQnVmZmVyU2l6ZSA9PSA1MTIpIHsKKwkJCWNzci5iaXRzLmZicjBfc2l6ZSA9IDI7CisJCX0gZWxzZSBpZiAocEFkYXB0ZXItPlJ4UmluZy5GYnIwQnVmZmVyU2l6ZSA9PSAxMDI0KSB7CisJCQljc3IuYml0cy5mYnIwX3NpemUgPSAzOworCQl9CisjZW5kaWYKKwkJd3JpdGVsKGNzci52YWx1ZSwgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeGRtYS5jc3IudmFsdWUpOworCisJCWNzci52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+cnhkbWEuY3NyLnZhbHVlKTsKKwkJaWYgKGNzci5iaXRzLmhhbHRfc3RhdHVzICE9IDApIHsKKwkJCXVkZWxheSg1KTsKKwkJCWNzci52YWx1ZSA9IHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+cnhkbWEuY3NyLnZhbHVlKTsKKwkJCWlmIChjc3IuYml0cy5oYWx0X3N0YXR1cyAhPSAwKSB7CisJCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkgICJSWCBEbWEgZmFpbGVkIHRvIGV4aXQgaGFsdCBzdGF0ZS4gIENTUiAweCUwOHhcbiIsCisJCQkJCSAgY3NyLnZhbHVlKTsKKwkJCX0KKwkJfQorCX0KKworCURCR19SWF9MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogbmljX3J4X3BrdHMgLSBDaGVja3MgdGhlIGhhcmR3YXJlIGZvciBhdmFpbGFibGUgcGFja2V0cworICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBhZGFwdGVyCisgKgorICogUmV0dXJucyBwTXBSZmQsIGEgcG9pbnRlciB0byBvdXIgTVBSRkQuCisgKgorICogQ2hlY2tzIHRoZSBoYXJkd2FyZSBmb3IgYXZhaWxhYmxlIHBhY2tldHMsIHVzaW5nIGNvbXBsZXRpb24gcmluZworICogSWYgcGFja2V0cyBhcmUgYXZhaWxhYmxlLCBpdCBnZXRzIGFuIFJGRCBmcm9tIHRoZSBSZWN2TGlzdCwgYXR0YWNoZXMKKyAqIHRoZSBwYWNrZXQgdG8gaXQsIHB1dHMgdGhlIFJGRCBpbiB0aGUgUmVjdlBlbmRMaXN0LCBhbmQgYWxzbyByZXR1cm5zCisgKiB0aGUgcG9pbnRlciB0byB0aGUgUkZELgorICovCitQTVBfUkZEIG5pY19yeF9wa3RzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJc3RydWN0IF9yeF9yaW5nX3QgKnBSeExvY2FsID0gJnBBZGFwdGVyLT5SeFJpbmc7CisJUFJYX1NUQVRVU19CTE9DS190IHBSeFN0YXR1c0Jsb2NrOworCVBQS1RfU1RBVF9ERVNDX3QgcFBTUkVudHJ5OworCVBNUF9SRkQgcE1wUmZkOworCXVpbnQzMl90IG5JbmRleDsKKwl1aW50OF90ICpwQnVmVmE7CisJdW5zaWduZWQgbG9uZyBsb2NrZmxhZ3M7CisJc3RydWN0IGxpc3RfaGVhZCAqZWxlbWVudDsKKwl1aW50OF90IHJpbmdJbmRleDsKKwl1aW50MTZfdCBidWZmZXJJbmRleDsKKwl1aW50MzJfdCBsb2NhbExlbjsKKwlQS1RfU1RBVF9ERVNDX1dPUkQwX3QgV29yZDA7CisKKworCURCR19SWF9FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBSWCBTdGF0dXMgYmxvY2sgaXMgd3JpdHRlbiBieSB0aGUgRE1BIGVuZ2luZSBwcmlvciB0byBldmVyeQorCSAqIGludGVycnVwdC4gSXQgY29udGFpbnMgdGhlIG5leHQgdG8gYmUgdXNlZCBlbnRyeSBpbiB0aGUgUGFja2V0CisJICogU3RhdHVzIFJpbmcsIGFuZCBhbHNvIHRoZSB0d28gRnJlZSBCdWZmZXIgcmluZ3MuCisJICovCisJcFJ4U3RhdHVzQmxvY2sgPSAoUFJYX1NUQVRVU19CTE9DS190KSBwUnhMb2NhbC0+cFJ4U3RhdHVzVmE7CisKKwlpZiAocFJ4U3RhdHVzQmxvY2stPldvcmQxLmJpdHMuUFNSb2Zmc2V0ID09CisJCQlwUnhMb2NhbC0+bG9jYWxfcHNyX2Z1bGwuYml0cy5wc3JfZnVsbCAmJgorCSAgICBwUnhTdGF0dXNCbG9jay0+V29yZDEuYml0cy5QU1J3cmFwID09CisJICAgIAkJcFJ4TG9jYWwtPmxvY2FsX3Bzcl9mdWxsLmJpdHMucHNyX2Z1bGxfd3JhcCkgeworCQkvKiBMb29rcyBsaWtlIHRoaXMgcmluZyBpcyBub3QgdXBkYXRlZCB5ZXQgKi8KKwkJREJHX1JYKGV0MTMxeF9kYmdpbmZvLCAiKDApXG4iKTsKKwkJREJHX1JYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogVGhlIHBhY2tldCBzdGF0dXMgcmluZyBpbmRpY2F0ZXMgdGhhdCBkYXRhIGlzIGF2YWlsYWJsZS4gKi8KKwlwUFNSRW50cnkgPSAoUFBLVF9TVEFUX0RFU0NfdCkgKHBSeExvY2FsLT5wUFNSaW5nVmEpICsKKwkJCXBSeExvY2FsLT5sb2NhbF9wc3JfZnVsbC5iaXRzLnBzcl9mdWxsOworCisJLyogR3JhYiBhbnkgaW5mb3JtYXRpb24gdGhhdCBpcyByZXF1aXJlZCBvbmNlIHRoZSBQU1IgaXMKKwkgKiBhZHZhbmNlZCwgc2luY2Ugd2UgY2FuIG5vIGxvbmdlciByZWx5IG9uIHRoZSBtZW1vcnkgYmVpbmcKKwkgKiBhY2N1cmF0ZQorCSAqLworCWxvY2FsTGVuID0gcFBTUkVudHJ5LT53b3JkMS5iaXRzLmxlbmd0aDsKKwlyaW5nSW5kZXggPSAodWludDhfdCkgcFBTUkVudHJ5LT53b3JkMS5iaXRzLnJpOworCWJ1ZmZlckluZGV4ID0gKHVpbnQxNl90KSBwUFNSRW50cnktPndvcmQxLmJpdHMuYmk7CisJV29yZDAgPSBwUFNSRW50cnktPndvcmQwOworCisJREJHX1JYKGV0MTMxeF9kYmdpbmZvLCAiUlggUEFDS0VUIFNUQVRVU1xuIik7CisJREJHX1JYKGV0MTMxeF9kYmdpbmZvLCAiXHRsZW5ndGggICAgICA6ICVkXG4iLCBsb2NhbExlbik7CisJREJHX1JYKGV0MTMxeF9kYmdpbmZvLCAiXHRyaW5nSW5kZXggICA6ICVkXG4iLCByaW5nSW5kZXgpOworCURCR19SWChldDEzMXhfZGJnaW5mbywgIlx0YnVmZmVySW5kZXggOiAlZFxuIiwgYnVmZmVySW5kZXgpOworCURCR19SWChldDEzMXhfZGJnaW5mbywgIlx0d29yZDAgICAgICAgOiAweCUwOHhcbiIsIFdvcmQwLnZhbHVlKTsKKworI2lmIDAKKwkvKiBDaGVjayB0aGUgU3RhdHVzIFdvcmQgdGhhdCB0aGUgTUFDIGhhcyBhcHBlbmRlZCB0byB0aGUgUFNSCisJICogZW50cnkgaW4gY2FzZSB0aGUgTUFDIGhhcyBkZXRlY3RlZCBlcnJvcnMuCisJICovCisJaWYgKFdvcmQwLnZhbHVlICYgQUxDQVRFTF9CQURfU1RBVFVTKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIk5JQ1J4UGt0cyA+PiBBbGNhdGVsIFN0YXR1cyBXb3JkIGVycm9yLiIKKwkJCSAgIlZhbHVlIDB4JTA4eFxuIiwgcFBTUkVudHJ5LT53b3JkMC52YWx1ZSk7CisJfQorI2VuZGlmCisKKwkvKiBJbmRpY2F0ZSB0aGF0IHdlIGhhdmUgdXNlZCB0aGlzIFBTUiBlbnRyeS4gKi8KKwlpZiAoKytwUnhMb2NhbC0+bG9jYWxfcHNyX2Z1bGwuYml0cy5wc3JfZnVsbCA+CisJICAgIHBSeExvY2FsLT5Qc3JOdW1FbnRyaWVzIC0gMSkgeworCQlwUnhMb2NhbC0+bG9jYWxfcHNyX2Z1bGwuYml0cy5wc3JfZnVsbCA9IDA7CisJCXBSeExvY2FsLT5sb2NhbF9wc3JfZnVsbC5iaXRzLnBzcl9mdWxsX3dyYXAgXj0gMTsKKwl9CisKKwl3cml0ZWwocFJ4TG9jYWwtPmxvY2FsX3Bzcl9mdWxsLnZhbHVlLAorCSAgICAgICAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4ZG1hLnBzcl9mdWxsX29mZnNldC52YWx1ZSk7CisKKyNpZm5kZWYgVVNFX0ZCUjAKKwlpZiAocmluZ0luZGV4ICE9IDEpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiTklDUnhQa3RzIFBTUiBFbnRyeSAlZCBpbmRpY2F0ZXMgIgorCQkJICAiQnVmZmVyIFJpbmcgMCBpbiB1c2VcbiIsCisJCQkgIHBSeExvY2FsLT5sb2NhbF9wc3JfZnVsbC5iaXRzLnBzcl9mdWxsKTsKKwkJREJHX1JYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorI2VuZGlmCisKKyNpZmRlZiBVU0VfRkJSMAorCWlmIChyaW5nSW5kZXggPiAxIHx8CisJICAgIChyaW5nSW5kZXggPT0gMCAmJgorCSAgICAgYnVmZmVySW5kZXggPiBwUnhMb2NhbC0+RmJyME51bUVudHJpZXMgLSAxKSB8fAorCSAgICAocmluZ0luZGV4ID09IDEgJiYKKwkgICAgIGJ1ZmZlckluZGV4ID4gcFJ4TG9jYWwtPkZicjFOdW1FbnRyaWVzIC0gMSkpCisjZWxzZQorCWlmIChyaW5nSW5kZXggIT0gMSB8fAorCSAgICBidWZmZXJJbmRleCA+IHBSeExvY2FsLT5GYnIxTnVtRW50cmllcyAtIDEpCisjZW5kaWYKKwl7CisJCS8qIElsbGVnYWwgYnVmZmVyIG9yIHJpbmcgaW5kZXggY2Fubm90IGJlIHVzZWQgYnkgUy9XKi8KKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiTklDUnhQa3RzIFBTUiBFbnRyeSAlZCBpbmRpY2F0ZXMgIgorCQkJICAibGVuZ3RoIG9mICVkIGFuZC9vciBiYWQgYmkoJWQpXG4iLAorCQkJICBwUnhMb2NhbC0+bG9jYWxfcHNyX2Z1bGwuYml0cy5wc3JfZnVsbCwKKwkJCSAgbG9jYWxMZW4sIGJ1ZmZlckluZGV4KTsKKwkJREJHX1JYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogR2V0IGFuZCBmaWxsIHRoZSBSRkQuICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBBZGFwdGVyLT5SY3ZMb2NrLCBsb2NrZmxhZ3MpOworCisJcE1wUmZkID0gTlVMTDsKKwllbGVtZW50ID0gcFJ4TG9jYWwtPlJlY3ZMaXN0Lm5leHQ7CisJcE1wUmZkID0gKFBNUF9SRkQpIGxpc3RfZW50cnkoZWxlbWVudCwgTVBfUkZELCBsaXN0X25vZGUpOworCisJaWYgKHBNcFJmZCA9PSBOVUxMKSB7CisJCURCR19SWChldDEzMXhfZGJnaW5mbywKKwkJICAgICAgICJOVUxMIFJGRCByZXR1cm5lZCBmcm9tIFJlY3ZMaXN0IHZpYSBsaXN0X2VudHJ5KClcbiIpOworCQlEQkdfUlhfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+UmN2TG9jaywgbG9ja2ZsYWdzKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGlzdF9kZWwoJnBNcFJmZC0+bGlzdF9ub2RlKTsKKwlwUnhMb2NhbC0+blJlYWR5UmVjdi0tOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlJjdkxvY2ssIGxvY2tmbGFncyk7CisKKwlwTXBSZmQtPmlCdWZmZXJJbmRleCA9IGJ1ZmZlckluZGV4OworCXBNcFJmZC0+aVJpbmdJbmRleCA9IHJpbmdJbmRleDsKKworCS8qIEluIFYxIHNpbGljb24sIHRoZXJlIGlzIGEgYnVnIHdoaWNoIHNjcmV3cyB1cCBmaWx0ZXJpbmcgb2YKKwkgKiBydW50IHBhY2tldHMuICBUaGVyZWZvcmUgcnVudCBwYWNrZXQgZmlsdGVyaW5nIGlzIGRpc2FibGVkCisJICogaW4gdGhlIE1BQyBhbmQgdGhlIHBhY2tldHMgYXJlIGRyb3BwZWQgaGVyZS4gIFRoZXkgYXJlCisJICogYWxzbyBjb3VudGVkIGhlcmUuCisJICovCisJaWYgKGxvY2FsTGVuIDwgKE5JQ19NSU5fUEFDS0VUX1NJWkUgKyA0KSkgeworCQlwQWRhcHRlci0+U3RhdHMub3RoZXJfZXJyb3JzKys7CisJCWxvY2FsTGVuID0gMDsKKwl9CisKKwlpZiAobG9jYWxMZW4pIHsKKwkJaWYgKHBBZGFwdGVyLT5SZXBsaWNhUGh5TG9vcGJrID09IDEpIHsKKwkJCXBCdWZWYSA9IHBSeExvY2FsLT5GYnJbcmluZ0luZGV4XS0+VmFbYnVmZmVySW5kZXhdOworCisJCQlpZiAobWVtY21wKCZwQnVmVmFbNl0sICZwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbMF0sCisJCQkJICAgRVRIX0FMRU4pID09IDApIHsKKwkJCQlpZiAobWVtY21wKCZwQnVmVmFbNDJdLCAiUmVwbGljYSBwYWNrZXQiLAorCQkJCQkgICBFVEhfSExFTikpIHsKKwkJCQkJcEFkYXB0ZXItPlJlcGxpY2FQaHlMb29wYmtQRiA9IDE7CisJCQkJfQorCQkJfQorCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJwQnVmVmE6XHQlMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeFxuIiwKKwkJCQkgICAgcEJ1ZlZhWzZdLCBwQnVmVmFbN10sIHBCdWZWYVs4XSwKKwkJCQkgICAgcEJ1ZlZhWzldLCBwQnVmVmFbMTBdLCBwQnVmVmFbMTFdKTsKKworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJDdXJyZW50QWRkcjpcdCUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4XG4iLAorCQkJCSAgICBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbMF0sCisJCQkJICAgIHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1sxXSwKKwkJCQkgICAgcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzJdLAorCQkJCSAgICBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbM10sCisJCQkJICAgIHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s0XSwKKwkJCQkgICAgcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzVdKTsKKwkJfQorCisJCS8qIERldGVybWluZSBpZiB0aGlzIGlzIGEgbXVsdGljYXN0IHBhY2tldCBjb21pbmcgaW4gKi8KKwkJaWYgKChXb3JkMC52YWx1ZSAmIEFMQ0FURUxfTVVMVElDQVNUX1BLVCkgJiYKKwkJICAgICEoV29yZDAudmFsdWUgJiBBTENBVEVMX0JST0FEQ0FTVF9QS1QpKSB7CisJCQkvKiBQcm9taXNjdW91cyBtb2RlIGFuZCBNdWx0aWNhc3QgbW9kZSBhcmUKKwkJCSAqIG5vdCBtdXR1YWxseSBleGNsdXNpdmUgYXMgd2FzIGZpcnN0CisJCQkgKiB0aG91Z2h0LiAgSSBndWVzcyBQcm9taXNjdW91cyBpcyBqdXN0CisJCQkgKiBjb25zaWRlcmVkIGEgc3VwZXItc2V0IG9mIHRoZSBvdGhlcgorCQkJICogZmlsdGVycy4gR2VuZXJhbGx5IGZpbHRlciBpcyAweDJiIHdoZW4gaW4KKwkJCSAqIHByb21pc2N1b3VzIG1vZGUuCisJCQkgKi8KKwkJCWlmICgocEFkYXB0ZXItPlBhY2tldEZpbHRlciAmIEVUMTMxWF9QQUNLRVRfVFlQRV9NVUxUSUNBU1QpCisJCQkgICAgJiYgIShwQWRhcHRlci0+UGFja2V0RmlsdGVyICYgRVQxMzFYX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTKQorCQkJICAgICYmICEocEFkYXB0ZXItPlBhY2tldEZpbHRlciAmIEVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUKSkgeworCQkJCXBCdWZWYSA9IHBSeExvY2FsLT5GYnJbcmluZ0luZGV4XS0+CisJCQkJCQlWYVtidWZmZXJJbmRleF07CisKKwkJCQkvKiBMb29wIHRocm91Z2ggb3VyIGxpc3QgdG8gc2VlIGlmIHRoZQorCQkJCSAqIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2YgdGhpcyBwYWNrZXQKKwkJCQkgKiBtYXRjaGVzIG9uZSBpbiBvdXIgbGlzdC4KKwkJCQkgKi8KKwkJCQlmb3IgKG5JbmRleCA9IDA7CisJCQkJICAgICBuSW5kZXggPCBwQWRhcHRlci0+TUNBZGRyZXNzQ291bnQ7CisJCQkJICAgICBuSW5kZXgrKykgeworCQkJCQlpZiAocEJ1ZlZhWzBdID09CisJCQkJCSAgICBwQWRhcHRlci0+TUNMaXN0W25JbmRleF1bMF0KKwkJCQkJICAgICYmIHBCdWZWYVsxXSA9PQorCQkJCQkgICAgcEFkYXB0ZXItPk1DTGlzdFtuSW5kZXhdWzFdCisJCQkJCSAgICAmJiBwQnVmVmFbMl0gPT0KKwkJCQkJICAgIHBBZGFwdGVyLT5NQ0xpc3RbbkluZGV4XVsyXQorCQkJCQkgICAgJiYgcEJ1ZlZhWzNdID09CisJCQkJCSAgICBwQWRhcHRlci0+TUNMaXN0W25JbmRleF1bM10KKwkJCQkJICAgICYmIHBCdWZWYVs0XSA9PQorCQkJCQkgICAgcEFkYXB0ZXItPk1DTGlzdFtuSW5kZXhdWzRdCisJCQkJCSAgICAmJiBwQnVmVmFbNV0gPT0KKwkJCQkJICAgIHBBZGFwdGVyLT5NQ0xpc3RbbkluZGV4XVs1XSkgeworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvKiBJZiBvdXIgaW5kZXggaXMgZXF1YWwgdG8gdGhlIG51bWJlcgorCQkJCSAqIG9mIE11bHRpY2FzdCBhZGRyZXNzIHdlIGhhdmUsIHRoZW4KKwkJCQkgKiB0aGlzIG1lYW5zIHdlIGRpZCBub3QgZmluZCB0aGlzCisJCQkJICogcGFja2V0J3MgbWF0Y2hpbmcgYWRkcmVzcyBpbiBvdXIKKwkJCQkgKiBsaXN0LiAgU2V0IHRoZSBQYWNrZXRTaXplIHRvIHplcm8sCisJCQkJICogc28gd2UgZnJlZSBvdXIgUkZEIHdoZW4gd2UgcmV0dXJuCisJCQkJICogZnJvbSB0aGlzIGZ1bmN0aW9uLgorCQkJCSAqLworCQkJCWlmIChuSW5kZXggPT0gcEFkYXB0ZXItPk1DQWRkcmVzc0NvdW50KSB7CisJCQkJCWxvY2FsTGVuID0gMDsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChsb2NhbExlbiA+IDApIHsKKwkJCQlwQWRhcHRlci0+U3RhdHMubXVsdGlyY3YrKzsKKwkJCX0KKwkJfSBlbHNlIGlmIChXb3JkMC52YWx1ZSAmIEFMQ0FURUxfQlJPQURDQVNUX1BLVCkgeworCQkJcEFkYXB0ZXItPlN0YXRzLmJyZGNzdHJjdisrOworCQl9IGVsc2UgeworCQkJLyogTm90IHN1cmUgd2hhdCB0aGlzIGNvdW50ZXIgbWVhc3VyZXMgaW4KKwkJCSAqIHByb21pc2N1b3VzIG1vZGUuIFBlcmhhcHMgd2Ugc2hvdWxkIGNoZWNrCisJCQkgKiB0aGUgTUFDIGFkZHJlc3MgdG8gc2VlIGlmIGl0IGlzIGRpcmVjdGVkCisJCQkgKiB0byB1cyBpbiBwcm9taXNjdW91cyBtb2RlLgorCQkJICovCisJCQlwQWRhcHRlci0+U3RhdHMudW5pcmN2Kys7CisJCX0KKwl9CisKKwlpZiAobG9jYWxMZW4gPiAwKSB7CisJCXN0cnVjdCBza19idWZmICpza2IgPSBOVUxMOworCisJCS8vcE1wUmZkLT5QYWNrZXRTaXplID0gbG9jYWxMZW4gLSA0OworCQlwTXBSZmQtPlBhY2tldFNpemUgPSBsb2NhbExlbjsKKworCQlza2IgPSBkZXZfYWxsb2Nfc2tiKHBNcFJmZC0+UGFja2V0U2l6ZSArIDIpOworCQlpZiAoIXNrYikgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIkNvdWxkbid0IGFsbG9jIGFuIFNLQiBmb3IgUnhcbiIpOworCQkJREJHX1JYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJcEFkYXB0ZXItPm5ldF9zdGF0cy5yeF9ieXRlcyArPSBwTXBSZmQtPlBhY2tldFNpemU7CisKKwkJbWVtY3B5KHNrYl9wdXQoc2tiLCBwTXBSZmQtPlBhY2tldFNpemUpLAorCQkgICAgICAgcFJ4TG9jYWwtPkZicltyaW5nSW5kZXhdLT5WYVtidWZmZXJJbmRleF0sCisJCSAgICAgICBwTXBSZmQtPlBhY2tldFNpemUpOworCisJCXNrYi0+ZGV2ID0gcEFkYXB0ZXItPm5ldGRldjsKKwkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcEFkYXB0ZXItPm5ldGRldik7CisJCXNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTsKKworCQluZXRpZl9yeChza2IpOworCX0gZWxzZSB7CisJCXBNcFJmZC0+UGFja2V0U2l6ZSA9IDA7CisJfQorCisJbmljX3JldHVybl9yZmQocEFkYXB0ZXIsIHBNcFJmZCk7CisKKwlEQkdfUlgoZXQxMzF4X2RiZ2luZm8sICIoMSlcbiIpOworCURCR19SWF9MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIHBNcFJmZDsKK30KKworLyoqCisgKiBldDEzMXhfcmVzZXRfcmVjdiAtIFJlc2V0IHRoZSByZWNlaXZlIGxpc3QKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlcgorICoKKyAqIEFzc3VtcHRpb24sIFJjdiBzcGlubG9jayBoYXMgYmVlbiBhY3F1aXJlZC4KKyAqLwordm9pZCBldDEzMXhfcmVzZXRfcmVjdihzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCVBNUF9SRkQgcE1wUmZkOworCXN0cnVjdCBsaXN0X2hlYWQgKmVsZW1lbnQ7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJREJHX0FTU0VSVCghbGlzdF9lbXB0eSgmcEFkYXB0ZXItPlJ4UmluZy5SZWN2TGlzdCkpOworCisJLyogVGFrZSBhbGwgdGhlIFJGRCdzIGZyb20gdGhlIHBlbmRpbmcgbGlzdCwgYW5kIHN0aWNrIHRoZW0gb24gdGhlCisJICogUmVjdkxpc3QuCisJICovCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZwQWRhcHRlci0+UnhSaW5nLlJlY3ZQZW5kaW5nTGlzdCkpIHsKKwkJZWxlbWVudCA9IHBBZGFwdGVyLT5SeFJpbmcuUmVjdlBlbmRpbmdMaXN0Lm5leHQ7CisKKwkJcE1wUmZkID0gKFBNUF9SRkQpIGxpc3RfZW50cnkoZWxlbWVudCwgTVBfUkZELCBsaXN0X25vZGUpOworCisJCWxpc3RfZGVsKCZwTXBSZmQtPmxpc3Rfbm9kZSk7CisJCWxpc3RfYWRkX3RhaWwoJnBNcFJmZC0+bGlzdF9ub2RlLCAmcEFkYXB0ZXItPlJ4UmluZy5SZWN2TGlzdCk7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfaGFuZGxlX3JlY3ZfaW50ZXJydXB0IC0gSW50ZXJydXB0IGhhbmRsZXIgZm9yIHJlY2VpdmUgcHJvY2Vzc2luZworICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBhZGFwdGVyCisgKgorICogQXNzdW1wdGlvbiwgUmN2IHNwaW5sb2NrIGhhcyBiZWVuIGFjcXVpcmVkLgorICovCit2b2lkIGV0MTMxeF9oYW5kbGVfcmVjdl9pbnRlcnJ1cHQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlQTVBfUkZEIHBNcFJmZCA9IE5VTEw7CisJc3RydWN0IHNrX2J1ZmYgKlBhY2tldEFycmF5W05VTV9QQUNLRVRTX0hBTkRMRURdOworCVBNUF9SRkQgUkZERnJlZUFycmF5W05VTV9QQUNLRVRTX0hBTkRMRURdOworCXVpbnQzMl90IFBhY2tldEFycmF5Q291bnQgPSAwOworCXVpbnQzMl90IFBhY2tldHNUb0hhbmRsZTsKKwl1aW50MzJfdCBQYWNrZXRGcmVlQ291bnQgPSAwOworCWJvb2wgVGVtcFVuZmluaXNoZWRSZWMgPSBmYWxzZTsKKworCURCR19SWF9FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlQYWNrZXRzVG9IYW5kbGUgPSBOVU1fUEFDS0VUU19IQU5ETEVEOworCisJLyogUHJvY2VzcyB1cCB0byBhdmFpbGFibGUgUkZEJ3MgKi8KKwl3aGlsZSAoUGFja2V0QXJyYXlDb3VudCA8IFBhY2tldHNUb0hhbmRsZSkgeworCQlpZiAobGlzdF9lbXB0eSgmcEFkYXB0ZXItPlJ4UmluZy5SZWN2TGlzdCkpIHsKKwkJCURCR19BU1NFUlQocEFkYXB0ZXItPlJ4UmluZy5uUmVhZHlSZWN2ID09IDApOworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAiTk8gUkZEJ3MgISEhISEhISEhISEhIVxuIik7CisJCQlUZW1wVW5maW5pc2hlZFJlYyA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCisJCXBNcFJmZCA9IG5pY19yeF9wa3RzKHBBZGFwdGVyKTsKKworCQlpZiAocE1wUmZkID09IE5VTEwpIHsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogRG8gbm90IHJlY2VpdmUgYW55IHBhY2tldHMgdW50aWwgYSBmaWx0ZXIgaGFzIGJlZW4gc2V0LgorCQkgKiBEbyBub3QgcmVjZWl2ZSBhbnkgcGFja2V0cyB1bnRpbCB3ZSBhcmUgYXQgRDAuCisJCSAqIERvIG5vdCByZWNlaXZlIGFueSBwYWNrZXRzIHVudGlsIHdlIGhhdmUgbGluay4KKwkJICogSWYgbGVuZ3RoIGlzIHplcm8sIHJldHVybiB0aGUgUkZEIGluIG9yZGVyIHRvIGFkdmFuY2UgdGhlCisJCSAqIEZyZWUgYnVmZmVyIHJpbmcuCisJCSAqLworCQlpZiAoKCFwQWRhcHRlci0+UGFja2V0RmlsdGVyKSB8fAorCQkgICAgKHBBZGFwdGVyLT5Qb01nbXQuUG93ZXJTdGF0ZSAhPSBOZGlzRGV2aWNlU3RhdGVEMCkgfHwKKwkJICAgICghTVBfTElOS19ERVRFQ1RFRChwQWRhcHRlcikpIHx8CisJCSAgICAocE1wUmZkLT5QYWNrZXRTaXplID09IDApKSB7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgd2UgcmVjZWl2ZWQgKi8KKwkJcEFkYXB0ZXItPlN0YXRzLmlwYWNrZXRzKys7CisKKwkJLyogU2V0IHRoZSBzdGF0dXMgb24gdGhlIHBhY2tldCwgZWl0aGVyIHJlc291cmNlcyBvciBzdWNjZXNzICovCisJCWlmIChwQWRhcHRlci0+UnhSaW5nLm5SZWFkeVJlY3YgPj0gUkZEX0xPV19XQVRFUl9NQVJLKSB7CisJCQkvKiBQdXQgdGhpcyBSRkQgb24gdGhlIHBlbmRpbmcgbGlzdAorCQkJICoKKwkJCSAqIE5PVEU6IG5pY19yeF9wa3RzKCkgYWJvdmUgaXMgYWxyZWFkeSByZXR1cm5pbmcgdGhlCisJCQkgKiBSRkQgdG8gdGhlIFJlY3ZMaXN0LCBzbyBkb24ndCBhZGRpdGlvbmFsbHkgZG8gdGhhdAorCQkJICogaGVyZS4KKwkJCSAqIEJlc2lkZXMsIHdlIGRvbid0IHJlYWxseSBuZWVkIChhdCB0aGlzIHBvaW50KSB0aGUKKwkJCSAqIHBlbmRpbmcgbGlzdCBhbnl3YXkuCisJCQkgKi8KKwkJCS8vc3Bpbl9sb2NrX2lycXNhdmUoICZwQWRhcHRlci0+UmN2UGVuZExvY2ssIGxvY2tmbGFncyApOworCQkJLy9saXN0X2FkZF90YWlsKCAmcE1wUmZkLT5saXN0X25vZGUsICZwQWRhcHRlci0+UnhSaW5nLlJlY3ZQZW5kaW5nTGlzdCApOworCQkJLy9zcGluX3VubG9ja19pcnFyZXN0b3JlKCAmcEFkYXB0ZXItPlJjdlBlbmRMb2NrLCBsb2NrZmxhZ3MgKTsKKworCQkJLyogVXBkYXRlIHRoZSBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgUmVjdnMgKi8KKwkJCS8vTVBfSU5DX1JDVl9SRUYoIHBBZGFwdGVyICk7CisJCX0gZWxzZSB7CisJCQlSRkRGcmVlQXJyYXlbUGFja2V0RnJlZUNvdW50XSA9IHBNcFJmZDsKKwkJCVBhY2tldEZyZWVDb3VudCsrOworCisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIlJGRCdzIGFyZSBydW5uaW5nIG91dCAhISEhISEhISEhISEhXG4iKTsKKwkJfQorCisJCVBhY2tldEFycmF5W1BhY2tldEFycmF5Q291bnRdID0gcE1wUmZkLT5QYWNrZXQ7CisJCVBhY2tldEFycmF5Q291bnQrKzsKKwl9CisKKwlpZiAoKFBhY2tldEFycmF5Q291bnQgPT0gTlVNX1BBQ0tFVFNfSEFORExFRCkgfHwgVGVtcFVuZmluaXNoZWRSZWMpIHsKKwkJcEFkYXB0ZXItPlJ4UmluZy5VbmZpbmlzaGVkUmVjZWl2ZXMgPSB0cnVlOworCQl3cml0ZWwocEFkYXB0ZXItPlJlZ2lzdHJ5VHhUaW1lSW50ZXJ2YWwgKiBOQU5PX0lOX0FfTUlDUk8sCisJCSAgICAgICAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPmdsb2JhbC53YXRjaGRvZ190aW1lcik7CisJfSBlbHNlIHsKKwkJLyogV2F0Y2hkb2cgdGltZXIgd2lsbCBkaXNhYmxlIGl0c2VsZiBpZiBhcHByb3ByaWF0ZS4gKi8KKwkJcEFkYXB0ZXItPlJ4UmluZy5VbmZpbmlzaGVkUmVjZWl2ZXMgPSBmYWxzZTsKKwl9CisKKwlEQkdfUlhfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIE5JQ1JldHVyblJGRCAtIFJlY3ljbGUgYSBSRkQgYW5kIHB1dCBpdCBiYWNrIG9udG8gdGhlIHJlY2VpdmUgbGlzdAorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBhZGFwdGVyCisgKiBAcE1wUmZkOiBwb2ludGVyIHRvIHRoZSBSRkQKKyAqLwordm9pZCBuaWNfcmV0dXJuX3JmZChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLCBQTVBfUkZEIHBNcFJmZCkKK3sKKwlzdHJ1Y3QgX3J4X3JpbmdfdCAqcFJ4TG9jYWwgPSAmcEFkYXB0ZXItPlJ4UmluZzsKKwlzdHJ1Y3QgX1JYRE1BX3QgX19pb21lbSAqcFJ4RG1hID0gJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5yeGRtYTsKKwl1aW50MTZfdCBiaSA9IHBNcFJmZC0+aUJ1ZmZlckluZGV4OworCXVpbnQ4X3QgcmkgPSBwTXBSZmQtPmlSaW5nSW5kZXg7CisJdW5zaWduZWQgbG9uZyBsb2NrZmxhZ3M7CisKKwlEQkdfUlhfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogV2UgZG9uJ3QgdXNlIGFueSBvZiB0aGUgT09CIGRhdGEgYmVzaWRlcyBzdGF0dXMuIE90aGVyd2lzZSwgd2UKKwkgKiBuZWVkIHRvIGNsZWFuIHVwIE9PQiBkYXRhCisJICovCisJaWYgKAorI2lmZGVmIFVTRV9GQlIwCisJICAgIChyaSA9PSAwICYmIGJpIDwgcFJ4TG9jYWwtPkZicjBOdW1FbnRyaWVzKSB8fAorI2VuZGlmCisJICAgIChyaSA9PSAxICYmIGJpIDwgcFJ4TG9jYWwtPkZicjFOdW1FbnRyaWVzKSkgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPkZickxvY2ssIGxvY2tmbGFncyk7CisKKwkJaWYgKHJpID09IDEpIHsKKwkJCVBGQlJfREVTQ190IHBOZXh0RGVzYyA9CisJCQkgICAgKFBGQlJfREVTQ190KSAocFJ4TG9jYWwtPnBGYnIxUmluZ1ZhKSArCisJCQkgICAgcFJ4TG9jYWwtPmxvY2FsX0ZicjFfZnVsbC5iaXRzLnZhbDsKKworCQkJLyogSGFuZGxlIHRoZSBGcmVlIEJ1ZmZlciBSaW5nIGFkdmFuY2VtZW50IGhlcmUuIFdyaXRlCisJCQkgKiB0aGUgUEEgLyBCdWZmZXIgSW5kZXggZm9yIHRoZSByZXR1cm5lZCBidWZmZXIgaW50bworCQkJICogdGhlIG9sZGVzdCAobmV4dCB0byBiZSBmcmVlZClGQlIgZW50cnkKKwkJCSAqLworCQkJcE5leHREZXNjLT5hZGRyX2hpID0gcFJ4TG9jYWwtPkZiclsxXS0+UEFIaWdoW2JpXTsKKwkJCXBOZXh0RGVzYy0+YWRkcl9sbyA9IHBSeExvY2FsLT5GYnJbMV0tPlBBTG93W2JpXTsKKwkJCXBOZXh0RGVzYy0+d29yZDIudmFsdWUgPSBiaTsKKworCQkJaWYgKCsrcFJ4TG9jYWwtPmxvY2FsX0ZicjFfZnVsbC5iaXRzLnZhbCA+CisJCQkgICAgKHBSeExvY2FsLT5GYnIxTnVtRW50cmllcyAtIDEpKSB7CisJCQkJcFJ4TG9jYWwtPmxvY2FsX0ZicjFfZnVsbC5iaXRzLnZhbCA9IDA7CisJCQkJcFJ4TG9jYWwtPmxvY2FsX0ZicjFfZnVsbC5iaXRzLndyYXAgXj0gMTsKKwkJCX0KKworCQkJd3JpdGVsKHBSeExvY2FsLT5sb2NhbF9GYnIxX2Z1bGwudmFsdWUsCisJCQkgICAgICAgJnBSeERtYS0+ZmJyMV9mdWxsX29mZnNldC52YWx1ZSk7CisJCX0KKyNpZmRlZiBVU0VfRkJSMAorCQllbHNlIHsKKwkJCVBGQlJfREVTQ190IHBOZXh0RGVzYyA9CisJCQkgICAgKFBGQlJfREVTQ190KSBwUnhMb2NhbC0+cEZicjBSaW5nVmEgKworCQkJICAgIHBSeExvY2FsLT5sb2NhbF9GYnIwX2Z1bGwuYml0cy52YWw7CisKKwkJCS8qIEhhbmRsZSB0aGUgRnJlZSBCdWZmZXIgUmluZyBhZHZhbmNlbWVudCBoZXJlLiBXcml0ZQorCQkJICogdGhlIFBBIC8gQnVmZmVyIEluZGV4IGZvciB0aGUgcmV0dXJuZWQgYnVmZmVyIGludG8KKwkJCSAqIHRoZSBvbGRlc3QgKG5leHQgdG8gYmUgZnJlZWQpIEZCUiBlbnRyeQorCQkJICovCisJCQlwTmV4dERlc2MtPmFkZHJfaGkgPSBwUnhMb2NhbC0+RmJyWzBdLT5QQUhpZ2hbYmldOworCQkJcE5leHREZXNjLT5hZGRyX2xvID0gcFJ4TG9jYWwtPkZiclswXS0+UEFMb3dbYmldOworCQkJcE5leHREZXNjLT53b3JkMi52YWx1ZSA9IGJpOworCisJCQlpZiAoKytwUnhMb2NhbC0+bG9jYWxfRmJyMF9mdWxsLmJpdHMudmFsID4KKwkJCSAgICAocFJ4TG9jYWwtPkZicjBOdW1FbnRyaWVzIC0gMSkpIHsKKwkJCQlwUnhMb2NhbC0+bG9jYWxfRmJyMF9mdWxsLmJpdHMudmFsID0gMDsKKwkJCQlwUnhMb2NhbC0+bG9jYWxfRmJyMF9mdWxsLmJpdHMud3JhcCBePSAxOworCQkJfQorCisJCQl3cml0ZWwocFJ4TG9jYWwtPmxvY2FsX0ZicjBfZnVsbC52YWx1ZSwKKwkJCSAgICAgICAmcFJ4RG1hLT5mYnIwX2Z1bGxfb2Zmc2V0LnZhbHVlKTsKKwkJfQorI2VuZGlmCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5GYnJMb2NrLCBsb2NrZmxhZ3MpOworCX0gZWxzZSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIk5JQ1JldHVyblJGRCBpbGxlZ2FsIEJ1ZmZlciBJbmRleCByZXR1cm5lZFxuIik7CisJfQorCisJLyogVGhlIHByb2Nlc3Npbmcgb24gdGhpcyBSRkQgaXMgZG9uZSwgc28gcHV0IGl0IGJhY2sgb24gdGhlIHRhaWwgb2YKKwkgKiBvdXIgbGlzdAorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+UmN2TG9jaywgbG9ja2ZsYWdzKTsKKwlsaXN0X2FkZF90YWlsKCZwTXBSZmQtPmxpc3Rfbm9kZSwgJnBSeExvY2FsLT5SZWN2TGlzdCk7CisJcFJ4TG9jYWwtPm5SZWFkeVJlY3YrKzsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+UmN2TG9jaywgbG9ja2ZsYWdzKTsKKworCURCR19BU1NFUlQocFJ4TG9jYWwtPm5SZWFkeVJlY3YgPD0gcFJ4TG9jYWwtPk51bVJmZCk7CisJREJHX1JYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNjZkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5oCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxMF9yeC5oIC0gRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gcGVydGFpbmluZyB0byBkYXRhCisgKiAgICAgICAgICAgICAgIHJlY2VwdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxMF9SWF9IX18KKyNkZWZpbmUgX19FVDEzMTBfUlhfSF9fCisKKyNpbmNsdWRlICJldDEzMTBfYWRkcmVzc19tYXAuaCIKKworI2RlZmluZSBVU0VfRkJSMCB0cnVlCisKKyNpZmRlZiBVU0VfRkJSMAorLy8jZGVmaW5lIEZCUjBfQlVGRkVSX1NJWkUgMjU2CisjZW5kaWYKKworLy8jZGVmaW5lIEZCUjFfQlVGRkVSX1NJWkUgMjA0OAorCisjZGVmaW5lIEZCUl9DSFVOS1MgMzIKKworI2RlZmluZSBNQVhfREVTQ19QRVJfUklOR19SWCAgICAgICAgIDEwMjQKKworLyogbnVtYmVyIG9mIFJGRHMgLSBkZWZhdWx0IGFuZCBtaW4gKi8KKyNpZmRlZiBVU0VfRkJSMAorI2RlZmluZSBSRkRfTE9XX1dBVEVSX01BUksJNDAKKyNkZWZpbmUgTklDX01JTl9OVU1fUkZECQk2NAorI2RlZmluZSBOSUNfREVGQVVMVF9OVU1fUkZECTEwMjQKKyNlbHNlCisjZGVmaW5lIFJGRF9MT1dfV0FURVJfTUFSSwkyMAorI2RlZmluZSBOSUNfTUlOX05VTV9SRkQJCTY0CisjZGVmaW5lIE5JQ19ERUZBVUxUX05VTV9SRkQJMjU2CisjZW5kaWYKKworI2RlZmluZSBOVU1fUEFDS0VUU19IQU5ETEVECTI1NgorCisjZGVmaW5lIEFMQ0FURUxfQkFEX1NUQVRVUwkweGU0N2YwMDAwCisjZGVmaW5lIEFMQ0FURUxfTVVMVElDQVNUX1BLVAkweDAxMDAwMDAwCisjZGVmaW5lIEFMQ0FURUxfQlJPQURDQVNUX1BLVAkweDAyMDAwMDAwCisKKy8qIHR5cGVkZWZzIGZvciBGcmVlIEJ1ZmZlciBEZXNjcmlwdG9ycyAqLwordHlwZWRlZiB1bmlvbiBfRkJSX1dPUkQyX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHJlc2VydmVkOjIyOwkvLyBiaXRzIDEwLTMxCisJCXUzMiBiaToxMDsJCS8vIGJpdHMgMC05KEJ1ZmZlciBJbmRleCkKKyNlbHNlCisJCXUzMiBiaToxMDsJCS8vIGJpdHMgMC05KEJ1ZmZlciBJbmRleCkKKwkJdTMyIHJlc2VydmVkOjIyOwkvLyBiaXQgMTAtMzEKKyNlbmRpZgorCX0gYml0czsKK30gRkJSX1dPUkQyX3QsICpQRkJSX1dPUkQyX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9GQlJfREVTQ190IHsKKwl1MzIgYWRkcl9sbzsKKwl1MzIgYWRkcl9oaTsKKwlGQlJfV09SRDJfdCB3b3JkMjsKK30gRkJSX0RFU0NfdCwgKlBGQlJfREVTQ190OworCisvKiBUeXBlZGVmcyBmb3IgUGFja2V0IFN0YXR1cyBSaW5nIERlc2NyaXB0b3JzICovCit0eXBlZGVmIHVuaW9uIF9QS1RfU1RBVF9ERVNDX1dPUkQwX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJLy8gdG9wIDE2IGJpdHMgYXJlIGZyb20gdGhlIEFsY2F0ZWwgU3RhdHVzIFdvcmQgYXMgZW51bWVyYXRlZCBpbgorCQkvLyBQRS1NQ1hNQUMgRGF0YSBTaGVldCBJUEQgRFM1NCAwMjEwLTEgKGFsc28gSVBELURTODAgMDIwNS0yKQorI2lmIDAKKwkJdTMyIGFzd190cnVuYzoxOwkJLy8gYml0IDMxKFJ4IGZyYW1lIHRydW5jYXRlZCkKKyNlbmRpZgorCQl1MzIgYXN3X2xvbmdfZXZ0OjE7CS8vIGJpdCAzMShSeCBsb25nIGV2ZW50KQorCQl1MzIgYXN3X1ZMQU5fdGFnOjE7CS8vIGJpdCAzMChWTEFOIHRhZyBkZXRlY3RlZCkKKwkJdTMyIGFzd191bnN1cHBvcnRlZF9vcDoxOwkvLyBiaXQgMjkodW5zdXBwb3J0ZWQgT1AgY29kZSkKKwkJdTMyIGFzd19wYXVzZV9mcmFtZToxOwkvLyBiaXQgMjgoaXMgYSBwYXVzZSBmcmFtZSkKKwkJdTMyIGFzd19jb250cm9sX2ZyYW1lOjE7CS8vIGJpdCAyNyhpcyBhIGNvbnRyb2wgZnJhbWUpCisJCXUzMiBhc3dfZHJpYmJsZV9uaWJibGU6MTsJLy8gYml0IDI2KHNwdXJpb3VzIGJpdHMgYWZ0ZXIgRU9QKQorCQl1MzIgYXN3X2Jyb2FkY2FzdDoxOwkvLyBiaXQgMjUoaGFzIGEgYnJvYWRjYXN0IGFkZHJlc3MpCisJCXUzMiBhc3dfbXVsdGljYXN0OjE7CS8vIGJpdCAyNChoYXMgYSBtdWx0aWNhc3QgYWRkcmVzcykKKwkJdTMyIGFzd19PSzoxOwkJLy8gYml0IDIzKHZhbGlkIENSQyArIG5vIGNvZGUgZXJyb3IpCisJCXUzMiBhc3dfdG9vX2xvbmc6MTsJLy8gYml0IDIyKGZyYW1lIGxlbmd0aCA+IDE1MTggYnl0ZXMpCisJCXUzMiBhc3dfbGVuX2Noa19lcnI6MTsJLy8gYml0IDIxKGZyYW1lIGxlbmd0aCBmaWVsZCBpbmNvcnJlY3QpCisJCXUzMiBhc3dfQ1JDX2VycjoxOwkJLy8gYml0IDIwKENSQyBlcnJvcikKKwkJdTMyIGFzd19jb2RlX2VycjoxOwkvLyBiaXQgMTkob25lIG9yIG1vcmUgbmliYmxlcyBzaWduYWxsZWQgYXMgZXJyb3JzKQorCQl1MzIgYXN3X2ZhbHNlX2NhcnJpZXJfZXZlbnQ6MTsJLy8gYml0IDE4KGJhZCBjYXJyaWVyIHNpbmNlIGxhc3QgZ29vZCBwYWNrZXQpCisJCXUzMiBhc3dfUlhfRFZfZXZlbnQ6MTsJLy8gYml0IDE3KHNob3J0IHJlY2VpdmUgZXZlbnQgZGV0ZWN0ZWQpCisJCXUzMiBhc3dfcHJldl9wa3RfZHJvcHBlZDoxOy8vIGJpdCAxNihlLmcuIElGRyB0b28gc21hbGwgb24gcHJldmlvdXMpCisJCXUzMiB1bnVzZWQ6NTsJCS8vIGJpdHMgMTEtMTUKKwkJdTMyIHZwOjE7CQkJLy8gYml0IDEwKFZMQU4gUGFja2V0KQorCQl1MzIganA6MTsJCQkvLyBiaXQgOShKdW1ibyBQYWNrZXQpCisJCXUzMiBmdDoxOwkJCS8vIGJpdCA4KEZyYW1lIFRydW5jYXRlZCkKKwkJdTMyIGRyb3A6MTsJCS8vIGJpdCA3KERyb3AgcGFja2V0KQorCQl1MzIgcnhtYWNfZXJyb3I6MTsJCS8vIGJpdCA2KFJYTUFDIEVycm9yIEluZGljYXRvcikKKwkJdTMyIHdvbDoxOwkJCS8vIGJpdCA1KFdPTCBFdmVudCkKKwkJdTMyIHRjcHA6MTsJCS8vIGJpdCA0KFRDUCBjaGVja3N1bSBwYXNzKQorCQl1MzIgdGNwYToxOwkJLy8gYml0IDMoVENQIGNoZWNrc3VtIGFzc2lzdCkKKwkJdTMyIGlwcDoxOwkJCS8vIGJpdCAyKElQIGNoZWNrc3VtIHBhc3MpCisJCXUzMiBpcGE6MTsJCQkvLyBiaXQgMShJUCBjaGVja3N1bSBhc3Npc3QpCisJCXUzMiBocDoxOwkJCS8vIGJpdCAwKGhhc2ggcGFzcykKKyNlbHNlCisJCXUzMiBocDoxOwkJCS8vIGJpdCAwKGhhc2ggcGFzcykKKwkJdTMyIGlwYToxOwkJCS8vIGJpdCAxKElQIGNoZWNrc3VtIGFzc2lzdCkKKwkJdTMyIGlwcDoxOwkJCS8vIGJpdCAyKElQIGNoZWNrc3VtIHBhc3MpCisJCXUzMiB0Y3BhOjE7CQkvLyBiaXQgMyhUQ1AgY2hlY2tzdW0gYXNzaXN0KQorCQl1MzIgdGNwcDoxOwkJLy8gYml0IDQoVENQIGNoZWNrc3VtIHBhc3MpCisJCXUzMiB3b2w6MTsJCQkvLyBiaXQgNShXT0wgRXZlbnQpCisJCXUzMiByeG1hY19lcnJvcjoxOwkJLy8gYml0IDYoUlhNQUMgRXJyb3IgSW5kaWNhdG9yKQorCQl1MzIgZHJvcDoxOwkJLy8gYml0IDcoRHJvcCBwYWNrZXQpCisJCXUzMiBmdDoxOwkJCS8vIGJpdCA4KEZyYW1lIFRydW5jYXRlZCkKKwkJdTMyIGpwOjE7CQkJLy8gYml0IDkoSnVtYm8gUGFja2V0KQorCQl1MzIgdnA6MTsJCQkvLyBiaXQgMTAoVkxBTiBQYWNrZXQpCisJCXUzMiB1bnVzZWQ6NTsJCS8vIGJpdHMgMTEtMTUKKwkJdTMyIGFzd19wcmV2X3BrdF9kcm9wcGVkOjE7Ly8gYml0IDE2KGUuZy4gSUZHIHRvbyBzbWFsbCBvbiBwcmV2aW91cykKKwkJdTMyIGFzd19SWF9EVl9ldmVudDoxOwkvLyBiaXQgMTcoc2hvcnQgcmVjZWl2ZSBldmVudCBkZXRlY3RlZCkKKwkJdTMyIGFzd19mYWxzZV9jYXJyaWVyX2V2ZW50OjE7CS8vIGJpdCAxOChiYWQgY2FycmllciBzaW5jZSBsYXN0IGdvb2QgcGFja2V0KQorCQl1MzIgYXN3X2NvZGVfZXJyOjE7CS8vIGJpdCAxOShvbmUgb3IgbW9yZSBuaWJibGVzIHNpZ25hbGxlZCBhcyBlcnJvcnMpCisJCXUzMiBhc3dfQ1JDX2VycjoxOwkJLy8gYml0IDIwKENSQyBlcnJvcikKKwkJdTMyIGFzd19sZW5fY2hrX2VycjoxOwkvLyBiaXQgMjEoZnJhbWUgbGVuZ3RoIGZpZWxkIGluY29ycmVjdCkKKwkJdTMyIGFzd190b29fbG9uZzoxOwkvLyBiaXQgMjIoZnJhbWUgbGVuZ3RoID4gMTUxOCBieXRlcykKKwkJdTMyIGFzd19PSzoxOwkJLy8gYml0IDIzKHZhbGlkIENSQyArIG5vIGNvZGUgZXJyb3IpCisJCXUzMiBhc3dfbXVsdGljYXN0OjE7CS8vIGJpdCAyNChoYXMgYSBtdWx0aWNhc3QgYWRkcmVzcykKKwkJdTMyIGFzd19icm9hZGNhc3Q6MTsJLy8gYml0IDI1KGhhcyBhIGJyb2FkY2FzdCBhZGRyZXNzKQorCQl1MzIgYXN3X2RyaWJibGVfbmliYmxlOjE7CS8vIGJpdCAyNihzcHVyaW91cyBiaXRzIGFmdGVyIEVPUCkKKwkJdTMyIGFzd19jb250cm9sX2ZyYW1lOjE7CS8vIGJpdCAyNyhpcyBhIGNvbnRyb2wgZnJhbWUpCisJCXUzMiBhc3dfcGF1c2VfZnJhbWU6MTsJLy8gYml0IDI4KGlzIGEgcGF1c2UgZnJhbWUpCisJCXUzMiBhc3dfdW5zdXBwb3J0ZWRfb3A6MTsJLy8gYml0IDI5KHVuc3VwcG9ydGVkIE9QIGNvZGUpCisJCXUzMiBhc3dfVkxBTl90YWc6MTsJLy8gYml0IDMwKFZMQU4gdGFnIGRldGVjdGVkKQorCQl1MzIgYXN3X2xvbmdfZXZ0OjE7CS8vIGJpdCAzMShSeCBsb25nIGV2ZW50KQorI2lmIDAKKwkJdTMyIGFzd190cnVuYzoxOwkJLy8gYml0IDMxKFJ4IGZyYW1lIHRydW5jYXRlZCkKKyNlbmRpZgorI2VuZGlmCisJfSBiaXRzOworfSBQS1RfU1RBVF9ERVNDX1dPUkQwX3QsICpQUEtUX1NUQVRfV09SRDBfdDsKKwordHlwZWRlZiB1bmlvbiBfUEtUX1NUQVRfREVTQ19XT1JEMV90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB1bnVzZWQ6NDsJLy8gYml0cyAyOC0zMQorCQl1MzIgcmk6MjsJCS8vIGJpdHMgMjYtMjcoUmluZyBJbmRleCkKKwkJdTMyIGJpOjEwOwkJLy8gYml0cyAxNi0yNShCdWZmZXIgSW5kZXgpCisJCXUzMiBsZW5ndGg6MTY7CS8vIGJpdCAwLTE1KGxlbmd0aCBpbiBieXRlcykKKyNlbHNlCisJCXUzMiBsZW5ndGg6MTY7CS8vIGJpdCAwLTE1KGxlbmd0aCBpbiBieXRlcykKKwkJdTMyIGJpOjEwOwkJLy8gYml0cyAxNi0yNShCdWZmZXIgSW5kZXgpCisJCXUzMiByaToyOwkJLy8gYml0cyAyNi0yNyhSaW5nIEluZGV4KQorCQl1MzIgdW51c2VkOjQ7CS8vIGJpdHMgMjgtMzEKKyNlbmRpZgorCX0gYml0czsKK30gUEtUX1NUQVRfREVTQ19XT1JEMV90LCAqUFBLVF9TVEFUX1dPUkQxX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9QS1RfU1RBVF9ERVNDX3QgeworCVBLVF9TVEFUX0RFU0NfV09SRDBfdCB3b3JkMDsKKwlQS1RfU1RBVF9ERVNDX1dPUkQxX3Qgd29yZDE7Cit9IFBLVF9TVEFUX0RFU0NfdCwgKlBQS1RfU1RBVF9ERVNDX3Q7CisKKy8qIFR5cGVkZWZzIGZvciB0aGUgUlggRE1BIHN0YXR1cyB3b3JkICovCisKKy8qCisgKiBSWFNUQVRfV09SRDBfdCBzdHJ1Y3R1cmUgaG9sZHMgcGFydCBvZiB0aGUgc3RhdHVzIGJpdHMgb2YgdGhlIFJ4IERNQSBlbmdpbmUKKyAqIHRoYXQgZ2V0IGNvcGllZCBvdXQgdG8gbWVtb3J5IGJ5IHRoZSBFVC0xMzEwLiAgV29yZCAwIGlzIGEgMzIgYml0IHdvcmQKKyAqIHdoaWNoY29udGFpbnMgRnJlZSBCdWZmZXIgcmluZyAwIGFuZCAxIGF2YWlsYWJsZSBvZmZzZXQuCisgKi8KK3R5cGVkZWYgdW5pb24gX3J4c3RhdF93b3JkMF90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiBGQlIxdW51c2VkOjU7CS8vIGJpdHMgMjctMzEKKwkJdTMyIEZCUjF3cmFwOjE7CS8vIGJpdCAyNgorCQl1MzIgRkJSMW9mZnNldDoxMDsJLy8gYml0cyAxNi0yNQorCQl1MzIgRkJSMHVudXNlZDo1OwkvLyBiaXRzIDExLTE1CisJCXUzMiBGQlIwd3JhcDoxOwkvLyBiaXQgMTAKKwkJdTMyIEZCUjBvZmZzZXQ6MTA7CS8vIGJpdHMgMC05CisjZWxzZQorCQl1MzIgRkJSMG9mZnNldDoxMDsJLy8gYml0cyAwLTkKKwkJdTMyIEZCUjB3cmFwOjE7CS8vIGJpdCAxMAorCQl1MzIgRkJSMHVudXNlZDo1OwkvLyBiaXRzIDExLTE1CisJCXUzMiBGQlIxb2Zmc2V0OjEwOwkvLyBiaXRzIDE2LTI1CisJCXUzMiBGQlIxd3JhcDoxOwkvLyBiaXQgMjYKKwkJdTMyIEZCUjF1bnVzZWQ6NTsJLy8gYml0cyAyNy0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWFNUQVRfV09SRDBfdCwgKlBSWFNUQVRfV09SRDBfdDsKKworLyoKKyAqIFJYU1RBVF9XT1JEMV90IHN0cnVjdHVyZSBob2xkcyBwYXJ0IG9mIHRoZSBzdGF0dXMgYml0cyBvZiB0aGUgUnggRE1BIGVuZ2luZQorICogdGhhdCBnZXQgY29waWVkIG91dCB0byBtZW1vcnkgYnkgdGhlIEVULTEzMTAuICBXb3JkIDMgaXMgYSAzMiBiaXQgd29yZAorICogd2hpY2ggY29udGFpbnMgdGhlIFBhY2tldCBTdGF0dXMgUmluZyBhdmFpbGFibGUgb2Zmc2V0LgorICovCit0eXBlZGVmIHVuaW9uIF9yeHN0YXRfd29yZDFfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgUFNSdW51c2VkOjM7CS8vIGJpdHMgMjktMzEKKwkJdTMyIFBTUndyYXA6MTsJLy8gYml0IDI4CisJCXUzMiBQU1JvZmZzZXQ6MTI7CS8vIGJpdHMgMTYtMjcKKwkJdTMyIHJlc2VydmVkOjE2OwkvLyBiaXRzIDAtMTUKKyNlbHNlCisJCXUzMiByZXNlcnZlZDoxNjsJLy8gYml0cyAwLTE1CisJCXUzMiBQU1JvZmZzZXQ6MTI7CS8vIGJpdHMgMTYtMjcKKwkJdTMyIFBTUndyYXA6MTsJLy8gYml0IDI4CisJCXUzMiBQU1J1bnVzZWQ6MzsJLy8gYml0cyAyOS0zMQorI2VuZGlmCisJfSBiaXRzOworfSBSWFNUQVRfV09SRDFfdCwgKlBSWFNUQVRfV09SRDFfdDsKKworLyoKKyAqIFJYX1NUQVRVU19CTE9DS190IGlzIHNydWN0dXJlIHJlcHJlc2VudGluZyB0aGUgc3RhdHVzIG9mIHRoZSBSeCBETUEgZW5naW5lCisgKiBpdCBzaXRzIGluIGZyZWUgbWVtb3J5LCBhbmQgaXMgcG9pbnRlZCB0byBieSAweDEwMWMgLyAweDEwMjAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX3J4X3N0YXR1c19ibG9ja190IHsKKwlSWFNUQVRfV09SRDBfdCBXb3JkMDsKKwlSWFNUQVRfV09SRDFfdCBXb3JkMTsKK30gUlhfU1RBVFVTX0JMT0NLX3QsICpQUlhfU1RBVFVTX0JMT0NLX3Q7CisKKy8qCisgKiBTdHJ1Y3R1cmUgZm9yIGxvb2stdXAgdGFibGUgaG9sZGluZyBmcmVlIGJ1ZmZlciByaW5nIHBvaW50ZXJzCisgKi8KK3R5cGVkZWYgc3RydWN0IF9GYnJMb29rdXBUYWJsZSB7CisJdm9pZCAqVmFbTUFYX0RFU0NfUEVSX1JJTkdfUlhdOworCXZvaWQgKkJ1ZmZlcjFbTUFYX0RFU0NfUEVSX1JJTkdfUlhdOworCXZvaWQgKkJ1ZmZlcjJbTUFYX0RFU0NfUEVSX1JJTkdfUlhdOworCXUzMiBQQUhpZ2hbTUFYX0RFU0NfUEVSX1JJTkdfUlhdOworCXUzMiBQQUxvd1tNQVhfREVTQ19QRVJfUklOR19SWF07Cit9IEZCUkxPT0tVUFRBQkxFLCAqUEZCUkxPT0tVUFRBQkxFOworCit0eXBlZGVmIGVudW0geworCU9ORV9QQUNLRVRfSU5URVJSVVBULAorCUZPVVJfUEFDS0VUX0lOVEVSUlVQVAorfSBlUlhfSU5URVJSVVBUX1NUQVRFX3QsICpQZVJYX0lOVEVSUlVQVF9TVEFURV90OworCisvKgorICogU3RydWN0dXJlIHRvIGhvbGQgdGhlIHNrYidzIGluIGEgbGlzdAorICovCit0eXBlZGVmIHN0cnVjdCByeF9za2JfbGlzdF9lbGVtIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHNrYl9saXN0X2VsZW07CisJZG1hX2FkZHJfdCBkbWFfYWRkcjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworfSBSWF9TS0JfTElTVF9FTEVNLCAqUFJYX1NLQl9MSVNUX0VMRU07CisKKy8qCisgKiBSWF9SSU5HX3QgaXMgc3J1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBhZGFwdG9yJ3MgbG9jYWwgcmVmZXJlbmNlKHMpIHRvIHRoZQorICogcmluZ3MKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX3J4X3JpbmdfdCB7CisjaWZkZWYgVVNFX0ZCUjAKKwl2b2lkICpwRmJyMFJpbmdWYTsKKwlkbWFfYWRkcl90IHBGYnIwUmluZ1BhOworCXZvaWQgKkZicjBNZW1WYVtNQVhfREVTQ19QRVJfUklOR19SWCAvIEZCUl9DSFVOS1NdOworCWRtYV9hZGRyX3QgRmJyME1lbVBhW01BWF9ERVNDX1BFUl9SSU5HX1JYIC8gRkJSX0NIVU5LU107CisJdWludDY0X3QgRmJyMFJlYWxwYTsKKwl1aW50NjRfdCBGYnIwb2Zmc2V0OworCURNQTEwV190IGxvY2FsX0ZicjBfZnVsbDsKKwl1MzIgRmJyME51bUVudHJpZXM7CisJdTMyIEZicjBCdWZmZXJTaXplOworI2VuZGlmCisJdm9pZCAqcEZicjFSaW5nVmE7CisJZG1hX2FkZHJfdCBwRmJyMVJpbmdQYTsKKwl2b2lkICpGYnIxTWVtVmFbTUFYX0RFU0NfUEVSX1JJTkdfUlggLyBGQlJfQ0hVTktTXTsKKwlkbWFfYWRkcl90IEZicjFNZW1QYVtNQVhfREVTQ19QRVJfUklOR19SWCAvIEZCUl9DSFVOS1NdOworCXVpbnQ2NF90IEZicjFSZWFscGE7CisJdWludDY0X3QgRmJyMW9mZnNldDsKKwlGQlJMT09LVVBUQUJMRSAqRmJyWzJdOworCURNQTEwV190IGxvY2FsX0ZicjFfZnVsbDsKKwl1MzIgRmJyMU51bUVudHJpZXM7CisJdTMyIEZicjFCdWZmZXJTaXplOworCisJdm9pZCAqcFBTUmluZ1ZhOworCWRtYV9hZGRyX3QgcFBTUmluZ1BhOworCXVpbnQ2NF90IHBQU1JpbmdSZWFsUGE7CisJdWludDY0X3QgcFBTUmluZ09mZnNldDsKKwlSWERNQV9QU1JfRlVMTF9PRkZTRVRfdCBsb2NhbF9wc3JfZnVsbDsKKwl1MzIgUHNyTnVtRW50cmllczsKKworCXZvaWQgKnBSeFN0YXR1c1ZhOworCWRtYV9hZGRyX3QgcFJ4U3RhdHVzUGE7CisJdWludDY0X3QgUnhTdGF0dXNSZWFsUEE7CisJdWludDY0X3QgUnhTdGF0dXNPZmZzZXQ7CisKKwlzdHJ1Y3QgbGlzdF9oZWFkIFJlY3ZCdWZmZXJQb29sOworCisJLyogUkVDViAqLworCXN0cnVjdCBsaXN0X2hlYWQgUmVjdkxpc3Q7CisJc3RydWN0IGxpc3RfaGVhZCBSZWN2UGVuZGluZ0xpc3Q7CisJdTMyIG5SZWFkeVJlY3Y7CisKKwl1MzIgTnVtUmZkOworCisJYm9vbCBVbmZpbmlzaGVkUmVjZWl2ZXM7CisKKwlzdHJ1Y3QgbGlzdF9oZWFkIFJlY3ZQYWNrZXRQb29sOworCisJLyogbG9va2FzaWRlIGxpc3RzICovCisJc3RydWN0IGttZW1fY2FjaGUgKlJlY3ZMb29rYXNpZGU7Cit9IFJYX1JJTkdfdCwgKlBSWF9SSU5HX3Q7CisKKy8qIEZvcndhcmQgcmVmZXJlbmNlIG9mIFJGRCAqLworc3RydWN0IF9NUF9SRkQ7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBldDEzMXhfYWRhcHRlcjsKKworLyogUFJPVE9UWVBFUyBmb3IgSW5pdGlhbGl6YXRpb24gKi8KK2ludCBldDEzMXhfcnhfZG1hX21lbW9yeV9hbGxvYyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBldDEzMXhfcnhfZG1hX21lbW9yeV9mcmVlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CitpbnQgZXQxMzF4X3JmZF9yZXNvdXJjZXNfYWxsb2Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyLAorCQkJICAgICAgIHN0cnVjdCBfTVBfUkZEICpwTXBSZmQpOwordm9pZCBldDEzMXhfcmZkX3Jlc291cmNlc19mcmVlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJCSAgICAgICBzdHJ1Y3QgX01QX1JGRCAqcE1wUmZkKTsKK2ludCBldDEzMXhfaW5pdF9yZWN2KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKK3ZvaWQgQ29uZmlnUnhEbWFSZWdzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIFNldFJ4RG1hVGltZXIoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgZXQxMzF4X3J4X2RtYV9kaXNhYmxlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIGV0MTMxeF9yeF9kbWFfZW5hYmxlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKK3ZvaWQgZXQxMzF4X3Jlc2V0X3JlY3Yoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKKwordm9pZCBldDEzMXhfaGFuZGxlX3JlY3ZfaW50ZXJydXB0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKKyNlbmRpZiAvKiBfX0VUMTMxMF9SWF9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF90eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NWMyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF90eC5jCkBAIC0wLDAgKzEsMTUyNSBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfdHguYyAtIFJvdXRpbmVzIHVzZWQgdG8gcGVyZm9ybSBkYXRhIHRyYW5zbWlzc2lvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKworI2luY2x1ZGUgImV0MTMxMF9waHkuaCIKKyNpbmNsdWRlICJldDEzMTBfcG0uaCIKKyNpbmNsdWRlICJldDEzMTBfamFnY29yZS5oIgorCisjaW5jbHVkZSAiZXQxMzF4X2FkYXB0ZXIuaCIKKyNpbmNsdWRlICJldDEzMXhfaW5pdHBjaS5oIgorI2luY2x1ZGUgImV0MTMxeF9pc3IuaCIKKworI2luY2x1ZGUgImV0MTMxMF90eC5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKK2V4dGVybiBkYmdfaW5mb190ICpldDEzMXhfZGJnaW5mbzsKKyNlbmRpZiAvKiBDT05GSUdfRVQxMzFYX0RFQlVHICovCisKK3N0YXRpYyB2b2lkIGV0MTMxeF91cGRhdGVfdGNiX2xpc3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcik7CitzdGF0aWMgdm9pZCBldDEzMXhfY2hlY2tfc2VuZF93YWl0X2xpc3Qoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcik7CitzdGF0aWMgaW5saW5lIHZvaWQgZXQxMzF4X2ZyZWVfc2VuZF9wYWNrZXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwKKwkJCQkJICAgUE1QX1RDQiBwTXBUY2IpOworc3RhdGljIGludCBldDEzMXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCSAgICAgIHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpOworc3RhdGljIGludCBuaWNfc2VuZF9wYWNrZXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgUE1QX1RDQiBwTXBUY2IpOworCisvKioKKyAqIGV0MTMxeF90eF9kbWFfbWVtb3J5X2FsbG9jCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpLgorICoKKyAqIEFsbG9jYXRlcyBtZW1vcnkgdGhhdCB3aWxsIGJlIHZpc2libGUgYm90aCB0byB0aGUgZGV2aWNlIGFuZCB0byB0aGUgQ1BVLgorICogVGhlIE9TIHdpbGwgcGFzcyB1cyBwYWNrZXRzLCBwb2ludGVycyB0byB3aGljaCB3ZSB3aWxsIGluc2VydCBpbiB0aGUgVHgKKyAqIERlc2NyaXB0b3IgcXVldWUuIFRoZSBkZXZpY2Ugd2lsbCByZWFkIHRoaXMgcXVldWUgdG8gZmluZCB0aGUgcGFja2V0cyBpbgorICogbWVtb3J5LiBUaGUgZGV2aWNlIHdpbGwgdXBkYXRlIHRoZSAic3RhdHVzIiBpbiBtZW1vcnkgZWFjaCB0aW1lIGl0IHhtaXRzIGEKKyAqIHBhY2tldC4KKyAqLworaW50IGV0MTMxeF90eF9kbWFfbWVtb3J5X2FsbG9jKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpbnQgZGVzY19zaXplID0gMDsKKwlUWF9SSU5HX3QgKnR4X3JpbmcgPSAmYWRhcHRlci0+VHhSaW5nOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIFRDQidzIChUcmFuc21pdCBDb250cm9sIEJsb2NrKSAqLworCWFkYXB0ZXItPlR4UmluZy5NcFRjYk1lbSA9IChNUF9UQ0IgKikga2NhbGxvYyhOVU1fVENCLCBzaXplb2YoTVBfVENCKSwKKwkJCQkJCSAgICAgIEdGUF9BVE9NSUMgfCBHRlBfRE1BKTsKKwlpZiAoIWFkYXB0ZXItPlR4UmluZy5NcFRjYk1lbSkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDYW5ub3QgYWxsb2MgbWVtb3J5IGZvciBUQ0JzXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogQWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIFR4IGRlc2NyaXB0b3IgcmluZywgYW5kIGFsbG9jYXRlCisJICogc29tZSBleHRyYSBzbyB0aGF0IHRoZSByaW5nIGNhbiBiZSBhbGlnbmVkIG9uIGEgNGsgYm91bmRhcnkuCisJICovCisJZGVzY19zaXplID0gKHNpemVvZihUWF9ERVNDX0VOVFJZX3QpICogTlVNX0RFU0NfUEVSX1JJTkdfVFgpICsgNDA5NiAtIDE7CisJdHhfcmluZy0+cFR4RGVzY1JpbmdWYSA9CisJICAgIChQVFhfREVTQ19FTlRSWV90KSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LCBkZXNjX3NpemUsCisJCQkJCQkgICAgJnR4X3JpbmctPnBUeERlc2NSaW5nUGEpOworCWlmICghYWRhcHRlci0+VHhSaW5nLnBUeERlc2NSaW5nVmEpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAiQ2Fubm90IGFsbG9jIG1lbW9yeSBmb3IgVHggUmluZ1xuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qIFNhdmUgcGh5c2ljYWwgYWRkcmVzcworCSAqCisJICogTk9URTogcGNpX2FsbG9jX2NvbnNpc3RlbnQoKSwgdXNlZCBhYm92ZSB0byBhbGxvYyBETUEgcmVnaW9ucywKKwkgKiBBTFdBWVMgcmV0dXJucyBTQUMgKDMyLWJpdCkgYWRkcmVzc2VzLiBJZiBEQUMgKDY0LWJpdCkgYWRkcmVzc2VzCisJICogYXJlIGV2ZXIgcmV0dXJuZWQsIG1ha2Ugc3VyZSB0aGUgaGlnaCBwYXJ0IGlzIHJldHJpZXZlZCBoZXJlIGJlZm9yZQorCSAqIHN0b3JpbmcgdGhlIGFkanVzdGVkIGFkZHJlc3MuCisJICovCisJdHhfcmluZy0+cFR4RGVzY1JpbmdBZGp1c3RlZFBhID0gdHhfcmluZy0+cFR4RGVzY1JpbmdQYTsKKworCS8qIEFsaWduIFR4IERlc2NyaXB0b3IgUmluZyBvbiBhIDRrICgweDEwMDApIGJ5dGUgYm91bmRhcnkgKi8KKwlldDEzMXhfYWxpZ25fYWxsb2NhdGVkX21lbW9yeShhZGFwdGVyLAorCQkJCSAgICAgICZ0eF9yaW5nLT5wVHhEZXNjUmluZ0FkanVzdGVkUGEsCisJCQkJICAgICAgJnR4X3JpbmctPlR4RGVzY09mZnNldCwgMHgwRkZGKTsKKworCXR4X3JpbmctPnBUeERlc2NSaW5nVmEgKz0gdHhfcmluZy0+VHhEZXNjT2Zmc2V0OworCisJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgVHggc3RhdHVzIGJsb2NrICovCisJdHhfcmluZy0+cFR4U3RhdHVzVmEgPSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCQkJICAgIHNpemVvZihUWF9TVEFUVVNfQkxPQ0tfdCksCisJCQkJCQkgICAgJnR4X3JpbmctPnBUeFN0YXR1c1BhKTsKKwlpZiAoIWFkYXB0ZXItPlR4UmluZy5wVHhTdGF0dXNQYSkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDYW5ub3QgYWxsb2MgbWVtb3J5IGZvciBUeCBzdGF0dXMgYmxvY2tcbiIpOworCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIGEgZHVtbXkgYnVmZmVyICovCisJdHhfcmluZy0+cFR4RHVtbXlCbGtWYSA9IHBjaV9hbGxvY19jb25zaXN0ZW50KGFkYXB0ZXItPnBkZXYsCisJCQkJCQkgICAgICBOSUNfTUlOX1BBQ0tFVF9TSVpFLAorCQkJCQkJICAgICAgJnR4X3JpbmctPnBUeER1bW15QmxrUGEpOworCWlmICghYWRhcHRlci0+VHhSaW5nLnBUeER1bW15QmxrUGEpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiQ2Fubm90IGFsbG9jIG1lbW9yeSBmb3IgVHggZHVtbXkgYnVmZmVyXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBldDEzMXhfdHhfZG1hX21lbW9yeV9mcmVlIC0gRnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCB3aXRoaW4gdGhpcyBtb2R1bGUKKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkuCisgKi8KK3ZvaWQgZXQxMzF4X3R4X2RtYV9tZW1vcnlfZnJlZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpCit7CisJaW50IGRlc2Nfc2l6ZSA9IDA7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJaWYgKGFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhKSB7CisJCS8qIEZyZWUgbWVtb3J5IHJlbGF0aW5nIHRvIFR4IHJpbmdzIGhlcmUgKi8KKwkJYWRhcHRlci0+VHhSaW5nLnBUeERlc2NSaW5nVmEgLT0gYWRhcHRlci0+VHhSaW5nLlR4RGVzY09mZnNldDsKKworCQlkZXNjX3NpemUgPQorCQkgICAgKHNpemVvZihUWF9ERVNDX0VOVFJZX3QpICogTlVNX0RFU0NfUEVSX1JJTkdfVFgpICsgNDA5NiAtIDE7CisKKwkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wZGV2LAorCQkJCSAgICBkZXNjX3NpemUsCisJCQkJICAgIGFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhLAorCQkJCSAgICBhZGFwdGVyLT5UeFJpbmcucFR4RGVzY1JpbmdQYSk7CisKKwkJYWRhcHRlci0+VHhSaW5nLnBUeERlc2NSaW5nVmEgPSBOVUxMOworCX0KKworCS8qIEZyZWUgbWVtb3J5IGZvciB0aGUgVHggc3RhdHVzIGJsb2NrICovCisJaWYgKGFkYXB0ZXItPlR4UmluZy5wVHhTdGF0dXNWYSkgeworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBkZXYsCisJCQkJICAgIHNpemVvZihUWF9TVEFUVVNfQkxPQ0tfdCksCisJCQkJICAgIGFkYXB0ZXItPlR4UmluZy5wVHhTdGF0dXNWYSwKKwkJCQkgICAgYWRhcHRlci0+VHhSaW5nLnBUeFN0YXR1c1BhKTsKKworCQlhZGFwdGVyLT5UeFJpbmcucFR4U3RhdHVzVmEgPSBOVUxMOworCX0KKworCS8qIEZyZWUgbWVtb3J5IGZvciB0aGUgZHVtbXkgYnVmZmVyICovCisJaWYgKGFkYXB0ZXItPlR4UmluZy5wVHhEdW1teUJsa1ZhKSB7CisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGRldiwKKwkJCQkgICAgTklDX01JTl9QQUNLRVRfU0laRSwKKwkJCQkgICAgYWRhcHRlci0+VHhSaW5nLnBUeER1bW15QmxrVmEsCisJCQkJICAgIGFkYXB0ZXItPlR4UmluZy5wVHhEdW1teUJsa1BhKTsKKworCQlhZGFwdGVyLT5UeFJpbmcucFR4RHVtbXlCbGtWYSA9IE5VTEw7CisJfQorCisJLyogRnJlZSB0aGUgbWVtb3J5IGZvciBNUF9UQ0Igc3RydWN0dXJlcyAqLworCWlmIChhZGFwdGVyLT5UeFJpbmcuTXBUY2JNZW0pIHsKKwkJa2ZyZWUoYWRhcHRlci0+VHhSaW5nLk1wVGNiTWVtKTsKKwkJYWRhcHRlci0+VHhSaW5nLk1wVGNiTWVtID0gTlVMTDsKKwl9CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIENvbmZpZ1R4RG1hUmVncyAtIFNldCB1cCB0aGUgdHggZG1hIHNlY3Rpb24gb2YgdGhlIEpBR0NvcmUuCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICovCit2b2lkIENvbmZpZ1R4RG1hUmVncyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXN0cnVjdCBfVFhETUFfdCBfX2lvbWVtICpwVHhEbWEgPSAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnR4ZG1hOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIExvYWQgdGhlIGhhcmR3YXJlIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc21pdCBkZXNjcmlwdG9yIHJpbmcuICovCisJd3JpdGVsKCh1aW50MzJfdCkgKHBBZGFwdGVyLT5UeFJpbmcucFR4RGVzY1JpbmdBZGp1c3RlZFBhID4+IDMyKSwKKwkgICAgICAgJnBUeERtYS0+cHJfYmFzZV9oaSk7CisJd3JpdGVsKCh1aW50MzJfdCkgcEFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ0FkanVzdGVkUGEsCisJICAgICAgICZwVHhEbWEtPnByX2Jhc2VfbG8pOworCisJLyogSW5pdGlhbGlzZSB0aGUgdHJhbnNtaXQgRE1BIGVuZ2luZSAqLworCXdyaXRlbChOVU1fREVTQ19QRVJfUklOR19UWCAtIDEsICZwVHhEbWEtPnByX251bV9kZXMudmFsdWUpOworCisJLyogTG9hZCB0aGUgY29tcGxldGlvbiB3cml0ZWJhY2sgcGh5c2ljYWwgYWRkcmVzcworCSAqCisJICogTk9URTogcGNpX2FsbG9jX2NvbnNpc3RlbnQoKSwgdXNlZCBhYm92ZSB0byBhbGxvYyBETUEgcmVnaW9ucywKKwkgKiBBTFdBWVMgcmV0dXJucyBTQUMgKDMyLWJpdCkgYWRkcmVzc2VzLiBJZiBEQUMgKDY0LWJpdCkgYWRkcmVzc2VzCisJICogYXJlIGV2ZXIgcmV0dXJuZWQsIG1ha2Ugc3VyZSB0aGUgaGlnaCBwYXJ0IGlzIHJldHJpZXZlZCBoZXJlIGJlZm9yZQorCSAqIHN0b3JpbmcgdGhlIGFkanVzdGVkIGFkZHJlc3MuCisJICovCisJd3JpdGVsKDAsICZwVHhEbWEtPmRtYV93Yl9iYXNlX2hpKTsKKwl3cml0ZWwocEFkYXB0ZXItPlR4UmluZy5wVHhTdGF0dXNQYSwgJnBUeERtYS0+ZG1hX3diX2Jhc2VfbG8pOworCisJbWVtc2V0KHBBZGFwdGVyLT5UeFJpbmcucFR4U3RhdHVzVmEsIDAsIHNpemVvZihUWF9TVEFUVVNfQkxPQ0tfdCkpOworCisJd3JpdGVsKDAsICZwVHhEbWEtPnNlcnZpY2VfcmVxdWVzdC52YWx1ZSk7CisJcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLnZhbHVlID0gMDsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogZXQxMzF4X3R4X2RtYV9kaXNhYmxlIC0gU3RvcCBvZiBUeF9ETUEgb24gdGhlIEVUMTMxMAorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICovCit2b2lkIGV0MTMxeF90eF9kbWFfZGlzYWJsZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBTZXR1cCB0aGUgdHJhbXNtaXQgZG1hIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KKwl3cml0ZWwoMHgxMDEsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhkbWEuY3NyLnZhbHVlKTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogZXQxMzF4X3R4X2RtYV9lbmFibGUgLSByZS1zdGFydCBvZiBUeF9ETUEgb24gdGhlIEVUMTMxMC4KKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBNYWlubHkgdXNlZCBhZnRlciBhIHJldHVybiB0byB0aGUgRDAgKGZ1bGwtcG93ZXIpIHN0YXRlIGZyb20gYSBsb3dlciBzdGF0ZS4KKyAqLwordm9pZCBldDEzMXhfdHhfZG1hX2VuYWJsZShzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlpZiAocEFkYXB0ZXItPlJlZ2lzdHJ5UGh5TG9vcGJrKSB7CisJLyogVHhETUEgaXMgZGlzYWJsZWQgZm9yIGxvb3BiYWNrIG9wZXJhdGlvbi4gKi8KKwkJd3JpdGVsKDB4MTAxLCAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnR4ZG1hLmNzci52YWx1ZSk7CisJfSBlbHNlIHsKKwkJVFhETUFfQ1NSX3QgY3NyID0geyAwIH07CisKKwkJLyogU2V0dXAgdGhlIHRyYW5zbWl0IGRtYSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGZvciBub3JtYWwKKwkJICogb3BlcmF0aW9uCisJCSAqLworCQljc3IuYml0cy5zbmdsX2Vwa3RfbW9kZSA9IDE7CisJCWNzci5iaXRzLmhhbHQgPSAwOworCQljc3IuYml0cy5jYWNoZV90aHJzaGxkID0gcEFkYXB0ZXItPlJlZ2lzdHJ5RE1BQ2FjaGU7CisJCXdyaXRlbChjc3IudmFsdWUsICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhkbWEuY3NyLnZhbHVlKTsKKwl9CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIGV0MTMxeF9pbml0X3NlbmQgLSBJbml0aWFsaXplIHNlbmQgZGF0YSBzdHJ1Y3R1cmVzCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICovCit2b2lkIGV0MTMxeF9pbml0X3NlbmQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCVBNUF9UQ0IgcE1wVGNiOworCXVpbnQzMl90IFRjYkNvdW50OworCVRYX1JJTkdfdCAqdHhfcmluZzsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBTZXR1cCBzb21lIGNvbnZlbmllbmNlIHBvaW50ZXJzICovCisJdHhfcmluZyA9ICZhZGFwdGVyLT5UeFJpbmc7CisJcE1wVGNiID0gYWRhcHRlci0+VHhSaW5nLk1wVGNiTWVtOworCisJdHhfcmluZy0+VENCUmVhZHlRdWV1ZUhlYWQgPSBwTXBUY2I7CisKKwkvKiBHbyB0aHJvdWdoIGFuZCBzZXQgdXAgZWFjaCBUQ0IgKi8KKwlmb3IgKFRjYkNvdW50ID0gMDsgVGNiQ291bnQgPCBOVU1fVENCOyBUY2JDb3VudCsrKSB7CisJCW1lbXNldChwTXBUY2IsIDAsIHNpemVvZihNUF9UQ0IpKTsKKworCQkvKiBTZXQgdGhlIGxpbmsgcG9pbnRlciBpbiBIVyBUQ0IgdG8gdGhlIG5leHQgVENCIGluIHRoZQorCQkgKiBjaGFpbi4gIElmIHRoaXMgaXMgdGhlIGxhc3QgVENCIGluIHRoZSBjaGFpbiwgYWxzbyBzZXQgdGhlCisJCSAqIHRhaWwgcG9pbnRlci4KKwkJICovCisJCWlmIChUY2JDb3VudCA8IE5VTV9UQ0IgLSAxKSB7CisJCQlwTXBUY2ItPk5leHQgPSBwTXBUY2IgKyAxOworCQl9IGVsc2UgeworCQkJdHhfcmluZy0+VENCUmVhZHlRdWV1ZVRhaWwgPSBwTXBUY2I7CisJCQlwTXBUY2ItPk5leHQgPSAoUE1QX1RDQikgTlVMTDsKKwkJfQorCisJCXBNcFRjYisrOworCX0KKworCS8qIEN1cnIgc2VuZCBxdWV1ZSBzaG91bGQgbm93IGJlIGVtcHR5ICovCisJdHhfcmluZy0+Q3VyclNlbmRIZWFkID0gKFBNUF9UQ0IpIE5VTEw7CisJdHhfcmluZy0+Q3VyclNlbmRUYWlsID0gKFBNUF9UQ0IpIE5VTEw7CisKKwlJTklUX0xJU1RfSEVBRCgmYWRhcHRlci0+VHhSaW5nLlNlbmRXYWl0UXVldWUpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfc2VuZF9wYWNrZXRzIC0gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIE9TIHRvIHNlbmQgcGFja2V0cworICogQHNrYjogdGhlIHBhY2tldChzKSB0byBzZW5kCisgKiBAbmV0ZGV2OmRldmljZSBvbiB3aGljaCB0byBUWCB0aGUgYWJvdmUgcGFja2V0KHMpCisgKgorICogUmV0dXJuIDAgaW4gYWxtb3N0IGFsbCBjYXNlczsgbm9uLXplcm8gdmFsdWUgaW4gZXh0cmVtZSBoYXJkIGZhaWx1cmUgb25seQorICovCitpbnQgZXQxMzF4X3NlbmRfcGFja2V0cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCWludCBzdGF0dXMgPSAwOworCXN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIgPSBOVUxMOworCisJREJHX1RYX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCXBBZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKworCS8qIFNlbmQgdGhlc2UgcGFja2V0cworCSAqCisJICogTk9URTogVGhlIExpbnV4IFR4IGVudHJ5IHBvaW50IGlzIG9ubHkgZ2l2ZW4gb25lIHBhY2tldCBhdCBhIHRpbWUKKwkgKiB0byBUeCwgc28gdGhlIFBhY2tldENvdW50IGFuZCBpdCdzIGFycmF5IHVzZWQgbWFrZXMgbm8gc2Vuc2UgaGVyZQorCSAqLworCisJLyogUXVldWUgaXMgbm90IGVtcHR5IG9yIFRDQiBpcyBub3QgYXZhaWxhYmxlICovCisJaWYgKCFsaXN0X2VtcHR5KCZwQWRhcHRlci0+VHhSaW5nLlNlbmRXYWl0UXVldWUpIHx8CisJICAgIE1QX1RDQl9SRVNPVVJDRVNfTk9UX0FWQUlMQUJMRShwQWRhcHRlcikpIHsKKwkJLyogTk9URTogSWYgdGhlcmUncyBhbiBlcnJvciBvbiBzZW5kLCBubyBuZWVkIHRvIHF1ZXVlIHRoZQorCQkgKiBwYWNrZXQgdW5kZXIgTGludXg7IGlmIHdlIGp1c3Qgc2VuZCBhbiBlcnJvciB1cCB0byB0aGUKKwkJICogbmV0aWYgbGF5ZXIsIGl0IHdpbGwgcmVzZW5kIHRoZSBza2IgdG8gdXMuCisJCSAqLworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlRDQiBSZXNvdXJjZXMgTm90IEF2YWlsYWJsZVxuIik7CisJCXN0YXR1cyA9IC1FTk9NRU07CisJfSBlbHNlIHsKKwkJLyogV2UgbmVlZCB0byBzZWUgaWYgdGhlIGxpbmsgaXMgdXA7IGlmIGl0J3Mgbm90LCBtYWtlIHRoZQorCQkgKiBuZXRpZiBsYXllciB0aGluayB3ZSdyZSBnb29kIGFuZCBkcm9wIHRoZSBwYWNrZXQKKwkJICovCisJCS8vaWYoIE1QX1NIT1VMRF9GQUlMX1NFTkQoIHBBZGFwdGVyICkgfHwgcEFkYXB0ZXItPkRyaXZlck5vUGh5QWNjZXNzICkKKwkJaWYgKE1QX1NIT1VMRF9GQUlMX1NFTkQocEFkYXB0ZXIpIHx8IHBBZGFwdGVyLT5Ecml2ZXJOb1BoeUFjY2VzcworCQkgICAgfHwgIW5ldGlmX2NhcnJpZXJfb2sobmV0ZGV2KSkgeworCQkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJDYW4ndCBUeCwgTGluayBpcyBET1dOOyBkcm9wIHRoZSBwYWNrZXRcbiIpOworCisJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOworCQkJc2tiID0gTlVMTDsKKworCQkJcEFkYXB0ZXItPm5ldF9zdGF0cy50eF9kcm9wcGVkKys7CisJCX0gZWxzZSB7CisJCQlzdGF0dXMgPSBldDEzMXhfc2VuZF9wYWNrZXQoc2tiLCBwQWRhcHRlcik7CisKKwkJCWlmIChzdGF0dXMgPT0gLUVOT01FTSkgeworCisJCQkJLyogTk9URTogSWYgdGhlcmUncyBhbiBlcnJvciBvbiBzZW5kLCBubyBuZWVkCisJCQkJICogdG8gcXVldWUgdGhlIHBhY2tldCB1bmRlciBMaW51eDsgaWYgd2UganVzdAorCQkJCSAqIHNlbmQgYW4gZXJyb3IgdXAgdG8gdGhlIG5ldGlmIGxheWVyLCBpdAorCQkJCSAqIHdpbGwgcmVzZW5kIHRoZSBza2IgdG8gdXMuCisJCQkJICovCisJCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJCSAgICAiUmVzb3VyY2VzIHByb2JsZW0sIFF1ZXVlIHR4IHBhY2tldFxuIik7CisJCQl9IGVsc2UgaWYgKHN0YXR1cyAhPSAwKSB7CisJCQkJLyogT24gYW55IG90aGVyIGVycm9yLCBtYWtlIG5ldGlmIHRoaW5rIHdlJ3JlCisJCQkJICogT0sgYW5kIGRyb3AgdGhlIHBhY2tldAorCQkJCSAqLworCQkJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkgICAgIkdlbmVyYWwgZXJyb3IsIGRyb3AgcGFja2V0XG4iKTsKKworCQkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CisJCQkJc2tiID0gTlVMTDsKKworCQkJCXBBZGFwdGVyLT5uZXRfc3RhdHMudHhfZHJvcHBlZCsrOworCQkJfQorCQl9CisJfQorCisJREJHX1RYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9zZW5kX3BhY2tldCAtIERvIHRoZSB3b3JrIHRvIHNlbmQgYSBwYWNrZXQKKyAqIEBza2I6IHRoZSBwYWNrZXQocykgdG8gc2VuZAorICogQHBBZGFwdGVyOiBhIHBvaW50ZXIgdG8gdGhlIGRldmljZSdzIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBSZXR1cm4gMCBpbiBhbG1vc3QgYWxsIGNhc2VzOyBub24temVybyB2YWx1ZSBpbiBleHRyZW1lIGhhcmQgZmFpbHVyZSBvbmx5LgorICoKKyAqIEFzc3VtcHRpb246IFNlbmQgc3BpbmxvY2sgaGFzIGJlZW4gYWNxdWlyZWQKKyAqLworc3RhdGljIGludCBldDEzMXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCSAgICAgIHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJaW50IHN0YXR1cyA9IDA7CisJUE1QX1RDQiBwTXBUY2IgPSBOVUxMOworCXVpbnQxNl90ICpwU2hCdWZWYTsKKwl1bnNpZ25lZCBsb25nIGxvY2tmbGFnczsKKworCURCR19UWF9FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBJcyBvdXIgYnVmZmVyIHNjYXR0ZXJlZCwgb3IgY29udGludW91cz8gKi8KKwlpZiAoc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFncyA9PSAwKSB7CisJCURCR19UWChldDEzMXhfZGJnaW5mbywgIlNjYXR0ZXJlZCBidWZmZXI6IE5PXG4iKTsKKwl9IGVsc2UgeworCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sICJTY2F0dGVyZWQgYnVmZmVyOiBZRVMsIE51bSBGcmFnczogJWRcbiIsCisJCSAgICAgICBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzKTsKKwl9CisKKwkvKiBBbGwgcGFja2V0cyBtdXN0IGhhdmUgYXQgbGVhc3QgYSBNQUMgYWRkcmVzcyBhbmQgYSBwcm90b2NvbCB0eXBlICovCisJaWYgKHNrYi0+bGVuIDwgRVRIX0hMRU4pIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiUGFja2V0IHNpemUgPCBFVEhfSExFTiAoMTQgYnl0ZXMpXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogR2V0IGEgVENCIGZvciB0aGlzIHBhY2tldCAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCUmVhZHlRTG9jaywgbG9ja2ZsYWdzKTsKKworCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuVENCUmVhZHlRdWV1ZUhlYWQ7CisKKwlpZiAocE1wVGNiID09IE5VTEwpIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlRDQlJlYWR5UUxvY2ssIGxvY2tmbGFncyk7CisKKwkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sICJDYW4ndCBvYnRhaW4gYSBUQ0JcbiIpOworCQlEQkdfVFhfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlwQWRhcHRlci0+VHhSaW5nLlRDQlJlYWR5UXVldWVIZWFkID0gcE1wVGNiLT5OZXh0OworCisJaWYgKHBBZGFwdGVyLT5UeFJpbmcuVENCUmVhZHlRdWV1ZUhlYWQgPT0gTlVMTCkgeworCQlwQWRhcHRlci0+VHhSaW5nLlRDQlJlYWR5UXVldWVUYWlsID0gTlVMTDsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+VENCUmVhZHlRTG9jaywgbG9ja2ZsYWdzKTsKKworCXBNcFRjYi0+UGFja2V0TGVuZ3RoID0gc2tiLT5sZW47CisJcE1wVGNiLT5QYWNrZXQgPSBza2I7CisKKwlpZiAoKHNrYi0+ZGF0YSAhPSBOVUxMKSAmJiAoKHNrYi0+bGVuIC0gc2tiLT5kYXRhX2xlbikgPj0gNikpIHsKKwkJcFNoQnVmVmEgPSAodWludDE2X3QgKikgc2tiLT5kYXRhOworCisJCWlmICgocFNoQnVmVmFbMF0gPT0gMHhmZmZmKSAmJgorCQkgICAgKHBTaEJ1ZlZhWzFdID09IDB4ZmZmZikgJiYgKHBTaEJ1ZlZhWzJdID09IDB4ZmZmZikpIHsKKwkJCU1QX1NFVF9GTEFHKHBNcFRjYiwgZk1QX0RFU1RfQlJPQUQpOworCQl9IGVsc2UgaWYgKChwU2hCdWZWYVswXSAmIDB4MykgPT0gMHgwMDAxKSB7CisJCQlNUF9TRVRfRkxBRyhwTXBUY2IsIGZNUF9ERVNUX01VTFRJKTsKKwkJfQorCX0KKworCXBNcFRjYi0+TmV4dCA9IE5VTEw7CisKKwkvKiBDYWxsIHRoZSBOSUMgc3BlY2lmaWMgc2VuZCBoYW5kbGVyLiAqLworCWlmIChzdGF0dXMgPT0gMCkgeworCQlzdGF0dXMgPSBuaWNfc2VuZF9wYWNrZXQocEFkYXB0ZXIsIHBNcFRjYik7CisJfQorCisJaWYgKHN0YXR1cyAhPSAwKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCUmVhZHlRTG9jaywgbG9ja2ZsYWdzKTsKKworCQlpZiAocEFkYXB0ZXItPlR4UmluZy5UQ0JSZWFkeVF1ZXVlVGFpbCkgeworCQkJcEFkYXB0ZXItPlR4UmluZy5UQ0JSZWFkeVF1ZXVlVGFpbC0+TmV4dCA9IHBNcFRjYjsKKwkJfSBlbHNlIHsKKwkJCS8qIEFwcGFyZW50bHkgcmVhZHkgUSBpcyBlbXB0eS4gKi8KKwkJCXBBZGFwdGVyLT5UeFJpbmcuVENCUmVhZHlRdWV1ZUhlYWQgPSBwTXBUY2I7CisJCX0KKworCQlwQWRhcHRlci0+VHhSaW5nLlRDQlJlYWR5UXVldWVUYWlsID0gcE1wVGNiOworCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5UQ0JSZWFkeVFMb2NrLCBsb2NrZmxhZ3MpOworCisJCURCR19UWF9MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiBzdGF0dXM7CisJfQorCisJREJHX0FTU0VSVChwQWRhcHRlci0+VHhSaW5nLm5CdXN5U2VuZCA8PSBOVU1fVENCKTsKKworCURCR19UWF9MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogbmljX3NlbmRfcGFja2V0IC0gTklDIHNwZWNpZmljIHNlbmQgaGFuZGxlciBmb3IgdmVyc2lvbiBCIHNpbGljb24uCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKKyAqIEBwTXBUY2I6IHBvaW50ZXIgdG8gTVBfVENCCisgKgorICogUmV0dXJucyAwIG9yIGVycm5vLgorICovCitzdGF0aWMgaW50IG5pY19zZW5kX3BhY2tldChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyLCBQTVBfVENCIHBNcFRjYikKK3sKKwl1aW50MzJfdCBsb29wSW5kZXg7CisJVFhfREVTQ19FTlRSWV90IEN1ckRlc2NbMjRdOworCXVpbnQzMl90IEZyYWdtZW50TnVtYmVyID0gMDsKKwl1aW50MzJfdCBpVGhpc0NvcHksIGlSZW1haW5kZXI7CisJc3RydWN0IHNrX2J1ZmYgKnBQYWNrZXQgPSBwTXBUY2ItPlBhY2tldDsKKwl1aW50MzJfdCBGcmFnTGlzdENvdW50ID0gc2tiX3NoaW5mbyhwUGFja2V0KS0+bnJfZnJhZ3MgKyAxOworCXN0cnVjdCBza2JfZnJhZ19zdHJ1Y3QgKnBGcmFnTGlzdCA9ICZza2Jfc2hpbmZvKHBQYWNrZXQpLT5mcmFnc1swXTsKKwl1bnNpZ25lZCBsb25nIGxvY2tmbGFnczEsIGxvY2tmbGFnczI7CisKKwlEQkdfVFhfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUGFydCBvZiB0aGUgb3B0aW1pemF0aW9ucyBvZiB0aGlzIHNlbmQgcm91dGluZSByZXN0cmljdCB1cyB0bworCSAqIHNlbmRpbmcgMjQgZnJhZ21lbnRzIGF0IGEgcGFzcy4gIEluIHByYWN0aWNlIHdlIHNob3VsZCBuZXZlciBzZWUKKwkgKiBtb3JlIHRoYW4gNSBmcmFnbWVudHMuCisJICoKKwkgKiBOT1RFOiBUaGUgb2xkZXIgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIChiZWxvdykgY2FuIGhhbmRsZSBhbnkKKwkgKiBudW1iZXIgb2YgZnJhZ21lbnRzLiBJZiBuZWVkZWQsIHdlIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24sCisJICogYWx0aG91Z2ggaXQgaXMgbGVzcyBlZmZpY2llbnQuCisJICovCisJaWYgKEZyYWdMaXN0Q291bnQgPiAyMykgeworCQlEQkdfVFhfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwltZW1zZXQoQ3VyRGVzYywgMCwgc2l6ZW9mKFRYX0RFU0NfRU5UUllfdCkgKiAoRnJhZ0xpc3RDb3VudCArIDEpKTsKKworCWZvciAobG9vcEluZGV4ID0gMDsgbG9vcEluZGV4IDwgRnJhZ0xpc3RDb3VudDsgbG9vcEluZGV4KyspIHsKKwkJLyogSWYgdGhlcmUgaXMgc29tZXRoaW5nIGluIHRoaXMgZWxlbWVudCwgbGV0cyBnZXQgYQorCQkgKiBkZXNjcmlwdG9yIGZyb20gdGhlIHJpbmcgYW5kIGdldCB0aGUgbmVjZXNzYXJ5IGRhdGEKKwkJICovCisJCWlmIChsb29wSW5kZXggPT0gMCkgeworCQkJLyogSWYgdGhlIGZyYWdtZW50cyBhcmUgc21hbGxlciB0aGFuIGEgc3RhbmRhcmQgTVRVLAorCQkJICogdGhlbiBtYXAgdGhlbSB0byBhIHNpbmdsZSBkZXNjcmlwdG9yIGluIHRoZSBUeAorCQkJICogRGVzYyByaW5nLiBIb3dldmVyLCBpZiB0aGV5J3JlIGxhcmdlciwgYXMgaXMKKwkJCSAqIHBvc3NpYmxlIHdpdGggc3VwcG9ydCBmb3IganVtYm8gcGFja2V0cywgdGhlbgorCQkJICogc3BsaXQgdGhlbSBlYWNoIGFjcm9zcyAyIGRlc2NyaXB0b3JzLgorCQkJICoKKwkJCSAqIFRoaXMgd2lsbCB3b3JrIHVudGlsIHdlIGRldGVybWluZSB3aHkgdGhlIGhhcmR3YXJlCisJCQkgKiBkb2Vzbid0IHNlZW0gdG8gbGlrZSBsYXJnZSBmcmFnbWVudHMuCisJCQkgKi8KKwkJCWlmICgocFBhY2tldC0+bGVuIC0gcFBhY2tldC0+ZGF0YV9sZW4pIDw9IDE1MTQpIHsKKwkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICAgICJHb3QgcGFja2V0IG9mIGxlbmd0aCAlZCwgIgorCQkJCSAgICAgICAiZmlsbGluZyBkZXNjIGVudHJ5ICVkLCAiCisJCQkJICAgICAgICJUQ0I6IDB4JXBcbiIsCisJCQkJICAgICAgIChwUGFja2V0LT5sZW4gLSBwUGFja2V0LT5kYXRhX2xlbiksCisJCQkJICAgICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLgorCQkJCSAgICAgICB2YWwsIHBNcFRjYik7CisKKwkJCQlDdXJEZXNjW0ZyYWdtZW50TnVtYmVyXS5EYXRhQnVmZmVyUHRySGlnaCA9IDA7CisKKwkJCQlDdXJEZXNjW0ZyYWdtZW50TnVtYmVyXS53b3JkMi5iaXRzLgorCQkJCSAgICBsZW5ndGhfaW5fYnl0ZXMgPQorCQkJCSAgICBwUGFja2V0LT5sZW4gLSBwUGFja2V0LT5kYXRhX2xlbjsKKworCQkJCS8qIE5PVEU6IEhlcmUsIHRoZSBkbWFfYWRkcl90IHJldHVybmVkIGZyb20KKwkJCQkgKiBwY2lfbWFwX3NpbmdsZSgpIGlzIGltcGxpY2l0bHkgY2FzdCBhcyBhCisJCQkJICogdWludDMyX3QuIEFsdGhvdWdoIGRtYV9hZGRyX3QgY2FuIGJlCisJCQkJICogNjQtYml0LCB0aGUgYWRkcmVzcyByZXR1cm5lZCBieQorCQkJCSAqIHBjaV9tYXBfc2luZ2xlKCkgaXMgYWx3YXlzIDMyLWJpdAorCQkJCSAqIGFkZHJlc3NhYmxlIChhcyBkZWZpbmVkIGJ5IHRoZSBwY2kvZG1hCisJCQkJICogc3Vic3lzdGVtKQorCQkJCSAqLworCQkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXIrK10uRGF0YUJ1ZmZlclB0ckxvdyA9CisJCQkJICAgIHBjaV9tYXBfc2luZ2xlKHBBZGFwdGVyLT5wZGV2LAorCQkJCQkJICAgcFBhY2tldC0+ZGF0YSwKKwkJCQkJCSAgIHBQYWNrZXQtPmxlbiAtCisJCQkJCQkgICBwUGFja2V0LT5kYXRhX2xlbiwKKwkJCQkJCSAgIFBDSV9ETUFfVE9ERVZJQ0UpOworCQkJfSBlbHNlIHsKKwkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICAgICJHb3QgcGFja2V0IG9mIGxlbmd0aCAlZCwgIgorCQkJCSAgICAgICAiZmlsbGluZyBkZXNjIGVudHJ5ICVkLCAiCisJCQkJICAgICAgICJUQ0I6IDB4JXBcbiIsCisJCQkJICAgICAgIChwUGFja2V0LT5sZW4gLSBwUGFja2V0LT5kYXRhX2xlbiksCisJCQkJICAgICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLgorCQkJCSAgICAgICB2YWwsIHBNcFRjYik7CisKKwkJCQlDdXJEZXNjW0ZyYWdtZW50TnVtYmVyXS5EYXRhQnVmZmVyUHRySGlnaCA9IDA7CisKKwkJCQlDdXJEZXNjW0ZyYWdtZW50TnVtYmVyXS53b3JkMi5iaXRzLgorCQkJCSAgICBsZW5ndGhfaW5fYnl0ZXMgPQorCQkJCSAgICAoKHBQYWNrZXQtPmxlbiAtIHBQYWNrZXQtPmRhdGFfbGVuKSAvIDIpOworCisJCQkJLyogTk9URTogSGVyZSwgdGhlIGRtYV9hZGRyX3QgcmV0dXJuZWQgZnJvbQorCQkJCSAqIHBjaV9tYXBfc2luZ2xlKCkgaXMgaW1wbGljaXRseSBjYXN0IGFzIGEKKwkJCQkgKiB1aW50MzJfdC4gQWx0aG91Z2ggZG1hX2FkZHJfdCBjYW4gYmUKKwkJCQkgKiA2NC1iaXQsIHRoZSBhZGRyZXNzIHJldHVybmVkIGJ5CisJCQkJICogcGNpX21hcF9zaW5nbGUoKSBpcyBhbHdheXMgMzItYml0CisJCQkJICogYWRkcmVzc2FibGUgKGFzIGRlZmluZWQgYnkgdGhlIHBjaS9kbWEKKwkJCQkgKiBzdWJzeXN0ZW0pCisJCQkJICovCisJCQkJQ3VyRGVzY1tGcmFnbWVudE51bWJlcisrXS5EYXRhQnVmZmVyUHRyTG93ID0KKwkJCQkgICAgcGNpX21hcF9zaW5nbGUocEFkYXB0ZXItPnBkZXYsCisJCQkJCQkgICBwUGFja2V0LT5kYXRhLAorCQkJCQkJICAgKChwUGFja2V0LT5sZW4gLQorCQkJCQkJICAgICBwUGFja2V0LT5kYXRhX2xlbikgLyAyKSwKKwkJCQkJCSAgIFBDSV9ETUFfVE9ERVZJQ0UpOworCQkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXJdLkRhdGFCdWZmZXJQdHJIaWdoID0gMDsKKworCQkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXJdLndvcmQyLmJpdHMuCisJCQkJICAgIGxlbmd0aF9pbl9ieXRlcyA9CisJCQkJICAgICgocFBhY2tldC0+bGVuIC0gcFBhY2tldC0+ZGF0YV9sZW4pIC8gMik7CisKKwkJCQkvKiBOT1RFOiBIZXJlLCB0aGUgZG1hX2FkZHJfdCByZXR1cm5lZCBmcm9tCisJCQkJICogcGNpX21hcF9zaW5nbGUoKSBpcyBpbXBsaWNpdGx5IGNhc3QgYXMgYQorCQkJCSAqIHVpbnQzMl90LiBBbHRob3VnaCBkbWFfYWRkcl90IGNhbiBiZQorCQkJCSAqIDY0LWJpdCwgdGhlIGFkZHJlc3MgcmV0dXJuZWQgYnkKKwkJCQkgKiBwY2lfbWFwX3NpbmdsZSgpIGlzIGFsd2F5cyAzMi1iaXQKKwkJCQkgKiBhZGRyZXNzYWJsZSAoYXMgZGVmaW5lZCBieSB0aGUgcGNpL2RtYQorCQkJCSAqIHN1YnN5c3RlbSkKKwkJCQkgKi8KKwkJCQlDdXJEZXNjW0ZyYWdtZW50TnVtYmVyKytdLkRhdGFCdWZmZXJQdHJMb3cgPQorCQkJCSAgICBwY2lfbWFwX3NpbmdsZShwQWRhcHRlci0+cGRldiwKKwkJCQkJCSAgIHBQYWNrZXQtPmRhdGEgKworCQkJCQkJICAgKChwUGFja2V0LT5sZW4gLQorCQkJCQkJICAgICBwUGFja2V0LT5kYXRhX2xlbikgLyAyKSwKKwkJCQkJCSAgICgocFBhY2tldC0+bGVuIC0KKwkJCQkJCSAgICAgcFBhY2tldC0+ZGF0YV9sZW4pIC8gMiksCisJCQkJCQkgICBQQ0lfRE1BX1RPREVWSUNFKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJCSAgICAgICAiR290IHBhY2tldCBvZiBsZW5ndGggJWQsIgorCQkJICAgICAgICJmaWxsaW5nIGRlc2MgZW50cnkgJWRcbiIKKwkJCSAgICAgICAiVENCOiAweCVwXG4iLAorCQkJICAgICAgIHBGcmFnTGlzdFtsb29wSW5kZXhdLnNpemUsCisJCQkgICAgICAgcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMudmFsLAorCQkJICAgICAgIHBNcFRjYik7CisKKwkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXJdLkRhdGFCdWZmZXJQdHJIaWdoID0gMDsKKworCQkJQ3VyRGVzY1tGcmFnbWVudE51bWJlcl0ud29yZDIuYml0cy5sZW5ndGhfaW5fYnl0ZXMgPQorCQkJICAgIHBGcmFnTGlzdFtsb29wSW5kZXggLSAxXS5zaXplOworCisJCQkvKiBOT1RFOiBIZXJlLCB0aGUgZG1hX2FkZHJfdCByZXR1cm5lZCBmcm9tCisJCQkgKiBwY2lfbWFwX3BhZ2UoKSBpcyBpbXBsaWNpdGx5IGNhc3QgYXMgYSB1aW50MzJfdC4KKwkJCSAqIEFsdGhvdWdoIGRtYV9hZGRyX3QgY2FuIGJlIDY0LWJpdCwgdGhlIGFkZHJlc3MKKwkJCSAqIHJldHVybmVkIGJ5IHBjaV9tYXBfcGFnZSgpIGlzIGFsd2F5cyAzMi1iaXQKKwkJCSAqIGFkZHJlc3NhYmxlIChhcyBkZWZpbmVkIGJ5IHRoZSBwY2kvZG1hIHN1YnN5c3RlbSkKKwkJCSAqLworCQkJQ3VyRGVzY1tGcmFnbWVudE51bWJlcisrXS5EYXRhQnVmZmVyUHRyTG93ID0KKwkJCSAgICBwY2lfbWFwX3BhZ2UocEFkYXB0ZXItPnBkZXYsCisJCQkJCSBwRnJhZ0xpc3RbbG9vcEluZGV4IC0gMV0ucGFnZSwKKwkJCQkJIHBGcmFnTGlzdFtsb29wSW5kZXggLSAxXS5wYWdlX29mZnNldCwKKwkJCQkJIHBGcmFnTGlzdFtsb29wSW5kZXggLSAxXS5zaXplLAorCQkJCQkgUENJX0RNQV9UT0RFVklDRSk7CisJCX0KKwl9CisKKwlpZiAoRnJhZ21lbnROdW1iZXIgPT0gMCkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgIk5vLiBmcmFncyBpcyAwXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJaWYgKHBBZGFwdGVyLT51aUxpbmtTcGVlZCA9PSBUUlVFUEhZX1NQRUVEXzEwMDBNQlBTKSB7CisJCWlmICgrK3BBZGFwdGVyLT5UeFJpbmcuVHhQYWNrZXRzU2luY2VMYXN0aW50ZXJydXB0ID09CisJCSAgICBwQWRhcHRlci0+UmVnaXN0cnlUeE51bUJ1ZmZlcnMpIHsKKwkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXIgLSAxXS53b3JkMy52YWx1ZSA9IDB4NTsKKwkJCXBBZGFwdGVyLT5UeFJpbmcuVHhQYWNrZXRzU2luY2VMYXN0aW50ZXJydXB0ID0gMDsKKwkJfSBlbHNlIHsKKwkJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXIgLSAxXS53b3JkMy52YWx1ZSA9IDB4MTsKKwkJfQorCX0gZWxzZSB7CisJCUN1ckRlc2NbRnJhZ21lbnROdW1iZXIgLSAxXS53b3JkMy52YWx1ZSA9IDB4NTsKKwl9CisKKwlDdXJEZXNjWzBdLndvcmQzLmJpdHMuZiA9IDE7CisKKwlwTXBUY2ItPldySW5kZXhTdGFydCA9IHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZDsKKwlwTXBUY2ItPlBhY2tldFN0YWxlQ291bnQgPSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBBZGFwdGVyLT5TZW5kSFdMb2NrLCBsb2NrZmxhZ3MxKTsKKworCWlUaGlzQ29weSA9CisJICAgIE5VTV9ERVNDX1BFUl9SSU5HX1RYIC0gcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMudmFsOworCisJaWYgKGlUaGlzQ29weSA+PSBGcmFnbWVudE51bWJlcikgeworCQlpUmVtYWluZGVyID0gMDsKKwkJaVRoaXNDb3B5ID0gRnJhZ21lbnROdW1iZXI7CisJfSBlbHNlIHsKKwkJaVJlbWFpbmRlciA9IEZyYWdtZW50TnVtYmVyIC0gaVRoaXNDb3B5OworCX0KKworCW1lbWNweShwQWRhcHRlci0+VHhSaW5nLnBUeERlc2NSaW5nVmEgKworCSAgICAgICBwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQuYml0cy52YWwsIEN1ckRlc2MsCisJICAgICAgIHNpemVvZihUWF9ERVNDX0VOVFJZX3QpICogaVRoaXNDb3B5KTsKKworCXBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnZhbCArPSBpVGhpc0NvcHk7CisKKwlpZiAoKHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnZhbCA9PSAwKSB8fAorCSAgICAocEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMudmFsID09CisJICAgICBOVU1fREVTQ19QRVJfUklOR19UWCkpIHsKKwkJaWYgKHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLndyYXApIHsKKwkJCXBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC52YWx1ZSA9IDA7CisJCX0gZWxzZSB7CisJCQlwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQudmFsdWUgPSAweDQwMDsKKwkJfQorCX0KKworCWlmIChpUmVtYWluZGVyKSB7CisJCW1lbWNweShwQWRhcHRlci0+VHhSaW5nLnBUeERlc2NSaW5nVmEsCisJCSAgICAgICBDdXJEZXNjICsgaVRoaXNDb3B5LAorCQkgICAgICAgc2l6ZW9mKFRYX0RFU0NfRU5UUllfdCkgKiBpUmVtYWluZGVyKTsKKworCQlwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQuYml0cy52YWwgKz0gaVJlbWFpbmRlcjsKKwl9CisKKwlpZiAocEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMudmFsID09IDApIHsKKwkJaWYgKHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC52YWx1ZSkgeworCQkJcE1wVGNiLT5XckluZGV4LnZhbHVlID0gTlVNX0RFU0NfUEVSX1JJTkdfVFggLSAxOworCQl9IGVsc2UgeworCQkJcE1wVGNiLT5XckluZGV4LnZhbHVlID0KKwkJCSAgICAweDQwMCB8IChOVU1fREVTQ19QRVJfUklOR19UWCAtIDEpOworCQl9CisJfSBlbHNlIHsKKwkJcE1wVGNiLT5XckluZGV4LnZhbHVlID0KKwkJICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC52YWx1ZSAtIDE7CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBBZGFwdGVyLT5UQ0JTZW5kUUxvY2ssIGxvY2tmbGFnczIpOworCisJaWYgKHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRUYWlsKSB7CisJCXBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRUYWlsLT5OZXh0ID0gcE1wVGNiOworCX0gZWxzZSB7CisJCXBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkID0gcE1wVGNiOworCX0KKworCXBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRUYWlsID0gcE1wVGNiOworCisJREJHX0FTU0VSVChwTXBUY2ItPk5leHQgPT0gTlVMTCk7CisKKwlwQWRhcHRlci0+VHhSaW5nLm5CdXN5U2VuZCsrOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzMik7CisKKwkvKiBXcml0ZSB0aGUgbmV3IHdyaXRlIHBvaW50ZXIgYmFjayB0byB0aGUgZGV2aWNlLiAqLworCXdyaXRlbChwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQudmFsdWUsCisJICAgICAgICZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhkbWEuc2VydmljZV9yZXF1ZXN0LnZhbHVlKTsKKworCS8qIEZvciBHaWcgb25seSwgd2UgdXNlIFR4IEludGVycnVwdCBjb2FsZXNjaW5nLiAgRW5hYmxlIHRoZSBzb2Z0d2FyZQorCSAqIHRpbWVyIHRvIHdha2UgdXMgdXAgaWYgdGhpcyBwYWNrZXQgaXNuJ3QgZm9sbG93ZWQgYnkgTiBtb3JlLgorCSAqLworCWlmIChwQWRhcHRlci0+dWlMaW5rU3BlZWQgPT0gVFJVRVBIWV9TUEVFRF8xMDAwTUJQUykgeworCQl3cml0ZWwocEFkYXB0ZXItPlJlZ2lzdHJ5VHhUaW1lSW50ZXJ2YWwgKiBOQU5PX0lOX0FfTUlDUk8sCisJCSAgICAgICAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPmdsb2JhbC53YXRjaGRvZ190aW1lcik7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlNlbmRIV0xvY2ssIGxvY2tmbGFnczEpOworCisJREJHX1RYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIE5PVEU6IEZvciBub3csIGtlZXAgdGhpcyBvbGRlciB2ZXJzaW9uIG9mIE5JQ1NlbmRQYWNrZXQgYXJvdW5kIGZvcgorICogcmVmZXJlbmNlLCBldmVuIHRob3VnaCBpdCdzIG5vdCB1c2VkCisgKi8KKyNpZiAwCisKKy8qKgorICogTklDU2VuZFBhY2tldCAtIE5JQyBzcGVjaWZpYyBzZW5kIGhhbmRsZXIuCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKKyAqIEBwTXBUY2I6IHBvaW50ZXIgdG8gTVBfVENCCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2NlcywgZXJybm8gb24gZmFpbHVyZS4KKyAqCisgKiBUaGlzIHZlcnNpb24gb2YgdGhlIHNlbmQgcm91dGluZSBpcyBkZXNpZ25lZCBmb3IgdmVyc2lvbiBBIHNpbGljb24uCisgKiBBc3N1bXB0aW9uIC0gU2VuZCBzcGlubG9jayBoYXMgYmVlbiBhY3F1aXJlZC4KKyAqLworc3RhdGljIGludCBuaWNfc2VuZF9wYWNrZXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwgUE1QX1RDQiBwTXBUY2IpCit7CisJdWludDMyX3QgbG9vcEluZGV4LCBmcmFnSW5kZXgsIGxvb3BFbmQ7CisJdWludDMyX3QgaVNwbGl0Rmlyc3RFbGVtZW50ID0gMDsKKwl1aW50MzJfdCBTZWdtZW50U2l6ZSA9IDA7CisJVFhfREVTQ19FTlRSWV90IEN1ckRlc2M7CisJVFhfREVTQ19FTlRSWV90ICpDdXJEZXNjUG9zdENvcHkgPSBOVUxMOworCXVpbnQzMl90IFNsb3RzQXZhaWxhYmxlOworCURNQTEwV190IFNlcnZpY2VDb21wbGV0ZTsKKwl1bnNpZ25lZCBpbnQgbG9ja2ZsYWdzMSwgbG9ja2ZsYWdzMjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqcFBhY2tldCA9IHBNcFRjYi0+UGFja2V0OworCXVpbnQzMl90IEZyYWdMaXN0Q291bnQgPSBza2Jfc2hpbmZvKHBQYWNrZXQpLT5ucl9mcmFncyArIDE7CisJc3RydWN0IHNrYl9mcmFnX3N0cnVjdCAqcEZyYWdMaXN0ID0gJnNrYl9zaGluZm8ocFBhY2tldCktPmZyYWdzWzBdOworCisJREJHX1RYX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCVNlcnZpY2VDb21wbGV0ZS52YWx1ZSA9CisJCXJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhkbWEuTmV3U2VydmljZUNvbXBsZXRlLnZhbHVlKTsKKworCS8qCisJICogQXR0ZW1wdCB0byBmaXggVFdPIGhhcmR3YXJlIGJ1Z3M6CisJICogMSkgIE5FVkVSIHdyaXRlIGFuIG9kZCBudW1iZXIgb2YgZGVzY3JpcHRvcnMuCisJICogMikgIElmIHBhY2tldCBsZW5ndGggaXMgbGVzcyB0aGFuIE5JQ19NSU5fUEFDS0VUX1NJWkUsIHRoZW4gcGFkIHRoZQorCSAqICAgICBwYWNrZXQgdG8gTklDX01JTl9QQUNLRVRfU0laRSBieXRlcyBieSBhZGRpbmcgYSBuZXcgbGFzdAorCSAqICAgICBkZXNjcmlwdG9yIElOIEhBTEYgRFVQTEVYIE1PREUgT05MWQorCSAqIE5PVEUgdGhhdCAoMikgaW50ZXJhY3RzIHdpdGggKDEpLiAgSWYgdGhlIHBhY2tldCBpcyBsZXNzIHRoYW4KKwkgKiBOSUNfTUlOX1BBQ0tFVF9TSVpFIGJ5dGVzIHRoZW4gd2Ugd2lsbCBhcHBlbmQgYSBkZXNjcmlwdG9yLgorCSAqIFRoZXJlZm9yZSBpZiBpdCBpcyBldmVuIG5vdywgaXQgd2lsbCBldmVudHVhbGx5IGVuZCB1cCBvZGQsIGFuZAorCSAqIHNvIHdpbGwgbmVlZCBhZGp1c3RpbmcuCisJICoKKwkgKiBWTEFOIHRhZ3MgZ2V0IGludm9sdmVkIHNpbmNlIFZMQU4gdGFncyBhZGQgYW5vdGhlciBvbmUgb3IgdHdvCisJICogc2VnbWVudHMuCisJICovCisJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCSAgICAgICAicE1wVGNiLT5QYWNrZXRMZW5ndGg6ICVkXG4iLCBwTXBUY2ItPlBhY2tldExlbmd0aCk7CisKKwlpZiAoKHBBZGFwdGVyLT51aUR1cGxleE1vZGUgPT0gMCkKKwkgICAgJiYgKHBNcFRjYi0+UGFja2V0TGVuZ3RoIDwgTklDX01JTl9QQUNLRVRfU0laRSkpIHsKKwkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkgICAgICAgIkhBTEYgRFVQTEVYIG1vZGUgQU5EIGxlbiA8IE1JTl9QS1RfU0laRVxuIik7CisJCWlmICgoRnJhZ0xpc3RDb3VudCAmIDB4MSkgPT0gMCkgeworCQkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICAgICJFdmVuIG51bWJlciBvZiBkZXNjcywgc3BsaXQgMXN0IGVsZW1cbiIpOworCQkJaVNwbGl0Rmlyc3RFbGVtZW50ID0gMTsKKwkJCS8vU2VnbWVudFNpemUgPSBwRnJhZ0xpc3RbMF0uc2l6ZSAvIDI7CisJCQlTZWdtZW50U2l6ZSA9IChwUGFja2V0LT5sZW4gLSBwUGFja2V0LT5kYXRhX2xlbikgLyAyOworCQl9CisJfSBlbHNlIGlmIChGcmFnTGlzdENvdW50ICYgMHgxKSB7CisJCURCR19UWChldDEzMXhfZGJnaW5mbywgIk9kZCBudW1iZXIgb2YgZGVzY3MsIHNwbGl0IDFzdCBlbGVtXG4iKTsKKworCQlpU3BsaXRGaXJzdEVsZW1lbnQgPSAxOworCQkvL1NlZ21lbnRTaXplID0gcEZyYWdMaXN0WzBdLnNpemUgLyAyOworCQlTZWdtZW50U2l6ZSA9IChwUGFja2V0LT5sZW4gLSBwUGFja2V0LT5kYXRhX2xlbikgLyAyOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+U2VuZEhXTG9jaywgbG9ja2ZsYWdzMSk7CisKKwlpZiAocEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMuc2Vydl9yZXFfd3JhcCA9PQorCSAgICBTZXJ2aWNlQ29tcGxldGUuYml0cy5zZXJ2X2NwbF93cmFwKSB7CisJCS8qIFRoZSByaW5nIGhhc24ndCB3cmFwcGVkLiAgU2xvdHMgYXZhaWxhYmxlIHNob3VsZCBiZQorCQkgKiAoUklOR19TSVpFKSAtICB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRlcnMuCisJCSAqLworCQlTbG90c0F2YWlsYWJsZSA9IE5VTV9ERVNDX1BFUl9SSU5HX1RYIC0KKwkJICAgIChwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQuYml0cy5zZXJ2X3JlcSAtCisJCSAgICAgU2VydmljZUNvbXBsZXRlLmJpdHMuc2Vydl9jcGwpOworCX0gZWxzZSB7CisJCS8qIFRoZSByaW5nIGhhcyB3cmFwcGVkLiAgU2xvdHMgYXZhaWxhYmxlIHNob3VsZCBiZSB0aGUKKwkJICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRlcnMuCisJCSAqLworCQlTbG90c0F2YWlsYWJsZSA9IFNlcnZpY2VDb21wbGV0ZS5iaXRzLnNlcnZfY3BsIC0KKwkJICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnNlcnZfcmVxOworCX0KKworCWlmICgoRnJhZ0xpc3RDb3VudCArIGlTcGxpdEZpcnN0RWxlbWVudCkgPiBTbG90c0F2YWlsYWJsZSkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCSAgICAiTm90IEVub3VnaCBTcGFjZSBpbiBUeCBEZXNjIFJpbmdcbiIpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+U2VuZEhXTG9jaywgbG9ja2ZsYWdzMSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWxvb3BFbmQgPSAoRnJhZ0xpc3RDb3VudCkgKyBpU3BsaXRGaXJzdEVsZW1lbnQ7CisJZnJhZ0luZGV4ID0gMDsKKworCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkgICAgICAgIlRDQiAgICAgICAgICAgOiAweCVwXG4iCisJICAgICAgICJQYWNrZXQgKFNLQikgIDogMHglcFx0IFBhY2tldC0+bGVuOiAlZFx0IFBhY2tldC0+ZGF0YV9sZW46ICVkXG4iCisJICAgICAgICJGcmFnTGlzdENvdW50IDogJWRcdCBpU3BsaXRGaXJzdEVsZW1lbnQ6ICVkXHQgbG9vcEVuZDolZFxuIiwKKwkgICAgICAgcE1wVGNiLAorCSAgICAgICBwUGFja2V0LCBwUGFja2V0LT5sZW4sIHBQYWNrZXQtPmRhdGFfbGVuLAorCSAgICAgICBGcmFnTGlzdENvdW50LCBpU3BsaXRGaXJzdEVsZW1lbnQsIGxvb3BFbmQpOworCisJZm9yIChsb29wSW5kZXggPSAwOyBsb29wSW5kZXggPCBsb29wRW5kOyBsb29wSW5kZXgrKykgeworCQlpZiAobG9vcEluZGV4ID4gaVNwbGl0Rmlyc3RFbGVtZW50KSB7CisJCQlmcmFnSW5kZXgrKzsKKwkJfQorCisJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJICAgICAgICJJbiBsb29wLCBsb29wSW5kZXg6ICVkXHQgZnJhZ0luZGV4OiAlZFxuIiwgbG9vcEluZGV4LAorCQkgICAgICAgZnJhZ0luZGV4KTsKKworCQkvKiBJZiB0aGVyZSBpcyBzb21ldGhpbmcgaW4gdGhpcyBlbGVtZW50LCBsZXQncyBnZXQgYQorCQkgKiBkZXNjcmlwdG9yIGZyb20gdGhlIHJpbmcgYW5kIGdldCB0aGUgbmVjZXNzYXJ5IGRhdGEKKwkJICovCisJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJICAgICAgICJQYWNrZXQgTGVuZ3RoICVkLCIKKwkJICAgICAgICJmaWxsaW5nIGRlc2MgZW50cnkgJWRcbiIsCisJCSAgICAgICBwUGFja2V0LT5sZW4sCisJCSAgICAgICBwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQuYml0cy5zZXJ2X3JlcSk7CisKKwkJLy8gTk9URSAtIFNob3VsZCB3ZSBkbyBhIHBhcmFub2lhIGNoZWNrIGhlcmUgdG8gbWFrZSBzdXJlIHRoZSBmcmFnbWVudAorCQkvLyBhY3R1YWxseSBoYXMgYSBsZW5ndGg/IEl0J3MgSElHSExZIHVubGlrZWx5IHRoZSBmcmFnbWVudCB3b3VsZAorCQkvLyBjb250YWluIG5vIGRhdGEuLi4KKwkJaWYgKDEpIHsKKwkJCS8vIE5PVEUgLSBDdXJyZW50bHkgYWx3YXlzIGdldHRpbmcgMzItYml0IGFkZHJzLCBhbmQgZG1hX2FkZHJfdCBpcworCQkJLy8gICAgICAgIG9ubHkgMzItYml0LCBzbyBsZWF2ZSAiaGlnaCIgcHRyIHZhbHVlIG91dCBmb3Igbm93CisJCQlDdXJEZXNjLkRhdGFCdWZmZXJQdHJIaWdoID0gMDsKKworCQkJQ3VyRGVzYy53b3JkMi52YWx1ZSA9IDA7CisJCQlDdXJEZXNjLndvcmQzLnZhbHVlID0gMDsKKworCQkJaWYgKGZyYWdJbmRleCA9PSAwKSB7CisJCQkJaWYgKGlTcGxpdEZpcnN0RWxlbWVudCkgeworCQkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJCSAgICAgICAiU3BsaXQgZmlyc3QgZWxlbWVudDogWUVTXG4iKTsKKworCQkJCQlpZiAobG9vcEluZGV4ID09IDApIHsKKwkJCQkJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJCQkJCSAgICAgICAiR290IGZyYWdtZW50IG9mIGxlbmd0aCAlZCwgZnJhZ0luZGV4OiAlZFxuIiwKKwkJCQkJCSAgICAgICBwUGFja2V0LT5sZW4gLQorCQkJCQkJICAgICAgIHBQYWNrZXQtPmRhdGFfbGVuLAorCQkJCQkJICAgICAgIGZyYWdJbmRleCk7CisJCQkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJCQkgICAgICAgIlNlZ21lbnRTaXplOiAlZFxuIiwKKwkJCQkJCSAgICAgICBTZWdtZW50U2l6ZSk7CisKKwkJCQkJCUN1ckRlc2Mud29yZDIuYml0cy4KKwkJCQkJCSAgICBsZW5ndGhfaW5fYnl0ZXMgPQorCQkJCQkJICAgIFNlZ21lbnRTaXplOworCQkJCQkJQ3VyRGVzYy5EYXRhQnVmZmVyUHRyTG93ID0KKwkJCQkJCSAgICBwY2lfbWFwX3NpbmdsZShwQWRhcHRlci0+CisJCQkJCQkJCSAgIHBkZXYsCisJCQkJCQkJCSAgIHBQYWNrZXQtPgorCQkJCQkJCQkgICBkYXRhLAorCQkJCQkJCQkgICBTZWdtZW50U2l6ZSwKKwkJCQkJCQkJICAgUENJX0RNQV9UT0RFVklDRSk7CisJCQkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJCQkgICAgICAgInBjaV9tYXBfc2luZ2xlKCkgcmV0dXJuczogMHglMDh4XG4iLAorCQkJCQkJICAgICAgIEN1ckRlc2MuCisJCQkJCQkgICAgICAgRGF0YUJ1ZmZlclB0ckxvdyk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJCQkgICAgICAgIkdvdCBmcmFnbWVudCBvZiBsZW5ndGggJWQsIGZyYWdJbmRleDogJWRcbiIsCisJCQkJCQkgICAgICAgcFBhY2tldC0+bGVuIC0KKwkJCQkJCSAgICAgICBwUGFja2V0LT5kYXRhX2xlbiwKKwkJCQkJCSAgICAgICBmcmFnSW5kZXgpOworCQkJCQkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkJICAgICAgICJMZWZ0b3ZlciBTaXplOiAlZFxuIiwKKwkJCQkJCSAgICAgICAocFBhY2tldC0+bGVuIC0KKwkJCQkJCQlwUGFja2V0LT5kYXRhX2xlbiAtCisJCQkJCQkJU2VnbWVudFNpemUpKTsKKworCQkJCQkJQ3VyRGVzYy53b3JkMi5iaXRzLgorCQkJCQkJICAgIGxlbmd0aF9pbl9ieXRlcyA9CisJCQkJCQkgICAgKChwUGFja2V0LT5sZW4gLQorCQkJCQkJICAgICAgcFBhY2tldC0+ZGF0YV9sZW4pIC0KKwkJCQkJCSAgICAgU2VnbWVudFNpemUpOworCQkJCQkJQ3VyRGVzYy5EYXRhQnVmZmVyUHRyTG93ID0KKwkJCQkJCSAgICBwY2lfbWFwX3NpbmdsZShwQWRhcHRlci0+CisJCQkJCQkJCSAgIHBkZXYsCisJCQkJCQkJCSAgIChwUGFja2V0LT4KKwkJCQkJCQkJICAgIGRhdGEgKworCQkJCQkJCQkgICAgU2VnbWVudFNpemUpLAorCQkJCQkJCQkgICAocFBhY2tldC0+CisJCQkJCQkJCSAgICBsZW4gLQorCQkJCQkJCQkgICAgcFBhY2tldC0+CisJCQkJCQkJCSAgICBkYXRhX2xlbiAtCisJCQkJCQkJCSAgICBTZWdtZW50U2l6ZSksCisJCQkJCQkJCSAgIFBDSV9ETUFfVE9ERVZJQ0UpOworCQkJCQkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkJICAgICAgICJwY2lfbWFwX3NpbmdsZSgpIHJldHVybnM6IDB4JTA4eFxuIiwKKwkJCQkJCSAgICAgICBDdXJEZXNjLgorCQkJCQkJICAgICAgIERhdGFCdWZmZXJQdHJMb3cpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkgICAgICAgIlNwbGl0IGZpcnN0IGVsZW1lbnQ6IE5PXG4iKTsKKworCQkJCQlDdXJEZXNjLndvcmQyLmJpdHMubGVuZ3RoX2luX2J5dGVzID0KKwkJCQkJICAgIHBQYWNrZXQtPmxlbiAtIHBQYWNrZXQtPmRhdGFfbGVuOworCisJCQkJCUN1ckRlc2MuRGF0YUJ1ZmZlclB0ckxvdyA9CisJCQkJCSAgICBwY2lfbWFwX3NpbmdsZShwQWRhcHRlci0+cGRldiwKKwkJCQkJCQkgICBwUGFja2V0LT5kYXRhLAorCQkJCQkJCSAgIChwUGFja2V0LT5sZW4gLQorCQkJCQkJCSAgICBwUGFja2V0LT5kYXRhX2xlbiksCisJCQkJCQkJICAgUENJX0RNQV9UT0RFVklDRSk7CisJCQkJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJCQkJICAgICAgICJwY2lfbWFwX3NpbmdsZSgpIHJldHVybnM6IDB4JTA4eFxuIiwKKwkJCQkJICAgICAgIEN1ckRlc2MuRGF0YUJ1ZmZlclB0ckxvdyk7CisJCQkJfQorCQkJfSBlbHNlIHsKKworCQkJCUN1ckRlc2Mud29yZDIuYml0cy5sZW5ndGhfaW5fYnl0ZXMgPQorCQkJCSAgICBwRnJhZ0xpc3RbZnJhZ0luZGV4IC0gMV0uc2l6ZTsKKwkJCQlDdXJEZXNjLkRhdGFCdWZmZXJQdHJMb3cgPQorCQkJCSAgICBwY2lfbWFwX3BhZ2UocEFkYXB0ZXItPnBkZXYsCisJCQkJCQkgcEZyYWdMaXN0W2ZyYWdJbmRleCAtIDFdLnBhZ2UsCisJCQkJCQkgcEZyYWdMaXN0W2ZyYWdJbmRleCAtCisJCQkJCQkJICAgMV0ucGFnZV9vZmZzZXQsCisJCQkJCQkgcEZyYWdMaXN0W2ZyYWdJbmRleCAtIDFdLnNpemUsCisJCQkJCQkgUENJX0RNQV9UT0RFVklDRSk7CisJCQkJREJHX1RYKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgICAgICAicGNpX21hcF9wYWdlKCkgcmV0dXJuczogMHglMDh4XG4iLAorCQkJCSAgICAgICBDdXJEZXNjLkRhdGFCdWZmZXJQdHJMb3cpOworCQkJfQorCisJCQlpZiAobG9vcEluZGV4ID09IDApIHsKKwkJCQkvKiBUaGlzIGlzIHRoZSBmaXJzdCBkZXNjcmlwdG9yIG9mIHRoZSBwYWNrZXQKKwkJCQkgKgorCQkJCSAqIFNldCB0aGUgImYiIGJpdCB0byBpbmRpY2F0ZSB0aGlzIGlzIHRoZQorCQkJCSAqIGZpcnN0IGRlc2NyaXB0b3IgaW4gdGhlIHBhY2tldC4KKwkJCQkgKi8KKwkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICAgICJUaGlzIGlzIG91ciBGSVJTVCBkZXNjcmlwdG9yXG4iKTsKKwkJCQlDdXJEZXNjLndvcmQzLmJpdHMuZiA9IDE7CisKKwkJCQlwTXBUY2ItPldySW5kZXhTdGFydCA9CisJCQkJICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZDsKKwkJCX0KKworCQkJaWYgKChsb29wSW5kZXggPT0gKGxvb3BFbmQgLSAxKSkgJiYKKwkJCSAgICAocEFkYXB0ZXItPnVpRHVwbGV4TW9kZSB8fAorCQkJICAgICAocE1wVGNiLT5QYWNrZXRMZW5ndGggPj0gTklDX01JTl9QQUNLRVRfU0laRSkpKSB7CisJCQkJLyogVGhpcyBpcyB0aGUgTGFzdCBkZXNjcmlwdG9yIG9mIHRoZSBwYWNrZXQgKi8KKwkJCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICAgICJUSElTIGlzIG91ciBMQVNUIGRlc2NyaXB0b3JcbiIpOworCisJCQkJaWYgKHBBZGFwdGVyLT51aUxpbmtTcGVlZCA9PQorCQkJCSAgICBUUlVFUEhZX1NQRUVEXzEwMDBNQlBTKSB7CisJCQkJCWlmICgrK3BBZGFwdGVyLT5UeFJpbmcuCisJCQkJCSAgICBUeFBhY2tldHNTaW5jZUxhc3RpbnRlcnJ1cHQgPj0KKwkJCQkJICAgIHBBZGFwdGVyLT5SZWdpc3RyeVR4TnVtQnVmZmVycykgeworCQkJCQkJQ3VyRGVzYy53b3JkMy52YWx1ZSA9IDB4NTsKKwkJCQkJCXBBZGFwdGVyLT5UeFJpbmcuCisJCQkJCQkgICAgVHhQYWNrZXRzU2luY2VMYXN0aW50ZXJydXB0CisJCQkJCQkgICAgPSAwOworCQkJCQl9IGVsc2UgeworCQkJCQkJQ3VyRGVzYy53b3JkMy52YWx1ZSA9IDB4MTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCUN1ckRlc2Mud29yZDMudmFsdWUgPSAweDU7CisJCQkJfQorCisJCQkJLyogRm9sbG93aW5nIGluZGV4IHdpbGwgYmUgdXNlZCBkdXJpbmcgZnJlZWluZworCQkJCSAqIG9mIHBhY2tldAorCQkJCSAqLworCQkJCXBNcFRjYi0+V3JJbmRleCA9CisJCQkJICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZDsKKwkJCQlwTXBUY2ItPlBhY2tldFN0YWxlQ291bnQgPSAwOworCQkJfQorCisJCQkvKiBDb3B5IHRoZSBkZXNjcmlwdG9yIChmaWxsZWQgYWJvdmUpIGludG8gdGhlCisJCQkgKiBkZXNjcmlwdG9yIHJpbmcgYXQgdGhlIG5leHQgZnJlZSBlbnRyeS4gIEFkdmFuY2UKKwkJCSAqIHRoZSAibmV4dCBmcmVlIGVudHJ5IiB2YXJpYWJsZQorCQkJICovCisJCQltZW1jcHkocEFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhICsKKwkJCSAgICAgICBwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQuYml0cy5zZXJ2X3JlcSwKKwkJCSAgICAgICAmQ3VyRGVzYywgc2l6ZW9mKFRYX0RFU0NfRU5UUllfdCkpOworCisJCQlDdXJEZXNjUG9zdENvcHkgPQorCQkJICAgIHBBZGFwdGVyLT5UeFJpbmcucFR4RGVzY1JpbmdWYSArCisJCQkgICAgcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMuc2Vydl9yZXE7CisKKwkJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJCSAgICAgICAiQ1VSUkVOVCBERVNDUklQVE9SXG4iCisJCQkgICAgICAgIlx0QWRkcmVzcyAgICAgICAgICAgOiAweCVwXG4iCisJCQkgICAgICAgIlx0RGF0YUJ1ZmZlclB0ckhpZ2ggOiAweCUwOHhcbiIKKwkJCSAgICAgICAiXHREYXRhQnVmZmVyUHRyTG93ICA6IDB4JTA4eFxuIgorCQkJICAgICAgICJcdHdvcmQyICAgICAgICAgICAgIDogMHglMDh4XG4iCisJCQkgICAgICAgIlx0d29yZDMgICAgICAgICAgICAgOiAweCUwOHhcbiIsCisJCQkgICAgICAgQ3VyRGVzY1Bvc3RDb3B5LAorCQkJICAgICAgIEN1ckRlc2NQb3N0Q29weS0+RGF0YUJ1ZmZlclB0ckhpZ2gsCisJCQkgICAgICAgQ3VyRGVzY1Bvc3RDb3B5LT5EYXRhQnVmZmVyUHRyTG93LAorCQkJICAgICAgIEN1ckRlc2NQb3N0Q29weS0+d29yZDIudmFsdWUsCisJCQkgICAgICAgQ3VyRGVzY1Bvc3RDb3B5LT53b3JkMy52YWx1ZSk7CisKKwkJCWlmICgrK3BBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnNlcnZfcmVxID49CisJCQkgICAgTlVNX0RFU0NfUEVSX1JJTkdfVFgpIHsKKwkJCQlpZiAocEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMuCisJCQkJICAgIHNlcnZfcmVxX3dyYXApIHsKKwkJCQkJcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLgorCQkJCQkgICAgdmFsdWUgPSAwOworCQkJCX0gZWxzZSB7CisJCQkJCXBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC4KKwkJCQkJICAgIHZhbHVlID0gMHg0MDA7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJaWYgKHBBZGFwdGVyLT51aUR1cGxleE1vZGUgPT0gMCAmJgorCSAgICBwTXBUY2ItPlBhY2tldExlbmd0aCA8IE5JQ19NSU5fUEFDS0VUX1NJWkUpIHsKKwkJLy8gTk9URSAtIFNhbWUgMzIvNjQtYml0IGlzc3VlIGFzIGFib3ZlLi4uCisJCUN1ckRlc2MuRGF0YUJ1ZmZlclB0ckhpZ2ggPSAweDA7CisJCUN1ckRlc2MuRGF0YUJ1ZmZlclB0ckxvdyA9IHBBZGFwdGVyLT5UeFJpbmcucFR4RHVtbXlCbGtQYTsKKwkJQ3VyRGVzYy53b3JkMi52YWx1ZSA9IDA7CisKKwkJaWYgKHBBZGFwdGVyLT51aUxpbmtTcGVlZCA9PSBUUlVFUEhZX1NQRUVEXzEwMDBNQlBTKSB7CisJCQlpZiAoKytwQWRhcHRlci0+VHhSaW5nLlR4UGFja2V0c1NpbmNlTGFzdGludGVycnVwdCA+PQorCQkJICAgIHBBZGFwdGVyLT5SZWdpc3RyeVR4TnVtQnVmZmVycykgeworCQkJCUN1ckRlc2Mud29yZDMudmFsdWUgPSAweDU7CisJCQkJcEFkYXB0ZXItPlR4UmluZy5UeFBhY2tldHNTaW5jZUxhc3RpbnRlcnJ1cHQgPQorCQkJCSAgICAwOworCQkJfSBlbHNlIHsKKwkJCQlDdXJEZXNjLndvcmQzLnZhbHVlID0gMHgxOworCQkJfQorCQl9IGVsc2UgeworCQkJQ3VyRGVzYy53b3JkMy52YWx1ZSA9IDB4NTsKKwkJfQorCisJCUN1ckRlc2Mud29yZDIuYml0cy5sZW5ndGhfaW5fYnl0ZXMgPQorCQkgICAgTklDX01JTl9QQUNLRVRfU0laRSAtIHBNcFRjYi0+UGFja2V0TGVuZ3RoOworCisJCXBNcFRjYi0+V3JJbmRleCA9IHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZDsKKworCQltZW1jcHkocEFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhICsKKwkJICAgICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnNlcnZfcmVxLAorCQkgICAgICAgJkN1ckRlc2MsIHNpemVvZihUWF9ERVNDX0VOVFJZX3QpKTsKKworCQlDdXJEZXNjUG9zdENvcHkgPQorCQkgICAgcEFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhICsKKwkJICAgIHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnNlcnZfcmVxOworCisJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJICAgICAgICJDVVJSRU5UIERFU0NSSVBUT1JcbiIKKwkJICAgICAgICJcdEFkZHJlc3MgICAgICAgICAgIDogMHglcFxuIgorCQkgICAgICAgIlx0RGF0YUJ1ZmZlclB0ckhpZ2ggOiAweCUwOHhcbiIKKwkJICAgICAgICJcdERhdGFCdWZmZXJQdHJMb3cgIDogMHglMDh4XG4iCisJCSAgICAgICAiXHR3b3JkMiAgICAgICAgICAgICA6IDB4JTA4eFxuIgorCQkgICAgICAgIlx0d29yZDMgICAgICAgICAgICAgOiAweCUwOHhcbiIsCisJCSAgICAgICBDdXJEZXNjUG9zdENvcHksCisJCSAgICAgICBDdXJEZXNjUG9zdENvcHktPkRhdGFCdWZmZXJQdHJIaWdoLAorCQkgICAgICAgQ3VyRGVzY1Bvc3RDb3B5LT5EYXRhQnVmZmVyUHRyTG93LAorCQkgICAgICAgQ3VyRGVzY1Bvc3RDb3B5LT53b3JkMi52YWx1ZSwKKwkJICAgICAgIEN1ckRlc2NQb3N0Q29weS0+d29yZDMudmFsdWUpOworCisJCWlmICgrK3BBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLnNlcnZfcmVxID49CisJCSAgICBOVU1fREVTQ19QRVJfUklOR19UWCkgeworCQkJaWYgKHBBZGFwdGVyLT5UeFJpbmcudHhEbWFSZWFkeVRvU2VuZC5iaXRzLgorCQkJICAgIHNlcnZfcmVxX3dyYXApIHsKKwkJCQlwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQudmFsdWUgPSAwOworCQkJfSBlbHNlIHsKKwkJCQlwQWRhcHRlci0+VHhSaW5nLnR4RG1hUmVhZHlUb1NlbmQudmFsdWUgPSAweDQwMDsKKwkJCX0KKwkJfQorCisJCURCR19UWChldDEzMXhfZGJnaW5mbywgIlBhZGRpbmcgZGVzY3JpcHRvciAlZCBieSAlZCBieXRlc1xuIiwKKwkJICAgICAgIC8vcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLnZhbHVlLAorCQkgICAgICAgcEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLmJpdHMuc2Vydl9yZXEsCisJCSAgICAgICBOSUNfTUlOX1BBQ0tFVF9TSVpFIC0gcE1wVGNiLT5QYWNrZXRMZW5ndGgpOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCU2VuZFFMb2NrLCBsb2NrZmxhZ3MyKTsKKworCWlmIChwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kVGFpbCkgeworCQlwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kVGFpbC0+TmV4dCA9IHBNcFRjYjsKKwl9IGVsc2UgeworCQlwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kSGVhZCA9IHBNcFRjYjsKKwl9CisKKwlwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kVGFpbCA9IHBNcFRjYjsKKworCURCR19BU1NFUlQocE1wVGNiLT5OZXh0ID09IE5VTEwpOworCisJcEFkYXB0ZXItPlR4UmluZy5uQnVzeVNlbmQrKzsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5UQ0JTZW5kUUxvY2ssIGxvY2tmbGFnczIpOworCisJLyogV3JpdGUgdGhlIG5ldyB3cml0ZSBwb2ludGVyIGJhY2sgdG8gdGhlIGRldmljZS4gKi8KKwl3cml0ZWwocEFkYXB0ZXItPlR4UmluZy50eERtYVJlYWR5VG9TZW5kLnZhbHVlLAorCSAgICAgICAmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnR4ZG1hLnNlcnZpY2VfcmVxdWVzdC52YWx1ZSk7CisKKyNpZmRlZiBDT05GSUdfRVQxMzFYX0RFQlVHCisJRHVtcERldmljZUJsb2NrKERCR19UWF9PTiwgcEFkYXB0ZXIsIDEpOworI2VuZGlmCisKKwkvKiBGb3IgR2lnIG9ubHksIHdlIHVzZSBUeCBJbnRlcnJ1cHQgY29hbGVzY2luZy4gIEVuYWJsZSB0aGUgc29mdHdhcmUKKwkgKiB0aW1lciB0byB3YWtlIHVzIHVwIGlmIHRoaXMgcGFja2V0IGlzbid0IGZvbGxvd2VkIGJ5IE4gbW9yZS4KKwkgKi8KKwlpZiAocEFkYXB0ZXItPnVpTGlua1NwZWVkID09IFRSVUVQSFlfU1BFRURfMTAwME1CUFMpIHsKKwkJd3JpdGVsKHBBZGFwdGVyLT5SZWdpc3RyeVR4VGltZUludGVydmFsICogTkFOT19JTl9BX01JQ1JPLAorCQkgICAgICAgJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5nbG9iYWwud2F0Y2hkb2dfdGltZXIpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5TZW5kSFdMb2NrLCBsb2NrZmxhZ3MxKTsKKworCURCR19UWF9MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIDA7Cit9CisKKyNlbmRpZgorCisvKioKKyAqIGV0MTMxeF9mcmVlX3NlbmRfcGFja2V0IC0gUmVjeWNsZSBhIE1QX1RDQiwgY29tcGxldGUgdGhlIHBhY2tldCBpZiBuZWNlc3NhcnkKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlcgorICogQHBNcFRjYjogcG9pbnRlciB0byBNUF9UQ0IKKyAqCisgKiBBc3N1bXB0aW9uIC0gU2VuZCBzcGlubG9jayBoYXMgYmVlbiBhY3F1aXJlZAorICovCitfX2lubGluZSB2b2lkIGV0MTMxeF9mcmVlX3NlbmRfcGFja2V0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIsIFBNUF9UQ0IgcE1wVGNiKQoreworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCVRYX0RFU0NfRU5UUllfdCAqZGVzYyA9IE5VTEw7CisJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzID0gJnBBZGFwdGVyLT5uZXRfc3RhdHM7CisKKwlpZiAoTVBfVEVTVF9GTEFHKHBNcFRjYiwgZk1QX0RFU1RfQlJPQUQpKSB7CisJCWF0b21pY19pbmMoJnBBZGFwdGVyLT5TdGF0cy5icmRjc3R4bXQpOworCX0gZWxzZSBpZiAoTVBfVEVTVF9GTEFHKHBNcFRjYiwgZk1QX0RFU1RfTVVMVEkpKSB7CisJCWF0b21pY19pbmMoJnBBZGFwdGVyLT5TdGF0cy5tdWx0aXhtdCk7CisJfSBlbHNlIHsKKwkJYXRvbWljX2luYygmcEFkYXB0ZXItPlN0YXRzLnVuaXhtdCk7CisJfQorCisJaWYgKHBNcFRjYi0+UGFja2V0KSB7CisJCXN0YXRzLT50eF9ieXRlcyArPSBwTXBUY2ItPlBhY2tldC0+bGVuOworCisJCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgVFggZGVzY3JpcHRvcnMgb24gdGhlIHJpbmcKKwkJICogY29ycmVzcG9uZGluZyB0byB0aGlzIHBhY2tldCBhbmQgdW1hcCB0aGUgZnJhZ21lbnRzCisJCSAqIHRoZXkgcG9pbnQgdG8KKwkJICovCisJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJICAgICAgICJVbm1hcCBkZXNjcmlwdG9ycyBIZXJlXG4iCisJCSAgICAgICAiVENCICAgICAgICAgICAgICAgICAgOiAweCVwXG4iCisJCSAgICAgICAiVENCIE5leHQgICAgICAgICAgICAgOiAweCVwXG4iCisJCSAgICAgICAiVENCIFBhY2tldExlbmd0aCAgICAgOiAlZFxuIgorCQkgICAgICAgIlRDQiBXckluZGV4LnZhbHVlICAgIDogMHglMDh4XG4iCisJCSAgICAgICAiVENCIFdySW5kZXguYml0cy52YWwgOiAlZFxuIgorCQkgICAgICAgIlRDQiBXckluZGV4LnZhbHVlICAgIDogMHglMDh4XG4iCisJCSAgICAgICAiVENCIFdySW5kZXguYml0cy52YWwgOiAlZFxuIiwKKwkJICAgICAgIHBNcFRjYiwKKwkJICAgICAgIHBNcFRjYi0+TmV4dCwKKwkJICAgICAgIHBNcFRjYi0+UGFja2V0TGVuZ3RoLAorCQkgICAgICAgcE1wVGNiLT5XckluZGV4U3RhcnQudmFsdWUsCisJCSAgICAgICBwTXBUY2ItPldySW5kZXhTdGFydC5iaXRzLnZhbCwKKwkJICAgICAgIHBNcFRjYi0+V3JJbmRleC52YWx1ZSwKKwkJICAgICAgIHBNcFRjYi0+V3JJbmRleC5iaXRzLnZhbCk7CisKKwkJZG8geworCQkJZGVzYyA9CisJCQkgICAgKFRYX0RFU0NfRU5UUllfdCAqKSAocEFkYXB0ZXItPlR4UmluZy4KKwkJCQkJCSBwVHhEZXNjUmluZ1ZhICsKKwkJCQkJCSBwTXBUY2ItPldySW5kZXhTdGFydC5iaXRzLnZhbCk7CisKKwkJCURCR19UWChldDEzMXhfZGJnaW5mbywKKwkJCSAgICAgICAiQ1VSUkVOVCBERVNDUklQVE9SXG4iCisJCQkgICAgICAgIlx0QWRkcmVzcyAgICAgICAgICAgOiAweCVwXG4iCisJCQkgICAgICAgIlx0RGF0YUJ1ZmZlclB0ckhpZ2ggOiAweCUwOHhcbiIKKwkJCSAgICAgICAiXHREYXRhQnVmZmVyUHRyTG93ICA6IDB4JTA4eFxuIgorCQkJICAgICAgICJcdHdvcmQyICAgICAgICAgICAgIDogMHglMDh4XG4iCisJCQkgICAgICAgIlx0d29yZDMgICAgICAgICAgICAgOiAweCUwOHhcbiIsCisJCQkgICAgICAgZGVzYywKKwkJCSAgICAgICBkZXNjLT5EYXRhQnVmZmVyUHRySGlnaCwKKwkJCSAgICAgICBkZXNjLT5EYXRhQnVmZmVyUHRyTG93LAorCQkJICAgICAgIGRlc2MtPndvcmQyLnZhbHVlLAorCQkJICAgICAgIGRlc2MtPndvcmQzLnZhbHVlKTsKKworCQkJcGNpX3VubWFwX3NpbmdsZShwQWRhcHRlci0+cGRldiwKKwkJCQkJIGRlc2MtPkRhdGFCdWZmZXJQdHJMb3csCisJCQkJCSBkZXNjLT53b3JkMi52YWx1ZSwgUENJX0RNQV9UT0RFVklDRSk7CisKKwkJCWlmICgrK3BNcFRjYi0+V3JJbmRleFN0YXJ0LmJpdHMudmFsID49CisJCQkgICAgTlVNX0RFU0NfUEVSX1JJTkdfVFgpIHsKKwkJCQlpZiAocE1wVGNiLT5XckluZGV4U3RhcnQuYml0cy53cmFwKSB7CisJCQkJCXBNcFRjYi0+V3JJbmRleFN0YXJ0LnZhbHVlID0gMDsKKwkJCQl9IGVsc2UgeworCQkJCQlwTXBUY2ItPldySW5kZXhTdGFydC52YWx1ZSA9IDB4NDAwOworCQkJCX0KKwkJCX0KKwkJfQorCQl3aGlsZSAoZGVzYyAhPSAocEFkYXB0ZXItPlR4UmluZy5wVHhEZXNjUmluZ1ZhICsKKwkJCQlwTXBUY2ItPldySW5kZXguYml0cy52YWwpKTsKKworCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sCisJCSAgICAgICAiRnJlZSBQYWNrZXQgKFNLQikgICA6IDB4JXBcbiIsIHBNcFRjYi0+UGFja2V0KTsKKworCQlkZXZfa2ZyZWVfc2tiX2FueShwTXBUY2ItPlBhY2tldCk7CisJfQorCisJbWVtc2V0KHBNcFRjYiwgMCwgc2l6ZW9mKE1QX1RDQikpOworCisJLyogQWRkIHRoZSBUQ0IgdG8gdGhlIFJlYWR5IFEgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlRDQlJlYWR5UUxvY2ssIGxvY2tmbGFncyk7CisKKwlwQWRhcHRlci0+U3RhdHMub3BhY2tldHMrKzsKKworCWlmIChwQWRhcHRlci0+VHhSaW5nLlRDQlJlYWR5UXVldWVUYWlsKSB7CisJCXBBZGFwdGVyLT5UeFJpbmcuVENCUmVhZHlRdWV1ZVRhaWwtPk5leHQgPSBwTXBUY2I7CisJfSBlbHNlIHsKKwkJLyogQXBwYXJlbnRseSByZWFkeSBRIGlzIGVtcHR5LiAqLworCQlwQWRhcHRlci0+VHhSaW5nLlRDQlJlYWR5UXVldWVIZWFkID0gcE1wVGNiOworCX0KKworCXBBZGFwdGVyLT5UeFJpbmcuVENCUmVhZHlRdWV1ZVRhaWwgPSBwTXBUY2I7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+VENCUmVhZHlRTG9jaywgbG9ja2ZsYWdzKTsKKworCURCR19BU1NFUlQocEFkYXB0ZXItPlR4UmluZy5uQnVzeVNlbmQgPj0gMCk7Cit9CisKKy8qKgorICogZXQxMzF4X2ZyZWVfYnVzeV9zZW5kX3BhY2tldHMgLSBGcmVlIGFuZCBjb21wbGV0ZSB0aGUgc3RvcHBlZCBhY3RpdmUgc2VuZHMKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlcgorICoKKyAqIEFzc3VtcHRpb24gLSBTZW5kIHNwaW5sb2NrIGhhcyBiZWVuIGFjcXVpcmVkCisgKi8KK3ZvaWQgZXQxMzF4X2ZyZWVfYnVzeV9zZW5kX3BhY2tldHMoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlQTVBfVENCIHBNcFRjYjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwRW50cnk7CisJc3RydWN0IHNrX2J1ZmYgKnBQYWNrZXQgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCXVpbnQzMl90IEZyZWVDb3VudGVyID0gMDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnBBZGFwdGVyLT5UeFJpbmcuU2VuZFdhaXRRdWV1ZSkpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnBBZGFwdGVyLT5TZW5kV2FpdExvY2ssIGxvY2tmbGFncyk7CisKKwkJcEFkYXB0ZXItPlR4UmluZy5uV2FpdFNlbmQtLTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlNlbmRXYWl0TG9jaywgbG9ja2ZsYWdzKTsKKworCQlwRW50cnkgPSBwQWRhcHRlci0+VHhSaW5nLlNlbmRXYWl0UXVldWUubmV4dDsKKworCQlwUGFja2V0ID0gTlVMTDsKKwl9CisKKwlwQWRhcHRlci0+VHhSaW5nLm5XYWl0U2VuZCA9IDA7CisKKwkvKiBBbnkgcGFja2V0cyBiZWluZyBzZW50PyBDaGVjayB0aGUgZmlyc3QgVENCIG9uIHRoZSBzZW5kIGxpc3QgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKKworCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCisJd2hpbGUgKChwTXBUY2IgIT0gTlVMTCkgJiYgKEZyZWVDb3VudGVyIDwgTlVNX1RDQikpIHsKKwkJUE1QX1RDQiBwTmV4dCA9IHBNcFRjYi0+TmV4dDsKKworCQlwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kSGVhZCA9IHBOZXh0OworCisJCWlmIChwTmV4dCA9PSBOVUxMKSB7CisJCQlwQWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kVGFpbCA9IE5VTEw7CisJCX0KKworCQlwQWRhcHRlci0+VHhSaW5nLm5CdXN5U2VuZC0tOworCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5UQ0JTZW5kUUxvY2ssIGxvY2tmbGFncyk7CisKKwkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sICJwTXBUY2IgPSAweCVwXG4iLCBwTXBUY2IpOworCisJCUZyZWVDb3VudGVyKys7CisJCU1QX0ZSRUVfU0VORF9QQUNLRVRfRlVOKHBBZGFwdGVyLCBwTXBUY2IpOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCU2VuZFFMb2NrLCBsb2NrZmxhZ3MpOworCisJCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCX0KKworCWlmIChGcmVlQ291bnRlciA9PSBOVU1fVENCKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIk1wRnJlZUJ1c3lTZW5kUGFja2V0cyBleGl0dGVkIGxvb3AgZm9yIGEgYmFkIHJlYXNvblxuIik7CisJCUJVRygpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5UQ0JTZW5kUUxvY2ssIGxvY2tmbGFncyk7CisKKwlwQWRhcHRlci0+VHhSaW5nLm5CdXN5U2VuZCA9IDA7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIGV0MTMxeF9oYW5kbGVfc2VuZF9pbnRlcnJ1cHQgLSBJbnRlcnJ1cHQgaGFuZGxlciBmb3Igc2VuZGluZyBwcm9jZXNzaW5nCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKKyAqCisgKiBSZS1jbGFpbSB0aGUgc2VuZCByZXNvdXJjZXMsIGNvbXBsZXRlIHNlbmRzIGFuZCBnZXQgbW9yZSB0byBzZW5kIGZyb20KKyAqIHRoZSBzZW5kIHdhaXQgcXVldWUuCisgKgorICogQXNzdW1wdGlvbiAtIFNlbmQgc3BpbmxvY2sgaGFzIGJlZW4gYWNxdWlyZWQKKyAqLwordm9pZCBldDEzMXhfaGFuZGxlX3NlbmRfaW50ZXJydXB0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJREJHX1RYX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIE1hcmsgYXMgY29tcGxldGVkIGFueSBwYWNrZXRzIHdoaWNoIGhhdmUgYmVlbiBzZW50IGJ5IHRoZSBkZXZpY2UuICovCisJZXQxMzF4X3VwZGF0ZV90Y2JfbGlzdChwQWRhcHRlcik7CisKKwkvKiBJZiB3ZSBxdWV1ZWQgYW55IHRyYW5zbWl0cyBiZWNhdXNlIHdlIGRpZG4ndCBoYXZlIGFueSBUQ0JzIGVhcmxpZXIsCisJICogZGVxdWV1ZSBhbmQgc2VuZCB0aG9zZSBwYWNrZXRzIG5vdywgYXMgbG9uZyBhcyB3ZSBoYXZlIGZyZWUgVENCcy4KKwkgKi8KKwlldDEzMXhfY2hlY2tfc2VuZF93YWl0X2xpc3QocEFkYXB0ZXIpOworCisJREJHX1RYX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfdXBkYXRlX3RjYl9saXN0IC0gSGVscGVyIHJvdXRpbmUgZm9yIFNlbmQgSW50ZXJydXB0IGhhbmRsZXIKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlcgorICoKKyAqIFJlLWNsYWltcyB0aGUgc2VuZCByZXNvdXJjZXMgYW5kIGNvbXBsZXRlcyBzZW5kcy4gIENhbiBhbHNvIGJlIGNhbGxlZCBhcworICogcGFydCBvZiB0aGUgTklDIHNlbmQgcm91dGluZSB3aGVuIHRoZSAiU2VydmljZUNvbXBsZXRlIiBpbmRpY2F0aW9uIGhhcworICogd3JhcHBlZC4KKyAqLworc3RhdGljIHZvaWQgZXQxMzF4X3VwZGF0ZV90Y2JfbGlzdChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCURNQTEwV190IFNlcnZpY2VDb21wbGV0ZTsKKwlQTVBfVENCIHBNcFRjYjsKKworCVNlcnZpY2VDb21wbGV0ZS52YWx1ZSA9CisJICAgIHJlYWRsKCZwQWRhcHRlci0+Q1NSQWRkcmVzcy0+dHhkbWEuTmV3U2VydmljZUNvbXBsZXRlLnZhbHVlKTsKKworCS8qIEhhcyB0aGUgcmluZyB3cmFwcGVkPyAgUHJvY2VzcyBhbnkgZGVzY3JpcHRvcnMgdGhhdCBkbyBub3QgaGF2ZQorCSAqIHRoZSBzYW1lICJ3cmFwIiBpbmRpY2F0b3IgYXMgdGhlIGN1cnJlbnQgY29tcGxldGlvbiBpbmRpY2F0b3IKKwkgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKKworCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCXdoaWxlIChwTXBUY2IgJiYKKwkgICAgICAgU2VydmljZUNvbXBsZXRlLmJpdHMud3JhcCAhPSBwTXBUY2ItPldySW5kZXguYml0cy53cmFwICAmJgorCSAgICAgICBTZXJ2aWNlQ29tcGxldGUuYml0cy52YWwgPCBwTXBUY2ItPldySW5kZXguYml0cy52YWwpIHsKKwkJcEFkYXB0ZXItPlR4UmluZy5uQnVzeVNlbmQtLTsKKwkJcEFkYXB0ZXItPlR4UmluZy5DdXJyU2VuZEhlYWQgPSBwTXBUY2ItPk5leHQ7CisJCWlmIChwTXBUY2ItPk5leHQgPT0gTlVMTCkgeworCQkJcEFkYXB0ZXItPlR4UmluZy5DdXJyU2VuZFRhaWwgPSBOVUxMOworCQl9CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKKwkJTVBfRlJFRV9TRU5EX1BBQ0tFVF9GVU4ocEFkYXB0ZXIsIHBNcFRjYik7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCU2VuZFFMb2NrLCBsb2NrZmxhZ3MpOworCisJCS8qIEdvdG8gdGhlIG5leHQgcGFja2V0ICovCisJCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCX0KKwl3aGlsZSAocE1wVGNiICYmCisJICAgICAgIFNlcnZpY2VDb21wbGV0ZS5iaXRzLndyYXAgPT0gcE1wVGNiLT5XckluZGV4LmJpdHMud3JhcCAmJgorCSAgICAgICBTZXJ2aWNlQ29tcGxldGUuYml0cy52YWwgPiBwTXBUY2ItPldySW5kZXguYml0cy52YWwpIHsKKwkJcEFkYXB0ZXItPlR4UmluZy5uQnVzeVNlbmQtLTsKKwkJcEFkYXB0ZXItPlR4UmluZy5DdXJyU2VuZEhlYWQgPSBwTXBUY2ItPk5leHQ7CisJCWlmIChwTXBUY2ItPk5leHQgPT0gTlVMTCkgeworCQkJcEFkYXB0ZXItPlR4UmluZy5DdXJyU2VuZFRhaWwgPSBOVUxMOworCQl9CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKKwkJTVBfRlJFRV9TRU5EX1BBQ0tFVF9GVU4ocEFkYXB0ZXIsIHBNcFRjYik7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZwQWRhcHRlci0+VENCU2VuZFFMb2NrLCBsb2NrZmxhZ3MpOworCisJCS8qIEdvdG8gdGhlIG5leHQgcGFja2V0ICovCisJCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCX0KKworCS8qIFdha2UgdXAgdGhlIHF1ZXVlIHdoZW4gd2UgaGl0IGEgbG93LXdhdGVyIG1hcmsgKi8KKwlpZiAocEFkYXB0ZXItPlR4UmluZy5uQnVzeVNlbmQgPD0gKE5VTV9UQ0IgLyAzKSkgeworCQluZXRpZl93YWtlX3F1ZXVlKHBBZGFwdGVyLT5uZXRkZXYpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5UQ0JTZW5kUUxvY2ssIGxvY2tmbGFncyk7Cit9CisKKy8qKgorICogZXQxMzF4X2NoZWNrX3NlbmRfd2FpdF9saXN0IC0gSGVscGVyIHJvdXRpbmUgZm9yIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcgorICogQHBBZGFwdGVyOiBwb2ludGVyIHRvIG91ciBhZGFwdGVyCisgKgorICogVGFrZXMgcGFja2V0cyBmcm9tIHRoZSBzZW5kIHdhaXQgcXVldWUgYW5kIHBvc3RzIHRoZW0gdG8gdGhlIGRldmljZSAoaWYKKyAqIHJvb20gYXZhaWxhYmxlKS4KKyAqLworc3RhdGljIHZvaWQgZXQxMzF4X2NoZWNrX3NlbmRfd2FpdF9saXN0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJdW5zaWduZWQgbG9uZyBsb2NrZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlNlbmRXYWl0TG9jaywgbG9ja2ZsYWdzKTsKKworCXdoaWxlICghbGlzdF9lbXB0eSgmcEFkYXB0ZXItPlR4UmluZy5TZW5kV2FpdFF1ZXVlKSAmJgorCSAgICAgICBNUF9UQ0JfUkVTT1VSQ0VTX0FWQUlMQUJMRShwQWRhcHRlcikpIHsKKwkJc3RydWN0IGxpc3RfaGVhZCAqcEVudHJ5OworCisJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiVHggcGFja2V0cyBvbiB0aGUgd2FpdCBxdWV1ZVxuIik7CisKKwkJcEVudHJ5ID0gcEFkYXB0ZXItPlR4UmluZy5TZW5kV2FpdFF1ZXVlLm5leHQ7CisKKwkJcEFkYXB0ZXItPlR4UmluZy5uV2FpdFNlbmQtLTsKKworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCSAgICAiTXBIYW5kbGVTZW5kSW50ZXJydXB0IC0gc2VudCBhIHF1ZXVlZCBwa3QuIFdhaXRpbmcgJWRcbiIsCisJCQkgICAgcEFkYXB0ZXItPlR4UmluZy5uV2FpdFNlbmQpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5TZW5kV2FpdExvY2ssIGxvY2tmbGFncyk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF90eC5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfdHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODE5Yzc4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfdHguaApAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMTBfdHguaCAtIERlZmluZXMsIHN0cnVjdHMsIGVudW1zLCBwcm90b3R5cGVzLCBldGMuIHBlcnRhaW5pbmcgdG8gZGF0YQorICogICAgICAgICAgICAgICB0cmFuc21pc3Npb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19FVDEzMTBfVFhfSF9fCisjZGVmaW5lIF9fRVQxMzEwX1RYX0hfXworCisKKy8qIFR5cGVkZWZzIGZvciBUeCBEZXNjcmlwdG9yIFJpbmcgKi8KKworLyoKKyAqIFRYREVTQ19XT1JEMl90IHN0cnVjdHVyZSBob2xkcyBwYXJ0IG9mIHRoZSBjb250cm9sIGJpdHMgaW4gdGhlIFR4IERlc2NyaXB0b3IKKyAqIHJpbmcgZm9yIHRoZSBFVC0xMzEwCisgKi8KK3R5cGVkZWYgdW5pb24gX3R4ZGVzY193b3JkMl90IHsKKwl1MzIgdmFsdWU7CisJc3RydWN0IHsKKyNpZmRlZiBfQklUX0ZJRUxEU19IVE9MCisJCXUzMiB2bGFuX3ByaW86MzsJCS8vIGJpdHMgMjktMzEoVkxBTiBwcmlvcml0eSkKKwkJdTMyIHZsYW5fY2ZpOjE7CQkvLyBiaXQgMjgoY2ZpKQorCQl1MzIgdmxhbl90YWc6MTI7CQkvLyBiaXRzIDE2LTI3KFZMQU4gdGFnKQorCQl1MzIgbGVuZ3RoX2luX2J5dGVzOjE2OwkvLyBiaXRzICAwLTE1KHBhY2tldCBsZW5ndGgpCisjZWxzZQorCQl1MzIgbGVuZ3RoX2luX2J5dGVzOjE2OwkvLyBiaXRzICAwLTE1KHBhY2tldCBsZW5ndGgpCisJCXUzMiB2bGFuX3RhZzoxMjsJCS8vIGJpdHMgMTYtMjcoVkxBTiB0YWcpCisJCXUzMiB2bGFuX2NmaToxOwkJLy8gYml0IDI4KGNmaSkKKwkJdTMyIHZsYW5fcHJpbzozOwkJLy8gYml0cyAyOS0zMShWTEFOIHByaW9yaXR5KQorI2VuZGlmCS8qIF9CSVRfRklFTERTX0hUT0wgKi8KKwl9IGJpdHM7Cit9IFRYREVTQ19XT1JEMl90LCAqUFRYREVTQ19XT1JEMl90OworCisvKgorICogVFhERVNDX1dPUkQzX3Qgc3RydWN0dXJlIGhvbGRzIHBhcnQgb2YgdGhlIGNvbnRyb2wgYml0cyBpbiB0aGUgVHggRGVzY3JpcHRvcgorICogcmluZyBmb3IgdGhlIEVULTEzMTAKKyAqLwordHlwZWRlZiB1bmlvbiBfdHhkZXNjX3dvcmQzX3QgeworCXUzMiB2YWx1ZTsKKwlzdHJ1Y3QgeworI2lmZGVmIF9CSVRfRklFTERTX0hUT0wKKwkJdTMyIHVudXNlZDoxNzsJLy8gYml0cyAxNS0zMQorCQl1MzIgdWRwYToxOwkvLyBiaXQgMTQoVURQIGNoZWNrc3VtIGFzc2lzdCkKKwkJdTMyIHRjcGE6MTsJLy8gYml0IDEzKFRDUCBjaGVja3N1bSBhc3Npc3QpCisJCXUzMiBpcGE6MTsJCS8vIGJpdCAxMihJUCBjaGVja3N1bSBhc3Npc3QpCisJCXUzMiB2bGFuOjE7CS8vIGJpdCAxMShhcHBlbmQgVkxBTiB0YWcpCisJCXUzMiBocDoxOwkJLy8gYml0IDEwKFBhY2tldCBpcyBhIEh1Z2UgcGFja2V0KQorCQl1MzIgcHA6MTsJCS8vIGJpdCAgOShwYWQgcGFja2V0KQorCQl1MzIgbWFjOjE7CQkvLyBiaXQgIDgoTUFDIG92ZXJyaWRlKQorCQl1MzIgY3JjOjE7CQkvLyBiaXQgIDcoYXBwZW5kIENSQykKKwkJdTMyIGU6MTsJCS8vIGJpdCAgNihUeCBmcmFtZSBoYXMgZXJyb3IpCisJCXUzMiBwZjoxOwkJLy8gYml0ICA1KHNlbmQgcGF1c2UgZnJhbWUpCisJCXUzMiBicDoxOwkJLy8gYml0ICA0KElzc3VlIGhhbGYtZHVwbGV4IGJhY2twcmVzc3VyZSAoWE9OL1hPRkYpCisJCXUzMiBjdzoxOwkJLy8gYml0ICAzKENvbnRyb2wgd29yZCAtIG5vIHBhY2tldCBkYXRhKQorCQl1MzIgaXI6MTsJCS8vIGJpdCAgMihpbnRlcnJ1cHQgdGhlIHByb2Nlc3NvciB3aGVuIHRoaXMgcGt0IHNlbnQpCisJCXUzMiBmOjE7CQkvLyBiaXQgIDEoZmlyc3QgcGFja2V0IGluIHRoZSBzZXF1ZW5jZSkKKwkJdTMyIGw6MTsJCS8vIGJpdCAgMChsYXN0IHBhY2tldCBpbiB0aGUgc2VxdWVuY2UpCisjZWxzZQorCQl1MzIgbDoxOwkJLy8gYml0ICAwKGxhc3QgcGFja2V0IGluIHRoZSBzZXF1ZW5jZSkKKwkJdTMyIGY6MTsJCS8vIGJpdCAgMShmaXJzdCBwYWNrZXQgaW4gdGhlIHNlcXVlbmNlKQorCQl1MzIgaXI6MTsJCS8vIGJpdCAgMihpbnRlcnJ1cHQgdGhlIHByb2Nlc3NvciB3aGVuIHRoaXMgcGt0IHNlbnQpCisJCXUzMiBjdzoxOwkJLy8gYml0ICAzKENvbnRyb2wgd29yZCAtIG5vIHBhY2tldCBkYXRhKQorCQl1MzIgYnA6MTsJCS8vIGJpdCAgNChJc3N1ZSBoYWxmLWR1cGxleCBiYWNrcHJlc3N1cmUgKFhPTi9YT0ZGKQorCQl1MzIgcGY6MTsJCS8vIGJpdCAgNShzZW5kIHBhdXNlIGZyYW1lKQorCQl1MzIgZToxOwkJLy8gYml0ICA2KFR4IGZyYW1lIGhhcyBlcnJvcikKKwkJdTMyIGNyYzoxOwkJLy8gYml0ICA3KGFwcGVuZCBDUkMpCisJCXUzMiBtYWM6MTsJCS8vIGJpdCAgOChNQUMgb3ZlcnJpZGUpCisJCXUzMiBwcDoxOwkJLy8gYml0ICA5KHBhZCBwYWNrZXQpCisJCXUzMiBocDoxOwkJLy8gYml0IDEwKFBhY2tldCBpcyBhIEh1Z2UgcGFja2V0KQorCQl1MzIgdmxhbjoxOwkvLyBiaXQgMTEoYXBwZW5kIFZMQU4gdGFnKQorCQl1MzIgaXBhOjE7CQkvLyBiaXQgMTIoSVAgY2hlY2tzdW0gYXNzaXN0KQorCQl1MzIgdGNwYToxOwkvLyBiaXQgMTMoVENQIGNoZWNrc3VtIGFzc2lzdCkKKwkJdTMyIHVkcGE6MTsJLy8gYml0IDE0KFVEUCBjaGVja3N1bSBhc3Npc3QpCisJCXUzMiB1bnVzZWQ6MTc7CS8vIGJpdHMgMTUtMzEKKyNlbmRpZgkvKiBfQklUX0ZJRUxEU19IVE9MICovCisJfSBiaXRzOworfSBUWERFU0NfV09SRDNfdCwgKlBUWERFU0NfV09SRDNfdDsKKworLyogVFhfREVTQ19FTlRSWV90IGlzIHNydWN0dXJlIHJlcHJlc2VudGluZyBlYWNoIGRlc2NyaXB0b3Igb24gdGhlIHJpbmcgKi8KK3R5cGVkZWYgc3RydWN0IF90eF9kZXNjX2VudHJ5X3QgeworCXUzMiBEYXRhQnVmZmVyUHRySGlnaDsKKwl1MzIgRGF0YUJ1ZmZlclB0ckxvdzsKKwlUWERFU0NfV09SRDJfdCB3b3JkMjsJLy8gY29udHJvbCB3b3JkcyBob3cgdG8geG1pdCB0aGUKKwlUWERFU0NfV09SRDNfdCB3b3JkMzsJLy8gZGF0YSAoZGV0YWlsZWQgYWJvdmUpCit9IFRYX0RFU0NfRU5UUllfdCwgKlBUWF9ERVNDX0VOVFJZX3Q7CisKKworLyogVHlwZWRlZnMgZm9yIFR4IERNQSBlbmdpbmUgc3RhdHVzIHdyaXRlYmFjayAqLworCisvKgorICogVFhfU1RBVFVTX0JMT0NLX3QgaXMgc3J1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBzdGF0dXMgb2YgdGhlIFR4IERNQSBlbmdpbmUKKyAqIGl0IHNpdHMgaW4gZnJlZSBtZW1vcnksIGFuZCBpcyBwb2ludGVkIHRvIGJ5IDB4MTAxYyAvIDB4MTAyMAorICovCit0eXBlZGVmIHVuaW9uIF90eF9zdGF0dXNfYmxvY2tfdCB7CisJdTMyIHZhbHVlOworCXN0cnVjdCB7CisjaWZkZWYgX0JJVF9GSUVMRFNfSFRPTAorCQl1MzIgdW51c2VkOjIxOwkJLy8gYml0cyAxMS0zMQorCQl1MzIgc2Vydl9jcGxfd3JhcDoxOwkvLyBiaXQgMTAKKwkJdTMyIHNlcnZfY3BsOjEwOwkJLy8gYml0cyAwLTkKKyNlbHNlCisJCXUzMiBzZXJ2X2NwbDoxMDsJCS8vIGJpdHMgMC05CisJCXUzMiBzZXJ2X2NwbF93cmFwOjE7CS8vIGJpdCAxMAorCQl1MzIgdW51c2VkOjIxOwkJLy8gYml0cyAxMS0zMQorI2VuZGlmCisJfSBiaXRzOworfSBUWF9TVEFUVVNfQkxPQ0tfdCwgKlBUWF9TVEFUVVNfQkxPQ0tfdDsKKworLyogVENCIChUcmFuc21pdCBDb250cm9sIEJsb2NrKSAqLwordHlwZWRlZiBzdHJ1Y3QgX01QX1RDQiB7CisJc3RydWN0IF9NUF9UQ0IgKk5leHQ7CisJdTMyIEZsYWdzOworCXUzMiBDb3VudDsKKwl1MzIgUGFja2V0U3RhbGVDb3VudDsKKwlzdHJ1Y3Qgc2tfYnVmZiAqUGFja2V0OworCXUzMiBQYWNrZXRMZW5ndGg7CisJRE1BMTBXX3QgV3JJbmRleDsKKwlETUExMFdfdCBXckluZGV4U3RhcnQ7Cit9IE1QX1RDQiwgKlBNUF9UQ0I7CisKKy8qIFN0cnVjdHVyZSB0byBob2xkIHRoZSBza2IncyBpbiBhIGxpc3QgKi8KK3R5cGVkZWYgc3RydWN0IHR4X3NrYl9saXN0X2VsZW0geworCXN0cnVjdCBsaXN0X2hlYWQgc2tiX2xpc3RfZWxlbTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworfSBUWF9TS0JfTElTVF9FTEVNLCAqUFRYX1NLQl9MSVNUX0VMRU07CisKKy8qIFRYX1JJTkdfdCBpcyBzcnVjdHVyZSByZXByZXNlbnRpbmcgb3VyIGxvY2FsIHJlZmVyZW5jZShzKSB0byB0aGUgcmluZyAqLwordHlwZWRlZiBzdHJ1Y3QgX3R4X3JpbmdfdCB7CisJLyogVENCIChUcmFuc21pdCBDb250cm9sIEJsb2NrKSBtZW1vcnkgYW5kIGxpc3RzICovCisJUE1QX1RDQiBNcFRjYk1lbTsKKworCS8qIExpc3Qgb2YgVENCcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkICovCisJUE1QX1RDQiBUQ0JSZWFkeVF1ZXVlSGVhZDsKKwlQTVBfVENCIFRDQlJlYWR5UXVldWVUYWlsOworCisJLyogbGlzdCBvZiBUQ0JzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBzZW50LiAgTk9URSB0aGF0IGFjY2VzcyB0byBhbGwKKwkgKiB0aHJlZSBvZiB0aGVzZSAoaW5jbHVkaW5nIG5CdXN5U2VuZCkgYXJlIGNvbnRyb2xsZWQgdmlhIHRoZQorCSAqIFRDQlNlbmRRTG9jay4gIFRoaXMgbG9jayBzaG91bGQgYmUgc2VjdXJlZCBwcmlvciB0byBpbmNlbWVudGluZyAvCisJICogZGVjcmVtZW50aW5nIG5CdXN5U2VuZCwgb3IgYW55IHF1ZXVlIG1hbmlwdWxhdGlvbiBvbiBDdXJyU2VuZEhlYWQgLworCSAqIFRhaWwKKwkgKi8KKwlQTVBfVENCIEN1cnJTZW5kSGVhZDsKKwlQTVBfVENCIEN1cnJTZW5kVGFpbDsKKwlpbnQzMl90IG5CdXN5U2VuZDsKKworCS8qIExpc3Qgb2YgcGFja2V0cyAobm90IFRDQnMpIHRoYXQgd2VyZSBxdWV1ZWQgZm9yIGxhY2sgb2YgcmVzb3VyY2VzICovCisJc3RydWN0IGxpc3RfaGVhZCBTZW5kV2FpdFF1ZXVlOworCWludDMyX3QgbldhaXRTZW5kOworCisJLyogVGhlIGFjdHVhbCBkZXNjcmlwdG9yIHJpbmcgKi8KKwlQVFhfREVTQ19FTlRSWV90IHBUeERlc2NSaW5nVmE7CisJZG1hX2FkZHJfdCBwVHhEZXNjUmluZ1BhOworCXVpbnQ2NF90IHBUeERlc2NSaW5nQWRqdXN0ZWRQYTsKKwl1aW50NjRfdCBUeERlc2NPZmZzZXQ7CisKKwkvKiBSZWFkeVRvU2VuZCBpbmRpY2F0ZXMgd2hlcmUgd2UgbGFzdCB3cm90ZSB0byBpbiB0aGUgZGVzY3JpcHRvciByaW5nLiAqLworCURNQTEwV190IHR4RG1hUmVhZHlUb1NlbmQ7CisKKwkvKiBUaGUgbG9jYXRpb24gb2YgdGhlIHdyaXRlLWJhY2sgc3RhdHVzIGJsb2NrICovCisJUFRYX1NUQVRVU19CTE9DS190IHBUeFN0YXR1c1ZhOworCWRtYV9hZGRyX3QgcFR4U3RhdHVzUGE7CisKKwkvKiBBIEJsb2NrIG9mIHplcm9lcyB1c2VkIHRvIHBhZCBwYWNrZXRzIHRoYXQgYXJlIGxlc3MgdGhhbiA2MCBieXRlcyAqLworCXZvaWQgKnBUeER1bW15QmxrVmE7CisJZG1hX2FkZHJfdCBwVHhEdW1teUJsa1BhOworCisJVFhNQUNfRVJSX3QgVHhNYWNFcnI7CisKKwkvKiBWYXJpYWJsZXMgdG8gdHJhY2sgdGhlIFR4IGludGVycnVwdCBjb2FsZXNjaW5nIGZlYXR1cmVzICovCisJaW50MzJfdCBUeFBhY2tldHNTaW5jZUxhc3RpbnRlcnJ1cHQ7Cit9IFRYX1JJTkdfdCwgKlBUWF9SSU5HX3Q7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIGZyYWctbGlzdCBmb3IgdGhlIGZvbGxvd2luZyBwcm90b3R5cGVzICovCit0eXBlZGVmIHN0cnVjdCBfTVBfRlJBR19MSVNUIE1QX0ZSQUdfTElTVCwgKlBNUF9GUkFHX0xJU1Q7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBldDEzMXhfYWRhcHRlcjsKKworLyogUFJPVE9UWVBFUyBmb3IgZXQxMzEwX3R4LmMgKi8KK2ludCBldDEzMXhfdHhfZG1hX21lbW9yeV9hbGxvYyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBldDEzMXhfdHhfZG1hX21lbW9yeV9mcmVlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7Cit2b2lkIENvbmZpZ1R4RG1hUmVncyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKTsKK3ZvaWQgZXQxMzF4X2luaXRfc2VuZChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIpOwordm9pZCBldDEzMXhfdHhfZG1hX2Rpc2FibGUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcik7Cit2b2lkIGV0MTMxeF90eF9kbWFfZW5hYmxlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpOwordm9pZCBldDEzMXhfaGFuZGxlX3NlbmRfaW50ZXJydXB0KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpOwordm9pZCBldDEzMXhfZnJlZV9idXN5X3NlbmRfcGFja2V0cyhzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKTsKK2ludCBldDEzMXhfc2VuZF9wYWNrZXRzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOworCisjZW5kaWYgLyogX19FVDEzMTBfVFhfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9hZGFwdGVyLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9hZGFwdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlNjFhNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2FkYXB0ZXIuaApAQCAtMCwwICsxLDM0NyBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfYWRhcHRlci5oIC0gSGVhZGVyIHdoaWNoIGluY2x1ZGVzIHRoZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlLCBhbG9uZworICogICAgICAgICAgICAgICAgICAgIHdpdGggcmVsYXRlZCBzdXBwb3J0IHN0cnVjdHVyZXMsIG1hY3JvcywgZGVmaW5pdGlvbnMsIGV0Yy4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxWF9BREFQVEVSX0hfXworI2RlZmluZSBfX0VUMTMxWF9BREFQVEVSX0hfXworCisjaW5jbHVkZSAiZXQxMzEwX2FkZHJlc3NfbWFwLmgiCisjaW5jbHVkZSAiZXQxMzEwX3R4LmgiCisjaW5jbHVkZSAiZXQxMzEwX3J4LmgiCisKKy8qCisgKiBEbyBub3QgY2hhbmdlIHRoZXNlIHZhbHVlczogaWYgY2hhbmdlZCwgdGhlbiBjaGFuZ2UgYWxzbyBpbiByZXNwZWN0aXZlCisgKiBUWGRtYSBhbmQgUnhkbWEgZW5naW5lcworICovCisjZGVmaW5lIE5VTV9ERVNDX1BFUl9SSU5HX1RYICAgICAgICAgNTEyCS8vIFRYIERvIG5vdCBjaGFuZ2UgdGhlc2UgdmFsdWVzCisjZGVmaW5lIE5VTV9UQ0IgICAgICAgICAgICAgICAgICAgICAgNjQKKworLyoKKyAqIFRoZXNlIHZhbHVlcyBhcmUgYWxsIHN1cGVyc2VkZWQgYnkgcmVnaXN0cnkgZW50cmllcyB0byBmYWNpbGl0YXRlIHR1bmluZy4KKyAqIE9uY2UgdGhlIGRlc2lyZWQgcGVyZm9ybWFuY2UgaGFzIGJlZW4gYWNoaWV2ZWQsIHRoZSBvcHRpbWFsIHJlZ2lzdHJ5IHZhbHVlcworICogc2hvdWxkIGJlIHJlLXBvcHVsYXRlZCB0byB0aGVzZSAjZGVmaW5lczoKKyAqLworI2RlZmluZSBOVU1fVFJBRkZJQ19DTEFTU0VTICAgICAgICAgIDEKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSB3YXlzIG9mIGNvdW50aW5nIGVycm9ycyAtIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gWCBlcnJvcnMKKyAqIGluIFkgcGFja2V0cyAocmVwcmVzZW50ZWQgYnkgdGhlICJTQU1QTEUiIG1hY3JvcyksIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4KKyAqIE4gZXJyb3JzIGluIGEgUyBtU2VjIHRpbWUgcGVyaW9kICh0aGUgIlBFUklPRCIgbWFjcm9zKSwgb3IgaWYgdGhlcmUgYXJlCisgKiBjb25zZWN1dGl2ZSBwYWNrZXRzIHdpdGggZXJyb3JzIChDT05TRUNfRVJST1JFRF9USFJFU0gpLiAgVGhpcyBsYXN0IGNvdmVycworICogZm9yICJCdXJzdHkiIGVycm9ycywgYW5kIHRoZSBlcnJvcmVkIHBhY2tldHMgbWF5IHdlbGwgbm90IGJlIGNvbnRpZ3VvdXMsCisgKiBidXQgc2V2ZXJhbCBlcnJvcnMgd2hlcmUgdGhlIHBhY2tldCBjb3VudGVyIGhhcyBjaGFuZ2VkIGJ5IGxlc3MgdGhhbiBhCisgKiBzbWFsbCBhbW91bnQgd2lsbCBjYXVzZSB0aGlzIGNvdW50IHRvIGluY3JlbWVudC4KKyAqLworI2RlZmluZSBUWF9QQUNLRVRTX0lOX1NBTVBMRSAgICAgICAgMTAwMDAKKyNkZWZpbmUgVFhfTUFYX0VSUk9SU19JTl9TQU1QTEUgICAgIDUwCisKKyNkZWZpbmUgVFhfRVJST1JfUEVSSU9EICAgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgVFhfTUFYX0VSUk9SU19JTl9QRVJJT0QgICAgIDEwCisKKyNkZWZpbmUgTElOS19ERVRFQ1RJT05fVElNRVIgICAgICAgIDUwMDAKKworI2RlZmluZSBUWF9DT05TRUNfUkFOR0UgICAgICAgICAgICAgNQorI2RlZmluZSBUWF9DT05TRUNfRVJST1JFRF9USFJFU0ggICAgMTAKKworI2RlZmluZSBMT19NQVJLX1BFUkNFTlRfRk9SX1BTUiAgICAgMTUKKyNkZWZpbmUgTE9fTUFSS19QRVJDRU5UX0ZPUl9SWCAgICAgIDE1CisKKy8qIE1hY3JvcyBmb3IgZmxhZyBhbmQgcmVmIGNvdW50IG9wZXJhdGlvbnMgICAgICAgICovCisjZGVmaW5lIE1QX1NFVF9GTEFHKF9NLCBfRikgICAgICAgICAoKF9NKS0+RmxhZ3MgfD0gKF9GKSkKKyNkZWZpbmUgTVBfQ0xFQVJfRkxBRyhfTSwgX0YpICAgICAgICgoX00pLT5GbGFncyAmPSB+KF9GKSkKKyNkZWZpbmUgTVBfQ0xFQVJfRkxBR1MoX00pICAgICAgICAgICgoX00pLT5GbGFncyA9IDApCisjZGVmaW5lIE1QX1RFU1RfRkxBRyhfTSwgX0YpICAgICAgICAoKChfTSktPkZsYWdzICYgKF9GKSkgIT0gMCkKKyNkZWZpbmUgTVBfVEVTVF9GTEFHUyhfTSwgX0YpICAgICAgICgoKF9NKS0+RmxhZ3MgJiAoX0YpKSA9PSAoX0YpKQorI2RlZmluZSBNUF9JU19GTEFHX0NMRUFSKF9NLCBfRikgICAgKCgoX00pLT5GbGFncyAmIChfRikpID09IDApCisKKyNkZWZpbmUgTVBfSU5DX1JDVl9SRUYoX0EpICAgICAgICAgIGF0b21pY19pbmMoJihfQSktPlJjdlJlZkNvdW50KQorI2RlZmluZSBNUF9ERUNfUkNWX1JFRihfQSkgICAgICAgICAgYXRvbWljX2RlYygmKF9BKS0+UmN2UmVmQ291bnQpCisjZGVmaW5lIE1QX0dFVF9SQ1ZfUkVGKF9BKSAgICAgICAgICBhdG9taWNfcmVhZCgmKF9BKS0+UmN2UmVmQ291bnQpCisKKy8qIE1hY3JvcyBzcGVjaWZpYyB0byB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZSAqLworI2RlZmluZSBNUF9UQ0JfUkVTT1VSQ0VTX0FWQUlMQUJMRShfTSkgKChfTSktPlR4UmluZy5uQnVzeVNlbmQgPCBOVU1fVENCKQorI2RlZmluZSBNUF9UQ0JfUkVTT1VSQ0VTX05PVF9BVkFJTEFCTEUoX00pICgoX00pLT5UeFJpbmcubkJ1c3lTZW5kID49IE5VTV9UQ0IpCisKKyNkZWZpbmUgTVBfU0hPVUxEX0ZBSUxfU0VORChfTSkgICAoKF9NKS0+RmxhZ3MgJiBmTVBfQURBUFRFUl9GQUlMX1NFTkRfTUFTSykKKyNkZWZpbmUgTVBfSVNfTk9UX1JFQURZKF9NKSAgICAgICAoKF9NKS0+RmxhZ3MgJiBmTVBfQURBUFRFUl9OT1RfUkVBRFlfTUFTSykKKyNkZWZpbmUgTVBfSVNfUkVBRFkoX00pICAgICAgICAgICAhKChfTSktPkZsYWdzICYgZk1QX0FEQVBURVJfTk9UX1JFQURZX01BU0spCisKKyNkZWZpbmUgTVBfSEFTX0NBQkxFKF9NKSAgICAgICAgICAgISgoX00pLT5GbGFncyAmIGZNUF9BREFQVEVSX05PX0NBQkxFKQorI2RlZmluZSBNUF9MSU5LX0RFVEVDVEVEKF9NKSAgICAgICAhKChfTSktPkZsYWdzICYgZk1QX0FEQVBURVJfTElOS19ERVRFQ1RJT04pCisKKy8qIENvdW50ZXJzIGZvciBlcnJvciByYXRlIG1vbml0b3JpbmcgKi8KK3R5cGVkZWYgc3RydWN0IF9NUF9FUlJfQ09VTlRFUlMgeworCXUzMiBQa3RDb3VudFR4UGFja2V0czsKKwl1MzIgUGt0Q291bnRUeEVycm9yczsKKwl1MzIgVGltZXJCYXNlZFR4RXJyb3JzOworCXUzMiBQa3RDb3VudExhc3RFcnJvcjsKKwl1MzIgRXJyZWRDb25zZWNQYWNrZXRzOworfSBNUF9FUlJfQ09VTlRFUlMsICpQTVBfRVJSX0NPVU5URVJTOworCisvKiBSRkQgKFJlY2VpdmUgRnJhbWUgRGVzY3JpcHRvcikgKi8KK3R5cGVkZWYgc3RydWN0IF9NUF9SRkQgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdF9ub2RlOworCXN0cnVjdCBza19idWZmICpQYWNrZXQ7CisJdTMyIFBhY2tldFNpemU7CS8vIHRvdGFsIHNpemUgb2YgcmVjZWl2ZSBmcmFtZQorCXUxNiBpQnVmZmVySW5kZXg7CisJdTggaVJpbmdJbmRleDsKK30gTVBfUkZELCAqUE1QX1JGRDsKKworLyogRW51bSBmb3IgRmxvdyBDb250cm9sICovCit0eXBlZGVmIGVudW0gX2VmbG93X2NvbnRyb2xfdCB7CisJQm90aCA9IDAsCisJVHhPbmx5ID0gMSwKKwlSeE9ubHkgPSAyLAorCU5vbmUgPSAzCit9IGVGTE9XX0NPTlRST0xfdCwgKlBlRkxPV19DT05UUk9MX3Q7CisKKy8qIFN0cnVjdCB0byBkZWZpbmUgc29tZSBkZXZpY2Ugc3RhdGlzdGljcyAqLwordHlwZWRlZiBzdHJ1Y3QgX2NlX3N0YXRzX3QgeworCS8qIExpbmsgSW5wdXQvT3V0cHV0IHN0YXRzICovCisJdWludDY0X3QgaXBhY2tldHM7CS8vICMgb2YgaW4gcGFja2V0cworCXVpbnQ2NF90IG9wYWNrZXRzOwkvLyAjIG9mIG91dCBwYWNrZXRzCisKKwkvKiBNSUIgSUkgdmFyaWFibGVzCisJICoKKwkgKiBOT1RFOiBhdG9taWNfdCB0eXBlcyBhcmUgb25seSBndWFyYW50ZWVkIHRvIHN0b3JlIDI0LWJpdHM7IGlmIHdlCisJICogTVVTVCBoYXZlIDMyLCB0aGVuIHdlJ2xsIG5lZWQgYW5vdGhlciB3YXkgdG8gcGVyZm9ybSBhdG9taWMKKwkgKiBvcGVyYXRpb25zCisJICovCisJdTMyIHVuaXJjdjsJLy8gIyBtdWx0aWNhc3QgcGFja2V0cyByZWNlaXZlZAorCWF0b21pY190IHVuaXhtdDsJLy8gIyBtdWx0aWNhc3QgcGFja2V0cyBmb3IgVHgKKwl1MzIgbXVsdGlyY3Y7CS8vICMgbXVsdGljYXN0IHBhY2tldHMgcmVjZWl2ZWQKKwlhdG9taWNfdCBtdWx0aXhtdDsJLy8gIyBtdWx0aWNhc3QgcGFja2V0cyBmb3IgVHgKKwl1MzIgYnJkY3N0cmN2OwkvLyAjIGJyb2FkY2FzdCBwYWNrZXRzIHJlY2VpdmVkCisJYXRvbWljX3QgYnJkY3N0eG10OwkvLyAjIGJyb2FkY2FzdCBwYWNrZXRzIGZvciBUeAorCXUzMiBub3JjdmJ1ZjsJLy8gIyBSeCBwYWNrZXRzIGRpc2NhcmRlZAorCXUzMiBub3htdGJ1ZjsJLy8gIyBUeCBwYWNrZXRzIGRpc2NhcmRlZAorCisJLyogVHJhbnNjaWV2ZXIgc3RhdGUgaW5mb3JtYXRpb25zLiAqLworCXU4IHhjdnJfYWRkcjsKKwl1MzIgeGN2cl9pZDsKKworCS8qIFR4IFN0YXRpc3RpY3MuICovCisJdTMyIHR4X3VmbG87CQkvLyBUeCBVbmRlcnJ1bnMKKworCXUzMiBjb2xsaXNpb25zOworCXUzMiBleGNlc3NpdmVfY29sbGlzaW9uczsKKwl1MzIgZmlyc3RfY29sbGlzaW9uOworCXUzMiBsYXRlX2NvbGxpc2lvbnM7CisJdTMyIG1heF9wa3RfZXJyb3I7CisJdTMyIHR4X2RlZmVycmVkOworCisJLyogUnggU3RhdGlzdGljcy4gKi8KKwl1MzIgcnhfb3ZfZmxvdzsJLy8gUnggT3ZlciBGbG93CisKKwl1MzIgbGVuZ3RoX2VycjsKKwl1MzIgYWxpZ25tZW50X2VycjsKKwl1MzIgY3JjX2VycjsKKwl1MzIgY29kZV92aW9sYXRpb25zOworCXUzMiBvdGhlcl9lcnJvcnM7CisKKyNpZmRlZiBDT05GSUdfRVQxMzFYX0RFQlVHCisJdTMyIFVuaGFuZGxlZEludGVycnVwdHNQZXJTZWM7CisJdTMyIFJ4RG1hSW50ZXJydXB0c1BlclNlYzsKKwl1MzIgVHhEbWFJbnRlcnJ1cHRzUGVyU2VjOworCXUzMiBXYXRjaERvZ0ludGVycnVwdHNQZXJTZWM7CisjZW5kaWYJLyogQ09ORklHX0VUMTMxWF9ERUJVRyAqLworCisJdTMyIFN5bmNocm91bm91c0l0ZXJhdGlvbnM7CisJSU5URVJSVVBUX3QgSW50ZXJydXB0U3RhdHVzOworfSBDRV9TVEFUU190LCAqUENFX1NUQVRTX3Q7CisKKy8qIFRoZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlICovCitzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgeworCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CisJc3RydWN0IHBjaV9kZXYgKnBkZXY7CisKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdGFzazsKKworCS8qIEZsYWdzIHRoYXQgaW5kaWNhdGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYWRhcHRlciAqLworCXUzMiBGbGFnczsKKwl1MzIgSHdFcnJDb3VudDsKKworCS8qIENvbmZpZ3VyYXRpb24gICovCisJdTggUGVybWFuZW50QWRkcmVzc1tFVEhfQUxFTl07CisJdTggQ3VycmVudEFkZHJlc3NbRVRIX0FMRU5dOworCWJvb2wgYk92ZXJyaWRlQWRkcmVzczsKKwlib29sIGJFZXByb21QcmVzZW50OworCXU4IGVlcHJvbURhdGFbMl07CisKKwkvKiBTcGlubG9ja3MgKi8KKwlzcGlubG9ja190IExvY2s7CisKKwlzcGlubG9ja190IFRDQlNlbmRRTG9jazsKKwlzcGlubG9ja190IFRDQlJlYWR5UUxvY2s7CisJc3BpbmxvY2tfdCBTZW5kSFdMb2NrOworCXNwaW5sb2NrX3QgU2VuZFdhaXRMb2NrOworCisJc3BpbmxvY2tfdCBSY3ZMb2NrOworCXNwaW5sb2NrX3QgUmN2UGVuZExvY2s7CisJc3BpbmxvY2tfdCBGYnJMb2NrOworCisJc3BpbmxvY2tfdCBQSFlMb2NrOworCisJLyogUGFja2V0IEZpbHRlciBhbmQgbG9vayBhaGVhZCBzaXplICovCisJdTMyIFBhY2tldEZpbHRlcjsKKwl1MzIgdWxMb29rQWhlYWQ7CisJdTMyIHVpTGlua1NwZWVkOworCXUzMiB1aUR1cGxleE1vZGU7CisJdTMyIHVpQXV0b05lZ1N0YXR1czsKKwl1OCB1Y0xpbmtTdGF0dXM7CisKKwkvKiBtdWx0aWNhc3QgbGlzdCAqLworCXUzMiBNQ0FkZHJlc3NDb3VudDsKKwl1OCBNQ0xpc3RbTklDX01BWF9NQ0FTVF9MSVNUXVtFVEhfQUxFTl07CisKKwkvKiBNQUMgdGVzdCAqLworCVRYTUFDX1RYVEVTVF90IFR4TWFjVGVzdDsKKworCS8qIFBvaW50ZXIgdG8gdGhlIGRldmljZSdzIFBDSSByZWdpc3RlciBzcGFjZSAqLworCUFERFJFU1NfTUFQX3QgX19pb21lbSAqQ1NSQWRkcmVzczsKKworCS8qIFBDSSBjb25maWcgc3BhY2UgaW5mbywgZm9yIGRlYnVnIHB1cnBvc2VzIG9ubHkuICovCisJdTggUmV2aXNpb25JRDsKKwl1MTYgVmVuZG9ySUQ7CisJdTE2IERldmljZUlEOworCXUxNiBTdWJWZW5kb3JJRDsKKwl1MTYgU3ViU3lzdGVtSUQ7CisJdTMyIENhY2hlRmlsbFNpemU7CisJdTE2IFBjaVhEZXZDdGw7CisJdTggcGNpX2xhdF90aW1lcjsKKwl1OCBwY2lfaGRyX3R5cGU7CisJdTggcGNpX2Jpc3Q7CisJdTMyIHBjaV9jZmdfc3RhdGVbNjQgLyBzaXplb2YodTMyKV07CisKKwkvKiBSZWdpc3RyeSBwYXJhbWV0ZXJzICovCisJdTggU3BlZWREdXBsZXg7CQkvLyBzcGVlZC9kdXBsZXgKKwllRkxPV19DT05UUk9MX3QgUmVnaXN0cnlGbG93Q29udHJvbDsJLy8gZm9yIDgwMi4zeCBmbG93IGNvbnRyb2wKKwl1OCBSZWdpc3RyeVdPTE1hdGNoOwkvLyBFbmFibGUgV09MIHBhdHRlcm4tbWF0Y2hpbmcKKwl1OCBSZWdpc3RyeVdPTExpbms7CS8vIExpbmsgc3RhdGUgY2hhbmdlIGlzIGluZGVwZW5kYW50CisJdTggUmVnaXN0cnlQaHlDb21hOwkvLyBQaHkgQ29tYSBtb2RlIGVuYWJsZS9kaXNhYmxlCisKKwl1MzIgUmVnaXN0cnlSeE1lbUVuZDsJLy8gU2l6ZSBvZiBpbnRlcm5hbCByeCBtZW1vcnkKKwl1OCBSZWdpc3RyeU1BQ1N0YXQ7CS8vIElmIHNldCwgcmVhZCBNQUNTVEFULCBlbHNlIGRvbid0CisJdTMyIFJlZ2lzdHJ5VmxhblRhZzsJLy8gODAyLjFxIFZsYW4gVEFHCisJdTMyIFJlZ2lzdHJ5SnVtYm9QYWNrZXQ7CS8vIE1heCBzdXBwb3J0ZWQgZXRoZXJuZXQgcGFja2V0IHNpemUKKworCXUzMiBSZWdpc3RyeVR4TnVtQnVmZmVyczsKKwl1MzIgUmVnaXN0cnlUeFRpbWVJbnRlcnZhbDsKKworCXUzMiBSZWdpc3RyeVJ4TnVtQnVmZmVyczsKKwl1MzIgUmVnaXN0cnlSeFRpbWVJbnRlcnZhbDsKKworCS8qIFZhbGlkYXRpb24gaGVscGVycyAqLworCXU4IFJlZ2lzdHJ5UE1XT0w7CisJdTggUmVnaXN0cnlOTUlEaXNhYmxlOworCXUzMiBSZWdpc3RyeURNQUNhY2hlOworCXUzMiBSZWdpc3RyeVNDR2FpbjsKKwl1OCBSZWdpc3RyeVBoeUxvb3BiazsJLy8gRW5hYmxlIFBoeSBsb29wYmFjaworCisJLyogRGVyaXZlZCBmcm9tIHRoZSByZWdpc3RyeTogKi8KKwl1OCBBaUZvcmNlRHB4OwkJLy8gZHVwbGV4IHNldHRpbmcKKwl1MTYgQWlGb3JjZVNwZWVkOwkJLy8gJ1NwZWVkJywgdXNlciBvdmVyLXJpZGUgb2YgbGluZSBzcGVlZAorCWVGTE9XX0NPTlRST0xfdCBGbG93Q29udHJvbDsJLy8gZmxvdyBjb250cm9sIHZhbGlkYXRlZCBieSB0aGUgZmFyLWVuZAorCWVudW0geworCQlORVRJRl9TVEFUVVNfSU5WQUxJRCA9IDAsCisJCU5FVElGX1NUQVRVU19NRURJQV9DT05ORUNULAorCQlORVRJRl9TVEFUVVNfTUVESUFfRElTQ09OTkVDVCwKKwkJTkVUSUZfU1RBVFVTX01BWAorCX0gTWVkaWFTdGF0ZTsKKwl1OCBEcml2ZXJOb1BoeUFjY2VzczsKKworCS8qIE1pbmltaXplIGluaXQtdGltZSAqLworCWJvb2wgYlF1ZXJ5UGVuZGluZzsKKwlib29sIGJTZXRQZW5kaW5nOworCWJvb2wgYlJlc2V0UGVuZGluZzsKKwlzdHJ1Y3QgdGltZXJfbGlzdCBFcnJvclRpbWVyOworCWJvb2wgYkxpbmtUaW1lckFjdGl2ZTsKKwlNUF9QT1dFUl9NR01UIFBvTWdtdDsKKwlJTlRFUlJVUFRfdCBDYWNoZWRNYXNrVmFsdWU7CisKKwlhdG9taWNfdCBSY3ZSZWZDb3VudDsJLy8gTnVtIHBhY2tldHMgbm90IHlldCByZXR1cm5lZAorCisJLyogWGN2ciBzdGF0dXMgYXQgbGFzdCBwb2xsICovCisJTUlfQk1TUl90IEJtc3I7CisKKwkvKiBUeCBNZW1vcnkgVmFyaWFibGVzICovCisJVFhfUklOR190IFR4UmluZzsKKworCS8qIFJ4IE1lbW9yeSBWYXJpYWJsZXMgKi8KKwlSWF9SSU5HX3QgUnhSaW5nOworCisJLyogRVQxMzEwIHJlZ2lzdGVyIEFjY2VzcyAqLworCUpBR0NPUkVfQUNDRVNTX1JFR1MgSmFnQ29yZVJlZ3M7CisJUENJX0NGR19TUEFDRV9SRUdTIFBjaUNmZ1JlZ3M7CisKKwkvKiBMb29wYmFjayBzcGVjaWZpY3MgKi8KKwl1OCBSZXBsaWNhUGh5TG9vcGJrOwkvLyBSZXBsaWNhIEVuYWJsZQorCXU4IFJlcGxpY2FQaHlMb29wYmtQRjsJLy8gUmVwbGljYSBFbmFibGUgUGFzcy9GYWlsCisKKwkvKiBTdGF0cyAqLworCUNFX1NUQVRTX3QgU3RhdHM7CisKKwlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyBuZXRfc3RhdHM7CisJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgbmV0X3N0YXRzX3ByZXY7Cit9OworCisjZGVmaW5lIE1QU2VuZFBhY2tldHNIYW5kbGVyICBNUFNlbmRQYWNrZXRzCisjZGVmaW5lIE1QX0ZSRUVfU0VORF9QQUNLRVRfRlVOKEFkYXB0ZXIsIHBNcFRjYikgXAorCWV0MTMxeF9mcmVlX3NlbmRfcGFja2V0KEFkYXB0ZXIsIHBNcFRjYikKKyNkZWZpbmUgTXBTZW5kUGFja2V0RnVuKEFkYXB0ZXIsIFBhY2tldCkgTXBTZW5kUGFja2V0KEFkYXB0ZXIsIFBhY2tldCkKKworI2VuZGlmIC8qIF9fRVQxMzFYX0FEQVBURVJfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9jb25maWcuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2NvbmZpZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZGJhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9jb25maWcuYwpAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfY29uZmlnLmMgLSBIYW5kbGVzIHBhcnNpbmcgb2YgY29uZmlndXJhdGlvbiBkYXRhIGR1cmluZworICogICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJldDEzMXhfdmVyc2lvbi5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWJ1Zy5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWZzLmgiCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKworI2luY2x1ZGUgImV0MTMxeF9hZGFwdGVyLmgiCisjaW5jbHVkZSAiZXQxMzF4X2luaXRwY2kuaCIKKyNpbmNsdWRlICJldDEzMXhfY29uZmlnLmgiCisKKyNpbmNsdWRlICJldDEzMTBfdHguaCIKKworLyogRGF0YSBmb3IgZGVidWdnaW5nIGZhY2lsaXRpZXMgKi8KKyNpZmRlZiBDT05GSUdfRVQxMzFYX0RFQlVHCitleHRlcm4gZGJnX2luZm9fdCAqZXQxMzF4X2RiZ2luZm87CisjZW5kaWYgLyogQ09ORklHX0VUMTMxWF9ERUJVRyAqLworCisvKiBEZWZpbmVzIGZvciBQYXJhbWV0ZXIgRGVmYXVsdC9NaW4vTWF4IHZhdWxlcyAqLworI2RlZmluZSBQQVJNX1NQRUVEX0RVUExFWF9ERUYgICAwCisjZGVmaW5lIFBBUk1fU1BFRURfRFVQTEVYX01JTiAgIDAKKyNkZWZpbmUgUEFSTV9TUEVFRF9EVVBMRVhfTUFYICAgNQorCisjZGVmaW5lIFBBUk1fVkxBTl9UQUdfREVGICAgICAgIDAKKyNkZWZpbmUgUEFSTV9WTEFOX1RBR19NSU4gICAgICAgMAorI2RlZmluZSBQQVJNX1ZMQU5fVEFHX01BWCAgICAgICA0MDk1CisKKyNkZWZpbmUgUEFSTV9GTE9XX0NUTF9ERUYgICAgICAgMAorI2RlZmluZSBQQVJNX0ZMT1dfQ1RMX01JTiAgICAgICAwCisjZGVmaW5lIFBBUk1fRkxPV19DVExfTUFYICAgICAgIDMKKworI2RlZmluZSBQQVJNX1dPTF9MSU5LX0RFRiAgICAgICAzCisjZGVmaW5lIFBBUk1fV09MX0xJTktfTUlOICAgICAgIDAKKyNkZWZpbmUgUEFSTV9XT0xfTElOS19NQVggICAgICAgMworCisjZGVmaW5lIFBBUk1fV09MX01BVENIX0RFRiAgICAgIDcKKyNkZWZpbmUgUEFSTV9XT0xfTUFUQ0hfTUlOICAgICAgMAorI2RlZmluZSBQQVJNX1dPTF9NQVRDSF9NQVggICAgICA3CisKKyNkZWZpbmUgUEFSTV9KVU1CT19QS1RfREVGICAgICAgMTUxNAorI2RlZmluZSBQQVJNX0pVTUJPX1BLVF9NSU4gICAgICAxNTE0CisjZGVmaW5lIFBBUk1fSlVNQk9fUEtUX01BWCAgICAgIDkyMTYKKworI2RlZmluZSBQQVJNX1BIWV9DT01BX0RFRiAgICAgICAwCisjZGVmaW5lIFBBUk1fUEhZX0NPTUFfTUlOICAgICAgIDAKKyNkZWZpbmUgUEFSTV9QSFlfQ09NQV9NQVggICAgICAgMQorCisjZGVmaW5lIFBBUk1fUlhfTlVNX0JVRlNfREVGICAgIDQKKyNkZWZpbmUgUEFSTV9SWF9OVU1fQlVGU19NSU4gICAgMQorI2RlZmluZSBQQVJNX1JYX05VTV9CVUZTX01BWCAgICA2NAorCisjZGVmaW5lIFBBUk1fUlhfVElNRV9JTlRfREVGICAgIDEwCisjZGVmaW5lIFBBUk1fUlhfVElNRV9JTlRfTUlOICAgIDIKKyNkZWZpbmUgUEFSTV9SWF9USU1FX0lOVF9NQVggICAgMzIwCisKKyNkZWZpbmUgUEFSTV9UWF9OVU1fQlVGU19ERUYgICAgNAorI2RlZmluZSBQQVJNX1RYX05VTV9CVUZTX01JTiAgICAxCisjZGVmaW5lIFBBUk1fVFhfTlVNX0JVRlNfTUFYICAgIDQwCisKKyNkZWZpbmUgUEFSTV9UWF9USU1FX0lOVF9ERUYgICAgNDAKKyNkZWZpbmUgUEFSTV9UWF9USU1FX0lOVF9NSU4gICAgMQorI2RlZmluZSBQQVJNX1RYX1RJTUVfSU5UX01BWCAgICAxNDAKKworI2RlZmluZSBQQVJNX1JYX01FTV9FTkRfREVGICAgICAweDJiYworI2RlZmluZSBQQVJNX1JYX01FTV9FTkRfTUlOICAgICAwCisjZGVmaW5lIFBBUk1fUlhfTUVNX0VORF9NQVggICAgIDB4M2ZmCisKKyNkZWZpbmUgUEFSTV9NQUNfU1RBVF9ERUYgICAgICAgMQorI2RlZmluZSBQQVJNX01BQ19TVEFUX01JTiAgICAgICAwCisjZGVmaW5lIFBBUk1fTUFDX1NUQVRfTUFYICAgICAgIDEKKworI2RlZmluZSBQQVJNX1NDX0dBSU5fREVGICAgICAgICA3CisjZGVmaW5lIFBBUk1fU0NfR0FJTl9NSU4gICAgICAgIDAKKyNkZWZpbmUgUEFSTV9TQ19HQUlOX01BWCAgICAgICAgNworCisjZGVmaW5lIFBBUk1fUE1fV09MX0RFRiAgICAgICAgIDAKKyNkZWZpbmUgUEFSTV9QTV9XT0xfTUlOICAgICAgICAgMAorI2RlZmluZSBQQVJNX1BNX1dPTF9NQVggICAgICAgICAxCisKKyNkZWZpbmUgUEFSTV9OTUlfRElTQUJMRV9ERUYgICAgMAorI2RlZmluZSBQQVJNX05NSV9ESVNBQkxFX01JTiAgICAwCisjZGVmaW5lIFBBUk1fTk1JX0RJU0FCTEVfTUFYICAgIDIKKworI2RlZmluZSBQQVJNX0RNQV9DQUNIRV9ERUYgICAgICAwCisjZGVmaW5lIFBBUk1fRE1BX0NBQ0hFX01JTiAgICAgIDAKKyNkZWZpbmUgUEFSTV9ETUFfQ0FDSEVfTUFYICAgICAgMTUKKworI2RlZmluZSBQQVJNX1BIWV9MT09QQktfREVGICAgICAwCisjZGVmaW5lIFBBUk1fUEhZX0xPT1BCS19NSU4gICAgIDAKKyNkZWZpbmUgUEFSTV9QSFlfTE9PUEJLX01BWCAgICAgMQorCisjZGVmaW5lIFBBUk1fTUFDX0FERFJFU1NfREVGICAgIHsgMHgwMCwgMHgwNSwgMHgzZCwgMHgwMCwgMHgwMiwgMHgwMCB9CisKKy8qIE1vZHVsZSBwYXJhbWV0ZXIgZm9yIGRpc2FibGluZyBOTUkKKyAqIGV0MTMxeF9zcGVlZF9zZXQgOgorICogU2V0IExpbmsgc3BlZWQgYW5kIGR1YmxleCBtYW51YWxseSAoMC01KSAgWzBdCisgKiAgMSA6IDEwTWIgICBIYWxmLUR1cGxleAorICogIDIgOiAxME1iICAgRnVsbC1EdXBsZXgKKyAqICAzIDogMTAwTWIgIEhhbGYtRHVwbGV4CisgKiAgNCA6IDEwME1iICBGdWxsLUR1cGxleAorICogIDUgOiAxMDAwTWIgRnVsbC1EdXBsZXgKKyAqICAwIDogQXV0byBTcGVlZCBBdXRvIER1YmxleCAvLyBkZWZhdWx0CisgKi8KK3N0YXRpYyB1MzIgZXQxMzF4X25taV9kaXNhYmxlID0gUEFSTV9OTUlfRElTQUJMRV9ERUY7Cittb2R1bGVfcGFyYW0oZXQxMzF4X25taV9kaXNhYmxlLCB1aW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MoZXQxMzF4X25taV9kaXNhYmxlLCAiRGlzYWJsZSBOTUkgKDAtMikgWzBdIik7CisKKy8qIE1vZHVsZSBwYXJhbWV0ZXIgZm9yIG1hbnVhbCBzcGVlZCBzZXR0aW5nCisgKiBldDEzMXhfbm1pX2Rpc2FibGUgOgorICogRGlzYWJsZSBOTUkgKDAtMikgWzBdCisgKiAgMCA6CisgKiAgMSA6CisgKiAgMiA6CisgKi8KK3N0YXRpYyB1MzIgZXQxMzF4X3NwZWVkX3NldCA9IFBBUk1fU1BFRURfRFVQTEVYX0RFRjsKK21vZHVsZV9wYXJhbShldDEzMXhfc3BlZWRfc2V0LCB1aW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MoZXQxMzF4X3NwZWVkX3NldCwKKwkJICJTZXQgTGluayBzcGVlZCBhbmQgZHVibGV4IG1hbnVhbGx5ICgwLTUpICBbMF0gXG4gIDEgOiAxME1iICAgSGFsZi1EdXBsZXggXG4gIDIgOiAxME1iICAgRnVsbC1EdXBsZXggXG4gIDMgOiAxMDBNYiAgSGFsZi1EdXBsZXggXG4gIDQgOiAxMDBNYiAgRnVsbC1EdXBsZXggXG4gIDUgOiAxMDAwTWIgRnVsbC1EdXBsZXggXG4gMCA6IEF1dG8gU3BlZWQgQXV0byBEdWJsZXgiKTsKKworLyoqCisgKiBldDEzMXhfY29uZmlnX3BhcnNlCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3QKKyAqCisgKiBQYXJzZXMgYSBjb25maWd1cmF0aW9uIGZyb20gc29tZSBsb2NhdGlvbiAobW9kdWxlIHBhcmFtZXRlcnMsIGZvciBleGFtcGxlKQorICogaW50byB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdAorICovCit2b2lkIGV0MTMxeF9jb25maWdfcGFyc2Uoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwl1aW50OF90IG1hY0FkZHJEZWZbXSA9IFBBUk1fTUFDX0FERFJFU1NfREVGOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qCisJICogVGhlIE5ESVMgZHJpdmVyIHVzZXMgdGhlIHJlZ2lzdHJ5IHRvIHN0b3JlIHBlcnNpc3RlbnQgcGVyLWRldmljZQorCSAqIGNvbmZpZ3VyYXRpb24sIGFuZCByZWFkcyB0aGlzIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgYXBwcm9wcmlhdGUKKwkgKiBlbGVtZW50cyBvZiB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZSBvbiBpbml0aWFsaXphdGlvbi4KKwkgKiBCZWNhdXNlIExpbnV4IGhhcyBubyBhbmFsb2cgdG8gdGhlIHJlZ2lzdHJ5LCB1c2UgdGhpcyBmdW5jdGlvbiB0bworCSAqIGluaXRpYWxpemUgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUgd2l0aCBhIGRlZmF1bHQKKwkgKiBjb25maWd1cmF0aW9uLgorCSAqCisJICogT25lIG90aGVyIHBvc3NpYmlsaXR5IGlzIHRvIHVzZSBhIHNlcmllcyBvZiBtb2R1bGUgcGFyYW1ldGVycyB3aGljaAorCSAqIGNhbiBiZSBwYXNzZWQgaW4gYnkgdGhlIGNhbGxlciB3aGVuIHRoZSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuCisJICogSG93ZXZlciwgdGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBmb3Igc2VwZXJhdGUKKwkgKiBjb25maWd1cmF0aW9ucyBpbiB0aGUgZXZlbnQgbXVsdGlwbGUgZGV2aWNlcyBhcmUgcHJlc2VudCwgYW5kIGhlbmNlCisJICogd2lsbCBub3Qgc3VmZmljZS4KKwkgKgorCSAqIElmIGFub3RoZXIgbWV0aG9kIGlzIGRlcml2ZWQgd2hpY2ggYWRkcmVzc2VzIHRoaXMgcHJvYmxlbSwgdGhpcyBpcworCSAqIHdoZXJlIGl0IHNob3VsZCBiZSBpbXBsZW1lbnRlZC4KKwkgKi8KKworCSAvKiBTZXQgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlCisJICAqIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycworCSAgKi8KKwlpZiAoZXQxMzF4X3NwZWVkX3NldCAhPSBQQVJNX1NQRUVEX0RVUExFWF9ERUYpIHsKKwkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sICJTcGVlZCBzZXQgbWFudWFsbHkgdG8gOiAlZCBcbiIsCisJCQkgICAgZXQxMzF4X3NwZWVkX3NldCk7CisJCXBBZGFwdGVyLT5TcGVlZER1cGxleCA9IGV0MTMxeF9zcGVlZF9zZXQ7CisJfSBlbHNlIHsKKwkJcEFkYXB0ZXItPlNwZWVkRHVwbGV4ID0gUEFSTV9TUEVFRF9EVVBMRVhfREVGOworCX0KKworCS8vICBwQWRhcHRlci0+U3BlZWREdXBsZXggICAgICAgICAgICA9IFBBUk1fU1BFRURfRFVQTEVYX0RFRjsKKworCXBBZGFwdGVyLT5SZWdpc3RyeVZsYW5UYWcgPSBQQVJNX1ZMQU5fVEFHX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlGbG93Q29udHJvbCA9IFBBUk1fRkxPV19DVExfREVGOworCXBBZGFwdGVyLT5SZWdpc3RyeVdPTExpbmsgPSBQQVJNX1dPTF9MSU5LX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlXT0xNYXRjaCA9IFBBUk1fV09MX01BVENIX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlKdW1ib1BhY2tldCA9IFBBUk1fSlVNQk9fUEtUX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlQaHlDb21hID0gUEFSTV9QSFlfQ09NQV9ERUY7CisJcEFkYXB0ZXItPlJlZ2lzdHJ5UnhOdW1CdWZmZXJzID0gUEFSTV9SWF9OVU1fQlVGU19ERUY7CisJcEFkYXB0ZXItPlJlZ2lzdHJ5UnhUaW1lSW50ZXJ2YWwgPSBQQVJNX1JYX1RJTUVfSU5UX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlUeE51bUJ1ZmZlcnMgPSBQQVJNX1RYX05VTV9CVUZTX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlUeFRpbWVJbnRlcnZhbCA9IFBBUk1fVFhfVElNRV9JTlRfREVGOworCXBBZGFwdGVyLT5SZWdpc3RyeVJ4TWVtRW5kID0gUEFSTV9SWF9NRU1fRU5EX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlNQUNTdGF0ID0gUEFSTV9NQUNfU1RBVF9ERUY7CisJcEFkYXB0ZXItPlJlZ2lzdHJ5U0NHYWluID0gUEFSTV9TQ19HQUlOX0RFRjsKKwlwQWRhcHRlci0+UmVnaXN0cnlQTVdPTCA9IFBBUk1fUE1fV09MX0RFRjsKKworCWlmIChldDEzMXhfbm1pX2Rpc2FibGUgIT0gUEFSTV9OTUlfRElTQUJMRV9ERUYpIHsKKwkJcEFkYXB0ZXItPlJlZ2lzdHJ5Tk1JRGlzYWJsZSA9IGV0MTMxeF9ubWlfZGlzYWJsZTsKKwl9IGVsc2UgeworCQlwQWRhcHRlci0+UmVnaXN0cnlOTUlEaXNhYmxlID0gUEFSTV9OTUlfRElTQUJMRV9ERUY7CisJfQorCisJcEFkYXB0ZXItPlJlZ2lzdHJ5RE1BQ2FjaGUgPSBQQVJNX0RNQV9DQUNIRV9ERUY7CisJcEFkYXB0ZXItPlJlZ2lzdHJ5UGh5TG9vcGJrID0gUEFSTV9QSFlfTE9PUEJLX0RFRjsKKworCS8qIFNldCB0aGUgTUFDIGFkZHJlc3MgdG8gYSBkZWZhdWx0ICovCisJbWVtY3B5KHBBZGFwdGVyLT5DdXJyZW50QWRkcmVzcywgbWFjQWRkckRlZiwgRVRIX0FMRU4pOworCXBBZGFwdGVyLT5iT3ZlcnJpZGVBZGRyZXNzID0gZmFsc2U7CisKKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sCisJCSAgIkRlZmF1bHQgTUFDIEFkZHJlc3MgIDogJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsCisJCSAgcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzBdLCBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbMV0sCisJCSAgcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzJdLCBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbM10sCisJCSAgcEFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzWzRdLCBwQWRhcHRlci0+Q3VycmVudEFkZHJlc3NbNV0pOworCisJLyogRGVjb2RlIFNwZWVkRHVwbGV4CisJICoKKwkgKiBTZXQgdXAgYXMgaWYgd2UgYXJlIGF1dG8gbmVnb3RpYXRpbmcgYWx3YXlzIGFuZCB0aGVuIGNoYW5nZSBpZiB3ZQorCSAqIGdvIGludG8gZm9yY2UgbW9kZQorCSAqLworCXBBZGFwdGVyLT5BaUZvcmNlU3BlZWQgPSAwOwkvLyBBdXRvIHNwZWVkCisJcEFkYXB0ZXItPkFpRm9yY2VEcHggPSAwOwkvLyBBdXRvIEZEWAorCisJLyogSWYgd2UgYXJlIHRoZSAxMC8xMDAgZGV2aWNlLCBhbmQgZ2lnYWJpdCBpcyBzb21laG93IHJlcXVlc3RlZCB0aGVuCisJICoga25vY2sgaXQgZG93biB0byAxMDAgZnVsbC4KKwkgKi8KKwlpZiAoKHBBZGFwdGVyLT5EZXZpY2VJRCA9PSBFVDEzMVhfUENJX0RFVklDRV9JRF9GQVNUKSAmJgorCSAgICAocEFkYXB0ZXItPlNwZWVkRHVwbGV4ID09IDUpKSB7CisJCXBBZGFwdGVyLT5TcGVlZER1cGxleCA9IDQ7CisJfQorCisJc3dpdGNoIChwQWRhcHRlci0+U3BlZWREdXBsZXgpIHsKKwljYXNlIDE6CQkvLyAxME1iICAgSGFsZi1EdXBsZXgKKwkJcEFkYXB0ZXItPkFpRm9yY2VTcGVlZCA9IDEwOworCQlwQWRhcHRlci0+QWlGb3JjZURweCA9IDE7CisJCWJyZWFrOworCisJY2FzZSAyOgkJLy8gMTBNYiAgIEZ1bGwtRHVwbGV4CisJCXBBZGFwdGVyLT5BaUZvcmNlU3BlZWQgPSAxMDsKKwkJcEFkYXB0ZXItPkFpRm9yY2VEcHggPSAyOworCQlicmVhazsKKworCWNhc2UgMzoJCS8vIDEwME1iICBIYWxmLUR1cGxleAorCQlwQWRhcHRlci0+QWlGb3JjZVNwZWVkID0gMTAwOworCQlwQWRhcHRlci0+QWlGb3JjZURweCA9IDE7CisJCWJyZWFrOworCisJY2FzZSA0OgkJLy8gMTAwTWIgIEZ1bGwtRHVwbGV4CisJCXBBZGFwdGVyLT5BaUZvcmNlU3BlZWQgPSAxMDA7CisJCXBBZGFwdGVyLT5BaUZvcmNlRHB4ID0gMjsKKwkJYnJlYWs7CisKKwljYXNlIDU6CQkvLyAxMDAwTWIgRnVsbC1EdXBsZXgKKwkJcEFkYXB0ZXItPkFpRm9yY2VTcGVlZCA9IDEwMDA7CisJCXBBZGFwdGVyLT5BaUZvcmNlRHB4ID0gMjsKKwkJYnJlYWs7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2NvbmZpZy5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyYzBmNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2NvbmZpZy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzF4X2NvbmZpZy5oIC0gRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gdG8gc3VwcG9ydAorICogICAgICAgICAgICAgICAgICAgZXQxMzF4X2NvbmZpZy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19FVDEzMVhfQ09ORklHX0hfXworI2RlZmluZSBfX0VUMTMxWF9DT05GSUdfSF9fCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBldDEzMXhfYWRhcHRlcjsKKwordm9pZCBldDEzMXhfY29uZmlnX3BhcnNlKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKKyNlbmRpZiAvKiBfX0VUMTMxWF9DT05GSUdfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9kZWJ1Zy5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfZGVidWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWU1YmNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfZGVidWcuYwpAQCAtMCwwICsxLDIxOCBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfZGVidWcuYyAtIFJvdXRpbmVzIHVzZWQgZm9yIGRlYnVnZ2luZy4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKworI2luY2x1ZGUgImV0MTMxMF9waHkuaCIKKyNpbmNsdWRlICJldDEzMTBfcG0uaCIKKyNpbmNsdWRlICJldDEzMTBfamFnY29yZS5oIgorCisjaW5jbHVkZSAiZXQxMzF4X2FkYXB0ZXIuaCIKKyNpbmNsdWRlICJldDEzMXhfbmV0ZGV2LmgiCisjaW5jbHVkZSAiZXQxMzF4X2NvbmZpZy5oIgorI2luY2x1ZGUgImV0MTMxeF9pc3IuaCIKKworI2luY2x1ZGUgImV0MTMxMF9hZGRyZXNzX21hcC5oIgorI2luY2x1ZGUgImV0MTMxMF9qYWdjb3JlLmgiCisjaW5jbHVkZSAiZXQxMzEwX3R4LmgiCisjaW5jbHVkZSAiZXQxMzEwX3J4LmgiCisjaW5jbHVkZSAiZXQxMzEwX21hYy5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworZXh0ZXJuIGRiZ19pbmZvX3QgKmV0MTMxeF9kYmdpbmZvOworCisvKioKKyAqIER1bXBUeFF1ZXVlQ29udGVudHMgLSBEdW1wIG91dCB0aGUgdHggcXVldWUgYW5kIHRoZSBzaGFkb3cgcG9pbnRlcnMKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqLwordm9pZCBEdW1wVHhRdWV1ZUNvbnRlbnRzKGludCBkYmdMdmwsIHN0cnVjdCBldDEzMXhfYWRhcHRlciAqcEFkYXB0ZXIpCit7CisJTU1DX3QgX19pb21lbSAqbW1jID0gJnBBZGFwdGVyLT5DU1JBZGRyZXNzLT5tbWM7CisJdWludDMyX3QgVHhRdWV1ZUFkZHI7CisKKwlpZiAoREJHX0ZMQUdTKGV0MTMxeF9kYmdpbmZvKSAmIGRiZ0x2bCkgeworCQlmb3IgKFR4UXVldWVBZGRyID0gMHgyMDA7IFR4UXVldWVBZGRyIDwgMHgzZmY7IFR4UXVldWVBZGRyKyspIHsKKwkJCU1NQ19TUkFNX0FDQ0VTU190IHNyYW1fYWNjZXNzOworCisJCQlzcmFtX2FjY2Vzcy52YWx1ZSA9IHJlYWRsKCZtbWMtPnNyYW1fYWNjZXNzLnZhbHVlKTsKKwkJCXNyYW1fYWNjZXNzLmJpdHMucmVxX2FkZHIgPSBUeFF1ZXVlQWRkcjsKKwkJCXNyYW1fYWNjZXNzLmJpdHMucmVxX2FjY2VzcyA9IDE7CisJCQl3cml0ZWwoc3JhbV9hY2Nlc3MudmFsdWUsICZtbWMtPnNyYW1fYWNjZXNzLnZhbHVlKTsKKworCQkJREJHX1BSSU5UKCJBZGRyIDB4JXgsIEFjY2VzcyAweCUwOHhcdCIKKwkJCQkgICJWYWx1ZSAxIDB4JTA4eCwgVmFsdWUgMiAweCUwOHgsICIKKwkJCQkgICJWYWx1ZSAzIDB4JTA4eCwgVmFsdWUgNCAweCUwOHgsIFxuIiwKKwkJCQkgIFR4UXVldWVBZGRyLAorCQkJCSAgcmVhZGwoJm1tYy0+c3JhbV9hY2Nlc3MudmFsdWUpLAorCQkJCSAgcmVhZGwoJm1tYy0+c3JhbV93b3JkMSksCisJCQkJICByZWFkbCgmbW1jLT5zcmFtX3dvcmQyKSwKKwkJCQkgIHJlYWRsKCZtbWMtPnNyYW1fd29yZDMpLAorCQkJCSAgcmVhZGwoJm1tYy0+c3JhbV93b3JkNCkpOworCQl9CisKKwkJREJHX1BSSU5UKCJTaGFkb3cgUG9pbnRlcnMgMHglMDh4XG4iLAorCQkJICByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPnR4bWFjLnNoYWRvd19wdHIudmFsdWUpKTsKKwl9Cit9CisKKy8qKgorICogRHVtcERldmljZUJsb2NrCisgKiBAcEFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKKyAqCisgKiBEdW1wcyB0aGUgZmlyc3QgNjQgcmVncyBvZiBlYWNoIGJsb2NrIG9mIHRoZSBldC0xMzEwIChlYWNoIGJsb2NrIGlzCisgKiBtYXBwZWQgdG8gYSBuZXcgcGFnZSwgZWFjaCBwYWdlIGlzIDQwOTYgYnl0ZXMpLgorICovCisjZGVmaW5lIE5VTV9CTE9DS1MgOAordm9pZCBEdW1wRGV2aWNlQmxvY2soaW50IGRiZ0x2bCwgc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciwKKwkJICAgICB1aW50MzJfdCBCbG9jaykKK3sKKwl1aW50MzJfdCBBZGRyZXNzMSwgQWRkcmVzczI7CisJdWludDMyX3QgX19pb21lbSAqQmlnRGV2aWNlUG9pbnRlciA9CisJCSh1aW50MzJfdCBfX2lvbWVtICopIHBBZGFwdGVyLT5DU1JBZGRyZXNzOworCWNvbnN0IGNoYXIgKkJsb2NrTmFtZXNbTlVNX0JMT0NLU10gPSB7CisJCSJHbG9iYWwiLCAiVHggRE1BIiwgIlJ4IERNQSIsICJUeCBNQUMiLAorCQkiUnggTUFDIiwgIk1BQyIsICJNQUMgU3RhdCIsICJNTUMiCisJfTsKKworCS8qIE91dHB1dCB0aGUgZGVidWcgY291bnRlcnMgdG8gdGhlIGRlYnVnIHRlcm1pbmFsICovCisJaWYgKERCR19GTEFHUyhldDEzMXhfZGJnaW5mbykgJiBkYmdMdmwpIHsKKwkJREJHX1BSSU5UKCIlcyBibG9ja1xuIiwgQmxvY2tOYW1lc1tCbG9ja10pOworCQlCaWdEZXZpY2VQb2ludGVyICs9IEJsb2NrICogMTAyNDsKKwkJZm9yIChBZGRyZXNzMSA9IDA7IEFkZHJlc3MxIDwgODsgQWRkcmVzczErKykgeworCQkJZm9yIChBZGRyZXNzMiA9IDA7IEFkZHJlc3MyIDwgODsgQWRkcmVzczIrKykgeworCQkJCWlmIChCbG9jayA9PSAwICYmCisJCQkJICAgIChBZGRyZXNzMSAqIDggKyBBZGRyZXNzMikgPT0gNikgeworCQkJCQlEQkdfUFJJTlQoIiAgSVNSICAgICwgIik7CisJCQkJfSBlbHNlIHsKKwkJCQkJREJHX1BSSU5UKCIweCUwOHgsICIsCisJCQkJCQkgIHJlYWRsKEJpZ0RldmljZVBvaW50ZXIrKykpOworCQkJCX0KKwkJCX0KKwkJCURCR19QUklOVCgiXG4iKTsKKwkJfQorCQlEQkdfUFJJTlQoIlxuIik7CisJfQorfQorCisvKioKKyAqIER1bXBEZXZpY2VSZWcKKyAqIEBwQWRhcHRlcjogcG9pbnRlciB0byBvdXIgYWRhcHRlcgorICoKKyAqIER1bXBzIHRoZSBmaXJzdCA2NCByZWdzIG9mIGVhY2ggYmxvY2sgb2YgdGhlIGV0LTEzMTAgKGVhY2ggYmxvY2sgaXMKKyAqIG1hcHBlZCB0byBhIG5ldyBwYWdlLCBlYWNoIHBhZ2UgaXMgNDA5NiBieXRlcykuCisgKi8KK3ZvaWQgRHVtcERldmljZVJlZyhpbnQgZGJnTHZsLCBzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyKQoreworCXVpbnQzMl90IEFkZHJlc3MxLCBBZGRyZXNzMjsKKwl1aW50MzJfdCBCbG9jazsKKwl1aW50MzJfdCBfX2lvbWVtICpCaWdEZXZpY2VQb2ludGVyID0KKwkJKHVpbnQzMl90IF9faW9tZW0gKikgcEFkYXB0ZXItPkNTUkFkZHJlc3M7CisJdWludDMyX3QgX19pb21lbSAqUG9pbnRlcjsKKwljb25zdCBjaGFyICpCbG9ja05hbWVzW05VTV9CTE9DS1NdID0geworCQkiR2xvYmFsIiwgIlR4IERNQSIsICJSeCBETUEiLCAiVHggTUFDIiwKKwkJIlJ4IE1BQyIsICJNQUMiLCAiTUFDIFN0YXQiLCAiTU1DIgorCX07CisKKwkvKiBPdXRwdXQgdGhlIGRlYnVnIGNvdW50ZXJzIHRvIHRoZSBkZWJ1ZyB0ZXJtaW5hbCAqLworCWlmIChEQkdfRkxBR1MoZXQxMzF4X2RiZ2luZm8pICYgZGJnTHZsKSB7CisJCWZvciAoQmxvY2sgPSAwOyBCbG9jayA8IE5VTV9CTE9DS1M7IEJsb2NrKyspIHsKKwkJCURCR19QUklOVCgiJXMgYmxvY2tcbiIsIEJsb2NrTmFtZXNbQmxvY2tdKTsKKwkJCVBvaW50ZXIgPSBCaWdEZXZpY2VQb2ludGVyICsgKEJsb2NrICogMTAyNCk7CisKKwkJCWZvciAoQWRkcmVzczEgPSAwOyBBZGRyZXNzMSA8IDg7IEFkZHJlc3MxKyspIHsKKwkJCQlmb3IgKEFkZHJlc3MyID0gMDsgQWRkcmVzczIgPCA4OyBBZGRyZXNzMisrKSB7CisJCQkJCURCR19QUklOVCgiMHglMDh4LCAiLAorCQkJCQkJICByZWFkbChQb2ludGVyKyspKTsKKwkJCQl9CisJCQkJREJHX1BSSU5UKCJcbiIpOworCQkJfQorCQkJREJHX1BSSU5UKCJcbiIpOworCQl9CisJfQorfQorCisjZW5kaWYgLy8gQ09ORklHX0VUMTMxWF9ERUJVRwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfZGVidWcuaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2RlYnVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFiNjA4MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2RlYnVnLmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzF4X2RlYnVnLmggLSBEZWZpbmVzLCBzdHJ1Y3RzLCBlbnVtcywgcHJvdG90eXBlcywgZXRjLiB1c2VkIGZvcgorICogICAgICAgICAgICAgICAgICBvdXRwdXR0aW5nIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBzeXN0ZW0gbG9nZ2luZyBmYWNpbGl0eQorICogICAgICAgICAgICAgICAgICAoa3N5c2xvZ2QpCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19FVDEzMVhfREJHX0hfXworI2RlZmluZSBfX0VUMTMxWF9EQkdfSF9fCisKKy8qIERlZmluZSBNYXNrcyBmb3IgZGVidWdnaW5nIHR5cGVzL2xldmVscyAqLworI2RlZmluZSBEQkdfRVJST1JfT04gICAgICAgIDB4MDAwMDAwMDFMCisjZGVmaW5lIERCR19XQVJOSU5HX09OICAgICAgMHgwMDAwMDAwMkwKKyNkZWZpbmUgREJHX05PVElDRV9PTiAgICAgICAweDAwMDAwMDA0TAorI2RlZmluZSBEQkdfVFJBQ0VfT04gICAgICAgIDB4MDAwMDAwMDhMCisjZGVmaW5lIERCR19WRVJCT1NFX09OICAgICAgMHgwMDAwMDAxMEwKKyNkZWZpbmUgREJHX1BBUkFNX09OICAgICAgICAweDAwMDAwMDIwTAorI2RlZmluZSBEQkdfQlJFQUtfT04gICAgICAgIDB4MDAwMDAwNDBMCisjZGVmaW5lIERCR19SWF9PTiAgICAgICAgICAgMHgwMDAwMDEwMEwKKyNkZWZpbmUgREJHX1RYX09OICAgICAgICAgICAweDAwMDAwMjAwTAorCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCisvKgorICogU2V0IHRoZSBsZXZlbCBvZiBkZWJ1Z2dpbmcgaWYgbm90IGRvbmUgd2l0aCBhIHByZXByb2Nlc3NvciBkZWZpbmUuIFNlZQorICogZXQxMzF4X21haW4uYywgZnVuY3Rpb24gZXQxMzF4X2luaXRfbW9kdWxlKCkgZm9yIGhvdyB0aGUgZGVidWcgbGV2ZWwKKyAqIHRyYW5zbGF0ZXMgaW50byB0aGUgdHlwZXMgb2YgbWVzc2FnZXMgZGlzcGxheWVkLgorICovCisjaWZuZGVmIERCR19MVkwKKyNkZWZpbmUgREJHX0xWTAkzCisjZW5kaWYgLyogREJHX0xWTCAqLworCisjZGVmaW5lIERCR19ERUZBVUxUUwkJKERCR19FUlJPUl9PTiB8IERCR19XQVJOSU5HX09OIHwgREJHX0JSRUFLX09OICkKKworI2RlZmluZSBEQkdfRkxBR1MoQSkJCShBKS0+ZGJnRmxhZ3MKKyNkZWZpbmUgREJHX05BTUUoQSkJCShBKS0+ZGJnTmFtZQorI2RlZmluZSBEQkdfTEVWRUwoQSkJCShBKS0+ZGJnTGV2ZWwKKworI2lmbmRlZiBEQkdfUFJJTlQKKyNkZWZpbmUgREJHX1BSSU5UKFMuLi4pCQlwcmludGsoS0VSTl9ERUJVRyBTKQorI2VuZGlmIC8qIERCR19QUklOVCAqLworCisjaWZuZGVmIERCR19QUklOVEMKKyNkZWZpbmUgREJHX1BSSU5UQyhTLi4uKQlwcmludGsoUykKKyNlbmRpZiAvKiBEQkdfUFJJTlRDICovCisKKyNpZm5kZWYgREJHX1RSQVAKKyNkZWZpbmUgREJHX1RSQVAJCXt9CS8qIEJVRygpICovCisjZW5kaWYgLyogREJHX1RSQVAgKi8KKworI2RlZmluZSBfRU5URVJfU1RSCSI+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IgorI2RlZmluZSBfTEVBVkVfU1RSCSI8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8IgorCisjZGVmaW5lIF9EQkdfRU5URVIoQSkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiUuKnM6JXNcbiIsIERCR19OQU1FKEEpLAlcCisJCQkJKytEQkdfTEVWRUwoQSksIF9FTlRFUl9TVFIsIF9fZnVuY19fKQorI2RlZmluZSBfREJHX0xFQVZFKEEpCXByaW50ayhLRVJOX0RFQlVHICIlczolLipzOiVzXG4iLCBEQkdfTkFNRShBKSwJXAorCQkJCURCR19MRVZFTChBKS0tLCBfTEVBVkVfU1RSLCBfX2Z1bmNfXykKKworI2RlZmluZSBEQkdfRU5URVIoQSkgICAgICAgIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1RSQUNFX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EQkdfRU5URVIoQSk7fQorCisjZGVmaW5lIERCR19MRUFWRShBKSAgICAgICAge2lmIChEQkdfRkxBR1MoQSkgJiBEQkdfVFJBQ0VfT04pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0RCR19MRUFWRShBKTt9CisKKyNkZWZpbmUgREJHX1BBUkFNKEEsTixGLFMuLi4pICAge2lmIChEQkdfRkxBR1MoQSkgJiBEQkdfUEFSQU1fT04pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCR19QUklOVCgiICAlcyAtLSAiRiJcbiIsTixTKTt9CisKKyNkZWZpbmUgREJHX0VSUk9SKEEsUy4uLikJXAorCWlmIChEQkdfRkxBR1MoQSkgJiBEQkdfRVJST1JfT04pIHsJCQkJXAorCQlEQkdfUFJJTlQoIiVzOkVSUk9SOiVzICIsREJHX05BTUUoQSksIF9fZnVuY19fKTsJXAorCQlEQkdfUFJJTlRDKFMpOwkJCQkJCVwKKwkJREJHX1RSQVA7CQkJCQkJXAorCX0KKworI2RlZmluZSBEQkdfV0FSTklORyhBLFMuLi4pIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1dBUk5JTkdfT04pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0RCR19QUklOVCgiJXM6V0FSTklORzolcyAiLERCR19OQU1FKEEpLF9fZnVuY19fKTtEQkdfUFJJTlRDKFMpO319CisKKyNkZWZpbmUgREJHX05PVElDRShBLFMuLi4pICB7aWYgKERCR19GTEFHUyhBKSAmIERCR19OT1RJQ0VfT04pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0RCR19QUklOVCgiJXM6Tk9USUNFOiVzICIsREJHX05BTUUoQSksX19mdW5jX18pO0RCR19QUklOVEMoUyk7fX0KKworI2RlZmluZSBEQkdfVFJBQ0UoQSxTLi4uKSAgIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1RSQUNFX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEQkdfUFJJTlQoIiVzOlRSQUNFOiVzICIsREJHX05BTUUoQSksIF9fZnVuY19fKTtEQkdfUFJJTlRDKFMpO319CisKKyNkZWZpbmUgREJHX1ZFUkJPU0UoQSxTLi4uKSB7aWYgKERCR19GTEFHUyhBKSAmIERCR19WRVJCT1NFX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEQkdfUFJJTlQoIiVzOlZFUkJPU0U6JXMgIixEQkdfTkFNRShBKSwgX19mdW5jX18pO0RCR19QUklOVEMoUyk7fX0KKworI2RlZmluZSBEQkdfUlgoQSxTLi4uKSAgICAgIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1JYX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEQkdfUFJJTlQoUyk7fX0KKworI2RlZmluZSBEQkdfUlhfRU5URVIoQSkgICAgIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1JYX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EQkdfRU5URVIoQSk7fQorCisjZGVmaW5lIERCR19SWF9MRUFWRShBKSAgICAge2lmIChEQkdfRkxBR1MoQSkgJiBEQkdfUlhfT04pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0RCR19MRUFWRShBKTt9CisKKyNkZWZpbmUgREJHX1RYKEEsUy4uLikgICAgICB7aWYgKERCR19GTEFHUyhBKSAmIERCR19UWF9PTikgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7REJHX1BSSU5UKFMpO319CisKKyNkZWZpbmUgREJHX1RYX0VOVEVSKEEpICAgICB7aWYgKERCR19GTEFHUyhBKSAmIERCR19UWF9PTikgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfREJHX0VOVEVSKEEpO30KKworI2RlZmluZSBEQkdfVFhfTEVBVkUoQSkgICAgIHtpZiAoREJHX0ZMQUdTKEEpICYgREJHX1RYX09OKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EQkdfTEVBVkUoQSk7fQorCisjZGVmaW5lIERCR19BU1NFUlQoQykgICAgICAge2lmICghKEMpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEQkdfUFJJTlQoIkFTU0VSVCglcykgLS0gJXMjJWQgKCVzKVxuIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0MsX19GSUxFX18sX19MSU5FX18sX19mdW5jX18pOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCR19UUkFQO319CisjZGVmaW5lIFNUQVRJQworCit0eXBlZGVmIHN0cnVjdCB7CisJY2hhciAqZGJnTmFtZTsKKwlpbnQgZGJnTGV2ZWw7CisJdW5zaWduZWQgbG9uZyBkYmdGbGFnczsKK30gZGJnX2luZm9fdDsKKworI2Vsc2UgLyogQ09ORklHX0VUMTMxWF9ERUJVRyAqLworCisjZGVmaW5lIERCR19ERUZOCisjZGVmaW5lIERCR19UUkFQCisjZGVmaW5lIERCR19QUklOVChTLi4uKQorI2RlZmluZSBEQkdfRU5URVIoQSkKKyNkZWZpbmUgREJHX0xFQVZFKEEpCisjZGVmaW5lIERCR19QQVJBTShBLE4sRixTLi4uKQorI2RlZmluZSBEQkdfRVJST1IoQSxTLi4uKQorI2RlZmluZSBEQkdfV0FSTklORyhBLFMuLi4pCisjZGVmaW5lIERCR19OT1RJQ0UoQSxTLi4uKQorI2RlZmluZSBEQkdfVFJBQ0UoQSxTLi4uKQorI2RlZmluZSBEQkdfVkVSQk9TRShBLFMuLi4pCisjZGVmaW5lIERCR19SWChBLFMuLi4pCisjZGVmaW5lIERCR19SWF9FTlRFUihBKQorI2RlZmluZSBEQkdfUlhfTEVBVkUoQSkKKyNkZWZpbmUgREJHX1RYKEEsUy4uLikKKyNkZWZpbmUgREJHX1RYX0VOVEVSKEEpCisjZGVmaW5lIERCR19UWF9MRUFWRShBKQorI2RlZmluZSBEQkdfQVNTRVJUKEMpCisjZGVmaW5lIFNUQVRJQyBzdGF0aWMKKworI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZSAqLworc3RydWN0IGV0MTMxeF9hZGFwdGVyOworCit2b2lkIER1bXBUeFF1ZXVlQ29udGVudHMoaW50IGRiZ0x2bCwgc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgRHVtcERldmljZUJsb2NrKGludCBkYmdMdmwsIHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJICAgICB1bnNpZ25lZCBpbnQgQmxvY2spOwordm9pZCBEdW1wRGV2aWNlUmVnKGludCBkYmdMdmwsIHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcik7CisKKyNlbmRpZiAvKiBfX0VUMTMxWF9EQkdfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9kZWZzLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9kZWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2Y2I3OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2RlZnMuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfZGVmcy5oIC0gRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gdG8gYXNzaXN0IHdpdGggT1MKKyAqICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19FVDEzMVhfREVGU19IX18KKyNkZWZpbmUgX19FVDEzMVhfREVGU19IX18KKworLyogUGFja2V0IGFuZCBoZWFkZXIgc2l6ZXMgKi8KKyNkZWZpbmUgTklDX01JTl9QQUNLRVRfU0laRQk2MAorI2RlZmluZSBOSUNfSEVBREVSX1NJWkUJCUVUSF9ITEVOCS8qIDE0ICovCisKKy8qIE11bHRpY2FzdCBsaXN0IHNpemUgKi8KKyNkZWZpbmUgTklDX01BWF9NQ0FTVF9MSVNUCTEyOAorCisvKiBTdXBwb3J0ZWQgRmlsdGVycyAqLworI2RlZmluZSBFVDEzMVhfUEFDS0VUX1RZUEVfRElSRUNURUQJCTB4MDAwMQorI2RlZmluZSBFVDEzMVhfUEFDS0VUX1RZUEVfTVVMVElDQVNUCQkweDAwMDIKKyNkZWZpbmUgRVQxMzFYX1BBQ0tFVF9UWVBFX0JST0FEQ0FTVAkJMHgwMDA0CisjZGVmaW5lIEVUMTMxWF9QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUwkJMHgwMDA4CisjZGVmaW5lIEVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUCTB4MDAxMAorCisvKiBUeCBUaW1lb3V0ICovCisjZGVmaW5lIEVUMTMxWF9UWF9USU1FT1VUCSgxICogSFopCisjZGVmaW5lIE5JQ19TRU5EX0hBTkdfVEhSRVNIT0xECTAKKworLyogTVBfVENCIGZsYWdzICovCisjZGVmaW5lIGZNUF9ERVNUX01VTFRJCQkJMHgwMDAwMDAwMQorI2RlZmluZSBmTVBfREVTVF9CUk9BRAkJCTB4MDAwMDAwMDIKKworLyogTVBfQURBUFRFUiBmbGFncyAqLworI2RlZmluZSBmTVBfQURBUFRFUl9SRUNWX0xPT0tBU0lERQkweDAwMDAwMDA0CisjZGVmaW5lIGZNUF9BREFQVEVSX0lOVEVSUlVQVF9JTl9VU0UJMHgwMDAwMDAwOAorI2RlZmluZSBmTVBfQURBUFRFUl9TRUNPTkRBUlkJCTB4MDAwMDAwMTAKKworLyogTVBfU0hBUkVEIGZsYWdzICovCisjZGVmaW5lIGZNUF9BREFQVEVSX1NIVVRET1dOCQkweDAwMTAwMDAwCisjZGVmaW5lIGZNUF9BREFQVEVSX0xPV0VSX1BPV0VSCQkweDAwMjAwMDAwCisKKyNkZWZpbmUgZk1QX0FEQVBURVJfTk9OX1JFQ09WRVJfRVJST1IJMHgwMDgwMDAwMAorI2RlZmluZSBmTVBfQURBUFRFUl9SRVNFVF9JTl9QUk9HUkVTUwkweDAxMDAwMDAwCisjZGVmaW5lIGZNUF9BREFQVEVSX05PX0NBQkxFCQkweDAyMDAwMDAwCisjZGVmaW5lIGZNUF9BREFQVEVSX0hBUkRXQVJFX0VSUk9SCTB4MDQwMDAwMDAKKyNkZWZpbmUgZk1QX0FEQVBURVJfUkVNT1ZFX0lOX1BST0dSRVNTCTB4MDgwMDAwMDAKKyNkZWZpbmUgZk1QX0FEQVBURVJfSEFMVF9JTl9QUk9HUkVTUwkweDEwMDAwMDAwCisjZGVmaW5lIGZNUF9BREFQVEVSX0xJTktfREVURUNUSU9OCTB4MjAwMDAwMDAKKworI2RlZmluZSBmTVBfQURBUFRFUl9GQUlMX1NFTkRfTUFTSwkweDNmZjAwMDAwCisjZGVmaW5lIGZNUF9BREFQVEVSX05PVF9SRUFEWV9NQVNLCTB4M2ZmMDAwMDAKKworLyogU29tZSBvZmZzZXRzIGluIFBDSSBjb25maWcgc3BhY2UgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZC4gKi8KKyNkZWZpbmUgRVQxMzEwX1BDSV9QTV9DQVBBQklMSVRZCTB4NDAKKyNkZWZpbmUgRVQxMzEwX1BDSV9QTV9DU1IJCTB4NDQKKyNkZWZpbmUgRVQxMzEwX1BDSV9NQVhfUFlMRAkJMHg0QworI2RlZmluZSBFVDEzMTBfUENJX0RFVl9DVFJMCQkweDUwCisjZGVmaW5lIEVUMTMxMF9QQ0lfREVWX1NUQVQJCTB4NTIKKyNkZWZpbmUgRVQxMzEwX05NSV9ESVNBQkxFCQkweDYxCisjZGVmaW5lIEVUMTMxMF9QQ0lfTUFDX0FERFJFU1MJCTB4QTQKKyNkZWZpbmUgRVQxMzEwX1BDSV9FRVBST01fU1RBVFVTCTB4QjIKKyNkZWZpbmUgRVQxMzEwX1BDSV9QSFlfSU5ERVhfUkVHCTB4QjQKKyNkZWZpbmUgRVQxMzEwX1BDSV9BQ0tfTkFDSwkJMHhDMAorI2RlZmluZSBFVDEzMTBfUENJX1JFUExBWQkJMHhDMgorI2RlZmluZSBFVDEzMTBfUENJX0wwTDFMQVRFTkNZCQkweENGCisjZGVmaW5lIEVUMTMxMF9QQ0lfU0VMX1BIWV9DVFJMCQkweEU0CisjZGVmaW5lIEVUMTMxMF9QQ0lfQURWQU5DRURfRVJSCQkweDEwMAorCisvKiBQQ0kgVmVuZG9yL1Byb2R1Y3QgSURzICovCisjZGVmaW5lIEVUMTMxWF9QQ0lfVkVORE9SX0lECQkweDExQzEJLy8gQWdlcmUgU3lzdGVtcworI2RlZmluZSBFVDEzMVhfUENJX0RFVklDRV9JRF9HSUcJMHhFRDAwCS8vIEVUMTMxMCAxMDAwIEJhc2UtVAorI2RlZmluZSBFVDEzMVhfUENJX0RFVklDRV9JRF9GQVNUCTB4RUQwMQkvLyBFVDEzMTAgMTAwICBCYXNlLVQKKworLyogRGVmaW5lIG9yZGVyIG9mIG1hZ25pdHVkZSBjb252ZXJ0ZXIgKi8KKyNkZWZpbmUgTkFOT19JTl9BX01JQ1JPCTEwMDAKKworI2VuZGlmIC8qIF9fRVQxMzFYX0RFRlNfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pbml0cGNpLmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pbml0cGNpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2ZjE3MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2luaXRwY2kuYwpAQCAtMCwwICsxLDEwNDYgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzF4X2luaXRwY2kuYyAtIFJvdXRpbmVzIGFuZCBkYXRhIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGRyaXZlciB3aXRoIHRoZQorICogICAgICAgICAgICAgICAgICAgIFBDSSAoYW5kIFBDSSBFeHByZXNzKSBzdWJzeXN0ZW0sIGFzIHdlbGwgYXMgYmFzaWMgZHJpdmVyCisgKiAgICAgICAgICAgICAgICAgICAgaW5pdCBhbmQgc3RhcnR1cC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV0MTMxeF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlYnVnLmgiCisjaW5jbHVkZSAiZXQxMzF4X2RlZnMuaCIKKworI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorCisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKworI2luY2x1ZGUgImV0MTMxMF9waHkuaCIKKyNpbmNsdWRlICJldDEzMTBfcG0uaCIKKyNpbmNsdWRlICJldDEzMTBfamFnY29yZS5oIgorCisjaW5jbHVkZSAiZXQxMzF4X2FkYXB0ZXIuaCIKKyNpbmNsdWRlICJldDEzMXhfbmV0ZGV2LmgiCisjaW5jbHVkZSAiZXQxMzF4X2NvbmZpZy5oIgorI2luY2x1ZGUgImV0MTMxeF9pc3IuaCIKKworI2luY2x1ZGUgImV0MTMxMF9hZGRyZXNzX21hcC5oIgorI2luY2x1ZGUgImV0MTMxMF9qYWdjb3JlLmgiCisjaW5jbHVkZSAiZXQxMzEwX3R4LmgiCisjaW5jbHVkZSAiZXQxMzEwX3J4LmgiCisjaW5jbHVkZSAiZXQxMzEwX21hYy5oIgorI2luY2x1ZGUgImV0MTMxMF9lZXByb20uaCIKKworCitpbnQgX19kZXZpbml0IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCk7Cit2b2lkIF9fZGV2ZXhpdCBldDEzMXhfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7CisKKworLyogTW9kaW5mbyBwYXJhbWV0ZXJzIChmaWxsZWQgb3V0IHVzaW5nIGRlZmluZXMgZnJvbSBldDEzMXhfdmVyc2lvbi5oKSAqLworTU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTsKK01PRFVMRV9ERVNDUklQVElPTihEUklWRVJfSU5GTyk7CitNT0RVTEVfTElDRU5TRShEUklWRVJfTElDRU5TRSk7CisKKy8qIE1vZHVsZSBQYXJhbWV0ZXJzIGFuZCByZWxhdGVkIGRhdGEgZm9yIGRlYnVnZ2luZyBmYWNpbGl0aWVzICovCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworc3RhdGljIHUzMiBldDEzMXhfZGVidWdfbGV2ZWwgPSBEQkdfTFZMOworc3RhdGljIHUzMiBldDEzMXhfZGVidWdfZmxhZ3MgPSBEQkdfREVGQVVMVFM7CisKKy8qCitldDEzMXhfZGVidWdfbGV2ZWwgOgorIExldmVsIG9mIGRlYnVnZ2luZyBkZXNpcmVkICgwLTcpCisgICA3IDogREJHX1JYX09OIHwgREJHX1RYX09OCisgICA2IDogREJHX1BBUkFNX09OCisgICA1IDogREJHX1ZFUkJPU0VfT04KKyAgIDQgOiBEQkdfVFJBQ0VfT04KKyAgIDMgOiBEQkdfTk9USUNFX09OCisgICAyIDogbm8gZGVidWcgaW5mbworICAgMSA6IG5vIGRlYnVnIGluZm8KKyAgIDAgOiBubyBkZWJ1ZyBpbmZvCisqLworCittb2R1bGVfcGFyYW0oZXQxMzF4X2RlYnVnX2xldmVsLCB1aW50LCAwKTsKK21vZHVsZV9wYXJhbShldDEzMXhfZGVidWdfZmxhZ3MsIHVpbnQsIDApOworCitNT0RVTEVfUEFSTV9ERVNDKGV0MTMxeF9kZWJ1Z19sZXZlbCwgIkxldmVsIG9mIGRlYnVnZ2luZyBkZXNpcmVkICgwLTcpIik7CisKK3N0YXRpYyBkYmdfaW5mb190IGV0MTMxeF9pbmZvID0geyBEUklWRVJfTkFNRV9FWFQsIDAsIDAgfTsKK2RiZ19pbmZvX3QgKmV0MTMxeF9kYmdpbmZvID0gJmV0MTMxeF9pbmZvOworI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIGV0MTMxeF9wY2lfdGFibGVbXSBfX2RldmluaXRkYXRhID0geworCXtFVDEzMVhfUENJX1ZFTkRPUl9JRCwgRVQxMzFYX1BDSV9ERVZJQ0VfSURfR0lHLCBQQ0lfQU5ZX0lELAorCSBQQ0lfQU5ZX0lELCAwLCAwLCAwVUx9LAorCXtFVDEzMVhfUENJX1ZFTkRPUl9JRCwgRVQxMzFYX1BDSV9ERVZJQ0VfSURfRkFTVCwgUENJX0FOWV9JRCwKKwkgUENJX0FOWV9JRCwgMCwgMCwgMFVMfSwKKwl7MCx9Cit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZXQxMzF4X3BjaV90YWJsZSk7CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBldDEzMXhfZHJpdmVyID0geworICAgICAgLm5hbWUJPSBEUklWRVJfTkFNRSwKKyAgICAgIC5pZF90YWJsZQk9IGV0MTMxeF9wY2lfdGFibGUsCisgICAgICAucHJvYmUJPSBldDEzMXhfcGNpX3NldHVwLAorICAgICAgLnJlbW92ZQk9IF9fZGV2ZXhpdF9wKGV0MTMxeF9wY2lfcmVtb3ZlKSwKKyAgICAgIC5zdXNwZW5kCT0gTlVMTCwJCS8vZXQxMzF4X3BjaV9zdXNwZW5kLAorICAgICAgLnJlc3VtZQk9IE5VTEwsCQkvL2V0MTMxeF9wY2lfcmVzdW1lLAorfTsKKworCisvKioKKyAqIGV0MTMxeF9pbml0X21vZHVsZSAtIFRoZSAibWFpbiIgZW50cnkgcG9pbnQgY2FsbGVkIG9uIGRyaXZlciBpbml0aWFsaXphdGlvbgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfaW5pdF9tb2R1bGUodm9pZCkKK3sKKwlpbnQgcmVzdWx0OworCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCS8qIFNldCB0aGUgbGV2ZWwgb2YgZGVidWcgbWVzc2FnZXMgZGlzcGxheWVkIHVzaW5nIHRoZSBtb2R1bGUKKwkgKiBwYXJhbWV0ZXIKKwkgKi8KKwlldDEzMXhfZGJnaW5mby0+ZGJnRmxhZ3MgPSBldDEzMXhfZGVidWdfZmxhZ3M7CisKKwlzd2l0Y2ggKGV0MTMxeF9kZWJ1Z19sZXZlbCkgeworCWNhc2UgNzoKKwkJZXQxMzF4X2RiZ2luZm8tPmRiZ0ZsYWdzIHw9IChEQkdfUlhfT04gfCBEQkdfVFhfT04pOworCisJY2FzZSA2OgorCQlldDEzMXhfZGJnaW5mby0+ZGJnRmxhZ3MgfD0gREJHX1BBUkFNX09OOworCisJY2FzZSA1OgorCQlldDEzMXhfZGJnaW5mby0+ZGJnRmxhZ3MgfD0gREJHX1ZFUkJPU0VfT047CisKKwljYXNlIDQ6CisJCWV0MTMxeF9kYmdpbmZvLT5kYmdGbGFncyB8PSBEQkdfVFJBQ0VfT047CisKKwljYXNlIDM6CisJCWV0MTMxeF9kYmdpbmZvLT5kYmdGbGFncyB8PSBEQkdfTk9USUNFX09OOworCisJY2FzZSAyOgorCWNhc2UgMToKKwljYXNlIDA6CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorI2VuZGlmIC8qIENPTkZJR19FVDEzMVhfREVCVUcgKi8KKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisJREJHX1BSSU5UKCIlc1xuIiwgRFJJVkVSX0lORk8pOworCisJcmVzdWx0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcigmZXQxMzF4X2RyaXZlcik7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qKgorICogZXQxMzF4X2NsZWFudXBfbW9kdWxlIC0gVGhlIGVudHJ5IHBvaW50IGNhbGxlZCBvbiBkcml2ZXIgY2xlYW51cAorICovCit2b2lkIGV0MTMxeF9jbGVhbnVwX21vZHVsZSh2b2lkKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmV0MTMxeF9kcml2ZXIpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoKKyAqIFRoZXNlIG1hY3JvcyBtYXAgdGhlIGRyaXZlci1zcGVjaWZpYyBpbml0X21vZHVsZSgpIGFuZCBjbGVhbnVwX21vZHVsZSgpCisgKiByb3V0aW5lcyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgYnkgdGhlIGtlcm5lbC4KKyAqLworbW9kdWxlX2luaXQoZXQxMzF4X2luaXRfbW9kdWxlKTsKK21vZHVsZV9leGl0KGV0MTMxeF9jbGVhbnVwX21vZHVsZSk7CisKKworLyoqCisgKiBldDEzMXhfZmluZF9hZGFwdGVyIC0gRmluZCB0aGUgYWRhcHRlciBhbmQgZ2V0IGFsbCB0aGUgYXNzaWduZWQgcmVzb3VyY2VzCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfZmluZF9hZGFwdGVyKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7CisJaW50IHJlc3VsdDsKKwl1aW50OF90IGVlcHJvbVN0YXQ7CisJdWludDhfdCBtYXhQYXlsb2FkID0gMDsKKwl1aW50OF90IHJlYWRfc2l6ZV9yZWc7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogQWxsb3cgZGlzYWJsaW5nIG9mIE5vbi1NYXNrYWJsZSBJbnRlcnJ1cHRzIGluIEkvTyBzcGFjZSwgdG8KKwkgKiBzdXBwb3J0IHZhbGlkYXRpb24uCisJICovCisJaWYgKGFkYXB0ZXItPlJlZ2lzdHJ5Tk1JRGlzYWJsZSkgeworCQl1aW50OF90IFJlZ2lzdGVyVmFsOworCisJCVJlZ2lzdGVyVmFsID0gaW5iKEVUMTMxMF9OTUlfRElTQUJMRSk7CisJCVJlZ2lzdGVyVmFsICY9IDB4ZjM7CisKKwkJaWYgKGFkYXB0ZXItPlJlZ2lzdHJ5Tk1JRGlzYWJsZSA9PSAyKSB7CisJCQlSZWdpc3RlclZhbCB8PSAweGM7CisJCX0KKworCQlvdXRiKEVUMTMxMF9OTUlfRElTQUJMRSwgUmVnaXN0ZXJWYWwpOworCX0KKworCS8qIFdlIGZpcnN0IG5lZWQgdG8gY2hlY2sgdGhlIEVFUFJPTSBTdGF0dXMgY29kZSBsb2NhdGVkIGF0IG9mZnNldAorCSAqIDB4QjIgb2YgY29uZmlnIHNwYWNlCisJICovCisJcmVzdWx0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgRVQxMzEwX1BDSV9FRVBST01fU1RBVFVTLAorCQkJCSAgICAgICZlZXByb21TdGF0KTsKKworCS8qIFRISVMgSVMgQSBXT1JLQVJPVU5EOgorIAkgKiBJIG5lZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHR3aWNlIHRvIGdldCBteSBjYXJkIGluIGEKKwkgKiBMRyBNMSBFeHByZXNzIER1YWwgcnVubmluZy4gSSB0cmllZCBhbHNvIGEgbXNsZWVwIGJlZm9yZSB0aGlzCisJICogZnVuY3Rpb24sIGJlY2F1c2UgSSB0aG91Z3RoIHRoZXJlIGNvdWxkIGJlIHNvbWUgdGltZSBjb25kaWRpb25zCisJICogYnV0IGl0IGRpZG4ndCB3b3JrLiBDYWxsIHRoZSB3aG9sZSBmdW5jdGlvbiB0d2ljZSBhbHNvIHdvcmsuCisJICovCisJcmVzdWx0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgRVQxMzEwX1BDSV9FRVBST01fU1RBVFVTLAorCQkJCSAgICAgICZlZXByb21TdGF0KTsKKwlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDb3VsZCBub3QgcmVhZCBQQ0kgY29uZmlnIHNwYWNlIGZvciAiCisJCQkgICJFRVBST00gU3RhdHVzXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogRGV0ZXJtaW5lIGlmIHRoZSBlcnJvcihzKSB3ZSBjYXJlIGFib3V0IGFyZSBwcmVzZW50LiAgSWYgdGhleSBhcmUKKwkgKiBwcmVzZW50LCB3ZSBuZWVkIHRvIGZhaWwuCisJICovCisJaWYgKGVlcHJvbVN0YXQgJiAweDRDKSB7CisJCXJlc3VsdCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIFBDSV9SRVZJU0lPTl9JRCwKKwkJCQkJICAgICAgJmFkYXB0ZXItPlJldmlzaW9uSUQpOworCQlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIkNvdWxkIG5vdCByZWFkIFBDSSBjb25maWcgc3BhY2UgZm9yICIKKwkJCQkgICJSZXZpc2lvbiBJRFxuIik7CisJCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQkJcmV0dXJuIC1FSU87CisJCX0gZWxzZSBpZiAoYWRhcHRlci0+UmV2aXNpb25JRCA9PSAweDAxKSB7CisJCQlpbnQzMl90IG5Mb29wOworCQkJdWludDhfdCB1Y1RlbXBbNF0gPSB7IDB4RkUsIDB4MTMsIDB4MTAsIDB4RkYgfTsKKworCQkJLyogUmUtd3JpdGUgdGhlIGZpcnN0IDQgYnl0ZXMgaWYgd2UgaGF2ZSBhbiBlZXByb20KKwkJCSAqIHByZXNlbnQgYW5kIHRoZSByZXZpc2lvbiBpZCBpcyAxLCB0aGlzIGZpeGVzIHRoZQorCQkJICogY29ycnVwdGlvbiBzZWVuIHdpdGggMTMxMCBCIFNpbGljb24KKwkJCSAqLworCQkJZm9yIChuTG9vcCA9IDA7IG5Mb29wIDwgMzsgbkxvb3ArKykgeworCQkJCUVlcHJvbVdyaXRlQnl0ZShhZGFwdGVyLCBuTG9vcCwgdWNUZW1wW25Mb29wXSwKKwkJCQkJCTAsIFNJTkdMRV9CWVRFKTsKKwkJCX0KKwkJfQorCisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIkZhdGFsIEVFUFJPTSBTdGF0dXMgRXJyb3IgLSAweCUwNHhcbiIsIGVlcHJvbVN0YXQpOworCisJCS8qIFRoaXMgZXJyb3IgY291bGQgbWVhbiB0aGF0IHRoZXJlIHdhcyBhbiBlcnJvciByZWFkaW5nIHRoZQorCQkgKiBlZXByb20gb3IgdGhhdCB0aGUgZWVwcm9tIGRvZXNuJ3QgZXhpc3QuICBXZSB3aWxsIHRyZWF0CisJCSAqIGVhY2ggY2FzZSB0aGUgc2FtZSBhbmQgbm90IHRyeSB0byBnYXRoZXIgYWRkaXRpb25hbAorCQkgKiBpbmZvcm1hdGlvbiB0aGF0IG5vcm1hbGx5IHdvdWxkIGNvbWUgZnJvbSB0aGUgZWVwcm9tLCBsaWtlCisJCSAqIE1BQyBBZGRyZXNzCisJCSAqLworCQlhZGFwdGVyLT5iRWVwcm9tUHJlc2VudCA9IGZhbHNlOworCisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRUlPOworCX0gZWxzZSB7CisJCURCR19UUkFDRShldDEzMXhfZGJnaW5mbywgIkVFUFJPTSBTdGF0dXMgQ29kZSAtIDB4JTA0eFxuIiwKKwkJCSAgZWVwcm9tU3RhdCk7CisJCWFkYXB0ZXItPmJFZXByb21QcmVzZW50ID0gdHJ1ZTsKKwl9CisKKwkvKiBSZWFkIHRoZSBFRVBST00gZm9yIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBMRUQgYmVoYXZpb3IuIFJlZmVyIHRvCisJICogRVQxMzEwX3BoeS5jLCBldDEzMXhfeGN2cl9pbml0KCksIGZvciBpdHMgdXNlLgorCSAqLworCUVlcHJvbVJlYWRCeXRlKGFkYXB0ZXIsIDB4NzAsICZhZGFwdGVyLT5lZXByb21EYXRhWzBdLCAwLCBTSU5HTEVfQllURSk7CisJRWVwcm9tUmVhZEJ5dGUoYWRhcHRlciwgMHg3MSwgJmFkYXB0ZXItPmVlcHJvbURhdGFbMV0sIDAsIFNJTkdMRV9CWVRFKTsKKworCWlmIChhZGFwdGVyLT5lZXByb21EYXRhWzBdICE9IDB4Y2QpIHsKKwkJYWRhcHRlci0+ZWVwcm9tRGF0YVsxXSA9IDB4MDA7CS8vIERpc2FibGUgYWxsIG9wdGlvbmFsIGZlYXR1cmVzCisJfQorCisJLyogTGV0J3Mgc2V0IHVwIHRoZSBQT1JUIExPR0lDIFJlZ2lzdGVyLiAgRmlyc3Qgd2UgbmVlZCB0byBrbm93IHdoYXQKKwkgKiB0aGUgbWF4X3BheWxvYWRfc2l6ZSBpcworCSAqLworCXJlc3VsdCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIEVUMTMxMF9QQ0lfTUFYX1BZTEQsICZtYXhQYXlsb2FkKTsKKwlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDb3VsZCBub3QgcmVhZCBQQ0kgY29uZmlnIHNwYWNlIGZvciAiCisJCQkgICJNYXggUGF5bG9hZCBTaXplXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogUHJvZ3JhbSB0aGUgQWNrL05hayBsYXRlbmN5IGFuZCByZXBsYXkgdGltZXJzICovCisJbWF4UGF5bG9hZCAmPSAweDA3OwkvLyBPbmx5IHRoZSBsb3dlciAzIGJpdHMgYXJlIHZhbGlkCisKKwlpZiAobWF4UGF5bG9hZCA8IDIpIHsKKwkJY29uc3QgdWludDE2X3QgQWNrTmFrWzJdID0geyAweDc2LCAweEQwIH07CisJCWNvbnN0IHVpbnQxNl90IFJlcGxheVsyXSA9IHsgMHgxRTAsIDB4MkVEIH07CisKKwkJcmVzdWx0ID0gcGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIEVUMTMxMF9QQ0lfQUNLX05BQ0ssCisJCQkJCSAgICAgICBBY2tOYWtbbWF4UGF5bG9hZF0pOworCQlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIkNvdWxkIG5vdCB3cml0ZSBQQ0kgY29uZmlnIHNwYWNlICIKKwkJCQkgICJmb3IgQUNLL05BS1xuIik7CisJCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQkJcmV0dXJuIC1FSU87CisJCX0KKworCQlyZXN1bHQgPSBwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgRVQxMzEwX1BDSV9SRVBMQVksCisJCQkJCSAgICAgICBSZXBsYXlbbWF4UGF5bG9hZF0pOworCQlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIkNvdWxkIG5vdCB3cml0ZSBQQ0kgY29uZmlnIHNwYWNlICIKKwkJCQkgICJmb3IgUmVwbGF5IFRpbWVyXG4iKTsKKwkJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCS8qIGwwcyBhbmQgbDEgbGF0ZW5jeSB0aW1lcnMuICBXZSBhcmUgdXNpbmcgZGVmYXVsdCB2YWx1ZXMuCisJICogUmVwcmVzZW50aW5nIDAwMSBmb3IgTDBzIGFuZCAwMTAgZm9yIEwxCisJICovCisJcmVzdWx0ID0gcGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBkZXYsIEVUMTMxMF9QQ0lfTDBMMUxBVEVOQ1ksIDB4MTEpOworCWlmIChyZXN1bHQgIT0gUENJQklPU19TVUNDRVNTRlVMKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywKKwkJCSAgIkNvdWxkIG5vdCB3cml0ZSBQQ0kgY29uZmlnIHNwYWNlIGZvciAiCisJCQkgICJMYXRlbmN5IFRpbWVyc1xuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIENoYW5nZSB0aGUgbWF4IHJlYWQgc2l6ZSB0byAyayAqLworCXJlc3VsdCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIDB4NTEsICZyZWFkX3NpemVfcmVnKTsKKwlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDb3VsZCBub3QgcmVhZCBQQ0kgY29uZmlnIHNwYWNlIGZvciBNYXggcmVhZCBzaXplXG4iKTsKKwkJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmVhZF9zaXplX3JlZyAmPSAweDhmOworCXJlYWRfc2l6ZV9yZWcgfD0gMHg0MDsKKworCXJlc3VsdCA9IHBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCAweDUxLCByZWFkX3NpemVfcmVnKTsKKwlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDb3VsZCBub3Qgd3JpdGUgUENJIGNvbmZpZyBzcGFjZSBmb3IgTWF4IHJlYWQgc2l6ZVxuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIFBDSSBFeHByZXNzIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIDB4NDgtMHg1QiAoRGV2aWNlIENvbnRyb2wpICovCisJcmVzdWx0ID0gcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgRVQxMzEwX1BDSV9ERVZfQ1RSTCwKKwkJCQkgICAgICAmYWRhcHRlci0+UGNpWERldkN0bCk7CisJaWYgKHJlc3VsdCAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiQ291bGQgbm90IHJlYWQgUENJIGNvbmZpZyBzcGFjZSBmb3IgUENJIEV4cHJlc3MgRGV2IEN0bFxuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIEdldCBNQUMgYWRkcmVzcyBmcm9tIGNvbmZpZyBzcGFjZSBpZiBhbiBlZXByb20gZXhpc3RzLCBvdGhlcndpc2UKKwkgKiB0aGUgTUFDIGFkZHJlc3MgdGhlcmUgd2lsbCBub3QgYmUgdmFsaWQKKwkgKi8KKwlpZiAoYWRhcHRlci0+YkVlcHJvbVByZXNlbnQpIHsKKwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspIHsKKwkJCXJlc3VsdCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKAorCQkJCQlwZGV2LCBFVDEzMTBfUENJX01BQ19BRERSRVNTICsgaSwKKwkJCQkJYWRhcHRlci0+UGVybWFuZW50QWRkcmVzcyArIGkpOworCQkJaWYgKHJlc3VsdCAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKKwkJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkJCSAgIkNvdWxkIG5vdCByZWFkIFBDSSBjb25maWcgc3BhY2UgZm9yIE1BQyBhZGRyZXNzXG4iKTsKKwkJCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQkJCXJldHVybiAtRUlPOworCQkJfQorCQl9CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBldDEzMXhfZXJyb3JfdGltZXJfaGFuZGxlcgorICogQGRhdGE6IHRpbWVyLXNwZWNpZmljIHZhcmlhYmxlOyBoZXJlIGEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBUaGUgcm91dGluZSBjYWxsZWQgd2hlbiB0aGUgZXJyb3IgdGltZXIgZXhwaXJlcywgdG8gdHJhY2sgdGhlIG51bWJlciBvZgorICogcmVjdXJyaW5nIGVycm9ycy4KKyAqLwordm9pZCBldDEzMXhfZXJyb3JfdGltZXJfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciA9IChzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKikgZGF0YTsKKwlQTV9DU1JfdCBwbV9jc3I7CisKKwlwbV9jc3IudmFsdWUgPSByZWFkbCgmcEFkYXB0ZXItPkNTUkFkZHJlc3MtPmdsb2JhbC5wbV9jc3IudmFsdWUpOworCisJaWYgKHBtX2Nzci5iaXRzLnBtX3BoeV9zd19jb21hID09IDApIHsKKwkJaWYgKHBBZGFwdGVyLT5SZWdpc3RyeU1BQ1N0YXQpIHsKKwkJCVVwZGF0ZU1hY1N0YXRIb3N0Q291bnRlcnMocEFkYXB0ZXIpOworCQl9CisJfSBlbHNlIHsKKwkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sCisJCQkgICAgIk5vIGludGVycnVwdHMsIGluIFBIWSBjb21hLCBwbV9jc3IgPSAweCV4XG4iLAorCQkJICAgIHBtX2Nzci52YWx1ZSk7CisJfQorCisJaWYgKCFwQWRhcHRlci0+Qm1zci5iaXRzLmxpbmtfc3RhdHVzICYmCisJICAgIHBBZGFwdGVyLT5SZWdpc3RyeVBoeUNvbWEgJiYKKwkgICAgcEFkYXB0ZXItPlBvTWdtdC5UcmFuc1BoeUNvbWFNb2RlT25Cb290IDwgMTEpIHsKKwkJcEFkYXB0ZXItPlBvTWdtdC5UcmFuc1BoeUNvbWFNb2RlT25Cb290Kys7CisJfQorCisJaWYgKHBBZGFwdGVyLT5Qb01nbXQuVHJhbnNQaHlDb21hTW9kZU9uQm9vdCA9PSAxMCkgeworCQlpZiAoIXBBZGFwdGVyLT5CbXNyLmJpdHMubGlua19zdGF0dXMKKwkJICAgICYmIHBBZGFwdGVyLT5SZWdpc3RyeVBoeUNvbWEpIHsKKwkJCWlmIChwbV9jc3IuYml0cy5wbV9waHlfc3dfY29tYSA9PSAwKSB7CisJCQkJLy8gTk9URSAtIFRoaXMgd2FzIG9yaWdpbmFsbHkgYSAnc3luYyB3aXRoIGludGVycnVwdCcuIEhvdworCQkJCS8vICAgICAgICB0byBkbyB0aGF0IHVuZGVyIExpbnV4PworCQkJCWV0MTMxeF9lbmFibGVfaW50ZXJydXB0cyhwQWRhcHRlcik7CisJCQkJRW5hYmxlUGh5Q29tYShwQWRhcHRlcik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBUaGlzIGlzIGEgcGVyaW9kaWMgdGltZXIsIHNvIHJlc2NoZWR1bGUgKi8KKwltb2RfdGltZXIoJnBBZGFwdGVyLT5FcnJvclRpbWVyLCBqaWZmaWVzICsKKwkJICBUWF9FUlJPUl9QRVJJT0QgKiBIWiAvIDEwMDApOworfQorCisvKioKKyAqIGV0MTMxeF9saW5rX2RldGVjdGlvbl9oYW5kbGVyCisgKgorICogVGltZXIgZnVuY3Rpb24gZm9yIGxpbmsgdXAgYXQgZHJpdmVyIGxvYWQgdGltZQorICovCit2b2lkIGV0MTMxeF9saW5rX2RldGVjdGlvbl9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKnBBZGFwdGVyID0gKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqKSBkYXRhOworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCisJLyogTGV0IGV2ZXJ5b25lIGtub3cgdGhhdCB3ZSBoYXZlIHJ1biAqLworCXBBZGFwdGVyLT5iTGlua1RpbWVyQWN0aXZlID0gZmFsc2U7CisKKwlpZiAocEFkYXB0ZXItPk1lZGlhU3RhdGUgPT0gMCkgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPkxvY2ssIGxvY2tmbGFncyk7CisKKwkJcEFkYXB0ZXItPk1lZGlhU3RhdGUgPSBORVRJRl9TVEFUVVNfTUVESUFfRElTQ09OTkVDVDsKKwkJTVBfQ0xFQVJfRkxBRyhwQWRhcHRlciwgZk1QX0FEQVBURVJfTElOS19ERVRFQ1RJT04pOworCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBBZGFwdGVyLT5Mb2NrLCBsb2NrZmxhZ3MpOworCisJCW5ldGlmX2NhcnJpZXJfb2ZmKHBBZGFwdGVyLT5uZXRkZXYpOworCisJCXBBZGFwdGVyLT5iU2V0UGVuZGluZyA9IGZhbHNlOworCX0KK30KKworLyoqCisgKiBldDEzMXhfYWRhcHRlcl9zZXR1cCAtIFNldCB0aGUgYWRhcHRlciB1cCBhcyBwZXIgY2Fzc2luaSsgZG9jdW1lbnRhdGlvbgorICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICovCitpbnQgZXQxMzF4X2FkYXB0ZXJfc2V0dXAoc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlcikKK3sKKwlpbnQgc3RhdHVzID0gMDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBDb25maWd1cmUgdGhlIEpBR0NvcmUgKi8KKwlDb25maWdHbG9iYWxSZWdzKHBBZGFwdGVyKTsKKworCUNvbmZpZ01BQ1JlZ3MxKHBBZGFwdGVyKTsKKwlDb25maWdNTUNSZWdzKHBBZGFwdGVyKTsKKworCUNvbmZpZ1J4TWFjUmVncyhwQWRhcHRlcik7CisJQ29uZmlnVHhNYWNSZWdzKHBBZGFwdGVyKTsKKworCUNvbmZpZ1J4RG1hUmVncyhwQWRhcHRlcik7CisJQ29uZmlnVHhEbWFSZWdzKHBBZGFwdGVyKTsKKworCUNvbmZpZ01hY1N0YXRSZWdzKHBBZGFwdGVyKTsKKworCS8qIE1vdmUgdGhlIGZvbGxvd2luZyBjb2RlIHRvIFRpbWVyIGZ1bmN0aW9uPz8gKi8KKwlzdGF0dXMgPSBldDEzMXhfeGN2cl9maW5kKHBBZGFwdGVyKTsKKworCWlmIChzdGF0dXMgIT0gMCkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgIkNvdWxkIG5vdCBmaW5kIHRoZSB4Y3ZyXG4iKTsKKwl9CisKKwkvKiBQcmVwYXJlIHRoZSBUUlVFUEhZIGxpYnJhcnkuICovCisJRVQxMzEwX1BoeUluaXQocEFkYXB0ZXIpOworCisJLyogUmVzZXQgdGhlIHBoeSBub3cgc28gY2hhbmdlcyB0YWtlIHBsYWNlICovCisJRVQxMzEwX1BoeVJlc2V0KHBBZGFwdGVyKTsKKworCS8qIFBvd2VyIGRvd24gUEhZICovCisJRVQxMzEwX1BoeVBvd2VyRG93bihwQWRhcHRlciwgMSk7CisKKwkvKgorCSAqIFdlIG5lZWQgdG8gdHVybiBvZmYgMTAwMCBiYXNlIGhhbGYgZHVscGxleCwgdGhlIG1hYyBkb2VzIG5vdAorCSAqIHN1cHBvcnQgaXQuIEZvciB0aGUgMTAvMTAwIHBhcnQsIHR1cm4gb2ZmIGFsbCBnaWcgYWR2ZXJ0aXNlbWVudAorCSAqLworCWlmIChwQWRhcHRlci0+RGV2aWNlSUQgIT0gRVQxMzFYX1BDSV9ERVZJQ0VfSURfRkFTVCkgeworCQlFVDEzMTBfUGh5QWR2ZXJ0aXNlMTAwMEJhc2VUKHBBZGFwdGVyLCBUUlVFUEhZX0FEVl9EVVBMRVhfRlVMTCk7CisJfSBlbHNlIHsKKwkJRVQxMzEwX1BoeUFkdmVydGlzZTEwMDBCYXNlVChwQWRhcHRlciwgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUpOworCX0KKworCS8qIFBvd2VyIHVwIFBIWSAqLworCUVUMTMxMF9QaHlQb3dlckRvd24ocEFkYXB0ZXIsIDApOworCisJZXQxMzF4X3NldHBoeV9ub3JtYWwocEFkYXB0ZXIpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9zZXR1cF9oYXJkd2FyZV9wcm9wZXJ0aWVzIC0gc2V0IHVwIHRoZSBNQUMgQWRkcmVzcyBvbiB0aGUgRVQxMzEwCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICovCit2b2lkIGV0MTMxeF9zZXR1cF9oYXJkd2FyZV9wcm9wZXJ0aWVzKHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogSWYgaGF2ZSBvdXIgZGVmYXVsdCBtYWMgZnJvbSByZWdpc3RyeSBhbmQgbm8gbWFjIGFkZHJlc3MgZnJvbQorCSAqIEVFUFJPTSB0aGVuIHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGxhc3Qgb2N0ZXQgYW5kIHNldCBpdCBvbiB0aGUKKwkgKiBkZXZpY2UKKwkgKi8KKwlpZiAoIWFkYXB0ZXItPmJPdmVycmlkZUFkZHJlc3MpIHsKKwkJaWYgKGFkYXB0ZXItPlBlcm1hbmVudEFkZHJlc3NbMF0gPT0gMHgwMCAmJgorCQkgICAgYWRhcHRlci0+UGVybWFuZW50QWRkcmVzc1sxXSA9PSAweDAwICYmCisJCSAgICBhZGFwdGVyLT5QZXJtYW5lbnRBZGRyZXNzWzJdID09IDB4MDAgJiYKKwkJICAgIGFkYXB0ZXItPlBlcm1hbmVudEFkZHJlc3NbM10gPT0gMHgwMCAmJgorCQkgICAgYWRhcHRlci0+UGVybWFuZW50QWRkcmVzc1s0XSA9PSAweDAwICYmCisJCSAgICBhZGFwdGVyLT5QZXJtYW5lbnRBZGRyZXNzWzVdID09IDB4MDApIHsKKwkJCS8qCisJCQkgKiBXZSBuZWVkIHRvIHJhbmRvbWx5IGdlbmVyYXRlIHRoZSBsYXN0IG9jdGV0IHNvIHdlCisJCQkgKiBkZWNyZWFzZSBvdXIgY2hhbmNlcyBvZiBzZXR0aW5nIHRoZSBtYWMgYWRkcmVzcyB0bworCQkJICogc2FtZSBhcyBhbm90aGVyIG9uZSBvZiBvdXIgY2FyZHMgaW4gdGhlIHN5c3RlbQorCQkJICovCisJCQlnZXRfcmFuZG9tX2J5dGVzKCZhZGFwdGVyLT5DdXJyZW50QWRkcmVzc1s1XSwgMSk7CisKKwkJCS8qCisJCQkgKiBXZSBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSByZWdpc3RlciB3ZSBhcmUKKwkJCSAqIHdvcmtpbmcgd2l0aCBzbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIGN1cnJlbnQKKwkJCSAqIGFkZHJlc3MgaW50byB0aGUgcGVybWFuZW50IGFkZHJlc3MKKwkJCSAqLworCQkJbWVtY3B5KGFkYXB0ZXItPlBlcm1hbmVudEFkZHJlc3MsCisJCQkgICAgICAgYWRhcHRlci0+Q3VycmVudEFkZHJlc3MsIEVUSF9BTEVOKTsKKwkJfSBlbHNlIHsKKwkJCS8qIFdlIGRvIG5vdCBoYXZlIGFuIG92ZXJyaWRlIGFkZHJlc3MsIHNvIHNldCB0aGUKKwkJCSAqIGN1cnJlbnQgYWRkcmVzcyB0byB0aGUgcGVybWFuZW50IGFkZHJlc3MgYW5kIGFkZAorCQkJICogaXQgdG8gdGhlIGRldmljZQorCQkJICovCisJCQltZW1jcHkoYWRhcHRlci0+Q3VycmVudEFkZHJlc3MsCisJCQkgICAgICAgYWRhcHRlci0+UGVybWFuZW50QWRkcmVzcywgRVRIX0FMRU4pOworCQl9CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfc29mdF9yZXNldCAtIElzc3VlIGEgc29mdCByZXNldCB0byB0aGUgaGFyZHdhcmUsIGNvbXBsZXRlIGZvciBFVDEzMTAKKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgZXQxMzF4X3NvZnRfcmVzZXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBEaXNhYmxlIE1BQyBDb3JlICovCisJd3JpdGVsKDB4YzAwZjAwMDAsICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5tYWMuY2ZnMS52YWx1ZSk7CisKKwkvKiBTZXQgZXZlcnl0aGluZyB0byBhIHJlc2V0IHZhbHVlICovCisJd3JpdGVsKDB4N0YsICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5nbG9iYWwuc3dfcmVzZXQudmFsdWUpOworCXdyaXRlbCgweDAwMGYwMDAwLCAmYWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjLmNmZzEudmFsdWUpOworCXdyaXRlbCgweDAwMDAwMDAwLCAmYWRhcHRlci0+Q1NSQWRkcmVzcy0+bWFjLmNmZzEudmFsdWUpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfYWxpZ25fYWxsb2NhdGVkX21lbW9yeSAtIEFsaWduIGFsbG9jYXRlZCBtZW1vcnkgb24gYSBnaXZlbiBib3VuZGFyeQorICogQGFkYXB0ZXI6IHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKiBAcGh5c19hZGRyOiBwb2ludGVyIHRvIFBoeXNpY2FsIGFkZHJlc3MKKyAqIEBvZmZzZXQ6IHBvaW50ZXIgdG8gdGhlIG9mZnNldCB2YXJpYWJsZQorICogQG1hc2s6IGNvcnJlY3QgbWFzaworICovCit2b2lkIGV0MTMxeF9hbGlnbl9hbGxvY2F0ZWRfbWVtb3J5KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgICB1aW50NjRfdCAqcGh5c19hZGRyLAorCQkJCSAgIHVpbnQ2NF90ICpvZmZzZXQsIHVpbnQ2NF90IG1hc2spCit7CisJdWludDY0X3QgbmV3X2FkZHI7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJKm9mZnNldCA9IDA7CisKKwluZXdfYWRkciA9ICpwaHlzX2FkZHIgJiB+bWFzazsKKworCWlmIChuZXdfYWRkciAhPSAqcGh5c19hZGRyKSB7CisJCS8qIE1vdmUgdG8gbmV4dCBhbGlnbmVkIGJsb2NrICovCisJCW5ld19hZGRyICs9IG1hc2sgKyAxOworCQkvKiBSZXR1cm4gb2Zmc2V0IGZvciBhZGp1c3RpbmcgdmlydCBhZGRyICovCisJCSpvZmZzZXQgPSBuZXdfYWRkciAtICpwaHlzX2FkZHI7CisJCS8qIFJldHVybiBuZXcgcGh5c2ljYWwgYWRkcmVzcyAqLworCQkqcGh5c19hZGRyID0gbmV3X2FkZHI7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKK30KKworLyoqCisgKiBldDEzMXhfYWRhcHRlcl9tZW1vcnlfYWxsb2MKKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkuCisgKgorICogQWxsb2NhdGUgYWxsIHRoZSBtZW1vcnkgYmxvY2tzIGZvciBzZW5kLCByZWNlaXZlIGFuZCBvdGhlcnMuCisgKi8KK2ludCBldDEzMXhfYWRhcHRlcl9tZW1vcnlfYWxsb2Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCWludCBzdGF0dXMgPSAwOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCWRvIHsKKwkJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgVHggUmluZyAqLworCQlzdGF0dXMgPSBldDEzMXhfdHhfZG1hX21lbW9yeV9hbGxvYyhhZGFwdGVyKTsKKwkJaWYgKHN0YXR1cyAhPSAwKSB7CisJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAiZXQxMzF4X3R4X2RtYV9tZW1vcnlfYWxsb2MgRkFJTEVEXG4iKTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogUmVjZWl2ZSBidWZmZXIgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJc3RhdHVzID0gZXQxMzF4X3J4X2RtYV9tZW1vcnlfYWxsb2MoYWRhcHRlcik7CisJCWlmIChzdGF0dXMgIT0gMCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgImV0MTMxeF9yeF9kbWFfbWVtb3J5X2FsbG9jIEZBSUxFRFxuIik7CisJCQlldDEzMXhfdHhfZG1hX21lbW9yeV9mcmVlKGFkYXB0ZXIpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBJbml0IHJlY2VpdmUgZGF0YSBzdHJ1Y3R1cmVzICovCisJCXN0YXR1cyA9IGV0MTMxeF9pbml0X3JlY3YoYWRhcHRlcik7CisJCWlmIChzdGF0dXMgIT0gMCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAiZXQxMzF4X2luaXRfcmVjdiBGQUlMRURcbiIpOworCQkJZXQxMzF4X3R4X2RtYV9tZW1vcnlfZnJlZShhZGFwdGVyKTsKKwkJCWV0MTMxeF9yeF9kbWFfbWVtb3J5X2ZyZWUoYWRhcHRlcik7CisJCQlicmVhazsKKwkJfQorCX0gd2hpbGUgKDApOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9hZGFwdGVyX21lbW9yeV9mcmVlIC0gRnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdXNlIGJ5IFR4ICYgUngKKyAqIEBhZGFwdGVyOiBwb2ludGVyIHRvIG91ciBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKi8KK3ZvaWQgZXQxMzF4X2FkYXB0ZXJfbWVtb3J5X2ZyZWUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBGcmVlIERNQSBtZW1vcnkgKi8KKwlldDEzMXhfdHhfZG1hX21lbW9yeV9mcmVlKGFkYXB0ZXIpOworCWV0MTMxeF9yeF9kbWFfbWVtb3J5X2ZyZWUoYWRhcHRlcik7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIGV0MTMxeF9wY2lfcmVtb3ZlCisgKiBAcGRldjogYSBwb2ludGVyIHRvIHRoZSBkZXZpY2UncyBwY2lfZGV2IHN0cnVjdHVyZQorICoKKyAqIFJlZ2lzdGVyZWQgaW4gdGhlIHBjaV9kcml2ZXIgc3RydWN0dXJlLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZQorICogUENJIHN1YnN5c3RlbSBkZXRlY3RzIHRoYXQgYSBQQ0kgZGV2aWNlIHdoaWNoIG1hdGNoZXMgdGhlIGluZm9ybWF0aW9uCisgKiBjb250YWluZWQgaW4gdGhlIHBjaV9kZXZpY2VfaWQgdGFibGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAqLwordm9pZCBfX2RldmV4aXQgZXQxMzF4X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKKwlzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXI7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogUmV0cmlldmUgdGhlIG5ldF9kZXZpY2UgcG9pbnRlciBmcm9tIHRoZSBwY2lfZGV2IHN0cnVjdCwgYXMgd2VsbAorCSAqIGFzIHRoZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0CisJICovCisJbmV0ZGV2ID0gKHN0cnVjdCBuZXRfZGV2aWNlICopIHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlhZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKworCS8qIFBlcmZvcm0gZGV2aWNlIGNsZWFudXAgKi8KKwl1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpOworCWV0MTMxeF9hZGFwdGVyX21lbW9yeV9mcmVlKGFkYXB0ZXIpOworCWlvdW5tYXAoYWRhcHRlci0+Q1NSQWRkcmVzcyk7CisJZnJlZV9uZXRkZXYobmV0ZGV2KTsKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOworCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7Cit9CisKKy8qKgorICogZXQxMzF4X3BjaV9zZXR1cCAtIFBlcmZvcm0gZGV2aWNlIGluaXRpYWxpemF0aW9uCisgKiBAcGRldjogYSBwb2ludGVyIHRvIHRoZSBkZXZpY2UncyBwY2lfZGV2IHN0cnVjdHVyZQorICogQGVudDogdGhpcyBkZXZpY2UncyBlbnRyeSBpbiB0aGUgcGNpX2RldmljZV9pZCB0YWJsZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKgorICogUmVnaXN0ZXJlZCBpbiB0aGUgcGNpX2RyaXZlciBzdHJ1Y3R1cmUsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlCisgKiBQQ0kgc3Vic3lzdGVtIGZpbmRzIGEgbmV3IFBDSSBkZXZpY2Ugd2hpY2ggbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24KKyAqIGNvbnRhaW5lZCBpbiB0aGUgcGNpX2RldmljZV9pZCB0YWJsZS4gVGhpcyByb3V0aW5lIGlzIHRoZSBlcXVpdmFsZW50IHRvCisgKiBhIGRldmljZSBpbnNlcnRpb24gcm91dGluZS4KKyAqLworaW50IF9fZGV2aW5pdCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCit7CisJaW50IHJlc3VsdCA9IDA7CisJaW50IHBtX2NhcDsKKwlib29sIHBjaV91c2luZ19kYWM7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IE5VTEw7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyID0gTlVMTDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBFbmFibGUgdGhlIGRldmljZSB2aWEgdGhlIFBDSSBzdWJzeXN0ZW0gKi8KKwlyZXN1bHQgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAicGNpX2VuYWJsZV9kZXZpY2UoKSBmYWlsZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBQZXJmb3JtIHNvbWUgYmFzaWMgUENJIGNoZWNrcyAqLworCWlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSAmIElPUkVTT1VSQ0VfTUVNKSkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDYW4ndCBmaW5kIFBDSSBkZXZpY2UncyBiYXNlIGFkZHJlc3NcbiIpOworCQlyZXN1bHQgPSAtRU5PREVWOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXN1bHQgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIERSSVZFUl9OQU1FKTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAiQ2FuJ3QgZ2V0IFBDSSByZXNvdXJjZXNcbiIpOworCQlnb3RvIGVycl9kaXNhYmxlOworCX0KKworCS8qIEVuYWJsZSBQQ0kgYnVzIG1hc3RlcmluZyAqLworCURCR19UUkFDRShldDEzMXhfZGJnaW5mbywgIlNldHRpbmcgUENJIEJ1cyBNYXN0ZXJpbmcuLi5cbiIpOworCXBjaV9zZXRfbWFzdGVyKHBkZXYpOworCisJLyogUXVlcnkgUENJIGZvciBQb3dlciBNZ210IENhcGFiaWxpdGllcworCSAqCisJICogTk9URTogTm93IHJlYWRpbmcgUG93ZXJNZ210IGluIGFub3RoZXIgbG9jYXRpb247IGlzIHRoaXMgc3RpbGwKKwkgKiBuZWVkZWQ/CisJICovCisJcG1fY2FwID0gcGNpX2ZpbmRfY2FwYWJpbGl0eShwZGV2LCBQQ0lfQ0FQX0lEX1BNKTsKKwlpZiAocG1fY2FwID09IDApIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiQ2Fubm90IGZpbmQgUG93ZXIgTWFuYWdlbWVudCBjYXBhYmlsaXRpZXNcbiIpOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGVycl9yZWxlYXNlX3JlczsKKwl9CisKKwkvKiBDaGVjayB0aGUgRE1BIGFkZHJlc3Npbmcgc3VwcG9ydCBvZiB0aGlzIGRldmljZSAqLworCWlmICghcGNpX3NldF9kbWFfbWFzayhwZGV2LCAweGZmZmZmZmZmZmZmZmZmZmZVTEwpKSB7CisJCURCR19UUkFDRShldDEzMXhfZGJnaW5mbywgIjY0LWJpdCBETUEgYWRkcmVzc2luZyBzdXBwb3J0ZWRcbiIpOworCQlwY2lfdXNpbmdfZGFjID0gdHJ1ZTsKKworCQlyZXN1bHQgPQorCQkgICAgcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsIDB4ZmZmZmZmZmZmZmZmZmZmZlVMTCk7CisJCWlmIChyZXN1bHQgIT0gMCkgeworCQkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgIlVuYWJsZSB0byBvYnRhaW4gNjQgYml0IERNQSBmb3IgY29uc2lzdGVudCBhbGxvY2F0aW9uc1xuIik7CisJCQlnb3RvIGVycl9yZWxlYXNlX3JlczsKKwkJfQorCX0gZWxzZSBpZiAoIXBjaV9zZXRfZG1hX21hc2socGRldiwgMHhmZmZmZmZmZlVMTCkpIHsKKwkJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLAorCQkJICAiNjQtYml0IERNQSBhZGRyZXNzaW5nIE5PVCBzdXBwb3J0ZWRcbiIpOworCQlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sCisJCQkgICIzMi1iaXQgRE1BIGFkZHJlc3Npbmcgd2lsbCBiZSB1c2VkXG4iKTsKKwkJcGNpX3VzaW5nX2RhYyA9IGZhbHNlOworCX0gZWxzZSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywgIk5vIHVzYWJsZSBETUEgYWRkcmVzc2luZyBtZXRob2RcbiIpOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGVycl9yZWxlYXNlX3JlczsKKwl9CisKKwkvKiBBbGxvY2F0ZSBuZXRkZXYgYW5kIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3RzICovCisJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLAorCQkgICJBbGxvY2F0ZSBuZXRkZXYgYW5kIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3RzLi4uXG4iKTsKKwluZXRkZXYgPSBldDEzMXhfZGV2aWNlX2FsbG9jKCk7CisJaWYgKG5ldGRldiA9PSBOVUxMKSB7CisJCURCR19FUlJPUihldDEzMXhfZGJnaW5mbywgIkNvdWxkbid0IGFsbG9jIG5ldGRldiBzdHJ1Y3RcbiIpOworCQlyZXN1bHQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9yZWxlYXNlX3JlczsKKwl9CisKKwkvKiBTZXR1cCB0aGUgZnVuZGFtZW50YWwgbmV0X2RldmljZSBhbmQgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZSBlbGVtZW50cyAgKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sICJTZXR0aW5nIGZ1bmRhbWVudGFsIG5ldF9kZXZpY2UgaW5mby4uLlxuIik7CisJU0VUX05FVERFVl9ERVYobmV0ZGV2LCAmcGRldi0+ZGV2KTsKKwlpZiAocGNpX3VzaW5nX2RhYykgeworCQkvL25ldGRldi0+ZmVhdHVyZXMgfD0gTkVUSUZfRl9ISUdIRE1BOworCX0KKworCS8qCisJICogTk9URSAtIFR1cm4gdGhpcyBvbiB3aGVuIHdlJ3JlIHJlYWR5IHRvIGRlYWwgd2l0aCBTRy1ETUEKKwkgKgorCSAqIE5PVEU6IEFjY29yZGluZyB0byAiTGludXggRGV2aWNlIERyaXZlcnMiLCAzcmQgZWQsIFJ1YmluaSBldCBhbCwKKwkgKiBpZiBjaGVja3N1bW1pbmcgaXMgbm90IHBlcmZvcm1lZCBpbiBIVywgdGhlbiB0aGUga2VybmVsIHdpbGwgbm90CisJICogdXNlIFNHLgorCSAqIEZyb20gcHAgNTEwLTUxMToKKwkgKgorCSAqICJOb3RlIHRoYXQgdGhlIGtlcm5lbCBkb2VzIG5vdCBwZXJmb3JtIHNjYXR0ZXIvZ2F0aGVyIEkvTyB0byB5b3VyCisJICogZGV2aWNlIGlmIGl0IGRvZXMgbm90IGFsc28gcHJvdmlkZSBzb21lIGZvcm0gb2YgY2hlY2tzdW1taW5nIGFzCisJICogd2VsbC4gVGhlIHJlYXNvbiBpcyB0aGF0LCBpZiB0aGUga2VybmVsIGhhcyB0byBtYWtlIGEgcGFzcyBvdmVyIGEKKwkgKiBmcmFnbWVudGVkICgibm9ubGluZWFyIikgcGFja2V0IHRvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0sIGl0CisJICogbWlnaHQgYXMgd2VsbCBjb3B5IHRoZSBkYXRhIGFuZCBjb2FsZXNjZSB0aGUgcGFja2V0IGF0IHRoZSBzYW1lCisJICogdGltZS4iCisJICoKKwkgKiBUaGlzIGhhcyBiZWVuIHZlcmlmaWVkIGJ5IHNldHRpbmcgdGhlIGZsYWdzIGJlbG93IGFuZCBzdGlsbCBub3QKKwkgKiByZWNlaXZpbmcgYSBzY2F0dGVyZWQgYnVmZmVyIGZyb20gdGhlIG5ldHdvcmsgc3RhY2ssIHNvIGxlYXZlIGl0CisJICogb2ZmIHVudGlsIGNoZWNrc3VtcyBhcmUgY2FsY3VsYXRlZCBpbiBIVy4KKwkgKi8KKwkvL25ldGRldi0+ZmVhdHVyZXMgfD0gTkVUSUZfRl9TRzsKKwkvL25ldGRldi0+ZmVhdHVyZXMgfD0gTkVUSUZfRl9OT19DU1VNOworCS8vbmV0ZGV2LT5mZWF0dXJlcyB8PSBORVRJRl9GX0xMVFg7CisKKwkvKiBBbGxvY2F0ZSBwcml2YXRlIGFkYXB0ZXIgc3RydWN0IGFuZCBjb3B5IGluIHJlbGV2YW50IGluZm9ybWF0aW9uICovCisJYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisJYWRhcHRlci0+cGRldiA9IHBkZXY7CisJYWRhcHRlci0+bmV0ZGV2ID0gbmV0ZGV2OworCWFkYXB0ZXItPlZlbmRvcklEID0gcGRldi0+dmVuZG9yOworCWFkYXB0ZXItPkRldmljZUlEID0gcGRldi0+ZGV2aWNlOworCisJLyogRG8gdGhlIHNhbWUgZm9yIHRoZSBuZXRkZXYgc3RydWN0ICovCisJbmV0ZGV2LT5pcnEgPSBwZGV2LT5pcnE7CisJbmV0ZGV2LT5iYXNlX2FkZHIgPSBwZGV2LT5yZXNvdXJjZVswXS5zdGFydDsKKworCS8qIEluaXRpYWxpemUgc3BpbmxvY2tzIGhlcmUgKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sICJJbml0aWFsaXplIHNwaW5sb2Nrcy4uLlxuIik7CisKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+TG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPlRDQlNlbmRRTG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPlRDQlJlYWR5UUxvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5TZW5kSFdMb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+U2VuZFdhaXRMb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+UmN2TG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPlJjdlBlbmRMb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+RmJyTG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPlBIWUxvY2spOworCisJLyogUGFyc2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGludG8gdGhlIHByaXZhdGUgYWRhcHRlciBzdHJ1Y3QgKi8KKwlldDEzMXhfY29uZmlnX3BhcnNlKGFkYXB0ZXIpOworCisJLyogRmluZCB0aGUgcGh5c2ljYWwgYWRhcHRlcgorCSAqCisJICogTk9URTogVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgTXBGaW5kQWRhcHRlcigpIHJvdXRpbmU7IGNhbiB3ZQorCSAqICAgICAgIGx1bXAgaXQncyBpbml0IHdpdGggdGhlIGRldmljZSBzcGVjaWZpYyBpbml0IGJlbG93IGludG8gYQorCSAqICAgICAgIHNpbmdsZSBpbml0IGZ1bmN0aW9uPworCSAqLworCS8vd2hpbGUgKGV0MTMxeF9maW5kX2FkYXB0ZXIoYWRhcHRlciwgcGRldikgIT0gMCk7CisJZXQxMzF4X2ZpbmRfYWRhcHRlcihhZGFwdGVyLCBwZGV2KTsKKworCS8qIE1hcCB0aGUgYnVzLXJlbGF0aXZlIHJlZ2lzdGVycyB0byBzeXN0ZW0gdmlydHVhbCBtZW1vcnkgKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sCisJCSAgIk1hcHBpbmcgYnVzLXJlbGF0aXZlIHJlZ2lzdGVycyB0byB2aXJ0dWFsIG1lbW9yeS4uLlxuIik7CisKKwlhZGFwdGVyLT5DU1JBZGRyZXNzID0gaW9yZW1hcF9ub2NhY2hlKHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSwKKwkJCQkJICAgICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7CisJaWYgKGFkYXB0ZXItPkNTUkFkZHJlc3MgPT0gTlVMTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJDYW5ub3QgbWFwIGRldmljZSByZWdpc3RlcnNcbiIpOworCQlyZXN1bHQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlX2RldjsKKwl9CisKKwkvKiBQZXJmb3JtIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBoZXJlIChTZWUgY29kZSBiZWxvdykgKi8KKworCS8qIElmIFBoeSBDT01BIG1vZGUgd2FzIGVuYWJsZWQgd2hlbiB3ZSB3ZW50IGRvd24sIGRpc2FibGUgaXQgaGVyZS4gKi8KKwl7CisJCVBNX0NTUl90IEdsb2JhbFBtQ1NSID0geyAwIH07CisKKwkJR2xvYmFsUG1DU1IuYml0cy5wbV9zeXNjbGtfZ2F0ZSA9IDE7CisJCUdsb2JhbFBtQ1NSLmJpdHMucG1fdHhjbGtfZ2F0ZSA9IDE7CisJCUdsb2JhbFBtQ1NSLmJpdHMucG1fcnhjbGtfZ2F0ZSA9IDE7CisJCXdyaXRlbChHbG9iYWxQbUNTUi52YWx1ZSwKKwkJICAgICAgICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5nbG9iYWwucG1fY3NyLnZhbHVlKTsKKwl9CisKKwkvKiBJc3N1ZSBhIGdsb2JhbCByZXNldCB0byB0aGUgZXQxMzEwICovCisJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLCAiSXNzdWluZyBzb2Z0IHJlc2V0Li4uXG4iKTsKKwlldDEzMXhfc29mdF9yZXNldChhZGFwdGVyKTsKKworCS8qIERpc2FibGUgYWxsIGludGVycnVwdHMgKHBhcmFub2lkKSAqLworCURCR19UUkFDRShldDEzMXhfZGJnaW5mbywgIkRpc2FibGUgZGV2aWNlIGludGVycnVwdHMuLi5cbiIpOworCWV0MTMxeF9kaXNhYmxlX2ludGVycnVwdHMoYWRhcHRlcik7CisKKwkvKiBBbGxvY2F0ZSBETUEgbWVtb3J5ICovCisJcmVzdWx0ID0gZXQxMzF4X2FkYXB0ZXJfbWVtb3J5X2FsbG9jKGFkYXB0ZXIpOworCWlmIChyZXN1bHQgIT0gMCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJDb3VsZCBub3QgYWxsb2MgYWRhcGF0ZXIgbWVtb3J5IChETUEpXG4iKTsKKwkJZ290byBlcnJfaW91bm1hcDsKKwl9CisKKwkvKiBJbml0IHNlbmQgZGF0YSBzdHJ1Y3R1cmVzICovCisJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLCAiSW5pdCBzZW5kIGRhdGEgc3RydWN0dXJlcy4uLlxuIik7CisJZXQxMzF4X2luaXRfc2VuZChhZGFwdGVyKTsKKworCWFkYXB0ZXItPlBvTWdtdC5Qb3dlclN0YXRlID0gTmRpc0RldmljZVN0YXRlRDA7CisKKwkvKiBSZWdpc3RlciB0aGUgaW50ZXJydXB0CisJICoKKwkgKiBOT1RFIC0gVGhpcyBpcyBiZWluZyBkb25lIGluIHRoZSBvcGVuIHJvdXRpbmUsIHdoZXJlIG1vc3Qgb3RoZXIKKwkgKiAgICAgICAgIExpbnV4IGRyaXZlcnMgc2V0dXAgSVJRIGhhbmRsZXJzLiBNYWtlIHN1cmUgZGV2aWNlCisJICogICAgICAgICBpbnRlcnJ1cHRzIGFyZSBub3QgdHVybmVkIG9uIGJlZm9yZSB0aGUgSVJRIGlzIHJlZ2lzdGVyZWQhIQorCSAqCisJICogICAgICAgICBXaGF0IHdlIHdpbGwgZG8gaGVyZSBpcyBzZXR1cCB0aGUgdGFzayBzdHJ1Y3R1cmUgZm9yIHRoZQorCSAqICAgICAgICAgSVNSJ3MgZGVmZXJyZWQgaGFuZGxlcgorCSAqLworCUlOSVRfV09SSygmYWRhcHRlci0+dGFzaywgZXQxMzF4X2lzcl9oYW5kbGVyKTsKKworCS8qIERldGVybWluZSBNQUMgQWRkcmVzcywgYW5kIGNvcHkgaW50byB0aGUgbmV0X2RldmljZSBzdHJ1Y3QgKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sICJSZXRyaWV2ZSBNQUMgYWRkcmVzcy4uLlxuIik7CisJZXQxMzF4X3NldHVwX2hhcmR3YXJlX3Byb3BlcnRpZXMoYWRhcHRlcik7CisKKwltZW1jcHkobmV0ZGV2LT5kZXZfYWRkciwgYWRhcHRlci0+Q3VycmVudEFkZHJlc3MsIEVUSF9BTEVOKTsKKworCS8qIFNldHVwIGV0MTMxMCBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24gKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sICJTZXR1cCB0aGUgYWRhcHRlci4uLlxuIik7CisJZXQxMzF4X2FkYXB0ZXJfc2V0dXAoYWRhcHRlcik7CisKKwkvKiBDcmVhdGUgYSB0aW1lciB0byBjb3VudCBlcnJvcnMgcmVjZWl2ZWQgYnkgdGhlIE5JQyAqLworCWluaXRfdGltZXIoJmFkYXB0ZXItPkVycm9yVGltZXIpOworCisJYWRhcHRlci0+RXJyb3JUaW1lci5leHBpcmVzID0gamlmZmllcyArIFRYX0VSUk9SX1BFUklPRCAqIEhaIC8gMTAwMDsKKwlhZGFwdGVyLT5FcnJvclRpbWVyLmZ1bmN0aW9uID0gZXQxMzF4X2Vycm9yX3RpbWVyX2hhbmRsZXI7CisJYWRhcHRlci0+RXJyb3JUaW1lci5kYXRhID0gKHVuc2lnbmVkIGxvbmcpYWRhcHRlcjsKKworCS8qIEluaXRpYWxpemUgbGluayBzdGF0ZSAqLworCWV0MTMxeF9saW5rX2RldGVjdGlvbl9oYW5kbGVyKCh1bnNpZ25lZCBsb25nKWFkYXB0ZXIpOworCisJLyogSW50aWFsaXplIHZhcmlhYmxlIGZvciBjb3VudGluZyBob3cgbG9uZyB3ZSBkbyBub3QgaGF2ZSBsaW5rIHN0YXR1cyAqLworCWFkYXB0ZXItPlBvTWdtdC5UcmFuc1BoeUNvbWFNb2RlT25Cb290ID0gMDsKKworCS8qIFdlIGNhbiBlbmFibGUgaW50ZXJydXB0cyBub3cKKwkgKgorCSAqICBOT1RFIC0gQmVjYXVzZSByZWdpc3RyYXRpb24gb2YgaW50ZXJydXB0IGhhbmRsZXIgaXMgZG9uZSBpbiB0aGUKKwkgKiAgICAgICAgIGRldmljZSdzIG9wZW4oKSwgZGVmZXIgZW5hYmxpbmcgZGV2aWNlIGludGVycnVwdHMgdG8gdGhhdAorCSAqICAgICAgICAgcG9pbnQKKwkgKi8KKworCS8qIFJlZ2lzdGVyIHRoZSBuZXRfZGV2aWNlIHN0cnVjdCB3aXRoIHRoZSBMaW51eCBuZXR3b3JrIGxheWVyICovCisJREJHX1RSQUNFKGV0MTMxeF9kYmdpbmZvLCAiUmVnaXN0ZXJpbmcgbmV0X2RldmljZS4uLlxuIik7CisJaWYgKChyZXN1bHQgPSByZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KSkgIT0gMCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJyZWdpc3Rlcl9uZXRkZXYoKSBmYWlsZWRcbiIpOworCQlnb3RvIGVycl9tZW1fZnJlZTsKKwl9CisKKwkvKiBSZWdpc3RlciB0aGUgbmV0X2RldmljZSBzdHJ1Y3Qgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS4gU2F2ZSBhIGNvcHkKKwkgKiBvZiB0aGUgUENJIGNvbmZpZyBzcGFjZSBmb3IgdGhpcyBkZXZpY2Ugbm93IHRoYXQgdGhlIGRldmljZSBoYXMKKwkgKiBiZWVuIGluaXRpYWxpemVkLCBqdXN0IGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcXVpY2tseSByZXN0b3JlZC4KKwkgKi8KKwlwY2lfc2V0X2RydmRhdGEocGRldiwgbmV0ZGV2KTsKKworCXBjaV9zYXZlX3N0YXRlKGFkYXB0ZXItPnBkZXYpOworCitvdXQ6CisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gcmVzdWx0OworCitlcnJfbWVtX2ZyZWU6CisJZXQxMzF4X2FkYXB0ZXJfbWVtb3J5X2ZyZWUoYWRhcHRlcik7CitlcnJfaW91bm1hcDoKKwlpb3VubWFwKGFkYXB0ZXItPkNTUkFkZHJlc3MpOworZXJyX2ZyZWVfZGV2OgorCWZyZWVfbmV0ZGV2KG5ldGRldik7CitlcnJfcmVsZWFzZV9yZXM6CisJcGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTsKK2Vycl9kaXNhYmxlOgorCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKKwlnb3RvIG91dDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2luaXRwY2kuaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2luaXRwY2kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmFjYjYyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaW5pdHBjaS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzF4X2luaXRwY2kuaCAtIEhlYWRlciB3aGljaCBpbmNsdWRlcyBjb21tb24gZGF0YSBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcworICogICAgICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIGRyaXZlcidzIFBDSSAoYW5kIFBDSSBFeHByZXNzKSBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxWF9JTklUUENJX0hfXworI2RlZmluZSBfX0VUMTMxWF9JTklUUENJX0hfXworCisvKiBGdW5jdGlvbiBQcm90b3R5cGVzICovCit2b2lkIGV0MTMxeF9hbGlnbl9hbGxvY2F0ZWRfbWVtb3J5KHN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgICB1NjQgKnBoeXNfYWRkciwKKwkJCQkgICB1NjQgKm9mZnNldCwgdTY0IG1hc2spOworCitpbnQgZXQxMzF4X2FkYXB0ZXJfc2V0dXAoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK2ludCBldDEzMXhfYWRhcHRlcl9tZW1vcnlfYWxsb2Moc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgZXQxMzF4X2FkYXB0ZXJfbWVtb3J5X2ZyZWUoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgZXQxMzF4X3NldHVwX2hhcmR3YXJlX3Byb3BlcnRpZXMoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKK3ZvaWQgZXQxMzF4X3NvZnRfcmVzZXQoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKTsKKworI2VuZGlmIC8qIF9fRVQxMzFYX0lOSVRQQ0lfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2lzci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYWZhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYwpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfaXNyLmMgLSBGaWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBJU1IsIElTUiBoYW5kbGVyLCBhbmQgcmVsYXRlZCByb3V0aW5lcworICogICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NpbmcgaW50ZXJydXB0cyBmcm9tIHRoZSBkZXZpY2UuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJldDEzMXhfdmVyc2lvbi5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWJ1Zy5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWZzLmgiCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKyNpbmNsdWRlICJldDEzMTBfbWFjLmgiCisKKyNpbmNsdWRlICJldDEzMXhfYWRhcHRlci5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKK2V4dGVybiBkYmdfaW5mb190ICpldDEzMXhfZGJnaW5mbzsKKyNlbmRpZiAvKiBDT05GSUdfRVQxMzFYX0RFQlVHICovCisKKy8qKgorICogZXQxMzF4X2lzciAtIFRoZSBJbnRlcnJ1cHQgU2VydmljZSBSb3V0aW5lIGZvciB0aGUgZHJpdmVyLgorICogQGlycTogdGhlIElSUSBvbiB3aGljaCB0aGUgaW50ZXJydXB0IHdhcyByZWNlaXZlZC4KKyAqIEBkZXZfaWQ6IGRldmljZS1zcGVjaWZpYyBpbmZvIChoZXJlIGEgcG9pbnRlciB0byBhIG5ldF9kZXZpY2Ugc3RydWN0KQorICoKKyAqIFJldHVybnMgYSB2YWx1ZSBpbmRpY2F0aW5nIGlmIHRoZSBpbnRlcnJ1cHQgd2FzIGhhbmRsZWQuCisgKi8KK2lycXJldHVybl90IGV0MTMxeF9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCWJvb2wgaGFuZGxlZCA9IHRydWU7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IChzdHJ1Y3QgbmV0X2RldmljZSAqKWRldl9pZDsKKwlzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBOVUxMOworCUlOVEVSUlVQVF90IHN0YXR1czsKKworCWlmIChuZXRkZXYgPT0gTlVMTCB8fCAhbmV0aWZfZGV2aWNlX3ByZXNlbnQobmV0ZGV2KSkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCSAgICAiTm8gbmV0X2RldmljZSBzdHJ1Y3Qgb3IgZGV2aWNlIG5vdCBwcmVzZW50XG4iKTsKKwkJaGFuZGxlZCA9IGZhbHNlOworCQlnb3RvIG91dDsKKwl9CisKKwlhZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKworCS8qIElmIHRoZSBhZGFwdGVyIGlzIGluIGxvdyBwb3dlciBzdGF0ZSwgdGhlbiBpdCBzaG91bGQgbm90CisJICogcmVjb2duaXplIGFueSBpbnRlcnJ1cHQKKwkgKi8KKworCS8qIERpc2FibGUgRGV2aWNlIEludGVycnVwdHMgKi8KKwlldDEzMXhfZGlzYWJsZV9pbnRlcnJ1cHRzKGFkYXB0ZXIpOworCisJLyogR2V0IGEgY29weSBvZiB0aGUgdmFsdWUgaW4gdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIKKwkgKiBzbyB3ZSBjYW4gcHJvY2VzcyB0aGUgaW50ZXJydXB0aW5nIHNlY3Rpb24KKwkgKi8KKwlzdGF0dXMudmFsdWUgPSByZWFkbCgmYWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLmludF9zdGF0dXMudmFsdWUpOworCisJaWYgKGFkYXB0ZXItPkZsb3dDb250cm9sID09IFR4T25seSB8fAorCSAgICBhZGFwdGVyLT5GbG93Q29udHJvbCA9PSBCb3RoKSB7CisJCXN0YXR1cy52YWx1ZSAmPSB+SU5UX01BU0tfRU5BQkxFOworCX0gZWxzZSB7CisJCXN0YXR1cy52YWx1ZSAmPSB+SU5UX01BU0tfRU5BQkxFX05PX0ZMT1c7CisJfQorCisJLyogTWFrZSBzdXJlIHRoaXMgaXMgb3VyIGludGVycnVwdCAqLworCWlmICghc3RhdHVzLnZhbHVlKSB7CisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCQlhZGFwdGVyLT5TdGF0cy5VbmhhbmRsZWRJbnRlcnJ1cHRzUGVyU2VjKys7CisjZW5kaWYKKwkJaGFuZGxlZCA9IGZhbHNlOworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIk5PVCBPVVIgSU5URVJSVVBUXG4iKTsKKwkJZXQxMzF4X2VuYWJsZV9pbnRlcnJ1cHRzKGFkYXB0ZXIpOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBUaGlzIGlzIG91ciBpbnRlcnJ1cHQsIHNvIHByb2Nlc3MgYWNjb3JkaW5nbHkgKi8KKyNpZmRlZiBDT05GSUdfRVQxMzFYX0RFQlVHCisJaWYgKHN0YXR1cy5iaXRzLnJ4ZG1hX3hmcl9kb25lKSB7CisJCWFkYXB0ZXItPlN0YXRzLlJ4RG1hSW50ZXJydXB0c1BlclNlYysrOworCX0KKworCWlmIChzdGF0dXMuYml0cy50eGRtYV9pc3IpIHsKKwkJYWRhcHRlci0+U3RhdHMuVHhEbWFJbnRlcnJ1cHRzUGVyU2VjKys7CisJfQorI2VuZGlmCisKKwlpZiAoc3RhdHVzLmJpdHMud2F0Y2hkb2dfaW50ZXJydXB0KSB7CisJCVBNUF9UQ0IgcE1wVGNiID0gYWRhcHRlci0+VHhSaW5nLkN1cnJTZW5kSGVhZDsKKworCQlpZiAocE1wVGNiKSB7CisJCQlpZiAoKytwTXBUY2ItPlBhY2tldFN0YWxlQ291bnQgPiAxKSB7CisJCQkJc3RhdHVzLmJpdHMudHhkbWFfaXNyID0gMTsKKwkJCX0KKwkJfQorCisJCWlmIChhZGFwdGVyLT5SeFJpbmcuVW5maW5pc2hlZFJlY2VpdmVzKSB7CisJCQlzdGF0dXMuYml0cy5yeGRtYV94ZnJfZG9uZSA9IDE7CisJCX0gZWxzZSBpZiAocE1wVGNiID09IE5VTEwpIHsKKwkJCXdyaXRlbCgwLCAmYWRhcHRlci0+Q1NSQWRkcmVzcy0+Z2xvYmFsLndhdGNoZG9nX3RpbWVyKTsKKwkJfQorCisJCXN0YXR1cy5iaXRzLndhdGNoZG9nX2ludGVycnVwdCA9IDA7CisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCQlhZGFwdGVyLT5TdGF0cy5XYXRjaERvZ0ludGVycnVwdHNQZXJTZWMrKzsKKyNlbmRpZgorCX0KKworCWlmIChzdGF0dXMudmFsdWUgPT0gMCkgeworCQkvKiBUaGlzIGludGVycnVwdCBoYXMgaW4gc29tZSB3YXkgYmVlbiAiaGFuZGxlZCIgYnkKKwkJICogdGhlIElTUi4gRWl0aGVyIGl0IHdhcyBhIHNwdXJpb3VzIFJ4IGludGVycnVwdCwgb3IKKwkJICogaXQgd2FzIGEgVHggaW50ZXJydXB0IHRoYXQgaGFzIGJlZW4gZmlsdGVyZWQgYnkKKwkJICogdGhlIElTUi4KKwkJICovCisJCWV0MTMxeF9lbmFibGVfaW50ZXJydXB0cyhhZGFwdGVyKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogV2UgbmVlZCB0byBzYXZlIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIHZhbHVlIGZvciB1c2UgaW4gb3VyCisJICogRFBDLiBXZSB3aWxsIGNsZWFyIHRoZSBzb2Z0d2FyZSBjb3B5IG9mIHRoYXQgaW4gdGhhdAorCSAqIHJvdXRpbmUuCisJICovCisJYWRhcHRlci0+U3RhdHMuSW50ZXJydXB0U3RhdHVzID0gc3RhdHVzOworCisJLyogU2NoZWR1bGUgdGhlIElTUiBoYW5kbGVyIGFzIGEgYm90dG9tLWhhbGYgdGFzayBpbiB0aGUKKwkgKiBrZXJuZWwncyB0cV9pbW1lZGlhdGUgcXVldWUsIGFuZCBtYXJrIHRoZSBxdWV1ZSBmb3IKKwkgKiBleGVjdXRpb24KKwkgKi8KKwlzY2hlZHVsZV93b3JrKCZhZGFwdGVyLT50YXNrKTsKKworb3V0OgorCXJldHVybiBJUlFfUkVUVkFMKGhhbmRsZWQpOworfQorCisvKioKKyAqIGV0MTMxeF9pc3JfaGFuZGxlciAtIFRoZSBJU1IgaGFuZGxlcgorICogQHBfYWRhcHRlciwgYSBwb2ludGVyIHRvIHRoZSBkZXZpY2UncyBwcml2YXRlIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogc2NoZWR1bGVkIHRvIHJ1biBpbiBhIGRlZmVycmVkIGNvbnRleHQgYnkgdGhlIElTUi4gVGhpcyBpcyB3aGVyZSB0aGUgSVNSJ3MKKyAqIHdvcmsgYWN0dWFsbHkgZ2V0cyBkb25lLgorICovCit2b2lkIGV0MTMxeF9pc3JfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIsIHRhc2spOworCUlOVEVSUlVQVF90IEdsb2JTdGF0dXMgPSBwQWRhcHRlci0+U3RhdHMuSW50ZXJydXB0U3RhdHVzOworCUFERFJFU1NfTUFQX3QgX19pb21lbSAqaW9tZW0gPSBwQWRhcHRlci0+Q1NSQWRkcmVzczsKKworCS8qCisJICogVGhlc2UgZmlyc3QgdHdvIGFyZSBieSBmYXIgdGhlIG1vc3QgY29tbW9uLiAgT25jZSBoYW5kbGVkLCB3ZSBjbGVhcgorCSAqIHRoZWlyIHR3byBiaXRzIGluIHRoZSBzdGF0dXMgd29yZC4gIElmIHRoZSB3b3JkIGlzIG5vdyB6ZXJvLCB3ZQorCSAqIGV4aXQuCisJICovCisJLyogSGFuZGxlIGFsbCB0aGUgY29tcGxldGVkIFRyYW5zbWl0IGludGVycnVwdHMgKi8KKwlpZiAoR2xvYlN0YXR1cy5iaXRzLnR4ZG1hX2lzcikgeworCQlEQkdfVFgoZXQxMzF4X2RiZ2luZm8sICJUWERNQV9JU1IgaW50ZXJydXB0XG4iKTsKKwkJZXQxMzF4X2hhbmRsZV9zZW5kX2ludGVycnVwdChwQWRhcHRlcik7CisJfQorCisJLyogSGFuZGxlIGFsbCB0aGUgY29tcGxldGVkIFJlY2VpdmVzIGludGVycnVwdHMgKi8KKwlpZiAoR2xvYlN0YXR1cy5iaXRzLnJ4ZG1hX3hmcl9kb25lKSB7CisJCURCR19SWChldDEzMXhfZGJnaW5mbywgIlJYRE1BX1hGUl9ET05FIGludGVycnVwdFxuIik7CisJCWV0MTMxeF9oYW5kbGVfcmVjdl9pbnRlcnJ1cHQocEFkYXB0ZXIpOworCX0KKworCUdsb2JTdGF0dXMudmFsdWUgJj0gMHhmZmZmZmZkNzsKKworCWlmIChHbG9iU3RhdHVzLnZhbHVlKSB7CisJCS8qIEhhbmRsZSB0aGUgVFhETUEgRXJyb3IgaW50ZXJydXB0ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMudHhkbWFfZXJyKSB7CisJCQlUWERNQV9FUlJPUl90IFR4RG1hRXJyOworCisJCQkvKiBGb2xsb3dpbmcgcmVhZCBhbHNvIGNsZWFycyB0aGUgcmVnaXN0ZXIgKENPUikgKi8KKwkJCVR4RG1hRXJyLnZhbHVlID0gcmVhZGwoJmlvbWVtLT50eGRtYS5UeERtYUVycm9yLnZhbHVlKTsKKworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJUWERNQV9FUlIgaW50ZXJydXB0LCBlcnJvciA9ICVkXG4iLAorCQkJCSAgICBUeERtYUVyci52YWx1ZSk7CisJCX0KKworCQkvKiBIYW5kbGUgRnJlZSBCdWZmZXIgUmluZyAwIGFuZCAxIExvdyBpbnRlcnJ1cHQgKi8KKwkJaWYgKEdsb2JTdGF0dXMuYml0cy5yeGRtYV9mYl9yaW5nMF9sb3cgfHwKKwkJICAgIEdsb2JTdGF0dXMuYml0cy5yeGRtYV9mYl9yaW5nMV9sb3cpIHsKKwkJCS8qCisJCQkgKiBUaGlzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBidWZmZXJzIGluCisJCQkgKiBSWERNQSBmcmVlIGJ1ZmZlciByaW5nIDAgaXMgPD0gdGhlIGxpbWl0IHlvdQorCQkJICogcHJvZ3JhbW1lZC4gRnJlZSBidWZmZXIgcmVzb3VyY2VzIG5lZWQgdG8gYmUKKwkJCSAqIHJldHVybmVkLiAgRnJlZSBidWZmZXJzIGFyZSBjb25zdW1lZCBhcyBwYWNrZXRzCisJCQkgKiBhcmUgcGFzc2VkIGZyb20gdGhlIG5ldHdvcmsgdG8gdGhlIGhvc3QuIFRoZSBob3N0CisJCQkgKiBiZWNvbWVzIGF3YXJlIG9mIHRoZSBwYWNrZXRzIGZyb20gdGhlIGNvbnRlbnRzIG9mCisJCQkgKiB0aGUgcGFja2V0IHN0YXR1cyByaW5nLiBUaGlzIHJpbmcgaXMgcXVlcmllZCB3aGVuCisJCQkgKiB0aGUgcGFja2V0IGRvbmUgaW50ZXJydXB0IG9jY3Vycy4gUGFja2V0cyBhcmUgdGhlbgorCQkJICogcGFzc2VkIHRvIHRoZSBPUy4gV2hlbiB0aGUgT1MgaXMgZG9uZSB3aXRoIHRoZQorCQkJICogcGFja2V0cyB0aGUgcmVzb3VyY2VzIGNhbiBiZSByZXR1cm5lZCB0byB0aGUKKwkJCSAqIEVUMTMxMCBmb3IgcmUtdXNlLiBUaGlzIGludGVycnVwdCBpcyBvbmUgbWV0aG9kIG9mCisJCQkgKiByZXR1cm5pbmcgcmVzb3VyY2VzLgorCQkJICovCisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIlJYRE1BX0ZCX1JJTkcwX0xPVyBvciAiCisJCQkJICAgICJSWERNQV9GQl9SSU5HMV9MT1cgaW50ZXJydXB0XG4iKTsKKworCQkJLyogSWYgdGhlIHVzZXIgaGFzIGZsb3cgY29udHJvbCBvbiwgdGhlbiB3ZSB3aWxsCisJCQkgKiBzZW5kIGEgcGF1c2UgcGFja2V0LCBvdGhlcndpc2UganVzdCBleGl0CisJCQkgKi8KKwkJCWlmIChwQWRhcHRlci0+Rmxvd0NvbnRyb2wgPT0gVHhPbmx5IHx8CisJCQkgICAgcEFkYXB0ZXItPkZsb3dDb250cm9sID09IEJvdGgpIHsKKwkJCQlQTV9DU1JfdCBwbV9jc3I7CisKKwkJCQkvKiBUZWxsIHRoZSBkZXZpY2UgdG8gc2VuZCBhIHBhdXNlIHBhY2tldCB2aWEKKwkJCQkgKiB0aGUgYmFjayBwcmVzc3VyZSByZWdpc3RlcgorCQkJCSAqLworCQkJCXBtX2Nzci52YWx1ZSA9IHJlYWRsKCZpb21lbS0+Z2xvYmFsLnBtX2Nzci52YWx1ZSk7CisJCQkJaWYgKHBtX2Nzci5iaXRzLnBtX3BoeV9zd19jb21hID09IDApIHsKKwkJCQkJVFhNQUNfQlBfQ1RSTF90IGJwX2N0cmwgPSB7IDAgfTsKKworCQkJCQlicF9jdHJsLmJpdHMuYnBfcmVxID0gMTsKKwkJCQkJYnBfY3RybC5iaXRzLmJwX3hvbnhvZmYgPSAxOworCQkJCQl3cml0ZWwoYnBfY3RybC52YWx1ZSwKKwkJCQkJICAgICAgICZpb21lbS0+dHhtYWMuYnBfY3RybC52YWx1ZSk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyogSGFuZGxlIFBhY2tldCBTdGF0dXMgUmluZyBMb3cgSW50ZXJydXB0ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMucnhkbWFfcGt0X3N0YXRfcmluZ19sb3cpIHsKKwkJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgICAiUlhETUFfUEtUX1NUQVRfUklOR19MT1cgaW50ZXJydXB0XG4iKTsKKworCQkJLyoKKwkJCSAqIFNhbWUgaWRlYSBhcyB3aXRoIHRoZSB0d28gRnJlZSBCdWZmZXIgUmluZ3MuCisJCQkgKiBQYWNrZXRzIGdvaW5nIGZyb20gdGhlIG5ldHdvcmsgdG8gdGhlIGhvc3QgZWFjaAorCQkJICogY29uc3VtZSBhIGZyZWUgYnVmZmVyIHJlc291cmNlIGFuZCBhIHBhY2tldCBzdGF0dXMKKwkJCSAqIHJlc291cmNlLiAgVGhlc2UgcmVzb3VyZXMgYXJlIHBhc3NlZCB0byB0aGUgT1MuCisJCQkgKiBXaGVuIHRoZSBPUyBpcyBkb25lIHdpdGggdGhlIHJlc291cmNlcywgdGhleSBuZWVkCisJCQkgKiB0byBiZSByZXR1cm5lZCB0byB0aGUgRVQxMzEwLiBUaGlzIGlzIG9uZSBtZXRob2QKKwkJCSAqIG9mIHJldHVybmluZyB0aGUgcmVzb3VyY2VzLgorCQkJICovCisJCX0KKworCQkvKiBIYW5kbGUgUlhETUEgRXJyb3IgSW50ZXJydXB0ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMucnhkbWFfZXJyKSB7CisJCQkvKgorCQkJICogVGhlIHJ4ZG1hX2Vycm9yIGludGVycnVwdCBpcyBzZW50IHdoZW4gYSB0aW1lLW91dAorCQkJICogb24gYSByZXF1ZXN0IGlzc3VlZCBieSB0aGUgSkFHQ29yZSBoYXMgb2NjdXJyZWQgb3IKKwkJCSAqIGEgY29tcGxldGlvbiBpcyByZXR1cm5lZCB3aXRoIGFuIHVuLXN1Y2Nlc3NmdWwKKwkJCSAqIHN0YXR1cy4gIEluIGJvdGggY2FzZXMgdGhlIHJlcXVlc3QgaXMgY29uc2lkZXJlZAorCQkJICogY29tcGxldGUuIFRoZSBKQUdDb3JlIHdpbGwgYXV0b21hdGljYWxseSByZS10cnkgdGhlCisJCQkgKiByZXF1ZXN0IGluIHF1ZXN0aW9uLiBOb3JtYWxseSBpbmZvcm1hdGlvbiBvbiBldmVudHMKKwkJCSAqIGxpa2UgdGhlc2UgYXJlIHNlbnQgdG8gdGhlIGhvc3QgdXNpbmcgdGhlICJBZHZhbmNlZAorCQkJICogRXJyb3IgUmVwb3J0aW5nIiBjYXBhYmlsaXR5LiBUaGlzIGludGVycnVwdCBpcworCQkJICogYW5vdGhlciB3YXkgb2YgZ2V0dGluZyBzaW1pbGFyIGluZm9ybWF0aW9uLiBUaGUKKwkJCSAqIG9ubHkgdGhpbmcgcmVxdWlyZWQgaXMgdG8gY2xlYXIgdGhlIGludGVycnVwdCBieQorCQkJICogcmVhZGluZyB0aGUgSVNSIGluIHRoZSBnbG9iYWwgcmVzb3VyY2VzLiBUaGUKKwkJCSAqIEpBR0NvcmUgd2lsbCBkbyBhIHJlLXRyeSBvbiB0aGUgcmVxdWVzdC4gIE5vcm1hbGx5CisJCQkgKiB5b3Ugc2hvdWxkIG5ldmVyIHNlZSB0aGlzIGludGVycnVwdC4gSWYgeW91IHN0YXJ0CisJCQkgKiB0byBzZWUgdGhpcyBpbnRlcnJ1cHQgb2NjdXJyaW5nIGZyZXF1ZW50bHkgdGhlbgorCQkJICogc29tZXRoaW5nIGJhZCBoYXMgb2NjdXJyZWQuIEEgcmVzZXQgbWlnaHQgYmUgdGhlCisJCQkgKiB0aGluZyB0byBkby4KKwkJCSAqLworCQkJLy8gVFJBUCgpOworCisJCQlwQWRhcHRlci0+VHhNYWNUZXN0LnZhbHVlID0KKwkJCQlyZWFkbCgmaW9tZW0tPnR4bWFjLnR4X3Rlc3QudmFsdWUpOworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJSeERNQV9FUlIgaW50ZXJydXB0LCBlcnJvciAleFxuIiwKKwkJCQkgICAgcEFkYXB0ZXItPlR4TWFjVGVzdC52YWx1ZSk7CisJCX0KKworCQkvKiBIYW5kbGUgdGhlIFdha2Ugb24gTEFOIEV2ZW50ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMud2FrZV9vbl9sYW4pIHsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIGEgc2Vjb25kYXJ5IGludGVycnVwdCBmb3Igd2FrZSBvbiBMQU4uCisJCQkgKiBUaGUgZHJpdmVyIHNob3VsZCBuZXZlciBzZWUgdGhpcywgaWYgaXQgZG9lcywKKwkJCSAqIHNvbWV0aGluZyBzZXJpb3VzIGlzIHdyb25nLiBXZSB3aWxsIFRSQVAgdGhlCisJCQkgKiBtZXNzYWdlIHdoZW4gd2UgYXJlIGluIERCRyBtb2RlLCBvdGhlcndpc2Ugd2UKKwkJCSAqIHdpbGwgaWdub3JlIGl0LgorCQkJICovCisJCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJXQUtFX09OX0xBTiBpbnRlcnJ1cHRcbiIpOworCQl9CisKKwkJLyogSGFuZGxlIHRoZSBQSFkgaW50ZXJydXB0ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMucGh5X2ludGVycnVwdCkgeworCQkJUE1fQ1NSX3QgcG1fY3NyOworCQkJTUlfQk1TUl90IEJtc3JJbnRzLCBCbXNyRGF0YTsKKwkJCU1JX0lTUl90IG15SXNyOworCisJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlBIWSBpbnRlcnJ1cHRcbiIpOworCisJCQkvKiBJZiB3ZSBhcmUgaW4gY29tYSBtb2RlIHdoZW4gd2UgZ2V0IHRoaXMgaW50ZXJydXB0LAorCQkJICogd2UgbmVlZCB0byBkaXNhYmxlIGl0LgorCQkJICovCisJCQlwbV9jc3IudmFsdWUgPSByZWFkbCgmaW9tZW0tPmdsb2JhbC5wbV9jc3IudmFsdWUpOworCQkJaWYgKHBtX2Nzci5iaXRzLnBtX3BoeV9zd19jb21hID09IDEpIHsKKwkJCQkvKgorCQkJCSAqIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gY29tYSBtb2RlIGFuZCBpZgorCQkJCSAqIHNvLCBkaXNhYmxlIGl0IGJlY2F1c2Ugd2Ugd2lsbCBub3QgYmUgYWJsZQorCQkJCSAqIHRvIHJlYWQgUEhZIHZhbHVlcyB1bnRpbCB3ZSBhcmUgb3V0LgorCQkJCSAqLworCQkJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLAorCQkJCQkgICAgIkRldmljZSBpcyBpbiBDT01BIG1vZGUsICIKKwkJCQkJICAgICJuZWVkIHRvIHdha2UgdXBcbiIpOworCQkJCURpc2FibGVQaHlDb21hKHBBZGFwdGVyKTsKKwkJCX0KKworCQkJLyogUmVhZCB0aGUgUEhZIElTUiB0byBjbGVhciB0aGUgcmVhc29uIGZvciB0aGUKKwkJCSAqIGludGVycnVwdC4KKwkJCSAqLworCQkJTWlSZWFkKHBBZGFwdGVyLCAodWludDhfdCkgb2Zmc2V0b2YoTUlfUkVHU190LCBpc3IpLAorCQkJICAgICAgICZteUlzci52YWx1ZSk7CisKKwkJCWlmICghcEFkYXB0ZXItPlJlcGxpY2FQaHlMb29wYmspIHsKKwkJCQlNaVJlYWQocEFkYXB0ZXIsCisJCQkJICAgICAgICh1aW50OF90KSBvZmZzZXRvZihNSV9SRUdTX3QsIGJtc3IpLAorCQkJCSAgICAgICAmQm1zckRhdGEudmFsdWUpOworCisJCQkJQm1zckludHMudmFsdWUgPQorCQkJCSAgICBwQWRhcHRlci0+Qm1zci52YWx1ZSBeIEJtc3JEYXRhLnZhbHVlOworCQkJCXBBZGFwdGVyLT5CbXNyLnZhbHVlID0gQm1zckRhdGEudmFsdWU7CisKKwkJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywKKwkJCQkJICAgICJCbXNyLnZhbHVlID0gMHglMDR4LCIKKwkJCQkJICAgICJCbXNyX2ludHMudmFsdWUgPSAweCUwNHhcbiIsCisJCQkJCSAgICBCbXNyRGF0YS52YWx1ZSwgQm1zckludHMudmFsdWUpOworCisJCQkJLyogRG8gYWxsIHRoZSBjYWJsZSBpbiAvIGNhYmxlIG91dCBzdHVmZiAqLworCQkJCWV0MTMxeF9NaWlfY2hlY2socEFkYXB0ZXIsIEJtc3JEYXRhLCBCbXNySW50cyk7CisJCQl9CisJCX0KKworCQkvKiBMZXQncyBtb3ZlIG9uIHRvIHRoZSBUeE1hYyAqLworCQlpZiAoR2xvYlN0YXR1cy5iaXRzLnR4bWFjX2ludGVycnVwdCkgeworCQkJcEFkYXB0ZXItPlR4UmluZy5UeE1hY0Vyci52YWx1ZSA9CisJCQkJcmVhZGwoJmlvbWVtLT50eG1hYy5lcnIudmFsdWUpOworCisJCQkvKgorCQkJICogV2hlbiBhbnkgb2YgdGhlIGVycm9ycyBvY2N1ciBhbmQgVFhNQUMgZ2VuZXJhdGVzCisJCQkgKiBhbiBpbnRlcnJ1cHQgdG8gcmVwb3J0IHRoZXNlIGVycm9ycywgaXQgdXN1YWxseQorCQkJICogbWVhbnMgdGhhdCBUWE1BQyBoYXMgZGV0ZWN0ZWQgYW4gZXJyb3IgaW4gdGhlIGRhdGEKKwkJCSAqIHN0cmVhbSByZXRyaWV2ZWQgZnJvbSB0aGUgb24tY2hpcCBUeCBRLiBBbGwgb2YKKwkJCSAqIHRoZXNlIGVycm9ycyBhcmUgY2F0YXN0cm9waGljIGFuZCBUWE1BQyB3b24ndCBiZQorCQkJICogYWJsZSB0byByZWNvdmVyIGRhdGEgd2hlbiB0aGVzZSBlcnJvcnMgb2NjdXIuICBJbgorCQkJICogYSBudXRzaGVsbCwgdGhlIHdob2xlIFR4IHBhdGggd2lsbCBoYXZlIHRvIGJlIHJlc2V0CisJCQkgKiBhbmQgcmUtY29uZmlndXJlZCBhZnRlcndhcmRzLgorCQkJICovCisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIlRYTUFDIGludGVycnVwdCwgZXJyb3IgMHglMDh4XG4iLAorCQkJCSAgICBwQWRhcHRlci0+VHhSaW5nLlR4TWFjRXJyLnZhbHVlKTsKKworCQkJLyogSWYgd2UgYXJlIGRlYnVnZ2luZywgd2Ugd2FudCB0byBzZWUgdGhpcyBlcnJvciwKKwkJCSAqIG90aGVyd2lzZSB3ZSBqdXN0IHdhbnQgdGhlIGRldmljZSB0byBiZSByZXNldCBhbmQKKwkJCSAqIGNvbnRpbnVlCisJCQkgKi8KKwkJCS8vREJHX1RSQVAoKTsKKwkJfQorCisJCS8qIEhhbmRsZSBSWE1BQyBJbnRlcnJ1cHQgKi8KKwkJaWYgKEdsb2JTdGF0dXMuYml0cy5yeG1hY19pbnRlcnJ1cHQpIHsKKwkJCS8qCisJCQkgKiBUaGVzZSBpbnRlcnJ1cHRzIGFyZSBjYXRhc3Ryb3BoaWMgdG8gdGhlIGRldmljZSwKKwkJCSAqIHdoYXQgd2UgbmVlZCB0byBkbyBpcyBkaXNhYmxlIHRoZSBpbnRlcnJ1cHRzIGFuZAorCQkJICogc2V0IHRoZSBmbGFnIHRvIGNhdXNlIHVzIHRvIHJlc2V0IHNvIHdlIGNhbiBzb2x2ZQorCQkJICogdGhpcyBpc3N1ZS4KKwkJCSAqLworCQkJLy8gTVBfU0VUX0ZMQUcoIHBBZGFwdGVyLCBmTVBfQURBUFRFUl9IQVJEV0FSRV9FUlJPUiApOworCisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIlJYTUFDIGludGVycnVwdCwgZXJyb3IgMHglMDh4LiAgUmVxdWVzdGluZyByZXNldFxuIiwKKwkJCQkgICAgcmVhZGwoJmlvbWVtLT5yeG1hYy5lcnJfcmVnLnZhbHVlKSk7CisKKwkJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgICAiRW5hYmxlIDB4JTA4eCwgRGlhZyAweCUwOHhcbiIsCisJCQkJICAgIHJlYWRsKCZpb21lbS0+cnhtYWMuY3RybC52YWx1ZSksCisJCQkJICAgIHJlYWRsKCZpb21lbS0+cnhtYWMucnhxX2RpYWcudmFsdWUpKTsKKworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSBkZWJ1Z2dpbmcsIHdlIHdhbnQgdG8gc2VlIHRoaXMgZXJyb3IsCisJCQkgKiBvdGhlcndpc2Ugd2UganVzdCB3YW50IHRoZSBkZXZpY2UgdG8gYmUgcmVzZXQgYW5kCisJCQkgKiBjb250aW51ZQorCQkJICovCisJCQkvLyBUUkFQKCk7CisJCX0KKworCQkvKiBIYW5kbGUgTUFDX1NUQVQgSW50ZXJydXB0ICovCisJCWlmIChHbG9iU3RhdHVzLmJpdHMubWFjX3N0YXRfaW50ZXJydXB0KSB7CisJCQkvKgorCQkJICogVGhpcyBtZWFucyBhdCBsZWFzdCBvbmUgb2YgdGhlIHVuLW1hc2tlZCBjb3VudGVycworCQkJICogaW4gdGhlIE1BQ19TVEFUIGJsb2NrIGhhcyByb2xsZWQgb3Zlci4gIFVzZSB0aGlzCisJCQkgKiB0byBtYWludGFpbiB0aGUgdG9wLCBzb2Z0d2FyZSBtYW5hZ2VkIGJpdHMgb2YgdGhlCisJCQkgKiBjb3VudGVyKHMpLgorCQkJICovCisJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIk1BQ19TVEFUIGludGVycnVwdFxuIik7CisJCQlIYW5kbGVNYWNTdGF0SW50ZXJydXB0KHBBZGFwdGVyKTsKKwkJfQorCisJCS8qIEhhbmRsZSBTTFYgVGltZW91dCBJbnRlcnJ1cHQgKi8KKwkJaWYgKEdsb2JTdGF0dXMuYml0cy5zbHZfdGltZW91dCkgeworCQkJLyoKKwkJCSAqIFRoaXMgbWVhbnMgYSB0aW1lb3V0IGhhcyBvY2N1cmVkIG9uIGEgcmVhZCBvcgorCQkJICogd3JpdGUgcmVxdWVzdCB0byBvbmUgb2YgdGhlIEpBR0NvcmUgcmVnaXN0ZXJzLiBUaGUKKwkJCSAqIEdsb2JhbCBSZXNvdXJjZXMgYmxvY2sgaGFzIHRlcm1pbmF0ZWQgdGhlIHJlcXVlc3QKKwkJCSAqIGFuZCBvbiBhIHJlYWQgcmVxdWVzdCwgcmV0dXJuZWQgYSAiZmFrZSIgdmFsdWUuCisJCQkgKiBUaGUgbW9zdCBsaWtlbHkgcmVhc29ucyBhcmU6IEJhZCBBZGRyZXNzIG9yIHRoZQorCQkJICogYWRkcmVzc2VkIG1vZHVsZSBpcyBpbiBhIHBvd2VyLWRvd24gc3RhdGUgYW5kCisJCQkgKiBjYW4ndCByZXNwb25kLgorCQkJICovCisJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlNMVl9USU1FT1VUIGludGVycnVwdFxuIik7CisJCX0KKwl9CisKKwlpZiAocEFkYXB0ZXItPlBvTWdtdC5Qb3dlclN0YXRlID09IE5kaXNEZXZpY2VTdGF0ZUQwKSB7CisJCWV0MTMxeF9lbmFibGVfaW50ZXJydXB0cyhwQWRhcHRlcik7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmE1MWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIEFnZXJlIFN5c3RlbXMgSW5jLgorICogMTAvMTAwLzEwMDAgQmFzZS1UIEV0aGVybmV0IERyaXZlciBmb3IgdGhlIEVUMTMwMSBhbmQgRVQxMzF4IHNlcmllcyBNQUNzCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIGh0dHA6Ly93d3cuYWdlcmUuY29tCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldDEzMXhfaXNyLmggLSBEZWZpbmVzLCBzdHJ1Y3RzLCBlbnVtcywgcHJvdG90eXBlcywgZXRjLiBwZXJ0YWluaW5nIHRvIHRoZQorICogICAgICAgICAgICAgICAgSVNSIHByb2Nlc3NpbmcgY29kZS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxWF9JU1JfSF9fCisjZGVmaW5lIF9fRVQxMzFYX0lTUl9IX18KKworaXJxcmV0dXJuX3QgZXQxMzF4X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpOwordm9pZCBldDEzMXhfaXNyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKKworI2VuZGlmIC8qIF9fRVQxMzFYX0lTUl9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2NTk3MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jCkBAIC0wLDAgKzEsODU2IEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxeF9uZXRkZXYuYyAtIFJvdXRpbmVzIGFuZCBkYXRhIHJlcXVpcmVkIGJ5IGFsbCBMaW51eCBuZXR3b3JrIGRldmljZXMuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTT0ZUV0FSRSBMSUNFTlNFCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCisgKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCisgKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCisgKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisgKgorICogQ29weXJpZ2h0IKkgMjAwNSBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKyAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogRGlzY2xhaW1lcgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQorICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KKyAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJldDEzMXhfdmVyc2lvbi5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWJ1Zy5oIgorI2luY2x1ZGUgImV0MTMxeF9kZWZzLmgiCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKworI2luY2x1ZGUgPGxpbnV4L21paS5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisKKyNpbmNsdWRlICJldDEzMTBfcGh5LmgiCisjaW5jbHVkZSAiZXQxMzEwX3BtLmgiCisjaW5jbHVkZSAiZXQxMzEwX2phZ2NvcmUuaCIKKyNpbmNsdWRlICJldDEzMTBfbWFjLmgiCisjaW5jbHVkZSAiZXQxMzEwX3R4LmgiCisKKyNpbmNsdWRlICJldDEzMXhfYWRhcHRlci5oIgorI2luY2x1ZGUgImV0MTMxeF9pc3IuaCIKKyNpbmNsdWRlICJldDEzMXhfaW5pdHBjaS5oIgorCisvKiBEYXRhIGZvciBkZWJ1Z2dpbmcgZmFjaWxpdGllcyAqLworI2lmZGVmIENPTkZJR19FVDEzMVhfREVCVUcKK2V4dGVybiBkYmdfaW5mb190ICpldDEzMXhfZGJnaW5mbzsKKyNlbmRpZiAvKiBDT05GSUdfRVQxMzFYX0RFQlVHICovCisKK3N0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpldDEzMXhfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CitpbnQgZXQxMzF4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CitpbnQgZXQxMzF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOworaW50IGV0MTMxeF9pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgaWZyZXEgKnJlcWJ1ZiwgaW50IGNtZCk7Cit2b2lkIGV0MTMxeF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CitpbnQgZXQxMzF4X3R4KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOwordm9pZCBldDEzMXhfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTsKK2ludCBldDEzMXhfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgbmV3X210dSk7CitpbnQgZXQxMzF4X3NldF9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpuZXdfbWFjKTsKK3ZvaWQgZXQxMzF4X3ZsYW5fcnhfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHZsYW5fZ3JvdXAgKmdycCk7Cit2b2lkIGV0MTMxeF92bGFuX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdWludDE2X3QgdmlkKTsKK3ZvaWQgZXQxMzF4X3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdWludDE2X3QgdmlkKTsKKworLyoqCisgKiBldDEzMXhfZGV2aWNlX2FsbG9jCisgKgorICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIG5ldF9kZXZpY2Ugc3RydWN0IGZvcgorICogdGhpcyBkZXZpY2UuCisgKgorICogQ3JlYXRlIGluc3RhbmNlcyBvZiBuZXRfZGV2aWNlIGFuZCB3bF9wcml2YXRlIGZvciB0aGUgbmV3IGFkYXB0ZXIgYW5kCisgKiByZWdpc3RlciB0aGUgZGV2aWNlJ3MgZW50cnkgcG9pbnRzIGluIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZS4KKyAqLworc3RydWN0IG5ldF9kZXZpY2UgKmV0MTMxeF9kZXZpY2VfYWxsb2Modm9pZCkKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIEFsbG9jIG5ldF9kZXZpY2UgYW5kIGFkYXB0ZXIgc3RydWN0cyAqLworCW5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIpKTsKKworCWlmIChuZXRkZXYgPT0gTlVMTCkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sCisJCQkgICJBbGxvYyBvZiBuZXRfZGV2aWNlIHN0cnVjdCBmYWlsZWRcbiIpOworCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBTZXR1cCB0aGUgZnVuY3Rpb24gcmVnaXN0cmF0aW9uIHRhYmxlIChhbmQgb3RoZXIgZGF0YSkgZm9yIGEKKwkgKiBuZXRfZGV2aWNlCisJICovCisJLy9uZXRkZXYtPmluaXQgICAgICAgICAgICAgICA9ICZldDEzMXhfaW5pdDsKKwkvL25ldGRldi0+c2V0X2NvbmZpZyA9ICZldDEzMXhfY29uZmlnOworCW5ldGRldi0+Z2V0X3N0YXRzID0gJmV0MTMxeF9zdGF0czsKKwluZXRkZXYtPm9wZW4gPSAmZXQxMzF4X29wZW47CisJbmV0ZGV2LT5zdG9wID0gJmV0MTMxeF9jbG9zZTsKKwluZXRkZXYtPmRvX2lvY3RsID0gJmV0MTMxeF9pb2N0bDsKKwluZXRkZXYtPnNldF9tdWx0aWNhc3RfbGlzdCA9ICZldDEzMXhfbXVsdGljYXN0OworCW5ldGRldi0+aGFyZF9zdGFydF94bWl0ID0gJmV0MTMxeF90eDsKKwluZXRkZXYtPnR4X3RpbWVvdXQgPSAmZXQxMzF4X3R4X3RpbWVvdXQ7CisJbmV0ZGV2LT53YXRjaGRvZ190aW1lbyA9IEVUMTMxWF9UWF9USU1FT1VUOworCW5ldGRldi0+Y2hhbmdlX210dSA9ICZldDEzMXhfY2hhbmdlX210dTsKKwluZXRkZXYtPnNldF9tYWNfYWRkcmVzcyA9ICZldDEzMXhfc2V0X21hY19hZGRyOworCisJLy9uZXRkZXYtPmV0aHRvb2xfb3BzICAgICAgICA9ICZldDEzMXhfZXRodG9vbF9vcHM7CisKKwkvLyBQb2xsPworCS8vbmV0ZGV2LT5wb2xsICAgICAgICAgICAgICAgPSAmZXQxMzF4X3BvbGw7CisJLy9uZXRkZXYtPnBvbGxfY29udHJvbGxlciAgICA9ICZldDEzMXhfcG9sbF9jb250cm9sbGVyOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gbmV0ZGV2OworfQorCisvKioKKyAqIGV0MTMxeF9zdGF0cyAtIFJldHVybiB0aGUgY3VycmVudCBkZXZpY2Ugc3RhdGlzdGljcy4KKyAqIEBuZXRkZXY6IGRldmljZSB3aG9zZSBzdGF0cyBhcmUgYmVpbmcgcXVlcmllZAorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK3N0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpldDEzMXhfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwlzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpzdGF0cyA9ICZhZGFwdGVyLT5uZXRfc3RhdHM7CisJQ0VfU1RBVFNfdCAqZGV2c3RhdCA9ICZhZGFwdGVyLT5TdGF0czsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlzdGF0cy0+cnhfcGFja2V0cyA9IGRldnN0YXQtPmlwYWNrZXRzOworCXN0YXRzLT50eF9wYWNrZXRzID0gZGV2c3RhdC0+b3BhY2tldHM7CisJc3RhdHMtPnJ4X2Vycm9ycyA9IGRldnN0YXQtPmxlbmd0aF9lcnIgKyBkZXZzdGF0LT5hbGlnbm1lbnRfZXJyICsKKwkgICAgZGV2c3RhdC0+Y3JjX2VyciArIGRldnN0YXQtPmNvZGVfdmlvbGF0aW9ucyArIGRldnN0YXQtPm90aGVyX2Vycm9yczsKKwlzdGF0cy0+dHhfZXJyb3JzID0gZGV2c3RhdC0+bWF4X3BrdF9lcnJvcjsKKwlzdGF0cy0+bXVsdGljYXN0ID0gZGV2c3RhdC0+bXVsdGlyY3Y7CisJc3RhdHMtPmNvbGxpc2lvbnMgPSBkZXZzdGF0LT5jb2xsaXNpb25zOworCisJc3RhdHMtPnJ4X2xlbmd0aF9lcnJvcnMgPSBkZXZzdGF0LT5sZW5ndGhfZXJyOworCXN0YXRzLT5yeF9vdmVyX2Vycm9ycyA9IGRldnN0YXQtPnJ4X292X2Zsb3c7CisJc3RhdHMtPnJ4X2NyY19lcnJvcnMgPSBkZXZzdGF0LT5jcmNfZXJyOworCisJLy8gTk9URTogVGhlc2Ugc3RhdHMgZG9uJ3QgaGF2ZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbiBDRV9TVEFUUywgc28gd2UncmUKKwkvLyAgICAgICBnb2luZyB0byBoYXZlIHRvIHVwZGF0ZSB0aGVzZSBkaXJlY3RseSBmcm9tIHdpdGhpbiB0aGUgVFgvUlggY29kZQorCS8vc3RhdHMtPnJ4X2J5dGVzICAgICAgICAgICAgPSAyMDsgLy9kZXZzdGF0LT47CisJLy9zdGF0cy0+dHhfYnl0ZXMgICAgICAgICAgICA9IDIwOyAvL2RldnN0YXQtPjsKKwkvL3N0YXRzLT5yeF9kcm9wcGVkICAgICAgICAgID0gZGV2c3RhdC0+OworCS8vc3RhdHMtPnR4X2Ryb3BwZWQgICAgICAgICAgPSBkZXZzdGF0LT47CisKKwkvLyBOT1RFOiBOb3QgdXNlZCwgY2FuJ3QgZmluZCBhbmFsb2dvdXMgc3RhdGlzdGljcworCS8vc3RhdHMtPnJ4X2ZyYW1lX2Vycm9ycyAgICAgPSBkZXZzdGF0LT47CisJLy9zdGF0cy0+cnhfZmlmb19lcnJvcnMgICAgICA9IGRldnN0YXQtPjsKKwkvL3N0YXRzLT5yeF9taXNzZWRfZXJyb3JzICAgID0gZGV2c3RhdC0+OworCisJLy9zdGF0cy0+dHhfYWJvcnRlZF9lcnJvcnMgICA9IGRldnN0YXQtPjsKKwkvL3N0YXRzLT50eF9jYXJyaWVyX2Vycm9ycyAgID0gZGV2c3RhdC0+OworCS8vc3RhdHMtPnR4X2ZpZm9fZXJyb3JzICAgICAgPSBkZXZzdGF0LT47CisJLy9zdGF0cy0+dHhfaGVhcnRiZWF0X2Vycm9ycyA9IGRldnN0YXQtPjsKKwkvL3N0YXRzLT50eF93aW5kb3dfZXJyb3JzICAgID0gZGV2c3RhdC0+OworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHM7Cit9CisKKy8qKgorICogZXQxMzF4X29wZW4gLSBPcGVuIHRoZSBkZXZpY2UgZm9yIHVzZS4KKyAqIEBuZXRkZXY6IGRldmljZSB0byBiZSBvcGVuZWQKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICovCitpbnQgZXQxMzF4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwlpbnQgcmVzdWx0ID0gMDsKKwlzdHJ1Y3QgZXQxMzF4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCS8qIFN0YXJ0IHRoZSB0aW1lciB0byB0cmFjayBOSUMgZXJyb3JzICovCisJYWRkX3RpbWVyKCZhZGFwdGVyLT5FcnJvclRpbWVyKTsKKworCS8qIFJlZ2lzdGVyIG91ciBJU1IgKi8KKwlEQkdfVFJBQ0UoZXQxMzF4X2RiZ2luZm8sICJSZWdpc3RlcmluZyBJU1IuLi5cbiIpOworCisJcmVzdWx0ID0KKwkgICAgcmVxdWVzdF9pcnEobmV0ZGV2LT5pcnEsIGV0MTMxeF9pc3IsIElSUUZfU0hBUkVELCBuZXRkZXYtPm5hbWUsCisJCQluZXRkZXYpOworCWlmIChyZXN1bHQpIHsKKwkJREJHX0VSUk9SKGV0MTMxeF9kYmdpbmZvLCAiQ291bGQgbm90IHJlZ2lzdGVyIElTUlxuIik7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJLyogRW5hYmxlIHRoZSBUeCBhbmQgUnggRE1BIGVuZ2luZXMgKGlmIG5vdCBhbHJlYWR5IGVuYWJsZWQpICovCisJZXQxMzF4X3J4X2RtYV9lbmFibGUoYWRhcHRlcik7CisJZXQxMzF4X3R4X2RtYV9lbmFibGUoYWRhcHRlcik7CisKKwkvKiBFbmFibGUgZGV2aWNlIGludGVycnVwdHMgKi8KKwlldDEzMXhfZW5hYmxlX2ludGVycnVwdHMoYWRhcHRlcik7CisKKwlNUF9TRVRfRkxBRyhhZGFwdGVyLCBmTVBfQURBUFRFUl9JTlRFUlJVUFRfSU5fVVNFKTsKKworCS8qIFdlJ3JlIHJlYWR5IHRvIG1vdmUgc29tZSBkYXRhLCBzbyBzdGFydCB0aGUgcXVldWUgKi8KKwluZXRpZl9zdGFydF9xdWV1ZShuZXRkZXYpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKioKKyAqIGV0MTMxeF9jbG9zZSAtIENsb3NlIHRoZSBkZXZpY2UKKyAqIEBuZXRkZXY6IGRldmljZSB0byBiZSBjbG9zZWQKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICovCitpbnQgZXQxMzF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBGaXJzdCB0aGluZyBpcyB0byBzdG9wIHRoZSBxdWV1ZSAqLworCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKKworCS8qIFN0b3AgdGhlIFR4IGFuZCBSeCBETUEgZW5naW5lcyAqLworCWV0MTMxeF9yeF9kbWFfZGlzYWJsZShhZGFwdGVyKTsKKwlldDEzMXhfdHhfZG1hX2Rpc2FibGUoYWRhcHRlcik7CisKKwkvKiBEaXNhYmxlIGRldmljZSBpbnRlcnJ1cHRzICovCisJZXQxMzF4X2Rpc2FibGVfaW50ZXJydXB0cyhhZGFwdGVyKTsKKworCS8qIERlcmVnaXN0ZXJpbmcgSVNSICovCisJTVBfQ0xFQVJfRkxBRyhhZGFwdGVyLCBmTVBfQURBUFRFUl9JTlRFUlJVUFRfSU5fVVNFKTsKKworCURCR19UUkFDRShldDEzMXhfZGJnaW5mbywgIkRlcmVnaXN0ZXJpbmcgSVNSLi4uXG4iKTsKKwlmcmVlX2lycShuZXRkZXYtPmlycSwgbmV0ZGV2KTsKKworCS8qIFN0b3AgdGhlIGVycm9yIHRpbWVyICovCisJZGVsX3RpbWVyX3N5bmMoJmFkYXB0ZXItPkVycm9yVGltZXIpOworCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBldDEzMXhfaW9jdGxfbWlpIC0gVGhlIGZ1bmN0aW9uIHdoaWNoIGhhbmRsZXMgTUlJIElPQ1RMcworICogQG5ldGRldjogZGV2aWNlIG9uIHdoaWNoIHRoZSBxdWVyeSBpcyBiZWluZyBtYWRlCisgKiBAcmVxYnVmOiB0aGUgcmVxdWVzdC1zcGVjaWZpYyBkYXRhIGJ1ZmZlcgorICogQGNtZDogdGhlIGNvbW1hbmQgcmVxdWVzdCBjb2RlCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkKKyAqLworaW50IGV0MTMxeF9pb2N0bF9taWkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGlmcmVxICpyZXFidWYsIGludCBjbWQpCit7CisJaW50IHN0YXR1cyA9IDA7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisJc3RydWN0IG1paV9pb2N0bF9kYXRhICpkYXRhID0gaWZfbWlpKHJlcWJ1Zik7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNJT0NHTUlJUEhZOgorCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlNJT0NHTUlJUEhZXG4iKTsKKwkJZGF0YS0+cGh5X2lkID0gcEFkYXB0ZXItPlN0YXRzLnhjdnJfYWRkcjsKKwkJYnJlYWs7CisKKwljYXNlIFNJT0NHTUlJUkVHOgorCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlNJT0NHTUlJUkVHXG4iKTsKKwkJaWYgKCFjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CisJCQlzdGF0dXMgPSAtRVBFUk07CisJCX0gZWxzZSB7CisJCQlzdGF0dXMgPSBNaVJlYWQocEFkYXB0ZXIsCisJCQkJCWRhdGEtPnJlZ19udW0sICZkYXRhLT52YWxfb3V0KTsKKwkJfQorCQlicmVhazsKKworCWNhc2UgU0lPQ1NNSUlSRUc6CisJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiU0lPQ1NNSUlSRUdcbiIpOworCQlpZiAoIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpIHsKKwkJCXN0YXR1cyA9IC1FUEVSTTsKKwkJfSBlbHNlIHsKKwkJCXN0YXR1cyA9IE1pV3JpdGUocEFkYXB0ZXIsIGRhdGEtPnJlZ19udW0sCisJCQkJCSBkYXRhLT52YWxfaW4pOworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJc3RhdHVzID0gLUVPUE5PVFNVUFA7CisJfQorCisJREJHX0xFQVZFKGV0MTMxeF9kYmdpbmZvKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIGV0MTMxeF9pb2N0bCAtIFRoZSBJL08gQ29udHJvbCBoYW5kbGVyIGZvciB0aGUgZHJpdmVyCisgKiBAbmV0ZGV2OiBkZXZpY2Ugb24gd2hpY2ggdGhlIGNvbnRyb2wgcmVxdWVzdCBpcyBiZWluZyBtYWRlCisgKiBAcmVxYnVmOiBhIHBvaW50ZXIgdG8gdGhlIElPQ1RMIHJlcXVlc3QgYnVmZmVyCisgKiBAY21kOiB0aGUgSU9DVEwgY29tbWFuZCBjb2RlCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkKKyAqLworaW50IGV0MTMxeF9pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgaWZyZXEgKnJlcWJ1ZiwgaW50IGNtZCkKK3sKKwlpbnQgc3RhdHVzID0gMDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU0lPQ0dNSUlQSFk6CisJY2FzZSBTSU9DR01JSVJFRzoKKwljYXNlIFNJT0NTTUlJUkVHOgorCQlzdGF0dXMgPSBldDEzMXhfaW9jdGxfbWlpKG5ldGRldiwgcmVxYnVmLCBjbWQpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLCAiVW5oYW5kbGVkIElPQ1RMIENvZGU6IDB4JTA0eFxuIiwKKwkJCSAgICBjbWQpOworCQlzdGF0dXMgPSAtRU9QTk9UU1VQUDsKKwl9CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICogZXQxMzF4X3NldF9wYWNrZXRfZmlsdGVyIC0gQ29uZmlndXJlcyB0aGUgUnggUGFja2V0IGZpbHRlcmluZyBvbiB0aGUgZGV2aWNlCisgKiBAYWRhcHRlcjogcG9pbnRlciB0byBvdXIgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlCisgKi8KK2ludCBldDEzMXhfc2V0X3BhY2tldF9maWx0ZXIoc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyKQoreworCWludCBzdGF0dXMgPSAwOworCXVpbnQzMl90IGZpbHRlciA9IGFkYXB0ZXItPlBhY2tldEZpbHRlcjsKKwlSWE1BQ19DVFJMX3QgY3RybDsKKwlSWE1BQ19QRl9DVFJMX3QgcGZfY3RybDsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwljdHJsLnZhbHVlID0gcmVhZGwoJmFkYXB0ZXItPkNTUkFkZHJlc3MtPnJ4bWFjLmN0cmwudmFsdWUpOworCXBmX2N0cmwudmFsdWUgPSByZWFkbCgmYWRhcHRlci0+Q1NSQWRkcmVzcy0+cnhtYWMucGZfY3RybC52YWx1ZSk7CisKKwkvKiBEZWZhdWx0IHRvIGRpc2FibGVkIHBhY2tldCBmaWx0ZXJpbmcuICBFbmFibGUgaXQgaW4gdGhlIGluZGl2aWR1YWwKKwkgKiBjYXNlIHN0YXRlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBkZXZpY2UgdG8gZmlsdGVyIHNvbWV0aGluZworCSAqLworCWN0cmwuYml0cy5wa3RfZmlsdGVyX2Rpc2FibGUgPSAxOworCisJLyogU2V0IHVzIHRvIGJlIGluIHByb21pc2N1b3VzIG1vZGUgc28gd2UgcmVjZWl2ZSBldmVyeXRoaW5nLCB0aGlzCisJICogaXMgYWxzbyB0cnVlIHdoZW4gd2UgZ2V0IGEgcGFja2V0IGZpbHRlciBvZiAwCisJICovCisJaWYgKChmaWx0ZXIgJiBFVDEzMVhfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVMpIHx8IGZpbHRlciA9PSAwKSB7CisJCXBmX2N0cmwuYml0cy5maWx0ZXJfYnJvYWRfZW4gPSAwOworCQlwZl9jdHJsLmJpdHMuZmlsdGVyX211bHRpX2VuID0gMDsKKwkJcGZfY3RybC5iaXRzLmZpbHRlcl91bmlfZW4gPSAwOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFNldCB1cyB1cCB3aXRoIE11bHRpY2FzdCBwYWNrZXQgZmlsdGVyaW5nLiAgVGhyZWUgY2FzZXMgYXJlCisJCSAqIHBvc3NpYmxlIC0gKDEpIHdlIGhhdmUgYSBtdWx0aS1jYXN0IGxpc3QsICgyKSB3ZSByZWNlaXZlIEFMTAorCQkgKiBtdWx0aWNhc3QgZW50cmllcyBvciAoMykgd2UgcmVjZWl2ZSBub25lLgorCQkgKi8KKwkJaWYgKGZpbHRlciAmIEVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUKSB7CisJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIk11bHRpY2FzdCBmaWx0ZXJpbmcgT0ZGIChSeCBBTEwgTVVMVElDQVNUKVxuIik7CisJCQlwZl9jdHJsLmJpdHMuZmlsdGVyX211bHRpX2VuID0gMDsKKwkJfSBlbHNlIHsKKwkJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiTXVsdGljYXN0IGZpbHRlcmluZyBPTlxuIik7CisJCQlTZXR1cERldmljZUZvck11bHRpY2FzdChhZGFwdGVyKTsKKwkJCXBmX2N0cmwuYml0cy5maWx0ZXJfbXVsdGlfZW4gPSAxOworCQkJY3RybC5iaXRzLnBrdF9maWx0ZXJfZGlzYWJsZSA9IDA7CisJCX0KKworCQkvKiBTZXQgdXMgdXAgd2l0aCBVbmljYXN0IHBhY2tldCBmaWx0ZXJpbmcgKi8KKwkJaWYgKGZpbHRlciAmIEVUMTMxWF9QQUNLRVRfVFlQRV9ESVJFQ1RFRCkgeworCQkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sICJVbmljYXN0IEZpbHRlcmluZyBPTlxuIik7CisJCQlTZXR1cERldmljZUZvclVuaWNhc3QoYWRhcHRlcik7CisJCQlwZl9jdHJsLmJpdHMuZmlsdGVyX3VuaV9lbiA9IDE7CisJCQljdHJsLmJpdHMucGt0X2ZpbHRlcl9kaXNhYmxlID0gMDsKKwkJfQorCisJCS8qIFNldCB1cyB1cCB3aXRoIEJyb2FkY2FzdCBwYWNrZXQgZmlsdGVyaW5nICovCisJCWlmIChmaWx0ZXIgJiBFVDEzMVhfUEFDS0VUX1RZUEVfQlJPQURDQVNUKSB7CisJCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIkJyb2FkY2FzdCBGaWx0ZXJpbmcgT05cbiIpOworCQkJcGZfY3RybC5iaXRzLmZpbHRlcl9icm9hZF9lbiA9IDE7CisJCQljdHJsLmJpdHMucGt0X2ZpbHRlcl9kaXNhYmxlID0gMDsKKwkJfSBlbHNlIHsKKwkJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLAorCQkJCSAgICAiQnJvYWRjYXN0IEZpbHRlcmluZyBPRkZcbiIpOworCQkJcGZfY3RybC5iaXRzLmZpbHRlcl9icm9hZF9lbiA9IDA7CisJCX0KKworCQkvKiBTZXR1cCB0aGUgcmVjZWl2ZSBtYWMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgLSBQYWNrZXQKKwkJICogRmlsdGVyIGNvbnRyb2wgKyB0aGUgZW5hYmxlIC8gZGlzYWJsZSBmb3IgcGFja2V0IGZpbHRlcgorCQkgKiBpbiB0aGUgY29udHJvbCByZWcuCisJCSAqLworCQl3cml0ZWwocGZfY3RybC52YWx1ZSwKKwkJICAgICAgICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5yeG1hYy5wZl9jdHJsLnZhbHVlKTsKKwkJd3JpdGVsKGN0cmwudmFsdWUsICZhZGFwdGVyLT5DU1JBZGRyZXNzLT5yeG1hYy5jdHJsLnZhbHVlKTsKKwl9CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICogZXQxMzF4X211bHRpY2FzdCAtIFRoZSBoYW5kbGVyIHRvIGNvbmZpZ3VyZSBtdWx0aWNhc3Rpbmcgb24gdGhlIGludGVyZmFjZQorICogQG5ldGRldjogYSBwb2ludGVyIHRvIGEgbmV0X2RldmljZSBzdHJ1Y3QgcmVwcmVzZW50aW5nIHRoZSBkZXZpY2UKKyAqLwordm9pZCBldDEzMXhfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKKwl1aW50MzJfdCBQYWNrZXRGaWx0ZXIgPSAwOworCXVpbnQzMl90IGNvdW50OworCXVuc2lnbmVkIGxvbmcgbG9ja2ZsYWdzOworCXN0cnVjdCBkZXZfbWNfbGlzdCAqbWNsaXN0ID0gbmV0ZGV2LT5tY19saXN0OworCisJREJHX0VOVEVSKGV0MTMxeF9kYmdpbmZvKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhZGFwdGVyLT5Mb2NrLCBsb2NrZmxhZ3MpOworCisJLyogQmVmb3JlIHdlIG1vZGlmeSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgZmlsdGVyIGZsYWdzLCBzdG9yZSB0aGVtCisJICogbG9jYWxseS4gVGhpcyBhbGxvd3MgdXMgdG8gZGV0ZXJtaW5lIGlmIGFueXRoaW5nJ3MgY2hhbmdlZCBhbmQgaWYKKwkgKiB3ZSBldmVuIG5lZWQgdG8gYm90aGVyIHRoZSBoYXJkd2FyZQorCSAqLworCVBhY2tldEZpbHRlciA9IGFkYXB0ZXItPlBhY2tldEZpbHRlcjsKKworCS8qIENsZWFyIHRoZSAnbXVsdGljYXN0JyBmbGFnIGxvY2FsbHk7IGJlY3Vhc2Ugd2Ugb25seSBoYXZlIGEgc2luZ2xlCisJICogZmxhZyB0byBjaGVjayBtdWx0aWNhc3QsIGFuZCBtdWx0aXBsZSBtdWx0aWNhc3QgYWRkcmVzc2VzIGNhbiBiZQorCSAqIHNldCwgdGhpcyBpcyB0aGUgZWFzaWVzdCB3YXkgdG8gZGV0ZXJtaW5lIGlmIG1vcmUgdGhhbiBvbmUKKwkgKiBtdWx0aWNhc3QgYWRkcmVzcyBpcyBiZWluZyBzZXQuCisJICovCisJUGFja2V0RmlsdGVyICY9IH5FVDEzMVhfUEFDS0VUX1RZUEVfTVVMVElDQVNUOworCisJLyogQ2hlY2sgdGhlIG5ldF9kZXZpY2UgZmxhZ3MgYW5kIHNldCB0aGUgZGV2aWNlIGluZGVwZW5kZW50IGZsYWdzCisJICogYWNjb3JkaW5nbHkKKwkgKi8KKwlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywKKwkJICAgICJNVUxUSUNBU1QgQUREUiBDT1VOVDogJWRcbiIsIG5ldGRldi0+bWNfY291bnQpOworCisJaWYgKG5ldGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgeworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlJlcXVlc3Q6IFBST01JU0NVT1VTIE1PREUgT05cbiIpOworCQlhZGFwdGVyLT5QYWNrZXRGaWx0ZXIgfD0gRVQxMzFYX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTOworCX0gZWxzZSB7CisJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiUmVxdWVzdDogUFJPTUlTQ1VPVVMgTU9ERSBPRkZcbiIpOworCQlhZGFwdGVyLT5QYWNrZXRGaWx0ZXIgJj0gfkVUMTMxWF9QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUzsKKwl9CisKKwlpZiAobmV0ZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkgeworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlJlcXVlc3Q6IEFDQ0VQVCBBTEwgTVVMVElDQVNUXG4iKTsKKwkJYWRhcHRlci0+UGFja2V0RmlsdGVyIHw9IEVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUOworCX0KKworCWlmIChuZXRkZXYtPm1jX2NvdW50ID4gTklDX01BWF9NQ0FTVF9MSVNUKSB7CisJCURCR19XQVJOSU5HKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICJBQ0NFUFQgQUxMIE1VTFRJQ0FTVCBmb3Igbm93LCBhcyB0aGVyZSdzIG1vcmUgTXVsdGljYXN0ICIKKwkJCSAgICAiYWRkcmVzc2VzIHRoYW4gdGhlIEhXIHN1cHBvcnRzXG4iKTsKKworCQlhZGFwdGVyLT5QYWNrZXRGaWx0ZXIgfD0gRVQxMzFYX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7CisJfQorCisJaWYgKG5ldGRldi0+bWNfY291bnQgPCAxKSB7CisJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLCAiUmVxdWVzdDogUkVKRUNUIEFMTCBNVUxUSUNBU1RcbiIpOworCQlhZGFwdGVyLT5QYWNrZXRGaWx0ZXIgJj0gfkVUMTMxWF9QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUOworCQlhZGFwdGVyLT5QYWNrZXRGaWx0ZXIgJj0gfkVUMTMxWF9QQUNLRVRfVFlQRV9NVUxUSUNBU1Q7CisJfSBlbHNlIHsKKwkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sCisJCQkgICAgIlJlcXVlc3Q6IFNFVCBNVUxUSUNBU1QgRklMVEVSKFMpXG4iKTsKKwkJYWRhcHRlci0+UGFja2V0RmlsdGVyIHw9IEVUMTMxWF9QQUNLRVRfVFlQRV9NVUxUSUNBU1Q7CisJfQorCisJLyogU2V0IHZhbHVlcyBpbiB0aGUgcHJpdmF0ZSBhZGFwdGVyIHN0cnVjdCAqLworCWFkYXB0ZXItPk1DQWRkcmVzc0NvdW50ID0gbmV0ZGV2LT5tY19jb3VudDsKKworCWlmIChuZXRkZXYtPm1jX2NvdW50KSB7CisJCWlmIChtY2xpc3QtPmRtaV9hZGRybGVuICE9IEVUSF9BTEVOKSB7CisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIk11bHRpY2FzdCBhZGRycyBhcmUgbm90IEVUSF9BTEVOIGluIHNpemVcbiIpOworCQl9IGVsc2UgeworCQkJY291bnQgPSBuZXRkZXYtPm1jX2NvdW50IC0gMTsKKwkJCW1lbWNweShhZGFwdGVyLT5NQ0xpc3RbY291bnRdLCBtY2xpc3QtPmRtaV9hZGRyLAorCQkJICAgICAgIEVUSF9BTEVOKTsKKwkJfQorCX0KKworCS8qIEFyZSB0aGUgbmV3IGZsYWdzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBvbmVzPyBJZiBub3QsIHRoZW4gbm8KKwkgKiBhY3Rpb24gaXMgcmVxdWlyZWQKKwkgKgorCSAqIE5PVEUgLSBUaGlzIGJsb2NrIHdpbGwgYWx3YXlzIHVwZGF0ZSB0aGUgTUNMaXN0IHdpdGggdGhlIGhhcmR3YXJlLAorCSAqICAgICAgICBldmVuIGlmIHRoZSBhZGRyZXNzZXMgYXJlbid0IHRoZSBzYW1lLgorCSAqLworCWlmIChQYWNrZXRGaWx0ZXIgIT0gYWRhcHRlci0+UGFja2V0RmlsdGVyKSB7CisJCS8qIENhbGwgdGhlIGRldmljZSdzIGZpbHRlciBmdW5jdGlvbiAqLworCQlEQkdfVkVSQk9TRShldDEzMXhfZGJnaW5mbywgIlVQREFURSBSRVFVSVJFRCwgRkxBR1MgY2hhbmdlZFxuIik7CisKKwkJZXQxMzF4X3NldF9wYWNrZXRfZmlsdGVyKGFkYXB0ZXIpOworCX0gZWxzZSB7CisJCURCR19WRVJCT1NFKGV0MTMxeF9kYmdpbmZvLAorCQkJICAgICJOTyBVUERBVEUgUkVRVUlSRUQsIEZMQUdTIGRpZG4ndCBjaGFuZ2VcbiIpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPkxvY2ssIGxvY2tmbGFncyk7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworfQorCisvKioKKyAqIGV0MTMxeF90eCAtIFRoZSBoYW5kbGVyIHRvIHR4IGEgcGFja2V0IG9uIHRoZSBkZXZpY2UKKyAqIEBza2I6IGRhdGEgdG8gYmUgVHgnZAorICogQG5ldGRldjogZGV2aWNlIG9uIHdoaWNoIGRhdGEgaXMgdG8gYmUgVHgnZAorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlIChhcyBkZWZpbmVkIGluIGVycm5vLmgpCisgKi8KK2ludCBldDEzMXhfdHgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwlpbnQgc3RhdHVzID0gMDsKKworCURCR19UWF9FTlRFUihldDEzMXhfZGJnaW5mbyk7CisKKwkvKiBTYXZlIHRoZSB0aW1lc3RhbXAgZm9yIHRoZSBUWCB0aW1lb3V0IHdhdGNoZG9nICovCisJbmV0ZGV2LT50cmFuc19zdGFydCA9IGppZmZpZXM7CisKKwkvKiBDYWxsIHRoZSBkZXZpY2Utc3BlY2lmaWMgZGF0YSBUeCByb3V0aW5lICovCisJc3RhdHVzID0gZXQxMzF4X3NlbmRfcGFja2V0cyhza2IsIG5ldGRldik7CisKKwkvKiBDaGVjayBzdGF0dXMgYW5kIG1hbmFnZSB0aGUgbmV0aWYgcXVldWUgaWYgbmVjZXNzYXJ5ICovCisJaWYgKHN0YXR1cyAhPSAwKSB7CisJCWlmIChzdGF0dXMgPT0gLUVOT01FTSkgeworCQkJREJHX1ZFUkJPU0UoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJPVVQgT0YgVENCczsgU1RPUCBORVRJRiBRVUVVRVxuIik7CisKKwkJCS8qIFB1dCB0aGUgcXVldWUgdG8gc2xlZXAgdW50aWwgcmVzb3VyY2VzIGFyZQorCQkJICogYXZhaWxhYmxlCisJCQkgKi8KKwkJCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKKwkJCXN0YXR1cyA9IDE7CisJCX0gZWxzZSB7CisJCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywKKwkJCQkgICAgIk1pc2MgZXJyb3I7IGRyb3AgcGFja2V0XG4iKTsKKwkJCXN0YXR1cyA9IDA7CisJCX0KKwl9CisKKwlEQkdfVFhfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICogZXQxMzF4X3R4X3RpbWVvdXQgLSBUaW1lb3V0IGhhbmRsZXIKKyAqIEBuZXRkZXY6IGEgcG9pbnRlciB0byBhIG5ldF9kZXZpY2Ugc3RydWN0IHJlcHJlc2VudGluZyB0aGUgZGV2aWNlCisgKgorICogVGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gYSBUeCByZXF1ZXN0IHRpbWVzIG91dC4gVGhlIHRpbWVvdXQgcGVyaW9kIGlzCisgKiBzcGVjaWZpZWQgYnkgdGhlICd0eF90aW1lbyIgZWxlbWVudCBpbiB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmUgKHNlZQorICogZXQxMzF4X2FsbG9jX2RldmljZSgpIHRvIHNlZSBob3cgdGhpcyB2YWx1ZSBpcyBzZXQpLgorICovCit2b2lkIGV0MTMxeF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCit7CisJc3RydWN0IGV0MTMxeF9hZGFwdGVyICpwQWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisJUE1QX1RDQiBwTXBUY2I7CisJdW5zaWduZWQgbG9uZyBsb2NrZmxhZ3M7CisKKwlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgIlRYIFRJTUVPVVRcbiIpOworCisJLyogSnVzdCBza2lwIHRoaXMgcGFydCBpZiB0aGUgYWRhcHRlciBpcyBkb2luZyBsaW5rIGRldGVjdGlvbiAqLworCWlmIChNUF9URVNUX0ZMQUcocEFkYXB0ZXIsIGZNUF9BREFQVEVSX0xJTktfREVURUNUSU9OKSkgeworCQlEQkdfRVJST1IoZXQxMzF4X2RiZ2luZm8sICJTdGlsbCBkb2luZyBsaW5rIGRldGVjdGlvblxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBBbnkgbm9ucmVjb3ZlcmFibGUgaGFyZHdhcmUgZXJyb3I/CisJICogQ2hlY2tzIGFkYXB0ZXItPmZsYWdzIGZvciBhbnkgZmFpbHVyZSBpbiBwaHkgcmVhZGluZworCSAqLworCWlmIChNUF9URVNUX0ZMQUcocEFkYXB0ZXIsIGZNUF9BREFQVEVSX05PTl9SRUNPVkVSX0VSUk9SKSkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgIk5vbiByZWNvdmVyYWJsZSBlcnJvciAtIHJlbW92ZVxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBIYXJkd2FyZSBmYWlsdXJlPyAqLworCWlmIChNUF9URVNUX0ZMQUcocEFkYXB0ZXIsIGZNUF9BREFQVEVSX0hBUkRXQVJFX0VSUk9SKSkgeworCQlEQkdfV0FSTklORyhldDEzMXhfZGJnaW5mbywgImhhcmR3YXJlIGVycm9yIC0gcmVzZXRcbiIpOworCQlyZXR1cm47CisJfQorCisJLyogSXMgc2VuZCBzdHVjaz8gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKKworCXBNcFRjYiA9IHBBZGFwdGVyLT5UeFJpbmcuQ3VyclNlbmRIZWFkOworCisJaWYgKHBNcFRjYiAhPSBOVUxMKSB7CisJCXBNcFRjYi0+Q291bnQrKzsKKworCQlpZiAocE1wVGNiLT5Db3VudCA+IE5JQ19TRU5EX0hBTkdfVEhSRVNIT0xEKSB7CisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCQkJVFhfU1RBVFVTX0JMT0NLX3QgdHhEbWFDb21wbGV0ZSA9CisJCQkgICAgKihwQWRhcHRlci0+VHhSaW5nLnBUeFN0YXR1c1ZhKTsKKwkJCVBUWF9ERVNDX0VOVFJZX3QgcERlc2MgPQorCQkJICAgIHBBZGFwdGVyLT5UeFJpbmcucFR4RGVzY1JpbmdWYSArCisJCQkgICAgcE1wVGNiLT5XckluZGV4LmJpdHMudmFsOworI2VuZGlmCisJCQlUWF9ERVNDX0VOVFJZX3QgU3R1Y2tEZXNjcmlwdG9yc1sxMF07CisKKwkJCWlmIChwTXBUY2ItPldySW5kZXguYml0cy52YWwgPiA3KSB7CisJCQkJbWVtY3B5KFN0dWNrRGVzY3JpcHRvcnMsCisJCQkJICAgICAgIHBBZGFwdGVyLT5UeFJpbmcucFR4RGVzY1JpbmdWYSArCisJCQkJICAgICAgIHBNcFRjYi0+V3JJbmRleC5iaXRzLnZhbCAtIDYsCisJCQkJICAgICAgIHNpemVvZihUWF9ERVNDX0VOVFJZX3QpICogMTApOworCQkJfQorCisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwQWRhcHRlci0+VENCU2VuZFFMb2NrLAorCQkJCQkgICAgICAgbG9ja2ZsYWdzKTsKKworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJTZW5kIHN0dWNrIC0gcmVzZXQuICBwTXBUY2ItPldySW5kZXggJXgsIEZsYWdzIDB4JTA4eFxuIiwKKwkJCQkgICAgcE1wVGNiLT5XckluZGV4LmJpdHMudmFsLAorCQkJCSAgICBwTXBUY2ItPkZsYWdzKTsKKworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJwRGVzYyAweCUwOHgsIDB4JTA4eCwgMHglMDh4LCAweCUwOHhcbiIsCisJCQkJICAgIHBEZXNjLT5EYXRhQnVmZmVyUHRySGlnaCwKKwkJCQkgICAgcERlc2MtPkRhdGFCdWZmZXJQdHJMb3csIHBEZXNjLT53b3JkMi52YWx1ZSwKKwkJCQkgICAgcERlc2MtPndvcmQzLnZhbHVlKTsKKworCQkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkJICAgICJXYlN0YXR1cyAweCUwOHhcbiIsIHR4RG1hQ29tcGxldGUudmFsdWUpOworCisjaWZkZWYgQ09ORklHX0VUMTMxWF9ERUJVRworCQkJRHVtcERldmljZUJsb2NrKERCR19XQVJOSU5HX09OLCBwQWRhcHRlciwgMCk7CisJCQlEdW1wRGV2aWNlQmxvY2soREJHX1dBUk5JTkdfT04sIHBBZGFwdGVyLCAxKTsKKwkJCUR1bXBEZXZpY2VCbG9jayhEQkdfV0FSTklOR19PTiwgcEFkYXB0ZXIsIDMpOworCQkJRHVtcERldmljZUJsb2NrKERCR19XQVJOSU5HX09OLCBwQWRhcHRlciwgNSk7CisjZW5kaWYKKwkJCWV0MTMxeF9jbG9zZShuZXRkZXYpOworCQkJZXQxMzF4X29wZW4obmV0ZGV2KTsKKworCQkJcmV0dXJuOworCQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcEFkYXB0ZXItPlRDQlNlbmRRTG9jaywgbG9ja2ZsYWdzKTsKK30KKworLyoqCisgKiBldDEzMXhfY2hhbmdlX210dSAtIFRoZSBoYW5kbGVyIGNhbGxlZCB0byBjaGFuZ2UgdGhlIE1UVSBmb3IgdGhlIGRldmljZQorICogQG5ldGRldjogZGV2aWNlIHdob3NlIE1UVSBpcyB0byBiZSBjaGFuZ2VkCisgKiBAbmV3X210dTogdGhlIGRlc2lyZWQgTVRVCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm5vIG9uIGZhaWx1cmUgKGFzIGRlZmluZWQgaW4gZXJybm8uaCkKKyAqLworaW50IGV0MTMxeF9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBuZXdfbXR1KQoreworCWludCByZXN1bHQgPSAwOworCXN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisKKwlEQkdfRU5URVIoZXQxMzF4X2RiZ2luZm8pOworCisJLyogTWFrZSBzdXJlIHRoZSByZXF1ZXN0ZWQgTVRVIGlzIHZhbGlkICovCisJaWYgKG5ld19tdHUgPT0gMCB8fCBuZXdfbXR1ID4gOTIxNikgeworCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBTdG9wIHRoZSBuZXRpZiBxdWV1ZSAqLworCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKKworCS8qIFN0b3AgdGhlIFR4IGFuZCBSeCBETUEgZW5naW5lcyAqLworCWV0MTMxeF9yeF9kbWFfZGlzYWJsZShhZGFwdGVyKTsKKwlldDEzMXhfdHhfZG1hX2Rpc2FibGUoYWRhcHRlcik7CisKKwkvKiBEaXNhYmxlIGRldmljZSBpbnRlcnJ1cHRzICovCisJZXQxMzF4X2Rpc2FibGVfaW50ZXJydXB0cyhhZGFwdGVyKTsKKwlldDEzMXhfaGFuZGxlX3NlbmRfaW50ZXJydXB0KGFkYXB0ZXIpOworCWV0MTMxeF9oYW5kbGVfcmVjdl9pbnRlcnJ1cHQoYWRhcHRlcik7CisKKwkvKiBTZXQgdGhlIG5ldyBNVFUgKi8KKwluZXRkZXYtPm10dSA9IG5ld19tdHU7CisKKwkvKiBGcmVlIFJ4IERNQSBtZW1vcnkgKi8KKwlldDEzMXhfYWRhcHRlcl9tZW1vcnlfZnJlZShhZGFwdGVyKTsKKworCS8qIFNldCB0aGUgY29uZmlnIHBhcmFtZXRlciBmb3IgSnVtYm8gUGFja2V0IHN1cHBvcnQgKi8KKwlhZGFwdGVyLT5SZWdpc3RyeUp1bWJvUGFja2V0ID0gbmV3X210dSArIDE0OworCWV0MTMxeF9zb2Z0X3Jlc2V0KGFkYXB0ZXIpOworCisJLyogQWxsb2MgYW5kIGluaXQgUnggRE1BIG1lbW9yeSAqLworCXJlc3VsdCA9IGV0MTMxeF9hZGFwdGVyX21lbW9yeV9hbGxvYyhhZGFwdGVyKTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkgICAgIkNoYW5nZSBNVFUgZmFpbGVkOyBjb3VsZG4ndCByZS1hbGxvYyBETUEgbWVtb3J5XG4iKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlldDEzMXhfaW5pdF9zZW5kKGFkYXB0ZXIpOworCisJZXQxMzF4X3NldHVwX2hhcmR3YXJlX3Byb3BlcnRpZXMoYWRhcHRlcik7CisJbWVtY3B5KG5ldGRldi0+ZGV2X2FkZHIsIGFkYXB0ZXItPkN1cnJlbnRBZGRyZXNzLCBFVEhfQUxFTik7CisKKwkvKiBJbml0IHRoZSBkZXZpY2Ugd2l0aCB0aGUgbmV3IHNldHRpbmdzICovCisJZXQxMzF4X2FkYXB0ZXJfc2V0dXAoYWRhcHRlcik7CisKKwkvKiBFbmFibGUgaW50ZXJydXB0cyAqLworCWlmIChNUF9URVNUX0ZMQUcoYWRhcHRlciwgZk1QX0FEQVBURVJfSU5URVJSVVBUX0lOX1VTRSkpIHsKKwkJZXQxMzF4X2VuYWJsZV9pbnRlcnJ1cHRzKGFkYXB0ZXIpOworCX0KKworCS8qIFJlc3RhcnQgdGhlIFR4IGFuZCBSeCBETUEgZW5naW5lcyAqLworCWV0MTMxeF9yeF9kbWFfZW5hYmxlKGFkYXB0ZXIpOworCWV0MTMxeF90eF9kbWFfZW5hYmxlKGFkYXB0ZXIpOworCisJLyogUmVzdGFydCB0aGUgbmV0aWYgcXVldWUgKi8KKwluZXRpZl93YWtlX3F1ZXVlKG5ldGRldik7CisKKwlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qKgorICogZXQxMzF4X3NldF9tYWNfYWRkciAtIGhhbmRsZXIgdG8gY2hhbmdlIHRoZSBNQUMgYWRkcmVzcyBmb3IgdGhlIGRldmljZQorICogQG5ldGRldjogZGV2aWNlIHdob3NlIE1BQyBpcyB0byBiZSBjaGFuZ2VkCisgKiBAbmV3X21hYzogdGhlIGRlc2lyZWQgTUFDIGFkZHJlc3MKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZSAoYXMgZGVmaW5lZCBpbiBlcnJuby5oKQorICoKKyAqIElNUExFTUVOVEVEIEJZIDogYmx1eCBodHRwOi8vYmVybmRsdXguZGUgMjIuMDEuMjAwNyAyMToxNAorICovCitpbnQgZXQxMzF4X3NldF9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpuZXdfbWFjKQoreworCWludCByZXN1bHQgPSAwOworCXN0cnVjdCBldDEzMXhfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisJc3RydWN0IHNvY2thZGRyICphZGRyZXNzID0gbmV3X21hYzsKKworCURCR19FTlRFUihldDEzMXhfZGJnaW5mbyk7CisJLy8gYmVnaW4gYmx1eAorCS8vIERCR19WRVJCT1NFKCBldDEzMXhfZGJnaW5mbywgIkZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCEhXG4iICk7CisKKwlpZiAoYWRhcHRlciA9PSBOVUxMKSB7CisJCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCS8qIE1ha2Ugc3VyZSB0aGUgcmVxdWVzdGVkIE1BQyBpcyB2YWxpZCAqLworCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihhZGRyZXNzLT5zYV9kYXRhKSkgeworCQlEQkdfTEVBVkUoZXQxMzF4X2RiZ2luZm8pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBTdG9wIHRoZSBuZXRpZiBxdWV1ZSAqLworCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKKworCS8qIFN0b3AgdGhlIFR4IGFuZCBSeCBETUEgZW5naW5lcyAqLworCWV0MTMxeF9yeF9kbWFfZGlzYWJsZShhZGFwdGVyKTsKKwlldDEzMXhfdHhfZG1hX2Rpc2FibGUoYWRhcHRlcik7CisKKwkvKiBEaXNhYmxlIGRldmljZSBpbnRlcnJ1cHRzICovCisJZXQxMzF4X2Rpc2FibGVfaW50ZXJydXB0cyhhZGFwdGVyKTsKKwlldDEzMXhfaGFuZGxlX3NlbmRfaW50ZXJydXB0KGFkYXB0ZXIpOworCWV0MTMxeF9oYW5kbGVfcmVjdl9pbnRlcnJ1cHQoYWRhcHRlcik7CisKKwkvKiBTZXQgdGhlIG5ldyBNQUMgKi8KKwkvLyBuZXRkZXYtPnNldF9tYWNfYWRkcmVzcyAgPSAmbmV3X21hYzsKKwkvLyBuZXRkZXYtPm10dSA9IG5ld19tdHU7CisKKwltZW1jcHkobmV0ZGV2LT5kZXZfYWRkciwgYWRkcmVzcy0+c2FfZGF0YSwgbmV0ZGV2LT5hZGRyX2xlbik7CisKKwlwcmludGsoIiVzOiBTZXR0aW5nIE1BQyBhZGRyZXNzIHRvICUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4XG4iLAorCSAgICAgICBuZXRkZXYtPm5hbWUsIG5ldGRldi0+ZGV2X2FkZHJbMF0sIG5ldGRldi0+ZGV2X2FkZHJbMV0sCisJICAgICAgIG5ldGRldi0+ZGV2X2FkZHJbMl0sIG5ldGRldi0+ZGV2X2FkZHJbM10sIG5ldGRldi0+ZGV2X2FkZHJbNF0sCisJICAgICAgIG5ldGRldi0+ZGV2X2FkZHJbNV0pOworCisJLyogRnJlZSBSeCBETUEgbWVtb3J5ICovCisJZXQxMzF4X2FkYXB0ZXJfbWVtb3J5X2ZyZWUoYWRhcHRlcik7CisKKwkvKiBTZXQgdGhlIGNvbmZpZyBwYXJhbWV0ZXIgZm9yIEp1bWJvIFBhY2tldCBzdXBwb3J0ICovCisJLy8gYWRhcHRlci0+UmVnaXN0cnlKdW1ib1BhY2tldCA9IG5ld19tdHUgKyAxNDsKKwkvLyBibHV4OiBub3QgbmVlZGV0IGhlcmUsIHcnbGwgY2hhbmdlIHRoZSBNQUMKKworCWV0MTMxeF9zb2Z0X3Jlc2V0KGFkYXB0ZXIpOworCisJLyogQWxsb2MgYW5kIGluaXQgUnggRE1BIG1lbW9yeSAqLworCXJlc3VsdCA9IGV0MTMxeF9hZGFwdGVyX21lbW9yeV9hbGxvYyhhZGFwdGVyKTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJREJHX1dBUk5JTkcoZXQxMzF4X2RiZ2luZm8sCisJCQkgICAgIkNoYW5nZSBNQUMgZmFpbGVkOyBjb3VsZG4ndCByZS1hbGxvYyBETUEgbWVtb3J5XG4iKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlldDEzMXhfaW5pdF9zZW5kKGFkYXB0ZXIpOworCisJZXQxMzF4X3NldHVwX2hhcmR3YXJlX3Byb3BlcnRpZXMoYWRhcHRlcik7CisJLy8gbWVtY3B5KCBuZXRkZXYtPmRldl9hZGRyLCBhZGFwdGVyLT5DdXJyZW50QWRkcmVzcywgRVRIX0FMRU4gKTsKKwkvLyBibHV4OiBubywgZG8gbm90IG92ZXJyaWRlIG91ciBuaWNlIGFkZHJlc3MKKworCS8qIEluaXQgdGhlIGRldmljZSB3aXRoIHRoZSBuZXcgc2V0dGluZ3MgKi8KKwlldDEzMXhfYWRhcHRlcl9zZXR1cChhZGFwdGVyKTsKKworCS8qIEVuYWJsZSBpbnRlcnJ1cHRzICovCisJaWYgKE1QX1RFU1RfRkxBRyhhZGFwdGVyLCBmTVBfQURBUFRFUl9JTlRFUlJVUFRfSU5fVVNFKSkgeworCQlldDEzMXhfZW5hYmxlX2ludGVycnVwdHMoYWRhcHRlcik7CisJfQorCisJLyogUmVzdGFydCB0aGUgVHggYW5kIFJ4IERNQSBlbmdpbmVzICovCisJZXQxMzF4X3J4X2RtYV9lbmFibGUoYWRhcHRlcik7CisJZXQxMzF4X3R4X2RtYV9lbmFibGUoYWRhcHRlcik7CisKKwkvKiBSZXN0YXJ0IHRoZSBuZXRpZiBxdWV1ZSAqLworCW5ldGlmX3dha2VfcXVldWUobmV0ZGV2KTsKKworCURCR19MRUFWRShldDEzMXhfZGJnaW5mbyk7CisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhhY2QxNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBBZ2VyZSBTeXN0ZW1zIEluYy4KKyAqIDEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIgZm9yIHRoZSBFVDEzMDEgYW5kIEVUMTMxeCBzZXJpZXMgTUFDcworICoKKyAqIENvcHlyaWdodCCpIDIwMDUgQWdlcmUgU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBodHRwOi8vd3d3LmFnZXJlLmNvbQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXQxMzF4X25ldGRldi5oIC0gRGVmaW5lcywgc3RydWN0cywgZW51bXMsIHByb3RvdHlwZXMsIGV0Yy4gcmVsYXRlZCB0byB0aGUKKyAqICAgICAgICAgICAgICAgICAgIGRyaXZlcidzIG5ldF9kZXZpY2Ugc3VwcG9ydC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxWF9ORVRERVZfSF9fCisjZGVmaW5lIF9fRVQxMzFYX05FVERFVl9IX18KKworc3RydWN0IG5ldF9kZXZpY2UgKmV0MTMxeF9kZXZpY2VfYWxsb2Modm9pZCk7CisKKyNlbmRpZiAvKiBfX0VUMTMxWF9ORVRERVZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF92ZXJzaW9uLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF92ZXJzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhNjQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X3ZlcnNpb24uaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQWdlcmUgU3lzdGVtcyBJbmMuCisgKiAxMC8xMDAvMTAwMCBCYXNlLVQgRXRoZXJuZXQgRHJpdmVyIGZvciB0aGUgRVQxMzAxIGFuZCBFVDEzMXggc2VyaWVzIE1BQ3MKKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV0MTMxeF92ZXJzaW9uLmggLSBUaGlzIGZpbGUgcHJvdmlkZXMgc3lzdGVtIGFuZCBkZXZpY2UgdmVyc2lvbiBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNPRlRXQVJFIExJQ0VOU0UKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKKyAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKyAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKyAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKyAqCisgKiBDb3B5cmlnaHQgqSAyMDA1IEFnZXJlIFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcworICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBEaXNjbGFpbWVyCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCisgKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgorICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0VUMTMxWF9WRVJTSU9OX0hfXworI2RlZmluZSBfX0VUMTMxWF9WRVJTSU9OX0hfXworCisjZGVmaW5lIERSSVZFUl9BVVRIT1IJCSJWaWN0b3IgU29yaWFubyAodmpzb3JpYW5vQGFnZXJlLmNvbSkiCisjZGVmaW5lIERSSVZFUl9MSUNFTlNFCQkiRHVhbCBCU0QvR1BMIgorI2RlZmluZSBEUklWRVJfREVWSUNFX1NUUklORwkiRVQxMzEwIgorI2RlZmluZSBEUklWRVJfTkFNRQkJImV0MTMxeCIKKyNkZWZpbmUgRFJJVkVSX01BSk9SX1ZFUlNJT04JMQorI2RlZmluZSBEUklWRVJfTUlOT1JfVkVSU0lPTgkyCisjZGVmaW5lIERSSVZFUl9QQVRDSF9WRVJTSU9OCTMKKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT05fU1RSSU5HCSIxLjIuMyIKKyNkZWZpbmUgRFJJVkVSX1ZFTkRPUgkJIkFnZXJlIFN5c3RlbXMsIGh0dHA6Ly93d3cuYWdlcmUuY29tIgorI2RlZmluZSBEUklWRVJfREVTQwkJIjEwLzEwMC8xMDAwIEJhc2UtVCBFdGhlcm5ldCBEcml2ZXIiCisKKyNkZWZpbmUgU1RSVUNUX01PRFVMRQkJIm5ldCIJLyogYmx1eDogbWlzc2VkIGJ5IHRoZSBrZXJuZWwgKi8KKworI2RlZmluZSBEUklWRVJfSU5GTwkJRFJJVkVSX0RFU0MgIiBmb3IgdGhlICJcCisJCQkJRFJJVkVSX0RFVklDRV9TVFJJTkcgIiwgdiIgXAorCQkJCURSSVZFUl9WRVJTSU9OX1NUUklORyAiIGJ5ICIgXAorCQkJCURSSVZFUl9WRU5ET1IKKworI2RlZmluZSBEUklWRVJfTkFNRV9FWFQJCSJldDEzMXgua28iCisKKyNlbmRpZiAvKiBfX0VUMTMxWF9WRVJTSU9OX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YTEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L0tjb25maWcKQEAgLTAsMCArMSwyNSBAQAorY29uZmlnIFZJREVPX0dPNzAwNworCXRyaXN0YXRlICJHbyA3MDA3IHN1cHBvcnQiCisJZGVwZW5kcyBvbiBWSURFT19ERVYgJiYgUENJICYmIEkyQyAmJiBJTlBVVAorCXNlbGVjdCBWSURFT0JVRl9ETUFfU0cKKwlzZWxlY3QgVklERU9fSVIKKwlzZWxlY3QgVklERU9fVFVORVIKKwlzZWxlY3QgVklERU9fVFZFRVBST00KKwlzZWxlY3QgQ1JDMzIKKwlkZWZhdWx0IE4KKwktLS1oZWxwLS0tCisJICBUaGlzIGlzIGEgdmlkZW80bGludXggZHJpdmVyIGZvciBzb21lIHdpZXJkIGRldmljZS4uLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBnbzcwMDcKKworY29uZmlnIFZJREVPX0dPNzAwN19VU0IKKwl0cmlzdGF0ZSAiR28gNzAwNyBVU0Igc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFZJREVPX0dPNzAwNyAmJiBVU0IKKwlkZWZhdWx0IE4KKwktLS1oZWxwLS0tCisJICBUaGlzIGlzIGEgdmlkZW80bGludXggZHJpdmVyIGZvciBzb21lIHdpZXJkIGRldmljZS4uLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBnbzcwMDctdXNiCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTMxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L01ha2VmaWxlCkBAIC0wLDAgKzEsMTggQEAKKyNvYmotbSArPSBnbzcwMDcubyBnbzcwMDctdXNiLm8gc25kLWdvNzAwNy5vIHdpcy1zYWE3MTE1Lm8gd2lzLXR3OTkwMy5vIFwKKwkJd2lzLXVkYTEzNDIubyB3aXMtc29ueS10dW5lci5vIHdpcy1zYWE3MTEzLm8gd2lzLW92NzY0MC5vIFwKKwkJd2lzLXR3MjgwNC5vCisKKworb2JqLSQoQ09ORklHX1ZJREVPX0dPNzAwNykgKz0gZ283MDA3Lm8KK29iai0kKENPTkZJR19WSURFT19HTzcwMDdfVVNCKSArPSBnbzcwMDctdXNiLm8KKworZ283MDA3LW9ianMgKz0gZ283MDA3LXY0bDIubyBnbzcwMDctZHJpdmVyLm8gZ283MDA3LWkyYy5vIGdvNzAwNy1mdy5vIHNuZC1nbzcwMDcubworCisKKyNpZm5lcSAoJChTQUE3MTM0X0JVSUxEKSwpCisjb2JqLW0gKz0gc2FhNzEzNC1nbzcwMDcubworI2VuZGlmCisKK0VYVFJBX0NGTEFHUyArPSAtSWRyaXZlcnMvc3RhZ2luZy9zYWE3MTM0CitFWFRSQV9DRkxBR1MgKz0gLUlkcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMKK0VYVFJBX0NGTEFHUyArPSAtSWRyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZjQ0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L1JFQURNRQpAQCAtMCwwICsxLDExIEBACitUb2RvOgorCS0gY2hlY2twYXRjaC5wbCBjbGVhbnVwcworCS0gc3BhcnNlIGNsZWFudXBzCisJLSBsb3RzIG9mIGxpdHRsZSBtb2R1bGVzLCBzaG91bGQgYmUgbWVyZ2VkIHRvZ2V0aGVyCisJICBhbmQgYWRkZWQgdG8gdGhlIGJ1aWxkLgorCS0gdGVzdGluZz8KKwktIGhhbmRsZSBjaHVybiBpbiB2NGwgbGF5ZXIuCisKK1BsZWFzZSBzZW5kIHBhdGNocyB0byBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPiBhbmQgQ2M6IFJvc3MKK0NvaGVuIDxyY29oZW5Ac251cmdsZS5vcmc+IGFzIHdlbGwuCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWRyaXZlci5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDctZHJpdmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhZTRiMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWRyaXZlci5jCkBAIC0wLDAgKzEsNjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxsaW51eC9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgorI2luY2x1ZGUgPG1lZGlhL3R1bmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKworI2luY2x1ZGUgImdvNzAwNy1wcml2LmgiCisjaW5jbHVkZSAid2lzLWkyYy5oIgorCisvKgorICogV2FpdCBmb3IgYW4gaW50ZXJydXB0IHRvIGJlIGRlbGl2ZXJlZCBmcm9tIHRoZSBHTzcwMDdTQiBhbmQgcmV0dXJuCisgKiB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBhbmQgZGF0YS4KKyAqCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBod19sb2NrIGhlbGQuCisgKi8KK2ludCBnbzcwMDdfcmVhZF9pbnRlcnJ1cHQoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiAqdmFsdWUsIHUxNiAqZGF0YSkKK3sKKwlnby0+aW50ZXJydXB0X2F2YWlsYWJsZSA9IDA7CisJZ28tPmhwaV9vcHMtPnJlYWRfaW50ZXJydXB0KGdvKTsKKwlpZiAod2FpdF9ldmVudF90aW1lb3V0KGdvLT5pbnRlcnJ1cHRfd2FpdHEsCisJCQkJZ28tPmludGVycnVwdF9hdmFpbGFibGUsIDUqSFopIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogdGltZW91dCB3YWl0aW5nIGZvciByZWFkIGludGVycnVwdFxuIik7CisJCXJldHVybiAtMTsKKwl9CisJaWYgKCFnby0+aW50ZXJydXB0X2F2YWlsYWJsZSkKKwkJcmV0dXJuIC0xOworCWdvLT5pbnRlcnJ1cHRfYXZhaWxhYmxlID0gMDsKKwkqdmFsdWUgPSBnby0+aW50ZXJydXB0X3ZhbHVlICYgMHhmZmZlOworCSpkYXRhID0gZ28tPmludGVycnVwdF9kYXRhOworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChnbzcwMDdfcmVhZF9pbnRlcnJ1cHQpOworCisvKgorICogUmVhZCBhIHJlZ2lzdGVyL2FkZHJlc3Mgb24gdGhlIEdPNzAwN1NCLgorICoKKyAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGh3X2xvY2sgaGVsZC4KKyAqLworaW50IGdvNzAwN19yZWFkX2FkZHIoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiBhZGRyLCB1MTYgKmRhdGEpCit7CisJaW50IGNvdW50ID0gMTAwOworCXUxNiB2YWx1ZTsKKworCWlmIChnbzcwMDdfd3JpdGVfaW50ZXJydXB0KGdvLCAweDAwMTAsIGFkZHIpIDwgMCkKKwkJcmV0dXJuIC1FSU87CisJd2hpbGUgKGNvdW50LS0gPiAwKSB7CisJCWlmIChnbzcwMDdfcmVhZF9pbnRlcnJ1cHQoZ28sICZ2YWx1ZSwgZGF0YSkgPT0gMCAmJgorCQkJCXZhbHVlID09IDB4YTAwMCkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVJTzsKK30KK0VYUE9SVF9TWU1CT0woZ283MDA3X3JlYWRfYWRkcik7CisKKy8qCisgKiBTZW5kIHRoZSBib290IGZpcm13YXJlIHRvIHRoZSBlbmNvZGVyLCB3aGljaCBqdXN0IHdha2VzIGl0IHVwIGFuZCBsZXRzCisgKiB1cyB0YWxrIHRvIHRoZSBHUElPIHBpbnMgYW5kIG9uLWJvYXJkIEkyQyBhZGFwdGVyLgorICoKKyAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGh3X2xvY2sgaGVsZC4KKyAqLworc3RhdGljIGludCBnbzcwMDdfbG9hZF9lbmNvZGVyKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZndfZW50cnk7CisJY2hhciBmd19uYW1lW10gPSAiZ283MDA3ZncuYmluIjsKKwl2b2lkICpib3VuY2U7CisJaW50IGZ3X2xlbiwgcnYgPSAwOworCXUxNiBpbnRyX3ZhbCwgaW50cl9kYXRhOworCisJaWYgKHJlcXVlc3RfZmlybXdhcmUoJmZ3X2VudHJ5LCBmd19uYW1lLCBnby0+ZGV2KSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJnbzcwMDc6IHVuYWJsZSB0byBsb2FkIGZpcm13YXJlIGZyb20gZmlsZSBcIiVzXCJcbiIsCisJCQlmd19uYW1lKTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAoZndfZW50cnktPnNpemUgPCAxNiB8fCBtZW1jbXAoZndfZW50cnktPmRhdGEsICJXSVNHTzcwMDdGVyIsIDExKSkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogZmlsZSBcIiVzXCIgZG9lcyBub3QgYXBwZWFyIHRvIGJlICIKKwkJCQkiZ283MDA3IGZpcm13YXJlXG4iLCBmd19uYW1lKTsKKwkJcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7CisJCXJldHVybiAtMTsKKwl9CisJZndfbGVuID0gZndfZW50cnktPnNpemUgLSAxNjsKKwlib3VuY2UgPSBrbWFsbG9jKGZ3X2xlbiwgR0ZQX0tFUk5FTCk7CisJaWYgKGJvdW5jZSA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3OiB1bmFibGUgdG8gYWxsb2NhdGUgJWQgYnl0ZXMgZm9yICIKKwkJCQkiZmlybXdhcmUgdHJhbnNmZXJcbiIsIGZ3X2xlbik7CisJCXJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpOworCQlyZXR1cm4gLTE7CisJfQorCW1lbWNweShib3VuY2UsIGZ3X2VudHJ5LT5kYXRhICsgMTYsIGZ3X2xlbik7CisJcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7CisJaWYgKGdvNzAwN19pbnRlcmZhY2VfcmVzZXQoZ28pIDwgMCB8fAorCQkJZ283MDA3X3NlbmRfZmlybXdhcmUoZ28sIGJvdW5jZSwgZndfbGVuKSA8IDAgfHwKKwkJCWdvNzAwN19yZWFkX2ludGVycnVwdChnbywgJmludHJfdmFsLCAmaW50cl9kYXRhKSA8IDAgfHwKKwkJCShpbnRyX3ZhbCAmIH4weDEpICE9IDB4NWE1YSkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogZXJyb3IgdHJhbnNmZXJyaW5nIGZpcm13YXJlXG4iKTsKKwkJcnYgPSAtMTsKKwl9CisJa2ZyZWUoYm91bmNlKTsKKwlyZXR1cm4gcnY7Cit9CisKKy8qCisgKiBCb290IHRoZSBlbmNvZGVyIGFuZCByZWdpc3RlciB0aGUgSTJDIGFkYXB0ZXIgaWYgcmVxdWVzdGVkLiAgRG8gdGhlCisgKiBtaW5pbXVtIGluaXRpYWxpemF0aW9uIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGJvYXJkLXNwZWNpZmljIGNvZGUgbWF5CisgKiBzdGlsbCBuZWVkIHRvIHByb2JlIHRoZSBib2FyZCBJRC4KKyAqCisgKiBNdXN0IE5PVCBiZSBjYWxsZWQgd2l0aCB0aGUgaHdfbG9jayBoZWxkLgorICovCitpbnQgZ283MDA3X2Jvb3RfZW5jb2RlcihzdHJ1Y3QgZ283MDA3ICpnbywgaW50IGluaXRfaTJjKQoreworCWludCByZXQ7CisKKwlkb3duKCZnby0+aHdfbG9jayk7CisJcmV0ID0gZ283MDA3X2xvYWRfZW5jb2Rlcihnbyk7CisJdXAoJmdvLT5od19sb2NrKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIC0xOworCWlmICghaW5pdF9pMmMpCisJCXJldHVybiAwOworCWlmIChnbzcwMDdfaTJjX2luaXQoZ28pIDwgMCkKKwkJcmV0dXJuIC0xOworCWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUgPSAxOworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChnbzcwMDdfYm9vdF9lbmNvZGVyKTsKKworLyoKKyAqIENvbmZpZ3VyZSBhbnkgaGFyZHdhcmUtcmVsYXRlZCByZWdpc3RlcnMgaW4gdGhlIEdPNzAwNywgc3VjaCBhcyBHUElPCisgKiBwaW5zIGFuZCBidXMgcGFyYW1ldGVycywgd2hpY2ggYXJlIGJvYXJkLXNwZWNpZmljLiAgVGhpcyBhc3N1bWVzCisgKiB0aGUgYm9vdCBmaXJtd2FyZSBoYXMgYWxyZWFkeSBiZWVuIGRvd25sb2FkZWQuCisgKgorICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgaHdfbG9jayBoZWxkLgorICovCitzdGF0aWMgaW50IGdvNzAwN19pbml0X2VuY29kZXIoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJaWYgKGdvLT5ib2FyZF9pbmZvLT5hdWRpb19mbGFncyAmIEdPNzAwN19BVURJT19JMlNfTUFTVEVSKSB7CisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDEwMDAsIDB4MDgxMSk7CisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDEwMDAsIDB4MGMxMSk7CisJfQorCWlmIChnby0+Ym9hcmRfaWQgPT0gR083MDA3X0JPQVJESURfTUFUUklYX1JFVikgeworCQkvKiBTZXQgR1BJTyBwaW4gMCB0byBiZSBhbiBvdXRwdXQgKGF1ZGlvIGNsb2NrIGNvbnRyb2wpICovCisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDNjODIsIDB4MDAwMSk7CisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDNjODAsIDB4MDBmZSk7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogU2VuZCB0aGUgYm9vdCBmaXJtd2FyZSB0byB0aGUgR083MDA3IGFuZCBjb25maWd1cmUgdGhlIHJlZ2lzdGVycy4gIFRoaXMKKyAqIGlzIHRoZSBvbmx5IHdheSB0byBzdG9wIHRoZSBlbmNvZGVyIG9uY2UgaXQgaGFzIHN0YXJ0ZWQgc3RyZWFtaW5nIHZpZGVvLgorICoKKyAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGh3X2xvY2sgaGVsZC4KKyAqLworaW50IGdvNzAwN19yZXNldF9lbmNvZGVyKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCWlmIChnbzcwMDdfbG9hZF9lbmNvZGVyKGdvKSA8IDApCisJCXJldHVybiAtMTsKKwlyZXR1cm4gZ283MDA3X2luaXRfZW5jb2Rlcihnbyk7Cit9CisKKy8qCisgKiBBdHRlbXB0IHRvIGluc3RhbnRpYXRlIGFuIEkyQyBjbGllbnQgYnkgSUQsIHByb2JhYmx5IGxvYWRpbmcgYSBtb2R1bGUuCisgKi8KK3N0YXRpYyBpbnQgaW5pdF9pMmNfbW9kdWxlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgaW50IGlkLCBpbnQgYWRkcikKK3sKKwljaGFyICptb2RuYW1lOworCisJc3dpdGNoIChpZCkgeworCWNhc2UgSTJDX0RSSVZFUklEX1dJU19TQUE3MTE1OgorCQltb2RuYW1lID0gIndpcy1zYWE3MTE1IjsKKwkJYnJlYWs7CisJY2FzZSBJMkNfRFJJVkVSSURfV0lTX1NBQTcxMTM6CisJCW1vZG5hbWUgPSAid2lzLXNhYTcxMTMiOworCQlicmVhazsKKwljYXNlIEkyQ19EUklWRVJJRF9XSVNfVURBMTM0MjoKKwkJbW9kbmFtZSA9ICJ3aXMtdWRhMTM0MiI7CisJCWJyZWFrOworCWNhc2UgSTJDX0RSSVZFUklEX1dJU19TT05ZX1RVTkVSOgorCQltb2RuYW1lID0gIndpcy1zb255LXR1bmVyIjsKKwkJYnJlYWs7CisJY2FzZSBJMkNfRFJJVkVSSURfV0lTX1RXOTkwMzoKKwkJbW9kbmFtZSA9ICJ3aXMtdHc5OTAzIjsKKwkJYnJlYWs7CisJY2FzZSBJMkNfRFJJVkVSSURfV0lTX1RXMjgwNDoKKwkJbW9kbmFtZSA9ICJ3aXMtdHcyODA0IjsKKwkJYnJlYWs7CisJY2FzZSBJMkNfRFJJVkVSSURfV0lTX09WNzY0MDoKKwkJbW9kbmFtZSA9ICJ3aXMtb3Y3NjQwIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJbW9kbmFtZSA9IE5VTEw7CisJCWJyZWFrOworCX0KKwlpZiAobW9kbmFtZSAhPSBOVUxMKQorCQlyZXF1ZXN0X21vZHVsZShtb2RuYW1lKTsKKwlpZiAod2lzX2kyY19wcm9iZV9kZXZpY2UoYWRhcHRlciwgaWQsIGFkZHIpID09IDEpCisJCXJldHVybiAwOworCWlmIChtb2RuYW1lICE9IE5VTEwpCisJCXByaW50ayhLRVJOX0lORk8KKwkJCSJnbzcwMDc6IHByb2JpbmcgZm9yIG1vZHVsZSAlcyBmYWlsZWQiLCBtb2RuYW1lKTsKKwllbHNlCisJCXByaW50ayhLRVJOX0lORk8KKwkJCSJnbzcwMDc6IHNlbnNvciAldSBzZWVtcyB0byBiZSB1bnN1cHBvcnRlZCFcbiIsIGlkKTsKKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBGaW5hbGl6ZSB0aGUgR083MDA3IGhhcmR3YXJlIHNldHVwLCByZWdpc3RlciB0aGUgb24tYm9hcmQgSTJDIGFkYXB0ZXIKKyAqIChpZiB1c2VkIG9uIHRoaXMgYm9hcmQpLCBsb2FkIHRoZSBJMkMgY2xpZW50IGRyaXZlciBmb3IgdGhlIHNlbnNvcgorICogKFNBQTcxMTUgb3Igd2hhdGV2ZXIpIGFuZCBvdGhlciBkZXZpY2VzLCBhbmQgcmVnaXN0ZXIgdGhlIEFMU0EgYW5kIFY0TDIKKyAqIGludGVyZmFjZXMuCisgKgorICogTXVzdCBOT1QgYmUgY2FsbGVkIHdpdGggdGhlIGh3X2xvY2sgaGVsZC4KKyAqLworaW50IGdvNzAwN19yZWdpc3Rlcl9lbmNvZGVyKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCWludCBpLCByZXQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJnbzcwMDc6IHJlZ2lzdGVyaW5nIG5ldyAlc1xuIiwgZ28tPm5hbWUpOworCisJZG93bigmZ28tPmh3X2xvY2spOworCXJldCA9IGdvNzAwN19pbml0X2VuY29kZXIoZ28pOworCXVwKCZnby0+aHdfbG9jayk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiAtMTsKKworCWlmICghZ28tPmkyY19hZGFwdGVyX29ubGluZSAmJgorCQkJZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX1VTRV9PTkJPQVJEX0kyQykgeworCQlpZiAoZ283MDA3X2kyY19pbml0KGdvKSA8IDApCisJCQlyZXR1cm4gLTE7CisJCWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUgPSAxOworCX0KKwlpZiAoZ28tPmkyY19hZGFwdGVyX29ubGluZSkgeworCQlmb3IgKGkgPSAwOyBpIDwgZ28tPmJvYXJkX2luZm8tPm51bV9pMmNfZGV2czsgKytpKQorCQkJaW5pdF9pMmNfbW9kdWxlKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJCWdvLT5ib2FyZF9pbmZvLT5pMmNfZGV2c1tpXS5pZCwKKwkJCQkJZ28tPmJvYXJkX2luZm8tPmkyY19kZXZzW2ldLmFkZHIpOworI2lmZGVmIFRVTkVSX1NFVF9UWVBFX0FERFIKKwkJaWYgKGdvLT50dW5lcl90eXBlID49IDApIHsKKwkJCXN0cnVjdCB0dW5lcl9zZXR1cCB0dW5fc2V0dXAgPSB7CisJCQkJLm1vZGVfbWFzawk9IFRfQU5BTE9HX1RWLAorCQkJCS5hZGRyCQk9IEFERFJfVU5TRVQsCisJCQkJLnR5cGUJCT0gZ28tPnR1bmVyX3R5cGUKKwkJCX07CisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJVFVORVJfU0VUX1RZUEVfQUREUiwgJnR1bl9zZXR1cCk7CisJCX0KKyNlbHNlCisJCWlmIChnby0+dHVuZXJfdHlwZSA+PSAwKQorCQkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLAorCQkJCVRVTkVSX1NFVF9UWVBFLCAmZ28tPnR1bmVyX3R5cGUpOworI2VuZGlmCisJCWlmIChnby0+Ym9hcmRfaWQgPT0gR083MDA3X0JPQVJESURfQURMSU5LX01QRzI0KQorCQkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLAorCQkJCURFQ09ERVJfU0VUX0NIQU5ORUwsICZnby0+Y2hhbm5lbF9udW1iZXIpOworCX0KKwlpZiAoZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX0hBU19BVURJTykgeworCQlnby0+YXVkaW9fZW5hYmxlZCA9IDE7CisJCWdvNzAwN19zbmRfaW5pdChnbyk7CisJfQorCXJldHVybiBnbzcwMDdfdjRsMl9pbml0KGdvKTsKK30KK0VYUE9SVF9TWU1CT0woZ283MDA3X3JlZ2lzdGVyX2VuY29kZXIpOworCisvKgorICogU2VuZCB0aGUgZW5jb2RlIGZpcm13YXJlIHRvIHRoZSBlbmNvZGVyLCB3aGljaCB3aWxsIGNhdXNlIGl0CisgKiB0byBpbW1lZGlhdGVseSBzdGFydCBkZWxpdmVyaW5nIHRoZSB2aWRlbyBhbmQgYXVkaW8gc3RyZWFtcy4KKyAqCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBod19sb2NrIGhlbGQuCisgKi8KK2ludCBnbzcwMDdfc3RhcnRfZW5jb2RlcihzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwl1OCAqZnc7CisJaW50IGZ3X2xlbiwgcnYgPSAwLCBpOworCXUxNiBpbnRyX3ZhbCwgaW50cl9kYXRhOworCisJZ28tPm1vZGV0X2VuYWJsZSA9IDA7CisJaWYgKCFnby0+ZHZkX21vZGUpCisJCWZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKKwkJCWlmIChnby0+bW9kZXRbaV0uZW5hYmxlKSB7CisJCQkJZ28tPm1vZGV0X2VuYWJsZSA9IDE7CisJCQkJY29udGludWU7CisJCQl9CisJCQlnby0+bW9kZXRbaV0ucGl4ZWxfdGhyZXNob2xkID0gMzI3Njc7CisJCQlnby0+bW9kZXRbaV0ubW90aW9uX3RocmVzaG9sZCA9IDMyNzY3OworCQkJZ28tPm1vZGV0W2ldLm1iX3RocmVzaG9sZCA9IDMyNzY3OworCQl9CisKKwlpZiAoZ283MDA3X2NvbnN0cnVjdF9md19pbWFnZShnbywgJmZ3LCAmZndfbGVuKSA8IDApCisJCXJldHVybiAtMTsKKworCWlmIChnbzcwMDdfc2VuZF9maXJtd2FyZShnbywgZncsIGZ3X2xlbikgPCAwIHx8CisJCQlnbzcwMDdfcmVhZF9pbnRlcnJ1cHQoZ28sICZpbnRyX3ZhbCwgJmludHJfZGF0YSkgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3OiBlcnJvciB0cmFuc2ZlcnJpbmcgZmlybXdhcmVcbiIpOworCQlydiA9IC0xOworCQlnb3RvIHN0YXJ0X2Vycm9yOworCX0KKworCWdvLT5zdGF0ZSA9IFNUQVRFX0RBVEE7CisJZ28tPnBhcnNlX2xlbmd0aCA9IDA7CisJZ28tPnNlZW5fZnJhbWUgPSAwOworCWlmIChnbzcwMDdfc3RyZWFtX3N0YXJ0KGdvKSA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJnbzcwMDc6IGVycm9yIHN0YXJ0aW5nIHN0cmVhbSB0cmFuc2ZlclxuIik7CisJCXJ2ID0gLTE7CisJCWdvdG8gc3RhcnRfZXJyb3I7CisJfQorCitzdGFydF9lcnJvcjoKKwlrZnJlZShmdyk7CisJcmV0dXJuIHJ2OworfQorCisvKgorICogU3RvcmUgYSBieXRlIGluIHRoZSBjdXJyZW50IHZpZGVvIGJ1ZmZlciwgaWYgdGhlcmUgaXMgb25lLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgc3RvcmVfYnl0ZShzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqZ29idWYsIHU4IGJ5dGUpCit7CisJaWYgKGdvYnVmICE9IE5VTEwgJiYgZ29idWYtPmJ5dGVzdXNlZCA8IEdPNzAwN19CVUZfU0laRSkgeworCQl1bnNpZ25lZCBpbnQgcGdpZHggPSBnb2J1Zi0+b2Zmc2V0ID4+IFBBR0VfU0hJRlQ7CisJCXVuc2lnbmVkIGludCBwZ29mZiA9IGdvYnVmLT5vZmZzZXQgJiB+UEFHRV9NQVNLOworCisJCSooKHU4ICopcGFnZV9hZGRyZXNzKGdvYnVmLT5wYWdlc1twZ2lkeF0pICsgcGdvZmYpID0gYnl0ZTsKKwkJKytnb2J1Zi0+b2Zmc2V0OworCQkrK2dvYnVmLT5ieXRlc3VzZWQ7CisJfQorfQorCisvKgorICogRGVsaXZlciB0aGUgbGFzdCB2aWRlbyBidWZmZXIgYW5kIGdldCBhIG5ldyBvbmUgdG8gc3RhcnQgd3JpdGluZyB0by4KKyAqLworc3RhdGljIHZvaWQgZnJhbWVfYm91bmRhcnkoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IGdvNzAwN19idWZmZXIgKmdvYnVmOworCWludCBpOworCisJaWYgKGdvLT5hY3RpdmVfYnVmKSB7CisJCWlmIChnby0+YWN0aXZlX2J1Zi0+bW9kZXRfYWN0aXZlKSB7CisJCQlpZiAoZ28tPmFjdGl2ZV9idWYtPmJ5dGVzdXNlZCArIDIxNiA8IEdPNzAwN19CVUZfU0laRSkgeworCQkJCWZvciAoaSA9IDA7IGkgPCAyMTY7ICsraSkKKwkJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwKKwkJCQkJCQlnby0+YWN0aXZlX21hcFtpXSk7CisJCQkJZ28tPmFjdGl2ZV9idWYtPmJ5dGVzdXNlZCAtPSAyMTY7CisJCQl9IGVsc2UKKwkJCQlnby0+YWN0aXZlX2J1Zi0+bW9kZXRfYWN0aXZlID0gMDsKKwkJfQorCQlnby0+YWN0aXZlX2J1Zi0+c3RhdGUgPSBCVUZfU1RBVEVfRE9ORTsKKwkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZnby0+ZnJhbWVfd2FpdHEpOworCQlnby0+YWN0aXZlX2J1ZiA9IE5VTEw7CisJfQorCWxpc3RfZm9yX2VhY2hfZW50cnkoZ29idWYsICZnby0+c3RyZWFtLCBzdHJlYW0pCisJCWlmIChnb2J1Zi0+c3RhdGUgPT0gQlVGX1NUQVRFX1FVRVVFRCkgeworCQkJZ29idWYtPnNlcSA9IGdvLT5uZXh0X3NlcTsKKwkJCWRvX2dldHRpbWVvZmRheSgmZ29idWYtPnRpbWVzdGFtcCk7CisJCQlnby0+YWN0aXZlX2J1ZiA9IGdvYnVmOworCQkJYnJlYWs7CisJCX0KKwkrK2dvLT5uZXh0X3NlcTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfYml0bWFwX3dvcmQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJaW50IHgsIHksIGksIHN0cmlkZSA9ICgoZ28tPndpZHRoID4+IDQpICsgNykgPj4gMzsKKworCWZvciAoaSA9IDA7IGkgPCAxNjsgKytpKSB7CisJCXkgPSAoKChnby0+cGFyc2VfbGVuZ3RoIC0gMSkgPDwgMykgKyBpKSAvIChnby0+d2lkdGggPj4gNCk7CisJCXggPSAoKChnby0+cGFyc2VfbGVuZ3RoIC0gMSkgPDwgMykgKyBpKSAlIChnby0+d2lkdGggPj4gNCk7CisJCWdvLT5hY3RpdmVfbWFwW3N0cmlkZSAqIHkgKyAoeCA+PiAzKV0gfD0KKwkJCQkJKGdvLT5tb2RldF93b3JkICYgMSkgPDwgKHggJiAweDcpOworCQlnby0+bW9kZXRfd29yZCA+Pj0gMTsKKwl9Cit9CisKKy8qCisgKiBQYXJzZSBhIGNodW5rIG9mIHRoZSB2aWRlbyBzdHJlYW0gaW50byBmcmFtZXMuICBUaGUgZnJhbWVzIGFyZSBub3QKKyAqIGRlbGltaXRlZCBieSB0aGUgaGFyZHdhcmUsIHNvIHdlIGhhdmUgdG8gcGFyc2UgdGhlIGZyYW1lIGJvdW5kYXJpZXMKKyAqIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHZpZGVvIHN0cmVhbSB3ZSdyZSByZWNlaXZpbmcuCisgKi8KK3ZvaWQgZ283MDA3X3BhcnNlX3ZpZGVvX3N0cmVhbShzdHJ1Y3QgZ283MDA3ICpnbywgdTggKmJ1ZiwgaW50IGxlbmd0aCkKK3sKKwlpbnQgaSwgc2VxX3N0YXJ0X2NvZGUgPSAtMSwgZnJhbWVfc3RhcnRfY29kZSA9IC0xOworCisJc3Bpbl9sb2NrKCZnby0+c3BpbmxvY2spOworCisJc3dpdGNoIChnby0+Zm9ybWF0KSB7CisJY2FzZSBHTzcwMDdfRk9STUFUX01QRUc0OgorCQlzZXFfc3RhcnRfY29kZSA9IDB4QjA7CisJCWZyYW1lX3N0YXJ0X2NvZGUgPSAweEI2OworCQlicmVhazsKKwljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzE6CisJY2FzZSBHTzcwMDdfRk9STUFUX01QRUcyOgorCQlzZXFfc3RhcnRfY29kZSA9IDB4QjM7CisJCWZyYW1lX3N0YXJ0X2NvZGUgPSAweDAwOworCQlicmVhazsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKwkJaWYgKGdvLT5hY3RpdmVfYnVmICE9IE5VTEwgJiYKKwkJCSAgICBnby0+YWN0aXZlX2J1Zi0+Ynl0ZXN1c2VkID49IEdPNzAwN19CVUZfU0laRSAtIDMpIHsKKwkJCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDc6IGRyb3BwaW5nIG92ZXJzaXplZCBmcmFtZVxuIik7CisJCQlnby0+YWN0aXZlX2J1Zi0+b2Zmc2V0IC09IGdvLT5hY3RpdmVfYnVmLT5ieXRlc3VzZWQ7CisJCQlnby0+YWN0aXZlX2J1Zi0+Ynl0ZXN1c2VkID0gMDsKKwkJCWdvLT5hY3RpdmVfYnVmLT5tb2RldF9hY3RpdmUgPSAwOworCQkJZ28tPmFjdGl2ZV9idWYgPSBOVUxMOworCQl9CisKKwkJc3dpdGNoIChnby0+c3RhdGUpIHsKKwkJY2FzZSBTVEFURV9EQVRBOgorCQkJc3dpdGNoIChidWZbaV0pIHsKKwkJCWNhc2UgMHgwMDoKKwkJCQlnby0+c3RhdGUgPSBTVEFURV8wMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMHhGRjoKKwkJCQlnby0+c3RhdGUgPSBTVEFURV9GRjsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgYnVmW2ldKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNUQVRFXzAwOgorCQkJc3dpdGNoIChidWZbaV0pIHsKKwkJCWNhc2UgMHgwMDoKKwkJCQlnby0+c3RhdGUgPSBTVEFURV8wMF8wMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMHhGRjoKKwkJCQlzdG9yZV9ieXRlKGdvLT5hY3RpdmVfYnVmLCAweDAwKTsKKwkJCQlnby0+c3RhdGUgPSBTVEFURV9GRjsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMCk7CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgYnVmW2ldKTsKKwkJCQlnby0+c3RhdGUgPSBTVEFURV9EQVRBOworCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU1RBVEVfMDBfMDA6CisJCQlzd2l0Y2ggKGJ1ZltpXSkgeworCQkJY2FzZSAweDAwOgorCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDApOworCQkJCS8qIGdvLT5zdGF0ZSByZW1haW5zIFNUQVRFXzAwXzAwICovCisJCQkJYnJlYWs7CisJCQljYXNlIDB4MDE6CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfMDBfMDBfMDE7CisJCQkJYnJlYWs7CisJCQljYXNlIDB4RkY6CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMCk7CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMCk7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfRkY7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDApOworCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDApOworCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIGJ1ZltpXSk7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfREFUQTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNUQVRFXzAwXzAwXzAxOgorCQkJLyogSWYgdGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBuZXcgTVBFRyBmcmFtZSwKKwkJCSAqIGdldCBhIG5ldyBidWZmZXIgKi8KKwkJCWlmICgoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUcxIHx8CisJCQkJCWdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiB8fAorCQkJCQlnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzQpICYmCisJCQkJCShidWZbaV0gPT0gc2VxX3N0YXJ0X2NvZGUgfHwKKwkJCQkJCWJ1ZltpXSA9PSAweEI4IHx8IC8qIEdPUCBjb2RlICovCisJCQkJCQlidWZbaV0gPT0gZnJhbWVfc3RhcnRfY29kZSkpIHsKKwkJCQlpZiAoZ28tPmFjdGl2ZV9idWYgPT0gTlVMTCB8fCBnby0+c2Vlbl9mcmFtZSkKKwkJCQkJZnJhbWVfYm91bmRhcnkoZ28pOworCQkJCWlmIChidWZbaV0gPT0gZnJhbWVfc3RhcnRfY29kZSkgeworCQkJCQlpZiAoZ28tPmFjdGl2ZV9idWYgIT0gTlVMTCkKKwkJCQkJCWdvLT5hY3RpdmVfYnVmLT5mcmFtZV9vZmZzZXQgPQorCQkJCQkJCWdvLT5hY3RpdmVfYnVmLT5vZmZzZXQ7CisJCQkJCWdvLT5zZWVuX2ZyYW1lID0gMTsKKwkJCQl9IGVsc2UgeworCQkJCQlnby0+c2Vlbl9mcmFtZSA9IDA7CisJCQkJfQorCQkJfQorCQkJLyogSGFuZGxlIGFueSBzcGVjaWFsIGNodW5rIHR5cGVzLCBvciBqdXN0IHdyaXRlIHRoZQorCQkJICogc3RhcnQgY29kZSB0byB0aGUgKHBvdGVudGlhbGx5IG5ldykgYnVmZmVyICovCisJCQlzd2l0Y2ggKGJ1ZltpXSkgeworCQkJY2FzZSAweEY1OiAvKiB0aW1lc3RhbXAgKi8KKwkJCQlnby0+cGFyc2VfbGVuZ3RoID0gMTI7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfVU5QQVJTRUQ7CisJCQkJYnJlYWs7CisJCQljYXNlIDB4RjY6IC8qIHZiaSAqLworCQkJCWdvLT5zdGF0ZSA9IFNUQVRFX1ZCSV9MRU5fQTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMHhGODogLyogTUQgbWFwICovCisJCQkJZ28tPnBhcnNlX2xlbmd0aCA9IDA7CisJCQkJbWVtc2V0KGdvLT5hY3RpdmVfbWFwLCAwLAorCQkJCQkJc2l6ZW9mKGdvLT5hY3RpdmVfbWFwKSk7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfTU9ERVRfTUFQOworCQkJCWJyZWFrOworCQkJY2FzZSAweEZGOiAvKiBQb3RlbnRpYWwgSlBFRyBzdGFydCBjb2RlICovCisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMCk7CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMCk7CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHgwMSk7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfRkY7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDApOworCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDApOworCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIDB4MDEpOworCQkJCXN0b3JlX2J5dGUoZ28tPmFjdGl2ZV9idWYsIGJ1ZltpXSk7CisJCQkJZ28tPnN0YXRlID0gU1RBVEVfREFUQTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNUQVRFX0ZGOgorCQkJc3dpdGNoIChidWZbaV0pIHsKKwkJCWNhc2UgMHgwMDoKKwkJCQlzdG9yZV9ieXRlKGdvLT5hY3RpdmVfYnVmLCAweEZGKTsKKwkJCQlnby0+c3RhdGUgPSBTVEFURV8wMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMHhGRjoKKwkJCQlzdG9yZV9ieXRlKGdvLT5hY3RpdmVfYnVmLCAweEZGKTsKKwkJCQkvKiBnby0+c3RhdGUgcmVtYWlucyBTVEFURV9GRiAqLworCQkJCWJyZWFrOworCQkJY2FzZSAweEQ4OgorCQkJCWlmIChnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTUpQRUcpCisJCQkJCWZyYW1lX2JvdW5kYXJ5KGdvKTsKKwkJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJCWRlZmF1bHQ6CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgMHhGRik7CisJCQkJc3RvcmVfYnl0ZShnby0+YWN0aXZlX2J1ZiwgYnVmW2ldKTsKKwkJCQlnby0+c3RhdGUgPSBTVEFURV9EQVRBOworCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU1RBVEVfVkJJX0xFTl9BOgorCQkJZ28tPnBhcnNlX2xlbmd0aCA9IGJ1ZltpXSA8PCA4OworCQkJZ28tPnN0YXRlID0gU1RBVEVfVkJJX0xFTl9COworCQkJYnJlYWs7CisJCWNhc2UgU1RBVEVfVkJJX0xFTl9COgorCQkJZ28tPnBhcnNlX2xlbmd0aCB8PSBidWZbaV07CisJCQlpZiAoZ28tPnBhcnNlX2xlbmd0aCA+IDApCisJCQkJZ28tPnN0YXRlID0gU1RBVEVfVU5QQVJTRUQ7CisJCQllbHNlCisJCQkJZ28tPnN0YXRlID0gU1RBVEVfREFUQTsKKwkJCWJyZWFrOworCQljYXNlIFNUQVRFX01PREVUX01BUDoKKwkJCWlmIChnby0+cGFyc2VfbGVuZ3RoIDwgMjA0KSB7CisJCQkJaWYgKGdvLT5wYXJzZV9sZW5ndGggJiAxKSB7CisJCQkJCWdvLT5tb2RldF93b3JkIHw9IGJ1ZltpXTsKKwkJCQkJd3JpdGVfYml0bWFwX3dvcmQoZ28pOworCQkJCX0gZWxzZQorCQkJCQlnby0+bW9kZXRfd29yZCA9IGJ1ZltpXSA8PCA4OworCQkJfSBlbHNlIGlmIChnby0+cGFyc2VfbGVuZ3RoID09IDIwNyAmJiBnby0+YWN0aXZlX2J1ZikgeworCQkJCWdvLT5hY3RpdmVfYnVmLT5tb2RldF9hY3RpdmUgPSBidWZbaV07CisJCQl9CisJCQlpZiAoKytnby0+cGFyc2VfbGVuZ3RoID09IDIwOCkKKwkJCQlnby0+c3RhdGUgPSBTVEFURV9EQVRBOworCQkJYnJlYWs7CisJCWNhc2UgU1RBVEVfVU5QQVJTRUQ6CisJCQlpZiAoLS1nby0+cGFyc2VfbGVuZ3RoID09IDApCisJCQkJZ28tPnN0YXRlID0gU1RBVEVfREFUQTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3Bpbl91bmxvY2soJmdvLT5zcGlubG9jayk7Cit9CitFWFBPUlRfU1lNQk9MKGdvNzAwN19wYXJzZV92aWRlb19zdHJlYW0pOworCisvKgorICogQWxsb2NhdGUgYSBuZXcgZ283MDA3IHN0cnVjdC4gIFVzZWQgYnkgdGhlIGhhcmR3YXJlLXNwZWNpZmljIHByb2JlLgorICovCitzdHJ1Y3QgZ283MDA3ICpnbzcwMDdfYWxsb2Moc3RydWN0IGdvNzAwN19ib2FyZF9pbmZvICpib2FyZCwgc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBnbzcwMDcgKmdvOworCWludCBpOworCisJZ28gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZ283MDA3KSwgR0ZQX0tFUk5FTCk7CisJaWYgKGdvID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCWdvLT5kZXYgPSBkZXY7CisJZ28tPmJvYXJkX2luZm8gPSBib2FyZDsKKwlnby0+Ym9hcmRfaWQgPSAwOworCWdvLT50dW5lcl90eXBlID0gLTE7CisJZ28tPmNoYW5uZWxfbnVtYmVyID0gMDsKKwlnby0+bmFtZVswXSA9IDA7CisJaW5pdF9NVVRFWCgmZ28tPmh3X2xvY2spOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmdvLT5mcmFtZV93YWl0cSk7CisJc3Bpbl9sb2NrX2luaXQoJmdvLT5zcGlubG9jayk7CisJZ28tPnZpZGVvX2RldiA9IE5VTEw7CisJZ28tPnJlZl9jb3VudCA9IDA7CisJZ28tPnN0YXR1cyA9IFNUQVRVU19JTklUOworCW1lbXNldCgmZ28tPmkyY19hZGFwdGVyLCAwLCBzaXplb2YoZ28tPmkyY19hZGFwdGVyKSk7CisJZ28tPmkyY19hZGFwdGVyX29ubGluZSA9IDA7CisJZ28tPmludGVycnVwdF9hdmFpbGFibGUgPSAwOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmdvLT5pbnRlcnJ1cHRfd2FpdHEpOworCWdvLT5pbl91c2UgPSAwOworCWdvLT5pbnB1dCA9IDA7CisJaWYgKGJvYXJkLT5zZW5zb3JfZmxhZ3MgJiBHTzcwMDdfU0VOU09SX1RWKSB7CisJCWdvLT5zdGFuZGFyZCA9IEdPNzAwN19TVERfTlRTQzsKKwkJZ28tPndpZHRoID0gNzIwOworCQlnby0+aGVpZ2h0ID0gNDgwOworCQlnby0+c2Vuc29yX2ZyYW1lcmF0ZSA9IDMwMDAwOworCX0gZWxzZSB7CisJCWdvLT5zdGFuZGFyZCA9IEdPNzAwN19TVERfT1RIRVI7CisJCWdvLT53aWR0aCA9IGJvYXJkLT5zZW5zb3Jfd2lkdGg7CisJCWdvLT5oZWlnaHQgPSBib2FyZC0+c2Vuc29yX2hlaWdodDsKKwkJZ28tPnNlbnNvcl9mcmFtZXJhdGUgPSBib2FyZC0+c2Vuc29yX2ZyYW1lcmF0ZTsKKwl9CisJZ28tPmVuY29kZXJfdl9vZmZzZXQgPSBib2FyZC0+c2Vuc29yX3Zfb2Zmc2V0OworCWdvLT5lbmNvZGVyX2hfb2Zmc2V0ID0gYm9hcmQtPnNlbnNvcl9oX29mZnNldDsKKwlnby0+ZW5jb2Rlcl9oX2hhbHZlID0gMDsKKwlnby0+ZW5jb2Rlcl92X2hhbHZlID0gMDsKKwlnby0+ZW5jb2Rlcl9zdWJzYW1wbGUgPSAwOworCWdvLT5zdHJlYW1pbmcgPSAwOworCWdvLT5mb3JtYXQgPSBHTzcwMDdfRk9STUFUX01KUEVHOworCWdvLT5iaXRyYXRlID0gMTUwMDAwMDsKKwlnby0+ZnBzX3NjYWxlID0gMTsKKwlnby0+cGFsaSA9IDA7CisJZ28tPmFzcGVjdF9yYXRpbyA9IEdPNzAwN19SQVRJT18xXzE7CisJZ28tPmdvcF9zaXplID0gMDsKKwlnby0+aXBiID0gMDsKKwlnby0+Y2xvc2VkX2dvcCA9IDA7CisJZ28tPnJlcGVhdF9zZXFoZWFkID0gMDsKKwlnby0+c2VxX2hlYWRlcl9lbmFibGUgPSAwOworCWdvLT5nb3BfaGVhZGVyX2VuYWJsZSA9IDA7CisJZ28tPmR2ZF9tb2RlID0gMDsKKwlnby0+aW50ZXJsYWNlX2NvZGluZyA9IDA7CisJZm9yIChpID0gMDsgaSA8IDQ7ICsraSkKKwkJZ28tPm1vZGV0W2ldLmVuYWJsZSA9IDA7OworCWZvciAoaSA9IDA7IGkgPCAxNjI0OyArK2kpCisJCWdvLT5tb2RldF9tYXBbaV0gPSAwOworCWdvLT5hdWRpb19kZWxpdmVyID0gTlVMTDsKKwlnby0+YXVkaW9fZW5hYmxlZCA9IDA7CisJSU5JVF9MSVNUX0hFQUQoJmdvLT5zdHJlYW0pOworCisJcmV0dXJuIGdvOworfQorRVhQT1JUX1NZTUJPTChnbzcwMDdfYWxsb2MpOworCisvKgorICogRGV0YWNoIGFuZCB1bnJlZ2lzdGVyIHRoZSBlbmNvZGVyLiAgVGhlIGdvNzAwNyBzdHJ1Y3Qgd29uJ3QgYmUgZnJlZWQKKyAqIHVudGlsIHY0bDIgZmluaXNoZXMgcmVsZWFzaW5nIGl0cyByZXNvdXJjZXMgYW5kIGFsbCBhc3NvY2lhdGVkIGZkcyBhcmUKKyAqIGNsb3NlZCBieSBhcHBsaWNhdGlvbnMuCisgKi8KK3ZvaWQgZ283MDA3X3JlbW92ZShzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwlpZiAoZ28tPmkyY19hZGFwdGVyX29ubGluZSkgeworCQlpZiAoaTJjX2RlbF9hZGFwdGVyKCZnby0+aTJjX2FkYXB0ZXIpID09IDApCisJCQlnby0+aTJjX2FkYXB0ZXJfb25saW5lID0gMDsKKwkJZWxzZQorCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJImdvNzAwNzogZXJyb3IgcmVtb3ZpbmcgSTJDIGFkYXB0ZXIhXG4iKTsKKwl9CisKKwlpZiAoZ28tPmF1ZGlvX2VuYWJsZWQpCisJCWdvNzAwN19zbmRfcmVtb3ZlKGdvKTsKKwlnbzcwMDdfdjRsMl9yZW1vdmUoZ28pOworfQorRVhQT1JUX1NZTUJPTChnbzcwMDdfcmVtb3ZlKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDctZncuYyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWZ3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJhZWExMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWZ3LmMKQEAgLTAsMCArMSwxNjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisvKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIGNvZGUgdG8gZ2VuZXJhdGUgYSBmaXJtd2FyZSBpbWFnZSBmb3IgdGhlIEdPNzAwN1NCCisgKiBlbmNvZGVyLiAgTXVjaCBvZiB0aGUgZmlybXdhcmUgaXMgcmVhZCB2ZXJiYXRpbSBmcm9tIGEgZmlsZSwgYnV0IHNvbWUgb2YKKyAqIGl0IGNvbmNlcm5pbmcgYml0cmF0ZSBjb250cm9sIGFuZCBvdGhlciB0aGluZ3MgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBhdAorICogcnVuLXRpbWUgYXJlIGdlbmVyYXRlZCBkeW5hbWljYWxseS4gIE5vdGUgdGhhdCB0aGUgZm9ybWF0IGhlYWRlcnMKKyAqIGdlbmVyYXRlZCBoZXJlIGRvIG5vdCBhZmZlY3QgdGhlIGZ1bmN0aW9uaW5nIG9mIHRoZSBlbmNvZGVyOyB0aGV5IGFyZQorICogbWVyZWx5IHBhcnJvdGVkIGJhY2sgdG8gdGhlIGhvc3QgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZnJhbWUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgvdGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNpbmNsdWRlICJnbzcwMDctcHJpdi5oIgorCisvKiBDb25zdGFudHMgdXNlZCBpbiB0aGUgc291cmNlIGZpcm13YXJlIGltYWdlIHRvIGRlc2NyaWJlIGNvZGUgc2VnbWVudHMgKi8KKworI2RlZmluZQlGTEFHX01PREVfTUpQRUcJCSgxKQorI2RlZmluZQlGTEFHX01PREVfTVBFRzEJCSgxPDwxKQorI2RlZmluZQlGTEFHX01PREVfTVBFRzIJCSgxPDwyKQorI2RlZmluZQlGTEFHX01PREVfTVBFRzQJCSgxPDwzKQorI2RlZmluZQlGTEFHX01PREVfSDI2MwkJKDE8PDQpCisjZGVmaW5lIEZMQUdfTU9ERV9BTEwJCShGTEFHX01PREVfTUpQRUcgfCBGTEFHX01PREVfTVBFRzEgfCBcCisJCQkJCUZMQUdfTU9ERV9NUEVHMiB8IEZMQUdfTU9ERV9NUEVHNCB8IFwKKwkJCQkJRkxBR19NT0RFX0gyNjMpCisjZGVmaW5lIEZMQUdfU1BFQ0lBTAkJKDE8PDgpCisKKyNkZWZpbmUgU1BFQ0lBTF9GUk1fSEVBRAkwCisjZGVmaW5lIFNQRUNJQUxfQlJDX0NUUkwJMQorI2RlZmluZSBTUEVDSUFMX0NPTkZJRwkJMgorI2RlZmluZSBTUEVDSUFMX1NFUUhFQUQJCTMKKyNkZWZpbmUgU1BFQ0lBTF9BVl9TWU5DCQk0CisjZGVmaW5lIFNQRUNJQUxfRklOQUwJCTUKKyNkZWZpbmUgU1BFQ0lBTF9BVURJTwkJNgorI2RlZmluZSBTUEVDSUFMX01PREVUCQk3CisKKy8qIExpdHRsZSBkYXRhIGNsYXNzIGZvciBjcmVhdGluZyBNUEVHIGhlYWRlcnMgYml0LWJ5LWJpdCAqLworCitzdHJ1Y3QgY29kZV9nZW4geworCXVuc2lnbmVkIGNoYXIgKnA7IC8qIGRlc3RpbmF0aW9uICovCisJdTMyIGE7IC8qIGNvbGxlY3RzIGJpdHMgYXQgdGhlIHRvcCBvZiB0aGUgdmFyaWFibGUgKi8KKwlpbnQgYjsgLyogYml0IHBvc2l0aW9uIG9mIG1vc3QgcmVjZW50bHktd3JpdHRlbiBiaXQgKi8KKwlpbnQgbGVuOyAvKiB3cml0dGVuIG91dCBzbyBmYXIgKi8KK307CisKKyNkZWZpbmUgQ09ERV9HRU4obmFtZSwgZGVzdCkgc3RydWN0IGNvZGVfZ2VuIG5hbWUgPSB7IGRlc3QsIDAsIDMyLCAwIH0KKworI2RlZmluZSBDT0RFX0FERChuYW1lLCB2YWwsIGxlbmd0aCkgZG8geyBcCisJbmFtZS5iIC09IChsZW5ndGgpOyBcCisJbmFtZS5hIHw9ICh2YWwpIDw8IG5hbWUuYjsgXAorCXdoaWxlIChuYW1lLmIgPD0gMjQpIHsgXAorCQkqbmFtZS5wID0gbmFtZS5hID4+IDI0OyBcCisJCSsrbmFtZS5wOyBcCisJCW5hbWUuYSA8PD0gODsgXAorCQluYW1lLmIgKz0gODsgXAorCQluYW1lLmxlbiArPSA4OyBcCisJfSBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIENPREVfTEVOR1RIKG5hbWUpIChuYW1lLmxlbiArICgzMiAtIG5hbWUuYikpCisKKy8qIFRhYmxlcyBmb3IgY3JlYXRpbmcgdGhlIGJpdHJhdGUgY29udHJvbCBkYXRhICovCisKK3N0YXRpYyBjb25zdCBzMTYgY29udmVyZ2Vfc3BlZWRfaXBbMTAxXSA9IHsKKwkxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAorCTEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisJMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKKwkxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLAorCTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDMsCisJMywgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNCwKKwk1LCA1LCA1LCA2LCA2LCA2LCA3LCA3LCA4LCA4LAorCTksIDEwLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsCisJMTksIDIwLCAyMiwgMjMsIDI1LCAyNywgMzAsIDMyLCAzNSwgMzgsCisJNDEsIDQ1LCA0OSwgNTMsIDU4LCA2MywgNjksIDc2LCA4MywgOTEsCisJMTAwCit9OworCitzdGF0aWMgY29uc3QgczE2IGNvbnZlcmdlX3NwZWVkX2lwYlsxMDFdID0geworCTMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsCisJMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKKwkzLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA0LAorCTQsIDQsIDQsIDQsIDUsIDUsIDUsIDUsIDUsIDYsCisJNiwgNiwgNiwgNywgNywgNywgNywgOCwgOCwgOSwKKwk5LCA5LCAxMCwgMTAsIDExLCAxMiwgMTIsIDEzLCAxNCwgMTQsCisJMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjIsIDIzLCAyNSwgMjYsCisJMjgsIDMwLCAzMiwgMzQsIDM3LCA0MCwgNDIsIDQ2LCA0OSwgNTMsCisJNTcsIDYxLCA2NiwgNzEsIDc3LCA4MywgOTAsIDk3LCAxMDYsIDExNSwKKwkxMjUsIDEzNSwgMTQ3LCAxNjEsIDE3NSwgMTkxLCAyMDksIDIyOCwgMjQ5LCAyNzMsCisJMzAwCit9OworCitzdGF0aWMgY29uc3QgczE2IExBTUJEQV90YWJsZVs0XVsxMDFdID0geworCXsJMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsCisJCTE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLAorCQkyMiwgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjUsIDI2LCAyNiwKKwkJMjcsIDI3LCAyOCwgMjgsIDI5LCAyOSwgMzAsIDMxLCAzMSwgMzIsCisJCTMyLCAzMywgMzMsIDM0LCAzNSwgMzUsIDM2LCAzNywgMzcsIDM4LAorCQkzOSwgMzksIDQwLCA0MSwgNDIsIDQyLCA0MywgNDQsIDQ1LCA0NiwKKwkJNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsCisJCTU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LAorCQk2NywgNjgsIDY5LCA3MCwgNzIsIDczLCA3NCwgNzYsIDc3LCA3OCwKKwkJODAsIDgxLCA4MywgODQsIDg2LCA4NywgODksIDkwLCA5MiwgOTQsCisJCTk2CisJfSwKKwl7CisJCTIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIyLCAyMiwgMjMsIDIzLAorCQkyMywgMjQsIDI0LCAyNSwgMjUsIDI2LCAyNiwgMjcsIDI3LCAyOCwKKwkJMjgsIDI5LCAyOSwgMzAsIDMwLCAzMSwgMzEsIDMyLCAzMywgMzMsCisJCTM0LCAzNCwgMzUsIDM2LCAzNiwgMzcsIDM4LCAzOCwgMzksIDQwLAorCQk0MCwgNDEsIDQyLCA0MywgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwKKwkJNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsCisJCTU4LCA1OSwgNjAsIDYxLCA2MiwgNjQsIDY1LCA2NiwgNjcsIDY4LAorCQk3MCwgNzEsIDcyLCA3MywgNzUsIDc2LCA3OCwgNzksIDgwLCA4MiwKKwkJODMsIDg1LCA4NiwgODgsIDkwLCA5MSwgOTMsIDk1LCA5NiwgOTgsCisJCTEwMCwgMTAyLCAxMDMsIDEwNSwgMTA3LCAxMDksIDExMSwgMTEzLCAxMTUsIDExNywKKwkJMTIwCisJfSwKKwl7CisJCTI0LCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsIDI4LAorCQkyOCwgMjksIDI5LCAzMCwgMzAsIDMxLCAzMSwgMzIsIDMzLCAzMywKKwkJMzQsIDM0LCAzNSwgMzYsIDM2LCAzNywgMzgsIDM4LCAzOSwgNDAsCisJCTQxLCA0MSwgNDIsIDQzLCA0NCwgNDQsIDQ1LCA0NiwgNDcsIDQ4LAorCQk0OSwgNTAsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywKKwkJNTgsIDU5LCA2MCwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjksCisJCTcwLCA3MSwgNzIsIDc0LCA3NSwgNzYsIDc4LCA3OSwgODEsIDgyLAorCQk4NCwgODUsIDg3LCA4OCwgOTAsIDkyLCA5MywgOTUsIDk3LCA5OCwKKwkJMTAwLCAxMDIsIDEwNCwgMTA2LCAxMDgsIDExMCwgMTEyLCAxMTQsIDExNiwgMTE4LAorCQkxMjAsIDEyMiwgMTI0LCAxMjcsIDEyOSwgMTMxLCAxMzQsIDEzNiwgMTM4LCAxNDEsCisJCTE0NAorCX0sCisJeworCQkzMiwgMzIsIDMzLCAzMywgMzQsIDM0LCAzNSwgMzYsIDM2LCAzNywKKwkJMzgsIDM4LCAzOSwgNDAsIDQxLCA0MSwgNDIsIDQzLCA0NCwgNDQsCisJCTQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUwLCA1MSwgNTIsIDUzLAorCQk1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjIsIDYzLCA2NCwKKwkJNjUsIDY2LCA2NywgNjksIDcwLCA3MSwgNzIsIDc0LCA3NSwgNzYsCisJCTc4LCA3OSwgODEsIDgyLCA4NCwgODUsIDg3LCA4OCwgOTAsIDkyLAorCQk5MywgOTUsIDk3LCA5OCwgMTAwLCAxMDIsIDEwNCwgMTA2LCAxMDgsIDExMCwKKwkJMTEyLCAxMTQsIDExNiwgMTE4LCAxMjAsIDEyMiwgMTI0LCAxMjcsIDEyOSwgMTMxLAorCQkxMzQsIDEzNiwgMTM5LCAxNDEsIDE0NCwgMTQ2LCAxNDksIDE1MiwgMTU0LCAxNTcsCisJCTE2MCwgMTYzLCAxNjYsIDE2OSwgMTcyLCAxNzUsIDE3OCwgMTgxLCAxODUsIDE4OCwKKwkJMTkyCisJfQorfTsKKworLyogTVBFRyBibGFuayBmcmFtZSBnZW5lcmF0aW9uIHRhYmxlcyAqLworCitlbnVtIG1wZWdfZnJhbWVfdHlwZSB7CisJUEZSQU1FLAorCUJGUkFNRV9QUkUsCisJQkZSQU1FX1BPU1QsCisJQkZSQU1FX0JJRElSLAorCUJGUkFNRV9FTVBUWQorfTsKKworc3RhdGljIGNvbnN0IHUzMiBhZGRyaW5jdGFiWzMzXVsyXSA9IHsKKwl7IDB4MDEsIDEgfSwJeyAweDAzLCAzIH0sCXsgMHgwMiwgMyB9LAl7IDB4MDMsIDQgfSwKKwl7IDB4MDIsIDQgfSwJeyAweDAzLCA1IH0sCXsgMHgwMiwgNSB9LAl7IDB4MDcsIDcgfSwKKwl7IDB4MDYsIDcgfSwJeyAweDBiLCA4IH0sCXsgMHgwYSwgOCB9LAl7IDB4MDksIDggfSwKKwl7IDB4MDgsIDggfSwJeyAweDA3LCA4IH0sCXsgMHgwNiwgOCB9LAl7IDB4MTcsIDEwIH0sCisJeyAweDE2LCAxMCB9LAl7IDB4MTUsIDEwIH0sCXsgMHgxNCwgMTAgfSwJeyAweDEzLCAxMCB9LAorCXsgMHgxMiwgMTAgfSwJeyAweDIzLCAxMSB9LAl7IDB4MjIsIDExIH0sCXsgMHgyMSwgMTEgfSwKKwl7IDB4MjAsIDExIH0sCXsgMHgxZiwgMTEgfSwJeyAweDFlLCAxMSB9LAl7IDB4MWQsIDExIH0sCisJeyAweDFjLCAxMSB9LAl7IDB4MWIsIDExIH0sCXsgMHgxYSwgMTEgfSwJeyAweDE5LCAxMSB9LAorCXsgMHgxOCwgMTEgfQorfTsKKworLyogU3RhbmRhcmQgSlBFRyB0YWJsZXMgKi8KKworc3RhdGljIGNvbnN0IHU4IGRlZmF1bHRfaW50cmFfcXVhbnRfdGFibGVbXSA9IHsKKwkgOCwgMTYsIDE5LCAyMiwgMjYsIDI3LCAyOSwgMzQsCisJMTYsIDE2LCAyMiwgMjQsIDI3LCAyOSwgMzQsIDM3LAorCTE5LCAyMiwgMjYsIDI3LCAyOSwgMzQsIDM0LCAzOCwKKwkyMiwgMjIsIDI2LCAyNywgMjksIDM0LCAzNywgNDAsCisJMjIsIDI2LCAyNywgMjksIDMyLCAzNSwgNDAsIDQ4LAorCTI2LCAyNywgMjksIDMyLCAzNSwgNDAsIDQ4LCA1OCwKKwkyNiwgMjcsIDI5LCAzNCwgMzgsIDQ2LCA1NiwgNjksCisJMjcsIDI5LCAzNSwgMzgsIDQ2LCA1NiwgNjksIDgzCit9OworCitzdGF0aWMgY29uc3QgdTggYml0c19kY19sdW1pbmFuY2VbXSA9IHsKKwkwLCAwLCAxLCA1LCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwCit9OworCitzdGF0aWMgY29uc3QgdTggdmFsX2RjX2x1bWluYW5jZVtdID0geworCTAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMQorfTsKKworc3RhdGljIGNvbnN0IHU4IGJpdHNfZGNfY2hyb21pbmFuY2VbXSA9IHsKKwkwLCAwLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwCit9OworCitzdGF0aWMgY29uc3QgdTggdmFsX2RjX2Nocm9taW5hbmNlW10gPSB7CisJMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExCit9OworCitzdGF0aWMgY29uc3QgdTggYml0c19hY19sdW1pbmFuY2VbXSA9IHsKKwkwLCAwLCAyLCAxLCAzLCAzLCAyLCA0LCAzLCA1LCA1LCA0LCA0LCAwLCAwLCAxLCAweDdkCit9OworCitzdGF0aWMgY29uc3QgdTggdmFsX2FjX2x1bWluYW5jZVtdID0geworCTB4MDEsIDB4MDIsIDB4MDMsIDB4MDAsIDB4MDQsIDB4MTEsIDB4MDUsIDB4MTIsCisJMHgyMSwgMHgzMSwgMHg0MSwgMHgwNiwgMHgxMywgMHg1MSwgMHg2MSwgMHgwNywKKwkweDIyLCAweDcxLCAweDE0LCAweDMyLCAweDgxLCAweDkxLCAweGExLCAweDA4LAorCTB4MjMsIDB4NDIsIDB4YjEsIDB4YzEsIDB4MTUsIDB4NTIsIDB4ZDEsIDB4ZjAsCisJMHgyNCwgMHgzMywgMHg2MiwgMHg3MiwgMHg4MiwgMHgwOSwgMHgwYSwgMHgxNiwKKwkweDE3LCAweDE4LCAweDE5LCAweDFhLCAweDI1LCAweDI2LCAweDI3LCAweDI4LAorCTB4MjksIDB4MmEsIDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksCisJMHgzYSwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwgMHg0OSwKKwkweDRhLCAweDUzLCAweDU0LCAweDU1LCAweDU2LCAweDU3LCAweDU4LCAweDU5LAorCTB4NWEsIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsIDB4NjgsIDB4NjksCisJMHg2YSwgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NywgMHg3OCwgMHg3OSwKKwkweDdhLCAweDgzLCAweDg0LCAweDg1LCAweDg2LCAweDg3LCAweDg4LCAweDg5LAorCTB4OGEsIDB4OTIsIDB4OTMsIDB4OTQsIDB4OTUsIDB4OTYsIDB4OTcsIDB4OTgsCisJMHg5OSwgMHg5YSwgMHhhMiwgMHhhMywgMHhhNCwgMHhhNSwgMHhhNiwgMHhhNywKKwkweGE4LCAweGE5LCAweGFhLCAweGIyLCAweGIzLCAweGI0LCAweGI1LCAweGI2LAorCTB4YjcsIDB4YjgsIDB4YjksIDB4YmEsIDB4YzIsIDB4YzMsIDB4YzQsIDB4YzUsCisJMHhjNiwgMHhjNywgMHhjOCwgMHhjOSwgMHhjYSwgMHhkMiwgMHhkMywgMHhkNCwKKwkweGQ1LCAweGQ2LCAweGQ3LCAweGQ4LCAweGQ5LCAweGRhLCAweGUxLCAweGUyLAorCTB4ZTMsIDB4ZTQsIDB4ZTUsIDB4ZTYsIDB4ZTcsIDB4ZTgsIDB4ZTksIDB4ZWEsCisJMHhmMSwgMHhmMiwgMHhmMywgMHhmNCwgMHhmNSwgMHhmNiwgMHhmNywgMHhmOCwKKwkweGY5LCAweGZhCit9OworCitzdGF0aWMgY29uc3QgdTggYml0c19hY19jaHJvbWluYW5jZVtdID0geworCTAsIDAsIDIsIDEsIDIsIDQsIDQsIDMsIDQsIDcsIDUsIDQsIDQsIDAsIDEsIDIsIDB4NzcKK307CisKK3N0YXRpYyBjb25zdCB1OCB2YWxfYWNfY2hyb21pbmFuY2VbXSA9IHsKKwkweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDExLCAweDA0LCAweDA1LCAweDIxLAorCTB4MzEsIDB4MDYsIDB4MTIsIDB4NDEsIDB4NTEsIDB4MDcsIDB4NjEsIDB4NzEsCisJMHgxMywgMHgyMiwgMHgzMiwgMHg4MSwgMHgwOCwgMHgxNCwgMHg0MiwgMHg5MSwKKwkweGExLCAweGIxLCAweGMxLCAweDA5LCAweDIzLCAweDMzLCAweDUyLCAweGYwLAorCTB4MTUsIDB4NjIsIDB4NzIsIDB4ZDEsIDB4MGEsIDB4MTYsIDB4MjQsIDB4MzQsCisJMHhlMSwgMHgyNSwgMHhmMSwgMHgxNywgMHgxOCwgMHgxOSwgMHgxYSwgMHgyNiwKKwkweDI3LCAweDI4LCAweDI5LCAweDJhLCAweDM1LCAweDM2LCAweDM3LCAweDM4LAorCTB4MzksIDB4M2EsIDB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsCisJMHg0OSwgMHg0YSwgMHg1MywgMHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwKKwkweDU5LCAweDVhLCAweDYzLCAweDY0LCAweDY1LCAweDY2LCAweDY3LCAweDY4LAorCTB4NjksIDB4NmEsIDB4NzMsIDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4NzgsCisJMHg3OSwgMHg3YSwgMHg4MiwgMHg4MywgMHg4NCwgMHg4NSwgMHg4NiwgMHg4NywKKwkweDg4LCAweDg5LCAweDhhLCAweDkyLCAweDkzLCAweDk0LCAweDk1LCAweDk2LAorCTB4OTcsIDB4OTgsIDB4OTksIDB4OWEsIDB4YTIsIDB4YTMsIDB4YTQsIDB4YTUsCisJMHhhNiwgMHhhNywgMHhhOCwgMHhhOSwgMHhhYSwgMHhiMiwgMHhiMywgMHhiNCwKKwkweGI1LCAweGI2LCAweGI3LCAweGI4LCAweGI5LCAweGJhLCAweGMyLCAweGMzLAorCTB4YzQsIDB4YzUsIDB4YzYsIDB4YzcsIDB4YzgsIDB4YzksIDB4Y2EsIDB4ZDIsCisJMHhkMywgMHhkNCwgMHhkNSwgMHhkNiwgMHhkNywgMHhkOCwgMHhkOSwgMHhkYSwKKwkweGUyLCAweGUzLCAweGU0LCAweGU1LCAweGU2LCAweGU3LCAweGU4LCAweGU5LAorCTB4ZWEsIDB4ZjIsIDB4ZjMsIDB4ZjQsIDB4ZjUsIDB4ZjYsIDB4ZjcsIDB4ZjgsCisJMHhmOSwgMHhmYQorfTsKKworLyogWmlnLXphZyBtYXBwaW5nIGZvciBxdWFudCB0YWJsZQorICoKKyAqIE9LLCBsZXQncyBkbyB0aGlzIG1hcHBpbmcgb24gdGhlIGFjdHVhbCB0YWJsZSBhYm92ZSBzbyBpdCBkb2Vzbid0IGhhdmUKKyAqIHRvIGJlIGRvbmUgb24gdGhlIGZseS4KKyAqLworc3RhdGljIGNvbnN0IGludCB6els2NF0gPSB7CisJMCwgICAxLCAgOCwgMTYsICA5LCAgMiwgIDMsIDEwLCAxNywgMjQsIDMyLCAyNSwgMTgsIDExLCAgNCwgIDUsCisJMTIsIDE5LCAyNiwgMzMsIDQwLCA0OCwgNDEsIDM0LCAyNywgMjAsIDEzLCAgNiwgIDcsIDE0LCAyMSwgMjgsCisJMzUsIDQyLCA0OSwgNTYsIDU3LCA1MCwgNDMsIDM2LCAyOSwgMjIsIDE1LCAyMywgMzAsIDM3LCA0NCwgNTEsCisJNTgsIDU5LCA1MiwgNDUsIDM4LCAzMSwgMzksIDQ2LCA1MywgNjAsIDYxLCA1NCwgNDcsIDU1LCA2MiwgNjMKK307CisKK3N0YXRpYyBpbnQgY29weV9wYWNrYWdlcyh1MTYgKmRlc3QsIHUxNiAqc3JjLCBpbnQgcGtnX2NudCwgaW50IHNwYWNlKQoreworCWludCBpLCBjbnQgPSBwa2dfY250ICogMzI7CisKKwlpZiAoc3BhY2UgPCBjbnQpCisJCXJldHVybiAtMTsKKworCWZvciAoaSA9IDA7IGkgPCBjbnQ7ICsraSkKKwkJZGVzdFtpXSA9IF9fY3B1X3RvX2xlMTYoc3JjW2ldKTsKKworCXJldHVybiBjbnQ7Cit9CisKK3N0YXRpYyBpbnQgbWpwZWdfZnJhbWVfaGVhZGVyKHN0cnVjdCBnbzcwMDcgKmdvLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBxKQoreworCWludCBpLCBwID0gMDsKKworCWJ1ZltwKytdID0gMHhmZjsKKwlidWZbcCsrXSA9IDB4ZDg7CisJYnVmW3ArK10gPSAweGZmOworCWJ1ZltwKytdID0gMHhkYjsKKwlidWZbcCsrXSA9IDA7CisJYnVmW3ArK10gPSAyICsgNjU7CisJYnVmW3ArK10gPSAwOworCWJ1ZltwKytdID0gZGVmYXVsdF9pbnRyYV9xdWFudF90YWJsZVswXTsKKwlmb3IgKGkgPSAxOyBpIDwgNjQ7ICsraSkKKwkJLyogYnVmW3ArK10gPSAoZGVmYXVsdF9pbnRyYV9xdWFudF90YWJsZVtpXSAqIHEpID4+IDM7ICovCisJCWJ1ZltwKytdID0gKGRlZmF1bHRfaW50cmFfcXVhbnRfdGFibGVbenpbaV1dICogcSkgPj4gMzsKKwlidWZbcCsrXSA9IDB4ZmY7CisJYnVmW3ArK10gPSAweGMwOworCWJ1ZltwKytdID0gMDsKKwlidWZbcCsrXSA9IDE3OworCWJ1ZltwKytdID0gODsKKwlidWZbcCsrXSA9IGdvLT5oZWlnaHQgPj4gODsKKwlidWZbcCsrXSA9IGdvLT5oZWlnaHQgJiAweGZmOworCWJ1ZltwKytdID0gZ28tPndpZHRoID4+IDg7CisJYnVmW3ArK10gPSBnby0+d2lkdGggJiAweGZmOworCWJ1ZltwKytdID0gMzsKKwlidWZbcCsrXSA9IDE7CisJYnVmW3ArK10gPSAweDIyOworCWJ1ZltwKytdID0gMDsKKwlidWZbcCsrXSA9IDI7CisJYnVmW3ArK10gPSAweDExOworCWJ1ZltwKytdID0gMDsKKwlidWZbcCsrXSA9IDM7CisJYnVmW3ArK10gPSAweDExOworCWJ1ZltwKytdID0gMDsKKwlidWZbcCsrXSA9IDB4ZmY7CisJYnVmW3ArK10gPSAweGM0OworCWJ1ZltwKytdID0gNDE4ID4+IDg7CisJYnVmW3ArK10gPSA0MTggJiAweGZmOworCWJ1ZltwKytdID0gMHgwMDsKKwltZW1jcHkoYnVmICsgcCwgYml0c19kY19sdW1pbmFuY2UgKyAxLCAxNik7CisJcCArPSAxNjsKKwltZW1jcHkoYnVmICsgcCwgdmFsX2RjX2x1bWluYW5jZSwgc2l6ZW9mKHZhbF9kY19sdW1pbmFuY2UpKTsKKwlwICs9IHNpemVvZih2YWxfZGNfbHVtaW5hbmNlKTsKKwlidWZbcCsrXSA9IDB4MDE7CisJbWVtY3B5KGJ1ZiArIHAsIGJpdHNfZGNfY2hyb21pbmFuY2UgKyAxLCAxNik7CisJcCArPSAxNjsKKwltZW1jcHkoYnVmICsgcCwgdmFsX2RjX2Nocm9taW5hbmNlLCBzaXplb2YodmFsX2RjX2Nocm9taW5hbmNlKSk7CisJcCArPSBzaXplb2YodmFsX2RjX2Nocm9taW5hbmNlKTsKKwlidWZbcCsrXSA9IDB4MTA7CisJbWVtY3B5KGJ1ZiArIHAsIGJpdHNfYWNfbHVtaW5hbmNlICsgMSwgMTYpOworCXAgKz0gMTY7CisJbWVtY3B5KGJ1ZiArIHAsIHZhbF9hY19sdW1pbmFuY2UsIHNpemVvZih2YWxfYWNfbHVtaW5hbmNlKSk7CisJcCArPSBzaXplb2YodmFsX2FjX2x1bWluYW5jZSk7CisJYnVmW3ArK10gPSAweDExOworCW1lbWNweShidWYgKyBwLCBiaXRzX2FjX2Nocm9taW5hbmNlICsgMSwgMTYpOworCXAgKz0gMTY7CisJbWVtY3B5KGJ1ZiArIHAsIHZhbF9hY19jaHJvbWluYW5jZSwgc2l6ZW9mKHZhbF9hY19jaHJvbWluYW5jZSkpOworCXAgKz0gc2l6ZW9mKHZhbF9hY19jaHJvbWluYW5jZSk7CisJYnVmW3ArK10gPSAweGZmOworCWJ1ZltwKytdID0gMHhkYTsKKwlidWZbcCsrXSA9IDA7CisJYnVmW3ArK10gPSAxMjsKKwlidWZbcCsrXSA9IDM7CisJYnVmW3ArK10gPSAxOworCWJ1ZltwKytdID0gMHgwMDsKKwlidWZbcCsrXSA9IDI7CisJYnVmW3ArK10gPSAweDExOworCWJ1ZltwKytdID0gMzsKKwlidWZbcCsrXSA9IDB4MTE7CisJYnVmW3ArK10gPSAwOworCWJ1ZltwKytdID0gNjM7CisJYnVmW3ArK10gPSAwOworCXJldHVybiBwOworfQorCitzdGF0aWMgaW50IGdlbl9tanBlZ2hkcl90b19wYWNrYWdlKHN0cnVjdCBnbzcwMDcgKmdvLCB1MTYgKmNvZGUsIGludCBzcGFjZSkKK3sKKwl1OCAqYnVmOworCXUxNiBtZW0gPSAweDNlMDA7CisJdW5zaWduZWQgaW50IGFkZHIgPSAweDE5OworCWludCBzaXplID0gMCwgaSwgb2ZmID0gMCwgY2h1bms7CisKKwlidWYgPSBrbWFsbG9jKDQwOTYsIEdGUF9LRVJORUwpOworCWlmIChidWYgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogdW5hYmxlIHRvIGFsbG9jYXRlIDQwOTYgYnl0ZXMgZm9yICIKKwkJCQkiZmlybXdhcmUgY29uc3RydWN0aW9uXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwltZW1zZXQoYnVmLCAwLCA0MDk2KTsKKworCWZvciAoaSA9IDE7IGkgPCAzMjsgKytpKSB7CisJCW1qcGVnX2ZyYW1lX2hlYWRlcihnbywgYnVmICsgc2l6ZSwgaSk7CisJCXNpemUgKz0gODA7CisJfQorCWNodW5rID0gbWpwZWdfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBzaXplLCAxKTsKKwltZW1tb3ZlKGJ1ZiArIHNpemUsIGJ1ZiArIHNpemUgKyA4MCwgY2h1bmsgLSA4MCk7CisJc2l6ZSArPSBjaHVuayAtIDgwOworCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKz0gY2h1bmsgKiAyKSB7CisJCWlmIChzcGFjZSAtIG9mZiA8IDMyKSB7CisJCQlvZmYgPSAtMTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWNvZGVbb2ZmICsgMV0gPSBfX2NwdV90b19sZTE2KDB4ODAwMCB8IG1lbSk7CisKKwkJY2h1bmsgPSAyODsKKwkJaWYgKG1lbSArIGNodW5rID4gMHg0MDAwKQorCQkJY2h1bmsgPSAweDQwMDAgLSBtZW07CisJCWlmIChpICsgMiAqIGNodW5rID4gc2l6ZSkKKwkJCWNodW5rID0gKHNpemUgLSBpKSAvIDI7CisKKwkJaWYgKGNodW5rIDwgMjgpIHsKKwkJCWNvZGVbb2ZmXSA9IF9fY3B1X3RvX2xlMTYoMHg0MDAwIHwgY2h1bmspOworCQkJY29kZVtvZmYgKyAzMV0gPSBfX2NwdV90b19sZTE2KGFkZHIrKyk7CisJCQltZW0gPSAweDNlMDA7CisJCX0gZWxzZSB7CisJCQljb2RlW29mZl0gPSBfX2NwdV90b19sZTE2KDB4MTAwMCB8IDI4KTsKKwkJCWNvZGVbb2ZmICsgMzFdID0gMDsKKwkJCW1lbSArPSAyODsKKwkJfQorCisJCW1lbWNweSgmY29kZVtvZmYgKyAyXSwgYnVmICsgaSwgY2h1bmsgKiAyKTsKKwkJb2ZmICs9IDMyOworCX0KK2RvbmU6CisJa2ZyZWUoYnVmKTsKKwlyZXR1cm4gb2ZmOworfQorCitzdGF0aWMgaW50IG1wZWcxX2ZyYW1lX2hlYWRlcihzdHJ1Y3QgZ283MDA3ICpnbywgdW5zaWduZWQgY2hhciAqYnVmLAorCQlpbnQgbW9kdWxvLCBpbnQgcGljdF9zdHJ1Y3QsIGVudW0gbXBlZ19mcmFtZV90eXBlIGZyYW1lKQoreworCWludCBpLCBqLCBtYl9jb2RlLCBtYl9sZW47CisJaW50IHJvd3MgPSBnby0+aW50ZXJsYWNlX2NvZGluZyA/IGdvLT5oZWlnaHQgLyAzMiA6IGdvLT5oZWlnaHQgLyAxNjsKKwlDT0RFX0dFTihjLCBidWYgKyA2KTsKKworCXN3aXRjaCAoZnJhbWUpIHsKKwljYXNlIFBGUkFNRToKKwkJbWJfY29kZSA9IDB4MTsKKwkJbWJfbGVuID0gMzsKKwkJYnJlYWs7CisJY2FzZSBCRlJBTUVfUFJFOgorCQltYl9jb2RlID0gMHgyOworCQltYl9sZW4gPSA0OworCQlicmVhazsKKwljYXNlIEJGUkFNRV9QT1NUOgorCQltYl9jb2RlID0gMHgyOworCQltYl9sZW4gPSAzOworCQlicmVhazsKKwljYXNlIEJGUkFNRV9CSURJUjoKKwkJbWJfY29kZSA9IDB4MjsKKwkJbWJfbGVuID0gMjsKKwkJYnJlYWs7CisJZGVmYXVsdDogLyoga2VlcCB0aGUgY29tcGlsZXIgaGFwcHkgKi8KKwkJbWJfY29kZSA9IG1iX2xlbiA9IDA7CisJCWJyZWFrOworCX0KKworCUNPREVfQUREKGMsIGZyYW1lID09IFBGUkFNRSA/IDB4MiA6IDB4MywgMTMpOworCUNPREVfQUREKGMsIDB4ZmZmZiwgMTYpOworCUNPREVfQUREKGMsIGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiA/IDB4NyA6IDB4NCwgNCk7CisJaWYgKGZyYW1lICE9IFBGUkFNRSkKKwkJQ09ERV9BREQoYywgZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUcyID8gMHg3IDogMHg0LCA0KTsKKwllbHNlCisJCUNPREVfQUREKGMsIDAsIDQpOyAvKiBJcyB0aGlzIHN1cHBvc2VkIHRvIGJlIGhlcmU/PyAqLworCUNPREVfQUREKGMsIDAsIDMpOyAvKiBXaGF0IGlzIHRoaXM/PyAqLworCS8qIEJ5dGUtYWxpZ24gd2l0aCB6ZXJvcyAqLworCWogPSA4IC0gKENPREVfTEVOR1RIKGMpICUgOCk7CisJaWYgKGogIT0gOCkKKwkJQ09ERV9BREQoYywgMCwgaik7CisKKwlpZiAoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUcyKSB7CisJCUNPREVfQUREKGMsIDB4MSwgMjQpOworCQlDT0RFX0FERChjLCAweGI1LCA4KTsKKwkJQ09ERV9BREQoYywgMHg4NDQsIDEyKTsKKwkJQ09ERV9BREQoYywgZnJhbWUgPT0gUEZSQU1FID8gMHhmZiA6IDB4NDQsIDgpOworCQlpZiAoZ28tPmludGVybGFjZV9jb2RpbmcpIHsKKwkJCUNPREVfQUREKGMsIHBpY3Rfc3RydWN0LCA0KTsKKwkJCWlmIChnby0+ZHZkX21vZGUpCisJCQkJQ09ERV9BREQoYywgMHgwMDAsIDExKTsKKwkJCWVsc2UKKwkJCQlDT0RFX0FERChjLCAweDIwMCwgMTEpOworCQl9IGVsc2UgeworCQkJQ09ERV9BREQoYywgMHgzLCA0KTsKKwkJCUNPREVfQUREKGMsIDB4MjBjLCAxMSk7CisJCX0KKwkJLyogQnl0ZS1hbGlnbiB3aXRoIHplcm9zICovCisJCWogPSA4IC0gKENPREVfTEVOR1RIKGMpICUgOCk7CisJCWlmIChqICE9IDgpCisJCQlDT0RFX0FERChjLCAwLCBqKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgcm93czsgKytpKSB7CisJCUNPREVfQUREKGMsIDEsIDI0KTsKKwkJQ09ERV9BREQoYywgaSArIDEsIDgpOworCQlDT0RFX0FERChjLCAweDIsIDYpOworCQlDT0RFX0FERChjLCAweDEsIDEpOworCQlDT0RFX0FERChjLCBtYl9jb2RlLCBtYl9sZW4pOworCQlpZiAoZ28tPmludGVybGFjZV9jb2RpbmcpIHsKKwkJCUNPREVfQUREKGMsIDB4MSwgMik7CisJCQlDT0RFX0FERChjLCBwaWN0X3N0cnVjdCA9PSAxID8gMHgwIDogMHgxLCAxKTsKKwkJfQorCQlpZiAoZnJhbWUgPT0gQkZSQU1FX0JJRElSKSB7CisJCQlDT0RFX0FERChjLCAweDMsIDIpOworCQkJaWYgKGdvLT5pbnRlcmxhY2VfY29kaW5nKQorCQkJCUNPREVfQUREKGMsIHBpY3Rfc3RydWN0ID09IDEgPyAweDAgOiAweDEsIDEpOworCQl9CisJCUNPREVfQUREKGMsIDB4MywgMik7CisJCWZvciAoaiA9IChnby0+d2lkdGggPj4gNCkgLSAyOyBqID49IDMzOyBqIC09IDMzKQorCQkJQ09ERV9BREQoYywgMHg4LCAxMSk7CisJCUNPREVfQUREKGMsIGFkZHJpbmN0YWJbal1bMF0sIGFkZHJpbmN0YWJbal1bMV0pOworCQlDT0RFX0FERChjLCBtYl9jb2RlLCBtYl9sZW4pOworCQlpZiAoZ28tPmludGVybGFjZV9jb2RpbmcpIHsKKwkJCUNPREVfQUREKGMsIDB4MSwgMik7CisJCQlDT0RFX0FERChjLCBwaWN0X3N0cnVjdCA9PSAxID8gMHgwIDogMHgxLCAxKTsKKwkJfQorCQlpZiAoZnJhbWUgPT0gQkZSQU1FX0JJRElSKSB7CisJCQlDT0RFX0FERChjLCAweDMsIDIpOworCQkJaWYgKGdvLT5pbnRlcmxhY2VfY29kaW5nKQorCQkJCUNPREVfQUREKGMsIHBpY3Rfc3RydWN0ID09IDEgPyAweDAgOiAweDEsIDEpOworCQl9CisJCUNPREVfQUREKGMsIDB4MywgMik7CisKKwkJLyogQnl0ZS1hbGlnbiB3aXRoIHplcm9zICovCisJCWogPSA4IC0gKENPREVfTEVOR1RIKGMpICUgOCk7CisJCWlmIChqICE9IDgpCisJCQlDT0RFX0FERChjLCAwLCBqKTsKKwl9CisKKwlpID0gQ09ERV9MRU5HVEgoYykgKyA0ICogODsKKwlidWZbMl0gPSAweDAwOworCWJ1ZlszXSA9IDB4MDA7CisJYnVmWzRdID0gMHgwMTsKKwlidWZbNV0gPSAweDAwOworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IG1wZWcxX3NlcXVlbmNlX2hlYWRlcihzdHJ1Y3QgZ283MDA3ICpnbywgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgZXh0KQoreworCWludCBpLCBhc3BlY3RfcmF0aW8sIHBpY3R1cmVfcmF0ZTsKKwlDT0RFX0dFTihjLCBidWYgKyA2KTsKKworCWlmIChnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzEpIHsKKwkJc3dpdGNoIChnby0+YXNwZWN0X3JhdGlvKSB7CisJCWNhc2UgR083MDA3X1JBVElPXzRfMzoKKwkJCWFzcGVjdF9yYXRpbyA9IGdvLT5zdGFuZGFyZCA9PSBHTzcwMDdfU1REX05UU0MgPyAzIDogMjsKKwkJCWJyZWFrOworCQljYXNlIEdPNzAwN19SQVRJT18xNl85OgorCQkJYXNwZWN0X3JhdGlvID0gZ28tPnN0YW5kYXJkID09IEdPNzAwN19TVERfTlRTQyA/IDUgOiA0OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlhc3BlY3RfcmF0aW8gPSAxOworCQkJYnJlYWs7CisJCX0KKwl9IGVsc2UgeworCQlzd2l0Y2ggKGdvLT5hc3BlY3RfcmF0aW8pIHsKKwkJY2FzZSBHTzcwMDdfUkFUSU9fNF8zOgorCQkJYXNwZWN0X3JhdGlvID0gMjsKKwkJCWJyZWFrOworCQljYXNlIEdPNzAwN19SQVRJT18xNl85OgorCQkJYXNwZWN0X3JhdGlvID0gMzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYXNwZWN0X3JhdGlvID0gMTsKKwkJCWJyZWFrOworCQl9CisJfQorCXN3aXRjaCAoZ28tPnNlbnNvcl9mcmFtZXJhdGUpIHsKKwljYXNlIDI0MDAwOgorCQlwaWN0dXJlX3JhdGUgPSAxOworCQlicmVhazsKKwljYXNlIDI0MDI0OgorCQlwaWN0dXJlX3JhdGUgPSAyOworCQlicmVhazsKKwljYXNlIDI1MDI1OgorCQlwaWN0dXJlX3JhdGUgPSBnby0+aW50ZXJsYWNlX2NvZGluZyA/IDYgOiAzOworCQlicmVhazsKKwljYXNlIDMwMDAwOgorCQlwaWN0dXJlX3JhdGUgPSBnby0+aW50ZXJsYWNlX2NvZGluZyA/IDcgOiA0OworCQlicmVhazsKKwljYXNlIDMwMDMwOgorCQlwaWN0dXJlX3JhdGUgPSBnby0+aW50ZXJsYWNlX2NvZGluZyA/IDggOiA1OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwaWN0dXJlX3JhdGUgPSA1OyAvKiAzMCBmcHMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZGVmYXVsdCAqLworCQlicmVhazsKKwl9CisKKwlDT0RFX0FERChjLCBnby0+d2lkdGgsIDEyKTsKKwlDT0RFX0FERChjLCBnby0+aGVpZ2h0LCAxMik7CisJQ09ERV9BREQoYywgYXNwZWN0X3JhdGlvLCA0KTsKKwlDT0RFX0FERChjLCBwaWN0dXJlX3JhdGUsIDQpOworCUNPREVfQUREKGMsIGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiA/IDIwMDAwIDogMHgzZmZmZiwgMTgpOworCUNPREVfQUREKGMsIDEsIDEpOworCUNPREVfQUREKGMsIGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiA/IDExMiA6IDIwLCAxMCk7CisJQ09ERV9BREQoYywgMCwgMyk7CisKKwkvKiBCeXRlLWFsaWduIHdpdGggemVyb3MgKi8KKwlpID0gOCAtIChDT0RFX0xFTkdUSChjKSAlIDgpOworCWlmIChpICE9IDgpCisJCUNPREVfQUREKGMsIDAsIGkpOworCisJaWYgKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMikgeworCQlDT0RFX0FERChjLCAweDEsIDI0KTsKKwkJQ09ERV9BREQoYywgMHhiNSwgOCk7CisJCUNPREVfQUREKGMsIDB4MTQ4LCAxMik7CisJCWlmIChnby0+aW50ZXJsYWNlX2NvZGluZykKKwkJCUNPREVfQUREKGMsIDB4MjAwMDEsIDIwKTsKKwkJZWxzZQorCQkJQ09ERV9BREQoYywgMHhhMDAwMSwgMjApOworCQlDT0RFX0FERChjLCAwLCAxNik7CisKKwkJLyogQnl0ZS1hbGlnbiB3aXRoIHplcm9zICovCisJCWkgPSA4IC0gKENPREVfTEVOR1RIKGMpICUgOCk7CisJCWlmIChpICE9IDgpCisJCQlDT0RFX0FERChjLCAwLCBpKTsKKworCQlpZiAoZXh0KSB7CisJCQlDT0RFX0FERChjLCAweDEsIDI0KTsKKwkJCUNPREVfQUREKGMsIDB4YjUyLCAxMik7CisJCQlDT0RFX0FERChjLCBnby0+c3RhbmRhcmQgPT0gR083MDA3X1NURF9OVFNDID8gMiA6IDEsIDMpOworCQkJQ09ERV9BREQoYywgMHgxMDUsIDkpOworCQkJQ09ERV9BREQoYywgMHg1MDUsIDE2KTsKKwkJCUNPREVfQUREKGMsIGdvLT53aWR0aCwgMTQpOworCQkJQ09ERV9BREQoYywgMSwgMSk7CisJCQlDT0RFX0FERChjLCBnby0+aGVpZ2h0LCAxNCk7CisKKwkJCS8qIEJ5dGUtYWxpZ24gd2l0aCB6ZXJvcyAqLworCQkJaSA9IDggLSAoQ09ERV9MRU5HVEgoYykgJSA4KTsKKwkJCWlmIChpICE9IDgpCisJCQkJQ09ERV9BREQoYywgMCwgaSk7CisJCX0KKwl9CisKKwlpID0gQ09ERV9MRU5HVEgoYykgKyA0ICogODsKKwlidWZbMF0gPSBpICYgMHhmZjsKKwlidWZbMV0gPSBpID4+IDg7CisJYnVmWzJdID0gMHgwMDsKKwlidWZbM10gPSAweDAwOworCWJ1Zls0XSA9IDB4MDE7CisJYnVmWzVdID0gMHhiMzsKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIGludCBnZW5fbXBlZzFoZHJfdG9fcGFja2FnZShzdHJ1Y3QgZ283MDA3ICpnbywKKwkJCQkJdTE2ICpjb2RlLCBpbnQgc3BhY2UsIGludCAqZnJhbWVsZW4pCit7CisJdTggKmJ1ZjsKKwl1MTYgbWVtID0gMHgzZTAwOworCXVuc2lnbmVkIGludCBhZGRyID0gMHgxOTsKKwlpbnQgaSwgb2ZmID0gMCwgY2h1bms7CisKKwlidWYgPSBrbWFsbG9jKDUxMjAsIEdGUF9LRVJORUwpOworCWlmIChidWYgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogdW5hYmxlIHRvIGFsbG9jYXRlIDUxMjAgYnl0ZXMgZm9yICIKKwkJCQkiZmlybXdhcmUgY29uc3RydWN0aW9uXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwltZW1zZXQoYnVmLCAwLCA1MTIwKTsKKwlmcmFtZWxlblswXSA9IG1wZWcxX2ZyYW1lX2hlYWRlcihnbywgYnVmLCAwLCAxLCBQRlJBTUUpOworCWlmIChnby0+aW50ZXJsYWNlX2NvZGluZykKKwkJZnJhbWVsZW5bMF0gKz0gbXBlZzFfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBmcmFtZWxlblswXSAvIDgsCisJCQkJCQkJMCwgMiwgUEZSQU1FKTsKKwlidWZbMF0gPSBmcmFtZWxlblswXSAmIDB4ZmY7CisJYnVmWzFdID0gZnJhbWVsZW5bMF0gPj4gODsKKwlpID0gMzY4OworCWZyYW1lbGVuWzFdID0gbXBlZzFfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBpLCAwLCAxLCBCRlJBTUVfUFJFKTsKKwlpZiAoZ28tPmludGVybGFjZV9jb2RpbmcpCisJCWZyYW1lbGVuWzFdICs9IG1wZWcxX2ZyYW1lX2hlYWRlcihnbywgYnVmICsgaSArIGZyYW1lbGVuWzFdIC8gOCwKKwkJCQkJCQkwLCAyLCBCRlJBTUVfUFJFKTsKKwlidWZbaV0gPSBmcmFtZWxlblsxXSAmIDB4ZmY7CisJYnVmW2kgKyAxXSA9IGZyYW1lbGVuWzFdID4+IDg7CisJaSArPSAxNjMyOworCWZyYW1lbGVuWzJdID0gbXBlZzFfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBpLCAwLCAxLCBCRlJBTUVfUE9TVCk7CisJaWYgKGdvLT5pbnRlcmxhY2VfY29kaW5nKQorCQlmcmFtZWxlblsyXSArPSBtcGVnMV9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGkgKyBmcmFtZWxlblsyXSAvIDgsCisJCQkJCQkJMCwgMiwgQkZSQU1FX1BPU1QpOworCWJ1ZltpXSA9IGZyYW1lbGVuWzJdICYgMHhmZjsKKwlidWZbaSArIDFdID0gZnJhbWVsZW5bMl0gPj4gODsKKwlpICs9IDE0MzI7CisJZnJhbWVsZW5bM10gPSBtcGVnMV9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGksIDAsIDEsIEJGUkFNRV9CSURJUik7CisJaWYgKGdvLT5pbnRlcmxhY2VfY29kaW5nKQorCQlmcmFtZWxlblszXSArPSBtcGVnMV9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGkgKyBmcmFtZWxlblszXSAvIDgsCisJCQkJCQkJMCwgMiwgQkZSQU1FX0JJRElSKTsKKwlidWZbaV0gPSBmcmFtZWxlblszXSAmIDB4ZmY7CisJYnVmW2kgKyAxXSA9IGZyYW1lbGVuWzNdID4+IDg7CisJaSArPSAxNjMyICsgMTY7CisJbXBlZzFfc2VxdWVuY2VfaGVhZGVyKGdvLCBidWYgKyBpLCAwKTsKKwlpICs9IDQwOworCWZvciAoaSA9IDA7IGkgPCA1MTIwOyBpICs9IGNodW5rICogMikgeworCQlpZiAoc3BhY2UgLSBvZmYgPCAzMikgeworCQkJb2ZmID0gLTE7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQljb2RlW29mZiArIDFdID0gX19jcHVfdG9fbGUxNigweDgwMDAgfCBtZW0pOworCisJCWNodW5rID0gMjg7CisJCWlmIChtZW0gKyBjaHVuayA+IDB4NDAwMCkKKwkJCWNodW5rID0gMHg0MDAwIC0gbWVtOworCQlpZiAoaSArIDIgKiBjaHVuayA+IDUxMjApCisJCQljaHVuayA9ICg1MTIwIC0gaSkgLyAyOworCisJCWlmIChjaHVuayA8IDI4KSB7CisJCQljb2RlW29mZl0gPSBfX2NwdV90b19sZTE2KDB4NDAwMCB8IGNodW5rKTsKKwkJCWNvZGVbb2ZmICsgMzFdID0gX19jcHVfdG9fbGUxNihhZGRyKTsKKwkJCWlmIChtZW0gKyBjaHVuayA9PSAweDQwMDApIHsKKwkJCQltZW0gPSAweDNlMDA7CisJCQkJKythZGRyOworCQkJfQorCQl9IGVsc2UgeworCQkJY29kZVtvZmZdID0gX19jcHVfdG9fbGUxNigweDEwMDAgfCAyOCk7CisJCQljb2RlW29mZiArIDMxXSA9IDA7CisJCQltZW0gKz0gMjg7CisJCX0KKworCQltZW1jcHkoJmNvZGVbb2ZmICsgMl0sIGJ1ZiArIGksIGNodW5rICogMik7CisJCW9mZiArPSAzMjsKKwl9Citkb25lOgorCWtmcmVlKGJ1Zik7CisJcmV0dXJuIG9mZjsKK30KKworc3RhdGljIGludCB2dGlfYml0bGVuKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCXVuc2lnbmVkIGludCBpLCBtYXhfdGltZV9pbmNyID0gZ28tPnNlbnNvcl9mcmFtZXJhdGUgLyBnby0+ZnBzX3NjYWxlOworCisJZm9yIChpID0gMzE7IChtYXhfdGltZV9pbmNyICYgKCgxIDw8IGkpIC0gMSkpID09IG1heF90aW1lX2luY3I7IC0taSk7CisJcmV0dXJuIGkgKyAxOworfQorCitzdGF0aWMgaW50IG1wZWc0X2ZyYW1lX2hlYWRlcihzdHJ1Y3QgZ283MDA3ICpnbywgdW5zaWduZWQgY2hhciAqYnVmLAorCQlpbnQgbW9kdWxvLCBlbnVtIG1wZWdfZnJhbWVfdHlwZSBmcmFtZSkKK3sKKwlpbnQgaTsKKwlDT0RFX0dFTihjLCBidWYgKyA2KTsKKwlpbnQgbWJfY291bnQgPSAoZ28tPndpZHRoID4+IDQpICogKGdvLT5oZWlnaHQgPj4gNCk7CisKKwlDT0RFX0FERChjLCBmcmFtZSA9PSBQRlJBTUUgPyAweDEgOiAweDIsIDIpOworCWlmIChtb2R1bG8pCisJCUNPREVfQUREKGMsIDB4MSwgMSk7CisJQ09ERV9BREQoYywgMHgxLCAyKTsKKwlDT0RFX0FERChjLCAwLCB2dGlfYml0bGVuKGdvKSk7CisJQ09ERV9BREQoYywgMHgzLCAyKTsKKwlpZiAoZnJhbWUgPT0gUEZSQU1FKQorCQlDT0RFX0FERChjLCAwLCAxKTsKKwlDT0RFX0FERChjLCAweGMsIDExKTsKKwlpZiAoZnJhbWUgIT0gUEZSQU1FKQorCQlDT0RFX0FERChjLCAweDQsIDMpOworCWlmIChmcmFtZSAhPSBCRlJBTUVfRU1QVFkpIHsKKwkJZm9yIChpID0gMDsgaSA8IG1iX2NvdW50OyArK2kpIHsKKwkJCXN3aXRjaCAoZnJhbWUpIHsKKwkJCWNhc2UgUEZSQU1FOgorCQkJCUNPREVfQUREKGMsIDB4MSwgMSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEJGUkFNRV9QUkU6CisJCQkJQ09ERV9BREQoYywgMHg0NywgOCk7CisJCQkJYnJlYWs7CisJCQljYXNlIEJGUkFNRV9QT1NUOgorCQkJCUNPREVfQUREKGMsIDB4MjcsIDcpOworCQkJCWJyZWFrOworCQkJY2FzZSBCRlJBTUVfQklESVI6CisJCQkJQ09ERV9BREQoYywgMHg1ZiwgOCk7CisJCQkJYnJlYWs7CisJCQljYXNlIEJGUkFNRV9FTVBUWTogLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJLyogQnl0ZS1hbGlnbiB3aXRoIGEgemVybyBmb2xsb3dlZCBieSBvbmVzICovCisJaSA9IDggLSAoQ09ERV9MRU5HVEgoYykgJSA4KTsKKwlDT0RFX0FERChjLCAwLCAxKTsKKwlDT0RFX0FERChjLCAoMSA8PCAoaSAtIDEpKSAtIDEsIGkgLSAxKTsKKworCWkgPSBDT0RFX0xFTkdUSChjKSArIDQgKiA4OworCWJ1ZlswXSA9IGkgJiAweGZmOworCWJ1ZlsxXSA9IGkgPj4gODsKKwlidWZbMl0gPSAweDAwOworCWJ1ZlszXSA9IDB4MDA7CisJYnVmWzRdID0gMHgwMTsKKwlidWZbNV0gPSAweGI2OworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IG1wZWc0X3NlcXVlbmNlX2hlYWRlcihzdHJ1Y3QgZ283MDA3ICpnbywgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgZXh0KQoreworCWNvbnN0IHVuc2lnbmVkIGNoYXIgaGVhZFtdID0geyAweDAwLCAweDAwLCAweDAxLCAweGIwLCBnby0+cGFsaSwKKwkJMHgwMCwgMHgwMCwgMHgwMSwgMHhiNSwgMHgwOSwKKwkJMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKwkJMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgfTsKKwlpbnQgaSwgYXNwZWN0X3JhdGlvOworCWludCBmcHMgPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSAvIGdvLT5mcHNfc2NhbGU7CisJQ09ERV9HRU4oYywgYnVmICsgMiArIHNpemVvZihoZWFkKSk7CisKKwlzd2l0Y2ggKGdvLT5hc3BlY3RfcmF0aW8pIHsKKwljYXNlIEdPNzAwN19SQVRJT180XzM6CisJCWFzcGVjdF9yYXRpbyA9IGdvLT5zdGFuZGFyZCA9PSBHTzcwMDdfU1REX05UU0MgPyAzIDogMjsKKwkJYnJlYWs7CisJY2FzZSBHTzcwMDdfUkFUSU9fMTZfOToKKwkJYXNwZWN0X3JhdGlvID0gZ28tPnN0YW5kYXJkID09IEdPNzAwN19TVERfTlRTQyA/IDUgOiA0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlhc3BlY3RfcmF0aW8gPSAxOworCQlicmVhazsKKwl9CisKKwltZW1jcHkoYnVmICsgMiwgaGVhZCwgc2l6ZW9mKGhlYWQpKTsKKwlDT0RFX0FERChjLCAweDE5MSwgMTcpOworCUNPREVfQUREKGMsIGFzcGVjdF9yYXRpbywgNCk7CisJQ09ERV9BREQoYywgMHgxLCA0KTsKKwlDT0RFX0FERChjLCBmcHMsIDE2KTsKKwlDT0RFX0FERChjLCAweDMsIDIpOworCUNPREVfQUREKGMsIDEwMDEsIHZ0aV9iaXRsZW4oZ28pKTsKKwlDT0RFX0FERChjLCAxLCAxKTsKKwlDT0RFX0FERChjLCBnby0+d2lkdGgsIDEzKTsKKwlDT0RFX0FERChjLCAxLCAxKTsKKwlDT0RFX0FERChjLCBnby0+aGVpZ2h0LCAxMyk7CisJQ09ERV9BREQoYywgMHgyODMwLCAxNCk7CisKKwkvKiBCeXRlLWFsaWduICovCisJaSA9IDggLSAoQ09ERV9MRU5HVEgoYykgJSA4KTsKKwlDT0RFX0FERChjLCAwLCAxKTsKKwlDT0RFX0FERChjLCAoMSA8PCAoaSAtIDEpKSAtIDEsIGkgLSAxKTsKKworCWkgPSBDT0RFX0xFTkdUSChjKSArIHNpemVvZihoZWFkKSAqIDg7CisJYnVmWzBdID0gaSAmIDB4ZmY7CisJYnVmWzFdID0gaSA+PiA4OworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IGdlbl9tcGVnNGhkcl90b19wYWNrYWdlKHN0cnVjdCBnbzcwMDcgKmdvLAorCQkJCQl1MTYgKmNvZGUsIGludCBzcGFjZSwgaW50ICpmcmFtZWxlbikKK3sKKwl1OCAqYnVmOworCXUxNiBtZW0gPSAweDNlMDA7CisJdW5zaWduZWQgaW50IGFkZHIgPSAweDE5OworCWludCBpLCBvZmYgPSAwLCBjaHVuazsKKworCWJ1ZiA9IGttYWxsb2MoNTEyMCwgR0ZQX0tFUk5FTCk7CisJaWYgKGJ1ZiA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3OiB1bmFibGUgdG8gYWxsb2NhdGUgNTEyMCBieXRlcyBmb3IgIgorCQkJCSJmaXJtd2FyZSBjb25zdHJ1Y3Rpb25cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCW1lbXNldChidWYsIDAsIDUxMjApOworCWZyYW1lbGVuWzBdID0gbXBlZzRfZnJhbWVfaGVhZGVyKGdvLCBidWYsIDAsIFBGUkFNRSk7CisJaSA9IDM2ODsKKwlmcmFtZWxlblsxXSA9IG1wZWc0X2ZyYW1lX2hlYWRlcihnbywgYnVmICsgaSwgMCwgQkZSQU1FX1BSRSk7CisJaSArPSAxNjMyOworCWZyYW1lbGVuWzJdID0gbXBlZzRfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBpLCAwLCBCRlJBTUVfUE9TVCk7CisJaSArPSAxNDMyOworCWZyYW1lbGVuWzNdID0gbXBlZzRfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBpLCAwLCBCRlJBTUVfQklESVIpOworCWkgKz0gMTYzMjsKKwltcGVnNF9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGksIDAsIEJGUkFNRV9FTVBUWSk7CisJaSArPSAxNjsKKwltcGVnNF9zZXF1ZW5jZV9oZWFkZXIoZ28sIGJ1ZiArIGksIDApOworCWkgKz0gNDA7CisJZm9yIChpID0gMDsgaSA8IDUxMjA7IGkgKz0gY2h1bmsgKiAyKSB7CisJCWlmIChzcGFjZSAtIG9mZiA8IDMyKSB7CisJCQlvZmYgPSAtMTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWNvZGVbb2ZmICsgMV0gPSBfX2NwdV90b19sZTE2KDB4ODAwMCB8IG1lbSk7CisKKwkJY2h1bmsgPSAyODsKKwkJaWYgKG1lbSArIGNodW5rID4gMHg0MDAwKQorCQkJY2h1bmsgPSAweDQwMDAgLSBtZW07CisJCWlmIChpICsgMiAqIGNodW5rID4gNTEyMCkKKwkJCWNodW5rID0gKDUxMjAgLSBpKSAvIDI7CisKKwkJaWYgKGNodW5rIDwgMjgpIHsKKwkJCWNvZGVbb2ZmXSA9IF9fY3B1X3RvX2xlMTYoMHg0MDAwIHwgY2h1bmspOworCQkJY29kZVtvZmYgKyAzMV0gPSBfX2NwdV90b19sZTE2KGFkZHIpOworCQkJaWYgKG1lbSArIGNodW5rID09IDB4NDAwMCkgeworCQkJCW1lbSA9IDB4M2UwMDsKKwkJCQkrK2FkZHI7CisJCQl9CisJCX0gZWxzZSB7CisJCQljb2RlW29mZl0gPSBfX2NwdV90b19sZTE2KDB4MTAwMCB8IDI4KTsKKwkJCWNvZGVbb2ZmICsgMzFdID0gMDsKKwkJCW1lbSArPSAyODsKKwkJfQorCisJCW1lbWNweSgmY29kZVtvZmYgKyAyXSwgYnVmICsgaSwgY2h1bmsgKiAyKTsKKwkJb2ZmICs9IDMyOworCX0KKwltZW0gPSAweDNlMDA7CisJYWRkciA9IGdvLT5pcGIgPyAweDE0ZjkgOiAweDBhZjk7CisJbWVtc2V0KGJ1ZiwgMCwgNTEyMCk7CisJZnJhbWVsZW5bNF0gPSBtcGVnNF9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiwgMSwgUEZSQU1FKTsKKwlpID0gMzY4OworCWZyYW1lbGVuWzVdID0gbXBlZzRfZnJhbWVfaGVhZGVyKGdvLCBidWYgKyBpLCAxLCBCRlJBTUVfUFJFKTsKKwlpICs9IDE2MzI7CisJZnJhbWVsZW5bNl0gPSBtcGVnNF9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGksIDEsIEJGUkFNRV9QT1NUKTsKKwlpICs9IDE0MzI7CisJZnJhbWVsZW5bN10gPSBtcGVnNF9mcmFtZV9oZWFkZXIoZ28sIGJ1ZiArIGksIDEsIEJGUkFNRV9CSURJUik7CisJaSArPSAxNjMyOworCW1wZWc0X2ZyYW1lX2hlYWRlcihnbywgYnVmICsgaSwgMSwgQkZSQU1FX0VNUFRZKTsKKwlpICs9IDE2OworCWZvciAoaSA9IDA7IGkgPCA1MTIwOyBpICs9IGNodW5rICogMikgeworCQlpZiAoc3BhY2UgLSBvZmYgPCAzMikgeworCQkJb2ZmID0gLTE7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQljb2RlW29mZiArIDFdID0gX19jcHVfdG9fbGUxNigweDgwMDAgfCBtZW0pOworCisJCWNodW5rID0gMjg7CisJCWlmIChtZW0gKyBjaHVuayA+IDB4NDAwMCkKKwkJCWNodW5rID0gMHg0MDAwIC0gbWVtOworCQlpZiAoaSArIDIgKiBjaHVuayA+IDUxMjApCisJCQljaHVuayA9ICg1MTIwIC0gaSkgLyAyOworCisJCWlmIChjaHVuayA8IDI4KSB7CisJCQljb2RlW29mZl0gPSBfX2NwdV90b19sZTE2KDB4NDAwMCB8IGNodW5rKTsKKwkJCWNvZGVbb2ZmICsgMzFdID0gX19jcHVfdG9fbGUxNihhZGRyKTsKKwkJCWlmIChtZW0gKyBjaHVuayA9PSAweDQwMDApIHsKKwkJCQltZW0gPSAweDNlMDA7CisJCQkJKythZGRyOworCQkJfQorCQl9IGVsc2UgeworCQkJY29kZVtvZmZdID0gX19jcHVfdG9fbGUxNigweDEwMDAgfCAyOCk7CisJCQljb2RlW29mZiArIDMxXSA9IDA7CisJCQltZW0gKz0gMjg7CisJCX0KKworCQltZW1jcHkoJmNvZGVbb2ZmICsgMl0sIGJ1ZiArIGksIGNodW5rICogMik7CisJCW9mZiArPSAzMjsKKwl9Citkb25lOgorCWtmcmVlKGJ1Zik7CisJcmV0dXJuIG9mZjsKK30KKworc3RhdGljIGludCBicmN0cmxfdG9fcGFja2FnZShzdHJ1Y3QgZ283MDA3ICpnbywKKwkJCQkJdTE2ICpjb2RlLCBpbnQgc3BhY2UsIGludCAqZnJhbWVsZW4pCit7CisJaW50IGNvbnZlcmdlX3NwZWVkID0gMDsKKwlpbnQgbGFtYmRhID0gKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NSlBFRyB8fCBnby0+ZHZkX21vZGUpID8KKwkJCQkxMDAgOiAwOworCWludCBwZWFrX3JhdGUgPSA2ICogZ28tPmJpdHJhdGUgLyA1OworCWludCB2YnZfYnVmZmVyID0gZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01KUEVHID8KKwkJCQlnby0+Yml0cmF0ZSA6CisJCQkJKGdvLT5kdmRfbW9kZSA/IDkwMDAwMCA6IHBlYWtfcmF0ZSk7CisJaW50IGZwcyA9IGdvLT5zZW5zb3JfZnJhbWVyYXRlIC8gZ28tPmZwc19zY2FsZTsKKwlpbnQgcSA9IDA7CisJLyogQml6YXJyZSBtYXRoIGJlbG93IGRlcGVuZHMgb24gcm91bmRpbmcgZXJyb3JzIGluIGRpdmlzaW9uICovCisJdTMyIHNnb3BfZXhwdF9hZGRyID0gZ28tPmJpdHJhdGUgLyAzMiAqIChnby0+aXBiID8gMyA6IDEpICogMTAwMSAvIGZwczsKKwl1MzIgc2dvcF9wZWFrX2FkZHIgPSBwZWFrX3JhdGUgLyAzMiAqIDEwMDEgLyBmcHM7CisJdTMyIHRvdGFsX2V4cHRfYWRkciA9IGdvLT5iaXRyYXRlIC8gMzIgKiAxMDAwIC8gZnBzICogKGZwcyAvIDEwMDApOworCXUzMiB2YnZfYWxlcnRfYWRkciA9IHZidl9idWZmZXIgKiAzIC8gKDQgKiAzMik7CisJdTMyIGNwbHhbXSA9IHsKKwkJcSA+IDAgPyBzZ29wX2V4cHRfYWRkciAqIHEgOgorCQkJMiAqIGdvLT53aWR0aCAqIGdvLT5oZWlnaHQgKiAoZ28tPmlwYiA/IDYgOiA0KSAvIDMyLAorCQlxID4gMCA/IHNnb3BfZXhwdF9hZGRyICogcSA6CisJCQkyICogZ28tPndpZHRoICogZ28tPmhlaWdodCAqIChnby0+aXBiID8gNiA6IDQpIC8gMzIsCisJCXEgPiAwID8gc2dvcF9leHB0X2FkZHIgKiBxIDoKKwkJCTIgKiBnby0+d2lkdGggKiBnby0+aGVpZ2h0ICogKGdvLT5pcGIgPyA2IDogNCkgLyAzMiwKKwkJcSA+IDAgPyBzZ29wX2V4cHRfYWRkciAqIHEgOgorCQkJMiAqIGdvLT53aWR0aCAqIGdvLT5oZWlnaHQgKiAoZ28tPmlwYiA/IDYgOiA0KSAvIDMyLAorCX07CisJdTMyIGNhbGNfcSA9IHEgPiAwID8gcSA6IGNwbHhbMF0gLyBzZ29wX2V4cHRfYWRkcjsKKwl1MTYgcGFja1tdID0geworCQkweDIwMGUsCQkweDAwMDAsCisJCTB4QkYyMCwJCWdvLT5pcGIgPyBjb252ZXJnZV9zcGVlZF9pcGJbY29udmVyZ2Vfc3BlZWRdCisJCQkJCTogY29udmVyZ2Vfc3BlZWRfaXBbY29udmVyZ2Vfc3BlZWRdLAorCQkweEJGMjEsCQlnby0+aXBiID8gMiA6IDAsCisJCTB4QkYyMiwJCWdvLT5pcGIgPyBMQU1CREFfdGFibGVbMF1bbGFtYmRhIC8gMiArIDUwXQorCQkJCQk6IDMyNzY3LAorCQkweEJGMjMsCQlnby0+aXBiID8gTEFNQkRBX3RhYmxlWzFdW2xhbWJkYV0gOiAzMjc2NywKKwkJMHhCRjI0LAkJMzI3NjcsCisJCTB4QkYyNSwJCWxhbWJkYSA+IDk5ID8gMzI3NjcgOiBMQU1CREFfdGFibGVbM11bbGFtYmRhXSwKKwkJMHhCRjI2LAkJc2dvcF9leHB0X2FkZHIgJiAweDAwMDBGRkZGLAorCQkweEJGMjcsCQlzZ29wX2V4cHRfYWRkciA+PiAxNiwKKwkJMHhCRjI4LAkJc2dvcF9wZWFrX2FkZHIgJiAweDAwMDBGRkZGLAorCQkweEJGMjksCQlzZ29wX3BlYWtfYWRkciA+PiAxNiwKKwkJMHhCRjJBLAkJdmJ2X2FsZXJ0X2FkZHIgJiAweDAwMDBGRkZGLAorCQkweEJGMkIsCQl2YnZfYWxlcnRfYWRkciA+PiAxNiwKKwkJMHhCRjJDLAkJMCwKKwkJMHhCRjJELAkJMCwKKwkJMCwJCTAsCisKKwkJMHgyMDBlLAkJMHgwMDAwLAorCQkweEJGMkUsCQl2YnZfYWxlcnRfYWRkciAmIDB4MDAwMEZGRkYsCisJCTB4QkYyRiwJCXZidl9hbGVydF9hZGRyID4+IDE2LAorCQkweEJGMzAsCQljcGx4WzBdICYgMHgwMDAwRkZGRiwKKwkJMHhCRjMxLAkJY3BseFswXSA+PiAxNiwKKwkJMHhCRjMyLAkJY3BseFsxXSAmIDB4MDAwMEZGRkYsCisJCTB4QkYzMywJCWNwbHhbMV0gPj4gMTYsCisJCTB4QkYzNCwJCWNwbHhbMl0gJiAweDAwMDBGRkZGLAorCQkweEJGMzUsCQljcGx4WzJdID4+IDE2LAorCQkweEJGMzYsCQljcGx4WzNdICYgMHgwMDAwRkZGRiwKKwkJMHhCRjM3LAkJY3BseFszXSA+PiAxNiwKKwkJMHhCRjM4LAkJMCwKKwkJMHhCRjM5LAkJMCwKKwkJMHhCRjNBLAkJdG90YWxfZXhwdF9hZGRyICYgMHgwMDAwRkZGRiwKKwkJMHhCRjNCLAkJdG90YWxfZXhwdF9hZGRyID4+IDE2LAorCQkwLAkJMCwKKworCQkweDIwMGUsCQkweDAwMDAsCisJCTB4QkYzQywJCXRvdGFsX2V4cHRfYWRkciAmIDB4MDAwMEZGRkYsCisJCTB4QkYzRCwJCXRvdGFsX2V4cHRfYWRkciA+PiAxNiwKKwkJMHhCRjNFLAkJMCwKKwkJMHhCRjNGLAkJMCwKKwkJMHhCRjQ4LAkJMCwKKwkJMHhCRjQ5LAkJMCwKKwkJMHhCRjRBLAkJY2FsY19xIDwgNCA/IDQgOiAoY2FsY19xID4gMTI0ID8gMTI0IDogY2FsY19xKSwKKwkJMHhCRjRCLAkJNCwKKwkJMHhCRjRDLAkJMCwKKwkJMHhCRjRELAkJMCwKKwkJMHhCRjRFLAkJMCwKKwkJMHhCRjRGLAkJMCwKKwkJMHhCRjUwLAkJMCwKKwkJMHhCRjUxLAkJMCwKKwkJMCwJCTAsCisKKwkJMHgyMDBlLAkJMHgwMDAwLAorCQkweEJGNDAsCQlzZ29wX2V4cHRfYWRkciAmIDB4MDAwMEZGRkYsCisJCTB4QkY0MSwJCXNnb3BfZXhwdF9hZGRyID4+IDE2LAorCQkweEJGNDIsCQkwLAorCQkweEJGNDMsCQkwLAorCQkweEJGNDQsCQkwLAorCQkweEJGNDUsCQkwLAorCQkweEJGNDYsCQkoZ28tPndpZHRoID4+IDQpICogKGdvLT5oZWlnaHQgPj4gNCksCisJCTB4QkY0NywJCTAsCisJCTB4QkY2NCwJCTAsCisJCTB4QkY2NSwJCTAsCisJCTB4QkYxOCwJCWZyYW1lbGVuWzRdLAorCQkweEJGMTksCQlmcmFtZWxlbls1XSwKKwkJMHhCRjFBLAkJZnJhbWVsZW5bNl0sCisJCTB4QkYxQiwJCWZyYW1lbGVuWzddLAorCQkwLAkJMCwKKworI2lmIDAgLyogUmVtb3ZlIG9uY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCBtYXRjaGluZyAqLworCQkweDIwMGUsCQkweDAwMDAsCisJCTB4QkY1NiwJCTQsCisJCTB4QkY1NywJCTAsCisJCTB4QkY1OCwJCTUsCisJCTB4QkY1OSwJCTAsCisJCTB4QkY1QSwJCTYsCisJCTB4QkY1QiwJCTAsCisJCTB4QkY1QywJCTgsCisJCTB4QkY1RCwJCTAsCisJCTB4QkY1RSwJCTEsCisJCTB4QkY1RiwJCTAsCisJCTB4QkY2MCwJCTEsCisJCTB4QkY2MSwJCTAsCisJCTB4QkY2MiwJCTAsCisJCTB4QkY2MywJCTAsCisJCTAsCQkwLAorI2Vsc2UKKwkJMHgyMDA4LAkJMHgwMDAwLAorCQkweEJGNTYsCQk0LAorCQkweEJGNTcsCQkwLAorCQkweEJGNTgsCQk1LAorCQkweEJGNTksCQkwLAorCQkweEJGNUEsCQk2LAorCQkweEJGNUIsCQkwLAorCQkweEJGNUMsCQk4LAorCQkweEJGNUQsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKyNlbmRpZgorCisJCTB4MjAwZSwJCTB4MDAwMCwKKwkJMHhCRjEwLAkJMCwKKwkJMHhCRjExLAkJMCwKKwkJMHhCRjEyLAkJMCwKKwkJMHhCRjEzLAkJMCwKKwkJMHhCRjE0LAkJMCwKKwkJMHhCRjE1LAkJMCwKKwkJMHhCRjE2LAkJMCwKKwkJMHhCRjE3LAkJMCwKKwkJMHhCRjdFLAkJMCwKKwkJMHhCRjdGLAkJMSwKKwkJMHhCRjUyLAkJZnJhbWVsZW5bMF0sCisJCTB4QkY1MywJCWZyYW1lbGVuWzFdLAorCQkweEJGNTQsCQlmcmFtZWxlblsyXSwKKwkJMHhCRjU1LAkJZnJhbWVsZW5bM10sCisJCTAsCQkwLAorCX07CisKKwlyZXR1cm4gY29weV9wYWNrYWdlcyhjb2RlLCBwYWNrLCA2LCBzcGFjZSk7Cit9CisKK3N0YXRpYyBpbnQgY29uZmlnX3BhY2thZ2Uoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiAqY29kZSwgaW50IHNwYWNlKQoreworCWludCBmcHMgPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSAvIGdvLT5mcHNfc2NhbGUgLyAxMDAwOworCWludCByb3dzID0gZ28tPmludGVybGFjZV9jb2RpbmcgPyBnby0+aGVpZ2h0IC8gMzIgOiBnby0+aGVpZ2h0IC8gMTY7CisJaW50IGJyY193aW5kb3dfc2l6ZSA9IGZwczsKKwlpbnQgcV9taW4gPSAyLCBxX21heCA9IDMxOworCWludCBUSEFDQ29lZmZTZXQwID0gMDsKKwl1MTYgcGFja1tdID0geworCQkweDIwMGUsCQkweDAwMDAsCisJCTB4YzAwMiwJCTB4MTRiNCwKKwkJMHhjMDAzLAkJMHgyOGI0LAorCQkweGMwMDQsCQkweDNjNWEsCisJCTB4ZGMwNSwJCTB4MmE3NywKKwkJMHhjNmMzLAkJZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUc0ID8gMCA6CisJCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9IMjYzID8gMCA6IDEpLAorCQkweGM2ODAsCQlnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzQgPyAweGYxIDoKKwkJCQkoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX0gyNjMgPyAweDYxIDoKKwkJCQkJCQkJCTB4ZDMpLAorCQkweGM3ODAsCQkweDAxNDAsCisJCTB4ZTAwOSwJCTB4MDAwMSwKKwkJMHhjNjBmLAkJMHgwMDA4LAorCQkweGQ0ZmYsCQkweDAwMDIsCisJCTB4ZTQwMywJCTIzNDAsCisJCTB4ZTQwNiwJCTc1LAorCQkweGQ0MTEsCQkweDAwMDEsCisJCTB4ZDQxMCwJCTB4YTFkNiwKKwkJMHgwMDAxLAkJMHgyODAxLAorCisJCTB4MjAwZCwJCTB4MDAwMCwKKwkJMHhlNDAyLAkJMHgwMThiLAorCQkweGU0MDEsCQkweDhiMDEsCisJCTB4ZDQ3MiwJCShnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYKKwkJCQkJCQlHTzcwMDdfU0VOU09SX1RWKSAmJgorCQkJCQkJKCFnby0+aW50ZXJsYWNlX2NvZGluZykgPworCQkJCQkweDAxYjAgOiAweDAxNzAsCisJCTB4ZDQ3NSwJCShnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYKKwkJCQkJCQlHTzcwMDdfU0VOU09SX1RWKSAmJgorCQkJCQkJKCFnby0+aW50ZXJsYWNlX2NvZGluZykgPworCQkJCQkweDAwMDggOiAweDAwMDksCisJCTB4YzQwNCwJCWdvLT5pbnRlcmxhY2VfY29kaW5nID8gMHg0NCA6CisJCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHNCA/IDB4MTEgOgorCQkJCShnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzEgPyAweDAyIDoKKwkJCQkoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUcyID8gMHgwNCA6CisJCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9IMjYzICA/IDB4MDggOgorCQkJCQkJCQkgICAgIDB4MjApKSkpLAorCQkweGJmMGEsCQkoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUc0ID8gOCA6CisJCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMSA/IDEgOgorCQkJCShnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzIgPyAyIDoKKwkJCQkoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX0gyNjMgPyA0IDogMTYpKSkpIHwKKwkJCQkoKGdvLT5yZXBlYXRfc2VxaGVhZCA/IDEgOiAwKSA8PCA2KSB8CisJCQkJKChnby0+ZHZkX21vZGUgPyAxIDogMCkgPDwgOSkgfAorCQkJCSgoZ28tPmdvcF9oZWFkZXJfZW5hYmxlID8gMSA6IDApIDw8IDEwKSwKKwkJMHhiZjBiLAkJMCwKKwkJMHhkZDVhLAkJZ28tPmlwYiA/IDB4MTQgOiAweDBhLAorCQkweGJmMGMsCQkwLAorCQkweGJmMGQsCQkwLAorCQkweGM2ODMsCQlUSEFDQ29lZmZTZXQwLAorCQkweGM0MGEsCQkoZ28tPndpZHRoIDw8IDQpIHwgcm93cywKKwkJMHhlMDFhLAkJZ28tPmJvYXJkX2luZm8tPmhwaV9idWZmZXJfY2FwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisKKwkJMHgyMDA4LAkJMCwKKwkJMHhlNDAyLAkJMHg4OCwKKwkJMHhlNDAxLAkJMHg4ZjAxLAorCQkweGJmNmEsCQkwLAorCQkweGJmNmIsCQkwLAorCQkweGJmNmMsCQkwLAorCQkweGJmNmQsCQkwLAorCQkweGJmNmUsCQkwLAorCQkweGJmNmYsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKworCQkweDIwMGUsCQkwLAorCQkweGJmNjYsCQlicmNfd2luZG93X3NpemUsCisJCTB4YmY2NywJCTAsCisJCTB4YmY2OCwJCXFfbWluLAorCQkweGJmNjksCQlxX21heCwKKwkJMHhiZmUwLAkJMCwKKwkJMHhiZmUxLAkJMCwKKwkJMHhiZmUyLAkJMCwKKwkJMHhiZmUzLAkJZ28tPmlwYiA/IDMgOiAxLAorCQkweGMwMzEsCQlnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYKKwkJCQkJR083MDA3X1NFTlNPUl9WQkkgPyAxIDogMCwKKwkJMHhjMDFjLAkJMHgxZiwKKwkJMHhkZDhjLAkJMHgxNSwKKwkJMHhkZDk0LAkJMHgxNSwKKwkJMHhkZDg4LAkJZ28tPmlwYiA/IDB4MTQwMSA6IDB4MGEwMSwKKwkJMHhkZDkwLAkJZ28tPmlwYiA/IDB4MTQwMSA6IDB4MGEwMSwKKwkJMCwJCTAsCisKKwkJMHgyMDBlLAkJMCwKKwkJMHhiZmU0LAkJMCwKKwkJMHhiZmU1LAkJMCwKKwkJMHhiZmU2LAkJMCwKKwkJMHhiZmU3LAkJZnBzIDw8IDgsCisJCTB4YmZlOCwJCTB4M2EwMCwKKwkJMHhiZmU5LAkJMCwKKwkJMHhiZmVhLAkJMCwKKwkJMHhiZmViLAkJMCwKKwkJMHhiZmVjLAkJKGdvLT5pbnRlcmxhY2VfY29kaW5nID8gMSA8PCAxNSA6IDApIHwKKwkJCQkJKGdvLT5tb2RldF9lbmFibGUgPyAweGEgOiAwKSB8CisJCQkJCShnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYKKwkJCQkJCUdPNzAwN19TRU5TT1JfVkJJID8gMSA6IDApLAorCQkweGJmZWQsCQkwLAorCQkweGJmZWUsCQkwLAorCQkweGJmZWYsCQkwLAorCQkweGJmZjAsCQlnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYKKwkJCQkJR083MDA3X1NFTlNPUl9UViA/IDB4ZjA2MCA6IDB4YjA2MCwKKwkJMHhiZmYxLAkJMCwKKwkJMCwJCTAsCisJfTsKKworCXJldHVybiBjb3B5X3BhY2thZ2VzKGNvZGUsIHBhY2ssIDUsIHNwYWNlKTsKK30KKworc3RhdGljIGludCBzZXFoZWFkX3RvX3BhY2thZ2Uoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiAqY29kZSwgaW50IHNwYWNlLAorCWludCAoKnNlcXVlbmNlX2hlYWRlcl9mdW5jKShzdHJ1Y3QgZ283MDA3ICpnbywKKwkJdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgZXh0KSkKK3sKKwlpbnQgdm9wX3RpbWVfaW5jcmVtZW50X2JpdGxlbmd0aCA9IHZ0aV9iaXRsZW4oZ28pOworCWludCBmcHMgPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSAvIGdvLT5mcHNfc2NhbGUgKgorCQkJCQkoZ28tPmludGVybGFjZV9jb2RpbmcgPyAyIDogMSk7CisJdW5zaWduZWQgY2hhciBidWZbNDBdID0geyB9OworCWludCBsZW4gPSBzZXF1ZW5jZV9oZWFkZXJfZnVuYyhnbywgYnVmLCAxKTsKKwl1MTYgcGFja1tdID0geworCQkweDIwMDYsCQkwLAorCQkweGJmMDgsCQlmcHMsCisJCTB4YmYwOSwJCTAsCisJCTB4YmZmMiwJCXZvcF90aW1lX2luY3JlbWVudF9iaXRsZW5ndGgsCisJCTB4YmZmMywJCSgxIDw8IHZvcF90aW1lX2luY3JlbWVudF9iaXRsZW5ndGgpIC0gMSwKKwkJMHhiZmU2LAkJMCwKKwkJMHhiZmU3LAkJKGZwcyAvIDEwMDApIDw8IDgsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisKKwkJMHgyMDA3LAkJMCwKKwkJMHhjODAwLAkJYnVmWzJdIDw8IDggfCBidWZbM10sCisJCTB4YzgwMSwJCWJ1Zls0XSA8PCA4IHwgYnVmWzVdLAorCQkweGM4MDIsCQlidWZbNl0gPDwgOCB8IGJ1Zls3XSwKKwkJMHhjODAzLAkJYnVmWzhdIDw8IDggfCBidWZbOV0sCisJCTB4YzQwNiwJCTY0LAorCQkweGM0MDcsCQlsZW4gLSA2NCwKKwkJMHhjNjFiLAkJMSwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCisJCTB4MjAwZSwJCTAsCisJCTB4YzgwOCwJCWJ1ZlsxMF0gPDwgOCB8IGJ1ZlsxMV0sCisJCTB4YzgwOSwJCWJ1ZlsxMl0gPDwgOCB8IGJ1ZlsxM10sCisJCTB4YzgwYSwJCWJ1ZlsxNF0gPDwgOCB8IGJ1ZlsxNV0sCisJCTB4YzgwYiwJCWJ1ZlsxNl0gPDwgOCB8IGJ1ZlsxN10sCisJCTB4YzgwYywJCWJ1ZlsxOF0gPDwgOCB8IGJ1ZlsxOV0sCisJCTB4YzgwZCwJCWJ1ZlsyMF0gPDwgOCB8IGJ1ZlsyMV0sCisJCTB4YzgwZSwJCWJ1ZlsyMl0gPDwgOCB8IGJ1ZlsyM10sCisJCTB4YzgwZiwJCWJ1ZlsyNF0gPDwgOCB8IGJ1ZlsyNV0sCisJCTB4YzgxMCwJCWJ1ZlsyNl0gPDwgOCB8IGJ1ZlsyN10sCisJCTB4YzgxMSwJCWJ1ZlsyOF0gPDwgOCB8IGJ1ZlsyOV0sCisJCTB4YzgxMiwJCWJ1ZlszMF0gPDwgOCB8IGJ1ZlszMV0sCisJCTB4YzgxMywJCWJ1ZlszMl0gPDwgOCB8IGJ1ZlszM10sCisJCTB4YzgxNCwJCWJ1ZlszNF0gPDwgOCB8IGJ1ZlszNV0sCisJCTB4YzgxNSwJCWJ1ZlszNl0gPDwgOCB8IGJ1ZlszN10sCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJfTsKKworCXJldHVybiBjb3B5X3BhY2thZ2VzKGNvZGUsIHBhY2ssIDMsIHNwYWNlKTsKK30KKworc3RhdGljIGludCByZWxhdGl2ZV9wcmltZShpbnQgYmlnLCBpbnQgbGl0dGxlKQoreworCWludCByZW1haW5kZXI7CisKKwl3aGlsZSAobGl0dGxlICE9IDApIHsKKwkJcmVtYWluZGVyID0gYmlnICUgbGl0dGxlOworCQliaWcgPSBsaXR0bGU7CisJCWxpdHRsZSA9IHJlbWFpbmRlcjsKKwl9CisJcmV0dXJuIGJpZzsKK30KKworc3RhdGljIGludCBhdnN5bmNfdG9fcGFja2FnZShzdHJ1Y3QgZ283MDA3ICpnbywgdTE2ICpjb2RlLCBpbnQgc3BhY2UpCit7CisJaW50IGFyYXRlID0gZ28tPmJvYXJkX2luZm8tPmF1ZGlvX3JhdGUgKiAxMDAxICogZ28tPmZwc19zY2FsZTsKKwlpbnQgcmF0aW8gPSBhcmF0ZSAvIGdvLT5zZW5zb3JfZnJhbWVyYXRlOworCWludCBhZGpyYXRpbyA9IHJhdGlvICogMjE1IC8gMTAwOworCWludCBycHJpbWUgPSByZWxhdGl2ZV9wcmltZShnby0+c2Vuc29yX2ZyYW1lcmF0ZSwKKwkJCQkJYXJhdGUgJSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSk7CisJaW50IGYxID0gKGFyYXRlICUgZ28tPnNlbnNvcl9mcmFtZXJhdGUpIC8gcnByaW1lOworCWludCBmMiA9IChnby0+c2Vuc29yX2ZyYW1lcmF0ZSAtIGFyYXRlICUgZ28tPnNlbnNvcl9mcmFtZXJhdGUpIC8gcnByaW1lOworCXUxNiBwYWNrW10gPSB7CisJCTB4MjAwZSwJCTAsCisJCTB4YmY5OCwJCSh1MTYpKCgtYWRqcmF0aW8pICYgMHhmZmZmKSwKKwkJMHhiZjk5LAkJKHUxNikoKC1hZGpyYXRpbykgPj4gMTYpLAorCQkweGJmOTIsCQkwLAorCQkweGJmOTMsCQkwLAorCQkweGJmZjQsCQlmMSA+IGYyID8gZjEgOiBmMiwKKwkJMHhiZmY1LAkJZjEgPCBmMiA/IGYxIDogZjIsCisJCTB4YmZmNiwJCWYxIDwgZjIgPyByYXRpbyA6IHJhdGlvICsgMSwKKwkJMHhiZmY3LAkJZjEgPiBmMiA/IHJhdGlvIDogcmF0aW8gKyAxLAorCQkweGJmZjgsCQkwLAorCQkweGJmZjksCQkwLAorCQkweGJmZmEsCQlhZGpyYXRpbyAmIDB4ZmZmZiwKKwkJMHhiZmZiLAkJYWRqcmF0aW8gPj4gMTYsCisJCTB4YmY5NCwJCTAsCisJCTB4YmY5NSwJCTAsCisJCTAsCQkwLAorCX07CisKKwlyZXR1cm4gY29weV9wYWNrYWdlcyhjb2RlLCBwYWNrLCAxLCBzcGFjZSk7Cit9CisKK3N0YXRpYyBpbnQgZmluYWxfcGFja2FnZShzdHJ1Y3QgZ283MDA3ICpnbywgdTE2ICpjb2RlLCBpbnQgc3BhY2UpCit7CisJaW50IHJvd3MgPSBnby0+aW50ZXJsYWNlX2NvZGluZyA/IGdvLT5oZWlnaHQgLyAzMiA6IGdvLT5oZWlnaHQgLyAxNjsKKwl1MTYgcGFja1tdID0geworCQkweDgwMDAsCisJCTAsCisJCTAsCisJCTAsCisJCTAsCisJCTAsCisJCTAsCisJCTIsCisJCSgoZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9mbGFncyAmIEdPNzAwN19TRU5TT1JfVFYpICYmCisJCQkJCQkoIWdvLT5pbnRlcmxhY2VfY29kaW5nKSA/CisJCQkJCSgxIDw8IDE0KSB8ICgxIDw8IDkpIDogMCkgfAorCQkJKChnby0+ZW5jb2Rlcl9zdWJzYW1wbGUgPyAxIDogMCkgPDwgOCkgfAorCQkJKGdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfZmxhZ3MgJgorCQkJCUdPNzAwN19TRU5TT1JfQ09ORklHX01BU0spLAorCQkoKGdvLT5lbmNvZGVyX3ZfaGFsdmUgPyAxIDogMCkgPDwgMTQpIHwKKwkJCShnby0+ZW5jb2Rlcl92X2hhbHZlID8gcm93cyA8PCA5IDogcm93cyA8PCA4KSB8CisJCQkoZ28tPmVuY29kZXJfaF9oYWx2ZSA/IDEgPDwgNiA6IDApIHwKKwkJCShnby0+ZW5jb2Rlcl9oX2hhbHZlID8gZ28tPndpZHRoID4+IDMgOiBnby0+d2lkdGggPj4gNCksCisJCSgxIDw8IDE1KSB8IChnby0+ZW5jb2Rlcl92X29mZnNldCA8PCA2KSB8CisJCQkoMSA8PCA3KSB8IChnby0+ZW5jb2Rlcl9oX29mZnNldCA+PiAyKSwKKwkJKDEgPDwgNiksCisJCTAsCisJCTAsCisJCSgoZ28tPmZwc19zY2FsZSAtIDEpIDw8IDgpIHwKKwkJCShnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYgR083MDA3X1NFTlNPUl9UViA/CisJCQkJCQkoMSA8PCA3KSA6IDApIHwKKwkJCTB4NDEsCisJCWdvLT5pcGIgPyAweGQ0YyA6IDB4MzZiLAorCQkocm93cyA8PCA4KSB8IChnby0+d2lkdGggPj4gNCksCisJCWdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHNCA/IDB4MDQwNCA6IDAsCisJCSgxIDw8IDE1KSB8ICgoZ28tPmludGVybGFjZV9jb2RpbmcgPyAxIDogMCkgPDwgMTMpIHwKKwkJCSgoZ28tPmNsb3NlZF9nb3AgPyAxIDogMCkgPDwgMTIpIHwKKwkJCSgoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUc0ID8gMSA6IDApIDw8IDExKSB8CisJCS8qCSgxIDw8IDkpIHwgICAqLworCQkJKChnby0+aXBiID8gMyA6IDApIDw8IDcpIHwKKwkJCSgoZ28tPm1vZGV0X2VuYWJsZSA/IDEgOiAwKSA8PCAyKSB8CisJCQkoKGdvLT5kdmRfbW9kZSA/IDEgOiAwKSA8PCAxKSB8IDEsCisJCShnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzEgPyAweDg5YTAgOgorCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiA/IDB4ODlhMCA6CisJCQkoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01KUEVHID8gMHg4OWEwIDoKKwkJCShnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTVBFRzQgPyAweDg5MjAgOgorCQkJKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9IMjYzID8gMHg4OTIwIDogMCkpKSkpLAorCQlnby0+aXBiID8gMHgxZjE1IDogMHgxZjBiLAorCQlnby0+aXBiID8gMHgwMDE1IDogMHgwMDBiLAorCQlnby0+aXBiID8gMHhhODAwIDogMHg1ODAwLAorCQkweGZmZmYsCisJCTB4MDAyMCArIDB4MDM0YiAqIDAsCisJCTB4MDAyMCArIDB4MDM0YiAqIDEsCisJCTB4MDAyMCArIDB4MDM0YiAqIDIsCisJCTB4MDAyMCArIDB4MDM0YiAqIDMsCisJCTB4MDAyMCArIDB4MDM0YiAqIDQsCisJCTB4MDAyMCArIDB4MDM0YiAqIDUsCisJCWdvLT5pcGIgPyAoZ28tPmdvcF9zaXplIC8gMykgOiBnby0+Z29wX3NpemUsCisJCShnby0+aGVpZ2h0ID4+IDQpICogKGdvLT53aWR0aCA+PiA0KSAqIDExMCAvIDEwMCwKKwl9OworCisJcmV0dXJuIGNvcHlfcGFja2FnZXMoY29kZSwgcGFjaywgMSwgc3BhY2UpOworfQorCitzdGF0aWMgaW50IGF1ZGlvX3RvX3BhY2thZ2Uoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiAqY29kZSwgaW50IHNwYWNlKQoreworCWludCBjbG9ja19jb25maWcgPSAoKGdvLT5ib2FyZF9pbmZvLT5hdWRpb19mbGFncyAmCisJCQkJR083MDA3X0FVRElPX0kyU19NQVNURVIgPyAxIDogMCkgPDwgMTEpIHwKKwkJCSgoZ28tPmJvYXJkX2luZm8tPmF1ZGlvX2ZsYWdzICYKKwkJCQlHTzcwMDdfQVVESU9fT0tJX01PREUgPyAxIDogMCkgPDwgOCkgfAorCQkJKCgoZ28tPmJvYXJkX2luZm8tPmF1ZGlvX2JjbGtfZGl2IC8gNCkgLSAxKSA8PCA0KSB8CisJCQkoZ28tPmJvYXJkX2luZm8tPmF1ZGlvX21haW5fZGl2IC0gMSk7CisJdTE2IHBhY2tbXSA9IHsKKwkJMHgyMDBkLAkJMCwKKwkJMHg5MDAyLAkJMCwKKwkJMHg5MDAyLAkJMCwKKwkJMHg5MDMxLAkJMCwKKwkJMHg5MDMyLAkJMCwKKwkJMHg5MDMzLAkJMCwKKwkJMHg5MDM0LAkJMCwKKwkJMHg5MDM1LAkJMCwKKwkJMHg5MDM2LAkJMCwKKwkJMHg5MDM3LAkJMCwKKwkJMHg5MDQwLAkJMCwKKwkJMHg5MDAwLAkJY2xvY2tfY29uZmlnLAorCQkweDkwMDEsCQkoZ28tPmJvYXJkX2luZm8tPmF1ZGlvX2ZsYWdzICYgMHhmZmZmKSB8CisJCQkJCSgxIDw8IDkpLAorCQkweDkwMDAsCQkoKGdvLT5ib2FyZF9pbmZvLT5hdWRpb19mbGFncyAmCisJCQkJCQlHTzcwMDdfQVVESU9fSTJTX01BU1RFUiA/CisJCQkJCQkxIDogMCkgPDwgMTApIHwKKwkJCQkJY2xvY2tfY29uZmlnLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTB4MjAwNSwJCTAsCisJCTB4OTA0MSwJCTAsCisJCTB4OTA0MiwJCTI1NiwKKwkJMHg5MDQzLAkJMCwKKwkJMHg5MDQ0LAkJMTYsCisJCTB4OTA0NSwJCTE2LAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwkJMCwJCTAsCisJCTAsCQkwLAorCQkwLAkJMCwKKwl9OworCisJcmV0dXJuIGNvcHlfcGFja2FnZXMoY29kZSwgcGFjaywgMiwgc3BhY2UpOworfQorCitzdGF0aWMgaW50IG1vZGV0X3RvX3BhY2thZ2Uoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiAqY29kZSwgaW50IHNwYWNlKQoreworCWludCByZXQsIG1iLCBpLCBhZGRyLCBjbnQgPSAwOworCXUxNiBwYWNrWzMyXTsKKwl1MTYgdGhyZXNob2xkc1tdID0geworCQkweDIwMGUsCQkwLAorCQkweGJmODIsCQlnby0+bW9kZXRbMF0ucGl4ZWxfdGhyZXNob2xkLAorCQkweGJmODMsCQlnby0+bW9kZXRbMV0ucGl4ZWxfdGhyZXNob2xkLAorCQkweGJmODQsCQlnby0+bW9kZXRbMl0ucGl4ZWxfdGhyZXNob2xkLAorCQkweGJmODUsCQlnby0+bW9kZXRbM10ucGl4ZWxfdGhyZXNob2xkLAorCQkweGJmODYsCQlnby0+bW9kZXRbMF0ubW90aW9uX3RocmVzaG9sZCwKKwkJMHhiZjg3LAkJZ28tPm1vZGV0WzFdLm1vdGlvbl90aHJlc2hvbGQsCisJCTB4YmY4OCwJCWdvLT5tb2RldFsyXS5tb3Rpb25fdGhyZXNob2xkLAorCQkweGJmODksCQlnby0+bW9kZXRbM10ubW90aW9uX3RocmVzaG9sZCwKKwkJMHhiZjhhLAkJZ28tPm1vZGV0WzBdLm1iX3RocmVzaG9sZCwKKwkJMHhiZjhiLAkJZ28tPm1vZGV0WzFdLm1iX3RocmVzaG9sZCwKKwkJMHhiZjhjLAkJZ28tPm1vZGV0WzJdLm1iX3RocmVzaG9sZCwKKwkJMHhiZjhkLAkJZ28tPm1vZGV0WzNdLm1iX3RocmVzaG9sZCwKKwkJMHhiZjhlLAkJMCwKKwkJMHhiZjhmLAkJMCwKKwkJMCwJCTAsCisJfTsKKworCXJldCA9IGNvcHlfcGFja2FnZXMoY29kZSwgdGhyZXNob2xkcywgMSwgc3BhY2UpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gLTE7CisJY250ICs9IHJldDsKKworCWFkZHIgPSAweGJhYzA7CisJbWVtc2V0KHBhY2ssIDAsIDY0KTsKKwlpID0gMDsKKwlmb3IgKG1iID0gMDsgbWIgPCAxNjI0OyArK21iKSB7CisJCXBhY2tbaSAqIDIgKyAzXSA8PD0gMjsKKwkJcGFja1tpICogMiArIDNdIHw9IGdvLT5tb2RldF9tYXBbbWJdOworCQlpZiAobWIgJSA4ICE9IDcpCisJCQljb250aW51ZTsKKwkJcGFja1tpICogMiArIDJdID0gYWRkcisrOworCQkrK2k7CisJCWlmIChpID09IDEwIHx8IG1iID09IDE2MjMpIHsKKwkJCXBhY2tbMF0gPSAweDIwMDAgfCBpOworCQkJcmV0ID0gY29weV9wYWNrYWdlcyhjb2RlICsgY250LCBwYWNrLCAxLCBzcGFjZSAtIGNudCk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gLTE7CisJCQljbnQgKz0gcmV0OworCQkJaSA9IDA7CisJCQltZW1zZXQocGFjaywgMCwgNjQpOworCQl9CisJCXBhY2tbaSAqIDIgKyAzXSA9IDA7CisJfQorCisJbWVtc2V0KHBhY2ssIDAsIDY0KTsKKwlpID0gMDsKKwlmb3IgKGFkZHIgPSAweGJiOTA7IGFkZHIgPCAweGJiZmE7ICsrYWRkcikgeworCQlwYWNrW2kgKiAyICsgMl0gPSBhZGRyOworCQlwYWNrW2kgKiAyICsgM10gPSAwOworCQkrK2k7CisJCWlmIChpID09IDEwIHx8IGFkZHIgPT0gMHhiYmY5KSB7CisJCQlwYWNrWzBdID0gMHgyMDAwIHwgaTsKKwkJCXJldCA9IGNvcHlfcGFja2FnZXMoY29kZSArIGNudCwgcGFjaywgMSwgc3BhY2UgLSBjbnQpOworCQkJaWYgKHJldCA8IDApCisJCQkJcmV0dXJuIC0xOworCQkJY250ICs9IHJldDsKKwkJCWkgPSAwOworCQkJbWVtc2V0KHBhY2ssIDAsIDY0KTsKKwkJfQorCX0KKwlyZXR1cm4gY250OworfQorCitzdGF0aWMgaW50IGRvX3NwZWNpYWwoc3RydWN0IGdvNzAwNyAqZ28sIHUxNiB0eXBlLCB1MTYgKmNvZGUsIGludCBzcGFjZSwKKwkJCWludCAqZnJhbWVsZW4pCit7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBTUEVDSUFMX0ZSTV9IRUFEOgorCQlzd2l0Y2ggKGdvLT5mb3JtYXQpIHsKKwkJY2FzZSBHTzcwMDdfRk9STUFUX01KUEVHOgorCQkJcmV0dXJuIGdlbl9tanBlZ2hkcl90b19wYWNrYWdlKGdvLCBjb2RlLCBzcGFjZSk7CisJCWNhc2UgR083MDA3X0ZPUk1BVF9NUEVHMToKKwkJY2FzZSBHTzcwMDdfRk9STUFUX01QRUcyOgorCQkJcmV0dXJuIGdlbl9tcGVnMWhkcl90b19wYWNrYWdlKGdvLCBjb2RlLCBzcGFjZSwKKwkJCQkJCQkJZnJhbWVsZW4pOworCQljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzQ6CisJCQlyZXR1cm4gZ2VuX21wZWc0aGRyX3RvX3BhY2thZ2UoZ28sIGNvZGUsIHNwYWNlLAorCQkJCQkJCQlmcmFtZWxlbik7CisJCX0KKwljYXNlIFNQRUNJQUxfQlJDX0NUUkw6CisJCXJldHVybiBicmN0cmxfdG9fcGFja2FnZShnbywgY29kZSwgc3BhY2UsIGZyYW1lbGVuKTsKKwljYXNlIFNQRUNJQUxfQ09ORklHOgorCQlyZXR1cm4gY29uZmlnX3BhY2thZ2UoZ28sIGNvZGUsIHNwYWNlKTsKKwljYXNlIFNQRUNJQUxfU0VRSEVBRDoKKwkJc3dpdGNoIChnby0+Zm9ybWF0KSB7CisJCWNhc2UgR083MDA3X0ZPUk1BVF9NUEVHMToKKwkJY2FzZSBHTzcwMDdfRk9STUFUX01QRUcyOgorCQkJcmV0dXJuIHNlcWhlYWRfdG9fcGFja2FnZShnbywgY29kZSwgc3BhY2UsCisJCQkJCW1wZWcxX3NlcXVlbmNlX2hlYWRlcik7CisJCWNhc2UgR083MDA3X0ZPUk1BVF9NUEVHNDoKKwkJCXJldHVybiBzZXFoZWFkX3RvX3BhY2thZ2UoZ28sIGNvZGUsIHNwYWNlLAorCQkJCQltcGVnNF9zZXF1ZW5jZV9oZWFkZXIpOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIDA7CisJCX0KKwljYXNlIFNQRUNJQUxfQVZfU1lOQzoKKwkJcmV0dXJuIGF2c3luY190b19wYWNrYWdlKGdvLCBjb2RlLCBzcGFjZSk7CisJY2FzZSBTUEVDSUFMX0ZJTkFMOgorCQlyZXR1cm4gZmluYWxfcGFja2FnZShnbywgY29kZSwgc3BhY2UpOworCWNhc2UgU1BFQ0lBTF9BVURJTzoKKwkJcmV0dXJuIGF1ZGlvX3RvX3BhY2thZ2UoZ28sIGNvZGUsIHNwYWNlKTsKKwljYXNlIFNQRUNJQUxfTU9ERVQ6CisJCXJldHVybiBtb2RldF90b19wYWNrYWdlKGdvLCBjb2RlLCBzcGFjZSk7CisJfQorCXByaW50ayhLRVJOX0VSUgorCQkiZ283MDA3OiBmaXJtd2FyZSBmaWxlIGNvbnRhaW5zIHVuc3VwcG9ydGVkIGZlYXR1cmUgJTA0eFxuIiwKKwkJdHlwZSk7CisJcmV0dXJuIC0xOworfQorCitpbnQgZ283MDA3X2NvbnN0cnVjdF9md19pbWFnZShzdHJ1Y3QgZ283MDA3ICpnbywgdTggKipmdywgaW50ICpmd2xlbikKK3sKKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3X2VudHJ5OworCXUxNiAqY29kZSwgKnNyYzsKKwlpbnQgZnJhbWVsZW5bOF0gPSB7IH07IC8qIGhvbGRzIHRoZSBsZW5ndGhzIG9mIGVtcHR5IGZyYW1lIHRlbXBsYXRlcyAqLworCWludCBjb2Rlc3BhY2UgPSA2NCAqIDEwMjQsIGkgPSAwLCBzcmNsZW4sIGNodW5rX2xlbiwgY2h1bmtfZmxhZ3M7CisJaW50IG1vZGVfZmxhZzsKKwlpbnQgcmV0OworCisJc3dpdGNoIChnby0+Zm9ybWF0KSB7CisJY2FzZSBHTzcwMDdfRk9STUFUX01KUEVHOgorCQltb2RlX2ZsYWcgPSBGTEFHX01PREVfTUpQRUc7CisJCWJyZWFrOworCWNhc2UgR083MDA3X0ZPUk1BVF9NUEVHMToKKwkJbW9kZV9mbGFnID0gRkxBR19NT0RFX01QRUcxOworCQlicmVhazsKKwljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzI6CisJCW1vZGVfZmxhZyA9IEZMQUdfTU9ERV9NUEVHMjsKKwkJYnJlYWs7CisJY2FzZSBHTzcwMDdfRk9STUFUX01QRUc0OgorCQltb2RlX2ZsYWcgPSBGTEFHX01PREVfTVBFRzQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtMTsKKwl9CisJaWYgKHJlcXVlc3RfZmlybXdhcmUoJmZ3X2VudHJ5LCBnby0+Ym9hcmRfaW5mby0+ZmlybXdhcmUsIGdvLT5kZXYpKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkJImdvNzAwNzogdW5hYmxlIHRvIGxvYWQgZmlybXdhcmUgZnJvbSBmaWxlIFwiJXNcIlxuIiwKKwkJCWdvLT5ib2FyZF9pbmZvLT5maXJtd2FyZSk7CisJCXJldHVybiAtMTsKKwl9CisJY29kZSA9IGttYWxsb2MoY29kZXNwYWNlICogMiwgR0ZQX0tFUk5FTCk7CisJaWYgKGNvZGUgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogdW5hYmxlIHRvIGFsbG9jYXRlICVkIGJ5dGVzIGZvciAiCisJCQkJImZpcm13YXJlIGNvbnN0cnVjdGlvblxuIiwgY29kZXNwYWNlICogMik7CisJCWdvdG8gZndfZmFpbGVkOworCX0KKwltZW1zZXQoY29kZSwgMCwgY29kZXNwYWNlICogMik7CisJc3JjID0gKHUxNiAqKWZ3X2VudHJ5LT5kYXRhOworCXNyY2xlbiA9IGZ3X2VudHJ5LT5zaXplIC8gMjsKKwl3aGlsZSAoc3JjbGVuID49IDIpIHsKKwkJY2h1bmtfZmxhZ3MgPSBfX2xlMTZfdG9fY3B1KHNyY1swXSk7CisJCWNodW5rX2xlbiA9IF9fbGUxNl90b19jcHUoc3JjWzFdKTsKKwkJaWYgKGNodW5rX2xlbiArIDIgPiBzcmNsZW4pIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3OiBmaXJtd2FyZSBmaWxlIFwiJXNcIiAiCisJCQkJCSJhcHBlYXJzIHRvIGJlIGNvcnJ1cHRlZFxuIiwKKwkJCQkJZ28tPmJvYXJkX2luZm8tPmZpcm13YXJlKTsKKwkJCWdvdG8gZndfZmFpbGVkOworCQl9CisJCWlmIChjaHVua19mbGFncyAmIG1vZGVfZmxhZykgeworCQkJaWYgKGNodW5rX2ZsYWdzICYgRkxBR19TUEVDSUFMKSB7CisJCQkJcmV0ID0gZG9fc3BlY2lhbChnbywgX19sZTE2X3RvX2NwdShzcmNbMl0pLAorCQkJCQkmY29kZVtpXSwgY29kZXNwYWNlIC0gaSwgZnJhbWVsZW4pOworCQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3OiBpbnN1ZmZpY2llbnQgIgorCQkJCQkJCSJtZW1vcnkgZm9yIGZpcm13YXJlICIKKwkJCQkJCQkiY29uc3RydWN0aW9uXG4iKTsKKwkJCQkJZ290byBmd19mYWlsZWQ7CisJCQkJfQorCQkJCWkgKz0gcmV0OworCQkJfSBlbHNlIHsKKwkJCQlpZiAoY29kZXNwYWNlIC0gaSA8IGNodW5rX2xlbikgeworCQkJCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNzogaW5zdWZmaWNpZW50ICIKKwkJCQkJCQkibWVtb3J5IGZvciBmaXJtd2FyZSAiCisJCQkJCQkJImNvbnN0cnVjdGlvblxuIik7CisJCQkJCWdvdG8gZndfZmFpbGVkOworCQkJCX0KKwkJCQltZW1jcHkoJmNvZGVbaV0sICZzcmNbMl0sIGNodW5rX2xlbiAqIDIpOworCQkJCWkgKz0gY2h1bmtfbGVuOworCQkJfQorCQl9CisJCXNyY2xlbiAtPSBjaHVua19sZW4gKyAyOworCQlzcmMgKz0gY2h1bmtfbGVuICsgMjsKKwl9CisJcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7CisJKmZ3ID0gKHU4ICopY29kZTsKKwkqZndsZW4gPSBpICogMjsKKwlyZXR1cm4gMDsKKworZndfZmFpbGVkOgorCWtmcmVlKGNvZGUpOworCXJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpOworCXJldHVybiAtMTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWkyYy5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDctaTJjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiYWFlMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LWkyYy5jCkBAIC0wLDAgKzEsMzA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorCisjaW5jbHVkZSAiZ283MDA3LXByaXYuaCIKKyNpbmNsdWRlICJ3aXMtaTJjLmgiCisKKy8qKioqKioqKioqKioqKiBSZWdpc3RyYXRpb24gaW50ZXJmYWNlIGZvciBJMkMgY2xpZW50IGRyaXZlcnMgKioqKioqKioqKioqKiovCisKKy8qIFNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGF1dG8tcHJvYmUgdGhlIEkyQyBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgSTJDCisgKiBidXMgb24gdGhlIGdvNzAwNywgd2UgaGF2ZSB0aGlzIHNpbGx5IGxpdHRsZSByZWdpc3RyYXRpb24gc3lzdGVtIHRoYXQKKyAqIGNsaWVudCBkcml2ZXJzIGNhbiB1c2UgdG8gcmVnaXN0ZXIgdGhlaXIgSTJDIGRyaXZlciBJRCBhbmQgdGhlaXIKKyAqIGRldGVjdF9jbGllbnQgZnVuY3Rpb24gKHRoZSBvbmUgdGhhdCdzIG5vcm1hbGx5IHBhc3NlZCB0byBpMmNfcHJvYmUpLgorICoKKyAqIFdoZW4gYSBuZXcgZ283MDA3IGRldmljZSBpcyBjb25uZWN0ZWQsIHdlIGNhbiBsb29rIHVwIGluIGEgYm9hcmQgaW5mbworICogdGFibGUgYnkgdGhlIFVTQiBvciBQQ0kgdmVuZG9yL3Byb2R1Y3QvcmV2aXNpb24gSUQgdG8gZGV0ZXJtaW5lCisgKiB3aGljaCBJMkMgY2xpZW50IG1vZHVsZSB0byBsb2FkLiAgVGhlIGNsaWVudCBkcml2ZXIgbW9kdWxlIHdpbGwgcmVnaXN0ZXIKKyAqIGl0c2VsZiBoZXJlLCBhbmQgdGhlbiB3ZSBjYW4gY2FsbCB0aGUgcmVnaXN0ZXJlZCBkZXRlY3RfY2xpZW50IGZ1bmN0aW9uCisgKiB0byBmb3JjZS1sb2FkIGEgbmV3IGNsaWVudCBhdCB0aGUgYWRkcmVzcyBsaXN0ZWQgaW4gdGhlIGJvYXJkIGluZm8gdGFibGUuCisgKgorICogUmVhbGx5IHRoZSBJMkMgc3Vic3lzdGVtIHNob3VsZCBoYXZlIGEgd2F5IHRvIGZvcmNlLWxvYWQgSTJDIGNsaWVudAorICogZHJpdmVycyB3aGVuIHdlIGhhdmUgYSBwcmlvcmkga25vd2xlZGdlIG9mIHdoYXQncyBvbiB0aGUgYnVzLCBlc3BlY2lhbGx5CisgKiBzaW5jZSB0aGUgZXhpc3RpbmcgSTJDIGF1dG8tcHJvYmUgbWVjaGFuaXNtIGlzIHNvIGhva2V5LCBidXQgd2UnbGwgdXNlCisgKiBvdXIgb3duIG1lY2hhbmlzbSBmb3IgdGhlIHRpbWUgYmVpbmcuICovCisKK3N0cnVjdCB3aXNfaTJjX2NsaWVudF9kcml2ZXIgeworCXVuc2lnbmVkIGludCBpZDsKKwlmb3VuZF9wcm9jIGZvdW5kX3Byb2M7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworfTsKKworc3RhdGljIExJU1RfSEVBRChpMmNfY2xpZW50X2RyaXZlcnMpOworc3RhdGljIERFQ0xBUkVfTVVURVgoaTJjX2NsaWVudF9kcml2ZXJfbGlzdF9sb2NrKTsKKworLyogQ2xpZW50IGRyaXZlcnMgcmVnaXN0ZXIgaGVyZSBieSB0aGVpciBJMkMgZHJpdmVyIElEICovCitpbnQgd2lzX2kyY19hZGRfZHJpdmVyKHVuc2lnbmVkIGludCBpZCwgZm91bmRfcHJvYyBmb3VuZF9wcm9jKQoreworCXN0cnVjdCB3aXNfaTJjX2NsaWVudF9kcml2ZXIgKmRyaXZlcjsKKworCWRyaXZlciA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB3aXNfaTJjX2NsaWVudF9kcml2ZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZHJpdmVyID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCWRyaXZlci0+aWQgPSBpZDsKKwlkcml2ZXItPmZvdW5kX3Byb2MgPSBmb3VuZF9wcm9jOworCisJZG93bigmaTJjX2NsaWVudF9kcml2ZXJfbGlzdF9sb2NrKTsKKwlsaXN0X2FkZF90YWlsKCZkcml2ZXItPmxpc3QsICZpMmNfY2xpZW50X2RyaXZlcnMpOworCXVwKCZpMmNfY2xpZW50X2RyaXZlcl9saXN0X2xvY2spOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKHdpc19pMmNfYWRkX2RyaXZlcik7CisKK3ZvaWQgd2lzX2kyY19kZWxfZHJpdmVyKGZvdW5kX3Byb2MgZm91bmRfcHJvYykKK3sKKwlzdHJ1Y3Qgd2lzX2kyY19jbGllbnRfZHJpdmVyICpkcml2ZXIsICpuZXh0OworCisJZG93bigmaTJjX2NsaWVudF9kcml2ZXJfbGlzdF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHJpdmVyLCBuZXh0LCAmaTJjX2NsaWVudF9kcml2ZXJzLCBsaXN0KQorCQlpZiAoZHJpdmVyLT5mb3VuZF9wcm9jID09IGZvdW5kX3Byb2MpIHsKKwkJCWxpc3RfZGVsKCZkcml2ZXItPmxpc3QpOworCQkJa2ZyZWUoZHJpdmVyKTsKKwkJfQorCXVwKCZpMmNfY2xpZW50X2RyaXZlcl9saXN0X2xvY2spOworfQorRVhQT1JUX1NZTUJPTCh3aXNfaTJjX2RlbF9kcml2ZXIpOworCisvKiBUaGUgbWFpbiBnbzcwMDcgZHJpdmVyIGNhbGxzIHRoaXMgdG8gaW5zdGFudGlhdGUgYSBjbGllbnQgYnkgZHJpdmVyCisgKiBJRCBhbmQgYnVzIGFkZHJlc3MsIHdoaWNoIGFyZSBib3RoIHN0b3JlZCBpbiB0aGUgYm9hcmQgaW5mbyB0YWJsZSAqLworaW50IHdpc19pMmNfcHJvYmVfZGV2aWNlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKKwkJCQl1bnNpZ25lZCBpbnQgaWQsIGludCBhZGRyKQoreworCXN0cnVjdCB3aXNfaTJjX2NsaWVudF9kcml2ZXIgKmRyaXZlcjsKKwlpbnQgZm91bmQgPSAwOworCisJaWYgKGFkZHIgPCAwIHx8IGFkZHIgPiAweDdmKQorCQlyZXR1cm4gLTE7CisJZG93bigmaTJjX2NsaWVudF9kcml2ZXJfbGlzdF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRyaXZlciwgJmkyY19jbGllbnRfZHJpdmVycywgbGlzdCkKKwkJaWYgKGRyaXZlci0+aWQgPT0gaWQpIHsKKwkJCWlmIChkcml2ZXItPmZvdW5kX3Byb2MoYWRhcHRlciwgYWRkciwgMCkgPT0gMCkKKwkJCQlmb3VuZCA9IDE7CisJCQlicmVhazsKKwkJfQorCXVwKCZpMmNfY2xpZW50X2RyaXZlcl9saXN0X2xvY2spOworCXJldHVybiBmb3VuZDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKiBEcml2ZXIgZm9yIG9uLWJvYXJkIEkyQyBhZGFwdGVyICoqKioqKioqKioqKioqKioqKioqKi8KKworLyogI2RlZmluZSBHTzcwMDdfSTJDX0RFQlVHICovCisKKyNkZWZpbmUgU1BJX0kyQ19BRERSX0JBU0UJCTB4MTQwMAorI2RlZmluZSBTVEFUVVNfUkVHX0FERFIJCQkoU1BJX0kyQ19BRERSX0JBU0UgKyAweDIpCisjZGVmaW5lIEkyQ19DVFJMX1JFR19BRERSCQkoU1BJX0kyQ19BRERSX0JBU0UgKyAweDYpCisjZGVmaW5lIEkyQ19ERVZfVVBfQUREUl9SRUdfQUREUgkoU1BJX0kyQ19BRERSX0JBU0UgKyAweDcpCisjZGVmaW5lIEkyQ19MT19BRERSX1JFR19BRERSCQkoU1BJX0kyQ19BRERSX0JBU0UgKyAweDgpCisjZGVmaW5lIEkyQ19EQVRBX1JFR19BRERSCQkoU1BJX0kyQ19BRERSX0JBU0UgKyAweDkpCisjZGVmaW5lIEkyQ19DTEtGUkVRX1JFR19BRERSCQkoU1BJX0kyQ19BRERSX0JBU0UgKyAweGEpCisKKyNkZWZpbmUgSTJDX1NUQVRFX01BU0sJCQkweDAwMDcKKyNkZWZpbmUgSTJDX1JFQURfUkVBRFlfTUFTSwkJMHgwMDA4CisKKy8qIFRoZXJlIGlzIG9ubHkgb25lIEkyQyBwb3J0IG9uIHRoZSBUVzI4MDQgdGhhdCBmZWVkcyBhbGwgZm91ciBHTzcwMDcgVklQcworICogb24gdGhlIEFkbGluayBQQ0ktTVBHMjQsIHNvIGFjY2VzcyBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgb2YgdGhlbS4gKi8KK3N0YXRpYyBERUNMQVJFX01VVEVYKGFkbGlua19tcGcyNF9pMmNfbG9jayk7CisKK3N0YXRpYyBpbnQgZ283MDA3X2kyY194ZmVyKHN0cnVjdCBnbzcwMDcgKmdvLCB1MTYgYWRkciwgaW50IHJlYWQsCisJCXUxNiBjb21tYW5kLCBpbnQgZmxhZ3MsIHU4ICpkYXRhKQoreworCWludCBpLCByZXQgPSAtMTsKKwl1MTYgdmFsOworCisJaWYgKGdvLT5zdGF0dXMgPT0gU1RBVFVTX1NIVVRET1dOKQorCQlyZXR1cm4gLTE7CisKKyNpZmRlZiBHTzcwMDdfSTJDX0RFQlVHCisJaWYgKHJlYWQpCisJCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDctaTJjOiByZWFkaW5nIDB4JTAyeCBvbiAweCUwMnhcbiIsCisJCQljb21tYW5kLCBhZGRyKTsKKwllbHNlCisJCXByaW50ayhLRVJOX0RFQlVHCisJCQkiZ283MDA3LWkyYzogd3JpdGluZyAweCUwMnggdG8gMHglMDJ4IG9uIDB4JTAyeFxuIiwKKwkJCSpkYXRhLCBjb21tYW5kLCBhZGRyKTsKKyNlbmRpZgorCisJZG93bigmZ28tPmh3X2xvY2spOworCisJaWYgKGdvLT5ib2FyZF9pZCA9PSBHTzcwMDdfQk9BUkRJRF9BRExJTktfTVBHMjQpIHsKKwkJLyogQnJpZGdlIHRoZSBJMkMgcG9ydCBvbiB0aGlzIEdPNzAwNyB0byB0aGUgc2hhcmVkIGJ1cyAqLworCQlkb3duKCZhZGxpbmtfbXBnMjRfaTJjX2xvY2spOworCQlnbzcwMDdfd3JpdGVfYWRkcihnbywgMHgzYzgyLCAweDAwMjApOworCX0KKworCS8qIFdhaXQgZm9yIEkyQyBhZGFwdGVyIHRvIGJlIHJlYWR5ICovCisJZm9yIChpID0gMDsgaSA8IDEwOyArK2kpIHsKKwkJaWYgKGdvNzAwN19yZWFkX2FkZHIoZ28sIFNUQVRVU19SRUdfQUREUiwgJnZhbCkgPCAwKQorCQkJZ290byBpMmNfZG9uZTsKKwkJaWYgKCEodmFsICYgSTJDX1NUQVRFX01BU0spKQorCQkJYnJlYWs7CisJCW1zbGVlcCgxMDApOworCX0KKwlpZiAoaSA9PSAxMCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy1pMmM6IEkyQyBhZGFwdGVyIGlzIGh1bmdcbiIpOworCQlnb3RvIGkyY19kb25lOworCX0KKworCS8qIFNldCB0YXJnZXQgcmVnaXN0ZXIgKGNvbW1hbmQpICovCisJZ283MDA3X3dyaXRlX2FkZHIoZ28sIEkyQ19DVFJMX1JFR19BRERSLCBmbGFncyk7CisJZ283MDA3X3dyaXRlX2FkZHIoZ28sIEkyQ19MT19BRERSX1JFR19BRERSLCBjb21tYW5kKTsKKworCS8qIElmIHdlJ3JlIHdyaXRpbmcsIHNlbmQgdGhlIGRhdGEgYW5kIHRhcmdldCBhZGRyZXNzIGFuZCB3ZSdyZSBkb25lICovCisJaWYgKCFyZWFkKSB7CisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCBJMkNfREFUQV9SRUdfQUREUiwgKmRhdGEpOworCQlnbzcwMDdfd3JpdGVfYWRkcihnbywgSTJDX0RFVl9VUF9BRERSX1JFR19BRERSLAorCQkJCQkoYWRkciA8PCA5KSB8IChjb21tYW5kID4+IDgpKTsKKwkJcmV0ID0gMDsKKwkJZ290byBpMmNfZG9uZTsKKwl9CisKKwkvKiBPdGhlcndpc2UsIHdlJ3JlIHJlYWRpbmcuICBGaXJzdCBjbGVhciBpMmNfcnhfZGF0YV9yZHkuICovCisJaWYgKGdvNzAwN19yZWFkX2FkZHIoZ28sIEkyQ19EQVRBX1JFR19BRERSLCAmdmFsKSA8IDApCisJCWdvdG8gaTJjX2RvbmU7CisKKwkvKiBTZW5kIHRoZSB0YXJnZXQgYWRkcmVzcyBwbHVzIHJlYWQgZmxhZyAqLworCWdvNzAwN193cml0ZV9hZGRyKGdvLCBJMkNfREVWX1VQX0FERFJfUkVHX0FERFIsCisJCQkoYWRkciA8PCA5KSB8IDB4MDEwMCB8IChjb21tYW5kID4+IDgpKTsKKworCS8qIFdhaXQgZm9yIGkyY19yeF9kYXRhX3JkeSAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsgKytpKSB7CisJCWlmIChnbzcwMDdfcmVhZF9hZGRyKGdvLCBTVEFUVVNfUkVHX0FERFIsICZ2YWwpIDwgMCkKKwkJCWdvdG8gaTJjX2RvbmU7CisJCWlmICh2YWwgJiBJMkNfUkVBRF9SRUFEWV9NQVNLKQorCQkJYnJlYWs7CisJCW1zbGVlcCgxMDApOworCX0KKwlpZiAoaSA9PSAxMCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy1pMmM6IEkyQyBhZGFwdGVyIGlzIGh1bmdcbiIpOworCQlnb3RvIGkyY19kb25lOworCX0KKworCS8qIFJldHJpZXZlIHRoZSByZWFkIGJ5dGUgKi8KKwlpZiAoZ283MDA3X3JlYWRfYWRkcihnbywgSTJDX0RBVEFfUkVHX0FERFIsICZ2YWwpIDwgMCkKKwkJZ290byBpMmNfZG9uZTsKKwkqZGF0YSA9IHZhbDsKKwlyZXQgPSAwOworCitpMmNfZG9uZToKKwlpZiAoZ28tPmJvYXJkX2lkID09IEdPNzAwN19CT0FSRElEX0FETElOS19NUEcyNCkgeworCQkvKiBJc29sYXRlIHRoZSBJMkMgcG9ydCBvbiB0aGlzIEdPNzAwNyBmcm9tIHRoZSBzaGFyZWQgYnVzICovCisJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDNjODIsIDB4MDAwMCk7CisJCXVwKCZhZGxpbmtfbXBnMjRfaTJjX2xvY2spOworCX0KKwl1cCgmZ28tPmh3X2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X3NtYnVzX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1MTYgYWRkciwKKwkJdW5zaWduZWQgc2hvcnQgZmxhZ3MsIGNoYXIgcmVhZF93cml0ZSwKKwkJdTggY29tbWFuZCwgaW50IHNpemUsIHVuaW9uIGkyY19zbWJ1c19kYXRhICpkYXRhKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gaTJjX2dldF9hZGFwZGF0YShhZGFwdGVyKTsKKworCWlmIChzaXplICE9IEkyQ19TTUJVU19CWVRFX0RBVEEpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gZ283MDA3X2kyY194ZmVyKGdvLCBhZGRyLCByZWFkX3dyaXRlID09IEkyQ19TTUJVU19SRUFELCBjb21tYW5kLAorCQkJZmxhZ3MgJiBJMkNfQ0xJRU5UX1NDQ0IgPyAweDEwIDogMHgwMCwgJmRhdGEtPmJ5dGUpOworfQorCisvKiBWRVJZIExJTUlURUQgSTJDIG1hc3RlciB4ZmVyIGZ1bmN0aW9uIC0tIG9ubHkgbmVlZGVkIGJlY2F1c2UgdGhlCisgKiBTTUJ1cyBmdW5jdGlvbnMgb25seSBzdXBwb3J0IDgtYml0IGNvbW1hbmRzIGFuZCB0aGUgU0FBNzEzNSB1c2VzCisgKiAxNi1iaXQgY29tbWFuZHMuICBUaGUgSTJDIGludGVyZmFjZSBvbiB0aGUgR083MDA3LCBhcyBsaW1pdGVkIGFzCisgKiBpdCBpcywgZG9lcyBzdXBwb3J0IHRoaXMgbW9kZS4gKi8KKworc3RhdGljIGludCBnbzcwMDdfaTJjX21hc3Rlcl94ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkJc3RydWN0IGkyY19tc2cgbXNnc1tdLCBpbnQgbnVtKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gaTJjX2dldF9hZGFwZGF0YShhZGFwdGVyKTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgeworCQkvKiBXZSBjYW4gb25seSBkbyB0d28gdGhpbmdzIGhlcmUgLS0gd3JpdGUgdGhyZWUgYnl0ZXMsIG9yCisJCSAqIHdyaXRlIHR3byBieXRlcyBhbmQgcmVhZCBvbmUgYnl0ZS4gKi8KKwkJaWYgKG1zZ3NbaV0ubGVuID09IDIpIHsKKwkJCWlmIChpICsgMSA9PSBudW0gfHwgbXNnc1tpXS5hZGRyICE9IG1zZ3NbaSArIDFdLmFkZHIgfHwKKwkJCQkJKG1zZ3NbaV0uZmxhZ3MgJiBJMkNfTV9SRCkgfHwKKwkJCQkJIShtc2dzW2kgKyAxXS5mbGFncyAmIEkyQ19NX1JEKSB8fAorCQkJCQltc2dzW2kgKyAxXS5sZW4gIT0gMSkKKwkJCQlyZXR1cm4gLTE7CisJCQlpZiAoZ283MDA3X2kyY194ZmVyKGdvLCBtc2dzW2ldLmFkZHIsIDEsCisJCQkJCShtc2dzW2ldLmJ1ZlswXSA8PCA4KSB8IG1zZ3NbaV0uYnVmWzFdLAorCQkJCQkweDAxLCAmbXNnc1tpICsgMV0uYnVmWzBdKSA8IDApCisJCQkJcmV0dXJuIC0xOworCQkJKytpOworCQl9IGVsc2UgaWYgKG1zZ3NbaV0ubGVuID09IDMpIHsKKwkJCWlmIChtc2dzW2ldLmZsYWdzICYgSTJDX01fUkQpCisJCQkJcmV0dXJuIC0xOworCQkJaWYgKG1zZ3NbaV0ubGVuICE9IDMpCisJCQkJcmV0dXJuIC0xOworCQkJaWYgKGdvNzAwN19pMmNfeGZlcihnbywgbXNnc1tpXS5hZGRyLCAwLAorCQkJCQkobXNnc1tpXS5idWZbMF0gPDwgOCkgfCBtc2dzW2ldLmJ1ZlsxXSwKKwkJCQkJMHgwMSwgJm1zZ3NbaV0uYnVmWzJdKSA8IDApCisJCQkJcmV0dXJuIC0xOworCQl9IGVsc2UKKwkJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHUzMiBnbzcwMDdfZnVuY3Rpb25hbGl0eShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCit7CisJcmV0dXJuIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQTsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfYWxnb3JpdGhtIGdvNzAwN19hbGdvID0geworCS5zbWJ1c194ZmVyCT0gZ283MDA3X3NtYnVzX3hmZXIsCisJLm1hc3Rlcl94ZmVyCT0gZ283MDA3X2kyY19tYXN0ZXJfeGZlciwKKwkuZnVuY3Rpb25hbGl0eQk9IGdvNzAwN19mdW5jdGlvbmFsaXR5LAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfYWRhcHRlciBnbzcwMDdfYWRhcF90ZW1wbCA9IHsKKwkub3duZXIJCQk9IFRISVNfTU9EVUxFLAorCS5jbGFzcwkJCT0gSTJDX0NMQVNTX1RWX0FOQUxPRywKKwkubmFtZQkJCT0gIldJUyBHTzcwMDdTQiIsCisJLmlkCQkJPSBJMkNfQUxHT19HTzcwMDcsCisJLmFsZ28JCQk9ICZnbzcwMDdfYWxnbywKK307CisKK2ludCBnbzcwMDdfaTJjX2luaXQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJbWVtY3B5KCZnby0+aTJjX2FkYXB0ZXIsICZnbzcwMDdfYWRhcF90ZW1wbCwKKwkJCXNpemVvZihnbzcwMDdfYWRhcF90ZW1wbCkpOworCWdvLT5pMmNfYWRhcHRlci5kZXYucGFyZW50ID0gZ28tPmRldjsKKwlpMmNfc2V0X2FkYXBkYXRhKCZnby0+aTJjX2FkYXB0ZXIsIGdvKTsKKwlpZiAoaTJjX2FkZF9hZGFwdGVyKCZnby0+aTJjX2FkYXB0ZXIpIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJnbzcwMDctaTJjOiBlcnJvcjogaTJjX2FkZF9hZGFwdGVyIGZhaWxlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy1wcml2LmggYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy1wcml2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA1NTQyZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LXByaXYuaApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworLyoKKyAqIFRoaXMgaXMgdGhlIHByaXZhdGUgaW5jbHVkZSBmaWxlIGZvciB0aGUgZ283MDA3IGRyaXZlci4gIEl0IHNob3VsZCBub3QKKyAqIGJlIGluY2x1ZGVkIGJ5IGFueWJvZHkgYnV0IHRoZSBkcml2ZXIgaXRzZWxmLCBhbmQgZXNwZWNpYWxseSBub3QgYnkKKyAqIHVzZXItc3BhY2UgYXBwbGljYXRpb25zLgorICovCisKK3N0cnVjdCBnbzcwMDc7CisKKy8qIElEcyB0byBhY3RpdmF0ZSBib2FyZC1zcGVjaWZpYyBzdXBwb3J0IGNvZGUgKi8KKyNkZWZpbmUgR083MDA3X0JPQVJESURfTUFUUklYX0lJCTAKKyNkZWZpbmUgR083MDA3X0JPQVJESURfTUFUUklYX1JFTE9BRAkxCisjZGVmaW5lIEdPNzAwN19CT0FSRElEX1NUQVJfVFJFSwkyCisjZGVmaW5lIEdPNzAwN19CT0FSRElEX1BDSV9WT1lBR0VSCTMKKyNkZWZpbmUgR083MDA3X0JPQVJESURfWE1FTgkJNAorI2RlZmluZSBHTzcwMDdfQk9BUkRJRF9YTUVOX0lJCQk1CisjZGVmaW5lIEdPNzAwN19CT0FSRElEX1hNRU5fSUlJCQk2CisjZGVmaW5lIEdPNzAwN19CT0FSRElEX01BVFJJWF9SRVYJNworI2RlZmluZSBHTzcwMDdfQk9BUkRJRF9QWF9NNDAyVQkJMTYKKyNkZWZpbmUgR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0FOWQkxNyAvKiBuZWVkIHRvIGNoZWNrIHR1bmVyIG1vZGVsICovCisjZGVmaW5lIEdPNzAwN19CT0FSRElEX1BYX1RWNDAyVV9OQQkxOCAvKiBkZXRlY3RlZCBOVFNDIHR1bmVyICovCisjZGVmaW5lIEdPNzAwN19CT0FSRElEX1BYX1RWNDAyVV9FVQkxOSAvKiBkZXRlY3RlZCBQQUwgdHVuZXIgKi8KKyNkZWZpbmUgR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0pQCTIwIC8qIGRldGVjdGVkIE5UU0MtSiB0dW5lciAqLworI2RlZmluZSBHTzcwMDdfQk9BUkRJRF9MSUZFVklFV19MUjE5MgkyMSAvKiBUViBXYWxrZXIgVWx0cmEgKi8KKyNkZWZpbmUgR083MDA3X0JPQVJESURfRU5EVVJBCQkyMgorI2RlZmluZSBHTzcwMDdfQk9BUkRJRF9BRExJTktfTVBHMjQJMjMKKworLyogVmFyaW91cyBjaGFyYWN0ZXJpc3RpY3Mgb2YgZWFjaCBib2FyZCAqLworI2RlZmluZSBHTzcwMDdfQk9BUkRfSEFTX0FVRElPCQkoMTw8MCkKKyNkZWZpbmUgR083MDA3X0JPQVJEX1VTRV9PTkJPQVJEX0kyQwkoMTw8MSkKKyNkZWZpbmUgR083MDA3X0JPQVJEX0hBU19UVU5FUgkJKDE8PDIpCisKKy8qIENoYXJhY3RlcmlzdGljcyBvZiBzZW5zb3IgZGV2aWNlcyAqLworI2RlZmluZSBHTzcwMDdfU0VOU09SX1ZBTElEX1BPTEFSCSgxPDwwKQorI2RlZmluZSBHTzcwMDdfU0VOU09SX0hSRUZfUE9MQVIJKDE8PDEpCisjZGVmaW5lIEdPNzAwN19TRU5TT1JfVlJFRl9QT0xBUgkoMTw8MikKKyNkZWZpbmUgR083MDA3X1NFTlNPUl9GSUVMRF9JRF9QT0xBUgkoMTw8MykKKyNkZWZpbmUgR083MDA3X1NFTlNPUl9CSVRfV0lEVEgJCSgxPDw0KQorI2RlZmluZSBHTzcwMDdfU0VOU09SX1ZBTElEX0VOQUJMRQkoMTw8NSkKKyNkZWZpbmUgR083MDA3X1NFTlNPUl82NTYJCSgxPDw2KQorI2RlZmluZSBHTzcwMDdfU0VOU09SX0NPTkZJR19NQVNLCTB4N2YKKyNkZWZpbmUgR083MDA3X1NFTlNPUl9UVgkJKDE8PDcpCisjZGVmaW5lIEdPNzAwN19TRU5TT1JfVkJJCQkoMTw8OCkKKyNkZWZpbmUgR083MDA3X1NFTlNPUl9TQ0FMSU5HCQkoMTw8OSkKKworLyogQ2hhcmFjdGVyaXN0aWNzIG9mIGF1ZGlvIHNlbnNvciBkZXZpY2VzICovCisjZGVmaW5lIEdPNzAwN19BVURJT19JMlNfTU9ERV8xCQkoMSkKKyNkZWZpbmUgR083MDA3X0FVRElPX0kyU19NT0RFXzIJCSgyKQorI2RlZmluZSBHTzcwMDdfQVVESU9fSTJTX01PREVfMwkJKDMpCisjZGVmaW5lIEdPNzAwN19BVURJT19CQ0xLX1BPTEFSCQkoMTw8MikKKyNkZWZpbmUgR083MDA3X0FVRElPX1dPUkRfMTQJCSgxNDw8NCkKKyNkZWZpbmUgR083MDA3X0FVRElPX1dPUkRfMTYJCSgxNjw8NCkKKyNkZWZpbmUgR083MDA3X0FVRElPX09ORV9DSEFOTkVMCSgxPDwxMSkKKyNkZWZpbmUgR083MDA3X0FVRElPX0kyU19NQVNURVIJCSgxPDwxNikKKyNkZWZpbmUgR083MDA3X0FVRElPX09LSV9NT0RFCQkoMTw8MTcpCisKK3N0cnVjdCBnbzcwMDdfYm9hcmRfaW5mbyB7CisJY2hhciAqZmlybXdhcmU7CisJdW5zaWduZWQgaW50IGZsYWdzOworCWludCBocGlfYnVmZmVyX2NhcDsKKwl1bnNpZ25lZCBpbnQgc2Vuc29yX2ZsYWdzOworCWludCBzZW5zb3Jfd2lkdGg7CisJaW50IHNlbnNvcl9oZWlnaHQ7CisJaW50IHNlbnNvcl9mcmFtZXJhdGU7CisJaW50IHNlbnNvcl9oX29mZnNldDsKKwlpbnQgc2Vuc29yX3Zfb2Zmc2V0OworCXVuc2lnbmVkIGludCBhdWRpb19mbGFnczsKKwlpbnQgYXVkaW9fcmF0ZTsKKwlpbnQgYXVkaW9fYmNsa19kaXY7CisJaW50IGF1ZGlvX21haW5fZGl2OworCWludCBudW1faTJjX2RldnM7CisJc3RydWN0IHsKKwkJaW50IGlkOworCQlpbnQgYWRkcjsKKwl9IGkyY19kZXZzWzRdOworCWludCBudW1faW5wdXRzOworCXN0cnVjdCB7CisJCWludCB2aWRlb19pbnB1dDsKKwkJaW50IGF1ZGlvX2lucHV0OworCQljaGFyICpuYW1lOworCX0gaW5wdXRzWzRdOworfTsKKworc3RydWN0IGdvNzAwN19ocGlfb3BzIHsKKwlpbnQgKCppbnRlcmZhY2VfcmVzZXQpKHN0cnVjdCBnbzcwMDcgKmdvKTsKKwlpbnQgKCp3cml0ZV9pbnRlcnJ1cHQpKHN0cnVjdCBnbzcwMDcgKmdvLCBpbnQgYWRkciwgaW50IGRhdGEpOworCWludCAoKnJlYWRfaW50ZXJydXB0KShzdHJ1Y3QgZ283MDA3ICpnbyk7CisJaW50ICgqc3RyZWFtX3N0YXJ0KShzdHJ1Y3QgZ283MDA3ICpnbyk7CisJaW50ICgqc3RyZWFtX3N0b3ApKHN0cnVjdCBnbzcwMDcgKmdvKTsKKwlpbnQgKCpzZW5kX2Zpcm13YXJlKShzdHJ1Y3QgZ283MDA3ICpnbywgdTggKmRhdGEsIGludCBsZW4pOworfTsKKworLyogVGhlIHZpZGVvIGJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBQQUdFX1NJWkUgKi8KKyNkZWZpbmUJR083MDA3X0JVRl9QQUdFUwkoMTI4ICogMTAyNCAvIFBBR0VfU0laRSkKKyNkZWZpbmUJR083MDA3X0JVRl9TSVpFCQkoR083MDA3X0JVRl9QQUdFUyA8PCBQQUdFX1NISUZUKQorCitzdHJ1Y3QgZ283MDA3X2J1ZmZlciB7CisJc3RydWN0IGdvNzAwNyAqZ287IC8qIFJldmVyc2UgcmVmZXJlbmNlIGZvciBWTUEgb3BzICovCisJaW50IGluZGV4OyAvKiBSZXZlcnNlIHJlZmVyZW5jZSBmb3IgRFFCVUYgKi8KKwllbnVtIHsgQlVGX1NUQVRFX0lETEUsIEJVRl9TVEFURV9RVUVVRUQsIEJVRl9TVEFURV9ET05FIH0gc3RhdGU7CisJdTMyIHNlcTsKKwlzdHJ1Y3QgdGltZXZhbCB0aW1lc3RhbXA7CisJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW07CisJc3RydWN0IHBhZ2UgKnBhZ2VzW0dPNzAwN19CVUZfUEFHRVMgKyAxXTsgLyogZXh0cmEgZm9yIHN0cmFkZGxpbmcgKi8KKwl1bnNpZ25lZCBsb25nIHVzZXJfYWRkcjsKKwl1bnNpZ25lZCBpbnQgcGFnZV9jb3VudDsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXVuc2lnbmVkIGludCBieXRlc3VzZWQ7CisJdW5zaWduZWQgaW50IGZyYW1lX29mZnNldDsKKwl1MzIgbW9kZXRfYWN0aXZlOworCWludCBtYXBwZWQ7Cit9OworCitzdHJ1Y3QgZ283MDA3X2ZpbGUgeworCXN0cnVjdCBnbzcwMDcgKmdvOworCXN0cnVjdCBzZW1hcGhvcmUgbG9jazsKKwlpbnQgYnVmX2NvdW50OworCXN0cnVjdCBnbzcwMDdfYnVmZmVyICpidWZzOworfTsKKworI2RlZmluZQlHTzcwMDdfRk9STUFUX01KUEVHCTAKKyNkZWZpbmUgR083MDA3X0ZPUk1BVF9NUEVHNAkxCisjZGVmaW5lIEdPNzAwN19GT1JNQVRfTVBFRzEJMgorI2RlZmluZSBHTzcwMDdfRk9STUFUX01QRUcyCTMKKyNkZWZpbmUgR083MDA3X0ZPUk1BVF9IMjYzCTQKKworI2RlZmluZSBHTzcwMDdfUkFUSU9fMV8xCTAKKyNkZWZpbmUgR083MDA3X1JBVElPXzRfMwkxCisjZGVmaW5lIEdPNzAwN19SQVRJT18xNl85CTIKKworZW51bSBnbzcwMDdfcGFyc2VyX3N0YXRlIHsKKwlTVEFURV9EQVRBLAorCVNUQVRFXzAwLAorCVNUQVRFXzAwXzAwLAorCVNUQVRFXzAwXzAwXzAxLAorCVNUQVRFX0ZGLAorCVNUQVRFX1ZCSV9MRU5fQSwKKwlTVEFURV9WQklfTEVOX0IsCisJU1RBVEVfTU9ERVRfTUFQLAorCVNUQVRFX1VOUEFSU0VELAorfTsKKworc3RydWN0IGdvNzAwNyB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBnbzcwMDdfYm9hcmRfaW5mbyAqYm9hcmRfaW5mbzsKKwl1bnNpZ25lZCBpbnQgYm9hcmRfaWQ7CisJaW50IHR1bmVyX3R5cGU7CisJaW50IGNoYW5uZWxfbnVtYmVyOyAvKiBmb3IgbXVsdGktY2hhbm5lbCBib2FyZHMgbGlrZSBBZGxpbmsgUENJLU1QRzI0ICovCisJY2hhciBuYW1lWzY0XTsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2aWRlb19kZXY7CisJaW50IHJlZl9jb3VudDsKKwllbnVtIHsgU1RBVFVTX0lOSVQsIFNUQVRVU19PTkxJTkUsIFNUQVRVU19TSFVURE9XTiB9IHN0YXR1czsKKwlzcGlubG9ja190IHNwaW5sb2NrOworCXN0cnVjdCBzZW1hcGhvcmUgaHdfbG9jazsKKwlpbnQgc3RyZWFtaW5nOworCWludCBpbl91c2U7CisJaW50IGF1ZGlvX2VuYWJsZWQ7CisKKwkvKiBWaWRlbyBpbnB1dCAqLworCWludCBpbnB1dDsKKwllbnVtIHsgR083MDA3X1NURF9OVFNDLCBHTzcwMDdfU1REX1BBTCwgR083MDA3X1NURF9PVEhFUiB9IHN0YW5kYXJkOworCWludCBzZW5zb3JfZnJhbWVyYXRlOworCWludCB3aWR0aDsKKwlpbnQgaGVpZ2h0OworCWludCBlbmNvZGVyX2hfb2Zmc2V0OworCWludCBlbmNvZGVyX3Zfb2Zmc2V0OworCXVuc2lnbmVkIGludCBlbmNvZGVyX2hfaGFsdmU6MTsKKwl1bnNpZ25lZCBpbnQgZW5jb2Rlcl92X2hhbHZlOjE7CisJdW5zaWduZWQgaW50IGVuY29kZXJfc3Vic2FtcGxlOjE7CisKKwkvKiBFbmNvZGVyIGNvbmZpZyAqLworCWludCBmb3JtYXQ7CisJaW50IGJpdHJhdGU7CisJaW50IGZwc19zY2FsZTsKKwlpbnQgcGFsaTsKKwlpbnQgYXNwZWN0X3JhdGlvOworCWludCBnb3Bfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgaXBiOjE7CisJdW5zaWduZWQgaW50IGNsb3NlZF9nb3A6MTsKKwl1bnNpZ25lZCBpbnQgcmVwZWF0X3NlcWhlYWQ6MTsKKwl1bnNpZ25lZCBpbnQgc2VxX2hlYWRlcl9lbmFibGU6MTsKKwl1bnNpZ25lZCBpbnQgZ29wX2hlYWRlcl9lbmFibGU6MTsKKwl1bnNpZ25lZCBpbnQgZHZkX21vZGU6MTsKKwl1bnNpZ25lZCBpbnQgaW50ZXJsYWNlX2NvZGluZzoxOworCisJLyogTW90aW9uIGRldGVjdGlvbiAqLworCXVuc2lnbmVkIGludCBtb2RldF9lbmFibGU6MTsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBpbnQgZW5hYmxlOjE7CisJCWludCBwaXhlbF90aHJlc2hvbGQ7CisJCWludCBtb3Rpb25fdGhyZXNob2xkOworCQlpbnQgbWJfdGhyZXNob2xkOworCX0gbW9kZXRbNF07CisJdW5zaWduZWQgY2hhciBtb2RldF9tYXBbMTYyNF07CisJdW5zaWduZWQgY2hhciBhY3RpdmVfbWFwWzIxNl07CisKKwkvKiBWaWRlbyBzdHJlYW1pbmcgKi8KKwlzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqYWN0aXZlX2J1ZjsKKwllbnVtIGdvNzAwN19wYXJzZXJfc3RhdGUgc3RhdGU7CisJaW50IHBhcnNlX2xlbmd0aDsKKwl1MTYgbW9kZXRfd29yZDsKKwlpbnQgc2Vlbl9mcmFtZTsKKwl1MzIgbmV4dF9zZXE7CisJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW07CisJd2FpdF9xdWV1ZV9oZWFkX3QgZnJhbWVfd2FpdHE7CisKKwkvKiBBdWRpbyBzdHJlYW1pbmcgKi8KKwl2b2lkICgqYXVkaW9fZGVsaXZlcikoc3RydWN0IGdvNzAwNyAqZ28sIHU4ICpidWYsIGludCBsZW5ndGgpOworCXZvaWQgKnNuZF9jb250ZXh0OworCisJLyogSTJDICovCisJaW50IGkyY19hZGFwdGVyX29ubGluZTsKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgaTJjX2FkYXB0ZXI7CisKKwkvKiBIUEkgZHJpdmVyICovCisJc3RydWN0IGdvNzAwN19ocGlfb3BzICpocGlfb3BzOworCXZvaWQgKmhwaV9jb250ZXh0OworCWludCBpbnRlcnJ1cHRfYXZhaWxhYmxlOworCXdhaXRfcXVldWVfaGVhZF90IGludGVycnVwdF93YWl0cTsKKwl1bnNpZ25lZCBzaG9ydCBpbnRlcnJ1cHRfdmFsdWU7CisJdW5zaWduZWQgc2hvcnQgaW50ZXJydXB0X2RhdGE7Cit9OworCisvKiBBbGwgb2YgdGhlc2UgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgaHBpX2xvY2sgc2VtYXBob3JlIGhlbGQhICovCisjZGVmaW5lIGdvNzAwN19pbnRlcmZhY2VfcmVzZXQoZ28pIFwKKwkJCSgoZ28pLT5ocGlfb3BzLT5pbnRlcmZhY2VfcmVzZXQoZ28pKQorI2RlZmluZQlnbzcwMDdfd3JpdGVfaW50ZXJydXB0KGdvLCB4LCB5KSBcCisJCQkoKGdvKS0+aHBpX29wcy0+d3JpdGVfaW50ZXJydXB0KSgoZ28pLCAoeCksICh5KSkKKyNkZWZpbmUgZ283MDA3X3N0cmVhbV9zdGFydChnbykgXAorCQkJKChnbyktPmhwaV9vcHMtPnN0cmVhbV9zdGFydChnbykpCisjZGVmaW5lIGdvNzAwN19zdHJlYW1fc3RvcChnbykgXAorCQkJKChnbyktPmhwaV9vcHMtPnN0cmVhbV9zdG9wKGdvKSkKKyNkZWZpbmUJZ283MDA3X3NlbmRfZmlybXdhcmUoZ28sIHgsIHkpIFwKKwkJCSgoZ28pLT5ocGlfb3BzLT5zZW5kX2Zpcm13YXJlKSgoZ28pLCAoeCksICh5KSkKKyNkZWZpbmUgZ283MDA3X3dyaXRlX2FkZHIoZ28sIHgsIHkpIFwKKwkJCSgoZ28pLT5ocGlfb3BzLT53cml0ZV9pbnRlcnJ1cHQpKChnbyksICh4KXwweDgwMDAsICh5KSkKKworLyogZ283MDA3LWRyaXZlci5jICovCitpbnQgZ283MDA3X3JlYWRfYWRkcihzdHJ1Y3QgZ283MDA3ICpnbywgdTE2IGFkZHIsIHUxNiAqZGF0YSk7CitpbnQgZ283MDA3X3JlYWRfaW50ZXJydXB0KHN0cnVjdCBnbzcwMDcgKmdvLCB1MTYgKnZhbHVlLCB1MTYgKmRhdGEpOworaW50IGdvNzAwN19ib290X2VuY29kZXIoc3RydWN0IGdvNzAwNyAqZ28sIGludCBpbml0X2kyYyk7CitpbnQgZ283MDA3X3Jlc2V0X2VuY29kZXIoc3RydWN0IGdvNzAwNyAqZ28pOworaW50IGdvNzAwN19yZWdpc3Rlcl9lbmNvZGVyKHN0cnVjdCBnbzcwMDcgKmdvKTsKK2ludCBnbzcwMDdfc3RhcnRfZW5jb2RlcihzdHJ1Y3QgZ283MDA3ICpnbyk7Cit2b2lkIGdvNzAwN19wYXJzZV92aWRlb19zdHJlYW0oc3RydWN0IGdvNzAwNyAqZ28sIHU4ICpidWYsIGludCBsZW5ndGgpOworc3RydWN0IGdvNzAwNyAqZ283MDA3X2FsbG9jKHN0cnVjdCBnbzcwMDdfYm9hcmRfaW5mbyAqYm9hcmQsCisJCQkJCXN0cnVjdCBkZXZpY2UgKmRldik7Cit2b2lkIGdvNzAwN19yZW1vdmUoc3RydWN0IGdvNzAwNyAqZ28pOworCisvKiBnbzcwMDctZncuYyAqLworaW50IGdvNzAwN19jb25zdHJ1Y3RfZndfaW1hZ2Uoc3RydWN0IGdvNzAwNyAqZ28sIHU4ICoqZncsIGludCAqZndsZW4pOworCisvKiBnbzcwMDctaTJjLmMgKi8KK2ludCBnbzcwMDdfaTJjX2luaXQoc3RydWN0IGdvNzAwNyAqZ28pOworaW50IGdvNzAwN19pMmNfcmVtb3ZlKHN0cnVjdCBnbzcwMDcgKmdvKTsKKworLyogZ283MDA3LXY0bDIuYyAqLworaW50IGdvNzAwN192NGwyX2luaXQoc3RydWN0IGdvNzAwNyAqZ28pOwordm9pZCBnbzcwMDdfdjRsMl9yZW1vdmUoc3RydWN0IGdvNzAwNyAqZ28pOworCisvKiBzbmQtZ283MDA3LmMgKi8KK2ludCBnbzcwMDdfc25kX2luaXQoc3RydWN0IGdvNzAwNyAqZ28pOworaW50IGdvNzAwN19zbmRfcmVtb3ZlKHN0cnVjdCBnbzcwMDcgKmdvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LXVzYi5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDctdXNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlZDZkMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LXVzYi5jCkBAIC0wLDAgKzEsMTIyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPG1lZGlhL3R2YXVkaW8uaD4KKworI2luY2x1ZGUgImdvNzAwNy1wcml2LmgiCisjaW5jbHVkZSAid2lzLWkyYy5oIgorCitzdGF0aWMgdW5zaWduZWQgaW50IGFzc3VtZV9lbmR1cmE7Cittb2R1bGVfcGFyYW0oYXNzdW1lX2VuZHVyYSwgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoYXNzdW1lX2VuZHVyYSwgIndoZW4gcHJvYmluZyBmYWlscywgaGFyZHdhcmUgaXMgYSBQZWxjbyBFbmR1cmEiKTsKKworLyogI2RlZmluZSBHTzcwMDdfVVNCX0RFQlVHICovCisvKiAjZGVmaW5lIEdPNzAwN19JMkNfREVCVUcgKi8gLyogZm9yIGRlYnVnZ2luZyB0aGUgRVotVVNCIEkyQyBhZGFwdGVyICovCisKKyNkZWZpbmUJSFBJX1NUQVRVU19BRERSCTB4RkZGNAorI2RlZmluZQlJTlRfUEFSQU1fQUREUgkweEZGRjYKKyNkZWZpbmUJSU5UX0lOREVYX0FERFIJMHhGRkY4CisKKy8qCisgKiBQaXBlcyBvbiBFWi1VU0IgaW50ZXJmYWNlOgorICogCTAgc25kIC0gQ29udHJvbAorICogCTAgcmN2IC0gQ29udHJvbAorICogCTIgc25kIC0gRG93bmxvYWQgZmlybXdhcmUgKGNvbnRyb2wpCisgKiAJNCByY3YgLSBSZWFkIEludGVycnVwdCAoaW50ZXJydXB0KQorICogCTYgcmN2IC0gUmVhZCBWaWRlbyAoYnVsaykKKyAqIAk4IHJjdiAtIFJlYWQgQXVkaW8gKGJ1bGspCisgKi8KKworI2RlZmluZSBHTzcwMDdfVVNCX0VaVVNCCQkoMTw8MCkKKyNkZWZpbmUgR083MDA3X1VTQl9FWlVTQl9JMkMJCSgxPDwxKQorCitzdHJ1Y3QgZ283MDA3X3VzYl9ib2FyZCB7CisJdW5zaWduZWQgaW50IGZsYWdzOworCXN0cnVjdCBnbzcwMDdfYm9hcmRfaW5mbyBtYWluX2luZm87Cit9OworCitzdHJ1Y3QgZ283MDA3X3VzYiB7CisJc3RydWN0IGdvNzAwN191c2JfYm9hcmQgKmJvYXJkOworCXN0cnVjdCBzZW1hcGhvcmUgaTJjX2xvY2s7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVzYmRldjsKKwlzdHJ1Y3QgdXJiICp2aWRlb191cmJzWzhdOworCXN0cnVjdCB1cmIgKmF1ZGlvX3VyYnNbOF07CisJc3RydWN0IHVyYiAqaW50cl91cmI7Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKiogUHJvZHVjdCBzcGVjaWZpY2F0aW9uIGRhdGEgKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X3VzYl9ib2FyZCBib2FyZF9tYXRyaXhfaWkgPSB7CisJLmZsYWdzCQk9IEdPNzAwN19VU0JfRVpVU0IsCisJLm1haW5faW5mbwk9IHsKKwkJLmZpcm13YXJlCSA9ICJnbzcwMDd0di5iaW4iLAorCQkuZmxhZ3MJCSA9IEdPNzAwN19CT0FSRF9IQVNfQVVESU8gfAorCQkJCQlHTzcwMDdfQk9BUkRfVVNFX09OQk9BUkRfSTJDLAorCQkuYXVkaW9fZmxhZ3MJID0gR083MDA3X0FVRElPX0kyU19NT0RFXzEgfAorCQkJCQlHTzcwMDdfQVVESU9fV09SRF8xNiwKKwkJLmF1ZGlvX3JhdGUJID0gNDgwMDAsCisJCS5hdWRpb19iY2xrX2RpdgkgPSA4LAorCQkuYXVkaW9fbWFpbl9kaXYJID0gMiwKKwkJLmhwaV9idWZmZXJfY2FwICA9IDcsCisJCS5zZW5zb3JfZmxhZ3MJID0gR083MDA3X1NFTlNPUl82NTYgfAorCQkJCQlHTzcwMDdfU0VOU09SX1ZBTElEX0VOQUJMRSB8CisJCQkJCUdPNzAwN19TRU5TT1JfVFYgfAorCQkJCQlHTzcwMDdfU0VOU09SX1ZCSSB8CisJCQkJCUdPNzAwN19TRU5TT1JfU0NBTElORywKKwkJLm51bV9pMmNfZGV2cwkgPSAxLAorCQkuaTJjX2RldnMJID0geworCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfU0FBNzExNSwKKwkJCQkuYWRkcgk9IDB4MjAsCisJCQl9LAorCQl9LAorCQkubnVtX2lucHV0cwkgPSAyLAorCQkuaW5wdXRzIAkgPSB7CisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gMCwKKwkJCQkubmFtZQkJPSAiQ29tcG9zaXRlIiwKKwkJCX0sCisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gOSwKKwkJCQkubmFtZQkJPSAiUy1WaWRlbyIsCisJCQl9LAorCQl9LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGdvNzAwN191c2JfYm9hcmQgYm9hcmRfbWF0cml4X3JlbG9hZCA9IHsKKwkuZmxhZ3MJCT0gR083MDA3X1VTQl9FWlVTQiwKKwkubWFpbl9pbmZvCT0geworCQkuZmlybXdhcmUJID0gImdvNzAwN3R2LmJpbiIsCisJCS5mbGFncwkJID0gR083MDA3X0JPQVJEX0hBU19BVURJTyB8CisJCQkJCUdPNzAwN19CT0FSRF9VU0VfT05CT0FSRF9JMkMsCisJCS5hdWRpb19mbGFncwkgPSBHTzcwMDdfQVVESU9fSTJTX01PREVfMSB8CisJCQkJCUdPNzAwN19BVURJT19JMlNfTUFTVEVSIHwKKwkJCQkJR083MDA3X0FVRElPX1dPUkRfMTYsCisJCS5hdWRpb19yYXRlCSA9IDQ4MDAwLAorCQkuYXVkaW9fYmNsa19kaXYJID0gOCwKKwkJLmF1ZGlvX21haW5fZGl2CSA9IDIsCisJCS5ocGlfYnVmZmVyX2NhcCAgPSA3LAorCQkuc2Vuc29yX2ZsYWdzCSA9IEdPNzAwN19TRU5TT1JfNjU2IHwKKwkJCQkJR083MDA3X1NFTlNPUl9UViwKKwkJLm51bV9pMmNfZGV2cwkgPSAxLAorCQkuaTJjX2RldnMJID0geworCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfU0FBNzExMywKKwkJCQkuYWRkcgk9IDB4MjUsCisJCQl9LAorCQl9LAorCQkubnVtX2lucHV0cwkgPSAyLAorCQkuaW5wdXRzIAkgPSB7CisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gMCwKKwkJCQkubmFtZQkJPSAiQ29tcG9zaXRlIiwKKwkJCX0sCisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gOSwKKwkJCQkubmFtZQkJPSAiUy1WaWRlbyIsCisJCQl9LAorCQl9LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGdvNzAwN191c2JfYm9hcmQgYm9hcmRfc3Rhcl90cmVrID0geworCS5mbGFncwkJPSBHTzcwMDdfVVNCX0VaVVNCIHwgR083MDA3X1VTQl9FWlVTQl9JMkMsCisJLm1haW5faW5mbwk9IHsKKwkJLmZpcm13YXJlCSA9ICJnbzcwMDd0di5iaW4iLAorCQkuZmxhZ3MJCSA9IEdPNzAwN19CT0FSRF9IQVNfQVVESU8sIC8qIHwKKwkJCQkJR083MDA3X0JPQVJEX0hBU19UVU5FUiwgKi8KKwkJLnNlbnNvcl9mbGFncwkgPSBHTzcwMDdfU0VOU09SXzY1NiB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkFMSURfRU5BQkxFIHwKKwkJCQkJR083MDA3X1NFTlNPUl9UViB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkJJIHwKKwkJCQkJR083MDA3X1NFTlNPUl9TQ0FMSU5HLAorCQkuYXVkaW9fZmxhZ3MJID0gR083MDA3X0FVRElPX0kyU19NT0RFXzEgfAorCQkJCQlHTzcwMDdfQVVESU9fV09SRF8xNiwKKwkJLmF1ZGlvX2JjbGtfZGl2CSA9IDgsCisJCS5hdWRpb19tYWluX2RpdgkgPSAyLAorCQkuaHBpX2J1ZmZlcl9jYXAgID0gNywKKwkJLm51bV9pMmNfZGV2cwkgPSAxLAorCQkuaTJjX2RldnMJID0geworCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfU0FBNzExNSwKKwkJCQkuYWRkcgk9IDB4MjAsCisJCQl9LAorCQl9LAorCQkubnVtX2lucHV0cwkgPSAyLAorCQkuaW5wdXRzIAkgPSB7CisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gMSwKKwkJCS8qCS5hdWRpb19pbnB1dAk9IEFVRElPX0VYVEVSTiwgKi8KKwkJCQkubmFtZQkJPSAiQ29tcG9zaXRlIiwKKwkJCX0sCisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gOCwKKwkJCS8qCS5hdWRpb19pbnB1dAk9IEFVRElPX0VYVEVSTiwgKi8KKwkJCQkubmFtZQkJPSAiUy1WaWRlbyIsCisJCQl9LAorCQkvKgl7CisJCSAqCQkudmlkZW9faW5wdXQJPSAzLAorCQkgKgkJLmF1ZGlvX2lucHV0CT0gQVVESU9fVFVORVIsCisJCSAqCQkubmFtZQkJPSAiVHVuZXIiLAorCQkgKgl9LAorCQkgKi8KKwkJfSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBnbzcwMDdfdXNiX2JvYXJkIGJvYXJkX3B4X3R2NDAydSA9IHsKKwkuZmxhZ3MJCT0gR083MDA3X1VTQl9FWlVTQiB8IEdPNzAwN19VU0JfRVpVU0JfSTJDLAorCS5tYWluX2luZm8JPSB7CisJCS5maXJtd2FyZQkgPSAiZ283MDA3dHYuYmluIiwKKwkJLmZsYWdzCQkgPSBHTzcwMDdfQk9BUkRfSEFTX0FVRElPIHwKKwkJCQkJR083MDA3X0JPQVJEX0hBU19UVU5FUiwKKwkJLnNlbnNvcl9mbGFncwkgPSBHTzcwMDdfU0VOU09SXzY1NiB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkFMSURfRU5BQkxFIHwKKwkJCQkJR083MDA3X1NFTlNPUl9UViB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkJJIHwKKwkJCQkJR083MDA3X1NFTlNPUl9TQ0FMSU5HLAorCQkuYXVkaW9fZmxhZ3MJID0gR083MDA3X0FVRElPX0kyU19NT0RFXzEgfAorCQkJCQlHTzcwMDdfQVVESU9fV09SRF8xNiwKKwkJLmF1ZGlvX2JjbGtfZGl2CSA9IDgsCisJCS5hdWRpb19tYWluX2RpdgkgPSAyLAorCQkuaHBpX2J1ZmZlcl9jYXAgID0gNywKKwkJLm51bV9pMmNfZGV2cwkgPSAzLAorCQkuaTJjX2RldnMJID0geworCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfU0FBNzExNSwKKwkJCQkuYWRkcgk9IDB4MjAsCisJCQl9LAorCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfVURBMTM0MiwKKwkJCQkuYWRkcgk9IDB4MWEsCisJCQl9LAorCQkJeworCQkJCS5pZAk9IEkyQ19EUklWRVJJRF9XSVNfU09OWV9UVU5FUiwKKwkJCQkuYWRkcgk9IDB4NjAsCisJCQl9LAorCQl9LAorCQkubnVtX2lucHV0cwkgPSAzLAorCQkuaW5wdXRzIAkgPSB7CisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gMSwKKwkJLmF1ZGlvX2lucHV0CSA9IFRWQVVESU9fSU5QVVRfRVhURVJOLAorCQkJCS5uYW1lCQk9ICJDb21wb3NpdGUiLAorCQkJfSwKKwkJCXsKKwkJCQkudmlkZW9faW5wdXQJPSA4LAorCQkJCS5hdWRpb19pbnB1dAk9IFRWQVVESU9fSU5QVVRfRVhURVJOLAorCQkJCS5uYW1lCQk9ICJTLVZpZGVvIiwKKwkJCX0sCisJCQl7CisJCQkJLnZpZGVvX2lucHV0CT0gMywKKwkJCQkuYXVkaW9faW5wdXQJPSBUVkFVRElPX0lOUFVUX1RVTkVSLAorCQkJCS5uYW1lCQk9ICJUdW5lciIsCisJCQl9LAorCQl9LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGdvNzAwN191c2JfYm9hcmQgYm9hcmRfeG1lbiA9IHsKKwkuZmxhZ3MJCT0gMCwKKwkubWFpbl9pbmZvCT0geworCQkuZmlybXdhcmUJICA9ICJnbzcwMDd0di5iaW4iLAorCQkuZmxhZ3MJCSAgPSBHTzcwMDdfQk9BUkRfVVNFX09OQk9BUkRfSTJDLAorCQkuaHBpX2J1ZmZlcl9jYXAgICA9IDAsCisJCS5zZW5zb3JfZmxhZ3MJICA9IEdPNzAwN19TRU5TT1JfVlJFRl9QT0xBUiwKKwkJLnNlbnNvcl93aWR0aAkgID0gMzIwLAorCQkuc2Vuc29yX2hlaWdodAkgID0gMjQwLAorCQkuc2Vuc29yX2ZyYW1lcmF0ZSA9IDMwMDMwLAorCQkuYXVkaW9fZmxhZ3MJICA9IEdPNzAwN19BVURJT19PTkVfQ0hBTk5FTCB8CisJCQkJCUdPNzAwN19BVURJT19JMlNfTU9ERV8zIHwKKwkJCQkJR083MDA3X0FVRElPX1dPUkRfMTQgfAorCQkJCQlHTzcwMDdfQVVESU9fSTJTX01BU1RFUiB8CisJCQkJCUdPNzAwN19BVURJT19CQ0xLX1BPTEFSIHwKKwkJCQkJR083MDA3X0FVRElPX09LSV9NT0RFLAorCQkuYXVkaW9fcmF0ZQkgID0gODAwMCwKKwkJLmF1ZGlvX2JjbGtfZGl2CSAgPSA0OCwKKwkJLmF1ZGlvX21haW5fZGl2CSAgPSAxLAorCQkubnVtX2kyY19kZXZzCSAgPSAxLAorCQkuaTJjX2RldnMJICA9IHsKKwkJCXsKKwkJCQkuaWQJPSBJMkNfRFJJVkVSSURfV0lTX09WNzY0MCwKKwkJCQkuYWRkcgk9IDB4MjEsCisJCQl9LAorCQl9LAorCQkubnVtX2lucHV0cwkgID0gMSwKKwkJLmlucHV0cyAJICA9IHsKKwkJCXsKKwkJCQkubmFtZQkJPSAiQ2FtZXJhIiwKKwkJCX0sCisJCX0sCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X3VzYl9ib2FyZCBib2FyZF9tYXRyaXhfcmV2b2x1dGlvbiA9IHsKKwkuZmxhZ3MJCT0gR083MDA3X1VTQl9FWlVTQiwKKwkubWFpbl9pbmZvCT0geworCQkuZmlybXdhcmUJID0gImdvNzAwN3R2LmJpbiIsCisJCS5mbGFncwkJID0gR083MDA3X0JPQVJEX0hBU19BVURJTyB8CisJCQkJCUdPNzAwN19CT0FSRF9VU0VfT05CT0FSRF9JMkMsCisJCS5hdWRpb19mbGFncwkgPSBHTzcwMDdfQVVESU9fSTJTX01PREVfMSB8CisJCQkJCUdPNzAwN19BVURJT19JMlNfTUFTVEVSIHwKKwkJCQkJR083MDA3X0FVRElPX1dPUkRfMTYsCisJCS5hdWRpb19yYXRlCSA9IDQ4MDAwLAorCQkuYXVkaW9fYmNsa19kaXYJID0gOCwKKwkJLmF1ZGlvX21haW5fZGl2CSA9IDIsCisJCS5ocGlfYnVmZmVyX2NhcCAgPSA3LAorCQkuc2Vuc29yX2ZsYWdzCSA9IEdPNzAwN19TRU5TT1JfNjU2IHwKKwkJCQkJR083MDA3X1NFTlNPUl9UViB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkJJLAorCQkubnVtX2kyY19kZXZzCSA9IDEsCisJCS5pMmNfZGV2cwkgPSB7CisJCQl7CisJCQkJLmlkCT0gSTJDX0RSSVZFUklEX1dJU19UVzk5MDMsCisJCQkJLmFkZHIJPSAweDQ0LAorCQkJfSwKKwkJfSwKKwkJLm51bV9pbnB1dHMJID0gMiwKKwkJLmlucHV0cyAJID0geworCQkJeworCQkJCS52aWRlb19pbnB1dAk9IDIsCisJCQkJLm5hbWUJCT0gIkNvbXBvc2l0ZSIsCisJCQl9LAorCQkJeworCQkJCS52aWRlb19pbnB1dAk9IDgsCisJCQkJLm5hbWUJCT0gIlMtVmlkZW8iLAorCQkJfSwKKwkJfSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBnbzcwMDdfdXNiX2JvYXJkIGJvYXJkX2xpZmV2aWV3X2xyMTkyID0geworCS5mbGFncwkJPSBHTzcwMDdfVVNCX0VaVVNCLAorCS5tYWluX2luZm8JPSB7CisJCS5maXJtd2FyZQkgPSAiZ283MDA3dHYuYmluIiwKKwkJLmZsYWdzCQkgPSBHTzcwMDdfQk9BUkRfSEFTX0FVRElPIHwKKwkJCQkJR083MDA3X0JPQVJEX1VTRV9PTkJPQVJEX0kyQywKKwkJLmF1ZGlvX2ZsYWdzCSA9IEdPNzAwN19BVURJT19JMlNfTU9ERV8xIHwKKwkJCQkJR083MDA3X0FVRElPX1dPUkRfMTYsCisJCS5hdWRpb19yYXRlCSA9IDQ4MDAwLAorCQkuYXVkaW9fYmNsa19kaXYJID0gOCwKKwkJLmF1ZGlvX21haW5fZGl2CSA9IDIsCisJCS5ocGlfYnVmZmVyX2NhcCAgPSA3LAorCQkuc2Vuc29yX2ZsYWdzCSA9IEdPNzAwN19TRU5TT1JfNjU2IHwKKwkJCQkJR083MDA3X1NFTlNPUl9WQUxJRF9FTkFCTEUgfAorCQkJCQlHTzcwMDdfU0VOU09SX1RWIHwKKwkJCQkJR083MDA3X1NFTlNPUl9WQkkgfAorCQkJCQlHTzcwMDdfU0VOU09SX1NDQUxJTkcsCisJCS5udW1faTJjX2RldnMJID0gMCwKKwkJLm51bV9pbnB1dHMJID0gMSwKKwkJLmlucHV0cyAJID0geworCQkJeworCQkJCS52aWRlb19pbnB1dAk9IDAsCisJCQkJLm5hbWUJCT0gIkNvbXBvc2l0ZSIsCisJCQl9LAorCQl9LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGdvNzAwN191c2JfYm9hcmQgYm9hcmRfZW5kdXJhID0geworCS5mbGFncwkJPSAwLAorCS5tYWluX2luZm8JPSB7CisJCS5maXJtd2FyZQkgPSAiZ283MDA3dHYuYmluIiwKKwkJLmZsYWdzCQkgPSAwLAorCQkuYXVkaW9fZmxhZ3MJID0gR083MDA3X0FVRElPX0kyU19NT0RFXzEgfAorCQkJCQlHTzcwMDdfQVVESU9fSTJTX01BU1RFUiB8CisJCQkJCUdPNzAwN19BVURJT19XT1JEXzE2LAorCQkuYXVkaW9fcmF0ZQkgPSA4MDAwLAorCQkuYXVkaW9fYmNsa19kaXYJID0gNDgsCisJCS5hdWRpb19tYWluX2RpdgkgPSA4LAorCQkuaHBpX2J1ZmZlcl9jYXAgID0gMCwKKwkJLnNlbnNvcl9mbGFncwkgPSBHTzcwMDdfU0VOU09SXzY1NiB8CisJCQkJCUdPNzAwN19TRU5TT1JfVFYsCisJCS5zZW5zb3JfaF9vZmZzZXQgPSA4LAorCQkubnVtX2kyY19kZXZzCSA9IDAsCisJCS5udW1faW5wdXRzCSA9IDEsCisJCS5pbnB1dHMgCSA9IHsKKwkJCXsKKwkJCQkubmFtZQkJPSAiQ2FtZXJhIiwKKwkJCX0sCisJCX0sCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X3VzYl9ib2FyZCBib2FyZF9hZGxpbmtfbXBnMjQgPSB7CisJLmZsYWdzCQk9IDAsCisJLm1haW5faW5mbwk9IHsKKwkJLmZpcm13YXJlCSA9ICJnbzcwMDd0di5iaW4iLAorCQkuZmxhZ3MJCSA9IEdPNzAwN19CT0FSRF9VU0VfT05CT0FSRF9JMkMsCisJCS5hdWRpb19mbGFncwkgPSBHTzcwMDdfQVVESU9fSTJTX01PREVfMSB8CisJCQkJCUdPNzAwN19BVURJT19JMlNfTUFTVEVSIHwKKwkJCQkJR083MDA3X0FVRElPX1dPUkRfMTYsCisJCS5hdWRpb19yYXRlCSA9IDQ4MDAwLAorCQkuYXVkaW9fYmNsa19kaXYJID0gOCwKKwkJLmF1ZGlvX21haW5fZGl2CSA9IDIsCisJCS5ocGlfYnVmZmVyX2NhcCAgPSAwLAorCQkuc2Vuc29yX2ZsYWdzCSA9IEdPNzAwN19TRU5TT1JfNjU2IHwKKwkJCQkJR083MDA3X1NFTlNPUl9UViB8CisJCQkJCUdPNzAwN19TRU5TT1JfVkJJLAorCQkubnVtX2kyY19kZXZzCSA9IDEsCisJCS5pMmNfZGV2cwkgPSB7CisJCQl7CisJCQkJLmlkCT0gSTJDX0RSSVZFUklEX1dJU19UVzI4MDQsCisJCQkJLmFkZHIJPSAweDAwLCAvKiB5ZXMsIHJlYWxseSAqLworCQkJfSwKKwkJfSwKKwkJLm51bV9pbnB1dHMJID0gMSwKKwkJLmlucHV0cyAJID0geworCQkJeworCQkJCS5uYW1lCQk9ICJDb21wb3NpdGUiLAorCQkJfSwKKwkJfSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGdvNzAwN191c2JfaWRfdGFibGVbXSA9IHsKKwl7CisJCS5tYXRjaF9mbGFncwk9IFVTQl9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX0FORF9WRVJTSU9OIHwKKwkJCQkJVVNCX0RFVklDRV9JRF9NQVRDSF9JTlRfSU5GTywKKwkJLmlkVmVuZG9yCT0gMHgwZWIxLCAgLyogVmVuZG9yIElEIG9mIFdJUyBUZWNobm9sb2dpZXMgKi8KKwkJLmlkUHJvZHVjdAk9IDB4NzAwNywgIC8qIFByb2R1Y3QgSUQgb2YgR083MDA3U0IgY2hpcCAqLworCQkuYmNkRGV2aWNlX2xvCT0gMHgyMDAsICAgLyogUmV2aXNpb24gbnVtYmVyIG9mIFhNZW4gKi8KKwkJLmJjZERldmljZV9oaQk9IDB4MjAwLAorCQkuYkludGVyZmFjZUNsYXNzCT0gMjU1LAorCQkuYkludGVyZmFjZVN1YkNsYXNzCT0gMCwKKwkJLmJJbnRlcmZhY2VQcm90b2NvbAk9IDI1NSwKKwkJLmRyaXZlcl9pbmZvCT0gKGtlcm5lbF91bG9uZ190KUdPNzAwN19CT0FSRElEX1hNRU4sCisJfSwKKwl7CisJCS5tYXRjaF9mbGFncwk9IFVTQl9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX0FORF9WRVJTSU9OLAorCQkuaWRWZW5kb3IJPSAweDBlYjEsICAvKiBWZW5kb3IgSUQgb2YgV0lTIFRlY2hub2xvZ2llcyAqLworCQkuaWRQcm9kdWN0CT0gMHg3MDA3LCAgLyogUHJvZHVjdCBJRCBvZiBHTzcwMDdTQiBjaGlwICovCisJCS5iY2REZXZpY2VfbG8JPSAweDIwMiwgICAvKiBSZXZpc2lvbiBudW1iZXIgb2YgTWF0cml4IElJICovCisJCS5iY2REZXZpY2VfaGkJPSAweDIwMiwKKwkJLmRyaXZlcl9pbmZvCT0gKGtlcm5lbF91bG9uZ190KUdPNzAwN19CT0FSRElEX01BVFJJWF9JSSwKKwl9LAorCXsKKwkJLm1hdGNoX2ZsYWdzCT0gVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfQU5EX1ZFUlNJT04sCisJCS5pZFZlbmRvcgk9IDB4MGViMSwgIC8qIFZlbmRvciBJRCBvZiBXSVMgVGVjaG5vbG9naWVzICovCisJCS5pZFByb2R1Y3QJPSAweDcwMDcsICAvKiBQcm9kdWN0IElEIG9mIEdPNzAwN1NCIGNoaXAgKi8KKwkJLmJjZERldmljZV9sbwk9IDB4MjA0LCAgIC8qIFJldmlzaW9uIG51bWJlciBvZiBNYXRyaXggKi8KKwkJLmJjZERldmljZV9oaQk9IDB4MjA0LCAgIC8qICAgICBSZWxvYWRlZCAqLworCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfTUFUUklYX1JFTE9BRCwKKwl9LAorCXsKKwkJLm1hdGNoX2ZsYWdzCT0gVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfQU5EX1ZFUlNJT04gfAorCQkJCQlVU0JfREVWSUNFX0lEX01BVENIX0lOVF9JTkZPLAorCQkuaWRWZW5kb3IJPSAweDBlYjEsICAvKiBWZW5kb3IgSUQgb2YgV0lTIFRlY2hub2xvZ2llcyAqLworCQkuaWRQcm9kdWN0CT0gMHg3MDA3LCAgLyogUHJvZHVjdCBJRCBvZiBHTzcwMDdTQiBjaGlwICovCisJCS5iY2REZXZpY2VfbG8JPSAweDIwNSwgICAvKiBSZXZpc2lvbiBudW1iZXIgb2YgWE1lbi1JSSAqLworCQkuYmNkRGV2aWNlX2hpCT0gMHgyMDUsCisJCS5iSW50ZXJmYWNlQ2xhc3MJPSAyNTUsCisJCS5iSW50ZXJmYWNlU3ViQ2xhc3MJPSAwLAorCQkuYkludGVyZmFjZVByb3RvY29sCT0gMjU1LAorCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfWE1FTl9JSSwKKwl9LAorCXsKKwkJLm1hdGNoX2ZsYWdzCT0gVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfQU5EX1ZFUlNJT04sCisJCS5pZFZlbmRvcgk9IDB4MGViMSwgIC8qIFZlbmRvciBJRCBvZiBXSVMgVGVjaG5vbG9naWVzICovCisJCS5pZFByb2R1Y3QJPSAweDcwMDcsICAvKiBQcm9kdWN0IElEIG9mIEdPNzAwN1NCIGNoaXAgKi8KKwkJLmJjZERldmljZV9sbwk9IDB4MjA4LCAgIC8qIFJldmlzaW9uIG51bWJlciBvZiBTdGFyIFRyZWsgKi8KKwkJLmJjZERldmljZV9oaQk9IDB4MjA4LAorCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfU1RBUl9UUkVLLAorCX0sCisJeworCQkubWF0Y2hfZmxhZ3MJPSBVU0JfREVWSUNFX0lEX01BVENIX0RFVklDRV9BTkRfVkVSU0lPTiB8CisJCQkJCVVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX0lORk8sCisJCS5pZFZlbmRvcgk9IDB4MGViMSwgIC8qIFZlbmRvciBJRCBvZiBXSVMgVGVjaG5vbG9naWVzICovCisJCS5pZFByb2R1Y3QJPSAweDcwMDcsICAvKiBQcm9kdWN0IElEIG9mIEdPNzAwN1NCIGNoaXAgKi8KKwkJLmJjZERldmljZV9sbwk9IDB4MjA5LCAgIC8qIFJldmlzaW9uIG51bWJlciBvZiBYTWVuLUlJSSAqLworCQkuYmNkRGV2aWNlX2hpCT0gMHgyMDksCisJCS5iSW50ZXJmYWNlQ2xhc3MJPSAyNTUsCisJCS5iSW50ZXJmYWNlU3ViQ2xhc3MJPSAwLAorCQkuYkludGVyZmFjZVByb3RvY29sCT0gMjU1LAorCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfWE1FTl9JSUksCisJfSwKKwl7CisJCS5tYXRjaF9mbGFncwk9IFVTQl9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX0FORF9WRVJTSU9OLAorCQkuaWRWZW5kb3IJPSAweDBlYjEsICAvKiBWZW5kb3IgSUQgb2YgV0lTIFRlY2hub2xvZ2llcyAqLworCQkuaWRQcm9kdWN0CT0gMHg3MDA3LCAgLyogUHJvZHVjdCBJRCBvZiBHTzcwMDdTQiBjaGlwICovCisJCS5iY2REZXZpY2VfbG8JPSAweDIxMCwgICAvKiBSZXZpc2lvbiBudW1iZXIgb2YgTWF0cml4ICovCisJCS5iY2REZXZpY2VfaGkJPSAweDIxMCwgICAvKiAgICAgUmV2b2x1dGlvbiAqLworCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfTUFUUklYX1JFViwKKwl9LAorCXsKKwkJLm1hdGNoX2ZsYWdzCT0gVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfQU5EX1ZFUlNJT04sCisJCS5pZFZlbmRvcgk9IDB4MDkzYiwgIC8qIFZlbmRvciBJRCBvZiBQbGV4dG9yICovCisJCS5pZFByb2R1Y3QJPSAweGExMDIsICAvKiBQcm9kdWN0IElEIG9mIE00MDJVICovCisJCS5iY2REZXZpY2VfbG8JPSAweDEsCSAgIC8qIHJldmlzaW9uIG51bWJlciBvZiBCbHVlYmVycnkgKi8KKwkJLmJjZERldmljZV9oaQk9IDB4MSwKKwkJLmRyaXZlcl9pbmZvCT0gKGtlcm5lbF91bG9uZ190KUdPNzAwN19CT0FSRElEX1BYX000MDJVLAorCX0sCisJeworCQkubWF0Y2hfZmxhZ3MJPSBVU0JfREVWSUNFX0lEX01BVENIX0RFVklDRV9BTkRfVkVSU0lPTiwKKwkJLmlkVmVuZG9yCT0gMHgwOTNiLCAgLyogVmVuZG9yIElEIG9mIFBsZXh0b3IgKi8KKwkJLmlkUHJvZHVjdAk9IDB4YTEwNCwgIC8qIFByb2R1Y3QgSUQgb2YgVFY0MDJVICovCisJCS5iY2REZXZpY2VfbG8JPSAweDEsCisJCS5iY2REZXZpY2VfaGkJPSAweDEsCisJCS5kcml2ZXJfaW5mbwk9IChrZXJuZWxfdWxvbmdfdClHTzcwMDdfQk9BUkRJRF9QWF9UVjQwMlVfQU5ZLAorCX0sCisJeworCQkubWF0Y2hfZmxhZ3MJPSBVU0JfREVWSUNFX0lEX01BVENIX0RFVklDRV9BTkRfVkVSU0lPTiwKKwkJLmlkVmVuZG9yCT0gMHgxMGZkLCAgLyogVmVuZG9yIElEIG9mIEFudWJpcyBFbGVjdHJvbmljcyAqLworCQkuaWRQcm9kdWN0CT0gMHhkZTAwLCAgLyogUHJvZHVjdCBJRCBvZiBMaWZldmlldyBMUjE5MiAqLworCQkuYmNkRGV2aWNlX2xvCT0gMHgxLAorCQkuYmNkRGV2aWNlX2hpCT0gMHgxLAorCQkuZHJpdmVyX2luZm8JPSAoa2VybmVsX3Vsb25nX3QpR083MDA3X0JPQVJESURfTElGRVZJRVdfTFIxOTIsCisJfSwKKwl7IH0JCQkJCS8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgZ283MDA3X3VzYl9pZF90YWJsZSk7CisKKy8qKioqKioqKioqKioqKioqKioqKiogRHJpdmVyIGZvciBFWi1VU0IgSFBJIGludGVyZmFjZSAqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgZ283MDA3X3VzYl92ZW5kb3JfcmVxdWVzdChzdHJ1Y3QgZ283MDA3ICpnbywgaW50IHJlcXVlc3QsCisJCWludCB2YWx1ZSwgaW50IGluZGV4LCB2b2lkICp0cmFuc2Zlcl9idWZmZXIsIGludCBsZW5ndGgsIGludCBpbikKK3sKKwlzdHJ1Y3QgZ283MDA3X3VzYiAqdXNiID0gZ28tPmhwaV9jb250ZXh0OworCWludCB0aW1lb3V0ID0gNTAwMDsKKworCWlmIChpbikgeworCQlyZXR1cm4gdXNiX2NvbnRyb2xfbXNnKHVzYi0+dXNiZGV2LAorCQkJCXVzYl9yY3ZjdHJscGlwZSh1c2ItPnVzYmRldiwgMCksIHJlcXVlc3QsCisJCQkJVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0RFVklDRSB8IFVTQl9ESVJfSU4sCisJCQkJdmFsdWUsIGluZGV4LCB0cmFuc2Zlcl9idWZmZXIsIGxlbmd0aCwgdGltZW91dCk7CisJfSBlbHNlIHsKKwkJcmV0dXJuIHVzYl9jb250cm9sX21zZyh1c2ItPnVzYmRldiwKKwkJCQl1c2Jfc25kY3RybHBpcGUodXNiLT51c2JkZXYsIDApLCByZXF1ZXN0LAorCQkJCVVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsCisJCQkJdmFsdWUsIGluZGV4LCB0cmFuc2Zlcl9idWZmZXIsIGxlbmd0aCwgdGltZW91dCk7CisJfQorfQorCitzdGF0aWMgaW50IGdvNzAwN191c2JfaW50ZXJmYWNlX3Jlc2V0KHN0cnVjdCBnbzcwMDcgKmdvKQoreworCXN0cnVjdCBnbzcwMDdfdXNiICp1c2IgPSBnby0+aHBpX2NvbnRleHQ7CisJdTE2IGludHJfdmFsLCBpbnRyX2RhdGE7CisKKwkvKiBSZXNldCBlbmNvZGVyICovCisJaWYgKGdvNzAwN193cml0ZV9pbnRlcnJ1cHQoZ28sIDB4MDAwMSwgMHgwMDAxKSA8IDApCisJCXJldHVybiAtMTsKKwltc2xlZXAoMTAwKTsKKworCWlmICh1c2ItPmJvYXJkLT5mbGFncyAmIEdPNzAwN19VU0JfRVpVU0IpIHsKKwkJLyogUmVzZXQgYnVmZmVyIGluIEVaLVVTQiAqLworI2lmZGVmIEdPNzAwN19VU0JfREVCVUcKKwkJcHJpbnRrKEtFUk5fREVCVUcgImdvNzAwNy11c2I6IHJlc2V0dGluZyBFWi1VU0IgYnVmZmVyc1xuIik7CisjZW5kaWYKKwkJaWYgKGdvNzAwN191c2JfdmVuZG9yX3JlcXVlc3QoZ28sIDB4MTAsIDAsIDAsIE5VTEwsIDAsIDApIDwgMCB8fAorCQkgICAgZ283MDA3X3VzYl92ZW5kb3JfcmVxdWVzdChnbywgMHgxMCwgMCwgMCwgTlVMTCwgMCwgMCkgPCAwKQorCQkJcmV0dXJuIC0xOworCisJCS8qIFJlc2V0IGVuY29kZXIgYWdhaW4gKi8KKwkJaWYgKGdvNzAwN193cml0ZV9pbnRlcnJ1cHQoZ28sIDB4MDAwMSwgMHgwMDAxKSA8IDApCisJCQlyZXR1cm4gLTE7CisJCW1zbGVlcCgxMDApOworCX0KKworCS8qIFdhaXQgZm9yIGFuIGludGVycnVwdCB0byBpbmRpY2F0ZSBzdWNjZXNzZnVsIGhhcmR3YXJlIHJlc2V0ICovCisJaWYgKGdvNzAwN19yZWFkX2ludGVycnVwdChnbywgJmludHJfdmFsLCAmaW50cl9kYXRhKSA8IDAgfHwKKwkJCShpbnRyX3ZhbCAmIH4weDEpICE9IDB4NTVhYSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJnbzcwMDctdXNiOiB1bmFibGUgdG8gcmVzZXQgdGhlIFVTQiBpbnRlcmZhY2VcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGdvNzAwN191c2JfZXp1c2Jfd3JpdGVfaW50ZXJydXB0KHN0cnVjdCBnbzcwMDcgKmdvLAorCQkJCQkJaW50IGFkZHIsIGludCBkYXRhKQoreworCXN0cnVjdCBnbzcwMDdfdXNiICp1c2IgPSBnby0+aHBpX2NvbnRleHQ7CisJaW50IGksIHI7CisJdTE2IHN0YXR1c19yZWc7CisJaW50IHRpbWVvdXQgPSA1MDA7CisKKyNpZmRlZiBHTzcwMDdfVVNCX0RFQlVHCisJcHJpbnRrKEtFUk5fREVCVUcKKwkJImdvNzAwNy11c2I6IFdyaXRlSW50ZXJydXB0OiAlMDR4ICUwNHhcbiIsIGFkZHIsIGRhdGEpOworI2VuZGlmCisKKwlmb3IgKGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKwkJciA9IHVzYl9jb250cm9sX21zZyh1c2ItPnVzYmRldiwKKwkJCQl1c2JfcmN2Y3RybHBpcGUodXNiLT51c2JkZXYsIDApLCAweDE0LAorCQkJCVVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UgfCBVU0JfRElSX0lOLAorCQkJCTAsIEhQSV9TVEFUVVNfQUREUiwgJnN0YXR1c19yZWcsCisJCQkJc2l6ZW9mKHN0YXR1c19yZWcpLCB0aW1lb3V0KTsKKwkJaWYgKHIgPCAwKQorCQkJZ290byB3cml0ZV9pbnRfZXJyb3I7CisJCV9fbGUxNl90b19jcHVzKCZzdGF0dXNfcmVnKTsKKwkJaWYgKCEoc3RhdHVzX3JlZyAmIDB4MDAxMCkpCisJCQlicmVhazsKKwkJbXNsZWVwKDEwKTsKKwl9CisJaWYgKGkgPT0gMTAwKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkJImdvNzAwNy11c2I6IGRldmljZSBpcyBodW5nLCBzdGF0dXMgcmVnID0gMHglMDR4XG4iLAorCQkJc3RhdHVzX3JlZyk7CisJCXJldHVybiAtMTsKKwl9CisJciA9IHVzYl9jb250cm9sX21zZyh1c2ItPnVzYmRldiwgdXNiX3NuZGN0cmxwaXBlKHVzYi0+dXNiZGV2LCAwKSwgMHgxMiwKKwkJCVVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsIGRhdGEsCisJCQlJTlRfUEFSQU1fQUREUiwgTlVMTCwgMCwgdGltZW91dCk7CisJaWYgKHIgPCAwKQorCQlnb3RvIHdyaXRlX2ludF9lcnJvcjsKKwlyID0gdXNiX2NvbnRyb2xfbXNnKHVzYi0+dXNiZGV2LCB1c2Jfc25kY3RybHBpcGUodXNiLT51c2JkZXYsIDApLAorCQkJMHgxMiwgVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0RFVklDRSwgYWRkciwKKwkJCUlOVF9JTkRFWF9BRERSLCBOVUxMLCAwLCB0aW1lb3V0KTsKKwlpZiAociA8IDApCisJCWdvdG8gd3JpdGVfaW50X2Vycm9yOworCXJldHVybiAwOworCit3cml0ZV9pbnRfZXJyb3I6CisJcHJpbnRrKEtFUk5fRVJSICJnbzcwMDctdXNiOiBlcnJvciBpbiBXcml0ZUludGVycnVwdDogJWRcbiIsIHIpOworCXJldHVybiByOworfQorCitzdGF0aWMgaW50IGdvNzAwN191c2Jfb25ib2FyZF93cml0ZV9pbnRlcnJ1cHQoc3RydWN0IGdvNzAwNyAqZ28sCisJCQkJCQlpbnQgYWRkciwgaW50IGRhdGEpCit7CisJc3RydWN0IGdvNzAwN191c2IgKnVzYiA9IGdvLT5ocGlfY29udGV4dDsKKwl1OCAqdGJ1ZjsKKwlpbnQgcjsKKwlpbnQgdGltZW91dCA9IDUwMDsKKworI2lmZGVmIEdPNzAwN19VU0JfREVCVUcKKwlwcmludGsoS0VSTl9ERUJVRworCQkiZ283MDA3LXVzYjogV3JpdGVJbnRlcnJ1cHQ6ICUwNHggJTA0eFxuIiwgYWRkciwgZGF0YSk7CisjZW5kaWYKKworCXRidWYgPSBrbWFsbG9jKDgsIEdGUF9LRVJORUwpOworCWlmICh0YnVmID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCW1lbXNldCh0YnVmLCAwLCA4KTsKKwl0YnVmWzBdID0gZGF0YSAmIDB4ZmY7CisJdGJ1ZlsxXSA9IGRhdGEgPj4gODsKKwl0YnVmWzJdID0gYWRkciAmIDB4ZmY7CisJdGJ1ZlszXSA9IGFkZHIgPj4gODsKKwlyID0gdXNiX2NvbnRyb2xfbXNnKHVzYi0+dXNiZGV2LCB1c2Jfc25kY3RybHBpcGUodXNiLT51c2JkZXYsIDIpLCAweDAwLAorCQkJVVNCX1RZUEVfVkVORE9SIHwgVVNCX1JFQ0lQX0VORFBPSU5ULCAweDU1YWEsCisJCQkweGYwZjAsIHRidWYsIDgsIHRpbWVvdXQpOworCWtmcmVlKHRidWYpOworCWlmIChyIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IGVycm9yIGluIFdyaXRlSW50ZXJydXB0OiAlZFxuIiwgcik7CisJCXJldHVybiByOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ283MDA3X3VzYl9yZWFkaW50ZXJydXB0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYikKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbyA9IChzdHJ1Y3QgZ283MDA3ICopdXJiLT5jb250ZXh0OworCXUxNiAqcmVncyA9ICh1MTYgKil1cmItPnRyYW5zZmVyX2J1ZmZlcjsKKworCWlmICh1cmItPnN0YXR1cyAhPSAwKSB7CisJCWlmICh1cmItPnN0YXR1cyAhPSAtRVNIVVRET1dOICYmCisJCQkJZ28tPnN0YXR1cyAhPSBTVEFUVVNfU0hVVERPV04pIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJCSJnbzcwMDctdXNiOiBlcnJvciBpbiByZWFkIGludGVycnVwdDogJWRcbiIsCisJCQkJdXJiLT5zdGF0dXMpOworCQl9IGVsc2UgeworCQkJd2FrZV91cCgmZ28tPmludGVycnVwdF93YWl0cSk7CisJCQlyZXR1cm47CisJCX0KKwl9IGVsc2UgaWYgKHVyYi0+YWN0dWFsX2xlbmd0aCAhPSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJnbzcwMDctdXNiOiBzaG9ydCByZWFkIGluIGludGVycnVwdCBwaXBlIVxuIik7CisJfSBlbHNlIHsKKwkJZ28tPmludGVycnVwdF9hdmFpbGFibGUgPSAxOworCQlnby0+aW50ZXJydXB0X2RhdGEgPSBfX2xlMTZfdG9fY3B1KHJlZ3NbMF0pOworCQlnby0+aW50ZXJydXB0X3ZhbHVlID0gX19sZTE2X3RvX2NwdShyZWdzWzFdKTsKKyNpZmRlZiBHTzcwMDdfVVNCX0RFQlVHCisJCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDctdXNiOiBSZWFkSW50ZXJydXB0OiAlMDR4ICUwNHhcbiIsCisJCQkJZ28tPmludGVycnVwdF92YWx1ZSwgZ28tPmludGVycnVwdF9kYXRhKTsKKyNlbmRpZgorCX0KKworCXdha2VfdXAoJmdvLT5pbnRlcnJ1cHRfd2FpdHEpOworfQorCitzdGF0aWMgaW50IGdvNzAwN191c2JfcmVhZF9pbnRlcnJ1cHQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IGdvNzAwN191c2IgKnVzYiA9IGdvLT5ocGlfY29udGV4dDsKKwlpbnQgcjsKKworCXIgPSB1c2Jfc3VibWl0X3VyYih1c2ItPmludHJfdXJiLCBHRlBfS0VSTkVMKTsKKwlpZiAociA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCQkiZ283MDA3LXVzYjogdW5hYmxlIHRvIHN1Ym1pdCBpbnRlcnJ1cHQgdXJiOiAlZFxuIiwgcik7CisJCXJldHVybiByOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ283MDA3X3VzYl9yZWFkX3ZpZGVvX3BpcGVfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gKHN0cnVjdCBnbzcwMDcgKil1cmItPmNvbnRleHQ7CisJaW50IHI7CisKKwlpZiAoIWdvLT5zdHJlYW1pbmcpIHsKKwkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZnby0+ZnJhbWVfd2FpdHEpOworCQlyZXR1cm47CisJfQorCWlmICh1cmItPnN0YXR1cyAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3LXVzYjogZXJyb3IgaW4gdmlkZW8gcGlwZTogJWRcbiIsCisJCQkJdXJiLT5zdGF0dXMpOworCQlyZXR1cm47CisJfQorCWlmICh1cmItPmFjdHVhbF9sZW5ndGggIT0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3LXVzYjogc2hvcnQgcmVhZCBpbiB2aWRlbyBwaXBlIVxuIik7CisJCXJldHVybjsKKwl9CisJZ283MDA3X3BhcnNlX3ZpZGVvX3N0cmVhbShnbywgdXJiLT50cmFuc2Zlcl9idWZmZXIsIHVyYi0+YWN0dWFsX2xlbmd0aCk7CisJciA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHIgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IGVycm9yIGluIHZpZGVvIHBpcGU6ICVkXG4iLCByKTsKK30KKworc3RhdGljIHZvaWQgZ283MDA3X3VzYl9yZWFkX2F1ZGlvX3BpcGVfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gKHN0cnVjdCBnbzcwMDcgKil1cmItPmNvbnRleHQ7CisJaW50IHI7CisKKwlpZiAoIWdvLT5zdHJlYW1pbmcpCisJCXJldHVybjsKKwlpZiAodXJiLT5zdGF0dXMgIT0gMCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IGVycm9yIGluIGF1ZGlvIHBpcGU6ICVkXG4iLAorCQkJCXVyYi0+c3RhdHVzKTsKKwkJcmV0dXJuOworCX0KKwlpZiAodXJiLT5hY3R1YWxfbGVuZ3RoICE9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCkgeworCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IHNob3J0IHJlYWQgaW4gYXVkaW8gcGlwZSFcbiIpOworCQlyZXR1cm47CisJfQorCWlmIChnby0+YXVkaW9fZGVsaXZlciAhPSBOVUxMKQorCQlnby0+YXVkaW9fZGVsaXZlcihnbywgdXJiLT50cmFuc2Zlcl9idWZmZXIsIHVyYi0+YWN0dWFsX2xlbmd0aCk7CisJciA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHIgPCAwKQorCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IGVycm9yIGluIGF1ZGlvIHBpcGU6ICVkXG4iLCByKTsKK30KKworc3RhdGljIGludCBnbzcwMDdfdXNiX3N0cmVhbV9zdGFydChzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwlzdHJ1Y3QgZ283MDA3X3VzYiAqdXNiID0gZ28tPmhwaV9jb250ZXh0OworCWludCBpLCByOworCisJZm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworCQlyID0gdXNiX3N1Ym1pdF91cmIodXNiLT52aWRlb191cmJzW2ldLCBHRlBfS0VSTkVMKTsKKwkJaWYgKHIgPCAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIgImdvNzAwNy11c2I6IGVycm9yIHN1Ym1pdHRpbmcgdmlkZW8gIgorCQkJCQkidXJiICVkOiAlZFxuIiwgaSwgcik7CisJCQlnb3RvIHZpZGVvX3N1Ym1pdF9mYWlsZWQ7CisJCX0KKwl9CisJaWYgKCFnby0+YXVkaW9fZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CisJCXIgPSB1c2Jfc3VibWl0X3VyYih1c2ItPmF1ZGlvX3VyYnNbaV0sIEdGUF9LRVJORUwpOworCQlpZiAociA8IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3LXVzYjogZXJyb3Igc3VibWl0dGluZyBhdWRpbyAiCisJCQkJCSJ1cmIgJWQ6ICVkXG4iLCBpLCByKTsKKwkJCWdvdG8gYXVkaW9fc3VibWl0X2ZhaWxlZDsKKwkJfQorCX0KKwlyZXR1cm4gMDsKKworYXVkaW9fc3VibWl0X2ZhaWxlZDoKKwlmb3IgKGkgPSAwOyBpIDwgODsgKytpKQorCQl1c2Jfa2lsbF91cmIodXNiLT5hdWRpb191cmJzW2ldKTsKK3ZpZGVvX3N1Ym1pdF9mYWlsZWQ6CisJZm9yIChpID0gMDsgaSA8IDg7ICsraSkKKwkJdXNiX2tpbGxfdXJiKHVzYi0+dmlkZW9fdXJic1tpXSk7CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IGdvNzAwN191c2Jfc3RyZWFtX3N0b3Aoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IGdvNzAwN191c2IgKnVzYiA9IGdvLT5ocGlfY29udGV4dDsKKwlpbnQgaTsKKworCWlmIChnby0+c3RhdHVzID09IFNUQVRVU19TSFVURE9XTikKKwkJcmV0dXJuIDA7CisJZm9yIChpID0gMDsgaSA8IDg7ICsraSkKKwkJdXNiX2tpbGxfdXJiKHVzYi0+dmlkZW9fdXJic1tpXSk7CisJaWYgKGdvLT5hdWRpb19lbmFibGVkKQorCQlmb3IgKGkgPSAwOyBpIDwgODsgKytpKQorCQkJdXNiX2tpbGxfdXJiKHVzYi0+YXVkaW9fdXJic1tpXSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X3VzYl9zZW5kX2Zpcm13YXJlKHN0cnVjdCBnbzcwMDcgKmdvLCB1OCAqZGF0YSwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgZ283MDA3X3VzYiAqdXNiID0gZ28tPmhwaV9jb250ZXh0OworCWludCB0cmFuc2ZlcnJlZCwgcGlwZTsKKwlpbnQgdGltZW91dCA9IDUwMDsKKworI2lmZGVmIEdPNzAwN19VU0JfREVCVUcKKwlwcmludGsoS0VSTl9ERUJVRyAiZ283MDA3LXVzYjogRG93bmxvYWRCdWZmZXIgc2VuZGluZyAlZCBieXRlc1xuIiwgbGVuKTsKKyNlbmRpZgorCisJaWYgKHVzYi0+Ym9hcmQtPmZsYWdzICYgR083MDA3X1VTQl9FWlVTQikKKwkJcGlwZSA9IHVzYl9zbmRidWxrcGlwZSh1c2ItPnVzYmRldiwgMik7CisJZWxzZQorCQlwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKHVzYi0+dXNiZGV2LCAzKTsKKworCXJldHVybiB1c2JfYnVsa19tc2codXNiLT51c2JkZXYsIHBpcGUsIGRhdGEsIGxlbiwKKwkJCQkJJnRyYW5zZmVycmVkLCB0aW1lb3V0KTsKK30KKworc3RhdGljIHN0cnVjdCBnbzcwMDdfaHBpX29wcyBnbzcwMDdfdXNiX2V6dXNiX2hwaV9vcHMgPSB7CisJLmludGVyZmFjZV9yZXNldAk9IGdvNzAwN191c2JfaW50ZXJmYWNlX3Jlc2V0LAorCS53cml0ZV9pbnRlcnJ1cHQJPSBnbzcwMDdfdXNiX2V6dXNiX3dyaXRlX2ludGVycnVwdCwKKwkucmVhZF9pbnRlcnJ1cHQJCT0gZ283MDA3X3VzYl9yZWFkX2ludGVycnVwdCwKKwkuc3RyZWFtX3N0YXJ0CQk9IGdvNzAwN191c2Jfc3RyZWFtX3N0YXJ0LAorCS5zdHJlYW1fc3RvcAkJPSBnbzcwMDdfdXNiX3N0cmVhbV9zdG9wLAorCS5zZW5kX2Zpcm13YXJlCQk9IGdvNzAwN191c2Jfc2VuZF9maXJtd2FyZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X2hwaV9vcHMgZ283MDA3X3VzYl9vbmJvYXJkX2hwaV9vcHMgPSB7CisJLmludGVyZmFjZV9yZXNldAk9IGdvNzAwN191c2JfaW50ZXJmYWNlX3Jlc2V0LAorCS53cml0ZV9pbnRlcnJ1cHQJPSBnbzcwMDdfdXNiX29uYm9hcmRfd3JpdGVfaW50ZXJydXB0LAorCS5yZWFkX2ludGVycnVwdAkJPSBnbzcwMDdfdXNiX3JlYWRfaW50ZXJydXB0LAorCS5zdHJlYW1fc3RhcnQJCT0gZ283MDA3X3VzYl9zdHJlYW1fc3RhcnQsCisJLnN0cmVhbV9zdG9wCQk9IGdvNzAwN191c2Jfc3RyZWFtX3N0b3AsCisJLnNlbmRfZmlybXdhcmUJCT0gZ283MDA3X3VzYl9zZW5kX2Zpcm13YXJlLAorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKiBEcml2ZXIgZm9yIEVaLVVTQiBJMkMgYWRhcHRlciAqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgZ283MDA3X3VzYl9pMmNfbWFzdGVyX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAorCQkJCQlzdHJ1Y3QgaTJjX21zZyBtc2dzW10sIGludCBudW0pCit7CisJc3RydWN0IGdvNzAwNyAqZ28gPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXB0ZXIpOworCXN0cnVjdCBnbzcwMDdfdXNiICp1c2IgPSBnby0+aHBpX2NvbnRleHQ7CisJdTggYnVmWzE2XTsKKwlpbnQgYnVmX2xlbiwgaTsKKwlpbnQgcmV0ID0gLTE7CisKKwlpZiAoZ28tPnN0YXR1cyA9PSBTVEFUVVNfU0hVVERPV04pCisJCXJldHVybiAtMTsKKworCWRvd24oJnVzYi0+aTJjX2xvY2spOworCisJZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7CisJCS8qIFRoZSBoYXJkd2FyZSBjb21tYW5kIGlzICJ3cml0ZSBzb21lIGJ5dGVzIHRoZW4gcmVhZCBzb21lCisJCSAqIGJ5dGVzIiwgc28gd2UgdHJ5IHRvIGNvYWxlc2NlIGEgd3JpdGUgZm9sbG93ZWQgYnkgYSByZWFkCisJCSAqIGludG8gYSBzaW5nbGUgVVNCIHRyYW5zYWN0aW9uICovCisJCWlmIChpICsgMSA8IG51bSAmJiBtc2dzW2ldLmFkZHIgPT0gbXNnc1tpICsgMV0uYWRkciAmJgorCQkJCSEobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKSAmJgorCQkJCShtc2dzW2kgKyAxXS5mbGFncyAmIEkyQ19NX1JEKSkgeworI2lmZGVmIEdPNzAwN19JMkNfREVCVUcKKwkJCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDctdXNiOiBpMmMgd3JpdGUvcmVhZCAlZC8lZCAiCisJCQkJCSJieXRlcyBvbiAlMDJ4XG4iLCBtc2dzW2ldLmxlbiwKKwkJCQkJbXNnc1tpICsgMV0ubGVuLCBtc2dzW2ldLmFkZHIpOworI2VuZGlmCisJCQlidWZbMF0gPSAweDAxOworCQkJYnVmWzFdID0gbXNnc1tpXS5sZW4gKyAxOworCQkJYnVmWzJdID0gbXNnc1tpXS5hZGRyIDw8IDE7CisJCQltZW1jcHkoJmJ1ZlszXSwgbXNnc1tpXS5idWYsIG1zZ3NbaV0ubGVuKTsKKwkJCWJ1Zl9sZW4gPSBtc2dzW2ldLmxlbiArIDM7CisJCQlidWZbYnVmX2xlbisrXSA9IG1zZ3NbKytpXS5sZW47CisJCX0gZWxzZSBpZiAobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKSB7CisjaWZkZWYgR083MDA3X0kyQ19ERUJVRworCQkJcHJpbnRrKEtFUk5fREVCVUcgImdvNzAwNy11c2I6IGkyYyByZWFkICVkICIKKwkJCQkJImJ5dGVzIG9uICUwMnhcbiIsIG1zZ3NbaV0ubGVuLAorCQkJCQltc2dzW2ldLmFkZHIpOworI2VuZGlmCisJCQlidWZbMF0gPSAweDAxOworCQkJYnVmWzFdID0gMTsKKwkJCWJ1ZlsyXSA9IG1zZ3NbaV0uYWRkciA8PCAxOworCQkJYnVmWzNdID0gbXNnc1tpXS5sZW47CisJCQlidWZfbGVuID0gNDsKKwkJfSBlbHNlIHsKKyNpZmRlZiBHTzcwMDdfSTJDX0RFQlVHCisJCQlwcmludGsoS0VSTl9ERUJVRyAiZ283MDA3LXVzYjogaTJjIHdyaXRlICVkICIKKwkJCQkJImJ5dGVzIG9uICUwMnhcbiIsIG1zZ3NbaV0ubGVuLAorCQkJCQltc2dzW2ldLmFkZHIpOworI2VuZGlmCisJCQlidWZbMF0gPSAweDAwOworCQkJYnVmWzFdID0gbXNnc1tpXS5sZW4gKyAxOworCQkJYnVmWzJdID0gbXNnc1tpXS5hZGRyIDw8IDE7CisJCQltZW1jcHkoJmJ1ZlszXSwgbXNnc1tpXS5idWYsIG1zZ3NbaV0ubGVuKTsKKwkJCWJ1Zl9sZW4gPSBtc2dzW2ldLmxlbiArIDM7CisJCQlidWZbYnVmX2xlbisrXSA9IDA7CisJCX0KKwkJaWYgKGdvNzAwN191c2JfdmVuZG9yX3JlcXVlc3QoZ28sIDB4MjQsIDAsIDAsCisJCQkJCQlidWYsIGJ1Zl9sZW4sIDApIDwgMCkKKwkJCWdvdG8gaTJjX2RvbmU7CisJCWlmIChtc2dzW2ldLmZsYWdzICYgSTJDX01fUkQpIHsKKwkJCW1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKwkJCWlmIChnbzcwMDdfdXNiX3ZlbmRvcl9yZXF1ZXN0KGdvLCAweDI1LCAwLCAwLCBidWYsCisJCQkJCQltc2dzW2ldLmxlbiArIDEsIDEpIDwgMCkKKwkJCQlnb3RvIGkyY19kb25lOworCQkJbWVtY3B5KG1zZ3NbaV0uYnVmLCBidWYgKyAxLCBtc2dzW2ldLmxlbik7CisJCX0KKwl9CisJcmV0ID0gMDsKKworaTJjX2RvbmU6CisJdXAoJnVzYi0+aTJjX2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1MzIgZ283MDA3X3VzYl9mdW5jdGlvbmFsaXR5KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3sKKwkvKiBObyBlcnJvcnMgYXJlIHJlcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSwgc28gd2UgZG9uJ3QgYm90aGVyCisJICogc3VwcG9ydGluZyBxdWljayB3cml0ZXMgdG8gYXZvaWQgY29uZnVzaW5nIHByb2JpbmcgKi8KKwlyZXR1cm4gKEkyQ19GVU5DX1NNQlVTX0VNVUwpICYgfkkyQ19GVU5DX1NNQlVTX1FVSUNLOworfQorCitzdGF0aWMgc3RydWN0IGkyY19hbGdvcml0aG0gZ283MDA3X3VzYl9hbGdvID0geworCS5tYXN0ZXJfeGZlcgk9IGdvNzAwN191c2JfaTJjX21hc3Rlcl94ZmVyLAorCS5mdW5jdGlvbmFsaXR5CT0gZ283MDA3X3VzYl9mdW5jdGlvbmFsaXR5LAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfYWRhcHRlciBnbzcwMDdfdXNiX2FkYXBfdGVtcGwgPSB7CisJLm93bmVyCQkJPSBUSElTX01PRFVMRSwKKwkuY2xhc3MJCQk9IEkyQ19DTEFTU19UVl9BTkFMT0csCisJLm5hbWUJCQk9ICJXSVMgR083MDA3U0IgRVotVVNCIiwKKwkuaWQJCQk9IEkyQ19BTEdPX0dPNzAwN19VU0IsCisJLmFsZ28JCQk9ICZnbzcwMDdfdXNiX2FsZ28sCit9OworCisvKioqKioqKioqKioqKioqKioqKioqIFVTQiBhZGQvcmVtb3ZlIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgZ283MDA3X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKKwkJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBnbzcwMDcgKmdvOworCXN0cnVjdCBnbzcwMDdfdXNiICp1c2I7CisJc3RydWN0IGdvNzAwN191c2JfYm9hcmQgKmJvYXJkOworCXN0cnVjdCB1c2JfZGV2aWNlICp1c2JkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOworCWNoYXIgKm5hbWU7CisJaW50IHZpZGVvX3BpcGUsIGksIHZfdXJiX2xlbjsKKworCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDctdXNiOiBwcm9iaW5nIG5ldyBHTzcwMDcgVVNCIGJvYXJkXG4iKTsKKworCXN3aXRjaCAoaWQtPmRyaXZlcl9pbmZvKSB7CisJY2FzZSBHTzcwMDdfQk9BUkRJRF9NQVRSSVhfSUk6CisJCW5hbWUgPSAiV0lTIE1hdHJpeCBJSSBvciBjb21wYXRpYmxlIjsKKwkJYm9hcmQgPSAmYm9hcmRfbWF0cml4X2lpOworCQlicmVhazsKKwljYXNlIEdPNzAwN19CT0FSRElEX01BVFJJWF9SRUxPQUQ6CisJCW5hbWUgPSAiV0lTIE1hdHJpeCBSZWxvYWRlZCBvciBjb21wYXRpYmxlIjsKKwkJYm9hcmQgPSAmYm9hcmRfbWF0cml4X3JlbG9hZDsKKwkJYnJlYWs7CisJY2FzZSBHTzcwMDdfQk9BUkRJRF9NQVRSSVhfUkVWOgorCQluYW1lID0gIldJUyBNYXRyaXggUmV2b2x1dGlvbiBvciBjb21wYXRpYmxlIjsKKwkJYm9hcmQgPSAmYm9hcmRfbWF0cml4X3Jldm9sdXRpb247CisJCWJyZWFrOworCWNhc2UgR083MDA3X0JPQVJESURfU1RBUl9UUkVLOgorCQluYW1lID0gIldJUyBTdGFyIFRyZWsgb3IgY29tcGF0aWJsZSI7CisJCWJvYXJkID0gJmJvYXJkX3N0YXJfdHJlazsKKwkJYnJlYWs7CisJY2FzZSBHTzcwMDdfQk9BUkRJRF9YTUVOOgorCQluYW1lID0gIldJUyBYTWVuIG9yIGNvbXBhdGlibGUiOworCQlib2FyZCA9ICZib2FyZF94bWVuOworCQlicmVhazsKKwljYXNlIEdPNzAwN19CT0FSRElEX1hNRU5fSUk6CisJCW5hbWUgPSAiV0lTIFhNZW4gSUkgb3IgY29tcGF0aWJsZSI7CisJCWJvYXJkID0gJmJvYXJkX3htZW47CisJCWJyZWFrOworCWNhc2UgR083MDA3X0JPQVJESURfWE1FTl9JSUk6CisJCW5hbWUgPSAiV0lTIFhNZW4gSUlJIG9yIGNvbXBhdGlibGUiOworCQlib2FyZCA9ICZib2FyZF94bWVuOworCQlicmVhazsKKwljYXNlIEdPNzAwN19CT0FSRElEX1BYX000MDJVOgorCQluYW1lID0gIlBsZXh0b3IgUFgtTTQwMlUiOworCQlib2FyZCA9ICZib2FyZF9tYXRyaXhfaWk7CisJCWJyZWFrOworCWNhc2UgR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0FOWToKKwkJbmFtZSA9ICJQbGV4dG9yIFBYLVRWNDAyVSAodW5rbm93biB0dW5lcikiOworCQlib2FyZCA9ICZib2FyZF9weF90djQwMnU7CisJCWJyZWFrOworCWNhc2UgR083MDA3X0JPQVJESURfTElGRVZJRVdfTFIxOTI6CisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3LXVzYjogVGhlIExpZmV2aWV3IFRWIFdhbGtlciBVbHRyYSAiCisJCQkJImlzIG5vdCBzdXBwb3J0ZWQuICBTb3JyeSFcbiIpOworCQlyZXR1cm4gMDsKKwkJbmFtZSA9ICJMaWZldmlldyBUViBXYWxrZXIgVWx0cmEiOworCQlib2FyZCA9ICZib2FyZF9saWZldmlld19scjE5MjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSICJnbzcwMDctdXNiOiB1bmtub3duIGJvYXJkIElEICVkIVxuIiwKKwkJCQkodW5zaWduZWQgaW50KWlkLT5kcml2ZXJfaW5mbyk7CisJCXJldHVybiAwOworCX0KKworCXVzYiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBnbzcwMDdfdXNiKSwgR0ZQX0tFUk5FTCk7CisJaWYgKHVzYiA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwltZW1zZXQodXNiLCAwLCBzaXplb2Yoc3RydWN0IGdvNzAwN191c2IpKTsKKworCS8qIEFsbG9jYXRlIHRoZSBVUkIgYW5kIGJ1ZmZlciBmb3IgcmVjZWl2aW5nIGluY29taW5nIGludGVycnVwdHMgKi8KKwl1c2ItPmludHJfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKKwlpZiAodXNiLT5pbnRyX3VyYiA9PSBOVUxMKQorCQlnb3RvIGFsbG9jZmFpbDsKKwl1c2ItPmludHJfdXJiLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKDIqc2l6ZW9mKHUxNiksIEdGUF9LRVJORUwpOworCWlmICh1c2ItPmludHJfdXJiLT50cmFuc2Zlcl9idWZmZXIgPT0gTlVMTCkKKwkJZ290byBhbGxvY2ZhaWw7CisKKwlnbyA9IGdvNzAwN19hbGxvYygmYm9hcmQtPm1haW5faW5mbywgJmludGYtPmRldik7CisJaWYgKGdvID09IE5VTEwpCisJCWdvdG8gYWxsb2NmYWlsOworCXVzYi0+Ym9hcmQgPSBib2FyZDsKKwl1c2ItPnVzYmRldiA9IHVzYmRldjsKKwlnby0+Ym9hcmRfaWQgPSBpZC0+ZHJpdmVyX2luZm87CisJc3RybmNweShnby0+bmFtZSwgbmFtZSwgc2l6ZW9mKGdvLT5uYW1lKSk7CisJaWYgKGJvYXJkLT5mbGFncyAmIEdPNzAwN19VU0JfRVpVU0IpCisJCWdvLT5ocGlfb3BzID0gJmdvNzAwN191c2JfZXp1c2JfaHBpX29wczsKKwllbHNlCisJCWdvLT5ocGlfb3BzID0gJmdvNzAwN191c2Jfb25ib2FyZF9ocGlfb3BzOworCWdvLT5ocGlfY29udGV4dCA9IHVzYjsKKwl1c2JfZmlsbF9pbnRfdXJiKHVzYi0+aW50cl91cmIsIHVzYi0+dXNiZGV2LAorCQkJdXNiX3JjdmludHBpcGUodXNiLT51c2JkZXYsIDQpLAorCQkJdXNiLT5pbnRyX3VyYi0+dHJhbnNmZXJfYnVmZmVyLCAyKnNpemVvZih1MTYpLAorCQkJZ283MDA3X3VzYl9yZWFkaW50ZXJydXB0X2NvbXBsZXRlLCBnbywgOCk7CisJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBnbyk7CisKKwkvKiBCb290IHRoZSBHTzcwMDcgKi8KKwlpZiAoZ283MDA3X2Jvb3RfZW5jb2RlcihnbywgZ28tPmJvYXJkX2luZm8tPmZsYWdzICYKKwkJCQkJR083MDA3X0JPQVJEX1VTRV9PTkJPQVJEX0kyQykgPCAwKQorCQlnb3RvIGluaXRmYWlsOworCisJLyogUmVnaXN0ZXIgdGhlIEVaLVVTQiBJMkMgYWRhcHRlciwgaWYgd2UncmUgdXNpbmcgaXQgKi8KKwlpZiAoYm9hcmQtPmZsYWdzICYgR083MDA3X1VTQl9FWlVTQl9JMkMpIHsKKwkJbWVtY3B5KCZnby0+aTJjX2FkYXB0ZXIsICZnbzcwMDdfdXNiX2FkYXBfdGVtcGwsCisJCQkJc2l6ZW9mKGdvNzAwN191c2JfYWRhcF90ZW1wbCkpOworCQlpbml0X01VVEVYKCZ1c2ItPmkyY19sb2NrKTsKKwkJZ28tPmkyY19hZGFwdGVyLmRldi5wYXJlbnQgPSBnby0+ZGV2OworCQlpMmNfc2V0X2FkYXBkYXRhKCZnby0+aTJjX2FkYXB0ZXIsIGdvKTsKKwkJaWYgKGkyY19hZGRfYWRhcHRlcigmZ28tPmkyY19hZGFwdGVyKSA8IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJCSJnbzcwMDctdXNiOiBlcnJvcjogaTJjX2FkZF9hZGFwdGVyIGZhaWxlZFxuIik7CisJCQlnb3RvIGluaXRmYWlsOworCQl9CisJCWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUgPSAxOworCX0KKworCS8qIFBlbGNvIGFuZCBBZGxpbmsgcmV1c2VkIHRoZSBYTWVuIGFuZCBYTWVuLUlJSSB2ZW5kb3IgYW5kIHByb2R1Y3QKKwkgKiBJRHMgZm9yIHRoZWlyIG93biBpbmNvbXBhdGlibGUgZGVzaWducy4gIFdlIGNhbiBkZXRlY3QgWE1lbiBib2FyZHMKKwkgKiBieSBwcm9iaW5nIHRoZSBzZW5zb3IsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gcHJvYmUgdGhlIHNlbnNvcnMgb24KKwkgKiB0aGUgUGVsY28gYW5kIEFkbGluayBkZXNpZ25zIHNvIHdlIGRlZmF1bHQgdG8gdGhlIEFkbGluay4gIElmIGl0CisJICogaXMgYWN0dWFsbHkgYSBQZWxjbywgdGhlIHVzZXIgbXVzdCBzZXQgdGhlIGFzc3VtZV9lbmR1cmEgbW9kdWxlCisJICogcGFyYW1ldGVyLiAqLworCWlmICgoZ28tPmJvYXJkX2lkID09IEdPNzAwN19CT0FSRElEX1hNRU4gfHwKKwkJCQlnby0+Ym9hcmRfaWQgPT0gR083MDA3X0JPQVJESURfWE1FTl9JSUkpICYmCisJCQlnby0+aTJjX2FkYXB0ZXJfb25saW5lKSB7CisJCXVuaW9uIGkyY19zbWJ1c19kYXRhIGRhdGE7CisKKwkJLyogQ2hlY2sgdG8gc2VlIGlmIHJlZ2lzdGVyIDB4MEEgaXMgMHg3NiAqLworCQlpMmNfc21idXNfeGZlcigmZ28tPmkyY19hZGFwdGVyLCAweDIxLCBJMkNfQ0xJRU5UX1NDQ0IsCisJCQlJMkNfU01CVVNfUkVBRCwgMHgwQSwgSTJDX1NNQlVTX0JZVEVfREFUQSwgJmRhdGEpOworCQlpZiAoZGF0YS5ieXRlICE9IDB4NzYpIHsKKwkJCWlmIChhc3N1bWVfZW5kdXJhKSB7CisJCQkJZ28tPmJvYXJkX2lkID0gR083MDA3X0JPQVJESURfRU5EVVJBOworCQkJCXVzYi0+Ym9hcmQgPSBib2FyZCA9ICZib2FyZF9lbmR1cmE7CisJCQkJZ28tPmJvYXJkX2luZm8gPSAmYm9hcmQtPm1haW5faW5mbzsKKwkJCQlzdHJuY3B5KGdvLT5uYW1lLCAiUGVsY28gRW5kdXJhIiwKKwkJCQkJCXNpemVvZihnby0+bmFtZSkpOworCQkJfSBlbHNlIHsKKwkJCQl1MTYgY2hhbm5lbDsKKworCQkJCS8qIHNldCBHUElPNSB0byBiZSBhbiBvdXRwdXQsIGN1cnJlbnRseSBsb3cgKi8KKwkJCQlnbzcwMDdfd3JpdGVfYWRkcihnbywgMHgzYzgyLCAweDAwMDApOworCQkJCWdvNzAwN193cml0ZV9hZGRyKGdvLCAweDNjODAsIDB4MDBkZik7CisJCQkJLyogcmVhZCBjaGFubmVsIG51bWJlciBmcm9tIEdQSU9bMTowXSAqLworCQkJCWdvNzAwN19yZWFkX2FkZHIoZ28sIDB4M2M4MSwgJmNoYW5uZWwpOworCQkJCWNoYW5uZWwgJj0gMHgzOworCQkJCWdvLT5ib2FyZF9pZCA9IEdPNzAwN19CT0FSRElEX0FETElOS19NUEcyNDsKKwkJCQl1c2ItPmJvYXJkID0gYm9hcmQgPSAmYm9hcmRfYWRsaW5rX21wZzI0OworCQkJCWdvLT5ib2FyZF9pbmZvID0gJmJvYXJkLT5tYWluX2luZm87CisJCQkJZ28tPmNoYW5uZWxfbnVtYmVyID0gY2hhbm5lbDsKKwkJCQlzbnByaW50Zihnby0+bmFtZSwgc2l6ZW9mKGdvLT5uYW1lKSwKKwkJCQkJIkFkbGluayBQQ0ktTVBHMjQsIGNoYW5uZWwgIyVkIiwKKwkJCQkJY2hhbm5lbCk7CisJCQl9CisJCX0KKwl9CisKKwkvKiBQcm9iZSB0aGUgdHVuZXIgbW9kZWwgb24gdGhlIFRWNDAyVSAqLworCWlmIChnby0+Ym9hcmRfaWQgPT0gR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0FOWSkgeworCQl1OCBkYXRhWzNdOworCisJCS8qIEJvYXJkIHN0cmFwcGluZyBpbmRpY2F0ZXMgdHVuZXIgbW9kZWwgKi8KKwkJaWYgKGdvNzAwN191c2JfdmVuZG9yX3JlcXVlc3QoZ28sIDB4NDEsIDAsIDAsIGRhdGEsIDMsIDEpIDwgMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJnbzcwMDctdXNiOiBHUElPIHJlYWQgZmFpbGVkIVxuIik7CisJCQlnb3RvIGluaXRmYWlsOworCQl9CisJCXN3aXRjaCAoZGF0YVswXSA+PiA2KSB7CisJCWNhc2UgMToKKwkJCWdvLT5ib2FyZF9pZCA9IEdPNzAwN19CT0FSRElEX1BYX1RWNDAyVV9FVTsKKwkJCWdvLT50dW5lcl90eXBlID0gVFVORVJfU09OWV9CVEZfUEc0NzJaOworCQkJc3RybmNweShnby0+bmFtZSwgIlBsZXh0b3IgUFgtVFY0MDJVLUVVIiwKKwkJCQkJc2l6ZW9mKGdvLT5uYW1lKSk7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJZ28tPmJvYXJkX2lkID0gR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0pQOworCQkJZ28tPnR1bmVyX3R5cGUgPSBUVU5FUl9TT05ZX0JURl9QSzQ2N1o7CisJCQlzdHJuY3B5KGdvLT5uYW1lLCAiUGxleHRvciBQWC1UVjQwMlUtSlAiLAorCQkJCQlzaXplb2YoZ28tPm5hbWUpKTsKKwkJCWJyZWFrOworCQljYXNlIDM6CisJCQlnby0+Ym9hcmRfaWQgPSBHTzcwMDdfQk9BUkRJRF9QWF9UVjQwMlVfTkE7CisJCQlnby0+dHVuZXJfdHlwZSA9IFRVTkVSX1NPTllfQlRGX1BCNDYzWjsKKwkJCXN0cm5jcHkoZ28tPm5hbWUsICJQbGV4dG9yIFBYLVRWNDAyVS1OQSIsCisJCQkJCXNpemVvZihnby0+bmFtZSkpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGsoS0VSTl9ERUJVRyAiZ283MDA3LXVzYjogdW5hYmxlIHRvIGRldGVjdCAiCisJCQkJCQkidHVuZXIgdHlwZSFcbiIpOworCQkJYnJlYWs7CisJCX0KKwkJLyogQ29uZmlndXJlIHR1bmVyIG1vZGUgc2VsZWN0aW9uIGlucHV0cyBjb25uZWN0ZWQKKwkJICogdG8gdGhlIEVaLVVTQiBHUElPIG91dHB1dCBwaW5zICovCisJCWlmIChnbzcwMDdfdXNiX3ZlbmRvcl9yZXF1ZXN0KGdvLCAweDQwLCAweDdmMDIsIDAsCisJCQkJCU5VTEwsIDAsIDApIDwgMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJImdvNzAwNy11c2I6IEdQSU8gd3JpdGUgZmFpbGVkIVxuIik7CisJCQlnb3RvIGluaXRmYWlsOworCQl9CisJfQorCisJLyogUHJpbnQgYSBuYXN0eSBtZXNzYWdlIGlmIHRoZSB1c2VyIGF0dGVtcHRzIHRvIHVzZSBhIFVTQjIuMCBkZXZpY2UgaW4KKwkgKiBhIFVTQjEuMSBwb3J0LiAgVGhlcmUgd2lsbCBiZSBzaWxlbnQgY29ycnVwdGlvbiBvZiB0aGUgc3RyZWFtLiAqLworCWlmICgoYm9hcmQtPmZsYWdzICYgR083MDA3X1VTQl9FWlVTQikgJiYKKwkJCXVzYmRldi0+c3BlZWQgIT0gVVNCX1NQRUVEX0hJR0gpCisJCXByaW50ayhLRVJOX0VSUiAiZ283MDA3LXVzYjogKioqIFdBUk5JTkcgKioqICBUaGlzIGRldmljZSAiCisJCQkJIm11c3QgYmUgY29ubmVjdGVkIHRvIGEgVVNCIDIuMCBwb3J0ISAgIgorCQkJCSJBdHRlbXB0aW5nIHRvIGNhcHR1cmUgdmlkZW8gdGhyb3VnaCBhIFVTQiAxLjEgIgorCQkJCSJwb3J0IHdpbGwgcmVzdWx0IGluIHN0cmVhbSBjb3JydXB0aW9uLCBldmVuICIKKwkJCQkiYXQgbG93IGJpdHJhdGVzIVxuIik7CisKKwkvKiBEbyBhbnkgZmluYWwgR083MDA3IGluaXRpYWxpemF0aW9uLCB0aGVuIHJlZ2lzdGVyIHRoZQorCSAqIFY0TDIgYW5kIEFMU0EgaW50ZXJmYWNlcyAqLworCWlmIChnbzcwMDdfcmVnaXN0ZXJfZW5jb2RlcihnbykgPCAwKQorCQlnb3RvIGluaXRmYWlsOworCisJLyogQWxsb2NhdGUgdGhlIFVSQnMgYW5kIGJ1ZmZlcnMgZm9yIHJlY2VpdmluZyB0aGUgdmlkZW8gc3RyZWFtICovCisJaWYgKGJvYXJkLT5mbGFncyAmIEdPNzAwN19VU0JfRVpVU0IpIHsKKwkJdl91cmJfbGVuID0gMTAyNDsKKwkJdmlkZW9fcGlwZSA9IHVzYl9yY3ZidWxrcGlwZSh1c2ItPnVzYmRldiwgNik7CisJfSBlbHNlIHsKKwkJdl91cmJfbGVuID0gNTEyOworCQl2aWRlb19waXBlID0gdXNiX3JjdmJ1bGtwaXBlKHVzYi0+dXNiZGV2LCAxKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworCQl1c2ItPnZpZGVvX3VyYnNbaV0gPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOworCQlpZiAodXNiLT52aWRlb191cmJzW2ldID09IE5VTEwpCisJCQlnb3RvIGluaXRmYWlsOworCQl1c2ItPnZpZGVvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlciA9CisJCQkJCQlrbWFsbG9jKHZfdXJiX2xlbiwgR0ZQX0tFUk5FTCk7CisJCWlmICh1c2ItPnZpZGVvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlciA9PSBOVUxMKQorCQkJZ290byBpbml0ZmFpbDsKKwkJdXNiX2ZpbGxfYnVsa191cmIodXNiLT52aWRlb191cmJzW2ldLCB1c2ItPnVzYmRldiwgdmlkZW9fcGlwZSwKKwkJCQl1c2ItPnZpZGVvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlciwgdl91cmJfbGVuLAorCQkJCWdvNzAwN191c2JfcmVhZF92aWRlb19waXBlX2NvbXBsZXRlLCBnbyk7CisJfQorCisJLyogQWxsb2NhdGUgdGhlIFVSQnMgYW5kIGJ1ZmZlcnMgZm9yIHJlY2VpdmluZyB0aGUgYXVkaW8gc3RyZWFtICovCisJaWYgKChib2FyZC0+ZmxhZ3MgJiBHTzcwMDdfVVNCX0VaVVNCKSAmJiBnby0+YXVkaW9fZW5hYmxlZCkKKwkJZm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworCQkJdXNiLT5hdWRpb191cmJzW2ldID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKKwkJCWlmICh1c2ItPmF1ZGlvX3VyYnNbaV0gPT0gTlVMTCkKKwkJCQlnb3RvIGluaXRmYWlsOworCQkJdXNiLT5hdWRpb191cmJzW2ldLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKDQwOTYsCisJCQkJCQkJCUdGUF9LRVJORUwpOworCQkJaWYgKHVzYi0+YXVkaW9fdXJic1tpXS0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpCisJCQkJZ290byBpbml0ZmFpbDsKKwkJCXVzYl9maWxsX2J1bGtfdXJiKHVzYi0+YXVkaW9fdXJic1tpXSwgdXNiLT51c2JkZXYsCisJCQkJdXNiX3JjdmJ1bGtwaXBlKHVzYi0+dXNiZGV2LCA4KSwKKwkJCQl1c2ItPmF1ZGlvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlciwgNDA5NiwKKwkJCQlnbzcwMDdfdXNiX3JlYWRfYXVkaW9fcGlwZV9jb21wbGV0ZSwgZ28pOworCQl9CisKKworCWdvLT5zdGF0dXMgPSBTVEFUVVNfT05MSU5FOworCXJldHVybiAwOworCitpbml0ZmFpbDoKKwlnby0+c3RhdHVzID0gU1RBVFVTX1NIVVRET1dOOworCXJldHVybiAwOworCithbGxvY2ZhaWw6CisJaWYgKHVzYi0+aW50cl91cmIpIHsKKwkJa2ZyZWUodXNiLT5pbnRyX3VyYi0+dHJhbnNmZXJfYnVmZmVyKTsKKwkJdXNiX2ZyZWVfdXJiKHVzYi0+aW50cl91cmIpOworCX0KKwlrZnJlZSh1c2IpOworCXJldHVybiAtRU5PTUVNOworfQorCitzdGF0aWMgdm9pZCBnbzcwMDdfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCit7CisJc3RydWN0IGdvNzAwNyAqZ28gPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXN0cnVjdCBnbzcwMDdfdXNiICp1c2IgPSBnby0+aHBpX2NvbnRleHQ7CisJaW50IGk7CisKKwlnby0+c3RhdHVzID0gU1RBVFVTX1NIVVRET1dOOworCXVzYl9raWxsX3VyYih1c2ItPmludHJfdXJiKTsKKworCS8qIEZyZWUgVVNCLXJlbGF0ZWQgc3RydWN0cyAqLworCWZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKwkJaWYgKHVzYi0+dmlkZW9fdXJic1tpXSAhPSBOVUxMKSB7CisJCQlpZiAodXNiLT52aWRlb191cmJzW2ldLT50cmFuc2Zlcl9idWZmZXIgIT0gTlVMTCkKKwkJCQlrZnJlZSh1c2ItPnZpZGVvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlcik7CisJCQl1c2JfZnJlZV91cmIodXNiLT52aWRlb191cmJzW2ldKTsKKwkJfQorCQlpZiAodXNiLT5hdWRpb191cmJzW2ldICE9IE5VTEwpIHsKKwkJCWlmICh1c2ItPmF1ZGlvX3VyYnNbaV0tPnRyYW5zZmVyX2J1ZmZlciAhPSBOVUxMKQorCQkJCWtmcmVlKHVzYi0+YXVkaW9fdXJic1tpXS0+dHJhbnNmZXJfYnVmZmVyKTsKKwkJCXVzYl9mcmVlX3VyYih1c2ItPmF1ZGlvX3VyYnNbaV0pOworCQl9CisJfQorCWtmcmVlKHVzYi0+aW50cl91cmItPnRyYW5zZmVyX2J1ZmZlcik7CisJdXNiX2ZyZWVfdXJiKHVzYi0+aW50cl91cmIpOworCisJa2ZyZWUoZ28tPmhwaV9jb250ZXh0KTsKKworCWdvNzAwN19yZW1vdmUoZ28pOworfQorCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZ283MDA3X3VzYl9kcml2ZXIgPSB7CisJLm5hbWUJCT0gImdvNzAwNyIsCisJLnByb2JlCQk9IGdvNzAwN191c2JfcHJvYmUsCisJLmRpc2Nvbm5lY3QJPSBnbzcwMDdfdXNiX2Rpc2Nvbm5lY3QsCisJLmlkX3RhYmxlCT0gZ283MDA3X3VzYl9pZF90YWJsZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGdvNzAwN191c2JfaW5pdCh2b2lkKQoreworCXJldHVybiB1c2JfcmVnaXN0ZXIoJmdvNzAwN191c2JfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGdvNzAwN191c2JfY2xlYW51cCh2b2lkKQoreworCXVzYl9kZXJlZ2lzdGVyKCZnbzcwMDdfdXNiX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KGdvNzAwN191c2JfaW5pdCk7Cittb2R1bGVfZXhpdChnbzcwMDdfdXNiX2NsZWFudXApOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy12NGwyLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy12NGwyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRlMTE0MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LXY0bDIuYwpAQCAtMCwwICsxLDE0OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBNaWNyb25hcyBVU0EgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChWZXJzaW9uIDIpIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24gTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+CisjaW5jbHVkZSA8bGludXgvdGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWlvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworI2luY2x1ZGUgImdvNzAwNy5oIgorI2luY2x1ZGUgImdvNzAwNy1wcml2LmgiCisjaW5jbHVkZSAid2lzLWkyYy5oIgorCitzdGF0aWMgdm9pZCBkZWFjdGl2YXRlX2J1ZmZlcihzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqZ29idWYpCit7CisJaW50IGk7CisKKwlpZiAoZ29idWYtPnN0YXRlICE9IEJVRl9TVEFURV9JRExFKSB7CisJCWxpc3RfZGVsKCZnb2J1Zi0+c3RyZWFtKTsKKwkJZ29idWYtPnN0YXRlID0gQlVGX1NUQVRFX0lETEU7CisJfQorCWlmIChnb2J1Zi0+cGFnZV9jb3VudCA+IDApIHsKKwkJZm9yIChpID0gMDsgaSA8IGdvYnVmLT5wYWdlX2NvdW50OyArK2kpCisJCQlwYWdlX2NhY2hlX3JlbGVhc2UoZ29idWYtPnBhZ2VzW2ldKTsKKwkJZ29idWYtPnBhZ2VfY291bnQgPSAwOworCX0KK30KKworc3RhdGljIHZvaWQgYWJvcnRfcXVldWVkKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCXN0cnVjdCBnbzcwMDdfYnVmZmVyICpnb2J1ZiwgKm5leHQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZ29idWYsIG5leHQsICZnby0+c3RyZWFtLCBzdHJlYW0pIHsKKwkJZGVhY3RpdmF0ZV9idWZmZXIoZ29idWYpOworCX0KK30KKworc3RhdGljIGludCBnbzcwMDdfc3RyZWFtb2ZmKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCWludCByZXR2YWwgPSAtRUlOVkFMOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlkb3duKCZnby0+aHdfbG9jayk7CisJaWYgKGdvLT5zdHJlYW1pbmcpIHsKKwkJZ28tPnN0cmVhbWluZyA9IDA7CisJCWdvNzAwN19zdHJlYW1fc3RvcChnbyk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZnby0+c3BpbmxvY2ssIGZsYWdzKTsKKwkJYWJvcnRfcXVldWVkKGdvKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ28tPnNwaW5sb2NrLCBmbGFncyk7CisJCWdvNzAwN19yZXNldF9lbmNvZGVyKGdvKTsKKwkJcmV0dmFsID0gMDsKKwl9CisJdXAoJmdvLT5od19sb2NrKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnbzcwMDdfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbyA9IHZpZGVvX2dldF9kcnZkYXRhKHZpZGVvX2RldmRhdGEoZmlsZSkpOworCXN0cnVjdCBnbzcwMDdfZmlsZSAqZ29maDsKKworCWlmIChnby0+c3RhdHVzICE9IFNUQVRVU19PTkxJTkUpCisJCXJldHVybiAtRUJVU1k7CisJZ29maCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBnbzcwMDdfZmlsZSksIEdGUF9LRVJORUwpOworCWlmIChnb2ZoID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCSsrZ28tPnJlZl9jb3VudDsKKwlnb2ZoLT5nbyA9IGdvOworCWluaXRfTVVURVgoJmdvZmgtPmxvY2spOworCWdvZmgtPmJ1Zl9jb3VudCA9IDA7CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gZ29maDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnbzcwMDdfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZ283MDA3X2ZpbGUgKmdvZmggPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGdvNzAwNyAqZ28gPSBnb2ZoLT5nbzsKKworCWlmIChnb2ZoLT5idWZfY291bnQgPiAwKSB7CisJCWdvNzAwN19zdHJlYW1vZmYoZ28pOworCQlnby0+aW5fdXNlID0gMDsKKwkJa2ZyZWUoZ29maC0+YnVmcyk7CisJCWdvZmgtPmJ1Zl9jb3VudCA9IDA7CisJfQorCWtmcmVlKGdvZmgpOworCWlmICgtLWdvLT5yZWZfY291bnQgPT0gMCkKKwkJa2ZyZWUoZ28pOworCWZpbGUtPnByaXZhdGVfZGF0YSA9IE5VTEw7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1MzIgZ2V0X2ZyYW1lX3R5cGVfZmxhZyhzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqZ29idWYsIGludCBmb3JtYXQpCit7CisJdTggKmYgPSBwYWdlX2FkZHJlc3MoZ29idWYtPnBhZ2VzWzBdKTsKKworCXN3aXRjaCAoZm9ybWF0KSB7CisJY2FzZSBHTzcwMDdfRk9STUFUX01KUEVHOgorCQlyZXR1cm4gVjRMMl9CVUZfRkxBR19LRVlGUkFNRTsKKwljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzQ6CisJCXN3aXRjaCAoKGZbZ29idWYtPmZyYW1lX29mZnNldCArIDRdID4+IDYpICYgMHgzKSB7CisJCWNhc2UgMDoKKwkJCXJldHVybiBWNEwyX0JVRl9GTEFHX0tFWUZSQU1FOworCQljYXNlIDE6CisJCQlyZXR1cm4gVjRMMl9CVUZfRkxBR19QRlJBTUU7CisJCWNhc2UgMjoKKwkJCXJldHVybiBWNEwyX0JVRl9GTEFHX0JGUkFNRTsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAwOworCQl9CisJY2FzZSBHTzcwMDdfRk9STUFUX01QRUcxOgorCWNhc2UgR083MDA3X0ZPUk1BVF9NUEVHMjoKKwkJc3dpdGNoICgoZltnb2J1Zi0+ZnJhbWVfb2Zmc2V0ICsgNV0gPj4gMykgJiAweDcpIHsKKwkJY2FzZSAxOgorCQkJcmV0dXJuIFY0TDJfQlVGX0ZMQUdfS0VZRlJBTUU7CisJCWNhc2UgMjoKKwkJCXJldHVybiBWNEwyX0JVRl9GTEFHX1BGUkFNRTsKKwkJY2FzZSAzOgorCQkJcmV0dXJuIFY0TDJfQlVGX0ZMQUdfQkZSQU1FOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfY2FwdHVyZV9zaXplKHN0cnVjdCBnbzcwMDcgKmdvLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdCwgaW50IHRyeSkKK3sKKwlpbnQgc2Vuc29yX2hlaWdodCA9IDAsIHNlbnNvcl93aWR0aCA9IDA7CisJaW50IHdpZHRoLCBoZWlnaHQsIGk7CisKKwlpZiAoZm10ICE9IE5VTEwgJiYgZm10LT5mbXQucGl4LnBpeGVsZm9ybWF0ICE9IFY0TDJfUElYX0ZNVF9NSlBFRyAmJgorCQkJZm10LT5mbXQucGl4LnBpeGVsZm9ybWF0ICE9IFY0TDJfUElYX0ZNVF9NUEVHICYmCisJCQlmbXQtPmZtdC5waXgucGl4ZWxmb3JtYXQgIT0gVjRMMl9QSVhfRk1UX01QRUc0KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXN3aXRjaCAoZ28tPnN0YW5kYXJkKSB7CisJY2FzZSBHTzcwMDdfU1REX05UU0M6CisJCXNlbnNvcl93aWR0aCA9IDcyMDsKKwkJc2Vuc29yX2hlaWdodCA9IDQ4MDsKKwkJYnJlYWs7CisJY2FzZSBHTzcwMDdfU1REX1BBTDoKKwkJc2Vuc29yX3dpZHRoID0gNzIwOworCQlzZW5zb3JfaGVpZ2h0ID0gNTc2OworCQlicmVhazsKKwljYXNlIEdPNzAwN19TVERfT1RIRVI6CisJCXNlbnNvcl93aWR0aCA9IGdvLT5ib2FyZF9pbmZvLT5zZW5zb3Jfd2lkdGg7CisJCXNlbnNvcl9oZWlnaHQgPSBnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2hlaWdodDsKKwkJYnJlYWs7CisJfQorCisJaWYgKGZtdCA9PSBOVUxMKSB7CisJCXdpZHRoID0gc2Vuc29yX3dpZHRoOworCQloZWlnaHQgPSBzZW5zb3JfaGVpZ2h0OworCX0gZWxzZSBpZiAoZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9mbGFncyAmIEdPNzAwN19TRU5TT1JfU0NBTElORykgeworCQlpZiAoZm10LT5mbXQucGl4LndpZHRoID4gc2Vuc29yX3dpZHRoKQorCQkJd2lkdGggPSBzZW5zb3Jfd2lkdGg7CisJCWVsc2UgaWYgKGZtdC0+Zm10LnBpeC53aWR0aCA8IDE0NCkKKwkJCXdpZHRoID0gMTQ0OworCQllbHNlCisJCQl3aWR0aCA9IGZtdC0+Zm10LnBpeC53aWR0aCAmIH4weDBmOworCisJCWlmIChmbXQtPmZtdC5waXguaGVpZ2h0ID4gc2Vuc29yX2hlaWdodCkKKwkJCWhlaWdodCA9IHNlbnNvcl9oZWlnaHQ7CisJCWVsc2UgaWYgKGZtdC0+Zm10LnBpeC5oZWlnaHQgPCA5NikKKwkJCWhlaWdodCA9IDk2OworCQllbHNlCisJCQloZWlnaHQgPSBmbXQtPmZtdC5waXguaGVpZ2h0ICYgfjB4MGY7CisJfSBlbHNlIHsKKwkJaW50IHJlcXVlc3RlZF9zaXplID0gZm10LT5mbXQucGl4LndpZHRoICogZm10LT5mbXQucGl4LmhlaWdodDsKKwkJaW50IHNlbnNvcl9zaXplID0gc2Vuc29yX3dpZHRoICogc2Vuc29yX2hlaWdodDsKKworCQlpZiAoNjQgKiByZXF1ZXN0ZWRfc2l6ZSA8IDkgKiBzZW5zb3Jfc2l6ZSkgeworCQkJd2lkdGggPSBzZW5zb3Jfd2lkdGggLyA0OworCQkJaGVpZ2h0ID0gc2Vuc29yX2hlaWdodCAvIDQ7CisJCX0gZWxzZSBpZiAoNjQgKiByZXF1ZXN0ZWRfc2l6ZSA8IDM2ICogc2Vuc29yX3NpemUpIHsKKwkJCXdpZHRoID0gc2Vuc29yX3dpZHRoIC8gMjsKKwkJCWhlaWdodCA9IHNlbnNvcl9oZWlnaHQgLyAyOworCQl9IGVsc2UgeworCQkJd2lkdGggPSBzZW5zb3Jfd2lkdGg7CisJCQloZWlnaHQgPSBzZW5zb3JfaGVpZ2h0OworCQl9CisJCXdpZHRoICY9IH4weGY7CisJCWhlaWdodCAmPSB+MHhmOworCX0KKworCWlmIChmbXQgIT0gTlVMTCkgeworCQl1MzIgcGl4ZWxmb3JtYXQgPSBmbXQtPmZtdC5waXgucGl4ZWxmb3JtYXQ7CisKKwkJbWVtc2V0KGZtdCwgMCwgc2l6ZW9mKCpmbXQpKTsKKwkJZm10LT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCQlmbXQtPmZtdC5waXgud2lkdGggPSB3aWR0aDsKKwkJZm10LT5mbXQucGl4LmhlaWdodCA9IGhlaWdodDsKKwkJZm10LT5mbXQucGl4LnBpeGVsZm9ybWF0ID0gcGl4ZWxmb3JtYXQ7CisJCWZtdC0+Zm10LnBpeC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwkJZm10LT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IDA7CisJCWZtdC0+Zm10LnBpeC5zaXplaW1hZ2UgPSBHTzcwMDdfQlVGX1NJWkU7CisJCWZtdC0+Zm10LnBpeC5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NNUFRFMTcwTTsgLyogPz8gKi8KKwl9CisKKwlpZiAodHJ5KQorCQlyZXR1cm4gMDsKKworCWdvLT53aWR0aCA9IHdpZHRoOworCWdvLT5oZWlnaHQgPSBoZWlnaHQ7CisJZ28tPmVuY29kZXJfaF9vZmZzZXQgPSBnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2hfb2Zmc2V0OworCWdvLT5lbmNvZGVyX3Zfb2Zmc2V0ID0gZ28tPmJvYXJkX2luZm8tPnNlbnNvcl92X29mZnNldDsKKwlmb3IgKGkgPSAwOyBpIDwgNDsgKytpKQorCQlnby0+bW9kZXRbaV0uZW5hYmxlID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgMTYyNDsgKytpKQorCQlnby0+bW9kZXRfbWFwW2ldID0gMDsKKworCWlmIChnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYgR083MDA3X1NFTlNPUl9TQ0FMSU5HKSB7CisJCXN0cnVjdCB2aWRlb19kZWNvZGVyX3Jlc29sdXRpb24gcmVzOworCisJCXJlcy53aWR0aCA9IHdpZHRoOworCQlpZiAoaGVpZ2h0ID4gc2Vuc29yX2hlaWdodCAvIDIpIHsKKwkJCXJlcy5oZWlnaHQgPSBoZWlnaHQgLyAyOworCQkJZ28tPmVuY29kZXJfdl9oYWx2ZSA9IDA7CisJCX0gZWxzZSB7CisJCQlyZXMuaGVpZ2h0ID0gaGVpZ2h0OworCQkJZ28tPmVuY29kZXJfdl9oYWx2ZSA9IDE7CisJCX0KKwkJaWYgKGdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJCURFQ09ERVJfU0VUX1JFU09MVVRJT04sICZyZXMpOworCX0gZWxzZSB7CisJCWlmICh3aWR0aCA8PSBzZW5zb3Jfd2lkdGggLyA0KSB7CisJCQlnby0+ZW5jb2Rlcl9oX2hhbHZlID0gMTsKKwkJCWdvLT5lbmNvZGVyX3ZfaGFsdmUgPSAxOworCQkJZ28tPmVuY29kZXJfc3Vic2FtcGxlID0gMTsKKwkJfSBlbHNlIGlmICh3aWR0aCA8PSBzZW5zb3Jfd2lkdGggLyAyKSB7CisJCQlnby0+ZW5jb2Rlcl9oX2hhbHZlID0gMTsKKwkJCWdvLT5lbmNvZGVyX3ZfaGFsdmUgPSAxOworCQkJZ28tPmVuY29kZXJfc3Vic2FtcGxlID0gMDsKKwkJfSBlbHNlIHsKKwkJCWdvLT5lbmNvZGVyX2hfaGFsdmUgPSAwOworCQkJZ28tPmVuY29kZXJfdl9oYWx2ZSA9IDA7CisJCQlnby0+ZW5jb2Rlcl9zdWJzYW1wbGUgPSAwOworCQl9CisJfQorCisJaWYgKGZtdCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXN3aXRjaCAoZm10LT5mbXQucGl4LnBpeGVsZm9ybWF0KSB7CisJY2FzZSBWNEwyX1BJWF9GTVRfTVBFRzoKKwkJaWYgKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMSB8fAorCQkJCWdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHMiB8fAorCQkJCWdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NUEVHNCkKKwkJCWJyZWFrOworCQlnby0+Zm9ybWF0ID0gR083MDA3X0ZPUk1BVF9NUEVHMTsKKwkJZ28tPnBhbGkgPSAwOworCQlnby0+YXNwZWN0X3JhdGlvID0gR083MDA3X1JBVElPXzFfMTsKKwkJZ28tPmdvcF9zaXplID0gZ28tPnNlbnNvcl9mcmFtZXJhdGUgLyAxMDAwOworCQlnby0+aXBiID0gMDsKKwkJZ28tPmNsb3NlZF9nb3AgPSAxOworCQlnby0+cmVwZWF0X3NlcWhlYWQgPSAxOworCQlnby0+c2VxX2hlYWRlcl9lbmFibGUgPSAxOworCQlnby0+Z29wX2hlYWRlcl9lbmFibGUgPSAxOworCQlnby0+ZHZkX21vZGUgPSAwOworCQlicmVhazsKKwkvKiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5ISAqLworCWNhc2UgVjRMMl9QSVhfRk1UX01QRUc0OgorCQlpZiAoZ28tPmZvcm1hdCA9PSBHTzcwMDdfRk9STUFUX01QRUc0KQorCQkJYnJlYWs7CisJCWdvLT5mb3JtYXQgPSBHTzcwMDdfRk9STUFUX01QRUc0OworCQlnby0+cGFsaSA9IDB4ZjU7CisJCWdvLT5hc3BlY3RfcmF0aW8gPSBHTzcwMDdfUkFUSU9fMV8xOworCQlnby0+Z29wX3NpemUgPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSAvIDEwMDA7CisJCWdvLT5pcGIgPSAwOworCQlnby0+Y2xvc2VkX2dvcCA9IDE7CisJCWdvLT5yZXBlYXRfc2VxaGVhZCA9IDE7CisJCWdvLT5zZXFfaGVhZGVyX2VuYWJsZSA9IDE7CisJCWdvLT5nb3BfaGVhZGVyX2VuYWJsZSA9IDE7CisJCWdvLT5kdmRfbW9kZSA9IDA7CisJCWJyZWFrOworCWNhc2UgVjRMMl9QSVhfRk1UX01KUEVHOgorCQlnby0+Zm9ybWF0ID0gR083MDA3X0ZPUk1BVF9NSlBFRzsKKwkJZ28tPnBhbGkgPSAwOworCQlnby0+YXNwZWN0X3JhdGlvID0gR083MDA3X1JBVElPXzFfMTsKKwkJZ28tPmdvcF9zaXplID0gMDsKKwkJZ28tPmlwYiA9IDA7CisJCWdvLT5jbG9zZWRfZ29wID0gMDsKKwkJZ28tPnJlcGVhdF9zZXFoZWFkID0gMDsKKwkJZ28tPnNlcV9oZWFkZXJfZW5hYmxlID0gMDsKKwkJZ28tPmdvcF9oZWFkZXJfZW5hYmxlID0gMDsKKwkJZ28tPmR2ZF9tb2RlID0gMDsKKwkJYnJlYWs7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNsaXBfdG9fbW9kZXRfbWFwKHN0cnVjdCBnbzcwMDcgKmdvLCBpbnQgcmVnaW9uLAorCQlzdHJ1Y3QgdjRsMl9jbGlwICpjbGlwX2xpc3QpCit7CisJc3RydWN0IHY0bDJfY2xpcCBjbGlwLCAqY2xpcF9wdHI7CisJaW50IHgsIHksIG1ibnVtOworCisJLyogQ2hlY2sgaWYgY29vcmRpbmF0ZXMgYXJlIE9LIGFuZCBpZiBhbnkgbWFjcm9ibG9ja3MgYXJlIGFscmVhZHkKKwkgKiB1c2VkIGJ5IG90aGVyIHJlZ2lvbnMgKGJlc2lkZXMgMCkgKi8KKwljbGlwX3B0ciA9IGNsaXBfbGlzdDsKKwl3aGlsZSAoY2xpcF9wdHIpIHsKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZjbGlwLCBjbGlwX3B0ciwgc2l6ZW9mKGNsaXApKSkKKwkJCXJldHVybiAtRUZBVUxUOworCQlpZiAoY2xpcC5jLmxlZnQgPCAwIHx8IChjbGlwLmMubGVmdCAmIDB4RikgfHwKKwkJCQljbGlwLmMud2lkdGggPD0gMCB8fCAoY2xpcC5jLndpZHRoICYgMHhGKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoY2xpcC5jLmxlZnQgKyBjbGlwLmMud2lkdGggPiBnby0+d2lkdGgpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKGNsaXAuYy50b3AgPCAwIHx8IChjbGlwLmMudG9wICYgMHhGKSB8fAorCQkJCWNsaXAuYy5oZWlnaHQgPD0gMCB8fCAoY2xpcC5jLmhlaWdodCAmIDB4RikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKGNsaXAuYy50b3AgKyBjbGlwLmMuaGVpZ2h0ID4gZ28tPmhlaWdodCkKKwkJCXJldHVybiAtRUlOVkFMOworCQlmb3IgKHkgPSAwOyB5IDwgY2xpcC5jLmhlaWdodDsgeSArPSAxNikKKwkJCWZvciAoeCA9IDA7IHggPCBjbGlwLmMud2lkdGg7IHggKz0gMTYpIHsKKwkJCQltYm51bSA9IChnby0+d2lkdGggPj4gNCkgKgorCQkJCQkJKChjbGlwLmMudG9wICsgeSkgPj4gNCkgKworCQkJCQkoKGNsaXAuYy5sZWZ0ICsgeCkgPj4gNCk7CisJCQkJaWYgKGdvLT5tb2RldF9tYXBbbWJudW1dICE9IDAgJiYKKwkJCQkJCWdvLT5tb2RldF9tYXBbbWJudW1dICE9IHJlZ2lvbikKKwkJCQkJcmV0dXJuIC1FQlVTWTsKKwkJCX0KKwkJY2xpcF9wdHIgPSBjbGlwLm5leHQ7CisJfQorCisJLyogQ2xlYXIgb2xkIHJlZ2lvbiBtYWNyb2Jsb2NrcyAqLworCWZvciAobWJudW0gPSAwOyBtYm51bSA8IDE2MjQ7ICsrbWJudW0pCisJCWlmIChnby0+bW9kZXRfbWFwW21ibnVtXSA9PSByZWdpb24pCisJCQlnby0+bW9kZXRfbWFwW21ibnVtXSA9IDA7CisKKwkvKiBDbGFpbSBtYWNyb2Jsb2NrcyBpbiB0aGlzIGxpc3QgKi8KKwljbGlwX3B0ciA9IGNsaXBfbGlzdDsKKwl3aGlsZSAoY2xpcF9wdHIpIHsKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZjbGlwLCBjbGlwX3B0ciwgc2l6ZW9mKGNsaXApKSkKKwkJCXJldHVybiAtRUZBVUxUOworCQlmb3IgKHkgPSAwOyB5IDwgY2xpcC5jLmhlaWdodDsgeSArPSAxNikKKwkJCWZvciAoeCA9IDA7IHggPCBjbGlwLmMud2lkdGg7IHggKz0gMTYpIHsKKwkJCQltYm51bSA9IChnby0+d2lkdGggPj4gNCkgKgorCQkJCQkJKChjbGlwLmMudG9wICsgeSkgPj4gNCkgKworCQkJCQkoKGNsaXAuYy5sZWZ0ICsgeCkgPj4gNCk7CisJCQkJZ28tPm1vZGV0X21hcFttYm51bV0gPSByZWdpb247CisJCQl9CisJCWNsaXBfcHRyID0gY2xpcC5uZXh0OworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnbzcwMDdfZG9faW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsCisJCXVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZ283MDA3X2ZpbGUgKmdvZmggPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGdvNzAwNyAqZ28gPSBnb2ZoLT5nbzsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCByZXR2YWwgPSAwOworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFZJRElPQ19RVUVSWUNBUDoKKwl7CisJCXN0cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcCA9IGFyZzsKKworCQltZW1zZXQoY2FwLCAwLCBzaXplb2YoKmNhcCkpOworCQlzdHJjcHkoY2FwLT5kcml2ZXIsICJnbzcwMDciKTsKKwkJc3RybmNweShjYXAtPmNhcmQsIGdvLT5uYW1lLCBzaXplb2YoY2FwLT5jYXJkKSk7CisJCWNhcC0+dmVyc2lvbiA9IEtFUk5FTF9WRVJTSU9OKDAsIDksIDgpOworCQljYXAtPmNhcGFiaWxpdGllcyA9IFY0TDJfQ0FQX1ZJREVPX0NBUFRVUkUgfAorCQkJCVY0TDJfQ0FQX1NUUkVBTUlORzsgLyogfCBWNEwyX0NBUF9BVURJTzsgKi8KKwkJaWYgKGdvLT5ib2FyZF9pbmZvLT5mbGFncyAmIEdPNzAwN19CT0FSRF9IQVNfVFVORVIpCisJCQljYXAtPmNhcGFiaWxpdGllcyB8PSBWNEwyX0NBUF9UVU5FUjsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0VOVU1fRk1UOgorCXsKKwkJc3RydWN0IHY0bDJfZm10ZGVzYyAqZm10ID0gYXJnOworCQl1bnNpZ25lZCBpbnQgaW5kZXg7CisJCWNoYXIgKmRlc2M7CisJCXUzMiBwaXhlbGZvcm1hdDsKKworCQlpZiAoZm10LT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlzd2l0Y2ggKGZtdC0+aW5kZXgpIHsKKwkJY2FzZSAwOgorCQkJcGl4ZWxmb3JtYXQgPSBWNEwyX1BJWF9GTVRfTUpQRUc7CisJCQlkZXNjID0gIk1vdGlvbi1KUEVHIjsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlwaXhlbGZvcm1hdCA9IFY0TDJfUElYX0ZNVF9NUEVHOworCQkJZGVzYyA9ICJNUEVHMS9NUEVHMi9NUEVHNCI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWluZGV4ID0gZm10LT5pbmRleDsKKwkJbWVtc2V0KGZtdCwgMCwgc2l6ZW9mKCpmbXQpKTsKKwkJZm10LT5pbmRleCA9IGluZGV4OworCQlmbXQtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisJCWZtdC0+ZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQ7CisJCXN0cm5jcHkoZm10LT5kZXNjcmlwdGlvbiwgZGVzYywgc2l6ZW9mKGZtdC0+ZGVzY3JpcHRpb24pKTsKKwkJZm10LT5waXhlbGZvcm1hdCA9IHBpeGVsZm9ybWF0OworCisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19UUllfRk1UOgorCXsKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQgPSBhcmc7CisKKwkJaWYgKGZtdC0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIHNldF9jYXB0dXJlX3NpemUoZ28sIGZtdCwgMSk7CisJfQorCWNhc2UgVklESU9DX0dfRk1UOgorCXsKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQgPSBhcmc7CisKKwkJaWYgKGZtdC0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJbWVtc2V0KGZtdCwgMCwgc2l6ZW9mKCpmbXQpKTsKKwkJZm10LT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCQlmbXQtPmZtdC5waXgud2lkdGggPSBnby0+d2lkdGg7CisJCWZtdC0+Zm10LnBpeC5oZWlnaHQgPSBnby0+aGVpZ2h0OworCQlmbXQtPmZtdC5waXgucGl4ZWxmb3JtYXQgPSBnby0+Zm9ybWF0ID09IEdPNzAwN19GT1JNQVRfTUpQRUcgPworCQkJVjRMMl9QSVhfRk1UX01KUEVHIDogVjRMMl9QSVhfRk1UX01QRUc7CisJCWZtdC0+Zm10LnBpeC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwkJZm10LT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IDA7CisJCWZtdC0+Zm10LnBpeC5zaXplaW1hZ2UgPSBHTzcwMDdfQlVGX1NJWkU7CisJCWZtdC0+Zm10LnBpeC5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NNUFRFMTcwTTsgLyogPz8gKi8KKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX1NfRk1UOgorCXsKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQgPSBhcmc7CisKKwkJaWYgKGZtdC0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKGdvLT5zdHJlYW1pbmcpCisJCQlyZXR1cm4gLUVCVVNZOworCQlyZXR1cm4gc2V0X2NhcHR1cmVfc2l6ZShnbywgZm10LCAwKTsKKwl9CisJY2FzZSBWSURJT0NfR19GQlVGOgorCWNhc2UgVklESU9DX1NfRkJVRjoKKwkJcmV0dXJuIC1FSU5WQUw7CisJY2FzZSBWSURJT0NfUkVRQlVGUzoKKwl7CisJCXN0cnVjdCB2NGwyX3JlcXVlc3RidWZmZXJzICpyZXEgPSBhcmc7CisJCXVuc2lnbmVkIGludCBjb3VudCwgaTsKKworCQlpZiAoZ28tPnN0cmVhbWluZykKKwkJCXJldHVybiAtRUJVU1k7CisJCWlmIChyZXEtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFIHx8CisJCQkJcmVxLT5tZW1vcnkgIT0gVjRMMl9NRU1PUllfTU1BUCkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWRvd24oJmdvZmgtPmxvY2spOworCQlyZXR2YWwgPSAtRUJVU1k7CisJCWZvciAoaSA9IDA7IGkgPCBnb2ZoLT5idWZfY291bnQ7ICsraSkKKwkJCWlmIChnb2ZoLT5idWZzW2ldLm1hcHBlZCA+IDApCisJCQkJZ290byB1bmxvY2tfYW5kX3JldHVybjsKKwkJZG93bigmZ28tPmh3X2xvY2spOworCQlpZiAoZ28tPmluX3VzZSA+IDAgJiYgZ29maC0+YnVmX2NvdW50ID09IDApIHsKKwkJCXVwKCZnby0+aHdfbG9jayk7CisJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQl9CisJCWlmIChnb2ZoLT5idWZfY291bnQgPiAwKQorCQkJa2ZyZWUoZ29maC0+YnVmcyk7CisJCXJldHZhbCA9IC1FTk9NRU07CisJCWNvdW50ID0gcmVxLT5jb3VudDsKKwkJaWYgKGNvdW50ID4gMCkgeworCQkJaWYgKGNvdW50IDwgMikKKwkJCQljb3VudCA9IDI7CisJCQlpZiAoY291bnQgPiAzMikKKwkJCQljb3VudCA9IDMyOworCQkJZ29maC0+YnVmcyA9IGttYWxsb2MoY291bnQgKgorCQkJCQkJc2l6ZW9mKHN0cnVjdCBnbzcwMDdfYnVmZmVyKSwKKwkJCQkJR0ZQX0tFUk5FTCk7CisJCQlpZiAoZ29maC0+YnVmcyA9PSBOVUxMKSB7CisJCQkJdXAoJmdvLT5od19sb2NrKTsKKwkJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQkJfQorCQkJbWVtc2V0KGdvZmgtPmJ1ZnMsIDAsCisJCQkJCWNvdW50ICogc2l6ZW9mKHN0cnVjdCBnbzcwMDdfYnVmZmVyKSk7CisJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQkJCWdvZmgtPmJ1ZnNbaV0uZ28gPSBnbzsKKwkJCQlnb2ZoLT5idWZzW2ldLmluZGV4ID0gaTsKKwkJCQlnb2ZoLT5idWZzW2ldLnN0YXRlID0gQlVGX1NUQVRFX0lETEU7CisJCQkJZ29maC0+YnVmc1tpXS5tYXBwZWQgPSAwOworCQkJfQorCQkJZ28tPmluX3VzZSA9IDE7CisJCX0gZWxzZSB7CisJCQlnby0+aW5fdXNlID0gMDsKKwkJfQorCQlnb2ZoLT5idWZfY291bnQgPSBjb3VudDsKKwkJdXAoJmdvLT5od19sb2NrKTsKKwkJdXAoJmdvZmgtPmxvY2spOworCQltZW1zZXQocmVxLCAwLCBzaXplb2YoKnJlcSkpOworCQlyZXEtPmNvdW50ID0gY291bnQ7CisJCXJlcS0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKwkJcmVxLT5tZW1vcnkgPSBWNEwyX01FTU9SWV9NTUFQOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfUVVFUllCVUY6CisJeworCQlzdHJ1Y3QgdjRsMl9idWZmZXIgKmJ1ZiA9IGFyZzsKKwkJdW5zaWduZWQgaW50IGluZGV4OworCisJCXJldHZhbCA9IC1FSU5WQUw7CisJCWlmIChidWYtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWluZGV4ID0gYnVmLT5pbmRleDsKKwkJZG93bigmZ29maC0+bG9jayk7CisJCWlmIChpbmRleCA+PSBnb2ZoLT5idWZfY291bnQpCisJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOworCQlidWYtPmluZGV4ID0gaW5kZXg7CisJCWJ1Zi0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKwkJc3dpdGNoIChnb2ZoLT5idWZzW2luZGV4XS5zdGF0ZSkgeworCQljYXNlIEJVRl9TVEFURV9RVUVVRUQ6CisJCQlidWYtPmZsYWdzID0gVjRMMl9CVUZfRkxBR19RVUVVRUQ7CisJCQlicmVhazsKKwkJY2FzZSBCVUZfU1RBVEVfRE9ORToKKwkJCWJ1Zi0+ZmxhZ3MgPSBWNEwyX0JVRl9GTEFHX0RPTkU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJ1Zi0+ZmxhZ3MgPSAwOworCQl9CisJCWlmIChnb2ZoLT5idWZzW2luZGV4XS5tYXBwZWQpCisJCQlidWYtPmZsYWdzIHw9IFY0TDJfQlVGX0ZMQUdfTUFQUEVEOworCQlidWYtPm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CisJCWJ1Zi0+bS5vZmZzZXQgPSBpbmRleCAqIEdPNzAwN19CVUZfU0laRTsKKwkJYnVmLT5sZW5ndGggPSBHTzcwMDdfQlVGX1NJWkU7CisJCXVwKCZnb2ZoLT5sb2NrKTsKKworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfUUJVRjoKKwl7CisJCXN0cnVjdCB2NGwyX2J1ZmZlciAqYnVmID0gYXJnOworCQlzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqZ29idWY7CisJCWludCByZXQ7CisKKwkJcmV0dmFsID0gLUVJTlZBTDsKKwkJaWYgKGJ1Zi0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUgfHwKKwkJCQlidWYtPm1lbW9yeSAhPSBWNEwyX01FTU9SWV9NTUFQKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWRvd24oJmdvZmgtPmxvY2spOworCQlpZiAoYnVmLT5pbmRleCA8IDAgfHwgYnVmLT5pbmRleCA+PSBnb2ZoLT5idWZfY291bnQpCisJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQlnb2J1ZiA9ICZnb2ZoLT5idWZzW2J1Zi0+aW5kZXhdOworCQlpZiAoZ29idWYtPm1hcHBlZCA9PSAwKQorCQkJZ290byB1bmxvY2tfYW5kX3JldHVybjsKKwkJcmV0dmFsID0gLUVCVVNZOworCQlpZiAoZ29idWYtPnN0YXRlICE9IEJVRl9TVEFURV9JRExFKQorCQkJZ290byB1bmxvY2tfYW5kX3JldHVybjsKKwkJLyogb2Zmc2V0IHdpbGwgYmUgMCB1bnRpbCB3ZSByZWFsbHkgc3VwcG9ydCBVU0VSUFRSIHN0cmVhbWluZyAqLworCQlnb2J1Zi0+b2Zmc2V0ID0gZ29idWYtPnVzZXJfYWRkciAmIH5QQUdFX01BU0s7CisJCWdvYnVmLT5ieXRlc3VzZWQgPSAwOworCQlnb2J1Zi0+ZnJhbWVfb2Zmc2V0ID0gMDsKKwkJZ29idWYtPm1vZGV0X2FjdGl2ZSA9IDA7CisJCWlmIChnb2J1Zi0+b2Zmc2V0ID4gMCkKKwkJCWdvYnVmLT5wYWdlX2NvdW50ID0gR083MDA3X0JVRl9QQUdFUyArIDE7CisJCWVsc2UKKwkJCWdvYnVmLT5wYWdlX2NvdW50ID0gR083MDA3X0JVRl9QQUdFUzsKKwkJcmV0dmFsID0gLUVOT01FTTsKKwkJZG93bl9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCQlyZXQgPSBnZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBjdXJyZW50LT5tbSwKKwkJCQlnb2J1Zi0+dXNlcl9hZGRyICYgUEFHRV9NQVNLLCBnb2J1Zi0+cGFnZV9jb3VudCwKKwkJCQkxLCAxLCBnb2J1Zi0+cGFnZXMsIE5VTEwpOworCQl1cF9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCQlpZiAocmV0ICE9IGdvYnVmLT5wYWdlX2NvdW50KSB7CisJCQlpbnQgaTsKKwkJCWZvciAoaSA9IDA7IGkgPCByZXQ7ICsraSkKKwkJCQlwYWdlX2NhY2hlX3JlbGVhc2UoZ29idWYtPnBhZ2VzW2ldKTsKKwkJCWdvYnVmLT5wYWdlX2NvdW50ID0gMDsKKwkJCWdvdG8gdW5sb2NrX2FuZF9yZXR1cm47CisJCX0KKwkJZ29idWYtPnN0YXRlID0gQlVGX1NUQVRFX1FVRVVFRDsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmdvLT5zcGlubG9jaywgZmxhZ3MpOworCQlsaXN0X2FkZF90YWlsKCZnb2J1Zi0+c3RyZWFtLCAmZ28tPnN0cmVhbSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdvLT5zcGlubG9jaywgZmxhZ3MpOworCQl1cCgmZ29maC0+bG9jayk7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19EUUJVRjoKKwl7CisJCXN0cnVjdCB2NGwyX2J1ZmZlciAqYnVmID0gYXJnOworCQlzdHJ1Y3QgZ283MDA3X2J1ZmZlciAqZ29idWY7CisJCXUzMiBmcmFtZV90eXBlX2ZsYWc7CisJCURFRklORV9XQUlUKHdhaXQpOworCisJCWlmIChidWYtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWlmIChidWYtPm1lbW9yeSAhPSBWNEwyX01FTU9SWV9NTUFQKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWRvd24oJmdvZmgtPmxvY2spOworCQlyZXR2YWwgPSAtRUlOVkFMOworCQlpZiAobGlzdF9lbXB0eSgmZ28tPnN0cmVhbSkpCisJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQlnb2J1ZiA9IGxpc3RfZW50cnkoZ28tPnN0cmVhbS5uZXh0LAorCQkJCXN0cnVjdCBnbzcwMDdfYnVmZmVyLCBzdHJlYW0pOworCQlyZXR2YWwgPSAtRUFHQUlOOworCQlpZiAoZ29idWYtPnN0YXRlICE9IEJVRl9TVEFURV9ET05FICYmCisJCQkJIShmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykpIHsKKwkJCWZvciAoOzspIHsKKwkJCQlwcmVwYXJlX3RvX3dhaXQoJmdvLT5mcmFtZV93YWl0cSwgJndhaXQsCisJCQkJCQlUQVNLX0lOVEVSUlVQVElCTEUpOworCQkJCWlmIChnb2J1Zi0+c3RhdGUgPT0gQlVGX1NUQVRFX0RPTkUpCisJCQkJCWJyZWFrOworCQkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJCQlyZXR2YWwgPSAtRVJFU1RBUlRTWVM7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlzY2hlZHVsZSgpOworCQkJfQorCQkJZmluaXNoX3dhaXQoJmdvLT5mcmFtZV93YWl0cSwgJndhaXQpOworCQl9CisJCWlmIChnb2J1Zi0+c3RhdGUgIT0gQlVGX1NUQVRFX0RPTkUpCisJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZ28tPnNwaW5sb2NrLCBmbGFncyk7CisJCWRlYWN0aXZhdGVfYnVmZmVyKGdvYnVmKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ28tPnNwaW5sb2NrLCBmbGFncyk7CisJCWZyYW1lX3R5cGVfZmxhZyA9IGdldF9mcmFtZV90eXBlX2ZsYWcoZ29idWYsIGdvLT5mb3JtYXQpOworCQlnb2J1Zi0+c3RhdGUgPSBCVUZfU1RBVEVfSURMRTsKKwkJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwkJYnVmLT5pbmRleCA9IGdvYnVmLT5pbmRleDsKKwkJYnVmLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCQlidWYtPmJ5dGVzdXNlZCA9IGdvYnVmLT5ieXRlc3VzZWQ7CisJCWJ1Zi0+ZmxhZ3MgPSBWNEwyX0JVRl9GTEFHX01BUFBFRCB8IGZyYW1lX3R5cGVfZmxhZzsKKwkJYnVmLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwkJYnVmLT50aW1lc3RhbXAgPSBnb2J1Zi0+dGltZXN0YW1wOworCQlidWYtPnNlcXVlbmNlID0gZ29idWYtPnNlcTsKKwkJYnVmLT5tZW1vcnkgPSBWNEwyX01FTU9SWV9NTUFQOworCQlidWYtPm0ub2Zmc2V0ID0gZ29idWYtPmluZGV4ICogR083MDA3X0JVRl9TSVpFOworCQlidWYtPmxlbmd0aCA9IEdPNzAwN19CVUZfU0laRTsKKwkJYnVmLT5yZXNlcnZlZCA9IGdvYnVmLT5tb2RldF9hY3RpdmU7CisJCXVwKCZnb2ZoLT5sb2NrKTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX1NUUkVBTU9OOgorCXsKKwkJdW5zaWduZWQgaW50ICp0eXBlID0gYXJnOworCisJCWlmICgqdHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJZG93bigmZ29maC0+bG9jayk7CisJCWRvd24oJmdvLT5od19sb2NrKTsKKwkJaWYgKCFnby0+c3RyZWFtaW5nKSB7CisJCQlnby0+c3RyZWFtaW5nID0gMTsKKwkJCWdvLT5uZXh0X3NlcSA9IDA7CisJCQlnby0+YWN0aXZlX2J1ZiA9IE5VTEw7CisJCQlpZiAoZ283MDA3X3N0YXJ0X2VuY29kZXIoZ28pIDwgMCkKKwkJCQlyZXR2YWwgPSAtRUlPOworCQkJZWxzZQorCQkJCXJldHZhbCA9IDA7CisJCX0KKwkJdXAoJmdvLT5od19sb2NrKTsKKwkJdXAoJmdvZmgtPmxvY2spOworCQlyZXR1cm4gcmV0dmFsOworCX0KKwljYXNlIFZJRElPQ19TVFJFQU1PRkY6CisJeworCQl1bnNpZ25lZCBpbnQgKnR5cGUgPSBhcmc7CisKKwkJaWYgKCp0eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlkb3duKCZnb2ZoLT5sb2NrKTsKKwkJZ283MDA3X3N0cmVhbW9mZihnbyk7CisJCXVwKCZnb2ZoLT5sb2NrKTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX1FVRVJZQ1RSTDoKKwl7CisJCXN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqY3RybCA9IGFyZzsKKwkJdTMyIGlkOworCisJCWlmICghZ28tPmkyY19hZGFwdGVyX29ubGluZSkKKwkJCXJldHVybiAtRUlPOworCQlpZCA9IGN0cmwtPmlkOworCQltZW1zZXQoY3RybCwgMCwgc2l6ZW9mKCpjdHJsKSk7CisJCWN0cmwtPmlkID0gaWQ7CisJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX1FVRVJZQ1RSTCwgYXJnKTsKKwkJcmV0dXJuIGN0cmwtPm5hbWVbMF0gPT0gMCA/IC1FSU5WQUwgOiAwOworCX0KKwljYXNlIFZJRElPQ19HX0NUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9jb250cm9sICpjdHJsID0gYXJnOworCQlzdHJ1Y3QgdjRsMl9xdWVyeWN0cmwgcXVlcnk7CisKKwkJaWYgKCFnby0+aTJjX2FkYXB0ZXJfb25saW5lKQorCQkJcmV0dXJuIC1FSU87CisJCW1lbXNldCgmcXVlcnksIDAsIHNpemVvZihxdWVyeSkpOworCQlxdWVyeS5pZCA9IGN0cmwtPmlkOworCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsIFZJRElPQ19RVUVSWUNUUkwsICZxdWVyeSk7CisJCWlmIChxdWVyeS5uYW1lWzBdID09IDApCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLCBWSURJT0NfR19DVFJMLCBhcmcpOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfU19DVFJMOgorCXsKKwkJc3RydWN0IHY0bDJfY29udHJvbCAqY3RybCA9IGFyZzsKKwkJc3RydWN0IHY0bDJfcXVlcnljdHJsIHF1ZXJ5OworCisJCWlmICghZ28tPmkyY19hZGFwdGVyX29ubGluZSkKKwkJCXJldHVybiAtRUlPOworCQltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2YocXVlcnkpKTsKKwkJcXVlcnkuaWQgPSBjdHJsLT5pZDsKKwkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLCBWSURJT0NfUVVFUllDVFJMLCAmcXVlcnkpOworCQlpZiAocXVlcnkubmFtZVswXSA9PSAwKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX1NfQ1RSTCwgYXJnKTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0dfUEFSTToKKwl7CisJCXN0cnVjdCB2NGwyX3N0cmVhbXBhcm0gKnBhcm0gPSBhcmc7CisJCXN0cnVjdCB2NGwyX2ZyYWN0IHRpbWVwZXJmcmFtZSA9IHsKKwkJCS5udW1lcmF0b3IgPSAxMDAxICogIGdvLT5mcHNfc2NhbGUsCisJCQkuZGVub21pbmF0b3IgPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSwKKwkJfTsKKworCQlpZiAocGFybS0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJbWVtc2V0KHBhcm0sIDAsIHNpemVvZigqcGFybSkpOworCQlwYXJtLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCQlwYXJtLT5wYXJtLmNhcHR1cmUuY2FwYWJpbGl0eSB8PSBWNEwyX0NBUF9USU1FUEVSRlJBTUU7CisJCXBhcm0tPnBhcm0uY2FwdHVyZS50aW1lcGVyZnJhbWUgPSB0aW1lcGVyZnJhbWU7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19TX1BBUk06CisJeworCQlzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJtID0gYXJnOworCQl1bnNpZ25lZCBpbnQgbiwgZDsKKworCQlpZiAocGFybS0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKHBhcm0tPnBhcm0uY2FwdHVyZS5jYXB0dXJlbW9kZSAhPSAwKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCW4gPSBnby0+c2Vuc29yX2ZyYW1lcmF0ZSAqCisJCQlwYXJtLT5wYXJtLmNhcHR1cmUudGltZXBlcmZyYW1lLm51bWVyYXRvcjsKKwkJZCA9IDEwMDEgKiBwYXJtLT5wYXJtLmNhcHR1cmUudGltZXBlcmZyYW1lLmRlbm9taW5hdG9yOworCQlpZiAobiAhPSAwICYmIGQgIT0gMCAmJiBuID4gZCkKKwkJCWdvLT5mcHNfc2NhbGUgPSAobiArIGQvMikgLyBkOworCQllbHNlCisJCQlnby0+ZnBzX3NjYWxlID0gMTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0VOVU1TVEQ6CisJeworCQlzdHJ1Y3QgdjRsMl9zdGFuZGFyZCAqc3RkID0gYXJnOworCisJCWlmICgoZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX0hBU19UVU5FUikgJiYKKwkJCQlnby0+aW5wdXQgPT0gZ28tPmJvYXJkX2luZm8tPm51bV9pbnB1dHMgLSAxKSB7CisJCQlpZiAoIWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQkJcmV0dXJuIC1FSU87CisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJCQlWSURJT0NfRU5VTVNURCwgYXJnKTsKKwkJCWlmICghc3RkLT5pZCkgLyogaGFjayB0byBpbmRpY2F0ZSBFSU5WQUwgZnJvbSB0dW5lciAqLworCQkJCXJldHVybiAtRUlOVkFMOworCQl9IGVsc2UgaWYgKGdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfZmxhZ3MgJiBHTzcwMDdfU0VOU09SX1RWKSB7CisJCQlzd2l0Y2ggKHN0ZC0+aW5kZXgpIHsKKwkJCWNhc2UgMDoKKwkJCQl2NGwyX3ZpZGVvX3N0ZF9jb25zdHJ1Y3Qoc3RkLAorCQkJCQkJVjRMMl9TVERfTlRTQywgIk5UU0MiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMToKKwkJCQl2NGwyX3ZpZGVvX3N0ZF9jb25zdHJ1Y3Qoc3RkLAorCQkJCQkJVjRMMl9TVERfUEFMIHwgVjRMMl9TVERfU0VDQU0sCisJCQkJCQkiUEFML1NFQ0FNIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHN0ZC0+aW5kZXggIT0gMCkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCW1lbXNldChzdGQsIDAsIHNpemVvZigqc3RkKSk7CisJCQlzbnByaW50ZihzdGQtPm5hbWUsIHNpemVvZihzdGQtPm5hbWUpLCAiJWR4JWQsICVkZnBzIiwKKwkJCQlnby0+Ym9hcmRfaW5mby0+c2Vuc29yX3dpZHRoLAorCQkJCWdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfaGVpZ2h0LAorCQkJCWdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfZnJhbWVyYXRlIC8gMTAwMCk7CisJCQlzdGQtPmZyYW1lcGVyaW9kLm51bWVyYXRvciA9IDEwMDE7CisJCQlzdGQtPmZyYW1lcGVyaW9kLmRlbm9taW5hdG9yID0KKwkJCQkJZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9mcmFtZXJhdGU7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0dfU1REOgorCXsKKwkJdjRsMl9zdGRfaWQgKnN0ZCA9IGFyZzsKKworCQlpZiAoKGdvLT5ib2FyZF9pbmZvLT5mbGFncyAmIEdPNzAwN19CT0FSRF9IQVNfVFVORVIpICYmCisJCQkJZ28tPmlucHV0ID09IGdvLT5ib2FyZF9pbmZvLT5udW1faW5wdXRzIC0gMSkgeworCQkJaWYgKCFnby0+aTJjX2FkYXB0ZXJfb25saW5lKQorCQkJCXJldHVybiAtRUlPOworCQkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLAorCQkJCQkJVklESU9DX0dfU1RELCBhcmcpOworCQl9IGVsc2UgaWYgKGdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfZmxhZ3MgJiBHTzcwMDdfU0VOU09SX1RWKSB7CisJCQlpZiAoZ28tPnN0YW5kYXJkID09IEdPNzAwN19TVERfTlRTQykKKwkJCQkqc3RkID0gVjRMMl9TVERfTlRTQzsKKwkJCWVsc2UKKwkJCQkqc3RkID0gVjRMMl9TVERfUEFMIHwgVjRMMl9TVERfU0VDQU07CisJCX0gZWxzZQorCQkJKnN0ZCA9IDA7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19TX1NURDoKKwl7CisJCXY0bDJfc3RkX2lkICpzdGQgPSBhcmc7CisKKwkJaWYgKGdvLT5zdHJlYW1pbmcpCisJCQlyZXR1cm4gLUVCVVNZOworCQlpZiAoIShnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2ZsYWdzICYgR083MDA3X1NFTlNPUl9UVikgJiYKKwkJCQkqc3RkICE9IDApCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKCpzdGQgPT0gMCkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoKGdvLT5ib2FyZF9pbmZvLT5mbGFncyAmIEdPNzAwN19CT0FSRF9IQVNfVFVORVIpICYmCisJCQkJZ28tPmlucHV0ID09IGdvLT5ib2FyZF9pbmZvLT5udW1faW5wdXRzIC0gMSkgeworCQkJaWYgKCFnby0+aTJjX2FkYXB0ZXJfb25saW5lKQorCQkJCXJldHVybiAtRUlPOworCQkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLAorCQkJCQkJVklESU9DX1NfU1RELCBhcmcpOworCQkJaWYgKCEqc3RkKSAvKiBoYWNrIHRvIGluZGljYXRlIEVJTlZBTCBmcm9tIHR1bmVyICovCisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJaWYgKCpzdGQgJiBWNEwyX1NURF9OVFNDKSB7CisJCQlnby0+c3RhbmRhcmQgPSBHTzcwMDdfU1REX05UU0M7CisJCQlnby0+c2Vuc29yX2ZyYW1lcmF0ZSA9IDMwMDAwOworCQl9IGVsc2UgaWYgKCpzdGQgJiBWNEwyX1NURF9QQUwpIHsKKwkJCWdvLT5zdGFuZGFyZCA9IEdPNzAwN19TVERfUEFMOworCQkJZ28tPnNlbnNvcl9mcmFtZXJhdGUgPSAyNTAyNTsKKwkJfSBlbHNlIGlmICgqc3RkICYgVjRMMl9TVERfU0VDQU0pIHsKKwkJCWdvLT5zdGFuZGFyZCA9IEdPNzAwN19TVERfUEFMOworCQkJZ28tPnNlbnNvcl9mcmFtZXJhdGUgPSAyNTAyNTsKKwkJfSBlbHNlCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKGdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJCSAgICBWSURJT0NfU19TVEQsIHN0ZCk7CisJCXNldF9jYXB0dXJlX3NpemUoZ28sIE5VTEwsIDApOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfUVVFUllTVEQ6CisJeworCQl2NGwyX3N0ZF9pZCAqc3RkID0gYXJnOworCisJCWlmICgoZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX0hBU19UVU5FUikgJiYKKwkJCQlnby0+aW5wdXQgPT0gZ28tPmJvYXJkX2luZm8tPm51bV9pbnB1dHMgLSAxKSB7CisJCQlpZiAoIWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQkJcmV0dXJuIC1FSU87CisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsCisJCQkJCQlWSURJT0NfUVVFUllTVEQsIGFyZyk7CisJCX0gZWxzZSBpZiAoZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9mbGFncyAmIEdPNzAwN19TRU5TT1JfVFYpCisJCQkqc3RkID0gVjRMMl9TVERfTlRTQyB8IFY0TDJfU1REX1BBTCB8IFY0TDJfU1REX1NFQ0FNOworCQllbHNlCisJCQkqc3RkID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0VOVU1JTlBVVDoKKwl7CisJCXN0cnVjdCB2NGwyX2lucHV0ICppbnAgPSBhcmc7CisJCWludCBpbmRleDsKKworCQlpZiAoaW5wLT5pbmRleCA+PSBnby0+Ym9hcmRfaW5mby0+bnVtX2lucHV0cykKKwkJCXJldHVybiAtRUlOVkFMOworCQlpbmRleCA9IGlucC0+aW5kZXg7CisJCW1lbXNldChpbnAsIDAsIHNpemVvZigqaW5wKSk7CisJCWlucC0+aW5kZXggPSBpbmRleDsKKwkJc3RybmNweShpbnAtPm5hbWUsIGdvLT5ib2FyZF9pbmZvLT5pbnB1dHNbaW5kZXhdLm5hbWUsCisJCQkJc2l6ZW9mKGlucC0+bmFtZSkpOworCQkvKiBJZiB0aGlzIGJvYXJkIGhhcyBhIHR1bmVyLCBpdCB3aWxsIGJlIHRoZSBsYXN0IGlucHV0ICovCisJCWlmICgoZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX0hBU19UVU5FUikgJiYKKwkJCQlpbmRleCA9PSBnby0+Ym9hcmRfaW5mby0+bnVtX2lucHV0cyAtIDEpCisJCQlpbnAtPnR5cGUgPSBWNEwyX0lOUFVUX1RZUEVfVFVORVI7CisJCWVsc2UKKwkJCWlucC0+dHlwZSA9IFY0TDJfSU5QVVRfVFlQRV9DQU1FUkE7CisJCWlucC0+YXVkaW9zZXQgPSAwOworCQlpbnAtPnR1bmVyID0gMDsKKwkJaWYgKGdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfZmxhZ3MgJiBHTzcwMDdfU0VOU09SX1RWKQorCQkJaW5wLT5zdGQgPSBWNEwyX1NURF9OVFNDIHwgVjRMMl9TVERfUEFMIHwKKwkJCQkJCQlWNEwyX1NURF9TRUNBTTsKKwkJZWxzZQorCQkJaW5wLT5zdGQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfR19JTlBVVDoKKwl7CisJCWludCAqaW5wdXQgPSBhcmc7CisKKwkJKmlucHV0ID0gZ28tPmlucHV0OworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfU19JTlBVVDoKKwl7CisJCWludCAqaW5wdXQgPSBhcmc7CisKKwkJaWYgKCppbnB1dCA+PSBnby0+Ym9hcmRfaW5mby0+bnVtX2lucHV0cykKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoZ28tPnN0cmVhbWluZykKKwkJCXJldHVybiAtRUJVU1k7CisJCWdvLT5pbnB1dCA9ICppbnB1dDsKKwkJaWYgKGdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpIHsKKwkJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX1NfSU5QVVQsCisJCQkJJmdvLT5ib2FyZF9pbmZvLT5pbnB1dHNbKmlucHV0XS52aWRlb19pbnB1dCk7CisJCQlpMmNfY2xpZW50c19jb21tYW5kKCZnby0+aTJjX2FkYXB0ZXIsIFZJRElPQ19TX0FVRElPLAorCQkJCSZnby0+Ym9hcmRfaW5mby0+aW5wdXRzWyppbnB1dF0uYXVkaW9faW5wdXQpOworCQl9CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19HX1RVTkVSOgorCXsKKwkJc3RydWN0IHY0bDJfdHVuZXIgKnQgPSBhcmc7CisKKwkJaWYgKCEoZ28tPmJvYXJkX2luZm8tPmZsYWdzICYgR083MDA3X0JPQVJEX0hBU19UVU5FUikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKHQtPmluZGV4ICE9IDApCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKCFnby0+aTJjX2FkYXB0ZXJfb25saW5lKQorCQkJcmV0dXJuIC1FSU87CisJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX0dfVFVORVIsIGFyZyk7CisJCXQtPmluZGV4ID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX1NfVFVORVI6CisJeworCQlzdHJ1Y3QgdjRsMl90dW5lciAqdCA9IGFyZzsKKworCQlpZiAoIShnby0+Ym9hcmRfaW5mby0+ZmxhZ3MgJiBHTzcwMDdfQk9BUkRfSEFTX1RVTkVSKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAodC0+aW5kZXggIT0gMCkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoIWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQlyZXR1cm4gLUVJTzsKKwkJc3dpdGNoIChnby0+Ym9hcmRfaWQpIHsKKwkJY2FzZSBHTzcwMDdfQk9BUkRJRF9QWF9UVjQwMlVfTkE6CisJCWNhc2UgR083MDA3X0JPQVJESURfUFhfVFY0MDJVX0pQOgorCQkJLyogTm8gc2VsZWN0YWJsZSBvcHRpb25zIGN1cnJlbnRseSAqLworCQkJaWYgKHQtPmF1ZG1vZGUgIT0gVjRMMl9UVU5FUl9NT0RFX1NURVJFTykKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9CisJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX1NfVFVORVIsIGFyZyk7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19HX0ZSRVFVRU5DWToKKwl7CisJCXN0cnVjdCB2NGwyX2ZyZXF1ZW5jeSAqZiA9IGFyZzsKKworCQlpZiAoIShnby0+Ym9hcmRfaW5mby0+ZmxhZ3MgJiBHTzcwMDdfQk9BUkRfSEFTX1RVTkVSKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoIWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQlyZXR1cm4gLUVJTzsKKwkJbWVtc2V0KGYsIDAsIHNpemVvZigqZikpOworCQlmLT50eXBlID0gVjRMMl9UVU5FUl9BTkFMT0dfVFY7CisJCWkyY19jbGllbnRzX2NvbW1hbmQoJmdvLT5pMmNfYWRhcHRlciwgVklESU9DX0dfRlJFUVVFTkNZLCBhcmcpOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfU19GUkVRVUVOQ1k6CisJeworCQlpZiAoIShnby0+Ym9hcmRfaW5mby0+ZmxhZ3MgJiBHTzcwMDdfQk9BUkRfSEFTX1RVTkVSKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoIWdvLT5pMmNfYWRhcHRlcl9vbmxpbmUpCisJCQlyZXR1cm4gLUVJTzsKKwkJaTJjX2NsaWVudHNfY29tbWFuZCgmZ28tPmkyY19hZGFwdGVyLCBWSURJT0NfU19GUkVRVUVOQ1ksIGFyZyk7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19DUk9QQ0FQOgorCXsKKwkJc3RydWN0IHY0bDJfY3JvcGNhcCAqY3JvcGNhcCA9IGFyZzsKKworCQlpZiAoY3JvcGNhcC0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJbWVtc2V0KGNyb3BjYXAsIDAsIHNpemVvZigqY3JvcGNhcCkpOworCQljcm9wY2FwLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCQkvKiBUaGVzZSBzcGVjaWZ5IHRoZSByYXcgaW5wdXQgb2YgdGhlIHNlbnNvciAqLworCQlzd2l0Y2ggKGdvLT5zdGFuZGFyZCkgeworCQljYXNlIEdPNzAwN19TVERfTlRTQzoKKwkJCWNyb3BjYXAtPmJvdW5kcy50b3AgPSAwOworCQkJY3JvcGNhcC0+Ym91bmRzLmxlZnQgPSAwOworCQkJY3JvcGNhcC0+Ym91bmRzLndpZHRoID0gNzIwOworCQkJY3JvcGNhcC0+Ym91bmRzLmhlaWdodCA9IDQ4MDsKKwkJCWNyb3BjYXAtPmRlZnJlY3QudG9wID0gMDsKKwkJCWNyb3BjYXAtPmRlZnJlY3QubGVmdCA9IDA7CisJCQljcm9wY2FwLT5kZWZyZWN0LndpZHRoID0gNzIwOworCQkJY3JvcGNhcC0+ZGVmcmVjdC5oZWlnaHQgPSA0ODA7CisJCQlicmVhazsKKwkJY2FzZSBHTzcwMDdfU1REX1BBTDoKKwkJCWNyb3BjYXAtPmJvdW5kcy50b3AgPSAwOworCQkJY3JvcGNhcC0+Ym91bmRzLmxlZnQgPSAwOworCQkJY3JvcGNhcC0+Ym91bmRzLndpZHRoID0gNzIwOworCQkJY3JvcGNhcC0+Ym91bmRzLmhlaWdodCA9IDU3NjsKKwkJCWNyb3BjYXAtPmRlZnJlY3QudG9wID0gMDsKKwkJCWNyb3BjYXAtPmRlZnJlY3QubGVmdCA9IDA7CisJCQljcm9wY2FwLT5kZWZyZWN0LndpZHRoID0gNzIwOworCQkJY3JvcGNhcC0+ZGVmcmVjdC5oZWlnaHQgPSA1NzY7CisJCQlicmVhazsKKwkJY2FzZSBHTzcwMDdfU1REX09USEVSOgorCQkJY3JvcGNhcC0+Ym91bmRzLnRvcCA9IDA7CisJCQljcm9wY2FwLT5ib3VuZHMubGVmdCA9IDA7CisJCQljcm9wY2FwLT5ib3VuZHMud2lkdGggPSBnby0+Ym9hcmRfaW5mby0+c2Vuc29yX3dpZHRoOworCQkJY3JvcGNhcC0+Ym91bmRzLmhlaWdodCA9IGdvLT5ib2FyZF9pbmZvLT5zZW5zb3JfaGVpZ2h0OworCQkJY3JvcGNhcC0+ZGVmcmVjdC50b3AgPSAwOworCQkJY3JvcGNhcC0+ZGVmcmVjdC5sZWZ0ID0gMDsKKwkJCWNyb3BjYXAtPmRlZnJlY3Qud2lkdGggPSBnby0+Ym9hcmRfaW5mby0+c2Vuc29yX3dpZHRoOworCQkJY3JvcGNhcC0+ZGVmcmVjdC5oZWlnaHQgPSBnby0+Ym9hcmRfaW5mby0+c2Vuc29yX2hlaWdodDsKKwkJCWJyZWFrOworCQl9CisKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX0dfQ1JPUDoKKwl7CisJCXN0cnVjdCB2NGwyX2Nyb3AgKmNyb3AgPSBhcmc7CisKKwkJaWYgKGNyb3AtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCW1lbXNldChjcm9wLCAwLCBzaXplb2YoKmNyb3ApKTsKKwkJY3JvcC0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKwkJLyogVGhlc2Ugc3BlY2lmeSB0aGUgcmF3IGlucHV0IG9mIHRoZSBzZW5zb3IgKi8KKwkJc3dpdGNoIChnby0+c3RhbmRhcmQpIHsKKwkJY2FzZSBHTzcwMDdfU1REX05UU0M6CisJCQljcm9wLT5jLnRvcCA9IDA7CisJCQljcm9wLT5jLmxlZnQgPSAwOworCQkJY3JvcC0+Yy53aWR0aCA9IDcyMDsKKwkJCWNyb3AtPmMuaGVpZ2h0ID0gNDgwOworCQkJYnJlYWs7CisJCWNhc2UgR083MDA3X1NURF9QQUw6CisJCQljcm9wLT5jLnRvcCA9IDA7CisJCQljcm9wLT5jLmxlZnQgPSAwOworCQkJY3JvcC0+Yy53aWR0aCA9IDcyMDsKKwkJCWNyb3AtPmMuaGVpZ2h0ID0gNTc2OworCQkJYnJlYWs7CisJCWNhc2UgR083MDA3X1NURF9PVEhFUjoKKwkJCWNyb3AtPmMudG9wID0gMDsKKwkJCWNyb3AtPmMubGVmdCA9IDA7CisJCQljcm9wLT5jLndpZHRoID0gZ28tPmJvYXJkX2luZm8tPnNlbnNvcl93aWR0aDsKKwkJCWNyb3AtPmMuaGVpZ2h0ID0gZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9oZWlnaHQ7CisJCQlicmVhazsKKwkJfQorCisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19TX0NST1A6CisJeworCQlzdHJ1Y3QgdjRsMl9jcm9wICpjcm9wID0gYXJnOworCisJCWlmIChjcm9wLT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBWSURJT0NfR19KUEVHQ09NUDoKKwl7CisJCXN0cnVjdCB2NGwyX2pwZWdjb21wcmVzc2lvbiAqcGFyYW1zID0gYXJnOworCisJCW1lbXNldChwYXJhbXMsIDAsIHNpemVvZigqcGFyYW1zKSk7CisJCXBhcmFtcy0+cXVhbGl0eSA9IDUwOyAvKiA/PyAqLworCQlwYXJhbXMtPmpwZWdfbWFya2VycyA9IFY0TDJfSlBFR19NQVJLRVJfREhUIHwKKwkJCQkJVjRMMl9KUEVHX01BUktFUl9EUVQ7CisKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgVklESU9DX1NfSlBFR0NPTVA6CisJeworCQlzdHJ1Y3QgdjRsMl9qcGVnY29tcHJlc3Npb24gKnBhcmFtcyA9IGFyZzsKKworCQlpZiAocGFyYW1zLT5xdWFsaXR5ICE9IDUwIHx8CisJCQkJcGFyYW1zLT5qcGVnX21hcmtlcnMgIT0gKFY0TDJfSlBFR19NQVJLRVJfREhUIHwKKwkJCQkJCQlWNEwyX0pQRUdfTUFSS0VSX0RRVCkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIDA7CisJfQorCS8qIFRlbXBvcmFyeSBpb2N0bHMgZm9yIGNvbnRyb2xsaW5nIGNvbXByZXNzaW9uIGNoYXJhY3RlcmlzdGljcyAqLworCWNhc2UgR083MDA3SU9DX1NfQklUUkFURToKKwl7CisJCWludCAqYml0cmF0ZSA9IGFyZzsKKworCQlpZiAoZ28tPnN0cmVhbWluZykKKwkJCXJldHVybiAtRUlOVkFMOworCQkvKiBVcHBlciBib3VuZCBpcyBraW5kIG9mIGFyYml0cmFyeSBoZXJlICovCisJCWlmICgqYml0cmF0ZSA8IDY0MDAwIHx8ICpiaXRyYXRlID4gMTAwMDAwMDApCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJZ28tPmJpdHJhdGUgPSAqYml0cmF0ZTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgR083MDA3SU9DX0dfQklUUkFURToKKwl7CisJCWludCAqYml0cmF0ZSA9IGFyZzsKKworCQkqYml0cmF0ZSA9IGdvLT5iaXRyYXRlOworCQlyZXR1cm4gMDsKKwl9CisJY2FzZSBHTzcwMDdJT0NfU19DT01QX1BBUkFNUzoKKwl7CisJCXN0cnVjdCBnbzcwMDdfY29tcF9wYXJhbXMgKmNvbXAgPSBhcmc7CisKKwkJaWYgKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NSlBFRykKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoY29tcC0+Z29wX3NpemUgPiAwKQorCQkJZ28tPmdvcF9zaXplID0gY29tcC0+Z29wX3NpemU7CisJCWVsc2UKKwkJCWdvLT5nb3Bfc2l6ZSA9IGdvLT5zZW5zb3JfZnJhbWVyYXRlIC8gMTAwMDsKKwkJaWYgKGdvLT5nb3Bfc2l6ZSAhPSAxNSkKKwkJCWdvLT5kdmRfbW9kZSA9IDA7CisJCS8qZ28tPmlwYiA9IGNvbXAtPm1heF9iX2ZyYW1lcyA+IDA7Ki8gLyogY29tcGxldGVseSB1bnRlc3RlZCAqLworCQlpZiAoZ28tPmJvYXJkX2luZm8tPnNlbnNvcl9mbGFncyAmIEdPNzAwN19TRU5TT1JfVFYpIHsKKwkJCXN3aXRjaCAoY29tcC0+YXNwZWN0X3JhdGlvKSB7CisJCQljYXNlIEdPNzAwN19BU1BFQ1RfUkFUSU9fNF8zX05UU0M6CisJCQljYXNlIEdPNzAwN19BU1BFQ1RfUkFUSU9fNF8zX1BBTDoKKwkJCQlnby0+YXNwZWN0X3JhdGlvID0gR083MDA3X1JBVElPXzRfMzsKKwkJCQlicmVhazsKKwkJCWNhc2UgR083MDA3X0FTUEVDVF9SQVRJT18xNl85X05UU0M6CisJCQljYXNlIEdPNzAwN19BU1BFQ1RfUkFUSU9fMTZfOV9QQUw6CisJCQkJZ28tPmFzcGVjdF9yYXRpbyA9IEdPNzAwN19SQVRJT18xNl85OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlnby0+YXNwZWN0X3JhdGlvID0gR083MDA3X1JBVElPXzFfMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAoY29tcC0+ZmxhZ3MgJiBHTzcwMDdfQ09NUF9PTUlUX1NFUV9IRUFERVIpIHsKKwkJCWdvLT5kdmRfbW9kZSA9IDA7CisJCQlnby0+c2VxX2hlYWRlcl9lbmFibGUgPSAwOworCQl9IGVsc2UgeworCQkJZ28tPnNlcV9oZWFkZXJfZW5hYmxlID0gMTsKKwkJfQorCQkvKiBmYWxsLXRocm91Z2ggKi8KKwl9CisJY2FzZSBHTzcwMDdJT0NfR19DT01QX1BBUkFNUzoKKwl7CisJCXN0cnVjdCBnbzcwMDdfY29tcF9wYXJhbXMgKmNvbXAgPSBhcmc7CisKKwkJaWYgKGdvLT5mb3JtYXQgPT0gR083MDA3X0ZPUk1BVF9NSlBFRykKKwkJCXJldHVybiAtRUlOVkFMOworCQltZW1zZXQoY29tcCwgMCwgc2l6ZW9mKCpjb21wKSk7CisJCWNvbXAtPmdvcF9zaXplID0gZ28tPmdvcF9zaXplOworCQljb21wLT5tYXhfYl9mcmFtZXMgPSBnby0+aXBiID8gMiA6IDA7CisJCXN3aXRjaCAoZ28tPmFzcGVjdF9yYXRpbykgeworCQljYXNlIEdPNzAwN19SQVRJT180XzM6CisJCQlpZiAoZ28tPnN0YW5kYXJkID09IEdPNzAwN19TVERfTlRTQykKKwkJCQljb21wLT5hc3BlY3RfcmF0aW8gPQorCQkJCQlHTzcwMDdfQVNQRUNUX1JBVElPXzRfM19OVFNDOworCQkJZWxzZQorCQkJCWNvbXAtPmFzcGVjdF9yYXRpbyA9CisJCQkJCUdPNzAwN19BU1BFQ1RfUkFUSU9fNF8zX1BBTDsKKwkJCWJyZWFrOworCQljYXNlIEdPNzAwN19SQVRJT18xNl85OgorCQkJaWYgKGdvLT5zdGFuZGFyZCA9PSBHTzcwMDdfU1REX05UU0MpCisJCQkJY29tcC0+YXNwZWN0X3JhdGlvID0KKwkJCQkJR083MDA3X0FTUEVDVF9SQVRJT18xNl85X05UU0M7CisJCQllbHNlCisJCQkJY29tcC0+YXNwZWN0X3JhdGlvID0KKwkJCQkJR083MDA3X0FTUEVDVF9SQVRJT18xNl85X1BBTDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY29tcC0+YXNwZWN0X3JhdGlvID0gR083MDA3X0FTUEVDVF9SQVRJT18xXzE7CisJCQlicmVhazsKKwkJfQorCQlpZiAoZ28tPmNsb3NlZF9nb3ApCisJCQljb21wLT5mbGFncyB8PSBHTzcwMDdfQ09NUF9DTE9TRURfR09QOworCQlpZiAoIWdvLT5zZXFfaGVhZGVyX2VuYWJsZSkKKwkJCWNvbXAtPmZsYWdzIHw9IEdPNzAwN19DT01QX09NSVRfU0VRX0hFQURFUjsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgR083MDA3SU9DX1NfTVBFR19QQVJBTVM6CisJeworCQlzdHJ1Y3QgZ283MDA3X21wZWdfcGFyYW1zICptcGVnID0gYXJnOworCisJCWlmIChnby0+Zm9ybWF0ICE9IEdPNzAwN19GT1JNQVRfTVBFRzEgJiYKKwkJCQlnby0+Zm9ybWF0ICE9IEdPNzAwN19GT1JNQVRfTVBFRzIgJiYKKwkJCQlnby0+Zm9ybWF0ICE9IEdPNzAwN19GT1JNQVRfTVBFRzQpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlpZiAobXBlZy0+ZmxhZ3MgJiBHTzcwMDdfTVBFR19GT1JDRV9EVkRfTU9ERSkgeworCQkJZ28tPmZvcm1hdCA9IEdPNzAwN19GT1JNQVRfTVBFRzI7CisJCQlnby0+Yml0cmF0ZSA9IDk4MDAwMDA7CisJCQlnby0+Z29wX3NpemUgPSAxNTsKKwkJCWdvLT5wYWxpID0gMHg0ODsKKwkJCWdvLT5jbG9zZWRfZ29wID0gMTsKKwkJCWdvLT5yZXBlYXRfc2VxaGVhZCA9IDA7CisJCQlnby0+c2VxX2hlYWRlcl9lbmFibGUgPSAxOworCQkJZ28tPmdvcF9oZWFkZXJfZW5hYmxlID0gMTsKKwkJCWdvLT5kdmRfbW9kZSA9IDE7CisJCX0gZWxzZSB7CisJCQlzd2l0Y2ggKG1wZWctPm1wZWdfdmlkZW9fc3RhbmRhcmQpIHsKKwkJCWNhc2UgR083MDA3X01QRUdfVklERU9fTVBFRzE6CisJCQkJZ28tPmZvcm1hdCA9IEdPNzAwN19GT1JNQVRfTVBFRzE7CisJCQkJZ28tPnBhbGkgPSAwOworCQkJCWJyZWFrOworCQkJY2FzZSBHTzcwMDdfTVBFR19WSURFT19NUEVHMjoKKwkJCQlnby0+Zm9ybWF0ID0gR083MDA3X0ZPUk1BVF9NUEVHMjsKKwkJCQlpZiAobXBlZy0+cGFsaSA+PiAyNCA9PSAyKQorCQkJCQlnby0+cGFsaSA9IG1wZWctPnBhbGkgJiAweGZmOworCQkJCWVsc2UKKwkJCQkJZ28tPnBhbGkgPSAweDQ4OworCQkJCWJyZWFrOworCQkJY2FzZSBHTzcwMDdfTVBFR19WSURFT19NUEVHNDoKKwkJCQlnby0+Zm9ybWF0ID0gR083MDA3X0ZPUk1BVF9NUEVHNDsKKwkJCQlpZiAobXBlZy0+cGFsaSA+PiAyNCA9PSA0KQorCQkJCQlnby0+cGFsaSA9IG1wZWctPnBhbGkgJiAweGZmOworCQkJCWVsc2UKKwkJCQkJZ28tPnBhbGkgPSAweGY1OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KKwkJCWdvLT5nb3BfaGVhZGVyX2VuYWJsZSA9CisJCQkJbXBlZy0+ZmxhZ3MgJiBHTzcwMDdfTVBFR19PTUlUX0dPUF9IRUFERVIKKwkJCQk/IDAgOiAxOworCQkJaWYgKG1wZWctPmZsYWdzICYgR083MDA3X01QRUdfUkVQRUFUX1NFUUhFQURFUikKKwkJCQlnby0+cmVwZWF0X3NlcWhlYWQgPSAxOworCQkJZWxzZQorCQkJCWdvLT5yZXBlYXRfc2VxaGVhZCA9IDA7CisJCQlnby0+ZHZkX21vZGUgPSAwOworCQl9CisJCS8qIGZhbGwtdGhyb3VnaCAqLworCX0KKwljYXNlIEdPNzAwN0lPQ19HX01QRUdfUEFSQU1TOgorCXsKKwkJc3RydWN0IGdvNzAwN19tcGVnX3BhcmFtcyAqbXBlZyA9IGFyZzsKKworCQltZW1zZXQobXBlZywgMCwgc2l6ZW9mKCptcGVnKSk7CisJCXN3aXRjaCAoZ28tPmZvcm1hdCkgeworCQljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzE6CisJCQltcGVnLT5tcGVnX3ZpZGVvX3N0YW5kYXJkID0gR083MDA3X01QRUdfVklERU9fTVBFRzE7CisJCQltcGVnLT5wYWxpID0gMDsKKwkJCWJyZWFrOworCQljYXNlIEdPNzAwN19GT1JNQVRfTVBFRzI6CisJCQltcGVnLT5tcGVnX3ZpZGVvX3N0YW5kYXJkID0gR083MDA3X01QRUdfVklERU9fTVBFRzI7CisJCQltcGVnLT5wYWxpID0gR083MDA3X01QRUdfUFJPRklMRSgyLCBnby0+cGFsaSk7CisJCQlicmVhazsKKwkJY2FzZSBHTzcwMDdfRk9STUFUX01QRUc0OgorCQkJbXBlZy0+bXBlZ192aWRlb19zdGFuZGFyZCA9IEdPNzAwN19NUEVHX1ZJREVPX01QRUc0OworCQkJbXBlZy0+cGFsaSA9IEdPNzAwN19NUEVHX1BST0ZJTEUoNCwgZ28tPnBhbGkpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoIWdvLT5nb3BfaGVhZGVyX2VuYWJsZSkKKwkJCW1wZWctPmZsYWdzIHw9IEdPNzAwN19NUEVHX09NSVRfR09QX0hFQURFUjsKKwkJaWYgKGdvLT5yZXBlYXRfc2VxaGVhZCkKKwkJCW1wZWctPmZsYWdzIHw9IEdPNzAwN19NUEVHX1JFUEVBVF9TRVFIRUFERVI7CisJCWlmIChnby0+ZHZkX21vZGUpCisJCQltcGVnLT5mbGFncyB8PSBHTzcwMDdfTVBFR19GT1JDRV9EVkRfTU9ERTsKKwkJcmV0dXJuIDA7CisJfQorCWNhc2UgR083MDA3SU9DX1NfTURfUEFSQU1TOgorCXsKKwkJc3RydWN0IGdvNzAwN19tZF9wYXJhbXMgKm1kcCA9IGFyZzsKKworCQlpZiAobWRwLT5yZWdpb24gPiAzKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWlmIChtZHAtPnRyaWdnZXIgPiAwKSB7CisJCQlnby0+bW9kZXRbbWRwLT5yZWdpb25dLnBpeGVsX3RocmVzaG9sZCA9CisJCQkJCW1kcC0+cGl4ZWxfdGhyZXNob2xkID4+IDE7CisJCQlnby0+bW9kZXRbbWRwLT5yZWdpb25dLm1vdGlvbl90aHJlc2hvbGQgPQorCQkJCQltZHAtPm1vdGlvbl90aHJlc2hvbGQgPj4gMTsKKwkJCWdvLT5tb2RldFttZHAtPnJlZ2lvbl0ubWJfdGhyZXNob2xkID0KKwkJCQkJbWRwLT50cmlnZ2VyID4+IDE7CisJCQlnby0+bW9kZXRbbWRwLT5yZWdpb25dLmVuYWJsZSA9IDE7CisJCX0gZWxzZQorCQkJZ28tPm1vZGV0W21kcC0+cmVnaW9uXS5lbmFibGUgPSAwOworCQkvKiBmYWxsLXRocm91Z2ggKi8KKwl9CisJY2FzZSBHTzcwMDdJT0NfR19NRF9QQVJBTVM6CisJeworCQlzdHJ1Y3QgZ283MDA3X21kX3BhcmFtcyAqbWRwID0gYXJnOworCQlpbnQgcmVnaW9uID0gbWRwLT5yZWdpb247CisKKwkJaWYgKG1kcC0+cmVnaW9uID4gMykKKwkJCXJldHVybiAtRUlOVkFMOworCQltZW1zZXQobWRwLCAwLCBzaXplb2Yoc3RydWN0IGdvNzAwN19tZF9wYXJhbXMpKTsKKwkJbWRwLT5yZWdpb24gPSByZWdpb247CisJCWlmICghZ28tPm1vZGV0W3JlZ2lvbl0uZW5hYmxlKQorCQkJcmV0dXJuIDA7CisJCW1kcC0+cGl4ZWxfdGhyZXNob2xkID0KKwkJCShnby0+bW9kZXRbcmVnaW9uXS5waXhlbF90aHJlc2hvbGQgPDwgMSkgKyAxOworCQltZHAtPm1vdGlvbl90aHJlc2hvbGQgPQorCQkJKGdvLT5tb2RldFtyZWdpb25dLm1vdGlvbl90aHJlc2hvbGQgPDwgMSkgKyAxOworCQltZHAtPnRyaWdnZXIgPQorCQkJKGdvLT5tb2RldFtyZWdpb25dLm1iX3RocmVzaG9sZCA8PCAxKSArIDE7CisJCXJldHVybiAwOworCX0KKwljYXNlIEdPNzAwN0lPQ19TX01EX1JFR0lPTjoKKwl7CisJCXN0cnVjdCBnbzcwMDdfbWRfcmVnaW9uICpyZWdpb24gPSBhcmc7CisKKwkJaWYgKHJlZ2lvbi0+cmVnaW9uIDwgMSB8fCByZWdpb24tPnJlZ2lvbiA+IDMpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIGNsaXBfdG9fbW9kZXRfbWFwKGdvLCByZWdpb24tPnJlZ2lvbiwgcmVnaW9uLT5jbGlwcyk7CisJfQorCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0RFQlVHICJnbzcwMDc6IHVuc3VwcG9ydGVkIGlvY3RsICVkXG4iLCBjbWQpOworCQlyZXR1cm4gLUVOT0lPQ1RMQ01EOworCX0KKwlyZXR1cm4gMDsKKwordW5sb2NrX2FuZF9yZXR1cm46CisJdXAoJmdvZmgtPmxvY2spOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAorCQl1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlzdHJ1Y3QgZ283MDA3X2ZpbGUgKmdvZmggPSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoZ29maC0+Z28tPnN0YXR1cyAhPSBTVEFUVVNfT05MSU5FKQorCQlyZXR1cm4gLUVJTzsKKworCXJldHVybiB2aWRlb191c2VyY29weShpbm9kZSwgZmlsZSwgY21kLCBhcmcsIGdvNzAwN19kb19pb2N0bCk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGdvNzAwN19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqZGF0YSwKKwkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCit7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyB2b2lkIGdvNzAwN192bV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBnbzcwMDdfYnVmZmVyICpnb2J1ZiA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCisJKytnb2J1Zi0+bWFwcGVkOworfQorCitzdGF0aWMgdm9pZCBnbzcwMDdfdm1fY2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGdvNzAwN19idWZmZXIgKmdvYnVmID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICgtLWdvYnVmLT5tYXBwZWQgPT0gMCkgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZ29idWYtPmdvLT5zcGlubG9jaywgZmxhZ3MpOworCQlkZWFjdGl2YXRlX2J1ZmZlcihnb2J1Zik7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdvYnVmLT5nby0+c3BpbmxvY2ssIGZsYWdzKTsKKwl9Cit9CisKKy8qIENvcGllZCBmcm9tIHZpZGVvYnVmLWRtYS1zZy5jICovCitzdGF0aWMgaW50IGdvNzAwN192bV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCit7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisKKwlwYWdlID0gYWxsb2NfcGFnZShHRlBfVVNFUiB8IF9fR0ZQX0RNQTMyKTsKKwlpZiAoIXBhZ2UpCisJCXJldHVybiBWTV9GQVVMVF9PT007CisJY2xlYXJfdXNlcl9wYWdlKHBhZ2VfYWRkcmVzcyhwYWdlKSwgKHVuc2lnbmVkIGxvbmcpdm1mLT52aXJ0dWFsX2FkZHJlc3MsCisJCQlwYWdlKTsKKwl2bWYtPnBhZ2UgPSBwYWdlOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGdvNzAwN192bV9vcHMgPSB7CisJLm9wZW4JPSBnbzcwMDdfdm1fb3BlbiwKKwkuY2xvc2UJPSBnbzcwMDdfdm1fY2xvc2UsCisJLmZhdWx0CT0gZ283MDA3X3ZtX2ZhdWx0LAorfTsKKworc3RhdGljIGludCBnbzcwMDdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGdvNzAwN19maWxlICpnb2ZoID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXVuc2lnbmVkIGludCBpbmRleDsKKworCWlmIChnb2ZoLT5nby0+c3RhdHVzICE9IFNUQVRVU19PTkxJTkUpCisJCXJldHVybiAtRUlPOworCWlmICghKHZtYS0+dm1fZmxhZ3MgJiBWTV9TSEFSRUQpKQorCQlyZXR1cm4gLUVJTlZBTDsgLyogb25seSBzdXBwb3J0IFZNX1NIQVJFRCBtYXBwaW5nICovCisJaWYgKHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydCAhPSBHTzcwMDdfQlVGX1NJWkUpCisJCXJldHVybiAtRUlOVkFMOyAvKiBtdXN0IG1hcCBleGFjdGx5IG9uZSBmdWxsIGJ1ZmZlciAqLworCWRvd24oJmdvZmgtPmxvY2spOworCWluZGV4ID0gdm1hLT52bV9wZ29mZiAvIEdPNzAwN19CVUZfUEFHRVM7CisJaWYgKGluZGV4ID49IGdvZmgtPmJ1Zl9jb3VudCkgeworCQl1cCgmZ29maC0+bG9jayk7CisJCXJldHVybiAtRUlOVkFMOyAvKiB0cnlpbmcgdG8gbWFwIGJleW9uZCByZXF1ZXN0ZWQgYnVmZmVycyAqLworCX0KKwlpZiAoaW5kZXggKiBHTzcwMDdfQlVGX1BBR0VTICE9IHZtYS0+dm1fcGdvZmYpIHsKKwkJdXAoJmdvZmgtPmxvY2spOworCQlyZXR1cm4gLUVJTlZBTDsgLyogb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIG9uIGJ1ZmZlciBib3VuZGFyeSAqLworCX0KKwlpZiAoZ29maC0+YnVmc1tpbmRleF0ubWFwcGVkID4gMCkgeworCQl1cCgmZ29maC0+bG9jayk7CisJCXJldHVybiAtRUJVU1k7CisJfQorCWdvZmgtPmJ1ZnNbaW5kZXhdLm1hcHBlZCA9IDE7CisJZ29maC0+YnVmc1tpbmRleF0udXNlcl9hZGRyID0gdm1hLT52bV9zdGFydDsKKwl2bWEtPnZtX29wcyA9ICZnbzcwMDdfdm1fb3BzOworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fRE9OVEVYUEFORDsKKwl2bWEtPnZtX2ZsYWdzICY9IH5WTV9JTzsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9ICZnb2ZoLT5idWZzW2luZGV4XTsKKwl1cCgmZ29maC0+bG9jayk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ283MDA3X3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpCit7CisJc3RydWN0IGdvNzAwN19maWxlICpnb2ZoID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBnbzcwMDdfYnVmZmVyICpnb2J1ZjsKKworCWlmIChsaXN0X2VtcHR5KCZnb2ZoLT5nby0+c3RyZWFtKSkKKwkJcmV0dXJuIFBPTExFUlI7CisJZ29idWYgPSBsaXN0X2VudHJ5KGdvZmgtPmdvLT5zdHJlYW0ubmV4dCwgc3RydWN0IGdvNzAwN19idWZmZXIsIHN0cmVhbSk7CisJcG9sbF93YWl0KGZpbGUsICZnb2ZoLT5nby0+ZnJhbWVfd2FpdHEsIHdhaXQpOworCWlmIChnb2J1Zi0+c3RhdGUgPT0gQlVGX1NUQVRFX0RPTkUpCisJCXJldHVybiBQT0xMSU4gfCBQT0xMUkROT1JNOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBnbzcwMDdfdmZsX3JlbGVhc2Uoc3RydWN0IHZpZGVvX2RldmljZSAqdmZkKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gdmlkZW9fZ2V0X2RydmRhdGEodmZkKTsKKworCXZpZGVvX2RldmljZV9yZWxlYXNlKHZmZCk7CisJaWYgKC0tZ28tPnJlZl9jb3VudCA9PSAwKQorCQlrZnJlZShnbyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdvNzAwN19mb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkub3BlbgkJPSBnbzcwMDdfb3BlbiwKKwkucmVsZWFzZQk9IGdvNzAwN19yZWxlYXNlLAorCS5pb2N0bAkJPSBnbzcwMDdfaW9jdGwsCisJLmxsc2VlawkJPSBub19sbHNlZWssCisJLnJlYWQJCT0gZ283MDA3X3JlYWQsCisJLm1tYXAJCT0gZ283MDA3X21tYXAsCisJLnBvbGwJCT0gZ283MDA3X3BvbGwsCit9OworCitzdGF0aWMgc3RydWN0IHZpZGVvX2RldmljZSBnbzcwMDdfdGVtcGxhdGUgPSB7CisJLm5hbWUJCT0gImdvNzAwNyIsCisJLnZmbF90eXBlCT0gVklEX1RZUEVfQ0FQVFVSRSwKKwkuZm9wcwkJPSAmZ283MDA3X2ZvcHMsCisJLm1pbm9yCQk9IC0xLAorCS5yZWxlYXNlCT0gZ283MDA3X3ZmbF9yZWxlYXNlLAorfTsKKworaW50IGdvNzAwN192NGwyX2luaXQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJaW50IHJ2OworCisJZ28tPnZpZGVvX2RldiA9IHZpZGVvX2RldmljZV9hbGxvYygpOworCWlmIChnby0+dmlkZW9fZGV2ID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCW1lbWNweShnby0+dmlkZW9fZGV2LCAmZ283MDA3X3RlbXBsYXRlLCBzaXplb2YoZ283MDA3X3RlbXBsYXRlKSk7CisJZ28tPnZpZGVvX2Rldi0+cGFyZW50ID0gZ28tPmRldjsKKwlydiA9IHZpZGVvX3JlZ2lzdGVyX2RldmljZShnby0+dmlkZW9fZGV2LCBWRkxfVFlQRV9HUkFCQkVSLCAtMSk7CisJaWYgKHJ2IDwgMCkgeworCQl2aWRlb19kZXZpY2VfcmVsZWFzZShnby0+dmlkZW9fZGV2KTsKKwkJZ28tPnZpZGVvX2RldiA9IE5VTEw7CisJCXJldHVybiBydjsKKwl9CisJdmlkZW9fc2V0X2RydmRhdGEoZ28tPnZpZGVvX2RldiwgZ28pOworCSsrZ28tPnJlZl9jb3VudDsKKworCXJldHVybiAwOworfQorCit2b2lkIGdvNzAwN192NGwyX3JlbW92ZShzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJZG93bigmZ28tPmh3X2xvY2spOworCWlmIChnby0+c3RyZWFtaW5nKSB7CisJCWdvLT5zdHJlYW1pbmcgPSAwOworCQlnbzcwMDdfc3RyZWFtX3N0b3AoZ28pOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZ28tPnNwaW5sb2NrLCBmbGFncyk7CisJCWFib3J0X3F1ZXVlZChnbyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdvLT5zcGlubG9jaywgZmxhZ3MpOworCX0KKwl1cCgmZ28tPmh3X2xvY2spOworCWlmIChnby0+dmlkZW9fZGV2KQorCQl2aWRlb191bnJlZ2lzdGVyX2RldmljZShnby0+dmlkZW9fZGV2KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LmggYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczOTljOTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCB0aGUgYXNzb2NpYXRlZCBSRUFETUUgZG9jdW1lbnRhdGlvbiBmaWxlICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisvKiBERVBSRUNBVEVEIC0tIHVzZSBWNEwyX1BJWF9GTVRfTVBFRyBhbmQgdGhlbiBjYWxsIEdPNzAwN0lPQ19TX01QRUdfUEFSQU1TCisgKiB0byBzZWxlY3QgYmV0d2VlbiBNUEVHMSwgTVBFRzIsIGFuZCBNUEVHNCAqLworI2RlZmluZSBWNEwyX1BJWF9GTVRfTVBFRzQgICAgIHY0bDJfZm91cmNjKCdNJywgJ1AnLCAnRycsICc0JykgLyogTVBFRzQgKi8KKworLyogVGhlc2Ugd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEgYmV0dGVyIGludGVyZmFjZQorICogc29vbiwgc28gZG9uJ3QgZ2V0IHRvbyBhdHRhY2hlZCB0byB0aGVtICovCisjZGVmaW5lCUdPNzAwN0lPQ19TX0JJVFJBVEUJX0lPVygnVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyAwLCBpbnQpCisjZGVmaW5lCUdPNzAwN0lPQ19HX0JJVFJBVEUJX0lPUignVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyAxLCBpbnQpCisKK2VudW0gZ283MDA3X2FzcGVjdF9yYXRpbyB7CisJR083MDA3X0FTUEVDVF9SQVRJT18xXzEgPSAwLAorCUdPNzAwN19BU1BFQ1RfUkFUSU9fNF8zX05UU0MgPSAxLAorCUdPNzAwN19BU1BFQ1RfUkFUSU9fNF8zX1BBTCA9IDIsCisJR083MDA3X0FTUEVDVF9SQVRJT18xNl85X05UU0MgPSAzLAorCUdPNzAwN19BU1BFQ1RfUkFUSU9fMTZfOV9QQUwgPSA0LAorfTsKKworLyogVXNlZCB0byBzZXQgZ2VuZXJpYyBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzICovCitzdHJ1Y3QgZ283MDA3X2NvbXBfcGFyYW1zIHsKKwlfX3UzMiBnb3Bfc2l6ZTsKKwlfX3UzMiBtYXhfYl9mcmFtZXM7CisJZW51bSBnbzcwMDdfYXNwZWN0X3JhdGlvIGFzcGVjdF9yYXRpbzsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiByZXNlcnZlZFs4XTsKK307CisKKyNkZWZpbmUgR083MDA3X0NPTVBfQ0xPU0VEX0dPUAkJMHgwMDAwMDAwMQorI2RlZmluZSBHTzcwMDdfQ09NUF9PTUlUX1NFUV9IRUFERVIJMHgwMDAwMDAwMgorCitlbnVtIGdvNzAwN19tcGVnX3ZpZGVvX3N0YW5kYXJkIHsKKwlHTzcwMDdfTVBFR19WSURFT19NUEVHMSA9IDAsCisJR083MDA3X01QRUdfVklERU9fTVBFRzIgPSAxLAorCUdPNzAwN19NUEVHX1ZJREVPX01QRUc0ID0gMiwKK307CisKKy8qIFVzZWQgdG8gc2V0IHBhcmFtZXRlcnMgZm9yIFY0TDJfUElYX0ZNVF9NUEVHIGZvcm1hdCAqLworc3RydWN0IGdvNzAwN19tcGVnX3BhcmFtcyB7CisJZW51bSBnbzcwMDdfbXBlZ192aWRlb19zdGFuZGFyZCBtcGVnX3ZpZGVvX3N0YW5kYXJkOworCV9fdTMyIGZsYWdzOworCV9fdTMyIHBhbGk7CisJX191MzIgcmVzZXJ2ZWRbOF07Cit9OworCisjZGVmaW5lIEdPNzAwN19NUEVHX0ZPUkNFX0RWRF9NT0RFCTB4MDAwMDAwMDEKKyNkZWZpbmUgR083MDA3X01QRUdfT01JVF9HT1BfSEVBREVSCTB4MDAwMDAwMDIKKyNkZWZpbmUgR083MDA3X01QRUdfUkVQRUFUX1NFUUhFQURFUgkweDAwMDAwMDA0CisKKyNkZWZpbmUgR083MDA3X01QRUdfUFJPRklMRShmb3JtYXQsIHBhbGkpCSgoKGZvcm1hdCk8PDI0KXwocGFsaSkpCisKKyNkZWZpbmUgR083MDA3X01QRUcyX1BST0ZJTEVfTUFJTl9NQUlOCQlHTzcwMDdfTVBFR19QUk9GSUxFKDIsIDB4NDgpCisKKyNkZWZpbmUgR083MDA3X01QRUc0X1BST0ZJTEVfU19MMAkJR083MDA3X01QRUdfUFJPRklMRSg0LCAweDA4KQorI2RlZmluZSBHTzcwMDdfTVBFRzRfUFJPRklMRV9TX0wxCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4MDEpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX1NfTDIJCUdPNzAwN19NUEVHX1BST0ZJTEUoNCwgMHgwMikKKyNkZWZpbmUgR083MDA3X01QRUc0X1BST0ZJTEVfU19MMwkJR083MDA3X01QRUdfUFJPRklMRSg0LCAweDAzKQorI2RlZmluZSBHTzcwMDdfTVBFRzRfUFJPRklMRV9BUlRTX0wxCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4OTEpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FSVFNfTDIJCUdPNzAwN19NUEVHX1BST0ZJTEUoNCwgMHg5MikKKyNkZWZpbmUgR083MDA3X01QRUc0X1BST0ZJTEVfQVJUU19MMwkJR083MDA3X01QRUdfUFJPRklMRSg0LCAweDkzKQorI2RlZmluZSBHTzcwMDdfTVBFRzRfUFJPRklMRV9BUlRTX0w0CQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4OTQpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0wwCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjApCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0wxCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjEpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0wyCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjIpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0wzCQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjMpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0w0CQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjQpCisjZGVmaW5lIEdPNzAwN19NUEVHNF9QUk9GSUxFX0FTX0w1CQlHTzcwMDdfTVBFR19QUk9GSUxFKDQsIDB4ZjUpCisKK3N0cnVjdCBnbzcwMDdfbWRfcGFyYW1zIHsKKwlfX3UxNiByZWdpb247CisJX191MTYgdHJpZ2dlcjsKKwlfX3UxNiBwaXhlbF90aHJlc2hvbGQ7CisJX191MTYgbW90aW9uX3RocmVzaG9sZDsKKwlfX3UzMiByZXNlcnZlZFs4XTsKK307CisKK3N0cnVjdCBnbzcwMDdfbWRfcmVnaW9uIHsKKwlfX3UxNiByZWdpb247CisJX191MTYgZmxhZ3M7CisJc3RydWN0IHY0bDJfY2xpcCAqY2xpcHM7CisJX191MzIgcmVzZXJ2ZWRbOF07Cit9OworCisjZGVmaW5lCUdPNzAwN0lPQ19TX01QRUdfUEFSQU1TCV9JT1dSKCdWJywgQkFTRV9WSURJT0NfUFJJVkFURSArIDIsIFwKKwkJCQkJc3RydWN0IGdvNzAwN19tcGVnX3BhcmFtcykKKyNkZWZpbmUJR083MDA3SU9DX0dfTVBFR19QQVJBTVMJX0lPUignVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyAzLCBcCisJCQkJCXN0cnVjdCBnbzcwMDdfbXBlZ19wYXJhbXMpCisjZGVmaW5lCUdPNzAwN0lPQ19TX0NPTVBfUEFSQU1TCV9JT1dSKCdWJywgQkFTRV9WSURJT0NfUFJJVkFURSArIDQsIFwKKwkJCQkJc3RydWN0IGdvNzAwN19jb21wX3BhcmFtcykKKyNkZWZpbmUJR083MDA3SU9DX0dfQ09NUF9QQVJBTVMJX0lPUignVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyA1LCBcCisJCQkJCXN0cnVjdCBnbzcwMDdfY29tcF9wYXJhbXMpCisjZGVmaW5lCUdPNzAwN0lPQ19TX01EX1BBUkFNUwlfSU9XUignVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyA2LCBcCisJCQkJCXN0cnVjdCBnbzcwMDdfbWRfcGFyYW1zKQorI2RlZmluZQlHTzcwMDdJT0NfR19NRF9QQVJBTVMJX0lPUignVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyA3LCBcCisJCQkJCXN0cnVjdCBnbzcwMDdfbWRfcGFyYW1zKQorI2RlZmluZQlHTzcwMDdJT0NfU19NRF9SRUdJT04JX0lPVygnVicsIEJBU0VfVklESU9DX1BSSVZBVEUgKyA4LCBcCisJCQkJCXN0cnVjdCBnbzcwMDdfbWRfcmVnaW9uKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9zYWE3MTM0LWdvNzAwNy5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9zYWE3MTM0LWdvNzAwNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YTZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3NhYTcxMzQtZ283MDA3LmMKQEAgLTAsMCArMSw0ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBNaWNyb25hcyBVU0EgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChWZXJzaW9uIDIpIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24gTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8bWVkaWEvYXVkaW9jaGlwLmg+CisKKyNpbmNsdWRlICJzYWE3MTM0LXJlZy5oIgorI2luY2x1ZGUgInNhYTcxMzQuaCIKKyNpbmNsdWRlICJnbzcwMDctcHJpdi5oIgorCisjZGVmaW5lIEdPNzAwN19IUElfREVCVUcKKworZW51bSBocGlfYWRkcmVzcyB7CisJSFBJX0FERFJfVklERU9fQlVGRkVSID0gMHhlNCwKKwlIUElfQUREUl9JTklUX0JVRkZFUiA9IDB4ZWEsCisJSFBJX0FERFJfSU5UUl9SRVRfVkFMVUUgPSAweGVlLAorCUhQSV9BRERSX0lOVFJfUkVUX0RBVEEgPSAweGVjLAorCUhQSV9BRERSX0lOVFJfU1RBVFVTID0gMHhmNCwKKwlIUElfQUREUl9JTlRSX1dSX1BBUkFNID0gMHhmNiwKKwlIUElfQUREUl9JTlRSX1dSX0lOREVYID0gMHhmOCwKK307CisKK2VudW0gZ3Bpb19jb21tYW5kIHsKKwlHUElPX0NPTU1BTkRfUkVTRVQgPSAweDAwLCAvKiAwMDBiICovCisJR1BJT19DT01NQU5EX1JFUTEgID0gMHgwNCwgLyogMDAxYiAqLworCUdQSU9fQ09NTUFORF9XUklURSA9IDB4MjAsIC8qIDAxMGIgKi8KKwlHUElPX0NPTU1BTkRfUkVRMiAgPSAweDI0LCAvKiAwMTFiICovCisJR1BJT19DT01NQU5EX1JFQUQgID0gMHg4MCwgLyogMTAwYiAqLworCUdQSU9fQ09NTUFORF9WSURFTyA9IDB4ODQsIC8qIDEwMWIgKi8KKwlHUElPX0NPTU1BTkRfSURMRSAgPSAweEEwLCAvKiAxMTBiICovCisJR1BJT19DT01NQU5EX0FERFIgID0gMHhBNCwgLyogMTExYiAqLworfTsKKworc3RydWN0IHNhYTcxMzRfZ283MDA3IHsKKwlzdHJ1Y3Qgc2FhNzEzNF9kZXYgKmRldjsKKwl1OCAqdG9wOworCXU4ICpib3R0b207CisJZG1hX2FkZHJfdCB0b3BfZG1hOworCWRtYV9hZGRyX3QgYm90dG9tX2RtYTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X2JvYXJkX2luZm8gYm9hcmRfdm95YWdlciA9IHsKKwkuZmlybXdhcmUJID0gImdvNzAwN3R2LmJpbiIsCisJLmZsYWdzCQkgPSAwLAorCS5zZW5zb3JfZmxhZ3MJID0gR083MDA3X1NFTlNPUl82NTYgfAorCQkJCUdPNzAwN19TRU5TT1JfVkFMSURfRU5BQkxFIHwKKwkJCQlHTzcwMDdfU0VOU09SX1RWIHwKKwkJCQlHTzcwMDdfU0VOU09SX1ZCSSwKKwkuYXVkaW9fZmxhZ3MJPSBHTzcwMDdfQVVESU9fSTJTX01PREVfMSB8CisJCQkJR083MDA3X0FVRElPX1dPUkRfMTYsCisJLmF1ZGlvX3JhdGUJID0gNDgwMDAsCisJLmF1ZGlvX2JjbGtfZGl2CSA9IDgsCisJLmF1ZGlvX21haW5fZGl2CSA9IDIsCisJLmhwaV9idWZmZXJfY2FwICA9IDcsCisJLm51bV9pbnB1dHMJID0gMSwKKwkuaW5wdXRzIAkgPSB7CisJCXsKKwkJCS5uYW1lCQk9ICJTQUE3MTM0IiwKKwkJfSwKKwl9LAorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKiBEcml2ZXIgZm9yIEdQSU8gSFBJIGludGVyZmFjZSAqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgZ3Bpb193cml0ZShzdHJ1Y3Qgc2FhNzEzNF9kZXYgKmRldiwgdTggYWRkciwgdTE2IGRhdGEpCit7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BNT0RFMCwgMHhmZik7CisKKwkvKiBXcml0ZSBIUEkgYWRkcmVzcyAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCwgYWRkcik7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfQUREUik7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfSURMRSk7CisKKwkvKiBXcml0ZSBsb3cgYnl0ZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCwgZGF0YSAmIDB4ZmYpOworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1dSSVRFKTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9JRExFKTsKKworCS8qIFdyaXRlIGhpZ2ggYnl0ZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCwgZGF0YSA+PiA4KTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9XUklURSk7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfSURMRSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBncGlvX3JlYWQoc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYsIHU4IGFkZHIsIHUxNiAqZGF0YSkKK3sKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUE1PREUwLCAweGZmKTsKKworCS8qIFdyaXRlIEhQSSBhZGRyZXNzICovCisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMwLCBhZGRyKTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9BRERSKTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9JRExFKTsKKworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQTU9ERTAsIDB4MDApOworCisJLyogUmVhZCBsb3cgYnl0ZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFQUQpOworCXNhYV9jbGVhcmIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisJc2FhX3NldGIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisJKmRhdGEgPSBzYWFfcmVhZGIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCk7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfSURMRSk7CisKKwkvKiBSZWFkIGhpZ2ggYnl0ZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFQUQpOworCXNhYV9jbGVhcmIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisJc2FhX3NldGIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisJKmRhdGEgfD0gc2FhX3JlYWRiKFNBQTcxMzRfR1BJT19HUFNUQVRVUzApIDw8IDg7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfSURMRSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzYWE3MTM0X2dvNzAwN19pbnRlcmZhY2VfcmVzZXQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IHNhYTcxMzRfZ283MDA3ICpzYWEgPSBnby0+aHBpX2NvbnRleHQ7CisJc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYgPSBzYWEtPmRldjsKKwl1MzIgc3RhdHVzOworCXUxNiBpbnRyX3ZhbCwgaW50cl9kYXRhOworCWludCBjb3VudCA9IDIwOworCisJc2FhX2NsZWFyYihTQUE3MTM0X1RTX1BBUkFMTEVMLCAweDgwKTsgLyogRGlzYWJsZSBUUyBpbnRlcmZhY2UgKi8KKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUE1PREUyLCAweGE0KTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUE1PREUwLCAweGZmKTsKKworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFUTEpOworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFU0VUKTsKKwltc2xlZXAoMSk7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfUkVRMSk7CisJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfUkVRMik7CisJbXNsZWVwKDEwKTsKKworCXNhYV9jbGVhcmIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisJc2FhX3NldGIoU0FBNzEzNF9HUElPX0dQTU9ERTMsIFNBQTcxMzRfR1BJT19HUFJFU0NBTik7CisKKwlzdGF0dXMgPSBzYWFfcmVhZGIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMik7CisJLypwcmludGsoS0VSTl9ERUJVRyAic3RhdHVzIGlzICVzXG4iLCBzdGF0dXMgJiAweDQwID8gIk9LIiA6ICJub3QgT0siKTsgKi8KKworCS8qIGVudGVyIGNvbW1hbmQgbW9kZS4uLig/KSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFUTEpOworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1JFUTIpOworCisJZG8geworCQlzYWFfY2xlYXJiKFNBQTcxMzRfR1BJT19HUE1PREUzLCBTQUE3MTM0X0dQSU9fR1BSRVNDQU4pOworCQlzYWFfc2V0YihTQUE3MTM0X0dQSU9fR1BNT0RFMywgU0FBNzEzNF9HUElPX0dQUkVTQ0FOKTsKKwkJc3RhdHVzID0gc2FhX3JlYWRiKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIpOworCQkvKnByaW50ayhLRVJOX0lORk8gImdwaW8gaXMgJTA4eFxuIiwgc2FhX3JlYWRsKFNBQTcxMzRfR1BJT19HUFNUQVRVUzAgPj4gMikpOyAqLworCX0gd2hpbGUgKC0tY291bnQgPiAwKTsKKworCS8qIFdhaXQgZm9yIGFuIGludGVycnVwdCB0byBpbmRpY2F0ZSBzdWNjZXNzZnVsIGhhcmR3YXJlIHJlc2V0ICovCisJaWYgKGdvNzAwN19yZWFkX2ludGVycnVwdChnbywgJmludHJfdmFsLCAmaW50cl9kYXRhKSA8IDAgfHwKKwkJCShpbnRyX3ZhbCAmIH4weDEpICE9IDB4NTVhYSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJzYWE3MTM0LWdvNzAwNzogdW5hYmxlIHRvIHJlc2V0IHRoZSBHTzcwMDdcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNhYTcxMzRfZ283MDA3X3dyaXRlX2ludGVycnVwdChzdHJ1Y3QgZ283MDA3ICpnbywgaW50IGFkZHIsIGludCBkYXRhKQoreworCXN0cnVjdCBzYWE3MTM0X2dvNzAwNyAqc2FhID0gZ28tPmhwaV9jb250ZXh0OworCXN0cnVjdCBzYWE3MTM0X2RldiAqZGV2ID0gc2FhLT5kZXY7CisJaW50IGk7CisJdTE2IHN0YXR1c19yZWc7CisKKyNpZmRlZiBHTzcwMDdfSFBJX0RFQlVHCisJcHJpbnRrKEtFUk5fREVCVUcKKwkJInNhYTcxMzQtZ283MDA3OiBXcml0ZUludGVycnVwdDogJTA0eCAlMDR4XG4iLCBhZGRyLCBkYXRhKTsKKyNlbmRpZgorCisJZm9yIChpID0gMDsgaSA8IDEwMDsgKytpKSB7CisJCWdwaW9fcmVhZChkZXYsIEhQSV9BRERSX0lOVFJfU1RBVFVTLCAmc3RhdHVzX3JlZyk7CisJCWlmICghKHN0YXR1c19yZWcgJiAweDAwMTApKQorCQkJYnJlYWs7CisJCW1zbGVlcCgxMCk7CisJfQorCWlmIChpID09IDEwMCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJzYWE3MTM0LWdvNzAwNzogZGV2aWNlIGlzIGh1bmcsIHN0YXR1cyByZWcgPSAweCUwNHhcbiIsCisJCQlzdGF0dXNfcmVnKTsKKwkJcmV0dXJuIC0xOworCX0KKwlncGlvX3dyaXRlKGRldiwgSFBJX0FERFJfSU5UUl9XUl9QQVJBTSwgZGF0YSk7CisJZ3Bpb193cml0ZShkZXYsIEhQSV9BRERSX0lOVFJfV1JfSU5ERVgsIGFkZHIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2FhNzEzNF9nbzcwMDdfcmVhZF9pbnRlcnJ1cHQoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IHNhYTcxMzRfZ283MDA3ICpzYWEgPSBnby0+aHBpX2NvbnRleHQ7CisJc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYgPSBzYWEtPmRldjsKKworCS8qIFhYWCB3ZSBuZWVkIHRvIHdhaXQgaWYgdGhlcmUgaXMgbm8gaW50ZXJydXB0IGF2YWlsYWJsZSAqLworCWdvLT5pbnRlcnJ1cHRfYXZhaWxhYmxlID0gMTsKKwlncGlvX3JlYWQoZGV2LCBIUElfQUREUl9JTlRSX1JFVF9WQUxVRSwgJmdvLT5pbnRlcnJ1cHRfdmFsdWUpOworCWdwaW9fcmVhZChkZXYsIEhQSV9BRERSX0lOVFJfUkVUX0RBVEEsICZnby0+aW50ZXJydXB0X2RhdGEpOworI2lmZGVmIEdPNzAwN19IUElfREVCVUcKKwlwcmludGsoS0VSTl9ERUJVRyAic2FhNzEzNC1nbzcwMDc6IFJlYWRJbnRlcnJ1cHQ6ICUwNHggJTA0eFxuIiwKKwkJCWdvLT5pbnRlcnJ1cHRfdmFsdWUsIGdvLT5pbnRlcnJ1cHRfZGF0YSk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2FhNzEzNF9nbzcwMDdfaXJxX3RzX2RvbmUoc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYsCisJCQkJCQl1bnNpZ25lZCBsb25nIHN0YXR1cykKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbyA9IHZpZGVvX2dldF9kcnZkYXRhKGRldi0+ZW1wcmVzc19kZXYpOworCXN0cnVjdCBzYWE3MTM0X2dvNzAwNyAqc2FhID0gZ28tPmhwaV9jb250ZXh0OworCisJaWYgKCFnby0+c3RyZWFtaW5nKQorCQlyZXR1cm47CisJaWYgKDAgIT0gKHN0YXR1cyAmIDB4MDAwZjAwMDApKQorCQlwcmludGsoS0VSTl9ERUJVRyAic2FhNzEzNC1nbzcwMDc6IGlycTogbG9zdCAlbGRcbiIsCisJCQkJKHN0YXR1cyA+PiAxNikgJiAweDBmKTsKKwlpZiAoc3RhdHVzICYgMHgxMDAwMDApIHsKKwkJZG1hX3N5bmNfc2luZ2xlKCZkZXYtPnBjaS0+ZGV2LAorCQkJCXNhYS0+Ym90dG9tX2RtYSwgUEFHRV9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOworCQlnbzcwMDdfcGFyc2VfdmlkZW9fc3RyZWFtKGdvLCBzYWEtPmJvdHRvbSwgUEFHRV9TSVpFKTsKKwkJc2FhX3dyaXRlbChTQUE3MTM0X1JTX0JBMig1KSwgY3B1X3RvX2xlMzIoc2FhLT5ib3R0b21fZG1hKSk7CisJfSBlbHNlIHsKKwkJZG1hX3N5bmNfc2luZ2xlKCZkZXYtPnBjaS0+ZGV2LAorCQkJCXNhYS0+dG9wX2RtYSwgUEFHRV9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOworCQlnbzcwMDdfcGFyc2VfdmlkZW9fc3RyZWFtKGdvLCBzYWEtPnRvcCwgUEFHRV9TSVpFKTsKKwkJc2FhX3dyaXRlbChTQUE3MTM0X1JTX0JBMSg1KSwgY3B1X3RvX2xlMzIoc2FhLT50b3BfZG1hKSk7CisJfQorfQorCitzdGF0aWMgaW50IHNhYTcxMzRfZ283MDA3X3N0cmVhbV9zdGFydChzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwlzdHJ1Y3Qgc2FhNzEzNF9nbzcwMDcgKnNhYSA9IGdvLT5ocGlfY29udGV4dDsKKwlzdHJ1Y3Qgc2FhNzEzNF9kZXYgKmRldiA9IHNhYS0+ZGV2OworCisJc2FhLT50b3BfZG1hID0gZG1hX21hcF9wYWdlKCZkZXYtPnBjaS0+ZGV2LCB2aXJ0X3RvX3BhZ2Uoc2FhLT50b3ApLAorCQkJMCwgUEFHRV9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOworCWlmICghc2FhLT50b3BfZG1hKQorCQlyZXR1cm4gLUVOT01FTTsKKwlzYWEtPmJvdHRvbV9kbWEgPSBkbWFfbWFwX3BhZ2UoJmRldi0+cGNpLT5kZXYsCisJCQl2aXJ0X3RvX3BhZ2Uoc2FhLT5ib3R0b20pLAorCQkJMCwgUEFHRV9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOworCWlmICghc2FhLT5ib3R0b21fZG1hKSB7CisJCWRtYV91bm1hcF9wYWdlKCZkZXYtPnBjaS0+ZGV2LCBzYWEtPnRvcF9kbWEsIFBBR0VfU0laRSwKKwkJCQlETUFfRlJPTV9ERVZJQ0UpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlzYWFfd3JpdGVsKFNBQTcxMzRfVklERU9fUE9SVF9DVFJMMCA+PiAyLCAweEEzMDBCMDAwKTsKKwlzYWFfd3JpdGVsKFNBQTcxMzRfVklERU9fUE9SVF9DVFJMNCA+PiAyLCAweDQwMDAwMjAwKTsKKworCS8qIFNldCBIUEkgaW50ZXJmYWNlIGZvciB2aWRlbyAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQTU9ERTAsIDB4ZmYpOworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCwgSFBJX0FERFJfVklERU9fQlVGRkVSKTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9BRERSKTsKKwlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUE1PREUwLCAweDAwKTsKKworCS8qIEVuYWJsZSBUUyBpbnRlcmZhY2UgKi8KKwlzYWFfd3JpdGViKFNBQTcxMzRfVFNfUEFSQUxMRUwsIDB4ZTYpOworCisJLyogUmVzZXQgVFMgaW50ZXJmYWNlICovCisJc2FhX3NldGIoU0FBNzEzNF9UU19TRVJJQUwxLCAweDAxKTsKKwlzYWFfY2xlYXJiKFNBQTcxMzRfVFNfU0VSSUFMMSwgMHgwMSk7CisKKwkvKiBTZXQgdXAgdHJhbnNmZXIgYmxvY2sgc2l6ZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9UU19QQVJBTExFTF9TRVJJQUwsIDEyOCAtIDEpOworCXNhYV93cml0ZWIoU0FBNzEzNF9UU19ETUEwLCAoUEFHRV9TSVpFID4+IDcpIC0gMSk7CisJc2FhX3dyaXRlYihTQUE3MTM0X1RTX0RNQTEsIDApOworCXNhYV93cml0ZWIoU0FBNzEzNF9UU19ETUEyLCAwKTsKKworCS8qIEVuYWJsZSB2aWRlbyBzdHJlYW1pbmcgbW9kZSAqLworCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1ZJREVPKTsKKworCXNhYV93cml0ZWwoU0FBNzEzNF9SU19CQTEoNSksIGNwdV90b19sZTMyKHNhYS0+dG9wX2RtYSkpOworCXNhYV93cml0ZWwoU0FBNzEzNF9SU19CQTIoNSksIGNwdV90b19sZTMyKHNhYS0+Ym90dG9tX2RtYSkpOworCXNhYV93cml0ZWwoU0FBNzEzNF9SU19QSVRDSCg1KSwgMTI4KTsKKwlzYWFfd3JpdGVsKFNBQTcxMzRfUlNfQ09OVFJPTCg1KSwgU0FBNzEzNF9SU19DT05UUk9MX0JVUlNUX01BWCk7CisKKwkvKiBFbmFibGUgVFMgRklGTyAqLworCXNhYV9zZXRsKFNBQTcxMzRfTUFJTl9DVFJMLCBTQUE3MTM0X01BSU5fQ1RSTF9URTUpOworCisJLyogRW5hYmxlIERNQSBJUlEgKi8KKwlzYWFfc2V0bChTQUE3MTM0X0lSUTEsCisJCQlTQUE3MTM0X0lSUTFfSU5URV9SQTJfMSB8IFNBQTcxMzRfSVJRMV9JTlRFX1JBMl8wKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNhYTcxMzRfZ283MDA3X3N0cmVhbV9zdG9wKHN0cnVjdCBnbzcwMDcgKmdvKQoreworCXN0cnVjdCBzYWE3MTM0X2dvNzAwNyAqc2FhID0gZ28tPmhwaV9jb250ZXh0OworCXN0cnVjdCBzYWE3MTM0X2RldiAqZGV2ID0gc2FhLT5kZXY7CisKKwkvKiBTaHV0IGRvd24gVFMgRklGTyAqLworCXNhYV9jbGVhcmwoU0FBNzEzNF9NQUlOX0NUUkwsIFNBQTcxMzRfTUFJTl9DVFJMX1RFNSk7CisKKwkvKiBEaXNhYmxlIERNQSBJUlEgKi8KKwlzYWFfY2xlYXJsKFNBQTcxMzRfSVJRMSwKKwkJCVNBQTcxMzRfSVJRMV9JTlRFX1JBMl8xIHwgU0FBNzEzNF9JUlExX0lOVEVfUkEyXzApOworCisJLyogRGlzYWJsZSBUUyBpbnRlcmZhY2UgKi8KKwlzYWFfY2xlYXJiKFNBQTcxMzRfVFNfUEFSQUxMRUwsIDB4ODApOworCisJZG1hX3VubWFwX3BhZ2UoJmRldi0+cGNpLT5kZXYsIHNhYS0+dG9wX2RtYSwgUEFHRV9TSVpFLAorCQkJRE1BX0ZST01fREVWSUNFKTsKKwlkbWFfdW5tYXBfcGFnZSgmZGV2LT5wY2ktPmRldiwgc2FhLT5ib3R0b21fZG1hLCBQQUdFX1NJWkUsCisJCQlETUFfRlJPTV9ERVZJQ0UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2FhNzEzNF9nbzcwMDdfc2VuZF9maXJtd2FyZShzdHJ1Y3QgZ283MDA3ICpnbywgdTggKmRhdGEsIGludCBsZW4pCit7CisJc3RydWN0IHNhYTcxMzRfZ283MDA3ICpzYWEgPSBnby0+aHBpX2NvbnRleHQ7CisJc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYgPSBzYWEtPmRldjsKKwl1MTYgc3RhdHVzX3JlZzsKKwlpbnQgaTsKKworI2lmZGVmIEdPNzAwN19IUElfREVCVUcKKwlwcmludGsoS0VSTl9ERUJVRyAic2FhNzEzNC1nbzcwMDc6IERvd25sb2FkQnVmZmVyICIKKwkJCSJzZW5kaW5nICVkIGJ5dGVzXG4iLCBsZW4pOworI2VuZGlmCisKKwl3aGlsZSAobGVuID4gMCkgeworCQlpID0gbGVuID4gNjQgPyA2NCA6IGxlbjsKKwkJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BNT0RFMCwgMHhmZik7CisJCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMCwgSFBJX0FERFJfSU5JVF9CVUZGRVIpOworCQlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzIsIEdQSU9fQ09NTUFORF9BRERSKTsKKwkJc2FhX3dyaXRlYihTQUE3MTM0X0dQSU9fR1BTVEFUVVMyLCBHUElPX0NPTU1BTkRfSURMRSk7CisJCXdoaWxlIChpLS0gPiAwKSB7CisJCQlzYWFfd3JpdGViKFNBQTcxMzRfR1BJT19HUFNUQVRVUzAsICpkYXRhKTsKKwkJCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX1dSSVRFKTsKKwkJCXNhYV93cml0ZWIoU0FBNzEzNF9HUElPX0dQU1RBVFVTMiwgR1BJT19DT01NQU5EX0lETEUpOworCQkJKytkYXRhOworCQkJLS1sZW47CisJCX0KKwkJZm9yIChpID0gMDsgaSA8IDEwMDsgKytpKSB7CisJCQlncGlvX3JlYWQoZGV2LCBIUElfQUREUl9JTlRSX1NUQVRVUywgJnN0YXR1c19yZWcpOworCQkJaWYgKCEoc3RhdHVzX3JlZyAmIDB4MDAwMikpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKGkgPT0gMTAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIgInNhYTcxMzQtZ283MDA3OiBkZXZpY2UgaXMgaHVuZywgIgorCQkJCQkic3RhdHVzIHJlZyA9IDB4JTA0eFxuIiwgc3RhdHVzX3JlZyk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ283MDA3X2hwaV9vcHMgc2FhNzEzNF9nbzcwMDdfaHBpX29wcyA9IHsKKwkuaW50ZXJmYWNlX3Jlc2V0CT0gc2FhNzEzNF9nbzcwMDdfaW50ZXJmYWNlX3Jlc2V0LAorCS53cml0ZV9pbnRlcnJ1cHQJPSBzYWE3MTM0X2dvNzAwN193cml0ZV9pbnRlcnJ1cHQsCisJLnJlYWRfaW50ZXJydXB0CQk9IHNhYTcxMzRfZ283MDA3X3JlYWRfaW50ZXJydXB0LAorCS5zdHJlYW1fc3RhcnQJCT0gc2FhNzEzNF9nbzcwMDdfc3RyZWFtX3N0YXJ0LAorCS5zdHJlYW1fc3RvcAkJPSBzYWE3MTM0X2dvNzAwN19zdHJlYW1fc3RvcCwKKwkuc2VuZF9maXJtd2FyZQkJPSBzYWE3MTM0X2dvNzAwN19zZW5kX2Zpcm13YXJlLAorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKiBBZGQvcmVtb3ZlIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgc2FhNzEzNF9nbzcwMDdfaW5pdChzdHJ1Y3Qgc2FhNzEzNF9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbzsKKwlzdHJ1Y3Qgc2FhNzEzNF9nbzcwMDcgKnNhYTsKKworCXByaW50ayhLRVJOX0RFQlVHICJzYWE3MTM0LWdvNzAwNzogcHJvYmluZyBuZXcgU0FBNzEzWCBib2FyZFxuIik7CisKKwlzYWEgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2FhNzEzNF9nbzcwMDcpLCBHRlBfS0VSTkVMKTsKKwlpZiAoc2FhID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCW1lbXNldChzYWEsIDAsIHNpemVvZihzdHJ1Y3Qgc2FhNzEzNF9nbzcwMDcpKTsKKworCS8qIEFsbG9jYXRlIGEgY291cGxlIHBhZ2VzIGZvciByZWNlaXZpbmcgdGhlIGNvbXByZXNzZWQgc3RyZWFtICovCisJc2FhLT50b3AgPSAodTggKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CisJaWYgKCFzYWEtPnRvcCkKKwkJZ290byBhbGxvY2ZhaWw7CisJc2FhLT5ib3R0b20gPSAodTggKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CisJaWYgKCFzYWEtPmJvdHRvbSkKKwkJZ290byBhbGxvY2ZhaWw7CisKKwlnbyA9IGdvNzAwN19hbGxvYygmYm9hcmRfdm95YWdlciwgJmRldi0+cGNpLT5kZXYpOworCWlmIChnbyA9PSBOVUxMKQorCQlnb3RvIGFsbG9jZmFpbDsKKwlnby0+Ym9hcmRfaWQgPSBHTzcwMDdfQk9BUkRJRF9QQ0lfVk9ZQUdFUjsKKwlzdHJuY3B5KGdvLT5uYW1lLCBzYWE3MTM0X2JvYXJkc1tkZXYtPmJvYXJkXS5uYW1lLCBzaXplb2YoZ28tPm5hbWUpKTsKKwlnby0+aHBpX29wcyA9ICZzYWE3MTM0X2dvNzAwN19ocGlfb3BzOworCWdvLT5ocGlfY29udGV4dCA9IHNhYTsKKwlzYWEtPmRldiA9IGRldjsKKworCS8qIEJvb3QgdGhlIEdPNzAwNyAqLworCWlmIChnbzcwMDdfYm9vdF9lbmNvZGVyKGdvLCBnby0+Ym9hcmRfaW5mby0+ZmxhZ3MgJgorCQkJCQlHTzcwMDdfQk9BUkRfVVNFX09OQk9BUkRfSTJDKSA8IDApCisJCWdvdG8gaW5pdGZhaWw7CisKKwkvKiBEbyBhbnkgZmluYWwgR083MDA3IGluaXRpYWxpemF0aW9uLCB0aGVuIHJlZ2lzdGVyIHRoZQorCSAqIFY0TDIgYW5kIEFMU0EgaW50ZXJmYWNlcyAqLworCWlmIChnbzcwMDdfcmVnaXN0ZXJfZW5jb2RlcihnbykgPCAwKQorCQlnb3RvIGluaXRmYWlsOworCWRldi0+ZW1wcmVzc19kZXYgPSBnby0+dmlkZW9fZGV2OworCXZpZGVvX3NldF9kcnZkYXRhKGRldi0+ZW1wcmVzc19kZXYsIGdvKTsKKworCWdvLT5zdGF0dXMgPSBTVEFUVVNfT05MSU5FOworCXJldHVybiAwOworCitpbml0ZmFpbDoKKwlnby0+c3RhdHVzID0gU1RBVFVTX1NIVVRET1dOOworCXJldHVybiAwOworCithbGxvY2ZhaWw6CisJaWYgKHNhYS0+dG9wKQorCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2FhLT50b3ApOworCWlmIChzYWEtPmJvdHRvbSkKKwkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNhYS0+Ym90dG9tKTsKKwlrZnJlZShzYWEpOworCXJldHVybiAtRU5PTUVNOworfQorCitzdGF0aWMgaW50IHNhYTcxMzRfZ283MDA3X2Zpbmkoc3RydWN0IHNhYTcxMzRfZGV2ICpkZXYpCit7CisJc3RydWN0IGdvNzAwNyAqZ287CisJc3RydWN0IHNhYTcxMzRfZ283MDA3ICpzYWE7CisKKwlpZiAoTlVMTCA9PSBkZXYtPmVtcHJlc3NfZGV2KQorCQlyZXR1cm4gMDsKKworCWdvID0gdmlkZW9fZ2V0X2RydmRhdGEoZGV2LT5lbXByZXNzX2Rldik7CisJc2FhID0gZ28tPmhwaV9jb250ZXh0OworCWdvLT5zdGF0dXMgPSBTVEFUVVNfU0hVVERPV047CisJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXNhYS0+dG9wKTsKKwlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc2FhLT5ib3R0b20pOworCWtmcmVlKHNhYSk7CisJZ283MDA3X3JlbW92ZShnbyk7CisJZGV2LT5lbXByZXNzX2RldiA9IE5VTEw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzYWE3MTM0X21wZWdfb3BzIHNhYTcxMzRfZ283MDA3X29wcyA9IHsKKwkudHlwZSAgICAgICAgICA9IFNBQTcxMzRfTVBFR19HTzcwMDcsCisJLmluaXQgICAgICAgICAgPSBzYWE3MTM0X2dvNzAwN19pbml0LAorCS5maW5pICAgICAgICAgID0gc2FhNzEzNF9nbzcwMDdfZmluaSwKKwkuaXJxX3RzX2RvbmUgICA9IHNhYTcxMzRfZ283MDA3X2lycV90c19kb25lLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc2FhNzEzNF9nbzcwMDdfbW9kX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gc2FhNzEzNF90c19yZWdpc3Rlcigmc2FhNzEzNF9nbzcwMDdfb3BzKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHNhYTcxMzRfZ283MDA3X21vZF9jbGVhbnVwKHZvaWQpCit7CisJc2FhNzEzNF90c191bnJlZ2lzdGVyKCZzYWE3MTM0X2dvNzAwN19vcHMpOworfQorCittb2R1bGVfaW5pdChzYWE3MTM0X2dvNzAwN19tb2RfaW5pdCk7Cittb2R1bGVfZXhpdChzYWE3MTM0X2dvNzAwN19tb2RfY2xlYW51cCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvc25kLWdvNzAwNy5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9zbmQtZ283MDA3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyNzQwYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvc25kLWdvNzAwNy5jCkBAIC0wLDAgKzEsMzA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPHNvdW5kL2NvcmUuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxzb3VuZC9pbml0dmFsLmg+CisKKyNpbmNsdWRlICJnbzcwMDctcHJpdi5oIgorCitzdGF0aWMgaW50IGluZGV4W1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfSURYOworc3RhdGljIGNoYXIgKmlkW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfU1RSOworc3RhdGljIGludCBlbmFibGVbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9FTkFCTEVfUE5QOworCittb2R1bGVfcGFyYW1fYXJyYXkoaW5kZXgsIGludCwgTlVMTCwgMDQ0NCk7Cittb2R1bGVfcGFyYW1fYXJyYXkoaWQsIGNoYXJwLCBOVUxMLCAwNDQ0KTsKK21vZHVsZV9wYXJhbV9hcnJheShlbmFibGUsIGJvb2wsIE5VTEwsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciB0aGUgZ283MDA3IGF1ZGlvIGRyaXZlciIpOworTU9EVUxFX1BBUk1fREVTQyhpZCwgIklEIHN0cmluZyBmb3IgdGhlIGdvNzAwNyBhdWRpbyBkcml2ZXIiKTsKK01PRFVMRV9QQVJNX0RFU0MoZW5hYmxlLCAiRW5hYmxlIGZvciB0aGUgZ283MDA3IGF1ZGlvIGRyaXZlciIpOworCitzdHJ1Y3QgZ283MDA3X3NuZCB7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkOworCXN0cnVjdCBzbmRfcGNtICpwY207CisJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CisJc3BpbmxvY2tfdCBsb2NrOworCWludCB3X2lkeDsKKwlpbnQgaHdfcHRyOworCWludCBhdmFpbDsKKwlpbnQgY2FwdHVyaW5nOworfTsKKworc3RhdGljIHN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIGdvNzAwN19zbmRfY2FwdHVyZV9odyA9IHsKKwkuaW5mbwkJCT0gKFNORFJWX1BDTV9JTkZPX01NQVAgfAorCQkJCQlTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCB8CisJCQkJCVNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSIHwKKwkJCQkJU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRCksCisJLmZvcm1hdHMJCT0gU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUsCisJLnJhdGVzCQkJPSBTTkRSVl9QQ01fUkFURV80ODAwMCwKKwkucmF0ZV9taW4JCT0gNDgwMDAsCisJLnJhdGVfbWF4CQk9IDQ4MDAwLAorCS5jaGFubmVsc19taW4JCT0gMiwKKwkuY2hhbm5lbHNfbWF4CQk9IDIsCisJLmJ1ZmZlcl9ieXRlc19tYXgJPSAoMTI4KjEwMjQpLAorCS5wZXJpb2RfYnl0ZXNfbWluCT0gNDA5NiwKKwkucGVyaW9kX2J5dGVzX21heAk9ICgxMjgqMTAyNCksCisJLnBlcmlvZHNfbWluCQk9IDEsCisJLnBlcmlvZHNfbWF4CQk9IDMyLAorfTsKKworc3RhdGljIHZvaWQgcGFyc2VfYXVkaW9fc3RyZWFtX2RhdGEoc3RydWN0IGdvNzAwNyAqZ28sIHU4ICpidWYsIGludCBsZW5ndGgpCit7CisJc3RydWN0IGdvNzAwN19zbmQgKmdvc25kID0gZ28tPnNuZF9jb250ZXh0OworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBnb3NuZC0+c3Vic3RyZWFtLT5ydW50aW1lOworCWludCBmcmFtZXMgPSBieXRlc190b19mcmFtZXMocnVudGltZSwgbGVuZ3RoKTsKKworCXNwaW5fbG9jaygmZ29zbmQtPmxvY2spOworCWdvc25kLT5od19wdHIgKz0gZnJhbWVzOworCWlmIChnb3NuZC0+aHdfcHRyID49IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplKQorCQlnb3NuZC0+aHdfcHRyIC09IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplOworCWdvc25kLT5hdmFpbCArPSBmcmFtZXM7CisJc3Bpbl91bmxvY2soJmdvc25kLT5sb2NrKTsKKwlpZiAoZ29zbmQtPndfaWR4ICsgbGVuZ3RoID4gcnVudGltZS0+ZG1hX2J5dGVzKSB7CisJCWludCBjcHkgPSBydW50aW1lLT5kbWFfYnl0ZXMgLSBnb3NuZC0+d19pZHg7CisKKwkJbWVtY3B5KHJ1bnRpbWUtPmRtYV9hcmVhICsgZ29zbmQtPndfaWR4LCBidWYsIGNweSk7CisJCWxlbmd0aCAtPSBjcHk7CisJCWJ1ZiArPSBjcHk7CisJCWdvc25kLT53X2lkeCA9IDA7CisJfQorCW1lbWNweShydW50aW1lLT5kbWFfYXJlYSArIGdvc25kLT53X2lkeCwgYnVmLCBsZW5ndGgpOworCWdvc25kLT53X2lkeCArPSBsZW5ndGg7CisJc3Bpbl9sb2NrKCZnb3NuZC0+bG9jayk7CisJaWYgKGdvc25kLT5hdmFpbCA8IHJ1bnRpbWUtPnBlcmlvZF9zaXplKSB7CisJCXNwaW5fdW5sb2NrKCZnb3NuZC0+bG9jayk7CisJCXJldHVybjsKKwl9CisJZ29zbmQtPmF2YWlsIC09IHJ1bnRpbWUtPnBlcmlvZF9zaXplOworCXNwaW5fdW5sb2NrKCZnb3NuZC0+bG9jayk7CisJaWYgKGdvc25kLT5jYXB0dXJpbmcpCisJCXNuZF9wY21fcGVyaW9kX2VsYXBzZWQoZ29zbmQtPnN1YnN0cmVhbSk7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X3NuZF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpod19wYXJhbXMpCit7CisJc3RydWN0IGdvNzAwNyAqZ28gPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisJdW5zaWduZWQgaW50IGJ5dGVzOworCisJYnl0ZXMgPSBwYXJhbXNfYnVmZmVyX2J5dGVzKGh3X3BhcmFtcyk7CisJaWYgKHN1YnN0cmVhbS0+cnVudGltZS0+ZG1hX2J5dGVzID4gMCkKKwkJdmZyZWUoc3Vic3RyZWFtLT5ydW50aW1lLT5kbWFfYXJlYSk7CisJc3Vic3RyZWFtLT5ydW50aW1lLT5kbWFfYnl0ZXMgPSAwOworCXN1YnN0cmVhbS0+cnVudGltZS0+ZG1hX2FyZWEgPSB2bWFsbG9jKGJ5dGVzKTsKKwlpZiAoc3Vic3RyZWFtLT5ydW50aW1lLT5kbWFfYXJlYSA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwlzdWJzdHJlYW0tPnJ1bnRpbWUtPmRtYV9ieXRlcyA9IGJ5dGVzOworCWdvLT5hdWRpb19kZWxpdmVyID0gcGFyc2VfYXVkaW9fc3RyZWFtX2RhdGE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X3NuZF9od19mcmVlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCisJZ28tPmF1ZGlvX2RlbGl2ZXIgPSBOVUxMOworCWlmIChzdWJzdHJlYW0tPnJ1bnRpbWUtPmRtYV9ieXRlcyA+IDApCisJCXZmcmVlKHN1YnN0cmVhbS0+cnVudGltZS0+ZG1hX2FyZWEpOworCXN1YnN0cmVhbS0+cnVudGltZS0+ZG1hX2J5dGVzID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnbzcwMDdfc25kX2NhcHR1cmVfb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbyA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKwlzdHJ1Y3QgZ283MDA3X3NuZCAqZ29zbmQgPSBnby0+c25kX2NvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZnb3NuZC0+bG9jaywgZmxhZ3MpOworCWlmIChnb3NuZC0+c3Vic3RyZWFtID09IE5VTEwpIHsKKwkJZ29zbmQtPnN1YnN0cmVhbSA9IHN1YnN0cmVhbTsKKwkJc3Vic3RyZWFtLT5ydW50aW1lLT5odyA9IGdvNzAwN19zbmRfY2FwdHVyZV9odzsKKwkJciA9IDA7CisJfSBlbHNlCisJCXIgPSAtRUJVU1k7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ29zbmQtPmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcjsKK30KKworc3RhdGljIGludCBnbzcwMDdfc25kX2NhcHR1cmVfY2xvc2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IGdvNzAwNyAqZ28gPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisJc3RydWN0IGdvNzAwN19zbmQgKmdvc25kID0gZ28tPnNuZF9jb250ZXh0OworCisJZ29zbmQtPnN1YnN0cmVhbSA9IE5VTEw7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ283MDA3X3NuZF9wY21fcHJlcGFyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnbzcwMDdfc25kX3BjbV90cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY21kKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCXN0cnVjdCBnbzcwMDdfc25kICpnb3NuZCA9IGdvLT5zbmRfY29udGV4dDsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFSVDoKKwkJLyogSnVzdCBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHdlIHNob3VsZCBzaWduYWwgQUxTQSB3aGVuCisJCSAqIHNvdW5kIGNvbWVzIGluICovCisJCWdvc25kLT5jYXB0dXJpbmcgPSAxOworCQlyZXR1cm4gMDsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisJCWdvc25kLT5od19wdHIgPSBnb3NuZC0+d19pZHggPSBnb3NuZC0+YXZhaWwgPSAwOworCQlnb3NuZC0+Y2FwdHVyaW5nID0gMDsKKwkJcmV0dXJuIDA7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQorCitzdGF0aWMgc25kX3BjbV91ZnJhbWVzX3QgZ283MDA3X3NuZF9wY21fcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgZ283MDA3ICpnbyA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKwlzdHJ1Y3QgZ283MDA3X3NuZCAqZ29zbmQgPSBnby0+c25kX2NvbnRleHQ7CisKKwlyZXR1cm4gZ29zbmQtPmh3X3B0cjsKK30KKworc3RhdGljIHN0cnVjdCBwYWdlICpnbzcwMDdfc25kX3BjbV9wYWdlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJCQl1bnNpZ25lZCBsb25nIG9mZnNldCkKK3sKKwlyZXR1cm4gdm1hbGxvY190b19wYWdlKHN1YnN0cmVhbS0+cnVudGltZS0+ZG1hX2FyZWEgKyBvZmZzZXQpOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9wY21fb3BzIGdvNzAwN19zbmRfY2FwdHVyZV9vcHMgPSB7CisJLm9wZW4JCT0gZ283MDA3X3NuZF9jYXB0dXJlX29wZW4sCisJLmNsb3NlCQk9IGdvNzAwN19zbmRfY2FwdHVyZV9jbG9zZSwKKwkuaW9jdGwJCT0gc25kX3BjbV9saWJfaW9jdGwsCisJLmh3X3BhcmFtcwk9IGdvNzAwN19zbmRfaHdfcGFyYW1zLAorCS5od19mcmVlCT0gZ283MDA3X3NuZF9od19mcmVlLAorCS5wcmVwYXJlCT0gZ283MDA3X3NuZF9wY21fcHJlcGFyZSwKKwkudHJpZ2dlcgk9IGdvNzAwN19zbmRfcGNtX3RyaWdnZXIsCisJLnBvaW50ZXIJPSBnbzcwMDdfc25kX3BjbV9wb2ludGVyLAorCS5wYWdlCQk9IGdvNzAwN19zbmRfcGNtX3BhZ2UsCit9OworCitzdGF0aWMgaW50IGdvNzAwN19zbmRfZnJlZShzdHJ1Y3Qgc25kX2RldmljZSAqZGV2aWNlKQoreworCXN0cnVjdCBnbzcwMDcgKmdvID0gZGV2aWNlLT5kZXZpY2VfZGF0YTsKKworCWtmcmVlKGdvLT5zbmRfY29udGV4dCk7CisJZ28tPnNuZF9jb250ZXh0ID0gTlVMTDsKKwlpZiAoLS1nby0+cmVmX2NvdW50ID09IDApCisJCWtmcmVlKGdvKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfZGV2aWNlX29wcyBnbzcwMDdfc25kX2RldmljZV9vcHMgPSB7CisJLmRldl9mcmVlCT0gZ283MDA3X3NuZF9mcmVlLAorfTsKKworaW50IGdvNzAwN19zbmRfaW5pdChzdHJ1Y3QgZ283MDA3ICpnbykKK3sKKwlzdGF0aWMgaW50IGRldjsKKwlzdHJ1Y3QgZ283MDA3X3NuZCAqZ29zbmQ7CisJaW50IHJldCA9IDA7CisKKwlpZiAoZGV2ID49IFNORFJWX0NBUkRTKQorCQlyZXR1cm4gLUVOT0RFVjsKKwlpZiAoIWVuYWJsZVtkZXZdKSB7CisJCWRldisrOworCQlyZXR1cm4gLUVOT0VOVDsKKwl9CisJZ29zbmQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZ283MDA3X3NuZCksIEdGUF9LRVJORUwpOworCWlmIChnb3NuZCA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwlzcGluX2xvY2tfaW5pdCgmZ29zbmQtPmxvY2spOworCWdvc25kLT5od19wdHIgPSBnb3NuZC0+d19pZHggPSBnb3NuZC0+YXZhaWwgPSAwOworCWdvc25kLT5jYXB0dXJpbmcgPSAwOworCWdvc25kLT5jYXJkID0gc25kX2NhcmRfbmV3KGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLCAwKTsKKwlpZiAoZ29zbmQtPmNhcmQgPT0gTlVMTCkgeworCQlrZnJlZShnb3NuZCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlyZXQgPSBzbmRfZGV2aWNlX25ldyhnb3NuZC0+Y2FyZCwgU05EUlZfREVWX0xPV0xFVkVMLCBnbywKKwkJCSZnbzcwMDdfc25kX2RldmljZV9vcHMpOworCWlmIChyZXQgPCAwKSB7CisJCWtmcmVlKGdvc25kKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJc25kX2NhcmRfc2V0X2Rldihnb3NuZC0+Y2FyZCwgZ28tPmRldik7CisJcmV0ID0gc25kX3BjbV9uZXcoZ29zbmQtPmNhcmQsICJnbzcwMDciLCAwLCAwLCAxLCAmZ29zbmQtPnBjbSk7CisJaWYgKHJldCA8IDApIHsKKwkJc25kX2NhcmRfZnJlZShnb3NuZC0+Y2FyZCk7CisJCWtmcmVlKGdvc25kKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJc3RybmNweShnb3NuZC0+Y2FyZC0+ZHJpdmVyLCAiZ283MDA3Iiwgc2l6ZW9mKGdvc25kLT5jYXJkLT5kcml2ZXIpKTsKKwlzdHJuY3B5KGdvc25kLT5jYXJkLT5zaG9ydG5hbWUsIGdvLT5uYW1lLCBzaXplb2YoZ29zbmQtPmNhcmQtPmRyaXZlcikpOworCXN0cm5jcHkoZ29zbmQtPmNhcmQtPmxvbmduYW1lLCBnb3NuZC0+Y2FyZC0+c2hvcnRuYW1lLAorCQkJc2l6ZW9mKGdvc25kLT5jYXJkLT5sb25nbmFtZSkpOworCisJZ29zbmQtPnBjbS0+cHJpdmF0ZV9kYXRhID0gZ287CisJc25kX3BjbV9zZXRfb3BzKGdvc25kLT5wY20sIFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKwkJCSZnbzcwMDdfc25kX2NhcHR1cmVfb3BzKTsKKworCXJldCA9IHNuZF9jYXJkX3JlZ2lzdGVyKGdvc25kLT5jYXJkKTsKKwlpZiAocmV0IDwgMCkgeworCQlzbmRfY2FyZF9mcmVlKGdvc25kLT5jYXJkKTsKKwkJa2ZyZWUoZ29zbmQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWdvc25kLT5zdWJzdHJlYW0gPSBOVUxMOworCWdvLT5zbmRfY29udGV4dCA9IGdvc25kOworCSsrZGV2OworCSsrZ28tPnJlZl9jb3VudDsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChnbzcwMDdfc25kX2luaXQpOworCitpbnQgZ283MDA3X3NuZF9yZW1vdmUoc3RydWN0IGdvNzAwNyAqZ28pCit7CisJc3RydWN0IGdvNzAwN19zbmQgKmdvc25kID0gZ28tPnNuZF9jb250ZXh0OworCisJc25kX2NhcmRfZGlzY29ubmVjdChnb3NuZC0+Y2FyZCk7CisJc25kX2NhcmRfZnJlZV93aGVuX2Nsb3NlZChnb3NuZC0+Y2FyZCk7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGdvNzAwN19zbmRfcmVtb3ZlKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtaTJjLmggYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1pMmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTNmNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtaTJjLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworLyogVGVtcG9yYXJ5IEkyQyBJRHMgLS0gdGhlc2UgbmVlZCB0byBiZSByZXBsYWNlZCB3aXRoIHJlYWwgcmVnaXN0ZXJlZCBJRHMgKi8KKyNkZWZpbmUJSTJDX0RSSVZFUklEX1dJU19TQUE3MTE1CTB4ZjBmMAorI2RlZmluZQlJMkNfRFJJVkVSSURfV0lTX1VEQTEzNDIJMHhmMGYxCisjZGVmaW5lCUkyQ19EUklWRVJJRF9XSVNfU09OWV9UVU5FUgkweGYwZjIKKyNkZWZpbmUJSTJDX0RSSVZFUklEX1dJU19UVzk5MDMJCTB4ZjBmMworI2RlZmluZQlJMkNfRFJJVkVSSURfV0lTX1NBQTcxMTMJMHhmMGY0CisjZGVmaW5lCUkyQ19EUklWRVJJRF9XSVNfT1Y3NjQwCQkweGYwZjUKKyNkZWZpbmUJSTJDX0RSSVZFUklEX1dJU19UVzI4MDQJCTB4ZjBmNgorI2RlZmluZQlJMkNfQUxHT19HTzcwMDcJCQkweGYwMDAwMAorI2RlZmluZQlJMkNfQUxHT19HTzcwMDdfVVNCCQkweGYxMDAwMAorCisvKiBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIGNsaWVudCBuZWVkcyB0byBiZSBhY2Nlc3NlZCB3aXRoIFNDQ0Igc2VtYW50aWNzICovCisvKiBXZSByZS11c2UgdGhlIEkyQ19NX1RFTiB2YWx1ZSBzbyB0aGUgZmxhZyBwYXNzZXMgdGhyb3VnaCB0aGUgbWFza3MgaW4gdGhlCisgKiBjb3JlIEkyQyBjb2RlLiAgTWFqb3Iga2x1ZGdlLCBidXQgdGhlIEkyQyBsYXllciBhaW4ndCBleGFjdGx5IGZsZXhpYmxlLiAqLworI2RlZmluZQlJMkNfQ0xJRU5UX1NDQ0IJCQkweDEwCisKK3R5cGVkZWYgaW50ICgqZm91bmRfcHJvYykgKHN0cnVjdCBpMmNfYWRhcHRlciAqLCBpbnQsIGludCk7CitpbnQgd2lzX2kyY19hZGRfZHJpdmVyKHVuc2lnbmVkIGludCBpZCwgZm91bmRfcHJvYyBmb3VuZF9wcm9jKTsKK3ZvaWQgd2lzX2kyY19kZWxfZHJpdmVyKGZvdW5kX3Byb2MgZm91bmRfcHJvYyk7CisKK2ludCB3aXNfaTJjX3Byb2JlX2RldmljZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCisJCQkJdW5zaWduZWQgaW50IGlkLCBpbnQgYWRkcik7CisKKy8qIERlZmluaXRpb25zIGZvciBuZXcgdmlkZW8gZGVjb2RlciBjb21tYW5kcyAqLworCitzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9yZXNvbHV0aW9uIHsKKwl1bnNpZ25lZCBpbnQgd2lkdGg7CisJdW5zaWduZWQgaW50IGhlaWdodDsKK307CisKKyNkZWZpbmUJREVDT0RFUl9TRVRfUkVTT0xVVElPTglfSU9XKCdkJywgMjAwLCBzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9yZXNvbHV0aW9uKQorI2RlZmluZQlERUNPREVSX1NFVF9DSEFOTkVMCV9JT1coJ2QnLCAyMDEsIGludCkKKworLyogU29ueSB0dW5lciB0eXBlcyAqLworCisjZGVmaW5lIFRVTkVSX1NPTllfQlRGX1BHNDcyWgkJMjAwCisjZGVmaW5lIFRVTkVSX1NPTllfQlRGX1BLNDY3WgkJMjAxCisjZGVmaW5lIFRVTkVSX1NPTllfQlRGX1BCNDYzWgkJMjAyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1vdjc2NDAuYyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLW92NzY0MC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZjExZTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1vdjc2NDAuYwpAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CisKKyNpbmNsdWRlICJ3aXMtaTJjLmgiCisKK3N0cnVjdCB3aXNfb3Y3NjQwIHsKKwlpbnQgYnJpZ2h0bmVzczsKKwlpbnQgY29udHJhc3Q7CisJaW50IHNhdHVyYXRpb247CisJaW50IGh1ZTsKK307CisKK3N0YXRpYyB1OCBpbml0aWFsX3JlZ2lzdGVyc1tdID0KK3sKKwkweDEyLCAweDgwLAorCTB4MTIsIDB4NTQsCisJMHgxNCwgMHgyNCwKKwkweDE1LCAweDAxLAorCTB4MjgsIDB4MjAsCisJMHg3NSwgMHg4MiwKKwkweEZGLCAweEZGLCAvKiBUZXJtaW5hdG9yIChyZWcgMHhGRiBpcyB1bnVzZWQpICovCit9OworCitzdGF0aWMgaW50IHdyaXRlX3JlZ3Moc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggKnJlZ3MpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyByZWdzW2ldICE9IDB4RkY7IGkgKz0gMikKKwkJaWYgKGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWdzW2ldLCByZWdzW2kgKyAxXSkgPCAwKQorCQkJcmV0dXJuIC0xOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgd2lzX292NzY0MF9kcml2ZXI7CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCB3aXNfb3Y3NjQwX2NsaWVudF90ZW1wbCA9IHsKKwkubmFtZQkJPSAiT1Y3NjQwIChXSVMpIiwKKwkuZHJpdmVyCQk9ICZ3aXNfb3Y3NjQwX2RyaXZlciwKK307CisKK3N0YXRpYyBpbnQgd2lzX292NzY0MF9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkciwgaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIDA7CisKKwljbGllbnQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOworCWlmIChjbGllbnQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisJbWVtY3B5KGNsaWVudCwgJndpc19vdjc2NDBfY2xpZW50X3RlbXBsLAorCQkJc2l6ZW9mKHdpc19vdjc2NDBfY2xpZW50X3RlbXBsKSk7CisJY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKKwljbGllbnQtPmFkZHIgPSBhZGRyOworCWNsaWVudC0+ZmxhZ3MgPSBJMkNfQ0xJRU5UX1NDQ0I7CisKKwlwcmludGsoS0VSTl9ERUJVRworCQkid2lzLW92NzY0MDogaW5pdGlhbGl6aW5nIE9WNzY0MCBhdCBhZGRyZXNzICVkIG9uICVzXG4iLAorCQlhZGRyLCBhZGFwdGVyLT5uYW1lKTsKKworCWlmICh3cml0ZV9yZWdzKGNsaWVudCwgaW5pdGlhbF9yZWdpc3RlcnMpIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIndpcy1vdjc2NDA6IGVycm9yIGluaXRpYWxpemluZyBPVjc2NDBcbiIpOworCQlrZnJlZShjbGllbnQpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc19vdjc2NDBfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJaW50IHI7CisKKwlyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKKwlpZiAociA8IDApCisJCXJldHVybiByOworCisJa2ZyZWUoY2xpZW50KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc19vdjc2NDBfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gIldJUyBPVjc2NDAgSTJDIGRyaXZlciIsCisJfSwKKwkuaWQJCT0gSTJDX0RSSVZFUklEX1dJU19PVjc2NDAsCisJLmRldGFjaF9jbGllbnQJPSB3aXNfb3Y3NjQwX2RldGFjaCwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHdpc19vdjc2NDBfaW5pdCh2b2lkKQoreworCWludCByOworCisJciA9IGkyY19hZGRfZHJpdmVyKCZ3aXNfb3Y3NjQwX2RyaXZlcik7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKwlyZXR1cm4gd2lzX2kyY19hZGRfZHJpdmVyKHdpc19vdjc2NDBfZHJpdmVyLmlkLCB3aXNfb3Y3NjQwX2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB3aXNfb3Y3NjQwX2NsZWFudXAodm9pZCkKK3sKKwl3aXNfaTJjX2RlbF9kcml2ZXIod2lzX292NzY0MF9kZXRlY3QpOworCWkyY19kZWxfZHJpdmVyKCZ3aXNfb3Y3NjQwX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHdpc19vdjc2NDBfaW5pdCk7Cittb2R1bGVfZXhpdCh3aXNfb3Y3NjQwX2NsZWFudXApOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1zYWE3MTEzLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1zYWE3MTEzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhZmYxYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLXNhYTcxMTMuYwpAQCAtMCwwICsxLDM1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KKworI2luY2x1ZGUgIndpcy1pMmMuaCIKKworc3RydWN0IHdpc19zYWE3MTEzIHsKKwlpbnQgbm9ybTsKKwlpbnQgYnJpZ2h0bmVzczsKKwlpbnQgY29udHJhc3Q7CisJaW50IHNhdHVyYXRpb247CisJaW50IGh1ZTsKK307CisKK3N0YXRpYyB1OCBpbml0aWFsX3JlZ2lzdGVyc1tdID0KK3sKKwkweDAxLCAweDA4LAorCTB4MDIsIDB4YzAsCisJMHgwMywgMHgzMywKKwkweDA0LCAweDAwLAorCTB4MDUsIDB4MDAsCisJMHgwNiwgMHhlOSwKKwkweDA3LCAweDBkLAorCTB4MDgsIDB4ZDgsCisJMHgwOSwgMHg0MCwKKwkweDBhLCAweDgwLAorCTB4MGIsIDB4NDcsCisJMHgwYywgMHg0MCwKKwkweDBkLCAweDAwLAorCTB4MGUsIDB4MDEsCisJMHgwZiwgMHgyYSwKKwkweDEwLCAweDQwLAorCTB4MTEsIDB4MGMsCisJMHgxMiwgMHhmZSwKKwkweDEzLCAweDAwLAorCTB4MTQsIDB4MDAsCisJMHgxNSwgMHgwNCwKKwkweDE2LCAweDAwLAorCTB4MTcsIDB4MDAsCisJMHgxOCwgMHgwMCwKKwkweDE5LCAweDAwLAorCTB4MWEsIDB4MDAsCisJMHgxYiwgMHgwMCwKKwkweDFjLCAweDAwLAorCTB4MWQsIDB4MDAsCisJMHgxZSwgMHgwMCwKKwkweDFmLCAweGM4LAorCTB4NDAsIDB4MDAsCisJMHg0MSwgMHhmZiwKKwkweDQyLCAweGZmLAorCTB4NDMsIDB4ZmYsCisJMHg0NCwgMHhmZiwKKwkweDQ1LCAweGZmLAorCTB4NDYsIDB4ZmYsCisJMHg0NywgMHhmZiwKKwkweDQ4LCAweGZmLAorCTB4NDksIDB4ZmYsCisJMHg0YSwgMHhmZiwKKwkweDRiLCAweGZmLAorCTB4NGMsIDB4ZmYsCisJMHg0ZCwgMHhmZiwKKwkweDRlLCAweGZmLAorCTB4NGYsIDB4ZmYsCisJMHg1MCwgMHhmZiwKKwkweDUxLCAweGZmLAorCTB4NTIsIDB4ZmYsCisJMHg1MywgMHhmZiwKKwkweDU0LCAweGZmLAorCTB4NTUsIDB4ZmYsCisJMHg1NiwgMHhmZiwKKwkweDU3LCAweGZmLAorCTB4NTgsIDB4MDAsCisJMHg1OSwgMHg1NCwKKwkweDVhLCAweDA3LAorCTB4NWIsIDB4ODMsCisJMHg1YywgMHgwMCwKKwkweDVkLCAweDAwLAorCTB4NWUsIDB4MDAsCisJMHg1ZiwgMHgwMCwKKwkweDYwLCAweDAwLAorCTB4NjEsIDB4MDAsCisJMHgwMCwgMHgwMCwgLyogVGVybWluYXRvciAocmVnIDB4MDAgaXMgcmVhZC1vbmx5KSAqLworfTsKKworc3RhdGljIGludCB3cml0ZV9yZWcoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKK3sKKwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZywgdmFsdWUpOworfQorCitzdGF0aWMgaW50IHdyaXRlX3JlZ3Moc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggKnJlZ3MpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyByZWdzW2ldICE9IDB4MDA7IGkgKz0gMikKKwkJaWYgKGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCByZWdzW2ldLCByZWdzW2kgKyAxXSkgPCAwKQorCQkJcmV0dXJuIC0xOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc19zYWE3MTEzX2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCQl1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcpCit7CisJc3RydWN0IHdpc19zYWE3MTEzICpkZWMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBWSURJT0NfU19JTlBVVDoKKwl7CisJCWludCAqaW5wdXQgPSBhcmc7CisKKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIDB4MDIsIDB4QzAgfCAqaW5wdXQpOworCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgMHgwOSwKKwkJCQkqaW5wdXQgPCA2ID8gMHg0MCA6IDB4ODApOworCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19TVEQ6CisJeworCQl2NGwyX3N0ZF9pZCAqaW5wdXQgPSBhcmc7CisJCWRlYy0+bm9ybSA9ICppbnB1dDsKKwkJaWYgKGRlYy0+bm9ybSAmIFY0TDJfU1REX05UU0MpIHsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MGUsIDB4MDEpOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgxMCwgMHg0MCk7CisJCX0gZWxzZSBpZiAoZGVjLT5ub3JtICYgVjRMMl9TVERfUEFMKSB7CisJCQl3cml0ZV9yZWcoY2xpZW50LCAweDBlLCAweDAxKTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MTAsIDB4NDgpOworCQl9IGVsc2UgaWYgKGRlYy0+bm9ybSAqIFY0TDJfU1REX1NFQ0FNKSB7CisJCQl3cml0ZV9yZWcoY2xpZW50LCAweDBlLCAweDUwKTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MTAsIDB4NDgpOworCQl9CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19RVUVSWUNUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9xdWVyeWN0cmwgKmN0cmwgPSBhcmc7CisKKwkJc3dpdGNoIChjdHJsLT5pZCkgeworCQljYXNlIFY0TDJfQ0lEX0JSSUdIVE5FU1M6CisJCQljdHJsLT50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUjsKKwkJCXN0cm5jcHkoY3RybC0+bmFtZSwgIkJyaWdodG5lc3MiLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IDA7CisJCQljdHJsLT5tYXhpbXVtID0gMjU1OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gMTI4OworCQkJY3RybC0+ZmxhZ3MgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfQ09OVFJBU1Q6CisJCQljdHJsLT50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUjsKKwkJCXN0cm5jcHkoY3RybC0+bmFtZSwgIkNvbnRyYXN0Iiwgc2l6ZW9mKGN0cmwtPm5hbWUpKTsKKwkJCWN0cmwtPm1pbmltdW0gPSAwOworCQkJY3RybC0+bWF4aW11bSA9IDEyNzsKKwkJCWN0cmwtPnN0ZXAgPSAxOworCQkJY3RybC0+ZGVmYXVsdF92YWx1ZSA9IDcxOworCQkJY3RybC0+ZmxhZ3MgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfU0FUVVJBVElPTjoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiU2F0dXJhdGlvbiIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAxMjc7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSA2NDsKKwkJCWN0cmwtPmZsYWdzID0gMDsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0hVRToKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiSHVlIiwgc2l6ZW9mKGN0cmwtPm5hbWUpKTsKKwkJCWN0cmwtPm1pbmltdW0gPSAtMTI4OworCQkJY3RybC0+bWF4aW11bSA9IDEyNzsKKwkJCWN0cmwtPnN0ZXAgPSAxOworCQkJY3RybC0+ZGVmYXVsdF92YWx1ZSA9IDA7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19DVFJMOgorCXsKKwkJc3RydWN0IHY0bDJfY29udHJvbCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDI1NSkKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSAyNTU7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5icmlnaHRuZXNzID0gMDsKKwkJCWVsc2UKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MGEsIGRlYy0+YnJpZ2h0bmVzcyk7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDEyNykKKwkJCQlkZWMtPmNvbnRyYXN0ID0gMTI3OworCQkJZWxzZSBpZiAoY3RybC0+dmFsdWUgPCAwKQorCQkJCWRlYy0+Y29udHJhc3QgPSAwOworCQkJZWxzZQorCQkJCWRlYy0+Y29udHJhc3QgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MGIsIGRlYy0+Y29udHJhc3QpOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfU0FUVVJBVElPTjoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDEyNykKKwkJCQlkZWMtPnNhdHVyYXRpb24gPSAxMjc7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5zYXR1cmF0aW9uID0gMDsKKwkJCWVsc2UKKwkJCQlkZWMtPnNhdHVyYXRpb24gPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MGMsIGRlYy0+c2F0dXJhdGlvbik7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9IVUU6CisJCQlpZiAoY3RybC0+dmFsdWUgPiAxMjcpCisJCQkJZGVjLT5odWUgPSAxMjc7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IC0xMjgpCisJCQkJZGVjLT5odWUgPSAtMTI4OworCQkJZWxzZQorCQkJCWRlYy0+aHVlID0gY3RybC0+dmFsdWU7CisJCQl3cml0ZV9yZWcoY2xpZW50LCAweDBkLCBkZWMtPmh1ZSk7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfR19DVFJMOgorCXsKKwkJc3RydWN0IHY0bDJfY29udHJvbCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWN0cmwtPnZhbHVlID0gZGVjLT5icmlnaHRuZXNzOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfQ09OVFJBU1Q6CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+Y29udHJhc3Q7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9TQVRVUkFUSU9OOgorCQkJY3RybC0+dmFsdWUgPSBkZWMtPnNhdHVyYXRpb247CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9IVUU6CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+aHVlOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc19zYWE3MTEzX2RyaXZlcjsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IHdpc19zYWE3MTEzX2NsaWVudF90ZW1wbCA9IHsKKwkubmFtZQkJPSAiU0FBNzExMyAoV0lTKSIsCisJLmRyaXZlcgkJPSAmd2lzX3NhYTcxMTNfZHJpdmVyLAorfTsKKworc3RhdGljIGludCB3aXNfc2FhNzExM19kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkciwgaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3Qgd2lzX3NhYTcxMTMgKmRlYzsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkKKwkJcmV0dXJuIDA7CisKKwljbGllbnQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOworCWlmIChjbGllbnQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisJbWVtY3B5KGNsaWVudCwgJndpc19zYWE3MTEzX2NsaWVudF90ZW1wbCwKKwkJCXNpemVvZih3aXNfc2FhNzExM19jbGllbnRfdGVtcGwpKTsKKwljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOworCWNsaWVudC0+YWRkciA9IGFkZHI7CisKKwlkZWMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgd2lzX3NhYTcxMTMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZGVjID09IE5VTEwpIHsKKwkJa2ZyZWUoY2xpZW50KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCWRlYy0+bm9ybSA9IFY0TDJfU1REX05UU0M7CisJZGVjLT5icmlnaHRuZXNzID0gMTI4OworCWRlYy0+Y29udHJhc3QgPSA3MTsKKwlkZWMtPnNhdHVyYXRpb24gPSA2NDsKKwlkZWMtPmh1ZSA9IDA7CisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGVjKTsKKworCXByaW50ayhLRVJOX0RFQlVHCisJCSJ3aXMtc2FhNzExMzogaW5pdGlhbGl6aW5nIFNBQTcxMTMgYXQgYWRkcmVzcyAlZCBvbiAlc1xuIiwKKwkJYWRkciwgYWRhcHRlci0+bmFtZSk7CisKKwlpZiAod3JpdGVfcmVncyhjbGllbnQsIGluaXRpYWxfcmVnaXN0ZXJzKSA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCQkid2lzLXNhYTcxMTM6IGVycm9yIGluaXRpYWxpemluZyBTQUE3MTEzXG4iKTsKKwkJa2ZyZWUoY2xpZW50KTsKKwkJa2ZyZWUoZGVjKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3aXNfc2FhNzExM19kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3Qgd2lzX3NhYTcxMTMgKmRlYyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWludCByOworCisJciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKworCWtmcmVlKGNsaWVudCk7CisJa2ZyZWUoZGVjKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc19zYWE3MTEzX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZQk9ICJXSVMgU0FBNzExMyBJMkMgZHJpdmVyIiwKKwl9LAorCS5pZAkJPSBJMkNfRFJJVkVSSURfV0lTX1NBQTcxMTMsCisJLmRldGFjaF9jbGllbnQJPSB3aXNfc2FhNzExM19kZXRhY2gsCisJLmNvbW1hbmQJPSB3aXNfc2FhNzExM19jb21tYW5kLAorfTsKKworc3RhdGljIGludCBfX2luaXQgd2lzX3NhYTcxMTNfaW5pdCh2b2lkKQoreworCWludCByOworCisJciA9IGkyY19hZGRfZHJpdmVyKCZ3aXNfc2FhNzExM19kcml2ZXIpOworCWlmIChyIDwgMCkKKwkJcmV0dXJuIHI7CisJcmV0dXJuIHdpc19pMmNfYWRkX2RyaXZlcih3aXNfc2FhNzExM19kcml2ZXIuaWQsIHdpc19zYWE3MTEzX2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB3aXNfc2FhNzExM19jbGVhbnVwKHZvaWQpCit7CisJd2lzX2kyY19kZWxfZHJpdmVyKHdpc19zYWE3MTEzX2RldGVjdCk7CisJaTJjX2RlbF9kcml2ZXIoJndpc19zYWE3MTEzX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHdpc19zYWE3MTEzX2luaXQpOworbW9kdWxlX2V4aXQod2lzX3NhYTcxMTNfY2xlYW51cCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLXNhYTcxMTUuYyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLXNhYTcxMTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzk0Yzg4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtc2FhNzExNS5jCkBAIC0wLDAgKzEsNDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTWljcm9uYXMgVVNBIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgorCisjaW5jbHVkZSAid2lzLWkyYy5oIgorCitzdHJ1Y3Qgd2lzX3NhYTcxMTUgeworCWludCBub3JtOworCWludCBicmlnaHRuZXNzOworCWludCBjb250cmFzdDsKKwlpbnQgc2F0dXJhdGlvbjsKKwlpbnQgaHVlOworfTsKKworc3RhdGljIHU4IGluaXRpYWxfcmVnaXN0ZXJzW10gPQoreworCTB4MDEsIDB4MDgsCisJMHgwMiwgMHhjMCwKKwkweDAzLCAweDIwLAorCTB4MDQsIDB4ODAsCisJMHgwNSwgMHg4MCwKKwkweDA2LCAweGViLAorCTB4MDcsIDB4ZTAsCisJMHgwOCwgMHhmMCwJLyogYWx3YXlzIHRvZ2dsZSBGSUQgKi8KKwkweDA5LCAweDQwLAorCTB4MGEsIDB4ODAsCisJMHgwYiwgMHg0MCwKKwkweDBjLCAweDQwLAorCTB4MGQsIDB4MDAsCisJMHgwZSwgMHgwMywKKwkweDBmLCAweDJhLAorCTB4MTAsIDB4MGUsCisJMHgxMSwgMHgwMCwKKwkweDEyLCAweDhkLAorCTB4MTMsIDB4MDAsCisJMHgxNCwgMHgwMCwKKwkweDE1LCAweDExLAorCTB4MTYsIDB4MDEsCisJMHgxNywgMHhkYSwKKwkweDE4LCAweDQwLAorCTB4MTksIDB4ODAsCisJMHgxYSwgMHgwMCwKKwkweDFiLCAweDQyLAorCTB4MWMsIDB4YTksCisJMHgzMCwgMHg2NiwKKwkweDMxLCAweDkwLAorCTB4MzIsIDB4MDEsCisJMHgzNCwgMHgwMCwKKwkweDM1LCAweDAwLAorCTB4MzYsIDB4MjAsCisJMHgzOCwgMHgwMywKKwkweDM5LCAweDIwLAorCTB4M2EsIDB4ODgsCisJMHg0MCwgMHgwMCwKKwkweDQxLCAweGZmLAorCTB4NDIsIDB4ZmYsCisJMHg0MywgMHhmZiwKKwkweDQ0LCAweGZmLAorCTB4NDUsIDB4ZmYsCisJMHg0NiwgMHhmZiwKKwkweDQ3LCAweGZmLAorCTB4NDgsIDB4ZmYsCisJMHg0OSwgMHhmZiwKKwkweDRhLCAweGZmLAorCTB4NGIsIDB4ZmYsCisJMHg0YywgMHhmZiwKKwkweDRkLCAweGZmLAorCTB4NGUsIDB4ZmYsCisJMHg0ZiwgMHhmZiwKKwkweDUwLCAweGZmLAorCTB4NTEsIDB4ZmYsCisJMHg1MiwgMHhmZiwKKwkweDUzLCAweGZmLAorCTB4NTQsIDB4ZjQgLyoweGZmKi8sCisJMHg1NSwgMHhmZiwKKwkweDU2LCAweGZmLAorCTB4NTcsIDB4ZmYsCisJMHg1OCwgMHg0MCwKKwkweDU5LCAweDQ3LAorCTB4NWEsIDB4MDYgLyoweDAzKi8sCisJMHg1YiwgMHg4MywKKwkweDVkLCAweDA2LAorCTB4NWUsIDB4MDAsCisJMHg4MCwgMHgzMCwgLyogd2luZG93IGRlZmluZWQgc2NhbGVyIG9wZXJhdGlvbiwgdGFzayBBIGFuZCBCIGVuYWJsZWQgKi8KKwkweDgxLCAweDAzLCAvKiB1c2Ugc2NhbGVyIGRhdGFwYXRoIGdlbmVyYXRlZCBWICovCisJMHg4MywgMHgwMCwKKwkweDg0LCAweDAwLAorCTB4ODUsIDB4MDAsCisJMHg4NiwgMHg0NSwKKwkweDg3LCAweDMxLAorCTB4ODgsIDB4YzAsCisJMHg5MCwgMHgwMiwgLyogdGFzayBBIHByb2Nlc3MgdG9wIGZpZWxkICovCisJMHg5MSwgMHgwOCwKKwkweDkyLCAweDA5LAorCTB4OTMsIDB4ODAsCisJMHg5NCwgMHgwNiwKKwkweDk1LCAweDAwLAorCTB4OTYsIDB4YzAsCisJMHg5NywgMHgwMiwKKwkweDk4LCAweDEyLAorCTB4OTksIDB4MDAsCisJMHg5YSwgMHhmMiwKKwkweDliLCAweDAwLAorCTB4OWMsIDB4ZDAsCisJMHg5ZCwgMHgwMiwKKwkweDllLCAweGYyLAorCTB4OWYsIDB4MDAsCisJMHhhMCwgMHgwMSwKKwkweGExLCAweDAxLAorCTB4YTIsIDB4MDEsCisJMHhhNCwgMHg4MCwKKwkweGE1LCAweDQwLAorCTB4YTYsIDB4NDAsCisJMHhhOCwgMHgwMCwKKwkweGE5LCAweDA0LAorCTB4YWEsIDB4MDAsCisJMHhhYywgMHgwMCwKKwkweGFkLCAweDAyLAorCTB4YWUsIDB4MDAsCisJMHhiMCwgMHgwMCwKKwkweGIxLCAweDA0LAorCTB4YjIsIDB4MDAsCisJMHhiMywgMHgwNCwKKwkweGI0LCAweDAwLAorCTB4YjgsIDB4MDAsCisJMHhiYywgMHgwMCwKKwkweGMwLCAweDAzLAkvKiB0YXNrIEIgcHJvY2VzcyBib3R0b20gZmllbGQgKi8KKwkweGMxLCAweDA4LAorCTB4YzIsIDB4MDksCisJMHhjMywgMHg4MCwKKwkweGM0LCAweDA2LAorCTB4YzUsIDB4MDAsCisJMHhjNiwgMHhjMCwKKwkweGM3LCAweDAyLAorCTB4YzgsIDB4MTIsCisJMHhjOSwgMHgwMCwKKwkweGNhLCAweGYyLAorCTB4Y2IsIDB4MDAsCisJMHhjYywgMHhkMCwKKwkweGNkLCAweDAyLAorCTB4Y2UsIDB4ZjIsCisJMHhjZiwgMHgwMCwKKwkweGQwLCAweDAxLAorCTB4ZDEsIDB4MDEsCisJMHhkMiwgMHgwMSwKKwkweGQ0LCAweDgwLAorCTB4ZDUsIDB4NDAsCisJMHhkNiwgMHg0MCwKKwkweGQ4LCAweDAwLAorCTB4ZDksIDB4MDQsCisJMHhkYSwgMHgwMCwKKwkweGRjLCAweDAwLAorCTB4ZGQsIDB4MDIsCisJMHhkZSwgMHgwMCwKKwkweGUwLCAweDAwLAorCTB4ZTEsIDB4MDQsCisJMHhlMiwgMHgwMCwKKwkweGUzLCAweDA0LAorCTB4ZTQsIDB4MDAsCisJMHhlOCwgMHgwMCwKKwkweDg4LCAweGYwLCAvKiBFbmQgb2Ygb3JpZ2luYWwgc3RhdGljIGxpc3QgKi8KKwkweDAwLCAweDAwLCAvKiBUZXJtaW5hdG9yIChyZWcgMHgwMCBpcyByZWFkLW9ubHkpICovCit9OworCitzdGF0aWMgaW50IHdyaXRlX3JlZyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsIHU4IHZhbHVlKQoreworCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfcmVncyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCAqcmVncykKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IHJlZ3NbaV0gIT0gMHgwMDsgaSArPSAyKQorCQlpZiAoaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZ3NbaV0sIHJlZ3NbaSArIDFdKSA8IDApCisJCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2lzX3NhYTcxMTVfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCXVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qgd2lzX3NhYTcxMTUgKmRlYyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFZJRElPQ19TX0lOUFVUOgorCXsKKwkJaW50ICppbnB1dCA9IGFyZzsKKworCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgMHgwMiwgMHhDMCB8ICppbnB1dCk7CisJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCAweDA5LAorCQkJCSppbnB1dCA8IDYgPyAweDQwIDogMHhDMCk7CisJCWJyZWFrOworCX0KKwljYXNlIERFQ09ERVJfU0VUX1JFU09MVVRJT046CisJeworCQlzdHJ1Y3QgdmlkZW9fZGVjb2Rlcl9yZXNvbHV0aW9uICpyZXMgPSBhcmc7CisJCS8qIENvdXJzZS1ncmFpbmVkIHNjYWxlciAqLworCQlpbnQgaF9pbnRlZ2VyX3NjYWxlciA9IHJlcy0+d2lkdGggPCA3MDQgPyA3MDQgLyByZXMtPndpZHRoIDogMTsKKwkJLyogRmluZS1ncmFpbmVkIHNjYWxlciB0byB0YWtlIGNhcmUgb2YgcmVtYWluZGVyICovCisJCWludCBoX3NjYWxpbmdfaW5jcmVtZW50ID0gKDcwNCAvIGhfaW50ZWdlcl9zY2FsZXIpICoKKwkJCQkJMTAyNCAvIHJlcy0+d2lkdGg7CisJCS8qIEZpbmUtZ3JhaW5lZCBzY2FsZXIgb25seSAqLworCQlpbnQgdl9zY2FsaW5nX2luY3JlbWVudCA9IChkZWMtPm5vcm0gJiBWNEwyX1NURF9OVFNDID8KKwkJCQkyNDAgOiAyODgpICogMTAyNCAvIHJlcy0+aGVpZ2h0OworCQl1OCByZWdzW10gPSB7CisJCQkweDg4LAkweGMwLAorCQkJMHg5YywJcmVzLT53aWR0aCAmIDB4ZmYsCisJCQkweDlkLAlyZXMtPndpZHRoID4+IDgsCisJCQkweDllLAlyZXMtPmhlaWdodCAmIDB4ZmYsCisJCQkweDlmLAlyZXMtPmhlaWdodCA+PiA4LAorCQkJMHhhMCwJaF9pbnRlZ2VyX3NjYWxlciwKKwkJCTB4YTEsCTEsCisJCQkweGEyLAkxLAorCQkJMHhhOCwJaF9zY2FsaW5nX2luY3JlbWVudCAmIDB4ZmYsCisJCQkweGE5LAloX3NjYWxpbmdfaW5jcmVtZW50ID4+IDgsCisJCQkweGFjLAkoaF9zY2FsaW5nX2luY3JlbWVudCAvIDIpICYgMHhmZiwKKwkJCTB4YWQsCShoX3NjYWxpbmdfaW5jcmVtZW50IC8gMikgPj4gOCwKKwkJCTB4YjAsCXZfc2NhbGluZ19pbmNyZW1lbnQgJiAweGZmLAorCQkJMHhiMSwJdl9zY2FsaW5nX2luY3JlbWVudCA+PiA4LAorCQkJMHhiMiwJdl9zY2FsaW5nX2luY3JlbWVudCAmIDB4ZmYsCisJCQkweGIzLAl2X3NjYWxpbmdfaW5jcmVtZW50ID4+IDgsCisJCQkweGNjLAlyZXMtPndpZHRoICYgMHhmZiwKKwkJCTB4Y2QsCXJlcy0+d2lkdGggPj4gOCwKKwkJCTB4Y2UsCXJlcy0+aGVpZ2h0ICYgMHhmZiwKKwkJCTB4Y2YsCXJlcy0+aGVpZ2h0ID4+IDgsCisJCQkweGQwLAloX2ludGVnZXJfc2NhbGVyLAorCQkJMHhkMSwJMSwKKwkJCTB4ZDIsCTEsCisJCQkweGQ4LAloX3NjYWxpbmdfaW5jcmVtZW50ICYgMHhmZiwKKwkJCTB4ZDksCWhfc2NhbGluZ19pbmNyZW1lbnQgPj4gOCwKKwkJCTB4ZGMsCShoX3NjYWxpbmdfaW5jcmVtZW50IC8gMikgJiAweGZmLAorCQkJMHhkZCwJKGhfc2NhbGluZ19pbmNyZW1lbnQgLyAyKSA+PiA4LAorCQkJMHhlMCwJdl9zY2FsaW5nX2luY3JlbWVudCAmIDB4ZmYsCisJCQkweGUxLAl2X3NjYWxpbmdfaW5jcmVtZW50ID4+IDgsCisJCQkweGUyLAl2X3NjYWxpbmdfaW5jcmVtZW50ICYgMHhmZiwKKwkJCTB4ZTMsCXZfc2NhbGluZ19pbmNyZW1lbnQgPj4gOCwKKwkJCTB4ODgsCTB4ZjAsCisJCQkwLAkwLAorCQl9OworCQl3cml0ZV9yZWdzKGNsaWVudCwgcmVncyk7CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19TX1NURDoKKwl7CisJCXY0bDJfc3RkX2lkICppbnB1dCA9IGFyZzsKKwkJdTggcmVnc1tdID0geworCQkJMHg4OCwJMHhjMCwKKwkJCTB4OTgsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweDEyIDogMHgxNiwKKwkJCTB4OWEsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweGYyIDogMHgyMCwKKwkJCTB4OWIsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweDAwIDogMHgwMSwKKwkJCTB4YzgsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweDEyIDogMHgxNiwKKwkJCTB4Y2EsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweGYyIDogMHgyMCwKKwkJCTB4Y2IsCSppbnB1dCAmIFY0TDJfU1REX05UU0MgPyAweDAwIDogMHgwMSwKKwkJCTB4ODgsCTB4ZjAsCisJCQkweDMwLAkqaW5wdXQgJiBWNEwyX1NURF9OVFNDID8gMHg2NiA6IDB4MDAsCisJCQkweDMxLAkqaW5wdXQgJiBWNEwyX1NURF9OVFNDID8gMHg5MCA6IDB4ZTAsCisJCQkwLAkwLAorCQl9OworCQl3cml0ZV9yZWdzKGNsaWVudCwgcmVncyk7CisJCWRlYy0+bm9ybSA9ICppbnB1dDsKKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX1FVRVJZQ1RSTDoKKwl7CisJCXN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiQnJpZ2h0bmVzcyIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAyNTU7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSAxMjg7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiQ29udHJhc3QiLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IDA7CisJCQljdHJsLT5tYXhpbXVtID0gMTI3OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gNjQ7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9TQVRVUkFUSU9OOgorCQkJY3RybC0+dHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI7CisJCQlzdHJuY3B5KGN0cmwtPm5hbWUsICJTYXR1cmF0aW9uIiwgc2l6ZW9mKGN0cmwtPm5hbWUpKTsKKwkJCWN0cmwtPm1pbmltdW0gPSAwOworCQkJY3RybC0+bWF4aW11bSA9IDEyNzsKKwkJCWN0cmwtPnN0ZXAgPSAxOworCQkJY3RybC0+ZGVmYXVsdF92YWx1ZSA9IDY0OworCQkJY3RybC0+ZmxhZ3MgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfSFVFOgorCQkJY3RybC0+dHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI7CisJCQlzdHJuY3B5KGN0cmwtPm5hbWUsICJIdWUiLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IC0xMjg7CisJCQljdHJsLT5tYXhpbXVtID0gMTI3OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gMDsKKwkJCWN0cmwtPmZsYWdzID0gMDsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19TX0NUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9jb250cm9sICpjdHJsID0gYXJnOworCisJCXN3aXRjaCAoY3RybC0+aWQpIHsKKwkJY2FzZSBWNEwyX0NJRF9CUklHSFRORVNTOgorCQkJaWYgKGN0cmwtPnZhbHVlID4gMjU1KQorCQkJCWRlYy0+YnJpZ2h0bmVzcyA9IDI1NTsKKwkJCWVsc2UgaWYgKGN0cmwtPnZhbHVlIDwgMCkKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSAwOworCQkJZWxzZQorCQkJCWRlYy0+YnJpZ2h0bmVzcyA9IGN0cmwtPnZhbHVlOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgwYSwgZGVjLT5icmlnaHRuZXNzKTsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0NPTlRSQVNUOgorCQkJaWYgKGN0cmwtPnZhbHVlID4gMTI3KQorCQkJCWRlYy0+Y29udHJhc3QgPSAxMjc7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5jb250cmFzdCA9IDA7CisJCQllbHNlCisJCQkJZGVjLT5jb250cmFzdCA9IGN0cmwtPnZhbHVlOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgwYiwgZGVjLT5jb250cmFzdCk7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9TQVRVUkFUSU9OOgorCQkJaWYgKGN0cmwtPnZhbHVlID4gMTI3KQorCQkJCWRlYy0+c2F0dXJhdGlvbiA9IDEyNzsKKwkJCWVsc2UgaWYgKGN0cmwtPnZhbHVlIDwgMCkKKwkJCQlkZWMtPnNhdHVyYXRpb24gPSAwOworCQkJZWxzZQorCQkJCWRlYy0+c2F0dXJhdGlvbiA9IGN0cmwtPnZhbHVlOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgwYywgZGVjLT5zYXR1cmF0aW9uKTsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0hVRToKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDEyNykKKwkJCQlkZWMtPmh1ZSA9IDEyNzsKKwkJCWVsc2UgaWYgKGN0cmwtPnZhbHVlIDwgLTEyOCkKKwkJCQlkZWMtPmh1ZSA9IC0xMjg7CisJCQllbHNlCisJCQkJZGVjLT5odWUgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MGQsIGRlYy0+aHVlKTsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19HX0NUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9jb250cm9sICpjdHJsID0gYXJnOworCisJCXN3aXRjaCAoY3RybC0+aWQpIHsKKwkJY2FzZSBWNEwyX0NJRF9CUklHSFRORVNTOgorCQkJY3RybC0+dmFsdWUgPSBkZWMtPmJyaWdodG5lc3M7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWN0cmwtPnZhbHVlID0gZGVjLT5jb250cmFzdDsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+c2F0dXJhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0hVRToKKwkJCWN0cmwtPnZhbHVlID0gZGVjLT5odWU7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgd2lzX3NhYTcxMTVfZHJpdmVyOworCitzdGF0aWMgc3RydWN0IGkyY19jbGllbnQgd2lzX3NhYTcxMTVfY2xpZW50X3RlbXBsID0geworCS5uYW1lCQk9ICJTQUE3MTE1IChXSVMpIiwKKwkuZHJpdmVyCQk9ICZ3aXNfc2FhNzExNV9kcml2ZXIsCit9OworCitzdGF0aWMgaW50IHdpc19zYWE3MTE1X2RldGVjdChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBhZGRyLCBpbnQga2luZCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50OworCXN0cnVjdCB3aXNfc2FhNzExNSAqZGVjOworCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQorCQlyZXR1cm4gMDsKKworCWNsaWVudCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7CisJaWYgKGNsaWVudCA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwltZW1jcHkoY2xpZW50LCAmd2lzX3NhYTcxMTVfY2xpZW50X3RlbXBsLAorCQkJc2l6ZW9mKHdpc19zYWE3MTE1X2NsaWVudF90ZW1wbCkpOworCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CisJY2xpZW50LT5hZGRyID0gYWRkcjsKKworCWRlYyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB3aXNfc2FhNzExNSksIEdGUF9LRVJORUwpOworCWlmIChkZWMgPT0gTlVMTCkgeworCQlrZnJlZShjbGllbnQpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJZGVjLT5ub3JtID0gVjRMMl9TVERfTlRTQzsKKwlkZWMtPmJyaWdodG5lc3MgPSAxMjg7CisJZGVjLT5jb250cmFzdCA9IDY0OworCWRlYy0+c2F0dXJhdGlvbiA9IDY0OworCWRlYy0+aHVlID0gMDsKKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkZWMpOworCisJcHJpbnRrKEtFUk5fREVCVUcKKwkJIndpcy1zYWE3MTE1OiBpbml0aWFsaXppbmcgU0FBNzExNSBhdCBhZGRyZXNzICVkIG9uICVzXG4iLAorCQlhZGRyLCBhZGFwdGVyLT5uYW1lKTsKKworCWlmICh3cml0ZV9yZWdzKGNsaWVudCwgaW5pdGlhbF9yZWdpc3RlcnMpIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJCSJ3aXMtc2FhNzExNTogZXJyb3IgaW5pdGlhbGl6aW5nIFNBQTcxMTVcbiIpOworCQlrZnJlZShjbGllbnQpOworCQlrZnJlZShkZWMpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc19zYWE3MTE1X2RldGFjaChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQoreworCXN0cnVjdCB3aXNfc2FhNzExNSAqZGVjID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IHI7CisKKwlyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKKwlpZiAociA8IDApCisJCXJldHVybiByOworCisJa2ZyZWUoY2xpZW50KTsKKwlrZnJlZShkZWMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgd2lzX3NhYTcxMTVfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gIldJUyBTQUE3MTE1IEkyQyBkcml2ZXIiLAorCX0sCisJLmlkCQk9IEkyQ19EUklWRVJJRF9XSVNfU0FBNzExNSwKKwkuZGV0YWNoX2NsaWVudAk9IHdpc19zYWE3MTE1X2RldGFjaCwKKwkuY29tbWFuZAk9IHdpc19zYWE3MTE1X2NvbW1hbmQsCit9OworCitzdGF0aWMgaW50IF9faW5pdCB3aXNfc2FhNzExNV9pbml0KHZvaWQpCit7CisJaW50IHI7CisKKwlyID0gaTJjX2FkZF9kcml2ZXIoJndpc19zYWE3MTE1X2RyaXZlcik7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKwlyZXR1cm4gd2lzX2kyY19hZGRfZHJpdmVyKHdpc19zYWE3MTE1X2RyaXZlci5pZCwgd2lzX3NhYTcxMTVfZGV0ZWN0KTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHdpc19zYWE3MTE1X2NsZWFudXAodm9pZCkKK3sKKwl3aXNfaTJjX2RlbF9kcml2ZXIod2lzX3NhYTcxMTVfZGV0ZWN0KTsKKwlpMmNfZGVsX2RyaXZlcigmd2lzX3NhYTcxMTVfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQod2lzX3NhYTcxMTVfaW5pdCk7Cittb2R1bGVfZXhpdCh3aXNfc2FhNzExNV9jbGVhbnVwKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtc29ueS10dW5lci5jIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtc29ueS10dW5lci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTdmYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy1zb255LXR1bmVyLmMKQEAgLTAsMCArMSw3NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBNaWNyb25hcyBVU0EgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChWZXJzaW9uIDIpIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24gTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgorI2luY2x1ZGUgPG1lZGlhL3R1bmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWlvY3RsLmg+CisKKyNpbmNsdWRlICJ3aXMtaTJjLmgiCisKKy8qICNkZWZpbmUgTVBYX0RFQlVHICovCisKKy8qIEFTKElGL01QWCkgcGluOiAgICAgIExPVyAgICAgIEhJR0gvT1BFTgorICogSUYvTVBYIGFkZHJlc3M6ICAgMHg0Mi8weDQwICAgMHg0My8weDQ0CisgKi8KKyNkZWZpbmUgSUZfSTJDX0FERFIJMHg0MworI2RlZmluZSBNUFhfSTJDX0FERFIJMHg0NAorCitzdGF0aWMgdjRsMl9zdGRfaWQgZm9yY2VfYmFuZDsKK3N0YXRpYyBjaGFyIGZvcmNlX2JhbmRfc3RyW10gPSAiLSI7Cittb2R1bGVfcGFyYW1fc3RyaW5nKGZvcmNlX2JhbmQsIGZvcmNlX2JhbmRfc3RyLCBzaXplb2YoZm9yY2VfYmFuZF9zdHIpLCAwNjQ0KTsKK3N0YXRpYyBpbnQgZm9yY2VfbXB4X21vZGUgPSAtMTsKK21vZHVsZV9wYXJhbShmb3JjZV9tcHhfbW9kZSwgaW50LCAwNjQ0KTsKKworLyogU3RvcmUgdHVuZXIgaW5mbyBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdHVuZXIuYywgc28gbWF5YmUgd2UgY2FuIHB1dCB0aGUKKyAqIFNvbnkgdHVuZXIgc3VwcG9ydCBpbiB0aGVyZS4gKi8KK3N0cnVjdCBzb255X3R1bmVydHlwZSB7CisJY2hhciAqbmFtZTsKKwl1bnNpZ25lZCBjaGFyIFZlbmRvcjsgLyogdW51c2VkIGhlcmUgKi8KKwl1bnNpZ25lZCBjaGFyIFR5cGU7IC8qIHVudXNlZCBoZXJlICovCisKKwl1bnNpZ25lZCBzaG9ydCB0aHJlc2gxOyAvKiAgYmFuZCBzd2l0Y2ggVkhGX0xPIDw9PiBWSEZfSEkgKi8KKwl1bnNpZ25lZCBzaG9ydCB0aHJlc2gyOyAvKiAgYmFuZCBzd2l0Y2ggVkhGX0hJIDw9PiBVSEYgKi8KKwl1bnNpZ25lZCBjaGFyIFZIRl9MOworCXVuc2lnbmVkIGNoYXIgVkhGX0g7CisJdW5zaWduZWQgY2hhciBVSEY7CisJdW5zaWduZWQgY2hhciBjb25maWc7CisJdW5zaWduZWQgc2hvcnQgSUZQQ29mZjsKK307CisKKy8qIFRoaXMgYXJyYXkgaXMgaW5kZXhlZCBieSAodHVuZXJfdHlwZSAtIDIwMCkgKi8KK3N0YXRpYyBzdHJ1Y3Qgc29ueV90dW5lcnR5cGUgc29ueV90dW5lcnNbXSA9IHsKKwl7ICJTb255IFBBTCtTRUNBTSAoQlRGLVBHNDcyWikiLCAwLCAwLAorCSAgMTYqMTQ0LjI1LCAxNio0MjcuMjUsIDB4MDEsIDB4MDIsIDB4MDQsIDB4YzYsIDYyM30sCisJeyAiU29ueSBOVFNDX0pQIChCVEYtUEs0NjdaKSIsIDAsIDAsCisJICAxNioyMjAuMjUsIDE2KjQ2Ny4yNSwgMHgwMSwgMHgwMiwgMHgwNCwgMHhjNiwgOTQwfSwKKwl7ICJTb255IE5UU0MgKEJURi1QQjQ2M1opIiwgMCwgMCwKKwkgIDE2KjEzMC4yNSwgMTYqMzY0LjI1LCAweDAxLCAweDAyLCAweDA0LCAweGM2LCA3MzJ9LAorfTsKKworc3RydWN0IHdpc19zb255X3R1bmVyIHsKKwlpbnQgdHlwZTsKKwl2NGwyX3N0ZF9pZCBzdGQ7CisJdW5zaWduZWQgaW50IGZyZXE7CisJaW50IG1weG1vZGU7CisJdTMyIGF1ZG1vZGU7Cit9OworCisvKiBCYXNpY2FsbHkgdGhlIHNhbWUgYXMgZGVmYXVsdF9zZXRfdHZfZnJlcSgpIGluIHR1bmVyLmMgKi8KK3N0YXRpYyBpbnQgc2V0X2ZyZXEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IGZyZXEpCit7CisJc3RydWN0IHdpc19zb255X3R1bmVyICp0ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJY2hhciAqYmFuZF9uYW1lOworCWludCBuOworCWludCBiYW5kX3NlbGVjdDsKKwlzdHJ1Y3Qgc29ueV90dW5lcnR5cGUgKnR1bjsKKwl1OCBidWZmZXJbNF07CisKKwl0dW4gPSAmc29ueV90dW5lcnNbdC0+dHlwZSAtIDIwMF07CisJaWYgKGZyZXEgPCB0dW4tPnRocmVzaDEpIHsKKwkJYmFuZF9uYW1lID0gIlZIRl9MIjsKKwkJYmFuZF9zZWxlY3QgPSB0dW4tPlZIRl9MOworCX0gZWxzZSBpZiAoZnJlcSA8IHR1bi0+dGhyZXNoMikgeworCQliYW5kX25hbWUgPSAiVkhGX0giOworCQliYW5kX3NlbGVjdCA9IHR1bi0+VkhGX0g7CisJfSBlbHNlIHsKKwkJYmFuZF9uYW1lID0gIlVIRiI7CisJCWJhbmRfc2VsZWN0ID0gdHVuLT5VSEY7CisJfQorCXByaW50ayhLRVJOX0RFQlVHICJ3aXMtc29ueS10dW5lcjogdHVuaW5nIHRvIGZyZXF1ZW5jeSAlZC4lMDRkICglcylcbiIsCisJCQlmcmVxIC8gMTYsIChmcmVxICUgMTYpICogNjI1LCBiYW5kX25hbWUpOworCW4gPSBmcmVxICsgdHVuLT5JRlBDb2ZmOworCisJYnVmZmVyWzBdID0gbiA+PiA4OworCWJ1ZmZlclsxXSA9IG4gJiAweGZmOworCWJ1ZmZlclsyXSA9IHR1bi0+Y29uZmlnOworCWJ1ZmZlclszXSA9IGJhbmRfc2VsZWN0OworCWkyY19tYXN0ZXJfc2VuZChjbGllbnQsIGJ1ZmZlciwgNCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtcHhfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IGRldiwgaW50IGFkZHIsIGludCB2YWwpCit7CisJdTggYnVmZmVyWzVdOworCXN0cnVjdCBpMmNfbXNnIG1zZzsKKworCWJ1ZmZlclswXSA9IGRldjsKKwlidWZmZXJbMV0gPSBhZGRyID4+IDg7CisJYnVmZmVyWzJdID0gYWRkciAmIDB4ZmY7CisJYnVmZmVyWzNdID0gdmFsID4+IDg7CisJYnVmZmVyWzRdID0gdmFsICYgMHhmZjsKKwltc2cuYWRkciA9IE1QWF9JMkNfQUREUjsKKwltc2cuZmxhZ3MgPSAwOworCW1zZy5sZW4gPSA1OworCW1zZy5idWYgPSBidWZmZXI7CisJaTJjX3RyYW5zZmVyKGNsaWVudC0+YWRhcHRlciwgJm1zZywgMSk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBNUFggcmVnaXN0ZXIgdmFsdWVzIGZvciB0aGUgQlRGLVBHNDcyWjoKKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNXyAgICAgTklDQU1fICBTQ0FSVF8KKyAqICAgICAgICAgIE1PRFVTICBTT1VSQ0UgICAgQUNCICAgUFJFU0NBTCBQUkVTQ0FMIFBSRVNDQUwgU1lTVEVNICBWT0xVTUUKKyAqICAgICAgICAgMTAvMDAzMCAxMi8wMDA4IDEyLzAwMTMgMTIvMDAwRSAxMi8wMDEwIDEyLzAwMDAgMTAvMDAyMCAxMi8wMDAwCisgKiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQXV0byAgICAgMTAwMyAgICAwMDIwICAgIDAxMDAgICAgMjYwMyAgICA1MDAwICAgIFhYWFggICAgMDAwMSAgICA3NTAwCisgKgorICogQi9HCisgKiAgTW9ubyAgICAxMDAzICAgIDAwMjAgICAgMDEwMCAgICAyNjAzICAgIDUwMDAgICAgWFhYWCAgICAwMDAzICAgIDc1MDAKKyAqICBBMiAgICAgIDEwMDMgICAgMDAyMCAgICAwMTAwICAgIDI2MDEgICAgNTAwMCAgICBYWFhYICAgIDAwMDMgICAgNzUwMAorICogIE5JQ0FNICAgMTAwMyAgICAwMTIwICAgIDAxMDAgICAgMjYwMyAgICA1MDAwICAgIFhYWFggICAgMDAwOCAgICA3NTAwCisgKgorICogSQorICogIE1vbm8gICAgMTAwMyAgICAwMDIwICAgIDAxMDAgICAgMjYwMyAgICA3OTAwICAgIFhYWFggICAgMDAwQSAgICA3NTAwCisgKiAgTklDQU0gICAxMDAzICAgIDAxMjAgICAgMDEwMCAgICAyNjAzICAgIDc5MDAgICAgWFhYWCAgICAwMDBBICAgIDc1MDAKKyAqCisgKiBEL0sKKyAqICBNb25vICAgIDEwMDMgICAgMDAyMCAgICAwMTAwICAgIDI2MDMgICAgNTAwMCAgICBYWFhYICAgIDAwMDQgICAgNzUwMAorICogIEEyLTEgICAgMTAwMyAgICAwMDIwICAgIDAxMDAgICAgMjYwMSAgICA1MDAwICAgIFhYWFggICAgMDAwNCAgICA3NTAwCisgKiAgQTItMiAgICAxMDAzICAgIDAwMjAgICAgMDEwMCAgICAyNjAxICAgIDUwMDAgICAgWFhYWCAgICAwMDA1ICAgIDc1MDAKKyAqICBBMi0zICAgIDEwMDMgICAgMDAyMCAgICAwMTAwICAgIDI2MDEgICAgNTAwMCAgICBYWFhYICAgIDAwMDcgICAgNzUwMAorICogIE5JQ0FNICAgMTAwMyAgICAwMTIwICAgIDAxMDAgICAgMjYwMyAgICA1MDAwICAgIFhYWFggICAgMDAwQiAgICA3NTAwCisgKgorICogTC9MJworICogIE1vbm8gICAgMDAwMyAgICAwMjAwICAgIDAxMDAgICAgN0MwMyAgICA1MDAwICAgIDIyMDAgICAgMDAwOSAgICA3NTAwCisgKiAgTklDQU0gICAwMDAzICAgIDAxMjAgICAgMDEwMCAgICA3QzAzICAgIDUwMDAgICAgWFhYWCAgICAwMDA5ICAgIDc1MDAKKyAqCisgKiBNCisgKiAgTW9ubyAgICAxMDAzICAgIDAyMDAgICAgMDEwMCAgICAyQjAzICAgIDUwMDAgICAgMkIwMCAgICAwMDAyICAgIDc1MDAKKyAqCisgKiBGb3IgQXNpYSwgcmVwbGFjZSB0aGUgMHgyNlhYIGluIEZNX1BSRVNDQUxFIHdpdGggMHgxNFhYLgorICoKKyAqIEJpbGluZ3VhbCBzZWxlY3Rpb24gaW4gQTIvTklDQU06CisgKgorICogICAgICAgICBIaWdoIGJ5dGUgb2YgU09VUkNFICAgICBMZWZ0IGNoYW4gICBSaWdodCBjaGFuCisgKiAgICAgICAgICAgICAgICAgMHgwMSAgICAgICAgICAgICAgTUFJTiAgICAgICAgIFNVQgorICogICAgICAgICAgICAgICAgIDB4MDMgICAgICAgICAgICAgIE1BSU4gICAgICAgICBNQUlOCisgKiAgICAgICAgICAgICAgICAgMHgwNCAgICAgICAgICAgICAgU1VCICAgICAgICAgIFNVQgorICoKKyAqIEZvcmNlIG1vbm8gaW4gTklDQU0gYnkgc2V0dGluZyB0aGUgaGlnaCBieXRlIG9mIFNPVVJDRSB0byAweDAyIChML0wnKSBvcgorICogMHgwMCAoYWxsIG90aGVyIGJhbmRzKS4gIEZvcmNlIG1vbm8gaW4gQTIgd2l0aCBGTU9OT19BMjoKKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICBGTU9OT19BMgorICogICAgICAgICAgICAgICAgICAgICAgMTAvMDAyMgorICogICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0KKyAqICAgICBGb3JjZWQgbW9ubyBPTiAgICAgMDdGMAorICogICAgIEZvcmNlZCBtb25vIE9GRiAgICAwMTkwCisgKi8KKworc3RhdGljIHN0cnVjdCB7CisJZW51bSB7IEFVRF9NT05PLCBBVURfQTIsIEFVRF9OSUNBTSwgQVVEX05JQ0FNX0wgfSBhdWRpb19tb2RlOworCXUxNiBtb2R1czsKKwl1MTYgc291cmNlOworCXUxNiBhY2I7CisJdTE2IGZtX3ByZXNjYWxlOworCXUxNiBuaWNhbV9wcmVzY2FsZTsKKwl1MTYgc2NhcnRfcHJlc2NhbGU7CisJdTE2IHN5c3RlbTsKKwl1MTYgdm9sdW1lOworfSBtcHhfYXVkaW9fbW9kZXNbXSA9IHsKKwkvKiBBdXRvICovCXsgQVVEX01PTk8sCTB4MTAwMywgMHgwMDIwLCAweDAxMDAsIDB4MjYwMywKKwkJCQkJMHg1MDAwLCAweDAwMDAsIDB4MDAwMSwgMHg3NTAwIH0sCisJLyogQi9HIE1vbm8gKi8JeyBBVURfTU9OTywJMHgxMDAzLCAweDAwMjAsIDB4MDEwMCwgMHgyNjAzLAorCQkJCQkweDUwMDAsIDB4MDAwMCwgMHgwMDAzLCAweDc1MDAgfSwKKwkvKiBCL0cgQTIgKi8JeyBBVURfQTIsCTB4MTAwMywgMHgwMDIwLCAweDAxMDAsIDB4MjYwMSwKKwkJCQkJMHg1MDAwLCAweDAwMDAsIDB4MDAwMywgMHg3NTAwIH0sCisJLyogQi9HIE5JQ0FNICovIHsgQVVEX05JQ0FNLAkweDEwMDMsIDB4MDEyMCwgMHgwMTAwLCAweDI2MDMsCisJCQkJCTB4NTAwMCwgMHgwMDAwLCAweDAwMDgsIDB4NzUwMCB9LAorCS8qIEkgTW9ubyAqLwl7IEFVRF9NT05PLAkweDEwMDMsIDB4MDAyMCwgMHgwMTAwLCAweDI2MDMsCisJCQkJCTB4NzkwMCwgMHgwMDAwLCAweDAwMEEsIDB4NzUwMCB9LAorCS8qIEkgTklDQU0gKi8JeyBBVURfTklDQU0sCTB4MTAwMywgMHgwMTIwLCAweDAxMDAsIDB4MjYwMywKKwkJCQkJMHg3OTAwLCAweDAwMDAsIDB4MDAwQSwgMHg3NTAwIH0sCisJLyogRC9LIE1vbm8gKi8JeyBBVURfTU9OTywJMHgxMDAzLCAweDAwMjAsIDB4MDEwMCwgMHgyNjAzLAorCQkJCQkweDUwMDAsIDB4MDAwMCwgMHgwMDA0LCAweDc1MDAgfSwKKwkvKiBEL0sgQTItMSAqLwl7IEFVRF9BMiwJMHgxMDAzLCAweDAwMjAsIDB4MDEwMCwgMHgyNjAxLAorCQkJCQkweDUwMDAsIDB4MDAwMCwgMHgwMDA0LCAweDc1MDAgfSwKKwkvKiBEL0sgQTItMiAqLwl7IEFVRF9BMiwJMHgxMDAzLCAweDAwMjAsIDB4MDEwMCwgMHgyNjAxLAorCQkJCQkweDUwMDAsIDB4MDAwMCwgMHgwMDA1LCAweDc1MDAgfSwKKwkvKiBEL0sgQTItMyAqLwl7IEFVRF9BMiwJMHgxMDAzLCAweDAwMjAsIDB4MDEwMCwgMHgyNjAxLAorCQkJCQkweDUwMDAsIDB4MDAwMCwgMHgwMDA3LCAweDc1MDAgfSwKKwkvKiBEL0sgTklDQU0gKi8JeyBBVURfTklDQU0sCTB4MTAwMywgMHgwMTIwLCAweDAxMDAsIDB4MjYwMywKKwkJCQkJMHg1MDAwLCAweDAwMDAsIDB4MDAwQiwgMHg3NTAwIH0sCisJLyogTC9MJyBNb25vICovCXsgQVVEX01PTk8sCTB4MDAwMywgMHgwMjAwLCAweDAxMDAsIDB4N0MwMywKKwkJCQkJMHg1MDAwLCAweDIyMDAsIDB4MDAwOSwgMHg3NTAwIH0sCisJLyogTC9MJyBOSUNBTSAqL3sgQVVEX05JQ0FNX0wsCTB4MDAwMywgMHgwMTIwLCAweDAxMDAsIDB4N0MwMywKKwkJCQkJMHg1MDAwLCAweDAwMDAsIDB4MDAwOSwgMHg3NTAwIH0sCit9OworCisjZGVmaW5lIE1QWF9OVU1fTU9ERVMJQVJSQVlfU0laRShtcHhfYXVkaW9fbW9kZXMpCisKK3N0YXRpYyBpbnQgbXB4X3NldHVwKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHdpc19zb255X3R1bmVyICp0ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJdTE2IHNvdXJjZSA9IDA7CisJdTggYnVmZmVyWzNdOworCXN0cnVjdCBpMmNfbXNnIG1zZzsKKworCS8qIHJlc2V0IE1QWCAqLworCWJ1ZmZlclswXSA9IDB4MDA7CisJYnVmZmVyWzFdID0gMHg4MDsKKwlidWZmZXJbMl0gPSAweDAwOworCW1zZy5hZGRyID0gTVBYX0kyQ19BRERSOworCW1zZy5mbGFncyA9IDA7CisJbXNnLmxlbiA9IDM7CisJbXNnLmJ1ZiA9IGJ1ZmZlcjsKKwlpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCAmbXNnLCAxKTsKKwlidWZmZXJbMV0gPSAweDAwOworCWkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOworCisJaWYgKG1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5hdWRpb19tb2RlICE9IEFVRF9NT05PKSB7CisJCXN3aXRjaCAodC0+YXVkbW9kZSkgeworCQljYXNlIFY0TDJfVFVORVJfTU9ERV9NT05POgorCQkJc3dpdGNoIChtcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uYXVkaW9fbW9kZSkgeworCQkJY2FzZSBBVURfQTI6CisJCQkJc291cmNlID0gbXB4X2F1ZGlvX21vZGVzW3QtPm1weG1vZGVdLnNvdXJjZTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQVVEX05JQ0FNOgorCQkJCXNvdXJjZSA9IDB4MDAwMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgQVVEX05JQ0FNX0w6CisJCQkJc291cmNlID0gMHgwMjAwOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFY0TDJfVFVORVJfTU9ERV9TVEVSRU86CisJCQlzb3VyY2UgPSBtcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uc291cmNlOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9UVU5FUl9NT0RFX0xBTkcxOgorCQkJc291cmNlID0gMHgwMzAwOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9UVU5FUl9NT0RFX0xBTkcyOgorCQkJc291cmNlID0gMHgwNDAwOworCQkJYnJlYWs7CisJCX0KKwkJc291cmNlIHw9IG1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5zb3VyY2UgJiAweDAwZmY7CisJfSBlbHNlCisJCXNvdXJjZSA9IG1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5zb3VyY2U7CisKKwltcHhfd3JpdGUoY2xpZW50LCAweDEwLCAweDAwMzAsIG1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5tb2R1cyk7CisJbXB4X3dyaXRlKGNsaWVudCwgMHgxMiwgMHgwMDA4LCBzb3VyY2UpOworCW1weF93cml0ZShjbGllbnQsIDB4MTIsIDB4MDAxMywgbXB4X2F1ZGlvX21vZGVzW3QtPm1weG1vZGVdLmFjYik7CisJbXB4X3dyaXRlKGNsaWVudCwgMHgxMiwgMHgwMDBlLAorCQkJbXB4X2F1ZGlvX21vZGVzW3QtPm1weG1vZGVdLmZtX3ByZXNjYWxlKTsKKwltcHhfd3JpdGUoY2xpZW50LCAweDEyLCAweDAwMTAsCisJCQltcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0ubmljYW1fcHJlc2NhbGUpOworCW1weF93cml0ZShjbGllbnQsIDB4MTIsIDB4MDAwZCwKKwkJCW1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5zY2FydF9wcmVzY2FsZSk7CisJbXB4X3dyaXRlKGNsaWVudCwgMHgxMCwgMHgwMDIwLCBtcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uc3lzdGVtKTsKKwltcHhfd3JpdGUoY2xpZW50LCAweDEyLCAweDAwMDAsIG1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS52b2x1bWUpOworCWlmIChtcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uYXVkaW9fbW9kZSA9PSBBVURfQTIpCisJCW1weF93cml0ZShjbGllbnQsIDB4MTAsIDB4MDAyMiwKKwkJCXQtPmF1ZG1vZGUgPT0gVjRMMl9UVU5FUl9NT0RFX01PTk8gPyAgMHgwN2YwIDogMHgwMTkwKTsKKworI2lmZGVmIE1QWF9ERUJVRworCXsKKwkJdTggYnVmMVszXSwgYnVmMlsyXTsKKwkJc3RydWN0IGkyY19tc2cgbXNnc1syXTsKKworCQlwcmludGsoS0VSTl9ERUJVRyAid2lzLXNvbnktdHVuZXI6IE1QWCByZWdpc3RlcnM6ICUwNHggJTA0eCAiCisJCQkJIiUwNHggJTA0eCAlMDR4ICUwNHggJTA0eCAlMDR4XG4iLAorCQkJCW1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5tb2R1cywKKwkJCQlzb3VyY2UsCisJCQkJbXB4X2F1ZGlvX21vZGVzW3QtPm1weG1vZGVdLmFjYiwKKwkJCQltcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uZm1fcHJlc2NhbGUsCisJCQkJbXB4X2F1ZGlvX21vZGVzW3QtPm1weG1vZGVdLm5pY2FtX3ByZXNjYWxlLAorCQkJCW1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS5zY2FydF9wcmVzY2FsZSwKKwkJCQltcHhfYXVkaW9fbW9kZXNbdC0+bXB4bW9kZV0uc3lzdGVtLAorCQkJCW1weF9hdWRpb19tb2Rlc1t0LT5tcHhtb2RlXS52b2x1bWUpOworCQlidWYxWzBdID0gMHgxMTsKKwkJYnVmMVsxXSA9IDB4MDA7CisJCWJ1ZjFbMl0gPSAweDdlOworCQltc2dzWzBdLmFkZHIgPSBNUFhfSTJDX0FERFI7CisJCW1zZ3NbMF0uZmxhZ3MgPSAwOworCQltc2dzWzBdLmxlbiA9IDM7CisJCW1zZ3NbMF0uYnVmID0gYnVmMTsKKwkJbXNnc1sxXS5hZGRyID0gTVBYX0kyQ19BRERSOworCQltc2dzWzFdLmZsYWdzID0gSTJDX01fUkQ7CisJCW1zZ3NbMV0ubGVuID0gMjsKKwkJbXNnc1sxXS5idWYgPSBidWYyOworCQlpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2dzLCAyKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIndpcy1zb255LXR1bmVyOiBNUFggc3lzdGVtOiAlMDJ4JTAyeFxuIiwKKwkJCQlidWYyWzBdLCBidWYyWzFdKTsKKwkJYnVmMVswXSA9IDB4MTE7CisJCWJ1ZjFbMV0gPSAweDAyOworCQlidWYxWzJdID0gMHgwMDsKKwkJaTJjX3RyYW5zZmVyKGNsaWVudC0+YWRhcHRlciwgbXNncywgMik7CisJCXByaW50ayhLRVJOX0RFQlVHICJ3aXMtc29ueS10dW5lcjogTVBYIHN0YXR1czogJTAyeCUwMnhcbiIsCisJCQkJYnVmMlswXSwgYnVmMlsxXSk7CisJfQorI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBJRiBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIEJURi1QRzQ3Mlo6CisgKgorICoJQi9HOiAweDk0IDB4NzAgMHg0OQorICoJSTogICAweDE0IDB4NzAgMHg0YQorICoJRC9LOiAweDE0IDB4NzAgMHg0YgorICoJTDogICAweDA0IDB4NzAgMHg0YgorICoJTCc6ICAweDQ0IDB4NzAgMHg1MworICoJTTogICAweDUwIDB4MzAgMHg0YworICovCisKK3N0YXRpYyBpbnQgc2V0X2lmKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHdpc19zb255X3R1bmVyICp0ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJdTggYnVmZmVyWzRdOworCXN0cnVjdCBpMmNfbXNnIG1zZzsKKwlpbnQgZGVmYXVsdF9tcHhfbW9kZSA9IDA7CisKKwkvKiBjb25maWd1cmUgSUYgKi8KKwlidWZmZXJbMF0gPSAwOworCWlmICh0LT5zdGQgJiBWNEwyX1NURF9QQUxfQkcpIHsKKwkJYnVmZmVyWzFdID0gMHg5NDsKKwkJYnVmZmVyWzJdID0gMHg3MDsKKwkJYnVmZmVyWzNdID0gMHg0OTsKKwkJZGVmYXVsdF9tcHhfbW9kZSA9IDE7CisJfSBlbHNlIGlmICh0LT5zdGQgJiBWNEwyX1NURF9QQUxfSSkgeworCQlidWZmZXJbMV0gPSAweDE0OworCQlidWZmZXJbMl0gPSAweDcwOworCQlidWZmZXJbM10gPSAweDRhOworCQlkZWZhdWx0X21weF9tb2RlID0gNDsKKwl9IGVsc2UgaWYgKHQtPnN0ZCAmIFY0TDJfU1REX1BBTF9ESykgeworCQlidWZmZXJbMV0gPSAweDE0OworCQlidWZmZXJbMl0gPSAweDcwOworCQlidWZmZXJbM10gPSAweDRiOworCQlkZWZhdWx0X21weF9tb2RlID0gNjsKKwl9IGVsc2UgaWYgKHQtPnN0ZCAmIFY0TDJfU1REX1NFQ0FNX0wpIHsKKwkJYnVmZmVyWzFdID0gMHgwNDsKKwkJYnVmZmVyWzJdID0gMHg3MDsKKwkJYnVmZmVyWzNdID0gMHg0YjsKKwkJZGVmYXVsdF9tcHhfbW9kZSA9IDExOworCX0KKwltc2cuYWRkciA9IElGX0kyQ19BRERSOworCW1zZy5mbGFncyA9IDA7CisJbXNnLmxlbiA9IDQ7CisJbXNnLmJ1ZiA9IGJ1ZmZlcjsKKwlpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCAmbXNnLCAxKTsKKworCS8qIFNlbGVjdCBNUFggbW9kZSBpZiBub3QgZm9yY2VkIGJ5IHRoZSB1c2VyICovCisJaWYgKGZvcmNlX21weF9tb2RlID49IDAgfHwgZm9yY2VfbXB4X21vZGUgPCBNUFhfTlVNX01PREVTKQorCQl0LT5tcHhtb2RlID0gZm9yY2VfbXB4X21vZGU7CisJZWxzZQorCQl0LT5tcHhtb2RlID0gZGVmYXVsdF9tcHhfbW9kZTsKKwlwcmludGsoS0VSTl9ERUJVRyAid2lzLXNvbnktdHVuZXI6IHNldHRpbmcgTVBYIHRvIG1vZGUgJWRcbiIsCisJCQl0LT5tcHhtb2RlKTsKKwltcHhfc2V0dXAoY2xpZW50KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHR1bmVyX2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQoreworCXN0cnVjdCB3aXNfc29ueV90dW5lciAqdCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCisJc3dpdGNoIChjbWQpIHsKKyNpZmRlZiBUVU5FUl9TRVRfVFlQRV9BRERSCisJY2FzZSBUVU5FUl9TRVRfVFlQRV9BRERSOgorCXsKKwkJc3RydWN0IHR1bmVyX3NldHVwICp0dW5fc2V0dXAgPSBhcmc7CisJCWludCAqdHlwZSA9ICZ0dW5fc2V0dXAtPnR5cGU7CisjZWxzZQorCWNhc2UgVFVORVJfU0VUX1RZUEU6CisJeworCQlpbnQgKnR5cGUgPSBhcmc7CisjZW5kaWYKKworCQlpZiAodC0+dHlwZSA+PSAwKSB7CisJCQlpZiAodC0+dHlwZSAhPSAqdHlwZSkKKwkJCQlwcmludGsoS0VSTl9FUlIgIndpcy1zb255LXR1bmVyOiB0eXBlIGFscmVhZHkgIgorCQkJCQkic2V0IHRvICVkLCBpZ25vcmluZyByZXF1ZXN0IGZvciAlZFxuIiwKKwkJCQkJdC0+dHlwZSwgKnR5cGUpOworCQkJYnJlYWs7CisJCX0KKwkJdC0+dHlwZSA9ICp0eXBlOworCQlzd2l0Y2ggKHQtPnR5cGUpIHsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QRzQ3Mlo6CisJCQlzd2l0Y2ggKGZvcmNlX2JhbmRfc3RyWzBdKSB7CisJCQljYXNlICdiJzoKKwkJCWNhc2UgJ0InOgorCQkJY2FzZSAnZyc6CisJCQljYXNlICdHJzoKKwkJCQlwcmludGsoS0VSTl9JTkZPICJ3aXMtc29ueS10dW5lcjogZm9yY2luZyAiCisJCQkJCQkidHVuZXIgdG8gUEFMLUIvRyBiYW5kc1xuIik7CisJCQkJZm9yY2VfYmFuZCA9IFY0TDJfU1REX1BBTF9CRzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ2knOgorCQkJY2FzZSAnSSc6CisJCQkJcHJpbnRrKEtFUk5fSU5GTyAid2lzLXNvbnktdHVuZXI6IGZvcmNpbmcgIgorCQkJCQkJInR1bmVyIHRvIFBBTC1JIGJhbmRcbiIpOworCQkJCWZvcmNlX2JhbmQgPSBWNEwyX1NURF9QQUxfSTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ2QnOgorCQkJY2FzZSAnRCc6CisJCQljYXNlICdrJzoKKwkJCWNhc2UgJ0snOgorCQkJCXByaW50ayhLRVJOX0lORk8gIndpcy1zb255LXR1bmVyOiBmb3JjaW5nICIKKwkJCQkJCSJ0dW5lciB0byBQQUwtRC9LIGJhbmRzXG4iKTsKKwkJCQlmb3JjZV9iYW5kID0gVjRMMl9TVERfUEFMX0k7CisJCQkJYnJlYWs7CisJCQljYXNlICdsJzoKKwkJCWNhc2UgJ0wnOgorCQkJCXByaW50ayhLRVJOX0lORk8gIndpcy1zb255LXR1bmVyOiBmb3JjaW5nICIKKwkJCQkJCSJ0dW5lciB0byBTRUNBTS1MIGJhbmRcbiIpOworCQkJCWZvcmNlX2JhbmQgPSBWNEwyX1NURF9TRUNBTV9MOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlmb3JjZV9iYW5kID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChmb3JjZV9iYW5kKQorCQkJCXQtPnN0ZCA9IGZvcmNlX2JhbmQ7CisJCQllbHNlCisJCQkJdC0+c3RkID0gVjRMMl9TVERfUEFMX0JHOworCQkJc2V0X2lmKGNsaWVudCk7CisJCQlicmVhazsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QSzQ2N1o6CisJCQl0LT5zdGQgPSBWNEwyX1NURF9OVFNDX01fSlA7CisJCQlicmVhazsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QQjQ2M1o6CisJCQl0LT5zdGQgPSBWNEwyX1NURF9OVFNDX007CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ayhLRVJOX0VSUiAid2lzLXNvbnktdHVuZXI6IHR1bmVyIHR5cGUgJWQgaXMgbm90ICIKKwkJCQkJInN1cHBvcnRlZCBieSB0aGlzIG1vZHVsZVxuIiwgKnR5cGUpOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKHR5cGUgPj0gMCkKKwkJCXByaW50ayhLRVJOX0lORk8KKwkJCQkid2lzLXNvbnktdHVuZXI6IHR5cGUgc2V0IHRvICVkICglcylcbiIsCisJCQkJdC0+dHlwZSwgc29ueV90dW5lcnNbdC0+dHlwZSAtIDIwMF0ubmFtZSk7CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19HX0ZSRVFVRU5DWToKKwl7CisJCXN0cnVjdCB2NGwyX2ZyZXF1ZW5jeSAqZiA9IGFyZzsKKworCQlmLT5mcmVxdWVuY3kgPSB0LT5mcmVxOworCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19GUkVRVUVOQ1k6CisJeworCQlzdHJ1Y3QgdjRsMl9mcmVxdWVuY3kgKmYgPSBhcmc7CisKKwkJdC0+ZnJlcSA9IGYtPmZyZXF1ZW5jeTsKKwkJc2V0X2ZyZXEoY2xpZW50LCB0LT5mcmVxKTsKKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX0VOVU1TVEQ6CisJeworCQlzdHJ1Y3QgdjRsMl9zdGFuZGFyZCAqc3RkID0gYXJnOworCisJCXN3aXRjaCAodC0+dHlwZSkgeworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BHNDcyWjoKKwkJCXN3aXRjaCAoc3RkLT5pbmRleCkgeworCQkJY2FzZSAwOgorCQkJCXY0bDJfdmlkZW9fc3RkX2NvbnN0cnVjdChzdGQsCisJCQkJCQlWNEwyX1NURF9QQUxfQkcsICJQQUwtQi9HIik7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQkJdjRsMl92aWRlb19zdGRfY29uc3RydWN0KHN0ZCwKKwkJCQkJCVY0TDJfU1REX1BBTF9JLCAiUEFMLUkiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQl2NGwyX3ZpZGVvX3N0ZF9jb25zdHJ1Y3Qoc3RkLAorCQkJCQkJVjRMMl9TVERfUEFMX0RLLCAiUEFMLUQvSyIpOworCQkJCWJyZWFrOworCQkJY2FzZSAzOgorCQkJCXY0bDJfdmlkZW9fc3RkX2NvbnN0cnVjdChzdGQsCisJCQkJCQlWNEwyX1NURF9TRUNBTV9MLCAiU0VDQU0tTCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlzdGQtPmlkID0gMDsgLyogaGFjayB0byBpbmRpY2F0ZSBFSU5WQUwgKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BLNDY3WjoKKwkJCWlmIChzdGQtPmluZGV4ICE9IDApIHsKKwkJCQlzdGQtPmlkID0gMDsgLyogaGFjayB0byBpbmRpY2F0ZSBFSU5WQUwgKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJCXY0bDJfdmlkZW9fc3RkX2NvbnN0cnVjdChzdGQsCisJCQkJCVY0TDJfU1REX05UU0NfTV9KUCwgIk5UU0MtSiIpOworCQkJYnJlYWs7CisJCWNhc2UgVFVORVJfU09OWV9CVEZfUEI0NjNaOgorCQkJaWYgKHN0ZC0+aW5kZXggIT0gMCkgeworCQkJCXN0ZC0+aWQgPSAwOyAvKiBoYWNrIHRvIGluZGljYXRlIEVJTlZBTCAqLworCQkJCWJyZWFrOworCQkJfQorCQkJdjRsMl92aWRlb19zdGRfY29uc3RydWN0KHN0ZCwgVjRMMl9TVERfTlRTQ19NLCAiTlRTQyIpOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX0dfU1REOgorCXsKKwkJdjRsMl9zdGRfaWQgKnN0ZCA9IGFyZzsKKworCQkqc3RkID0gdC0+c3RkOworCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19TVEQ6CisJeworCQl2NGwyX3N0ZF9pZCAqc3RkID0gYXJnOworCQl2NGwyX3N0ZF9pZCBvbGQgPSB0LT5zdGQ7CisKKwkJc3dpdGNoICh0LT50eXBlKSB7CisJCWNhc2UgVFVORVJfU09OWV9CVEZfUEc0NzJaOgorCQkJaWYgKGZvcmNlX2JhbmQgJiYgKCpzdGQgJiBmb3JjZV9iYW5kKSAhPSAqc3RkICYmCisJCQkJCSpzdGQgIT0gVjRMMl9TVERfUEFMICYmCisJCQkJCSpzdGQgIT0gVjRMMl9TVERfU0VDQU0pIHsKKwkJCQlwcmludGsoS0VSTl9ERUJVRyAid2lzLXNvbnktdHVuZXI6IGlnbm9yaW5nICIKKwkJCQkJCSJyZXF1ZXN0ZWQgVFYgc3RhbmRhcmQgaW4gIgorCQkJCQkJImZhdm9yIG9mIGZvcmNlX2JhbmQgdmFsdWVcbiIpOworCQkJCXQtPnN0ZCA9IGZvcmNlX2JhbmQ7CisJCQl9IGVsc2UgaWYgKCpzdGQgJiBWNEwyX1NURF9QQUxfQkcpIHsgLyogZGVmYXVsdCAqLworCQkJCXQtPnN0ZCA9IFY0TDJfU1REX1BBTF9CRzsKKwkJCX0gZWxzZSBpZiAoKnN0ZCAmIFY0TDJfU1REX1BBTF9JKSB7CisJCQkJdC0+c3RkID0gVjRMMl9TVERfUEFMX0k7CisJCQl9IGVsc2UgaWYgKCpzdGQgJiBWNEwyX1NURF9QQUxfREspIHsKKwkJCQl0LT5zdGQgPSBWNEwyX1NURF9QQUxfREs7CisJCQl9IGVsc2UgaWYgKCpzdGQgJiBWNEwyX1NURF9TRUNBTV9MKSB7CisJCQkJdC0+c3RkID0gVjRMMl9TVERfU0VDQU1fTDsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJ3aXMtc29ueS10dW5lcjogVFYgc3RhbmRhcmQgIgorCQkJCQkJIm5vdCBzdXBwb3J0ZWRcbiIpOworCQkJCSpzdGQgPSAwOyAvKiBoYWNrIHRvIGluZGljYXRlIEVJTlZBTCAqLworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKG9sZCAhPSB0LT5zdGQpCisJCQkJc2V0X2lmKGNsaWVudCk7CisJCQlicmVhazsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QSzQ2N1o6CisJCQlpZiAoISgqc3RkICYgVjRMMl9TVERfTlRTQ19NX0pQKSkgeworCQkJCXByaW50ayhLRVJOX0VSUiAid2lzLXNvbnktdHVuZXI6IFRWIHN0YW5kYXJkICIKKwkJCQkJCSJub3Qgc3VwcG9ydGVkXG4iKTsKKwkJCQkqc3RkID0gMDsgLyogaGFjayB0byBpbmRpY2F0ZSBFSU5WQUwgKi8KKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BCNDYzWjoKKwkJCWlmICghKCpzdGQgJiBWNEwyX1NURF9OVFNDX00pKSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJ3aXMtc29ueS10dW5lcjogVFYgc3RhbmRhcmQgIgorCQkJCQkJIm5vdCBzdXBwb3J0ZWRcbiIpOworCQkJCSpzdGQgPSAwOyAvKiBoYWNrIHRvIGluZGljYXRlIEVJTlZBTCAqLworCQkJfQorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX1FVRVJZU1REOgorCXsKKwkJdjRsMl9zdGRfaWQgKnN0ZCA9IGFyZzsKKworCQlzd2l0Y2ggKHQtPnR5cGUpIHsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QRzQ3Mlo6CisJCQlpZiAoZm9yY2VfYmFuZCkKKwkJCQkqc3RkID0gZm9yY2VfYmFuZDsKKwkJCWVsc2UKKwkJCQkqc3RkID0gVjRMMl9TVERfUEFMX0JHIHwgVjRMMl9TVERfUEFMX0kgfAorCQkJCQlWNEwyX1NURF9QQUxfREsgfCBWNEwyX1NURF9TRUNBTV9MOworCQkJYnJlYWs7CisJCWNhc2UgVFVORVJfU09OWV9CVEZfUEs0NjdaOgorCQkJKnN0ZCA9IFY0TDJfU1REX05UU0NfTV9KUDsKKwkJCWJyZWFrOworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BCNDYzWjoKKwkJCSpzdGQgPSBWNEwyX1NURF9OVFNDX007CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfR19UVU5FUjoKKwl7CisJCXN0cnVjdCB2NGwyX3R1bmVyICp0dW4gPSBhcmc7CisKKwkJbWVtc2V0KHQsIDAsIHNpemVvZigqdHVuKSk7CisJCXN0cmNweSh0dW4tPm5hbWUsICJUZWxldmlzaW9uIik7CisJCXR1bi0+dHlwZSA9IFY0TDJfVFVORVJfQU5BTE9HX1RWOworCQl0dW4tPnJhbmdlbG93ID0gMFVMOyAvKiBkb2VzIGFueXRoaW5nIHVzZSB0aGVzZT8gKi8KKwkJdHVuLT5yYW5nZWhpZ2ggPSAweGZmZmZmZmZmVUw7CisJCXN3aXRjaCAodC0+dHlwZSkgeworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BHNDcyWjoKKwkJCXR1bi0+Y2FwYWJpbGl0eSA9IFY0TDJfVFVORVJfQ0FQX05PUk0gfAorCQkJCVY0TDJfVFVORVJfQ0FQX1NURVJFTyB8IFY0TDJfVFVORVJfQ0FQX0xBTkcxIHwKKwkJCQlWNEwyX1RVTkVSX0NBUF9MQU5HMjsKKwkJCXR1bi0+cnhzdWJjaGFucyA9IFY0TDJfVFVORVJfU1VCX01PTk8gfAorCQkJCVY0TDJfVFVORVJfU1VCX1NURVJFTyB8IFY0TDJfVFVORVJfU1VCX0xBTkcxIHwKKwkJCQlWNEwyX1RVTkVSX1NVQl9MQU5HMjsKKwkJCWJyZWFrOworCQljYXNlIFRVTkVSX1NPTllfQlRGX1BLNDY3WjoKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QQjQ2M1o6CisJCQl0dW4tPmNhcGFiaWxpdHkgPSBWNEwyX1RVTkVSX0NBUF9TVEVSRU87CisJCQl0dW4tPnJ4c3ViY2hhbnMgPSBWNEwyX1RVTkVSX1NVQl9NT05PIHwKKwkJCQkJCVY0TDJfVFVORVJfU1VCX1NURVJFTzsKKwkJCWJyZWFrOworCQl9CisJCXR1bi0+YXVkbW9kZSA9IHQtPmF1ZG1vZGU7CisJCXJldHVybiAwOworCX0KKwljYXNlIFZJRElPQ19TX1RVTkVSOgorCXsKKwkJc3RydWN0IHY0bDJfdHVuZXIgKnR1biA9IGFyZzsKKworCQlzd2l0Y2ggKHQtPnR5cGUpIHsKKwkJY2FzZSBUVU5FUl9TT05ZX0JURl9QRzQ3Mlo6CisJCQlpZiAodHVuLT5hdWRtb2RlICE9IHQtPmF1ZG1vZGUpIHsKKwkJCQl0LT5hdWRtb2RlID0gdHVuLT5hdWRtb2RlOworCQkJCW1weF9zZXR1cChjbGllbnQpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVFVORVJfU09OWV9CVEZfUEs0NjdaOgorCQljYXNlIFRVTkVSX1NPTllfQlRGX1BCNDYzWjoKKwkJCWJyZWFrOworCQl9CisJCXJldHVybiAwOworCX0KKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB3aXNfc29ueV90dW5lcl9kcml2ZXI7CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCB3aXNfc29ueV90dW5lcl9jbGllbnRfdGVtcGwgPSB7CisJLm5hbWUJCT0gIlNvbnkgVFYgVHVuZXIgKFdJUykiLAorCS5kcml2ZXIJCT0gJndpc19zb255X3R1bmVyX2RyaXZlciwKK307CisKK3N0YXRpYyBpbnQgd2lzX3NvbnlfdHVuZXJfZGV0ZWN0KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkJaW50IGFkZHIsIGludCBraW5kKQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CisJc3RydWN0IHdpc19zb255X3R1bmVyICp0OworCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19JMkNfQkxPQ0spKQorCQlyZXR1cm4gMDsKKworCWNsaWVudCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7CisJaWYgKGNsaWVudCA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwltZW1jcHkoY2xpZW50LCAmd2lzX3NvbnlfdHVuZXJfY2xpZW50X3RlbXBsLAorCQkJc2l6ZW9mKHdpc19zb255X3R1bmVyX2NsaWVudF90ZW1wbCkpOworCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CisJY2xpZW50LT5hZGRyID0gYWRkcjsKKworCXQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgd2lzX3NvbnlfdHVuZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAodCA9PSBOVUxMKSB7CisJCWtmcmVlKGNsaWVudCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwl0LT50eXBlID0gLTE7CisJdC0+ZnJlcSA9IDA7CisJdC0+bXB4bW9kZSA9IDA7CisJdC0+YXVkbW9kZSA9IFY0TDJfVFVORVJfTU9ERV9TVEVSRU87CisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgdCk7CisKKwlwcmludGsoS0VSTl9ERUJVRworCQkid2lzLXNvbnktdHVuZXI6IGluaXRpYWxpemluZyB0dW5lciBhdCBhZGRyZXNzICVkIG9uICVzXG4iLAorCQlhZGRyLCBhZGFwdGVyLT5uYW1lKTsKKworCWkyY19hdHRhY2hfY2xpZW50KGNsaWVudCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3aXNfc29ueV90dW5lcl9kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3Qgd2lzX3NvbnlfdHVuZXIgKnQgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlpbnQgcjsKKworCXIgPSBpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpOworCWlmIChyIDwgMCkKKwkJcmV0dXJuIHI7CisKKwlrZnJlZSh0KTsKKwlrZnJlZShjbGllbnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgd2lzX3NvbnlfdHVuZXJfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gIldJUyBTb255IFRWIFR1bmVyIEkyQyBkcml2ZXIiLAorCX0sCisJLmlkCQk9IEkyQ19EUklWRVJJRF9XSVNfU09OWV9UVU5FUiwKKwkuZGV0YWNoX2NsaWVudAk9IHdpc19zb255X3R1bmVyX2RldGFjaCwKKwkuY29tbWFuZAk9IHR1bmVyX2NvbW1hbmQsCit9OworCitzdGF0aWMgaW50IF9faW5pdCB3aXNfc29ueV90dW5lcl9pbml0KHZvaWQpCit7CisJaW50IHI7CisKKwlyID0gaTJjX2FkZF9kcml2ZXIoJndpc19zb255X3R1bmVyX2RyaXZlcik7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKwlyZXR1cm4gd2lzX2kyY19hZGRfZHJpdmVyKHdpc19zb255X3R1bmVyX2RyaXZlci5pZCwKKwkJCQkJd2lzX3NvbnlfdHVuZXJfZGV0ZWN0KTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHdpc19zb255X3R1bmVyX2NsZWFudXAodm9pZCkKK3sKKwl3aXNfaTJjX2RlbF9kcml2ZXIod2lzX3NvbnlfdHVuZXJfZGV0ZWN0KTsKKwlpMmNfZGVsX2RyaXZlcigmd2lzX3NvbnlfdHVuZXJfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQod2lzX3NvbnlfdHVuZXJfaW5pdCk7Cittb2R1bGVfZXhpdCh3aXNfc29ueV90dW5lcl9jbGVhbnVwKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtdHcyODA0LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy10dzI4MDQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZlNGQwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy93aXMtdHcyODA0LmMKQEAgLTAsMCArMSwzODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBNaWNyb25hcyBVU0EgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChWZXJzaW9uIDIpIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24gTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgorI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+CisKKyNpbmNsdWRlICJ3aXMtaTJjLmgiCisKK3N0cnVjdCB3aXNfdHcyODA0IHsKKwlpbnQgY2hhbm5lbDsKKwlpbnQgbm9ybTsKKwlpbnQgYnJpZ2h0bmVzczsKKwlpbnQgY29udHJhc3Q7CisJaW50IHNhdHVyYXRpb247CisJaW50IGh1ZTsKK307CisKK3N0YXRpYyB1OCBnbG9iYWxfcmVnaXN0ZXJzW10gPQoreworCTB4MzksIDB4MDAsCisJMHgzYSwgMHhmZiwKKwkweDNiLCAweDg0LAorCTB4M2MsIDB4ODAsCisJMHgzZCwgMHg4MCwKKwkweDNlLCAweDgyLAorCTB4M2YsIDB4ODIsCisJMHhmZiwgMHhmZiwgLyogVGVybWluYXRvciAocmVnIDB4ZmYgZG9lcyBub3QgZXhpc3QpICovCit9OworCitzdGF0aWMgdTggY2hhbm5lbF9yZWdpc3RlcnNbXSA9Cit7CisJMHgwMSwgMHhjNCwKKwkweDAyLCAweGE1LAorCTB4MDMsIDB4MjAsCisJMHgwNCwgMHhkMCwKKwkweDA1LCAweDIwLAorCTB4MDYsIDB4ZDAsCisJMHgwNywgMHg4OCwKKwkweDA4LCAweDIwLAorCTB4MDksIDB4MDcsCisJMHgwYSwgMHhmMCwKKwkweDBiLCAweDA3LAorCTB4MGMsIDB4ZjAsCisJMHgwZCwgMHg0MCwKKwkweDBlLCAweGQyLAorCTB4MGYsIDB4ODAsCisJMHgxMCwgMHg4MCwKKwkweDExLCAweDgwLAorCTB4MTIsIDB4ODAsCisJMHgxMywgMHgxZiwKKwkweDE0LCAweDAwLAorCTB4MTUsIDB4MDAsCisJMHgxNiwgMHgwMCwKKwkweDE3LCAweDAwLAorCTB4MTgsIDB4ZmYsCisJMHgxOSwgMHhmZiwKKwkweDFhLCAweGZmLAorCTB4MWIsIDB4ZmYsCisJMHgxYywgMHhmZiwKKwkweDFkLCAweGZmLAorCTB4MWUsIDB4ZmYsCisJMHgxZiwgMHhmZiwKKwkweDIwLCAweDA3LAorCTB4MjEsIDB4MDcsCisJMHgyMiwgMHgwMCwKKwkweDIzLCAweDkxLAorCTB4MjQsIDB4NTEsCisJMHgyNSwgMHgwMywKKwkweDI2LCAweDAwLAorCTB4MjcsIDB4MDAsCisJMHgyOCwgMHgwMCwKKwkweDI5LCAweDAwLAorCTB4MmEsIDB4MDAsCisJMHgyYiwgMHgwMCwKKwkweDJjLCAweDAwLAorCTB4MmQsIDB4MDAsCisJMHgyZSwgMHgwMCwKKwkweDJmLCAweDAwLAorCTB4MzAsIDB4MDAsCisJMHgzMSwgMHgwMCwKKwkweDMyLCAweDAwLAorCTB4MzMsIDB4MDAsCisJMHgzNCwgMHgwMCwKKwkweDM1LCAweDAwLAorCTB4MzYsIDB4MDAsCisJMHgzNywgMHgwMCwKKwkweGZmLCAweGZmLCAvKiBUZXJtaW5hdG9yIChyZWcgMHhmZiBkb2VzIG5vdCBleGlzdCkgKi8KK307CisKK3N0YXRpYyBpbnQgd3JpdGVfcmVnKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTggdmFsdWUsIGludCBjaGFubmVsKQoreworCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnIHwgKGNoYW5uZWwgPDwgNiksIHZhbHVlKTsKK30KKworc3RhdGljIGludCB3cml0ZV9yZWdzKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4ICpyZWdzLCBpbnQgY2hhbm5lbCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IHJlZ3NbaV0gIT0gMHhmZjsgaSArPSAyKQorCQlpZiAoaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQkJcmVnc1tpXSB8IChjaGFubmVsIDw8IDYpLCByZWdzW2kgKyAxXSkgPCAwKQorCQkJcmV0dXJuIC0xOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc190dzI4MDRfY29tbWFuZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCXVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qgd2lzX3R3MjgwNCAqZGVjID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisKKwlpZiAoY21kID09IERFQ09ERVJfU0VUX0NIQU5ORUwpIHsKKwkJaW50ICppbnB1dCA9IGFyZzsKKworCQlpZiAoKmlucHV0IDwgMCB8fCAqaW5wdXQgPiAzKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIndpcy10dzI4MDQ6IGNoYW5uZWwgJWQgaXMgbm90ICIKKwkJCQkJImJldHdlZW4gMCBhbmQgMyFcbiIsICppbnB1dCk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlkZWMtPmNoYW5uZWwgPSAqaW5wdXQ7CisJCXByaW50ayhLRVJOX0RFQlVHICJ3aXMtdHcyODA0OiBpbml0aWFsaXppbmcgVFcyODA0ICIKKwkJCQkiY2hhbm5lbCAlZFxuIiwgZGVjLT5jaGFubmVsKTsKKwkJaWYgKGRlYy0+Y2hhbm5lbCA9PSAwICYmCisJCQkJd3JpdGVfcmVncyhjbGllbnQsIGdsb2JhbF9yZWdpc3RlcnMsIDApIDwgMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJ3aXMtdHcyODA0OiBlcnJvciBpbml0aWFsaXppbmcgIgorCQkJCQkiVFcyODA0IGdsb2JhbCByZWdpc3RlcnNcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJaWYgKHdyaXRlX3JlZ3MoY2xpZW50LCBjaGFubmVsX3JlZ2lzdGVycywgZGVjLT5jaGFubmVsKSA8IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAid2lzLXR3MjgwNDogZXJyb3IgaW5pdGlhbGl6aW5nICIKKwkJCQkJIlRXMjgwNCBjaGFubmVsICVkXG4iLCBkZWMtPmNoYW5uZWwpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGRlYy0+Y2hhbm5lbCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIndpcy10dzI4MDQ6IGlnbm9yaW5nIGNvbW1hbmQgJTA4eCB1bnRpbCAiCisJCQkJImNoYW5uZWwgbnVtYmVyIGlzIHNldFxuIiwgY21kKTsKKwkJcmV0dXJuIDA7CisJfQorCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFZJRElPQ19TX1NURDoKKwl7CisJCXY0bDJfc3RkX2lkICppbnB1dCA9IGFyZzsKKwkJdTggcmVnc1tdID0geworCQkJMHgwMSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4YzQgOiAweDg0LAorCQkJMHgwOSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDcgOiAweDA0LAorCQkJMHgwYSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4ZjAgOiAweDIwLAorCQkJMHgwYiwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDcgOiAweDA0LAorCQkJMHgwYywgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4ZjAgOiAweDIwLAorCQkJMHgwZCwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4NDAgOiAweDRhLAorCQkJMHgxNiwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDAgOiAweDQwLAorCQkJMHgxNywgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDAgOiAweDQwLAorCQkJMHgyMCwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDcgOiAweDBmLAorCQkJMHgyMSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDcgOiAweDBmLAorCQkJMHhmZiwJMHhmZiwKKwkJfTsKKwkJd3JpdGVfcmVncyhjbGllbnQsIHJlZ3MsIGRlYy0+Y2hhbm5lbCk7CisJCWRlYy0+bm9ybSA9ICppbnB1dDsKKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX1FVRVJZQ1RSTDoKKwl7CisJCXN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiQnJpZ2h0bmVzcyIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAyNTU7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSAxMjg7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiQ29udHJhc3QiLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IDA7CisJCQljdHJsLT5tYXhpbXVtID0gMjU1OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gMTI4OworCQkJY3RybC0+ZmxhZ3MgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgVjRMMl9DSURfU0FUVVJBVElPTjoKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiU2F0dXJhdGlvbiIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAyNTU7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSAxMjg7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9IVUU6CisJCQljdHJsLT50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUjsKKwkJCXN0cm5jcHkoY3RybC0+bmFtZSwgIkh1ZSIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAyNTU7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSAxMjg7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19DVFJMOgorCXsKKwkJc3RydWN0IHY0bDJfY29udHJvbCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDI1NSkKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSAyNTU7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5icmlnaHRuZXNzID0gMDsKKwkJCWVsc2UKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MTIsIGRlYy0+YnJpZ2h0bmVzcywgZGVjLT5jaGFubmVsKTsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0NPTlRSQVNUOgorCQkJaWYgKGN0cmwtPnZhbHVlID4gMjU1KQorCQkJCWRlYy0+Y29udHJhc3QgPSAyNTU7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5jb250cmFzdCA9IDA7CisJCQllbHNlCisJCQkJZGVjLT5jb250cmFzdCA9IGN0cmwtPnZhbHVlOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgxMSwgZGVjLT5jb250cmFzdCwgZGVjLT5jaGFubmVsKTsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQlpZiAoY3RybC0+dmFsdWUgPiAyNTUpCisJCQkJZGVjLT5zYXR1cmF0aW9uID0gMjU1OworCQkJZWxzZSBpZiAoY3RybC0+dmFsdWUgPCAwKQorCQkJCWRlYy0+c2F0dXJhdGlvbiA9IDA7CisJCQllbHNlCisJCQkJZGVjLT5zYXR1cmF0aW9uID0gY3RybC0+dmFsdWU7CisJCQl3cml0ZV9yZWcoY2xpZW50LCAweDEwLCBkZWMtPnNhdHVyYXRpb24sIGRlYy0+Y2hhbm5lbCk7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9IVUU6CisJCQlpZiAoY3RybC0+dmFsdWUgPiAyNTUpCisJCQkJZGVjLT5odWUgPSAyNTU7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IDApCisJCQkJZGVjLT5odWUgPSAwOworCQkJZWxzZQorCQkJCWRlYy0+aHVlID0gY3RybC0+dmFsdWU7CisJCQl3cml0ZV9yZWcoY2xpZW50LCAweDBmLCBkZWMtPmh1ZSwgZGVjLT5jaGFubmVsKTsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19HX0NUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9jb250cm9sICpjdHJsID0gYXJnOworCisJCXN3aXRjaCAoY3RybC0+aWQpIHsKKwkJY2FzZSBWNEwyX0NJRF9CUklHSFRORVNTOgorCQkJY3RybC0+dmFsdWUgPSBkZWMtPmJyaWdodG5lc3M7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWN0cmwtPnZhbHVlID0gZGVjLT5jb250cmFzdDsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+c2F0dXJhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0hVRToKKwkJCWN0cmwtPnZhbHVlID0gZGVjLT5odWU7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgd2lzX3R3MjgwNF9kcml2ZXI7CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCB3aXNfdHcyODA0X2NsaWVudF90ZW1wbCA9IHsKKwkubmFtZQkJPSAiVFcyODA0IChXSVMpIiwKKwkuZHJpdmVyCQk9ICZ3aXNfdHcyODA0X2RyaXZlciwKK307CisKK3N0YXRpYyBpbnQgd2lzX3R3MjgwNF9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkciwgaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3Qgd2lzX3R3MjgwNCAqZGVjOworCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQorCQlyZXR1cm4gMDsKKworCWNsaWVudCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7CisJaWYgKGNsaWVudCA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwltZW1jcHkoY2xpZW50LCAmd2lzX3R3MjgwNF9jbGllbnRfdGVtcGwsCisJCQlzaXplb2Yod2lzX3R3MjgwNF9jbGllbnRfdGVtcGwpKTsKKwljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOworCWNsaWVudC0+YWRkciA9IGFkZHI7CisKKwlkZWMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgd2lzX3R3MjgwNCksIEdGUF9LRVJORUwpOworCWlmIChkZWMgPT0gTlVMTCkgeworCQlrZnJlZShjbGllbnQpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJZGVjLT5jaGFubmVsID0gLTE7CisJZGVjLT5ub3JtID0gVjRMMl9TVERfTlRTQzsKKwlkZWMtPmJyaWdodG5lc3MgPSAxMjg7CisJZGVjLT5jb250cmFzdCA9IDEyODsKKwlkZWMtPnNhdHVyYXRpb24gPSAxMjg7CisJZGVjLT5odWUgPSAxMjg7CisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGVjKTsKKworCXByaW50ayhLRVJOX0RFQlVHICJ3aXMtdHcyODA0OiBjcmVhdGluZyBUVzI4MDQgYXQgYWRkcmVzcyAlZCBvbiAlc1xuIiwKKwkJYWRkciwgYWRhcHRlci0+bmFtZSk7CisKKwlpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc190dzI4MDRfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHdpc190dzI4MDQgKmRlYyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWludCByOworCisJciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKworCWtmcmVlKGNsaWVudCk7CisJa2ZyZWUoZGVjKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc190dzI4MDRfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gIldJUyBUVzI4MDQgSTJDIGRyaXZlciIsCisJfSwKKwkuaWQJCT0gSTJDX0RSSVZFUklEX1dJU19UVzI4MDQsCisJLmRldGFjaF9jbGllbnQJPSB3aXNfdHcyODA0X2RldGFjaCwKKwkuY29tbWFuZAk9IHdpc190dzI4MDRfY29tbWFuZCwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHdpc190dzI4MDRfaW5pdCh2b2lkKQoreworCWludCByOworCisJciA9IGkyY19hZGRfZHJpdmVyKCZ3aXNfdHcyODA0X2RyaXZlcik7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKwlyZXR1cm4gd2lzX2kyY19hZGRfZHJpdmVyKHdpc190dzI4MDRfZHJpdmVyLmlkLCB3aXNfdHcyODA0X2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB3aXNfdHcyODA0X2NsZWFudXAodm9pZCkKK3sKKwl3aXNfaTJjX2RlbF9kcml2ZXIod2lzX3R3MjgwNF9kZXRlY3QpOworCWkyY19kZWxfZHJpdmVyKCZ3aXNfdHcyODA0X2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHdpc190dzI4MDRfaW5pdCk7Cittb2R1bGVfZXhpdCh3aXNfdHcyODA0X2NsZWFudXApOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy10dzk5MDMuYyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLXR3OTkwMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZTQxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy10dzk5MDMuYwpAQCAtMCwwICsxLDM2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CisjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KKworI2luY2x1ZGUgIndpcy1pMmMuaCIKKworc3RydWN0IHdpc190dzk5MDMgeworCWludCBub3JtOworCWludCBicmlnaHRuZXNzOworCWludCBjb250cmFzdDsKKwlpbnQgaHVlOworfTsKKworc3RhdGljIHU4IGluaXRpYWxfcmVnaXN0ZXJzW10gPQoreworCTB4MDIsIDB4NDQsIC8qIGlucHV0IDEsIGNvbXBvc2l0ZSAqLworCTB4MDMsIDB4OTIsIC8qIGNvcnJlY3QgZGlnaXRhbCBmb3JtYXQgKi8KKwkweDA0LCAweDAwLAorCTB4MDUsIDB4ODAsIC8qIG9yIDB4MDAgZm9yIFBBTCAqLworCTB4MDYsIDB4NDAsIC8qIHNlY29uZCBpbnRlcm5hbCBjdXJyZW50IHJlZmVyZW5jZSAqLworCTB4MDcsIDB4MDIsIC8qIHdpbmRvdyAqLworCTB4MDgsIDB4MTQsIC8qIHdpbmRvdyAqLworCTB4MDksIDB4ZjAsIC8qIHdpbmRvdyAqLworCTB4MGEsIDB4ODEsIC8qIHdpbmRvdyAqLworCTB4MGIsIDB4ZDAsIC8qIHdpbmRvdyAqLworCTB4MGMsIDB4OGMsCisJMHgwZCwgMHgwMCwgLyogc2NhbGluZyAqLworCTB4MGUsIDB4MTEsIC8qIHNjYWxpbmcgKi8KKwkweDBmLCAweDAwLCAvKiBzY2FsaW5nICovCisJMHgxMCwgMHgwMCwgLyogYnJpZ2h0bmVzcyAqLworCTB4MTEsIDB4NjAsIC8qIGNvbnRyYXN0ICovCisJMHgxMiwgMHgwMSwgLyogc2hhcnBuZXNzICovCisJMHgxMywgMHg3ZiwgLyogVSBnYWluICovCisJMHgxNCwgMHg1YSwgLyogViBnYWluICovCisJMHgxNSwgMHgwMCwgLyogaHVlICovCisJMHgxNiwgMHhjMywgLyogc2hhcnBuZXNzICovCisJMHgxOCwgMHgwMCwKKwkweDE5LCAweDU4LCAvKiB2YmkgKi8KKwkweDFhLCAweDgwLAorCTB4MWMsIDB4MGYsIC8qIHZpZGVvIG5vcm0gKi8KKwkweDFkLCAweDdmLCAvKiB2aWRlbyBub3JtICovCisJMHgyMCwgMHhhMCwgLyogY2xhbXBpbmcgZ2FpbiAod29ya2luZyAweDUwKSAqLworCTB4MjEsIDB4MjIsCisJMHgyMiwgMHhmMCwKKwkweDIzLCAweGZlLAorCTB4MjQsIDB4M2MsCisJMHgyNSwgMHgzOCwKKwkweDI2LCAweDQ0LAorCTB4MjcsIDB4MjAsCisJMHgyOCwgMHgwMCwKKwkweDI5LCAweDE1LAorCTB4MmEsIDB4YTAsCisJMHgyYiwgMHg0NCwKKwkweDJjLCAweDM3LAorCTB4MmQsIDB4MDAsCisJMHgyZSwgMHhhNSwgLyogYnVyc3QgUExMIGNvbnRyb2wgKHdvcmtpbmc6IGE5KSAqLworCTB4MmYsIDB4ZTAsIC8qIDB4ZWEgaXMgYmx1ZSB0ZXN0IGZyYW1lIC0tIDB4ZTAgZm9yIG5vcm1hbCAqLworCTB4MzEsIDB4MDAsCisJMHgzMywgMHgyMiwKKwkweDM0LCAweDExLAorCTB4MzUsIDB4MzUsCisJMHgzYiwgMHgwNSwKKwkweDA2LCAweGMwLCAvKiByZXNldCBkZXZpY2UgKi8KKwkweDAwLCAweDAwLCAvKiBUZXJtaW5hdG9yIChyZWcgMHgwMCBpcyByZWFkLW9ubHkpICovCit9OworCitzdGF0aWMgaW50IHdyaXRlX3JlZyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsIHU4IHZhbHVlKQoreworCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfcmVncyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCAqcmVncykKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IHJlZ3NbaV0gIT0gMHgwMDsgaSArPSAyKQorCQlpZiAoaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZ3NbaV0sIHJlZ3NbaSArIDFdKSA8IDApCisJCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2lzX3R3OTkwM19jb21tYW5kKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQkJdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQoreworCXN0cnVjdCB3aXNfdHc5OTAzICpkZWMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBWSURJT0NfU19JTlBVVDoKKwl7CisJCWludCAqaW5wdXQgPSBhcmc7CisKKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIDB4MDIsIDB4NDAgfCAoKmlucHV0IDw8IDEpKTsKKwkJYnJlYWs7CisJfQorI2lmIDAgICAvKiBUaGUgc2NhbGVyIG9uIHRoaXMgdGhpbmcgc2VlbXMgdG8gYmUgaG9ycmlibHkgYnJva2VuICovCisJY2FzZSBERUNPREVSX1NFVF9SRVNPTFVUSU9OOgorCXsKKwkJc3RydWN0IHZpZGVvX2RlY29kZXJfcmVzb2x1dGlvbiAqcmVzID0gYXJnOworCQkvKmludCBoc2NhbGUgPSAyNTYgKiA3MjAgLyByZXMtPndpZHRoOyovCisJCWludCBoc2NhbGUgPSAyNTYgKiA3MjAgLyAocmVzLT53aWR0aCAtIChyZXMtPndpZHRoID4gNzA0ID8gMCA6IDgpKTsKKwkJaW50IHZzY2FsZSA9IDI1NiAqIChkZWMtPm5vcm0gJiBWNEwyX1NURF9OVFNDID8gIDI0MCA6IDI4OCkKKwkJCQkvIHJlcy0+aGVpZ2h0OworCQl1OCByZWdzW10gPSB7CisJCQkweDBkLCB2c2NhbGUgJiAweGZmLAorCQkJMHgwZiwgaHNjYWxlICYgMHhmZiwKKwkJCTB4MGUsICgodnNjYWxlICYgMHhmMDApID4+IDQpIHwgKChoc2NhbGUgJiAweGYwMCkgPj4gOCksCisJCQkweDA2LCAweGMwLCAvKiByZXNldCBkZXZpY2UgKi8KKwkJCTAsCTAsCisJCX07CisJCXByaW50ayhLRVJOX0RFQlVHICJ2c2NhbGUgaXMgJTA0eCwgaHNjYWxlIGlzICUwNHhcbiIsCisJCQkJdnNjYWxlLCBoc2NhbGUpOworCQkvKndyaXRlX3JlZ3MoY2xpZW50LCByZWdzKTsqLworCQlicmVhazsKKwl9CisjZW5kaWYKKwljYXNlIFZJRElPQ19TX1NURDoKKwl7CisJCXY0bDJfc3RkX2lkICppbnB1dCA9IGFyZzsKKwkJdTggcmVnc1tdID0geworCQkJMHgwNSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4ODAgOiAweDAwLAorCQkJMHgwNywgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MDIgOiAweDEyLAorCQkJMHgwOCwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4MTQgOiAweDE4LAorCQkJMHgwOSwgKmlucHV0ICYgVjRMMl9TVERfTlRTQyA/IDB4ZjAgOiAweDIwLAorCQkJMCwJMCwKKwkJfTsKKwkJd3JpdGVfcmVncyhjbGllbnQsIHJlZ3MpOworCQlkZWMtPm5vcm0gPSAqaW5wdXQ7CisJCWJyZWFrOworCX0KKwljYXNlIFZJRElPQ19RVUVSWUNUUkw6CisJeworCQlzdHJ1Y3QgdjRsMl9xdWVyeWN0cmwgKmN0cmwgPSBhcmc7CisKKwkJc3dpdGNoIChjdHJsLT5pZCkgeworCQljYXNlIFY0TDJfQ0lEX0JSSUdIVE5FU1M6CisJCQljdHJsLT50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUjsKKwkJCXN0cm5jcHkoY3RybC0+bmFtZSwgIkJyaWdodG5lc3MiLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IC0xMjg7CisJCQljdHJsLT5tYXhpbXVtID0gMTI3OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gMHgwMDsKKwkJCWN0cmwtPmZsYWdzID0gMDsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0NPTlRSQVNUOgorCQkJY3RybC0+dHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI7CisJCQlzdHJuY3B5KGN0cmwtPm5hbWUsICJDb250cmFzdCIsIHNpemVvZihjdHJsLT5uYW1lKSk7CisJCQljdHJsLT5taW5pbXVtID0gMDsKKwkJCWN0cmwtPm1heGltdW0gPSAyNTU7CisJCQljdHJsLT5zdGVwID0gMTsKKwkJCWN0cmwtPmRlZmF1bHRfdmFsdWUgPSAweDYwOworCQkJY3RybC0+ZmxhZ3MgPSAwOworCQkJYnJlYWs7CisjaWYgMAorCQkvKiBJIGRvbid0IHVuZGVyc3RhbmQgaG93IHRoZSBDaHJvbWEgR2FpbiByZWdpc3RlcnMgd29yay4uLiAqLworCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQljdHJsLT50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUjsKKwkJCXN0cm5jcHkoY3RybC0+bmFtZSwgIlNhdHVyYXRpb24iLCBzaXplb2YoY3RybC0+bmFtZSkpOworCQkJY3RybC0+bWluaW11bSA9IDA7CisJCQljdHJsLT5tYXhpbXVtID0gMTI3OworCQkJY3RybC0+c3RlcCA9IDE7CisJCQljdHJsLT5kZWZhdWx0X3ZhbHVlID0gNjQ7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKyNlbmRpZgorCQljYXNlIFY0TDJfQ0lEX0hVRToKKwkJCWN0cmwtPnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSOworCQkJc3RybmNweShjdHJsLT5uYW1lLCAiSHVlIiwgc2l6ZW9mKGN0cmwtPm5hbWUpKTsKKwkJCWN0cmwtPm1pbmltdW0gPSAtMTI4OworCQkJY3RybC0+bWF4aW11bSA9IDEyNzsKKwkJCWN0cmwtPnN0ZXAgPSAxOworCQkJY3RybC0+ZGVmYXVsdF92YWx1ZSA9IDA7CisJCQljdHJsLT5mbGFncyA9IDA7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwl9CisJY2FzZSBWSURJT0NfU19DVFJMOgorCXsKKwkJc3RydWN0IHY0bDJfY29udHJvbCAqY3RybCA9IGFyZzsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDEyNykKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSAxMjc7CisJCQllbHNlIGlmIChjdHJsLT52YWx1ZSA8IC0xMjgpCisJCQkJZGVjLT5icmlnaHRuZXNzID0gLTEyODsKKwkJCWVsc2UKKwkJCQlkZWMtPmJyaWdodG5lc3MgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MTAsIGRlYy0+YnJpZ2h0bmVzcyk7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCWlmIChjdHJsLT52YWx1ZSA+IDI1NSkKKwkJCQlkZWMtPmNvbnRyYXN0ID0gMjU1OworCQkJZWxzZSBpZiAoY3RybC0+dmFsdWUgPCAwKQorCQkJCWRlYy0+Y29udHJhc3QgPSAwOworCQkJZWxzZQorCQkJCWRlYy0+Y29udHJhc3QgPSBjdHJsLT52YWx1ZTsKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MTEsIGRlYy0+Y29udHJhc3QpOworCQkJYnJlYWs7CisjaWYgMAorCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQlpZiAoY3RybC0+dmFsdWUgPiAxMjcpCisJCQkJZGVjLT5zYXR1cmF0aW9uID0gMTI3OworCQkJZWxzZSBpZiAoY3RybC0+dmFsdWUgPCAwKQorCQkJCWRlYy0+c2F0dXJhdGlvbiA9IDA7CisJCQllbHNlCisJCQkJZGVjLT5zYXR1cmF0aW9uID0gY3RybC0+dmFsdWU7CisJCQkvKndyaXRlX3JlZyhjbGllbnQsIDB4MGMsIGRlYy0+c2F0dXJhdGlvbik7Ki8KKwkJCWJyZWFrOworI2VuZGlmCisJCWNhc2UgVjRMMl9DSURfSFVFOgorCQkJaWYgKGN0cmwtPnZhbHVlID4gMTI3KQorCQkJCWRlYy0+aHVlID0gMTI3OworCQkJZWxzZSBpZiAoY3RybC0+dmFsdWUgPCAtMTI4KQorCQkJCWRlYy0+aHVlID0gLTEyODsKKwkJCWVsc2UKKwkJCQlkZWMtPmh1ZSA9IGN0cmwtPnZhbHVlOworCQkJd3JpdGVfcmVnKGNsaWVudCwgMHgxNSwgZGVjLT5odWUpOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCWNhc2UgVklESU9DX0dfQ1RSTDoKKwl7CisJCXN0cnVjdCB2NGwyX2NvbnRyb2wgKmN0cmwgPSBhcmc7CisKKwkJc3dpdGNoIChjdHJsLT5pZCkgeworCQljYXNlIFY0TDJfQ0lEX0JSSUdIVE5FU1M6CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+YnJpZ2h0bmVzczsKKwkJCWJyZWFrOworCQljYXNlIFY0TDJfQ0lEX0NPTlRSQVNUOgorCQkJY3RybC0+dmFsdWUgPSBkZWMtPmNvbnRyYXN0OworCQkJYnJlYWs7CisjaWYgMAorCQljYXNlIFY0TDJfQ0lEX1NBVFVSQVRJT046CisJCQljdHJsLT52YWx1ZSA9IGRlYy0+c2F0dXJhdGlvbjsKKwkJCWJyZWFrOworI2VuZGlmCisJCWNhc2UgVjRMMl9DSURfSFVFOgorCQkJY3RybC0+dmFsdWUgPSBkZWMtPmh1ZTsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB3aXNfdHc5OTAzX2RyaXZlcjsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IHdpc190dzk5MDNfY2xpZW50X3RlbXBsID0geworCS5uYW1lCQk9ICJUVzk5MDMgKFdJUykiLAorCS5kcml2ZXIJCT0gJndpc190dzk5MDNfZHJpdmVyLAorfTsKKworc3RhdGljIGludCB3aXNfdHc5OTAzX2RldGVjdChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBhZGRyLCBpbnQga2luZCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50OworCXN0cnVjdCB3aXNfdHc5OTAzICpkZWM7CisKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCisJCXJldHVybiAwOworCisJY2xpZW50ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoY2xpZW50ID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCW1lbWNweShjbGllbnQsICZ3aXNfdHc5OTAzX2NsaWVudF90ZW1wbCwKKwkJCXNpemVvZih3aXNfdHc5OTAzX2NsaWVudF90ZW1wbCkpOworCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CisJY2xpZW50LT5hZGRyID0gYWRkcjsKKworCWRlYyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB3aXNfdHc5OTAzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKGRlYyA9PSBOVUxMKSB7CisJCWtmcmVlKGNsaWVudCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlkZWMtPm5vcm0gPSBWNEwyX1NURF9OVFNDOworCWRlYy0+YnJpZ2h0bmVzcyA9IDA7CisJZGVjLT5jb250cmFzdCA9IDB4NjA7CisJZGVjLT5odWUgPSAwOworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRlYyk7CisKKwlwcmludGsoS0VSTl9ERUJVRworCQkid2lzLXR3OTkwMzogaW5pdGlhbGl6aW5nIFRXOTkwMyBhdCBhZGRyZXNzICVkIG9uICVzXG4iLAorCQlhZGRyLCBhZGFwdGVyLT5uYW1lKTsKKworCWlmICh3cml0ZV9yZWdzKGNsaWVudCwgaW5pdGlhbF9yZWdpc3RlcnMpIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIndpcy10dzk5MDM6IGVycm9yIGluaXRpYWxpemluZyBUVzk5MDNcbiIpOworCQlrZnJlZShjbGllbnQpOworCQlrZnJlZShkZWMpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc190dzk5MDNfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHdpc190dzk5MDMgKmRlYyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWludCByOworCisJciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKworCWtmcmVlKGNsaWVudCk7CisJa2ZyZWUoZGVjKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc190dzk5MDNfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gIldJUyBUVzk5MDMgSTJDIGRyaXZlciIsCisJfSwKKwkuaWQJCT0gSTJDX0RSSVZFUklEX1dJU19UVzk5MDMsCisJLmRldGFjaF9jbGllbnQJPSB3aXNfdHc5OTAzX2RldGFjaCwKKwkuY29tbWFuZAk9IHdpc190dzk5MDNfY29tbWFuZCwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHdpc190dzk5MDNfaW5pdCh2b2lkKQoreworCWludCByOworCisJciA9IGkyY19hZGRfZHJpdmVyKCZ3aXNfdHc5OTAzX2RyaXZlcik7CisJaWYgKHIgPCAwKQorCQlyZXR1cm4gcjsKKwlyZXR1cm4gd2lzX2kyY19hZGRfZHJpdmVyKHdpc190dzk5MDNfZHJpdmVyLmlkLCB3aXNfdHc5OTAzX2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB3aXNfdHc5OTAzX2NsZWFudXAodm9pZCkKK3sKKwl3aXNfaTJjX2RlbF9kcml2ZXIod2lzX3R3OTkwM19kZXRlY3QpOworCWkyY19kZWxfZHJpdmVyKCZ3aXNfdHc5OTAzX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHdpc190dzk5MDNfaW5pdCk7Cittb2R1bGVfZXhpdCh3aXNfdHc5OTAzX2NsZWFudXApOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy11ZGExMzQyLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L3dpcy11ZGExMzQyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA4OTRlMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvd2lzLXVkYTEzNDIuYwpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY3JvbmFzIFVTQSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKFZlcnNpb24gMikgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+CisjaW5jbHVkZSA8bWVkaWEvdHZhdWRpby5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+CisKKyNpbmNsdWRlICJ3aXMtaTJjLmgiCisKK3N0YXRpYyBpbnQgd3JpdGVfcmVnKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCByZWcsIGludCB2YWx1ZSkKK3sKKwkvKiBVREExMzQyIHdhbnRzIE1TQiBmaXJzdCwgYnV0IFNNQnVzIHNlbmRzIExTQiBmaXJzdCAqLworCWkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoY2xpZW50LCByZWcsIHN3YWIxNih2YWx1ZSkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdpc191ZGExMzQyX2NvbW1hbmQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCQl1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcpCit7CisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFZJRElPQ19TX0FVRElPOgorCXsKKwkJaW50ICppbnAgPSBhcmc7CisKKwkJc3dpdGNoICgqaW5wKSB7CisJCWNhc2UgVFZBVURJT19JTlBVVF9UVU5FUjoKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MDAsIDB4MTQ0MSk7IC8qIHNlbGVjdCBpbnB1dCAyICovCisJCQlicmVhazsKKwkJY2FzZSBUVkFVRElPX0lOUFVUX0VYVEVSTjoKKwkJCXdyaXRlX3JlZyhjbGllbnQsIDB4MDAsIDB4MTI0MSk7IC8qIHNlbGVjdCBpbnB1dCAxICovCisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ayhLRVJOX0VSUiAid2lzLXVkYTEzNDI6IGlucHV0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsCisJCQkJCSppbnApOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc191ZGExMzQyX2RyaXZlcjsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IHdpc191ZGExMzQyX2NsaWVudF90ZW1wbCA9IHsKKwkubmFtZQkJPSAiVURBMTM0MiAoV0lTKSIsCisJLmRyaXZlcgkJPSAmd2lzX3VkYTEzNDJfZHJpdmVyLAorfTsKKworc3RhdGljIGludCB3aXNfdWRhMTM0Ml9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkciwgaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRBKSkKKwkJcmV0dXJuIDA7CisKKwljbGllbnQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOworCWlmIChjbGllbnQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisJbWVtY3B5KGNsaWVudCwgJndpc191ZGExMzQyX2NsaWVudF90ZW1wbCwKKwkJCXNpemVvZih3aXNfdWRhMTM0Ml9jbGllbnRfdGVtcGwpKTsKKwljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOworCWNsaWVudC0+YWRkciA9IGFkZHI7CisKKwlwcmludGsoS0VSTl9ERUJVRworCQkid2lzLXVkYTEzNDI6IGluaXRpYWxpemluZyBVREExMzQyIGF0IGFkZHJlc3MgJWQgb24gJXNcbiIsCisJCWFkZHIsIGFkYXB0ZXItPm5hbWUpOworCisJd3JpdGVfcmVnKGNsaWVudCwgMHgwMCwgMHg4MDAwKTsgLyogcmVzZXQgcmVnaXN0ZXJzICovCisJd3JpdGVfcmVnKGNsaWVudCwgMHgwMCwgMHgxMjQxKTsgLyogc2VsZWN0IGlucHV0IDEgKi8KKworCWkyY19hdHRhY2hfY2xpZW50KGNsaWVudCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2lzX3VkYTEzNDJfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJaW50IHI7CisKKwlyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KTsKKwlpZiAociA8IDApCisJCXJldHVybiByOworCisJa2ZyZWUoY2xpZW50KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHdpc191ZGExMzQyX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZQk9ICJXSVMgVURBMTM0MiBJMkMgZHJpdmVyIiwKKwl9LAorCS5pZAkJPSBJMkNfRFJJVkVSSURfV0lTX1VEQTEzNDIsCisJLmRldGFjaF9jbGllbnQJPSB3aXNfdWRhMTM0Ml9kZXRhY2gsCisJLmNvbW1hbmQJPSB3aXNfdWRhMTM0Ml9jb21tYW5kLAorfTsKKworc3RhdGljIGludCBfX2luaXQgd2lzX3VkYTEzNDJfaW5pdCh2b2lkKQoreworCWludCByOworCisJciA9IGkyY19hZGRfZHJpdmVyKCZ3aXNfdWRhMTM0Ml9kcml2ZXIpOworCWlmIChyIDwgMCkKKwkJcmV0dXJuIHI7CisJcmV0dXJuIHdpc19pMmNfYWRkX2RyaXZlcih3aXNfdWRhMTM0Ml9kcml2ZXIuaWQsIHdpc191ZGExMzQyX2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB3aXNfdWRhMTM0Ml9jbGVhbnVwKHZvaWQpCit7CisJd2lzX2kyY19kZWxfZHJpdmVyKHdpc191ZGExMzQyX2RldGVjdCk7CisJaTJjX2RlbF9kcml2ZXIoJndpc191ZGExMzQyX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHdpc191ZGExMzQyX2luaXQpOworbW9kdWxlX2V4aXQod2lzX3VkYTEzNDJfY2xlYW51cCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZTQwMDAvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9tZTQwMDAvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTZjOWRlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9LY29uZmlnCkBAIC0wLDAgKzEsMTAgQEAKK2NvbmZpZyBNRTQwMDAKKwl0cmlzdGF0ZSAiTWVpbGhhdXMgTUUtNDAwMCBzdXBwb3J0IgorCWRlZmF1bHQgbgorCWRlcGVuZHMgb24gUENJCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIE1laWxoYXVzIE1FLTQwMDAgZmFtaWx5IG9mIGJvYXJkcworCSAgdGhhdCBkbyBkYXRhIGNvbGxlY3Rpb24gYW5kIG11bHRpcHVycG9zZSBJL08uCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIG1lNDAwMC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZTQwMDAvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDg3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai0kKENPTkZJR19NRTQwMDApCQkrPSBtZTQwMDAubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9SRUFETUUgYi9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmI4Mzg2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9SRUFETUUKQEAgLTAsMCArMSwxMyBAQAorCitUT0RPOgorCS0gY2hlY2twYXRjaC5wbCBjbGVhbnVwcworCS0gc3BhcnNlIGNsZWFudXBzCisJLSBwb3NzaWJsZSAvcHJvYyBpbnRlcmFjdGlvbiBjbGVhbnVwcworCS0gbW9yZSBpbmZvIG5lZWRlZCBmb3IgS2NvbmZpZyBlbnRyeQorCS0gcmVhbCBkZXZpY2UgaWQ/CisJLSBtb2R1bGUgcGFyYW1ldGVyIGNsZWFudXAKKworUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBzdXNlLmRlPgorYW5kIENjOiBXb2xmZ2FuZyBCZWl0ZXIgPHcuYmVpdGVyQGFvbi5hdD4gYW5kCitHdWVudGVyIEdlYmhhcmR0IDxnLmdlYmhhcmR0QG1laWxoYXVzLmRlPgorCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL21lNDAwMC5jIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQwMDAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjJkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQwMDAuYwpAQCAtMCwwICsxLDYxMzMgQEAKKy8qIERldmljZSBkcml2ZXIgZm9yIE1laWxoYXVzIE1FLTQwMDAgYm9hcmQgZmFtaWx5LgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBNZWlsaGF1cyBFbGVjdHJvbmljIEdtYkggKHN1cHBvcnRAbWVpbGhhdXMuZGUpCisgKgorICogIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKiAgQXV0aG9yOglHdWVudGVyIEdlYmhhcmR0CTxnLmdlYmhhcmR0QG1laWxoYXVzLmRlPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgorCisjaW5jbHVkZSA8bGludXgvcG9sbC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworLyogSW5jbHVkZS1GaWxlIGZvciB0aGUgTWVpbGhhdXMgTUUtNDAwMCBJL08gYm9hcmQgKi8KKyNpbmNsdWRlICJtZTQwMDAuaCIKKyNpbmNsdWRlICJtZTQwMDBfZmlybXdhcmUuaCIKKyNpbmNsdWRlICJtZTQ2MTBfZmlybXdhcmUuaCIKKworLyogQWRtaW5pc3RyYXRpdmUgc3R1ZmYgZm9yIG1vZGluZm8gKi8KK01PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgR2ViaGFyZHQgPGcuZ2ViaGFyZHRAbWVpbGhhdXMuZGU+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04KKyAgICAoIkRldmljZSBEcml2ZXIgTW9kdWxlIGZvciBNZWlsaGF1cyBNRS00MDAwIGJvYXJkcyB2ZXJzaW9uIDEuMC41Iik7CitNT0RVTEVfU1VQUE9SVEVEX0RFVklDRSgiTWVpbGhhdXMgTUUtNDAwMCBNdWx0aSBJL08gYm9hcmRzIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKKy8qIEJvYXJkIHNwZWNpZmljIGRhdGEgYXJlIGtlcHQgaW4gYSBnbG9iYWwgbGlzdCAqLworTElTVF9IRUFEKG1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpOworCisvKiBNYWpvciBEZXZpY2UgTnVtYmVycy4gMCBtZWFucyB0byBnZXQgaXQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBTeXN0ZW0gKi8KK3N0YXRpYyBpbnQgbWU0MDAwX2FvX21ham9yX2RyaXZlcl9ubyA9IDA7CitzdGF0aWMgaW50IG1lNDAwMF9haV9tYWpvcl9kcml2ZXJfbm8gPSAwOworc3RhdGljIGludCBtZTQwMDBfZGlvX21ham9yX2RyaXZlcl9ubyA9IDA7CitzdGF0aWMgaW50IG1lNDAwMF9jbnRfbWFqb3JfZHJpdmVyX25vID0gMDsKK3N0YXRpYyBpbnQgbWU0MDAwX2V4dF9pbnRfbWFqb3JfZHJpdmVyX25vID0gMDsKKworLyogTGV0IHRoZSB1c2VyIHNwZWNpZnkgYSBjdXN0b20gbWFqb3IgZHJpdmVyIG51bWJlciAqLworbW9kdWxlX3BhcmFtKG1lNDAwMF9hb19tYWpvcl9kcml2ZXJfbm8sIGludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKG1lNDAwMF9hb19tYWpvcl9kcml2ZXJfbm8sCisJCSAiTWFqb3IgZHJpdmVyIG51bWJlciBmb3IgYW5hbG9nIG91dHB1dCAoZGVmYXVsdCAwKSIpOworCittb2R1bGVfcGFyYW0obWU0MDAwX2FpX21ham9yX2RyaXZlcl9ubywgaW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MobWU0MDAwX2FpX21ham9yX2RyaXZlcl9ubywKKwkJICJNYWpvciBkcml2ZXIgbnVtYmVyIGZvciBhbmFsb2cgaW5wdXQgKGRlZmF1bHQgMCkiKTsKKworbW9kdWxlX3BhcmFtKG1lNDAwMF9kaW9fbWFqb3JfZHJpdmVyX25vLCBpbnQsIDApOworTU9EVUxFX1BBUk1fREVTQyhtZTQwMDBfZGlvX21ham9yX2RyaXZlcl9ubywKKwkJICJNYWpvciBkcml2ZXIgbnVtYmVyIGRpZ2l0YWwgSS9PIChkZWZhdWx0IDApIik7CisKK21vZHVsZV9wYXJhbShtZTQwMDBfY250X21ham9yX2RyaXZlcl9ubywgaW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MobWU0MDAwX2NudF9tYWpvcl9kcml2ZXJfbm8sCisJCSAiTWFqb3IgZHJpdmVyIG51bWJlciBmb3IgY291bnRlciAoZGVmYXVsdCAwKSIpOworCittb2R1bGVfcGFyYW0obWU0MDAwX2V4dF9pbnRfbWFqb3JfZHJpdmVyX25vLCBpbnQsIDApOworTU9EVUxFX1BBUk1fREVTQyhtZTQwMDBfZXh0X2ludF9tYWpvcl9kcml2ZXJfbm8sCisJCSAiTWFqb3IgZHJpdmVyIG51bWJlciBmb3IgZXh0ZXJuYWwgaW50ZXJydXB0IChkZWZhdWx0IDApIik7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgTW9kdWxlIHN0dWZmCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaW5pdF9tb2R1bGUodm9pZCk7Cit2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEJvYXJkIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgbWU0MDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCk7CitzdGF0aWMgaW50IG1lNDAwMF94aWxpbnhfZG93bmxvYWQobWU0MDAwX2luZm9fdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX3Jlc2V0X2JvYXJkKG1lNDAwMF9pbmZvX3QgKik7CisKK3N0YXRpYyB2b2lkIGNsZWFyX2JvYXJkX2luZm9fbGlzdCh2b2lkKTsKK3N0YXRpYyBpbnQgZ2V0X3JlZ2lzdGVycyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBtZTQwMDBfaW5mb190ICogaW5mbyk7CitzdGF0aWMgaW50IGluaXRfYm9hcmRfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBtZTQwMDBfaW5mb190ICogYm9hcmRfaW5mbyk7CitzdGF0aWMgaW50IGFsbG9jX2FvX2NvbnRleHRzKG1lNDAwMF9pbmZvX3QgKiBpbmZvKTsKK3N0YXRpYyB2b2lkIHJlbGVhc2VfYW9fY29udGV4dHMobWU0MDAwX2luZm9fdCAqIGJvYXJkX2luZm8pOworc3RhdGljIGludCBhbGxvY19haV9jb250ZXh0KG1lNDAwMF9pbmZvX3QgKiBpbmZvKTsKK3N0YXRpYyBpbnQgYWxsb2NfZGlvX2NvbnRleHQobWU0MDAwX2luZm9fdCAqIGluZm8pOworc3RhdGljIGludCBhbGxvY19jbnRfY29udGV4dChtZTQwMDBfaW5mb190ICogaW5mbyk7CitzdGF0aWMgaW50IGFsbG9jX2V4dF9pbnRfY29udGV4dChtZTQwMDBfaW5mb190ICogaW5mbyk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU3R1ZmYgdXNlZCBieSBhbGwgZGV2aWNlIHBhcnRzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IG1lNDAwMF9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX3JlbGVhc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOworCitzdGF0aWMgaW50IG1lNDAwMF9nZXRfdXNlcl9pbmZvKG1lNDAwMF91c2VyX2luZm9fdCAqLAorCQkJCW1lNDAwMF9pbmZvX3QgKiBib2FyZF9pbmZvKTsKK3N0YXRpYyBpbnQgbWU0MDAwX3JlYWRfcHJvY21lbShjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQsIGludCAqLCB2b2lkICopOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEFuYWxvZyBvdXRwdXQgc3R1ZmYKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBzc2l6ZV90IG1lNDAwMF9hb193cml0ZV9zaW5nKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LAorCQkJCSAgICBsb2ZmX3QgKik7CitzdGF0aWMgc3NpemVfdCBtZTQwMDBfYW9fd3JpdGVfd3JhcChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwKKwkJCQkgICAgbG9mZl90ICopOworc3RhdGljIHNzaXplX3QgbWU0MDAwX2FvX3dyaXRlX2NvbnQoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsCisJCQkJICAgIGxvZmZfdCAqKTsKKworc3RhdGljIGludCBtZTQwMDBfYW9faW9jdGxfc2luZyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAorCQkJCXVuc2lnbmVkIGxvbmcpOworc3RhdGljIGludCBtZTQwMDBfYW9faW9jdGxfd3JhcChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAorCQkJCXVuc2lnbmVkIGxvbmcpOworc3RhdGljIGludCBtZTQwMDBfYW9faW9jdGxfY29udChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAorCQkJCXVuc2lnbmVkIGxvbmcpOworCitzdGF0aWMgdW5zaWduZWQgaW50IG1lNDAwMF9hb19wb2xsX2NvbnQoc3RydWN0IGZpbGUgKiwgcG9sbF90YWJsZSAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX2ZzeW5jX2NvbnQoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOworCitzdGF0aWMgaW50IG1lNDAwMF9hb19zdGFydCh1bnNpZ25lZCBsb25nICosIG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19zdG9wKG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcChtZTQwMDBfYW9fY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfYW9fdGltZXJfc2V0X2Rpdmlzb3IodTMyICosIG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19wcmVsb2FkKG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19wcmVsb2FkX3VwZGF0ZShtZTQwMDBfYW9fY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfYW9fZXhfdHJpZ19zZXRfZWRnZShpbnQgKiwgbWU0MDAwX2FvX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX2V4X3RyaWdfZW5hYmxlKG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUobWU0MDAwX2FvX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3ByZXBhcmUobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2luZm8pOworc3RhdGljIGludCBtZTQwMDBfYW9fcmVzZXQobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2luZm8pOworc3RhdGljIGludCBtZTQwMDBfYW9fZW5hYmxlX2RvKG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19kaXNhYmxlX2RvKG1lNDAwMF9hb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9hb19mc21fc3RhdGUoaW50ICosIG1lNDAwMF9hb19jb250ZXh0X3QgKik7CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3NpbXVsdGFuZW91c19leF90cmlnKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3NpbXVsdGFuZW91c19zdyhtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9hb19zaW11bHRhbmVvdXNfZGlzYWJsZShtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9hb19zaW11bHRhbmVvdXNfdXBkYXRlKG1lNDAwMF9hb19jaGFubmVsX2xpc3RfdCAqIGNoYW5uZWxzLAorCQkJCQkgbWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpOworCitzdGF0aWMgaW50IG1lNDAwMF9hb19zeW5jaHJvbm91c19leF90cmlnKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3N5bmNocm9ub3VzX3N3KG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3N5bmNocm9ub3VzX2Rpc2FibGUobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpOworCitzdGF0aWMgaW50IG1lNDAwMF9hb19leF90cmlnX3RpbWVvdXQodW5zaWduZWQgbG9uZyAqYXJnLAorCQkJCSAgICAgbWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpOworc3RhdGljIGludCBtZTQwMDBfYW9fZ2V0X2ZyZWVfYnVmZmVyKHVuc2lnbmVkIGxvbmcgKmFyZywKKwkJCQkgICAgIG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBBbmFsb2cgaW5wdXQgc3R1ZmYKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3NpbmdsZShtZTQwMDBfYWlfc2luZ2xlX3QgKiwgbWU0MDAwX2FpX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2lvY3RsX3Npbmcoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwKKwkJCQl1bnNpZ25lZCBsb25nKTsKKworc3RhdGljIHNzaXplX3QgbWU0MDAwX2FpX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2lvY3RsX3N3KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsCisJCQkgICAgICB1bnNpZ25lZCBsb25nKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWU0MDAwX2FpX3BvbGwoc3RydWN0IGZpbGUgKiwgcG9sbF90YWJsZSAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlX3AsIGludCBtb2RlKTsKKworc3RhdGljIGludCBtZTQwMDBfYWlfaW9jdGxfZXh0KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyk7CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3ByZXBhcmUobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpOworc3RhdGljIGludCBtZTQwMDBfYWlfcmVzZXQobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpOworc3RhdGljIGludCBtZTQwMDBfYWlfY29uZmlnKG1lNDAwMF9haV9jb25maWdfdCAqLCBtZTQwMDBfYWlfY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfYWlfc3RhcnQobWU0MDAwX2FpX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3N0YXJ0X2V4KHVuc2lnbmVkIGxvbmcgKiwgbWU0MDAwX2FpX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3N0b3AobWU0MDAwX2FpX2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2ltbWVkaWF0ZV9zdG9wKG1lNDAwMF9haV9jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9haV9leF90cmlnX2VuYWJsZShtZTQwMDBfYWlfY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfYWlfZXhfdHJpZ19kaXNhYmxlKG1lNDAwMF9haV9jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9haV9leF90cmlnX3NldHVwKG1lNDAwMF9haV90cmlnZ2VyX3QgKiwKKwkJCQkgICBtZTQwMDBfYWlfY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfYWlfc2Nfc2V0dXAobWU0MDAwX2FpX3NjX3QgKiBhcmcsCisJCQkgICAgICBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9haV9vZmZzZXRfZW5hYmxlKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX29mZnNldF9kaXNhYmxlKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KTsKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2Z1bGxzY2FsZV9lbmFibGUobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpOworc3RhdGljIGludCBtZTQwMDBfYWlfZnVsbHNjYWxlX2Rpc2FibGUobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpOworc3RhdGljIGludCBtZTQwMDBfYWlfZnNtX3N0YXRlKGludCAqYXJnLCBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9haV9nZXRfY291bnRfYnVmZmVyKHVuc2lnbmVkIGxvbmcgKmFyZywKKwkJCQkgICAgICBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgRUVQUk9NIHN0dWZmCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IG1lNDAwMF9lZXByb21fcmVhZChtZTQwMDBfZWVwcm9tX3QgKiBhcmcsCisJCQkgICAgICBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9lZXByb21fd3JpdGUobWU0MDAwX2VlcHJvbV90ICogYXJnLAorCQkJICAgICAgIG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBlZXByb21fcmVhZF9jbWQobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQsCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBjbWQsIGludCBsZW5ndGgpOworc3RhdGljIGludCBlZXByb21fd3JpdGVfY21kKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0LCB1bnNpZ25lZCBsb25nIGNtZCwKKwkJCSAgICBpbnQgbGVuZ3RoKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBEaWdpdGFsIEkvTyBzdHVmZgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBtZTQwMDBfZGlvX2lvY3RsKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsCisJCQkgICAgdW5zaWduZWQgbG9uZyk7CitzdGF0aWMgaW50IG1lNDAwMF9kaW9fY29uZmlnKG1lNDAwMF9kaW9fY29uZmlnX3QgKiwgbWU0MDAwX2Rpb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9kaW9fZ2V0X2J5dGUobWU0MDAwX2Rpb19ieXRlX3QgKiwgbWU0MDAwX2Rpb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9kaW9fc2V0X2J5dGUobWU0MDAwX2Rpb19ieXRlX3QgKiwgbWU0MDAwX2Rpb19jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9kaW9fcmVzZXQobWU0MDAwX2Rpb19jb250ZXh0X3QgKik7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQ291bnRlciBzdHVmZgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBtZTQwMDBfY250X2lvY3RsKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsCisJCQkgICAgdW5zaWduZWQgbG9uZyk7CitzdGF0aWMgaW50IG1lNDAwMF9jbnRfY29uZmlnKG1lNDAwMF9jbnRfY29uZmlnX3QgKiwgbWU0MDAwX2NudF9jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9jbnRfcmVhZChtZTQwMDBfY250X3QgKiwgbWU0MDAwX2NudF9jb250ZXh0X3QgKik7CitzdGF0aWMgaW50IG1lNDAwMF9jbnRfd3JpdGUobWU0MDAwX2NudF90ICosIG1lNDAwMF9jbnRfY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfY250X3Jlc2V0KG1lNDAwMF9jbnRfY29udGV4dF90ICopOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEV4dGVybmFsIGludGVycnVwdCByb3V0aW5lcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBtZTQwMDBfZXh0X2ludF9pb2N0bChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAorCQkJCXVuc2lnbmVkIGxvbmcpOworc3RhdGljIGludCBtZTQwMDBfZXh0X2ludF9lbmFibGUobWU0MDAwX2V4dF9pbnRfY29udGV4dF90ICopOworc3RhdGljIGludCBtZTQwMDBfZXh0X2ludF9kaXNhYmxlKG1lNDAwMF9leHRfaW50X2NvbnRleHRfdCAqKTsKK3N0YXRpYyBpbnQgbWU0MDAwX2V4dF9pbnRfY291bnQodW5zaWduZWQgbG9uZyAqYXJnLAorCQkJCW1lNDAwMF9leHRfaW50X2NvbnRleHRfdCAqIGV4dF9pbnRfY29udGV4dCk7CitzdGF0aWMgaW50IG1lNDAwMF9leHRfaW50X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlX3B0ciwgaW50IG1vZGUpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGlycXJldHVybl90IG1lNDAwMF9hb19pc3IoaW50LCB2b2lkICopOworc3RhdGljIGlycXJldHVybl90IG1lNDAwMF9haV9pc3IoaW50LCB2b2lkICopOworc3RhdGljIGlycXJldHVybl90IG1lNDAwMF9leHRfaW50X2lzcihpbnQsIHZvaWQgKik7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgSW5saW5lIGZ1bmN0aW9ucworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBpbmxpbmUgbWU0MDAwX2J1Zl9jb3VudChtZTQwMDBfY2lyY19idWZfdCwgaW50KTsKK3N0YXRpYyBpbnQgaW5saW5lIG1lNDAwMF9idWZfc3BhY2UobWU0MDAwX2NpcmNfYnVmX3QsIGludCk7CitzdGF0aWMgaW50IGlubGluZSBtZTQwMDBfc3BhY2VfdG9fZW5kKG1lNDAwMF9jaXJjX2J1Zl90LCBpbnQpOworc3RhdGljIGludCBpbmxpbmUgbWU0MDAwX3ZhbHVlc190b19lbmQobWU0MDAwX2NpcmNfYnVmX3QsIGludCk7CisKK3N0YXRpYyB2b2lkIGlubGluZSBtZTQwMDBfb3V0Yih1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBsb25nIHBvcnQpOworc3RhdGljIHZvaWQgaW5saW5lIG1lNDAwMF9vdXRsKHVuc2lnbmVkIGxvbmcgdmFsdWUsIHVuc2lnbmVkIGxvbmcgcG9ydCk7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBpbmxpbmUgbWU0MDAwX2lubCh1bnNpZ25lZCBsb25nIHBvcnQpOworc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5saW5lIG1lNDAwMF9pbmIodW5zaWduZWQgbG9uZyBwb3J0KTsKKworc3RhdGljIGludCBtZTQwMDBfYnVmX2NvdW50KG1lNDAwMF9jaXJjX2J1Zl90IGJ1ZiwgaW50IHNpemUpCit7CisJcmV0dXJuICgoYnVmLmhlYWQgLSBidWYudGFpbCkgJiAoc2l6ZSAtIDEpKTsKK30KKworc3RhdGljIGludCBtZTQwMDBfYnVmX3NwYWNlKG1lNDAwMF9jaXJjX2J1Zl90IGJ1ZiwgaW50IHNpemUpCit7CisJcmV0dXJuICgoYnVmLnRhaWwgLSAoYnVmLmhlYWQgKyAxKSkgJiAoc2l6ZSAtIDEpKTsKK30KKworc3RhdGljIGludCBtZTQwMDBfdmFsdWVzX3RvX2VuZChtZTQwMDBfY2lyY19idWZfdCBidWYsIGludCBzaXplKQoreworCWludCBlbmQ7CisJaW50IG47CisJZW5kID0gc2l6ZSAtIGJ1Zi50YWlsOworCW4gPSAoYnVmLmhlYWQgKyBlbmQpICYgKHNpemUgLSAxKTsKKwlyZXR1cm4gKG4gPCBlbmQpID8gbiA6IGVuZDsKK30KKworc3RhdGljIGludCBtZTQwMDBfc3BhY2VfdG9fZW5kKG1lNDAwMF9jaXJjX2J1Zl90IGJ1ZiwgaW50IHNpemUpCit7CisJaW50IGVuZDsKKwlpbnQgbjsKKworCWVuZCA9IHNpemUgLSAxIC0gYnVmLmhlYWQ7CisJbiA9IChlbmQgKyBidWYudGFpbCkgJiAoc2l6ZSAtIDEpOworCXJldHVybiAobiA8PSBlbmQpID8gbiA6IChlbmQgKyAxKTsKK30KKworc3RhdGljIHZvaWQgbWU0MDAwX291dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgbG9uZyBwb3J0KQoreworCVBPUlRfUERFQlVHKCItLT4gMHglMDJYIHBvcnQgMHglMDRsWFxuIiwgdmFsdWUsIHBvcnQpOworCW91dGIodmFsdWUsIHBvcnQpOworfQorCitzdGF0aWMgdm9pZCBtZTQwMDBfb3V0bCh1bnNpZ25lZCBsb25nIHZhbHVlLCB1bnNpZ25lZCBsb25nIHBvcnQpCit7CisJUE9SVF9QREVCVUcoIi0tPiAweCUwOGxYIHBvcnQgMHglMDRsWFxuIiwgdmFsdWUsIHBvcnQpOworCW91dGwodmFsdWUsIHBvcnQpOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtZTQwMDBfaW5sKHVuc2lnbmVkIGxvbmcgcG9ydCkKK3sKKwl1bnNpZ25lZCBsb25nIHZhbHVlOworCXZhbHVlID0gaW5sKHBvcnQpOworCVBPUlRfUERFQlVHKCI8LS0gMHglMDhsWCBwb3J0IDB4JTA0bFhcbiIsIHZhbHVlLCBwb3J0KTsKKwlyZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1lNDAwMF9pbmIodW5zaWduZWQgbG9uZyBwb3J0KQoreworCXVuc2lnbmVkIGNoYXIgdmFsdWU7CisJdmFsdWUgPSBpbmIocG9ydCk7CisJUE9SVF9QREVCVUcoIjwtLSAweCUwOFggcG9ydCAweCUwNGxYXG4iLCB2YWx1ZSwgcG9ydCk7CisJcmV0dXJuIHZhbHVlOworfQorCitzdHJ1Y3QgcGNpX2RyaXZlciBtZTQwMDBfZHJpdmVyID0geworCS5uYW1lID0gTUU0MDAwX05BTUUsCisJLmlkX3RhYmxlID0gbWU0MDAwX3BjaV90YWJsZSwKKwkucHJvYmUgPSBtZTQwMDBfcHJvYmUKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9hb19mb3BzX3NpbmcgPSB7CisgICAgICBvd25lcjpUSElTX01PRFVMRSwKKyAgICAgIHdyaXRlOm1lNDAwMF9hb193cml0ZV9zaW5nLAorICAgICAgaW9jdGw6bWU0MDAwX2FvX2lvY3RsX3NpbmcsCisgICAgICBvcGVuOm1lNDAwMF9vcGVuLAorICAgICAgcmVsZWFzZTptZTQwMDBfcmVsZWFzZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9hb19mb3BzX3dyYXAgPSB7CisgICAgICBvd25lcjpUSElTX01PRFVMRSwKKyAgICAgIHdyaXRlOm1lNDAwMF9hb193cml0ZV93cmFwLAorICAgICAgaW9jdGw6bWU0MDAwX2FvX2lvY3RsX3dyYXAsCisgICAgICBvcGVuOm1lNDAwMF9vcGVuLAorICAgICAgcmVsZWFzZTptZTQwMDBfcmVsZWFzZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9hb19mb3BzX2NvbnQgPSB7CisgICAgICBvd25lcjpUSElTX01PRFVMRSwKKyAgICAgIHdyaXRlOm1lNDAwMF9hb193cml0ZV9jb250LAorICAgICAgcG9sbDptZTQwMDBfYW9fcG9sbF9jb250LAorICAgICAgaW9jdGw6bWU0MDAwX2FvX2lvY3RsX2NvbnQsCisgICAgICBvcGVuOm1lNDAwMF9vcGVuLAorICAgICAgcmVsZWFzZTptZTQwMDBfcmVsZWFzZSwKKyAgICAgIGZzeW5jOm1lNDAwMF9hb19mc3luY19jb250LAorfTsKKworc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbWU0MDAwX2FpX2ZvcHNfc2luZyA9IHsKKyAgICAgIG93bmVyOlRISVNfTU9EVUxFLAorICAgICAgaW9jdGw6bWU0MDAwX2FpX2lvY3RsX3NpbmcsCisgICAgICBvcGVuOm1lNDAwMF9vcGVuLAorICAgICAgcmVsZWFzZTptZTQwMDBfcmVsZWFzZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9haV9mb3BzX2NvbnRfc3cgPSB7CisgICAgICBvd25lcjpUSElTX01PRFVMRSwKKyAgICAgIHJlYWQ6bWU0MDAwX2FpX3JlYWQsCisgICAgICBwb2xsOm1lNDAwMF9haV9wb2xsLAorICAgICAgaW9jdGw6bWU0MDAwX2FpX2lvY3RsX3N3LAorICAgICAgb3BlbjptZTQwMDBfb3BlbiwKKyAgICAgIHJlbGVhc2U6bWU0MDAwX3JlbGVhc2UsCisgICAgICBmYXN5bmM6bWU0MDAwX2FpX2Zhc3luYywKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9haV9mb3BzX2NvbnRfZXQgPSB7CisgICAgICBvd25lcjpUSElTX01PRFVMRSwKKyAgICAgIHJlYWQ6bWU0MDAwX2FpX3JlYWQsCisgICAgICBwb2xsOm1lNDAwMF9haV9wb2xsLAorICAgICAgaW9jdGw6bWU0MDAwX2FpX2lvY3RsX2V4dCwKKyAgICAgIG9wZW46bWU0MDAwX29wZW4sCisgICAgICByZWxlYXNlOm1lNDAwMF9yZWxlYXNlLAorfTsKKworc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbWU0MDAwX2FpX2ZvcHNfY29udF9ldF92YWx1ZSA9IHsKKyAgICAgIG93bmVyOlRISVNfTU9EVUxFLAorICAgICAgcmVhZDptZTQwMDBfYWlfcmVhZCwKKyAgICAgIHBvbGw6bWU0MDAwX2FpX3BvbGwsCisgICAgICBpb2N0bDptZTQwMDBfYWlfaW9jdGxfZXh0LAorICAgICAgb3BlbjptZTQwMDBfb3BlbiwKKyAgICAgIHJlbGVhc2U6bWU0MDAwX3JlbGVhc2UsCit9OworCitzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtZTQwMDBfYWlfZm9wc19jb250X2V0X2NoYW5saXN0ID0geworICAgICAgb3duZXI6VEhJU19NT0RVTEUsCisgICAgICByZWFkOm1lNDAwMF9haV9yZWFkLAorICAgICAgcG9sbDptZTQwMDBfYWlfcG9sbCwKKyAgICAgIGlvY3RsOm1lNDAwMF9haV9pb2N0bF9leHQsCisgICAgICBvcGVuOm1lNDAwMF9vcGVuLAorICAgICAgcmVsZWFzZTptZTQwMDBfcmVsZWFzZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1lNDAwMF9kaW9fZm9wcyA9IHsKKyAgICAgIG93bmVyOlRISVNfTU9EVUxFLAorICAgICAgaW9jdGw6bWU0MDAwX2Rpb19pb2N0bCwKKyAgICAgIG9wZW46bWU0MDAwX29wZW4sCisgICAgICByZWxlYXNlOm1lNDAwMF9yZWxlYXNlLAorfTsKKworc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbWU0MDAwX2NudF9mb3BzID0geworICAgICAgb3duZXI6VEhJU19NT0RVTEUsCisgICAgICBpb2N0bDptZTQwMDBfY250X2lvY3RsLAorICAgICAgb3BlbjptZTQwMDBfb3BlbiwKKyAgICAgIHJlbGVhc2U6bWU0MDAwX3JlbGVhc2UsCit9OworCitzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtZTQwMDBfZXh0X2ludF9mb3BzID0geworICAgICAgb3duZXI6VEhJU19NT0RVTEUsCisgICAgICBpb2N0bDptZTQwMDBfZXh0X2ludF9pb2N0bCwKKyAgICAgIG9wZW46bWU0MDAwX29wZW4sCisgICAgICByZWxlYXNlOm1lNDAwMF9yZWxlYXNlLAorICAgICAgZmFzeW5jOm1lNDAwMF9leHRfaW50X2Zhc3luYywKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICptZTQwMDBfYW9fZm9wc19hcnJheVtdID0geworCSZtZTQwMDBfYW9fZm9wc19zaW5nLAkvLyBzaW5nbGUgb3BlcmF0aW9ucworCSZtZTQwMDBfYW9fZm9wc193cmFwLAkvLyB3cmFwYXJvdW5kIG9wZXJhdGlvbnMKKwkmbWU0MDAwX2FvX2ZvcHNfY29udCwJLy8gY29udGlub3VzIG9wZXJhdGlvbnMKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICptZTQwMDBfYWlfZm9wc19hcnJheVtdID0geworCSZtZTQwMDBfYWlfZm9wc19zaW5nLAkvLyBzaW5nbGUgb3BlcmF0aW9ucworCSZtZTQwMDBfYWlfZm9wc19jb250X3N3LAkvLyBjb250aW51b3VzIG9wZXJhdGlvbnMgd2l0aCBzb2Z0d2FyZSBzdGFydAorCSZtZTQwMDBfYWlfZm9wc19jb250X2V0LAkvLyBjb250aW5vdXMgb3BlcmF0aW9ucyB3aXRoIGV4dGVybmFsIHRyaWdnZXIKKwkmbWU0MDAwX2FpX2ZvcHNfY29udF9ldF92YWx1ZSwJLy8gc2FtcGxlIHZhbHVlcyBieSBleHRlcm5hbCB0cmlnZ2VyCisJJm1lNDAwMF9haV9mb3BzX2NvbnRfZXRfY2hhbmxpc3QsCS8vIHdvcmsgdGhyb3VnaCBvbmUgY2hhbm5lbCBsaXN0IGJ5IGV4dGVybmFsIHRyaWdnZXIKK307CisKK2ludCBfX2luaXQgbWU0MDAwX2luaXRfbW9kdWxlKHZvaWQpCit7CisJaW50IHJlc3VsdCA9IDA7CisKKwlDQUxMX1BERUJVRygiaW5pdF9tb2R1bGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBSZWdpc3RlciBkcml2ZXIgY2FwYWJpbGl0aWVzICovCisJcmVzdWx0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcigmbWU0MDAwX2RyaXZlcik7CisJUERFQlVHKCJpbml0X21vZHVsZSgpOiVkIGRldmljZXMgZGV0ZWN0ZWRcbiIsIHJlc3VsdCk7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJNRTQwMDA6aW5pdF9tb2R1bGUoKTpDYW4ndCByZWdpc3RlciBkcml2ZXJcbiIpOworCQlnb3RvIElOSVRfRVJST1JfMTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBtYWpvciBudW1iZXIgZm9yIGFuYWxvZyBvdXRwdXQgKi8KKwlyZXN1bHQgPQorCSAgICByZWdpc3Rlcl9jaHJkZXYobWU0MDAwX2FvX21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0FPX05BTUUsCisJCQkgICAgJm1lNDAwMF9hb19mb3BzX3NpbmcpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiTUU0MDAwOmluaXRfbW9kdWxlKCk6Q2FuJ3QgZ2V0IEFPIG1ham9yIG5vXG4iKTsKKwkJZ290byBJTklUX0VSUk9SXzI7CisJfSBlbHNlIHsKKwkJbWU0MDAwX2FvX21ham9yX2RyaXZlcl9ubyA9IHJlc3VsdDsKKwl9CisJUERFQlVHKCJpbml0X21vZHVsZSgpOk1ham9yIGRyaXZlciBudW1iZXIgZm9yIEFPID0gJWxkXG4iLAorCSAgICAgICBtZTQwMDBfYW9fbWFqb3JfZHJpdmVyX25vKTsKKworCS8qIEFsbG9jYXRlIG1ham9yIG51bWJlciBmb3IgYW5hbG9nIGlucHV0ICAqLworCXJlc3VsdCA9CisJICAgIHJlZ2lzdGVyX2NocmRldihtZTQwMDBfYWlfbWFqb3JfZHJpdmVyX25vLCBNRTQwMDBfQUlfTkFNRSwKKwkJCSAgICAmbWU0MDAwX2FpX2ZvcHNfc2luZyk7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJNRTQwMDA6aW5pdF9tb2R1bGUoKTpDYW4ndCBnZXQgQUkgbWFqb3Igbm9cbiIpOworCQlnb3RvIElOSVRfRVJST1JfMzsKKwl9IGVsc2UgeworCQltZTQwMDBfYWlfbWFqb3JfZHJpdmVyX25vID0gcmVzdWx0OworCX0KKwlQREVCVUcoImluaXRfbW9kdWxlKCk6TWFqb3IgZHJpdmVyIG51bWJlciBmb3IgQUkgPSAlbGRcbiIsCisJICAgICAgIG1lNDAwMF9haV9tYWpvcl9kcml2ZXJfbm8pOworCisJLyogQWxsb2NhdGUgbWFqb3IgbnVtYmVyIGZvciBkaWdpdGFsIEkvTyAqLworCXJlc3VsdCA9CisJICAgIHJlZ2lzdGVyX2NocmRldihtZTQwMDBfZGlvX21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0RJT19OQU1FLAorCQkJICAgICZtZTQwMDBfZGlvX2ZvcHMpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDppbml0X21vZHVsZSgpOkNhbid0IGdldCBESU8gbWFqb3Igbm9cbiIpOworCQlnb3RvIElOSVRfRVJST1JfNDsKKwl9IGVsc2UgeworCQltZTQwMDBfZGlvX21ham9yX2RyaXZlcl9ubyA9IHJlc3VsdDsKKwl9CisJUERFQlVHKCJpbml0X21vZHVsZSgpOk1ham9yIGRyaXZlciBudW1iZXIgZm9yIERJTyA9ICVsZFxuIiwKKwkgICAgICAgbWU0MDAwX2Rpb19tYWpvcl9kcml2ZXJfbm8pOworCisJLyogQWxsb2NhdGUgbWFqb3IgbnVtYmVyIGZvciBjb3VudGVyICovCisJcmVzdWx0ID0KKwkgICAgcmVnaXN0ZXJfY2hyZGV2KG1lNDAwMF9jbnRfbWFqb3JfZHJpdmVyX25vLCBNRTQwMDBfQ05UX05BTUUsCisJCQkgICAgJm1lNDAwMF9jbnRfZm9wcyk7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOmluaXRfbW9kdWxlKCk6Q2FuJ3QgZ2V0IENOVCBtYWpvciBub1xuIik7CisJCWdvdG8gSU5JVF9FUlJPUl81OworCX0gZWxzZSB7CisJCW1lNDAwMF9jbnRfbWFqb3JfZHJpdmVyX25vID0gcmVzdWx0OworCX0KKwlQREVCVUcoImluaXRfbW9kdWxlKCk6TWFqb3IgZHJpdmVyIG51bWJlciBmb3IgQ05UID0gJWxkXG4iLAorCSAgICAgICBtZTQwMDBfY250X21ham9yX2RyaXZlcl9ubyk7CisKKwkvKiBBbGxvY2F0ZSBtYWpvciBudW1iZXIgZm9yIGV4dGVybmFsIGludGVycnVwdCAqLworCXJlc3VsdCA9CisJICAgIHJlZ2lzdGVyX2NocmRldihtZTQwMDBfZXh0X2ludF9tYWpvcl9kcml2ZXJfbm8sIE1FNDAwMF9FWFRfSU5UX05BTUUsCisJCQkgICAgJm1lNDAwMF9leHRfaW50X2ZvcHMpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDppbml0X21vZHVsZSgpOkNhbid0IGdldCBtYWpvciBubyBmb3IgZXh0ZXJuYWwgaW50ZXJydXB0XG4iKTsKKwkJZ290byBJTklUX0VSUk9SXzY7CisJfSBlbHNlIHsKKwkJbWU0MDAwX2V4dF9pbnRfbWFqb3JfZHJpdmVyX25vID0gcmVzdWx0OworCX0KKwlQREVCVUcKKwkgICAgKCJpbml0X21vZHVsZSgpOk1ham9yIGRyaXZlciBudW1iZXIgZm9yIGV4dGVybmFsIGludGVycnVwdCA9ICVsZFxuIiwKKwkgICAgIG1lNDAwMF9leHRfaW50X21ham9yX2RyaXZlcl9ubyk7CisKKwkvKiBDcmVhdGUgdGhlIC9wcm9jL21lNDAwMCBlbnRyeSAqLworCWlmICghY3JlYXRlX3Byb2NfcmVhZF9lbnRyeQorCSAgICAoIm1lNDAwMCIsIDAsIE5VTEwsIG1lNDAwMF9yZWFkX3Byb2NtZW0sIE5VTEwpKSB7CisJCXJlc3VsdCA9IC1FTk9ERVY7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDppbml0X21vZHVsZSgpOkNhbid0IGNyZWF0ZSBwcm9jIGVudHJ5XG4iKTsKKwkJZ290byBJTklUX0VSUk9SXzc7CisJfQorCisJcmV0dXJuIDA7CisKKyAgICAgIElOSVRfRVJST1JfNzoKKwl1bnJlZ2lzdGVyX2NocmRldihtZTQwMDBfZXh0X2ludF9tYWpvcl9kcml2ZXJfbm8sIE1FNDAwMF9FWFRfSU5UX05BTUUpOworCisgICAgICBJTklUX0VSUk9SXzY6CisJdW5yZWdpc3Rlcl9jaHJkZXYobWU0MDAwX2NudF9tYWpvcl9kcml2ZXJfbm8sIE1FNDAwMF9DTlRfTkFNRSk7CisKKyAgICAgIElOSVRfRVJST1JfNToKKwl1bnJlZ2lzdGVyX2NocmRldihtZTQwMDBfZGlvX21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0RJT19OQU1FKTsKKworICAgICAgSU5JVF9FUlJPUl80OgorCXVucmVnaXN0ZXJfY2hyZGV2KG1lNDAwMF9haV9tYWpvcl9kcml2ZXJfbm8sIE1FNDAwMF9BSV9OQU1FKTsKKworICAgICAgSU5JVF9FUlJPUl8zOgorCXVucmVnaXN0ZXJfY2hyZGV2KG1lNDAwMF9hb19tYWpvcl9kcml2ZXJfbm8sIE1FNDAwMF9BT19OQU1FKTsKKworICAgICAgSU5JVF9FUlJPUl8yOgorCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmbWU0MDAwX2RyaXZlcik7CisJY2xlYXJfYm9hcmRfaW5mb19saXN0KCk7CisKKyAgICAgIElOSVRfRVJST1JfMToKKwlyZXR1cm4gcmVzdWx0OworfQorCittb2R1bGVfaW5pdChtZTQwMDBfaW5pdF9tb2R1bGUpOworCitzdGF0aWMgdm9pZCBjbGVhcl9ib2FyZF9pbmZvX2xpc3Qodm9pZCkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpib2FyZF9wOworCXN0cnVjdCBsaXN0X2hlYWQgKmRhY19wOworCW1lNDAwMF9pbmZvX3QgKmJvYXJkX2luZm87CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKworCS8qIENsZWFyIGNvbnRleHQgbGlzdHMgKi8KKwlmb3IgKGJvYXJkX3AgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQ7CisJICAgICBib2FyZF9wICE9ICZtZTQwMDBfYm9hcmRfaW5mb19saXN0OyBib2FyZF9wID0gYm9hcmRfcC0+bmV4dCkgeworCQlib2FyZF9pbmZvID0gbGlzdF9lbnRyeShib2FyZF9wLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJLyogQ2xlYXIgYW5hbG9nIG91dHB1dCBjb250ZXh0IGxpc3QgKi8KKwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZib2FyZF9pbmZvLT5hb19jb250ZXh0X2xpc3QpKSB7CisJCQlkYWNfcCA9IGJvYXJkX2luZm8tPmFvX2NvbnRleHRfbGlzdC5uZXh0OworCQkJYW9fY29udGV4dCA9CisJCQkgICAgbGlzdF9lbnRyeShkYWNfcCwgbWU0MDAwX2FvX2NvbnRleHRfdCwgbGlzdCk7CisJCQltZTQwMDBfYW9fcmVzZXQoYW9fY29udGV4dCk7CisJCQlmcmVlX2lycShhb19jb250ZXh0LT5pcnEsIGFvX2NvbnRleHQpOworCQkJaWYgKGFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZikKKwkJCQlrZnJlZShhb19jb250ZXh0LT5jaXJjX2J1Zi5idWYpOworCQkJbGlzdF9kZWwoZGFjX3ApOworCQkJa2ZyZWUoYW9fY29udGV4dCk7CisJCX0KKworCQkvKiBDbGVhciBhbmFsb2cgaW5wdXQgY29udGV4dCAqLworCQlpZiAoYm9hcmRfaW5mby0+YWlfY29udGV4dC0+Y2lyY19idWYuYnVmKQorCQkJa2ZyZWUoYm9hcmRfaW5mby0+YWlfY29udGV4dC0+Y2lyY19idWYuYnVmKTsKKwkJa2ZyZWUoYm9hcmRfaW5mby0+YWlfY29udGV4dCk7CisKKwkJLyogQ2xlYXIgZGlnaXRhbCBJL08gY29udGV4dCAqLworCQlrZnJlZShib2FyZF9pbmZvLT5kaW9fY29udGV4dCk7CisKKwkJLyogQ2xlYXIgY291bnRlciBjb250ZXh0ICovCisJCWtmcmVlKGJvYXJkX2luZm8tPmNudF9jb250ZXh0KTsKKworCQkvKiBDbGVhciBleHRlcm5hbCBpbnRlcnJ1cHQgY29udGV4dCAqLworCQlrZnJlZShib2FyZF9pbmZvLT5leHRfaW50X2NvbnRleHQpOworCX0KKworCS8qIENsZWFyIHRoZSBib2FyZCBpbmZvIGxpc3QgKi8KKwl3aGlsZSAoIWxpc3RfZW1wdHkoJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpKSB7CisJCWJvYXJkX3AgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQ7CisJCWJvYXJkX2luZm8gPSBsaXN0X2VudHJ5KGJvYXJkX3AsIG1lNDAwMF9pbmZvX3QsIGxpc3QpOworCQlwY2lfcmVsZWFzZV9yZWdpb25zKGJvYXJkX2luZm8tPnBjaV9kZXZfcCk7CisJCWxpc3RfZGVsKGJvYXJkX3ApOworCQlrZnJlZShib2FyZF9pbmZvKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgZ2V0X3JlZ2lzdGVycyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBtZTQwMDBfaW5mb190ICogYm9hcmRfaW5mbykKK3sKKworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHBseCByZWdiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKwlib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIDEpOworCWlmIChib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSA9PSAwKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDpnZXRfcmVnaXN0ZXJzKCk6UENJIGJhc2UgYWRkcmVzcyAxIGlzIG5vdCBhdmFpbGFibGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJYm9hcmRfaW5mby0+cGx4X3JlZ2Jhc2Vfc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4oZGV2LCAxKTsKKworCVBERUJVRworCSAgICAoImdldF9yZWdpc3RlcnMoKTpQTFggY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXQgYWRkcmVzcyAweCU0bFggWzB4JTRsWF1cbiIsCisJICAgICBib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSwgYm9hcmRfaW5mby0+cGx4X3JlZ2Jhc2Vfc2l6ZSk7CisKKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtZTQwMDAgcmVnYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisJYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCAyKTsKKwlpZiAoYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2UgPT0gMCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6Z2V0X3JlZ2lzdGVycygpOlBDSSBiYXNlIGFkZHJlc3MgMiBpcyBub3QgYXZhaWxhYmxlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCWJvYXJkX2luZm8tPm1lNDAwMF9yZWdiYXNlX3NpemUgPSBwY2lfcmVzb3VyY2VfbGVuKGRldiwgMik7CisKKwlQREVCVUcoImdldF9yZWdpc3RlcnMoKTpNRTQwMDAgcmVnaXN0ZXJzIGF0IGFkZHJlc3MgMHglNGxYIFsweCU0bFhdXG4iLAorCSAgICAgICBib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZSwgYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2Vfc2l6ZSk7CisKKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0aW1lciByZWdiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKwlib2FyZF9pbmZvLT50aW1lcl9yZWdiYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KGRldiwgMyk7CisJaWYgKGJvYXJkX2luZm8tPnRpbWVyX3JlZ2Jhc2UgPT0gMCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6Z2V0X3JlZ2lzdGVycygpOlBDSSBiYXNlIGFkZHJlc3MgMyBpcyBub3QgYXZhaWxhYmxlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCWJvYXJkX2luZm8tPnRpbWVyX3JlZ2Jhc2Vfc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4oZGV2LCAzKTsKKworCVBERUJVRygiZ2V0X3JlZ2lzdGVycygpOlRpbWVyIHJlZ2lzdGVycyBhdCBhZGRyZXNzIDB4JTRsWCBbMHglNGxYXVxuIiwKKwkgICAgICAgYm9hcmRfaW5mby0+dGltZXJfcmVnYmFzZSwgYm9hcmRfaW5mby0+dGltZXJfcmVnYmFzZV9zaXplKTsKKworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHByb2dyYW0gcmVnYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisJYm9hcmRfaW5mby0+cHJvZ3JhbV9yZWdiYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KGRldiwgNSk7CisJaWYgKGJvYXJkX2luZm8tPnByb2dyYW1fcmVnYmFzZSA9PSAwKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgImdldF9yZWdpc3RlcnMoKTpNRTQwMDA6UENJIGJhc2UgYWRkcmVzcyA1IGlzIG5vdCBhdmFpbGFibGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJYm9hcmRfaW5mby0+cHJvZ3JhbV9yZWdiYXNlX3NpemUgPSBwY2lfcmVzb3VyY2VfbGVuKGRldiwgNSk7CisKKwlQREVCVUcoImdldF9yZWdpc3RlcnMoKTpQcm9ncmFtIHJlZ2lzdGVycyBhdCBhZGRyZXNzIDB4JTRsWCBbMHglNGxYXVxuIiwKKwkgICAgICAgYm9hcmRfaW5mby0+cHJvZ3JhbV9yZWdiYXNlLCBib2FyZF9pbmZvLT5wcm9ncmFtX3JlZ2Jhc2Vfc2l6ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbml0X2JvYXJkX2luZm8oc3RydWN0IHBjaV9kZXYgKnBjaV9kZXZfcCwKKwkJCSAgIG1lNDAwMF9pbmZvX3QgKiBib2FyZF9pbmZvKQoreworCWludCBpOworCWludCByZXN1bHQ7CisJc3RydWN0IGxpc3RfaGVhZCAqYm9hcmRfcDsKKwlib2FyZF9pbmZvLT5wY2lfZGV2X3AgPSBwY2lfZGV2X3A7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUU0MDAwX0JPQVJEX1ZFUlNJT05TOyBpKyspIHsKKwkJaWYgKG1lNDAwMF9ib2FyZHNbaV0uZGV2aWNlX2lkID09IHBjaV9kZXZfcC0+ZGV2aWNlKSB7CisJCQlib2FyZF9pbmZvLT5ib2FyZF9wID0gJm1lNDAwMF9ib2FyZHNbaV07CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoaSA9PSBNRTQwMDBfQk9BUkRfVkVSU0lPTlMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOmluaXRfYm9hcmRfaW5mbygpOkRldmljZSBJRCBub3QgdmFsaWRcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBHZXQgdGhlIGluZGV4IG9mIHRoZSBib2FyZCBpbiB0aGUgZ2xvYmFsIGxpc3QgKi8KKwlmb3IgKGJvYXJkX3AgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQsIGkgPSAwOworCSAgICAgYm9hcmRfcCAhPSAmbWU0MDAwX2JvYXJkX2luZm9fbGlzdDsgYm9hcmRfcCA9IGJvYXJkX3AtPm5leHQsIGkrKykgeworCQlpZiAoYm9hcmRfcCA9PSAmYm9hcmRfaW5mby0+bGlzdCkgeworCQkJYm9hcmRfaW5mby0+Ym9hcmRfY291bnQgPSBpOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGJvYXJkX3AgPT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOmluaXRfYm9hcmRfaW5mbygpOkNhbm5vdCBnZXQgaW5kZXggb2YgYmFvcmRcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBJbml0IGxpc3QgaGVhZCBmb3IgYW5hbG9nIG91dHB1dCBjb250ZXh0cyAqLworCUlOSVRfTElTVF9IRUFEKCZib2FyZF9pbmZvLT5hb19jb250ZXh0X2xpc3QpOworCisJLyogSW5pdCBzcGluIGxvY2tzICovCisJc3Bpbl9sb2NrX2luaXQoJmJvYXJkX2luZm8tPnByZWxvYWRfbG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmJvYXJkX2luZm8tPmFpX2N0cmxfbG9jayk7CisKKwkvKiBHZXQgdGhlIHNlcmlhbCBudW1iZXIgKi8KKwlyZXN1bHQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQocGNpX2Rldl9wLCAweDJDLCAmYm9hcmRfaW5mby0+c2VyaWFsX25vKTsKKwlpZiAocmVzdWx0ICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICAgICAiTUU0MDAwOmluaXRfYm9hcmRfaW5mbzogQ2FuJ3QgZ2V0IHNlcmlhbF9ub1xuIik7CisJCXJldHVybiByZXN1bHQ7CisJfQorCVBERUJVRygiaW5pdF9ib2FyZF9pbmZvKCk6c2VyaWFsX25vID0gMHgleFxuIiwgYm9hcmRfaW5mby0+c2VyaWFsX25vKTsKKworCS8qIEdldCB0aGUgaGFyZHdhcmUgcmV2aXNpb24gKi8KKwlyZXN1bHQgPQorCSAgICBwY2lfcmVhZF9jb25maWdfYnl0ZShwY2lfZGV2X3AsIDB4MDgsICZib2FyZF9pbmZvLT5od19yZXZpc2lvbik7CisJaWYgKHJlc3VsdCAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgIk1FNDAwMDppbml0X2JvYXJkX2luZm8oKTpDYW4ndCBnZXQgaHdfcmV2aXNpb25cbiIpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwlQREVCVUcoImluaXRfYm9hcmRfaW5mbygpOmh3X3JldmlzaW9uID0gMHgleFxuIiwKKwkgICAgICAgYm9hcmRfaW5mby0+aHdfcmV2aXNpb24pOworCisJLyogR2V0IHRoZSB2ZW5kb3IgaWQgKi8KKwlib2FyZF9pbmZvLT52ZW5kb3JfaWQgPSBwY2lfZGV2X3AtPnZlbmRvcjsKKwlQREVCVUcoImluaXRfYm9hcmRfaW5mbygpOnZlbmRvcl9pZCA9IDB4JXhcbiIsIGJvYXJkX2luZm8tPnZlbmRvcl9pZCk7CisKKwkvKiBHZXQgdGhlIGRldmljZSBpZCAqLworCWJvYXJkX2luZm8tPmRldmljZV9pZCA9IHBjaV9kZXZfcC0+ZGV2aWNlOworCVBERUJVRygiaW5pdF9ib2FyZF9pbmZvKCk6ZGV2aWNlX2lkID0gMHgleFxuIiwgYm9hcmRfaW5mby0+ZGV2aWNlX2lkKTsKKworCS8qIEdldCB0aGUgcGNpIGRldmljZSBudW1iZXIgKi8KKwlib2FyZF9pbmZvLT5wY2lfZGV2X25vID0gUENJX0ZVTkMocGNpX2Rldl9wLT5kZXZmbik7CisJUERFQlVHKCJpbml0X2JvYXJkX2luZm8oKTpwY2lfZnVuY19ubyA9IDB4JXhcbiIsCisJICAgICAgIGJvYXJkX2luZm8tPnBjaV9mdW5jX25vKTsKKworCS8qIEdldCB0aGUgcGNpIHNsb3QgbnVtYmVyICovCisJYm9hcmRfaW5mby0+cGNpX2Rldl9ubyA9IFBDSV9TTE9UKHBjaV9kZXZfcC0+ZGV2Zm4pOworCVBERUJVRygiaW5pdF9ib2FyZF9pbmZvKCk6cGNpX2Rldl9ubyA9IDB4JXhcbiIsIGJvYXJkX2luZm8tPnBjaV9kZXZfbm8pOworCisJLyogR2V0IHRoZSBwY2kgYnVzIG51bWJlciAqLworCWJvYXJkX2luZm8tPnBjaV9idXNfbm8gPSBwY2lfZGV2X3AtPmJ1cy0+bnVtYmVyOworCVBERUJVRygiaW5pdF9ib2FyZF9pbmZvKCk6cGNpX2J1c19ubyA9IDB4JXhcbiIsIGJvYXJkX2luZm8tPnBjaV9idXNfbm8pOworCisJLyogR2V0IHRoZSBpcnEgYXNzaWduZWQgdG8gdGhlIGJvYXJkICovCisJYm9hcmRfaW5mby0+aXJxID0gcGNpX2Rldl9wLT5pcnE7CisJUERFQlVHKCJpbml0X2JvYXJkX2luZm8oKTppcnEgPSAlZFxuIiwgYm9hcmRfaW5mby0+aXJxKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFsbG9jX2FvX2NvbnRleHRzKG1lNDAwMF9pbmZvX3QgKiBpbmZvKQoreworCWludCBpOworCWludCBlcnI7CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKworCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5ib2FyZF9wLT5hby5jb3VudDsgaSsrKSB7CisJCWFvX2NvbnRleHQgPSBrbWFsbG9jKHNpemVvZihtZTQwMDBfYW9fY29udGV4dF90KSwgR0ZQX0tFUk5FTCk7CisJCWlmICghYW9fY29udGV4dCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgImFsbG9jX2FvX2NvbnRleHRzKCk6Q2FuJ3QgZ2V0IG1lbW9yeSBmb3IgYW8gY29udGV4dFxuIik7CisJCQlyZWxlYXNlX2FvX2NvbnRleHRzKGluZm8pOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwkJbWVtc2V0KGFvX2NvbnRleHQsIDAsIHNpemVvZihtZTQwMDBfYW9fY29udGV4dF90KSk7CisKKwkJc3Bpbl9sb2NrX2luaXQoJmFvX2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJc3Bpbl9sb2NrX2luaXQoJmFvX2NvbnRleHQtPmludF9sb2NrKTsKKwkJYW9fY29udGV4dC0+aXJxID0gaW5mby0+aXJxOworCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhb19jb250ZXh0LT53YWl0X3F1ZXVlKTsKKwkJYW9fY29udGV4dC0+Ym9hcmRfaW5mbyA9IGluZm87CisKKwkJaWYgKGluZm8tPmJvYXJkX3AtPmFvLmZpZm9fY291bnQpIHsKKwkJCS8qIEFsbG9jYXRlIGNpcmN1bGFyIGJ1ZmZlciAqLworCQkJYW9fY29udGV4dC0+Y2lyY19idWYuYnVmID0KKwkJCSAgICBrbWFsbG9jKE1FNDAwMF9BT19CVUZGRVJfU0laRSwgR0ZQX0tFUk5FTCk7CisJCQlpZiAoIWFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZikgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiYWxsb2NfYW9fY29udGV4dHMoKTpDYW4ndCBnZXQgY2lyY3VsYXIgYnVmZmVyXG4iKTsKKwkJCQlyZWxlYXNlX2FvX2NvbnRleHRzKGluZm8pOworCQkJCXJldHVybiAtRU5PTUVNOworCQkJfQorCQkJbWVtc2V0KGFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiwgMCwKKwkJCSAgICAgICBNRTQwMDBfQU9fQlVGRkVSX1NJWkUpOworCisJCQkvKiBDbGVhciB0aGUgY2lyY3VsYXIgYnVmZmVyICovCisJCQlhb19jb250ZXh0LT5jaXJjX2J1Zi5oZWFkID0gMDsKKwkJCWFvX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCQl9CisKKwkJc3dpdGNoIChpKSB7CisJCWNhc2UgMDoKKwkJCWFvX2NvbnRleHQtPmN0cmxfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMF9DVFJMX1JFRzsKKwkJCWFvX2NvbnRleHQtPnN0YXR1c19yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAwX1NUQVRVU19SRUc7CisJCQlhb19jb250ZXh0LT5maWZvX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDBfRklGT19SRUc7CisJCQlhb19jb250ZXh0LT5zaW5nbGVfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMF9TSU5HTEVfUkVHOworCQkJYW9fY29udGV4dC0+dGltZXJfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMF9USU1FUl9SRUc7CisJCQlhb19jb250ZXh0LT5pcnFfc3RhdHVzX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfSVJRX1NUQVRVU19SRUc7CisJCQlhb19jb250ZXh0LT5wcmVsb2FkX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fTE9BRFNFVFJFR19YWDsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlhb19jb250ZXh0LT5jdHJsX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDFfQ1RSTF9SRUc7CisJCQlhb19jb250ZXh0LT5zdGF0dXNfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMV9TVEFUVVNfUkVHOworCQkJYW9fY29udGV4dC0+Zmlmb19yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAxX0ZJRk9fUkVHOworCQkJYW9fY29udGV4dC0+c2luZ2xlX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDFfU0lOR0xFX1JFRzsKKwkJCWFvX2NvbnRleHQtPnRpbWVyX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDFfVElNRVJfUkVHOworCQkJYW9fY29udGV4dC0+aXJxX3N0YXR1c19yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0lSUV9TVEFUVVNfUkVHOworCQkJYW9fY29udGV4dC0+cHJlbG9hZF9yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPX0xPQURTRVRSRUdfWFg7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJYW9fY29udGV4dC0+Y3RybF9yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAyX0NUUkxfUkVHOworCQkJYW9fY29udGV4dC0+c3RhdHVzX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDJfU1RBVFVTX1JFRzsKKwkJCWFvX2NvbnRleHQtPmZpZm9fcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMl9GSUZPX1JFRzsKKwkJCWFvX2NvbnRleHQtPnNpbmdsZV9yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAyX1NJTkdMRV9SRUc7CisJCQlhb19jb250ZXh0LT50aW1lcl9yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAyX1RJTUVSX1JFRzsKKwkJCWFvX2NvbnRleHQtPmlycV9zdGF0dXNfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9JUlFfU1RBVFVTX1JFRzsKKwkJCWFvX2NvbnRleHQtPnByZWxvYWRfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT19MT0FEU0VUUkVHX1hYOworCQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCWFvX2NvbnRleHQtPmN0cmxfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wM19DVFJMX1JFRzsKKwkJCWFvX2NvbnRleHQtPnN0YXR1c19yZWcgPQorCQkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAzX1NUQVRVU19SRUc7CisJCQlhb19jb250ZXh0LT5maWZvX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDNfRklGT19SRUc7CisJCQlhb19jb250ZXh0LT5zaW5nbGVfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wM19TSU5HTEVfUkVHOworCQkJYW9fY29udGV4dC0+dGltZXJfcmVnID0KKwkJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wM19USU1FUl9SRUc7CisJCQlhb19jb250ZXh0LT5pcnFfc3RhdHVzX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfSVJRX1NUQVRVU19SRUc7CisJCQlhb19jb250ZXh0LT5wcmVsb2FkX3JlZyA9CisJCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fTE9BRFNFVFJFR19YWDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKworCQlpZiAoaW5mby0+Ym9hcmRfcC0+YW8uZmlmb19jb3VudCkgeworCQkJLyogUmVxdWVzdCB0aGUgaW50ZXJydXB0IGxpbmUgKi8KKwkJCWVyciA9CisJCQkgICAgcmVxdWVzdF9pcnEoYW9fY29udGV4dC0+aXJxLCBtZTQwMDBfYW9faXNyLAorCQkJCQlJUlFGX0RJU0FCTEVEIHwgSVJRRl9TSEFSRUQsCisJCQkJCU1FNDAwMF9OQU1FLCBhb19jb250ZXh0KTsKKwkJCWlmIChlcnIpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgImFsbG9jX2FvX2NvbnRleHRzKCk6Q2FuJ3QgZ2V0IGludGVycnVwdCBsaW5lIik7CisJCQkJaWYgKGFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZikKKwkJCQkJa2ZyZWUoYW9fY29udGV4dC0+Y2lyY19idWYuYnVmKTsKKwkJCQlrZnJlZShhb19jb250ZXh0KTsKKwkJCQlyZWxlYXNlX2FvX2NvbnRleHRzKGluZm8pOworCQkJCXJldHVybiAtRU5PREVWOworCQkJfQorCQl9CisKKwkJbGlzdF9hZGRfdGFpbCgmYW9fY29udGV4dC0+bGlzdCwgJmluZm8tPmFvX2NvbnRleHRfbGlzdCk7CisJCWFvX2NvbnRleHQtPmluZGV4ID0gaTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZV9hb19jb250ZXh0cyhtZTQwMDBfaW5mb190ICogYm9hcmRfaW5mbykKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpkYWNfcDsKKwltZTQwMDBfYW9fY29udGV4dF90ICphb19jb250ZXh0OworCisJLyogQ2xlYXIgYW5hbG9nIG91dHB1dCBjb250ZXh0IGxpc3QgKi8KKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmJvYXJkX2luZm8tPmFvX2NvbnRleHRfbGlzdCkpIHsKKwkJZGFjX3AgPSBib2FyZF9pbmZvLT5hb19jb250ZXh0X2xpc3QubmV4dDsKKwkJYW9fY29udGV4dCA9IGxpc3RfZW50cnkoZGFjX3AsIG1lNDAwMF9hb19jb250ZXh0X3QsIGxpc3QpOworCQlmcmVlX2lycShhb19jb250ZXh0LT5pcnEsIGFvX2NvbnRleHQpOworCQlpZiAoYW9fY29udGV4dC0+Y2lyY19idWYuYnVmKQorCQkJa2ZyZWUoYW9fY29udGV4dC0+Y2lyY19idWYuYnVmKTsKKwkJbGlzdF9kZWwoZGFjX3ApOworCQlrZnJlZShhb19jb250ZXh0KTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgYWxsb2NfYWlfY29udGV4dChtZTQwMDBfaW5mb190ICogaW5mbykKK3sKKwltZTQwMDBfYWlfY29udGV4dF90ICphaV9jb250ZXh0OworCisJaWYgKGluZm8tPmJvYXJkX3AtPmFpLmNvdW50KSB7CisJCWFpX2NvbnRleHQgPSBrbWFsbG9jKHNpemVvZihtZTQwMDBfYWlfY29udGV4dF90KSwgR0ZQX0tFUk5FTCk7CisJCWlmICghYWlfY29udGV4dCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDphbGxvY19haV9jb250ZXh0KCk6Q2FuJ3QgZ2V0IG1lbW9yeSBmb3IgYWkgY29udGV4dFxuIik7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQltZW1zZXQoYWlfY29udGV4dCwgMCwgc2l6ZW9mKG1lNDAwMF9haV9jb250ZXh0X3QpKTsKKworCQlpbmZvLT5haV9jb250ZXh0ID0gYWlfY29udGV4dDsKKworCQlzcGluX2xvY2tfaW5pdCgmYWlfY29udGV4dC0+dXNlX2xvY2spOworCQlzcGluX2xvY2tfaW5pdCgmYWlfY29udGV4dC0+aW50X2xvY2spOworCQlhaV9jb250ZXh0LT5udW1iZXIgPSAwOworCQlhaV9jb250ZXh0LT5pcnEgPSBpbmZvLT5pcnE7CisJCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmFpX2NvbnRleHQtPndhaXRfcXVldWUpOworCQlhaV9jb250ZXh0LT5ib2FyZF9pbmZvID0gaW5mbzsKKworCQlhaV9jb250ZXh0LT5jdHJsX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BSV9DVFJMX1JFRzsKKwkJYWlfY29udGV4dC0+c3RhdHVzX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BSV9TVEFUVVNfUkVHOworCQlhaV9jb250ZXh0LT5jaGFubmVsX2xpc3RfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX0NIQU5ORUxfTElTVF9SRUc7CisJCWFpX2NvbnRleHQtPmRhdGFfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX0RBVEFfUkVHOworCQlhaV9jb250ZXh0LT5jaGFuX3RpbWVyX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BSV9DSEFOX1RJTUVSX1JFRzsKKwkJYWlfY29udGV4dC0+Y2hhbl9wcmVfdGltZXJfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX0NIQU5fUFJFX1RJTUVSX1JFRzsKKwkJYWlfY29udGV4dC0+c2Nhbl90aW1lcl9sb3dfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX1NDQU5fVElNRVJfTE9XX1JFRzsKKwkJYWlfY29udGV4dC0+c2Nhbl90aW1lcl9oaWdoX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BSV9TQ0FOX1RJTUVSX0hJR0hfUkVHOworCQlhaV9jb250ZXh0LT5zY2FuX3ByZV90aW1lcl9sb3dfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX1NDQU5fUFJFX1RJTUVSX0xPV19SRUc7CisJCWFpX2NvbnRleHQtPnNjYW5fcHJlX3RpbWVyX2hpZ2hfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX1NDQU5fUFJFX1RJTUVSX0hJR0hfUkVHOworCQlhaV9jb250ZXh0LT5zdGFydF9yZWcgPQorCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQUlfU1RBUlRfUkVHOworCQlhaV9jb250ZXh0LT5pcnFfc3RhdHVzX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9JUlFfU1RBVFVTX1JFRzsKKwkJYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXJfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX1NBTVBMRV9DT1VOVEVSX1JFRzsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbGxvY19kaW9fY29udGV4dChtZTQwMDBfaW5mb190ICogaW5mbykKK3sKKwltZTQwMDBfZGlvX2NvbnRleHRfdCAqZGlvX2NvbnRleHQ7CisKKwlpZiAoaW5mby0+Ym9hcmRfcC0+ZGlvLmNvdW50KSB7CisJCWRpb19jb250ZXh0ID0ga21hbGxvYyhzaXplb2YobWU0MDAwX2Rpb19jb250ZXh0X3QpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFkaW9fY29udGV4dCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDphbGxvY19kaW9fY29udGV4dCgpOkNhbid0IGdldCBtZW1vcnkgZm9yIGRpbyBjb250ZXh0XG4iKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCW1lbXNldChkaW9fY29udGV4dCwgMCwgc2l6ZW9mKG1lNDAwMF9kaW9fY29udGV4dF90KSk7CisKKwkJaW5mby0+ZGlvX2NvbnRleHQgPSBkaW9fY29udGV4dDsKKworCQlzcGluX2xvY2tfaW5pdCgmZGlvX2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJZGlvX2NvbnRleHQtPmJvYXJkX2luZm8gPSBpbmZvOworCisJCWRpb19jb250ZXh0LT5kaW9fY291bnQgPSBpbmZvLT5ib2FyZF9wLT5kaW8uY291bnQ7CisKKwkJZGlvX2NvbnRleHQtPmRpcl9yZWcgPQorCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfRElPX0RJUl9SRUc7CisJCWRpb19jb250ZXh0LT5jdHJsX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9ESU9fQ1RSTF9SRUc7CisJCWRpb19jb250ZXh0LT5wb3J0XzBfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0RJT19QT1JUXzBfUkVHOworCQlkaW9fY29udGV4dC0+cG9ydF8xX3JlZyA9CisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9ESU9fUE9SVF8xX1JFRzsKKwkJZGlvX2NvbnRleHQtPnBvcnRfMl9yZWcgPQorCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfRElPX1BPUlRfMl9SRUc7CisJCWRpb19jb250ZXh0LT5wb3J0XzNfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0RJT19QT1JUXzNfUkVHOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFsbG9jX2NudF9jb250ZXh0KG1lNDAwMF9pbmZvX3QgKiBpbmZvKQoreworCW1lNDAwMF9jbnRfY29udGV4dF90ICpjbnRfY29udGV4dDsKKworCWlmIChpbmZvLT5ib2FyZF9wLT5jbnQuY291bnQpIHsKKwkJY250X2NvbnRleHQgPSBrbWFsbG9jKHNpemVvZihtZTQwMDBfY250X2NvbnRleHRfdCksIEdGUF9LRVJORUwpOworCQlpZiAoIWNudF9jb250ZXh0KSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOmFsbG9jX2NudF9jb250ZXh0KCk6Q2FuJ3QgZ2V0IG1lbW9yeSBmb3IgY250IGNvbnRleHRcbiIpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwkJbWVtc2V0KGNudF9jb250ZXh0LCAwLCBzaXplb2YobWU0MDAwX2NudF9jb250ZXh0X3QpKTsKKworCQlpbmZvLT5jbnRfY29udGV4dCA9IGNudF9jb250ZXh0OworCisJCXNwaW5fbG9ja19pbml0KCZjbnRfY29udGV4dC0+dXNlX2xvY2spOworCQljbnRfY29udGV4dC0+Ym9hcmRfaW5mbyA9IGluZm87CisKKwkJY250X2NvbnRleHQtPmN0cmxfcmVnID0KKwkJICAgIGluZm8tPnRpbWVyX3JlZ2Jhc2UgKyBNRTQwMDBfQ05UX0NUUkxfUkVHOworCQljbnRfY29udGV4dC0+Y291bnRlcl8wX3JlZyA9CisJCSAgICBpbmZvLT50aW1lcl9yZWdiYXNlICsgTUU0MDAwX0NOVF9DT1VOVEVSXzBfUkVHOworCQljbnRfY29udGV4dC0+Y291bnRlcl8xX3JlZyA9CisJCSAgICBpbmZvLT50aW1lcl9yZWdiYXNlICsgTUU0MDAwX0NOVF9DT1VOVEVSXzFfUkVHOworCQljbnRfY29udGV4dC0+Y291bnRlcl8yX3JlZyA9CisJCSAgICBpbmZvLT50aW1lcl9yZWdiYXNlICsgTUU0MDAwX0NOVF9DT1VOVEVSXzJfUkVHOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFsbG9jX2V4dF9pbnRfY29udGV4dChtZTQwMDBfaW5mb190ICogaW5mbykKK3sKKwltZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKmV4dF9pbnRfY29udGV4dDsKKworCWlmIChpbmZvLT5ib2FyZF9wLT5jbnQuY291bnQpIHsKKwkJZXh0X2ludF9jb250ZXh0ID0KKwkJICAgIGttYWxsb2Moc2l6ZW9mKG1lNDAwMF9leHRfaW50X2NvbnRleHRfdCksIEdGUF9LRVJORUwpOworCQlpZiAoIWV4dF9pbnRfY29udGV4dCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDphbGxvY19leHRfaW50X2NvbnRleHQoKTpDYW4ndCBnZXQgbWVtb3J5IGZvciBjbnQgY29udGV4dFxuIik7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQltZW1zZXQoZXh0X2ludF9jb250ZXh0LCAwLCBzaXplb2YobWU0MDAwX2V4dF9pbnRfY29udGV4dF90KSk7CisKKwkJaW5mby0+ZXh0X2ludF9jb250ZXh0ID0gZXh0X2ludF9jb250ZXh0OworCisJCXNwaW5fbG9ja19pbml0KCZleHRfaW50X2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJZXh0X2ludF9jb250ZXh0LT5ib2FyZF9pbmZvID0gaW5mbzsKKworCQlleHRfaW50X2NvbnRleHQtPmZhc3luY19wdHIgPSBOVUxMOworCQlleHRfaW50X2NvbnRleHQtPmlycSA9IGluZm8tPmlycTsKKworCQlleHRfaW50X2NvbnRleHQtPmN0cmxfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX0NUUkxfUkVHOworCQlleHRfaW50X2NvbnRleHQtPmlycV9zdGF0dXNfcmVnID0KKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0lSUV9TVEFUVVNfUkVHOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCit7CisJaW50IHJlc3VsdCA9IDA7CisJbWU0MDAwX2luZm9fdCAqYm9hcmRfaW5mbzsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfcHJvYmUoKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIGJvYXJkIGNvbnRleHQgKi8KKwlib2FyZF9pbmZvID0ga21hbGxvYyhzaXplb2YobWU0MDAwX2luZm9fdCksIEdGUF9LRVJORUwpOworCWlmICghYm9hcmRfaW5mbykgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6Q2FuJ3QgZ2V0IG1lbW9yeSBmb3IgYm9hcmQgaW5mbyBzdHJ1Y3R1cmVcbiIpOworCQlyZXN1bHQgPSAtRU5PTUVNOworCQlnb3RvIFBST0JFX0VSUk9SXzE7CisJfQorCW1lbXNldChib2FyZF9pbmZvLCAwLCBzaXplb2YobWU0MDAwX2luZm9fdCkpOworCisJLyogQWRkIHRvIGdsb2JhbCBsaW5rZWQgbGlzdCAqLworCWxpc3RfYWRkX3RhaWwoJmJvYXJkX2luZm8tPmxpc3QsICZtZTQwMDBfYm9hcmRfaW5mb19saXN0KTsKKworCS8qIEdldCB0aGUgUENJIGJhc2UgcmVnaXN0ZXJzICovCisJcmVzdWx0ID0gZ2V0X3JlZ2lzdGVycyhkZXYsIGJvYXJkX2luZm8pOworCWlmIChyZXN1bHQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfcHJvYmUoKTpDYW5ub3QgZ2V0IHJlZ2lzdGVyc1xuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfMjsKKwl9CisKKwkvKiBFbmFibGUgdGhlIGRldmljZSAqLworCXJlc3VsdCA9IHBjaV9lbmFibGVfZGV2aWNlKGRldik7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfcHJvYmUoKTpDYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2VcbiIpOworCQlnb3RvIFBST0JFX0VSUk9SXzI7CisJfQorCisJLyogUmVxdWVzdCB0aGUgUENJIHJlZ2lzdGVyIHJlZ2lvbnMgKi8KKwlyZXN1bHQgPSBwY2lfcmVxdWVzdF9yZWdpb25zKGRldiwgTUU0MDAwX05BTUUpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX3Byb2JlKCk6Q2Fubm90IHJlcXVlc3QgSS9PIHJlZ2lvbnNcbiIpOworCQlnb3RvIFBST0JFX0VSUk9SXzI7CisJfQorCisJLyogSW5pdGlhbGl6ZSBib2FyZCBpbmZvICovCisJcmVzdWx0ID0gaW5pdF9ib2FyZF9pbmZvKGRldiwgYm9hcmRfaW5mbyk7CisJaWYgKHJlc3VsdCkgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9wcm9iZSgpOkNhbm5vdCBpbml0IGJhb3JkIGluZm9cbiIpOworCQlnb3RvIFBST0JFX0VSUk9SXzM7CisJfQorCisJLyogRG93bmxvYWQgdGhlIHhpbGlueCBmaXJtd2FyZSAqLworCXJlc3VsdCA9IG1lNDAwMF94aWxpbnhfZG93bmxvYWQoYm9hcmRfaW5mbyk7CisJaWYgKHJlc3VsdCkgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9wcm9iZTpDYW4ndCBkb3dubG9hZCBmaXJtd2FyZVxuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfMzsKKwl9CisKKwkvKiBNYWtlIGEgaGFyZHdhcmUgcmVzZXQgKi8KKwlyZXN1bHQgPSBtZTQwMDBfcmVzZXRfYm9hcmQoYm9hcmRfaW5mbyk7CisJaWYgKHJlc3VsdCkgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9wcm9iZTpDYW4ndCByZXNldCBib2FyZFxuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfMzsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhbmFsb2cgb3V0cHV0IGNvbnRleHQgc3RydWN0dXJlcyAqLworCXJlc3VsdCA9IGFsbG9jX2FvX2NvbnRleHRzKGJvYXJkX2luZm8pOworCWlmIChyZXN1bHQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfcHJvYmUoKTpDYW5ub3QgYWxsb2NhdGUgYW8gY29udGV4dHNcbiIpOworCQlnb3RvIFBST0JFX0VSUk9SXzM7CisJfQorCisJLyogQWxsb2NhdGUgYW5hbG9nIGlucHV0IGNvbnRleHQgKi8KKwlyZXN1bHQgPSBhbGxvY19haV9jb250ZXh0KGJvYXJkX2luZm8pOworCWlmIChyZXN1bHQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfcHJvYmUoKTpDYW5ub3QgYWxsb2NhdGUgYWkgY29udGV4dFxuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfNDsKKwl9CisKKwkvKiBBbGxvY2F0ZSBkaWdpdGFsIEkvTyBjb250ZXh0ICovCisJcmVzdWx0ID0gYWxsb2NfZGlvX2NvbnRleHQoYm9hcmRfaW5mbyk7CisJaWYgKHJlc3VsdCkgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9wcm9iZSgpOkNhbm5vdCBhbGxvY2F0ZSBkaW8gY29udGV4dFxuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfNTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBjb3VudGVyIGNvbnRleHQgKi8KKwlyZXN1bHQgPSBhbGxvY19jbnRfY29udGV4dChib2FyZF9pbmZvKTsKKwlpZiAocmVzdWx0KSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX3Byb2JlKCk6Q2Fubm90IGFsbG9jYXRlIGNudCBjb250ZXh0XG4iKTsKKwkJZ290byBQUk9CRV9FUlJPUl82OworCX0KKworCS8qIEFsbG9jYXRlIGV4dGVybmFsIGludGVycnVwdCBjb250ZXh0ICovCisJcmVzdWx0ID0gYWxsb2NfZXh0X2ludF9jb250ZXh0KGJvYXJkX2luZm8pOworCWlmIChyZXN1bHQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX3Byb2JlKCk6Q2Fubm90IGFsbG9jYXRlIGV4dF9pbnQgY29udGV4dFxuIik7CisJCWdvdG8gUFJPQkVfRVJST1JfNzsKKwl9CisKKwlyZXR1cm4gMDsKKworICAgICAgUFJPQkVfRVJST1JfNzoKKwlrZnJlZShib2FyZF9pbmZvLT5jbnRfY29udGV4dCk7CisKKyAgICAgIFBST0JFX0VSUk9SXzY6CisJa2ZyZWUoYm9hcmRfaW5mby0+ZGlvX2NvbnRleHQpOworCisgICAgICBQUk9CRV9FUlJPUl81OgorCWtmcmVlKGJvYXJkX2luZm8tPmFpX2NvbnRleHQpOworCisgICAgICBQUk9CRV9FUlJPUl80OgorCXJlbGVhc2VfYW9fY29udGV4dHMoYm9hcmRfaW5mbyk7CisKKyAgICAgIFBST0JFX0VSUk9SXzM6CisJcGNpX3JlbGVhc2VfcmVnaW9ucyhkZXYpOworCisgICAgICBQUk9CRV9FUlJPUl8yOgorCWxpc3RfZGVsKCZib2FyZF9pbmZvLT5saXN0KTsKKwlrZnJlZShib2FyZF9pbmZvKTsKKworICAgICAgUFJPQkVfRVJST1JfMToKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50IG1lNDAwMF94aWxpbnhfZG93bmxvYWQobWU0MDAwX2luZm9fdCAqIGluZm8pCit7CisJaW50IHNpemUgPSAwOworCXUzMiB2YWx1ZSA9IDA7CisJaW50IGlkeCA9IDA7CisJdW5zaWduZWQgY2hhciAqZmlybTsKKwl3YWl0X3F1ZXVlX2hlYWRfdCBxdWV1ZTsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfeGlsaW54X2Rvd25sb2FkKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJZmlybSA9IChpbmZvLT5kZXZpY2VfaWQgPT0gMHg0NjEwKSA/IHhpbGlueF9maXJtXzQ2MTAgOiB4aWxpbnhfZmlybTsKKworCS8qCisJICogU2V0IFBMWCBsb2NhbCBpbnRlcnJ1cHQgMiBwb2xhcml0eSB0byBoaWdoLgorCSAqIEludGVycnVwdCBpcyB0aHJvd24gYnkgaW5pdCBwaW4gb2YgeGlsaW54LgorCSAqLworCW91dGwoMHgxMCwgaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSU5UQ1NSKTsKKworCS8qIFNldCAvQ1MgYW5kIC9XUklURSBvZiB0aGUgWGlsaW54ICovCisJdmFsdWUgPSBpbmwoaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwl2YWx1ZSB8PSAweDEwMDsKKwlvdXRsKHZhbHVlLCBpbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCisJLyogSW5pdCBYaWxpbnggd2l0aCBDUzEgKi8KKwlpbmIoaW5mby0+cHJvZ3JhbV9yZWdiYXNlICsgMHhDOCk7CisKKwkvKiBXYWl0IHVudGlsIC9JTklUIHBpbiBpcyBzZXQgKi8KKwl1ZGVsYXkoMjApOworCWlmICghaW5sKGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lOVENTUikgJiAweDIwKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX3hpbGlueF9kb3dubG9hZCgpOkNhbid0IGluaXQgWGlsaW54XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogUmVzZXQgL0NTIGFuZCAvV1JJVEUgb2YgdGhlIFhpbGlueCAqLworCXZhbHVlID0gaW5sKGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJdmFsdWUgJj0gfjB4MTAwOworCW91dGwodmFsdWUsIGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisKKwkvKiBEb3dubG9hZCBYaWxpbnggZmlybXdhcmUgKi8KKwlzaXplID0gKGZpcm1bMF0gPDwgMjQpICsgKGZpcm1bMV0gPDwgMTYpICsgKGZpcm1bMl0gPDwgOCkgKyBmaXJtWzNdOworCXVkZWxheSgxMCk7CisKKwlmb3IgKGlkeCA9IDA7IGlkeCA8IHNpemU7IGlkeCsrKSB7CisJCW91dGIoZmlybVsxNiArIGlkeF0sIGluZm8tPnByb2dyYW1fcmVnYmFzZSk7CisKKwkJdWRlbGF5KDEwKTsKKworCQkvKiBDaGVjayBpZiBCVVNZIGZsYWcgaXMgbG93ICovCisJCWlmIChpbmwoaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKSAmIDB4MjApIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJtZTQwMDBfeGlsaW54X2Rvd25sb2FkKCk6WGlsaW54IGlzIHN0aWxsIGJ1c3kgKGlkeCA9ICVkKVxuIiwKKwkJCSAgICAgICBpZHgpOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwl9CisKKwlQREVCVUcoIm1lNDAwMF94aWxpbnhfZG93bmxvYWQoKTolZCBieXRlcyB3cml0dGVuXG4iLCBpZHgpOworCisJLyogSWYgZG9uZSBmbGFnIGlzIGhpZ2ggZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwgKi8KKwlpZiAoaW5sKGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUikgJiAweDQpIHsKKwkJUERFQlVHKCJtZTQwMDBfeGlsaW54X2Rvd25sb2FkKCk6RG9uZSBmbGFnIGlzIHNldFxuIik7CisJCVBERUJVRygibWU0MDAwX3hpbGlueF9kb3dubG9hZCgpOkRvd25sb2FkIHdhcyBzdWNjZXNzZnVsXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX3hpbGlueF9kb3dubG9hZCgpOkRPTkUgZmxhZyBpcyBub3Qgc2V0XG4iKTsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF94aWxpbnhfZG93bmxvYWQoKTpEb3dubG9hZCBub3Qgc3VjY2VzZnVsXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogU2V0IC9DUyBhbmQgL1dSSVRFICovCisJdmFsdWUgPSBpbmwoaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwl2YWx1ZSB8PSAweDEwMDsKKwlvdXRsKHZhbHVlLCBpbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX3Jlc2V0X2JvYXJkKG1lNDAwMF9pbmZvX3QgKiBpbmZvKQoreworCXVuc2lnbmVkIGxvbmcgaWNyOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9yZXNldF9ib2FyZCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIE1ha2UgYSBoYXJkd2FyZSByZXNldCAqLworCWljciA9IG1lNDAwMF9pbmwoaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwlpY3IgfD0gMHg0MDAwMDAwMDsKKwltZTQwMDBfb3V0bChpY3IsIGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJaWNyICY9IH4weDQwMDAwMDAwOworCW1lNDAwMF9vdXRsKGljciwgaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKworCS8qIFNldCBib3RoIHN0b3AgYml0cyBpbiB0aGUgYW5hbG9nIGlucHV0IGNvbnRyb2wgcmVnaXN0ZXIgKi8KKwltZTQwMDBfb3V0bChNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1AgfCBNRTQwMDBfQUlfQ1RSTF9CSVRfU1RPUCwKKwkJICAgIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FJX0NUUkxfUkVHKTsKKworCS8qIFNldCBib3RoIHN0b3AgYml0cyBpbiB0aGUgYW5hbG9nIG91dHB1dCBjb250cm9sIHJlZ2lzdGVyICovCisJbWU0MDAwX291dGwoTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AsCisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMF9DVFJMX1JFRyk7CisJbWU0MDAwX291dGwoTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AsCisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMV9DVFJMX1JFRyk7CisJbWU0MDAwX291dGwoTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AsCisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMl9DVFJMX1JFRyk7CisJbWU0MDAwX291dGwoTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AsCisJCSAgICBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wM19DVFJMX1JFRyk7CisKKwkvKiAweDgwMDAgdG8gdGhlIERBQ3MgbWVhbnMgYW4gb3V0cHV0IHZvbHRhZ2Ugb2YgMFYgKi8KKwltZTQwMDBfb3V0bCgweDgwMDAsIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAwX1NJTkdMRV9SRUcpOworCW1lNDAwMF9vdXRsKDB4ODAwMCwgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fMDFfU0lOR0xFX1JFRyk7CisJbWU0MDAwX291dGwoMHg4MDAwLCBpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9BT18wMl9TSU5HTEVfUkVHKTsKKwltZTQwMDBfb3V0bCgweDgwMDAsIGluZm8tPm1lNDAwMF9yZWdiYXNlICsgTUU0MDAwX0FPXzAzX1NJTkdMRV9SRUcpOworCisJLyogRW5hYmxlIGludGVycnVwdHMgb24gdGhlIFBMWCAqLworCW1lNDAwMF9vdXRsKDB4NDMsIGluZm8tPnBseF9yZWdiYXNlICsgUExYX0lOVENTUik7CisKKwkvKiBTZXQgdGhlIGFkdXN0bWVudCByZWdpc3RlciBmb3IgQU8gZGVtdXggKi8KKwltZTQwMDBfb3V0bChNRTQwMDBfQU9fREVNVVhfQURKVVNUX1ZBTFVFLAorCQkgICAgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfQU9fREVNVVhfQURKVVNUX1JFRyk7CisKKwkvKiBTZXQgZGlnaXRhbCBJL08gZGlyZWN0aW9uIGZvciBwb3J0IDAgdG8gb3V0cHV0IG9uIGlzb2xhdGVkIHZlcnNpb25zICovCisJaWYgKCEobWU0MDAwX2lubChpbmZvLT5tZTQwMDBfcmVnYmFzZSArIE1FNDAwMF9ESU9fRElSX1JFRykgJiAweDEpKSB7CisJCW1lNDAwMF9vdXRsKDB4MSwgaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKyBNRTQwMDBfRElPX0NUUkxfUkVHKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlX3AsIHN0cnVjdCBmaWxlICpmaWxlX3ApCit7CisJaW50IGJvYXJkLCBkZXYsIG1vZGU7CisJaW50IGVyciA9IDA7CisJaW50IGk7CisJc3RydWN0IGxpc3RfaGVhZCAqcHRyOworCW1lNDAwMF9pbmZvX3QgKmJvYXJkX2luZm8gPSBOVUxMOworCW1lNDAwMF9hb19jb250ZXh0X3QgKmFvX2NvbnRleHQgPSBOVUxMOworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQgPSBOVUxMOworCW1lNDAwMF9kaW9fY29udGV4dF90ICpkaW9fY29udGV4dCA9IE5VTEw7CisJbWU0MDAwX2NudF9jb250ZXh0X3QgKmNudF9jb250ZXh0ID0gTlVMTDsKKwltZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKmV4dF9pbnRfY29udGV4dCA9IE5VTEw7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX29wZW4oKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBBbmFsb2cgb3V0cHV0ICovCisJaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2FvX21ham9yX2RyaXZlcl9ubykgeworCQlib2FyZCA9IEFPX0JPQVJEKGlub2RlX3AtPmlfcmRldik7CisJCWRldiA9IEFPX1BPUlQoaW5vZGVfcC0+aV9yZGV2KTsKKwkJbW9kZSA9IEFPX01PREUoaW5vZGVfcC0+aV9yZGV2KTsKKworCQlQREVCVUcoIm1lNDAwMF9vcGVuKCk6Ym9hcmQgPSAlZCBhbyA9ICVkIG1vZGUgPSAlZFxuIiwgYm9hcmQsCisJCSAgICAgICBkZXYsIG1vZGUpOworCisJCS8qIFNlYXJjaCBmb3IgdGhlIGJvYXJkIGNvbnRleHQgKi8KKwkJZm9yIChwdHIgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQsIGkgPSAwOworCQkgICAgIHB0ciAhPSAmbWU0MDAwX2JvYXJkX2luZm9fbGlzdDsgcHRyID0gcHRyLT5uZXh0LCBpKyspIHsKKwkJCWJvYXJkX2luZm8gPSBsaXN0X2VudHJ5KHB0ciwgbWU0MDAwX2luZm9fdCwgbGlzdCk7CisJCQlpZiAoaSA9PSBib2FyZCkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChwdHIgPT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpCb2FyZCAlZCBub3QgaW4gZGV2aWNlIGxpc3RcbiIsCisJCQkgICAgICAgYm9hcmQpOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvKiBTZWFyY2ggZm9yIHRoZSBkYWMgY29udGV4dCAqLworCQlmb3IgKHB0ciA9IGJvYXJkX2luZm8tPmFvX2NvbnRleHRfbGlzdC5uZXh0LCBpID0gMDsKKwkJICAgICBwdHIgIT0gJmJvYXJkX2luZm8tPmFvX2NvbnRleHRfbGlzdDsKKwkJICAgICBwdHIgPSBwdHItPm5leHQsIGkrKykgeworCQkJYW9fY29udGV4dCA9IGxpc3RfZW50cnkocHRyLCBtZTQwMDBfYW9fY29udGV4dF90LCBsaXN0KTsKKwkJCWlmIChpID09IGRldikKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChwdHIgPT0gJmJvYXJkX2luZm8tPmFvX2NvbnRleHRfbGlzdCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkRldmljZSAlZCBub3QgaW4gZGV2aWNlIGxpc3RcbiIsCisJCQkgICAgICAgZGV2KTsKKwkJCXJldHVybiAtRU5PREVWOworCQl9CisKKwkJLyogQ2hlY2sgaWYgbW9kZSBpcyB2YWxpZCAqLworCQlpZiAobW9kZSA+IDIpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpNb2RlIGlzIG5vdCB2YWxpZFxuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCisJCS8qIENoZWNrIGlmIG1vZGUgaXMgdmFsaWQgZm9yIHRoaXMgQU8gKi8KKwkJaWYgKChtb2RlICE9IE1FNDAwMF9BT19DT05WX01PREVfU0lOR0xFKQorCQkgICAgJiYgKGRldiA+PSBib2FyZF9pbmZvLT5ib2FyZF9wLT5hby5maWZvX2NvdW50KSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkFPICVkIG9ubHkgaW4gc2luZ2xlIG1vZGUgYXZhaWxhYmxlXG4iLAorCQkJICAgICAgIGRldik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCisJCS8qIENoZWNrIGlmIGFscmVhZHkgb3BlbmVkICovCisJCXNwaW5fbG9jaygmYW9fY29udGV4dC0+dXNlX2xvY2spOworCQlpZiAoYW9fY29udGV4dC0+ZGFjX2luX3VzZSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkFPICVkIGFscmVhZHkgaW4gdXNlXG4iLAorCQkJICAgICAgIGRldik7CisJCQlzcGluX3VubG9jaygmYW9fY29udGV4dC0+dXNlX2xvY2spOworCQkJcmV0dXJuIC1FQlVTWTsKKwkJfQorCQlhb19jb250ZXh0LT5kYWNfaW5fdXNlID0gMTsKKwkJc3Bpbl91bmxvY2soJmFvX2NvbnRleHQtPnVzZV9sb2NrKTsKKworCQlhb19jb250ZXh0LT5tb2RlID0gbW9kZTsKKworCQkvKiBIb2xkIHRoZSBjb250ZXh0IGluIHByaXZhdGUgZGF0YSAqLworCQlmaWxlX3AtPnByaXZhdGVfZGF0YSA9IGFvX2NvbnRleHQ7CisKKwkJLyogU2V0IGZpbGUgb3BlcmF0aW9ucyBwb2ludGVyICovCisJCWZpbGVfcC0+Zl9vcCA9IG1lNDAwMF9hb19mb3BzX2FycmF5W21vZGVdOworCisJCWVyciA9IG1lNDAwMF9hb19wcmVwYXJlKGFvX2NvbnRleHQpOworCQlpZiAoZXJyKSB7CisJCQlhb19jb250ZXh0LT5kYWNfaW5fdXNlID0gMDsKKwkJCXJldHVybiAxOworCQl9CisJfQorCS8qIEFuYWxvZyBpbnB1dCAqLworCWVsc2UgaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2FpX21ham9yX2RyaXZlcl9ubykgeworCQlib2FyZCA9IEFJX0JPQVJEKGlub2RlX3AtPmlfcmRldik7CisJCW1vZGUgPSBBSV9NT0RFKGlub2RlX3AtPmlfcmRldik7CisKKwkJUERFQlVHKCJtZTQwMDBfb3BlbigpOmFpIGJvYXJkID0gJWQgbW9kZSA9ICVkXG4iLCBib2FyZCwgbW9kZSk7CisKKwkJLyogU2VhcmNoIGZvciB0aGUgYm9hcmQgY29udGV4dCAqLworCQlmb3IgKHB0ciA9IG1lNDAwMF9ib2FyZF9pbmZvX2xpc3QubmV4dCwgaSA9IDA7CisJCSAgICAgcHRyICE9ICZtZTQwMDBfYm9hcmRfaW5mb19saXN0OyBwdHIgPSBwdHItPm5leHQsIGkrKykgeworCQkJYm9hcmRfaW5mbyA9IGxpc3RfZW50cnkocHRyLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJCWlmIChpID09IGJvYXJkKQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKHB0ciA9PSAmbWU0MDAwX2JvYXJkX2luZm9fbGlzdCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkJvYXJkICVkIG5vdCBpbiBkZXZpY2UgbGlzdFxuIiwKKwkJCSAgICAgICBib2FyZCk7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCisJCWFpX2NvbnRleHQgPSBib2FyZF9pbmZvLT5haV9jb250ZXh0OworCisJCS8qIENoZWNrIGlmIG1vZGUgaXMgdmFsaWQgKi8KKwkJaWYgKG1vZGUgPiA1KSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9vcGVuKCk6TW9kZSBpcyBub3QgdmFsaWRcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQkvKiBDaGVjayBpZiBhbHJlYWR5IG9wZW5lZCAqLworCQlzcGluX2xvY2soJmFpX2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJaWYgKGFpX2NvbnRleHQtPmluX3VzZSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkFJIGFscmVhZHkgaW4gdXNlXG4iKTsKKwkJCXNwaW5fdW5sb2NrKCZhaV9jb250ZXh0LT51c2VfbG9jayk7CisJCQlyZXR1cm4gLUVCVVNZOworCQl9CisJCWFpX2NvbnRleHQtPmluX3VzZSA9IDE7CisJCXNwaW5fdW5sb2NrKCZhaV9jb250ZXh0LT51c2VfbG9jayk7CisKKwkJYWlfY29udGV4dC0+bW9kZSA9IG1vZGU7CisKKwkJLyogSG9sZCB0aGUgY29udGV4dCBpbiBwcml2YXRlIGRhdGEgKi8KKwkJZmlsZV9wLT5wcml2YXRlX2RhdGEgPSBhaV9jb250ZXh0OworCisJCS8qIFNldCBmaWxlIG9wZXJhdGlvbnMgcG9pbnRlciAqLworCQlmaWxlX3AtPmZfb3AgPSBtZTQwMDBfYWlfZm9wc19hcnJheVttb2RlXTsKKworCQkvKiBQcmVwYXJlIGFuYWxvZyBpbnB1dCAqLworCQltZTQwMDBfYWlfcHJlcGFyZShhaV9jb250ZXh0KTsKKwl9CisJLyogRGlnaXRhbCBJL08gKi8KKwllbHNlIGlmIChNQUpPUihpbm9kZV9wLT5pX3JkZXYpID09IG1lNDAwMF9kaW9fbWFqb3JfZHJpdmVyX25vKSB7CisJCWJvYXJkID0gRElPX0JPQVJEKGlub2RlX3AtPmlfcmRldik7CisJCWRldiA9IDA7CisJCW1vZGUgPSAwOworCisJCVBERUJVRygibWU0MDAwX29wZW4oKTpib2FyZCA9ICVkXG4iLCBib2FyZCk7CisKKwkJLyogU2VhcmNoIGZvciB0aGUgYm9hcmQgY29udGV4dCAqLworCQlmb3IgKHB0ciA9IG1lNDAwMF9ib2FyZF9pbmZvX2xpc3QubmV4dDsKKwkJICAgICBwdHIgIT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3Q7IHB0ciA9IHB0ci0+bmV4dCkgeworCQkJYm9hcmRfaW5mbyA9IGxpc3RfZW50cnkocHRyLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJCWlmIChib2FyZF9pbmZvLT5ib2FyZF9jb3VudCA9PSBib2FyZCkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChwdHIgPT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpCb2FyZCAlZCBub3QgaW4gZGV2aWNlIGxpc3RcbiIsCisJCQkgICAgICAgYm9hcmQpOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvKiBTZWFyY2ggZm9yIHRoZSBkaW8gY29udGV4dCAqLworCQlkaW9fY29udGV4dCA9IGJvYXJkX2luZm8tPmRpb19jb250ZXh0OworCisJCS8qIENoZWNrIGlmIGFscmVhZHkgb3BlbmVkICovCisJCXNwaW5fbG9jaygmZGlvX2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJaWYgKGRpb19jb250ZXh0LT5pbl91c2UpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpESU8gYWxyZWFkeSBpbiB1c2VcbiIpOworCQkJc3Bpbl91bmxvY2soJmRpb19jb250ZXh0LT51c2VfbG9jayk7CisJCQlyZXR1cm4gLUVCVVNZOworCQl9CisJCWRpb19jb250ZXh0LT5pbl91c2UgPSAxOworCQlzcGluX3VubG9jaygmZGlvX2NvbnRleHQtPnVzZV9sb2NrKTsKKworCQkvKiBIb2xkIHRoZSBjb250ZXh0IGluIHByaXZhdGUgZGF0YSAqLworCQlmaWxlX3AtPnByaXZhdGVfZGF0YSA9IGRpb19jb250ZXh0OworCisJCS8qIFNldCBmaWxlIG9wZXJhdGlvbnMgcG9pbnRlciB0byBzaW5nbGUgZnVuY3Rpb25zICovCisJCWZpbGVfcC0+Zl9vcCA9ICZtZTQwMDBfZGlvX2ZvcHM7CisKKwkJLy9tZTQwMDBfZGlvX3Jlc2V0KGRpb19jb250ZXh0KTsKKwl9CisJLyogQ291bnRlcnMgKi8KKwllbHNlIGlmIChNQUpPUihpbm9kZV9wLT5pX3JkZXYpID09IG1lNDAwMF9jbnRfbWFqb3JfZHJpdmVyX25vKSB7CisJCWJvYXJkID0gQ05UX0JPQVJEKGlub2RlX3AtPmlfcmRldik7CisJCWRldiA9IDA7CisJCW1vZGUgPSAwOworCisJCVBERUJVRygibWU0MDAwX29wZW4oKTpib2FyZCA9ICVkXG4iLCBib2FyZCk7CisKKwkJLyogU2VhcmNoIGZvciB0aGUgYm9hcmQgY29udGV4dCAqLworCQlmb3IgKHB0ciA9IG1lNDAwMF9ib2FyZF9pbmZvX2xpc3QubmV4dDsKKwkJICAgICBwdHIgIT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3Q7IHB0ciA9IHB0ci0+bmV4dCkgeworCQkJYm9hcmRfaW5mbyA9IGxpc3RfZW50cnkocHRyLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJCWlmIChib2FyZF9pbmZvLT5ib2FyZF9jb3VudCA9PSBib2FyZCkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChwdHIgPT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpCb2FyZCAlZCBub3QgaW4gZGV2aWNlIGxpc3RcbiIsCisJCQkgICAgICAgYm9hcmQpOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvKiBHZXQgdGhlIGNudCBjb250ZXh0ICovCisJCWNudF9jb250ZXh0ID0gYm9hcmRfaW5mby0+Y250X2NvbnRleHQ7CisKKwkJLyogQ2hlY2sgaWYgYWxyZWFkeSBvcGVuZWQgKi8KKwkJc3Bpbl9sb2NrKCZjbnRfY29udGV4dC0+dXNlX2xvY2spOworCQlpZiAoY250X2NvbnRleHQtPmluX3VzZSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkNOVCBhbHJlYWR5IGluIHVzZVxuIik7CisJCQlzcGluX3VubG9jaygmY250X2NvbnRleHQtPnVzZV9sb2NrKTsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0KKwkJY250X2NvbnRleHQtPmluX3VzZSA9IDE7CisJCXNwaW5fdW5sb2NrKCZjbnRfY29udGV4dC0+dXNlX2xvY2spOworCisJCS8qIEhvbGQgdGhlIGNvbnRleHQgaW4gcHJpdmF0ZSBkYXRhICovCisJCWZpbGVfcC0+cHJpdmF0ZV9kYXRhID0gY250X2NvbnRleHQ7CisKKwkJLyogU2V0IGZpbGUgb3BlcmF0aW9ucyBwb2ludGVyIHRvIHNpbmdsZSBmdW5jdGlvbnMgKi8KKwkJZmlsZV9wLT5mX29wID0gJm1lNDAwMF9jbnRfZm9wczsKKwl9CisJLyogRXh0ZXJuYWwgSW50ZXJydXB0ICovCisJZWxzZSBpZiAoTUFKT1IoaW5vZGVfcC0+aV9yZGV2KSA9PSBtZTQwMDBfZXh0X2ludF9tYWpvcl9kcml2ZXJfbm8pIHsKKwkJYm9hcmQgPSBFWFRfSU5UX0JPQVJEKGlub2RlX3AtPmlfcmRldik7CisJCWRldiA9IDA7CisJCW1vZGUgPSAwOworCisJCVBERUJVRygibWU0MDAwX29wZW4oKTpib2FyZCA9ICVkXG4iLCBib2FyZCk7CisKKwkJLyogU2VhcmNoIGZvciB0aGUgYm9hcmQgY29udGV4dCAqLworCQlmb3IgKHB0ciA9IG1lNDAwMF9ib2FyZF9pbmZvX2xpc3QubmV4dDsKKwkJICAgICBwdHIgIT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3Q7IHB0ciA9IHB0ci0+bmV4dCkgeworCQkJYm9hcmRfaW5mbyA9IGxpc3RfZW50cnkocHRyLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJCWlmIChib2FyZF9pbmZvLT5ib2FyZF9jb3VudCA9PSBib2FyZCkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChwdHIgPT0gJm1lNDAwMF9ib2FyZF9pbmZvX2xpc3QpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX29wZW4oKTpCb2FyZCAlZCBub3QgaW4gZGV2aWNlIGxpc3RcbiIsCisJCQkgICAgICAgYm9hcmQpOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvKiBHZXQgdGhlIGV4dGVybmFsIGludGVycnVwdCBjb250ZXh0ICovCisJCWV4dF9pbnRfY29udGV4dCA9IGJvYXJkX2luZm8tPmV4dF9pbnRfY29udGV4dDsKKworCQkvKiBDaGVjayBpZiBhbHJlYWR5IG9wZW5lZCAqLworCQlzcGluX2xvY2soJmNudF9jb250ZXh0LT51c2VfbG9jayk7CisJCWlmIChleHRfaW50X2NvbnRleHQtPmluX3VzZSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkV4dGVybmFsIGludGVycnVwdCBhbHJlYWR5IGluIHVzZVxuIik7CisJCQlzcGluX3VubG9jaygmZXh0X2ludF9jb250ZXh0LT51c2VfbG9jayk7CisJCQlyZXR1cm4gLUVCVVNZOworCQl9CisJCWV4dF9pbnRfY29udGV4dC0+aW5fdXNlID0gMTsKKwkJc3Bpbl91bmxvY2soJmV4dF9pbnRfY29udGV4dC0+dXNlX2xvY2spOworCisJCS8qIEhvbGQgdGhlIGNvbnRleHQgaW4gcHJpdmF0ZSBkYXRhICovCisJCWZpbGVfcC0+cHJpdmF0ZV9kYXRhID0gZXh0X2ludF9jb250ZXh0OworCisJCS8qIFNldCBmaWxlIG9wZXJhdGlvbnMgcG9pbnRlciB0byBzaW5nbGUgZnVuY3Rpb25zICovCisJCWZpbGVfcC0+Zl9vcCA9ICZtZTQwMDBfZXh0X2ludF9mb3BzOworCisJCS8qIFJlcXVlc3QgdGhlIGludGVycnVwdCBsaW5lICovCisJCWVyciA9CisJCSAgICByZXF1ZXN0X2lycShleHRfaW50X2NvbnRleHQtPmlycSwgbWU0MDAwX2V4dF9pbnRfaXNyLAorCQkJCUlSUUZfRElTQUJMRUQgfCBJUlFGX1NIQVJFRCwgTUU0MDAwX05BTUUsCisJCQkJZXh0X2ludF9jb250ZXh0KTsKKwkJaWYgKGVycikgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfb3BlbigpOkNhbid0IGdldCBpbnRlcnJ1cHQgbGluZSIpOworCQkJZXh0X2ludF9jb250ZXh0LT5pbl91c2UgPSAwOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvKiBSZXNldCB0aGUgY291bnRlciAqLworCQltZTQwMDBfZXh0X2ludF9kaXNhYmxlKGV4dF9pbnRfY29udGV4dCk7CisJfSBlbHNlIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJNRTQwMDA6bWU0MDAwX29wZW4oKTpNYWpvciBudW1iZXIgdW5rbm93blxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGVfcCwgc3RydWN0IGZpbGUgKmZpbGVfcCkKK3sKKwltZTQwMDBfYW9fY29udGV4dF90ICphb19jb250ZXh0OworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQ7CisJbWU0MDAwX2Rpb19jb250ZXh0X3QgKmRpb19jb250ZXh0OworCW1lNDAwMF9jbnRfY29udGV4dF90ICpjbnRfY29udGV4dDsKKwltZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKmV4dF9pbnRfY29udGV4dDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfcmVsZWFzZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWlmIChNQUpPUihpbm9kZV9wLT5pX3JkZXYpID09IG1lNDAwMF9hb19tYWpvcl9kcml2ZXJfbm8pIHsKKwkJYW9fY29udGV4dCA9IGZpbGVfcC0+cHJpdmF0ZV9kYXRhOworCisJCS8qIE1hcmsgREFDIGFzIHVudXNlZCAqLworCQlhb19jb250ZXh0LT5kYWNfaW5fdXNlID0gMDsKKwl9IGVsc2UgaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2FpX21ham9yX2RyaXZlcl9ubykgeworCQlhaV9jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwkJLyogUmVzZXQgdGhlIGFuYWxvZyBpbnB1dCAqLworCQltZTQwMDBfYWlfcmVzZXQoYWlfY29udGV4dCk7CisKKwkJLyogRnJlZSB0aGUgaW50ZXJydXB0IGFuZCB0aGUgY2lyY3VsYXIgYnVmZmVyICovCisJCWlmIChhaV9jb250ZXh0LT5tb2RlKSB7CisJCQlmcmVlX2lycShhaV9jb250ZXh0LT5pcnEsIGFpX2NvbnRleHQpOworCQkJa2ZyZWUoYWlfY29udGV4dC0+Y2lyY19idWYuYnVmKTsKKwkJCWFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiA9IE5VTEw7CisJCQlhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkID0gMDsKKwkJCWFpX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCQl9CisKKwkJLyogTWFyayBBSSBhcyB1bnVzZWQgKi8KKwkJYWlfY29udGV4dC0+aW5fdXNlID0gMDsKKwl9IGVsc2UgaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2Rpb19tYWpvcl9kcml2ZXJfbm8pIHsKKwkJZGlvX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCQkvKiBNYXJrIGRpZ2l0YWwgSS9PIGFzIHVudXNlZCAqLworCQlkaW9fY29udGV4dC0+aW5fdXNlID0gMDsKKwl9IGVsc2UgaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2NudF9tYWpvcl9kcml2ZXJfbm8pIHsKKwkJY250X2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCQkvKiBNYXJrIGNvdW50ZXJzIGFzIHVudXNlZCAqLworCQljbnRfY29udGV4dC0+aW5fdXNlID0gMDsKKwl9IGVsc2UgaWYgKE1BSk9SKGlub2RlX3AtPmlfcmRldikgPT0gbWU0MDAwX2V4dF9pbnRfbWFqb3JfZHJpdmVyX25vKSB7CisJCWV4dF9pbnRfY29udGV4dCA9IGZpbGVfcC0+cHJpdmF0ZV9kYXRhOworCisJCS8qIERpc2FibGUgdGhlIGV4dGVybmVsIGludGVycnVwdCAqLworCQltZTQwMDBfZXh0X2ludF9kaXNhYmxlKGV4dF9pbnRfY29udGV4dCk7CisKKwkJZnJlZV9pcnEoZXh0X2ludF9jb250ZXh0LT5pcnEsIGV4dF9pbnRfY29udGV4dCk7CisKKwkJLyogRGVsZXRlIHRoZSBmYXN5bmMgc3RydWN0dXJlIGFuZCBmcmVlIG1lbW9yeSAqLworCQltZTQwMDBfZXh0X2ludF9mYXN5bmMoMCwgZmlsZV9wLCAwKTsKKworCQkvKiBNYXJrIGFzIHVudXNlZCAqLworCQlleHRfaW50X2NvbnRleHQtPmluX3VzZSA9IDA7CisJfSBlbHNlIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9yZWxlYXNlKCk6TWFqb3IgbnVtYmVyIHVua25vd25cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFuYWxvZyBvdXRwdXQgc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IG1lNDAwMF9hb19wcmVwYXJlKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX3ByZXBhcmUoKSBpcyBleGVjdXRlZFxuIik7CisKKwlpZiAoYW9fY29udGV4dC0+bW9kZSA9PSBNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMpIHsKKwkJLyogT25seSBkbyBhbnl0aGluZyBpZiBub3QgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBtb2RlICovCisJCXVuc2lnbmVkIGxvbmcgbW9kZSA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlpZiAoKG1vZGUgJiBNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMpCisJCSAgICAmJiAobW9kZSAmIE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRklGTykpIHsKKwkJCXJldHVybiAwOworCQl9CisKKwkJLyogU3RvcCBhbnkgY29udmVyc2lvbiAqLworCQltZTQwMDBfYW9faW1tZWRpYXRlX3N0b3AoYW9fY29udGV4dCk7CisKKwkJLyogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyIHRvIGRlZmF1bHQgc3RhdGUgICovCisJCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCQltZTQwMDBfb3V0bChNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMgfAorCQkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRklGTyB8CisJCQkgICAgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AgfAorCQkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9JTU1FRElBVEVfU1RPUCwKKwkJCSAgICBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisKKwkJLyogU2V0IHRvIGZhc3Rlc3Qgc2FtcGxlIHJhdGUgKi8KKwkJbWU0MDAwX291dGwoNjUsIGFvX2NvbnRleHQtPnRpbWVyX3JlZyk7CisJfSBlbHNlIGlmIChhb19jb250ZXh0LT5tb2RlID09IE1FNDAwMF9BT19DT05WX01PREVfV1JBUEFST1VORCkgeworCQkvKiBPbmx5IGRvIGFueXRoaW5nIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBjb3JyZWN0IG1vZGUgKi8KKwkJdW5zaWduZWQgbG9uZyBtb2RlID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCWlmICgobW9kZSAmIE1FNDAwMF9BT19DT05WX01PREVfV1JBUEFST1VORCkKKwkJICAgICYmIChtb2RlICYgTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9GSUZPKSkgeworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiBTdG9wIGFueSBjb252ZXJzaW9uICovCisJCW1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcChhb19jb250ZXh0KTsKKworCQkvKiBTZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gZGVmYXVsdCBzdGF0ZSAgKi8KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCW1lNDAwMF9vdXRsKE1FNDAwMF9BT19DT05WX01PREVfV1JBUEFST1VORCB8CisJCQkgICAgTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9GSUZPIHwKKwkJCSAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfU1RPUCB8CisJCQkgICAgTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QLAorCQkJICAgIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCQkvKiBTZXQgdG8gZmFzdGVzdCBzYW1wbGUgcmF0ZSAqLworCQltZTQwMDBfb3V0bCg2NSwgYW9fY29udGV4dC0+dGltZXJfcmVnKTsKKwl9IGVsc2UgaWYgKGFvX2NvbnRleHQtPm1vZGUgPT0gTUU0MDAwX0FPX0NPTlZfTU9ERV9TSU5HTEUpIHsKKwkJLyogT25seSBkbyBhbnl0aGluZyBpZiBub3QgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBtb2RlICovCisJCXVuc2lnbmVkIGxvbmcgbW9kZSA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlpZiAoIQorCQkgICAgKG1vZGUgJgorCQkgICAgIChNRTQwMDBfQU9fQ09OVl9NT0RFX1dSQVBBUk9VTkQgfAorCQkgICAgICBNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMpKSkgeworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiBTdG9wIGFueSBjb252ZXJzaW9uICovCisJCW1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcChhb19jb250ZXh0KTsKKworCQkvKiBDbGVhciB0aGUgY29udHJvbCByZWdpc3RlciAqLworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwkJbWU0MDAwX291dGwoMHgwLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisKKwkJLyogU2V0IHZvbHRhZ2UgdG8gMFYgKi8KKwkJbWU0MDAwX291dGwoMHg4MDAwLCBhb19jb250ZXh0LT5zaW5nbGVfcmVnKTsKKwl9IGVsc2UgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FvX3ByZXBhcmUoKTpJbnZhbGlkIG1vZGUgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3Jlc2V0KG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fcmVzZXQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZxdWV1ZSk7CisKKwlpZiAoYW9fY29udGV4dC0+bW9kZSA9PSBNRTQwMDBfQU9fQ09OVl9NT0RFX1dSQVBBUk9VTkQpIHsKKwkJLyoKKwkJICogRmlyc3Qgc3RvcCBjb252ZXJzaW9uIG9mIHRoZSBEQUMgYmVmb3JlIHJlY29uZmlndXJlLgorCQkgKiBUaGlzIGlzIGVzc2FudGlhbCwgY2F1c2Ugb2YgdGhlIHN0YXRlIG1hY2hpbmUuCisJCSAqIElmIG5vdCBzdG9wcGVkIGJlZm9yZSBjb25maWd1cmluZyBtb2RlLCBpdCBjb3VsZAorCQkgKiB3YWxrIGluIGEgdW5kZWZpbmVkIHN0YXRlLgorCQkgKi8KKwkJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXRtcCB8PSBNRTQwMDBfQU9fQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1A7CisJCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCisJCXdoaWxlIChpbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00pIHsKKwkJCXNsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJfQorCisJCS8qIFNldCB0byB0cmFuc3BhcmVudCBtb2RlICovCisJCW1lNDAwMF9hb19zaW11bHRhbmVvdXNfZGlzYWJsZShhb19jb250ZXh0KTsKKworCQkvKiBTZXQgdG8gc2luZ2xlIG1vZGUgaW4gb3JkZXIgdG8gc2V0IGRlZmF1bHQgdm9sdGFnZSAqLworCQltZTQwMDBfb3V0bCgweDAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCQkvKiBTZXQgdm9sdGFnZSB0byAwViAqLworCQltZTQwMDBfb3V0bCgweDgwMDAsIGFvX2NvbnRleHQtPnNpbmdsZV9yZWcpOworCisJCS8qIFNldCB0byBmYXN0ZXN0IHNhbXBsZSByYXRlICovCisJCW1lNDAwMF9vdXRsKDY1LCBhb19jb250ZXh0LT50aW1lcl9yZWcpOworCisJCS8qIFNldCB0aGUgb3JpZ2luYWwgbW9kZSBhbmQgZW5hYmxlIEZJRk8gKi8KKwkJbWU0MDAwX291dGwoTUU0MDAwX0FPX0NPTlZfTU9ERV9XUkFQQVJPVU5EIHwKKwkJCSAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0ZJRk8gfAorCQkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9TVE9QIHwKKwkJCSAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1AsCisJCQkgICAgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCX0gZWxzZSBpZiAoYW9fY29udGV4dC0+bW9kZSA9PSBNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMpIHsKKwkJLyoKKwkJICogRmlyc3Qgc3RvcCBjb252ZXJzaW9uIG9mIHRoZSBEQUMgYmVmb3JlIHJlY29uZmlndXJlLgorCQkgKiBUaGlzIGlzIGVzc2FudGlhbCwgY2F1c2Ugb2YgdGhlIHN0YXRlIG1hY2hpbmUuCisJCSAqIElmIG5vdCBzdG9wcGVkIGJlZm9yZSBjb25maWd1cmluZyBtb2RlLCBpdCBjb3VsZAorCQkgKiB3YWxrIGluIGEgdW5kZWZpbmVkIHN0YXRlLgorCQkgKi8KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgfD0gTUU0MDAwX0FPX0NUUkxfQklUX1NUT1A7CisJCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJCXdoaWxlIChpbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00pIHsKKwkJCXNsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJfQorCisJCS8qIENsZWFyIHRoZSBjaXJjdWxhciBidWZmZXIgKi8KKwkJYW9fY29udGV4dC0+Y2lyY19idWYuaGVhZCA9IDA7CisJCWFvX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCisJCS8qIFNldCB0byB0cmFuc3BhcmVudCBtb2RlICovCisJCW1lNDAwMF9hb19zaW11bHRhbmVvdXNfZGlzYWJsZShhb19jb250ZXh0KTsKKworCQkvKiBTZXQgdG8gc2luZ2xlIG1vZGUgaW4gb3JkZXIgdG8gc2V0IGRlZmF1bHQgdm9sdGFnZSAqLworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwkJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCW1lNDAwMF9vdXRsKDB4MCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCisJCS8qIFNldCB2b2x0YWdlIHRvIDBWICovCisJCW1lNDAwMF9vdXRsKDB4ODAwMCwgYW9fY29udGV4dC0+c2luZ2xlX3JlZyk7CisKKwkJLyogU2V0IHRvIGZhc3Rlc3Qgc2FtcGxlIHJhdGUgKi8KKwkJbWU0MDAwX291dGwoNjUsIGFvX2NvbnRleHQtPnRpbWVyX3JlZyk7CisKKwkJLyogU2V0IHRoZSBvcmlnaW5hbCBtb2RlIGFuZCBlbmFibGUgRklGTyAqLworCQltZTQwMDBfb3V0bChNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMgfAorCQkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRklGTyB8CisJCQkgICAgTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AgfAorCQkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9JTU1FRElBVEVfU1RPUCwKKwkJCSAgICBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJfSBlbHNlIHsKKwkJLyogU2V0IHRvIHRyYW5zcGFyZW50IG1vZGUgKi8KKwkJbWU0MDAwX2FvX3NpbXVsdGFuZW91c19kaXNhYmxlKGFvX2NvbnRleHQpOworCisJCS8qIFNldCB2b2x0YWdlIHRvIDBWICovCisJCW1lNDAwMF9vdXRsKDB4ODAwMCwgYW9fY29udGV4dC0+c2luZ2xlX3JlZyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG1lNDAwMF9hb193cml0ZV9zaW5nKHN0cnVjdCBmaWxlICpmaWxlcCwgY29uc3QgY2hhciAqYnVmZiwKKwkJCQkgICAgc2l6ZV90IGNudCwgbG9mZl90ICogb2ZmcCkKK3sKKwltZTQwMDBfYW9fY29udGV4dF90ICphb19jb250ZXh0ID0gZmlsZXAtPnByaXZhdGVfZGF0YTsKKwl1MzIgdmFsdWU7CisJY29uc3QgdTE2ICpidWZmZXIgPSAoY29uc3QgdTE2ICopYnVmZjsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fd3JpdGVfc2luZygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWlmIChjbnQgIT0gMikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9fd3JpdGVfc2luZygpOldyaXRlIGNvdW50IGlzIG5vdCAyXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGdldF91c2VyKHZhbHVlLCBidWZmZXIpKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9hb193cml0ZV9zaW5nKCk6Q2Fubm90IGNvcHkgZGF0YSBmcm9tIHVzZXJcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwltZTQwMDBfb3V0bCh2YWx1ZSwgYW9fY29udGV4dC0+c2luZ2xlX3JlZyk7CisKKwlyZXR1cm4gMjsKK30KKworc3RhdGljIHNzaXplX3QgbWU0MDAwX2FvX3dyaXRlX3dyYXAoc3RydWN0IGZpbGUgKmZpbGVwLCBjb25zdCBjaGFyICpidWZmLAorCQkJCSAgICBzaXplX3QgY250LCBsb2ZmX3QgKiBvZmZwKQoreworCW1lNDAwMF9hb19jb250ZXh0X3QgKmFvX2NvbnRleHQgPSBmaWxlcC0+cHJpdmF0ZV9kYXRhOworCXNpemVfdCBpOworCXUzMiB2YWx1ZTsKKwl1MzIgdG1wOworCWNvbnN0IHUxNiAqYnVmZmVyID0gKGNvbnN0IHUxNiAqKWJ1ZmY7CisJc2l6ZV90IGNvdW50ID0gY250IC8gMjsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fd3JpdGVfd3JhcCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENoZWNrIGlmIGEgY29udmVyc2lvbiBpcyBhbHJlYWR5IHJ1bm5pbmcgKi8KKwlpZiAoaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fd3JpdGVfd3JhcCgpOlRoZXJlIGlzIGFscmVhZHkgYSBjb252ZXJzaW9uIHJ1bm5pbmdcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCWlmIChjb3VudCA+IE1FNDAwMF9BT19GSUZPX0NPVU5UKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9hb193cml0ZV93cmFwKCk6Q2FuJ3QgbG9hZCBtb3JlIHRoYW4gJWQgdmFsdWVzXG4iLAorCQkgICAgICAgTUU0MDAwX0FPX0ZJRk9fQ09VTlQpOworCQlyZXR1cm4gLUVOT1NQQzsKKwl9CisKKwkvKiBSZXNldCB0aGUgRklGTyAqLworCXRtcCA9IGlubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9IH5NRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0ZJRk87CisJb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgfD0gTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9GSUZPOworCW91dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQlpZiAoZ2V0X3VzZXIodmFsdWUsIGJ1ZmZlciArIGkpKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAibWU0MDAwX2FvX3dyaXRlX3NpbmdsZSgpOkNhbm5vdCBjb3B5IGRhdGEgZnJvbSB1c2VyXG4iKTsKKwkJCXJldHVybiAtRUZBVUxUOworCQl9CisJCWlmICgoKGFvX2NvbnRleHQtPmZpZm9fcmVnICYgMHhGRikgPT0gTUU0MDAwX0FPXzAxX0ZJRk9fUkVHKQorCQkgICAgfHwgKChhb19jb250ZXh0LT5maWZvX3JlZyAmIDB4RkYpID09IE1FNDAwMF9BT18wM19GSUZPX1JFRykpCisJCQl2YWx1ZSA9IHZhbHVlIDw8IDE2OworCQlvdXRsKHZhbHVlLCBhb19jb250ZXh0LT5maWZvX3JlZyk7CisJfQorCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fd3JpdGVfd3JhcCgpIGlzIGxlYXZlZCB3aXRoICVkXG4iLCBpICogMik7CisKKwlyZXR1cm4gaSAqIDI7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG1lNDAwMF9hb193cml0ZV9jb250KHN0cnVjdCBmaWxlICpmaWxlcCwgY29uc3QgY2hhciAqYnVmZiwKKwkJCQkgICAgc2l6ZV90IGNudCwgbG9mZl90ICogb2ZmcCkKK3sKKwltZTQwMDBfYW9fY29udGV4dF90ICphb19jb250ZXh0ID0gZmlsZXAtPnByaXZhdGVfZGF0YTsKKwljb25zdCB1MTYgKmJ1ZmZlciA9IChjb25zdCB1MTYgKilidWZmOworCXNpemVfdCBjb3VudCA9IGNudCAvIDI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgdG1wOworCWludCBjID0gMDsKKwlpbnQgayA9IDA7CisJaW50IHJldCA9IDA7CisJdTE2IHN2YWx1ZTsKKwl1MzIgbHZhbHVlOworCWludCBpOworCXdhaXRfcXVldWVfaGVhZF90IHF1ZXVlOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb193cml0ZV9jb250KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJLyogQ2hlY2sgY291bnQgKi8KKwlpZiAoY291bnQgPD0gMCkgeworCQlQREVCVUcoIm1lNDAwMF9hb193cml0ZV9jb250KCk6Q291bnQgaXMgMFxuIik7CisJCXJldHVybiAwOworCX0KKworCWlmIChmaWxlcC0+Zl9mbGFncyAmIE9fQVBQRU5EKSB7CisJCVBERUJVRygibWU0MDAwX2FvX3dyaXRlX2NvbnQoKTpBcHBlbmQgZGF0YSB0byBkYXRhIHN0cmVhbVxuIik7CisJCXdoaWxlIChjb3VudCA+IDApIHsKKwkJCWlmIChmaWxlcC0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spIHsKKwkJCQlpZiAoYW9fY29udGV4dC0+cGlwZV9mbGFnKSB7CisJCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fd3JpdGVfY29udCgpOkJyb2tlbiBwaXBlIGluIG5vbmJsb2NraW5nIHdyaXRlXG4iKTsKKwkJCQkJcmV0dXJuIC1FUElQRTsKKwkJCQl9CisJCQkJYyA9IG1lNDAwMF9zcGFjZV90b19lbmQoYW9fY29udGV4dC0+Y2lyY19idWYsCisJCQkJCQkJTUU0MDAwX0FPX0JVRkZFUl9DT1VOVCk7CisJCQkJaWYgKCFjKSB7CisJCQkJCVBERUJVRworCQkJCQkgICAgKCJtZTQwMDBfYW9fd3JpdGVfY29udCgpOlJldHVybmluZyBmcm9tIG5vbmJsb2NraW5nIHdyaXRlXG4iKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoYW9fY29udGV4dC0+d2FpdF9xdWV1ZSwKKwkJCQkJCQkgKGMgPQorCQkJCQkJCSAgbWU0MDAwX3NwYWNlX3RvX2VuZAorCQkJCQkJCSAgKGFvX2NvbnRleHQtPmNpcmNfYnVmLAorCQkJCQkJCSAgIE1FNDAwMF9BT19CVUZGRVJfQ09VTlQpKSk7CisJCQkJaWYgKGFvX2NvbnRleHQtPnBpcGVfZmxhZykgeworCQkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkJICAgICAgICJtZTQwMDBfYW9fd3JpdGVfY29udCgpOkJyb2tlbiBwaXBlIGluIGJsb2NraW5nIHdyaXRlXG4iKTsKKwkJCQkJcmV0dXJuIC1FUElQRTsKKwkJCQl9CisJCQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCQkgICAgICAgIm1lNDAwMF9hb193cml0ZV9jb250KCk6V2FpdCBmb3IgZnJlZSBidWZmZXIgaW50ZXJydXB0ZWQgZnJvbSBzaWduYWxcbiIpOworCQkJCQlyZXR1cm4gLUVJTlRSOworCQkJCX0KKwkJCX0KKworCQkJUERFQlVHKCJtZTQwMDBfYW9fd3JpdGVfY29udCgpOlNwYWNlIHRvIGVuZCA9ICVkXG4iLCBjKTsKKworCQkJLyogT25seSBhYmxlIHRvIHdyaXRlIHNpemUgb2YgZnJlZSBidWZmZXIgb3Igc2l6ZSBvZiBjb3VudCAqLworCQkJaWYgKGNvdW50IDwgYykKKwkJCQljID0gY291bnQ7CisKKwkJCWsgPSAyICogYzsKKwkJCWsgLT0gY29weV9mcm9tX3VzZXIoYW9fY29udGV4dC0+Y2lyY19idWYuYnVmICsKKwkJCQkJICAgIGFvX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQsIGJ1ZmZlciwKKwkJCQkJICAgIGspOworCQkJYyA9IGsgLyAyOworCQkJUERFQlVHCisJCQkgICAgKCJtZTQwMDBfYW9fd3JpdGVfY29udCgpOkNvcHkgJWQgdmFsdWVzIGZyb20gdXNlciBzcGFjZVxuIiwKKwkJCSAgICAgYyk7CisKKwkJCWlmICghYykKKwkJCQlyZXR1cm4gLUVGQVVMVDsKKworCQkJYW9fY29udGV4dC0+Y2lyY19idWYuaGVhZCA9CisJCQkgICAgKGFvX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgKworCQkJICAgICBjKSAmIChNRTQwMDBfQU9fQlVGRkVSX0NPVU5UIC0gMSk7CisJCQlidWZmZXIgKz0gYzsKKwkJCWNvdW50IC09IGM7CisJCQlyZXQgKz0gYzsKKworCQkJLyogVmFsdWVzIGFyZSBub3cgYXZhaWxhYmxlIHNvIGVuYWJsZSBpbnRlcnJ1cHRzICovCisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwkJCWlmIChtZTQwMDBfYnVmX2NvdW50CisJCQkgICAgKGFvX2NvbnRleHQtPmNpcmNfYnVmLCBNRTQwMDBfQU9fQlVGRkVSX0NPVU5UKSkgeworCQkJCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQkJCXRtcCB8PSBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0lSUTsKKwkJCQltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCX0KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCX0KKworCQkvKiBXYWl0IHVudGlsIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIHN0b3BwZWQgaWYgT19TWU5DIGlzIHNldCAqLworCQlpZiAoZmlsZXAtPmZfZmxhZ3MgJiBPX1NZTkMpIHsKKwkJCXdoaWxlIChpbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZykgJgorCQkJICAgICAgIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgeworCQkJCWludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCgmcXVldWUsIDEpOworCQkJCWlmIChhb19jb250ZXh0LT5waXBlX2ZsYWcpIHsKKwkJCQkJUERFQlVHCisJCQkJCSAgICAoIm1lNDAwMF9hb193cml0ZV9jb250KCk6QnJva2VuIHBpcGUgZGV0ZWN0ZWQgYWZ0ZXIgc3luY1xuIik7CisJCQkJCXJldHVybiAtRVBJUEU7CisJCQkJfQorCQkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkJICAgICAgICJtZTQwMDBfYW9fd3JpdGVfY29udCgpOldhaXQgb24gc3RhdGUgbWFjaGluZSBhZnRlciBzeW5jIGludGVycnVwdGVkXG4iKTsKKwkJCQkJcmV0dXJuIC1FSU5UUjsKKwkJCQl9CisJCQl9CisJCX0KKwl9IGVsc2UgeworCQlQREVCVUcoIm1lNDAwMF9hb193cml0ZV9jb250KCk6UHJlbG9hZCBEQUMgRklGT1xuIik7CisJCWlmICgobWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKSAmCisJCSAgICAgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIm1lNDAwMF9hb193cml0ZV9jb250KCk6Q2FuJ3QgUHJlbG9hZCBEQUMgRklGTyB3aGlsZSBjb252ZXJzaW9uIGlzIHJ1bm5pbmdcbiIpOworCQkJcmV0dXJuIC1FQlVTWTsKKwkJfQorCisJCS8qIENsZWFyIHRoZSBGSUZPICovCisJCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCQl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJdG1wICY9CisJCSAgICB+KE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRklGTyB8CisJCSAgICAgIE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfSVJRKTsKKwkJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXRtcCB8PSBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0ZJRk87CisJCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJCS8qIENsZWFyIHRoZSBjaXJjdWxhciBidWZmZXIgKi8KKwkJYW9fY29udGV4dC0+Y2lyY19idWYuaGVhZCA9IDA7CisJCWFvX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCisJCS8qIFJlc2V0IHRoZSBicm9rZW4gcGlwZSBmbGFnICovCisJCWFvX2NvbnRleHQtPnBpcGVfZmxhZyA9IDA7CisKKwkJLyogT25seSBhYmxlIHRvIHdyaXRlIHNpemUgb2YgZmlmbyBvciBjb3VudCAqLworCQljID0gTUU0MDAwX0FPX0ZJRk9fQ09VTlQ7CisJCWlmIChjb3VudCA8IGMpCisJCQljID0gY291bnQ7CisKKwkJUERFQlVHCisJCSAgICAoIm1lNDAwMF9hb193cml0ZV9jb250KCk6V3JpdGUgJWQgdmFsdWVzIHRvIERBQyBvbiAweCVsWFxuIiwKKwkJICAgICBjLCBhb19jb250ZXh0LT5maWZvX3JlZyk7CisKKwkJLyogV3JpdGUgdmFsdWVzIHRvIHRoZSBmaWZvICovCisJCWZvciAoaSA9IDA7IGkgPCBjOyBpKyspIHsKKwkJCWlmIChnZXRfdXNlcihzdmFsdWUsIGJ1ZmZlcikpCisJCQkJcmV0dXJuIC1FRkFVTFQ7CisKKwkJCWlmICgoKGFvX2NvbnRleHQtPmZpZm9fcmVnICYgMHhGRikgPT0KKwkJCSAgICAgTUU0MDAwX0FPXzAxX0ZJRk9fUkVHKQorCQkJICAgIHx8ICgoYW9fY29udGV4dC0+Zmlmb19yZWcgJiAweEZGKSA9PQorCQkJCU1FNDAwMF9BT18wM19GSUZPX1JFRykpIHsKKwkJCQlsdmFsdWUgPSAoKHUzMikgc3ZhbHVlKSA8PCAxNjsKKwkJCX0gZWxzZQorCQkJCWx2YWx1ZSA9ICh1MzIpIHN2YWx1ZTsKKworCQkJb3V0bChsdmFsdWUsIGFvX2NvbnRleHQtPmZpZm9fcmVnKTsKKwkJCWJ1ZmZlcisrOworCQl9CisJCWNvdW50IC09IGM7CisJCXJldCArPSBjOworCisJCXdoaWxlICgxKSB7CisJCQkvKiBHZXQgZnJlZSBidWZmZXIgKi8KKwkJCWMgPSBtZTQwMDBfc3BhY2VfdG9fZW5kKGFvX2NvbnRleHQtPmNpcmNfYnVmLAorCQkJCQkJTUU0MDAwX0FPX0JVRkZFUl9DT1VOVCk7CisKKwkJCWlmIChjID09IDApCisJCQkJcmV0dXJuICgyICogcmV0KTsKKworCQkJLyogT25seSBhYmxlIHRvIHdyaXRlIHNpemUgb2YgZnJlZSBidWZmZXIgb3Igc2l6ZSBvZiBjb3VudCAqLworCQkJaWYgKGNvdW50IDwgYykKKwkJCQljID0gY291bnQ7CisKKwkJCS8qIElmIGNvdW50ID0gMCByZXR1cm4gdG8gdXNlciAqLworCQkJaWYgKGMgPD0gMCkgeworCQkJCVBERUJVRworCQkJCSAgICAoIm1lNDAwMF9hb193cml0ZV9jb250KCk6Q291bnQgcmVhY2hlZCAwXG4iKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJayA9IDIgKiBjOworCQkJayAtPSBjb3B5X2Zyb21fdXNlcihhb19jb250ZXh0LT5jaXJjX2J1Zi5idWYgKworCQkJCQkgICAgYW9fY29udGV4dC0+Y2lyY19idWYuaGVhZCwgYnVmZmVyLAorCQkJCQkgICAgayk7CisJCQljID0gayAvIDI7CisJCQlQREVCVUcKKwkJCSAgICAoIm1lNDAwMF9hb193cml0ZV9jb250KCk6V3JvdGUgJWQgdmFsdWVzIHRvIGJ1ZmZlclxuIiwKKwkJCSAgICAgYyk7CisKKwkJCWlmICghYykKKwkJCQlyZXR1cm4gLUVGQVVMVDsKKworCQkJYW9fY29udGV4dC0+Y2lyY19idWYuaGVhZCA9CisJCQkgICAgKGFvX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgKworCQkJICAgICBjKSAmIChNRTQwMDBfQU9fQlVGRkVSX0NPVU5UIC0gMSk7CisJCQlidWZmZXIgKz0gYzsKKwkJCWNvdW50IC09IGM7CisJCQlyZXQgKz0gYzsKKworCQkJLyogSWYgdmFsdWVzIGluIHRoZSBidWZmZXIgYXJlIGF2YWlsYWJsZSBzbyBlbmFibGUgaW50ZXJydXB0cyAqLworCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCQlpZiAobWU0MDAwX2J1Zl9jb3VudAorCQkJICAgIChhb19jb250ZXh0LT5jaXJjX2J1ZiwgTUU0MDAwX0FPX0JVRkZFUl9DT1VOVCkpIHsKKwkJCQlQREVCVUcKKwkJCQkgICAgKCJtZTQwMDBfYW9fd3JpdGVfY29udCgpOkVuYWJsZSBJbnRlcnJ1cHRzXG4iKTsKKwkJCQl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCQl0bXAgfD0gTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9JUlE7CisJCQkJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl9CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCQl9CisJfQorCisJaWYgKGZpbGVwLT5mX2ZsYWdzICYgT19OT05CTE9DSykgeworCQlyZXR1cm4gKHJldCA9PSAwKSA/IC1FQUdBSU4gOiAyICogcmV0OworCX0KKworCXJldHVybiAyICogcmV0OworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IG1lNDAwMF9hb19wb2xsX2NvbnQoc3RydWN0IGZpbGUgKmZpbGVfcCwgcG9sbF90YWJsZSAqIHdhaXQpCit7CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAwOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19wb2xsX2NvbnQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlhb19jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwlwb2xsX3dhaXQoZmlsZV9wLCAmYW9fY29udGV4dC0+d2FpdF9xdWV1ZSwgd2FpdCk7CisKKwkvKiBHZXQgZnJlZSBidWZmZXIgKi8KKwlpZiAobWU0MDAwX3NwYWNlX3RvX2VuZChhb19jb250ZXh0LT5jaXJjX2J1ZiwgTUU0MDAwX0FPX0JVRkZFUl9DT1VOVCkpCisJCW1hc2sgfD0gUE9MTE9VVCB8IFBPTExXUk5PUk07CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX3BvbGxfY29udCgpOlJldHVybiBtYXNrICVsWFxuIiwgbWFzayk7CisKKwlyZXR1cm4gbWFzazsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fZnN5bmNfY29udChzdHJ1Y3QgZmlsZSAqZmlsZV9wLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfcCwKKwkJCQlpbnQgZGF0YXN5bmMpCit7CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKwl3YWl0X3F1ZXVlX2hlYWRfdCBxdWV1ZTsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fZnN5bmNfY29udCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWFvX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZxdWV1ZSk7CisKKwl3aGlsZSAoaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCWludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCgmcXVldWUsIDEpOworCQlpZiAoYW9fY29udGV4dC0+cGlwZV9mbGFnKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAibWU0MDAwX2FvX2ZzeW5jX2NvbnQoKTpCcm9rZW4gcGlwZSBkZXRlY3RlZFxuIik7CisJCQlyZXR1cm4gLUVQSVBFOworCQl9CisKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAibWU0MDAwX2FvX2ZzeW5jX2NvbnQoKTpXYWl0IG9uIHN0YXRlIG1hY2hpbmUgaW50ZXJydXB0ZWRcbiIpOworCQkJcmV0dXJuIC1FSU5UUjsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19pb2N0bF9zaW5nKHN0cnVjdCBpbm9kZSAqaW5vZGVfcCwgc3RydWN0IGZpbGUgKmZpbGVfcCwKKwkJCQl1bnNpZ25lZCBpbnQgc2VydmljZSwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9faW9jdGxfc2luZygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWFvX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCWlmIChfSU9DX1RZUEUoc2VydmljZSkgIT0gTUU0MDAwX01BR0lDKSB7CisJCXJldHVybiAtRU5PVFRZOworCQlQREVCVUcoIm1lNDAwMF9hb19pb2N0bF9zaW5nKCk6V3JvbmcgbWFnaWMgbnVtYmVyXG4iKTsKKwl9CisKKwlzd2l0Y2ggKHNlcnZpY2UpIHsKKwljYXNlIE1FNDAwMF9BT19FWF9UUklHX1NFVFVQOgorCQlyZXR1cm4gbWU0MDAwX2FvX2V4X3RyaWdfc2V0X2VkZ2UoKGludCAqKWFyZywgYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRVhfVFJJR19FTkFCTEU6CisJCXJldHVybiBtZTQwMDBfYW9fZXhfdHJpZ19lbmFibGUoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRVhfVFJJR19ESVNBQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FvX2V4X3RyaWdfZGlzYWJsZShhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19QUkVMT0FEOgorCQlyZXR1cm4gbWU0MDAwX2FvX3ByZWxvYWQoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fUFJFTE9BRF9VUERBVEU6CisJCXJldHVybiBtZTQwMDBfYW9fcHJlbG9hZF91cGRhdGUoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfR0VUX1VTRVJfSU5GTzoKKwkJcmV0dXJuIG1lNDAwMF9nZXRfdXNlcl9pbmZvKChtZTQwMDBfdXNlcl9pbmZvX3QgKikgYXJnLAorCQkJCQkgICAgYW9fY29udGV4dC0+Ym9hcmRfaW5mbyk7CisJY2FzZSBNRTQwMDBfQU9fU0lNVUxUQU5FT1VTX0VYX1RSSUc6CisJCXJldHVybiBtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX2V4X3RyaWcoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fU0lNVUxUQU5FT1VTX1NXOgorCQlyZXR1cm4gbWU0MDAwX2FvX3NpbXVsdGFuZW91c19zdyhhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19TSU1VTFRBTkVPVVNfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9hb19zaW11bHRhbmVvdXNfZGlzYWJsZShhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19TSU1VTFRBTkVPVVNfVVBEQVRFOgorCQlyZXR1cm4KKwkJICAgIG1lNDAwMF9hb19zaW11bHRhbmVvdXNfdXBkYXRlKChtZTQwMDBfYW9fY2hhbm5lbF9saXN0X3QgKikKKwkJCQkJCSAgYXJnLCBhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19FWF9UUklHX1RJTUVPVVQ6CisJCXJldHVybiBtZTQwMDBfYW9fZXhfdHJpZ190aW1lb3V0KCh1bnNpZ25lZCBsb25nICopYXJnLAorCQkJCQkJIGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0RJU0FCTEVfRE86CisJCXJldHVybiBtZTQwMDBfYW9fZGlzYWJsZV9kbyhhb19jb250ZXh0KTsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9faW9jdGxfc2luZygpOlNlcnZpY2UgbnVtYmVyIGludmFsaWRcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9faW9jdGxfd3JhcChzdHJ1Y3QgaW5vZGUgKmlub2RlX3AsIHN0cnVjdCBmaWxlICpmaWxlX3AsCisJCQkJdW5zaWduZWQgaW50IHNlcnZpY2UsIHVuc2lnbmVkIGxvbmcgYXJnKQoreworCW1lNDAwMF9hb19jb250ZXh0X3QgKmFvX2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX2lvY3RsX3dyYXAoKSBpcyBleGVjdXRlZFxuIik7CisKKwlhb19jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoX0lPQ19UWVBFKHNlcnZpY2UpICE9IE1FNDAwMF9NQUdJQykgeworCQlyZXR1cm4gLUVOT1RUWTsKKwkJUERFQlVHKCJtZTQwMDBfYW9faW9jdGxfd3JhcCgpOldyb25nIG1hZ2ljIG51bWJlclxuIik7CisJfQorCisJc3dpdGNoIChzZXJ2aWNlKSB7CisJY2FzZSBNRTQwMDBfQU9fU1RBUlQ6CisJCXJldHVybiBtZTQwMDBfYW9fc3RhcnQoKHVuc2lnbmVkIGxvbmcgKilhcmcsIGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX1NUT1A6CisJCXJldHVybiBtZTQwMDBfYW9fc3RvcChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19JTU1FRElBVEVfU1RPUDoKKwkJcmV0dXJuIG1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19SRVNFVDoKKwkJcmV0dXJuIG1lNDAwMF9hb19yZXNldChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19USU1FUl9TRVRfRElWSVNPUjoKKwkJcmV0dXJuIG1lNDAwMF9hb190aW1lcl9zZXRfZGl2aXNvcigodTMyICopIGFyZywgYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRVhfVFJJR19TRVRVUDoKKwkJcmV0dXJuIG1lNDAwMF9hb19leF90cmlnX3NldF9lZGdlKChpbnQgKilhcmcsIGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0VYX1RSSUdfRU5BQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FvX2V4X3RyaWdfZW5hYmxlKGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0VYX1RSSUdfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfR0VUX1VTRVJfSU5GTzoKKwkJcmV0dXJuIG1lNDAwMF9nZXRfdXNlcl9pbmZvKChtZTQwMDBfdXNlcl9pbmZvX3QgKikgYXJnLAorCQkJCQkgICAgYW9fY29udGV4dC0+Ym9hcmRfaW5mbyk7CisJY2FzZSBNRTQwMDBfQU9fRlNNX1NUQVRFOgorCQlyZXR1cm4gbWU0MDAwX2FvX2ZzbV9zdGF0ZSgoaW50ICopYXJnLCBhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19FTkFCTEVfRE86CisJCXJldHVybiBtZTQwMDBfYW9fZW5hYmxlX2RvKGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0RJU0FCTEVfRE86CisJCXJldHVybiBtZTQwMDBfYW9fZGlzYWJsZV9kbyhhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19TWU5DSFJPTk9VU19FWF9UUklHOgorCQlyZXR1cm4gbWU0MDAwX2FvX3N5bmNocm9ub3VzX2V4X3RyaWcoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fU1lOQ0hST05PVVNfU1c6CisJCXJldHVybiBtZTQwMDBfYW9fc3luY2hyb25vdXNfc3coYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fU1lOQ0hST05PVVNfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9hb19zeW5jaHJvbm91c19kaXNhYmxlKGFvX2NvbnRleHQpOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9faW9jdGxfY29udChzdHJ1Y3QgaW5vZGUgKmlub2RlX3AsIHN0cnVjdCBmaWxlICpmaWxlX3AsCisJCQkJdW5zaWduZWQgaW50IHNlcnZpY2UsIHVuc2lnbmVkIGxvbmcgYXJnKQoreworCW1lNDAwMF9hb19jb250ZXh0X3QgKmFvX2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX2lvY3RsX2NvbnQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlhb19jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoX0lPQ19UWVBFKHNlcnZpY2UpICE9IE1FNDAwMF9NQUdJQykgeworCQlyZXR1cm4gLUVOT1RUWTsKKwkJUERFQlVHKCJtZTQwMDBfYW9faW9jdGxfY29udCgpOldyb25nIG1hZ2ljIG51bWJlclxuIik7CisJfQorCisJc3dpdGNoIChzZXJ2aWNlKSB7CisJY2FzZSBNRTQwMDBfQU9fU1RBUlQ6CisJCXJldHVybiBtZTQwMDBfYW9fc3RhcnQoKHVuc2lnbmVkIGxvbmcgKilhcmcsIGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX1NUT1A6CisJCXJldHVybiBtZTQwMDBfYW9fc3RvcChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19JTU1FRElBVEVfU1RPUDoKKwkJcmV0dXJuIG1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19SRVNFVDoKKwkJcmV0dXJuIG1lNDAwMF9hb19yZXNldChhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19USU1FUl9TRVRfRElWSVNPUjoKKwkJcmV0dXJuIG1lNDAwMF9hb190aW1lcl9zZXRfZGl2aXNvcigodTMyICopIGFyZywgYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRVhfVFJJR19TRVRVUDoKKwkJcmV0dXJuIG1lNDAwMF9hb19leF90cmlnX3NldF9lZGdlKChpbnQgKilhcmcsIGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0VYX1RSSUdfRU5BQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FvX2V4X3RyaWdfZW5hYmxlKGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0VYX1RSSUdfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRU5BQkxFX0RPOgorCQlyZXR1cm4gbWU0MDAwX2FvX2VuYWJsZV9kbyhhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BT19ESVNBQkxFX0RPOgorCQlyZXR1cm4gbWU0MDAwX2FvX2Rpc2FibGVfZG8oYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fRlNNX1NUQVRFOgorCQlyZXR1cm4gbWU0MDAwX2FvX2ZzbV9zdGF0ZSgoaW50ICopYXJnLCBhb19jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9HRVRfVVNFUl9JTkZPOgorCQlyZXR1cm4gbWU0MDAwX2dldF91c2VyX2luZm8oKG1lNDAwMF91c2VyX2luZm9fdCAqKSBhcmcsCisJCQkJCSAgICBhb19jb250ZXh0LT5ib2FyZF9pbmZvKTsKKwljYXNlIE1FNDAwMF9BT19TWU5DSFJPTk9VU19FWF9UUklHOgorCQlyZXR1cm4gbWU0MDAwX2FvX3N5bmNocm9ub3VzX2V4X3RyaWcoYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fU1lOQ0hST05PVVNfU1c6CisJCXJldHVybiBtZTQwMDBfYW9fc3luY2hyb25vdXNfc3coYW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQU9fU1lOQ0hST05PVVNfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9hb19zeW5jaHJvbm91c19kaXNhYmxlKGFvX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FPX0dFVF9GUkVFX0JVRkZFUjoKKwkJcmV0dXJuIG1lNDAwMF9hb19nZXRfZnJlZV9idWZmZXIoKHVuc2lnbmVkIGxvbmcgKilhcmcsCisJCQkJCQkgYW9fY29udGV4dCk7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9UVFk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19zdGFydCh1bnNpZ25lZCBsb25nICphcmcsIG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyByZWY7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX3N0YXJ0KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaWYgKGdldF91c2VyKHRpbWVvdXQsIGFyZykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX2FvX3N0YXJ0KCk6Q2Fubm90IGNvcHkgZGF0YSBmcm9tIHVzZXJcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZxdWV1ZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl0bXAgPSBpbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCAmPSB+KE1FNDAwMF9BT19DVFJMX0JJVF9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QKTsKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJaWYgKCh0bXAgJiBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0VYX1RSSUcpKSB7CisJCWlmICh0aW1lb3V0KSB7CisJCQlyZWYgPSBqaWZmaWVzOworCQkJd2hpbGUgKCEKKwkJCSAgICAgICAoaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpICYKKwkJCQlNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00pKSB7CisJCQkJaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KCZxdWV1ZSwgMSk7CisJCQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fc3RhcnQoKTpXYWl0IG9uIHN0YXJ0IG9mIHN0YXRlIG1hY2hpbmUgaW50ZXJydXB0ZWRcbiIpOworCQkJCQlyZXR1cm4gLUVJTlRSOworCQkJCX0KKwkJCQlpZiAoKChqaWZmaWVzIC0gcmVmKSA+ICh0aW1lb3V0ICogSFogLyBVU0VSX0haKSkpIHsJLy8gMi42IGhhcyBkaWZmcmVudCBkZWZpbml0aW9ucyBmb3IgSFogaW4gdXNlciBhbmQga2VybmVsIHNwYWNlCisJCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fc3RhcnQoKTpUaW1lb3V0IHJlYWNoZWRcbiIpOworCQkJCQlyZXR1cm4gLUVJTzsKKwkJCQl9CisJCQl9CisJCX0KKwl9IGVsc2UgeworCQltZTQwMDBfb3V0bCgweDgwMDAsIGFvX2NvbnRleHQtPnNpbmdsZV9yZWcpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19zdG9wKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnF1ZXVlKTsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fc3RvcCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIFNldCB0aGUgc3RvcCBiaXQgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl0bXAgPSBpbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCB8PSBNRTQwMDBfQU9fQ1RSTF9CSVRfU1RPUDsKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJd2hpbGUgKGlubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKSAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgeworCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAibWU0MDAwX2FvX3N0b3AoKTpXYWl0IG9uIHN0YXRlIG1hY2hpbmUgYWZ0ZXIgc3RvcCBpbnRlcnJ1cHRlZFxuIik7CisJCQlyZXR1cm4gLUVJTlRSOworCQl9CisJfQorCisJLyogQ2xlYXIgdGhlIHN0b3AgYml0ICovCisJLy90bXAgJj0gfk1FNDAwMF9BT19DVFJMX0JJVF9TVE9QOworCS8vbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9faW1tZWRpYXRlX3N0b3AobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwl3YWl0X3F1ZXVlX2hlYWRfdCBxdWV1ZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19pbW1lZGlhdGVfc3RvcCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IGlubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wIHw9IE1FNDAwMF9BT19DVFJMX0JJVF9TVE9QIHwgTUU0MDAwX0FPX0NUUkxfQklUX0lNTUVESUFURV9TVE9QOworCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisKKwl3aGlsZSAoaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCWludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCgmcXVldWUsIDEpOworCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJtZTQwMDBfYW9faW1tZWRpYXRlX3N0b3AoKTpXYWl0IG9uIHN0YXRlIG1hY2hpbmUgYWZ0ZXIgc3RvcCBpbnRlcnJ1cHRlZFxuIik7CisJCQlyZXR1cm4gLUVJTlRSOworCQl9CisJfQorCisJLyogQ2xlYXIgdGhlIHN0b3AgYml0cyAqLworCS8vdG1wICY9IH4oTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AgfCBNRTQwMDBfQU9fQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1ApOworCS8vbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fdGltZXJfc2V0X2Rpdmlzb3IodTMyICogYXJnLAorCQkJCSAgICAgICBtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCkKK3sKKwl1MzIgZGl2aXNvcjsKKwl1MzIgdG1wOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb190aW1lciBzZXRfZGl2aXNvcigpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWlmIChnZXRfdXNlcihkaXZpc29yLCBhcmcpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCS8qIENoZWNrIGlmIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIHN0b3BwZWQgKi8KKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpOworCWlmICh0bXAgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00pIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX2FvX3RpbWVyX3NldF9kaXZpc29yKCk6Q2FuJ3Qgc2V0IHRpbWVyIHdoaWxlIERBQyBpcyBydW5uaW5nXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwlQREVCVUcoIm1lNDAwMF9hb190aW1lciBzZXRfZGl2aXNvcigpOkRpdmlzb3IgZnJvbSB1c2VyID0gJWRcbiIsCisJICAgICAgIGRpdmlzb3IpOworCisJLyogQ2hlY2sgaWYgdGhlIGRpdmlzb3IgaXMgcmlnaHQuIE1FNDAwMF9BT19NSU5fVElDS1MgaXMgdGhlIGxvd2VzdCAqLworCWlmIChkaXZpc29yIDwgTUU0MDAwX0FPX01JTl9USUNLUykgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FvX3RpbWVyIHNldF9kaXZpc29yKCk6RGl2aXNvciB0byBsb3dcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBGaXggYnVnIGluIEZpcm13YXJlICovCisJZGl2aXNvciAtPSAyOworCisJUERFQlVHKCJtZTQwMDBfYW9fdGltZXIgc2V0X2Rpdmlzb3IoKTpEaXZpc29yIHRvIEhXID0gJWRcbiIsIGRpdmlzb3IpOworCisJLyogV3JpdGUgdGhlIGRpdmlzb3IgKi8KKwltZTQwMDBfb3V0bChkaXZpc29yLCBhb19jb250ZXh0LT50aW1lcl9yZWcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX2V4X3RyaWdfc2V0X2VkZ2UoaW50ICphcmcsCisJCQkJICAgICAgbWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJaW50IG1vZGU7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19leF90cmlnX3NldF9lZGdlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaWYgKGdldF91c2VyKG1vZGUsIGFyZykpCisJCXJldHVybiAtRUZBVUxUOworCisJLyogQ2hlY2sgaWYgdGhlIHN0YXRlIG1hY2hpbmUgaXMgc3RvcHBlZCAqLworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZyk7CisJaWYgKHRtcCAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9fZXhfdHJpZ19zZXRfZWRnZSgpOkNhbid0IHNldCB0cmlnZ2VyIHdoaWxlIERBQyBpcyBydW5uaW5nXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwlpZiAobW9kZSA9PSBNRTQwMDBfQU9fVFJJR0dFUl9FWFRfRURHRV9SSVNJTkcpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgJj0KKwkJICAgIH4oTUU0MDAwX0FPX0NUUkxfQklUX0VYX1RSSUdfRURHRSB8CisJCSAgICAgIE1FNDAwMF9BT19DVFJMX0JJVF9FWF9UUklHX0JPVEgpOworCQltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl9IGVsc2UgaWYgKG1vZGUgPT0gTUU0MDAwX0FPX1RSSUdHRVJfRVhUX0VER0VfRkFMTElORykgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwkJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCXRtcCAmPSB+TUU0MDAwX0FPX0NUUkxfQklUX0VYX1RSSUdfQk9USDsKKwkJdG1wIHw9IE1FNDAwMF9BT19DVFJMX0JJVF9FWF9UUklHX0VER0U7CisJCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCX0gZWxzZSBpZiAobW9kZSA9PSBNRTQwMDBfQU9fVFJJR0dFUl9FWFRfRURHRV9CT1RIKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCQl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJdG1wIHw9CisJCSAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfRVhfVFJJR19FREdFIHwKKwkJICAgIE1FNDAwMF9BT19DVFJMX0JJVF9FWF9UUklHX0JPVEg7CisJCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCX0gZWxzZSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9hb19leF90cmlnX3NldF9lZGdlKCk6SW52YWxpZCB0cmlnZ2VyIG1vZGVcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fZXhfdHJpZ19lbmFibGUobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19leF90cmlnX2VuYWJsZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENoZWNrIGlmIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIHN0b3BwZWQgKi8KKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpOworCWlmICh0bXAgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00pIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX2FvX2V4X3RyaWdfZW5hYmxlKCk6Q2FuJ3QgZW5hYmxlIHRyaWdnZXIgd2hpbGUgREFDIGlzIHJ1bm5pbmdcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCB8PSBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0VYX1RSSUc7CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBDaGVjayBpZiB0aGUgc3RhdGUgbWFjaGluZSBpcyBzdG9wcGVkICovCisJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKTsKKwlpZiAodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9hb19leF90cmlnX2Rpc2FibGUoKTpDYW4ndCBkaXNhYmxlIHRyaWdnZXIgd2hpbGUgREFDIGlzIHJ1bm5pbmdcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCAmPSB+TUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9FWF9UUklHOworCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+Y3RybF9yZWcpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFvX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX2Rpc2FibGUobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX2Rpc2FibGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBDaGVjayBpZiB0aGUgc3RhdGUgbWFjaGluZSBpcyBzdG9wcGVkICovCisJLyogQmUgY2FyZWZ1bCBoZXJlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbQorCSAgIG1lNDAwMF9hb19zeW5jaHJvbm91cyBkaXNhYmxlICovCisJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKTsKKwlpZiAodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9hb19zaW11bHRhbmVvdXNfZGlzYWJsZSgpOkNhbid0IGRpc2FibGUgd2hpbGUgREFDIGlzIHJ1bm5pbmdcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCXNwaW5fbG9jaygmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+cHJlbG9hZF9sb2NrKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPnByZWxvYWRfcmVnKTsKKwl0bXAgJj0gfigweDEgPDwgYW9fY29udGV4dC0+aW5kZXgpOwkvLyBEaXNhYmxlIHByZWxvYWQgYml0CisJdG1wICY9IH4oMHgxIDw8IChhb19jb250ZXh0LT5pbmRleCArIDE2KSk7CS8vIERpc2FibGUgaHcgc2ltdWx0YW5lb3VzIGJpdAorCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXNwaW5fdW5sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3NpbXVsdGFuZW91c19leF90cmlnKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX3NpbXVsdGFuZW91c19leF90cmlnKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJc3Bpbl9sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXRtcCB8PSAoMHgxIDw8IGFvX2NvbnRleHQtPmluZGV4KTsJLy8gRW5hYmxlIHByZWxvYWQgYml0CisJdG1wIHw9ICgweDEgPDwgKGFvX2NvbnRleHQtPmluZGV4ICsgMTYpKTsJLy8gRW5hYmxlIGh3IHNpbXVsdGFuZW91cyBiaXQKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPnByZWxvYWRfcmVnKTsKKwlzcGluX3VubG9jaygmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+cHJlbG9hZF9sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19zaW11bHRhbmVvdXNfc3cobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX3N3KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJc3Bpbl9sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXRtcCB8PSAoMHgxIDw8IGFvX2NvbnRleHQtPmluZGV4KTsJLy8gRW5hYmxlIHByZWxvYWQgYml0CisJdG1wICY9IH4oMHgxIDw8IChhb19jb250ZXh0LT5pbmRleCArIDE2KSk7CS8vIERpc2FibGUgaHcgc2ltdWx0YW5lb3VzIGJpdAorCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXNwaW5fdW5sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3ByZWxvYWQobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19wcmVsb2FkKCkgaXMgZXhlY3V0ZWRcbiIpOworCXJldHVybiBtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX3N3KGFvX2NvbnRleHQpOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19wcmVsb2FkX3VwZGF0ZShtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCkKK3sKKwl1MzIgdG1wOworCXUzMiBjdHJsOworCXN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19wcmVsb2FkX3VwZGF0ZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXNwaW5fbG9jaygmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+cHJlbG9hZF9sb2NrKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPnByZWxvYWRfcmVnKTsKKwlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+YW9fY29udGV4dF9saXN0KSB7CisJCS8qIFRoZSBjaGFubmVscyB3ZSB1cGRhdGUgbXVzdCBiZSBpbiB0aGUgZm9sbG93aW5nIHN0YXRlIDoKKwkJICAgLSBNb2RlIEEKKwkJICAgLSBIYXJkd2FyZSB0cmlnZ2VyIGlzIGRpc2FibGVkCisJCSAgIC0gQ29ycmVzcG9uZGluZyBzaW11bHRhbmVvdXMgYml0IGlzIHJlc2V0CisJCSAqLworCQljdHJsID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCWlmICghCisJCSAgICAoY3RybCAmCisJCSAgICAgKE1FNDAwMF9BT19DVFJMX0JJVF9NT0RFXzAgfCBNRTQwMDBfQU9fQ1RSTF9CSVRfTU9ERV8xIHwKKwkJICAgICAgTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9FWF9UUklHKSkpIHsKKwkJCWlmICghCisJCQkgICAgKHRtcCAmCisJCQkgICAgICgweDEgPDwKKwkJCSAgICAgICgoKG1lNDAwMF9hb19jb250ZXh0X3QgKikgZW50cnkpLT5pbmRleCArIDE2KSkpKSB7CisJCQkJdG1wICY9CisJCQkJICAgIH4oMHgxIDw8CisJCQkJICAgICAgKCgobWU0MDAwX2FvX2NvbnRleHRfdCAqKSBlbnRyeSktPmluZGV4KSk7CisJCQl9CisJCX0KKwl9CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5wcmVsb2FkX3JlZyk7CisJc3Bpbl91bmxvY2soJmFvX2NvbnRleHQtPmJvYXJkX2luZm8tPnByZWxvYWRfbG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX3VwZGF0ZShtZTQwMDBfYW9fY2hhbm5lbF9saXN0X3QgKiBhcmcsCisJCQkJCSBtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCkKK3sKKwlpbnQgZXJyOworCWludCBpOworCXUzMiB0bXA7CisJbWU0MDAwX2FvX2NoYW5uZWxfbGlzdF90IGNoYW5uZWxzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19zaW11bHRhbmVvdXNfdXBkYXRlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjaGFubmVscywgYXJnLCBzaXplb2YobWU0MDAwX2FvX2NoYW5uZWxfbGlzdF90KSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FvX3NpbXVsdGFuZW91c191cGRhdGUoKTpDYW4ndCBjb3B5IGNvbW1hbmRcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwljaGFubmVscy5saXN0ID0KKwkgICAga21hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykgKiBjaGFubmVscy5jb3VudCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjaGFubmVscy5saXN0KSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fc2ltdWx0YW5lb3VzX3VwZGF0ZSgpOkNhbid0IGdldCBidWZmZXJcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJbWVtc2V0KGNoYW5uZWxzLmxpc3QsIDAsIHNpemVvZih1bnNpZ25lZCBsb25nKSAqIGNoYW5uZWxzLmNvdW50KTsKKworCS8qIENvcHkgY2hhbm5lbCBsaXN0IGZyb20gdXNlciAqLworCWVyciA9CisJICAgIGNvcHlfZnJvbV91c2VyKGNoYW5uZWxzLmxpc3QsIGFyZy0+bGlzdCwKKwkJCSAgIHNpemVvZih1bnNpZ25lZCBsb25nKSAqIGNoYW5uZWxzLmNvdW50KTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fc2ltdWx0YW5lb3VzX3VwZGF0ZSgpOkNhbid0IGNvcHkgbGlzdFxuIik7CisJCWtmcmVlKGNoYW5uZWxzLmxpc3QpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlzcGluX2xvY2soJmFvX2NvbnRleHQtPmJvYXJkX2luZm8tPnByZWxvYWRfbG9jayk7CisJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5wcmVsb2FkX3JlZyk7CisJZm9yIChpID0gMDsgaSA8IGNoYW5uZWxzLmNvdW50OyBpKyspIHsKKwkJaWYgKGNoYW5uZWxzLmxpc3RbaV0gPgorCQkgICAgYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+Ym9hcmRfcC0+YW8uY291bnQpIHsKKwkJCXNwaW5fdW5sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCQkJa2ZyZWUoY2hhbm5lbHMubGlzdCk7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9hb19zaW11bHRhbmVvdXNfdXBkYXRlKCk6SW52YWxpZCBib2FyZCBudW1iZXIgc3BlY2lmaWVkXG4iKTsKKwkJCXJldHVybiAtRUZBVUxUOworCQl9CisJCXRtcCAmPSB+KDB4MSA8PCBjaGFubmVscy5saXN0W2ldKTsJLy8gQ2xlYXIgdGhlIHByZWxvYWQgYml0CisJCXRtcCAmPSB+KDB4MSA8PCAoY2hhbm5lbHMubGlzdFtpXSArIDE2KSk7CS8vIENsZWFyIHRoZSBodyBzaW11bHRhbmVvdXMgYml0CisJfQorCW1lNDAwMF9vdXRsKHRtcCwgYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXNwaW5fdW5sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCWtmcmVlKGNoYW5uZWxzLmxpc3QpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX3N5bmNocm9ub3VzX2V4X3RyaWcobWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19zeW5jaHJvbm91c19leF90cmlnKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ2hlY2sgaWYgdGhlIHN0YXRlIG1hY2hpbmUgaXMgc3RvcHBlZCAqLworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZyk7CisJaWYgKHRtcCAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9fc3luY2hyb25vdXNfZXhfdHJpZygpOiBEQUMgaXMgcnVubmluZ1xuIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJc3Bpbl9sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXRtcCAmPSB+KDB4MSA8PCBhb19jb250ZXh0LT5pbmRleCk7CS8vIERpc2FibGUgc3luY2hyb25vdXMgc3cgYml0CisJdG1wIHw9IDB4MSA8PCAoYW9fY29udGV4dC0+aW5kZXggKyAxNik7CS8vIEVuYWJsZSBzeW5jaHJvbm91cyBodyBiaXQKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPnByZWxvYWRfcmVnKTsKKwlzcGluX3VubG9jaygmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+cHJlbG9hZF9sb2NrKTsKKworCS8qIE1ha2UgcnVubmFibGUgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlpZiAodG1wICYgKE1FNDAwMF9BT19DVFJMX0JJVF9NT0RFXzAgfCBNRTQwMDBfQU9fQ1RSTF9CSVRfTU9ERV8xKSkgeworCQl0bXAgJj0KKwkJICAgIH4oTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AgfAorCQkgICAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1ApOworCQltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19zeW5jaHJvbm91c19zdyhtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCkKK3sKKwl1MzIgdG1wOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX3N5bmNocm9ub3VzX3N3KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ2hlY2sgaWYgdGhlIHN0YXRlIG1hY2hpbmUgaXMgc3RvcHBlZCAqLworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZyk7CisJaWYgKHRtcCAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9hb19zeW5jaHJvbm91c19zdygpOiBEQUMgaXMgcnVubmluZ1xuIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJc3Bpbl9sb2NrKCZhb19jb250ZXh0LT5ib2FyZF9pbmZvLT5wcmVsb2FkX2xvY2spOworCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+cHJlbG9hZF9yZWcpOworCXRtcCB8PSAweDEgPDwgYW9fY29udGV4dC0+aW5kZXg7CS8vIEVuYWJsZSBzeW5jaHJvbm91cyBzdyBiaXQKKwl0bXAgJj0gfigweDEgPDwgKGFvX2NvbnRleHQtPmluZGV4ICsgMTYpKTsJLy8gRGlzYWJsZSBzeW5jaHJvbm91cyBodyBiaXQKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPnByZWxvYWRfcmVnKTsKKwlzcGluX3VubG9jaygmYW9fY29udGV4dC0+Ym9hcmRfaW5mby0+cHJlbG9hZF9sb2NrKTsKKworCS8qIE1ha2UgcnVubmFibGUgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlpZiAodG1wICYgKE1FNDAwMF9BT19DVFJMX0JJVF9NT0RFXzAgfCBNRTQwMDBfQU9fQ1RSTF9CSVRfTU9ERV8xKSkgeworCQl0bXAgJj0KKwkJICAgIH4oTUU0MDAwX0FPX0NUUkxfQklUX1NUT1AgfAorCQkgICAgICBNRTQwMDBfQU9fQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1ApOworCQltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19zeW5jaHJvbm91c19kaXNhYmxlKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXJldHVybiBtZTQwMDBfYW9fc2ltdWx0YW5lb3VzX2Rpc2FibGUoYW9fY29udGV4dCk7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FvX2dldF9mcmVlX2J1ZmZlcih1bnNpZ25lZCBsb25nICphcmcsCisJCQkJICAgICBtZTQwMDBfYW9fY29udGV4dF90ICogYW9fY29udGV4dCkKK3sKKwl1bnNpZ25lZCBsb25nIGM7CisJaW50IGVycjsKKworCWMgPSBtZTQwMDBfYnVmX3NwYWNlKGFvX2NvbnRleHQtPmNpcmNfYnVmLCBNRTQwMDBfQU9fQlVGRkVSX0NPVU5UKTsKKworCWVyciA9IGNvcHlfdG9fdXNlcihhcmcsICZjLCBzaXplb2YodW5zaWduZWQgbG9uZykpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9hb19nZXRfZnJlZV9idWZmZXIoKTpDYW4ndCBjb3B5IHRvIHVzZXIgc3BhY2VcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYW9fZXhfdHJpZ190aW1lb3V0KHVuc2lnbmVkIGxvbmcgKmFyZywKKwkJCQkgICAgIG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyByZWY7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19leF90cmlnX3RpbWVvdXQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlpZiAoZ2V0X3VzZXIodGltZW91dCwgYXJnKSkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9fZXhfdHJpZ190aW1lb3V0KCk6Q2Fubm90IGNvcHkgZGF0YSBmcm9tIHVzZXJcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZxdWV1ZSk7CisKKwl0bXAgPSBpbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCisJaWYgKCh0bXAgJiBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0VYX1RSSUcpKSB7CisJCWlmICh0aW1lb3V0KSB7CisJCQlyZWYgPSBqaWZmaWVzOworCQkJd2hpbGUgKChpbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZykgJgorCQkJCU1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkpIHsKKwkJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9hb19leF90cmlnX3RpbWVvdXQoKTpXYWl0IG9uIHN0YXJ0IG9mIHN0YXRlIG1hY2hpbmUgaW50ZXJydXB0ZWRcbiIpOworCQkJCQlyZXR1cm4gLUVJTlRSOworCQkJCX0KKwkJCQlpZiAoKChqaWZmaWVzIC0gcmVmKSA+ICh0aW1lb3V0ICogSFogLyBVU0VSX0haKSkpIHsJLy8gMi42IGhhcyBkaWZmcmVudCBkZWZpbml0aW9ucyBmb3IgSFogaW4gdXNlciBhbmQga2VybmVsIHNwYWNlCisJCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fZXhfdHJpZ190aW1lb3V0KCk6VGltZW91dCByZWFjaGVkXG4iKTsKKwkJCQkJcmV0dXJuIC1FSU87CisJCQkJfQorCQkJfQorCQl9IGVsc2UgeworCQkJd2hpbGUgKChpbmwoYW9fY29udGV4dC0+c3RhdHVzX3JlZykgJgorCQkJCU1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkpIHsKKwkJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9hb19leF90cmlnX3RpbWVvdXQoKTpXYWl0IG9uIHN0YXJ0IG9mIHN0YXRlIG1hY2hpbmUgaW50ZXJydXB0ZWRcbiIpOworCQkJCQlyZXR1cm4gLUVJTlRSOworCQkJCX0KKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYW9fZXhfdHJpZ190aW1lb3V0KCk6RXh0ZXJuYWwgVHJpZ2dlciBpcyBub3QgZW5hYmxlZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19lbmFibGVfZG8obWU0MDAwX2FvX2NvbnRleHRfdCAqIGFvX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19lbmFibGVfZG8oKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBPbmx5IGF2YWlsYWJsZSBmb3IgYW5hbG9nIG91dHB1dCAzICovCisJaWYgKGFvX2NvbnRleHQtPmluZGV4ICE9IDMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX2FvX2VuYWJsZV9kbygpOk9ubHkgYXZhaWxhYmxlIGZvciBhbmFsb2cgb3V0cHV0IDNcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwkvKiBDaGVjayBpZiB0aGUgc3RhdGUgbWFjaGluZSBpcyBzdG9wcGVkICovCisJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKTsKKwlpZiAodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX2FvX2VuYWJsZV9kbygpOiBEQUMgaXMgcnVubmluZ1xuIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyogU2V0IHRoZSBzdG9wIGJpdCAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IGlubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wIHw9IE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRE87CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19kaXNhYmxlX2RvKG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXUzMiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYW9fZGlzYWJsZV9kbygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIE9ubHkgYXZhaWxhYmxlIGZvciBhbmFsb2cgb3V0cHV0IDMgKi8KKwlpZiAoYW9fY29udGV4dC0+aW5kZXggIT0gMykgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYW9fZGlzYWJsZSgpOk9ubHkgYXZhaWxhYmxlIGZvciBhbmFsb2cgb3V0cHV0IDNcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwkvKiBDaGVjayBpZiB0aGUgc3RhdGUgbWFjaGluZSBpcyBzdG9wcGVkICovCisJdG1wID0gbWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKTsKKwlpZiAodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX2FvX2Rpc2FibGVfZG8oKTogREFDIGlzIHJ1bm5pbmdcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZhb19jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IGlubChhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9IH4oTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9ETyk7CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW9fY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9hb19mc21fc3RhdGUoaW50ICphcmcsIG1lNDAwMF9hb19jb250ZXh0X3QgKiBhb19jb250ZXh0KQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9hb19mc21fc3RhdGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwl0bXAgPQorCSAgICAobWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKSAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkgPyAxCisJICAgIDogMDsKKworCWlmIChhb19jb250ZXh0LT5waXBlX2ZsYWcpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfYW9fZnNtX3N0YXRlKCk6QnJva2VuIHBpcGUgZGV0ZWN0ZWRcbiIpOworCQlyZXR1cm4gLUVQSVBFOworCX0KKworCWlmIChwdXRfdXNlcih0bXAsIGFyZykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfYW9fZnNtX3N0YXRlKCk6Q2Fubm90IGNvcHkgdG8gdXNlclxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQW5hbG9nIGlucHV0IHN0dWZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBtZTQwMDBfYWlfcHJlcGFyZShtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwl3YWl0X3F1ZXVlX2hlYWRfdCBxdWV1ZTsKKwlpbnQgZXJyOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9wcmVwYXJlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJLyogU2V0IHRoZSBuZXcgbW9kZSBhbmQgc3RvcCBiaXRzICovCisJbWU0MDAwX291dGwoYWlfY29udGV4dC0+CisJCSAgICBtb2RlIHwgTUU0MDAwX0FJX0NUUkxfQklUX1NUT1AgfAorCQkgICAgTUU0MDAwX0FJX0NUUkxfQklUX0lNTUVESUFURV9TVE9QLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBTZXQgdGhlIHRpbWVyIHJlZ2lzdGVycyAqLworCWFpX2NvbnRleHQtPmNoYW5fdGltZXIgPSA2NjsKKwlhaV9jb250ZXh0LT5jaGFuX3ByZV90aW1lciA9IDY2OworCWFpX2NvbnRleHQtPnNjYW5fdGltZXJfbG93ID0gMDsKKwlhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2hpZ2ggPSAwOworCisJbWU0MDAwX291dGwoNjUsIGFpX2NvbnRleHQtPmNoYW5fdGltZXJfcmVnKTsKKwltZTQwMDBfb3V0bCg2NSwgYWlfY29udGV4dC0+Y2hhbl9wcmVfdGltZXJfcmVnKTsKKwltZTQwMDBfb3V0bCgwLCBhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2xvd19yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNjYW5fdGltZXJfaGlnaF9yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNjYW5fcHJlX3RpbWVyX2xvd19yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNjYW5fcHJlX3RpbWVyX2hpZ2hfcmVnKTsKKworCWFpX2NvbnRleHQtPmNoYW5uZWxfbGlzdF9jb3VudCA9IDA7CisKKwlpZiAoYWlfY29udGV4dC0+bW9kZSkgeworCQkvKiBSZXF1ZXN0IHRoZSBpbnRlcnJ1cHQgbGluZSAqLworCQllcnIgPQorCQkgICAgcmVxdWVzdF9pcnEoYWlfY29udGV4dC0+aXJxLCBtZTQwMDBfYWlfaXNyLAorCQkJCUlSUUZfRElTQUJMRUQgfCBJUlFGX1NIQVJFRCwgTUU0MDAwX05BTUUsCisJCQkJYWlfY29udGV4dCk7CisJCWlmIChlcnIpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3ByZXBhcmUoKTpDYW4ndCBnZXQgaW50ZXJydXB0IGxpbmUiKTsKKwkJCXJldHVybiAtRU5PREVWOworCQl9CisKKwkJLyogQWxsb2NhdGUgY2lyY3VsYXIgYnVmZmVyICovCisJCWFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiA9CisJCSAgICBrbWFsbG9jKE1FNDAwMF9BSV9CVUZGRVJfU0laRSwgR0ZQX0tFUk5FTCk7CisJCWlmICghYWlfY29udGV4dC0+Y2lyY19idWYuYnVmKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9wcmVwYXJlKCk6Q2FuJ3QgZ2V0IGNpcmN1bGFyIGJ1ZmZlclxuIik7CisJCQlmcmVlX2lycShhaV9jb250ZXh0LT5pcnEsIGFpX2NvbnRleHQpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwkJbWVtc2V0KGFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiwgMCwgTUU0MDAwX0FJX0JVRkZFUl9TSVpFKTsKKworCQkvKiBDbGVhciB0aGUgY2lyY3VsYXIgYnVmZmVyICovCisJCWFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgPSAwOworCQlhaV9jb250ZXh0LT5jaXJjX2J1Zi50YWlsID0gMDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYWlfcmVzZXQobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdTMyIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9yZXNldCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnF1ZXVlKTsKKworCS8qCisJICogRmlyc3Qgc3RvcCBjb252ZXJzaW9uIG9mIHRoZSBzdGF0ZSBtYWNoaW5lIGJlZm9yZSByZWNvbmZpZ3VyZS4KKwkgKiBJZiBub3Qgc3RvcHBlZCBiZWZvcmUgY29uZmlndXJpbmcgbW9kZSwgaXQgY291bGQKKwkgKiB3YWxrIGluIGEgdW5kZWZpbmVkIHN0YXRlLgorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1A7CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWlfY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCXdoaWxlIChpbmwoYWlfY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GU00pIHsKKwkJaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KCZxdWV1ZSwgMSk7CisJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIm1lNDAwMF9haV9yZXNldCgpOldhaXQgb24gc3RhdGUgbWFjaGluZSBhZnRlciBzdG9wIGludGVycnVwdGVkXG4iKTsKKwkJCXJldHVybiAtRUlOVFI7CisJCX0KKwl9CisKKwkvKiBDbGVhciB0aGUgY29udHJvbCByZWdpc3RlciBhbmQgc2V0IHRoZSBzdG9wIGJpdHMgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWlfY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwltZTQwMDBfb3V0bChNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1AgfCBNRTQwMDBfQUlfQ1RSTF9CSVRfU1RPUCwKKwkJICAgIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJLyogUmVzZXQgdGltZXIgcmVnaXN0ZXJzICovCisJYWlfY29udGV4dC0+Y2hhbl90aW1lciA9IDY2OworCWFpX2NvbnRleHQtPmNoYW5fcHJlX3RpbWVyID0gNjY7CisJYWlfY29udGV4dC0+c2Nhbl90aW1lcl9sb3cgPSAwOworCWFpX2NvbnRleHQtPnNjYW5fdGltZXJfaGlnaCA9IDA7CisJYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIgPSAwOworCWFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlbG9hZCA9IDA7CisKKwltZTQwMDBfb3V0bCg2NSwgYWlfY29udGV4dC0+Y2hhbl90aW1lcl9yZWcpOworCW1lNDAwMF9vdXRsKDY1LCBhaV9jb250ZXh0LT5jaGFuX3ByZV90aW1lcl9yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNjYW5fdGltZXJfbG93X3JlZyk7CisJbWU0MDAwX291dGwoMCwgYWlfY29udGV4dC0+c2Nhbl90aW1lcl9oaWdoX3JlZyk7CisJbWU0MDAwX291dGwoMCwgYWlfY29udGV4dC0+c2Nhbl9wcmVfdGltZXJfbG93X3JlZyk7CisJbWU0MDAwX291dGwoMCwgYWlfY29udGV4dC0+c2Nhbl9wcmVfdGltZXJfaGlnaF9yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlZyk7CisKKwlhaV9jb250ZXh0LT5jaGFubmVsX2xpc3RfY291bnQgPSAwOworCisJLyogQ2xlYXIgdGhlIGNpcmN1bGFyIGJ1ZmZlciAqLworCWFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgPSAwOworCWFpX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2lvY3RsX3Npbmcoc3RydWN0IGlub2RlICppbm9kZV9wLCBzdHJ1Y3QgZmlsZSAqZmlsZV9wLAorCQkJCXVuc2lnbmVkIGludCBzZXJ2aWNlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwltZTQwMDBfYWlfY29udGV4dF90ICphaV9jb250ZXh0OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9pb2N0bF9zaW5nKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJYWlfY29udGV4dCA9IGZpbGVfcC0+cHJpdmF0ZV9kYXRhOworCisJaWYgKF9JT0NfVFlQRShzZXJ2aWNlKSAhPSBNRTQwMDBfTUFHSUMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfYWlfaW9jdGxfc2luZygpOldyb25nIG1hZ2ljIG51bWJlclxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlpZiAoX0lPQ19OUihzZXJ2aWNlKSA+IE1FNDAwMF9JT0NUTF9NQVhOUikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYWlfaW9jdGxfc2luZygpOlNlcnZpY2UgbnVtYmVyIHRvIGhpZ2hcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwlzd2l0Y2ggKHNlcnZpY2UpIHsKKwljYXNlIE1FNDAwMF9BSV9TSU5HTEU6CisJCXJldHVybiBtZTQwMDBfYWlfc2luZ2xlKChtZTQwMDBfYWlfc2luZ2xlX3QgKikgYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9FWF9UUklHX0VOQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9haV9leF90cmlnX2VuYWJsZShhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9FWF9UUklHX0RJU0FCTEU6CisJCXJldHVybiBtZTQwMDBfYWlfZXhfdHJpZ19kaXNhYmxlKGFpX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FJX0VYX1RSSUdfU0VUVVA6CisJCXJldHVybiBtZTQwMDBfYWlfZXhfdHJpZ19zZXR1cCgobWU0MDAwX2FpX3RyaWdnZXJfdCAqKSBhcmcsCisJCQkJCSAgICAgICBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9HRVRfVVNFUl9JTkZPOgorCQlyZXR1cm4gbWU0MDAwX2dldF91c2VyX2luZm8oKG1lNDAwMF91c2VyX2luZm9fdCAqKSBhcmcsCisJCQkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvKTsKKwljYXNlIE1FNDAwMF9BSV9PRkZTRVRfRU5BQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FpX29mZnNldF9lbmFibGUoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfT0ZGU0VUX0RJU0FCTEU6CisJCXJldHVybiBtZTQwMDBfYWlfb2Zmc2V0X2Rpc2FibGUoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRlVMTFNDQUxFX0VOQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9haV9mdWxsc2NhbGVfZW5hYmxlKGFpX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FJX0ZVTExTQ0FMRV9ESVNBQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FpX2Z1bGxzY2FsZV9kaXNhYmxlKGFpX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FJX0VFUFJPTV9SRUFEOgorCQlyZXR1cm4gbWU0MDAwX2VlcHJvbV9yZWFkKChtZTQwMDBfZWVwcm9tX3QgKikgYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9FRVBST01fV1JJVEU6CisJCXJldHVybiBtZTQwMDBfZWVwcm9tX3dyaXRlKChtZTQwMDBfZWVwcm9tX3QgKikgYXJnLCBhaV9jb250ZXh0KTsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYWlfaW9jdGxfc2luZygpOkludmFsaWQgc2VydmljZSBudW1iZXJcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3NpbmdsZShtZTQwMDBfYWlfc2luZ2xlX3QgKiBhcmcsCisJCQkgICAgbWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJbWU0MDAwX2FpX3NpbmdsZV90IGNtZDsKKwlpbnQgZXJyOworCXUzMiB0bXA7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyBqaWZmeTsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfc2luZ2xlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjbWQsIGFyZywgc2l6ZW9mKG1lNDAwMF9haV9zaW5nbGVfdCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zaW5nbGUoKTpDYW4ndCBjb3B5IGZyb20gdXNlciBzcGFjZVxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCS8qIENoZWNrIHJhbmdlIHBhcmFtZXRlciAqLworCXN3aXRjaCAoY21kLnJhbmdlKSB7CisJY2FzZSBNRTQwMDBfQUlfTElTVF9SQU5HRV9CSVBPTEFSXzEwOgorCWNhc2UgTUU0MDAwX0FJX0xJU1RfUkFOR0VfQklQT0xBUl8yXzU6CisJY2FzZSBNRTQwMDBfQUlfTElTVF9SQU5HRV9VTklQT0xBUl8xMDoKKwljYXNlIE1FNDAwMF9BSV9MSVNUX1JBTkdFX1VOSVBPTEFSXzJfNToKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zaW5nbGUoKTpJbnZhbGlkIHJhbmdlIHNwZWNpZmllZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIENoZWNrIG1vZGUgYW5kIGNoYW5uZWwgbnVtYmVyICovCisJc3dpdGNoIChjbWQubW9kZSkgeworCWNhc2UgTUU0MDAwX0FJX0xJU1RfSU5QVVRfU0lOR0xFX0VOREVEOgorCQlpZiAoY21kLmNoYW5uZWwgPj0gYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+Ym9hcmRfcC0+YWkuY291bnQpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3NpbmdsZSgpOkFuYWxvZyBpbnB1dCBpcyBub3QgYXZhaWxhYmxlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0FJX0xJU1RfSU5QVVRfRElGRkVSRU5USUFMOgorCQlpZiAoY21kLmNoYW5uZWwgPj0KKwkJICAgIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmRpZmZfY291bnQpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3NpbmdsZSgpOkFuYWxvZyBpbnB1dCBpcyBub3QgYXZhaWxhYmxlIGluIGRpZmZlcmVudGlhbCBtb2RlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfc2luZ2xlKCk6SW52YWxpZCBtb2RlIHNwZWNpZmllZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIENsZWFyIGNoYW5uZWwgbGlzdCwgZGF0YSBmaWZvIGFuZCBib3RoIHN0b3AgYml0cyAqLworCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCAmPQorCSAgICB+KE1FNDAwMF9BSV9DVFJMX0JJVF9DSEFOTkVMX0ZJRk8gfCBNRTQwMDBfQUlfQ1RSTF9CSVRfREFUQV9GSUZPIHwKKwkgICAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfU1RPUCB8IE1FNDAwMF9BSV9DVFJMX0JJVF9JTU1FRElBVEVfU1RPUCk7CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBFbmFibGUgY2hhbm5lbCBsaXN0IGFuZCBkYXRhIGZpZm8gKi8KKwl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0NIQU5ORUxfRklGTyB8IE1FNDAwMF9BSV9DVFJMX0JJVF9EQVRBX0ZJRk87CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBHZW5lcmF0ZSBjaGFubmVsIGxpc3QgZW50cnkgKi8KKwltZTQwMDBfb3V0bChjbWQuY2hhbm5lbCB8IGNtZC5yYW5nZSB8IGNtZC4KKwkJICAgIG1vZGUgfCBNRTQwMDBfQUlfTElTVF9MQVNUX0VOVFJZLAorCQkgICAgYWlfY29udGV4dC0+Y2hhbm5lbF9saXN0X3JlZyk7CisKKwkvKiBTZXQgdGhlIHRpbWVyIHRvIG1heGltdW0gKi8KKwltZTQwMDBfb3V0bCg2NiwgYWlfY29udGV4dC0+Y2hhbl90aW1lcl9yZWcpOworCW1lNDAwMF9vdXRsKDY2LCBhaV9jb250ZXh0LT5jaGFuX3ByZV90aW1lcl9yZWcpOworCisJaWYgKHRtcCAmIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHKSB7CisJCWppZmZ5ID0gamlmZmllczsKKwkJd2hpbGUgKCEKKwkJICAgICAgIChtZTQwMDBfaW5sKGFpX2NvbnRleHQtPnN0YXR1c19yZWcpICYKKwkJCU1FNDAwMF9BSV9TVEFUVVNfQklUX0VGX0RBVEEpKSB7CisJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zaW5nbGUoKTpXYWl0IG9uIHN0YXJ0IG9mIHN0YXRlIG1hY2hpbmUgaW50ZXJydXB0ZWRcbiIpOworCQkJCXJldHVybiAtRUlOVFI7CisJCQl9CisJCQlpZiAoKChqaWZmaWVzIC0gamlmZnkpID4gKGNtZC50aW1lb3V0ICogSFogLyBVU0VSX0haKSkgJiYgY21kLnRpbWVvdXQpIHsJLy8gMi42IGhhcyBkaWZmcmVudCBkZWZpbml0aW9ucyBmb3IgSFogaW4gdXNlciBhbmQga2VybmVsIHNwYWNlCisJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3NpbmdsZSgpOlRpbWVvdXQgcmVhY2hlZFxuIik7CisJCQkJcmV0dXJuIC1FSU87CisJCQl9CisJCX0KKwl9IGVsc2UgeworCQkvKiBTdGFydCBjb252ZXJzaW9uICovCisJCW1lNDAwMF9pbmwoYWlfY29udGV4dC0+c3RhcnRfcmVnKTsKKworCQkvKiBXYWl0IHVudGlsIHJlYWR5ICovCisJCXVkZWxheSgxMCk7CisJCWlmICghCisJCSAgICAobWU0MDAwX2lubChhaV9jb250ZXh0LT5zdGF0dXNfcmVnKSAmCisJCSAgICAgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQSkpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3NpbmdsZSgpOlZhbHVlIG5vdCBhdmFpbGFibGUgYWZ0ZXIgd2FpdFxuIik7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCS8qIFJlYWQgdmFsdWUgZnJvbSBkYXRhIGZpZm8gKi8KKwljbWQudmFsdWUgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmRhdGFfcmVnKSAmIDB4RkZGRjsKKworCS8qIENvcHkgcmVzdWx0IGJhY2sgdG8gdXNlciAqLworCWVyciA9IGNvcHlfdG9fdXNlcihhcmcsICZjbWQsIHNpemVvZihtZTQwMDBfYWlfc2luZ2xlX3QpKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfc2luZ2xlKCk6Q2FuJ3QgY29weSB0byB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2lvY3RsX3N3KHN0cnVjdCBpbm9kZSAqaW5vZGVfcCwgc3RydWN0IGZpbGUgKmZpbGVfcCwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBzZXJ2aWNlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwltZTQwMDBfYWlfY29udGV4dF90ICphaV9jb250ZXh0OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9pb2N0bF9zdygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWFpX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCWlmIChfSU9DX1RZUEUoc2VydmljZSkgIT0gTUU0MDAwX01BR0lDKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX2FpX2lvY3RsX3N3KCk6V3JvbmcgbWFnaWMgbnVtYmVyXG4iKTsKKwkJcmV0dXJuIC1FTk9UVFk7CisJfQorCWlmIChfSU9DX05SKHNlcnZpY2UpID4gTUU0MDAwX0lPQ1RMX01BWE5SKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9haV9pb2N0bF9zdygpOlNlcnZpY2UgbnVtYmVyIHRvIGhpZ2hcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwlzd2l0Y2ggKHNlcnZpY2UpIHsKKwljYXNlIE1FNDAwMF9BSV9TQ19TRVRVUDoKKwkJcmV0dXJuIG1lNDAwMF9haV9zY19zZXR1cCgobWU0MDAwX2FpX3NjX3QgKikgYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9DT05GSUc6CisJCXJldHVybiBtZTQwMDBfYWlfY29uZmlnKChtZTQwMDBfYWlfY29uZmlnX3QgKikgYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9TVEFSVDoKKwkJcmV0dXJuIG1lNDAwMF9haV9zdGFydChhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9TVE9QOgorCQlyZXR1cm4gbWU0MDAwX2FpX3N0b3AoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfSU1NRURJQVRFX1NUT1A6CisJCXJldHVybiBtZTQwMDBfYWlfaW1tZWRpYXRlX3N0b3AoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRlNNX1NUQVRFOgorCQlyZXR1cm4gbWU0MDAwX2FpX2ZzbV9zdGF0ZSgoaW50ICopYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9HRVRfVVNFUl9JTkZPOgorCQlyZXR1cm4gbWU0MDAwX2dldF91c2VyX2luZm8oKG1lNDAwMF91c2VyX2luZm9fdCAqKSBhcmcsCisJCQkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvKTsKKwljYXNlIE1FNDAwMF9BSV9FRVBST01fUkVBRDoKKwkJcmV0dXJuIG1lNDAwMF9lZXByb21fcmVhZCgobWU0MDAwX2VlcHJvbV90ICopIGFyZywgYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRUVQUk9NX1dSSVRFOgorCQlyZXR1cm4gbWU0MDAwX2VlcHJvbV93cml0ZSgobWU0MDAwX2VlcHJvbV90ICopIGFyZywgYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfR0VUX0NPVU5UX0JVRkZFUjoKKwkJcmV0dXJuIG1lNDAwMF9haV9nZXRfY291bnRfYnVmZmVyKCh1bnNpZ25lZCBsb25nICopYXJnLAorCQkJCQkJICBhaV9jb250ZXh0KTsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2lvY3RsX3N3KCk6SW52YWxpZCBzZXJ2aWNlIG51bWJlciAlZFxuIiwKKwkJICAgICAgIHNlcnZpY2UpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2lvY3RsX2V4dChzdHJ1Y3QgaW5vZGUgKmlub2RlX3AsIHN0cnVjdCBmaWxlICpmaWxlX3AsCisJCQkgICAgICAgdW5zaWduZWQgaW50IHNlcnZpY2UsIHVuc2lnbmVkIGxvbmcgYXJnKQoreworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX2lvY3RsX2V4dCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWFpX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCWlmIChfSU9DX1RZUEUoc2VydmljZSkgIT0gTUU0MDAwX01BR0lDKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWU0MDAwX2FpX2lvY3RsX2V4dCgpOldyb25nIG1hZ2ljIG51bWJlclxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlpZiAoX0lPQ19OUihzZXJ2aWNlKSA+IE1FNDAwMF9JT0NUTF9NQVhOUikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfYWlfaW9jdGxfZXh0KCk6U2VydmljZSBudW1iZXIgdG8gaGlnaFxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKworCXN3aXRjaCAoc2VydmljZSkgeworCWNhc2UgTUU0MDAwX0FJX1NDX1NFVFVQOgorCQlyZXR1cm4gbWU0MDAwX2FpX3NjX3NldHVwKChtZTQwMDBfYWlfc2NfdCAqKSBhcmcsIGFpX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FJX0NPTkZJRzoKKwkJcmV0dXJuIG1lNDAwMF9haV9jb25maWcoKG1lNDAwMF9haV9jb25maWdfdCAqKSBhcmcsIGFpX2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0FJX1NUQVJUOgorCQlyZXR1cm4gbWU0MDAwX2FpX3N0YXJ0X2V4KCh1bnNpZ25lZCBsb25nICopYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9TVE9QOgorCQlyZXR1cm4gbWU0MDAwX2FpX3N0b3AoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfSU1NRURJQVRFX1NUT1A6CisJCXJldHVybiBtZTQwMDBfYWlfaW1tZWRpYXRlX3N0b3AoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRVhfVFJJR19FTkFCTEU6CisJCXJldHVybiBtZTQwMDBfYWlfZXhfdHJpZ19lbmFibGUoYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRVhfVFJJR19ESVNBQkxFOgorCQlyZXR1cm4gbWU0MDAwX2FpX2V4X3RyaWdfZGlzYWJsZShhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9BSV9FWF9UUklHX1NFVFVQOgorCQlyZXR1cm4gbWU0MDAwX2FpX2V4X3RyaWdfc2V0dXAoKG1lNDAwMF9haV90cmlnZ2VyX3QgKikgYXJnLAorCQkJCQkgICAgICAgYWlfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQUlfRlNNX1NUQVRFOgorCQlyZXR1cm4gbWU0MDAwX2FpX2ZzbV9zdGF0ZSgoaW50ICopYXJnLCBhaV9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9HRVRfVVNFUl9JTkZPOgorCQlyZXR1cm4gbWU0MDAwX2dldF91c2VyX2luZm8oKG1lNDAwMF91c2VyX2luZm9fdCAqKSBhcmcsCisJCQkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvKTsKKwljYXNlIE1FNDAwMF9BSV9HRVRfQ09VTlRfQlVGRkVSOgorCQlyZXR1cm4gbWU0MDAwX2FpX2dldF9jb3VudF9idWZmZXIoKHVuc2lnbmVkIGxvbmcgKilhcmcsCisJCQkJCQkgIGFpX2NvbnRleHQpOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfaW9jdGxfZXh0KCk6SW52YWxpZCBzZXJ2aWNlIG51bWJlciAlZFxuIiwKKwkJICAgICAgIHNlcnZpY2UpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlX3AsIGludCBtb2RlKQoreworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FvX2Zhc3luY19jb250KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJYWlfY29udGV4dCA9IGZpbGVfcC0+cHJpdmF0ZV9kYXRhOworCXJldHVybiBmYXN5bmNfaGVscGVyKGZkLCBmaWxlX3AsIG1vZGUsICZhaV9jb250ZXh0LT5mYXN5bmNfcCk7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2NvbmZpZyhtZTQwMDBfYWlfY29uZmlnX3QgKiBhcmcsCisJCQkgICAgbWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJbWU0MDAwX2FpX2NvbmZpZ190IGNtZDsKKwl1MzIgKmxpc3QgPSBOVUxMOworCXUzMiBtb2RlOworCWludCBpOworCWludCBlcnI7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdTY0IHNjYW47CisJdTMyIHRtcDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfY29uZmlnKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJLyogQ2hlY2sgaWYgY29udmVyc2lvbiBpcyBzdG9wcGVkICovCisJaWYgKGlubChhaV9jb250ZXh0LT5jdHJsX3JlZykgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GU00pIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpDb252ZXJzaW9uIGlzIG5vdCBzdG9wcGVkXG4iKTsKKwkJZXJyID0gLUVCVVNZOworCQlnb3RvIEFJX0NPTkZJR19FUlI7CisJfQorCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjbWQsIGFyZywgc2l6ZW9mKG1lNDAwMF9haV9jb25maWdfdCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpDYW4ndCBjb3B5IGZyb20gdXNlciBzcGFjZVxuIik7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gQUlfQ09ORklHX0VSUjsKKwl9CisKKwlQREVCVUcKKwkgICAgKCJtZTQwMDBfYWlfY29uZmlnKCk6Y2hhbiA9ICVsZCwgcHJlX2NoYW4gPSAlbGQsIHNjYW5fbG93ID0gJWxkLCBzY2FuX2hpZ2ggPSAlbGQsIGNvdW50ID0gJWxkXG4iLAorCSAgICAgY21kLnRpbWVyLmNoYW4sIGNtZC50aW1lci5wcmVfY2hhbiwgY21kLnRpbWVyLnNjYW5fbG93LAorCSAgICAgY21kLnRpbWVyLnNjYW5faGlnaCwgY21kLmNoYW5uZWxfbGlzdC5jb3VudCk7CisKKwkvKiBDaGVjayB3aGV0aGVyIHNhbXBsZSBhbmQgaG9sZCBpcyBhdmFpbGFibGUgZm9yIHRoaXMgYm9hcmQgKi8KKwlpZiAoY21kLnNoKSB7CisJCWlmICghYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+Ym9hcmRfcC0+YWkuc2hfY291bnQpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2NvbmZpZygpOlNhbXBsZSBhbmQgSG9sZCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGJvYXJkXG4iKTsKKwkJCWVyciA9IC1FTk9ERVY7CisJCQlnb3RvIEFJX0NPTkZJR19FUlI7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY2hhbm5lbCBsaXN0IHNpemUgKi8KKwlpZiAoY21kLmNoYW5uZWxfbGlzdC5jb3VudCA+IE1FNDAwMF9BSV9DSEFOTkVMX0xJU1RfQ09VTlQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAibWU0MDAwX2FpX2NvbmZpZygpOkNoYW5uZWwgbGlzdCBpcyB0byBsYXJnZVxuIik7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gQUlfQ09ORklHX0VSUjsKKwl9CisKKwkvKiBDb3B5IGNoYW5uZWwgbGlzdCBmcm9tIHVzZXIgKi8KKwlsaXN0ID0ga21hbGxvYyhzaXplb2YodTMyKSAqIGNtZC5jaGFubmVsX2xpc3QuY291bnQsIEdGUF9LRVJORUwpOworCWlmICghbGlzdCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2NvbmZpZygpOkNhbid0IGdldCBtZW1vcnkgZm9yIGNoYW5uZWwgbGlzdFxuIik7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gQUlfQ09ORklHX0VSUjsKKwl9CisJZXJyID0KKwkgICAgY29weV9mcm9tX3VzZXIobGlzdCwgY21kLmNoYW5uZWxfbGlzdC5saXN0LAorCQkJICAgc2l6ZW9mKHUzMikgKiBjbWQuY2hhbm5lbF9saXN0LmNvdW50KTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfY29uZmlnKCk6Q2FuJ3QgY29weSBmcm9tIHVzZXIgc3BhY2VcbiIpOworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIEFJX0NPTkZJR19FUlI7CisJfQorCisJLyogQ2hlY2sgaWYgbGFzdCBlbnRyeSBiaXQgaXMgc2V0ICovCisJaWYgKCEobGlzdFtjbWQuY2hhbm5lbF9saXN0LmNvdW50IC0gMV0gJiBNRTQwMDBfQUlfTElTVF9MQVNUX0VOVFJZKSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICAgICAibWU0MDAwX2FpX2NvbmZpZygpOkxhc3QgZW50cnkgYml0IGlzIG5vdCBzZXRcbiIpOworCQlsaXN0W2NtZC5jaGFubmVsX2xpc3QuY291bnQgLSAxXSB8PSBNRTQwMDBfQUlfTElTVF9MQVNUX0VOVFJZOworCX0KKworCS8qIENoZWNrIHdoZXRoZXIgbW9kZSBpcyBlcXVhbCBmb3IgYWxsIGVudHJpZXMgKi8KKwltb2RlID0gbGlzdFswXSAmIDB4MjA7CisJZm9yIChpID0gMDsgaSA8IGNtZC5jaGFubmVsX2xpc3QuY291bnQ7IGkrKykgeworCQlpZiAoKGxpc3RbaV0gJiAweDIwKSAhPSBtb2RlKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpNb2RlIGlzIG5vdCBlcXVhbCBmb3IgYWxsIGVudHJpZXNcbiIpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gQUlfQ09ORklHX0VSUjsKKwkJfQorCX0KKworCS8qIENoZWNrIHdoZXRoZXIgY2hhbm5lbHMgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBtb2RlICovCisJaWYgKG1vZGUgPT0gTUU0MDAwX0FJX0xJU1RfSU5QVVRfU0lOR0xFX0VOREVEKSB7CisJCWZvciAoaSA9IDA7IGkgPCBjbWQuY2hhbm5lbF9saXN0LmNvdW50OyBpKyspIHsKKwkJCWlmICgobGlzdFtpXSAmIDB4MUYpID49CisJCQkgICAgYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+Ym9hcmRfcC0+YWkuY291bnQpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfY29uZmlnKCk6Q2hhbm5lbCBpcyBub3QgYXZhaWxhYmxlIGZvciBzaW5nbGUgZW5kZWRcbiIpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJZ290byBBSV9DT05GSUdfRVJSOworCQkJfQorCQl9CisJfSBlbHNlIGlmIChtb2RlID09IE1FNDAwMF9BSV9MSVNUX0lOUFVUX0RJRkZFUkVOVElBTCkgeworCQlmb3IgKGkgPSAwOyBpIDwgY21kLmNoYW5uZWxfbGlzdC5jb3VudDsgaSsrKSB7CisJCQlpZiAoKGxpc3RbaV0gJiAweDFGKSA+PQorCQkJICAgIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmRpZmZfY291bnQpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfY29uZmlnKCk6Q2hhbm5lbCBpcyBub3QgYXZhaWxhYmxlIGZvciBkaWZmZXJlbnRpYWxcbiIpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJZ290byBBSV9DT05GSUdfRVJSOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgaWYgYmlwb2xhciBpcyBzZXQgZm9yIGFsbCBlbnRyaWVzIHdoZW4gaW4gZGlmZmVyZW50aWFsIG1vZGUgKi8KKwlpZiAobW9kZSA9PSBNRTQwMDBfQUlfTElTVF9JTlBVVF9ESUZGRVJFTlRJQUwpIHsKKwkJZm9yIChpID0gMDsgaSA8IGNtZC5jaGFubmVsX2xpc3QuY291bnQ7IGkrKykgeworCQkJaWYgKChsaXN0W2ldICYgMHhDMCkgIT0gTUU0MDAwX0FJX0xJU1RfUkFOR0VfQklQT0xBUl8xMAorCQkJICAgICYmIChsaXN0W2ldICYgMHhDMCkgIT0KKwkJCSAgICBNRTQwMDBfQUlfTElTVF9SQU5HRV9CSVBPTEFSXzJfNSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpCaXBvbGFyIGlzIG5vdCBzZWxlY3RlZCBpbiBkaWZmZXJlbnRpYWwgbW9kZVxuIik7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQlnb3RvIEFJX0NPTkZJR19FUlI7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoYWlfY29udGV4dC0+bW9kZSAhPSBNRTQwMDBfQUlfQUNRX01PREVfRVhUX1NJTkdMRV9WQUxVRSkgeworCQkvKiBDaGVjayBmb3IgbWluaW11bSBjaGFubmVsIGRpdmlzb3IgKi8KKwkJaWYgKGNtZC50aW1lci5jaGFuIDwgTUU0MDAwX0FJX01JTl9USUNLUykgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfY29uZmlnKCk6Q2hhbm5lbCB0aW1lciBkaXZpc29yIGlzIHRvIGxvd1xuIik7CisJCQllcnIgPSAtRUlOVkFMOworCQkJZ290byBBSV9DT05GSUdfRVJSOworCQl9CisKKwkJLyogQ2hlY2sgaWYgbWluaW11bSBjaGFubmVsIGRpdmlzb3IgaXMgYWRqdXN0ZWQgd2hlbiBzYW1wbGUgYW5kIGhvbGQgaXMgYWN0aXZhdGVkICovCisJCWlmICgoY21kLnNoKSAmJiAoY21kLnRpbWVyLmNoYW4gIT0gTUU0MDAwX0FJX01JTl9USUNLUykpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2NvbmZpZygpOkNoYW5uZWwgdGltZXIgZGl2aXNvciBtdXN0IGJlIGF0IG1pbmltdW0gd2hlbiBzYW1wbGUgYW5kIGhvbGQgaXMgYWN0aXZhdGVkXG4iKTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIEFJX0NPTkZJR19FUlI7CisJCX0KKworCQkvKiBDaGVjayBmb3IgbWluaW11bSBjaGFubmVsIHByZSBkaXZpc29yICovCisJCWlmIChjbWQudGltZXIucHJlX2NoYW4gPCBNRTQwMDBfQUlfTUlOX1RJQ0tTKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpDaGFubmVsIHByZSB0aW1lciBkaXZpc29yIGlzIHRvIGxvd1xuIik7CisJCQllcnIgPSAtRUlOVkFMOworCQkJZ290byBBSV9DT05GSUdfRVJSOworCQl9CisKKwkJLyogV3JpdGUgdGhlIGNoYW5uZWwgdGltZXJzICovCisJCW1lNDAwMF9vdXRsKGNtZC50aW1lci5jaGFuIC0gMSwgYWlfY29udGV4dC0+Y2hhbl90aW1lcl9yZWcpOworCQltZTQwMDBfb3V0bChjbWQudGltZXIucHJlX2NoYW4gLSAxLAorCQkJICAgIGFpX2NvbnRleHQtPmNoYW5fcHJlX3RpbWVyX3JlZyk7CisKKwkJLyogU2F2ZSB0aGUgdGltZXIgdmFsdWVzIGluIHRoZSBib2FyZCBjb250ZXh0ICovCisJCWFpX2NvbnRleHQtPmNoYW5fdGltZXIgPSBjbWQudGltZXIuY2hhbjsKKwkJYWlfY29udGV4dC0+Y2hhbl9wcmVfdGltZXIgPSBjbWQudGltZXIucHJlX2NoYW47CisKKwkJaWYgKGFpX2NvbnRleHQtPm1vZGUgIT0gTUU0MDAwX0FJX0FDUV9NT0RFX0VYVF9TSU5HTEVfQ0hBTkxJU1QpIHsKKwkJCS8qIENoZWNrIGZvciBzY2FuIHRpbWVyIGRpdmlzb3IgKi8KKwkJCXNjYW4gPQorCQkJICAgICh1NjQpIGNtZC50aW1lci5zY2FuX2xvdyB8ICgodTY0KSBjbWQudGltZXIuCisJCQkJCQkJc2Nhbl9oaWdoIDw8IDMyKTsKKwkJCWlmIChzY2FuICE9IDApIHsKKwkJCQlpZiAoc2NhbiA8CisJCQkJICAgIGNtZC5jaGFubmVsX2xpc3QuY291bnQgKiBjbWQudGltZXIuY2hhbiArCisJCQkJICAgIDEpIHsKKwkJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9jb25maWcoKTpTY2FuIHRpbWVyIGRpdmlzb3IgaXMgdG8gbG93XG4iKTsKKwkJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQkJZ290byBBSV9DT05GSUdfRVJSOworCQkJCX0KKwkJCX0KKworCQkJLyogV3JpdGUgdGhlIHNjYW4gdGltZXJzICovCisJCQlpZiAoc2NhbiAhPSAwKSB7CisJCQkJc2Nhbi0tOworCQkJCXRtcCA9ICh1MzIpIChzY2FuICYgMHhGRkZGRkZGRik7CisJCQkJbWU0MDAwX291dGwodG1wLAorCQkJCQkgICAgYWlfY29udGV4dC0+c2Nhbl90aW1lcl9sb3dfcmVnKTsKKwkJCQl0bXAgPSAodTMyKSAoKHNjYW4gPj4gMzIpICYgMHhGRkZGRkZGRik7CisJCQkJbWU0MDAwX291dGwodG1wLAorCQkJCQkgICAgYWlfY29udGV4dC0+c2Nhbl90aW1lcl9oaWdoX3JlZyk7CisKKwkJCQlzY2FuID0KKwkJCQkgICAgc2NhbiAtIChjbWQudGltZXIuY2hhbiAtIDEpICsKKwkJCQkgICAgKGNtZC50aW1lci5wcmVfY2hhbiAtIDEpOworCQkJCXRtcCA9ICh1MzIpIChzY2FuICYgMHhGRkZGRkZGRik7CisJCQkJbWU0MDAwX291dGwodG1wLAorCQkJCQkgICAgYWlfY29udGV4dC0+c2Nhbl9wcmVfdGltZXJfbG93X3JlZyk7CisJCQkJdG1wID0gKHUzMikgKChzY2FuID4+IDMyKSAmIDB4RkZGRkZGRkYpOworCQkJCW1lNDAwMF9vdXRsKHRtcCwKKwkJCQkJICAgIGFpX2NvbnRleHQtPgorCQkJCQkgICAgc2Nhbl9wcmVfdGltZXJfaGlnaF9yZWcpOworCQkJfSBlbHNlIHsKKwkJCQltZTQwMDBfb3V0bCgweDAsCisJCQkJCSAgICBhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2xvd19yZWcpOworCQkJCW1lNDAwMF9vdXRsKDB4MCwKKwkJCQkJICAgIGFpX2NvbnRleHQtPnNjYW5fdGltZXJfaGlnaF9yZWcpOworCisJCQkJbWU0MDAwX291dGwoMHgwLAorCQkJCQkgICAgYWlfY29udGV4dC0+c2Nhbl9wcmVfdGltZXJfbG93X3JlZyk7CisJCQkJbWU0MDAwX291dGwoMHgwLAorCQkJCQkgICAgYWlfY29udGV4dC0+CisJCQkJCSAgICBzY2FuX3ByZV90aW1lcl9oaWdoX3JlZyk7CisJCQl9CisKKwkJCWFpX2NvbnRleHQtPnNjYW5fdGltZXJfbG93ID0gY21kLnRpbWVyLnNjYW5fbG93OworCQkJYWlfY29udGV4dC0+c2Nhbl90aW1lcl9oaWdoID0gY21kLnRpbWVyLnNjYW5faGlnaDsKKwkJfQorCX0KKworCS8qIENsZWFyIHRoZSBjaGFubmVsIGxpc3QgKi8KKwl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgJj0gfk1FNDAwMF9BSV9DVFJMX0JJVF9DSEFOTkVMX0ZJRk87CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wIHw9IE1FNDAwMF9BSV9DVFJMX0JJVF9DSEFOTkVMX0ZJRk87CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBXcml0ZSB0aGUgY2hhbm5lbCBsaXN0ICovCisJZm9yIChpID0gMDsgaSA8IGNtZC5jaGFubmVsX2xpc3QuY291bnQ7IGkrKykgeworCQltZTQwMDBfb3V0bChsaXN0W2ldLCBhaV9jb250ZXh0LT5jaGFubmVsX2xpc3RfcmVnKTsKKwl9CisKKwkvKiBTZXR1cCBzYW1wbGUgYW5kIGhvbGQgKi8KKwlpZiAoY21kLnNoKSB7CisJCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfU0FNUExFX0hPTEQ7CisJCW1lNDAwMF9vdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCX0gZWxzZSB7CisJCXRtcCAmPSB+TUU0MDAwX0FJX0NUUkxfQklUX1NBTVBMRV9IT0xEOworCQltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl9CisKKwkvKiBTYXZlIHRoZSBjaGFubmVsIGxpc3Qgc2l6ZSBpbiB0aGUgYm9hcmQgY29udGV4dCAqLworCWFpX2NvbnRleHQtPmNoYW5uZWxfbGlzdF9jb3VudCA9IGNtZC5jaGFubmVsX2xpc3QuY291bnQ7CisKKwlrZnJlZShsaXN0KTsKKworCXJldHVybiAwOworCisgICAgICBBSV9DT05GSUdfRVJSOgorCisJLyogUmVzZXQgdGhlIHRpbWVycyAqLworCWFpX2NvbnRleHQtPmNoYW5fdGltZXIgPSA2NjsKKwlhaV9jb250ZXh0LT5jaGFuX3ByZV90aW1lciA9IDY2OworCWFpX2NvbnRleHQtPnNjYW5fdGltZXJfbG93ID0gMDsKKwlhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2hpZ2ggPSAwOworCisJbWU0MDAwX291dGwoNjUsIGFpX2NvbnRleHQtPmNoYW5fdGltZXJfcmVnKTsKKwltZTQwMDBfb3V0bCg2NSwgYWlfY29udGV4dC0+Y2hhbl9wcmVfdGltZXJfcmVnKTsKKwltZTQwMDBfb3V0bCgwLCBhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2hpZ2hfcmVnKTsKKwltZTQwMDBfb3V0bCgwLCBhaV9jb250ZXh0LT5zY2FuX3RpbWVyX2xvd19yZWcpOworCW1lNDAwMF9vdXRsKDAsIGFpX2NvbnRleHQtPnNjYW5fcHJlX3RpbWVyX2hpZ2hfcmVnKTsKKwltZTQwMDBfb3V0bCgwLCBhaV9jb250ZXh0LT5zY2FuX3ByZV90aW1lcl9sb3dfcmVnKTsKKworCWFpX2NvbnRleHQtPmNoYW5uZWxfbGlzdF9jb3VudCA9IDA7CisKKwl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgJj0KKwkgICAgfihNRTQwMDBfQUlfQ1RSTF9CSVRfQ0hBTk5FTF9GSUZPIHwgTUU0MDAwX0FJX0NUUkxfQklUX1NBTVBMRV9IT0xEKTsKKworCWlmIChsaXN0KQorCQlrZnJlZShsaXN0KTsKKworCXJldHVybiBlcnI7CisKK30KKworc3RhdGljIGludCBhaV9jb21tb25fc3RhcnQobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJdTMyIHRtcDsKKwlDQUxMX1BERUJVRygiYWlfY29tbW9uX3N0YXJ0KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBDaGVjayBpZiBjb252ZXJzaW9uIGlzIHN0b3BwZWQgKi8KKwlpZiAodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRlNNKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDphaV9jb21tb25fc3RhcnQoKTpDb252ZXJzaW9uIGlzIG5vdCBzdG9wcGVkXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwkvKiBDbGVhciBkYXRhIGZpZm8sIGRpc2FibGUgYWxsIGludGVycnVwdHMsIGNsZWFyIHNhbXBsZSBjb3VudGVyIHJlbG9hZCAqLworCXRtcCAmPSB+KE1FNDAwMF9BSV9DVFJMX0JJVF9EQVRBX0ZJRk8gfCBNRTQwMDBfQUlfQ1RSTF9CSVRfTEVfSVJRIHwKKwkJIE1FNDAwMF9BSV9DVFJMX0JJVF9IRl9JUlEgfCBNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfSVJRIHwKKwkJIE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19SRUxPQUQpOworCisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBDbGVhciBjaXJjdWxhciBidWZmZXIgKi8KKwlhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkID0gMDsKKwlhaV9jb250ZXh0LT5jaXJjX2J1Zi50YWlsID0gMDsKKworCS8qIEVuYWJsZSBkYXRhIGZpZm8gKi8KKwl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0RBVEFfRklGTzsKKworCS8qIERldGVybWluZSBpbnRlcnJ1cHQgc2V0dXAgKi8KKwlpZiAoYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIgJiYgIWFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlbG9hZCkgeworCQkvKiBFbmFibGUgSGFsZiBGdWxsIEludGVycnVwdCBhbmQgU2FtcGxlIENvdW50ZXIgSW50ZXJydXB0ICovCisJCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfSVJRIHwgTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUTsKKwl9IGVsc2UgaWYgKGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyCisJCSAgICYmIGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlbG9hZCkgeworCQlpZiAoYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIgPD0gTUU0MDAwX0FJX0ZJRk9fQ09VTlQgLyAyKSB7CisJCQkvKiBFbmFibGUgb25seSBTYW1wbGUgQ291bnRlciBJbnRlcnJ1cHQgKi8KKwkJCXRtcCB8PQorCQkJICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlEgfAorCQkJICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19SRUxPQUQ7CisJCX0gZWxzZSB7CisJCQkvKiBFbmFibGUgSGFsZiBGdWxsIEludGVycnVwdCBhbmQgU2FtcGxlIENvdW50ZXIgSW50ZXJydXB0ICovCisJCQl0bXAgfD0KKwkJCSAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfSVJRIHwKKwkJCSAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJRIHwKKwkJCSAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfUkVMT0FEOworCQl9CisJfSBlbHNlIHsKKwkJLyogRW5hYmxlIG9ubHkgSGFsZiBGdWxsIEludGVycnVwdCAqLworCQl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUTsKKwl9CisKKwkvKiBDbGVhciB0aGUgc3RvcCBiaXRzICovCisJdG1wICY9IH4oTUU0MDAwX0FJX0NUUkxfQklUX1NUT1AgfCBNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1ApOworCisJLyogV3JpdGUgc2V0dXAgdG8gaGFyZHdhcmUgKi8KKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCS8qIFdyaXRlIHNhbXBsZSBjb3VudGVyICovCisJbWU0MDAwX291dGwoYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIsIGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYWlfc3RhcnQobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJaW50IGVycjsKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX3N0YXJ0KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogUHJlcGFyZSBIYXJkd2FyZSAqLworCWVyciA9IGFpX2NvbW1vbl9zdGFydChhaV9jb250ZXh0KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJLyogU3RhcnQgY29udmVyc2lvbiBieSBkdW1teSByZWFkICovCisJbWU0MDAwX2lubChhaV9jb250ZXh0LT5zdGFydF9yZWcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX3N0YXJ0X2V4KHVuc2lnbmVkIGxvbmcgKmFyZywKKwkJCSAgICAgIG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCWludCBlcnI7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CisJdW5zaWduZWQgbG9uZyByZWY7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9zdGFydF9leCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWlmIChnZXRfdXNlcih0aW1lb3V0LCBhcmcpKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIm1lNDAwMF9haV9zdGFydF9leCgpOkNhbm5vdCBjb3B5IGRhdGEgZnJvbSB1c2VyXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJaW5pdF93YWl0cXVldWVfaGVhZCgmcXVldWUpOworCisJLyogUHJlcGFyZSBIYXJkd2FyZSAqLworCWVyciA9IGFpX2NvbW1vbl9zdGFydChhaV9jb250ZXh0KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYgKHRpbWVvdXQpIHsKKwkJcmVmID0gamlmZmllczsKKwkJd2hpbGUgKCEKKwkJICAgICAgIChpbmwoYWlfY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GU00pKQorCQl7CisJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zdGFydF9leCgpOldhaXQgb24gc3RhcnQgb2Ygc3RhdGUgbWFjaGluZSBpbnRlcnJ1cHRlZFxuIik7CisJCQkJcmV0dXJuIC1FSU5UUjsKKwkJCX0KKwkJCWlmICgoKGppZmZpZXMgLSByZWYpID4gKHRpbWVvdXQgKiBIWiAvIFVTRVJfSFopKSkgewkvLyAyLjYgaGFzIGRpZmZyZW50IGRlZmluaXRpb25zIGZvciBIWiBpbiB1c2VyIGFuZCBrZXJuZWwgc3BhY2UKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfc3RhcnRfZXgoKTpUaW1lb3V0IHJlYWNoZWRcbiIpOworCQkJCXJldHVybiAtRUlPOworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJd2hpbGUgKCEKKwkJICAgICAgIChpbmwoYWlfY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GU00pKQorCQl7CisJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zdGFydF9leCgpOldhaXQgb24gc3RhcnQgb2Ygc3RhdGUgbWFjaGluZSBpbnRlcnJ1cHRlZFxuIik7CisJCQkJcmV0dXJuIC1FSU5UUjsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9zdG9wKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCXdhaXRfcXVldWVfaGVhZF90IHF1ZXVlOworCXUzMiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfc3RvcCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnF1ZXVlKTsKKworCS8qIERpc2FibGUgaXJxcyBhbmQgY2xlYXIgZGF0YSBmaWZvICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9CisJICAgIH4oTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUSB8IE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlEgfAorCSAgICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9EQVRBX0ZJRk8pOworCS8qIFN0b3AgY29udmVyc2lvbiBvZiB0aGUgc3RhdGUgbWFjaGluZSAqLworCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfU1RPUDsKKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJLyogQ2xlYXIgY2lyY3VsYXIgYnVmZmVyICovCisJYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCA9IDA7CisJYWlfY29udGV4dC0+Y2lyY19idWYudGFpbCA9IDA7CisKKwl3aGlsZSAoaW5sKGFpX2NvbnRleHQtPnN0YXR1c19yZWcpICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRlNNKSB7CisJCWludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCgmcXVldWUsIDEpOworCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX3N0b3AoKTpXYWl0IG9uIHN0YXRlIG1hY2hpbmUgYWZ0ZXIgc3RvcCBpbnRlcnJ1cHRlZFxuIik7CisJCQlyZXR1cm4gLUVJTlRSOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2ltbWVkaWF0ZV9zdG9wKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCXdhaXRfcXVldWVfaGVhZF90IHF1ZXVlOworCXUzMiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfc3RvcCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnF1ZXVlKTsKKworCS8qIERpc2FibGUgaXJxcyBhbmQgY2xlYXIgZGF0YSBmaWZvICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9CisJICAgIH4oTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUSB8IE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlEgfAorCSAgICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9EQVRBX0ZJRk8pOworCS8qIFN0b3AgY29udmVyc2lvbiBvZiB0aGUgc3RhdGUgbWFjaGluZSAqLworCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1A7CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWlfY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKworCS8qIENsZWFyIGNpcmN1bGFyIGJ1ZmZlciAqLworCWFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgPSAwOworCWFpX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgPSAwOworCisJd2hpbGUgKGlubChhaV9jb250ZXh0LT5zdGF0dXNfcmVnKSAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZTTSkgeworCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQoJnF1ZXVlLCAxKTsKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zdG9wKCk6V2FpdCBvbiBzdGF0ZSBtYWNoaW5lIGFmdGVyIHN0b3AgaW50ZXJydXB0ZWRcbiIpOworCQkJcmV0dXJuIC1FSU5UUjsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9leF90cmlnX2VuYWJsZShtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwl1MzIgdG1wOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX2V4X3RyaWdfZW5hYmxlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wIHw9IE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHOworCW1lNDAwMF9vdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYWlfZXhfdHJpZ19kaXNhYmxlKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCXUzMiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfZXhfdHJpZ19kaXNhYmxlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9IH5NRTQwMDBfQUlfQ1RSTF9CSVRfRVhfVFJJRzsKKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2V4X3RyaWdfc2V0dXAobWU0MDAwX2FpX3RyaWdnZXJfdCAqIGFyZywKKwkJCQkgICBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwltZTQwMDBfYWlfdHJpZ2dlcl90IGNtZDsKKwlpbnQgZXJyOworCXUzMiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfZXhfdHJpZ19zZXR1cCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHVzZXIgKi8KKwllcnIgPSBjb3B5X2Zyb21fdXNlcigmY21kLCBhcmcsIHNpemVvZihtZTQwMDBfYWlfdHJpZ2dlcl90KSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2V4X3RyaWdfc2V0dXAoKTpDYW4ndCBjb3B5IGZyb20gdXNlciBzcGFjZVxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCisJaWYgKGNtZC5tb2RlID09IE1FNDAwMF9BSV9UUklHR0VSX0VYVF9ESUdJVEFMKSB7CisJCXRtcCAmPSB+TUU0MDAwX0FJX0NUUkxfQklUX0VYX1RSSUdfQU5BTE9HOworCX0gZWxzZSBpZiAoY21kLm1vZGUgPT0gTUU0MDAwX0FJX1RSSUdHRVJfRVhUX0FOQUxPRykgeworCQlpZiAoIWFpX2NvbnRleHQtPmJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmV4X3RyaWdfYW5hbG9nKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9leF90cmlnX3NldHVwKCk6Tm8gYW5hbG9nIHRyaWdnZXIgYXZhaWxhYmxlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfRVhfVFJJR19BTkFMT0c7CisJfSBlbHNlIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWlfY29udGV4dC0+aW50X2xvY2ssIGZsYWdzKTsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9leF90cmlnX3NldHVwKCk6SW52YWxpZCB0cmlnZ2VyIG1vZGUgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGNtZC5lZGdlID09IE1FNDAwMF9BSV9UUklHR0VSX0VYVF9FREdFX1JJU0lORykgeworCQl0bXAgJj0KKwkJICAgIH4oTUU0MDAwX0FJX0NUUkxfQklUX0VYX1RSSUdfQk9USCB8CisJCSAgICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHX0ZBTExJTkcpOworCX0gZWxzZSBpZiAoY21kLmVkZ2UgPT0gTUU0MDAwX0FJX1RSSUdHRVJfRVhUX0VER0VfRkFMTElORykgeworCQl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0VYX1RSSUdfRkFMTElORzsKKwkJdG1wICY9IH5NRTQwMDBfQUlfQ1RSTF9CSVRfRVhfVFJJR19CT1RIOworCX0gZWxzZSBpZiAoY21kLmVkZ2UgPT0gTUU0MDAwX0FJX1RSSUdHRVJfRVhUX0VER0VfQk9USCkgeworCQl0bXAgfD0KKwkJICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHX0JPVEggfAorCQkgICAgTUU0MDAwX0FJX0NUUkxfQklUX0VYX1RSSUdfRkFMTElORzsKKwl9IGVsc2UgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2FpX2V4X3RyaWdfc2V0dXAoKTpJbnZhbGlkIHRyaWdnZXIgZWRnZSBzcGVjaWZpZWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9zY19zZXR1cChtZTQwMDBfYWlfc2NfdCAqIGFyZywKKwkJCSAgICAgIG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCW1lNDAwMF9haV9zY190IGNtZDsKKwlpbnQgZXJyOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9zY19zZXR1cCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHVzZXIgKi8KKwllcnIgPSBjb3B5X2Zyb21fdXNlcigmY21kLCBhcmcsIHNpemVvZihtZTQwMDBfYWlfc2NfdCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9zY19zZXR1cCgpOkNhbid0IGNvcHkgZnJvbSB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIgPSBjbWQudmFsdWU7CisJYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXJfcmVsb2FkID0gY21kLnJlbG9hZDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBtZTQwMDBfYWlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZXAsIGNoYXIgKmJ1ZmYsIHNpemVfdCBjbnQsCisJCQkgICAgICBsb2ZmX3QgKiBvZmZwKQoreworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQgPSBmaWxlcC0+cHJpdmF0ZV9kYXRhOworCXMxNiAqYnVmZmVyID0gKHMxNiAqKSBidWZmOworCXNpemVfdCBjb3VudCA9IGNudCAvIDI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgdG1wOworCWludCBjID0gMDsKKwlpbnQgayA9IDA7CisJaW50IHJldCA9IDA7CisJd2FpdF9xdWV1ZV90IHdhaXQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX3JlYWQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlpbml0X3dhaXRxdWV1ZV9lbnRyeSgmd2FpdCwgY3VycmVudCk7CisKKwkvKiBDaGVjayBjb3VudCAqLworCWlmIChjb3VudCA8PSAwKSB7CisJCVBERUJVRygibWU0MDAwX2FpX3JlYWQoKTpDb3VudCBpcyAwXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJd2hpbGUgKGNvdW50ID4gMCkgeworCQlpZiAoZmlsZXAtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSB7CisJCQljID0gbWU0MDAwX3ZhbHVlc190b19lbmQoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJCQkgTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCk7CisJCQlpZiAoIWMpIHsKKwkJCQlQREVCVUcKKwkJCQkgICAgKCJtZTQwMDBfYWlfcmVhZCgpOlJldHVybmluZyBmcm9tIG5vbmJsb2NraW5nIHJlYWRcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQl9IGVsc2UgeworCQkJLyogQ2hlY2sgaWYgY29udmVyc2lvbiBpcyBzdGlsbCBydW5uaW5nICovCisJCQlpZiAoIQorCQkJICAgIChtZTQwMDBfaW5sKGFpX2NvbnRleHQtPnN0YXR1c19yZWcpICYKKwkJCSAgICAgTUU0MDAwX0FJX1NUQVRVU19CSVRfRlNNKSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9yZWFkKCk6Q29udmVyc2lvbiBpbnRlcnJ1cHRlZFxuIik7CisJCQkJcmV0dXJuIC1FUElQRTsKKwkJCX0KKworCQkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGFpX2NvbnRleHQtPndhaXRfcXVldWUsCisJCQkJCQkgKG1lNDAwMF92YWx1ZXNfdG9fZW5kCisJCQkJCQkgIChhaV9jb250ZXh0LT5jaXJjX2J1ZiwKKwkJCQkJCSAgIE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQpKSk7CisJCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfcmVhZCgpOldhaXQgb24gdmFsdWVzIGludGVycnVwdGVkIGZyb20gc2lnbmFsXG4iKTsKKwkJCQlyZXR1cm4gLUVJTlRSOworCQkJfQorCQl9CisKKwkJLyogT25seSByZWFkIGNvdW50IHZhbHVlcyBvciBhcyBtdWNoIGFzIGF2YWlsYWJsZSAqLworCQljID0gbWU0MDAwX3ZhbHVlc190b19lbmQoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJCSBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKTsKKwkJUERFQlVHKCJtZTQwMDBfYWlfcmVhZCgpOiVkIHZhbHVlcyB0byBlbmRcbiIsIGMpOworCQlpZiAoY291bnQgPCBjKQorCQkJYyA9IGNvdW50OworCisJCVBERUJVRygibWU0MDAwX2FpX3JlYWQoKTpDb3B5ICVkIHZhbHVlcyB0byB1c2VyIHNwYWNlXG4iLCBjKTsKKwkJayA9IDIgKiBjOworCQlrIC09IGNvcHlfdG9fdXNlcihidWZmZXIsCisJCQkJICBhaV9jb250ZXh0LT5jaXJjX2J1Zi5idWYgKworCQkJCSAgYWlfY29udGV4dC0+Y2lyY19idWYudGFpbCwgayk7CisJCWMgPSBrIC8gMjsKKwkJaWYgKCFjKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9yZWFkKCk6Q2Fubm90IGNvcHkgbmV3IHZhbHVlcyB0byB1c2VyXG4iKTsKKwkJCXJldHVybiAtRUZBVUxUOworCQl9CisKKwkJYWlfY29udGV4dC0+Y2lyY19idWYudGFpbCA9CisJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYudGFpbCArIGMpICYgKE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQgLQorCQkJCQkJICAgICAgIDEpOworCQlidWZmZXIgKz0gYzsKKwkJY291bnQgLT0gYzsKKwkJcmV0ICs9IGM7CisKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFpX2NvbnRleHQtPmludF9sb2NrLCBmbGFncyk7CisJCWlmIChtZTQwMDBfYnVmX3NwYWNlCisJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYsIE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQpKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCQkJLyogRGV0ZXJtaW5lIGludGVycnVwdCBzZXR1cCAqLworCQkJaWYgKGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyCisJCQkgICAgJiYgIWFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyX3JlbG9hZCkgeworCQkJCS8qIEVuYWJsZSBIYWxmIEZ1bGwgSW50ZXJydXB0IGFuZCBTYW1wbGUgQ291bnRlciBJbnRlcnJ1cHQgKi8KKwkJCQl0bXAgfD0KKwkJCQkgICAgTUU0MDAwX0FJX0NUUkxfQklUX1NDX0lSUSB8CisJCQkJICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9IRl9JUlE7CisJCQl9IGVsc2UgaWYgKGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyCisJCQkJICAgJiYgYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXJfcmVsb2FkKSB7CisJCQkJaWYgKGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyIDwKKwkJCQkgICAgTUU0MDAwX0FJX0ZJRk9fQ09VTlQgLyAyKSB7CisJCQkJCS8qIEVuYWJsZSBvbmx5IFNhbXBsZSBDb3VudGVyIEludGVycnVwdCAqLworCQkJCQl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX1NDX0lSUTsKKwkJCQl9IGVsc2UgeworCQkJCQkvKiBFbmFibGUgSGFsZiBGdWxsIEludGVycnVwdCBhbmQgU2FtcGxlIENvdW50ZXIgSW50ZXJydXB0ICovCisJCQkJCXRtcCB8PQorCQkJCQkgICAgTUU0MDAwX0FJX0NUUkxfQklUX1NDX0lSUSB8CisJCQkJCSAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJROworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJLyogRW5hYmxlIG9ubHkgSGFsZiBGdWxsIEludGVycnVwdCAqLworCQkJCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJROworCQkJfQorCisJCQltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhaV9jb250ZXh0LT5pbnRfbG9jaywgZmxhZ3MpOworCX0KKworCS8qIENoZWNrIGlmIGNvbnZlcnNpb24gaXMgc3RpbGwgcnVubmluZyAqLworCWlmICghKG1lNDAwMF9pbmwoYWlfY29udGV4dC0+c3RhdHVzX3JlZykgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GU00pKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfYWlfcmVhZCgpOkNvbnZlcnNpb24gbm90IHJ1bm5pbmcgYWZ0ZXIgY29tcGxldGUgcmVhZFxuIik7CisJCXJldHVybiAtRVBJUEU7CisJfQorCisJaWYgKGZpbGVwLT5mX2ZsYWdzICYgT19OT05CTE9DSykgeworCQlyZXR1cm4gKGsgPT0gMCkgPyAtRUFHQUlOIDogMiAqIHJldDsKKwl9CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX3JlYWQoKSBpcyBsZWF2ZWRcbiIpOworCXJldHVybiByZXQgKiAyOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IG1lNDAwMF9haV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlX3AsIHBvbGxfdGFibGUgKiB3YWl0KQoreworCW1lNDAwMF9haV9jb250ZXh0X3QgKmFpX2NvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfcG9sbCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWFpX2NvbnRleHQgPSBmaWxlX3AtPnByaXZhdGVfZGF0YTsKKworCS8qIFJlZ2lzdGVyIHdhaXQgcXVldWUgKi8KKwlwb2xsX3dhaXQoZmlsZV9wLCAmYWlfY29udGV4dC0+d2FpdF9xdWV1ZSwgd2FpdCk7CisKKwkvKiBHZXQgYXZhaWxhYmxlIHZhbHVlcyAqLworCWlmIChtZTQwMDBfdmFsdWVzX3RvX2VuZChhaV9jb250ZXh0LT5jaXJjX2J1ZiwgTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCkpCisJCW1hc2sgfD0gUE9MTElOIHwgUE9MTFJETk9STTsKKworCVBERUJVRygibWU0MDAwX2FpX3BvbGwoKTpSZXR1cm4gbWFzayAlbFhcbiIsIG1hc2spOworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX29mZnNldF9lbmFibGUobWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2FpX29mZnNldF9lbmFibGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX09GRlNFVDsKKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9vZmZzZXRfZGlzYWJsZShtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfb2Zmc2V0X2Rpc2FibGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgJj0gfk1FNDAwMF9BSV9DVFJMX0JJVF9PRkZTRVQ7CisJbWU0MDAwX291dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfYWlfZnVsbHNjYWxlX2VuYWJsZShtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfYWlfZnVsbHNjYWxlX2VuYWJsZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfRlVMTFNDQUxFOworCW1lNDAwMF9vdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2FpX2Z1bGxzY2FsZV9kaXNhYmxlKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9mdWxsc2NhbGVfZGlzYWJsZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCXRtcCAmPSB+TUU0MDAwX0FJX0NUUkxfQklUX0ZVTExTQ0FMRTsKKwltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9mc21fc3RhdGUoaW50ICphcmcsIG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0KQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9haV9mc21fc3RhdGUoKSBpcyBleGVjdXRlZFxuIik7CisKKwl0bXAgPQorCSAgICAobWU0MDAwX2lubChhaV9jb250ZXh0LT5zdGF0dXNfcmVnKSAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZTTSkgPyAxCisJICAgIDogMDsKKworCWlmIChwdXRfdXNlcih0bXAsIGFyZykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfYWlfZnNtX3N0YXRlKCk6Q2Fubm90IGNvcHkgdG8gdXNlclxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9haV9nZXRfY291bnRfYnVmZmVyKHVuc2lnbmVkIGxvbmcgKmFyZywKKwkJCQkgICAgICBtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCkKK3sKKwl1bnNpZ25lZCBsb25nIGM7CisJaW50IGVycjsKKworCWMgPSBtZTQwMDBfYnVmX2NvdW50KGFpX2NvbnRleHQtPmNpcmNfYnVmLCBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKTsKKworCWVyciA9IGNvcHlfdG9fdXNlcihhcmcsICZjLCBzaXplb2YodW5zaWduZWQgbG9uZykpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9haV9nZXRfY291bnRfYnVmZmVyKCk6Q2FuJ3QgY29weSB0byB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFRVBST00gc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBlZXByb21fd3JpdGVfY21kKG1lNDAwMF9haV9jb250ZXh0X3QgKiBhaV9jb250ZXh0LCB1bnNpZ25lZCBsb25nIGNtZCwKKwkJCSAgICBpbnQgbGVuZ3RoKQoreworCWludCBpOworCXVuc2lnbmVkIGxvbmcgdmFsdWU7CisKKwlDQUxMX1BERUJVRygiZWVwcm9tX3dyaXRlX2NtZCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCVBERUJVRygiZWVwcm9tX3dyaXRlX2NtZCgpOldyaXRlIGNvbW1hbmQgMHglMDhsWCB3aXRoIGxlbmd0aCA9ICVkXG4iLAorCSAgICAgICBjbWQsIGxlbmd0aCk7CisKKwkvKiBHZXQgdGhlIElDUiByZWdpc3RlciBhbmQgY2xlYXIgdGhlIHJlbGF0ZWQgYml0cyAqLworCXZhbHVlID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCXZhbHVlICY9IH4oUExYX0lDUl9NQVNLX0VFUFJPTSk7CisJbWU0MDAwX291dGwodmFsdWUsIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisKKwkvKiBSYWlzZSB0aGUgY2hpcCBzZWxlY3QgKi8KKwl2YWx1ZSB8PSBQTFhfSUNSX0JJVF9FRVBST01fQ0hJUF9TRUxFQ1Q7CisJbWU0MDAwX291dGwodmFsdWUsIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJdWRlbGF5KEVFUFJPTV9ERUxBWSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkJaWYgKGNtZCAmICgoMHgxIDw8IChsZW5ndGggLSAxKSkgPj4gaSkpIHsKKwkJCXZhbHVlIHw9IFBMWF9JQ1JfQklUX0VFUFJPTV9XUklURTsKKwkJfSBlbHNlIHsKKwkJCXZhbHVlICY9IH5QTFhfSUNSX0JJVF9FRVBST01fV1JJVEU7CisJCX0KKworCQkvKiBXcml0ZSB0byBFRVBST00gKi8KKwkJbWU0MDAwX291dGwodmFsdWUsCisJCQkgICAgYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwkJdWRlbGF5KEVFUFJPTV9ERUxBWSk7CisKKwkJLyogUmFpc2luZyBlZGdlIG9mIHRoZSBjbG9jayAqLworCQl2YWx1ZSB8PSBQTFhfSUNSX0JJVF9FRVBST01fQ0xPQ0tfU0VUOworCQltZTQwMDBfb3V0bCh2YWx1ZSwKKwkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCQl1ZGVsYXkoRUVQUk9NX0RFTEFZKTsKKworCQkvKiBGYWxsaW5nIGVkZ2Ugb2YgdGhlIGNsb2NrICovCisJCXZhbHVlICY9IH5QTFhfSUNSX0JJVF9FRVBST01fQ0xPQ0tfU0VUOworCQltZTQwMDBfb3V0bCh2YWx1ZSwKKwkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCQl1ZGVsYXkoRUVQUk9NX0RFTEFZKTsKKwl9CisKKwkvKiBDbGVhciB0aGUgY2hpcCBzZWxlY3QgKi8KKwl2YWx1ZSAmPSB+UExYX0lDUl9CSVRfRUVQUk9NX0NISVBfU0VMRUNUOworCW1lNDAwMF9vdXRsKHZhbHVlLCBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCXVkZWxheShFRVBST01fREVMQVkpOworCisJLyogV2FpdCB1bnRpbCBoYXJkd2FyZSBpcyByZWFkeSBmb3Igc3VyZSAqLworCW1kZWxheSgxMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2lnbmVkIHNob3J0IGVlcHJvbV9yZWFkX2NtZChtZTQwMDBfYWlfY29udGV4dF90ICogYWlfY29udGV4dCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGNtZCwgaW50IGxlbmd0aCkKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBsb25nIHZhbHVlOworCXVuc2lnbmVkIHNob3J0IGlkID0gMDsKKworCUNBTExfUERFQlVHKCJlZXByb21fcmVhZF9jbWQoKSBpcyBleGVjdXRlZFxuIik7CisKKwlQREVCVUcoImVlcHJvbV9yZWFkX2NtZCgpOlJlYWQgY29tbWFuZCAweCUwOGxYIHdpdGggbGVuZ3RoID0gJWRcbiIsIGNtZCwKKwkgICAgICAgbGVuZ3RoKTsKKworCS8qIEdldCB0aGUgSUNSIHJlZ2lzdGVyIGFuZCBjbGVhciB0aGUgcmVsYXRlZCBiaXRzICovCisJdmFsdWUgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJdmFsdWUgJj0gfihQTFhfSUNSX01BU0tfRUVQUk9NKTsKKworCW1lNDAwMF9vdXRsKHZhbHVlLCBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCisJLyogUmFpc2UgdGhlIGNoaXAgc2VsZWN0ICovCisJdmFsdWUgfD0gUExYX0lDUl9CSVRfRUVQUk9NX0NISVBfU0VMRUNUOworCW1lNDAwMF9vdXRsKHZhbHVlLCBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCXVkZWxheShFRVBST01fREVMQVkpOworCisJLyogV3JpdGUgdGhlIHJlYWQgY29tbWFuZCB0byB0aGUgZWVwcm9tICovCisJZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJCWlmIChjbWQgJiAoKDB4MSA8PCAobGVuZ3RoIC0gMSkpID4+IGkpKSB7CisJCQl2YWx1ZSB8PSBQTFhfSUNSX0JJVF9FRVBST01fV1JJVEU7CisJCX0gZWxzZSB7CisJCQl2YWx1ZSAmPSB+UExYX0lDUl9CSVRfRUVQUk9NX1dSSVRFOworCQl9CisJCW1lNDAwMF9vdXRsKHZhbHVlLAorCQkJICAgIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJCXVkZWxheShFRVBST01fREVMQVkpOworCisJCS8qIFJhaXNpbmcgZWRnZSBvZiB0aGUgY2xvY2sgKi8KKwkJdmFsdWUgfD0gUExYX0lDUl9CSVRfRUVQUk9NX0NMT0NLX1NFVDsKKwkJbWU0MDAwX291dGwodmFsdWUsCisJCQkgICAgYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwkJdWRlbGF5KEVFUFJPTV9ERUxBWSk7CisKKwkJLyogRmFsbGluZyBlZGdlIG9mIHRoZSBjbG9jayAqLworCQl2YWx1ZSAmPSB+UExYX0lDUl9CSVRfRUVQUk9NX0NMT0NLX1NFVDsKKwkJbWU0MDAwX291dGwodmFsdWUsCisJCQkgICAgYWlfY29udGV4dC0+Ym9hcmRfaW5mby0+cGx4X3JlZ2Jhc2UgKyBQTFhfSUNSKTsKKwkJdWRlbGF5KEVFUFJPTV9ERUxBWSk7CisJfQorCisJLyogUmVhZCB0aGUgdmFsdWUgZnJvbSB0aGUgZWVwcm9tICovCisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKwkJLyogUmFpc2luZyBlZGdlIG9mIHRoZSBjbG9jayAqLworCQl2YWx1ZSB8PSBQTFhfSUNSX0JJVF9FRVBST01fQ0xPQ0tfU0VUOworCQltZTQwMDBfb3V0bCh2YWx1ZSwKKwkJCSAgICBhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpOworCQl1ZGVsYXkoRUVQUk9NX0RFTEFZKTsKKworCQlpZiAobWU0MDAwX2lubChhaV9jb250ZXh0LT5ib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSArIFBMWF9JQ1IpICYKKwkJICAgIFBMWF9JQ1JfQklUX0VFUFJPTV9SRUFEKSB7CisJCQlpZCB8PSAoMHg4MDAwID4+IGkpOworCQkJUERFQlVHKCJlZXByb21fcmVhZF9jbWQoKTpPUiB3aXRoIDB4JTA0WFxuIiwKKwkJCSAgICAgICAoMHg4MDAwID4+IGkpKTsKKwkJfSBlbHNlIHsKKwkJCVBERUJVRygiZWVwcm9tX3JlYWRfY21kKCk6RG9udCd0IE9SXG4iKTsKKwkJfQorCisJCS8qIEZhbGxpbmcgZWRnZSBvZiB0aGUgY2xvY2sgKi8KKwkJdmFsdWUgJj0gflBMWF9JQ1JfQklUX0VFUFJPTV9DTE9DS19TRVQ7CisJCW1lNDAwMF9vdXRsKHZhbHVlLAorCQkJICAgIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJCXVkZWxheShFRVBST01fREVMQVkpOworCX0KKworCS8qIENsZWFyIHRoZSBjaGlwIHNlbGVjdCAqLworCXZhbHVlICY9IH5QTFhfSUNSX0JJVF9FRVBST01fQ0hJUF9TRUxFQ1Q7CisJbWU0MDAwX291dGwodmFsdWUsIGFpX2NvbnRleHQtPmJvYXJkX2luZm8tPnBseF9yZWdiYXNlICsgUExYX0lDUik7CisJdWRlbGF5KEVFUFJPTV9ERUxBWSk7CisKKwlyZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2VlcHJvbV93cml0ZShtZTQwMDBfZWVwcm9tX3QgKiBhcmcsCisJCQkgICAgICAgbWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJaW50IGVycjsKKwltZTQwMDBfZWVwcm9tX3Qgc2V0dXA7CisJdW5zaWduZWQgbG9uZyBjbWQ7CisJdW5zaWduZWQgbG9uZyBkYXRlX2hpZ2g7CisJdW5zaWduZWQgbG9uZyBkYXRlX2xvdzsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfZWVwcm9tX3dyaXRlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJZXJyID0gY29weV9mcm9tX3VzZXIoJnNldHVwLCBhcmcsIHNpemVvZihzZXR1cCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9lZXByb21fd3JpdGUoKTpDYW5ub3QgY29weSBmcm9tIHVzZXJcbiIpOworCQlyZXR1cm4gZXJyOworCX0KKworCS8qIEVuYWJsZSB3cml0aW5nICovCisJZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBNRTQwMDBfRUVQUk9NX0NNRF9XUklURV9FTkFCTEUsCisJCQkgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1dSSVRFX0VOQUJMRSk7CisKKwkvKiBDb21tYW5kIGZvciBkYXRlICovCisJZGF0ZV9oaWdoID0gKHNldHVwLmRhdGUgJiAweEZGRkYwMDAwKSA+PiAxNjsKKwlkYXRlX2xvdyA9IChzZXR1cC5kYXRlICYgMHgwMDAwRkZGRik7CisKKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9EQVRFX0hJR0ggPDwKKwkJCQkgICAgICAgTUU0MDAwX0VFUFJPTV9EQVRBX0xFTkdUSCkgfCAoMHhGRkZGICYKKwkJCQkJCQkJICAgICAodW5zaWduZWQKKwkJCQkJCQkJICAgICAgbG9uZykKKwkJCQkJCQkJICAgICBkYXRlX2hpZ2gpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9EQVRFX0xPVyA8PAorCQkJCSAgICAgICBNRTQwMDBfRUVQUk9NX0RBVEFfTEVOR1RIKSB8ICgweEZGRkYgJgorCQkJCQkJCQkgICAgICh1bnNpZ25lZAorCQkJCQkJCQkgICAgICBsb25nKQorCQkJCQkJCQkgICAgIGRhdGVfbG93KTsKKwllcnIgPSBlZXByb21fd3JpdGVfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1dSSVRFKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJLyogQ29tbWFuZCBmb3IgdW5pcG9sYXIgMTBWIG9mZnNldCAqLworCWNtZCA9CisJICAgIE1FNDAwMF9FRVBST01fQ01EX1dSSVRFIHwgKE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9VTklfT0ZGU0VUIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgdW5pXzEwX29mZnNldCk7CisJZXJyID0gZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIENvbW1hbmQgZm9yIHVuaXBvbGFyIDEwViBmdWxsc2NhbGUgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzFfVU5JX0ZVTExTQ0FMRSA8PAorCQkJCSAgICAgICBNRTQwMDBfRUVQUk9NX0RBVEFfTEVOR1RIKSB8ICgweEZGRkYgJgorCQkJCQkJCQkgICAgICh1bnNpZ25lZAorCQkJCQkJCQkgICAgICBsb25nKQorCQkJCQkJCQkgICAgIHNldHVwLgorCQkJCQkJCQkgICAgIHVuaV8xMF9mdWxsc2NhbGUpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciB1bmlwb2xhciAyLDVWIG9mZnNldCAqLworCWNtZCA9CisJICAgIE1FNDAwMF9FRVBST01fQ01EX1dSSVRFIHwgKE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9VTklfT0ZGU0VUIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgdW5pXzJfNV9vZmZzZXQpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciB1bmlwb2xhciAyLDVWIGZ1bGxzY2FsZSAqLworCWNtZCA9CisJICAgIE1FNDAwMF9FRVBST01fQ01EX1dSSVRFIHwgKE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9VTklfRlVMTFNDQUxFIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgdW5pXzJfNV9mdWxsc2NhbGUpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciBiaXBvbGFyIDEwViBvZmZzZXQgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzFfQklfT0ZGU0VUIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgYmlfMTBfb2Zmc2V0KTsKKwllcnIgPSBlZXByb21fd3JpdGVfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1dSSVRFKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJLyogQ29tbWFuZCBmb3IgYmlwb2xhciAxMFYgZnVsbHNjYWxlICovCisJY21kID0KKwkgICAgTUU0MDAwX0VFUFJPTV9DTURfV1JJVEUgfCAoTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl8xX0JJX0ZVTExTQ0FMRSA8PAorCQkJCSAgICAgICBNRTQwMDBfRUVQUk9NX0RBVEFfTEVOR1RIKSB8ICgweEZGRkYgJgorCQkJCQkJCQkgICAgICh1bnNpZ25lZAorCQkJCQkJCQkgICAgICBsb25nKQorCQkJCQkJCQkgICAgIHNldHVwLgorCQkJCQkJCQkgICAgIGJpXzEwX2Z1bGxzY2FsZSk7CisJZXJyID0gZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIENvbW1hbmQgZm9yIGJpcG9sYXIgMiw1ViBvZmZzZXQgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfQklfT0ZGU0VUIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgYmlfMl81X29mZnNldCk7CisJZXJyID0gZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIENvbW1hbmQgZm9yIGJpcG9sYXIgMiw1ViBmdWxsc2NhbGUgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfQklfRlVMTFNDQUxFIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgYmlfMl81X2Z1bGxzY2FsZSk7CisJZXJyID0gZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIENvbW1hbmQgZm9yIGRpZmZlcmVudGlhbCAxMFYgb2Zmc2V0ICovCisJY21kID0KKwkgICAgTUU0MDAwX0VFUFJPTV9DTURfV1JJVEUgfCAoTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl8xX0RJRkZfT0ZGU0VUIDw8CisJCQkJICAgICAgIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgpIHwgKDB4RkZGRiAmCisJCQkJCQkJCSAgICAgKHVuc2lnbmVkCisJCQkJCQkJCSAgICAgIGxvbmcpCisJCQkJCQkJCSAgICAgc2V0dXAuCisJCQkJCQkJCSAgICAgZGlmZl8xMF9vZmZzZXQpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciBkaWZmZXJlbnRpYWwgMTBWIGZ1bGxzY2FsZSAqLworCWNtZCA9CisJICAgIE1FNDAwMF9FRVBST01fQ01EX1dSSVRFIHwgKE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9ESUZGX0ZVTExTQ0FMRQorCQkJCSAgICAgICA8PCBNRTQwMDBfRUVQUk9NX0RBVEFfTEVOR1RIKSB8ICgweEZGRkYgJgorCQkJCQkJCQkJKHVuc2lnbmVkCisJCQkJCQkJCQkgbG9uZykKKwkJCQkJCQkJCXNldHVwLgorCQkJCQkJCQkJZGlmZl8xMF9mdWxsc2NhbGUpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciBkaWZmZXJlbnRpYWwgMiw1ViBvZmZzZXQgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfRElGRl9PRkZTRVQgPDwKKwkJCQkgICAgICAgTUU0MDAwX0VFUFJPTV9EQVRBX0xFTkdUSCkgfCAoMHhGRkZGICYKKwkJCQkJCQkJICAgICAodW5zaWduZWQKKwkJCQkJCQkJICAgICAgbG9uZykKKwkJCQkJCQkJICAgICBzZXR1cC4KKwkJCQkJCQkJICAgICBkaWZmXzJfNV9vZmZzZXQpOworCWVyciA9IGVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwkvKiBDb21tYW5kIGZvciBkaWZmZXJlbnRpYWwgMiw1ViBmdWxsc2NhbGUgKi8KKwljbWQgPQorCSAgICBNRTQwMDBfRUVQUk9NX0NNRF9XUklURSB8IChNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfRElGRl9GVUxMU0NBTEUKKwkJCQkgICAgICAgPDwgTUU0MDAwX0VFUFJPTV9EQVRBX0xFTkdUSCkgfCAoMHhGRkZGICYKKwkJCQkJCQkJCSh1bnNpZ25lZAorCQkJCQkJCQkJIGxvbmcpCisJCQkJCQkJCQlzZXR1cC4KKwkJCQkJCQkJCWRpZmZfMl81X2Z1bGxzY2FsZSk7CisJZXJyID0gZWVwcm9tX3dyaXRlX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIERpc2FibGUgd3JpdGluZyAqLworCWVlcHJvbV93cml0ZV9jbWQoYWlfY29udGV4dCwgTUU0MDAwX0VFUFJPTV9DTURfV1JJVEVfRElTQUJMRSwKKwkJCSBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEVfRElTQUJMRSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfZWVwcm9tX3JlYWQobWU0MDAwX2VlcHJvbV90ICogYXJnLAorCQkJICAgICAgbWU0MDAwX2FpX2NvbnRleHRfdCAqIGFpX2NvbnRleHQpCit7CisJaW50IGVycjsKKwl1bnNpZ25lZCBsb25nIGNtZDsKKwltZTQwMDBfZWVwcm9tX3Qgc2V0dXA7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2VlcHJvbV9yZWFkKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ29tbWFuZCBmb3IgZGF0ZSAqLworCWNtZCA9IE1FNDAwMF9FRVBST01fQ01EX1JFQUQgfCBNRTQwMDBfRUVQUk9NX0FEUl9EQVRFX0hJR0g7CisJc2V0dXAuZGF0ZSA9CisJICAgIGVlcHJvbV9yZWFkX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9SRUFEKTsKKwlzZXR1cC5kYXRlIDw8PSAxNjsKKwljbWQgPSBNRTQwMDBfRUVQUk9NX0NNRF9SRUFEIHwgTUU0MDAwX0VFUFJPTV9BRFJfREFURV9MT1c7CisJc2V0dXAuZGF0ZSB8PQorCSAgICBlZXByb21fcmVhZF9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfUkVBRCk7CisKKwkvKiBDb21tYW5kIGZvciB1bmlwb2xhciAxMFYgb2Zmc2V0ICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9VTklfT0ZGU0VUOworCXNldHVwLnVuaV8xMF9vZmZzZXQgPQorCSAgICBlZXByb21fcmVhZF9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfUkVBRCk7CisKKwkvKiBDb21tYW5kIGZvciB1bmlwb2xhciAxMFYgZnVsbHNjYWxlICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9VTklfRlVMTFNDQUxFOworCXNldHVwLnVuaV8xMF9mdWxsc2NhbGUgPQorCSAgICBlZXByb21fcmVhZF9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfUkVBRCk7CisKKwkvKiBDb21tYW5kIGZvciB1bmlwb2xhciAyLDVWIG9mZnNldCAqLworCWNtZCA9IE1FNDAwMF9FRVBST01fQ01EX1JFQUQgfCBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfVU5JX09GRlNFVDsKKwlzZXR1cC51bmlfMl81X29mZnNldCA9CisJICAgIGVlcHJvbV9yZWFkX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9SRUFEKTsKKworCS8qIENvbW1hbmQgZm9yIHVuaXBvbGFyIDIsNVYgZnVsbHNjYWxlICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9VTklfRlVMTFNDQUxFOworCXNldHVwLnVuaV8yXzVfZnVsbHNjYWxlID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJLyogQ29tbWFuZCBmb3IgYmlwb2xhciAxMFYgb2Zmc2V0ICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9CSV9PRkZTRVQ7CisJc2V0dXAuYmlfMTBfb2Zmc2V0ID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJLyogQ29tbWFuZCBmb3IgYmlwb2xhciAxMFYgZnVsbHNjYWxlICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9CSV9GVUxMU0NBTEU7CisJc2V0dXAuYmlfMTBfZnVsbHNjYWxlID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJLyogQ29tbWFuZCBmb3IgYmlwb2xhciAyLDVWIG9mZnNldCAqLworCWNtZCA9IE1FNDAwMF9FRVBST01fQ01EX1JFQUQgfCBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfQklfT0ZGU0VUOworCXNldHVwLmJpXzJfNV9vZmZzZXQgPQorCSAgICBlZXByb21fcmVhZF9jbWQoYWlfY29udGV4dCwgY21kLCBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfUkVBRCk7CisKKwkvKiBDb21tYW5kIGZvciBiaXBvbGFyIDIsNVYgZnVsbHNjYWxlICovCisJY21kID0gTUU0MDAwX0VFUFJPTV9DTURfUkVBRCB8IE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9CSV9GVUxMU0NBTEU7CisJc2V0dXAuYmlfMl81X2Z1bGxzY2FsZSA9CisJICAgIGVlcHJvbV9yZWFkX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9SRUFEKTsKKworCS8qIENvbW1hbmQgZm9yIGRpZmZlcm50aWFsIDEwViBvZmZzZXQgKi8KKwljbWQgPSBNRTQwMDBfRUVQUk9NX0NNRF9SRUFEIHwgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl8xX0RJRkZfT0ZGU0VUOworCXNldHVwLmRpZmZfMTBfb2Zmc2V0ID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJLyogQ29tbWFuZCBmb3IgZGlmZmVyZW50aWFsIDEwViBmdWxsc2NhbGUgKi8KKwljbWQgPSBNRTQwMDBfRUVQUk9NX0NNRF9SRUFEIHwgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl8xX0RJRkZfRlVMTFNDQUxFOworCXNldHVwLmRpZmZfMTBfZnVsbHNjYWxlID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJLyogQ29tbWFuZCBmb3IgZGlmZmVybnRpYWwgMiw1ViBvZmZzZXQgKi8KKwljbWQgPSBNRTQwMDBfRUVQUk9NX0NNRF9SRUFEIHwgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl80X0RJRkZfT0ZGU0VUOworCXNldHVwLmRpZmZfMl81X29mZnNldCA9CisJICAgIGVlcHJvbV9yZWFkX2NtZChhaV9jb250ZXh0LCBjbWQsIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9SRUFEKTsKKworCS8qIENvbW1hbmQgZm9yIGRpZmZlcmVudGlhbCAyLDVWIGZ1bGxzY2FsZSAqLworCWNtZCA9IE1FNDAwMF9FRVBST01fQ01EX1JFQUQgfCBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfRElGRl9GVUxMU0NBTEU7CisJc2V0dXAuZGlmZl8yXzVfZnVsbHNjYWxlID0KKwkgICAgZWVwcm9tX3JlYWRfY21kKGFpX2NvbnRleHQsIGNtZCwgTUU0MDAwX0VFUFJPTV9DTURfTEVOR1RIX1JFQUQpOworCisJZXJyID0gY29weV90b191c2VyKGFyZywgJnNldHVwLCBzaXplb2Yoc2V0dXApKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfZWVwcm9tX3JlYWQoKTpDYW5ub3QgY29weSB0byB1c2VyXG4iKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRElPIHN0dWZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IG1lNDAwMF9kaW9faW9jdGwoc3RydWN0IGlub2RlICppbm9kZV9wLCBzdHJ1Y3QgZmlsZSAqZmlsZV9wLAorCQkJICAgIHVuc2lnbmVkIGludCBzZXJ2aWNlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwltZTQwMDBfZGlvX2NvbnRleHRfdCAqZGlvX2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2Rpb19pb2N0bCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWRpb19jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoX0lPQ19UWVBFKHNlcnZpY2UpICE9IE1FNDAwMF9NQUdJQykgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9kaW9faW9jdGwoKTpXcm9uZyBtYWdpYyBudW1iZXJcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisJaWYgKF9JT0NfTlIoc2VydmljZSkgPiBNRTQwMDBfSU9DVExfTUFYTlIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfZGlvX2lvY3RsKCk6U2VydmljZSBudW1iZXIgdG8gaGlnaFxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKworCXN3aXRjaCAoc2VydmljZSkgeworCWNhc2UgTUU0MDAwX0RJT19DT05GSUc6CisJCXJldHVybiBtZTQwMDBfZGlvX2NvbmZpZygobWU0MDAwX2Rpb19jb25maWdfdCAqKSBhcmcsCisJCQkJCSBkaW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfRElPX1NFVF9CWVRFOgorCQlyZXR1cm4gbWU0MDAwX2Rpb19zZXRfYnl0ZSgobWU0MDAwX2Rpb19ieXRlX3QgKikgYXJnLAorCQkJCQkgICBkaW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfRElPX0dFVF9CWVRFOgorCQlyZXR1cm4gbWU0MDAwX2Rpb19nZXRfYnl0ZSgobWU0MDAwX2Rpb19ieXRlX3QgKikgYXJnLAorCQkJCQkgICBkaW9fY29udGV4dCk7CisJY2FzZSBNRTQwMDBfRElPX1JFU0VUOgorCQlyZXR1cm4gbWU0MDAwX2Rpb19yZXNldChkaW9fY29udGV4dCk7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9faW9jdGwoKTpJbnZhbGlkIHNlcnZpY2UgbnVtYmVyICVkXG4iLAorCQkgICAgICAgc2VydmljZSk7CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfZGlvX2NvbmZpZyhtZTQwMDBfZGlvX2NvbmZpZ190ICogYXJnLAorCQkJICAgICBtZTQwMDBfZGlvX2NvbnRleHRfdCAqIGRpb19jb250ZXh0KQoreworCW1lNDAwMF9kaW9fY29uZmlnX3QgY21kOworCXUzMiB0bXA7CisJaW50IGVycjsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfZGlvX2NvbmZpZygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHVzZXIgKi8KKwllcnIgPSBjb3B5X2Zyb21fdXNlcigmY21kLCBhcmcsIHNpemVvZihtZTQwMDBfZGlvX2NvbmZpZ190KSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19jb25maWcoKTpDYW4ndCBjb3B5IGZyb20gdXNlciBzcGFjZVxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCS8qIENoZWNrIHBvcnQgcGFyYW1ldGVyICovCisJaWYgKGNtZC5wb3J0ID49IGRpb19jb250ZXh0LT5kaW9fY291bnQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6UG9ydCAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkgICAgICAgY21kLnBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlQREVCVUcoIm1lNDAwMF9kaW9fY29uZmlnKCk6IHBvcnQgJWQsIG1vZGUgJWQsIGZ1bmN0aW9uICVkXG4iLCBjbWQucG9ydCwKKwkgICAgICAgY21kLm1vZGUsIGNtZC5mdW5jdGlvbik7CisKKwlpZiAoY21kLnBvcnQgPT0gTUU0MDAwX0RJT19QT1JUX0EpIHsKKwkJaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fUE9SVF9JTlBVVCkgeworCQkJLyogQ2hlY2sgaWYgb3B0byBpc29sYXRlZCB2ZXJzaW9uICovCisJCQlpZiAoIShtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5kaXJfcmVnKSAmIDB4MSkpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfZGlvX2NvbmZpZygpOkNhbm5vdCBzZXQgdG8gaW5wdXQgb24gb3B0byBpc29sYXRlZCB2ZXJzaW9uc1xuIik7CisJCQkJcmV0dXJuIC1FSU87CisJCQl9CisKKwkJCXRtcCA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCXRtcCAmPQorCQkJICAgIH4oTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzAgfAorCQkJICAgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzEpOworCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fUE9SVF9PVVRQVVQpIHsKKwkJCXRtcCA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCXRtcCAmPQorCQkJICAgIH4oTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzAgfAorCQkJICAgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzEpOworCQkJdG1wIHw9IE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8wOworCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fRklGT19MT1cpIHsKKwkJCXRtcCA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCXRtcCAmPQorCQkJICAgIH4oTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzAgfAorCQkJICAgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzEgfAorCQkJICAgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9GSUZPX0hJR0hfMCk7CisJCQl0bXAgfD0KKwkJCSAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMCB8CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzE7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSBpZiAoY21kLm1vZGUgPT0gTUU0MDAwX0RJT19GSUZPX0hJR0gpIHsKKwkJCXRtcCA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCXRtcCB8PQorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8wIHwKKwkJCSAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMSB8CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9GSUZPX0hJR0hfMDsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19jb25maWcoKTpNb2RlICVkIGlzIG5vdCBhdmFpbGFibGVcbiIsCisJCQkgICAgICAgY21kLm1vZGUpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9IGVsc2UgaWYgKGNtZC5wb3J0ID09IE1FNDAwMF9ESU9fUE9SVF9CKSB7CisJCWlmIChjbWQubW9kZSA9PSBNRTQwMDBfRElPX1BPUlRfSU5QVVQpIHsKKwkJCS8qIE9ubHkgZG8gYW55dGhpbmcgd2hlbiBUVEwgdmVyc2lvbiBpcyBpbnN0YWxsZWQgKi8KKwkJCWlmICgobWU0MDAwX2lubChkaW9fY29udGV4dC0+ZGlyX3JlZykgJiAweDEpKSB7CisJCQkJdG1wID0gbWU0MDAwX2lubChkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQkJCXRtcCAmPQorCQkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8yIHwKKwkJCQkgICAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMyk7CisJCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQkJfQorCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fUE9SVF9PVVRQVVQpIHsKKwkJCS8qIENoZWNrIGlmIG9wdG8gaXNvbGF0ZWQgdmVyc2lvbiAqLworCQkJaWYgKCEobWU0MDAwX2lubChkaW9fY29udGV4dC0+ZGlyX3JlZykgJiAweDEpKSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19jb25maWcoKTpDYW5ub3Qgc2V0IHRvIG91dHB1dCBvbiBvcHRvIGlzb2xhdGVkIHZlcnNpb25zXG4iKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKworCQkJdG1wID0gbWU0MDAwX2lubChkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQkJdG1wICY9CisJCQkgICAgfihNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMiB8CisJCQkgICAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMyk7CisJCQl0bXAgfD0gTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzI7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSBpZiAoY21kLm1vZGUgPT0gTUU0MDAwX0RJT19GSUZPX0xPVykgeworCQkJLyogQ2hlY2sgaWYgb3B0byBpc29sYXRlZCB2ZXJzaW9uICovCisJCQlpZiAoIShtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5kaXJfcmVnKSAmIDB4MSkpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkgICAgICAgIk1FNDAwMDptZTQwMDBfZGlvX2NvbmZpZygpOkNhbm5vdCBzZXQgdG8gRklGTyBsb3cgb3V0cHV0IG9uIG9wdG8gaXNvbGF0ZWQgdmVyc2lvbnNcbiIpOworCQkJCXJldHVybiAtRUlPOworCQkJfQorCisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8yIHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8zIHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzEpOworCQkJdG1wIHw9CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzIgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8zOworCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fRklGT19ISUdIKSB7CisJCQkvKiBDaGVjayBpZiBvcHRvIGlzb2xhdGVkIHZlcnNpb24gKi8KKwkJCWlmICghKG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmRpcl9yZWcpICYgMHgxKSkgeworCQkJCXByaW50ayhLRVJOX0VSUgorCQkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6Q2Fubm90IHNldCB0byBGSUZPIGhpZ2ggb3V0cHV0IG9uIG9wdG8gaXNvbGF0ZWQgdmVyc2lvbnNcbiIpOworCQkJCXJldHVybiAtRUlPOworCQkJfQorCisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgfD0KKwkJCSAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMiB8CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzMgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzE7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6TW9kZSAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkJICAgICAgIGNtZC5tb2RlKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfSBlbHNlIGlmIChjbWQucG9ydCA9PSBNRTQwMDBfRElPX1BPUlRfQykgeworCQlpZiAoY21kLm1vZGUgPT0gTUU0MDAwX0RJT19QT1JUX0lOUFVUKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV80IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV81KTsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQubW9kZSA9PSBNRTQwMDBfRElPX1BPUlRfT1VUUFVUKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV80IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV81KTsKKwkJCXRtcCB8PSBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfNDsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQubW9kZSA9PSBNRTQwMDBfRElPX0ZJRk9fTE9XKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV80IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV81IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzIpOworCQkJdG1wIHw9CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzQgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV81OworCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fRklGT19ISUdIKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgfD0KKwkJCSAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfNCB8CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzUgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzI7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6TW9kZSAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkJICAgICAgIGNtZC5tb2RlKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfSBlbHNlIGlmIChjbWQucG9ydCA9PSBNRTQwMDBfRElPX1BPUlRfRCkgeworCQlpZiAoY21kLm1vZGUgPT0gTUU0MDAwX0RJT19QT1JUX0lOUFVUKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV82IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV83KTsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQubW9kZSA9PSBNRTQwMDBfRElPX1BPUlRfT1VUUFVUKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV82IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV83KTsKKwkJCXRtcCB8PSBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfNjsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQubW9kZSA9PSBNRTQwMDBfRElPX0ZJRk9fTE9XKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgJj0KKwkJCSAgICB+KE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV82IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV83IHwKKwkJCSAgICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzMpOworCQkJdG1wIHw9CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzYgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV83OworCQkJbWU0MDAwX291dGwodG1wLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl9IGVsc2UgaWYgKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fRklGT19ISUdIKSB7CisJCQl0bXAgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgfD0KKwkJCSAgICBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfNiB8CisJCQkgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzcgfAorCQkJICAgIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzM7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6TW9kZSAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkJICAgICAgIGNtZC5tb2RlKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfSBlbHNlIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6UG9ydCAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkgICAgICAgY21kLnBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlQREVCVUcoIm1lNDAwMF9kaW9fY29uZmlnKCk6IHBvcnQgJWQsIG1vZGUgJWQsIGZ1bmN0aW9uICVkXG4iLCBjbWQucG9ydCwKKwkgICAgICAgY21kLm1vZGUsIGNtZC5mdW5jdGlvbik7CisKKwlpZiAoKGNtZC5tb2RlID09IE1FNDAwMF9ESU9fRklGT19ISUdIKQorCSAgICB8fCAoY21kLm1vZGUgPT0gTUU0MDAwX0RJT19GSUZPX0xPVykpIHsKKwkJdG1wID0gbWU0MDAwX2lubChkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgJj0KKwkJICAgIH4oTUU0MDAwX0RJT19DVFJMX0JJVF9GVU5DVElPTl8wIHwKKwkJICAgICAgTUU0MDAwX0RJT19DVFJMX0JJVF9GVU5DVElPTl8xKTsKKwkJaWYgKGNtZC5mdW5jdGlvbiA9PSBNRTQwMDBfRElPX0ZVTkNUSU9OX1BBVFRFUk4pIHsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQuZnVuY3Rpb24gPT0gTUU0MDAwX0RJT19GVU5DVElPTl9ERU1VWCkgeworCQkJdG1wIHw9IE1FNDAwMF9ESU9fQ1RSTF9CSVRfRlVOQ1RJT05fMDsKKwkJCW1lNDAwMF9vdXRsKHRtcCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJfSBlbHNlIGlmIChjbWQuZnVuY3Rpb24gPT0gTUU0MDAwX0RJT19GVU5DVElPTl9NVVgpIHsKKwkJCXRtcCB8PSBNRTQwMDBfRElPX0NUUkxfQklUX0ZVTkNUSU9OXzE7CisJCQltZTQwMDBfb3V0bCh0bXAsIGRpb19jb250ZXh0LT5jdHJsX3JlZyk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fY29uZmlnKCk6SW52YWxpZCBwb3J0IGZ1bmN0aW9uIHNwZWNpZmllZFxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9kaW9fc2V0X2J5dGUobWU0MDAwX2Rpb19ieXRlX3QgKiBhcmcsCisJCQkgICAgICAgbWU0MDAwX2Rpb19jb250ZXh0X3QgKiBkaW9fY29udGV4dCkKK3sKKwltZTQwMDBfZGlvX2J5dGVfdCBjbWQ7CisJaW50IGVycjsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfZGlvX3NldF9ieXRlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjbWQsIGFyZywgc2l6ZW9mKG1lNDAwMF9kaW9fYnl0ZV90KSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19zZXRfYnl0ZSgpOkNhbid0IGNvcHkgZnJvbSB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJLyogQ2hlY2sgcG9ydCBwYXJhbWV0ZXIgKi8KKwlpZiAoY21kLnBvcnQgPj0gZGlvX2NvbnRleHQtPmRpb19jb3VudCkgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19zZXRfYnl0ZSgpOlBvcnQgJWQgaXMgbm90IGF2YWlsYWJsZVxuIiwKKwkJICAgICAgIGNtZC5wb3J0KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGNtZC5wb3J0ID09IE1FNDAwMF9ESU9fUE9SVF9BKSB7CisJCWlmICgobWU0MDAwX2lubChkaW9fY29udGV4dC0+Y3RybF9yZWcpICYgMHgzKSAhPSAweDEpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19zZXRfYnl0ZSgpOlBvcnQgJWQgaXMgbm90IGluIG91dHB1dCBtb2RlXG4iLAorCQkJICAgICAgIGNtZC5wb3J0KTsKKwkJCXJldHVybiAtRUlPOworCQl9CisJCW1lNDAwMF9vdXRsKGNtZC5ieXRlLCBkaW9fY29udGV4dC0+cG9ydF8wX3JlZyk7CisJfSBlbHNlIGlmIChjbWQucG9ydCA9PSBNRTQwMDBfRElPX1BPUlRfQikgeworCQlpZiAoKG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPmN0cmxfcmVnKSAmIDB4QykgIT0gMHg0KSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fc2V0X2J5dGUoKTpQb3J0ICVkIGlzIG5vdCBpbiBvdXRwdXQgbW9kZVxuIiwKKwkJCSAgICAgICBjbWQucG9ydCk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQltZTQwMDBfb3V0bChjbWQuYnl0ZSwgZGlvX2NvbnRleHQtPnBvcnRfMV9yZWcpOworCX0gZWxzZSBpZiAoY21kLnBvcnQgPT0gTUU0MDAwX0RJT19QT1JUX0MpIHsKKwkJaWYgKChtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZykgJiAweDMwKSAhPSAweDEwKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fc2V0X2J5dGUoKTpQb3J0ICVkIGlzIG5vdCBpbiBvdXRwdXQgbW9kZVxuIiwKKwkJCSAgICAgICBjbWQucG9ydCk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQltZTQwMDBfb3V0bChjbWQuYnl0ZSwgZGlvX2NvbnRleHQtPnBvcnRfMl9yZWcpOworCX0gZWxzZSBpZiAoY21kLnBvcnQgPT0gTUU0MDAwX0RJT19QT1JUX0QpIHsKKwkJaWYgKChtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5jdHJsX3JlZykgJiAweEMwKSAhPSAweDQwKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fc2V0X2J5dGUoKTpQb3J0ICVkIGlzIG5vdCBpbiBvdXRwdXQgbW9kZVxuIiwKKwkJCSAgICAgICBjbWQucG9ydCk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQltZTQwMDBfb3V0bChjbWQuYnl0ZSwgZGlvX2NvbnRleHQtPnBvcnRfM19yZWcpOworCX0gZWxzZSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfZGlvX3NldF9ieXRlKCk6UG9ydCAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkgICAgICAgY21kLnBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfZGlvX2dldF9ieXRlKG1lNDAwMF9kaW9fYnl0ZV90ICogYXJnLAorCQkJICAgICAgIG1lNDAwMF9kaW9fY29udGV4dF90ICogZGlvX2NvbnRleHQpCit7CisJbWU0MDAwX2Rpb19ieXRlX3QgY21kOworCWludCBlcnI7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2Rpb19nZXRfYnl0ZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHVzZXIgKi8KKwllcnIgPSBjb3B5X2Zyb21fdXNlcigmY21kLCBhcmcsIHNpemVvZihtZTQwMDBfZGlvX2J5dGVfdCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fZ2V0X2J5dGUoKTpDYW4ndCBjb3B5IGZyb20gdXNlciBzcGFjZVxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCS8qIENoZWNrIHBvcnQgcGFyYW1ldGVyICovCisJaWYgKGNtZC5wb3J0ID49IGRpb19jb250ZXh0LT5kaW9fY291bnQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9fZ2V0X2J5dGUoKTpQb3J0ICVkIGlzIG5vdCBhdmFpbGFibGVcbiIsCisJCSAgICAgICBjbWQucG9ydCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChjbWQucG9ydCA9PSBNRTQwMDBfRElPX1BPUlRfQSkgeworCQljbWQuYnl0ZSA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPnBvcnRfMF9yZWcpICYgMHhGRjsKKwl9IGVsc2UgaWYgKGNtZC5wb3J0ID09IE1FNDAwMF9ESU9fUE9SVF9CKSB7CisJCWNtZC5ieXRlID0gbWU0MDAwX2lubChkaW9fY29udGV4dC0+cG9ydF8xX3JlZykgJiAweEZGOworCX0gZWxzZSBpZiAoY21kLnBvcnQgPT0gTUU0MDAwX0RJT19QT1JUX0MpIHsKKwkJY21kLmJ5dGUgPSBtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5wb3J0XzJfcmVnKSAmIDB4RkY7CisJfSBlbHNlIGlmIChjbWQucG9ydCA9PSBNRTQwMDBfRElPX1BPUlRfRCkgeworCQljbWQuYnl0ZSA9IG1lNDAwMF9pbmwoZGlvX2NvbnRleHQtPnBvcnRfM19yZWcpICYgMHhGRjsKKwl9IGVsc2UgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19nZXRfYnl0ZSgpOlBvcnQgJWQgaXMgbm90IGF2YWlsYWJsZVxuIiwKKwkJICAgICAgIGNtZC5wb3J0KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogQ29weSByZXN1bHQgYmFjayB0byB1c2VyICovCisJZXJyID0gY29weV90b191c2VyKGFyZywgJmNtZCwgc2l6ZW9mKG1lNDAwMF9kaW9fYnl0ZV90KSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2Rpb19nZXRfYnl0ZSgpOkNhbid0IGNvcHkgdG8gdXNlciBzcGFjZVxuIik7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9kaW9fcmVzZXQobWU0MDAwX2Rpb19jb250ZXh0X3QgKiBkaW9fY29udGV4dCkKK3sKKwlDQUxMX1BERUJVRygibWU0MDAwX2Rpb19yZXNldCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENsZWFyIHRoZSBjb250cm9sIHJlZ2lzdGVyICovCisJbWU0MDAwX291dGwoMCwgZGlvX2NvbnRleHQtPmN0cmxfcmVnKTsKKworCS8qIENoZWNrIGZvciBvcHRvIGlzb2xhdGVkIHZlcnNpb24gKi8KKwlpZiAoIShtZTQwMDBfaW5sKGRpb19jb250ZXh0LT5kaXJfcmVnKSAmIDB4MSkpIHsKKwkJbWU0MDAwX291dGwoMHgxLCBkaW9fY29udGV4dC0+Y3RybF9yZWcpOworCQltZTQwMDBfb3V0bCgweDAsIGRpb19jb250ZXh0LT5wb3J0XzBfcmVnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ09VTlRFUiBTVFVGRiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IG1lNDAwMF9jbnRfaW9jdGwoc3RydWN0IGlub2RlICppbm9kZV9wLCBzdHJ1Y3QgZmlsZSAqZmlsZV9wLAorCQkJICAgIHVuc2lnbmVkIGludCBzZXJ2aWNlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwltZTQwMDBfY250X2NvbnRleHRfdCAqY250X2NvbnRleHQ7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2NudF9pb2N0bCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWNudF9jb250ZXh0ID0gZmlsZV9wLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoX0lPQ19UWVBFKHNlcnZpY2UpICE9IE1FNDAwMF9NQUdJQykgeworCQlwcmludGsoS0VSTl9FUlIgIm1lNDAwMF9kaW9faW9jdGwoKTpXcm9uZyBtYWdpYyBudW1iZXJcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisJaWYgKF9JT0NfTlIoc2VydmljZSkgPiBNRTQwMDBfSU9DVExfTUFYTlIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfZGlvX2lvY3RsKCk6U2VydmljZSBudW1iZXIgdG8gaGlnaFxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKworCXN3aXRjaCAoc2VydmljZSkgeworCWNhc2UgTUU0MDAwX0NOVF9SRUFEOgorCQlyZXR1cm4gbWU0MDAwX2NudF9yZWFkKChtZTQwMDBfY250X3QgKikgYXJnLCBjbnRfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQ05UX1dSSVRFOgorCQlyZXR1cm4gbWU0MDAwX2NudF93cml0ZSgobWU0MDAwX2NudF90ICopIGFyZywgY250X2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0NOVF9DT05GSUc6CisJCXJldHVybiBtZTQwMDBfY250X2NvbmZpZygobWU0MDAwX2NudF9jb25maWdfdCAqKSBhcmcsCisJCQkJCSBjbnRfY29udGV4dCk7CisJY2FzZSBNRTQwMDBfQ05UX1JFU0VUOgorCQlyZXR1cm4gbWU0MDAwX2NudF9yZXNldChjbnRfY29udGV4dCk7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9kaW9faW9jdGwoKTpJbnZhbGlkIHNlcnZpY2UgbnVtYmVyICVkXG4iLAorCQkgICAgICAgc2VydmljZSk7CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfY250X2NvbmZpZyhtZTQwMDBfY250X2NvbmZpZ190ICogYXJnLAorCQkJICAgICBtZTQwMDBfY250X2NvbnRleHRfdCAqIGNudF9jb250ZXh0KQoreworCW1lNDAwMF9jbnRfY29uZmlnX3QgY21kOworCXU4IGNvdW50ZXI7CisJdTggbW9kZTsKKwlpbnQgZXJyOworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9jbnRfY29uZmlnKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjbWQsIGFyZywgc2l6ZW9mKG1lNDAwMF9jbnRfY29uZmlnX3QpKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfY250X2NvbmZpZygpOkNhbid0IGNvcHkgZnJvbSB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJLyogQ2hlY2sgY291bnRlciBwYXJhbWV0ZXIgKi8KKwlzd2l0Y2ggKGNtZC5jb3VudGVyKSB7CisJY2FzZSBNRTQwMDBfQ05UX0NPVU5URVJfMDoKKwkJY291bnRlciA9IE1FNDAwMF9DTlRfQ1RSTF9CSVRfQ09VTlRFUl8wOworCQlicmVhazsKKwljYXNlIE1FNDAwMF9DTlRfQ09VTlRFUl8xOgorCQljb3VudGVyID0gTUU0MDAwX0NOVF9DVFJMX0JJVF9DT1VOVEVSXzE7CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0NOVF9DT1VOVEVSXzI6CisJCWNvdW50ZXIgPSBNRTQwMDBfQ05UX0NUUkxfQklUX0NPVU5URVJfMjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9jbnRfY29uZmlnKCk6Q291bnRlciAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkgICAgICAgY21kLmNvdW50ZXIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBDaGVjayBtb2RlIHBhcmFtZXRlciAqLworCXN3aXRjaCAoY21kLm1vZGUpIHsKKwljYXNlIE1FNDAwMF9DTlRfTU9ERV8wOgorCQltb2RlID0gTUU0MDAwX0NOVF9DVFJMX0JJVF9NT0RFXzA7CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0NOVF9NT0RFXzE6CisJCW1vZGUgPSBNRTQwMDBfQ05UX0NUUkxfQklUX01PREVfMTsKKwkJYnJlYWs7CisJY2FzZSBNRTQwMDBfQ05UX01PREVfMjoKKwkJbW9kZSA9IE1FNDAwMF9DTlRfQ1RSTF9CSVRfTU9ERV8yOworCQlicmVhazsKKwljYXNlIE1FNDAwMF9DTlRfTU9ERV8zOgorCQltb2RlID0gTUU0MDAwX0NOVF9DVFJMX0JJVF9NT0RFXzM7CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0NOVF9NT0RFXzQ6CisJCW1vZGUgPSBNRTQwMDBfQ05UX0NUUkxfQklUX01PREVfNDsKKwkJYnJlYWs7CisJY2FzZSBNRTQwMDBfQ05UX01PREVfNToKKwkJbW9kZSA9IE1FNDAwMF9DTlRfQ1RSTF9CSVRfTU9ERV81OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJNRTQwMDA6bWU0MDAwX2NudF9jb25maWcoKTpNb2RlICVkIGlzIG5vdCBhdmFpbGFibGVcbiIsCisJCSAgICAgICBjbWQubW9kZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFdyaXRlIHRoZSBjb250cm9sIHdvcmQgKi8KKwltZTQwMDBfb3V0YigoY291bnRlciB8IG1vZGUgfCAweDMwKSwgY250X2NvbnRleHQtPmN0cmxfcmVnKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9jbnRfcmVhZChtZTQwMDBfY250X3QgKiBhcmcsCisJCQkgICBtZTQwMDBfY250X2NvbnRleHRfdCAqIGNudF9jb250ZXh0KQoreworCW1lNDAwMF9jbnRfdCBjbWQ7CisJdTggdG1wOworCWludCBlcnI7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2NudF9yZWFkKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJLyogQ29weSBkYXRhIGZyb20gdXNlciAqLworCWVyciA9IGNvcHlfZnJvbV91c2VyKCZjbWQsIGFyZywgc2l6ZW9mKG1lNDAwMF9jbnRfdCkpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCSAgICAgICAiTUU0MDAwOm1lNDAwMF9jbnRfcmVhZCgpOkNhbid0IGNvcHkgZnJvbSB1c2VyIHNwYWNlXG4iKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJLyogUmVhZCBjb3VudGVyICovCisJc3dpdGNoIChjbWQuY291bnRlcikgeworCWNhc2UgTUU0MDAwX0NOVF9DT1VOVEVSXzA6CisJCXRtcCA9IG1lNDAwMF9pbmIoY250X2NvbnRleHQtPmNvdW50ZXJfMF9yZWcpOworCQljbWQudmFsdWUgPSB0bXA7CisJCXRtcCA9IG1lNDAwMF9pbmIoY250X2NvbnRleHQtPmNvdW50ZXJfMF9yZWcpOworCQljbWQudmFsdWUgfD0gKCh1MTYpIHRtcCkgPDwgODsKKwkJYnJlYWs7CisJY2FzZSBNRTQwMDBfQ05UX0NPVU5URVJfMToKKwkJdG1wID0gbWU0MDAwX2luYihjbnRfY29udGV4dC0+Y291bnRlcl8xX3JlZyk7CisJCWNtZC52YWx1ZSA9IHRtcDsKKwkJdG1wID0gbWU0MDAwX2luYihjbnRfY29udGV4dC0+Y291bnRlcl8xX3JlZyk7CisJCWNtZC52YWx1ZSB8PSAoKHUxNikgdG1wKSA8PCA4OworCQlicmVhazsKKwljYXNlIE1FNDAwMF9DTlRfQ09VTlRFUl8yOgorCQl0bXAgPSBtZTQwMDBfaW5iKGNudF9jb250ZXh0LT5jb3VudGVyXzJfcmVnKTsKKwkJY21kLnZhbHVlID0gdG1wOworCQl0bXAgPSBtZTQwMDBfaW5iKGNudF9jb250ZXh0LT5jb3VudGVyXzJfcmVnKTsKKwkJY21kLnZhbHVlIHw9ICgodTE2KSB0bXApIDw8IDg7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfY250X3JlYWQoKTpDb3VudGVyICVkIGlzIG5vdCBhdmFpbGFibGVcbiIsCisJCSAgICAgICBjbWQuY291bnRlcik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIENvcHkgcmVzdWx0IGJhY2sgdG8gdXNlciAqLworCWVyciA9IGNvcHlfdG9fdXNlcihhcmcsICZjbWQsIHNpemVvZihtZTQwMDBfY250X3QpKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfY250X3JlYWQoKTpDYW4ndCBjb3B5IHRvIHVzZXIgc3BhY2VcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfY250X3dyaXRlKG1lNDAwMF9jbnRfdCAqIGFyZywKKwkJCSAgICBtZTQwMDBfY250X2NvbnRleHRfdCAqIGNudF9jb250ZXh0KQoreworCW1lNDAwMF9jbnRfdCBjbWQ7CisJdTggdG1wOworCWludCBlcnI7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2NudF93cml0ZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHVzZXIgKi8KKwllcnIgPSBjb3B5X2Zyb21fdXNlcigmY21kLCBhcmcsIHNpemVvZihtZTQwMDBfY250X3QpKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfY250X3dyaXRlKCk6Q2FuJ3QgY29weSBmcm9tIHVzZXIgc3BhY2VcbiIpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwkvKiBXcml0ZSBjb3VudGVyICovCisJc3dpdGNoIChjbWQuY291bnRlcikgeworCWNhc2UgTUU0MDAwX0NOVF9DT1VOVEVSXzA6CisJCXRtcCA9IGNtZC52YWx1ZSAmIDB4RkY7CisJCW1lNDAwMF9vdXRiKHRtcCwgY250X2NvbnRleHQtPmNvdW50ZXJfMF9yZWcpOworCQl0bXAgPSAoY21kLnZhbHVlID4+IDgpICYgMHhGRjsKKwkJbWU0MDAwX291dGIodG1wLCBjbnRfY29udGV4dC0+Y291bnRlcl8wX3JlZyk7CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0NOVF9DT1VOVEVSXzE6CisJCXRtcCA9IGNtZC52YWx1ZSAmIDB4RkY7CisJCW1lNDAwMF9vdXRiKHRtcCwgY250X2NvbnRleHQtPmNvdW50ZXJfMV9yZWcpOworCQl0bXAgPSAoY21kLnZhbHVlID4+IDgpICYgMHhGRjsKKwkJbWU0MDAwX291dGIodG1wLCBjbnRfY29udGV4dC0+Y291bnRlcl8xX3JlZyk7CisJCWJyZWFrOworCWNhc2UgTUU0MDAwX0NOVF9DT1VOVEVSXzI6CisJCXRtcCA9IGNtZC52YWx1ZSAmIDB4RkY7CisJCW1lNDAwMF9vdXRiKHRtcCwgY250X2NvbnRleHQtPmNvdW50ZXJfMl9yZWcpOworCQl0bXAgPSAoY21kLnZhbHVlID4+IDgpICYgMHhGRjsKKwkJbWU0MDAwX291dGIodG1wLCBjbnRfY29udGV4dC0+Y291bnRlcl8yX3JlZyk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfY250X3dyaXRlKCk6Q291bnRlciAlZCBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkgICAgICAgY21kLmNvdW50ZXIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfY250X3Jlc2V0KG1lNDAwMF9jbnRfY29udGV4dF90ICogY250X2NvbnRleHQpCit7CisJQ0FMTF9QREVCVUcoIm1lNDAwMF9jbnRfcmVzZXQoKSBpcyBleGVjdXRlZFxuIik7CisKKwkvKiBTZXQgdGhlIG1vZGUgYW5kIHZhbHVlIGZvciBjb3VudGVyIDAgKi8KKwltZTQwMDBfb3V0YigweDMwLCBjbnRfY29udGV4dC0+Y3RybF9yZWcpOworCW1lNDAwMF9vdXRiKDB4MDAsIGNudF9jb250ZXh0LT5jb3VudGVyXzBfcmVnKTsKKwltZTQwMDBfb3V0YigweDAwLCBjbnRfY29udGV4dC0+Y291bnRlcl8wX3JlZyk7CisKKwkvKiBTZXQgdGhlIG1vZGUgYW5kIHZhbHVlIGZvciBjb3VudGVyIDEgKi8KKwltZTQwMDBfb3V0YigweDcwLCBjbnRfY29udGV4dC0+Y3RybF9yZWcpOworCW1lNDAwMF9vdXRiKDB4MDAsIGNudF9jb250ZXh0LT5jb3VudGVyXzFfcmVnKTsKKwltZTQwMDBfb3V0YigweDAwLCBjbnRfY29udGV4dC0+Y291bnRlcl8xX3JlZyk7CisKKwkvKiBTZXQgdGhlIG1vZGUgYW5kIHZhbHVlIGZvciBjb3VudGVyIDIgKi8KKwltZTQwMDBfb3V0YigweEIwLCBjbnRfY29udGV4dC0+Y3RybF9yZWcpOworCW1lNDAwMF9vdXRiKDB4MDAsIGNudF9jb250ZXh0LT5jb3VudGVyXzJfcmVnKTsKKwltZTQwMDBfb3V0YigweDAwLCBjbnRfY29udGV4dC0+Y291bnRlcl8yX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXh0ZXJuYWwgSW50ZXJydXB0IHN0dWZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgbWU0MDAwX2V4dF9pbnRfaW9jdGwoc3RydWN0IGlub2RlICppbm9kZV9wLCBzdHJ1Y3QgZmlsZSAqZmlsZV9wLAorCQkJCXVuc2lnbmVkIGludCBzZXJ2aWNlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwltZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKmV4dF9pbnRfY29udGV4dDsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfZXh0X2ludF9pb2N0bCgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWV4dF9pbnRfY29udGV4dCA9IGZpbGVfcC0+cHJpdmF0ZV9kYXRhOworCisJaWYgKF9JT0NfVFlQRShzZXJ2aWNlKSAhPSBNRTQwMDBfTUFHSUMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJtZTQwMDBfZXh0X2ludF9pb2N0bCgpOldyb25nIG1hZ2ljIG51bWJlclxuIik7CisJCXJldHVybiAtRU5PVFRZOworCX0KKwlpZiAoX0lPQ19OUihzZXJ2aWNlKSA+IE1FNDAwMF9JT0NUTF9NQVhOUikgeworCQlwcmludGsoS0VSTl9FUlIKKwkJICAgICAgICJtZTQwMDBfZXh0X2ludF9pb2N0bCgpOlNlcnZpY2UgbnVtYmVyIHRvIGhpZ2hcbiIpOworCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwlzd2l0Y2ggKHNlcnZpY2UpIHsKKwljYXNlIE1FNDAwMF9FWFRfSU5UX0VOQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9leHRfaW50X2VuYWJsZShleHRfaW50X2NvbnRleHQpOworCWNhc2UgTUU0MDAwX0VYVF9JTlRfRElTQUJMRToKKwkJcmV0dXJuIG1lNDAwMF9leHRfaW50X2Rpc2FibGUoZXh0X2ludF9jb250ZXh0KTsKKwljYXNlIE1FNDAwMF9FWFRfSU5UX0NPVU5UOgorCQlyZXR1cm4gbWU0MDAwX2V4dF9pbnRfY291bnQoKHVuc2lnbmVkIGxvbmcgKilhcmcsCisJCQkJCSAgICBleHRfaW50X2NvbnRleHQpOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUgorCQkgICAgICAgIk1FNDAwMDptZTQwMDBfZXh0X2ludF9pb2N0bCgpOkludmFsaWQgc2VydmljZSBudW1iZXIgJWRcbiIsCisJCSAgICAgICBzZXJ2aWNlKTsKKwkJcmV0dXJuIC1FTk9UVFk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1lNDAwMF9leHRfaW50X2VuYWJsZShtZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKiBleHRfaW50X2NvbnRleHQpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2V4dF9pbnRfZW5hYmxlKCkgaXMgZXhlY3V0ZWRcbiIpOworCisJdG1wID0gbWU0MDAwX2lubChleHRfaW50X2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0VYX0lSUTsKKwltZTQwMDBfb3V0bCh0bXAsIGV4dF9pbnRfY29udGV4dC0+Y3RybF9yZWcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWU0MDAwX2V4dF9pbnRfZGlzYWJsZShtZTQwMDBfZXh0X2ludF9jb250ZXh0X3QgKiBleHRfaW50X2NvbnRleHQpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2V4dF9pbnRfZGlzYWJsZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXRtcCA9IG1lNDAwMF9pbmwoZXh0X2ludF9jb250ZXh0LT5jdHJsX3JlZyk7CisJdG1wICY9IH5NRTQwMDBfQUlfQ1RSTF9CSVRfRVhfSVJROworCW1lNDAwMF9vdXRsKHRtcCwgZXh0X2ludF9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtZTQwMDBfZXh0X2ludF9jb3VudCh1bnNpZ25lZCBsb25nICphcmcsCisJCQkJbWU0MDAwX2V4dF9pbnRfY29udGV4dF90ICogZXh0X2ludF9jb250ZXh0KQoreworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9leHRfaW50X2NvdW50KCkgaXMgZXhlY3V0ZWRcbiIpOworCisJcHV0X3VzZXIoZXh0X2ludF9jb250ZXh0LT5pbnRfY291bnQsIGFyZyk7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdlbmVyYWwgc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBtZTQwMDBfZ2V0X3VzZXJfaW5mbyhtZTQwMDBfdXNlcl9pbmZvX3QgKiBhcmcsCisJCQkJbWU0MDAwX2luZm9fdCAqIGJvYXJkX2luZm8pCit7CisJbWU0MDAwX3VzZXJfaW5mb190IHVzZXJfaW5mbzsKKworCUNBTExfUERFQlVHKCJtZTQwMDBfZ2V0X3VzZXJfaW5mbygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXVzZXJfaW5mby5ib2FyZF9jb3VudCA9IGJvYXJkX2luZm8tPmJvYXJkX2NvdW50OworCXVzZXJfaW5mby5wbHhfcmVnYmFzZSA9IGJvYXJkX2luZm8tPnBseF9yZWdiYXNlOworCXVzZXJfaW5mby5wbHhfcmVnYmFzZV9zaXplID0gYm9hcmRfaW5mby0+cGx4X3JlZ2Jhc2Vfc2l6ZTsKKwl1c2VyX2luZm8ubWU0MDAwX3JlZ2Jhc2UgPSBib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZTsKKwl1c2VyX2luZm8ubWU0MDAwX3JlZ2Jhc2Vfc2l6ZSA9IGJvYXJkX2luZm8tPm1lNDAwMF9yZWdiYXNlX3NpemU7CisJdXNlcl9pbmZvLnNlcmlhbF9ubyA9IGJvYXJkX2luZm8tPnNlcmlhbF9ubzsKKwl1c2VyX2luZm8uaHdfcmV2aXNpb24gPSBib2FyZF9pbmZvLT5od19yZXZpc2lvbjsKKwl1c2VyX2luZm8udmVuZG9yX2lkID0gYm9hcmRfaW5mby0+dmVuZG9yX2lkOworCXVzZXJfaW5mby5kZXZpY2VfaWQgPSBib2FyZF9pbmZvLT5kZXZpY2VfaWQ7CisJdXNlcl9pbmZvLnBjaV9idXNfbm8gPSBib2FyZF9pbmZvLT5wY2lfYnVzX25vOworCXVzZXJfaW5mby5wY2lfZGV2X25vID0gYm9hcmRfaW5mby0+cGNpX2Rldl9ubzsKKwl1c2VyX2luZm8ucGNpX2Z1bmNfbm8gPSBib2FyZF9pbmZvLT5wY2lfZnVuY19ubzsKKwl1c2VyX2luZm8uaXJxID0gYm9hcmRfaW5mby0+aXJxOworCXVzZXJfaW5mby5pcnFfY291bnQgPSBib2FyZF9pbmZvLT5pcnFfY291bnQ7CisJdXNlcl9pbmZvLmRyaXZlcl92ZXJzaW9uID0gTUU0MDAwX0RSSVZFUl9WRVJTSU9OOworCXVzZXJfaW5mby5hb19jb3VudCA9IGJvYXJkX2luZm8tPmJvYXJkX3AtPmFvLmNvdW50OworCXVzZXJfaW5mby5hb19maWZvX2NvdW50ID0gYm9hcmRfaW5mby0+Ym9hcmRfcC0+YW8uZmlmb19jb3VudDsKKworCXVzZXJfaW5mby5haV9jb3VudCA9IGJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmNvdW50OworCXVzZXJfaW5mby5haV9zaF9jb3VudCA9IGJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLnNoX2NvdW50OworCXVzZXJfaW5mby5haV9leF90cmlnX2FuYWxvZyA9IGJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmV4X3RyaWdfYW5hbG9nOworCisJdXNlcl9pbmZvLmRpb19jb3VudCA9IGJvYXJkX2luZm8tPmJvYXJkX3AtPmRpby5jb3VudDsKKworCXVzZXJfaW5mby5jbnRfY291bnQgPSBib2FyZF9pbmZvLT5ib2FyZF9wLT5jbnQuY291bnQ7CisKKwlpZiAoY29weV90b191c2VyKGFyZywgJnVzZXJfaW5mbywgc2l6ZW9mKG1lNDAwMF91c2VyX2luZm9fdCkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiAwOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJU1IgU1RVRkYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBtZTQwMDBfZXh0X2ludF9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZV9wdHIsIGludCBtb2RlKQoreworCWludCByZXN1bHQgPSAwOworCW1lNDAwMF9leHRfaW50X2NvbnRleHRfdCAqZXh0X2ludF9jb250ZXh0OworCisJQ0FMTF9QREVCVUcoIm1lNDAwMF9leHRfaW50X2Zhc3luYygpIGlzIGV4ZWN1dGVkXG4iKTsKKworCWV4dF9pbnRfY29udGV4dCA9IGZpbGVfcHRyLT5wcml2YXRlX2RhdGE7CisKKwlyZXN1bHQgPQorCSAgICBmYXN5bmNfaGVscGVyKGZkLCBmaWxlX3B0ciwgbW9kZSwgJmV4dF9pbnRfY29udGV4dC0+ZmFzeW5jX3B0cik7CisKKwlDQUxMX1BERUJVRygibWU0MDAwX2V4dF9pbnRfZmFzeW5jKCkgaXMgbGVhdmVkXG4iKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgbWU0MDAwX2FvX2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJdTMyIHRtcDsKKwl1MzIgdmFsdWU7CisJbWU0MDAwX2FvX2NvbnRleHRfdCAqYW9fY29udGV4dDsKKwlpbnQgaTsKKwlpbnQgYyA9IDA7CisJaW50IGMxID0gMDsKKwkvL3Vuc2lnbmVkIGxvbmcgYmVmb3JlOworCS8vdW5zaWduZWQgbG9uZyBhZnRlcjsKKworCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKSBpcyBleGVjdXRlZFxuIik7CisKKwlhb19jb250ZXh0ID0gZGV2X2lkOworCisJLyogQ2hlY2sgaWYgaXJxIG51bWJlciBpcyByaWdodCAqLworCWlmIChpcnEgIT0gYW9fY29udGV4dC0+aXJxKSB7CisJCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKTppbmNvcnJlY3QgaW50ZXJydXB0IG51bTogJWRcbiIsCisJCQkgICBpcnEpOworCQlyZXR1cm4gSVJRX05PTkU7CisJfQorCisJLyogQ2hlY2sgaWYgdGhpcyBEQUMgcmlzZWQgYW4gaW50ZXJydXB0ICovCisJaWYgKCEKKwkgICAgKCgweDEgPDwgKGFvX2NvbnRleHQtPmluZGV4ICsgMykpICYKKwkgICAgIG1lNDAwMF9pbmwoYW9fY29udGV4dC0+aXJxX3N0YXR1c19yZWcpKSkgeworCQlJU1JfUERFQlVHKCJtZTQwMDBfYW9faXNyKCk6Tm90IHRoaXMgREFDXG4iKTsKKwkJcmV0dXJuIElSUV9OT05FOworCX0KKworCS8qIFJlYWQgc3RhdHVzIHJlZ2lzdGVyIHRvIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgKi8KKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPnN0YXR1c19yZWcpOworCisJaWYgKCEodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfRUYpICYmICh0bXAgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9IRikKKwkgICAgJiYgKHRtcCAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0hGKSkgeworCQljID0gTUU0MDAwX0FPX0ZJRk9fQ09VTlQ7CisJCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKTpGaWZvIGVtcHR5XG4iKTsKKwl9IGVsc2UgaWYgKCh0bXAgJiBNRTQwMDBfQU9fU1RBVFVTX0JJVF9FRikKKwkJICAgJiYgKHRtcCAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0hGKQorCQkgICAmJiAodG1wICYgTUU0MDAwX0FPX1NUQVRVU19CSVRfSEYpKSB7CisJCWMgPSBNRTQwMDBfQU9fRklGT19DT1VOVCAvIDI7CisJCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKTpGaWZvIHVuZGVyIGhhbGYgZnVsbFxuIik7CisJfSBlbHNlIHsKKwkJYyA9IDA7CisJCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKTpGaWZvIGZ1bGxcbiIpOworCX0KKworCUlTUl9QREVCVUcoIm1lNDAwMF9hb19pc3IoKTpUcnkgdG8gd3JpdGUgMHglMDRYIHZhbHVlc1xuIiwgYyk7CisKKwl3aGlsZSAoMSkgeworCQljMSA9IG1lNDAwMF92YWx1ZXNfdG9fZW5kKGFvX2NvbnRleHQtPmNpcmNfYnVmLAorCQkJCQkgIE1FNDAwMF9BT19CVUZGRVJfQ09VTlQpOworCQlJU1JfUERFQlVHKCJtZTQwMDBfYW9faXNyKCk6VmFsdWVzIHRvIGVuZCA9ICVkXG4iLCBjMSk7CisJCWlmIChjMSA+IGMpCisJCQljMSA9IGM7CisKKwkJaWYgKGMxIDw9IDApIHsKKwkJCUlTUl9QREVCVUcKKwkJCSAgICAoIm1lNDAwMF9hb19pc3IoKTpXb3JrIGRvbmUgb3IgYnVmZmVyIGVtcHR5XG4iKTsKKwkJCWJyZWFrOworCQl9CisJCS8vcmR0c2NsKGJlZm9yZSk7CisJCWlmICgoKGFvX2NvbnRleHQtPmZpZm9fcmVnICYgMHhGRikgPT0gTUU0MDAwX0FPXzAxX0ZJRk9fUkVHKSB8fAorCQkgICAgKChhb19jb250ZXh0LT5maWZvX3JlZyAmIDB4RkYpID09IE1FNDAwMF9BT18wM19GSUZPX1JFRykpIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBjMTsgaSsrKSB7CisJCQkJdmFsdWUgPQorCQkJCSAgICAoKHUzMikKKwkJCQkgICAgICgqCisJCQkJICAgICAgKGFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiArCisJCQkJICAgICAgIGFvX2NvbnRleHQtPmNpcmNfYnVmLnRhaWwgKyBpKSkpIDw8IDE2OworCQkJCW91dGwodmFsdWUsIGFvX2NvbnRleHQtPmZpZm9fcmVnKTsKKwkJCX0KKwkJfSBlbHNlCisJCQlvdXRzdyhhb19jb250ZXh0LT5maWZvX3JlZywKKwkJCSAgICAgIGFvX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiArCisJCQkgICAgICBhb19jb250ZXh0LT5jaXJjX2J1Zi50YWlsLCBjMSk7CisKKwkJLy9yZHRzY2woYWZ0ZXIpOworCQkvL3ByaW50ayhLRVJOX0VSUiJNRTQwMDA6bWU0MDAwX2FvX2lzcigpOlRpbWUgbGFwc2UgPSAlbHVcbiIsIGFmdGVyIC0gYmVmb3JlKTsKKworCQlhb19jb250ZXh0LT5jaXJjX2J1Zi50YWlsID0KKwkJICAgIChhb19jb250ZXh0LT5jaXJjX2J1Zi50YWlsICsgYzEpICYgKE1FNDAwMF9BT19CVUZGRVJfQ09VTlQgLQorCQkJCQkJCTEpOworCQlJU1JfUERFQlVHKCJtZTQwMDBfYW9faXNyKCk6JWQgdmFsdWVzIHdyb3RlIHRvIHBvcnQgMHglMDRYXG4iLAorCQkJICAgYzEsIGFvX2NvbnRleHQtPmZpZm9fcmVnKTsKKwkJYyAtPSBjMTsKKwl9CisKKwkvKiBJZiB0aGVyZSBhcmUgbm8gdmFsdWVzIGxlZnQgaW4gdGhlIGJ1ZmZlciwgZGlzYWJsZSBpbnRlcnJ1cHRzICovCisJc3Bpbl9sb2NrKCZhb19jb250ZXh0LT5pbnRfbG9jayk7CisJaWYgKCFtZTQwMDBfYnVmX2NvdW50KGFvX2NvbnRleHQtPmNpcmNfYnVmLCBNRTQwMDBfQU9fQlVGRkVSX0NPVU5UKSkgeworCQlJU1JfUERFQlVHCisJCSAgICAoIm1lNDAwMF9hb19pc3IoKTpEaXNhYmxlIEludGVycnVwdCBiZWNhdXNlIG5vIHZhbHVlcyBsZWZ0IGluIGJ1ZmZlclxuIik7CisJCXRtcCA9IG1lNDAwMF9pbmwoYW9fY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgJj0gfk1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfSVJROworCQltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl9CisJc3Bpbl91bmxvY2soJmFvX2NvbnRleHQtPmludF9sb2NrKTsKKworCS8qIFJlc2V0IHRoZSBpbnRlcnJ1cHQgKi8KKwlzcGluX2xvY2soJmFvX2NvbnRleHQtPmludF9sb2NrKTsKKwl0bXAgPSBtZTQwMDBfaW5sKGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgfD0gTUU0MDAwX0FPX0NUUkxfQklUX1JFU0VUX0lSUTsKKwltZTQwMDBfb3V0bCh0bXAsIGFvX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl0bXAgJj0gfk1FNDAwMF9BT19DVFJMX0JJVF9SRVNFVF9JUlE7CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkvKiBJZiBzdGF0ZSBtYWNoaW5lIGlzIHN0b3BwZWQsIGZsb3cgd2FzIGludGVycnVwdGVkICovCisJaWYgKCEobWU0MDAwX2lubChhb19jb250ZXh0LT5zdGF0dXNfcmVnKSAmIE1FNDAwMF9BT19TVEFUVVNfQklUX0ZTTSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJNRTQwMDA6bWU0MDAwX2FvX2lzcigpOkJyb2tlbiBwaXBlXG4iKTsKKwkJYW9fY29udGV4dC0+cGlwZV9mbGFnID0gMTsJLy8gU2V0IGZsYWcgaW4gb3JkZXIgdG8gaW5mb3JtIHdyaXRlIHJvdXRpbmUKKwkJdG1wICY9IH5NRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0lSUTsJLy8gRGlzYWJsZSBpbnRlcnJ1cHQKKwl9CisJbWU0MDAwX291dGwodG1wLCBhb19jb250ZXh0LT5jdHJsX3JlZyk7CisJc3Bpbl91bmxvY2soJmFvX2NvbnRleHQtPmludF9sb2NrKTsKKworCS8qIFdha2UgdXAgd2FpdGluZyBwcm9jZXNzICovCisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCYoYW9fY29udGV4dC0+d2FpdF9xdWV1ZSkpOworCisJLyogQ291bnQgdGhlIGludGVycnVwdCAqLworCWFvX2NvbnRleHQtPmJvYXJkX2luZm8tPmlycV9jb3VudCsrOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgbWU0MDAwX2FpX2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJdTMyIHRtcDsKKwltZTQwMDBfYWlfY29udGV4dF90ICphaV9jb250ZXh0OworCWludCBpOworCWludCBjID0gMDsKKwlpbnQgYzEgPSAwOworI2lmZGVmIE1FNDAwMF9JU1JfREVCVUcKKwl1bnNpZ25lZCBsb25nIGJlZm9yZTsKKwl1bnNpZ25lZCBsb25nIGFmdGVyOworI2VuZGlmCisKKwlJU1JfUERFQlVHKCJtZTQwMDBfYWlfaXNyKCkgaXMgZXhlY3V0ZWRcbiIpOworCisjaWZkZWYgTUU0MDAwX0lTUl9ERUJVRworCXJkdHNjbChiZWZvcmUpOworI2VuZGlmCisKKwlhaV9jb250ZXh0ID0gZGV2X2lkOworCisJLyogQ2hlY2sgaWYgaXJxIG51bWJlciBpcyByaWdodCAqLworCWlmIChpcnEgIT0gYWlfY29udGV4dC0+aXJxKSB7CisJCUlTUl9QREVCVUcoIm1lNDAwMF9haV9pc3IoKTppbmNvcnJlY3QgaW50ZXJydXB0IG51bTogJWRcbiIsCisJCQkgICBpcnEpOworCQlyZXR1cm4gSVJRX05PTkU7CisJfQorCisJaWYgKG1lNDAwMF9pbmwoYWlfY29udGV4dC0+aXJxX3N0YXR1c19yZWcpICYKKwkgICAgTUU0MDAwX0lSUV9TVEFUVVNfQklUX0FJX0hGKSB7CisJCUlTUl9QREVCVUcKKwkJICAgICgibWU0MDAwX2FpX2lzcigpOkZpZm8gaGFsZiBmdWxsIGludGVycnVwdCBvY2N1cmVkXG4iKTsKKworCQkvKiBSZWFkIHN0YXR1cyByZWdpc3RlciB0byBmaW5kIG91dCB3aGF0IGhhcHBlbmVkICovCisJCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCisJCWlmICghKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZGX0RBVEEpICYmCisJCSAgICAhKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0hGX0RBVEEpCisJCSAgICAmJiAodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQSkpIHsKKwkJCUlTUl9QREVCVUcoIm1lNDAwMF9haV9pc3IoKTpGaWZvIGZ1bGxcbiIpOworCQkJYyA9IE1FNDAwMF9BSV9GSUZPX0NPVU5UOworCisJCQkvKiBGSUZPIG92ZXJmbG93LCBzbyBzdG9wIGNvbnZlcnNpb24gYW5kIGRpc2FibGUgYWxsIGludGVycnVwdHMgKi8KKwkJCXNwaW5fbG9jaygmYWlfY29udGV4dC0+aW50X2xvY2spOworCQkJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJCQl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0lNTUVESUFURV9TVE9QOworCQkJdG1wICY9CisJCQkgICAgfihNRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJRIHwKKwkJCSAgICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlEpOworCQkJb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCXNwaW5fdW5sb2NrKCZhaV9jb250ZXh0LT5pbnRfbG9jayk7CisJCX0gZWxzZSBpZiAoKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZGX0RBVEEpICYmCisJCQkgICAhKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0hGX0RBVEEpCisJCQkgICAmJiAodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQSkpIHsKKwkJCUlTUl9QREVCVUcoIm1lNDAwMF9haV9pc3IoKTpGaWZvIGhhbGYgZnVsbFxuIik7CisJCQljID0gTUU0MDAwX0FJX0ZJRk9fQ09VTlQgLyAyOworCQl9IGVsc2UgeworCQkJYyA9IDA7CisJCQlJU1JfUERFQlVHCisJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6Q2FuJ3QgZGV0ZXJtaW5lIHN0YXRlIG9mIGZpZm9cbiIpOworCQl9CisKKwkJSVNSX1BERUJVRygibWU0MDAwX2FpX2lzcigpOlRyeSB0byByZWFkICVkIHZhbHVlc1xuIiwgYyk7CisKKwkJd2hpbGUgKDEpIHsKKwkJCWMxID0gbWU0MDAwX3NwYWNlX3RvX2VuZChhaV9jb250ZXh0LT5jaXJjX2J1ZiwKKwkJCQkJCSBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKTsKKwkJCUlTUl9QREVCVUcoIm1lNDAwMF9haV9pc3IoKTpTcGFjZSB0byBlbmQgPSAlZFxuIiwgYzEpOworCQkJaWYgKGMxID4gYykKKwkJCQljMSA9IGM7CisKKwkJCWlmIChjMSA8PSAwKSB7CisJCQkJSVNSX1BERUJVRworCQkJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpXb3JrIGRvbmUgb3IgYnVmZmVyIGZ1bGxcbiIpOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpbnN3KGFpX2NvbnRleHQtPmRhdGFfcmVnLAorCQkJICAgICBhaV9jb250ZXh0LT5jaXJjX2J1Zi5idWYgKworCQkJICAgICBhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkLCBjMSk7CisJCQlhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkID0KKwkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCArCisJCQkgICAgIGMxKSAmIChNRTQwMDBfQUlfQlVGRkVSX0NPVU5UIC0gMSk7CisJCQljIC09IGMxOworCQl9CisKKwkJLyogV29yayBpcyBkb25lLCBzbyByZXNldCB0aGUgaW50ZXJydXB0ICovCisJCUlTUl9QREVCVUcKKwkJICAgICgibWU0MDAwX2FpX2lzcigpOnJlc2V0IGludGVycnVwdCBmaWZvIGhhbGYgZnVsbCBpbnRlcnJ1cHRcbiIpOworCQlzcGluX2xvY2soJmFpX2NvbnRleHQtPmludF9sb2NrKTsKKwkJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJCXRtcCB8PSBNRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJRX1JFU0VUOworCQltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJdG1wICY9IH5NRTQwMDBfQUlfQ1RSTF9CSVRfSEZfSVJRX1JFU0VUOworCQltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJc3Bpbl91bmxvY2soJmFpX2NvbnRleHQtPmludF9sb2NrKTsKKwl9CisKKwlpZiAobWU0MDAwX2lubChhaV9jb250ZXh0LT5pcnFfc3RhdHVzX3JlZykgJiBNRTQwMDBfSVJRX1NUQVRVU19CSVRfU0MpIHsKKwkJSVNSX1BERUJVRworCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6U2FtcGxlIGNvdW50ZXIgaW50ZXJydXB0IG9jY3VyZWRcbiIpOworCisJCWlmICghYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXJfcmVsb2FkKSB7CisJCQlJU1JfUERFQlVHCisJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6U2luZ2xlIGRhdGEgYmxvY2sgYXZhaWxhYmxlXG4iKTsKKworCQkJLyogUG9sbCBkYXRhIHVudGlsIGZpZm8gZW1wdHkgKi8KKwkJCWZvciAoaSA9IDA7CisJCQkgICAgIChpIDwgTUU0MDAwX0FJX0ZJRk9fQ09VTlQgLyAyKQorCQkJICAgICAmJiAoaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKSAmCisJCQkJIE1FNDAwMF9BSV9TVEFUVVNfQklUX0VGX0RBVEEpOyBpKyspIHsKKwkJCQlpZiAobWU0MDAwX3NwYWNlX3RvX2VuZAorCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJICAgICBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKSkgeworCQkJCQkqKGFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiArCisJCQkJCSAgYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCkgPQorCQkgaW53KGFpX2NvbnRleHQtPmRhdGFfcmVnKTsKKwkJCQkJYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCA9CisJCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCArCisJCQkJCSAgICAgMSkgJiAoTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCAtIDEpOworCQkJCX0gZWxzZQorCQkJCQlicmVhazsKKwkJCX0KKwkJCUlTUl9QREVCVUcoIm1lNDAwMF9haV9pc3IoKTolZCB2YWx1ZXMgcmVhZFxuIiwgaSk7CisJCX0gZWxzZSB7CisJCQlpZiAoYWlfY29udGV4dC0+c2FtcGxlX2NvdW50ZXIgPD0KKwkJCSAgICBNRTQwMDBfQUlfRklGT19DT1VOVCAvIDIpIHsKKwkJCQlJU1JfUERFQlVHCisJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOkludGVycnVwdCBmcm9tIGFkanVzdGFibGUgaGFsZiBmdWxsIHRocmVzaG9sZFxuIik7CisKKwkJCQkvKiBSZWFkIHN0YXR1cyByZWdpc3RlciB0byBmaW5kIG91dCB3aGF0IGhhcHBlbmVkICovCisJCQkJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisKKwkJCQlpZiAoISh0bXAgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9GRl9EQVRBKSAmJgorCQkJCSAgICAhKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0hGX0RBVEEpCisJCQkJICAgICYmICh0bXAgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9FRl9EQVRBKSkgeworCQkJCQlJU1JfUERFQlVHCisJCQkJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpGaWZvIGZ1bGxcbiIpOworCQkJCQljID0gTUU0MDAwX0FJX0ZJRk9fQ09VTlQ7CisKKwkJCQkJLyogRklGTyBvdmVyZmxvdywgc28gc3RvcCBjb252ZXJzaW9uICovCisJCQkJCXNwaW5fbG9jaygmYWlfY29udGV4dC0+aW50X2xvY2spOworCQkJCQl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJCQkJdG1wIHw9CisJCQkJCSAgICBNRTQwMDBfQUlfQ1RSTF9CSVRfSU1NRURJQVRFX1NUT1A7CisJCQkJCW91dGwodG1wLCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJCQkJCXNwaW5fdW5sb2NrKCZhaV9jb250ZXh0LT5pbnRfbG9jayk7CisJCQkJfSBlbHNlIGlmICgodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRkZfREFUQSkKKwkJCQkJICAgJiYgISh0bXAgJgorCQkJCQkJTUU0MDAwX0FJX1NUQVRVU19CSVRfSEZfREFUQSkKKwkJCQkJICAgJiYgKHRtcCAmCisJCQkJCSAgICAgICBNRTQwMDBfQUlfU1RBVFVTX0JJVF9FRl9EQVRBKSkgeworCQkJCQlJU1JfUERFQlVHCisJCQkJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpGaWZvIGhhbGYgZnVsbFxuIik7CisJCQkJCWMgPSBNRTQwMDBfQUlfRklGT19DT1VOVCAvIDI7CisJCQkJfSBlbHNlIHsKKwkJCQkJYyA9IGFpX2NvbnRleHQtPnNhbXBsZV9jb3VudGVyOworCQkJCQlJU1JfUERFQlVHCisJCQkJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpTYW1wbGUgY291bnQgdmFsdWVzXG4iKTsKKwkJCQl9CisKKwkJCQlJU1JfUERFQlVHCisJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOlRyeSB0byByZWFkICVkIHZhbHVlc1xuIiwKKwkJCQkgICAgIGMpOworCisJCQkJd2hpbGUgKDEpIHsKKwkJCQkJYzEgPSBtZTQwMDBfc3BhY2VfdG9fZW5kKGFpX2NvbnRleHQtPgorCQkJCQkJCQkgY2lyY19idWYsCisJCQkJCQkJCSBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKTsKKwkJCQkJSVNSX1BERUJVRworCQkJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6U3BhY2UgdG8gZW5kID0gJWRcbiIsCisJCQkJCSAgICAgYzEpOworCQkJCQlpZiAoYzEgPiBjKQorCQkJCQkJYzEgPSBjOworCisJCQkJCWlmIChjMSA8PSAwKSB7CisJCQkJCQlJU1JfUERFQlVHCisJCQkJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6V29yayBkb25lIG9yIGJ1ZmZlciBmdWxsXG4iKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisKKwkJCQkJaW5zdyhhaV9jb250ZXh0LT5kYXRhX3JlZywKKwkJCQkJICAgICBhaV9jb250ZXh0LT5jaXJjX2J1Zi5idWYgKworCQkJCQkgICAgIGFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQsIGMxKTsKKwkJCQkJYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCA9CisJCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYuaGVhZCArCisJCQkJCSAgICAgYzEpICYgKE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQgLSAxKTsKKwkJCQkJYyAtPSBjMTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCUlTUl9QREVCVUcKKwkJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6TXVsdGlwbGUgZGF0YSBibG9jayBhdmFpbGFibGVcbiIpOworCisJCQkJLyogUmVhZCBzdGF0dXMgcmVnaXN0ZXIgdG8gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCAqLworCQkJCXRtcCA9IG1lNDAwMF9pbmwoYWlfY29udGV4dC0+Y3RybF9yZWcpOworCisJCQkJaWYgKCEodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRkZfREFUQSkgJiYKKwkJCQkgICAgISh0bXAgJiBNRTQwMDBfQUlfU1RBVFVTX0JJVF9IRl9EQVRBKQorCQkJCSAgICAmJiAodG1wICYgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQSkpIHsKKwkJCQkJSVNSX1BERUJVRworCQkJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6RmlmbyBmdWxsXG4iKTsKKwkJCQkJYyA9IE1FNDAwMF9BSV9GSUZPX0NPVU5UOworCisJCQkJCS8qIEZJRk8gb3ZlcmZsb3csIHNvIHN0b3AgY29udmVyc2lvbiAqLworCQkJCQlzcGluX2xvY2soJmFpX2NvbnRleHQtPmludF9sb2NrKTsKKwkJCQkJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJCQkJCXRtcCB8PQorCQkJCQkgICAgTUU0MDAwX0FJX0NUUkxfQklUX0lNTUVESUFURV9TVE9QOworCQkJCQlvdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCQkJCQlzcGluX3VubG9jaygmYWlfY29udGV4dC0+aW50X2xvY2spOworCisJCQkJCXdoaWxlICgxKSB7CisJCQkJCQljMSA9IG1lNDAwMF9zcGFjZV90b19lbmQKKwkJCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJCQkgICAgIE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQpOworCQkJCQkJSVNSX1BERUJVRworCQkJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOlNwYWNlIHRvIGVuZCA9ICVkXG4iLAorCQkJCQkJICAgICBjMSk7CisJCQkJCQlpZiAoYzEgPiBjKQorCQkJCQkJCWMxID0gYzsKKworCQkJCQkJaWYgKGMxIDw9IDApIHsKKwkJCQkJCQlJU1JfUERFQlVHCisJCQkJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOldvcmsgZG9uZSBvciBidWZmZXIgZnVsbFxuIik7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJCWluc3coYWlfY29udGV4dC0+ZGF0YV9yZWcsCisJCQkJCQkgICAgIGFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiArCisJCQkJCQkgICAgIGFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQsCisJCQkJCQkgICAgIGMxKTsKKwkJCQkJCWFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgPQorCQkJCQkJICAgIChhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkICsKKwkJCQkJCSAgICAgYzEpICYKKwkJCQkJCSAgICAoTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCAtCisJCQkJCQkgICAgIDEpOworCQkJCQkJYyAtPSBjMTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAoKHRtcCAmIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZGX0RBVEEpCisJCQkJCSAgICYmICEodG1wICYKKwkJCQkJCU1FNDAwMF9BSV9TVEFUVVNfQklUX0hGX0RBVEEpCisJCQkJCSAgICYmICh0bXAgJgorCQkJCQkgICAgICAgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQSkpIHsKKwkJCQkJSVNSX1BERUJVRworCQkJCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6RmlmbyBoYWxmIGZ1bGxcbiIpOworCQkJCQljID0gTUU0MDAwX0FJX0ZJRk9fQ09VTlQgLyAyOworCisJCQkJCXdoaWxlICgxKSB7CisJCQkJCQljMSA9IG1lNDAwMF9zcGFjZV90b19lbmQKKwkJCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJCQkgICAgIE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQpOworCQkJCQkJSVNSX1BERUJVRworCQkJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOlNwYWNlIHRvIGVuZCA9ICVkXG4iLAorCQkJCQkJICAgICBjMSk7CisJCQkJCQlpZiAoYzEgPiBjKQorCQkJCQkJCWMxID0gYzsKKworCQkJCQkJaWYgKGMxIDw9IDApIHsKKwkJCQkJCQlJU1JfUERFQlVHCisJCQkJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOldvcmsgZG9uZSBvciBidWZmZXIgZnVsbFxuIik7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJCWluc3coYWlfY29udGV4dC0+ZGF0YV9yZWcsCisJCQkJCQkgICAgIGFpX2NvbnRleHQtPmNpcmNfYnVmLmJ1ZiArCisJCQkJCQkgICAgIGFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQsCisJCQkJCQkgICAgIGMxKTsKKwkJCQkJCWFpX2NvbnRleHQtPmNpcmNfYnVmLmhlYWQgPQorCQkJCQkJICAgIChhaV9jb250ZXh0LT5jaXJjX2J1Zi5oZWFkICsKKwkJCQkJCSAgICAgYzEpICYKKwkJCQkJCSAgICAoTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCAtCisJCQkJCQkgICAgIDEpOworCQkJCQkJYyAtPSBjMTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCS8qIFBvbGwgZGF0YSB1bnRpbCBmaWZvIGVtcHR5ICovCisJCQkJCWZvciAoaSA9IDA7CisJCQkJCSAgICAgKGkgPCBNRTQwMDBfQUlfRklGT19DT1VOVCAvIDIpCisJCQkJCSAgICAgJiYgKGlubChhaV9jb250ZXh0LT5jdHJsX3JlZykgJgorCQkJCQkJIE1FNDAwMF9BSV9TVEFUVVNfQklUX0VGX0RBVEEpOworCQkJCQkgICAgIGkrKykgeworCQkJCQkJaWYgKG1lNDAwMF9zcGFjZV90b19lbmQKKwkJCQkJCSAgICAoYWlfY29udGV4dC0+Y2lyY19idWYsCisJCQkJCQkgICAgIE1FNDAwMF9BSV9CVUZGRVJfQ09VTlQpKSB7CisJCQkJCQkJKihhaV9jb250ZXh0LT5jaXJjX2J1Zi4KKwkJCQkJCQkgIGJ1ZiArCisJCQkJCQkJICBhaV9jb250ZXh0LT5jaXJjX2J1Zi4KKwkJCQkJCQkgIGhlYWQpID0KKwkJCQkgICAgICAgaW53KGFpX2NvbnRleHQtPmRhdGFfcmVnKTsKKwkJCQkJCQlhaV9jb250ZXh0LT5jaXJjX2J1Zi4KKwkJCQkJCQkgICAgaGVhZCA9CisJCQkJCQkJICAgIChhaV9jb250ZXh0LT4KKwkJCQkJCQkgICAgIGNpcmNfYnVmLmhlYWQgKworCQkJCQkJCSAgICAgMSkgJgorCQkJCQkJCSAgICAoTUU0MDAwX0FJX0JVRkZFUl9DT1VOVAorCQkJCQkJCSAgICAgLSAxKTsKKwkJCQkJCX0gZWxzZQorCQkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJCUlTUl9QREVCVUcKKwkJCQkJICAgICgibWU0MDAwX2FpX2lzcigpOiVkIHZhbHVlcyByZWFkXG4iLAorCQkJCQkgICAgIGkpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCS8qIFdvcmsgaXMgZG9uZSwgc28gcmVzZXQgdGhlIGludGVycnVwdCAqLworCQlJU1JfUERFQlVHCisJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpyZXNldCBpbnRlcnJ1cHQgZnJvbSBzYW1wbGUgY291bnRlclxuIik7CisJCXNwaW5fbG9jaygmYWlfY29udGV4dC0+aW50X2xvY2spOworCQl0bXAgPSBtZTQwMDBfaW5sKGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJdG1wIHw9IE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlFfUkVTRVQ7CisJCW1lNDAwMF9vdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgJj0gfk1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlFfUkVTRVQ7CisJCW1lNDAwMF9vdXRsKHRtcCwgYWlfY29udGV4dC0+Y3RybF9yZWcpOworCQlzcGluX3VubG9jaygmYWlfY29udGV4dC0+aW50X2xvY2spOworCX0KKworCS8qIFZhbHVlcyBhcmUgbm93IGF2YWlsYWJsZSwgc28gd2FrZSB1cCB3YWl0aW5nIHByb2Nlc3MgKi8KKwlpZiAobWU0MDAwX2J1Zl9jb3VudChhaV9jb250ZXh0LT5jaXJjX2J1ZiwgTUU0MDAwX0FJX0JVRkZFUl9DT1VOVCkpIHsKKwkJSVNSX1BERUJVRygibWU0MDAwX2FpX2lzcigpOldha2UgdXAgd2FpdGluZyBwcm9jZXNzXG4iKTsKKwkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCYoYWlfY29udGV4dC0+d2FpdF9xdWV1ZSkpOworCX0KKworCS8qIElmIHRoZXJlIGlzIG5vIHNwYWNlIGxlZnQgaW4gdGhlIGJ1ZmZlciwgZGlzYWJsZSBpbnRlcnJ1cHRzICovCisJc3Bpbl9sb2NrKCZhaV9jb250ZXh0LT5pbnRfbG9jayk7CisJaWYgKCFtZTQwMDBfYnVmX3NwYWNlKGFpX2NvbnRleHQtPmNpcmNfYnVmLCBNRTQwMDBfQUlfQlVGRkVSX0NPVU5UKSkgeworCQlJU1JfUERFQlVHCisJCSAgICAoIm1lNDAwMF9haV9pc3IoKTpEaXNhYmxlIEludGVycnVwdCBiZWNhdXNlIG5vIHNwYWNlIGxlZnQgaW4gYnVmZmVyXG4iKTsKKwkJdG1wID0gbWU0MDAwX2lubChhaV9jb250ZXh0LT5jdHJsX3JlZyk7CisJCXRtcCAmPQorCQkgICAgfihNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfSVJRIHwgTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUSB8CisJCSAgICAgIE1FNDAwMF9BSV9DVFJMX0JJVF9MRV9JUlEpOworCQltZTQwMDBfb3V0bCh0bXAsIGFpX2NvbnRleHQtPmN0cmxfcmVnKTsKKwl9CisJc3Bpbl91bmxvY2soJmFpX2NvbnRleHQtPmludF9sb2NrKTsKKworI2lmZGVmIE1FNDAwMF9JU1JfREVCVUcKKwlyZHRzY2woYWZ0ZXIpOworCXByaW50ayhLRVJOX0VSUiAiTUU0MDAwOm1lNDAwMF9haV9pc3IoKTpUaW1lIGxhcHNlID0gJWx1XG4iLAorCSAgICAgICBhZnRlciAtIGJlZm9yZSk7CisjZW5kaWYKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGlycXJldHVybl90IG1lNDAwMF9leHRfaW50X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJbWU0MDAwX2V4dF9pbnRfY29udGV4dF90ICpleHRfaW50X2NvbnRleHQ7CisJdW5zaWduZWQgbG9uZyB0bXA7CisKKwlJU1JfUERFQlVHKCJtZTQwMDBfZXh0X2ludF9pc3IoKSBpcyBleGVjdXRlZFxuIik7CisKKwlleHRfaW50X2NvbnRleHQgPSBkZXZfaWQ7CisKKwkvKiBDaGVjayBpZiBpcnEgbnVtYmVyIGlzIHJpZ2h0ICovCisJaWYgKGlycSAhPSBleHRfaW50X2NvbnRleHQtPmlycSkgeworCQlJU1JfUERFQlVHKCJtZTQwMDBfZXh0X2ludF9pc3IoKTppbmNvcnJlY3QgaW50ZXJydXB0IG51bTogJWRcbiIsCisJCQkgICBpcnEpOworCQlyZXR1cm4gSVJRX05PTkU7CisJfQorCisJaWYgKG1lNDAwMF9pbmwoZXh0X2ludF9jb250ZXh0LT5pcnFfc3RhdHVzX3JlZykgJgorCSAgICBNRTQwMDBfSVJRX1NUQVRVU19CSVRfRVgpIHsKKwkJSVNSX1BERUJVRygibWU0MDAwX2V4dF9pbnRfaXNyKCk6RXh0ZXJuYWwgaW50ZXJydXB0IG9jY3VyZWRcbiIpOworCQl0bXAgPSBtZTQwMDBfaW5sKGV4dF9pbnRfY29udGV4dC0+Y3RybF9yZWcpOworCQl0bXAgfD0gTUU0MDAwX0FJX0NUUkxfQklUX0VYX0lSUV9SRVNFVDsKKwkJbWU0MDAwX291dGwodG1wLCBleHRfaW50X2NvbnRleHQtPmN0cmxfcmVnKTsKKwkJdG1wICY9IH5NRTQwMDBfQUlfQ1RSTF9CSVRfRVhfSVJRX1JFU0VUOworCQltZTQwMDBfb3V0bCh0bXAsIGV4dF9pbnRfY29udGV4dC0+Y3RybF9yZWcpOworCisJCWV4dF9pbnRfY29udGV4dC0+aW50X2NvdW50Kys7CisKKwkJaWYgKGV4dF9pbnRfY29udGV4dC0+ZmFzeW5jX3B0cikgeworCQkJSVNSX1BERUJVRworCQkJICAgICgibWUyNjAwX2V4dF9pbnRfaXNyKCk6U2VuZCBzaWduYWwgdG8gcHJvY2Vzc1xuIik7CisJCQlraWxsX2Zhc3luYygmZXh0X2ludF9jb250ZXh0LT5mYXN5bmNfcHRyLCBTSUdJTywKKwkJCQkgICAgUE9MTF9JTik7CisJCX0KKwl9CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3ZvaWQgX19leGl0IG1lNDAwMF9tb2R1bGVfZXhpdCh2b2lkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmJvYXJkX3A7CisJbWU0MDAwX2luZm9fdCAqYm9hcmRfaW5mbzsKKworCUNBTExfUERFQlVHKCJjbGVhbnVwX21vZHVsZSgpIGlzIGV4ZWN1dGVkXG4iKTsKKworCXVucmVnaXN0ZXJfY2hyZGV2KG1lNDAwMF9leHRfaW50X21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0VYVF9JTlRfTkFNRSk7CisKKwl1bnJlZ2lzdGVyX2NocmRldihtZTQwMDBfY250X21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0NOVF9OQU1FKTsKKworCXVucmVnaXN0ZXJfY2hyZGV2KG1lNDAwMF9kaW9fbWFqb3JfZHJpdmVyX25vLCBNRTQwMDBfRElPX05BTUUpOworCisJdW5yZWdpc3Rlcl9jaHJkZXYobWU0MDAwX2FpX21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0FJX05BTUUpOworCisJdW5yZWdpc3Rlcl9jaHJkZXYobWU0MDAwX2FvX21ham9yX2RyaXZlcl9ubywgTUU0MDAwX0FPX05BTUUpOworCisJcmVtb3ZlX3Byb2NfZW50cnkoIm1lNDAwMCIsIE5VTEwpOworCisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZtZTQwMDBfZHJpdmVyKTsKKworCS8qIFJlc2V0IHRoZSBib2FyZHMgKi8KKwlmb3IgKGJvYXJkX3AgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQ7CisJICAgICBib2FyZF9wICE9ICZtZTQwMDBfYm9hcmRfaW5mb19saXN0OyBib2FyZF9wID0gYm9hcmRfcC0+bmV4dCkgeworCQlib2FyZF9pbmZvID0gbGlzdF9lbnRyeShib2FyZF9wLCBtZTQwMDBfaW5mb190LCBsaXN0KTsKKwkJbWU0MDAwX3Jlc2V0X2JvYXJkKGJvYXJkX2luZm8pOworCX0KKworCWNsZWFyX2JvYXJkX2luZm9fbGlzdCgpOworfQorCittb2R1bGVfZXhpdChtZTQwMDBfbW9kdWxlX2V4aXQpOworCitzdGF0aWMgaW50IG1lNDAwMF9yZWFkX3Byb2NtZW0oY2hhciAqYnVmLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZnNldCwgaW50IGNvdW50LAorCQkJICAgICAgIGludCAqZW9mLCB2b2lkICpkYXRhKQoreworCWludCBsZW4gPSAwOworCWludCBsaW1pdCA9IGNvdW50IC0gMTAwMDsKKwltZTQwMDBfaW5mb190ICpib2FyZF9pbmZvOworCXN0cnVjdCBsaXN0X2hlYWQgKnB0cjsKKworCWxlbiArPSBzcHJpbnRmKGJ1ZiArIGxlbiwgIlxuTUU0MDAwIERSSVZFUiBWRVJTSU9OICVYLiVYLiVYXG5cbiIsCisJCSAgICAgICAoTUU0MDAwX0RSSVZFUl9WRVJTSU9OICYgMHhGRjAwMDApID4+IDE2LAorCQkgICAgICAgKE1FNDAwMF9EUklWRVJfVkVSU0lPTiAmIDB4RkYwMCkgPj4gOCwKKwkJICAgICAgIChNRTQwMDBfRFJJVkVSX1ZFUlNJT04gJiAweEZGKSk7CisKKwkvKiBTZWFyY2ggZm9yIHRoZSBib2FyZCBjb250ZXh0ICovCisJZm9yIChwdHIgPSBtZTQwMDBfYm9hcmRfaW5mb19saXN0Lm5leHQ7CisJICAgICAocHRyICE9ICZtZTQwMDBfYm9hcmRfaW5mb19saXN0KSAmJiAobGVuIDwgbGltaXQpOworCSAgICAgcHRyID0gcHRyLT5uZXh0KSB7CisJCWJvYXJkX2luZm8gPSBsaXN0X2VudHJ5KHB0ciwgbWU0MDAwX2luZm9fdCwgbGlzdCk7CisKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIkJvYXJkIG51bWJlciAlZDpcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+Ym9hcmRfY291bnQpOworCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICItLS0tLS0tLS0tLS0tLS1cbiIpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiUExYIGJhc2UgcmVnaXN0ZXIgPSAweCVsWFxuIiwKKwkJCSAgICBib2FyZF9pbmZvLT5wbHhfcmVnYmFzZSk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJQTFggYmFzZSByZWdpc3RlciBzaXplID0gMHglbFhcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+cGx4X3JlZ2Jhc2Vfc2l6ZSk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJNRTQwMDAgYmFzZSByZWdpc3RlciA9IDB4JWxYXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPm1lNDAwMF9yZWdiYXNlKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIk1FNDAwMCBiYXNlIHJlZ2lzdGVyIHNpemUgPSAweCVsWFxuIiwKKwkJCSAgICBib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZV9zaXplKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIlNlcmlhbCBudW1iZXIgPSAweCVYXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPnNlcmlhbF9ubyk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJIYXJkd2FyZSByZXZpc2lvbiA9IDB4JVhcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+aHdfcmV2aXNpb24pOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiVmVuZG9yIGlkID0gMHglWFxuIiwKKwkJCSAgICBib2FyZF9pbmZvLT52ZW5kb3JfaWQpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiRGV2aWNlIGlkID0gMHglWFxuIiwKKwkJCSAgICBib2FyZF9pbmZvLT5kZXZpY2VfaWQpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiUENJIGJ1cyBudW1iZXIgPSAlZFxuIiwKKwkJCSAgICBib2FyZF9pbmZvLT5wY2lfYnVzX25vKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIlBDSSBkZXZpY2UgbnVtYmVyID0gJWRcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+cGNpX2Rldl9ubyk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJQQ0kgZnVuY3Rpb24gbnVtYmVyID0gJWRcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+cGNpX2Z1bmNfbm8pOworCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICJJUlEgPSAldVxuIiwgYm9hcmRfaW5mby0+aXJxKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwKKwkJCSAgICAiQ291bnQgb2YgaW50ZXJydXB0cyBzaW5jZSBtb2R1bGUgd2FzIGxvYWRlZCA9ICVkXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPmlycV9jb3VudCk7CisKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIkNvdW50IG9mIGFuYWxvZyBvdXRwdXRzID0gJWRcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+Ym9hcmRfcC0+YW8uY291bnQpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiQ291bnQgb2YgYW5hbG9nIG91dHB1dCBmaWZvcyA9ICVkXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPmJvYXJkX3AtPmFvLmZpZm9fY291bnQpOworCisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJDb3VudCBvZiBhbmFsb2cgaW5wdXRzID0gJWRcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+Ym9hcmRfcC0+YWkuY291bnQpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLAorCQkJICAgICJDb3VudCBvZiBzYW1wbGUgYW5kIGhvbGQgZGV2aWNlcyBmb3IgYW5hbG9nIGlucHV0ID0gJWRcbiIsCisJCQkgICAgYm9hcmRfaW5mby0+Ym9hcmRfcC0+YWkuc2hfY291bnQpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLAorCQkJICAgICJBbmFsb2cgZXh0ZXJuYWwgdHJpZ2dlciBhdmFpbGFibGUgZm9yIGFuYWxvZyBpbnB1dCA9ICVkXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPmJvYXJkX3AtPmFpLmV4X3RyaWdfYW5hbG9nKTsKKworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiQ291bnQgb2YgZGlnaXRhbCBwb3J0cyA9ICVkXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPmJvYXJkX3AtPmRpby5jb3VudCk7CisKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIkNvdW50IG9mIGNvdW50ZXIgZGV2aWNlcyA9ICVkXG4iLAorCQkJICAgIGJvYXJkX2luZm8tPmJvYXJkX3AtPmNudC5jb3VudCk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJBSSBjb250cm9sIHJlZ2lzdGVyID0gMHglMDhYXG4iLAorCQkJICAgIGlubChib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZSArCisJCQkJTUU0MDAwX0FJX0NUUkxfUkVHKSk7CisKKwkJbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAiQU8gMCBjb250cm9sIHJlZ2lzdGVyID0gMHglMDhYXG4iLAorCQkJICAgICAgIGlubChib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZSArCisJCQkJICAgTUU0MDAwX0FPXzAwX0NUUkxfUkVHKSk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJBTyAwIHN0YXR1cyByZWdpc3RlciA9IDB4JTA4WFxuIiwKKwkJCSAgICBpbmwoYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKworCQkJCU1FNDAwMF9BT18wMF9TVEFUVVNfUkVHKSk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJBTyAxIGNvbnRyb2wgcmVnaXN0ZXIgPSAweCUwOFhcbiIsCisJCQkgICAgaW5sKGJvYXJkX2luZm8tPm1lNDAwMF9yZWdiYXNlICsKKwkJCQlNRTQwMDBfQU9fMDFfQ1RSTF9SRUcpKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIkFPIDEgc3RhdHVzIHJlZ2lzdGVyID0gMHglMDhYXG4iLAorCQkJICAgIGlubChib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZSArCisJCQkJTUU0MDAwX0FPXzAxX1NUQVRVU19SRUcpKTsKKwkJbGVuICs9CisJCSAgICBzcHJpbnRmKGJ1ZiArIGxlbiwgIkFPIDIgY29udHJvbCByZWdpc3RlciA9IDB4JTA4WFxuIiwKKwkJCSAgICBpbmwoYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKworCQkJCU1FNDAwMF9BT18wMl9DVFJMX1JFRykpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiQU8gMiBzdGF0dXMgcmVnaXN0ZXIgPSAweCUwOFhcbiIsCisJCQkgICAgaW5sKGJvYXJkX2luZm8tPm1lNDAwMF9yZWdiYXNlICsKKwkJCQlNRTQwMDBfQU9fMDJfU1RBVFVTX1JFRykpOworCQlsZW4gKz0KKwkJICAgIHNwcmludGYoYnVmICsgbGVuLCAiQU8gMyBjb250cm9sIHJlZ2lzdGVyID0gMHglMDhYXG4iLAorCQkJICAgIGlubChib2FyZF9pbmZvLT5tZTQwMDBfcmVnYmFzZSArCisJCQkJTUU0MDAwX0FPXzAzX0NUUkxfUkVHKSk7CisJCWxlbiArPQorCQkgICAgc3ByaW50ZihidWYgKyBsZW4sICJBTyAzIHN0YXR1cyByZWdpc3RlciA9IDB4JTA4WFxuIiwKKwkJCSAgICBpbmwoYm9hcmRfaW5mby0+bWU0MDAwX3JlZ2Jhc2UgKworCQkJCU1FNDAwMF9BT18wM19TVEFUVVNfUkVHKSk7CisJfQorCisJKmVvZiA9IDE7CisJcmV0dXJuIGxlbjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZTQwMDAvbWU0MDAwLmggYi9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL21lNDAwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNWU0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL21lNDAwMC5oCkBAIC0wLDAgKzEsOTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIE1laWxoYXVzIEVsZWN0cm9uaWMgR21iSCAoc3VwcG9ydEBtZWlsaGF1cy5kZSkKKyAqCisgKiBTb3VyY2UgRmlsZSA6IG1lNDAwMC5oCisgKiBBdXRob3IgICAgICA6IEdHIChHdWVudGVyIEdlYmhhcmR0KSAgPGcuZ2ViaGFyZHRAbWVpbGhhdXMuZGU+CisgKi8KKworI2lmbmRlZiBfTUU0MDAwX0hfCisjZGVmaW5lIF9NRTQwMDBfSF8KKworI2lmZGVmIF9fS0VSTkVMX18KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBUaGUgdmVyc2lvbiBvZiB0aGUgZHJpdmVyIHJlbGVhc2UKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfRFJJVkVSX1ZFUlNJT04gIDB4MTAwMDkJLy8gVmVyc2lvbiAxLjAwLjA5CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgRGVidWcgc2VjdGlvbgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjdW5kZWYgTUU0MDAwX0NBTExfREVCVUcJLy8gRGVidWcgZnVuY3Rpb24gZW50cnkgYW5kIGV4aXQKKyN1bmRlZiBNRTQwMDBfSVNSX0RFQlVHCQkvLyBEZWJ1ZyB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZQorI3VuZGVmIE1FNDAwMF9QT1JUX0RFQlVHCS8vIERlYnVnIHBvcnQgYWNjZXNzCisjdW5kZWYgTUU0MDAwX0RFQlVHCQkvLyBHZW5lcmFsIHB1cnBvc2UgZGVidWcgbWFzc2VnZXMKKworI2lmZGVmIE1FNDAwMF9DQUxMX0RFQlVHCisjdW5kZWYgQ0FMTF9QREVCVUcKKyNkZWZpbmUgQ0FMTF9QREVCVUcoZm10LCBhcmdzLi4uKSBwcmludGsoS0VSTl9ERUJVRyJNRTQwMDA6IiBmbXQsICMjYXJncykKKyNlbHNlCisjIGRlZmluZSBDQUxMX1BERUJVRyhmbXQsIGFyZ3MuLi4pCS8vIG5vIGRlYnVnZ2luZywgZG8gbm90aGluZworI2VuZGlmCisKKyNpZmRlZiBNRTQwMDBfSVNSX0RFQlVHCisjdW5kZWYgSVNSX1BERUJVRworI2RlZmluZSBJU1JfUERFQlVHKGZtdCwgYXJncy4uLikgcHJpbnRrKEtFUk5fREVCVUciTUU0MDAwOiIgZm10LCAjI2FyZ3MpCisjZWxzZQorI2RlZmluZSBJU1JfUERFQlVHKGZtdCwgYXJncy4uLikJLy8gbm8gZGVidWdnaW5nLCBkbyBub3RoaW5nCisjZW5kaWYKKworI2lmZGVmIE1FNDAwMF9QT1JUX0RFQlVHCisjdW5kZWYgUE9SVF9QREVCVUcKKyNkZWZpbmUgUE9SVF9QREVCVUcoZm10LCBhcmdzLi4uKSBwcmludGsoS0VSTl9ERUJVRyJNRTQwMDA6IiBmbXQsICMjYXJncykKKyNlbHNlCisjZGVmaW5lIFBPUlRfUERFQlVHKGZtdCwgYXJncy4uLikJLy8gbm8gZGVidWdnaW5nLCBkbyBub3RoaW5nCisjZW5kaWYKKworI2lmZGVmIE1FNDAwMF9ERUJVRworI3VuZGVmIFBERUJVRworI2RlZmluZSBQREVCVUcoZm10LCBhcmdzLi4uKSBwcmludGsoS0VSTl9ERUJVRyJNRTQwMDA6IiBmbXQsICMjYXJncykKKyNlbHNlCisjZGVmaW5lIFBERUJVRyhmbXQsIGFyZ3MuLi4pCS8vIG5vIGRlYnVnZ2luZywgZG8gbm90aGluZworI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgUENJIHZlbmRvciBhbmQgZGV2aWNlIElEcworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjZGVmaW5lIFBDSV9WRU5ET1JfSURfTUVJTEhBVVMgMHgxNDAyCisKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9NRUlMSEFVU19NRTQ2NTAJMHg0NjUwCS8vIExvdyBDb3N0IHZlcnNpb24KKworI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY2MAkweDQ2NjAJLy8gU3RhbmRhcmQgdmVyc2lvbgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY2MEkJMHg0NjYxCS8vIElzb2xhdGVkIHZlcnNpb24KKyNkZWZpbmUgUENJX0RFVklDRV9JRF9NRUlMSEFVU19NRTQ2NjBTCTB4NDY2MgkvLyBTdGFuZGFyZCB2ZXJzaW9uIHdpdGggU2FtcGxlIGFuZCBIb2xkCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVJTEhBVVNfTUU0NjYwSVMJMHg0NjYzCS8vIElzb2xhdGVkIHZlcnNpb24gd2l0aCBTYW1wbGUgYW5kIEhvbGQKKworI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY3MAkweDQ2NzAJLy8gU3RhbmRhcmQgdmVyc2lvbgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY3MEkJMHg0NjcxCS8vIElzb2xhdGVkIHZlcnNpb24KKyNkZWZpbmUgUENJX0RFVklDRV9JRF9NRUlMSEFVU19NRTQ2NzBTCTB4NDY3MgkvLyBTdGFuZGFyZCB2ZXJzaW9uIHdpdGggU2FtcGxlIGFuZCBIb2xkCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVJTEhBVVNfTUU0NjcwSVMJMHg0NjczCS8vIElzb2xhdGVkIHZlcnNpb24gd2l0aCBTYW1wbGUgYW5kIEhvbGQKKworI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY4MAkweDQ2ODAJLy8gU3RhbmRhcmQgdmVyc2lvbgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FSUxIQVVTX01FNDY4MEkJMHg0NjgxCS8vIElzb2xhdGVkIHZlcnNpb24KKyNkZWZpbmUgUENJX0RFVklDRV9JRF9NRUlMSEFVU19NRTQ2ODBTCTB4NDY4MgkvLyBTdGFuZGFyZCB2ZXJzaW9uIHdpdGggU2FtcGxlIGFuZCBIb2xkCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVJTEhBVVNfTUU0NjgwSVMJMHg0NjgzCS8vIElzb2xhdGVkIHZlcnNpb24gd2l0aCBTYW1wbGUgYW5kIEhvbGQKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBEZXZpY2UgbmFtZXMsIGZvciBlbnRyaWVzIGluIC9wcm9jLy4uCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgTUU0MDAwX05BTUUJCSJtZTQwMDAiCisjZGVmaW5lIE1FNDAwMF9BT19OQU1FCQkibWU0MDAwX2FvIgorI2RlZmluZSBNRTQwMDBfQUlfTkFNRQkJIm1lNDAwMF9haSIKKyNkZWZpbmUgTUU0MDAwX0RJT19OQU1FCQkibWU0MDAwX2RpbyIKKyNkZWZpbmUgTUU0MDAwX0NOVF9OQU1FCQkibWU0MDAwX2NudCIKKyNkZWZpbmUgTUU0MDAwX0VYVF9JTlRfTkFNRQkibWU0MDAwX2V4dF9pbnQiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgTUUtNDAwMCBiYXNlIHJlZ2lzdGVyIG9mZnNldHMKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfQU9fMDBfQ1RSTF9SRUcJCQkweDAwCS8vIFIvVworI2RlZmluZSBNRTQwMDBfQU9fMDBfU1RBVFVTX1JFRwkJCTB4MDQJLy8gUi9fCisjZGVmaW5lIE1FNDAwMF9BT18wMF9GSUZPX1JFRwkJCTB4MDgJLy8gXy9XCisjZGVmaW5lIE1FNDAwMF9BT18wMF9TSU5HTEVfUkVHCQkJMHgwQwkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0FPXzAwX1RJTUVSX1JFRwkJCTB4MTAJLy8gXy9XCisKKyNkZWZpbmUgTUU0MDAwX0FPXzAxX0NUUkxfUkVHCQkJMHgxOAkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0FPXzAxX1NUQVRVU19SRUcJCQkweDFDCS8vIFIvXworI2RlZmluZSBNRTQwMDBfQU9fMDFfRklGT19SRUcJCQkweDIwCS8vIF8vVworI2RlZmluZSBNRTQwMDBfQU9fMDFfU0lOR0xFX1JFRwkJCTB4MjQJLy8gUi9XCisjZGVmaW5lIE1FNDAwMF9BT18wMV9USU1FUl9SRUcJCQkweDI4CS8vIF8vVworCisjZGVmaW5lIE1FNDAwMF9BT18wMl9DVFJMX1JFRwkJCTB4MzAJLy8gUi9XCisjZGVmaW5lIE1FNDAwMF9BT18wMl9TVEFUVVNfUkVHCQkJMHgzNAkvLyBSL18KKyNkZWZpbmUgTUU0MDAwX0FPXzAyX0ZJRk9fUkVHCQkJMHgzOAkvLyBfL1cKKyNkZWZpbmUgTUU0MDAwX0FPXzAyX1NJTkdMRV9SRUcJCQkweDNDCS8vIFIvVworI2RlZmluZSBNRTQwMDBfQU9fMDJfVElNRVJfUkVHCQkJMHg0MAkvLyBfL1cKKworI2RlZmluZSBNRTQwMDBfQU9fMDNfQ1RSTF9SRUcJCQkweDQ4CS8vIFIvVworI2RlZmluZSBNRTQwMDBfQU9fMDNfU1RBVFVTX1JFRwkJCTB4NEMJLy8gUi9fCisjZGVmaW5lIE1FNDAwMF9BT18wM19GSUZPX1JFRwkJCTB4NTAJLy8gXy9XCisjZGVmaW5lIE1FNDAwMF9BT18wM19TSU5HTEVfUkVHCQkJMHg1NAkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0FPXzAzX1RJTUVSX1JFRwkJCTB4NTgJLy8gXy9XCisKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfUkVHCQkJMHg3NAkvLyBfL1cKKyNkZWZpbmUgTUU0MDAwX0FJX1NUQVRVU19SRUcJCQkweDc0CS8vIFIvXworI2RlZmluZSBNRTQwMDBfQUlfQ0hBTk5FTF9MSVNUX1JFRwkJMHg3OAkvLyBfL1cKKyNkZWZpbmUgTUU0MDAwX0FJX0RBVEFfUkVHCQkJMHg3QwkvLyBSL18KKyNkZWZpbmUgTUU0MDAwX0FJX0NIQU5fVElNRVJfUkVHCQkweDgwCS8vIF8vVworI2RlZmluZSBNRTQwMDBfQUlfQ0hBTl9QUkVfVElNRVJfUkVHCQkweDg0CS8vIF8vVworI2RlZmluZSBNRTQwMDBfQUlfU0NBTl9USU1FUl9MT1dfUkVHCQkweDg4CS8vIF8vVworI2RlZmluZSBNRTQwMDBfQUlfU0NBTl9USU1FUl9ISUdIX1JFRwkJMHg4QwkvLyBfL1cKKyNkZWZpbmUgTUU0MDAwX0FJX1NDQU5fUFJFX1RJTUVSX0xPV19SRUcJMHg5MAkvLyBfL1cKKyNkZWZpbmUgTUU0MDAwX0FJX1NDQU5fUFJFX1RJTUVSX0hJR0hfUkVHCTB4OTQJLy8gXy9XCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFSVF9SRUcJCQkweDk4CS8vIFIvXworCisjZGVmaW5lIE1FNDAwMF9JUlFfU1RBVFVTX1JFRwkJCTB4OUMJLy8gUi9fCisKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUXzBfUkVHCQkJMHhBMAkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUXzFfUkVHCQkJMHhBNAkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUXzJfUkVHCQkJMHhBOAkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUXzNfUkVHCQkJMHhBQwkvLyBSL1cKKyNkZWZpbmUgTUU0MDAwX0RJT19ESVJfUkVHCQkJMHhCMAkvLyBSL1cKKworI2RlZmluZSBNRTQwMDBfQU9fTE9BRFNFVFJFR19YWAkJCTB4QjQJLy8gUi9XCisKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX1JFRwkJCTB4QjgJLy8gUi9XCisKKyNkZWZpbmUgTUU0MDAwX0FPX0RFTVVYX0FESlVTVF9SRUcJCTB4QkMJLy8gLS9XCisKKyNkZWZpbmUgTUU0MDAwX0FJX1NBTVBMRV9DT1VOVEVSX1JFRwkJMHhDMAkvLyBfL1cKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBWYWx1ZSB0byBhZGp1c3QgRGVtdXgKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfQU9fREVNVVhfQURKVVNUX1ZBTFVFICAgICAgICAgICAgMHg0QworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIENvdW50ZXIgYmFzZSByZWdpc3RlciBvZmZzZXRzCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgTUU0MDAwX0NOVF9DT1VOVEVSXzBfUkVHCQkweDAwCisjZGVmaW5lIE1FNDAwMF9DTlRfQ09VTlRFUl8xX1JFRwkJMHgwMQorI2RlZmluZSBNRTQwMDBfQ05UX0NPVU5URVJfMl9SRUcJCTB4MDIKKyNkZWZpbmUgTUU0MDAwX0NOVF9DVFJMX1JFRwkJCTB4MDMKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBQTFggYmFzZSByZWdpc3RlciBvZmZzZXRzCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgUExYX0lOVENTUgkweDRDCS8vIEludGVycnVwdCBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXIKKyNkZWZpbmUgUExYX0lDUgkJMHg1MAkvLyBJbml0aWFsaXphdGlvbiBjb250cm9sIHJlZ2lzdGVyCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgQml0cyBmb3IgdGhlIFBMWF9JQ1NSIHJlZ2lzdGVyCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgUExYX0lOVENTUl9MT0NBTF9JTlQxX0VOICAgICAgICAgICAgIDB4MDEJLy8gSWYgc2V0LCBsb2NhbCBpbnRlcnJ1cHQgMSBpcyBlbmFibGVkIChyL3cpCisjZGVmaW5lIFBMWF9JTlRDU1JfTE9DQUxfSU5UMV9QT0wgICAgICAgICAgICAweDAyCS8vIElmIHNldCwgbG9jYWwgaW50ZXJydXB0IDEgcG9sYXJpdHkgaXMgYWN0aXZlIGhpZ2ggKHIvdykKKyNkZWZpbmUgUExYX0lOVENTUl9MT0NBTF9JTlQxX1NUQVRFICAgICAgICAgIDB4MDQJLy8gSWYgc2V0LCBsb2NhbCBpbnRlcnJ1cHQgMSBpcyBhY3RpdmUgKHIvXykKKyNkZWZpbmUgUExYX0lOVENTUl9MT0NBTF9JTlQyX0VOICAgICAgICAgICAgIDB4MDgJLy8gSWYgc2V0LCBsb2NhbCBpbnRlcnJ1cHQgMiBpcyBlbmFibGVkIChyL3cpCisjZGVmaW5lIFBMWF9JTlRDU1JfTE9DQUxfSU5UMl9QT0wgICAgICAgICAgICAweDEwCS8vIElmIHNldCwgbG9jYWwgaW50ZXJydXB0IDIgcG9sYXJpdHkgaXMgYWN0aXZlIGhpZ2ggKHIvdykKKyNkZWZpbmUgUExYX0lOVENTUl9MT0NBTF9JTlQyX1NUQVRFICAgICAgICAgIDB4MjAJLy8gSWYgc2V0LCBsb2NhbCBpbnRlcnJ1cHQgMiBpcyBhY3RpdmUgIChyL18pCisjZGVmaW5lIFBMWF9JTlRDU1JfUENJX0lOVF9FTiAgICAgICAgICAgICAgICAweDQwCS8vIElmIHNldCwgUENJIGludGVycnVwdCBpcyBlbmFibGVkIChyL3cpCisjZGVmaW5lIFBMWF9JTlRDU1JfU09GVF9JTlQgICAgICAgICAgICAgICAgICAweDgwCS8vIElmIHNldCwgYSBzb2Z0d2FyZSBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkIChyL3cpCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgQml0cyBmb3IgdGhlIFBMWF9JQ1IgcmVnaXN0ZXIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBQTFhfSUNSX0JJVF9FRVBST01fQ0xPQ0tfU0VUCQkweDAxMDAwMDAwCisjZGVmaW5lIFBMWF9JQ1JfQklUX0VFUFJPTV9DSElQX1NFTEVDVAkJMHgwMjAwMDAwMAorI2RlZmluZSBQTFhfSUNSX0JJVF9FRVBST01fV1JJVEUJCTB4MDQwMDAwMDAKKyNkZWZpbmUgUExYX0lDUl9CSVRfRUVQUk9NX1JFQUQJCQkweDA4MDAwMDAwCisjZGVmaW5lIFBMWF9JQ1JfQklUX0VFUFJPTV9WQUxJRAkJMHgxMDAwMDAwMAorCisjZGVmaW5lIFBMWF9JQ1JfTUFTS19FRVBST00JCQkweDFGMDAwMDAwCisKKyNkZWZpbmUgRUVQUk9NX0RFTEFZCQkJCTEKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBCaXRzIGZvciB0aGUgTUU0MDAwX0FPX0NUUkxfUkVHIHJlZ2lzdGVyCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfQklUX01PREVfMAkJMHgwMDEKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfQklUX01PREVfMQkJMHgwMDIKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfTUFTS19NT0RFCQkweDAwMworI2RlZmluZSBNRTQwMDBfQU9fQ1RSTF9CSVRfU1RPUAkJCTB4MDA0CisjZGVmaW5lIE1FNDAwMF9BT19DVFJMX0JJVF9FTkFCTEVfRklGTwkJMHgwMDgKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfQklUX0VOQUJMRV9FWF9UUklHCTB4MDEwCisjZGVmaW5lIE1FNDAwMF9BT19DVFJMX0JJVF9FWF9UUklHX0VER0UJCTB4MDIwCisjZGVmaW5lIE1FNDAwMF9BT19DVFJMX0JJVF9JTU1FRElBVEVfU1RPUAkweDA4MAorI2RlZmluZSBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0RPCQkweDEwMAorI2RlZmluZSBNRTQwMDBfQU9fQ1RSTF9CSVRfRU5BQkxFX0lSUQkJMHgyMDAKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfQklUX1JFU0VUX0lSUQkJMHg0MDAKKyNkZWZpbmUgTUU0MDAwX0FPX0NUUkxfQklUX0VYX1RSSUdfQk9USAkJMHg4MDAKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBCaXRzIGZvciB0aGUgTUU0MDAwX0FPX1NUQVRVU19SRUcgcmVnaXN0ZXIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfQU9fU1RBVFVTX0JJVF9GU00JCTB4MDEKKyNkZWZpbmUgTUU0MDAwX0FPX1NUQVRVU19CSVRfRkYJCQkweDAyCisjZGVmaW5lIE1FNDAwMF9BT19TVEFUVVNfQklUX0hGCQkJMHgwNAorI2RlZmluZSBNRTQwMDBfQU9fU1RBVFVTX0JJVF9FRgkJCTB4MDgKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBCaXRzIGZvciB0aGUgTUU0MDAwX0FJX0NUUkxfUkVHIHJlZ2lzdGVyCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX01PREVfMAkJMHgwMDAwMDAwMQorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfTU9ERV8xCQkweDAwMDAwMDAyCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9NT0RFXzIJCTB4MDAwMDAwMDQKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX1NBTVBMRV9IT0xECQkweDAwMDAwMDA4CisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9JTU1FRElBVEVfU1RPUAkweDAwMDAwMDEwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9TVE9QCQkJMHgwMDAwMDAyMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfQ0hBTk5FTF9GSUZPCQkweDAwMDAwMDQwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9EQVRBX0ZJRk8JCTB4MDAwMDAwODAKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX0ZVTExTQ0FMRQkJMHgwMDAwMDEwMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfT0ZGU0VUCQkweDAwMDAwMjAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHX0FOQUxPRwkweDAwMDAwNDAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHCQkweDAwMDAwODAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9UUklHX0ZBTExJTkcJMHgwMDAwMTAwMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfRVhfSVJRCQkweDAwMDAyMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9FWF9JUlFfUkVTRVQJCTB4MDAwMDQwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX0xFX0lSUQkJMHgwMDAwODAwMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfTEVfSVJRX1JFU0VUCQkweDAwMDEwMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9IRl9JUlEJCTB4MDAwMjAwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX0hGX0lSUV9SRVNFVAkJMHgwMDA0MDAwMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfU0NfSVJRCQkweDAwMDgwMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9DVFJMX0JJVF9TQ19JUlFfUkVTRVQJCTB4MDAxMDAwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX0NUUkxfQklUX1NDX1JFTE9BRAkJMHgwMDIwMDAwMAorI2RlZmluZSBNRTQwMDBfQUlfQ1RSTF9CSVRfRVhfVFJJR19CT1RICQkweDgwMDAwMDAwCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgQml0cyBmb3IgdGhlIE1FNDAwMF9BSV9TVEFUVVNfUkVHIHJlZ2lzdGVyCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfQ0hBTk5FTAkJMHgwMDQwMDAwMAorI2RlZmluZSBNRTQwMDBfQUlfU1RBVFVTX0JJVF9IRl9DSEFOTkVMCQkweDAwODAwMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZGX0NIQU5ORUwJCTB4MDEwMDAwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX1NUQVRVU19CSVRfRUZfREFUQQkJMHgwMjAwMDAwMAorI2RlZmluZSBNRTQwMDBfQUlfU1RBVFVTX0JJVF9IRl9EQVRBCQkweDA0MDAwMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZGX0RBVEEJCTB4MDgwMDAwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX1NUQVRVU19CSVRfTEUJCQkweDEwMDAwMDAwCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFUVVNfQklUX0ZTTQkJMHgyMDAwMDAwMAorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIEJpdHMgZm9yIHRoZSBNRTQwMDBfSVJRX1NUQVRVU19SRUcgcmVnaXN0ZXIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfRVgJCTB4MDEKKyNkZWZpbmUgTUU0MDAwX0lSUV9TVEFUVVNfQklUX0xFCQkweDAyCisjZGVmaW5lIE1FNDAwMF9JUlFfU1RBVFVTX0JJVF9BSV9IRgkJMHgwNAorI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfQU9fMF9IRgkJMHgwOAorI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfQU9fMV9IRgkJMHgxMAorI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfQU9fMl9IRgkJMHgyMAorI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfQU9fM19IRgkJMHg0MAorI2RlZmluZSBNRTQwMDBfSVJRX1NUQVRVU19CSVRfU0MJCTB4ODAKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBCaXRzIGZvciB0aGUgTUU0MDAwX0RJT19DVFJMX1JFRyByZWdpc3RlcgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8wCQkwWDAwMDEKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzEJCTBYMDAwMgorI2RlZmluZSBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfMgkJMFgwMDA0CisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV8zCQkwWDAwMDgKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzQJCTBYMDAxMAorI2RlZmluZSBNRTQwMDBfRElPX0NUUkxfQklUX01PREVfNQkJMFgwMDIwCisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfTU9ERV82CQkwWDAwNDAKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX0JJVF9NT0RFXzcJCTBYMDA4MAorCisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRlVOQ1RJT05fMAkJMFgwMTAwCisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRlVOQ1RJT05fMQkJMFgwMjAwCisKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX0JJVF9GSUZPX0hJR0hfMAkJMFgwNDAwCisjZGVmaW5lIE1FNDAwMF9ESU9fQ1RSTF9CSVRfRklGT19ISUdIXzEJCTBYMDgwMAorI2RlZmluZSBNRTQwMDBfRElPX0NUUkxfQklUX0ZJRk9fSElHSF8yCQkwWDEwMDAKKyNkZWZpbmUgTUU0MDAwX0RJT19DVFJMX0JJVF9GSUZPX0hJR0hfMwkJMFgyMDAwCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgQml0cyBmb3IgdGhlIE1FNDAwMF9DTlRfQ1RSTF9SRUcgcmVnaXN0ZXIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBNRTQwMDBfQ05UX0NUUkxfQklUX0NPVU5URVJfMCAgMHgwMAorI2RlZmluZSBNRTQwMDBfQ05UX0NUUkxfQklUX0NPVU5URVJfMSAgMHg0MAorI2RlZmluZSBNRTQwMDBfQ05UX0NUUkxfQklUX0NPVU5URVJfMiAgMHg4MAorCisjZGVmaW5lIE1FNDAwMF9DTlRfQ1RSTF9CSVRfTU9ERV8wICAgICAweDAwCS8vIENoYW5nZSBzdGF0ZSBpZiB6ZXJvIGNyb3NzaW5nCisjZGVmaW5lIE1FNDAwMF9DTlRfQ1RSTF9CSVRfTU9ERV8xICAgICAweDAyCS8vIFJldHJpZ2dlcmFibGUgT25lLVNob3QKKyNkZWZpbmUgTUU0MDAwX0NOVF9DVFJMX0JJVF9NT0RFXzIgICAgIDB4MDQJLy8gQXN5bW1ldHJpY2FsIGRpdmlkZXIKKyNkZWZpbmUgTUU0MDAwX0NOVF9DVFJMX0JJVF9NT0RFXzMgICAgIDB4MDYJLy8gU3ltbWV0cmljYWwgZGl2aWRlcgorI2RlZmluZSBNRTQwMDBfQ05UX0NUUkxfQklUX01PREVfNCAgICAgMHgwOAkvLyBDb3VudGVyIHN0YXJ0IGJ5IHNvZnR3YXJlIHRyaWdnZXIKKyNkZWZpbmUgTUU0MDAwX0NOVF9DVFJMX0JJVF9NT0RFXzUgICAgIDB4MEEJLy8gQ291bnRlciBzdGFydCBieSBoYXJkd2FyZSB0cmlnZ2VyCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgRXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIG1pbm9yIGRldmljZSBudW1iZXIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBBT19CT0FSRChkZXYpICgoTUlOT1IoZGV2KSA+PiA2KSAmIDB4MykKKyNkZWZpbmUgQU9fUE9SVChkZXYpICAoKE1JTk9SKGRldikgPj4gMikgJiAweEYpCisjZGVmaW5lIEFPX01PREUoZGV2KSAgKE1JTk9SKGRldikgJiAweDMpCisKKyNkZWZpbmUgQUlfQk9BUkQoZGV2KSAoKE1JTk9SKGRldikgPj4gMykgJiAweDFGKQorI2RlZmluZSBBSV9NT0RFKGRldikgIChNSU5PUihkZXYpICYgMHg3KQorCisjZGVmaW5lIERJT19CT0FSRChkZXYpIChNSU5PUihkZXYpKQorCisjZGVmaW5lIENOVF9CT0FSRChkZXYpIChNSU5PUihkZXYpKQorCisjZGVmaW5lIEVYVF9JTlRfQk9BUkQoZGV2KSAoTUlOT1IoZGV2KSkKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBDaXJjdWxhciBidWZmZXIgdXNlZCBmb3IgYW5hbG9nIGlucHV0L291dHB1dCByZWFkcy93cml0ZXMuCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9jaXJjX2J1ZiB7CisJczE2ICpidWY7CisJaW50IHZvbGF0aWxlIGhlYWQ7CisJaW50IHZvbGF0aWxlIHRhaWw7Cit9IG1lNDAwMF9jaXJjX2J1Zl90OworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIEluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2FvX2luZm8geworCWludCBjb3VudDsKKwlpbnQgZmlmb19jb3VudDsKK30gbWU0MDAwX2FvX2luZm9fdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2FpX2luZm8geworCWludCBjb3VudDsKKwlpbnQgc2hfY291bnQ7CisJaW50IGRpZmZfY291bnQ7CisJaW50IGV4X3RyaWdfYW5hbG9nOworfSBtZTQwMDBfYWlfaW5mb190OworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfZGlvX2luZm8geworCWludCBjb3VudDsKK30gbWU0MDAwX2Rpb19pbmZvX3Q7CisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9jbnRfaW5mbyB7CisJaW50IGNvdW50OworfSBtZTQwMDBfY250X2luZm9fdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2JvYXJkIHsKKwl1MTYgdmVuZG9yX2lkOworCXUxNiBkZXZpY2VfaWQ7CisJbWU0MDAwX2FvX2luZm9fdCBhbzsKKwltZTQwMDBfYWlfaW5mb190IGFpOworCW1lNDAwMF9kaW9faW5mb190IGRpbzsKKwltZTQwMDBfY250X2luZm9fdCBjbnQ7Cit9IG1lNDAwMF9ib2FyZF90OworCitzdGF0aWMgbWU0MDAwX2JvYXJkX3QgbWU0MDAwX2JvYXJkc1tdID0geworCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2MTAsIHswLCAwfSwgezE2LCAwLCAwLCAwfSwgezR9LCB7M319LAorCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY1MCwgezAsIDB9LCB7MTYsIDAsIDAsIDB9LCB7NH0sIHswfX0sCisKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYwLCB7MiwgMH0sIHsxNiwgMCwgMCwgMH0sIHs0fSwgezN9fSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYxLCB7MiwgMH0sIHsxNiwgMCwgMCwgMH0sIHs0fSwgezN9fSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYyLCB7MiwgMH0sIHsxNiwgOCwgMCwgMH0sIHs0fSwgezN9fSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYzLCB7MiwgMH0sIHsxNiwgOCwgMCwgMH0sIHs0fSwgezN9fSwKKworCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzAsIHs0LCAwfSwgezMyLCAwLCAxNiwgMX0sIHs0fSwgezN9fSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjcxLCB7NCwgMH0sIHszMiwgMCwgMTYsIDF9LCB7NH0sIHszfX0sCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY3MiwgezQsIDB9LCB7MzIsIDgsIDE2LCAxfSwgezR9LCB7M319LAorCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzMsIHs0LCAwfSwgezMyLCA4LCAxNiwgMX0sIHs0fSwgezN9fSwKKworCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2ODAsIHs0LCA0fSwgezMyLCAwLCAxNiwgMX0sIHs0fSwgezN9fSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjgxLCB7NCwgNH0sIHszMiwgMCwgMTYsIDF9LCB7NH0sIHszfX0sCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY4MiwgezQsIDR9LCB7MzIsIDgsIDE2LCAxfSwgezR9LCB7M319LAorCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2ODMsIHs0LCA0fSwgezMyLCA4LCAxNiwgMX0sIHs0fSwgezN9fSwKKworCXswfSwKK307CisKKyNkZWZpbmUgTUU0MDAwX0JPQVJEX1ZFUlNJT05TIChzaXplb2YobWU0MDAwX2JvYXJkcykgLyBzaXplb2YobWU0MDAwX2JvYXJkX3QpIC0gMSkKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBQQ0kgZGV2aWNlIHRhYmxlLgorICBUaGlzIGlzIHVzZWQgYnkgbW9kcHJvYmUgdG8gdHJhbnNsYXRlIFBDSSBJRHMgdG8gZHJpdmVycy4KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1lNDAwMF9wY2lfdGFibGVbXSBfX2RldmluaXRkYXRhID0geworCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2MTAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAorCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY1MCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMH0sCisKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwfSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYxLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwfSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwfSwKKwl7UENJX1ZFTkRPUl9JRF9NRUlMSEFVUywgMHg0NjYzLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwfSwKKworCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAorCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAorCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAorCXtQQ0lfVkVORE9SX0lEX01FSUxIQVVTLCAweDQ2NzMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAorCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY4MCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMH0sCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY4MSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMH0sCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY4MiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMH0sCisJe1BDSV9WRU5ET1JfSURfTUVJTEhBVVMsIDB4NDY4MywgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMH0sCisKKwl7MH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtZTQwMDBfcGNpX3RhYmxlKTsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBHbG9iYWwgYm9hcmQgYW5kIHN1YmRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9pbmZvIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CS8vIExpc3Qgb2YgYWxsIGRldGVjdGVkIGJvYXJkcworCWludCBib2FyZF9jb3VudDsJLy8gSW5kZXggb2YgdGhlIGJvYXJkIGFmdGVyIGRldGVjdGlvbgorCisJdW5zaWduZWQgbG9uZyBwbHhfcmVnYmFzZTsJLy8gUExYIGNvbmZpZ3VyYXRpb24gc3BhY2UgYmFzZSBhZGRyZXNzCisJdW5zaWduZWQgbG9uZyBtZTQwMDBfcmVnYmFzZTsJLy8gQmFzZSBhZGRyZXNzIG9mIHRoZSBNRTQwMDAKKwl1bnNpZ25lZCBsb25nIHRpbWVyX3JlZ2Jhc2U7CS8vIEJhc2UgYWRkcmVzcyBvZiB0aGUgdGltZXIgY2lyY3VpdAorCXVuc2lnbmVkIGxvbmcgcHJvZ3JhbV9yZWdiYXNlOwkvLyBCYXNlIGFkZHJlc3MgdG8gc2V0IHRoZSBwcm9ncmFtIHBpbiBmb3IgdGhlIHhpbGlueAorCisJdW5zaWduZWQgbG9uZyBwbHhfcmVnYmFzZV9zaXplOwkvLyBQTFggcmVnaXN0ZXIgc2V0IHNwYWNlCisJdW5zaWduZWQgbG9uZyBtZTQwMDBfcmVnYmFzZV9zaXplOwkvLyBNRTQwMDAgcmVnaXN0ZXIgc2V0IHNwYWNlCisJdW5zaWduZWQgbG9uZyB0aW1lcl9yZWdiYXNlX3NpemU7CS8vIFRpbWVyIGNpcmN1aXQgcmVnaXN0ZXIgc2V0IHNwYWNlCisJdW5zaWduZWQgbG9uZyBwcm9ncmFtX3JlZ2Jhc2Vfc2l6ZTsJLy8gU2l6ZSBvZiBwcm9ncmFtIGJhc2UgYWRkcmVzcyBvZiB0aGUgTUU0MDAwCisKKwl1bnNpZ25lZCBpbnQgc2VyaWFsX25vOwkvLyBTZXJpYWwgbnVtYmVyIG9mIHRoZSBib2FyZAorCXVuc2lnbmVkIGNoYXIgaHdfcmV2aXNpb247CS8vIEhhcmR3YXJlIHJldmlzaW9uIG9mIHRoZSBib2FyZAorCXVuc2lnbmVkIHNob3J0IHZlbmRvcl9pZDsJLy8gTWVpbGhhdXMgdmVuZG9yIGlkICgweDE0MDIpCisJdW5zaWduZWQgc2hvcnQgZGV2aWNlX2lkOwkvLyBEZXZpY2UgSUQKKworCWludCBwY2lfYnVzX25vOwkJLy8gUENJIGJ1cyBudW1iZXIKKwlpbnQgcGNpX2Rldl9ubzsJCS8vIFBDSSBkZXZpY2UgbnVtYmVyCisJaW50IHBjaV9mdW5jX25vOwkvLyBQQ0kgZnVuY3Rpb24gbnVtYmVyCisJc3RydWN0IHBjaV9kZXYgKnBjaV9kZXZfcDsJLy8gR2VuZXJhbCBQQ0kgaW5mb3JtYXRpb24KKworCW1lNDAwMF9ib2FyZF90ICpib2FyZF9wOwkvLyBIb2xkcyB0aGUgYm9hcmQgY2FwYWJpbGl0aWVzCisKKwl1bnNpZ25lZCBpbnQgaXJxOwkvLyBJUlEgYXNzaWduZWQgZnJvbSB0aGUgUENJIEJJT1MKKwl1bnNpZ25lZCBpbnQgaXJxX2NvdW50OwkvLyBDb3VudCBvZiBleHRlcm5hbCBpbnRlcnJ1cHRzCisKKwlzcGlubG9ja190IHByZWxvYWRfbG9jazsJLy8gR3VhcmRzIHRoZSBhbmFsb2cgb3V0cHV0IHByZWxvYWQgcmVnaXN0ZXIKKwlzcGlubG9ja190IGFpX2N0cmxfbG9jazsJLy8gR3VhcmRzIHRoZSBhbmFsb2cgaW5wdXQgY29udHJvbCByZWdpc3RlcgorCisJc3RydWN0IGxpc3RfaGVhZCBhb19jb250ZXh0X2xpc3Q7CS8vIExpc3Qgd2l0aCBhbmFsb2cgb3V0cHV0IHNwZWNpZmljIGNvbnRleHQKKwlzdHJ1Y3QgbWU0MDAwX2FpX2NvbnRleHQgKmFpX2NvbnRleHQ7CS8vIEFuYWxvZyBpbnB1dCAgc3BlY2lmaWMgY29udGV4dAorCXN0cnVjdCBtZTQwMDBfZGlvX2NvbnRleHQgKmRpb19jb250ZXh0OwkvLyBEaWdpdGFsIEkvTyBzcGVjaWZpYyBjb250ZXh0CisJc3RydWN0IG1lNDAwMF9jbnRfY29udGV4dCAqY250X2NvbnRleHQ7CS8vIENvdW50ZXIgc3BlY2lmaWMgY29udGV4dAorCXN0cnVjdCBtZTQwMDBfZXh0X2ludF9jb250ZXh0ICpleHRfaW50X2NvbnRleHQ7CS8vIEV4dGVybmFsIGludGVycnVwdCBzcGVjaWZpYyBjb250ZXh0Cit9IG1lNDAwMF9pbmZvX3Q7CisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9hb19jb250ZXh0IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CS8vIGxpbmtlZCBsaXN0IG9mIG1lNDAwMF9hb19jb250ZXh0X3QKKwlpbnQgaW5kZXg7CQkvLyBJbmRleCBpbiB0aGUgbGlzdAorCWludCBtb2RlOwkJLy8gSW5kaWNhdGVzIG1vZGUgKDAgPSBzaW5nbGUsIDEgPSB3cmFwYXJvdW5kLCAyID0gY29udGlub3VzKQorCWludCBkYWNfaW5fdXNlOwkJLy8gSW5kaWNhdGVzIGlmIGFscmVhZHkgb3BlbmQKKwlzcGlubG9ja190IHVzZV9sb2NrOwkvLyBHdWFyZHMgaW5fdXNlCisJc3BpbmxvY2tfdCBpbnRfbG9jazsJLy8gVXNlZCB3aGVuIGxvY2tpbmcgb3V0IGludGVycnVwdHMKKwltZTQwMDBfY2lyY19idWZfdCBjaXJjX2J1ZjsJLy8gQ2lyY3VsYXIgYnVmZmVyCisJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9xdWV1ZTsJLy8gV2FpdCBxdWV1ZSB0byBzbGVlcCB3aGlsZSBibG9ja2luZyB3cml0ZQorCW1lNDAwMF9pbmZvX3QgKmJvYXJkX2luZm87CisJdW5zaWduZWQgaW50IGlycTsJLy8gVGhlIGlycSBhc3NvY2lhdGVkIHdpdGggdGhpcyBBREMKKwlpbnQgdm9sYXRpbGUgcGlwZV9mbGFnOwkvLyBJbmRpY2F0ZXMgYnJva2VuIHBpcGUgc2V0IGZyb20gbWU0MDAwX2FvX2lzcigpCisJdW5zaWduZWQgbG9uZyBjdHJsX3JlZzsKKwl1bnNpZ25lZCBsb25nIHN0YXR1c19yZWc7CisJdW5zaWduZWQgbG9uZyBmaWZvX3JlZzsKKwl1bnNpZ25lZCBsb25nIHNpbmdsZV9yZWc7CisJdW5zaWduZWQgbG9uZyB0aW1lcl9yZWc7CisJdW5zaWduZWQgbG9uZyBpcnFfc3RhdHVzX3JlZzsKKwl1bnNpZ25lZCBsb25nIHByZWxvYWRfcmVnOworCXN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfcDsJLy8gUXVldWUgZm9yIGFzeW5jaHJvbm91cyBub3RpZmljYXRpb24KK30gbWU0MDAwX2FvX2NvbnRleHRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2FpX2NvbnRleHQgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsJLy8gbGlua2VkIGxpc3Qgb2YgbWU0MDAwX2FpX2luZm9fdAorCWludCBtb2RlOwkJLy8gSW5kaWNhdGVzIG1vZGUKKwlpbnQgaW5fdXNlOwkJLy8gSW5kaWNhdGVzIGlmIGFscmVhZHkgb3BlbmQKKwlzcGlubG9ja190IHVzZV9sb2NrOwkvLyBHdWFyZHMgaW5fdXNlCisJc3BpbmxvY2tfdCBpbnRfbG9jazsJLy8gVXNlZCB3aGVuIGxvY2tpbmcgb3V0IGludGVycnVwdHMKKwlpbnQgbnVtYmVyOwkJLy8gTnVtYmVyIG9mIHRoZSBEQUMKKwl1bnNpZ25lZCBpbnQgaXJxOwkvLyBUaGUgaXJxIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEFEQworCW1lNDAwMF9jaXJjX2J1Zl90IGNpcmNfYnVmOwkvLyBDaXJjdWxhciBidWZmZXIKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X3F1ZXVlOwkvLyBXYWl0IHF1ZXVlIHRvIHNsZWVwIHdoaWxlIGJsb2NraW5nIHJlYWQKKwltZTQwMDBfaW5mb190ICpib2FyZF9pbmZvOworCisJc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19wOwkvLyBRdWV1ZSBmb3IgYXN5bmNocm9ub3VzIG5vdGlmaWNhdGlvbgorCisJdW5zaWduZWQgbG9uZyBjdHJsX3JlZzsKKwl1bnNpZ25lZCBsb25nIHN0YXR1c19yZWc7CisJdW5zaWduZWQgbG9uZyBjaGFubmVsX2xpc3RfcmVnOworCXVuc2lnbmVkIGxvbmcgZGF0YV9yZWc7CisJdW5zaWduZWQgbG9uZyBjaGFuX3RpbWVyX3JlZzsKKwl1bnNpZ25lZCBsb25nIGNoYW5fcHJlX3RpbWVyX3JlZzsKKwl1bnNpZ25lZCBsb25nIHNjYW5fdGltZXJfbG93X3JlZzsKKwl1bnNpZ25lZCBsb25nIHNjYW5fdGltZXJfaGlnaF9yZWc7CisJdW5zaWduZWQgbG9uZyBzY2FuX3ByZV90aW1lcl9sb3dfcmVnOworCXVuc2lnbmVkIGxvbmcgc2Nhbl9wcmVfdGltZXJfaGlnaF9yZWc7CisJdW5zaWduZWQgbG9uZyBzdGFydF9yZWc7CisJdW5zaWduZWQgbG9uZyBpcnFfc3RhdHVzX3JlZzsKKwl1bnNpZ25lZCBsb25nIHNhbXBsZV9jb3VudGVyX3JlZzsKKworCXVuc2lnbmVkIGxvbmcgY2hhbl90aW1lcjsKKwl1bnNpZ25lZCBsb25nIGNoYW5fcHJlX3RpbWVyOworCXVuc2lnbmVkIGxvbmcgc2Nhbl90aW1lcl9sb3c7CisJdW5zaWduZWQgbG9uZyBzY2FuX3RpbWVyX2hpZ2g7CisJdW5zaWduZWQgbG9uZyBjaGFubmVsX2xpc3RfY291bnQ7CisJdW5zaWduZWQgbG9uZyBzYW1wbGVfY291bnRlcjsKKwlpbnQgc2FtcGxlX2NvdW50ZXJfcmVsb2FkOworfSBtZTQwMDBfYWlfY29udGV4dF90OworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfZGlvX2NvbnRleHQgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsJLy8gbGlua2VkIGxpc3Qgb2YgbWU0MDAwX2Rpb19jb250ZXh0X3QKKwlpbnQgaW5fdXNlOwkJLy8gSW5kaWNhdGVzIGlmIGFscmVhZHkgb3BlbmQKKwlzcGlubG9ja190IHVzZV9sb2NrOwkvLyBHdWFyZHMgaW5fdXNlCisJaW50IG51bWJlcjsKKwlpbnQgZGlvX2NvdW50OworCW1lNDAwMF9pbmZvX3QgKmJvYXJkX2luZm87CisJdW5zaWduZWQgbG9uZyBkaXJfcmVnOworCXVuc2lnbmVkIGxvbmcgY3RybF9yZWc7CisJdW5zaWduZWQgbG9uZyBwb3J0XzBfcmVnOworCXVuc2lnbmVkIGxvbmcgcG9ydF8xX3JlZzsKKwl1bnNpZ25lZCBsb25nIHBvcnRfMl9yZWc7CisJdW5zaWduZWQgbG9uZyBwb3J0XzNfcmVnOworfSBtZTQwMDBfZGlvX2NvbnRleHRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2NudF9jb250ZXh0IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CS8vIGxpbmtlZCBsaXN0IG9mIG1lNDAwMF9kaW9fY29udGV4dF90CisJaW50IGluX3VzZTsJCS8vIEluZGljYXRlcyBpZiBhbHJlYWR5IG9wZW5kCisJc3BpbmxvY2tfdCB1c2VfbG9jazsJLy8gR3VhcmRzIGluX3VzZQorCWludCBudW1iZXI7CisJaW50IGNudF9jb3VudDsKKwltZTQwMDBfaW5mb190ICpib2FyZF9pbmZvOworCXVuc2lnbmVkIGxvbmcgY3RybF9yZWc7CisJdW5zaWduZWQgbG9uZyBjb3VudGVyXzBfcmVnOworCXVuc2lnbmVkIGxvbmcgY291bnRlcl8xX3JlZzsKKwl1bnNpZ25lZCBsb25nIGNvdW50ZXJfMl9yZWc7Cit9IG1lNDAwMF9jbnRfY29udGV4dF90OworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfZXh0X2ludF9jb250ZXh0IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CS8vIGxpbmtlZCBsaXN0IG9mIG1lNDAwMF9kaW9fY29udGV4dF90CisJaW50IGluX3VzZTsJCS8vIEluZGljYXRlcyBpZiBhbHJlYWR5IG9wZW5kCisJc3BpbmxvY2tfdCB1c2VfbG9jazsJLy8gR3VhcmRzIGluX3VzZQorCWludCBudW1iZXI7CisJbWU0MDAwX2luZm9fdCAqYm9hcmRfaW5mbzsKKwl1bnNpZ25lZCBpbnQgaXJxOworCXVuc2lnbmVkIGxvbmcgaW50X2NvdW50OworCXN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfcHRyOworCXVuc2lnbmVkIGxvbmcgY3RybF9yZWc7CisJdW5zaWduZWQgbG9uZyBpcnFfc3RhdHVzX3JlZzsKK30gbWU0MDAwX2V4dF9pbnRfY29udGV4dF90OworCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBBcHBsaWNhdGlvbiBpbmNsdWRlIHNlY3Rpb24gc3RhcnRzIGhlcmUKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBEZWZpbmVzIGZvciBhbmFsb2cgaW5wdXQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdlbmVyYWwgc3R1ZmYgKi8KKyNkZWZpbmUgTUU0MDAwX0FJX0ZJRk9fQ09VTlQJCTIwNDgKKworI2RlZmluZSBNRTQwMDBfQUlfTUlOX1RJQ0tTCQk2NgorI2RlZmluZSBNRTQwMDBfQUlfTUFYX1NDQU5fVElDS1MJMHhGRkZGRkZGRkZGTEwKKworI2RlZmluZSBNRTQwMDBfQUlfQlVGRkVSX1NJWkUgCQkoMzIgKiAxMDI0KQkvLyBTaXplIGluIGJ5dGVzCisKKyNkZWZpbmUgTUU0MDAwX0FJX0JVRkZFUl9DT1VOVAkJKChNRTQwMDBfQUlfQlVGRkVSX1NJWkUpIC8gMikJLy8gU2l6ZSBpbiB2YWx1ZXMKKworLyogQ2hhbm5lbCBsaXN0IGRlZmluZXMgYW5kIG1hc2tzICovCisjZGVmaW5lIE1FNDAwMF9BSV9DSEFOTkVMX0xJU1RfQ09VTlQJCTEwMjQKKworI2RlZmluZSBNRTQwMDBfQUlfTElTVF9JTlBVVF9TSU5HTEVfRU5ERUQJMHgwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfSU5QVVRfRElGRkVSRU5USUFMCTB4MDIwCisKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfUkFOR0VfQklQT0xBUl8xMAkJMHgwMDAKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfUkFOR0VfQklQT0xBUl8yXzUJMHgwNDAKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfUkFOR0VfVU5JUE9MQVJfMTAJMHgwODAKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfUkFOR0VfVU5JUE9MQVJfMl81CTB4MEMwCisKKyNkZWZpbmUgTUU0MDAwX0FJX0xJU1RfTEFTVF9FTlRSWQkJMHgxMDAKKworLyogRXh0ZXJuYWwgdHJpZ2dlciBkZWZpbmVzICovCisjZGVmaW5lIE1FNDAwMF9BSV9UUklHR0VSX1NPRlRXQVJFCQkweDAJLy8gVXNlIG9ubHkgd2l0aCBBUEkKKyNkZWZpbmUgTUU0MDAwX0FJX1RSSUdHRVJfRVhUX0RJR0lUQUwJCTB4MQorI2RlZmluZSBNRTQwMDBfQUlfVFJJR0dFUl9FWFRfQU5BTE9HCQkweDIKKworI2RlZmluZSBNRTQwMDBfQUlfVFJJR0dFUl9FWFRfRURHRV9SSVNJTkcJMHgwCisjZGVmaW5lIE1FNDAwMF9BSV9UUklHR0VSX0VYVF9FREdFX0ZBTExJTkcJMHgxCisjZGVmaW5lIE1FNDAwMF9BSV9UUklHR0VSX0VYVF9FREdFX0JPVEgJCTB4MgorCisvKiBTYW1wbGUgYW5kIEhvbGQgKi8KKyNkZWZpbmUgTUU0MDAwX0FJX1NJTVVMVEFORU9VU19ESVNBQkxFCQkweDAKKyNkZWZpbmUgTUU0MDAwX0FJX1NJTVVMVEFORU9VU19FTkFCTEUJCTB4MQorCisvKiBEZWZpbmVzIGZvciB0aGUgU2FtcGxlIENvdW50ZXIgKi8KKyNkZWZpbmUgTUU0MDAwX0FJX1NDX1JFTE9BRAkJCTB4MAorI2RlZmluZSBNRTQwMDBfQUlfU0NfT05DRQkJCTB4MQorCisvKiBNb2RlcyBmb3IgYW5hbG9nIGlucHV0ICovCisjZGVmaW5lIE1FNDAwMF9BSV9BQ1FfTU9ERV9TSU5HTEUJCTB4MDAJLy8gQ2F0Y2ggb25lIHNpbmdsZSB2YWx1ZQorI2RlZmluZSBNRTQwMDBfQUlfQUNRX01PREVfU09GVFdBUkUJCTB4MDEJLy8gQ29udGlub3VzIHNhbXBsaW5nIHdpdGggc29mdHdhcmUgc3RhcnQKKyNkZWZpbmUgTUU0MDAwX0FJX0FDUV9NT0RFX0VYVAkJCTB4MDIJLy8gQ29udGlub3VzIHNhbXBsaW5nIHdpdGggZXh0ZXJuYWwgdHJpZ2dlciBzdGFydAorI2RlZmluZSBNRTQwMDBfQUlfQUNRX01PREVfRVhUX1NJTkdMRV9WQUxVRQkweDAzCS8vIFNhbXBsZSBvbmUgdmFsdWUgYnkgZXh0ZXJuYWwgdHJpZ2dlcgorI2RlZmluZSBNRTQwMDBfQUlfQUNRX01PREVfRVhUX1NJTkdMRV9DSEFOTElTVAkweDA0CS8vIFNhbXBsZSBvbmUgY2hhbm5lbCBsaXN0IGJ5IGV4dGVybmFsIHRyaWdnZXIKKworLyogU3RhdXMgb2YgQUkgRlNNICovCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFUVVNfSURMRQkJCTB4MAorI2RlZmluZSBNRTQwMDBfQUlfU1RBVFVTX0JVU1kJCQkweDEKKworLyogVm9sdGFnZXMgZm9yIGNhbGlicmF0aW9uICovCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzFfVU5JX09GRlNFVAkJMTAuMEUtMworI2RlZmluZSBNRTQwMDBfQUlfR0FJTl8xX1VOSV9GVUxMU0NBTEUJCTk5NTAuMEUtMworI2RlZmluZSBNRTQwMDBfQUlfR0FJTl8xX0JJX09GRlNFVAkJMC4wCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzFfQklfRlVMTFNDQUxFCQk5OTUwLjBFLTMKKyNkZWZpbmUgTUU0MDAwX0FJX0dBSU5fNF9VTklfT0ZGU0VUCQkxMC4wRS0zCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzRfVU5JX0ZVTExTQ0FMRQkJMjQ1MC4wRS0zCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzRfQklfT0ZGU0VUCQkwLjAKKyNkZWZpbmUgTUU0MDAwX0FJX0dBSU5fNF9CSV9GVUxMU0NBTEUJCTI0NTAuMEUtMworCisvKiBJZGVhbCBkaWdpdHMgZm9yIGNhbGlicmF0aW9uICovCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzFfVU5JX09GRlNFVF9ESUdJVFMJKC0zMjcwMikKKyNkZWZpbmUgTUU0MDAwX0FJX0dBSU5fMV9VTklfRlVMTFNDQUxFX0RJR0lUUwkzMjQ0MAorI2RlZmluZSBNRTQwMDBfQUlfR0FJTl8xX0JJX09GRlNFVF9ESUdJVFMJMAorI2RlZmluZSBNRTQwMDBfQUlfR0FJTl8xX0JJX0ZVTExTQ0FMRV9ESUdJVFMJMzI2MDQKKyNkZWZpbmUgTUU0MDAwX0FJX0dBSU5fNF9VTklfT0ZGU0VUX0RJR0lUUwkoLTMyNTA1KQorI2RlZmluZSBNRTQwMDBfQUlfR0FJTl80X1VOSV9GVUxMU0NBTEVfRElHSVRTCTMxNDU3CisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzRfQklfT0ZGU0VUX0RJR0lUUwkwCisjZGVmaW5lIE1FNDAwMF9BSV9HQUlOXzRfQklfRlVMTFNDQUxFX0RJR0lUUwkzMjExMworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERlZmluZXMgZm9yIGFuYWxvZyBvdXRwdXQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdlbmVyYWwgc3R1ZmYgKi8KKyNkZWZpbmUgTUU0MDAwX0FPX0ZJRk9fQ09VTlQJCQkoNCAqIDEwMjQpCisKKyNkZWZpbmUgTUU0MDAwX0FPX01JTl9USUNLUwkJCTY2CisKKyNkZWZpbmUgTUU0MDAwX0FPX0JVRkZFUl9TSVpFIAkJCSgzMiAqIDEwMjQpCS8vIFNpemUgaW4gYnl0ZXMKKworI2RlZmluZSBNRTQwMDBfQU9fQlVGRkVSX0NPVU5UIAkJCSgoTUU0MDAwX0FPX0JVRkZFUl9TSVpFKSAvIDIpCS8vIFNpemUgaW4gdmFsdWVzCisKKy8qIENvbnZlcnNpb24gbW9kZXMgZm9yIGFuYWxvZyBvdXRwdXQgKi8KKyNkZWZpbmUgTUU0MDAwX0FPX0NPTlZfTU9ERV9TSU5HTEUJCTB4MAorI2RlZmluZSBNRTQwMDBfQU9fQ09OVl9NT0RFX1dSQVBBUk9VTkQJCTB4MQorI2RlZmluZSBNRTQwMDBfQU9fQ09OVl9NT0RFX0NPTlRJTlVPVVMJCTB4MgorCisvKiBUcmlnZ2VyIHNldHVwICovCisjZGVmaW5lIE1FNDAwMF9BT19UUklHR0VSX0VYVF9FREdFX1JJU0lORwkweDAKKyNkZWZpbmUgTUU0MDAwX0FPX1RSSUdHRVJfRVhUX0VER0VfRkFMTElORwkweDEKKyNkZWZpbmUgTUU0MDAwX0FPX1RSSUdHRVJfRVhUX0VER0VfQk9USAkJMHgyCisKKy8qIFN0YXR1cyBvZiBBTyBGU00gKi8KKyNkZWZpbmUgTUU0MDAwX0FPX1NUQVRVU19JRExFCQkJMHgwCisjZGVmaW5lIE1FNDAwMF9BT19TVEFUVVNfQlVTWQkJCTB4MQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERlZmluZXMgZm9yIGVlcHJvbQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSBNRTQwMDBfRUVQUk9NX0NNRF9SRUFECQkJMHgxODAKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9DTURfV1JJVEVfRU5BQkxFCQkweDEzMAorI2RlZmluZSBNRTQwMDBfRUVQUk9NX0NNRF9XUklURV9ESVNBQkxFCQkweDEwMAorI2RlZmluZSBNRTQwMDBfRUVQUk9NX0NNRF9XUklURQkJCTB4MTQwMDAwMAorCisjZGVmaW5lIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9SRUFECQk5CisjZGVmaW5lIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURV9FTkFCTEUJOQorI2RlZmluZSBNRTQwMDBfRUVQUk9NX0NNRF9MRU5HVEhfV1JJVEVfRElTQUJMRQk5CisjZGVmaW5lIE1FNDAwMF9FRVBST01fQ01EX0xFTkdUSF9XUklURQkJMjUKKworI2RlZmluZSBNRTQwMDBfRUVQUk9NX0FEUl9EQVRFX0hJR0gJCTB4MzIKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9BRFJfREFURV9MT1cJCTB4MzMKKworI2RlZmluZSBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzFfVU5JX09GRlNFVAkweDM0CisjZGVmaW5lIE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9VTklfRlVMTFNDQUxFCTB4MzUKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl8xX0JJX09GRlNFVAkweDM2CisjZGVmaW5lIE1FNDAwMF9FRVBST01fQURSX0dBSU5fMV9CSV9GVUxMU0NBTEUJMHgzNworI2RlZmluZSBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzFfRElGRl9PRkZTRVQJMHgzOAorI2RlZmluZSBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzFfRElGRl9GVUxMU0NBTEUJMHgzOQorCisjZGVmaW5lIE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9VTklfT0ZGU0VUCTB4M0EKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl80X1VOSV9GVUxMU0NBTEUJMHgzQgorI2RlZmluZSBNRTQwMDBfRUVQUk9NX0FEUl9HQUlOXzRfQklfT0ZGU0VUCTB4M0MKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9BRFJfR0FJTl80X0JJX0ZVTExTQ0FMRQkweDNECisjZGVmaW5lIE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9ESUZGX09GRlNFVAkweDNFCisjZGVmaW5lIE1FNDAwMF9FRVBST01fQURSX0dBSU5fNF9ESUZGX0ZVTExTQ0FMRQkweDNGCisKKyNkZWZpbmUgTUU0MDAwX0VFUFJPTV9BRFJfTEVOR1RICQk2CisjZGVmaW5lIE1FNDAwMF9FRVBST01fREFUQV9MRU5HVEgJCTE2CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgRGVmaW5lcyBmb3IgZGlnaXRhbCBJL08KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUX0EJCTB4MAorI2RlZmluZSBNRTQwMDBfRElPX1BPUlRfQgkJMHgxCisjZGVmaW5lIE1FNDAwMF9ESU9fUE9SVF9DCQkweDIKKyNkZWZpbmUgTUU0MDAwX0RJT19QT1JUX0QJCTB4MworCisjZGVmaW5lIE1FNDAwMF9ESU9fUE9SVF9JTlBVVAkJMHgwCisjZGVmaW5lIE1FNDAwMF9ESU9fUE9SVF9PVVRQVVQJCTB4MQorI2RlZmluZSBNRTQwMDBfRElPX0ZJRk9fTE9XCQkweDIKKyNkZWZpbmUgTUU0MDAwX0RJT19GSUZPX0hJR0gJCTB4MworCisjZGVmaW5lIE1FNDAwMF9ESU9fRlVOQ1RJT05fUEFUVEVSTgkweDAKKyNkZWZpbmUgTUU0MDAwX0RJT19GVU5DVElPTl9ERU1VWAkweDEKKyNkZWZpbmUgTUU0MDAwX0RJT19GVU5DVElPTl9NVVgJCTB4MgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERlZmluZXMgZm9yIGNvdW50ZXJzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIE1FNDAwMF9DTlRfQ09VTlRFUl8wICAwCisjZGVmaW5lIE1FNDAwMF9DTlRfQ09VTlRFUl8xICAxCisjZGVmaW5lIE1FNDAwMF9DTlRfQ09VTlRFUl8yICAyCisKKyNkZWZpbmUgTUU0MDAwX0NOVF9NT0RFXzAgICAgIDAJLy8gQ2hhbmdlIHN0YXRlIGlmIHplcm8gY3Jvc3NpbmcKKyNkZWZpbmUgTUU0MDAwX0NOVF9NT0RFXzEgICAgIDEJLy8gUmV0cmlnZ2VyYWJsZSBPbmUtU2hvdAorI2RlZmluZSBNRTQwMDBfQ05UX01PREVfMiAgICAgMgkvLyBBc3ltbWV0cmljYWwgZGl2aWRlcgorI2RlZmluZSBNRTQwMDBfQ05UX01PREVfMyAgICAgMwkvLyBTeW1tZXRyaWNhbCBkaXZpZGVyCisjZGVmaW5lIE1FNDAwMF9DTlRfTU9ERV80ICAgICA0CS8vIENvdW50ZXIgc3RhcnQgYnkgc29mdHdhcmUgdHJpZ2dlcgorI2RlZmluZSBNRTQwMDBfQ05UX01PREVfNSAgICAgNQkvLyBDb3VudGVyIHN0YXJ0IGJ5IGhhcmR3YXJlIHRyaWdnZXIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBHZW5lcmFsIHR5cGUgZGVmaW5pdGlvbnMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF91c2VyX2luZm8geworCWludCBib2FyZF9jb3VudDsJLy8gSW5kZXggb2YgdGhlIGJvYXJkIGFmdGVyIGRldGVjdGlvbgorCXVuc2lnbmVkIGxvbmcgcGx4X3JlZ2Jhc2U7CS8vIFBMWCBjb25maWd1cmF0aW9uIHNwYWNlIGJhc2UgYWRkcmVzcworCXVuc2lnbmVkIGxvbmcgbWU0MDAwX3JlZ2Jhc2U7CS8vIEJhc2UgYWRkcmVzcyBvZiB0aGUgTUU0MDAwCisJdW5zaWduZWQgbG9uZyBwbHhfcmVnYmFzZV9zaXplOwkvLyBQTFggcmVnaXN0ZXIgc2V0IHNwYWNlCisJdW5zaWduZWQgbG9uZyBtZTQwMDBfcmVnYmFzZV9zaXplOwkvLyBNRTQwMDAgcmVnaXN0ZXIgc2V0IHNwYWNlCisJdW5zaWduZWQgbG9uZyBzZXJpYWxfbm87CS8vIFNlcmlhbCBudW1iZXIgb2YgdGhlIGJvYXJkCisJdW5zaWduZWQgY2hhciBod19yZXZpc2lvbjsJLy8gSGFyZHdhcmUgcmV2aXNpb24gb2YgdGhlIGJvYXJkCisJdW5zaWduZWQgc2hvcnQgdmVuZG9yX2lkOwkvLyBNZWlsaGF1cyB2ZW5kb3IgaWQgKDB4MTQwMikKKwl1bnNpZ25lZCBzaG9ydCBkZXZpY2VfaWQ7CS8vIERldmljZSBJRAorCWludCBwY2lfYnVzX25vOwkJLy8gUENJIGJ1cyBudW1iZXIKKwlpbnQgcGNpX2Rldl9ubzsJCS8vIFBDSSBkZXZpY2UgbnVtYmVyCisJaW50IHBjaV9mdW5jX25vOwkvLyBQQ0kgZnVuY3Rpb24gbnVtYmVyCisJY2hhciBpcnE7CQkvLyBJUlEgYXNzaWduZWQgZnJvbSB0aGUgUENJIEJJT1MKKwlpbnQgaXJxX2NvdW50OwkJLy8gQ291bnQgb2YgZXh0ZXJuYWwgaW50ZXJydXB0cworCisJaW50IGRyaXZlcl92ZXJzaW9uOwkvLyBWZXJzaW9uIG9mIHRoZSBkcml2ZXIgcmVsZWFzZQorCisJaW50IGFvX2NvdW50OwkJLy8gQ291bnQgb2YgYW5hbG9nIG91dHB1dCBjaGFubmVscworCWludCBhb19maWZvX2NvdW50OwkvLyBDb3VudCBmbyBhbmFsb2cgb3V0cHV0IGZpZm9zCisKKwlpbnQgYWlfY291bnQ7CQkvLyBDb3VudCBvZiBhbmFsb2cgaW5wdXQgY2hhbm5lbHMKKwlpbnQgYWlfc2hfY291bnQ7CS8vIENvdW50IG9mIHNhbXBsZSBhbmQgaG9sZCBkZXZpY2VzCisJaW50IGFpX2V4X3RyaWdfYW5hbG9nOwkvLyBGbGFnIHRvIGluZGljYXRlIGlmIGFuYWxvZ291cyBleHRlcm5hbCB0cmlnZ2VyIGlzIGF2YWlsYWJsZQorCisJaW50IGRpb19jb3VudDsJCS8vIENvdW50IG9mIGRpZ2l0YWwgSS9PIHBvcnRzCisKKwlpbnQgY250X2NvdW50OwkJLy8gQ291bnQgb2YgY291bnRlcnMKK30gbWU0MDAwX3VzZXJfaW5mb190OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFR5cGUgZGVmaW5pdGlvbnMgZm9yIGFuYWxvZyBvdXRwdXQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9hb19jaGFubmVsX2xpc3QgeworCXVuc2lnbmVkIGxvbmcgY291bnQ7CisJdW5zaWduZWQgbG9uZyAqbGlzdDsKK30gbWU0MDAwX2FvX2NoYW5uZWxfbGlzdF90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFR5cGUgZGVmaW5pdGlvbnMgZm9yIGFuYWxvZyBpbnB1dAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2FpX2NoYW5uZWxfbGlzdCB7CisJdW5zaWduZWQgbG9uZyBjb3VudDsKKwl1bnNpZ25lZCBsb25nICpsaXN0OworfSBtZTQwMDBfYWlfY2hhbm5lbF9saXN0X3Q7CisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9haV90aW1lciB7CisJdW5zaWduZWQgbG9uZyBwcmVfY2hhbjsKKwl1bnNpZ25lZCBsb25nIGNoYW47CisJdW5zaWduZWQgbG9uZyBzY2FuX2xvdzsKKwl1bnNpZ25lZCBsb25nIHNjYW5faGlnaDsKK30gbWU0MDAwX2FpX3RpbWVyX3Q7CisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9haV9jb25maWcgeworCW1lNDAwMF9haV90aW1lcl90IHRpbWVyOworCW1lNDAwMF9haV9jaGFubmVsX2xpc3RfdCBjaGFubmVsX2xpc3Q7CisJaW50IHNoOworfSBtZTQwMDBfYWlfY29uZmlnX3Q7CisKK3R5cGVkZWYgc3RydWN0IG1lNDAwMF9haV9zaW5nbGUgeworCWludCBjaGFubmVsOworCWludCByYW5nZTsKKwlpbnQgbW9kZTsKKwlzaG9ydCB2YWx1ZTsKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7Cit9IG1lNDAwMF9haV9zaW5nbGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2FpX3RyaWdnZXIgeworCWludCBtb2RlOworCWludCBlZGdlOworfSBtZTQwMDBfYWlfdHJpZ2dlcl90OworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfYWlfc2MgeworCXVuc2lnbmVkIGxvbmcgdmFsdWU7CisJaW50IHJlbG9hZDsKK30gbWU0MDAwX2FpX3NjX3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVHlwZSBkZWZpbml0aW9ucyBmb3IgZWVwcm9tCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfZWVwcm9tIHsKKwl1bnNpZ25lZCBsb25nIGRhdGU7CisJc2hvcnQgdW5pXzEwX29mZnNldDsKKwlzaG9ydCB1bmlfMTBfZnVsbHNjYWxlOworCXNob3J0IHVuaV8yXzVfb2Zmc2V0OworCXNob3J0IHVuaV8yXzVfZnVsbHNjYWxlOworCXNob3J0IGJpXzEwX29mZnNldDsKKwlzaG9ydCBiaV8xMF9mdWxsc2NhbGU7CisJc2hvcnQgYmlfMl81X29mZnNldDsKKwlzaG9ydCBiaV8yXzVfZnVsbHNjYWxlOworCXNob3J0IGRpZmZfMTBfb2Zmc2V0OworCXNob3J0IGRpZmZfMTBfZnVsbHNjYWxlOworCXNob3J0IGRpZmZfMl81X29mZnNldDsKKwlzaG9ydCBkaWZmXzJfNV9mdWxsc2NhbGU7Cit9IG1lNDAwMF9lZXByb21fdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBUeXBlIGRlZmluaXRpb25zIGZvciBkaWdpdGFsIEkvTworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2Rpb19jb25maWcgeworCWludCBwb3J0OworCWludCBtb2RlOworCWludCBmdW5jdGlvbjsKK30gbWU0MDAwX2Rpb19jb25maWdfdDsKKwordHlwZWRlZiBzdHJ1Y3QgbWU0MDAwX2Rpb19ieXRlIHsKKwlpbnQgcG9ydDsKKwl1bnNpZ25lZCBjaGFyIGJ5dGU7Cit9IG1lNDAwMF9kaW9fYnl0ZV90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFR5cGUgZGVmaW5pdGlvbnMgZm9yIGNvdW50ZXJzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfY250IHsKKwlpbnQgY291bnRlcjsKKwl1bnNpZ25lZCBzaG9ydCB2YWx1ZTsKK30gbWU0MDAwX2NudF90OworCit0eXBlZGVmIHN0cnVjdCBtZTQwMDBfY250X2NvbmZpZyB7CisJaW50IGNvdW50ZXI7CisJaW50IG1vZGU7Cit9IG1lNDAwMF9jbnRfY29uZmlnX3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVHlwZSBkZWZpbml0aW9ucyBmb3IgZXh0ZXJuYWwgaW50ZXJydXB0CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit0eXBlZGVmIHN0cnVjdCB7CisJaW50IGludDFfY291bnQ7CisJaW50IGludDJfY291bnQ7Cit9IG1lNDAwMF9pbnRfdHlwZTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBUaGUgaW9jdGxzIG9mIHRoZSBib2FyZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSBNRTQwMDBfSU9DVExfTUFYTlIgNTAKKyNkZWZpbmUgTUU0MDAwX01BR0lDICd5JworI2RlZmluZSBNRTQwMDBfR0VUX1VTRVJfSU5GTyAgICAgICAgICBfSU9SIChNRTQwMDBfTUFHSUMsIDAsIG1lNDAwMF91c2VyX2luZm9fdCkKKworI2RlZmluZSBNRTQwMDBfQU9fU1RBUlQgICAgICAgICAgICAgICBfSU9XIChNRTQwMDBfTUFHSUMsIDEsIHVuc2lnbmVkIGxvbmcpCisjZGVmaW5lIE1FNDAwMF9BT19TVE9QICAgICAgICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMikKKyNkZWZpbmUgTUU0MDAwX0FPX0lNTUVESUFURV9TVE9QICAgICAgX0lPICAoTUU0MDAwX01BR0lDLCAzKQorI2RlZmluZSBNRTQwMDBfQU9fUkVTRVQgICAgICAgICAgICAgICBfSU8gIChNRTQwMDBfTUFHSUMsIDQpCisjZGVmaW5lIE1FNDAwMF9BT19QUkVMT0FEICAgICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgNSkKKyNkZWZpbmUgTUU0MDAwX0FPX1BSRUxPQURfVVBEQVRFICAgICAgX0lPICAoTUU0MDAwX01BR0lDLCA2KQorI2RlZmluZSBNRTQwMDBfQU9fRVhfVFJJR19FTkFCTEUgICAgICBfSU8gIChNRTQwMDBfTUFHSUMsIDcpCisjZGVmaW5lIE1FNDAwMF9BT19FWF9UUklHX0RJU0FCTEUgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgOCkKKyNkZWZpbmUgTUU0MDAwX0FPX0VYX1RSSUdfU0VUVVAgICAgICAgX0lPVyAoTUU0MDAwX01BR0lDLCA5LCBpbnQpCisjZGVmaW5lIE1FNDAwMF9BT19USU1FUl9TRVRfRElWSVNPUiAgIF9JT1cgKE1FNDAwMF9NQUdJQywgMTAsIHVuc2lnbmVkIGxvbmcpCisjZGVmaW5lIE1FNDAwMF9BT19FTkFCTEVfRE8gICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTEpCisjZGVmaW5lIE1FNDAwMF9BT19ESVNBQkxFX0RPICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTIpCisjZGVmaW5lIE1FNDAwMF9BT19GU01fU1RBVEUgICAgICAgICAgIF9JT1IgKE1FNDAwMF9NQUdJQywgMTMsIGludCkKKworI2RlZmluZSBNRTQwMDBfQUlfU0lOR0xFICAgICAgICAgICAgICBfSU9SIChNRTQwMDBfTUFHSUMsIDE0LCBtZTQwMDBfYWlfc2luZ2xlX3QpCisjZGVmaW5lIE1FNDAwMF9BSV9TVEFSVCAgICAgICAgICAgICAgIF9JT1cgKE1FNDAwMF9NQUdJQywgMTUsIHVuc2lnbmVkIGxvbmcpCisjZGVmaW5lIE1FNDAwMF9BSV9TVE9QICAgICAgICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTYpCisjZGVmaW5lIE1FNDAwMF9BSV9JTU1FRElBVEVfU1RPUCAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTcpCisjZGVmaW5lIE1FNDAwMF9BSV9FWF9UUklHX0VOQUJMRSAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTgpCisjZGVmaW5lIE1FNDAwMF9BSV9FWF9UUklHX0RJU0FCTEUgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMTkpCisjZGVmaW5lIE1FNDAwMF9BSV9FWF9UUklHX1NFVFVQICAgICAgIF9JT1cgKE1FNDAwMF9NQUdJQywgMjAsIG1lNDAwMF9haV90cmlnZ2VyX3QpCisjZGVmaW5lIE1FNDAwMF9BSV9DT05GSUcgICAgICAgICAgICAgIF9JT1cgKE1FNDAwMF9NQUdJQywgMjEsIG1lNDAwMF9haV9jb25maWdfdCkKKyNkZWZpbmUgTUU0MDAwX0FJX1NDX1NFVFVQICAgICAgICAgICAgX0lPVyAoTUU0MDAwX01BR0lDLCAyMiwgbWU0MDAwX2FpX3NjX3QpCisjZGVmaW5lIE1FNDAwMF9BSV9GU01fU1RBVEUgICAgICAgICAgIF9JT1IgKE1FNDAwMF9NQUdJQywgMjMsIGludCkKKworI2RlZmluZSBNRTQwMDBfRElPX0NPTkZJRyAgICAgICAgICAgICBfSU9XIChNRTQwMDBfTUFHSUMsIDI0LCBtZTQwMDBfZGlvX2NvbmZpZ190KQorI2RlZmluZSBNRTQwMDBfRElPX0dFVF9CWVRFICAgICAgICAgICBfSU9SIChNRTQwMDBfTUFHSUMsIDI1LCBtZTQwMDBfZGlvX2J5dGVfdCkKKyNkZWZpbmUgTUU0MDAwX0RJT19TRVRfQllURSAgICAgICAgICAgX0lPVyAoTUU0MDAwX01BR0lDLCAyNiwgbWU0MDAwX2Rpb19ieXRlX3QpCisjZGVmaW5lIE1FNDAwMF9ESU9fUkVTRVQgICAgICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMjcpCisKKyNkZWZpbmUgTUU0MDAwX0NOVF9SRUFEICAgICAgICAgICAgICAgX0lPUiAoTUU0MDAwX01BR0lDLCAyOCwgbWU0MDAwX2NudF90KQorI2RlZmluZSBNRTQwMDBfQ05UX1dSSVRFICAgICAgICAgICAgICBfSU9XIChNRTQwMDBfTUFHSUMsIDI5LCBtZTQwMDBfY250X3QpCisjZGVmaW5lIE1FNDAwMF9DTlRfQ09ORklHICAgICAgICAgICAgIF9JT1cgKE1FNDAwMF9NQUdJQywgMzAsIG1lNDAwMF9jbnRfY29uZmlnX3QpCisjZGVmaW5lIE1FNDAwMF9DTlRfUkVTRVQgICAgICAgICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMzEpCisKKyNkZWZpbmUgTUU0MDAwX0VYVF9JTlRfRElTQUJMRSAgICAgICAgX0lPICAoTUU0MDAwX01BR0lDLCAzMikKKyNkZWZpbmUgTUU0MDAwX0VYVF9JTlRfRU5BQkxFICAgICAgICAgX0lPICAoTUU0MDAwX01BR0lDLCAzMykKKyNkZWZpbmUgTUU0MDAwX0VYVF9JTlRfQ09VTlQgICAgICAgICAgX0lPUiAoTUU0MDAwX01BR0lDLCAzNCwgaW50KQorCisjZGVmaW5lIE1FNDAwMF9BSV9PRkZTRVRfRU5BQkxFICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMzUpCisjZGVmaW5lIE1FNDAwMF9BSV9PRkZTRVRfRElTQUJMRSAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMzYpCisjZGVmaW5lIE1FNDAwMF9BSV9GVUxMU0NBTEVfRU5BQkxFICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMzcpCisjZGVmaW5lIE1FNDAwMF9BSV9GVUxMU0NBTEVfRElTQUJMRSAgIF9JTyAgKE1FNDAwMF9NQUdJQywgMzgpCisKKyNkZWZpbmUgTUU0MDAwX0FJX0VFUFJPTV9SRUFEICAgICAgICAgX0lPUiAoTUU0MDAwX01BR0lDLCAzOSwgbWU0MDAwX2VlcHJvbV90KQorI2RlZmluZSBNRTQwMDBfQUlfRUVQUk9NX1dSSVRFICAgICAgICBfSU9XIChNRTQwMDBfTUFHSUMsIDQwLCBtZTQwMDBfZWVwcm9tX3QpCisKKyNkZWZpbmUgTUU0MDAwX0FPX1NJTVVMVEFORU9VU19FWF9UUklHIF9JTyAgKE1FNDAwMF9NQUdJQywgNDEpCisjZGVmaW5lIE1FNDAwMF9BT19TSU1VTFRBTkVPVVNfU1cgICAgICBfSU8gIChNRTQwMDBfTUFHSUMsIDQyKQorI2RlZmluZSBNRTQwMDBfQU9fU0lNVUxUQU5FT1VTX0RJU0FCTEUgX0lPICAoTUU0MDAwX01BR0lDLCA0MykKKyNkZWZpbmUgTUU0MDAwX0FPX1NJTVVMVEFORU9VU19VUERBVEUgIF9JT1cgKE1FNDAwMF9NQUdJQywgNDQsIG1lNDAwMF9hb19jaGFubmVsX2xpc3RfdCkKKworI2RlZmluZSBNRTQwMDBfQU9fU1lOQ0hST05PVVNfRVhfVFJJRyAgX0lPICAoTUU0MDAwX01BR0lDLCA0NSkKKyNkZWZpbmUgTUU0MDAwX0FPX1NZTkNIUk9OT1VTX1NXICAgICAgIF9JTyAgKE1FNDAwMF9NQUdJQywgNDYpCisjZGVmaW5lIE1FNDAwMF9BT19TWU5DSFJPTk9VU19ESVNBQkxFICBfSU8gIChNRTQwMDBfTUFHSUMsIDQ3KQorCisjZGVmaW5lIE1FNDAwMF9BT19FWF9UUklHX1RJTUVPVVQgICAgICBfSU9XIChNRTQwMDBfTUFHSUMsIDQ4LCB1bnNpZ25lZCBsb25nKQorI2RlZmluZSBNRTQwMDBfQU9fR0VUX0ZSRUVfQlVGRkVSICAgICAgX0lPUiAoTUU0MDAwX01BR0lDLCA0OSwgdW5zaWduZWQgbG9uZykKKworI2RlZmluZSBNRTQwMDBfQUlfR0VUX0NPVU5UX0JVRkZFUiAgICAgX0lPUiAoTUU0MDAwX01BR0lDLCA1MCwgdW5zaWduZWQgbG9uZykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL21lNDAwMF9maXJtd2FyZS5oIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQwMDBfZmlybXdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2MyM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQwMDBfZmlybXdhcmUuaApAQCAtMCwwICsxLDEwMDMzIEBACisvKgorICAgVGhpcyBmaWxlIGlzIGNvcHlyaWdodCBieSBNZWlsaGF1cyBFbGVjdHJvbmljIEdtYkggMjAwMy4KKyAgIFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gZGlzdHJpYnV0ZSwgc2VsbCwgbW9kaWZ5LCByZXZlcnNlIGVuZ2luZWVyIG9yIHVzZSB0aGlzCisgICBjb2RlIChvciBwYXJ0cyBvZiBpdCkgZm9yIGFueSBvdGhlciBwdXJwb3NlIG9yIHVuZGVyIGFueSBvdGhlciBjb25kaXRpb25zCisgICB0aGFuIHN0YXRlZCBiZWxvdy4KKworICAgMSkgWW91IGFyZSBhbGxvd2VkIHRvIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoaXMgZmlsZSB0b2dldGhlcgorICAgd2l0aCBkZXZpY2UgZHJpdmVycyBmb3IgdGhlIE1laWxoYXVzIE1FLTQwMDAsIGJvYXJkIGZhbWlseS4KKworICAgMikgRGVyaXZlZCB3b3JrIChkZXZpY2UgZHJpdmVycyB1c2luZyB0aGlzIGZpbGUpIGNhbiBiZSBwdWJsaXNoZWQgdW5kZXIKKyAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gQW55IG90aGVyIGxpY2Vuc2UgdGVybXMgaGF2ZQorICAgdG8gYmUgYWdyZWVkIGJ5IE1laWxoYXVzIEdtYkggaW4gd3JpdHRlbi4KKworICAgMikgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOworICAgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQorICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIE1laWxoYXVzIGlzIHVuZGVyCisgICBubyBtZWFucyBsaWFibGUgZm9yIHByb2R1Y3RzIHVzaW5nIHRoaXMgZmlsZSBvciBwYXJ0cyBvZiBpdC4KKworICAgMykgVGhlIGNvcHlyaWdodCBvZiB0aGlzIGZpbGUgaGFzIHRvIGJlIG1lbnRpb25lZCBpbiBkZXJpdmVkIHdvcmsuCisKKyAgIDQpIElmIHRoaXMgbGljZW5zZSB0ZXJtcyBhcmUgbm90IHZhbGlkIGR1ZSB0byBhbnkgb3RoZXIgbGF3CisgICBvciByZXN0cmljdGlvbnMgaW1wb3NlZCBvbiB5b3UsIHlvdSBhcmUgbm90IGFsbG93ZWQgdG8gdXNlCisgICB0aGlzIGZpbGUgaW4gYW55IHdheSBhdCBhbGwuCisgKi8KKworLyogVmVyc2lvbiAxOCBvZiBzdGFuZGFyZCBmaXJtd2FyZSAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgeGlsaW54X2Zpcm1bXSA9IHsKKzB4MDAsIDB4MDEsIDB4ZmIsIDB4ZGMsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDQsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweDU1LCAweDk5LCAweEFBLCAweDY2LCAweDBDLCAweDAwLAorMHgwMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHgwQywgMHg4MCwgMHgwNiwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4RjAsIDB4MEMsIDB4ODAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDEsIDB4RkMsIDB4QjQsIDB4MEMsIDB4MDAsIDB4MDMsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDAxLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDBDLAorMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4ODAsIDB4MEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MEEsIDB4MDAsIDB4NkUsIDB4MEQsIDB4MDEsIDB4NDksIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHg4MCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsCisweDAwLCAweDIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0QSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQ4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwOSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhGRSwgMHg0QiwgMHgwMiwgMHgzRSwgMHgwMCwgMHhFQSwgMHgwMCwgMHhBOCwgMHgwMCwgMHhBMCwKKzB4MEEsIDB4ODAsIDB4MkEsIDB4MDAsIDB4QUUsIDB4MDAsIDB4QjgsIDB4MDIsIDB4QTAsIDB4MDIsIDB4ODAsIDB4MjgsIDB4MDAsCisweEFBLCAweDAwLCAweEI4LCAweDAyLCAweDYwLCAweDAyLCAweDgwLCAweDBCLCAweDAwLCAweDI2LCAweDAwLCAweEI4LCAweDAwLAorMHhFMCwgMHgwMiwgMHg4MCwgMHgwQiwgMHgwMCwgMHgyRSwgMHgwMCwgMHhCOCwgMHgwMCwgMHhFMCwgMHgwMiwgMHg4MCwgMHgwQiwKKzB4MDAsIDB4QUUsIDB4MDAsIDB4QjgsIDB4MDIsIDB4ODAsIDB4MEEsIDB4RkMsIDB4MjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDVCLCAweDAwLCAweEYzLCAweDA0LCAweENDLCAweDAxLCAweEYyLCAweDk2LCAweEMyLAorMHhERiwgMHgzMCwgMHhCQiwgMHg0MywgMHhEMCwgMHg3MywgMHhCMCwgMHg4RiwgMHhDMCwgMHgzRCwgMHgwMiwgMHhGQiwgMHg0OCwKKzB4RkMsIDB4MTMsIDB4MzAsIDB4MTMsIDB4QzAsIDB4NEYsIDB4MDIsIDB4M0YsIDB4MDEsIDB4REMsIDB4MTMsIDB4QjAsIDB4NEYsCisweEMwLCAweDRGLCAweDAwLCAweDNCLCAweEM5LCAweENDLCAweDA0LCAweEYyLCAweDEzLCAweEMwLCAweEZDLCAweDAwLCAweEZCLAorMHhDOSwgMHg4QywgMHgyNywgMHgzMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MDgsIDB4NTcsIDB4NDAsIDB4RTEsIDB4MDgsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MDksIDB4NDAsIDB4MTMsCisweDAxLCAweEQxLCAweDA0LCAweEM0LCAweDFCLCAweDEwLCAweDZELCAweDQwLCAweDNDLCAweDAyLCAweERELCAweDA2LCAweEY0LAorMHgwRiwgMHgxMCwgMHgxMSwgMHg0MCwgMHgyNywgMHgxMSwgMHg1NywgMHg4MSwgMHhDNCwgMHgwRiwgMHhEMCwgMHhCRiwgMHg0MCwKKzB4NjQsIDB4MDAsIDB4NTEsIDB4MDQsIDB4NDQsIDB4MDQsIDB4RDAsIDB4MTEsIDB4NTAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDAsCisweDU0LCAweDExLCAweDE0LCAweDE5LCAweDQwLCAweDE3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhEOCwgMHg0OCwgMHg0NCwgMHgyMSwgMHgwMCwKKzB4QzksIDB4MDAsIDB4MTQsIDB4MDMsIDB4RDAsIDB4Q0MsIDB4NjQsIDB4MzMsIDB4MTEsIDB4Q0QsIDB4MDYsIDB4MzQsIDB4MjMsCisweDUwLCAweDAwLCAweDAwLCAweDAyLCAweDAxLCAweDhELCAweDAwLCAweDA0LCAweDIzLCAweEQwLCAweDBDLCAweDQyLCAweDAxLAorMHgwMCwgMHhDMSwgMHgwMCwgMHgxNCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0NCwgMHgzMCwgMHgwOSwgMHhDRCwgMHg0NCwgMHg0NCwKKzB4MTIsIDB4MTAsIDB4MDAsIDB4NDQsIDB4NDcsIDB4ODgsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEE4LCAweEI1LCAweDAxLCAweEQxLCAweDAwLCAweDQ0LCAweDBBLCAweEQ4LCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweEQxLAorMHg0MCwgMHg0NCwgMHgwMywgMHg1MCwgMHgwRCwgMHg2MCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHg1MCwKKzB4MDEsIDB4NDAsIDB4MjcsIDB4MTAsIDB4RDUsIDB4MDAsIDB4NDQsIDB4MDMsIDB4Q0EsIDB4MEQsIDB4NDAsIDB4NjUsIDB4MDAsCisweEMxLCAweDAwLCAweDQ0LCAweEM2LCAweEQwLCAweDE5LCAweDQwLCAweDMwLCAweDAwLCAweEQxLCAweDAwLCAweDU0LCAweDA5LAorMHgxNCwgMHgxMSwgMHg0MCwgMHgxRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwKKzB4RTMsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NEMsIDB4MEEsIDB4RjAsIDB4MEQsIDB4QzQsIDB4RjcsIDB4MDAsIDB4OUIsIDB4NDAsCisweDVDLCAweDAzLCAweEYyLCAweDBELCAweEM2LCAweDM3LCAweDEwLCAweERCLCAweDAwLCAweDc0LCAweDAzLCAweDcwLCAweEExLAorMHg4MSwgMHgzNywgMHgwMCwgMHhDRiwgMHgwMywgMHg0QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHhDNywgMHgwMSwgMHg5MywKKzB4MDAsIDB4NUQsIDB4MEMsIDB4RjAsIDB4MzEsIDB4QzAsIDB4MzQsIDB4MDAsIDB4NUYsIDB4QzAsIDB4MEMsIDB4MDcsIDB4MzAsCisweDcxLCAweDgwLCAweDAzLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDNELAorMHgwOCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwgMHhDMCwgMHhGRiwgMHgxOCwgMHhGRiwgMHgwNCwgMHhBQywKKzB4MDMsIDB4QjEsIDB4MEQsIDB4QzgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4ODAsIDB4N0MsIDB4MDMsIDB4QjQsIDB4MTMsIDB4Q0EsCisweEZGLCAweDAwLCAweEY3LCAweDAzLCAweEU0LCAweDQzLCAweEYwLCAweDBFLCAweEMxLCAweDBFLCAweDAwLCAweEZGLCAweDAwLAorMHhGQywgMHg0MCwgMHhGMCwgMHgwQiwgMHhFMiwgMHgzRiwgMHgwMCwgMHhGRiwgMHg4MywgMHhGRCwgMHgyNSwgMHhGMCwgMHgwQiwKKzB4QzAsIDB4MUUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MjUsIDB4MDAsCisweEQzLCAweDAwLCAweDRDLCAweDBBLCAweDMwLCAweDBELCAweEMwLCAweEE0LCAweDAwLCAweEQ3LCAweDAwLCAweDVDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwgMHhENywgMHgwMCwgMHgwQywgMHgwMywgMHgzMCwgMHg0MSwgMHhDNCwgMHgzNSwKKzB4MDAsIDB4RDMsIDB4MDIsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDUsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsCisweDBFLCAweDMwLCAweDAxLCAweEMxLCAweDM3LCAweDEwLCAweEQ3LCAweDA0LCAweDRDLCAweDBCLCAweDMwLCAweDIxLCAweEMwLAorMHgwQiwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHhGNCwgMHgwMSwgMHhGNSwKKzB4MDAsIDB4NDQsIDB4MkUsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjUsIDB4MDAsIDB4RDEsIDB4MDAsIDB4QzQsIDB4MDMsIDB4MTAsCisweDBGLCAweEMwLCAweDNFLCAweDAwLCAweEYxLCAweDAwLCAweEVDLCAweDAzLCAweDEwLCAweDExLCAweEMwLCAweDM1LCAweDAwLAorMHhEMSwgMHgwMSwgMHhEQywgMHgwNywgMHg3MCwgMHgyRiwgMHhDMywgMHgyMywgMHgwNiwgMHhERCwgMHgyMCwgMHg2NCwgMHgwMiwKKzB4QjAsIDB4MzgsIDB4NDEsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MDMsIDB4NkMsIDB4MjksIDB4NTAsIDB4QTksIDB4NDAsIDB4NEUsCisweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDIyLCAweDAxLCAweEQxLCAweDAwLAorMHgwNCwgMHgyOSwgMHg5MCwgMHgwNCwgMHg0MCwgMHgyNCwgMHgwMCwgMHhENSwgMHgwMCwgMHgzNCwgMHgwMywgMHg1MCwgMHgwRCwKKzB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MDMsIDB4NUQsIDB4MDAsIDB4NDAsIDB4MTIsIDB4MjAsIDB4MDEsCisweDA0LCAweDEwLCAweDBCLCAweEQwLCAweDFDLCAweDQyLCAweDIxLCAweDgwLCAweDBELCAweDQwLCAweDM0LCAweDA4LCAweDkwLAorMHgzMCwgMHg0MCwgMHgzMSwgMHgxMCwgMHhENSwgMHgwMywgMHgwNCwgMHgwNSwgMHgxOCwgMHgxOCwgMHg0NCwgMHgxRiwgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NjgsIDB4MDAsIDB4RTUsIDB4MDEsIDB4ODQsCisweDA3LCAweDk4LCAweDFCLCAweDQwLCAweDY5LCAweDgwLCAweEUxLCAweDgxLCAweDI0LCAweDA3LCAweDEwLCAweDlFLCAweDQwLAorMHg3OCwgMHg4MCwgMHhFRCwgMHgwMSwgMHhBNCwgMHgwNywgMHg1MCwgMHg1MiwgMHg2MSwgMHg3OSwgMHgwMCwgMHgyMSwgMHgxOSwKKzB4OTAsIDB4MDcsIDB4NTEsIDB4MUMsIDB4NDAsIDB4NkEsIDB4MDAsIDB4NkQsIDB4NDEsIDB4QTQsIDB4MDYsIDB4RDIsIDB4MTIsCisweDQwLCAweDdCLCAweDAwLCAweEYxLCAweDA5LCAweEU0LCAweDQ1LCAweDU0LCAweDFBLCAweDQwLCAweDEyLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgyMCwgMHgwMiwgMHhDMywgMHg4OCwgMHg0NCwgMHgwMiwKKzB4QjAsIDB4ODgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4RDcsIDB4MDgsIDB4MzQsIDB4MDMsIDB4NzAsIDB4MEMsIDB4NDAsIDB4MzcsCisweDAyLCAweERELCAweDAwLCAweDA0LCAweDAzLCAweDcxLCAweDEwLCAweEMwLCAweDE2LCAweDAyLCAweDAxLCAweDgwLCAweDFDLAorMHhDMywgMHhGMCwgMHgwQywgMHg0MCwgMHgyMSwgMHgwMCwgMHhDRiwgMHgwOSwgMHgzQywgMHg5MSwgMHhCMCwgMHg4OCwgMHhDMCwKKzB4MzcsIDB4MDAsIDB4QzcsIDB4MTAsIDB4MEMsIDB4MTEsIDB4MzgsIDB4ODQsIDB4QzEsIDB4NEIsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEIwLCAweDJELCAweDAwLCAweEZGLCAweDAyLCAweEZDLCAweDAyLCAweDYwLAorMHgwQiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywgMHg0MywgMHg3MCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwNCwKKzB4RjMsIDB4MDAsIDB4RkMsIDB4MEIsIDB4QjAsIDB4MDIsIDB4QzAsIDB4M0YsIDB4NDgsIDB4RkYsIDB4MDAsIDB4N0MsIDB4MkIsCisweEYwLCAweDhGLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDIwLCAweDNDLCAweDAzLCAweDkwLCAweDA5LCAweEMwLCAweDNGLAorMHgwMCwgMHhFRSwgMHgyMCwgMHg3QywgMHgwMSwgMHhENCwgMHgwMSwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MEUsIDB4N0MsIDB4MDAsIDB4QzAsIDB4MEQsCisweEMwLCAweDc1LCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDUzLCAweDcwLCAweDhELCAweEM2LCAweEI0LCAweDA0LCAweERGLAorMHgwMCwgMHg3QywgMHgxMywgMHhCMCwgMHgwMCwgMHhDMCwgMHgzNCwgMHgxMCwgMHgwNywgMHg4MCwgMHg1QywgMHgxMywgMHgzMCwKKzB4NUMsIDB4QzEsIDB4MDQsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MzcsIDB4MDAsCisweDVGLCAweDAwLCAweDRDLCAweDAxLCAweDMwLCAweDA5LCAweEMwLCAweDQ3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHgyOSwgMHgwMCwgMHhFRCwgMHgwNCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MCwKKzB4M0IsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MTMsIDB4RDAsIDB4NEYsIDB4NDAsIDB4M0EsIDB4MTEsIDB4RUQsIDB4MDAsCisweEI0LCAweDAzLCAweEQwLCAweDAyLCAweDQwLCAweDM5LCAweDAwLCAweEFELCAweDAwLCAweDA0LCAweDAzLCAweDEwLCAweDJFLAorMHg0MCwgMHgwOCwgMHgwOCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwKKzB4MjAsIDB4QzQsIDB4MDEsIDB4MTAsIDB4MEEsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAzLCAweDAwLCAweDY5LCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA2LCAweDkwLCAweDNFLCAweDRDLCAweDZGLAorMHgxMCwgMHhFMSwgMHgwMSwgMHhCNCwgMHgxNywgMHhEMCwgMHgwRSwgMHg0MCwgMHg3QSwgMHgwMCwgMHhFRCwgMHgwRCwgMHg5NCwKKzB4MjcsIDB4RDAsIDB4MTMsIDB4NDEsIDB4N0EsIDB4ODAsIDB4NkQsIDB4MDEsIDB4OTQsIDB4MzcsIDB4NTEsIDB4NUUsIDB4NDAsCisweDZBLCAweDA0LCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweEQxLCAweDFBLCAweDQ4LCAweDdCLCAweDgwLCAweEFELCAweDAxLAorMHg4NCwgMHgwNSwgMHgxNCwgMHgxRSwgMHg0MiwgMHgwRiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MjgsIDB4MjMsIDB4ODQsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MkUsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4NDksCisweEMxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDM2LCAweDAzLAorMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgxMSwgMHhDRCwgMHgwMywgMHgwNCwgMHgwMywgMHg1MCwgMHgwQywgMHg0MCwgMHg3MCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4NkYsIDB4RDIsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4OEQsIDB4NDQsIDB4MDUsCisweDIxLCAweDE0LCAweDFDLCAweDQwLCAweDRCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LAorMHhBOCwgMHhEOSwgMHgwMCwgMHg1RiwgMHgwMCwgMHhGQywgMHgwMSwgMHhCMCwgMHgwNywgMHhDNCwgMHhERiwgMHgwMSwgMHg1MywKKzB4MDAsIDB4N0MsIDB4MDEsIDB4NzgsIDB4MDUsIDB4QzAsIDB4MTQsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4QjAsCisweDE3LCAweEMwLCAweDlFLCAweDAxLCAweDdGLCAweDBFLCAweDVDLCAweDAxLCAweDc0LCAweDA1LCAweEM4LCAweDFFLCAweDAwLAorMHg3RiwgMHgwMiwgMHhGQywgMHgwRCwgMHhFMCwgMHgwNywgMHhDMCwgMHgxNywgMHgyMCwgMHg3RiwgMHgwNywgMHhDQywgMHgwNSwKKzB4MTAsIDB4MDcsIDB4QzEsIDB4NUYsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsCisweDA3LCAweDAyLCAweDFGLCAweDAwLCAweDNDLCAweDQwLCAweEYwLCAweDQxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDYwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzEsIDB4MDUsIDB4MTAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4ODAsIDB4OTEsIDB4MDEsIDB4RDAsIDB4ODcsIDB4MDEsIDB4MUYsCisweDMwLCAweDcwLCAweDA4LCAweEYwLCAweDQxLCAweEMwLCAweDA3LCAweDE4LCAweDFGLCAweDQwLCAweDdELCAweDAwLCAweEYwLAorMHgxMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywKKzB4MDEsIDB4OUIsIDB4MDAsIDB4NEQsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NzQsCisweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDIzLCAweDQwLCAweDkzLCAweDAwLCAweDdDLCAweDA2LCAweEYwLCAweDA5LCAweEMwLAorMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0NCwgMHgwMiwgMHg3MCwgMHgwOSwgMHhDNCwgMHg2NywgMHgwMiwgMHg5RCwgMHgwMCwKKzB4NEMsIDB4MTYsIDB4RjAsIDB4MTksIDB4QzAsIDB4MjcsIDB4ODAsIDB4OUYsIDB4MDMsIDB4NEMsIDB4MjIsIDB4MzQsIDB4MDgsCisweEMwLCAweDQwLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDY2LCAweDAwLAorMHg5NSwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwKKzB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4RjAsIDB4QjgsIDB4NDAsIDB4MjQsCisweDAwLCAweDhELCAweDA4LCAweDAxLCAweDA2LCAweDMwLCAweDI5LCAweEMwLCAweDI3LCAweDIxLCAweDhELCAweDAwLCAweDQ0LAorMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg4RCwgMHgwMywgMHg2QywgMHgxRSwgMHg1NCwgMHgyOSwgMHg0MCwKKzB4MDUsIDB4ODAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDAsIDB4ODEsCisweDAwLCAweDQ0LCAweDIyLCAweDEwLCAweDA4LCAweDQwLCAweDM1LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLAorMHgwOSwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5OSwgMHgwMCwgMHg3NCwgMHgyMiwgMHhEMCwgMHgwOSwgMHg2MCwgMHgyNCwgMHg4MCwKKzB4REQsIDB4ODAsIDB4NTQsIDB4MTIsIDB4MDAsIDB4QTksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsCisweEQwLCAweDRELCAweDQzLCAweDI3LCAweDAwLCAweDk4LCAweDEwLCAweDA0LCAweDAyLCAweDEwLCAweEE5LCAweDQwLCAweDYwLAorMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwgMHgwMCwgMHg4NSwgMHgwNCwKKzB4MDQsIDB4MUEsIDB4MTQsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MjAsIDB4OEQsIDB4MDgsIDB4MzQsIDB4MTIsIDB4RDAsIDB4ODgsCisweDY0LCAweDIzLCAweDAxLCAweDg5LCAweDA4LCAweDM0LCAweDEyLCAweEQwLCAweDA5LCAweDQwLCAweDIwLCAweDAyLCAweERELAorMHgwMCwgMHgxNCwgMHgwMiwgMHgxNCwgMHgwOCwgMHg0NCwgMHgyMywgMHgwMCwgMHg5RCwgMHgwOCwgMHgwNCwgMHgwMiwgMHhEOCwKKzB4MDgsIDB4NDIsIDB4MjMsIDB4MDIsIDB4OUQsIDB4MDgsIDB4MjQsIDB4MjIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4NDEsIDB4ODgsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDEzLCAweDBBLCAweDRDLAorMHgwOSwgMHgzMCwgMHhBMSwgMHhDMCwgMHg4NSwgMHgwMiwgMHgxRCwgMHgwMiwgMHg3QywgMHgyOCwgMHhGMCwgMHg2MSwgMHhDMSwKKzB4ODcsIDB4MDIsIDB4MTksIDB4MTYsIDB4NzQsIDB4MDAsIDB4RjAsIDB4MDUsIDB4QzAsIDB4ODQsIDB4MDAsIDB4MUYsIDB4MDAsCisweDVDLCAweDUxLCAweDcwLCAweDQxLCAweDQ1LCAweDA3LCAweDEwLCAweDFGLCAweDAyLCAweDRELCAweDAxLCAweEYwLCAweDAxLAorMHhDNCwgMHg4NywgMHgwMCwgMHgwRCwgMHgwMiwgMHg0QywgMHg4OCwgMHgzMCwgMHgwMSwgMHhDNCwgMHg3NCwgMHhDMCwgMHgwQSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4MkYsIDB4MDAsIDB4OUYsIDB4MDgsIDB4RkMsIDB4MEEsCisweEYwLCAweDBCLCAweEMwLCAweDJCLCAweDAwLCAweEJGLCAweDA0LCAweDdDLCAweDIyLCAweEYwLCAweDQ5LCAweEMwLCAweDI3LAorMHgwMiwgMHg5MywgMHgwNCwgMHg3QywgMHgyMiwgMHg3MCwgMHgwQiwgMHhEMCwgMHgyRiwgMHgwMSwgMHhCRiwgMHgwMCwgMHg2QywKKzB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MkQsIDB4MTAsIDB4QkYsIDB4MDQsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsCisweDI3LCAweDAxLCAweEJGLCAweDg0LCAweEZDLCAweDEyLCAweEYwLCAweDhCLCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyRiwgMHgwMCwgMHg5MywgMHg4QywgMHhFOCwgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDIsIDB4OTMsIDB4NjAsIDB4N0MsIDB4NTIsIDB4MzAsIDB4QzksIDB4QzAsIDB4MjUsIDB4MDAsCisweDlCLCAweDAwLCAweERDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDI3LCAweDAwLCAweEJGLCAweDAwLCAweENDLCAweDAyLAorMHhCMCwgMHgwQiwgMHhDMCwgMHgyQiwgMHgyOCwgMHg5RiwgMHg0MCwgMHhCQywgMHgwMiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgyNCwKKzB4MjAsIDB4QkYsIDB4NDAsIDB4Q0MsIDB4MDIsIDB4MzAsIDB4MEIsIDB4QzAsIDB4NjAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LCAweDA3LCAweDAwLCAweDExLCAweDBDLCAweDQ0LCAweDQ5LCAweEQwLCAweDAxLAorMHg0MSwgMHgwNywgMHgwMCwgMHgxMSwgMHgxNCwgMHg3NCwgMHgxMCwgMHgxMCwgMHhDMSwgMHg0OCwgMHg4NCwgMHgwNCwgMHgxMSwKKzB4MTAsIDB4NDQsIDB4MjAsIDB4RDIsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDEsIDB4MUQsIDB4MDAsIDB4NTAsIDB4MDgsIDB4MTQsCisweDAxLCAweDQwLCAweDE3LCAweDAwLCAweDFELCAweDE0LCAweDY0LCAweDAwLCAweEQwLCAweDAxLCAweDQwLCAweDA1LCAweDBDLAorMHg1RCwgMHg5MCwgMHg1NCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1MCwgMHg3MCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MjcsIDB4NDAsIDB4ODEsIDB4MDQsIDB4MzQsIDB4MzIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDI3LCAweDQwLCAweDg1LCAweDA0LCAweDM0LCAweDUyLCAweDEwLCAweDQ4LCAweDQwLCAweDIxLCAweDAzLCAweDg5LCAweDA4LAorMHgxNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwNSwgMHg5RCwgMHgwMCwgMHgwNCwgMHgyMiwgMHgxMiwgMHg4QywKKzB4NDIsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4MjMsIDB4MDEsIDB4OEQsCisweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDQwLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwgMHgwNCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHg2OSwgMHg2MCwgMHgyNywKKzB4MDAsIDB4OTUsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NjAsIDB4MjEsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsCisweDAyLCAweEQwLCAweDI5LCAweDQwLCAweDI3LCAweDgwLCAweDlDLCAweDAyLCAweDU0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg2NCwgMHgwQSwgMHhEMCwgMHgyOSwgMHg0MCwgMHgyNywgMHg4MCwgMHg4RCwgMHgwOCwKKzB4NTQsIDB4MTIsIDB4MTIsIDB4MTksIDB4NDAsIDB4NjAsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDA1LCAweEE4LCAweDI3LCAweDAwLCAweDkzLCAweDAwLCAweDdDLCAweDBFLCAweEYwLCAweDM5LCAweEUwLCAweDI3LCAweDIxLAorMHg5NywgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMiwgMHgyNSwgMHgwMCwgMHg5QiwgMHgwMCwgMHg1QywgMHgwMiwKKzB4RjAsIDB4MjksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDMsIDB4NEMsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsIDB4NjcsCisweDAwLCAweDlGLCAweDI0LCAweDdDLCAweDAyLCAweEY4LCAweDg4LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDRDLAorMHgwMiwgMHgzMCwgMHg1OSwgMHhDMCwgMHgxNCwgMHhBMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKzB4MDAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4NTYsIDB4RjAsIDB4MTksIDB4QzAsIDB4NjcsIDB4MDEsIDB4OUIsCisweDA0LCAweDdDLCAweDAyLCAweEY0LCAweDA4LCAweENDLCAweDI2LCAweDAwLCAweDhGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLAorMHgzOSwgMHhDMiwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMiwgMHgzQywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMSwKKzB4OUYsIDB4MDUsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MTksIDB4QzIsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA4LCAweEMwLCAweDUzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LAorMHgwNSwgMHgwMCwgMHgwRiwgMHgwMCwgMHg1QywgMHgwOCwgMHhGMCwgMHgyMSwgMHhDMCwgMHg4NSwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MjEsCisweEMxLCAweDA3LCAweDAwLCAweDFCLCAweDA2LCAweDRDLCAweDQwLCAweEYwLCAweDAxLCAweEMxLCAweDA0LCAweDAxLCAweDEzLAorMHgwMiwgMHg3QywgMHgwMCwgMHhCMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxMywgMHgwMCwgMHg0QywgMHgyMCwgMHgzMSwKKzB4MjEsIDB4ODAsIDB4NTAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MTgsCisweDAwLCAweDVELCAweDAwLCAweEMwLCAweDA1LCAweDcwLCAweDA1LCAweDQwLCAweDEwLCAweDAwLCAweDVDLCAweDAwLCAweDc0LAorMHgwMSwgMHhEMCwgMHgwNSwgMHhDMCwgMHgxNSwgMHgwMCwgMHg1RCwgMHgwMCwgMHg3NCwgMHg0NSwgMHhEMCwgMHgwNywgMHhDMCwKKzB4MTUsIDB4MDAsIDB4NjEsIDB4MDAsIDB4REMsIDB4NEQsIDB4NzAsIDB4MDcsIDB4NDAsIDB4REQsIDB4NDAsIDB4NTEsIDB4MDAsCisweEY0LCAweDNELCAweDEwLCAweDc3LCAweDQwLCAweDE3LCAweDQwLCAweDcxLCAweDAwLCAweDg0LCAweDBELCAweEYwLCAweEE3LAorMHhDMCwgMHg1MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgyMiwgMHgyMCwKKzB4Q0QsIDB4ODAsIDB4MTAsIDB4MEYsIDB4NTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4ODAsIDB4Q0MsIDB4MDAsIDB4MzQsIDB4MDMsCisweEQwLCAweDBDLCAweDAwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweEJDLCAweDQwLCAweDMzLAorMHgwMCwgMHhDOSwgMHgwMSwgMHgyNCwgMHgwNywgMHg1MCwgMHgwQywgMHg0MCwgMHhGMCwgMHgwMCwgMHhDMSwgMHgyMCwgMHgzNCwKKzB4MDcsIDB4MTAsIDB4NEMsIDB4NjAsIDB4MzMsIDB4OTAsIDB4QzksIDB4MDAsIDB4MDQsIDB4NEYsIDB4MTAsIDB4MkMsIDB4NDIsCisweDUwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDM4LCAweDAwLCAweENELAorMHgwNCwgMHg4NCwgMHgwQiwgMHg1MCwgMHgxRSwgMHg0MCwgMHgzQSwgMHgwMywgMHhFRCwgMHgwOCwgMHhCNCwgMHgwMywgMHhEMCwKKzB4OEUsIDB4NDAsIDB4MzksIDB4QTEsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4N0QsIDB4MDAsCisweEZELCAweDQyLCAweDkwLCAweDAzLCAweDUwLCAweDE4LCAweDQwLCAweEZELCAweDEwLCAweEUxLCAweDA0LCAweEY0LCAweDA2LAorMHgxMCwgMHgwRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFOSwgMHgwMCwgMHhDNSwgMHgwMSwgMHg5MCwgMHgwQywgMHg2MCwgMHgxMiwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NjgsIDB4MDAsIDB4RUYsIDB4MDcsCisweDk0LCAweDA3LCAweDcwLCAweDFGLCAweEM4LCAweDdCLCAweDAwLCAweEVGLCAweDA1LCAweEI0LCAweDBGLCAweEYwLCAweDFFLAorMHg0MCwgMHg3QiwgMHgwNCwgMHhFRCwgMHgwMSwgMHhCQywgMHgwNywgMHhGMiwgMHgxQSwgMHhDOCwgMHg3QiwgMHgyNCwgMHhGQiwKKzB4MDEsIDB4QUMsIDB4ODQsIDB4NzAsIDB4MUEsIDB4QzAsIDB4NzgsIDB4MDAsIDB4RTEsIDB4MDksIDB4QjQsIDB4MDYsIDB4MzQsCisweDFFLCAweEM0LCAweDdGLCAweDA4LCAweDc5LCAweDAxLCAweENDLCAweDA2LCAweDMyLCAweDE2LCAweEMwLCAweDUwLCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgyNSwgMHgxMCwgMHhERiwgMHgwMiwgMHg3QywKKzB4MDMsIDB4NzAsIDB4RUQsIDB4QzgsIDB4QjUsIDB4MjEsIDB4REYsIDB4MDAsIDB4N0MsIDB4NDMsIDB4RjAsIDB4MEQsIDB4QzgsCisweDM3LCAweDAyLCAweERGLCAweDg4LCAweDdDLCAweDAzLCAweEQwLCAweDA5LCAweEMwLCAweDMzLCAweDAxLCAweDkzLCAweDgwLAorMHg3QywgMHgwMSwgMHg2MCwgMHgwMSwgMHhDMCwgMHgxNywgMHgwMCwgMHhERiwgMHgyQSwgMHg3QywgMHgwMCwgMHg2MCwgMHgwOSwKKzB4QzAsIDB4QjcsIDB4MDYsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzIsIDB4NDMsIDB4NjAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEwLCAweDZGLCAweDAwLCAweEZGLCAweDAzLCAweEM4LCAweDIxLAorMHhFMCwgMHgzRSwgMHhDMiwgMHhGQywgMHgxMiwgMHhGRiwgMHgwOSwgMHhFQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwgMHg3RiwKKzB4MDIsIDB4RkIsIDB4MDEsIDB4REMsIDB4MjcsIDB4RjAsIDB4OUYsIDB4QzAsIDB4N0QsIDB4MDQsIDB4QjMsIDB4NDEsIDB4QkMsCisweDI3LCAweEIwLCAweDEzLCAweEMwLCAweDdGLCAweDAwLCAweEZGLCAweDIxLCAweEZDLCAweDA2LCAweEYwLCAweDFGLCAweEMwLAorMHg3RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhCQywgMHg4NywgMHgzMCwgMHgxRiwgMHhDMCwgMHgwQiwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4MzksIDB4MTAsIDB4RkQsIDB4MDQsIDB4ODQsIDB4MDEsIDB4RjAsCisweDBFLCAweEMxLCAweDNBLCAweDAwLCAweEVELCAweDAwLCAweEVDLCAweDAzLCAweDE1LCAweDhFLCAweDQ4LCAweDNCLCAweDQwLAorMHhGMSwgMHgwMCwgMHg4NCwgMHgyMywgMHhEMCwgMHhBOCwgMHg0MCwgMHgzQiwgMHgyMCwgMHgyMSwgMHgwMCwgMHhCNCwgMHgyOSwKKzB4MTAsIDB4NjIsIDB4NDAsIDB4M0IsIDB4MDAsIDB4REYsIDB4MDAsIDB4ODQsIDB4MDIsIDB4RjAsIDB4MEUsIDB4NDAsIDB4M0IsCisweDAyLCAweEVELCAweDA4LCAweEJDLCAweDAxLCAweEIwLCAweDBFLCAweDQxLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHg4NiwgMHg2MywgMHhEOCwgMHgwRiwKKzB4NDAsIDB4MzgsIDB4ODAsIDB4RkQsIDB4NDAsIDB4ODQsIDB4MjMsIDB4OTAsIDB4MEUsIDB4NDAsIDB4MzMsIDB4MTAsIDB4RTEsCisweDAwLCAweEI0LCAweDIzLCAweEQyLCAweDIyLCAweDYwLCAweDM5LCAweDAwLCAweEE1LCAweDAwLCAweEI0LCAweDAwLCAweDEyLAorMHgwMiwgMHg0MCwgMHgyQSwgMHgwMCwgMHhFRCwgMHgxMCwgMHg5NCwgMHgwMiwgMHhEMCwgMHgwNiwgMHg0MCwgMHgzQiwgMHgwMCwKKzB4NkQsIDB4MDAsIDB4RjQsIDB4MDIsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDIzLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDA2LCAweDU4LCAweDNDLCAweDQwLAorMHgzMiwgMHgwMCwgMHhDRCwgMHgwOCwgMHgyNCwgMHgwMywgMHg5MCwgMHgwQywgMHg0MiwgMHgzMywgMHgyMCwgMHhDMSwgMHgwMCwKKzB4MTYsIDB4MDMsIDB4RDAsIDB4MDAsIDB4NDAsIDB4QjMsIDB4MDAsIDB4MDUsIDB4MEIsIDB4MzYsIDB4MDEsIDB4MTAsIDB4MDAsCisweDQwLCAweDAzLCAweDEwLCAweENELCAweDQwLCAweDA0LCAweDEwLCAweDUxLCAweDAwLCAweDQwLCAweDMzLCAweDAwLCAweDlELAorMHgxMiwgMHgxNCwgMHhBRiwgMHg5MCwgMHg1MCwgMHgwMCwgMHgxQiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4QTgsIDB4MjUsIDB4MDEsIDB4RkYsIDB4MDAsIDB4NEQsIDB4MjIsIDB4RDAsIDB4M0YsIDB4QzAsIDB4M0MsCisweDAwLCAweEZGLCAweDAwLCAweENDLCAweDAzLCAweEIwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEYzLCAweDAwLCAweDFDLAorMHgwMiwgMHhGMCwgMHgyNSwgMHhDMCwgMHhCRCwgMHgwMiwgMHg1NywgMHgwQiwgMHg3QywgMHgwMywgMHgxMSwgMHgwOSwgMHhDMCwKKzB4RjcsIDB4MDIsIDB4RUYsIDB4MDAsIDB4NUMsIDB4MEEsIDB4RDAsIDB4OUQsIDB4NDAsIDB4M0YsIDB4MDAsIDB4OUYsIDB4MDIsCisweDcwLCAweDAzLCAweDEwLCAweDIxLCAweEMwLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwQSwgMHhGMCwgMHg0RCwgMHhDNCwgMHgzNywgMHgxMCwKKzB4REYsIDB4ODAsIDB4N0MsIDB4ODMsIDB4NzAsIDB4MEQsIDB4QzgsIDB4MzcsIDB4MDAsIDB4RDcsIDB4ODAsIDB4NjQsIDB4MDIsCisweEYwLCAweDNELCAweEMwLCAweDM3LCAweDQ4LCAweDVBLCAweDAwLCAweDdDLCAweDAzLCAweDcwLCAweDI5LCAweEMwLCAweDY3LAorMHgwMCwgMHhENywgMHgwMCwgMHg1QywgMHgwQSwgMHhGMCwgMHgxNSwgMHhDNCwgMHgzNywgMHgyMCwgMHg1RiwgMHgwMiwgMHg3QywKKzB4MDksIDB4RjAsIDB4MjksIDB4QzAsIDB4MDcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsCisweDA4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweDMwLCAweDBGLCAweEMwLCAweDNELCAweDAwLCAweEZGLAorMHgwMCwgMHhGRSwgMHgwMywgMHhGMiwgMHgwRiwgMHhDMiwgMHgzRiwgMHg4MCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhCMSwKKzB4MTcsIDB4QzIsIDB4M0YsIDB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDYsIDB4RjAsIDB4MEIsIDB4QzAsIDB4N0YsIDB4MDAsCisweEZGLCAweDAwLCAweENDLCAweDAyLCAweEQwLCAweDhGLCAweEMwLCAweDNGLCAweDAwLCAweDMxLCAweDAwLCAweENDLCAweDYyLAorMHgzMCwgMHgwMywgMHhDMCwgMHgwMywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwKKzB4NTYsIDB4MDAsIDB4REQsIDB4MDAsIDB4MzQsIDB4MEUsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4ODAsIDB4REQsIDB4MDAsCisweDc0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDM3LCAweEEwLCAweERGLCAweDIwLCAweDc0LCAweDAzLCAweDMxLCAweDlELAorMHhDMCwgMHgzMSwgMHgwMCwgMHg5MSwgMHgwQSwgMHg3NCwgMHgwRiwgMHg3OCwgMHgxMSwgMHg0MCwgMHg4NywgMHgwMSwgMHhERCwKKzB4MDAsIDB4NkMsIDB4NDQsIDB4NzAsIDB4MDEsIDB4NDEsIDB4MzcsIDB4MDAsIDB4MTMsIDB4MEYsIDB4MTQsIDB4NDQsIDB4MTAsCisweDM5LCAweDQwLCAweDA3LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweEE2LAorMHgwMiwgMHhERCwgMHgwMCwgMHg3NCwgMHgwQywgMHg5MCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhERCwgMHg4MCwgMHg3NCwKKzB4MDMsIDB4RDIsIDB4MEQsIDB4NDgsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4OTAsIDB4MDUsIDB4NDAsCisweDM3LCAweDAwLCAweDU1LCAweDgyLCAweDc0LCAweDEyLCAweEQwLCAweDE5LCAweDQwLCAweDE3LCAweDAyLCAweEQ5LCAweDAwLAorMHg0NCwgMHgwNCwgMHhEMCwgMHgwOSwgMHg0MiwgMHgzMywgMHgwMCwgMHg5NSwgMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgxOSwKKzB4NDEsIDB4MDcsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MzAsIDB4MDAsCisweENELCAweDAwLCAweDc0LCAweDAwLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM2LCAweDAzLAorMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgyMCwgMHhDNSwgMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHg4OCwgMHg0OCwgMHgzNSwKKzB4MDAsIDB4NDUsIDB4MDAsIDB4MzQsIDB4MDAsIDB4NTgsIDB4MDgsIDB4NjAsIDB4MDMsIDB4MDAsIDB4REQsIDB4MDAsIDB4MjUsCisweDAwLCAweDUwLCAweDAwLCAweDQ4LCAweDMzLCAweDQwLCAweDQ1LCAweDAwLCAweDQ0LCAweDAwLCAweDExLCAweDA4LCAweDQwLAorMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyNiwgMHgwMCwgMHhGRiwKKzB4MDAsIDB4N0MsIDB4MDAsIDB4MTAsIDB4MEYsIDB4QzAsIDB4M0QsIDB4MDAsIDB4REQsIDB4MDAsIDB4RjQsIDB4MDMsIDB4RjAsCisweDBELCAweEMwLCAweDNGLCAweDAwLCAweERELCAweDAwLCAweDdFLCAweDAzLCAweEIwLCAweDA1LCAweDQ4LCAweDNCLCAweDAwLAorMHhENSwgMHgwMCwgMHg3QywgMHgwMiwgMHhEMCwgMHgwOSwgMHhDMCwgMHgwNywgMHgwMCwgMHhGRiwgMHgwOCwgMHg0QywgMHgwMCwKKzB4RjAsIDB4MDEsIDB4QzAsIDB4M0YsIDB4MDAsIDB4MTcsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MzAsIDB4MDksIDB4QzAsIDB4MDMsCisweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDFGLCAweDAwLCAweEZGLCAweDAwLAorMHhGQywgMHgwMiwgMHg3MCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhFRiwgMHg4MCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwKKzB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4NzEsIDB4NDMsIDB4QzAsIDB4M0QsIDB4MDAsIDB4M0IsCisweDAwLCAweEZDLCAweDAwLCAweDcwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweEZGLCAweDAwLCAweERDLCAweDAwLCAweDc4LAorMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHgzMywgMHgwMCwgMHhGRiwgMHg4MCwgMHhGMCwgMHgwQiwgMHhDMiwgMHgxNywgMHg2MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4MEYsIDB4MDQsIDB4MzMsIDB4MDEsIDB4QzQsCisweDAyLCAweEI4LCAweDBCLCAweEMwLCAweEJGLCAweDAxLCAweEZCLCAweDJDLCAweEVDLCAweDhFLCAweDcwLCAweDJGLCAweEMwLAorMHg0RiwgMHgwMCwgMHhGNywgMHgxOCwgMHg4QywgMHgyNCwgMHhGMCwgMHg0RiwgMHhDMSwgMHg0RiwgMHgwMiwgMHhGRiwgMHg0NCwKKzB4REMsIDB4MjcsIDB4MzAsIDB4OEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RTcsIDB4MDAsIDB4RUMsIDB4MDQsIDB4RjAsIDB4MEYsCisweEMwLCAweDZDLCAweDAwLCAweEZCLCAweDEwLCAweDlDLCAweDUyLCAweEYwLCAweDEzLCAweEMwLCAweDBDLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwgMHg4NywgMHgwMCwgMHgxMSwgMHgwMCwgMHg2QywgMHgwMiwKKzB4RjAsIDB4MDksIDB4NDAsIDB4QkYsIDB4MDAsIDB4RjEsIDB4MDIsIDB4NEMsIDB4MTMsIDB4MTAsIDB4OEYsIDB4NDAsIDB4NjcsCisweDA4LCAweEYxLCAweDAyLCAweDQ0LCAweDEwLCAweEQyLCAweDNGLCAweEMyLCAweDIzLCAweDA4LCAweEYxLCAweDAzLCAweDQ0LAorMHgxMywgMHgwNCwgMHg2RiwgMHg0MCwgMHhGQywgMHgyMCwgMHhGMSwgMHgwQiwgMHg0NCwgMHgwNCwgMHhEMSwgMHgzRiwgMHhDMCwKKzB4NDQsIDB4MDAsIDB4RDUsIDB4NDMsIDB4NzQsIDB4MDQsIDB4RDAsIDB4MTUsIDB4QzAsIDB4MDYsIDB4MjAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDAzLCAweDAwLCAweDAxLCAweDAwLCAweDE1LCAweDAwLCAweDkyLAorMHgwOCwgMHg0MiwgMHgzMywgMHgwMywgMHhDOSwgMHgwQywgMHgzNCwgMHgwMywgMHg1MCwgMHg0QywgMHg0NCwgMHgwNywgMHg4MCwKKzB4QzUsIDB4MjAsIDB4MDQsIDB4MTIsIDB4RDAsIDB4MEMsIDB4NDIsIDB4MTMsIDB4MTAsIDB4QzksIDB4MDIsIDB4MTQsIDB4MDMsCisweDEwLCAweDJDLCAweDQwLCAweEIxLCAweDAwLCAweEM1LCAweDAwLCAweDA3LCAweDAwLCAweDUwLCAweDJDLCAweDQwLCAweDI2LAorMHgwMCwgMHhDMSwgMHgyMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwNSwgMHg0MCwgMHg0NCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4NDEsIDB4MDQsIDB4MDEsIDB4MDEsIDB4NTQsIDB4MEUsIDB4NTAsIDB4MTksCisweDQwLCAweDM3LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweDEwLCAweDBELCAweDQwLCAweDQ3LCAweDAwLCAweEQxLAorMHgwMCwgMHg0NCwgMHgwQywgMHhEMCwgMHgwRCwgMHg0MCwgMHgyNSwgMHgwNCwgMHhENSwgMHgwMCwgMHg0NCwgMHgwMywgMHgxOCwKKzB4MEQsIDB4MDgsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NjQsIDB4MDQsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NjQsIDB4MDAsCisweEQ1LCAweDAwLCAweDc0LCAweDA2LCAweEQwLCAweDM1LCAweDQwLCAweDBFLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMiwgMHhBOCwgMHhDNywgMHgwMCwgMHgxMywgMHgwMywgMHg1NCwgMHgwQywgMHg5MCwgMHg1MSwgMHhDMCwKKzB4MzcsIDB4MDAsIDB4REIsIDB4MDAsIDB4N0MsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzQsIDB4NDMsIDB4MDAsIDB4RDcsIDB4MDAsCisweDRDLCAweDBFLCAweEYwLCAweDBELCAweDQ4LCAweDk3LCAweDAyLCAweERGLCAweDAwLCAweDVDLCAweDAzLCAweDMyLCAweDBELAorMHhDMCwgMHgzNywgMHgxMCwgMHhENywgMHgwMCwgMHg2RSwgMHg0NCwgMHhGMCwgMHgwRCwgMHhEMCwgMHg2MiwgMHgwMCwgMHhEQiwKKzB4MDAsIDB4NUMsIDB4MTYsIDB4RjIsIDB4MUQsIDB4RTAsIDB4MDgsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA3LCAweDgwLCAweDA1LCAweDAwLCAweDNGLCAweDAwLCAweDZELCAweDgwLCAweEYwLCAweDAzLCAweEMwLCAweDNGLAorMHgwMCwgMHhFRiwgMHgwMCwgMHhFQywgMHgwMywgMHhGOCwgMHgwRCwgMHhDMCwgMHgyRiwgMHg4MCwgMHhFQiwgMHg0MCwgMHhGQywKKzB4MDAsIDB4RjIsIDB4MEYsIDB4QzAsIDB4NEYsIDB4MDAsIDB4RUIsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEUsIDB4QzAsCisweDNCLCAweDA0LCAweEZELCAweDgwLCAweERDLCAweDQwLCAweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDgsIDB4ODUsIDB4MDAsIDB4MUIsIDB4MDAsIDB4NEQsIDB4MDgsIDB4MzAsIDB4MDksIDB4QzMsIDB4MzMsIDB4MDAsCisweERGLCAweDAwLCAweDVDLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDg1LCAweDAwLCAweERGLCAweDAwLCAweDRDLCAweDBBLAorMHgzMCwgMHgwRCwgMHhDNiwgMHgxNiwgMHgwMCwgMHhEMywgMHgxMCwgMHg1QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNiwKKzB4MDAsIDB4REYsIDB4MjAsIDB4NEMsIDB4MDgsIDB4NzAsIDB4MEMsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0UsCisweDQyLCAweDcwLCAweDJELCAweEMwLCAweDA4LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLAorMHhBMCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMSwgMHg0NCwgMHg0RSwgMHgwMCwgMHg2OSwgMHg0MCwgMHgzRiwgMHgxMCwgMHhGRCwKKzB4MDAsIDB4NEMsIDB4MDMsIDB4MTAsIDB4MEYsIDB4NDAsIDB4QTQsIDB4MDMsIDB4RkQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTIsCisweDBGLCAweDQwLCAweDI0LCAweDAwLCAweEYwLCAweDAzLCAweDU0LCAweDAzLCAweEQwLCAweDBGLCAweDQwLCAweDdDLCAweDA0LAorMHhFRCwgMHgwMCwgMHg0NSwgMHgwNCwgMHhEMCwgMHgxRiwgMHg0MCwgMHg0NywgMHgwMCwgMHhGRCwgMHgwMCwgMHg3NCwgMHgwRSwKKzB4MTAsIDB4MEQsIDB4NDMsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsCisweDQyLCAweDAwLCAweDA5LCAweDI0LCAweDAwLCAweDQ2LCAweDkwLCAweDAwLCAweDQwLCAweDMzLCAweDIwLCAweEM5LCAweDAwLAorMHg1MiwgMHgwMiwgMHhEMCwgMHgwQywgMHg0OCwgMHhBMSwgMHgwMCwgMHhDQywgMHgwMCwgMHgxNCwgMHgwMCwgMHgxMCwgMHgwQywKKzB4NDgsIDB4MjcsIDB4NjAsIDB4QzEsIDB4MDEsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsCisweDA0LCAweDI0LCAweDA0LCAweEQwLCAweDhDLCAweDQ5LCAweDIzLCAweDEyLCAweENELCAweDAwLCAweDE2LCAweDA0LCAweDUxLAorMHgwRCwgMHg0MSwgMHgxQywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHg0OCwKKzB4MjQsIDB4MjEsIDB4MDEsIDB4ODQsIDB4MDcsIDB4MTgsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4Q0QsIDB4MDEsIDB4OTQsCisweDA3LCAweDkwLCAweDlFLCAweDQwLCAweDc4LCAweEEwLCAweEVELCAweDAxLCAweEQ0LCAweDA0LCAweDE0LCAweDFFLCAweDQwLAorMHg2OSwgMHgwMCwgMHhFMSwgMHgxMSwgMHg5NCwgMHgwNywgMHhDMCwgMHgxQywgMHg0MCwgMHg3OSwgMHgwMCwgMHhFRCwgMHg5NSwKKzB4ODQsIDB4MDUsIDB4RDIsIDB4MUUsIDB4NDAsIDB4NEIsIDB4MDAsIDB4RUQsIDB4MDksIDB4QjYsIDB4NDQsIDB4MTAsIDB4MUYsCisweDQwLCAweDEwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDAwLCAweDAwLAorMHgxQiwgMHgxMCwgMHgwRCwgMHgyMSwgMHhCMCwgMHgwNCwgMHhDMCwgMHgzMywgMHgwMCwgMHhDRiwgMHgwMCwgMHg1QywgMHgwMywKKzB4RjAsIDB4MEMsIDB4QzgsIDB4ODEsIDB4MDAsIDB4REUsIDB4MDAsIDB4MUMsIDB4MDMsIDB4MzAsIDB4MEMsIDB4QzAsIDB4MzMsCisweDAzLCAweEMzLCAweDgwLCAweDFDLCAweDgzLCAweEYwLCAweDRDLCAweEMwLCAweDMzLCAweDAwLCAweENGLCAweDAwLCAweDBDLAorMHg0MCwgMHg3MCwgMHgwQywgMHhFNCwgMHgyMywgMHgyMiwgMHhDRiwgMHgwMCwgMHgxRSwgMHgxNCwgMHg3MCwgMHgwQywgMHhDMCwKKzB4NDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4MkQsIDB4MTIsIDB4N0YsCisweDA4LCAweEZDLCAweDAzLCAweDU0LCAweDBGLCAweEMwLCAweDNGLCAweDgwLCAweEZGLCAweDAyLCAweEVDLCAweDAzLCAweDcwLAorMHgwRiwgMHhDMywgMHgxRiwgMHgwMCwgMHhGRiwgMHgwOCwgMHhFQywgMHgwMywgMHhGMCwgMHgyRSwgMHhDNCwgMHgzRSwgMHgwMiwKKzB4RUYsIDB4MTAsIDB4RjgsIDB4MjMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4M0UsIDB4MDAsIDB4RkYsIDB4MDYsIDB4REMsIDB4MDEsCisweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDA4LCAweEZGLCAweDIwLCAweEZFLCAweDIwLCAweEYyLCAweDBDLCAweEMwLCAweDBCLAorMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgwNywgMHgwMCwgMHgwMywgMHgwMCwKKzB4NEMsIDB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4QjcsIDB4MDEsIDB4REIsIDB4MEUsIDB4N0MsIDB4MDMsIDB4RjAsIDB4NUQsCisweEMxLCAweDI0LCAweDAwLCAweERGLCAweDg2LCAweDdDLCAweDg2LCAweDcwLCAweDNELCAweEMwLCAweDE2LCAweDAwLCAweERGLAorMHgxMCwgMHg3QywgMHgwMywgMHhGMCwgMHg0RCwgMHhDMSwgMHgzNiwgMHgwMSwgMHhERiwgMHgwMSwgMHg0QywgMHgwMCwgMHhGMCwKKzB4QUMsIDB4QzAsIDB4MjQsIDB4MDAsIDB4REYsIDB4MDEsIDB4NEMsIDB4MDYsIDB4MzAsIDB4MEQsIDB4QzAsIDB4NTQsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDA5LCAweDA4LCAweDIxLCAweDAwLCAweDg0LAorMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHhCQiwgMHgwRCwgMHhFMSwgMHgwMCwgMHg5QywgMHgwMywgMHhEMCwgMHg0RSwgMHg1MCwKKzB4MzgsIDB4ODAsIDB4RUQsIDB4MTIsIDB4QjQsIDB4MDIsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MTgsIDB4MDAsIDB4RUQsIDB4MDQsCisweEIwLCAweDgzLCAweEQwLCAweDRFLCAweDQyLCAweEI4LCAweDgyLCAweENELCAweDA0LCAweEE1LCAweDAxLCAweEQwLCAweDRFLAorMHg0OSwgMHgyOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHg5NCwgMHgwMCwgMHgxMSwgMHgwRSwgMHhDMCwgMHg0QSwgMHgyMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NDksIDB4MDQsIDB4MjEsIDB4MDEsIDB4ODQsIDB4MEQsCisweEQwLCAweDE2LCAweDQxLCAweDczLCAweDAxLCAweEU5LCAweDA1LCAweDk0LCAweDA3LCAweEQwLCAweDVFLCAweDQwLCAweDY4LAorMHgwMCwgMHhFRCwgMHgwNSwgMHhCNCwgMHgwNywgMHg1MCwgMHg5QywgMHg1MCwgMHg3OSwgMHg4MCwgMHhFRCwgMHgwMSwgMHhCNCwKKzB4ODcsIDB4NTgsIDB4MUUsIDB4NDAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MDgsIDB4QTQsIDB4MDQsIDB4NTAsIDB4MUUsIDB4NDAsCisweDc4LCAweDAwLCAweENELCAweDAxLCAweDA0LCAweDA2LCAweDEwLCAweDFGLCAweDQwLCAweDBDLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHg3NywgMHgyMCwgMHhEMSwgMHgwNCwgMHgwNCwgMHgwNywgMHhEMCwKKzB4M0MsIDB4NDEsIDB4MzMsIDB4MDAsIDB4QzEsIDB4NDAsIDB4MTQsIDB4QTcsIDB4RDgsIDB4MEMsIDB4NDAsIDB4QjAsIDB4MDAsCisweENELCAweDAwLCAweDM0LCAweDBCLCAweDEwLCAweDBDLCAweDQwLCAweDcxLCAweDgzLCAweENELCAweDAwLCAweDM0LCAweDAzLAorMHhEOSwgMHgwRCwgMHg1MCwgMHgzMCwgMHgwMCwgMHhERCwgMHgwMCwgMHgyNCwgMHg0QiwgMHhEMSwgMHgwQywgMHg0OCwgMHgxMSwKKzB4MTQsIDB4Q0QsIDB4MDAsIDB4MTYsIDB4MjcsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NEEsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDVELCAweDQwLCAweDczLCAweDAwLCAweENELCAweDBELCAweEYwLCAweDA3LAorMHhDMCwgMHgxNywgMHgwMCwgMHg1QiwgMHgwMCwgMHg1QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxOCwgMHgwMiwgMHg1RiwKKzB4MDAsIDB4RkMsIDB4MDEsIDB4NzAsIDB4MDUsIDB4QzAsIDB4NUQsIDB4MTgsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsCisweDA1LCAweEMwLCAweDE0LCAweDAwLCAweDVELCAweDgwLCAweEM1LCAweDAxLCAweEY4LCAweDA1LCAweEMwLCAweDVDLCAweDAwLAorMHg1RiwgMHgwMCwgMHhDQywgMHgwMSwgMHgzMCwgMHg2NywgMHhDMCwgMHg1QywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MTAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDVDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgyMCwgMHgxRiwgMHg4MiwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MDEsIDB4MDAsIDB4MUYsIDB4MDIsIDB4NUMsIDB4ODAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MDcsIDB4MDIsIDB4MUYsCisweDAwLCAweDdDLCAweDhDLCAweEYwLCAweDAxLCAweEMxLCAweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHg2NywgMHgwMiwgMHg5MywgMHgwMCwgMHg0QywgMHgwRSwgMHhGMCwgMHgzOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDIsIDB4OTMsIDB4MDAsIDB4N0MsCisweDQyLCAweEYwLCAweDI5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAyLCAweDdDLCAweDAyLCAweEIyLCAweDA5LCAweEMyLAorMHhFNSwgMHgwMCwgMHg5NywgMHgwNSwgMHg0QywgMHgwMiwgMHhGMCwgMHgwOCwgMHhEMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4NUUsIDB4MDIsIDB4RjAsIDB4MjksIDB4QzAsIDB4NDAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDIwLCAweEU2LCAweDYwLCAweDkxLCAweDAzLCAweDQ0LCAweDA2LCAweEQwLCAweDE5LCAweDQwLCAweDI3LCAweDAwLAorMHg5MSwgMHgwMCwgMHg1QywgMHgwMiwgMHhEMCwgMHgwOSwgMHg0NiwgMHgyNywgMHgwMCwgMHg5NSwgMHgwMCwgMHg3NCwgMHgwMiwKKzB4RDAsIDB4MTksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDgsIDB4RTQsCisweDA0LCAweDkxLCAweDAwLCAweDQ0LCAweDI2LCAweEQxLCAweDQ5LCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LAorMHg0RSwgMHhEMiwgMHgxOCwgMHhDMCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKzB4QTAsIDB4MjQsIDB4MDQsIDB4RDEsIDB4MDgsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTUsCisweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDA0LCAweDk5LCAweDAwLCAweDc0LCAweDAyLCAweEQwLAorMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5NSwgMHgwMiwgMHgzNCwgMHgwMiwgMHg5MCwgMHgwOSwgMHg2MCwgMHgyNSwgMHgwMCwKKzB4OTUsIDB4NDAsIDB4NDYsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDEsIDB4OUQsIDB4MDAsIDB4NTQsIDB4MjIsCisweEQwLCAweDA5LCAweDQwLCAweDYwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgyMCwgMHgwMSwgMHg4MSwgMHgwMCwgMHgwNCwgMHgxMywgMHhEMCwgMHhDOCwgMHg0MCwgMHgyMywgMHgxMSwgMHg4MSwgMHgwQywKKzB4MTQsIDB4MjIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4ODUsIDB4MDQsIDB4MzQsIDB4MjIsIDB4RDAsIDB4NDgsCisweDYwLCAweDIzLCAweDAyLCAweDhELCAweDAwLCAweDM0LCAweDIyLCAweDEwLCAweDg4LCAweDQwLCAweDIwLCAweDA4LCAweDkxLAorMHgwMCwgMHgwNCwgMHgwNiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwNCwgMHgzNCwgMHgxMiwgMHhEMCwKKzB4MDgsIDB4NDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4ODIsCisweDAyLCAweDUzLCAweDBBLCAweDRELCAweDMwLCAweEYwLCAweDQ1LCAweEMxLCAweDg3LCAweDAyLCAweDE3LCAweDAyLCAweDdDLAorMHgwOCwgMHhGMCwgMHhBMCwgMHhDMCwgMHgwNywgMHgwOCwgMHgxMywgMHgwQSwgMHgzQywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwKKzB4ODcsIDB4MDAsIDB4MTcsIDB4MTQsIDB4N0MsIDB4MDgsIDB4QjAsIDB4NjAsIDB4QzEsIDB4MDUsIDB4ODUsIDB4NTYsIDB4MTQsCisweDQ0LCAweDAwLCAweEYwLCAweDQxLCAweEQxLCAweDA0LCAweDAwLCAweDFGLCAweDE0LCAweDVDLCAweDAwLCAweEYwLCAweDAxLAorMHhEMCwgMHg3NCwgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg5MCwgMHgyRiwgMHgyMiwKKzB4QkYsIDB4MDAsIDB4RkMsIDB4MzMsIDB4RjAsIDB4NEIsIDB4QzAsIDB4MjcsIDB4MDIsIDB4OUYsIDB4MEMsIDB4REMsIDB4MTIsCisweEYwLCAweDg5LCAweEMwLCAweDJGLCAweDMwLCAweDlGLCAweDA4LCAweEZDLCAweDEyLCAweEYwLCAweDg5LCAweEM4LCAweDJGLAorMHgwMSwgMHg5RiwgMHg0MCwgMHg3QywgMHgxMiwgMHhGMCwgMHg0OSwgMHhDMiwgMHgyNywgMHgwOCwgMHg5RiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RDAsIDB4MDksIDB4QzAsIDB4MkYsIDB4MDgsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MjIsIDB4RjAsIDB4MEEsIDB4QzAsCisweDY1LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDJGLCAweDAxLCAweEJGLAorMHgwMCwgMHhDQywgMHgzMiwgMHhFMCwgMHgwQiwgMHhDOCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwOCwgMHg2QywgMHgwMiwgMHhFMCwKKzB4NDksIDB4QzEsIDB4MkUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MEIsIDB4RDgsIDB4MjQsIDB4MjAsCisweEJGLCAweDM0LCAweDdDLCAweDIyLCAweEYwLCAweDA5LCAweEUwLCAweDJELCAweDAwLCAweEIzLCAweDAwLCAweEVDLCAweDAyLAorMHhGMCwgMHg0QiwgMHhDMSwgMHgyQywgMHgyMCwgMHg5RiwgMHg1NSwgMHhGOCwgMHgwMiwgMHhGMCwgMHgwQSwgMHhDMCwgMHg2MCwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDUsIDB4MUQsIDB4MDQsCisweDQ0LCAweEIwLCAweEQwLCAweDI1LCAweDQxLCAweDA0LCAweDA0LCAweDFELCAweDA4LCAweDQ0LCAweDUwLCAweEQyLCAweDQxLAorMHg0NCwgMHgwNCwgMHgwMCwgMHgxNywgMHgxMiwgMHg3NCwgMHg0MCwgMHgxNCwgMHg4MSwgMHg2OCwgMHgwNCwgMHgwNSwgMHgxRCwKKzB4MDAsIDB4NzQsIDB4MTAsIDB4NzEsIDB4MjEsIDB4NDEsIDB4MDQsIDB4MDAsIDB4MTUsIDB4MDgsIDB4NDQsIDB4MDAsIDB4RDAsCisweDAxLCAweDQwLCAweDA1LCAweDIwLCAweDFELCAweDAwLCAweDc0LCAweDAwLCAweEQwLCAweDAxLCAweEMwLCAweDcyLCAweDIwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgyMywgMHgwMywgMHg4RCwgMHgxNSwgMHgwNCwKKzB4OTIsIDB4RDAsIDB4QzgsIDB4NDAsIDB4MjAsIDB4MDIsIDB4OEQsIDB4MDAsIDB4MjQsIDB4MTIsIDB4RDAsIDB4NDgsIDB4NDEsCisweDIyLCAweDIwLCAweDhELCAweDBDLCAweDM2LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDIyLCAweDIxLCAweDhELCAweDAwLAorMHgzMCwgMHgxMiwgMHhEMSwgMHhDOCwgMHg0MCwgMHgzMSwgMHgwMiwgMHg4MSwgMHgwMCwgMHgxNCwgMHgwMiwgMHhEMCwgMHgwOCwKKzB4NDAsIDB4MjIsIDB4MDAsIDB4OEQsIDB4ODAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NDAsIDB4ODgsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LCAweDY1LCAweDAwLCAweDhELCAweDAwLCAweDQ0LCAweDAyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgyMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwKKzB4MDAsIDB4OTUsIDB4MDAsIDB4NzQsIDB4NDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjYsIDB4MDYsIDB4OUQsIDB4MDAsIDB4NzQsCisweDAyLCAweDUwLCAweDA4LCAweDQ4LCAweDM0LCAweDA4LCAweDk1LCAweDIwLCAweDQ2LCAweDQzLCAweEQwLCAweDA5LCAweDQwLAorMHg2NywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NiwgMHgwRSwgMHhEMCwgMHg0OSwgMHg0MCwgMHg2MiwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODgsIDB4RTcsIDB4MDQsIDB4OUYsIDB4MDEsIDB4NEQsIDB4MDIsIDB4RjAsCisweDM5LCAweEUwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDZDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI2LCAweDA0LAorMHg5RiwgMHgwMCwgMHg3QywgMHgwQSwgMHgzMCwgMHgwOSwgMHg0MCwgMHg2NiwgMHgwMCwgMHg5RiwgMHgyMCwgMHg3QywgMHgwMiwKKzB4RDAsIDB4MDksIDB4NDAsIDB4MjUsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NUQsIDB4OEEsIDB4RjAsIDB4MDksIDB4QzAsIDB4RTYsCisweDA0LCAweDlGLCAweDAwLCAweDdDLCAweDBFLCAweEYwLCAweDA4LCAweDQwLCAweDE0LCAweDIwLCAweDBFLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwNCwgMHg3QywgMHg2NiwgMHhGMywgMHg4OCwKKzB4RDEsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MDksIDB4QzgsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdDLCAweDI2LCAweEYwLCAweDA5LCAweEMwLCAweDI1LCAweDAwLCAweDlGLCAweDIwLCAweDdDLCAweDAyLCAweEYwLAorMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg4RiwgMHgwMCwgMHg1QywgMHgwMiwgMHhGMCwgMHgwOCwgMHhDMSwgMHgyNSwgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzEsIDB4NTMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDg1LCAweDAyLCAweDFGLCAweDAwLCAweDRELCAweDA4LCAweEY4LCAweDIxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMCwgMHhDNCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwKKzB4N0MsIDB4MDgsIDB4RjAsIDB4MDAsIDB4QzAsIDB4ODQsIDB4MDAsIDB4MUYsIDB4MDEsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MDEsCisweEMwLCAweDAyLCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLAorMHgwMCwgMHg3QywgMHg0MCwgMHgzMiwgMHgwMSwgMHhDMCwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTQsIDB4QTAsIDB4MUMsIDB4MDIsIDB4N0QsIDB4MDIsIDB4QzQsIDB4MDEsIDB4RDAsIDB4MzcsIDB4QzAsIDB4MTUsCisweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQ4LCAweDVGLCAweDAwLCAweDVGLCAweDAwLCAweDc0LAorMHgwMSwgMHhEMCwgMHgxNSwgMHgwMSwgMHgxNCwgMHgwMCwgMHg3RCwgMHgwNSwgMHg0NSwgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4MUQsIDB4MDAsIDB4N0YsIDB4MjAsIDB4RjQsIDB4NEQsIDB4RDAsIDB4MDcsIDB4NDAsIDB4NTQsIDB4MjAsIDB4NUQsIDB4MDAsCisweEY0LCAweDAxLCAweDM0LCAweDA3LCAweEQwLCAweDUwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxNCwgMHhBMCwgMHg3MiwgMHg4MCwgMHg4RCwgMHgxMCwgMHgwNCwgMHgwMywgMHhEMCwgMHhCQywgMHg0MCwgMHgzMSwgMHgwMCwKKzB4REQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDYsIDB4Q0QsIDB4MDAsIDB4NzQsIDB4MDMsCisweEQwLCAweDE4LCAweDYwLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDAzLCAweDkwLCAweDBDLCAweDQwLCAweEIwLAorMHgwMSwgMHhDMSwgMHgxMiwgMHgzNCwgMHgwQiwgMHhEMCwgMHgzNCwgMHg1MCwgMHg3MCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4OTAsIDB4MEMsIDB4NDAsIDB4NTAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweDgwLCAweDI4LCAweDAxLCAweDdELCAweDA4LCAweDg0LCAweDQzLCAweEQwLCAweDBFLCAweDQwLCAweDM5LCAweDAwLCAweEVELAorMHgwQywgMHhCNCwgMHgxMywgMHhEQSwgMHhDRSwgMHg0MCwgMHgxQiwgMHgwMCwgMHhFRCwgMHgwOCwgMHhCNCwgMHgxMywgMHhEMSwKKzB4MEIsIDB4NDAsIDB4MzgsIDB4MjEsIDB4MEQsIDB4MDEsIDB4ODYsIDB4MjMsIDB4RDIsIDB4NEMsIDB4NDAsIDB4MjEsIDB4MDAsCisweDY1LCAweDEwLCAweEIwLCAweDAxLCAweEQwLCAweDBFLCAweDQxLCAweDM4LCAweDA0LCAweEVELCAweDAwLCAweEY0LCAweDQ3LAorMHgxMCwgMHgwRiwgMHg0MCwgMHgxNiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwKKzB4RjgsIDB4MDAsIDB4QUYsIDB4MDUsIDB4OEMsIDB4MDcsIDB4RDAsIDB4MTYsIDB4QzAsIDB4NzksIDB4MDAsIDB4RUYsIDB4MDUsCisweEJDLCAweDBGLCAweEYwLCAweDFFLCAweEM0LCAweDdCLCAweDIwLCAweEVELCAweDExLCAweEI0LCAweDg3LCAweEQwLCAweDBGLAorMHhDMCwgMHg3OCwgMHgwMSwgMHgyRiwgMHgyMSwgMHg4QywgMHg1NywgMHhGMCwgMHhCRSwgMHhDNCwgMHg2OCwgMHgwMCwgMHhFMSwKKzB4MDEsIDB4QjAsIDB4MDUsIDB4RjAsIDB4MUMsIDB4QzQsIDB4NzgsIDB4MDAsIDB4RUYsIDB4MDEsIDB4RjgsIDB4MDUsIDB4QjAsCisweDFFLCAweEQwLCAweDU0LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LAorMHgwMCwgMHg4RiwgMHg0MCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHhCNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjEsIDB4NEQsIDB4QzEsIDB4MzcsIDB4MDAsIDB4RDYsIDB4NDQsIDB4N0MsIDB4QUIsIDB4RjAsIDB4MEQsIDB4Q0MsCisweEI3LCAweDA2LCAweDFGLCAweDAwLCAweDZDLCAweDAzLCAweDYwLCAweDZELCAweEMwLCAweDI1LCAweDAwLCAweDVGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHg4MCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzAsIDB4NDEsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4NEYsIDB4MDAsCisweDIzLCAweDQxLCAweERELCAweDI3LCAweEY4LCAweDhGLCAweEMwLCAweEZGLCAweDA0LCAweEZCLCAweDAxLCAweERDLCAweDA3LAorMHhGMCwgMHg5RiwgMHhDMCwgMHg2QywgMHgwMiwgMHhGRiwgMHgwMSwgMHhFQywgMHgyRiwgMHhGMiwgMHg5QiwgMHhDMiwgMHg3RiwKKzB4NDIsIDB4MzMsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4NDgsIDB4MDAsIDB4QjMsIDB4ODksIDB4QUUsCisweDI1LCAweDMwLCAweDFGLCAweEMyLCAweDdGLCAweDAyLCAweEZGLCAweDAxLCAweEZDLCAweDA2LCAweEYwLCAweDFFLCAweEMwLAorMHgwMCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg4OCwgMHgwOSwgMHgwMCwgMHg2MSwKKzB4MDgsIDB4ODUsIDB4MDEsIDB4RDgsIDB4MEUsIDB4NDEsIDB4M0YsIDB4MDAsIDB4RjEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDIsCisweDBGLCAweDU0LCAweDg4LCAweDIwLCAweEU3LCAweDAwLCAweDg1LCAweDIzLCAweEQwLCAweENBLCAweDQwLCAweDNCLCAweDAyLAorMHgyMSwgMHgwOCwgMHhBQywgMHgwMywgMHg3MCwgMHgwRiwgMHg0OCwgMHgyOCwgMHgwMCwgMHhFQiwgMHgwMCwgMHg4QywgMHgwMSwKKzB4QjAsIDB4NEEsIDB4NDAsIDB4M0IsIDB4MDIsIDB4RUQsIDB4MDAsIDB4MzQsIDB4MUIsIDB4RDAsIDB4MEUsIDB4NTAsIDB4NTQsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI5LCAweDA0LCAweDIxLCAweDAyLAorMHg5NCwgMHhDMywgMHhEMCwgMHg4NiwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFOSwgMHgwMCwgMHg5NCwgMHgyMywgMHhEMCwgMHgwRSwKKzB4NDIsIDB4MzgsIDB4OTAsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDIsIDB4MEEsIDB4MDAsIDB4M0YsIDB4MDQsIDB4MDEsCisweDAwLCAweDg0LCAweDIzLCAweEQwLCAweDBFLCAweDQwLCAweDA5LCAweDAwLCAweEExLCAweDQwLCAweDk3LCAweDAxLCAweDEyLAorMHgwRSwgMHg0OCwgMHgyQiwgMHgxMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MjgsIDB4QTcsIDB4MDEsIDB4MDEsIDB4ODEsIDB4NDQsCisweDBFLCAweEQwLCAweDMxLCAweDQwLCAweDMzLCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDAzLCAweEQ4LCAweDBDLCAweDQwLAorMHhCMCwgMHgwOCwgMHhDNSwgMHgwMCwgMHgwNCwgMHgxMywgMHhEMCwgMHgwOCwgMHg2MCwgMHgzMywgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MjQsIDB4MDMsIDB4NTgsIDB4MEMsIDB4NTAsIDB4MjEsIDB4MDAsIDB4QzksIDB4MDAsIDB4MDQsIDB4NDAsIDB4MTIsIDB4MDgsCisweDQwLCAweDIzLCAweDAxLCAweENELCAweDAwLCAweDc0LCAweDlFLCAweEQxLCAweDhDLCAweDQwLCAweDEwLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBOCwgMHhGRCwgMHg0MCwgMHgzMywgMHgwMSwgMHg1QywgMHgwNCwKKzB4RDAsIDB4MTksIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkIsIDB4MDAsIDB4RDQsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4NzQsCisweDAwLCAweEZFLCAweDAwLCAweENDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLCAweEJCLCAweDgwLCAweDEzLCAweDAwLCAweENDLAorMHgwMywgMHhGMCwgMHgwRiwgMHg0MCwgMHgyNSwgMHgwMCwgMHhEMywgMHgwMCwgMHg1QywgMHgwNSwgMHgxMCwgMHgwNSwgMHhDOCwKKzB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4NEIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI3LCAweDA4LCAweDVGLCAweDBBLCAweDdDLCAweDQwLCAweEYwLAorMHgyOSwgMHhDMSwgMHgzNywgMHgwMCwgMHhERiwgMHg4MCwgMHg3QywgMHgyMywgMHhGMywgMHgwRCwgMHhDNCwgMHhDNywgMHgwMCwKKzB4QzQsIDB4ODAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MzcsIDB4MDEsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDMsCisweDcwLCAweDBDLCAweEMwLCAweDI2LCAweDAwLCAweDVGLCAweDAyLCAweDUwLCAweDA1LCAweEYwLCAweDBELCAweEMwLCAweDI3LAorMHgwMCwgMHhERSwgMHg0MCwgMHg3QywgMHgwMywgMHhGMCwgMHgyRCwgMHhDMCwgMHgwNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4M0YsIDB4MDIsIDB4MzMsIDB4MjAsIDB4Q0MsIDB4MDAsIDB4MzAsIDB4MEIsCisweEMwLCAweDNDLCAweDAwLCAweEZFLCAweDAwLCAweEZFLCAweDAzLCAweEIyLCAweDBGLCAweEMyLCAweDdGLCAweDA1LCAweEZGLAorMHgwMCwgMHhDRCwgMHg4MywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHgzMywgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwKKzB4MEYsIDB4QzIsIDB4MEUsIDB4MDAsIDB4MEYsIDB4MDEsIDB4Q0QsIDB4MDEsIDB4MzAsIDB4NEYsIDB4QzAsIDB4N0MsIDB4MDEsCisweEVGLCAweDAwLCAweENDLCAweDA3LCAweDMwLCAweDFCLCAweEMwLCAweDAwLCAweDIyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHg3NiwgMHgyMCwgMHgwNSwgMHgwNCwgMHg0NCwgMHgwNCwgMHgxMCwgMHgzOSwgMHg0MSwKKzB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4NzAsIDB4MEQsIDB4NDAsIDB4QTcsIDB4ODAsIDB4REQsIDB4MDAsCisweDQ0LCAweDAzLCAweEQwLCAweDBELCAweEMwLCAweDM1LCAweDAwLCAweDExLCAweDAzLCAweDc0LCAweDAzLCAweDcyLCAweDBELAorMHg0OCwgMHg0NSwgMHgwMCwgMHgxRCwgMHgwNSwgMHgwNCwgMHgwOCwgMHg1MiwgMHgwQywgMHg0MCwgMHgyNCwgMHgwMCwgMHhERCwKKzB4MDAsIDB4NDQsIDB4MDksIDB4MTAsIDB4OUMsIDB4NDAsIDB4MDQsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweEEwLCAweDE0LCAweDUwLCAweDExLCAweDAwLCAweDQ0LCAweDA2LCAweDEwLCAweDExLCAweDYwLCAweDM2LAorMHgxMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0QSwgMHgwNywgMHg4MCwgMHhERCwgMHgwMCwgMHg0NCwKKzB4MDMsIDB4RDAsIDB4MDksIDB4NjgsIDB4MzcsIDB4MDAsIDB4MTEsIDB4MDMsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsCisweDQ0LCAweDAwLCAweDlELCAweDA4LCAweDQ0LCAweDIwLCAweDEwLCAweDBELCAweDQwLCAweDM1LCAweDAwLCAweERELCAweDAwLAorMHg1NCwgMHgxMywgMHg1MCwgMHgwNSwgMHg0MSwgMHgwNCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDUsIDB4MDQsIDB4MTQsIDB4MDgsIDB4NTAsIDB4MzIsIDB4MDAsCisweENELCAweDAwLCAweDc0LCAweDAzLCAweDUwLCAweDBDLCAweDQwLCAweDAzLCAweDAwLCAweENELCAweDgwLCAweDA0LCAweDAzLAorMHhEMCwgMHgwOCwgMHg0MCwgMHgzNCwgMHgyMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMywgMHg1MiwgMHgwQywgMHg0MCwgMHgyMSwKKzB4MTAsIDB4Q0QsIDB4MDAsIDB4NDQsIDB4MDAsIDB4NTAsIDB4MEMsIDB4NDQsIDB4MjAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NDUsCisweDBCLCAweDE0LCAweDBELCAweDQwLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhCMCwgMHgzMiwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0RCwgMHgwMiwgMHgzMCwgMHgwMSwgMHhDMiwgMHgzRSwgMHgxMCwgMHhERiwKKzB4MDAsIDB4NzQsIDB4MDMsIDB4MzAsIDB4MEYsIDB4QzAsIDB4MTcsIDB4MTAsIDB4RUQsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4RjAsCisweDA5LCAweDg4LCAweDNGLCAweDQwLCAweDEzLCAweDQwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEUwLCAweDA0LCAweDIwLAorMHgxRiwgMHgwMCwgMHg0RSwgMHgwMCwgMHgzMCwgMHgwRCwgMHhDMCwgMHgyNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwQiwKKzB4MzAsIDB4MDEsIDB4QzAsIDB4MDAsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsCisweDNGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAyLCAweEYxLCAweDBCLCAweENBLCAweDNELCAweDAwLCAweEZGLCAweDIwLAorMHhGQywgMHgwMywgMHg3MCwgMHgwRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwKKzB4QzAsIDB4MzksIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4NDAsIDB4MEYsIDB4QzAsIDB4MEQsIDB4MDAsIDB4M0YsCisweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBGLCAweEM4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDEzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgzRiwKKzB4MDAsIDB4RkIsIDB4MUMsIDB4RUMsIDB4MDUsIDB4MzAsIDB4MEIsIDB4QzAsIDB4NUYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RUMsCisweDAzLCAweEIwLCAweDBGLCAweEMxLCAweDNGLCAweDAwLCAweDNCLCAweDgxLCAweEVDLCAweDMzLCAweDcwLCAweDBGLCAweEMwLAorMHg0RiwgMHgwMCwgMHgyRiwgMHgwMSwgMHhGQywgMHg4NCwgMHhGMCwgMHg0RiwgMHg4MCwgMHg3QywgMHgwMCwgMHg3QiwgMHgwMSwKKzB4QkMsIDB4MDQsIDB4RjAsIDB4MTMsIDB4QzIsIDB4NEUsIDB4MDAsIDB4RkYsIDB4MDEsIDB4RkUsIDB4MDAsIDB4RjAsIDB4MDMsCisweDQ0LCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LCAweEZGLCAweDAyLAorMHhGMSwgMHgwMiwgMHg0NCwgMHgwNiwgMHgxNCwgMHgxOSwgMHg0MCwgMHgyNiwgMHgwMCwgMHg4RCwgMHg3MCwgMHg3NCwgMHhBRiwKKzB4MTAsIDB4MUYsIDB4NDAsIDB4RkYsIDB4MDAsIDB4OUQsIDB4MDEsIDB4NzQsIDB4M0IsIDB4MTAsIDB4QkYsIDB4NDAsIDB4NzcsCisweDAwLCAweERELCAweDAxLCAweDc0LCAweDA3LCAweEQwLCAweEJGLCAweDQwLCAweDM4LCAweDA1LCAweDkxLCAweDAxLCAweDc0LAorMHgwNCwgMHhEMCwgMHgxMSwgMHg0MCwgMHg0NywgMHgwMCwgMHhERCwgMHgwMCwgMHg3NiwgMHg4NiwgMHhEMiwgMHgxOSwgMHg0MCwKKzB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MzMsIDB4MjAsIDB4QzgsCisweDA0LCAweDY0LCAweDAxLCAweDUwLCAweDA4LCAweDQwLCAweDIxLCAweDAwLCAweDhELCAweDA0LCAweDA2LCAweDAzLCAweDkwLAorMHgwQywgMHg0MiwgMHhCMywgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgxMywgMHg1MCwgMHgwQywgMHg2MCwgMHgzMywgMHgyMCwKKzB4Q0QsIDB4ODAsIDB4MzQsIDB4MDIsIDB4NTIsIDB4MEMsIDB4NjAsIDB4MzAsIDB4NDAsIDB4ODUsIDB4NDAsIDB4MTYsIDB4MDAsCisweEQwLCAweDAwLCAweDQyLCAweDAzLCAweDAwLCAweEM1LCAweDgwLCAweDM0LCAweDAwLCAweEQyLCAweDAwLCAweDQyLCAweDQ3LAorMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHgzNSwgMHgwMCwgMHhEMSwgMHgwMCwKKzB4NDQsIDB4MDIsIDB4NTAsIDB4MTksIDB4NDAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MjMsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MEQsCisweDQwLCAweDM3LCAweDAwLCAweDlDLCAweDAxLCAweDM0LCAweDAzLCAweDEwLCAweDBELCAweDAwLCAweDM3LCAweDAwLCAweERELAorMHgwNiwgMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgxMCwgMHg5NSwgMHgwMCwgMHg3NCwgMHgwRSwgMHhEMCwKKzB4MTEsIDB4NDAsIDB4NjcsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDYsIDB4QzAsIDB4MTksIDB4NDAsIDB4MEYsIDB4MjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM3LCAweDAwLCAweERCLCAweDgwLCAweDJDLAorMHgxMiwgMHg3MSwgMHgxMSwgMHhDMSwgMHgxNywgMHgwMSwgMHgxRiwgMHgwMywgMHg0QywgMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwKKzB4MzcsIDB4MDAsIDB4MTMsIDB4MDMsIDB4NkMsIDB4MDMsIDB4NzIsIDB4MEQsIDB4QzgsIDB4MDcsIDB4MDEsIDB4MUUsIDB4MDAsCisweDdDLCAweDAxLCAweEYwLCAweDBDLCAweEMwLCAweDM0LCAweDAwLCAweDU1LCAweDA1LCAweDdDLCAweDA0LCAweEQwLCAweDMxLAorMHhDMCwgMHg0NywgMHgwMSwgMHhERiwgMHhBMCwgMHg3NCwgMHgwNCwgMHhGMCwgMHgxOSwgMHhDMSwgMHgwMywgMHgyMCwgMHgwRSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MzksIDB4MDAsIDB4RUYsIDB4MDAsIDB4RkMsIDB4MDIsCisweEIwLCAweDAzLCAweEMwLCAweDJGLCAweDAwLCAweEJGLCAweDgwLCAweEJDLCAweDAzLCAweEIwLCAweDBGLCAweEMwLCAweDNGLAorMHgwMCwgMHgzRiwgMHgwMCwgMHg3QywgMHgwMywgMHhEMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMSwgMHhGRiwgMHg0MSwgMHhGQywKKzB4MDMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4M0YsIDB4MDAsIDB4QjMsIDB4MDksIDB4RjgsIDB4MDIsIDB4RjAsIDB4MDMsIDB4QzAsCisweDBGLCAweDAwLCAweEZGLCAweDAwLCAweEY4LCAweDQwLCAweEYwLCAweDA5LCAweEMxLCAweDFGLCAweDAwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MjksIDB4QzAsIDB4MzcsIDB4MDAsIDB4MUYsIDB4MjIsIDB4NkMsIDB4MDMsIDB4MzAsIDB4OEQsIDB4QzAsIDB4MzcsIDB4MDAsCisweDEzLCAweDQ2LCAweDdDLCAweDAzLCAweEIyLCAweDBELCAweEM0LCAweDM0LCAweDAwLCAweERGLCAweDAyLCAweDRDLCAweDE3LAorMHhCMCwgMHg4RCwgMHhDMiwgMHgzNywgMHgxMCwgMHg5RiwgMHg4MCwgMHg3RSwgMHgwOCwgMHhCNCwgMHg4MSwgMHhDOCwgMHgyNywKKzB4MTEsIDB4REYsIDB4MDAsIDB4NUUsIDB4MDAsIDB4RjAsIDB4MjksIDB4QzAsIDB4MDgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDNDLCAweDAwLCAweEYxLCAweDAwLCAweDQ0LCAweDEyLCAweEQwLCAweDA5LAorMHg0MCwgMHgyNywgMHgyMiwgMHg5RCwgMHhBMCwgMHhDNCwgMHg0QiwgMHg1MCwgMHgxRiwgMHg0MCwgMHgzRiwgMHgwMCwgMHgxQSwKKzB4MDMsIDB4RjQsIDB4MDMsIDB4MTAsIDB4MEYsIDB4NDAsIDB4NzQsIDB4MDEsIDB4REQsIDB4MDAsIDB4NDQsIDB4MEIsIDB4MTAsCisweDJGLCAweDQyLCAweDM3LCAweDAwLCAweDkxLCAweDBCLCAweDc0LCAweDAyLCAweDIxLCAweDAxLCAweDQwLCAweEE3LCAweDAxLAorMHhERCwgMHgwMCwgMHg0NiwgMHgxQSwgMHg5MCwgMHgyOSwgMHhDMCwgMHg0RSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MzIsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MTQsIDB4MTMsIDB4RDAsIDB4MDAsIDB4NDAsCisweDMyLCAweDAyLCAweDBELCAweDAwLCAweDI0LCAweDFGLCAweDEwLCAweDBDLCAweDQ4LCAweDMzLCAweDAwLCAweDA0LCAweDAwLAorMHgzNCwgMHgwMywgMHg5MCwgMHgwQywgMHg0MCwgMHg0MywgMHgwMSwgMHgwRCwgMHhBMCwgMHgyNiwgMHg4OCwgMHgxMCwgMHgyQywKKzB4NDgsIDB4MzMsIDB4MDAsIDB4QzQsIDB4MDgsIDB4MzQsIDB4MDAsIDB4MTAsIDB4NTAsIDB4NDgsIDB4NDIsIDB4MjAsIDB4QzksCisweDgwLCAweDI0LCAweDAyLCAweEQyLCAweDIwLCAweDQwLCAweDFFLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHg4MCwgMHg3MCwgMHgwMCwgMHhDMSwgMHgwMSwgMHg4NCwgMHgwNiwgMHhEMCwgMHgxRSwgMHg0MCwgMHg2QiwKKzB4MDAsIDB4NkQsIDB4MDEsIDB4ODQsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDIsIDB4QUQsIDB4MjksIDB4QjQsCisweDA3LCAweDEwLCAweDFFLCAweDQwLCAweDRCLCAweDAwLCAweDJELCAweDQxLCAweEI0LCAweDA3LCAweDEwLCAweDFFLCAweDYwLAorMHg3QiwgMHgyMiwgMHhFMSwgMHg0MSwgMHhGNCwgMHgwNCwgMHg5MCwgMHg5MiwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFRCwgMHgwMSwKKzB4ODQsIDB4MDYsIDB4OTAsIDB4MTIsIDB4NDAsIDB4MUEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEyLCAweDEwLCAweDMwLCAweDAwLCAweEM3LCAweDA4LCAweDFDLCAweDAzLCAweEQwLCAweDA0LCAweEMwLCAweDIzLCAweDAwLAorMHhDRiwgMHgwMCwgMHgyRSwgMHgwMywgMHgzMCwgMHgwQywgMHhFOCwgMHgzMywgMHgwMiwgMHg4NywgMHgxMiwgMHgzQywgMHgwMywKKzB4QjAsIDB4MEMsIDB4QzEsIDB4MDMsIDB4MjAsIDB4MEQsIDB4MDEsIDB4MkQsIDB4MTYsIDB4MzAsIDB4OEMsIDB4QzAsIDB4MzMsCisweDAwLCAweDg3LCAweDA4LCAweDM0LCAweDA2LCAweDMwLCAweDUwLCAweEMyLCAweDEzLCAweDAwLCAweENGLCAweDAwLCAweDNDLAorMHgwMywgMHhGMCwgMHg4NCwgMHhDMCwgMHg0QSwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4QjgsIDB4M0QsIDB4MDAsIDB4RkMsIDB4MjIsIDB4REMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4ODAsIDB4MkYsIDB4MDIsIDB4RkYsCisweDAwLCAweDlDLCAweDYzLCAweEYwLCAweEFGLCAweEMwLCAweDMzLCAweDRBLCAweDkzLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRSwgMHhDMSwgMHgwQywgMHg5MiwgMHgxRiwgMHg4MCwgMHgwQywgMHgyMywgMHg3NCwgMHgwRiwgMHhDMCwgMHg3NywgMHgwMCwKKzB4QjcsIDB4MDgsIDB4N0MsIDB4MDIsIDB4NzAsIDB4ODcsIDB4RTAsIDB4M0YsIDB4MDAsIDB4RUYsIDB4MDAsIDB4RkQsIDB4MDIsCisweEYwLCAweDBGLCAweEMyLCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLAorMHhCNywgMHgwMywgMHhERiwgMHgwMiwgMHg3QywgMHgwMiwgMHgzMCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwMCwgMHg3RiwgMHgwMSwKKzB4NkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4ODYsIDB4MTMsIDB4MDEsIDB4NUMsIDB4MDMsIDB4NzEsIDB4NUQsCisweEMwLCAweDQwLCAweDkwLCAweDEzLCAweDAwLCAweDdDLCAweDAxLCAweDM4LCAweDBELCAweEM0LCAweDM3LCAweDAwLCAweEQzLAorMHg4MCwgMHg3QywgMHgwMiwgMHhEMCwgMHgxMSwgMHhDMCwgMHgyNCwgMHg4MCwgMHhDRiwgMHgwMCwgMHg0QywgMHgwMCwgMHhGMSwKKzB4MDEsIDB4QzAsIDB4NTcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODgsIDB4MzksCisweDAzLCAweEVELCAweDAyLCAweEI0LCAweDAyLCAweDEwLCAweDA2LCAweDQwLCAweDJCLCAweDAwLCAweEZELCAweDAwLCAweDg0LAorMHg5MywgMHhEMCwgMHgyRSwgMHg0MiwgMHgzMywgMHgyMSwgMHhBMSwgMHgwMCwgMHg4NCwgMHgxMywgMHhEMCwgMHhDRSwgMHg2OCwKKzB4MzksIDB4MzAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4Q0UsIDB4NDAsIDB4M0YsIDB4MTksIDB4RTEsIDB4MjAsCisweEI0LCAweDAyLCAweEQyLCAweDAyLCAweDQ0LCAweDM4LCAweDEwLCAweEVELCAweDAwLCAweDg0LCAweDAwLCAweEQwLCAweDAyLAorMHg0MCwgMHg0QiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg3OSwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4OTQsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDEsIDB4N0IsIDB4MDgsIDB4NkQsIDB4MDAsIDB4QjQsIDB4MDcsCisweEQwLCAweDVFLCAweDQwLCAweDdCLCAweDAxLCAweEIxLCAweDIxLCAweEI0LCAweDI3LCAweDUwLCAweDFDLCAweDUwLCAweDNBLAorMHgwMCwgMHhFMSwgMHgwMSwgMHg5NCwgMHgwNywgMHg5MSwgMHg5RSwgMHg0NCwgMHgzQiwgMHgwMywgMHhBMSwgMHgwMSwgMHhCNCwKKzB4NDYsIDB4RDgsIDB4MTMsIDB4NDQsIDB4NzgsIDB4MDAsIDB4RTUsIDB4ODEsIDB4ODQsIDB4QzcsIDB4RDAsIDB4MUEsIDB4NDAsCisweDBGLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDA4LCAweENELAorMHgwMCwgMHgzNCwgMHgyRSwgMHgxNSwgMHgyQywgMHg0MSwgMHgyMywgMHgyMCwgMHhDRCwgMHgxMywgMHgwNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4QzEsIDB4MTEsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDQsIDB4MzcsIDB4MDAsCisweEMxLCAweDAwLCAweDM0LCAweDg3LCAweDkwLCAweDBDLCAweDQwLCAweDM3LCAweDAwLCAweDgxLCAweDAwLCAweDM0LCAweDQ3LAorMHhEMCwgMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHg4NywgMHhEMCwgMHhFQywgMHg0MCwgMHg0QiwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MTUsIDB4MDAsIDB4NUYsIDB4MDAsCisweEJDLCAweDBELCAweDMwLCAweDA3LCAweEMwLCAweDVGLCAweDAxLCAweDdGLCAweDQwLCAweDdDLCAweDAxLCAweEQwLCAweDA1LAorMHhDMCwgMHgxNywgMHgxMCwgMHg3MywgMHgwMywgMHg3QywgMHgwMSwgMHg3MSwgMHgwNSwgMHhDMCwgMHg5RSwgMHhDMCwgMHg3MywKKzB4MDksIDB4OUMsIDB4MDUsIDB4OTEsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NjEsIDB4MDAsIDB4RjQsIDB4MDEsIDB4RjAsCisweDI3LCAweDQwLCAweDFDLCAweDgwLCAweDRGLCAweDAwLCAweEM0LCAweDhELCAweEYwLCAweDM3LCAweDQwLCAweDVGLCAweDIwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywKKzB4NDgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MjAsIDB4MUYsIDB4MDgsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4RTAsCisweDA3LCAweDQwLCAweDFGLCAweDA4LCAweDVDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDg0LCAweDI2LCAweDFGLCAweDhBLAorMHg3QywgMHgyMCwgMHg3MCwgMHgyMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMiwgMHg3QywgMHgwOCwgMHhGMiwgMHgwMSwKKzB4QzAsIDB4ODcsIDB4MzksIDB4MUYsIDB4MDAsIDB4N0QsIDB4NDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NEIsIDB4MDAsIDB4MEMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDA2LAorMHgzMCwgMHgwOSwgMHhDMCwgMHg2NywgMHgwMCwgMHg4MywgMHgwMCwgMHgwQywgMHgwMiwgMHhCMiwgMHgwOSwgMHhDOCwgMHgyNywKKzB4MDIsIDB4OUIsIDB4MDUsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MjAsIDB4OTEsIDB4MDAsIDB4N0MsCisweDIyLCAweEI0LCAweDk4LCAweEMwLCAweDI1LCAweDAwLCAweDkzLCAweDQwLCAweDRDLCAweDI2LCAweDMwLCAweDA5LCAweEMxLAorMHg2NywgMHgwMiwgMHg5QiwgMHgwMCwgMHgwQywgMHgwMiwgMHgzMCwgMHgzOSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTQsCisweDA5LCAweEMwLCAweDIxLCAweDAyLCAweDk1LCAweDAwLCAweDQ0LCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDIzLCAweDAwLAorMHg5MCwgMHgwMSwgMHg3NCwgMHgwMiwgMHhEMCwgMHg5OSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHgwNCwgMHg3QywgMHgwRSwKKzB4MTAsIDB4MDksIDB4NDAsIDB4MkMsIDB4MDAsIDB4OUIsIDB4MTIsIDB4MkMsIDB4MEUsIDB4MTQsIDB4OTksIDB4NDAsIDB4RTMsCisweDQwLCAweDkxLCAweDAwLCAweDQ0LCAweDBBLCAweDUwLCAweDM5LCAweDQ4LCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHg4MCwgMHg4RCwgMHgwMCwgMHg1NCwgMHgyMiwgMHgxMCwgMHgwOSwKKzB4NjAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4OTAsIDB4MDksIDB4NDQsIDB4MjcsIDB4MDAsIDB4OTksCisweDAwLCAweDcwLCAweDAyLCAweEQ4LCAweDA5LCAweDQwLCAweDY3LCAweDAwLCAweDk1LCAweDIwLCAweDc2LCAweDBBLCAweDE4LAorMHgwOSwgMHg0MSwgMHgyNSwgMHgwMCwgMHg5MSwgMHgwOCwgMHg0MCwgMHgwMiwgMHgxMCwgMHgwRCwgMHg0MCwgMHgyNywgMHgwNCwKKzB4OTEsIDB4MDEsIDB4NDQsIDB4NDcsIDB4MTEsIDB4MjksIDB4NDAsIDB4NjMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweEEwLCAweDAxLCAweDhELCAweDA0LCAweDA0LCAweDAyLCAweDEwLCAweDQ4LCAweDQwLAorMHhBNSwgMHhBMCwgMHg4NSwgMHgxNCwgMHgwNCwgMHgwMiwgMHg5MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHhDOSwgMHgwMCwKKzB4MzQsIDB4MjIsIDB4RDIsIDB4MDgsIDB4NDAsIDB4MjcsIDB4MDAsIDB4ODUsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MUEsIDB4MDgsCisweDQwLCAweDIwLCAweDAyLCAweDk5LCAweDIwLCAweDI0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDI3LCAweDAwLCAweDgxLAorMHgwMSwgMHgwNCwgMHgxMiwgMHg1MCwgMHg0OCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MUQsIDB4QjAsIDB4MDYsIDB4MDAsIDB4MUQsIDB4OEEsIDB4NTQsIDB4MDEsIDB4MzEsIDB4MDEsIDB4QzEsIDB4OTcsCisweDAwLCAweDEzLCAweDBBLCAweDRDLCAweDUwLCAweEIwLCAweDQxLCAweDQxLCAweDA3LCAweDA1LCAweDFCLCAweDAwLCAweDdDLAorMHg1OCwgMHhEMCwgMHg0MSwgMHg0MSwgMHgxNywgMHgwMCwgMHgxNywgMHgyMCwgMHg3RSwgMHgwMCwgMHhCMCwgMHg0MSwgMHhDMSwKKzB4QzUsIDB4MDAsIDB4MTMsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4MEEsCisweDRDLCAweDAwLCAweDMzLCAweDAxLCAweEMyLCAweDc3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOSwgMHhCOCwgMHg2NywgMHgwMiwgMHg5RiwgMHgwOCwgMHhCQywgMHgwMiwgMHhEMCwgMHgwQiwgMHhDOCwgMHgyRCwgMHgwMSwKKzB4QkYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4QTYsIDB4MDAsIDB4N0MsIDB4MTIsCisweEYwLCAweDA5LCAweEMwLCAweDJGLCAweDAwLCAweEJCLCAweDAwLCAweDlDLCAweDgyLCAweEYwLCAweDA5LCAweEMwLCAweEE3LAorMHgwOSwgMHhCRiwgMHg2MCwgMHhEQywgMHg4MiwgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHgwOCwgMHg5NywgMHgwMCwgMHhGRCwKKzB4MjIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4NjcsIDB4NDgsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEEwLCAweDI3LCAweDA1LCAweDlGLCAweDBDLCAweEZDLCAweDAyLCAweEYwLCAweDA5LCAweDQwLCAweDJGLCAweDAyLCAweDlGLAorMHg4NCwgMHhGNCwgMHhEMiwgMHg3MCwgMHg0QiwgMHhDMCwgMHgyQywgMHgwMCwgMHhCRiwgMHgwMCwgMHg3QywgMHgyMiwgMHg3MCwKKzB4NEIsIDB4QzAsIDB4MkMsIDB4MDAsIDB4QjcsIDB4MjAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzIsIDB4NjQsIDB4MDMsCisweEE1LCAweDgwLCAweENDLCAweDAyLCAweDcxLCAweDBCLCAweDQwLCAweDJELCAweDAwLCAweEJCLCAweDIwLCAweENDLCAweDAyLAorMHhGMCwgMHgwQiwgMHg4MiwgMHg2NCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwKKzB4NDcsIDB4MDUsIDB4MUQsIDB4NEMsIDB4NzQsIDB4MDAsIDB4QzAsIDB4MDEsIDB4NDQsIDB4MDcsIDB4MjAsIDB4MUQsIDB4QjQsCisweDc0LCAweDAwLCAweDcwLCAweDgxLCAweDQwLCAweDg0LCAweDAwLCAweDE5LCAweDgwLCAweDc0LCAweEEwLCAweEQwLCAweDAxLAorMHg0NCwgMHgwNiwgMHgwMCwgMHgxMywgMHg4MCwgMHg1QywgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg4NCwgMHgxMCwgMHg1NywKKzB4MDAsIDB4NEMsIDB4MDAsIDB4RDAsIDB4MDEsIDB4QzAsIDB4MTUsIDB4MjAsIDB4MTksIDB4NTAsIDB4NkMsIDB4MDAsIDB4RDAsCisweDAxLCAweDUwLCAweDcwLCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLAorMHgwMCwgMHg4RCwgMHgwNCwgMHgzNCwgMHgwMiwgMHhEMCwgMHg4OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwQywgMHgzNCwKKzB4MDIsIDB4NTAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDIsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4NTAsIDB4ODgsIDB4NDgsCisweDI2LCAweDgwLCAweDhELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDg4LCAweDQwLCAweEEwLCAweDIwLCAweDg1LCAweDAwLAorMHgxNywgMHg4MiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4RCwgMHgwMCwgMHgyNCwgMHgwMiwgMHhEMCwgMHgwOCwKKzB4NDAsIDB4NDAsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4MDAsCisweDlELCAweDAwLCAweDc0LCAweDEzLCAweEQwLCAweDA5LCAweDQwLCAweEE3LCAweDAwLCAweDlELCAweDEwLCAweDc0LCAweDAyLAorMHg1MCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHhEOSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNiwKKzB4MDAsIDB4OTEsIDB4MDYsIDB4NTYsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MTAsIDB4OTUsIDB4MDgsIDB4NDQsCisweDA2LCAweEQ4LCAweDE5LCAweDQwLCAweDI1LCAweDAwLCAweDk5LCAweDAwLCAweDY0LCAweDA2LCAweEQwLCAweDE5LCAweDAwLAorMHg2MCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgyOCwgMHgyRCwgMHgwMCwgMHg5RiwKKzB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4NTksIDB4QzAsIDB4QTcsIDB4MDIsIDB4OUYsIDB4MDMsIDB4N0MsIDB4MDIsIDB4NzAsCisweDA5LCAweEM0LCAweDI0LCAweDAwLCAweDlGLCAweDA1LCAweDdDLCAweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDYwLCAweDAxLAorMHg5RiwgMHgwMCwgMHg3QywgMHg0MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5NywgMHgwMCwgMHg1QywgMHg0NiwKKzB4NzAsIDB4NTksIDB4Q0UsIDB4RTUsIDB4MDIsIDB4OUIsIDB4MDAsIDB4NkMsIDB4NEUsIDB4RjAsIDB4MTksIDB4QzEsIDB4MTQsCisweDgwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDI1LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHg2NywgMHgwMCwgMHg5RiwgMHgwNCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4NTAsIDB4MjcsIDB4MjQsIDB4OUYsIDB4MDksIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzQsIDB4NjUsIDB4MDIsIDB4OUYsCisweDQxLCAweDc4LCAweDAyLCAweEYxLCAweDA4LCAweEQwLCAweDI3LCAweDA4LCAweDlGLCAweDAxLCAweDc4LCAweDAyLCAweEYwLAorMHgwOSwgMHhDMCwgMHg2NywgMHg4MCwgMHg5RSwgMHgwMCwgMHg3OCwgMHgwMiwgMHhGMSwgMHgwOCwgMHhDMCwgMHg1MywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NUMsCisweDAwLCAweEY4LCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDgwLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMywgMHg3QywgMHgwMCwgMHhEMiwgMHgwMCwgMHhEMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgxMiwKKzB4NEMsIDB4NDAsIDB4QjAsIDB4ODEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MTgsIDB4RjAsIDB4MjEsCisweEMwLCAweDA3LCAweDA0LCAweDEzLCAweDAwLCAweDRDLCAweDE4LCAweDMwLCAweDAxLCAweEMwLCAweDUzLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg1RCwgMHgwMCwgMHhDNCwgMHgwMSwKKzB4NzAsIDB4MDUsIDB4NDAsIDB4OUYsIDB4MDgsIDB4NTEsIDB4MDAsIDB4RjQsIDB4NkQsIDB4RDAsIDB4MTUsIDB4NDAsIDB4OUYsCisweDAwLCAweDdELCAweDEwLCAweDc0LCAweDAxLCAweEQxLCAweDE1LCAweDQzLCAweDlDLCAweDEwLCAweDdELCAweDAwLCAweEVDLAorMHgxMSwgMHg3MCwgMHgzNywgMHhDOCwgMHgxNiwgMHgwMCwgMHg2RCwgMHgxMCwgMHhDNSwgMHgwMSwgMHhEMCwgMHg4NywgMHg0MCwKKzB4NUYsIDB4MDQsIDB4NjEsIDB4MTgsIDB4QzQsIDB4MDksIDB4QjAsIDB4MDcsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDAxLCAweDUwLAorMHgwQywgMHg0OCwgMHhCMywgMHgwNCwgMHhDMSwgMHgwMCwgMHgzNiwgMHgwRSwgMHhEMCwgMHgwOCwgMHg0MCwgMHhCMywgMHgwMCwKKzB4Q0QsIDB4MDEsIDB4MzQsIDB4MDMsIDB4RDgsIDB4MUMsIDB4NDQsIDB4QjIsIDB4ODEsIDB4Q0QsIDB4MEIsIDB4MjQsIDB4MDMsCisweDUwLCAweDNDLCAweDQxLCAweDMxLCAweDAwLCAweENELCAweDExLCAweDA0LCAweDBFLCAweEQwLCAweDJDLCAweDQwLCAweDczLAorMHgwMCwgMHhDMSwgMHg0MCwgMHgwNCwgMHgwMywgMHgxMCwgMHhBQywgMHg2MSwgMHg1MywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MzgsIDB4MDEsIDB4RUQsIDB4MDksIDB4ODQsIDB4MDEsIDB4NTAsIDB4MEUsCisweDQwLCAweEZCLCAweDQwLCAweEUxLCAweDAwLCAweEI2LCAweDAyLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDA0LCAweEVELAorMHgyMCwgMHhCNCwgMHg5MywgMHhEMCwgMHgxRSwgMHg0MCwgMHhBQSwgMHgwOCwgMHhGRCwgMHgwMSwgMHhBNCwgMHgwMCwgMHg1MSwKKzB4MEUsIDB4NDAsIDB4M0IsIDB4MDIsIDB4MkQsIDB4MDAsIDB4ODYsIDB4MEEsIDB4RDAsIDB4MEUsIDB4NjAsIDB4N0IsIDB4MDgsCisweEUxLCAweDAwLCAweDA1LCAweDg3LCAweDkwLCAweDBFLCAweDYwLCAweDEzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg3OCwgMHgwMSwgMHhGRiwgMHgwNSwgMHg5QywgMHgwNSwgMHg3MCwgMHgxRSwgMHhDMCwKKzB4N0YsIDB4MDAsIDB4RTMsIDB4MEYsIDB4QkMsIDB4MDYsIDB4RjAsIDB4MUEsIDB4NDAsIDB4N0IsIDB4MDAsIDB4MkQsIDB4MDEsCisweEI0LCAweDNGLCAweEYwLCAweDBDLCAweENDLCAweDRBLCAweDgwLCAweEVGLCAweDAxLCAweEFFLCAweDA0LCAweDcwLCAweDFDLAorMHhDMCwgMHg3OSwgMHgwNSwgMHgyRCwgMHgwMSwgMHg5QywgMHgwNywgMHhFOSwgMHgxRSwgMHhDMCwgMHg3QiwgMHg0MCwgMHhFMSwKKzB4MjEsIDB4OEMsIDB4MDUsIDB4MzAsIDB4MTYsIDB4QzAsIDB4NTMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDAwLCAweERGLCAweDEwLCAweDdDLCAweDAxLCAweDcwLCAweDBELCAweEMwLCAweDM3LAorMHgwMCwgMHhERiwgMHgwNCwgMHg3QywgMHgwMiwgMHhGMiwgMHgwRCwgMHhDNCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4ODMsIDB4RjEsIDB4MEQsIDB4QzIsIDB4MjUsIDB4MDAsIDB4Q0YsIDB4NDAsIDB4N0MsIDB4MDAsIDB4NjAsIDB4MEQsIDB4QzAsCisweEI2LCAweDIwLCAweDFGLCAweDAwLCAweDU4LCAweDgzLCAweEZBLCAweDA5LCAweEMwLCAweDEzLCAweDA4LCAweENGLCAweDAwLAorMHg3NCwgMHgwMiwgMHhGMSwgMHgwNSwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QTIsIDB4N0YsIDB4MTQsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MTEsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDIsCisweEZGLCAweDA5LCAweEZDLCAweDA2LCAweDMwLCAweDlGLCAweEMwLCAweDdFLCAweDAyLCAweEZGLCAweDA5LCAweEZDLCAweDA3LAorMHg3MCwgMHgxRiwgMHhDOCwgMHg2RiwgMHgwMiwgMHhFRiwgMHg0MSwgMHhEQywgMHgyNCwgMHhGMCwgMHgxRSwgMHhDMCwgMHg3QywKKzB4MDAsIDB4MzMsIDB4MDksIDB4RjgsIDB4MDcsIDB4RjAsIDB4OUYsIDB4QzAsIDB4N0YsIDB4MDIsIDB4RkIsIDB4NDEsIDB4Q0MsCisweDA1LCAweDMwLCAweDk3LCAweEM0LCAweDBCLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHg4OCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHg0MSwgMHhEMSwgMHgwRSwgMHhDMCwgMHgzOSwgMHgyMywgMHhFRCwKKzB4MDgsIDB4QjQsIDB4MDIsIDB4QjAsIDB4OEUsIDB4MDgsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDgsIDB4REMsIDB4MjMsIDB4MzAsCisweDRFLCAweDQ0LCAweDZCLCAweDJBLCAweEM5LCAweEMwLCAweDEwLCAweDIwLCAweEQwLCAweDgyLCAweDQwLCAweDM5LCAweDAwLAorMHgyRCwgMHgwQywgMHgzNCwgMHgwNywgMHhEMCwgMHgwNCwgMHgwMCwgMHgzQiwgMHgwNywgMHhFNywgMHgwOCwgMHhBQywgMHgyOSwKKzB4MzAsIDB4QUUsIDB4QzAsIDB4NTUsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDc5LCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDIxLCAweEQwLCAweDBFLCAweDQwLCAweDFCLCAweDI0LCAweEVELCAweDQwLAorMHg5NiwgMHgwMiwgMHg5MCwgMHg4RSwgMHg0OCwgMHgyOSwgMHgwOCwgMHgyRCwgMHgwMCwgMHg5MCwgMHgwMywgMHg1MCwgMHgwQSwKKzB4NDgsIDB4MEIsIDB4MDcsIDB4NjUsIDB4MTgsIDB4OTQsIDB4NDAsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MzEsIDB4MDAsIDB4MkQsCisweDgwLCAweEI0LCAweDQzLCAweEQwLCAweDBFLCAweDQ4LCAweDJCLCAweDAwLCAweDY1LCAweDAwLCAweDg0LCAweDAxLCAweDkwLAorMHg4MiwgMHg0MCwgMHg2MywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MEQsIDB4RDAsIDB4MkMsIDB4NDAsIDB4RTEsIDB4MDQsIDB4Q0QsIDB4MDIsIDB4MzQsCisweDAyLCAweDgwLCAweDBDLCAweDUwLCAweDIxLCAweDEwLCAweENELCAweDEyLCAweDE0LCAweDAzLCAweDEwLCAweDA4LCAweDQwLAorMHg2MywgMHgxMSwgMHg0OSwgMHgwMSwgMHgwNCwgMHgwQywgMHhDMCwgMHgwMCwgMHg0MiwgMHgzMSwgMHgwMCwgMHgwRCwgMHgwMCwKKzB4MzQsIDB4NEIsIDB4RDgsIDB4OTAsIDB4NDIsIDB4NzMsIDB4MDEsIDB4NDUsIDB4MDAsIDB4MjQsIDB4MkUsIDB4MTQsIDB4MTgsCisweDQwLCAweDE5LCAweDIwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDM1LCAweDAwLAorMHhGRiwgMHgwMCwgMHgzQywgMHgwRiwgMHhGMCwgMHgyRCwgMHhDMSwgMHg4MywgMHgwMCwgMHhGRiwgMHgwNSwgMHg1RSwgMHgwMywKKzB4QjAsIDB4MDgsIDB4QzAsIDB4MzUsIDB4MDAsIDB4Q0YsIDB4ODEsIDB4REMsIDB4ODMsIDB4NzAsIDB4MDksIDB4QzIsIDB4MjMsCisweDEwLCAweEQ3LCAweDAwLCAweDVDLCAweDAwLCAweEYwLCAweDBELCAweEMwLCAweDNELCAweDA4LCAweDE3LCAweDE4LCAweDc0LAorMHgwMywgMHhGMCwgMHgzOSwgMHg2OCwgMHgzNywgMHgxMCwgMHhENywgMHgwMCwgMHg0QywgMHg4MiwgMHhCOCwgMHg1OSwgMHhDMCwKKzB4NzcsIDB4MjEsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4REYsCisweDQwLCAweDdDLCAweDExLCAweEYwLCAweDRELCAweEMyLCAweDg3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDBBLCAweEYxLAorMHgwRCwgMHg0MCwgMHhCNCwgMHgwMCwgMHhERiwgMHgwMSwgMHg1QywgMHgwMywgMHg3MCwgMHgwRCwgMHg4MiwgMHhBNywgMHgwMCwKKzB4REMsIDB4NDQsIDB4N0MsIDB4MDAsIDB4RjIsIDB4MEQsIDB4QzAsIDB4MzMsIDB4MDAsIDB4MTYsIDB4MjAsIDB4N0MsIDB4MDMsCisweEYwLCAweDA5LCAweEM1LCAweDM2LCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEM5LCAweDA3LAorMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwgMHgwMCwgMHhGQiwgMHgwMCwKKzB4RkMsIDB4MEIsIDB4MzAsIDB4MEUsIDB4QzAsIDB4MkMsIDB4MDAsIDB4RjMsIDB4MTAsIDB4RkMsIDB4MjcsIDB4RjAsIDB4MDksCisweEMwLCAweDM4LCAweDQwLCAweDMzLCAweDA1LCAweENDLCAweDAzLCAweEYwLCAweDBBLCAweEMwLCAweDBDLCAweDAwLCAweEYzLAorMHhBMCwgMHhFOCwgMHhDMCwgMHgzMCwgMHgxMywgMHhDMCwgMHgzRiwgMHgwMCwgMHgzQiwgMHgwMSwgMHhDQywgMHgwNSwgMHhGMCwKKzB4MDMsIDB4QzIsIDB4M0QsIDB4MDAsIDB4RkIsIDB4MDEsIDB4N0MsIDB4NDIsIDB4RjAsIDB4MDIsIDB4NDAsIDB4MDQsIDB4MjgsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDAwLCAweEQxLCAweDAwLCAweDc0LAorMHgwMiwgMHgxNCwgMHgwRCwgMHg2MCwgMHg2NCwgMHg4MSwgMHhENSwgMHgwMCwgMHg3NCwgMHgwRSwgMHhEMCwgMHgwRCwgMHg0MCwKKzB4MzUsIDB4ODEsIDB4RDEsIDB4MjMsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4NDAsIDB4RTUsIDB4MDAsIDB4QzEsIDB4MDAsCisweDEwLCAweDIwLCAweEIwLCAweDUxLCAweDQwLCAweDM3LCAweDAwLCAweDA1LCAweDQzLCAweDQ0LCAweDE1LCAweEQwLCAweDExLAorMHg0MywgMHgxMywgMHgwMCwgMHhEMSwgMHgwMCwgMHg3QywgMHgwRSwgMHhEMSwgMHgzMSwgMHg1MCwgMHgwNCwgMHgwNiwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzIsIDB4MDAsIDB4RDksIDB4MDAsIDB4NzQsIDB4MDMsCisweDkyLCAweDBELCAweDUwLCAweDQ0LCAweDA4LCAweEQxLCAweDAwLCAweDc0LCAweEMzLCAweERBLCAweDBELCAweDAwLCAweDE0LAorMHgyMCwgMHgxMSwgMHg0MCwgMHg2NCwgMHgwMywgMHhEMCwgMHg0OSwgMHg0MCwgMHhDNCwgMHgwMCwgMHg5MSwgMHgwOCwgMHg3NCwKKzB4NDAsIDB4OTAsIDB4NEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4MTUsIDB4MTQsIDB4NjQsIDB4MjMsIDB4RDEsIDB4MTksIDB4MDQsCisweDM3LCAweDAwLCAweDkxLCAweDA0LCAweDc0LCAweDA0LCAweEQ5LCAweDE5LCAweDQwLCAweDA1LCAweDAwLCAweDBBLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHg3NCwgMHgwMSwgMHg5MCwKKzB4MEMsIDB4NDAsIDB4MDQsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MzQsIDB4MDEsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MTEsIDB4MTAsCisweDAxLCAweDAwLCAweDI0LCAweDAzLCAweDUwLCAweDBDLCAweDQ2LCAweDA1LCAweEUxLCAweDkxLCAweDAyLCAweDU0LCAweDIwLAorMHg5MCwgMHgwMCwgMHg0MCwgMHgzMywgMHgwMCwgMHgxNSwgMHgwMCwgMHgwNSwgMHhCMywgMHhEOCwgMHgwMCwgMHgwMCwgMHgzMywKKzB4QzAsIDB4ODEsIDB4NDAsIDB4MjQsIDB4MDAsIDB4RDAsIDB4MDgsIDB4NjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDNFLCAweDAwLCAweEZCLCAweDAwLCAweDdDLCAweDAzLCAweEIwLCAweDBELAorMHg0MCwgMHgwNCwgMHgwMCwgMHhGMSwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxMSwKKzB4MDAsIDB4RUMsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MDQsIDB4MDUsIDB4MTMsIDB4MDIsIDB4NkMsIDB4MDAsIDB4QjAsCisweDAxLCAweDQwLCAweDNGLCAweDAwLCAweDE3LCAweDAwLCAweDZDLCAweDAzLCAweEYyLCAweEExLCAweEMwLCAweDI3LCAweDAwLAorMHg0MywgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDOCwgMHgwNSwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4NzAsIDB4MEYsIDB4QzAsCisweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAxLCAweEYwLCAweDBGLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLAorMHhEMCwgMHgwMywgMHgzMCwgMHgwQiwgMHhDMCwgMHgwNywgMHgxMCwgMHgzRiwgMHg4MCwgMHhFQywgMHg5MCwgMHhGMCwgMHgwMywKKzB4QzAsIDB4M0YsIDB4MDAsIDB4M0MsIDB4MDAsIDB4N0MsIDB4MUIsIDB4RjAsIDB4NDMsIDB4QzAsIDB4M0YsIDB4MDAsIDB4N0YsCisweDAwLCAweERDLCAweDAyLCAweEYwLCAweDBCLCAweEM4LCAweDE3LCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHg4MCwgMHgwRiwgMHgwNiwgMHhBRiwgMHgwMCwgMHhFQywgMHgwMiwgMHhFMCwgMHgxRSwgMHhDMCwgMHgwRiwKKzB4MDUsIDB4RkIsIDB4MEMsIDB4RkMsIDB4NTAsIDB4MzAsIDB4NDMsIDB4QzAsIDB4MkMsIDB4MDEsIDB4MzMsIDB4MDAsIDB4Q0MsCisweDAzLCAweDMwLCAweDFGLCAweEMwLCAweDBGLCAweDA1LCAweDIzLCAweDAxLCAweEVDLCAweDAzLCAweEIwLCAweDEzLCAweEMwLAorMHgzRiwgMHgwMSwgMHgzQiwgMHgwMSwgMHhDNCwgMHgwNiwgMHhCNiwgMHg4MywgMHhDMCwgMHgwRCwgMHgwMywgMHgzNywgMHgwMCwKKzB4QUMsIDB4MjcsIDB4MzAsIDB4MUUsIDB4QzAsIDB4MEUsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDEwLCAweDg3LCAweDAxLCAweDlELCAweDAxLCAweDQ0LCAweDAwLCAweEQwLCAweDBELCAweDQwLCAweDgzLCAweDAwLAorMHhGMSwgMHgwOCwgMHg3NCwgMHgxMCwgMHgxMCwgMHgwOSwgMHg0MCwgMHhCNCwgMHgwNywgMHg1NSwgMHgxMCwgMHg4NCwgMHgyQiwKKzB4MTAsIDB4NDEsIDB4QzMsIDB4NDQsIDB4MDAsIDB4MTEsIDB4MDEsIDB4QzQsIDB4MDcsIDB4QjAsIDB4MTUsIDB4QzAsIDB4QkQsCisweDEyLCAweEQxLCAweDAxLCAweDQ0LCAweDQyLCAweDEwLCAweEUxLCAweDQwLCAweDkwLCAweDAzLCAweDExLCAweDIzLCAweDQ0LAorMHgxMiwgMHgxMCwgMHgxMSwgMHg0MCwgMHgwQywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwKKzB4QTAsIDB4MDMsIDB4MDAsIDB4OEQsIDB4ODAsIDB4MTQsIDB4MDYsIDB4QzAsIDB4MEMsIDB4NDAsIDB4MDEsIDB4MDAsIDB4QzksCisweDA0LCAweDM2LCAweDQwLCAweDEwLCAweDY0LCAweDQ5LCAweDIwLCAweDA5LCAweDAxLCAweDA4LCAweDA0LCAweEMzLCAweDEwLAorMHg0NCwgMHg0MCwgMHgxMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHgwQiwgMHg5OCwgMHgwOCwgMHg0MiwgMHgzMywgMHg5NSwKKzB4MTUsIDB4MDAsIDB4NjQsIDB4MTMsIDB4MTAsIDB4NDgsIDB4NDgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODIsIDB4NzYsIDB4MTEsCisweDExLCAweDBDLCAweDUwLCAweDRDLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLAorMHg0NSwgMHgwMCwgMHhERCwgMHgyMiwgMHg1NCwgMHgwNCwgMHhEMSwgMHgwRCwgMHg0MCwgMHg0NywgMHgxMCwgMHhEMSwgMHgwMCwKKzB4NzQsIDB4MDksIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDUsIDB4MTAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MjEsCisweDQwLCAweDg0LCAweDAwLCAweDExLCAweDAxLCAweDU0LCAweDAzLCAweDgwLCAweDBELCAweDQyLCAweDM1LCAweDAwLCAweDE1LAorMHgxMCwgMHg2NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0NCwgMHgyNSwgMHgwNCwgMHhENSwgMHgxNCwgMHg1NCwgMHgwMywgMHgxMCwKKzB4MDksIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4NDcsCisweDAwLCAweDlGLCAweDA5LCAweDdELCAweDA0LCAweEYwLCAweDlELCAweEMwLCAweEM3LCAweDIwLCAweERCLCAweDgwLCAweDdDLAorMHgwOSwgMHgzMSwgMHg1MSwgMHhDMCwgMHg2NCwgMHgwMiwgMHgxMywgMHgwMiwgMHg0QywgMHgwMywgMHgzMCwgMHgyRCwgMHhDMCwKKzB4QzcsIDB4NDIsIDB4MTMsIDB4MDEsIDB4N0MsIDB4MDMsIDB4QjAsIDB4ODksIDB4QzAsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDIsCisweDJELCAweDAyLCAweEIxLCAweEI1LCAweEMwLCAweDg1LCAweDAwLCAweDA1LCAweDAzLCAweDdDLCAweDZGLCAweDI0LCAweDFDLAorMHg4MCwgMHg4QSwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgwRCwgMHgwMCwKKzB4QUYsIDB4MDAsIDB4RUMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEIsIDB4MTAsIDB4RkYsIDB4MDAsIDB4QkMsIDB4MDIsCisweEYyLCAweDkxLCAweEMwLCAweDdCLCAweDAwLCAweDJGLCAweDAwLCAweEJDLCAweDAzLCAweEYwLCAweDU3LCAweEMwLCAweDJELAorMHgwMCwgMHgzRSwgMHgwMCwgMHhBQywgMHg4MywgMHhGMCwgMHgwQiwgMHhDOCwgMHgzQiwgMHgwMCwgMHhGQiwgMHg0OSwgMHhEQywKKzB4MDIsIDB4RDAsIDB4MTIsIDB4QzAsIDB4MUEsIDB4NDAsIDB4RkIsIDB4MDAsIDB4RUMsIDB4MDMsIDB4RjQsIDB4NUYsIDB4QzAsCisweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDA1LCAweDgwLCAweDlGLAorMHgwNywgMHg2QywgMHgwMiwgMHg3MCwgMHg4RCwgMHhDMCwgMHgwNiwgMHgwMCwgMHhEMywgMHgyMCwgMHg1RSwgMHgwOSwgMHgzOCwKKzB4MDAsIDB4QzAsIDB4MjQsIDB4MDIsIDB4NUYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4OTMsIDB4MDAsCisweDFGLCAweDA2LCAweDRDLCAweDYzLCAweDMwLCAweDA5LCAweEMwLCAweDM0LCAweDIwLCAweDFCLCAweDIwLCAweDRFLCAweDAzLAorMHhGMSwgMHgwRCwgMHhDMCwgMHg5NiwgMHgwQSwgMHgxNywgMHgwMiwgMHg2QywgMHg0MywgMHgzMCwgMHgwRCwgMHhDMCwgMHgyOCwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4NDQsIDB4ODYsIDB4REQsIDB4QzIsCisweDQ0LCAweEU4LCAweDEyLCAweDFELCAweDQwLCAweDA0LCAweDAwLCAweEYxLCAweDAwLCAweDZDLCAweDAzLCAweDMxLCAweDAxLAorMHg0MCwgMHhGNCwgMHgwMiwgMHhERCwgMHgwNCwgMHhDNCwgMHgwMywgMHgxMCwgMHgwNSwgMHhDNiwgMHhFNywgMHg4MSwgMHgwRiwKKzB4NDAsIDB4RDAsIDB4MEIsIDB4QjEsIDB4MUQsIDB4NDAsIDB4M0QsIDB4MDAsIDB4NDEsIDB4MDAsIDB4NEMsIDB4MDIsIDB4NzAsCisweDA5LCAweDQ0LCAweDM0LCAweDEyLCAweERCLCAweDFCLCAweDA4LCAweDQzLCAweDEwLCAweDdELCAweDQwLCAweDRELCAweDAwLAorMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHgwMiwgMHgzMCwgMHgwRCwgMHgwMCwgMHgwNCwKKzB4MDYsIDB4MTAsIDB4NTgsIDB4NTAsIDB4MDAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MjQsIDB4MDIsIDB4OTAsIDB4MDAsIDB4NDAsCisweDMwLCAweDAwLCAweDhELCAweDAxLCAweDA0LCAweDI3LCAweDEwLCAweDA5LCAweDQwLCAweDIzLCAweDIxLCAweDA5LCAweDQyLAorMHgwNCwgMHgwRiwgMHg1MCwgMHhGNCwgMHg0OCwgMHgzMCwgMHgxMCwgMHg0MSwgMHgwMCwgMHgwNiwgMHgwMiwgMHhEQSwgMHgwMCwKKzB4MDAsIDB4NjIsIDB4NDAsIDB4Q0MsIDB4MDMsIDB4MDEsIDB4MDcsIDB4NTgsIDB4N0MsIDB4NDAsIDB4MEMsIDB4MjAsIDB4MDgsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDRBLCAweDAwLCAweDZELCAweDAxLCAweDg0LCAweDA3LAorMHgxMiwgMHgxRiwgMHg0NCwgMHg0OCwgMHgwMCwgMHhFMSwgMHgwMSwgMHgyNCwgMHgwNCwgMHgxMCwgMHg5QSwgMHg0MCwgMHg3OCwKKzB4ODAsIDB4NEQsIDB4MDEsIDB4ODQsIDB4MjcsIDB4MTAsIDB4MUEsIDB4NDIsIDB4NTksIDB4MDAsIDB4MzUsIDB4MDEsIDB4OTQsCisweDAzLCAweERDLCAweDE2LCAweDYwLCAweDcxLCAweDAyLCAweEUxLCAweDAxLCAweDg0LCAweDA2LCAweDUwLCAweDk0LCAweDQwLAorMHg3OCwgMHg4MywgMHhFOSwgMHgwOSwgMHhDNCwgMHgyNywgMHg1MCwgMHgxNiwgMHg0MCwgMHgzNSwgMHgyMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4ODIsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NEMsIDB4MjMsIDB4NzAsCisweDg4LCAweEMwLCAweDgwLCAweDQyLCAweEQzLCAweDAwLCAweDM0LCAweDAyLCAweDkwLCAweDg0LCAweEM0LCAweDMwLCAweDAwLAorMHg4RCwgMHgwMCwgMHgwQywgMHgwMywgMHgzMCwgMHg0NCwgMHg0MCwgMHgzMywgMHgwMSwgMHgwRCwgMHgwOCwgMHgwQywgMHgxMywKKzB4NTAsIDB4MDQsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MDMsIDB4MDgsIDB4MEMsIDB4ODMsIDB4RjAsIDB4QTAsIDB4RDAsIDB4MDIsCisweDAxLCAweDA3LCAweDg4LCAweDBDLCAweDIzLCAweDcwLCAweDRDLCAweEMwLCAweDQ4LCAweDQwLCAweDA4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhCOCwgMHgwRCwgMHgwMCwgMHhGRiwgMHgwOCwgMHhERSwgMHgwMywgMHhGNCwgMHgwRiwKKzB4QzIsIDB4MEQsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDEsIDB4RjAsIDB4OEYsIDB4QzIsIDB4M0YsIDB4MDAsIDB4RkYsCisweDQwLCAweEZDLCAweDAzLCAweEYwLCAweDAzLCAweEMwLCAweDFGLCAweDAwLCAweDNGLCAweDA4LCAweEJDLCAweDFCLCAweDMwLAorMHg4RSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhBNywgMHhBMCwgMHhGRCwgMHgwMiwgMHhGMCwgMHg4NywgMHhDMCwgMHgyRiwgMHg0MSwKKzB4RUYsIDB4MDgsIDB4N0MsIDB4MjMsIDB4QjAsIDB4MEQsIDB4QzQsIDB4MEIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEE4LCAweDBGLCAweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDAxLCAweEUxLCAweDA5LCAweEMwLAorMHgwNywgMHgwOCwgMHhERiwgMHgwNiwgMHg1QywgMHgwMywgMHhGMCwgMHgxRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5MywgMHgwMCwKKzB4NEMsIDB4MjcsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4N0MsIDB4MjMsIDB4RjgsIDB4MTEsCisweEMwLCAweDM2LCAweDAzLCAweERCLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDFELCAweEMwLCAweDI0LCAweDAwLCAweDEzLAorMHgyMCwgMHg0RCwgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTIsIDB4OTgsIDB4MjksIDB4MDAsIDB4NkQsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MEIsCisweDAwLCAweEZELCAweDEyLCAweDg0LCAweDAyLCAweEQwLCAweDBGLCAweDQ4LCAweDM4LCAweDAwLCAweDIxLCAweDAwLCAweDA0LAorMHgzMywgMHgxNCwgMHgwQSwgMHg0MCwgMHgzQiwgMHg0MCwgMHgyMiwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMCwgMHgwQSwgMHg0MCwKKzB4M0MsIDB4MDIsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEUsIDB4NTIsIDB4M0QsIDB4MDAsIDB4QzUsIDB4MDAsCisweDg0LCAweDAyLCAweDEwLCAweDBFLCAweDQwLCAweDRGLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNCwgMHgwMCwgMHhGOSwgMHgwMCwgMHg4RCwgMHgwMSwgMHg5NCwgMHgwRiwgMHhEMCwgMHgxQSwgMHg0MCwgMHg1QiwgMHgwOCwKKzB4RUQsIDB4MDEsIDB4OTQsIDB4MDcsIDB4RDAsIDB4M0UsIDB4NDAsIDB4NzgsIDB4NDAsIDB4QzEsIDB4MTEsIDB4QTUsIDB4MDcsCisweDE4LCAweDFFLCAweDQwLCAweDczLCAweDAwLCAweDIxLCAweDAxLCAweEI0LCAweDA3LCAweDUwLCAweDE3LCAweDQ2LCAweDc5LAorMHgwMSwgMHhFOSwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMiwgMHgxQywgMHg3MCwgMHg1OCwgMHgwMCwgMHgyMSwgMHgwMSwgMHg4NiwKKzB4NDcsIDB4MTAsIDB4MUUsIDB4NDEsIDB4MTMsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDIwLCAweEIzLCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweEI3LCAweDAwLCAweENELAorMHgwMCwgMHgwNCwgMHgxNywgMHhEOCwgMHgwQywgMHg0MCwgMHgzNCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgyNCwgMHgwMywgMHgxMCwKKzB4MkMsIDB4NDAsIDB4QjMsIDB4MDEsIDB4QzEsIDB4MDcsIDB4MzQsIDB4MDMsIDB4RDgsIDB4MkMsIDB4NDAsIDB4MzEsIDB4MDAsCisweEMxLCAweDQ4LCAweDc0LCAweDAyLCAweEQwLCAweDJDLCAweDY0LCAweDcxLCAweDgwLCAweEM1LCAweDBCLCAweDA0LCAweDlCLAorMHgxMiwgMHgzQywgMHg2MCwgMHg1QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwKKzB4MUYsIDB4MDAsIDB4NkYsIDB4MDAsIDB4REQsIDB4MEQsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MUYsIDB4MDAsIDB4NUYsIDB4MDAsCisweERDLCAweDQ5LCAweEYwLCAweDA3LCAweEQwLCAweDE0LCAweDAwLCAweDczLCAweDAxLCAweDZDLCAweDAxLCAweDMwLCAweEQ3LAorMHhDMCwgMHg5QiwgMHg0MCwgMHg3MywgMHgxMSwgMHg3QywgMHgwMSwgMHhGMCwgMHhCNywgMHg1NCwgMHgxNywgMHgwMCwgMHg3QiwKKzB4MDIsIDB4N0MsIDB4MDEsIDB4RjAsIDB4NDcsIDB4QzAsIDB4NUMsIDB4MDksIDB4NzMsIDB4ODAsIDB4OEMsIDB4MDUsIDB4MzUsCisweDA2LCAweEMwLCAweDVGLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDA1LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg2QywgMHg5OCwgMHhGMiwgMHgwMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgwRiwgMHgwMCwgMHg3QywKKzB4MDAsIDB4RjAsIDB4NDEsIDB4QzAsIDB4MDcsIDB4MDgsIDB4MEYsIDB4MDIsIDB4NUMsIDB4ODAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA3LCAweDAwLCAweDFGLCAweDgyLCAweDdDLCAweDgwLCAweEYwLCAweDgxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLCAweDA0LAorMHg3QywgMHgwMCwgMHhCOCwgMHgwMSwgMHhDMSwgMHgwNywgMHgwMCwgMHgwRiwgMHgxMiwgMHg3QywgMHgwMCwgMHhGMCwgMHgyMSwKKzB4QzUsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NjEsIDB4MDQsCisweDkzLCAweDAwLCAweDBELCAweDBFLCAweDMwLCAweDE5LCAweEMwLCAweDI3LCAweDAwLCAweDkzLCAweDAwLCAweDFDLCAweDAyLAorMHhCNCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5MywgMHgwMCwgMHg0RCwgMHgwMiwgMHhGMCwgMHgwOSwgMHhDOCwgMHgyNywKKzB4MDIsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MDIsIDB4RjIsIDB4ODksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsCisweDAyLCAweDMwLCAweDA5LCAweEM4LCAweDIzLCAweDIwLCAweDlCLCAweDAxLCAweDRELCAweDIyLCAweDcwLCAweDE5LCAweEMyLAorMHg0MSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMiwgMHg5NSwKKzB4MDIsIDB4NDQsIDB4MEUsIDB4MTQsIDB4MDksIDB4NDIsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsCisweDA5LCAweDQ4LCAweDI3LCAweDA4LCAweDkxLCAweDEyLCAweDQ0LCAweDQyLCAweEQwLCAweDA5LCAweDQ0LCAweDY3LCAweDEwLAorMHg5MSwgMHgwMCwgMHg3NCwgMHg0NiwgMHhEMCwgMHgzOSwgMHhFMCwgMHgyNSwgMHgwMCwgMHg5MywgMHgwMCwgMHg1QywgMHgwMiwKKzB4NTAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDMsIDB4NEMsIDB4MDIsIDB4MTAsIDB4QTksIDB4NDAsIDB4MDQsCisweDA4LCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEEwLCAweDI0LCAweDAwLCAweDkxLCAweDAyLAorMHg0NCwgMHgwMiwgMHg5MCwgMHg4OSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHgwMCwgMHg1NCwgMHgwMiwgMHgxMCwgMHgwOSwKKzB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4NDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MjAsIDB4RDUsCisweDAwLCAweDc0LCAweDEyLCAweEQ4LCAweDBELCAweDQ1LCAweDIzLCAweDAwLCAweDk1LCAweDAwLCAweDc0LCAweDAyLCAweDEwLAorMHgwOSwgMHg0MCwgMHgyNywgMHg0MCwgMHg5OSwgMHg4OCwgMHg0NCwgMHg0MiwgMHg1MCwgMHgwOSwgMHg0MiwgMHg3MSwgMHgwMCwKKzB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjgsIDB4MjAsIDB4MDEsIDB4ODUsIDB4MDQsIDB4MDQsCisweDFCLCAweDkwLCAweDI4LCAweDQwLCAweDIzLCAweDQxLCAweDgxLCAweDBDLCAweDA0LCAweDEyLCAweDEwLCAweDQ4LCAweDQwLAorMHgyMywgMHgwMSwgMHg4RCwgMHgwNCwgMHgwNiwgMHgxMiwgMHhEMCwgMHg4OCwgMHg0MCwgMHgyMywgMHgwMSwgMHhDMSwgMHgwMCwKKzB4MzYsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDQsIDB4MjMsIDB4MDMsIDB4ODEsIDB4MDAsIDB4MTQsIDB4MDIsIDB4NTAsIDB4MDgsCisweDQ0LCAweDIzLCAweDAyLCAweEM5LCAweDAwLCAweDQ0LCAweDIyLCAweDEwLCAweDBELCAweDYwLCAweDUwLCAweEE4LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwgMHg4NiwgMHgwMiwgMHgxMywgMHgwMCwgMHg0QywgMHgwOCwKKzB4QjAsIDB4MjUsIDB4QzAsIDB4ODcsIDB4MDIsIDB4MTMsIDB4MDIsIDB4NUMsIDB4MjgsIDB4MzAsIDB4QTEsIDB4QzAsIDB4ODMsCisweDQyLCAweDFGLCAweDBBLCAweDQ0LCAweDI4LCAweEQwLCAweDIxLCAweDAwLCAweDE3LCAweDAwLCAweDFGLCAweDQwLCAweDdDLAorMHg1MCwgMHhGMCwgMHgwMSwgMHg0MCwgMHg4NywgMHgwMCwgMHgxNywgMHgwMCwgMHg3QywgMHgyOCwgMHgzMCwgMHhFMSwgMHhDMSwKKzB4ODcsIDB4NDUsIDB4MUIsIDB4MTQsIDB4MEMsIDB4MDgsIDB4NzAsIDB4MDEsIDB4QzAsIDB4NzUsIDB4QzAsIDB4MEEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEE4LCAweDJGLCAweDEyLCAweEJGLCAweDA4LCAweEZDLCAweDBBLCAweDcwLAorMHgwQiwgMHhDMiwgMHgyRiwgMHgwMiwgMHg5RiwgMHgwQywgMHhGQywgMHgyMiwgMHhGMCwgMHg4QiwgMHhDMCwgMHgyRiwgMHgwMiwKKzB4QjMsIDB4MDgsIDB4N0MsIDB4MjIsIDB4RjIsIDB4NEYsIDB4QzAsIDB4MkYsIDB4MjIsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDBBLCAweEMwLCAweDI1LCAweDAzLCAweEI2LCAweDAwLCAweEQ4LCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDNGLAorMHg0MSwgMHhCNywgMHgwMCwgMHhEQywgMHgxMiwgMHhGNCwgMHgwRiwgMHhDMCwgMHg2NywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MkYsIDB4MDUsIDB4QkYsIDB4MDQsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MEIsCisweEMwLCAweDMzLCAweDAyLCAweDkzLCAweDA0LCAweDdDLCAweEQyLCAweEIwLCAweEM5LCAweEMwLCAweDJDLCAweDAwLCAweEIzLAorMHgwMCwgMHhDQywgMHgyMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyOCwgMHgwNSwgMHhCQiwgMHgwMCwgMHhEQywgMHgwMiwgMHhCMCwKKzB4MEIsIDB4QzAsIDB4MjcsIDB4MDIsIDB4QjMsIDB4MjAsIDB4NUMsIDB4OEEsIDB4RjIsIDB4NDksIDB4QzIsIDB4MkQsIDB4NDAsCisweEJFLCAweDAwLCAweENDLCAweDAyLCAweDMwLCAweDBBLCAweEQwLCAweDYwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxQywgMHgxOCwgMHgxNSwgMHgwMSwgMHgxRCwgMHgwOCwgMHg0NSwgMHhDOCwgMHhEMCwgMHgwMSwgMHg0OSwKKzB4MDcsIDB4MDIsIDB4MTEsIDB4MTQsIDB4MzAsIDB4MTAsIDB4MDAsIDB4QzEsIDB4NDIsIDB4ODQsIDB4MDQsIDB4MDEsIDB4MTAsCisweDQ0LCAweDIwLCAweDExLCAweDQxLCAweDgzLCAweDA1LCAweDIwLCAweDU3LCAweDQwLCAweDVDLCAweDA4LCAweDAxLCAweDAxLAorMHg0MCwgMHgwMywgMHgwMiwgMHgxMSwgMHgwMCwgMHg2NCwgMHgxNCwgMHhEMCwgMHhEMSwgMHg0MSwgMHg4MSwgMHg0NCwgMHg1NSwKKzB4MDAsIDB4MDQsIDB4MDEsIDB4NTAsIDB4MDEsIDB4NDAsIDB4NzAsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDIwLCAweDMxLCAweDA1LCAweDhELCAweDAwLCAweDM0LCAweEIyLCAweEQwLCAweDA4LCAweDQwLCAweDIzLAorMHgwMCwgMHg4MSwgMHgyQywgMHgzNCwgMHg1MiwgMHg5OCwgMHg0OCwgMHg0OCwgMHgyMCwgMHgwMywgMHg4MSwgMHhDOCwgMHgwNCwKKzB4MDIsIDB4MTAsIDB4NDksIDB4MDQsIDB4MjAsIDB4MTAsIDB4ODEsIDB4MDAsIDB4MTQsIDB4MjIsIDB4RDEsIDB4MDgsIDB4NDAsCisweDIzLCAweDIwLCAweDgxLCAweDAwLCAweDE2LCAweDEyLCAweEQwLCAweDA4LCAweDQwLCAweDIxLCAweDRCLCAweDhELCAweEMwLAorMHg0NSwgMHgwMiwgMHgxMiwgMHgwOSwgMHg0MCwgMHg0OCwgMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4MDAsIDB4MjUsIDB4MDEsIDB4OUQsIDB4MDMsIDB4NzQsIDB4MEEsIDB4RDIsIDB4MDksIDB4NDAsIDB4QTMsIDB4NDAsCisweDkxLCAweDQwLCAweDc0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDMwLCAweDAwLCAweDkxLCAweDAzLCAweDA0LCAweDAyLAorMHgxMCwgMHg0OSwgMHg1MCwgMHgyNiwgMHgxMiwgMHg5NSwgMHgwMCwgMHg1NCwgMHgwMywgMHg1MCwgMHhBOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OTEsIDB4MDAsIDB4NjQsIDB4MTIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjUsIDB4NDAsIDB4OTUsIDB4MDgsIDB4NDQsCisweDEyLCAweDUwLCAweDA5LCAweDQwLCAweDYwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorMHhBOCwgMHg2NywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDNCwgMHgyNywgMHgwMCwgMHg5MywKKzB4NjAsIDB4N0MsIDB4MDIsIDB4QjAsIDB4MTksIDB4RDAsIDB4MjQsIDB4NDAsIDB4OTMsIDB4MDIsIDB4NDQsIDB4MDIsIDB4MzAsCisweDA4LCAweEMyLCAweDI0LCAweDA4LCAweDkzLCAweDAyLCAweDVDLCAweDgyLCAweEYwLCAweDE5LCAweEM4LCAweDI3LCAweDQwLAorMHg5MSwgMHgxOCwgMHg1QywgMHgwNiwgMHhGMCwgMHgyOSwgMHhDMSwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0NCwgMHgwMiwKKzB4MjAsIDB4MjgsIDB4QzAsIDB4MTQsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsCisweDY1LCAweDAwLCAweDhGLCAweDAwLCAweDRDLCAweDRFLCAweEYwLCAweDA5LCAweEMxLCAweEU3LCAweDMwLCAweDlGLCAweDQwLAorMHg3QywgMHgyMiwgMHhGMCwgMHg0OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3RCwgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4NjUsIDB4MDAsIDB4OUYsIDB4MTksIDB4N0MsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsCisweDAxLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEM4LCAweEU3LCAweDQwLCAweDhCLCAweDEwLCAweDdDLCAweDgyLCAweEYwLAorMHgwOSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwNSwKKzB4ODAsIDB4MUYsIDB4MDYsIDB4NEUsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzQsIDB4MDQsIDB4ODAsIDB4MTMsIDB4MDAsIDB4N0UsCisweDgwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDA2LCAweDFGLCAweDEyLCAweDVDLCAweDIwLCAweEY4LCAweDIxLCAweEMwLAorMHgwNywgMHg5NCwgMHgxMywgMHgwMiwgMHgzQywgMHgwMCwgMHhGMCwgMHgyMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxQiwgMHgwQSwKKzB4N0MsIDB4MDAsIDB4RTEsIDB4MjAsIDB4QzAsIDB4ODAsIDB4MDQsIDB4MTcsIDB4MjAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4ODEsCisweEMyLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDFDLCAweDAwLAorMHg3RCwgMHgwMCwgMHhDNCwgMHgwMSwgMHg3MCwgMHg1NywgMHg0MCwgMHgxNSwgMHg4MCwgMHg1QiwgMHg0MCwgMHg2NCwgMHgwMSwKKzB4QjIsIDB4MDUsIDB4QzIsIDB4MUYsIDB4MjAsIDB4N0QsIDB4MTEsIDB4QzQsIDB4MjUsIDB4NzgsIDB4MDUsIDB4RTAsIDB4REIsCisweDAwLCAweDdCLCAweDA0LCAweEZDLCAweDJELCAweDcwLCAweDM3LCAweDQ0LCAweDE3LCAweDIwLCAweDUzLCAweDQwLCAweDU4LAorMHgwMSwgMHg3MCwgMHgwNSwgMHhEMCwgMHgxQywgMHgwMCwgMHg3MSwgMHgwMCwgMHhDNCwgMHgwNSwgMHgxNCwgMHgxNywgMHg0MCwKKzB4NTEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsCisweDIwLCAweDA2LCAweDAzLCAweDUwLCAweDNDLCAweDQwLCAweDMwLCAweDAwLCAweEMxLCAweDAwLCAweDc0LCAweDAzLCAweDUwLAorMHgwQywgMHg2MCwgMHhGMywgMHgwOCwgMHhERCwgMHgwMiwgMHgxNCwgMHgwRiwgMHhEMSwgMHgwQywgMHg0MCwgMHgxMywgMHgwMiwKKzB4QzEsIDB4MDMsIDB4MzQsIDB4MEYsIDB4NDEsIDB4NEMsIDB4NjAsIDB4MzcsIDB4ODAsIDB4ODEsIDB4MDEsIDB4MzQsIDB4MDMsCisweDkwLCAweDBDLCAweDQwLCAweDMyLCAweDAwLCAweEM1LCAweDAzLCAweDQ0LCAweDFGLCAweDUwLCAweDRDLCAweDQwLCAweDUwLAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4OCwgMHgyOCwgMHgwMCwgMHhBRCwgMHgwMCwKKzB4ODYsIDB4NDEsIDB4NTgsIDB4MUUsIDB4NjAsIDB4M0QsIDB4MTAsIDB4RTksIDB4NDAsIDB4QjQsIDB4MzMsIDB4MTAsIDB4NEUsCisweDQwLCAweDM5LCAweDA4LCAweEVELCAweDAwLCAweDg0LCAweDAzLCAweDUwLCAweDRFLCAweDQwLCAweDE5LCAweDA4LCAweEU5LAorMHgwMCwgMHg5NCwgMHgwOSwgMHg1MCwgMHgyNiwgMHg0MCwgMHgzQiwgMHgwMywgMHhBMSwgMHg0MCwgMHhCNiwgMHgxMywgMHg1MCwKKzB4OEUsIDB4NDAsIDB4MDgsIDB4MDQsIDB4QzEsIDB4MDIsIDB4ODQsIDB4NDAsIDB4NTAsIDB4MEUsIDB4NDAsIDB4MDUsIDB4MjAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweDEwLCAweDY4LCAweDAwLCAweENELCAweDAxLCAweDg1LAorMHgwNywgMHg3MCwgMHgxNywgMHhDMCwgMHg3OCwgMHgwMSwgMHhFMSwgMHgwMSwgMHhCNCwgMHgwNywgMHg1MCwgMHg1RSwgMHg0MCwKKzB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4OUMsIDB4ODUsIDB4RDAsIDB4MUUsIDB4NjAsIDB4N0IsIDB4MDAsIDB4RTEsIDB4MDEsCisweEI0LCAweDA2LCAweDcwLCAweDFFLCAweEMwLCAweDdCLCAweDQwLCAweEEzLCAweDAxLCAweEJDLCAweDFGLCAweEYxLCAweDVGLAorMHhDMCwgMHg3QSwgMHgwMCwgMHhFNywgMHgwMSwgMHg4RCwgMHgwNywgMHg3MCwgMHgxRSwgMHhDMCwgMHg0NCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MkQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDEsCisweDcwLCAweDBELCAweEMwLCAweEI3LCAweDAwLCAweERGLCAweDAwLCAweDZDLCAweDQzLCAweEYxLCAweDJELCAweEMxLCAweDM3LAorMHgzMCwgMHhEQywgMHgwMCwgMHg3QywgMHg4MSwgMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4NzAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDQsIDB4OUIsIDB4MDAsIDB4NTgsIDB4ODMsIDB4RkEsIDB4MEQsIDB4Q0MsCisweDA2LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAwLCAweEIwLCAweDBELCAweEMwLCAweDQzLCAweDIwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg2RiwgMHgwMCwgMHhGMywgMHg0MSwgMHhDQywgMHgxMywgMHhGMCwKKzB4MUYsIDB4QzAsIDB4RkYsIDB4MDQsIDB4RkIsIDB4OTEsIDB4RUMsIDB4MDcsIDB4ODAsIDB4OUYsIDB4QzEsIDB4NUMsIDB4MDgsCisweDdCLCAweDg5LCAweENDLCAweDA2LCAweDMwLCAweDFGLCAweEMxLCAweDVGLCAweDAwLCAweEIzLCAweDAxLCAweEY4LCAweEE3LAorMHhCMCwgMHgxRiwgMHhEMCwgMHg3QywgMHgwMCwgMHhGRiwgMHgyMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg3RCwKKzB4MDIsIDB4NzcsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4QjAsIDB4MUYsIDB4QzAsIDB4MDMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweEFELCAweDQwLCAweEExLCAweDMwLCAweDg0LCAweDAzLCAweEQwLCAweDBFLAorMHg0NSwgMHgzRiwgMHgwMCwgMHhFMSwgMHgwMCwgMHg4NCwgMHg2MywgMHgxMCwgMHgwRSwgMHg0OCwgMHgwQywgMHgwMiwgMHgzMSwKKzB4MEMsIDB4QzUsIDB4MjIsIDB4MTAsIDB4MEUsIDB4NDMsIDB4OUIsIDB4MDIsIDB4QTEsIDB4MDIsIDB4QjQsIDB4MDEsIDB4NTAsCisweEEyLCAweDQwLCAweDM4LCAweDgwLCAweEVELCAweDEwLCAweEI0LCAweDAzLCAweDcwLCAweDRFLCAweDUwLCAweDE4LCAweDQ3LAorMHhGQiwgMHgwMCwgMHhDNCwgMHgwOCwgMHgxNCwgMHgwQSwgMHg0OCwgMHg1NywgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MjgsIDB4MDAsIDB4NjEsIDB4MDgsIDB4ODQsIDB4NjMsIDB4RDAsIDB4ODYsIDB4NDAsCisweDNCLCAweDAwLCAweEUxLCAweDAwLCAweDI0LCAweDAzLCAweDE0LCAweDBDLCAweDUwLCAweDE4LCAweDQ0LCAweDYxLCAweDAwLAorMHhBNCwgMHgwMCwgMHgxNCwgMHgwRSwgMHg0MCwgMHgzMywgMHg0NCwgMHgyMSwgMHgxMCwgMHhCNCwgMHgwMywgMHgxMSwgMHgwRSwKKzB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4NDMsIDB4RDAsIDB4MEUsIDB4NDQsIDB4MzksIDB4ODAsIDB4RjUsCisweDAwLCAweDg0LCAweDQzLCAweDkwLCAweDBFLCAweDQwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHgyMCwgMHgyMywgMHgxNCwgMHgwMSwgMHgyMCwgMHgwNCwgMHgwRSwgMHhEMCwgMHgxOCwgMHg0MCwgMHhCMywKKzB4MDQsIDB4QzEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MkMsIDB4NDEsIDB4NDAsIDB4MDAsIDB4MDEsIDB4MDMsIDB4NjQsCisweDAwLCAweDExLCAweDJDLCAweDQwLCAweEYzLCAweDAwLCAweDAxLCAweDEyLCAweDM0LCAweDAzLCAweDUwLCAweDM4LCAweDQwLAorMHgzMCwgMHgwMCwgMHhDRCwgMHgwMywgMHg3NiwgMHgwNywgMHg1MCwgMHgwRCwgMHg0MCwgMHg1NCwgMHgwMCwgMHg0OSwgMHgwQywKKzB4MDUsIDB4MEUsIDB4MTAsIDB4OUMsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweDI4LCAweDI1LCAweDAwLCAweDkzLCAweDAxLCAweDQ1LCAweDBBLCAweEY4LCAweDA5LCAweEMwLCAweEJGLCAweDQwLAorMHhGMywgMHgwMCwgMHhFQywgMHgwRiwgMHgzMCwgMHgyRiwgMHhDMCwgMHg2NCwgMHgwMCwgMHg5MywgMHgxMiwgMHg2QywgMHgwMywKKzB4MzAsIDB4MEUsIDB4QzAsIDB4MTcsIDB4MTAsIDB4MTMsIDB4MDMsIDB4N0MsIDB4ODMsIDB4QjAsIDB4MTgsIDB4QzAsIDB4M0MsCisweDIwLCAweDlGLCAweDAwLCAweEY0LCAweDA3LCAweEYwLCAweDVGLCAweEMwLCAweDc1LCAweDAwLCAweDk3LCAweDIyLCAweDA0LAorMHgyRiwgMHhCMCwgMHhCQywgMHhDMCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4MDAsIDB4ODcsIDB4MDAsIDB4MEYsIDB4ODAsIDB4N0UsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsCisweDgwLCAweDdDLCAweDEzLCAweDcwLCAweDBELCAweEMwLCAweDg3LCAweDAwLCAweDk3LCAweDAyLCAweDVDLCAweDBBLCAweEYwLAorMHgwRCwgMHhFMCwgMHgxNywgMHgwMCwgMHg5RiwgMHgyMCwgMHgzQywgMHgwOCwgMHhGMCwgMHhDMSwgMHhDOCwgMHgzNywgMHgwMCwKKzB4OUYsIDB4MDQsIDB4N0MsIDB4MDMsIDB4RjEsIDB4MEQsIDB4QzAsIDB4QTcsIDB4NDQsIDB4REYsIDB4MDIsIDB4N0MsIDB4ODgsCisweEYyLCAweDBELCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDA4LAorMHgyRCwgMHgwMCwgMHg5RiwgMHgwMCwgMHhFQywgMHg0MiwgMHhFMCwgMHgwMywgMHhFMCwgMHgzRiwgMHgwMCwgMHhERiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4RjgsIDB4MEUsIDB4RDAsIDB4MkMsIDB4MDIsIDB4M0YsIDB4MTAsIDB4Q0QsIDB4MDcsIDB4MzQsIDB4MEYsCisweEMxLCAweDNDLCAweDA0LCAweDNGLCAweDAwLCAweEZDLCAweDAyLCAweEIxLCAweDhGLCAweEMwLCAweDNFLCAweDAwLCAweEJGLAorMHgwMCwgMHhDQywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHg3NCwgMHg0MCwgMHhGNywgMHgwMCwgMHhGQywgMHgxNywgMHgzMCwKKzB4MEYsIDB4MDAsIDB4MTAsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4MjAsIDB4QzYsCisweDA4LCAweDFELCAweDgxLCAweDQ0LCAweDQ0LCAweEQwLCAweDExLCAweDQxLCAweDM3LCAweDAwLCAweERELCAweDAwLCAweDc0LAorMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHhDNCwgMHgwOCwgMHgxOSwgMHgwMiwgMHg0QywgMHgwQSwgMHgxMCwgMHgwRCwgMHg0MCwKKzB4ODQsIDB4MDAsIDB4OTcsIDB4MDMsIDB4NzQsIDB4MDYsIDB4QjgsIDB4MUQsIDB4MDAsIDB4MzQsIDB4MDAsIDB4OEQsIDB4MDEsCisweDU0LCAweDAzLCAweDEwLCAweDBELCAweDQwLCAweDI0LCAweDQyLCAweEQzLCAweDA5LCAweDc0LCAweDA1LCAweDEwLCAweDA1LAorMHg0OCwgMHgxNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHg2NCwgMHgwMCwKKzB4OUQsIDB4MDEsIDB4NjQsIDB4MDQsIDB4RDAsIDB4MTksIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsIDB4NTQsIDB4MDMsCisweEQwLCAweDBELCAweDQwLCAweDM0LCAweDAwLCAweENELCAweDAzLCAweDQ0LCAweDE5LCAweDEwLCAweDBELCAweDUwLCAweDE0LAorMHgwMCwgMHgxOCwgMHgwMSwgMHg3NCwgMHgyMSwgMHgxMCwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHg5RCwgMHgwNCwgMHg0NCwKKzB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4ODQsIDB4NDAsIDB4REQsIDB4MDIsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsCisweDA0LCAweDA4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDAwLCAweDAwLCAweDBELAorMHgwMSwgMHgwNSwgMHgwMCwgMHhEMSwgMHgwOCwgMHg0OCwgMHgzMywgMHg4MCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MTAsIDB4MEQsIDB4NjAsIDB4MTAsIDB4MTAsCisweDg1LCAweDAwLCAweDM0LCAweDAwLCAweDkxLCAweDAxLCAweDQwLCAweDMwLCAweDAwLCAweDlELCAweDgwLCAweDE2LCAweDAzLAorMHgxMCwgMHgwQywgMHg1MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHg3NCwgMHgwMCwgMHg1MCwgMHgxOCwgMHg1MCwgMHg0MSwKKzB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4MjYsIDB4MDAsIDB4MUYsIDB4MDAsCisweDZDLCAweDAyLCAweEYxLCAweDAxLCAweDQwLCAweDNGLCAweDAwLCAweERGLCAweDAwLCAweERDLCAweDAzLCAweEQwLCAweDBGLAorMHhDMCwgMHgzNCwgMHgwMCwgMHg1RCwgMHgwMCwgMHg0QywgMHgwMSwgMHgzMCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHgxRiwKKzB4MDAsIDB4N0MsIDB4MDEsIDB4MTEsIDB4MDUsIDB4QzAsIDB4M0UsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsCisweDBELCAweEMwLCAweDA0LCAweDAwLCAweERGLCAweDgwLCAweDdDLCAweDAwLCAweDMxLCAweDBELCAweEMwLCAweDAwLCAweEMwLAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGRSwKKzB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDBGLCAweDAwLCAweDNCLCAweDAwLCAweERDLCAweDAwLCAweEYwLCAweDBGLCAweEM0LCAweDNGLCAweDA4LCAweDM3LCAweDAwLAorMHhCQywgMHgwMCwgMHhGMiwgMHgwMiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwKKzB4QzAsIDB4MEYsIDB4MDAsIDB4RjcsIDB4NDAsIDB4RkMsIDB4MDAsIDB4QjAsIDB4MEYsIDB4QzAsIDB4MTYsIDB4MjEsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDVGLCAweDAwLCAweDczLCAweDAxLCAweENDLCAweDA3LAorMHhGMCwgMHgxRiwgMHhDMCwgMHgzQywgMHgwMSwgMHhCMywgMHgwMSwgMHhBQywgMHgwNSwgMHhGMCwgMHg0RiwgMHhDMCwgMHg0RCwKKzB4MDgsIDB4M0YsIDB4MDMsIDB4NEMsIDB4MDQsIDB4RjAsIDB4MEYsIDB4QzAsIDB4NEYsIDB4NDAsIDB4MzMsIDB4MDEsIDB4RkMsCisweDBDLCAweDcxLCAweDkwLCAweEMwLCAweDRDLCAweDAwLCAweEEzLCAweDAxLCAweEVELCAweDA0LCAweEYwLCAweDEyLCAweEMwLAorMHg0RiwgMHgwMCwgMHgzRiwgMHgwMiwgMHhDRSwgMHgyNiwgMHgzNCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwOCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTgsIDB4NTMsIDB4MDAsIDB4NTEsIDB4MDEsIDB4RUMsIDB4MDcsIDB4RDAsCisweDFGLCAweDQwLCAweDc0LCAweDAwLCAweDk1LCAweDAxLCAweDUxLCAweDA2LCAweEQwLCAweDlGLCAweDQyLCAweDQ0LCAweDAwLAorMHgxRCwgMHgwMCwgMHg0QywgMHgwNCwgMHhEMCwgMHgzRiwgMHg0MCwgMHg0NywgMHgwMCwgMHgxMSwgMHgwMSwgMHg3NCwgMHgwMCwKKzB4MTAsIDB4NDUsIDB4NDQsIDB4NDUsIDB4MDAsIDB4MTEsIDB4NDEsIDB4NDQsIDB4MDAsIDB4RDAsIDB4MTEsIDB4NDAsIDB4NDcsCisweDAwLCAweDk3LCAweDgyLCAweDZDLCAweDEwLCAweDEwLCAweDExLCAweDQ4LCAweDBGLCAweDAwLCAweDBDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgyNSwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMywgMHg1MSwgMHgwQywKKzB4NDAsIDB4QjAsIDB4MDAsIDB4NDUsIDB4MDAsIDB4MDQsIDB4MDEsIDB4NTAsIDB4MEMsIDB4NDAsIDB4MjEsIDB4MDAsIDB4MDUsCisweDA0LCAweDI0LCAweDAzLCAweEQwLCAweDJDLCAweDQwLCAweDA3LCAweDAwLCAweDAxLCAweDAwLCAweDc0LCAweDEwLCAweEQwLAorMHgwOSwgMHg0MCwgMHgzNSwgMHgwMCwgMHg5NSwgMHg4MCwgMHgxNCwgMHg1MCwgMHhEMSwgMHgwMCwgMHg0MCwgMHgwMSwgMHgwOCwKKzB4NEQsIDB4MDYsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NEYsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDI3LCAweDAwLCAweEMxLCAweDAwLCAweDY0LCAweDAzLCAweEQwLCAweDBELCAweDQwLAorMHgzNCwgMHgwMCwgMHg1NSwgMHgwNiwgMHg1NCwgMHgwMiwgMHhEMCwgMHgwRCwgMHg0MCwgMHg0NCwgMHgwMCwgMHgwRCwgMHg4MSwKKzB4NDQsIDB4MjMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MTEsIDB4MDQsIDB4NzQsIDB4NDYsIDB4MTAsIDB4MEQsCisweDQwLCAweDM1LCAweDQwLCAweDE1LCAweDAyLCAweDUwLCAweDA2LCAweEQwLCAweDExLCAweDYwLCAweDA3LCAweDAwLCAweDk1LAorMHgwOCwgMHg0NSwgMHgwNiwgMHgxMCwgMHgxMSwgMHg0MCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4QTgsIDB4NzMsIDB4MDAsIDB4OTMsIDB4MDIsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4RDAsIDB4MzQsCisweDgwLCAweEM3LCAweDAzLCAweDZDLCAweDFCLCAweEYwLCAweDBDLCAweEMwLCAweDY1LCAweDAxLCAweDlGLCAweDAxLCAweDZDLAorMHg0RSwgMHhGMCwgMHgwRCwgMHhDMCwgMHg4MywgMHgwMSwgMHgxMywgMHgwMCwgMHgzQywgMHgwNCwgMHg3MCwgMHgzRCwgMHhDMCwKKzB4RjUsIDB4MDgsIDB4ODcsIDB4MDMsIDB4NTQsIDB4NDQsIDB4RjAsIDB4MzEsIDB4QzEsIDB4MDcsIDB4MTEsIDB4MUYsIDB4MDUsCisweDQ0LCAweDA2LCAweDMwLCAweDMxLCAweEMwLCAweDAzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNywgMHg4MCwgMHhGRCwgMHg0MCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMiwgMHgwRiwgMHhDMCwgMHgzQiwgMHgyMCwKKzB4RkYsIDB4MDAsIDB4RTgsIDB4OTYsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MjAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDYsCisweEUwLCAweDBELCAweEM0LCAweDRFLCAweDAyLCAweDNGLCAweDQxLCAweEY0LCAweDAyLCAweEYwLCAweDJGLCAweEMwLCAweEJGLAorMHgwMCwgMHhCQiwgMHgwMiwgMHhDNCwgMHgwMiwgMHhEMCwgMHgwMywgMHg0MSwgMHgwRiwgMHgwMCwgMHgxRiwgMHgwMSwgMHhGQywKKzB4MDAsIDB4RjAsIDB4MDMsIDB4QzQsIDB4M0YsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDA4LCAweEE1LCAweDAwLCAweDkzLCAweDAyLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg2RSwgMHgwQiwgMHgzMCwgMHgwRCwgMHhDMCwgMHhBNCwgMHg4MCwgMHg5RiwgMHgwMiwgMHg3QywgMHgwMiwgMHhGMCwKKzB4OEQsIDB4QzIsIDB4MDcsIDB4MDIsIDB4MUUsIDB4MDAsIDB4N0MsIDB4MTgsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzYsIDB4MDEsCisweDlGLCAweDA2LCAweDZDLCAweDA4LCAweEYyLCAweDgxLCAweEM4LCAweDE2LCAweDQ0LCAweDgzLCAweDAyLCAweDRELCAweDhBLAorMHgzMCwgMHgyOSwgMHhDNCwgMHgwOCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwKKzB4MjQsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MEQsIDB4NDAsIDB4M0YsIDB4MDAsIDB4REQsIDB4MDcsCisweDc2LCAweDFFLCAweEYwLCAweEFGLCAweDQwLCAweDQ0LCAweDAwLCAweDlGLCAweDgwLCAweDc0LCAweDRGLCAweEQwLCAweDFGLAorMHhDMCwgMHhDNCwgMHgwMCwgMHgxRiwgMHgwQywgMHg3MCwgMHgwMiwgMHhGMCwgMHgwQywgMHg0MCwgMHhGMCwgMHgwOCwgMHg5RCwKKzB4MDIsIDB4NTAsIDB4MDIsIDB4RDIsIDB4MTEsIDB4NTAsIDB4NTQsIDB4MDQsIDB4OTEsIDB4MDksIDB4NjQsIDB4MDIsIDB4MzQsCisweDM5LCAweEMwLCAweDZDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDIwLCAweDIyLAorMHgwMCwgMHhDMSwgMHg0MCwgMHgyNCwgMHgwMywgMHgxMCwgMHg0QywgMHg2MCwgMHgzMywgMHgwMCwgMHg0RCwgMHgwNCwgMHgzNCwKKzB4MUUsIDB4MTAsIDB4MUMsIDB4NDAsIDB4NDAsIDB4MDAsIDB4ODksIDB4MDAsIDB4MzYsIDB4MTEsIDB4RDAsIDB4NEMsIDB4NjAsCisweDAyLCAweDA0LCAweDA5LCAweDAwLCAweDM0LCAweDBDLCAweERBLCAweDAwLCAweDAwLCAweDgyLCAweDAyLCAweDA4LCAweDAwLAorMHgxNCwgMHgwMCwgMHhEMCwgMHgyMCwgMHg0MCwgMHg0MCwgMHgwMCwgMHgwOSwgMHg4MywgMHg2NCwgMHgzMiwgMHg5MCwgMHhDOCwKKzB4NDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MDgsIDB4N0EsIDB4NDAsCisweEUxLCAweDAxLCAweDM0LCAweDA3LCAweDUwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweDZELCAweDgxLCAweEY2LCAweDI2LAorMHhEMCwgMHgxQywgMHg0MCwgMHg0OCwgMHgwMCwgMHgyNSwgMHg0OSwgMHhCNiwgMHgyNSwgMHhEMCwgMHg5RSwgMHg0MCwgMHg0OCwKKzB4MDAsIDB4MkQsIDB4MDEsIDB4QjQsIDB4MDUsIDB4RDEsIDB4NTMsIDB4NDAsIDB4NEEsIDB4MDEsIDB4N0QsIDB4ODEsIDB4OTQsCisweDI0LCAweEQ4LCAweDEyLCAweDYwLCAweDRDLCAweDgwLCAweDY5LCAweDIxLCAweEE0LCAweDI0LCAweDEwLCAweDEzLCAweDQwLAorMHgzQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHhBMiwgMHgwMCwgMHg4MSwKKzB4MDAsIDB4MkMsIDB4MjMsIDB4MTAsIDB4MEMsIDB4QzAsIDB4MzMsIDB4MDAsIDB4NEYsIDB4MDAsIDB4MzQsIDB4MjIsIDB4MTAsCisweDBDLCAweEMxLCAweDYwLCAweDA1LCAweDg5LCAweDA3LCAweDNDLCAweDE1LCAweEYwLCAweDhDLCAweEMwLCAweDAzLCAweDAyLAorMHgwRiwgMHgwMSwgMHgzOCwgMHg0NiwgMHhGMCwgMHg1MCwgMHhFOCwgMHg0MiwgMHgxMCwgMHhDRCwgMHgxNCwgMHgxNCwgMHgyMywKKzB4RjAsIDB4ODAsIDB4QzAsIDB4MDAsIDB4MDAsIDB4Q0IsIDB4MTAsIDB4NEMsIDB4MjMsIDB4QjIsIDB4MkQsIDB4RTAsIDB4NEEsCisweDY4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDJELCAweDAwLCAweEZGLCAweDgwLAorMHhGQywgMHgwNywgMHg3MCwgMHgxRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHg3RiwgMHgwOCwgMHhGQywgMHgyMiwgMHg3MCwgMHgwRCwKKzB4RDAsIDB4MjcsIDB4MDIsIDB4QkUsIDB4MDAsIDB4RkMsIDB4MjMsIDB4RjAsIDB4OEYsIDB4QzAsIDB4MEYsIDB4MDIsIDB4MzUsCisweDQwLCAweEZDLCAweDAzLCAweDcwLCAweDBGLCAweEU4LCAweDNELCAweDAwLCAweDdGLCAweDAwLCAweERDLCAweDIzLCAweEYwLAorMHgwMywgMHhDOCwgMHgwOSwgMHgwMiwgMHhGNywgMHgwMCwgMHhEQywgMHgyMywgMHhEMCwgMHg4MywgMHhEMCwgMHgwQiwgMHg2MCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsIDB4NjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsCisweDIzLCAweEYwLCAweDFELCAweEQwLCAweDM0LCAweDAwLCAweDU3LCAweDAwLCAweDdDLCAweDAzLCAweDMwLCAweERDLCAweEMwLAorMHg2NSwgMHgyMCwgMHg5QiwgMHgyMCwgMHg2QywgMHgwNCwgMHhCMCwgMHg5RCwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHg4MCwKKzB4N0MsIDB4MDcsIDB4QkMsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4NUYsIDB4MDEsIDB4NkUsIDB4MDcsIDB4MzksIDB4MDEsCisweEMwLCAweDA3LCAweDgwLCAweDVGLCAweDAwLCAweDRDLCAweDAxLCAweDMzLCAweDA5LCAweEMwLCAweDQwLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHgzOSwgMHgwMCwgMHhBQiwgMHgwMCwgMHhCNCwgMHgxMywKKzB4RDAsIDB4MkMsIDB4NDAsIDB4MzgsIDB4MTEsIDB4NjEsIDB4MDAsIDB4OEMsIDB4MDIsIDB4MTgsIDB4NEUsIDB4NDEsIDB4MjgsCisweDMwLCAweDMxLCAweDAwLCAweDg0LCAweDAzLCAweDExLCAweENDLCAweDQwLCAweDA4LCAweDg4LCAweDJELCAweDAwLCAweEI0LAorMHgwMywgMHgxMCwgMHgwQSwgMHg0MiwgMHgzQiwgMHg4MCwgMHg2RCwgMHgwMCwgMHg5NCwgMHgwMywgMHgxNCwgMHgwMiwgMHg0MCwKKzB4MEIsIDB4MDAsIDB4N0QsIDB4QzAsIDB4QzQsIDB4MDEsIDB4QjAsIDB4MEEsIDB4NDAsIDB4NEQsIDB4MDAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDY5LCAweDAwLCAweEExLCAweDAzLCAweDk0LCAweDA3LCAweDUyLAorMHg1RSwgMHg2MCwgMHg3MCwgMHgwMywgMHg2NSwgMHg0MywgMHhCNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg2RCwgMHgwMCwKKzB4QTUsIDB4MDEsIDB4ODQsIDB4MDQsIDB4MTAsIDB4MUUsIDB4NDAsIDB4QzksIDB4MDAsIDB4MjUsIDB4MDEsIDB4QjQsIDB4MDcsCisweDEwLCAweDE2LCAweDQ0LCAweDRCLCAweDEwLCAweEZELCAweDAxLCAweDk0LCAweDg3LCAweDEwLCAweDE2LCAweDQ0LCAweDVCLAorMHgyMCwgMHhFRCwgMHgwMSwgMHhBNCwgMHgwNSwgMHgxMCwgMHgxQywgMHg2NCwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjgsIDB4MjMsIDB4MDQsIDB4ODksIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsCisweDQwLCAweDMwLCAweDAwLCAweDQxLCAweDQ1LCAweDMwLCAweDJFLCAweDEwLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweEM1LAorMHgyMCwgMHgwNCwgMHgxRiwgMHgxMCwgMHgwQywgMHg1MCwgMHhGMSwgMHgwMSwgMHhDRCwgMHg0OCwgMHgzNCwgMHgwRiwgMHgxMiwKKzB4M0MsIDB4NDEsIDB4RjMsIDB4MDAsIDB4Q0QsIDB4MjIsIDB4MTQsIDB4MTMsIDB4MTAsIDB4MUMsIDB4NDAsIDB4RjMsIDB4MEMsCisweENELCAweDA3LCAweDI0LCAweDRGLCAweDEwLCAweDRDLCAweDQ4LCAweDU5LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwgMHg5RiwgMHgwMCwgMHg3MywgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4MTQsIDB4MDAsIDB4NzcsIDB4MDAsIDB4QjQsIDB4MDEsIDB4QjUsIDB4MDUsIDB4QzAsIDB4REQsIDB4MDEsIDB4NzcsIDB4MDgsCisweEVDLCAweDBELCAweEIwLCAweDA1LCAweEUwLCAweERELCAweDAwLCAweDdGLCAweDBCLCAweEZDLCAweDE1LCAweEIxLCAweDM3LAorMHhDMSwgMHhEQiwgMHgxNiwgMHg3RiwgMHgwMiwgMHhERCwgMHgwOSwgMHgzMCwgMHgyNywgMHhDMSwgMHg1RiwgMHgxNCwgMHg3RiwKKzB4MDQsIDB4RTQsIDB4MUQsIDB4MTAsIDB4MTcsIDB4NDUsIDB4NUMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDgwLCAweDA1LCAweDAwLCAweDFGLCAweDI0LCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHg4MCwgMHg0QywgMHgxMCwgMHhGMCwgMHgyMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxMiwgMHgwMCwgMHg3RCwKKzB4MjAsIDB4RjAsIDB4MDEsIDB4MDAsIDB4ODYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4NDgsIDB4RjIsIDB4MDEsIDB4QzAsCisweDg3LCAweDAwLCAweDFGLCAweDBBLCAweDY0LCAweDIwLCAweEYwLCAweDAxLCAweEMxLCAweDg3LCAweDAwLCAweDFGLCAweDQwLAorMHg1RCwgMHgwMCwgMHhGNCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsIDB4ODksIDB4QzAsIDB4MjcsIDB4MDAsCisweDkzLCAweDgwLCAweDdDLCAweDBBLCAweDMwLCAweDE5LCAweDQwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDZDLCAweDAyLAorMHhGMCwgMHgxOSwgMHhDOCwgMHgyNiwgMHgwMCwgMHg5MywgMHgwMSwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OTMsIDB4MTAsIDB4NUMsIDB4MDIsIDB4RjAsIDB4MTksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDIsIDB4NkMsCisweDBBLCAweDMwLCAweDU4LCAweEM0LCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgyMCwgMHgyNiwgMHgwMCwgMHg4RCwgMHgwMCwgMHhDNCwgMHgwMiwgMHhEOCwgMHgxQiwgMHg0MCwgMHgyNywgMHgwMCwgMHg5NSwKKzB4MDEsIDB4NzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDQsIDB4MjcsIDB4MDAsIDB4ODcsIDB4MDAsIDB4NDQsIDB4MDYsIDB4RDAsCisweDI5LCAweDQ0LCAweEUzLCAweDFDLCAweDkxLCAweDAxLCAweDc0LCAweDEyLCAweEQwLCAweDA5LCAweDRBLCAweDY3LCAweDAwLAorMHg5NSwgMHgyMiwgMHg3NCwgMHg4MiwgMHhEMCwgMHgxOCwgMHg0MCwgMHgyNCwgMHgwOCwgMHg5QywgMHgwMywgMHgwNCwgMHg0MiwKKzB4MTQsIDB4MTksIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsCisweDI0LCAweDAwLCAweERELCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDIzLCAweDAwLCAweDkxLCAweDA0LAorMHg1NCwgMHgwMiwgMHgxMCwgMHg2OSwgMHg0NCwgMHgyNywgMHg4MCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwNiwgMHhEMCwgMHg4OSwKKzB4NDEsIDB4MjcsIDB4NDEsIDB4RDEsIDB4MEEsIDB4NzQsIDB4MDIsIDB4RDIsIDB4MEQsIDB4NDgsIDB4MzcsIDB4MDIsIDB4OTEsCisweDgyLCAweDc0LCAweDAyLCAweDUyLCAweDg5LCAweDAwLCAweDI0LCAweDAwLCAweDhELCAweDAwLCAweDQyLCAweDAzLCAweDEwLAorMHgwOSwgMHg0MCwgMHg2MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyOCwgMHhBMCwKKzB4MDAsIDB4OUQsIDB4MDIsIDB4MDQsIDB4MEEsIDB4RDAsIDB4MDgsIDB4NDAsIDB4QTMsIDB4MDAsIDB4ODUsIDB4MjAsIDB4NzQsCisweDAzLCAweDUwLCAweDA4LCAweDQ4LCAweDIzLCAweDAwLCAweDk1LCAweDA4LCAweDA0LCAweDgzLCAweEQyLCAweDA4LCAweDQwLAorMHgyMywgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgyMiwgMHhEMCwgMHg4OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4NSwgMHg4MCwKKzB4MzQsIDB4MjIsIDB4RDAsIDB4MDksIDB4NTAsIDB4MzAsIDB4OTAsIDB4Q0QsIDB4NjgsIDB4NDUsIDB4QTIsIDB4MTAsIDB4NDgsCisweDUwLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDAyLCAweDAwLAorMHgxRiwgMHgwMCwgMHg0RCwgMHgwNCwgMHhEMCwgMHgxMSwgMHhDMCwgMHgwNywgMHgwNSwgMHgxMywgMHg4MCwgMHg1QywgMHg4MCwKKzB4MzAsIDB4NDEsIDB4QzEsIDB4MDcsIDB4MjAsIDB4MUYsIDB4MDIsIDB4NEQsIDB4MDAsIDB4RjAsIDB4NDEsIDB4QzEsIDB4MDcsCisweDAwLCAweDEzLCAweDgwLCAweDM4LCAweDA4LCAweEYwLCAweDIxLCAweEMwLCAweDE3LCAweDIwLCAweDEzLCAweDAwLCAweDNFLAorMHgwOCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwOCwgMHgxRiwgMHgxNiwgMHg0QywgMHgwOCwgMHgzMCwgMHgwNSwgMHhDMCwKKzB4NzQsIDB4RTAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QTgsIDB4N0YsIDB4MDAsIDB4QkYsCisweDAxLCAweDdDLCAweDBFLCAweEQwLCAweDI5LCAweEMwLCAweDY3LCAweDEwLCAweEJGLCAweDAwLCAweEJDLCAweDAyLCAweEYwLAorMHgwOSwgMHhDMCwgMHgyQiwgMHgwMCwgMHhCNywgMHgwNCwgMHg5QywgMHgwMiwgMHhGMiwgMHgwOSwgMHhDMCwgMHgzRiwgMHgyMCwKKzB4RkYsIDB4NDAsIDB4RkMsIDB4MTIsIDB4RDAsIDB4NEIsIDB4QzAsIDB4MkYsIDB4MTAsIDB4QUYsIDB4ODAsIDB4RkUsIDB4MTIsCisweEYwLCAweDBCLCAweEM4LCAweDJGLCAweDAwLCAweEJFLCAweDQ0LCAweERDLCAweDEzLCAweEYwLCAweDhCLCAweEMwLCAweDc3LAorMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHgyNywgMHgwMCwgMHg5RiwgMHg0MiwKKzB4N0MsIDB4MzYsIDB4RjAsIDB4MUIsIDB4QzEsIDB4MjcsIDB4MDIsIDB4QkYsIDB4MDAsIDB4REMsIDB4MDIsIDB4RjIsIDB4NEIsCisweEMxLCAweDJGLCAweDAwLCAweERCLCAweDgwLCAweENDLCAweDAyLCAweEYwLCAweDBCLCAweEM4LCAweDJGLCAweDAwLCAweEJGLAorMHgwMCwgMHhDNCwgMHgyMiwgMHhGMCwgMHgwOSwgMHg0MCwgMHgyOCwgMHgwMCwgMHhCRSwgMHgwMCwgMHg0QywgMHg4MiwgMHgzMCwKKzB4MEIsIDB4QzAsIDB4MkIsIDB4MDgsIDB4QkYsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4MzAsIDB4MEIsIDB4QzAsIDB4NzQsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDEwLCAweDQ3LCAweDA1LCAweDFELCAweEMxLCAweDM0LAorMHgwQywgMHhEMCwgMHgyMSwgMHg0MCwgMHg0MywgMHgyMCwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwKKzB4MDcsIDB4MDAsIDB4MUQsIDB4NzAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4ODEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsCisweDQ0LCAweDExLCAweDcyLCAweDAxLCAweDQxLCAweDA0LCAweDMwLCAweDFELCAweDIwLCAweDU0LCAweDUwLCAweDEwLCAweDAxLAorMHg0MCwgMHgxNywgMHgwMCwgMHgxRCwgMHgwMCwgMHgwQywgMHgwMCwgMHgxMCwgMHgwMSwgMHg0NCwgMHg2MSwgMHgyMCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjgsIDB4MjEsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MzIsCisweEQwLCAweDA4LCAweDQwLCAweDIzLCAweDAzLCAweDhELCAweDAwLCAweDA1LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDIzLAorMHgwMCwgMHg4OSwgMHgwNCwgMHgwNSwgMHgwMiwgMHhEMCwgMHgwOCwgMHgwOCwgMHgzMywgMHgwMCwgMHg5RCwgMHgwMCwgMHgwNSwKKzB4MTIsIDB4RDgsIDB4NDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MTQsIDB4OTIsIDB4MTAsIDB4MDgsIDB4NjAsCisweDIzLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDgyLCAweDEwLCAweDA5LCAweDQwLCAweDRBLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyMCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDgsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NjcsIDB4MjAsCisweDhELCAweDE4LCAweDQ0LCAweDAyLCAweEQwLCAweDA5LCAweDQ0LCAweDY2LCAweDEwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLAorMHg1MCwgMHgyOCwgMHg1NCwgMHhCNCwgMHgwMiwgMHg5RCwgMHgxMCwgMHg1NSwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MSwgMHgyNywKKzB4MDAsIDB4REQsIDB4MDAsIDB4MDQsIDB4MDIsIDB4OTAsIDB4MTksIDB4NjAsIDB4NjMsIDB4MjgsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweEVGLCAweDAwLCAweEJGLCAweDBELCAweEZDLCAweDgyLCAweEYyLCAweDA5LAorMHhDMCwgMHgyRiwgMHgwMCwgMHg5RiwgMHgxMywgMHg0QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDNCwgMHhFNywgMHgyNCwgMHg5QiwKKzB4ODEsIDB4NDQsIDB4NDYsIDB4RjIsIDB4MDksIDB4QzgsIDB4NjcsIDB4MjAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsCisweDA5LCAweEMwLCAweEU0LCAweDAwLCAweDlGLCAweDIwLCAweDU0LCAweDFBLCAweDMwLCAweDI5LCAweEMwLCAweDI3LCAweDAwLAorMHg5RiwgMHgxMiwgMHg0QywgMHgwRSwgMHgzNCwgMHg1OSwgMHhDMCwgMHgxNiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4RTUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDA1LCAweDZDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAxLAorMHg3QywgMHg2MiwgMHhFMCwgMHgwOSwgMHgwMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMiwgMHg3QywgMHgwMiwgMHg3MiwgMHg0OSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDMsIDB4N0MsIDB4MjIsIDB4RDQsIDB4OTksIDB4QzAsIDB4MjcsIDB4MDEsIDB4OUQsCisweDEzLCAweDdGLCAweEQyLCAweDcwLCAweDA5LCAweEMxLCAweDU5LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHg4NSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhCMCwgMHgwMSwgMHhEMCwgMHgwNiwKKzB4MDAsIDB4MTMsIDB4MDIsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4ODcsIDB4ODAsIDB4MUYsIDB4MDIsIDB4NUMsCisweDg4LCAweDMwLCAweDAxLCAweEM1LCAweDg1LCAweDQwLCAweDEzLCAweDMwLCAweDRDLCAweDAwLCAweEYwLCAweDIxLCAweEMwLAorMHgwNywgMHgwMSwgMHgxMywgMHgyMywgMHg1QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMSwgMHgwNSwgMHgxNCwgMHgwMywgMHgwMCwKKzB4NEMsIDB4MDAsIDB4MjEsIDB4MDEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE0LCAweEEwLCAweDE0LCAweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweDU4LCAweDc3LCAweDQwLCAweDE0LCAweDAwLAorMHg2NSwgMHgwMiwgMHhEOCwgMHgwMSwgMHhEMCwgMHgxNywgMHg0MCwgMHgxNywgMHg4MCwgMHg1QywgMHgwMCwgMHhENCwgMHgwMSwKKzB4MTEsIDB4MDcsIDB4MDEsIDB4OUQsIDB4MDAsIDB4NjEsIDB4MDIsIDB4QzQsIDB4ODUsIDB4MzIsIDB4MDUsIDB4QzAsIDB4OUQsCisweDQwLCAweDYxLCAweDEwLCAweDQ4LCAweDAxLCAweEQxLCAweDA3LCAweDQwLCAweDVGLCAweDA0LCAweDcxLCAweDAwLCAweEQ0LAorMHg4MSwgMHg1MCwgMHgwNywgMHg0OCwgMHg0MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKzB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4NzgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4NDEsCisweDA0LCAweDI0LCAweDAyLCAweEQwLCAweERDLCAweDQwLCAweDMzLCAweDIwLCAweENELCAweDQwLCAweDE0LCAweDAzLCAweDEwLAorMHgwQywgMHgwQSwgMHhCMCwgMHgwQywgMHhDMSwgMHgwOCwgMHgwNSwgMHgwNywgMHhEMCwgMHgwQywgMHg0MCwgMHg3MSwgMHgwMCwKKzB4QzEsIDB4ODAsIDB4NTAsIDB4ODMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzEsIDB4MDAsIDB4QzEsIDB4MDMsIDB4MDQsIDB4MkIsCisweDFDLCAweDJELCAweDQwLCAweDQzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDgwLAorMHgzOCwgMHgwMSwgMHhFRCwgMHgwNCwgMHhCNCwgMHgyNywgMHg1OCwgMHgxQSwgMHg0MCwgMHg3OCwgMHgwMSwgMHhGNSwgMHgwMCwKKzB4OTQsIDB4MDIsIDB4RDgsIDB4MEEsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MEMsIDB4OTQsIDB4MEMsIDB4MTAsIDB4MUEsCisweDRBLCAweDdELCAweDAwLCAweEUxLCAweDIwLCAweDg0LCAweDQzLCAweDAwLCAweDRFLCAweDQwLCAweDRELCAweDI0LCAweEYxLAorMHg0MCwgMHhBNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHg3RiwgMHgwOCwgMHhFMSwgMHg4MiwgMHg4NCwgMHgwMSwgMHgxMCwKKzB4MDYsIDB4NDQsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4RjgsCisweDAwLCAweEVGLCAweDAzLCAweEJDLCAweDA3LCAweDMwLCAweDFBLCAweEMyLCAweDc4LCAweDAxLCAweDYzLCAweDAxLCAweEFDLAorMHgwNiwgMHhGMCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMCwgMHhGRCwgMHgzMSwgMHg5NiwgMHgwNCwgMHgzMCwgMHgxQSwgMHg0MCwKKzB4NzksIDB4MDAsIDB4NjMsIDB4MDEsIDB4OEMsIDB4MDcsIDB4RjAsIDB4MUUsIDB4QzEsIDB4NDksIDB4MjAsIDB4RTMsIDB4MDEsCisweDlFLCAweDE3LCAweEYyLCAweDFFLCAweEM4LCAweDc5LCAweDQwLCAweEYzLCAweDAxLCAweDhELCAweDA2LCAweDMwLCAweDFFLAorMHhDMCwgMHg1MywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBOCwgMHgzNSwgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MzcsIDB4MTAsIDB4Q0YsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYxLCAweDAxLCAweEMwLCAweDM3LCAweDAwLCAweERELCAweDAyLCAweDJDLCAweDAwLCAweEYwLCAweDA4LCAweEUwLCAweDMzLAorMHgwMCwgMHg0RiwgMHgwMCwgMHg3QywgMHgwMSwgMHhBMiwgMHg0RCwgMHhDMCwgMHgwNSwgMHgyMCwgMHhDRiwgMHgyMCwgMHg1QywKKzB4MUIsIDB4RjIsIDB4MDksIDB4RTAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDksIDB4QzAsCisweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDIwLCAweDc5LCAweDAwLCAweEUzLAorMHgwMSwgMHhDQywgMHgxMywgMHhGOCwgMHg4RiwgMHhDMCwgMHg3RCwgMHgwNCwgMHg3RiwgMHgwOSwgMHhDQywgMHgwNiwgMHhGMCwKKzB4OUYsIDB4QzAsIDB4N0YsIDB4MDIsIDB4RjcsIDB4MDEsIDB4M0MsIDB4MjQsIDB4NzAsIDB4OUIsIDB4QzAsIDB4NDcsIDB4MjIsCisweEJGLCAweDBELCAweENDLCAweDA2LCAweEIwLCAweDlELCAweDQxLCAweDRGLCAweDAyLCAweEJGLCAweDAxLCAweENELCAweDRGLAorMHgzMCwgMHg5RSwgMHhDOCwgMHg3QywgMHgxMiwgMHgzQiwgMHgwOSwgMHhDQywgMHgwNywgMHgzNCwgMHg5NywgMHhEOCwgMHgxOCwKKzB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MTgsIDB4MzgsIDB4MDAsIDB4RTEsIDB4MTgsCisweDg0LCAweDAzLCAweEQ4LCAweDBFLCAweDQwLCAweDM4LCAweDIwLCAweEVELCAweDBDLCAweEFDLCAweDAyLCAweEQwLCAweDBBLAorMHg0NCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwOCwgMHhCNCwgMHgyNCwgMHgxMCwgMHhDQSwgMHgwOCwgMHg3QiwgMHgwMSwgMHg0RCwKKzB4OTgsIDB4NDQsIDB4NDMsIDB4MTAsIDB4NUUsIDB4NDAsIDB4MDMsIDB4MDMsIDB4QUQsIDB4MDQsIDB4OTQsIDB4MjMsIDB4MTAsCisweDBFLCAweDQyLCAweDI5LCAweDAzLCAweDJELCAweDBDLCAweEZDLCAweDExLCAweDEwLCAweDg2LCAweDQwLCAweDU0LCAweDAwLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHg3RCwgMHgwMCwgMHhGMSwgMHgwMSwgMHg4NCwKKzB4MjcsIDB4RDAsIDB4QzgsIDB4NDAsIDB4NzksIDB4MDIsIDB4N0QsIDB4MDAsIDB4QTYsIDB4MDIsIDB4NTAsIDB4MEEsIDB4NDgsCisweDNCLCAweDgwLCAweEVELCAweDAwLCAweEY0LCAweDAwLCAweEQwLCAweDAyLCAweDBBLCAweDA5LCAweDA4LCAweDNELCAweDA2LAorMHhBNiwgMHgyMiwgMHgxMCwgMHgwRSwgMHg0NCwgMHgwQiwgMHgxNCwgMHhCRCwgMHgwMCwgMHhDNiwgMHgwMywgMHgxMCwgMHgwRSwKKzB4NDAsIDB4MTksIDB4MTAsIDB4MkQsIDB4NDAsIDB4QzQsIDB4MDIsIDB4MTIsIDB4MDYsIDB4NDIsIDB4NjAsIDB4MDIsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDIwLCAweDMxLCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDAzLAorMHhEOCwgMHgwOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgyNCwgMHgyMiwgMHhEMCwgMHgwMCwgMHg0MCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MjAsIDB4MzQsIDB4NEMsIDB4OTAsIDB4MDAsIDB4NDAsIDB4QjIsIDB4MDEsIDB4NEQsIDB4MDEsIDB4MjQsCisweDg1LCAweDlBLCAweDJELCAweDQ4LCAweEMzLCAweDAwLCAweDhELCAweDEwLCAweDE0LCAweDlCLCAweDEwLCAweDI4LCAweDQxLAorMHg4MSwgMHgwMCwgMHg4RCwgMHgwOCwgMHgwNSwgMHgwOCwgMHgxMCwgMHhCOCwgMHg0MCwgMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTgsIDB4MzUsIDB4NDEsIDB4RDMsIDB4MDEsIDB4NEQsIDB4MDMsIDB4RDAsCisweDA5LCAweEMwLCAweDM1LCAweDAwLCAweDVGLCAweDAwLCAweDJDLCAweDAzLCAweDcwLCAweDA1LCAweEMwLCAweDc3LCAweDA0LAorMHhGRiwgMHgxMSwgMHg3QywgMHgxQywgMHhGMCwgMHgwMSwgMHhDMCwgMHgzNSwgMHgwOCwgMHhERiwgMHgwMiwgMHg2RCwgMHgwOSwKKzB4MzQsIDB4MEYsIDB4QzAsIDB4QzcsIDB4MjAsIDB4Q0QsIDB4ODEsIDB4QzQsIDB4MDMsIDB4MzAsIDB4MkQsIDB4QzAsIDB4MjEsCisweDAwLCAweERCLCAweDJCLCAweDQ0LCAweDBCLCAweDMwLCAweEI5LCAweEMwLCAweDc0LCAweDAwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHgzQywgMHgwMywgMHhGMCwgMHgyOSwKKzB4QzAsIDB4MzcsIDB4MDAsIDB4NUYsIDB4NDIsIDB4N0MsIDB4NEEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MjcsIDB4OTEsIDB4REYsCisweDI0LCAweDdDLCAweDAwLCAweDcwLCAweDA5LCAweEMwLCAweDM3LCAweDBBLCAweERGLCAweDAyLCAweDVDLCAweDQyLCAweDcwLAorMHhDRCwgMHhDMCwgMHgwNywgMHgwNCwgMHg5RiwgMHgwMSwgMHg2QywgMHgwMywgMHhGMCwgMHgyNSwgMHg0MCwgMHgwNywgMHgwMSwKKzB4REYsIDB4MDIsIDB4N0MsIDB4MDksIDB4RjAsIDB4MjksIDB4QzgsIDB4MTcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEM4LCAweDAzLCAweDMwLCAweDFCLCAweEMwLAorMHgzRiwgMHgyMCwgMHg3RiwgMHg0MSwgMHhGQywgMHgyNywgMHgzMCwgMHg0NiwgMHhDMCwgMHg3RSwgMHgwMSwgMHhGRiwgMHgyMCwKKzB4Q0MsIDB4MEMsIDB4NzAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDgsIDB4RjgsIDB4MDUsIDB4QjQsIDB4MEYsCisweEMwLCAweDBELCAweDA4LCAweEZGLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDEwLCAweEU3LAorMHgwMSwgMHhDQywgMHg0NiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgwNywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4ODUsIDB4MjAsIDB4MzYsIDB4MDAsIDB4REQsIDB4MDAsIDB4NTQsIDB4MDMsIDB4NTAsIDB4MTksIDB4NDAsIDB4MzcsCisweDAwLCAweDFELCAweDAyLCAweDc0LCAweDBELCAweDEwLCAweDE1LCAweDQwLCAweDI0LCAweDAwLCAweERELCAweDAwLCAweDQ0LAorMHgwQywgMHhEMSwgMHgxOSwgMHhDMCwgMHgwNywgMHgwMSwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwOCwgMHg5MCwgMHgwRCwgMHg0MCwKKzB4QzQsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NkMsIDB4MDMsIDB4RDIsIDB4RjUsIDB4NDAsIDB4NDcsIDB4MDAsIDB4MTEsIDB4MDEsCisweDQ0LCAweDAyLCAweEQwLCAweDM5LCAweDQ4LCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHhBMCwgMHgzNCwgMHgwMCwgMHhDRCwgMHgwMCwgMHg1NCwgMHgwMywgMHg5MCwgMHg4RCwgMHg0MSwgMHgzNywgMHgwMCwKKzB4NUQsIDB4MDgsIDB4NzQsIDB4NDMsIDB4NTAsIDB4MEQsIDB4NDAsIDB4MzYsIDB4MDAsIDB4QzksIDB4MDAsIDB4NDQsIDB4QzAsCisweEQ4LCAweDExLCAweDAwLCAweDA3LCAweDAyLCAweDlELCAweDAyLCAweDM2LCAweDE4LCAweDEyLCAweDBELCAweDQwLCAweDQ2LAorMHgwMCwgMHg5RCwgMHgwMywgMHg2MCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHhFNywgMHgwMCwgMHgxMSwgMHgwNCwgMHg0NCwKKzB4OUIsIDB4RDAsIDB4MTEsIDB4NEQsIDB4MDcsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDI4LCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDAzLCAweDUwLCAweDA0LCAweDQwLCAweDMyLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMiwgMHg1NiwgMHgwQywgMHg0MiwgMHgyMCwgMHg4MCwgMHhDRCwgMHgwMCwgMHgwNSwgMHgxMCwgMHhEMCwKKzB4MTgsIDB4NDAsIDB4MzEsIDB4MDksIDB4NEQsIDB4MjAsIDB4MzQsIDB4MjIsIDB4MTEsIDB4NkMsIDB4NTAsIDB4MDIsIDB4MDIsCisweDhELCAweDAwLCAweDI0LCAweDAzLCAweEQyLCAweDBDLCAweDQyLCAweDAzLCAweDgwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLAorMHhEMCwgMHgwOCwgMHg0QSwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhCMCwKKzB4M0UsIDB4MDgsIDB4RkYsIDB4MDAsIDB4REMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4M0YsIDB4MDAsIDB4NUYsIDB4MDAsCisweDc0LCAweDAzLCAweDcwLCAweDA5LCAweEMwLCAweDM2LCAweDEwLCAweEZCLCAweDAwLCAweDRDLCAweDUwLCAweDcxLCAweDAxLAorMHg2NCwgMHgwNywgMHgwMCwgMHg5RiwgMHgwOCwgMHg3QywgMHgwMCwgMHhCMCwgMHg2RiwgMHhDMCwgMHgwNywgMHhBMCwgMHg5RiwKKzB4ODAsIDB4REMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4NDAsIDB4NDcsIDB4ODAsIDB4NEUsIDB4MDEsIDB4RjIsCisweDAxLCAweEMwLCAweDA3LCAweDYwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEEwLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3MCwgMHgwNywgMHhDMCwgMHgzRiwgMHgwMCwgMHhBRiwgMHgwMCwgMHhGQywKKzB4MDEsIDB4QjAsIDB4MDMsIDB4QzAsIDB4MkYsIDB4MDQsIDB4RkMsIDB4MTAsIDB4RkMsIDB4NDAsIDB4RjAsIDB4MDMsIDB4QzAsCisweDhGLCAweDA4LCAweDJGLCAweDAwLCAweEZDLCAweDEwLCAweEQyLCAweDhGLCAweEMwLCAweDBELCAweDAxLCAweDJFLCAweDAwLAorMHhCQywgMHgwMywgMHhFMCwgMHgwRiwgMHhDMiwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGRCwgMHgwMCwgMHhGMCwgMHgwQiwKKzB4QzIsIDB4MTcsIDB4NjQsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4M0YsIDB4MDAsCisweEEzLCAweDQwLCAweENDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDNGLCAweDExLCAweEIzLCAweDIwLCAweEZDLCAweDI2LAorMHhCMCwgMHg5RiwgMHhEMiwgMHgyQywgMHgwMCwgMHhGRiwgMHgyMSwgMHhFQywgMHgxMCwgMHhCMiwgMHg4RiwgMHhDOCwgMHgzQywKKzB4MTIsIDB4RkYsIDB4MDQsIDB4RUMsIDB4MjAsIDB4NzIsIDB4MEYsIDB4QzAsIDB4N0YsIDB4MDIsIDB4RjMsIDB4MDMsIDB4RUQsCisweDFCLCAweEIwLCAweDlCLCAweEMwLCAweDdDLCAweDBBLCAweERGLCAweDAxLCAweEZDLCAweDFBLCAweDM0LCAweDQ5LCAweEMwLAorMHgwRSwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzRiwgMHgwMCwgMHhCMSwKKzB4MDEsIDB4NDQsIDB4ODIsIDB4NzAsIDB4MDEsIDB4MDIsIDB4M0YsIDB4MjIsIDB4OTEsIDB4MDAsIDB4MzQsIDB4MTMsIDB4MTAsCisweDRDLCAweDQ4LCAweEI0LCAweDAxLCAweEQxLCAweDAxLCAweDU0LCAweDI0LCAweEQwLCAweDZGLCAweDYwLCAweEJDLCAweDAxLAorMHhGRCwgMHgwOSwgMHg0NCwgMHgxOCwgMHgxMCwgMHg5RiwgMHg0MCwgMHgzMywgMHgwMSwgMHhEMSwgMHgwMCwgMHg4NCwgMHgxQiwKKzB4MTQsIDB4NDgsIDB4NTAsIDB4MzQsIDB4MjEsIDB4REQsIDB4MDQsIDB4NzQsIDB4MTIsIDB4MTEsIDB4MTksIDB4NDAsIDB4MEQsCisweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMxLCAweDAwLCAweDgxLCAweDAwLAorMHgwNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgzMywgMHgyMCwgMHhDNSwgMHgyMCwgMHgxNCwgMHgwNywgMHg1MCwgMHgwQywKKzB4NDAsIDB4ODEsIDB4MDQsIDB4QzUsIDB4MDAsIDB4MDQsIDB4MDAsIDB4RDAsIDB4NkMsIDB4NDgsIDB4QjAsIDB4MDEsIDB4Q0QsCisweDAwLCAweDI0LCAweDFDLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweEMxLCAweDA0LCAweDA0LCAweDBCLCAweDUwLAorMHgwRCwgMHg0MCwgMHgzMCwgMHgwMSwgMHhDRCwgMHgxNCwgMHgzNCwgMHgxOCwgMHgxMCwgMHg4MSwgMHg0MCwgMHg1QywgMHg4MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzcsIDB4MDAsIDB4OTEsIDB4NDEsIDB4NDQsCisweDBFLCAweDUyLCAweDExLCAweDQ1LCAweDM3LCAweDEwLCAweEQ1LCAweDQzLCAweDc0LCAweDA3LCAweDUwLCAweDBELCAweDQ0LAorMHg1NSwgMHgwMCwgMHhENSwgMHgwNCwgMHg1NiwgMHg4OCwgMHhEMCwgMHgwQywgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwgMHgwMCwKKzB4MjQsIDB4MDIsIDB4MTMsIDB4MEQsIDB4NDAsIDB4MzcsIDB4ODAsIDB4QzEsIDB4MDEsIDB4NDQsIDB4MDMsIDB4NTAsIDB4MEQsCisweDQwLCAweDM0LCAweDAwLCAweERELCAweDgwLCAweDc0LCAweDA2LCAweDEwLCAweDExLCAweDQwLCAweDFELCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMCwgMHgzNywgMHgwMCwgMHg5MywgMHgwMSwgMHg0RCwgMHgwNCwKKzB4RjAsIDB4MTEsIDB4QzQsIDB4MzcsIDB4QzAsIDB4RDcsIDB4MDMsIDB4N0MsIDB4MDcsIDB4RjAsIDB4OEQsIDB4QzAsIDB4QzUsCisweDAwLCAweERGLCAweDAxLCAweDRDLCAweDBDLCAweEIyLCAweDBELCAweDQwLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDZDLAorMHgwMSwgMHg3MCwgMHgwRCwgMHhDMCwgMHg3NywgMHgwQSwgMHhEMywgMHg4MCwgMHg2QywgMHgwMywgMHhGMCwgMHgwOCwgMHhDNCwKKzB4MzQsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MEUsIDB4MzAsIDB4MzksIDB4QzAsIDB4ODIsIDB4MDAsIDB4MEUsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDg4LCAweDNELCAweDEwLCAweEVGLCAweDAwLCAweEZDLCAweDgwLCAweDcwLAorMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHhGQiwgMHg4MCwgMHhGOCwgMHgwMywgMHhCNCwgMHgwRiwgMHhDMCwgMHgxQSwgMHgwMCwKKzB4RkIsIDB4MDAsIDB4NUMsIDB4MjIsIDB4RjAsIDB4MEYsIDB4QzIsIDB4MzcsIDB4MzAsIDB4RUYsIDB4MDAsIDB4NUMsIDB4MEQsCisweEYzLCAweDBGLCAweEMwLCAweDdGLCAweDQwLCAweEZGLCAweDgwLCAweERDLCAweDAzLCAweEIwLCAweDBCLCAweEMwLCAweDNGLAorMHgyMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MEEsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MEEsIDB4RjIsIDB4NjksCisweEMwLCAweDMzLCAweDIwLCAweERGLCAweDAyLCAweDVELCAweDgzLCAweEYwLCAweENELCAweEMwLCAweDg0LCAweDAwLCAweEQzLAorMHgwMSwgMHg3QywgMHgwOSwgMHg3MCwgMHgwRCwgMHhDMCwgMHgzNCwgMHg0MCwgMHhEMywgMHg4NCwgMHg3QywgMHg4MSwgMHgzMCwKKzB4OEQsIDB4QzAsIDB4MzUsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDMsIDB4NzAsIDB4MDksIDB4QzAsIDB4MzQsIDB4MDAsCisweERCLCAweDAwLCAweDdDLCAweDA4LCAweEYwLCAweDA5LCAweEMwLCAweDJCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHhGOCwgMHgwMiwgMHg1MSwgMHgyMCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0NSwKKzB4M0YsIDB4MDAsIDB4REQsIDB4MDEsIDB4N0MsIDB4ODMsIDB4MTAsIDB4M0QsIDB4NDAsIDB4MTQsIDB4MDgsIDB4QzAsIDB4MjAsCisweDc0LCAweDAzLCAweDEyLCAweEJGLCAweDQwLCAweEZDLCAweDAyLCAweEYxLCAweDAwLCAweDc0LCAweDgzLCAweDEwLCAweDFGLAorMHg0MCwgMHgzNCwgMHgwMCwgMHhEMSwgMHgwMCwgMHhGNCwgMHgwMywgMHgxMCwgMHgwOSwgMHg0MCwgMHgzNCwgMHg4MCwgMHhEMSwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAzLCAweDIwLCAweDMwLCAweDAwLCAweDgxLCAweDEyLCAweDA0LCAweDRDLCAweEQ5LCAweDM4LCAweDQwLCAweDMzLAorMHgwMCwgMHhDRCwgMHgwOSwgMHg1NCwgMHgwMywgMHgxMCwgMHgyRCwgMHg0MCwgMHgyMCwgMHgwOCwgMHhDMSwgMHgwMCwgMHgzNCwKKzB4MDcsIDB4MTEsIDB4QUMsIDB4NDgsIDB4QjEsIDB4MDAsIDB4QzEsIDB4MDEsIDB4MzQsIDB4ODIsIDB4MTAsIDB4MUMsIDB4NDEsCisweDM2LCAweDAwLCAweEM5LCAweDIwLCAweDc0LCAweDAzLCAweDUwLCAweDA4LCAweDQwLCAweDMwLCAweDAwLCAweEMxLCAweDAwLAorMHg3NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg2MCwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4NzAsIDB4MDAsIDB4QTEsIDB4ODksIDB4ODQsIDB4MDcsIDB4RDgsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDIsCisweEZELCAweDA5LCAweEI0LCAweDA3LCAweDEyLCAweDFFLCAweDQwLCAweDY4LCAweDAwLCAweEUxLCAweDgxLCAweEI0LCAweDA3LAorMHgxMCwgMHgxRSwgMHg0MCwgMHg3OSwgMHgwNSwgMHhFMSwgMHgxMSwgMHhCNCwgMHgyNywgMHgxMCwgMHgxQywgMHg0MCwgMHhGQSwKKzB4MDAsIDB4RTksIDB4ODEsIDB4QjQsIDB4MDcsIDB4MTAsIDB4MUEsIDB4NDAsIDB4NzgsIDB4MDAsIDB4RTgsIDB4MEIsIDB4QjQsCisweDg0LCAweEQwLCAweDFBLCAweDQwLCAweDNGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHgxOCwgMHgzMCwgMHgwMCwgMHg4MywgMHgyMCwgMHgwQywgMHg0MSwgMHhGMCwgMHg4QywgMHhDNCwgMHgzMywgMHgyMCwgMHg0RiwKKzB4MDAsIDB4MUQsIDB4MjMsIDB4NzAsIDB4OEMsIDB4QzAsIDB4ODQsIDB4NDAsIDB4QzMsIDB4MDAsIDB4M0MsIDB4NDMsIDB4NzQsCisweDBELCAweEMwLCAweDMxLCAweDAwLCAweEMzLCAweDAwLCAweDNDLCAweDAwLCAweDMwLCAweDBDLCAweEQwLCAweDMzLCAweDAwLAorMHhDQSwgMHgwOCwgMHgzQywgMHgwMywgMHg3NCwgMHgwQywgMHhEMCwgMHgzNCwgMHgwMCwgMHhDMywgMHgxRCwgMHgzQywgMHgwOCwKKzB4RjAsIDB4NzAsIDB4QzgsIDB4NEIsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsCisweDNELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDA0LCAweDZGLCAweDAwLAorMHhGQywgMHhBMywgMHg3MCwgMHgwRiwgMHhFMCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgyRiwKKzB4QzEsIDB4M0UsIDB4MEQsIDB4RkYsIDB4MDAsIDB4RkUsIDB4MDMsIDB4RjIsIDB4MEYsIDB4QzAsIDB4M0QsIDB4MDAsIDB4RjcsCisweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEY1LCAweDI4LCAweEZDLCAweDAwLCAweEYwLAorMHg4MywgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgzNywKKzB4MDEsIDB4QjMsIDB4MDIsIDB4NEQsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4QjcsIDB4MDAsIDB4RDMsIDB4ODAsIDB4NkMsCisweDAzLCAweEYyLCAweDBELCAweEMyLCAweDE3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDJELCAweEMwLAorMHhCNCwgMHgwNCwgMHhEMywgMHgwNCwgMHg3QywgMHg4NiwgMHgzMCwgMHg2RCwgMHhDMCwgMHg3NywgMHgwMCwgMHhEMywgMHg0MCwKKzB4N0MsIDB4NTMsIDB4QjAsIDB4MDksIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDEsIDB4NDQsIDB4ODIsIDB4RjAsIDB4MTEsCisweEMwLCAweDQwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDNELCAweDA1LAorMHhFMSwgMHgxMCwgMHg4NCwgMHgwMSwgMHhEMCwgMHgwNiwgMHg0MCwgMHgzRiwgMHgwNCwgMHhFNSwgMHgwMCwgMHg4NCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MjAsIDB4RUQsIDB4QTAsIDB4OUMsIDB4MDIsIDB4MTAsIDB4NEYsIDB4NDIsIDB4M0MsCisweDIxLCAweEUxLCAweDBBLCAweDlDLCAweDAzLCAweDE4LCAweDhFLCAweDQwLCAweDNCLCAweDAwLCAweEUxLCAweDAwLCAweEI0LAorMHgwQiwgMHgxMCwgMHgwQSwgMHg0OCwgMHgzQiwgMHgwMCwgMHhGRCwgMHgwMCwgMHg4NCwgMHgwMiwgMHhEMCwgMHgwQSwgMHg0MCwKKzB4NEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NzksIDB4NDIsIDB4ODEsCisweDAxLCAweDg0LCAweDA3LCAweDUwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweDQ5LCAweDAxLCAweEE0LCAweDQ3LCAweDUwLAorMHgxRSwgMHg0MCwgMHg1QiwgMHgwMCwgMHhFRCwgMHgwMSwgMHgxNCwgMHgwNSwgMHgxNCwgMHgxRSwgMHg1MCwgMHg3QSwgMHg0MCwKKzB4RTEsIDB4MjEsIDB4MzQsIDB4MDQsIDB4RDAsIDB4OUUsIDB4NjAsIDB4N0IsIDB4NDAsIDB4RTEsIDB4MDEsIDB4MzQsIDB4MTcsCisweDkwLCAweDFBLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweDg0LCAweDA0LCAweEQwLCAweDEwLCAweDQwLCAweDAyLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyOCwgMHgzMywgMHgwMCwgMHg0MSwgMHgwQSwKKzB4MDQsIDB4QzMsIDB4QzEsIDB4QkMsIDB4NDQsIDB4MzMsIDB4MDAsIDB4NUQsIDB4MDEsIDB4MDQsIDB4MDUsIDB4RDAsIDB4MDgsCisweDQwLCAweDczLCAweDBBLCAweDhELCAweDIwLCAweDE0LCAweDBGLCAweDEwLCAweDBDLCAweDQwLCAweDMyLCAweDgwLCAweEMxLAorMHgwMCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHg0MCwgMHgzNCwgMHgwMywgMHgxMiwKKzB4ODksIDB4NDIsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4ODMsIDB4RDgsIDB4MUMsIDB4NDAsIDB4NUEsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEEwLCAweDE1LCAweDAwLCAweDczLCAweDAzLCAweENDLAorMHgwRCwgMHhFMCwgMHgwNywgMHhDMCwgMHgxNywgMHgwMCwgMHg3QiwgMHgwMCwgMHhFQywgMHgwNSwgMHhGMCwgMHgxNSwgMHhDMiwKKzB4MUYsIDB4MDAsIDB4NUYsIDB4MDUsIDB4REMsIDB4NjEsIDB4MzAsIDB4MDUsIDB4QzAsIDB4MTYsIDB4NjAsIDB4NTMsIDB4ODAsCisweEY0LCAweDAxLCAweEYxLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDUzLCAweDAwLCAweDdDLCAweDAxLCAweEIwLCAweDA1LAorMHhDMCwgMHgxNywgMHgxMCwgMHg1RiwgMHgwMCwgMHhDQywgMHgzOSwgMHhGMCwgMHgzNywgMHhDMCwgMHg1RSwgMHgwMCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4ODEsIDB4MDAsIDB4MEYsIDB4MDQsIDB4N0MsIDB4MjgsCisweEYxLCAweDAxLCAweEMzLCAweDA3LCAweDEwLCAweDE3LCAweDA4LCAweDdDLCAweDA0LCAweEYwLCAweEExLCAweEMwLCAweDA3LAorMHgwMSwgMHgxRiwgMHgwMCwgMHgxQywgMHgwMCwgMHhGMCwgMHgyMCwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg1QywKKzB4ODAsIDB4MzQsIDB4MjEsIDB4QzAsIDB4MDcsIDB4MDIsIDB4MUYsIDB4MDAsIDB4M0MsIDB4ODAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA3LCAweDgwLCAweDFFLCAweDAyLCAweDdDLCAweDAwLCAweEYwLCAweDgxLCAweEMxLCAweDQ5LCAweDIwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg2NSwgMHgwMCwgMHg5MywgMHgwOCwgMHg2QywgMHgwNiwgMHhGMCwKKzB4ODksIDB4QzAsIDB4NjMsIDB4MDAsIDB4OTMsIDB4MDIsIDB4NEMsIDB4MDIsIDB4MzEsIDB4MDksIDB4RDAsIDB4MjQsIDB4MDAsCisweDlCLCAweDAwLCAweDdDLCAweDAyLCAweDM0LCAweDA5LCAweEQwLCAweDY0LCAweEMwLCAweDkzLCAweDA4LCAweDdDLCAweDAyLAorMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMCwgMHgyNCwKKzB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDY0LCAweDQwLCAweDkxLCAweDAwLCAweDQ0LCAweDZFLCAweEQyLCAweDI5LAorMHg0MCwgMHgyNywgMHgwMiwgMHg5MSwgMHgwMywgMHgwNCwgMHgwMiwgMHgxMCwgMHgzOSwgMHg0MSwgMHgyNCwgMHgwOCwgMHg5MSwKKzB4MjAsIDB4N0MsIDB4MjYsIDB4MTEsIDB4MjksIDB4NDAsIDB4MjQsIDB4MDIsIDB4OTEsIDB4MDIsIDB4NzQsIDB4MDIsIDB4RDAsCisweDc5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDdDLCAweDAyLCAweEIwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLAorMHg5RCwgMHgwNCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDIsIDB4OTEsIDB4MDAsIDB4NjQsIDB4MDIsIDB4RDAsIDB4MjksIDB4NDAsCisweDI3LCAweDAwLCAweDkxLCAweDEwLCAweDQ0LCAweDAyLCAweDEwLCAweDg4LCAweDQ4LCAweDIwLCAweDAwLCAweDk5LCAweDA0LAorMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyMCwgMHgwMCwgMHg5MSwgMHgxMCwgMHg3NCwgMHgwMiwgMHg1MCwgMHg0OSwKKzB4NDAsIDB4NjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4NjQsIDB4MDAsIDB4OTUsCisweDAxLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHg0MSwgMHg4MSwgMHgwNCwgMHgwNCwgMHgxQSwgMHg5MCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4QzEsIDB4ODEsIDB4MDQsIDB4NDUsIDB4MDIsIDB4MTgsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4ODksIDB4MDAsIDB4MzQsCisweDEyLCAweDEwLCAweDRDLCAweDQwLCAweDIwLCAweDAxLCAweDgxLCAweDA0LCAweDM0LCAweDEyLCAweEQwLCAweDQ4LCAweDQwLAorMHgyMywgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgyMiwgMHg5MCwgMHgwOCwgMHg1NCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwMCwKKzB4MzQsIDB4MTIsIDB4RDAsIDB4NDgsIDB4NjAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFELCAweEI4LCAweDk2LCAweDAyLCAweDEzLCAweDAwLCAweDZDLCAweDA4LCAweEYwLCAweDgxLCAweDQ0LCAweDg3LCAweDAyLAorMHgxMywgMHgwQSwgMHg0QywgMHgyOCwgMHgzMCwgMHhBMSwgMHhDMCwgMHg4NCwgMHgwMiwgMHgxQiwgMHgwMCwgMHg3QywgMHgwMCwKKzB4MzAsIDB4QTEsIDB4NDIsIDB4ODQsIDB4MDIsIDB4MTEsIDB4MDAsIDB4N0MsIDB4QTgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4ODMsCisweDEyLCAweDFGLCAweDBBLCAweDdDLCAweDU4LCAweDcwLCAweEExLCAweEMwLCAweDg0LCAweDAyLCAweDE3LCAweDBBLCAweDdDLAorMHgyOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg3NywgMHhFMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwKKzB4QjAsIDB4MjcsIDB4MDIsIDB4QkYsIDB4MDgsIDB4RjQsIDB4MEEsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MjcsIDB4MDIsIDB4RkYsCisweDA4LCAweEZDLCAweDAyLCAweEY0LCAweDBCLCAweEMyLCAweDJGLCAweDAyLCAweEI3LCAweDAwLCAweERDLCAweDIyLCAweEYwLAorMHg4OSwgMHhDOCwgMHgyNywgMHgwMiwgMHg5RiwgMHgwOCwgMHhGQywgMHgyMiwgMHhGMCwgMHg4OSwgMHhDMCwgMHgyRiwgMHgwOCwKKzB4QkYsIDB4MDAsIDB4NUMsIDB4OTIsIDB4NzAsIDB4MEIsIDB4QzIsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MjIsCisweEYwLCAweDhCLCAweEMwLCAweDc3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEEwLAorMHgyRiwgMHgwNSwgMHhCMywgMHg4NCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgwMiwgMHhCMywgMHgwNCwKKzB4NUMsIDB4MDIsIDB4MzAsIDB4OEIsIDB4RTAsIDB4MjUsIDB4MDAsIDB4QjcsIDB4MDAsIDB4REMsIDB4MDIsIDB4RjAsIDB4NEIsCisweEMwLCAweDJGLCAweDA1LCAweEJGLCAweDA0LCAweDRDLCAweDAzLCAweEY0LCAweDBCLCAweEMwLCAweDJGLCAweDAyLCAweERGLAorMHgwMCwgMHg0QywgMHg1MiwgMHhCMCwgMHg4OSwgMHhDMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHg3QywgMHgwMiwgMHhFMiwKKzB4MDksIDB4MDAsIDB4NzcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDcsCisweDAxLCAweDExLCAweDg4LCAweDc0LCAweDQ5LCAweEQwLCAweDA1LCAweDQxLCAweDA3LCAweDAyLCAweDE1LCAweDE0LCAweDQ0LAorMHg5MCwgMHgxMSwgMHg0MSwgMHg0MiwgMHg4NywgMHg0NCwgMHgxMSwgMHgwMCwgMHg3NCwgMHgyMCwgMHg3MiwgMHg0MSwgMHhDMSwKKzB4MDUsIDB4MDEsIDB4MUMsIDB4MDgsIDB4NTQsIDB4NDksIDB4MTAsIDB4MDEsIDB4NDQsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MTQsCisweDU0LCAweDEwLCAweDcwLCAweDQxLCAweDQwLCAweDA3LCAweDI0LCAweDFELCAweDAwLCAweDc0LCAweDAwLCAweEQwLCAweDAxLAorMHg0MiwgMHg2MywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgyMCwgMHgwNSwKKzB4ODEsIDB4MDAsIDB4MzQsIDB4MzIsIDB4RDAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MjAsIDB4ODEsIDB4MkMsIDB4NDQsIDB4NTYsCisweDA0LCAweDQ4LCAweDQwLCAweDI1LCAweDQzLCAweDg1LCAweDQwLCAweDE0LCAweDAyLCAweEQwLCAweEM4LCAweDQwLCAweDIzLAorMHgyNSwgMHhDRCwgMHgwMCwgMHgyNCwgMHgzMiwgMHgxMCwgMHg4OCwgMHg0MCwgMHgzMywgMHgwMCwgMHg5RCwgMHgwNCwgMHgwNCwKKzB4NTIsIDB4OTAsIDB4NDgsIDB4NDQsIDB4MjMsIDB4MDEsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDRCLCAweDgwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDI4LCAweDI1LCAweDAwLCAweDkxLAorMHgwMSwgMHg3NCwgMHg4MywgMHhEMCwgMHg4OSwgMHg0MCwgMHgyMywgMHgwMCwgMHg5NSwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwKKzB4MTksIDB4NDAsIDB4QTcsIDB4QzAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDYsIDB4NTAsIDB4MDksIDB4MDAsIDB4MjcsIDB4MDgsCisweDk5LCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDUwLCAweDAyLAorMHg1OCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwOCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgxMiwgMHhEMCwgMHgwOSwgMHg0MywgMHg2MywKKzB4MjgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjAsIDB4MjQsIDB4NDAsIDB4OTMsIDB4MDUsCisweDdDLCAweDBFLCAweEYwLCAweDM5LCAweEMwLCAweDI3LCAweDAwLCAweDkzLCAweDAzLCAweDFELCAweDAyLCAweDEwLCAweDA5LAorMHhDOCwgMHgyNSwgMHg0MCwgMHg5NywgMHgyMCwgMHg1QywgMHgwMiwgMHhGMywgMHgwOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg5RiwKKzB4MDAsIDB4NkMsIDB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MjAsIDB4OEYsIDB4MDEsIDB4NDksIDB4MDIsIDB4QjAsCisweDE5LCAweEM4LCAweDI3LCAweDEwLCAweDlGLCAweDAwLCAweDdDLCAweDE2LCAweEYwLCAweDI5LCAweEMwLCAweDE3LCAweDA4LAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwOCwgMHgyMSwgMHgxMCwgMHg5RiwgMHgyMCwgMHg3QywKKzB4MTIsIDB4RjAsIDB4MDksIDB4QzEsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDIsIDB4N0MsIDB4MjYsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEUwLCAweDI1LCAweDA0LCAweDlGLCAweDAwLAorMHg1QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMSwgMHgyNywgMHgwMSwgMHg5RiwgMHg4NCwgMHg2QywgMHgwMiwgMHhCMCwgMHg1OSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4NTksIDB4QzAsIDB4NUIsIDB4MjAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDA0LCAweDdFLCAweDY4LAorMHhCNCwgMHgyMSwgMHhEMCwgMHgwNCwgMHgwOCwgMHgxRCwgMHgwMiwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDOCwgMHgwNywKKzB4MDAsIDB4MUYsIDB4MDgsIDB4N0MsIDB4MDAsIDB4RjAsIDB4ODEsIDB4QzAsIDB4MDcsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NUMsCisweDA4LCAweEYwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwQywgMHg3QywgMHgwOCwgMHgzMCwgMHgyMSwgMHhDMiwgMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MUMsIDB4NDAsIDB4NzEsIDB4MDEsIDB4RTQsIDB4MEQsIDB4MzAsCisweDA3LCAweDQxLCAweDE0LCAweDAwLCAweDdELCAweDBELCAweDQ0LCAweDAxLCAweDcwLCAweDA3LCAweEMwLCAweDExLCAweDAwLAorMHg1RCwgMHgwMCwgMHg3NiwgMHgwNSwgMHg5MCwgMHgwNywgMHg0MCwgMHg5RiwgMHgwOCwgMHg2MSwgMHgwMiwgMHg0NCwgMHgwMSwKKzB4NzAsIDB4MTcsIDB4QzgsIDB4OUUsIDB4MDIsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4NTIsIDB4MDUsIDB4NDAsIDB4MTcsCisweDAxLCAweDdELCAweDAzLCAweDc0LCAweDAxLCAweDEwLCAweDA1LCAweDQ0LCAweDQzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHg3MiwgMHgwMCwgMHg4MSwgMHgwOSwgMHgyNCwgMHgwQiwgMHg1MCwgMHgyQywKKzB4NDIsIDB4MzAsIDB4MDAsIDB4REQsIDB4MDMsIDB4MjQsIDB4MDMsIDB4RDAsIDB4OUMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4OEQsCisweDAxLCAweDM0LCAweDIyLCAweEQwLCAweDFDLCAweDQwLCAweDMzLCAweDAwLCAweEMxLCAweDEwLCAweDU0LCAweDgzLCAweDUwLAorMHhCNCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHg0MCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHg3MiwgMHgwMCwKKzB4Q0QsIDB4ODEsIDB4MzYsIDB4ODMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NDMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDIwLCAweDA1LCAweEExLCAweDAwLCAweEE0LCAweDA3LCAweDUwLCAweDFFLCAweDYwLAorMHgzOCwgMHgwMCwgMHhBRCwgMHgwNCwgMHg4NCwgMHgxMywgMHhEMCwgMHgwRSwgMHg0OCwgMHgzQiwgMHgwMCwgMHhFRCwgMHg4MCwKKzB4QjQsIDB4MDMsIDB4OTAsIDB4MEUsIDB4NDQsIDB4NkIsIDB4MTAsIDB4MjEsIDB4NDAsIDB4ODQsIDB4MjMsIDB4NDAsIDB4MUUsCisweDQwLCAweDNBLCAweDAwLCAweEVELCAweDA4LCAweEI0LCAweDEzLCAweDUwLCAweDRFLCAweDQwLCAweDNCLCAweDEwLCAweEFDLAorMHgwMCwgMHgzNCwgMHgyNywgMHgxMCwgMHgwRSwgMHg0MCwgMHgxMywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTQsIDB4MTgsIDB4RTgsIDB4MDAsIDB4QTEsIDB4MDEsIDB4RjQsIDB4MDcsIDB4NzAsIDB4MTcsIDB4QzAsIDB4NzgsCisweDAwLCAweEVGLCAweDAzLCAweEFDLCAweDI3LCAweEYwLCAweDFFLCAweEMwLCAweDdCLCAweDIyLCAweEVELCAweDAxLCAweEI2LAorMHgwNywgMHhGMCwgMHgxNiwgMHg4MiwgMHg3MywgMHgwMCwgMHgwMywgMHgwMSwgMHg5QywgMHgxNywgMHg2MCwgMHgxRSwgMHhDMCwKKzB4NzgsIDB4MDgsIDB4RUYsIDB4ODksIDB4M0MsIDB4MTcsIDB4MzgsIDB4REUsIDB4QzgsIDB4N0IsIDB4MDAsIDB4QUYsIDB4MDEsCisweEJDLCAweDI3LCAweDMwLCAweDFFLCAweEMwLCAweDUzLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHhCOCwgMHgwNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3NCwgMHgwMywgMHgzMCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwOCwKKzB4OEYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MzUsIDB4MDMsIDB4REYsIDB4MDAsIDB4N0MsIDB4ODMsCisweEIxLCAweDBELCAweEMwLCAweDI3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDlCLCAweDUxLCAweDBDLCAweEMwLCAweDM3LAorMHgwMCwgMHhERiwgMHgwMiwgMHg3QywgMHg0QiwgMHg3MCwgMHg4RCwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjIsIDB4MEQsIDB4QzAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDIwLCAweDZELCAweDAwLCAweEYzLCAweDAxLCAweENDLCAweDExLCAweEIwLCAweDFGLCAweEMwLCAweEZGLCAweDAwLCAweEZGLAorMHgwMSwgMHhDQywgMHg0NywgMHhGMCwgMHgxQiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhCQywgMHgwNywgMHgzMCwKKzB4OUYsIDB4RTAsIDB4NUMsIDB4MDAsIDB4M0YsIDB4MDEsIDB4RjgsIDB4MkYsIDB4MzgsIDB4MUYsIDB4QzgsIDB4NkUsIDB4MjgsCisweEYzLCAweDgxLCAweEZDLCAweDQ3LCAweEZBLCAweDlGLCAweEM4LCAweDZGLCAweDAwLCAweDMzLCAweDIxLCAweDdDLCAweDI3LAorMHgzMCwgMHg5RiwgMHhDNCwgMHgxQiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwKKzB4MjksIDB4MjAsIDB4RTEsIDB4MDgsIDB4ODQsIDB4MjEsIDB4MzEsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsCisweDg0LCAweDAzLCAweEQwLCAweDBBLCAweDQwLCAweDNCLCAweDE0LCAweEVELCAweDgwLCAweDlDLCAweDIzLCAweDcwLCAweDhBLAorMHhDMCwgMHgyOCwgMHgwMSwgMHgyRCwgMHgyMCwgMHg5QywgMHgwMywgMHgzMCwgMHg0RSwgMHg0MCwgMHgwQywgMHgxMiwgMHhFMSwKKzB4MTgsIDB4QjQsIDB4MDMsIDB4NzAsIDB4MEUsIDB4NDAsIDB4MkYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4QjQsIDB4MDcsIDB4QjAsCisweDBDLCAweDQwLCAweDU3LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LAorMHgwMCwgMHhBMSwgMHgwMCwgMHg4NCwgMHgwMSwgMHgxMCwgMHgwRSwgMHg0MSwgMHgzQiwgMHgwMCwgMHg2RCwgMHgwMCwgMHg4NCwKKzB4MEIsIDB4NTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MDYsIDB4NzAsCisweDE4LCAweDEwLCAweDJELCAweDAwLCAweDE0LCAweDQzLCAweDFELCAweDBFLCAweDQwLCAweDI4LCAweDQ0LCAweEU1LCAweDAwLAorMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0NCwgMHgyQiwgMHgwMiwgMHhBOSwgMHgwMCwgMHhCNCwgMHgwMywgMHgxMCwgMHgwRSwKKzB4NDAsIDB4MjMsIDB4MDIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MDEsIDB4MDAsCisweDgxLCAweDA2LCAweDA1LCAweDgwLCAweDEwLCAweDA4LCAweDQwLCAweDM3LCAweDAwLCAweDRELCAweDAwLCAweDA0LCAweDg3LAorMHhEMCwgMHgwMCwgMHg0NiwgMHg3MywgMHgwOCwgMHhDRCwgMHgwMCwgMHgxNCwgMHg5MywgMHg1MSwgMHgwOCwgMHg0MCwgMHgyMCwKKzB4MDgsIDB4MEQsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NDAsIDB4MTAsIDB4RDUsIDB4ODAsIDB4MzQsCisweDAzLCAweDUwLCAweDBDLCAweDYwLCAweDIzLCAweDAwLCAweDg5LCAweDIwLCAweDc2LCAweDEzLCAweDFDLCAweEVELCAweDQ4LAorMHg0QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgyRCwgMHg0MCwgMHg5MywKKzB4MDAsIDB4NDQsIDB4MDYsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4QkYsIDB4MDAsIDB4Q0QsIDB4MDcsIDB4RjAsCisweDA1LCAweEMwLCAweEZGLCAweDAyLCAweERGLCAweDAwLCAweDdDLCAweDBCLCAweDMwLCAweDA5LCAweEM0LCAweDM0LCAweDAwLAorMHgxRiwgMHgwMCwgMHhEQywgMHgwNywgMHgzMCwgMHgwRCwgMHhEMCwgMHg1NCwgMHgwMCwgMHhGNywgMHgwMSwgMHhGQywgMHgwMywKKzB4RjAsIDB4MEYsIDB4QzAsIDB4MzcsIDB4NDAsIDB4MUIsIDB4MDAsIDB4RkMsIDB4MDMsIDB4MTAsIDB4M0QsIDB4QzQsIDB4NzcsCisweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDI3LCAweDAwLCAweDBGLCAweDAxLAorMHg3QywgMHg2OCwgMHg3MCwgMHgyOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgyMywgMHhGMCwgMHgxRCwKKzB4QzgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDEsIDB4MUMsIDB4MDMsIDB4NzIsIDB4MjUsIDB4QzAsIDB4OTUsIDB4MDAsIDB4MUYsCisweDgyLCAweDFDLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDE3LCAweDAwLCAweERCLCAweDAwLCAweDdDLCAweDAzLCAweDcwLAorMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHg4NywgMHhGMCwgMHgwRCwgMHhDNCwgMHgxNywgMHgyMCwKKzB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4MkYsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsCisweDAyLCAweEYwLCAweDAyLCAweEMxLCAweDNDLCAweDAwLCAweEYzLCAweDAyLCAweENDLCAweDAzLCAweEYwLCAweDA3LCAweEMwLAorMHgzQywgMHgwMCwgMHhGRiwgMHgwMywgMHhDQywgMHgwMywgMHgzMCwgMHg4MiwgMHhDMCwgMHg2QywgMHg0MCwgMHgzMywgMHgwMCwKKzB4RkMsIDB4NDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4NEYsIDB4MDAsIDB4RjMsIDB4MDAsIDB4OEQsIDB4MDMsIDB4MzAsIDB4MEYsCisweEMwLCAweDZGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAzLCAweDMwLCAweDBGLCAweEQwLCAweDA0LCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHg0NiwgMHgwMiwgMHgxMSwgMHgwMiwgMHg1NCwgMHgwNiwKKzB4OTAsIDB4NzEsIDB4NDAsIDB4MzQsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MjAsIDB4NDAsIDB4MzQsCisweDAwLCAweENELCAweDAwLCAweDZDLCAweDAzLCAweDEwLCAweDI1LCAweDQxLCAweDg0LCAweDA2LCAweDExLCAweDAxLCAweDc0LAorMHgwMywgMHgxMCwgMHgxRCwgMHhDMCwgMHg0MSwgMHgwMCwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwMywgMHg1MCwgMHgwRCwgMHg0MCwKKzB4NjcsIDB4MDAsIDB4OUQsIDB4MDUsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4QzIsIDB4MDYsIDB4MDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDIyLCAweDAwLCAweEQxLCAweDAyLCAweDQ0LCAweDA2LCAweEQwLAorMHgxMSwgMHg0MCwgMHg2NCwgMHgwMCwgMHg4MSwgMHgwMCwgMHg0NCwgMHgwMywgMHhEOCwgMHgyMSwgMHg0MCwgMHgzNCwgMHgwMCwKKzB4REQsIDB4MDAsIDB4NDQsIDB4MDcsIDB4MTAsIDB4MDksIDB4NDAsIDB4MTAsIDB4ODAsIDB4MTEsIDB4MDMsIDB4NzQsIDB4MDMsCisweDkwLCAweDFELCAweDQxLCAweDM3LCAweDAxLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweDEwLCAweDBELCAweDQwLCAweDM3LAorMHgwMSwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwMywgMHgxNCwgMHgwRCwgMHg0NCwgMHgwNCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4OTgsIDB4MDgsCisweDQwLCAweDIwLCAweDAwLCAweDgxLCAweDgwLCAweDA1LCAweDAzLCAweEQwLCAweDA5LCAweDQwLCAweDMwLCAweDAwLCAweERELAorMHgwMCwgMHgyNCwgMHgwMywgMHgxNCwgMHgwMCwgMHg1MCwgMHgxMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMywgMHg5MCwKKzB4MEMsIDB4NDAsIDB4NTcsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4NTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4ODAsCisweDBELCAweDAyLCAweDc0LCAweDAzLCAweDEwLCAweDBELCAweDRDLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHgyMiwgMHg0MCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMiwgMHhGMSwgMHgwMSwgMHg1MCwKKzB4M0MsIDB4MDAsIDB4NDMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4RjAsIDB4MDUsIDB4RDAsIDB4M0MsIDB4MDAsIDB4REYsIDB4MDAsCisweDQ0LCAweDAzLCAweDMwLCAweDAwLCAweEMwLCAweDA0LCAweDAwLCAweDEzLCAweDAwLCAweEZDLCAweDAzLCAweEIwLCAweDBELAorMHhDMCwgMHgyNywgMHg0MCwgMHhGMywgMHgwMCwgMHhDNCwgMHgwMywgMHgzMCwgMHgwRiwgMHhDMCwgMHgyNywgMHgwMCwgMHgxRiwKKzB4MDIsIDB4QkMsIDB4MTMsIDB4MzAsIDB4QUQsIDB4QzIsIDB4MDQsIDB4NjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA1LCAweEIwLCAweDBGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAyLCAweEY4LCAweDBCLCAweEMwLCAweDNGLAorMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwMywgMHg0MCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywKKzB4MDMsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4NzQsIDB4MEIsIDB4RTAsCisweDBELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEM4LCAweDJGLCAweDMwLCAweEJGLCAweDA0LAorMHg3QywgMHgwQiwgMHhGMCwgMHg0RiwgMHhDMCwgMHgxNywgMHg2MiwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTAsIDB4N0YsIDB4MDAsIDB4N0UsIDB4MDEsIDB4RkMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4NDQsIDB4M0MsIDB4MDUsCisweEY3LCAweDAwLCAweEVDLCAweDIzLCAweEIwLCAweDRGLCAweEMwLCAweDQ5LCAweDAwLCAweDM3LCAweDAzLCAweEZDLCAweDAzLAorMHgzMiwgMHgyRiwgMHg0MCwgMHgzRCwgMHgwMiwgMHgyMywgMHgwMywgMHhEQywgMHgyNCwgMHg3OCwgMHg5MywgMHhDMCwgMHg0OCwKKzB4MDAsIDB4MjMsIDB4MDEsIDB4RTQsIDB4MDMsIDB4QjAsIDB4MTcsIDB4QzAsIDB4NEMsIDB4MDAsIDB4RkYsIDB4MjEsIDB4Q0MsCisweDA2LCAweEUwLCAweDAzLCAweEMwLCAweDBFLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorMHgwOCwgMHg3RiwgMHgwMCwgMHhERCwgMHgwMSwgMHhGNCwgMHgwNywgMHgxMCwgMHgxRiwgMHg0MCwgMHhGNCwgMHgwMCwgMHhGMSwKKzB4MDMsIDB4ODQsIDB4M0IsIDB4MTAsIDB4OUQsIDB4QzAsIDB4NjQsIDB4MDAsIDB4MUQsIDB4MDAsIDB4RjQsIDB4MkYsIDB4MTQsCisweDZGLCAweDQ0LCAweEJDLCAweDAzLCAweDExLCAweDg0LCAweDRDLCAweDAwLCAweEQwLCAweDQxLCAweEMwLCAweDU0LCAweDQ4LAorMHg1MSwgMHgwMSwgMHg0NCwgMHgyRiwgMHgxMCwgMHgxMSwgMHg1MCwgMHg0NCwgMHgwMCwgMHhGRCwgMHhBMSwgMHg0NCwgMHgwNCwKKzB4RDEsIDB4MDksIDB4NDAsIDB4MEMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsCisweDMzLCAweDAwLCAweDBELCAweDQwLCAweDM0LCAweDAzLCAweDkxLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweEM1LCAweDIyLAorMHgyNCwgMHgxMywgMHg5MSwgMHgwQywgMHg0MCwgMHgwMSwgMHgwOCwgMHgwRCwgMHg4NCwgMHgzNCwgMHgwMywgMHg5MCwgMHgyQywKKzB4NDAsIDB4MzEsIDB4MjEsIDB4MDEsIDB4QzAsIDB4MTQsIDB4MTQsIDB4NTAsIDB4MDEsIDB4NDAsIDB4MzIsIDB4MjAsIDB4OTEsCisweDAwLCAweDA0LCAweDAzLCAweDkwLCAweDBELCAweDQwLCAweDAyLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDAyLCAweEQwLAorMHgwMSwgMHg0MiwgMHg0RCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHgzNSwKKzB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4OTAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4NjAsIDB4NDQsCisweDAzLCAweDEwLCAweDBELCAweDQwLCAweDY0LCAweDI0LCAweDFELCAweDAxLCAweDc0LCAweDAzLCAweDkyLCAweDBELCAweDQwLAorMHgzMiwgMHg4OCwgMHgwMSwgMHgwMSwgMHg1NCwgMHgwNCwgMHhDMCwgMHgxOSwgMHg1MCwgMHg5NCwgMHgwMSwgMHg5MCwgMHgwOCwKKzB4NDQsIDB4MDMsIDB4RDAsIDB4MDksIDB4NDAsIDB4NDYsIDB4MDQsIDB4REQsIDB4MDAsIDB4NDQsIDB4NDYsIDB4RDEsIDB4MzEsCisweDQwLCAweDBELCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM3LCAweDAwLAorMHg5RiwgMHgwNCwgMHgzQywgMHgwMywgMHg5NCwgMHgwQywgMHhEMCwgMHgzNCwgMHgxMCwgMHhENywgMHgwMCwgMHg2QywgMHgwMywKKzB4QjAsIDB4MEQsIDB4QzgsIDB4NDUsIDB4MTAsIDB4OUYsIDB4MDMsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MEQsIDB4QzAsIDB4MzUsCisweDAwLCAweDEzLCAweDExLCAweDVDLCAweDA0LCAweDcxLCAweDMwLCAweEMwLCAweDI2LCAweDAwLCAweDEzLCAweDgzLCAweDZDLAorMHgwMywgMHhCMCwgMHg0OCwgMHhDMCwgMHhDNiwgMHgwMCwgMHhDRiwgMHgwMCwgMHg0RCwgMHgwRSwgMHhGMCwgMHgzMSwgMHhEMCwKKzB4MjMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEYsIDB4ODAsIDB4M0QsIDB4MDAsIDB4QkYsCisweDAwLCAweEZDLCAweDAzLCAweDcwLCAweDBGLCAweEMwLCAweDNCLCAweDAwLCAweEVELCAweDQwLCAweEZDLCAweDgzLCAweEYwLAorMHgwRSwgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3MCwgMHgwRSwgMHhDNCwgMHgzRCwgMHgwMCwKKzB4QkYsIDB4MDAsIDB4RUMsIDB4MDIsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4N0YsIDB4MDAsIDB4M0MsIDB4MDMsCisweDEwLCAweDRCLCAweEMwLCAweDBELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDA5LCAweEMwLCAweDFFLAorMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQSwgMHgwOCwgMHgzNSwgMHgyMCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4RjAsIDB4NEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NUMsIDB4ODMsIDB4NzAsIDB4MEQsCisweEMwLCAweDA3LCAweDAwLCAweDkzLCAweDAyLCAweDdDLCAweDAzLCAweEIwLCAweDBELCAweEMwLCAweDM0LCAweDAwLCAweDlGLAorMHgwMiwgMHg1QywgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMiwgMHhBNywgMHgwMSwgMHg5MywgMHgwNiwgMHg3QywgMHg0NywgMHgzMCwKKzB4NDksIDB4QzAsIDB4ODcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDEsIDB4QzQsIDB4MDgsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDM0LCAweDIwLCAweDlELCAweDgwLCAweDc0LAorMHgwMywgMHhEMCwgMHg0RCwgMHg2MCwgMHgzRiwgMHgwMCwgMHhGRCwgMHgwMCwgMHhDNCwgMHg4MywgMHgxMCwgMHgwRiwgMHg0NCwKKzB4QTcsIDB4MUEsIDB4OTEsIDB4MDAsIDB4QkMsIDB4MTMsIDB4RDAsIDB4MEYsIDB4NDAsIDB4M0MsIDB4MDAsIDB4OUQsIDB4MDAsCisweDQ0LCAweDAyLCAweEQwLCAweDE5LCAweDQwLCAweDgzLCAweDAxLCAweEMxLCAweDUxLCAweEM0LCAweDBCLCAweDUwLCAweDA5LAorMHg0MCwgMHg4NywgMHgwMCwgMHhEQywgMHgwMCwgMHg3NCwgMHgwQSwgMHhEMCwgMHg5OSwgMHg0MCwgMHg2RCwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MTMsCisweEQwLCAweDJDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDU0LCAweDAzLCAweDU4LCAweDBDLCAweDQxLCAweDIzLAorMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgxMywgMHg5MCwgMHgwQywgMHg0NCwgMHgzMCwgMHgwMCwgMHgwRCwgMHg4MCwgMHgxNCwKKzB4MDAsIDB4RDEsIDB4MDAsIDB4NDAsIDB4ODIsIDB4MDgsIDB4QzUsIDB4NjMsIDB4MTQsIDB4MDMsIDB4MTAsIDB4M0MsIDB4NDAsCisweEMzLCAweDAzLCAweENELCAweDAwLCAweDM0LCAweDE2LCAweEQwLCAweDE5LCAweDQwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRCwgMHg4MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHg4MSwgMHhCNCwgMHgyNywgMHhEMCwKKzB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4Q0QsIDB4ODksIDB4ODQsIDB4MDcsIDB4MTgsIDB4MUUsIDB4NDAsIDB4NkYsIDB4MDEsCisweDIxLCAweDAxLCAweEI0LCAweDA3LCAweEMwLCAweDFDLCAweDQ4LCAweDc4LCAweDAwLCAweEJELCAweDQxLCAweDg0LCAweDA3LAorMHhEMCwgMHgxQSwgMHg0MSwgMHg1RiwgMHgwMCwgMHhFNSwgMHgwMSwgMHg4NCwgMHgwNywgMHg1MCwgMHgxRSwgMHg0MCwgMHg0QiwKKzB4MDEsIDB4RUQsIDB4MjEsIDB4QjQsIDB4MDQsIDB4RDAsIDB4NUEsIDB4NDAsIDB4M0QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweDhGLCAweDA4LCAweDNDLCAweDAzLCAweEYwLCAweDhDLAorMHg0MCwgMHgzMywgMHgwMCwgMHhDRiwgMHgwMCwgMHgxQywgMHgyMywgMHg3MCwgMHgxQywgMHhDMCwgMHg2MywgMHgyMSwgMHg4MywKKzB4MDIsIDB4M0UsIDB4MDMsIDB4QjAsIDB4OEMsIDB4QzAsIDB4MzAsIDB4MDAsIDB4Q0YsIDB4MDgsIDB4MUMsIDB4MDIsIDB4RjAsCisweDA0LCAweEMwLCAweDMzLCAweDAxLCAweDg3LCAweDA0LCAweDFDLCAweDIzLCAweDM4LCAweDBDLCAweEMxLCAweDAzLCAweDAyLAorMHhDRiwgMHgwMCwgMHgzQywgMHhFMywgMHhGMCwgMHgwMCwgMHhDMSwgMHg0OCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4N0QsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4ODcsIDB4RjAsIDB4OUYsIDB4QzAsCisweDNGLCAweDAwLCAweEZGLCAweDUwLCAweEZDLCAweDAzLCAweEYyLCAweDhGLCAweEMwLCAweDJGLCAweDQyLCAweEJGLCAweDA4LAorMHhEQywgMHgwMywgMHhGOCwgMHgwRiwgMHhDMiwgMHgzRiwgMHg5NCwgMHhGRiwgMHg0MCwgMHhGQywgMHgyMywgMHhGMCwgMHg4RCwKKzB4NDAsIDB4M0YsIDB4NDAsIDB4QkIsIDB4MDAsIDB4NUMsIDB4NjMsIDB4RjAsIDB4MEYsIDB4QzgsIDB4MEYsIDB4MDMsIDB4RkYsCisweDAxLCAweEZDLCAweDAzLCAweEYwLCAweDQzLCAweEMwLCAweDBCLCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHg4MCwgMHg5RSwgMHgwMCwgMHg3QywgMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDIsIDB4REYsIDB4MTEsIDB4NEMsIDB4NTMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OUYsIDB4MjAsIDB4NEMsCisweDAzLCAweEYwLCAweDRELCAweEMwLCAweEY3LCAweDAxLCAweDVCLCAweDAwLCAweDdDLCAweDAxLCAweDcyLCAweDFELCAweEMwLAorMHgyNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwMywgMHhGMCwgMHgwOCwgMHhDMCwgMHg0NCwgMHhDMCwgMHhEQiwgMHgwMSwKKzB4NEMsIDB4MDEsIDB4RDAsIDB4MUQsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEzLCAweDg4LCAweDM5LCAweDAxLCAweEFELCAweDAwLCAweDM0LCAweDhCLCAweDEwLCAweDJFLCAweDQ4LCAweDNCLCAweDMxLAorMHhFRCwgMHgwNCwgMHhBQywgMHgwMywgMHhEMCwgMHgyRSwgMHg0MCwgMHgwQiwgMHgyOCwgMHgzRCwgMHgwMCwgMHg4NCwgMHgzQiwKKzB4RDAsIDB4QUUsIDB4QzAsIDB4MzksIDB4MEEsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4MDAsIDB4MzgsCisweDAwLCAweEVELCAweDgwLCAweDg0LCAweDEzLCAweEQyLCAweDBBLCAweDQwLCAweDA4LCAweDAwLCAweEM1LCAweDAyLCAweDk0LAorMHgwMSwgMHhEMCwgMHgwRiwgMHg0MCwgMHg0QywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4MDAsIDB4NzksIDB4MDIsIDB4QTUsIDB4NDMsIDB4QjQsIDB4MTcsIDB4MTAsIDB4NUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsCisweDAxLCAweDg0LCAweDI3LCAweDU4LCAweDVFLCAweDQ0LCAweDZCLCAweDEwLCAweEFELCAweDExLCAweDg1LCAweDA3LCAweEQwLAorMHgxRSwgMHg0NiwgMHg3MywgMHgwMSwgMHhFOSwgMHg5MSwgMHhCNCwgMHg4NywgMHg0MiwgMHgxRSwgMHg0MCwgMHg3QSwgMHgwMCwKKzB4RkQsIDB4MDEsIDB4OTQsIDB4MDcsIDB4RDAsIDB4MEEsIDB4NDEsIDB4QzgsIDB4NDAsIDB4RUQsIDB4MDUsIDB4ODQsIDB4MDUsCisweEQwLCAweDFBLCAweDQwLCAweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LAorMHgzMywgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMywgMHgxNCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzMsIDB4MDIsIDB4Q0QsIDB4MDMsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEMsCisweDQwLCAweDMxLCAweDAwLCAweEM5LCAweDAxLCAweDM0LCAweDE3LCAweEQwLCAweDVDLCAweDQyLCAweEYyLCAweDAwLCAweENELAorMHg4MCwgMHgwNCwgMHgwMywgMHhEMCwgMHgzOCwgMHg0MCwgMHg3MCwgMHg0MSwgMHhDRCwgMHg0MCwgMHgxNCwgMHg2MywgMHhEMCwKKzB4M0MsIDB4NDksIDB4NTgsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MTUsCisweDAwLCAweDdGLCAweDAwLCAweDNDLCAweDAxLCAweEIwLCAweDA0LCAweEMwLCAweDE3LCAweDAwLCAweDVGLCAweDAwLCAweDRDLAorMHgwMSwgMHhGMCwgMHgwNCwgMHhDMCwgMHg5RiwgMHgwMCwgMHg3RiwgMHgwMSwgMHg0NCwgMHgwMSwgMHhGMCwgMHgwNSwgMHhDNCwKKzB4MTcsIDB4MDAsIDB4N0IsIDB4MDIsIDB4RjQsIDB4MTUsIDB4NzAsIDB4MTcsIDB4RDAsIDB4OUEsIDB4MTAsIDB4N0YsIDB4MTAsCisweDVDLCAweDAxLCAweEYwLCAweDA3LCAweEMwLCAweDFDLCAweDAwLCAweDVGLCAweDAwLCAweENDLCAweDA1LCAweEYwLCAweDU3LAorMHhEMCwgMHg1QywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywgMHgwMCwKKzB4MUYsIDB4MDQsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4M0MsIDB4MDAsCisweEYwLCAweDAxLCAweEM0LCAweDA3LCAweDAwLCAweDFELCAweDAwLCAweDdDLCAweDg4LCAweEYwLCAweDAxLCAweEMwLCAweDA1LAorMHgwMCwgMHgxNywgMHgxMCwgMHg3QywgMHgwMCwgMHhGMCwgMHg4MSwgMHhDMCwgMHgwNSwgMHgwMiwgMHgxRiwgMHgwMCwgMHg3NSwKKzB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4NDAsIDB4MTcsIDB4ODAsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzAsCisweDRCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDAwLCAweDlGLAorMHgwMCwgMHg0QywgMHgxMiwgMHgzMCwgMHgyOSwgMHhDMiwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwKKzB4NDksIDB4QzAsIDB4MjQsIDB4MDYsIDB4OUYsIDB4MTAsIDB4NEMsIDB4MjIsIDB4MzAsIDB4MDksIDB4RTAsIDB4MjcsIDB4MDAsCisweDk3LCAweDAwLCAweDdDLCAweDAyLCAweDMyLCAweDU5LCAweEMwLCAweDI3LCAweDI2LCAweDkzLCAweDgwLCAweDdELCAweDBBLAorMHhGMCwgMHgxOSwgMHhDMSwgMHg2NywgMHgwMiwgMHg5RiwgMHgwMiwgMHg3QywgMHgwMiwgMHgzMCwgMHg1OSwgMHhDMCwgMHg0MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MkUsIDB4MDAsIDB4OEQsIDB4MDAsCisweEM0LCAweDFFLCAweDEwLCAweDJCLCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDc5LAorMHg0MCwgMHg2NSwgMHgwMCwgMHg5RCwgMHg4MCwgMHg2OCwgMHgwNiwgMHg1MCwgMHgwOSwgMHg2MCwgMHgyNywgMHgwMCwgMHg5RCwKKzB4MDAsIDB4NUMsIDB4MDIsIDB4QjEsIDB4MzksIDB4QzIsIDB4RTcsIDB4MDAsIDB4ODEsIDB4ODIsIDB4NkMsIDB4MUEsIDB4RDAsCisweDg5LCAweEMwLCAweDI1LCAweDAwLCAweEJELCAweDAzLCAweDM0LCAweDFBLCAweDEyLCAweDQ5LCAweDQwLCAweDA3LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgyMCwgMHg5RCwgMHg0MCwgMHg0NCwKKzB4MDIsIDB4MTAsIDB4MjksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTgsIDB4MDksIDB4NDIsCisweDI0LCAweDAwLCAweDhELCAweDAwLCAweDQ0LCAweDgyLCAweDEyLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDk1LCAweDYwLAorMHgzNCwgMHgwMiwgMHg1OCwgMHgyRCwgMHg0MCwgMHhBNywgMHg4MCwgMHhEMSwgMHg5OCwgMHg2NCwgMHgwMiwgMHhEMCwgMHgwOSwKKzB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4NDAsIDB4NzQsIDB4MjIsIDB4MTQsIDB4MDksIDB4NDAsIDB4NjMsIDB4MDAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweDlELCAweDAyLCAweDA0LCAweDAyLAorMHgxMCwgMHgwOCwgMHg0MCwgMHhBMCwgMHgwMCwgMHg4RCwgMHgwNiwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMSwKKzB4MDAsIDB4OEQsIDB4MDgsIDB4NDUsIDB4ODMsIDB4NUEsIDB4ODgsIDB4NjAsIDB4MjMsIDB4ODIsIDB4OEQsIDB4MDgsIDB4MzQsCisweDIyLCAweEQwLCAweDg4LCAweDQwLCAweDI3LCAweDAwLCAweDgxLCAweDAwLCAweDI0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLAorMHgzMSwgMHg4MCwgMHhDRCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHg0OCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4NDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NEQsIDB4MDQsIDB4MzQsCisweDExLCAweDUwLCAweDA0LCAweDA1LCAweDBGLCAweDAwLCAweDdDLCAweDc4LCAweDMwLCAweDQxLCAweDQxLCAweDA0LCAweDAwLAorMHgxRCwgMHgwMiwgMHg0NCwgMHg1MCwgMHgzMSwgMHg2MSwgMHg0MSwgMHg4NywgMHgwNSwgMHgxNywgMHg0MiwgMHg3NCwgMHgwOCwKKzB4NzQsIDB4MjAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4NDAsIDB4NkMsIDB4NTAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsCisweDAwLCAweDFGLCAweDgxLCAweDdDLCAweDAwLCAweDMwLCAweEExLCAweEMwLCAweDc3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHhBNywgMHgwMCwgMHhCRiwgMHgwMSwgMHg3QywgMHgwQSwgMHhGMSwgMHgyOSwKKzB4QzAsIDB4NjcsIDB4MDAsIDB4OUYsIDB4MDksIDB4N0MsIDB4ODIsIDB4RjQsIDB4MDksIDB4QzAsIDB4MkYsIDB4MjAsIDB4QkYsCisweDA0LCAweDdDLCAweDAyLCAweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDAxLCAweEZGLCAweDI0LCAweERDLCAweDEyLCAweDAwLAorMHg0QiwgMHhDMCwgMHgyRCwgMHg0MCwgMHhBRiwgMHgwMCwgMHg2QywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDOCwgMHgzOSwgMHgwMCwKKzB4OUYsIDB4MjIsIDB4RkMsIDB4MDMsIDB4RjAsIDB4OEIsIDB4QzAsIDB4NzcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDY3LCAweDAxLCAweDkzLCAweDAyLCAweENDLCAweDA2LCAweEYwLCAweDFCLCAweEMwLAorMHgyNSwgMHgwMiwgMHg5QiwgMHhFMCwgMHg3QywgMHgxMiwgMHhGMCwgMHg0QiwgMHhDNSwgMHgyRiwgMHgwMCwgMHg5MywgMHgwMCwKKzB4REMsIDB4MDIsIDB4MzgsIDB4ODksIDB4QzAsIDB4MjcsIDB4NDksIDB4OTMsIDB4MDAsIDB4NUUsIDB4MjIsIDB4MzAsIDB4MEIsCisweDQwLCAweDJDLCAweDAwLCAweEEzLCAweDAwLCAweENDLCAweDEyLCAweEYwLCAweDBBLCAweEMwLCAweDJGLCAweDAwLCAweEJCLAorMHgxMSwgMHhGQywgMHg4MiwgMHhFMCwgMHgwQiwgMHhEMCwgMHg3NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDgsIDB4MEIsIDB4MDEsIDB4NDUsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDYsIDB4NDcsCisweDAxLCAweDFELCAweDlELCAweDc0LCAweDUwLCAweEQwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDExLCAweDEwLCAweDVDLAorMHgwMCwgMHgxNCwgMHg4MSwgMHgwMCwgMHgwNywgMHgyNSwgMHgxMSwgMHgwNCwgMHg1QywgMHgxMCwgMHgxMCwgMHgwMSwgMHg1MSwKKzB4MDQsIDB4MjAsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDIsIDB4MDUsIDB4NDgsIDB4MDcsIDB4MTAsIDB4MTMsIDB4NDIsCisweDc0LCAweDAwLCAweEQwLCAweDA1LCAweDQwLCAweDYwLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMiwgMHhBMCwgMHhBMywgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwQSwgMHhEMCwgMHgyOCwgMHg0MCwgMHgyMywgMHgwMiwKKzB4OEQsIDB4MDAsIDB4MzQsIDB4MzIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODEsIDB4MDQsIDB4MTQsIDB4MjIsCisweDkwLCAweDA4LCAweDQ0LCAweDIzLCAweDAzLCAweDg5LCAweDE0LCAweDU0LCAweDEyLCAweDE4LCAweDQ4LCAweDQwLCAweDIyLAorMHg0MCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgyMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4OSwgMHgwMCwgMHgzNCwKKzB4MDIsIDB4RDEsIDB4MDgsIDB4NDAsIDB4NDgsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweDg4LCAweDI1LCAweDAwLCAweDg5LCAweDA0LCAweDQ0LCAweDAyLCAweEQwLCAweDBELCAweDQwLCAweDI3LCAweDAwLCAweDlELAorMHg4MCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHgwMCwgMHhBNywgMHg0MiwgMHg5MSwgMHgwMiwgMHg1NCwgMHgwMiwgMHg5OCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MjYsIDB4MjAsCisweDkxLCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAxLCAweDkxLCAweDAwLCAweDc0LCAweDAyLAorMHhEMCwgMHgwRCwgMHg0MCwgMHg2MCwgMHgyOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgyOCwKKzB4MjUsIDB4MDAsIDB4QjMsIDB4ODEsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzgsIDB4MkYsIDB4MDgsIDB4QkIsIDB4ODAsCisweDdDLCAweDAyLCAweEYxLCAweDA5LCAweDgwLCAweDY1LCAweDAwLCAweDkzLCAweDAwLCAweDFDLCAweDAyLCAweDkwLCAweDA5LAorMHg0OCwgMHgyNywgMHgwMCwgMHg5QiwgMHgwMywgMHgxQywgMHgxQSwgMHgzMCwgMHg1OSwgMHhDMCwgMHgyMiwgMHgwMSwgMHg4MywKKzB4QTcsIDB4NEMsIDB4MDIsIDB4RDAsIDB4MjksIDB4QzQsIDB4NjcsIDB4MDAsIDB4OUIsIDB4ODAsIDB4N0MsIDB4MkEsIDB4RjAsCisweDI5LCAweEMwLCAweDE0LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDAwLCAweDI1LAorMHgwMCwgMHg5RiwgMHgwMSwgMHg3MCwgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHg4MCwgMHg5QywgMHhBMCwgMHg3QywKKzB4ODIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4OUYsIDB4MDMsIDB4N0UsIDB4MDIsIDB4NTAsIDB4MDksIDB4QzQsCisweDI3LCAweDAwLCAweDlGLCAweDA1LCAweDdDLCAweDAyLCAweEY0LCAweDQ5LCAweEUwLCAweDY1LCAweDAxLCAweDlDLCAweDQ0LAorMHg1QywgMHg0MiwgMHhGMCwgMHgwOSwgMHgwMCwgMHg2NywgMHgwNCwgMHg5RiwgMHgyMCwgMHg3RSwgMHgwNiwgMHhEMCwgMHg1OCwKKzB4QzEsIDB4NUIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDEsIDB4MDAsCisweDFGLCAweDAwLCAweDVDLCAweDQwLCAweEYwLCAweDAxLCAweEUwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLAorMHgzMSwgMHgwMSwgMHhFMCwgMHgwNiwgMHgxMSwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHg5MCwgMHgwMSwgMHhDOCwgMHgwMywKKzB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4ODAsIDB4RjgsIDB4MDEsIDB4QzAsIDB4ODYsIDB4MDAsIDB4MUYsIDB4ODAsIDB4NUMsCisweDAwLCAweDYwLCAweDAxLCAweEMwLCAweDg1LCAweDAwLCAweDFGLCAweDA0LCAweDRELCAweDAwLCAweEYwLCAweDIxLCAweEMwLAorMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyMCwgMHgxNCwgMHgwMCwgMHg1RCwKKzB4MDAsIDB4RDQsIDB4MEQsIDB4RDgsIDB4MDcsIDB4NjAsIDB4MTcsIDB4MTAsIDB4NUUsIDB4MDAsIDB4NzQsIDB4MDEsIDB4MTAsCisweDU3LCAweEUwLCAweDlCLCAweDgwLCAweDVELCAweDIwLCAweEY0LCAweDAxLCAweEIyLCAweDA1LCAweEMwLCAweDE3LCAweDgwLAorMHg1RCwgMHgwMCwgMHg3QywgMHgwMSwgMHg3MCwgMHgxNywgMHhDMCwgMHgxQywgMHgwMCwgMHg3RCwgMHgwMiwgMHhDNCwgMHgwMSwKKzB4QjAsIDB4MTcsIDB4NDAsIDB4OTgsIDB4MDAsIDB4N0YsIDB4MDMsIDB4QzQsIDB4NDUsIDB4RDIsIDB4MDcsIDB4NDgsIDB4NDEsCisweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLAorMHgwNCwgMHgyRSwgMHg1MCwgMHgwOCwgMHg0MCwgMHgzMSwgMHg4MCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgwMywgMHgxMywgMHgxOCwKKzB4NjAsIDB4MzIsIDB4ODAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTgsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MTAsIDB4Q0QsCisweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDdDLCAweDUwLCAweDIwLCAweDAwLCAweENELCAweDFBLCAweDE2LCAweDBCLCAweDEwLAorMHgwNCwgMHgwMCwgMHhGMSwgMHgwMiwgMHg4RCwgMHgwMCwgMHgwNCwgMHgxRSwgMHhEMCwgMHg4QywgMHg0MCwgMHg0MCwgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDQsIDB4OTQsCisweDAyLCAweEQwLCAweDBBLCAweDQwLCAweDNCLCAweDAxLCAweEVELCAweDA0LCAweDM0LCAweDA3LCAweDE4LCAweDBBLCAweDQwLAorMHgzQiwgMHgwMCwgMHhFRCwgMHgwNCwgMHgzNCwgMHgwMiwgMHg5MiwgMHg0RSwgMHg0MCwgMHgzQiwgMHgwMSwgMHhFRCwgMHgwMCwKKzB4QjQsIDB4MDMsIDB4NTAsIDB4MEUsIDB4NDEsIDB4MjgsIDB4MTAsIDB4QUQsIDB4NDAsIDB4ODQsIDB4MDQsIDB4OTAsIDB4M0UsCisweDQwLCAweDM4LCAweDAwLCAweEFELCAweDgzLCAweDg2LCAweDAzLCAweEQwLCAweDBBLCAweDQwLCAweDExLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgwMywgMHg5NCwgMHgwNywKKzB4NzAsIDB4MUEsIDB4QzAsIDB4NzksIDB4MDEsIDB4RUQsIDB4MDUsIDB4QjQsIDB4MzcsIDB4MzEsIDB4MUUsIDB4NDAsIDB4N0EsCisweDA4LCAweEVELCAweDBCLCAweEI0LCAweDA2LCAweDM0LCAweDFFLCAweEMwLCAweDdCLCAweDAyLCAweEVELCAweDg1LCAweEJDLAorMHgyNywgMHhEOCwgMHgxNywgMHhFMCwgMHg2OCwgMHgwMCwgMHhBRiwgMHg4MSwgMHg5QywgMHgwNCwgMHg3OCwgMHgxNiwgMHhDMCwKKzB4NzksIDB4MDAsIDB4RUYsIDB4MDEsIDB4OEMsIDB4MDcsIDB4RjAsIDB4MUIsIDB4QzAsIDB4NTAsIDB4NjAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDEwLCAweERGLCAweDQwLCAweDdDLCAweDAzLCAweEYwLAorMHgwOSwgMHhDMCwgMHgzNywgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgyQiwgMHhGNCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MzUsIDB4ODIsIDB4REYsIDB4M0UsIDB4NUMsIDB4M0IsCisweDcwLCAweDAxLCAweEUwLCAweDI1LCAweDIwLCAweDlGLCAweDAwLCAweDNDLCAweDAwLCAweDcwLCAweDBELCAweEMyLCAweDI3LAorMHgwMCwgMHhDNywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwOSwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTAsIDB4N0YsIDB4MDAsIDB4RUYsIDB4MDksIDB4Q0MsIDB4MzIsIDB4RjgsIDB4OEIsCisweEMwLCAweDdDLCAweDA0LCAweEZGLCAweDExLCAweEZDLCAweDA3LCAweEYwLCAweDFCLCAweEM4LCAweDdGLCAweDAwLCAweEZGLAorMHgwMSwgMHhERSwgMHgwNiwgMHhGMCwgMHhCRCwgMHhDMSwgMHg3NCwgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgwNywgMHhGMCwKKzB4MUIsIDB4QzAsIDB4NkMsIDB4MDAsIDB4OUIsIDB4ODksIDB4RkMsIDB4MjUsIDB4RjAsIDB4MTcsIDB4QzAsIDB4N0MsIDB4MDAsCisweEJCLCAweDAxLCAweEJDLCAweDA3LCAweDM4LCAweDlGLCAweEMwLCAweDFCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNSwgMHg4MCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgxQywgMHg4NCwgMHgyMiwgMHhEOCwgMHgwQSwgMHhDMCwKKzB4M0EsIDB4QTAsIDB4RUQsIDB4MDgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MTMsIDB4MDAsIDB4RUQsIDB4MDAsCisweDhDLCAweDEyLCAweEQwLCAweDVFLCAweDQwLCAweDc4LCAweDAyLCAweEVELCAweDAwLCAweDlDLCAweDQzLCAweEQwLCAweDBCLAorMHg2MCwgMHgyOCwgMHgwNiwgMHhBRCwgMHgwNSwgMHhCNCwgMHgyNCwgMHhEMiwgMHgwRSwgMHhDMCwgMHgzQSwgMHg4MCwgMHhBNSwKKzB4MDAsIDB4QjQsIDB4MDksIDB4RjIsIDB4QzIsIDB4NDAsIDB4NTcsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA4LCAweDM5LCAweDAwLCAweEZELCAweDgxLCAweEE0LCAweDAzLCAweEQ4LCAweDg4LCAweDQwLCAweDc4LAorMHgwMiwgMHhFNSwgMHgwMSwgMHhCNCwgMHgwMywgMHg1MCwgMHgwQSwgMHg0MCwgMHgzQiwgMHgwMiwgMHhGRCwgMHgxOCwgMHg5NCwKKzB4MDIsIDB4RDEsIDB4NEUsIDB4NTQsIDB4M0EsIDB4MTAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MjMsIDB4RDAsIDB4MEUsIDB4NDAsCisweDI4LCAweDAwLCAweEE5LCAweDE0LCAweEI0LCAweDgwLCAweEQ4LCAweDg2LCAweDQwLCAweDM5LCAweDAwLCAweEUxLCAweDAwLAorMHhCNCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHg2MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDYsIDB4MjgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MDEsIDB4RDAsIDB4MDgsIDB4NjQsIDB4MzIsIDB4MDAsCisweENELCAweDgwLCAweDM0LCAweDAzLCAweEQwLCAweDA4LCAweDYwLCAweDEzLCAweDAwLCAweENELCAweDgxLCAweDA0LCAweDAyLAorMHhEMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhERCwgMHg0MCwgMHg1NCwgMHgwRiwgMHhEMSwgMHgyOCwgMHg0NCwgMHhFMCwKKzB4MTAsIDB4OEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDAsIDB4ODgsIDB4NDAsIDB4NjMsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MzQsCisweDA5LCAweDUyLCAweDMwLCAweDQwLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHhBOCwgMHgzNSwgMHgwMCwgMHhERiwgMHg0MSwgMHg2RCwgMHgwMiwgMHhEMCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhERiwKKzB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzgsIDB4RjcsIDB4MDgsIDB4RkYsIDB4MDMsIDB4NTQsIDB4ODMsIDB4RDIsCisweDBGLCAweDQ4LCAweDNFLCAweDAwLCAweEZGLCAweDA4LCAweEY0LCAweDBCLCAweEQwLCAweDJELCAweEQwLCAweDM0LCAweDAyLAorMHg4QiwgMHgwMSwgMHg3QywgMHgwMCwgMHhEMCwgMHgwQywgMHhDMCwgMHhCNSwgMHgwNiwgMHg5MywgMHgwMCwgMHg3QywgMHgwQSwKKzB4MTAsIDB4MjEsIDB4QzAsIDB4NTcsIDB4MDEsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDMzLCAweDAwLCAweERGLCAweDEwLCAweDNDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLAorMHg3QywgMHgwMywgMHhGMCwgMHgyOSwgMHhDNCwgMHg3NywgMHgwNCwgMHhERiwgMHgwNCwgMHgxQywgMHgwQSwgMHhGMCwgMHgwRCwKKzB4QzAsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4NEQsIDB4QzAsIDB4QTcsIDB4MDgsIDB4OUYsCisweDYwLCAweDdDLCAweDg4LCAweEYxLCAweDJELCAweDQwLCAweEI2LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLAorMHhBMSwgMHhDOCwgMHgzNywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwKKzB4MDAsIDB4RjMsIDB4MDAsIDB4RkMsIDB4MTIsIDB4MzAsIDB4MkYsIDB4QzAsIDB4M0YsIDB4MjAsIDB4RjMsIDB4NDAsIDB4RkMsCisweDAzLCAweEYwLCAweDFGLCAweEMwLCAweDJDLCAweDAyLCAweEZGLCAweDgwLCAweEZDLCAweDg3LCAweDMwLCAweDBGLCAweEQwLAorMHgzQywgMHgwMCwgMHhGNSwgMHgwMCwgMHhDRCwgMHg0MywgMHhCMCwgMHgwNywgMHhDMCwgMHg3RiwgMHgwMCwgMHhCRiwgMHgwMCwKKzB4Q0MsIDB4ODAsIDB4RjAsIDB4MEYsIDB4ODAsIDB4M0MsIDB4MDAsIDB4QjMsIDB4MDQsIDB4RkMsIDB4NDAsIDB4RjAsIDB4MEEsCisweEMxLCAweDA0LCAweDI2LCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDM2LCAweDIwLAorMHhEMSwgMHgwMCwgMHg3NCwgMHgwNiwgMHg5NCwgMHgwNSwgMHhDMCwgMHgzNSwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywKKzB4RDAsIDB4ODQsIDB4NDEsIDB4MjUsIDB4MDAsIDB4REQsIDB4MjAsIDB4NzQsIDB4MDEsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzQsCisweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweEIwLCAweDIxLCAweDQwLCAweDE3LCAweDAwLCAweDlELCAweDIzLCAweDQ0LAorMHg0QywgMHhEMCwgMHgwRCwgMHg1MCwgMHg2MCwgMHg4NCwgMHg5NSwgMHgwNywgMHg3NCwgMHgwQywgMHhEMCwgMHgzOSwgMHg1MCwKKzB4MDQsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzYsIDB4QzAsIDB4RDEsCisweDAwLCAweDc0LCAweDAyLCAweDkwLCAweDBELCAweDQwLCAweDMzLCAweDAwLCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweEQwLAorMHgwOSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg2NCwgMHgxQiwgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwKKzB4RDUsIDB4MDAsIDB4NjQsIDB4MDMsIDB4MTAsIDB4MDEsIDB4NDAsIDB4QjcsIDB4MDEsIDB4OUQsIDB4MTEsIDB4NDQsIDB4MDQsCisweEQwLCAweDBELCAweDQxLCAweDQ1LCAweDAwLCAweDkxLCAweDAwLCAweDc0LCAweDA2LCAweDUwLCAweDExLCAweDQwLCAweDA0LAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwKKzB4MzQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MzEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsCisweDQwLCAweDExLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAyLCAweDE0LCAweDRDLCAweDQwLCAweDMwLCAweDA0LCAweEM1LAorMHgyMCwgMHgwNCwgMHgwMywgMHhENCwgMHgwMCwgMHg0NCwgMHgyMywgMHg4MCwgMHg4RCwgMHgzMCwgMHgwNSwgMHg0MCwgMHhEMCwKKzB4MEQsIDB4NDAsIDB4MjUsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MzQsIDB4MDAsIDB4RDAsIDB4MDAsIDB4NDIsIDB4NDAsIDB4ODEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM2LCAweDAwLCAweEYzLCAweDQwLCAweDdDLAorMHgwMywgMHgzMCwgMHgwRCwgMHhDNCwgMHgzRiwgMHgwMCwgMHhGMywgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgyRCwgMHhDMiwKKzB4QTQsIDB4MDIsIDB4RkQsIDB4MDAsIDB4N0MsIDB4MDMsIDB4MzAsIDB4MEUsIDB4QzAsIDB4M0MsIDB4MDEsIDB4RjcsIDB4MDAsCisweENDLCAweDAzLCAweDMyLCAweDA1LCAweEMyLCAweDM3LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDEwLCAweEYwLCAweDBELAorMHhDMCwgMHgyNSwgMHgwMCwgMHg1MSwgMHgwMCwgMHg3QywgMHgwMCwgMHg3MCwgMHgwOSwgMHhDMCwgMHgwNCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4QTgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDEsCisweDc4LCAweDA3LCAweEM4LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDQ3LCAweEMxLCAweDBGLAorMHgwMCwgMHhFRiwgMHgwMCwgMHhGQywgMHgwMSwgMHhGMCwgMHgyRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGQiwgMHgwMCwgMHhGQywKKzB4MDMsIDB4MzAsIDB4MDMsIDB4QzAsIDB4MUYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MEEsIDB4NDAsCisweDJBLCAweDA4LCAweDdGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDE3LCAweDIwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgzRiwgMHgwOCwgMHhBMywgMHgwMCwgMHhGQywgMHgzMywgMHgzMCwKKzB4OUIsIDB4QzAsIDB4RUYsIDB4MDAsIDB4RkYsIDB4MDMsIDB4OUQsIDB4MjcsIDB4QjAsIDB4MUYsIDB4QzAsIDB4N0MsIDB4MDIsCisweEZCLCAweDA5LCAweENELCAweDA3LCAweDcwLCAweDFGLCAweEM4LCAweDdBLCAweDA4LCAweEZGLCAweDAxLCAweEZDLCAweDA3LAorMHgzMSwgMHg5RiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwOSwgMHhGRSwgMHgyNywgMHgzMCwgMHgxRiwgMHhDMCwgMHg3QSwKKzB4NDAsIDB4QjMsIDB4MDEsIDB4RkMsIDB4MDAsIDB4MzAsIDB4MjYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDNCLCAweDM4LCAweEQxLCAweDQzLCAweEY0LCAweDEzLCAweDEyLCAweDRDLAorMHg0NCwgMHgyNywgMHgxMSwgMHgxQywgMHg4NCwgMHg0NCwgMHgxMCwgMHgxMCwgMHgxMSwgMHg1MCwgMHgwNCwgMHgwMSwgMHgxMSwKKzB4MDQsIDB4NDQsIDB4RDAsIDB4NTAsIDB4MTEsIDB4NDAsIDB4MDcsIDB4MDUsIDB4MEQsIDB4MTAsIDB4MzQsIDB4NDAsIDB4MTAsCisweDQxLCAweDQwLCAweDA3LCAweDAwLCAweDFELCAweDQ0LCAweDVDLCAweDEwLCAweDEwLCAweDExLCAweDQwLCAweDQ0LCAweDAwLAorMHg5MSwgMHgwMSwgMHg1QywgMHgwQywgMHgxNCwgMHg0NSwgMHg0MCwgMHgwRiwgMHg2MCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MjMsIDB4MDUsIDB4ODEsIDB4MjIsIDB4MTQsIDB4MzMsIDB4MTAsIDB4MEMsIDB4NDgsCisweDIxLCAweDAxLCAweENELCAweDAwLCAweDQ0LCAweDEzLCAweDU0LCAweDBELCAweDQwLCAweDMxLCAweDAwLCAweEMxLCAweDgwLAorMHgwNCwgMHgwMywgMHg1NiwgMHgwQywgMHg0NCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwNCwgMHgzNCwgMHgxMywgMHg5MCwgMHg0QywKKzB4NDAsIDB4MzMsIDB4MDUsIDB4Q0QsIDB4MjAsIDB4MzQsIDB4MTMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MDEsCisweDAxLCAweDM0LCAweDBBLCAweEQwLCAweDQwLCAweDQwLCAweDRGLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNywgMHg4OCwgMHgzNSwgMHg0MCwgMHhEMSwgMHg4NCwgMHg3NCwgMHgwMywgMHgxNCwgMHgzRCwgMHg0MCwgMHgyNywKKzB4MjAsIDB4MEQsIDB4MDAsIDB4NTQsIDB4MDAsIDB4OTAsIDB4MDEsIDB4NDIsIDB4MDUsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NDQsCisweDAwLCAweDU0LCAweDAxLCAweDYwLCAweDA3LCAweDAwLCAweDFELCAweDgwLCAweDcwLCAweDAwLCAweDkwLCAweDAxLCAweDQwLAorMHgwNywgMHgwMCwgMHgxRCwgMHgyMCwgMHgxNCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHg1MSwgMHgwMSwKKzB4NzQsIDB4MDAsIDB4RDEsIDB4MDEsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEEwLCAweDM3LCAweDAwLCAweDkzLCAweDAxLCAweDVDLCAweDAzLCAweDMwLCAweDNELCAweEMwLCAweDY1LCAweDBBLAorMHhERiwgMHgwMCwgMHg0QywgMHg4MywgMHhGMCwgMHgwRCwgMHhDOCwgMHgzNSwgMHg0MCwgMHhEQiwgMHg4MCwgMHgwOCwgMHgwMywKKzB4NzQsIDB4MEQsIDB4QzQsIDB4MzYsIDB4MTAsIDB4REYsIDB4MDAsIDB4NzgsIDB4MDMsIDB4QTAsIDB4MEQsIDB4QzAsIDB4MzcsCisweDgwLCAweERGLCAweDAwLCAweDc0LCAweDAzLCAweDM0LCAweDBDLCAweEMyLCAweDM2LCAweDAwLCAweDkxLCAweDAxLCAweDNDLAorMHgxNSwgMHhGMCwgMHgxNSwgMHhDMCwgMHgwMywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKzB4ODgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4MjEsIDB4RjQsIDB4MDMsIDB4RDAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDAsIDB4M0YsCisweDQwLCAweEU0LCAweDAwLCAweDMwLCAweDAzLCAweEMwLCAweDBFLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDQwLCAweEYwLAorMHgwMywgMHgwMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgzMCwgMHhGQywgMHg4MCwgMHg3MCwgMHgwMywgMHhDMCwgMHgwRiwgMHhBMCwKKzB4M0YsIDB4NDAsIDB4REMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MTQsIDB4RkYsIDB4MDAsIDB4REMsIDB4MjQsCisweDMwLCAweDQ3LCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LAorMHg2MSwgMHgxMCwgMHg5QiwgMHgwMSwgMHg2QywgMHgwMywgMHgzNCwgMHgzRCwgMHhDMCwgMHgyNCwgMHgwMCwgMHhEMywgMHg1MCwKKzB4N0MsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4NzcsIDB4MDAsIDB4RDMsIDB4MDgsIDB4NEMsIDB4MDcsIDB4QjAsIDB4NEQsCisweEMwLCAweDM3LCAweDAwLCAweEQ3LCAweDAxLCAweDRDLCAweDgzLCAweDMwLCAweDFELCAweEMxLCAweDM3LCAweDAwLCAweERGLAorMHgwMSwgMHg3QywgMHg5NywgMHhGMCwgMHgxRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5MywgMHgxMCwgMHg3QywgMHgyMCwgMHgzMCwKKzB4MjUsIDB4RDAsIDB4MDgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4QjQsCisweDAyLCAweEQxLCAweDIwLCAweEQ0LCAweDJCLCAweDEwLCAweDJELCAweDQwLCAweDY0LCAweDAxLCAweDFBLCAweDAzLCAweDNDLAorMHgwMCwgMHgxNCwgMHg0MCwgMHg0MiwgMHg4NywgMHgwMCwgMHgxMSwgMHgwMSwgMHg0NCwgMHgwMCwgMHgxMCwgMHg1MSwgMHhDMCwKKzB4MDUsIDB4NDAsIDB4MTUsIDB4MDEsIDB4NDQsIDB4MDQsIDB4MTAsIDB4MTEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MjEsCisweDc0LCAweDBDLCAweEQwLCAweDAxLCAweDQ0LCAweEMwLCAweDA0LCAweDU5LCAweDAzLCAweDc0LCAweDIwLCAweDAwLCAweEI1LAorMHg0MCwgMHgwQywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMywgMHgyMCwgMHgzMCwgMHgwMCwKKzB4ODksIDB4NDAsIDB4NDQsIDB4MDMsIDB4OTAsIDB4MkMsIDB4NDEsIDB4NjAsIDB4MDAsIDB4QzksIDB4MDIsIDB4MzQsIDB4MDMsCisweDEwLCAweDFDLCAweDQwLCAweEI3LCAweDA0LCAweEMxLCAweDAxLCAweDE0LCAweDAzLCAweDkwLCAweDJDLCAweDQwLCAweDMzLAorMHgwMCwgMHhDOSwgMHgwMiwgMHg1NCwgMHgyNywgMHg5MSwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwKKzB4MEIsIDB4RDAsIDB4MEMsIDB4NDAsIDB4RjAsIDB4NDAsIDB4ODksIDB4MDMsIDB4MTQsIDB4MEMsIDB4MTAsIDB4OUMsIDB4NDAsCisweDRDLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI0LCAweDAwLCAweDc4LCAweDAwLCAweEYxLAorMHgwMSwgMHgxNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg2OCwgMHgwMCwgMHgyOSwgMHgxMSwgMHhDNCwgMHgwNCwgMHgxMCwKKzB4OTIsIDB4NDgsIDB4NEIsIDB4MDAsIDB4MjEsIDB4MDMsIDB4OTQsIDB4MDQsIDB4MTIsIDB4MTIsIDB4NDAsIDB4NEQsIDB4MjAsCisweDI5LCAweDA5LCAweDk1LCAweDBDLCAweDUwLCAweDEyLCAweDQwLCAweDRCLCAweDIwLCAweDJDLCAweDQxLCAweEIwLCAweDA0LAorMHhEMCwgMHgxMywgMHg0MCwgMHg0OCwgMHgwMCwgMHhBOSwgMHgyOSwgMHhCNCwgMHgxNywgMHgxMCwgMHgxRiwgMHg0MCwgMHgzQywKKzB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzIsIDB4MTgsIDB4MjAsIDB4MDAsIDB4OEIsIDB4MDAsCisweDBDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDI0LCAweDAwLCAweENCLCAweDg4LCAweDM0LCAweDIzLCAweDMxLCAweDBDLAorMHhDMCwgMHgzNywgMHgwMCwgMHhEMywgMHg4MCwgMHg1QywgMHgyMywgMHhCMCwgMHg4QywgMHhDMCwgMHgzMywgMHgwMiwgMHhDRiwKKzB4MDAsIDB4MUMsIDB4MjMsIDB4MzAsIDB4MEMsIDB4QzAsIDB4MzMsIDB4MDAsIDB4Q0UsIDB4MDAsIDB4M0MsIDB4MDMsIDB4RjIsCisweDBDLCAweEM0LCAweDMwLCAweDAwLCAweDQzLCAweDMwLCAweDFDLCAweDAzLCAweDMwLCAweDdDLCAweEMwLCAweDQ4LCAweDQwLAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzMCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywKKzB4NEIsIDB4NTAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDIsIDB4M0YsIDB4MjgsIDB4RkUsIDB4MDAsIDB4RjIsIDB4MDMsIDB4NDgsCisweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEVDLCAweDgwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDM3LCAweDAwLAorMHhFQywgMHgwMCwgMHhCMCwgMHg4MywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHg0MCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMiwKKzB4QzAsIDB4NEYsIDB4NDAsIDB4NzcsIDB4MDAsIDB4M0MsIDB4MTMsIDB4RjIsIDB4OEQsIDB4QzAsIDB4MEIsIDB4MjAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDAxLCAweDlGLCAweDAwLCAweDdDLCAweDEzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgyNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgxQywgMHhDMCwgMHgzMCwKKzB4NDAsIDB4RDMsIDB4MDAsIDB4NkYsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEQsCisweDAzLCAweEYwLCAweDFELCAweEQwLCAweDM0LCAweDAwLCAweERGLCAweDIxLCAweDRELCAweDA3LCAweDI0LCAweDBELCAweEMwLAorMHgzMywgMHgwMCwgMHg1MywgMHgwMCwgMHg0QywgMHgwNywgMHgzMiwgMHgxNSwgMHhDMCwgMHg0MCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MzksIDB4MjIsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsCisweDBGLCAweDUwLCAweDI4LCAweDAwLCAweDJELCAweDAwLCAweEJDLCAweDAwLCAweEQwLCAweDAyLCAweDQ4LCAweDA5LCAweDAwLAorMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHhEMiwgMHgwMiwgMHg0MCwgMHgwQiwgMHgwMCwgMHgzRCwgMHgwMCwgMHg4NCwgMHgwMCwKKzB4RDAsIDB4MDMsIDB4NDAsIDB4MDgsIDB4MDAsIDB4M0QsIDB4MDAsIDB4QzQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDQsIDB4MEIsCisweDAwLCAweEUxLCAweDIwLCAweEFDLCAweDAzLCAweEIwLCAweDA3LCAweEMwLCAweDRFLCAweDY4LCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg2OSwgMHgxMCwgMHhFRCwgMHgwMywgMHg5NCwgMHgxNywgMHhEMCwgMHgxRSwKKzB4NDAsIDB4NjgsIDB4MDQsIDB4RUQsIDB4NDEsIDB4QjQsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDQsIDB4N0MsIDB4MjAsIDB4RjksCisweDgxLCAweDg0LCAweDA3LCAweDUwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEU1LCAweDAxLCAweDg0LCAweDA3LCAweEQwLAorMHgxRSwgMHg0MCwgMHg3OSwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NCwgMHg4NywgMHgxOCwgMHgxRSwgMHg0MCwgMHg3QiwgMHg0MCwKKzB4NzEsIDB4MDEsIDB4MDQsIDB4MDcsIDB4MTAsIDB4MTYsIDB4NDAsIDB4MTAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE2LCAweDI4LCAweDMzLCAweDAwLCAweENELCAweDAxLCAweDM0LCAweDAzLCAweEQwLCAweDI0LCAweDRDLAorMHgzMCwgMHgxMCwgMHgwRCwgMHgwMCwgMHgxMiwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwMSwgMHgxMCwgMHgwOSwgMHhDMCwKKzB4MDQsIDB4ODAsIDB4RDAsIDB4MDAsIDB4NDIsIDB4MDMsIDB4MDgsIDB4MUQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4MDAsCisweDQwLCAweDAxLCAweDAwLCAweDBELCAweDAwLCAweDA2LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweDUxLAorMHgwMywgMHgyNCwgMHhDRiwgMHgxMiwgMHgzNCwgMHg0MCwgMHg1OCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTcsIDB4QTAsIDB4MTUsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RDAsIDB4MjcsIDB4QzAsIDB4NTQsCisweDAwLCAweDVGLCAweDAwLCAweDc0LCAweDAxLCAweDcwLCAweDA1LCAweEM0LCAweDE0LCAweDAwLCAweDRCLCAweDAwLCAweDZDLAorMHgwMSwgMHhGMCwgMHgwNCwgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg0QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4MTUsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NDQsIDB4MDEsIDB4MzAsIDB4MDUsIDB4QzAsIDB4MTMsIDB4MDAsIDB4NzEsIDB4MDcsCisweENDLCAweDExLCAweDE0LCAweDE3LCAweDQwLCAweDVDLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMiwgMHgwOCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgyMSwgMHhDMSwgMHgwNywgMHgwMCwKKzB4M0QsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MzcsIDB4MDIsIDB4RkMsIDB4MDAsCisweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBFLAorMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHg0MCwgMHgxRiwgMHgwNiwgMHg3QywKKzB4MDAsIDB4RjAsIDB4QTEsIDB4QzksIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDIxLCAweDAwLCAweDkzLCAweDAwLCAweDNDLCAweDAyLCAweEIwLCAweDA5LCAweEMwLCAweDI0LCAweDEwLCAweDlGLAorMHgwMSwgMHg0QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhDMCwgMHhFNywgMHgwMCwgMHg5MywgMHgwMCwgMHg2QywgMHgwNiwgMHhGMCwKKzB4OTksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4MzQsIDB4NTksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDA1LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQwLCAweDlCLCAweDAwLCAweDZDLCAweDAyLAorMHhGMCwgMHg0OSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwKKzB4MjYsIDB4NDAsIDB4OTEsIDB4ODAsIDB4NzQsIDB4NDIsIDB4MTAsIDB4QTksIDB4NDEsIDB4MjQsIDB4MDAsIDB4OEQsIDB4MDksCisweDVFLCAweDJBLCAweEQwLCAweDE5LCAweDQwLCAweDYzLCAweDQwLCAweDkxLCAweDAyLCAweDQ1LCAweDFBLCAweEQwLCAweDY5LAorMHhDMiwgMHgyNiwgMHgwOCwgMHg5RCwgMHgwMiwgMHg0NCwgMHg0MiwgMHgxMCwgMHgzOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwKKzB4MDIsIDB4NzQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDgsIDB4NjcsIDB4MDQsIDB4OTEsIDB4ODIsIDB4NDQsIDB4ODYsIDB4RDAsCisweDY5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDY0LAorMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHhDNCwKKzB4NDIsIDB4RDAsIDB4NEIsIDB4NDAsIDB4MkYsIDB4MDAsIDB4QjksIDB4MDMsIDB4QzQsIDB4MTIsIDB4RDAsIDB4MEIsIDB4NDAsCisweDJDLCAweDAwLCAweEJELCAweDAwLCAweEM0LCAweDA2LCAweDkyLCAweDBCLCAweDQ0LCAweDJGLCAweDAwLCAweEJELCAweEMwLAorMHhGNCwgMHgwMiwgMHhEMCwgMHgxQiwgMHg0MCwgMHgyRiwgMHg0MSwgMHg5MSwgMHgwOCwgMHg2NCwgMHgyMiwgMHhEMCwgMHgwOSwKKzB4NDAsIDB4NzMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MkEsIDB4MjAsIDB4MDEsCisweDgxLCAweDA0LCAweDM0LCAweDEyLCAweDE4LCAweDA4LCAweDUwLCAweDIwLCAweDAwLCAweEJDLCAweDAwLCAweDg0LCAweDAyLAorMHhEMCwgMHgwQSwgMHg0MCwgMHg2RiwgMHgwMCwgMHhCOSwgMHgwMCwgMHg4NCwgMHgwMiwgMHhEMCwgMHgwQSwgMHg0MCwgMHgyQSwKKzB4MDAsIDB4QUQsIDB4MDEsIDB4ODQsIDB4MDIsIDB4OTAsIDB4MUEsIDB4NDAsIDB4MkIsIDB4MDAsIDB4QUQsIDB4NDEsIDB4QjQsCisweDA2LCAweEQwLCAweDBBLCAweDQwLCAweDJCLCAweDAwLCAweDkxLCAweDAwLCAweDI0LCAweDAyLCAweEQwLCAweDQ4LCAweDQwLAorMHg1MywgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBMCwgMHg4NiwgMHgwMiwgMHgxMywKKzB4MDAsIDB4N0MsIDB4MjgsIDB4MzQsIDB4QTEsIDB4QzAsIDB4ODQsIDB4MDIsIDB4MUYsIDB4MEEsIDB4NDQsIDB4MjgsIDB4RjAsCisweDAxLCAweEMwLCAweDg3LCAweDAyLCAweDFCLCAweDBBLCAweDRDLCAweDI4LCAweEYwLCAweDAxLCAweEMwLCAweDg1LCAweDAyLAorMHgxRiwgMHgwQSwgMHg0QywgMHgyOCwgMHhCMywgMHhBMSwgMHhDMCwgMHg4NywgMHgwMiwgMHgxRiwgMHgwQSwgMHg3QywgMHgyOCwKKzB4RjAsIDB4MDEsIDB4QzAsIDB4MEYsIDB4MTAsIDB4NTMsIDB4MDAsIDB4NkMsIDB4NTEsIDB4RkEsIDB4QTEsIDB4QzAsIDB4NzcsCisweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweDg4LCAweDJGLCAweDAyLCAweEJGLCAweDA4LAorMHg3QywgMHgyMiwgMHg3OCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgyMCwgMHg5RSwgMHgwMCwgMHg1RCwgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4ODcsIDB4MDAsIDB4NUMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdELCAweDAyLCAweDcxLCAweDA5LCAweEMwLCAweDI3LCAweDA4LCAweDlGLCAweDIwLCAweDdDLCAweDgyLCAweEYwLAorMHgwOSwgMHhDMiwgMHgyNywgMHgwMCwgMHhBNywgMHgwMCwgMHhEQywgMHgwMiwgMHhGMCwgMHg4QiwgMHhDMCwgMHg2NywgMHgyMCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsIDB4MkYsIDB4MDEsIDB4QjMsIDB4MTQsIDB4Q0MsCisweEIyLCAweDMwLCAweDBGLCAweEMwLCAweDJELCAweDAwLCAweEJGLCAweDA4LCAweENDLCAweDAyLCAweDEwLCAweDBCLCAweEMwLAorMHgyRiwgMHgwMiwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMiwgMHgzMCwgMHgwQiwgMHhDMCwgMHgyNCwgMHgwMCwgMHhCMywgMHgwMCwKKzB4RkMsIDB4MjIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MjQsIDB4MDAsIDB4QjMsIDB4MDgsIDB4REMsIDB4MDIsIDB4MzAsIDB4MEIsCisweEMwLCAweDJGLCAweDAwLCAweEIzLCAweDAwLCAweEZDLCAweDgyLCAweDMwLCAweDBCLCAweEMwLCAweDY3LCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNywgMHgwRCwgMHgxMSwgMHgwMCwgMHg0NSwgMHgzMCwKKzB4MTAsIDB4MDEsIDB4NDMsIDB4MDQsIDB4MDQsIDB4MUQsIDB4MDAsIDB4MDQsIDB4NTAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDMsCisweDAxLCAweDFELCAweDEwLCAweDRDLCAweDQwLCAweDE0LCAweDAxLCAweDUwLCAweDA0LCAweDA1LCAweDAxLCAweDA0LCAweDc0LAorMHgxMCwgMHhEMCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgyNCwgMHgwMSwgMHg0MCwgMHg1QywgMHg1MCwgMHgxMCwgMHgwMSwgMHg0MCwKKzB4MDcsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsIDB4ODEsIDB4NDAsIDB4NzMsIDB4NjAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDAzLCAweDkxLCAweDIwLCAweDA0LCAweDEyLCAweDkwLAorMHg0OSwgMHg0MCwgMHgyMSwgMHg4MCwgMHg4RCwgMHgwMCwgMHgwNCwgMHgxMiwgMHgxMCwgMHgwQywgMHg0MCwgMHgyMywgMHgwMSwKKzB4OEQsIDB4MDQsIDB4NjUsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4NDEsIDB4ODEsIDB4MTQsIDB4MzQsIDB4MTIsCisweEQ4LCAweDQ4LCAweDUwLCAweDIwLCAweDAwLCAweDgxLCAweDAwLCAweDE0LCAweDEyLCAweDEwLCAweDA4LCAweDQwLCAweDIzLAorMHgwMCwgMHg4OSwgMHgwMCwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0OCwgMHg0QiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjgsIDB4MjUsIDB4NDEsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDMsIDB4OTAsIDB4MjksCisweDQwLCAweDI0LCAweDAyLCAweDhELCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDhELAorMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MzcsIDB4MjAsCisweDk5LCAweDAwLCAweDc0LCAweDBBLCAweDEyLCAweDg5LCAweDQwLCAweDYzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgyNSwgMHgwMCwgMHg4MywgMHg4OSwgMHgwQywgMHgwMiwgMHhCNCwgMHgxOCwgMHhDMCwKKzB4NjUsIDB4MjAsIDB4OUYsIDB4MDAsIDB4NEQsIDB4MDIsIDB4MzQsIDB4MDksIDB4QzAsIDB4MjcsIDB4ODAsIDB4OUYsIDB4MDAsCisweDZDLCAweDAyLCAweDMwLCAweDA4LCAweEMwLCAweDI0LCAweDAwLCAweDkzLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LAorMHhDMCwgMHgyNCwgMHg0MCwgMHg5MywgMHgwMCwgMHg1QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5OSwKKzB4MTIsIDB4N0MsIDB4MDIsIDB4MzQsIDB4MTksIDB4QzAsIDB4MTcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE2LCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDQxLCAweDdDLCAweDAyLCAweDc0LCAweDI5LCAweEMwLCAweDI3LAorMHgwMCwgMHg5RiwgMHg1MCwgMHg3QywgMHg0MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQwLCAweDk3LCAweDE1LAorMHg3RSwgMHg1MiwgMHhGMCwgMHgwOSwgMHhFMCwgMHg0QiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MDgsIDB4NDEsIDB4NDAsIDB4MTMsIDB4MDAsIDB4N0MsIDB4MTAsIDB4RjAsIDB4NDEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDFGLCAweDA4LCAweDRDLCAweDAwLCAweDM0LCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLAorMHhGMCwgMHgxMSwgMHhGMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgyMCwgMHg0QywgMHgwNCwgMHhEMCwgMHgwMSwgMHhDMCwgMHgwNiwKKzB4NDAsIDB4MTMsIDB4NDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4MDIsIDB4MEMsCisweDA4LCAweDE0LCAweDAxLCAweEM0LCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorMHhBMCwgMHg1QywgMHgwMCwgMHg1MSwgMHgwMCwgMHhGNCwgMHgwOSwgMHhEMCwgMHgyNywgMHhDMCwgMHgxNSwgMHgwMCwgMHg3RCwKKzB4MDAsIDB4QzYsIDB4MDUsIDB4NTAsIDB4MDUsIDB4NDAsIDB4NUYsIDB4MDQsIDB4NzMsIDB4MDIsIDB4QjQsIDB4MjksIDB4RDEsCisweDA3LCAweEMyLCAweDEyLCAweDAwLCAweDdELCAweDQ1LCAweEM0LCAweDE1LCAweEQwLCAweDA3LCAweEMwLCAweDE0LCAweDAwLAorMHg3MSwgMHgwMiwgMHhDQywgMHgwMSwgMHhEMCwgMHgxNSwgMHg0MCwgMHg5QiwgMHgwOCwgMHg3MSwgMHgwMiwgMHhENCwgMHgwRCwKKzB4NTAsIDB4RjcsIDB4NDAsIDB4NTAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsCisweDMyLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMxLCAweDIwLCAweENELCAweDAwLAorMHg2NCwgMHgwRiwgMHg1MCwgMHgwOCwgMHg0NCwgMHg3MywgMHgwMCwgMHhDMSwgMHgwNCwgMHgyNCwgMHgwMywgMHhEMCwgMHgwNCwKKzB4NDAsIDB4MzIsIDB4MTAsIDB4Q0QsIDB4MDEsIDB4MDUsIDB4MDMsIDB4NTAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4QzEsCisweDA2LCAweDY1LCAweDA3LCAweEQwLCAweDk4LCAweDQwLCAweDYzLCAweDAzLCAweDQxLCAweDA4LCAweDA0LCAweDIzLCAweDEwLAorMHgwQywgMHg0MCwgMHg1MiwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwOCwKKzB4MDQsIDB4RTEsIDB4MDAsIDB4QjQsIDB4NDMsIDB4OTAsIDB4MEUsIDB4NDAsIDB4MzksIDB4MDAsIDB4N0QsIDB4MDAsIDB4QTUsCisweDBCLCAweDUwLCAweDBFLCAweDQwLCAweDdCLCAweDAwLCAweEUxLCAweDAwLCAweEI0LCAweDAyLCAweEQwLCAweDBFLCAweDQxLAorMHgzOCwgMHgwMSwgMHhFRCwgMHgwMSwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzOCwgMHgwQSwgMHhFMSwgMHg4MywKKzB4QTQsIDB4NDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MUYsIDB4MDAsIDB4NzEsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MTIsCisweDU4LCAweDA2LCAweDIwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDYwLCAweDAwLAorMHhFMywgMHgwMSwgMHhCQywgMHgwNywgMHhEMCwgMHgxRSwgMHhDMCwgMHg3OSwgMHgwMCwgMHhFRiwgMHgwMSwgMHhBNCwgMHgwNiwKKzB4NzAsIDB4MUUsIDB4QzAsIDB4NkIsIDB4NDAsIDB4RTMsIDB4MDEsIDB4QjAsIDB4MDUsIDB4RjAsIDB4MUUsIDB4NDAsIDB4N0EsCisweDAwLCAweEVGLCAweDAxLCAweDhDLCAweDA3LCAweDcwLCAweDFFLCAweEMwLCAweDc4LCAweDA1LCAweEUzLCAweDAxLCAweEFDLAorMHgwNywgMHhGMSwgMHgxRSwgMHhDMCwgMHg2QiwgMHgwMCwgMHg2MywgMHg4MSwgMHg4NCwgMHgwNywgMHgzMCwgMHgxOCwgMHhDMCwKKzB4NDYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MDUsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDAxLCAweEMwLCAweDM1LCAweDEwLCAweDBGLCAweDAwLCAweDVDLCAweDAyLCAweEIwLAorMHgwRCwgMHhDMCwgMHgwNywgMHgwMCwgMHgxNywgMHgwMCwgMHg3QywgMHg4MCwgMHhGMCwgMHgwQywgMHhDMCwgMHgzNywgMHgwNCwKKzB4NUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4RDAsIDB4QjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NUMsIDB4MDEsCisweEYwLCAweDBELCAweEMwLCAweDMzLCAweDIwLCAweDRGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLCAweDQxLAorMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHg0RCwgMHgwMCwgMHhFNywgMHgyMSwKKzB4Q0MsIDB4MDcsIDB4RjgsIDB4ODcsIDB4QzAsIDB4N0MsIDB4MDIsIDB4QkYsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4MzAsIDB4MUYsCisweEMwLCAweDdDLCAweDAwLCAweDczLCAweDAxLCAweEVDLCAweDA1LCAweDMyLCAweDFGLCAweEMwLCAweDdGLCAweDA0LCAweEYzLAorMHgwMSwgMHhGQywgMHgwNCwgMHhCMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgxMCwgMHhCMywgMHgwMSwgMHhDQywgMHgwNywgMHhGMCwKKzB4MUUsIDB4QzAsIDB4M0MsIDB4MDAsIDB4RjMsIDB4MDUsIDB4Q0MsIDB4MDYsIDB4RjAsIDB4MTMsIDB4ODQsIDB4MEIsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDhELCAweDEwLCAweEUxLCAweDA4LCAweDg0LAorMHgyMSwgMHg3OCwgMHgwRSwgMHg0NCwgMHgzOCwgMHgwMCwgMHg3RCwgMHgwNiwgMHhDNSwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwKKzB4MjgsIDB4MDAsIDB4NzEsIDB4NDAsIDB4ODQsIDB4RTAsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4QTEsIDB4MTAsCisweEI0LCAweDAxLCAweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAyLCAweEJCLCAweDE4LCAweDhDLCAweDBBLCAweEQwLCAweDhFLAorMHg0MCwgMHgxOSwgMHgwMiwgMHhBMSwgMHgwNiwgMHhBQywgMHgwMywgMHhEMCwgMHgyMCwgMHg0MCwgMHg1NywgMHg2MCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4RTUsIDB4MDAsIDB4ODUsIDB4MDEsCisweDUwLCAweDg3LCAweDQwLCAweDM4LCAweDhDLCAweEFELCAweDAwLCAweDg2LCAweDAxLCAweDkwLCAweDBGLCAweDQwLCAweDNBLAorMHg0MCwgMHhFMSwgMHgwMCwgMHhDNCwgMHgwMSwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHhGNCwKKzB4MEEsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0YsIDB4MDAsIDB4NjEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsCisweDI5LCAweDQyLCAweDYxLCAweDBDLCAweDk0LCAweDQzLCAweEQwLCAweDAyLCAweDQwLCAweDIzLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyOCwgMHgwMSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMSwgMHg1MCwKKzB4MzEsIDB4NDAsIDB4NzAsIDB4MDAsIDB4MUQsIDB4NDEsIDB4MDIsIDB4NDUsIDB4OTAsIDB4M0MsIDB4NTAsIDB4ODIsIDB4MDQsCisweDAxLCAweDEwLCAweDA0LCAweDA4LCAweDEwLCAweDJDLCAweDQyLCAweDc3LCAweDAxLCAweDAxLCAweDA1LCAweDMwLCAweDA0LAorMHgxMCwgMHhEMCwgMHg0MCwgMHhCMywgMHgwNCwgMHgwOSwgMHgwNSwgMHgwNiwgMHgzNCwgMHhEMCwgMHgxQywgMHg0MCwgMHg5MSwKKzB4MDAsIDB4ODEsIDB4MTMsIDB4MzQsIDB4MEUsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MUIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDgwLCAweDA1LCAweDAwLCAweEQ3LCAweDAwLCAweDRDLCAweDAzLCAweDcwLCAweEU5LAorMHhDMCwgMHg3NCwgMHgwMCwgMHhERiwgMHgwNSwgMHg0QywgMHgwOSwgMHhCMCwgMHgwRCwgMHhDMCwgMHgxNiwgMHgwMCwgMHg5MywKKzB4MDEsIDB4NEMsIDB4MDcsIDB4MzQsIDB4N0MsIDB4NDAsIDB4QkYsIDB4MDAsIDB4MTMsIDB4MDMsIDB4M0MsIDB4MDMsIDB4MTAsCisweDIxLCAweEMwLCAweDNCLCAweDAwLCAweDUzLCAweDAzLCAweDRDLCAweDA4LCAweEYwLCAweDNELCAweEMwLCAweEI1LCAweDAyLAorMHg0MywgMHgxMSwgMHg1MCwgMHgwRCwgMHhGMCwgMHgwOSwgMHg0MCwgMHg3NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4NDcsIDB4MDAsIDB4OUYsIDB4MDEsIDB4N0MsIDB4ODMsIDB4NzAsIDB4MDksIDB4RDIsCisweDI3LCAweDAwLCAweERGLCAweDA0LCAweDdDLCAweDIxLCAweDcwLCAweDhELCAweEMwLCAweEI1LCAweDAyLCAweERGLCAweDA4LAorMHg3QywgMHg4QiwgMHhGMiwgMHgwRCwgMHhDMCwgMHgzNywgMHg0MiwgMHg5RiwgMHgwMCwgMHg3QywgMHgyMywgMHg3MCwgMHgyOSwKKzB4QzAsIDB4NzcsIDB4MDAsIDB4NTcsIDB4MDIsIDB4NUMsIDB4MDIsIDB4RjAsIDB4Q0QsIDB4QzAsIDB4RjcsIDB4NDAsIDB4NUYsCisweDQwLCAweDJDLCAweDBCLCAweEYyLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwMCwgMHgwQiwgMHg0MCwgMHhFMywgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwgMHg4RiwgMHhDMCwgMHgzQywKKzB4MDAsIDB4RkIsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4MzAsIDB4MEYsIDB4QzEsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDksIDB4RkMsCisweDQwLCAweEYwLCAweDBGLCAweEMxLCAweDNDLCAweDAwLCAweDMzLCAweDA1LCAweEZDLCAweDAzLCAweEIwLCAweDQ3LCAweEMwLAorMHgzRCwgMHgwMCwgMHg3MywgMHgwMCwgMHhDQywgMHgyMCwgMHgzMCwgMHg5RiwgMHhDMCwgMHhGRiwgMHgwMCwgMHhCMywgMHgwMCwKKzB4Q0MsIDB4NDMsIDB4MzIsIDB4MEIsIDB4QzQsIDB4MTcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDgxLCAweDIwLCAweEM2LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDBGLCAweEYwLCAweDExLCAweDYwLCAweDYxLCAweDAyLAorMHg5MSwgMHgwMiwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwRCwgMHg0MCwgMHg4NywgMHgwNCwgMHgxRCwgMHgwMCwgMHg1QywgMHgxRSwKKzB4RDEsIDB4MUQsIDB4NDAsIDB4MzQsIDB4MDgsIDB4MTEsIDB4MTIsIDB4NzQsIDB4MDAsIDB4MTAsIDB4NzEsIDB4NDAsIDB4MzQsCisweDAwLCAweDExLCAweDAyLCAweDRDLCAweDBDLCAweDEwLCAweDBELCAweDQwLCAweDMzLCAweDAwLCAweDExLCAweDAxLCAweDQ0LAorMHgyRiwgMHgxNSwgMHgxOSwgMHg0MCwgMHgzNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4QTAsIDB4NDYsIDB4MDAsIDB4RDEsIDB4MDQsIDB4NjQsIDB4MDQsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MzcsIDB4MjAsIDB4MTksCisweDAwLCAweDA0LCAweDEwLCAweDEwLCAweDFELCAweDQ4LCAweDE3LCAweDEwLCAweDFELCAweDAwLCAweDc0LCAweDA1LCAweDUwLAorMHgxRCwgMHg0NCwgMHgzNCwgMHg0MCwgMHg1MSwgMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgzNiwgMHgwMCwKKzB4ODEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDksIDB4MDEsIDB4NjQsIDB4QzMsCisweDEwLCAweDE5LCAweDQwLCAweDA3LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgwMCwgMHgxOCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhEOCwgMHgwOCwgMHg0MCwgMHgyNiwgMHg4MCwgMHg0MSwgMHgwMCwKKzB4MDUsIDB4MDQsIDB4MTgsIDB4MEMsIDB4NDAsIDB4MjMsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MUQsCisweDQwLCAweDMwLCAweDAwLCAweDgxLCAweDAwLCAweDc0LCAweDAxLCAweDE4LCAweDA4LCAweDUwLCAweDM2LCAweDAwLCAweDgxLAorMHgwMCwgMHgwNCwgMHgwMiwgMHgxNCwgMHgwQywgMHg0MCwgMHgzNywgMHgwMCwgMHg4OSwgMHgwMCwgMHgwNCwgMHgwMywgMHgxMCwKKzB4MDAsIDB4NDQsIDB4NDMsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDYsCisweDAwLCAweEQzLCAweDAwLCAweDZDLCAweDAwLCAweEYwLCAweDA1LCAweDUwLCAweDM3LCAweDAwLCAweDFCLCAweDAwLCAweDRDLAorMHgwMCwgMHgyMCwgMHgwRCwgMHhDMCwgMHgxMywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwRCwgMHg1MCwKKzB4MzgsIDB4MDAsIDB4NTMsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDUsIDB4QzAsIDB4M0YsIDB4MDAsIDB4NTMsIDB4MDAsCisweDRDLCAweDAxLCAweDMwLCAweDBELCAweEMwLCAweDM3LCAweDEwLCAweDlCLCAweDIwLCAweDZDLCAweDgxLCAweDMwLCAweEE5LAorMHhDMCwgMHgwNywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgwRiwgMHgwMCwKKzB4QkYsIDB4MDAsIDB4RkMsIDB4MDAsIDB4NzAsIDB4MDIsIDB4QzAsIDB4MkQsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsCisweEYwLCAweDBFLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDQwLCAweDlDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDNGLAorMHgwMCwgMHgzRiwgMHgwMCwgMHhCQywgMHgwMCwgMHg3OCwgMHgwMywgMHhDMCwgMHgzOSwgMHgwMCwgMHgzRSwgMHgwMCwgMHhEQywKKzB4ODAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0IsIDB4MDAsIDB4QTcsIDB4MDAsIDB4RkUsIDB4MDMsIDB4RjAsIDB4NEIsIDB4RTAsCisweDE3LCAweDIyLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweERGLCAweDAwLCAweEIzLAorMHgwOCwgMHhGQywgMHgwNiwgMHg3MCwgMHg5RiwgMHhDOCwgMHg3RSwgMHgxMiwgMHhGMywgMHgwOSwgMHhFQywgMHgyNywgMHgxMSwKKzB4MUYsIDB4QzAsIDB4N0MsIDB4MDAsIDB4RTMsIDB4MDksIDB4REMsIDB4MjcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0MsIDB4NDAsCisweEYzLCAweDA5LCAweEJDLCAweDBGLCAweEY4LCAweDFGLCAweEMwLCAweDdGLCAweDAwLCAweEZGLCAweDA5LCAweDlDLCAweDA3LAorMHhGMCwgMHgxRiwgMHhDMCwgMHg1QywgMHgwMCwgMHgzMywgMHgwMSwgMHhDQywgMHgwNiwgMHhGMCwgMHgxQiwgMHhDOCwgMHgwRCwKKzB4MDgsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTgsIDB4MjcsIDB4MDEsIDB4OTEsIDB4MjAsCisweDQ0LCAweDUzLCAweDEwLCAweDAxLCAweDQwLCAweDA2LCAweDAwLCAweDE1LCAweDAwLCAweDUwLCAweDAwLCAweDUwLCAweDExLAorMHg0MCwgMHg0NCwgMHgwOCwgMHgxNSwgMHgwMCwgMHgwNCwgMHgxMCwgMHhEMiwgMHgwMSwgMHg0MSwgMHg0NSwgMHgwMCwgMHgxMSwKKzB4ODAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MTEsIDB4NDIsIDB4MDMsIDB4MjUsIDB4MTEsIDB4MDQsIDB4NjQsIDB4MDQsIDB4RDEsCisweDFGLCAweDQ4LCAweDc0LCAweDQwLCAweDE1LCAweDgxLCAweDU0LCAweDAyLCAweEQyLCAweDA5LCAweDQyLCAweDBGLCAweDYwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzNywgMHgwMCwgMHhDMSwgMHg0NCwgMHgxNCwKKzB4MTMsIDB4NTAsIDB4NEQsIDB4NDgsIDB4MzcsIDB4MTEsIDB4RDEsIDB4ODQsIDB4NDYsIDB4MTMsIDB4MTAsIDB4MEMsIDB4NjIsCisweDMwLCAweDIwLCAweEM1LCAweDA0LCAweDE0LCAweDAzLCAweEQwLCAweDRELCAweDQwLCAweDMwLCAweDAwLCAweEM5LCAweDQ0LAorMHgxNCwgMHgxMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzNiwgMHgxMCwgMHhENSwgMHgwMCwgMHgxNCwgMHgwMywgMHg1OCwgMHgwQywKKzB4NDAsIDB4MjEsIDB4MDAsIDB4MTUsIDB4MjAsIDB4MTQsIDB4MDAsIDB4RDgsIDB4MDAsIDB4NDAsIDB4NEYsIDB4ODAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDI1LCAweDEwLCAweEQxLCAweDIxLCAweDY0LCAweDA3LAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxNSwgMHgwMCwgMHg1NCwgMHgwMCwgMHg1MCwgMHgwMSwgMHg3MCwgMHgwNCwKKzB4MDAsIDB4MTUsIDB4MDAsIDB4NTQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDUsIDB4MDAsIDB4MTksIDB4MDAsIDB4NzQsCisweDAwLCAweEQwLCAweDAxLCAweDQyLCAweDA3LCAweDAwLCAweDExLCAweDAwLCAweDY0LCAweDAwLCAweEQwLCAweDBELCAweDAwLAorMHgyNSwgMHgwMCwgMHgxNSwgMHgwMSwgMHg1NCwgMHg0NCwgMHhEMCwgMHgxMSwgMHg0MSwgMHgwRiwgMHgwMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4MTMsIDB4MDMsIDB4RDMsIDB4MzEsIDB4N0MsIDB4MTcsIDB4NzAsCisweDBDLCAweEMwLCAweDM3LCAweDAwLCAweEQzLCAweDAwLCAweDBDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDM0LCAweDMwLAorMHhEMywgMHgwMCwgMHg1QywgMHgwMywgMHhGMCwgMHgwRCwgMHgwMiwgMHgzNCwgMHgwMCwgMHhEQiwgMHgwMCwgMHg3QywgMHgwMywKKzB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MjAsIDB4QzcsIDB4NDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4RDAsIDB4MTUsCisweDAwLCAweDA2LCAweDAxLCAweDVDLCAweDBFLCAweEYwLCAweDM5LCAweEMwLCAweDA5LCAweDIwLCAweDBFLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgyRCwgMHg0MCwgMHhERiwgMHgwMCwgMHhEQywgMHgwMywgMHhGMCwgMHgwMywKKzB4QzAsIDB4MEMsIDB4MDAsIDB4M0YsIDB4ODAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4NDAsIDB4M0IsCisweDAwLCAweEVDLCAweDAwLCAweEYwLCAweDAzLCAweDA4LCAweDBGLCAweDAwLCAweDM3LCAweDAwLCAweEZDLCAweDAwLCAweEYwLAorMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhDQywgMHgwMCwgMHhEMCwgMHgwRiwgMHhDMCwgMHgzRSwgMHg4MSwKKzB4QkIsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDA4LCAweEI1LCAweDAwLCAweERGLCAweDAwLCAweDRELCAweDAzLCAweDcwLCAweDhELCAweEMwLAorMHgzNywgMHgwMSwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHg4RCwgMHhDMCwgMHgzNywgMHgwMSwgMHhENywgMHgwMCwKKzB4NEMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDEsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MEQsCisweEMyLCAweDM0LCAweDAwLCAweEQ3LCAweDAwLCAweDZDLCAweDEzLCAweEIwLCAweDBDLCAweEMwLCAweDI0LCAweDAxLCAweDlGLAorMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgyMSwgMHg0OCwgMHgyQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTMsIDB4QTAsIDB4MjQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MTEsIDB4NDAsIDB4MDAsCisweDA0LCAweDBCLCAweDAwLCAweDVDLCAweDAwLCAweEIwLCAweDAwLCAweDQwLCAweDgzLCAweDAwLCAweDFCLCAweDAwLCAweDZFLAorMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHhDMywgMHgwMCwgMHgxRCwgMHgwMCwgMHg1QywgMHgwMCwgMHgxMCwgMHgwMSwgMHhFOCwKKzB4MDMsIDB4MDAsIDB4MTEsIDB4ODAsIDB4NDQsIDB4NDAsIDB4MTAsIDB4MEQsIDB4QzAsIDB4MjAsIDB4MDEsIDB4OUQsIDB4MDAsCisweDVDLCAweDAwLCAweEQwLCAweDExLCAweDQxLCAweDRGLCAweDA4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMywgMHgyMCwgMHgyMiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwMywgMHg1MCwgMHgwQywgMHg0MCwgMHhCMSwgMHgwMCwKKzB4QzUsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MUMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4RDEsIDB4MDAsIDB4MDQsIDB4MDMsCisweDEwLCAweDBDLCAweDQ4LCAweDczLCAweDAwLCAweEM5LCAweDAwLCAweDM0LCAweDgzLCAweDkwLCAweDBDLCAweDQwLCAweDMwLAorMHgwMCwgMHhDNSwgMHgwMCwgMHgyNCwgMHgwNywgMHg4MCwgMHgwQywgMHg0MCwgMHhFMywgMHgwMCwgMHg0RCwgMHgwNSwgMHgzNiwKKzB4MTIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDA4LCAweDZBLCAweDAwLCAweEVELCAweDA5LCAweDg2LCAweDA3LCAweDEwLCAweDEzLCAweDYwLCAweDRDLCAweDAwLCAweDJELAorMHgwMSwgMHhENCwgMHgwNCwgMHg5MCwgMHgxMiwgMHg0MCwgMHg0RiwgMHgwMCwgMHgzOCwgMHgwMSwgMHhBNCwgMHgwNCwgMHgxQywKKzB4MTIsIDB4NDAsIDB4NEIsIDB4MDQsIDB4MkQsIDB4MDEsIDB4RDQsIDB4MDQsIDB4MDAsIDB4MTMsIDB4NDAsIDB4NDksIDB4MDAsCisweDIxLCAweDAxLCAweEM0LCAweDA0LCAweDUwLCAweDFDLCAweDQwLCAweDc5LCAweDAwLCAweEVELCAweDExLCAweDk0LCAweDA3LAorMHhEMCwgMHg5QSwgMHg0MCwgMHgzNywgMHgyMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwKKzB4MzIsIDB4MDIsIDB4MEQsIDB4MDgsIDB4NEMsIDB4MDMsIDB4NTAsIDB4MEMsIDB4NDAsIDB4MzEsIDB4MTIsIDB4RDcsIDB4MDAsCisweDFDLCAweDAzLCAweDMwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweEM3LCAweDAwLCAweDA0LCAweDAzLCAweDMwLCAweDBDLAorMHhDMCwgMHgzMywgMHgwMCwgMHhDRiwgMHgwOCwgMHgzNCwgMHgxMywgMHhCMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgwMiwgMHhENywKKzB4MDAsIDB4MkMsIDB4MDMsIDB4QjAsIDB4MEMsIDB4RDAsIDB4MjMsIDB4MDIsIDB4Q0YsIDB4MjAsIDB4M0MsIDB4NDIsIDB4RjAsCisweDhDLCAweEMwLCAweDRCLCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDJELAorMHgwMCwgMHg3RiwgMHgwOCwgMHhGOCwgMHgwMywgMHhFMCwgMHgwMiwgMHg4MCwgMHgwOSwgMHgwMCwgMHgzQiwgMHgwMCwgMHhBOCwKKzB4MjAsIDB4RjIsIDB4ODEsIDB4QzAsIDB4MEIsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzgsCisweDA3LCAweDAwLCAweDNGLCAweDI4LCAweDdDLCAweDAwLCAweDcwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDQwLAorMHg1NCwgMHgyNCwgMHgyMCwgMHg5RCwgMHhDMCwgMHgyQywgMHgwOCwgMHhGRiwgMHgwMCwgMHhGQywgMHgyMywgMHhGMCwgMHg4RiwKKzB4QzIsIDB4MEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsIDB4MjcsIDB4MDAsCisweERGLCAweDAwLCAweDRDLCAweDAzLCAweEYwLCAweDFELCAweEMwLCAweDM1LCAweDAwLCAweERFLCAweDAwLCAweDdDLCAweDA3LAorMHgzMCwgMHgxRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhERiwgMHgwMCwgMHgzQywgMHgwMywgMHgzMCwgMHgxRCwgMHhDMCwgMHgzNCwKKzB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4M0MsCisweDAzLCAweEIwLCAweDBELCAweEM0LCAweDI0LCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDgzLCAweDMwLCAweDBELCAweEMyLAorMHg0MCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHgyOSwgMHgwMCwgMHhGRCwKKzB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MDMsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDAsIDB4NTAsCisweDAyLCAweDAwLCAweDA4LCAweDg4LCAweDJELCAweDAwLCAweEI0LCAweDAwLCAweDUwLCAweDAyLCAweDQwLCAweDA5LCAweDAwLAorMHgyRiwgMHgwMCwgMHhBNCwgMHgwMCwgMHhEMSwgMHgwMiwgMHg0OCwgMHgwQiwgMHgwMCwgMHgyRCwgMHgyMCwgMHhCNiwgMHgwMCwKKzB4MTgsIDB4NEUsIDB4NDAsIDB4MzgsIDB4MjAsIDB4RUQsIDB4MDAsIDB4RjQsIDB4MDEsIDB4MTAsIDB4MDcsIDB4NDAsIDB4NEMsCisweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDAwLCAweDZELCAweDAwLAorMHg4NCwgMHg0NywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFRCwgMHg4MSwgMHhGNCwgMHgwNywgMHgxOCwgMHgxRiwKKzB4NDgsIDB4NzgsIDB4ODAsIDB4RUQsIDB4MDEsIDB4RjYsIDB4MDcsIDB4MTMsIDB4MUYsIDB4NDQsIDB4N0IsIDB4ODAsIDB4RUQsCisweDAxLCAweEI0LCAweDg3LCAweDU4LCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEY0LCAweDA3LCAweEQ4LAorMHhERSwgMHg0MCwgMHg2QSwgMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHgxMCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjAsIDB4MjMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MDQsCisweDA1LCAweEQwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDBELCAweDAwLCAweDM0LCAweDAwLCAweDUwLCAweDAwLCAweDQwLAorMHgwMCwgMHhBMCwgMHgwRCwgMHgwMCwgMHg3NCwgMHgwMCwgMHg1MCwgMHgwMCwgMHg0MCwgMHgwMywgMHgxMCwgMHgwNSwgMHgwMCwKKzB4MzQsIDB4MDAsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MEQsIDB4MjAsIDB4MzQsIDB4MDAsIDB4NTEsIDB4MEMsCisweDUwLCAweDIyLCAweDAwLCAweDhELCAweDBGLCAweDc0LCAweDBGLCAweDFBLCAweDZELCAweDQwLCAweDU4LCAweDAwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwgMHgxRiwgMHgwMCwgMHg3RiwgMHgxMCwgMHhDQywgMHgwRCwKKzB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4MzAsIDB4MDUsIDB4RDAsIDB4MTQsCisweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweDMwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDVELCAweDAwLCAweDdDLAorMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHgzQywgMHgwMSwgMHhGMCwgMHgwNCwgMHhDMCwKKzB4MUEsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MEQsIDB4MzQsIDB4MDcsIDB4RDAsIDB4NUMsIDB4MjAsIDB4MEUsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDA1LCAweDAwLCAweDFGLCAweDIwLCAweDdDLCAweDQwLCAweEYyLAorMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgyMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHg4RiwgMHgwMCwKKzB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEQsIDB4MDAsIDB4M0QsIDB4MDAsIDB4RTQsIDB4MDAsCisweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDIwLCAweEZDLCAweDA4LCAweDkwLCAweDAxLCAweEMwLCAweDA1LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgyOCwgMHhGMCwgMHg4MSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NjUsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MTksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDgyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAyLCAweDlGLAorMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHhFNywgMHg4MCwgMHg5RiwgMHgwMCwgMHg0RCwgMHgwMiwgMHgzNCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUIsIDB4MDAsIDB4N0MsIDB4MDYsIDB4NzIsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsCisweDkzLCAweDA1LCAweDdDLCAweDQyLCAweDMwLCAweDA5LCAweEMwLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgyOCwgMHg2NiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgxOSwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDgsIDB4MTksIDB4NDAsIDB4RTcsIDB4MjAsIDB4OUQsIDB4MDAsCisweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDA0LCAweDk3LCAweDIwLCAweDQ0LCAweDAyLCAweDMwLCAweDA5LAorMHg0MCwgMHgyMywgMHgwMCwgMHg5MSwgMHgyMCwgMHg3MCwgMHgxNiwgMHgzMCwgMHgwQiwgMHhEMCwgMHgyNCwgMHgwMCwgMHg5MSwKKzB4MDAsIDB4NzQsIDB4OTYsIDB4NTAsIDB4MzksIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDFDLCAweEEwLCAweDI0LCAweDAyLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDg5LCAweDQwLCAweDZGLAorMHgwMCwgMHhCRCwgMHgwMCwgMHhENCwgMHgwMiwgMHhEMCwgMHhBQiwgMHg0MCwgMHgyRiwgMHgwMCwgMHhCRCwgMHgwMCwgMHhGNCwKKzB4MDIsIDB4MTAsIDB4MEIsIDB4NjAsIDB4MkYsIDB4MDAsIDB4QUQsIDB4MDAsIDB4ODQsIDB4MDIsIDB4MTAsIDB4MEIsIDB4NDAsCisweDJGLCAweDgwLCAweEI5LCAweDAwLCAweEY0LCAweDEyLCAweDEwLCAweDY5LCAweDYwLCAweDM2LCAweDAwLCAweEQ5LCAweDAyLAorMHg3NCwgMHgwNiwgMHgxMCwgMHgxOSwgMHg0MSwgMHg3MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MjgsIDB4QTAsIDB4MDAsIDB4OEQsIDB4MUMsIDB4MzQsIDB4MjIsIDB4RDAsIDB4MkEsIDB4NDAsIDB4RUIsIDB4MDAsCisweEJELCAweDA4LCAweDg0LCAweDIyLCAweEQwLCAweDBBLCAweDQwLCAweDJCLCAweDAwLCAweEFELCAweDAwLCAweEIwLCAweDIyLAorMHgxMCwgMHg4QSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhBNSwgMHg4OCwgMHg4NCwgMHgyMiwgMHgxMCwgMHgwQSwgMHg0MCwgMHgyRiwKKzB4MDIsIDB4QTEsIDB4MDgsIDB4QjQsIDB4MDIsIDB4MTQsIDB4MDgsIDB4NjQsIDB4MjQsIDB4MDgsIDB4ODksIDB4MDAsIDB4MzQsCisweDAyLCAweDUwLCAweDA5LCAweDQwLCAweDUwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELAorMHhCMCwgMHgwNiwgMHgwMCwgMHgxRiwgMHgwNiwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwKKzB4MDIsIDB4NUMsIDB4MDgsIDB4RDAsIDB4MDEsIDB4QzAsIDB4MTcsIDB4MDAsIDB4MUQsIDB4OEEsIDB4N0MsIDB4MDgsIDB4MzQsCisweDIxLCAweEMwLCAweDA3LCAweDAwLCAweDFELCAweDAyLCAweDQ0LCAweDA4LCAweDMwLCAweDAxLCAweEMwLCAweDg3LCAweDAwLAorMHgxQiwgMHgwMiwgMHhGQywgMHgwMCwgMHg3MCwgMHgxMSwgMHhDMCwgMHgwNiwgMHg0MCwgMHgxQiwgMHgwMCwgMHg3QywgMHgyOCwKKzB4MzIsIDB4QTEsIDB4RDAsIDB4NzQsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QTAsCisweDZGLCAweDAwLCAweEJGLCAweDA0LCAweEZDLCAweDEyLCAweEYwLCAweDE5LCAweDQwLCAweDY3LCAweDAwLCAweDlGLCAweDQ0LAorMHgzQywgMHgxMiwgMHhGMiwgMHgwOCwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3QywgMHgxMiwgMHhGMCwgMHg0OCwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4ODQsIDB4N0MsIDB4MTIsIDB4NzAsIDB4MDksIDB4QzIsIDB4MjcsIDB4MDEsIDB4OUYsCisweDg0LCAweDdDLCAweDAyLCAweDcwLCAweDI4LCAweEMwLCAweDJELCAweDAwLCAweEI3LCAweDAwLCAweEZDLCAweDAyLCAweEYwLAorMHgwQiwgMHhDMCwgMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyRiwKKzB4MDAsIDB4OTMsIDB4MkMsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4QUIsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDI4LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDIyLCAweEYwLCAweDA5LCAweEM4LAorMHgyRCwgMHgwMCwgMHg5MywgMHgwOCwgMHg1QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMiwgMHg5RiwgMHgwMCwKKzB4REMsIDB4MDIsIDB4QjAsIDB4MUIsIDB4QzMsIDB4MkIsIDB4MDAsIDB4QkYsIDB4NjAsIDB4RkMsIDB4ODIsIDB4MzAsIDB4MEIsCisweEMwLCAweDYzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDE4LCAweDU0LCAweDQ1LAorMHg1MSwgMHg0QywgMHg3NCwgMHg0MCwgMHhEMCwgMHg1MSwgMHg0MSwgMHg0NywgMHgwMSwgMHgxMSwgMHgxNCwgMHg3NCwgMHgxMCwKKzB4RDAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDgsIDB4MUQsIDB4MDUsIDB4NzQsIDB4ODAsIDB4RDIsIDB4NDEsIDB4NDEsIDB4MDQsCisweDAwLCAweDExLCAweDA0LCAweDRDLCAweDQwLCAweDEwLCAweDAxLCAweEMwLCAweDA1LCAweDAwLCAweDFELCAweDE0LCAweDc0LAorMHgwMCwgMHgxMCwgMHgyMSwgMHg0MiwgMHgwNywgMHgwOCwgMHg1RCwgMHgwMCwgMHg3NCwgMHgwMCwgMHg1MCwgMHgwNSwgMHg0MCwKKzB4NzMsIDB4NDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjAsIDB4MjEsIDB4MDAsIDB4ODEsCisweDA0LCAweDM0LCAweDEyLCAweEQwLCAweDA4LCAweDQwLCAweDIzLCAweDAxLCAweDg1LCAweDA0LCAweDM0LCAweDUyLCAweEQwLAorMHgwOSwgMHg2MiwgMHgyMSwgMHgwMCwgMHg4RCwgMHgxMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHg0OCwgMHg0MCwgMHgyNSwgMHgwMCwKKzB4OTEsIDB4MDQsIDB4NTQsIDB4MTIsIDB4NTAsIDB4MDgsIDB4NDgsIDB4MjMsIDB4ODAsIDB4OEQsIDB4MDQsIDB4MTQsIDB4MDIsCisweEQyLCAweDA4LCAweDQ4LCAweDIzLCAweDIwLCAweDhELCAweDIwLCAweDc0LCAweDAyLCAweDE4LCAweDA4LCAweDQwLCAweDRCLAorMHgyOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgyNSwgMHgwMCwgMHg5MSwgMHgwMCwKKzB4NzQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksCisweDAwLCAweDI1LCAweDgwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDkxLAorMHgwMCwgMHg1NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwKKzB4MEQsIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzYsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDZGLCAweDAwLCAweDkzLCAweDAyLCAweDc4LAorMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOCwgMHhDMCwKKzB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4NDgsIDB4MjEsIDB4NDAsIDB4ODEsIDB4MDAsCisweDU0LCAweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDFDLCAweDAyLCAweEIwLCAweDA5LAorMHhDMCwgMHhFNywgMHg4MSwgMHg5RiwgMHgwMiwgMHg3OCwgMHg0MiwgMHgzMiwgMHgyOSwgMHhDMCwgMHgxNywgMHgyMCwgMHgwRSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4QTUsIDB4MDAsIDB4OUYsIDB4MDQsIDB4N0MsIDB4MjYsCisweEYxLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEQwLCAweDI2LAorMHgyMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMiwgMHgyNywgMHgwOCwgMHg5RiwgMHgwMCwgMHg0QywKKzB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4ODAsIDB4N0MsIDB4MDIsIDB4QkMsIDB4MDksIDB4QzAsCisweDY3LCAweDAxLCAweDlGLCAweDA5LCAweDdDLCAweDAyLCAweEYxLCAweDQ5LCAweEMwLCAweDRCLCAweDAwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMiwgMHg0RCwgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MTMsIDB4MDAsIDB4N0UsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsCisweDE3LCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEUyLCAweDA3LCAweDA4LCAweDFCLCAweDAwLCAweDRDLCAweDAwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHg0MCwgMHhGMCwgMHg0MSwgMHhDOCwgMHg4NywKKzB4NDAsIDB4MTcsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MzQsIDB4MDEsIDB4ODcsIDB4NDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDU0LCAweDgwLCAweDVELCAweDAwLCAweDQ0LCAweDAxLCAweDcwLCAweDQ1LAorMHg0MCwgMHgxQywgMHgwMCwgMHg1QiwgMHgwMCwgMHg3NCwgMHgwMSwgMHg3MCwgMHgwNywgMHg2MCwgMHg5QywgMHgwMCwgMHg1MSwKKzB4MDAsIDB4NzQsIDB4MDEsIDB4RDgsIDB4MDUsIDB4QzAsIDB4MUYsIDB4MDAsIDB4NTUsIDB4MDAsIDB4MUUsIDB4MDEsIDB4NzIsCisweDA1LCAweDQwLCAweDE3LCAweDA4LCAweDUzLCAweDAwLCAweENDLCAweDBELCAweEMwLCAweDA3LCAweEMwLCAweERELCAweDAxLAorMHg3MCwgMHgwQSwgMHhGMCwgMHgzNSwgMHgxMCwgMHgxNywgMHg1MCwgMHg1MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzYsIDB4MTAsIDB4Q0QsIDB4MDAsIDB4MTYsIDB4MDMsIDB4NTAsIDB4MEMsIDB4NDAsCisweDYyLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDAzLCAweDU4LCAweDk4LCAweDQ4LCAweEYzLCAweDA2LCAweENELCAweDAwLAorMHgzNCwgMHgwMywgMHhEMiwgMHgwRCwgMHg0MCwgMHhCMywgMHgwMSwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMywgMHg1MCwgMHgwQywKKzB4NDAsIDB4MzMsIDB4ODAsIDB4QzksIDB4MDAsIDB4MTQsIDB4MEEsIDB4OTAsIDB4MzQsIDB4NDAsIDB4RTMsIDB4MDEsIDB4ODEsCisweDAyLCAweDc0LCAweDAzLCAweDkwLCAweDBDLCAweDQwLCAweDUwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHg4OCwgMHhCOCwgMHgxMSwgMHhFRCwgMHhBNSwgMHg5NiwgMHgxMywgMHg1MCwgMHg1RSwgMHg0MCwgMHg5QywKKzB4MDEsIDB4RTksIDB4MDgsIDB4QjQsIDB4MDMsIDB4NTAsIDB4MEIsIDB4NDAsIDB4NUYsIDB4MDAsIDB4RTksIDB4MDQsIDB4QjQsCisweDEzLCAweEQ4LCAweDBFLCAweDQwLCAweDNELCAweDAwLCAweEY1LCAweDAwLCAweDk2LCAweDEzLCAweDUwLCAweDBFLCAweDQwLAorMHg3RiwgMHgwMywgMHhFMSwgMHgwNSwgMHg5MCwgMHgwQiwgMHhEMCwgMHgyNiwgMHg2MCwgMHg2RCwgMHgwMCwgMHhFMSwgMHg4MiwKKzB4QjQsIDB4MDIsIDB4OTAsIDB4MUUsIDB4NDEsIDB4MDQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDExLCAweDEwLCAweEY4LCAweDAwLCAweEZELCAweDA3LCAweDlDLCAweDE3LCAweDcwLCAweDFGLCAweEMwLCAweEZBLCAweDAxLAorMHhFMywgMHgwMSwgMHhCNCwgMHgxNywgMHg3MCwgMHgxRSwgMHg1MCwgMHg2QiwgMHgwMCwgMHhFRCwgMHgwNSwgMHhCQywgMHg0NywKKzB4RDAsIDB4OUUsIDB4NjgsIDB4N0IsIDB4MDgsIDB4RUIsIDB4MDEsIDB4ODQsIDB4MTcsIDB4NzAsIDB4MUUsIDB4QzAsIDB4N0IsCisweDAwLCAweEZCLCAweDA5LCAweDlDLCAweDA3LCAweEYwLCAweDFFLCAweDgwLCAweDZCLCAweDAwLCAweEU2LCAweDIxLCAweEZDLAorMHgwNiwgMHhCMCwgMHgxQiwgMHhDMCwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QTgsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4NkMsIDB4MDMsIDB4NzAsIDB4ODksIDB4QzAsIDB4MTcsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDI0LCAweDE4LCAweEQ3LCAweDAwLCAweDdDLCAweEIzLCAweEYwLAorMHg0RCwgMHhDMiwgMHgyMywgMHgwMCwgMHhDNywgMHg5MiwgMHg3QywgMHg0QiwgMHg3MCwgMHgwRCwgMHhDMCwgMHhCMywgMHgwNCwKKzB4REIsIDB4MDgsIDB4NkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4ODAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsCisweDcwLCAweDAxLCAweEMwLCAweDQzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorMHg3OSwgMHgwMCwgMHhFMywgMHgwNCwgMHhDRCwgMHg1MywgMHg3MCwgMHgxQiwgMHhDMCwgMHg3RiwgMHg0MCwgMHhGMiwgMHgwMSwKKzB4REMsIDB4NjcsIDB4RjAsIDB4MUIsIDB4QzAsIDB4NkYsIDB4MDAsIDB4RUYsIDB4MTksIDB4Q0MsIDB4MDcsIDB4MzAsIDB4MUYsCisweDg1LCAweDdGLCAweDAwLCAweEYzLCAweDExLCAweEZDLCAweDY3LCAweDcwLCAweDFGLCAweEMwLCAweDdELCAweDAwLCAweEY3LAorMHgwMSwgMHhDRCwgMHgwNywgMHhGMCwgMHgxNywgMHhDMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHhDMSwgMHhGNCwgMHgwNywgMHhGMiwKKzB4MUIsIDB4QzQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MTgsIDB4MzksCisweDAwLCAweEUxLCAweDAwLCAweEFDLCAweDAzLCAweDEwLCAweDBBLCAweDQwLCAweDFCLCAweDAwLCAweEUxLCAweDA4LCAweERDLAorMHhDMywgMHgxMSwgMHgwQSwgMHhDMCwgMHgwOSwgMHgwOSwgMHhFRCwgMHgwMCwgMHg5NCwgMHgyMywgMHg1MCwgMHgwRSwgMHg0MiwKKzB4MUIsIDB4MDAsIDB4RTEsIDB4MDQsIDB4REMsIDB4MDMsIDB4MTAsIDB4OEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDAsCisweDg0LCAweDJCLCAweEQwLCAweDg2LCAweDQwLCAweDJCLCAweDA2LCAweDZELCAweDA4LCAweEI0LCAweDExLCAweEQwLCAweDRGLAorMHhDMCwgMHg1NiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyRCwgMHgwMCwKKzB4RjEsIDB4MDAsIDB4QzQsIDB4MjMsIDB4NTAsIDB4OEUsIDB4NDEsIDB4M0IsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDMsCisweDU5LCAweDhBLCAweDQxLCAweDJBLCAweDMwLCAweEZELCAweDEwLCAweEU2LCAweDAzLCAweDkwLCAweDBFLCAweDQwLCAweDNGLAorMHgwNiwgMHhFMSwgMHgyMCwgMHhBNiwgMHgwMywgMHg1MSwgMHgwRiwgMHg0MCwgMHgzOSwgMHgwMiwgMHhFRCwgMHgwMCwgMHhBNCwKKzB4NDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDIsIDB4MEEsIDB4NDAsCisweDAyLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDIwLCAweDI1LCAweDAyLCAweEMxLAorMHgwOSwgMHgyNCwgMHgwNywgMHgxMCwgMHgwOCwgMHg2MCwgMHg1MywgMHgwRSwgMHhDMSwgMHgwQSwgMHgzNCwgMHgwNywgMHgxMiwKKzB4MDgsIDB4NDEsIDB4QTMsIDB4MjAsIDB4Q0QsIDB4MDIsIDB4MzQsIDB4MUYsIDB4NTAsIDB4M0MsIDB4NDAsIDB4NDMsIDB4MDAsCisweEQxLCAweDBCLCAweDE0LCAweDM3LCAweDEwLCAweDNDLCAweDQwLCAweDc0LCAweDAwLCAweENELCAweDA1LCAweDI0LCAweDE3LAorMHhEMSwgMHgwQywgMHg0MCwgMHgyMywgMHgwMCwgMHg0RCwgMHgyNiwgMHgzNCwgMHgxOCwgMHhEMCwgMHgwMCwgMHg0MiwgMHgxMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4MjUsIDB4NDAsIDB4RjMsIDB4MDAsCisweENELCAweDFCLCAweDcwLCAweDJELCAweEMwLCAweEIzLCAweDAwLCAweEYzLCAweDhBLCAweEZDLCAweDBCLCAweDcwLCAweDE4LAorMHhDMCwgMHgyNiwgMHgwNCwgMHhGRSwgMHgwMSwgMHhFQywgMHg0RiwgMHhCMCwgMHg1RiwgMHhDMCwgMHgyNywgMHg0MCwgMHhGMywKKzB4MDAsIDB4RkMsIDB4MEIsIDB4NzAsIDB4OUMsIDB4QzAsIDB4QkQsIDB4MDIsIDB4RTcsIDB4MDYsIDB4NkMsIDB4MEYsIDB4RDAsCisweDA1LCAweEMwLCAweEU3LCAweDAwLCAweDhELCAweDA2LCAweDdFLCAweDAwLCAweEYwLCAweDAxLCAweEQwLCAweDU2LCAweDIwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNywgMHgwNCwgMHhERiwgMHgwMCwgMHg3QywKKzB4NDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NUMsIDB4MDMsIDB4NzAsIDB4MjksIDB4QzAsCisweDA1LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweEE3LCAweDg4LCAweERGLCAweDAwLAorMHg3QywgMHgwMywgMHg3MiwgMHg4RCwgMHhDMCwgMHgzNywgMHg4MiwgMHhERiwgMHgwMCwgMHg1QywgMHgwQiwgMHhCMCwgMHgyNSwKKzB4ODgsIDB4QTcsIDB4MDksIDB4OUYsIDB4MDIsIDB4N0MsIDB4MEMsIDB4RjAsIDB4MDEsIDB4QzEsIDB4MDUsIDB4MDAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDA4LCAweDNGLCAweDAwLCAweEZCLCAweDAwLCAweEZDLCAweDAzLAorMHhGMCwgMHgwRiwgMHhDMSwgMHg1RiwgMHgwOCwgMHhGMywgMHgwMCwgMHhGQywgMHg0MywgMHhGMCwgMHgwMywgMHhDMiwgMHgyQywKKzB4MEMsIDB4RkYsIDB4MTAsIDB4RjgsIDB4ODMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4MEQsIDB4MDQsIDB4RkIsIDB4OTAsIDB4Q0MsCisweDAzLCAweEYxLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEY3LCAweDQwLCAweEU4LCAweDAzLCAweEQwLCAweDI3LCAweEMwLAorMHg2RiwgMHgwMCwgMHgzMywgMHgwMCwgMHhDQywgMHgwMiwgMHhGMCwgMHgwMywgMHhDMCwgMHgxMywgMHgyMiwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4MjAsIDB4MzYsIDB4MDgsIDB4RDEsIDB4MDAsIDB4NzQsIDB4ODMsIDB4RDAsCisweDA5LCAweDYwLCAweDE2LCAweDBBLCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweEQyLCAweDE1LCAweDQwLCAweDY0LCAweDAwLAorMHhERCwgMHgwMCwgMHg1QywgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHhDNCwgMHgwNCwgMHhERCwgMHgwMCwgMHg0NCwgMHgwMywKKzB4RDgsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MDcsIDB4QzAsIDB4MjUsIDB4NDIsIDB4RTMsCisweEMwLCAweDEzLCAweDA1LCAweDQ0LCAweDRFLCAweEQwLCAweDMxLCAweDQwLCAweDE3LCAweDgwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMiwgMHg2NCwgMHgyMCwgMHhEOSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwOSwKKzB4NDgsIDB4MzcsIDB4MDQsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MTksIDB4NDEsIDB4NDUsIDB4MjAsIDB4REQsCisweDAwLCAweDc0LCAweDAzLCAweDUwLCAweDBDLCAweDQwLCAweDY3LCAweDAwLCAweERELCAweDAwLCAweDY0LCAweDAzLCAweEQwLAorMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhENSwgMHgwMCwgMHg3NiwgMHgwNywgMHhEMCwgMHgwNSwgMHg0MCwgMHhCNywgMHgwMSwKKzB4OTEsIDB4MDEsIDB4NDQsIDB4MDQsIDB4RDIsIDB4MzksIDB4NDIsIDB4MDUsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDI4LCAweDIwLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDA4LCAweDQwLAorMHgzMywgMHgwOCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwOSwgMHg0MCwgMHg0MCwgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MTQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEQsCisweDQwLCAweDMwLCAweDAwLCAweEQxLCAweDAwLCAweDE2LCAweDgzLCAweEQwLCAweDA0LCAweDQwLCAweDEzLCAweDEwLCAweDAxLAorMHgwMCwgMHgwNSwgMHgwMCwgMHhEMCwgMHgwOCwgMHg2MCwgMHg0MywgMHhBMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4QjAsIDB4MjYsIDB4MDAsIDB4REIsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4NDgsIDB4MTMsCisweDQwLCAweEQzLCAweDgwLCAweDdDLCAweDAzLCAweEYxLCAweDAxLCAweEQwLCAweDA0LCAweDAwLCAweERFLCAweDAwLCAweEZDLAorMHgwMywgMHg3MiwgMHgwRiwgMHhDNCwgMHgwNSwgMHgwMCwgMHhGRiwgMHgwMCwgMHhFQywgMHgwMywgMHhEMCwgMHgwRCwgMHhDMCwKKzB4M0UsIDB4MDAsIDB4RTcsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzQsIDB4MzcsIDB4ODgsIDB4MTEsIDB4MDAsCisweDRDLCAweDgyLCAweEYwLCAweDA5LCAweEMwLCAweDAxLCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNSwgMHhBOCwgMHgyRiwgMHgxMCwgMHhGRiwgMHgwMCwgMHhCQywgMHgwMywgMHhGMCwgMHgwQiwgMHhDMCwgMHgxRSwgMHgwMCwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDcsIDB4QzAsIDB4MEUsIDB4MDAsIDB4RkYsIDB4MDAsIDB4OUMsIDB4MDMsCisweEYwLCAweDBGLCAweEM4LCAweDBCLCAweDAwLCAweEZGLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDBFLCAweDQwLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhFQywgMHgwMSwgMHhGMCwgMHgwQiwgMHhDMiwgMHgxRiwgMHgwOCwgMHgzNywgMHgwMCwgMHhGQywKKzB4MDAsIDB4RTEsIDB4MDMsIDB4QzAsIDB4MTcsIDB4MjIsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEEwLCAweDJGLCAweDAwLCAweDNCLCAweDE0LCAweEJDLCAweDBGLCAweDM0LCAweDFGLCAweEMwLCAweDdFLCAweDAyLCAweEZGLAorMHgwOSwgMHhGQywgMHgwNywgMHhCMCwgMHgxRiwgMHhDMCwgMHg3QywgMHgwMCwgMHhGMywgMHgwOSwgMHg4QywgMHgyNywgMHg3MiwKKzB4MUYsIDB4QzQsIDB4N0UsIDB4MDIsIDB4RkIsIDB4MjksIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0MsIDB4MjAsCisweEYzLCAweDA5LCAweENDLCAweDI3LCAweDMwLCAweDgzLCAweEMyLCAweDdDLCAweDAyLCAweEYzLCAweDI0LCAweEVFLCAweDFBLAorMHgzMCwgMHg0QiwgMHhDNCwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwKKzB4MjcsIDB4MjAsIDB4MDEsIDB4MDIsIDB4NzQsIDB4MTMsIDB4MTgsIDB4MTEsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4ODAsCisweDc0LCAweDA0LCAweDQwLCAweDExLCAweDQwLCAweDAwLCAweDA0LCAweDExLCAweDAwLCAweDQ0LCAweDEwLCAweDEwLCAweDQwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwNCwgMHg0NCwgMHgwNCwgMHhEMCwgMHgxMSwgMHg0MSwgMHg0NCwgMHgwMCwgMHgxMywKKzB4NDQsIDB4NDQsIDB4MTAsIDB4MzAsIDB4NjUsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RjUsIDB4MEIsIDB4NkUsIDB4MTAsIDB4MTAsCisweDExLCAweDQwLCAweDA0LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDAyLAorMHg0MCwgMHgwMSwgMHg0MCwgMHgzNiwgMHgwMywgMHg1MCwgMHgwRCwgMHg1MCwgMHgzMCwgMHgwMSwgMHhDRCwgMHg4NCwgMHgzNCwKKzB4MDMsIDB4ODEsIDB4MEQsIDB4NTAsIDB4MzAsIDB4MDEsIDB4QzEsIDB4MDAsIDB4MjQsIDB4MTMsIDB4RDAsIDB4MEMsIDB4NDEsCisweDMwLCAweDAxLCAweEMxLCAweDA0LCAweDI0LCAweDAzLCAweEQwLCAweDRELCAweDQwLCAweDM0LCAweDAwLCAweEM5LCAweDA0LAorMHgyNCwgMHgwMywgMHgxMCwgMHgyOCwgMHg0MCwgMHgzMSwgMHg4MSwgMHhDRCwgMHgyMCwgMHgwNCwgMHgxQSwgMHgxMSwgMHg4OCwKKzB4NDAsIDB4NDUsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MTUsIDB4MDAsCisweDExLCAweDIyLCAweDM0LCAweDAzLCAweDUwLCAweDAxLCAweDQ0LCAweDA0LCAweDAwLCAweDFELCAweDAwLCAweDc0LCAweDgwLAorMHg5MCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHg5MCwgMHgwMSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4NjcsIDB4MDAsIDB4RDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjQsCisweDAwLCAweDEwLCAweDRELCAweDQyLCAweDM2LCAweDA4LCAweERELCAweDAwLCAweDQ3LCAweDA0LCAweDEwLCAweDE5LCAweDQxLAorMHgwRCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwgMHg2NywgMHg0MCwgMHgxQiwKKzB4MDEsIDB4N0MsIDB4MjcsIDB4NTAsIDB4MEMsIDB4QzgsIDB4MzQsIDB4MjAsIDB4REYsIDB4ODAsIDB4M0MsIDB4MDMsIDB4QjQsCisweDBDLCAweEMwLCAweDM0LCAweDAwLCAweEQzLCAweDAwLCAweDZDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDAwLAorMHhEMywgMHgwMCwgMHg2QywgMHgwMywgMHhGMiwgMHgwQywgMHg4MCwgMHgzMCwgMHgwMCwgMHhEQiwgMHgwMCwgMHg2RCwgMHgwMywKKzB4MzQsIDB4MDEsIDB4RDEsIDB4MzUsIDB4MDAsIDB4REYsIDB4NDAsIDB4NDQsIDB4MDQsIDB4MjIsIDB4MzEsIDB4QzAsIDB4MDEsCisweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDY5LCAweDAxLCAweDNGLCAweDAzLAorMHhGOCwgMHgwMywgMHhCMCwgMHgwMywgMHg4MCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHg3MCwgMHgwMywKKzB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzAsIDB4MDMsIDB4RDAsIDB4MEQsIDB4MDAsIDB4MzcsCisweDAwLCAweERDLCAweDAwLCAweEYwLCAweDAzLCAweEM0LCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweERDLCAweDAwLCAweEYxLAorMHgwNywgMHhDMCwgMHgzRCwgMHgyMCwgMHhGNywgMHgwMCwgMHhGNCwgMHgwMCwgMHhGNSwgMHgwMywgMHhDMywgMHgxRSwgMHgwMCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4ODEsIDB4MzcsIDB4MEEsIDB4NEQsCisweDAzLCAweDMwLCAweDBELCAweEMwLCAweDc3LCAweDQxLCAweEQzLCAweDA1LCAweDVDLCAweDAzLCAweDMwLCAweDhELCAweEMwLAorMHgzNSwgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhEMywgMHgwMSwKKzB4NEMsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDIsIDB4RDcsIDB4MDEsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDksCisweEMwLCAweDM3LCAweDAwLCAweERGLCAweDEwLCAweDc0LCAweDhBLCAweDMzLCAweDIxLCAweEM0LCAweDBCLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHhCNCwgMHgwMCwgMHgxMSwgMHg4MSwgMHg0NCwgMHgwMywKKzB4MTAsIDB4NDEsIDB4NDQsIDB4NDcsIDB4MDAsIDB4MTEsIDB4MDMsIDB4NzQsIDB4MDAsIDB4QjAsIDB4MTEsIDB4NDAsIDB4MDQsCisweDAwLCAweDExLCAweDIwLCAweDc0LCAweDAwLCAweDE0LCAweDAxLCAweDQ4LCAweDA0LCAweDAwLCAweDEwLCAweDAxLCAweDQ0LAorMHg0NCwgMHhEMCwgMHgxMSwgMHg0MCwgMHg0NCwgMHgwOCwgMHgxMSwgMHgwMSwgMHg2NCwgMHgwMCwgMHhEMCwgMHgwRCwgMHhDMCwKKzB4MzcsIDB4MTAsIDB4RTAsIDB4MTMsIDB4MzQsIDB4MDQsIDB4MTAsIDB4MzAsIDB4MDAsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDIyLCAweDAwLCAweDQxLCAweDAwLCAweDI1LCAweDAzLCAweDUwLAorMHgxQywgMHg0MCwgMHhCMywgMHgwMCwgMHhDOSwgMHgwMiwgMHgzNCwgMHg0MywgMHg5MCwgMHgwQywgMHg0MSwgMHgzNSwgMHg4MCwKKzB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzYsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDcsCisweDUwLCAweDhDLCAweDQwLCAweDcxLCAweDgwLCAweEM5LCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDAxLCAweDQwLCAweDM2LAorMHgwOCwgMHhDNCwgMHgwMiwgMHgzNCwgMHgwMiwgMHg1NCwgMHgyOCwgMHgwMiwgMHgxRiwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ODAsIDB4NzgsIDB4NDAsIDB4NjEsIDB4MDksIDB4RTQsIDB4MDcsIDB4MTAsIDB4MTIsCisweDQwLCAweDRCLCAweDAwLCAweDI5LCAweDA5LCAweEI0LCAweDI0LCAweDkwLCAweDkyLCAweDQwLCAweDQ4LCAweDAwLCAweDIxLAorMHgwMSwgMHhGNiwgMHgyNCwgMHgxMCwgMHgxMiwgMHg0MCwgMHg0QSwgMHgwMCwgMHgyMSwgMHgwMSwgMHhCNCwgMHgwNCwgMHhEMCwKKzB4MTMsIDB4NDAsIDB4NEQsIDB4MDgsIDB4MjksIDB4MDksIDB4QTYsIDB4MDQsIDB4QzAsIDB4MTIsIDB4NDAsIDB4N0IsIDB4MzAsCisweEU5LCAweDAxLCAweEI0LCAweDY2LCAweDUwLCAweDEyLCAweDQxLCAweDFCLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgwNCwgMHg0MCwgMHg0NSwgMHgwMCwgMHgyQywgMHgwMywgMHg3MCwgMHg4QywgMHhDMCwKKzB4MzMsIDB4MDAsIDB4Q0IsIDB4MDAsIDB4MUMsIDB4MjMsIDB4MzAsIDB4MEMsIDB4QzAsIDB4MzEsIDB4OTAsIDB4QzMsIDB4MDAsCisweDNDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDMyLCAweDAwLCAweEQzLCAweDAwLCAweDM0LCAweDAzLCAweDcwLCAweDBDLAorMHhDMCwgMHgzMSwgMHgwMCwgMHhDRSwgMHg4MCwgMHgzRSwgMHgwMywgMHhGMCwgMHgwMCwgMHhDMCwgMHgzNywgMHgwMCwgMHhDNywKKzB4MDgsIDB4M0MsIDB4MjIsIDB4NzAsIDB4MDgsIDB4QzAsIDB4NEIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAyLCAweEIwLCAweDFELCAweDAwLCAweDdGLCAweDAwLCAweERFLCAweDAzLCAweEYwLCAweDAzLCAweDYwLCAweDBGLAorMHgwMCwgMHgzNywgMHgwMCwgMHhCQywgMHgyMCwgMHhGMCwgMHgwMiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGNCwKKzB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEQsIDB4MDAsIDB4M0YsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4RjAsIDB4MDIsIDB4QzAsCisweDBBLCAweDAwLCAweDM3LCAweDgwLCAweEVFLCAweDA0LCAweEYwLCAweDAzLCAweEMwLCAweDNELCAweDgyLCAweEY3LCAweDM4LAorMHhCQywgMHgyMiwgMHhCMCwgMHg4OSwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4QTAsIDB4MzcsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4NDAsCisweEQzLCAweDAxLCAweDBELCAweDAzLCAweEIwLCAweDFDLCAweEQwLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDNDLCAweDA3LAorMHhCNCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMSwgMHgwRCwgMHgwNywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MDEsIDB4NkQsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4ODAsIDB4REYsIDB4MDQsIDB4M0MsCisweDAwLCAweDMwLCAweDE5LCAweEMwLCAweDU0LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHg4OCwgMHgzOSwgMHgwMCwgMHgzMSwgMHgwMCwgMHg4NSwgMHgwMywgMHhEMCwgMHgwMiwgMHg0MCwgMHgwRiwgMHgwMCwgMHgzMSwKKzB4MDAsIDB4ODQsIDB4MDAsIDB4MzAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDAsIDB4MTAsCisweDAyLCAweDQwLCAweDBCLCAweDAwLCAweDNELCAweDAwLCAweEE0LCAweDAwLCAweDcwLCAweDAyLCAweDQwLCAweDBCLCAweDAwLAorMHgzNywgMHgwMCwgMHg4QywgMHg4MCwgMHhEMCwgMHgwRSwgMHhDMCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgxNCwgMHg5QywgMHgwMCwKKzB4MTQsIDB4MDMsIDB4QzAsIDB4NEEsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsCisweDc5LCAweDAwLCAweDI5LCAweDAxLCAweDg0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEUxLCAweDAxLAorMHg5NCwgMHgwNywgMHg5MCwgMHgxRiwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHhGNCwgMHgwNywgMHgxMCwgMHgxRSwKKzB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QTQsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsCisweDAxLCAweDg0LCAweDg3LCAweDUwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDg1LCAweDk0LCAweDA2LCAweDU1LAorMHgxQiwgMHg0MCwgMHgwRCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHg3NywKKzB4MDIsIDB4OTEsIDB4MTAsIDB4MDQsIDB4MDYsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MTQsCisweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDM0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLAorMHgwMywgMHgwMCwgMHgwRCwgMHgwMCwgMHgyNCwgMHgwMCwgMHg1MCwgMHgwMSwgMHg0MCwgMHgwMywgMHgxMCwgMHgwNSwgMHg0MCwKKzB4MDQsIDB4MDAsIDB4RDAsIDB4RUMsIDB4NDAsIDB4MzEsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MEIsIDB4NTAsIDB4OEMsCisweDQwLCAweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDlELCAweDAwLAorMHg3QiwgMHg4NywgMHg2QywgMHg0MSwgMHhGMSwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg1MywgMHgwMCwgMHg1QywgMHgwMSwKKzB4QjQsIDB4MDUsIDB4QzgsIDB4MTQsIDB4MTAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4MzAsIDB4MDUsIDB4QzQsIDB4MTcsCisweDAwLCAweDVGLCAweDAwLCAweDQ0LCAweDAxLCAweDMwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDVGLCAweDAwLCAweDRDLAorMHgwMSwgMHg3MCwgMHgzNywgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg5RSwgMHgyMSwgMHg1MCwgMHhCNywgMHg0MCwKKzB4NUQsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDcsIDB4MDQsIDB4MUYsCisweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDQwLCAweEU4LCAweDAwLCAweDcwLAorMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgyMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwKKzB4M0YsIDB4MDAsIDB4REMsIDB4MDAsIDB4NzAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MzcsIDB4MjAsIDB4REMsIDB4MDAsCisweEYwLCAweDAxLCAweEUwLCAweDA1LCAweDAwLCAweDFGLCAweDAwLCAweDVFLCAweDgwLCAweDkwLCAweDAxLCAweDgwLCAweDRBLAorMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNiwgMHgwMiwgMHg5MywgMHgwMCwKKzB4NUMsIDB4MDIsIDB4RjAsIDB4ODksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MTYsIDB4MzAsIDB4MDksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDkzLAorMHgwMCwgMHg1QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMiwgMHg3QywgMHgwMiwgMHgzMCwKKzB4MDksIDB4QzAsIDB4MjQsIDB4MTAsIDB4OUYsIDB4ODAsIDB4N0UsIDB4MjYsIDB4MzAsIDB4ODksIDB4QzIsIDB4NDMsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDY2LCAweDAwLCAweDkxLCAweDIwLCAweDQ0LAorMHgwMiwgMHg5MCwgMHgxOSwgMHg0NCwgMHhBNywgMHgwMCwgMHg5MSwgMHgwMiwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NTAsIDB4MjAsIDB4NDAsIDB4OTEsIDB4MDIsCisweDc0LCAweDAyLCAweEQwLCAweDE5LCAweDQwLCAweDI0LCAweDAwLCAweDlGLCAweDAyLCAweDM0LCAweDAyLCAweDEwLCAweDA5LAorMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwNiwgMHgxNCwgMHgzOSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4NDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsCisweEQwLCAweDA5LCAweDQwLCAweDJGLCAweDAwLCAweEIxLCAweDAwLCAweEY0LCAweDAyLCAweDEwLCAweDBCLCAweDQwLCAweDJGLAorMHgwMCwgMHhCRCwgMHgwMCwgMHhGNCwgMHg4MiwgMHhEMCwgMHgwQiwgMHg0MCwgMHgyQywgMHgwMCwgMHhCMSwgMHgwMCwgMHhGNCwKKzB4MjIsIDB4RDAsIDB4NEIsIDB4NDAsIDB4MkUsIDB4MDEsIDB4QkQsIDB4MDAsIDB4RjQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsCisweDI0LCAweDAwLCAweDlELCAweDBBLCAweDU0LCAweDAzLCAweDEwLCAweDA5LCAweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHg0MSwgMHg4MSwgMHgwNCwgMHgwNSwgMHgwMiwgMHg5MCwKKzB4MEEsIDB4NDAsIDB4NkIsIDB4MDAsIDB4QTEsIDB4MDEsIDB4RjQsIDB4MDIsIDB4MTUsIDB4MEUsIDB4NDIsIDB4MkIsIDB4MDAsCisweEFELCAweDAwLCAweEI0LCAweDgyLCAweEQwLCAweDBCLCAweDQwLCAweDJDLCAweDAwLCAweEExLCAweDAxLCAweEI2LCAweDAyLAorMHhEMCwgMHgwQSwgMHg0MCwgMHgyOCwgMHgwMCwgMHhBRCwgMHgwMSwgMHhGNCwgMHgwMiwgMHgxNCwgMHg0OCwgMHg0MCwgMHgyMCwKKzB4MDIsIDB4OEQsIDB4MDQsIDB4MzQsIDB4MTIsIDB4MTAsIDB4NEMsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDgyLCAweDAyLCAweDEzLCAweDBBLCAweDVDLCAweDI4LCAweEYwLCAweDAxLAorMHhDMCwgMHg4NywgMHg0MiwgMHgxMywgMHgwQSwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgwMiwgMHgxRiwKKzB4MEEsIDB4N0MsIDB4MjgsIDB4RDAsIDB4QTEsIDB4QzAsIDB4ODQsIDB4MDIsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MDAsIDB4RjAsCisweEExLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDBBLCAweEZDLCAweDI4LCAweDMwLCAweEExLCAweEQwLCAweDg0LCAweDEwLAorMHgxRiwgMHgwMCwgMHg3QywgMHgyOCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4M0YsIDB4MDIsIDB4QkYsIDB4MDgsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDgwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHg4MCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MjcsIDB4MjEsIDB4OUYsCisweDA4LCAweEZDLCAweDIzLCAweEY4LCAweDhCLCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOSwgMHhBMCwgMHgyRiwgMHgwNSwgMHhBMywgMHg4QywgMHg1QywgMHgwMiwgMHgzNSwgMHgwQiwgMHhDMCwgMHgyRiwKKzB4MDIsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4NzAsIDB4MEIsIDB4RTAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEQsCisweDIyLCAweEYxLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweEJGLCAweDA4LCAweEZDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLAorMHgyRSwgMHgwMCwgMHhCRiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHhDOSwgMHhFMiwgMHgyNCwgMHg4MCwgMHhCRiwgMHhBMCwKKzB4QzgsIDB4ODMsIDB4MzAsIDB4MEIsIDB4QzAsIDB4NjcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFDLCAweDA4LCAweDAzLCAweDAxLCAweDExLCAweDBDLCAweDQ1LCAweDQwLCAweDEwLCAweDAxLCAweDQwLCAweDAzLCAweDAwLAorMHgxRCwgMHgxNCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwNCwgMHgxRCwgMHgxMCwgMHg0NCwgMHgwMCwKKzB4RDAsIDB4NDEsIDB4NDEsIDB4MDQsIDB4MDEsIDB4MEQsIDB4MDQsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDEsIDB4MDQsCisweDEwLCAweDBELCAweDU0LCAweDc0LCAweDEwLCAweDUwLCAweEMxLCAweDUwLCAweDA0LCAweDI0LCAweDFELCAweDAwLCAweDQ1LAorMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHg3MywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QTAsIDB4MjMsIDB4MDUsIDB4ODEsIDB4MDQsIDB4MDQsIDB4MTIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OEQsCisweDA0LCAweDM0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweDIwLCAweDAxLCAweDhELCAweDAwLCAweDE0LCAweDAyLCAweEQwLAorMHg0OSwgMHg1MCwgMHgyMCwgMHgwNSwgMHg4RCwgMHgwNCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMiwgMHgwMCwKKzB4OEQsIDB4MDQsIDB4MzQsIDB4NTIsIDB4NTAsIDB4NTgsIDB4NDAsIDB4MjEsIDB4MDEsIDB4OEQsIDB4QTgsIDB4MDQsIDB4ODIsCisweDEwLCAweDA4LCAweDQwLCAweDQzLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LAorMHgyNSwgMHg0MCwgMHg5MSwgMHgwMiwgMHg0NCwgMHgyMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NTYsIDB4MDIsIDB4QzAsIDB4MDksCisweDQwLCAweDI0LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweERELAorMHgwMCwgMHgzNCwgMHgwMiwgMHg1MCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHg0MCwgMHgwNiwgMHgwMiwgMHgxNCwKKzB4NDksIDB4NDAsIDB4NjMsIDB4MjgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QTgsIDB4QTMsCisweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLAorMHgwMiwgMHg1MCwgMHgwOCwgMHg1MCwgMHgyNSwgMHgwOCwgMHg5RiwgMHgwMCwgMHg1QywgMHgwMiwgMHhGMiwgMHgwOSwgMHhDOCwKKzB4MjQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDAsCisweDdDLCAweDAyLCAweDM0LCAweDA5LCAweDQwLCAweDI1LCAweDAwLCAweDlELCAweDgwLCAweDRDLCAweDBBLCAweDIwLCAweDA5LAorMHhDMSwgMHgxNywgMHhBMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHg2NSwgMHgwMiwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEIwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDZDLCAweDAyLCAweEYwLCAweDA5LCAweEM0LCAweDI3LAorMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgxMCwgMHg2NCwKKzB4MDIsIDB4QjAsIDB4MDgsIDB4QzAsIDB4MjcsIDB4MDAsIDB4OEYsIDB4MTAsIDB4N0MsIDB4MEEsIDB4RjAsIDB4MDksIDB4QzIsCisweDUzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDg1LCAweDIwLCAweDEzLAorMHg0MCwgMHg1QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxMywgMHgwMCwgMHg0QywgMHg5MCwgMHhFMiwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MjAsIDB4MUYsIDB4MDAsIDB4NkMsIDB4MDAsIDB4RDAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDFGLCAweDA4LCAweDRDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAyLCAweDEzLCAweDAwLCAweDRDLCAweDAwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwOCwgMHgxRCwgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg1MCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4MUMsIDB4MDIsIDB4NTEsIDB4ODEsCisweDQ1LCAweDAxLCAweDcwLCAweDE1LCAweDQwLCAweDVGLCAweDAxLCAweDcxLCAweDAwLCAweDg0LCAweDBELCAweDEwLCAweDk3LAorMHg0MCwgMHgxNywgMHgwMCwgMHg1RCwgMHgwMCwgMHg3MCwgMHgwMSwgMHg5OCwgMHgwNCwgMHg0MCwgMHgxNywgMHgwMCwgMHg3RCwKKzB4MDAsIDB4NDQsIDB4MDEsIDB4NzAsIDB4MDUsIDB4NDAsIDB4NTcsIDB4MDAsIDB4N0IsIDB4MDMsIDB4NDQsIDB4MDEsIDB4QzAsCisweDA1LCAweDQwLCAweDE3LCAweDEwLCAweDdDLCAweDAyLCAweDc0LCAweDAxLCAweDEwLCAweDA3LCAweDAwLCAweDUwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHg3MiwgMHgwMCwgMHhEMSwgMHgwMCwgMHg0NCwKKzB4MDMsIDB4NTAsIDB4ODgsIDB4NDAsIDB4NzMsIDB4NDAsIDB4QzUsIDB4MDgsIDB4MDQsIDB4MEIsIDB4NTAsIDB4MkMsIDB4NDAsCisweDMzLCAweDAwLCAweERELCAweDAwLCAweDI0LCAweDAzLCAweEQyLCAweDBDLCAweDQ0LCAweDMzLCAweDAwLCAweENELCAweDEwLAorMHgyNSwgMHgwMiwgMHg1MCwgMHgxRCwgMHg0MCwgMHg2MywgMHgwMCwgMHhDMSwgMHgwQSwgMHgyNSwgMHgwMywgMHhEMCwgMHgwQywKKzB4NjAsIDB4MzMsIDB4MDAsIDB4NEQsIDB4MEIsIDB4MzQsIDB4MDIsIDB4NTAsIDB4MEMsIDB4MDAsIDB4NTAsIDB4MDAsIDB4MEEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDgwLCAweDM4LCAweDA0LCAweEIxLCAweDAyLCAweDg0LCAweDMzLAorMHg1MCwgMHgwRSwgMHg0MCwgMHg1QiwgMHgwMCwgMHg2NSwgMHgwMSwgMHg4NCwgMHg0MywgMHgxMCwgMHgwQSwgMHg0MSwgMHgzQiwKKzB4MDEsIDB4RUQsIDB4MDQsIDB4QjQsIDB4MjMsIDB4OTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MTAsIDB4RUQsIDB4MDEsIDB4QTQsCisweDAzLCAweDUwLCAweDJFLCAweDQwLCAweDdCLCAweDAwLCAweEU5LCAweDIxLCAweEE2LCAweDAzLCAweEQwLCAweDRFLCAweDQwLAorMHgzQiwgMHgwMSwgMHg2OSwgMHgwMCwgMHhCNCwgMHgwMywgMHg1OCwgMHgxQywgMHg0NCwgMHgxMCwgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MTAsIDB4NzgsIDB4MDIsIDB4RTMsIDB4MDEsIDB4OUMsIDB4MjcsIDB4NzEsCisweDFFLCAweEMwLCAweDdCLCAweDIwLCAweEY3LCAweDAxLCAweDhELCAweDA2LCAweDcwLCAweDFFLCAweEMwLCAweDdCLCAweDAwLAorMHhFRCwgMHgwNSwgMHhBQywgMHg4NywgMHhEMCwgMHgzRSwgMHhDMCwgMHg3QiwgMHgwMiwgMHhFRiwgMHgwMSwgMHhBQywgMHgwNywKKzB4NzAsIDB4MUUsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RTMsIDB4MDEsIDB4QUMsIDB4OTcsIDB4RjAsIDB4OUUsIDB4RTAsIDB4N0IsCisweDIwLCAweDZELCAweDIxLCAweEJDLCAweDA3LCAweDc0LCAweDFFLCAweEMyLCAweDUwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCMCwgMHhCRCwgMHg0MCwgMHg5RiwgMHgwNiwgMHg3QywgMHgwMywgMHg3MCwgMHgwRCwKKzB4QzAsIDB4MTcsIDB4MDAsIDB4NUIsIDB4MDAsIDB4M0MsIDB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MzcsIDB4MDQsIDB4REYsCisweDAyLCAweDdDLCAweDBCLCAweEYwLCAweDJELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDAzLCAweDYwLAorMHgwRCwgMHhDMCwgMHgzMywgMHgwMCwgMHg5RiwgMHgwMCwgMHg1QywgMHgwQiwgMHhGMCwgMHhBRCwgMHhDMCwgMHgzNywgMHgwMCwKKzB4MUYsIDB4MDAsIDB4M0MsIDB4NUIsIDB4QjAsIDB4MDksIDB4QzIsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweEEwLCAweDRGLCAweDQwLCAweEIzLCAweDAzLCAweENDLCAweDEzLCAweEYwLCAweDFFLCAweEMwLAorMHg2QywgMHgwMCwgMHhCRiwgMHgwMSwgMHg4QywgMHgwNiwgMHgzMCwgMHgxQiwgMHhDMCwgMHg3QiwgMHgwNCwgMHhGMywgMHgxMywKKzB4Q0MsIDB4MEYsIDB4MzAsIDB4M0YsIDB4QzAsIDB4N0YsIDB4MDQsIDB4RkYsIDB4ODEsIDB4RkMsIDB4ODcsIDB4QjAsIDB4MUYsCisweEMwLCAweDdGLCAweDAwLCAweEJGLCAweDAxLCAweEZDLCAweDRGLCAweEYwLCAweDFGLCAweEMwLCAweDdDLCAweDA0LCAweDdGLAorMHgwOSwgMHhDQywgMHgwNiwgMHgzMCwgMHg5RCwgMHhDMiwgMHgwQiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4ODgsIDB4MDksIDB4MDAsIDB4QTEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MDgsCisweDA0LCAweDJELCAweDQ0LCAweDg0LCAweDAyLCAweDEwLCAweDBBLCAweDQwLCAweDNCLCAweDAwLCAweEUxLCAweDAwLCAweEM0LAorMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhBRCwgMHgxMCwgMHhCNCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwKKzB4M0IsIDB4MDAsIDB4QUQsIDB4MTAsIDB4QkMsIDB4MjMsIDB4RDAsIDB4MEUsIDB4QzAsIDB4M0EsIDB4MDAsIDB4NkQsIDB4MDgsCisweDg0LCAweDAzLCAweDExLCAweDNFLCAweDQwLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwOCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg4MSwgMHgwMCwgMHg4NCwgMHg2MywgMHhEMCwgMHgwRiwgMHg0MCwgMHgyQSwgMHgwMCwKKzB4QUQsIDB4MDAsIDB4QzYsIDB4MDIsIDB4MTAsIDB4MEEsIDB4NDAsIDB4QkYsIDB4MDAsIDB4RjEsIDB4MDIsIDB4ODQsIDB4MjMsCisweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweDZELCAweDA4LCAweEY0LCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDNCLAorMHgwMiwgMHg2RCwgMHgwOCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzOCwgMHgwMiwgMHhDRCwgMHg0OCwgMHg4NiwKKzB4MDMsIDB4NTAsIDB4OEUsIDB4NDAsIDB4MjMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDI4LCAweDEzLCAweDAwLCAweDgxLCAweDQyLCAweDA2LCAweDA3LCAweEQwLCAweDRDLCAweDQwLCAweDQyLCAweDAxLCAweDBELAorMHgwRCwgMHgwNCwgMHgwRSwgMHgxMCwgMHg2OCwgMHg0MCwgMHg3MywgMHgwMCwgMHhDMSwgMHgwMSwgMHgwNCwgMHg0MywgMHgxMCwKKzB4MUMsIDB4NDEsIDB4MzMsIDB4MDQsIDB4MEQsIDB4MDUsIDB4MzQsIDB4NDMsIDB4MTgsIDB4MzgsIDB4NDAsIDB4NzMsIDB4MDAsCisweDFELCAweDA1LCAweDE2LCAweDJCLCAweEQxLCAweDBDLCAweDUwLCAweDMwLCAweDA4LCAweDBELCAweDAwLCAweDQwLCAweDBCLAorMHg1OCwgMHgyOCwgMHg0MSwgMHgxQiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBOCwKKzB4MjEsIDB4MTEsIDB4RDEsIDB4MDIsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MkMsIDB4QzAsIDB4RjYsIDB4MDAsIDB4REYsIDB4MDIsCisweDRELCAweDQ0LCAweDM0LCAweDFELCAweEMwLCAweDNGLCAweDAwLCAweEUzLCAweDA0LCAweEM0LCAweDA3LCAweDMwLCAweDBGLAorMHg0MCwgMHg3QiwgMHgwMCwgMHgxRiwgMHgwMywgMHgzQywgMHgwQiwgMHgzMCwgMHg5RCwgMHg0MCwgMHhCNywgMHgwNCwgMHg1RiwKKzB4MDMsIDB4QjQsIDB4MDcsIDB4RjAsIDB4MEYsIDB4MDAsIDB4M0MsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEMsIDB4MjIsIDB4NzIsCisweDNELCAweEM0LCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDg3LAorMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgxRCwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4OEQsIDB4QzAsIDB4MzcsIDB4MjIsIDB4REYsIDB4MDAsIDB4N0MsIDB4MjMsIDB4RjAsIDB4OEQsIDB4QzAsCisweDM3LCAweDAyLCAweDFGLCAweDAyLCAweDdDLCAweDA3LCAweDcwLCAweDhELCAweEMwLCAweDM3LCAweDAxLCAweDVGLCAweDQwLAorMHg3QywgMHg0MywgMHhGMCwgMHgxRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERCwgMHgwMiwgMHg3QywgMHgwNywgMHg5NiwgMHgxRCwKKzB4NDAsIDB4MjcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4MkYsIDB4ODAsCisweEYzLCAweDEwLCAweENDLCAweDAzLCAweEYwLCAweDFGLCAweEMwLCAweDlDLCAweDIwLCAweDdGLCAweDAwLCAweENDLCAweDUxLAorMHg3MCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGMywgMHgyMCwgMHhDQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDNCwgMHgzRiwKKzB4ODAsIDB4MzMsIDB4MDAsIDB4RkMsIDB4MDMsIDB4MzEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4N0YsIDB4MDAsIDB4Q0MsCisweDAzLCAweDMwLCAweDBFLCAweEMwLCAweDNDLCAweDAwLCAweEZGLCAweEEwLCAweDRDLCAweDgzLCAweDMwLCAweDE3LCAweEMyLAorMHgwNywgMHgyNCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMSwgMHgyMCwgMHg0NiwgMHgwMSwgMHhDMSwKKzB4MDksIDB4NDUsIDB4MDMsIDB4RDAsIDB4MUQsIDB4NDAsIDB4QzQsIDB4MTAsIDB4MUQsIDB4NUIsIDB4MDQsIDB4MUYsIDB4NTAsCisweDc1LCAweDQwLCAweDMzLCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweEQwLCAweDBELCAweDQyLCAweDM3LCAweDQwLAorMHgxMSwgMHgwMiwgMHg3NCwgMHgwMywgMHg1MCwgMHgwRCwgMHg0OCwgMHgzNywgMHgyMCwgMHgxRCwgMHgwMiwgMHg2QywgMHgwMywKKzB4QjAsIDB4MEQsIDB4NDAsIDB4MzUsIDB4MTAsIDB4OEQsIDB4MDcsIDB4NTQsIDB4MDMsIDB4MTQsIDB4M0QsIDB4NDAsIDB4ODcsCisweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDQ0LCAweDAwLCAweDk5LCAweDAwLAorMHg0NCwgMHgwMywgMHhEMCwgMHg4RCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhDRCwgMHgwMCwgMHg0NCwgMHgwMywgMHg1MCwgMHgxRCwKKzB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsCisweDA4LCAweDc0LCAweDA3LCAweDkwLCAweDBELCAweDQwLCAweDM3LCAweDAyLCAweDlELCAweDAwLCAweDQ0LCAweDAzLCAweDEwLAorMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHgxRCwgMHgwMSwgMHg2NSwgMHgwMiwgMHgxMCwgMHg4RCwgMHg0MCwgMHgwNywgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4OTEsIDB4ODAsIDB4MDQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDIwLCAweDAwLCAweDhELCAweDAwLCAweDA1LCAweDAzLCAweDUwLCAweDBDLCAweDQwLAorMHgzNywgMHgwMCwgMHhEMSwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzNywgMHgwMCwgMHg4MSwgMHgwMCwKKzB4NjQsIDB4MDMsIDB4OTgsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NjUsIDB4MDMsIDB4OTAsIDB4MEMsCisweDQwLCAweDMwLCAweDAwLCAweDhELCAweDAwLCAweDE0LCAweDAzLCAweDEwLCAweDRDLCAweDQwLCAweDQzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhCMCwgMHgwRSwgMHgwMCwgMHhCQiwgMHg0MCwgMHhDQywgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4MTQsIDB4MDAsIDB4NEYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4M0YsCisweDAwLCAweEYzLCAweDAwLCAweENDLCAweDAzLCAweEYwLCAweDBGLCAweDQwLCAweDNGLCAweDAwLCAweDUxLCAweDAwLCAweDdDLAorMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgxMCwgMHg1RiwgMHg0MCwgMHhDQywgMHgwMywgMHgzMCwgMHgwRiwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4OUYsIDB4MjAsIDB4Q0MsIDB4MDMsIDB4MzAsIDB4MDUsIDB4QzIsIDB4MDcsIDB4NDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDBGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHg0MCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwKKzB4RUYsIDB4NDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4RTAsIDB4M0YsIDB4MDAsIDB4M0YsIDB4ODAsIDB4QkMsIDB4MDMsCisweDcwLCAweDBCLCAweEMwLCAweDNGLCAweDEwLCAweDNGLCAweDgwLCAweERDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNGLAorMHgyMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgyRiwgMHhDMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4N0IsIDB4MDAsIDB4RkYsIDB4MDEsIDB4Q0MsIDB4MjcsIDB4RTAsIDB4MUYsCisweEMwLCAweDdDLCAweDAyLCAweEZCLCAweDAxLCAweEJFLCAweDBGLCAweDExLCAweDNGLCAweEMwLCAweDdDLCAweDgyLCAweEYzLAorMHgwMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHhGRiwgMHgwMCwgMHhGQiwgMHgwMSwgMHhEQywgMHgwNywgMHgzMCwKKzB4OUYsIDB4QzAsIDB4NUUsIDB4MDIsIDB4QjMsIDB4ODQsIDB4RUMsIDB4MzEsIDB4RjAsIDB4MUYsIDB4RTQsIDB4N0YsIDB4MDAsCisweEZGLCAweEMxLCAweEVDLCAweDI0LCAweEIwLCAweDE3LCAweEMwLCAweDBDLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwgMHgwNywgMHgwMCwgMHgxRCwgMHgxMCwgMHg2OSwgMHgwMCwgMHhGMSwgMHgxMSwgMHg0MCwKKzB4MDAsIDB4MjAsIDB4MTEsIDB4MDEsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDAsIDB4MDEsIDB4MTcsIDB4MDEsCisweDc0LCAweDA0LCAweEQwLCAweDExLCAweDQwLCAweDA0LCAweDIwLCAweDFELCAweDAxLCAweDQ0LCAweDg0LCAweEIwLCAweDAxLAorMHg0MCwgMHgxNSwgMHgwMSwgMHhENSwgMHgwOSwgMHg0NCwgMHhCMywgMHhEMCwgMHgxRiwgMHg0MiwgMHg3RiwgMHgwMCwgMHhGRCwKKzB4MDEsIDB4MDQsIDB4MTAsIDB4MTAsIDB4MTksIDB4NDAsIDB4MDUsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDExLCAweEEwLCAweDMzLCAweDAwLCAweERELCAweDg0LCAweDAwLCAweDEzLCAweEQwLCAweDBELCAweDQwLCAweDMwLAorMHgyMSwgMHhDOSwgMHgwMCwgMHgzMCwgMHgxMywgMHgxMCwgMHg0RCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwKKzB4ODMsIDB4QzAsIDB4MEQsIDB4MDAsIDB4MzAsIDB4MDEsIDB4Q0QsIDB4NjAsIDB4NDAsIDB4MDMsIDB4OTIsIDB4NEMsIDB4NDAsCisweDIwLCAweDAwLCAweDg1LCAweDAwLCAweDE0LCAweDAxLCAweDUwLCAweDBDLCAweDQwLCAweDMzLCAweDgwLCAweEM1LCAweDAwLAorMHg0NCwgMHgxMCwgMHg5MSwgMHgwRCwgMHg2NCwgMHg0NCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTgsIDB4MDUsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDYsIDB4ODAsIDB4NTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDE1LCAweDAwLCAweDc0LCAweDAwLAorMHhEMCwgMHgwMSwgMHg1MCwgMHgwNCwgMHgwOCwgMHgxRCwgMHgwMCwgMHg1NCwgMHgwMCwgMHg5OCwgMHgwMSwgMHg0MCwgMHgyMSwKKzB4MDAsIDB4OTQsIDB4MDAsIDB4NjQsIDB4MTEsIDB4RDAsIDB4MEQsIDB4NjAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsIDB4NDQsCisweDA2LCAweDEwLCAweDA5LCAweDQwLCAweDBELCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHg4OCwgMHgzNywgMHgwMCwgMHhDRiwgMHgwMCwgMHg0NCwgMHgwMywgMHhEMSwgMHgwQywgMHhEMCwgMHgzNCwgMHgwMCwgMHhEQiwKKzB4MDAsIDB4NzQsIDB4MDMsIDB4MzQsIDB4MEMsIDB4RDAsIDB4MzAsIDB4MDAsIDB4RDMsIDB4ODAsIDB4N0MsIDB4MDMsIDB4RjEsCisweDBELCAweDQwLCAweDM2LCAweDA4LCAweERCLCAweDAwLCAweDFDLCAweDAzLCAweEIwLCAweDBELCAweEMyLCAweEE2LCAweDAwLAorMHg4NywgMHgwMSwgMHg3RCwgMHgwMSwgMHhGMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhDRiwgMHgwMCwgMHgyRCwgMHgwNCwKKzB4QjAsIDB4RDQsIDB4NDAsIDB4MDAsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsCisweDBELCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHg4MCwgMHhGNCwgMHgwMCwgMHhGMCwgMHgwMywKKzB4QzAsIDB4MEQsIDB4MDAsIDB4M0QsIDB4MDAsIDB4RUQsIDB4NDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4M0YsIDB4MDgsIDB4RkYsCisweDA1LCAweENDLCAweDAzLCAweEYwLCAweDBGLCAweDQwLCAweDNFLCAweDIwLCAweEZGLCAweDAwLCAweEZFLCAweDAwLCAweEYwLAorMHgxQiwgMHhEMCwgMHgxRSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwKKzB4MDQsIDB4RDMsIDB4MDEsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzgsIDB4MzQsIDB4MTAsIDB4RDcsIDB4MDgsIDB4NkUsCisweEEzLCAweDMwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERCLCAweDg0LCAweDdDLCAweDgzLCAweEYwLCAweDBELCAweEMwLAorMHgzNywgMHgwMCwgMHhERiwgMHgwOCwgMHg2QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHhBNiwgMHgyMCwgMHg5NywgMHgyNCwKKzB4NkUsIDB4MDksIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MjgsIDB4REYsIDB4MjAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MkQsCisweEMwLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweEM0LCAweDAxLAorMHgxMSwgMHgwMSwgMHg3NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHhEMCwgMHgwNiwgMHgwMCwgMHgxMSwgMHgwMSwgMHg0NCwgMHgwNCwKKzB4MTQsIDB4NTEsIDB4NDAsIDB4MDcsIDB4MzAsIDB4MTEsIDB4MTAsIDB4NUMsIDB4MDAsIDB4RDksIDB4MDAsIDB4QzEsIDB4NDUsCisweDI0LCAweDBELCAweEFBLCAweDY0LCAweDAwLCAweDcwLCAweDQxLCAweDQwLCAweDY0LCAweDAwLCAweDlCLCAweDA0LCAweDc0LAorMHgwMSwgMHhEMCwgMHgwRCwgMHg0OCwgMHgzNywgMHgwMCwgMHhERCwgMHgwNCwgMHg1QywgMHg2RSwgMHgxMCwgMHgwOSwgMHhDMCwKKzB4NEQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MzIsIDB4ODAsIDB4QzEsCisweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDhDLCAweDQwLCAweDM0LCAweDAwLCAweEM1LCAweDAxLCAweDQ0LCAweDA3LCAweDkyLAorMHgxQywgMHgwMCwgMHgzMywgMHgwMCwgMHhDMSwgMHgwMiwgMHgzNCwgMHgwMywgMHhEMCwgMHgxQywgMHg2MCwgMHg3MywgMHgyMCwKKzB4Q0QsIDB4MjMsIDB4MzQsIDB4MjcsIDB4RDAsIDB4MUQsIDB4NDAsIDB4RjAsIDB4MDQsIDB4ODEsIDB4MDMsIDB4MzQsIDB4MDEsCisweEQwLCAweDBDLCAweDQwLCAweDczLCAweDAwLCAweENELCAweDA1LCAweDM0LCAweDBELCAweDEwLCAweDA4LCAweDQwLCAweDFGLAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHg0QywgMHgwMCwgMHgyMSwgMHgwMSwKKzB4QjQsIDB4MDQsIDB4RDAsIDB4MTMsIDB4NDAsIDB4NDgsIDB4MDAsIDB4MjEsIDB4MDEsIDB4QzQsIDB4MDQsIDB4OTgsIDB4NTIsCisweDQ0LCAweDRCLCAweDAwLCAweDIxLCAweDA1LCAweDk0LCAweDA0LCAweEQwLCAweDEyLCAweDY4LCAweDRCLCAweDAwLCAweDJELAorMHgwMSwgMHhCMCwgMHgwNCwgMHg1MCwgMHgxMiwgMHg0MCwgMHg3OSwgMHgwMCwgMHhFOSwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwKKzB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4QTEsIDB4OTQsIDB4MjcsIDB4MTAsIDB4OUEsIDB4NDAsIDB4MTksIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweEMzLCAweDAwLCAweDNDLAorMHgwMywgMHhGMCwgMHg4QywgMHg0MCwgMHgzMCwgMHgyMCwgMHhDNywgMHgwMCwgMHgwNSwgMHgyMywgMHhCMCwgMHg1QywgMHhDNCwKKzB4MzMsIDB4MDAsIDB4QzEsIDB4MDUsIDB4M0MsIDB4MDMsIDB4RDAsIDB4MEMsIDB4QzAsIDB4MzMsIDB4MjAsIDB4Q0YsIDB4ODgsCisweDNDLCAweDAzLCAweEYyLCAweDBELCAweDUwLCAweEEwLCAweDA0LCAweEMzLCAweDAwLCAweDM0LCAweDAzLCAweEYwLCAweDhDLAorMHhDMCwgMHgzMywgMHgwNiwgMHhDRiwgMHgwMCwgMHgzQywgMHgwMSwgMHgzMCwgMHg4OCwgMHhDNCwgMHg0QiwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4MEQsIDB4MDAsIDB4M0YsIDB4ODAsIDB4RkMsIDB4MDAsCisweEYwLCAweDgyLCAweEMwLCAweDBGLCAweDAwLCAweDJFLCAweDA4LCAweEQ0LCAweDAwLCAweDcxLCAweDAzLCAweEMwLCAweDA3LAorMHgwMiwgMHgxNywgMHgwOCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwRCwgMHgwMCwgMHgxRCwgMHg4MCwgMHg2NCwKKzB4MDAsIDB4RjAsIDB4MTEsIDB4QzAsIDB4MjAsIDB4MDIsIDB4RDgsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MUYsIDB4QzAsCisweDdGLCAweDA4LCAweEZGLCAweDAxLCAweERDLCAweDAzLCAweEYwLCAweDhCLCAweEMwLCAweDBCLCAweDYwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MzUsIDB4MTAsIDB4Q0UsIDB4MDEsIDB4NkMsIDB4MDMsIDB4RDAsIDB4MEMsIDB4QzAsIDB4MzQsIDB4MjAsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDczLCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMSwgMHg3MCwgMHg4RCwgMHhDMCwgMHgzNywKKzB4MDIsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDcsIDB4MzAsIDB4MUQsIDB4QzAsIDB4NTQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDA5LCAweDAwLCAweDJELCAweDAwLCAweEI0LCAweDAwLCAweEMwLCAweDAyLAorMHg0MCwgMHgwQiwgMHgwMCwgMHgyRCwgMHgwMCwgMHg4NCwgMHgwMCwgMHhEMCwgMHgwMiwgMHg0MCwgMHgwOSwgMHgwMCwgMHgyRCwKKzB4MDAsIDB4QjQsIDB4MDAsIDB4NTAsIDB4MDIsIDB4NDAsIDB4MEIsIDB4MDAsIDB4MjEsIDB4MDAsIDB4QTQsIDB4MDAsIDB4RDAsCisweDAyLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAyLCAweDlDLCAweDFCLCAweEYwLCAweDRFLCAweDQ4LCAweDNCLCAweDAxLAorMHhFOSwgMHgwMiwgMHhCNCwgMHgwMywgMHgxMCwgMHgwQSwgMHhDMCwgMHg0QiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDMsIDB4MDIsIDB4NzksIDB4MDgsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4QzAsIDB4MUUsIDB4NDAsCisweDdCLCAweDAwLCAweEZELCAweDAxLCAweDg0LCAweDA3LCAweEQwLCAweDFGLCAweDQwLCAweDc4LCAweDEwLCAweEU0LCAweDAxLAorMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHgwOCwgMHg3RiwgMHgwMCwgMHhFNSwgMHgwMSwgMHhCNCwgMHgwNywgMHg0MCwgMHgxRSwKKzB4NjAsIDB4NkIsIDB4MDQsIDB4RTUsIDB4MDUsIDB4OTQsIDB4MTcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsCisweDA1LCAweEI0LCAweDA3LCAweDEwLCAweDFFLCAweDQ0LCAweDBFLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgyOCwgMHgwMywgMHg4MCwgMHgwRCwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0NCwgMHgwMywKKzB4MDAsIDB4MEQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4RDgsIDB4MDEsIDB4NDIsIDB4MDUsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MzQsCisweDgwLCAweDUyLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweDAxLCAweDAwLCAweDM0LCAweDAwLCAweDkwLCAweDAwLCAweDQwLAorMHhFMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwNiwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDOSwgMHgwMCwKKzB4MzQsIDB4MEUsIDB4MUMsIDB4MDgsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE3LCAweEE4LCAweDE1LCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLAorMHg1RiwgMHgwMCwgMHg0NSwgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNCwgMHgwMCwgMHg1NywgMHgwMCwgMHg3QywgMHgwMSwKKzB4MzAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NTcsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MUYsCisweDAwLCAweDRGLCAweDAwLCAweERDLCAweDgxLCAweDc4LCAweDA1LCAweEM0LCAweDE3LCAweDAwLCAweDVGLCAweDgwLCAweEZDLAorMHgyNSwgMHgzMCwgMHg0NywgMHg0MCwgMHg1RSwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwKKzB4MDAsIDB4OEYsIDB4MjAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjIsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDgsIDB4M0YsCisweDAwLCAweERDLCAweDAwLCAweEYxLCAweDAzLCAweEMwLCAweDBGLCAweDIwLCAweDNELCAweDAwLCAweEZDLCAweDAwLCAweEYwLAorMHgwMywgMHhDOCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhFQywgMHgwMCwgMHhGMCwgMHgwMywgMHg0MCwgMHg4NywgMHgwMSwKKzB4MUYsIDB4MDAsIDB4NUMsIDB4MjAsIDB4NzAsIDB4MDAsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MjAsCisweEYwLCAweDAxLCAweEUwLCAweDQ5LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LAorMHg2NywgMHgwMCwgMHg5RiwgMHgwOCwgMHg3QywgMHgwMiwgMHhGOCwgMHgyOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5MywgMHgwNCwKKzB4N0MsIDB4MDIsIDB4RjAsIDB4MTksIDB4QzAsIDB4MjQsIDB4MjAsIDB4OTcsIDB4MDksIDB4NEMsIDB4MDIsIDB4QjAsIDB4MDksCisweEMwLCAweDI3LCAweDAxLCAweDlGLCAweDAwLCAweDdDLCAweDIyLCAweEYwLCAweDU5LCAweEMwLCAweDI0LCAweDAxLCAweDlGLAorMHgwMCwgMHg1QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgxNiwgMHhGMCwKKzB4MDksIDB4QzgsIDB4NDMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4QTYsCisweDA2LCAweDlELCAweDIwLCAweDc0LCAweDA2LCAweEQ4LCAweDM5LCAweDQ0LCAweDIzLCAweDIwLCAweDkxLCAweDAxLCAweDc0LAorMHgwNiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwOCwgMHg4MywgMHgwMSwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0NCwKKzB4MjcsIDB4MDAsIDB4OUQsIDB4MTAsIDB4NzQsIDB4MDYsIDB4RDAsIDB4MTgsIDB4NTAsIDB4RTQsIDB4MDAsIDB4QkQsIDB4MDAsCisweEM0LCAweDAyLCAweEQwLCAweDBCLCAweDQwLCAweDJDLCAweDAxLCAweEJELCAweDQwLCAweDc0LCAweDBFLCAweEQyLCAweDA5LAorMHg0MiwgMHgwNywgMHg4MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwOCwKKzB4QkQsIDB4MDAsIDB4RjQsIDB4MDYsIDB4RDIsIDB4MEIsIDB4NDAsIDB4MkYsIDB4MDAsIDB4QjEsIDB4NDAsIDB4RjQsIDB4MTIsCisweDUwLCAweDhCLCAweDQwLCAweDJDLCAweDIwLCAweEJELCAweDAwLCAweEU0LCAweDAyLCAweDkwLCAweDBCLCAweDYwLCAweDJFLAorMHgwMCwgMHhCNSwgMHgwMSwgMHhGNCwgMHgwQSwgMHhEMCwgMHgwQiwgMHg0MCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg2NCwKKzB4MTMsIDB4RDIsIDB4MDksIDB4NDAsIDB4MjQsIDB4ODAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4NDMsIDB4RDAsIDB4MDksIDB4NjAsCisweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIyLCAweDI4LCAweDAwLCAweEFELAorMHgwMiwgMHhCNCwgMHgwQSwgMHhEMCwgMHgwRSwgMHg0MCwgMHgyRiwgMHgwMCwgMHhBMSwgMHgwMCwgMHhCNiwgMHgwQSwgMHhEMCwKKzB4MkEsIDB4NTAsIDB4MjgsIDB4MDIsIDB4QkQsIDB4MDAsIDB4RTUsIDB4MEEsIDB4MTAsIDB4MEEsIDB4NjAsIDB4QUIsIDB4MDAsCisweEFELCAweDAwLCAweEI2LCAweDAyLCAweEQwLCAweDJCLCAweDYyLCAweEExLCAweDAwLCAweDhELCAweDIwLCAweDA0LCAweDhBLAorMHhEMiwgMHgyOCwgMHg0MCwgMHgyMCwgMHg4OCwgMHg4RCwgMHg4MCwgMHgzNCwgMHgyMiwgMHhEMCwgMHgyOCwgMHg0MCwgMHg0MywKKzB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4MDYsIDB4MDAsIDB4MUYsIDB4MDAsCisweDdDLCAweDAwLCAweEQwLCAweDAxLCAweEMwLCAweDg3LCAweDQyLCAweDEzLCAweDAwLCAweDdFLCAweDAwLCAweDcwLCAweDAxLAorMHhDMCwgMHg4NCwgMHgwMCwgMHg1NywgMHgwMCwgMHgyQywgMHgwMCwgMHhCMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwgMHgxRiwKKzB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzIsIDB4MTUsIDB4MDAsIDB4MUYsIDB4MDEsIDB4NEQsIDB4MDQsIDB4RTAsCisweDExLCAweEQwLCAweDQ0LCAweDAwLCAweDFELCAweDAxLCAweDNDLCAweDA4LCAweEYwLCAweDAwLCAweEUyLCAweDc3LCAweEMwLAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHgyNywgMHgwRCwgMHg5RiwgMHgwMSwgMHg3QywKKzB4ODYsIDB4RjIsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUQsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MTksIDB4NDQsCisweDI3LCAweDAxLCAweDkzLCAweDAwLCAweDVDLCAweDA2LCAweEUwLCAweDA5LCAweDQwLCAweDY3LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhDOCwgMHg2RSwgMHgwMCwgMHhCRiwgMHgwMiwgMHhGNCwgMHgwRSwgMHhGMCwgMHgzOSwKKzB4QzAsIDB4QTcsIDB4MDgsIDB4OUYsIDB4MDIsIDB4RkMsIDB4MTIsIDB4RjAsIDB4MUYsIDB4QzAsIDB4NjcsIDB4NjAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDJGLCAweDAwLCAweEIzLCAweDAyLCAweEZDLCAweDAyLAorMHhEMSwgMHgwQSwgMHhDMCwgMHgyNywgMHgxMCwgMHhCRSwgMHgwMCwgMHhEOCwgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyNywKKzB4MDIsIDB4QkYsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4QUYsIDB4MDAsIDB4QjcsIDB4MDAsIDB4REMsCisweDAyLCAweEMwLCAweDJCLCAweEMwLCAweDJGLCAweDAwLCAweEIzLCAweDAxLCAweEJDLCAweDQ2LCAweDMwLCAweEQ5LCAweEMwLAorMHg2QywgMHgwMSwgMHhCMywgMHgxMSwgMHhDOCwgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg2NywgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDUsIDB4MUIsIDB4MDUsIDB4NzQsIDB4MTQsIDB4RDAsCisweDAxLCAweDQwLCAweDA3LCAweDA0LCAweDFELCAweDAwLCAweDc0LCAweDU0LCAweEQwLCAweDExLCAweDQwLCAweDA3LCAweDAxLAorMHgxRCwgMHgwMCwgMHg3NCwgMHg1NCwgMHhEMCwgMHgwMSwgMHhDMCwgMHg0NCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwKKzB4OTAsIDB4NTEsIDB4NDAsIDB4NDcsIDB4MDUsIDB4MTEsIDB4MjAsIDB4NzQsIDB4MTQsIDB4NTAsIDB4MzEsIDB4NDAsIDB4ODUsCisweDAwLCAweDExLCAweDAyLCAweDU0LCAweDAwLCAweEQwLCAweDUwLCAweDQxLCAweDczLCAweDIwLCAweDBDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgyMywgMHgwMSwgMHg4MSwgMHgwMCwgMHgzNCwgMHg0MiwgMHhEMCwgMHgwOCwKKzB4NDAsIDB4MjMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDIsIDB4RDAsIDB4NDgsIDB4NDEsIDB4MjMsIDB4MjEsIDB4OEMsCisweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDI3LCAweDIwLCAweDk0LCAweDAwLCAweDE0LCAweDAyLCAweDkwLAorMHgwOCwgMHg0MCwgMHgyNywgMHgwMCwgMHg4MSwgMHgwMiwgMHgzNCwgMHg1MiwgMHg1MCwgMHhDOCwgMHg0MCwgMHgyMCwgMHgwMiwKKzB4ODUsIDB4MDAsIDB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEE4LCAweDI1LCAweDAwLCAweDk5LCAweDIwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHgyNywgMHgxMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHg4MCwKKzB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4OTAsIDB4MDksCisweDAwLCAweEE3LCAweDAxLCAweDkxLCAweDAwLCAweDcwLCAweDQyLCAweDUwLCAweDA4LCAweDQwLCAweDM3LCAweDAwLCAweDk1LAorMHgwMCwgMHg1NiwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgyOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDUsIDB4MDgsIDB4MjUsIDB4MDAsIDB4QjMsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsCisweDAwLCAweDlGLCAweDAwLCAweERDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweEZDLAorMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyQiwgMHgwMCwgMHg5NywgMHgwMCwgMHg1QywgMHgwMiwgMHg5MCwgMHgwQiwgMHhDMCwKKzB4MkYsIDB4QzAsIDB4OTMsIDB4MDEsIDB4RkMsIDB4MkEsIDB4NzEsIDB4MEIsIDB4QzgsIDB4MjAsIDB4NDAsIDB4OTcsIDB4NDAsCisweDRDLCAweDlFLCAweEYwLCAweDJCLCAweDQwLCAweDE3LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxNCwgMHgwMCwgMHgyNSwgMHgwNCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhFMSwgMHgyNywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzQsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA5LCAweEM0LCAweDI1LCAweDAwLCAweDlGLCAweDIwLCAweDdDLCAweDAyLCAweEIwLCAweDA5LCAweEMyLCAweDY3LAorMHgwMCwgMHg5RiwgMHg4OSwgMHg2QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5QiwgMHg4MCwgMHg3QywKKzB4MTIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweDA4LCAweDA1LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDNBLCAweDAxLCAweEQwLCAweDA2LCAweDAwLCAweDEzLAorMHgwMCwgMHg2QywgMHgwMCwgMHhGMiwgMHgwMSwgMHhDMCwgMHgwNCwgMHg4MCwgMHgxMywgMHgyOCwgMHg3QywgMHgwMCwgMHhCMiwKKzB4MDEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTMsIDB4MDAsIDB4N0MsIDB4NDAsIDB4RjAsIDB4MDEsIDB4QzIsIDB4ODcsIDB4MDAsCisweDFGLCAweDAwLCAweDBDLCAweDA4LCAweDMxLCAweDAxLCAweEQwLCAweDA0LCAweDAwLCAweDAzLCAweDAwLCAweDRELCAweDg4LAorMHgzMCwgMHgyMSwgMHhDMCwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyMCwKKzB4REMsIDB4MDAsIDB4NUQsIDB4NDAsIDB4NzQsIDB4MTEsIDB4MTUsIDB4NTcsIDB4QzAsIDB4MTQsIDB4MTAsIDB4NTUsIDB4NDAsCisweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQwLCAweDE0LCAweDAwLCAweDdCLCAweDAwLCAweDc0LCAweDAxLCAweDEwLCAweDA1LAorMHg0MCwgMHg1NCwgMHgwMCwgMHg2QiwgMHgwMiwgMHhGNCwgMHgwRCwgMHgzNCwgMHgwNSwgMHg0MCwgMHg5QiwgMHgwMCwgMHg3RCwKKzB4MDIsIDB4NkUsIDB4MDEsIDB4QjAsIDB4MDUsIDB4NDAsIDB4OUMsIDB4MDAsIDB4N0IsIDB4MUIsIDB4QzQsIDB4MDUsIDB4MTAsCisweDA1LCAweEM4LCAweDUyLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweEY2LAorMHg4MiwgMHhDRCwgMHgwOSwgMHgzNCwgMHgwMywgMHgxMCwgMHgzOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4QzAsIDB4MEMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4NDUsIDB4MDUsIDB4MzQsIDB4MDMsIDB4OTAsIDB4MDgsIDB4NDAsCisweDMyLCAweDAyLCAweEMxLCAweDA0LCAweDM0LCAweDAxLCAweDE4LCAweDBDLCAweDQwLCAweEUzLCAweDAzLCAweDhELCAweDEwLAorMHgyNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0NCwgMHhBMiwgMHgwMSwgMHg4OSwgMHgwMywgMHgyNCwgMHgxQiwgMHgxRCwgMHgwQywKKzB4NDAsIDB4NTAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MTgsIDB4ODAsCisweEFELCAweDQ0LCAweEY0LCAweDE3LCAweDEwLCAweDFBLCAweDQ0LCAweDdDLCAweDAwLCAweEU1LCAweDAwLCAweEI0LCAweDEyLAorMHhEMiwgMHg1QSwgMHg0MCwgMHg3QywgMHgwMSwgMHhFOSwgMHgwMCwgMHhGNiwgMHgxNywgMHgxMCwgMHgxQSwgMHg0MCwgMHgyQSwKKzB4MDAsIDB4RTEsIDB4MDAsIDB4RjQsIDB4MEYsIDB4OTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDEsIDB4OEQsIDB4MTEsIDB4RjQsCisweDBCLCAweDkwLCAweDhFLCAweDQwLCAweDI4LCAweDA0LCAweEE5LCAweDIwLCAweEE0LCAweDBGLCAweDEwLCAweDVFLCAweDQwLAorMHgxMiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwKKzB4MjEsIDB4QkMsIDB4MUUsIDB4MTAsIDB4MUUsIDB4QzAsIDB4NzgsIDB4MDIsIDB4RTMsIDB4MDEsIDB4QkMsIDB4MDcsIDB4RDIsCisweDVGLCAweEMwLCAweDc4LCAweDA0LCAweEU1LCAweDAxLCAweEJDLCAweDk3LCAweEIwLCAweDFBLCAweDYwLCAweDdFLCAweDAwLAorMHhFMSwgMHgwMSwgMHhCQywgMHgwNywgMHgxOSwgMHgzRSwgMHhDMCwgMHg3QiwgMHgxMSwgMHhBRiwgMHgwMSwgMHhBNiwgMHgwRSwKKzB4MzAsIDB4MUMsIDB4ODgsIDB4NkEsIDB4MDAsIDB4QUIsIDB4MDEsIDB4RUMsIDB4MDUsIDB4MzAsIDB4M0UsIDB4QzAsIDB4NTAsCisweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDE1LCAweDA4LCAweDlGLCAweDAwLAorMHgzQywgMHgwMiwgMHhGMCwgMHgwRCwgMHhDOCwgMHhCMSwgMHgwMSwgMHhERiwgMHgwMCwgMHg3QywgMHgyMiwgMHhGMCwgMHg4OSwKKzB4REEsIDB4MzMsIDB4MDIsIDB4REMsIDB4MDAsIDB4M0MsIDB4MjMsIDB4RjAsIDB4MDgsIDB4ODAsIDB4MjUsIDB4MDAsIDB4OUYsCisweDAwLCAweDNDLCAweDAzLCAweDcwLCAweDA5LCAweDgwLCAweDE3LCAweDEwLCAweDlELCAweDAwLCAweDZDLCAweDAyLCAweEMwLAorMHgwRCwgMHhDMCwgMHgyMSwgMHgwMCwgMHg4RiwgMHgwMCwgMHg1QywgMHgwMSwgMHhGMCwgMHgwRCwgMHhDOCwgMHg0MywgMHg2MCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTAsIDB4N0IsIDB4MDAsIDB4RjMsIDB4MTEsIDB4Q0MsCisweDA3LCAweEI4LCAweDBCLCAweEMwLCAweDdGLCAweDA0LCAweEZGLCAweDAxLCAweEVELCAweDA3LCAweDMwLCAweDFGLCAweEMwLAorMHg3RiwgMHgyMCwgMHhFRiwgMHgwOSwgMHg0QywgMHgyNywgMHgzMCwgMHgxQiwgMHhDMCwgMHg3RCwgMHgwNCwgMHhGQiwgMHgwMSwKKzB4OUMsIDB4MDcsIDB4QjAsIDB4OUUsIDB4QzIsIDB4NUQsIDB4MDQsIDB4QkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUYsCisweEM4LCAweDZDLCAweDAwLCAweEYzLCAweDAxLCAweEZDLCAweDA3LCAweEYwLCAweDFFLCAweEMwLCAweDA4LCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg4OCwgMHgxOSwgMHgwNiwgMHhGMSwgMHg0MCwgMHhDNCwgMHgxMywKKzB4MzksIDB4NEEsIDB4NDAsIDB4M0IsIDB4MDEsIDB4RUQsIDB4MDAsIDB4QzQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDgsIDB4M0IsCisweDAxLCAweEM3LCAweDAyLCAweDg0LCAweDc3LCAweDEwLCAweDBBLCAweDQwLCAweDNDLCAweDAwLCAweDYxLCAweDAwLCAweDg0LAorMHgwMywgMHg0MCwgMHgxRSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhBRCwgMHg4NCwgMHhBNCwgMHgxMywgMHhGMCwgMHgwRSwgMHg0MCwKKzB4MjgsIDB4MDAsIDB4RTUsIDB4MDgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEJDLCAweDAwLCAweEExLCAweDA4LCAweDg0LCAweDAyLCAweDAxLAorMHg4QSwgMHg0MSwgMHgzQiwgMHgxMCwgMHhGRCwgMHgwMCwgMHg4NCwgMHg0MywgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgyMCwKKzB4RUQsIDB4MDIsIDB4ODAsIDB4MTcsIDB4MTAsIDB4MEIsIDB4NDEsIDB4MjksIDB4MDAsIDB4RjEsIDB4MDAsIDB4OTQsIDB4MDMsCisweDEwLCAweDRGLCAweDQwLCAweDFBLCAweDAwLCAweEFELCAweDgwLCAweEI0LCAweDQyLCAweEQwLCAweDFFLCAweDQwLCAweDIwLAorMHgwMCwgMHhFNSwgMHgwMCwgMHhCNCwgMHgwMSwgMHhEMCwgMHgxRiwgMHg0MCwgMHgyMCwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjgsIDB4MDMsIDB4MDAsIDB4OTAsIDB4MDIsIDB4NDQsIDB4MEUsIDB4MTAsIDB4M0MsCisweDQwLCAweEIzLCAweDAyLCAweENELCAweDAyLCAweDA2LCAweDBFLCAweDAwLCAweDM4LCAweDQwLCAweEYzLCAweDAxLCAweEM5LAorMHgwOCwgMHgwNCwgMHg0RiwgMHgxMSwgMHg2OCwgMHg0MiwgMHhBNSwgMHgwMiwgMHgwMSwgMHgwQiwgMHgwNCwgMHg0QiwgMHg1MCwKKzB4MDgsIDB4NDEsIDB4MTMsIDB4MjIsIDB4OEQsIDB4ODEsIDB4NjYsIDB4MUEsIDB4NTIsIDB4MEMsIDB4NDQsIDB4MjAsIDB4MDAsCisweEM1LCAweDgwLCAweDc0LCAweDA4LCAweEQwLCAweDBDLCAweDQwLCAweDE4LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNSwgMHhBOCwgMHg2NSwgMHgwMCwgMHhEMiwgMHgwMSwgMHg0QywgMHg0RiwgMHgzNCwgMHgxOCwgMHhDMCwKKzB4N0YsIDB4MDAsIDB4REYsIDB4MDMsIDB4MEMsIDB4MDcsIDB4MzAsIDB4M0QsIDB4QzEsIDB4QkYsIDB4MDQsIDB4Q0QsIDB4MDEsCisweDRELCAweDBCLCAweDM2LCAweDJELCAweEU0LCAweEI1LCAweDAyLCAweDkzLCAweDAyLCAweDU0LCAweDQyLCAweDEwLCAweDE5LAorMHhDMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwNSwgMHg3NCwgMHgwRiwgMHhEMCwgMHgwRCwgMHhEMCwgMHgzNCwgMHgwMCwgMHg5NywKKzB4MjAsIDB4N0MsIDB4MDIsIDB4RjIsIDB4QkQsIDB4RDUsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweEE3LCAweDIwLCAweDlGLCAweDE4LCAweDdDLCAweDAzLCAweDcwLCAweDI5LCAweEMwLCAweDM3LAorMHgwMSwgMHhERSwgMHgwOCwgMHg3QywgMHgwMywgMHhGNCwgMHg0RCwgMHhDMCwgMHgzNywgMHgwMCwgMHhENywgMHgwMiwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OTcsIDB4ODIsIDB4N0MsIDB4MEIsIDB4NzAsIDB4OEQsIDB4RTAsCisweDM1LCAweDAwLCAweERGLCAweDAyLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDI3LCAweDAwLCAweDlELCAweDAyLAorMHg3QywgMHgyQSwgMHhGMCwgMHgwRCwgMHhDMCwgMHhBNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ODAsIDB4MEEsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4NDMsIDB4NzAsIDB4MEYsIDB4QzEsIDB4M0MsIDB4MDAsCisweEZGLCAweDE1LCAweERDLCAweDY2LCAweDMwLCAweDFCLCAweEMwLCAweDNGLCAweDIwLCAweEZGLCAweDAwLCAweENDLCAweDAzLAorMHhGMCwgMHg5RiwgMHhDMCwgMHgzRiwgMHgwMCwgMHgzMywgMHgxMCwgMHhGQywgMHgwMywgMHhFMCwgMHgwQiwgMHhDMCwgMHg3RiwKKzB4MTAsIDB4RTMsIDB4NDksIDB4Q0MsIDB4MDMsIDB4MzAsIDB4MEYsIDB4QzAsIDB4QkYsIDB4MDAsIDB4QkYsIDB4MjIsIDB4RkMsCisweDQwLCAweDMwLCAweDBGLCAweEMwLCAweDA3LCAweDIyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLAorMHgyMCwgMHg2NiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHg4MywgMHgxMCwgMHgyRCwgMHg0MCwgMHgzNCwgMHgwOCwgMHhERCwKKzB4NDAsIDB4NzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDQsIDB4MzcsIDB4MDgsIDB4REQsIDB4MDMsIDB4NDQsIDB4MDMsIDB4RDAsCisweDE5LCAweDY4LCAweDI3LCAweDgwLCAweDE1LCAweDEzLCAweDc0LCAweDQ3LCAweEQyLCAweDk5LCAweEM0LCAweDUxLCAweDI4LAorMHhEMSwgMHgwMywgMHg2QywgMHgyNywgMHhGMCwgMHgwRCwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwNCwgMHg3QywgMHgyRiwKKzB4MTEsIDB4MEQsIDB4NDAsIDB4MDcsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsCisweDQ2LCAweDA0LCAweERELCAweDAwLCAweDQ0LCAweDEyLCAweDEyLCAweDA5LCAweDQxLCAweDM2LCAweDAwLCAweERELCAweDAwLAorMHg3NCwgMHgwMywgMHgxMiwgMHg4RCwgMHg0MiwgMHgzNywgMHgwMCwgMHhERCwgMHgwMSwgMHg0NCwgMHgwMywgMHhEMCwgMHgwRCwKKzB4NDIsIDB4MzcsIDB4MjAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDcsIDB4RDAsIDB4MDksIDB4NDQsIDB4MTcsIDB4MDIsIDB4OTUsCisweDUwLCAweDQ0LCAweDAyLCAweDEwLCAweDBELCAweDQ4LCAweDM2LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDBBLCAweDEwLAorMHgwRCwgMHg0MCwgMHgwNywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MDUsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NTAsIDB4MzIsIDB4MDgsIDB4Q0QsIDB4MDAsIDB4NzQsCisweDAzLCAweDUwLCAweDhDLCAweDQwLCAweDMzLCAweDAwLCAweERELCAweDAyLCAweDA0LCAweDEzLCAweEQwLCAweDA4LCAweDQwLAorMHgzNiwgMHgwMCwgMHgwNSwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg2MSwgMHgzNSwgMHg0MCwgMHg0NSwgMHg4MCwKKzB4MjQsIDB4MDIsIDB4OTgsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4NEQsIDB4MjAsIDB4MzQsIDB4MDAsIDB4MTAsIDB4MEMsCisweDQwLCAweDQzLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDI2LCAweDAwLAorMHg5RiwgMHgyMCwgMHg0QywgMHgwMiwgMHgzNCwgMHgwMSwgMHhDMCwgMHgzRSwgMHgwMCwgMHhERiwgMHgwMCwgMHg1OCwgMHg4MiwKKzB4MzAsIDB4MDksIDB4QzAsIDB4M0YsIDB4MDgsIDB4REYsIDB4MDIsIDB4ODQsIDB4NDMsIDB4RjAsIDB4MEQsIDB4NDAsIDB4MjcsCisweDAwLCAweDExLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDA5LCAweDQwLCAweDE3LCAweDgwLCAweDk3LCAweDgwLCAweDRDLAorMHgwMiwgMHgzMCwgMHgwRSwgMHg4MCwgMHgxNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMCwgMHgzNCwgMHgwRiwgMHhDOCwKKzB4MDcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjAsIDB4MkYsIDB4MDAsIDB4QkYsCisweDQwLCAweEZDLCAweDAyLCAweEIwLCAweDA3LCAweEMwLCAweDNELCAweDA4LCAweEVGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLAorMHg0QiwgMHhDOCwgMHgzRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHgwMCwKKzB4MkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RDAsIDB4MDksIDB4QzAsIDB4MUYsIDB4MDAsIDB4N0IsIDB4MDAsIDB4RjgsIDB4MDIsCisweEYwLCAweDBGLCAweEMyLCAweDFGLCAweDIwLCAweDdGLCAweDAwLCAweERDLCAweDAwLCAweEYwLCAweDBGLCAweEMwLCAweDE3LAorMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHg2RiwgMHgwMCwgMHgyRiwgMHgwNCwKKzB4Q0MsIDB4MDYsIDB4NzAsIDB4NDMsIDB4QzEsIDB4MEYsIDB4MDEsIDB4RTMsIDB4MDEsIDB4Q0MsIDB4MTAsIDB4NzQsIDB4MDMsCisweEMwLCAweDBGLCAweDAwLCAweDMzLCAweDEwLCAweENDLCAweDgwLCAweDMwLCAweDAzLCAweEQwLCAweDBDLCAweDAwLCAweDMzLAorMHgwNCwgMHhDQywgMHgwMCwgMHgzNCwgMHg0MywgMHhDOCwgMHg3RSwgMHgwMiwgMHhCMywgMHgwMCwgMHhGQywgMHg1MywgMHhGMCwKKzB4MTIsIDB4QzAsIDB4NkQsIDB4MDIsIDB4QUYsIDB4MDEsIDB4RkMsIDB4MDYsIDB4RjAsIDB4NEIsIDB4QzAsIDB4MEYsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDY3LCAweDAwLCAweDFELCAweEFCLCAweDQ0LAorMHgwNywgMHgxMCwgMHgzNSwgMHg0OCwgMHhENywgMHgwMiwgMHhEMSwgMHhBMSwgMHg0NCwgMHgwRCwgMHgxMCwgMHgzNSwgMHg0MCwKKzB4NTcsIDB4MDIsIDB4NTEsIDB4NDMsIDB4NEMsIDB4MEQsIDB4MTAsIDB4QjUsIDB4NDAsIDB4RDQsIDB4MDIsIDB4NTEsIDB4MDMsCisweDQ0LCAweDBELCAweDEwLCAweDk1LCAweDQwLCAweDMzLCAweDExLCAweEQxLCAweDAzLCAweDc0LCAweDhGLCAweEQwLCAweDE5LAorMHg0MCwgMHgyNywgMHgwMSwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwNCwgMHhEMiwgMHgxMSwgMHg0MCwgMHgwNywgMHg2MCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTgsIDB4MjMsIDB4MDAsIDB4MEQsIDB4MDAsIDB4NDQsIDB4MDMsCisweDUwLCAweDA4LCAweDQwLCAweDIxLCAweDQwLCAweEMxLCAweDAwLCAweDE0LCAweDBBLCAweDE4LCAweDg4LCAweDQwLCAweDIzLAorMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwQSwgMHg1MCwgMHgwOCwgMHg0OCwgMHgyMCwgMHgwMCwgMHg4OSwgMHgwOCwgMHgwNiwKKzB4MEEsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MzMsIDB4MDEsIDB4ODEsIDB4MDIsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsCisweDAxLCAweDEwLCAweDg1LCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDg4LCAweDQwLCAweDQ3LCAweDgwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHgyNSwgMHgwMiwgMHgxRCwgMHhDMCwgMHg2NCwgMHhDNywgMHgxMCwKKzB4MDUsIDB4NDQsIDB4MzcsIDB4MDIsIDB4RDEsIDB4MDAsIDB4NTYsIDB4MDgsIDB4MTAsIDB4MDUsIDB4NDAsIDB4QjcsIDB4MDksCisweDkxLCAweDAzLCAweDY0LCAweDAzLCAweDUwLCAweDA5LCAweDQwLCAweDM0LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDBFLAorMHgxMCwgMHgwOSwgMHg0MiwgMHgzNywgMHgwMSwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgxOSwgMHg0MCwgMHg1NywKKzB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4MDUsIDB4RDAsIDB4MTksIDB4NDEsIDB4MEYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDI3LCAweDAwLCAweERGLCAweDVBLCAweDBDLCAweDBGLCAweDcwLCAweDkxLAorMHhDMCwgMHhDNywgMHgwNCwgMHhEMywgMHgwMSwgMHg1QywgMHgyNCwgMHgzMCwgMHgxMSwgMHhDMiwgMHhDNywgMHgwMCwgMHgxMywKKzB4MDIsIDB4NEMsIDB4MDAsIDB4NzAsIDB4MjEsIDB4QzEsIDB4QzQsIDB4ODYsIDB4MTMsIDB4MUIsIDB4NEMsIDB4MDgsIDB4MzAsCisweDAxLCAweEMwLCAweDM2LCAweDAwLCAweDkzLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDU5LCAweEMwLCAweEU1LCAweDAwLAorMHg5RiwgMHgwNywgMHg3QywgMHgxNiwgMHhGMCwgMHgzOSwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MkQsIDB4MjAsIDB4QkYsIDB4MDAsIDB4REMsIDB4MDMsIDB4RjAsIDB4MTcsIDB4QzAsCisweDRGLCAweDAwLCAweEZELCAweDAyLCAweEVDLCAweDAxLCAweEIwLCAweDNGLCAweEMwLCAweDFBLCAweDQwLCAweDZGLCAweDAwLAorMHg5QywgMHgwRCwgMHhCMCwgMHgwNywgMHhDMCwgMHg1QiwgMHgyMCwgMHg3RiwgMHgwMCwgMHhGRCwgMHgwMSwgMHhGMCwgMHgwNywKKzB4QzIsIDB4N0YsIDB4NDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDAsIDB4N0YsCisweDAwLCAweEZDLCAweDAxLCAweEYyLCAweDAzLCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwOCwgMHgyNSwgMHgwMCwgMHhEMywgMHgxMywgMHg0QywgMHgyMywgMHhGMCwgMHgwOSwgMHhEMCwgMHhBMCwKKzB4MDAsIDB4REYsIDB4MTEsIDB4MUMsIDB4MEEsIDB4NzAsIDB4MDksIDB4RTAsIDB4MjcsIDB4MDAsIDB4MUYsIDB4MDIsIDB4NEMsCisweDJBLCAweDMwLCAweDJDLCAweEMwLCAweEE3LCAweDAyLCAweDgzLCAweDAyLCAweDBELCAweDAyLCAweEYwLCAweDJELCAweDQxLAorMHg3NCwgMHgwMSwgMHhEMywgMHgwMCwgMHg0QywgMHgwMywgMHhGMCwgMHgyOSwgMHhDMCwgMHg5NCwgMHgwMCwgMHg5RiwgMHgwRSwKKzB4NEMsIDB4MEEsIDB4RjAsIDB4MjksIDB4QzAsIDB4MEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEzLCAweEEwLCAweDY0LCAweDAxLCAweDgxLCAweDIyLCAweDQ0LCAweDAzLCAweEQwLCAweEI1LCAweDQwLCAweEU0LCAweDAyLAorMHhDRCwgMHgwMiwgMHg0NCwgMHgyOCwgMHhEMCwgMHhBRCwgMHg0MSwgMHhCNywgMHgwNiwgMHgxRCwgMHgxQSwgMHg0NCwgMHgwNywKKzB4MTIsIDB4QUQsIDB4NDIsIDB4QjcsIDB4MDAsIDB4OTEsIDB4MEIsIDB4NkMsIDB4MkEsIDB4RDAsIDB4MEQsIDB4NDEsIDB4QjUsCisweDA4LCAweEQxLCAweDAxLCAweEM0LCAweDgzLCAweEQwLCAweDBELCAweEMwLCAweDE0LCAweDAwLCAweEQxLCAweDAxLCAweDQ0LAorMHg5OSwgMHhEMCwgMHgxOSwgMHg0MCwgMHg0RiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKzB4MjAsIDB4RTIsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MTMsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MjgsIDB4Q0QsCisweDAwLCAweDIwLCAweDI0LCAweDgwLCAweDEwLCAweDQwLCAweDQzLCAweDAwLCAweDBELCAweDAxLCAweDA2LCAweDkwLCAweDEwLAorMHg5MCwgMHg0MCwgMHg0MywgMHgwNCwgMHgwMSwgMHgwMCwgMHgyNCwgMHgyNCwgMHhEMCwgMHgxMCwgMHg0MCwgMHgzNCwgMHgwMCwKKzB4ODEsIDB4ODAsIDB4MjQsIDB4ODMsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4NDIsCisweEQxLCAweDAwLCAweDQzLCAweDBGLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLAorMHg2QSwgMHgwMCwgMHhFMSwgMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwgMHg5OCwgMHg0MywgMHg1OCwgMHgwMCwgMHhFRCwgMHgwMSwKKzB4QjQsIDB4MDcsIDB4RDAsIDB4MTIsIDB4NDAsIDB4NkIsIDB4MDAsIDB4NEMsIDB4MDEsIDB4MDQsIDB4MDQsIDB4MTAsIDB4MUUsCisweDQwLCAweDYzLCAweDAwLCAweEMxLCAweDExLCAweDg0LCAweDA1LCAweEQwLCAweDE0LCAweDUwLCAweDc4LCAweDAwLCAweEUxLAorMHgwMSwgMHhBNCwgMHgwNywgMHhEMCwgMHgwQiwgMHg0MCwgMHg3QSwgMHgxMiwgMHhCMSwgMHgwMSwgMHg4NSwgMHgwNiwgMHhEMCwKKzB4MTIsIDB4NDgsIDB4MTMsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MjIsCisweDAwLCAweDAzLCAweDA4LCAweDFDLCAweDAzLCAweEYwLCAweEE4LCAweEM4LCAweDAwLCAweDg0LCAweENGLCAweDAwLCAweDNDLAorMHg4MywgMHg3MCwgMHgwQywgMHg0MCwgMHgxMywgMHgwMCwgMHhDRSwgMHgwMCwgMHgwQywgMHgwMCwgMHgzMCwgMHgwMCwgMHhDQSwKKzB4MTMsIDB4MTAsIDB4NDMsIDB4MDAsIDB4MjQsIDB4MDEsIDB4RjAsIDB4RTAsIDB4QzAsIDB4MzAsIDB4NDAsIDB4ODMsIDB4MTgsCisweDJDLCAweDAzLCAweEYwLCAweDg4LCAweEMwLCAweDI0LCAweDQwLCAweDQ3LCAweDA4LCAweDBDLCAweDAzLCAweEYwLCAweDAwLAorMHhDMSwgMHg0QiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBOCwgMHgzOSwgMHg0MCwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjEsIDB4OEIsIDB4QzAsIDB4MUYsIDB4MjAsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4MDMsCisweEY4LCAweDA3LCAweEMwLCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDhCLCAweEMwLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwOCwgMHhGQywgMHgwMSwgMHhGMCwgMHg4MywgMHhFMCwgMHgzRiwgMHgwMCwgMHhBRiwgMHgwMCwgMHhERCwKKzB4NDMsIDB4RjAsIDB4NEYsIDB4QzAsIDB4MUQsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MDEsIDB4RjAsIDB4ODMsIDB4QzAsCisweDBCLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDY3LCAweDAwLCAweDUzLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHgzNiwgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OTMsIDB4ODAsIDB4N0MsIDB4MDcsIDB4MzIsIDB4MDEsIDB4QzIsIDB4NDQsIDB4MDAsCisweDEzLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweDkzLCAweDAwLCAweDVDLCAweDAzLAorMHhGMCwgMHgwOSwgMHhDMCwgMHg1NywgMHgwMCwgMHg1MywgMHg4MCwgMHg3QywgMHgwMSwgMHgzMCwgMHgxOSwgMHhDMCwgMHg0MCwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OTgsIDB4MzksIDB4MDAsIDB4RTEsIDB4MDAsCisweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDM4LCAweDA4LCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBBLAorMHg0MCwgMHgyMywgMHg0MCwgMHhFMSwgMHgwMCwgMHgzNiwgMHgwMywgMHgwNCwgMHgwQywgMHg0MCwgMHgyOCwgMHg0MCwgMHhFMSwKKzB4MjAsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RTUsIDB4MDAsIDB4QjQsIDB4MTMsIDB4RDAsCisweDBBLCAweDQwLCAweDNCLCAweDAwLCAweDYxLCAweDAwLCAweEY0LCAweDAxLCAweEIxLCAweDAyLCAweDQwLCAweDQ4LCAweDYwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg2OSwgMHgwMCwgMHg2MSwgMHgwMSwgMHhCNCwKKzB4MDcsIDB4RDAsIDB4MUMsIDB4NDQsIDB4NzgsIDB4MDAsIDB4RTUsIDB4MTEsIDB4QjYsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDAsCisweDVCLCAweDAwLCAweEUxLCAweDAxLCAweEI0LCAweDA3LCAweDEwLCAweDE2LCAweDQwLCAweDUwLCAweDAwLCAweDQxLCAweDAxLAorMHg4NCwgMHgwNywgMHgxNCwgMHgzRSwgMHg0MCwgMHg3RiwgMHgwMCwgMHhFMSwgMHgwMSwgMHg5NCwgMHgwNywgMHhEMCwgMHgxQSwKKzB4NDAsIDB4REYsIDB4MDAsIDB4NjEsIDB4MDEsIDB4RjQsIDB4MDcsIDB4MTAsIDB4MTgsIDB4NTAsIDB4MTAsIDB4MDAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDIwLCAweDMzLCAweDAwLCAweEMxLCAweDEzLCAweDM0LCAweDAxLAorMHhEMCwgMHg5QywgMHg0MCwgMHhCMCwgMHgwNCwgMHg4RCwgMHgwMSwgMHgzNiwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywKKzB4MDAsIDB4QzEsIDB4MDIsIDB4MzQsIDB4MDcsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsCisweDAzLCAweDEwLCAweDJDLCAweDQwLCAweDYzLCAweDAyLCAweEM1LCAweDA4LCAweDM0LCAweDAzLCAweEQwLCAweEFDLCAweDQxLAorMHhEMywgMHgwMCwgMHg0MSwgMHg2MiwgMHgzNCwgMHg4NSwgMHg5MCwgMHgxQywgMHg0MCwgMHg1OCwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4NTcsIDB4MDQsIDB4NzMsIDB4MDcsIDB4QkMsIDB4MDksIDB4RjAsCisweDA3LCAweEQwLCAweDlFLCAweDA0LCAweDU3LCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDg3LCAweEUwLCAweDFGLCAweDAwLAorMHg3MywgMHgwMiwgMHhGQywgMHgxRCwgMHgzMCwgMHgxNywgMHhEMSwgMHgxQywgMHgwMCwgMHg3MywgMHgwMCwgMHhDRCwgMHgwMSwKKzB4MzAsIDB4MjcsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NTMsIDB4MDEsIDB4NUMsIDB4MDEsIDB4RjAsIDB4MTcsIDB4QzAsIDB4MUYsCisweDAwLCAweDYzLCAweDA3LCAweEJDLCAweDA1LCAweDMwLCAweDc3LCAweEMwLCAweDVDLCAweDIwLCAweDBFLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgwNSwgMHg0MCwgMHgwRiwgMHgwMCwgMHg3QywgMHg0MCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsCisweDAwLCAweDdDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDA0LCAweEYwLAorMHgwMSwgMHhDMSwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHg0NCwKKzB4MUYsIDB4MDYsIDB4N0MsIDB4MjQsIDB4RjAsIDB4NDEsIDB4QzAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDA4LCAweEUwLAorMHgyMCwgMHgwMCwgMHg5MywgMHgwMCwgMHgzQywgMHgwMiwgMHgzMCwgMHgwOCwgMHhDMCwgMHgyMCwgMHgwMCwgMHg4MywgMHgxMCwKKzB4NEMsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MjQsIDB4MDAsIDB4OEYsIDB4MDAsIDB4MEMsIDB4MDIsIDB4NzAsIDB4MDgsCisweEMwLCAweDY0LCAweDAwLCAweDkzLCAweDAwLCAweDNDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLAorMHgwOCwgMHg0QywgMHgyMiwgMHgzMCwgMHg1OSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4ODAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4MTAsIDB4MjQsCisweDQwLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweDE0LCAweDA5LCAweEQwLCAweDI0LCAweDUwLCAweDkxLCAweDQwLCAweDRELAorMHgwMiwgMHhEMCwgMHgwOSwgMHg1MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NSwgMHgwMiwgMHgxNCwgMHgwOSwgMHg1MCwKKzB4NjQsIDB4NDIsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4NTAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDEsCisweDU0LCAweDA2LCAweDU0LCAweDI5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxQywgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwKKzB4OTEsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4MDAsIDB4MjYsIDB4MDAsIDB4OTksIDB4MDAsIDB4NDQsIDB4MDMsCisweEQwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLCAweDkwLCAweDA5LCAweDQwLCAweDIwLAorMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgxMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwKKzB4NDIsIDB4MTEsIDB4MjksIDB4NDAsIDB4NzMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweDI4LCAweDIwLCAweDAwLCAweDhELCAweDA0LCAweDA1LCAweDAyLCAweDEwLCAweDQ4LCAweDQwLCAweDIwLCAweDAxLCAweDgxLAorMHgwMCwgMHgzNCwgMHgxMiwgMHgxMCwgMHg0OCwgMHg0NCwgMHgyMCwgMHgwMSwgMHg4OSwgMHgwNCwgMHgwNCwgMHgxMiwgMHhEMCwKKzB4NDgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4OEQsIDB4MDQsIDB4MDQsIDB4MTIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4NjAsIDB4MDAsCisweDgxLCAweDA0LCAweDM0LCAweDEyLCAweDUwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDU0LCAweDAyLAorMHg1MCwgMHg0OCwgMHg0MCwgMHg1MywgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwKKzB4MDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MzQsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTMsIDB4MDAsCisweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDA2LCAweDAwLCAweDFCLCAweDIwLCAweDRDLCAweDAwLCAweEYwLCAweDAxLAorMHhDMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0QywgMHgwMCwgMHg3MCwgMHgwMSwgMHhDMCwgMHg4NCwgMHgwMiwgMHgxMywKKzB4MDAsIDB4N0MsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MDIsIDB4NUYsIDB4ODAsIDB4NEMsIDB4MDAsIDB4MzIsCisweDAxLCAweEMwLCAweDc3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEE4LCAweDJCLAorMHgwMCwgMHhCRiwgMHgyOCwgMHhGRCwgMHgwMiwgMHhGMSwgMHg4QiwgMHhDMCwgMHgyRiwgMHgwQSwgMHhCRiwgMHgyMCwgMHhGQywKKzB4MjIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MkYsIDB4MDIsIDB4QjcsIDB4MDgsIDB4REMsIDB4MjIsIDB4RjIsIDB4OEIsIDB4QzAsCisweDJGLCAweDIyLCAweEJGLCAweDA4LCAweEZDLCAweDIyLCAweEYyLCAweDhCLCAweEMwLCAweDJCLCAweDAwLCAweEJGLCAweDA4LAorMHg3QywgMHgyMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyQiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMSwgMHg4QiwKKzB4QzAsIDB4NjcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjcsIDB4MDAsCisweDlGLCAweDg0LCAweDdDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDkzLCAweDAwLCAweDdDLCAweDUyLAorMHgzMCwgMHg0OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHg0OSwgMHhDMCwgMHgyNCwKKzB4MDUsIDB4OUYsIDB4MDQsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MkMsIDB4MDIsIDB4QjMsIDB4MDQsIDB4Q0MsCisweDE2LCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweEJGLCAweDAwLCAweEJDLCAweDAyLCAweEYyLCAweDBCLCAweEMwLAorMHg2MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgxOCwgMHgwNywgMHgwMCwgMHgxRCwKKzB4MjgsIDB4NzQsIDB4ODAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDIsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsCisweDgxLCAweDQwLCAweDg3LCAweDAwLCAweDFELCAweDAwLCAweDc0LCAweEEwLCAweDEyLCAweDAxLCAweDQwLCAweDA0LCAweDAwLAorMHgxRCwgMHg4OCwgMHg3NCwgMHgwOCwgMHhEMCwgMHgwMywgMHg0MCwgMHgwNCwgMHg0MCwgMHgxMSwgMHgyMCwgMHg0NSwgMHgwMCwKKzB4RDAsIDB4MDEsIDB4NDAsIDB4MTYsIDB4MTQsIDB4MUQsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4NzMsCisweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDI5LCAweDAwLCAweEFELCAweDAwLAorMHhCNCwgMHgwMiwgMHhEMCwgMHg5QSwgMHg0MCwgMHg2QiwgMHgwMCwgMHhBMSwgMHgwMCwgMHhCNCwgMHgwNiwgMHgxMCwgMHgxQSwKKzB4NDAsIDB4NkIsIDB4MDIsIDB4QUQsIDB4MDksIDB4QjQsIDB4MDYsIDB4MTAsIDB4OUEsIDB4NDgsIDB4NjgsIDB4MjAsIDB4QUQsCisweDAxLCAweEIwLCAweDI2LCAweEQwLCAweDlBLCAweDQwLCAweDIwLCAweDAwLCAweDgxLCAweDA4LCAweDA0LCAweDBBLCAweEQwLAorMHgwOCwgMHg0MCwgMHgyMywgMHgwMSwgMHg4RCwgMHg4MCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgxOCwgMHg0MCwgMHg0QiwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjAsIDB4NjUsIDB4MDAsIDB4QkQsIDB4MDAsIDB4RjQsCisweDhBLCAweEQwLCAweDBCLCAweDQwLCAweDJGLCAweDAwLCAweEIxLCAweDAwLCAweEY0LCAweDAyLCAweDEwLCAweDBCLCAweDQwLAorMHg2RiwgMHgwMCwgMHhCRCwgMHgwMCwgMHhGNCwgMHgwMiwgMHgxMCwgMHgwQiwgMHg0MCwgMHg2QywgMHgwMCwgMHhCRCwgMHgwMCwKKzB4RjQsIDB4MTIsIDB4RDAsIDB4MEIsIDB4NTAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDQsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksCisweDQwLCAweDI2LCAweDAyLCAweDlELCAweDAyLCAweDc0LCAweDBBLCAweEQwLCAweDE5LCAweDQwLCAweDYzLCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgyNiwKKzB4RjAsIDB4MjksIDB4QzgsIDB4QTcsIDB4NDAsIDB4OTEsIDB4MDAsIDB4N0MsIDB4MkEsIDB4MzQsIDB4MzksIDB4QzAsIDB4QTcsCisweDAwLCAweDlGLCAweDBCLCAweDdDLCAweDBBLCAweDM0LCAweEE5LCAweEQwLCAweEE0LCAweDAwLCAweDlGLCAweDAzLCAweDdDLAorMHgwQSwgMHhGMCwgMHgwOSwgMHhDMCwgMHg2NCwgMHgwMCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMiwgMHhGMCwgMHgzOSwgMHhDMSwKKzB4QTcsIDB4MDAsIDB4OUYsIDB4ODIsIDB4N0MsIDB4MEUsIDB4RjAsIDB4MjksIDB4QzAsIDB4MTcsIDB4MjAsIDB4MEUsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDI1LCAweDA4LCAweDlGLCAweDAwLCAweDc4LCAweDA2LCAweEYwLAorMHgwOSwgMHg4MCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwOSwgMHg3QywgMHgwMiwgMHhGMCwgMHg0OSwgMHhDMCwgMHgyNywgMHgwMCwKKzB4OUYsIDB4MDEsIDB4M0MsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDksIDB4N0MsIDB4MDYsCisweEYwLCAweDk4LCAweEMwLCAweDI3LCAweDAxLCAweDhGLCAweDAxLCAweDdDLCAweDAyLCAweEYwLCAweDg5LCAweEMwLCAweDI3LAorMHgwMCwgMHg5RiwgMHgyOCwgMHg3QywgMHg2NiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MEQsIDB4MDAsIDB4M0YsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4RjAsIDB4MDMsCisweEMwLCAweDBCLCAweDAwLCAweDNGLCAweDAwLCAweEJDLCAweDAwLCAweDcwLCAweDAzLCAweEMwLCAweDBDLCAweDAwLCAweDNGLAorMHgwMCwgMHhGRSwgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhCMCwKKzB4MDMsIDB4QzAsIDB4NDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDFGLCAweDEyLCAweDdDLCAweDA4LCAweDMwLCAweDAxLCAweEMwLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHgxNCwgMHgwMCwgMHg1RCwgMHgyMCwgMHg0MCwgMHgwMSwgMHg3MCwgMHgwNSwgMHg0MCwKKzB4MTcsIDB4MDAsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTQsIDB4MDAsIDB4NUQsIDB4MjAsCisweDc0LCAweDAxLCAweEQyLCAweDA1LCAweDQ4LCAweDE3LCAweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweDMwLCAweDA1LAorMHhDMCwgMHgxRSwgMHgwMCwgMHg1RCwgMHgwMCwgMHg3NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxNywgMHgxMCwgMHg3RCwKKzB4MDMsIDB4RjQsIDB4NEQsIDB4NTAsIDB4MTcsIDB4NTAsIDB4NTEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE0LCAweEEwLCAweDAyLCAweDAwLCAweDBELCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDQwLCAweDAzLAorMHgwMCwgMHgwRCwgMHgwMCwgMHgzNCwgMHgwMCwgMHg1MCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwRCwgMHgwMCwgMHgzNiwKKzB4MDAsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MDksIDB4MDAsIDB4MzAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NDAsCisweDM0LCAweDA4LCAweDhELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweDRELCAweDAwLAorMHgzNCwgMHgwOSwgMHgxMCwgMHg4QywgMHg0MSwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4ODgsIDB4MzgsIDB4MDAsIDB4Q0QsIDB4MDEsIDB4ODQsIDB4MDMsIDB4NTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsCisweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDFFLCAweDQwLCAweDNBLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLAorMHhEMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHgzNCwgMHgwNywgMHgxMCwgMHgwRSwgMHg0MCwgMHgyQSwKKzB4MDAsIDB4QUQsIDB4MDAsIDB4QjQsIDB4NDIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4NkQsIDB4NDIsIDB4QjQsCisweDA1LCAweDUwLCAweDFFLCAweDQwLCAweDA1LCAweDIwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLAorMHgxMCwgMHg0OCwgMHgwMCwgMHgyRiwgMHgwMSwgMHg4RCwgMHg4NCwgMHg3MCwgMHgxMiwgMHhDMCwgMHg0QiwgMHgwMCwgMHgyRiwKKzB4MDEsIDB4QkMsIDB4MDQsIDB4NzIsIDB4MTAsIDB4RDAsIDB4NEEsIDB4MDgsIDB4MkQsIDB4MjEsIDB4QjQsIDB4MDQsIDB4RjAsCisweDEyLCAweEMwLCAweDRCLCAweDAwLCAweDJGLCAweDAxLCAweEJDLCAweDA0LCAweDMwLCAweDEyLCAweEMwLCAweDU4LCAweDAwLAorMHhBRiwgMHgwMSwgMHhCQywgMHgwNiwgMHhGMCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMywgMHhFRiwgMHgwMSwgMHhCQywgMHgwNSwKKzB4MzAsIDB4MUUsIDB4QzAsIDB4NDQsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsCisweDM1LCAweDAwLCAweERGLCAweDAwLCAweDdFLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLAorMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLAorMHgwQywgMHhDMCwgMHg0MywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0RCwKKzB4MDAsIDB4M0YsIDB4MDEsIDB4Q0MsIDB4MjAsIDB4RjAsIDB4MTMsIDB4QzAsIDB4NEMsIDB4MDAsIDB4M0YsIDB4MDEsIDB4Q0MsCisweDA0LCAweEYwLCAweDEzLCAweEMwLCAweDRFLCAweDAwLCAweDMzLCAweDAxLCAweENDLCAweDg0LCAweEYwLCAweDEzLCAweEMyLAorMHg0RiwgMHgwMiwgMHgzRiwgMHgwOSwgMHhGQywgMHgwNCwgMHhGMCwgMHgxMywgMHhDMCwgMHg3QywgMHgwMCwgMHhCRiwgMHgwMSwKKzB4RkMsIDB4MDcsIDB4RjAsIDB4MUUsIDB4QzAsIDB4N0MsIDB4MDQsIDB4NzMsIDB4MDEsIDB4OEMsIDB4MDcsIDB4MzAsIDB4MTcsCisweEMwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDE4LCAweDM5LCAweDA4LAorMHhFRCwgMHgwMCwgMHg4NCwgMHgwMywgMHhGMCwgMHg4RSwgMHg0MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgzMCwgMHg5NCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NTAsIDB4MzgsIDB4NDIsIDB4RTEsIDB4MDgsIDB4ODUsIDB4MjMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsCisweDAwLCAweEVELCAweDA4LCAweEI0LCAweDAzLCAweEYwLCAweDBFLCAweDQwLCAweDA4LCAweDAwLCAweEFELCAweDAwLCAweEI0LAorMHgwMywgMHhGMCwgMHgwRSwgMHhDMCwgMHgzQiwgMHgwMCwgMHgyMSwgMHgwMCwgMHhBQywgMHgxMiwgMHhCMCwgMHg1RSwgMHg0MCwKKzB4NTcsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MkQsCisweDE4LCAweDg0LCAweDIwLCAweEQ4LCAweDAwLCAweDQwLCAweDA4LCAweDAwLCAweDNELCAweDAwLCAweDg0LCAweDAwLCAweEQwLAorMHgwMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg5NCwgMHgwMCwgMHhEMCwgMHgyMiwgMHg0MCwgMHg4QiwgMHgyMCwKKzB4MkQsIDB4MDgsIDB4QjQsIDB4MDAsIDB4RDAsIDB4MTAsIDB4NDAsIDB4MTgsIDB4MDQsIDB4QUQsIDB4MDAsIDB4QjQsIDB4MDIsCisweEQwLCAweDBGLCAweDQwLCAweDM4LCAweDAwLCAweDYxLCAweDEwLCAweDg0LCAweDQzLCAweDE4LCAweDRFLCAweDQwLCAweDAzLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyMCwgMHgzMSwgMHgwMCwgMHhDRCwgMHgwNiwKKzB4MDYsIDB4MEIsIDB4NTAsIDB4MkMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MEIsIDB4RDAsIDB4MEMsCisweDQ0LCAweDMwLCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELAorMHgwMiwgMHgzNCwgMHgwMywgMHg1MCwgMHgwQywgMHg1MCwgMHg1MCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMiwgMHg1MCwKKzB4N0MsIDB4NDAsIDB4RjMsIDB4MDAsIDB4ODEsIDB4MDMsIDB4MjQsIDB4MTYsIDB4OTAsIDB4MkQsIDB4NDAsIDB4MTMsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDA1LCAweDAwLCAweDFGLCAweDAxLCAweDRDLAorMHgyOCwgMHhEMCwgMHgxMSwgMHhEMCwgMHg0NCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0QywgMHgwNCwgMHhGMCwgMHgzMSwgMHhDMCwKKzB4NDQsIDB4MDAsIDB4MTMsIDB4MDEsIDB4NUMsIDB4MDQsIDB4RjAsIDB4MTEsIDB4QzAsIDB4NDcsIDB4MDAsIDB4MUYsIDB4MDEsCisweDdDLCAweDA0LCAweEQwLCAweDAwLCAweEMwLCAweDc0LCAweDAwLCAweERGLCAweDAxLCAweDNDLCAweDAyLCAweEQwLCAweDBELAorMHhDMSwgMHhCOCwgMHgwMSwgMHg0MywgMHgwMywgMHg0QywgMHgwNSwgMHgzMCwgMHhCRCwgMHhDMCwgMHg1NywgMHgyMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NzcsIDB4MDAsIDB4REYsIDB4MjAsIDB4N0QsIDB4ODcsCisweEYwLCAweDFELCAweEMxLCAweDc3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDA3LCAweEYwLCAweDFELCAweEMwLCAweDc3LAorMHgxMCwgMHhERiwgMHgwMSwgMHg3QywgMHgwNywgMHhGMCwgMHgxRCwgMHhDMCwgMHg3MywgMHgwMCwgMHhERiwgMHg4MSwgMHg3QywKKzB4MDcsIDB4RjAsIDB4MUQsIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsIDB4MDgsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsCisweDM1LCAweDQ0LCAweDVGLCAweDEwLCAweDdDLCAweDBCLCAweEYyLCAweDNELCAweEM0LCAweDA3LCAweDAwLCAweDBDLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwOCwgMHgwRiwgMHgwMCwgMHgxMywgMHgwMCwgMHhGQywgMHg4MCwgMHgzMCwKKzB4MDMsIDB4QzAsIDB4MEIsIDB4MDAsIDB4MzMsIDB4MDAsIDB4QkMsIDB4NDAsIDB4MzAsIDB4MDIsIDB4QzEsIDB4MEMsIDB4MDgsCisweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDMyLCAweDEwLCAweEZDLCAweDgwLAorMHhGMCwgMHgwMywgMHhDMCwgMHgwQywgMHgwMCwgMHhFRiwgMHgwOSwgMHhDQywgMHgwMiwgMHgzMCwgMHgwRiwgMHhDMCwgMHgzRiwKKzB4MDAsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4MzAsIDB4NUYsIDB4QzAsIDB4MTAsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDg1LCAweDIwLCAweDMyLCAweDAwLCAweEQxLCAweDAwLCAweDM0LCAweDAzLCAweDkyLCAweDBELAorMHg0MiwgMHgzNywgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwKKzB4MDAsIDB4NzYsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDIsIDB4MzcsIDB4NDAsIDB4RDEsIDB4MDAsIDB4NjQsIDB4MDMsIDB4RDIsCisweDBELCAweEMwLCAweDI0LCAweDA4LCAweDlELCAweDAxLCAweDQ0LCAweDAyLCAweDE0LCAweDBELCAweDQwLCAweDM3LCAweDAwLAorMHg5NSwgMHg5MywgMHgxNCwgMHgwQywgMHgxMCwgMHg0RCwgMHg0MCwgMHgxNSwgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4NDAsIDB4NzQsIDB4MDAsIDB4OTAsIDB4MDEsIDB4NDAsCisweDA3LCAweDAwLCAweDExLCAweDAwLCAweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDFELCAweDAwLAorMHg3NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxNSwgMHgwMCwgMHg1NCwgMHgwMCwgMHhEMCwgMHgwMSwKKzB4NDAsIDB4NzYsIDB4ODAsIDB4RDksIDB4MDAsIDB4NDQsIDB4MDMsIDB4MTgsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsCisweDIxLCAweDU0LCAweDBELCAweDEyLCAweDBELCAweDQ4LCAweDA0LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyOCwgMHgzNCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMywgMHg5NCwgMHgwQywgMHg0MCwgMHgzMywKKzB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTQsIDB4MEMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweEM1LCAweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDBDLCAweDQ4LAorMHgwMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgwNSwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzNywgMHgyMCwgMHgxNSwgMHgwMCwKKzB4NTQsIDB4MDIsIDB4MTEsIDB4MEQsIDB4NDAsIDB4NDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEIwLCAweDA2LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEM4LCAweDA3LCAweDQwLAorMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHgzMiwgMHgwMSwgMHhEMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3NCwgMHgwMCwKKzB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTcsIDB4MDAsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4RDAsIDB4MDQsCisweDEwLCAweERGLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDBELCAweEMwLCAweDNCLCAweDAwLCAweDkzLCAweDAwLCAweDRDLAorMHgwMiwgMHgzMiwgMHg0NSwgMHhDMCwgMHgwMCwgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKzB4QTAsIDB4M0YsIDB4NDAsIDB4RkYsIDB4ODAsIDB4RkMsIDB4MDMsIDB4NTEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RUYsCisweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEM0LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGQiwgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwRCwgMHgxMCwKKzB4QkQsIDB4MjAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4NDAsIDB4QUYsIDB4ODAsIDB4RkQsIDB4MDIsCisweEYwLCAweDI5LCAweEMwLCAweDE3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLAorMHgyRiwgMHgwMSwgMHg3MywgMHgwMSwgMHhGQywgMHgxMSwgMHgzNCwgMHgzMywgMHhDMCwgMHgxRSwgMHgwMSwgMHhCMywgMHgxNCwKKzB4Q0MsIDB4MDcsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0MsIDB4MDEsIDB4QkYsIDB4ODAsIDB4Q0MsIDB4MjcsIDB4RjAsIDB4ODMsCisweEMwLCAweDc4LCAweDAwLCAweDIzLCAweDAxLCAweENDLCAweEIzLCAweEYwLCAweDRCLCAweEMwLCAweDFBLCAweDIxLCAweDczLAorMHgwMSwgMHhFQywgMHgxMCwgMHhGMiwgMHgxMywgMHhDMCwgMHgzQywgMHgwNSwgMHg3RiwgMHgwMSwgMHhGQywgMHgwNSwgMHhGMCwKKzB4MUYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDgsIDB4RjcsCisweDAwLCAweEQxLCAweDgxLCAweDc0LCAweDI1LCAweDEyLCAweDBELCAweDQwLCAweEQ0LCAweDAyLCAweDkxLCAweDAzLCAweDQ0LAorMHg4NywgMHhEMCwgMHgzOSwgMHg4MCwgMHhGRSwgMHgwMiwgMHg5RCwgMHgwMywgMHg0NCwgMHgxMywgMHhEMCwgMHg2MSwgMHg0MCwKKzB4MzQsIDB4NDQsIDB4MTMsIDB4ODEsIDB4RDQsIDB4MjMsIDB4RDAsIDB4QjksIDB4NDAsIDB4RDQsIDB4MDIsIDB4OTEsIDB4MDEsCisweDQ0LCAweDMxLCAweEQxLCAweDExLCAweDQwLCAweEZDLCAweDAwLCAweDlELCAweDgxLCAweDM0LCAweDg3LCAweEQwLCAweDFELAorMHg0NCwgMHgwRiwgMHg2MCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHhBMywgMHgwMCwKKzB4QzEsIDB4MDAsIDB4NzQsIDB4MDEsIDB4NTAsIDB4NEMsIDB4NDAsIDB4MTYsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MDQsIDB4MDMsCisweEQwLCAweDIwLCAweDQwLCAweDMwLCAweDAwLCAweDhELCAweDAyLCAweDA0LCAweDEzLCAweEQwLCAweDI4LCAweDQwLCAweDMwLAorMHgwMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgxMywgMHhEMCwgMHgwOCwgMHg2MCwgMHgxMywgMHgwMCwgMHg4MSwgMHg4MCwgMHgyNCwKKzB4NDIsIDB4RDIsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDIsIDB4NTAsIDB4MEMsIDB4NDAsCisweDRGLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDc1LCAweDAwLCAweEQxLAorMHgwMCwgMHg3NCwgMHgwMSwgMHgxMCwgMHgxRCwgMHg0MCwgMHgzNCwgMHgwNCwgMHg5NSwgMHgwMCwgMHg0NCwgMHgxMywgMHhEMCwKKzB4MzksIDB4NjAsIDB4MzYsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MDEsIDB4NDAsIDB4NzQsIDB4MDAsCisweDU5LCAweDAwLCAweDU0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDE1LCAweDAwLCAweDkxLCAweDEwLCAweDQ0LCAweDYzLAorMHhEMCwgMHgyMSwgMHg0MCwgMHgzNiwgMHgwMCwgMHg5RCwgMHgwNiwgMHg3NCwgMHg5QiwgMHhEOCwgMHgwRCwgMHg0MCwgMHgwRiwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjIsIDB4QTgsIDB4MjMsIDB4NDAsIDB4OTMsIDB4NDAsCisweDNDLCAweDNCLCAweDcxLCAweDFELCAweEMwLCAweEQyLCAweDAwLCAweDk3LCAweDAwLCAweDRDLCAweDA3LCAweEYwLCAweDFELAorMHhDMCwgMHgzNCwgMHgwMCwgMHg4RiwgMHgwMCwgMHg0RCwgMHgwMywgMHhGMCwgMHg5MSwgMHhEMCwgMHgzNCwgMHgwMCwgMHgxMSwKKzB4MDcsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MTMsIDB4NDYsIDB4NTMsIDB4MDAsIDB4NkMsIDB4MEMsIDB4RjAsCisweDk4LCAweEUwLCAweDM2LCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDA1LCAweEUwLCAweDBELCAweEMwLCAweDBCLCAweDIwLAorMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgyNSwgMHgwMCwgMHhCRiwgMHg0NSwgMHhGQywKKzB4MDUsIDB4RjAsIDB4MEYsIDB4QzAsIDB4OUYsIDB4NDAsIDB4RUIsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEUsIDB4QzAsCisweDNGLCAweDEwLCAweERGLCAweDA0LCAweEZDLCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDNGLCAweDQwLCAweEI3LCAweDA0LAorMHhGQywgMHgwMywgMHhGMCwgMHgwQiwgMHhDNCwgMHg3RSwgMHgwMCwgMHhGRiwgMHgwMCwgMHg3QywgMHg4NCwgMHhGMCwgMHgwMywKKzB4NzAsIDB4MzUsIDB4MDAsIDB4QkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDI1LCAweDAwLCAweDkzLCAweDAxLCAweDdDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgxNywgMHgwMCwgMHhEMywgMHgxMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHgzNCwKKzB4MDAsIDB4OTcsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MzQsIDB4MDAsIDB4REIsIDB4MTAsIDB4NUMsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDk2LCAweDg0LCAweDkzLCAweDAyLCAweDdDLCAweDA4LCAweEI0LCAweDJELCAweEMwLAorMHgzNywgMHgwMCwgMHhENywgMHgwMiwgMHg3QywgMHgwMiwgMHhCMCwgMHgwRCwgMHhDMCwgMHgyOSwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUIsIDB4QTAsIDB4RTQsIDB4MDEsIDB4OTEsIDB4MDAsIDB4NzYsIDB4MDUsIDB4RDAsCisweDBELCAweDQwLCAweDM3LCAweDAwLCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDNELCAweDAxLAorMHhEMSwgMHgwMCwgMHg0NCwgMHg4MywgMHhEQSwgMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhDQiwgMHg4MiwgMHhDNCwgMHg0MywKKzB4RDEsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MTAsIDB4OEIsIDB4MUEsIDB4NzYsIDB4MDAsIDB4MTAsIDB4MDUsIDB4NDAsIDB4M0YsCisweDAwLCAweDkxLCAweDAwLCAweDc0LCAweDAzLCAweEIwLCAweDFELCAweEMwLCAweDRGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhBMCwgMHgyMiwgMHgwMSwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwNSwgMHhEMCwgMHgwRCwKKzB4NDAsIDB4MzMsIDB4MDIsIDB4ODEsIDB4MDIsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDQsIDB4MzAsIDB4MDAsIDB4QzUsCisweDAwLCAweDI0LCAweDAzLCAweEQwLCAweDA0LCAweDQwLCAweDM0LCAweDAwLCAweDAxLCAweDAwLCAweDE0LCAweDA3LCAweEMwLAorMHgwOCwgMHg0MCwgMHhGMCwgMHgyMCwgMHhDMSwgMHgwMywgMHgzNCwgMHgwMCwgMHg5MCwgMHgwNCwgMHg0OCwgMHgzMywgMHgwMCwKKzB4ODAsIDB4MDAsIDB4MzYsIDB4MDIsIDB4NTAsIDB4OEMsIDB4NDAsIDB4NEUsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDBELCAweDgwLCAweDc4LCAweDIwLCAweEUxLCAweDgxLCAweEI0LCAweDQ3LCAweEQwLCAweDFFLCAweDYwLAorMHg1QiwgMHgxMCwgMHhBMSwgMHg4MSwgMHhCNCwgMHgwNywgMHg1MCwgMHg5QiwgMHg0MiwgMHg3OSwgMHgwMCwgMHhBMSwgMHgwMSwKKzB4QTQsIDB4MDcsIDB4RDgsIDB4MTIsIDB4NDAsIDB4N0MsIDB4MDAsIDB4RjksIDB4MDEsIDB4QTQsIDB4MDcsIDB4RDAsIDB4MUEsCisweDQwLCAweDVFLCAweDA0LCAweEE5LCAweDAxLCAweEI0LCAweDA1LCAweDkwLCAweDUyLCAweDQwLCAweDdCLCAweDAwLCAweEExLAorMHgwMSwgMHhCNCwgMHgwNiwgMHg5MCwgMHgxRSwgMHg0MCwgMHgzNiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTIsIDB4MTAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDEsIDB4RjIsIDB4MEMsIDB4RTAsIDB4MzMsCisweDQwLCAweEMzLCAweDAwLCAweDNDLCAweDAzLCAweEQwLCAweDBELCAweEMwLCAweDMwLCAweDAwLCAweEM2LCAweDIwLCAweDI0LAorMHgwMywgMHhEMCwgMHg0QywgMHhDMCwgMHgzMCwgMHgzMCwgMHg4MywgMHg1OCwgMHgxQywgMHgwMywgMHhGMCwgMHgwOCwgMHhDMCwKKzB4MzAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4QjQsIDB4MEMsIDB4QzAsIDB4MzMsIDB4NDAsIDB4ODcsIDB4MDAsCisweDNDLCAweDAyLCAweDcwLCAweDBDLCAweEM0LCAweDRCLCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMiwgMHhCOCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzQiwgMHgwMiwKKzB4QkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4QjMsIDB4MDAsIDB4QkYsIDB4MDAsIDB4NUMsIDB4MDMsCisweEYwLCAweDAzLCAweEQwLCAweDNGLCAweDAwLCAweEZGLCAweDIwLCAweERDLCAweDAzLCAweEYwLCAweDBFLCAweEMwLCAweDFGLAorMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMywgMHg3MCwgMHg0QiwgMHhDQSwgMHhCRiwgMHg4MiwgMHhCRiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MEUsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweEE4LCAweDM3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMyLCAweDc3LCAweDAwLCAweDkzLAorMHg4MCwgMHg1QywgMHg4MywgMHg3MCwgMHgwOSwgMHg4MCwgMHhCNSwgMHgyMiwgMHhEMywgMHgwMCwgMHg1QywgMHgwMywgMHhGMCwKKzB4MDUsIDB4QzAsIDB4NzcsIDB4MjAsIDB4NTMsIDB4MDAsIDB4N0MsIDB4MzMsIDB4RTAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsCisweERGLCAweDAwLCAweDc4LCAweDAzLCAweEIwLCAweDFELCAweEMwLCAweDM2LCAweDgxLCAweERGLCAweDAwLCAweDRDLCAweDAyLAorMHhGMCwgMHgwRCwgMHhDMCwgMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg5OCwKKzB4QjksIDB4MTAsIDB4QUQsIDB4NDAsIDB4OUMsIDB4MEIsIDB4RDMsIDB4MEUsIDB4NDAsIDB4MTMsIDB4MDEsIDB4RTEsIDB4MDAsCisweDg0LCAweDAzLCAweEQwLCAweDJBLCAweDQwLCAweDMwLCAweDExLCAweEUxLCAweDIyLCAweEI0LCAweDgzLCAweEQwLCAweDBFLAorMHg0MCwgMHgzQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwgMHg1MywgMHg4MCwgMHgwQSwgMHg0MCwgMHhCQiwgMHgwMCwgMHhFRCwKKzB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NjAsIDB4MzgsIDB4MDgsIDB4QUQsIDB4MDAsIDB4OTQsIDB4MDIsIDB4RDAsCisweDBFLCAweDQwLCAweDRGLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDc5LAorMHgwNSwgMHhBRCwgMHgwMywgMHhCNCwgMHg1NywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMywgMHhDMSwgMHgwOSwgMHg5NiwKKzB4NDcsIDB4RDAsIDB4N0MsIDB4NEMsIDB4NzksIDB4NjAsIDB4RTEsIDB4MDUsIDB4QjYsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsCisweDdCLCAweDAwLCAweEUxLCAweDgzLCAweEI0LCAweDA3LCAweEMwLCAweERFLCAweDA4LCAweDdCLCAweDAxLCAweEFELCAweDAxLAorMHhCNCwgMHgwNywgMHgxMCwgMHgxRiwgMHg0MCwgMHg3QSwgMHg5MiwgMHhFRCwgMHg0MywgMHg4NCwgMHgwNiwgMHhEMCwgMHgxRSwKKzB4NDAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjAsIDB4MzMsIDB4MDAsCisweDhELCAweDQwLCAweDE0LCAweDAyLCAweEQwLCAweDNELCAweDQxLCAweDIzLCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDA2LAorMHhEMCwgMHgxQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHhFQywgMHg2MCwgMHgyMywKKzB4MDAsIDB4QzEsIDB4MDcsIDB4MzQsIDB4MDMsIDB4OTEsIDB4MUMsIDB4NDAsIDB4QTMsIDB4MDksIDB4OEQsIDB4MDAsIDB4MzQsCisweDFGLCAweDEwLCAweDNDLCAweDQ0LCAweDMwLCAweDAwLCAweDhELCAweDAwLCAweDE0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLAorMHg1QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwgMHgxMSwgMHgxMCwgMHg2RiwKKzB4MDAsIDB4QkMsIDB4MjEsIDB4RjAsIDB4MDcsIDB4QzEsIDB4MUYsIDB4NDAsIDB4NTMsIDB4MDAsIDB4NUMsIDB4MDEsIDB4NzIsCisweDE3LCAweEMyLCAweDE1LCAweDAwLCAweDUyLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDM3LCAweEMwLCAweDE3LCAweDAwLAorMHg3MywgMHgyMywgMHg3QywgMHgwMSwgMHhGMiwgMHgxNSwgMHhDMywgMHg5RiwgMHgwMSwgMHg3RiwgMHgwNSwgMHhGQywgMHgxRCwKKzB4MzQsIDB4MTcsIDB4QzUsIDB4MTYsIDB4MDAsIDB4N0YsIDB4NDAsIDB4Q0MsIDB4ODEsIDB4RTAsIDB4MDUsIDB4QzAsIDB4NUYsCisweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDg3LCAweDIwLCAweDFGLCAweDA0LAorMHg1QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMiwgMHgxRiwgMHgwOCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDAsIDB4QzgsIDB4MDcsIDB4NDIsIDB4MUYsCisweDAyLCAweDNDLCAweDAwLCAweEIwLCAweDAxLCAweEMyLCAweDAzLCAweDAwLCAweDFGLCAweDAwLCAweDNDLCAweDAwLCAweDcwLAorMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxQiwgMHgyMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MjcsIDB4MDEsIDB4OUIsIDB4MDEsIDB4NEMsCisweDIyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAxLCAweDRDLCAweDAyLCAweEYwLCAweDA5LCAweEQwLAorMHg2MSwgMHgwMCwgMHg5NiwgMHgwNCwgMHg3QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMiwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4NUMsIDB4MDIsIDB4NzgsIDB4ODksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4NDksCisweEM5LCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDQzLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHhFRSwgMHgwMCwgMHg5MSwgMHg4OSwgMHhDNCwgMHgwNiwKKzB4MTAsIDB4MDksIDB4NDAsIDB4NkMsIDB4MDAsIDB4QUQsIDB4MDMsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MEIsIDB4NDIsIDB4NjQsCisweDAwLCAweEIxLCAweDA3LCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweEE0LCAweDgyLCAweDhELCAweDAyLCAweDQ0LAorMHgwMiwgMHgxMCwgMHgwQiwgMHg0OCwgMHgyRiwgMHgwMCwgMHg5MSwgMHg0MCwgMHg3NCwgMHgwMiwgMHhCMCwgMHg3OSwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MkMsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDA0LCAweDkxLCAweDAwLCAweDQ0LCAweDAyLCAweDE2LAorMHgwRCwgMHg2MCwgMHgyNCwgMHgwMSwgMHg5RCwgMHgwQSwgMHg0MCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyNCwgMHgwMiwKKzB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4QTQsIDB4MjAsIDB4OUQsIDB4MTgsIDB4NTQsIDB4MDIsCisweDUwLCAweDA5LCAweDQxLCAweDI3LCAweDAwLCAweDkxLCAweDAwLCAweDY0LCAweDAyLCAweDAwLCAweDA5LCAweDQwLCAweDI3LAorMHgwMCwgMHg5OCwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHg3MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4ODgsCisweDQwLCAweDIwLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDBBLCAweEQwLCAweDI4LCAweDQwLCAweDIwLCAweDAwLCAweDg5LAorMHgwMCwgMHgzNCwgMHgyMiwgMHg1MCwgMHg4OCwgMHg0MCwgMHgyMCwgMHgwMiwgMHg4RCwgMHg0MCwgMHgwMCwgMHgwQSwgMHgxMCwKKzB4MDgsIDB4NDgsIDB4MjMsIDB4NDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MjIsIDB4OTgsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MjAsCisweDk1LCAweEMyLCAweDY0LCAweDBBLCAweDEwLCAweDA4LCAweDQwLCAweDUzLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwgMHg0NiwgMHg0MCwgMHgxMywgMHgwMCwgMHg0QywgMHgwNCwgMHgzMiwgMHgyMSwgMHhEMCwKKzB4NDQsIDB4MDAsIDB4MUYsIDB4MDEsIDB4NEQsIDB4MDAsIDB4RjAsIDB4MTEsIDB4QzAsIDB4MDUsIDB4MTUsIDB4MUYsIDB4MDEsCisweDdDLCAweDA4LCAweDcwLCAweDYxLCAweEQxLCAweDgwLCAweDAwLCAweDFELCAweDAwLCAweDVDLCAweDUwLCAweDUwLCAweDExLAorMHg0MCwgMHg0NywgMHgwMCwgMHg1MywgMHg0MCwgMHg2QywgMHg1OCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwNSwgMHgwRiwKKzB4MDAsIDB4NEQsIDB4MDAsIDB4MzQsIDB4MDEsIDB4QzQsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE5LCAweEI4LCAweEFGLCAweDA4LCAweEJGLCAweDAwLCAweEZELCAweDBBLCAweEYwLCAweDRCLCAweEMwLCAweEFGLAorMHgwMCwgMHhCRiwgMHgwMiwgMHhGQywgMHgwNiwgMHhGMCwgMHgzQiwgMHhDMCwgMHgyNywgMHgwMCwgMHhCMywgMHgwMiwgMHg3QywKKzB4MTIsIDB4QjEsIDB4NEIsIDB4ODAsIDB4MkYsIDB4MDEsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MkIsIDB4QzAsCisweEFGLCAweDA4LCAweEJGLCAweDAwLCAweEY4LCAweDEyLCAweEYyLCAweDBBLCAweEM0LCAweDI3LCAweDAwLCAweEI3LCAweDAxLAorMHhEQywgMHgwNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg2NywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4QTAsIDB4NkYsIDB4MDAsIDB4QkYsIDB4NDAsIDB4QzQsIDB4NTYsIDB4RjAsIDB4MDksIDB4QzAsIDB4NkYsIDB4MDEsCisweEJGLCAweDQxLCAweDdDLCAweDAyLCAweDMwLCAweDc5LCAweEMwLCAweDJDLCAweDAwLCAweEZGLCAweDMxLCAweDRDLCAweDIyLAorMHhGMCwgMHg0OSwgMHhDMCwgMHgyQywgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgwMiwgMHhCMCwgMHg1QiwgMHhDMSwgMHg2RCwKKzB4MTQsIDB4QjMsIDB4NjAsIDB4NEMsIDB4NTIsIDB4MzIsIDB4MEIsIDB4QzAsIDB4MjcsIDB4MjgsIDB4OUYsIDB4MDIsIDB4N0MsCisweDBBLCAweEYwLCAweDBCLCAweEM2LCAweDYzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLAorMHgwOCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwOCwgMHhEMCwgMHgwMSwgMHg0MywgMHg5NywgMHgwMCwgMHgxRCwKKzB4MDIsIDB4MzQsIDB4NTQsIDB4NTIsIDB4NzUsIDB4NTAsIDB4ODQsIDB4MDAsIDB4MUQsIDB4MDIsIDB4NTQsIDB4MDAsIDB4OTAsCisweDQxLCAweDExLCAweDA0LCAweDQxLCAweDExLCAweDAwLCAweDc0LCAweDlDLCAweDEwLCAweDIxLCAweDQwLCAweDg0LCAweDAwLAorMHg1MSwgMHgwMCwgMHg1NCwgMHgxMSwgMHg1MCwgMHgwNSwgMHgwMCwgMHg4NywgMHgxMCwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwNCwKKzB4RDAsIDB4MDEsIDB4NDAsIDB4NzMsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4QTAsCisweEEzLCAweDgwLCAweERELCAweDAwLCAweDE0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweEIzLCAweDMwLCAweDhDLCAweDAyLAorMHgzNCwgMHgwMiwgMHgxMCwgMHhDOCwgMHg0MCwgMHgyMiwgMHgwMiwgMHg4RCwgMHgwMCwgMHgwNCwgMHgwMiwgMHg1MCwgMHhDOCwKKzB4NDAsIDB4MjAsIDB4MjUsIDB4ODAsIDB4MDAsIDB4MzQsIDB4NjIsIDB4OTIsIDB4MDgsIDB4NjAsIDB4MjMsIDB4MDAsIDB4OTUsCisweDAwLCAweDE0LCAweDUyLCAweEQwLCAweDA4LCAweDQyLCAweDIzLCAweDgyLCAweDhELCAweDAwLCAweDM0LCAweDAyLCAweEQwLAorMHgwOCwgMHg0MCwgMHg0QiwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwKKzB4MDAsIDB4OUQsIDB4MjIsIDB4NTQsIDB4MDIsIDB4RDAsIDB4NjksIDB4NDIsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4MzQsCisweDAyLCAweDUwLCAweDA5LCAweDQwLCAweDI2LCAweDgwLCAweDlELCAweDAwLCAweDU0LCAweDgyLCAweDkwLCAweDA4LCAweDQxLAorMHgyMCwgMHgwMCwgMHg5MSwgMHgyNCwgMHg3NiwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMiwgMHhENSwgMHg0OCwKKzB4MTQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDIsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MUEsIDB4RDAsIDB4MDksCisweDQwLCAweDYzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDI3LCAweDAwLAorMHg4RiwgMHg4MiwgMHg1RCwgMHg4MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMiwgMHg5RiwgMHgwMCwgMHhGQywgMHgwMiwKKzB4MzAsIDB4QUIsIDB4QzAsIDB4MjYsIDB4MTAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MjksIDB4QzAsIDB4MjQsCisweDAwLCAweDkzLCAweDA0LCAweEZDLCAweDAyLCAweEIwLCAweDE4LCAweEM4LCAweDI3LCAweDQwLCAweDg3LCAweDAwLCAweDVDLAorMHgwQSwgMHg2MCwgMHgyOSwgMHhDMCwgMHgyNywgMHgwMCwgMHhCRiwgMHgyNCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwKKzB4MTcsIDB4QTAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4MjUsIDB4MDAsIDB4OUYsCisweDAwLCAweDZDLCAweDBFLCAweEYwLCAweDE5LCAweEMwLCAweDI3LCAweDAwLCAweDlFLCAweDA5LCAweDdDLCAweDBFLCAweEYwLAorMHgwOCwgMHhDMCwgMHgyNSwgMHg4MCwgMHg4RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMiwgMHhBNywgMHgxNCwKKzB4OUYsIDB4MjAsIDB4M0MsIDB4MDIsIDB4NzAsIDB4NTksIDB4Q0EsIDB4MjcsIDB4MDgsIDB4OUIsIDB4MTEsIDB4N0MsIDB4MDIsCisweEY4LCAweDQ5LCAweEMwLCAweDI3LCAweDgwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYyLCAweDA5LCAweEMwLCAweDRCLAorMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4N0MsIDB4MDAsIDB4QjAsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUIsIDB4MTAsIDB4N0MsIDB4MDAsIDB4MzAsIDB4MjEsCisweEQwLCAweDA0LCAweDAyLCAweDFGLCAweDA4LCAweDRELCAweDAwLCAweEYwLCAweDAxLCAweEUwLCAweDA0LCAweDAwLCAweDE3LAorMHgxMCwgMHg0QywgMHgwMCwgMHhGMCwgMHg0MSwgMHhDMCwgMHgwMiwgMHg0MCwgMHgxMywgMHgwMiwgMHg0QywgMHgwOCwgMHhGMiwKKzB4MDEsIDB4QzAsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NDMsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDFDLCAweDAwLCAweDVELCAweDAwLCAweDcwLAorMHgwMSwgMHgxOCwgMHgwNSwgMHg0OCwgMHgxNywgMHgwMCwgMHg3QywgMHgwMywgMHg3NCwgMHgwMSwgMHgxMCwgMHgwNSwgMHg1MCwKKzB4NTQsIDB4MDAsIDB4N0MsIDB4MDMsIDB4NDQsIDB4MDEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4OUMsIDB4MDEsIDB4N0QsIDB4NDEsCisweDdDLCAweDExLCAweDcwLCAweDA3LCAweEMwLCAweERFLCAweDAxLCAweDcwLCAweDAzLCAweDY4LCAweDAxLCAweDEwLCAweDM3LAorMHgwNSwgMHgxNCwgMHg4MCwgMHg1RCwgMHgwMCwgMHg3NCwgMHgwMSwgMHhDMCwgMHg0NSwgMHg0MCwgMHg1MywgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MjIsIDB4MjAsIDB4OEQsIDB4MDAsIDB4MzAsIDB4MDYsCisweDEwLCAweDBDLCAweDQwLCAweDIzLCAweDEwLCAweDhDLCAweDA4LCAweDM2LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDMwLAorMHgwMCwgMHg4RCwgMHgxMywgMHgyNCwgMHgwMywgMHhDMCwgMHgwQywgMHg0MCwgMHhCMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgyNCwKKzB4MDMsIDB4NTAsIDB4MzgsIDB4NDAsIDB4MjAsIDB4MjksIDB4QzAsIDB4MEEsIDB4MDQsIDB4MDMsIDB4OTAsIDB4MzgsIDB4MDEsCisweDMxLCAweDAwLCAweENELCAweDgwLCAweDM2LCAweDAzLCAweEMwLCAweDBDLCAweDQwLCAweDUzLCAweDAwLCAweDBBLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHg0MCwgMHhCNCwgMHgwRiwgMHgxMCwKKzB4MEUsIDB4NDgsIDB4M0IsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QjQsIDB4MjMsIDB4MTAsIDB4NEMsIDB4NDAsIDB4MjgsIDB4MDAsCisweEFELCAweDAwLCAweEE0LCAweDAzLCAweEQwLCAweDRFLCAweDYwLCAweDM4LCAweDgwLCAweEZELCAweDAzLCAweEE0LCAweDIzLAorMHg1MCwgMHgyOCwgMHg0MCwgMHgzQSwgMHgwMCwgMHhGMSwgMHgwMCwgMHgyNiwgMHgyMywgMHgxMCwgMHgxQiwgMHg0MCwgMHgzOCwKKzB4MDAsIDB4RUQsIDB4MDQsIDB4QjQsIDB4MTMsIDB4OTAsIDB4MEUsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweDY4LCAweDAwLCAweEVGLCAweDAxLCAweDNDLCAweDA3LCAweDM0LCAweDNFLAorMHhDMCwgMHg3QiwgMHgwMCwgMHhBRiwgMHg4MSwgMHhCQywgMHgwNywgMHgzNCwgMHg3RSwgMHg0MCwgMHg3OCwgMHgwMCwgMHhBRCwKKzB4MDEsIDB4QTQsIDB4MUYsIDB4RjksIDB4QkYsIDB4NDAsIDB4NDgsIDB4MDAsIDB4RTcsIDB4MDEsIDB4QUMsIDB4MTcsIDB4NzAsCisweDE2LCAweEUwLCAweDY4LCAweDAwLCAweEUzLCAweDAxLCAweDhDLCAweDU3LCAweEIwLCAweDFFLCAweEUwLCAweDc5LCAweDAwLAorMHhFRCwgMHgwMywgMHhCRSwgMHgwRiwgMHhGMCwgMHgxRSwgMHhDNCwgMHg0NywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MjUsIDB4MjAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjEsIDB4MEQsIDB4NDQsCisweDM3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDI3LCAweDEwLCAweDhGLCAweDAwLAorMHg1QywgMHg0QiwgMHhGMCwgMHg2RCwgMHhEMCwgMHgwNywgMHgwMCwgMHgwRiwgMHgwMCwgMHg3QywgMHg4MywgMHg3MCwgMHgwNSwKKzB4QzAsIDB4MzMsIDB4MDgsIDB4Q0YsIDB4MDAsIDB4N0MsIDB4MEIsIDB4NzEsIDB4MEMsIDB4QzAsIDB4MzcsIDB4MTAsIDB4REYsCisweDAwLCAweDc0LCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDQzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMCwgMHg2RiwgMHgwMCwgMHhGMywgMHgwOSwgMHhGQywgMHg4MywgMHgzMCwgMHg5RiwgMHhDMCwgMHg3RiwKKzB4MDIsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUUsIDB4ODAsIDB4N0QsIDB4MDAsIDB4QkYsIDB4MDEsIDB4RkMsCisweDI3LCAweDMwLCAweDFGLCAweEMwLCAweDdFLCAweDIyLCAweEZGLCAweDAxLCAweEZDLCAweDA2LCAweEYwLCAweDFGLCAweEMwLAorMHg2QywgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgwNywgMHhCMCwgMHgxQiwgMHhDMCwgMHg3RiwgMHgwMiwgMHhFRiwgMHgwOSwKKzB4OEMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzAsIDB4MDMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweDg4LCAweDM5LCAweDAwLCAweEUxLCAweDgwLCAweEIwLCAweDUzLCAweEI0LCAweDBFLCAweDQ2LCAweDNCLCAweDAyLAorMHhFMSwgMHg4MCwgMHhCNCwgMHgwMywgMHg3MCwgMHg0RSwgMHg0OCwgMHgzOSwgMHgwMCwgMHhBRCwgMHgwNCwgMHhCNCwgMHgwMywKKzB4MTAsIDB4MEUsIDB4NDEsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDYsIDB4QjQsIDB4MDIsIDB4OTAsIDB4MEUsIDB4QzQsIDB4MzksCisweDAwLCAweDJGLCAweDAwLCAweEY0LCAweDgzLCAweDEwLCAweDRBLCAweDAwLCAweDNCLCAweDA4LCAweEVELCAweDIwLCAweEFDLAorMHgwMywgMHhGMCwgMHgwRSwgMHg0MCwgMHg1NywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MjksIDB4MDQsIDB4RTEsIDB4MDAsIDB4MzAsIDB4MzMsIDB4MTgsIDB4MEUsIDB4NjAsIDB4MzMsIDB4QzAsIDB4RTksCisweDEwLCAweEI0LCAweDI3LCAweEQwLCAweDFGLCAweDcyLCAweDNCLCAweDAwLCAweEFELCAweDgwLCAweEI0LCAweDAzLCAweDk4LAorMHgwQywgMHg0MCwgMHgyOSwgMHgyMCwgMHhFQywgMHgxMCwgMHhBNCwgMHgwMiwgMHhEMCwgMHgwRSwgMHg0MCwgMHgyQSwgMHgwMCwKKzB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4NTAsIDB4MEUsIDB4NDgsIDB4M0IsIDB4QTAsIDB4RkQsIDB4MTEsIDB4QzQsIDB4MDcsCisweDEwLCAweDBFLCAweDQwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDI4LAorMHg2MywgMHgwMCwgMHhDMSwgMHgyMCwgMHgzNCwgMHg4QiwgMHg5MCwgMHgxQywgMHg0MCwgMHhCMywgMHgwMSwgMHg0OSwgMHgyMCwKKzB4MzQsIDB4MDcsIDB4NTAsIDB4MkMsIDB4NDAsIDB4MzEsIDB4MDAsIDB4OEQsIDB4MDEsIDB4MzQsIDB4MDMsIDB4OTQsIDB4MUMsCisweDY0LCAweDYxLCAweDAwLCAweDBELCAweDEzLCAweDc0LCAweDgyLCAweDkwLCAweDlDLCAweDQwLCAweEYxLCAweDAwLCAweDA1LAorMHgwMywgMHgzNCwgMHgwMywgMHgxMSwgMHgxQywgMHg0MCwgMHgzMywgMHgxMCwgMHhDRCwgMHgwMywgMHgwNCwgMHgwQiwgMHg1OCwKKzB4MEMsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4NjUsCisweDAwLCAweEMzLCAweDA0LCAweDdDLCAweDA3LCAweDEwLCAweDFGLCAweDQwLCAweDM3LCAweDA0LCAweDhCLCAweDAxLCAweDc0LAorMHgwMywgMHhGMCwgMHgwRCwgMHhEMCwgMHgzNywgMHgwMCwgMHhERiwgMHgxMSwgMHhGQywgMHgwMywgMHhCMCwgMHgyRiwgMHhDMCwKKzB4MzUsIDB4MTEsIDB4NUYsIDB4MDMsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4QTYsIDB4MDgsIDB4OUQsIDB4MDQsCisweEZDLCAweDE3LCAweDU0LCAweDY4LCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweEMzLCAweDQ1LCAweDEzLCAweDE1LCAweDBELAorMHhDMCwgMHg1NywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHg0MCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MTMsIDB4NzAsIDB4OEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MjMsCisweEYwLCAweDRELCAweEQwLCAweDI3LCAweDAwLCAweERGLCAweDAyLCAweDdDLCAweDAzLCAweDcwLCAweDBELCAweDAwLCAweEI0LAorMHgwOCwgMHg1RiwgMHg4MCwgMHg3QywgMHgwMiwgMHhCMiwgMHgwOSwgMHhDMCwgMHgyNywgMHgwNiwgMHg5RiwgMHgwMiwgMHgzQywKKzB4MDMsIDB4NTAsIDB4MDksIDB4QzAsIDB4MzMsIDB4MDAsIDB4REUsIDB4MDAsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MEQsIDB4QzAsCisweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDI3LCAweDAwLCAweEZGLAorMHg5MCwgMHhDRCwgMHgwMywgMHhGMSwgMHgwRiwgMHhDMSwgMHgzRSwgMHgwMCwgMHhCRiwgMHgwMSwgMHhDRSwgMHgwMywgMHgzMiwKKzB4MEYsIDB4RTAsIDB4MkMsIDB4MDAsIDB4QkYsIDB4MDEsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4NUYsIDB4MDAsCisweDdGLCAweDAxLCAweEZDLCAweDIzLCAweDM4LCAweDA1LCAweEUwLCAweDJDLCAweDAxLCAweDM4LCAweDkwLCAweEZDLCAweDAzLAorMHgzMCwgMHg0QiwgMHhERCwgMHgzRCwgMHgwMCwgMHhGMywgMHgxMCwgMHhDQywgMHg0MywgMHg3OCwgMHg5RiwgMHhDMCwgMHgxMywKKzB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4NTYsIDB4MDAsIDB4REQsIDB4NDksCisweDQ0LCAweDAzLCAweDcwLCAweDBDLCAweDQwLCAweDc0LCAweDA4LCAweDlELCAweDAwLCAweDA0LCAweDAzLCAweEIwLCAweDBELAorMHhDMCwgMHg2NiwgMHg4MCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHhDMCwgMHgxNSwgMHgwMywgMHgxRCwKKzB4MjMsIDB4NUMsIDB4MDIsIDB4QjAsIDB4MDQsIDB4NDQsIDB4MjUsIDB4MDAsIDB4MUQsIDB4NDEsIDB4NzQsIDB4MDMsIDB4NzAsCisweDA5LCAweDQwLCAweDM0LCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDAzLCAweEQwLCAweDFELCAweDQwLCAweDE3LCAweDAyLAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHhBNCwgMHgwMSwgMHhERCwgMHgwMCwgMHg0NCwKKzB4MDcsIDB4RDAsIDB4MEQsIDB4NjAsIDB4MzYsIDB4MDIsIDB4OUQsIDB4MDQsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDgsCisweDM0LCAweDAyLCAweERELCAweDA2LCAweDc0LCAweDAzLCAweEQwLCAweDBELCAweDYwLCAweDA3LCAweDAwLCAweDlELCAweDQ0LAorMHg3NCwgMHgwMywgMHg5MywgMHgwRCwgMHg0MCwgMHhBNCwgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwMywgMHgxMCwgMHgyOSwKKzB4NDAsIDB4MzQsIDB4MDAsIDB4QzAsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDMwLCAweDAwLCAweERELCAweDIwLCAweDA0LCAweDAzLAorMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHg4MCwgMHg4RCwgMHgwMCwgMHg0NSwgMHgwMywgMHg5OSwgMHgwQywgMHg0MCwgMHgzMCwKKzB4ODAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MDEsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MTAsCisweDAyLCAweDkwLCAweDBDLCAweDYwLCAweDExLCAweDAwLCAweDBELCAweDAwLCAweDM0LCAweDAzLCAweDUwLCAweDA4LCAweDQwLAorMHgzMCwgMHg0MCwgMHhDMSwgMHgwMCwgMHgyNCwgMHgwMywgMHhEMCwgMHgwOCwgMHg0MCwgMHg0MywgMHhBMSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QjAsIDB4MjYsIDB4MDAsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RjgsCisweDBELCAweEMwLCAweDM2LCAweDAwLCAweERGLCAweDQwLCAweEM2LCAweDAzLCAweDMyLCAweDBGLCAweDUwLCAweDI0LCAweDIwLAorMHg1RCwgMHgwMCwgMHhCQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3OCwgMHgwMywKKzB4OTAsIDB4MEQsIDB4NDAsIDB4MjQsIDB4MDgsIDB4MUYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4MzEsIDB4MDUsIDB4QzAsIDB4MzUsCisweDAwLCAweEYzLCAweDAwLCAweENDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDAzLCAweEM0LCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgxRiwgMHgyMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3QSwgMHgwRiwKKzB4QzAsIDB4M0YsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjMsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDAsIDB4N0YsCisweDAwLCAweEZDLCAweDgzLCAweEYxLCAweDBGLCAweDgwLCAweDBELCAweDAwLCAweDNFLCAweDAwLCAweERDLCAweDgyLCAweEYwLAorMHgwRiwgMHhDMCwgMHgxRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3MCwgMHgwNywgMHg0MCwgMHgzRiwgMHgwMCwKKzB4RjcsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjgsIDB4MEIsIDB4QzAsIDB4MTcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDVGLCAweDAwLCAweDMzLCAweDhDLCAweENDLCAweDEwLCAweDMwLCAweDFGLCAweEMwLAorMHgyRiwgMHgwMCwgMHgzMywgMHgwMCwgMHhDQywgMHgwMiwgMHgzMCwgMHgxRiwgMHhFMCwgMHg3RiwgMHgwMCwgMHhCQiwgMHgwMSwKKzB4RjQsIDB4MDcsIDB4NzAsIDB4MEIsIDB4QzAsIDB4N0MsIDB4MDUsIDB4RkYsIDB4NDIsIDB4RkMsIDB4MzIsIDB4RjAsIDB4NEYsCisweEM4LCAweDNGLCAweDAxLCAweEZGLCAweDAxLCAweEZDLCAweDBDLCAweDMwLCAweDRGLCAweEMwLCAweDRFLCAweDAwLCAweEIzLAorMHgwMCwgMHg3QywgMHg3MywgMHhGMCwgMHg0RiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MDgsIDB4NzcsIDB4MDAsIDB4MTEsIDB4MEUsIDB4NkMsIDB4MjQsIDB4MzAsIDB4MUQsIDB4NDAsIDB4MjMsCisweDAwLCAweDUxLCAweDAzLCAweDE0LCAweDAyLCAweDUwLCAweDRELCAweDQ5LCAweDMzLCAweDEwLCAweEMxLCAweDEwLCAweDc0LAorMHgwNCwgMHgxMCwgMHhCOSwgMHhFMCwgMHhGRSwgMHgwMCwgMHhGRCwgMHgwQSwgMHg3NCwgMHgyMiwgMHhEMCwgMHhCRiwgMHg0MCwKKzB4M0YsIDB4MEIsIDB4Q0QsIDB4MDAsIDB4NzQsIDB4MDAsIDB4NTAsIDB4M0QsIDB4NDAsIDB4NDQsIDB4MDAsIDB4OTEsIDB4MEIsCisweEY0LCAweDAzLCAweEQxLCAweDFGLCAweDQwLCAweDA3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMSwgMHhBMCwgMHgyNywgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgxMCwgMHgwQywgMHg0MCwgMHgyMywgMHgwMCwKKzB4ODEsIDB4MDIsIDB4MDQsIDB4MDMsIDB4MTAsIDB4NEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4QzksIDB4MDAsIDB4NzQsIDB4MDMsCisweDU0LCAweDA0LCAweDUwLCAweDMyLCAweDIwLCAweEM1LCAweDg0LCAweDM0LCAweDEyLCAweEQwLCAweDBDLCAweDQwLCAweDMxLAorMHgwNCwgMHhDRCwgMHgwMCwgMHg1NCwgMHgxMSwgMHgxMCwgMHgyQywgMHg0OCwgMHg0NiwgMHg4MCwgMHhDMSwgMHgwMCwgMHgxNCwKKzB4MTMsIDB4RDAsIDB4MkMsIDB4NDAsIDB4NDcsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEE4LCAweDI1LCAweDAyLCAweDUxLCAweDAwLCAweDQ0LCAweDA4LCAweDEwLCAweDBELCAweDQwLCAweDI3LCAweDAyLCAweDUxLAorMHgwMCwgMHg1NCwgMHgwMywgMHg1MCwgMHgwRCwgMHg0OCwgMHgzNywgMHgwMCwgMHhEOSwgMHgwMywgMHg3NCwgMHgxOCwgMHgxNCwKKzB4MTUsIDB4NTAsIDB4MzYsIDB4MDAsIDB4RDksIDB4MDAsIDB4NzAsIDB4MjIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MjAsCisweERELCAweDAwLCAweDc0LCAweDA5LCAweDUwLCAweDBELCAweDQwLCAweDQ2LCAweDQwLCAweEQxLCAweDExLCAweDc0LCAweDAzLAorMHhEMSwgMHgwRCwgMHg0MCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwKKzB4NTMsIDB4MDEsIDB4MTMsIDB4MTAsIDB4NDQsIDB4MEMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4NDAsIDB4MTMsIDB4ODAsCisweDQ0LCAweDA2LCAweDM0LCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweERCLCAweDAxLCAweDNDLCAweDA5LCAweDcwLCAweDMxLAorMHg0MCwgMHgzNiwgMHgzMCwgMHhERiwgMHgwMCwgMHg3OCwgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwKKzB4MDAsIDB4N0MsIDB4MEMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4NDIsIDB4MTAsIDB4RDMsIDB4MDEsIDB4N0MsIDB4MDMsIDB4RjEsCisweDBELCAweEMwLCAweDAzLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDdELAorMHg1MCwgMHhFRiwgMHgxMCwgMHhCQywgMHgyMiwgMHg3MCwgMHgwRiwgMHhDMCwgMHgyQiwgMHgwMCwgMHg5RiwgMHgwMCwgMHhCOCwKKzB4MjYsIDB4QjAsIDB4MEYsIDB4ODgsIDB4M0YsIDB4MDAsIDB4RjcsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsCisweDNGLCAweDAwLCAweEZGLCAweDIwLCAweEY4LCAweDA2LCAweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEZGLCAweDEwLAorMHhGQywgMHgyNCwgMHhGMCwgMHgwRSwgMHhDMCwgMHgwRCwgMHgyOCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwKKzB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MjUsIDB4MDgsCisweDFGLCAweDAwLCAweDZDLCAweDI5LCAweDMwLCAweDBELCAweEMwLCAweDI3LCAweDAxLCAweEM3LCAweDgwLCAweDRDLCAweDAzLAorMHgzNCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhERiwgMHgwMiwgMHg0RSwgMHgwOCwgMHgyMiwgMHgwNSwgMHhDOCwgMHgzNCwKKzB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDAsIDB4REYsIDB4MDAsIDB4NkQsCisweDA5LCAweDcwLCAweDBELCAweEMwLCAweDA3LCAweDAwLCAweERGLCAweDBBLCAweDdDLCAweDAzLCAweEYxLCAweDBELCAweEM0LAorMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgyNCwgMHgwMCwgMHhERCwKKzB4MDAsIDB4NDUsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4QTcsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NEQsIDB4MDMsIDB4MTAsCisweDBELCAweEMwLCAweDc2LCAweDAyLCAweEQxLCAweDAwLCAweDQ1LCAweDAxLCAweEIwLCAweDA0LCAweEMxLCAweDNFLCAweDAwLAorMHhGRCwgMHgwMCwgMHg3QywgMHgwMywgMHhDMSwgMHgxRiwgMHhDMSwgMHgzRSwgMHgwMCwgMHhERCwgMHgwMCwgMHgwNCwgMHgwMSwKKzB4MTAsIDB4MEYsIDB4QzAsIDB4NDUsIDB4MDAsIDB4REQsIDB4NDEsIDB4RjQsIDB4ODMsIDB4RDAsIDB4NUYsIDB4NDAsIDB4NEYsCisweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDIyLCAweDAwLCAweDhELCAweDAxLAorMHgwNCwgMHgwNywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywKKzB4NDAsIDB4RjQsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MDQsIDB4MDYsIDB4MTgsIDB4MDgsIDB4NDAsIDB4NzAsIDB4MDAsIDB4Q0QsCisweDgwLCAweDM0LCAweDAzLCAweEMwLCAweDFDLCAweDQwLCAweDMwLCAweDA4LCAweENELCAweEMwLCAweDA0LCAweDAxLCAweDUwLAorMHgwQywgMHg0MCwgMHg1MywgMHgwMCwgMHhDRCwgMHgwMCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgxRiwgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NjgsIDB4MDAsIDB4MkQsIDB4MTksIDB4MDQsCisweDA3LCAweDEwLCAweDFFLCAweDQwLCAweDZCLCAweDAwLCAweDYxLCAweDAxLCAweEE0LCAweDI3LCAweDkwLCAweDFFLCAweDQwLAorMHg3QSwgMHgwMCwgMHhFMSwgMHgwMSwgMHhDNCwgMHgwNCwgMHg5OSwgMHg5QSwgMHg0MCwgMHg3QSwgMHgwMCwgMHhFRCwgMHg4MSwKKzB4OTQsIDB4MDcsIDB4RDAsIDB4OUUsIDB4NDAsIDB4N0EsIDB4MDAsIDB4RUQsIDB4ODEsIDB4ODQsIDB4MDcsIDB4MTAsIDB4MUUsCisweDQwLCAweDQ5LCAweDAwLCAweDZELCAweDAxLCAweEI0LCAweDI3LCAweEQwLCAweDFFLCAweDQwLCAweDEzLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgyMCwgMHgwMCwgMHhERiwgMHgwMCwgMHgwNCwgMHgwMywKKzB4MzAsIDB4MEMsIDB4QzAsIDB4MjIsIDB4MDIsIDB4ODUsIDB4MDgsIDB4MDQsIDB4MjMsIDB4RjAsIDB4MEQsIDB4NDAsIDB4MzAsCisweDA0LCAweEM3LCAweDA4LCAweDA0LCAweDQyLCAweDMwLCAweDAwLCAweEMwLCAweDMwLCAweDA0LCAweENGLCAweDAwLCAweDM0LAorMHgwMiwgMHhGMCwgMHg4QywgMHhDMCwgMHgzMCwgMHgwMCwgMHhDRiwgMHg4MCwgMHg0QywgMHgwMSwgMHg3MCwgMHgwQywgMHhDMCwKKzB4MTMsIDB4ODQsIDB4Q0YsIDB4MDAsIDB4MUMsIDB4MTcsIDB4RjAsIDB4MEMsIDB4QzAsIDB4NEIsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDJELCAweDAwLCAweDdGLCAweDAwLCAweERELCAweDAzLCAweEQwLAorMHgwRiwgMHhDMCwgMHgyRiwgMHg4MCwgMHg3RiwgMHgwMCwgMHhERSwgMHhBMywgMHg3MCwgMHgwRiwgMHhDOCwgMHgzRiwgMHgwMCwKKzB4RjcsIDB4MDAsIDB4QkMsIDB4MjIsIDB4RjAsIDB4MEEsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDgsIDB4RkMsIDB4MjIsCisweEYwLCAweEFFLCAweEMyLCAweDNGLCAweDIwLCAweEZGLCAweDA4LCAweERDLCAweDIxLCAweEYwLCAweDBGLCAweEM0LCAweDBGLAorMHgxMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgyRiwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzEsIDB4MEQsCisweEMwLCAweDNGLCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDA3LCAweDMwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg3QywgMHgwNCwgMHgzMCwgMHgxNSwgMHhDMCwgMHhCNSwgMHgwNCwgMHhERiwgMHgwNywgMHg2QywgMHgwMywgMHhGMCwKKzB4NUQsIDB4QzAsIDB4MzYsIDB4MDUsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NTMsIDB4MDAsCisweEQxLCAweDQwLCAweDc4LCAweDE3LCAweDM0LCAweDJELCAweEMwLCAweDU3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMiwgMHg5OCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHg4NCwgMHgwMiwgMHgxMCwgMHgwRSwgMHg0MCwKKzB4M0IsIDB4OTAsIDB4QUMsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MTAsIDB4RUQsIDB4MjAsCisweEI0LCAweDAwLCAweDUwLCAweDBFLCAweDQwLCAweDM4LCAweDAxLCAweENELCAweDEyLCAweDg0LCAweDAzLCAweEQwLCAweDBFLAorMHg0MCwgMHhCOCwgMHgwMCwgMHhFNywgMHgwMCwgMHg5QywgMHgwMywgMHhEMCwgMHg2RSwgMHg0MCwgMHgwQiwgMHgwMCwgMHhFMSwKKzB4MDAsIDB4RjQsIDB4MkIsIDB4MTAsIDB4MEUsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAzLCAweDAwLCAweEU5LCAweDAwLCAweDhELCAweDAzLCAweDI0LCAweDA1LCAweDk0LCAweDFFLCAweDQwLCAweDdCLAorMHgxMCwgMHhFQywgMHgwMywgMHhCNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgyMCwgMHhFRCwgMHgwMSwgMHhGNiwKKzB4MDcsIDB4MTAsIDB4MTQsIDB4NDEsIDB4NzksIDB4MDIsIDB4RUQsIDB4MDUsIDB4ODQsIDB4MDcsIDB4NTAsIDB4REMsIDB4NDAsCisweDdBLCAweDAwLCAweEVELCAweDAxLCAweDk2LCAweDA1LCAweEQwLCAweDFFLCAweDQwLCAweDVCLCAweDgwLCAweEUxLCAweDQxLAorMHhCNCwgMHgxNywgMHgxMCwgMHg5RSwgMHg0MCwgMHgwRiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MjAsIDB4NjMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDUsIDB4MTMsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDIsCisweEM5LCAweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDBDLCAweDQyLCAweDMzLCAweDAwLCAweDRDLCAweDA4LCAweDM0LCAweDBCLAorMHg1MCwgMHgzQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDQywgMHgwMCwgMHgwNCwgMHgwNywgMHhEMSwgMHgwQywgMHg0MCwgMHgzMiwKKzB4MjAsIDB4QzUsIDB4MDAsIDB4NTQsIDB4MEIsIDB4RDAsIDB4MEMsIDB4NDQsIDB4MjMsIDB4MDAsIDB4QzEsIDB4MDcsIDB4MzQsCisweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDRCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LAorMHhBOCwgMHgxRCwgMHgwMCwgMHg3RiwgMHgwQSwgMHhFQywgMHgxRCwgMHhCMCwgMHgwNSwgMHg0MCwgMHg1NywgMHgwMCwgMHg3RiwKKzB4MEEsIDB4N0MsIDB4MDEsIDB4QjQsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MTAsIDB4N0QsIDB4MDIsIDB4RkMsIDB4MjEsIDB4MzAsCisweDI3LCAweEMwLCAweDE1LCAweDEwLCAweDVGLCAweDAwLCAweDRDLCAweDE1LCAweEYwLCAweDA1LCAweEMwLCAweDE2LCAweDgwLAorMHg1RiwgMHhDMCwgMHhEQywgMHgwMSwgMHhGMSwgMHgwNSwgMHhDMCwgMHgxRiwgMHgwMiwgMHg3MywgMHgwMiwgMHg3NCwgMHgwMSwKKzB4MzAsIDB4MDUsIDB4QzAsIDB4NUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsCisweDA3LCAweDAwLCAweDBGLCAweDAyLCAweDNDLCAweDAwLCAweDcwLCAweDAxLCAweEM4LCAweDA3LCAweDAwLCAweDFGLCAweDAwLAorMHg3QywgMHgwMCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgxMCwgMHg3QywgMHgyMCwgMHhGMCwgMHg0MSwKKzB4QzAsIDB4MDMsIDB4ODAsIDB4MUYsIDB4MDAsIDB4NUQsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDEsIDB4ODAsIDB4MUYsCisweDAyLCAweDVDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDQwLCAweDFGLCAweDA4LCAweDdDLCAweDAwLCAweEYwLAorMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MjIsIDB4MzQsIDB4MDksIDB4QzAsIDB4MjMsIDB4MDAsIDB4ODMsIDB4MDAsIDB4NEMsCisweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDY3LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweEEyLCAweEYwLCAweDA5LCAweEMwLAorMHg2NywgMHgwMCwgMHg5QiwgMHg4MCwgMHg3QywgMHgwMiwgMHhEMiwgMHg4OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5MywgMHg4NCwKKzB4N0MsIDB4MDIsIDB4QjAsIDB4MDgsIDB4QzAsIDB4NjQsIDB4MDAsIDB4OEYsIDB4MDEsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDQzLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDI2LCAweDAwLAorMHg5RCwgMHgwMywgMHg0NCwgMHgwNiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5NSwgMHgwMCwgMHg2QywgMHgyMiwKKzB4RDAsIDB4MDksIDB4NDAsIDB4QTcsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NkMsIDB4MDYsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsCisweDAwLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweEM0LCAweDI3LCAweDAwLCAweDkxLCAweDAzLCAweDc0LAorMHgwMiwgMHg1MCwgMHgwOSwgMHhDMCwgMHg2NiwgMHgwMiwgMHg5RCwgMHgwOSwgMHg2QywgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwKKzB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDAsIDB4OUQsCisweDA0LCAweDQ0LCAweDAyLCAweDE5LCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDAyLCAweDU4LAorMHgwOSwgMHg0MCwgMHgyNywgMHgwNSwgMHg5RCwgMHgwMCwgMHg2NiwgMHgwMiwgMHg1MiwgMHg4RCwgMHg0MCwgMHgyNywgMHgwMSwKKzB4OTksIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjYsIDB4MDAsIDB4OTAsIDB4MDIsIDB4NzQsIDB4MDIsCisweDEwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweEMwLCAweDQ0LCAweDgyLCAweEQwLCAweDA5LCAweDQwLCAweDYzLAorMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHhBMCwgMHgwMCwgMHg4RCwgMHgwNCwKKzB4MDQsIDB4MTIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MzMsIDB4MDEsIDB4ODUsIDB4MDQsIDB4MjQsIDB4MTIsIDB4RDAsIDB4MDgsCisweDQwLCAweDIzLCAweDAwLCAweDlELCAweDAwLCAweDA0LCAweDAyLCAweEQwLCAweDQ4LCAweDQwLCAweDIzLCAweDAxLCAweDgxLAorMHgwNCwgMHgzNCwgMHgxMiwgMHhEMCwgMHgwOCwgMHg0OCwgMHgyMSwgMHgwMSwgMHg4MSwgMHgwMCwgMHgzNCwgMHgyMiwgMHg1MCwKKzB4MDgsIDB4NEEsIDB4MjIsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MjYsIDB4MTIsIDB4RDAsIDB4NDgsIDB4NDgsIDB4NDMsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDVGLCAweDBBLCAweDRDLAorMHgwMCwgMHgzMSwgMHgwMSwgMHg0MCwgMHg4NywgMHgwMiwgMHgxMywgMHgwMCwgMHgwQywgMHgyOCwgMHg3MCwgMHhBMSwgMHhDMCwKKzB4ODcsIDB4MDIsIDB4MUYsIDB4MEEsIDB4NjQsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzQsIDB4MDcsIDB4MDAsIDB4MUIsIDB4MEEsCisweDc0LCAweDI4LCAweEYwLCAweDQxLCAweDQxLCAweDg3LCAweDQyLCAweDEzLCAweDBBLCAweDdDLCAweDA4LCAweEIwLCAweDQxLAorMHhDMSwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0QywgMHgyOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4OTgsIDB4NkYsIDB4MDAsIDB4QkYsIDB4MjgsIDB4RjUsIDB4MjIsCisweEYwLCAweDA5LCAweEMwLCAweDJGLCAweDAyLCAweEJGLCAweDI4LCAweEZDLCAweDIyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LAorMHgwMCwgMHhCRSwgMHg0MCwgMHhCRCwgMHgwMiwgMHhGMCwgMHg4QiwgMHhDMCwgMHgyNywgMHgwMiwgMHg5RiwgMHgwOCwgMHhGQywKKzB4MjIsIDB4RjAsIDB4MDksIDB4QzIsIDB4MjcsIDB4MDIsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MTIsIDB4RjAsIDB4MDksIDB4QzAsCisweDJGLCAweDAwLCAweEJGLCAweDA4LCAweDdDLCAweDIyLCAweEYwLCAweDg5LCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg4MCwgMHgyNywgMHgwMCwgMHhCRiwgMHgxNCwgMHhDQywgMHgxMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MkYsIDB4MDAsIDB4OTMsIDB4MDAsIDB4RkMsIDB4MTIsIDB4NzAsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDIsCisweDhGLCAweDAwLCAweEJDLCAweDAyLCAweDMyLCAweDBCLCAweEMwLCAweDJDLCAweDAxLCAweDlGLCAweDE0LCAweDRDLCAweDMyLAorMHgzMCwgMHgwQiwgMHhDMCwgMHgyNCwgMHgwMCwgMHhCMywgMHgwOCwgMHg0QywgMHgwMiwgMHhGMiwgMHg0OSwgMHhDMSwgMHgyRiwKKzB4MDAsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MjAsIDB4MEIsIDB4QzAsIDB4NjAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LCAweDU3LCAweDA1LCAweDFELCAweDA0LCAweDQ0LCAweDIwLCAweEQwLCAweDAxLAorMHg0OCwgMHgwNywgMHgwNCwgMHgxQiwgMHgwOCwgMHg3NCwgMHg1MCwgMHgxMCwgMHg0MSwgMHg0MCwgMHgwNywgMHg4MSwgMHgxRCwKKzB4NTAsIDB4NzQsIDB4MDAsIDB4MTEsIDB4ODEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MUQsIDB4MDQsIDB4NDUsIDB4MzAsIDB4QjAsCisweDIxLCAweEMwLCAweDA2LCAweDBDLCAweDExLCAweDAwLCAweDQ0LCAweDUwLCAweEQwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLAorMHgxRCwgMHgwMiwgMHg3NCwgMHg0MCwgMHgxMCwgMHgwMSwgMHhDMCwgMHg3MiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MTQsIDB4MDUsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDIzLCAweDAyLCAweDgxLCAweDAxLCAweDE0LCAweDMyLCAweDUxLCAweDQ4LCAweDQxLCAweDIzLCAweDAxLCAweDhELCAweDA1LAorMHg3NCwgMHgwMywgMHgxMCwgMHgwOCwgMHg0MCwgMHgzMCwgMHgwMiwgMHg4OSwgMHgxNCwgMHgwNCwgMHgxMiwgMHgxMCwgMHg4OCwKKzB4NDAsIDB4MjAsIDB4NDIsIDB4ODEsIDB4MDAsIDB4MjQsIDB4MTIsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4ODAsIDB4OEQsCisweDA5LCAweDM0LCAweDAyLCAweDE0LCAweDA4LCAweDQwLCAweDQwLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwgMHgwMiwgMHg5RCwgMHgwNCwgMHg0NCwgMHgxMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDIsIDB4OTksIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsCisweDAyLCAweDEwLCAweDI5LCAweDQwLCAweDI0LCAweDAwLCAweDhELCAweDAwLCAweDQ0LCAweDIyLCAweDk0LCAweDA5LCAweDQwLAorMHgyNiwgMHgwMCwgMHhEMSwgMHgwMCwgMHg2NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHhBNywgMHgwMCwgMHg5RCwgMHgwOCwKKzB4NzQsIDB4MDIsIDB4MTEsIDB4MDksIDB4NDAsIDB4NjIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDA1LCAweDA4LCAweDJELCAweDEwLCAweDlGLCAweDAxLCAweDRDLCAweDA2LCAweEYwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLAorMHg5MywgMHgwMSwgMHg3QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHgzQywgMHg0NiwKKzB4MzQsIDB4MDksIDB4NTAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjQsCisweDAwLCAweDkzLCAweDAwLCAweDZELCAweDZFLCAweEYwLCAweDA5LCAweEMwLCAweEE3LCAweDAwLCAweDlGLCAweDAyLCAweDc4LAorMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgxNCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKzB4MDAsIDB4NjUsIDB4MDAsIDB4OUYsIDB4MDEsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsCisweDgzLCAweDdFLCAweDBFLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDA4LCAweDlGLCAweDQ5LCAweDdDLCAweDI2LCAweEYwLAorMHg0OSwgMHhDMCwgMHgyNywgMHgwOCwgMHg5RiwgMHgyMCwgMHgzQywgMHgwNiwgMHg3MSwgMHgwOSwgMHhDMCwgMHgyMywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4NUMsIDB4ODIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDEsIDB4M0MsIDB4MDIsCisweEYwLCAweDA5LCAweEMwLCAweDUzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LAorMHg4NSwgMHgwMCwgMHgwRiwgMHgwMSwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMSwgMHgxRiwgMHgwMCwKKzB4N0UsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MjAsIDB4MUIsIDB4MDAsIDB4NEYsIDB4MDAsIDB4QjAsIDB4MDEsCisweEMwLCAweDA2LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDcwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDFGLAorMHgwMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjAsIDB4MTQsCisweDAwLCAweDdELCAweDAwLCAweDc0LCAweDgxLCAweEQwLCAweDA1LCAweEMwLCAweDlELCAweDA0LCAweDVELCAweDAwLCAweDdFLAorMHgwMSwgMHhEMCwgMHgxNSwgMHg0MCwgMHg1RiwgMHgwMSwgMHg1MSwgMHgwMCwgMHg0NCwgMHgwMSwgMHgxNCwgMHgwNCwgMHhEMCwKKzB4MTYsIDB4MDAsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4MTAsIDB4NDUsIDB4QzAsIDB4MTQsIDB4MDAsIDB4N0QsIDB4MTAsCisweDQ0LCAweDAxLCAweEQwLCAweDA1LCAweDQ0LCAweDE3LCAweDIwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDA0LAorMHg0MCwgMHg1MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgzMiwgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MzQsIDB4MDIsIDB4REEsIDB4MEMsIDB4NDgsIDB4MzUsIDB4MjAsIDB4Q0QsIDB4MDAsIDB4NzQsIDB4MDMsCisweEQwLCAweDlDLCAweDQwLCAweDMzLCAweDgwLCAweEM5LCAweDIwLCAweDEwLCAweDAyLCAweDkwLCAweDhDLCAweDQwLCAweDIyLAorMHgwMCwgMHhDRCwgMHgwMCwgMHgzNiwgMHgwMywgMHgxOCwgMHgwOCwgMHg0MCwgMHgzMSwgMHgwMCwgMHhERCwgMHgwMSwgMHgyNCwKKzB4ODMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MjMsIDB4ODIsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsCisweDUzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDM4LCAweDgxLCAweEVELAorMHgwMCwgMHhCNCwgMHg0MywgMHhEOSwgMHgwRSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHg5NCwgMHg0MywgMHhEMCwKKzB4MEUsIDB4NDAsIDB4NkIsIDB4MDEsIDB4RjEsIDB4MDUsIDB4RDQsIDB4MDMsIDB4MTAsIDB4MEYsIDB4NTAsIDB4M0EsIDB4MDAsCisweEVELCAweDA4LCAweDM0LCAweDAzLCAweDE4LCAweDBFLCAweDQwLCAweDM5LCAweDA4LCAweEVELCAweDAwLCAweEE0LCAweDAzLAorMHhDMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHg4MCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgxMywKKzB4MjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4RjgsIDB4MDAsIDB4MkYsIDB4MDEsCisweEJDLCAweDA3LCAweEYwLCAweDFFLCAweEMwLCAweDU5LCAweDAwLCAweEVGLCAweDAxLCAweEI0LCAweDA2LCAweEYwLCAweDFFLAorMHhFNCwgMHhGQiwgMHgwMCwgMHhFQiwgMHgxMSwgMHg5NCwgMHgwNywgMHhCMiwgMHgxRSwgMHhEMCwgMHg3QSwgMHgwMCwgMHhFRiwKKzB4MTUsIDB4QkMsIDB4NUYsIDB4NzAsIDB4MUMsIDB4QzAsIDB4NzksIDB4MDAsIDB4RkYsIDB4MDEsIDB4QUMsIDB4MDcsIDB4RTAsCisweDFFLCAweEMwLCAweDdCLCAweDAwLCAweEVGLCAweDAxLCAweEI0LCAweDM3LCAweEYwLCAweDFBLCAweEMwLCAweDUzLCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MEQsIDB4QzQsIDB4MTUsIDB4MTAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MEEsIDB4QjAsIDB4MEQsIDB4QzAsCisweDAzLCAweDAwLCAweERGLCAweDA4LCAweDZDLCAweDAzLCAweEYyLCAweDBDLCAweEQwLCAweDM3LCAweDAwLCAweERGLCAweDIwLAorMHg3QywgMHgwMywgMHhGNCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwNywgMHg1RiwgMHgwMCwgMHg1QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzgsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MjMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEwLCAweDdCLCAweDAwLCAweEYzLCAweDAxLCAweENDLCAweDA3LAorMHhGQSwgMHg4RiwgMHhDMCwgMHg2RiwgMHgwMiwgMHhGMywgMHgwOSwgMHg4QywgMHgwRiwgMHgzMCwgMHgxRiwgMHhDMCwgMHg3RiwKKzB4MDAsIDB4RjMsIDB4MDEsIDB4RUMsIDB4MDcsIDB4MzAsIDB4MUUsIDB4QzAsIDB4N0MsIDB4MzAsIDB4RjcsIDB4NDEsIDB4Q0MsCisweDA3LCAweDcwLCAweDFGLCAweEM0LCAweDdDLCAweDAwLCAweEYzLCAweDAxLCAweERDLCAweDQ3LCAweDcyLCAweDFGLCAweEM4LAorMHg3QiwgMHgyMiwgMHhGNywgMHhBMSwgMHhGQywgMHg4NywgMHgzMiwgMHgxQiwgMHhDMiwgMHgwOCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4MzksIDB4MDAsIDB4NjEsIDB4NDAsIDB4ODQsIDB4MDMsIDB4NzgsCisweDBFLCAweDQ0LCAweDJCLCAweDEwLCAweEUxLCAweDIwLCAweEFDLCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLAorMHhGMSwgMHgwMCwgMHg4NCwgMHgxMywgMHg1MCwgMHg0RSwgMHg0NCwgMHgzOSwgMHgwMCwgMHhGMSwgMHgwMCwgMHhDNCwgMHgwMywKKzB4MTAsIDB4MEUsIDB4QzAsIDB4M0UsIDB4MDIsIDB4RTEsIDB4MDAsIDB4ODYsIDB4MDMsIDB4RjAsIDB4MEUsIDB4NDAsIDB4M0IsCisweDQwLCAweEU1LCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3RCwgMHgwMCwgMHgyNSwgMHgwMCwgMHg4NCwgMHgwMywgMHg1MCwgMHg4RSwKKzB4NDAsIDB4MEIsIDB4MDAsIDB4QzAsIDB4MjAsIDB4ODQsIDB4MDIsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RTEsCisweDAyLCAweEM0LCAweDAzLCAweDEyLCAweDBFLCAweDYwLCAweDM4LCAweDAwLCAweEU1LCAweDAwLCAweDg0LCAweDAzLCAweDEwLAorMHgwRSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhFMSwgMHgwMCwgMHhENCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHgzRiwgMHg0MCwKKzB4RUQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDMzLCAweDAwLCAweDQxLCAweDAzLCAweDA1LCAweDFCLCAweDUwLCAweDBDLCAweDQwLAorMHg0MywgMHg0MCwgMHhDMSwgMHgwMiwgMHgyNCwgMHgwMiwgMHgxMCwgMHgwQywgMHg0MCwgMHgxMywgMHgwMCwgMHhDMSwgMHg0MSwKKzB4MDQsIDB4MDMsIDB4NTEsIDB4MEMsIDB4NjAsIDB4MzEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDUsIDB4MDMsIDB4MTAsIDB4MEMsCisweDQwLCAweDMzLCAweDAwLCAweDQxLCAweDAwLCAweDA0LCAweDBCLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAyLCAweDhELAorMHg0MiwgMHgzNCwgMHgwMywgMHgxNCwgMHgwQywgMHg1MCwgMHgxOCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4QTgsIDB4QjUsIDB4NDIsIDB4RDcsIDB4MDYsIDB4MEMsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MjcsCisweDA0LCAweEQzLCAweDAwLCAweDRDLCAweDAyLCAweDM0LCAweDBELCAweEMwLCAweDNGLCAweDQwLCAweEYxLCAweDAxLCAweDBDLAorMHgwNywgMHgzMCwgMHhBQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhGNywgMHgwMCwgMHhDQywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwKKzB4M0QsIDB4MDAsIDB4RDMsIDB4MDAsIDB4REMsIDB4MjMsIDB4NzAsIDB4MEQsIDB4NDAsIDB4RjcsIDB4NDIsIDB4REYsIDB4MDIsCisweEZDLCAweDAzLCAweDMwLCAweDA5LCAweEMwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgxMCwgMHg3QywgMHgwMywgMHg3MCwgMHgwRCwgMHhDMCwgMHhBNywgMHgwMCwKKzB4REYsIDB4MDEsIDB4NUMsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDgsIDB4NUMsIDB4NjMsCisweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM2LAorMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhENywgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MDcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsCisweDA4LCAweDNGLCAweDAwLCAweDMzLCAweDAwLCAweEZDLCAweDAzLCAweDMwLCAweDBGLCAweEMwLCAweDA3LCAweDAwLCAweEY3LAorMHgxMCwgMHhGQywgMHgwMiwgMHgzMCwgMHg1RiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHgzMCwKKzB4OUIsIDB4QzAsIDB4MzQsIDB4MDAsIDB4RTMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4MzAsIDB4MUQsIDB4QzAsIDB4M0YsIDB4MDAsCisweEIzLCAweDAxLCAweEZFLCAweDAzLCAweEYwLCAweDBGLCAweENBLCAweEJGLCAweDAwLCAweEZFLCAweDEwLCAweEY0LCAweDAzLAorMHgzMCwgMHg1QSwgMHg4MCwgMHgwMCwgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwKKzB4MzYsIDB4MDAsIDB4OTUsIDB4MDAsIDB4NzQsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDAsIDB4QzcsIDB4MDQsIDB4RDEsIDB4MDAsCisweDc0LCAweDI2LCAweDEwLCAweDFELCAweDQwLCAweDA3LCAweDAwLCAweEQ5LCAweDAwLCAweDc0LCAweDAzLCAweDEwLCAweDFELAorMHg1MCwgMHgzNSwgMHgwMCwgMHhEQiwgMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHg5MSwKKzB4MDMsIDB4NzYsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MjAsIDB4REQsIDB4MDksIDB4NzQsIDB4MDMsIDB4MTAsCisweDA5LCAweEMwLCAweDA1LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDMyLAorMHgwMCwgMHhEMSwgMHgwMSwgMHg3NCwgMHgyMywgMHgxMCwgMHgwRCwgMHg0MCwgMHg2MywgMHgwMCwgMHhENSwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4MTAsIDB4MDksIDB4NDAsIDB4MzcsIDB4MDIsIDB4REQsIDB4MDAsIDB4NzYsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDAsCisweDc0LCAweDIwLCAweEQxLCAweDAwLCAweDA0LCAweDAzLCAweDEwLCAweDRELCAweDQwLCAweDMzLCAweDI4LCAweEQxLCAweDA0LAorMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHgyNCwgMHgwMywgMHgwMCwgMHgwOSwKKzB4NDAsIDB4MDUsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MzAsIDB4MDAsCisweDA1LCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDAzLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDAzLAorMHgxMCwgMHgwOCwgMHg0MCwgMHgzMywgMHgwMCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMCwKKzB4MDAsIDB4QzksIDB4MDAsIDB4MDUsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENDLCAweDAwLCAweDM0LCAweDIzLCAweDEwLCAweDA4LCAweDQwLAorMHg0MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgzRSwgMHgwMCwgMHgwMywKKzB4MDAsIDB4N0MsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4RDcsIDB4MDAsIDB4RkMsIDB4MDIsIDB4MTQsCisweDA5LCAweEMwLCAweDIzLCAweDEwLCAweEZGLCAweDAwLCAweDdDLCAweDAzLCAweDM0LCAweDBELCAweEMwLCAweDM0LCAweDAwLAorMHhGMywgMHgwMCwgMHhDQywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzRiwgMHgwMCwgMHhDMywgMHgyMCwgMHg3NCwgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4MzAsIDB4MDksIDB4QzAsIDB4MDEsCisweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDNGLCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwKKzB4ODAsIDB4MEYsIDB4MDAsIDB4RkEsIDB4MDAsIDB4QkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsCisweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweDgwLCAweDNGLCAweDA4LCAweEZGLCAweDAwLCAweEIwLCAweDAzLCAweEYwLAorMHgwRiwgMHhDOCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgxMywgMHhGMCwgMHgwQiwgMHhDMCwgMHgxNSwgMHg2MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4N0YsIDB4MDAsIDB4QkYsIDB4OEMsIDB4Q0MsCisweDEyLCAweDMyLCAweENGLCAweEMwLCAweDVFLCAweDIyLCAweEIzLCAweDIxLCAweEZDLCAweDA2LCAweEYwLCAweENGLCAweEM0LAorMHgzRCwgMHgwMywgMHgyMywgMHgwMSwgMHhGQywgMHgyMywgMHhGMCwgMHgxMywgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHg0QywKKzB4Q0MsIDB4MDYsIDB4QjAsIDB4MTcsIDB4RDgsIDB4NUMsIDB4MDAsIDB4RjcsIDB4MDQsIDB4QUMsIDB4MDQsIDB4QjAsIDB4NEYsCisweEMxLCAweDdBLCAweDA4LCAweDNGLCAweDAxLCAweERDLCAweDMwLCAweEIwLCAweDFCLCAweEM0LCAweDBGLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwgMHg3NywgMHgwMCwgMHhERCwgMHgwRSwgMHg0NCwgMHgyNiwKKzB4MTAsIDB4RUYsIDB4NDAsIDB4MjQsIDB4MDEsIDB4RDEsIDB4MDQsIDB4NzQsIDB4MDUsIDB4NzAsIDB4MkYsIDB4NDAsIDB4QkMsCisweDAyLCAweDkxLCAweDAxLCAweEY0LCAweDFCLCAweDkwLCAweDQwLCAweDQwLCAweEZGLCAweDAyLCAweEZELCAweDA4LCAweDQ0LAorMHhDMywgMHgxMCwgMHgxOSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhGMSwgMHgwMSwgMHg0NCwgMHgwNSwgMHgxMCwgMHgzRiwgMHg0MCwKKzB4NzQsIDB4MTAsIDB4MUQsIDB4QTEsIDB4MzQsIDB4MzgsIDB4QjAsIDB4MUMsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLCAweDAwLCAweDhELCAweDA0LCAweDA0LCAweDAyLCAweDEwLAorMHg0QywgMHg0MCwgMHgzMiwgMHgwMCwgMHhDMSwgMHgxMCwgMHgxNCwgMHgwMiwgMHhEMCwgMHg2QywgMHg0OCwgMHgzMywgMHgxMSwKKzB4NDUsIDB4MDAsIDB4MzQsIDB4MEIsIDB4RDAsIDB4MDAsIDB4NDEsIDB4MzMsIDB4MTAsIDB4QzUsIDB4NDQsIDB4MDQsIDB4MTMsCisweDkwLCAweDA4LCAweDQwLCAweDAwLCAweDA1LCAweEM5LCAweDA4LCAweDY0LCAweDAxLCAweEQwLCAweDBDLCAweDQwLCAweDMwLAorMHgyMCwgMHgwNSwgMHgwMCwgMHgxNCwgMHgwMCwgMHhEMCwgMHgwNCwgMHg0MCwgMHg0NywgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4MDAsIDB4REQsIDB4MjAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MEQsCisweDQwLCAweEE0LCAweDBBLCAweEQxLCAweDA0LCAweDc0LCAweDAxLCAweDUwLCAweDBELCAweDQwLCAweDM0LCAweDQwLCAweDk1LAorMHgwMiwgMHg3NCwgMHgwMywgMHhEMSwgMHgxOSwgMHg0MiwgMHgzNywgMHgwMCwgMHhDRCwgMHgwMCwgMHg0NCwgMHgwMywgMHg5MCwKKzB4MDgsIDB4NDAsIDB4QjQsIDB4MDEsIDB4RDksIDB4MDAsIDB4NjQsIDB4MDUsIDB4RDAsIDB4MEQsIDB4NTAsIDB4MzYsIDB4MDQsCisweDFELCAweDE4LCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQwLCAweDBGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwOSwgMHgwQywgMHgwMywgMHgzNCwgMHgwRCwgMHhDMCwKKzB4RDYsIDB4MDgsIDB4OTMsIDB4MDEsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MTAsIDB4RDcsIDB4MDksCisweDdDLCAweDAzLCAweEYwLCAweDIxLCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDRDLCAweDgzLCAweEIxLCAweDI1LAorMHhDOSwgMHgzNCwgMHg0MCwgMHhEQiwgMHgwMCwgMHg2QywgMHgxNywgMHhGMCwgMHgwRCwgMHhDMCwgMHhBNiwgMHgwMCwgMHgxRiwKKzB4MDIsIDB4NUMsIDB4MTYsIDB4RjAsIDB4MzksIDB4QzAsIDB4MDMsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA3LCAweDgwLCAweDNELCAweDAwLCAweEVGLCAweEMxLCAweDdDLCAweDAyLCAweEYyLCAweDBFLCAweEMwLCAweDZGLAorMHgwMCwgMHhGRiwgMHg4MCwgMHhGQywgMHg4RCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzQiwgMHgwMCwgMHhCQiwgMHgwMCwgMHhGQywKKzB4MDMsIDB4QjAsIDB4MEYsIDB4QzgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MTAsIDB4REQsIDB4ODMsIDB4NzAsIDB4MEIsIDB4QzAsCisweDNGLCAweDAwLCAweEY3LCAweDAwLCAweERDLCAweDAzLCAweDMwLCAweDBGLCAweEMwLCAweDNELCAweDAwLCAweDNGLCAweDAxLAorMHhGQywgMHgwRSwgMHhCNCwgMHgyRiwgMHhDMCwgMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDgsIDB4MzUsIDB4MDEsIDB4OTMsIDB4NDAsIDB4N0MsIDB4MDMsIDB4MzAsIDB4OEQsIDB4QzAsIDB4MzUsIDB4MDgsCisweERGLCAweDAwLCAweDRDLCAweDBCLCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDg4LCAweERGLCAweDAwLCAweDVDLCAweDAzLAorMHg3MCwgMHgyNSwgMHhDMCwgMHgzNCwgMHgwOCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgyRCwgMHhFMiwgMHgyNywKKzB4MDAsIDB4REYsIDB4MDQsIDB4N0MsIDB4MDksIDB4RjAsIDB4MEQsIDB4QzEsIDB4MjUsIDB4MDAsIDB4NTcsIDB4MDAsIDB4NUMsCisweDAyLCAweDMwLCAweDA1LCAweEMwLCAweDA4LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLAorMHhBMCwgMHgzNCwgMHgwMCwgMHhEMSwgMHgwNSwgMHg3NCwgMHg4MywgMHgxOCwgMHgxRiwgMHg0MCwgMHgyNCwgMHgwMCwgMHhERCwKKzB4MTAsIDB4NDQsIDB4ODEsIDB4RDAsIDB4MEYsIDB4QzAsIDB4M0UsIDB4ODgsIDB4OUYsIDB4MDAsIDB4QzQsIDB4MDMsIDB4MTAsCisweDBELCAweDQyLCAweDNDLCAweDAwLCAweEZELCAweDAwLCAweDc0LCAweDAzLCAweEIwLCAweDA5LCAweDQwLCAweDc3LCAweDAwLAorMHhFRCwgMHgwMCwgMHgzNiwgMHgwNSwgMHgxMCwgMHg2RSwgMHg0MCwgMHhCNCwgMHgwMiwgMHgxQiwgMHgxMSwgMHg0QywgMHgwMywKKzB4NDAsIDB4MDUsIDB4QzAsIDB4NEUsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsCisweEIyLCAweDAyLCAweDgxLCAweDAwLCAweDM0LCAweDgyLCAweDEwLCAweDFDLCAweDQwLCAweDY1LCAweDAyLCAweENELCAweDAxLAorMHgwNCwgMHg4MSwgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgwOCwgMHgwRCwgMHgwMCwgMHgxNCwgMHgwMywgMHg1MiwgMHgwMCwKKzB4NDIsIDB4MzIsIDB4MjAsIDB4Q0QsIDB4NDMsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NjcsIDB4MDIsIDB4Q0QsCisweDAzLCAweDI0LCAweDAzLCAweDU4LCAweDBDLCAweDQ0LCAweDMxLCAweDA4LCAweDA1LCAweDAxLCAweDU0LCAweDExLCAweDEwLAorMHgwNCwgMHg0MCwgMHgxQywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHg3OCwKKzB4MDAsIDB4QTEsIDB4MDEsIDB4QjQsIDB4MDYsIDB4MTAsIDB4MUMsIDB4NDAsIDB4NjgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4ODQsCisweDA1LCAweEQwLCAweDFFLCAweDQ4LCAweDdBLCAweDAwLCAweDM1LCAweDAxLCAweDg0LCAweDI3LCAweDEwLCAweDk2LCAweDUwLAorMHg3QSwgMHgwMCwgMHhFRCwgMHgxOSwgMHhCNCwgMHgwMywgMHgxMCwgMHgxQSwgMHg0MCwgMHg2QiwgMHgwMCwgMHhFRCwgMHgwMSwKKzB4RjQsIDB4MDUsIDB4MTksIDB4MUMsIDB4NDAsIDB4N0MsIDB4MDAsIDB4MzksIDB4ODEsIDB4QTQsIDB4MjQsIDB4MTAsIDB4MUUsCisweDQwLCAweDFBLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLAorMHhDMywgMHgwNCwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwQywgMHhDMCwgMHgzMSwgMHgwMCwgMHhERiwgMHgwMCwgMHgwRCwgMHgwMSwKKzB4RjgsIDB4MEQsIDB4QzAsIDB4MzAsIDB4MDIsIDB4NEQsIDB4MDAsIDB4NUMsIDB4MDcsIDB4NzAsIDB4MkMsIDB4QzAsIDB4MzIsCisweDAyLCAweENGLCAweDAwLCAweDdDLCAweDIzLCAweDEwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweENGLCAweDE0LCAweDM0LAorMHg0MywgMHg3MCwgMHgwQywgMHhDMCwgMHgzMSwgMHgwMCwgMHhDNywgMHgwMCwgMHgxRSwgMHgwMywgMHgzNCwgMHgwNCwgMHhDMiwKKzB4NDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4MzksIDB4NDIsIDB4RkYsCisweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDJGLCAweEMxLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAxLCAweEYwLAorMHgwRiwgMHg4MSwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHg3QywgMHgyQiwgMHhCMCwgMHgwRiwgMHhDMCwgMHgzRCwgMHgwNCwKKzB4RkYsIDB4MTAsIDB4RjQsIDB4MTMsIDB4RjAsIDB4MDksIDB4QzAsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MTAsIDB4N0MsIDB4MjEsCisweDcwLCAweDBGLCAweEMwLCAweDFGLCAweDEwLCAweEVGLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDA3LCAweEMwLCAweDBCLAorMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMCwKKzB4NEMsIDB4MDMsIDB4RjAsIDB4NkQsIDB4QzAsIDB4MjcsIDB4MTAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MEQsCisweEMwLCAweDM3LCAweDA1LCAweDU3LCAweDAwLCAweDVDLCAweDM3LCAweDM0LCAweDA4LCAweEMwLCAweDM2LCAweDAxLCAweERGLAorMHgxMiwgMHg0RCwgMHgwMywgMHg3MCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMiwKKzB4NEMsIDB4QzEsIDB4NjYsIDB4MDAsIDB4OUIsIDB4MDEsIDB4NEMsIDB4MDEsIDB4QjAsIDB4MDUsIDB4QzAsIDB4NTcsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDM5LCAweDAwLCAweEJELCAweDA0LCAweDg1LAorMHgwQSwgMHhEMCwgMHgwRSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMSwgMHgxMCwgMHg4RSwgMHg0MCwKKzB4M0IsIDB4MDEsIDB4NkQsIDB4MDAsIDB4OUMsIDB4MTMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDMsIDB4RTcsIDB4MDQsCisweDg0LCAweDAzLCAweEQwLCAweDBBLCAweDQwLCAweDJCLCAweDA4LCAweEVELCAweDE0LCAweEI0LCAweDAzLCAweDcwLCAweDRFLAorMHhDMiwgMHgzQSwgMHg0MCwgMHgyMywgMHgwMCwgMHg4NSwgMHgwMCwgMHhCMCwgMHgwRSwgMHg0MCwgMHg0QiwgMHgyMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NzksIDB4MDAsIDB4RUQsIDB4MDksIDB4QTQsIDB4MTcsCisweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweDkwLCAweDVFLCAweDQwLCAweDdCLAorMHgwMiwgMHhFRCwgMHgzMSwgMHgxNiwgMHgwNywgMHgxMCwgMHgxRiwgMHg0MiwgMHg3QSwgMHgwMCwgMHhFNSwgMHgwMSwgMHg4NCwKKzB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4NkIsIDB4MDAsIDB4RUQsIDB4MDUsIDB4QjQsIDB4MDcsIDB4NTAsIDB4REUsIDB4NDAsCisweDY5LCAweDAwLCAweEU5LCAweDgxLCAweDg0LCAweDg3LCAweDkwLCAweDE2LCAweDQwLCAweDBGLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4MjMsIDB4MjAsIDB4REQsIDB4NDAsIDB4MzQsIDB4NDUsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzcsIDB4MDgsCisweENELCAweDA2LCAweDE0LCAweDAzLCAweDEwLCAweEJDLCAweDQwLCAweDMwLCAweDAwLCAweEQ1LCAweDIwLCAweDA0LCAweDA3LAorMHhEMCwgMHgxOCwgMHg0MCwgMHgyMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMSwgMHg1MCwgMHgwQywgMHg0MCwgMHg1MywKKzB4MzAsIDB4QzEsIDB4MDgsIDB4MDQsIDB4MEIsIDB4OTAsIDB4MDQsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDg4LCAweDE1LCAweDAwLCAweDVGLCAweDAwLCAweDZDLCAweDQxLCAweEYwLCAweDA1LAorMHhDMCwgMHgxRiwgMHgwMCwgMHg1RiwgMHgwMCwgMHhCQywgMHg0RCwgMHhCMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg2RiwKKzB4MDEsIDB4NUMsIDB4MDEsIDB4MzAsIDB4MzcsIDB4QzAsIDB4MTYsIDB4MDAsIDB4NTcsIDB4ODAsIDB4NEMsIDB4OTEsIDB4RjAsCisweDQ3LCAweEMwLCAweDlGLCAweDAwLCAweDVGLCAweDAwLCAweEJDLCAweDE1LCAweDcwLCAweDA0LCAweEMwLCAweDVELCAweDBDLAorMHg3QiwgMHgwMywgMHhDQywgMHgwOSwgMHhBMCwgMHgwNywgMHhDMCwgMHg1RiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA3LCAweDAwLCAweDFGLCAweDQwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMSwgMHgwNywgMHgwMCwgMHgxNywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4MEYsIDB4MDIsIDB4N0MsIDB4NDAsIDB4NzAsIDB4MjEsIDB4ODAsIDB4ODYsIDB4MDAsIDB4MTcsCisweDEyLCAweDNDLCAweDEwLCAweEYwLCAweDAxLCAweEMwLCAweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywgMHgwOCwgMHg4RiwgMHg0MCwgMHg0RCwgMHgxNiwgMHhGMCwgMHg5OSwgMHhDMCwgMHhFNywKKzB4MDAsIDB4OTMsIDB4MDksIDB4NEQsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4NUMsCisweDAyLCAweEYwLCAweDI5LCAweEMwLCAweDIzLCAweDAwLCAweDk3LCAweDAwLCAweDVDLCAweDAyLCAweDM0LCAweDA5LCAweEMwLAorMHg2NCwgMHgwNiwgMHg5MywgMHgwMywgMHg1QywgMHhBMiwgMHg3MSwgMHg5OSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMSwKKzB4N0MsIDB4MDYsIDB4MzAsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDIwLCAweEE2LCAweDAwLCAweEJELCAweDQwLCAweEM0LCAweDA2LCAweDcwLCAweDA5LCAweDQwLCAweDYzLCAweDAwLAorMHg5MSwgMHgwMSwgMHg0NCwgMHgwMiwgMHgxOCwgMHgwOSwgMHg0NCwgMHgyNywgMHgwMCwgMHg5OSwgMHgwMCwgMHg0NCwgMHgwMiwKKzB4RDAsIDB4MjgsIDB4NDAsIDB4MjQsIDB4MDgsIDB4OTMsIDB4MjAsIDB4MDQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NDAsIDB4NjAsCisweDAwLCAweDkxLCAweDA0LCAweDQ0LCAweDRFLCAweDEwLCAweDA5LCAweDUwLCAweDI1LCAweDEwLCAweDlELCAweDA2LCAweDc0LAorMHgwNiwgMHg1MCwgMHgwOSwgMHg0MiwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKzB4QTAsIDB4MjQsIDB4MTAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsCisweDgwLCAweDQ0LCAweDAzLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDU0LCAweDAyLCAweEQwLAorMHgyOSwgMHg0MCwgMHgyNSwgMHgwMCwgMHg5NSwgMHgwMCwgMHg1NCwgMHgwMiwgMHg5MCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwKKzB4OTEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4NTAsIDB4MjksIDB4NDAsIDB4MjQsIDB4MzAsIDB4OUQsIDB4MDgsIDB4NzQsIDB4NTIsCisweDEwLCAweDBELCAweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIyLAorMHgzMCwgMHgwMCwgMHg4RCwgMHgwMiwgMHgwNCwgMHgwMiwgMHg1OCwgMHg2OCwgMHg0MCwgMHhBNywgMHgwMCwgMHg4MSwgMHgwMiwKKzB4NDQsIDB4MEEsIDB4MTAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDQsIDB4MjIsIDB4RDAsIDB4ODksCisweDQwLCAweDIwLCAweDAwLCAweDg5LCAweDA4LCAweDQ0LCAweDIyLCAweDkwLCAweDI5LCAweDQwLCAweEE0LCAweDAwLCAweDgxLAorMHgwMCwgMHgwNCwgMHgwMiwgMHgxMiwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgyMiwgMHg1NCwKKzB4MjgsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4MzAsIDB4MDYsCisweDAwLCAweDFGLCAweDAxLCAweDRDLCAweDA0LCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDQwLCAweDEzLCAweDAwLCAweDBDLAorMHgwMCwgMHgxNCwgMHg2MSwgMHhDMSwgMHg4NywgMHgwRCwgMHgxNywgMHgwMCwgMHg1QywgMHg1OCwgMHhGMSwgMHgyMSwgMHhDMCwKKzB4MDUsIDB4MDUsIDB4MDcsIDB4MTYsIDB4NUMsIDB4ODgsIDB4MzAsIDB4MDEsIDB4RDAsIDB4MDQsIDB4NDAsIDB4MTMsIDB4NTQsCisweDVDLCAweDgwLCAweDc4LCAweDQxLCAweEMxLCAweDE0LCAweDEwLCAweDFGLCAweDAwLCAweDNDLCAweDU4LCAweDMwLCAweDAxLAorMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgzOCwgMHgyNywgMHgwOCwKKzB4QkYsIDB4MDMsIDB4RkMsIDB4MEEsIDB4RjAsIDB4OTksIDB4QzAsIDB4NkYsIDB4MDgsIDB4QkYsIDB4MDEsIDB4RkMsIDB4MDYsCisweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDA5LCAweEI3LCAweDAwLCAweDdDLCAweDEyLCAweEYwLCAweDRCLCAweEMyLCAweDI1LAorMHgwMCwgMHg5NywgMHgwNCwgMHhGQywgMHgxMiwgMHg3MCwgMHgxQiwgMHhDMCwgMHg2RiwgMHgzMCwgMHg5RiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjgsIDB4MDksIDB4RDIsIDB4MkIsIDB4ODAsIDB4QUYsIDB4MDAsIDB4RkMsIDB4MTIsIDB4RjAsIDB4MUIsIDB4QzAsCisweDY3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDJCLCAweDAwLCAweEJGLAorMHgxMywgMHhGQywgMHg0NiwgMHhGMCwgMHgwQiwgMHhDMCwgMHhBQywgMHgwMCwgMHhCRiwgMHgwMCwgMHg3QywgMHgwQSwgMHgzMCwKKzB4QzksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUIsIDB4MDAsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MjQsIDB4MDUsCisweEJGLCAweDBDLCAweDQ5LCAweDAyLCAweEYyLCAweDI5LCAweEMyLCAweEFGLCAweDAwLCAweEFGLCAweDA0LCAweEZDLCAweDAyLAorMHhGMCwgMHg0QiwgMHhDMCwgMHgyQywgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMiwgMHhCMCwgMHgwOSwgMHhDMCwgMHg2NywKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDcsCisweDc0LCAweDg4LCAweEQwLCAweDUxLCAweDQwLCAweDQ0LCAweDIwLCAweDFELCAweDA1LCAweDc0LCAweDA0LCAweDEwLCAweEMxLAorMHg0OCwgMHg4NCwgMHgwNCwgMHgxMSwgMHgwMCwgMHg3NCwgMHgyMCwgMHhEMCwgMHg0NSwgMHg1MywgMHgwNCwgMHgwMCwgMHgxRCwKKzB4MEMsIDB4NDQsIDB4NDAsIDB4RDAsIDB4MTQsIDB4NDAsIDB4NDcsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsCisweDgxLCAweDQwLCAweDE0LCAweDIwLCAweDVELCAweDIwLCAweDc0LCAweDIwLCAweDE0LCAweDExLCAweDQwLCAweDczLCAweDIwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwNCwgMHgzNCwKKzB4MDIsIDB4RDAsIDB4ODgsIDB4NDEsIDB4MjAsIDB4MDAsIDB4OEQsIDB4MTAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4NDgsIDB4NDAsCisweDIyLCAweDAzLCAweDg5LCAweDAwLCAweDM0LCAweDAyLCAweEQxLCAweDQ4LCAweDQwLCAweDIwLCAweDAwLCAweDhELCAweDA0LAorMHgyNiwgMHgxMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgxMCwgMHg4RCwgMHgwOCwgMHgzNCwgMHgwMiwgMHhEQywgMHgwOCwKKzB4NDAsIDB4MjAsIDB4MTAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4OTQsIDB4NDgsIDB4NDEsIDB4NDMsIDB4ODAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LCAweDI1LCAweDAwLCAweDlELCAweDIwLCAweDc0LCAweDgyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwNCwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyMCwKKzB4MDAsIDB4OTEsIDB4MTAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4ODgsIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NjYsCisweDgyLCAweEQwLCAweDg5LCAweDY2LCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDUxLCAweDA5LCAweDU4LAorMHgyNCwgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgyQSwgMHgxMCwgMHg2OSwgMHg0MCwgMHg2MywgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjgsIDB4MjUsIDB4MDAsIDB4QkYsIDB4MDEsIDB4N0MsIDB4MDYsIDB4RjAsCisweDBCLCAweEQwLCAweDJDLCAweDAzLCAweEJGLCAweDAwLCAweEZDLCAweDAyLCAweDEwLCAweDA5LCAweEMwLCAweDI2LCAweDAwLAorMHg5QiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgzOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHg4MCwgMHg2NCwgMHgyMiwKKzB4RjAsIDB4M0IsIDB4QzAsIDB4MkYsIDB4MDgsIDB4OUQsIDB4MDAsIDB4MzQsIDB4NEEsIDB4RjAsIDB4MDksIDB4NDAsIDB4QTQsCisweDAwLCAweDlGLCAweDAzLCAweDcwLCAweDA2LCAweEIwLCAweDNCLCAweEM0LCAweDE3LCAweEEwLCAweDA0LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwNCwgMHg3QywgMHgxMiwgMHhGMCwgMHgwOSwKKzB4QzQsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjQsIDB4MDgsIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsCisweDA0LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDQwLCAweDVDLCAweDA2LCAweEY4LAorMHgxOSwgMHhDMiwgMHgyNywgMHgwMSwgMHg5RiwgMHgwMCwgMHg3QywgMHgyMiwgMHhCMCwgMHgwOSwgMHgwNSwgMHgyNywgMHg4MCwKKzB4OUUsIDB4MTAsIDB4NkMsIDB4MDYsIDB4RjAsIDB4MTksIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDQwLCAweDdDLCAweDAwLCAweEI0LCAweDgxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwOCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxMywgMHgwMiwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4QTEsIDB4RDAsIDB4MDQsIDB4MDAsIDB4MDMsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjIsIDB4MjEsCisweEMwLCAweDA0LCAweDIwLCAweDEzLCAweDEwLCAweDVDLCAweDk4LCAweEYwLCAweDAxLCAweEQwLCAweDg0LCAweDAwLCAweDFGLAorMHg0MiwgMHgyQywgMHgwMCwgMHgzNCwgMHgyMSwgMHhEMCwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTQsIDB4QTAsIDB4MUMsIDB4MDEsIDB4NTEsIDB4MDEsIDB4RjQsIDB4MUQsIDB4MTAsIDB4MTUsIDB4NDAsIDB4MTcsCisweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQwLCAweDE0LCAweDAwLCAweDUxLCAweDAwLCAweDc0LAorMHgwMSwgMHhEMCwgMHg5NywgMHhDMCwgMHgxNCwgMHgwMCwgMHg3MSwgMHgwMywgMHg0NCwgMHgwMSwgMHg3MCwgMHgwNSwgMHg0MCwKKzB4MTQsIDB4MDAsIDB4NzEsIDB4MDEsIDB4QzQsIDB4MDUsIDB4RDAsIDB4MTYsIDB4NDIsIDB4MUMsIDB4MDAsIDB4N0QsIDB4MDAsCisweEY0LCAweDAxLCAweDE0LCAweDA1LCAweDQwLCAweDUwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxNCwgMHhBMCwgMHg2MiwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgxRSwgMHgxMCwgMHgwRCwgMHg0OCwgMHgzMywgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzEsIDB4QzAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsCisweEQwLCAweDJDLCAweDQwLCAweDMyLCAweDQwLCAweEMxLCAweDExLCAweDE0LCAweDAzLCAweDUwLCAweDBDLCAweDQwLCAweDMyLAorMHgwMiwgMHg4MSwgMHgwMCwgMHgxNCwgMHgwNSwgMHg5MCwgMHgxOCwgMHg0MCwgMHg2MCwgMHgwMSwgMHhDOSwgMHgwMiwgMHgyNCwKKzB4MDMsIDB4MTQsIDB4MEMsIDB4NjAsIDB4NTAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDgwLCAweDY4LCAweDAwLCAweEExLCAweDA2LCAweEI0LCAweDA2LCAweDEwLCAweDhFLCAweDQwLCAweDNCLCAweDAxLCAweEFELAorMHgwNCwgMHhCNCwgMHgxMywgMHhEMCwgMHg4RSwgMHg0MCwgMHgzOCwgMHg4MSwgMHhFMSwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMCwKKzB4MEUsIDB4NDAsIDB4NzgsIDB4MDAsIDB4QzEsIDB4MTAsIDB4ODQsIDB4MTMsIDB4NTAsIDB4NUUsIDB4NDAsIDB4N0EsIDB4MTEsCisweEExLCAweDExLCAweDg2LCAweDA5LCAweEQwLCAweDJDLCAweDQyLCAweEE4LCAweDAwLCAweEVELCAweDAwLCAweDM0LCAweDBCLAorMHgxMCwgMHg1RiwgMHg2MCwgMHgxNCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwKKzB4NjgsIDB4MDAsIDB4RTMsIDB4MDcsIDB4QkMsIDB4MDYsIDB4MzAsIDB4NUEsIDB4QzAsIDB4RUIsIDB4MDAsIDB4RUYsIDB4MDMsCisweEI0LCAweDBGLCAweEYwLCAweDFDLCAweEMwLCAweEYxLCAweDAwLCAweEUxLCAweDAxLCAweEJDLCAweDE3LCAweEYwLCAweDE3LAorMHhDNCwgMHg3MiwgMHgwMCwgMHhFMywgMHgwMSwgMHg5QywgMHgxNywgMHg3MCwgMHgzRSwgMHhDOCwgMHhGRSwgMHg0MCwgMHhFMywKKzB4MDEsIDB4OUMsIDB4MDUsIDB4QjAsIDB4MUEsIDB4QzAsIDB4NjgsIDB4MDgsIDB4RUQsIDB4MDEsIDB4QUMsIDB4MDUsIDB4MzAsCisweDNFLCAweEMwLCAweDU0LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDI1LAorMHg1MCwgMHg5RiwgMHgwMCwgMHgzQywgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHg4MCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MEQsIDB4QzIsIDB4QjcsIDB4MEQsIDB4REYsIDB4MDAsIDB4N0MsIDB4NEIsIDB4RjAsIDB4MDUsIDB4QzAsCisweDM3LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDIzLCAweDcyLCAweDBELCAweEQwLCAweDI1LCAweDAwLCAweERGLCAweDAwLAorMHg3RSwgMHgwMSwgMHhGMCwgMHgwOSwgMHhDNCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGNCwgMHgwQywKKzB4QzAsIDB4NDMsIDB4NDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTAsIDB4NkYsIDB4MDAsCisweEZGLCAweDA5LCAweENDLCAweDEzLCAweDMwLCAweDFGLCAweEMwLCAweDdCLCAweDAwLCAweEYzLCAweDAxLCAweENDLCAweDI3LAorMHgzMCwgMHg1RiwgMHg4MCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHg0NywgMHgzMCwgMHgxQiwgMHhDMCwgMHg3QywKKzB4MDAsIDB4QkYsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MUUsIDB4QzAsIDB4NjgsIDB4MEEsIDB4QjEsIDB4MEMsIDB4RkMsCisweDI1LCAweEYwLCAweDFGLCAweEMwLCAweDc4LCAweDQyLCAweEYzLCAweDAxLCAweEZDLCAweDA2LCAweEYwLCAweDFGLCAweEM0LAorMHgwOCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg4MCwgMHgyOSwgMHgwMCwgMHhCRCwKKzB4MTgsIDB4ODQsIDB4NDMsIDB4MTEsIDB4MEEsIDB4NDgsIDB4M0IsIDB4MDAsIDB4QTEsIDB4MTAsIDB4ODQsIDB4MjMsIDB4MTAsCisweDBFLCAweDQ4LCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDhCLCAweDQxLCAweDM4LCAweDAwLAorMHg3RCwgMHgwMCwgMHg5NCwgMHgwMywgMHhEMCwgMHg0RSwgMHg0MCwgMHgzOCwgMHgwMywgMHhBMSwgMHgwNCwgMHhCNCwgMHgwOSwKKzB4RDAsIDB4OEUsIDB4NDAsIDB4MTksIDB4MDIsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MEEsIDB4RjAsIDB4OEUsIDB4NDAsIDB4NTQsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI5LCAweDAwLCAweEVELCAweDQwLAorMHhBNywgMHgyMiwgMHgxNCwgMHgwQSwgMHg0MCwgMHgyRiwgMHgwNiwgMHhCMSwgMHgwOCwgMHhDNCwgMHgwNywgMHgxMiwgMHg0RSwKKzB4NjAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDIsIDB4QjQsIDB4MDMsIDB4OTAsIDB4MDIsIDB4NTAsIDB4MzgsIDB4MDIsIDB4QUQsCisweDAwLCAweEE0LCAweDAzLCAweEQwLCAweDFGLCAweDQ5LCAweDJDLCAweDA0LCAweEU5LCAweDg4LCAweEI0LCAweDAxLCAweEQwLAorMHgwQSwgMHg0MCwgMHgzOCwgMHg4MCwgMHg2MSwgMHgxMCwgMHhCNCwgMHgwMSwgMHhEMCwgMHgxRiwgMHg0MCwgMHg2MCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjgsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MjQsCisweDA2LCAweDEwLCAweDA5LCAweDQwLCAweDc3LCAweDAwLCAweDgxLCAweDAwLCAweDA0LCAweDIzLCAweDEwLCAweDBDLCAweDYwLAorMHgzMywgMHgwMCwgMHhDRCwgMHgwOCwgMHgzNCwgMHgwMywgMHg5MSwgMHgwMCwgMHg0MSwgMHgzMCwgMHgwMCwgMHg0RCwgMHgwMCwKKzB4MDYsIDB4MDMsIDB4RDIsIDB4M0MsIDB4NDAsIDB4NjAsIDB4MjAsIDB4QzksIDB4MDAsIDB4MzQsIDB4MDksIDB4RDAsIDB4MDgsCisweDQwLCAweDMxLCAweDAyLCAweDAxLCAweDAzLCAweDMwLCAweDA3LCAweDUwLCAweDBDLCAweDYwLCAweDE4LCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMSwgMHg2QywgMHgwMiwKKzB4MzAsIDB4MEQsIDB4NDAsIDB4QjcsIDB4NDIsIDB4RDMsIDB4MjEsIDB4NEQsIDB4MDMsIDB4MTQsIDB4MEYsIDB4QzIsIDB4M0YsCisweDAwLCAweERGLCAweDAwLCAweEY0LCAweDAzLCAweDkwLCAweDFELCAweEMwLCAweDM0LCAweDAwLCAweDVGLCAweDAwLCAweENELAorMHgxNywgMHhGMCwgMHgzRCwgMHhEMCwgMHhGNCwgMHg0MCwgMHg5QSwgMHgwMCwgMHg3QywgMHgwOSwgMHhGMSwgMHgwRCwgMHhDMiwKKzB4RjAsIDB4MDAsIDB4RDEsIDB4MjMsIDB4NzQsIDB4MDcsIDB4RDAsIDB4MkQsIDB4NTAsIDB4NzQsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweEI3LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDAyLCAweEYwLAorMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHg0MywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwKKzB4REYsIDB4MDAsIDB4M0MsIDB4MDMsIDB4NzIsIDB4MkQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDMsCisweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAxLCAweDk3LCAweDIyLCAweDdDLCAweDBELCAweEUwLCAweDBELCAweEMwLCAweEI3LAorMHgwNCwgMHhERiwgMHgyMCwgMHg3QywgMHgyMSwgMHhGMCwgMHhDRCwgMHhDMCwgMHgwNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4N0YsIDB4MDIsIDB4RkYsIDB4MDAsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MEIsCisweEQwLCAweDJDLCAweDAwLCAweEYzLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNFLCAweDAwLCAweEZGLAorMHgwMCwgMHhEQywgMHgwMywgMHgzMCwgMHg5QiwgMHhDMCwgMHgzRiwgMHgwMCwgMHg3RiwgMHgwMSwgMHhFRSwgMHgwMywgMHhGMCwKKzB4MEYsIDB4QzEsIDB4M0YsIDB4MDAsIDB4RUYsIDB4MDUsIDB4Q0MsIDB4NDEsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0QsIDB4MDAsCisweEZCLCAweDEwLCAweDhDLCAweDEwLCAweDMwLCAweDBGLCAweEMwLCAweDA3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHhENiwgMHgwMCwgMHhERCwgMHgwOSwgMHg3NCwgMHgwQSwgMHhEMCwgMHgwRCwgMHg0MCwKKzB4NjQsIDB4MjIsIDB4RDEsIDB4MjAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsCisweDc0LCAweDAzLCAweDEwLCAweDA5LCAweDQwLCAweDM3LCAweDAwLCAweDlELCAweDAyLCAweDdFLCAweDAzLCAweEQwLCAweDBELAorMHg0MCwgMHgyNywgMHgwMCwgMHhERCwgMHgwNywgMHg0NCwgMHgwNSwgMHhEMCwgMHgzOCwgMHhDOCwgMHg3NiwgMHgwMSwgMHg4OSwKKzB4MDAsIDB4NTQsIDB4MEMsIDB4NTAsIDB4MEQsIDB4NDIsIDB4MDcsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweEEwLCAweDI0LCAweDA0LCAweDlELCAweDAwLCAweDc0LCAweDBCLCAweEQyLCAweDBELCAweDQyLCAweDM0LAorMHg0MCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwKKzB4MDMsIDB4MTAsIDB4MDUsIDB4NDEsIDB4MzcsIDB4ODAsIDB4MUQsIDB4NjYsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsCisweDI3LCAweDAwLCAweDlELCAweDAwLCAweDY0LCAweDA3LCAweEQyLCAweDM1LCAweDQwLCAweDc1LCAweDAwLCAweEQxLCAweDAwLAorMHg0NCwgMHgwMiwgMHgxMSwgMHgwRCwgMHg0MCwgMHgwNywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4MzAsIDB4MDAsIDB4OEQsIDB4MjAsIDB4MzYsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsCisweDgxLCAweDAwLCAweDM0LCAweDAzLCAweEQyLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLAorMHgxOCwgMHgwNCwgMHg0MCwgMHgzMywgMHhBMCwgMHgwRCwgMHgwMCwgMHgxNCwgMHgwMywgMHhEMiwgMHgwQywgMHg0OCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NUEsIDB4MzYsIDB4MDAsIDB4RDEsIDB4MDAsIDB4MTQsCisweDAwLCAweDUwLCAweDBDLCAweDQwLCAweDQyLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgyMCwgMHgyNiwgMHgwMCwgMHg5RiwgMHgyMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwOSwgMHhFOCwgMHgyNCwgMHgwMCwgMHg5MywKKzB4NDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4NDAsIDB4M0YsIDB4MDAsIDB4REYsIDB4MDAsIDB4QkMsIDB4MjMsIDB4MzQsCisweDAxLCAweEMwLCAweDM3LCAweDAwLCAweDFGLCAweDAwLCAweDY0LCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDI3LCAweDAwLAorMHhERiwgMHgwMCwgMHg2QywgMHgwMSwgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNSwgMHg4MCwgMHg1QiwgMHg4MCwgMHg0RSwgMHgwMCwKKzB4MzIsIDB4MEYsIDB4QzgsIDB4MDcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QTgsCisweDFGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEFGLCAweDIwLAorMHhCQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDOCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwMywKKzB4QzAsIDB4M0YsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzIsIDB4MkYsIDB4MDAsIDB4M0YsCisweDAwLCAweERDLCAweDAwLCAweEYwLCAweDBBLCAweEMwLCAweDNGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDgwLCAweEY4LAorMHgwRSwgMHhDMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhCMCwgMHg3RiwKKzB4MDAsIDB4M0YsIDB4MDAsIDB4RUMsIDB4MDcsIDB4NzAsIDB4MDMsIDB4QzAsIDB4N0QsIDB4MDIsIDB4RjMsIDB4MDksIDB4RkMsCisweDEwLCAweEYwLCAweDBCLCAweEMwLCAweDNDLCAweDAxLCAweEJGLCAweDIxLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMxLAorMHgzRiwgMHgwMCwgMHgzRiwgMHgxOCwgMHhDRCwgMHgwMywgMHgzMCwgMHgxRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHhGQiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4RTAsIDB4MEYsIDB4QzAsIDB4NEMsIDB4MDAsIDB4RjMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4MzAsIDB4MEYsCisweEMwLCAweDBDLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDEwLCAweDc3LCAweDAwLAorMHg1RCwgMHgwMSwgMHg0NCwgMHgwNywgMHgxMCwgMHhCMSwgMHg0MCwgMHgzMywgMHgwMCwgMHhDMSwgMHgwNCwgMHg3NCwgMHgwNiwKKzB4RDAsIDB4MjksIDB4NDEsIDB4M0QsIDB4MDAsIDB4REQsIDB4MDEsIDB4RjQsIDB4MDcsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NzcsCisweDAwLCAweDFELCAweDgyLCAweDQ0LCAweDA3LCAweDEwLCAweDJGLCAweDQwLCAweDY3LCAweDAwLCAweDUxLCAweDAxLCAweDc0LAorMHgwNywgMHhEMCwgMHgxNSwgMHg0MCwgMHg0NCwgMHgwMCwgMHg1QiwgMHgwMSwgMHg0NCwgMHgwNSwgMHgxMCwgMHgxRCwgMHg0MCwKKzB4MDQsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MzMsIDB4MDAsIDB4MEQsCisweDA4LCAweDA0LCAweDAzLCAweDUwLCAweDE0LCAweDY4LCAweDMxLCAweDAxLCAweEMxLCAweDAwLCAweDM0LCAweDIwLCAweEQwLAorMHg2QywgMHg0MCwgMHhCMSwgMHgwNCwgMHhDRCwgMHgwMSwgMHgzNCwgMHgyMywgMHhEMCwgMHg0QywgMHg0MSwgMHgzMSwgMHgwMiwKKzB4MEQsIDB4MDUsIDB4MjQsIDB4MDMsIDB4MTAsIDB4MkMsIDB4NDAsIDB4MjMsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MzQsIDB4MDIsCisweDUwLCAweDA4LCAweDQwLCAweDAxLCAweDAwLCAweDg1LCAweDIwLCAweDA0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDQ0LAorMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgzNSwgMHg4MCwgMHg1RCwgMHgxNCwKKzB4NjUsIDB4MDMsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MEQsCisweDQwLCAweDM1LCAweDIwLCAweERELCAweDAxLCAweDc0LCAweDAzLCAweEQxLCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweDFELAorMHgwMCwgMHg2NCwgMHg0MywgMHgxMCwgMHgwRCwgMHg0NCwgMHg2NywgMHgwMCwgMHhENSwgMHgwNiwgMHg3NCwgMHgwMywgMHhEMSwKKzB4MEQsIDB4NTEsIDB4NDUsIDB4NDAsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4OEQsIDB4NDAsIDB4MEMsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDg4LCAweDM3LCAweDAwLCAweDlGLCAweDAxLCAweDZDLAorMHgwNywgMHg3MCwgMHgwMSwgMHhDMCwgMHg3NSwgMHg0MCwgMHhEMywgMHgwMCwgMHg3QywgMHgxMSwgMHhGMCwgMHgwRCwgMHhDMCwKKzB4MzUsIDB4MDAsIDB4REYsIDB4MDEsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4NUYsIDB4MDAsCisweDZDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweEU3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDNELAorMHhDMCwgMHhDMSwgMHg4NCwgMHhENywgMHgwMCwgMHg0QywgMHgwNywgMHgzMCwgMHgwRCwgMHhDMCwgMHgwOCwgMHgyMCwgMHgwRSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsIDB4NkYsIDB4MDAsIDB4REMsIDB4MEIsCisweEYwLCAweDBGLCAweEMwLCAweDdGLCAweDAyLCAweEZGLCAweDAwLCAweEZDLCAweDBGLCAweEYwLCAweDBELCAweEUwLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDNiwgMHgzRiwgMHg4MCwgMHg5RiwgMHgyOCwgMHhEQywKKzB4MjcsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4OTYsIDB4QzAsCisweDBFLCAweDAwLCAweEUzLCAweDAwLCAweEJDLCAweDA5LCAweEYwLCAweDFFLCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHg5RiwgMHgwMiwgMHg0QywgMHgwMywgMHhGMCwKKzB4MDUsIDB4QzAsIDB4MzQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NUMsIDB4MDUsIDB4NzAsIDB4MEQsIDB4QzgsIDB4MzUsIDB4MDgsCisweEQzLCAweDgwLCAweDdDLCAweDA3LCAweEYxLCAweDBELCAweEMyLCAweDM0LCAweDAwLCAweDVGLCAweDAwLCAweDBDLCAweDIzLAorMHgzMCwgMHgwRCwgMHhDMCwgMHhBMywgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHgwMywgMHhCMCwgMHgyOSwgMHhDMCwgMHgwNCwKKzB4MDAsIDB4REYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MkQsIDB4QzAsIDB4MDgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDM0LCAweDAwLCAweDVDLCAweDAwLCAweDM0LCAweDNGLCAweEQwLCAweDBELAorMHhDMCwgMHg3NCwgMHgwMSwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwMSwgMHhEMCwgMHg5QywgMHg0OCwgMHg3QywgMHgwMSwgMHhEMSwKKzB4MDAsIDB4RjQsIDB4MDMsIDB4RDAsIDB4MEYsIDB4NDAsIDB4M0MsIDB4MDEsIDB4OUQsIDB4MDAsIDB4NkUsIDB4MDMsIDB4QjAsCisweDRGLCAweDQwLCAweDI3LCAweDA4LCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweDEwLCAweDRELCAweEMwLCAweDA0LCAweDAwLAorMHhERCwgMHgwMCwgMHg0NCwgMHg5MywgMHgxMCwgMHgwRCwgMHg0MCwgMHg0QywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDMsIDB4MjAsIDB4MzIsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MzQsIDB4MEYsIDB4OTAsIDB4MDgsIDB4NDAsCisweDM0LCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDAwLCAweDUwLCAweDA4LCAweDAwLCAweDMxLCAweDAwLCAweEMxLCAweDAwLAorMHgzNCwgMHgwMywgMHhEOCwgMHgwQywgMHg0MCwgMHg3MCwgMHgwMCwgMHg5RCwgMHg0MCwgMHgwNCwgMHgwNCwgMHg5MCwgMHgyQywKKzB4NDEsIDB4MjMsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MzYsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NDIsIDB4MDIsIDB4Q0QsCisweDAwLCAweDI0LCAweDAyLCAweDEwLCAweDAwLCAweDQwLCAweDBDLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHgwMCwgMHg3QSwgMHgwOCwgMHhBRCwgMHgyMSwgMHhCNCwgMHgwNywgMHhEMiwgMHgxMCwgMHg0MCwgMHhGOCwKKzB4MDIsIDB4RTEsIDB4MEIsIDB4OTQsIDB4MjYsIDB4RDAsIDB4MUEsIDB4NDEsIDB4RjgsIDB4MDAsIDB4RTAsIDB4MDEsIDB4QjQsCisweDA3LCAweEQ4LCAweDNFLCAweDQwLCAweDc4LCAweDAwLCAweDZELCAweDAxLCAweDg0LCAweDA2LCAweDkwLCAweDFFLCAweDQwLAorMHg2MywgMHg4MCwgMHhFMSwgMHgwMSwgMHgzNCwgMHgyNywgMHgxMCwgMHgxQywgMHg0MCwgMHg0OCwgMHgwMCwgMHg0RCwgMHgwMSwKKzB4MjQsIDB4MDcsIDB4MTAsIDB4MTQsIDB4NDIsIDB4MTAsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEyLCAweDAwLCAweDMyLCAweDAwLCAweDBGLCAweDAwLCAweDNDLCAweDIzLCAweEYwLCAweDBDLCAweEMwLCAweDMwLCAweDAyLAorMHhDMywgMHgwMCwgMHgxQywgMHgwMywgMHg3MCwgMHg4QywgMHg0MCwgMHgzNSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzQywgMHgyMywKKzB4RjAsIDB4MEMsIDB4QzAsIDB4MzAsIDB4MDAsIDB4OEYsIDB4MDAsIDB4MDQsIDB4MTEsIDB4MzAsIDB4OEMsIDB4QzAsIDB4QjMsCisweDgyLCAweEM3LCAweDAwLCAweDNDLCAweDAyLCAweDMwLCAweDBDLCAweEMwLCAweDAyLCAweDAwLCAweDhGLCAweDAwLCAweDJDLAorMHgwMiwgMHgzMCwgMHgyQywgMHhDMCwgMHg0OCwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4QTgsIDB4M0QsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkUsIDB4QTMsIDB4RjAsIDB4ODMsIDB4QzAsIDB4M0YsIDB4OTIsIDB4RkYsCisweDAwLCAweEVDLCAweDgzLCAweEYwLCAweDBGLCAweEMwLCAweEJGLCAweDA0LCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgzRiwgMHgwNCwgMHg3RiwgMHgwOCwgMHhCQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4NzUsIDB4OEYsIDB4RDAsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4NUMsIDB4MDMsCisweEYwLCAweDBGLCAweEUwLCAweDBCLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLAorMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNywgMHgwMCwgMHhEMywgMHgwMSwKKzB4MEMsIDB4MDQsIDB4MzAsIDB4MEQsIDB4QzAsIDB4QjUsIDB4MDEsIDB4REIsIDB4MDAsIDB4N0MsIDB4N0IsIDB4RjAsIDB4RUQsCisweEMxLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDZDLCAweDAzLCAweEI4LCAweDhELCAweEMxLCAweDI3LCAweDAwLCAweERGLAorMHgwMSwgMHg0QywgMHgwNSwgMHgxMCwgMHgwRCwgMHhDNCwgMHgwNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwMywgMHgzMCwKKzB4MTksIDB4QzAsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OTgsIDB4MzksCisweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQyLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEYxLCAweDAwLCAweDg1LAorMHgwMiwgMHg1MCwgMHgwRSwgMHg0MCwgMHgzMywgMHgwMSwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwKKzB4MzgsIDB4MDEsIDB4Q0QsIDB4MDAsIDB4QTQsIDB4ODMsIDB4MTAsIDB4NEUsIDB4QzAsIDB4MkIsIDB4MDAsIDB4RUQsIDB4MDAsCisweDg0LCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDA4LCAweDAwLCAweEVELCAweDgwLCAweDg0LCAweDAzLCAweDEwLCAweDBFLAorMHg0MCwgMHg0OCwgMHg2OCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4QjQsIDB4NDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RTEsIDB4ODEsIDB4ODQsIDB4MDcsCisweDAwLCAweDFFLCAweDQxLCAweDdCLCAweDAwLCAweEUxLCAweDAzLCAweEI0LCAweDk3LCAweEQ4LCAweDVFLCAweDQwLCAweDdBLAorMHgwMCwgMHhFRCwgMHgwMSwgMHgwNSwgMHgwNywgMHgxNCwgMHg1RSwgMHg0NCwgMHg3QiwgMHgwMCwgMHhDNSwgMHgwMSwgMHgwNCwKKzB4MDcsIDB4OTAsIDB4MUMsIDB4NDAsIDB4NEEsIDB4MDAsIDB4Q0QsIDB4MTEsIDB4MDQsIDB4NDcsIDB4MTAsIDB4MUMsIDB4NDAsCisweDEyLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDIwLCAweDMzLCAweEEwLCAweENELAorMHgxQSwgMHgzNCwgMHg4NiwgMHhEMCwgMHgwQywgMHg0MSwgMHgyMywgMHgwMiwgMHhDMSwgMHgwMCwgMHgwNCwgMHgyNywgMHg1QiwKKzB4MUQsIDB4NDIsIDB4MzMsIDB4NDAsIDB4NDEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NTAsIDB4MzIsIDB4MDAsCisweENELCAweDA2LCAweDA0LCAweDA3LCAweDEwLCAweDBELCAweDQwLCAweEIxLCAweDAwLCAweENELCAweDAwLCAweDA1LCAweDA3LAorMHg5NCwgMHgwQywgMHg1MCwgMHhGMiwgMHgwNCwgMHhDRCwgMHgwMCwgMHgwNSwgMHgwMywgMHgxNCwgMHgwQywgMHg3OCwgMHg1QSwKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MTcsIDB4MDAsIDB4N0YsIDB4MDMsCisweDdDLCAweDAxLCAweEYwLCAweDc3LCAweDQwLCAweDU3LCAweDQwLCAweDUzLCAweDAwLCAweENDLCAweDA1LCAweDMwLCAweDA1LAorMHhDMCwgMHgxNywgMHgwMCwgMHg3MywgMHhDMSwgMHg3NCwgMHgwMSwgMHhGMCwgMHgwNSwgMHhDOCwgMHgxNiwgMHgxMCwgMHg3RiwKKzB4MDIsIDB4RUMsIDB4MTEsIDB4QjAsIDB4MDUsIDB4NDAsIDB4MUYsIDB4MDAsIDB4N0YsIDB4MDAsIDB4Q0MsIDB4MTUsIDB4QjAsCisweDA3LCAweEMwLCAweERBLCAweDA5LCAweDdGLCAweDAzLCAweENDLCAweDA1LCAweDMwLCAweDI3LCAweEMwLCAweDVFLCAweDIwLAorMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgwNSwgMHgwMCwgMHgwRiwgMHgwMCwgMHg3NCwKKzB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA3LCAweDAwLCAweDE3LCAweDAxLCAweDNDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA1LCAweEEwLCAweDFCLCAweDAwLAorMHgzRSwgMHgwNCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHg3NCwgMHgwMSwKKzB4QzAsIDB4ODUsIDB4MDAsIDB4MEYsIDB4MDAsIDB4M0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NDksIDB4MDAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDAyLAorMHhGMCwgMHgwOCwgMHhENCwgMHgyNCwgMHgwMCwgMHg5MywgMHgwMiwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNiwKKzB4NDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDIsIDB4QjAsIDB4MDksIDB4RDAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsCisweDgyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDQyLCAweEYwLCAweDA4LCAweEMwLAorMHgyNCwgMHgwMCwgMHg5MywgMHgxMCwgMHg0QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMSwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDYsIDB4RDAsCisweDA5LCAweDQwLCAweDIwLCAweDAwLCAweDkxLCAweDEwLCAweDc0LCAweDAyLCAweEQwLCAweDE5LCAweDQ4LCAweEE0LCAweDAwLAorMHg4MSwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgyOSwgMHhDMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwMiwKKzB4QjAsIDB4MDksIDB4QzAsIDB4QTYsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NUMsIDB4MEEsIDB4RDAsIDB4MjksIDB4NDAsIDB4MjQsCisweDAwLCAweDkxLCAweDAyLCAweDRDLCAweDBBLCAweDEwLCAweDI5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwNiwgMHhEMCwgMHgwOSwKKzB4NDgsIDB4NjQsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4NTAsIDB4ODksIDB4NDAsIDB4NjIsIDB4ODQsIDB4OTksCisweDAwLCAweDQ0LCAweDA2LCAweDEwLCAweDE5LCAweDYzLCAweDY0LCAweDgwLCAweDhELCAweDAwLCAweDQ0LCAweDAyLCAweDEwLAorMHgwOSwgMHg0MiwgMHgyNCwgMHgwNCwgMHg5MSwgMHgxMCwgMHg3NCwgMHg0MiwgMHhEMCwgMHgwOSwgMHg1MSwgMHgyNCwgMHgwMCwKKzB4OTksIDB4MzAsIDB4NDQsIDB4QzMsIDB4MTAsIDB4MDksIDB4NDEsIDB4NzMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDI4LCAweDIwLCAweDAwLCAweDhELCAweDA0LCAweDA0LCAweDAyLCAweEQwLCAweDQ4LCAweDQwLAorMHgzNCwgMHg0MCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgxMiwgMHhEMCwgMHg0QywgMHg0MCwgMHgyMCwgMHg4MSwgMHg5OSwgMHgwMCwKKzB4MDQsIDB4MTIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4MjAsIDB4MjEsIDB4OEQsIDB4MDQsIDB4MDYsIDB4MTIsIDB4OTAsIDB4NEMsCisweDQ4LCAweDIwLCAweDAxLCAweDhELCAweDA0LCAweDE0LCAweDEyLCAweEQ4LCAweDQ4LCAweDYwLCAweDIwLCAweDAwLCAweDg5LAorMHhDNCwgMHgwNCwgMHgxMiwgMHgxMCwgMHg0OCwgMHg2MCwgMHg1MywgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MUQsIDB4QjAsIDB4MDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NEMsIDB4MDEsIDB4RjAsIDB4MDEsIDB4QzAsIDB4ODAsCisweDAyLCAweDEzLCAweDBBLCAweDc0LCAweDAwLCAweDcwLCAweEExLCAweEMwLCAweDg2LCAweDIyLCAweDE5LCAweDAwLCAweDQ1LAorMHgwMCwgMHgzMCwgMHhBMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwQSwgMHg0RCwgMHgwMCwgMHgzMCwgMHhBMSwgMHg0MCwKKzB4MDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjEsIDB4MDEsIDB4QzgsIDB4MTQsIDB4MDAsIDB4MTMsIDB4MDAsCisweDRDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDc3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOSwgMHhBOCwgMHgyNywgMHgwMCwgMHhCRiwgMHg4OCwgMHhGRCwgMHgwMiwgMHhGMCwgMHg4QiwgMHg4MCwgMHgyRiwgMHgwMCwKKzB4OUYsIDB4MDAsIDB4RkMsIDB4QTIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MjcsIDB4NDIsIDB4QjcsIDB4MDAsIDB4N0MsIDB4MjIsCisweEY0LCAweDg5LCAweEMwLCAweDI3LCAweDIyLCAweEJGLCAweDA4LCAweEZDLCAweDIyLCAweDc0LCAweDg5LCAweEQwLCAweDJGLAorMHgwMiwgMHhCRiwgMHgwOCwgMHhEQywgMHgyMiwgMHhGMSwgMHg4QiwgMHhDMCwgMHgyRiwgMHg0MCwgMHhCNywgMHgyOCwgMHhERCwKKzB4MjIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4NjcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEE4LCAweDI3LCAweDAwLCAweDlGLCAweDA0LCAweEZFLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDJGLCAweDAyLCAweEJGLAorMHgwMCwgMHhEQywgMHg1MiwgMHhCMCwgMHhDQSwgMHhDOCwgMHgyRSwgMHgwOCwgMHhCRiwgMHhBMCwgMHhEQywgMHg4MiwgMHgzMiwKKzB4NEIsIDB4QzIsIDB4NkYsIDB4MDEsIDB4REYsIDB4MEMsIDB4RkMsIDB4MDIsIDB4MzQsIDB4MEIsIDB4QzAsIDB4MjYsIDB4MDAsCisweDkzLCAweDA0LCAweDVDLCAweDUyLCAweEYwLCAweDQ5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLAorMHgzMCwgMHg0OSwgMHhDMCwgMHg2MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwKKzB4MDcsIDB4MDAsIDB4MUQsIDB4MDgsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MTQsCisweDc0LCAweDAwLCAweEQwLCAweEMxLCAweDQwLCAweDg0LCAweDA0LCAweDFELCAweDAwLCAweDVDLCAweDIwLCAweDEwLCAweDQxLAorMHg0MywgMHgwNywgMHgwMCwgMHgxRCwgMHgwQywgMHg3NCwgMHgwOCwgMHgxMCwgMHgwMSwgMHg0MSwgMHgwNCwgMHg0MiwgMHgxMywKKzB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4ODEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MDAsIDB4N0MsIDB4MjAsIDB4MTAsCisweDAzLCAweDQwLCAweDczLCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDIxLAorMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHg4OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwNCwgMHgzNCwKKzB4MDIsIDB4OTAsIDB4NDgsIDB4NDAsIDB4MjIsIDB4MDMsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4QzgsIDB4NDAsCisweDIzLCAweDAyLCAweDhELCAweDQ0LCAweDM0LCAweDIyLCAweDEyLCAweDg4LCAweDQ4LCAweDI4LCAweDgwLCAweEExLCAweDA5LAorMHhCNCwgMHgwNiwgMHhEMCwgMHgxQSwgMHg0MCwgMHgyOCwgMHgwMCwgMHhBRCwgMHg4OSwgMHhCNCwgMHgwNiwgMHgxMCwgMHg5QSwKKzB4NDAsIDB4NEIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjgsIDB4MjUsIDB4MDAsCisweDlELCAweDAwLCAweDc0LCAweDA2LCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLAorMHhEMCwgMHgwRCwgMHg2MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MEQsIDB4NDAsIDB4QTQsIDB4MDAsIDB4QjksIDB4MDAsIDB4RTQsCisweDAyLCAweEQwLCAweDRCLCAweDQwLCAweDJDLCAweDAwLCAweEJDLCAweDQwLCAweEY0LCAweDAyLCAweDEwLCAweDhCLCAweDQwLAorMHg2MywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyNywgMHgwMCwgMHg5RiwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4RjAsIDB4MTksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4NkEsIDB4OTAsCisweDA5LCAweEMwLCAweDI2LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLAorMHg5RiwgMHgwMCwgMHg3QywgMHgyMiwgMHgzMCwgMHgwOSwgMHhEMCwgMHg2MCwgMHgwMCwgMHg5MywgMHgwQiwgMHg3QywgMHgwQSwKKzB4RjAsIDB4MzksIDB4RDAsIDB4NjQsIDB4MDQsIDB4OUYsIDB4MDIsIDB4N0MsIDB4MEEsIDB4MzQsIDB4MzksIDB4QzAsIDB4MTcsCisweEEwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDI1LCAweDAwLCAweDlGLCAweDIwLAorMHg3QywgMHg0MiwgMHhGMCwgMHg0OSwgMHhDMCwgMHg2NywgMHgwMiwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhEMCwgMHg5OCwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDksIDB4MUMsIDB4MDIsIDB4RjQsIDB4MDksIDB4QzAsIDB4MjcsIDB4ODAsIDB4OUYsCisweDAwLCAweDNDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI1LCAweDAxLCAweDg3LCAweDAxLCAweDVDLCAweDE2LCAweEYwLAorMHgxOSwgMHhDMCwgMHg2NywgMHgwMSwgMHg5RSwgMHgwNSwgMHg1QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhDMCwgMHg0QiwgMHgwMCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NEMsCisweDgwLCAweEYyLCAweDAxLCAweEMyLCAweDA0LCAweDA0LCAweDFGLCAweDAwLCAweDdDLCAweDA4LCAweDMwLCAweDAxLCAweEMwLAorMHgwNywgMHgwNCwgMHgxMywgMHgwMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhEMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4NEMsIDB4ODAsIDB4QjAsIDB4MDEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MTcsIDB4MDAsIDB4N0MsIDB4MDAsIDB4NzAsIDB4MDAsCisweEMwLCAweDA0LCAweDAwLCAweDFGLCAweDAwLCAweDBDLCAweDAwLCAweEYyLCAweDAxLCAweEMwLCAweDQzLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHgxNCwgMHgyMCwgMHg1RCwgMHgwMCwgMHhEMCwgMHgxMSwKKzB4NzAsIDB4MDUsIDB4NDAsIDB4OUMsIDB4MDAsIDB4N0QsIDB4MTEsIDB4NzQsIDB4MDEsIDB4MDAsIDB4MzcsIDB4QzEsIDB4NUUsCisweDAwLCAweDUxLCAweDA1LCAweDQwLCAweDA1LCAweEQwLCAweDE3LCAweDQwLCAweDU0LCAweDAwLCAweDVELCAweDAwLCAweDQ0LAorMHgwMSwgMHgzMCwgMHgwNywgMHg0MCwgMHgxNCwgMHgwMCwgMHg1MSwgMHgwMCwgMHg3NCwgMHgwMSwgMHg1MCwgMHgwNSwgMHg1MCwKKzB4MTQsIDB4MTAsIDB4NUQsIDB4MjEsIDB4NTQsIDB4MDEsIDB4RDAsIDB4MTUsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDBELCAweDUwLAorMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwNiwgMHgxMCwgMHgzNCwgMHg1MSwgMHg3MSwgMHgwMCwKKzB4ODEsIDB4MDEsIDB4MzQsIDB4MjYsIDB4RDAsIDB4MUMsIDB4NDAsIDB4NjAsIDB4MDIsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MjIsCisweDEwLCAweDg1LCAweDQwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDMyLAorMHgwMCwgMHhDOSwgMHgwMSwgMHgwNCwgMHgwMywgMHhEMCwgMHgxQywgMHg2MCwgMHg1MywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODgsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MjEsIDB4ODQsIDB4MDMsIDB4NTAsIDB4MUUsCisweDQwLCAweDM4LCAweEEwLCAweEVELCAweDAwLCAweDM0LCAweDBGLCAweDEwLCAweDA2LCAweDQwLCAweDdBLCAweDQ0LCAweEExLAorMHgwMSwgMHg5NCwgMHgwMywgMHhEMCwgMHgxRSwgMHg0MSwgMHgzOCwgMHgwMCwgMHhDRCwgMHgwOSwgMHgwNCwgMHgwMiwgMHgxMCwKKzB4MDYsIDB4NDAsIDB4MzIsIDB4MDAsIDB4RTksIDB4MDAsIDB4QjQsIDB4MDcsIDB4NTAsIDB4MEEsIDB4NDAsIDB4MkEsIDB4MDAsCisweENELCAweDExLCAweDk0LCAweDAyLCAweEQwLCAweDBFLCAweDQxLCAweDA3LCAweDIwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMSwgMHgxMCwgMHg3OCwgMHgwMCwgMHhDRiwgMHgwMSwgMHg4NSwgMHgwNywgMHg3MCwgMHgxQywgMHhEMCwKKzB4NTgsIDB4MDAsIDB4MkYsIDB4MDEsIDB4QkMsIDB4MDcsIDB4MzQsIDB4MTYsIDB4QzAsIDB4NUQsIDB4MDAsIDB4QTEsIDB4MDEsCisweEJDLCAweDA3LCAweEYwLCAweDE3LCAweEMwLCAweDc4LCAweDAwLCAweEVFLCAweDExLCAweDhELCAweDA2LCAweDM5LCAweDE0LAorMHhDMCwgMHg1QSwgMHgwMCwgMHg2RiwgMHgwMSwgMHgzQywgMHgwNSwgMHg3MCwgMHgxNCwgMHhDMCwgMHg1QSwgMHgwMCwgMHg2RCwKKzB4MDEsIDB4OEMsIDB4MDUsIDB4RjAsIDB4MTYsIDB4QzQsIDB4NDcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweEE4LCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMywgMHg3OCwgMHgwMSwgMHhDOCwgMHgwNywgMHgwMCwgMHg4RiwgMHgwMCwgMHg2QywKKzB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4ODIsIDB4N0UsIDB4MDIsIDB4NzQsIDB4MDcsIDB4QzQsCisweDE1LCAweDAwLCAweDU3LCAweDAwLCAweDdDLCAweDAxLCAweEI0LCAweDAxLCAweEMwLCAweDA1LCAweDAwLCAweDVGLCAweDIwLAorMHg2RCwgMHgwMCwgMHhGMCwgMHgwNSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MjAsIDB4N0QsIDB4MDAsIDB4RkYsIDB4MDEsIDB4OEMsIDB4MTMsIDB4NzAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsCisweEYzLCAweDAxLCAweENDLCAweDA3LCAweDMwLCAweDE3LCAweEMyLCAweDZGLCAweDEwLCAweEYyLCAweDAxLCAweEZDLCAweDA3LAorMHhGMCwgMHgxQiwgMHhDMCwgMHg3QywgMHgyMCwgMHhGNywgMHg4MSwgMHhGQywgMHgwNiwgMHhGMCwgMHgxMywgMHhDMiwgMHg3OSwKKzB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzgsIDB4N0YsIDB4MDAsIDB4QkIsIDB4MDEsIDB4Q0MsCisweDg3LCAweDMwLCAweDFCLCAweEMwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHgxOCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwOCwgMHg4QywgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHgxRiwgMHgwMCwgMHhFMSwKKzB4MDgsIDB4ODQsIDB4MDMsIDB4MTQsIDB4MDIsIDB4NDAsIDB4MUIsIDB4MDEsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsCisweDBBLCAweDQwLCAweDM4LCAweDAwLCAweEUxLCAweDEwLCAweEI0LCAweDEzLCAweDEwLCAweDQyLCAweDQwLCAweDM4LCAweDAxLAorMHhFMSwgMHgwMCwgMHg5QywgMHgwMywgMHgxMCwgMHg0QSwgMHg0MCwgMHgyQiwgMHgyMCwgMHhBMSwgMHgwMCwgMHhBQywgMHgwMiwKKzB4MTAsIDB4MEEsIDB4NDAsIDB4NTQsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDM5LCAweDAwLCAweEVELCAweDEwLCAweEE0LCAweDIzLCAweDUwLCAweDBFLCAweDQxLCAweDNCLCAweDQ0LCAweDYxLCAweDAwLAorMHg4NCwgMHgwMywgMHg1MCwgMHgwNiwgMHg0MCwgMHgyQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgyMywgMHhEMCwgMHgwMiwKKzB4NDAsIDB4MzgsIDB4MDAsIDB4RTUsIDB4MDAsIDB4MzQsIDB4MDIsIDB4NTAsIDB4MDIsIDB4NjAsIDB4MTksIDB4MTAsIDB4NjEsCisweDAwLCAweEI0LCAweDAxLCAweDkwLCAweDA2LCAweDQ0LCAweDFGLCAweDAyLCAweDAxLCAweDAwLCAweDg0LCAweDAxLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyMCwgMHgzMSwKKzB4MjAsIDB4Q0QsIDB4MDMsIDB4MjQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MDMsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDQsCisweDRCLCAweDUwLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweEMxLCAweDQzLCAweDM2LCAweDAzLCAweEQwLCAweDAwLCAweDQwLAorMHgzMCwgMHgwMCwgMHhDMSwgMHgwMywgMHgzNCwgMHgwQiwgMHgxMCwgMHgwMCwgMHg0MCwgMHg5MCwgMHg0MCwgMHg0MSwgMHg0MiwKKzB4MTQsIDB4MDEsIDB4OTAsIDB4MjAsIDB4NDAsIDB4ODMsIDB4MkUsIDB4MDEsIDB4MDIsIDB4MjQsIDB4MDgsIDB4MTAsIDB4MDAsCisweDQwLCAweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDM1LCAweDAwLAorMHhERiwgMHgwMywgMHg2RCwgMHgwMywgMHg3MCwgMHgzRCwgMHhDMCwgMHg2NywgMHgwMCwgMHhEMywgMHgwMCwgMHg0RCwgMHgwQiwKKzB4NzAsIDB4MEQsIDB4QzIsIDB4MzcsIDB4NDAsIDB4OTMsIDB4MDEsIDB4M0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4RDAsIDB4MzAsCisweDAwLCAweEY3LCAweDIzLCAweDdDLCAweDBBLCAweDcwLCAweDA1LCAweEMwLCAweEExLCAweDAwLCAweDkzLCAweDAzLCAweDdDLAorMHgwNiwgMHhCMCwgMHgzRCwgMHhDMCwgMHhGNywgMHgwMCwgMHhEMywgMHhBMywgMHg0RCwgMHg4RiwgMHgzNCwgMHgxRCwgMHhEMCwKKzB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4REYsCisweDA0LCAweDVDLCAweDBGLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDA4LCAweDVGLCAweDAwLCAweDNDLCAweDAzLCAweEIwLAorMHgwOSwgMHhDMCwgMHgzNywgMHgyMCwgMHg5RiwgMHgwOCwgMHg3QywgMHg4MywgMHhGMCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwMCwKKzB4Q0YsIDB4MDQsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MjAsIDB4QzAsIDB4MjcsIDB4MDQsIDB4OEYsIDB4MTEsIDB4MUMsIDB4NDYsCisweDc0LCAweDE5LCAweEMxLCAweDI3LCAweDAwLCAweEQ3LCAweDAxLCAweDVDLCAweDA2LCAweEYwLCAweDFELCAweEMwLCAweDA3LAorMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwOCwgMHgzRiwgMHgwMCwgMHhERiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4RjAsIDB4MEUsIDB4QzEsIDB4MEMsIDB4MDgsIDB4QkYsIDB4MDMsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MEUsCisweEQwLCAweDE0LCAweDAwLCAweEJGLCAweDE5LCAweENDLCAweDE3LCAweDMwLCAweDg5LCAweEMwLCAweDM0LCAweDAwLCAweEY3LAorMHgwMCwgMHhDQywgMHg0MiwgMHhGMCwgMHgwNSwgMHhDMCwgMHg4RSwgMHgwMCwgMHgzNywgMHgwOCwgMHg2OCwgMHgyMCwgMHgzMCwKKzB4MDcsIDB4QzAsIDB4MUYsIDB4MDAsIDB4N0YsIDB4MTAsIDB4N0MsIDB4NDEsIDB4RjAsIDB4MDcsIDB4QzAsIDB4MTMsIDB4MjIsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg1LCAweDAwLCAweDM2LCAweDAwLCAweERELCAweDAwLCAweDc0LAorMHgwRiwgMHhEMCwgMHgwRCwgMHhDMCwgMHg0NiwgMHgwMCwgMHgxRCwgMHgwMSwgMHg0NCwgMHgyNywgMHgxMCwgMHgzMSwgMHg0MCwKKzB4MDQsIDB4MDAsIDB4OEQsIDB4MDEsIDB4NDQsIDB4MDcsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MzQsIDB4MDAsIDB4REIsIDB4MDAsCisweDQ0LCAweDAyLCAweEQwLCAweDE5LCAweDQwLCAweDQ0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLAorMHg0MCwgMHgwNywgMHgwMCwgMHg1RCwgMHgwMCwgMHg3NCwgMHgwMCwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxNywgMHgwMiwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MEYsCisweEQwLCAweDBELCAweDQwLCAweDI0LCAweDAxLCAweDlELCAweDEwLCAweDU0LCAweDAzLCAweDE0LCAweDFELCAweDQwLCAweDI0LAorMHgyMCwgMHg5RCwgMHgwMCwgMHg0NiwgMHgwMywgMHgxMCwgMHgwQywgMHg0MSwgMHgzNiwgMHgwMiwgMHhEMCwgMHgwMCwgMHg0NCwKKzB4MDIsIDB4RDgsIDB4MTEsIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTUsIDB4MDAsIDB4NzQsIDB4MDIsIDB4NTAsIDB4MEQsIDB4NDAsCisweDM3LCAweDAwLCAweDk4LCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDA5LCAweDQwLCAweDA3LCAweDAwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyOCwgMHgzMCwgMHg4MCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NTAsIDB4MTIsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MTAsIDB4MDAsCisweDlELCAweDAwLCAweDA0LCAweDAzLCAweDEwLCAweDA0LCAweDQ4LCAweDMwLCAweDAwLCAweEM5LCAweDAwLCAweDA0LCAweDAzLAorMHhEMCwgMHgwMCwgMHg0MCwgMHgyNSwgMHgwMCwgMHg4MSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4ODAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4NDMsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEIwLCAweDM2LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELAorMHhDMCwgMHgyNCwgMHgwMCwgMHg4RiwgMHgwMCwgMHg1RCwgMHgwMywgMHgxNCwgMHgwNSwgMHhDMCwgMHgyNCwgMHgyMCwgMHg5RSwKKzB4MDAsIDB4NEQsIDB4MDMsIDB4MzQsIDB4MDksIDB4RDAsIDB4MzQsIDB4MDAsIDB4RjcsIDB4MDAsIDB4NEQsIDB4MDIsIDB4RjAsCisweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDE3LCAweDAwLCAweDdDLCAweDAwLCAweDcwLCAweDA1LCAweEM4LCAweDE3LCAweDEwLAorMHgxRiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwMywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4QTgsIDB4M0YsIDB4MjAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsCisweDBELCAweDAwLCAweDNGLCAweDAwLCAweEVDLCAweDAzLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweEJGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwKKzB4QzAsIDB4MEUsIDB4MDAsIDB4M0YsIDB4MjAsIDB4RUMsIDB4MDAsIDB4QjAsIDB4MDMsIDB4QzAsIDB4MEIsIDB4MDAsIDB4M0YsCisweDQwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDE3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMywgMHhCMCwgMHgxQiwgMHhDMCwgMHgyRiwKKzB4MjEsIDB4RjMsIDB4MjQsIDB4RUMsIDB4MjUsIDB4RjAsIDB4MUYsIDB4RDAsIDB4M0MsIDB4MDAsIDB4RkIsIDB4ODgsIDB4Q0MsCisweDg0LCAweEIwLCAweDRGLCAweEMwLCAweDdGLCAweDIyLCAweDJGLCAweDAxLCAweEY0LCAweDA1LCAweDMwLCAweDBCLCAweEMxLAorMHhFRiwgMHgwMCwgMHgyRiwgMHgwMSwgMHhFQywgMHgwNCwgMHgzMCwgMHgxMiwgMHhDMCwgMHg1RSwgMHgwOCwgMHgyRiwgMHgwMSwKKzB4Q0UsIDB4MEQsIDB4MzAsIDB4MEIsIDB4QzAsIDB4MEQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDAwLCAweDI3LCAweDEwLCAweDlELCAweDAxLCAweDQ0LCAweDBGLCAweDEwLCAweDE1LCAweDQwLCAweDY3LCAweDAwLAorMHhEMSwgMHgxNCwgMHg0NCwgMHgwMiwgMHhEMCwgMHg0RCwgMHg0MCwgMHhCQywgMHgwNCwgMHhGMSwgMHgwRSwgMHg0NCwgMHgwNywKKzB4MTAsIDB4QkYsIDB4NDAsIDB4MzcsIDB4MDAsIDB4MTcsIDB4OTQsIDB4NjQsIDB4MDUsIDB4MTAsIDB4MzksIDB4NDAsIDB4MzcsCisweDExLCAweDVELCAweDIxLCAweDQ0LCAweDA1LCAweDUxLCAweDE5LCAweDQwLCAweDc1LCAweDMwLCAweDFELCAweDIxLCAweDQ2LAorMHgwMiwgMHgxMCwgMHgxMSwgMHhDMCwgMHgwRCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwKKzB4QTAsIDB4MjMsIDB4MDAsIDB4MEQsIDB4ODAsIDB4MDUsIDB4MEIsIDB4RDgsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDIsIDB4QzEsCisweDBDLCAweDI0LCAweDAyLCAweDUwLCAweDA4LCAweDQxLCAweEIwLCAweDgxLCAweEM5LCAweDA0LCAweDU0LCAweDA3LCAweDkwLAorMHgwQywgMHg0MCwgMHgzMywgMHgxMSwgMHgwRCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwQywgMHg0NCwgMHgzMSwgMHgwMSwKKzB4NDksIDB4MDAsIDB4MjQsIDB4MDAsIDB4MTIsIDB4MEQsIDB4NDQsIDB4MzEsIDB4MDAsIDB4MUQsIDB4NDAsIDB4NjQsIDB4MTMsCisweDkwLCAweDA4LCAweDQwLCAweDRELCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LAorMHg2NSwgMHgwMCwgMHg5RCwgMHgxMSwgMHg0NCwgMHgwMywgMHgxOCwgMHg2NSwgMHg0MCwgMHgyNywgMHgwMCwgMHhEMSwgMHgwMCwKKzB4NDIsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MzQsIDB4MDgsIDB4QzEsIDB4MDAsIDB4NTUsIDB4MDMsIDB4MTAsIDB4MEQsCisweDQwLCAweDM3LCAweDAwLCAweDlELCAweDExLCAweDY0LCAweDAwLCAweDFDLCAweDBELCAweDQwLCAweDM3LCAweDEwLCAweDVELAorMHgxMSwgMHg0NCwgMHg0NSwgMHg1MCwgMHg4OSwgMHgwMCwgMHg3NSwgMHgwMCwgMHgxRCwgMHgxMCwgMHg2NCwgMHg0MywgMHg5NiwKKzB4MTEsIDB4NDAsIDB4MEQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4NDcsCisweDA0LCAweDlGLCAweDIxLCAweDQ0LCAweDAzLCAweEYyLCAweDA1LCAweEMwLCAweDMzLCAweDQwLCAweEQzLCAweDAwLCAweDZDLAorMHgwMywgMHhGMSwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhEQiwgMHgwMCwgMHg1NCwgMHgwNCwgMHhCMCwgMHgwRCwgMHhDMCwKKzB4MzcsIDB4MDAsIDB4MUYsIDB4MDEsIDB4N0MsIDB4MTQsIDB4MzAsIDB4MDksIDB4QzAsIDB4MzUsIDB4MDAsIDB4NUIsIDB4MDEsCisweDJDLCAweDBELCAweDMwLCAweDMxLCAweDgyLCAweDc3LCAweDAxLCAweDFELCAweDIyLCAweDY0LCAweDBGLCAweEIxLCAweDMxLAorMHhDMSwgMHg4MSwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4OCwgMHgyRCwgMHgwMCwKKzB4QUYsIDB4MDAsIDB4QkMsIDB4MDMsIDB4RjAsIDB4MDcsIDB4QzAsIDB4M0YsIDB4MDIsIDB4RUYsIDB4ODAsIDB4RkMsIDB4ODIsCisweEYwLCAweDhGLCAweEMwLCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEVDLCAweEEwLCAweEYwLCAweDBGLCAweEMyLCAweDNGLAorMHgxMCwgMHgzNywgMHgwMCwgMHhFQywgMHhBNCwgMHg3MCwgMHg5QiwgMHhDMCwgMHgzRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywKKzB4MDEsIDB4RjAsIDB4MTMsIDB4QzAsIDB4MkYsIDB4MDAsIDB4M0YsIDB4MDgsIDB4REQsIDB4MjcsIDB4NzAsIDB4MDMsIDB4QzAsCisweDFGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDA1LCAweDAyLCAweDEzLAorMHgxMCwgMHg3RSwgMHgyMywgMHhCMCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwMywgMHhERiwgMHg4MCwgMHg3QywgMHgwMywgMHhGMSwKKzB4MDksIDB4QzAsIDB4MzUsIDB4ODAsIDB4REYsIDB4MDgsIDB4NEMsIDB4ODAsIDB4NzAsIDB4MEQsIDB4QzEsIDB4MzcsIDB4MDAsCisweDkzLCAweDAyLCAweDVDLCAweDA4LCAweEY4LCAweDBELCAweEMyLCAweDM3LCAweDAwLCAweDVGLCAweDBFLCAweDc4LCAweDFCLAorMHg3MCwgMHgyNSwgMHhDNCwgMHhBNSwgMHgwMCwgMHg1MywgMHgwMCwgMHg2QywgMHg0QiwgMHgzMSwgMHgwOSwgMHhDNCwgMHgwQiwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4RTQsIDB4MDIsIDB4OTEsIDB4MDAsCisweEY0LCAweDA3LCAweDEwLCAweDA1LCAweDQxLCAweDc3LCAweDAwLCAweEZELCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDE5LAorMHhDOCwgMHgzRSwgMHgyMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHgyQywgMHgxMCwgMHgxRiwgMHg0MCwgMHgzNywgMHgwMCwgMHg5MSwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4RjAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4NEMsIDB4MDEsIDB4NDQsIDB4MDUsIDB4QjAsCisweDA0LCAweDQwLCAweDI0LCAweDAwLCAweDRCLCAweDA0LCAweDI0LCAweDgzLCAweDE0LCAweDcxLCAweDQwLCAweDZGLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwKKzB4ODMsIDB4MTQsIDB4M0MsIDB4NDEsIDB4QTMsIDB4MTAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDEsIDB4RDAsIDB4OUMsIDB4NDAsCisweDM1LCAweDA4LCAweENELCAweDAxLCAweDA0LCAweDA4LCAweDUwLCAweEJDLCAweDYwLCAweDMyLCAweDAwLCAweDA1LCAweDAwLAorMHgxNCwgMHgwMSwgMHhEMCwgMHg2OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg0OSwgMHgwMywgMHgxNCwgMHg4QywgMHhEMSwgMHhCNCwKKzB4NDEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MjMsIDB4MTAsIDB4NDgsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDU4LCAweDAwLCAweDYxLCAweDAxLCAweEI0LCAweDA3LAorMHgxMCwgMHgxNiwgMHg0MCwgMHg2QiwgMHgwMCwgMHhFRCwgMHgwMSwgMHg5NiwgMHgwNiwgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QSwKKzB4MDAsIDB4QzUsIDB4NDEsIDB4ODQsIDB4NDcsIDB4MTAsIDB4MUUsIDB4NjgsIDB4N0IsIDB4MDAsIDB4RjEsIDB4MDAsIDB4ODQsCisweDA1LCAweDUwLCAweDlBLCAweDQwLCAweDdCLCAweDAyLCAweDdELCAweDAxLCAweEM0LCAweDE0LCAweDkwLCAweDFBLCAweDQ4LAorMHg3OSwgMHgyMCwgMHgzOSwgMHgwOSwgMHg4NSwgMHgyNywgMHgxNSwgMHgxQSwgMHg0MCwgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTgsIDB4MzQsIDB4MDIsIDB4NDMsIDB4MDQsIDB4MzQsIDB4MDMsIDB4MTAsCisweDBDLCAweEMwLCAweDMzLCAweDEwLCAweERGLCAweDAwLCAweDFDLCAweDAyLCAweEYwLCAweDBDLCAweEMwLCAweDMxLCAweDAwLAorMHhDRCwgMHgwMCwgMHgwQywgMHgwMywgMHg3MCwgMHhDQywgMHhDMCwgMHgzNywgMHg0MiwgMHgwNSwgMHgwMCwgMHgxQywgMHgxMSwKKzB4RDAsIDB4MDgsIDB4QzAsIDB4MzMsIDB4MDAsIDB4NEIsIDB4MDAsIDB4MUMsIDB4NDAsIDB4RjAsIDB4OEMsIDB4QzAsIDB4MzEsCisweDAyLCAweEMzLCAweDAwLCAweDZDLCAweDIzLCAweDMwLCAweDg4LCAweEUwLCAweDRCLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgzRCwgMHg0MCwgMHg3RiwgMHgwMCwgMHhCQywgMHgwMywgMHg3MCwgMHgwNywKKzB4QzAsIDB4M0YsIDB4MDIsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MEMsIDB4QzAsIDB4QkYsIDB4MjAsIDB4REYsCisweDAwLCAweDNDLCAweDAzLCAweEMwLCAweDhGLCAweEM4LCAweDM3LCAweDA4LCAweEZGLCAweDhDLCAweDdDLCAweDAxLCAweEYwLAorMHgwOSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHg0OCwgMHgxQywgMHgxMSwgMHhGMCwgMHg4OSwgMHhDMCwgMHgzQSwgMHgwMCwKKzB4QkYsIDB4MDAsIDB4RkMsIDB4MjMsIDB4RjIsIDB4MEYsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDE3LCAweDAwLCAweERGLCAweDAxLCAweDZDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwQywgMHhDNCwgMHg3NCwgMHgwMywgMHhEMSwgMHgwRSwKKzB4N0MsIDB4ODAsIDB4NzAsIDB4NkQsIDB4RTAsIDB4MzcsIDB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4MDAsIDB4NzAsIDB4MUQsCisweEMwLCAweDM2LCAweDAwLCAweDVCLCAweDAwLCAweDdDLCAweDA0LCAweEIwLCAweDA1LCAweEMwLCAweDM3LCAweDAwLCAweDk3LAorMHgwMCwgMHg0QywgMHgwMywgMHgzNCwgMHgwMSwgMHhDMCwgMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTIsIDB4ODAsIDB4MTksIDB4MDAsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MEIsIDB4QzAsIDB4MDYsIDB4NDAsIDB4QUIsCisweDIwLCAweEVELCAweDA0LCAweEI0LCAweDAyLCAweEQwLCAweDBFLCAweDQwLCAweDMxLCAweDAwLCAweEUxLCAweDEwLCAweEI0LAorMHgwMywgMHhEMCwgMHhFRSwgMHhDMCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMCwgMHhEMCwgMHg0RSwgMHg0MCwKKzB4MzgsIDB4MDAsIDB4NjEsIDB4MDAsIDB4QTQsIDB4MDAsIDB4MTAsIDB4MEUsIDB4NjAsIDB4M0IsIDB4MDAsIDB4MkQsIDB4MDAsCisweDhELCAweDAzLCAweEIwLCAweDA2LCAweDQwLCAweDRGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NSwgMHgxNywgMHg1MCwgMHgxRSwgMHg0MSwgMHg3QiwgMHgwMSwKKzB4RUQsIDB4MDksIDB4QjQsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4NDEsIDB4RTEsIDB4MDUsIDB4OTQsIDB4NDcsCisweDUwLCAweDFFLCAweDAyLCAweDdCLCAweDEwLCAweEVELCAweDAxLCAweEI0LCAweDA0LCAweEQyLCAweERDLCAweDAwLCAweDdBLAorMHgyNCwgMHg2RCwgMHgwMSwgMHhENiwgMHgwRCwgMHhEOCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwNCwgMHhFNSwgMHgwMSwgMHhGNCwKKzB4MDcsIDB4MTAsIDB4MUEsIDB4NjAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDI4LCAweDMzLCAweDAwLCAweENELCAweDFBLCAweDA0LCAweDAzLCAweEQwLCAweDE0LCAweDQwLCAweDczLCAweDAyLCAweENELAorMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgxMywgMHhEMCwKKzB4MEMsIDB4NDgsIDB4MzAsIDB4MDAsIDB4REQsIDB4MDEsIDB4MzQsIDB4MDYsIDB4RDAsIDB4OEMsIDB4NDAsIDB4MzAsIDB4MDAsCisweDQ1LCAweDA4LCAweDM0LCAweDBELCAweEQwLCAweDhDLCAweDQwLCAweDczLCAweDAwLCAweENELCAweDAxLCAweDA0LCAweDAzLAorMHgxNywgMHgwQywgMHg0MCwgMHg1QiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwKKzB4MUQsIDB4MDYsIDB4N0QsIDB4MDMsIDB4NkMsIDB4MDEsIDB4RjAsIDB4MTcsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsCisweEY0LCAweDJELCAweDcwLCAweDA0LCAweEM0LCAweDE0LCAweDEwLCAweDUzLCAweDgwLCAweEZDLCAweDBELCAweDcxLCAweDA1LAorMHhDMCwgMHgxNywgMHgwMCwgMHg3RiwgMHgwNywgMHhGQywgMHgxOSwgMHhGMCwgMHgxNSwgMHhDMCwgMHg1NiwgMHgwMCwgMHg2RiwKKzB4MDIsIDB4RkMsIDB4MDUsIDB4RjAsIDB4MjcsIDB4QzgsIDB4MUYsIDB4MjAsIDB4NjcsIDB4MDcsIDB4RkMsIDB4MDEsIDB4MTAsCisweDk3LCAweEMyLCAweDVGLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDA1LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgyMSwgMHhDMSwgMHg4NywgMHgwMCwgMHgxRiwgMHg4MCwgMHg3QywKKzB4MjAsIDB4RjIsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MjEsIDB4QzAsCisweDA1LCAweDAwLCAweDFGLCAweDA0LCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDE5LCAweDUwLAorMHg2QywgMHgxOCwgMHgxMCwgMHgyMSwgMHhDMSwgMHhDNywgMHgwOCwgMHgxQiwgMHgzMCwgMHg3RSwgMHgwQywgMHhGMCwgMHg4MSwKKzB4QzAsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NjUsIDB4MDAsCisweDlGLCAweDQ0LCAweDdFLCAweDBBLCAweEYwLCAweDA5LCAweEQwLCAweDY0LCAweDEwLCAweDlGLCAweDAwLCAweDdDLCAweDA2LAorMHgzMCwgMHgwOSwgMHhEMCwgMHgyNCwgMHg4MCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMiwgMHgyNywKKzB4MDAsIDB4OTMsIDB4QzAsIDB4NEMsIDB4NDIsIDB4RjAsIDB4MjksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OTMsIDB4ODAsIDB4NUMsCisweDBBLCAweEYwLCAweDE5LCAweEMwLCAweDY1LCAweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDI2LCAweDMwLCAweDI5LCAweEMwLAorMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMiwgMHg5RCwKKzB4NDcsIDB4NzQsIDB4MDYsIDB4RDAsIDB4NDgsIDB4NDAsIDB4RUMsIDB4MTAsIDB4OUQsIDB4MDAsIDB4MzQsIDB4MjYsIDB4MTAsCisweDA5LCAweEMwLCAweDI2LCAweDEwLCAweDlELCAweDAyLCAweDc0LCAweDFBLCAweEQwLCAweDA5LCAweDQ0LCAweDI3LCAweDAwLAorMHg5MSwgMHg0MCwgMHg0QywgMHgwMiwgMHg3OCwgMHgxQiwgMHg0MCwgMHgyMywgMHgwMCwgMHg5MSwgMHgxMCwgMHg0NCwgMHgwRSwKKzB4RDAsIDB4MDgsIDB4NDIsIDB4MjAsIDB4MTAsIDB4OUIsIDB4NDAsIDB4MEMsIDB4MUUsIDB4NTQsIDB4MDksIDB4QzAsIDB4MDcsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDAwLCAweDlELCAweDAwLAorMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMiwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwKKzB4NDAsIDB4MjQsIDB4MDAsIDB4OTksIDB4MTAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MjksIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTEsCisweDAwLCAweDY0LCAweDAyLCAweEQxLCAweDI5LCAweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDAxLCAweDU0LCAweDAyLCAweDUwLAorMHg0RCwgMHg0MCwgMHgyNSwgMHgwMiwgMHg5NCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgwMCwKKzB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MzAsIDB4MDUsIDB4OEQsIDB4MTQsIDB4MzQsCisweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDIwLCAweDAwLCAweDhELCAweDA4LCAweDc0LCAweDBBLCAweDEwLCAweDI4LCAweDQwLAorMHgyMiwgMHgwMiwgMHg4RCwgMHgwOCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMiwgMHg4MSwgMHgwOCwKKzB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjcsIDB4MDIsIDB4OTEsIDB4NDAsIDB4MDQsIDB4MDIsIDB4RDIsIDB4MDksCisweDQwLCAweDI0LCAweDAwLCAweDk5LCAweDAwLCAweDQ2LCAweDIyLCAweDUxLCAweDQ4LCAweDQ0LCAweDQzLCAweDgwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHgwNiwgMHgwMSwgMHgxRiwgMHgwNCwgMHg3NCwgMHhEMCwKKzB4RjAsIDB4MDEsIDB4QzAsIDB4NTQsIDB4MTAsIDB4MUYsIDB4MTYsIDB4N0UsIDB4MDAsIDB4MzQsIDB4MDEsIDB4NDAsIDB4ODQsCisweDA1LCAweDE5LCAweDk2LCAweDdDLCAweDAwLCAweEYwLCAweDQxLCAweEMxLCAweDg3LCAweDAwLCAweDEzLCAweDAyLCAweDZELAorMHg4MCwgMHhEMCwgMHgxMSwgMHg0MCwgMHg4MywgMHg0MCwgMHgxMywgMHgwMCwgMHg1NCwgMHgwMSwgMHg3MCwgMHgwNSwgMHhDMCwKKzB4MTUsIDB4MDAsIDB4MTcsIDB4MDAsIDB4N0MsIDB4MDgsIDB4MzAsIDB4MDUsIDB4QzAsIDB4NzcsIDB4RTAsIDB4MEEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDJGLCAweDI1LCAweEFGLCAweDIwLCAweDdDLCAweDAyLCAweEYwLAorMHgwQiwgMHhDOCwgMHhBRiwgMHgwMCwgMHg5RCwgMHgwNCwgMHhGQywgMHgwNywgMHhGMCwgMHgxQiwgMHhDMCwgMHgyNywgMHgwOSwKKzB4OUYsIDB4MDQsIDB4RkMsIDB4MDIsIDB4RjIsIDB4MDksIDB4QzIsIDB4MjcsIDB4NDEsIDB4QkYsIDB4MDQsIDB4RkMsIDB4MDIsCisweDUwLCAweDJCLCAweEMwLCAweDJGLCAweDAxLCAweEJGLCAweDAwLCAweEI0LCAweDAyLCAweEYyLCAweDBCLCAweEMwLCAweDJGLAorMHgwMCwgMHhBNywgMHgwMCwgMHhCQywgMHgxMiwgMHhGNCwgMHg4QiwgMHhDMCwgMHg3NSwgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsIDB4MkYsIDB4MDUsIDB4QkYsIDB4MDQsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsCisweEQwLCAweDZDLCAweDA0LCAweDkxLCAweDI0LCAweEZDLCAweDBBLCAweEYwLCAweDJCLCAweEQwLCAweDI0LCAweDAwLCAweEJGLAorMHgwMCwgMHg5RSwgMHgwMiwgMHhGMCwgMHg0QiwgMHhDMCwgMHgyNiwgMHgwMCwgMHg5RiwgMHgwOCwgMHg3QywgMHg4MiwgMHgzNCwKKzB4NUIsIDB4RDEsIDB4MjQsIDB4MDIsIDB4QkYsIDB4MDAsIDB4RUMsIDB4MDIsIDB4RjIsIDB4MEIsIDB4QzAsIDB4MkUsIDB4ODAsCisweEE3LCAweDAwLCAweENFLCAweDgzLCAweDMwLCAweDBCLCAweEMwLCAweDc0LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNywgMHgxMSwgMHgxRCwgMHgwOCwgMHg3NCwgMHgwOCwgMHhEMCwgMHgwMSwgMHg0MCwKKzB4ODQsIDB4MDAsIDB4MTEsIDB4MTQsIDB4NzQsIDB4MDQsIDB4RDAsIDB4NTEsIDB4NDAsIDB4ODQsIDB4MDQsIDB4MEQsIDB4MTAsCisweDc2LCAweDAwLCAweEQxLCAweDAxLCAweDAwLCAweDA0LCAweDAxLCAweDFELCAweDA0LCAweDc0LCAweDAwLCAweDE5LCAweDIxLAorMHg0MCwgMHgwNCwgMHgwMCwgMHgxOSwgMHgwMCwgMHg1QywgMHgwMCwgMHhEMiwgMHgwMSwgMHg0MCwgMHgwNCwgMHgxMCwgMHgxRCwKKzB4MDAsIDB4MDUsIDB4MDAsIDB4QjQsIDB4MDEsIDB4NDAsIDB4NjAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDA1LCAweDhELCAweDAwLCAweDM0LCAweDIyLCAweEQwLCAweDA5LCAweDQwLCAweDIwLAorMHgwMCwgMHg4MSwgMHgwQywgMHgzNCwgMHgwMiwgMHhEMCwgMHg0OCwgMHg0MCwgMHgyMCwgMHg4MywgMHg4RCwgMHgwOCwgMHgxNCwKKzB4MDIsIDB4RDMsIDB4ODgsIDB4MDAsIDB4MjIsIDB4MDUsIDB4OEQsIDB4MDQsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsCisweDIwLCAweDEwLCAweDhELCAweDAwLCAweDM2LCAweDgyLCAweEQwLCAweDA4LCAweDQwLCAweDIyLCAweDAwLCAweDk1LCAweDAwLAorMHg1NCwgMHgwMiwgMHgxNCwgMHgwQywgMHg0MCwgMHg0OCwgMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4MkEsIDB4MjUsIDB4ODYsIDB4OUQsIDB4MjAsIDB4NzQsIDB4MDIsIDB4RDIsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsCisweDkxLCAweDIwLCAweDc0LCAweDAyLCAweEQwLCAweDFELCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDQwLCAweDc0LCAweDQyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0NCwgMHgyNCwKKzB4MDEsIDB4OUQsIDB4MDIsIDB4NTUsIDB4MEIsIDB4RDEsIDB4ODksIDB4NDAsIDB4RTQsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NTQsCisweDJBLCAweDkwLCAweDJELCAweDQwLCAweDYwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorMHgwMiwgMHgyNSwgMHgxMCwgMHg5RiwgMHgxMiwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5MywKKzB4MDAsIDB4RkMsIDB4MjIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NUMsIDB4MkEsIDB4RjAsCisweDA5LCAweEMyLCAweDI2LCAweDAwLCAweDlGLCAweDAwLCAweDNFLCAweDNBLCAweDEwLCAweDk5LCAweEM4LCAweDI0LCAweDIwLAorMHg4RiwgMHg0QiwgMHg3QywgMHgyMiwgMHhGMCwgMHg0OSwgMHhDMCwgMHhBNiwgMHg4MCwgMHg4NywgMHgwMSwgMHg1NCwgMHgwMiwKKzB4MzEsIDB4MDksIDB4RTAsIDB4MTQsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDgsCisweDI1LCAweDBDLCAweDlGLCAweDg0LCAweDdDLCAweDAyLCAweEY4LCAweDA5LCAweEUwLCAweDIzLCAweDQxLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg5RiwgMHgxMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4ODAsIDB4N0MsIDB4MDYsIDB4RjgsIDB4MTksIDB4QzQsIDB4NjcsIDB4MDAsIDB4OUIsCisweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEU4LCAweDI3LCAweDg4LCAweDlGLCAweDAwLCAweDZDLCAweDA2LCAweEQxLAorMHg0OCwgMHhEOCwgMHg1QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwKKzB4MDAsIDB4MUYsIDB4ODIsIDB4N0MsIDB4ODAsIDB4RjgsIDB4NDEsIDB4RDAsIDB4MDYsIDB4NDAsIDB4MTMsIDB4MDAsIDB4N0MsCisweDAwLCAweDcwLCAweDQxLCAweEMwLCAweDA2LCAweDAwLCAweDEzLCAweDAwLCAweDRELCAweEM4LCAweDcxLCAweDAxLCAweDQxLAorMHgwNiwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMSwgMHgwNywgMHgyMCwgMHgxRiwgMHgzMCwKKzB4NUMsIDB4MTAsIDB4NzAsIDB4QzEsIDB4QzgsIDB4ODcsIDB4MjAsIDB4MUYsIDB4MTAsIDB4NEMsIDB4MTAsIDB4MzIsIDB4NDEsCisweEM0LCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweERDLCAweDA0LAorMHg3RCwgMHgwNywgMHg3NCwgMHgxNSwgMHg3OCwgMHg3NiwgMHhDMCwgMHgxQywgMHgwMCwgMHg1MSwgMHgwMCwgMHg3NCwgMHgwMSwKKzB4MTAsIDB4MTYsIDB4NDUsIDB4MTQsIDB4MDAsIDB4NzEsIDB4ODYsIDB4QzQsIDB4MDksIDB4MTIsIDB4MTYsIDB4NDAsIDB4MTcsCisweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweDcwLCAweDM2LCAweDQwLCAweDE3LCAweDEwLCAweDdELCAweDAwLCAweEYwLAorMHgwRCwgMHgxMiwgMHgzNiwgMHg0OCwgMHhERiwgMHgwMiwgMHg3RCwgMHgwNCwgMHg4MCwgMHgxNSwgMHg1MCwgMHgwNywgMHg1MCwKKzB4NDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4RjIsIDB4MDAsIDB4OEQsCisweDA2LCAweDM0LCAweDA3LCAweDUwLCAweDE4LCAweDQwLCAweDIwLCAweDAwLCAweEMxLCAweDAwLCAweDM2LCAweDIzLCAweDUwLAorMHgwOCwgMHg0MCwgMHgzMiwgMHg0MCwgMHhDOSwgMHgwMCwgMHgwNCwgMHgyRiwgMHg1MCwgMHhCQywgMHg0MCwgMHgzMywgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MTQsIDB4MDMsIDB4NTAsIDB4MjgsIDB4NDAsIDB4MzMsIDB4ODAsIDB4NEQsIDB4MEEsIDB4MzQsIDB4MkYsCisweDUwLCAweDFDLCAweDQwLCAweEQzLCAweDAwLCAweEM5LCAweDAwLCAweDA0LCAweDBCLCAweDExLCAweDBDLCAweDQwLCAweDQwLAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwgMHg4MCwgMHhBRCwgMHgwMCwKKzB4QjQsIDB4MDMsIDB4NTAsIDB4MDIsIDB4NDAsIDB4MjgsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MTcsIDB4MTgsIDB4MEUsCisweDQwLCAweDcwLCAweDAyLCAweEU5LCAweDAxLCAweEM0LCAweDA3LCAweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAxLCAweEVELAorMHgwOCwgMHhCNCwgMHgwMywgMHg1MCwgMHgyMiwgMHg0MCwgMHgzQiwgMHhCMCwgMHg2RCwgMHgwMCwgMHhCNiwgMHgwNywgMHgxMSwKKzB4MDYsIDB4NDAsIDB4MUIsIDB4OEMsIDB4RkQsIDB4MDAsIDB4ODUsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MTAsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDc4LCAweDAwLCAweEVGLCAweDAxLCAweEJDLAorMHgwNywgMHg3MCwgMHgxMiwgMHhDMCwgMHg2OCwgMHgwMCwgMHhFMywgMHgwMSwgMHhGQywgMHgwRiwgMHg3MCwgMHgxQSwgMHhEMCwKKzB4N0EsIDB4MDEsIDB4RTksIDB4MDEsIDB4OEMsIDB4MDcsIDB4NzAsIDB4MUUsIDB4RTgsIDB4N0IsIDB4MDMsIDB4RUYsIDB4MDEsCisweEJDLCAweDA3LCAweDcwLCAweDEyLCAweEMwLCAweDdCLCAweDI1LCAweDZGLCAweDAxLCAweDlFLCAweDA2LCAweDcwLCAweDFBLAorMHhDMCwgMHg2QiwgMHgwMCwgMHhFRiwgMHgwMSwgMHg4QywgMHgwNiwgMHgzNCwgMHgxRSwgMHhDMCwgMHg1MCwgMHg2MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MTUsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsCisweDcwLCAweDAwLCAweEMwLCAweDIxLCAweDAwLCAweERGLCAweDQwLCAweDdDLCAweDAzLCAweEYyLCAweDBDLCAweEMwLCAweDM3LAorMHgyMCwgMHhENywgMHg4MCwgMHg3QywgMHgwMSwgMHhGMiwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMiwgMHhERiwgMHgxMCwgMHg3OCwKKzB4MDMsIDB4NzAsIDB4MDEsIDB4QzIsIDB4MzcsIDB4MUEsIDB4MUYsIDB4ODAsIDB4M0MsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsCisweDI3LCAweDIwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEY2LCAweDBELCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyMCwgMHg1RCwgMHgwMCwgMHhBMywgMHgwMSwgMHhDQywgMHgxMywgMHhGOCwKKzB4MDMsIDB4QzAsIDB4NkQsIDB4MDAsIDB4RkYsIDB4MTEsIDB4QkMsIDB4MDcsIDB4MjAsIDB4REIsIDB4QzAsIDB4N0MsIDB4MDAsCisweDdGLCAweDAxLCAweENDLCAweDA3LCAweEYwLCAweDlGLCAweEQwLCAweDdDLCAweDAwLCAweERGLCAweDA5LCAweEZDLCAweDA3LAorMHhGMCwgMHgxMywgMHhDMCwgMHg3RiwgMHgyMCwgMHgyRiwgMHgwOSwgMHhFRSwgMHgxNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg1RiwKKzB4MDAsIDB4RkYsIDB4MDEsIDB4OEMsIDB4MDUsIDB4MzAsIDB4REIsIDB4QzAsIDB4MTgsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDM5LCAweDAwLCAweEExLCAweDAwLCAweDg0LCAweDAzLCAweDc4LCAweDQyLAorMHg0MCwgMHgyOCwgMHgwMiwgMHhFRCwgMHgwMCwgMHhCNCwgMHgxMywgMHgxMCwgMHg4QSwgMHg1MCwgMHgzOCwgMHgxMSwgMHgyRCwKKzB4MDQsIDB4OEMsIDB4MUEsIDB4RDAsIDB4OEEsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDUsIDB4QjQsIDB4MDMsIDB4OTAsCisweDAyLCAweDQwLCAweDNCLCAweDAwLCAweDJELCAweDAwLCAweDlFLCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDlCLCAweDIyLAorMHhBRCwgMHgwNCwgMHhBQywgMHgwMSwgMHgxMCwgMHhDRSwgMHg0OCwgMHg1NSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4QTEsIDB4MDAsIDB4ODUsIDB4MjMsIDB4NTAsIDB4ODIsIDB4NDMsCisweDI5LCAweDAwLCAweEVELCAweDAwLCAweEY0LCAweDAyLCAweDEwLCAweDRCLCAweDQ4LCAweDM4LCAweDgwLCAweDZELCAweDgwLAorMHg4NCwgMHgwMywgMHhEMiwgMHgwNiwgMHgwMCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwNCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwMiwKKzB4NDAsIDB4M0IsIDB4MDAsIDB4M0QsIDB4MDAsIDB4ODQsIDB4MTIsIDB4RDAsIDB4MEEsIDB4NDAsIDB4OUIsIDB4MDAsIDB4RjUsCisweDEwLCAweEQ0LCAweDIwLCAweDEwLCAweEMyLCAweDQ0LCAweDYwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgyOCwgMHhDMywgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMiwgMHg1MCwgMHgzMCwgMHg0MCwgMHgyMCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MjIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MUQsIDB4MDAsIDB4MDQsCisweDRDLCAweEQwLCAweDAwLCAweDQwLCAweDMwLCAweDAwLCAweENELCAweDA0LCAweDM0LCAweDQzLCAweEQwLCAweDAwLCAweDQwLAorMHg3NywgMHgwMCwgMHgwRCwgMHgxMiwgMHgxNCwgMHhDNiwgMHhEOSwgMHg4QywgMHg0MCwgMHgxMywgMHgwMCwgMHg4RCwgMHgyMywKKzB4MDUsIDB4MDMsIDB4MTQsIDB4MjQsIDB4NDAsIDB4MDksIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweEEwLCAweEU1LCAweDQxLCAweDkzLCAweDBBLCAweDRDLCAweDAzLCAweDcwLCAweDM1LCAweEMwLCAweDM1LCAweDAwLAorMHhGRiwgMHgwMCwgMHg3NCwgMHgwMiwgMHgzNCwgMHgwOCwgMHhDMCwgMHgzQywgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHg0RSwKKzB4RjAsIDB4MDksIDB4QzAsIDB4M0MsIDB4MDAsIDB4RkYsIDB4MTMsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4M0YsCisweDAxLCAweDVGLCAweDAxLCAweDRDLCAweDA3LCAweEYxLCAweEJELCAweEMwLCAweEI3LCAweDAwLCAweEQ3LCAweDAzLCAweDE0LAorMHg0RiwgMHgzMCwgMHg5NCwgMHhDMCwgMHg1NCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKzB4MDgsIDB4MjcsIDB4MDAsIDB4OUYsIDB4ODgsIDB4N0MsIDB4MDMsIDB4NzAsIDB4MjEsIDB4QzAsIDB4QjcsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDQyLCAweEYwLCAweDI5LCAweEMwLCAweDM3LCAweDAwLCAweDlGLCAweDAwLCAweDVELCAweDAyLCAweEYwLAorMHgwMCwgMHhDNCwgMHgzNywgMHgwMCwgMHhERiwgMHgyMCwgMHg3QywgMHgwMywgMHhCMCwgMHgyNSwgMHhFNCwgMHgzNywgMHgwMCwKKzB4NUYsIDB4MDEsIDB4NEQsIDB4MjMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4RjcsIDB4MDAsIDB4REYsIDB4MDIsIDB4N0MsIDB4MUIsCisweEYwLCAweDNELCAweEMwLCAweDM3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LAorMHgyNywgMHgwNCwgMHhGRiwgMHgwMiwgMHhGQywgMHgwMywgMHhGMCwgMHgxNywgMHhDMSwgMHg2QiwgMHgwMCwgMHhGNywgMHgwMCwKKzB4RkMsIDB4MDcsIDB4RDAsIDB4MUIsIDB4QzAsIDB4M0MsIDB4MDgsIDB4MUYsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDNELCAweDgwLCAweEZGLCAweDgwLCAweENDLCAweDAzLCAweEY4LCAweDEzLCAweEMwLCAweDNELCAweDAwLCAweEYzLAorMHgwMCwgMHhGQywgMHgyNiwgMHhGMCwgMHgwMywgMHhDQywgMHgyRiwgMHgwMCwgMHhGNywgMHgxMCwgMHhDQywgMHgwMiwgMHgzMCwKKzB4MTEsIDB4QzgsIDB4MDQsIDB4MjYsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4NjYsCisweDAwLCAweERELCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDAxLCAweDQwLCAweDE3LCAweDAwLCAweEQxLCAweDgwLCAweDc0LAorMHgwNywgMHhEMCwgMHgzOSwgMHg1MCwgMHgzNCwgMHgwMCwgMHgxRCwgMHgwOSwgMHg0NCwgMHgwQywgMHhEMCwgMHgxMSwgMHg0MCwKKzB4MzQsIDB4ODAsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDgsIDB4MDAsIDB4QzEsIDB4MzQsIDB4NDAsIDB4MTEsIDB4MDMsCisweDcyLCAweDBFLCAweDcwLCAweDA1LCAweDQxLCAweDIzLCAweDAwLCAweENCLCAweDIyLCAweDQ0LCAweDY0LCAweDE0LCAweDM5LAorMHhDMCwgMHgwNiwgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHg0NiwgMHgwQywKKzB4OUQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4NDUsIDB4NDEsIDB4QjcsIDB4MDEsIDB4RDUsIDB4MDAsIDB4NzQsIDB4MTIsCisweEQwLCAweDgxLCAweDQwLCAweDM2LCAweDAwLCAweERELCAweDAyLCAweDQ0LCAweDA0LCAweEQyLCAweDE5LCAweDQxLCAweDM0LAorMHgwMCwgMHhDRCwgMHgwMCwgMHg0NCwgMHgwMywgMHhEMCwgMHg0NSwgMHg0MCwgMHgzNiwgMHgyMCwgMHg1MSwgMHgxMSwgMHg2NCwKKzB4MDMsIDB4RDAsIDB4MTksIDB4NDAsIDB4MzcsIDB4MDAsIDB4NTEsIDB4MDIsIDB4NDQsIDB4MDEsIDB4MTAsIDB4NDEsIDB4NDAsCisweDA0LCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDIwLCAweDAwLCAweDhELAorMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwNCwgMHg0MCwgMHgzMiwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwKKzB4MDAsIDB4NDAsIDB4MzIsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4RDIsIDB4MDAsIDB4NDAsIDB4MzAsIDB4MDAsCisweENELCAweDEwLCAweDA0LCAweDAzLCAweEQwLCAweDA0LCAweDYwLCAweDMwLCAweDAwLCAweDQxLCAweDIwLCAweDM0LCAweDAxLAorMHg1MCwgMHgwOCwgMHg0MCwgMHgzNywgMHg4MCwgMHgwOSwgMHgwMCwgMHg0NSwgMHgwMCwgMHgxMCwgMHgwQywgMHg0NCwgMHg0MiwKKzB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDYsIDB4MDAsIDB4REYsIDB4MDAsCisweDdDLCAweDAzLCAweEYwLCAweDA1LCAweEMwLCAweDI3LCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDAyLCAweEYyLCAweDAxLAorMHhEMCwgMHgzNiwgMHgwMCwgMHg1RiwgMHgwMCwgMHg0NSwgMHgwMCwgMHhGMCwgMHgwMSwgMHhEMCwgMHgzQywgMHgyMCwgMHhGRCwKKzB4MDAsIDB4NEQsIDB4MDMsIDB4RDAsIDB4MDUsIDB4QzAsIDB4M0YsIDB4MTAsIDB4NTMsIDB4MjAsIDB4NzQsIDB4ODMsIDB4RjAsCisweDAxLCAweEM4LCAweDM3LCAweDgwLCAweDU3LCAweDAwLCAweDRDLCAweDAwLCAweDMxLCAweDAxLCAweEMwLCAweDA0LCAweDQ0LAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgyRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MDYsIDB4QzAsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDIsIDB4QzAsCisweDNELCAweDAwLCAweDNGLCAweDAwLCAweEZELCAweDAwLCAweEYwLCAweDAzLCAweDgyLCAweDNGLCAweDEwLCAweEZGLCAweDgwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwNywgMHhDMCwgMHgzRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMiwgMHg3MCwgMHgwMywKKzB4QzAsIDB4M0YsIDB4MDAsIDB4MkQsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjIsIDB4MDMsIDB4ODAsIDB4MTQsIDB4MjAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAwLCAweEYzLCAweDA5LCAweDhDLCAweDA3LAorMHhGMCwgMHgxRiwgMHhDMCwgMHg3QywgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgyNywgMHhGMCwgMHg5RiwgMHhDMCwgMHg3RiwKKzB4MDIsIDB4RkYsIDB4MDksIDB4RkMsIDB4MjcsIDB4RjAsIDB4OUYsIDB4QzAsIDB4N0QsIDB4MDIsIDB4RUYsIDB4MDEsIDB4Q0MsCisweDA3LCAweEYwLCAweDFFLCAweDQwLCAweDNDLCAweDAwLCAweEYzLCAweDAwLCAweENDLCAweDAzLCAweEIwLCAweDBGLCAweEMwLAorMHgzQywgMHgwMCwgMHhGMywgMHgwMSwgMHhDQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NDcsIDB4NDAsIDB4MTEsIDB4MDAsIDB4NDUsIDB4MDQsIDB4RDAsCisweDExLCAweDUyLCAweDA0LCAweDAwLCAweDBELCAweDAwLCAweDc0LCAweDEwLCAweEQwLCAweDAxLCAweDQwLCAweDA3LCAweDAxLAorMHgxRCwgMHgwNCwgMHg3NCwgMHgxMCwgMHhEMCwgMHg0MCwgMHhDMCwgMHgwNiwgMHgwMSwgMHgxRCwgMHg4MSwgMHg0NCwgMHgwNCwKKzB4RDAsIDB4MTEsIDB4NDAsIDB4NzQsIDB4MDgsIDB4NTEsIDB4MjEsIDB4NDQsIDB4MDcsIDB4MTAsIDB4MTUsIDB4NDIsIDB4NzQsCisweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDA3LCAweDEwLCAweDE5LCAweDQ4LCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzNywgMHgwMCwgMHhDMSwgMHgwNCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwRCwKKzB4NjAsIDB4MzAsIDB4MDUsIDB4Q0QsIDB4MTQsIDB4MzQsIDB4MDMsIDB4RDAsIDB4NEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4QzUsCisweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDI0LCAweDAzLCAweEQwLAorMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMiwgMHg1MCwgMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwKKzB4QzUsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTQsIDB4MEMsIDB4NDAsIDB4NDUsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDA1LCAweDAwLCAweDAxLCAweDQwLCAweDU0LCAweDAwLCAweEQwLCAweDAxLCAweDYwLAorMHgwNCwgMHgzMCwgMHgxRCwgMHgwMCwgMHg3NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxRCwgMHgyMCwKKzB4NzQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NjQsIDB4ODAsIDB4QzAsIDB4MDEsCisweDQwLCAweDM2LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDQzLCAweEQwLCAweEFELCAweDQwLCAweDM2LCAweDA0LCAweEM1LAorMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4QTAsIDB4MzMsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsCisweDAwLCAweERGLCAweDgwLCAweDdDLCAweDgzLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLAorMHgwMywgMHhGMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg2QywgMHgwMywgMHhGMCwgMHgwRCwgMHg0MCwKKzB4ODYsIDB4MDQsIDB4RDMsIDB4MDksIDB4NEMsIDB4MjUsIDB4RjAsIDB4M0QsIDB4QzAsIDB4MjYsIDB4MDAsIDB4RDcsIDB4MDksCisweDBELCAweDAzLCAweDMwLCAweDA5LCAweEMwLCAweDAzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNywgMHg4OCwgMHgwRCwgMHgwMCwgMHgzRiwgMHgwMCwgMHhFQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwKKzB4M0YsIDB4MDAsIDB4RjQsIDB4MDAsIDB4RjEsIDB4MDMsIDB4QzgsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsCisweEEwLCAweDAzLCAweEM4LCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweERDLCAweDAwLCAweEYxLCAweDAzLCAweEM4LCAweDE5LAorMHgwMCwgMHhDRiwgMHgyMSwgMHhCQywgMHgwMSwgMHgzMCwgMHgxNiwgMHhDMiwgMHgzOSwgMHgwMiwgMHhGQiwgMHgwMCwgMHhGQywKKzB4MTMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDA4LCAweDM1LCAweDAwLCAweERGLCAweDA1LCAweDdDLCAweDAzLCAweDMyLCAweDBELCAweEMyLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg0QywgMHgwNywgMHhGMCwgMHgwRCwgMHhDMCwgMHg3NywgMHgwMCwgMHhERiwgMHgwMSwgMHg3QywgMHgwNywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4NzQsIDB4MDAsIDB4REYsIDB4MDEsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4QjUsIDB4MDAsCisweDkzLCAweDAwLCAweDRDLCAweDBBLCAweDcwLCAweDBELCAweEMyLCAweEE0LCAweDAwLCAweEQ3LCAweDAwLCAweDRDLCAweDAyLAorMHhGMCwgMHgwOSwgMHhDMCwgMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwKKzB4MDQsIDB4MTAsIDB4MUQsIDB4MDEsIDB4NzQsIDB4MDAsIDB4MTQsIDB4QjAsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsCisweDQ0LCAweDA0LCAweEMxLCAweEExLCAweDQyLCAweDA3LCAweDAwLCAweDFELCAweDAxLCAweDc0LCAweDg0LCAweEQwLCAweEUxLAorMHg0MCwgMHg0NCwgMHgwMCwgMHgwRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHhCMCwgMHgwMCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhEMSwKKzB4ODAsIDB4NDQsIDB4MTMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MTAsIDB4REQsIDB4MEEsIDB4NDQsIDB4NDYsIDB4RDAsCisweDFELCAweDQwLCAweDRDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDIwLCAweDMwLAorMHgwMCwgMHhDRCwgMHgwMiwgMHgzNCwgMHgwMywgMHgxMCwgMHgzQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwKKzB4MUIsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MTAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsCisweDMwLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDAzLCAweDUwLCAweDBDLCAweDQ0LCAweDMwLCAweDAwLCAweEMxLCAweDAwLAorMHgwNCwgMHg4MywgMHgxNCwgMHgwOCwgMHg0MCwgMHgxMiwgMHgwMCwgMHhDNCwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgxQywKKzB4NDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDgsIDB4MDAsCisweDJELCAweDA5LCAweEY0LCAweDI0LCAweDEwLCAweDEyLCAweDQwLCAweDRCLCAweDAwLCAweDJELCAweDAwLCAweDg0LCAweDI0LAorMHhEMCwgMHgxMiwgMHg0MCwgMHg0QiwgMHgwMCwgMHgyRCwgMHg0MSwgMHhCNCwgMHgwQywgMHhEMCwgMHgxMiwgMHg2MCwgMHhDOCwKKzB4MDAsIDB4MkQsIDB4MDEsIDB4QzQsIDB4MDQsIDB4RDIsIDB4MzIsIDB4NDAsIDB4NzAsIDB4MDAsIDB4NjEsIDB4MDEsIDB4MDUsCisweDA3LCAweDEwLCAweDFDLCAweDQwLCAweDdBLCAweDAwLCAweEVELCAweDAxLCAweDg0LCAweDA3LCAweEQxLCAweDFBLCAweDYwLAorMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxOCwgMHgzMCwgMHgwMCwgMHhDRiwKKzB4MDAsIDB4M0MsIDB4MDMsIDB4MzAsIDB4MEMsIDB4QzMsIDB4MzMsIDB4MDIsIDB4Q0YsIDB4MDgsIDB4MEMsIDB4MDMsIDB4RjAsCisweDBDLCAweEMyLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDNDLCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDMwLCAweDAwLAorMHhDRiwgMHgwMCwgMHgwQywgMHgwMywgMHg3MCwgMHgwQywgMHhDMCwgMHgzMSwgMHgwMCwgMHhDMywgMHgwNCwgMHgwQywgMHgwMywKKzB4NzAsIDB4MEMsIDB4QzAsIDB4MzIsIDB4MDAsIDB4RDcsIDB4MDAsIDB4MEQsIDB4MDMsIDB4RjIsIDB4OEMsIDB4NTEsIDB4NDgsCisweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDM4LCAweDBELCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDOCwgMHgwRiwgMHgwOCwgMHgzRiwgMHgwNCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywKKzB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsCisweDQwLCAweEJDLCAweDAwLCAweEIwLCAweDEzLCAweEM0LCAweDNGLCAweDAyLCAweEZGLCAweDAwLCAweEZFLCAweDAzLCAweEYyLAorMHgwRiwgMHhDMCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQSwgMHhDMiwgMHgwQiwgMHhFMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDEsIDB4MEQsCisweDA3LCAweDM0LCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAxLCAweDRDLCAweDA3LCAweDNDLCAweDBELCAweEMwLAorMHg3NywgMHgwMCwgMHhENywgMHgwMSwgMHg0RCwgMHg4NywgMHgzNCwgMHgxRCwgMHhDMCwgMHg3NSwgMHg0MCwgMHhEMywgMHgwMCwKKzB4N0UsIDB4MDMsIDB4RjAsIDB4MUQsIDB4QzAsIDB4MjQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4QjgsIDB4MDksCisweEMwLCAweDU0LCAweDAwLCAweERCLCAweDAwLCAweDRELCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDQxLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg5MCwgMHgwOCwgMHgwMCwgMHgyRCwgMHgwMCwgMHg4NCwgMHgwMCwKKzB4MTgsIDB4MDIsIDB4NDAsIDB4MEIsIDB4MDAsIDB4M0QsIDB4MDAsIDB4RDQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MEYsCisweDAwLCAweDMxLCAweDAwLCAweEM0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDBDLCAweDAwLCAweDIxLCAweDAwLCAweDlDLAorMHg4MCwgMHhEMCwgMHgwMiwgMHg0MCwgMHgzOSwgMHgwMCwgMHhFMSwgMHgwMCwgMHg4NCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MiwKKzB4MzgsIDB4MDAsIDB4RjEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDAwLCAweEVELCAweDAxLCAweEM0LCAweDg3LCAweDEyLAorMHgxRSwgMHg2MCwgMHg3QiwgMHg4MCwgMHhFOSwgMHgwMSwgMHg4NCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MiwgMHg3QiwgMHgyMCwKKzB4RTUsIDB4MDEsIDB4QTAsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RTksIDB4MDEsIDB4OTQsIDB4MDcsCisweEQwLCAweDFGLCAweDQwLCAweDcyLCAweDA4LCAweEMxLCAweDAxLCAweDA0LCAweDA3LCAweDEwLCAweDFDLCAweDQwLCAweDcwLAorMHgwMCwgMHhFMSwgMHgwMSwgMHg4NCwgMHgwNiwgMHhEMCwgMHgxQSwgMHg0MCwgMHgxMywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjAsIDB4MDMsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQwLCAweDAzLCAweDAwLCAweDBELCAweDAwLCAweDE0LCAweDAwLCAweDE4LCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweDAxLAorMHgwMCwgMHgyNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwMCwgMHgxNCwgMHgwMCwgMHhEMCwKKzB4MDAsIDB4NDAsIDB4MzMsIDB4NDAsIDB4QzEsIDB4MDAsIDB4MDUsIDB4MDMsIDB4MTQsIDB4MEMsIDB4NTAsIDB4MzAsIDB4NTIsCisweDkxLCAweDQ4LCAweDA0LCAweDAyLCAweEQwLCAweDFDLCAweDQwLCAweDVCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNywgMHgyOCwgMHgxNSwgMHgwMCwgMHg1RiwgMHgwMCwgMHg0QywgMHgwMSwgMHgzMCwgMHgwNSwgMHhDMCwKKzB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NEMsIDB4MDEsIDB4MzAsIDB4MDQsIDB4QzAsIDB4MTcsIDB4MTAsIDB4NTcsIDB4MDAsCisweDY0LCAweDAxLCAweDMwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDVCLCAweDAwLCAweDVDLCAweDAxLCAweEYwLCAweDA1LAorMHhDMCwgMHgxRSwgMHgwMCwgMHg3MywgMHgwMiwgMHhDQywgMHgwOSwgMHgzMCwgMHgwNywgMHhDMCwgMHg1QywgMHgwMCwgMHg1MywKKzB4MDEsIDB4NEMsIDB4MDEsIDB4RjIsIDB4MDUsIDB4QzEsIDB4NUYsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDAwLCAweDBELCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDIzLCAweEMwLCAweDBGLAorMHgwMCwgMHgzRiwgMHgyMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhEQywKKzB4MDAsIDB4RjAsIDB4MjMsIDB4QzAsIDB4MEQsIDB4MjAsIDB4MzcsIDB4MDIsIDB4REMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4RTIsCisweDQxLCAweDAwLCAweDBGLCAweDEwLCAweDdDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDE3LCAweDAyLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDUsIDB4N0MsIDB4MTYsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDAwLCAweDdDLCAweDBBLCAweEYwLCAweDI5LCAweEMwLCAweDI0LCAweDAxLCAweDlGLCAweDAxLCAweDVDLCAweDAyLAorMHhGMCwgMHgxOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgyMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MjAsIDB4OTMsIDB4MjAsIDB4MEMsIDB4MDIsIDB4MzQsIDB4MDgsIDB4QzAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDUsIDB4NEMsCisweDA2LCAweEYwLCAweDA5LCAweEMwLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwMiwgMHg5MCwgMHg0OSwgMHg0OCwgMHgyNywgMHgwMCwgMHg5RCwKKzB4MDAsIDB4NzQsIDB4MEEsIDB4RDksIDB4MzksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NzQsIDB4MEEsIDB4RDAsCisweEQ5LCAweDQwLCAweEE3LCAweDgwLCAweDlGLCAweDEyLCAweDM0LCAweDAyLCAweEIwLCAweDA5LCAweDQwLCAweEE3LCAweDIwLAorMHg5MSwgMHg4MiwgMHg0NCwgMHgwQSwgMHgzMCwgMHgyOSwgMHg0MCwgMHhBNCwgMHgwMCwgMHg5RCwgMHgwMiwgMHg0NCwgMHgwNiwKKzB4RDAsIDB4MDgsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsCisweDI0LCAweDAwLCAweEJELCAweDAwLCAweEY0LCAweDAyLCAweEQwLCAweDBCLCAweDQwLCAweDJGLCAweDAwLCAweEI1LCAweDAwLAorMHhGNCwgMHgwMiwgMHhEMCwgMHgwQiwgMHg2MCwgMHgyQywgMHgwMCwgMHhCRCwgMHgwOCwgMHhGNiwgMHgwNiwgMHhEMCwgMHgwQiwKKzB4NDAsIDB4NkYsIDB4MTAsIDB4QkQsIDB4MDAsIDB4RjQsIDB4MDIsIDB4NTAsIDB4MUIsIDB4NDIsIDB4MjcsIDB4MDQsIDB4OTEsCisweDEwLCAweDY0LCAweDQyLCAweDAwLCAweDA5LCAweDQxLCAweDI0LCAweDg0LCAweDlELCAweDAwLCAweDY0LCAweDIyLCAweEQwLAorMHg4OSwgMHg0MCwgMHg2MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyOCwKKzB4MDAsIDB4QUQsIDB4MDEsIDB4QjQsIDB4MDIsIDB4OTEsIDB4MEEsIDB4NDAsIDB4MkIsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QjQsCisweDA2LCAweEQwLCAweDBCLCAweDQyLCAweDI5LCAweDAwLCAweEFELCAweDAxLCAweEI0LCAweDA2LCAweEQwLCAweDBBLCAweDYwLAorMHg2QiwgMHgwMCwgMHhBNSwgMHgwMCwgMHhGNCwgMHgwMiwgMHhEMiwgMHgwQSwgMHg2MCwgMHgyMywgMHg0MSwgMHg4MSwgMHgwNCwKKzB4MjQsIDB4OTIsIDB4OTAsIDB4NDgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4OEQsIDB4NDAsIDB4MjQsIDB4MDIsIDB4RDAsIDB4MDksCisweDQwLCAweDQyLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LCAweDA2LCAweDAwLAorMHgwRiwgMHgwQSwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgxMiwgMHgxNywgMHgwQSwgMHg3QywgMHgyOCwKKzB4RDAsIDB4QTUsIDB4RDAsIDB4ODQsIDB4MDIsIDB4MUQsIDB4MEEsIDB4NUMsIDB4MjgsIDB4RjAsIDB4QTAsIDB4QzAsIDB4ODcsCisweDAyLCAweDFELCAweDAwLCAweDdDLCAweDAwLCAweDYwLCAweDAzLCAweEMwLCAweDA3LCAweDAwLCAweDEzLCAweDAwLCAweDY1LAorMHgwMCwgMHgzMiwgMHgwMSwgMHhEMCwgMHgwNCwgMHgwMCwgMHg1RiwgMHgwQSwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwKKzB4NzQsIDB4RTAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjgsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdDLCAweDAyLCAweEIwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLAorMHgwOSwgMHhDMCwgMHgyNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4QjAsIDB4MDgsIDB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4MDgsIDB4REMsIDB4MjIsCisweDcwLCAweDhCLCAweEMwLCAweDJGLCAweDAyLCAweEJGLCAweDAwLCAweERELCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDc3LAorMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBMCwgMHgyNywgMHgwMCwgMHhCMywgMHgwMCwKKzB4Q0MsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MjQsIDB4MDAsIDB4QkYsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MEEsCisweEMwLCAweDJELCAweDAyLCAweEI3LCAweDAwLCAweEZFLCAweDAyLCAweEYwLCAweDhCLCAweEMwLCAweDJGLCAweDAwLCAweDlGLAorMHgwMCwgMHgzQywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5RiwgMHgwMCwgMHg2RCwgMHgxMiwgMHgzMCwKKzB4NDksIDB4QzEsIDB4MjQsIDB4MDEsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4RjAsIDB4MEIsIDB4QzAsIDB4NzMsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDA1LCAweDAwLCAweDExLCAweDA0LCAweDQ1LAorMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxRCwgMHgwMCwgMHg0NSwgMHg1MCwgMHg3MCwgMHg0MSwgMHg0MCwKKzB4MDQsIDB4MDEsIDB4MTEsIDB4MTAsIDB4NzQsIDB4NDAsIDB4RDEsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDUsIDB4MUQsIDB4MDAsCisweDc0LCAweDAwLCAweEQwLCAweDAxLCAweDQwLCAweDA1LCAweDAwLCAweDFELCAweDA4LCAweDQ0LCAweDAwLCAweDEwLCAweDAxLAorMHg0MCwgMHgwQywgMHgxMiwgMHgwMSwgMHgxMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg2MywgMHgwMCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjAsIDB4MjUsIDB4NDAsIDB4ODEsIDB4MTQsIDB4MDQsIDB4MDIsCisweEQwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDlELCAweDAwLCAweDA0LCAweDEyLCAweEQwLCAweDQ4LCAweDQxLCAweDIxLAorMHgyMSwgMHg4NSwgMHgwNCwgMHgzMCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMSwgMHhBRCwgMHgwMCwgMHhCNCwKKzB4MDMsIDB4RDAsIDB4MEIsIDB4NDAsIDB4NkEsIDB4MDIsIDB4QUQsIDB4MDEsIDB4ODQsIDB4MjYsIDB4MTAsIDB4MUEsIDB4NDAsCisweDY4LCAweDAwLCAweDk5LCAweDA0LCAweDA1LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDRCLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyOCwgMHgyNSwgMHgwMCwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4MjQsIDB4ODAsIDB4OUQsIDB4NDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsCisweDkxLCAweDgwLCAweDc0LCAweDAyLCAweEQyLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweEY0LCAweDgyLAorMHhEMCwgMHgwQiwgMHg0MCwgMHgyRiwgMHgwMCwgMHhCRCwgMHgwMCwgMHhDNCwgMHgwMiwgMHgxMCwgMHgwQiwgMHg0MCwgMHgyQywKKzB4MTAsIDB4OTksIDB4MDEsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDI1LCAweDAwLCAweDkzLCAweDAwLCAweDQ4LCAweDAyLCAweEYwLCAweDA4LAorMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgyMCwgMHg0QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5NSwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4RTAsIDB4MDksIDB4ODAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0UsIDB4MDIsIDB4RjAsCisweDA5LCAweEMwLCAweEE2LCAweDAyLCAweDlGLCAweDAzLCAweDRDLCAweDJBLCAweDM0LCAweEI5LCAweEMwLCAweEE0LCAweDAwLAorMHg4QiwgMHhBMCwgMHg0QywgMHg4MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgxNywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTYsIDB4MDgsIDB4MjQsIDB4MDAsIDB4OUYsIDB4ODAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4RDAsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweDcwLCAweDA5LCAweEM4LCAweDI3LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDMsIDB4NUMsIDB4MDYsIDB4RjAsIDB4MTksIDB4RDAsIDB4MjcsIDB4NDAsIDB4OTcsCisweDIwLCAweDdDLCAweDEyLCAweEYwLCAweDA5LCAweEMwLCAweDVCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3RSwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywKKzB4MDAsIDB4MTMsIDB4MTAsIDB4N0MsIDB4MDAsIDB4RjIsIDB4ODEsIDB4RDEsIDB4MDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDYwLCAweEYyLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgwMywgMHgwMCwgMHgzQywgMHgwMCwgMHhGMCwgMHgwMCwgMHhDMCwgMHgwMywgMHgwMCwgMHgxRiwgMHgwMCwKKzB4NEQsIDB4MDQsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEwLCAweDIwLCAweDEwLCAweDAwLCAweDdELCAweDAwLCAweDc2LCAweDQ1LCAweEQwLCAweDA3LCAweEMwLCAweDE1LCAweDIwLAorMHg2NSwgMHgwMCwgMHhGNCwgMHgwOSwgMHhEMCwgMHgyNywgMHhEMCwgMHgxNiwgMHgwMCwgMHg3NywgMHgwMCwgMHhGNCwgMHgwOSwKKzB4RDIsIDB4MDcsIDB4NDAsIDB4MUYsIDB4MDAsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4MTQsIDB4MDQsIDB4QzAsIDB4MTUsCisweDAwLCAweDUxLCAweDAxLCAweDc0LCAweDAxLCAweEQwLCAweDE1LCAweDQwLCAweDU3LCAweDEwLCAweDdELCAweDQxLCAweEM0LAorMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHg0MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QTAsIDB4MzIsIDB4MDAsIDB4REQsIDB4NDAsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MDQsIDB4NDAsIDB4MzEsIDB4ODAsIDB4NDksCisweDAwLCAweDM0LCAweDRCLCAweEQwLCAweDNELCAweDQwLCAweDM2LCAweDMwLCAweENELCAweDAwLCAweDM0LCAweDA3LCAweEQ4LAorMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMSwgMHgwMCwKKzB4QzEsIDB4MjEsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MUMsIDB4NDAsIDB4NzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MDcsCisweEQwLCAweDBDLCAweDQwLCAweDQzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLAorMHgzOCwgMHgwMCwgMHg2RCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MCwgMHg3OSwgMHgwMiwgMHg2RCwgMHgxMCwKKzB4QjYsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NTgsIDB4MkEsIDB4MDAsIDB4NkQsIDB4MDAsIDB4QjQsIDB4MDEsIDB4RDksIDB4MDIsCisweDQwLCAweDFCLCAweDAwLCAweEFELCAweDAwLCAweEI0LCAweDA3LCAweDEwLCAweDA2LCAweDQwLCAweDcxLCAweDQwLCAweEUxLAorMHgxMCwgMHhCNCwgMHgwMiwgMHhEMCwgMHgwRSwgMHg0MSwgMHgzQiwgMHgwNCwgMHhFRCwgMHgwMiwgMHg4NCwgMHg0MywgMHhEMCwKKzB4MEEsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NzgsCisweDAwLCAweEFGLCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDE2LCAweEMwLCAweDdELCAweDAwLCAweDZCLCAweDAxLCAweEJDLAorMHgwNiwgMHhGMCwgMHgxNiwgMHhEMCwgMHg3QSwgMHgwMCwgMHhBRiwgMHgwMSwgMHhCNCwgMHgwNiwgMHhGMCwgMHgxRSwgMHhDMCwKKzB4NkIsIDB4MDAsIDB4NkYsIDB4MDEsIDB4QjgsIDB4MDcsIDB4MzAsIDB4MUEsIDB4QzAsIDB4NTksIDB4MDAsIDB4NjMsIDB4MDEsCisweEJDLCAweDA1LCAweEYwLCAweDE2LCAweEMwLCAweDVCLCAweDAwLCAweEVGLCAweDAxLCAweDhDLCAweDA3LCAweEYwLCAweDFFLAorMHhDMCwgMHg1MywgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgzNSwgMHgwMCwKKzB4MUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NzUsIDB4MjAsIDB4NTcsIDB4MDAsIDB4N0MsIDB4MDAsCisweEYwLCAweDA1LCAweEQwLCAweDI3LCAweDAwLCAweDE3LCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMSwgMHhDMiwgMHgxNSwgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywKKzB4MDAsIDB4RjgsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsCisweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDdELCAweDAwLCAweEZGLAorMHgwMSwgMHhCQywgMHgwNywgMHhGOCwgMHg4NywgMHhDMCwgMHg3QywgMHgwMCwgMHhCMywgMHg4OSwgMHhDQywgMHgwNSwgMHhBMCwKKzB4MUIsIDB4QzAsIDB4N0YsIDB4MjAsIDB4RjMsIDB4MDEsIDB4REMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzAsIDB4N0MsIDB4MDAsCisweEYzLCAweDAxLCAweENDLCAweDA2LCAweEYyLCAweDFGLCAweEMwLCAweDdGLCAweDAwLCAweEJGLCAweDAxLCAweENDLCAweDA3LAorMHhGMCwgMHgxQiwgMHhDMCwgMHg2QywgMHgwMCwgMHhGMywgMHgwMSwgMHhGQywgMHgwNSwgMHgzMCwgMHgxRiwgMHhDMCwgMHgxQiwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDAsIDB4MzksIDB4MDAsIDB4NkQsIDB4MDAsCisweDlDLCAweDAzLCAweDE4LCAweDBBLCAweDQwLCAweDM4LCAweDAwLCAweEExLCAweDAwLCAweEM0LCAweDAzLCAweDExLCAweDBBLAorMHg0MCwgMHgyQiwgMHgwMCwgMHg3MSwgMHgwMCwgMHhDNCwgMHgwMiwgMHgxMCwgMHgwMiwgMHg0MCwgMHgxQywgMHgwMCwgMHhBMSwKKzB4MDAsIDB4ODQsIDB4MEEsIDB4RDAsIDB4MDYsIDB4NDAsIDB4M0IsIDB4MDAsIDB4QUQsIDB4MDAsIDB4ODQsIDB4MDIsIDB4RDAsCisweDBBLCAweDQwLCAweDI4LCAweDEyLCAweEUxLCAweDAwLCAweEI0LCAweDAwLCAweEIwLCAweDBFLCAweDQwLCAweDU3LCAweDIwLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwgMHhBRCwgMHgwMCwgMHhCNCwKKzB4MDMsIDB4NTAsIDB4ODcsIDB4NDAsIDB4M0MsIDB4MDAsIDB4QjEsIDB4MDAsIDB4ODQsIDB4MjAsIDB4MTAsIDB4MDIsIDB4NDAsCisweEJGLCAweDAwLCAweEE5LCAweDAwLCAweDg0LCAweDAxLCAweDEwLCAweDBGLCAweDQwLCAweDJBLCAweDAwLCAweDc5LCAweDAyLAorMHg4NCwgMHgwMiwgMHhEMCwgMHgwQSwgMHg0MCwgMHgxQiwgMHgwMCwgMHgwRCwgMHgwMCwgMHg4NCwgMHgwMSwgMHhEMCwgMHg4MCwKKzB4NDAsIDB4MDAsIDB4MDAsIDB4QTEsIDB4MDAsIDB4RjQsIDB4NDAsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDI4LCAweEYxLCAweDAwLCAweDFELCAweDAyLCAweDM0LCAweDQzLAorMHgxMCwgMHgwMCwgMHg0MSwgMHhCMCwgMHgwNCwgMHg4MSwgMHgwNCwgMHgwNCwgMHgzNCwgMHg5MSwgMHgzOCwgMHg0MCwgMHgyMywKKzB4MDAsIDB4MDksIDB4MEQsIDB4MDQsIDB4MzQsIDB4MTAsIDB4MDAsIDB4NDEsIDB4NDIsIDB4NDMsIDB4MDksIDB4MjAsIDB4MDQsCisweDA2LCAweEQwLCAweDEwLCAweDQwLCAweDEzLCAweDAwLCAweDBELCAweDEyLCAweDA0LCAweDAwLCAweEQwLCAweDAwLCAweDQwLAorMHg4MCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgzNCwgMHg4NCwgMHg5MCwgMHgwQywgMHg0MCwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4QjUsIDB4MDAsIDB4REYsIDB4MDUsIDB4N0MsIDB4MDcsIDB4NTAsCisweDI0LCAweEMwLCAweDM4LCAweDAwLCAweDkzLCAweDAyLCAweDQ0LCAweDBCLCAweEIwLCAweDA1LCAweEMwLCAweDczLCAweDAwLAorMHhEOSwgMHgwMiwgMHg0NCwgMHgwQiwgMHgxMCwgMHgyQywgMHhDMCwgMHhCNiwgMHgwMCwgMHhDQiwgMHgwMCwgMHgwQywgMHg2OSwKKzB4RjEsIDB4MkQsIDB4NDEsIDB4NjcsIDB4MDAsIDB4REYsIDB4MDMsIDB4NEQsIDB4MDcsIDB4RjAsIDB4QkQsIDB4RDAsIDB4NzQsCisweDQwLCAweEQzLCAweDAwLCAweDNDLCAweDA1LCAweDMwLCAweDBELCAweEMwLCAweDU3LCAweDAwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgzNywgMHgwNiwgMHg5RiwgMHgxMCwgMHg1QywgMHgyMywgMHg3MCwgMHgxRCwKKzB4QzAsIDB4NzcsIDB4MDAsIDB4OUYsIDB4MDMsIDB4N0MsIDB4MDIsIDB4NzEsIDB4ODUsIDB4QzAsIDB4MzcsIDB4MjIsIDB4OTcsCisweDAyLCAweDdDLCAweDAxLCAweEYwLCAweDNELCAweEMwLCAweDI1LCAweDAwLCAweDk3LCAweDA4LCAweDdDLCAweDAxLCAweEYwLAorMHgwNSwgMHhDMSwgMHg2MywgMHgwMCwgMHhERiwgMHg4MSwgMHg3QywgMHgwNiwgMHhGMCwgMHgxRCwgMHhDMiwgMHg3NywgMHgxNCwKKzB4REYsIDB4MDMsIDB4N0MsIDB4MDEsIDB4RjAsIDB4OEQsIDB4QzIsIDB4MTcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDNGLCAweDAwLCAweDdGLCAweDAwLCAweENDLCAweDBGLCAweEYwLCAweDA3LCAweEMwLAorMHgzRSwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgxNywgMHgzMiwgMHgwMywgMHhDNSwgMHgyQywgMHgwMCwgMHg3MywgMHgwMCwKKzB4Q0UsIDB4MDIsIDB4MzAsIDB4MTMsIDB4QzAsIDB4MUMsIDB4MDEsIDB4NzIsIDB4MDAsIDB4Q0MsIDB4MDEsIDB4MzAsIDB4MEIsCisweEMwLCAweDBGLCAweDAyLCAweDczLCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDA3LCAweEMwLCAweDFGLCAweDAwLCAweEZGLAorMHgwMCwgMHhDQywgMHgwMSwgMHgzMCwgMHgwRiwgMHhDMCwgMHgwMywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4ODEsIDB4MjAsIDB4MzYsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MzQsCisweDIwLCAweDkxLCAweDA5LCAweDc0LCAweDA0LCAweDEwLCAweDEwLCAweDQxLCAweDI0LCAweDAwLCAweDExLCAweDAyLCAweDQ0LAorMHgwMCwgMHgxMCwgMHgxMSwgMHg0MCwgMHhDNCwgMHgwMSwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwOSwgMHgxMCwgMHgwMSwgMHhDMCwKKzB4MDUsIDB4MDAsIDB4NTEsIDB4MjAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTcsIDB4MTAsIDB4REQsIDB4MDAsCisweDQ0LCAweDA1LCAweDEwLCAweDBELCAweDQwLCAweDA3LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHhBMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwNCwgMHg0NCwgMHgwMiwgMHhEOCwgMHg4NSwgMHg0MCwgMHgzNiwgMHgwMCwKKzB4OTEsIDB4MDIsIDB4MTQsIDB4MDEsIDB4MTgsIDB4MTUsIDB4NDAsIDB4MzQsIDB4ODEsIDB4QzksIDB4MDYsIDB4MDQsIDB4MDMsCisweDEwLCAweDZELCAweDQwLCAweDMyLCAweDgwLCAweEQ1LCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDBELCAweDQwLCAweDI3LAorMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHhDRCwgMHg4NiwgMHg0NCwKKzB4MDQsIDB4MTAsIDB4MUQsIDB4NDAsIDB4MDcsIDB4MDgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweDMwLCAweDAwLCAweDhELCAweDAwLCAweDA1LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDM2LCAweDAwLCAweDgxLAorMHgwMCwgMHgzNCwgMHgwMiwgMHgxNCwgMHgwRCwgMHg1MCwgMHgzNCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwNSwgMHgwMiwgMHgxNCwKKzB4MEQsIDB4NjAsIDB4MjIsIDB4NDAsIDB4OTUsIDB4QTAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MjMsIDB4NDAsCisweDgxLCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDA0LAorMHgxNCwgMHgwQywgMHg0MCwgMHg0MywgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKzB4MzYsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MzYsIDB4MDAsIDB4OTMsIDB4MDAsCisweDdDLCAweDAxLCAweDMwLCAweDAxLCAweEMwLCAweDI0LCAweDEwLCAweDVCLCAweDgwLCAweDQ2LCAweDgxLCAweDMwLCAweDAxLAorMHhDMCwgMHgxNiwgMHgwMCwgMHg1NywgMHgwMCwgMHg0QywgMHgwMCwgMHgzMCwgMHgwOSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxMywKKzB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MzAsCisweDBELCAweEMwLCAweDAzLCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDNGLAorMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwNiwgMHhDMCwgMHgzOSwgMHgwMCwgMHhBRiwgMHg4MCwgMHhGQywKKzB4MDAsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkIsIDB4ODAsIDB4M0YsIDB4MDAsIDB4RkUsIDB4MDAsIDB4RjAsIDB4MDIsIDB4QzAsCisweDBELCAweDAwLCAweDJCLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBELCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhCQywgMHgwMCwgMHhGMCwgMHgwRiwKKzB4QzAsIDB4MTcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4MkYsIDB4MDAsCisweEZGLCAweDAxLCAweEZDLCAweDAyLCAweEYwLCAweDBGLCAweEMwLCAweDVELCAweDAwLCAweDZGLCAweDAxLCAweENDLCAweDA2LAorMHhGMSwgMHgwRiwgMHhDMCwgMHg3QywgMHgwMCwgMHgzMywgMHgwMywgMHhFQywgMHgyNCwgMHhCMiwgMHhDRiwgMHhDOCwgMHgzQywKKzB4MjEsIDB4RkIsIDB4ODQsIDB4REMsIDB4ODcsIDB4QjAsIDB4MEYsIDB4NDAsIDB4NUMsIDB4MDIsIDB4M0YsIDB4MDgsIDB4QUMsCisweDg1LCAweEIwLCAweDBGLCAweEMyLCAweDVGLCAweDAwLCAweDM3LCAweDgwLCAweENELCAweDA2LCAweDkwLCAweDBCLCAweDgwLAorMHgwRSwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNywgMHgwMCwgMHhERCwKKzB4MDEsIDB4NzQsIDB4MDAsIDB4RDAsIDB4M0QsIDB4NDIsIDB4NjAsIDB4MDAsIDB4MUQsIDB4MDEsIDB4NDQsIDB4MDYsIDB4RDIsCisweDFELCAweDQwLCAweDdDLCAweDAwLCAweDExLCAweDIwLCAweDQ0LCAweDEwLCAweDEwLCAweEFGLCAweDQwLCAweDdDLCAweDAyLAorMHhGMSwgMHgwMiwgMHg0NCwgMHgwNywgMHgxNCwgMHg2RCwgMHg0MCwgMHgwNCwgMHgwMSwgMHg5RCwgMHgwNCwgMHg1NCwgMHg4NSwKKzB4MTAsIDB4OUYsIDB4MDAsIDB4NDcsIDB4NDAsIDB4OTMsIDB4OEIsIDB4NDQsIDB4NTIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MEQsCisweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDAzLCAweDAwLCAweENELCAweDAwLAorMHgzNCwgMHgwMCwgMHhEMCwgMHgyQywgMHg0MCwgMHgzMSwgMHgwMCwgMHg0RCwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEMCwgMHgwQywKKzB4NjAsIDB4MzAsIDB4MjAsIDB4MTAsIDB4MDQsIDB4NjQsIDB4MTAsIDB4OTAsIDB4NEMsIDB4NDgsIDB4MzAsIDB4MTAsIDB4QzksCisweDA4LCAweDM0LCAweDAzLCAweDAyLCAweDJDLCAweDQ1LCAweDEyLCAweDAxLCAweDBELCAweDAwLCAweDI0LCAweDAxLCAweEQwLAorMHgwQywgMHg0MiwgMHgzMywgMHgxMCwgMHgwOSwgMHgyMCwgMHgwNCwgMHgwMywgMHgxMCwgMHgwMCwgMHg0MCwgMHg0RCwgMHg4MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4NjQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsCisweDA0LCAweEMwLCAweDBELCAweDYwLCAweDI0LCAweDAwLCAweDFELCAweDA0LCAweDQ1LCAweDAyLCAweEQwLCAweDBELCAweDQwLAorMHgzNCwgMHgwOCwgMHgxMSwgMHgwMCwgMHg2NCwgMHg0NCwgMHgxMCwgMHgwRCwgMHg0OCwgMHgzNCwgMHg4MCwgMHhEMSwgMHgwMCwKKzB4NjQsIDB4MDMsIDB4NTAsIDB4MEQsIDB4NDAsIDB4MDYsIDB4MDQsIDB4OEQsIDB4MTEsIDB4NzQsIDB4ODUsIDB4NTQsIDB4MEQsCisweDQyLCAweDA3LCAweDAwLCAweDU1LCAweDA4LCAweDQ0LCAweDAyLCAweDEwLCAweDExLCAweDQxLCAweDBELCAweDIwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMCwgMHg2NiwgMHgwMCwgMHhERiwgMHgwMCwgMHg3OCwgMHg0RSwKKzB4RTAsIDB4MEQsIDB4QzAsIDB4MjUsIDB4MTAsIDB4NEYsIDB4MDcsIDB4NEMsIDB4MjIsIDB4RjAsIDB4OUQsIDB4NDAsIDB4MzQsCisweDQwLCAweDEzLCAweDBELCAweDJDLCAweDBDLCAweEIyLCAweDBELCAweEQwLCAweDM0LCAweDEwLCAweERCLCAweDAwLCAweDc0LAorMHgwMywgMHgzMCwgMHgwRCwgMHg1MCwgMHgwNiwgMHgyOCwgMHg5RSwgMHgwMSwgMHg2QywgMHgxNCwgMHhGMCwgMHgwRCwgMHhDMCwKKzB4MTMsIDB4MDAsIDB4MUIsIDB4MDMsIDB4NEMsIDB4MDYsIDB4MzAsIDB4MTksIDB4QzAsIDB4MjEsIDB4ODAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDg4LCAweDJELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLAorMHgwRSwgMHhDMCwgMHgyRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywgMHgwNiwgMHhGMCwgMHgwRSwgMHhDMCwgMHgzRiwgMHgwMCwKKzB4RkYsIDB4MDAsIDB4REMsIDB4MDIsIDB4NzAsIDB4MEUsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RUYsIDB4MDAsIDB4REMsIDB4MDMsCisweEIwLCAweDBGLCAweEMyLCAweDBELCAweDEwLCAweEJELCAweDAwLCAweERDLCAweDAxLCAweEI0LCAweDBGLCAweEMwLCAweDhGLAorMHg1MCwgMHg2QiwgMHgwMCwgMHhGQywgMHgyNiwgMHhGNCwgMHgwQSwgMHhDMCwgMHgxRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4ODUsIDB4MDIsIDB4REYsIDB4MDAsIDB4N0MsIDB4NDAsIDB4MzAsIDB4MEQsCisweEMwLCAweDM3LCAweDAwLCAweDU3LCAweDAyLCAweDRDLCAweDQyLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAyLCAweERGLAorMHgwMCwgMHg3QywgMHgwQSwgMHhGMCwgMHgwRCwgMHhDNCwgMHgzNCwgMHgwQSwgMHhERiwgMHgwMCwgMHg1QywgMHgyMywgMHg3MCwKKzB4MEQsIDB4QzEsIDB4MTUsIDB4MDAsIDB4MTMsIDB4MDIsIDB4NEMsIDB4MDAsIDB4NTAsIDB4MEQsIDB4QzksIDB4MzYsIDB4MDgsCisweDE3LCAweDEyLCAweDRELCAweDAzLCAweEYwLCAweDA5LCAweDgyLCAweDJCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgyNCwgMHgwMCwgMHhERCwgMHg2MCwgMHg3MCwgMHgxOCwgMHgxMCwgMHgwRiwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4NTEsIDB4MDUsIDB4NDQsIDB4NEUsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsCisweDc0LCAweDAyLCAweEQwLCAweEFGLCAweDQwLCAweDM4LCAweDAyLCAweEZELCAweDAwLCAweDM0LCAweDJCLCAweEIwLCAweDJFLAorMHg0MCwgMHgwNCwgMHg0MCwgMHgxMSwgMHgwOCwgMHgyQywgMHgwMywgMHgxMCwgMHgyRiwgMHg0OCwgMHgwNCwgMHgwMiwgMHg1MSwKKzB4MDAsIDB4NDQsIDB4MTMsIDB4RDAsIDB4MDksIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAzLCAweDIwLCAweEMwLCAweDA0LCAweENELCAweDAwLCAweDM0LCAweDBFLCAweDUwLCAweDBDLCAweDQwLCAweDEzLAorMHgwMCwgMHgwNSwgMHgwNiwgMHgwNSwgMHgwRSwgMHhEMCwgMHgwOCwgMHg0MCwgMHhGMywgMHgwNCwgMHgwRCwgMHgwMCwgMHgzNCwKKzB4MDAsIDB4RDAsIDB4MEMsIDB4NjAsIDB4NzAsIDB4MDAsIDB4Q0QsIDB4MDcsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDgsCisweDExLCAweDgwLCAweDA0LCAweDAwLCAweDA0LCAweDAwLCAweDQwLCAweDNDLCAweDQwLCAweDkwLCAweDAwLCAweDQ5LCAweDAyLAorMHg0NCwgMHgxMywgMHhEMSwgMHg1MCwgMHg0NCwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4NTgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDEsIDB4NTAsIDB4MUUsIDB4NDAsIDB4NkIsIDB4MDAsCisweDMxLCAweDAxLCAweDg0LCAweDA2LCAweEQwLCAweDFBLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LAorMHhEMCwgMHgxQywgMHg0MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgzMSwgMHhCNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg0OCwKKzB4ODAsIDB4RTUsIDB4MDEsIDB4RTQsIDB4MDQsIDB4MTAsIDB4OUMsIDB4NDAsIDB4NEMsIDB4MDEsIDB4QzksIDB4MDEsIDB4ODQsCisweDE2LCAweEQ4LCAweDlBLCAweDQwLCAweDNGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHgxQSwgMHg5MCwgMHgwMiwgMHhDRiwgMHgwMCwgMHg3QywgMHgyMywgMHg3MCwgMHgwQywgMHhDMCwgMHgzMywgMHgwMCwgMHgwNywKKzB4MDQsIDB4MEMsIDB4MDIsIDB4RjAsIDB4NEMsIDB4QzAsIDB4MzMsIDB4MDEsIDB4Q0QsIDB4MDAsIDB4M0MsIDB4MDIsIDB4RjAsCisweDhDLCAweDQwLCAweDMwLCAweDAyLCAweENGLCAweDAwLCAweDNDLCAweDAzLCAweDMwLCAweERELCAweEMwLCAweDE1LCAweDJBLAorMHg1NywgMHgyNCwgMHgwQywgMHg2MSwgMHg3MCwgMHg4QywgMHhDOSwgMHgyMiwgMHg5MCwgMHg4OSwgMHgxMiwgMHgwQywgMHgwMywKKzB4RjAsIDB4MDAsIDB4QzEsIDB4NEIsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsCisweDNELCAweDA4LCAweEZGLCAweDAwLCAweEZDLCAweDEzLCAweEIwLCAweDBGLCAweEMxLCAweDJGLCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgyMiwgMHhGMCwgMHgwRiwgMHhDMCwgMHg3NywgMHgwMCwgMHhERiwgMHgwOCwgMHhGQywgMHgyMywgMHhGMCwgMHgyRCwKKzB4NTIsIDB4M0YsIDB4MjAsIDB4REYsIDB4MDAsIDB4M0MsIDB4MDMsIDB4RjQsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MjAsIDB4REIsCisweDAwLCAweDdDLCAweDgxLCAweEYwLCAweDhGLCAweEMyLCAweDBCLCAweDgxLCAweEY3LCAweDAwLCAweEYwLCAweDEyLCAweEYwLAorMHgwMywgMHhDMiwgMHgwQiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweDFGLCAweDAwLCAweDZDLCAweDAxLCAweEYwLCAweDBELCAweEMwLAorMHhCNywgMHgwMCwgMHhERiwgMHgwOCwgMHgzQywgMHgwMywgMHgzMSwgMHgxRCwgMHhDOCwgMHgwNywgMHgxMCwgMHg5RiwgMHgwMCwKKzB4NEYsIDB4MDAsIDB4RjAsIDB4NEQsIDB4QzgsIDB4MTAsIDB4MDgsIDB4OUIsIDB4MDAsIDB4NEQsIDB4ODMsIDB4MzAsIDB4MDEsCisweEMwLCAweDQwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDM5LCAweDAwLAorMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMywgMHg0RSwgMHg0MCwgMHgyQiwgMHgwMCwgMHgyRCwgMHgwMCwgMHg5QywgMHgwMiwKKzB4RDAsIDB4MEEsIDB4NjAsIDB4QkIsIDB4MTAsIDB4RkMsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4NEUsIDB4NDAsIDB4QkIsCisweDA0LCAweEVELCAweDBDLCAweEI0LCAweDAzLCAweDQwLCAweDJFLCAweDQwLCAweDBCLCAweDAwLCAweEVELCAweDIwLCAweDg0LAorMHgwMCwgMHhEMCwgMHhBRSwgMHg0MCwgMHgwOCwgMHgwMCwgMHhFNywgMHgwMCwgMHhDNCwgMHg4MywgMHgxMiwgMHgwRiwgMHg0MCwKKzB4NEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDIsIDB4NTksIDB4MTgsIDB4RTUsCisweDAxLCAweEI0LCAweDA3LCAweDUwLCAweDVFLCAweDQwLCAweDdCLCAweDAwLCAweDJELCAweDAxLCAweEI0LCAweDA2LCAweDUwLAorMHgxRSwgMHg0MCwgMHg3QiwgMHgwMSwgMHhFRCwgMHgxMSwgMHg4NCwgMHgwNywgMHhEMCwgMHhERSwgMHg0MCwgMHg3QiwgMHgwMSwKKzB4RUQsIDB4ODEsIDB4QjQsIDB4MDcsIDB4MDAsIDB4NEUsIDB4NDAsIDB4NUIsIDB4MjAsIDB4RUQsIDB4MDEsIDB4OTQsIDB4MDQsCisweEQxLCAweDVDLCAweDUwLCAweDY5LCAweDAwLCAweDg1LCAweDAxLCAweDk0LCAweDBGLCAweDEwLCAweDE2LCAweDQwLCAweDEyLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyOCwgMHhCMywgMHg4MCwgMHhDRCwgMHg0MCwKKzB4MzQsIDB4MjcsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MjMsIDB4MTEsIDB4OEQsIDB4MDMsIDB4MTQsIDB4MDcsIDB4RDAsIDB4MEMsCisweDQwLCAweDMzLCAweDAwLCAweENELCAweDAxLCAweDA0LCAweDQ3LCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHg4MywgMHgwMCwgMHgwQywgMHg0NCwgMHhBMywgMHgwMiwgMHhERCwgMHgwMiwgMHgwNCwgMHgwNSwgMHhEMCwKKzB4MEMsIDB4NDQsIDB4MDEsIDB4MDAsIDB4QzUsIDB4MDcsIDB4MTQsIDB4ODcsIDB4MTAsIDB4NkMsIDB4NDAsIDB4NUEsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDIwLCAweDFELCAweDA0LCAweDVGLCAweDAwLCAweEZDLAorMHgwOSwgMHhGMCwgMHgwNSwgMHhDMCwgMHhERiwgMHgwMSwgMHg3RiwgMHg0NCwgMHg3NCwgMHg0NSwgMHhGOCwgMHgwNSwgMHhDMCwKKzB4MTcsIDB4MDAsIDB4N0YsIDB4MDIsIDB4Q0QsIDB4OTUsIDB4RjAsIDB4MDUsIDB4NDAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4ODAsCisweDNDLCAweDAxLCAweDMxLCAweDA1LCAweEMwLCAweDVGLCAweDAwLCAweDdGLCAweDAyLCAweDhDLCAweEJELCAweEYxLCAweDA1LAorMHhDMCwgMHgxRCwgMHgwMCwgMHg2NywgMHgwNywgMHg1QywgMHgwMSwgMHgzNiwgMHgyNywgMHhDNCwgMHg1RSwgMHgwMCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4MDUsIDB4MDQsIDB4MUYsIDB4MDAsIDB4N0MsIDB4ODAsCisweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDA4LCAweDFGLCAweDEwLCAweDcwLCAweDAwLCAweEY5LCAweDAxLCAweEM0LCAweDA3LAorMHgwMCwgMHgxRiwgMHgwNCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHg0MiwgMHg3QywKKzB4MDgsIDB4RjQsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDEsIDB4MUQsIDB4ODIsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QTAsCisweDg2LCAweDAwLCAweDE2LCAweDAwLCAweDY4LCAweDA4LCAweEYyLCAweDAxLCAweEQwLCAweDQ5LCAweDIwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg2NSwgMHgwMSwgMHg5NywgMHgwMCwgMHg3QywgMHg0RSwgMHhGOCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4ODIsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzgsIDB4MjcsIDB4ODksCisweDkzLCAweDgwLCAweDdDLCAweDAyLCAweDMwLCAweDE5LCAweEMwLCAweDY0LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDE2LAorMHgzMCwgMHgwOCwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgzOSwgMHg0QywgMHgwMiwgMHgzNCwgMHgyOSwgMHhEOCwgMHgyNCwKKzB4NDAsIDB4OTEsIDB4MDksIDB4NEMsIDB4MEUsIDB4MzQsIDB4MDgsIDB4QzAsIDB4NDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDY2LCAweDAxLCAweDlELCAweDAwLCAweDc0LCAweDBFLCAweEQwLCAweDA5LAorMHg2MCwgMHgyMywgMHgyMCwgMHg5MSwgMHgwMywgMHg3NiwgMHgwNiwgMHhEMCwgMHgwOSwgMHg0MCwgMHhFQiwgMHg4MSwgMHg4QiwKKzB4MDAsIDB4NkMsIDB4MDIsIDB4NTAsIDB4MTksIDB4RDAsIDB4NjQsIDB4MTIsIDB4OUQsIDB4MDIsIDB4NzQsIDB4MDIsIDB4QjAsCisweDA5LCAweEMwLCAweDI2LCAweDAwLCAweDlELCAweDQzLCAweDQ1LCAweDJFLCAweDEwLCAweDM4LCAweDQ4LCAweEEwLCAweDExLAorMHg5MSwgMHgwMSwgMHg0NCwgMHgwMiwgMHgxMiwgMHgyOSwgMHg0MCwgMHgwNSwgMHg4MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MTgsIDB4OUQsIDB4MDAsIDB4NTQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDAsCisweDI3LCAweDAwLCAweDkxLCAweDEwLCAweDc0LCAweDBFLCAweEQxLCAweDA5LCAweDQ4LCAweDI1LCAweDgwLCAweDkxLCAweDAwLAorMHgxNCwgMHgwMiwgMHgxMCwgMHg4OCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMiwgMHg1NCwgMHgwQSwgMHg5MCwgMHgwOSwKKzB4NDQsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTUsCisweDAyLCAweDI1LCAweDAyLCAweDEwLCAweDQ5LCAweDYwLCAweDYwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyMiwgMHgyMCwgMHgwNSwgMHg4RCwgMHgwMCwgMHgzNCwgMHg1MiwgMHhEMCwgMHgwOCwgMHg0MCwgMHhBNywKKzB4MDgsIDB4ODEsIDB4MDAsIDB4MzYsIDB4MDIsIDB4REEsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTEsIDB4MDgsIDB4MDQsCisweDIyLCAweDEwLCAweDhDLCAweDYwLCAweDIyLCAweDgwLCAweDhELCAweDI0LCAweDM0LCAweDAyLCAweDk0LCAweDU4LCAweDQwLAorMHgyMiwgMHgwMCwgMHg4RCwgMHgwQywgMHg0NCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgyNCwgMHgwMCwgMHg4NSwgMHgwMCwKKzB4MjQsIDB4MjIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4NDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFELCAweEI4LCAweDA2LCAweDExLCAweDFGLCAweDAwLCAweDVDLCAweDEwLCAweEQwLCAweDQxLCAweDQxLCAweDA3LCAweDQwLAorMHgxMywgMHgwMCwgMHg3NiwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0NywgMHg0MCwgMHgxMSwgMHgwMiwgMHg1NCwgMHgwOCwKKzB4MzQsIDB4NjEsIDB4QzEsIDB4MTQsIDB4MTUsIDB4MUYsIDB4OEEsIDB4N0MsIDB4MDAsIDB4QjQsIDB4QTEsIDB4QzQsIDB4ODQsCisweDAyLCAweDBGLCAweDAyLCAweDRDLCAweDAwLCAweDMwLCAweDQxLCAweEMxLCAweDA0LCAweDAwLCAweDE1LCAweDE0LCAweDZDLAorMHgwOSwgMHgzMCwgMHhBNSwgMHhDMCwgMHg3NCwgMHhFMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwKKzB4QjgsIDB4MkYsIDB4MDUsIDB4OUYsIDB4MDAsIDB4RkMsIDB4NTIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NkYsIDB4MjAsIDB4QkYsCisweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDJCLCAweEMwLCAweEE3LCAweDAwLCAweEJGLCAweDA0LCAweEZDLCAweDEyLCAweEYwLAorMHg0OSwgMHg0MiwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwOCwgMHg3QywgMHgwMiwgMHhGNCwgMHg4OSwgMHhDMCwgMHgyRCwgMHgwMCwKKzB4QkYsIDB4MEMsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4M0YsIDB4MDAsIDB4QkIsIDB4MDAsIDB4REMsIDB4MTIsCisweEYwLCAweDhCLCAweEMwLCAweDc3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEE4LAorMHgyRiwgMHgwMSwgMHg5RiwgMHgwMCwgMHhGQywgMHgzMiwgMHhCMCwgMHgwOSwgMHhDMCwgMHhBNywgMHgyMCwgMHhCRiwgMHgwMCwKKzB4Q0QsIDB4MDIsIDB4RjAsIDB4NDksIDB4QzUsIDB4NkYsIDB4MDAsIDB4OUIsIDB4ODAsIDB4NkUsIDB4MDIsIDB4NzksIDB4OEIsCisweEMwLCAweDJGLCAweDAxLCAweEJCLCAweDE0LCAweEFDLCAweDgyLCAweDMwLCAweDBCLCAweENDLCAweDIxLCAweDAwLCAweEJGLAorMHgyOCwgMHhDQywgMHg4MiwgMHgzMSwgMHg0QiwgMHhDMSwgMHgyRSwgMHg2OCwgMHhBMywgMHgwMCwgMHhCQywgMHgwMiwgMHhGMCwKKzB4MEYsIDB4QzAsIDB4NzcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDcsCisweDA1LCAweDFELCAweDAwLCAweDcwLCAweDMxLCAweDE0LCAweDIxLCAweDQwLCAweDQ3LCAweDAwLCAweDFELCAweDAwLCAweDQ0LAorMHgwMCwgMHhEMCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHg1QSwgMHgzMCwgMHg0NCwgMHhDMCwgMHhEOCwgMHg4MSwgMHg0MCwKKzB4MDcsIDB4MDAsIDB4MTEsIDB4MDQsIDB4NTEsIDB4MDAsIDB4MTAsIDB4MDEsIDB4QzAsIDB4MDUsIDB4MDQsIDB4NUQsIDB4MDgsCisweDRDLCAweDAwLCAweDExLCAweDAxLCAweDQwLCAweDA3LCAweDMwLCAweDExLCAweDAwLCAweDY0LCAweDgwLCAweEQwLCAweDAxLAorMHg0MCwgMHg2MywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgyMSwgMHgwMywKKzB4OEQsIDB4MDAsIDB4MzQsIDB4MTIsIDB4MTAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4ODAsIDB4MDQsIDB4ODIsCisweEQyLCAweDA4LCAweDBBLCAweEEzLCAweDAwLCAweDg5LCAweDA0LCAweDA0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweDIzLAorMHgwMiwgMHg4OSwgMHgxNCwgMHgxNCwgMHgwMiwgMHgxNCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4RCwgMHgwMCwgMHgwNSwKKzB4MDIsIDB4MTgsIDB4MDgsIDB4NDgsIDB4MjcsIDB4MjAsIDB4ODUsIDB4MDAsIDB4MzYsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDRCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDIwLCAweEE1LCAweDAwLCAweDlELAorMHgwMCwgMHg3NCwgMHgxMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgxMCwgMHg0NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDgsIDB4MjYsIDB4MjAsIDB4ODksIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDgsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsCisweDkxLCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDA5LCAweDY4LCAweDI1LCAweDEwLCAweDlELCAweDA0LCAweDQ2LCAweDAyLAorMHg5OSwgMHgwRCwgMHg0MCwgMHgyNywgMHgwMCwgMHhENSwgMHgwMCwgMHg2NCwgMHgyMiwgMHhEMCwgMHgwOSwgMHg0MSwgMHg2MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4NjUsIDB4MDAsIDB4OUQsIDB4MDAsCisweDdDLCAweDA2LCAweDMwLCAweDA5LCAweEMwLCAweDJGLCAweDA2LCAweDlGLCAweDAwLCAweDRDLCAweDAyLCAweEYwLCAweDA5LAorMHhDMCwgMHgyNywgMHgwMCwgMHg5QiwgMHgwMiwgMHg2NSwgMHg0MiwgMHg3MiwgMHgwOSwgMHhDMiwgMHgyNywgMHgwMCwgMHg5QiwKKzB4MDAsIDB4NTQsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MzMsIDB4OUYsIDB4MjEsIDB4NEMsIDB4NDYsIDB4MzAsCisweDA5LCAweEMwLCAweDIyLCAweDAwLCAweDk1LCAweEE3LCAweDdFLCAweDgyLCAweEUwLCAweDM5LCAweEMwLCAweDE3LCAweDAwLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwMCwgMHgyNSwgMHgyNSwgMHg5RiwgMHg4MCwgMHgzQywKKzB4MDYsIDB4NzAsIDB4MDksIDB4RTIsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MTAsIDB4N0MsIDB4MjYsIDB4RjAsIDB4NTksIDB4QzAsCisweDI3LCAweDBDLCAweDk3LCAweDAyLCAweDVDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDUwLAorMHg1QywgMHgwMiwgMHgzMiwgMHgwOSwgMHhFOCwgMHgyNywgMHgxMCwgMHg4RiwgMHgwMSwgMHg1QywgMHgwQSwgMHg3NCwgMHgwOSwKKzB4QzEsIDB4QTYsIDB4MDAsIDB4OUIsIDB4MDUsIDB4N0UsIDB4MDIsIDB4RjAsIDB4NTksIDB4QzAsIDB4NUIsIDB4MjAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDA1LCAweDAwLCAweDFGLCAweDAwLCAweDZDLCAweDQwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHg4MCwgMHhCMCwgMHgwMSwgMHhDMCwgMHgwMywKKzB4MDAsIDB4MTcsIDB4MDIsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzIsIDB4MDAsIDB4MDEsIDB4MUYsIDB4MDAsIDB4NEMsCisweDAwLCAweEIwLCAweDgxLCAweEMxLCAweDA3LCAweDQwLCAweDE3LCAweDIyLCAweDVDLCAweDEwLCAweEYwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxMywgMHgwMiwgMHg0QywgMHg0MCwgMHgzMCwgMHgwMSwgMHg4MiwgMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4OUMsIDB4MDAsIDB4NUQsIDB4NDAsIDB4RjQsIDB4MDUsIDB4RDgsCisweDA1LCAweEMwLCAweDE1LCAweDIwLCAweDZDLCAweDAwLCAweEY0LCAweDQ5LCAweDEwLCAweDA1LCAweDQwLCAweDlGLCAweDgwLAorMHg1QiwgMHgwMCwgMHg3NiwgMHgwMSwgMHhEMCwgMHg4NywgMHg0MCwgMHg5QywgMHgwMCwgMHg3RCwgMHgwMiwgMHg4NCwgMHgwMSwKKzB4RjQsIDB4MjcsIDB4QzAsIDB4MTUsIDB4MDAsIDB4NzEsIDB4MDAsIDB4ODQsIDB4ODksIDB4MTAsIDB4NzcsIDB4NDAsIDB4REYsCisweDAwLCAweDcwLCAweDA3LCAweEM0LCAweDAxLCAweDE2LCAweDk3LCAweDQwLCAweDQzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBOCwgMHhGMiwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgyMywgMHhEMCwgMHgwQywKKzB4NDgsIDB4MzEsIDB4MDAsIDB4ODgsIDB4MDIsIDB4MzYsIDB4MUYsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MTMsIDB4MTAsIDB4QzUsCisweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDNDLCAweDYwLCAweEIwLCAweDAwLCAweEQ1LCAweDBCLCAweDAwLCAweDAzLCAweDkxLAorMHgzQywgMHg0NCwgMHgzMSwgMHgwMCwgMHhDMSwgMHgwMSwgMHgzNCwgMHgwQSwgMHg1MCwgMHgxNCwgMHg0MCwgMHhGMiwgMHgwMSwKKzB4QzEsIDB4MDcsIDB4MjQsIDB4MEIsIDB4MTIsIDB4OEMsIDB4NDQsIDB4NDMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDM4LCAweDA0LCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLAorMHgzOSwgMHgwMSwgMHg2RCwgMHgxMCwgMHhCNCwgMHgwNCwgMHgxOCwgMHgwRSwgMHg0MCwgMHgxQiwgMHgwMCwgMHhFMSwgMHg0NCwKKzB4QjQsIDB4MDMsIDB4RDAsIDB4MzYsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4ODUsIDB4MDMsIDB4RDQsIDB4MDYsCisweDYwLCAweDdELCAweDAyLCAweEUxLCAweDAyLCAweEU2LCAweDAyLCAweDEwLCAweDA2LCAweDQwLCAweEJCLCAweDIwLCAweEUxLAorMHg2MSwgMHhFNSwgMHg4RiwgMHg1MCwgMHgwNiwgMHg0MCwgMHgxMywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTQsIDB4MTgsIDB4NzgsIDB4MDAsIDB4RUYsIDB4MDEsIDB4QkMsIDB4MDUsIDB4RDAsIDB4MUUsIDB4QzAsIDB4RjksCisweDAwLCAweDJCLCAweDAxLCAweEJDLCAweDA0LCAweEIxLCAweDFFLCAweEMwLCAweDczLCAweDAwLCAweEU1LCAweDM1LCAweEI0LAorMHgyRiwgMHhCMCwgMHgxRiwgMHhEMCwgMHg3OCwgMHgwMCwgMHhDRiwgMHg0MSwgMHg4QywgMHgwNSwgMHhCNCwgMHgxNiwgMHhDMCwKKzB4NzksIDB4MDMsIDB4RjMsIDB4MDEsIDB4QkQsIDB4MDQsIDB4NzAsIDB4MTYsIDB4QzAsIDB4N0IsIDB4NDAsIDB4MjMsIDB4MDEsCisweEFDLCAweDA3LCAweDMxLCAweDFFLCAweEM0LCAweDUzLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHhCOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwKKzB4MUUsIDB4MDAsIDB4M0MsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MTAsIDB4REYsIDB4NEEsIDB4N0MsIDB4MUIsCisweEYwLCAweDA1LCAweEM4LCAweDA3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAxLCAweEY2LCAweDA1LCAweEM2LCAweEI1LAorMHgwMSwgMHg1RSwgMHgwMCwgMHgxQywgMHgwMCwgMHg1MCwgMHgwNSwgMHhDMCwgMHgzMywgMHgwMCwgMHgxRiwgMHgwMCwgMHg1QywKKzB4MDMsIDB4QjAsIDB4MDksIDB4QzgsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDIwLCAweDVELCAweDAwLCAweEYzLCAweDAxLCAweEZDLCAweDI3LCAweEY4LCAweDhGLCAweEMwLCAweDdCLCAweDAwLCAweDNCLAorMHgwMSwgMHhGQywgMHgwNCwgMHg3MCwgMHgxRiwgMHhDMCwgMHg1RiwgMHgwMCwgMHhGRiwgMHgwOSwgMHhGRSwgMHgyNywgMHhCMCwKKzB4MUIsIDB4QzAsIDB4NzYsIDB4MDAsIDB4RkYsIDB4MDEsIDB4OEMsIDB4MDcsIDB4MzAsIDB4OTMsIDB4QzQsIDB4N0YsIDB4MDAsCisweEIzLCAweDAxLCAweENDLCAweDE2LCAweEY4LCAweDk3LCAweEMwLCAweDdCLCAweDAwLCAweEZCLCAweDQxLCAweEY4LCAweDA0LAorMHgzNCwgMHg5QiwgMHhDMCwgMHgxOCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwKKzB4MTksIDB4MjIsIDB4RTEsIDB4NDAsIDB4QjQsIDB4ODEsIDB4NzgsIDB4MEUsIDB4NDIsIDB4M0IsIDB4MDAsIDB4NjEsIDB4MDAsCisweEI0LCAweDAwLCAweEQwLCAweDBFLCAweDQ0LCAweDFCLCAweDIxLCAweEU2LCAweDA4LCAweEY0LCAweDIzLCAweDE0LCAweDBBLAorMHg0MCwgMHg3OCwgMHgwMCwgMHhCRCwgMHgwMCwgMHg4NCwgMHgyMywgMHhGMCwgMHgwMCwgMHg0MCwgMHgzQiwgMHgwMSwgMHhBMSwKKzB4MjQsIDB4QUMsIDB4MTIsIDB4QjAsIDB4MDYsIDB4QzAsIDB4M0IsIDB4MDYsIDB4RTEsIDB4MDgsIDB4QjQsIDB4MjAsIDB4QjAsCisweDAzLCAweDQ4LCAweDU1LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM5LAorMHgwNCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMywgMHg1OCwgMHg4RSwgMHg0MCwgMHg3RiwgMHgwNCwgMHgyMSwgMHgwMCwgMHhCNCwKKzB4MDAsIDB4NTAsIDB4MEUsIDB4NDAsIDB4MTksIDB4MDgsIDB4RUMsIDB4NDIsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MDIsIDB4NDAsCisweDM4LCAweDAwLCAweDZELCAweDAwLCAweEE0LCAweDAxLCAweDEwLCAweDAyLCAweDYwLCAweDM5LCAweDI0LCAweEUxLCAweDgwLAorMHhCNCwgMHg3MiwgMHgxQywgMHgwNiwgMHg0NiwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHg0MCwgMHg1MCwgMHgwQSwKKzB4NDIsIDB4MjAsIDB4MDIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MjUsIDB4MDAsCisweEMxLCAweDIwLCAweDM0LCAweDA4LCAweDU4LCAweDBDLCAweDQwLCAweEYzLCAweDAwLCAweDQ5LCAweDExLCAweDM0LCAweDIwLAorMHhEOCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMSwgMHgzNCwgMHgwMywgMHg5MCwgMHgwMSwgMHg0MCwgMHgwMiwKKzB4ODAsIDB4MEQsIDB4MDAsIDB4MjQsIDB4MDEsIDB4OTAsIDB4MDAsIDB4NDAsIDB4RjMsIDB4MDAsIDB4NDEsIDB4MDEsIDB4MzQsCisweDA2LCAweDkwLCAweDA0LCAweDQwLCAweEYxLCAweDAwLCAweEMxLCAweDAwLCAweDM2LCAweDA0LCAweDE4LCAweDM5LCAweDQwLAorMHgwOSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHhBNSwgMHg0MCwgMHhEMywKKzB4MDAsIDB4N0MsIDB4NkUsIDB4NzAsIDB4MEQsIDB4NDAsIDB4RjcsIDB4NDAsIDB4MEIsIDB4MDcsIDB4N0MsIDB4MDAsIDB4NzAsCisweDBELCAweEMyLCAweDE1LCAweDAwLCAweEZGLCAweDAxLCAweEY0LCAweDRGLCAweDMwLCAweDBELCAweEMwLCAweDI0LCAweDAwLAorMHgxRiwgMHgwMCwgMHgyNCwgMHgwMiwgMHgzMCwgMHgwMSwgMHhDMCwgMHhGOSwgMHgwMCwgMHg1MywgMHhBMywgMHgzQywgMHgwMiwKKzB4MzAsIDB4MDQsIDB4NDAsIDB4NzcsIDB4MDgsIDB4REYsIDB4MjUsIDB4N0MsIDB4MDcsIDB4NTAsIDB4NjEsIDB4QzAsIDB4NTQsCisweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDI3LCAweDExLCAweERGLCAweDAwLAorMHg3QywgMHgwQSwgMHg3MCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHg1NywgMHgwMiwgMHg3QywgMHgwMCwgMHhGMCwgMHgwRCwKKzB4QzAsIDB4MTcsIDB4MDAsIDB4RDcsIDB4MDgsIDB4N0MsIDB4NDMsIDB4NzAsIDB4MDUsIDB4RDgsIDB4MjUsIDB4MTAsIDB4OUYsCisweDAwLCAweDVDLCAweDAyLCAweEYwLCAweDIxLCAweEMwLCAweDM3LCAweDA0LCAweERGLCAweDA4LCAweDY4LCAweDBBLCAweEY5LAorMHgyNSwgMHg4MCwgMHgzNywgMHgwMSwgMHgwRSwgMHgxMCwgMHg3QywgMHgwQiwgMHhGMiwgMHgyMSwgMHhDMCwgMHhCNywgMHgyMCwKKzB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4MDcsIDB4MDAsIDB4RjMsIDB4MDAsIDB4RkMsCisweDAwLCAweEYwLCAweDBFLCAweEMwLCAweDNFLCAweDA0LCAweDMzLCAweDAwLCAweEVDLCAweDAwLCAweEYwLCAweDBGLCAweEMwLAorMHg3RiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhFQywgMHgwMywgMHg3MCwgMHgyQiwgMHhDMCwgMHgyQiwgMHgwMCwgMHgzQiwgMHgyMCwKKzB4RkMsIDB4MDAsIDB4QjAsIDB4MDMsIDB4QzAsIDB4M0YsIDB4MDAsIDB4MjMsIDB4MTEsIDB4Q0MsIDB4NDIsIDB4NzYsIDB4ODcsCisweEMwLCAweDNDLCAweDAwLCAweDNGLCAweDAyLCAweEM0LCAweDA3LCAweEYwLCAweDAzLCAweEMxLCAweDA0LCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHg2NiwgMHgwOCwgMHhEMSwgMHg0MCwgMHg3NiwgMHgwNCwKKzB4RDAsIDB4MEQsIDB4NDgsIDB4MzUsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MTQsIDB4RDAsIDB4MEQsIDB4QzAsIDB4MjcsCisweDgwLCAweERELCAweDgwLCAweDdDLCAweDAzLCAweEQwLCAweDExLCAweDQwLCAweEM0LCAweDQ0LCAweDkxLCAweDIxLCAweDdDLAorMHgwNywgMHhCMCwgMHg1MSwgMHg0MCwgMHgzNywgMHgwMCwgMHgxMSwgMHgwQiwgMHg0NCwgMHgwNywgMHgxMCwgMHgwRCwgMHg0OCwKKzB4RjAsIDB4MDAsIDB4MTEsIDB4MDMsIDB4NDQsIDB4MDAsIDB4RDIsIDB4MzEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEyLCAweDQ2LCAweDA0LCAweEQxLCAweDAwLCAweDc0LCAweDBFLCAweEQwLAorMHgwRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHgxMSwgMHgzMCwgMHg2NCwgMHgwNCwgMHhEMCwgMHgwRCwgMHg0OCwgMHgxNywgMHgwMSwKKzB4REQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4RDIsIDB4MEQsIDB4NDAsIDB4NDQsIDB4MDAsIDB4OTEsIDB4ODMsIDB4NzYsIDB4NDYsCisweDkwLCAweDExLCAweDQwLCAweDM3LCAweDAwLCAweDExLCAweDAyLCAweDQ2LCAweDBFLCAweDUwLCAweDA1LCAweDQwLCAweDY0LAorMHg0NCwgMHhEMSwgMHgyMCwgMHg1NCwgMHgxOCwgMHhEMiwgMHgzOSwgMHg0MCwgMHgwNCwgMHgwOCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MEMsCisweDQwLCAweDMxLCAweDAwLCAweDUxLCAweDAwLCAweDA0LCAweDAwLCAweEQwLCAweDBDLCAweDQwLCAweDExLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg3MCwgMHgwMCwgMHgwMSwgMHg4MSwgMHgwMCwgMHgzNCwgMHgwMiwgMHg5OSwKKzB4MDAsIDB4NDAsIDB4MzcsIDB4MDAsIDB4ODEsIDB4MjAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MjQsIDB4MDAsCisweDAxLCAweDAwLCAweDE0LCAweDAzLCAweEQwLCAweDAwLCAweDUyLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwNiwgMHgwMCwgMHhEMywgMHgwMCwgMHg3NCwgMHgwMiwgMHhGMCwgMHgwRCwgMHg0MCwKKzB4M0MsIDB4ODAsIDB4MTMsIDB4MDAsIDB4NkMsIDB4MDAsIDB4RjAsIDB4MEQsIDB4NjAsIDB4MTcsIDB4MDAsIDB4RkQsIDB4MDAsCisweEVDLCAweDAzLCAweEY4LCAweDAwLCAweEMwLCAweDA2LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweEIwLCAweDgxLAorMHhDMCwgMHgzQiwgMHg0MCwgMHgwMywgMHgwMCwgMHg0QywgMHgwMiwgMHg3MCwgMHgwMSwgMHhDMCwgMHgyNCwgMHgxMCwgMHhEMywKKzB4MDAsIDB4MUMsIDB4MDAsIDB4RjAsIDB4MDksIDB4QzQsIDB4MDQsIDB4NjQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA1LCAweEI4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDBGLCAweEMyLCAweDNELAorMHg0MCwgMHg3RiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywKKzB4MDMsIDB4RjAsIDB4MDMsIDB4MDAsIDB4MEYsIDB4MkEsIDB4M0YsIDB4MDAsIDB4REMsIDB4MDMsIDB4NzAsIDB4MDMsIDB4QzAsCisweDNGLCAweDAwLCAweDNGLCAweDAwLCAweEJDLCAweDAzLCAweEYwLCAweDA3LCAweDQwLCAweDBGLCAweDQwLCAweDM3LCAweDAwLAorMHhFQywgMHgwMCwgMHhGMCwgMHgwQiwgMHhDOCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTgsIDB4N0YsIDB4MDAsIDB4M0UsIDB4MDAsIDB4RkMsIDB4MDQsIDB4MzAsIDB4MUYsIDB4QzAsIDB4MkMsIDB4MDAsCisweEJGLCAweDI0LCAweENDLCAweDAzLCAweEYwLCAweDQzLCAweEMxLCAweDNELCAweDIxLCAweDNGLCAweEEwLCAweERDLCAweDEzLAorMHgzMCwgMHg5RSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHg5OCwgMHgxNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg0QywKKzB4MDAsIDB4RkYsIDB4MDMsIDB4RkMsIDB4MDcsIDB4RjAsIDB4NEYsIDB4QzAsIDB4N0UsIDB4MDIsIDB4RkYsIDB4MDAsIDB4Q0MsCisweDAzLCAweDMwLCAweDgzLCAweEMwLCAweDBDLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgxMCwgMHgzNiwgMHgwNSwgMHgxRCwgMHgwMiwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwRCwgMHg1MCwgMHgyNCwgMHgwOCwgMHg5RCwKKzB4MDgsIDB4QzQsIDB4MkIsIDB4MTAsIDB4MzksIDB4NDQsIDB4N0MsIDB4MDIsIDB4OUQsIDB4MDEsIDB4QzQsIDB4MjMsIDB4MTEsCisweDFELCAweDQwLCAweEZGLCAweDAxLCAweDVELCAweDAxLCAweEM0LCAweDBGLCAweEQwLCAweDBELCAweDQwLCAweDQ0LCAweDAwLAorMHhERCwgMHgwMCwgMHg1QywgMHgwNywgMHhEMCwgMHhCRiwgMHg0MCwgMHgzNCwgMHgwMSwgMHhGNywgMHgwMywgMHhDNCwgMHgyRiwKKzB4MTAsIDB4MDksIDB4NDAsIDB4MEQsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsCisweDMzLCAweDAwLCAweDBELCAweDAzLCAweDU0LCAweDAwLCAweDkwLCAweDBDLCAweDQwLCAweDIxLCAweDAwLCAweDhELCAweDAwLAorMHgwNCwgMHg4MywgMHgxMCwgMHgwMSwgMHg2MCwgMHgzMCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgyNCwgMHgwMywgMHgxMCwgMHg0QywKKzB4NDAsIDB4MzIsIDB4MDYsIDB4ODksIDB4MDAsIDB4MDUsIDB4MjMsIDB4RDIsIDB4MEMsIDB4NDgsIDB4MDAsIDB4MjAsIDB4Q0QsCisweDA0LCAweDM2LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMwLCAweDAxLCAweENELCAweDAyLCAweDA1LCAweDAzLCAweDE0LAorMHg0MCwgMHg0NCwgMHg0QywgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgzNSwKKzB4MDAsIDB4MUQsIDB4MDEsIDB4NDQsIDB4NDYsIDB4OTQsIDB4MEQsIDB4NDAsIDB4RTUsIDB4MDAsIDB4OUQsIDB4MjAsIDB4NDQsCisweDAzLCAweDEwLCAweDE5LCAweDQwLCAweDM0LCAweDAwLCAweDFELCAweDAxLCAweDY0LCAweDAzLCAweDExLCAweDBELCAweDQwLAorMHgzNywgMHgyMCwgMHhEQywgMHgxMCwgMHg0NCwgMHgwMywgMHhEMCwgMHg4QywgMHg0MCwgMHg0NCwgMHgwMCwgMHhEQywgMHgwMCwKKzB4NTQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDUsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4NDksCisweDQwLCAweDBELCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM3LCAweDAwLAorMHgxRiwgMHgwMSwgMHg3QywgMHgwQywgMHhCMCwgMHgwRCwgMHhDMCwgMHg2NSwgMHgwMCwgMHg5RiwgMHg4MCwgMHgwQywgMHgwMywKKzB4QjQsIDB4MzUsIDB4QzAsIDB4MzUsIDB4MDAsIDB4OUYsIDB4MDEsIDB4NkMsIDB4MDMsIDB4MzQsIDB4MEQsIDB4QzIsIDB4MzYsCisweDIwLCAweERCLCAweDgwLCAweDVDLCAweDAzLCAweEUwLCAweDFELCAweDgwLCAweDQ0LCAweDA0LCAweDlGLCAweDA4LCAweDdDLAorMHgwNywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgxRCwgMHhDMCwKKzB4MDAsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsIDB4MkYsCisweDAwLCAweEZDLCAweDAwLCAweDcwLCAweDBGLCAweEMwLCAweDJFLCAweDAwLCAweDlGLCAweDAwLCAweEZELCAweDAzLCAweEIwLAorMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhBRiwgMHgwMCwgMHhEQywgMHgwMywgMHhGMCwgMHgyRiwgMHhDNiwgMHgzRiwgMHgwMCwKKzB4NjksIDB4MDgsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MUYsIDB4RDAsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MjcsCisweEYxLCAweDBFLCAweEM0LCAweDNGLCAweDAxLCAweERGLCAweDAwLCAweEJDLCAweDAzLCAweEYwLCAweDE3LCAweEM4LCAweDFGLAorMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwNCwgMHgxRiwgMHgyMSwKKzB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QTcsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NEMsIDB4QzMsIDB4MzAsIDB4MjUsCisweEMwLCAweDM0LCAweDAwLCAweDE3LCAweDAwLCAweDdDLCAweDEzLCAweEYwLCAweDBELCAweEQwLCAweDM0LCAweDAwLCAweDlGLAorMHgyMSwgMHg2QywgMHg0MywgMHgzMCwgMHgwRCwgMHhEMSwgMHg0NCwgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4QzIsIDB4MzYsIDB4MDAsIDB4Q0YsIDB4MDQsIDB4NEMsIDB4MTMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4OEIsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweEI0LCAweDAwLCAweDFELCAweDAwLCAweDM0LAorMHgxMiwgMHhEMCwgMHhCRCwgMHg0MSwgMHgyNywgMHgwNCwgMHhEMSwgMHgwMCwgMHhENCwgMHgxMywgMHgxMCwgMHgwQywgMHg0NSwKKzB4M0MsIDB4MDAsIDB4MUQsIDB4MDAsIDB4RTQsIDB4MDMsIDB4RDIsIDB4MEQsIDB4NDAsIDB4M0MsIDB4MDAsIDB4REQsIDB4MDAsCisweEM0LCAweDA3LCAweDEwLCAweDBELCAweDQwLCAweDA0LCAweDAwLCAweEQxLCAweDIwLCAweDc0LCAweDAzLCAweEQwLCAweDFGLAorMHg0MCwgMHgzNCwgMHgwMCwgMHhGRCwgMHg4MiwgMHhDNCwgMHgwQiwgMHhEMCwgMHgwNSwgMHg0MCwgMHg2RiwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MjAsIDB4MzAsIDB4MDAsIDB4MEQsIDB4MjAsIDB4MzQsIDB4MDAsCisweEQwLCAweDFELCAweDQwLCAweDMzLCAweDAwLCAweDk0LCAweDYwLCAweDI0LCAweDAzLCAweDEwLCAweDA0LCAweDQwLCAweDMyLAorMHgwMCwgMHgwRCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwgMHhDRCwgMHgwMCwgMHgyNCwKKzB4MjMsIDB4NTAsIDB4MkMsIDB4NDAsIDB4MDMsIDB4ODQsIDB4QzUsIDB4MTIsIDB4MzQsIDB4MDMsIDB4RDAsIDB4OUMsIDB4NDAsCisweDMwLCAweDAwLCAweEM5LCAweDQ5LCAweDI0LCAweDI3LCAweEQwLCAweDA1LCAweDQwLCAweDFGLCAweDAwLCAweDBBLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OCwgMHgwMCwgMHgyRCwgMHgyMSwgMHhCNCwgMHgwNywgMHhEMCwKKzB4OUUsIDB4NDAsIDB4NkIsIDB4MDIsIDB4QTQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4MTAsIDB4MUYsIDB4NDAsIDB4N0EsIDB4MDAsCisweEVELCAweDgxLCAweEE0LCAweDA3LCAweEQwLCAweDFGLCAweDYwLCAweDdBLCAweDAwLCAweEM5LCAweDAzLCAweDg0LCAweDA3LAorMHg1MCwgMHgxRSwgMHg0MCwgMHg0QiwgMHg1MCwgMHhFNSwgMHg4OSwgMHhCNCwgMHgxNywgMHhEMSwgMHgxQywgMHg0MCwgMHg3OCwKKzB4MDAsIDB4RUQsIDB4ODEsIDB4QTQsIDB4MDcsIDB4RDAsIDB4OUUsIDB4NDAsIDB4MzcsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDE4LCAweDMwLCAweDAwLCAweDBGLCAweDAwLCAweDNDLCAweDAwLCAweEYwLCAweDhDLAorMHhDMCwgMHgzNywgMHgwOCwgMHg4NywgMHgwMCwgMHg2QywgMHgxMywgMHgzMCwgMHgwNCwgMHhDMCwgMHgzMiwgMHgwMCwgMHg0RiwKKzB4MDIsIDB4M0MsIDB4MjMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MzIsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4MkMsIDB4MDMsIDB4NzAsCisweDBELCAweEMwLCAweDAzLCAweDAwLCAweEM3LCAweDA4LCAweDNDLCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDMwLCAweDAwLAorMHhDQiwgMHgwMCwgMHgyQywgMHgwMywgMHhGMCwgMHg4NCwgMHhDMCwgMHg0QiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsIDB4M0QsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MjMsIDB4RjAsIDB4OEYsIDB4RTgsCisweDNGLCAweDQwLCAweEJCLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDBFLCAweEMwLCAweDNELCAweDAyLCAweEZGLCAweDAwLAorMHhFQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRCwgMHgyNCwgMHhGRiwgMHgwMCwgMHhGQywgMHgyMywgMHhCMiwgMHgwRiwKKzB4QzAsIDB4MDgsIDB4MDIsIDB4RkIsIDB4MjgsIDB4RkMsIDB4OTMsIDB4RjAsIDB4MEYsIDB4RDAsIDB4M0QsIDB4MDAsIDB4RkYsCisweDAwLCAweERELCAweDAzLCAweEYyLCAweDhGLCAweEMwLCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHhCMCwgMHgzNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMSwgMHgxRCwgMHhDMCwgMHgzNCwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4NzAsIDB4MDUsIDB4QzQsIDB4NzcsIDB4MDEsIDB4OUIsIDB4MDAsIDB4N0MsCisweDRCLCAweEUwLCAweDFELCAweEMyLCAweDM1LCAweDA1LCAweENELCAweDAxLCAweDRDLCAweDFCLCAweEYwLCAweDBELCAweEMwLAorMHgwNywgMHgwMCwgMHhERiwgMHgwMSwgMHgxQywgMHgwNywgMHg3MCwgMHhDRCwgMHhDMCwgMHgzNywgMHgyMCwgMHhERiwgMHgwQSwKKzB4M0MsIDB4NEYsIDB4MzAsIDB4MDksIDB4QzAsIDB4NTQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEyLCAweDgwLCAweDM5LCAweDAwLCAweDJELCAweDAwLCAweEI0LCAweDAzLCAweDcwLCAweDBFLCAweDQwLCAweDFDLCAweDAwLAorMHhBMSwgMHgwMCwgMHhBQywgMHg1MywgMHgxMCwgMHgwRSwgMHg0MCwgMHhCQiwgMHgwNCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NDAsIDB4M0MsIDB4MDEsIDB4RTEsIDB4MDAsIDB4ODQsIDB4NTMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MEIsCisweDAwLCAweEZELCAweDAwLCAweDhDLCAweDAzLCAweDEwLCAweDhFLCAweDQwLCAweDNCLCAweDAwLCAweEU3LCAweDEwLCAweEI0LAorMHgxMywgMHhCMCwgMHgwMCwgMHhDMCwgMHg0RSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKzB4MDAsIDB4NzksIDB4MDAsIDB4NkQsIDB4MDEsIDB4OTQsIDB4MDYsIDB4RDAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4MEMsIDB4QzEsCisweDAxLCAweDA0LCAweDI3LCAweDUwLCAweDFFLCAweDQwLCAweDczLCAweDAxLCAweEUxLCAweDAxLCAweEI0LCAweDI3LCAweDUwLAorMHgzRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFNSwgMHgwMSwgMHg4NSwgMHgyNywgMHhEMCwgMHgxRSwgMHg0MywgMHg0QiwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4ODQsIDB4MDcsIDB4MTAsIDB4NUUsIDB4NDAsIDB4NkIsIDB4MDAsIDB4RTUsIDB4MjUsIDB4QjYsIDB4MzcsCisweDEwLCAweDFBLCAweDQwLCAweDA0LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDI4LAorMHgzMywgMHgwMCwgMHhDRCwgMHgwMSwgMHgzNCwgMHg0QiwgMHg1MCwgMHgwQywgMHg2MCwgMHg3MCwgMHgwMSwgMHhDMSwgMHgwMSwKKzB4MjQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDEsIDB4MzMsIDB4ODAsIDB4QzEsIDB4MTAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MTgsCisweDQwLCAweDMyLCAweDAwLCAweEMxLCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDA5LCAweDQwLCAweEYzLCAweDAwLCAweENELAorMHgwMSwgMHgwNCwgMHgwNiwgMHgxNCwgMHgwQywgMHg0MCwgMHgzNywgMHgxMCwgMHhDNSwgMHg4MCwgMHgzNiwgMHgwMywgMHg5MCwKKzB4NDEsIDB4NDAsIDB4NEEsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTAsIDB4MTUsCisweDAwLCAweDdGLCAweDA1LCAweEZDLCAweDAxLCAweEYwLCAweDA1LCAweEQwLCAweDFDLCAweDAwLCAweDUzLCAweDQxLCAweDRDLAorMHgwMSwgMHg3MCwgMHgyNywgMHhDMCwgMHgxNywgMHg0MCwgMHg3MywgMHhDMiwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4MTcsIDB4MTAsIDB4N0YsIDB4MDAsIDB4NEMsIDB4MDEsIDB4RjAsIDB4MTUsIDB4QzAsIDB4NUYsIDB4MDEsIDB4NUYsIDB4MDEsCisweDVELCAweDE1LCAweDcwLCAweDA0LCAweEMyLCAweDU3LCAweDAxLCAweDQ3LCAweDAwLCAweDdDLCAweDAxLCAweDMwLCAweDE3LAorMHhDMSwgMHg1QywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHg4NSwgMHgwMCwKKzB4MUYsIDB4MDEsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4NDAsIDB4MUYsIDB4MDgsIDB4M0MsIDB4MDAsCisweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDE3LCAweDAwLCAweDdDLCAweDgwLCAweEYwLCAweDAxLCAweEMwLCAweDA1LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3RSwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMSwgMHgxRiwgMHgwOCwgMHg1QywKKzB4MDAsIDB4RjIsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzgsCisweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLAorMHgwNSwgMHg0QywgMHgwMiwgMHgzNiwgMHgwOSwgMHhDMCwgMHhBMywgMHg0MCwgMHg4MywgMHgwNSwgMHg0QywgMHgwNiwgMHhCMCwKKzB4MDgsIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlCLCAweDAwLCAweDdDLCAweDA2LCAweEYwLCAweDE5LCAweEMwLCAweDI0LCAweDIwLCAweDlGLCAweDAwLCAweDdDLCAweDI2LAorMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5QywgMHgwMCwgMHg0OCwgMHgwMiwgMHhGMCwgMHgwOSwgMHhDOCwgMHg0MCwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4NjQsIDB4MDAsIDB4OUQsIDB4MDAsCisweDQ0LCAweDAyLCAweDEwLCAweDE5LCAweDQwLCAweDI3LCAweDQwLCAweDkxLCAweDAxLCAweDdDLCAweDJBLCAweDEwLCAweDA5LAorMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHhFMCwgMHgyNywgMHgwMCwgMHg5MSwKKzB4MTAsIDB4NzQsIDB4MUUsIDB4RDEsIDB4OTksIDB4NDAsIDB4QTQsIDB4MDAsIDB4OUQsIDB4NDIsIDB4NUMsIDB4MDIsIDB4RDAsCisweDA5LCAweEMwLCAweDI2LCAweDAwLCAweDk1LCAweDgwLCAweDU0LCAweDFBLCAweEQwLCAweDA5LCAweEMwLCAweDA2LCAweDAwLAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwMiwgMHg4RCwgMHgwMCwgMHgwNCwKKzB4MDIsIDB4MTgsIDB4NDksIDB4NDAsIDB4MjcsIDB4NDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4OTAsIDB4MUQsIDB4NDAsCisweDI2LCAweDAwLCAweDk1LCAweDAwLCAweDc0LCAweDIyLCAweEQwLCAweDA5LCAweDYwLCAweDIzLCAweDAwLCAweDk5LCAweDAxLAorMHg3NCwgMHgxMiwgMHhEMCwgMHgyOSwgMHg0MCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwNCwgMHg3NCwgMHgwMiwgMHg1MCwgMHg4OSwKKzB4NDAsIDB4MjQsIDB4MDAsIDB4OTUsIDB4MTgsIDB4NTQsIDB4MjIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjAsIDB4MDAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweDhELCAweDA0LCAweDA0LCAweDAyLAorMHgxMCwgMHgwQywgMHg0MCwgMHgyMywgMHgwMSwgMHg4MSwgMHgwNCwgMHgxNCwgMHgxMywgMHgxMCwgMHg0OCwgMHg0MCwgMHgyMCwKKzB4MDEsIDB4OEQsIDB4MDQsIDB4MzYsIDB4MTYsIDB4RDEsIDB4MDgsIDB4NDIsIDB4MjEsIDB4MDEsIDB4ODEsIDB4MDQsIDB4MzQsCisweDEyLCAweEQ4LCAweDA4LCAweDQwLCAweDYxLCAweDgwLCAweDhELCAweDAxLCAweDE0LCAweDAyLCAweEQwLCAweDQ4LCAweDQwLAorMHgyMiwgMHgzMCwgMHg4NSwgMHg0NCwgMHgxNiwgMHgxMiwgMHhEMCwgMHg0OCwgMHg0MCwgMHg0MiwgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTAsIDB4OTYsIDB4MDIsIDB4MUYsIDB4MEEsIDB4NEQsIDB4MjgsIDB4MzAsCisweEEwLCAweEMwLCAweDg3LCAweDAyLCAweDEzLCAweDBBLCAweDQ0LCAweDI4LCAweEIwLCAweDAxLCAweEMwLCAweDA2LCAweDAwLAorMHgxNywgMHgxMCwgMHg3QywgMHgwMCwgMHhGMCwgMHhBMCwgMHg0MCwgMHg4NywgMHgwMiwgMHgxQiwgMHgwMCwgMHg3NCwgMHgwMCwKKzB4RjAsIDB4QTEsIDB4QzgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MEEsIDB4NzQsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4ODQsCisweDAwLCAweDE3LCAweDAwLCAweDVDLCAweDAwLCAweEYyLCAweDIxLCAweEMwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHg4OCwgMHgyNywgMHgwMCwgMHhGRiwgMHgwOCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4NDgsIDB4N0MsIDB4MjIsIDB4RjAsIDB4OEIsIDB4QzQsIDB4MjcsIDB4MDIsIDB4QkYsCisweDAwLCAweDdDLCAweDYyLCAweEYwLCAweDBCLCAweEMwLCAweDI3LCAweDAyLCAweEJGLCAweDA4LCAweDdDLCAweDIyLCAweEYwLAorMHgwQiwgMHhEOCwgMHgyRSwgMHgwMCwgMHhCRiwgMHg0MCwgMHhEQywgMHgwMiwgMHhGMCwgMHg4OSwgMHhDMiwgMHgyRiwgMHgwNCwKKzB4OTMsIDB4MDgsIDB4N0MsIDB4MjIsIDB4RjIsIDB4OEIsIDB4QzEsIDB4NjcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDFDLCAweEEwLCAweDJELCAweDAwLCAweEJGLCAweDBDLCAweENDLCAweDAyLCAweDMwLCAweDBCLCAweEMwLAorMHgyQywgMHgwMiwgMHhCMywgMHgwMCwgMHhGQywgMHg1MiwgMHgzNCwgMHg0RiwgMHg4MCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwKKzB4RjgsIDB4MjIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MjUsIDB4QkYsIDB4MDQsIDB4RDQsIDB4MDIsIDB4NzAsIDB4MEEsCisweEMwLCAweDJDLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDRCLCAweEMwLCAweDI3LCAweDAwLCAweEEzLAorMHg4MCwgMHhCQywgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHg2MSwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTgsIDB4MDAsIDB4MDcsIDB4MDEsIDB4MEQsIDB4MkMsIDB4NDQsIDB4NDEsIDB4MTAsIDB4MDEsIDB4NDEsIDB4MTQsCisweDAyLCAweDAxLCAweDE0LCAweDc0LCAweDEwLCAweDEzLCAweDgxLCAweDQwLCAweDg3LCAweDAwLCAweDFELCAweDAwLCAweDc0LAorMHgyMCwgMHhEMCwgMHg0MSwgMHg0MSwgMHgwNiwgMHgwMSwgMHgxRCwgMHgwOCwgMHg0NCwgMHgwOCwgMHgxMCwgMHgwMSwgMHg0MSwKKzB4MDQsIDB4MDAsIDB4MUQsIDB4MTQsIDB4NzQsIDB4MDAsIDB4QzAsIDB4ODEsIDB4NDQsIDB4NDcsIDB4MDUsIDB4MUIsIDB4MDAsCisweDc0LCAweDIwLCAweEQwLCAweDExLCAweDQwLCAweDcxLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMiwgMHgyMCwgMHgyMSwgMHgwNSwgMHg4RCwgMHgwNCwgMHgwNSwgMHgxMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHg0MCwKKzB4ODEsIDB4MDQsIDB4MzQsIDB4NTIsIDB4MTAsIDB4MDgsIDB4NDgsIDB4MjIsIDB4MDIsIDB4ODgsIDB4MDgsIDB4MzQsIDB4MDIsCisweEQwLCAweDQ4LCAweDQwLCAweDIxLCAweDA1LCAweDhELCAweDAxLCAweDE0LCAweDIyLCAweEQwLCAweDA4LCAweDQwLCAweDYxLAorMHgwMCwgMHg4RCwgMHgwNCwgMHgyNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHgwOCwgMHgzNCwKKzB4MDIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4NEIsIDB4ODgsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweDI4LCAweDI1LCAweDAwLCAweDlELCAweDAwLCAweDA0LCAweDAyLCAweDEwLCAweDA5LCAweDYwLCAweDI0LCAweDAxLCAweEQxLAorMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwQSwgMHg3NCwgMHgwMiwgMHhEMCwKKzB4MTksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDgsIDB4NDQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NTAsIDB4MjUsIDB4MDEsCisweDlELCAweDAxLCAweDc0LCAweDA2LCAweEQwLCAweDA5LCAweDQwLCAweDY3LCAweDAwLCAweDk4LCAweDAwLCAweDc0LCAweDAyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgyMCwKKzB4MjUsIDB4MDAsIDB4OUYsIDB4MDIsIDB4NEMsIDB4MDIsIDB4MzAsIDB4MDksIDB4RDAsIDB4RTQsIDB4MDgsIDB4OTMsIDB4MDEsCisweDdDLCAweDAyLCAweDM0LCAweDY5LCAweEM4LCAweDI2LCAweDAwLCAweDlCLCAweDAzLCAweDdDLCAweDAyLCAweEYwLCAweDA5LAorMHhDQywgMHgyNywgMHgwMCwgMHg5RiwgMHgwMSwgMHg1QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5RSwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTAsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsCisweDA5LCAweEMwLCAweDE3LCAweEEwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDA4LCAweDI1LAorMHgwMCwgMHg5RiwgMHgwOSwgMHg3QywgMHgwMiwgMHhGNCwgMHgwOSwgMHhDMCwgMHg2NywgMHgwMCwgMHg5RiwgMHgwNCwgMHg3QywKKzB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDEsIDB4N0MsIDB4ODIsIDB4RjAsIDB4MDksIDB4QzgsCisweDI3LCAweDAwLCAweDhGLCAweDAwLCAweDdDLCAweDQyLCAweDcwLCAweDQ5LCAweEMwLCAweDI2LCAweDA4LCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOCwKKzB4QzAsIDB4NTksIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDEsCisweDFGLCAweDAwLCAweDRDLCAweDAwLCAweEIwLCAweDAxLCAweEMwLCAweDg0LCAweDQwLCAweDEzLCAweDEwLCAweDRDLCAweDAwLAorMHgzMCwgMHgyMSwgMHhDMCwgMHgwNywgMHgyMCwgMHgxRiwgMHgwMCwgMHg3QywgMHg4MCwgMHhGMCwgMHgwMSwgMHhFMCwgMHgwNywKKzB4MDAsIDB4MUYsIDB4MDAsIDB4M0MsIDB4MDAsIDB4QjAsIDB4MTEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDAwLCAweEYwLCAweDExLCAweEMwLCAweDA3LCAweDAwLCAweDE3LCAweDAwLCAweDRDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLAorMHg1MSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg1QywgMHgwMCwgMHg1RCwKKzB4ODAsIDB4NDQsIDB4MDUsIDB4MzAsIDB4MDcsIDB4NDAsIDB4NTQsIDB4NDAsIDB4NzEsIDB4MDUsIDB4QzYsIDB4MjksIDB4MTAsCisweDA1LCAweDQwLCAweDE3LCAweDAwLCAweDVELCAweDAwLCAweEY0LCAweDA5LCAweEQwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLAorMHg3RCwgMHgwQSwgMHhGNCwgMHgwMSwgMHg3MCwgMHgxNywgMHg0MCwgMHg5QywgMHgwMCwgMHg3RCwgMHgxMCwgMHg1QywgMHgwMSwKKzB4RDAsIDB4MTcsIDB4NDAsIDB4MTcsIDB4MDAsIDB4NzEsIDB4MDcsIDB4QzQsIDB4MTksIDB4NTAsIDB4MDUsIDB4NDgsIDB4NTAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDcyLCAweDAyLCAweERELCAweDAwLAorMHgwNCwgMHgwMywgMHg1MCwgMHgxNSwgMHg0OSwgMHg3NiwgMHgyMCwgMHhDMSwgMHgwMiwgMHgyNCwgMHgwRiwgMHgxMCwgMHgwQywKKzB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MzcsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsCisweDBCLCAweDM0LCAweDA3LCAweDUwLCAweDlDLCAweDQyLCAweEEwLCAweDA0LCAweENELCAweDA1LCAweDM0LCAweDAzLCAweEQwLAorMHgxQywgMHg0MCwgMHgzNywgMHgwMCwgMHgwNSwgMHgwNCwgMHgwNCwgMHgxMCwgMHgxMCwgMHgwQywgMHg0MCwgMHg1MSwgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MTgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4ODQsCisweDBBLCAweDEwLCAweDJBLCAweDQwLCAweDMyLCAweDI0LCAweEUxLCAweDAxLCAweEE0LCAweDBBLCAweDEwLCAweDJFLCAweDQ4LAorMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHg4MywgMHhEMCwgMHg0RSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhBRCwgMHgwMCwKKzB4QjQsIDB4MDksIDB4NDAsIDB4MEYsIDB4NDAsIDB4MTgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsCisweDQ5LCAweDNCLCAweDAwLCAweDI1LCAweDAwLCAweDg0LCAweDA0LCAweDUwLCAweDBFLCAweDQ4LCAweDEwLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOCwgMHg2OSwgMHgwMCwgMHhFRiwgMHgwMSwgMHhDQywgMHgwNywKKzB4NzAsIDB4MUYsIDB4RDAsIDB4N0EsIDB4MDAsIDB4QTMsIDB4MDEsIDB4RTQsIDB4MDcsIDB4MzQsIDB4MUEsIDB4QzAsIDB4N0IsCisweDAwLCAweEVELCAweDAxLCAweEJDLCAweDA1LCAweEYwLCAweDdFLCAweDQxLCAweDdCLCAweDA1LCAweEFGLCAweDAxLCAweEI4LAorMHgwNSwgMHg3MCwgMHgxRSwgMHhDMCwgMHg0OCwgMHgwMCwgMHhFRiwgMHgwMSwgMHhCQywgMHgwNiwgMHhGMCwgMHgxRSwgMHhDMCwKKzB4N0YsIDB4MDAsIDB4QTUsIDB4MDAsIDB4OEMsIDB4MDYsIDB4MzAsIDB4MUYsIDB4QzAsIDB4NTEsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEIwLCAweDBELCAweDAwLCAweDlGLCAweDAyLCAweDdELCAweDFBLCAweDc0LAorMHg2QiwgMHhDMCwgMHgzNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg1RCwgMHgxQSwgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNywgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4ODEsCisweDcwLCAweDBELCAweEQwLCAweDE3LCAweDA4LCAweERGLCAweDAwLCAweDVDLCAweDgyLCAweEYwLCAweDBELCAweEMwLCAweDM3LAorMHgwMCwgMHhEQSwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjAsIDB4NEQsIDB4MDAsIDB4RjcsIDB4MDMsIDB4Q0MsIDB4MUIsIDB4NzAsIDB4M0YsCisweEMwLCAweDdDLCAweDAwLCAweDczLCAweDAxLCAweENELCAweDBGLCAweDMwLCAweDFCLCAweEMwLCAweDdGLCAweDAwLCAweEYzLAorMHgwMSwgMHhGQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwNCwgMHhCMywgMHgwMSwgMHhDQywgMHg4NSwgMHhGMCwKKzB4MUYsIDB4QzAsIDB4NEMsIDB4MjAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MTcsIDB4QzAsIDB4N0YsIDB4MDAsCisweDIzLCAweDAxLCAweENDLCAweDA1LCAweEYwLCAweDFGLCAweEMwLCAweDBCLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwgMHgwRCwgMHgwMCwgMHhGMSwgMHgwOCwgMHg4NCwgMHhDMywgMHgxOCwgMHgwQiwgMHg0MCwKKzB4MjgsIDB4MDAsIDB4NzEsIDB4MDAsIDB4QzQsIDB4MjIsIDB4MTAsIDB4MEEsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RTEsIDB4MDAsCisweEI0LCAweDIzLCAweDEwLCAweDBFLCAweEMwLCAweDM5LCAweDAyLCAweEUxLCAweDAyLCAweDg0LCAweDAwLCAweDcwLCAweDA3LAorMHg0MCwgMHgxOCwgMHgyMCwgMHhFRCwgMHg4MCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwMiwgMHg0MCwgMHgzQiwgMHgwMCwgMHgyNSwKKzB4MEEsIDB4QUMsIDB4MjgsIDB4RDAsIDB4MEUsIDB4QzAsIDB4NTUsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweEVELCAweDAwLCAweEM0LCAweDIzLCAweDUwLCAweDBBLCAweDUwLCAweDI4LAorMHgwMCwgMHgyNSwgMHgwOCwgMHg4NCwgMHgwMywgMHgxMCwgMHgwQSwgMHg0MCwgMHgzMywgMHgwMCwgMHhFMSwgMHgwMCwgMHgzNCwKKzB4MDIsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MzMsIDB4MDAsIDB4NDEsIDB4MDAsIDB4QTQsIDB4MDEsIDB4RDAsIDB4MEUsIDB4NDAsCisweDg4LCAweDA0LCAweEVELCAweDAwLCAweEI0LCAweDAyLCAweEQwLCAweDAyLCAweDQwLCAweDNGLCAweDAwLCAweEExLCAweDAwLAorMHg5NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MjgsIDB4MDEsIDB4MDAsIDB4ODksIDB4MDAsIDB4NDQsIDB4MEIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4RTQsIDB4MDEsCisweDA1LCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDI4LCAweDQwLCAweDMzLCAweDAwLCAweEMxLCAweDExLCAweDM0LCAweDAyLAorMHgxMCwgMHgwQywgMHg2OCwgMHgzMSwgMHgwMCwgMHg0MSwgMHg1MiwgMHgyNCwgMHgwMCwgMHg1MCwgMHgwQywgMHg0MCwgMHg1MCwKKzB4MDAsIDB4REQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDAsIDB4NDAsIDB4NzMsIDB4MDIsIDB4ODUsIDB4MDAsIDB4MzQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDE5LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHhBMCwgMHgyNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg0RCwgMHgwQiwgMHg1MCwgMHgwNSwgMHhDMCwgMHg3NCwgMHg0MCwgMHgxNywKKzB4MDAsIDB4NDQsIDB4MDMsIDB4MzQsIDB4MEMsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDMsIDB4MDYsIDB4N0MsIDB4MDIsIDB4MzAsCisweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEQzLCAweDAyLCAweDZDLCAweDAxLCAweEYwLCAweDFELCAweEMwLCAweDQ0LCAweDAwLAorMHhERiwgMHg0MCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwNSwgMHhDMCwgMHgzRiwgMHgwMCwgMHg1MywgMHgwMCwgMHg1QywgMHgwMCwKKzB4RjAsIDB4MkYsIDB4QzAsIDB4NTUsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsCisweDg3LCAweDAwLCAweEQ3LCAweDEwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAyLCAweDFBLCAweDAyLAorMHg3QywgMHgwMiwgMHhGMSwgMHgwOSwgMHhDMSwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgxRCwKKzB4QzAsIDB4MzcsIDB4MjAsIDB4MUYsIDB4MDMsIDB4NUMsIDB4MDEsIDB4NzAsIDB4OEQsIDB4QzAsIDB4MDcsIDB4MjgsIDB4REYsCisweDAyLCAweDdDLCAweDA2LCAweEYwLCAweDA1LCAweENBLCAweDM3LCAweDAwLCAweDlGLCAweDAyLCAweDJDLCAweDBBLCAweEYwLAorMHgwRCwgMHhDMCwgMHgwNSwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgwRiwKKzB4MDAsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4NDMsIDB4MzAsIDB4MEYsIDB4QzAsIDB4NzQsIDB4MDEsIDB4MjMsIDB4MDEsIDB4QzQsCisweDAzLCAweDMwLCAweDBCLCAweEMwLCAweDNDLCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAwLCAweDMwLCAweDBGLCAweEMwLAorMHgzQiwgMHgwMCwgMHhCMywgMHgwMCwgMHg4RSwgMHgwMCwgMHgzMCwgMHgwQiwgMHhDMCwgMHgwRCwgMHgwMCwgMHg3QiwgMHgwMCwKKzB4Q0MsIDB4MDMsIDB4MzAsIDB4MDcsIDB4QzAsIDB4M0YsIDB4MTAsIDB4N0YsIDB4MDAsIDB4Q0MsIDB4MEMsIDB4MzAsIDB4MEYsCisweEMxLCAweDAzLCAweDJBLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDAwLCAweEM2LCAweDI0LAorMHg4RCwgMHgwMCwgMHg0NCwgMHgwMiwgMHg5MCwgMHgxOSwgMHhDMCwgMHgzNiwgMHg0MCwgMHgxMSwgMHgwMywgMHg1NCwgMHgwRSwKKzB4NTAsIDB4MDksIDB4NTAsIDB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4NEMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsCisweDAwLCAweDAxLCAweDAwLCAweDU0LCAweDBDLCAweDUxLCAweDA5LCAweDQwLCAweEMwLCAweDAwLCAweERCLCAweDAzLCAweDA0LAorMHgwNywgMHgxMCwgMHgxNSwgMHhDMCwgMHgzNSwgMHgwMCwgMHhDRCwgMHgwOCwgMHg1NCwgMHgwNiwgMHgxMCwgMHgwRCwgMHg0MCwKKzB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4NDYsIDB4ODAsIDB4REQsCisweDAwLCAweDQ0LCAweDAzLCAweDkwLCAweDE4LCAweDQwLCAweDI1LCAweDAwLCAweDUxLCAweDg4LCAweDU0LCAweDA3LCAweDEwLAorMHg4OSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhENSwgMHgwMCwgMHg3NCwgMHgwNiwgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwKKzB4OTEsIDB4MDAsIDB4NDYsIDB4NDUsIDB4OTAsIDB4MUMsIDB4NDAsIDB4NDQsIDB4NDQsIDB4RDksIDB4MDMsIDB4NDQsIDB4MTIsCisweDEwLCAweDExLCAweDYwLCAweDM3LCAweDAwLCAweDVELCAweDAwLCAweDQ0LCAweDAxLCAweDEwLCAweDBELCAweDQwLCAweDA3LAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhERCwgMHgwMCwKKzB4MDQsIDB4MDMsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MjIsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MTQsIDB4MDIsIDB4MTQsIDB4MDgsCisweDQ4LCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAwLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDIwLCAweDQxLAorMHgwMCwgMHgxNiwgMHgwMCwgMHhEMCwgMHgwNCwgMHg0MCwgMHgwMCwgMHg0MCwgMHhDOSwgMHg4MCwgMHg0NSwgMHgwMiwgMHgxNCwKKzB4MTAsIDB4NjAsIDB4MzEsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NDMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDA2LCAweDAwLCAweEZGLCAweDAwLCAweENELAorMHgwMywgMHgzNCwgMHgwQiwgMHhDMCwgMHgyNSwgMHgwMCwgMHgxMywgMHgwMCwgMHhEQywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MTEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4NTMsIDB4MDAsCisweDQ0LCAweDAwLCAweEIwLCAweDBELCAweEM4LCAweDA1LCAweDQwLCAweDlCLCAweDAwLCAweDRDLCAweDAzLCAweDMwLCAweDAxLAorMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgwMywgMHg0MCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4QkMsIDB4MDMsCisweDcwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweDNGLCAweDAwLCAweEZFLCAweDAwLCAweEYwLCAweDBCLCAweEMwLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywKKzB4MDAsIDB4NzAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RjQsIDB4MDMsIDB4RjEsIDB4MDMsIDB4Q0EsCisweDM5LCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDE3LCAweDYwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhEQywgMHg1MywgMHhGMCwKKzB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4QUYsIDB4MDEsIDB4RkMsIDB4ODcsIDB4RjAsIDB4MUYsIDB4RDAsIDB4MEMsIDB4MDAsCisweEZGLCAweDAxLCAweENDLCAweDAzLCAweEYwLCAweDRGLCAweEMwLCAweDBELCAweDAyLCAweEIzLCAweDAxLCAweEVDLCAweDA3LAorMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwOCwgMHhFRiwgMHgwMSwgMHhCQywgMHgwNSwgMHhCNCwgMHgxQSwgMHhDMCwgMHg3QiwKKzB4MDAsIDB4MzMsIDB4MDQsIDB4QkMsIDB4MDIsIDB4MjAsIDB4MEIsIDB4QzgsIDB4MEMsIDB4MDgsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI3LCAweDAwLCAweDFELCAweDAwLCAweEY0LCAweDBCLCAweEQwLCAweDExLAorMHg0MCwgMHg0NywgMHgwMCwgMHhERCwgMHgwMSwgMHg3NCwgMHgwNywgMHhEMCwgMHgwRCwgMHg0MCwgMHgyMCwgMHgwMSwgMHhDQywKKzB4MTAsIDB4QzQsIDB4MkIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDAsIDB4RDEsIDB4MDEsIDB4NDQsIDB4MDMsIDB4RDAsCisweDExLCAweDQyLCAweDA3LCAweDAwLCAweERELCAweDAxLCAweDc0LCAweDA3LCAweDEyLCAweDE5LCAweDQwLCAweDU3LCAweDIwLAorMHgxNSwgMHg4MywgMHg3NCwgMHgwNiwgMHg1MSwgMHgwMSwgMHg0MCwgMHgwRCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MDMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsCisweDAzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDIwLCAweDA0LCAweENELCAweDA0LAorMHgwNSwgMHgwMywgMHhEMiwgMHg4QywgMHg0MiwgMHgyMywgMHgwOCwgMHhEMSwgMHg4MCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwOCwKKzB4NDAsIDB4NjMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4ODEsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MjcsIDB4MDAsIDB4ODEsCisweDA4LCAweDM0LCAweDAyLCAweDE5LCAweDA4LCAweDQwLCAweDRDLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBOCwgMHg2NSwgMHgwMCwgMHgxRCwgMHgyMSwgMHg3NCwgMHgwMywgMHhEMCwgMHgzOSwgMHg0MCwgMHg0NywKKzB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4RTQsIDB4MDAsIDB4Q0QsIDB4MjAsIDB4NDQsCisweDAzLCAweEQxLCAweDBELCAweDQwLCAweDYzLCAweDAwLCAweEQxLCAweDAzLCAweDU0LCAweDAzLCAweDkwLCAweDE5LCAweDQwLAorMHg2NywgMHgxMCwgMHhERCwgMHgwNCwgMHg3NCwgMHgwNiwgMHgxMSwgMHgxRCwgMHg0MCwgMHgzNywgMHgwMCwgMHg1NSwgMHg5MCwKKzB4NzQsIDB4MDYsIDB4NTgsIDB4MTksIDB4NDIsIDB4MEQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEEwLCAweEU3LCAweDAwLCAweDlGLCAweDExLCAweDVDLCAweDAzLCAweEYxLCAweDE5LCAweEMwLCAweDY3LCAweDA0LAorMHhERiwgMHgwNSwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHhDNCwgMHgwMCwgMHhERiwgMHgwMSwgMHg0QywgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4NDUsIDB4NDAsIDB4QzMsIDB4MDEsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MzksIDB4QzEsIDB4NjcsCisweDAwLCAweERGLCAweDAwLCAweDNDLCAweDBELCAweEI4LCAweDM5LCAweEMwLCAweDM3LCAweDAwLCAweDUzLCAweDAyLCAweDdDLAorMHgwNCwgMHgzMCwgMHgxMSwgMHhDMCwgMHg4MCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywKKzB4ODgsIDB4MkQsIDB4MDAsIDB4QkYsIDB4ODAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4RkYsCisweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDhGLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAyLCAweEZDLCAweDAzLCAweEYyLAorMHgwRiwgMHhFMCwgMHgyNywgMHg4MCwgMHhGRiwgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwgMHgwOSwgMHhDMCwgMHgwRiwgMHgwMCwKKzB4RkYsIDB4MDEsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDMsIDB4QzAsIDB4N0YsIDB4MDEsIDB4M0YsIDB4MDQsIDB4QkMsIDB4MDIsCisweEYwLCAweDAxLCAweEMxLCAweDFGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LAorMHgwNSwgMHgwMiwgMHg5RiwgMHgwMiwgMHg3QywgMHgwMywgMHgzMCwgMHgyOSwgMHhDMCwgMHhBNywgMHgwMCwgMHhERiwgMHgwQSwKKzB4NkMsIDB4MDMsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4RDMsIDB4MDQsIDB4NEMsIDB4MTMsIDB4RjIsIDB4OEQsCisweEMyLCAweEE3LCAweDAwLCAweEQ3LCAweDAzLCAweDRDLCAweDQ3LCAweEYwLCAweDI5LCAweEMwLCAweDI0LCAweDA0LCAweERCLAorMHgwNCwgMHg0QywgMHgxOSwgMHg3MCwgMHgyRCwgMHhDNSwgMHgzNCwgMHgwMCwgMHg1NywgMHgwMiwgMHg3QywgMHg2MCwgMHg3NCwKKzB4MDEsIDB4QzAsIDB4MjgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MjQsCisweDAwLCAweDlELCAweDE4LCAweEY0LCAweDJCLCAweDEwLCAweDAxLCAweDQwLCAweDI3LCAweDAwLCAweERELCAweDAwLCAweDQ0LAorMHgwMywgMHhEMCwgMHg4RCwgMHg0MCwgMHgyNywgMHgwMCwgMHhEMSwgMHgwMiwgMHhDNCwgMHg0QiwgMHhEMCwgMHgyRiwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4RDEsIDB4ODAsIDB4NTAsIDB4MEIsIDB4RjAsIDB4NDksIDB4MDAsIDB4ODUsIDB4MDAsIDB4REQsIDB4NDEsCisweDZDLCAweDRGLCAweDEwLCAweDBELCAweDQwLCAweDMwLCAweDAyLCAweDVCLCAweDAwLCAweDcwLCAweDBBLCAweDEwLCAweDIxLAorMHhDMCwgMHg0RSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHgwMCwgMHgwNCwKKzB4MEQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4MDAsIDB4Q0QsIDB4MDEsIDB4MjQsIDB4MDMsCisweDUwLCAweDNELCAweDQwLCAweDAzLCAweDAwLCAweEM1LCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDRDLCAweDQwLCAweDAyLAorMHgwMCwgMHhDOSwgMHgwMCwgMHgwNCwgMHg4QiwgMHhEMCwgMHgxMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHhDRCwgMHgwMiwgMHgwNCwKKzB4MEIsIDB4NTAsIDB4MjgsIDB4NDAsIDB4MzIsIDB4MDAsIDB4MEQsIDB4MDcsIDB4MzQsIDB4MDQsIDB4RDQsIDB4MTksIDB4NDAsCisweDBDLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDU4LCAweDAwLCAweDZELAorMHgwMSwgMHhCNCwgMHgyNywgMHgxNCwgMHgxNiwgMHg0MCwgMHg3QiwgMHgwMCwgMHhGRCwgMHgwMSwgMHg4NCwgMHg4NywgMHhEMCwKKzB4MUUsIDB4NDAsIDB4N0IsIDB4MTAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDgsIDB4NkIsIDB4NTAsCisweEY5LCAweDAxLCAweDk0LCAweDg3LCAweDU4LCAweDE2LCAweDUwLCAweDQ4LCAweDAyLCAweEZELCAweDExLCAweEU0LCAweDE3LAorMHgxMCwgMHgwRiwgMHg0MCwgMHg3RSwgMHg4QywgMHhBOSwgMHgwMSwgMHhCNCwgMHgyNCwgMHg5MCwgMHgxMiwgMHg0OCwgMHgzRSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MUEsIDB4OTAsIDB4MDAsIDB4Q0YsIDB4MDAsCisweDNDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDMzLCAweDAwLCAweENGLCAweDAwLCAweDJDLCAweDAzLCAweDcwLCAweDBDLAorMHhDMSwgMHgwMywgMHg0MCwgMHhDNSwgMHgwMCwgMHgwQywgMHgyMywgMHhGMCwgMHgwQywgMHg0MCwgMHgxMiwgMHgwMiwgMHhENywKKzB4MDAsIDB4MEMsIDB4MDMsIDB4RDAsIDB4ODAsIDB4QzAsIDB4MzAsIDB4MDIsIDB4Q0YsIDB4MDAsIDB4MDQsIDB4MDMsIDB4NzAsCisweDhDLCAweEMwLCAweDMyLCAweDAwLCAweENGLCAweDEwLCAweDNDLCAweDIyLCAweEY0LCAweDg4LCAweEM5LCAweDQ4LCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgxRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywKKzB4MDMsIDB4RjAsIDB4OEYsIDB4QzAsIDB4M0YsIDB4MTAsIDB4RkYsIDB4MDgsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDE3LCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDhGLCAweEM4LCAweDFGLCAweDA4LCAweEY3LCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMiwgMHhGRiwgMHgwMCwgMHhGQywgMHgxMywgMHhGMCwgMHg0RiwKKzB4RTAsIDB4M0QsIDB4MDAsIDB4RkUsIDB4MDgsIDB4RkMsIDB4MjMsIDB4NzQsIDB4MEYsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDA4LCAweDVGLCAweDAxLCAweDRDLCAweDAzLAorMHg3MCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDNCwgMHgxNywKKzB4MDAsIDB4RDcsIDB4MDAsIDB4NUMsIDB4MUIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsCisweDAzLCAweDcwLCAweDBELCAweEM4LCAweDM3LCAweDAwLCAweEMzLCAweDAwLCAweDJDLCAweDAzLCAweEIwLCAweDBELCAweDQwLAorMHgzNywgMHgwMCwgMHg5RiwgMHg0MCwgMHg0QywgMHg4MCwgMHgyMCwgMHgwOSwgMHhDMiwgMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODIsIDB4MzksIDB4MDAsIDB4NkQsIDB4MDAsIDB4QzQsIDB4MkIsIDB4MTAsCisweDBFLCAweDQwLCAweDFCLCAweDAwLCAweEU5LCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLAorMHhFRCwgMHgwMCwgMHhCNCwgMHgzMywgMHhEMCwgMHgyRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRiwgMHgwMCwgMHhCNCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MjAsIDB4RTEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4NTAsIDB4MEUsIDB4MDAsIDB4M0IsCisweDAwLCAweDhELCAweDAwLCAweDg0LCAweDAxLCAweEIwLCAweDAyLCAweDQwLCAweDRGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwgMHhDRCwgMHgwMywgMHhBNSwgMHgxNywgMHg1MCwgMHgxRSwKKzB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MTEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDEsIDB4N0IsIDB4MDAsIDB4RUQsCisweDAxLCAweDk2LCAweDI3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDg4LCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweEQwLAorMHgzNiwgMHg0MCwgMHg3MywgMHgwMCwgMHhFMSwgMHgwMSwgMHhBNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwKKzB4RUQsIDB4MTEsIDB4MTQsIDB4NDQsIDB4MTksIDB4M0UsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE2LCAweDI4LCAweDczLCAweDAwLCAweENELCAweDAxLCAweDI0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLAorMHgzMywgMHgwMCwgMHg0OSwgMHgwNSwgMHgzNCwgMHgwMywgMHhEMCwgMHgxOCwgMHg0MCwgMHhGMywgMHgwMCwgMHg4RCwgMHgwMSwKKzB4NzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzMsIDB4MDIsIDB4NDUsIDB4MUEsIDB4MzQsIDB4MDMsIDB4RDAsIDB4NUMsCisweDQwLCAweDc3LCAweDAwLCAweDgxLCAweDAwLCAweDA0LCAweDA3LCAweDUwLCAweDJDLCAweDYwLCAweEIzLCAweDAwLCAweENELAorMHg0NywgMHgxNCwgMHgwNywgMHg5MCwgMHgxQywgMHg0MCwgMHg1QiwgMHgyMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTcsIDB4QTAsIDB4MUQsIDB4MDAsIDB4N0YsIDB4MDIsIDB4NkMsIDB4MDEsIDB4NzAsIDB4MjcsIDB4QzAsIDB4OUYsCisweDAwLCAweDdGLCAweDAxLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEMwLCAweDFGLCAweDAwLCAweDVGLCAweDAxLCAweDVDLAorMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHhERiwgMHgwMCwgMHg3RCwgMHgwMiwgMHg3QywgMHg4MSwgMHhGMSwgMHgzNywgMHhDMCwKKzB4REYsIDB4NDAsIDB4NDMsIDB4MDAsIDB4RUMsIDB4MDEsIDB4QjAsIDB4MjcsIDB4QzAsIDB4MUIsIDB4MDEsIDB4N0YsIDB4MjMsCisweDlELCAweEE1LCAweDIwLCAweEI3LCAweEMwLCAweDVGLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMiwgMHgwOCwgMHg0NSwgMHgwMiwgMHgxRiwgMHgwMiwgMHgxQywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwKKzB4MUQsIDB4MjAsIDB4N0MsIDB4MDAsIDB4RjIsIDB4MjEsIDB4QzgsIDB4MDcsIDB4MDYsIDB4MUYsIDB4MEEsIDB4N0MsIDB4MDAsCisweEYwLCAweDIxLCAweEMwLCAweDA3LCAweDA0LCAweDFGLCAweDgwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDg3LAorMHgwNiwgMHgxRiwgMHg0MiwgMHg3QywgMHgyOCwgMHhCMCwgMHg0MSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxRiwgMHgwMCwgMHg2NCwKKzB4ODgsIDB4RjAsIDB4MjEsIDB4QzAsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDE5LCAweDdDLCAweDA2LCAweDMwLCAweDA4LCAweEM1LCAweDI0LCAweDA0LCAweDlGLAorMHgwOCwgMHg3NCwgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyMywgMHgwMCwgMHg5QiwgMHgwMSwgMHg3QywgMHgwMiwgMHgzMCwKKzB4MDksIDB4QzIsIDB4MjMsIDB4ODAsIDB4OTMsIDB4MDQsIDB4NEMsIDB4MDIsIDB4RjAsIDB4NTksIDB4QzAsIDB4MjcsIDB4MDAsCisweDkzLCAweDAzLCAweDVDLCAweDAyLCAweDcxLCAweDU5LCAweEMwLCAweEE3LCAweDQwLCAweDgzLCAweDAwLCAweDRDLCAweDIyLAorMHgzMCwgMHgyOCwgMHhDMCwgMHg0MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwKKzB4NjQsIDB4MDAsIDB4OUQsIDB4MTIsIDB4NzQsIDB4MEEsIDB4MTQsIDB4MDksIDB4NTAsIDB4MjQsIDB4MDAsIDB4OTcsIDB4MDEsCisweDc0LCAweDAyLCAweEQ4LCAweDQ5LCAweDQwLCAweDI3LCAweDQwLCAweDkxLCAweDExLCAweDc0LCAweDBBLCAweDUwLCAweDI5LAorMHg0MCwgMHgyNywgMHhDMCwgMHg4QiwgMHgwMSwgMHg0NCwgMHg0QSwgMHhEMCwgMHgwOSwgMHg0NCwgMHhFNywgMHg0MCwgMHg5MSwKKzB4ODYsIDB4MDAsIDB4MTIsIDB4MjAsIDB4MTksIDB4NDAsIDB4RTcsIDB4MTAsIDB4OTEsIDB4MDEsIDB4NDQsIDB4MDYsIDB4MTQsCisweDM5LCAweDQxLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDgwLCAweDI0LAorMHgyNSwgMHg5RCwgMHgwMCwgMHg3NCwgMHg2MiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwKKzB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDgsIDB4NzQsIDB4MEEsIDB4MTAsIDB4MDksIDB4NDAsCisweDM3LCAweDA4LCAweDkxLCAweDAwLCAweDQ0LCAweDgyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAxLCAweDk5LCAweDAwLAorMHg1MCwgMHgwMywgMHg1MCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHg5OSwgMHgwNCwgMHg0NCwgMHgwMywgMHgxMCwgMHgwRCwKKzB4NDAsIDB4NjAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjIsIDB4MjAsIDB4MDUsCisweDhELCAweDE0LCAweDM2LCAweDEyLCAweDEwLCAweDQ4LCAweDQwLCAweDIwLCAweDAxLCAweDg1LCAweDgwLCAweDM0LCAweDAyLAorMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMSwgMHg4MSwgMHgwOCwgMHg3NCwgMHgxMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4MDEsIDB4OTEsIDB4MDAsIDB4MDQsIDB4MDIsIDB4RDIsIDB4NDgsIDB4NDAsIDB4MzMsIDB4MDEsIDB4ODksIDB4MDAsIDB4NDQsCisweDAyLCAweDEwLCAweDA4LCAweDQ0LCAweDMzLCAweDAwLCAweDg5LCAweDAxLCAweDA1LCAweDkzLCAweDEwLCAweDQ4LCAweDUwLAorMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHgwNiwgMHgwMSwgMHgxRiwKKzB4MDQsIDB4N0MsIDB4MjgsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RDAsCisweEExLCAweEMwLCAweDg3LCAweDAyLCAweDEzLCAweDAyLCAweDdDLCAweDI4LCAweDMwLCAweEU1LCAweEM1LCAweDg3LCAweDAyLAorMHgxMSwgMHgwMCwgMHg0QywgMHgyOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgyMiwgMHgxQiwgMHgwMCwgMHg1QywgMHgwMCwKKzB4NzIsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUIsIDB4MTQsIDB4NEMsIDB4MDAsIDB4MzAsIDB4QTEsIDB4QzAsIDB4NzQsCisweEUwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDJGLCAweDA1LCAweEJGLCAweDE0LAorMHg3NCwgMHhBMiwgMHhGMiwgMHg4QiwgMHhDMCwgMHgyRiwgMHgyMiwgMHhCRiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwQiwKKzB4QzAsIDB4MkYsIDB4MEEsIDB4QjcsIDB4MDQsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsCisweDAwLCAweDdELCAweDAyLCAweEYwLCAweDhGLCAweDAwLCAweDJGLCAweDAyLCAweEI3LCAweDgwLCAweEZDLCAweDAyLCAweDcwLAorMHgwQiwgMHhDMCwgMHgyRiwgMHgwOCwgMHhGNywgMHgwMCwgMHhGRCwgMHgyMywgMHhGMCwgMHg4QiwgMHhDMiwgMHg3NywgMHg2MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsIDB4MkYsIDB4MDUsIDB4QkYsIDB4MEMsIDB4RkMsCisweDgyLCAweDMyLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweEIzLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDhBLCAweEMwLAorMHgyNCwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMiwgMHgzMCwgMHg0QiwgMHhDMCwgMHgyNiwgMHgwNSwgMHhCRiwgMHgwMCwKKzB4RkMsIDB4MDIsIDB4MzAsIDB4MEIsIDB4RTAsIDB4MkYsIDB4MDIsIDB4RkYsIDB4MDAsIDB4Q0QsIDB4MDIsIDB4QjAsIDB4MEYsCisweEMyLCAweDJGLCAweDQ4LCAweEIzLCAweDAwLCAweENDLCAweDAyLCAweEYwLCAweDBCLCAweEM0LCAweDc0LCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNywgMHgwMSwgMHgxRCwgMHgwQywgMHg3NCwgMHg0OCwKKzB4MTAsIDB4MDUsIDB4NDAsIDB4MDQsIDB4MDIsIDB4NTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4NDEsIDB4NDgsIDB4ODQsCisweDA0LCAweDFELCAweDEwLCAweDc0LCAweDIwLCAweDE0LCAweDQxLCAweDQxLCAweDA0LCAweDAxLCAweDU3LCAweDgwLCAweDc0LAorMHg0MCwgMHgxMCwgMHgwMSwgMHg2MCwgMHgwNywgMHgwMiwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwKKzB4MTcsIDB4NTAsIDB4MTEsIDB4MDAsIDB4NDUsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NjIsIDB4MDAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDA1LCAweDhELCAweDA1LCAweDM2LCAweDMyLCAweDE0LAorMHg4OCwgMHg0MCwgMHg2MiwgMHg2MCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHg0OCwgMHg1MCwgMHgyMCwgMHgwMywKKzB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4Q0MsIDB4NDAsIDB4MjIsIDB4MDUsIDB4Q0QsIDB4MDAsIDB4MzYsIDB4MTMsCisweDEwLCAweDg4LCAweDQwLCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDI0LCAweDAyLCAweDk0LCAweDE4LCAweDQwLCAweDIzLAorMHgwMCwgMHg4NSwgMHg0MCwgMHgxNCwgMHgwMiwgMHhEMiwgMHgwOCwgMHg0MCwgMHg0OCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4MDQsIDB4OUQsIDB4ODAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksCisweDUwLCAweDI2LCAweDAxLCAweDkxLCAweDAxLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweEE0LCAweDAwLCAweDlELAorMHgwMCwgMHg3NCwgMHgwMiwgMHgxMSwgMHgwOSwgMHg0MCwgMHg2NCwgMHgxMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwMiwgMHgxMCwKKzB4MDksIDB4NDAsIDB4RTcsIDB4MTAsIDB4OUQsIDB4MDAsIDB4NjQsIDB4MTIsIDB4MTIsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDgsCisweEQ1LCAweDA0LCAweDQ0LCAweDAyLCAweEQwLCAweDI5LCAweDQwLCAweDYyLCAweDI4LCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwNSwgMHgyMCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwKKzB4NjYsIDB4MDAsIDB4OTMsIDB4MDMsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MTksIDB4QzAsIDB4QTQsIDB4MDAsIDB4OUYsIDB4MDEsCisweDdDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweEE2LCAweDA0LCAweDlGLCAweDAzLCAweDc0LCAweDAyLCAweDM0LCAweDI5LAorMHg0MCwgMHhBNywgMHgwMCwgMHg4RiwgMHgwMCwgMHgyQywgMHg4MiwgMHhCMCwgMHgyOSwgMHhDMCwgMHhBMywgMHgwMCwgMHg5NywKKzB4MDIsIDB4NUMsIDB4MDYsIDB4RjAsIDB4MjksIDB4QzAsIDB4MTQsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE2LCAweDA4LCAweDY1LCAweDBBLCAweDlGLCAweDE0LCAweDdDLCAweDAyLCAweEYyLCAweDQ4LCAweEMwLCAweDIxLAorMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMiwgMHg1OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMywgMHg3QywKKzB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4ODAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4ODIsCisweDI3LCAweDAwLCAweDlGLCAweDE4LCAweDVDLCAweDAyLCAweEQwLCAweDk5LCAweEMwLCAweEE3LCAweDY0LCAweDlCLCAweDAwLAorMHg3QywgMHg4RSwgMHg3OCwgMHgzOCwgMHhDMCwgMHg1QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MDgsIDB4ODUsIDB4MDQsIDB4MUYsIDB4MDgsIDB4N0MsIDB4NDAsIDB4RjEsIDB4MDEsIDB4QzAsIDB4MDcsIDB4ODAsCisweDEzLCAweDIwLCAweDdDLCAweDAwLCAweEYyLCAweDQxLCAweEQwLCAweDg0LCAweDAwLCAweDFGLCAweDAwLCAweDBDLCAweDAwLAorMHgzMCwgMHgwMSwgMHhDMiwgMHg4NywgMHgwOCwgMHgxRiwgMHgwMiwgMHg3RSwgMHgwMCwgMHhGMiwgMHgyMSwgMHhGMCwgMHgwNCwKKzB4MEMsIDB4MUIsIDB4ODAsIDB4N0MsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzksIDB4ODcsIDB4MDAsIDB4MDcsIDB4ODAsIDB4NEQsCisweDA4LCAweDMyLCAweDAxLCAweEMwLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorMHgwMCwgMHhEQywgMHgyMCwgMHg3RCwgMHgwMSwgMHhGNiwgMHgxRCwgMHg3MCwgMHgwNSwgMHg2MCwgMHgxNywgMHgwMCwgMHg1MSwKKzB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsIDB4MDcsIDB4QzAsIDB4MTYsIDB4MDAsIDB4N0QsIDB4MDUsIDB4Q0QsIDB4MTksIDB4MzAsCisweDI3LCAweDYwLCAweDE3LCAweDIwLCAweDVELCAweDAwLCAweEZDLCAweEE5LCAweDcyLCAweDQ1LCAweDYyLCAweDFDLCAweDExLAorMHg3MSwgMHgyNSwgMHhEQywgMHg4RCwgMHgxNCwgMHgyNywgMHhDMCwgMHg5RCwgMHgwMSwgMHg3MSwgMHg4OSwgMHhDQywgMHgwMSwKKzB4MTAsIDB4MzcsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsCisweEYyLCAweDAyLCAweENELCAweDAyLCAweDc0LCAweDAzLCAweDUyLCAweDBDLCAweDQ0LCAweDMzLCAweDAwLCAweDgxLCAweDAwLAorMHgzNCwgMHgwMywgMHhEMCwgMHgyRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMSwgMHgyNCwgMHgxRiwgMHgxMCwgMHgyQywKKzB4NDksIDB4MzMsIDB4MTAsIDB4OEQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4NTEsIDB4MTgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4NDEsCisweDAxLCAweDM0LCAweDQwLCAweDEwLCAweDBDLCAweDQwLCAweEEzLCAweDIwLCAweEM1LCAweDA5LCAweDIwLCAweDA3LCAweDEwLAorMHgyQywgMHg0MSwgMHg0MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwKKzB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDEsIDB4NTAsIDB4MEUsIDB4NDAsIDB4MzMsIDB4NDAsIDB4RTEsIDB4ODAsIDB4QjQsCisweDAzLCAweEQ4LCAweDBGLCAweDQxLCAweDM4LCAweDAwLCAweDZELCAweDAxLCAweDg0LCAweDAzLCAweDEwLCAweDBFLCAweDQ4LAorMHgzQiwgMHgwMiwgMHhFRCwgMHg0MCwgMHhCNCwgMHgwMSwgMHg1MCwgMHgxRSwgMHg0OCwgMHg1OSwgMHgwMCwgMHg2MSwgMHg4MSwKKzB4RDQsIDB4NDIsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MkQsIDB4MDAsIDB4NjEsIDB4MDAsIDB4MDQsIDB4NDYsIDB4MTAsIDB4MEUsCisweDQxLCAweDEwLCAweDA4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDc4LCAweDAwLAorMHg2RiwgMHgwMSwgMHhCNCwgMHgwNywgMHg3MCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwOCwgMHhFMSwgMHgwMSwgMHhCQywgMHgwNywKKzB4RjAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4ODEsIDB4QkQsIDB4MDEsIDB4RUMsIDB4MDUsIDB4MzQsIDB4MUUsIDB4NDAsIDB4N0IsCisweDAyLCAweEVGLCAweDAxLCAweEI0LCAweDA3LCAweDcwLCAweDFFLCAweDQwLCAweDdDLCAweDQwLCAweDZCLCAweDAwLCAweEJDLAorMHgwNiwgMHgzMCwgMHgxQSwgMHhDMCwgMHg2QiwgMHgwMCwgMHhFNywgMHgwMSwgMHhBQywgMHgwNywgMHgzNCwgMHgxNywgMHhDMCwKKzB4NTAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MTUsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDgxLCAweDcwLCAweDBELCAweEM4LCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLAorMHgwRCwgMHhDMCwgMHgzNywgMHgwNCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDOCwgMHhCNywgMHgwMCwKKzB4REYsIDB4MDAsIDB4NUMsIDB4ODMsIDB4NzIsIDB4MEMsIDB4RTAsIDB4MTYsIDB4MDgsIDB4REYsIDB4MDAsIDB4M0MsIDB4MDIsCisweEM0LCAweDAxLCAweEMwLCAweDIzLCAweDAwLCAweDBGLCAweDAwLCAweDdDLCAweDgzLCAweEYwLCAweDAxLCAweEQwLCAweDQzLAorMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgzMCwgMHg3RCwgMHgwMCwgMHhGMywgMHgwMSwKKzB4Q0MsIDB4MTMsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDEsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUYsCisweEMwLCAweDdGLCAweDA0LCAweEYzLCAweDAxLCAweENDLCAweDEzLCAweDMwLCAweDE3LCAweEMwLCAweDdDLCAweDAyLCAweEZGLAorMHg4OSwgMHhGQywgMHg4NywgMHgzMCwgMHg5RiwgMHhDMCwgMHg3RiwgMHgwMCwgMHg3MywgMHgwMSwgMHhGQywgMHgyNiwgMHhGMCwKKzB4MTcsIDB4QzgsIDB4NkIsIDB4MjAsIDB4QkIsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RDAsIDB4MTMsIDB4QzAsIDB4MUIsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDNELCAweDUwLCAweDcxLCAweDIwLCAweDg0LAorMHg4MywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgyQSwgMHg0OCwKKzB4M0YsIDB4MDAsIDB4NjEsIDB4MDAsIDB4RDQsIDB4MDgsIDB4MTEsIDB4MEIsIDB4QzAsIDB4MzgsIDB4MDAsIDB4RTksIDB4ODgsCisweERDLCAweDgyLCAweDEwLCAweENFLCAweDQwLCAweDNCLCAweDAxLCAweDYxLCAweDAwLCAweEI0LCAweDMyLCAweEQwLCAweDA2LAorMHg0MiwgMHgzQiwgMHgxMiwgMHgyMSwgMHgzMCwgMHhCNCwgMHgwMiwgMHhEMCwgMHg0QSwgMHg0MiwgMHg1NywgMHgwMCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4NjEsIDB4MDAsIDB4ODQsIDB4MjAsCisweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDA5LCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDg2LCAweDQwLCAweDNCLAorMHgwMCwgMHhCMSwgMHgwMCwgMHhBNCwgMHgyMSwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzOCwgMHgyMCwgMHhFRCwgMHgwOCwgMHhCNiwKKzB4MDMsIDB4MTAsIDB4MEUsIDB4NDksIDB4MkIsIDB4MDAsIDB4NjEsIDB4MTAsIDB4QjQsIDB4MDIsIDB4RDEsIDB4MDIsIDB4NDAsCisweDJGLCAweDAwLCAweDI5LCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDAyLCAweDQ0LCAweDIzLCAweDAyLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHhFMSwgMHgwMCwgMHgwMSwgMHgwNywgMHgwNCwgMHgwMCwgMHhEMCwKKzB4MEMsIDB4NDAsIDB4NzMsIDB4MDAsIDB4Q0QsIDB4MDMsIDB4MzQsIDB4MDMsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MzMsIDB4MDAsCisweDExLCAweDAwLCAweDM0LCAweDAwLCAweDE0LCAweDA5LCAweDUwLCAweEI2LCAweDEwLCAweENELCAweDAzLCAweDM0LCAweDAyLAorMHgxNCwgMHgzQywgMHg0MCwgMHhBMywgMHg0MCwgMHg0MSwgMHgwMSwgMHgzNCwgMHg0QSwgMHhEMCwgMHgyMCwgMHg0MCwgMHgyMywKKzB4MDIsIDB4MDEsIDB4MDMsIDB4MzQsIDB4NkYsIDB4RDAsIDB4MTEsIDB4NDEsIDB4MEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLCAweEM1LCAweDAwLCAweDkzLCAweDA0LCAweDQ3LCAweDAyLCAweEYxLCAweDJELAorMHg4MCwgMHhGNywgMHgwMSwgMHhERiwgMHgwNywgMHg3NCwgMHgwMywgMHhGMCwgMHgwMSwgMHg0MCwgMHgzRiwgMHg0MiwgMHhEMywKKzB4MDAsIDB4NkMsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4M0MsIDB4MDAsIDB4REYsIDB4MDUsIDB4NzQsIDB4MDIsIDB4MzAsCisweDFELCAweEM0LCAweDI3LCAweDAwLCAweDUzLCAweDAxLCAweDdDLCAweDEyLCAweEYwLCAweDI1LCAweEMwLCAweDczLCAweDAwLAorMHhEQiwgMHgwMywgMHg3QywgMHgwQiwgMHhGMiwgMHg2OSwgMHg0MCwgMHg1NywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MjcsIDB4MDMsIDB4OUYsIDB4MDAsIDB4N0UsIDB4MEEsIDB4RjAsIDB4MUQsIDB4QzAsCisweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDM5LCAweEMwLCAweDc3LCAweDEwLCAweERGLCAweDAzLAorMHg1QywgMHgwQSwgMHhGMCwgMHgyOSwgMHhDMCwgMHgzNSwgMHgwMCwgMHhEQiwgMHgxMCwgMHg1NCwgMHg4MCwgMHhGMCwgMHgwRCwKKzB4Q0QsIDB4MjcsIDB4MDEsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4ODUsIDB4QzEsIDB4QjcsIDB4MDQsIDB4REYsCisweDA0LCAweDdDLCAweDAyLCAweEYwLCAweDI5LCAweEMwLCAweDM3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwOCwgMHgwQiwgMHgwMCwgMHgzMywgMHgwMCwgMHhGQywgMHg4MiwgMHhGMCwgMHgwRiwgMHhDMSwgMHgzRiwKKzB4MjQsIDB4RkYsIDB4MzAsIDB4RkMsIDB4MDMsIDB4RjIsIDB4MDMsIDB4QzQsIDB4M0IsIDB4MDAsIDB4NzMsIDB4MDUsIDB4OEQsCisweDAyLCAweDMwLCAweDAzLCAweEMyLCAweDNDLCAweDA0LCAweEYzLCAweDA0LCAweEZDLCAweDAwLCAweEYxLCAweDBFLCAweEMwLAorMHgwNiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMiwgMHg3MCwgMHgyNywgMHhDMCwgMHgzQywgMHg0MCwgMHhGMywgMHgwMiwKKzB4Q0MsIDB4MDEsIDB4RjEsIDB4MEIsIDB4QzAsIDB4MDQsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDgxLCAweDIwLCAweEM2LCAweDM0LCAweDkxLCAweDEzLCAweDVDLCAweDE2LCAweEQwLCAweDBELCAweDQwLCAweDM3LCAweDAwLAorMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEOSwgMHgzOSwgMHg0MCwgMHgzNywgMHgwMCwgMHg1MSwgMHgwNCwgMHg0NCwgMHgwRSwKKzB4MTAsIDB4NzEsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDMsIDB4MDEsIDB4NzQsIDB4MEMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NDQsCisweDAwLCAweDVELCAweDAzLCAweDM0LCAweDE3LCAweDExLCAweDM0LCAweDQwLCAweEY0LCAweDA0LCAweDgxLCAweDAwLCAweDQ0LAorMHgwNywgMHhEMCwgMHg1OSwgMHg0OCwgMHg4NCwgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4QTAsIDB4NDYsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDYsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsCisweDA0LCAweDc0LCAweDgzLCAweEQwLCAweDE5LCAweDQwLCAweDM3LCAweDAwLCAweDkxLCAweDQwLCAweDQ0LCAweDA2LCAweDkwLAorMHgxMSwgMHg0MCwgMHgzNCwgMHgyMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHg0NiwgMHhEMCwgMHgxRCwgMHg0MCwgMHg2NiwgMHgwNCwKKzB4NUQsIDB4MTEsIDB4NzQsIDB4MDYsIDB4NTAsIDB4MjUsIDB4NDAsIDB4NzQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MEUsCisweEQwLCAweDExLCAweDQwLCAweDA0LCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLAorMHgyMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MzMsIDB4NDgsIDB4ODEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4OTAsIDB4MDgsCisweDQwLCAweDMwLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDBDLCAweDQyLCAweDIwLCAweDAwLCAweDQ5LAorMHgwMCwgMHg3NCwgMHgwMiwgMHgxOCwgMHgwNCwgMHg0MCwgMHgxMCwgMHgwMCwgMHhDMSwgMHgyMCwgMHgwNCwgMHgwMiwgMHhEMCwKKzB4MDgsIDB4NDIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDQwLCAweDEzLCAweDQwLCAweDdFLCAweDAwLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDIwLCAweDdFLAorMHgwMywgMHhEMCwgMHgwMSwgMHhDMiwgMHgzRiwgMHgwMCwgMHgxMywgMHgwMCwgMHg0QywgMHgwMiwgMHhCMCwgMHgwMSwgMHhDMCwKKzB4M0MsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDYsIDB4MDAsIDB4NUYsIDB4MDAsCisweDdDLCAweDAyLCAweDcwLCAweDA1LCAweEQwLCAweDM0LCAweDEwLCAweDUzLCAweDAwLCAweDRDLCAweDAwLCAweEYyLCAweDAxLAorMHhEMCwgMHgwNCwgMHg2MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyRiwgMHgxMCwKKzB4QkYsIDB4MDAsIDB4REUsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzYsIDB4M0YsIDB4MDAsIDB4RkYsIDB4ODAsIDB4RkMsIDB4MDMsCisweEQwLCAweDAzLCAweEUwLCAweDNGLCAweDAwLCAweDJGLCAweDAwLCAweEY0LCAweDAwLCAweDcwLCAweDAzLCAweEQwLCAweDNGLAorMHgwMCwgMHhGNywgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MDcsIDB4QzgsIDB4M0YsIDB4MDAsIDB4M0YsIDB4QTAsIDB4RkQsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsCisweDE3LCAweDYxLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDNGLCAweDAwLCAweEIzLAorMHgwMCwgMHhDQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMywgMHgzMCwKKzB4MEEsIDB4QzAsIDB4MEMsIDB4MDEsIDB4MzMsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEIsIDB4MDAsCisweEZCLCAweDA2LCAweEVDLCAweDA1LCAweDMwLCAweDRGLCAweEMxLCAweDJGLCAweDAwLCAweEYzLCAweDE0LCAweEZDLCAweDIzLAorMHhGMCwgMHgwQiwgMHhDMCwgMHgwRiwgMHgwMCwgMHhGNywgMHgwNCwgMHhDQywgMHgyMiwgMHgzNCwgMHgwMywgMHhDMCwgMHgwQywKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTAsIDB4MDcsIDB4MTAsIDB4OTEsIDB4ODAsCisweDQ0LCAweDAwLCAweDcwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDQzLCAweDEwLCAweDA5LAorMHg0OCwgMHg4NCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgyNywgMHgwMCwgMHhGOSwKKzB4MEIsIDB4NDQsIDB4NTUsIDB4MTUsIDB4MkYsIDB4NDAsIDB4NkYsIDB4MDAsIDB4RDEsIDB4MDMsIDB4NzAsIDB4M0IsIDB4RDAsCisweDM5LCAweDQwLCAweDQ3LCAweDQwLCAweEYxLCAweDAwLCAweDZDLCAweDBBLCAweDEwLCAweDE1LCAweDQwLCAweDBELCAweDIwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzMywgMHgwNSwgMHgwMSwgMHgyMCwgMHgxNCwKKzB4MDAsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4MDAsIDB4MEQsIDB4MjAsIDB4MTQsIDB4MTMsIDB4MTAsIDB4MDAsIDB4NDAsCisweDAxLCAweDAyLCAweDAxLCAweDIwLCAweDA0LCAweDAyLCAweEQwLCAweDA4LCAweDQyLCAweDIzLCAweDAwLCAweEMxLCAweDA0LAorMHgyNCwgMHg4MSwgMHgxMCwgMHgwQywgMHg0QSwgMHgyNywgMHgwOCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMSwgMHg4OCwKKzB4NDAsIDB4MDMsIDB4MDAsIDB4QzUsIDB4MDgsIDB4NDQsIDB4QTIsIDB4MTMsIDB4MDgsIDB4NDYsIDB4NEMsIDB4ODAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDA1LCAweDExLCAweDExLCAweDA0LCAweDU0LCAweDA0LAorMHhEMCwgMHgxMSwgMHg0MSwgMHg0NywgMHgwMCwgMHgxRCwgMHgxMSwgMHg3NCwgMHgwMywgMHgxMCwgMHgxNSwgMHg0MCwgMHg0MSwKKzB4MDAsIDB4MTEsIDB4MDEsIDB4NDQsIDB4MDQsIDB4RDIsIDB4MzEsIDB4NEMsIDB4RTcsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NjQsCisweDIxLCAweDEwLCAweDBELCAweDQwLCAweDI3LCAweDAxLCAweERELCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDE5LCAweDQ4LAorMHg4NywgMHgwMCwgMHhEMSwgMHgwMCwgMHg2NCwgMHg0NiwgMHgxMCwgMHgwRCwgMHg0MCwgMHgwRCwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTgsIDB4NjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NUQsIDB4NDYsIDB4RjAsCisweDM5LCAweEMwLCAweDQ3LCAweDAxLCAweDFGLCAweDAzLCAweDVDLCAweDAzLCAweDEwLCAweDI5LCAweEUxLCAweDQ1LCAweDQwLAorMHg5MywgMHgwNSwgMHg0QywgMHgwQywgMHhEMCwgMHgxOSwgMHhDMCwgMHhDNywgMHgwMCwgMHhEQiwgMHgwMCwgMHg2QywgMHgxNywKKzB4MzAsIDB4MEQsIDB4NjAsIDB4MjMsIDB4NDAsIDB4REYsIDB4ODAsIDB4N0MsIDB4MDMsIDB4RjIsIDB4MDksIDB4QzAsIDB4QzcsCisweDAwLCAweEQ3LCAweDAwLCAweDBDLCAweDBFLCAweDMwLCAweEIxLCAweDgxLCAweDAwLCAweDIwLCAweDBFLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHg2OSwgMHg0MCwgMHg5RiwgMHgwMSwgMHhFQywgMHgwMCwgMHg3MCwgMHgwQiwKKzB4QzAsIDB4MEYsIDB4MDAsIDB4QUYsIDB4MjAsIDB4OEMsIDB4MDMsIDB4RjAsIDB4MEIsIDB4RTIsIDB4MEUsIDB4MDAsIDB4QUYsCisweDAwLCAweEZELCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweERDLCAweDA2LCAweEY4LAorMHgwRiwgMHhDMSwgMHg2RiwgMHgwMCwgMHhGMiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwgMHg0MCwgMHg0RiwgMHgwMiwKKzB4RkYsIDB4MDAsIDB4REYsIDB4MDIsIDB4RjAsIDB4MDcsIDB4RTAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDM1LCAweDAwLCAweDgzLCAweDAwLCAweDRELCAweDBBLCAweEYwLCAweDIxLCAweEMwLAorMHgyNCwgMHg4MSwgMHgxRiwgMHgwMiwgMHg1QywgMHgwMywgMHgzMCwgMHhBNSwgMHhDMCwgMHg0NCwgMHgwMCwgMHgxQiwgMHgwMCwKKzB4N0MsIDB4MEEsIDB4MzIsIDB4MjksIDB4QzksIDB4QTYsIDB4NDIsIDB4QzMsIDB4MDAsIDB4NUMsIDB4MDEsIDB4MzQsIDB4MEQsCisweEMwLCAweDI3LCAweDgwLCAweEQzLCAweDA4LCAweDdDLCAweDAzLCAweDMwLCAweDQ5LCAweEMwLCAweDA3LCAweDEwLCAweERGLAorMHgwMCwgMHg0QywgMHgyMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTMsIDB4QTAsIDB4MkMsIDB4MTQsIDB4OTEsIDB4MjAsIDB4NDQsIDB4MkEsIDB4RDAsIDB4ODksIDB4NDEsIDB4ODQsCisweDAwLCAweDFELCAweDA5LCAweEYwLCAweDAzLCAweDMwLCAweDg1LCAweDAwLCAweDI0LCAweDAwLCAweDExLCAweDFBLCAweDc0LAorMHg4MiwgMHgzMCwgMHgwMSwgMHg0MCwgMHhBNCwgMHgwMCwgMHhGQiwgMHg0MCwgMHg0NCwgMHgwMSwgMHgxMCwgMHgwRiwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4RjEsIDB4MDEsIDB4RjQsIDB4MDMsIDB4NTAsIDB4NzksIDB4NDAsIDB4MDMsIDB4MDAsIDB4RkQsIDB4MjQsCisweDU0LCAweDAyLCAweEIwLCAweDFDLCAweDQwLCAweDZGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMywgMHgyMCwgMHgzMCwgMHgwOCwgMHg4MSwgMHgwMCwgMHgyMCwgMHgyNiwgMHhEMSwgMHgzOCwgMHg0MCwgMHg2MCwgMHgyMCwKKzB4OEQsIDB4MjAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MzksIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDMsIDB4MTYsIDB4MDIsCisweDEwLCAweDIwLCAweDQwLCAweDA0LCAweDAxLCAweEMxLCAweDAwLCAweDU0LCAweDAyLCAweDEwLCAweDNDLCAweDQwLCAweDMxLAorMHgwMCwgMHhDOCwgMHgwMSwgMHgxNCwgMHgwMywgMHg5MCwgMHgyOCwgMHg0MCwgMHgxMywgMHgwMCwgMHhEOSwgMHgwMCwgMHgwNiwKKzB4MDMsIDB4MTAsIDB4OEMsIDB4NDAsIDB4NUYsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDAyLCAweDUwLCAweDAwLCAweEUxLCAweDAxLCAweEE0LCAweDA3LCAweEQwLCAweDE2LCAweDYwLCAweDdBLCAweDIwLCAweEVELAorMHgwMSwgMHhCNCwgMHgwMywgMHg5MCwgMHgxRSwgMHg0MCwgMHg0MCwgMHgwMCwgMHhFMSwgMHg0MSwgMHhCNiwgMHgwRCwgMHg5NCwKKzB4MTYsIDB4NDIsIDB4NEEsIDB4MDAsIDB4QzksIDB4MDEsIDB4ODQsIDB4MDUsIDB4MTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsCisweEU5LCAweDAxLCAweEI0LCAweDI3LCAweEQwLCAweDFBLCAweDQwLCAweDVCLCAweDAwLCAweENELCAweDAxLCAweDE2LCAweDI2LAorMHg5MCwgMHg5QSwgMHg0MCwgMHgzRiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxOCwKKzB4MzAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MEQsIDB4MDEsIDB4RjAsIDB4OEQsIDB4QzAsIDB4MzAsIDB4MDQsIDB4Q0QsIDB4MzAsCisweDdDLCAweDIzLCAweDEwLCAweDA4LCAweEMwLCAweDAwLCAweDAxLCAweDBCLCAweDAwLCAweDdDLCAweDBCLCAweDMwLCAweDg4LAorMHhDMCwgMHgxMiwgMHgwMiwgMHhDMywgMHgwMCwgMHg1QywgMHgyMiwgMHgzMiwgMHgwQywgMHhDMSwgMHgyMywgMHgwMCwgMHhDOSwKKzB4MDgsIDB4N0MsIDB4MDMsIDB4MzAsIDB4MDgsIDB4QzAsIDB4MjMsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4MEMsIDB4MDMsIDB4MzAsCisweDA0LCAweEMwLCAweDRCLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDFELAorMHgxNCwgMHg3RiwgMHgwMCwgMHhERCwgMHgwMSwgMHhGMiwgMHg4NywgMHhEMCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwOCwgMHhGQywKKzB4MTMsIDB4NzAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDEsIDB4NzAsIDB4MEYsIDB4QzgsCisweDFELCAweDQwLCAweEZGLCAweDEwLCAweEZDLCAweDAwLCAweEYwLCAweDBGLCAweEMwLCAweEFCLCAweDQyLCAweEY3LCAweDIwLAorMHhGQywgMHgwMywgMHg3MCwgMHgwQiwgMHhDOCwgMHgyRiwgMHgxMiwgMHhGQywgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwMywKKzB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MjcsIDB4MDAsCisweERGLCAweDAwLCAweDRFLCAweDAzLCAweDMxLCAweDBELCAweEMwLCAweDE3LCAweDAwLCAweDVGLCAweDAxLCAweENDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgwNCwgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgxRiwKKzB4MjAsIDB4REYsIDB4MDYsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MkQsIDB4QzEsIDB4QjYsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsCisweDAzLCAweEE4LCAweDFELCAweEMwLCAweDE1LCAweDAwLCAweERGLCAweDA2LCAweDRELCAweDAxLCAweDMwLCAweDFELCAweEMwLAorMHg1NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgyOSwgMHgwOSwgMHhFRCwKKzB4MjAsIDB4QzQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RkQsIDB4MDAsIDB4ODQsIDB4MDcsIDB4RDAsCisweDBDLCAweDQwLCAweDA4LCAweDAwLCAweEUxLCAweDAwLCAweEI0LCAweDAzLCAweEQ4LCAweDBFLCAweDQwLCAweDNCLCAweDA4LAorMHhGRCwgMHgxMCwgMHhBQywgMHgwMCwgMHhEMCwgMHgyRSwgMHg0NCwgMHgzQiwgMHgwMCwgMHhFMSwgMHgwMiwgMHhGNCwgMHgwMywKKzB4MTAsIDB4MEUsIDB4NDAsIDB4MTgsIDB4MDAsIDB4RUQsIDB4MTYsIDB4QzQsIDB4MDIsIDB4QjAsIDB4MEEsIDB4QzAsIDB4NEUsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweEY5LCAweDAwLCAweEVELCAweDgxLAorMHg4NCwgMHgwNywgMHgxMSwgMHgxRSwgMHg0OCwgMHhGQiwgMHgwOCwgMHhFRCwgMHgxMSwgMHg4NCwgMHgwNywgMHhEMCwgMHgxRSwKKzB4NDAsIDB4NDgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDEsIDB4RkIsIDB4MDAsIDB4RUQsCisweDA1LCAweDk0LCAweDQ0LCAweEQ5LCAweDVFLCAweDQwLCAweDczLCAweDAwLCAweEU1LCAweDA1LCAweEI0LCAweDA3LCAweDkwLAorMHgxQywgMHg0NCwgMHg3OSwgMHgwMCwgMHhFRCwgMHg0MSwgMHg4NCwgMHgwNywgMHgxMCwgMHgxNCwgMHg0MCwgMHgwNCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjgsIDB4QjMsIDB4MDQsIDB4Q0QsIDB4MDIsIDB4MDUsCisweDgzLCAweDEyLCAweDZDLCAweDYwLCAweDczLCAweDEwLCAweENELCAweDAzLCAweDA0LCAweDAzLCAweEQwLCAweDFDLCAweDUwLAorMHgzMCwgMHgwMiwgMHhDMSwgMHgwOSwgMHgzNCwgMHgwQiwgMHhEMCwgMHgzQywgMHg0NCwgMHg3MywgMHgwMSwgMHhDRCwgMHg0MCwKKzB4MjQsIDB4MDQsIDB4RDgsIDB4MEMsIDB4NDAsIDB4NzMsIDB4ODAsIDB4QzUsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MEMsCisweDQyLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDI0LCAweDAyLCAweDkwLCAweDAwLCAweDUwLCAweDRBLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBMCwgMHg1RCwgMHgwMCwgMHg3RiwgMHgwMCwgMHhDQywgMHgwNSwKKzB4MzAsIDB4MjcsIDB4QzAsIDB4MUYsIDB4MDAsIDB4N0YsIDB4MDgsIDB4NEQsIDB4MDEsIDB4RjAsIDB4MTcsIDB4QzEsIDB4NUMsCisweDQwLCAweDczLCAweDAxLCAweEZDLCAweDAxLCAweEYwLCAweDI3LCAweDQwLCAweDVGLCAweDAwLCAweDVGLCAweDAwLCAweERDLAorMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHg1NiwgMHg0MSwgMHg1NywgMHgwMCwgMHg3QywgMHgwMSwgMHhCMCwgMHgwNSwgMHhDMCwKKzB4MUQsIDB4ODksIDB4NUYsIDB4MDAsIDB4OEMsIDB4MDEsIDB4MzAsIDB4MDcsIDB4QzAsIDB4NUMsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDgxLCAweDA4LCAweDFGLCAweDEwLCAweDdDLCAweDI0LCAweEY0LAorMHhBMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDNCwgMHg0NywgMHgwOCwKKzB4MUYsIDB4MjYsIDB4N0MsIDB4MDAsIDB4RjAsIDB4NDEsIDB4QzIsIDB4ODcsIDB4MDAsIDB4MEYsIDB4MDAsIDB4N0MsIDB4MDAsCisweEYyLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDFCLCAweDAwLCAweDdDLCAweDAwLCAweDcwLCAweDAxLCAweEMwLCAweDAzLAorMHgwMCwgMHgxRiwgMHgwMCwgMHg1QywgMHgwNCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MjUsIDB4MDAsIDB4ODMsIDB4MDAsIDB4MEMsIDB4MDIsIDB4MzAsIDB4ODksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAxLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEQwLCAweDYwLCAweDAyLCAweDkzLAorMHgwMSwgMHg3QywgMHg0NiwgMHhGMCwgMHg1OSwgMHhDMCwgMHgyMywgMHgwMCwgMHg5QiwgMHgwMCwgMHg0QywgMHg0MiwgMHhCMCwKKzB4MDksIDB4QzAsIDB4MjIsIDB4MDEsIDB4OTMsIDB4MDAsIDB4M0MsIDB4MDIsIDB4OTAsIDB4NDksIDB4QzAsIDB4QTcsIDB4NDAsCisweDkzLCAweDAwLCAweDRELCAweDAyLCAweDE0LCAweDA5LCAweEMwLCAweDQzLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhFNCwgMHgyMSwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwRSwgMHgxNCwgMHgyOSwgMHhDMCwKKzB4MjUsIDB4MDIsIDB4OUQsIDB4MUIsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OTUsIDB4MTIsCisweDVDLCAweDIyLCAweEQyLCAweDE5LCAweDQwLCAweDY3LCAweDAwLCAweDkxLCAweDgwLCAweDQ0LCAweDAyLCAweDEwLCAweDI5LAorMHg0MSwgMHg2NCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHg1MCwgMHgzOSwgMHg0MSwgMHg2NywgMHgwMCwgMHg5MSwKKzB4MDIsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE4LCAweEEwLCAweDY0LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDIyLCAweDEwLCAweDA5LCAweDQxLCAweDI3LAorMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5OSwgMHgwOCwgMHg3NCwKKzB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDEsIDB4OTksIDB4MDAsIDB4MDQsIDB4ODIsIDB4OTQsIDB4MDksIDB4NDAsCisweDI2LCAweDAwLCAweDk1LCAweDAwLCAweDc0LCAweDAyLCAweDUwLCAweDA5LCAweDQwLCAweDI3LCAweDIwLCAweDg5LCAweDQyLAorMHg0NCwgMHgwMiwgMHg1MCwgMHgwOSwgMHg0MCwgMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjAsIDB4MjAsIDB4MDEsIDB4ODEsIDB4MDQsIDB4MDQsIDB4MTIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjEsIDB4ODIsCisweDhELCAweDEwLCAweDM0LCAweDEyLCAweEQwLCAweDU4LCAweDQwLCAweDIwLCAweDAxLCAweDhELCAweDEwLCAweDE0LCAweDQyLAorMHhEMCwgMHg3OCwgMHg0MSwgMHgzMywgMHgwNiwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHg0OCwgMHg0MCwgMHgyMCwKKzB4MDEsIDB4ODUsIDB4MDQsIDB4MzQsIDB4NTIsIDB4NTksIDB4NDgsIDB4NDAsIDB4MjMsIDB4MDEsIDB4ODksIDB4MDQsIDB4NDQsCisweDEyLCAweDUwLCAweDQ4LCAweDQwLCAweDQzLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELAorMHhCOCwgMHg4NiwgMHg0MiwgMHgwMywgMHgwQSwgMHg0NSwgMHgzMSwgMHgzMCwgMHhFMSwgMHg0MCwgMHg5NywgMHgwNCwgMHgxRiwKKzB4MDgsIDB4N0MsIDB4MjgsIDB4RjAsIDB4QTEsIDB4QzAsIDB4ODAsIDB4MDIsIDB4MUIsIDB4MDYsIDB4N0MsIDB4MTksIDB4RjAsCisweDIxLCAweEMwLCAweDg3LCAweDAxLCAweDFCLCAweDFFLCAweDRDLCAweDI4LCAweEIxLCAweEExLCAweEMwLCAweDA2LCAweDQwLAorMHgxNywgMHgwMCwgMHg3QywgMHgyMCwgMHhGMCwgMHgwMSwgMHg4MCwgMHgwNywgMHgwMCwgMHgwQiwgMHgwQSwgMHg0QywgMHgyOCwKKzB4NzAsIDB4MDEsIDB4QzAsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjgsCisweDJGLCAweDBBLCAweEJGLCAweDA4LCAweEZDLCAweDBBLCAweEYyLCAweENCLCAweEMwLCAweDJELCAweDAwLCAweEJGLCAweDAwLAorMHg3QywgMHgyMiwgMHhGMCwgMHg4QiwgMHhDOCwgMHgyRCwgMHgwMiwgMHhCNywgMHgxNCwgMHhEQywgMHg1MiwgMHhGMCwgMHgwQiwKKzB4QzIsIDB4M0YsIDB4MDAsIDB4OUYsIDB4MDAsIDB4RkQsIDB4ODMsIDB4RjAsIDB4ODksIDB4QzAsIDB4MkYsIDB4MDIsIDB4OUIsCisweDA4LCAweDdDLCAweDAyLCAweDcwLCAweDhCLCAweEM4LCAweDJFLCAweDAyLCAweDk3LCAweDA4LCAweEZDLCAweDIyLCAweEIwLAorMHg4QiwgMHhDMCwgMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBOCwgMHgyRiwKKzB4MDUsIDB4RDMsIDB4NEMsIDB4Q0MsIDB4MDIsIDB4RjEsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDIsIDB4QjMsIDB4MDQsIDB4RkMsCisweDUyLCAweDMwLCAweENCLCAweEMwLCAweDJDLCAweDAwLCAweEIzLCAweDAwLCAweENDLCAweDIyLCAweEYwLCAweDRCLCAweEMwLAorMHgyRCwgMHgwNSwgMHg5RiwgMHgwQywgMHg1QywgMHgwMiwgMHhCMCwgMHgwQiwgMHhDMCwgMHgyQywgMHgwMCwgMHhCMywgMHgwNSwKKzB4NUMsIDB4MTYsIDB4QjAsIDB4MEYsIDB4QzAsIDB4MkMsIDB4MDAsIDB4QkYsIDB4ODAsIDB4Q0QsIDB4MDIsIDB4MzEsIDB4MEIsCisweEMwLCAweDY0LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDA3LCAweDAxLAorMHgxMSwgMHgwQywgMHg0NSwgMHg0OCwgMHhEMCwgMHgwMSwgMHg0MSwgMHgwNywgMHgwMiwgMHgxMSwgMHg1NCwgMHg3NCwgMHgwMCwKKzB4MzgsIDB4QzEsIDB4QzAsIDB4OTAsIDB4MDQsIDB4MTEsIDB4MTAsIDB4NDQsIDB4MjAsIDB4RDIsIDB4NDEsIDB4NDEsIDB4MDcsCisweDIxLCAweDFELCAweDBDLCAweDQ0LCAweDQwLCAweDQwLCAweDAxLCAweDQxLCAweDA0LCAweDAyLCAweDFCLCAweDAwLCAweDcwLAorMHg1NCwgMHgxMCwgMHgwMSwgMHhDMCwgMHg5NiwgMHgwMCwgMHgwMywgMHgxMCwgMHg0NSwgMHgyMCwgMHg1MCwgMHgwMSwgMHg0MCwKKzB4NzEsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MjEsIDB4MDUsIDB4ODEsCisweDA0LCAweDA0LCAweDMyLCAweEQwLCAweDg4LCAweDYwLCAweDIzLCAweDAwLCAweDgxLCAweDJDLCAweDM2LCAweDAyLCAweDE4LAorMHg0QywgMHg2MiwgMHgyMSwgMHg0QiwgMHg4MCwgMHgwOCwgMHgyNCwgMHgwMiwgMHhEMCwgMHhDOCwgMHg0MCwgMHgyMSwgMHgyRCwKKzB4OEQsIDB4NDQsIDB4NzQsIDB4MTIsIDB4ODAsIDB4ODgsIDB4NTAsIDB4MjAsIDB4MDAsIDB4ODUsIDB4MDIsIDB4MTQsIDB4MEEsCisweDUwLCAweDBDLCAweDQ4LCAweDIyLCAweDEyLCAweDhELCAweDA4LCAweDI0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDQ4LAorMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyOCwgMHgyNSwgMHgwMCwgMHg5MSwgMHg4MiwKKzB4NDQsIDB4NDIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDUsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4NDksCisweDQwLCAweDI1LCAweDAxLCAweEQxLCAweDAwLCAweDY0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAyLCAweDhELAorMHgwMCwgMHg2NCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyNCwgMHgwMSwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHg1MCwKKzB4MEQsIDB4NDAsIDB4MjYsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NjQsIDB4MDIsIDB4NTAsIDB4MjksIDB4NDAsIDB4NjEsIDB4MjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDI4LCAweDI1LCAweDQyLCAweDkzLCAweDAwLCAweDRELAorMHgwMiwgMHhGMCwgMHg3OSwgMHhDMCwgMHg2NywgMHg0MCwgMHg5MywgMHgxMSwgMHg3QywgMHgwMiwgMHgzNCwgMHgzOSwgMHhDMSwKKzB4MjUsIDB4MDAsIDB4OTMsIDB4MTAsIDB4NkQsIDB4NEUsIDB4RjAsIDB4NjksIDB4QzAsIDB4RTUsIDB4MDAsIDB4OUYsIDB4MDAsCisweDdDLCAweDhBLCAweEIwLCAweDA5LCAweEMwLCAweDY0LCAweDAwLCAweDk3LCAweDAwLCAweDVDLCAweDAyLCAweDcwLCAweDA5LAorMHhDMCwgMHhBNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg2RCwgMHgxQSwgMHgzMCwgMHgyOSwgMHhDMCwgMHgxNCwgMHhBMCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDAsIDB4NjUsIDB4MDAsIDB4OUYsIDB4MjAsIDB4N0MsIDB4MjYsCisweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDA0LCAweDNDLCAweDAyLCAweEYwLCAweDE5LCAweEQwLCAweDI0LAorMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgyNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg2NywgMHg4NCwgMHg5RiwgMHgwMCwgMHg1QywKKzB4MjIsIDB4NzAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDgsIDB4OUIsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzQsIDB4MDksIDB4QzAsCisweDY3LCAweDgyLCAweDlGLCAweDAwLCAweDVELCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDVCLCAweDAwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwMSwgMHgwMCwgMHgwRiwgMHgwMCwgMHg0RSwgMHg0OCwgMHhGMiwKKzB4NDEsIDB4RTQsIDB4ODcsIDB4MDEsIDB4MUYsIDB4MDgsIDB4N0MsIDB4ODAsIDB4NzAsIDB4MDAsIDB4QzAsIDB4ODQsIDB4MDAsCisweDEzLCAweDAxLCAweDdDLCAweDAwLCAweEY4LCAweDIxLCAweEM0LCAweDg3LCAweDA4LCAweDFGLCAweDAwLCAweDVDLCAweDA4LAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwMywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHg0MSwgMHhDMCwgMHg4NywKKzB4NDAsIDB4MTMsIDB4MDAsIDB4MEMsIDB4MDAsIDB4RjAsIDB4QTAsIDB4QzAsIDB4NTAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDFDLCAweDAwLCAweDVELCAweDIwLCAweEM2LCAweDFELCAweDcwLCAweDI3LAorMHg0MCwgMHg1RiwgMHgwNCwgMHg3RCwgMHgwOCwgMHg3NCwgMHgxNSwgMHhEMCwgMHgyNywgMHhDMCwgMHgxNCwgMHgwMCwgMHg3MSwKKzB4MDAsIDB4REMsIDB4MDksIDB4RjAsIDB4MzcsIDB4NjAsIDB4OUYsIDB4MDAsIDB4NUQsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MzAsCisweDQ3LCAweDQwLCAweDE3LCAweDQwLCAweDUyLCAweDAwLCAweDVDLCAweDAxLCAweEQwLCAweDI2LCAweDQwLCAweDE3LCAweDA0LAorMHg3NCwgMHg4MiwgMHg0NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHg1MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4RjIsIDB4MDQsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MEYsIDB4NTAsIDB4OEMsIDB4NDAsCisweDc3LCAweDAwLCAweENELCAweDAzLCAweDM0LCAweDAzLCAweEQwLCAweDJDLCAweDQxLCAweDM2LCAweDAwLCAweEQxLCAweDIwLAorMHgzNCwgMHg0NywgMHhEMiwgMHgwQywgMHg0MSwgMHhCMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgxNCwgMHgwMywgMHg1MCwgMHgxQywKKzB4NDAsIDB4MjMsIDB4MDgsIDB4ODgsIDB4MjAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MjAsIDB4NjAsIDB4NjMsIDB4MDAsIDB4OTAsCisweDEyLCAweDA1LCAweDAzLCAweEQwLCAweDFDLCAweDQwLCAweDUwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHg4MCwgMHhBOCwgMHgxMCwgMHhFRCwgMHgwMCwgMHhBNCwgMHgwMSwgMHg1MCwgMHgwRSwgMHg0MCwgMHgzQiwKKzB4MjAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEIsIDB4NjAsIDB4MjgsIDB4MDAsIDB4RTEsIDB4MDAsIDB4OTQsCisweDA5LCAweDEwLCAweDBFLCAweDQxLCAweDlCLCAweDA4LCAweENELCAweDA0LCAweEM0LCAweDEzLCAweDEyLCAweDA2LCAweDQwLAorMHgyQiwgMHgwMCwgMHhFOSwgMHgwMCwgMHhCNiwgMHgwMywgMHhEMCwgMHgwNiwgMHg0MCwgMHg2MywgMHgwMCwgMHhFNSwgMHgwMCwKKzB4ODQsIDB4MDIsIDB4RDAsIDB4MEUsIDB4NjAsIDB4MTQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE0LCAweDE4LCAweDQ4LCAweDEwLCAweEZGLCAweDAxLCAweEE1LCAweDA3LCAweDcwLCAweDFFLCAweDQwLCAweDVCLCAweDAwLAorMHhFRCwgMHgwMSwgMHhCQywgMHg4NywgMHhGMCwgMHgxNiwgMHhDMCwgMHg3QSwgMHg0MiwgMHhFMSwgMHgwMSwgMHhCQywgMHgwNywKKzB4RDAsIDB4MTYsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUYsIDB4MDksIDB4OUQsIDB4NUYsIDB4NzAsIDB4MTYsIDB4RTQsIDB4NzMsCisweDAwLCAweEFCLCAweDAxLCAweEJDLCAweDA3LCAweEYwLCAweDEyLCAweDgwLCAweDdCLCAweDAwLCAweDIxLCAweDAxLCAweDhDLAorMHgwNywgMHhGMCwgMHgxRSwgMHhEMCwgMHg1NCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QjgsIDB4MDUsIDB4MDAsIDB4REYsIDB4MTYsIDB4NUMsIDB4MDEsIDB4NzAsIDB4MEQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDAzLCAweEExLCAweDQyLCAweEQxLCAweDM3LCAweDIwLCAweDFGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLAorMHgwNSwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwOCwgMHgzQywgMHgxQiwgMHg3MCwgMHgwNSwgMHhDMCwgMHgzNywgMHg0MCwKKzB4RDMsIDB4MDAsIDB4NUMsIDB4ODMsIDB4RjAsIDB4MEQsIDB4ODAsIDB4MzcsIDB4MDAsIDB4NUIsIDB4MjAsIDB4N0MsIDB4MDIsCisweEYwLCAweDBDLCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDIwLAorMHg0RCwgMHgwMCwgMHhGNywgMHgzMSwgMHhDQywgMHgxMywgMHhGMCwgMHg5NywgMHhDMCwgMHg3QywgMHgwMCwgMHhGRiwgMHgwMSwKKzB4RkMsIDB4MDYsIDB4QjAsIDB4OUYsIDB4QzAsIDB4N0MsIDB4MDAsIDB4NzMsIDB4MDksIDB4RkMsIDB4MjcsIDB4RjAsIDB4MUYsCisweEMwLCAweDdGLCAweDAwLCAweEZGLCAweDgxLCAweENDLCAweDA3LCAweDcwLCAweDlGLCAweEMwLCAweDZDLCAweDQwLCAweEI3LAorMHg0MSwgMHhDQywgMHgwNywgMHhCMCwgMHgxQSwgMHhDMCwgMHg2QywgMHgyMCwgMHhCRiwgMHgyMSwgMHhDQywgMHgwNywgMHhGMCwKKzB4MUIsIDB4QzAsIDB4MEIsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDAsIDB4MEQsCisweDAwLCAweEVCLCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDhFLCAweDQwLCAweDM4LCAweDAwLCAweEVELCAweDAwLCAweEI0LAorMHgyMiwgMHhEMCwgMHhDNiwgMHg1MCwgMHgyOCwgMHgzMCwgMHg2MCwgMHgxOCwgMHg5QywgMHgyMywgMHhEMCwgMHgwRSwgMHhDMCwKKzB4MzksIDB4MDIsIDB4RUQsIDB4MDQsIDB4ODQsIDB4MTMsIDB4NDAsIDB4MDMsIDB4QzAsIDB4MkEsIDB4MDAsIDB4RTUsIDB4MDAsCisweEFDLCAweDIzLCAweDEwLCAweDBFLCAweEMyLCAweDJBLCAweDAwLCAweEU5LCAweDAwLCAweDg1LCAweDQyLCAweEQwLCAweDBFLAorMHg0MCwgMHg1NywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwKKzB4RTUsIDB4MTAsIDB4ODQsIDB4MjMsIDB4RDAsIDB4MDYsIDB4NDIsIDB4MTgsIDB4MDQsIDB4NkQsIDB4MDAsIDB4QjQsIDB4MDIsCisweEQwLCAweDA2LCAweDQyLCAweDM4LCAweDAwLCAweDYxLCAweDgwLCAweEI0LCAweDAyLCAweEQwLCAweDhBLCAweDQwLCAweEJCLAorMHgwMCwgMHhFRCwgMHgyMCwgMHhDNCwgMHg0QiwgMHg0MiwgMHgwNiwgMHg0MCwgMHgzMiwgMHgwMCwgMHhBNSwgMHgwMCwgMHhBNCwKKzB4MDMsIDB4OTAsIDB4MDIsIDB4NDAsIDB4MjgsIDB4MDAsIDB4QTUsIDB4MDgsIDB4QTQsIDB4MDMsIDB4RDAsIDB4MEEsIDB4NDAsCisweDYzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDI4LCAweDAxLCAweDAwLCAweEQxLAorMHgwMSwgMHgwNCwgMHgwMiwgMHhEMCwgMHgyOCwgMHg1MCwgMHg4MCwgMHgwNCwgMHg4RCwgMHg0NywgMHgzNCwgMHgwMiwgMHhEMCwKKzB4MDUsIDB4NTgsIDB4MzQsIDB4NDIsIDB4MDEsIDB4OTEsIDB4MTQsIDB4Q0UsIDB4RDAsIDB4MzksIDB4NDAsIDB4MDEsIDB4MjAsCisweENELCAweDAwLCAweDA0LCAweDA3LCAweDAwLCAweDAwLCAweDQwLCAweDMyLCAweDQwLCAweEM1LCAweDAwLCAweDI0LCAweDAzLAorMHgxMCwgMHgwQywgMHg0MCwgMHgyMiwgMHgwMCwgMHhDOSwgMHgwMCwgMHgyNCwgMHgwRSwgMHhEMCwgMHg4QywgMHg0MCwgMHgxQiwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4MDUsIDB4MDYsIDB4RjUsIDB4MjAsCisweDRDLCAweDAyLCAweEYwLCAweEI5LCAweEMxLCAweEE0LCAweDAwLCAweDFGLCAweDA1LCAweDc0LCAweDgyLCAweEIwLCAweDA5LAorMHhDMCwgMHg3NCwgMHgwMCwgMHg5MywgMHgwMywgMHg3QywgMHg0MiwgMHhEMCwgMHgzOSwgMHhDMSwgMHhCNywgMHgwMCwgMHhGRiwKKzB4MDAsIDB4Q0MsIDB4MDcsIDB4NzAsIDB4MDUsIDB4QzAsIDB4MjYsIDB4NDAsIDB4ODUsIDB4MDAsIDB4RUMsIDB4MDMsIDB4QjAsCisweDAxLCAweEM4LCAweDI0LCAweDAwLCAweDU3LCAweDgwLCAweDZDLCAweDBFLCAweEYwLCAweDBELCAweEMwLCAweDU3LCAweDIwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwOCwgMHgwNywgMHgyMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MjgsIDB4RjAsIDB4MjEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjIsIDB4MTksIDB4QzAsCisweDI3LCAweDA0LCAweDlGLCAweDAyLCAweDdDLCAweDAwLCAweEYwLCAweDQxLCAweEMwLCAweDE3LCAweDAwLCAweENGLCAweDAwLAorMHg3RCwgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHgyMywgMHg0MCwgMHg5RSwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4NUMsIDB4MDAsIDB4MUMsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4MEMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDBCLCAweDAwLCAweEZCLCAweDAwLCAweENDLCAweDQyLAorMHhGMCwgMHgwOSwgMHhDMCwgMHgyQiwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwMSwgMHhDMCwgMHgzNCwKKzB4MDAsIDB4QjMsIDB4MDAsIDB4QjQsIDB4MDAsIDB4MzAsIDB4MDMsIDB4QzAsIDB4M0MsIDB4MDAsIDB4REYsIDB4MDAsIDB4Q0MsCisweDAzLCAweEYwLCAweDA2LCAweEMwLCAweEVDLCAweDAwLCAweDkzLCAweDA4LCAweDBDLCAweDAzLCAweDM0LCAweDUzLCAweDQwLAorMHgzOCwgMHgwMCwgMHhFMywgMHhDMCwgMHhDQywgMHg1NiwgMHgzMSwgMHgwRiwgMHhDMCwgMHgwNywgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4QzYsIDB4MDEsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MTQsIDB4RDAsCisweDM5LCAweDQwLCAweDQ3LCAweDAxLCAweDkxLCAweDAxLCAweDc0LCAweDAyLCAweEM4LCAweDExLCAweDUwLCAweDM0LCAweDAwLAorMHgxRiwgMHg4MywgMHg3NCwgMHgwQywgMHgxMiwgMHgzMSwgMHg0NCwgMHhDNCwgMHgwQywgMHhERiwgMHgwMCwgMHg1NCwgMHgwMywKKzB4RjAsIDB4MjUsIDB4NDQsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NDUsIDB4MDMsIDB4QjAsIDB4MDQsIDB4NDAsIDB4MzUsCisweDAwLCAweEQzLCAweDAzLCAweDU0LCAweDAyLCAweDEwLCAweDBELCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHg0NiwgMHg0MCwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwNCwgMHhEMCwgMHgxMSwKKzB4NDAsIDB4NjcsIDB4MDAsIDB4MTEsIDB4MTEsIDB4NzYsIDB4MDYsIDB4RDEsIDB4MTksIDB4NTQsIDB4MzQsIDB4MDAsIDB4OTEsCisweDAxLCAweDc2LCAweDQ2LCAweDEwLCAweDM5LCAweDYwLCAweDY0LCAweDEwLCAweERELCAweDQwLCAweDQ0LCAweDAzLCAweEQwLAorMHgyNSwgMHg0MCwgMHgyNCwgMHgxOCwgMHg5MSwgMHg0MCwgMHg1NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHgyNSwgMHg0MCwKKzB4RDEsIDB4MEEsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDAwLCAweDAwLCAweEMxLCAweDQwLCAweDA0LCAweDAwLCAweEQwLCAweDAwLCAweDQyLAorMHgyMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwMCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgwMCwKKzB4MzQsIDB4MDIsIDB4MTAsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MDAsCisweDUwLCAweDIwLCAweDIwLCAweDgxLCAweDAwLCAweDE0LCAweDAzLCAweDkwLCAweDBDLCAweDQ4LCAweDIxLCAweDAwLCAweEM5LAorMHg4MCwgMHgxNCwgMHgwMiwgMHgxMCwgMHgwQywgMHg0QywgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTgsIDB4MDYsIDB4MDAsIDB4RTMsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RDAsIDB4MDEsIDB4QzIsIDB4MjcsCisweDAwLCAweDEzLCAweDAwLCAweDdFLCAweDAyLCAweEMwLCAweDAzLCAweEMwLCAweDNDLCAweDQwLCAweDkxLCAweDAwLCAweDdDLAorMHgwMCwgMHgzOCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHhGQywgMHgwMCwgMHhDQywgMHg4MywgMHhEMCwgMHgwNSwgMHhDMCwKKzB4MjQsIDB4NDAsIDB4OTMsIDB4NDAsIDB4NUMsIDB4MDMsIDB4MTAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4QzMsIDB4ODAsCisweDRDLCAweDAyLCAweDM0LCAweDA5LCAweEMwLCAweDA3LCAweDgwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNSwgMHhCOCwgMHgwRCwgMHgwMCwgMHhGNywgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyRiwgMHg0MCwKKzB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDMsIDB4QzAsIDB4M0YsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsCisweEYwLCAweDAzLCAweEM0LCAweDBGLCAweDAwLCAweEZGLCAweDAwLCAweEI4LCAweDAzLCAweEYwLCAweDAzLCAweEM0LCAweDJGLAorMHg0MCwgMHhCRiwgMHgwMCwgMHhFQywgMHgwMywgMHg3MCwgMHgwRiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGNywgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MTcsIDB4RTAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweDgwLCAweDdGLCAweDAwLCAweEJGLCAweDIwLCAweENDLCAweDEzLCAweDcwLCAweDFGLCAweEMwLCAweDdGLCAweDAyLCAweEYzLAorMHgwMSwgMHhDQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwgMHg3QiwgMHgwMCwgMHhGRiwgMHgwMSwgMHg4QywgMHgwNywgMHgzMCwKKzB4MUYsIDB4QzAsIDB4N0QsIDB4MDAsIDB4RjMsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsCisweEYzLCAweDAzLCAweEVDLCAweDA3LCAweEIwLCAweDE2LCAweEMwLCAweDVDLCAweDAwLCAweDJCLCAweDAxLCAweEVDLCAweDA1LAorMHgzMCwgMHgwQiwgMHhDMCwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwKKzB4MzcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4RUMsIDB4MEIsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDEsIDB4MTEsIDB4MDAsCisweDQ0LCAweDAwLCAweDE0LCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDFELCAweDIwLCAweDQwLCAweDAwLCAweDEwLCAweDAxLAorMHg0MCwgMHgwNCwgMHgwMCwgMHgxMywgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxMSwKKzB4ODQsIDB4NEMsIDB4MDQsIDB4NTIsIDB4MUQsIDB4NDAsIDB4NTUsIDB4MDAsIDB4MTEsIDB4MDEsIDB4NTQsIDB4MDMsIDB4QjQsCisweDAxLCAweDQwLCAweDBELCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLAorMHgwMCwgMHg4RCwgMHgwMCwgMHgwNCwgMHgyMywgMHhEMCwgMHgwQywgMHg2MCwgMHgzMywgMHgwMSwgMHhDMSwgMHgwMCwgMHg0NCwKKzB4ODMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4REQsIDB4MDAsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDgsCisweDM0LCAweDgwLCAweEMxLCAweDAwLCAweDQ0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDM1LCAweDAwLCAweEMxLCAweDA0LAorMHg2NCwgMHgwMywgMHgxMCwgMHgwNCwgMHg0NCwgMHgxNiwgMHg4MCwgMHg1OSwgMHgwMCwgMHg2NiwgMHg4MywgMHg1QywgMHgwMCwKKzB4NDQsIDB4NEMsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4MDAsCisweDlELCAweDIxLCAweDQ0LCAweDAzLCAweDkxLCAweDAxLCAweDYwLCAweDAzLCAweDAwLCAweDExLCAweDAwLCAweDYwLCAweDAwLAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwKKzB4ODAsIDB4MTksIDB4MjAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDYsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsCisweDAwLCAweDUwLCAweDFELCAweDRDLCAweDE3LCAweDA0LCAweDUxLCAweDEwLCAweDU0LCAweDBCLCAweERDLCAweDExLCAweDQwLAorMHgwRCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBOCwgMHgzNywgMHgwMCwgMHgxRiwKKzB4MzMsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MTAsIDB4RDMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsCisweDBELCAweEMwLCAweDM3LCAweDAwLCAweERELCAweDAwLCAweDRELCAweDAzLCAweDM0LCAweDBDLCAweEMwLCAweDMwLCAweDAwLAorMHhEMywgMHgyMCwgMHgwQywgMHgwMywgMHgxMCwgMHgwRCwgMHhDMCwgMHgzMSwgMHgwMCwgMHhEMywgMHgwMCwgMHgyQywgMHgwMywKKzB4QjAsIDB4MTgsIDB4QzAsIDB4OTIsIDB4MDAsIDB4OUIsIDB4MDEsIDB4MkMsIDB4MEIsIDB4NzAsIDB4NTksIDB4QzIsIDB4MDAsCisweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDNELCAweDEwLCAweEFGLCAweDAwLAorMHhGQywgMHgwMywgMHg3MiwgMHgwMywgMHhDQiwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhEQywgMHgwMCwgMHhGMCwgMHgwMywKKzB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzgsIDB4MEUsIDB4MDQsIDB4MzcsCisweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDA0LCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLAorMHgwRiwgMHhDMCwgMHg4RCwgMHgxMCwgMHhCRiwgMHgwOCwgMHhGQywgMHgyMywgMHhCMCwgMHgwOSwgMHhDMCwgMHgzRiwgMHgyMCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDYsIDB4MUYsIDB4MDAsIDB4N0MsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDAwLCAweERGLCAweDAxLCAweDdDLCAweDQzLCAweEYwLCAweDBELCAweEMwLAorMHgzNCwgMHgxQiwgMHhEMywgMHgwMCwgMHg0QywgMHg0NywgMHgzMCwgMHgxRCwgMHhDMCwgMHg3NywgMHgwMCwgMHhENywgMHgwMSwKKzB4N0MsIDB4NDcsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDIsIDB4REYsIDB4MDAsIDB4NEQsIDB4NDMsIDB4MzAsIDB4MEQsCisweEMwLCAweDM1LCAweDAwLCAweDlGLCAweDA2LCAweDRDLCAweDBCLCAweDMwLCAweDAxLCAweEMwLCAweDI5LCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHg3NCwgMHgxMCwgMHg5RCwgMHgwOCwgMHhGNCwgMHgwMywKKzB4RDEsIDB4MjEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MDMsIDB4MUMsIDB4MDAsIDB4RDAsIDB4ODEsIDB4NDAsIDB4QzQsCisweDAwLCAweDAxLCAweDAwLCAweDQ0LCAweDBDLCAweDEyLCAweDMxLCAweDQwLCAweDQ3LCAweDAwLCAweDE1LCAweDAzLCAweDc0LAorMHgwNCwgMHhEMCwgMHgyMSwgMHg0MCwgMHg0NCwgMHgwMCwgMHgxRCwgMHgwQiwgMHg0NiwgMHg0MCwgMHhCMiwgMHhBRCwgMHg0OCwKKzB4QzQsIDB4MjIsIDB4OEIsIDB4MDcsIDB4NkMsIDB4MEIsIDB4QTAsIDB4OTEsIDB4QzAsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweEYyLCAweDAwLCAweDBELCAweDA5LCAweDc0LCAweDE3LCAweEQwLAorMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwgMHhERCwgMHgwNCwgMHgzNCwgMHgwQiwgMHhEMCwgMHgyQywgMHg0MCwgMHhGMCwgMHgwMCwKKzB4QzEsIDB4MEMsIDB4NTQsIDB4MDMsIDB4MTQsIDB4NEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4RDksIDB4MDQsIDB4MzQsIDB4MEIsCisweEQwLCAweDRDLCAweDQwLCAweEIwLCAweDIwLCAweEQ5LCAweDAwLCAweDA0LCAweDBCLCAweDEwLCAweDI0LCAweDQwLCAweDUzLAorMHgwMCwgMHhDMSwgMHgwMSwgMHgyNCwgMHgyMiwgMHg5MCwgMHg5OSwgMHg0MCwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NzgsIDB4MDAsIDB4NkQsIDB4MDEsIDB4QjQsIDB4NDcsIDB4RDgsIDB4MTMsCisweDQwLCAweDRBLCAweDAwLCAweDJELCAweDAxLCAweEI0LCAweDA0LCAweEQwLCAweDEyLCAweDQwLCAweDRDLCAweDAwLCAweDIxLAorMHgwMSwgMHhDNCwgMHgwNCwgMHgxMCwgMHgxMiwgMHg0MCwgMHg0RiwgMHgwMCwgMHgyRCwgMHgwOCwgMHhCNCwgMHgwMCwgMHhEMCwKKzB4MTIsIDB4NDAsIDB4NDgsIDB4MDAsIDB4MkQsIDB4MzEsIDB4ODQsIDB4MDQsIDB4OTAsIDB4OUYsIDB4NDQsIDB4NUUsIDB4MDgsCisweDc5LCAweDIxLCAweEE0LCAweDBGLCAweDkwLCAweDEyLCAweDQ4LCAweDNDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHhDRiwgMHgwMCwgMHgzQywgMHgyMywgMHhGMCwgMHgwQywgMHhDMCwKKzB4MzIsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4M0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzAsIDB4MDAsIDB4RDMsIDB4MDAsCisweDFDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDM3LCAweDgwLCAweEM5LCAweDAwLCAweDNDLCAweDAzLCAweEQwLCAweDBELAorMHg0MCwgMHgzMCwgMHgwMCwgMHhERCwgMHgwMCwgMHgwNCwgMHgyMywgMHgzMCwgMHgwNCwgMHhDMCwgMHgxMywgMHgxNCwgMHhDMywKKzB4MDAsIDB4NEMsIDB4MjMsIDB4QjAsIDB4ODgsIDB4QzYsIDB4NEIsIDB4NjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAyLCAweEI4LCAweDNELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDgzLCAweEYwLCAweDAyLCAweEMwLCAweDBELAorMHgwMCwgMHgzRiwgMHgwMCwgMHhEQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMiwgMHgzRiwgMHgwOCwgMHg3QywKKzB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MzYsIDB4MDgsIDB4RkMsIDB4MTAsIDB4RjAsIDB4MDEsIDB4ODAsCisweDBGLCAweDAwLCAweDNFLCAweDAwLCAweEJDLCAweDg0LCAweEY5LCAweDBGLCAweEM4LCAweDE5LCAweDAwLCAweDdGLCAweDAwLAorMHhGQywgMHgyMywgMHhGMCwgMHgwMywgMHhDOCwgMHgwQiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4QTAsIDB4MzcsIDB4MTAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDA3LCAweDM0LCAweDFELCAweEQwLCAweDMwLCAweDAwLCAweEQzLCAweDAxLCAweDRELCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHg3MCwgMHgxRCwgMHhEMCwgMHgzNCwKKzB4MDAsIDB4RDcsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MUMsIDB4RDAsIDB4NTQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NEMsCisweDAzLCAweEQxLCAweDA5LCAweEMwLCAweDQzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHg4OCwgMHgzOSwgMHgwMCwgMHg2RCwgMHgwMCwgMHhCNCwgMHgyQiwgMHhEMCwgMHgwMiwgMHg0MCwgMHgwQiwgMHgwMCwgMHgyRCwKKzB4MDAsIDB4RjQsIDB4MDAsIDB4MTAsIDB4MDMsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MzEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4RDAsCisweDAyLCAweDQwLCAweDBCLCAweDAwLCAweDJELCAweDAwLCAweEI0LCAweDAwLCAweEQwLCAweDAzLCAweDQwLCAweDA4LCAweDEwLAorMHgyRCwgMHgwMCwgMHhBNCwgMHgwMCwgMHhEMCwgMHgwRSwgMHg0MCwgMHgxOCwgMHg0MCwgMHhFMSwgMHgwMCwgMHg5NCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsCisweDc5LCAweDAwLCAweEVELCAweDAzLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLAorMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg3QywgMHgwMCwgMHhFMSwgMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwgMHgxRSwKKzB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4MDAsIDB4RUQsCisweDAxLCAweEE1LCAweDA3LCAweEQwLCAweDFGLCAweDQ5LCAweDU4LCAweDgwLCAweEY1LCAweDAxLCAweDg0LCAweDA3LCAweEQwLAorMHgxRSwgMHg0MiwgMHgxMywgMHgwOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHgzMywKKzB4MDAsIDB4REQsIDB4MDEsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MzQsCisweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDA0LCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweEQwLCAweDAwLCAweDQ0LAorMHgwNywgMHgwMCwgMHgwRCwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwRCwgMHgwMCwKKzB4MjQsIDB4MDAsIDB4RDAsIDB4NUMsIDB4NDQsIDB4RDAsIDB4MDEsIDB4QzUsIDB4MTMsIDB4MTQsIDB4NEYsIDB4RDgsIDB4NUQsCisweDQwLCAweDVCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDE1LCAweDAwLAorMHg3RiwgMHgwMiwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMSwKKzB4MzAsIDB4MDUsIDB4QzAsIDB4MTQsIDB4NTAsIDB4NTMsIDB4MDAsIDB4NEMsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsCisweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEMwLCAweDE0LCAweDAwLCAweDVGLCAweDAwLCAweDQ0LAorMHgwMSwgMHhEMCwgMHgyNywgMHhDMCwgMHhEQywgMHgwMCwgMHg2NywgMHgwNywgMHg4QywgMHgwMSwgMHhGMCwgMHg1NywgMHg0NCwKKzB4NUYsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MUYsCisweDEyLCAweDdDLCAweDAwLCAweEYyLCAweDIzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAyLCAweEZDLCAweDAwLCAweEYwLAorMHgwMywgMHhDOCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgyMywgMHhDMCwgMHgwRiwgMHgwMCwKKzB4M0YsIDB4MDIsIDB4RkMsIDB4ODAsIDB4RjMsIDB4MjMsIDB4QzAsIDB4OEYsIDB4MDAsIDB4M0YsIDB4MjIsIDB4REMsIDB4MDAsCisweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAyLCAweDFCLCAweDAwLCAweDdDLCAweDIwLCAweEYwLCAweDIxLCAweEMwLCAweDRCLAorMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwNSwKKzB4NEMsIDB4MDYsIDB4RjAsIDB4OTksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OTMsIDB4MDUsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDY3LCAweDQwLCAweDkzLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDM5LCAweEMwLCAweDY3LCAweDQwLCAweDkzLAorMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMywgMHg0QywgMHgyMiwgMHhGMCwKKzB4NDksIDB4RTAsIDB4QTcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NUUsIDB4MEEsIDB4MzAsIDB4MDksIDB4QzAsIDB4NDAsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweEE2LCAweDA0LCAweDlELCAweDEyLCAweDQ0LAorMHgwMiwgMHhEMCwgMHgyOSwgMHg0MSwgMHgyMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwRSwgMHhEMCwgMHgxOSwgMHg0MSwKKzB4MjcsIDB4MDAsIDB4OTEsIDB4MDMsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MTksIDB4NDAsIDB4NjcsIDB4MDAsIDB4OTEsIDB4MDIsCisweDc0LCAweDAyLCAweEQ4LCAweDM5LCAweDQwLCAweDI3LCAweDAxLCAweDlELCAweDAwLCAweDQ1LCAweDg2LCAweEQwLCAweDM5LAorMHg0MCwgMHg2NywgMHgxNCwgMHg5NywgMHgwQSwgMHg0NCwgMHgwQSwgMHg1NiwgMHg0OSwgMHg0MCwgMHgwNCwgMHgwOCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDIsIDB4OUQsIDB4MDAsIDB4NjQsIDB4MkEsCisweEQwLCAweDA5LCAweDQwLCAweDJDLCAweDA4LCAweEIxLCAweDAwLCAweEY0LCAweDBFLCAweEQwLCAweDFCLCAweDQwLCAweEFGLAorMHgwMiwgMHhCMSwgMHgwMywgMHhGNCwgMHgwMiwgMHhEMCwgMHgwQiwgMHg0MCwgMHgyRiwgMHgwMiwgMHhCMSwgMHgwMiwgMHhGNCwKKzB4MEEsIDB4RDEsIDB4MUIsIDB4NDEsIDB4MkYsIDB4MDEsIDB4QTksIDB4MDAsIDB4QzYsIDB4MDIsIDB4OTEsIDB4MDksIDB4NDAsCisweDI1LCAweDAwLCAweDlELCAweDQyLCAweDU0LCAweDAyLCAweDE1LCAweDQ5LCAweDQwLCAweDYwLCAweDAwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgxNCwgMHgyNSwgMHgxMiwgMHhEMCwKKzB4MEEsIDB4NDAsIDB4MkMsIDB4MDAsIDB4RTEsIDB4ODAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEEsIDB4NEEsIDB4MkIsIDB4MDAsCisweEExLCAweDAwLCAweEI0LCAweDA2LCAweEQwLCAweDBFLCAweDQwLCAweDZCLCAweDAwLCAweEExLCAweDAwLCAweEI0LCAweDAyLAorMHhEMiwgMHgwQSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhFRCwgMHgwOCwgMHg4NCwgMHgwMiwgMHhEMiwgMHgwQywgMHg0QSwgMHgyMywKKzB4MDAsIDB4OTUsIDB4MDAsIDB4NjQsIDB4MDYsIDB4NTgsIDB4NDgsIDB4NDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDFGLCAweDA0LCAweDZDLCAweDI4LCAweEYwLCAweEExLAorMHhDOCwgMHg4NCwgMHg0MiwgMHgxMywgMHgwQSwgMHg3QywgMHgyOCwgMHhGMCwgMHhBMSwgMHhDMCwgMHg4NywgMHgwMiwgMHgxMywKKzB4MEEsIDB4N0MsIDB4MjgsIDB4RjAsIDB4QTEsIDB4QzAsIDB4ODcsIDB4MDIsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MjgsIDB4RDAsCisweEExLCAweEMwLCAweDg3LCAweDAyLCAweDBGLCAweDgyLCAweENDLCAweDAxLCAweEY4LCAweDAxLCAweENBLCAweDA1LCAweDAwLAorMHgxRiwgMHgwMCwgMHg1QywgMHgyOCwgMHgzMCwgMHhBMSwgMHhDMCwgMHg3NCwgMHhFMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4MjcsIDB4MDUsIDB4QkYsIDB4MTQsIDB4NUMsIDB4MjIsIDB4RjAsIDB4MDksIDB4RDAsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEM4LCAweDI3LCAweDIwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgyMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDQsIDB4N0MsIDB4MDIsIDB4RTAsIDB4MEIsIDB4QzAsIDB4MkIsIDB4MDAsIDB4QTcsCisweDQwLCAweERDLCAweDAyLCAweEYwLCAweDhCLCAweEQ0LCAweDc3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHg4MCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgxNCwgMHhGQywgMHgzMiwgMHgzMCwgMHgwQSwgMHhDMCwgMHgyNCwKKzB4MDAsIDB4QUYsIDB4MDgsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDIsIDB4QjMsIDB4MDAsIDB4RkMsCisweDAyLCAweEYwLCAweDhCLCAweEM4LCAweDJGLCAweDA4LCAweEJGLCAweDAwLCAweEZDLCAweDIyLCAweDcwLCAweDBCLCAweEMwLAorMHgyRiwgMHgwMCwgMHhCMywgMHgyOCwgMHhDRSwgMHgwMiwgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRSwgMHgwMCwgMHhCMywgMHgwMCwKKzB4RkMsIDB4MDIsIDB4QzEsIDB4MEIsIDB4QzIsIDB4NzQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFDLCAweDAwLCAweDA3LCAweDA1LCAweDFELCAweDA0LCAweDc0LCAweDMwLCAweDEwLCAweDAxLCAweDQxLCAweDA0LCAweDA0LAorMHgxRCwgMHgyMCwgMHg3NCwgMHg1MCwgMHhEMCwgMHg0MSwgMHg0QywgMHgwNywgMHgwMSwgMHgxMSwgMHgxMCwgMHg3NCwgMHg0MCwKKzB4RDAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDUsIDB4MUQsIDB4MDQsIDB4NzQsIDB4MTAsIDB4RDAsIDB4MDEsIDB4NDEsIDB4MDcsCisweDA0LCAweDAxLCAweDAwLCAweDQ0LCAweDAwLCAweEQwLCAweDAxLCAweEMwLCAweDE2LCAweDAwLCAweDFCLCAweDAwLCAweDc0LAorMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg2MCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QTIsIDB4MjMsIDB4MjEsIDB4OEQsIDB4MTQsIDB4MzQsIDB4MTIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4OEQsCisweDAwLCAweDM0LCAweDEyLCAweEQwLCAweDQ4LCAweDQxLCAweDIzLCAweDAxLCAweDgxLCAweDA0LCAweDM0LCAweDAyLCAweEQwLAorMHgwOCwgMHg0MCwgMHgyMywgMHgwMSwgMHg4RCwgMHgxNCwgMHgzNCwgMHgxMiwgMHg1MCwgMHg0OCwgMHg0MCwgMHgyNywgMHgwMCwKKzB4ODUsIDB4MDAsIDB4MDUsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDQsIDB4MjQsIDB4MDAsIDB4ODUsIDB4NDAsIDB4MzQsIDB4ODIsCisweEQxLCAweDA4LCAweDQwLCAweDQ4LCAweDgwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LAorMHgyNSwgMHgwMCwgMHg5RCwgMHgwMiwgMHg3NCwgMHgwMiwgMHgxMiwgMHgwOSwgMHg1MCwgMHgyNCwgMHgyMCwgMHg5RCwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4NDAsIDB4OTksIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDIwLCAweDkxLAorMHgwMCwgMHg2NCwgMHg4MiwgMHhEMSwgMHgxOSwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwQSwgMHhEOCwKKzB4MDksIDB4NDAsIDB4NjAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODgsIDB4MjcsCisweDAwLCAweDlELCAweDAxLCAweDdDLCAweDAyLCAweDM0LCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDdDLAorMHgwMiwgMHhGMSwgMHgwOSwgMHhDMCwgMHgyNywgMHgyMCwgMHg5MywgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDAsCisweDRDLCAweDAyLCAweEYwLCAweDA5LCAweDgwLCAweDIwLCAweDAwLCAweDk3LCAweDAwLCAweDdDLCAweDA2LCAweEYwLCAweDQ5LAorMHhDQSwgMHgxNCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHgyNSwgMHgwMCwKKzB4OUYsIDB4MDgsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA5LCAweEM4LCAweDI3LCAweDAwLCAweDk3LCAweDAwLCAweDdDLCAweDAyLCAweEYxLCAweDA5LCAweEMwLCAweDI3LAorMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDNiwgMHgyNywgMHg1MCwgMHg5RiwgMHg4MCwgMHg1QywKKzB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MjAsIDB4OUIsIDB4MDAsIDB4N0UsIDB4MTIsIDB4RjAsIDB4NDksIDB4RDEsCisweDVCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDFGLAorMHgwNCwgMHgzQywgMHg0MCwgMHgzMCwgMHgwMSwgMHhEMCwgMHgwNiwgMHgwMCwgMHgxMywgMHgwMCwgMHg0RCwgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MTEsIDB4QzAsIDB4MDYsIDB4MDAsCisweDFGLCAweDAxLCAweDdDLCAweDIwLCAweEYwLCAweDkxLCAweEMwLCAweDA3LCAweDA0LCAweDEzLCAweDgwLCAweDdDLCAweDQwLAorMHhGMCwgMHgxMSwgMHhDNCwgMHg4NCwgMHgwNCwgMHgxRiwgMHgxMCwgMHg1QywgMHg0OCwgMHhGMCwgMHgyMSwgMHhDMCwgMHg1MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4OUMsIDB4MDAsIDB4N0QsIDB4MTIsCisweEY0LCAweDAxLCAweDEyLCAweDE3LCAweEMwLCAweDE0LCAweDIwLCAweDcxLCAweDBBLCAweEVDLCAweDAxLCAweEQwLCAweDg3LAorMHg0OCwgMHg5RiwgMHg4MCwgMHg3RCwgMHgwMCwgMHhGNCwgMHg2RCwgMHhEMCwgMHgwNywgMHhDMCwgMHgxRSwgMHgwMCwgMHg3RCwKKzB4MDAsIDB4RjQsIDB4MjksIDB4NzAsIDB4MDcsIDB4QzAsIDB4OTksIDB4MDAsIDB4NzEsIDB4ODEsIDB4Q0MsIDB4MEQsIDB4RDEsCisweDE2LCAweDQ0LCAweDFDLCAweDIwLCAweDdELCAweDAyLCAweEM0LCAweDE1LCAweEMwLCAweDI3LCAweDQwLCAweDQzLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHhGMiwgMHgwMywgMHhDRCwgMHgwMSwgMHgzNCwKKzB4MDMsIDB4MTAsIDB4OUQsIDB4NDEsIDB4MzAsIDB4MDAsIDB4QzEsIDB4MDIsIDB4MDQsIDB4MTMsIDB4RDAsIDB4MkMsIDB4NDgsCisweEI3LCAweDAxLCAweENELCAweDEwLCAweDM0LCAweDBCLCAweEQwLCAweDBDLCAweDQyLCAweDMwLCAweDAxLCAweENELCAweDAwLAorMHgzNCwgMHgwNywgMHhEMCwgMHgxQywgMHg0MCwgMHgzMSwgMHgwMCwgMHhEMSwgMHgwOCwgMHgxNCwgMHgwOSwgMHhEOCwgMHg5QywKKzB4NDAsIDB4MzEsIDB4MTAsIDB4MEQsIDB4MDEsIDB4MTQsIDB4MEYsIDB4RDAsIDB4OEQsIDB4NDAsIDB4NDMsIDB4MDAsIDB4MEEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDgwLCAweDM4LCAweDAwLCAweEVELCAweDAwLCAweDM0LCAweDAxLAorMHgxMCwgMHgwRiwgMHg0MCwgMHg3OCwgMHg0MSwgMHhGMSwgMHgwMSwgMHg4NCwgMHg0MywgMHhEMCwgMHgwRSwgMHg0MSwgMHgzQiwKKzB4MTAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MUUsIDB4NjAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MTAsIDB4QjQsCisweDAxLCAweDUwLCAweDBFLCAweDQyLCAweDM5LCAweDQwLCAweDIxLCAweDAwLCAweEE0LCAweDA4LCAweEQwLCAweDBFLCAweDQwLAorMHgyOSwgMHgwMCwgMHg3RCwgMHgxMSwgMHg4NCwgMHgwMSwgMHhEMCwgMHgwNiwgMHg0MCwgMHgxMywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDAsIDB4NTgsIDB4MDgsIDB4RUYsIDB4MDEsIDB4QkMsIDB4MDcsIDB4MzAsCisweDFFLCAweEMwLCAweDdDLCAweDA1LCAweEUzLCAweDAxLCAweDg0LCAweDA3LCAweEYwLCAweDE2LCAweEMwLCAweDdCLCAweDAwLAorMHhFRCwgMHgwMSwgMHhCNCwgMHgwNSwgMHhGMCwgMHgxRiwgMHg0MCwgMHg1OCwgMHgwMCwgMHhFRiwgMHgwMSwgMHhCQywgMHgwNywKKzB4RjAsIDB4MUUsIDB4QzAsIDB4N0QsIDB4MDAsIDB4RTMsIDB4MDEsIDB4OUMsIDB4MDUsIDB4RjAsIDB4MEUsIDB4QzAsIDB4NjksCisweDEwLCAweDJGLCAweDAxLCAweDlDLCAweDA1LCAweEYyLCAweDFFLCAweEM0LCAweDUzLCAweDYwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCQSwgMHgxNSwgMHgwMCwgMHhERiwgMHgyMCwgMHg3QywgMHgwMiwgMHhGNCwgMHgwRCwKKzB4QzgsIDB4MzUsIDB4MjMsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA5LCAweEQ4LCAweDI3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLAorMHgwRCwgMHhDNCwgMHgyNSwgMHg4MCwgMHhERiwgMHgwMCwgMHg1QywgMHgwMCwgMHhGMiwgMHgwRCwgMHhDMCwgMHgyNiwgMHgwMCwKKzB4OEYsIDB4MjAsIDB4N0MsIDB4MDAsIDB4RjIsIDB4MDEsIDB4QzAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEEwLCAweDdELCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDg3LCAweEY5LCAweDBGLCAweEMwLAorMHg3RCwgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgyNSwgMHhGMCwgMHgxRSwgMHhDMCwgMHg3QywgMHgwMCwgMHhGRiwgMHgwOSwKKzB4REMsIDB4MDcsIDB4RjAsIDB4MTcsIDB4QzAsIDB4N0YsIDB4MEEsIDB4N0YsIDB4ODEsIDB4Q0MsIDB4ODcsIDB4RjAsIDB4MTcsCisweEMwLCAweDVGLCAweDIyLCAweEYzLCAweDAxLCAweENDLCAweDI1LCAweDMwLCAweDFBLCAweEMwLCAweDc4LCAweDAyLCAweDIzLAorMHgwMSwgMHhDQywgMHgwNiwgMHhGMCwgMHg5QiwgMHhDMCwgMHgxQiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4ODgsIDB4MzksIDB4MjIsIDB4NkQsIDB4MDAsIDB4QjQsIDB4MTksIDB4RDgsIDB4NDYsIDB4NDAsIDB4M0IsCisweDA1LCAweEVELCAweDA0LCAweEI0LCAweDgzLCAweEQwLCAweDhFLCAweDQwLCAweDM4LCAweDAwLCAweDZELCAweDAwLCAweEI0LAorMHg4OCwgMHhEMCwgMHgyRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhBRCwgMHgxOCwgMHg4NSwgMHgwQSwgMHhEMCwgMHhBRSwgMHg0MCwKKzB4MUYsIDB4MDMsIDB4MjEsIDB4ODQsIDB4QzQsIDB4MDEsIDB4QjAsIDB4NEEsIDB4NDAsIDB4QTgsIDB4MDIsIDB4MkYsIDB4MDAsCisweDk0LCAweDAyLCAweEQwLCAweDhBLCAweDQwLCAweDU3LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHg4MSwgMHhEMCwgMHg4QSwgMHg0MSwgMHgzOSwgMHgyMCwKKzB4NkQsIDB4OTAsIDB4QjQsIDB4MDgsIDB4RDEsIDB4MjMsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MjAsIDB4OTYsIDB4MjMsCisweEQwLCAweDBFLCAweDQwLCAweDFCLCAweDEwLCAweEZELCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDIyLCAweDQwLCAweDNCLAorMHg2MCwgMHhCMSwgMHgwMCwgMHhENiwgMHgwMSwgMHgxMSwgMHgwRSwgMHg0OCwgMHgyOCwgMHgwMCwgMHgyNSwgMHgwQSwgMHg4NCwKKzB4NDAsIDB4RDAsIDB4OEEsIDB4NDEsIDB4NjMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDI4LCAweDA1LCAweDAwLCAweDhELCAweDAzLCAweDc0LCAweDAwLCAweEQwLCAweDMwLCAweDQ0LCAweEYzLCAweDAwLCAweDFELAorMHgwMywgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHhDMCwgMHgwMCwgMHgwRCwgMHgwMiwgMHg3NCwgMHgwQywgMHhEMCwKKzB4MzksIDB4MDAsIDB4RTcsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NDQsIDB4MEUsIDB4RDAsIDB4MDgsIDB4NDAsIDB4RTMsIDB4MDAsCisweDgxLCAweDAyLCAweDE0LCAweDA4LCAweDkwLCAweDFDLCAweDQ0LCAweDIwLCAweDA0LCAweDBELCAweDAwLCAweDU2LCAweDBDLAorMHhEMCwgMHgyOCwgMHg0MSwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgyOCwKKzB4MjUsIDB4MDAsIDB4MUYsIDB4MDYsIDB4N0UsIDB4MDIsIDB4RDgsIDB4OTEsIDB4QzgsIDB4QjksIDB4MDAsIDB4MUYsIDB4MDEsCisweDdDLCAweDE2LCAweEYwLCAweDU5LCAweEMwLCAweDg0LCAweDA0LCAweDFELCAweDA3LCAweDVDLCAweDA2LCAweEYwLCAweDE5LAorMHhDMCwgMHgyNywgMHgwNCwgMHg5RiwgMHgwMSwgMHg0QywgMHgwNiwgMHhGMCwgMHg1OCwgMHhDMCwgMHg2NywgMHgwMiwgMHhDMywKKzB4MDAsIDB4MUMsIDB4NEQsIDB4MTAsIDB4OEMsIDB4RDAsIDB4RTAsIDB4MDEsIDB4MTcsIDB4MDAsIDB4NEMsIDB4MEUsIDB4RjAsCisweDAxLCAweEMwLCAweDU3LCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI3LAorMHgwMCwgMHg5RiwgMHgwMiwgMHg3QywgMHg4MiwgMHhGMCwgMHgyMSwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgxMCwgMHg3QywKKzB4MEEsIDB4RjAsIDB4MDksIDB4QzAsIDB4MDcsIDB4MDgsIDB4MUYsIDB4MDIsIDB4N0MsIDB4NkEsIDB4RjAsIDB4ODksIDB4QzEsCisweEE3LCAweDA0LCAweDlGLCAweDEwLCAweDdDLCAweDYwLCAweEYwLCAweDA5LCAweEM4LCAweDg3LCAweDAyLCAweDFGLCAweDIzLAorMHg2QywgMHgwMCwgMHhGMCwgMHg4RCwgMHhDMiwgMHgyNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MzcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4MkQsIDB4MDAsCisweDMzLCAweDEwLCAweEZDLCAweDAyLCAweDMwLCAweDBCLCAweEUyLCAweDNGLCAweDA0LCAweEIzLCAweDAwLCAweENDLCAweDAwLAorMHgzOCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgwNCwgMHhCRiwgMHgxMCwgMHhGQywgMHgwMiwgMHgzMCwgMHgwMywgMHhDMiwgMHgyQywKKzB4ODAsIDB4MzMsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4MzQsIDB4MDMsIDB4QzAsIDB4MkMsIDB4MDAsIDB4N0YsIDB4MTAsIDB4Q0MsCisweDQxLCAweDMxLCAweDBGLCAweEMwLCAweDJELCAweDEwLCAweDMzLCAweDAwLCAweEZDLCAweDQyLCAweDMwLCAweDBBLCAweEMwLAorMHgwNCwgMHgyNCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHhFNiwgMHgwMCwgMHg5MSwKKzB4MDUsIDB4NzQsIDB4MDYsIDB4MTIsIDB4MzksIDB4NDAsIDB4MzcsIDB4MDAsIDB4OTEsIDB4ODEsIDB4NDQsIDB4MDQsIDB4QjgsCisweDE5LCAweDQ0LCAweDQ3LCAweDMwLCAweDlELCAweDQzLCAweDVDLCAweDBFLCAweDEwLCAweDMxLCAweDQwLCAweDY1LCAweDAwLAorMHgxRiwgMHgwMSwgMHg0NCwgMHgwQywgMHgxMCwgMHgxMSwgMHg0MCwgMHg0NCwgMHgwMSwgMHg1RCwgMHgwMiwgMHg0QywgMHgwQywKKzB4NzAsIDB4M0QsIDB4NDAsIDB4RTQsIDB4MDAsIDB4OTUsIDB4MDEsIDB4NzQsIDB4MEMsIDB4MTIsIDB4NzEsIDB4NDAsIDB4MDQsCisweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweEM0LCAweDQwLCAweDExLCAweDAxLAorMHg3NCwgMHgwNiwgMHgxNCwgMHgzOSwgMHg0NCwgMHgzNywgMHgwMCwgMHgxMSwgMHgwMywgMHg0NCwgMHg0NiwgMHgxQSwgMHgxMSwKKzB4NDEsIDB4NjcsIDB4MDAsIDB4OUQsIDB4NDMsIDB4NzQsIDB4MDYsIDB4MTAsIDB4MTEsIDB4NDAsIDB4NDQsIDB4MDQsIDB4MTEsCisweDAxLCAweDQ0LCAweDA2LCAweDEwLCAweDE5LCAweDY0LCAweDY2LCAweDAwLCAweERELCAweDAyLCAweDQ0LCAweDQ1LCAweDEwLAorMHhBNSwgMHg0MCwgMHg2NiwgMHgyMCwgMHgxOSwgMHg4MSwgMHg3NCwgMHgwRSwgMHgxMSwgMHgxMSwgMHg1NCwgMHgwNCwgMHgwOCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzQsCisweDAyLCAweDEwLCAweDAwLCAweDY4LCAweDM3LCAweDAwLCAweDgxLCAweDAwLCAweDA1LCAweDAyLCAweDEwLCAweDAwLCAweDQwLAorMHg2MywgMHgwMCwgMHgwRCwgMHgwMCwgMHgxNiwgMHgwMCwgMHgxNCwgMHgwOCwgMHg1MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgwMCwKKzB4MDUsIDB4MDIsIDB4MUMsIDB4MDksIDB4NjQsIDB4MDIsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDUsIDB4MDAsIDB4OTQsIDB4MEQsCisweDQwLCAweDAyLCAweDAwLCAweDBELCAweDAwLCAweDM0LCAweDAyLCAweDEwLCAweDAwLCAweDQwLCAweDQwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhCMCwgMHgwNiwgMHgwMCwgMHgxMSwgMHgwMCwgMHg3QywgMHgwMCwKKzB4MzAsIDB4MDksIDB4NjAsIDB4M0YsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MTQsIDB4MDEsIDB4QzAsIDB4MjcsCisweDIwLCAweDlGLCAweDAwLCAweDdFLCAweDgyLCAweDMwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDRDLAorMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgyNiwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgwRCwgMHhEMCwKKzB4MjcsIDB4MDgsIDB4MUIsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDksIDB4RDAsIDB4MDQsIDB4NjQsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDJGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAwLCAweEYxLAorMHgwMywgMHhDMiwgMHgzRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHg4MCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwKKzB4M0YsIDB4MDAsIDB4REMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDgsIDB4MkYsIDB4MDAsIDB4RkMsIDB4MDAsCisweEYwLCAweDAzLCAweEMwLCAweDBELCAweDAwLCAweDJGLCAweDQwLCAweENDLCAweDAwLCAweDU5LCAweDBGLCAweEM4LCAweDJELAorMHgwMCwgMHgzNywgMHg4MCwgMHhGQywgMHgwMiwgMHhGNCwgMHgwQiwgMHhDOCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4NDEsIDB4RUMsIDB4MDIsIDB4RjAsIDB4MEYsCisweEMwLCAweDJDLCAweDAwLCAweEJGLCAweDAwLCAweEJFLCAweDA3LCAweEYwLCAweDAzLCAweEMxLCAweDNFLCAweDAwLCAweEEzLAorMHgwMSwgMHhEQywgMHgwMCwgMHgzMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHhBQywgMHgwMSwgMHhEQywgMHgzMywgMHgzNCwKKzB4M0YsIDB4QzAsIDB4MkYsIDB4ODAsIDB4QTMsIDB4MDEsIDB4RkMsIDB4NTMsIDB4RjAsIDB4ODMsIDB4QzAsIDB4NEYsIDB4MDAsCisweDMzLCAweDAxLCAweEJDLCAweDBDLCAweDMwLCAweDEzLCAweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMywgMHgwOCwgMHgyNywgMHgxMiwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgwRiwgMHg0NCwKKzB4MDQsIDB4MTQsIDB4MUQsIDB4MDAsIDB4NTUsIDB4MDcsIDB4RDAsIDB4MjEsIDB4NTAsIDB4M0MsIDB4MDAsIDB4OTEsIDB4NDEsCisweDQ0LCAweDAyLCAweDEwLCAweDAxLCAweDQwLCAweDI3LCAweDIwLCAweDlELCAweDExLCAweDU0LCAweDNCLCAweDEwLCAweDRELAorMHg0MCwgMHgyNywgMHgyMCwgMHg5MSwgMHgxMCwgMHg3NCwgMHgwRiwgMHhEMiwgMHgwQiwgMHg0MCwgMHgwNywgMHgwOCwgMHgxMSwKKzB4ODAsIDB4NzQsIDB4MDAsIDB4MTQsIDB4MDUsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEzLCAweEEwLCAweDAzLCAweDAwLCAweDBELCAweDAwLCAweDA1LCAweDAwLCAweEQwLCAweDBDLCAweDQwLCAweDIwLAorMHgwOCwgMHg4RCwgMHgwMCwgMHgzNSwgMHgwMiwgMHg1MCwgMHgwMCwgMHg0MCwgMHgzMSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgxNCwKKzB4MDIsIDB4MTAsIDB4MDgsIDB4NDQsIDB4MDMsIDB4MDAsIDB4OUQsIDB4MDAsIDB4MTQsIDB4MDMsIDB4OTAsIDB4MEMsIDB4NjAsCisweDIzLCAweDAwLCAweDgxLCAweDA0LCAweDM0LCAweDAzLCAweEQwLCAweDU4LCAweDQ4LCAweDIzLCAweDE1LCAweDgxLCAweDE0LAorMHgzNCwgMHgxMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4ODgsIDB4NjUsIDB4MTAsIDB4MUQsIDB4MDMsIDB4NDQsIDB4MEMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NDQsIDB4MDAsCisweDFELCAweDAxLCAweDU0LCAweDEyLCAweEQwLCAweDAwLCAweDQwLCAweDM1LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDA2LAorMHgxNCwgMHgxOSwgMHg0MCwgMHg0NywgMHgxNCwgMHg5RCwgMHgwMCwgMHg1NCwgMHgwMywgMHg5MCwgMHgwRCwgMHg0MCwgMHgyNywKKzB4NDIsIDB4OTEsIDB4MjAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MUQsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsCisweDA0LCAweDEwLCAweDA1LCAweDQwLCAweDBGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHg4OCwgMHg0NywgMHgwNCwgMHgxRiwgMHgwMSwgMHg0QywgMHg4RSwgMHhGMSwgMHgwRCwgMHhDOCwgMHg2NCwgMHgyMCwgMHgwRiwKKzB4NDMsIDB4N0QsIDB4MDcsIDB4NzAsIDB4NTUsIDB4QzAsIDB4MzUsIDB4NDAsIDB4QzMsIDB4MDAsIDB4NUMsIDB4MTQsIDB4MzAsCisweDU5LCAweEMwLCAweEU3LCAweDAwLCAweDhFLCAweDAwLCAweDVDLCAweDAzLCAweEIwLCAweDBELCAweEMwLCAweDM3LCAweDIwLAorMHhEMSwgMHgyMCwgMHg3QywgMHgwMywgMHhGMiwgMHgxOSwgMHhDMiwgMHg0NywgMHgwMCwgMHgxMywgMHg4MSwgMHgzQywgMHgwMiwKKzB4MzQsIDB4MDEsIDB4QzAsIDB4MEIsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEYsIDB4ODAsCisweDJELCAweDA4LCAweDNGLCAweDAwLCAweEZDLCAweDQyLCAweEYwLCAweDBFLCAweEMwLCAweDJGLCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHg4NywgMHhDMCwgMHgzOCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhCQywgMHg0MiwgMHhGMCwgMHgwQiwKKzB4QzEsIDB4MkYsIDB4MDAsIDB4QkYsIDB4MDQsIDB4QkMsIDB4MDMsIDB4NzAsIDB4MEYsIDB4QzAsIDB4N0IsIDB4MjAsIDB4QkYsCisweDAwLCAweEZDLCAweDAzLCAweEQwLCAweDA5LCAweEMwLCAweDRGLCAweDAyLCAweDNGLCAweDA5LCAweEZDLCAweDAyLCAweEYwLAorMHgwNywgMHhDMSwgMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQSwgMHgwOCwgMHgwNSwKKzB4MDAsIDB4MTMsIDB4MDIsIDB4NUQsIDB4MEEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjQsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsCisweDgyLCAweDMwLCAweDI3LCAweEMwLCAweDM0LCAweDQ0LCAweEQzLCAweDAwLCAweDZDLCAweDAyLCAweEYwLCAweDA5LCAweEM2LAorMHg4NywgMHgwNCwgMHg5RiwgMHgwMCwgMHg1QywgMHgwMywgMHg3MCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhEMywgMHgyMCwKKzB4NEMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NjQsIDB4MDAsIDB4OTMsIDB4MDEsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDEsCisweEMwLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDI0LCAweDAwLAorMHgwMSwgMHgwMCwgMHg0NCwgMHgwNiwgMHhEMCwgMHgyRiwgMHhDNSwgMHgyNiwgMHgwMCwgMHg5QiwgMHgyMCwgMHg3NCwgMHgwMiwKKzB4QjAsIDB4NDUsIDB4NDAsIDB4N0MsIDB4NDAsIDB4RDEsIDB4MDEsIDB4NkMsIDB4MDIsIDB4RDAsIDB4MjksIDB4NDAsIDB4ODcsCisweDAwLCAweDlELCAweDAwLCAweEM0LCAweDAzLCAweDEyLCAweDBELCAweDQwLCAweEI3LCAweDA2LCAweDkxLCAweDBBLCAweEM0LAorMHgwMywgMHhEMCwgMHgwRCwgMHg1MCwgMHhFNCwgMHgwMCwgMHg5MSwgMHgwMywgMHg3NCwgMHg0MiwgMHgxMCwgMHgwNSwgMHg0MCwKKzB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MjIsIDB4ODAsIDB4MDEsCisweDEyLCAweDA0LCAweDIwLCAweEQwLCAweDNDLCAweDQxLCAweDAwLCAweDAwLCAweDgxLCAweDA5LCAweDI0LCAweDAzLCAweDEwLAorMHgwMCwgMHg0MCwgMHgzMCwgMHgyMCwgMHg4RCwgMHgxMywgMHgyNCwgMHgwOCwgMHg5MCwgMHgyMCwgMHg0MCwgMHg4MywgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MTQsIDB4MDMsIDB4NTAsIDB4MEMsIDB4MDAsIDB4MjMsIDB4MDAsIDB4ODEsIDB4MDIsIDB4MDQsIDB4MDMsCisweEMwLCAweDA4LCAweDQwLCAweDkwLCAweDE0LCAweDQxLCAweDEyLCAweDM0LCAweDg1LCAweDEwLCAweDA4LCAweDQwLCAweDFGLAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRiwgMHg4MCwgMHg2OCwgMHg0MCwgMHgyMSwgMHgwMSwKKzB4ODQsIDB4MDcsIDB4RDAsIDB4MUMsIDB4NDAsIDB4NUEsIDB4MDAsIDB4RTksIDB4MDEsIDB4RjQsIDB4MDcsIDB4OTAsIDB4MTAsCisweDU0LCAweDcwLCAweDI2LCAweEFELCAweDkxLCAweEE0LCAweDA1LCAweEQwLCAweDEyLCAweDA4LCAweDZCLCAweDAyLCAweEZELAorMHgwMSwgMHg4NCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg2QiwgMHgwMCwgMHhCNSwgMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwKKzB4OUEsIDB4NDAsIDB4NTgsIDB4MDIsIDB4NjEsIDB4ODEsIDB4RjQsIDB4MEQsIDB4MTIsIDB4OUUsIDB4NDAsIDB4MTMsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDI0LCAweDAyLCAweDExLCAweDAwLCAweDFELAorMHgyMSwgMHhGMCwgMHgwQywgMHg0MCwgMHhCNCwgMHgwMCwgMHhDMywgMHgwMiwgMHgzQywgMHgwMywgMHgzMCwgMHg0MCwgMHhDMCwKKzB4MzAsIDB4MDIsIDB4Q0YsIDB4MDAsIDB4MkMsIDB4MDAsIDB4QjMsIDB4ODQsIDB4QzAsIDB4MTMsIDB4OEEsIDB4Q0YsIDB4MDAsCisweDVDLCAweDAzLCAweDcwLCAweDBDLCAweEMwLCAweDI3LCAweDQwLCAweDgzLCAweDA4LCAweDBDLCAweDAzLCAweEYwLCAweDBDLAorMHhDMCwgMHgzNCwgMHgwMiwgMHhDMywgMHgwNCwgMHgzQywgMHgwMSwgMHgzMCwgMHgwOCwgMHhDMCwgMHg0QiwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4MkQsIDB4MDAsIDB4N0YsIDB4ODgsIDB4RkMsIDB4MDEsCisweEMwLCAweDBGLCAweEMxLCAweDFELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDIzLCAweEYwLCAweDAzLCAweEMwLCAweEJGLAorMHgwNiwgMHhGMywgMHgwOCwgMHhGQywgMHgyMSwgMHhGMCwgMHg4RiwgMHhDOCwgMHgzRiwgMHhBMiwgMHhGRiwgMHgwOCwgMHhGQywKKzB4MjMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0UsIDB4MDIsIDB4QkIsIDB4MjAsIDB4RkQsIDB4NDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDNGLCAweDAyLCAweEZGLCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDBGLCAweEMyLCAweDBCLCAweDYwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgyRiwgMHgwMCwgMHgwRiwgMHgwMCwgMHg0QywgMHgwMSwgMHhGMCwKKzB4NEQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjgsIDB4MDEsIDB4QzAsIDB4QjYsIDB4NDAsCisweEQzLCAweDAxLCAweDdDLCAweDgxLCAweEYyLCAweDA1LCAweEM4LCAweDc3LCAweDAwLCAweDkzLCAweDAwLCAweDZDLCAweDIzLAorMHgzMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgyOSwgMHhDMCwgMHg1NCwKKzB4MDAsIDB4NTMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4NTYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDg4LCAweDI5LCAweDAwLCAweDJELCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDBFLAorMHg0MSwgMHgzQiwgMHgwMCwgMHg2RCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwMywgMHg1MCwgMHgzOCwgMHgwMSwgMHhFMSwKKzB4MDAsIDB4ODQsIDB4MDMsIDB4RDEsIDB4MEUsIDB4NDAsIDB4M0YsIDB4MDAsIDB4QTEsIDB4MDAsIDB4OTQsIDB4ODMsIDB4MTAsCisweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEExLCAweDAwLCAweEI2LCAweDEzLCAweEQwLCAweDhBLCAweDQwLCAweDE5LCAweDAwLAorMHg2MSwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMiwgMHgwRSwgMHg0MCwgMHg0OCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjksIDB4MDAsIDB4M0QsIDB4MDEsIDB4ODQsIDB4MEYsIDB4RDEsIDB4NUUsIDB4NDAsCisweDdCLCAweDAwLCAweEVELCAweDgxLCAweEI0LCAweDA3LCAweEQyLCAweDEyLCAweDQwLCAweDcxLCAweDAwLCAweEUxLCAweDExLAorMHg5NCwgMHgwNywgMHhEMCwgMHgxNiwgMHg0MCwgMHg3QiwgMHgwMCwgMHhCOSwgMHg0MywgMHgyNCwgMHgwNywgMHg1MCwgMHgxRSwKKzB4NDAsIDB4NzMsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MTcsIDB4RDAsIDB4MUMsIDB4NDEsIDB4NzgsIDB4MDAsIDB4RTEsCisweDAxLCAweDg0LCAweDA3LCAweEQwLCAweDFBLCAweDQwLCAweDBFLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgyOCwgMHg3MywgMHgxMCwgMHhDRCwgMHg0MCwgMHgwNCwgMHgwRiwgMHhEMCwgMHgwQywgMHg0MCwgMHhCMywKKzB4MDAsIDB4Q0QsIDB4MDIsIDB4MzQsIDB4MDMsIDB4RDAsIDB4NjksIDB4NDAsIDB4MzcsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDYsCisweDI3LCAweEQwLCAweDlELCAweDQwLCAweDMzLCAweDAwLCAweDk5LCAweDAwLCAweDE0LCAweDAzLCAweDEwLCAweDBELCAweDQwLAorMHg3NywgMHgwMiwgMHg4OSwgMHgwOCwgMHgzNCwgMHgwMywgMHhEMCwgMHg2RCwgMHg0MiwgMHgzMSwgMHgwMCwgMHhEMSwgMHgwMCwKKzB4NDQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NTAsIDB4NDgsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE3LCAweEE4LCAweDVELCAweDAxLCAweDdGLCAweDAyLCAweENELCAweDA1LCAweEYwLCAweDA1LCAweEMwLCAweDVGLCAweDA0LAorMHg3RCwgMHgwQiwgMHg3QywgMHg4MSwgMHhGMCwgMHgzNywgMHhDMCwgMHgxNSwgMHgwMCwgMHg1MywgMHgwMCwgMHhEQywgMHgwOSwKKzB4RjAsIDB4QTcsIDB4QzAsIDB4MUYsIDB4NDEsIDB4NUIsIDB4MDAsIDB4NkMsIDB4MDEsIDB4MzQsIDB4MDUsIDB4QzAsIDB4MTcsCisweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDM3LCAweEUwLCAweDE0LCAweDQwLCAweDUzLCAweDAwLCAweDRELAorMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHg1RSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwKKzB4MDAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MTIsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4MDAsIDB4MUYsCisweDBBLCAweDdDLCAweDAwLCAweEY4LCAweDgxLCAweDQwLCAweDA0LCAweDEwLCAweDFGLCAweDAyLCAweDVDLCAweDQ4LCAweEY4LAorMHgyMSwgMHhDMiwgMHgwNywgMHgwMSwgMHgxNywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMSwgMHgwMSwgMHhDMCwgMHg4NywgMHg0MCwKKzB4MTcsIDB4MDAsIDB4N0MsIDB4ODAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDQsCisweEYwLCAweDAxLCAweEM4LCAweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LAorMHgyMywgMHgwMCwgMHg5QiwgMHgwMCwgMHg0RSwgMHg2MiwgMHhGMCwgMHgxOSwgMHhDMCwgMHgyNywgMHgwNCwgMHg4NywgMHgwNCwKKzB4NEMsIDB4ODIsIDB4RjAsIDB4MDksIDB4QzQsIDB4MjQsIDB4MTAsIDB4OTMsIDB4NDAsIDB4N0MsIDB4MDIsIDB4RjIsIDB4MDksCisweEMwLCAweDI0LCAweDAwLCAweDlFLCAweDgwLCAweDJDLCAweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDY0LCAweDA4LCAweDkzLAorMHgwNSwgMHg3OCwgMHgwNiwgMHhGMCwgMHgwOSwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5RiwgMHgwMSwgMHg0QywgMHgwMiwgMHgzMCwKKzB4MzksIDB4QzAsIDB4NDAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsCisweDAwLCAweDgxLCAweDA0LCAweDQ0LCAweDBBLCAweEQwLCAweDE5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDEwLCAweDQ0LAorMHgwMiwgMHhEMCwgMHgwOSwgMHhDMCwgMHgyNiwgMHg0MCwgMHg5MSwgMHgwMSwgMHg3NCwgMHgxNiwgMHhEMCwgMHgxOSwgMHg0MCwKKzB4QTQsIDB4MDAsIDB4OUQsIDB4ODAsIDB4NEMsIDB4ODIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4NDEsIDB4OTEsIDB4MDEsCisweDc0LCAweDA2LCAweEQyLCAweDA5LCAweDQwLCAweEE0LCAweDIwLCAweDlELCAweDAzLCAweDQ0LCAweDAyLCAweDEyLCAweDA4LAorMHg0MCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwOCwKKzB4OTksIDB4MDAsIDB4NDQsIDB4OEEsIDB4RDAsIDB4NjksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4ODIsCisweDUwLCAweDA5LCAweDQwLCAweDI0LCAweDAyLCAweDk5LCAweDIxLCAweDU2LCAweDEyLCAweDkwLCAweDY5LCAweDQyLCAweDI0LAorMHg4NiwgMHg5RCwgMHgwMCwgMHg2NCwgMHgwMiwgMHg1MCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMiwgMHg5MSwgMHgwMCwgMHg3NCwKKzB4MjIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjcsIDB4MDAsIDB4QkQsIDB4MDQsIDB4QzQsIDB4MDIsIDB4MUMsIDB4MEYsIDB4NDAsCisweDYwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAxLCAweDkxLAorMHgwMCwgMHgwNCwgMHg4MiwgMHhEMCwgMHg2OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwMiwgMHgwNCwgMHgwMiwgMHhEMiwKKzB4NDgsIDB4NDAsIDB4MzAsIDB4MDEsIDB4QzksIDB4MDAsIDB4MzQsIDB4MUEsIDB4RDgsIDB4MDgsIDB4NDEsIDB4MjAsIDB4ODAsCisweDhELCAweDAwLCAweDA0LCAweDIyLCAweDEwLCAweDA4LCAweDUwLCAweDIwLCAweDAxLCAweDgxLCAweDAwLCAweDM0LCAweDEyLAorMHhEMCwgMHg0OCwgMHg0MCwgMHg2OSwgMHgwMCwgMHhBRCwgMHgwMSwgMHg4NCwgMHgwNiwgMHgwMCwgMHgwQiwgMHg0MCwgMHg0MCwKKzB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4ODYsIDB4MjIsIDB4MUIsIDB4MEEsCisweDQ1LCAweDE4LCAweEYwLCAweDIxLCAweEMwLCAweDg3LCAweDAyLCAweDFGLCAweDA2LCAweDRDLCAweDAwLCAweEYwLCAweEExLAorMHg1MCwgMHg4NCwgMHgwMiwgMHgxQiwgMHgwMCwgMHg1QywgMHgwOCwgMHhCMCwgMHg2MSwgMHhEMCwgMHg4NCwgMHgwMCwgMHgxRiwKKzB4MEEsIDB4NkMsIDB4NTgsIDB4NzEsIDB4QTEsIDB4QzAsIDB4ODQsIDB4MDIsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MDAsIDB4RjAsCisweEExLCAweEMwLCAweDgzLCAweDAyLCAweDBGLCAweDRBLCAweDRDLCAweDI4LCAweDMwLCAweEEyLCAweEQwLCAweDc0LCAweEMwLAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHgyRiwgMHgxMiwgMHhCRiwgMHgwMCwgMHhGQywKKzB4NUEsIDB4RjAsIDB4ODksIDB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4NDYsIDB4RkQsIDB4MDIsIDB4RjAsIDB4OEIsIDB4QzAsCisweDI3LCAweDIyLCAweEE3LCAweDIwLCAweEZDLCAweDBBLCAweEYwLCAweDRCLCAweEMzLCAweDJGLCAweDI3LCAweEFGLCAweDAwLAorMHg1QywgMHgxMiwgMHhGMCwgMHgwOSwgMHhDOCwgMHgyRiwgMHgwMiwgMHhCRCwgMHgwMCwgMHg3QywgMHgyMiwgMHhGMCwgMHg4QiwKKzB4QzAsIDB4MjYsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0QsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NjcsIDB4NjAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEEwLCAweDI3LCAweDA1LCAweEJGLCAweDA4LCAweEVDLCAweDAyLAorMHgzMCwgMHgwQiwgMHhDMCwgMHgyNCwgMHgwMCwgMHhCRiwgMHgwNCwgMHg3QywgMHgwMiwgMHgzMCwgMHhDQSwgMHhDMCwgMHgyQywKKzB4MDAsIDB4ODMsIDB4NDAsIDB4RDAsIDB4MjIsIDB4RjAsIDB4NEIsIDB4QzAsIDB4MkYsIDB4MDUsIDB4OEYsIDB4ODgsIDB4NUMsCisweDgyLCAweEIwLCAweDA5LCAweEMwLCAweDJGLCAweDAyLCAweEIzLCAweDAwLCAweEZDLCAweDE2LCAweEYwLCAweDQ5LCAweEQwLAorMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgyMiwgMHgzMCwgMHgwQiwgMHhDMCwgMHg2MCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDMsIDB4MDEsIDB4NUQsIDB4MDQsIDB4NDQsIDB4NDgsIDB4MTQsCisweDAxLCAweDQ5LCAweDA0LCAweDAyLCAweDE3LCAweDE0LCAweDc0LCAweDAwLCAweDE0LCAweEMxLCAweDQ0LCAweDgwLCAweDA0LAorMHgxMSwgMHgwMCwgMHg0NCwgMHgyMCwgMHhEMiwgMHg0MSwgMHg0OSwgMHgwNywgMHgyMSwgMHgxRCwgMHgwNCwgMHg0NCwgMHg0OCwKKzB4MTAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDIsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDIsIDB4ODEsIDB4NDAsIDB4MTYsCisweDA0LCAweDVELCAweDkwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDcxLCAweDIwLCAweDBDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHhBMCwgMHgyMywgMHgwNSwgMHg4RCwgMHgwNCwgMHgwNSwgMHgzMiwgMHgxMCwgMHg4OCwKKzB4NDAsIDB4MjAsIDB4MDAsIDB4OEQsIDB4OEQsIDB4NzQsIDB4MDIsIDB4MTEsIDB4NTgsIDB4NDAsIDB4MjAsIDB4NDMsIDB4ODEsCisweDQwLCAweDE2LCAweDAyLCAweEQwLCAweEM4LCAweDQwLCAweDIzLCAweDA1LCAweDhELCAweDI0LCAweDE0LCAweDMyLCAweDkwLAorMHgwOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgwQSwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMSwKKzB4OEQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NDAsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEE4LCAweDI1LCAweDAwLCAweDlELCAweDA0LCAweDQ0LCAweDQyLCAweDEwLCAweDA5LCAweDQwLAorMHhBNCwgMHgwMSwgMHg5NSwgMHg0MCwgMHg3NCwgMHgwNiwgMHgxMCwgMHgwOSwgMHg0MiwgMHgyNCwgMHgwMCwgMHg5MSwgMHgwMCwKKzB4NDYsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDI3LCAweDQwLCAweDkxLCAweDIwLCAweDc0LCAweDAyLCAweEQwLCAweDI5LCAweDQwLCAweDI0LCAweDAwLCAweDhELAorMHgyMCwgMHg0NSwgMHgwMiwgMHgwMCwgMHgwOSwgMHg0MCwgMHg2MSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDUsIDB4QTgsIDB4MjcsIDB4MDIsIDB4OUYsIDB4MDEsIDB4NDQsIDB4MDIsIDB4MzAsIDB4MDksIDB4RDAsIDB4MjQsCisweDAwLCAweDlGLCAweDAxLCAweDNDLCAweDAyLCAweDMwLCAweDA5LCAweEYwLCAweDI0LCAweDAwLCAweDgzLCAweDAxLCAweDVDLAorMHgxQSwgMHhEMiwgMHgzOSwgMHhDNSwgMHgyNywgMHgyNCwgMHg5RSwgMHgwMCwgMHg1RSwgMHgwMiwgMHhCMCwgMHgwOSwgMHhDMCwKKzB4NjcsIDB4NDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4QTcsIDB4MDAsIDB4OUYsIDB4MDIsCisweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDE0LCAweEEwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxNiwgMHg4MCwgMHg2NSwgMHgwMCwgMHg5RiwgMHgwMCwgMHgxQywgMHgyNiwgMHhGMCwgMHgwOCwgMHhDMCwgMHg2NywgMHgwMCwKKzB4OTcsIDB4MDIsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4ODIsIDB4N0MsIDB4QzIsCisweEYwLCAweDQ5LCAweEMwLCAweEU3LCAweDAwLCAweDlELCAweDAwLCAweDNDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweEU3LAorMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHg4OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHg4MCwgMHg3QywKKzB4NDIsIDB4RjQsIDB4MDksIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDAwLCAweDRDLCAweDQ4LCAweEYwLCAweDAxLCAweEQzLCAweDA0LCAweDAwLCAweDFGLAorMHgwMCwgMHg3QywgMHg4MCwgMHhGMCwgMHg4MSwgMHhDMCwgMHgwNCwgMHg0MCwgMHgxMywgMHgwMCwgMHg0QywgMHgwOCwgMHhGMywKKzB4MjEsIDB4QzUsIDB4QzcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDFCLCAweDAwLCAweDZDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDg0LCAweDQxLCAweDEzLCAweDAyLCAweDRELCAweDAwLAorMHhGMCwgMHg0MSwgMHhDMCwgMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwKKzB4MTQsIDB4MDAsIDB4NzEsIDB4MDcsIDB4QzUsIDB4MEQsIDB4NzAsIDB4MTcsIDB4NDAsIDB4MTQsIDB4MDAsIDB4N0QsIDB4MDQsCisweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQyLCAweDU4LCAweDAwLCAweDUxLCAweDAwLCAweEQ0LCAweDA5LCAweEQwLCAweDI3LAorMHg0MCwgMHgxRiwgMHgwMCwgMHg1RCwgMHgwMCwgMHg0NCwgMHgwMSwgMHg3OCwgMHgwNSwgMHg0MCwgMHg1RiwgMHgwMCwgMHg3MSwKKzB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsIDB4MDUsIDB4QzAsIDB4MUUsIDB4MDAsIDB4NzEsIDB4MTEsIDB4ODQsIDB4MDUsIDB4RDIsCisweDI3LCAweDQwLCAweDUzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLAorMHgwMCwgMHg5MSwgMHgwNywgMHgyNCwgMHgyRiwgMHg1MCwgMHgxQywgMHg0MCwgMHgzMCwgMHg4MCwgMHg0RCwgMHgxMSwgMHgzNCwKKzB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzIsIDB4MTAsIDB4QzksIDB4MDYsIDB4MDQsIDB4MDcsIDB4RDAsIDB4M0MsIDB4NDAsCisweDMzLCAweDgwLCAweERELCAweDAwLCAweDE0LCAweDAzLCAweDUwLCAweDBDLCAweDQwLCAweDM3LCAweDg2LCAweDhELCAweDAwLAorMHgzNCwgMHgwMiwgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgyRiwgMHhEMCwgMHgwMSwKKzB4NDAsIDB4NTMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODAsIDB4NzgsIDB4MDAsCisweDIxLCAweDI0LCAweDg0LCAweDAzLCAweDUwLCAweDBFLCAweDQxLCAweDM4LCAweDAyLCAweDZELCAweDAwLCAweEI0LCAweDAzLAorMHhEMCwgMHgwQiwgMHg1MCwgMHgyOCwgMHgwNSwgMHg2OSwgMHgxMCwgMHhCNCwgMHgwOSwgMHhEMCwgMHgyRSwgMHg0MiwgMHgzQiwKKzB4MDQsIDB4RkQsIDB4MDAsIDB4ODQsIDB4MDMsIDB4NTEsIDB4MEUsIDB4NDAsIDB4MUIsIDB4MDAsIDB4MjUsIDB4MDAsIDB4QjQsCisweDAyLCAweEQyLCAweDRGLCAweDY0LCAweDdBLCAweDIwLCAweEUxLCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDBBLCAweDYwLAorMHgxNywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwgMHg3OCwgMHgwMCwgMHgyMywKKzB4MDcsIDB4QUQsIDB4MDUsIDB4NzAsIDB4MTQsIDB4QzAsIDB4NzgsIDB4MDEsIDB4RUYsIDB4MDEsIDB4QkMsIDB4MDcsIDB4RjAsCisweDlFLCAweEMwLCAweDY4LCAweDQxLCAweEE5LCAweDA5LCAweDhDLCAweDA3LCAweEYzLCAweDFFLCAweEMwLCAweDdCLCAweDEwLAorMHhFRiwgMHgwMSwgMHg5NCwgMHgxNywgMHg3MCwgMHgzRSwgMHg4MCwgMHg3RiwgMHgwMCwgMHhFRiwgMHgwMSwgMHhCQywgMHgwNywKKzB4RjAsIDB4NUUsIDB4ODAsIDB4N0MsIDB4MDAsIDB4RjEsIDB4MDEsIDB4OEMsIDB4MDcsIDB4RjAsIDB4MTYsIDB4QzAsIDB4NTcsCisweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweEI1LCAweDQyLCAweDBGLCAweDAwLAorMHg3QywgMHgwMSwgMHg3MiwgMHgwNSwgMHhDMCwgMHg3NywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHg0OSwKKzB4RDAsIDB4MDcsIDB4MEEsIDB4MTcsIDB4MDAsIDB4NUMsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsCisweDA2LCAweDdDLCAweDAzLCAweDcwLCAweDFELCAweEMwLCAweDI3LCAweDQwLCAweDVCLCAweDAwLCAweDdDLCAweDAzLCAweEYwLAorMHgxQywgMHhDMCwgMHgyNywgMHgwMCwgMHhERSwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg0MywgMHg2MCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4RkYsIDB4MDAsIDB4QjMsIDB4MDEsIDB4Q0MsCisweDIzLCAweEYwLCAweDVGLCAweEMyLCAweDdGLCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDA3LCAweDMwLCAweDFGLCAweEMwLAorMHg2QywgMHgwMCwgMHhGQiwgMHg0MSwgMHhDOCwgMHgyNywgMHgzMCwgMHgxNywgMHhDMCwgMHg1RiwgMHgyMCwgMHhGRiwgMHgxMywKKzB4REMsIDB4NDcsIDB4QjAsIDB4MUYsIDB4QzgsIDB4N0YsIDB4MDAsIDB4QkYsIDB4MDEsIDB4REMsIDB4MDYsIDB4MzAsIDB4MUYsCisweEQxLCAweDdDLCAweDAwLCAweEZGLCAweDgxLCAweEZDLCAweDg3LCAweEYwLCAweDFCLCAweEMwLCAweDAzLCAweDA4LCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg4OCwgMHgzRCwgMHgwMCwgMHhBMSwgMHgwQSwgMHg4NCwgMHgwOSwKKzB4NzAsIDB4MEUsIDB4NDgsIDB4M0IsIDB4MDQsIDB4QUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MEYsIDB4NDAsIDB4MjgsCisweDEwLCAweDYxLCAweDA0LCAweEM0LCAweDIzLCAweDEwLCAweDg2LCAweDQwLCAweDNCLCAweDBBLCAweEVELCAweDAwLCAweEM0LAorMHgwMywgMHhCMiwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHgzRCwgMHgwMCwgMHg4NCwgMHgwMiwgMHhCMCwgMHgwRSwgMHg0MCwKKzB4MzgsIDB4MDAsIDB4QUQsIDB4ODgsIDB4QjQsIDB4MjIsIDB4RDAsIDB4MDIsIDB4NDAsIDB4NTcsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDM5LCAweDAwLCAweDMxLCAweDAwLCAweDg0LCAweDIzLCAweEQ4LAorMHg0NiwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMiwgMHhGNCwgMHgwMywgMHg5MCwgMHgyRSwgMHg0MCwgMHgyMCwgMHgwMCwKKzB4QTEsIDB4MjAsIDB4ODYsIDB4MjIsIDB4OTgsIDB4MkEsIDB4NDAsIDB4OEIsIDB4MDAsIDB4RUQsIDB4MDAsIDB4OTQsIDB4MDMsCisweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweDk0LCAweDIzLCAweDEwLCAweDBDLCAweDQwLCAweDE4LAorMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MSwgMHgwMywgMHgwOCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjAsIDB4MzMsIDB4MDQsIDB4MDEsIDB4MDMsIDB4NDUsIDB4MDAsIDB4NTAsIDB4MDEsCisweDQwLCAweEYzLCAweDAwLCAweDlELCAweDQwLCAweDM2LCAweDgzLCAweDkwLCAweDBDLCAweDQwLCAweDA0LCAweDAwLCAweDAxLAorMHgyMCwgMHgwNiwgMHgwMiwgMHg5MCwgMHgwOCwgMHg0NCwgMHgyMywgMHgwOCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMywgMHg5MCwKKzB4MEMsIDB4NDAsIDB4MzMsIDB4MDIsIDB4NEQsIDB4MDgsIDB4MDQsIDB4MDMsIDB4OTAsIDB4MUMsIDB4NDAsIDB4MjAsIDB4MDAsCisweENELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDE0LCAweDQwLCAweDEzLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxRCwgMHhBMCwgMHhCRCwgMHg0MCwgMHg3MywgMHgxMSwgMHg0QywgMHgwQSwgMHhGMCwgMHgwOSwgMHhDMCwKKzB4M0YsIDB4MTAsIDB4NUYsIDB4MDMsIDB4NzQsIDB4ODMsIDB4QjQsIDB4MDksIDB4NDAsIDB4MkMsIDB4MDAsIDB4RDMsIDB4MDAsCisweDRDLCAweDFBLCAweEIwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweEZGLCAweDAwLCAweERDLCAweDAzLCAweDMwLCAweDBGLAorMHg0MCwgMHgyNywgMHgwMCwgMHg1RiwgMHgwMCwgMHgxQywgMHgwMiwgMHgzMCwgMHhCRiwgMHhDMSwgMHgzNCwgMHgwMCwgMHhERiwKKzB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MTQsIDB4QzAsIDB4NTcsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDc3LCAweDAwLCAweDVGLCAweDA2LCAweDdDLCAweDYyLCAweEYwLCAweDA5LCAweEMwLCAweDM3LAorMHgwMSwgMHg1RiwgMHgwMSwgMHg3QywgMHgwMywgMHg3MCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHhENywgMHgwMiwgMHg3RCwKKzB4MDAsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjIsIDB4MEQsIDB4QzQsCisweDI3LCAweDAwLCAweDVGLCAweDAyLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEUwLCAweDM3LCAweDAwLCAweERGLCAweDAyLAorMHg3QywgMHgwQiwgMHhGMSwgMHgwRCwgMHhDMCwgMHgwNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4M0YsIDB4MDAsIDB4NzMsIDB4MDgsIDB4Q0MsIDB4MDAsIDB4MzAsIDB4MEIsIDB4QzIsIDB4MzgsIDB4MDAsCisweEYzLCAweDAwLCAweENDLCAweDAzLCAweDMxLCAweDFCLCAweEMwLCAweDJFLCAweDAwLCAweEYzLCAweDAwLCAweENDLCAweDQwLAorMHhGMCwgMHgwQSwgMHhDNCwgMHgwOCwgMHgwMCwgMHhGMywgMHgwMCwgMHhCQywgMHgwMywgMHgzMCwgMHgwRiwgMHhDMCwgMHgyRiwKKzB4MDAsIDB4N0YsIDB4MDEsIDB4NEMsIDB4MDYsIDB4MzAsIDB4MEUsIDB4QzgsIDB4M0MsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsCisweDAzLCAweDMwLCAweDgzLCAweEMwLCAweDAwLCAweDIyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgyMCwgMHgzNiwgMHgwMCwgMHg1MSwgMHgwMCwgMHg0NSwgMHgwQywgMHgxMSwgMHgzOSwgMHg0MSwgMHgzNCwgMHgwMCwgMHhEMSwKKzB4MDEsIDB4MkMsIDB4MDMsIDB4NTAsIDB4MDksIDB4NDAsIDB4NDQsIDB4MDAsIDB4QzEsIDB4MDIsIDB4N0MsIDB4MEMsIDB4RDAsCisweDMxLCAweEMwLCAweDQ2LCAweDAwLCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweDUwLCAweDBELCAweEMwLCAweDY1LCAweDAwLAorMHg1RCwgMHgwMiwgMHg2QywgMHgwNiwgMHgxNCwgMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwgMHgwNCwgMHg3MCwgMHgwNywKKzB4MTAsIDB4MDksIDB4NDAsIDB4MDQsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTgsCisweDMwLCAweDQwLCAweDAxLCAweDAwLCAweDY0LCAweDA2LCAweDkwLCAweDExLCAweDQwLCAweDM0LCAweDAwLCAweEQxLCAweDAxLAorMHg0NCwgMHgwMywgMHgxOCwgMHg4OCwgMHg0MCwgMHgyNCwgMHgwMSwgMHhEMSwgMHgxNCwgMHg0NCwgMHgwNiwgMHhEMCwgMHgxMSwKKzB4NDAsIDB4NDQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NTQsIDB4MDMsIDB4OTAsIDB4MEQsIDB4NDAsIDB4NjcsIDB4MDQsIDB4NDksCisweDA2LCAweDQ0LCAweDIyLCAweDEwLCAweDBELCAweDQwLCAweDM0LCAweDIyLCAweERELCAweDQwLCAweDc0LCAweDBGLCAweDEwLAorMHgwRCwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NTYsIDB4MzAsIDB4NDAsIDB4QzEsIDB4MDAsIDB4NDUsCisweDAzLCAweDUwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDgxLCAweDAwLCAweDE0LCAweDAyLCAweEQwLCAweDAwLCAweDQwLAorMHg2MCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMiwgMHgwQywgMHg0MCwgMHgyMSwgMHgwMCwgMHg0RCwgMHgwMCwKKzB4MjQsIDB4MDIsIDB4MTAsIDB4MEMsIDB4MDAsIDB4MzAsIDB4MDgsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MDUsCisweDAwLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEIwLCAweDNFLCAweDEwLAorMHgxMywgMHgwMCwgMHg0RCwgMHgwMiwgMHhCMCwgMHgwMSwgMHg0MiwgMHgzNCwgMHgwMCwgMHg5MywgMHgyMCwgMHg0NiwgMHgwMywKKzB4MzAsIDB4MEIsIDB4QzAsIDB4MjYsIDB4MDAsIDB4NTMsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RjEsIDB4MDksIDB4NDAsIDB4MDQsCisweDQwLCAweEUzLCAweDAwLCAweDdDLCAweDAzLCAweEIwLCAweDBELCAweEMwLCAweDI3LCAweDAwLCAweDVGLCAweDAwLCAweDRDLAorMHgwMiwgMHgzMCwgMHgwRCwgMHg5MCwgMHgxNCwgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgwOSwgMHhEMCwKKzB4MDAsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4OTgsIDB4M0YsIDB4MDAsIDB4MkYsCisweDAwLCAweEZDLCAweDAyLCAweDcwLCAweDBCLCAweEM0LCAweDNGLCAweDAwLCAweEJGLCAweDAwLCAweEJDLCAweDAzLCAweEYwLAorMHgwQiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgyRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMiwgMHgwRiwgMHgwMCwKKzB4RkYsIDB4MjAsIDB4RkMsIDB4MDMsIDB4NzAsIDB4MEYsIDB4QzAsIDB4MkQsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MDIsCisweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDA4LCAweEZGLCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDAzLCAweEMwLCAweDE3LAorMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHhGRiwgMHgwMCwgMHhGRiwgMHgwOSwKKzB4RkMsIDB4MzIsIDB4RjAsIDB4NEYsIDB4RTEsIDB4MkQsIDB4MjEsIDB4RkYsIDB4MDksIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsCisweEMwLCAweDNDLCAweDAwLCAweEZGLCAweDFDLCAweENDLCAweDUyLCAweEYwLCAweDRGLCAweEMwLCAweDdDLCAweDgwLCAweEZGLAorMHgwMCwgMHhDQywgMHgxMywgMHhCMCwgMHgwRiwgMHhDMCwgMHg3QywgMHgwMCwgMHhGRiwgMHg4NCwgMHhCQywgMHgwNSwgMHgzMCwKKzB4MUYsIDB4QzAsIDB4N0MsIDB4NDAsIDB4RkIsIDB4MDEsIDB4Q0MsIDB4MDQsIDB4QjAsIDB4MEIsIDB4QzAsIDB4MEMsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweENELCAweDAwLCAweDc0LAorMHgzQSwgMHhEMCwgMHgzRiwgMHg0MCwgMHhBNywgMHgwMywgMHhERCwgMHgwNCwgMHg3NCwgMHgwNiwgMHhEMCwgMHgyRiwgMHg0MCwKKzB4RkMsIDB4MDAsIDB4RkQsIDB4MDYsIDB4NDQsIDB4MUEsIDB4RDAsIDB4QkYsIDB4NDYsIDB4NzQsIDB4MDAsIDB4RkQsIDB4MDYsCisweEM0LCAweDNCLCAweDM0LCAweEFGLCAweDQwLCAweDc0LCAweDAwLCAweEZDLCAweDAyLCAweDc0LCAweDA1LCAweDEwLCAweDFELAorMHg0MCwgMHg3NCwgMHgwMCwgMHg5MSwgMHgwMSwgMHg1NCwgMHgwMywgMHg1MiwgMHgwMSwgMHg0MCwgMHgwRCwgMHgwMCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MzMsIDB4MDEsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDAsCisweEQwLCAweDBDLCAweDQwLCAweDAzLCAweDA0LCAweENELCAweDA0LCAweDM0LCAweDAyLCAweEQwLCAweDhDLCAweDQwLCAweDMyLAorMHgwMiwgMHhDRCwgMHgwMCwgMHgwNCwgMHg0MCwgMHhEMSwgMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgxOCwgMHgwNCwKKzB4NDMsIDB4MTAsIDB4MEMsIDB4NDIsIDB4MzAsIDB4MDAsIDB4Q0QsIDB4MDIsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsCisweDMxLCAweDAwLCAweDQ5LCAweDgwLCAweDA0LCAweDAxLCAweDgwLCAweDA4LCAweDYwLCAweDRDLCAweDgwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHgzNSwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwQywgMHhEMCwKKzB4MEQsIDB4NDAsIDB4NDcsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MEUsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzYsIDB4MDAsCisweERELCAweDAwLCAweDQ1LCAweDA2LCAweEQwLCAweDBELCAweDQwLCAweDM0LCAweDEwLCAweERELCAweDAwLCAweDQ0LCAweDAzLAorMHgxMCwgMHgwRCwgMHg0MCwgMHgzNCwgMHgxNCwgMHhERCwgMHgwMCwgMHg3NCwgMHgyMSwgMHgxMCwgMHgwRCwgMHg2MCwgMHg3NCwKKzB4OTAsIDB4MTEsIDB4MDAsIDB4NTYsIDB4MDEsIDB4MDksIDB4MzEsIDB4NDAsIDB4MEQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDBDLCAweEYwLCAweDBELAorMHhDMCwgMHg2NywgMHgwNCwgMHhERiwgMHgwMCwgMHg3QywgMHgwNCwgMHhGMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhERiwKKzB4MjAsIDB4NEMsIDB4MUUsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsCisweDBELCAweEMwLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDgxLCAweDMxLCAweDJDLCAweEMwLCAweEYwLCAweDA0LAorMHhEQiwgMHgwMCwgMHg0QywgMHgxNiwgMHhBMCwgMHgzMSwgMHhDMCwgMHgwMCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDcsIDB4ODgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzIsCisweDJGLCAweDAwLCAweEZGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBGLCAweEQwLCAweDM1LCAweDAwLCAweERGLCAweDAwLAorMHhGQywgMHgwMiwgMHhGMCwgMHgwRSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhFRiwgMHgwMCwgMHhGQywgMHg0MywgMHhGMCwgMHgwRiwKKzB4QzQsIDB4M0YsIDB4MDIsIDB4RkQsIDB4MDAsIDB4RjgsIDB4MDEsIDB4RjQsIDB4MkYsIDB4NDAsIDB4M0YsIDB4NDAsIDB4RkYsCisweDAwLCAweEZDLCAweDY3LCAweEYwLCAweDAyLCAweEMyLCAweDFGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHg4MCwgMHhERiwgMHgwMCwgMHg1QywgMHgwOCwgMHgzMCwgMHgwRCwgMHhDMCwgMHhBNCwKKzB4MDgsIDB4REYsIDB4MDAsIDB4NEMsIDB4MDgsIDB4MzAsIDB4NUMsIDB4QzAsIDB4MzQsIDB4MDAsIDB4QzMsIDB4NDAsIDB4NEMsCisweDQ4LCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDAwLCAweEQzLCAweDAwLCAweDNDLCAweDgzLCAweEYwLCAweDBDLCAweEMwLAorMHgzNCwgMHgwNCwgMHhENywgMHg5MSwgMHg0QywgMHgxMywgMHg3NCwgMHgwRCwgMHhDNSwgMHgzNSwgMHgwMCwgMHhERiwgMHg4NCwKKzB4NEMsIDB4MDUsIDB4RTAsIDB4MjksIDB4ODEsIDB4MDksIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEzLCAweEEwLCAweDM0LCAweDAwLCAweERELCAweDAwLCAweDQ0LCAweDA0LCAweDEwLCAweDBGLCAweDQwLCAweEU0LCAweDAyLAorMHhERCwgMHgwMCwgMHg0NCwgMHgwMCwgMHhCMCwgMHgyRiwgMHg0MCwgMHgzRCwgMHgwMCwgMHhGMSwgMHgwMSwgMHg0NCwgMHgxNiwKKzB4RDAsIDB4MEYsIDB4QzAsIDB4MzQsIDB4MDAsIDB4RjcsIDB4MDQsIDB4RjQsIDB4NEIsIDB4RDAsIDB4QUYsIDB4NDAsIDB4QjUsCisweDAwLCAweEYwLCAweDAyLCAweDA0LCAweDE1LCAweDEwLCAweDNELCAweDQ0LCAweDM0LCAweDEwLCAweEM5LCAweDgwLCAweDQ0LAorMHg4NSwgMHg5MCwgMHgzMSwgMHg0MSwgMHg2RCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywKKzB4MjAsIDB4MzAsIDB4MTAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4NEUsIDB4MTEsIDB4MEMsIDB4NDQsIDB4NDAsIDB4MDAsIDB4Q0QsCisweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDJDLCAweDQwLCAweDMwLCAweDA4LCAweEMxLCAweDA0LCAweDI0LCAweDA0LCAweEQwLAorMHgwQywgMHg1MCwgMHgzMiwgMHgwMCwgMHhDMSwgMHgwNywgMHgzNCwgMHgwNywgMHhEMCwgMHgwQywgMHg0MCwgMHhEMCwgMHgwMCwKKzB4QzUsIDB4MDIsIDB4MDAsIDB4MDksIDB4MTAsIDB4MTQsIDB4NDAsIDB4ODMsIDB4NDEsIDB4QzEsIDB4MDIsIDB4NjQsIDB4MDAsCisweEQwLCAweDE4LCAweDQwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLAorMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NSwgMHgwNywgMHgxNCwgMHgxQywgMHg1MCwgMHg3OCwgMHgwNCwgMHhFRCwgMHgwMSwKKzB4ODUsIDB4MDYsIDB4MTAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4ODAsIDB4RTEsIDB4MTEsIDB4QTQsIDB4MDUsIDB4RDAsIDB4MUMsCisweDQwLCAweDdDLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDU5LCAweDA2LCAweEU1LAorMHgwMSwgMHg4NCwgMHgwNSwgMHgxMCwgMHg5RSwgMHg0MCwgMHg3QSwgMHgwNywgMHhBMSwgMHgwMSwgMHhBNCwgMHgwNiwgMHg5MSwKKzB4MUEsIDB4NDAsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MTgsIDB4MzAsCisweDAwLCAweENELCAweDAwLCAweDFDLCAweDQzLCAweDMwLCAweDBDLCAweEMwLCAweDEwLCAweDAwLCAweERGLCAweDAwLCAweDA0LAorMHgwMywgMHgxMCwgMHgwRCwgMHhDMCwgMHgzMCwgMHgwMCwgMHhDMywgMHgwMCwgMHgyQywgMHgyMSwgMHhGMCwgMHgwQywgMHhDMCwKKzB4MzYsIDB4MDIsIDB4QzMsIDB4MDAsIDB4M0MsIDB4MDMsIDB4RjIsIDB4MEQsIDB4RTAsIDB4MjAsIDB4MDAsIDB4RDcsIDB4MDAsCisweDBDLCAweDMzLCAweDMwLCAweDhDLCAweEMxLCAweDIzLCAweDAzLCAweDRCLCAweDIwLCAweDJDLCAweDIwLCAweEYwLCAweDA5LAorMHhDMCwgMHg0QiwgMHg2OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgzRCwgMHgxMCwKKzB4RkYsIDB4NDgsIDB4RkMsIDB4MjMsIDB4RjgsIDB4MEYsIDB4QzAsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsCisweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDEwLCAweEZGLCAweDAyLCAweDVELCAweDIxLCAweEYwLCAweDBGLCAweEMwLCAweDNGLAorMHgwMCwgMHhGNywgMHgxMCwgMHg3QywgMHg0MywgMHhGMCwgMHgwRCwgMHhDMSwgMHgyQSwgMHgwMCwgMHhGQiwgMHgwMiwgMHg3QywKKzB4MjEsIDB4RjIsIDB4ODgsIDB4MDAsIDB4MjgsIDB4MDMsIDB4MkYsIDB4MDgsIDB4REMsIDB4MjIsIDB4RjIsIDB4OEIsIDB4QzQsCisweDA5LCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDgwLCAweERGLAorMHgwMCwgMHg3RSwgMHgwMSwgMHgzMCwgMHg0RCwgMHhDMSwgMHgxNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwKKzB4QUQsIDB4RDAsIDB4MzQsIDB4MDEsIDB4REYsIDB4MDIsIDB4NUMsIDB4MDMsIDB4RjAsIDB4Q0QsIDB4QzAsIDB4MzcsIDB4MDAsCisweERGLCAweDA0LCAweDdDLCAweDFCLCAweEY4LCAweDZELCAweEMwLCAweDM3LCAweDAwLCAweEQzLCAweDBFLCAweDdDLCAweDAxLAorMHhGMCwgMHgxRCwgMHhDMCwgMHgyMiwgMHg0MCwgMHhDQiwgMHgwMCwgMHg0QywgMHgwMiwgMHhGMCwgMHgxMSwgMHg0MCwgMHg0MCwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDAsCisweEY0LCAweDAzLCAweDEwLCAweDRFLCAweDQwLCAweDNCLCAweDAwLCAweEVDLCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDhFLAorMHg0MCwgMHhCOCwgMHgwNSwgMHhGRCwgMHgwNCwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MSwgMHgzQiwgMHgwMCwgMHhFRCwKKzB4MEMsIDB4QjQsIDB4NTMsIDB4NzAsIDB4Q0UsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RTUsIDB4MDAsIDB4QjQsIDB4MDAsIDB4RDAsCisweDBFLCAweDQwLCAweDI4LCAweDAwLCAweEVCLCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDA2LCAweDQwLCAweDRDLCAweDAwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwgMHhFNSwgMHgwMSwgMHhCNCwKKzB4ODcsIDB4OTIsIDB4REUsIDB4NDIsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4NUMsIDB4NDAsCisweDc4LCAweDAwLCAweEZELCAweDRELCAweDk0LCAweDA3LCAweEQwLCAweDVFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDA1LAorMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0NCwgMHg3RiwgMHgwMCwgMHhFMSwgMHgwNSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwKKzB4NDEsIDB4NkUsIDB4ODAsIDB4RjksIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4MUMsIDB4NjAsIDB4MTAsIDB4MjAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDQzLAorMHg5NCwgMHgwQywgMHg0MCwgMHhGMywgMHgwMSwgMHhDRCwgMHgwMCwgMHgzNiwgMHgzRiwgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwKKzB4MTAsIDB4REQsIDB4MDAsIDB4MDQsIDB4NDcsIDB4OTAsIDB4MEMsIDB4NDIsIDB4MzMsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsCisweDAzLCAweDUyLCAweDBDLCAweDQwLCAweEIzLCAweDAyLCAweEM1LCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweDRDLCAweDQ2LAorMHg2MCwgMHhBMiwgMHhDOSwgMHgwOSwgMHg0NCwgMHgwMywgMHhDMCwgMHgxQywgMHg0MCwgMHg1OCwgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTAsIDB4MTUsIDB4MDgsIDB4NUYsIDB4MDAsIDB4RjQsIDB4MTUsIDB4QjAsCisweDA1LCAweEMwLCAweDlGLCAweDAxLCAweDVGLCAweDAwLCAweEZDLCAweDAxLCAweEYyLCAweDA1LCAweEMwLCAweDE0LCAweDA4LAorMHg1RiwgMHgwMCwgMHhEQywgMHgxOSwgMHhGMywgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMSwKKzB4RjAsIDB4MDUsIDB4QzAsIDB4NUYsIDB4MjAsIDB4NTMsIDB4MDAsIDB4RkMsIDB4MTUsIDB4RjAsIDB4MDcsIDB4Q0MsIDB4OUEsCisweDIwLCAweDZCLCAweDAyLCAweENELCAweDA5LCAweEYwLCAweDM3LCAweEQwLCAweDVDLCAweDAwLCAweDA0LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwQSwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHg3MCwgMHgwMSwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MjAsIDB4MUYsCisweDQwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDcwLAorMHgyMSwgMHhDMCwgMHg4NywgMHgwMSwgMHgxRiwgMHgwMiwgMHg3RSwgMHgwMCwgMHhGMiwgMHgwMSwgMHhDMCwgMHgwNywgMHgwNCwKKzB4MUYsIDB4MTAsIDB4N0MsIDB4NDgsIDB4QjAsIDB4RTEsIDB4QzgsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDgwLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLAorMHhBNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNSwgMHg4MCwgMHg5RiwgMHgwOCwKKzB4MEMsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MEUsIDB4MzAsIDB4MDgsCisweEMwLCAweDI0LCAweDAwLCAweDk3LCAweDAwLCAweDdDLCAweDg2LCAweDcyLCAweDI5LCAweENBLCAweEE3LCAweDA4LCAweDk3LAorMHgwNSwgMHg1QywgMHgwMiwgMHgzMCwgMHgxOSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MjAsIDB4MjQsIDB4MDgsIDB4OUQsIDB4MjAsIDB4NDQsIDB4MzYsIDB4MDQsIDB4MDksIDB4NDQsIDB4RTcsCisweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDI5LCAweDQwLCAweDI1LCAweDkwLCAweDlDLCAweDAxLCAweDQ0LAorMHgwQSwgMHgxNCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwMywgMHg0NSwgMHgwQSwgMHhBNCwgMHgwOSwgMHg1MSwKKzB4QTAsIDB4MDAsIDB4OTAsIDB4MTIsIDB4MzQsIDB4MjYsIDB4MTAsIDB4MjksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTksIDB4MDAsCisweDZDLCAweDhBLCAweDUwLCAweDE5LCAweDQxLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOCwgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NSwgMHgwMiwgMHgwMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwKKzB4OUQsIDB4MDAsIDB4NDAsIDB4MDIsIDB4RDAsIDB4MDksIDB4MDAsIDB4MjQsIDB4MjAsIDB4OUMsIDB4MTAsIDB4NDQsIDB4MjIsCisweDEwLCAweDA5LCAweDQ0LCAweDI1LCAweDAwLCAweDlELCAweDE0LCAweDQ0LCAweDQyLCAweDkwLCAweDE5LCAweDQwLCAweDI0LAorMHgwNCwgMHg5NSwgMHgwMCwgMHg1NCwgMHgwMiwgMHg0MCwgMHgwRCwgMHg0MSwgMHgyNiwgMHgwMCwgMHg5RCwgMHg0MiwgMHg1NCwKKzB4MTIsIDB4MTAsIDB4NDksIDB4NDAsIDB4NjMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDIwLCAweDIwLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDEyLCAweDExLCAweDQ4LCAweDQwLCAweDMzLCAweDAxLCAweDhELAorMHgwMCwgMHgzNCwgMHgxMiwgMHhEMCwgMHg0RCwgMHg0QywgMHgyMSwgMHgxMSwgMHg4RCwgMHgwNCwgMHgwNCwgMHgxMywgMHgxMCwKKzB4NDgsIDB4NjAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MDQsIDB4MTIsIDB4OTAsIDB4NDgsIDB4NDQsIDB4MjQsIDB4MDAsCisweDgxLCAweDg0LCAweDc2LCAweDAyLCAweDFBLCAweDA4LCAweDQwLCAweDIzLCAweDg4LCAweDg5LCAweDgwLCAweDI0LCAweDAyLAorMHg1MCwgMHg0OCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHgzOCwKKzB4ODYsIDB4MEEsIDB4MUYsIDB4MEEsIDB4NEMsIDB4MjgsIDB4MzAsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MDIsIDB4MUYsIDB4MEEsCisweDdDLCAweDAwLCAweEYwLCAweEExLCAweEMwLCAweDA0LCAweDAwLCAweDFELCAweDBBLCAweDRELCAweDI4LCAweDMyLCAweDAxLAorMHhDNCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwQSwgMHg0QywgMHgyOCwgMHgzMCwgMHhBMSwgMHg0MCwgMHgwNCwgMHgwOCwgMHgxNywKKzB4NEEsIDB4NUMsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MTcsIDB4MDAsIDB4NUMsIDB4MjksIDB4MzAsCisweEExLCAweEMwLCAweDc3LCAweDgwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIyLCAweDI1LAorMHgwMCwgMHg5RiwgMHg0MCwgMHhGQywgMHgyMiwgMHhGMCwgMHg4OSwgMHhDMCwgMHgyRiwgMHgwMiwgMHg5RiwgMHgwMCwgMHhGQywKKzB4MjIsIDB4RjAsIDB4ODksIDB4QzAsIDB4MjcsIDB4MDIsIDB4OUYsIDB4NDgsIDB4RkMsIDB4MjIsIDB4RjAsIDB4ODksIDB4QzIsCisweDI3LCAweDAwLCAweDlGLCAweDA4LCAweDdDLCAweDIyLCAweDcwLCAweDg5LCAweEMwLCAweDNCLCAweDAwLCAweDlGLCAweDA4LAorMHhGQywgMHgwMiwgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHgwMCwgMHhCNywgMHg4MCwgMHhEQywgMHgwMiwgMHhGMSwgMHg4RiwKKzB4QzAsIDB4NzcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4ODAsIDB4MjcsIDB4MDAsCisweDlGLCAweDA4LCAweEZDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDJDLCAweDAyLCAweDkzLCAweDAwLCAweDdDLCAweDUyLAorMHhGMCwgMHhDQiwgMHhDMCwgMHgyNywgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMiwgMHhCMCwgMHg0OSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4QkYsIDB4MEMsIDB4RkMsIDB4MDIsIDB4RTAsIDB4MEIsIDB4QzAsIDB4MkQsIDB4MDAsIDB4QjMsIDB4MDQsIDB4REMsCisweDAyLCAweEIwLCAweDBCLCAweEMwLCAweDJBLCAweDQwLCAweEIzLCAweDAwLCAweEJDLCAweDAzLCAweDMwLCAweDBCLCAweEMwLAorMHg3NywgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNywgMHgwMSwgMHgxRCwKKzB4MDQsIDB4NzQsIDB4NDksIDB4MTAsIDB4MDEsIDB4NDQsIDB4MTQsIDB4NDIsIDB4MDEsIDB4MTQsIDB4NzQsIDB4MDAsIDB4RDAsCisweEMxLCAweDRDLCAweDg3LCAweDEwLCAweDFELCAweDUwLCAweDc0LCAweDIwLCAweDEwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLAorMHgxRCwgMHgwQywgMHg3NCwgMHg0OCwgMHhEMCwgMHgwMSwgMHg0NSwgMHgwNywgMHgwMCwgMHgxMSwgMHgxNCwgMHg3NCwgMHgwMCwKKzB4RDAsIDB4MDUsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4NjMsCisweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDA1LCAweDhELCAweDA0LAorMHgzNCwgMHhCMiwgMHgxNCwgMHg4OCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgwNCwgMHgzNiwgMHgwMiwgMHhEMCwgMHg0OCwKKzB4NDgsIDB4MjMsIDB4ODIsIDB4OEQsIDB4MDgsIDB4MzQsIDB4MDIsIDB4MTQsIDB4ODgsIDB4NjAsIDB4MjMsIDB4MDAsIDB4OEQsCisweDA0LCAweDM0LCAweDMyLCAweEQwLCAweDg4LCAweDQwLCAweDI3LCAweDAwLCAweDgxLCAweDBDLCAweDM2LCAweDAyLCAweDUyLAorMHgwOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHgwMCwgMHgxNCwgMHgwMiwgMHgxOCwgMHgwOCwgMHg0MCwgMHg0QiwgMHg4MCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjgsIDB4MjUsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsCisweDEyLCAweDEwLCAweDA5LCAweDUwLCAweDI0LCAweDAxLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwQiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHhERCwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4RDgsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksCisweDQwLCAweDI3LCAweDA0LCAweDkxLCAweDAyLCAweDcwLCAweDEyLCAweDE5LCAweDA5LCAweDQwLCAweDYzLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgyMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3OCwgMHgwNiwKKzB4MzAsIDB4MDksIDB4QzAsIDB4NjQsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4NEUsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsCisweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEIyLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLAorMHgwMiwgMHhGMiwgMHgwOSwgMHhDMCwgMHg2NywgMHg0MCwgMHg5MywgMHgwMCwgMHg3QywgMHg0MiwgMHhCMCwgMHhCOSwgMHhDMCwKKzB4MjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4NDYsIDB4MzQsIDB4MTksIDB4QzAsIDB4MTcsIDB4MDAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDNDLCAweDA2LCAweEYwLAorMHgwOCwgMHhDMCwgMHg2NywgMHgwMCwgMHg5QywgMHgwMCwgMHg3QywgMHgxMiwgMHhGMCwgMHgwOSwgMHhDMSwgMHgyNywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA5LCAweEMxLCAweDI3LCAweDAyLCAweDlGLCAweEIwLCAweDdDLCAweDQyLCAweEYwLCAweDE5LCAweDAyLCAweDI0LAorMHgwMSwgMHg5RiwgMHgwMCwgMHg3QywgMHgwNiwgMHhGMCwgMHg5OSwgMHhDMSwgMHg1QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDEsCisweEMwLCAweEM3LCAweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDA4LCAweDMwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLAorMHgwMSwgMHg3QywgMHgzMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMSwgMHg1QywgMHgwNCwgMHhGMCwKKzB4MDEsIDB4QzgsIDB4ODYsIDB4MDksIDB4MTMsIDB4MDgsIDB4NkQsIDB4MDgsIDB4RTAsIDB4NDEsIDB4QzAsIDB4ODQsIDB4MDAsCisweDE3LCAweDQwLCAweDZDLCAweDEwLCAweDEwLCAweEExLCAweEMyLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg1RCwgMHg4MCwgMHhGNCwgMHgxRCwgMHg3MCwgMHgwNSwgMHg0MCwKKzB4NUYsIDB4MjAsIDB4NUQsIDB4MDAsIDB4NEMsIDB4MDEsIDB4MTAsIDB4MjcsIDB4NDAsIDB4MTQsIDB4MDAsIDB4N0QsIDB4MDAsCisweEY0LCAweDBELCAweEQwLCAweDA1LCAweDQwLCAweDE3LCAweDAwLCAweDdELCAweDAxLCAweEM0LCAweDA1LCAweDcwLCAweDI3LAorMHg0MCwgMHgxOCwgMHgwMCwgMHg3MSwgMHg4MiwgMHhDNCwgMHgxOSwgMHhEMCwgMHgxNiwgMHg0MSwgMHgxOCwgMHgwMSwgMHg3MSwKKzB4MUIsIDB4RTQsIDB4NDUsIDB4MTAsIDB4MDcsIDB4NDAsIDB4NDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDFGLCAweDU4LCAweDBDLCAweDQwLCAweDc3LAorMHgwMCwgMHhDOSwgMHgwMCwgMHgyNSwgMHgwMywgMHgxNCwgMHgyQywgMHg1MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMSwgMHg3NCwKKzB4MDcsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDMsIDB4NTAsIDB4MUMsIDB4NTAsCisweEIwLCAweDQyLCAweEMxLCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDJDLCAweDQwLCAweDUwLCAweDQwLCAweEM1LCAweDAyLAorMHg2NCwgMHgwNywgMHg5NCwgMHgxQywgMHg0MCwgMHg0MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4ODAsIDB4MzgsIDB4MDIsIDB4RUQsIDB4MDgsIDB4QjQsIDB4MDMsIDB4NTgsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MEMsCisweEVELCAweDA1LCAweDA0LCAweDA3LCAweDEwLCAweDFFLCAweDQxLCAweDM4LCAweDAwLCAweDZELCAweDEwLCAweEI0LCAweDAzLAorMHhEMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMywgMHg4NCwgMHgwOSwgMHg1MCwgMHgzNiwgMHg0MCwgMHgzQywKKzB4MDAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEYsIDB4NDAsIDB4MUMsIDB4MDAsIDB4RTEsIDB4MDAsIDB4RTYsCisweDgyLCAweDkwLCAweDE2LCAweDQwLCAweDExLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LAorMHgxOCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgxMSwgMHhCQywgMHgwNSwgMHg3MCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMCwgMHhFRiwKKzB4ODcsIDB4QUMsIDB4ODcsIDB4MzAsIDB4MUYsIDB4QzAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MjEsIDB4QkMsIDB4MDcsIDB4RjAsCisweDFFLCAweEMwLCAweDdCLCAweDAwLCAweENGLCAweDgxLCAweDlDLCAweDA3LCAweDc4LCAweDFGLCAweEMwLCAweDc4LCAweDAwLAorMHhDMywgMHg4MSwgMHg4QywgMHgwNywgMHhEQSwgMHgwQSwgMHhDNCwgMHg1OCwgMHgyMCwgMHhFNywgMHgyMSwgMHhBRSwgMHgwNywKKzB4QjEsIDB4MUIsIDB4QzQsIDB4NTAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsCisweDM1LCAweDAxLCAweERGLCAweDA2LCAweDdFLCAweDAxLCAweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDE2LAorMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzAsIDB4MzcsIDB4MjAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4NzAsIDB4MDUsIDB4QzAsIDB4MzEsIDB4MDAsIDB4NUYsCisweDAwLCAweDVDLCAweDAzLCAweEY4LCAweDBDLCAweEMwLCAweDE3LCAweDAwLCAweERGLCAweDAwLCAweDcwLCAweDAyLCAweDcwLAorMHgwMSwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyMCwgMHhGRCwKKzB4MDIsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MjMsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RjMsIDB4ODEsIDB4RkMsCisweDA3LCAweEYwLCAweDFGLCAweEMwLCAweDdGLCAweDAyLCAweEZGLCAweDAxLCAweENDLCAweDA3LCAweDMwLCAweDFGLCAweEMwLAorMHg3RiwgMHgwMCwgMHhGNywgMHgwMSwgMHhDQywgMHgyNywgMHgzOCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwMCwgMHg3MywgMHgwMSwKKzB4OEMsIDB4ODcsIDB4QjgsIDB4OTcsIDB4QzAsIDB4NUMsIDB4MDAsIDB4RUYsIDB4MjEsIDB4Q0MsIDB4MDUsIDB4RjAsIDB4MTcsCisweEMwLCAweDE4LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDM5LCAweDAwLAorMHhFMSwgMHgwMCwgMHhCNCwgMHgwMywgMHhEOCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMiwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMywKKzB4RDAsIDB4ODIsIDB4NDAsIDB4M0IsIDB4MDAsIDB4N0QsIDB4MDgsIDB4QzQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsCisweDAwLCAweDdELCAweDA0LCAweDg0LCAweDAxLCAweDE0LCAweDRFLCAweDQwLCAweDNCLCAweDAxLCAweDNCLCAweDAwLCAweDg1LAorMHg0MywgMHgxMCwgMHhDRSwgMHg0MCwgMHgxOCwgMHgwMSwgMHhFRCwgMHgwOCwgMHg5NCwgMHg2MiwgMHhEMCwgMHg2MiwgMHg0MCwKKzB4NTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzksIDB4MDgsIDB4RTEsCisweDAwLCAweEI0LCAweDIzLCAweEQ4LCAweDBFLCAweDQwLCAweDlCLCAweDA0LCAweEUxLCAweDAwLCAweEI0LCAweDIzLCAweEQwLAorMHgwRSwgMHg0MCwgMHgzQiwgMHg4OCwgMHg2RCwgMHgwMCwgMHg4NCwgMHgwOSwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwKKzB4RTUsIDB4ODAsIDB4OTQsIDB4MDMsIDB4MTgsIDB4MEEsIDB4NEMsIDB4M0IsIDB4MTAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDMsCisweDkwLCAweDBGLCAweDQ0LCAweDg5LCAweDEwLCAweEVELCAweDAwLCAweDg0LCAweDAwLCAweEQwLCAweDBBLCAweDYxLCAweDYwLAorMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyOCwgMHgzNSwgMHgwMCwgMHhDMSwgMHg0MCwKKzB4MzQsIDB4MUEsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NjcsIDB4QzAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDAsCisweDQwLCAweDMzLCAweDgwLCAweDBELCAweDAwLCAweDA1LCAweDAyLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDEwLCAweDhELAorMHg0MCwgMHg0NCwgMHgwMCwgMHgxOCwgMHgwOCwgMHg0MCwgMHgzMywgMHgyMCwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMywgMHgxMCwKKzB4MkMsIDB4NDAsIDB4NTAsIDB4MTAsIDB4Q0QsIDB4MDEsIDB4MTQsIDB4MEEsIDB4RDgsIDB4MjAsIDB4NDIsIDB4MDgsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLCAweDNELCAweDAwLCAweEYzLCAweDAwLCAweDdDLAorMHgxNiwgMHhEMCwgMHgwRCwgMHhDNCwgMHg0NywgMHgwMCwgMHhGMywgMHgwMCwgMHg3QywgMHgwQiwgMHhEMCwgMHgwMSwgMHhDMCwKKzB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDQsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4MTcsIDB4MDAsCisweDVDLCAweDAyLCAweDMwLCAweDA5LCAweDAwLCAweDM3LCAweDAwLCAweDkxLCAweDAwLCAweDZDLCAweDhCLCAweEIwLCAweDJDLAorMHhDMSwgMHg1MCwgMHgwMSwgMHhERiwgMHgwMCwgMHg0MCwgMHgwOCwgMHhEMCwgMHg4OSwgMHhDMCwgMHg3NCwgMHgwMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDBELCAweEMwLCAweDA3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDQzLCAweEYwLCAweDAxLCAweEMwLCAweDMzLAorMHgwMCwgMHgxRiwgMHgwMiwgMHg3QywgMHgyMCwgMHhGMCwgMHgwRCwgMHhDOCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMiwgMHg3QywKKzB4MEEsIDB4RjAsIDB4MDksIDB4RTAsIDB4QTcsIDB4MDgsIDB4OUYsIDB4NDIsIDB4NUMsIDB4NDMsIDB4RjIsIDB4MEQsIDB4RDAsCisweEI3LCAweDA4LCAweERGLCAweDJBLCAweDdDLCAweDA4LCAweEYwLCAweDI5LCAweEQwLCAweDE3LCAweDIwLCAweDBDLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwgMHgwMCwgMHhGMywgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwKKzB4MEYsIDB4QzAsIDB4MjcsIDB4MDAsIDB4RjMsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4NDAsCisweEIzLCAweDAwLCAweDlDLCAweDAyLCAweDMwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweDNGLCAweDAwLCAweDdDLCAweDAyLAorMHhCMCwgMHgwMywgMHhDMCwgMHgzRiwgMHgyMCwgMHhBRiwgMHgyMCwgMHhEQywgMHgwMywgMHgzMCwgMHgwRiwgMHhDMSwgMHgxRCwKKzB4MDAsIDB4QjYsIDB4MDAsIDB4Q0MsIDB4NDIsIDB4ODAsIDB4MDksIDB4QzAsIDB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDQwLCAweEQxLCAweDAwLCAweDc0LCAweDA0LCAweEQwLCAweDBELAorMHg2MCwgMHg2NywgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgzOSwgMHg0MCwgMHgzNywgMHgwMCwgMHg5MSwKKzB4MDMsIDB4NUMsIDB4MDYsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4OUQsIDB4MDEsIDB4NzQsIDB4NDYsIDB4MTAsCisweDExLCAweDQxLCAweDY3LCAweDAxLCAweDE5LCAweDAxLCAweDA0LCAweDA2LCAweEIwLCAweDNELCAweDQwLCAweDc0LCAweDAxLAorMHgwMSwgMHg0NSwgMHg0NCwgMHg0RSwgMHg5MCwgMHgxOSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzYsIDB4MDQsIDB4RDAsIDB4MEQsIDB4NEEsCisweDQ3LCAweDA0LCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDM5LCAweDQwLCAweDM3LCAweDAwLCAweDkxLCAweDExLAorMHg3NCwgMHgwNCwgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwNCwgMHgxMCwgMHgxOSwKKzB4NDAsIDB4NzcsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NDAsIDB4NDcsIDB4MTAsIDB4OEQsIDB4MDEsIDB4NTUsIDB4MDAsIDB4RDUsCisweDgxLCAweDQ0LCAweDg0LCAweDkwLCAweDExLCAweDQ4LCAweDA3LCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwNiwgMHhEMCwgMHgwQywgMHg0MCwgMHgwMywKKzB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MzMsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MTQsCisweDAwLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweDBELCAweDAwLCAweDM0LCAweDAwLCAweDkwLCAweDA4LCAweDY0LAorMHgzMywgMHgwMCwgMHg4OSwgMHgwMCwgMHg0NywgMHgwMSwgMHg5MCwgMHgwQywgMHg0MCwgMHgzMCwgMHgwOCwgMHhENSwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4OTAsIDB4MDAsIDB4NDQsIDB4NDMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDM4LCAweDNBLCAweDAwLCAweEYzLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDBELCAweDQwLCAweDA3LCAweDAwLAorMHhGMywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNywgMHgwMCwgMHg5MywgMHgwMCwgMHg1QywgMHgwMCwKKzB4MzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4MUQsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MzcsCisweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDE1LCAweDA4LCAweEQ3LCAweDAwLCAweDRELAorMHg4MCwgMHhCMCwgMHgwOSwgMHhDMCwgMHgwNywgMHg2MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKzB4QjgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzQsIDB4MkYsIDB4MDAsIDB4RkYsCisweDAwLCAweEZDLCAweDAzLCAweEYyLCAweDAzLCAweEMwLCAweDNGLCAweDAwLCAweEJGLCAweDAwLCAweERDLCAweDAyLCAweEYwLAorMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMiwgMHg3MCwgMHgwMywgMHhDMCwgMHgxQiwgMHg4MCwKKzB4M0YsIDB4MDAsIDB4RkMsIDB4MDEsIDB4RDAsIDB4MEUsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkIsIDB4MDAsIDB4RkUsIDB4MDIsCisweEYwLCAweDBCLCAweEMwLCAweDE3LCAweDQyLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLAorMHg2RiwgMHgwMCwgMHhGMywgMHgwMSwgMHhGQywgMHg0MCwgMHhGMCwgMHgwMiwgMHhDMCwgMHgyQywgMHgwMCwgMHhCMywgMHg0MCwKKzB4RUMsIDB4MDIsIDB4NzAsIDB4MUYsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RkIsIDB4MTAsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MDMsCisweEMwLCAweDY4LCAweDAwLCAweEZGLCAweDAwLCAweENDLCAweDA3LCAweEIwLCAweDBGLCAweEMwLCAweDNFLCAweDA5LCAweEZGLAorMHgwMSwgMHhBQywgMHgwNywgMHhGMCwgMHg0RiwgMHhDMCwgMHg3QiwgMHgwMCwgMHhCMywgMHgwMCwgMHhDRCwgMHgwMywgMHgzNCwKKzB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDgsIDB4MjEsCisweDAwLCAweEQxLCAweDEwLCAweDVDLCAweDAwLCAweEQwLCAweDExLCAweDQwLCAweDZDLCAweDA4LCAweDkxLCAweDBCLCAweDU4LAorMHgwMCwgMHgxMCwgMHgxRCwgMHhDMCwgMHhBNSwgMHgwNiwgMHhDMSwgMHgxMiwgMHg3NCwgMHgwMiwgMHgxMCwgMHgxMSwgMHhDOCwKKzB4NjUsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NTQsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDAsIDB4NzQsIDB4MTIsIDB4REQsIDB4MDEsCisweDU0LCAweDA3LCAweEQyLCAweEJELCAweDQwLCAweDc3LCAweDQwLCAweDkxLCAweDEwLCAweDQ0LCAweDBCLCAweDEwLCAweDFELAorMHgwMCwgMHgwRiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHgyMCwgMHgzMywgMHgwMCwKKzB4QzEsIDB4MDAsIDB4MzQsIDB4MDQsIDB4RDAsIDB4MTAsIDB4NDAsIDB4MjAsIDB4MDAsIDB4RDEsIDB4MDAsIDB4MDQsIDB4MDAsCisweDUwLCAweDBDLCAweDQwLCAweDIzLCAweDA5LCAweEMxLCAweDg0LCAweDM0LCAweDAyLCAweDEyLCAweDAwLCAweDQwLCAweDIwLAorMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMywgMHg5MCwgMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhERCwgMHgwMCwgMHgwNCwKKzB4MDMsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MzUsIDB4ODAsIDB4OTUsIDB4ODQsIDB4MDQsIDB4NzAsIDB4MTQsIDB4MEMsIDB4NDAsCisweDRGLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDM1LCAweDAwLCAweEQxLAorMHgwMCwgMHg3NCwgMHgwNCwgMHhEMCwgMHg0MSwgMHg0MCwgMHg2NCwgMHg0MCwgMHhEMSwgMHgwOCwgMHg3NCwgMHg0NCwgMHgxMCwKKzB4MEQsIDB4NDAsIDB4MjcsIDB4NDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MjYsIDB4MDAsCisweERELCAweDAwLCAweDU0LCAweDgzLCAweDEwLCAweDBELCAweDQwLCAweDM0LCAweDAwLCAweDFELCAweDAxLCAweDU0LCAweDEzLAorMHhEMCwgMHgwRCwgMHg0MCwgMHgyNywgMHg0MCwgMHhENSwgMHgxOCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwRCwgMHg0OCwgMHgwRiwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODgsIDB4MzYsIDB4MDAsIDB4RDMsIDB4MDAsCisweDdDLCAweDA0LCAweEYyLCAweDE0LCAweEQwLCAweDY0LCAweDAwLCAweDgzLCAweDgwLCAweDRDLCAweDBFLCAweDcwLCAweDBELAorMHhDMCwgMHgyNywgMHgwMCwgMHhEQiwgMHgwMCwgMHg3QywgMHgxRSwgMHgzMCwgMHgxNSwgMHhEMCwgMHgyNCwgMHgwMCwgMHhERiwKKzB4MDAsIDB4MEMsIDB4MDMsIDB4QjEsIDB4MEQsIDB4QzAsIDB4MzYsIDB4MDAsIDB4Q0YsIDB4ODEsIDB4NEMsIDB4MDMsIDB4RjAsCisweDBELCAweEMwLCAweDMzLCAweDAwLCAweDg3LCAweDAzLCAweDRDLCAweDI3LCAweDMwLCAweDBELCAweEMwLCAweDAzLCAweDIwLAorMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywKKzB4NDAsIDB4RjAsIDB4MDcsIDB4QzAsIDB4M0YsIDB4MDgsIDB4QkYsIDB4MDAsIDB4OUMsIDB4MDIsIDB4RDAsIDB4MEYsIDB4QzAsCisweDIxLCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAyLCAweEYwLCAweDk2LCAweEMwLCAweDZELCAweDAxLCAweEVGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwRSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywgMHgwNywgMHhGMCwgMHgwRiwKKzB4QzAsIDB4M0YsIDB4MDAsIDB4RkIsIDB4MDEsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBBLCAweDA4LCAweDM1LCAweDAwLCAweEQzLCAweDAwLCAweDc0LCAweDAwLAorMHgzMCwgMHg4NSwgMHhDMCwgMHgyNSwgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MDAsIDB4NEMsIDB4M0EsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MjQsIDB4MjAsIDB4RDMsIDB4MDgsIDB4NEQsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDAyLCAweDcwLCAweDBELCAweEMwLAorMHgzNywgMHgwMCwgMHg5MywgMHgwMCwgMHg0RCwgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgyOCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MzQsIDB4MDAsIDB4RDUsIDB4MDUsIDB4NzQsIDB4MTQsIDB4MTAsCisweDA3LCAweEMwLCAweEIyLCAweDAwLCAweEQxLCAweDAwLCAweDc0LCAweDI4LCAweEQwLCAweDBELCAweDQwLCAweDM3LCAweDAwLAorMHhGMSwgMHgwMCwgMHg3QywgMHgwNiwgMHhEMSwgMHgwRCwgMHg0MywgMHgyNSwgMHgwMCwgMHhGNSwgMHgwMCwgMHg1NCwgMHgyRiwKKzB4RDAsIDB4MEYsIDB4NDAsIDB4N0MsIDB4MDAsIDB4NTEsIDB4MTEsIDB4N0MsIDB4MDIsIDB4MTAsIDB4MUYsIDB4NDAsIDB4MzcsCisweDAwLCAweEQxLCAweDA0LCAweDJDLCAweDJGLCAweEQwLCAweDBGLCAweDUwLCAweDRDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhBMCwgMHgyNiwgMHgwMCwgMHhDMSwgMHgwMSwgMHgzNCwgMHgwQywgMHgxOCwgMHgxMCwKKzB4NDAsIDB4MjAsIDB4MDQsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDYsIDB4RDgsIDB4MEMsIDB4NDAsIDB4MjMsIDB4MDAsIDB4QzksCisweDQwLCAweDE0LCAweDBDLCAweEQwLCAweDA0LCAweDcwLCAweDIwLCAweDQwLCAweEMxLCAweDAwLCAweDA0LCAweDAzLCAweEQ4LAorMHgwQywgMHg0MCwgMHg3MSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMiwgMHgxOCwgMHgxQywgMHg0MCwgMHgzMywgMHgwMCwKKzB4ODgsIDB4ODAsIDB4MTQsIDB4MDcsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MUMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDBGLCAweDgwLCAweDY4LCAweDAwLCAweEUxLCAweDAxLCAweEI0LCAweDI0LCAweDE4LCAweDNCLCAweDQwLAorMHg2MiwgMHgwMCwgMHhBMCwgMHgwMSwgMHhCNCwgMHg0NSwgMHhEOCwgMHgxRSwgMHg0MiwgMHg2QiwgMHg2MCwgMHhFMSwgMHgwMywKKzB4QTQsIDB4MjYsIDB4RDAsIDB4MTQsIDB4NDAsIDB4NkQsIDB4MDAsIDB4RTUsIDB4MDEsIDB4OTQsIDB4MDcsIDB4RDAsIDB4MUUsCisweDQwLCAweDc5LCAweDAwLCAweEUxLCAweDAxLCAweEY0LCAweDA2LCAweDEwLCAweDFFLCAweDQwLCAweDdGLCAweDQwLCAweDQ5LAorMHg4MSwgMHhCNCwgMHg0NywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTIsIDB4MTAsIDB4MzAsIDB4MDgsIDB4QzMsIDB4MDgsIDB4N0MsIDB4MjAsIDB4MzAsIDB4MDAsIDB4NDAsIDB4QTEsCisweDQwLCAweEMzLCAweDAwLCAweDNDLCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDIzLCAweDAwLCAweENGLCAweDAwLCAweDFDLAorMHgwMywgMHhGMCwgMHg4NCwgMHg0MiwgMHgyMCwgMHgwMiwgMHhDMywgMHgwMCwgMHgwQywgMHg0MywgMHhGMCwgMHgwRCwgMHg0OCwKKzB4MzEsIDB4NDQsIDB4QzMsIDB4ODgsIDB4M0UsIDB4MDIsIDB4NzEsIDB4MEMsIDB4QzEsIDB4MzMsIDB4MDAsIDB4MEIsIDB4MDAsCisweDFDLCAweDAxLCAweEYwLCAweDhDLCAweEMwLCAweDQ4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMiwgMHhCOCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgyMCwgMHhDNCwgMHg4QiwgMHhDMCwgMHgxRiwgMHgwMiwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MjMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RjcsIDB4MTAsIDB4RkMsIDB4MDMsCisweEEwLCAweDg3LCAweEMwLCAweDJFLCAweDEwLCAweEZCLCAweDAwLCAweEVDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNBLAorMHgwMiwgMHg3RiwgMHgwOCwgMHhEQywgMHgyMiwgMHhGNCwgMHg4RiwgMHhDMCwgMHgyRiwgMHg0MiwgMHhGNywgMHgwMCwgMHhDRSwKKzB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweEEwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdFLCAweDA0LCAweDMwLCAweDAxLCAweEMwLCAweDJDLCAweDAxLCAweDkzLAorMHgwMCwgMHhFQywgMHgwNywgMHgzMCwgMHgwRCwgMHhDMCwgMHgyNiwgMHgwMCwgMHhERiwgMHgwMCwgMHgxQywgMHgwMiwgMHgzMCwKKzB4MDUsIDB4QzAsIDB4MjYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4OEQsIDB4RTAsIDB4MzcsIDB4MDAsCisweEQzLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDFELCAweEMwLCAweDM0LCAweDAwLCAweDEzLCAweDgxLCAweDRDLCAweDA3LAorMHgzNCwgMHgwRiwgMHhDMCwgMHg1NywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4OCwKKzB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjYsIDB4MDAsIDB4MTIsIDB4NjIsIDB4QzAsIDB4MzgsIDB4MDQsIDB4RTEsIDB4MDAsCisweEY0LCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDJCLCAweDAwLCAweEZCLCAweDAxLCAweDg0LCAweDAyLCAweDEwLCAweDA2LAorMHg0MCwgMHgzQiwgMHgwMCwgMHhGRCwgMHgwMSwgMHg4NSwgMHgwMywgMHhEMCwgMHg0RSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFMSwKKzB4NDAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QUQsIDB4MDMsIDB4MTAsCisweDFFLCAweDQwLCAweDRGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDc5LAorMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwgMHg4NiwgMHgxMiwgMHgxMywgMHg0MCwgMHg2MCwgMHgwMCwgMHhFRCwgMHgyMSwgMHhCNCwKKzB4MEYsIDB4RDAsIDB4MUUsIDB4NDAsIDB4NzMsIDB4MDAsIDB4RTUsIDB4MDUsIDB4RDQsIDB4MDcsIDB4RDksIDB4MTYsIDB4NDEsCisweDZCLCAweDAwLCAweEVELCAweDIxLCAweEE0LCAweDA3LCAweDUwLCAweDFFLCAweDQwLCAweDcyLCAweDIwLCAweEUxLCAweDAzLAorMHhCNCwgMHgwNiwgMHhEMCwgMHgxQywgMHg0MCwgMHg3RSwgMHgwMCwgMHgyNSwgMHgwMywgMHg4NCwgMHgwNywgMHgxMCwgMHgxRSwKKzB4NDAsIDB4MDcsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjgsIDB4NzMsIDB4MDIsCisweENELCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDQ4LCAweDA2LCAweDUyLCAweDAwLCAweEM5LCAweDAwLCAweDM0LCAweENGLAorMHg5MCwgMHgwQywgMHg0MCwgMHg3MywgMHgwMCwgMHhDOSwgMHgwMCwgMHgwNCwgMHgxMywgMHg5MCwgMHg3QywgMHg0MCwgMHgyMywKKzB4MDAsIDB4REQsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4NDksIDB4MDEsIDB4MzQsCisweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDcwLCAweDAwLCAweEM1LCAweDA0LCAweDI0LCAweDRCLCAweDEwLCAweDBDLCAweDQwLAorMHg0QiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHg1NSwgMHgwMCwgMHg1RiwKKzB4MDAsIDB4RkMsIDB4NDksIDB4MzQsIDB4NDcsIDB4RDAsIDB4NUMsIDB4NDEsIDB4NUYsIDB4MTEsIDB4RkMsIDB4MDEsIDB4RjQsCisweDA1LCAweEMwLCAweDU3LCAweDAwLCAweDU3LCAweDAwLCAweERDLCAweDAxLCAweEUwLCAweDI3LCAweEUwLCAweDE3LCAweDAwLAorMHg1RiwgMHgwMCwgMHg2RSwgMHg4MSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg2MywgMHgwMSwgMHgzQywgMHgxNSwKKzB4RjIsIDB4MDUsIDB4RjAsIDB4NTQsIDB4MDEsIDB4NzcsIDB4MDMsIDB4QzQsIDB4MUQsIDB4MzAsIDB4MDUsIDB4QzAsIDB4NUYsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDAwLCAweDFGLCAweDAyLAorMHg3QywgMHhDMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg4NSwgMHgwMCwgMHgxNywgMHgwMCwgMHg3QywgMHgwOCwgMHg3MiwgMHgwMSwKKzB4QzAsIDB4MDcsIDB4MDIsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MDAsIDB4NzQsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDIsIDB4MUYsCisweDQwLCAweDVDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDQwLCAweDE3LCAweDAwLCAweDdDLCAweDAwLCAweEYwLAorMHgyMSwgMHhFMCwgMHgwNywgMHg0MCwgMHgxQSwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDOCwgMHg0QiwgMHgwMCwKKzB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDIsIDB4N0MsCisweDAyLCAweEYwLCAweDA4LCAweEMwLCAweDIwLCAweDAwLCAweDgzLCAweDAzLCAweDZDLCAweDA2LCAweEYwLCAweDA5LCAweEMwLAorMHgyMywgMHg0MCwgMHg5MSwgMHgwMCwgMHgwNCwgMHgyNiwgMHgzNCwgMHgwOSwgMHgwMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwKKzB4NjgsIDB4MDYsIDB4RDAsIDB4MDksIDB4RTAsIDB4RTcsIDB4MDgsIDB4OTMsIDB4NDUsIDB4NEMsIDB4MDYsIDB4MzIsIDB4MDksCisweEMwLCAweDI3LCAweDA4LCAweDkzLCAweDAwLCAweDdDLCAweDIyLCAweEYwLCAweDA5LCAweEMwLCAweDQzLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyMiwgMHg0MCwgMHg5MSwgMHgwMSwgMHg3NCwgMHg4MiwKKzB4RDAsIDB4MDksIDB4NDAsIDB4QTQsIDB4MDQsIDB4OTEsIDB4MDEsIDB4NDQsIDB4MzYsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsCisweDAwLCAweDk1LCAweDEyLCAweDZDLCAweDBBLCAweDEwLCAweDE5LCAweDQyLCAweDI3LCAweDAwLCAweDlELCAweDIwLCAweDQ0LAorMHgwNiwgMHhGMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgwMSwgMHg5QiwgMHgwMSwgMHg0NCwgMHgwNiwgMHhCMCwgMHgyOSwgMHg0NCwKKzB4MjMsIDB4NDAsIDB4OTMsIDB4MEUsIDB4NUMsIDB4MUUsIDB4RDAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDIwLCAweDkxLCAweDAwLCAweDU0LCAweDA2LCAweEQyLAorMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg2NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNSwgMHgwMCwKKzB4OEQsIDB4MDEsIDB4NzQsIDB4MDIsIDB4NTAsIDB4ODksIDB4NjQsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzUsIDB4MTIsCisweEQyLCAweDA5LCAweDAwLCAweDI3LCAweDgwLCAweDkxLCAweDAwLCAweDQ1LCAweDEyLCAweDUwLCAweDg5LCAweDQxLCAweDI3LAorMHgwMCwgMHg5OSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMiwgMHgwOSwgMHg0NCwgMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjIsIDB4MjQsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MTIsIDB4RDAsIDB4NDgsCisweDUwLCAweDIwLCAweDAxLCAweDgxLCAweDg0LCAweDA0LCAweDAyLCAweEQ4LCAweDA4LCAweDQwLCAweDIzLCAweDAxLCAweDg5LAorMHgwNCwgMHgzNCwgMHgxMywgMHgwMCwgMHg0OCwgMHg2MCwgMHgyMywgMHgyMCwgMHg4RCwgMHgwNCwgMHgxNCwgMHgwMiwgMHg1MCwKKzB4QzgsIDB4NDAsIDB4MjMsIDB4MDEsIDB4ODksIDB4MDAsIDB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjcsIDB4MDAsCisweDgxLCAweDA0LCAweDM0LCAweDEyLCAweEQwLCAweDQ4LCAweDQ4LCAweDQzLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwgMHg4NiwgMHgwMiwgMHg1MywgMHgwQSwgMHgxQywgMHgyOCwgMHhGMCwgMHgwNSwgMHg1MCwKKzB4MDQsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NkMsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzQsIDB4ODcsIDB4MDIsIDB4MUQsIDB4MEEsCisweDdDLCAweDI4LCAweDUwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFELCAweDBBLCAweDdDLCAweDgwLCAweEMyLCAweDYxLAorMHg0MCwgMHgwNywgMHgwNSwgMHgxMywgMHgwMCwgMHg0QywgMHgwMCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxQiwKKzB4OEEsIDB4MzgsIDB4MjgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE5LCAweEI4LCAweDJGLCAweDAwLCAweDlGLCAweDAwLCAweEZDLCAweDIyLCAweEYyLCAweDhBLCAweEQwLCAweDJGLAorMHgwMiwgMHhCRiwgMHgwOCwgMHhGQywgMHg2MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyRiwgMHgwMiwgMHg5NywgMHgwOCwgMHhFQywKKzB4MjIsIDB4RjIsIDB4OEIsIDB4QzAsIDB4MkYsIDB4MDAsIDB4OUIsIDB4MDgsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MjksIDB4Q0EsCisweDI3LCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEIwLCAweDg5LCAweEMyLCAweDJCLCAweDAwLCAweEE3LCAweDA4LAorMHhEQywgMHgyMiwgMHhGMCwgMHg4OSwgMHhDMCwgMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTksIDB4QTAsIDB4MjcsIDB4MDAsIDB4QkYsIDB4MDgsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDAsCisweEJGLCAweDA0LCAweEZDLCAweDUyLCAweEIwLCAweDBCLCAweEMwLCAweDI3LCAweDQwLCAweEJCLCAweDAwLCAweEM4LCAweDIyLAorMHgzNCwgMHg0QiwgMHhDMCwgMHgyNCwgMHgwMCwgMHhCRiwgMHgwQywgMHhERCwgMHgwMiwgMHhCMCwgMHgxOSwgMHhDMCwgMHg2RiwKKzB4MDAsIDB4QjMsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4NUIsIDB4QzAsIDB4MjAsIDB4MDAsIDB4QjMsIDB4MDAsIDB4Q0MsCisweDIyLCAweDMwLCAweDRCLCAweEMwLCAweDY3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLAorMHgwOCwgMHgwNywgMHgwMSwgMHgxRCwgMHgwNCwgMHgzNiwgMHhDOSwgMHgxMCwgMHgwNSwgMHhFMiwgMHgwNCwgMHgwMiwgMHgxRCwKKzB4MDAsIDB4NzQsIDB4MTAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4MDAsIDB4NTQsIDB4MjAsIDB4MTgsCisweDAxLCAweEUwLCAweDA2LCAweDgwLCAweDBELCAweDBDLCAweDQ0LCAweDAwLCAweDUwLCAweDExLCAweDQwLCAweDA3LCAweDAyLAorMHgxMSwgMHgwMCwgMHg3NCwgMHgwMCwgMHhEMCwgMHhBMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgxMCwgMHg0NCwgMHgyMCwKKzB4MTAsIDB4MDEsIDB4NDAsIDB4NzMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4QTAsCisweDIzLCAweDA1LCAweDhELCAweDA0LCAweDM0LCAweEIyLCAweDEwLCAweDg4LCAweDQwLCAweDIwLCAweDAwLCAweDhELCAweDA4LAorMHgzNCwgMHg1MiwgMHhEMCwgMHgwOCwgMHg0MiwgMHgyMywgMHgwMCwgMHg4NSwgMHgwMCwgMHgwNCwgMHgwMiwgMHg1NCwgMHg4OCwKKzB4NDIsIDB4MjIsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MTQsIDB4MDIsIDB4MTAsIDB4NjgsIDB4NDEsIDB4MjMsIDB4MDAsIDB4ODEsCisweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDI2LCAweDEwLCAweDg1LCAweDQ4LCAweDA0LCAweDA3LCAweDE0LAorMHg4OCwgMHg0MCwgMHg0QiwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDYsIDB4MTQsIDB4MDksIDB4NDAsIDB4MjYsIDB4MDQsIDB4OUQsIDB4MDEsIDB4NzQsCisweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDg5LCAweDAwLCAweDU0LCAweDUyLCAweDEwLCAweDA5LCAweDQwLAorMHgyNiwgMHgwMSwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwMiwgMHg1MiwgMHgwOSwgMHg0MCwgMHgyNywgMHg0MCwgMHg5MSwgMHgwOCwKKzB4NzQsIDB4MTIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NjYsIDB4NDAsIDB4OTUsIDB4MDQsIDB4MDQsIDB4MDYsIDB4MTAsIDB4MDksCisweDQwLCAweDYzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDI3LCAweDAwLAorMHg5RiwgMHgwMCwgMHg3NCwgMHgwRSwgMHgzMCwgMHgyOSwgMHg1MCwgMHhFNCwgMHgwMCwgMHg5RiwgMHgwMSwgMHg3QywgMHg0NiwKKzB4RjAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4NEMsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDEsIDB4MjYsCisweDgwLCAweDlELCAweDAwLCAweDVDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDkyLCAweDAzLCAweDdDLAorMHgwNiwgMHhGMiwgMHgwOSwgMHhEMCwgMHgyMiwgMHgwMCwgMHg5NywgMHgwNywgMHg0RCwgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwKKzB4MTcsIDB4QTAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4NjUsIDB4MDIsIDB4OUYsCisweDEwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI1LCAweDA1LCAweDlGLCAweDAwLCAweDdDLCAweDRFLCAweEYwLAorMHgwOSwgMHhDMCwgMHg2NywgMHgwMiwgMHg5NywgMHgwMCwgMHg3QywgMHgwNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg2NywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MDksIDB4ODAsIDB4MjMsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsCisweEYwLCAweDA4LCAweEMwLCAweDI1LCAweDAwLCAweDlCLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMyLCAweDVCLAorMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4N0MsIDB4MTgsIDB4OTQsIDB4MzEsIDB4NTAsIDB4MDYsIDB4NDAsIDB4MTMsIDB4MDAsIDB4N0MsIDB4MjAsIDB4NzAsIDB4MDEsCisweEMwLCAweDA3LCAweDAwLCAweDFELCAweDQ4LCAweDc4LCAweDQ4LCAweDMyLCAweDIxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLAorMHgwMCwgMHg0QywgMHg0MCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxQiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4NDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDMsIDB4MDIsIDB4NEMsIDB4MDQsIDB4MzAsIDB4MDEsIDB4QzAsIDB4NTAsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDE0LCAweDAwLCAweDdELCAweDA0LCAweEY0LAorMHgwMSwgMHgzMCwgMHg0NiwgMHg0MCwgMHg1QywgMHgwMCwgMHg1MSwgMHgxMSwgMHhGNCwgMHgwOSwgMHg3MCwgMHg1NSwgMHg0MCwKKzB4MTcsIDB4MDAsIDB4N0QsIDB4MDAsIDB4RjQsIDB4MDksIDB4MTAsIDB4MTQsIDB4NDAsIDB4MTcsIDB4MDAsIDB4NUQsIDB4MDAsCisweDg0LCAweDQxLCAweDcwLCAweDA1LCAweDQwLCAweDFGLCAweDAxLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDI3LAorMHg0MCwgMHgxNywgMHgwMCwgMHg3MiwgMHgwMCwgMHhDNCwgMHgwMSwgMHgxNCwgMHgwNSwgMHhDMSwgMHg1MiwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDMsIDB4NzQsIDB4MDMsCisweDEwLCAweDFDLCAweDYwLCAweEIwLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDBCLCAweDU4LCAweDBDLCAweDQwLCAweDM3LAorMHgwMCwgMHg4RCwgMHgwMSwgMHg3NCwgMHgwOSwgMHgxMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhERCwgMHgwMSwgMHgxNCwKKzB4OEYsIDB4RDAsIDB4MEMsIDB4NDAsIDB4RjMsIDB4MDEsIDB4ODksIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MjQsIDB4NDAsCisweDMzLCAweDgwLCAweDQ5LCAweDBELCAweDA0LCAweDAyLCAweDEyLCAweDE4LCAweDAwLCAweDUwLCAweDAwLCAweDBBLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4MCwgMHgzOCwgMHgwMSwgMHhBOSwgMHgwMCwgMHhCNCwgMHgxOCwgMHgxMCwKKzB4MDIsIDB4NDAsIDB4NzAsIDB4MDQsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDEsIDB4NTAsIDB4MEUsIDB4NDAsIDB4M0EsIDB4MDEsCisweDI5LCAweDAwLCAweEE0LCAweDAwLCAweDE0LCAweDBBLCAweDQxLCAweDNCLCAweDAwLCAweEVELCAweDAyLCAweDg0LCAweDAzLAorMHg0MCwgMHg0RSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhBRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwNiwgMHg0MSwgMHgzRiwKKzB4MDAsIDB4NjEsIDB4MDAsIDB4ODQsIDB4MDIsIDB4MTAsIDB4MTgsIDB4NDAsIDB4MTYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweDc4LCAweDAxLCAweEFELCAweDAxLCAweEJDLCAweDBFLCAweDMwLCAweDE0LAorMHhEMCwgMHg3OCwgMHgwMCwgMHhFMywgMHg0MSwgMHhCRSwgMHgwNywgMHg3MCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMSwgMHg2RCwKKzB4MDEsIDB4M0MsIDB4MDUsIDB4MzAsIDB4MUEsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RUYsIDB4MDEsIDB4OUQsIDB4MDcsIDB4RDAsCisweDVFLCAweEMyLCAweDdCLCAweDAwLCAweEFCLCAweDAxLCAweEI0LCAweDA2LCAweEYwLCAweDE2LCAweEMwLCAweDdCLCAweDAwLAorMHhGOSwgMHgwMSwgMHg4RCwgMHgwNywgMHgzMCwgMHgxQSwgMHhDNCwgMHg1NCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4QjUsIDB4MDAsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzAsCisweDE3LCAweDAwLCAweERGLCAweDAwLCAweDdFLCAweDAzLCAweEMwLCAweDBELCAweEMwLCAweDc3LCAweDAwLCAweDVGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwOSwgMHg4MCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMiwgMHg3QywgMHgwMywgMHg3MCwgMHg4RCwKKzB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MzcsIDB4NDAsIDB4REYsCisweDAwLCAweDNDLCAweDAwLCAweEY0LCAweDA5LCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHhBMCwgMHhGRiwgMHgwNCwgMHhCMywgMHgwMSwgMHhGQywgMHgyMywgMHgzOCwgMHgwMywgMHhDMCwgMHg2QywKKzB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUYsIDB4NDAsIDB4N0YsIDB4MDYsIDB4RjMsIDB4MDEsIDB4Q0MsCisweDg1LCAweDMwLCAweDFCLCAweEUwLCAweDdGLCAweDAyLCAweEFGLCAweDAzLCAweENDLCAweDA2LCAweEYwLCAweDFGLCAweEMwLAorMHg0RiwgMHgwMCwgMHhCRiwgMHgwMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxNiwgMHhDMCwgMHg3QywgMHg0MCwgMHhGQiwgMHg4MSwKKzB4RkMsIDB4MDYsIDB4MzEsIDB4MUEsIDB4QzAsIDB4MDgsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweDg4LCAweDNELCAweDAwLCAweEExLCAweDAwLCAweEI0LCAweDEzLCAweDE4LCAweDQyLCAweDAwLCAweDI4LCAweDQwLAorMHhFMSwgMHg1MCwgMHhCNCwgMHgwMSwgMHhEMCwgMHgwRSwgMHg0MCwgMHgzRiwgMHgwMCwgMHg2RiwgMHgwMCwgMHg5NCwgMHgwMiwKKzB4MTAsIDB4MEEsIDB4QzAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MjQsIDB4ODQsIDB4MDMsIDB4RDAsIDB4OEUsIDB4NDAsIDB4MUIsCisweDAwLCAweEFELCAweDAwLCAweEI0LCAweDIzLCAweEQwLCAweDA2LCAweEMwLCAweDM4LCAweDAwLCAweEUxLCAweDAwLCAweEI0LAorMHgwMiwgMHgxMCwgMHgwQSwgMHg0MCwgMHg1NSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKzB4MDAsIDB4MzksIDB4MDAsIDB4MjEsIDB4MDAsIDB4QjQsIDB4MjIsIDB4MTgsIDB4ODMsIDB4NDAsIDB4MjAsIDB4MDAsIDB4RTksCisweDA4LCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDQwLCAweDYxLCAweDAwLCAweDA0LCAweDAxLCAweDkwLAorMHgwQSwgMHg0MCwgMHgzQiwgMHgyMCwgMHhBRCwgMHg0MCwgMHhBNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgyQiwgMHgwMCwKKzB4QUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MDYsIDB4NDAsIDB4M0QsIDB4MDAsIDB4RTEsIDB4MDAsIDB4MzQsIDB4MEIsCisweDEwLCAweDBBLCAweDQwLCAweDIwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDI4LAorMHgzMywgMHgwMCwgMHgxMSwgMHgwMCwgMHgzNCwgMHgwMiwgMHgxMiwgMHgyMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHhDOSwgMHgwMCwKKzB4MzQsIDB4MjYsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MTQsIDB4MDAsIDB4OTAsIDB4MjgsCisweDQwLCAweDcxLCAweDAwLCAweENELCAweDAwLCAweDI0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELAorMHgwMiwgMHgyNCwgMHgwMiwgMHhEMCwgMHgwNCwgMHg0MCwgMHgzMCwgMHgxMCwgMHg4MSwgMHgwMiwgMHgzNCwgMHgwMywgMHgxMSwKKzB4MDgsIDB4NDAsIDB4MTksIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTgsIDB4M0QsCisweDQwLCAweDkzLCAweDAwLCAweEZDLCAweDAzLCAweDE0LCAweDIxLCAweEMwLCAweEU0LCAweDAyLCAweERCLCAweDAxLCAweDc0LAorMHgyQSwgMHhGMCwgMHgwQywgMHhDMCwgMHgzRiwgMHgwMCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMSwgMHhCNCwgMHgwOSwgMHg0MCwKKzB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NkQsIDB4MDEsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OEYsIDB4MTMsCisweDdDLCAweDAyLCAweEYwLCAweDA0LCAweEMwLCAweDM0LCAweDAwLCAweDUzLCAweDBCLCAweDdDLCAweDgyLCAweDMwLCAweDBELAorMHhDMCwgMHg1NCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MjAsIDB4RjAsIDB4MDAsIDB4RDAsIDB4RTcsIDB4MTAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4ODAsCisweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweDE3LCAweDAwLCAweDNDLCAweDQwLCAweDcwLCAweDA5LCAweEMwLCAweDM3LAorMHgwMiwgMHg5RiwgMHgwMCwgMHg1QywgMHg4MywgMHhGMiwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsIDB4NzUsIDB4MDAsIDB4NDcsIDB4ODEsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsCisweDI3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LCAweDNGLCAweDAwLCAweEJGLAorMHgwMCwgMHg4QywgMHgyMywgMHhCMCwgMHgwMywgMHhEMSwgMHgyOCwgMHgwMCwgMHhCMywgMHgwNSwgMHhGQywgMHgwMCwgMHhGMCwKKzB4MEYsIDB4QzAsIDB4MzgsIDB4MDAsIDB4NkIsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4QjAsIDB4OEIsIDB4RTEsIDB4M0YsIDB4MDAsCisweEJGLCAweDAwLCAweENDLCAweDAxLCAweEYwLCAweDBGLCAweEMwLCAweDRGLCAweDAwLCAweEJGLCAweDE0LCAweERDLCAweDBGLAorMHhGMCwgMHgwRiwgMHhDMCwgMHgzQywgMHgwMCwgMHhGMywgMHgwMCwgMHg4QywgMHgyMiwgMHgxMCwgMHg5RiwgMHhDMCwgMHgwNywKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MzYsIDB4MDAsIDB4OUQsIDB4MDEsCisweDQ0LCAweDA0LCAweDkwLCAweDExLCAweDU4LCAweDQ0LCAweDA0LCAweDkxLCAweDAwLCAweDc2LCAweDA0LCAweEQwLCAweDBELAorMHhFMCwgMHgzNiwgMHgwMCwgMHg1MSwgMHgwMCwgMHg0NCwgMHgwNCwgMHgxMCwgMHgwOSwgMHhDMCwgMHgzNiwgMHgwMCwgMHg5RCwKKzB4MDAsIDB4NkMsIDB4NDcsIDB4RDAsIDB4MEQsIDB4NDAsIDB4OTcsIDB4MDIsIDB4REQsIDB4MDEsIDB4NkMsIDB4MDcsIDB4RDAsCisweDNELCAweEMwLCAweDMyLCAweDAwLCAweEQxLCAweDAxLCAweDQ0LCAweDA0LCAweDEwLCAweDFELCAweEMyLCAweDI1LCAweDAwLAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHgzNCwgMHgxMCwgMHg5RCwgMHgwMSwgMHg0NCwKKzB4MDMsIDB4OTAsIDB4MTEsIDB4NDAsIDB4NDYsIDB4NDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MEUsIDB4RDEsIDB4MTksIDB4NDIsCisweDM0LCAweDAwLCAweEQ5LCAweDAwLCAweDQ0LCAweDA1LCAweDlBLCAweDA5LCAweDQwLCAweDM3LCAweDIwLCAweDhELCAweDA4LAorMHg0NiwgMHgwNywgMHhEMCwgMHgwRCwgMHg0MiwgMHgxNywgMHgwNCwgMHg5RCwgMHgwMCwgMHg1NCwgMHgwMiwgMHhEMCwgMHgxRCwKKzB4NDAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDEsIDB4NDAsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDMwLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDAzLAorMHg5MCwgMHgxMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMiwgMHgwOCwgMHg0MCwgMHgzMiwKKzB4MDAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NjAsIDB4MzEsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MDUsCisweDAzLCAweEQ4LCAweDBDLCAweDQwLCAweDAzLCAweDAwLCAweERELCAweDAwLCAweDA0LCAweDAyLCAweEQwLCAweDBDLCAweDQ4LAorMHgzNiwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHg0MSwgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QjAsIDB4M0UsIDB4MDAsIDB4MUYsIDB4MDAsIDB4MDUsIDB4MDMsIDB4QjAsCisweDAxLCAweEMwLCAweDA2LCAweDAwLCAweEQzLCAweDAwLCAweDc0LCAweDAyLCAweEYwLCAweDA5LCAweDQwLCAweDM0LCAweDAwLAorMHg0QiwgMHgwMCwgMHg0QywgMHgwMCwgMHhCMCwgMHgwOSwgMHg0NCwgMHgzNywgMHgwMCwgMHhCRiwgMHgwMCwgMHg0NCwgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NTQsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsCisweDAwLCAweEQzLCAweDAwLCAweDRELCAweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDA3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgzRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3OCwgMHgwMiwKKzB4QzAsIDB4MEQsIDB4MDAsIDB4RkYsIDB4NDAsIDB4RjYsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4N0YsCisweDAwLCAweEZELCAweDAwLCAweEYwLCAweDBCLCAweEM4LCAweDNFLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgxRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwgMHhDMCwgMHgzQiwgMHgwMCwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4QjAsIDB4MEIsIDB4QzAsIDB4MTUsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAyLCAweEYzLCAweDAxLCAweEZDLCAweDI3LCAweEYwLCAweDFGLCAweEMwLAorMHg3RiwgMHgwMCwgMHhGMywgMHgwMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwOSwKKzB4Q0MsIDB4MDcsIDB4RjAsIDB4M0YsIDB4QzAsIDB4N0MsIDB4MDIsIDB4RkYsIDB4MjEsIDB4Q0MsIDB4MDcsIDB4MzAsIDB4OUYsCisweEMwLCAweDc4LCAweDAwLCAweEYzLCAweDAxLCAweEZDLCAweDIyLCAweEYwLCAweDNGLCAweEMwLCAweDVFLCAweDEwLCAweEJCLAorMHgwMSwgMHhFQywgMHg4NCwgMHgzOCwgMHgwQiwgMHhDMCwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MTEsIDB4MDEsIDB4NzQsIDB4MTAsIDB4RDEsIDB4MDEsIDB4NDAsIDB4NDcsCisweDAwLCAweDExLCAweDA0LCAweDc0LCAweDA0LCAweEQwLCAweDExLCAweDQwLCAweDQ3LCAweDAwLCAweDFELCAweDA0LCAweDQ0LAorMHg4NCwgMHhEMCwgMHgwMSwgMHg0OCwgMHgwNCwgMHgwMSwgMHgxRCwgMHgwMSwgMHg0NCwgMHgwNCwgMHgxMiwgMHg0MSwgMHg0MCwKKzB4NDQsIDB4NDAsIDB4MTEsIDB4MDEsIDB4NzQsIDB4MzgsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NTUsIDB4MDAsIDB4RDEsIDB4MDEsCisweDU0LCAweDAzLCAweEIwLCAweDAxLCAweDQwLCAweDBELCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMSwgMHhBMCwgMHgzMywgMHgxMSwgMHhDMSwgMHgwMCwgMHgzNCwgMHg4MywgMHhEMCwgMHg0QywgMHg0MSwgMHgzNywgMHgwMCwKKzB4QzEsIDB4MTAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4REQsIDB4MDAsIDB4MDQsIDB4MDMsCisweEQwLCAweDRELCAweDQwLCAweDMwLCAweDAxLCAweEQ1LCAweEEwLCAweDY0LCAweDgzLCAweDEwLCAweDRDLCAweDQwLCAweDM1LAorMHgwMCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgxMCwgMHhEMCwgMHg0QywgMHg0MCwgMHgzMCwgMHg2MCwgMHhEOSwgMHg0MCwgMHgyNCwKKzB4MDEsIDB4MTAsIDB4MDgsIDB4NDQsIDB4NEMsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEE4LCAweDA1LCAweDQwLCAweDExLCAweDAwLCAweDc0LCAweDAwLCAweEQyLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDExLAorMHgwMCwgMHg3NCwgMHgwMCwgMHhEMSwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwKKzB4MDEsIDB4NDgsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NjQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MjAsCisweDE5LCAweDAwLCAweDc0LCAweDBDLCAweEQwLCAweDFDLCAweDQwLCAweDc1LCAweDAwLCAweEQxLCAweDAxLCAweDU0LCAweDBCLAorMHgxNSwgMHgxOSwgMHg0MSwgMHgwRCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMCwKKzB4MzcsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzMsIDB4MDAsIDB4RDMsIDB4MDAsCisweDdDLCAweDAzLCAweEQwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweENGLCAweDAwLCAweDRDLCAweDAzLCAweEYwLCAweDBELAorMHhEMCwgMHgzNCwgMHgwMCwgMHhENywgMHgwMCwgMHg2QywgMHgwMywgMHgzMCwgMHgwRCwgMHhEMCwgMHgzNCwgMHgwMCwgMHhEQiwKKzB4MDAsIDB4N0MsIDB4MEUsIDB4RTAsIDB4MUQsIDB4QzAsIDB4QzAsIDB4MDQsIDB4Q0IsIDB4MDEsIDB4NkMsIDB4MDQsIDB4MTAsCisweDE5LCAweEMwLCAweDIwLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDg4LCAweDBELAorMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHg0MCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywKKzB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzQsCisweDBGLCAweDAwLCAweDNGLCAweDAwLCAweERDLCAweDAwLCAweEYxLCAweDAzLCAweEM4LCAweDBGLCAweDAwLCAweDM3LCAweDQwLAorMHg3QywgMHg0MiwgMHhGMCwgMHgwNywgMHhDMiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhFQywgMHhBNCwgMHhGMCwgMHgwMCwKKzB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4NzUsIDB4MDEsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweDMwLCAweDBELCAweEQwLCAweDc0LCAweDAwLCAweEQzLCAweDAwLCAweDRELCAweDAzLAorMHhGMCwgMHgwRCwgMHhDOCwgMHgzNywgMHg0MCwgMHhEMywgMHgwMCwgMHg3QywgMHgwNywgMHgzMCwgMHg4RCwgMHhDMSwgMHgzNywKKzB4MTQsIDB4REYsIDB4MDEsIDB4NEMsIDB4MjMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NzYsIDB4MDQsIDB4RDMsIDB4NDAsIDB4NkMsCisweDI4LCAweDMwLCAweDA5LCAweEMwLCAweDM3LCAweDAxLCAweEQzLCAweDAwLCAweDdDLCAweEM4LCAweDIwLCAweDI5LCAweEM2LAorMHgyOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgwNCwgMHgwMCwgMHgxRCwKKzB4MEYsIDB4NzQsIDB4MTAsIDB4MTAsIDB4MTEsIDB4NDIsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MEEsIDB4NDQsIDB4MDAsIDB4RDAsCisweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDExLCAweDEzLCAweDc0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweEM3LCAweDEwLAorMHgwRCwgMHgwMCwgMHgzNCwgMHgwNCwgMHhEMCwgMHgzMSwgMHg0MCwgMHg4MywgMHgwMCwgMHgxMSwgMHhBNSwgMHg3NCwgMHgwOCwKKzB4MTAsIDB4MDUsIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MTEsIDB4NzQsIDB4MEUsIDB4QjAsIDB4MDksIDB4NDAsIDB4NEMsCisweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDIwLCAweEI0LCAweDAwLCAweENELCAweDAzLAorMHgzNCwgMHg0MywgMHgxMCwgMHg2QywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMSwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywKKzB4NDAsIDB4NzMsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MkMsIDB4NDQsIDB4MzMsIDB4MDAsIDB4Q0QsCisweDAwLCAweDM0LCAweDA3LCAweEQwLCAweDdELCAweDQwLCAweDMzLCAweDgwLCAweEMxLCAweDgxLCAweDM0LCAweDBFLCAweEQwLAorMHgwQywgMHg0MCwgMHhCMywgMHgwMCwgMHhDMSwgMHgxMSwgMHg2NCwgMHgwMiwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwQywgMHgwMCwKKzB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDgsIDB4MDAsIDB4MkQsIDB4MDEsIDB4RjQsCisweDA0LCAweDEwLCAweDEzLCAweDQ4LCAweDRDLCAweDAwLCAweDIxLCAweDAxLCAweDg0LCAweDA0LCAweEQwLCAweDEyLCAweDQwLAorMHg0QiwgMHgwNCwgMHgyMSwgMHgwMywgMHhGNCwgMHgwNCwgMHgxMCwgMHgxMiwgMHg0MCwgMHg0QiwgMHgxNCwgMHgyRCwgMHgwMSwKKzB4QjQsIDB4MDQsIDB4RDAsIDB4MTIsIDB4NDAsIDB4NEYsIDB4NDAsIDB4MjEsIDB4MDEsIDB4QjQsIDB4MDUsIDB4RDAsIDB4MUUsCisweDQwLCAweDdGLCAweDAwLCAweDYxLCAweDAxLCAweEI0LCAweEE3LCAweDkwLCAweDEyLCAweDQwLCAweDNDLCAweDIwLCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxOCwgMHgzMCwgMHg5MiwgMHhDRiwgMHgwMCwgMHgzQywgMHgwMywKKzB4MzAsIDB4MEMsIDB4QzEsIDB4MzAsIDB4MDAsIDB4RDMsIDB4MTAsIDB4MEMsIDB4MjMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MzMsCisweDAwLCAweEMzLCAweDAwLCAweDFDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDMzLCAweDAwLCAweENGLCAweDAwLCAweDFDLAorMHgwMywgMHhGMCwgMHgwQywgMHhDMSwgMHgzMywgMHgyMCwgMHhDMSwgMHgwMCwgMHgzRSwgMHgyMywgMHhGNCwgMHgwQywgMHhDMCwKKzB4MzMsIDB4ODAsIDB4QzMsIDB4MDgsIDB4N0MsIDB4NjMsIDB4MzAsIDB4ODAsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDM4LCAweDBELCAweDAwLCAweDNGLCAweDAwLCAweEJDLCAweDAwLCAweEYwLAorMHgwMiwgMHhDMCwgMHgwQiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHg4MywgMHhDMCwgMHgwMywgMHgwMCwKKzB4MUYsIDB4NDAsIDB4QkMsIDB4MjAsIDB4RjIsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsCisweEYwLCAweDgxLCAweEMwLCAweDA3LCAweDAyLCAweDFGLCAweDQxLCAweEZDLCAweEEzLCAweDIwLCAweDhGLCAweEM4LCAweDNCLAorMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywgMHgyMywgMHhGMCwgMHgwNywgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsCisweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDFELCAweEMwLCAweDM0LCAweDAwLCAweERGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgxRCwgMHhEMCwgMHg3NCwgMHg0MCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MUQsIDB4RDAsIDB4MzAsIDB4MDAsIDB4QzMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4ODAsCisweERGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDA5LCAweEMwLCAweDQzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgzMiwgMHg4OCwgMHgwOSwgMHgwMCwgMHgyRCwgMHgwMCwgMHhCNCwgMHgwMCwgMHhEMCwgMHgwMiwgMHg0MCwKKzB4MEIsIDB4MjAsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDAsIDB4RDAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MkQsIDB4MDAsCisweEI0LCAweDAwLCAweEQwLCAweDAzLCAweDQwLCAweDBDLCAweDAwLCAweDIxLCAweDAwLCAweEI0LCAweDAwLCAweEQwLCAweDAzLAorMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHg4MywgMHhEMCwgMHgwNiwgMHg0MCwgMHgzQiwgMHgyMCwgMHg2RCwKKzB4NDAsIDB4RjQsIDB4MDEsIDB4MTAsIDB4MDIsIDB4NDAsIDB4NEYsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLAorMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRiwgMHg0MCwgMHg3QSwgMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwKKzB4ODcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4N0EsIDB4MDAsIDB4RTEsIDB4MDEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsCisweDc4LCAweDAwLCAweEYxLCAweDAxLCAweDg0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDIwLCAweEVELCAweDUxLAorMHhCNCwgMHg4NywgMHgxMCwgMHgxRSwgMHg0MSwgMHgxMywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MzYsIDB4MjgsIDB4MDMsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MzQsIDB4MDAsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsCisweDBELCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweDAwLCAweDQwLCAweDAyLCAweDEwLCAweDFELCAweDIwLCAweDM0LCAweDAwLAorMHhEMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwMCwKKzB4MTAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4OUIsIDB4RDAsIDB4MDQsIDB4NDIsIDB4MzMsIDB4MDAsIDB4NEQsIDB4MDEsIDB4MzQsCisweDAzLCAweDExLCAweDJDLCAweDQxLCAweDVCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LAorMHhBMCwgMHgxNSwgMHgwMCwgMHg0RiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDNCwgMHgxMywgMHgwMCwgMHg1RiwKKzB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4RDAsIDB4MTYsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NzQsIDB4MDEsIDB4RjAsCisweDA1LCAweEMyLCAweDE2LCAweDAwLCAweDUxLCAweDAwLCAweDNDLCAweDAxLCAweEYwLCAweDA1LCAweEM0LCAweDE0LCAweDQwLAorMHg1MywgMHgwMCwgMHhDQywgMHgwOSwgMHhEMSwgMHg4NywgMHg0MCwgMHgxRiwgMHgwMCwgMHg3RCwgMHgwMSwgMHhCQywgMHgwNSwKKzB4MTQsIDB4MjcsIDB4QzAsIDB4NUYsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsCisweDBELCAweDA4LCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYyLCAweDAzLCAweEM0LCAweDBGLCAweDAwLCAweDNGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRCwgMHgyMCwgMHgzRiwgMHg4MCwgMHhGQywgMHgwMCwgMHhCMCwgMHgwMywKKzB4QzAsIDB4MEQsIDB4MDAsIDB4M0YsIDB4ODAsIDB4RkMsIDB4MDAsIDB4RjIsIDB4MDMsIDB4QzQsIDB4MEYsIDB4MDAsIDB4M0YsCisweDAwLCAweDY1LCAweDIwLCAweEYwLCAweDgxLCAweEMwLCAweDA3LCAweDAyLCAweDFGLCAweDAwLCAweDdDLCAweDM4LCAweEYwLAorMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwKKzB4MDIsIDB4OUYsIDB4MDAsIDB4NkMsIDB4MEUsIDB4RjAsIDB4MTksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDUsIDB4N0MsCisweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDY3LCAweDAyLCAweDlGLCAweDA4LCAweDZDLCAweDgyLCAweEYwLCAweDQ5LCAweEMwLAorMHg2NywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgxOSwgMHhDOCwgMHgyNywgMHgwMCwgMHg5MywgMHgwNSwKKzB4MEMsIDB4MDIsIDB4MzIsIDB4MDksIDB4QzIsIDB4MjcsIDB4MDIsIDB4OUQsIDB4MDQsIDB4NUMsIDB4MDIsIDB4MzQsIDB4MDksCisweEMwLCAweDQzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweEU2LCAweDAwLAorMHg5RCwgMHgwMiwgMHg0NCwgMHgwRSwgMHhEOCwgMHgyOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5QiwgMHg0MywgMHgzNCwgMHgwMiwKKzB4MTAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDgsIDB4OUYsIDB4MDIsIDB4NDQsIDB4MDIsIDB4RTAsIDB4MjksIDB4NDAsIDB4QTcsCisweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEIwLCAweDI5LCAweDQwLCAweDIzLCAweDEwLCAweDhCLCAweDAxLCAweDQ0LAorMHgxNiwgMHgxMCwgMHgwOSwgMHg0OCwgMHhBNywgMHgwNCwgMHg4RCwgMHgwMCwgMHg2QywgMHg0RSwgMHgxMCwgMHgwOSwgMHg0OCwKKzB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ODAsIDB4MjQsIDB4MDAsIDB4QkQsCisweDUwLCAweEU2LCAweDAyLCAweEQwLCAweDhCLCAweDQxLCAweDZGLCAweDA4LCAweEI1LCAweDQwLCAweEY0LCAweDAyLCAweDEwLAorMHgwQiwgMHg0MCwgMHgyRiwgMHgwMCwgMHhCRCwgMHgxMCwgMHhDNCwgMHgwNiwgMHhDMCwgMHgwQiwgMHg0MCwgMHgyRiwgMHgwMSwKKzB4QkQsIDB4MDgsIDB4RjQsIDB4MDYsIDB4MTAsIDB4OEIsIDB4NDAsIDB4MkYsIDB4MDAsIDB4QjEsIDB4MDAsIDB4NDUsIDB4MjIsCisweDE4LCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweERDLCAweDAwLCAweDY0LCAweDA2LCAweDEwLCAweDA5LCAweDQwLCAweDczLAorMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyOCwgMHg2OCwgMHgwMCwgMHhBRCwgMHgwMCwKKzB4ODYsIDB4ODYsIDB4RDAsIDB4MEEsIDB4NDAsIDB4MkIsIDB4ODAsIDB4QTEsIDB4MDEsIDB4RjQsIDB4MDIsIDB4MTAsIDB4MEEsCisweDQwLCAweDJCLCAweDAwLCAweEE1LCAweDAwLCAweDg0LCAweDAyLCAweDUwLCAweDFBLCAweDQwLCAweDZCLCAweDAwLCAweEFELAorMHgwMCwgMHhCNCwgMHgwMiwgMHg5MCwgMHgxQSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhCOSwgMHgwMCwgMHgwNCwgMHgxMiwgMHgxNCwKKzB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4NTMsIDB4QTAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDg2LCAweDAyLCAweDFGLCAweDAwLCAweDZDLAorMHgyOCwgMHhEMCwgMHhBMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxNSwgMHg0QSwgMHg3QywgMHgwMCwgMHgzNCwgMHgwMSwgMHhDMCwKKzB4MDcsIDB4MDAsIDB4MUQsIDB4MEEsIDB4NEQsIDB4MDAsIDB4RDAsIDB4QTEsIDB4QzAsIDB4ODcsIDB4MDIsIDB4MUYsIDB4MDAsCisweDdDLCAweDAwLCAweDMwLCAweEExLCAweDQwLCAweDA3LCAweDAwLCAweDMzLCAweDAwLCAweDRDLCAweDI4LCAweDMwLCAweEExLAorMHhDMCwgMHgwNywgMHg4MCwgMHgxRiwgMHgwMCwgMHg3QywgMHgyOCwgMHgzOSwgMHhBMSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTgsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4ODIsCisweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQ4LCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYxLCAweDA4LCAweEMwLCAweDI3LAorMHgwOCwgMHg5RiwgMHg0MCwgMHg1QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjIsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4RkMsIDB4QTIsIDB4RjAsIDB4MEIsIDB4QzAsCisweDJGLCAweDAwLCAweEJGLCAweDIwLCAweEZDLCAweDAyLCAweEYwLCAweDhGLCAweEMwLCAweDY3LCAweDIwLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBMCwgMHgyRiwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgwMiwgMHgzMCwKKzB4MEIsIDB4QzIsIDB4MkMsIDB4MDAsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MkYsIDB4MjgsCisweEJGLCAweDAwLCAweERDLCAweDAyLCAweDMwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEJGLCAweDAwLCAweERDLCAweDAyLAorMHhGMCwgMHgwQiwgMHg4MCwgMHgyRiwgMHgxMCwgMHhCRiwgMHgwMCwgMHhEQywgMHg1MiwgMHgzMCwgMHg4OCwgMHhDMiwgMHgyOSwKKzB4MDAsIDB4QjMsIDB4MDAsIDB4REMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDA3LCAweDAxLCAweDExLCAweDAwLCAweDc0LCAweDQwLCAweDEyLCAweDAxLAorMHg0OSwgMHgwNCwgMHgwMCwgMHgxRCwgMHgxNCwgMHg3NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0OCwgMHgwNywgMHgyMCwgMHgxNywKKzB4MTAsIDB4NzQsIDB4MDAsIDB4NTAsIDB4NDEsIDB4NDEsIDB4MDcsIDB4MDEsIDB4MUQsIDB4ODAsIDB4NzQsIDB4MDAsIDB4RDAsCisweDAxLCAweDQ5LCAweDA3LCAweDAwLCAweDFELCAweDAwLCAweDc0LCAweDEwLCAweDEwLCAweDQxLCAweDQ0LCAweDA3LCAweDAwLAorMHgxMSwgMHgwMCwgMHg1QywgMHg4MSwgMHhEMiwgMHg0MSwgMHg0NSwgMHg3MywgMHg2MCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MjEsIDB4MDUsIDB4ODEsIDB4NjAsIDB4MTQsIDB4MTIsIDB4MTQsIDB4MDgsIDB4NDAsCisweDIwLCAweDAwLCAweDhELCAweDA0LCAweDM0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDMzLCAweDAwLCAweDhELCAweDAwLAorMHgxNCwgMHgwMywgMHgxMCwgMHg0OCwgMHg0MCwgMHgzMywgMHg4NSwgMHhDRCwgMHgwMCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwOCwKKzB4NDAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MTQsIDB4NTIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODksCisweDAwLCAweDE0LCAweDAyLCAweEQ5LCAweDQ4LCAweDQwLCAweDRCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg1MCwgMHgyNCwKKzB4MTAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTUsIDB4MDAsIDB4NzQsCisweDAyLCAweDUxLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDBELCAweDQwLAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwNiwgMHhEMCwgMHg4OSwgMHg0MCwgMHhFNywgMHgwMCwgMHg5OSwgMHgwMSwKKzB4NTAsIDB4MTIsIDB4RDAsIDB4MDksIDB4NjAsIDB4NjMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDA1LCAweDIwLCAweDI1LCAweDAwLCAweDkzLCAweDgwLCAweDVDLCAweDAyLCAweDMxLCAweDA5LCAweEMyLCAweDI0LCAweDAwLAorMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhFMCwgMHgyNywgMHgwMCwgMHg5RiwgMHg0MCwgMHg1QywgMHgwMiwKKzB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NUMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsCisweDAwLCAweDlGLCAweDgwLCAweDVDLCAweDEyLCAweEI0LCAweDA5LCAweEMwLCAweEUxLCAweDQwLCAweDlCLCAweDAxLCAweDU4LAorMHgwNiwgMHhGMCwgMHgwOSwgMHhDNCwgMHgxNywgMHhBMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKzB4MDgsIDB4MjUsIDB4NDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjMsIDB4MDksIDB4NDAsIDB4MjcsIDB4MTAsIDB4OUYsCisweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweDgwLCAweDI3LCAweDAwLCAweDk2LCAweDAwLCAweDcwLCAweDAyLCAweDcwLAorMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMiwgMHgyNywgMHgwNCwKKzB4OUYsIDB4QTAsIDB4N0MsIDB4MDIsIDB4MjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTYsIDB4MDAsIDB4NUMsIDB4NDIsCisweEYxLCAweDQ5LCAweEMwLCAweDRCLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LAorMHgwNSwgMHgwNiwgMHgxRiwgMHgwMSwgMHg2QywgMHgxMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4NEMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsCisweEMzLCAweDA0LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDA4LCAweDEzLAorMHgwMCwgMHg0QywgMHgwMCwgMHhCMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwOCwgMHgxNywgMHgwMCwgMHg2QywgMHgyOCwgMHhGMCwKKzB4MjEsIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NUMsCisweDAwLCAweDdELCAweDExLCAweEM0LCAweDBELCAweDcyLCAweDU3LCAweDQwLCAweDE0LCAweDA0LCAweDdGLCAweDQxLCAweDQ0LAorMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxNywgMHgwMCwgMHg3RCwgMHgyMCwgMHgzNCwgMHgwMSwgMHg3MiwgMHgwNywgMHhDOSwKKzB4MUUsIDB4MDIsIDB4NTEsIDB4MDAsIDB4NzQsIDB4MDEsIDB4NzAsIDB4RDcsIDB4MDAsIDB4OUYsIDB4MDQsIDB4NTEsIDB4MDEsCisweEM0LCAweDE1LCAweDAwLCAweDA1LCAweDQwLCAweDFDLCAweDAwLCAweDcxLCAweDA1LCAweEU0LCAweDBELCAweEQwLCAweDA1LAorMHg0MCwgMHg1MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHhGNiwgMHgwMCwKKzB4NEQsIDB4MjEsIDB4NjQsIDB4MkYsIDB4NTAsIDB4NEQsIDB4NDAsIDB4MjAsIDB4MjAsIDB4Q0QsIDB4MDQsIDB4MDQsIDB4MDMsCisweEQwLCAweDBDLCAweDQwLCAweDIzLCAweDAwLCAweENELCAweDBELCAweDM0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweEIwLAorMHgwMCwgMHg4OSwgMHgwMCwgMHgzNCwgMHgwMiwgMHg1MCwgMHgyQywgMHg0MCwgMHhGMywgMHgwMCwgMHg4MSwgMHg4OSwgMHg0NCwKKzB4MTMsIDB4OTEsIDB4MEMsIDB4NDAsIDB4MDEsIDB4MDAsIDB4ODUsIDB4MDEsIDB4MjQsIDB4MEYsIDB4RDAsIDB4MEMsIDB4NDIsCisweDUzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDM4LCAweDAwLCAweEVELAorMHgwMSwgMHg4NiwgMHgwMSwgMHg1MCwgMHgwRSwgMHg1MCwgMHgzOCwgMHgwMCwgMHhGNSwgMHgxMSwgMHg4NCwgMHgwMywgMHhEMCwKKzB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MUYsIDB4NDAsIDB4NUEsIDB4NDAsCisweEU5LCAweDAwLCAweEI0LCAweDAzLCAweDUwLCAweDBFLCAweDQwLCAweDZCLCAweDQwLCAweEUxLCAweDAxLCAweEM2LCAweDAzLAorMHgxMCwgMHg1RiwgMHg0MCwgMHgyQywgMHgwOCwgMHg2MSwgMHgwMCwgMHhBNCwgMHgwMywgMHhEMiwgMHg0RSwgMHg2MCwgMHgwNywKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NzgsIDB4MDAsIDB4RUYsIDB4MDEsCisweEFDLCAweDA3LCAweDcwLCAweDFGLCAweEMwLCAweDc4LCAweDIwLCAweEVELCAweDAxLCAweDg1LCAweDA3LCAweEYwLCAweDFFLAorMHhDNiwgMHg3QiwgMHgwMCwgMHhFRCwgMHgwMSwgMHhCQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg3QywgMHgwMCwgMHhFQiwKKzB4MDEsIDB4QkMsIDB4MDcsIDB4NzAsIDB4MUUsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RTMsIDB4MDEsIDB4Q0MsIDB4MDUsIDB4QjAsCisweDlFLCAweEMwLCAweDc5LCAweDAwLCAweDY1LCAweDQxLCAweEFDLCAweDA0LCAweEYwLCAweDVFLCAweEMwLCAweDQ3LCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgzNSwgMHgwMCwgMHhDRiwgMHgwMCwgMHg3QywKKzB4MDEsIDB4NzEsIDB4MEQsIDB4QzQsIDB4MzcsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4NDAsCisweDM3LCAweDAwLCAweERGLCAweDQwLCAweDdDLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDE3LCAweDEwLCAweEQ3LCAweDgwLAorMHg3QywgMHg4MywgMHg3MCwgMHgwRCwgMHhDMCwgMHgyMywgMHgwMCwgMHhDRiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHg4RCwKKzB4QzAsIDB4MzcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4OEQsIDB4QzAsIDB4NDMsIDB4NjAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDIwLCAweDVELCAweDAwLCAweEZGLCAweDAxLCAweENDLCAweDEzLAorMHhGMCwgMHg1RiwgMHhDMCwgMHg3QiwgMHg2MiwgMHg3MywgMHg0MSwgMHhCQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwgMHg3RiwKKzB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MjcsIDB4RjAsIDB4MTcsIDB4QzAsIDB4NzgsIDB4MDAsIDB4RkIsIDB4MDksIDB4RUMsCisweDI3LCAweDMwLCAweDFFLCAweEMwLCAweDc4LCAweDAwLCAweEYzLCAweDAwLCAweEZDLCAweDA3LCAweEYwLCAweDFGLCAweEMwLAorMHg0QywgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHgwOCwgMHgwMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDAsIDB4MTksIDB4MTYsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDEsIDB4RDAsCisweDA2LCAweDQwLCAweDNCLCAweDA2LCAweDY1LCAweDAwLCAweEI0LCAweDAzLCAweDEwLCAweDhFLCAweDQwLCAweDNCLCAweDAyLAorMHg2MSwgMHgwOCwgMHhCNCwgMHgwMywgMHhEMiwgMHg0NywgMHg0MCwgMHgzOCwgMHgwMCwgMHhFMSwgMHgwOCwgMHg4NCwgMHgwMywKKzB4MTAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDQsIDB4RTUsIDB4MDgsIDB4QjQsIDB4MjksIDB4RDAsIDB4MEYsIDB4NDAsIDB4MjksCisweDAyLCAweDZELCAweDAwLCAweEI0LCAweDIyLCAweEQwLCAweDBFLCAweEMwLCAweDU2LCAweDYwLCAweDA0LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgwMCwgMHhGRCwgMHgwMCwgMHg4NCwgMHgyMywgMHhEMCwgMHg0RSwKKzB4NDgsIDB4M0IsIDB4MTIsIDB4NjAsIDB4MDAsIDB4RjQsIDB4MDMsIDB4MTAsIDB4MkUsIDB4NDAsIDB4M0YsIDB4MDAsIDB4RTEsCisweDAwLCAweEI0LCAweDAzLCAweEMxLCAweDA2LCAweDYwLCAweDlDLCAweDAwLCAweEYxLCAweDgwLCAweEM2LCAweDAzLCAweDEwLAorMHg4NywgMHg0MCwgMHhCOCwgMHgwMCwgMHhFMSwgMHgwOCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzOCwgMHgwMCwKKzB4NkQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NjAsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDI4LCAweDAxLCAweDAwLCAweENELCAweDEyLCAweDQ0LCAweDJDLCAweEQwLCAweEE4LCAweDQwLAorMHhCMywgMHgwNCwgMHgxMSwgMHgwMywgMHgzNCwgMHgwQiwgMHgxMCwgMHgwQywgMHg0MCwgMHhCMywgMHgwNCwgMHg5MSwgMHgwMywKKzB4MzQsIDB4MEIsIDB4OTAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4QzEsIDB4MDIsIDB4MDQsIDB4MEIsIDB4MTAsIDB4MDgsCisweDQxLCAweDMwLCAweDQwLCAweEM1LCAweDAxLCAweDc0LCAweDQwLCAweEQwLCAweDFDLCAweDQwLCAweDMxLCAweDEwLCAweDRELAorMHgwQSwgMHgzMCwgMHgwMiwgMHhDMSwgMHgyRCwgMHg0OCwgMHgxQSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4QTAsIDB4NjEsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4NEMsIDB4MjIsIDB4RjAsIDB4MjEsIDB4QzAsIDB4RjcsCisweDAwLCAweDkzLCAweDExLCAweDdDLCAweDBCLCAweDM0LCAweDVDLCAweEMwLCAweDMzLCAweDAwLCAweDEzLCAweDAxLCAweDdDLAorMHgyMywgMHhGMCwgMHg3OSwgMHhEMCwgMHg2NCwgMHgwMSwgMHhDMywgMHgwOCwgMHg0QywgMHgyMywgMHgzMCwgMHg1MSwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4NUYsIDB4QzAsIDB4MTAsIDB4MjAsIDB4Q0YsIDB4MjMsCisweDdDLCAweDA4LCAweEMwLCAweEJGLCAweDgwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNSwgMHgwOCwgMHgyNywgMHgyMCwgMHhERiwgMHgwMSwgMHg3QywgMHgwMiwgMHhGMSwgMHgyMSwgMHhDOCwgMHgzNywgMHgwMCwKKzB4OUYsIDB4MDIsIDB4N0MsIDB4MjMsIDB4RjEsIDB4MEQsIDB4QzAsIDB4NzcsIDB4MDAsIDB4MUYsIDB4MUEsIDB4N0MsIDB4MDcsCisweEYwLCAweDI5LCAweEM4LCAweDg3LCAweDAwLCAweERGLCAweDAxLCAweDdDLCAweDA3LCAweEYwLCAweDIxLCAweEMwLCAweDg3LAorMHgwMCwgMHhERiwgMHgwOCwgMHg3QywgMHgyMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMiwgMHg1RiwgMHgwNCwgMHg3QywKKzB4M0EsIDB4RjEsIDB4OEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsCisweDA4LCAweDBGLCAweDAwLCAweEYzLCAweDAwLCAweENDLCAweDAwLCAweDMwLCAweDAzLCAweEMxLCAweDdDLCAweDA4LCAweDNGLAorMHg5MCwgMHhDQywgMHg0MywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzQywgMHgwMCwgMHgzMywgMHgwMCwgMHhDQywgMHgwNywgMHgzMCwKKzB4MDMsIDB4QzEsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MDMsIDB4QzAsIDB4M0YsIDB4MDAsCisweEZGLCAweDEyLCAweEZDLCAweDAwLCAweDMwLCAweDBGLCAweEMxLCAweDdGLCAweDAxLCAweDczLCAweDAxLCAweENDLCAweDAwLAorMHhGMSwgMHgwRCwgMHhDMCwgMHgxNCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwKKzB4RTYsIDB4MDksIDB4RDAsIDB4MDEsIDB4NDQsIDB4MDQsIDB4MTIsIDB4MzAsIDB4NDIsIDB4MzQsIDB4MDgsIDB4OUQsIDB4MDMsCisweDRDLCAweDAzLCAweEQwLCAweDBELCAweDYwLCAweDM0LCAweDAwLCAweDExLCAweDI1LCAweDA0LCAweDA3LCAweDEyLCAweDM5LAorMHg0MCwgMHhDNywgMHgwMCwgMHhERCwgMHg4MCwgMHg2QywgMHgwMywgMHhEMCwgMHgxMSwgMHg0MCwgMHg4NywgMHgwMCwgMHhERCwKKzB4MDEsIDB4NzAsIDB4MEMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4NTEsIDB4MDgsIDB4N0QsIDB4NEMsIDB4RDIsCisweDBELCAweDRDLCAweDE0LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDY2LAorMHgwMCwgMHhEMSwgMHgwMSwgMHg0NCwgMHgwNiwgMHg5OCwgMHgxOSwgMHg0MCwgMHgzNiwgMHgwMSwgMHg5RCwgMHgxMSwgMHg2NCwKKzB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NzQsIDB4MDAsIDB4OTAsIDB4MDEsIDB4NDQsIDB4MjMsIDB4MTAsIDB4MTksIDB4NDEsCisweDY3LCAweDA0LCAweERELCAweDA0LCAweDU0LCAweEEzLCAweEQxLCAweDE5LCAweDQwLCAweDM3LCAweDA0LCAweERELCAweDAwLAorMHg3NCwgMHgwNiwgMHgxOCwgMHgwRCwgMHg0MCwgMHgxNywgMHgwMCwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwNCwgMHhEMCwgMHgwRCwKKzB4NTgsIDB4MDQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MjQsIDB4MDAsCisweDkxLCAweDAxLCAweDA0LCAweDAyLCAweDk0LCAweDAxLCAweDUwLCAweDMyLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDAzLAorMHhEMCwgMHgwRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg0NSwgMHgwMywgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsCisweDAyLCAweDEwLCAweDBDLCAweDQwLCAweDM3LCAweDAwLCAweDUxLCAweDAwLCAweDI0LCAweDAyLCAweDkwLCAweDBDLCAweDQwLAorMHg0MCwgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwNiwgMHgwMCwgMHhEMywKKzB4MDAsIDB4NEMsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzQsIDB4MzYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NkQsIDB4MDMsIDB4RjAsCisweDBELCAweDQwLCAweDM0LCAweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDAzLCAweDMwLCAweDAxLCAweEM0LCAweDI3LCAweDAwLAorMHhERiwgMHgwMCwgMHg1QywgMHgwMywgMHhGMSwgMHgwMSwgMHg0MCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMiwKKzB4MzQsIDB4MEYsIDB4QzAsIDB4MzcsIDB4MDAsIDB4NTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDQsCisweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDk4LCAweDJGLCAweDAwLCAweEFGLCAweDAwLAorMHhGNCwgMHgwMiwgMHg3MCwgMHgwQiwgMHhDNCwgMHgzRCwgMHgxMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwKKzB4ODAsIDB4M0IsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RUYsCisweDAwLCAweEI4LCAweDAzLCAweEYwLCAweDBCLCAweEM4LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLAorMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGOCwgMHgwRiwgMHhDMCwgMHgxNywgMHgyNCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4MEIsIDB4ODAsIDB4MzMsIDB4MDAsIDB4RkMsCisweDEwLCAweDMwLCAweDBGLCAweEMwLCAweDNDLCAweDAwLCAweEYzLCAweDAwLCAweENDLCAweDI3LCAweDMwLCAweDAzLCAweEM4LAorMHgyQywgMHgwNSwgMHhCNSwgMHgwMCwgMHhDQywgMHgwMiwgMHgzMCwgMHg4MywgMHhDMCwgMHgyRiwgMHgwMywgMHgzMywgMHgwMSwKKzB4Q0MsIDB4MDEsIDB4RjAsIDB4MUIsIDB4QzAsIDB4MkYsIDB4MDEsIDB4M0YsIDB4MDEsIDB4Q0MsIDB4MjYsIDB4QjAsIDB4MEIsCisweEMwLCAweDdDLCAweDAwLCAweEJGLCAweDE0LCAweEZDLCAweDI3LCAweDMwLCAweDRGLCAweEMxLCAweDBDLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNywgMHgxMCwgMHgxMSwgMHgwQSwgMHg3NCwgMHgyOCwKKzB4MTIsIDB4NEYsIDB4NDAsIDB4N0MsIDB4MTAsIDB4RDUsIDB4MDEsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDEsIDB4NTAsIDB4RTQsCisweDA4LCAweDkxLCAweDA4LCAweDU0LCAweDAyLCAweDEwLCAweDBCLCAweDQwLCAweEFGLCAweDAwLCAweDkxLCAweDAwLCAweDQ0LAorMHgyQywgMHhEMCwgMHgxOSwgMHg0MCwgMHhFNywgMHgwMCwgMHgxRCwgMHgwMSwgMHg0NCwgMHgwMiwgMHgxNCwgMHgwOCwgMHg0MCwKKzB4NzQsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NzQsIDB4MDMsIDB4MTAsIDB4M0QsIDB4NDAsIDB4MDQsIDB4NjAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDIzLCAweDAwLCAweDAxLCAweDIwLCAweDM0LCAweDAwLCAweDUwLAorMHgwQywgMHg1MSwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwMCwgMHg0MCwgMHgyMCwgMHgwMCwKKzB4ODUsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTQsIDB4NDgsIDB4NDAsIDB4QjcsIDB4MjAsIDB4OTEsIDB4MTQsIDB4MTYsIDB4ODEsCisweDkwLCAweDBDLCAweDQyLCAweEIzLCAweDAwLCAweDFELCAweDAwLCAweDY0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDMwLAorMHgwMCwgMHgwOSwgMHgwMSwgMHgzNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHg0NCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MjUsIDB4MDAsIDB4MTEsIDB4MDEsIDB4NzQsIDB4NDQsIDB4MTAsIDB4OEQsCisweDQwLCAweDM0LCAweDAwLCAweEQ1LCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDAxLCAweDQwLCAweDI0LCAweDAxLCAweEQxLAorMHgyMCwgMHg1NCwgMHg0NiwgMHgxMCwgMHgxOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHgwMSwgMHg1NCwgMHg0MCwgMHhEMCwKKzB4MTUsIDB4NDAsIDB4NzcsIDB4MDAsIDB4MUQsIDB4MTEsIDB4NjQsIDB4MTIsIDB4MTAsIDB4MDksIDB4NDEsIDB4NzQsIDB4MDAsCisweERELCAweDQ0LCAweDc0LCAweDIzLCAweDEwLCAweDBELCAweDQwLCAweDFDLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0NywgMHg0MiwgMHgxMSwgMHg4MSwgMHg3QywgMHgwQywgMHgzNCwgMHgxRCwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NDksIDB4MDMsIDB4MzAsIDB4MTUsIDB4RDAsIDB4MjQsIDB4MDAsIDB4OTcsIDB4ODAsCisweDRDLCAweDA2LCAweDMwLCAweDM5LCAweEMwLCAweDYzLCAweDQwLCAweDgzLCAweDAxLCAweDVELCAweDAxLCAweEYwLCAweDE5LAorMHhDMCwgMHg3NywgMHgwMCwgMHgwRiwgMHgwMSwgMHgyRCwgMHgwNywgMHhCMCwgMHgyOSwgMHhEMCwgMHgzNCwgMHgwMCwgMHg5RiwKKzB4MDEsIDB4N0UsIDB4MDYsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MDAsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA3LCAweDg4LCAweDZELCAweDAwLCAweDNGLCAweDAwLCAweEJDLCAweDAwLCAweEUyLCAweDFFLCAweEUxLCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGOCwgMHgwMywgMHhGMCwgMHg0RSwgMHhFMCwgMHg2QiwgMHgwMCwgMHg4RiwgMHgyMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4NjcsIDB4MjIsIDB4QkYsIDB4MTAsIDB4RUMsIDB4MjUsIDB4RjAsIDB4MEIsIDB4QzAsCisweDNGLCAweDA4LCAweDNGLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDQ3LCAweEMwLCAweDNGLCAweDAwLCAweEJGLCAweDgxLAorMHhGRSwgMHgwNiwgMHhGNCwgMHgwQywgMHhDMCwgMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDgsIDB4MjEsIDB4MDAsIDB4MTMsIDB4ODAsIDB4NkMsIDB4MTgsIDB4MzIsIDB4MEQsIDB4QzAsIDB4NzMsIDB4MDAsCisweEQzLCAweDAwLCAweDdDLCAweDAzLCAweDMwLCAweDA1LCAweEMwLCAweDI0LCAweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDNBLAorMHgzNCwgMHgyRCwgMHhDMCwgMHgzQywgMHgwMCwgMHg5MywgMHgwMCwgMHg3QywgMHgwMSwgMHgzMCwgMHgwRCwgMHhDMCwgMHg3NywKKzB4MDAsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MjMsIDB4MzAsIDB4MjQsIDB4RDAsIDB4MzQsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEMsCisweDAyLCAweEYwLCAweDBELCAweEUwLCAweDBBLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLAorMHhBMCwgMHg2QywgMHgwMSwgMHg5MSwgMHgwMSwgMHg0NCwgMHgwQywgMHgxMCwgMHgxRCwgMHhFNCwgMHgzRiwgMHgwMCwgMHhFMSwKKzB4MDAsIDB4NzQsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDgsIDB4MjQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NkMsIDB4MEEsIDB4MTIsCisweDBELCAweDQ4LCAweDI0LCAweDMwLCAweDlCLCAweDAwLCAweDcwLCAweDE1LCAweDExLCAweDA1LCAweDQwLCAweDM0LCAweDAwLAorMHgxRCwgMHgwMCwgMHg3NCwgMHgwNywgMHgxMCwgMHhBNSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwgMHg4NCwgMHg0NCwgMHgwMiwKKzB4RDAsIDB4MEYsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MjAsCisweDQwLCAweDAwLCAweDAxLCAweDAwLCAweDI0LCAweDg0LCAweDEwLCAweDA4LCAweDQwLCAweDMzLCAweDQwLCAweEMxLCAweDgwLAorMHg3NCwgMHgwNywgMHg5MCwgMHgyMCwgMHg0MSwgMHgyMCwgMHg0MCwgMHg4MSwgMHgwMCwgMHg0NCwgMHgwMywgMHg5MSwgMHgwOCwKKzB4NDAsIDB4MjEsIDB4MjAsIDB4ODEsIDB4MDIsIDB4MzAsIDB4NDEsIDB4MTYsIDB4MEMsIDB4NTIsIDB4MzMsIDB4MDAsIDB4NEQsCisweDAwLCAweDM0LCAweDA2LCAweDEwLCAweDA4LCAweDQwLCAweDMwLCAweDAwLCAweDhELCAweDAxLCAweDQ0LCAweDAyLCAweEQwLAorMHgwQywgMHg0MCwgMHgwQywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg2QywKKzB4MDAsIDB4MDEsIDB4MTEsIDB4ODQsIDB4NjQsIDB4MTAsIDB4MUUsIDB4NDAsIDB4NzksIDB4NDAsIDB4RTEsIDB4NjEsIDB4QjQsCisweDRFLCAweDkwLCAweDEyLCAweDUwLCAweDc4LCAweDAwLCAweEExLCAweDExLCAweEE0LCAweDI2LCAweDkwLCAweDBBLCAweDQwLAorMHg2OSwgMHgwMCwgMHhFOSwgMHgwMSwgMHhCNCwgMHgwNiwgMHgxMCwgMHgxRiwgMHg0MCwgMHg1QSwgMHgwMCwgMHg2RCwgMHgwMSwKKzB4QjQsIDB4MDYsIDB4MTAsIDB4MUEsIDB4NDAsIDB4NzgsIDB4MjAsIDB4OEQsIDB4MDEsIDB4ODQsIDB4MDYsIDB4RDAsIDB4MUUsCisweDQwLCAweDE5LCAweDIwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDE4LCAweDIwLCAweDAwLAorMHgwMywgMHgyMCwgMHg2RSwgMHgyMCwgMHgzNCwgMHgwOCwgMHg0MSwgMHgzMywgMHgwMCwgMHhDMywgMHgwMCwgMHgzQywgMHgwMiwKKzB4OTAsIDB4MDEsIDB4QzEsIDB4MjAsIDB4MDAsIDB4ODMsIDB4MDAsIDB4MEMsIDB4MjMsIDB4QjQsIDB4ODksIDB4QzAsIDB4MzEsCisweDA5LCAweDgzLCAweDAwLCAweDNDLCAweDAwLCAweDMwLCAweDBDLCAweEMwLCAweDMzLCAweDAwLCAweDBGLCAweDAwLCAweDdDLAorMHgwMiwgMHgzNCwgMHgwOCwgMHhDMCwgMHgzMCwgMHgwMCwgMHhDRiwgMHgwOCwgMHgwRCwgMHgwMiwgMHhGMiwgMHgwQywgMHhEMCwKKzB4NDgsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsIDB4MkQsIDB4NDAsIDB4M0YsCisweDAwLCAweEY2LCAweDIwLCAweEY1LCAweDBGLCAweEMwLCAweDNCLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweDUwLAorMHgwMywgMHhDMCwgMHgzQiwgMHgwMiwgMHhGRiwgMHgwOCwgMHhGQywgMHhBMSwgMHg3MCwgMHhDQiwgMHhFMCwgMHhCRSwgMHgwMCwKKzB4QkYsIDB4MDAsIDB4QkMsIDB4MDIsIDB4RjAsIDB4MDYsIDB4QzAsIDB4M0QsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDIsCisweEYwLCAweDhCLCAweEMwLCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDBGLCAweEMwLCAweDBBLAorMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgwNywgMHgwMCwgMHgxMywgMHgwMCwKKzB4Q0MsIDB4MDAsIDB4MzAsIDB4NTksIDB4QzgsIDB4MzAsIDB4MTMsIDB4RjcsIDB4MDAsIDB4NzQsIDB4MDMsIDB4NzAsIDB4MDEsCisweEMwLCAweDI0LCAweDAwLCAweDlFLCAweDAwLCAweDRDLCAweDAzLCAweDMwLCAweDJELCAweEMxLCAweEFDLCAweDAwLCAweDkzLAorMHgwMCwgMHg3QywgMHgwMSwgMHhDMCwgMHgxRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHg1QiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwKKzB4MDUsIDB4RDAsIDB4MzAsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MDcsIDB4MzAsIDB4MEQsIDB4QzAsIDB4NTMsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweEE5LCAweDAwLCAweDIxLCAweEMwLCAweDg0LAorMHgwMiwgMHgxMSwgMHgwRSwgMHhDMSwgMHgzOCwgMHgwNCwgMHhFMSwgMHgwMSwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRiwgMHg0MCwKKzB4MzgsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QkMsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDIsIDB4MjAsIDB4MDAsIDB4RTEsIDB4QzAsCisweEI0LCAweDAzLCAweEMwLCAweDBFLCAweEMwLCAweDM4LCAweDAwLCAweDZELCAweDAwLCAweEI0LCAweDAyLCAweDUwLCAweDBDLAorMHg0MCwgMHgzOCwgMHgwMCwgMHhBNSwgMHgwMCwgMHhCNCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHg0QiwgMHg2MCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NjksIDB4MDEsIDB4MjEsIDB4MDEsIDB4ODQsIDB4MDcsCisweDEwLCAweDE4LCAweDAwLCAweDc4LCAweDAxLCAweEU1LCAweDAxLCAweEI0LCAweDQ3LCAweEQxLCAweDEyLCAweDUwLCAweDZBLAorMHgwMCwgMHg4RCwgMHgwMSwgMHgwNCwgMHgwNywgMHgxMCwgMHgxQywgMHg0OCwgMHg3OCwgMHgwMCwgMHhBMCwgMHgwMSwgMHhCNCwKKzB4MDUsIDB4RDAsIDB4MUYsIDB4NTAsIDB4NzgsIDB4MDAsIDB4MkQsIDB4MDEsIDB4QjQsIDB4MDYsIDB4MTgsIDB4MUUsIDB4NDAsCisweDY4LCAweDAwLCAweEU5LCAweDAxLCAweEY0LCAweDA3LCAweDEwLCAweDFFLCAweDQwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHgzMywgMHgwMCwgMHhEMSwgMHg1MywgMHgwNCwgMHgwMywgMHgxMCwKKzB4MEMsIDB4NTAsIDB4MzIsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzIsIDB4MDAsCisweENELCAweDQwLCAweDM0LCAweDJCLCAweDEwLCAweDVDLCAweDYwLCAweDMwLCAweDAwLCAweDgxLCAweDAwLCAweDM0LCAweDAzLAorMHhEMCwgMHgwNCwgMHg0MCwgMHhGMiwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgyNiwgMHg1MCwgMHg3QywgMHg0MiwgMHgzMCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDcsIDB4MTQsIDB4MEMsIDB4NDAsIDB4NUIsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEEwLCAweDFELCAweDAwLCAweDczLCAweDI3LCAweENDLCAweDBELCAweDM0LCAweDA1LAorMHhDOCwgMHgxMCwgMHgwMCwgMHg1NywgMHgyMCwgMHg3QywgMHgwNSwgMHhGMCwgMHgyNywgMHhDMSwgMHgxNiwgMHgwMCwgMHg1RiwKKzB4MDAsIDB4Q0MsIDB4MDUsIDB4MzQsIDB4NTcsIDB4RDAsIDB4MTQsIDB4NDAsIDB4NzMsIDB4MDAsIDB4RkMsIDB4MDEsIDB4RjAsCisweDA3LCAweEMwLCAweDFDLCAweDAxLCAweDZCLCAweDAwLCAweDdDLCAweDAxLCAweDMwLCAweDc3LCAweEQwLCAweDE0LCAweDAwLAorMHg2QiwgMHgwMCwgMHg3QywgMHgwMSwgMHgzMCwgMHgwNSwgMHhDMCwgMHg1RiwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4MDUsIDB4NDAsIDB4MUYsIDB4MDAsIDB4N0QsIDB4MjAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDA1LCAweDAwLCAweDFGLCAweDAyLCAweDdDLCAweDAwLCAweEYyLCAweDAxLCAweEM1LCAweDA1LCAweDAwLCAweDFGLCAweDAwLAorMHg3QywgMHg0MCwgMHhGMCwgMHgwMCwgMHhDMCwgMHgwMywgMHg0MCwgMHgxRiwgMHgwNCwgMHg3QywgMHgyMCwgMHhGMCwgMHgwMSwKKzB4QzAsIDB4MDUsIDB4MzAsIDB4MUYsIDB4MDEsIDB4N0MsIDB4MDAsIDB4RjQsIDB4MjEsIDB4QzQsIDB4MDcsIDB4MDAsIDB4MTcsCisweDAxLCAweDdDLCAweDIwLCAweEYwLCAweDAxLCAweEMwLCAweDRCLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5NywgMHgwMCwgMHg0QywgMHg0QSwgMHgzMCwgMHg1OSwgMHhDMCwgMHhFNywKKzB4MDAsIDB4OEIsIDB4MDEsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MTksIDB4ODAsIDB4MjQsIDB4MTAsIDB4OEYsIDB4ODksIDB4NEMsCisweDAyLCAweDM4LCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDkzLCAweDA1LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLAorMHgyMywgMHgwNCwgMHg5MywgMHgwMSwgMHg2RCwgMHgwMiwgMHgzMCwgMHg1OSwgMHg0MCwgMHhBNCwgMHgwMCwgMHg5MywgMHgwMCwKKzB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDIwLCAweDI0LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDBBLCAweDEwLCAweDE5LCAweDQwLCAweDI3LCAweDAwLAorMHg5MSwgMHgwMywgMHg0NCwgMHgwMiwgMHhEMCwgMHgxOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMSwgMHg2QywgMHgwMiwKKzB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDMsIDB4NzQsIDB4MDYsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsCisweDIwLCAweDlCLCAweDAwLCAweDJDLCAweDEyLCAweDUwLCAweDc5LCAweDUwLCAweDYwLCAweDAwLCAweDlCLCAweDAwLCAweDQ0LAorMHgwMiwgMHhEMiwgMHgwOSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKzB4QTAsIDB4MjAsIDB4NDAsIDB4OTUsIDB4MjAsIDB4MDQsIDB4MEEsIDB4NTYsIDB4MjksIDB4NDAsIDB4MjcsIDB4NDAsIDB4OTksCisweEE4LCAweDY0LCAweDA2LCAweEQ4LCAweDg5LCAweDYwLCAweDI1LCAweEEwLCAweDlELCAweDAwLCAweDA0LCAweDAyLCAweDE0LAorMHgwRCwgMHg0MCwgMHgyNiwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwNiwgMHhEOCwgMHgwOSwgMHg0MCwgMHg3NywgMHgwMCwKKzB4OTEsIDB4MDgsIDB4NjYsIDB4OTIsIDB4MTIsIDB4MDgsIDB4NDIsIDB4MjUsIDB4QTAsIDB4OTksIDB4MDAsIDB4NDQsIDB4MDIsCisweEQwLCAweDA5LCAweDQwLCAweDczLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgyMCwgMHgwMSwgMHg4MSwgMHgwNCwgMHgwNCwgMHgxMiwgMHg1MCwgMHg0OCwgMHg0MCwgMHgyMywgMHgwMSwgMHg4MSwgMHgwNCwKKzB4MDAsIDB4MDYsIDB4RDAsIDB4NDgsIDB4NTAsIDB4MjEsIDB4MDEsIDB4OEQsIDB4MDQsIDB4MjUsIDB4MTMsIDB4MTAsIDB4NDgsCisweDQwLCAweDIyLCAweDExLCAweEMxLCAweDAwLCAweDM2LCAweDEyLCAweEQwLCAweDA4LCAweDQyLCAweDIzLCAweDIxLCAweDk5LAorMHgwMCwgMHg2NCwgMHgwMiwgMHg1MCwgMHg0OCwgMHg0MCwgMHgyNSwgMHgwMCwgMHg4OSwgMHgwNCwgMHgwNSwgMHgwMiwgMHhEMCwKKzB4NDgsIDB4NDEsIDB4NTMsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjgsIDB4ODMsCisweDAyLCAweDA3LCAweDBBLCAweDBDLCAweDI4LCAweDcyLCAweEExLCAweDQwLCAweDA3LCAweDAwLCAweDVCLCAweDAwLCAweDZDLAorMHgyOCwgMHhGMCwgMHhBMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwQSwgMHg0QywgMHgyOCwgMHgxMCwgMHhBMSwgMHg1MCwKKzB4ODYsIDB4MDIsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MDEsIDB4RDEsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4MDAsCisweDZELCAweDI4LCAweDMwLCAweEExLCAweEMwLCAweDA1LCAweDAwLCAweDFCLCAweDAwLCAweDRDLCAweDA4LCAweEYwLCAweDAxLAorMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHgzRiwgMHgwMiwKKzB4QkYsIDB4MDgsIDB4RkQsIDB4MjIsIDB4QjAsIDB4OEIsIDB4QzAsIDB4MjcsIDB4NDIsIDB4OUYsIDB4MDgsIDB4RkMsIDB4MDIsCisweEYwLCAweDhCLCAweEM4LCAweDJFLCAweDEyLCAweEJGLCAweDQ4LCAweEZDLCAweDIyLCAweEYwLCAweDhCLCAweEMwLCAweDJELAorMHg0MiwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMiwgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHgwMiwgMHhCRiwgMHgwMCwgMHhCRCwKKzB4MDIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MkUsIDB4MDAsIDB4QkYsIDB4MDgsIDB4QkMsIDB4NDIsIDB4RjAsIDB4MDksIDB4QzAsCisweDY3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEEwLCAweDNGLCAweDA1LCAweEIzLAorMHgwQywgMHhDQywgMHgwMiwgMHgzMCwgMHgwQiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhBMywgMHgwNCwgMHg4QywgMHgwMiwgMHhGMCwKKzB4Q0IsIDB4QzAsIDB4MkMsIDB4MDAsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MjIsIDB4RjAsIDB4NEIsIDB4QzAsIDB4MjQsIDB4MDUsCisweEFGLCAweDA4LCAweEZDLCAweDE2LCAweEYwLCAweDA5LCAweEMwLCAweDJGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAyLAorMHhGMCwgMHhDQSwgMHhDMCwgMHgzQywgMHgwMCwgMHhGMywgMHgwMCwgMHg3QywgMHgyMiwgMHhGMCwgMHgxOSwgMHhDMCwgMHg2NywKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDcsIDB4MDEsIDB4NTEsIDB4MEMsCisweDRDLCAweDQ4LCAweDE0LCAweDAxLCAweEMxLCAweDA0LCAweDAyLCAweDExLCAweDYwLCAweDQ0LCAweDEwLCAweDcwLCAweEMwLAorMHg0MCwgMHgwNSwgMHgwMCwgMHgxMSwgMHgxMCwgMHg0NCwgMHgyMCwgMHhEMCwgMHgwNSwgMHg0MCwgMHgwNCwgMHgwMSwgMHgxRCwKKzB4MDQsIDB4NzQsIDB4MDgsIDB4QzAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDIsIDB4MUQsIDB4MDAsIDB4NzQsIDB4MTAsIDB4RDIsCisweEMxLCAweDQwLCAweDA0LCAweDAwLCAweDU1LCAweDAwLCAweDc0LCAweDA0LCAweEQwLCAweDAxLCAweDQwLCAweDczLCAweDYwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgyMSwgMHgwNSwgMHg4MSwgMHgwNCwgMHgyNCwKKzB4MzIsIDB4MTAsIDB4ODgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODEsIDB4MDgsIDB4MDQsIDB4NTIsIDB4RDIsIDB4NDgsIDB4NDAsCisweDIwLCAweDAwLCAweDgxLCAweDAwLCAweDA0LCAweDA2LCAweEQwLCAweDg4LCAweDQ0LCAweDIwLCAweDA1LCAweDhELCAweDA0LAorMHgzNCwgMHgyMiwgMHhEOCwgMHgxOCwgMHg0MCwgMHg2MywgMHgwMCwgMHg4RCwgMHgyMCwgMHgzNCwgMHg1MiwgMHhEMCwgMHg0OCwKKzB4NDAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDgsIDB4MzQsIDB4MTIsIDB4RDAsIDB4MjgsIDB4NDAsIDB4NEIsIDB4MDAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDI4LCAweDY1LCAweDU4LCAweDgxLCAweDAwLCAweDQ0LCAweDAyLAorMHgxMCwgMHgwOSwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0NSwgMHgxMiwgMHg1MCwgMHgwOCwgMHg1MCwgMHgyNSwKKzB4MDAsIDB4OTEsIDB4MDQsIDB4NDUsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MjAsIDB4OUQsIDB4MjQsIDB4NzQsCisweDgzLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDA2LCAweDc0LCAweDAyLCAweEQwLCAweDQ5LCAweDQxLAorMHgyNCwgMHgwMCwgMHg5NSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjAsIDB4MjUsIDB4MDAsIDB4OTMsIDB4ODIsIDB4NkQsIDB4MUEsIDB4MzIsCisweDA5LCAweEMwLCAweDI1LCAweDQwLCAweDkzLCAweDAwLCAweDRDLCAweDA2LCAweEYyLCAweDA5LCAweEMwLCAweDI0LCAweDAwLAorMHg5MywgMHgwMCwgMHg0QywgMHgwNiwgMHhGMCwgMHhCOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwNiwgMHg3QywgMHgwMiwKKzB4RjAsIDB4MDksIDB4QzAsIDB4RTcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4RDAsIDB4MjQsCisweDAyLCAweDkzLCAweDA5LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDE3LCAweEEwLCAweDA0LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMywgMHg3QywgMHgyNiwgMHhGMCwgMHgwOSwKKzB4QzEsIDB4MjEsIDB4MDAsIDB4OEYsIDB4MDAsIDB4N0MsIDB4NDYsIDB4NzAsIDB4MDksIDB4NDAsIDB4MjYsIDB4NDAsIDB4OUYsCisweDAxLCAweDdDLCAweDBBLCAweEYwLCAweDE4LCAweEQwLCAweDY3LCAweDAxLCAweDlGLCAweDAwLCAweDdDLCAweDEyLCAweEYwLAorMHgzOSwgMHhDMCwgMHgyNywgMHgwMSwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgxOSwgMHhEMCwgMHgyNywgMHg4MCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDg1LCAweDAwLCAweDEzLCAweDAyLCAweDRDLCAweDAwLCAweEIwLCAweDAxLCAweEMwLAorMHgwNCwgMHg0MCwgMHgxMywgMHgwNCwgMHg0QywgMHgyMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHg4MCwgMHgxRiwgMHgwMCwKKzB4NEMsIDB4MDAsIDB4MzQsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MTMsIDB4ODIsIDB4NEMsIDB4ODQsIDB4QjAsIDB4MDEsCisweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAyLCAweDdDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLAorMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTAsIDB4MDAsIDB4MTQsIDB4NDgsIDB4NTEsIDB4MDAsIDB4RDQsIDB4MDEsIDB4MzQsIDB4MDcsIDB4NDAsIDB4MTQsCisweDAwLCAweDcxLCAweDAwLCAweEM0LCAweDAxLCAweDEwLCAweDA3LCAweDUwLCAweDEwLCAweDAwLCAweDVELCAweDEwLCAweEZDLAorMHgxMSwgMHgxMiwgMHgwNSwgMHg0MCwgMHgxNCwgMHgwMCwgMHg3MSwgMHgwMiwgMHhDMCwgMHgwNSwgMHgzMCwgMHgwNSwgMHg0MCwKKzB4NTcsIDB4MDQsIDB4NUQsIDB4MDEsIDB4RjQsIDB4NDEsIDB4RDAsIDB4MDcsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NUQsIDB4MDEsCisweDc0LCAweDAxLCAweDEwLCAweDA1LCAweDQwLCAweDUzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHhBMCwgMHgzNiwgMHgwMCwgMHhDMSwgMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgyRCwgMHg0MCwgMHgzMCwgMHgwMCwKKzB4ODEsIDB4MDAsIDB4MDQsIDB4MEYsIDB4RDQsIDB4MUMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4REQsIDB4MDAsIDB4MDQsIDB4MDcsCisweDEwLCAweDFDLCAweDQwLCAweDMwLCAweDIwLCAweEMxLCAweDEyLCAweDAwLCAweDAzLCAweDBDLCAweDBDLCAweDQwLCAweDIzLAorMHgwMCwgMHhDRCwgMHgwMSwgMHgzNCwgMHgwMSwgMHg5MCwgMHgwOSwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDgwLCAweDMwLCAweDA4LCAweEMxLCAweDAwLCAweDk0LCAweDAzLCAweDEwLCAweDAyLCAweDQwLCAweDM4LCAweDAwLCAweEExLAorMHgwMiwgMHhDNCwgMHgwNywgMHhEMCwgMHgwRSwgMHg0MSwgMHgzOCwgMHgwNCwgMHhDRCwgMHgwMCwgMHhCNCwgMHgwNSwgMHgxMCwKKzB4MkMsIDB4NDAsIDB4N0EsIDB4MDAsIDB4RjEsIDB4MDEsIDB4ODQsIDB4MEYsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsCisweEVELCAweDEwLCAweEI0LCAweDAxLCAweEQwLCAweDAzLCAweDQwLCAweDI4LCAweDAwLCAweEFELCAweDAyLCAweEI0LCAweDA3LAorMHgxMCwgMHgwRSwgMHg0MCwgMHgwNywgMHgyMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOCwKKzB4NzgsIDB4NDAsIDB4RTMsIDB4MDEsIDB4Q0MsIDB4MDQsIDB4MzMsIDB4MTIsIDB4NTAsIDB4NjAsIDB4MjAsIDB4MjMsIDB4MDEsCisweDhELCAweDA3LCAweEYwLCAweDFBLCAweEMyLCAweDc4LCAweDAwLCAweEVELCAweDAxLCAweEM4LCAweDg1LCAweDMwLCAweDFFLAorMHhEMCwgMHg3QywgMHg0MSwgMHhFMywgMHgwMSwgMHg4RCwgMHgwNiwgMHgzMCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMCwgMHhFRiwKKzB4MDEsIDB4QkMsIDB4MDcsIDB4RjAsIDB4MUUsIDB4RDAsIDB4NzgsIDB4MDAsIDB4QUQsIDB4MDEsIDB4RkMsIDB4MDcsIDB4MzQsCisweDFFLCAweEMwLCAweDQ3LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweEI1LAorMHgwNSwgMHhERiwgMHgwMiwgMHg3QywgMHgwMiwgMHg3MCwgMHgwMCwgMHhDMCwgMHgzNywgMHgwMCwgMHgxQywgMHgwMCwgMHg3QywKKzB4MDMsIDB4MzAsIDB4MjksIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4ODEsIDB4RjAsIDB4MEQsIDB4QzAsCisweDM1LCAweDAyLCAweERGLCAweDAwLCAweDNELCAweDAwLCAweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLAorMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzAsIDB4NDMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjAsIDB4N0QsIDB4MDAsCisweEYzLCAweDAzLCAweENDLCAweDEzLCAweDMwLCAweDE3LCAweEMwLCAweDdDLCAweDEwLCAweEYzLCAweDAxLCAweEZDLCAweDA3LAorMHhGMCwgMHgzRiwgMHhDMCwgMHg3OCwgMHgwMCwgMHhGMywgMHgwMSwgMHhDQywgMHgwNiwgMHgzMCwgMHgxQSwgMHhDMCwgMHg3RCwKKzB4MDAsIDB4RkYsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsCisweDI3LCAweEYwLCAweDFCLCAweEQwLCAweDZDLCAweDAwLCAweEJGLCAweDAxLCAweEZDLCAweDA3LCAweEYwLCAweDFGLCAweEMwLAorMHgwQiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwgMHgzOSwgMHg0MCwgMHhGMSwKKzB4MDAsIDB4ODYsIDB4MDMsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MzgsIDB4MDIsIDB4RTEsIDB4MDQsIDB4QjQsIDB4MDAsIDB4RDAsCisweDhFLCAweDQwLCAweDM4LCAweDAwLCAweEIxLCAweDAwLCAweDg0LCAweDAxLCAweDEwLCAweDhBLCAweDQzLCAweDM4LCAweDA4LAorMHhFRCwgMHgwMiwgMHg4NCwgMHgwMiwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgyMywKKzB4RDAsIDB4ODIsIDB4NDAsIDB4MjgsIDB4MDAsIDB4RUQsIDB4MDgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NTcsCisweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEIxLCAweDAyLCAweEUxLCAweDAwLAorMHg4NCwgMHgyMCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgyMCwgMHgwMCwgMHhBOSwgMHg0MCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwOCwKKzB4NDAsIDB4MzgsIDB4MDYsIDB4QTEsIDB4MDAsIDB4ODQsIDB4NjAsIDB4MTAsIDB4MEIsIDB4NDAsIDB4MzgsIDB4MDQsIDB4RUQsCisweDAwLCAweDA0LCAweDAwLCAweDUwLCAweDJFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDIzLCAweEQ4LAorMHgwRSwgMHg0MCwgMHgzQSwgMHgwMCwgMHhBOSwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgyMywgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MzUsIDB4MDAsIDB4QzEsIDB4MEEsIDB4NDQsCisweDQyLCAweDEwLCAweDAwLCAweDQ4LCAweDMwLCAweDAwLCAweDg5LCAweDAwLCAweDM0LCAweDA3LCAweEQwLCAweEI5LCAweDQwLAorMHg3MCwgMHg0OCwgMHg5MSwgMHgwMSwgMHgwNCwgMHgwMSwgMHgxMCwgMHgyOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhERCwgMHgxMCwKKzB4MDQsIDB4MjQsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4OTAsIDB4Q0QsIDB4MDIsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MkQsCisweDQwLCAweDMyLCAweDAwLCAweENELCAweDAzLCAweDM0LCAweDgzLCAweEQyLCAweDBDLCAweDQwLCAweDVCLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgyNSwgMHgwMCwgMHhEMywgMHgwMywgMHg0RCwgMHgwQiwKKzB4MzAsIDB4MTAsIDB4QzAsIDB4MzQsIDB4NTAsIDB4OUIsIDB4MDAsIDB4N0MsIDB4NDcsIDB4RjAsIDB4MkQsIDB4RDAsIDB4NjAsCisweDAwLCAweEQzLCAweDA1LCAweDRELCAweDBFLCAweDM0LCAweDE5LCAweEQwLCAweDdDLCAweDAwLCAweERGLCAweDAxLCAweDRELAorMHgyMiwgMHg3MCwgMHgwRCwgMHhDMCwgMHhCNywgMHgwMiwgMHhDRiwgMHgwQSwgMHg3QywgMHgwMSwgMHhGMCwgMHhGNSwgMHhEMCwKKzB4NjYsIDB4MDAsIDB4OUYsIDB4MDksIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NTcsIDB4MjAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDc3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLAorMHgyMSwgMHhDMCwgMHgzNywgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHgyNywgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4NDAsIDB4RjEsIDB4MDgsIDB4QzEsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDEsIDB4N0MsIDB4MDIsCisweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDBELCAweEMwLCAweDI1LAorMHgwMiwgMHg5RiwgMHgwOCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4MkYsIDB4NDAsIDB4RjMsIDB4MTAsIDB4REMsIDB4MDQsIDB4MzAsIDB4MDMsCisweEMwLCAweEY4LCAweDAwLCAweDMzLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBCLCAweEMxLCAweEFDLCAweDQwLCAweEYzLAorMHgwMCwgMHg0QywgMHgwNCwgMHhGMCwgMHgwQiwgMHhFMCwgMHgzQywgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMCwgMHhEMCwKKzB4MEYsIDB4QzAsIDB4N0YsIDB4MDEsIDB4QjcsIDB4MDEsIDB4Q0MsIDB4MDMsIDB4RjAsIDB4M0YsIDB4QzAsIDB4RUMsIDB4MDAsCisweEJGLCAweDAzLCAweENDLCAweDAzLCAweEYwLCAweDBGLCAweDQwLCAweDE3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHgzNiwgMHgwMCwgMHg5MSwgMHgwMSwgMHg3NCwgMHgwMiwgMHgxMCwgMHg3MSwgMHg0MCwKKzB4NzQsIDB4MDAsIDB4MTEsIDB4NDAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MzEsIDB4NDEsIDB4MjQsIDB4NTAsIDB4RDEsIDB4MDgsCisweDQ0LCAweDAwLCAweEQwLCAweDk5LCAweDQwLCAweDM0LCAweDAwLCAweDlDLCAweDAzLCAweDQ0LCAweDBDLCAweEQwLCAweDBELAorMHg0OCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwOSwgMHg0NCwgMHgwNywgMHhEMCwgMHgxRCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg4RCwKKzB4MDAsIDB4NDUsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MTcsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweEEwLCAweDY2LCAweDAwLCAweEQxLCAweDA4LCAweDc0LCAweDIzLCAweDkwLCAweDExLCAweDQwLCAweDM0LAorMHg4MCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgxRCwgMHg0MCwgMHgzNCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0NCwKKzB4MTIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MzYsIDB4MDAsIDB4NUQsIDB4MDEsIDB4NDQsIDB4MDYsIDB4RDEsIDB4MEQsIDB4NDAsCisweDM3LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDA3LCAweEQwLCAweDA1LCAweDQxLCAweDI0LCAweDAwLCAweERELCAweDAwLAorMHg0NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgwNywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4OTAsIDB4MDAsIDB4NDIsIDB4MzAsIDB4QzAsCisweEMxLCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweDAwLCAweDUwLCAweDMwLCAweDAwLCAweDgxLCAweDAwLCAweDA0LCAweDAwLAorMHhEMCwgMHgwOCwgMHg0OCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEOCwgMHgwQywgMHg0MiwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4ODAsIDB4MzUsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NzAsIDB4MjAsIDB4MDAsIDB4REQsIDB4MDAsIDB4MDQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDQzLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOCwgMHgyRSwgMHgwMCwgMHhGMywgMHgwMCwgMHgxQywgMHgwMCwgMHhCMCwgMHgwMSwgMHhEMCwgMHgzNCwgMHgwMCwgMHg5MywKKzB4MDAsIDB4N0MsIDB4MDMsIDB4RjIsIDB4MEIsIDB4QzAsIDB4MzQsIDB4MDAsIDB4OTMsIDB4ODAsIDB4NEMsIDB4ODAsIDB4RjAsCisweDA5LCAweEQwLCAweDM0LCAweDAwLCAweDlGLCAweDAwLCAweDRELCAweDAwLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDIwLAorMHhENywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwQywgMHhEMCwgMHgyNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsCisweDNGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAyLCAweDcwLCAweDAzLCAweEMwLCAweDNGLCAweDAwLCAweEJGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHhCRiwgMHg0MCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwQiwKKzB4QzAsIDB4M0YsIDB4MDAsIDB4QUYsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MjAsIDB4RkYsCisweDAwLCAweENDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDOCwgMHgxNywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgyRiwKKzB4MDAsIDB4QkYsIDB4MEMsIDB4Q0MsIDB4MTIsIDB4RjAsIDB4MUYsIDB4QzAsIDB4QkUsIDB4MDksIDB4QkYsIDB4QzAsIDB4OUQsCisweDQwLCAweEIwLCAweDhGLCAweEMwLCAweDJGLCAweDAxLCAweEIzLCAweDEwLCAweERDLCAweEUyLCAweDMwLCAweDFGLCAweEMwLAorMHgzRiwgMHgwMSwgMHhGMywgMHgwMiwgMHhDQywgMHgwMiwgMHgzMywgMHgxNiwgMHhDNCwgMHgzQywgMHgwMCwgMHhFRiwgMHgwMSwKKzB4Q0MsIDB4MzMsIDB4MzAsIDB4MUYsIDB4QzAsIDB4NUEsIDB4MDAsIDB4RkIsIDB4MDEsIDB4QUMsIDB4MjcsIDB4QjAsIDB4MEIsCisweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LCAweDA3LCAweDAwLAorMHgxRCwgMHgwRSwgMHg0NCwgMHgxMiwgMHhEMCwgMHg0RCwgMHg0MCwgMHgzQywgMHgwMywgMHgxRCwgMHgwMywgMHg0NCwgMHgwRiwKKzB4MTAsIDB4MkYsIDB4NDAsIDB4MjcsIDB4MDUsIDB4RDEsIDB4MDYsIDB4NDQsIDB4MTIsIDB4MTAsIDB4MUQsIDB4NDgsIDB4QkYsCisweDAwLCAweEYxLCAweDA2LCAweDQ0LCAweDJDLCAweDEwLCAweDA1LCAweDQxLCAweEJDLCAweDAyLCAweERELCAweDAxLCAweEQ0LAorMHgwQiwgMHgxMCwgMHgxRCwgMHg0MCwgMHg3NCwgMHgwMCwgMHhEMSwgMHgwMSwgMHg0NCwgMHgwMywgMHgxMCwgMHgwMSwgMHg0MCwKKzB4MEYsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4QTMsIDB4MDUsIDB4OEQsCisweDAxLCAweDA2LCAweDYyLCAweEQwLCAweDA5LCAweDQxLCAweDMwLCAweDIwLCAweDhELCAweDA4LCAweDE1LCAweDAzLCAweDkyLAorMHhDQywgMHg0MCwgMHg0MywgMHgwMywgMHhDNSwgMHgxMCwgMHgzNCwgMHgxMCwgMHgxMiwgMHgwQywgMHg0MiwgMHhCMiwgMHgyNSwKKzB4QzEsIDB4OEMsIDB4MDQsIDB4MDQsIDB4NTAsIDB4MDEsIDB4NTAsIDB4MzAsIDB4MEMsIDB4NUQsIDB4MDAsIDB4MjQsIDB4MzMsCisweDEwLCAweDBDLCAweDQwLCAweDA2LCAweDAwLCAweEQ5LCAweEEwLCAweDY0LCAweDEyLCAweDkwLCAweDA4LCAweDQwLCAweDRGLAorMHg4MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHg2NSwgMHgwMCwgMHgxRCwgMHgwMSwKKzB4NDQsIDB4MDYsIDB4RDAsIDB4MTksIDB4NTAsIDB4MzQsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NTUsIDB4MEYsIDB4MTAsIDB4MEQsCisweDQyLCAweDY3LCAweDAwLCAweEQ1LCAweDAwLCAweDY0LCAweDBDLCAweDEwLCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweEQxLAorMHgwMCwgMHg0NCwgMHgwNCwgMHg0MCwgMHgwNSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhERCwgMHg4MCwgMHg3NCwgMHgwMywgMHgxMCwKKzB4MEQsIDB4NDAsIDB4NzQsIDB4MDAsIDB4NTksIDB4MDEsIDB4NDQsIDB4MDMsIDB4MTgsIDB4MTEsIDB4NDEsIDB4MEYsIDB4QTAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDY3LCAweDA0LCAweDFGLCAweDAxLCAweDRDLAorMHgxNCwgMHhGMCwgMHg1QywgMHhDMCwgMHgzNCwgMHgwMCwgMHg5RiwgMHgwMSwgMHg1RCwgMHgwRiwgMHhCMCwgMHgwRCwgMHhDMCwKKzB4NDcsIDB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4MDYsIDB4MzAsIDB4MEQsIDB4RTAsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MjAsCisweDRDLCAweDA2LCAweDYwLCAweDA0LCAweEMwLCAweDM0LCAweDAwLCAweDlGLCAweDAxLCAweDZFLCAweDAzLCAweDMwLCAweDBDLAorMHhDMCwgMHg3NiwgMHgwMCwgMHhEQiwgMHgwNSwgMHgyQywgMHgwMywgMHhCMCwgMHgxOSwgMHg0NCwgMHgyMywgMHgwMCwgMHgwRSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MTAsIDB4RkMsIDB4MDIsCisweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDA0LCAweDNGLCAweDQwLCAweEFDLCAweDAzLCAweEYyLCAweDBGLCAweEMwLCAweDA3LAorMHgwQywgMHhFQiwgMHgwNSwgMHgxQywgMHgwMiwgMHhGMCwgMHgwRiwgMHhDOCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHgzQywKKzB4MDAsIDB4QjIsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QkYsIDB4ODksIDB4OUMsIDB4MDMsIDB4RjAsIDB4NUYsIDB4QzgsCisweDNGLCAweDQwLCAweEY3LCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDFGLCAweDIwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHhBNSwgMHg4MCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMCwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTMsIDB4ODAsIDB4NkMsIDB4MEIsIDB4M0MsIDB4MEQsIDB4QzAsIDB4MDQsIDB4MDAsCisweEQzLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDBELCAweEMwLCAweDMyLCAweDAwLCAweERCLCAweDAwLCAweDRDLCAweDAyLAorMHgzMSwgMHgwRCwgMHhFMCwgMHgzNCwgMHgxMCwgMHg5MywgMHgwMiwgMHg0QywgMHgwMywgMHgzNCwgMHg0RCwgMHhDMCwgMHg3NCwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MDgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDI0LCAweDEwLCAweDlCLCAweDA2LCAweDQ0LCAweDAyLCAweEQwLCAweDA5LAorMHg0MCwgMHgzRiwgMHgwMCwgMHg4MSwgMHgwQiwgMHg2OCwgMHgwNywgMHhCMCwgMHgxRiwgMHhDMCwgMHhFNCwgMHgwMCwgMHhEMCwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MEQsIDB4NDgsIDB4M0YsIDB4MDAsIDB4RkIsIDB4MTAsIDB4NDQsIDB4MDIsIDB4MDAsCisweDBELCAweEMwLCAweDNGLCAweDAwLCAweDgxLCAweDgxLCAweEM0LCAweDJCLCAweDEwLCAweDJELCAweDQwLCAweDcwLCAweDAwLAorMHgwNSwgMHgwNSwgMHg2QywgMHgyRiwgMHgxMCwgMHg0OSwgMHhDMCwgMHg2RSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MDIsIDB4MDAsIDB4OTEsIDB4MDIsIDB4MjQsIDB4MDAsIDB4RDAsIDB4MDgsIDB4NjQsCisweEYzLCAweDAwLCAweDAxLCAweDAzLCAweDIwLCAweDA3LCAweDEwLCAweDVDLCAweDQ4LCAweEU0LCAweDAwLCAweEM1LCAweDAwLAorMHgzNCwgMHgwMCwgMHgxMSwgMHgwQywgMHg0MCwgMHgzMSwgMHgwMiwgMHhENSwgMHgwMSwgMHgwNCwgMHgwMiwgMHg1MCwgMHgxNCwKKzB4NDAsIDB4NzAsIDB4MDEsIDB4QzEsIDB4MDAsIDB4MjQsIDB4MjMsIDB4OTAsIDB4MkMsIDB4NDAsIDB4MTAsIDB4MDAsIDB4QzEsCisweDAxLCAweDA0LCAweDA3LCAweDUwLCAweDYwLCAweDQ0LCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHg4MCwgMHg1OCwgMHgwMCwgMHhFOSwgMHgwMSwgMHhBNCwgMHgwNSwgMHhEMCwgMHgxQSwgMHg2MCwgMHg3QiwKKzB4MDQsIDB4NjEsIDB4MDEsIDB4RTQsIDB4MDcsIDB4OTQsIDB4MUUsIDB4NDAsIDB4NzgsIDB4MDAsIDB4RTUsIDB4MDEsIDB4QjQsCisweDA3LCAweDEwLCAweDFFLCAweDAwLCAweEZCLCAweDAwLCAweEVELCAweDAzLCAweDg0LCAweDA3LCAweDU4LCAweDM3LCAweDQxLAorMHg3OSwgMHgwNCwgMHhGMSwgMHgwMCwgMHhBMCwgMHgwNywgMHg5MSwgMHgwRSwgMHg0MCwgMHg3OCwgMHgwMCwgMHhGNSwgMHgwMSwKKzB4RTQsIDB4MjcsIDB4MTgsIDB4MTIsIDB4NDgsIDB4M0UsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEyLCAweDEwLCAweDEwLCAweDAwLCAweEMxLCAweDAwLCAweDI0LCAweDAzLCAweEYwLCAweDA4LCAweEMwLCAweDM3LCAweDAwLAorMHg0MywgMHgxNCwgMHgyQywgMHg0MywgMHgxMCwgMHg4RCwgMHhDMSwgMHgxMCwgMHgwNCwgMHhDNywgMHgwMCwgMHgzNCwgMHgyMSwKKzB4MzAsIDB4MEMsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsIDB4ODgsIDB4MEMsIDB4MDEsIDB4NzAsIDB4MDAsIDB4NDAsIDB4MzQsCisweDAwLCAweEMzLCAweDE4LCAweDY0LCAweDEzLCAweEIwLCAweDhDLCAweDQwLCAweDEwLCAweDAwLCAweEMzLCAweDAwLCAweDBDLAorMHg0MiwgMHg3MCwgMHgwOSwgMHhDMCwgMHg0OCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4OTgsIDB4M0QsIDB4MjAsIDB4RjcsIDB4MDAsIDB4REMsIDB4MDMsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4NDAsIDB4RUYsCisweDAwLCAweEZDLCAweDIzLCAweEY1LCAweDBGLCAweEM0LCAweDM1LCAweDAwLCAweEZCLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwRiwgMHhDMCwgMHhCRiwgMHgwMiwgMHhGMywgMHgwMCwgMHhGQywgMHgwMSwgMHhCMCwgMHgwNywgMHhDMCwgMHgzRiwgMHgwMCwKKzB4RkYsIDB4MEMsIDB4REMsIDB4MDMsIDB4NzAsIDB4NEUsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RUYsIDB4MDAsIDB4RkUsIDB4ODMsCisweDcwLCAweDA3LCAweEM4LCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLAorMHgzNywgMHg4MCwgMHg1QiwgMHgwMCwgMHg1QywgMHgwMSwgMHgzNCwgMHgwOSwgMHhDMCwgMHhCNywgMHgwNCwgMHhDRiwgMHg4MCwKKzB4NUMsIDB4MDMsIDB4RjgsIDB4NEQsIDB4QzksIDB4MzcsIDB4MDAsIDB4REYsIDB4MDEsIDB4NEMsIDB4MDEsIDB4RjAsIDB4MEQsCisweEMwLCAweDM3LCAweDAzLCAweERGLCAweDAyLCAweDdFLCAweDAzLCAweEYwLCAweDA1LCAweEMwLCAweEI2LCAweDAyLCAweERGLAorMHgwMCwgMHg1QywgMHg1QiwgMHhGMCwgMHgxRCwgMHhDMCwgMHgzNiwgMHgwMCwgMHhDRiwgMHgyMCwgMHg0QywgMHgwMywgMHgyMiwKKzB4MDEsIDB4QzQsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODgsIDB4MUQsCisweDA4LCAweDYzLCAweDAwLCAweEI0LCAweDAxLCAweDEwLCAweDBBLCAweDQwLCAweEJCLCAweDExLCAweDZELCAweDAwLCAweDk0LAorMHgwMywgMHgzMCwgMHg2RSwgMHg0OCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwKKzB4M0IsIDB4MDEsIDB4RUQsIDB4NDgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEYsIDB4NDAsIDB4MzgsIDB4MDQsIDB4QUQsIDB4MDAsCisweEI0LCAweDBCLCAweEQwLCAweDBFLCAweDQwLCAweDM4LCAweDAwLCAweEVELCAweDgwLCAweEQ0LCAweDgzLCAweDEwLCAweDA2LAorMHhDMCwgMHg0RSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg3OSwgMHgwMCwKKzB4RTEsIDB4MDEsIDB4QjQsIDB4NDcsIDB4MTAsIDB4MUEsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MTEsIDB4RDQsIDB4NDcsCisweDUwLCAweDFFLCAweDQ4LCAweDVCLCAweDAwLCAweEVELCAweDAxLCAweEE1LCAweDA1LCAweEQwLCAweDFFLCAweDQwLCAweDdCLAorMHgwMCwgMHhFRCwgMHgwOSwgMHhCNCwgMHgwNywgMHhEMiwgMHgxRSwgMHg1NSwgMHg3OCwgMHgwMCwgMHhBRCwgMHgwMSwgMHhCNCwKKzB4MDcsIDB4RDAsIDB4MUIsIDB4NDAsIDB4N0EsIDB4MDAsIDB4RjUsIDB4MDEsIDB4ODQsIDB4MDYsIDB4MTQsIDB4MTgsIDB4NDAsCisweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDEwLCAweEMxLAorMHgwRCwgMHgzNCwgMHgwNywgMHg5MCwgMHgwMCwgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMywgMHgxNCwgMHgwQiwgMHg5MCwKKzB4MEMsIDB4NDAsIDB4RjMsIDB4MDQsIDB4Q0QsIDB4MDgsIDB4MDQsIDB4MDcsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzcsIDB4MjAsCisweENELCAweDAwLCAweDM0LCAweDI3LCAweEQwLCAweDRDLCAweDQwLCAweDMwLCAweDAwLCAweDhELCAweDA0LCAweDM0LCAweDAzLAorMHhEMCwgMHgxOCwgMHg0MCwgMHg3MCwgMHgwOCwgMHhDRCwgMHgwMSwgMHgxNCwgMHgwMywgMHgxMCwgMHhBRCwgMHg0MywgMHg1QSwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MUQsIDB4MDQsIDB4NzMsIDB4MDIsCisweEZDLCAweDAxLCAweDMwLCAweDI3LCAweEMwLCAweDE3LCAweDEwLCAweDdGLCAweDAyLCAweERELCAweEE5LCAweDc0LCAweDA1LAorMHhDMCwgMHg5RiwgMHgwMCwgMHg1RiwgMHgwMCwgMHhFQywgMHgxNSwgMHhGMCwgMHgwNSwgMHg0MCwgMHgxNywgMHg4MCwgMHg1RiwKKzB4MDAsIDB4RkMsIDB4MDksIDB4RjAsIDB4MzYsIDB4QzAsIDB4MTQsIDB4MDAsIDB4N0YsIDB4MDIsIDB4N0MsIDB4MDEsIDB4RjksCisweDE1LCAweEMyLCAweDFFLCAweDA0LCAweDY3LCAweDgxLCAweDQ0LCAweDAxLCAweDEwLCAweDI3LCAweEMwLCAweDVDLCAweDAwLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHg0NywgMHg0MCwgMHgxRiwgMHgwMCwgMHg3QywKKzB4NDAsIDB4NzAsIDB4NDEsIDB4QzAsIDB4ODMsIDB4MDAsIDB4MUYsIDB4MTIsIDB4N0MsIDB4MDAsIDB4NzQsIDB4MDEsIDB4QzAsCisweDA3LCAweDAyLCAweDFGLCAweDAwLCAweDVDLCAweDA0LCAweEYwLCAweDAxLCAweEMyLCAweDg3LCAweDAwLCAweDFGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwQSwgMHg3QywgMHgwMCwgMHhGMCwgMHg4MSwKKzB4QzAsIDB4MDcsIDB4MTAsIDB4MUYsIDB4MDgsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4NEIsIDB4MjAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDgwLCAweDkzLCAweDA1LCAweDNDLCAweDAyLAorMHgzMCwgMHgwOSwgMHhDMCwgMHg2NywgMHgwMiwgMHg4MywgMHgwMCwgMHg0QywgMHgwMiwgMHhCMCwgMHgyOCwgMHhDMCwgMHg2NCwKKzB4MDEsIDB4OUUsIDB4MDAsIDB4NzgsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4QTcsIDB4NDAsIDB4OUIsIDB4MDEsIDB4N0MsCisweDQyLCAweEYwLCAweDU5LCAweEMwLCAweDIwLCAweDAxLCAweDkzLCAweDQyLCAweDdDLCAweDgyLCAweEYwLCAweDM5LCAweEMwLAorMHgyNywgMHgwNCwgMHg5NywgMHgwOCwgMHg2QywgMHgxNiwgMHgzMCwgMHg4OSwgMHhDMCwgMHg0MCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDIsIDB4MTAsCisweDA5LCAweEMwLCAweEE3LCAweDA0LCAweDkxLCAweDg2LCAweDBDLCAweDAyLCAweEIwLCAweDA5LCAweDQwLCAweDY0LCAweDAwLAorMHg5RCwgMHgwMCwgMHg3QywgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHhFNywgMHgwMCwgMHg5MSwgMHgwMSwgMHg3NCwgMHgwMiwKKzB4RDAsIDB4NDksIDB4QzAsIDB4RTYsIDB4MDQsIDB4OTEsIDB4MjAsIDB4NzQsIDB4MEUsIDB4RDAsIDB4MjksIDB4NDAsIDB4MjMsCisweDQwLCAweDlCLCAweDQxLCAweDQ0LCAweDQ2LCAweDE0LCAweDM5LCAweDQwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwKKzB4NjAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NjUsIDB4MjIsIDB4OTQsIDB4MDksIDB4NTgsIDB4MjYsIDB4MDAsIDB4OUQsCisweDAwLCAweDM2LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDA4LCAweDc0LCAweDAyLCAweEQwLAorMHgwOSwgMHg2MCwgMHgyNCwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgyMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2NywgMHgwMCwKKzB4OTUsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTIsIDB4MjksIDB4NDAsIDB4NjAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDgxLCAweDgxLCAweDA1LCAweDM0LCAweDEyLCAweDEwLCAweDA4LCAweDQwLAorMHgyMSwgMHgwOSwgMHg4MSwgMHgwNCwgMHg0NCwgMHgxMiwgMHg5MCwgMHg1OCwgMHg0MCwgMHg2MiwgMHgwMSwgMHg4RCwgMHgwNCwKKzB4MTQsIDB4MTIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDEsIDB4QzEsIDB4MDQsIDB4MzQsIDB4MTIsIDB4RDAsIDB4MDksCisweDY4LCAweDIyLCAweDAxLCAweEMxLCAweDAwLCAweDM2LCAweDEyLCAweEQwLCAweDBDLCAweDQwLCAweDIzLCAweDA4LCAweDk5LAorMHgwMCwgMHgwNSwgMHgyMiwgMHgxMCwgMHg0OCwgMHg1MCwgMHg0MCwgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MUQsIDB4QjAsIDB4ODYsIDB4MDIsIDB4MTEsIDB4MEEsIDB4M0MsIDB4MjgsIDB4MzAsIDB4QTEsIDB4NDAsIDB4ODcsCisweDAyLCAweDEzLCAweDQwLCAweDZDLCAweDAwLCAweEI0LCAweEExLCAweEM4LCAweDg2LCAweDAyLCAweDBGLCAweDBBLCAweDc0LAorMHgyOCwgMHgzNCwgMHgwMSwgMHg4NCwgMHg5NywgMHgwMiwgMHgxQiwgMHgwQSwgMHg3QywgMHgwMCwgMHhEMCwgMHhBMSwgMHhDMCwKKzB4ODQsIDB4NDIsIDB4MTMsIDB4NDAsIDB4N0MsIDB4MjksIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTcsIDB4MDAsCisweDRDLCAweDA4LCAweDMwLCAweEExLCAweEMwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOSwgMHg5OCwgMHgyRiwgMHg0QSwgMHhCRiwgMHgwOCwgMHhGQywgMHgyMiwgMHhENCwgMHgwQiwgMHhDMCwgMHgyNywgMHg2MiwKKzB4QkYsIDB4ODgsIDB4QkMsIDB4MjIsIDB4RjQsIDB4ODksIDB4QzAsIDB4MkQsIDB4MDIsIDB4QkYsIDB4MDgsIDB4RkMsIDB4MjIsCisweEYwLCAweDA5LCAweEM0LCAweDI3LCAweDAyLCAweDlGLCAweDA4LCAweEZDLCAweDIyLCAweEYwLCAweDBCLCAweEMwLCAweDI3LAorMHgwMiwgMHhCRiwgMHg0MCwgMHg3QywgMHgyMiwgMHhEMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHg4MCwgMHhCRiwgMHgwMCwgMHhERSwKKzB4OTIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4NzcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEEwLCAweDI3LCAweDAxLCAweEIzLCAweDE0LCAweDdDLCAweDMyLCAweDMwLCAweDA5LCAweEQwLCAweDJDLCAweDQwLCAweEEzLAorMHgwMCwgMHg5QywgMHgxMiwgMHgzMCwgMHg0QiwgMHhDMSwgMHgyQywgMHgwMywgMHg5RiwgMHgyNSwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MkQsIDB4MDEsIDB4QkYsIDB4MTQsIDB4NEMsIDB4MTIsIDB4NzAsIDB4MEIsIDB4QzAsIDB4MkYsIDB4NDAsCisweEIzLCAweDAwLCAweEZDLCAweDEyLCAweEYwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEFCLCAweDAwLCAweDhDLCAweDAyLAorMHhGMCwgMHgwQiwgMHhDMCwgMHg3NiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwKKzB4MTcsIDB4MEQsIDB4MTEsIDB4NDQsIDB4NzQsIDB4QjAsIDB4MTAsIDB4MDAsIDB4NDEsIDB4MDQsIDB4MDQsIDB4MTEsIDB4MDgsCisweDQ0LCAweDAwLCAweDkwLCAweDQxLCAweDQwLCAweDA0LCAweDAzLCAweDFELCAweDFBLCAweDc0LCAweDQwLCAweEQwLCAweDAxLAorMHg0MCwgMHgwNywgMHgwNSwgMHgxRCwgMHgwNCwgMHg0NCwgMHgyMCwgMHhEMCwgMHgwMSwgMHg0MywgMHgwNywgMHgwNCwgMHgxMSwKKzB4MDAsIDB4NzQsIDB4NTAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MTEsIDB4NDAsIDB4NDUsIDB4MDAsIDB4RDIsCisweDA1LCAweDQwLCAweDYwLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLAorMHgwMywgMHg4MSwgMHgzNCwgMHgzNCwgMHgxMiwgMHgxMCwgMHg0OCwgMHg0MCwgMHgyMCwgMHgwMiwgMHg4MSwgMHgwMCwgMHg1NCwKKzB4MjcsIDB4OTAsIDB4NDgsIDB4NDEsIDB4MjAsIDB4MDEsIDB4OEQsIDB4MDQsIDB4MzQsIDB4MjIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDIxLCAweDAzLCAweDhELCAweEI0LCAweDA0LCAweDgyLCAweDUwLCAweDQ4LCAweDQwLCAweDIzLCAweDAyLCAweEM1LCAweDAwLAorMHgzNCwgMHgzMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyNywgMHg4MCwgMHg4OSwgMHgwMCwgMHgyNCwgMHg4MiwgMHhEMCwgMHgwQywKKzB4NDAsIDB4NEEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4NDAsCisweDkxLCAweDA2LCAweDc0LCAweDAyLCAweDEwLCAweDI5LCAweDQwLCAweDI0LCAweDAwLCAweDkxLCAweDA0LCAweDQ0LCAweDAyLAorMHg5MCwgMHgwOSwgMHg1MCwgMHgyNCwgMHgwMSwgMHg5RCwgMHgwOCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDgsIDB4MzcsIDB4MDAsIDB4OTUsIDB4MTAsIDB4NzQsCisweDgyLCAweEQwLCAweDhELCAweDQ0LCAweDY3LCAweDg4LCAweDkxLCAweDA4LCAweDY0LCAweDgyLCAweEQwLCAweDE5LCAweDQwLAorMHg2MiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5MywKKzB4ODIsIDB4N0MsIDB4MUUsIDB4MzEsIDB4MDksIDB4QzAsIDB4MjQsIDB4MTAsIDB4OTMsIDB4MDYsIDB4NUMsIDB4MEEsIDB4MzQsCisweDA5LCAweEM0LCAweDI0LCAweDAxLCAweDlFLCAweDAwLCAweDdDLCAweDMyLCAweEYwLCAweDA5LCAweEMwLCAweDI1LCAweDAwLAorMHg5RiwgMHgwMCwgMHg0QywgMHgxRSwgMHg3MCwgMHhFOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5NywgMHgwMCwgMHg3NCwgMHgwMiwKKzB4RjAsIDB4MDksIDB4QzAsIDB4MjMsIDB4MDAsIDB4OUIsIDB4MDQsIDB4NkUsIDB4MjYsIDB4RDIsIDB4MDksIDB4QzAsIDB4MTYsCisweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweEUxLCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgxNiwgMHhGNiwgMHg5OSwgMHhDMCwgMHgyMywgMHgyOCwgMHg5RiwgMHgyMCwgMHg3QywgMHgxMiwgMHg3MCwgMHgwOSwKKzB4QzUsIDB4MjcsIDB4MEMsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4RTAsIDB4MjcsIDB4QTAsIDB4OEYsCisweDAwLCAweDdELCAweDEyLCAweEYwLCAweDE5LCAweEMzLCAweDI3LCAweDAwLCAweDlCLCAweDAyLCAweDdDLCAweDQyLCAweEYwLAorMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg1RSwgMHgwNiwgMHhGMiwgMHgwOCwgMHhDMCwgMHg1OSwgMHgyMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDIsIDB4N0MsCisweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDA2LCAweDAxLCAweDFGLCAweDAyLCAweDZDLCAweDAwLCAweEIwLCAweDAwLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxMywgMHgwMCwKKzB4N0MsIDB4MDgsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MDYsIDB4NDEsIDB4MTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzEsIDB4MDEsCisweEMxLCAweDA3LCAweDIwLCAweDFGLCAweDAyLCAweDRELCAweDAwLCAweDcwLCAweDAxLCAweEMxLCAweDUwLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyMCwgMHgxNCwgMHgwMCwgMHg3RCwgMHgwMiwgMHg3NCwgMHgwMSwKKzB4MTIsIDB4MDUsIDB4QzAsIDB4OUMsIDB4MDQsIDB4NkQsIDB4MjEsIDB4MDQsIDB4ODEsIDB4MTAsIDB4NTcsIDB4NDAsIDB4NUYsCisweDAxLCAweDVELCAweDgwLCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQyLCAweDFGLCAweDIwLCAweDcxLCAweDA4LCAweDc0LAorMHgwMSwgMHhEMCwgMHg1NywgMHhDMCwgMHgxQywgMHgwMSwgMHg3MSwgMHgwMCwgMHhDNCwgMHgwNSwgMHgxMCwgMHgyNywgMHhDMSwKKzB4OUQsIDB4MDQsIDB4NDEsIDB4MDUsIDB4QzQsIDB4QUQsIDB4MTAsIDB4MDcsIDB4NTAsIDB4NDAsIDB4MDAsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDEzLCAweDc0LCAweDAzLCAweDEwLAorMHgwRCwgMHg0MiwgMHgzMCwgMHgxMCwgMHhDRCwgMHgwNCwgMHgyNCwgMHgwMiwgMHg5MCwgMHgzQywgMHg0MCwgMHg3MywgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4RjMsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsCisweEQwLCAweDBDLCAweDQwLCAweDM0LCAweDgwLCAweDQ5LCAweDUwLCAweDA1LCAweDA3LCAweDEwLCAweDE4LCAweDQwLCAweEQzLAorMHgwMSwgMHhDNSwgMHgwMSwgMHgwNCwgMHgwNywgMHg1MCwgMHgwQywgMHg0MCwgMHg0MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODgsIDB4MzgsIDB4MDIsIDB4RUQsIDB4MDIsIDB4MzQsIDB4MDMsIDB4MTQsIDB4NEUsCisweDQwLCAweDM4LCAweDAwLCAweEVELCAweDAyLCAweEM0LCAweDAzLCAweDEwLCAweDBFLCAweDQyLCAweDNCLCAweDA4LCAweEVELAorMHgwQywgMHhCNiwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHhGMywgMHgwMCwgMHhFMSwgMHgxMCwgMHhCNCwgMHgwMywgMHhEMCwKKzB4MUUsIDB4NDAsIDB4MzgsIDB4ODAsIDB4NjksIDB4MDEsIDB4ODQsIDB4NDUsIDB4MTIsIDB4MEEsIDB4NDAsIDB4MTksIDB4MDAsCisweEIxLCAweDAwLCAweEM0LCAweDQ1LCAweDEwLCAweDBBLCAweDQyLCAweDEwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgwMSwgMHhCQywgMHg0NywgMHgzMCwgMHg1RSwgMHhDMiwKKzB4NzgsIDB4MTAsIDB4NkYsIDB4MDEsIDB4QUMsIDB4MDcsIDB4QjAsIDB4MUUsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RUYsIDB4MDEsCisweEI0LCAweDE3LCAweEYwLCAweDFFLCAweDgwLCAweDdCLCAweDQwLCAweEUzLCAweDAxLCAweEI0LCAweDA3LCAweEYwLCAweDE3LAorMHhEMCwgMHg3MCwgMHgwMCwgMHhFQiwgMHgwMSwgMHhDQywgMHgwNywgMHgzNCwgMHgxQSwgMHhDMCwgMHg1QiwgMHgwMCwgMHhFNywKKzB4MDEsIDB4OEMsIDB4MDcsIDB4NzAsIDB4MTcsIDB4QzAsIDB4NTAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweEE4LCAweDM1LCAweDA0LCAweERGLCAweDAwLCAweDdDLCAweDMzLCAweEYwLCAweDhELCAweEQwLCAweDE1LAorMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDNCwgMHgzNywgMHgxMCwgMHhERiwgMHgwNiwgMHg3QywKKzB4NTMsIDB4RjAsIDB4MEQsIDB4QzQsIDB4MzcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4ODMsIDB4RjAsIDB4MDUsIDB4QzAsCisweDM1LCAweDAwLCAweEM3LCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA5LCAweEM0LCAweDEzLCAweDAwLCAweDk3LCAweDAwLAorMHg3QywgMHgwMSwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QTAsIDB4N0YsIDB4MDAsIDB4N0YsIDB4MjEsIDB4Q0MsIDB4MDcsIDB4RjgsIDB4QUUsIDB4QzAsIDB4NUYsIDB4MDgsCisweEVGLCAweDAxLCAweENDLCAweDA3LCAweDcwLCAweDlGLCAweEM0LCAweDVDLCAweDAyLCAweEYzLCAweDBCLCAweENDLCAweDQ3LAorMHgzMSwgMHgxRiwgMHg0MCwgMHg1RiwgMHgyMCwgMHg3RiwgMHgwMSwgMHhDQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg3QywKKzB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4MzEsIDB4OUIsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RUYsIDB4MDEsIDB4Q0YsCisweDM2LCAweDMwLCAweERGLCAweEQwLCAweDE4LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHg4OCwgMHgzOSwgMHgwMCwgMHg3RCwgMHgxMCwgMHg4NCwgMHgyMywgMHhEOCwgMHg0RSwgMHgwNCwgMHhCOCwgMHgwMCwgMHhBRCwKKzB4MDQsIDB4ODEsIDB4MDMsIDB4MTAsIDB4QUYsIDB4NDAsIDB4MUMsIDB4MDIsIDB4RjEsIDB4MjAsIDB4RDUsIDB4MDMsIDB4MTQsCisweDBFLCAweDQwLCAweDFBLCAweDAxLCAweDZELCAweDA4LCAweDg1LCAweDAzLCAweEQwLCAweDhFLCAweDAwLCAweDM5LCAweDAyLAorMHhFRCwgMHgwMCwgMHhBNCwgMHgxMSwgMHgxMCwgMHg4QSwgMHg0MCwgMHhCQiwgMHgwMSwgMHhFRCwgMHgwNCwgMHhEQywgMHgyMCwKKzB4MTAsIDB4Q0EsIDB4NDAsIDB4NTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDM5LCAweDAwLCAweDZELCAweDAwLCAweDg1LCAweDAzLCAweEQwLCAweDhGLCAweDQwLCAweDE5LCAweDAwLCAweDZELCAweDQwLAorMHhDMCwgMHgwMywgMHg1MCwgMHgwRSwgMHg0MiwgMHgxOCwgMHg2NCwgMHhFMSwgMHgwMCwgMHg4MCwgMHg0MywgMHgxMCwgMHgwRSwKKzB4NDAsIDB4M0EsIDB4MDgsIDB4Q0QsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MDcsIDB4NDAsIDB4MTgsIDB4MDAsIDB4RUQsCisweDAwLCAweDM0LCAweDAzLCAweDEyLCAweDBBLCAweDQ4LCAweDNCLCAweDI0LCAweEZELCAweDIwLCAweDg0LCAweDUyLCAweDEyLAorMHhDQSwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHg3MywKKzB4MTIsIDB4MEQsIDB4MDIsIDB4MDQsIDB4NEIsIDB4RDAsIDB4MkMsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MEQsIDB4MDgsIDB4MDQsCisweDZGLCAweDEwLCAweDA4LCAweDQwLCAweDQwLCAweDAwLCAweEMxLCAweDQwLCAweDA0LCAweDBGLCAweDEwLCAweDBDLCAweDQwLAorMHgyMiwgMHgwMCwgMHgwRCwgMHgwMCwgMHgwNCwgMHgwRiwgMHhEMiwgMHgwMCwgMHg0MCwgMHgyMSwgMHgwMCwgMHhDRCwgMHg4NSwKKzB4MjQsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NzMsIDB4MTEsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDQsIDB4MTAsIDB4MzgsCisweDQwLCAweDA4LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDNELCAweDAwLAorMHg5RiwgMHgwMCwgMHhDQywgMHgxRiwgMHhEMCwgMHgyRiwgMHg4MCwgMHgyNSwgMHgwMCwgMHg4RiwgMHgyMCwgMHg0QywgMHgwRiwKKzB4NzQsIDB4MDEsIDB4RDIsIDB4RTQsIDB4MDAsIDB4RjMsIDB4MDAsIDB4QzQsIDB4MDcsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MjYsCisweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDBCLCAweEYwLCAweDM5LCAweEMxLCAweDA0LCAweDAwLCAweDRGLCAweDQ3LCAweDc0LAorMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHhGMywgMHgwMCwgMHhERiwgMHgwMCwgMHg0NCwgMHgwNywgMHgzNCwgMHgyMSwgMHg4MCwKKzB4NTQsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MjEsIDB4OUYsCisweDEwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweEE1LCAweDAwLCAweDlGLCAweDEwLCAweDdELCAweDAzLCAweEYwLAorMHgwOSwgMHhDMCwgMHhBNywgMHgwNCwgMHhERiwgMHgwMSwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg4NiwgMHgwMCwKKzB4OUYsIDB4MDIsIDB4N0MsIDB4MjMsIDB4RjAsIDB4NDEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4NUYsIDB4NDAsIDB4NkMsIDB4MDIsCisweEYwLCAweDI5LCAweEMwLCAweEI3LCAweDAwLCAweDlGLCAweDkwLCAweDVDLCAweDA5LCAweEYwLCAweEM5LCAweEMwLCAweDM3LAorMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwgMHg4MCwgMHgzRiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4MkYsIDB4MDAsIDB4MzMsIDB4ODksIDB4Q0MsIDB4MDcsIDB4MTAsIDB4MDMsCisweEMwLCAweDBGLCAweDAwLCAweEZGLCAweDAwLCAweEY0LCAweDQzLCAweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDAwLCAweEJGLAorMHgwMCwgMHhGQywgMHg0MywgMHhDMCwgMHgwQiwgMHhDMCwgMHgyQywgMHgwMCwgMHhGRiwgMHgwMCwgMHhEQywgMHgwMiwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QjcsIDB4MDAsIDB4RkMsIDB4MDcsIDB4MzQsIDB4MDEsIDB4QzgsIDB4MDcsIDB4MjQsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDgwLCAweDlELCAweDA3LCAweDc0LAorMHg4MywgMHhEMCwgMHgwRCwgMHg0MiwgMHhFNywgMHgyMCwgMHgxMSwgMHg4NywgMHgwNCwgMHgwNywgMHhCMCwgMHgzMSwgMHg0MCwKKzB4RTcsIDB4MDAsIDB4REQsIDB4MjAsIDB4NjQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NDYsIDB4MDAsIDB4OTksIDB4MDEsCisweDc0LCAweDgzLCAweDkxLCAweDMwLCAweDQwLCAweEU1LCAweDAwLCAweERELCAweDAxLCAweDQ0LCAweDA2LCAweEQwLCAweDM5LAorMHg0MCwgMHg3NywgMHgwMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgzMSwgMHg0NCwgMHg4NywgMHgwMCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzYsIDB4MjAsIDB4OUQsIDB4MDEsIDB4NzQsIDB4MDMsCisweEQwLCAweDBELCAweDY0LCAweDQ3LCAweDQwLCAweDkxLCAweDAwLCAweDQ0LCAweDIzLCAweDUwLCAweDExLCAweDQwLCAweDY3LAorMHgwNCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHhDNywgMHgwMCwgMHgxRCwgMHgwMywgMHg3NCwKKzB4MDMsIDB4RDAsIDB4MTksIDB4NDAsIDB4NDcsIDB4MDAsIDB4OUQsIDB4MDEsIDB4NTQsIDB4QzQsIDB4RDAsIDB4MUQsIDB4NDAsCisweDc3LCAweDAwLCAweEQ1LCAweDAxLCAweDM0LCAweDFBLCAweDEwLCAweDMxLCAweDQwLCAweDA3LCAweDAwLCAweDBBLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NjAsIDB4MjMsIDB4MDAsIDB4ODEsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDQsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MjAsCisweENELCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDAzLCAweDAwLCAweDA5LCAweDAwLCAweDM0LCAweDAzLAorMHg5MCwgMHgwOSwgMHg0MCwgMHgwMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywKKzB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDEsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDNFLCAweDAwLCAweDFELCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLAorMHhDMCwgMHgwNywgMHgwOCwgMHg5MywgMHgwMCwgMHg0RCwgMHgwMywgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHhGRiwKKzB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzQsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsCisweDA5LCAweEQwLCAweDA2LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLAorMHg5NywgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNywgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsIDB4M0YsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDJGLCAweDAwLCAweDNGLCAweDAwLCAweEJDLCAweDAzLCAweEEwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEZFLCAweDAwLAorMHhFQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwRSwgMHgwMCwgMHhCQSwgMHgwMCwgMHhGQywgMHgwMywgMHhCMCwgMHgwQSwKKzB4QzAsIDB4MkQsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDMsIDB4QzIsIDB4MkYsIDB4MDAsIDB4QkYsCisweDAwLCAweEZDLCAweDAwLCAweEYyLCAweDBCLCAweEMwLCAweDE3LCAweDYxLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBMCwgMHgyRiwgMHg0MCwgMHgyMywgMHgxMCwgMHhDRCwgMHgwMCwgMHgzMCwgMHgwMywgMHhDMCwgMHg0QywKKzB4NDAsIDB4MzMsIDB4ODEsIDB4Q0MsIDB4MjQsIDB4MzAsIDB4MTMsIDB4RDAsIDB4MkMsIDB4MDUsIDB4RjMsIDB4MDksIDB4REMsCisweDAwLCAweDMwLCAweDRFLCAweEMwLCAweDJDLCAweDAwLCAweDNGLCAweDAxLCAweENELCAweDA0LCAweEYxLCAweDEzLCAweEMwLAorMHg0QywgMHgwOCwgMHgzMywgMHgwMSwgMHhGQywgMHgwNCwgMHhCMCwgMHgxMywgMHhENCwgMHg0QywgMHg0MCwgMHhGMywgMHgwMCwKKzB4Q0QsIDB4MDcsIDB4RjAsIDB4NEYsIDB4QzEsIDB4MEMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDAwLCAweDI3LCAweDAwLCAweDUxLCAweDkyLCAweDA0LCAweDA4LCAweDEzLCAweDA5LCAweDQwLCAweDA0LCAweDA1LAorMHgxMSwgMHgxMCwgMHg0NCwgMHgwMSwgMHgxMCwgMHgwMSwgMHg0MSwgMHhBNCwgMHgwNSwgMHhDMSwgMHgwNCwgMHg0NCwgMHgyQywKKzB4MTAsIDB4M0YsIDB4QzAsIDB4NjQsIDB4MDIsIDB4MUQsIDB4MDAsIDB4NjQsIDB4MDQsIDB4RDAsIDB4MDUsIDB4QzAsIDB4MDQsCisweDIwLCAweDExLCAweDAxLCAweDc0LCAweDA0LCAweDEwLCAweDAxLCAweDYwLCAweDA0LCAweDAwLCAweEMxLCAweDAwLCAweDQ0LAorMHgwNywgMHhEMSwgMHgyRCwgMHg0MCwgMHgwQywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwKKzB4QTAsIDB4MjcsIDB4MDAsIDB4MDEsIDB4MDUsIDB4MDYsIDB4MEMsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MjAsIDB4MDEsIDB4ODEsCisweDAwLCAweDE0LCAweDAyLCAweDEwLCAweDQ4LCAweDQ4LCAweDIxLCAweDAwLCAweDgxLCAweDA0LCAweDM0LCAweDAwLCAweEQ0LAorMHg4QywgMHg0NCwgMHgzMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMSwgMHhEMCwgMHgwMCwgMHg0MiwgMHg0NiwgMHgyMCwKKzB4MEQsIDB4MDEsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4QzksIDB4MDAsIDB4MjQsIDB4MDMsCisweEQwLCAweDBDLCAweDQwLCAweDRDLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEE4LAorMHgyNSwgMHgwMiwgMHg1MSwgMHg0NCwgMHgxNCwgMHgwNCwgMHgxNCwgMHgxRCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwKKzB4NTUsIDB4MDMsIDB4MTQsIDB4MDksIDB4NDAsIDB4NjQsIDB4MDAsIDB4NTEsIDB4MDAsIDB4NjQsIDB4MEMsIDB4QzAsIDB4MUQsCisweDQ0LCAweDc2LCAweDA0LCAweDhELCAweDAwLCAweDc0LCAweDg5LCAweEQwLCAweDA1LCAweDUwLCAweDA0LCAweDAwLCAweDE1LAorMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg5OSwgMHgwMCwgMHg0NCwgMHgwMywgMHhEMCwKKzB4MUMsIDB4NDAsIDB4MEMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4NDMsCisweDAwLCAweDEzLCAweDAwLCAweDRDLCAweDA0LCAweDMwLCAweDMxLCAweEMyLCAweDA0LCAweDAwLCAweDEzLCAweDAxLCAweDVDLAorMHgwMCwgMHgzMCwgMHgxMSwgMHhDMCwgMHhFNCwgMHgwNCwgMHhEMywgMHgwNCwgMHg3QywgMHgwQywgMHhGMCwgMHgzNSwgMHhDMCwKKzB4RTQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MTIsIDB4MDAsIDB4NTcsIDB4MDAsCisweDNDLCAweDAxLCAweEIwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweERCLCAweDAwLCAweDRDLCAweDAzLCAweEYwLCAweDFELAorMHhDMCwgMHgwOCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4OCwgMHg0RCwgMHgwMCwKKzB4N0YsIDB4MDAsIDB4RUMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MTIsIDB4M0YsIDB4MDksIDB4RUMsIDB4MDEsCisweEYwLCAweDkzLCAweDgwLCAweDJGLCAweDUwLCAweEZGLCAweDAwLCAweDVDLCAweDAwLCAweDMwLCAweDA2LCAweEMwLCAweDI1LAorMHgwMCwgMHgzRiwgMHgwOCwgMHhDQywgMHgwMCwgMHhGMiwgMHgwNywgMHhDNCwgMHgxRiwgMHgwMCwgMHg3QiwgMHgwMCwgMHhGQywKKzB4ODEsIDB4RjAsIDB4ODMsIDB4QzAsIDB4MEYsIDB4MDIsIDB4RTcsIDB4MDgsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4RDQsCisweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDI1LCAweDQwLCAweDMzLAorMHgwMCwgMHg0QywgMHgwMCwgMHgzMiwgMHgzMSwgMHhDMCwgMHg2NCwgMHgwMCwgMHg5RiwgMHgwMSwgMHg0QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4NTMsIDB4MDQsIDB4NkMsIDB4ODgsIDB4QjAsIDB4MkQsIDB4QzAsIDB4MzQsIDB4MTEsCisweDk3LCAweDA1LCAweDdDLCAweDAxLCAweDMwLCAweDQxLCAweEMwLCAweDE3LCAweDAyLCAweDVCLCAweDEwLCAweDRDLCAweDAzLAorMHgzMCwgMHgxOSwgMHhDMCwgMHg2NCwgMHgwMCwgMHg5RiwgMHgwNCwgMHg0QywgMHgwMywgMHhGMCwgMHgxNSwgMHhDMCwgMHgwOCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MjQsIDB4MjAsIDB4NDEsIDB4MDEsCisweDQ0LCAweDE0LCAweDEwLCAweEJELCAweDQwLCAweDY0LCAweDAwLCAweDlELCAweDBCLCAweDQ0LCAweDJGLCAweEQwLCAweEE4LAorMHhDMiwgMHgyNiwgMHgwMCwgMHhEMSwgMHg4MiwgMHgwNCwgMHgwMCwgMHgxMCwgMHhBRCwgMHg0MCwgMHhCNCwgMHgwMCwgMHg5MSwKKzB4MDMsIDB4NzAsIDB4MDksIDB4MTEsIDB4MzUsIDB4NDAsIDB4OTcsIDB4MDIsIDB4NTEsIDB4MTMsIDB4NDQsIDB4NDMsIDB4MTAsCisweEI5LCAweDQwLCAweDY0LCAweDAwLCAweDlELCAweDAyLCAweDQ1LCAweDEzLCAweEQwLCAweDE1LCAweDQwLCAweDZDLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHgyMCwgMHgwMiwgMHgwMSwgMHgxQSwgMHgyMCwKKzB4MDAsIDB4MTQsIDB4MjEsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NEQsIDB4MDAsIDB4NjAsIDB4MkMsIDB4RDAsIDB4MTQsIDB4NDAsCisweDM0LCAweDQwLCAweEQxLCAweDAyLCAweDI0LCAweDAwLCAweEQwLCAweDJDLCAweDQwLCAweDAwLCAweDIwLCAweDQ1LCAweDAyLAorMHgzMCwgMHg2MiwgMHgxMCwgMHgxOSwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4MCwgMHg0MSwgMHgwNCwgMHgwNCwgMHgxMCwgMHgwNCwKKzB4NDAsIDB4MTAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MDcsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MUMsIDB4MDAsIDB4MEEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDY4LCAweDAwLCAweDMxLCAweDAxLCAweEE1LCAweDA0LAorMHgxMCwgMHgxQiwgMHg0MCwgMHg1OCwgMHgwMCwgMHg2RCwgMHgwMSwgMHhBNCwgMHgwNSwgMHhEMCwgMHgxNiwgMHg0MCwgMHg2QSwKKzB4MDAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MjQsIDB4NTAsIDB4OUUsIDB4NDAsIDB4NTgsIDB4MDAsIDB4NjEsIDB4MDEsIDB4QjYsCisweDA2LCAweDEwLCAweDFFLCAweDQwLCAweDZGLCAweDAwLCAweEIxLCAweDgxLCAweEM0LCAweDA0LCAweDEwLCAweDE2LCAweDQwLAorMHg1OCwgMHgwMCwgMHhFRCwgMHgwOSwgMHg4NCwgMHgwNywgMHhEMCwgMHgyRiwgMHg0MCwgMHg3NCwgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTgsIDB4MjQsIDB4MDEsIDB4MDMsIDB4MDgsIDB4MjQsIDB4MDAsIDB4MzAsCisweDY0LCAweEMwLCAweDMwLCAweDAwLCAweERGLCAweDAwLCAweDJDLCAweDAyLCAweEYwLCAweDBDLCAweEMxLCAweDE0LCAweDIwLAorMHg4MywgMHgwMCwgMHgyQywgMHgyMCwgMHhGMiwgMHgwOCwgMHhEMCwgMHgxMCwgMHgwMCwgMHhDNywgMHgwMCwgMHgzQywgMHgwMywKKzB4MzAsIDB4NDgsIDB4QzEsIDB4MjMsIDB4MTAsIDB4ODMsIDB4MDAsIDB4MEMsIDB4MDIsIDB4MzIsIDB4MEQsIDB4RDAsIDB4MzAsCisweDAwLCAweDhGLCAweDAwLCAweDBELCAweDAzLCAweEYwLCAweDhDLCAweEM4LCAweDQ4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgzRCwgMHg0MCwgMHgzRiwgMHgwMCwgMHhEQywgMHgwMCwgMHhGMCwgMHgwRSwKKzB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDgsIDB4REQsIDB4MDMsIDB4RjIsIDB4OEUsIDB4QzQsIDB4MkYsIDB4MjAsIDB4RkYsCisweDAwLCAweEZDLCAweDIwLCAweEIwLCAweDBGLCAweEMyLCAweDFGLCAweDAyLCAweEZGLCAweDA4LCAweEJDLCAweDIzLCAweEYwLAorMHgwRiwgMHhDMCwgMHgyQiwgMHgwMCwgMHhBNywgMHgwMCwgMHhCQywgMHgwMiwgMHhGMSwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwKKzB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4NEUsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDA3LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweDM0LCAweDA1LCAweEMwLAorMHgxNCwgMHgwMCwgMHg1RiwgMHgwMSwgMHg0QywgMHgwMCwgMHhGMCwgMHgwNSwgMHhDMCwgMHgzNCwgMHgwMCwgMHhDRiwgMHgwMCwKKzB4NEMsIDB4MDQsIDB4MzAsIDB4NEMsIDB4QzAsIDB4MzQsIDB4MDAsIDB4NUIsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEQwLCAweDM0LCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweERGLAorMHgwMCwgMHgwRCwgMHgwMywgMHgzMCwgMHgwQywgMHhEMCwgMHg1NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTIsIDB4ODAsIDB4MEQsIDB4MTAsIDB4MjEsIDB4MDAsIDB4RjQsIDB4MDIsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MTgsCisweDMwLCAweDZELCAweDAwLCAweDg0LCAweDAxLCAweEQwLCAweDA2LCAweDQwLCAweDI4LCAweDAwLCAweEVELCAweDAwLCAweEFDLAorMHgwMCwgMHg5MCwgMHgwRSwgMHg0MywgMHgzOCwgMHg0OCwgMHg2MSwgMHgwMCwgMHhCNCwgMHgwMiwgMHhEMCwgMHgwRSwgMHg0MiwKKzB4MzgsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDEsIDB4RDAsIDB4MDYsIDB4NDAsIDB4MUIsIDB4MDAsIDB4RkQsIDB4MDAsCisweDg0LCAweDAzLCAweDEwLCAweDBFLCAweDYwLCAweDRDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHg3OSwgMHgwMCwgMHgyMSwgMHgwMSwgMHhCNCwgMHgwNCwgMHgxMCwgMHgxRSwgMHg0MCwgMHg3OCwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4ODQsIDB4MDYsIDB4RDAsIDB4MUUsIDB4NjAsIDB4NzgsIDB4MDAsIDB4RkQsIDB4MDEsIDB4MDQsIDB4NDAsCisweEQwLCAweDFBLCAweDQwLCAweDc4LCAweDAwLCAweEU5LCAweDIxLCAweEI2LCAweDA3LCAweEQwLCAweDFBLCAweDQwLCAweDc4LAorMHgwMCwgMHhFMSwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NCwKKzB4MDcsIDB4MTAsIDB4MTcsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDI4LCAweDMzLCAweDAyLCAweDgxLCAweDAwLCAweDc0LCAweDI3LCAweDEwLCAweDdDLCAweDQwLCAweDMwLCAweDAwLCAweENELAorMHgwMCwgMHg0NCwgMHgwMywgMHhEMCwgMHgwQywgMHg2MiwgMHgyMCwgMHgwMSwgMHhDRCwgMHg4MywgMHgyNCwgMHgwNywgMHhEMCwKKzB4MkMsIDB4NDAsIDB4NzAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDIsIDB4MzQsIDB4MDAsCisweEMxLCAweDQwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDA5LCAweDA0LCAweDAzLAorMHgxNSwgMHgwNCwgMHg2MCwgMHg0OCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgyMCwKKzB4MTksIDB4NDAsIDB4NzMsIDB4NDIsIDB4RkMsIDB4MDUsIDB4MzAsIDB4NTcsIDB4RDAsIDB4MTQsIDB4MDAsIDB4NUYsIDB4MDAsCisweDRELCAweDAxLCAweEYwLCAweDA1LCAweEQwLCAweDFDLCAweDIwLCAweDdGLCAweDA1LCAweENDLCAweDA5LCAweDc0LCAweDI3LAorMHhDMCwgMHhEQywgMHgwMywgMHg1QiwgMHg4MCwgMHgzQywgMHgwMSwgMHhGMSwgMHgwNSwgMHhDMCwgMHgxNCwgMHgwMCwgMHg1MywKKzB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4MEMsIDB4MDEsIDB4MzAsCisweDI3LCAweEMwLCAweDVDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDg1LAorMHgxNCwgMHgwRiwgMHgyNCwgMHg3QywgMHgwNCwgMHhGNCwgMHgyMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHg4MCwgMHg3QywKKzB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDMsIDB4MDAsIDB4MUYsIDB4MTAsIDB4N0MsIDB4MTAsIDB4MzAsIDB4NjEsIDB4RDAsCisweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDA4LCAweEQxLCAweDAxLCAweEM4LCAweDA3LCAweDQwLCAweDFGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgyMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwKKzB4QzEsIDB4NEIsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NjUsIDB4MDAsCisweDkzLCAweDAxLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLAorMHgzMCwgMHg4OSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5MywgMHgwNCwgMHgwQywgMHgwQSwgMHgzMCwgMHgyOSwgMHhDMCwgMHgyMiwKKzB4NzAsIDB4OTMsIDB4ODAsIDB4N0MsIDB4MDYsIDB4MzAsIDB4MDksIDB4QzAsIDB4NjQsIDB4MDIsIDB4OTMsIDB4MDUsIDB4N0MsCisweDAyLCAweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDAyLCAweDlGLCAweDAxLCAweDRDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLAorMHg0MCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgxMCwgMHg5MSwKKzB4MjgsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MjgsIDB4NDAsIDB4QTQsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NzQsIDB4MDIsIDB4MTAsCisweDM5LCAweDQwLCAweDI0LCAweDIwLCAweDgxLCAweDAwLCAweDZDLCAweDAyLCAweDEwLCAweDI4LCAweDQwLCAweEE0LCAweDAwLAorMHg5MSwgMHgwMiwgMHg1QywgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHhFNCwgMHgwOCwgMHg5MSwgMHgyMSwgMHg3NCwgMHg4MiwKKzB4RDAsIDB4MjksIDB4NDAsIDB4RTcsIDB4MDAsIDB4OUQsIDB4MDMsIDB4NDUsIDB4MDIsIDB4MTQsIDB4MDksIDB4NDAsIDB4MDQsCisweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDQ2LCAweDkxLCAweDIwLAorMHg0NCwgMHgwMiwgMHgxMiwgMHgyOSwgMHg0MCwgMHgyNCwgMHgwMSwgMHhCRCwgMHgwNCwgMHhGNCwgMHgwMiwgMHgxOCwgMHgwQSwKKzB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4ODAsIDB4NjQsIDB4MDIsIDB4MTksIDB4MEQsIDB4NDAsIDB4MjYsIDB4MDAsIDB4OTEsCisweDAwLCAweEY0LCAweDIyLCAweDFDLCAweDBGLCAweDQwLCAweDJDLCAweDA0LCAweEIxLCAweDAwLCAweEY0LCAweDA2LCAweEQwLAorMHgwQiwgMHg0MCwgMHgyRiwgMHgwMCwgMHg4RCwgMHgwQSwgMHg2NCwgMHgwMiwgMHgxMCwgMHgxOCwgMHg0MCwgMHg2MiwgMHgwMCwKKzB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjQsIDB4MDEsIDB4ODEsIDB4MDQsIDB4MDQsCisweDEyLCAweDEwLCAweDQ4LCAweDUwLCAweDY4LCAweDAwLCAweEFELCAweDAxLCAweEI0LCAweDAyLCAweDEwLCAweDFBLCAweDQyLAorMHgyMCwgMHgwMSwgMHg5MSwgMHgwMCwgMHgyNCwgMHgxMiwgMHgxMCwgMHg0OCwgMHg0MCwgMHgzMiwgMHgwMSwgMHhBMSwgMHgwMSwKKzB4RDQsIDB4MDMsIDB4MTAsIDB4MEEsIDB4NDAsIDB4MjgsIDB4MjAsIDB4QTEsIDB4MDEsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MUEsCisweDQwLCAweDZCLCAweDAwLCAweDhELCAweDA0LCAweDI1LCAweDAyLCAweDEwLCAweDU4LCAweDUwLCAweDQyLCAweDgwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHg4NiwgMHgwMiwgMHg1MywgMHgwQSwgMHg0RCwgMHgyOCwKKzB4MzQsIDB4QTAsIDB4NDAsIDB4ODQsIDB4MDIsIDB4MEYsIDB4MEEsIDB4N0MsIDB4MjksIDB4MzAsIDB4QTIsIDB4NDAsIDB4ODQsCisweDAyLCAweDEzLCAweDBBLCAweDZDLCAweDAwLCAweDMwLCAweDA1LCAweEMwLCAweDA2LCAweDAwLCAweDEzLCAweDBBLCAweDdDLAorMHgwMCwgMHgzMCwgMHhBMCwgMHhEMCwgMHg4MCwgMHgwMiwgMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHhBMSwgMHhDMCwKKzB4OEYsIDB4MDIsIDB4MUYsIDB4MEEsIDB4NkMsIDB4MDAsIDB4MzAsIDB4QTEsIDB4QzAsIDB4NzYsIDB4QzAsIDB4MEEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LCAweDJGLCAweDAyLCAweEJGLCAweDA4LCAweEZDLCAweDIyLCAweEYwLAorMHg4QiwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGNCwgMHgwOSwgMHhEMCwgMHgyRiwgMHg0MiwKKzB4QkYsIDB4ODAsIDB4RkMsIDB4MjIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MjksIDB4ODIsIDB4OUYsIDB4MDAsIDB4NUMsIDB4MDIsCisweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LAorMHgwMCwgMHhCRiwgMHgwOCwgMHg1QywgMHgwMiwgMHhGMCwgMHg4QiwgMHhDMCwgMHg2NSwgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsIDB4MkYsIDB4MDEsIDB4QTMsIDB4MTQsIDB4RkMsIDB4MzIsIDB4RjAsIDB4MEIsCisweEQwLCAweDJDLCAweDAwLCAweEIzLCAweDA4LCAweEZDLCAweDAyLCAweDMwLCAweDBCLCAweEMwLCAweDI2LCAweDE5LCAweEIzLAorMHgwMCwgMHhDQywgMHgwNiwgMHgzMCwgMHgxQiwgMHhDMSwgMHg2RSwgMHgwNCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMiwgMHgzMCwKKzB4MEIsIDB4QzAsIDB4M0MsIDB4MDAsIDB4RjMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4MzEsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDIsCisweEJGLCAweDAwLCAweENDLCAweDAyLCAweEYwLCAweDhGLCAweEMwLCAweDYwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgxNywgMHg0NSwgMHgxMSwgMHgwNCwgMHg3NCwgMHgzMCwgMHhEMCwgMHgyMCwgMHg0MSwKKzB4MTQsIDB4NDQsIDB4NTEsIDB4MDAsIDB4NzQsIDB4NTAsIDB4MTAsIDB4NDEsIDB4NTAsIDB4MDQsIDB4MDIsIDB4MTMsIDB4MDAsCisweDZDLCAweDI4LCAweDE0LCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDVELCAweDA0LCAweDc0LCAweDAwLCAweDEwLCAweDAxLAorMHg0MSwgMHgwNCwgMHgwNCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHg0NSwgMHg0MCwgMHgxNCwgMHgwMSwgMHgxRCwKKzB4MTIsIDB4NDUsIDB4MDAsIDB4RDAsIDB4ODEsIDB4NDAsIDB4NzAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDQzLCAweDgxLCAweDE0LCAweDM0LCAweDEyLCAweEQwLCAweEM4LCAweDUwLCAweDIwLAorMHgxMCwgMHg4MSwgMHgwMCwgMHg3NCwgMHgxNiwgMHgxNCwgMHg0OCwgMHg0MSwgMHgyNCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgyNCwKKzB4MDIsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MjIsIDB4MDAsIDB4OEQsIDB4OTQsIDB4NzQsIDB4MDIsIDB4OTgsIDB4NDksIDB4NDAsCisweDIyLCAweDAwLCAweDkxLCAweDAwLCAweDE0LCAweDAyLCAweDkwLCAweDQ4LCAweDQxLCAweDIyLCAweDExLCAweDhELCAweDBDLAorMHgwNCwgMHgwMiwgMHhEMCwgMHgxOCwgMHg0MCwgMHg0OCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4MjgsIDB4MjUsIDB4MDAsIDB4OTEsIDB4MTAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4NDksIDB4NDEsIDB4MjAsIDB4MDAsCisweDkxLCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDI5LCAweDQwLCAweEE0LCAweDAwLCAweDkxLCAweDAwLCAweDY0LCAweDYyLAorMHg5OCwgMHgxOSwgMHg0NCwgMHgyNCwgMHgwMiwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHg5QywgMHgwOSwgMHg1MCwgMHgyMiwKKzB4MDAsIDB4OTEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NTAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDgsIDB4NDQsCisweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDYwLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorMHgwMCwgMHgyNSwgMHgwMCwgMHg5MywgMHgwMCwgMHg3QywgMHgwNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHhBNCwgMHgwMCwgMHg5MywKKzB4MDIsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjQsIDB4NDAsIDB4OTMsIDB4MTAsIDB4NkQsIDB4MEEsIDB4QjAsCisweDc5LCAweEMwLCAweDI2LCAweDEwLCAweDlGLCAweDAyLCAweDNDLCAweDAyLCAweEIwLCAweDA4LCAweEMyLCAweDI2LCAweDQwLAorMHg4MywgMHgwMCwgMHg1QywgMHg0MiwgMHhCNCwgMHgyOSwgMHhDMCwgMHhBNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgwMiwKKzB4RjAsIDB4MTksIDB4QzAsIDB4MTQsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDgsCisweEU1LCAweDAwLCAweDlGLCAweDEwLCAweDdDLCAweEE2LCAweEYwLCAweDE4LCAweEQwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMiwgMHgwOSwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5NywgMHgxNSwgMHg3RSwgMHgwNiwgMHg3MCwgMHgwOSwKKzB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MjYsIDB4NzIsIDB4MDksIDB4QzEsIDB4MjUsIDB4MDAsIDB4OUYsCisweDAwLCAweDZELCAweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDI1LCAweDA0LCAweDlGLCAweDEwLCAweDdFLCAweDAyLCAweEYwLAorMHg0OSwgMHhEMSwgMHg1QiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHg4MSwKKzB4MDEsIDB4MTMsIDB4MDIsIDB4NEMsIDB4MjAsIDB4MzQsIDB4ODEsIDB4QzAsIDB4ODYsIDB4NDQsIDB4MTMsIDB4MTIsIDB4NkQsCisweDA0LCAweEYwLCAweDgxLCAweEMwLCAweDA0LCAweDAwLCAweDFGLCAweDAyLCAweDRDLCAweDg4LCAweDMwLCAweDIwLCAweEMwLAorMHgwNCwgMHgwOCwgMHgxRiwgMHgwMiwgMHg0RCwgMHg0MCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwgMHgxMywgMHgwMCwKKzB4N0MsIDB4NDAsIDB4RjAsIDB4MjEsIDB4RDAsIDB4ODQsIDB4NDAsIDB4MTMsIDB4MDgsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MDEsCisweEMwLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDFDLCAweDAwLAorMHg3MSwgMHg4MiwgMHg0NCwgMHgwNSwgMHgxMCwgMHgxNywgMHhDMCwgMHg5QywgMHgwMCwgMHg3MSwgMHgwMiwgMHg4NCwgMHgwNSwKKzB4RDAsIDB4MTYsIDB4NDAsIDB4MTAsIDB4MDAsIDB4N0QsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTQsIDB4MzcsIDB4NDAsIDB4OUMsCisweDAwLCAweDdELCAweDAzLCAweEM0LCAweDExLCAweEQwLCAweDE3LCAweEMwLCAweDFDLCAweDAwLCAweDcxLCAweDAwLCAweEIwLAorMHg0RCwgMHhEMCwgMHgwNywgMHg0MCwgMHgxQywgMHgwMCwgMHg3MSwgMHgwMSwgMHg0NSwgMHgwMSwgMHhEMCwgMHgxNywgMHg0MSwKKzB4NTAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MzIsIDB4NDAsIDB4ODEsCisweDAyLCAweDI0LCAweDA3LCAweDEwLCAweDBDLCAweDQwLCAweEIwLCAweDAwLCAweEMxLCAweDAyLCAweDA0LCAweDI3LCAweEQwLAorMHgwOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHg1RCwgMHgwMCwgMHgwNCwgMHgwMywgMHg5MCwgMHhCOCwgMHg1MSwgMHhCMCwgMHgyMSwKKzB4Q0QsIDB4MDUsIDB4MDAsIDB4MDcsIDB4RDAsIDB4MkMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4QzEsIDB4MTMsIDB4MzQsIDB4MEIsCisweEQ4LCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweDkxLCAweDAzLCAweDA0LCAweDAyLCAweEQwLCAweDJDLCAweDQwLCAweDUwLAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgyOCwgMHgwMCwgMHgzMSwgMHgwMSwKKzB4QTQsIDB4MDYsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsCisweDQyLCAweDM4LCAweDIxLCAweEVELCAweDAwLCAweDk0LCAweDAzLCAweDkwLCAweDA4LCAweDQwLCAweDE4LCAweDA0LCAweEVELAorMHgwMywgMHg4NCwgMHgwMSwgMHhEMSwgMHgyRiwgMHg1MCwgMHgzOCwgMHgwMCwgMHgyMSwgMHgxMCwgMHhCNCwgMHgwMywgMHhEMCwKKzB4MEUsIDB4NDAsIDB4NzgsIDB4MDAsIDB4QTEsIDB4MDAsIDB4ODQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MTQsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDVDLCAweDAyLCAweDYzLCAweDAxLCAweEVDLAorMHgwNywgMHgzMCwgMHgxRSwgMHhEMSwgMHg3QywgMHgwMCwgMHhGMywgMHgwMSwgMHg4QywgMHgwNywgMHhGMCwgMHgxQSwgMHhEMCwKKzB4RjgsIDB4MjEsIDB4M0YsIDB4MDEsIDB4ODQsIDB4MDcsIDB4QjAsIDB4MTYsIDB4QzAsIDB4NzgsIDB4MDAsIDB4RkYsIDB4MjEsCisweDhDLCAweDA3LCAweEYwLCAweDFFLCAweEMwLCAweDdDLCAweDQwLCAweDIzLCAweDAxLCAweEJDLCAweDA3LCAweEYwLCAweDFGLAorMHhDMCwgMHg3QywgMHgwMCwgMHg3MywgMHgwMSwgMHg4NCwgMHgwNiwgMHhGMCwgMHgxRSwgMHhEMCwgMHg1NCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4OUQsIDB4MDAsIDB4MUYsIDB4ODAsIDB4NUQsIDB4MTIsCisweEYwLCAweDA3LCAweEMwLCAweDM1LCAweDA4LCAweDVGLCAweDAwLCAweDdDLCAweDAzLCAweEYyLCAweDAwLCAweEMwLCAweDc3LAorMHgwMCwgMHg5RiwgMHgwMCwgMHgzQywgMHgwMywgMHg3MCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MzUsIDB4MDgsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsCisweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDAxLCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyMCwgMHg3RCwgMHgwMCwgMHgyMywgMHgwMSwgMHhDQywgMHgzRiwgMHhGOCwKKzB4OEIsIDB4QzAsIDB4N0MsIDB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDcsIDB4QjAsIDB4OUIsIDB4QzAsIDB4N0YsIDB4MDAsCisweEU3LCAweDAxLCAweDhDLCAweDg3LCAweDI0LCAweDFFLCAweEMwLCAweDVELCAweDAwLCAweEYzLCAweDAxLCAweEQ0LCAweDI1LAorMHhCMCwgMHgxRiwgMHhEOCwgMHg3QywgMHgwMCwgMHgzMiwgMHgwMSwgMHhGQywgMHgwNSwgMHhGMCwgMHgxRiwgMHhDMCwgMHg3QywKKzB4MDAsIDB4NzMsIDB4MDEsIDB4Q0MsIDB4MDYsIDB4RjAsIDB4MTcsIDB4QzAsIDB4MDMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDI5LCAweDAwLCAweDIxLCAweDgyLCAweDg0LCAweDYyLCAweDMwLCAweDQ3LAorMHg0MCwgMHgzQywgMHgwMCwgMHhFMSwgMHgwMCwgMHhCQywgMHgwMiwgMHgxMCwgMHhDRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFQiwKKzB4MDAsIDB4QUMsIDB4MTMsIDB4MzAsIDB4MEUsIDB4NDAsIDB4OTgsIDB4NDAsIDB4RTEsIDB4MDgsIDB4ODQsIDB4MDEsIDB4MTQsCisweDRCLCAweEMxLCAweDNDLCAweDAwLCAweDIxLCAweDA4LCAweEI0LCAweDA4LCAweEQwLCAweDJFLCAweDQwLCAweDNDLCAweDAwLAorMHhFMSwgMHgwMCwgMHg4NCwgMHgwMiwgMHhEMCwgMHg4MiwgMHg0MCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4NjEsIDB4MDAsIDB4MDQsIDB4MTMsIDB4NTAsIDB4OEEsIDB4NTAsCisweDM4LCAweDAwLCAweEU5LCAweDAwLCAweEY0LCAweDAzLCAweDEwLCAweDBBLCAweDYwLCAweDMzLCAweDAwLCAweEI1LCAweDAwLAorMHhBNCwgMHg4MywgMHg4MCwgMHgwRiwgMHg1MCwgMHgzQiwgMHgwMCwgMHg2MSwgMHgwMCwgMHg5NCwgMHgwMCwgMHg5NCwgMHgwRSwKKzB4NjAsIDB4MzgsIDB4MDAsIDB4MjksIDB4MDAsIDB4QjQsIDB4MDEsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RTEsCisweDAwLCAweDg0LCAweDAyLCAweEQwLCAweDA2LCAweDQwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgyOCwgMHg1MSwgMHgwMCwgMHgwMSwgMHgwNiwgMHgwNSwgMHgwQSwgMHgxMiwgMHhCNSwgMHg0MSwgMHgzMCwKKzB4MDAsIDB4QzksIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4MDQsIDB4NjAsIDB4RjMsIDB4NDAsIDB4ODksIDB4MDMsIDB4MjQsCisweDIzLCAweDEwLCAweDFDLCAweDQwLCAweDMyLCAweDAwLCAweEQxLCAweDAwLCAweDA0LCAweDAxLCAweDkwLCAweDA4LCAweDQwLAorMHgzMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhEMSwgMHgwMCwKKzB4MDUsIDB4MDIsIDB4RDAsIDB4MTgsIDB4NDAsIDB4MTMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweEEwLCAweDY1LCAweDQwLCAweDEzLCAweDA3LCAweDRDLCAweDBFLCAweDcwLCAweDA5LCAweEMwLCAweDM0LCAweDAwLAorMHhEQiwgMHgwMCwgMHg3QywgMHgwMywgMHhCMCwgMHgwOCwgMHhDMiwgMHgzRiwgMHgyMCwgMHgwNywgMHgwRCwgMHgwQywgMHgwQSwKKzB4QjAsIDB4NUQsIDB4QzAsIDB4NzMsIDB4MDQsIDB4RDMsIDB4MDAsIDB4NUMsIDB4MDIsIDB4QjAsIDB4MEQsIDB4QzAsIDB4MzQsCisweDAwLCAweDBCLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDBELCAweEQwLCAweDM0LCAweDAwLCAweDkzLCAweDA1LCAweDRDLAorMHgwMywgMHhGMCwgMHgwQywgMHhDMSwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKzB4MDgsIDB4MjcsIDB4MDIsIDB4M0YsIDB4MDAsIDB4N0MsIDB4MDIsIDB4NzAsIDB4MjEsIDB4QzAsIDB4MjcsIDB4MjAsIDB4OTcsCisweDAwLCAweDVDLCAweDA3LCAweEYwLCAweDI5LCAweEMwLCAweDM3LCAweDA2LCAweDk3LCAweDAwLCAweDdDLCAweDQyLCAweEYwLAorMHgwRCwgMHhDMCwgMHgzNSwgMHgyMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMCwgMHg3MiwgMHgyNSwgMHhDMCwgMHhBNSwgMHgwMCwKKzB4MTMsIDB4MDAsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA5LCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LAorMHgwRiwgMHg2MCwgMHg3MywgMHgwMCwgMHhBQywgMHg0MiwgMHhCMCwgMHgwMywgMHhDMCwgMHgxQywgMHgwMCwgMHhGRiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4MzAsIDB4NEIsIDB4QzAsIDB4M0UsIDB4MDAsIDB4MzMsIDB4MDUsIDB4Q0MsIDB4MDcsIDB4MzAsIDB4NEYsCisweDQwLCAweDM3LCAweDAwLCAweEYzLCAweDAwLCAweEVDLCAweDAyLCAweEUwLCAweDNGLCAweEMwLCAweDFDLCAweDAwLCAweDMxLAorMHgwMCwgMHhDQywgMHgwMSwgMHhGMCwgMHgwNywgMHg4MCwgMHg1QywgMHgwMCwgMHg1MywgMHgwMCwgMHhDQywgMHgwNywgMHhGMCwKKzB4M0YsIDB4RTAsIDB4MDAsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4QzYsCisweDAwLCAweDExLCAweDIyLCAweDQ0LCAweDA2LCAweDEwLCAweDMxLCAweDQwLCAweDE0LCAweDAwLCAweDVELCAweDAxLCAweDM0LAorMHgwNywgMHgxMCwgMHg1OSwgMHg0MiwgMHgzMCwgMHg0MCwgMHg5MSwgMHg0MCwgMHg1NCwgMHgwMywgMHgxMCwgMHg3RCwgMHg0MCwKKzB4RjcsIDB4MDAsIDB4OUIsIDB4MDEsIDB4NDQsIDB4MDYsIDB4RDAsIDB4MDUsIDB4NTAsIDB4MzQsIDB4MDAsIDB4MTEsIDB4MDcsCisweDRDLCAweDBDLCAweEQwLCAweDNELCAweDQwLCAweEQ0LCAweDAyLCAweEQxLCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDM5LAorMHg1MCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHhDMiwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4NjQsIDB4MTMsIDB4OTAsIDB4MTksIDB4NDEsIDB4NzYsIDB4MDAsIDB4REQsIDB4ODgsIDB4NzQsIDB4MDcsCisweDE0LCAweDA5LCAweDQ4LCAweDM0LCAweDAwLCAweDk5LCAweDQwLCAweDQ2LCAweDEyLCAweDEwLCAweDBELCAweDQ4LCAweDY3LAorMHgwMCwgMHhEMSwgMHgwNCwgMHg2NCwgMHgwNCwgMHhEMCwgMHgyQywgMHg0MCwgMHhCMiwgMHgwMSwgMHgxNSwgMHgwMSwgMHg2NCwKKzB4MDUsIDB4RDAsIDB4OEQsIDB4NDAsIDB4MzEsIDB4MDQsIDB4NTEsIDB4MDAsIDB4NDQsIDB4MTMsIDB4RDAsIDB4MkQsIDB4NDAsCisweDA2LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDAwLCAweDAwLCAweDAxLAorMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwMCwgMHg1MCwgMHg2MiwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwNywgMHgxNCwKKzB4MDksIDB4NDIsIDB4MzQsIDB4MDAsIDB4OTEsIDB4MDAsIDB4MTQsIDB4MDIsIDB4MTAsIDB4MEMsIDB4NjAsIDB4MjMsIDB4NDAsCisweEM5LCAweDAwLCAweDA0LCAweDAwLCAweEQwLCAweDBDLCAweDQwLCAweDIyLCAweDgwLCAweDA1LCAweDgwLCAweDA0LCAweDAwLAorMHhEMCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHg0MCwKKzB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MEUsIDB4MDAsIDB4NTMsIDB4MDAsCisweEVDLCAweDAzLCAweEIyLCAweDAzLCAweEQwLCAweDM2LCAweDAwLCAweERGLCAweDgwLCAweDdDLCAweDAzLCAweDE0LCAweDA5LAorMHhEMCwgMHgzNiwgMHgwMCwgMHg5MiwgMHgwMCwgMHg0QywgMHgwMywgMHgzNCwgMHgwRCwgMHg0MCwgMHgyNywgMHgxMCwgMHg0MywKKzB4MDAsIDB4NkMsIDB4MDAsIDB4RjAsIDB4MEQsIDB4RDAsIDB4MTYsIDB4MDAsIDB4MTcsIDB4MDAsIDB4NkMsIDB4MDEsIDB4RjAsCisweDA0LCAweEQwLCAweDM1LCAweDAwLCAweEQzLCAweDAwLCAweDRDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLCAweDAwLCAweEMwLAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgwQiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjEsIDB4MDMsIDB4QzAsIDB4M0QsIDB4MDAsIDB4RkYsIDB4MDAsIDB4QkMsIDB4MDEsIDB4RjQsIDB4MEIsIDB4QzAsCisweDNGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLAorMHhCNCwgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRCwgMHgwMCwgMHgzQiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwKKzB4QzAsIDB4M0UsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MTcsIDB4NjAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDAyLAorMHhGMCwgMHgxRiwgMHhDOCwgMHgzRiwgMHgwMSwgMHhCRiwgMHgyMiwgMHhGQywgMHgwQSwgMHgzMCwgMHgwQiwgMHhDMCwgMHhCRiwKKzB4MDUsIDB4RUYsIDB4MDksIDB4RUMsIDB4MTAsIDB4QjAsIDB4M0YsIDB4QzAsIDB4QkQsIDB4MDAsIDB4QjMsIDB4MDQsIDB4Q0MsCisweDgyLCAweDMyLCAweDJGLCAweEM0LCAweDJGLCAweDQwLCAweEYyLCAweDAxLCAweENDLCAweDEzLCAweEYwLCAweDEyLCAweDQ0LAorMHg3QSwgMHgyMCwgMHgzMywgMHhDQywgMHhFQywgMHgwNiwgMHg5MCwgMHgxRiwgMHg0MCwgMHgwRSwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDgsIDB4NzcsIDB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4MjYsIDB4RDAsCisweDFELCAweDQwLCAweEJGLCAweDA1LCAweDFELCAweDAyLCAweDc0LCAweDM4LCAweDEwLCAweEMxLCAweDQwLCAweEJGLCAweDAwLAorMHhERCwgMHgwMCwgMHg2NCwgMHgyQywgMHgwNCwgMHg0RCwgMHg0MCwgMHhCRiwgMHgwOCwgMHgxMSwgMHgxNCwgMHg3NCwgMHg0MCwKKzB4MTAsIDB4NkYsIDB4NDAsIDB4RTcsIDB4MDAsIDB4RDUsIDB4MDEsIDB4QzQsIDB4MEYsIDB4RDAsIDB4MTksIDB4NDAsIDB4NzQsCisweDAwLCAweDAxLCAweDIyLCAweDQ0LCAweDA2LCAweDEyLCAweDFELCAweDQwLCAweDBDLCAweDAwLCAweDBDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzMSwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHg4MCwgMHhEOCwgMHgwQywKKzB4NDAsIDB4QjMsIDB4MDAsIDB4OEQsIDB4MjYsIDB4MzQsIDB4MDIsIDB4MTAsIDB4MDAsIDB4NDEsIDB4MzMsIDB4MTEsIDB4Q0QsCisweDgwLCAweDI0LCAweDAyLCAweDAwLCAweDBDLCAweDQwLCAweDMxLCAweDgzLCAweDgxLCAweDhDLCAweDA0LCAweEIyLCAweDEyLAorMHgyQywgMHg2MCwgMHgwMywgMHg0MiwgMHhENSwgMHgwMCwgMHgxNCwgMHgyMywgMHhEMCwgMHgwOCwgMHg0MCwgMHgzMywgMHgwMCwKKzB4NDUsIDB4MjYsIDB4NjQsIDB4MDEsIDB4OTAsIDB4MEMsIDB4NDAsIDB4NEUsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweDI4LCAweDM1LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDA0LCAweEQwLCAweDBELCAweDQ0LAorMHgzNywgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwNCwgMHgxMCwgMHgxMSwgMHg0NCwgMHgzNywgMHgwMCwgMHhERCwgMHgwMCwKKzB4NjYsIDB4ODQsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDYsIDB4MTgsIDB4MEQsCisweDQwLCAweDQ3LCAweDAwLCAweDU1LCAweDExLCAweDU0LCAweDAzLCAweEQwLCAweDE5LCAweDQzLCAweDM3LCAweDgwLCAweDExLAorMHgxOCwgMHg0NCwgMHgwRSwgMHgxMCwgMHgwRCwgMHg0MiwgMHgwQywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MjAsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MUUsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsCisweDAwLCAweDlGLCAweDg3LCAweDdDLCAweEM0LCAweDMwLCAweDE5LCAweEMyLCAweDM3LCAweDE4LCAweERGLCAweDAwLCAweDZDLAorMHgwNCwgMHgzMCwgMHgwRCwgMHhDNCwgMHgzNSwgMHgwOCwgMHgxMywgMHgwMSwgMHg0QywgMHgxRSwgMHgzNCwgMHgwRCwgMHhDMiwKKzB4NjcsIDB4NDAsIDB4RDcsIDB4MDEsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MTksIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTUsIDB4MDIsCisweDJDLCAweDBFLCAweEIwLCAweDBELCAweEMwLCAweDIyLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNywgMHg4MCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHg4MiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHg5MCwKKzB4M0YsIDB4OTAsIDB4QkMsIDB4MDAsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDMsIDB4OUMsIDB4NDAsCisweDcwLCAweDBGLCAweEMwLCAweDM3LCAweDQwLCAweDNGLCAweDQwLCAweEZDLCAweDAwLCAweDcwLCAweDBGLCAweEMwLCAweDJGLAorMHgwMCwgMHhCRiwgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwgMHgwQiwgMHhDMCwgMHgzQywgMHgwQywgMHgyRiwgMHgwMSwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDA4LCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweDkzLAorMHgwMiwgMHg3QywgMHgwQSwgMHgzMCwgMHgwMSwgMHhDMCwgMHgzNCwgMHg0MCwgMHhEMywgMHgwNCwgMHg0RSwgMHgwMiwgMHhGMSwKKzB4MEQsIDB4QzAsIDB4MzAsIDB4MDAsIDB4MTMsIDB4MDgsIDB4N0MsIDB4MEEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjQsIDB4MDAsCisweEQzLCAweDIyLCAweDdDLCAweDAzLCAweDMwLCAweDI5LCAweEMwLCAweDM0LCAweDAwLCAweDEzLCAweDAyLCAweDRDLCAweDBELAorMHhGMCwgMHgwRCwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQiwgMHhBMCwKKzB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MTIsIDB4RDEsIDB4MEQsIDB4MDAsIDB4M0YsIDB4MDAsIDB4OTEsIDB4ODAsCisweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDNDLCAweDI0LCAweERCLCAweDAyLCAweDY2LCAweDRBLCAweEQwLCAweDBELAorMHg0OCwgMHhCQywgMHg0MiwgMHgxQiwgMHg4QiwgMHg3NCwgMHgwMiwgMHhGMCwgMHgzRiwgMHhDMSwgMHg2MiwgMHgwMSwgMHg4QSwKKzB4MDQsIDB4RjAsIDB4MDMsIDB4QjEsIDB4QTgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MUIsIDB4MEUsIDB4NDQsIDB4MEYsIDB4RDAsCisweDBDLCAweDQwLCAweDZGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDMyLAorMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwKKzB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4RjAsIDB4MDksIDB4RDEsIDB4ODEsIDB4MjQsIDB4MEUsIDB4RDAsIDB4MEMsIDB4NDgsCisweDcwLCAweDAwLCAweDg5LCAweDAzLCAweDc0LCAweDAwLCAweEQwLCAweDZDLCAweDQyLCAweDAyLCAweDAxLCAweEM1LCAweDMwLAorMHgyMCwgMHgwNywgMHgwMCwgMHhCQywgMHg0MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywKKzB4NDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEQsIDB4ODAsIDB4NzgsIDB4MDAsCisweEVELCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweDYxLCAweDExLCAweEI0LCAweDA3LAorMHgxMCwgMHgxNiwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFMSwgMHgwMSwgMHhBNCwgMHgyNSwgMHhEMCwgMHgxRSwgMHg0MCwgMHg3OCwKKzB4MDAsIDB4NjEsIDB4MDEsIDB4QjQsIDB4MDUsIDB4NTAsIDB4MUUsIDB4NDAsIDB4N0EsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsCisweDA3LCAweDkwLCAweDBGLCAweDQwLCAweDc4LCAweDA0LCAweEU5LCAweDAxLCAweDg0LCAweDBFLCAweEQwLCAweDFFLCAweDQwLAorMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHhDRiwKKzB4MDAsIDB4M0MsIDB4MDEsIDB4RDAsIDB4OEMsIDB4QzAsIDB4MzcsIDB4MDAsIDB4NDMsIDB4MDAsIDB4N0MsIDB4MDMsIDB4MTAsCisweDhELCAweEQwLCAweDM0LCAweDIyLCAweEMxLCAweDkwLCAweDA0LCAweDJCLCAweEQ4LCAweDBELCAweEQwLCAweDMwLCAweDA2LAorMHhDOSwgMHgwMCwgMHgzQywgMHgwMSwgMHhEMCwgMHg0RCwgMHhDMCwgMHgxMiwgMHgwMCwgMHhDMywgMHgwNCwgMHgyQywgMHg1MywKKzB4MzAsIDB4OEMsIDB4ODAsIDB4MzAsIDB4MDAsIDB4QzMsIDB4RTQsIDB4MEMsIDB4ODMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4NEIsCisweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDNELCAweDAwLCAweEZGLCAweDAwLAorMHhGQywgMHgwMSwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHg0MCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGNCwgMHg4RiwKKzB4QzAsIDB4M0YsIDB4MDIsIDB4RkYsIDB4MDAsIDB4NUQsIDB4QTEsIDB4RjgsIDB4MEYsIDB4QzAsIDB4QkYsIDB4MDAsIDB4RkYsCisweDgwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMxLCAweDFCLCAweDAyLCAweEZCLCAweDAwLCAweEIwLCAweDRCLCAweEYwLAorMHhDRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgwQiwgMHg2MCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4MzcsIDB4ODAsIDB4REYsIDB4MDAsIDB4N0MsCisweDAxLCAweDcwLCAweDBELCAweEM0LCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDA1LCAweDMwLCAweDBELCAweEMyLAorMHhCNSwgMHgwMiwgMHhDRiwgMHgwMCwgMHg1RCwgMHgwMywgMHgzOCwgMHgxRCwgMHhDMCwgMHgzNSwgMHgwMSwgMHhERiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4RjAsIDB4NkQsIDB4QzAsIDB4MTAsIDB4MDAsIDB4QzMsIDB4MDAsIDB4NkMsIDB4MTMsIDB4RjAsIDB4MDksCisweEMwLCAweDM3LCAweEEwLCAweERGLCAweDAwLCAweDRDLCAweDAzLCAweEQwLCAweDBDLCAweEMwLCAweDQyLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4OCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4MDAsIDB4M0IsIDB4MTMsIDB4NkMsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4M0IsCisweDA0LCAweEVELCAweDAwLCAweDk0LCAweDAzLCAweDQxLCAweDBFLCAweDQwLCAweDM4LCAweDAwLCAweEVELCAweDAwLCAweEI0LAorMHgwMSwgMHhEMCwgMHg4RiwgMHhDMCwgMHgzQSwgMHgwMCwgMHhFNSwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MiwKKzB4M0IsIDB4ODAsIDB4Q0QsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDYsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDc5LCAweDg4LCAweEU1LCAweDIxLCAweEI0LCAweDQ3LCAweEQwLAorMHgxRSwgMHg0NCwgMHg3QiwgMHgxMiwgMHhFQywgMHgwMSwgMHgzNCwgMHgwNywgMHg5MCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMSwKKzB4RUQsIDB4MjEsIDB4MTQsIDB4MDcsIDB4MDEsIDB4MUUsIDB4NEMsIDB4NzksIDB4MDIsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsCisweEQ4LCAweDVGLCAweDQwLCAweDc4LCAweDAwLCAweEY1LCAweDExLCAweEI0LCAweDE3LCAweEQwLCAweDNBLCAweDQwLCAweDdCLAorMHgwMCwgMHhFRCwgMHgyMSwgMHg4NCwgMHg0NywgMHhEMCwgMHgxRSwgMHg0OCwgMHgxMiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzYsIDB4MEYsIDB4RDAsIDB4MEMsCisweDQwLCAweDMzLCAweDAwLCAweENELCAweDAxLCAweDM0LCAweDAzLCAweDEwLCAweDlDLCAweDQwLCAweDMzLCAweDAwLCAweDhELAorMHhBMCwgMHgxNSwgMHgwNywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMCwgMHgxMCwgMHhERCwgMHgwMywgMHgzNCwgMHgwNywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4RjIsIDB4MDAsIDB4QzUsIDB4MDEsIDB4MTQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MzMsIDB4ODAsCisweERELCAweDBELCAweDA0LCAweDA3LCAweEQwLCAweDBDLCAweDQwLCAweDVBLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHgxNSwgMHgwOCwgMHg1RiwgMHgwMCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4MTcsIDB4MDAsIDB4N0YsIDB4MEUsIDB4RjQsIDB4MDEsIDB4QjAsIDB4QTcsIDB4QzIsIDB4MTUsIDB4MDgsIDB4NEYsIDB4MDUsCisweERDLCAweDFELCAweDM1LCAweDA1LCAweEM0LCAweDE1LCAweDAwLCAweDdGLCAweDg1LCAweEZDLCAweEVELCAweEYwLCAweDA1LAorMHhDMCwgMHgxQywgMHg4MSwgMHg3NywgMHgwMSwgMHg3QywgMHgwMSwgMHhGMSwgMHgwNiwgMHhDMCwgMHgxNywgMHgwOCwgMHg3RCwKKzB4MDIsIDB4Q0QsIDB4MDUsIDB4RjAsIDB4MDQsIDB4QzAsIDB4NUUsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHgwMiwgMHg3OCwgMHgwNCwgMHg3NCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgxRSwgMHgwMCwgMHg3RCwKKzB4NDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDYsIDB4N0MsIDB4MDAsIDB4QzAsIDB4MDAsIDB4QzAsCisweDg3LCAweDgxLCAweDFGLCAweDEwLCAweDY0LCAweDA4LCAweEYyLCAweDIxLCAweEMxLCAweDg3LCAweDIwLCAweDFGLCAweDAyLAorMHg3RCwgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0OSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDIsIDB4MzAsIDB4MDksIDB4RTAsIDB4MjcsIDB4MDAsCisweDgzLCAweDAwLCAweDRDLCAweDAyLCAweEYwLCAweDA5LCAweEM4LCAweDI2LCAweDAyLCAweDlGLCAweDA0LCAweDBDLCAweDAyLAorMHgzNCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMSwgMHg5QywgMHgwOCwgMHgwQywgMHgwMiwgMHgzMCwgMHg1OSwgMHhDMCwgMHhBMCwKKzB4MjAsIDB4OTMsIDB4MDAsIDB4NUMsIDB4ODYsIDB4RjAsIDB4MTksIDB4QzAsIDB4QTQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsCisweDA2LCAweEYwLCAweDA5LCAweEQwLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxNCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwKKzB4MDAsIDB4NDUsIDB4MDIsIDB4RDAsIDB4MDksIDB4RDAsIDB4QTQsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NkMsIDB4NDIsIDB4NTAsCisweDA5LCAweDQwLCAweDI3LCAweDIxLCAweDlELCAweDAyLCAweDQ1LCAweDAyLCAweDE0LCAweDI5LCAweDUwLCAweEU0LCAweDQwLAorMHg4MSwgMHgxMywgMHg0NCwgMHg4NiwgMHhEMCwgMHg4OSwgMHg0MCwgMHg2NCwgMHgwOCwgMHg5RCwgMHgwMiwgMHg0NCwgMHgxQSwKKzB4RDAsIDB4MTksIDB4NDAsIDB4MDQsIDB4ODAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsCisweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDIzLCAweDAwLCAweDkxLCAweDA4LAorMHg0NCwgMHgwMiwgMHhEOSwgMHgwQywgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg2NSwgMHgyMiwgMHg5MiwgMHgwOSwKKzB4NDQsIDB4MjcsIDB4MDAsIDB4REQsIDB4MDIsIDB4NTYsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDgsIDB4MzQsIDB4MDQsIDB4OTEsCisweEE0LCAweDU0LCAweDJBLCAweEQxLCAweDI5LCAweDUwLCAweEE2LCAweDAwLCAweDlELCAweDBBLCAweDY0LCAweDIyLCAweEQwLAorMHg4OSwgMHg2MCwgMHg2MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwKKzB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MTIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MzEsIDB4ODEsIDB4MDQsIDB4MDQsCisweDEyLCAweEQ4LCAweDQ4LCAweDRDLCAweDIwLCAweDAxLCAweDhELCAweDAxLCAweDI0LCAweDEyLCAweDkwLCAweDA4LCAweDQwLAorMHgyMywgMHgyMSwgMHg4RCwgMHgyNCwgMHgxNiwgMHgxMiwgMHg1MCwgMHg0QywgMHgwNCwgMHgyMCwgMHgwMSwgMHg5MCwgMHgyMCwKKzB4MDAsIDB4MTIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjIsIDB4MDAsIDB4OEQsIDB4MDgsIDB4MjQsIDB4MDIsIDB4RDAsIDB4MDgsCisweDQwLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLAorMHgxRiwgMHgwMCwgMHg3NCwgMHgwMCwgMHgzMCwgMHgwMSwgMHg0MCwgMHg4NywgMHgwQSwgMHg1MywgMHgwQSwgMHg0QywgMHgyOCwKKzB4RjAsIDB4QTEsIDB4QzIsIDB4OTQsIDB4MDIsIDB4MUYsIDB4MEEsIDB4NkMsIDB4MDAsIDB4MzAsIDB4QTAsIDB4QzAsIDB4ODcsCisweDAyLCAweDFGLCAweDBBLCAweDVDLCAweDI4LCAweDcwLCAweEExLCAweDgwLCAweDA0LCAweDEwLCAweDEyLCAweDAwLCAweDVDLAorMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwgMHgxRCwgMHgzNiwgMHg2RCwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwKKzB4NzQsIDB4RTAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAwLCAweEZDLCAweDIzLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQyLCAweEJGLCAweDA4LCAweEZDLCAweDIyLCAweEYwLAorMHg4QiwgMHg0MCwgMHgyNywgMHgwMiwgMHhCRiwgMHgyMCwgMHhGRCwgMHgyMiwgMHg3MCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMiwKKzB4QkYsIDB4MDgsIDB4RTgsIDB4MjIsIDB4QjAsIDB4ODksIDB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MjIsCisweEYzLCAweDBCLCAweEMwLCAweDI1LCAweDAwLCAweEJGLCAweDA0LCAweERDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDc3LAorMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgyMCwKKzB4RkMsIDB4MTYsIDB4MzAsIDB4MDksIDB4QzAsIDB4RTcsIDB4MjAsIDB4QkYsIDB4MjEsIDB4NkMsIDB4MTMsIDB4RjAsIDB4RDksCisweEM2LCAweEVGLCAweDA4LCAweEIzLCAweDAyLCAweENDLCAweDE2LCAweEYwLCAweDA5LCAweEMwLCAweDZGLCAweDA0LCAweEIzLAorMHgwNywgMHg0QywgMHgxRSwgMHhGMCwgMHg1QiwgMHhDMCwgMHg2OCwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgxMiwgMHgzNCwKKzB4MEIsIDB4QzIsIDB4MkYsIDB4MjAsIDB4QkYsIDB4MDAsIDB4QzQsIDB4MDIsIDB4QjQsIDB4MEIsIDB4QzAsIDB4NzcsIDB4ODAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LCAweDA3LCAweDAwLCAweDFELCAweDAwLCAweDc0LAorMHgyOCwgMHgxMCwgMHgwMSwgMHg0QywgMHg0NywgMHgwOCwgMHgxQywgMHgxNywgMHg0NSwgMHg1MSwgMHhEMCwgMHhGNSwgMHg0MCwKKzB4QzcsIDB4NDAsIDB4MTEsIDB4MDUsIDB4NTQsIDB4MDgsIDB4NzAsIDB4NTEsIDB4NDEsIDB4NDcsIDB4NDAsIDB4MTEsIDB4MDMsCisweDQ1LCAweDBELCAweEQwLCAweDcxLCAweDUxLCAweDg0LCAweDQwLCAweDE1LCAweDAwLCAweDc0LCAweDAwLCAweDExLCAweDAxLAorMHg0MCwgMHgwNywgMHgwMCwgMHgxRCwgMHgyMCwgMHg0NCwgMHgwMSwgMHgxMCwgMHgwMSwgMHg0MCwgMHg2MiwgMHgwMCwgMHgwQywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4QTAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDMsCisweDEwLCAweDA4LCAweDQwLCAweEEzLCAweDAxLCAweDhELCAweDAyLCAweDA0LCAweEIyLCAweEQwLCAweDA4LCAweDQwLCAweEEzLAorMHgwMSwgMHg4MSwgMHgwMCwgMHgyNSwgMHgwRSwgMHhDMSwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwNCwgMHg4MSwgMHgwNywgMHgyNCwKKzB4MzIsIDB4NTAsIDB4ODgsIDB4NDAsIDB4QTIsIDB4MjAsIDB4ODEsIDB4NDAsIDB4MzQsIDB4MjIsIDB4NTAsIDB4MDgsIDB4NDAsCisweDIzLCAweDAwLCAweDhELCAweDAwLCAweDQ2LCAweDAzLCAweEQxLCAweDA4LCAweDQwLCAweDRCLCAweDgwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgyMiwgMHgxMCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MTQsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MzcsIDB4MDAsCisweDkxLCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDgwLCAweDkxLCAweDQwLCAweDY0LCAweDEyLAorMHhEOCwgMHgwOSwgMHg2MCwgMHgyNiwgMHgwMSwgMHg5NSwgMHgwMiwgMHg2NCwgMHgwMiwgMHg1OCwgMHgwRCwgMHg0MCwgMHgyNywKKzB4MDAsIDB4REQsIDB4MDQsIDB4NDQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDAsIDB4NjIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDI4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDBBLCAweDM0LCAweDA5LAorMHhDMCwgMHgyNywgMHgwOCwgMHg5RiwgMHg0MiwgMHg0QywgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHgyNywgMHgyMCwgMHg5MSwKKzB4MDgsIDB4NkQsIDB4MEEsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MjAsIDB4OTMsIDB4MDAsIDB4NkMsIDB4MDYsIDB4NzAsCisweDA5LCAweDQyLCAweEE2LCAweEExLCAweDkzLCAweDIyLCAweDc0LCAweDAyLCAweDc4LCAweDA5LCAweEMxLCAweDI3LCAweDAwLAorMHg5RiwgMHgwNiwgMHg0RCwgMHgwMiwgMHhGNCwgMHgwOSwgMHhDMCwgMHgxNywgMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTYsIDB4MDAsIDB4MjUsIDB4MDgsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDgwLCAweDdDLCAweDIyLCAweEYwLCAweDk5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDExLAorMHg1QywgMHgxNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg4RiwgMHgxMywgMHg1QywgMHgwNiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4NjUsIDB4ODAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzEsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAxLCAweDdFLCAweDIyLCAweEI0LCAweDA5LCAweEMwLCAweDVCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGOCwgMHgwMSwgMHhDMCwgMHgwNywKKzB4ODAsIDB4MTMsIDB4MDYsIDB4N0MsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NDcsIDB4ODAsIDB4MUYsIDB4MDAsIDB4NEMsCisweDAwLCAweDcwLCAweDAxLCAweEMwLCAweDQ3LCAweDEwLCAweDFGLCAweDAwLCAweDdDLCAweDA4LCAweDM0LCAweDExLCAweEMwLAorMHg4NywgMHgwNCwgMHgxMywgMHgyNiwgMHgyQywgMHgxMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwNCwKKzB4N0MsIDB4NDgsIDB4MzAsIDB4ODEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE0LCAweDIwLCAweDE0LCAweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweDQwLCAweDE3LCAweEMwLAorMHg3MCwgMHgwMCwgMHg3NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHgwMCwgMHg1RiwgMHg4MCwgMHg2RiwgMHg0NiwgMHhDNSwgMHgwNSwKKzB4NzAsIDB4MDUsIDB4NDAsIDB4MUYsIDB4MDAsIDB4N0QsIDB4ODEsIDB4NzQsIDB4MDEsIDB4MzAsIDB4NDcsIDB4NDAsIDB4MUIsCisweDAwLCAweDcxLCAweDAzLCAweENDLCAweDA5LCAweDYwLCAweDM3LCAweDQwLCAweDFDLCAweEEwLCAweDdELCAweDAyLCAweEI0LAorMHgwOSwgMHgxMCwgMHgwNSwgMHg0MCwgMHg0MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKzB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzEsIDB4MTAsIDB4RDEsCisweDAzLCAweDM0LCAweDAzLCAweEQyLCAweDBDLCAweDQ4LCAweDc3LCAweDBBLCAweENELCAweDAzLCAweDA0LCAweDA3LCAweEQzLAorMHgwQywgMHg0NCwgMHgzNywgMHgwMCwgMHhDRCwgMHgwOCwgMHgzNiwgMHgwMywgMHgxMCwgMHgxRCwgMHg0MCwgMHhCMSwgMHg2MCwKKzB4MDEsIDB4MDIsIDB4MDQsIDB4MjMsIDB4RDAsIDB4M0MsIDB4NDAsIDB4ODEsIDB4MDQsIDB4REQsIDB4ODAsIDB4MzQsIDB4MEIsCisweDA0LCAweDFDLCAweDYwLCAweDQzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLAorMHgzOCwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFMSwgMHgwMiwKKzB4QjYsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RTUsIDB4ODAsIDB4ODUsIDB4MDgsIDB4NTAsIDB4MEUsCisweDYwLCAweDlCLCAweDAwLCAweDZELCAweDQwLCAweDM2LCAweDA3LCAweDE4LCAweDBFLCAweDQwLCAweDNCLCAweDQwLCAweDIxLAorMHgxMCwgMHg4NiwgMHgwMywgMHg1MCwgMHgxNywgMHg0OSwgMHgwOCwgMHgwMCwgMHhBRCwgMHgwMiwgMHhCNiwgMHgwMywgMHgxMCwKKzB4MEUsIDB4NjAsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NzgsCisweDAwLCAweEVGLCAweDAxLCAweEJDLCAweDA2LCAweEQwLCAweDFFLCAweEMyLCAweDcxLCAweDAyLCAweDYxLCAweDAxLCAweEJDLAorMHgzRiwgMHhGMCwgMHhGRSwgMHhDMCwgMHg1QiwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4RCwgMHgwNSwgMHg3OCwgMHgzRSwgMHg0MSwKKzB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QkMsIDB4MDcsIDB4MzAsIDB4MUUsIDB4QzIsIDB4NjksIDB4MDAsIDB4NjMsIDB4QTAsCisweDhDLCAweDA3LCAweEQxLCAweDEyLCAweEMwLCAweDQ5LCAweDAwLCAweEVELCAweDgxLCAweEJDLCAweDA2LCAweDM4LCAweDFFLAorMHhDMCwgMHg1MywgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCMCwgMHgzNSwgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsCisweEMwLCAweDBELCAweDQwLCAweDE3LCAweDAwLCAweENGLCAweDAwLCAweDdDLCAweDAwLCAweEYxLCAweDJELCAweEMwLCAweDM3LAorMHgyMCwgMHg1RiwgMHg4MCwgMHg3QywgMHhCMywgMHhDMCwgMHgwRCwgMHhDOCwgMHgyNywgMHgwMCwgMHg0RiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4MDQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4M0MsIDB4MDAsIDB4RjEsIDB4MEQsIDB4QzgsCisweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEwLCAweDdGLCAweDAwLCAweEZGLAorMHgwMSwgMHhGQywgMHgxMywgMHhGOCwgMHg4RiwgMHhDMCwgMHg3RiwgMHgwNCwgMHhGNywgMHgwOSwgMHhDQywgMHg4NywgMHhGMCwKKzB4MUYsIDB4QzAsIDB4N0MsIDB4MDAsIDB4RUIsIDB4MDEsIDB4RUMsIDB4MDcsIDB4RjksIDB4OUYsIDB4QzAsIDB4N0YsIDB4MDAsCisweEZGLCAweDA5LCAweENDLCAweDBGLCAweEIxLCAweDFGLCAweEMwLCAweDNCLCAweDAwLCAweDMzLCAweDAxLCAweEVFLCAweDI3LAorMHgzMCwgMHgxNywgMHhDMCwgMHg0RiwgMHgwMCwgMHg3RiwgMHg4MSwgMHhDQywgMHgwNSwgMHhDMCwgMHg5QSwgMHhDMCwgMHgxQSwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDgsCisweEI0LCAweDIzLCAweEQwLCAweDBFLCAweDQ4LCAweDNCLCAweDAxLCAweEVELCAweDAwLCAweDg0LCAweDAzLCAweEQxLCAweDBFLAorMHg0RSwgMHgzOCwgMHg0MCwgMHhFMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHg3OCwgMHgwRSwgMHg0MCwgMHgxQiwgMHgwOCwgMHhGRCwKKzB4MDAsIDB4ODQsIDB4MTMsIDB4MTAsIDB4MEUsIDB4NDIsIDB4M0IsIDB4MDMsIDB4QTEsIDB4ODAsIDB4QkMsIDB4MDMsIDB4MTQsCisweDA2LCAweDQwLCAweDBCLCAweDA4LCAweDJELCAweDk4LCAweDg0LCAweDIwLCAweDkwLCAweDBBLCAweDQwLCAweDU0LCAweDIwLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwKKzB4MEIsIDB4RDAsIDB4OEUsIDB4NDAsIDB4M0IsIDB4MjgsIDB4RUQsIDB4MDAsIDB4QTQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsCisweDFBLCAweDAwLCAweEUxLCAweDAwLCAweDg0LCAweDQxLCAweEQwLCAweDBFLCAweDQ0LCAweDFCLCAweDAwLCAweEVELCAweDkwLAorMHhBNCwgMHhDMywgMHgxOCwgMHg4NiwgMHg0MCwgMHhBQiwgMHgwQSwgMHg2MSwgMHgwOCwgMHhBNCwgMHgwMSwgMHg1NCwgMHgwNiwKKzB4NDAsIDB4MEIsIDB4MDAsIDB4NkQsIDB4MDAsIDB4ODQsIDB4NDAsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MjIsIDB4MDEsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLAorMHhEMCwgMHgwQywgMHgwMCwgMHgzMywgMHgxMCwgMHg5RCwgMHgwQiwgMHgyNCwgMHgyRiwgMHhEMCwgMHgxQywgMHg1QSwgMHgwMiwKKzB4MDAsIDB4QzEsIDB4NDAsIDB4MDUsIDB4MDEsIDB4NTAsIDB4MEMsIDB4NDAsIDB4MDcsIDB4MDAsIDB4OEQsIDB4MDIsIDB4MjQsCisweDA3LCAweDFBLCAweDA4LCAweDQwLCAweDYzLCAweEMwLCAweDQxLCAweDAwLCAweDE0LCAweDAxLCAweDUwLCAweDI0LCAweDQwLAorMHgxMywgMHgyMCwgMHgwRCwgMHgwMywgMHgwNSwgMHgwQywgMHg5MCwgMHgwQywgMHg0MCwgMHgwOCwgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4M0MsIDB4NDIsIDB4RDAsCisweDBELCAweEMwLCAweDNGLCAweDAwLCAweDlGLCAweDAwLCAweEVDLCAweDAzLCAweEYwLCAweDFGLCAweEMwLCAweDI2LCAweDAwLAorMHhDMSwgMHgwMCwgMHg0QywgMHgyMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMSwgMHhFQywgMHgwRiwKKzB4MTQsIDB4MDEsIDB4RTIsIDB4NzcsIDB4MDQsIDB4MTMsIDB4MDIsIDB4NjQsIDB4MDMsIDB4NTAsIDB4QTUsIDB4NDAsIDB4MDcsCisweDAwLCAweERGLCAweDAzLCAweDRDLCAweDBGLCAweEQwLCAweDBELCAweEMyLCAweDU2LCAweDAwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhERCwgMHgwMCwgMHg3QywgMHgwMywgMHhGMSwgMHgwRCwKKzB4NDAsIDB4MzcsIDB4MjAsIDB4OUYsIDB4MTAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4Q0QsIDB4QzAsIDB4QTEsIDB4MTAsIDB4OTcsCisweDAxLCAweDdELCAweDAwLCAweDcwLCAweDBELCAweEMwLCAweDg3LCAweDAwLCAweDFGLCAweDA0LCAweDVDLCAweDQzLCAweDcyLAorMHgyMSwgMHhFMCwgMHhBNywgMHg4MCwgMHgxRiwgMHgyOCwgMHg3NCwgMHgwMywgMHhBMCwgMHgwNSwgMHhDMCwgMHgwNywgMHgwMCwKKzB4OUQsIDB4MDQsIDB4N0MsIDB4MEIsIDB4QjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDNGLCAweDAwLCAweEZGLCAweDIwLCAweEZDLCAweDAyLCAweEIwLCAweDBGLCAweEUwLAorMHgzQiwgMHhBMCwgMHgxQiwgMHgwMCwgMHhDRSwgMHg0MywgMHgzMCwgMHgwQywgMHhDMCwgMHgyNCwgMHgwMCwgMHhGQiwgMHgwMCwKKzB4QUMsIDB4MDEsIDB4QjAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDAsIDB4QTMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4RjAsIDB4MEEsCisweEMwLCAweDI4LCAweDEwLCAweDczLCAweDU5LCAweDhDLCAweDAzLCAweDMyLCAweDQ3LCAweEMwLCAweDBDLCAweDAwLCAweEVELAorMHgwMiwgMHhDQywgMHg0NywgMHgzMCwgMHgwRiwgMHhDMCwgMHgwNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MjAsIDB4MzYsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4OTAsIDB4MEQsIDB4NDAsIDB4MzcsCisweDk4LCAweDExLCAweDAxLCAweDQ0LCAweDAzLCAweDEwLCAweDBELCAweDQyLCAweDY0LCAweDA4LCAweEQxLCAweDAxLCAweDZDLAorMHgwNCwgMHhCMCwgMHgwRCwgMHhDMiwgMHhFNywgMHgwNCwgMHgxMSwgMHgwMSwgMHg0NCwgMHgwMywgMHhEMCwgMHgzOSwgMHg0NCwKKzB4NjQsIDB4MDEsIDB4NDEsIDB4MDEsIDB4NkMsIDB4MDcsIDB4MTAsIDB4MjQsIDB4NDAsIDB4ODQsIDB4MDIsIDB4MUQsIDB4MDAsCisweDA1LCAweDAxLCAweDEwLCAweDBELCAweDRFLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHhBMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHg5MCwgMHgwRCwgMHg0OCwgMHgzNywgMHgyMCwKKzB4MTEsIDB4MDEsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NjAsIDB4NDQsIDB4MDAsIDB4RDEsIDB4MTEsIDB4NjQsIDB4MDcsCisweDkyLCAweDBELCAweDQyLCAweDY3LCAweDgwLCAweDExLCAweDAxLCAweDY0LCAweDgzLCAweDUwLCAweDExLCAweDQxLCAweDU2LAorMHgwMCwgMHgxOSwgMHgwMCwgMHg0NiwgMHgwNywgMHgxMCwgMHgwNSwgMHg0MCwgMHgwNCwgMHgwNCwgMHg1RCwgMHgwMCwgMHg0NCwKKzB4MUIsIDB4MTQsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweDgxLAorMHgwMSwgMHgwNCwgMHgwMywgMHgxNCwgMHgwQywgMHg2MCwgMHgyMCwgMHgyMCwgMHhDMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHg5MiwKKzB4MEMsIDB4NjAsIDB4MDEsIDB4OTAsIDB4MDEsIDB4MDEsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MDAsIDB4NDIsIDB4MjIsIDB4MDAsCisweENELCAweDAwLCAweDI0LCAweDAzLCAweDE0LCAweDA0LCAweDQwLCAweDIwLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDAyLAorMHgxMCwgMHgwOCwgMHg0MCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4MzYsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MEQsIDB4NDAsIDB4M0YsIDB4MDAsIDB4MTEsIDB4MjAsCisweEM0LCAweDAzLCAweDMwLCAweDBGLCAweEMwLCAweDA0LCAweDIwLCAweERCLCAweDAwLCAweDZELCAweDAxLCAweEIxLCAweDBGLAorMHg0MCwgMHgyNywgMHgxOCwgMHg5MywgMHgwMCwgMHhBQywgMHgwMywgMHg3MCwgMHgwMSwgMHhDMCwgMHgyNiwgMHgwMCwgMHg1QiwKKzB4MDAsIDB4NEMsIDB4MDEsIDB4MzAsIDB4MDUsIDB4RTAsIDB4MDQsIDB4MDAsIDB4MEYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsCisweDBELCAweEMyLCAweDA3LCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDNGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHg3OCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgxMCwgMHhCNywgMHgwMCwgMHhGQywKKzB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MTAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4NzAsIDB4MEYsIDB4QzAsCisweDJGLCAweDAwLCAweEJGLCAweDAwLCAweERDLCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDJELCAweDAwLCAweDczLCAweDAwLAorMHhCQywgMHgwMCwgMHhGMCwgMHgwNywgMHgwMCwgMHgwRiwgMHgwOCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwKKzB4QzAsIDB4MTcsIDB4NjEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4N0IsIDB4MDAsCisweDMzLCAweDAwLCAweENDLCAweDAzLCAweDMwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEEzLCAweDAwLCAweDhDLCAweDA2LAorMHhCMCwgMHgwMywgMHhDMCwgMHg2OCwgMHgwMiwgMHgzRiwgMHgwMSwgMHg4QywgMHgwNCwgMHg3MCwgMHgxQiwgMHhDMCwgMHgzRiwKKzB4MDAsIDB4MzMsIDB4MEMsIDB4Q0MsIDB4MDQsIDB4QjAsIDB4MkIsIDB4MTAsIDB4NEMsIDB4MDAsIDB4RjMsIDB4MDEsIDB4Q0MsCisweDAyLCAweDMwLCAweDBCLCAweEQwLCAweDRDLCAweDAwLCAweEIzLCAweDAwLCAweENDLCAweDA3LCAweEYwLCAweDBGLCAweEMwLAorMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgxNCwgMHgxMSwKKzB4MDAsIDB4QzQsIDB4MDMsIDB4MTEsIDB4NDksIDB4NDAsIDB4NkYsIDB4MDAsIDB4OTEsIDB4MEIsIDB4NDQsIDB4ODQsIDB4NTAsCisweDAxLCAweDQwLCAweDI0LCAweDIxLCAweDFELCAweDIxLCAweDQ0LCAweDg0LCAweDEwLCAweDE5LCAweDQwLCAweDNGLCAweDA0LAorMHgxMSwgMHgwMiwgMHg0NCwgMHgwNCwgMHgxMCwgMHgyRiwgMHg0MiwgMHgyNCwgMHgxMCwgMHhEMSwgMHgyMCwgMHg0NCwgMHgwMiwKKzB4MTAsIDB4MEMsIDB4NDEsIDB4NDQsIDB4MDAsIDB4OEIsIDB4MDAsIDB4NTQsIDB4MDcsIDB4RDAsIDB4MUQsIDB4NDAsIDB4MEMsCisweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDM3LCAweDIxLCAweDAwLCAweDAwLAorMHgwNCwgMHgwMywgMHgxMCwgMHgwOCwgMHg0MSwgMHgyMywgMHgwMCwgMHhDMSwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwMCwKKzB4NDAsIDB4MjAsIDB4MTAsIDB4MUQsIDB4MDAsIDB4MDUsIDB4MDAsIDB4NTIsIDB4MDgsIDB4NDIsIDB4MzMsIDB4ODIsIDB4ODEsCisweDAyLCAweDA0LCAweDAwLCAweDEyLCAweDY4LCAweDYwLCAweDAwLCAweDAwLCAweEQxLCAweDQwLCAweDA0LCAweDA2LCAweDUwLAorMHg1OCwgMHg0MCwgMHgwMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgyNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHg0RSwgMHg4MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4MDgsIDB4NTEsIDB4MDEsIDB4NDQsCisweDAzLCAweDEwLCAweDA5LCAweDQwLCAweDY3LCAweDQwLCAweEQxLCAweDAwLCAweDQ1LCAweDAwLCAweDUwLCAweDExLCAweDUwLAorMHgzNCwgMHgwMCwgMHgxRCwgMHgwMSwgMHg0NCwgMHg0NCwgMHgxMSwgMHgxOSwgMHg0MSwgMHgzNywgMHgwMCwgMHg5MSwgMHgwMCwKKzB4NDAsIDB4MDQsIDB4MTgsIDB4MEMsIDB4NjAsIDB4NDAsIDB4NDAsIDB4RDEsIDB4MDQsIDB4NDQsIDB4MDYsIDB4NTAsIDB4NDEsCisweDQwLCAweDQ0LCAweDIwLCAweEQ5LCAweDAwLCAweDc0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDBFLCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMCwgMHg3MywgMHgwMCwgMHgxMywgMHgxMywgMHg0RCwgMHgwMywKKzB4MzQsIDB4MDEsIDB4QzAsIDB4NjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MzksIDB4QzgsIDB4MjQsCisweDEwLCAweDBGLCAweDAzLCAweDRDLCAweDBDLCAweDcwLCAweDE5LCAweEM4LCAweDM3LCAweDQwLCAweDEzLCAweDA0LCAweDRDLAorMHgxOCwgMHgzNCwgMHgwOSwgMHhDMCwgMHhFNCwgMHgwMCwgMHhDMywgMHgwMCwgMHg0RCwgMHgwNiwgMHg3MCwgMHgxRCwgMHhDMCwKKzB4QzQsIDB4MDAsIDB4OTMsIDB4MDEsIDB4NkMsIDB4MDMsIDB4RjAsIDB4NEQsIDB4RDAsIDB4MDIsIDB4MjAsIDB4MEUsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDg4LCAweEZELCAweDQwLCAweDJGLCAweDAwLCAweEJDLCAweDAzLCAweEYxLAorMHg5MywgMHhDMCwgMHgzNywgMHgwMCwgMHhBRiwgMHgwMiwgMHhGQywgMHgwMiwgMHg3MCwgMHgwRCwgMHhDMCwgMHgyRiwgMHgwMCwKKzB4M0YsIDB4MTAsIDB4RkMsIDB4ODAsIDB4RjAsIDB4MDMsIDB4QzgsIDB4M0YsIDB4MjAsIDB4M0YsIDB4MjMsIDB4RkMsIDB4MDAsCisweDcwLCAweDlELCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEI0LCAweDFGLCAweEMwLCAweDBGLAorMHgwMCwgMHhBRiwgMHgwOSwgMHhEQywgMHgwMywgMHhGMCwgMHgwMSwgMHhDMCwgMHgxRCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MjUsIDB4MDAsIDB4NTMsIDB4MDAsIDB4NkQsIDB4MDMsIDB4MzIsIDB4MDksCisweEQwLCAweDI0LCAweDAwLCAweEQzLCAweDgwLCAweDRDLCAweDAzLCAweDM0LCAweDZELCAweEMwLCAweDI0LCAweDAwLCAweDEzLAorMHg0MiwgMHg3QywgMHgxMCwgMHgzMCwgMHgyOSwgMHhEMSwgMHgzMCwgMHgwMCwgMHg4MywgMHgwMCwgMHg0QywgMHgxOCwgMHgzMCwKKzB4MDksIDB4QzAsIDB4ODQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4M0MsIDB4MDIsIDB4QjAsIDB4MTEsIDB4QzAsIDB4MDQsIDB4MDAsCisweERCLCAweDAwLCAweDRELCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweEE4LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgyNCwgMHgwMCwgMHhEMSwgMHgwMCwgMHhDNCwgMHg0MywgMHgxMCwgMHgwOSwgMHg0MCwKKzB4MTAsIDB4MDAsIDB4RDEsIDB4MDAsIDB4MDQsIDB4NDYsIDB4MTAsIDB4MkQsIDB4NTAsIDB4MzQsIDB4MDAsIDB4MTMsIDB4ODIsCisweDM0LCAweDA4LCAweDEwLCAweDc5LCAweDQwLCAweDdDLCAweDA0LCAweEI1LCAweDIwLCAweDJDLCAweDBDLCAweEIyLCAweEFELAorMHg0MCwgMHhDNCwgMHgwNiwgMHhEMSwgMHgwMSwgMHg3NCwgMHgyQSwgMHgxMCwgMHgwOCwgMHg0MCwgMHg0MCwgMHgwMCwgMHhEQiwKKzB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MDEsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAzLCAweDIwLCAweDMwLCAweDQwLCAweDgxLCAweDIxLCAweDA0LCAweDAzLCAweDE0LCAweDA4LCAweDA4LCAweDIwLAorMHg4OSwgMHg4MSwgMHgwMCwgMHgwNiwgMHgwNiwgMHgxMCwgMHgwMSwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwOCwgMHgwMywgMHgzNCwKKzB4MEMsIDB4MTgsIDB4MDgsIDB4NDAsIDB4NzAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MTQsIDB4MkMsIDB4OTQsIDB4OEMsIDB4NDAsCisweDAyLCAweDAwLCAweEMxLCAweDQxLCAweDM0LCAweDAyLCAweDkwLCAweDBDLCAweDQwLCAweDUyLCAweDQwLCAweEM5LCAweDAwLAorMHgwNSwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgxQywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4N0MsIDB4NDAsIDB4RjEsIDB4MTksIDB4MDQsIDB4MDcsIDB4MTAsIDB4MTgsIDB4NDAsIDB4NjgsIDB4MDAsCisweEIxLCAweDgxLCAweEM2LCAweDA0LCAweDEwLCAweDk2LCAweDQwLCAweDZDLCAweDQwLCAweDIxLCAweDIxLCAweEI0LCAweDQ0LAorMHgxOCwgMHgxNiwgMHg2MiwgMHg3OCwgMHgxMCwgMHgwRCwgMHgwMSwgMHhCNCwgMHgwNCwgMHg5NCwgMHgxRSwgMHg0MCwgMHg2QSwKKzB4MDAsIDB4RTEsIDB4NTAsIDB4MzYsIDB4MDYsIDB4MTAsIDB4M0UsIDB4NTAsIDB4NEUsIDB4MDQsIDB4RTksIDB4MDEsIDB4ODYsCisweDA3LCAweEQwLCAweDE2LCAweDYwLCAweDNDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHgxOCwgMHgzMCwgMHgwMCwgMHg4MywgMHgwOCwgMHgwRCwgMHgwMywgMHgxMCwgMHgwOCwgMHhDMCwgMHgyMCwgMHg0MCwgMHhDMywKKzB4MDAsIDB4MEQsIDB4MjIsIDB4MzAsIDB4MDQsIDB4NDgsIDB4MjAsIDB4QjIsIDB4MDksIDB4NTIsIDB4M0MsIDB4MjAsIDB4MzQsCisweDg4LCAweEMwLCAweDMwLCAweDAwLCAweDBCLCAweDAwLCAweDFDLCAweDAwLCAweDkwLCAweDBDLCAweEMwLCAweDg2LCAweDAwLAorMHhDMywgMHgwMCwgMHgzQywgMHgwMiwgMHhCMCwgMHgwMCwgMHhDMCwgMHg5MiwgMHgxMCwgMHhDQiwgMHgwNCwgMHgwQywgMHgwMywKKzB4RjAsIDB4MEMsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsCisweDNELCAweDAwLCAweEVGLCAweDY4LCAweEZFLCAweDBCLCAweEYwLCAweDBGLCAweEMwLCAweEJGLCAweDAwLCAweEZGLCAweDAwLAorMHhGQywgMHgwMCwgMHhGMCwgMHgwNywgMHhDMCwgMHgzRiwgMHgyMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMCwgMHhGMCwgMHg4RSwKKzB4QzAsIDB4M0IsIDB4MDAsIDB4QjcsIDB4ODAsIDB4QUQsIDB4MjIsIDB4RjAsIDB4OEYsIDB4QzAsIDB4MkQsIDB4NDAsIDB4RkYsCisweDA0LCAweEZDLCAweDAyLCAweEUwLCAweDBCLCAweEUwLCAweDA5LCAweDQwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHgwNywgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgzNywKKzB4MDAsIDB4RDcsIDB4NjAsIDB4NEMsIDB4MEIsIDB4MzQsIDB4MDEsIDB4QzAsIDB4NkYsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsCisweDAzLCAweEYwLCAweDA5LCAweEQwLCAweDI0LCAweDAwLCAweDlGLCAweDAxLCAweDRDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLAorMHgzNywgMHg4MSwgMHgxMiwgMHgwOCwgMHgwQywgMHgwMCwgMHgzMSwgMHg0RCwgMHhDMCwgMHgyNCwgMHgwMCwgMHhEMywgMHgwMCwKKzB4NEMsIDB4MDIsIDB4QjAsIDB4MUQsIDB4RDAsIDB4NTQsIDB4MDAsIDB4RDMsIDB4QTAsIDB4NEMsIDB4ODMsIDB4RjAsIDB4MEQsCisweEMwLCAweDU3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDNELCAweDAwLAorMHhFMSwgMHgwMCwgMHgwNiwgMHgxMywgMHgxMCwgMHgwMiwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMiwKKzB4RDAsIDB4MEUsIDB4NDIsIDB4MjgsIDB4MjAsIDB4QTgsIDB4MDAsIDB4ODQsIDB4MDAsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0YsCisweDA1LCAweDMxLCAweDAwLCAweDg0LCAweDAwLCAweEQ0LCAweDBGLCAweDUxLCAweDJDLCAweDAwLCAweEUxLCAweDAwLCAweDA0LAorMHgwMiwgMHgxNCwgMHgwQywgMHg0MCwgMHgwOCwgMHg0MCwgMHhGMSwgMHgwMCwgMHg5NCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0NCwKKzB4NEYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NzksIDB4MDAsIDB4QzUsCisweDAxLCAweDg0LCAweDI3LCAweDAwLCAweDFFLCAweDQwLCAweDYzLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDQ3LCAweEQwLAorMHgzQywgMHg0MCwgMHg2OCwgMHgwOCwgMHhBQywgMHgxMSwgMHg4NCwgMHgwNSwgMHhEMCwgMHgxQSwgMHg0MCwgMHg3QiwgMHg0MywKKzB4MjksIDB4MDUsIDB4QTUsIDB4MDQsIDB4OTgsIDB4MUUsIDB4NDAsIDB4NjgsIDB4ODAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MDcsCisweDEwLCAweDEyLCAweDYwLCAweDVDLCAweDAwLCAweEUxLCAweDAxLCAweDg0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDA3LAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyOCwgMHgzMywgMHgxMCwgMHhEMSwgMHgwMCwKKzB4MDQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NTMsIDB4MjIsIDB4QzksIDB4MDAsIDB4MzQsIDB4MEEsIDB4RDAsIDB4MTUsCisweDQwLCAweDMwLCAweDAwLCAweEM5LCAweDgyLCAweDA0LCAweDZCLCAweEQwLCAweDJDLCAweDQwLCAweDMzLCAweDAwLCAweEQ5LAorMHgwMSwgMHgyNCwgMHgwMywgMHhEMCwgMHgwQywgMHg1MCwgMHhGMCwgMHg4MSwgMHg5MSwgMHgwMSwgMHgwNCwgMHgwNywgMHgxMCwKKzB4MDgsIDB4NjAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MTQsIDB4MDMsIDB4RDAsIDB4OTgsIDB4NDAsIDB4NEIsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDIwLCAweDE1LCAweDAwLCAweDc3LCAweDhBLCAweDRELAorMHg4MSwgMHgzMCwgMHg3NiwgMHhDMCwgMHg5RiwgMHgwMCwgMHg1RiwgMHgwMSwgMHhGQywgMHgwRCwgMHhGMSwgMHhCNywgMHhDMCwKKzB4MTQsIDB4MjAsIDB4N0YsIDB4NEIsIDB4Q0MsIDB4MEQsIDB4RjAsIDB4MjYsIDB4QzAsIDB4MTcsIDB4MTAsIDB4N0IsIDB4MDEsCisweEFDLCAweDA1LCAweDM0LCAweDA1LCAweEMyLCAweDlDLCAweDA0LCAweDUzLCAweDAxLCAweENDLCAweDA5LCAweDMwLCAweDA3LAorMHhDMSwgMHgxQywgMHgwMCwgMHg1MywgMHgwMCwgMHg0RCwgMHgwMSwgMHhGMiwgMHgyNywgMHhDMiwgMHg1RiwgMHgyMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4MDUsIDB4MTAsIDB4MUYsIDB4MDAsIDB4M0MsIDB4MDAsCisweEYwLCAweDAxLCAweEMxLCAweDA3LCAweDAwLCAweDE3LCAweDA4LCAweDdDLCAweDEwLCAweEYwLCAweDIxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxQiwgMHgwMiwgMHg3RCwgMHgwOCwgMHhGMCwgMHg0MSwgMHhDMCwgMHg4NywgMHgwMCwgMHgxNywgMHgwOCwgMHg1QywKKzB4MjgsIDB4NzAsIDB4MjAsIDB4RDAsIDB4MDcsIDB4NDAsIDB4MUYsIDB4MDgsIDB4N0QsIDB4NjAsIDB4NzAsIDB4MTEsIDB4QzAsCisweDQ3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAwLCAweEMxLCAweDRCLCAweDAwLCAweDBDLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5MywgMHgwMCwgMHg0QywgMHgyNiwgMHgzMCwKKzB4MDksIDB4QzAsIDB4MjQsIDB4MDQsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MTYsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsCisweDlGLCAweDA0LCAweDdDLCAweDgyLCAweEIwLCAweDA5LCAweEM0LCAweDI2LCAweDQwLCAweDkzLCAweDA0LCAweDRDLCAweDEyLAorMHgzNCwgMHgxOSwgMHhDMCwgMHgyNCwgMHgwMSwgMHg5MywgMHgwOCwgMHgwQywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDEsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NDAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDIyLCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDAyLCAweDExLCAweDA5LAorMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHhBOSwgMHg0MSwgMHgyNCwgMHgwMCwgMHg5RCwKKzB4MDAsIDB4MzQsIDB4MEEsIDB4MTAsIDB4NjksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NDQsIDB4MTYsIDB4MTAsCisweDE5LCAweEQwLCAweDIyLCAweDAwLCAweDkxLCAweDAyLCAweDQ1LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDIwLAorMHg5RCwgMHgwOSwgMHg2QywgMHgwMiwgMHhEMCwgMHgwOSwgMHg1MCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4NDAsIDB4OTEsIDB4MjAsIDB4NDQsIDB4MDIsIDB4MTEsIDB4MDksIDB4NDAsCisweDI1LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDBELCAweDUwLCAweDI1LCAweDAwLCAweDlELCAweDAwLAorMHg3NCwgMHgwNiwgMHg5MCwgMHgwOSwgMHg0MCwgMHgyMiwgMHgwMiwgMHg5MSwgMHgwMCwgMHg2NCwgMHgwMiwgMHgxNCwgMHg0OSwKKzB4NDgsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MDIsIDB4NjQsIDB4MjIsIDB4MTgsIDB4MTksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OEQsCisweDAwLCAweDY1LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDYwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyMCwgMHgyNCwgMHgwMCwgMHg4MSwgMHgwNCwgMHgyNCwgMHgxMiwgMHgxMCwgMHg0OSwgMHg0MCwgMHg2MSwKKzB4OTEsIDB4OEQsIDB4MDQsIDB4MzQsIDB4MDIsIDB4QzAsIDB4NDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4OEQsIDB4MjAsIDB4NzQsCisweDAyLCAweDAwLCAweDA4LCAweDQyLCAweDIwLCAweDg5LCAweDgxLCAweDQ0LCAweDI2LCAweDAyLCAweDE4LCAweDQ4LCAweDQwLAorMHgyNiwgMHg0MCwgMHg4MSwgMHgwMCwgMHgyNCwgMHgxMiwgMHgxNCwgMHg1OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwNCwKKzB4MjQsIDB4MDIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFELCAweEI4LCAweDg2LCAweDAyLCAweDEzLCAweDBBLCAweDRDLCAweDI4LCAweDM0LCAweEExLCAweEQwLCAweDA1LCAweDAwLAorMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHhBMSwgMHhDMCwgMHg4NSwgMHgwMiwgMHg1RiwgMHgwMCwgMHg3NCwgMHgwMSwKKzB4QjEsIDB4MDEsIDB4QzgsIDB4OTYsIDB4NDIsIDB4MTMsIDB4MEEsIDB4NkQsIDB4MDAsIDB4MzAsIDB4QTUsIDB4NDAsIDB4ODQsCisweDBBLCAweDAzLCAweDRBLCAweDZDLCAweDI4LCAweDMwLCAweEExLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDBBLCAweDZELAorMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg3NCwgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwKKzB4QjgsIDB4MkYsIDB4MTAsIDB4QkYsIDB4MDgsIDB4NUQsIDB4MjIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4M0UsIDB4MDIsIDB4QkYsCisweDA4LCAweEY0LCAweDAyLCAweEYwLCAweDhCLCAweEMwLCAweDJFLCAweDAwLCAweEFGLCAweDAwLCAweEZDLCAweDAyLCAweEYyLAorMHgwQiwgMHgwMCwgMHgyNywgMHgwMiwgMHhCRiwgMHg4OCwgMHhEQywgMHg4MiwgMHhGMiwgMHg4QiwgMHhDMCwgMHgzRiwgMHgwMCwKKzB4QkYsIDB4MDAsIDB4REMsIDB4MjIsIDB4RDAsIDB4OEIsIDB4QzAsIDB4MkIsIDB4MDAsIDB4QkYsIDB4MDgsIDB4N0MsIDB4MDIsCisweEYwLCAweDhCLCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEE4LAorMHgzQiwgMHgwMCwgMHhGMiwgMHgxNCwgMHhDQywgMHgzMiwgMHgzNCwgMHgwQiwgMHhDMCwgMHgyQywgMHgwMCwgMHg5MywgMHgwMCwKKzB4Q0MsIDB4MDIsIDB4RjAsIDB4NEIsIDB4QzEsIDB4MjQsIDB4MDAsIDB4QjMsIDB4MDAsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MEIsCisweEMwLCAweEVELCAweDAwLCAweEIzLCAweDAzLCAweENDLCAweDAyLCAweDMwLCAweDNCLCAweEMwLCAweDJDLCAweDAwLCAweEJGLAorMHg4OCwgMHhGQywgMHgxMiwgMHgzMCwgMHg0QSwgMHhDMSwgMHgyQywgMHgwMCwgMHhCMywgMHgwMCwgMHg0RCwgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4NjQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDUsCisweDA1LCAweDAxLCAweDA0LCAweDA0LCAweDMwLCAweDExLCAweDIxLCAweDQzLCAweDA0LCAweDA4LCAweDExLCAweDA4LCAweDQ0LAorMHgwMCwgMHhEMCwgMHg0MSwgMHg1MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwKKzB4QzQsIDB4MDgsIDB4NDEsIDB4NDMsIDB4NDQsIDB4MDEsIDB4MTAsIDB4MzAsIDB4NDAsIDB4MDAsIDB4MDQsIDB4MUQsIDB4MDAsCisweDVDLCAweDUxLCAweDEwLCAweDQxLCAweDQyLCAweDA0LCAweDA4LCAweDBCLCAweDEyLCAweDU0LCAweDAwLCAweEQwLCAweDgxLAorMHg0MCwgMHg3MCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyMCwgMHgyNSwgMHgwMSwKKzB4ODEsIDB4OTQsIDB4MDUsIDB4OTIsIDB4OTAsIDB4Q0MsIDB4NDAsIDB4MjAsIDB4MDIsIDB4OTEsIDB4MjAsIDB4MDQsIDB4MDIsCisweEQwLCAweDQ4LCAweDQxLCAweDIwLCAweDAwLCAweDgxLCAweDAxLCAweDc0LCAweDAyLCAweDEwLCAweDBELCAweDQwLCAweEExLAorMHgwOSwgMHg4MSwgMHgwNiwgMHgwNCwgMHg4MiwgMHgxMCwgMHg2OCwgMHg0OCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwKKzB4MzIsIDB4MTAsIDB4NDgsIDB4NTEsIDB4MjAsIDB4MDAsIDB4ODksIDB4MEMsIDB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsCisweDQ4LCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDI4LCAweDI1LCAweDRBLCAweDkxLAorMHgxMCwgMHg0NCwgMHgwMiwgMHg5MCwgMHgzOSwgMHg0MCwgMHgyNCwgMHg0MCwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4NDAsIDB4NzQsIDB4MTIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsCisweDkxLCAweDAwLCAweDQ1LCAweDEyLCAweDEwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDE0LCAweDAyLAorMHgxMCwgMHg2OSwgMHg0MCwgMHgyNCwgMHgyMCwgMHg4OSwgMHgwMCwgMHg1NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MCwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MjEsIDB4MDAsIDB4OTMsIDB4MDAsCisweDRDLCAweDAyLCAweEIwLCAweDI5LCAweEQwLCAweEE0LCAweDAyLCAweDgzLCAweDAwLCAweDRELCAweDAyLCAweEYwLCAweDA5LAorMHhDOSwgMHgyNCwgMHg0MCwgMHg5MywgMHgwMywgMHg3QywgMHg0RSwgMHgzNCwgMHg0OCwgMHhDMCwgMHgyNSwgMHg0MCwgMHg5MywKKzB4MEIsIDB4NEMsIDB4MDYsIDB4MjQsIDB4MDksIDB4RDAsIDB4NjQsIDB4MDIsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MEUsIDB4MzQsCisweDA5LCAweEMwLCAweEE0LCAweDI0LCAweDlCLCAweDAxLCAweDRELCAweDAyLCAweEYwLCAweDA5LCAweEQwLCAweDE0LCAweDIwLAorMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwMCwgMHg2NSwgMHgxMCwgMHg5RiwgMHgwNCwgMHgzQywKKzB4NDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4OUYsIDB4MDIsIDB4N0MsIDB4MDIsIDB4RjEsIDB4NDgsIDB4QzAsCisweEU3LCAweDAwLCAweDlGLCAweDAyLCAweDdDLCAweDA2LCAweEYxLCAweDA5LCAweEM4LCAweDIzLCAweDQwLCAweDlGLCAweDAxLAorMHg3QywgMHgwNiwgMHhGMCwgMHgwOCwgMHhDMCwgMHg2NywgMHgwMCwgMHg5RiwgMHgwNSwgMHg3QywgMHgxMiwgMHhGMCwgMHgxOSwKKzB4QzEsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDQsIDB4N0QsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4NUIsIDB4MDAsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDgwLCAweDRDLCAweDAwLAorMHgzMCwgMHgwMCwgMHhDMCwgMHg4MywgMHg0MCwgMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNCwKKzB4MDAsIDB4MUYsIDB4MTAsIDB4N0UsIDB4MDgsIDB4RjIsIDB4MDEsIDB4RDEsIDB4MDYsIDB4MDEsIDB4MDMsIDB4ODIsIDB4NEMsCisweDQwLCAweDMxLCAweDAxLCAweEMxLCAweEM2LCAweDAwLCAweDEzLCAweDAwLCAweDRDLCAweDA0LCAweDMwLCAweDIwLCAweEMwLAorMHg4NCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0RCwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MTQsIDB4MDQsIDB4NTEsIDB4MDEsIDB4QzUsIDB4MDksIDB4MTAsCisweDA1LCAweEMwLCAweDVELCAweDAwLCAweDUxLCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDE3LCAweDYwLCAweDE0LCAweDAwLAorMHg3RCwgMHgwMywgMHhCNCwgMHgwMSwgMHhEMCwgMHgyNywgMHg0NCwgMHg1QywgMHgwMCwgMHg1QiwgMHgxMSwgMHhBQywgMHgxNSwKKzB4QjEsIDB4NTcsIDB4QzAsIDB4MUUsIDB4NDAsIDB4NzAsIDB4MDAsIDB4QzQsIDB4MTEsIDB4MTQsIDB4MzcsIDB4NDAsIDB4MTAsCisweDAwLCAweDVELCAweDExLCAweDQ0LCAweDAxLCAweEQwLCAweDA1LCAweDUwLCAweDUwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgzMiwgMHg0MCwgMHhEMSwgMHgwMCwgMHgyNCwgMHgwNywgMHgxMSwgMHgwQywKKzB4NDAsIDB4MzEsIDB4MDQsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MUMsIDB4NDgsIDB4MzQsIDB4MDAsIDB4Q0QsCisweDAyLCAweDM0LCAweDAyLCAweEQ4LCAweDJDLCAweDYwLCAweDMyLCAweDkwLCAweEM5LCAweDIxLCAweDA0LCAweDg3LCAweDU4LAorMHgwQywgMHg0MiwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwNCwgMHgwNCwgMHgwMywgMHgxMCwgMHgzQywgMHg0MCwgMHgyMCwgMHgwMCwKKzB4Q0QsIDB4MDAsIDB4MDQsIDB4ODMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NTAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDNDLCAweDIwLCAweEExLCAweDEwLCAweEE1LCAweDFBLCAweDEwLCAweDBFLCAweDQwLAorMHgzMSwgMHgwNCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwQSwgMHhEMCwgMHgwNCwgMHg0MSwgMHgzOCwgMHgwMSwgMHg2RCwgMHgwMiwKKzB4QjYsIDB4NDAsIDB4RDgsIDB4MDMsIDB4NDAsIDB4QUEsIDB4ODIsIDB4RTksIDB4MDAsIDB4QTQsIDB4MDAsIDB4RDAsIDB4MEUsCisweDQwLCAweDdBLCAweDAwLCAweEUxLCAweDAxLCAweDg0LCAweDAzLCAweDEwLCAweDBGLCAweDQxLCAweDI4LCAweDAwLCAweEVELAorMHgwMCwgMHg4NSwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgxNCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTQsIDB4MTgsIDB4NzgsIDB4MDAsIDB4RTMsIDB4MDEsIDB4QUMsIDB4MTYsIDB4MzQsIDB4MUUsIDB4QzAsIDB4NzksCisweDAwLCAweEUzLCAweDAxLCAweEJDLCAweDA2LCAweEQwLCAweDE2LCAweDQwLCAweEY4LCAweDAxLCAweDJELCAweDAxLCAweEI0LAorMHgwNSwgMHhGMCwgMHgxNiwgMHhEMCwgMHg3MiwgMHgwMCwgMHhBQiwgMHgwMSwgMHg4QywgMHgwNCwgMHg3NCwgMHg5RSwgMHhDMCwKKzB4NzgsIDB4MDAsIDB4RjMsIDB4ODEsIDB4Q0MsIDB4MDcsIDB4MzQsIDB4MUUsIDB4QzAsIDB4NjgsIDB4MDAsIDB4QUYsIDB4MDEsCisweDg0LCAweDA3LCAweEYwLCAweDFDLCAweEMwLCAweDU0LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHhCOCwgMHgzNSwgMHg0MCwgMHg5RiwgMHgxNCwgMHg1QywgMHgyMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDUsIDB4RDAsIDB4NzcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NkMsIDB4MDAsCisweEYwLCAweDAwLCAweEQwLCAweDI1LCAweDIwLCAweDlGLCAweDAyLCAweDNDLCAweDAwLCAweEIxLCAweDA5LCAweEQwLCAweDM3LAorMHgwMCwgMHhERiwgMHgwMCwgMHg3RCwgMHgwMywgMHhFMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMiwgMHg3RCwKKzB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDIwLCAweDdELCAweDAwLCAweEZGLCAweDIxLCAweDhDLCAweDA2LCAweDM4LCAweDhGLCAweEMwLCAweDZELCAweDAwLCAweEYzLAorMHgwMSwgMHhGQywgMHgwNiwgMHhGMCwgMHgxRiwgMHhEMCwgMHg3QywgMHgwMCwgMHgzRiwgMHgwMSwgMHhGQywgMHgwNiwgMHhGMCwKKzB4MTMsIDB4QzAsIDB4NUYsIDB4MjAsIDB4RjcsIDB4MjMsIDB4Q0MsIDB4MDQsIDB4MzEsIDB4OUYsIDB4QzAsIDB4N0MsIDB4MDgsCisweEYzLCAweDAxLCAweDhDLCAweDA3LCAweDMxLCAweDBCLCAweEMwLCAweDZGLCAweDAwLCAweEVGLCAweDAzLCAweENDLCAweDA3LAorMHhGMiwgMHgxRiwgMHhDMiwgMHgwOCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwKKzB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDIsIDB4MzgsIDB4MEYsIDB4NDAsIDB4MDgsIDB4NDAsIDB4RTEsIDB4MDAsCisweEJDLCAweDAyLCAweEQwLCAweDI2LCAweDQwLCAweDM4LCAweDAyLCAweDZELCAweDEwLCAweEI0LCAweEEwLCAweEQwLCAweDgyLAorMHg0MCwgMHgwRiwgMHgxMCwgMHhFMSwgMHgwNCwgMHg5NCwgMHgxMCwgMHgxMCwgMHhFNiwgMHg0MSwgMHgzQywgMHgwMCwgMHhGMSwKKzB4MTAsIDB4ODQsIDB4ODMsIDB4MTQsIDB4OEEsIDB4NDAsIDB4MkIsIDB4MDQsIDB4RUQsIDB4MDgsIDB4ODQsIDB4MDMsIDB4RDAsCisweDBFLCAweDQwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM5LAorMHgwMCwgMHhFRCwgMHgwMCwgMHg4NCwgMHgwMiwgMHg5MCwgMHg4RSwgMHg0MCwgMHgyOSwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwKKzB4NDIsIDB4RDAsIDB4MDYsIDB4NDAsIDB4MzgsIDB4MDQsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDAsIDB4RDAsIDB4MDIsIDB4NDAsCisweDJCLCAweDAyLCAweEVELCAweDgwLCAweEM0LCAweDAwLCAweDEwLCAweDA0LCAweDQwLCAweDM4LCAweDA0LCAweDYxLCAweDAwLAorMHhGNCwgMHgwMywgMHgxMCwgMHg4QSwgMHg0MSwgMHgyQiwgMHgwMiwgMHhBRCwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMCwgMHgyQywKKzB4NDAsIDB4MjAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MzEsIDB4MDAsCisweENELCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDFDLCAweDQwLCAweDAwLCAweDA0LCAweEMxLCAweDQ5LCAweDM0LCAweDAyLAorMHhEMCwgMHgyNSwgMHg0MCwgMHg3MCwgMHgwMCwgMHg0RCwgMHgwMSwgMHgzNCwgMHgwMCwgMHhEMiwgMHgxMCwgMHg0MCwgMHgyMywKKzB4MDAsIDB4QzksIDB4MEEsIDB4MTQsIDB4QzgsIDB4MTQsIDB4MDQsIDB4NTAsIDB4RjAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MzQsCisweDBCLCAweDEwLCAweDE4LCAweDQwLCAweDIzLCAweDAwLCAweDlELCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLAorMHg1OCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNSwgMHgwMCwgMHhERiwKKzB4MDcsIDB4Q0MsIDB4MDIsIDB4QjAsIDB4NEQsIDB4QzAsIDB4RTUsIDB4MDAsIDB4RDMsIDB4MDAsIDB4M0MsIDB4MDIsIDB4RjAsCisweDA1LCAweEQwLCAweDNDLCAweDAwLCAweDFGLCAweDAyLCAweDdDLCAweDA4LCAweEYwLCAweDIxLCAweEMxLCAweDNGLCAweDAwLAorMHhERiwgMHgyMywgMHgwRCwgMHgwOCwgMHgzMCwgMHgxMSwgMHhDMCwgMHhGNCwgMHgwOCwgMHhEMywgMHgwMCwgMHg3QywgMHgyMywKKzB4MzAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEQsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NzQsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDM3LCAweDEwLCAweDlGLCAweDAwLAorMHg3RSwgMHgwMiwgMHg3MCwgMHgwRCwgMHhDMiwgMHg2MywgMHgxMCwgMHhERiwgMHgwMCwgMHg1QywgMHgwMiwgMHhGMCwgMHhDNSwKKzB4QzAsIDB4MzcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MTAsIDB4RjAsIDB4NDEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsCisweDEwLCAweDdDLCAweDBDLCAweEYwLCAweDAwLCAweEMwLCAweDM3LCAweDA0LCAweERGLCAweDAwLCAweDQ0LCAweDBCLCAweEYwLAorMHgwQywgMHhDMSwgMHgyNywgMHgwMSwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgxRCwgMHhDMiwgMHgwNywgMHgwMCwKKzB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4M0YsIDB4MDAsIDB4RUYsIDB4MTAsIDB4Q0MsCisweDA2LCAweDMwLCAweDBGLCAweEMwLCAweDA0LCAweDAwLCAweEYzLCAweDAwLCAweEZFLCAweDUyLCAweDMwLCAweDA1LCAweEMwLAorMHgzQywgMHgwMCwgMHgzNywgMHgxMCwgMHhGQywgMHg4MCwgMHhGMCwgMHgwMywgMHhDMCwgMHg3QiwgMHgwMCwgMHg5MywgMHgwMCwKKzB4Q0MsIDB4MDAsIDB4QjAsIDB4MDMsIDB4NDAsIDB4MkMsIDB4MDAsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4ODMsIDB4MzIsIDB4OEYsCisweEMyLCAweEJDLCAweDAwLCAweEJGLCAweDAwLCAweENDLCAweDAzLCAweEYwLCAweDBFLCAweEMwLCAweDA0LCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHgzNiwgMHgwMCwgMHg5RCwgMHgyMCwgMHg0NCwgMHgwQSwKKzB4MTAsIDB4MEMsIDB4NTAsIDB4QzQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4NTAsIDB4MTUsIDB4NTAsIDB4MzUsCisweDAwLCAweDVELCAweDA3LCAweDc0LCAweDBDLCAweEQwLCAweDExLCAweEMwLCAweDM1LCAweDAyLCAweDgxLCAweDAwLCAweDQ0LAorMHg0QywgMHgxMSwgMHgzMSwgMHhDMCwgMHgzNiwgMHgwMCwgMHhEMSwgMHgwMiwgMHg0NCwgMHg0MywgMHgxMCwgMHgyMSwgMHg0MiwKKzB4MjQsIDB4MDAsIDB4OUQsIDB4MDksIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDY2LCAweDAwLCAweERELCAweDAwLCAweDQ0LCAweDI4LCAweDEwLAorMHgxOSwgMHg0MCwgMHhFNiwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgxMSwgMHg0MCwgMHgzNiwgMHgwMCwKKzB4MUQsIDB4MDEsIDB4NzQsIDB4NDQsIDB4RDAsIDB4MzEsIDB4NDAsIDB4MTcsIDB4NDAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4ODQsCisweDEwLCAweDExLCAweDAyLCAweEQzLCAweDAwLCAweEMxLCAweDExLCAweDA2LCAweDA0LCAweDEwLCAweDI5LCAweDQwLCAweDM2LAorMHgwMCwgMHhERCwgMHgwMCwgMHg0NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgwNiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MTAsIDB4MDksCisweDQwLCAweDAyLCAweDQwLCAweEMxLCAweDAwLCAweDM0LCAweDgyLCAweDUwLCAweDAwLCAweDQwLCAweDMzLCAweDA4LCAweDRELAorMHg0MCwgMHgzNiwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgxMSwgMHg4MCwgMHhEMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwKKzB4MDAsIDB4NDAsIDB4MzMsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDYsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NTAsIDB4MjIsIDB4MDAsCisweENELCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDQyLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHgyNiwgMHgwMCwgMHhFRiwgMHgwMCwgMHg0QywgMHgwMCwgMHgzNCwgMHgwOSwgMHhDMCwKKzB4MDYsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NzQsIDB4MDIsIDB4NzAsIDB4MDUsIDB4QzAsIDB4MzYsIDB4MDAsIDB4MTcsIDB4MDAsCisweDc0LCAweDAwLCAweEYyLCAweDAxLCAweEMyLCAweDI3LCAweDIwLCAweEYzLCAweDIwLCAweDRDLCAweDAwLCAweEIwLCAweDAzLAorMHhEMCwgMHgwNywgMHgwMCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMSwgMHgzMCwgMHgwOSwgMHhDMCwgMHgzNiwgMHgwMCwgMHhCRiwKKzB4MDAsIDB4NEQsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MDYsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDA1LCAweEI4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBCLCAweEMwLCAweDBELAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwNywgMHhDMCwgMHgzRCwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywKKzB4MDAsIDB4RDAsIDB4MDMsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4QkQsIDB4MDAsIDB4RjQsIDB4MDMsIDB4QzIsCisweDNFLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDJELCAweDAwLCAweEJGLCAweDAwLAorMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgxNSwgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MjcsIDB4MzAsIDB4MUYsIDB4QzgsIDB4N0YsIDB4MEEsCisweEZGLCAweDAxLCAweENDLCAweDI3LCAweEYwLCAweDFGLCAweEMwLCAweDdDLCAweDAwLCAweEYzLCAweDA5LCAweEZDLCAweDI3LAorMHhGMCwgMHgzRiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGMywgMHgwMSwgMHhDQywgMHgyNywgMHgzMCwgMHg5RiwgMHhDMCwgMHg3OCwKKzB4MDAsIDB4RkYsIDB4MDksIDB4Q0MsIDB4MDcsIDB4QjAsIDB4MTMsIDB4QzAsIDB4N0UsIDB4MDAsIDB4RUYsIDB4MDEsIDB4RkMsCisweDA3LCAweDMwLCAweDFGLCAweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgwOCwgMHg3NywgMHgwMCwgMHhERCwgMHgwMSwgMHg3NCwgMHgwMCwgMHgxMCwgMHgxMSwgMHg0MCwgMHgwNywgMHgwMSwgMHgxRCwKKzB4MDEsIDB4NDQsIDB4MDAsIDB4OTAsIDB4MTEsIDB4NDAsIDB4MDQsIDB4MDEsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MTAsIDB4RDAsCisweDAxLCAweDQwLCAweDQ3LCAweDAwLCAweDExLCAweDAxLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQ4LCAweDQ0LCAweDAwLAorMHgxRCwgMHgwMCwgMHg0NCwgMHg4NywgMHg1MSwgMHgxMSwgMHg0MCwgMHg3NCwgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgxMywKKzB4MTAsIDB4MUQsIDB4NDAsIDB4MEYsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsCisweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweERELCAweDAwLAorMHgwNCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0OCwgMHgzNCwgMHgxNCwgMHhDMSwgMHgyMCwgMHgzNCwgMHgwMywgMHhEMCwgMHg0QywKKzB4NDAsIDB4MzcsIDB4MDAsIDB4RDksIDB4MDAsIDB4NjQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzEsIDB4MDAsIDB4Q0QsCisweDA0LCAweDI0LCAweDAzLCAweDEwLCAweDAxLCAweDQ4LCAweDMyLCAweDgwLCAweDhELCAweDAwLCAweDM0LCAweDQzLCAweDE5LAorMHgwQywgMHg0MCwgMHg0RiwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHgzNSwKKzB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDQsCisweDAwLCAweDkwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDc0LCAweDgwLCAweEQwLCAweDAxLCAweDQwLAorMHgwNywgMHgwMCwgMHgxOSwgMHgwMCwgMHg2NCwgMHgwMCwgMHgxMSwgMHgwMSwgMHg0MiwgMHgwNSwgMHgwOCwgMHgxRCwgMHgyMCwKKzB4NjQsIDB4MDcsIDB4NTAsIDB4MTEsIDB4NDEsIDB4MzQsIDB4ODAsIDB4MUQsIDB4MDEsIDB4MzQsIDB4MDMsIDB4MTgsIDB4MEQsCisweDQyLCAweDBGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDM3LCAweDAwLAorMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgxOCwgMHhDRiwgMHgwMCwgMHg0QywgMHgwMywKKzB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzMsCisweDAwLCAweENCLCAweDAwLCAweDZDLCAweDAzLCAweDMwLCAweDBDLCAweEMwLCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDZELAorMHgwNywgMHgzMCwgMHgxMCwgMHhDMiwgMHgzNiwgMHgwMCwgMHg5RiwgMHgxMywgMHg3QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMiwKKzB4MjMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsIDB4RkYsCisweDAwLCAweEZDLCAweDQwLCAweEYyLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEZELCAweDAwLCAweEYwLAorMHgwMywgMHhEMiwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGRSwgMHgwMCwgMHhGMCwgMHgwMywgMHhDMiwgMHgwRiwgMHgwMCwKKzB4MzcsIDB4MDAsIDB4REMsIDB4MDAsIDB4RjYsIDB4MDMsIDB4QzAsIDB4MEUsIDB4MjAsIDB4M0YsIDB4MDAsIDB4REMsIDB4MDMsCisweEYwLCAweDA3LCAweEMwLCAweDNGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDFGLAorMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4MzAsIDB4OEQsIDB4QzAsIDB4MzYsIDB4MDAsIDB4REYsIDB4MDEsIDB4NEMsIDB4MjMsIDB4RjAsIDB4MEQsCisweEMyLCAweDM0LCAweDA0LCAweERGLCAweDAxLCAweDRDLCAweDQzLCAweEYwLCAweDBELCAweEUwLCAweDM3LCAweDAwLCAweERCLAorMHgwMSwgMHg0QywgMHgxMywgMHhGMCwgMHg4RCwgMHg4MCwgMHgzNCwgMHgwMiwgMHhEMywgMHgxOCwgMHg0QywgMHgwRSwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTMsIDB4MDIsIDB4NEMsIDB4NDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MkIsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDM0LCAweDAwLCAweERELCAweDAwLCAweDc0LAorMHgwMCwgMHgxMSwgMHgwMSwgMHg0MCwgMHg4NCwgMHgwMCwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgxMCwgMHg0MCwKKzB4ODAsIDB4MDAsIDB4MUQsIDB4ODAsIDB4NDQsIDB4OUMsIDB4RDAsIDB4NTEsIDB4NDAsIDB4QzcsIDB4MEEsIDB4MUQsIDB4MDAsCisweDA0LCAweDQ4LCAweEQwLCAweDIxLCAweDQwLCAweDQ0LCAweDIwLCAweDExLCAweEEwLCAweDJDLCAweDAyLCAweEQwLCAweEE1LAorMHg0MCwgMHg3NywgMHgwNCwgMHg5MSwgMHgwMCwgMHg2OCwgMHgwNywgMHhEMCwgMHgwRCwgMHg0MCwgMHg0RiwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NzQsIDB4MEYsCisweDEwLCAweDFDLCAweDQwLCAweDMyLCAweDAyLCAweENELCAweDAwLCAweDA0LCAweDQzLCAweEQwLCAweDhDLCAweDQwLCAweEYwLAorMHgwOCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHg0QywgMHg0MCwgMHg3MywgMHgwMiwgMHhDRCwgMHgwMCwgMHgwNCwKKzB4MEYsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzAsIDB4MDAsIDB4RDEsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MDQsIDB4NDgsCisweDczLCAweDAwLCAweDg4LCAweDAwLCAweDA0LCAweDI3LCAweEQwLCAweDBDLCAweDQwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHhGNCwgMHg2NCwgMHgxMCwKKzB4MTIsIDB4NDAsIDB4QzgsIDB4MDAsIDB4M0QsIDB4MDEsIDB4ODQsIDB4MDQsIDB4RDAsIDB4MTIsIDB4NTAsIDB4NDgsIDB4MDQsCisweDJELCAweDAzLCAweDg0LCAweDA0LCAweEQwLCAweDEyLCAweDQwLCAweDRCLCAweDAyLCAweDNELCAweDAxLCAweDg0LCAweDA0LAorMHhEMCwgMHgzMywgMHg0MCwgMHg0QywgMHgwMCwgMHgzMSwgMHgwMSwgMHhBNCwgMHgwNywgMHhEMCwgMHgxNiwgMHg0MCwgMHgzQiwKKzB4MDAsIDB4QjksIDB4MDEsIDB4QTQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4M0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweENGLCAweDAwLCAweDNDLCAweDAzLCAweDMwLCAweDBDLAorMHhDMCwgMHgzMiwgMHgwMCwgMHhDRiwgMHgwMCwgMHgwQywgMHgwMywgMHhGMCwgMHgwQywgMHhDMCwgMHgzMCwgMHgwMiwgMHhERiwKKzB4MDAsIDB4MEMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0YsIDB4MDQsIDB4MEMsIDB4MjMsIDB4RjIsCisweDBELCAweDQwLCAweDMwLCAweDAwLCAweEMzLCAweDAwLCAweDJDLCAweDBCLCAweEYwLCAweDAwLCAweEMwLCAweDMzLCAweDAyLAorMHg4QiwgMHg4MCwgMHgwQywgMHgyMywgMHhGMCwgMHgwQywgMHhDMCwgMHg0QiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4MDAsIDB4QkMsIDB4MDAsIDB4RjAsIDB4ODIsIDB4ODAsCisweDBGLCAweDAyLCAweDJGLCAweDAwLCAweEZDLCAweDAwLCAweEYxLCAweDAyLCAweEMwLCAweDBGLCAweDA4LCAweDNGLCAweDAwLAorMHg3QywgMHgwMCwgMHhGMCwgMHg4MywgMHhDMCwgMHgwRiwgMHgwOCwgMHgyRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMywKKzB4RDAsIDB4MEYsIDB4MDAsIDB4MkYsIDB4MDksIDB4RkMsIDB4MDMsIDB4RjAsIDB4ODMsIDB4QzQsIDB4M0IsIDB4MDEsIDB4QjcsCisweDAwLCAweEZDLCAweDIzLCAweEYwLCAweDBGLCAweEMwLCAweDBCLCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwNywgMHgzNCwgMHgwRCwgMHhDMCwgMHg3NywKKzB4NDAsIDB4RDMsIDB4MDAsIDB4N0MsIDB4MDcsIDB4MzQsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDgsIDB4REYsIDB4MDAsIDB4N0MsCisweDA3LCAweDMwLCAweDFELCAweEQwLCAweDcwLCAweDAwLCAweEMzLCAweDAxLCAweDRDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHgzNywgMHgyMCwgMHhERiwgMHg0MCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNCwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NDMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEyLCAweDg4LCAweDM5LCAweDAwLCAweEVELCAweDAwLCAweEY0LCAweDAwLCAweDEwLCAweDAyLCAweDQ4LCAweDBGLCAweDAwLAorMHgyMSwgMHgwMCwgMHhGNCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwQiwgMHgwMCwgMHgyRCwgMHgwMCwgMHhGNCwgMHgwMCwKKzB4MTMsIDB4MDMsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjUsIDB4MDAsIDB4ODQsIDB4MDAsIDB4RDAsIDB4MDIsIDB4NDAsIDB4MEIsCisweDAwLCAweDJELCAweDAwLCAweEI0LCAweDAxLCAweEQwLCAweDA2LCAweDQwLCAweDM4LCAweDAwLCAweEE5LCAweDAwLCAweEI0LAorMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHg0RiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKzB4MDAsIDB4NzksIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RTEsCisweDAxLCAweEI0LCAweDA3LCAweDEwLCAweDFFLCAweDAwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LCAweDU0LAorMHgxRSwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFMSwgMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MTIsIDB4NDAsIDB4NzgsIDB4ODAsIDB4QUQsIDB4MTEsIDB4QjQsIDB4MDcsCisweEQwLCAweDFFLCAweDQwLCAweDEzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LAorMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHg4MCwgMHg1MCwgMHgwMCwgMHg0MCwgMHgwMywgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MzQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MzQsIDB4MDAsIDB4NTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDE2LCAweDAwLCAweEQwLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweDBELAorMHgwMCwgMHgzNCwgMHgwNywgMHhEMCwgMHg2QywgMHg0MCwgMHgzMCwgMHg4MCwgMHg4OSwgMHgwMSwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4NUIsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MjgsIDB4MTUsCisweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweDcwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDUzLCAweDAwLCAweDdDLAorMHgwMSwgMHgzMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMSwgMHg3MCwgMHgwNSwgMHhDMCwKKzB4MTQsIDB4MDAsIDB4NTEsIDB4MDAsIDB4NEQsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsCisweEJDLCAweDk1LCAweEYwLCAweDI3LCAweEQwLCAweDE0LCAweDAwLCAweDZGLCAweDAyLCAweDdDLCAweDAxLCAweEQwLCAweDA1LAorMHhDMCwgMHg1RiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywgMHgwMCwKKzB4MUYsIDB4MDAsIDB4RkMsIDB4MDAsIDB4OTAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsCisweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDgwLCAweEZDLCAweDAwLCAweDkwLCAweDAzLCAweEMwLCAweDBGLAorMHgwMCwgMHgzRiwgMHgwMCwgMHhFQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzQywgMHgwMCwgMHg3QywKKzB4NDAsIDB4RTAsIDB4MjEsIDB4QzAsIDB4MDcsIDB4MDgsIDB4MUYsIDB4MTAsIDB4NzQsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsCisweDRCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLAorMHgwMCwgMHg3QywgMHgwNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MTksIDB4QzAsIDB4MjcsIDB4MDEsCisweDlGLCAweDAwLCAweDdDLCAweDI2LCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDA2LAorMHg3MCwgMHg0OSwgMHhDMCwgMHhFNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgxNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg0MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDAsCisweDc0LCAweDBBLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDA0LCAweDlELCAweDAwLCAweDc0LCAweDJFLCAweEQwLCAweDA5LAorMHg0NiwgMHhBNywgMHgwMCwgMHg5RCwgMHgwMywgMHg3NCwgMHgyQSwgMHhEMCwgMHgyOSwgMHg0MCwgMHg2NywgMHg4MCwgMHg5RCwKKzB4MDAsIDB4NzQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4NDMsIDB4NzQsIDB4QTIsIDB4MzAsCisweDM4LCAweDQwLCAweDI0LCAweDAxLCAweDlELCAweDgwLCAweDZDLCAweDBFLCAweEQxLCAweDA5LCAweDQwLCAweDA3LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwKKzB4MTIsIDB4RDAsIDB4NEIsIDB4NDAsIDB4NkYsIDB4MDAsIDB4QkQsIDB4MDEsIDB4RjQsIDB4MDIsIDB4RDAsIDB4MUIsIDB4NDAsCisweDZGLCAweDAwLCAweEJELCAweDA4LCAweEY0LCAweDAyLCAweEQwLCAweDhCLCAweDQwLCAweDJGLCAweDE4LCAweEJELCAweDAxLAorMHhGNCwgMHgwMiwgMHhEMCwgMHgxQiwgMHg0MSwgMHg2RiwgMHgwMCwgMHhCRCwgMHgwNCwgMHg2NCwgMHgwMiwgMHg1OCwgMHgwOSwKKzB4NDAsIDB4MjUsIDB4MDgsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MEEsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MDAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweDhELCAweDAwLCAweEI0LCAweDA2LAorMHhEMCwgMHgwQSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhBRCwgMHgwMCwgMHhCNCwgMHgwNiwgMHhEMiwgMHgwQSwgMHg0MCwgMHg2QiwKKzB4MDAsIDB4QUQsIDB4MDEsIDB4QjQsIDB4MDYsIDB4RDAsIDB4MUEsIDB4NDgsIDB4NkIsIDB4MjAsIDB4QUQsIDB4QzAsIDB4QjQsCisweDA2LCAweEQwLCAweDBBLCAweDQ4LCAweDJCLCAweDAwLCAweEFELCAweDAxLCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLAorMHgyMCwgMHgwMCwgMHg5RCwgMHgwMCwgMHgyNSwgMHgyMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4MDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MjgsIDB4RjAsCisweDAxLCAweEMyLCAweDg3LCAweDAyLCAweDFGLCAweDAwLCAweDdDLCAweDI4LCAweEYwLCAweDAxLCAweEMwLCAweDg3LCAweDIyLAorMHgxRiwgMHgyQSwgMHg3QywgMHgyOCwgMHhGMCwgMHhBMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwMCwgMHg3QywgMHgyOCwKKzB4RjAsIDB4QTEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4M0YsIDB4MEEsIDB4NkMsIDB4MDAsIDB4NzIsIDB4MDUsIDB4QzAsIDB4MDUsCisweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDA4LCAweEYwLCAweDAxLCAweEM4LCAweDc3LCAweEUwLCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMSwgMHgwOSwKKzB4Q0EsIDB4MjcsIDB4MDgsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsCisweDAwLCAweDc0LCAweDgyLCAweEYxLCAweDA5LCAweEMwLCAweDI3LCAweDA4LCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLAorMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHhGOCwgMHgwMiwgMHg3MiwgMHgwQiwgMHhDMCwgMHgyNywgMHgwMCwKKzB4QkYsIDB4MDAsIDB4N0MsIDB4MTIsIDB4RjgsIDB4MDksIDB4QzAsIDB4NzcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweEZDLCAweDIyLCAweEYwLCAweDBCLCAweEM2LAorMHhBQywgMHgxOCwgMHhCRiwgMHgwMCwgMHhGQywgMHgyMiwgMHhCMCwgMHgwQiwgMHhDMCwgMHhBRiwgMHgyMCwgMHhCRiwgMHgwMiwKKzB4Q0MsIDB4MEEsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDAsIDB4QjcsIDB4MDAsIDB4RkMsIDB4MEEsIDB4MzAsIDB4MkIsCisweEMwLCAweDJDLCAweDIwLCAweEJGLCAweDQ4LCAweEJDLCAweDAyLCAweDMwLCAweDBGLCAweEMwLCAweDJGLCAweDIwLCAweDlGLAorMHgwMCwgMHhGNCwgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHg3NywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NzQsIDB4MTQsIDB4RDAsIDB4MDEsIDB4NDAsIDB4NDQsCisweDAwLCAweDFELCAweDAwLCAweDc0LCAweDE0LCAweEQwLCAweDAxLCAweDQ4LCAweDQ3LCAweDAxLCAweDFELCAweDgxLCAweDQ0LAorMHg5NCwgMHg5MCwgMHgxMSwgMHg1MiwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg3NCwgMHgwNCwgMHgxMCwgMHg1MSwgMHg0MCwKKzB4MDQsIDB4MDAsIDB4MUQsIDB4MDUsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsCisweDY0LCAweDAwLCAweDE0LCAweDAxLCAweDQwLCAweDYzLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHhBMCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwRCwgMHg1MCwgMHgyMSwgMHgwMSwKKzB4OEQsIDB4MDAsIDB4MzQsIDB4MDMsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MjMsIDB4MDEsIDB4QzUsIDB4MDQsIDB4MTUsIDB4MDMsCisweEQwLCAweDRELCAweDQxLCAweDIwLCAweDAwLCAweDgxLCAweDAwLCAweDM0LCAweDEzLCAweDEwLCAweDA4LCAweDE0LCAweDMyLAorMHgyMCwgMHg4RCwgMHgwMCwgMHg3NiwgMHg4MiwgMHg1MCwgMHgwOCwgMHg0OCwgMHgyMywgMHgxMCwgMHg4RCwgMHgwMCwgMHgzNCwKKzB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEE4LCAweDI1LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI1LCAweDAwLCAweDlELAorMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg1NCwgMHgwMiwgMHhEMCwKKzB4MEQsIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTEsIDB4QzAsIDB4NzQsIDB4MDIsIDB4MTIsIDB4MDksIDB4MDAsIDB4MjQsIDB4MDAsCisweDlELCAweDAwLCAweDc0LCAweDEyLCAweDU0LCAweDE5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDI0LCAweDAyLAorMHgxMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwKKzB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsCisweDdDLCAweDAyLCAweEIwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDk3LCAweDAwLCAweDVDLCAweDAyLCAweEYwLCAweDA5LAorMHhDMCwgMHgyNCwgMHg0MCwgMHg5NSwgMHgwMCwgMHg3QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNiwgMHgwMCwgMHg5RiwKKzB4MDAsIDB4N0MsIDB4NEUsIDB4NzAsIDB4NjksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDUsIDB4N0MsIDB4MDIsIDB4MTAsCisweDA5LCAweDQwLCAweDE3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDI1LAorMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNiwgMHgwNCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NkMsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsCisweDI3LCAweDIwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMyLCAweDI1LCAweDIwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhCMiwgMHgwOSwgMHhDMCwgMHgyNywgMHgwNCwgMHg5RiwgMHgwNCwgMHg2QywgMHgwMiwgMHhGMCwgMHgwOSwKKzB4QzAsIDB4NUIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsCisweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdFLCAweDAwLAorMHgzNCwgMHgwMSwgMHhDMCwgMHgwNywgMHg0MCwgMHgxQiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDNCwgMHg0NywKKzB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MzAsIDB4NDEsIDB4QzIsIDB4MDQsIDB4MDAsIDB4MTMsIDB4MDAsIDB4N0MsCisweDAwLCAweDcwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDEwLCAweEYwLCAweDAxLCAweEMwLAorMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgxNCwgMHgwMCwgMHg1RCwKKzB4MDAsIDB4RjQsIDB4MDEsIDB4RDAsIDB4MDQsIDB4NDAsIDB4OUYsIDB4MDQsIDB4NUQsIDB4MDEsIDB4RjQsIDB4MjEsIDB4MTAsCisweDA1LCAweDAwLCAweERGLCAweDAyLCAweDcxLCAweDg4LCAweEYwLCAweDAxLCAweEQwLCAweDg2LCAweEMwLCAweDE5LCAweDAxLAorMHg1RCwgMHgxMSwgMHhGNCwgMHgwOSwgMHgxMCwgMHgzNywgMHg0OCwgMHgxNCwgMHgyMCwgMHg3QiwgMHg5MSwgMHg3NCwgMHgwMSwKKzB4MTAsIDB4QjcsIDB4NDAsIDB4MUYsIDB4MDAsIDB4NUQsIDB4MDAsIDB4RjQsIDB4NDUsIDB4RDAsIDB4MDUsIDB4NDAsIDB4NDMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLAorMHgzNCwgMHg0MywgMHhEMCwgMHgwOCwgMHg0MCwgMHhGMywgMHgwMCwgMHg4RCwgMHgwOCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwOCwKKzB4NDAsIDB4RjMsIDB4MjAsIDB4RDAsIDB4MDIsIDB4MzQsIDB4MTMsIDB4RDAsIDB4MkMsIDB4NDAsIDB4NTMsIDB4MDAsIDB4OEQsCisweDQwLCAweDc2LCAweDQzLCAweDE0LCAweDNELCAweDQwLCAweDIwLCAweDAwLCAweEMxLCAweDA0LCAweDc0LCAweDAyLCAweDUwLAorMHgzMCwgMHg0OCwgMHg0MywgMHgwMCwgMHhDQywgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHg0MywgMHgwMCwKKzB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsCisweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDA3LCAweDEwLCAweDBFLCAweDQwLAorMHg3QiwgMHgxNCwgMHhFMSwgMHg0MCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwKKzB4QjQsIDB4MDMsIDB4MTIsIDB4MkUsIDB4NTAsIDB4NzgsIDB4MDAsIDB4RTksIDB4MDAsIDB4RjQsIDB4QzIsIDB4MDAsIDB4MDIsCisweDQxLCAweDBCLCAweDA0LCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDEzLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgwMSwgMHhCQywgMHgwNywKKzB4RjAsIDB4MUUsIDB4QzIsIDB4NUIsIDB4MDAsIDB4RUYsIDB4MDEsIDB4RjQsIDB4MDcsIDB4MzAsIDB4MUUsIDB4QzgsIDB4N0YsCisweDEwLCAweEUzLCAweDAxLCAweEJDLCAweDA3LCAweEQwLCAweDFFLCAweEMwLCAweDdCLCAweDAwLCAweEVGLCAweDAxLCAweEZDLAorMHgwNywgMHgzMCwgMHgxNywgMHhDOCwgMHg3OCwgMHgwOCwgMHhFMywgMHgyMSwgMHhCQywgMHgwNywgMHg3MCwgMHgxNiwgMHhDMCwKKzB4NEIsIDB4MDAsIDB4RUYsIDB4MjEsIDB4QkMsIDB4MDUsIDB4RjAsIDB4MUUsIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLAorMHgwRCwgMHhDMCwgMHgxNywgMHgwOCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHg0MCwgMHgxNywgMHgwMCwKKzB4RDcsIDB4MjAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzQsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsCisweEYzLCAweDA1LCAweEMwLCAweDMyLCAweDEwLCAweDVGLCAweDAwLCAweDdDLCAweDAzLCAweEUwLCAweDA1LCAweEMwLCAweDA3LAorMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMSwgMHgwRCwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDUsIDB4RjAsIDB4MUYsCisweEMwLCAweDdGLCAweDAwLCAweEYzLCAweDAxLCAweEZDLCAweDA3LCAweEYwLCAweDFGLCAweEMwLCAweDdDLCAweDAwLCAweEZGLAorMHgyMSwgMHhCQywgMHg4NSwgMHgzMCwgMHgxRiwgMHhDMCwgMHg3OCwgMHgwMiwgMHhGMywgMHgwMSwgMHhGQywgMHgwNSwgMHhGMCwKKzB4NUYsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDksIDB4RkMsIDB4MTYsIDB4RjAsIDB4MTcsIDB4QzQsIDB4NkQsIDB4MDAsCisweEZGLCAweDA5LCAweEY0LCAweDI3LCAweDMwLCAweDlGLCAweEMwLCAweDFCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxNSwgMHg4MCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwOSwgMHhEMCwgMHgwRSwgMHg0MCwKKzB4M0IsIDB4MDAsIDB4RTEsIDB4MjgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDgsCisweEI0LCAweDAzLCAweDEyLCAweDBGLCAweDQwLCAweDM4LCAweDA2LCAweEUxLCAweDE4LCAweEI0LCAweDQzLCAweEQwLCAweDA2LAorMHg0MSwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwQSwgMHhCNCwgMHgwMywgMHhEMCwgMHgwNywgMHg0MCwgMHgyOCwgMHgwMCwgMHhFRCwKKzB4MDgsIDB4RjQsIDB4MEIsIDB4MTQsIDB4MEUsIDB4NDAsIDB4NTcsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDM5LCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAxLCAweEQwLCAweDhFLCAweDQwLCAweDFGLAorMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwOSwgMHhEMCwgMHg4RiwgMHg0MCwgMHgzOSwgMHgwMiwgMHg2RCwgMHgwMiwgMHhGNCwKKzB4MDksIDB4MTAsIDB4MjYsIDB4NDAsIDB4QkMsIDB4MDgsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MDEsIDB4RDAsIDB4NEUsIDB4NDAsCisweDNCLCAweDAyLCAweEVELCAweDgwLCAweEI0LCAweDkzLCAweEQwLCAweDA3LCAweDQwLCAweDE5LCAweDAwLCAweEVELCAweDQwLAorMHhCNCwgMHgwMSwgMHgxMiwgMHgwRSwgMHg0MCwgMHgyMywgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4MjgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDgsIDB4RDAsIDB4MEMsIDB4NDEsIDB4MDcsIDB4MDEsCisweEMxLCAweDAxLCAweDM0LCAweDgyLCAweEQwLCAweDJDLCAweDRELCAweDY1LCAweDAyLCAweDhELCAweDg4LCAweDc0LCAweDI0LAorMHgxMCwgMHgwOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMiwgMHgzNCwgMHgwQywgMHhEMCwgMHgwMCwgMHg0MCwgMHg3MywKKzB4MDQsIDB4OUQsIDB4MEYsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MjQsIDB4NDAsIDB4MDAsIDB4MjAsIDB4Q0QsIDB4MDksIDB4NzQsCisweDAwLCAweDEwLCAweDBDLCAweDYwLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorMHhBOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgzNiwgMHhGMCwgMHgwRCwgMHhDMCwgMHhBNywgMHgwMCwgMHhDMywKKzB4MTIsIDB4M0MsIDB4MTQsIDB4RjAsIDB4MkQsIDB4QzAsIDB4ODUsIDB4MDAsIDB4MEYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsCisweDUxLCAweDQwLCAweDc0LCAweDgwLCAweEQzLCAweDA5LCAweDc0LCAweDI2LCAweEYwLCAweDE5LCAweEMwLCAweDMzLCAweDA0LAorMHgxRSwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgxNCwgMHhDMCwgMHgwNSwgMHgwMCwgMHhERiwgMHgwMSwgMHg3QywgMHgwMiwKKzB4MzAsIDB4MEQsIDB4QzgsIDB4NzcsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDFELCAweEM4LCAweEM3LCAweDIwLCAweERGLCAweDA0LAorMHg3QywgMHgwMCwgMHhGMCwgMHgxRCwgMHgwMCwgMHgyNiwgMHgwMSwgMHgxRCwgMHg4MCwgMHg3QywgMHgwQSwgMHhGMCwgMHgwMSwKKzB4RDAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MEEsIDB4RjAsIDB4MDksIDB4NDEsIDB4MzcsIDB4MjAsIDB4OUYsCisweDAwLCAweDc4LCAweDAyLCAweEMwLCAweDE1LCAweEMwLCAweDA3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDBBLCAweEYwLAorMHgwRCwgMHhDMCwgMHgxNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwKKzB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MkMsIDB4MDAsIDB4RjMsIDB4MDUsIDB4RUMsCisweDAwLCAweEIwLCAweDVGLCAweEMwLCAweDBGLCAweDAwLCAweDMzLCAweDIwLCAweENDLCAweDAyLCAweDMwLCAweDAzLCAweEMwLAorMHgzRiwgMHgwMCwgMHhGRiwgMHgwNCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwgMHgyMCwgMHgzMywgMHgyMCwKKzB4Q0MsIDB4MTcsIDB4RjAsIDB4MTcsIDB4RDEsIDB4MEMsIDB4MDAsIDB4RkYsIDB4MTAsIDB4RkMsIDB4MDAsIDB4MTAsIDB4MEYsCisweEMyLCAweDI3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDAwLAorMHhERCwgMHgwMCwgMHg3NCwgMHgwNiwgMHhEMSwgMHgwQywgMHg0MCwgMHg0NCwgMHgwOCwgMHhEMSwgMHgwMSwgMHg0NCwgMHgwNCwKKzB4MTAsIDB4MUQsIDB4NDAsIDB4NDcsIDB4MDEsIDB4MTEsIDB4MDEsIDB4NDQsIDB4MDYsIDB4MTAsIDB4MzEsIDB4NDAsIDB4RjcsCisweDA0LCAweERELCAweDAxLCAweDc0LCAweDFFLCAweEQwLCAweDUxLCAweDQwLCAweDM3LCAweDIwLCAweDExLCAweDAzLCAweDQ0LAorMHgwMywgMHhEMCwgMHhDNSwgMHg0MCwgMHg0NCwgMHgwMSwgMHhERCwgMHgwMCwgMHg3NCwgMHgyQywgMHgxMCwgMHgwRCwgMHg0NiwKKzB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzQsIDB4MDAsIDB4REQsCisweDAwLCAweDc0LCAweDA2LCAweEQwLCAweDFELCAweDQwLCAweDY0LCAweDA0LCAweEQxLCAweDAwLCAweDY0LCAweDBFLCAweDEwLAorMHgwRCwgMHg0MCwgMHg0NywgMHg4MCwgMHg5MSwgMHgwMywgMHg0NCwgMHgwQywgMHgxMCwgMHgxOSwgMHg0MiwgMHg3NywgMHgwMCwKKzB4REQsIDB4MDAsIDB4NzQsIDB4MDQsIDB4RDAsIDB4MTksIDB4NDAsIDB4MzcsIDB4MDksIDB4MTEsIDB4MDEsIDB4NDQsIDB4MDIsCisweEQwLCAweDA1LCAweDQwLCAweDQ0LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDgyLCAweDQwLCAweDBELCAweDQwLCAweDA3LAorMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyOCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MzQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MjAsIDB4NDAsIDB4QzEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MEMsCisweDQwLCAweDIzLCAweDYwLCAweDkxLCAweDAwLCAweDA0LCAweDAyLCAweDE2LCAweDA4LCAweDQwLCAweDMzLCAweDIwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgzNywgMHgwOCwgMHg4MSwgMHgyMCwgMHgwNSwgMHgwMiwgMHhEMCwKKzB4MDQsIDB4NDAsIDB4MDAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDAsIDB4NTAsIDB4MEMsIDB4NDAsIDB4NDMsIDB4MjAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEwLCAweDM2LCAweDAwLCAweERGLCAweDAwLCAweDdDLAorMHgwMCwgMHhGMCwgMHgwRCwgMHhDMiwgMHgyNCwgMHgwMCwgMHhEMywgMHgwMCwgMHg2QywgMHgwMCwgMHgzMCwgMHgwRCwgMHhDMCwKKzB4MDcsIDB4MDAsIDB4MTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsCisweDdDLCAweDAwLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweDEzLCAweDQwLCAweDRDLCAweDAzLCAweEYwLCAweDA1LAorMHhDMCwgMHgwNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHg3NCwgMHgwRCwgMHhDMCwgMHgwNywgMHg0MCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QTgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDIsCisweEYwLCAweDBGLCAweEM4LCAweDJCLCAweDA4LCAweEZGLCAweDIwLCAweEZDLCAweDAyLCAweEYwLCAweDBFLCAweEMwLCAweDJGLAorMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMiwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywKKzB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDBGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEIwLCAweDBGLCAweEMwLCAweDE3LCAweDIyLCAweDBFLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg0RiwgMHgwMCwgMHgzMywgMHgwMSwgMHhDQywgMHgyNCwgMHgzMCwKKzB4MTMsIDB4QzAsIDB4MkMsIDB4MDIsIDB4RjMsIDB4MDAsIDB4OEMsIDB4MDcsIDB4MzAsIDB4Q0YsIDB4QzAsIDB4MkMsIDB4NDAsCisweDMzLCAweDA4LCAweENDLCAweDIzLCAweDcyLCAweEM3LCAweEMwLCAweENFLCAweDAwLCAweDMzLCAweDA0LCAweERDLCAweDAwLAorMHgzMCwgMHgxMywgMHhDMCwgMHhDRiwgMHgwMCwgMHgzRiwgMHgwMSwgMHhFRCwgMHgwNCwgMHgzMCwgMHgxMywgMHhDMCwgMHg0QywKKzB4MDAsIDB4MzMsIDB4MDEsIDB4Q0MsIDB4MDQsIDB4MzAsIDB4MTMsIDB4QzAsIDB4MEMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAzLCAweDIxLCAweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDA0LAorMHg0MCwgMHgyNCwgMHgwOSwgMHhGMSwgMHgwMCwgMHg0NCwgMHgwMywgMHgzMCwgMHgyMSwgMHg0MCwgMHhCMCwgMHgwNSwgMHgwMSwKKzB4MjYsIDB4MDUsIDB4M0IsIDB4MzAsIDB4RTEsIDB4NDAsIDB4MDUsIDB4MjEsIDB4NTEsIDB4MEIsIDB4NDQsIDB4MTgsIDB4MTUsCisweDQxLCAweEMwLCAweDIzLCAweDAwLCAweDFELCAweDAwLCAweDQ0LCAweDgyLCAweDEwLCAweDAxLCAweDQyLCAweDQ0LCAweDAwLAorMHgxMSwgMHg4MCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MDMsIDB4MDQsIDB4MTEsIDB4MDEsIDB4MDQsIDB4MTIsIDB4MTAsIDB4MDAsIDB4NDAsCisweDAwLCAweDAwLCAweEMxLCAweDAwLCAweDY0LCAweDUzLCAweDkwLCAweDNDLCAweDQ4LCAweDI0LCAweDAyLCAweDAxLCAweDA2LAorMHgyNSwgMHg4MywgMHhEMCwgMHgwNSwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgzNCwgMHg0OCwgMHg5MCwgMHgwMCwKKzB4NDEsIDB4MDMsIDB4MDEsIDB4ODksIDB4MDAsIDB4NDQsIDB4MDAsIDB4OTAsIDB4MDEsIDB4NDAsIDB4NDYsIDB4MDAsIDB4ODksCisweDAwLCAweDI0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDQ1LCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBOCwgMHgwNSwgMHgwMCwgMHgxMSwgMHg0MCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwNSwgMHg0MCwgMHgwNCwKKzB4MTIsIDB4QzEsIDB4MDAsIDB4NjQsIDB4MDMsIDB4MTQsIDB4MDksIDB4NDAsIDB4MzQsIDB4MDIsIDB4MTEsIDB4MDEsIDB4NjQsCisweDA3LCAweDEwLCAweDAxLCAweDQwLCAweDQ1LCAweDA0LCAweDU5LCAweDIwLCAweDY0LCAweDQ0LCAweDkyLCAweDExLCAweDQyLAorMHgyNywgMHgwMCwgMHg4QywgMHgwMCwgMHg0NCwgMHgwMiwgMHg5OCwgMHgxMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHg4OSwgMHgwMCwKKzB4MjQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MEQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEEwLCAweDM3LCAweDQwLCAweDQzLCAweDAwLCAweDRDLCAweDA0LCAweDMwLCAweDIxLCAweEMxLCAweDY0LCAweDAwLAorMHhEMywgMHgwMCwgMHgyRCwgMHgwMywgMHhCMCwgMHgwRCwgMHhDNCwgMHhDMCwgMHg0MCwgMHgxMywgMHgwMCwgMHg2QywgMHgwNywKKzB4RjIsIDB4MEQsIDB4QzAsIDB4ODQsIDB4NDAsIDB4NUIsIDB4ODEsIDB4N0MsIDB4MEMsIDB4QjEsIDB4NTEsIDB4RTAsIDB4MDcsCisweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDAxLCAweEIwLCAweDA4LCAweEMwLCAweDEyLCAweDE4LCAweDFCLCAweDAxLCAweDZDLAorMHgwNCwgMHgzMCwgMHgxMSwgMHhDMCwgMHgwOSwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywKKzB4ODgsIDB4M0QsIDB4MjAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MjQsIDB4RjAsIDB4MDcsIDB4QzAsIDB4NzMsIDB4MDAsIDB4RkYsCisweDAwLCAweERDLCAweDAyLCAweEYwLCAweDI2LCAweEMwLCAweDBGLCAweDMwLCAweDNGLCAweDIwLCAweDlDLCAweDAzLCAweEYwLAorMHgwNSwgMHhDMCwgMHgwRCwgMHgwMCwgMHg3NywgMHgwMywgMHhEQywgMHgwMCwgMHg3MiwgMHgwMywgMHhDMCwgMHgyRCwgMHgwMiwKKzB4M0YsIDB4MDgsIDB4REMsIDB4MDMsIDB4NzQsIDB4MEIsIDB4QzAsIDB4MUQsIDB4MTgsIDB4MzYsIDB4NDksIDB4REMsIDB4MjQsCisweEYwLCAweDkzLCAweEMwLCAweDFFLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LAorMHg3NSwgMHgwMCwgMHg1MywgMHgxMCwgMHg0QywgMHgwNiwgMHgzMiwgMHgwMSwgMHhDQSwgMHgyNCwgMHgwMCwgMHhEMywgMHgwMCwKKzB4NEQsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MjQsIDB4MDAsIDB4MTMsIDB4MDIsIDB4NkMsIDB4MDIsIDB4MzAsIDB4MEQsCisweEMxLCAweDg2LCAweDAwLCAweDRGLCAweDUwLCAweENDLCAweDE4LCAweDMwLCAweDAxLCAweEM4LCAweDA3LCAweDQwLCAweDkzLAorMHgwNSwgMHg3QywgMHgwMSwgMHhGMCwgMHgwOSwgMHhDMCwgMHgxNCwgMHgwNCwgMHg5MywgMHgxMSwgMHg0QywgMHg0NiwgMHgzMCwKKzB4NTksIDB4QzAsIDB4MDgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4NzQsCisweDAwLCAweDUxLCAweDgwLCAweDQ0LCAweDA2LCAweDEyLCAweDA1LCAweDQwLCAweDM0LCAweDA5LCAweEYxLCAweDAwLCAweDQ0LAorMHgwQiwgMHgxMCwgMHhCRCwgMHg0MCwgMHhBNCwgMHgwMiwgMHgzNSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHg3QywgMHg0MCwKKzB4MDQsIDB4MDYsIDB4NUQsIDB4MTEsIDB4MkMsIDB4MDgsIDB4MTAsIDB4MTEsIDB4MDAsIDB4NjcsIDB4MDgsIDB4OUIsIDB4MjMsCisweDM0LCAweDJCLCAweEQwLCAweEE5LCAweDQwLCAweDk0LCAweDA0LCAweDkxLCAweDAzLCAweDQ0LCAweDBFLCAweDEwLCAweDM5LAorMHg0MCwgMHg0QywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4ODksIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTAsIDB4MDksIDB4NDAsIDB4NjAsIDB4MDAsIDB4QzEsIDB4MDEsIDB4MDQsIDB4NEIsCisweDE0LCAweDNDLCAweDQwLCAweEEwLCAweDAwLCAweDExLCAweDAwLCAweDI0LCAweDAzLCAweDE4LCAweDI0LCAweDQwLCAweDA2LAorMHgwOCwgMHg4RCwgMHgwMiwgMHgxNCwgMHgwMCwgMHgxMSwgMHgxMCwgMHg0OCwgMHg1MywgMHgwMiwgMHg0NSwgMHgwMCwgMHgzNCwKKzB4MDAsIDB4RDAsIDB4MDQsIDB4NDAsIDB4NjEsIDB4MDAsIDB4NDEsIDB4MDIsIDB4MDQsIDB4MDksIDB4MTAsIDB4MDQsIDB4MDIsCisweDFDLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDQ4LCAweDAwLCAweEI5LAorMHgwOSwgMHg4NCwgMHgwRCwgMHgxMCwgMHgxRSwgMHg0MiwgMHhGOCwgMHgwMCwgMHhFMSwgMHgwMSwgMHhDNCwgMHg4NywgMHgxNCwKKzB4MUMsIDB4NDEsIDB4NjgsIDB4MDIsIDB4QTUsIDB4MDEsIDB4ODQsIDB4MDcsIDB4MTAsIDB4OTIsIDB4NTAsIDB4NDgsIDB4MjAsCisweEFELCAweDIxLCAweDM2LCAweDg0LCAweDE4LCAweDEyLCAweDQwLCAweDdCLCAweDAwLCAweDZELCAweDAxLCAweEI0LCAweDA2LAorMHhEMCwgMHg5NywgMHg0MCwgMHg2RCwgMHgwMCwgMHg2MSwgMHgwOSwgMHg4NCwgMHgyNSwgMHgxMCwgMHgxNiwgMHg0MCwgMHgxMCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTgsIDB4MDAsIDB4NDAsIDB4OEIsIDB4MDgsCisweDRDLCAweDEzLCAweDMwLCAweDA4LCAweEMwLCAweDAwLCAweDQyLCAweEQzLCAweDEwLCAweDBDLCAweDAzLCAweDMwLCAweDBDLAorMHg0MCwgMHgyMCwgMHgwMiwgMHg4MywgMHgwMCwgMHgyQywgMHgwMywgMHgxMiwgMHgwNCwgMHhDMiwgMHgwMiwgMHgwMCwgMHg4RiwKKzB4MDgsIDB4MUMsIDB4MTIsIDB4MzAsIDB4MDAsIDB4RTUsIDB4MTMsIDB4MDAsIDB4QzcsIDB4MDAsIDB4M0MsIDB4MjAsIDB4RjAsCisweDA0LCAweEMwLCAweDIxLCAweDAwLCAweEQzLCAweDA4LCAweDRDLCAweDIzLCAweDMwLCAweDBELCAweEMwLCAweDQ4LCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgwRCwgMHgwMCwgMHhBNywgMHgwOCwgMHhGQywKKzB4MDMsIDB4RjAsIDB4MEYsIDB4QzgsIDB4MUYsIDB4MDAsIDB4RkYsIDB4ODAsIDB4RkQsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDNGLCAweDBBLCAweEJFLCAweDgwLCAweEZDLCAweDAzLCAweEY0LCAweDAzLCAweEMyLCAweDBGLCAweDAyLCAweEVGLCAweDIwLAorMHhFQywgMHgwMiwgMHhGMCwgMHg4MywgMHhDMCwgMHgzRiwgMHgwMiwgMHhGQiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMSwgMHgwNiwKKzB4QzAsIDB4MkEsIDB4MDIsIDB4RkYsIDB4MDgsIDB4RkMsIDB4MjMsIDB4RjAsIDB4OEYsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDAwLCAweENGLCAweDAwLCAweDVDLCAweDA1LAorMHgzMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHhERiwgMHgwRCwgMHg0QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywKKzB4MDAsIDB4MTMsIDB4MDAsIDB4Q0QsIDB4MDMsIDB4MzQsIDB4MEQsIDB4RDgsIDB4MDUsIDB4MTAsIDB4MTMsIDB4MDAsIDB4N0MsCisweDAyLCAweDcwLCAweDAxLCAweEM0LCAweDEzLCAweDAwLCAweDUzLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDBELCAweEQwLAorMHgzNCwgMHgwMCwgMHg1RiwgMHgwMCwgMHg0RSwgMHgwMSwgMHgzMCwgMHgxNSwgMHhDMCwgMHg1NCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MzksIDB4MDAsIDB4RUQsIDB4ODAsIDB4ODQsIDB4MDEsIDB4MTAsCisweDBFLCAweDQwLCAweDM4LCAweDAwLCAweENELCAweDEwLCAweDg0LCAweDAyLCAweEQwLCAweDBFLCAweDQwLCAweDJCLCAweDEwLAorMHg4MSwgMHgwNCwgMHg4NCwgMHgwMywgMHgxMCwgMHgwNCwgMHhDMCwgMHgwQSwgMHgwMCwgMHgyMSwgMHgwMCwgMHhCNCwgMHgwMiwKKzB4MTEsIDB4MDYsIDB4NDgsIDB4M0IsIDB4MDAsIDB4NjEsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDIsIDB4MEYsIDB4NDAsIDB4MzgsCisweDIwLCAweDZELCAweDAwLCAweDg0LCAweDAxLCAweDEwLCAweDA2LCAweDQwLCAweDQ4LCAweDIwLCAweDA2LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwgMHhFRCwgMHgwMSwgMHg5NCwgMHgwNywgMHgxMCwgMHgxQSwKKzB4NTAsIDB4NjgsIDB4MDAsIDB4RUQsIDB4MDUsIDB4ODQsIDB4NDcsIDB4RDgsIDB4MUUsIDB4NDAsIDB4NkYsIDB4MDAsIDB4QTEsCisweDFELCAweDg1LCAweDA3LCAweDEwLCAweDFFLCAweDQwLCAweEM5LCAweDE4LCAweEUxLCAweDAxLCAweEY0LCAweDBFLCAweDUwLAorMHgxMiwgMHg0MCwgMHg1QiwgMHgwMCwgMHhFMSwgMHgwMSwgMHhCNCwgMHgwNSwgMHhEMCwgMHgxRSwgMHg0MiwgMHg3OCwgMHgwMCwKKzB4RUQsIDB4MDEsIDB4ODQsIDB4ODcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4MEMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE2LCAweDI4LCAweDczLCAweDAyLCAweERELCAweDAwLCAweDA0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLAorMHhCMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwNywgMHhEMCwgMHgwRCwgMHg0MCwgMHhBMywgMHgwMSwgMHhDMSwgMHg0MCwKKzB4MDQsIDB4MDksIDB4MTAsIDB4OEQsIDB4NDAsIDB4NzYsIDB4MDAsIDB4QzEsIDB4MDMsIDB4MzQsIDB4MEYsIDB4MTAsIDB4ODgsCisweDQyLCAweDMzLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDA3LCAweEQwLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweENELAorMHgwMCwgMHgwNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHg0OCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTcsIDB4QTAsIDB4OTUsIDB4MDAsIDB4NUYsIDB4MDAsIDB4NUMsIDB4MDEsIDB4MzQsIDB4MDUsIDB4QzAsIDB4MUMsCisweDAxLCAweDVGLCAweDAwLCAweDRDLCAweDAxLCAweEYwLCAweDA3LCAweEMwLCAweERGLCAweDQ0LCAweDczLCAweDAwLCAweENDLAorMHgzMSwgMHgzMCwgMHgxNywgMHhDMiwgMHg5RCwgMHg0MCwgMHg3MywgMHgwNywgMHhGQywgMHgyOSwgMHg3MiwgMHgxNiwgMHhDMCwKKzB4MTcsIDB4NTAsIDB4NTMsIDB4MjAsIDB4N0MsIDB4MDEsIDB4RjEsIDB4MDUsIDB4QzAsIDB4MTQsIDB4MTAsIDB4NUYsIDB4MDAsCisweDRELCAweDAxLCAweDM0LCAweDA1LCAweEQwLCAweDVDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMiwgMHgwOCwgMHgwNSwgMHgwNCwgMHgxRCwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMiwgMHgwMSwgMHhDOCwgMHgwMywgMHgwNCwKKzB4MUYsIDB4NDAsIDB4N0QsIDB4MDgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MTAsIDB4MUYsIDB4MjAsIDB4N0MsIDB4MDAsCisweEYyLCAweDExLCAweEQwLCAweDA3LCAweDA0LCAweDBGLCAweDEyLCAweDNDLCAweDA4LCAweEYxLCAweDQxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgyMCwgMHhGMCwgMHgxMSwgMHhDOCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywKKzB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NEIsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAyLCAweDRDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI0LCAweDAyLCAweDkwLAorMHgwMSwgMHg3QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg4MywgMHgwMCwgMHg0QywgMHgwMiwgMHgzMCwKKzB4MDksIDB4QzAsIDB4NjQsIDB4MDAsIDB4OTMsIDB4MDUsIDB4NEMsIDB4MDYsIDB4MTAsIDB4MDksIDB4QzgsIDB4MjQsIDB4MDAsCisweDkzLCAweDAwLCAweDY0LCAweDBBLCAweDMwLCAweDA5LCAweEMwLCAweEU0LCAweDEwLCAweDlGLCAweDAyLCAweDRELCAweDBBLAorMHgzMCwgMHg1OSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4QTYsIDB4MTAsIDB4OUQsIDB4MDAsIDB4NDUsIDB4MEEsIDB4RDAsIDB4MDgsIDB4QzAsIDB4NjYsIDB4MDAsIDB4OTEsIDB4MDEsCisweDM0LCAweDFBLCAweDEyLCAweDA5LCAweDQ4LCAweEE0LCAweDAyLCAweDk1LCAweDAwLCAweDQ0LCAweDAyLCAweDEyLCAweDk5LAorMHg1MSwgMHgyNCwgMHgwOCwgMHg5MSwgMHgyNSwgMHg0NCwgMHhBNiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyMCwgMHgwMCwgMHg5MSwKKzB4MDIsIDB4MDQsIDB4MEEsIDB4MTAsIDB4MjksIDB4NTAsIDB4NjQsIDB4MDgsIDB4OUQsIDB4NDIsIDB4NDQsIDB4MEEsIDB4MTAsCisweDM5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LAorMHg4MCwgMHhCRCwgMHgwMCwgMHhDNCwgMHgwMiwgMHhEMCwgMHgwQiwgMHg0MCwgMHgyNCwgMHg0MCwgMHg5NSwgMHgwOCwgMHg3NCwKKzB4MjIsIDB4MTQsIDB4MDksIDB4NDgsIDB4QjAsIDB4MDAsIDB4RDksIDB4MDQsIDB4MjQsIDB4MDIsIDB4MTQsIDB4MDksIDB4NDAsCisweDI0LCAweDQyLCAweEQxLCAweDAwLCAweDQ1LCAweDQyLCAweDUwLCAweDA5LCAweDUyLCAweDI0LCAweDQwLCAweEExLCAweDAwLAorMHhGNCwgMHgwMiwgMHgxMCwgMHgyQSwgMHg0MiwgMHgyQywgMHgwMCwgMHhBRCwgMHgwMCwgMHhBNCwgMHgwMiwgMHgxMCwgMHgwQiwKKzB4NDIsIDB4NjMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4NjgsIDB4MDAsCisweEVELCAweDAwLCAweDg0LCAweDA2LCAweEQwLCAweDBCLCAweDQwLCAweDIyLCAweDAxLCAweDg1LCAweDA0LCAweDc0LCAweDAyLAorMHgxMCwgMHg0OCwgMHg0MCwgMHgyMCwgMHgwMSwgMHg4RCwgMHgwNCwgMHgyNSwgMHgxMiwgMHgxMCwgMHg0OCwgMHg0MCwgMHg2MCwKKzB4MjAsIDB4ODEsIDB4ODQsIDB4MDUsIDB4MTIsIDB4MTQsIDB4MDgsIDB4NDAsIDB4MkMsIDB4MDAsIDB4QTEsIDB4MDEsIDB4RDQsCisweDAyLCAweDEwLCAweDBBLCAweDQyLCAweDY4LCAweDgwLCAweEFELCAweDAxLCAweEE0LCAweDA2LCAweDEwLCAweDFBLCAweDQwLAorMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHg4NiwgMHgwMiwgMHgxRiwKKzB4MEEsIDB4MEQsIDB4MjgsIDB4RjAsIDB4QTIsIDB4QzAsIDB4OTQsIDB4MDIsIDB4MTcsIDB4MEEsIDB4N0MsIDB4MjgsIDB4MzAsCisweEE1LCAweEQwLCAweDg0LCAweDAyLCAweDFCLCAweDBBLCAweDJDLCAweDI4LCAweDMxLCAweEExLCAweEQwLCAweDgwLCAweDIyLAorMHgxMywgMHgwMCwgMHg0QywgMHgyOCwgMHg3MCwgMHhBMSwgMHhDMCwgMHg4NCwgMHgwMiwgMHgxMywgMHgwQSwgMHg3QywgMHgyOSwKKzB4MzAsIDB4QTEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MEYsIDB4MEEsIDB4MkMsIDB4MjgsIDB4MzIsIDB4QTIsIDB4QzAsIDB4NzcsCisweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LCAweDI3LCAweDAwLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyRiwgMHgwMiwgMHg5QiwgMHgwOCwgMHhFQywgMHgwMiwgMHhGNCwgMHg4QiwKKzB4QzgsIDB4MkIsIDB4MDIsIDB4QjcsIDB4MDgsIDB4REMsIDB4MjMsIDB4RjAsIDB4OEIsIDB4QzIsIDB4MkYsIDB4MDAsIDB4QkYsCisweDY4LCAweEJDLCAweDIyLCAweEYwLCAweDBCLCAweEMyLCAweDI3LCAweDAwLCAweDlGLCAweDIwLCAweDZDLCAweDAyLCAweEY0LAorMHgwOSwgMHhDOCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg1QywgMHgwMiwgMHhGNCwgMHgwOSwgMHhDMCwgMHg2NywgMHg2MCwKKzB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4QTAsIDB4MkYsIDB4MDAsIDB4RjMsIDB4MjgsIDB4REMsCisweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDJGLCAweDQyLCAweEIzLCAweDA0LCAweENDLCAweDAyLCAweDMwLCAweENGLCAweEMwLAorMHgyQiwgMHgwMCwgMHhBMywgMHgwNSwgMHg0RCwgMHgxNiwgMHgzMiwgMHg5QiwgMHhDMCwgMHhBRiwgMHgxMCwgMHhCMywgMHgwNSwKKzB4REMsIDB4MzYsIDB4MzAsIDB4MEIsIDB4QzQsIDB4MkMsIDB4MDAsIDB4QjMsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4OEIsCisweEMwLCAweDNDLCAweDE4LCAweEJGLCAweDQwLCAweEZDLCAweDIyLCAweEYwLCAweDBCLCAweEMwLCAweDYzLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNywgMHgwMSwgMHgwMSwgMHgwNCwgMHg0NCwgMHg0MSwKKzB4RDAsIDB4MDEsIDB4NDEsIDB4MDcsIDB4MDIsIDB4MTEsIDB4MTQsIDB4NDQsIDB4MTAsIDB4MTAsIDB4QzAsIDB4NDAsIDB4ODcsCisweDQ0LCAweDExLCAweDE3LCAweDQ0LCAweDVDLCAweDE0LCAweDMxLCAweDQ0LCAweDQ3LCAweDAwLCAweDExLCAweDIyLCAweDQ0LAorMHgwNCwgMHgxMCwgMHg1NSwgMHg0MSwgMHg0NCwgMHgwNSwgMHg1MSwgMHgxNCwgMHg3NCwgMHgxMCwgMHhEMCwgMHg0MSwgMHg1MCwKKzB4MDQsIDB4MDAsIDB4NUQsIDB4MTAsIDB4NzQsIDB4MDEsIDB4RDAsIDB4NDUsIDB4NDEsIDB4NzMsIDB4MjAsIDB4MEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDIxLCAweDQ1LCAweDgxLCAweDA0LCAweDE0LCAweDEyLCAweEQwLAorMHgwOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHgwQywgMHgyNCwgMHg1MiwgMHgxMCwgMHg0OCwgMHg0NCwgMHgyMywgMHgwMywKKzB4ODEsIDB4MDgsIDB4MDQsIDB4MjIsIDB4MTAsIDB4NjgsIDB4NDAsIDB4MjcsIDB4MDEsIDB4ODksIDB4MDgsIDB4MzQsIDB4MUEsCisweDE0LCAweDA5LCAweDUwLCAweDI0LCAweDAwLCAweDg5LCAweDI0LCAweDM0LCAweDUyLCAweEQxLCAweDQ4LCAweDQwLCAweDIwLAorMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHg0OCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjgsIDB4MjEsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDIsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDAwLCAweDY1LCAweDAyLCAweDE0LCAweDI5LCAweDQwLCAweEE3LCAweDAxLCAweDkxLAorMHgxMSwgMHg0NCwgMHgxMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHg2NywgMHgwMCwgMHg5OSwgMHgwNiwgMHg2NCwgMHgwQSwgMHgxMCwKKzB4MTksIDB4NDAsIDB4MjQsIDB4NDAsIDB4OTksIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsCisweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDYzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwNSwgMHgyMCwgMHgyNSwgMHgwMCwgMHg5MywgMHgwMCwgMHg1QywgMHgwQSwgMHhGMCwgMHgwOSwgMHhDMCwKKzB4QTcsIDB4MDEsIDB4OTMsIDB4MDAsIDB4NkQsIDB4MDYsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDEsCisweDRDLCAweDBBLCAweDMwLCAweDY5LCAweEMwLCAweDIzLCAweDI0LCAweDlCLCAweDAwLCAweDdDLCAweDA2LCAweDMyLCAweDE4LAorMHhDMCwgMHgyNCwgMHgwMCwgMHg5QSwgMHgwMiwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwgMHg4MCwgMHg5RiwKKzB4MDIsIDB4N0MsIDB4MEEsIDB4RjAsIDB4MjksIDB4QzAsIDB4MTcsIDB4QTAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE2LCAweDA4LCAweDI1LCAweDEwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDIzLAorMHgwMCwgMHg4RiwgMHgwMCwgMHg1QywgMHg0RSwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHg0NCwgMHg4RiwgMHg0MCwgMHg3QywKKzB4MDIsIDB4RjIsIDB4MDksIDB4QzIsIDB4MjcsIDB4NDAsIDB4ODcsIDB4MDEsIDB4NTQsIDB4Q0EsIDB4RjAsIDB4MDksIDB4QzAsCisweDI3LCAweDAwLCAweDk3LCAweDAwLCAweDdDLCAweDAyLCAweEYxLCAweDA5LCAweEMwLCAweDI3LCAweDBDLCAweDlGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg1MywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MDgsIDB4MDUsIDB4MDQsIDB4MUYsIDB4MDQsIDB4NEMsIDB4MDgsIDB4QjQsIDB4MDEsIDB4RDAsIDB4MDQsIDB4MDEsCisweDEzLCAweDAwLCAweDRDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDAwLCAweDAwLCAweDEzLCAweDAyLCAweDRDLCAweDA4LAorMHgzMCwgMHgyMSwgMHhDMCwgMHg4NCwgMHgwMCwgMHgxMywgMHgwMSwgMHgwQywgMHgwMCwgMHhCNCwgMHgwMSwgMHhDMCwgMHgwNywKKzB4MDAsIDB4MUYsIDB4MDYsIDB4NEQsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDIsIDB4MUYsIDB4MDIsIDB4NEQsCisweDQ4LCAweDM0LCAweDIxLCAweEQwLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorMHgwMCwgMHhEQywgMHgwMCwgMHg2RCwgMHgwMCwgMHhDNCwgMHgwNSwgMHgzMCwgMHgwNSwgMHg0MCwgMHgxQywgMHgwMCwgMHg1MSwKKzB4MDAsIDB4QzUsIDB4MDUsIDB4MTAsIDB4MDcsIDB4NDgsIDB4MUMsIDB4MDAsIDB4NTEsIDB4MjAsIDB4NDQsIDB4MDEsIDB4NTAsCisweDY3LCAweDQwLCAweDFDLCAweDQ4LCAweDcxLCAweDEwLCAweEVDLCAweDA5LCAweDEwLCAweDE1LCAweDQwLCAweDEzLCAweDAwLAorMHg3RCwgMHg4MywgMHhDNCwgMHgwMSwgMHgwMCwgMHgxNywgMHg0MCwgMHgxRiwgMHgwMCwgMHg3RCwgMHgwMCwgMHhDNCwgMHgwOSwKKzB4MTAsIDB4MDcsIDB4NDAsIDB4NTAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsCisweEYyLCAweDAyLCAweDhELCAweDAyLCAweDA0LCAweDA3LCAweDUwLCAweDBDLCAweDQwLCAweEIwLCAweDQwLCAweEM1LCAweDAwLAorMHg0NCwgMHgwRiwgMHgxMCwgMHg4QywgMHg0MCwgMHgyMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHg0NSwgMHgwMywgMHgxOCwgMHg2QywKKzB4NDQsIDB4MzAsIDB4MjAsIDB4QzEsIDB4MDEsIDB4MDQsIDB4MDcsIDB4MTAsIDB4MTgsIDB4NDAsIDB4MzMsIDB4MDgsIDB4Q0QsCisweDAzLCAweDA0LCAweDA1LCAweDEwLCAweDg5LCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDA1LCAweDBCLCAweDEwLAorMHgwQywgMHg0MCwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwKKzB4MTAsIDB4MkQsIDB4MDQsIDB4ODQsIDB4NDcsIDB4NTAsIDB4REYsIDB4NDIsIDB4MDgsIDB4MDQsIDB4RTUsIDB4MDAsIDB4ODQsCisweDQxLCAweDEwLCAweDFFLCAweDQwLCAweDJDLCAweDAwLCAweEYxLCAweDAwLCAweDg0LCAweDEzLCAweDUwLCAweDFFLCAweDUwLAorMHgzQywgMHgwNSwgMHg0MSwgMHgyMCwgMHhBNCwgMHgwQiwgMHgxMCwgMHgwRSwgMHg0MSwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMywKKzB4ODQsIDB4MEQsIDB4MTEsIDB4MDIsIDB4NDAsIDB4MEIsIDB4MDAsIDB4RUQsIDB4MDEsIDB4ODQsIDB4MDcsIDB4MTAsIDB4MUUsCisweDQ0LCAweDE0LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDc5LCAweDAwLAorMHhBRiwgMHgwNywgMHhDRCwgMHgwNywgMHg3MCwgMHgxRSwgMHhDMCwgMHg0MCwgMHg0MCwgMHg4NywgMHg4OSwgMHg4QywgMHgwNCwKKzB4MzQsIDB4MUUsIDB4MTAsIDB4NzgsIDB4NDAsIDB4RTMsIDB4MzEsIDB4Q0MsIDB4MEYsIDB4MzQsIDB4MUUsIDB4QzAsIDB4RTgsCisweDAwLCAweDYzLCAweDAxLCAweDBDLCAweDA0LCAweDM0LCAweDFBLCAweEMwLCAweDdCLCAweDAwLCAweEZGLCAweDAxLCAweENDLAorMHgwNiwgMHgzNCwgMHgxMiwgMHhDMCwgMHg0QiwgMHgwMCwgMHhGRCwgMHgwMSwgMHhDQywgMHgwNywgMHgzMCwgMHgxRiwgMHhDMCwKKzB4NTQsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MzUsIDB4MDAsIDB4MUYsCisweDIwLCAweDdDLCAweDAzLCAweDMwLCAweDJDLCAweEMwLCAweDA3LCAweDAwLCAweERCLCAweDA0LCAweDNDLCAweDAwLCAweEYyLAorMHgwNSwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwNiwgMHg3QywgMHg1QiwgMHhCMCwgMHg4OCwgMHhDMCwgMHgxMywgMHgwMCwKKzB4NUYsIDB4MjAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4QjcsIDB4MEQsIDB4REYsIDB4MDAsIDB4RkMsIDB4ODAsCisweEYwLCAweDA5LCAweEMwLCAweDA3LCAweDAwLCAweERGLCAweDIwLCAweDdDLCAweDAxLCAweEYwLCAweDA5LCAweEMyLCAweDQzLAorMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyMCwgMHg3RCwgMHgwMCwgMHgyRiwgMHgwMSwKKzB4REMsIDB4MTMsIDB4RjAsIDB4M0YsIDB4QzAsIDB4NEMsIDB4MTAsIDB4RjcsIDB4MDEsIDB4REMsIDB4MDQsIDB4MzAsIDB4MUYsCisweEM4LCAweDZDLCAweDAwLCAweEYzLCAweDAxLCAweENDLCAweDA3LCAweDMxLCAweDFCLCAweEQwLCAweDZELCAweDAwLCAweDczLAorMHgwMSwgMHg5RCwgMHgwNCwgMHhCMiwgMHg0RiwgMHhDMCwgMHg3QywgMHgwMCwgMHhGMywgMHgwMSwgMHhEQywgMHgwNSwgMHgzMCwKKzB4MUYsIDB4QzAsIDB4NEMsIDB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4MDMsIDB4MDgsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDM5LCAweDAwLCAweDI3LCAweDAwLCAweDg0LAorMHgwQSwgMHhEMCwgMHg4RiwgMHg0MSwgMHgwQywgMHgwMCwgMHhFMSwgMHgwMCwgMHhFQywgMHgwMCwgMHgxMiwgMHg0QSwgMHg0MCwKKzB4MDgsIDB4MDIsIDB4RTAsIDB4MDAsIDB4ODQsIDB4MTMsIDB4QTEsIDB4MEIsIDB4NDAsIDB4MzgsIDB4MDAsIDB4NjEsIDB4MDgsCisweDg0LCAweDAyLCAweDUwLCAweDBGLCAweDQwLCAweDNDLCAweDAyLCAweEE3LCAweDAwLCAweEM0LCAweDIxLCAweDEyLCAweDA3LAorMHg0MCwgMHgwOCwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgyRSwgMHg0MCwgMHg1NywgMHgyMCwgMHgwNiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4QUQsIDB4MDAsIDB4OTQsIDB4MjMsCisweEQwLCAweDBFLCAweDQwLCAweDA4LCAweDAwLCAweDg1LCAweDAwLCAweDk0LCAweDQwLCAweDEwLCAweDBFLCAweDQwLCAweDNDLAorMHgwMCwgMHhFMSwgMHgwOCwgMHg4NCwgMHgwMywgMHg4MCwgMHgwMiwgMHg0MCwgMHgyOSwgMHgwMiwgMHgyMSwgMHgwMCwgMHhENCwKKzB4MDAsIDB4MTQsIDB4MkUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4NjEsIDB4MDAsIDB4OTQsIDB4MDIsIDB4MTAsIDB4MDYsIDB4NDAsCisweDA4LCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDAzLCAweDAwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyOCwgMHgzNSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEMCwKKzB4MUMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MTIsIDB4MzEsIDB4NDAsIDB4MzAsIDB4MDAsCisweEMxLCAweDAwLCAweDA1LCAweDgzLCAweDkwLCAweDEwLCAweDQwLCAweDEwLCAweDA0LCAweDQxLCAweDYxLCAweDA0LCAweDA0LAorMHg1NCwgMHg5QywgMHg0NCwgMHgzMCwgMHgwOCwgMHg5NSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwQywgMHg0MCwgMHgwMCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MTMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLCAweDM1LCAweDAwLCAweEZGLCAweDAwLCAweDVDLCAweDAzLCAweEYwLCAweDFGLAorMHhEMCwgMHgyNCwgMHgwMCwgMHhENywgMHgwMCwgMHgxQywgMHgwNCwgMHgzMCwgMHg4RCwgMHhENSwgMHg2MCwgMHgwMCwgMHhEMywKKzB4MEEsIDB4Q0MsIDB4MEIsIDB4QjAsIDB4ODMsIDB4RDEsIDB4MzksIDB4NDgsIDB4MTMsIDB4MTAsIDB4NUQsIDB4MDIsIDB4MzAsCisweDBELCAweEM0LCAweEE0LCAweDAwLCAweEQzLCAweDAwLCAweDVDLCAweDA5LCAweDMwLCAweDBELCAweEMwLCAweDAwLCAweDAwLAorMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MjcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsCisweDA3LCAweDAyLCAweERGLCAweDIwLCAweDVDLCAweDA4LCAweEY0LCAweDJELCAweEMwLCAweEU3LCAweDQwLCAweERGLCAweDA4LAorMHg3QywgMHgwMywgMHhGMCwgMHgwOSwgMHhDMCwgMHgzNywgMHgwMiwgMHgxRiwgMHgyMCwgMHg3QywgMHhBMiwgMHg3NCwgMHgwRCwKKzB4QzAsIDB4MzcsIDB4MDEsIDB4RDcsIDB4NDAsIDB4N0MsIDB4MTEsIDB4RjAsIDB4MkQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OUYsCisweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwOCwgMHgxRiwgMHgwMCwgMHhCMywgMHgwMCwgMHhDQywgMHgwMSwgMHhGMCwgMHgwRiwgMHhDMCwgMHgwQiwKKzB4MDAsIDB4QjIsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4MzAsIDB4MUYsIDB4QzAsIDB4MkMsIDB4NDAsIDB4OTcsIDB4MDAsIDB4N0MsCisweDQzLCAweDMyLCAweDUzLCAweEQwLCAweDJFLCAweDAwLCAweDEzLCAweDAwLCAweEZDLCAweDIwLCAweDIwLCAweDFGLCAweEMwLAorMHgyRiwgMHgwMCwgMHhGRCwgMHgwMCwgMHhFQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgwQywgMHgxMCwgMHg3MiwgMHgwMCwKKzB4RkMsIDB4MjcsIDB4RjAsIDB4MDcsIDB4QzAsIDB4MDMsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDgxLCAweDAwLCAweDA2LCAweDA4LCAweDExLCAweDAwLCAweDQ1LCAweDBCLCAweEQwLCAweDBELCAweEM4LCAweDQ1LCAweDAwLAorMHhEMSwgMHgwMCwgMHg0NCwgMHgwNCwgMHgxMCwgMHhCRCwgMHg0MSwgMHg2NCwgMHgyMCwgMHg5MSwgMHgwOCwgMHgzNCwgMHgwMywKKzB4MTIsIDB4MDksIDB4NDAsIDB4MTUsIDB4MDAsIDB4MTEsIDB4MDEsIDB4N0MsIDB4MDAsIDB4NTAsIDB4MUQsIDB4NDAsIDB4NzcsCisweDAwLCAweERELCAweDA5LCAweDQ0LCAweDA0LCAweEQwLCAweDNELCAweDQ4LCAweEM0LCAweDA0LCAweEQxLCAweDAwLCAweDc0LAorMHgwNSwgMHhEMCwgMHhCRCwgMHg0MCwgMHgwNywgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4QTAsIDB4NzYsIDB4MDAsIDB4NDEsIDB4MDgsIDB4NDQsIDB4MjMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NDcsIDB4MDAsIDB4QzUsCisweDAwLCAweDQ0LCAweDBDLCAweDEwLCAweDBELCAweDQwLCAweEU1LCAweDAwLCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweDEyLAorMHgwMCwgMHg0MSwgMHgyNiwgMHgwMCwgMHgxMSwgMHgyMywgMHgzNCwgMHgwMCwgMHhEOCwgMHg0RCwgMHg0MCwgMHgyNywgMHgwMSwKKzB4REQsIDB4MDAsIDB4NjQsIDB4NDQsIDB4RDAsIDB4NkMsIDB4NDAsIDB4NDQsIDB4ODAsIDB4RDUsIDB4MDEsIDB4NzQsIDB4MDMsCisweEQwLCAweDBELCAweDQwLCAweDA3LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHg3MCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgwMSwgMHgwMCwgMHhDNSwgMHgwMCwKKzB4MDQsIDB4ODAsIDB4MTQsIDB4MEMsIDB4NTAsIDB4MjEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4NzQsIDB4ODMsIDB4MTgsIDB4MDgsCisweDUwLCAweDMxLCAweDAwLCAweDAxLCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELAorMHgwMCwgMHgwNCwgMHgwMCwgMHhEMCwgMHgwQywgMHg0MCwgMHgwMCwgMHg4MCwgMHg4NSwgMHgwMSwgMHgzNCwgMHgwMiwgMHhEMCwKKzB4MEMsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MzYsCisweDAwLCAweDkzLCAweDgwLCAweDRDLCAweDgxLCAweEYwLCAweDBGLCAweEMwLCAweDA3LCAweDIwLCAweEI3LCAweDAwLCAweDRELAorMHgwMCwgMHgzMCwgMHgwQywgMHg0NCwgMHgyNSwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHgwMywgMHgzMSwgMHgwMSwgMHhDNCwKKzB4MjIsIDB4MDAsIDB4MTMsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzIsIDB4MkYsIDB4MDAsIDB4NEYsIDB4NDAsCisweDZDLCAweDAwLCAweEYwLCAweDBELCAweEMwLCAweDA0LCAweDAwLCAweDU3LCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDA1LAorMHhDNCwgMHgwMywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgzRiwgMHgwMCwKKzB4M0YsIDB4NDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4RkIsIDB4NDAsIDB4RkMsIDB4MDAsCisweEYwLCAweDBGLCAweEMwLCAweDJBLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDAzLCAweDQwLCAweDFGLAorMHg0MCwgMHgzRiwgMHgwMCwgMHhEOCwgMHgwMCwgMHg3MiwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywKKzB4MDAsIDB4RjAsIDB4MEYsIDB4QzgsIDB4MEYsIDB4MDgsIDB4RkIsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsCisweDE3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAwLCAweEZGLAorMHgwMSwgMHhGQywgMHgxMywgMHgzMiwgMHg4QiwgMHhDMiwgMHgyQywgMHgwOSwgMHhGRiwgMHgwMSwgMHhGQywgMHg2MywgMHgzMCwKKzB4NEIsIDB4QzIsIDB4N0MsIDB4MDAsIDB4QkYsIDB4MDQsIDB4Q0MsIDB4ODIsIDB4MzAsIDB4MkYsIDB4QzEsIDB4N0MsIDB4MDAsCisweEYzLCAweDAxLCAweEZDLCAweDQzLCAweDMwLCAweDRGLCAweDUwLCAweDI4LCAweDAwLCAweEYzLCAweDAxLCAweEZFLCAweDA3LAorMHhCMCwgMHgxRiwgMHhDMCwgMHg3QywgMHgwMCwgMHhGOSwgMHgwMSwgMHhGQywgMHgwMywgMHhGMCwgMHgxRiwgMHhDMCwgMHgwRiwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4NzcsIDB4MDAsIDB4REQsIDB4MDEsCisweEY0LCAweDYzLCAweDEwLCAweDgxLCAweDQ2LCAweEU0LCAweDBBLCAweERELCAweDQxLCAweEY0LCAweDBCLCAweDUwLCAweDkxLAorMHg0MiwgMHg3NCwgMHgwMCwgMHg5QywgMHgyMiwgMHg0NCwgMHgwOCwgMHgxMCwgMHgyRiwgMHhDNCwgMHgzNCwgMHgwOCwgMHhENSwKKzB4MjEsIDB4RjQsIDB4MEYsIDB4NDEsIDB4OUYsIDB4NDAsIDB4QzQsIDB4MDIsIDB4RDEsIDB4MDEsIDB4NzQsIDB4MDcsIDB4MTAsCisweDE1LCAweDQwLCAweDc0LCAweDAwLCAweEQ5LCAweDAxLCAweDc0LCAweDA3LCAweEQwLCAweDFELCAweDQwLCAweDBGLCAweDIwLAorMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzMywgMHgyOCwgMHhDRCwgMHg4MCwgMHgzNCwKKzB4MTMsIDB4MDAsIDB4MDgsIDB4NDgsIDB4NDAsIDB4MjAsIDB4Q0QsIDB4ODAsIDB4MzAsIDB4MDMsIDB4MTIsIDB4MTAsIDB4NDAsCisweDMwLCAweDEwLCAweDBELCAweDFDLCAweDA0LCAweDc2LCAweDEwLCAweDRDLCAweDQwLCAweDMzLCAweDA1LCAweEMxLCAweDQwLAorMHgzNCwgMHg4MywgMHg4MCwgMHgwQywgMHg0MCwgMHgyMCwgMHgwOCwgMHhDMSwgMHg4MCwgMHgzNCwgMHgwMywgMHg5MCwgMHgwRCwKKzB4NDAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NEYsIDB4ODAsIDB4MEUsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDM1LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDAzLAorMHgxMSwgMHgxMSwgMHg0MCwgMHg2NCwgMHgwMCwgMHhERCwgMHg0MCwgMHg2NCwgMHgwMywgMHgxMCwgMHgxMSwgMHg0MCwgMHgzNCwKKzB4MjAsIDB4MDksIDB4MDMsIDB4MDQsIDB4MDYsIDB4MTAsIDB4MEQsIDB4NDQsIDB4MzUsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsCisweDAzLCAweDkwLCAweDBELCAweDQwLCAweDY0LCAweDA0LCAweEQxLCAweDAwLCAweDc0LCAweDAzLCAweDUwLCAweDE5LCAweDQwLAorMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwRCwgMHgwMCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NzQsIDB4MDMsIDB4MzAsCisweDMxLCAweEMwLCAweDQ0LCAweDAwLCAweERGLCAweDQwLCAweDdDLCAweDAzLCAweDMyLCAweDE5LCAweEMwLCAweDM0LCAweDA4LAorMHg5RiwgMHgwMSwgMHg0QywgMHgwNCwgMHgzMCwgMHgwRCwgMHhDNiwgMHgzNywgMHgwMCwgMHhEMSwgMHg4MCwgMHg3QywgMHg4MywKKzB4QTAsIDB4MEQsIDB4QzAsIDB4NjQsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NzQsIDB4MDMsIDB4QjAsIDB4M0QsIDB4QzEsIDB4MzYsCisweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEQwLCAweDBELCAweEMwLCAweDgzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMiwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4RkYsIDB4NDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDAsIDB4NDAsIDB4M0YsIDB4MDAsIDB4OUYsCisweDIwLCAweDdDLCAweDgwLCAweEYxLCAweDBGLCAweEMwLCAweDNFLCAweDAwLCAweEZELCAweDAwLCAweEZDLCAweDAzLCAweDcyLAorMHgwRiwgMHg0MCwgMHgwQiwgMHgwMCwgMHhGRCwgMHgwMCwgMHhGQywgMHgwMywgMHhCMCwgMHgwRiwgMHg0MCwgMHgzRCwgMHgwMCwKKzB4RkIsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDNDLCAweDAzLCAweDMwLCAweEE5LCAweEMwLAorMHgwNCwgMHgwMCwgMHhEMywgMHg2MCwgMHgyQywgMHg2MywgMHgzMCwgMHgwOSwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5QiwgMHgyMCwKKzB4NEMsIDB4MDAsIDB4MzAsIDB4OEMsIDB4QzAsIDB4MzQsIDB4MDAsIDB4RDIsIDB4MDAsIDB4M0MsIDB4MDMsIDB4MzAsIDB4MEMsCisweEMwLCAweDI3LCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDIzLCAweEYxLCAweDJELCAweEMwLCAweDM3LCAweDEwLCAweERGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgyQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTMsIDB4QTAsIDB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4RjQsIDB4MDMsIDB4MTAsIDB4MzEsIDB4NDAsIDB4MjQsCisweDAwLCAweEQxLCAweDAwLCAweEY0LCAweDBCLCAweDEwLCAweDA5LCAweDQ0LCAweDM0LCAweDAwLCAweDlELCAweDAwLCAweDQ0LAorMHgwMiwgMHgxMiwgMHhBRiwgMHg0MCwgMHg3NCwgMHgyMCwgMHhEMSwgMHgwMCwgMHhGNCwgMHgwMywgMHgxMCwgMHgwRiwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4RDEsIDB4ODAsIDB4MzQsIDB4MEYsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDAsCisweEY0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDRGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNywgMHhBMCwgMHgzMiwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHgxNCwgMHgwOCwgMHg0MSwgMHgyMCwgMHgwMCwKKzB4QzEsIDB4MDAsIDB4MzQsIDB4MEIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MDQsIDB4MDIsCisweDEwLCAweDJDLCAweDQwLCAweDM0LCAweDAyLCAweEMxLCAweDAwLCAweDM0LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDAzLAorMHgwMCwgMHhDNSwgMHgyMCwgMHgzNCwgMHg0RiwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDgwLCAweDc4LCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDI3LCAweDEwLCAweDFFLCAweDQwLCAweDc4LCAweDAwLCAweEUxLAorMHgwMSwgMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NCwgMHgwNSwgMHgxMCwKKzB4MUUsIDB4NDAsIDB4RjgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4RjQsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4NUIsIDB4MDAsCisweEUxLCAweDAxLCAweEIwLCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA3LAorMHhEMCwgMHgxRSwgMHg0MCwgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwKKzB4MzAsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4M0MsIDB4MDMsIDB4MzAsIDB4MkQsIDB4QzAsIDB4MTAsIDB4MDgsIDB4QzMsIDB4MDgsCisweDdDLCAweDAzLCAweDMwLCAweDQ0LCAweEMwLCAweDMwLCAweDAyLCAweDRGLCAweDAwLCAweDBDLCAweDAzLCAweDMwLCAweDhELAorMHhFMCwgMHgzNCwgMHgwMCwgMHhDMywgMHgwOCwgMHg3QywgMHgyMywgMHgzMCwgMHgwQywgMHhDMCwgMHgxMywgMHgwMCwgMHhDNywKKzB4MDAsIDB4M0MsIDB4MDMsIDB4RjEsIDB4MEMsIDB4QzAsIDB4MzMsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4M0MsIDB4MDMsIDB4RjAsCisweDBDLCAweEMwLCAweDRCLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDM1LAorMHgxMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwQiwgMHhDMCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3NCwKKzB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MzcsIDB4MjAsIDB4REUsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MkQsIDB4QzAsCisweDM3LCAweDAwLCAweERGLCAweDA4LCAweDdDLCAweDgzLCAweEI0LCAweDBELCAweEMxLCAweDM3LCAweDAwLCAweERGLCAweDAwLAorMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwKKzB4QzAsIDB4MEIsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4MzcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweEIzLCAweDMwLCAweDE1LCAweEMwLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDRCLAorMHhGMCwgMHgwRCwgMHhDOCwgMHgzNywgMHgyOCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHhBRCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4NTMsIDB4RjAsIDB4MUQsIDB4QzQsIDB4MzQsIDB4MTAsIDB4RDMsIDB4MDAsIDB4N0MsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHgzOSwgMHgwMCwgMHhFRCwKKzB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MTMsIDB4RDAsCisweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAxLCAweEQzLCAweDRFLCAweDQwLCAweDNCLCAweDAwLAorMHhFRCwgMHgwMCwgMHhCNCwgMHgxQiwgMHhEMCwgMHg0RSwgMHg0MSwgMHgxOCwgMHgwOCwgMHhFMSwgMHg4MCwgMHhCNCwgMHgwMywKKzB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MEIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4NEYsCisweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDc5LCAweDAwLCAweEVELCAweDAxLAorMHhCMCwgMHgxNywgMHgxMCwgMHgxQywgMHg1MSwgMHg1OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwgMHgyNywgMHhEMCwgMHgxRSwKKzB4NDAsIDB4N0IsIDB4MDAsIDB4NkQsIDB4MjEsIDB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsCisweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFDLCAweDQwLCAweDcwLCAweDQwLCAweEUxLCAweDAxLCAweEI0LCAweDA3LCAweEQwLAorMHgxRSwgMHg0MSwgMHg3QiwgMHg4MCwgMHhFRCwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0MCwgMHgxMywgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NzQsCisweDgzLCAweDEwLCAweDNDLCAweDQ1LCAweEYwLCAweDAyLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweEQ4LCAweEJDLCAweDQwLAorMHgzMywgMHgwMCwgMHhERCwgMHgwMSwgMHgzNCwgMHgyQiwgMHhEMSwgMHgwRCwgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzAsIDB4MDAsIDB4RDEsIDB4ODAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4N0MsCisweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDYwLCAweDVCLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHgxNSwgMHgwMCwgMHg1RiwgMHhDMCwgMHg3QywgMHgwMSwKKzB4MzAsIDB4MTcsIDB4QzAsIDB4REMsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MTcsIDB4QzAsIDB4MTcsCisweDAwLCAweDdGLCAweDA1LCAweEZDLCAweDI1LCAweEYwLCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDVGLCAweDAwLCAweDdDLAorMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHg1OCwgMHgwMSwgMHg1MywgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgzNywgMHhDMCwKKzB4MTcsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4NUYsIDB4MDAsIDB4MDQsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEY0LAorMHgwMSwgMHhDMCwgMHgwNywgMHgwNCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMSwgMHgwNiwgMHgxMCwKKzB4MUYsIDB4NDEsIDB4N0MsIDB4MDAsIDB4RTAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsCisweEYwLCAweDAxLCAweEQwLCAweEM3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDA4LCAweEYwLCAweDAxLCAweEMwLCAweDA3LAorMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4NTksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDI2LCAweEYwLCAweDA5LCAweEM0LCAweDI3LCAweDAwLCAweDlGLAorMHgwMCwgMHg0QywgMHgwMiwgMHhGMCwgMHg5OSwgMHhDMCwgMHg2NCwgMHgwMCwgMHg5RiwgMHg0MCwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4NEMsIDB4MDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDQzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgxOSwgMHg0MCwKKzB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzYsIDB4ODIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsCisweDQ0LCAweDAyLCAweEQwLCAweDY5LCAweEMwLCAweEE0LCAweDAxLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LAorMHg0MCwgMHhBNywgMHgxMiwgMHg5MSwgMHg0MCwgMHgwQywgMHg5QSwgMHgxMSwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwKKzB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LAorMHgwMCwgMHg5RCwgMHg0MCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RCwgMHgyMCwgMHg0NCwKKzB4ODIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MEEsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsCisweEE3LCAweDAwLCAweDk1LCAweDAwLCAweDQ0LCAweDAyLCAweDUwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLAorMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MTIsIDB4MTAsIDB4NTgsIDB4NDAsIDB4MjMsIDB4MDEsCisweDhELCAweDQwLCAweDM0LCAweDE2LCAweEQwLCAweDQ4LCAweDQwLCAweDIzLCAweDAwLCAweDhELCAweDQ0LCAweDA0LCAweDEyLAorMHhEMCwgMHg0OCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgxMiwgMHhEOCwgMHg0OCwgMHg0MCwgMHgyMywKKzB4MDEsIDB4OTEsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsCisweDEyLCAweEQwLCAweDA4LCAweDQwLCAweDQzLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELAorMHhCMCwgMHgwNiwgMHgwMCwgMHgxRiwgMHgwMCwgMHgzQywgMHgyOCwgMHgzMCwgMHhBMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwKKzB4MDAsIDB4NzQsIDB4MjgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MEEsIDB4NEQsIDB4MjgsIDB4RjEsCisweEExLCAweDQwLCAweDg0LCAweDAyLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLAorMHgxNywgMHgwMCwgMHg0RCwgMHgwMCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwKKzB4RjAsIDB4MDEsIDB4QzAsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjgsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDIyLCAweEY0LCAweDhCLCAweEMwLCAweDJGLCAweDBBLCAweDlGLCAweDAwLAorMHg3QywgMHgyMiwgMHhGMCwgMHg4QiwgMHhDMCwgMHgyNywgMHgwMCwgMHhGRiwgMHgwOCwgMHhGQywgMHgyMiwgMHhGMCwgMHg4OSwKKzB4RDAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MjIsIDB4RjAsIDB4ODksIDB4QzAsIDB4MkYsIDB4MDIsIDB4OUYsCisweDAwLCAweDVDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDIyLCAweEYwLAorMHgwOSwgMHhDMCwgMHg3NywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MUUsIDB4RjAsIDB4REIsIDB4QzAsIDB4NjcsIDB4MDEsIDB4OUYsIDB4MDAsIDB4RkMsCisweDM2LCAweDM0LCAweDU5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDA3LCAweDRDLCAweDFFLCAweEYxLCAweDdCLCAweEQwLAorMHhBQywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwNiwgMHhGMCwgMHg1OSwgMHhDMCwgMHg2RiwgMHgwMSwgMHg5QiwgMHgwMCwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDc3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LCAweDA3LCAweDAwLAorMHgxRCwgMHgwMCwgMHg3NCwgMHgzQywgMHhEMCwgMHhGNSwgMHg0MiwgMHg4NywgMHgwMiwgMHgxRCwgMHgwMCwgMHg3NCwgMHgzQywKKzB4MTAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDUsIDB4NDQsIDB4MUQsIDB4RDAsIDB4NzEsIDB4NDAsIDB4NDQsCisweDAxLCAweDFELCAweDAwLCAweDc0LCAweDA4LCAweEQwLCAweDIxLCAweDQwLCAweDk3LCAweDAyLCAweDExLCAweDAwLCAweDc0LAorMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwMCwgMHg3NCwgMHgyMCwgMHhEMCwgMHgwMSwgMHg0MCwKKzB4NjMsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MjMsIDB4MDAsIDB4OEQsCisweDAwLCAweDM0LCAweDEyLCAweEQwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDM0LCAweDAyLCAweDEwLAorMHgyOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwNiwgMHgwNCwgMHgwQSwgMHhEMCwgMHgyOCwgMHg0MCwgMHgyMCwgMHgwMCwKKzB4OEQsIDB4MDAsIDB4MzQsIDB4MEEsIDB4RDAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4ODksIDB4MDAsIDB4MzQsIDB4MDIsCisweEQwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDRCLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4RDAsIDB4NDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4NjksCisweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDBELCAweDQwLCAweDI0LCAweDAwLCAweDlELAorMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHg4MCwgMHg3NCwgMHg4MiwgMHhEMCwKKzB4ODksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLAorMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHhBNywgMHgxNiwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgzOSwgMHhDMCwKKzB4MjcsIDB4MDAsIDB4OUYsIDB4MDgsIDB4NEMsIDB4MDYsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDAsCisweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEM0LCAweDIzLCAweDAwLCAweDlCLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDE5LAorMHg0MSwgMHgyNywgMHgyMCwgMHg5RCwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgxNywgMHg4MCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsCisweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDNDLCAweDAyLCAweEYwLCAweDE5LCAweEMwLCAweDI3LAorMHgwMCwgMHg4RiwgMHgwMCwgMHg3RCwgMHgxNiwgMHhGMSwgMHgwOCwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MDksIDB4Q0EsIDB4MjcsIDB4MDEsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MTksIDB4QzAsCisweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDc0LCAweDAyLCAweEYwLCAweDA5LCAweDgwLCAweDVCLCAweDIwLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MjEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzQsIDB4MDcsIDB4MDAsCisweDFGLCAweDAyLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDgwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgwNCwgMHgxNywgMHgwMCwgMHg3QywgMHg0MCwgMHhGMiwgMHgyMSwgMHhDMCwgMHgwNCwKKzB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDE0LCAweDAwLCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDI3LAorMHg0MCwgMHgxNywgMHgwMCwgMHg1RCwgMHgwMCwgMHhGNCwgMHgxOSwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxNywgMHgwMCwgMHg1RCwKKzB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsIDB4QzcsIDB4NDAsIDB4OUYsIDB4ODMsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsCisweDA1LCAweDQwLCAweDVGLCAweDAxLCAweDUxLCAweDAwLCAweEY0LCAweDAxLCAweDcwLCAweDA1LCAweDQwLCAweDE0LCAweDAwLAorMHg1RCwgMHgwMCwgMHg3NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MkMsIDB4NDEsCisweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDQ3LCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDAwLAorMHgzNCwgMHgwMywgMHhEMCwgMHgyQywgMHg0MCwgMHhGMywgMHgwMCwgMHhDRCwgMHg0MCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywKKzB4NDAsIDB4NTMsIDB4MDgsIDB4QzUsIDB4MDAsIDB4MzQsIDB4MDAsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzAsIDB4MDAsIDB4Q0QsCisweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDQzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHg4MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMCwgMHgwRSwgMHg0MSwgMHgzQiwKKzB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDEsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDQsIDB4QjQsCisweDEzLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLAorMHgxQiwgMHgwMCwgMHhFMSwgMHg0MCwgMHhCNCwgMHgwOSwgMHg1MCwgMHgwRiwgMHg0MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwMCwKKzB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDIsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDE1LCAweDEwLCAweDc4LCAweDAwLCAweEVGLCAweDAxLCAweEJDLCAweDE3LCAweEYwLCAweDFFLCAweEMwLCAweDdCLCAweDA4LAorMHhFRiwgMHgwMSwgMHhCQywgMHgwNywgMHhGMCwgMHgxRSwgMHhDMiwgMHg3QiwgMHgwMCwgMHhFRiwgMHgwRCwgMHhCQywgMHgzNywKKzB4RjAsIDB4MTYsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4NDEsIDB4QkMsIDB4MDcsIDB4RjAsIDB4MUUsIDB4QzAsIDB4NUIsCisweDAwLCAweEU3LCAweDAxLCAweEJDLCAweDA0LCAweEYwLCAweDBFLCAweEM0LCAweDc4LCAweDAwLCAweEVELCAweDAxLCAweEJDLAorMHgwNywgMHhGMCwgMHgxRSwgMHhDMCwgMHg1MywgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QjgsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4NTMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsCisweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDA4LCAweDdDLCAweDAzLCAweEYwLAorMHgwNSwgMHhDNCwgMHgxNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDOCwgMHgxMywgMHgxMCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzgsIDB4MzcsIDB4MDgsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsCisweEYwLCAweDBELCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEwLAorMHg3RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHg2MywgMHhGMCwgMHgxNywgMHhDMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwOSwKKzB4RkMsIDB4MjcsIDB4RjMsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4ODEsIDB4RjgsIDB4NDcsIDB4MzAsIDB4MUYsCisweDQ4LCAweDVGLCAweDAyLCAweEZFLCAweDIxLCAweEZDLCAweDA3LCAweEQwLCAweDlGLCAweDgwLCAweDVELCAweDAwLCAweEYzLAorMHgwOSwgMHhGQywgMHgyNywgMHhGMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwMiwgMHhGRiwgMHgwOSwgMHhGQywgMHgwNywgMHhGMCwKKzB4MUYsIDB4QzAsIDB4MUIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4MzksCisweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDg2LCAweDQxLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LAorMHgwMSwgMHhDMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwOCwgMHhCNCwgMHgwMywgMHgxNCwgMHg4RSwgMHg0MCwKKzB4MUEsIDB4MDAsIDB4RTksIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEYsIDB4NDIsIDB4MUMsIDB4MDUsIDB4RTUsIDB4MDgsCisweEI0LCAweDA5LCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDhFLAorMHg0MCwgMHg1NywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwKKzB4RUQsIDB4MDAsIDB4QjQsIDB4MjMsIDB4NTgsIDB4MDYsIDB4NDAsIDB4M0IsIDB4MDYsIDB4RUQsIDB4ODAsIDB4QjAsIDB4MDMsCisweEQxLCAweDhFLCAweDQwLCAweDNCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDNCLAorMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRiwgMHg0NCwgMHgzRCwgMHgwMCwgMHhFNSwgMHg0MCwgMHhCNCwKKzB4ODEsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MjAsIDB4RUQsIDB4NDAsIDB4QjQsIDB4MjMsIDB4RDAsIDB4MEUsIDB4NDAsCisweDIzLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDI4LCAweDMzLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwMCwgMHg0MCwgMHhCMywgMHgwMCwgMHhDRCwgMHgwMCwgMHg3NCwgMHgwMCwgMHg5MCwKKzB4MUMsIDB4NDAsIDB4MzcsIDB4MTAsIDB4Q0QsIDB4MDIsIDB4NzQsIDB4MjcsIDB4MTAsIDB4MDgsIDB4MDgsIDB4MDIsIDB4MDAsCisweEM5LCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDcwLCAweDAwLCAweEM1LCAweDQwLCAweDM0LCAweDAxLAorMHhEMSwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDQywgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgwQiwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsCisweEZDLCAweDAzLCAweDcwLCAweDE5LCAweEMwLCAweDc3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDJELAorMHhDMywgMHgzNywgMHgwMCwgMHhGRiwgMHg0NCwgMHhGQywgMHgwMywgMHgzMSwgMHgwOSwgMHg4MCwgMHgyNywgMHgxMCwgMHhERSwKKzB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NDUsIDB4MDAsIDB4RDcsIDB4NDAsIDB4NzgsIDB4MDEsIDB4RDAsCisweDBELCAweEMxLCAweDM3LCAweDEwLCAweERELCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDU3LCAweDAwLAorMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgyMCwgMHhERiwgMHgwMCwgMHg3QywKKzB4MDMsIDB4RjAsIDB4NDksIDB4QzQsIDB4MzcsIDB4MDQsIDB4REYsIDB4MjAsIDB4N0MsIDB4MEEsIDB4RjAsIDB4MEQsIDB4QzgsCisweDM3LCAweDEwLCAweERGLCAweDEwLCAweDdDLCAweDQzLCAweEYwLCAweDI5LCAweEM0LCAweDI2LCAweDIwLCAweERCLCAweDgwLAorMHg3QywgMHgwMywgMHhGMiwgMHgwRCwgMHhDMCwgMHg4NywgMHgwNCwgMHhERSwgMHgwMCwgMHg3QywgMHgwOSwgMHhGMSwgMHg0RCwKKzB4QzAsIDB4MzcsIDB4MTAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MjAsIDB4MEMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLAorMHhGMCwgMHgwMywgMHhDMCwgMHgzQiwgMHgwMCwgMHhGMywgMHgwMCwgMHhGQywgMHgwMCwgMHgzMCwgMHgwRiwgMHhDMSwgMHgzRiwKKzB4MDgsIDB4RjMsIDB4MDAsIDB4N0MsIDB4MDMsIDB4MzAsIDB4MDMsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4QkMsCisweDAzLCAweDM0LCAweDBGLCAweEMwLCAweDVGLCAweDAyLCAweEZGLCAweDAwLCAweEZDLCAweDA1LCAweEQwLCAweDBGLCAweEM0LAorMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhCQywgMHgwMywgMHgzMCwgMHgwRiwgMHhDNCwgMHgwNywgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4MzYsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDMsIDB4RDAsCisweDc5LCAweDQ4LCAweDM3LCAweDMwLCAweEQxLCAweDAwLCAweDc0LCAweDFDLCAweDEwLCAweDBELCAweDQwLCAweDM3LCAweDAwLAorMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgzMSwgMHg0MCwgMHg2NywgMHgwNCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywKKzB4MTAsIDB4MEQsIDB4NDAsIDB4MTcsIDB4MDEsIDB4REQsIDB4NDAsIDB4NzQsIDB4OEQsIDB4RDAsIDB4MEMsIDB4NDgsIDB4MzQsCisweDAwLCAweERELCAweDAwLCAweDc0LCAweDAzLCAweDEwLCAweDBELCAweDQ4LCAweDg3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHgzNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgxOSwKKzB4NDAsIDB4MzcsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDYsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4NDAsIDB4RDEsCisweDAwLCAweDc0LCAweDAzLCAweDEwLCAweDExLCAweDQ4LCAweDQ3LCAweDIwLCAweERELCAweDAwLCAweDc0LCAweDAzLCAweDkwLAorMHgwRCwgMHg0MCwgMHgxNywgMHgwMCwgMHhEQywgMHgwMCwgMHg3NCwgMHgxMSwgMHhEMCwgMHgwRCwgMHg0MiwgMHgzNSwgMHgwMCwKKzB4REQsIDB4NDAsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweEQyLCAweDA4LCAweDQwLAorMHgzMywgMHgwMCwgMHhDMSwgMHg4MCwgMHgzNCwgMHgwMiwgMHgxNSwgMHgwQywgMHg0MCwgMHgzNywgMHgyMCwgMHhDMSwgMHhDMCwKKzB4MzQsIDB4MDMsIDB4MTQsIDB4MDgsIDB4NDQsIDB4MDMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4OTAsIDB4MEMsCisweDQwLCAweDEzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAxLCAweEQwLCAweDBELCAweDQ0LCAweDMwLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0OCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4QjAsIDB4MzYsIDB4MDAsIDB4REYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDEsIDB4QzQsIDB4MzcsCisweDQwLCAweEQzLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweEYzLCAweDAwLCAweEZDLAorMHgwMywgMHgzMCwgMHgwMSwgMHhDMCwgMHgyNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwKKzB4MTcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjgsIDB4MEQsIDB4QzAsIDB4MzUsIDB4ODAsIDB4REYsIDB4MDAsCisweDdDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDA3LCAweDYwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwNSwgMHhCOCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwQiwgMHg0MCwgMHgzRiwgMHgyMCwKKzB4RkYsIDB4QzAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4ODMsCisweEYwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEY4LCAweDAzLCAweDcwLCAweDBGLCAweEMwLCAweDFGLAorMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgyMCwgMHhGQywKKzB4MDMsIDB4RjIsIDB4MEYsIDB4QzAsIDB4MTcsIDB4NjEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEEwLCAweDdGLCAweDAwLCAweEIzLCAweDAyLCAweENELCAweDI3LCAweDMwLCAweDBCLCAweEMwLCAweDBDLCAweDA1LCAweDNGLAorMHgwNCwgMHhGQywgMHgwNywgMHgzMCwgMHg0NywgMHhDOCwgMHgzRiwgMHgwNSwgMHhGRiwgMHgwNCwgMHhCQywgMHhEMywgMHgzMCwKKzB4OUIsIDB4QzAsIDB4MkMsIDB4MDEsIDB4MjMsIDB4ODksIDB4Q0MsIDB4MTIsIDB4RjAsIDB4MDMsIDB4QzgsIDB4MkMsIDB4MDIsCisweDMzLCAweDA0LCAweEZDLCAweDA3LCAweEYwLCAweDBGLCAweEMwLCAweDdDLCAweDE4LCAweEIzLCAweDAwLCAweENDLCAweDA0LAorMHhGMCwgMHgxRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwKKzB4MzcsIDB4MTEsIDB4OTEsIDB4MDIsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MUIsIDB4NTAsIDB4ODQsIDB4MTAsIDB4MUQsIDB4MEIsCisweDc0LCAweDA3LCAweDE0LCAweEJELCAweDQwLCAweEY3LCAweDAwLCAweEZELCAweDQ5LCAweEY0LCAweDBGLCAweDEyLCAweDQ4LAorMHg1MCwgMHhGQywgMHg0MCwgMHgxMSwgMHg4NCwgMHg0NCwgMHg0QSwgMHhEMCwgMHgzMSwgMHg0NCwgMHhBQywgMHgyMywgMHgxMywKKzB4MEEsIDB4NzQsIDB4MDMsIDB4RDEsIDB4MDQsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4MDMsIDB4NDUsIDB4MDUsIDB4RDAsCisweDFELCAweDQwLCAweDA3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLAorMHgwNCwgMHg5MSwgMHg4QywgMHgzNCwgMHgxMywgMHgxNCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwRCwgMHgwMCwgMHgzNCwKKzB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MjMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MDgsIDB4NDAsCisweEEwLCAweDAwLCAweDA1LCAweDAwLCAweDA0LCAweDBBLCAweEQyLCAweDIxLCAweDQwLCAweDIwLCAweDQxLCAweDgxLCAweDAwLAorMHgzNCwgMHgwMywgMHhEOCwgMHgwOCwgMHg2MCwgMHgzMiwgMHgxMCwgMHhDMSwgMHg4MiwgMHgwNCwgMHgwMCwgMHhEMCwgMHgwQywKKzB4NDAsIDB4NDcsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4NDAsCisweDkxLCAweDAxLCAweDY0LCAweDAzLCAweDEwLCAweDg5LCAweDQwLCAweDY0LCAweDAwLCAweDFDLCAweDExLCAweDc0LCAweDAzLAorMHgxMCwgMHgxRCwgMHg0MCwgMHgzNywgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHgxNCwgMHgwOSwgMHg0MCwgMHgzNCwKKzB4MDAsIDB4MTUsIDB4MDEsIDB4NDUsIDB4NDIsIDB4RDAsIDB4NDksIDB4NDAsIDB4MjAsIDB4QzIsIDB4OTEsIDB4MDMsIDB4NzQsCisweDAzLCAweEQwLCAweDBELCAweDUwLCAweDM2LCAweDQwLCAweEQxLCAweDAxLCAweDQ2LCAweDA3LCAweEQwLCAweDBELCAweDQwLAorMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwgMHgzNywgMHgwMCwgMHg4MywKKzB4MDEsIDB4NkMsIDB4MDMsIDB4MzAsIDB4MDgsIDB4QzAsIDB4NDQsIDB4MjAsIDB4MUUsIDB4MDEsIDB4N0MsIDB4MDMsIDB4MzAsCisweDNELCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweEMwLCAweDdDLCAweDAzLCAweDMwLCAweDk5LCAweEMwLCAweDI0LCAweDAyLAorMHgxNywgMHg4MSwgMHg0QywgMHgwMiwgMHhGMSwgMHgwMCwgMHhEMCwgMHgyNCwgMHgwMCwgMHgxMywgMHgwMSwgMHg3QywgMHgwMywKKzB4RjAsIDB4MEQsIDB4RTAsIDB4MzYsIDB4MDAsIDB4OTMsIDB4MDEsIDB4NEMsIDB4MDQsIDB4RjIsIDB4MEQsIDB4QzIsIDB4MEIsCisweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDNELCAweDAwLCAweEJGLCAweDAwLAorMHhEQywgMHgwMywgMHhGMCwgMHgxOSwgMHhDMCwgMHgwRiwgMHgxMCwgMHgzRiwgMHgwMCwgMHhGNCwgMHgwMywgMHhGMSwgMHgwRCwKKzB4QzAsIDB4N0YsIDB4MTIsIDB4RkYsIDB4MTAsIDB4QkMsIDB4MDMsIDB4QzAsIDB4MEIsIDB4QzAsIDB4N0YsIDB4MjAsIDB4M0IsCisweDAwLCAweEY4LCAweDI2LCAweEUxLCAweDAzLCAweEMwLCAweDI3LCAweDAwLCAweDE0LCAweDAwLCAweEZDLCAweDAzLCAweEYwLAorMHg1RiwgMHhDMCwgMHhCRCwgMHgwMCwgMHhFRiwgMHgwMCwgMHhGQywgMHg4MSwgMHhGMSwgMHgwRiwgMHhDMCwgMHgxRiwgMHgwMCwKKzB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDAsIDB4OTMsIDB4MDQsIDB4NEMsCisweDEzLCAweEYwLCAweDA5LCAweEM0LCAweDI0LCAweDAwLCAweDEzLCAweDAyLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHgyNCwgMHgwMCwgMHhERiwgMHg0MCwgMHg0QywgMHgwMywgMHhCMCwgMHgwOSwgMHhDOCwgMHgyMCwgMHg0MCwgMHgxMywgMHgwMiwKKzB4NkMsIDB4MEUsIDB4QjAsIDB4MDMsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTMsIDB4MDYsIDB4NkMsIDB4MDMsIDB4RDAsIDB4MDgsCisweEMwLCAweDM0LCAweDgwLCAweDVGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDBELCAweEMwLCAweDBCLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwQiwKKzB4RDAsIDB4MDksIDB4NTAsIDB4NjQsIDB4MDgsIDB4OTEsIDB4MDAsIDB4MzQsIDB4MkIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4QjQsCisweDAyLCAweEZELCAweDA2LCAweEM1LCAweDZGLCAweDEwLCAweDQ5LCAweDU0LCAweEI0LCAweDAzLCAweDEwLCAweDI0LCAweDQ0LAorMHgwNiwgMHgxMCwgMHhCOSwgMHg0NSwgMHgzNywgMHgwMCwgMHg5MSwgMHg4MywgMHg0NCwgMHgwMywgMHhEMSwgMHhBRCwgMHg0MCwKKzB4QjQsIDB4MDIsIDB4REQsIDB4MDAsIDB4NzQsIDB4NDcsIDB4MTAsIDB4MUQsIDB4NDMsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDcyLCAweDAwLCAweEMxLCAweDAyLCAweDQ0LCAweDhCLCAweEQwLAorMHg2OCwgMHg0MCwgMHg2MCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwOCwgMHg0MCwgMHgxMiwgMHgyMCwKKzB4Q0QsIDB4MDIsIDB4MDQsIDB4MDMsIDB4OTAsIDB4MDksIDB4NDgsIDB4RjAsIDB4MTAsIDB4MTEsIDB4MjAsIDB4MDQsIDB4NEEsCisweDkyLCAweDEwLCAweDQwLCAweDIzLCAweDIwLCAweDA5LCAweDAwLCAweDI0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDM2LAorMHgxMCwgMHhDNSwgMHgwOCwgMHgzNCwgMHgwNCwgMHgxMCwgMHgwQywgMHg0MCwgMHgxRiwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NzgsIDB4NDAsIDB4RTEsIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4OUUsCisweDQwLCAweDY4LCAweDA0LCAweDI1LCAweDAxLCAweEI0LCAweDA3LCAweEQxLCAweDFBLCAweDUwLCAweDU4LCAweDAwLCAweENELAorMHg4OSwgMHg4NCwgMHgwNywgMHgxMCwgMHg5QSwgMHg0MCwgMHg3OCwgMHgwMCwgMHgzMSwgMHgyOSwgMHg4NSwgMHgwNCwgMHgxMCwKKzB4MTIsIDB4NDAsIDB4NkIsIDB4MDgsIDB4QTksIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4MTYsIDB4NTAsIDB4N0EsIDB4ODAsCisweEVELCAweDQxLCAweEI0LCAweDA1LCAweDEwLCAweDFFLCAweDQwLCAweDEzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwNCwgMHg1MywgMHgwMCwgMHgwRSwgMHgwMywgMHhGMCwgMHgwOCwgMHhEMCwKKzB4QTQsIDB4NDAsIDB4MDcsIDB4MDgsIDB4M0MsIDB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MzAsIDB4MDIsIDB4Q0YsIDB4MDAsCisweDBDLCAweDAzLCAweEIwLCAweDA4LCAweEMwLCAweDMwLCAweDAwLCAweDAzLCAweDRBLCAweDZDLCAweDAyLCAweEIwLCAweDAwLAorMHhDMCwgMHgzMywgMHg0MSwgMHhDQiwgMHgxMCwgMHgyQywgMHgyMywgMHhGMCwgMHgwQywgMHhEMCwgMHgzMiwgMHgwMiwgMHhDRiwKKzB4MDAsIDB4M0MsIDB4MDAsIDB4MzQsIDB4MEMsIDB4QzAsIDB4NEIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAyLCAweEI4LCAweDM5LCAweDAwLCAweEZGLCAweDAwLCAweEZELCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDJGLAorMHgxMCwgMHg3QiwgMHgwMCwgMHhGQywgMHgwMywgMHhGOCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywKKzB4MDMsIDB4RjAsIDB4MEIsIDB4QzQsIDB4M0IsIDB4MDAsIDB4M0YsIDB4MjgsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsCisweDNGLCAweDAwLCAweEY3LCAweDAwLCAweEZDLCAweDgzLCAweEYwLCAweDBGLCAweEQwLCAweDNELCAweDAwLCAweEZGLCAweDA4LAorMHhCQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4QTAsIDB4MzcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4NDksIDB4RDAsIDB4MkMsIDB4MDAsCisweDMzLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEM4LCAweDM3LCAweDAwLCAweERGLCAweDA0LCAweDVDLCAweDRGLAorMHgzMCwgMHgwOSwgMHhDMCwgMHhCNSwgMHgwMCwgMHgxMywgMHgwMCwgMHg2QywgMHgwMiwgMHhGMiwgMHgwMSwgMHhDMCwgMHhBNywKKzB4MDEsIDB4RDMsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsCisweDAwLCAweEYwLCAweDBELCAweEMwLCAweDU3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLAorMHg4OCwgMHgzOSwgMHgwMCwgMHhBRCwgMHg0MCwgMHhCNCwgMHgwMywgMHhEMCwgMHg4QywgMHg0NCwgMHgyOCwgMHgwMCwgMHgyQiwKKzB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4Q0QsIDB4MEUsIDB4MDQsIDB4MDMsIDB4MTAsCisweDBFLCAweDQwLCAweDMwLCAweDAyLCAweDYxLCAweDAwLCAweDg2LCAweDAwLCAweEQwLCAweDAyLCAweDQ0LCAweDIzLCAweDA0LAorMHhGMSwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgxMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMSwKKzB4RDAsIDB4MEUsIDB4NDAsIDB4NEIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsCisweDc5LCAweDAwLCAweEFELCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFBLCAweDQwLCAweDYwLCAweDAwLCAweEExLCAweDQxLAorMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFRCwgMHgwNSwgMHg5NCwgMHgzNywgMHgxMCwgMHgzQiwKKzB4NDAsIDB4NzksIDB4MDgsIDB4MjksIDB4MTEsIDB4ODQsIDB4MDYsIDB4RDAsIDB4MTIsIDB4NDAsIDB4RkIsIDB4MDAsIDB4RTEsCisweDgxLCAweDk0LCAweDg3LCAweEQwLCAweDFFLCAweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDA1LCAweEQwLAorMHgxRSwgMHg0MCwgMHgwRiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHgzMywKKzB4MTAsIDB4OEQsIDB4MDksIDB4MzQsIDB4MDMsIDB4RDAsIDB4OUMsIDB4NTAsIDB4NzAsIDB4MDAsIDB4QzksIDB4MDYsIDB4MzQsCisweDAzLCAweEQwLCAweDNDLCAweDQwLCAweEIzLCAweDA0LCAweENELCAweDAwLCAweDA0LCAweDAzLCAweDE0LCAweDFDLCAweDQwLAorMHgzMCwgMHhDMCwgMHg5OSwgMHgwNiwgMHgwNSwgMHgwMSwgMHhEMSwgMHgwQywgMHg0NCwgMHg3MywgMHgyMCwgMHhDMSwgMHgwMywKKzB4MDQsIDB4MDMsIDB4RDEsIDB4MEQsIDB4NDEsIDB4NjMsIDB4MDAsIDB4Q0QsIDB4MDYsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MEMsCisweDQwLCAweDRCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDE1LCAweDAwLAorMHg3RiwgMHgwMiwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNCwgMHhDMCwgMHg1OCwgMHgwMSwgMHg3MywgMHgwMiwgMHg3QywgMHgwMSwKKzB4RjAsIDB4MTYsIDB4QzAsIDB4OUYsIDB4MTAsIDB4NUYsIDB4MDAsIDB4NUMsIDB4MDEsIDB4MzAsIDB4MDQsIDB4QzQsIDB4MTUsCisweDAwLCAweDdCLCAweDAwLCAweENDLCAweDQ1LCAweEYxLCAweDA3LCAweEMwLCAweDE3LCAweDQ4LCAweDczLCAweDA1LCAweDVDLAorMHgwMSwgMHhGMCwgMHgyNywgMHhDMCwgMHg1NywgMHgwMCwgMHg3RiwgMHgwMiwgMHhGQywgMHgwNSwgMHhGMCwgMHgwNSwgMHhDMCwKKzB4NUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MUYsCisweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEQwLCAweDA3LCAweDEwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEYwLAorMHg4MSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwKKzB4MTcsIDB4MDAsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MTAsIDB4N0MsIDB4MDAsCisweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDEyLCAweDFGLCAweDAwLCAweDdDLCAweDIwLCAweEYwLCAweDAxLCAweEMwLCAweDRCLAorMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywgMHgwMCwgMHg5MywgMHgxMSwKKzB4NEMsIDB4MjIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NjQsIDB4MDAsIDB4OTMsIDB4MDIsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEMxLCAweDIwLCAweDAwLCAweDgzLCAweDAwLCAweDZELCAweDBFLCAweEYwLCAweDU5LCAweEMwLCAweDIwLCAweDAwLCAweDkxLAorMHg0MCwgMHg0QywgMHgwMiwgMHgxMCwgMHg4OSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg4MywgMHgwOCwgMHg0QywgMHgwMiwgMHhGMCwKKzB4MTksIDB4QzAsIDB4NjQsIDB4MDEsIDB4OTAsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MTksIDB4QzAsIDB4NDMsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweEE2LCAweDAyLCAweDkxLCAweDAxLCAweDQ0LAorMHgwNiwgMHhEMCwgMHgzOSwgMHg0MSwgMHg2NCwgMHgxMCwgMHg5MSwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg1MCwKKzB4MjQsIDB4NDAsIDB4OTEsIDB4NDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MTksIDB4NDQsIDB4RTQsIDB4NDAsIDB4OTEsIDB4MDEsCisweDA0LCAweDAyLCAweDE1LCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDlCLCAweDAzLCAweDQ0LCAweDAyLCAweEQwLCAweDE5LAorMHg0MCwgMHgyMCwgMHgyMCwgMHg5MSwgMHgwOSwgMHgzNCwgMHgwMiwgMHgxMCwgMHgxOSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwOCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjAsIDB4NDQsIDB4QzEsIDB4MDQsIDB4NDUsIDB4MDIsCisweEQwLCAweDQ5LCAweDQwLCAweDI0LCAweDAxLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDBELCAweDUwLCAweDM0LAorMHgxMCwgMHg5OSwgMHgwMCwgMHg2NSwgMHgwMiwgMHhDMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMSwgMHg5NSwgMHgwNCwgMHg0NCwKKzB4MTIsIDB4NTEsIDB4MjksIDB4NTAsIDB4MjQsIDB4MjAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4RDAsIDB4NDksIDB4NTAsCisweDI0LCAweDQwLCAweERELCAweDgwLCAweDc0LCAweDEyLCAweDEwLCAweDg5LCAweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgwNCwgMHgwNCwgMHgwMiwgMHhEMCwKKzB4NDgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4ODEsIDB4MDQsIDB4MzQsIDB4MDIsIDB4RDAsIDB4NDksIDB4NDAsIDB4MjAsIDB4MDEsCisweDg5LCAweDA0LCAweDA0LCAweDEzLCAweEQwLCAweDA4LCAweDQwLCAweDYwLCAweDgxLCAweDg1LCAweDIwLCAweDQ2LCAweDEyLAorMHg1MCwgMHg0OCwgMHg0MCwgMHgyNCwgMHgwMSwgMHhDOSwgMHgwNCwgMHgwNCwgMHgwMiwgMHhEMCwgMHg0OCwgMHg0MCwgMHgyNCwKKzB4MDAsIDB4OEQsIDB4MDQsIDB4NzQsIDB4MDIsIDB4MTQsIDB4MDgsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDg2LCAweDAyLCAweDEzLCAweDBBLCAweDRDLCAweDI5LCAweEYwLCAweDAxLAorMHhDMCwgMHg4NCwgMHgwMiwgMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxQiwKKzB4MDAsIDB4NkMsIDB4MDAsIDB4RDIsIDB4QTEsIDB4QzAsIDB4MDQsIDB4MjAsIDB4MDcsIDB4MkEsIDB4NEMsIDB4MjgsIDB4NzAsCisweDAxLCAweEQwLCAweDg0LCAweDQyLCAweDEzLCAweDBBLCAweDRELCAweDI4LCAweEYwLCAweEExLCAweEMwLCAweDg0LCAweDAyLAorMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4MjcsIDB4MDAsIDB4QkYsIDB4MDgsIDB4N0MsIDB4MDIsIDB4RjAsIDB4OEIsIDB4RDAsCisweDJGLCAweDQyLCAweEJGLCAweDA4LCAweDdDLCAweDAyLCAweEYwLCAweDhCLCAweEQwLCAweDJGLCAweDAyLCAweDk3LCAweDA4LAorMHg3QywgMHgyMiwgMHhGMCwgMHgwQSwgMHhEMCwgMHgyRiwgMHgyMiwgMHhCQiwgMHgwMCwgMHhGRCwgMHgyMiwgMHhCMCwgMHg4QiwKKzB4RDAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4MDgsIDB4N0MsIDB4MDIsIDB4RjAsIDB4OEIsIDB4QzAsIDB4MkYsIDB4MTAsIDB4QjMsCisweDA4LCAweEZDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBMCwgMHgyRiwgMHgwMCwgMHhCNywgMHgwQywgMHhDQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyQywKKzB4MDIsIDB4QjMsIDB4MDQsIDB4M0MsIDB4MDIsIDB4RjAsIDB4NDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4MDEsIDB4Q0MsCisweDE2LCAweDMwLCAweDBBLCAweEMwLCAweDZDLCAweDI4LCAweEJGLCAweDAwLCAweENDLCAweDFFLCAweDMwLCAweDVCLCAweEMwLAorMHg2RiwgMHg0MSwgMHhCMywgMHgwNSwgMHhDQywgMHgwMiwgMHhGMCwgMHhDQiwgMHhDMCwgMHgyQywgMHgwMCwgMHhCMywgMHgwMCwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4NjAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDFDLCAweDA4LCAweDA3LCAweDAxLCAweDExLCAweDBDLCAweDZDLCAweDQwLCAweEQwLCAweDAxLCAweDQwLCAweDA0LCAweDAyLAorMHgxMSwgMHgwMCwgMHg3NCwgMHgwMCwgMHhEMCwgMHg4MSwgMHg0MCwgMHg4NCwgMHgxMCwgMHgzRCwgMHgwMiwgMHg0NSwgMHgwOCwKKzB4QjAsIDB4NTEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MTUsIDB4NDUsIDB4MTQsIDB4MTAsIDB4MDEsIDB4NDAsIDB4QzMsCisweDE1LCAweDExLCAweDE0LCAweDQ0LCAweDEwLCAweEQxLCAweEMxLCAweDQwLCAweDA0LCAweDA0LCAweDExLCAweDAwLCAweDc0LAorMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg3MCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4QTAsIDB4MjMsIDB4MDUsIDB4ODUsIDB4MDQsIDB4MDQsIDB4MTIsIDB4RDAsIDB4ODgsIDB4NDAsIDB4NzAsIDB4NjAsIDB4ODEsCisweDA4LCAweEI0LCAweDAyLCAweEQwLCAweDFBLCAweDUwLCAweDZBLCAweDAyLCAweEFELCAweDAyLCAweDA0LCAweDIyLCAweDEwLAorMHgwOCwgMHg2MSwgMHhBMCwgMHgwMCwgMHg4RCwgMHg4MSwgMHgwNCwgMHgxQSwgMHg5MCwgMHgzOCwgMHg0MCwgMHgyMywgMHg0MiwKKzB4ODEsIDB4MDYsIDB4MDQsIDB4NTIsIDB4RDEsIDB4NTgsIDB4NDAsIDB4MjAsIDB4NDEsIDB4QzEsIDB4MDgsIDB4MzQsIDB4MDYsCisweEQwLCAweDBDLCAweDQwLCAweDQwLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LAorMHgyMSwgMHgwMCwgMHg5MSwgMHgxMCwgMHg2NCwgMHgwMiwgMHhEMCwgMHg4OSwgMHgxMCwgMHgyMCwgMHgwMSwgMHg5MSwgMHgwNCwKKzB4NzQsIDB4MDIsIDB4RDAsIDB4MEIsIDB4NDAsIDB4MkUsIDB4MDEsIDB4QkQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4OTAsIDB4MDksCisweDYwLCAweDI0LCAweDAwLCAweDlELCAweDQwLCAweDQ0LCAweDAyLCAweDkwLCAweDA5LCAweDQwLCAweDI3LCAweDIwLCAweDkxLAorMHgwNCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgzMCwgMHgwMCwgMHg5MSwgMHgxMSwgMHg3NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4NjAsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjgsIDB4MjUsCisweDAwLCAweDk3LCAweDAwLCAweDRDLCAweDAyLCAweEYwLCAweDE5LCAweEMwLCAweDI0LCAweDAwLCAweDkzLCAweDA1LCAweDdDLAorMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHhBNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhEMCwKKzB4MjQsIDB4MjAsIDB4OUYsIDB4MDIsIDB4NEMsIDB4MDYsIDB4QjAsIDB4MjksIDB4RTAsIDB4NjcsIDB4MDIsIDB4OTMsIDB4MDQsCisweDRELCAweDAyLCAweEYwLCAweDE5LCAweEQwLCAweDY0LCAweDAwLCAweDkzLCAweDAzLCAweDdDLCAweDAyLCAweEYyLCAweDA5LAorMHhEMCwgMHgxNCwgMHhBMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyNSwgMHgwMCwKKzB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsIDB4MDEsIDB4N0MsIDB4MDIsCisweEYwLCAweDk4LCAweEMwLCAweDI1LCAweDAwLCAweDlGLCAweDQwLCAweDdDLCAweDAyLCAweEYyLCAweDA5LCAweEMwLCAweDI3LAorMHgwMCwgMHg5RiwgMHgwOSwgMHg3QywgMHgwRSwgMHg3MCwgMHg4OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywKKzB4MDIsIDB4RjAsIDB4MzksIDB4QzAsIDB4RTcsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MTIsIDB4RjAsIDB4MDksIDB4QzAsCisweDUzLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDBGLAorMHgwMywgMHg0RCwgMHgwNCwgMHhGMCwgMHgxMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwKKzB4MTEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTMsIDB4MDAsIDB4MkMsIDB4MDAsIDB4RjgsIDB4MDEsIDB4QzEsIDB4MDYsIDB4MDQsCisweDEzLCAweDAwLCAweDBDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA0LCAweDAyLCAweDEzLCAweDAyLCAweDdDLCAweDAwLAorMHhGMCwgMHg0MSwgMHhDMCwgMHg0NCwgMHgwMiwgMHgxMywgMHgwMiwgMHg0QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg1MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4REMsIDB4MDAsIDB4N0QsIDB4MDEsCisweEM0LCAweDE1LCAweDcwLCAweDE2LCAweDQwLCAweDlDLCAweDAwLCAweDUxLCAweDAxLCAweDc0LCAweDAxLCAweDE0LCAweDA1LAorMHg0MCwgMHg1NywgMHgwMCwgMHg0MSwgMHgwMCwgMHhDNCwgMHg0MSwgMHhEMCwgMHgwNywgMHg0MCwgMHgxQywgMHgyMCwgMHg1MSwKKzB4MDQsIDB4QzQsIDB4MDksIDB4RDEsIDB4NTcsIDB4NDAsIDB4MTQsIDB4MTAsIDB4N0IsIDB4MDAsIDB4NzQsIDB4MDEsIDB4RDAsCisweDM3LCAweDQwLCAweDFDLCAweDAwLCAweDUxLCAweDAwLCAweDQ1LCAweDAxLCAweEQwLCAweDA0LCAweDQwLCAweDUzLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHhFMiwgMHgwNCwgMHhDRCwgMHgwMSwgMHgwNCwKKzB4MDMsIDB4NTAsIDB4MUMsIDB4NDAsIDB4QjEsIDB4MDQsIDB4ODEsIDB4MDEsIDB4MzQsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsCisweDczLCAweDAwLCAweEMxLCAweDAwLCAweDI0LCAweDEzLCAweEQwLCAweDJELCAweDQwLCAweDcyLCAweDAwLCAweEQxLCAweDQwLAorMHgwNCwgMHgyQSwgMHg1OCwgMHg3QywgMHg0MCwgMHgzNCwgMHgwMCwgMHhEMSwgMHgwMCwgMHgzNCwgMHgyNywgMHhEMCwgMHgwRCwKKzB4NDAsIDB4MzAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MEEsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDM4LCAweDA0LCAweEZELCAweDEwLCAweDg0LCAweDAzLAorMHg1MCwgMHgwNiwgMHg0MSwgMHgyOSwgMHgwMSwgMHhBMSwgMHgxMCwgMHhCNCwgMHgwNSwgMHgxMCwgMHgwRSwgMHg0MCwgMHg1MywKKzB4MDQsIDB4MDEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4RDAsIDB4MEIsIDB4NDAsIDB4NEEsIDB4QzQsIDB4QTEsIDB4MDAsIDB4ODQsCisweDA1LCAweEQwLCAweDEyLCAweDQwLCAweDM4LCAweDAwLCAweEU5LCAweDAwLCAweEI0LCAweDAzLCAweEQwLCAweDJFLCAweDQwLAorMHgzOCwgMHgwMCwgMHhDMSwgMHgwMSwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgxNywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NjgsIDB4MDAsIDB4RUYsIDB4MDEsIDB4OEMsIDB4MDcsIDB4NzAsCisweDEwLCAweEMwLCAweEZELCAweDQwLCAweEUzLCAweDAxLCAweEJDLCAweDA3LCAweDMwLCAweDFFLCAweEMwLCAweDdCLCAweDQwLAorMHhFMywgMHgwMSwgMHhBQywgMHgwNCwgMHhEMCwgMHgxQSwgMHhDMCwgMHg0MiwgMHgwMCwgMHhBMywgMHgwMSwgMHg4RCwgMHgwMiwKKzB4NzgsIDB4MTAsIDB4QzAsIDB4NzgsIDB4MDQsIDB4RTMsIDB4MDEsIDB4QkMsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0MsCisweDAwLCAweEUxLCAweDAxLCAweDhDLCAweDA3LCAweEYwLCAweDFBLCAweEMwLCAweDU3LCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgyNSwgMHgwMCwgMHhDRiwgMHgwMCwgMHg3QywgMHgwMywgMHg3MCwgMHgwMSwKKzB4RDAsIDB4MjYsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4MUYsCisweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDA5LCAweEMwLCAweDA1LCAweDAwLCAweDhGLCAweDAyLCAweEZDLCAweDAwLCAweEYwLAorMHgwMSwgMHhEMCwgMHhCNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhEMCwgMHgzNywgMHg1MCwKKzB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweEEwLCAweDZCLCAweDAwLCAweEYzLCAweDAxLCAweENDLCAweDIzLCAweEI0LCAweDEzLCAweEMwLAorMHg2QywgMHgyMCwgMHhGMywgMHgwMSwgMHhDQywgMHgwNywgMHhGMCwgMHgxNiwgMHhDMCwgMHg2QywgMHgwMCwgMHhGMywgMHgwMSwKKzB4QkMsIDB4MDQsIDB4MzAsIDB4MUYsIDB4RDAsIDB4NEQsIDB4MDAsIDB4RjMsIDB4MDMsIDB4Q0MsIDB4MjQsIDB4RjAsIDB4MTMsCisweEMwLCAweDdGLCAweDA4LCAweEYzLCAweDAxLCAweERDLCAweDA2LCAweDMwLCAweDFGLCAweEMwLCAweDdDLCAweDEwLCAweEYzLAorMHg4MSwgMHhGQywgMHgwNywgMHhGMCwgMHgxRiwgMHhDMCwgMHgwMywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTUsIDB4ODAsIDB4QjksIDB4MDAsIDB4NzEsIDB4MDIsIDB4ODQsIDB4MDMsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MjgsCisweDAwLCAweEUxLCAweDAwLCAweEFDLCAweDAxLCAweEMwLCAweDA2LCAweEMwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LAorMHgwOCwgMHgwMCwgMHg0QiwgMHg0MCwgMHgwOCwgMHgwMSwgMHhBNSwgMHgwNCwgMHg5NCwgMHgwMCwgMHhEMCwgMHgwMiwgMHhDMCwKKzB4MzksIDB4MDAsIDB4RTUsIDB4MDIsIDB4QzQsIDB4MDIsIDB4NTAsIDB4MEUsIDB4NDAsIDB4MUMsIDB4MDAsIDB4RTEsIDB4MTQsCisweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwOCwgMHgwOSwgMHgwMCwgMHhFMSwgMHgwMCwgMHg4NCwgMHgyMiwgMHgxOCwgMHgwMiwgMHg0MSwgMHgzOCwgMHgwMCwKKzB4QTEsIDB4MTAsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MjYsIDB4NDAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4OTQsIDB4MDAsCisweDEwLCAweDBBLCAweDQ1LCAweDA5LCAweDIwLCAweEUxLCAweDgwLCAweDg0LCAweDA4LCAweEQ4LCAweDAyLCAweDQwLCAweDMzLAorMHgwMCwgMHhFMSwgMHgwMCwgMHg5NCwgMHgwMiwgMHgxMCwgMHgwQywgMHg0MCwgMHgzOCwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwKKzB4MEIsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MDMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisweDI4LCAweDEzLCAweDAwLCAweDQxLCAweDAwLCAweDQ0LCAweDAyLCAweDE0LCAweDAwLCAweDQwLCAweDIwLCAweDAyLCAweDgxLAorMHgwMSwgMHgyNCwgMHgwMSwgMHhEMCwgMHgwNCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgxNCwKKzB4MTgsIDB4NDAsIDB4NDAsIDB4MEEsIDB4ODEsIDB4NTMsIDB4MTQsIDB4MDQsIDB4RDAsIDB4MzAsIDB4NDAsIDB4MzEsIDB4MjAsCisweEM1LCAweDAyLCAweDA0LCAweDAyLCAweDUwLCAweDJDLCAweDQwLCAweDUwLCAweDAwLCAweEMxLCAweDAwLCAweDM0LCAweDIzLAorMHhEMCwgMHgwQywgMHg0MCwgMHgxMywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBOCwKKzB4MjEsIDB4MDAsIDB4RDMsIDB4MDIsIDB4NEMsIDB4MDMsIDB4MzQsIDB4MDEsIDB4RDAsIDB4MUMsIDB4NTAsIDB4ODMsIDB4MDMsCisweDRELCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDc0LCAweDQwLCAweEQzLCAweDAwLCAweDVDLCAweDAwLCAweDMwLCAweDFELAorMHhDOCwgMHg0NSwgMHhFMCwgMHg5MywgMHgwNSwgMHgwQywgMHgxMiwgMHhGMCwgMHg2OSwgMHhDMCwgMHgzNywgMHgwMCwgMHhEMywKKzB4MDIsIDB4NUMsIDB4MDIsIDB4MzEsIDB4MEQsIDB4QzQsIDB4NzQsIDB4MjQsIDB4RDMsIDB4ODAsIDB4N0MsIDB4MDcsIDB4RjAsCisweDBELCAweEMwLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweEE3LAorMHg0MCwgMHhERiwgMHg0MiwgMHg3QywgMHgwMywgMHg3MCwgMHgwMSwgMHhDMCwgMHg5NywgMHgwOCwgMHg5RiwgMHgxMCwgMHg1QywKKzB4MDAsIDB4RjAsIDB4MDksIDB4QzAsIDB4NTEsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NUMsIDB4MDgsIDB4RjAsIDB4MEQsIDB4QzAsCisweDgzLCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLAorMHg3QywgMHgwMiwgMHhGMCwgMHg3NSwgMHhEMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwRCwKKzB4QzAsIDB4MDcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4NkYsIDB4MjEsCisweEIzLCAweDkwLCAweENDLCAweDAzLCAweDMwLCAweDAwLCAweEMwLCAweDFDLCAweDAwLCAweERGLCAweDAwLCAweENDLCAweDA2LAorMHhGMCwgMHgwQiwgMHhDMCwgMHgzQywgMHgwMCwgMHhGMywgMHgwMCwgMHg4QywgMHgwNCwgMHgzMCwgMHg0QiwgMHhDOCwgMHgwNCwKKzB4MDAsIDB4QkQsIDB4MDUsIDB4RkMsIDB4MDIsIDB4MTAsIDB4MDMsIDB4QzEsIDB4N0IsIDB4MDAsIDB4MzMsIDB4MTksIDB4Q0MsCisweDAyLCAweEYwLCAweDBBLCAweEMwLCAweDJDLCAweDAwLCAweEYxLCAweDEwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLAorMHgwMywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHhFNiwgMHg0MCwgMHg5MSwKKzB4MDIsIDB4NDQsIDB4MDcsIDB4MTAsIDB4MTEsIDB4NDAsIDB4OTQsIDB4MDIsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsCisweDA4LCAweDQwLCAweDE0LCAweDAwLCAweDAxLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDQ5LCAweDQwLCAweEM0LCAweDAwLAorMHg5MSwgMHgwMCwgMHg2NCwgMHgwNCwgMHgxMCwgMHgxMSwgMHg0MCwgMHgzNywgMHgxMiwgMHhENSwgMHgwMywgMHg0NCwgMHgwNiwKKzB4RDAsIDB4MTEsIDB4NTAsIDB4QTQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MDcsCisweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDI2LCAweDAwLCAweEMxLCAweDAxLAorMHg0NCwgMHgwNywgMHg5MiwgMHgxMSwgMHg0MCwgMHhBNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg0NCwgMHgyMiwgMHg1MCwgMHgxMSwKKzB4NDAsIDB4MjQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MjAsIDB4MTQsIDB4MDQsIDB4NDAsIDB4NDQsIDB4MDQsIDB4OTEsCisweDAwLCAweDc0LCAweDA0LCAweEQwLCAweDExLCAweDQ0LCAweDI3LCAweDAwLCAweEMxLCAweDAwLCAweDQ0LCAweDEyLCAweEQwLAorMHg0RCwgMHg1MSwgMHg3MCwgMHgwMCwgMHhENSwgMHgwMSwgMHg3NCwgMHgwNywgMHhEMCwgMHgxRCwgMHg0OCwgMHgwNywgMHgwMCwKKzB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsCisweDA3LCAweDkwLCAweDEwLCAweDUwLCAweDIwLCAweDAwLCAweENELCAweDAwLCAweDA1LCAweDAwLCAweEQwLCAweDAwLCAweDQwLAorMHgwMCwgMHg0MCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHg1MCwgMHgwNCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwKKzB4NjQsIDB4MDAsIDB4RDAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4NDAsIDB4QzUsIDB4MjAsIDB4MDQsIDB4MDIsIDB4RDAsIDB4MEMsCisweDQ4LCAweDMwLCAweDAwLCAweEM1LCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDQzLCAweDgwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgyNiwgMHgwMCwgMHhEMywgMHg0MCwgMHg0QywgMHgwMywKKzB4QjQsIDB4MDEsIDB4QzAsIDB4MzAsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MjQsCisweDIwLCAweEQzLCAweDAwLCAweDRELCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweEFCLCAweDAwLCAweDdDLAorMHgwMCwgMHhGNCwgMHgwMSwgMHhDOCwgMHgyRiwgMHg0MCwgMHgwMywgMHgwMCwgMHg0RCwgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4ODAsIDB4MDMsIDB4QzAsIDB4MEEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAxLCAweDcwLAorMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwKKzB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4OTEsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MTAsIDB4QkIsIDB4MDAsIDB4RUMsIDB4MDAsCisweDMwLCAweDAzLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDBGLCAweEMwLCAweDNGLAorMHgwMCwgMHhGQiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsIDB4ODAsIDB4QzAsIDB4MEUsIDB4MDIsIDB4M0EsIDB4MDgsIDB4RTgsIDB4MjgsCisweEI4LCAweEEzLCAweEMwLCAweDhFLCAweDAyLCAweDNBLCAweDA4LCAweEVDLCAweDI4LCAweEEwLCAweDgzLCAweEUwLCAweDhFLAorMHg4MiwgMHgzQiwgMHgwQSwgMHhFQywgMHgyOCwgMHhBOCwgMHg4MywgMHhDMCwgMHg4RSwgMHg4MiwgMHgzQiwgMHgwRSwgMHhFNiwKKzB4MjgsIDB4QTAsIDB4ODMsIDB4RTAsIDB4OEUsIDB4ODIsIDB4M0IsIDB4MEEsIDB4RUMsIDB4MjAsIDB4QjgsIDB4ODMsIDB4RTAsCisweDBFLCAweDgyLCAweDNBLCAweDBBLCAweEVFLCAweDIwLCAweEIwLCAweDAzLCAweDhDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHgyMiwgMHgyMCwgMHg4RSwgMHg4MCwgMHgzQiwgMHgwMiwgMHhDQSwgMHgwOCwgMHhBOCwKKzB4MjMsIDB4QTAsIDB4OEUsIDB4ODAsIDB4M0EsIDB4MDIsIDB4RTgsIDB4MDgsIDB4QTgsIDB4MjMsIDB4RTAsIDB4OEUsIDB4MDAsCisweDEzLCAweDAyLCAweEU4LCAweDA4LCAweEE4LCAweDIzLCAweEEwLCAweDg0LCAweDAwLCAweDNCLCAweDAyLCAweEVDLCAweDA4LAorMHgyOCwgMHgyMywgMHhFMCwgMHg4QSwgMHgwMCwgMHgzOSwgMHgwMiwgMHhFOCwgMHgwOCwgMHhCQSwgMHgyMywgMHg0MCwgMHg4NCwKKzB4ODAsIDB4M0IsIDB4MDAsIDB4RUUsIDB4MDgsIDB4QTgsIDB4MDMsIDB4OEMsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDIxLCAweDQwLCAweDgwLCAweDA0LCAweDAxLCAweDEyLCAweDA0LCAweDQwLCAweDEwLCAweDIwLCAweDQxLAorMHg4MCwgMHgwNCwgMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwgMHg4NCwgMHgwMSwgMHgxMiwKKzB4MDYsIDB4NDgsIDB4MTAsIDB4MjAsIDB4NDEsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDYsIDB4NDgsIDB4MTAsIDB4MDAsCisweDQxLCAweDgwLCAweDA0LCAweDAxLCAweDEyLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLCAweDQxLCAweDgwLCAweDA0LCAweDAxLAorMHgxMiwgMHgwNCwgMHg0OCwgMHgxMCwgMHgyMCwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4ODMsIDB4MDAsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MUEsIDB4MDAsIDB4NkEsIDB4MDgsIDB4QTIsIDB4NjEsIDB4ODAsCisweDg2LCAweEEwLCAweDFBLCAweDAwLCAweDI4LCAweDA4LCAweEE4LCAweDAxLCAweDgwLCAweDA2LCAweDAwLCAweDFBLCAweDgwLAorMHg2OCwgMHgwOCwgMHhBQSwgMHgwMSwgMHg4MCwgMHg4NiwgMHgwMSwgMHgxQSwgMHgwMCwgMHg2OCwgMHgwOCwgMHhBOCwgMHgwMCwKKzB4ODAsIDB4ODYsIDB4MDAsIDB4M0EsIDB4MDIsIDB4NjgsIDB4MDAsIDB4QTAsIDB4MDEsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MEEsCisweDA0LCAweDYwLCAweDAwLCAweEEwLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhBMCwgMHgxMiwgMHhBMCwgMHg0RSwgMHg4MCwgMHgzQSwgMHgwMSwgMHhFQSwgMHgwNCwgMHhBMCwgMHgxMywgMHhBMCwgMHg0RSwKKzB4ODEsIDB4M0EsIDB4MDEsIDB4RTgsIDB4MDQsIDB4QTgsIDB4MTMsIDB4QTAsIDB4Q0UsIDB4ODAsIDB4M0EsIDB4MDEsIDB4RTgsCisweDM0LCAweEE4LCAweDEzLCAweEEwLCAweENFLCAweDgwLCAweDNBLCAweDAxLCAweEVBLCAweDA0LCAweEE4LCAweDEzLCAweEEwLAorMHg0RSwgMHg4MCwgMHgyQSwgMHgwMSwgMHhBOCwgMHgwNCwgMHhBOCwgMHgxMiwgMHhBMCwgMHg0RSwgMHg4MCwgMHgzMiwgMHgwMSwKKzB4RUEsIDB4MDQsIDB4QTgsIDB4MDMsIDB4OEMsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsCisweDAyLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDYwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDA2LCAweDAwLAorMHgxOCwgMHgwMSwgMHg2MiwgMHgwMCwgMHg4MCwgMHg4MSwgMHgwMCwgMHgwNiwgMHgwMSwgMHgxOCwgMHgwMCwgMHg0MiwgMHgwMCwKKzB4ODAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDgsIDB4NjAsIDB4MTAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDYsCisweDAzLCAweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDYwLAorMHgwMCwgMHg4MCwgMHgwMSwgMHg4QywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHg4MiwKKzB4MjAsIDB4MDQsIDB4ODAsIDB4MTAsIDB4MDAsIDB4NDIsIDB4MTQsIDB4MDAsIDB4MTAsIDB4MjAsIDB4ODQsIDB4ODAsIDB4MTAsCisweDA4LCAweDQyLCAweDEwLCAweDA4LCAweDExLCAweDIwLCAweDA0LCAweDgwLCAweDEwLCAweDBDLCAweDQyLCAweDA4LCAweDA4LAorMHgxMSwgMHgyMCwgMHgwNCwgMHg4MCwgMHgxMCwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwOCwgMHgxMSwgMHgyMCwgMHgwNCwgMHg4MCwKKzB4MTAsIDB4MDQsIDB4NDIsIDB4MDQsIDB4MDgsIDB4MDEsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MTAsIDB4MDEsIDB4NDIsIDB4MDQsCisweDA4LCAweDAxLCAweDhDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweEYyLCAweEEwLAorMHgwMiwgMHgwMywgMHgwQSwgMHgwNCwgMHgyOCwgMHgxQywgMHhBQSwgMHg1MCwgMHhBMCwgMHgwMiwgMHgwMSwgMHgwQSwgMHgwNiwKKzB4MkEsIDB4MTAsIDB4QTAsIDB4RDAsIDB4ODAsIDB4MDIsIDB4MDEsIDB4MEEsIDB4MDQsIDB4MEEsIDB4MzAsIDB4QTAsIDB4NTAsCisweEEwLCAweDAyLCAweDAxLCAweDBBLCAweDBFLCAweDI4LCAweDEwLCAweEEwLCAweDUwLCAweDgwLCAweDgyLCAweDAxLCAweDBBLAorMHgwNCwgMHgyQSwgMHgxNCwgMHhBMCwgMHg0MCwgMHg4MCwgMHgwMiwgMHgwMSwgMHgyQSwgMHgwNSwgMHgyOCwgMHgzQywgMHhBOCwKKzB4MDAsIDB4OEMsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzAsIDB4ODAsIDB4QzgsCisweDAwLCAweEEyLCAweDAzLCAweEE4LCAweDJFLCAweEEwLCAweDMyLCAweDgwLCAweEVBLCAweDAwLCAweEFBLCAweDAzLCAweDA4LAorMHgwQywgMHhBMCwgMHgzQSwgMHg4MCwgMHg2QSwgMHgwMCwgMHg4MiwgMHgwMSwgMHgwOCwgMHgwQywgMHgyMCwgMHgzQSwgMHg4MCwKKzB4NkEsIDB4MDAsIDB4ODIsIDB4MDMsIDB4MDgsIDB4MEMsIDB4QTAsIDB4M0EsIDB4ODAsIDB4RUEsIDB4MDEsIDB4QTIsIDB4MDMsCisweDA4LCAweDBFLCAweEEwLCAweDNBLCAweDgwLCAweEUwLCAweDAwLCAweEFBLCAweDAzLCAweDA4LCAweDFDLCAweDIwLCAweDAyLAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgzMCwgMHgwMCwgMHgwOCwgMHg4MCwKKzB4MzAsIDB4MDEsIDB4MjAsIDB4MTgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4QzIsIDB4MDEsIDB4MDgsIDB4MDIsIDB4MDAsIDB4MDQsCisweDgwLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDA4LCAweDAyLCAweDAwLCAweDgyLAorMHgwMCwgMHgxMCwgMHgwNiwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4ODIsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEzLCAweDE2LCAweDQwLCAweDE4LCAweDAwLCAweDYxLAorMHgwMCwgMHgwNCwgMHgyMSwgMHgxMCwgMHgwNCwgMHg0MCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMSwgMHgwNiwgMHgwMSwgMHgxMCwKKzB4MDQsIDB4NDAsIDB4MTAsIDB4ODAsIDB4NDEsIDB4MDAsIDB4MDYsIDB4MDEsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MTAsIDB4ODAsCisweDQxLCAweDAwLCAweDA2LCAweDAxLCAweDEwLCAweDA0LCAweDQwLCAweDEwLCAweDgwLCAweDQxLCAweDAwLCAweDA2LCAweDAxLAorMHgxMCwgMHgwNCwgMHg2MCwgMHgxNCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxMCwgMHg4MiwgMHg4QywgMHgwQSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsIDB4MDIsIDB4QTAsIDB4MDYsIDB4ODAsIDB4OUEsIDB4MDAsCisweDZELCAweDAyLCAweEEwLCAweDAxLCAweEEwLCAweDI2LCAweDQwLCAweDlCLCAweDAwLCAweDRBLCAweDAwLCAweEIwLCAweDA5LAorMHg4OCwgMHgyNiwgMHg4MCwgMHg5MiwgMHgwMCwgMHg0OCwgMHgwMCwgMHg4MCwgMHgwOSwgMHhBMCwgMHgyNiwgMHg0MCwgMHg5MiwKKzB4MDAsIDB4NDgsIDB4MDAsIDB4QjAsIDB4MDksIDB4ODAsIDB4MjYsIDB4ODAsIDB4OUEsIDB4MDAsIDB4NEEsIDB4MDIsIDB4QTgsCisweDA5LCAweEEwLCAweDI0LCAweDgwLCAweDlCLCAweDAwLCAweDRBLCAweDAwLCAweEE4LCAweDAxLCAweDhDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHgwMiwgMHhDMCwgMHgwNiwgMHgwMCwgMHgxQSwgMHgwMSwgMHg2OCwKKzB4MDAsIDB4QjAsIDB4MDEsIDB4QzAsIDB4NDYsIDB4ODAsIDB4MUEsIDB4MDAsIDB4NkUsIDB4MDQsIDB4QTgsIDB4MDEsIDB4QzAsCisweDA2LCAweDgwLCAweDFCLCAweDAwLCAweDZBLCAweDAwLCAweEIwLCAweDAxLCAweEUwLCAweDA2LCAweDgwLCAweDFCLCAweDAwLAorMHg2RSwgMHgwNCwgMHhBOCwgMHgwMSwgMHhDOCwgMHgwNiwgMHgwMCwgMHgxQSwgMHgwMCwgMHg2RSwgMHgwMCwgMHhCMCwgMHgwMSwKKzB4RTAsIDB4NDYsIDB4ODAsIDB4MUEsIDB4MDAsIDB4NkUsIDB4MDAsIDB4QjAsIDB4MDEsIDB4OEMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEzLCAweDQyLCAweDIwLCAweDBDLCAweDgxLCAweDMxLCAweDBDLCAweDgyLCAweDEwLAorMHgwOCwgMHg0MywgMHgyMCwgMHgwQywgMHg4MSwgMHgzMCwgMHgwNCwgMHhDMCwgMHgzMCwgMHgwOCwgMHg0MywgMHgyMCwgMHgwQywKKzB4MDEsIDB4MzAsIDB4MEMsIDB4QzIsIDB4MzAsIDB4MTAsIDB4NDMsIDB4MjAsIDB4MEMsIDB4MDMsIDB4MzAsIDB4MEMsIDB4QzAsCisweDMwLCAweDA4LCAweDQzLCAweDIwLCAweDBDLCAweDgxLCAweDMwLCAweDBDLCAweEMwLCAweDEwLCAweDA4LCAweDQzLCAweDAwLAorMHgwQywgMHg4MSwgMHgzMCwgMHgwNCwgMHhDMiwgMHgxMCwgMHgwOCwgMHgwMywgMHg4QywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDAsIDB4QzAsIDB4MDAsIDB4MDAsCisweDAzLCAweDAwLCAweDBDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDRDLCAweDAwLAorMHgzMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgwMywgMHgwMCwgMHg0QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwMCwKKzB4MDAsIDB4MDMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4MDgsIDB4MDgsCisweDAwLCAweDIwLCAweDAwLCAweEMwLCAweDAwLCAweDAwLCAweDAzLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgyMSwgMHg0MCwgMHg4MCwgMHg0QywgMHgyMywgMHgzMiwgMHgwNCwgMHhDQSwgMHgxMCwgMHgyMCwgMHg0MywKKzB4ODAsIDB4MEMsIDB4MDMsIDB4MzIsIDB4MEMsIDB4Q0EsIDB4MTAsIDB4MjAsIDB4NDMsIDB4ODgsIDB4NEMsIDB4MjMsIDB4MzIsCisweDA1LCAweEM4LCAweDE0LCAweDIwLCAweDQzLCAweDgwLCAweDRDLCAweDgxLCAweDMyLCAweDA1LCAweENBLCAweDEwLCAweDIwLAorMHg0MywgMHg4MCwgMHg0OCwgMHgwMywgMHgzMiwgMHgwNSwgMHg4OCwgMHgxMCwgMHgyMCwgMHhEMywgMHhBMCwgMHgwQywgMHgwMywKKzB4MzIsIDB4MDQsIDB4Q0EsIDB4MTAsIDB4MjAsIDB4MDMsIDB4ODQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEEyLCAweDQyLCAweEEwLCAweDA2LCAweDgzLCAweDNBLCAweDA0LCAweDZBLCAweDEwLCAweEE4LCAweDQxLCAweEEwLAorMHgwNiwgMHg4MywgMHgxQSwgMHgwQywgMHg0QSwgMHgzMCwgMHhBOCwgMHg0MSwgMHhBMCwgMHgwNiwgMHg4MSwgMHgxQSwgMHgwQywKKzB4NEEsIDB4MzAsIDB4QTgsIDB4NDEsIDB4ODAsIDB4MEUsIDB4ODMsIDB4MUEsIDB4MEMsIDB4NEEsIDB4MzAsIDB4ODgsIDB4NDEsCisweEEwLCAweDA2LCAweDAxLCAweDBBLCAweDBDLCAweDA4LCAweDEwLCAweEE4LCAweDQxLCAweEEwLCAweDA2LCAweDgzLCAweDFBLAorMHgwNCwgMHg2QSwgMHgxMCwgMHhBOCwgMHgwMSwgMHg4QywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4QTMsIDB4NDAsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTgsIDB4MDQsIDB4QzAsIDB4MTAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MDQsCisweDAxLCAweDIwLCAweDA0LCAweDQwLCAweDEwLCAweDAwLCAweDQyLCAweDAwLCAweDAwLCAweDAxLCAweDEwLCAweDA0LCAweDQwLAorMHgxMCwgMHg4MCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MywgMHgwMCwKKzB4MDAsIDB4ODEsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MEMsIDB4MDEsIDB4MzAsIDB4MDQsCisweDQwLCAweDEwLCAweDAwLCAweDAxLCAweDhDLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEzLAorMHg0QSwgMHgyMCwgMHgyQywgMHg4MSwgMHgxMCwgMHgwQywgMHg4MiwgMHgxMiwgMHg4OCwgMHg0MSwgMHgyMCwgMHgyNiwgMHg4MSwKKzB4QjAsIDB4MDQsIDB4NDIsIDB4MTAsIDB4MDgsIDB4NDMsIDB4MjAsIDB4MjYsIDB4ODMsIDB4OTAsIDB4MDQsIDB4MDIsIDB4MTIsCisweDA4LCAweDQxLCAweDAwLCAweDI2LCAweDgxLCAweDkwLCAweDA0LCAweDQyLCAweDEwLCAweDA4LCAweDQzLCAweDIwLCAweDI2LAorMHg4MywgMHg5MCwgMHgwNCwgMHg0MCwgMHgxMCwgMHg4OCwgMHhDOSwgMHgyMCwgMHgwQywgMHg4MSwgMHhCMCwgMHgwNCwgMHg2MiwKKzB4MTIsIDB4ODgsIDB4MDEsIDB4OEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTIsIDB4MDYsCisweDIwLCAweDFBLCAweDAwLCAweDYyLCAweDAwLCAweDg4LCAweDAxLCAweEE4LCAweDA2LCAweEEwLCAweDFBLCAweDgwLCAweDYyLAorMHgwMCwgMHg4MCwgMHgwMSwgMHgyOCwgMHgwNiwgMHhBMCwgMHgxQSwgMHg4MCwgMHg0MiwgMHgwMCwgMHgwQSwgMHgwMSwgMHhBMCwKKzB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsIDB4NkEsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MjgsIDB4MDYsIDB4QTAsIDB4MUEsIDB4ODAsCisweDZBLCAweDgwLCAweDA4LCAweDAxLCAweEE4LCAweDA2LCAweDgwLCAweDE4LCAweDgwLCAweDYyLCAweDAwLCAweEE4LCAweDAxLAorMHg4OCwgMHgwMiwgMHg4QywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg4MCwKKzB4ODIsIDB4MDEsIDB4MEEsIDB4MDYsIDB4MjgsIDB4MTgsIDB4QTAsIDB4NjAsIDB4ODAsIDB4ODIsIDB4MDEsIDB4MEEsIDB4MDYsCisweDI4LCAweDE4LCAweEEwLCAweDYwLCAweDgwLCAweDgyLCAweDAxLCAweDBBLCAweDA2LCAweDI4LCAweDE4LCAweEEwLCAweDYwLAorMHhBMCwgMHg4MiwgMHgwMSwgMHgyQSwgMHgwNiwgMHgyOCwgMHgxOCwgMHhBMCwgMHg2MCwgMHg4MCwgMHg4MiwgMHgwMSwgMHgwQSwKKzB4MDYsIDB4QUEsIDB4MTgsIDB4QTAsIDB4NjAsIDB4ODAsIDB4OEEsIDB4MDEsIDB4MEEsIDB4MDYsIDB4MjgsIDB4MTgsIDB4QTAsCisweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQ4LCAweDgwLCAweDIwLAorMHg4MSwgMHgwMiwgMHg4NCwgMHgwOCwgMHgxMiwgMHgyMCwgMHg0MCwgMHg4MCwgMHgyMCwgMHg4MSwgMHg4MiwgMHgwNCwgMHgwOCwKKzB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MjAsIDB4MDEsIDB4ODIsIDB4MDQsIDB4NEEsIDB4MTIsIDB4MjAsIDB4NDAsIDB4ODAsCisweDIwLCAweDAxLCAweDgyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDIwLCAweDAxLCAweDgyLCAweDA0LAorMHgwOCwgMHgxMCwgMHgyMCwgMHg0OCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg4MiwgMHgwNCwgMHg0OCwgMHgxMiwgMHgyMCwgMHgwMCwKKzB4MEMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsIDB4NjIsIDB4QzAsIDB4ODAsIDB4MDEsCisweDAzLCAweDA2LCAweEFDLCAweDE4LCAweEIwLCAweDYyLCAweEMwLCAweDhBLCAweDAxLCAweDJCLCAweDA2LCAweEFFLCAweDE4LAorMHhCMCwgMHg2MiwgMHhDMCwgMHg4QSwgMHg4MSwgMHgyQiwgMHgwNiwgMHhBQywgMHgxOCwgMHhBMCwgMHg2MiwgMHhDMCwgMHg4QSwKKzB4ODEsIDB4MjksIDB4MDYsIDB4QUUsIDB4MTgsIDB4QjAsIDB4NjIsIDB4QzAsIDB4OEEsIDB4MDEsIDB4MkIsIDB4MDYsIDB4QTYsCisweDE4LCAweEIwLCAweDYyLCAweDYwLCAweDhBLCAweDAxLCAweDJCLCAweDA2LCAweEFDLCAweDE4LCAweEIwLCAweDAyLCAweDhDLAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMiwgMHg2MiwgMHg4MCwgMHg4RSwgMHgwMSwgMHgzQSwKKzB4MDYsIDB4RUUsIDB4MTgsIDB4QTQsIDB4NjMsIDB4ODAsIDB4OEUsIDB4ODEsIDB4M0EsIDB4MDYsIDB4RTgsIDB4MTgsIDB4QjAsCisweDYzLCAweDgwLCAweDhFLCAweDAxLCAweDNBLCAweDA2LCAweEVBLCAweDE4LCAweEE4LCAweDYzLCAweDgwLCAweDhFLCAweDgxLAorMHgzQSwgMHgwNiwgMHhFMCwgMHgxOCwgMHhCMCwgMHg2MywgMHg4MCwgMHg4RSwgMHg4MSwgMHgzQiwgMHgwNiwgMHhFOCwgMHgxOCwKKzB4QTgsIDB4NjMsIDB4MjAsIDB4OEUsIDB4ODEsIDB4M0IsIDB4MDYsIDB4RUEsIDB4MTgsIDB4QTgsIDB4MDMsIDB4OEMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDYyLCAweEMwLCAweDhFLCAweDAxLCAweDNBLCAweDA2LAorMHhFOCwgMHgxOCwgMHhCMCwgMHg2MywgMHhDMCwgMHg4RSwgMHgwMSwgMHgzQSwgMHgwNiwgMHhDQywgMHgxOCwgMHhBMCwgMHg2MywKKzB4QzAsIDB4OEUsIDB4MDEsIDB4M0IsIDB4ODYsIDB4RUEsIDB4MTgsIDB4MzAsIDB4NjMsIDB4QzAsIDB4OEUsIDB4MDEsIDB4M0IsCisweDA2LCAweENDLCAweDE4LCAweEEwLCAweDYzLCAweEMwLCAweDhFLCAweDAxLCAweDNCLCAweDA2LCAweEVDLCAweDE4LCAweEIwLAorMHg2MywgMHhFMCwgMHg4RSwgMHg4MSwgMHgzQSwgMHgwNiwgMHhFRSwgMHgxOCwgMHhCMCwgMHgwMywgMHg4OCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTIsIDB4NjIsIDB4QTAsIDB4OEUsIDB4ODEsIDB4MzEsIDB4MDYsIDB4QzIsCisweDE4LCAweEE4LCAweDYzLCAweEEwLCAweDhFLCAweDgxLCAweDMwLCAweDA2LCAweEMyLCAweDE4LCAweDBBLCAweDYzLCAweEEwLAorMHg4RSwgMHgwMSwgMHgxMCwgMHgwNiwgMHhDNCwgMHgxOCwgMHgzMCwgMHg2MywgMHgwMCwgMHg4QywgMHgyMSwgMHgxMCwgMHgwNiwKKzB4QzAsIDB4MTgsIDB4MDgsIDB4NjEsIDB4QTAsIDB4OEUsIDB4QTEsIDB4MzgsIDB4ODYsIDB4ODAsIDB4MTgsIDB4QTgsIDB4NjMsCisweDAwLCAweDg0LCAweDgxLCAweDM4LCAweDA2LCAweEVFLCAweDE4LCAweEE4LCAweDAzLCAweDg4LCAweDBBLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHgwNCwgMHgwMSwgMHgxQSwgMHgwNCwgMHhFOCwgMHgxMCwKKzB4MjAsIDB4NDEsIDB4ODAsIDB4MDQsIDB4MDEsIDB4M0EsIDB4MDQsIDB4NDgsIDB4MTAsIDB4QTAsIDB4NDMsIDB4ODAsIDB4MDQsCisweDAxLCAweDEyLCAweDA0LCAweDY4LCAweDEwLCAweDIwLCAweDQxLCAweDAwLCAweDA0LCAweDAxLCAweDEyLCAweDA0LCAweDQ4LAorMHgxMCwgMHgyMCwgMHg0MywgMHg4MCwgMHgwNCwgMHgwMSwgMHgzMiwgMHgwNCwgMHg2OCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwKKzB4MDQsIDB4MDEsIDB4MzIsIDB4MDQsIDB4NDgsIDB4MTAsIDB4MjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDgwLCAweDg2LCAweDAxLCAweDEyLCAweDA2LCAweDZBLCAweDE4LCAweEEwLAorMHg2MCwgMHg4OCwgMHg4NiwgMHg4MSwgMHgxQSwgMHgwNiwgMHg0OCwgMHgxOCwgMHhBOCwgMHg2MCwgMHgwMCwgMHg4MiwgMHgwMSwKKzB4MDIsIDB4ODYsIDB4NDgsIDB4MTgsIDB4QTAsIDB4NjEsIDB4ODAsIDB4ODQsIDB4MDEsIDB4MUEsIDB4MDYsIDB4NDgsIDB4MTgsCisweEE4LCAweDYxLCAweDg4LCAweDg2LCAweDAxLCAweDFBLCAweDA2LCAweDQ4LCAweDE4LCAweEEwLCAweDYxLCAweDgwLCAweDg0LAorMHgwMSwgMHgxOCwgMHgwNiwgMHg2OCwgMHgxOCwgMHhBMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4QTIsIDB4MDIsIDB4QTAsIDB4MEUsIDB4ODAsIDB4M0EsIDB4MDAsIDB4Q0EsIDB4MDAsIDB4MjgsIDB4MDMsCisweEEwLCAweDBBLCAweDgwLCAweDMyLCAweDAwLCAweEM4LCAweDAwLCAweEE4LCAweDAyLCAweEEwLCAweDBDLCAweDAwLCAweDMyLAorMHgwMCwgMHhDOCwgMHgwMCwgMHhBOCwgMHgwMywgMHhBMCwgMHgwQywgMHgwMCwgMHgzMiwgMHgwMCwgMHhDOCwgMHgwMCwgMHhBOCwKKzB4MDMsIDB4QTAsIDB4MEMsIDB4MDAsIDB4MzIsIDB4MDAsIDB4RTgsIDB4MDAsIDB4MjgsIDB4MDMsIDB4QTAsIDB4MEMsIDB4ODAsCisweDMyLCAweDAwLCAweENBLCAweDAwLCAweEE4LCAweDAzLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhBMiwgMHg0MiwgMHgwMCwgMHgwNiwgMHgwMSwgMHgxOCwgMHgwNCwgMHg0MCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMCwKKzB4MDYsIDB4MDEsIDB4MTAsIDB4MEMsIDB4NDIsIDB4MTAsIDB4ODAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4ODMsIDB4MTAsIDB4MEMsCisweDQwLCAweDEwLCAweDgwLCAweEMxLCAweDAwLCAweDA0LCAweDgzLCAweDEwLCAweDA0LCAweDQyLCAweDEwLCAweDgwLCAweEMxLAorMHgwMCwgMHgwNCwgMHg4MywgMHgxMCwgMHgwQywgMHg0MiwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwMCwgMHgwNCwgMHgwMywgMHgxMCwKKzB4MDQsIDB4NjAsIDB4MTAsIDB4ODAsIDB4MDEsIDB4ODgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEEyLCAweDQyLCAweDIwLCAweDA0LCAweDgxLCAweDEwLCAweDA0LCAweDYyLCAweDEwLCAweDg4LCAweDQxLCAweDIwLCAweDA0LAorMHg4MSwgMHgxOCwgMHgwNCwgMHg2MiwgMHgxMCwgMHgwOCwgMHg0MSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxOCwgMHgwNCwgMHg2MCwKKzB4MTAsIDB4MDgsIDB4NDEsIDB4MjAsIDB4MDYsIDB4ODEsIDB4MTgsIDB4MDQsIDB4NjIsIDB4MTAsIDB4MDgsIDB4NDEsIDB4MjAsCisweDA2LCAweDgxLCAweDE4LCAweDA0LCAweDYyLCAweDEwLCAweDg4LCAweDQxLCAweDIwLCAweDA2LCAweDgxLCAweDE4LCAweDA1LAorMHg0MiwgMHgxMCwgMHgwOCwgMHgwMSwgMHg4OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMiwKKzB4NDIsIDB4QTAsIDB4MDIsIDB4MDEsIDB4MEEsIDB4MEMsIDB4QTgsIDB4MzAsIDB4QTgsIDB4NDIsIDB4QTAsIDB4MDIsIDB4MDMsCisweDJBLCAweDA0LCAweEFBLCAweDEwLCAweEEwLCAweEMwLCAweEEwLCAweDBBLCAweDgxLCAweDJBLCAweDg0LCAweEEwLCAweDEwLAorMHhBMCwgMHg0MCwgMHhBMCwgMHgwQSwgMHg4MSwgMHgyQSwgMHgwQywgMHhBQSwgMHgxMCwgMHhBMCwgMHg0MCwgMHhBOCwgMHgwQSwKKzB4ODEsIDB4MkEsIDB4MDQsIDB4MkEsIDB4MTAsIDB4QTgsIDB4NDIsIDB4QTAsIDB4MEEsIDB4ODEsIDB4MkEsIDB4MEMsIDB4QTgsCisweDEwLCAweEE4LCAweDAwLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorMHg4MCwgMHgwQSwgMHgwMSwgMHgyQSwgMHgwQywgMHhBOCwgMHgzMCwgMHhBMCwgMHhDMiwgMHg4MCwgMHgwQSwgMHgwMywgMHgyQSwKKzB4MEMsIDB4QTgsIDB4MzAsIDB4QTAsIDB4QzIsIDB4ODAsIDB4MEEsIDB4MDEsIDB4MkEsIDB4MDQsIDB4QTgsIDB4MzAsIDB4QTAsCisweEMyLCAweDgwLCAweDBBLCAweDAxLCAweDJBLCAweDBDLCAweEE4LCAweDMwLCAweEEwLCAweEMyLCAweDgwLCAweDBBLCAweDAxLAorMHgyQSwgMHgwNCwgMHhBOCwgMHgzMCwgMHhBMCwgMHg0MiwgMHg4MCwgMHgwQSwgMHgwMywgMHgyQSwgMHgwNSwgMHhBOCwgMHgzMCwKKzB4QTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MTAsIDB4MDAsCisweDQyLCAweDgwLCAweDA4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDEwLCAweDAwLCAweDAyLCAweDgwLCAweDA4LCAweDAwLAorMHgyMCwgMHgwNCwgMHg4MiwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMiwgMHgwNCwgMHg4MCwgMHgwMCwKKzB4MDAsIDB4MDIsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjAsIDB4MDgsCisweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDAwLCAweDYwLCAweDA0LCAweDgwLAorMHgwMSwgMHg4MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMiwgMHg0MiwgMHg0MCwgMHgwMCwKKzB4MDEsIDB4MDEsIDB4MDUsIDB4MDQsIDB4MTQsIDB4MTAsIDB4NDAsIDB4NDAsIDB4NDAsIDB4MDEsIDB4MDEsIDB4MEMsIDB4NDQsCisweDEwLCAweDEwLCAweDUwLCAweDQwLCAweDAwLCAweDgxLCAweDAxLCAweDA0LCAweDAwLCAweDMwLCAweDAwLCAweDUwLCAweDAwLAorMHgwMCwgMHg4MSwgMHgwMSwgMHgwQywgMHgwNiwgMHgxMCwgMHgxMCwgMHg1MCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwNCwKKzB4NDYsIDB4MTQsIDB4MTAsIDB4NDAsIDB4NjAsIDB4NDQsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDQsIDB4MzAsIDB4MTAsIDB4MDAsCisweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDAwLCAweEEwLCAweDA2LCAweDgwLAorMHgxQSwgMHgwMCwgMHg2RSwgMHgwMCwgMHhBOCwgMHgwMSwgMHg4MCwgMHgwNiwgMHg4MCwgMHgxQSwgMHgwMCwgMHg2QSwgMHgwMCwKKzB4QjgsIDB4MDEsIDB4QTAsIDB4MDYsIDB4ODAsIDB4MUEsIDB4MDAsIDB4NkEsIDB4MDAsIDB4QTgsIDB4MDEsIDB4QTAsIDB4MDYsCisweDgwLCAweDFBLCAweDAwLCAweDY4LCAweDAwLCAweEIwLCAweDAxLCAweDgwLCAweDA2LCAweDgwLCAweDFBLCAweDAwLCAweDZBLAorMHgwMCwgMHhBOCwgMHgwMSwgMHhBMCwgMHgwNiwgMHg4MCwgMHgxQiwgMHgwMCwgMHg2QSwgMHgwMCwgMHhBOCwgMHgwMSwgMHg4OCwKKzB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsIDB4MDIsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MTIsCisweDAwLCAweEU4LCAweDAwLCAweEIwLCAweDAxLCAweEMwLCAweDA2LCAweDgwLCAweDNBLCAweDAwLCAweDRDLCAweDAwLCAweEEwLAorMHgwMywgMHhDMCwgMHgwNiwgMHg4MCwgMHgxMywgMHgwMCwgMHg0RSwgMHgwMCwgMHhCMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwKKzB4MTMsIDB4MDAsIDB4NkUsIDB4MDAsIDB4QTAsIDB4MDMsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MUIsIDB4MDAsIDB4NEMsIDB4MDAsCisweEIwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDNBLCAweDAwLCAweDZFLCAweDAwLCAweEIwLCAweDAxLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwQywgMHg4MCwgMHgxMSwgMHgwMCwKKzB4NjIsIDB4MDAsIDB4MDgsIDB4MDIsIDB4MjAsIDB4MEMsIDB4ODAsIDB4MTgsIDB4MDAsIDB4NDIsIDB4MDAsIDB4OEEsIDB4MDEsCisweDIwLCAweDBDLCAweDAyLCAweDEwLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDBDLCAweDAyLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgyMCwgMHgwQywgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwOCwKKzB4ODMsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MTgsIDB4MDAsIDB4QzIsIDB4MDAsIDB4MDgsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJDLCAweDAwLCAweDkwLCAweDAwLCAweDQwLAorMHgwMiwgMHgwMCwgMHgwQiwgMHgwMCwgMHgyQywgMHgwMCwgMHg5MCwgMHgxMiwgMHg0MCwgMHgwMiwgMHgwMCwgMHgyMSwgMHgwMCwKKzB4QTgsIDB4MDEsIDB4OTAsIDB4MTIsIDB4NDAsIDB4MDIsIDB4MDAsIDB4MjEsIDB4MDIsIDB4QUMsIDB4MDgsIDB4OTAsIDB4MjIsCisweDQwLCAweDAyLCAweDAwLCAweDIxLCAweDAwLCAweEFDLCAweDA1LCAweDkwLCAweDIyLCAweDQwLCAweDA4LCAweDAwLCAweDJCLAorMHgwMiwgMHhBNCwgMHgwMCwgMHg5MCwgMHgwMCwgMHhDMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODAsIDB4OEMsIDB4MDAsIDB4MzIsIDB4MEEsIDB4Q0EsIDB4MjgsCisweDIyLCAweEEzLCAweDgwLCAweDhDLCAweDAyLCAweDMyLCAweDA2LCAweDQ4LCAweDI4LCAweDI4LCAweEEyLCAweDg4LCAweDhDLAorMHg4MiwgMHgxMiwgMHgwMCwgMHg0OCwgMHgwOCwgMHgyMCwgMHhBMSwgMHg4MCwgMHg4QywgMHgwMywgMHgzMiwgMHgwMCwgMHg0OCwKKzB4MjgsIDB4MjgsIDB4QTIsIDB4ODAsIDB4OEMsIDB4MDAsIDB4MjIsIDB4MDYsIDB4MDgsIDB4MzgsIDB4MjAsIDB4QTMsIDB4ODAsCisweDg0LCAweDgyLCAweDMyLCAweDAyLCAweENBLCAweDA4LCAweDIwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDNCwgMHhBMCwgMHgxNiwgMHg4MywgMHg1QSwgMHgwQywgMHg0QSwgMHgzMSwgMHhBOCwKKzB4QzUsIDB4QTAsIDB4MTYsIDB4ODMsIDB4NUEsIDB4MEUsIDB4NjgsIDB4MzEsIDB4QTgsIDB4ODUsIDB4QTAsIDB4MTYsIDB4ODMsCisweDVBLCAweDBDLCAweDYwLCAweDMxLCAweEE4LCAweDg1LCAweEEwLCAweDE2LCAweDAzLCAweDVBLCAweDBDLCAweDZBLCAweDMxLAorMHhBOCwgMHhDNSwgMHhBMCwgMHgxNiwgMHgwMywgMHg1OCwgMHgwRSwgMHgyOCwgMHgzMSwgMHhBOCwgMHhFNCwgMHg4MCwgMHgxMiwKKzB4ODIsIDB4NUEsIDB4MEMsIDB4NkEsIDB4MzEsIDB4QTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDkwLCAweDAxLCAweDQwLCAweDA2LCAweDAwLCAweDA5LAorMHgwMCwgMHg2NCwgMHgwMCwgMHg5MCwgMHgwMCwgMHg0MiwgMHgwMiwgMHgwMCwgMHg5MSwgMHgwMCwgMHhBNCwgMHgwMCwgMHg5MCwKKzB4MDAsIDB4NDAsIDB4MDIsIDB4MDAsIDB4OTEsIDB4MDAsIDB4QTQsIDB4ODAsIDB4OTAsIDB4MDgsIDB4NDAsIDB4MDIsIDB4MDAsCisweDMxLCAweDAwLCAweEE0LCAweDgwLCAweDgwLCAweDAwLCAweDQyLCAweDBDLCAweDAwLCAweDA5LCAweDIwLCAweDY0LCAweDAyLAorMHg5MCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4MjIsIDB4NDIsIDB4ODgsIDB4MTgsIDB4MjAsIDB4NDIsIDB4ODAsIDB4ODgsIDB4MTEsIDB4MjIsCisweDA2LCAweDg4LCAweDE4LCAweDIwLCAweDYyLCAweDg0LCAweDg4LCAweDAxLCAweDIyLCAweDA2LCAweDg4LCAweDE4LCAweDIwLAorMHg2MCwgMHg4NCwgMHg4OCwgMHgwMSwgMHgyMiwgMHgwNiwgMHg4OCwgMHgxOCwgMHgyMCwgMHg2MiwgMHg4NCwgMHg4OCwgMHgyMSwKKzB4MjYsIDB4MDYsIDB4ODgsIDB4MTgsIDB4MjAsIDB4NjIsIDB4ODAsIDB4ODgsIDB4MjEsIDB4MjIsIDB4MDYsIDB4ODgsIDB4MTgsCisweDIwLCAweDYyLCAweDg0LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMiwgMHgwQSwgMHgwOCwgMHgyQSwgMHgyMCwgMHgwOCwgMHgwMCwgMHhBOCwgMHgwMiwgMHhBMiwgMHgwQSwKKzB4ODQsIDB4MkEsIDB4MjAsIDB4QUEsIDB4ODAsIDB4QTAsIDB4MDIsIDB4QTYsIDB4MEEsIDB4MUMsIDB4MkEsIDB4MjgsIDB4QTgsCisweEMwLCAweEEwLCAweDAyLCAweEEyLCAweDBBLCAweDg4LCAweDJBLCAweDIwLCAweEFBLCAweDgwLCAweEEwLCAweDAyLCAweEEyLAorMHgwQSwgMHg4OCwgMHgyQSwgMHhBMCwgMHhBQSwgMHg4MCwgMHhBOSwgMHgwMiwgMHhBMiwgMHgwQSwgMHgxOCwgMHgyOCwgMHgyMCwKKzB4QTgsIDB4ODAsIDB4QTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDEwLCAweDg0LCAweDQyLCAweDEwLCAweDBBLCAweDQxLCAweEE4LCAweDA0LCAweEEwLCAweDEyLCAweDgwLCAweDQyLCAweDEwLAorMHgyQSwgMHg0MSwgMHgyOCwgMHg4NCwgMHhBMSwgMHgxMCwgMHg4NCwgMHg0QSwgMHgxMCwgMHgyQSwgMHg2MSwgMHhBOCwgMHgwNCwKKzB4QTEsIDB4MTAsIDB4ODQsIDB4NEEsIDB4MTgsIDB4MkEsIDB4NjEsIDB4QTgsIDB4NDQsIDB4QTEsIDB4MTAsIDB4ODQsIDB4NEEsCisweDE0LCAweDJBLCAweDYxLCAweEE4LCAweDA0LCAweEExLCAweDEyLCAweDg0LCAweDRBLCAweDEwLCAweDJBLCAweDAxLCAweEE4LAorMHgwNCwgMHg4MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKzB4ODAsIDB4NDAsIDB4ODEsIDB4MDIsIDB4OEQsIDB4MDgsIDB4MTQsIDB4MDAsIDB4NTAsIDB4ODAsIDB4NDAsIDB4ODMsIDB4MDIsCisweDA1LCAweDA4LCAweDE0LCAweDIwLCAweDUwLCAweDgwLCAweDQwLCAweDAxLCAweDAwLCAweDA1LCAweDA4LCAweDE0LCAweDIwLAorMHg1MCwgMHgwMCwgMHg0MCwgMHgwMSwgMHgwMiwgMHgwNSwgMHgwOCwgMHgxNCwgMHgyOCwgMHg1MCwgMHg4MCwgMHg0MCwgMHgwMSwKKzB4MDIsIDB4ODUsIDB4MDAsIDB4MTQsIDB4MjAsIDB4NTAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MTQsCisweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweEMwLAorMHhDQSwgMHgwMCwgMHgyQiwgMHgwMywgMHhBNCwgMHgwQywgMHgxMCwgMHgzMiwgMHhDMCwgMHhDQSwgMHgwMCwgMHgwMSwgMHgwMywKKzB4MEMsIDB4MEMsIDB4QjAsIDB4MzIsIDB4NDAsIDB4QzAsIDB4ODAsIDB4MjEsIDB4MDMsIDB4ODYsIDB4MEMsIDB4QTEsIDB4MzIsCisweDAwLCAweEM4LCAweDgwLCAweDAxLCAweDAzLCAweDg2LCAweDBDLCAweEEwLCAweDMyLCAweDQwLCAweEM4LCAweDAwLCAweDIwLAorMHgwMywgMHg4NiwgMHgwQywgMHgxMCwgMHgzMCwgMHg2MCwgMHhDOCwgMHgyMCwgMHgyMSwgMHgwMywgMHg4NCwgMHgwQywgMHhCMCwKKzB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTIsIDB4NEUsCisweDgwLCAweDNBLCAweDA5LCAweEVFLCAweDA0LCAweEEwLCAweDEzLCAweDgwLCAweDRFLCAweDgyLCAweDNBLCAweDExLCAweEVBLAorMHgwNCwgMHhCOCwgMHgxMywgMHg5MCwgMHg0RSwgMHg5MCwgMHgzQSwgMHgyMSwgMHg2QSwgMHgwNCwgMHhBOCwgMHgxMywgMHhBMCwKKzB4NEUsIDB4ODgsIDB4M0EsIDB4MjEsIDB4Q0EsIDB4MDQsIDB4QTgsIDB4MTMsIDB4MTAsIDB4NEMsIDB4ODQsIDB4MzIsIDB4MDEsCisweEU4LCAweDA0LCAweEE4LCAweDEzLCAweEEwLCAweDRFLCAweDgwLCAweDNCLCAweDAxLCAweEVBLCAweDA0LCAweEE5LCAweDAzLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDNCwgMHgxMCwgMHgxMiwgMHgwMywKKzB4MDgsIDB4OEMsIDB4MjAsIDB4MzIsIDB4ODAsIDB4QzQsIDB4MDgsIDB4MDIsIDB4MDMsIDB4MDgsIDB4MEMsIDB4MjAsIDB4MzEsCisweDgyLCAweEMwLCAweDE4LCAweDAyLCAweDAzLCAweDA4LCAweDBDLCAweDIwLCAweDMxLCAweDgwLCAweEMwLCAweDE4LCAweDAyLAorMHgwMywgMHgwOCwgMHgwQywgMHgyMCwgMHgzMSwgMHg4MiwgMHhDMCwgMHgxOCwgMHgwMiwgMHgwMywgMHgwOCwgMHgwQywgMHgyMCwKKzB4MzAsIDB4ODYsIDB4QzAsIDB4MDAsIDB4MDIsIDB4MjMsIDB4MDgsIDB4MEMsIDB4MjAsIDB4MzEsIDB4ODQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEYyLCAweEZGLCAweENCLAorMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwgMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwKKzB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsIDB4RkYsIDB4QkYsIDB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsCisweENCLCAweEZGLCAweDJGLCAweEZGLCAweEJGLCAweEZDLCAweEZGLCAweEYyLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEZGLAorMHhCRiwgMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhCNCwgMHhERiwgMHhEMCwgMHg2QywgMHg0MywgMHhCMywgMHgwRCwKKzB4RUQsIDB4QkYsIDB4MzQsIDB4RkIsIDB4RDIsIDB4RkUsIDB4Q0IsIDB4RkYsIDB4MEQsIDB4Q0QsIDB4QkUsIDB4N0MsIDB4REIsCisweEYwLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEVELCAweEJGLCAweDdDLCAweERCLCAweEYwLCAweEZGLCAweENCLCAweEZGLAorMHgyRiwgMHhDRCwgMHhCRSwgMHg3QywgMHhEQiwgMHhGMCwgMHhGRiwgMHhDQiwgMHhCNywgMHgyRiwgMHhERiwgMHgzNiwgMHg3QywKKzB4REIsIDB4RjAsIDB4NkQsIDB4NDMsIDB4QjMsIDB4MkYsIDB4RUQsIDB4MzcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweENDLCAweDNGLCAweDMyLCAweEYzLCAweEM4LCAweENDLCAweDIzLCAweEYzLAorMHhCRiwgMHhDQywgMHhGQywgMHgzMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyMywgMHgzMywgMHhCRiwgMHhGQywgMHgzQywgMHhGMiwKKzB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsIDB4RjMsIDB4QkYsIDB4RkMsIDB4M0MsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsCisweDMzLCAweEJGLCAweEZDLCAweDNDLCAweEYyLCAweEZGLCAweENCLCAweENGLCAweDJGLCAweDNGLCAweDhGLCAweEZDLCAweDNDLAorMHhGMiwgMHhGMywgMHhDOCwgMHhDQywgMHgyRiwgMHhGMywgMHg4RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4REMsIDB4NzgsIDB4NzIsIDB4NjMsIDB4NDgsIDB4RUMsIDB4MjEsIDB4QjEsIDB4OUYsCisweERDLCAweDdFLCAweDEyLCAweDdCLCAweDQ4LCAweDhDLCAweDIxLCAweEI3LCAweDg3LCAweEM0LCAweDdFLCAweDEyLCAweDYzLAorMHg0OCwgMHg4QywgMHgyMSwgMHgzNywgMHg4NiwgMHhDNCwgMHg3RSwgMHgxMiwgMHg2MywgMHg0OCwgMHg4QywgMHgyMSwgMHhCNywKKzB4ODcsIDB4QzQsIDB4N0UsIDB4MTIsIDB4NjMsIDB4NDgsIDB4OEMsIDB4MjEsIDB4QjEsIDB4OUYsIDB4QzQsIDB4MTgsIDB4MTIsCisweDdCLCAweDQ4LCAweDhDLCAweDI3LCAweDM3LCAweDlFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwRSwgMHgwMiwgMHgzOSwgMHgwQSwgMHhFNCwgMHgyMCwgMHg5MCwgMHg4MywKKzB4MDAsIDB4MEUsIDB4MDIsIDB4MzksIDB4MDgsIDB4RTAsIDB4MjAsIDB4ODAsIDB4ODMsIDB4NDAsIDB4MEUsIDB4MDIsIDB4MzksCisweDA4LCAweEU0LCAweDIwLCAweDkwLCAweDgzLCAweDAwLCAweDBFLCAweDAyLCAweDM4LCAweDBBLCAweEU0LCAweDIwLCAweDgwLAorMHg4MywgMHg0MCwgMHgwRSwgMHgwMiwgMHgzOCwgMHgwNiwgMHhFNiwgMHgyMCwgMHg5MCwgMHhBMywgMHg0MCwgMHgwRSwgMHgwMiwKKzB4MzksIDB4MDgsIDB4RTQsIDB4MjgsIDB4OTAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDIwLCAweDYwLCAweDhFLCAweDAwLCAweDNBLCAweDAyLCAweEVBLCAweDA4LCAweEEwLCAweDIzLCAweEEwLAorMHg4RSwgMHgwMCwgMHgzQSwgMHgwMiwgMHhFQSwgMHgwOCwgMHhCOCwgMHgyMywgMHhBMCwgMHg4RSwgMHgwMCwgMHgzQSwgMHgwMiwKKzB4RTgsIDB4MDgsIDB4QTAsIDB4MjMsIDB4QTAsIDB4OEUsIDB4ODAsIDB4M0EsIDB4MDIsIDB4RUEsIDB4MDgsIDB4QTgsIDB4MjMsCisweEEwLCAweDhFLCAweDgwLCAweDNBLCAweDAyLCAweEVFLCAweDA4LCAweEE4LCAweDIzLCAweEEwLCAweDhFLCAweDgwLCAweDNBLAorMHgwMiwgMHhFQSwgMHgwOCwgMHhBOCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDAsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDYsIDB4NDgsIDB4MTAsIDB4MjAsIDB4NDEsIDB4ODAsIDB4MDQsCisweDAxLCAweDEyLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLCAweDQxLCAweDgwLCAweDA0LCAweDAxLCAweDEyLCAweDA0LCAweDQ4LAorMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwgMHgwNCwgMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwKKzB4MDQsIDB4MDEsIDB4MTIsIDB4MDYsIDB4NDgsIDB4MTAsIDB4MjAsIDB4NjEsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDQsCisweDQ4LCAweDE4LCAweDIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgxOCwgMHgwMCwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MTgsIDB4MDAsIDB4NjIsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NjAsIDB4MDAsCisweDgwLCAweDAxLCAweDI4LCAweDA2LCAweDgwLCAweDE4LCAweDAyLCAweDYwLCAweDAwLCAweDg4LCAweDAxLCAweDAwLCAweDA2LAorMHg4MCwgMHgxOCwgMHgwMCwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOCwgMHgwMCwgMHg2MCwKKzB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDIwLCAweDRFLCAweDAwLCAweDM4LCAweDA1LCAweEUyLCAweDA0LCAweDgwLCAweDEzLCAweDIwLCAweDRFLCAweDAwLCAweDM4LAorMHgwOSwgMHhFMiwgMHgwNCwgMHg4OCwgMHgxMywgMHgyMCwgMHg0RSwgMHgwMCwgMHgzOCwgMHgwMSwgMHhFMCwgMHgwNCwgMHg4MCwKKzB4MTMsIDB4MjAsIDB4NEUsIDB4ODIsIDB4MzgsIDB4MDUsIDB4RTIsIDB4MDQsIDB4ODgsIDB4MTIsIDB4MjAsIDB4NEUsIDB4ODAsCisweDM4LCAweEExLCAweEUyLCAweDA0LCAweDI4LCAweDUxLCAweDIwLCAweDRFLCAweDgwLCAweDMwLCAweDAxLCAweEUyLCAweDE0LAorMHg4OCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsCisweDYwLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA2LCAweDgwLCAweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDg4LCAweDgxLAorMHgwMCwgMHgwNiwgMHgwMiwgMHgxOCwgMHgwMCwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOCwKKzB4MDAsIDB4NjAsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDgsIDB4MTAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODAsCisweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDIwLCAweDI0LAorMHg4MCwgMHg5MCwgMHgwMSwgMHg0MiwgMHgwMiwgMHgwOCwgMHgyOSwgMHgyMCwgMHgyNCwgMHg4MCwgMHg5MCwgMHgwMiwgMHg0MiwKKzB4MDIsIDB4MDgsIDB4MTEsIDB4MjAsIDB4MjQsIDB4ODAsIDB4OTAsIDB4MDAsIDB4NDIsIDB4MDIsIDB4MDgsIDB4MDksIDB4MjAsCisweEE0LCAweDgwLCAweDkwLCAweDAxLCAweDQyLCAweDAyLCAweDA4LCAweDExLCAweDIwLCAweEE0LCAweDgwLCAweDkwLCAweDAxLAorMHg0MiwgMHgwNCwgMHgwOCwgMHgzOSwgMHgyMCwgMHg0NCwgMHg4MCwgMHgxOCwgMHgwMSwgMHg0MiwgMHgwNiwgMHgwOCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzQsIDB4MDAsIDB4MTIsIDB4ODEsCisweDQ4LCAweDA1LCAweDIyLCAweDExLCAweDg4LCAweDQ0LCAweDAwLCAweDEyLCAweDgxLCAweDQ4LCAweDA0LCAweDIwLCAweDMxLAorMHg4MCwgMHg1NCwgMHgyMCwgMHgxMiwgMHg4MSwgMHg0OCwgMHgwNCwgMHgyMiwgMHgxMSwgMHg4OCwgMHhDNCwgMHgwMCwgMHgxMiwKKzB4MDMsIDB4NDgsIDB4MEQsIDB4MjIsIDB4MTEsIDB4ODAsIDB4NTQsIDB4MjAsIDB4MTIsIDB4MDEsIDB4NDgsIDB4MDUsIDB4MjAsCisweDE1LCAweDg4LCAweDU0LCAweDIwLCAweDUyLCAweDgxLCAweDY4LCAweDBELCAweDIyLCAweDFELCAweDg4LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMywgMHgzMCwgMHgwMCwgMHhDOCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MzAsIDB4MDAsIDB4Q0EsIDB4MDAsIDB4MjAsIDB4MDMsIDB4QTAsIDB4MEMsIDB4MDAsCisweDMyLCAweDAwLCAweEMwLCAweDAyLCAweDAwLCAweDAzLCAweDAwLCAweDBDLCAweDAwLCAweDMwLCAweDAwLCAweENBLCAweDAwLAorMHgyOCwgMHgwMywgMHg4MCwgMHgwQywgMHg4MCwgMHgzMiwgMHgwMCwgMHhDQSwgMHgwMCwgMHgyOCwgMHgwMywgMHhBMCwgMHgwQywKKzB4ODAsIDB4NzIsIDB4MDAsIDB4Q0EsIDB4MDAsIDB4MjgsIDB4MDMsIDB4ODAsIDB4MUMsIDB4ODAsIDB4MDIsIDB4MDgsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDA4LCAweDIwLCAweDJDLCAweDAwLCAweDkwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwMCwgMHg3OCwgMHgwMCwgMHgyNiwgMHgwMCwgMHg5MCwgMHgwMywgMHg2MCwgMHgwMiwgMHgwOCwgMHgwMywKKzB4MDAsIDB4MjAsIDB4MDAsIDB4OTAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4MDAsIDB4MTksIDB4MDAsIDB4RTIsIDB4MDAsIDB4ODgsCisweDAwLCAweDgwLCAweDA2LCAweDgwLCAweDAwLCAweDAwLCAweEUyLCAweDAxLCAweDg4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLAorMHgyOCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHg4MCwgMHgwQSwgMHg4MCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDMsIDB4MDIsIDB4NDAsIDB4MDgsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDQsCisweDAwLCAweDE4LCAweDAwLCAweDQwLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLAorMHgwMCwgMHg4MiwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4ODQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMywgMHgwMiwgMHgyMCwgMHgwNiwgMHg4MCwgMHgxMCwgMHgwMCwgMHg0MiwgMHgwMCwKKzB4MDgsIDB4MDEsIDB4NjAsIDB4MDYsIDB4ODAsIDB4MTAsIDB4MDAsIDB4NjYsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MjAsIDB4MDQsCisweDgwLCAweDEwLCAweDAwLCAweDQyLCAweDAwLCAweDA4LCAweDAxLCAweDQwLCAweDA2LCAweDgwLCAweDE5LCAweDAwLCAweDYyLAorMHgwMCwgMHg5OCwgMHgwMSwgMHgyMCwgMHgwNiwgMHg4MCwgMHgxOSwgMHgwMCwgMHg2MiwgMHgwMCwgMHg4OCwgMHgwMSwgMHgyMCwKKzB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsIDB4NjIsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA4LCAweDgwLCAweDAyLCAweDAwLCAweDA2LCAweDAwLCAweDE5LCAweDAwLCAweDY0LCAweDAwLCAweDkwLAorMHgxMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOSwgMHgwMSwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHg0MCwgMHgwNiwgMHgwMCwKKzB4MTksIDB4MDAsIDB4NjQsIDB4MDAsIDB4OTAsIDB4MTEsIDB4MDAsIDB4NDYsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NjQsIDB4MDQsCisweDgwLCAweDAxLCAweDQwLCAweDQ2LCAweDAwLCAweDE4LCAweDAwLCAweDY2LCAweDAwLCAweDkwLCAweDAxLCAweDQwLCAweDA2LAorMHgwMCwgMHgxOSwgMHgwMCwgMHg2NCwgMHgwMCwgMHg5MCwgMHg0MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDIsIDB4QTIsIDB4NDIsIDB4NjAsIDB4MEMsIDB4MDEsIDB4MzAsIDB4MDQsIDB4QzIsIDB4MTAsIDB4MDAsIDB4NDMsCisweDIwLCAweDBDLCAweDAxLCAweDMwLCAweDA0LCAweEMyLCAweDEwLCAweDE4LCAweDQzLCAweDIwLCAweDBDLCAweDAxLCAweDMwLAorMHgwNCwgMHhDMCwgMHgxMCwgMHgwMCwgMHg0MywgMHgyMCwgMHgwQywgMHg4MSwgMHgzMCwgMHgwNCwgMHhDMiwgMHgxMCwgMHgwOCwKKzB4NDMsIDB4MjAsIDB4MEMsIDB4ODEsIDB4MzAsIDB4MDQsIDB4QzIsIDB4MTAsIDB4MDgsIDB4NDMsIDB4MjAsIDB4MEMsIDB4ODEsCisweDMwLCAweDA0LCAweEMyLCAweDEwLCAweDA4LCAweDAzLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMiwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0QywgMHgwMCwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwNCwgMHgwMCwgMHgwMywgMHgwMCwKKzB4NEMsIDB4MDAsIDB4MzAsIDB4MDAsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDEsCisweEMwLCAweDA0LCAweDAwLCAweDAzLCAweDAwLCAweDBDLCAweDAwLCAweDMwLCAweDAwLCAweEMwLCAweDAwLCAweDAwLCAweDAzLAorMHgwMCwgMHgwQywgMHgwMCwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwQywgMHgwMCwgMHgzMCwKKzB4MDAsIDB4QzAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDAwLCAweEQwLCAweDAwLCAweDRDLCAweDAzLCAweDMwLCAweDA0LCAweEMwLCAweDM0LCAweDAwLCAweEMzLCAweDIwLCAweDRDLAorMHgwMywgMHgzMCwgMHgwQywgMHhDMiwgMHgzNCwgMHgwMCwgMHg0MywgMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwKKzB4MzQsIDB4MDAsIDB4QzMsIDB4MjAsIDB4MEMsIDB4ODMsIDB4MzAsIDB4MDQsIDB4QzAsIDB4MzAsIDB4MDgsIDB4NDMsIDB4MDAsCisweDBDLCAweDgzLCAweDMwLCAweDA0LCAweEMyLCAweDEwLCAweDAwLCAweDQzLCAweDAwLCAweDBDLCAweDAxLCAweDMwLCAweDA0LAorMHhDMCwgMHgxMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMiwKKzB4QzIsIDB4MjAsIDB4MEUsIDB4MDMsIDB4MTAsIDB4MDQsIDB4NjIsIDB4MzAsIDB4MDAsIDB4QzEsIDB4MjAsIDB4MDYsIDB4MDMsCisweDEwLCAweDBDLCAweDYyLCAweDMwLCAweDg4LCAweDQzLCAweDIwLCAweDA2LCAweDAzLCAweDE4LCAweDBDLCAweDQwLCAweDMwLAorMHgwMCwgMHhDMSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxOCwgMHgwNCwgMHg2MiwgMHgzMCwgMHg4OCwgMHg0MSwgMHgyMCwgMHgwNiwKKzB4ODMsIDB4MTgsIDB4MDQsIDB4NjAsIDB4MTAsIDB4ODgsIDB4NDEsIDB4MjAsIDB4MDYsIDB4ODEsIDB4MTgsIDB4MDQsIDB4NjIsCisweDEwLCAweDg4LCAweDAxLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDgwLCAweDQyLAorMHgwMCwgMHgwNiwgMHg4MSwgMHgxMCwgMHgwNCwgMHg0MCwgMHgxMCwgMHgwOCwgMHg0MSwgMHgwMCwgMHgwQywgMHg4MSwgMHgxMCwKKzB4MDQsIDB4QzAsIDB4MTAsIDB4ODAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4ODEsIDB4MTAsIDB4MDQsIDB4NDIsIDB4MTAsIDB4MDgsCisweDQxLCAweDAwLCAweDA4LCAweDAxLCAweDMwLCAweDA0LCAweDQwLCAweDEwLCAweDAwLCAweDQzLCAweDAwLCAweDA0LCAweDAxLAorMHgzMCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxMCwgMHgwNCwgMHg0MCwgMHgxMCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEEsIDB4ODAsIDB4NDIsIDB4MjAsCisweDA0LCAweDgxLCAweDEwLCAweDA0LCAweDYyLCAweDEwLCAweDA4LCAweDQxLCAweDIwLCAweDBDLCAweDgxLCAweDEwLCAweDA0LAorMHhDMiwgMHgxMCwgMHgwOCwgMHg0MSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxMCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwOCwgMHg0MSwKKzB4MjAsIDB4MEMsIDB4ODMsIDB4MzAsIDB4MDQsIDB4NjIsIDB4MTAsIDB4MDgsIDB4NDMsIDB4MjAsIDB4MDYsIDB4ODEsIDB4MzAsCisweDA0LCAweDYyLCAweDEwLCAweDg4LCAweDQxLCAweDIwLCAweDA2LCAweDgxLCAweDE4LCAweDA0LCAweDYyLCAweDEwLCAweDg4LAorMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMiwgMHgwMiwgMHgwMCwgMHgwOCwKKzB4ODAsIDB4MDAsIDB4MDAsIDB4QTIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsCisweDAwLCAweDAwLCAweDAyLCAweDIwLCAweDBBLCAweDgwLCAweDIwLCAweDAwLCAweDgyLCAweDAwLCAweDA4LCAweDAyLCAweDAwLAorMHgwOCwgMHgwMCwgMHgyMCwgMHgwMCwgMHhBMiwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyMCwgMHgwQSwgMHgwMCwgMHgyMCwgMHgwMCwKKzB4QTAsIDB4MDAsIDB4ODgsIDB4MDIsIDB4MjAsIDB4MEEsIDB4ODAsIDB4MjgsIDB4MDAsIDB4QTIsIDB4MDAsIDB4ODgsIDB4NDIsCisweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDYwLCAweDAwLCAweDgyLCAweDAxLAorMHgwOCwgMHgwNiwgMHgyMCwgMHgxOCwgMHg4MCwgMHg2MCwgMHgwMCwgMHg4MiwgMHgwMSwgMHgwOCwgMHgwNiwgMHgyMCwgMHgxOCwKKzB4ODAsIDB4NjAsIDB4MDAsIDB4ODIsIDB4MDEsIDB4MDgsIDB4MDYsIDB4MjAsIDB4MTgsIDB4ODAsIDB4NjAsIDB4MDAsIDB4ODIsCisweDAxLCAweDA4LCAweDA2LCAweDIwLCAweDE4LCAweDgwLCAweDYwLCAweDAwLCAweDgyLCAweDAxLCAweDA4LCAweDA2LCAweDIwLAorMHgxOCwgMHg4MCwgMHg2MCwgMHgwMCwgMHg4MiwgMHgwMSwgMHgyOCwgMHgwNiwgMHgyMCwgMHgxOCwgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4NDAsIDB4QTAsIDB4MDAsIDB4MDEsIDB4MDIsCisweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQxLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDQ4LCAweDEwLCAweDI4LAorMHg0MCwgMHg4MCwgMHgwNCwgMHgwMSwgMHgwMiwgMHgwNCwgMHg0OCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwKKzB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsCisweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMiwgMHg2MiwgMHhDMCwgMHg4QSwgMHg4MSwgMHgyQiwgMHgwNiwKKzB4QUMsIDB4MTgsIDB4QjgsIDB4NjIsIDB4QzAsIDB4OEEsIDB4ODEsIDB4MkIsIDB4MDYsIDB4QUMsIDB4MTgsIDB4QjAsIDB4NjIsCisweEMwLCAweDhBLCAweDgxLCAweDJCLCAweDA2LCAweEFFLCAweDE4LCAweEI4LCAweDYyLCAweEMwLCAweDhBLCAweDAxLCAweDJCLAorMHgwNiwgMHhBQywgMHgxOCwgMHhCMCwgMHg2MiwgMHhDMCwgMHg4QSwgMHgwMSwgMHgyQiwgMHgwNiwgMHhBQywgMHgxOCwgMHhCMCwKKzB4NjIsIDB4QzAsIDB4OEEsIDB4MDEsIDB4MjksIDB4MDYsIDB4QUMsIDB4MTgsIDB4QjAsIDB4MDIsIDB4ODgsIDB4MEEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDYyLCAweDIwLCAweDhFLCAweDgxLCAweDM4LCAweDA2LCAweEUyLAorMHgxOCwgMHg4OCwgMHg2MywgMHg2MCwgMHg4RSwgMHg4MSwgMHgzOCwgMHgwNiwgMHhFNiwgMHgxOCwgMHg4OCwgMHg2MywgMHgyMCwKKzB4OEUsIDB4ODEsIDB4MzgsIDB4MDYsIDB4RTIsIDB4MTgsIDB4ODgsIDB4NjMsIDB4NTAsIDB4OEUsIDB4ODEsIDB4MzksIDB4MDYsCisweEUyLCAweDE4LCAweDk4LCAweDYzLCAweDIwLCAweDhFLCAweDgxLCAweDM5LCAweDA0LCAweEUyLCAweDE4LCAweDg4LCAweDYzLAorMHgyMCwgMHg4RSwgMHg4MSwgMHgzQSwgMHgwNiwgMHhFMiwgMHgxOCwgMHg4OCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODAsIDB4NjIsIDB4MDAsIDB4OEUsIDB4MDEsIDB4M0IsIDB4MDYsIDB4RTQsIDB4MTgsCisweEIwLCAweDYzLCAweDAwLCAweDhFLCAweDAxLCAweDM5LCAweDA2LCAweEUwLCAweDE4LCAweDgwLCAweDYzLCAweDQwLCAweDhFLAorMHgwMSwgMHgzOSwgMHgwNiwgMHhFQywgMHgxOCwgMHhCMCwgMHg2MywgMHg4MCwgMHg4RSwgMHgwMSwgMHgzOCwgMHgwNiwgMHhFNCwKKzB4MTgsIDB4ODAsIDB4NjMsIDB4NDAsIDB4OEUsIDB4MDEsIDB4MzgsIDB4MDYsIDB4RTQsIDB4MTgsIDB4OTAsIDB4NjMsIDB4NDAsCisweDBFLCAweDAxLCAweDM5LCAweDA2LCAweEU0LCAweDE4LCAweDkwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwQSwgMHhBMiwgMHg2MiwgMHg2MCwgMHg4QywgMHgwMSwgMHgzMCwgMHgwNiwgMHhFQSwgMHgxOCwgMHg4MCwKKzB4NjMsIDB4MjAsIDB4OEMsIDB4MDEsIDB4MzAsIDB4MDYsIDB4QzIsIDB4MTgsIDB4MTgsIDB4NjMsIDB4QTAsIDB4OEUsIDB4MDEsCisweDMwLCAweDA2LCAweEMwLCAweDE4LCAweDAwLCAweDYzLCAweDIwLCAweDhFLCAweDgxLCAweDMwLCAweDA2LCAweEVBLCAweDE4LAorMHgwOCwgMHg2MywgMHhBMCwgMHg4RSwgMHg4MSwgMHgzMCwgMHgwNiwgMHhFQSwgMHgxOCwgMHhBOCwgMHg2MywgMHhBMCwgMHg4RSwKKzB4ODEsIDB4M0EsIDB4MDYsIDB4RUEsIDB4MTgsIDB4QTgsIDB4NDMsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAyLCAweDAwLCAweDQ4LCAweDAwLCAweDI0LCAweDAxLCAweDlBLCAweDA0LCAweDQ4LCAweDEyLCAweDIwLCAweDQ5LAorMHg4MCwgMHgyRSwgMHgwMSwgMHg5MCwgMHgwNCwgMHhFOCwgMHgxMiwgMHgwMCwgMHg0OSwgMHg4MCwgMHgyNCwgMHgwMSwgMHg5MCwKKzB4MDQsIDB4NjgsIDB4MTIsIDB4QTAsIDB4NDEsIDB4ODAsIDB4MkMsIDB4MDEsIDB4QkEsIDB4MDQsIDB4NDgsIDB4MTAsIDB4QTAsCisweDQzLCAweDgwLCAweDI0LCAweDAxLCAweEJBLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLCAweDQ5LCAweDgwLCAweDA0LCAweDAxLAorMHg5MiwgMHgwNCwgMHg0OCwgMHgxMiwgMHgyMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODQsIDB4MDEsIDB4MTAsIDB4MDYsIDB4NjAsIDB4MTgsIDB4MDAsIDB4NjEsIDB4MjAsCisweDg2LCAweDAxLCAweDEwLCAweDA2LCAweDYyLCAweDE4LCAweDAwLCAweDYxLCAweDAwLCAweDg2LCAweDAxLCAweDEwLCAweDA2LAorMHg0MCwgMHgxOCwgMHgwMCwgMHg2MSwgMHgyMCwgMHg4NiwgMHg4MSwgMHgxOCwgMHgwNiwgMHg2MCwgMHgxOCwgMHg4OCwgMHg2MSwKKzB4MDAsIDB4ODYsIDB4ODEsIDB4NTgsIDB4MDYsIDB4NjAsIDB4MTgsIDB4ODAsIDB4NjEsIDB4MDAsIDB4ODYsIDB4MDEsIDB4MTgsCisweDA2LCAweDYwLCAweDE4LCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhBMiwgMHgwNiwgMHgyMCwgMHgxRSwgMHgwMCwgMHg3MCwgMHgwMCwgMHhDMiwgMHgwMSwgMHgwMCwgMHgwNywgMHgyMCwgMHgxRSwKKzB4MDAsIDB4NzAsIDB4MDAsIDB4QzIsIDB4MDEsIDB4ODgsIDB4MDcsIDB4MjAsIDB4MUMsIDB4MDAsIDB4NzAsIDB4MDAsIDB4QzAsCisweDAxLCAweDAwLCAweDA3LCAweDIwLCAweDFDLCAweDgwLCAweDcwLCAweDAwLCAweEUyLCAweDAxLCAweDg4LCAweDA3LCAweDIwLAorMHgxRSwgMHg4MCwgMHg3OCwgMHgwMCwgMHhDMiwgMHgwMSwgMHg4OCwgMHgwNywgMHgyMCwgMHgxRSwgMHg4MCwgMHg3OCwgMHgwMCwKKzB4RTIsIDB4MDEsIDB4ODgsIDB4MDMsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODAsCisweDRBLCAweDAwLCAweDI2LCAweDgzLCAweDkwLCAweDA0LCAweDQwLCAweDEyLCAweDA4LCAweDQ5LCAweDAwLCAweDI2LCAweDgxLAorMHg5MCwgMHgwNCwgMHg0MCwgMHgxMiwgMHg4MCwgMHg0OSwgMHgwMCwgMHgyNCwgMHg4MSwgMHg5MCwgMHgwNCwgMHg0MiwgMHgxMiwKKzB4MDgsIDB4NDEsIDB4MDAsIDB4MjQsIDB4MDEsIDB4OTAsIDB4MDQsIDB4NjAsIDB4MTAsIDB4ODAsIDB4NDEsIDB4MDAsIDB4MjYsCisweDAxLCAweDk4LCAweDA0LCAweDQwLCAweDEwLCAweDgwLCAweDQ5LCAweDAwLCAweDA2LCAweDAxLCAweDk4LCAweDA0LCAweDYwLAorMHgxMiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHg0MiwKKzB4MjAsIDB4MDQsIDB4ODEsIDB4MTgsIDB4MDUsIDB4NjIsIDB4MTAsIDB4ODgsIDB4NDEsIDB4MjAsIDB4MDQsIDB4ODEsIDB4MTgsCisweDA0LCAweDYyLCAweDEwLCAweDA4LCAweDUxLCAweDIwLCAweDA2LCAweDgxLCAweDE4LCAweDA0LCAweDYyLCAweDEwLCAweDg4LAorMHg0MSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxOCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwOCwgMHg0MSwgMHgyMCwgMHgwNCwgMHg4MSwKKzB4MTAsIDB4MDQsIDB4NjIsIDB4MTAsIDB4MDgsIDB4NDEsIDB4MjAsIDB4MDQsIDB4ODEsIDB4MTAsIDB4MDQsIDB4NDIsIDB4MTAsCisweDA4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEyLCAweDQyLCAweDAwLAorMHgwMiwgMHg4MSwgMHgyOCwgMHgwQywgMHhBMiwgMHgzMCwgMHg4OCwgMHg0MiwgMHgwMCwgMHgwMiwgMHg4MywgMHgyOCwgMHgwQywKKzB4QTAsIDB4MTAsIDB4ODAsIDB4QzAsIDB4MjAsIDB4MEEsIDB4ODMsIDB4MjgsIDB4MEMsIDB4QTIsIDB4MzAsIDB4ODgsIDB4QzIsCisweDAwLCAweDBBLCAweDAzLCAweDI4LCAweDA0LCAweDIyLCAweDEwLCAweDgwLCAweDQwLCAweDIwLCAweDAyLCAweDAxLCAweDA4LAorMHgwNCwgMHhBMiwgMHgxMCwgMHg4OCwgMHg0MCwgMHgyMCwgMHgwMiwgMHg4MSwgMHgwOCwgMHgwNCwgMHgyMiwgMHgxMCwgMHg4OCwKKzB4MDAsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MEEsCisweDAxLCAweDI4LCAweDA1LCAweEEwLCAweDEwLCAweDgwLCAweEMyLCAweDAwLCAweDBBLCAweDAzLCAweDI4LCAweDBDLCAweEEwLAorMHgxMCwgMHg4MCwgMHg1MiwgMHgwMCwgMHgwQSwgMHgwMSwgMHgyOCwgMHgwNCwgMHhBMCwgMHgxMCwgMHg4MCwgMHhDMiwgMHgwMCwKKzB4MEEsIDB4MDMsIDB4MjgsIDB4MEMsIDB4QTAsIDB4MzAsIDB4ODAsIDB4QzIsIDB4MDAsIDB4MEEsIDB4MDMsIDB4MjgsIDB4MEMsCisweDgwLCAweDMwLCAweDgwLCAweEMyLCAweDAwLCAweDBBLCAweDAzLCAweDI4LCAweDA0LCAweEEwLCAweDMwLCAweDgwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgxMCwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDgsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODAsIDB4MTEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDQsCisweDg4LCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAyLAorMHgwMCwgMHgwOCwgMHgwMSwgMHgyMCwgMHgwNCwgMHg4MCwgMHgxMCwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwOCwgMHgwMCwgMHg4MCwKKzB4MDQsIDB4ODAsIDB4MTAsIDB4MDAsIDB4NDIsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEyLCAweDQyLCAweDQwLCAweDAwLCAweDgxLCAweDAxLAorMHgwNCwgMHgwNCwgMHgxMCwgMHgxOCwgMHg0MCwgMHg0MCwgMHgwMCwgMHg4MywgMHgwMSwgMHgwNSwgMHgwNCwgMHgxMCwgMHgxMCwKKzB4NDAsIDB4NDAsIDB4MDAsIDB4ODEsIDB4MDEsIDB4MDQsIDB4MDYsIDB4MTAsIDB4MTgsIDB4NTAsIDB4NDAsIDB4NDAsIDB4MDEsCisweDAxLCAweDBDLCAweDA0LCAweDEwLCAweDEwLCAweDQwLCAweDQwLCAweDAwLCAweDAxLCAweDAxLCAweDA1LCAweDg0LCAweDEwLAorMHgxMCwgMHg0MCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwNCwgMHgxMCwgMHgxMCwgMHgwMCwgMHg4OCwgMHgwQSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4MjAsIDB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsCisweDYyLCAweDAwLCAweDg4LCAweDAxLCAweDYwLCAweDA2LCAweDgwLCAweDE4LCAweDAwLCAweDY2LCAweDAwLCAweDg4LCAweDAxLAorMHgyMCwgMHgwNiwgMHg4MCwgMHgxOCwgMHgwMCwgMHg2MiwgMHgwMCwgMHg4OCwgMHgwMSwgMHg2MCwgMHgwNiwgMHg4MCwgMHgxOSwKKzB4MDAsIDB4NjIsIDB4MDAsIDB4OTgsIDB4MDEsIDB4MjAsIDB4MDYsIDB4ODAsIDB4MTksIDB4MDAsIDB4NjIsIDB4MDAsIDB4ODgsCisweDAxLCAweDIwLCAweDA2LCAweDgwLCAweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHgwMiwgMHgwMCwgMHgyNCwgMHgwMCwgMHg5OSwgMHgwMCwgMHg2NCwKKzB4MDIsIDB4MTAsIDB4MDksIDB4MDAsIDB4MkUsIDB4MDAsIDB4OTEsIDB4MDAsIDB4RTAsIDB4MDAsIDB4MDAsIDB4MDksIDB4NDAsCisweDI2LCAweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDA5LCAweDAwLCAweDJFLCAweDAwLCAweEI4LCAweDAwLAorMHg2NCwgMHgwMCwgMHg4MCwgMHgwQiwgMHg0MCwgMHgyNiwgMHgwMCwgMHhCOCwgMHgwMCwgMHg2NCwgMHgwMiwgMHg5OCwgMHgwOSwKKzB4NDAsIDB4MjYsIDB4MDAsIDB4OTksIDB4MDAsIDB4NjQsIDB4MDAsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEyLCAweDA2LCAweDYwLCAweDE0LCAweDAwLCAweDUwLCAweDAwLCAweEMyLCAweDAxLAorMHgwMCwgMHgwNSwgMHgyMCwgMHgxNiwgMHgwMCwgMHg1MCwgMHgwMCwgMHg2MiwgMHgwMSwgMHgxOCwgMHgwNSwgMHgyMCwgMHgxQywKKzB4MDAsIDB4NTAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MjAsIDB4MTYsIDB4ODAsIDB4NTgsIDB4MDAsIDB4QzIsCisweDAxLCAweDg4LCAweDA1LCAweDI4LCAweDFDLCAweDgwLCAweDU4LCAweDAwLCAweEMyLCAweDAxLCAweDA4LCAweDA3LCAweDIwLAorMHgxQywgMHg4MCwgMHg3MCwgMHgwOCwgMHhDMiwgMHgwMSwgMHgwOCwgMHgwMywgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4QzAsIDB4MjAsIDB4MDAsCisweEExLCAweDAwLCAweDA0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDgxLCAweDAwLCAweDBDLCAweDAyLAorMHgxMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwQSwgMHhDMCwgMHgyMCwKKzB4MDAsIDB4QTEsIDB4MDAsIDB4OEMsIDB4MDIsIDB4MTAsIDB4MDgsIDB4QzAsIDB4MjgsIDB4MDAsIDB4RTMsIDB4MDAsIDB4MUMsCisweDAyLCAweDMwLCAweDBBLCAweEMwLCAweDIwLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwMCwgMHgyMCwgMHgwMCwgMHhBNCwgMHgwMCwgMHg5MCwgMHgwMiwgMHhDMCwgMHgwQSwgMHgwMCwgMHhBOSwKKzB4MjAsIDB4QUMsIDB4MDAsIDB4QjAsIDB4MEEsIDB4QzIsIDB4MDgsIDB4MDAsIDB4MjksIDB4MDAsIDB4QUMsIDB4MDAsIDB4QjAsCisweDAyLCAweEMwLCAweDBBLCAweDAwLCAweEFCLCAweDIwLCAweEFDLCAweDgyLCAweEIwLCAweDA2LCAweEMwLCAweDI4LCAweDA4LAorMHhBQiwgMHgwMCwgMHhBQywgMHg4MiwgMHhCMCwgMHgwQSwgMHhDMCwgMHgzQSwgMHgwOCwgMHhBQiwgMHgwMCwgMHhBQywgMHgwMiwKKzB4QjAsIDB4MEUsIDB4QzAsIDB4MjgsIDB4MDAsIDB4NDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAyLCAweEEyLCAweEMyLCAweDIwLCAweDA2LCAweDAzLCAweDE4LCAweDBDLCAweDYyLCAweDMwLCAweDgwLCAweEUxLCAweDIwLAorMHgwNiwgMHgwMywgMHgxOCwgMHgwQywgMHg2MiwgMHgzMCwgMHg4OCwgMHhDMSwgMHgyMCwgMHgwNiwgMHgwMywgMHgxOCwgMHgwQywKKzB4NjAsIDB4MzAsIDB4ODAsIDB4QzEsIDB4MjAsIDB4MDYsIDB4ODMsIDB4MTgsIDB4MEUsIDB4NjIsIDB4MzAsIDB4ODgsIDB4RTEsCisweDIwLCAweDA2LCAweDgzLCAweDE4LCAweDBDLCAweDYyLCAweDM4LCAweDgwLCAweEUxLCAweDIwLCAweDA2LCAweDgzLCAweDE4LAorMHgwRSwgMHg2MiwgMHgzMCwgMHg4OCwgMHgwMSwgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4ODAsIDB4MDIsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MDAsIDB4MDQsCisweDgwLCAweDEwLCAweDAxLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDgwLCAweDEwLCAweDAwLCAweDQyLAorMHgwMCwgMHgwOCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4ODQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDgwLAorMHgxMiwgMHgyMiwgMHgwNiwgMHg4OCwgMHgxOCwgMHgyMCwgMHg2MiwgMHg4MCwgMHg4OCwgMHgxMSwgMHgyMCwgMHgwNiwgMHg4OCwKKzB4MTgsIDB4MjAsIDB4NjIsIDB4ODQsIDB4ODgsIDB4MDEsIDB4MjIsIDB4MDYsIDB4ODgsIDB4MTgsIDB4MjAsIDB4NjIsIDB4ODAsCisweDg4LCAweDAxLCAweDIyLCAweDA2LCAweDg4LCAweDE4LCAweDAxLCAweDYyLCAweDg0LCAweDg4LCAweDMxLCAweDIwLCAweDQ2LAorMHg4MCwgMHgxOCwgMHgyMCwgMHg2MiwgMHgwNCwgMHg4MCwgMHgxMSwgMHgyMCwgMHg0NiwgMHg4OCwgMHgxOCwgMHgwMSwgMHg2MiwKKzB4ODQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTIsIDB4MDIsCisweDAyLCAweDBBLCAweDg4LCAweDI4LCAweDIwLCAweEEyLCAweDgwLCAweDg4LCAweDIyLCAweDAwLCAweDBBLCAweDg4LCAweDI4LAorMHgwMCwgMHhBMCwgMHg4MCwgMHg4MCwgMHgwMiwgMHgyMiwgMHgwQSwgMHg4OCwgMHgyOCwgMHgyMCwgMHhBMiwgMHg4MCwgMHg4OCwKKzB4MDIsIDB4MDIsIDB4MEEsIDB4MDAsIDB4MjgsIDB4MjAsIDB4QTIsIDB4ODAsIDB4ODAsIDB4MDIsIDB4MjIsIDB4MEEsIDB4MDIsCisweDI4LCAweDIwLCAweEEyLCAweDgwLCAweDgwLCAweDAyLCAweDIwLCAweDBBLCAweDg4LCAweDI4LCAweDIwLCAweEEyLCAweDAwLAorMHg4OCwgMHgwMiwgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgxMCwgMHgwNCwKKzB4NDIsIDB4MTAsIDB4MjgsIDB4MDEsIDB4QTAsIDB4MDQsIDB4ODEsIDB4MTIsIDB4MDQsIDB4NDIsIDB4MTAsIDB4MjgsIDB4NDEsCisweEEwLCAweDA0LCAweDgxLCAweDEwLCAweDA0LCAweDRBLCAweDEwLCAweDI4LCAweDQxLCAweEEwLCAweDA0LCAweDgxLCAweDEyLAorMHgwNCwgMHg0QSwgMHgxMCwgMHgyOCwgMHgwMSwgMHgyMCwgMHgwNCwgMHg4MSwgMHgxMCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwOCwKKzB4MDEsIDB4QTAsIDB4MDQsIDB4ODEsIDB4MTAsIDB4MDAsIDB4NDIsIDB4MTAsIDB4MDgsIDB4NDEsIDB4MjAsIDB4MDQsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweEEwLCAweDQwLAorMHgwMSwgMHgwMCwgMHgwNSwgMHgwOCwgMHgxNCwgMHgwMCwgMHg1MCwgMHg4MCwgMHg0MCwgMHgwMSwgMHgwMiwgMHgwNSwgMHgwMCwKKzB4MTQsIDB4MjgsIDB4NTAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MTQsIDB4MjAsIDB4NTAsIDB4MDAsCisweDQwLCAweDAxLCAweDAwLCAweDg1LCAweDA4LCAweDM0LCAweDIwLCAweDUwLCAweDgwLCAweDQwLCAweDAzLCAweDAyLCAweDA1LAorMHgwMCwgMHgxNCwgMHgyMCwgMHg1MCwgMHg4MCwgMHg0MCwgMHgwMSwgMHgwMiwgMHgwNSwgMHgwOCwgMHgxNCwgMHgyMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODIsIDB4QjIsIDB4QzAsIDB4Q0EsIDB4ODIsCisweDIxLCAweDBCLCAweEE0LCAweDJDLCAweDE4LCAweEIyLCAweEMwLCAweENBLCAweDAyLCAweDI4LCAweDBCLCAweDg0LCAweDJDLAorMHhCMCwgMHhCMiwgMHg0MCwgMHhDOCwgMHg4MiwgMHgyMSwgMHgwQiwgMHg4NiwgMHgyQywgMHg4MCwgMHhCMiwgMHg0MCwgMHhDOCwKKzB4MDIsIDB4MjEsIDB4MEIsIDB4QUMsIDB4MkMsIDB4QjAsIDB4QjIsIDB4QzAsIDB4Q0EsIDB4MDIsIDB4MkIsIDB4MEIsIDB4ODQsCisweDJDLCAweEIwLCAweEIyLCAweEMwLCAweENBLCAweDAyLCAweDJCLCAweDBCLCAweEFDLCAweDJDLCAweEIwLCAweDAyLCAweDg4LAorMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHgxMiwgMHgyMCwgMHg0RSwgMHg4MCwgMHgzOCwKKzB4MDEsIDB4RUEsIDB4MDQsIDB4ODgsIDB4MTMsIDB4NjAsIDB4NEUsIDB4ODAsIDB4M0EsIDB4MDEsIDB4RTYsIDB4MDQsIDB4ODgsCisweDEzLCAweDIwLCAweDRFLCAweDgwLCAweDM4LCAweDAxLCAweEUyLCAweDA0LCAweEE4LCAweDEzLCAweDYwLCAweDRFLCAweDAwLAorMHgzOSwgMHgwMSwgMHhFMiwgMHgyNCwgMHg5OCwgMHgxMywgMHgyMCwgMHg0RSwgMHg4MiwgMHgzOSwgMHgwMSwgMHhFMiwgMHgwNCwKKzB4ODgsIDB4MTMsIDB4MjAsIDB4NEUsIDB4ODIsIDB4MzgsIDB4MDEsIDB4RTIsIDB4MDQsIDB4ODgsIDB4MDMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEM0LCAweDAwLCAweDAyLCAweDAzLCAweDA4LCAweDBDLAorMHgyMCwgMHgzMCwgMHg4MCwgMHhDMCwgMHgwMCwgMHgwMiwgMHgwMywgMHgwOCwgMHgwQywgMHgyMCwgMHgzMSwgMHg4MCwgMHhDMCwKKzB4MTAsIDB4MDIsIDB4MDMsIDB4MDgsIDB4MEMsIDB4MjAsIDB4MzAsIDB4ODAsIDB4QzAsIDB4MDgsIDB4MDIsIDB4MDMsIDB4MDgsCisweDBDLCAweDIwLCAweDMxLCAweDgyLCAweEMwLCAweDE4LCAweDAyLCAweDQzLCAweDA4LCAweDBDLCAweDIwLCAweDMwLCAweDg2LAorMHhDMCwgMHgwMCwgMHgwMiwgMHg2MywgMHgwOCwgMHgwQywgMHgyMSwgMHgzMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsCisweEZGLCAweEJGLCAweEZDLCAweEZGLCAweEYyLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEZGLCAweEJGLCAweEZDLCAweEZGLAorMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwgMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwKKzB4MkYsIDB4RkYsIDB4QkYsIDB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsIDB4RkYsIDB4QkYsIDB4RkMsCisweEZGLCAweEYyLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEZGLCAweEJGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM0LCAweERCLCAweEQwLCAweDZDLCAweDQzLCAweEIzLCAweDJGLCAweENELCAweDM2LAorMHhGQywgMHhERiwgMHhEMCwgMHg2QywgMHg0MywgMHhGQiwgMHgwRCwgMHhDRCwgMHgzNiwgMHgzNCwgMHhEQiwgMHhEMCwgMHg2QywKKzB4NDMsIDB4QjMsIDB4MEQsIDB4Q0QsIDB4MzYsIDB4MzQsIDB4REIsIDB4RDAsIDB4N0UsIDB4QzMsIDB4QjcsIDB4MkYsIDB4Q0QsCisweDM2LCAweDdDLCAweERCLCAweEYwLCAweDdGLCAweDQzLCAweEIzLCAweDJGLCAweERGLCAweDM2LCAweEZDLCAweEZGLCAweEQyLAorMHg2QywgMHhDMywgMHhCNywgMHgwRCwgMHhFRCwgMHhCRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4Q0MsIDB4M0MsIDB4MzIsIDB4RjMsIDB4QzgsIDB4Q0MsIDB4MkYsIDB4MzMsIDB4OEYsIDB4RkMsCisweDNGLCAweDMyLCAweEYzLCAweEM4LCAweEZDLCAweDIzLCAweDMzLCAweDhGLCAweENDLCAweDNDLCAweDMyLCAweEYzLCAweEM4LAorMHhDQywgMHgyMywgMHgzMywgMHg4RiwgMHhDQywgMHgzQywgMHgzMiwgMHhGRiwgMHhDOCwgMHhDRiwgMHgyRiwgMHgzMywgMHg4RiwKKzB4RkMsIDB4M0MsIDB4RjIsIDB4RkYsIDB4QzgsIDB4Q0MsIDB4MkYsIDB4M0YsIDB4OEYsIDB4RkMsIDB4RkYsIDB4MzIsIDB4RjMsCisweEM4LCAweENGLCAweDIzLCAweEYzLCAweEJGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhEQywgMHgxOCwgMHgxMiwgMHg2MywgMHg0OCwgMHg4QywgMHgyNywgMHgzMSwgMHg4NiwgMHhEQywgMHgxRSwKKzB4MTIsIDB4NjMsIDB4NDgsIDB4RUMsIDB4MjEsIDB4MzcsIDB4ODYsIDB4QzQsIDB4NzgsIDB4MTIsIDB4NjMsIDB4NDgsIDB4OEMsCisweDIxLCAweDMxLCAweDg2LCAweEM0LCAweDFFLCAweDEyLCAweDdCLCAweEM4LCAweDhELCAweDI3LCAweEI3LCAweDg3LCAweERDLAorMHg3RSwgMHg3MiwgMHg3QiwgMHg0OCwgMHg4QywgMHgyNywgMHhCNywgMHg5RiwgMHhEQywgMHg3RSwgMHgxMiwgMHhGQiwgMHhDOSwKKzB4OEQsIDB4MjcsIDB4QjcsIDB4OUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQwLCAweEUxLCAweDBDLCAweDg1LCAweDMzLCAweDE0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweDIxLCAweDAwLAorMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwKKzB4NTAsIDB4MDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MTQsIDB4Q0UsIDB4NTAsIDB4MDgsIDB4NDAsIDB4MjEsCisweDAwLCAweDg1LCAweDAwLCAweDE0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweEUxLCAweDBDLCAweDg1LCAweDAwLCAweDE0LAorMHgwMiwgMHg1MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsCisweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LAorMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwKKzB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsCisweDA0LCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorMHgyMSwgMHg0MCwgMHg4NCwgMHgwMCwgMHgxMSwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwKKzB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsCisweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LAorMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwKKzB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsCisweDBDLCAweDgwLCAweDMzLCAweDAwLCAweDAyLCAweDA0LCAweDA4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwKKzB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4Q0UsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsCisweDAwLCAweDAyLCAweDA0LCAweDA4LCAweDAwLCAweEUwLCAweDRDLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDAwLCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MTAsIDB4Q0MsIDB4NDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDA0LCAweDMzLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweEMxLAorMHgwQywgMHgwNCwgMHgwMCwgMHgxMCwgMHhDQywgMHg0MCwgMHgzMCwgMHgwMywgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwKKzB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4QzEsIDB4MEMsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwKKzB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLAorMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsCisweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDQwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4Q0MsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsCisweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgwNCwgMHgzMCwgMHgxMywgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDUwLCAweDIxLCAweDQwLCAweDg1LCAweDAwLCAweDE1LCAweDAyLAorMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwKKzB4NDAsIDB4ODUsIDB4MDAsIDB4MTUsIDB4MDIsIDB4NTQsIDB4MDgsIDB4NTAsIDB4MjEsIDB4NDAsIDB4ODUsIDB4MDAsIDB4MTUsCisweDAyLCAweDU0LCAweDA4LCAweDUwLCAweDIxLCAweDQwLCAweDg1LCAweDAwLCAweDE1LCAweDAyLCAweDU0LCAweDA4LCAweDUwLAorMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsCisweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLAorMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwKKzB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsCisweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwKKzB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsCisweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLAorMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwKKzB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweDA4LCAweDAwLCAweEUwLCAweDBDLCAweDgwLCAweDMzLCAweDAwLCAweENFLCAweDAwLCAweDM4LCAweDAzLAorMHhFMCwgMHgwQywgMHg4MCwgMHgzMywgMHgwMCwgMHgwMiwgMHgwMCwgMHgzOCwgMHgwMywgMHgyMCwgMHgwMCwgMHg4MCwgMHgzMywKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MzgsIDB4MDMsIDB4RTAsIDB4MEMsIDB4ODAsIDB4MzMsIDB4MDAsIDB4Q0UsIDB4MDAsIDB4MDgsCisweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDM4LCAweDAzLCAweEUwLCAweDBDLCAweDgwLAorMHgwMCwgMHgwMCwgMHhDRSwgMHgwMCwgMHgzOCwgMHg0MywgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MzMsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsCisweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLAorMHhDRSwgMHg0MCwgMHgwOCwgMHgwMCwgMHhFMSwgMHgwQywgMHg4NCwgMHgwMCwgMHgxMCwgMHhDRSwgMHg0MCwgMHgzOCwgMHgwMywKKzB4MjEsIDB4MDAsIDB4ODQsIDB4MzMsIDB4MTAsIDB4Q0UsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MzMsCisweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDIsCisweDEwLCAweDAwLCAweDQwLCAweDIwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDAwLAorMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwKKzB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LAorMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4MDAsCisweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweENDLCAweDAwLCAweDAwLAorMHgwMCwgMHhDMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHhDQywgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEYwLAorMHhGMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywKKzB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwKKzB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLAorMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLAorMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsCisweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywKKzB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLAorMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsCisweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsCisweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwKKzB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwKKzB4MDAsIDB4MTQsIDB4MDIsIDB4NTAsIDB4MDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MTQsIDB4MDIsIDB4NTAsCisweDA4LCAweDQwLCAweDIxLCAweDAwLCAweDg1LCAweDAwLCAweDE0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweDIxLCAweDAwLAorMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwKKzB4NTAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLAorMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwKKzB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsCisweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LAorMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMSwKKzB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsCisweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLAorMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwKKzB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLAorMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsCisweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDAwLCAweDA4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsCisweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwKKzB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLAorMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwKKzB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsCisweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHhDRSwgMHg1NCwKKzB4MDgsIDB4NTAsIDB4MjEsIDB4NDAsIDB4ODUsIDB4MzMsIDB4MTUsIDB4MDIsIDB4NTQsIDB4MDgsIDB4NTAsIDB4MjEsIDB4NDAsCisweDg1LCAweDAwLCAweDE1LCAweDAyLCAweDU0LCAweDM4LCAweDUzLCAweDIxLCAweDQwLCAweDg1LCAweDAwLCAweDE1LCAweDAyLAorMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwKKzB4NDAsIDB4ODUsIDB4MDAsIDB4MTUsIDB4MDIsIDB4NTQsIDB4MDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LAorMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwKKzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsCisweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLAorMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsCisweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLAorMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwKKzB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsCisweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxMCwgMHgwOCwgMHgwMCwgMHhFMCwgMHgwQywgMHg4MCwgMHgzMywgMHgwMCwgMHhDRSwgMHgwMCwgMHgzOCwgMHgwMywgMHhFMCwKKzB4MEMsIDB4ODAsIDB4MzMsIDB4MDAsIDB4Q0UsIDB4MDAsIDB4MzgsIDB4MDMsIDB4RTAsIDB4MEMsIDB4ODAsIDB4MzMsIDB4MDAsCisweDAyLCAweDAwLCAweDM4LCAweDAzLCAweEUwLCAweDBDLCAweDgwLCAweDMzLCAweDAwLCAweENFLCAweDAwLCAweDM4LCAweDAzLAorMHhFMCwgMHgwQywgMHg4MCwgMHgzMywgMHgwMCwgMHhDRSwgMHgwMCwgMHgzOCwgMHgwMywgMHgyMCwgMHgwMCwgMHg4MCwgMHgzMywKKzB4MDAsIDB4Q0UsIDB4MDAsIDB4MzgsIDB4NDMsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLAorMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwKKzB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsCisweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLAorMHgwMiwgMHg0MCwgMHgwOCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsCisweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LAorMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNDLCAweDNDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGMCwgMHhGMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsCisweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwKKzB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLAorMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLAorMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywKKzB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwKKzB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLAorMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLAorMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsCisweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDA0LCAweDgwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgyMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDA0LCAweDgwLCAweDQwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwKKzB4MDAsIDB4MjIsIDB4MjUsIDB4MEMsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MEMsIDB4MDAsCisweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4MEMsIDB4MDAsIDB4MDUsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDg3LCAweEU4LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWU0MDAwL21lNDYxMF9maXJtd2FyZS5oIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQ2MTBfZmlybXdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTUwZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL21lNDAwMC9tZTQ2MTBfZmlybXdhcmUuaApAQCAtMCwwICsxLDU0MDkgQEAKKy8qCisgICBUaGlzIGZpbGUgaXMgY29weXJpZ2h0IGJ5IE1laWxoYXVzIEVsZWN0cm9uaWMgR21iSCAyMDAzLgorICAgWW91IGFyZSBub3QgYWxsb3dlZCB0byBkaXN0cmlidXRlLCBzZWxsLCBtb2RpZnksIHJldmVyc2UgZW5naW5lZXIgb3IgdXNlIHRoaXMKKyAgIGNvZGUgKG9yIHBhcnRzIG9mIGl0KSBmb3IgYW55IG90aGVyIHB1cnBvc2Ugb3IgdW5kZXIgYW55IG90aGVyIGNvbmRpdGlvbnMKKyAgIHRoYW4gc3RhdGVkIGJlbG93LgorCisgICAxKSBZb3UgYXJlIGFsbG93ZWQgdG8gZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhpcyBmaWxlIHRvZ2V0aGVyCisgICB3aXRoIGRldmljZSBkcml2ZXJzIGZvciB0aGUgTWVpbGhhdXMgTUUtNDAwMCwgYm9hcmQgZmFtaWx5LgorCisgICAyKSBEZXJpdmVkIHdvcmsgKGRldmljZSBkcml2ZXJzIHVzaW5nIHRoaXMgZmlsZSkgY2FuIGJlIHB1Ymxpc2hlZCB1bmRlcgorICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiBBbnkgb3RoZXIgbGljZW5zZSB0ZXJtcyBoYXZlCisgICB0byBiZSBhZ3JlZWQgYnkgTWVpbGhhdXMgR21iSCBpbiB3cml0dGVuLgorCisgICAyKSBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgICB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCisgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gTWVpbGhhdXMgaXMgdW5kZXIKKyAgIG5vIG1lYW5zIGxpYWJsZSBmb3IgcHJvZHVjdHMgdXNpbmcgdGhpcyBmaWxlIG9yIHBhcnRzIG9mIGl0LgorCisgICAzKSBUaGUgY29weXJpZ2h0IG9mIHRoaXMgZmlsZSBoYXMgdG8gYmUgbWVudGlvbmVkIGluIGRlcml2ZWQgd29yay4KKworICAgNCkgSWYgdGhpcyBsaWNlbnNlIHRlcm1zIGFyZSBub3QgdmFsaWQgZHVlIHRvIGFueSBvdGhlciBsYXcKKyAgIG9yIHJlc3RyaWN0aW9ucyBpbXBvc2VkIG9uIHlvdSwgeW91IGFyZSBub3QgYWxsb3dlZCB0byB1c2UKKyAgIHRoaXMgZmlsZSBpbiBhbnkgd2F5IGF0IGFsbC4KKyAqLworCisvKiBWZXJzaW9uIDAgb2YgTUUtNDYxMCBmaXJtd2FyZSAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgeGlsaW54X2Zpcm1fNDYxMFtdID0geworMHgwMCwgMHgwMSwgMHgxMSwgMHgwYywgMHgwMSwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwNCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4NTUsIDB4OTksIDB4QUEsIDB4NjYsIDB4MEMsIDB4MDAsCisweDAxLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDBDLCAweDgwLCAweDA2LCAweDgwLCAweDAwLCAweDAwLCAweDAwLAorMHhEMCwgMHgwQywgMHg4MCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMSwgMHhGQywgMHhCNCwgMHgwQywgMHgwMCwgMHgwMywgMHg4MCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MEMsCisweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDAxLCAweDgwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwQywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwQSwgMHgwMCwgMHg3QywgMHgyMCwgMHg0MCwgMHg1OCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyMCwgMHgwMSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEJGLCAweDU4LCAweDgwLCAweDU0LCAweDAwLAorMHg0NCwgMHgwMSwgMHgxOCwgMHgwNSwgMHg2MCwgMHgwNCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg2NiwgMHgwMCwgMHhEOCwgMHgwMCwKKzB4NjAsIDB4MEEsIDB4ODAsIDB4MkQsIDB4MDAsIDB4RjYsIDB4MDAsIDB4RDgsIDB4MDMsIDB4NjAsIDB4MEEsIDB4ODAsIDB4NjksCisweDAwLCAweEM2LCAweDAxLCAweDk4LCAweDA1LCAweDIwLCAweDE2LCAweEZDLCAweDIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHhGRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhEQywgMHgzMiwgMHhGMCwKKzB4MTMsIDB4QzAsIDB4NEYsIDB4MDAsIDB4RkIsIDB4MjgsIDB4QkMsIDB4MDQsIDB4QjAsIDB4MTcsIDB4QzAsIDB4NEUsIDB4MTIsCisweDFCLCAweDEwLCAweEZDLCAweDEzLCAweDMwLCAweDkzLCAweEMwLCAweDRCLCAweDAwLCAweDFGLCAweDAxLCAweEZDLCAweDI0LAorMHgzMCwgMHhDRiwgMHhFMiwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDgsIDB4MzcsIDB4MDEsIDB4OUQsIDB4MDYsIDB4NDQsIDB4MzAsIDB4RDEsIDB4MTEsIDB4NDAsIDB4NDcsIDB4MDAsCisweEZELCAweDBBLCAweDc0LCAweDA2LCAweDEwLCAweDA5LCAweDQwLCAweDE3LCAweDA5LCAweDExLCAweDQyLCAweEY0LCAweDBCLAorMHg1MCwgMHg0OSwgMHg0MCwgMHgwNiwgMHgwQywgMHgxRCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHg4RiwgMHg0MCwgMHgwNCwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4MzMsIDB4MDAsCisweDhELCAweDE4LCAweDA1LCAweDE2LCAweERBLCAweDA4LCAweDQwLCAweDMzLCAweDAwLCAweENELCAweDQwLCAweDc0LCAweDAzLAorMHg5MSwgMHgwQywgMHg0MCwgMHgzNSwgMHgwMSwgMHgwRCwgMHgyMCwgMHgzNCwgMHhBMywgMHgxMCwgMHg0OCwgMHg0MCwgMHgwMSwKKzB4MDEsIDB4Q0QsIDB4QTAsIDB4NzQsIDB4MTMsIDB4RDIsIDB4NEMsIDB4NDAsIDB4NDQsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDM0LCAweDAwLCAweDlELCAweDAxLCAweDQ0LCAweDg2LAorMHhEMCwgMHgzOSwgMHg0MCwgMHgwNywgMHgwMCwgMHhERCwgMHgwMCwgMHg2NCwgMHg4QSwgMHgxMCwgMHg4OSwgMHgwMiwgMHgzNywKKzB4MDAsIDB4MTUsIDB4MTAsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MTksIDB4MDcsIDB4NDcsIDB4MjAsIDB4NUQsIDB4MDQsIDB4NzQsCisweEEzLCAweERBLCAweDBELCAweDQ4LCAweDBDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBOCwgMHg3NywgMHgwMCwgMHgxRiwgMHg5MSwgMHg0QywgMHg4NiwgMHhFMCwgMHgxOSwgMHhDMCwgMHg1NywKKzB4MjEsIDB4REIsIDB4MDAsIDB4N0MsIDB4MDEsIDB4QjAsIDB4MDUsIDB4ODAsIDB4MDYsIDB4OTEsIDB4MUIsIDB4MEIsIDB4N0MsCisweDAzLCAweDMxLCAweDMxLCAweEMwLCAweDQ3LCAweDAxLCAweDlGLCAweDQ0LCAweDdDLCAweDAyLCAweEQwLCAweDBELCAweDYwLAorMHgwMCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgzRCwKKzB4MDIsIDB4M0UsIDB4NDAsIDB4RTgsIDB4MDAsIDB4RjAsIDB4MEIsIDB4NDAsIDB4OEYsIDB4MDAsIDB4RkUsIDB4MDAsIDB4RjQsCisweDQ4LCAweEYwLCAweDBCLCAweEMwLCAweDFGLCAweDgwLCAweDFBLCAweDIwLCAweEJDLCAweDAzLCAweEUxLCAweDBCLCAweEM4LAorMHgwRSwgMHgwMCwgMHgzRSwgMHgwMSwgMHhGOCwgMHgwMiwgMHgzMCwgMHgwRiwgMHhEMSwgMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NUMsCisweDQ2LCAweDcwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDIwLCAweDdDLCAweDIxLCAweDMwLCAweDBELCAweEM0LAorMHgzNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHg4MywgMHhCMCwgMHgyOSwgMHhDMCwgMHg4NCwgMHgwOCwgMHg5RiwgMHg0NCwKKzB4N0MsIDB4NDMsIDB4RjAsIDB4MEMsIDB4QzQsIDB4MEEsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDM0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDBBLCAweDkwLCAweDA5LCAweDQwLAorMHg2NywgMHgwMCwgMHhGMCwgMHg4MCwgMHgzNCwgMHgwNCwgMHhCMCwgMHhCOSwgMHg0MCwgMHgzMiwgMHgwMCwgMHhEMSwgMHg0MSwKKzB4QzAsIDB4MDMsIDB4RDAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MzQsIDB4NDMsIDB4RDAsIDB4M0YsCisweDQwLCAweDRDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLAorMHgzMiwgMHgxMCwgMHgxRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHg5MCwgMHgxMCwgMHg0MCwgMHhBMywgMHg4NCwgMHhDOSwgMHgwMCwKKzB4MzQsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4QzAsIDB4MjEsIDB4MDAsIDB4MDMsIDB4OTAsIDB4MDAsCisweDQwLCAweDAwLCAweDAwLCAweDQ5LCAweDgzLCAweDA0LCAweDg5LCAweEQ4LCAweDBDLCAweDQwLCAweDFDLCAweDAwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg4MiwgMHg3OCwgMHgwMiwgMHhFQywgMHg4MSwKKzB4QjQsIDB4MDUsIDB4OUEsIDB4OTIsIDB4NjAsIDB4NEIsIDB4OTAsIDB4RTEsIDB4QTksIDB4QjYsIDB4MDYsIDB4OTAsIDB4MUEsCisweDYwLCAweDdBLCAweDAwLCAweEUxLCAweDEzLCAweEE0LCAweDA3LCAweEMwLCAweDEyLCAweDQwLCAweDRGLCAweDAwLCAweDYxLAorMHgzNSwgMHhCNCwgMHgyNSwgMHhDMCwgMHg5RiwgMHg2MSwgMHgxOCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTAsIDB4MzAsIDB4MTAsIDB4NEQsIDB4MDAsIDB4MUMsIDB4QTEsIDB4NzgsIDB4ODAsCisweEUxLCAweDMzLCAweDI1LCAweENGLCAweDIwLCAweDNDLCAweDIzLCAweDMwLCAweDJDLCAweEMxLCAweDM0LCAweDA4LCAweDA3LAorMHgwNSwgMHgwRCwgMHgwMywgMHhCMCwgMHhDMCwgMHhFOCwgMHgxMCwgMHgyMiwgMHhDRiwgMHg0MSwgMHgzQywgMHgxNywgMHhGMiwKKzB4REQsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweEIyLCAweDNELCAweDA4LCAweEZGLCAweDAwLCAweEZFLCAweEEzLCAweDgwLCAweDhGLCAweEMyLCAweDFCLCAweDAwLCAweEZGLAorMHg4MCwgMHhGRSwgMHgwMywgMHhGMCwgMHgwQiwgMHg0MCwgMHgzRiwgMHgxMCwgMHgzNywgMHgwOCwgMHhEQywgMHg2MywgMHhGMCwKKzB4ODcsIDB4QzYsIDB4M0YsIDB4MDgsIDB4REYsIDB4MDAsIDB4N0MsIDB4MjMsIDB4RkEsIDB4OEYsIDB4QzIsIDB4MDksIDB4NjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDc3LCAweDAwLCAweDU3LAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgxMSwgMHhDMCwgMHgzNSwgMHgwMCwgMHhERiwgMHgxMCwgMHg1QywgMHgwMSwgMHhGMCwKKzB4MTgsIDB4QzAsIDB4NjYsIDB4MDAsIDB4RDMsIDB4MDAsIDB4NkMsIDB4MTMsIDB4RjAsIDB4MDEsIDB4QzgsIDB4MTcsIDB4MTAsCisweDlGLCAweDAwLCAweDdDLCAweDAzLCAweDMyLCAweEJELCAweEM1LCAweDU0LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg5OCwgMHgzRCwgMHgwMCwgMHg2MSwgMHg4MCwgMHhCNiwgMHgwMSwgMHhEMCwKKzB4MEEsIDB4NDgsIDB4MzgsIDB4MDAsIDB4RkQsIDB4MDYsIDB4ODQsIDB4MDMsIDB4RDIsIDB4MEEsIDB4NDAsIDB4MzksIDB4NDAsCisweEYxLCAweDgwLCAweDg2LCAweDQzLCAweEQwLCAweDBBLCAweDQ4LCAweDFCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLAorMHgxMCwgMHgwRiwgMHg0MCwgMHg0OCwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4MDAsIDB4NzksIDB4ODAsIDB4RTUsIDB4MDEsIDB4OTQsIDB4MDcsIDB4RDAsIDB4MTcsIDB4NDAsIDB4NzksIDB4MDgsCisweEVDLCAweDAxLCAweDk0LCAweDA3LCAweEQwLCAweDFGLCAweDQwLCAweDdCLCAweDAwLCAweEUxLCAweDAxLCAweDg0LCAweDA3LAorMHhEMCwgMHgxRSwgMHg2MCwgMHg3OSwgMHgwMCwgMHhBRCwgMHgxMSwgMHhBNCwgMHgwNywgMHg1MCwgMHgxRSwgMHg0MCwgMHgwQywKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjAsIDB4MjMsIDB4MDAsCisweEMxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDBDLCAweDQyLCAweDMxLCAweDAyLCAweENELCAweDAwLCAweDE0LCAweDRCLAorMHhEMSwgMHgwOCwgMHg0MCwgMHgzMSwgMHgwMCwgMHhDMSwgMHgwRCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHg3MywKKzB4MDEsIDB4Q0QsIDB4ODAsIDB4NzQsIDB4MEIsIDB4NTAsIDB4MEMsIDB4NDAsIDB4NDgsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEEwLCAweDE0LCAweDAxLCAweDc3LCAweDAzLCAweEZDLCAweDI5LAorMHhEMCwgMHgxNywgMHhDMSwgMHg1RCwgMHgwMCwgMHg1RiwgMHgwMCwgMHg5QywgMHgxOSwgMHhEMCwgMHgwNywgMHhDMCwgMHgxRSwKKzB4MDAsIDB4NzMsIDB4MDIsIDB4NEMsIDB4MDEsIDB4RjAsIDB4NDcsIDB4QzAsIDB4MUYsIDB4OEMsIDB4N0YsIDB4MDAsIDB4RkMsCisweDA5LCAweDcyLCAweDA1LCAweDQwLCAweDVDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwOCwgMHg3QywgMHgwMCwgMHhEMCwgMHgxMSwgMHg0MCwgMHg0NiwKKzB4MDAsIDB4MEUsIDB4NDAsIDB4NjgsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4MUYsIDB4NDIsIDB4NUMsCisweDAwLCAweEIyLCAweDExLCAweEMwLCAweDA3LCAweDAwLCAweDFCLCAweDEwLCAweDdDLCAweDEwLCAweDgyLCAweDAxLCAweEMwLAorMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgyNywKKzB4MDAsIDB4OEYsIDB4MTAsIDB4NTQsIDB4MEEsIDB4RjIsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUIsIDB4MDAsIDB4NEMsCisweDA2LCAweEQwLCAweDk5LCAweEMwLCAweDI3LCAweDAwLCAweDhGLCAweDA0LCAweDVDLCAweDgyLCAweEUwLCAweDA5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHg4OSwgMHhDMiwgMHg0MywgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsIDB4MTAsIDB4OUMsIDB4MDAsIDB4NTQsCisweDAyLCAweEQwLCAweEI5LCAweDQwLCAweEU3LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDZBLCAweDEwLCAweDE5LCAweDA0LAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMiwgMHg0NSwgMHgwMiwgMHhDMiwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MCwgMHgxMywKKzB4NzQsIDB4MjIsIDB4MTAsIDB4NTksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLCAweDkwLCAweDA5LCAweDQwLAorMHhFNywgMHgwMCwgMHg5RCwgMHg4MCwgMHg0NSwgMHgwMiwgMHg5MCwgMHgwOSwgMHg0MSwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMiwKKzB4NDQsIDB4ODIsIDB4OTAsIDB4MDksIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgyMCwgMHgwMiwgMHg4RCwgMHgxNCwgMHgxNCwgMHg1NiwgMHhEMCwgMHgwQywgMHg0MCwgMHgyMywgMHgwOCwgMHg4RCwgMHgwMCwKKzB4MDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDIsIDB4OEQsIDB4MDAsIDB4MDQsIDB4MDIsIDB4RDAsIDB4ODgsCisweDAwLCAweDIzLCAweDAyLCAweDgxLCAweDAwLCAweDMwLCAweDAyLCAweDE0LCAweDQ4LCAweDQ5LCAweDQzLCAweDgwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwgMHg4NiwgMHgwMCwgMHgxRiwgMHgyNCwKKzB4NEMsIDB4MTAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MTAsIDB4MUUsIDB4MTQsIDB4NEMsIDB4MDAsIDB4QjAsIDB4QTEsCisweEMyLCAweDgzLCAweDAwLCAweDFGLCAweDFFLCAweDRDLCAweDc4LCAweEYwLCAweDIxLCAweEMwLCAweDg3LCAweDAwLCAweDE3LAorMHgwQSwgMHgzQywgMHg4MSwgMHgzMCwgMHg0MSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjAsIDB4MkYsIDB4MDEsIDB4QkYsIDB4OTQsIDB4RkMsIDB4NTIsIDB4RjIsIDB4MEEsCisweEM4LCAweDJGLCAweDAwLCAweDlDLCAweDE0LCAweEZDLCAweDAyLCAweEIwLCAweDFGLCAweDgwLCAweDJGLCAweDAxLCAweEJGLAorMHg4MSwgMHg3MCwgMHgwNiwgMHhGMSwgMHg0RiwgMHhDMCwgMHgyRiwgMHg0MSwgMHhCRiwgMHgwMSwgMHhGQywgMHg1MywgMHhGMCwKKzB4NDksIDB4NDEsIDB4NjcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksCisweDgwLCAweDIzLCAweDAwLCAweDk3LCAweDA4LCAweEYwLCAweDM3LCAweDMwLCAweDBBLCAweEMwLCAweDJGLCAweDIwLCAweDlGLAorMHgwQywgMHhGQywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHhBMiwgMHgwMCwgMHhCRiwgMHgxMCwgMHg0QywgMHgwMiwgMHhGMCwKKzB4MjksIDB4QzAsIDB4MjUsIDB4MDIsIDB4QjMsIDB4MDAsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MEIsIDB4QzAsIDB4NjQsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LCAweDA3LCAweDAxLCAweDAxLAorMHgwNSwgMHg3NCwgMHgzRCwgMHhCMCwgMHgwMSwgMHg0MCwgMHgxNywgMHgwMCwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwMSwgMHhEMSwKKzB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MEQsIDB4MDIsIDB4NTEsIDB4MjgsIDB4OTEsIDB4MDEsIDB4NDAsIDB4MTQsIDB4MTEsCisweDExLCAweDAwLCAweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQ4LCAweDcxLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgyMywgMHgwNCwgMHg4NSwgMHg0MiwgMHgzNCwgMHgwMiwgMHg1OSwKKzB4MDgsIDB4NDAsIDB4MjMsIDB4MDgsIDB4OEQsIDB4MDIsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDIsIDB4MjIsIDB4MTAsCisweDhELCAweDAwLCAweDE2LCAweDgyLCAweEQwLCAweDA5LCAweDQwLCAweDIxLCAweDAwLCAweEM1LCAweDIwLCAweDc0LCAweDAyLAorMHgxMSwgMHgwOCwgMHg1MCwgMHg0MCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4QTgsIDB4MjEsIDB4MDAsIDB4OTEsIDB4MDQsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MzksIDB4NjAsIDB4MjcsIDB4MDgsCisweDlELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDhELCAweDQyLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDU0LCAweDAyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHg0MCwgMHg5NSwgMHgwNCwgMHg3NCwgMHgwMiwgMHg1MiwgMHgwOSwgMHg0MCwgMHg2MSwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjgsIDB4MjUsIDB4MDgsCisweDk3LCAweDkzLCAweDc4LCAweDBBLCAweDc0LCAweDE5LCAweEMwLCAweEU3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDBBLAorMHhGMCwgMHgwOCwgMHhDOCwgMHhFNiwgMHgwMSwgMHg5RiwgMHhCOCwgMHg1QywgMHgwMiwgMHhGMCwgMHgyOCwgMHhDMiwgMHgyNSwKKzB4MDAsIDB4OTcsIDB4MDQsIDB4M0MsIDB4MEUsIDB4MjAsIDB4MDksIDB4QzQsIDB4MTQsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweDY0LCAweDAyLCAweDlGLCAweDAwLCAweDNDLCAweDE2LAorMHhCMCwgMHgwOSwgMHhDNCwgMHhFNywgMHgwMCwgMHg5RiwgMHg4MCwgMHg3QywgMHgyNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDEsIDB4OUYsIDB4MDEsIDB4NjgsIDB4MDIsIDB4QjAsIDB4MjksIDB4QzQsIDB4MjcsIDB4MDEsIDB4OUIsIDB4MDAsIDB4N0MsCisweDBFLCAweEI0LCAweDA4LCAweDQwLCAweDUyLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxMywgMHgwMiwgMHg0QywgMHgwOCwgMHhGMCwgMHg2MSwgMHhDMCwgMHgwNywKKzB4MDAsIDB4MTcsIDB4MDAsIDB4NEMsIDB4NDAsIDB4RjAsIDB4MjEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDMsIDB4NDIsIDB4NUMsCisweDAwLCAweDMwLCAweDIxLCAweEMwLCAweDg3LCAweDEwLCAweDFGLCAweDAwLCAweDRDLCAweDA4LCAweEYwLCAweDAxLCAweEQxLAorMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyMCwgMHgxNCwKKzB4MDAsIDB4NTEsIDB4MDAsIDB4QzQsIDB4MEQsIDB4RDAsIDB4MzcsIDB4NDAsIDB4MUMsIDB4MDIsIDB4NTEsIDB4MjAsIDB4Q0MsCisweDQxLCAweEQyLCAweDA3LCAweDQ4LCAweDE0LCAweDAwLCAweDcxLCAweDQ5LCAweDQ0LCAweDgxLCAweDUwLCAweDA1LCAweDQwLAorMHgxNywgMHgwMCwgMHg3QywgMHg4MiwgMHhDNCwgMHg2OSwgMHhEMCwgMHgwNywgMHg0MCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzIsIDB4NjAsIDB4QzEsIDB4NDAsIDB4MTQsCisweENGLCAweEMwLCAweEI0LCAweDQwLCAweDcyLCAweDAyLCAweEM1LCAweDAwLCAweDI0LCAweDAzLCAweEQwLCAweDhDLCAweDQwLAorMHgzMCwgMHgxMCwgMHhDMSwgMHgwQiwgMHgyNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzNywgMHgwMCwgMHhDOSwgMHgwNCwKKzB4MDQsIDB4ODAsIDB4RDAsIDB4MzAsIDB4NDAsIDB4NTAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDgyLCAweDNDLCAweDIyLCAweEUxLCAweDBELCAweDk0LCAweDQzLCAweEQwLCAweDEyLCAweDQwLAorMHg3RSwgMHgwMCwgMHhDMSwgMHgwMSwgMHg4NCwgMHgwMSwgMHhEMCwgMHgwRSwgMHg0MCwgMHg3QywgMHg0MywgMHg2MSwgMHgwMCwKKzB4QTQsIDB4MjcsIDB4NTAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MTAsIDB4QUQsIDB4MjEsIDB4ODQsIDB4MDEsIDB4RDAsIDB4MjMsCisweDQ0LCAweDEwLCAweDIwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDEwLAorMHg3OCwgMHgwMSwgMHhFMywgMHg5MSwgMHg5RCwgMHgwNywgMHhGMCwgMHgxNiwgMHhDMCwgMHg0QSwgMHgwMCwgMHhFNywgMHgwMSwKKzB4QUQsIDB4MDcsIDB4RTEsIDB4MTMsIDB4QzAsIDB4NzgsIDB4MDIsIDB4QTMsIDB4NjEsIDB4RkMsIDB4MzcsIDB4MzAsIDB4NUUsCisweEMxLCAweDdCLCAweDAwLCAweEJCLCAweDAxLCAweDhDLCAweDA2LCAweEZBLCAweDFCLCAweEMwLCAweDUwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCMCwgMHgzNSwgMHgwNCwgMHhERiwgMHg0MCwKKzB4NkMsIDB4MDMsIDB4RjMsIDB4MDEsIDB4QzAsIDB4MDAsIDB4MjAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RDAsIDB4MDUsCisweDkwLCAweDM3LCAweDAxLCAweDFGLCAweDAwLCAweDVDLCAweDkzLCAweEYxLCAweEFELCAweDgwLCAweEI3LCAweDAzLCAweDlDLAorMHg0MCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDEsIDB4REMsIDB4MjUsIDB4MzAsIDB4MUYsCisweEMwLCAweDdGLCAweDAwLCAweEY3LCAweDExLCAweEZDLCAweDI2LCAweDEwLCAweDFGLCAweEMwLCAweDdGLCAweDEwLCAweDdGLAorMHgwOSwgMHhDQywgMHg4NywgMHgzMCwgMHg5RiwgMHhDMCwgMHhGQywgMHg4QSwgMHhCRiwgMHgwRCwgMHhFQywgMHgyNCwgMHhGMSwKKzB4MTcsIDB4QzAsIDB4MEIsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweDg4LCAweDM5LCAweDI0LCAweEVELCAweDAwLCAweEY0LCAweDAzLCAweEIwLCAweDRBLCAweDQ4LCAweDBCLCAweDAwLCAweEVELAorMHgwNCwgMHhCNCwgMHgyMSwgMHgxMCwgMHg0RSwgMHg0MiwgMHg3QiwgMHgwMSwgMHgyOSwgMHgwMSwgMHg4NCwgMHgwMywgMHhGMCwKKzB4MEUsIDB4NDQsIDB4MzgsIDB4MDAsIDB4OEQsIDB4NDMsIDB4MzQsIDB4MjEsIDB4RDAsIDB4ODQsIDB4NDAsIDB4NTcsIDB4MjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDAwLCAweDM5LCAweDAwLCAweEVELAorMHgxMCwgMHg5NCwgMHgwMSwgMHg5OCwgMHgwMiwgMHg0MCwgMHgwQiwgMHgwNCwgMHhFRCwgMHg4MCwgMHhGNCwgMHgwMCwgMHg5MCwKKzB4MDIsIDB4NDEsIDB4M0IsIDB4MDEsIDB4MEQsIDB4MDgsIDB4OTQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDgsIDB4MzgsIDB4MjAsCisweDI1LCAweDAyLCAweEI0LCAweDIwLCAweEQ4LCAweDBFLCAweDQwLCAweDIzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwMSwgMHg3NCwgMHg0MiwgMHg5MCwKKzB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MkQsIDB4OTAsIDB4MTAsIDB4NDAsIDB4MzcsIDB4MDAsCisweDE5LCAweDAwLCAweDE0LCAweDAzLCAweEQwLCAweDJELCAweDQwLCAweEIwLCAweDAwLCAweDBELCAweDA4LCAweDM0LCAweDAzLAorMHhEMCwgMHgwQywgMHg0MCwgMHgxQiwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4ODgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4MDEsIDB4NUMsIDB4MDIsIDB4QjAsIDB4QTUsIDB4QzAsIDB4MjcsIDB4OTAsCisweEY3LCAweDAwLCAweDdDLCAweDI3LCAweEI2LCAweEI5LCAweEM4LCAweDNGLCAweDAwLCAweDlGLCAweDIwLCAweERDLCAweDAzLAorMHgzMCwgMHhBRiwgMHhDOCwgMHgzQywgMHgwOCwgMHg4RiwgMHgwMSwgMHg2QywgMHg4MywgMHhEMCwgMHgwRCwgMHhDOCwgMHg1NywKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsCisweERGLCAweDEwLCAweDdDLCAweDI4LCAweEYwLCAweDE1LCAweEMwLCAweEE3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLAorMHg3MCwgMHgyMSwgMHhDMCwgMHg3NywgMHgwMCwgMHgxRSwgMHg0MiwgMHgyNSwgMHg4MywgMHhCMCwgMHg4RCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4MUQsIDB4MDIsIDB4N0MsIDB4MDMsIDB4RDAsIDB4MEQsIDB4QzQsIDB4MjcsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDA4LCAweDNGLCAweDI4LCAweEZCLCAweDQwLCAweEZDLCAweDAyLAorMHgzMCwgMHgzNywgMHhDMCwgMHgyRiwgMHgwNCwgMHhGRiwgMHgwMCwgMHhGQywgMHgxNiwgMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwKKzB4MDAsIDB4MzMsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4NzEsIDB4MEYsIDB4RTAsIDB4M0MsIDB4MEMsIDB4QkYsIDB4MjAsIDB4REMsCisweDAzLCAweEYyLCAweDBCLCAweEMyLCAweDA0LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhBMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwNiwgMHhCMCwgMHgwNSwgMHhDMCwgMHhFNywKKzB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MEEsIDB4RDAsIDB4MTEsIDB4NDAsIDB4MzYsIDB4MDAsIDB4MUIsIDB4MDAsIDB4NkMsCisweDAzLCAweDEwLCAweDBELCAweDQwLCAweDM1LCAweDAwLCAweDFDLCAweDAzLCAweDQwLCAweDA0LCAweEQwLCAweDM1LCAweDQwLAorMHg4NCwgMHgwNiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHgzNCwKKzB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDQsIDB4MTgsIDB4MEQsIDB4NDAsIDB4NjcsIDB4MDQsIDB4REQsIDB4MDAsIDB4NjQsCisweDBBLCAweEQwLCAweDFCLCAweDQwLCAweDM3LCAweDAwLCAweDMxLCAweDA2LCAweEMwLCAweDAzLCAweDAwLCAweDBELCAweDQ0LAorMHgzNiwgMHgwMCwgMHhCRCwgMHgwMSwgMHg0NCwgMHhBMywgMHhEMCwgMHg2NCwgMHg1MCwgMHgwNCwgMHgwMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MzAsIDB4ODAsIDB4Q0QsIDB4MDAsIDB4MzYsCisweDAwLCAweDE4LCAweDBDLCAweDQwLCAweDAxLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweEQxLCAweDAwLCAweDQyLAorMHgzNiwgMHgyMSwgMHgxOSwgMHgyNCwgMHgyNCwgMHgwMywgMHgxNSwgMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHgxRCwgMHgwNCwKKzB4MDQsIDB4QTYsIDB4RDAsIDB4MjgsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweEIwLCAweDNFLCAweDA4LCAweEZCLCAweDgwLCAweDdDLCAweDAwLCAweDE0LCAweDAxLCAweDQwLAorMHgyNywgMHgwOCwgMHhERiwgMHgwMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMiwgMHgzRiwgMHgwNSwgMHgxMywgMHgxNiwKKzB4OEMsIDB4MDMsIDB4NzAsIDB4MEUsIDB4RDAsIDB4M0MsIDB4MTAsIDB4MUYsIDB4MUMsIDB4NUMsIDB4MDEsIDB4RjAsIDB4MjEsCisweEMwLCAweDA0LCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEIwLAorMHgzRiwgMHgwMCwgMHhGRiwgMHg0MCwgMHhGQywgMHgwMiwgMHhGMiwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHhGRiwgMHg0MCwKKzB4QkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MzYsIDB4MDAsIDB4MUYsIDB4MTQsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsCisweEM0LCAweDNGLCAweDAwLCAweDFGLCAweDA0LCAweEZELCAweDEwLCAweEYyLCAweDQzLCAweDAwLCAweDE3LCAweDYwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg3RCwgMHgwMiwgMHhGQSwgMHgwMCwKKzB4RkMsIDB4MjAsIDB4QjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MjAsIDB4RjcsIDB4QTAsIDB4RUMsIDB4MDMsIDB4MzAsIDB4NEYsCisweEM0LCAweDBELCAweDEwLCAweDMzLCAweDAxLCAweEZDLCAweDI3LCAweEYxLCAweDMzLCAweEMwLCAweDNFLCAweDAwLCAweDJGLAorMHgwMSwgMHg2QywgMHg4MCwgMHhGMiwgMHgwMywgMHhDNCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4MzcsIDB4MjAsIDB4RjEsIDB4ODIsIDB4MzQsIDB4M0EsIDB4MTAsIDB4M0YsCisweDQwLCAweEJFLCAweDE2LCAweEYxLCAweDg5LCAweEY0LCAweDBGLCAweDEwLCAweDlGLCAweEM4LCAweDQ1LCAweDMyLCAweDk1LAorMHgwMCwgMHg3NCwgMHgxMSwgMHhEMSwgMHg0MSwgMHg0MCwgMHgzRiwgMHgyMCwgMHgxRCwgMHg1NCwgMHg0NCwgMHgwNCwgMHhEMCwKKzB4MDEsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsCisweDIwLCAweDMzLCAweDExLCAweEMxLCAweDM2LCAweDc0LCAweDAzLCAweDExLCAweDJDLCAweDQ0LCAweDMzLCAweDAxLCAweEM1LAorMHg4MCwgMHgzNCwgMHgyMywgMHgxMCwgMHgwQywgMHg0MCwgMHgwMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgxMywgMHg5MCwKKzB4MDAsIDB4NDAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4ODAsIDB4RDgsIDB4MDAsIDB4NDAsIDB4NDcsIDB4ODAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LCAweDc1LCAweDIwLCAweEQxLAorMHgwMCwgMHg3NCwgMHgwNywgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgyMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHg4MywgMHgxMCwKKzB4MEQsIDB4NDAsIDB4OTcsIDB4MDAsIDB4OTQsIDB4MDQsIDB4NzQsIDB4MjEsIDB4RDAsIDB4MTEsIDB4NDMsIDB4M0YsIDB4MDAsCisweDFELCAweDEwLCAweEMwLCAweDYwLCAweEMwLCAweDNCLCAweDQwLCAweDBGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBOCwgMHgzNywgMHg0MCwgMHhEQiwgMHgwMCwgMHgzQywgMHgwNiwgMHhCNCwKKzB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsIDB4MDAsIDB4NkUsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4ODMsIDB4MDAsCisweEQzLCAweDgwLCAweDdDLCAweDk3LCAweEYwLCAweDExLCAweEM4LCAweDM2LCAweDAwLCAweERGLCAweDAwLCAweDZDLCAweDAwLAorMHhGMSwgMHgzMSwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsIDB4RkYsIDB4ODAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MjAsCisweERGLCAweDAwLCAweEZBLCAweDQzLCAweEYwLCAweDBELCAweEMyLCAweDRELCAweDAxLCAweEZGLCAweDAxLCAweEZDLCAweDAxLAorMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwgMHgwMCwgMHgzRiwgMHgwOSwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHg0MCwgMHgxRiwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDEsCisweERGLCAweDA4LCAweDdDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDMzLCAweDAwLCAweERGLCAweDQwLCAweDNDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwOCwgMHhEQiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgyMSwgMHhDMCwgMHgzNywKKzB4MDQsIDB4REYsIDB4MDIsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MDksIDB4QzAsIDB4MEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweEY0LCAweDA5LCAweEZELCAweEMxLCAweDc0LCAweDgzLAorMHg1MCwgMHgzRiwgMHg0NCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwQSwgMHhDNCwgMHg4RiwgMHhEMCwgMHgwRiwgMHg0MSwgMHgzNCwKKzB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4ODEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4RkYsIDB4MDAsIDB4MUMsIDB4MDAsIDB4NDQsCisweDEyLCAweEQwLCAweDM5LCAweDQwLCAweDRGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNywgMHhBMCwgMHg3NiwgMHgwMCwgMHhDOSwgMHg0NywgMHgzNCwgMHgwMywgMHgxOCwgMHgwQywgMHg0OSwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDMsIDB4MDQsIDB4MkYsIDB4RDAsIDB4NUMsIDB4NDAsIDB4MzEsIDB4MDAsIDB4NDksIDB4MDAsIDB4MzQsCisweDAyLCAweDEwLCAweDAwLCAweDQwLCAweEYzLCAweDAwLCAweDFELCAweDAwLCAweDE0LCAweDA0LCAweEQwLCAweDAwLCAweDAxLAorMHgxRiwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHg3OCwKKzB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MjcsIDB4NTAsIDB4OUUsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MzUsIDB4ODUsCisweDA3LCAweEQwLCAweDVFLCAweDQwLCAweDY5LCAweDgwLCAweEVELCAweDAzLCAweEY0LCAweDA2LCAweDkwLCAweDkyLCAweDAyLAorMHg3QiwgMHgwMCwgMHgzRCwgMHgwMSwgMHg5NiwgMHgyNCwgMHhEMCwgMHg5QSwgMHg0OCwgMHgxMywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTAsIDB4MzAsIDB4MDIsIDB4Q0YsIDB4MDgsIDB4M0MsCisweDAzLCAweDNBLCAweDBDLCAweEMxLCAweDMzLCAweDAwLCAweENGLCAweDBELCAweDJDLCAweDAzLCAweEYwLCAweDVDLCAweEMwLAorMHgxMSwgMHgwMCwgMHg0QiwgMHgxMCwgMHgzQywgMHgwNiwgMHgzMCwgMHgwMCwgMHhDMiwgMHgzMywgMHgwNiwgMHhDRiwgMHgwMCwKKzB4MUMsIDB4MTQsIDB4RjAsIDB4MDAsIDB4QzEsIDB4NEIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDNELCAweDAwLCAweEZFLCAweDAwLCAweEY4LCAweDAzLCAweEY4LCAweDBGLCAweEM5LAorMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMSwgMHgxQywgMHgwMCwgMHhGRiwgMHgwOCwKKzB4M0MsIDB4MDIsIDB4NzUsIDB4MDcsIDB4QzYsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RUQsIDB4MjAsIDB4RjAsIDB4MEIsCisweEU4LCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLAorMHgzNywgMHgxMCwgMHhERSwgMHg0NCwgMHg3QywgMHgwMywgMHgzMCwgMHg1RCwgMHhDMiwgMHgzNCwgMHgxMSwgMHhEMywgMHgwNCwKKzB4N0MsIDB4MEIsIDB4RjMsIDB4M0QsIDB4RDEsIDB4MzQsIDB4MDAsIDB4RDMsIDB4MDEsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MDEsCisweEQwLCAweEI0LCAweDA3LCAweENFLCAweDAwLCAweDRDLCAweDA0LCAweDMyLCAweDE5LCAweEMwLCAweDU0LCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHgzOCwgMHgwMCwgMHhFRCwgMHg5NiwKKzB4RjQsIDB4MDMsIDB4QjAsIDB4MEMsIDB4NTUsIDB4MzgsIDB4MTQsIDB4RTEsIDB4MTYsIDB4QjQsIDB4NUIsIDB4RDAsIDB4NEMsCisweDQwLCAweDIwLCAweDEwLCAweEYxLCAweDgwLCAweDg0LCAweDAzLCAweEQwLCAweDAyLCAweDQwLCAweDM4LCAweDAxLCAweEVELAorMHgwMCwgMHg4NCwgMHgwMiwgMHgxMSwgMHgwQiwgMHhDMCwgMHg0QSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsIDB4MDcsIDB4MTAsIDB4MUUsCisweDRBLCAweDcwLCAweDEzLCAweEUxLCAweDAxLCAweEE0LCAweDA3LCAweEQwLCAweDVFLCAweDQwLCAweDc4LCAweDQwLCAweEUxLAorMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwgMHgxNiwgMHg0MywgMHg3OCwgMHg4MSwgMHhGRCwgMHgwMSwgMHgwNCwgMHg4NCwgMHgxOCwKKzB4MUEsIDB4NDAsIDB4MEMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDI4LCAweDIzLCAweDAyLCAweERELCAweDAwLCAweDM0LCAweDAzLCAweDkyLCAweDBDLCAweDQwLCAweDMwLCAweDQwLCAweEMxLAorMHgyMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0OCwgMHgzMCwgMHgwNCwgMHhDMSwgMHgwOCwgMHgwNCwgMHgwNywgMHhEMCwKKzB4MkMsIDB4NDEsIDB4MzAsIDB4MDAsIDB4REQsIDB4MTAsIDB4MDQsIDB4MEYsIDB4MTgsIDB4M0MsIDB4NDAsIDB4NEEsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDU1LCAweDAwLCAweDVGLAorMHg4MCwgMHhGQywgMHgyOSwgMHgzMCwgMHgwNSwgMHhDMCwgMHgxNCwgMHgwMCwgMHg0MywgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwKKzB4MDUsIDB4ODIsIDB4MUMsIDB4MDAsIDB4NzMsIDB4MDMsIDB4Q0QsIDB4MTUsIDB4RjAsIDB4MzcsIDB4QzAsIDB4MTQsIDB4MDAsCisweDdGLCAweDEyLCAweENDLCAweDE1LCAweDMwLCAweDE3LCAweEMwLCAweDVDLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgyMCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MDgsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzgsIDB4ODcsIDB4MDAsCisweDFGLCAweDEwLCAweDdDLCAweDgwLCAweEYzLCAweDAxLCAweEMwLCAweDA3LCAweDMwLCAweDFGLCAweDAwLCAweDdELCAweDEwLAorMHhGMSwgMHg4MSwgMHhDMSwgMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4NjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDIsIDB4NzAsIDB4MTksIDB4QzAsIDB4MjcsIDB4MDAsCisweDk3LCAweDAxLCAweDVDLCAweDI2LCAweEYwLCAweDE5LCAweEMwLCAweDIzLCAweDAwLCAweDkwLCAweDgwLCAweDdDLCAweDAyLAorMHgzMCwgMHgwOSwgMHhDMCwgMHhBNCwgMHgwMCwgMHg5RiwgMHgwNSwgMHg0QywgMHgxMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHg0MywKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4RTIsIDB4MjIsCisweDkxLCAweDAwLCAweDE0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDAzLCAweDQ0LCAweDhBLAorMHhEMCwgMHg5OSwgMHg0NCwgMHgyNywgMHgwMiwgMHg5MSwgMHgwMiwgMHg3NCwgMHg4MiwgMHgxMiwgMHgwOCwgMHg0MiwgMHgyNCwKKzB4MDAsIDB4OUQsIDB4MDEsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDQ0LCAweDkxLCAweDIxLCAweDU0LCAweDAzLAorMHg1MCwgMHg0OSwgMHg0MSwgMHgyMywgMHgwMCwgMHg5NSwgMHg4NiwgMHg1NCwgMHgwQSwgMHhEMSwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OTUsIDB4MDEsIDB4MzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsCisweDAyLCAweEQwLCAweDA5LCAweDQxLCAweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyMCwgMHgyNCwgMHgwMCwgMHhDMSwgMHgwMCwgMHg1NCwgMHg1MiwgMHg1NCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4MDIsIDB4ODEsIDB4ODAsIDB4MDAsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4NDAsIDB4ODUsIDB4MDEsIDB4MzQsCisweDIyLCAweDEwLCAweDg5LCAweDQyLCAweDYwLCAweDAxLCAweDhELCAweDA4LCAweDA0LCAweDEyLCAweEQwLCAweDQ4LCAweDQ4LAorMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCMCwgMHgwNiwKKzB4MDAsIDB4MTMsIDB4OTQsIDB4NUMsIDB4MTAsIDB4NzQsIDB4NDEsIDB4QzEsIDB4ODcsIDB4MDUsIDB4MTYsIDB4OTQsIDB4NUMsCisweDUwLCAweEYxLCAweDQ1LCAweEMxLCAweDE3LCAweDA1LCAweDE3LCAweDBBLCAweDdDLCAweDA4LCAweDM0LCAweDIwLCAweEMwLAorMHhDNCwgMHgwMiwgMHgxRiwgMHgwMiwgMHg0RCwgMHgwNCwgMHhGMCwgMHhCMSwgMHhDMCwgMHg3NywgMHhDMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4MkYsIDB4MDUsIDB4OUYsIDB4MzQsIDB4RkMsCisweDUyLCAweEIwLCAweDA5LCAweEMyLCAweDI3LCAweDAxLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLAorMHgyRiwgMHgwMCwgMHhCQiwgMHgwMSwgMHhGQywgMHgxMiwgMHhGMCwgMHg0QiwgMHhEMCwgMHg2NywgMHgwMiwgMHhCRiwgMHgwNCwKKzB4RkMsIDB4MjIsIDB4RjAsIDB4OUIsIDB4QzIsIDB4NjcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDJGLCAweDAyLCAweEJGLCAweDg2LCAweDBDLCAweDE2LCAweEIwLCAweDRCLCAweEMwLAorMHgyNywgMHgwNSwgMHhCQiwgMHgwMCwgMHhEQywgMHg4MiwgMHgzMCwgMHgwQiwgMHhDMCwgMHgyRCwgMHgwMCwgMHhCRiwgMHhDMCwKKzB4N0MsIDB4MjIsIDB4MzAsIDB4MjksIDB4QzAsIDB4MkYsIDB4MDAsIDB4QjEsIDB4MDIsIDB4Q0MsIDB4MDIsIDB4RTAsIDB4MEIsCisweEMwLCAweDYwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDA4LAorMHg0NywgMHgwMSwgMHgxRCwgMHgwMSwgMHg0NCwgMHg1QywgMHgxMCwgMHgwMSwgMHg0MCwgMHg4NywgMHgwMSwgMHgxRCwgMHgwMCwKKzB4NDQsIDB4MDAsIDB4MTQsIDB4QTEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MEQsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsCisweDQwLCAweDA3LCAweDAwLCAweDE1LCAweDA0LCAweDQ1LCAweDAwLCAweEQyLCAweDAxLCAweDQ4LCAweDcwLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgyMywgMHgwMCwgMHg4RCwgMHgwNiwKKzB4MDQsIDB4MjIsIDB4OTIsIDB4MjgsIDB4NDAsIDB4MjMsIDB4MDQsIDB4OEQsIDB4MjIsIDB4MDQsIDB4OEEsIDB4MTAsIDB4MDgsCisweDUwLCAweEEwLCAweDAwLCAweDhELCAweDAwLCAweDM0LCAweDEyLCAweDEwLCAweDA4LCAweDYwLCAweDIzLCAweDEwLCAweDgxLAorMHgyMCwgMHgwNSwgMHg4MywgMHhEMCwgMHgwOSwgMHg2MCwgMHg0MiwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4ODAsIDB4OUQsIDB4MDAsIDB4NDUsIDB4MDIsIDB4MTAsIDB4MDksCisweDYwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDQ3LCAweDAyLCAweDEwLCAweDA5LCAweDAwLCAweDI0LCAweDAxLCAweDlELAorMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHhBOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5NSwgMHgxNCwgMHg0NSwgMHgwRSwgMHhEMSwKKzB4NjksIDB4NDAsIDB4NjIsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweDg4LCAweDY3LCAweDAyLCAweDlGLCAweDAwLCAweDRDLCAweDM2LCAweEIwLCAweDA5LCAweEM4LCAweDI3LCAweDAwLCAweDlCLAorMHg0MCwgMHg1QywgMHgwMiwgMHgxMiwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMSwgMHg5RSwgMHgwMCwgMHg3QywgMHgwMiwgMHgzNCwKKzB4MjksIDB4QzAsIDB4MjcsIDB4MDAsIDB4ODMsIDB4MDEsIDB4NEMsIDB4MEUsIDB4RjIsIDB4MjksIDB4RDAsIDB4MTYsIDB4MjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDY1LCAweDEwLCAweDlGLAorMHgwMCwgMHgzQywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHg1MCwgMHgzQywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDAxLCAweDdELCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDUxLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNCwgMHgwMCwgMHgwMywgMHgwMCwgMHg0RCwgMHgwMCwgMHg1MCwKKzB4MDEsIDB4QzAsIDB4MDUsIDB4MDAsIDB4MDMsIDB4MDgsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzEsIDB4ODcsIDB4MDEsCisweDEzLCAweDAwLCAweDRDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDAxLCAweDAxLCAweDEzLCAweDAyLCAweDRDLCAweDAwLAorMHgzMCwgMHgyMSwgMHhDMSwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4QTAsIDB4REMsIDB4MDAsIDB4NzUsIDB4MTksIDB4NDQsIDB4MDEsIDB4NTAsIDB4MjcsIDB4QzAsIDB4MTYsIDB4NTAsCisweDcxLCAweDIzLCAweEY0LCAweDIxLCAweEQwLCAweDA2LCAweDQxLCAweDFGLCAweDIwLCAweDc1LCAweDAxLCAweDQ0LCAweDAxLAorMHhEMCwgMHgwNSwgMHg0OCwgMHgxRiwgMHgxOCwgMHg3NSwgMHgwQSwgMHg0NCwgMHgwMSwgMHgxMSwgMHgyNywgMHhDMCwgMHg1MiwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4NzIsIDB4ODEsCisweEM5LCAweDAzLCAweDA0LCAweDAzLCAweDEwLCAweDlDLCAweDQxLCAweDMzLCAweDAwLCAweDgxLCAweDAzLCAweDM0LCAweDJCLAorMHhEMCwgMHgyQywgMHg0MCwgMHgzMywgMHgwMCwgMHhDNSwgMHgxMSwgMHg0NCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHhGMSwKKzB4ODAsIDB4QzksIDB4MDEsIDB4MDQsIDB4MDMsIDB4MTIsIDB4OEQsIDB4NDAsIDB4NTIsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDgwLCAweDc4LCAweDA0LCAweEVELCAweDIwLCAweEM0LCAweDAzLAorMHg1MCwgMHgxQSwgMHg0MCwgMHg3QSwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCMCwgMHgwMSwgMHhEMCwgMHgwRSwgMHg0MCwgMHg3QiwKKzB4NDgsIDB4RTUsIDB4MTEsIDB4ODQsIDB4MjMsIDB4QzAsIDB4OEUsIDB4NDAsIDB4MTMsIDB4MDQsIDB4RUQsIDB4MTAsIDB4QzQsCisweDA3LCAweDFDLCAweDBCLCAweDQwLCAweDE2LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHgxMCwgMHg3QywgMHgwMCwgMHhGQiwgMHg4MSwgMHg4QywgMHg0NywgMHg3NCwgMHgxRSwgMHhDMCwgMHg3MywKKzB4MDEsIDB4QTMsIDB4MDEsIDB4QkMsIDB4MDYsIDB4RjAsIDB4MUUsIDB4QzAsIDB4N0IsIDB4MDAsIDB4NjcsIDB4ODEsIDB4ODQsCisweEQ3LCAweEYwLCAweDFFLCAweEMxLCAweDY5LCAweDIwLCAweEJCLCAweDAxLCAweDhELCAweDA3LCAweDMwLCAweDFCLCAweEMwLAorMHg1NiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgxNSwKKzB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4MzMsIDB4RjAsIDB4MDAsIDB4QzAsIDB4QjUsIDB4MjAsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAwLCAweEYxLCAweDA5LCAweEMwLCAweDMzLCAweDAwLCAweDFCLCAweDAwLCAweDc1LCAweDAzLCAweEYyLCAweDZELCAweEMwLAorMHgwNywgMHgwMCwgMHg5NywgMHgwMCwgMHgzQywgMHgwMiwgMHhGMSwgMHgwMSwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4NUYsIDB4MDAsIDB4N0YsIDB4MDEsIDB4RkMsCisweDA3LCAweDcwLCAweDFGLCAweEMwLCAweEZGLCAweDQ0LCAweEIzLCAweDA5LCAweDlDLCAweDI3LCAweDcwLCAweDlGLCAweEMwLAorMHg3RiwgMHgwMCwgMHhBMywgMHg0MSwgMHhFQywgMHgwNywgMHgzMSwgMHgxRCwgMHhDMCwgMHg0RiwgMHgwMCwgMHhGMywgMHgwMSwKKzB4Q0MsIDB4MDcsIDB4MzAsIDB4OUIsIDB4QzAsIDB4MDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE1LCAweDg4LCAweEI5LCAweDAwLCAweDZELCAweDAyLCAweEI0LCAweDAzLCAweEIwLCAweDBBLCAweDYwLAorMHgzQiwgMHgwMCwgMHhDMSwgMHgwOCwgMHhCNCwgMHg4MiwgMHgxMCwgMHgwNCwgMHg0OCwgMHgzQiwgMHgwMCwgMHgyMSwgMHgwMCwKKzB4MDQsIDB4MzcsIDB4MTAsIDB4MUUsIDB4QzAsIDB4MEYsIDB4MDAsIDB4RkIsIDB4MTgsIDB4QzQsIDB4MjMsIDB4QjIsIDB4Q0EsCisweDUwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgxOSwgMHgwMCwgMHg2RCwgMHgwOCwgMHhGNCwgMHgwMywgMHg1MCwgMHgwQSwgMHg0MCwgMHgzOSwgMHgwMCwgMHhBOSwgMHg4MCwKKzB4OTQsIDB4MDIsIDB4NTAsIDB4MEUsIDB4NjAsIDB4MUIsIDB4MDIsIDB4MzksIDB4MDAsIDB4QzQsIDB4MTMsIDB4MTAsIDB4MEUsCisweDQxLCAweDBCLCAweDAwLCAweEIxLCAweDAwLCAweEM0LCAweDQzLCAweDUwLCAweDBBLCAweDQwLCAweDAxLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyOCwgMHg0MywgMHgyMCwgMHgwRCwgMHg4MCwKKzB4MzQsIDB4MDMsIDB4OTAsIDB4MDAsIDB4NDAsIDB4MzcsIDB4MDgsIDB4NDksIDB4NDAsIDB4MzQsIDB4MDIsIDB4MTAsIDB4MDAsCisweDQ0LCAweDUzLCAweDQyLCAweDA5LCAweDAyLCAweDA0LCAweDAzLCAweDk0LCAweDFELCAweDQwLCAweDAxLCAweDAwLCAweDg5LAorMHgxMCwgMHgwNCwgMHgwNiwgMHhEOCwgMHg2MCwgMHg0MCwgMHgxMSwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4NjQsIDB4MDEsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4NzQsIDB4MDEsCisweEMwLCAweDNGLCAweDAwLCAweDlCLCAweDAwLCAweDVDLCAweDAyLCAweDUwLCAweDAxLCAweEMwLCAweDM3LCAweDA4LCAweDEzLAorMHgwMiwgMHhDQywgMHgwMywgMHgzMCwgMHhCRiwgMHg0MCwgMHgzNywgMHgwMCwgMHg1MywgMHgwMCwgMHg0RCwgMHhBQiwgMHg1MCwKKzB4MDksIDB4QzEsIDB4NTUsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDAwLCAweEE3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDQzLCAweEYwLCAweDIxLCAweEMwLCAweDM3LCAweDAwLCAweEQ3LAorMHgyMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgzMywgMHgwMCwgMHgxNywgMHg4MiwgMHg1QywgMHg0MywgMHg3MCwKKzB4MEQsIDB4QzAsIDB4ODcsIDB4MDAsIDB4NUYsIDB4QzIsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MjksIDB4ODgsIDB4MDYsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDJGLCAweDIwLCAweDJGLAorMHg4MCwgMHhENCwgMHgwMywgMHgzQywgMHgwMiwgMHhDOCwgMHgzNCwgMHgwMCwgMHhCMywgMHgwMCwgMHhEQywgMHgwMCwgMHhGMCwKKzB4MkIsIDB4RTAsIDB4MjQsIDB4MjAsIDB4MzMsIDB4MTAsIDB4RjQsIDB4MDMsIDB4QjAsIDB4MEYsIDB4QzAsIDB4MEMsIDB4MDAsCisweDdGLCAweDAwLCAweENDLCAweDI3LCAweEYwLCAweDA5LCAweEMwLCAweDAzLCAweDIyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHhFNiwgMHgwMCwgMHg5RCwgMHg0MywgMHgwNiwgMHgwMywgMHgxMCwKKzB4MTEsIDB4NDAsIDB4MzQsIDB4MDAsIDB4ODEsIDB4MDAsIDB4NDQsIDB4MTQsIDB4RDAsIDB4MTgsIDB4RTAsIDB4MjYsIDB4MDAsCisweDExLCAweDA0LCAweDc0LCAweDAzLCAweEQwLCAweDBELCAweEMwLCAweDQ0LCAweDAxLCAweDQ3LCAweDg1LCAweDdDLCAweDAyLAorMHhEMCwgMHg1MSwgMHg0MCwgMHgwNywgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4QTAsIDB4NDQsIDB4MDAsIDB4OUQsIDB4MjEsIDB4NDAsIDB4MDMsIDB4OTIsIDB4MzksIDB4NDQsIDB4MzQsIDB4MDAsCisweDkxLCAweDAwLCAweDU2LCAweDA2LCAweEQyLCAweDI1LCAweDQ4LCAweDc0LCAweDAwLCAweDMxLCAweDg0LCAweDc0LCAweDgzLAorMHhEOCwgMHgwRCwgMHg0MCwgMHg0QywgMHgwMCwgMHg5RCwgMHgwMSwgMHg0NSwgMHgwMiwgMHhEMCwgMHgxMywgMHg0MCwgMHgwNywKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MDAsCisweDhELCAweDIwLCAweDU0LCAweDAzLCAweDEyLCAweDA4LCAweDQwLCAweDMwLCAweDIwLCAweEMxLCAweDQwLCAweDE2LCAweDAyLAorMHhEMCwgMHgyNCwgMHg0NCwgMHgzMiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgzMywgMHhEOCwgMHgwQywgMHg0NSwgMHgwMCwKKzB4MTAsIDB4ODUsIDB4MDAsIDB4MzQsIDB4MjIsIDB4RDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEIwLCAweDA2LCAweDA4LCAweDFGLCAweDAwLCAweEQ0LCAweDAzLAorMHgzMiwgMHgwOSwgMHhDMiwgMHgzQywgMHgwMCwgMHg5MywgMHgyQSwgMHg1NCwgMHgwMCwgMHhEOSwgMHgwRCwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MTMsIDB4MDAsIDB4RkMsIDB4OUIsIDB4QjEsIDB4MEYsIDB4QzAsIDB4MDQsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsCisweDAyLCAweEYxLCAweDAxLCAweEMwLCAweDAzLCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHhCMiwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhBRCwgMHgwMywgMHhGMSwgMHgwMywgMHhDMCwgMHgzRiwKKzB4MTAsIDB4N0YsIDB4MDQsIDB4RUMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzYsIDB4MEYsIDB4NDAsIDB4M0YsIDB4MDAsIDB4M0MsCisweDBCLCAweEYwLCAweDBGLCAweEMwLCAweDBELCAweDEwLCAweEI3LCAweDAwLCAweEZDLCAweDEyLCAweEY4LCAweDAzLCAweEMwLAorMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgyRiwKKzB4MDEsIDB4QkYsIDB4MDgsIDB4RkMsIDB4NDMsIDB4MzAsIDB4OEYsIDB4QzAsIDB4M0YsIDB4MDUsIDB4M0YsIDB4MDMsIDB4REMsCisweDIzLCAweEYwLCAweDNCLCAweEQwLCAweDNDLCAweDAwLCAweEZCLCAweDAwLCAweEZDLCAweDEzLCAweDMwLCAweDEzLCAweEMwLAorMHg3QywgMHgxMCwgMHgzRCwgMHg2MSwgMHhDQywgMHgxOCwgMHgzMCwgMHg0MywgMHhDMSwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MTAsIDB4ODcsIDB4MUQsIDB4OUQsIDB4MDIsIDB4REMsCisweDBGLCAweDAwLCAweDZGLCAweDQwLCAweEJGLCAweDAxLCAweDFELCAweDA0LCAweEM0LCAweDBCLCAweDcwLCAweDBELCAweDQwLAorMHhGQywgMHgwMCwgMHhGMSwgMHgwMywgMHhGNCwgMHhBNywgMHgxMCwgMHgxMSwgMHg0MCwgMHgwNCwgMHgwOCwgMHgxRCwgMHgwMCwKKzB4MDQsIDB4QUIsIDB4MTAsIDB4MjksIDB4NTEsIDB4MEMsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDIxLCAweDgyLCAweDBELCAweDA4LCAweDE0LCAweDAzLCAweDEwLCAweDZDLCAweDQ4LAorMHgzMywgMHgxNCwgMHg5RCwgMHgwMCwgMHgxNCwgMHgzMywgMHhEMiwgMHg0OCwgMHg2MCwgMHgzMCwgMHgwQSwgMHhDOSwgMHgwOCwKKzB4MzQsIDB4MDMsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MzAsIDB4MjAsIDB4MUQsIDB4MDAsIDB4MDQsIDB4MTAsIDB4MTAsIDB4NDAsCisweDQyLCAweDRELCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLAorMHg0NywgMHgwMCwgMHg5RCwgMHgwMywgMHg1NCwgMHg4MywgMHgxNCwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwMSwKKzB4NDQsIDB4MDMsIDB4NTAsIDB4MEMsIDB4NjAsIDB4MzQsIDB4MTAsIDB4RDAsIDB4MDAsIDB4NzQsIDB4MDMsIDB4MTQsIDB4MTUsCisweDE4LCAweDI0LCAweDAwLCAweDFELCAweDAxLCAweDQ0LCAweDgxLCAweDE2LCAweDAxLCAweDQxLCAweDBELCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHhBOCwgMHhDNywgMHgwMCwgMHg5RiwgMHgwMSwKKzB4NUMsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4MEYsIDB4MDMsIDB4NUMsIDB4ODMsIDB4RjAsIDB4OEQsCisweEMwLCAweDMwLCAweDA4LCAweERCLCAweDYwLCAweDNDLCAweDAzLCAweDMwLCAweDIwLCAweEM0LCAweDM0LCAweDAwLCAweDBGLAorMHg1MywgMHg0QywgMHgyNCwgMHgzMCwgMHgxMSwgMHhDNCwgMHgyOSwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MEQsIDB4MDAsIDB4QkYsIDB4MDAsIDB4REMsIDB4MDMsIDB4RjEsIDB4MEQsCisweEMwLCAweDNGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAzLCAweEQwLCAweDFGLCAweEMwLCAweDNGLCAweDAwLCAweEZGLAorMHg1MCwgMHhGMCwgMHg4MywgMHhGMCwgMHgwMywgMHhDOCwgMHg4RiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhCQywgMHhDNywgMHhGMCwKKzB4M0QsIDB4QzAsIDB4MUUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEEsCisweDA4LCAweEE1LCAweDAwLCAweDFGLCAweDAwLCAweDBDLCAweDAzLCAweEYwLCAweDBELCAweEM0LCAweDM1LCAweDAwLCAweDFGLAorMHgwMiwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MDUsIDB4QzAsIDB4MzQsIDB4MTAsIDB4MUYsIDB4MDAsIDB4NEMsIDB4MjIsIDB4MzQsIDB4MkMsIDB4QzAsIDB4MjgsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDY0LCAweDA0LCAweDlELAorMHgwMCwgMHhDNCwgMHgzQiwgMHhEMCwgMHgwRiwgMHg0MCwgMHgzQywgMHgwMCwgMHg5RCwgMHgwMCwgMHhGQywgMHgwMywgMHhEMCwKKzB4MEQsIDB4NDgsIDB4M0YsIDB4MDAsIDB4RjEsIDB4MDMsIDB4RjQsIDB4MkIsIDB4RDAsIDB4QTUsIDB4QzAsIDB4MjYsIDB4MDgsCisweDFELCAweDAwLCAweDQ0LCAweDBGLCAweDEwLCAweDNELCAweDQwLCAweDRDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHhFMiwgMHgzNCwgMHgwRCwgMHg0MCwgMHgwNCwgMHgwNywgMHg5MCwKKzB4MEMsIDB4NDQsIDB4MzAsIDB4MDgsIDB4OEMsIDB4MDAsIDB4MzQsIDB4MDMsIDB4OTAsIDB4MEMsIDB4NDgsIDB4MzIsIDB4MDAsCisweEMwLCAweDAxLCAweDM0LCAweDI3LCAweEQwLCAweDIwLCAweDQwLCAweDMwLCAweDA0LCAweDBELCAweDAwLCAweDA0LCAweDAwLAorMHgxMCwgMHgwNCwgMHg0MSwgMHgwQywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MEQsIDB4MDIsIDB4N0EsIDB4MDIsIDB4NkQsIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4OUUsIDB4NDIsIDB4NzgsIDB4MDAsCisweEFELCAweDAxLCAweDk0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDczLCAweDAyLCAweEU1LCAweDAxLCAweEI0LCAweDA3LAorMHhEMCwgMHgxNywgMHg0MCwgMHg1QiwgMHgwNCwgMHgzRCwgMHgwMSwgMHg4NCwgMHgwNiwgMHgxMiwgMHg5MiwgMHg0MSwgMHgzNCwKKzB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MzIsIDB4MDAsCisweDVGLCAweDA4LCAweDBELCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDMxLCAweDAyLCAweDhGLCAweDA4LCAweDM0LCAweDAzLAorMHhGMCwgMHg0QywgMHhDMCwgMHgzMywgMHgwQSwgMHhDNywgMHgxMCwgMHgzQywgMHgwMywgMHhGMCwgMHhBMSwgMHhFMCwgMHgzMCwKKzB4MDAsIDB4NUYsIDB4MDAsIDB4MEMsIDB4ODAsIDB4MzAsIDB4NTAsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEJBLCAweDNELCAweDIwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLAorMHhGMCwgMHgwRiwgMHhDMywgMHgzRiwgMHgwMCwgMHhCRiwgMHgyOCwgMHhGQywgMHgyMywgMHhGMCwgMHgwRiwgMHhDNCwgMHgzRiwKKzB4MDIsIDB4REIsIDB4MTAsIDB4RkMsIDB4MjMsIDB4RjAsIDB4MDcsIDB4RTAsIDB4M0UsIDB4ODAsIDB4N0YsIDB4MDAsIDB4RkMsCisweDAwLCAweEY4LCAweDgxLCAweEMyLCAweDBCLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHhBMCwgMHg1NywgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHg2RiwgMHhCMCwgMHg1RCwgMHhFMCwgMHhCNywKKzB4MTQsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MTMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDMsIDB4RDMsIDB4MTUsIDB4NEMsCisweDUzLCAweEYwLCAweDA1LCAweEUwLCAweDc3LCAweDAwLCAweDUzLCAweDAwLCAweDdDLCAweDAxLCAweDMwLCAweDBELCAweEMwLAorMHg0MCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg5OCwgMHgxRCwKKzB4MDAsIDB4RUIsIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTgsIDB4Q0YsIDB4NjAsIDB4QjgsIDB4MDEsIDB4RUQsIDB4MDAsIDB4QjQsCisweDRCLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAzLCAweEMxLCAweDA0LCAweDg0LCAweDFCLCAweEQwLCAweDA2LCAweDQwLAorMHgxQiwgMHgyMCwgMHg2MSwgMHgyMCwgMHhGNCwgMHgwMywgMHgxNCwgMHgwRiwgMHg0MCwgMHg0QywgMHg2MCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDIsIDB4NzksIDB4MTQsIDB4NjEsIDB4MjEsIDB4MzYsCisweDA3LCAweDE4LCAweDVFLCAweDRDLCAweDc5LCAweDAwLCAweDZELCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDY0LAorMHg3MSwgMHgwMSwgMHhFMSwgMHg0MSwgMHg5NiwgMHgxNywgMHhEMCwgMHgxNiwgMHg0MCwgMHg3RiwgMHgwMCwgMHg2NSwgMHgwMSwKKzB4QjYsIDB4MDcsIDB4OTQsIDB4MUUsIDB4NDIsIDB4MTAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE2LCAweDIwLCAweDMzLCAweDAwLCAweEM5LCAweDBCLCAweDM0LCAweDgzLCAweDEwLCAweDBDLCAweDQwLAorMHgzMCwgMHgwMCwgMHhDRCwgMHgwNywgMHg3NCwgMHgwMywgMHhEMCwgMHg5QywgMHg2MCwgMHgzMywgMHg0MCwgMHhDMSwgMHgwMCwKKzB4MTUsIDB4MDMsIDB4RDEsIDB4MUMsIDB4NDIsIDB4MzMsIDB4MDAsIDB4QzQsIDB4MDYsIDB4MzQsIDB4MTcsIDB4OTAsIDB4OUMsCisweDQwLCAweDU4LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LAorMHgxRiwgMHgwMCwgMHg3MywgMHgwMiwgMHg3QywgMHgwMSwgMHhCMCwgMHgwNSwgMHhDMiwgMHgxNywgMHgwMCwgMHg3RiwgMHgxMCwKKzB4N0MsIDB4MDEsIDB4RjAsIDB4MTUsIDB4QzAsIDB4MTMsIDB4MDAsIDB4NTEsIDB4MDAsIDB4NUMsIDB4MDEsIDB4RjAsIDB4NDYsCisweEMwLCAweDFGLCAweDAwLCAweDc3LCAweDEyLCAweEZBLCAweDFELCAweEIwLCAweEI3LCAweEM0LCAweDVDLCAweDIwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgwNCwKKzB4N0MsIDB4MDAsIDB4RjQsIDB4MDEsIDB4QzgsIDB4MDcsIDB4MDAsIDB4MUMsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsCisweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDY0LCAweDAwLCAweEYwLCAweDAxLCAweEM0LCAweDA3LCAweDQwLCAweDFCLAorMHgwMCwgMHg3QywgMHgwOCwgMHg3MCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4RTUsIDB4MDQsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MDksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweEEwLCAweDRDLCAweDAyLCAweDMyLCAweDA5LCAweEM4LCAweDI3LCAweDA5LCAweDkzLAorMHgwMCwgMHgzQywgMHg5MiwgMHgzMCwgMHgxOSwgMHhDMSwgMHgyNiwgMHgwMSwgMHg5RiwgMHgwMCwgMHgzQywgMHgwNiwgMHgzMCwKKzB4ODksIDB4QzAsIDB4NDEsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDIwLCAweDI2LCAweDEwLCAweDlELCAweDgwLCAweDc0LCAweDMyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELAorMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwOSwgMHg5MSwgMHgyMywgMHg3NCwgMHg0RSwgMHgxNCwKKzB4OTksIDB4NDIsIDB4QTQsIDB4MDQsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MEEsIDB4MTAsIDB4MjksIDB4NDQsIDB4MDQsIDB4MDAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEEwLCAweDM0LCAweDAwLCAweDlELAorMHgwMCwgMHg1NCwgMHgwMiwgMHhDMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHhDRCwgMHgwMCwgMHg0NCwgMHgwMiwgMHg1MCwKKzB4MDksIDB4NDIsIDB4MjUsIDB4NDAsIDB4OTEsIDB4MTgsIDB4NzQsIDB4MDIsIDB4OTAsIDB4MjksIDB4NDAsIDB4MjYsIDB4MDAsCisweDlELCAweDAwLCAweDc0LCAweDIyLCAweDA4LCAweDA4LCAweDQwLCAweDcxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyOCwgMHgzMCwgMHgwNSwgMHg4RCwgMHg1NCwgMHgzNCwgMHgwMiwgMHhEMCwKKzB4ODgsIDB4NDAsIDB4MjMsIDB4MDIsIDB4OEQsIDB4ODgsIDB4MDUsIDB4MjIsIDB4MTAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MDAsCisweDgxLCAweDAwLCAweDMwLCAweDAyLCAweDEwLCAweDA4LCAweDQyLCAweDIwLCAweDAwLCAweDhELCAweDAwLCAweDM2LCAweDIzLAorMHgxMCwgMHgwOCwgMHg0MCwgMHg1MCwgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUQsIDB4QjAsIDB4MDYsIDB4MjEsIDB4MUYsIDB4MjQsIDB4NUMsIDB4RDAsIDB4RjAsIDB4NjEsIDB4QzUsIDB4ODcsIDB4MDUsCisweDFGLCAweDAyLCAweDRDLCAweDU4LCAweDcwLCAweDIxLCAweEMwLCAweDA1LCAweDA1LCAweDEzLCAweDM0LCAweDdDLCAweDUwLAorMHgzMCwgMHgwMSwgMHhDMCwgMHg4NiwgMHgwMiwgMHgxRiwgMHgwQSwgMHg3QywgMHg1OCwgMHgzNCwgMHg0NSwgMHhDMSwgMHg3NSwKKzB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QTAsIDB4MkYsIDB4MDUsCisweEJGLCAweDM0LCAweDdDLCAweDAyLCAweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDAxLCAweEJGLCAweDA0LCAweDdDLCAweDEyLAorMHhGNCwgMHg0QiwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwQiwgMHhDMCwgMHg2QiwKKzB4MDAsIDB4QkYsIDB4MjEsIDB4RkMsIDB4MTIsIDB4RjAsIDB4NEIsIDB4QzEsIDB4NjcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDJGLCAweDAwLCAweDkzLCAweDAyLCAweERDLCAweDAyLAorMHhGMCwgMHg4OSwgMHhDMCwgMHhBNiwgMHgxNSwgMHg5QiwgMHgwMCwgMHg1QywgMHg0MiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgyRSwKKzB4MDQsIDB4QkYsIDB4MDAsIDB4REMsIDB4MDIsIDB4QjIsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDgsIDB4OUYsIDB4MDAsIDB4Q0MsCisweEMyLCAweDMyLCAweDBCLCAweEQwLCAweDYwLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxQywgMHgxOCwgMHgwNywgMHgwMSwgMHgxQiwgMHg2MCwgMHg3NCwgMHhBOCwgMHhEMCwgMHhBMCwgMHg0MiwgMHg4NCwKKzB4MDAsIDB4MTEsIDB4MjAsIDB4NzQsIDB4MDgsIDB4MTAsIDB4NDEsIDB4NDAsIDB4ODQsIDB4MDAsIDB4MTcsIDB4NEEsIDB4NDQsCisweDI4LCAweDEwLCAweDAxLCAweDQ0LCAweDA3LCAweDIwLCAweDFELCAweDAwLCAweDQ0LCAweDA4LCAweDE0LCAweDAxLCAweDQwLAorMHg3MCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHhBMCwgMHhBMSwKKzB4ODQsIDB4ODEsIDB4MDIsIDB4MzQsIDB4MDIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4MjIsIDB4MDEsIDB4ODUsIDB4MTQsIDB4MzQsCisweDUyLCAweDEyLCAweDA5LCAweDYxLCAweDIyLCAweDAwLCAweDhELCAweDAwLCAweDE0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLAorMHgzMywgMHg4MCwgMHg4RCwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg2MiwgMHg0QSwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjAsIDB4MjUsIDB4MDAsIDB4OTksIDB4ODAsIDB4NzQsCisweDAyLCAweEMwLCAweDA4LCAweDQwLCAweDI2LCAweDIwLCAweDk1LCAweDAyLCAweDM0LCAweDAyLCAweDEwLCAweDA5LCAweDRBLAorMHgyNCwgMHgwMCwgMHg5NSwgMHgwMCwgMHg1NCwgMHgwMiwgMHgxMCwgMHgwRCwgMHg0MCwgMHhBNywgMHgwMCwgMHg4RCwgMHgxNCwKKzB4NDUsIDB4MDIsIDB4MTAsIDB4MEQsIDB4NDAsIDB4NjIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDI3LCAweDAxLCAweDkzLCAweDg3LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEM4LAorMHgyNiwgMHgwOCwgMHg5NywgMHgwMCwgMHg1RSwgMHgwMiwgMHgxMCwgMHgwOCwgMHhDMCwgMHgyNiwgMHgyMCwgMHg5RiwgMHgyMCwKKzB4NUMsIDB4MDIsIDB4QjAsIDB4NTksIDB4QzAsIDB4MjcsIDB4MjAsIDB4OUUsIDB4MjMsIDB4NEMsIDB4NDIsIDB4MzAsIDB4NDksCisweEMwLCAweDE2LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLAorMHg2MSwgMHgwMiwgMHg5RiwgMHgwNSwgMHg3QywgMHgwMiwgMHhEMCwgMHgwOSwgMHhDMCwgMHgyMSwgMHg0MCwgMHg5QiwgMHg4NCwKKzB4N0MsIDB4MDIsIDB4RjQsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NkMsIDB4NDIsIDB4RDQsIDB4MzksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDIxLCAweDdDLCAweDAyLCAweEYwLCAweDQ4LCAweEMwLCAweDQ5LCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4NCwgMHgwNCwgMHgxRiwgMHgwMiwKKzB4NkMsIDB4MDAsIDB4RTAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MTMsIDB4ODAsIDB4N0MsIDB4MDAsIDB4MzAsIDB4MDEsCisweEMwLCAweDA1LCAweDA0LCAweDFGLCAweDEwLCAweDRDLCAweDAwLCAweDcwLCAweDExLCAweEMyLCAweDA3LCAweDAxLCAweDFGLAorMHhBMiwgMHgzQywgMHgyMCwgMHgxMCwgMHg0MSwgMHhDMiwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4REMsIDB4MDAsIDB4NUQsIDB4MjAsIDB4RDQsIDB4NjUsIDB4QzAsIDB4MDUsCisweDQwLCAweDE0LCAweDAwLCAweDUwLCAweDAwLCAweDc0LCAweDgxLCAweDEwLCAweDA1LCAweEMwLCAweDFDLCAweDAwLCAweDZELAorMHgyMCwgMHg4MCwgMHgwRCwgMHg3MCwgMHgwNywgMHg4MCwgMHgxRCwgMHgxMCwgMHg1RCwgMHg4MCwgMHhGNCwgMHgwMSwgMHgxMCwKKzB4MzcsIDB4NDIsIDB4NTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweEEwLCAweEYyLCAweDAyLCAweENELCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDBDLCAweDUwLCAweDMwLCAweDgwLCAweEMxLAorMHgwMCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMSwgMHgwMCwgMHhDRCwgMHgwQSwgMHgwMCwgMHgwQiwgMHhEOCwKKzB4OEMsIDB4NDgsIDB4QjIsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4MzYsIDB4OTMsIDB4OTAsIDB4MDAsIDB4NDQsIDB4NTMsIDB4MDAsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg4LCAweDM4LCAweDAwLCAweENELAorMHgwMSwgMHg5NCwgMHgwMCwgMHhEMCwgMHgwRSwgMHg0MCwgMHgzOCwgMHhDMiwgMHhFMSwgMHgwNCwgMHhCNCwgMHgyMywgMHgxMSwKKzB4MEUsIDB4NDAsIDB4MzgsIDB4ODAsIDB4OEQsIDB4MDAsIDB4ODUsIDB4MEIsIDB4RDgsIDB4MDYsIDB4NDAsIDB4MDksIDB4MjAsCisweEVELCAweDA0LCAweDM0LCAweDAwLCAweDk0LCAweDBBLCAweDQxLCAweDA3LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgwRCwgMHg4NCwgMHgwNCwgMHhGMCwKKzB4MUUsIDB4QzEsIDB4NzAsIDB4MDUsIDB4RTEsIDB4MEQsIDB4MzQsIDB4NTcsIDB4MzQsIDB4M0YsIDB4QzAsIDB4NzksIDB4MDAsCisweEFGLCAweDAxLCAweDhDLCAweDA3LCAweDcwLCAweDE2LCAweEMwLCAweDZCLCAweDAwLCAweEVGLCAweDBCLCAweEJDLCAweDA3LAorMHhCMCwgMHgxNiwgMHhDMCwgMHg0NywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4QTIsIDB4MTUsIDB4MTAsIDB4REYsIDB4ODQsIDB4NUMsIDB4MDAsIDB4RjAsIDB4NEQsIDB4QzAsIDB4MzcsIDB4MDAsCisweERGLCAweDA0LCAweDdDLCAweDFCLCAweEYwLCAweDZELCAweEM5LCAweDM3LCAweDIwLCAweDFCLCAweDAwLCAweDdDLCAweDAwLAorMHg3OCwgMHgwNSwgMHhDMCwgMHgwNywgMHgxMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMCwgMHg3NCwgMHgwRCwgMHhDMCwgMHg0MywKKzB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4N0QsIDB4MDAsCisweEZGLCAweDExLCAweDhDLCAweDI0LCAweDcwLCAweDFGLCAweEM1LCAweDdDLCAweDAwLCAweEYzLCAweDExLCAweEZDLCAweDA3LAorMHgzMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwMiwgMHhCNywgMHgwNSwgMHhGQywgMHgwNywgMHhGOCwgMHg5NiwgMHhDMCwgMHg2QywKKzB4MDIsIDB4RjMsIDB4ODksIDB4Q0MsIDB4MDcsIDB4MjQsIDB4MUIsIDB4QzQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDA4LCAweDM5LCAweDIwLCAweEVELCAweDA0LCAweDg0LCAweDAwLAorMHgxOCwgMHgwRSwgMHg1MCwgMHgzOCwgMHgyMiwgMHhFMSwgMHgwMCwgMHhCNCwgMHgyMywgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwKKzB4MDAsIDB4QTcsIDB4MDAsIDB4QjQsIDB4MjMsIDB4RDAsIDB4MDYsIDB4NDgsIDB4MEQsIDB4MDIsIDB4RkIsIDB4NDAsIDB4ODUsCisweDAwLCAweEYwLCAweDg4LCAweEUxLCAweDU0LCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwNCwgMHhFRCwgMHg4MCwgMHhBNCwgMHgwMCwgMHg1OCwgMHgwQywgMHg0MCwgMHgzOSwKKzB4MDAsIDB4RTksIDB4MDAsIDB4QjQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MUIsIDB4MDAsIDB4QTUsIDB4MDQsIDB4QjQsCisweDAzLCAweEQwLCAweDAzLCAweDQ2LCAweDA4LCAweDgyLCAweEUxLCAweDAwLCAweDg0LCAweDAzLCAweDUwLCAweDBDLCAweDQwLAorMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyOCwgMHg2MSwKKzB4MDAsIDB4Q0QsIDB4NDEsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzQsIDB4MDAsIDB4RDEsIDB4NDIsIDB4MzQsCisweDAzLCAweDEyLCAweDhDLCAweDQwLCAweDEzLCAweDAwLCAweDA1LCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweEIwLCAweDQ0LAorMHgwMSwgMHgwMCwgMHhDOSwgMHgwMiwgMHgwNCwgMHg0MSwgMHhEMCwgMHgzNCwgMHg1MCwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4NDUsIDB4MjAsIDB4RkYsIDB4OUEsIDB4NkMsCisweDAwLCAweDQxLCAweDBGLCAweEMwLCAweDNELCAweDAwLCAweEZCLCAweDAwLCAweEZDLCAweDAzLCAweDMwLCAweDFGLCAweEMwLAorMHgzNywgMHgwMCwgMHg5NywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMSwgMHg0NCwgMHgwMCwgMHgwNiwgMHhGMywgMHg0MiwKKzB4NEMsIDB4NEIsIDB4MzAsIDB4MjUsIDB4QzAsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweDAwLCAweEE3LCAweDAxLCAweERGLCAweDAwLCAweDdDLCAweDA4LCAweEYwLCAweDBELCAweEMwLAorMHgzNywgMHgyMCwgMHhERiwgMHgwOCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDNCwgMHgzNywgMHgwMCwgMHg5RiwgMHg4MCwKKzB4M0MsIDB4OEIsIDB4RjAsIDB4MDEsIDB4QzgsIDB4ODcsIDB4MDAsIDB4REYsIDB4MDAsIDB4M0MsIDB4MDAsIDB4OTYsIDB4NjUsCisweEMwLCAweDA1LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDA4LAorMHgwRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzQywgMHgwMCwgMHhGMywgMHgxMCwKKzB4NUMsIDB4MDMsIDB4RTAsIDB4MEYsIDB4QzAsIDB4MkYsIDB4MDIsIDB4QkYsIDB4MDAsIDB4RkMsIDB4ODMsIDB4MzAsIDB4MDMsCisweEMxLCAweDBELCAweDIwLCAweEYzLCAweDEwLCAweDdDLCAweDA3LCAweDMwLCAweDk3LCAweEMyLCAweDEzLCAweDIyLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwgMHgyMCwgMHhDNiwgMHgwNCwgMHhERCwgMHgwMCwKKzB4NzQsIDB4MEMsIDB4RDAsIDB4MEQsIDB4NTAsIDB4MzQsIDB4MjAsIDB4RDEsIDB4MDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsCisweDQwLCAweDI3LCAweDAwLCAweDE5LCAweDAxLCAweDc0LCAweDE4LCAweDAwLCAweDMxLCAweEMwLCAweDQ3LCAweDAxLCAweEQxLAorMHgwMCwgMHg3NCwgMHgyMCwgMHgxMCwgMHgyOSwgMHg0MCwgMHgxNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4NDQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NzQsIDB4NDQsIDB4RDAsIDB4MEMsCisweDQwLCAweDM0LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDM3LCAweDgwLCAweDFELAorMHgwMywgMHg3NCwgMHgxMCwgMHgxMCwgMHgxMSwgMHg0MCwgMHg0RiwgMHgwMCwgMHhGMSwgMHgwMCwgMHg3NCwgMHg0MywgMHgxOSwKKzB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDI4LCAweDIwLCAweDIwLCAweENELCAweDgwLCAweDI0LCAweDAwLCAweEQyLCAweDBDLCAweDQwLCAweDMwLCAweDIwLCAweEMxLAorMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywgMHg4MCwgMHgwOSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgxMCwKKzB4MDAsIDB4NDQsIDB4MDcsIDB4NDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MTMsIDB4ODQsIDB4NDAsIDB4NDMsIDB4QTAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEIwLCAweDA2LCAweDAwLCAweEVGLAorMHg4MCwgMHg3QywgMHg4MCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzOCwgMHgwMCwgMHhGMywgMHgwMCwgMHhDNSwgMHgwMywgMHhGMCwKKzB4MEYsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDUsIDB4MDAsCisweEYzLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDA5LCAweEM4LCAweDAzLCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwgMHhBOCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwKKzB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RUMsIDB4ODMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsCisweDNCLCAweDQwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEU4LCAweDBELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLAorMHhGMCwgMHg0MywgMHhDMCwgMHgxNywgMHgyMSwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTgsIDB4M0YsIDB4MDQsIDB4QjMsIDB4MDgsIDB4Q0MsIDB4OTMsIDB4RjEsIDB4Q0YsIDB4QzAsIDB4M0MsIDB4NDIsCisweEYzLCAweDAwLCAweEZDLCAweDAzLCAweDMwLCAweDEzLCAweEMwLCAweDNELCAweDA1LCAweEY3LCAweDJDLCAweEZDLCAweDA0LAorMHhCMCwgMHgwRiwgMHhDMCwgMHgzRSwgMHgwNiwgMHgzRiwgMHgwNCwgMHhFQywgMHgwMywgMHhGMCwgMHg4MywgMHhDMCwgMHgwRiwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTgsIDB4QkYsIDB4MDAsCisweDFCLCAweDA0LCAweEM0LCAweEFGLCAweEQwLCAweDZGLCAweDQwLCAweEJDLCAweDAzLCAweEYxLCAweDg0LCAweEY0LCAweDBGLAorMHgxMCwgMHgwOSwgMHhDNCwgMHg3RCwgMHgwOCwgMHhENSwgMHgwOCwgMHg3NCwgMHgwMCwgMHg1MCwgMHgyRiwgMHg0MiwgMHgzQywKKzB4MTAsIDB4MUQsIDB4MTIsIDB4QzQsIDB4ODcsIDB4RDAsIDB4NDAsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLCAweDA0LCAweDgxLCAweDIyLCAweDA0LCAweDAzLAorMHhEMCwgMHgyQywgMHg0NCwgMHgzMSwgMHgwMSwgMHhDMSwgMHgxOCwgMHgyNCwgMHgwQiwgMHg1MCwgMHgwNCwgMHg0MCwgMHgzMSwKKzB4MDAsIDB4QzUsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MkMsIDB4NDQsIDB4MzMsIDB4MDEsIDB4OEQsIDB4MDYsIDB4MjQsCisweDAzLCAweEQwLCAweDAwLCAweDQwLCAweDQ3LCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBMCwgMHgzNCwgMHgzMCwgMHgwOSwgMHg0MSwgMHg0NiwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzNSwKKzB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4MTQsIDB4MEQsIDB4NDAsIDB4MzUsIDB4MDAsIDB4RDQsIDB4MDAsIDB4NzQsCisweDIyLCAweDUwLCAweDBELCAweDQwLCAweDM1LCAweDAwLCAweERELCAweDAwLCAweEM0LCAweDAzLCAweEQwLCAweDMzLCAweDQwLAorMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwgMHgzNywKKzB4MDAsIDB4OTMsIDB4MDMsIDB4NEMsIDB4ODMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzUsIDB4MjAsIDB4RDMsIDB4ODAsIDB4N0MsCisweDAzLCAweDcyLCAweDkxLCAweEM4LCAweDM1LCAweDAwLCAweEQ3LCAweDgwLCAweDdDLCAweDQ1LCAweEIwLCAweDBELCAweEMwLAorMHgzNywgMHgxOCwgMHgxRiwgMHhBMiwgMHg2QywgMHgwMywgMHhGMCwgMHgxMSwgMHhDMCwgMHgwMywgMHgyMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsIDB4QkYsIDB4NDAsIDB4RkQsCisweDAzLCAweEYwLCAweDBELCAweEMyLCAweDM2LCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAzLCAweEYwLCAweDAzLCAweEMxLAorMHgzRiwgMHgwMCwgMHhEOSwgMHgwMCwgMHhGQywgMHg0MSwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzRSwgMHgwOCwgMHhGQywgMHgwOSwKKzB4RkMsIDB4MDMsIDB4RjAsIDB4MDMsIDB4ODAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDMxLCAweDAxLCAweDlGLCAweDAyLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHgzMSwgMHgwMCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMSwgMHhDMCwgMHgzNSwgMHgwMCwgMHhENywgMHgwMCwKKzB4NEMsIDB4MjIsIDB4QjAsIDB4MEMsIDB4QzgsIDB4MzQsIDB4MDgsIDB4MDcsIDB4MDAsIDB4NUMsIDB4MDMsIDB4MzAsIDB4MjEsCisweEMwLCAweDA4LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLAorMHhGQywgMHgwQywgMHg5RCwgMHgwMCwgMHhGQywgMHgwRiwgMHhEMCwgMHgwRiwgMHg0NCwgMHgzQywgMHgwMCwgMHhGMSwgMHgwMCwKKzB4RjQsIDB4MDcsIDB4RDAsIDB4MTUsIDB4QzIsIDB4MzksIDB4MDgsIDB4RjAsIDB4MDMsIDB4MkMsIDB4OEIsIDB4RDAsIDB4MEYsCisweDQ4LCAweDNDLCAweDAwLCAweEQ1LCAweDEwLCAweEM0LCAweDJGLCAweDEwLCAweDA5LCAweDQwLCAweDRDLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwRCwgMHgwMCwKKzB4MzQsIDB4NDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MUIsIDB4RDIsIDB4MTQsCisweDQ4LCAweDMyLCAweDAwLCAweEM4LCAweDg3LCAweDA0LCAweDBELCAweEQwLCAweDBDLCAweDAwLCAweDMxLCAweDAwLCAweDQxLAorMHgxMCwgMHgxNCwgMHgyMywgMHgxMCwgMHgwMCwgMHg0MCwgMHgxQywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ODgsIDB4NzgsIDB4MDAsIDB4NkQsIDB4MDEsIDB4QjQsIDB4NjcsIDB4RDAsIDB4OUUsCisweDQwLCAweDc4LCAweDAwLCAweEUxLCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQwLCAweDczLCAweDQ4LCAweEVELAorMHgwMSwgMHhBNCwgMHgwNSwgMHhEMSwgMHgxRSwgMHg0MCwgMHg3MSwgMHgwMCwgMHhFNSwgMHgwMSwgMHhDNCwgMHgxNywgMHgxNCwKKzB4OTIsIDB4NDAsIDB4MTgsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDEwLCAweDMwLCAweDAyLCAweENGLCAweDBDLCAweDM0LCAweDAzLCAweEYwLCAweDBDLCAweDQ4LCAweDMxLCAweDAwLCAweEMzLAorMHgwMCwgMHgzQywgMHg0MywgMHhGMCwgMHgwNCwgMHhDMSwgMHgzMiwgMHgwMCwgMHhDRiwgMHgxMCwgMHgwQywgMHgwMCwgMHhCMCwKKzB4OEMsIDB4RDAsIDB4MzEsIDB4QTAsIDB4MTcsIDB4MjIsIDB4NUMsIDB4MTcsIDB4MzAsIDB4NTAsIDB4RDAsIDB4NDgsIDB4NDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDNELCAweDBDLCAweEZGLAorMHg4OCwgMHhEQywgMHg4MywgMHhGMCwgMHgyRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhERiwgMHgwMCwgMHhGNCwgMHgwMywgMHhGMCwKKzB4MEYsIDB4QzAsIDB4M0QsIDB4MzAsIDB4RjMsIDB4MDgsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0UsIDB4QTAsCisweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDg5LCAweEMwLCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgyNCwgMHg1RiwgMHg0MCwgMHg3QywgMHg2RiwgMHgzMCwKKzB4QkQsIDB4QzAsIDB4RjQsIDB4MDUsIDB4RDMsIDB4NjgsIDB4MUMsIDB4NjMsIDB4NzAsIDB4MDEsIDB4RDAsIDB4MzYsIDB4MDEsCisweERGLCAweDQ5LCAweDRDLCAweDA1LCAweDMwLCAweDRELCAweEM5LCAweDM3LCAweDAzLCAweDFGLCAweDAwLCAweDRELCAweDYzLAorMHhGMCwgMHgxMSwgMHg4NCwgMHg1NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4ODgsIDB4MzksIDB4MDEsIDB4NkQsIDB4NjAsIDB4MzYsIDB4MTMsIDB4MTAsIDB4NEUsIDB4NDAsIDB4QjgsIDB4MDEsCisweEUxLCAweDBDLCAweDg0LCAweDAzLCAweDEwLCAweDA3LCAweEMwLCAweEI4LCAweDA0LCAweEVELCAweDg0LCAweEFDLCAweDAxLAorMHgxMCwgMHg0RSwgMHg0OCwgMHgzQiwgMHgwNCwgMHhDRCwgMHgwMCwgMHg4NCwgMHgwMywgMHhEMCwgMHgwMiwgMHg0MCwgMHg0OCwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NzksIDB4MDEsCisweEVELCAweDAzLCAweDk0LCAweDA3LCAweDE4LCAweDFFLCAweDUwLCAweDdBLCAweDAwLCAweEM1LCAweDAxLCAweDk0LCAweDE3LAorMHg1MCwgMHgxMiwgMHg0MSwgMHg3OCwgMHgwMCwgMHhDRCwgMHgwMSwgMHhDNCwgMHgwNCwgMHg5MiwgMHg5RSwgMHg0MiwgMHg3QiwKKzB4MDEsIDB4MkQsIDB4MjEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4MTAsIDB4NDAsIDB4MEQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLAorMHgxNSwgMHgwQywgMHg2MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgyNCwgMHgwMywgMHgxMCwgMHgxNCwgMHg0MSwgMHgzMCwKKzB4MDAsIDB4Q0QsIDB4NDAsIDB4MjQsIDB4MjEsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDQsIDB4MDQsCisweDAzLCAweEQwLCAweDhDLCAweDQwLCAweDQ5LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNywgMHhBOCwgMHgxNSwgMHgwMCwgMHg3RiwgMHgwQSwgMHg3QywgMHg4MSwgMHgzOCwgMHgwNSwgMHhDMCwgMHgxNiwKKzB4MDAsIDB4NTMsIDB4MDAsIDB4NUMsIDB4MDEsIDB4NzAsIDB4MjcsIDB4QzAsIDB4MTQsIDB4MDAsIDB4NUYsIDB4MDAsIDB4Q0MsCisweDg1LCAweEIwLCAweDA1LCAweEMwLCAweDE3LCAweDEwLCAweDdGLCAweDA0LCAweDRDLCAweDAxLCAweEYwLCAweDE3LCAweEMwLAorMHg1RCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgwNywKKzB4MDgsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4NDAsIDB4MUYsIDB4MDAsIDB4MUMsCisweDAwLCAweEYwLCAweDAxLCAweEM0LCAweDA1LCAweDgwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDc0LCAweDAxLCAweEMyLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMiwgMHg3QywgMHgwMCwgMHhGMiwgMHg0MSwgMHg4MCwgMHg0QSwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NjUsIDB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsCisweDA2LCAweDcwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDA4LCAweDRDLCAweDE2LCAweDMwLCAweDM5LCAweEMwLAorMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgxMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyMywgMHgwMCwgMHg5NywgMHgwOCwKKzB4NUMsIDB4MDYsIDB4MzAsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDY2LCAweDBFLCAweDlELCAweDIwLCAweDc0LCAweDBBLCAweEQyLCAweDA5LCAweDQwLAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMywgMHg0NCwgMHgwRSwgMHgxNSwgMHgwOCwgMHg0MCwgMHg2NCwgMHgyMCwgMHg5RCwgMHgxQiwKKzB4NzAsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MTEsIDB4MDQsIDB4QUUsIDB4MTAsIDB4MDksCisweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLAorMHgyNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHg2MiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg4RCwgMHgwMiwKKzB4NDQsIDB4NDIsIDB4MTEsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDksIDB4OUQsIDB4MDAsIDB4NzAsIDB4NDIsIDB4RDIsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweDgxLCAweDAwLCAweDU0LCAweDBBLCAweDEwLCAweDA5LCAweDQwLCAweDYzLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyOCwgMHgyMCwgMHgwNSwgMHg4RCwgMHgxNCwKKzB4MzQsIDB4MDIsIDB4RDAsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MjIsIDB4OEQsIDB4NDgsIDB4MDQsIDB4MDIsIDB4MTEsIDB4MDksCisweDQwLCAweDIxLCAweDEwLCAweDhELCAweDA4LCAweDM0LCAweDAyLCAweEQ4LCAweDA4LCAweDQwLCAweDIzLCAweDQwLCAweDgxLAorMHgwOCwgMHgwNCwgMHg5MiwgMHgxMCwgMHg0OCwgMHg0OCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4MDYsIDB4MDEsIDB4MUYsIDB4MDQsIDB4N0MsIDB4NTAsIDB4NzAsIDB4NjAsCisweEMxLCAweDgzLCAweDA1LCAweDFGLCAweDk2LCAweDRDLCAweDUwLCAweDMwLCAweEExLCAweEQwLCAweDA1LCAweDA1LCAweDFGLAorMHgxNiwgMHg3QywgMHgyOCwgMHhFMCwgMHhFMSwgMHhDOSwgMHgwNywgMHgxNSwgMHgxNywgMHgxNiwgMHg1QywgMHgwNCwgMHgzMCwKKzB4MTEsIDB4QzAsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksCisweEE4LCAweDI3LCAweDI1LCAweEJGLCAweDM0LCAweDdFLCAweDAyLCAweEYwLCAweDQ5LCAweEMwLCAweDI3LCAweDAxLCAweDlGLAorMHgwNCwgMHg3RCwgMHgwMiwgMHhGMCwgMHgxQiwgMHhDMCwgMHgyNiwgMHgyMCwgMHg5RiwgMHgwNCwgMHhCQywgMHgwNywgMHhGMCwKKzB4MTksIDB4QzAsIDB4MjcsIDB4MDUsIDB4QkYsIDB4MDQsIDB4N0MsIDB4MjIsIDB4RjQsIDB4Q0IsIDB4QzEsIDB4NjcsIDB4NjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEEwLCAweDJGLCAweDAzLCAweDkzLAorMHgwMywgMHhDQywgMHgxMiwgMHg3MCwgMHgyOSwgMHhDMCwgMHhBNSwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHg0MiwgMHgzMCwKKzB4MEIsIDB4QzAsIDB4MkUsIDB4MDAsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MEIsCisweEIzLCAweDQwLCAweENDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDY3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwgMHg0NywgMHgwMSwgMHgxQiwgMHg0MywgMHg2OCwgMHgyOCwgMHgxMCwKKzB4MDEsIDB4NDAsIDB4ODQsIDB4MDIsIDB4MUQsIDB4MEUsIDB4NDUsIDB4MDgsIDB4MTAsIDB4MDEsIDB4NDAsIDB4ODUsIDB4MDIsCisweDExLCAweDIwLCAweDQ0LCAweDAwLCAweDEzLCAweDIxLCAweEMwLCAweDQ2LCAweDAxLCAweDFCLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHg0NCwgMHg3MywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4QTIsIDB4QTMsIDB4MTAsIDB4ODEsIDB4MDYsIDB4MDQsIDB4MDIsIDB4NTAsIDB4NjgsIDB4NDAsIDB4MjEsIDB4ODEsCisweDhELCAweDkwLCAweDA2LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDIxLCAweDQwLCAweDgxLCAweDE2LCAweDQ0LCAweDAyLAorMHg5MCwgMHgyOCwgMHg0MCwgMHhBMCwgMHgwMSwgMHg4MSwgMHg0MCwgMHgwNSwgMHgwMiwgMHg5MCwgMHgwOCwgMHg0MCwgMHg0MywKKzB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4MjAsCisweDk5LCAweDAyLCAweDY2LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDhELCAweDIwLCAweDQ2LCAweDAyLAorMHgwNCwgMHgwOSwgMHg0MCwgMHgyNSwgMHgwMCwgMHhDMSwgMHgwMCwgMHg0NCwgMHgwMywgMHgxOCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MjAsIDB4ODksIDB4MDAsIDB4NDQsIDB4MDIsIDB4ODQsIDB4NjksIDB4NDAsIDB4NjMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDI4LCAweDI1LCAweDIwLCAweDkzLCAweDIxLCAweDRDLCAweDAyLAorMHg3MCwgMHgwOSwgMHhDMCwgMHgyNSwgMHgwMCwgMHg5RiwgMHg4MCwgMHg0QywgMHgwMiwgMHgzMiwgMHgwOSwgMHhDOCwgMHgyNywKKzB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDIsIDB4QjEsIDB4MDksIDB4QzQsIDB4MjQsIDB4MTAsIDB4OTMsIDB4MTMsIDB4NEMsCisweDAyLCAweEIwLCAweDA5LCAweEMwLCAweDE3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4RiwgMHgwNCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDIsIDB4RjAsIDB4ODksIDB4QzAsIDB4MjMsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0QsCisweDI2LCAweEYxLCAweDA5LCAweEM0LCAweDI2LCAweEE4LCAweDlGLCAweDAzLCAweDNDLCAweDgyLCAweDcwLCAweDA5LCAweEMwLAorMHg1MywgMHgwOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwKKzB4MDQsIDB4MUYsIDB4NDAsIDB4NEMsIDB4MTAsIDB4RjAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4ODAsIDB4MTMsIDB4MTAsIDB4NUMsCisweDg0LCAweDcwLCAweDAxLCAweEMwLCAweDA2LCAweDAwLCAweDFGLCAweDIwLCAweDRDLCAweDA4LCAweDMwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgyNiwgMHg0QywgMHgwMCwgMHgzMCwgMHgyMSwgMHhDMCwgMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjAsIDB4NUMsIDB4MDQsIDB4NUQsIDB4MDAsIDB4ODQsCisweDAxLCAweEQwLCAweDA1LCAweDQ0LCAweDE3LCAweDQwLCAweDcxLCAweDgzLCAweEY0LCAweDAxLCAweEQwLCAweDA3LCAweDQwLAorMHgxNCwgMHgwMCwgMHg3RCwgMHgwMCwgMHg4NCwgMHhDNSwgMHgzNCwgMHgwNSwgMHg0MCwgMHgxNywgMHgwMCwgMHg3RCwgMHgwMSwKKzB4QzQsIDB4MUQsIDB4NTAsIDB4MDUsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweEEwLCAweEIyLCAweDIwLCAweENELCAweDIwLCAweDI0LCAweDJCLCAweEQxLCAweDBDLCAweDQwLAorMHgzMywgMHgwMCwgMHhDOSwgMHgwOCwgMHgxNCwgMHgwNywgMHg1MiwgMHgwRCwgMHgyMSwgMHg3MiwgMHg4MCwgMHhDRCwgMHgwMSwKKzB4MDQsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDcsIDB4NEYsIDB4NTAsIDB4MEMsCisweDQ2LCAweDUzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgyLAorMHgzOCwgMHgwMCwgMHhDRCwgMHgwNCwgMHhBNCwgMHgwMSwgMHhEMCwgMHg0RSwgMHg0MCwgMHg3QiwgMHgwMiwgMHhFOSwgMHgwMCwKKzB4QjQsIDB4MEEsIDB4RDAsIDB4MjcsIDB4NDgsIDB4MzgsIDB4MDQsIDB4RUQsIDB4MDIsIDB4ODQsIDB4MDMsIDB4MTAsIDB4MEUsCisweDQwLCAweDNCLCAweDAwLCAweEVELCAweDgyLCAweEM0LCAweDAzLCAweDUwLCAweDBFLCAweDQwLCAweDE3LCAweDA4LCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHgwNSwKKzB4QUQsIDB4MDcsIDB4RjAsIDB4NUUsIDB4QzAsIDB4N0YsIDB4MDEsIDB4NjksIDB4NDEsIDB4OUMsIDB4MDUsIDB4NzAsIDB4MUUsCisweEUwLCAweDdBLCAweDAwLCAweEZFLCAweDAxLCAweENELCAweDg0LCAweDMwLCAweDFFLCAweEMwLCAweDdCLCAweDAwLCAweEZGLAorMHgwMSwgMHhDQywgMHgwNywgMHg3MCwgMHg5RSwgMHhDMiwgMHg1NywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MTUsIDB4MDAsIDB4REYsIDB4NDIsIDB4NUMsIDB4MDAsIDB4RjAsIDB4QUQsCisweEMwLCAweDM3LCAweDAwLCAweDU3LCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA0LCAweEMwLCAweDM1LCAweDAwLCAweDFGLAorMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwRCwgMHhDMSwgMHgzNywgMHgwMiwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4NEQsIDB4QzAsIDB4NDMsIDB4NDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweEEwLCAweDVGLCAweDAwLCAweEYzLCAweDUzLCAweEZDLCAweDI2LCAweDMwLCAweDNGLCAweEMwLCAweEZGLCAweDAwLCAweEZGLAorMHgwMSwgMHhDQywgMHgwNywgMHhGMCwgMHgxQiwgMHhDMCwgMHg3RiwgMHgyMiwgMHhCRiwgMHgwMSwgMHhDQywgMHgwNywgMHhGMCwKKzB4MUYsIDB4QzEsIDB4N0MsIDB4MDAsIDB4RjMsIDB4MDEsIDB4RUMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzEsIDB4MDgsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDg4LCAweEJELCAweDAwLCAweEUxLAorMHgwMCwgMHhCNCwgMHgwQSwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgyMiwgMHg4MCwgMHgwMiwgMHhEMCwKKzB4MDIsIDB4NDAsIDB4M0IsIDB4MDAsIDB4QUQsIDB4MDgsIDB4ODQsIDB4MjMsIDB4RDIsIDB4MEUsIDB4NjAsIDB4M0QsIDB4MDAsCisweEVCLCAweDAwLCAweDA0LCAweDE1LCAweDEwLCAweERELCAweDQwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgxOSwgMHgwMCwgMHhFMSwgMHgwMCwgMHhCNCwgMHgwMiwgMHg5NCwKKzB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4OEQsIDB4MDAsIDB4ODQsIDB4MDAsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4ODAsCisweEVELCAweDAwLCAweDg0LCAweDQxLCAweEQwLCAweDBFLCAweDQwLCAweDM4LCAweDAwLCAweEUxLCAweDA4LCAweDI0LCAweDEyLAorMHgxMCwgMHg0RSwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDYsIDB4MjgsIDB4MDcsIDB4MTAsIDB4RDEsIDB4MTEsIDB4MzYsIDB4MDIsIDB4OTgsIDB4MEMsIDB4NDAsIDB4MzMsIDB4ODgsCisweDlELCAweDQwLCAweDA0LCAweDAyLCAweEQxLCAweDMwLCAweDQwLCAweDMzLCAweDA4LCAweDFELCAweDAwLCAweDA0LCAweDAwLAorMHhEMCwgMHgwQywgMHg0MCwgMHgzMSwgMHgwMCwgMHgwOSwgMHgwNSwgMHgwNCwgMHg4MCwgMHgxOCwgMHgzQywgMHg1MCwgMHg1OCwKKzB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTgsIDB4MjQsIDB4MDAsCisweEYzLCAweDEzLCAweDdDLCAweDAyLCAweEIwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweDlGLCAweDQwLCAweDRFLCAweDAyLAorMHhGMCwgMHgyOSwgMHhDMSwgMHgzNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg0QywgMHgwMiwgMHhEMSwgMHgwRiwgMHg0MCwgMHgzQywKKzB4MDAsIDB4MTMsIDB4MTMsIDB4MkMsIDB4MDMsIDB4MzAsIDB4MEYsIDB4QzEsIDB4NzQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIxLCAweDAwLCAweEE3LCAweDAwLCAweERGLCAweDgwLCAweDdDLCAweDAwLAorMHg3MCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHg0MiwgMHgzRiwgMHgwMiwgMHhGMCwgMHgwMSwgMHhDMCwgMHgzNywKKzB4MDAsIDB4NUYsIDB4ODIsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzgsIDB4MzcsIDB4MTAsIDB4MUYsIDB4QTIsIDB4N0MsCisweDAyLCAweEY1LCAweDRELCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MSwgMHgwOSwgMHgyRiwgMHgxMCwgMHhGMywgMHgwMCwgMHg0NCwgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwKKzB4MDAsIDB4M0YsIDB4MDgsIDB4Q0QsIDB4MDAsIDB4MzAsIDB4MEIsIDB4QzEsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4Q0MsCisweDAwLCAweEYwLCAweDBGLCAweEMwLCAweDNCLCAweDAwLCAweDAzLCAweDAyLCAweENDLCAweDI1LCAweDMyLCAweDBGLCAweEMwLAorMHgwNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHg2NiwKKzB4MDAsIDB4RDUsIDB4MDAsIDB4NDQsIDB4MEMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4MUQsIDB4MDIsIDB4NDQsCisweDA2LCAweDUwLCAweDMxLCAweDQxLCAweDM3LCAweDAwLCAweDFELCAweDAyLCAweDQ0LCAweDBDLCAweEQwLCAweDBELCAweDQwLAorMHgzNywgMHgwMCwgMHgxMSwgMHgwMiwgMHg0NCwgMHg0NCwgMHg1MCwgMHgwRCwgMHg0MCwgMHgwNywgMHgwMiwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4NDYsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NTQsCisweDA2LCAweEQ4LCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweDVELCAweDAwLCAweDQ0LCAweDQ0LCAweDEwLCAweDEzLCAweDQwLAorMHgzNywgMHgxMiwgMHgxRCwgMHgwMCwgMHhFNCwgMHgwNiwgMHhEMCwgMHgwRiwgMHg0MCwgMHgzNywgMHgwMCwgMHgxMSwgMHg1MCwKKzB4NDQsIDB4ODMsIDB4NTAsIDB4MEQsIDB4NDgsIDB4MDcsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweEM1LCAweDAwLCAweDE0LCAweDAyLCAweEQ4LCAweDBDLCAweDQwLAorMHgzMywgMHgwOCwgMHg0QywgMHgwMCwgMHgwNSwgMHgwMCwgMHg1MCwgMHgwMCwgMHg0MCwgMHgzMywgMHgwMCwgMHgwRCwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4RDAsIDB4MEMsIDB4NDgsIDB4MzMsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsIDB4MTAsIDB4NTEsIDB4NEMsCisweDQwLCAweDQzLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDkwLAorMHgwNiwgMHgwMCwgMHhGMywgMHg0MCwgMHg1QywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHgxRiwgMHgwMCwKKzB4NEMsIDB4MDAsIDB4MzIsIDB4MDEsIDB4QzAsIDB4MjcsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MEUsCisweEM0LCAweDM3LCAweDAwLCAweDEzLCAweDAwLCAweDRELCAweDYwLCAweDMwLCAweEFGLCAweEMwLCAweDA3LCAweEMwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgyRiwgMHgyMCwgMHhGRiwgMHgwMCwKKzB4RUMsIDB4MDAsIDB4RjEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4M0YsIDB4NDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsCisweEMyLCAweDJGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBGLCAweEUwLCAweDNGLCAweDAwLCAweDNGLAorMHg0MCwgMHg3QywgMHgxMCwgMHhFMCwgMHg2RCwgMHhDMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4M0YsIDB4MEIsIDB4RkYsIDB4MkMsIDB4RkMsIDB4MEEsIDB4RDAsIDB4OEYsCisweEMwLCAweDRDLCAweDAwLCAweDNGLCAweDQ5LCAweEVDLCAweDkzLCAweDMwLCAweDRGLCAweEMwLCAweDBGLCAweDEwLCAweDMzLAorMHgwMCwgMHhGQywgMHgyNCwgMHhCMCwgMHg0RiwgMHhDMCwgMHg2QywgMHgwMCwgMHhGMywgMHgwMCwgMHg4QywgMHgwMywgMHhCMSwKKzB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweDEwLCAweEJGLCAweDAxLCAweEZELCAweDA4LCAweDc0LCAweDhBLCAweEQwLCAweDZGLCAweDQ0LCAweDY0LCAweDAwLCAweDE5LAorMHgwMCwgMHhGNCwgMHgwRiwgMHg1MSwgMHhBRiwgMHg0MCwgMHgyNywgMHgxMiwgMHgxMSwgMHg0MSwgMHg3NCwgMHgxMiwgMHgxMCwKKzB4OUYsIDB4NDAsIDB4NzQsIDB4MDAsIDB4RjEsIDB4NDIsIDB4NDQsIDB4ODcsIDB4MTAsIDB4MTEsIDB4NDAsIDB4MEYsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEE4LCAweEIzLCAweDAxLCAweENELAorMHgwMCwgMHgzNiwgMHgxQSwgMHhEMCwgMHgyQywgMHg1MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHg0NCwgMHgyNCwgMHgwQiwgMHgxMSwKKzB4MEMsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODAsIDB4NzQsIDB4OTAsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MzUsIDB4MDAsCisweEMxLCAweDAyLCAweDA0LCAweDA3LCAweDkwLCAweDAwLCAweDQwLCAweDRGLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgzNSwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwNiwgMHhEMCwKKzB4MEQsIDB4NDAsIDB4RTQsIDB4MDAsIDB4MTksIDB4MDEsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MEQsIDB4NjAsIDB4MDcsIDB4MDAsCisweDMxLCAweDAxLCAweDc0LCAweDBFLCAweDEwLCAweDBELCAweDAwLCAweDc0LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDg3LAorMHgwMCwgMHgxMSwgMHg0MCwgMHgwRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4ODAsIDB4N0MsIDB4OEMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QzQsIDB4MzAsCisweDlGLCAweDAxLCAweDZDLCAweDAzLCAweDM0LCAweDBELCAweEMwLCAweDA3LCAweDAwLCAweDEyLCAweDA1LCAweDNDLCAweDBFLAorMHhCMSwgMHgwQywgMHhDMCwgMHg2MCwgMHgwMCwgMHhEMywgMHgwMCwgMHg0QywgMHg4MCwgMHhCMCwgMHgxOSwgMHhDMCwgMHgyMywKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsCisweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYyLCAweDBFLCAweDQwLCAweDJGLCAweDA4LCAweDNELCAweDQwLCAweEZDLCAweDAzLAorMHhCMCwgMHgwRiwgMHhDMCwgMHg2QiwgMHhEMSwgMHhCRiwgMHg0MCwgMHhGQywgMHgwMiwgMHhGMSwgMHgwRiwgMHhDMCwgMHgyRiwKKzB4MDAsIDB4RUYsIDB4MTAsIDB4RkQsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBBLCAweDA4LCAweDM1LCAweDA4LCAweERGLCAweDA1LCAweDdDLCAweDEwLAorMHg3MCwgMHgwRCwgMHhDNiwgMHgyNSwgMHgwMCwgMHg5RiwgMHhDMCwgMHgzQywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDksIDB4MUYsIDB4MTAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4NEQsIDB4QzAsIDB4MDYsIDB4MDEsIDB4RDcsIDB4MDAsIDB4MEMsCisweDAxLCAweDMwLCAweDA5LCAweEMwLCAweDJCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMywgMHhBMCwgMHgzQywgMHgyMCwgMHhGRCwgMHg0MiwgMHg3NCwgMHgwRSwgMHhEMCwgMHgwRiwgMHg1MCwgMHg2NCwKKzB4MDAsIDB4MUQsIDB4ODAsIDB4RjAsIDB4MTMsIDB4RDAsIDB4QUYsIDB4NDAsIDB4QjcsIDB4MDEsIDB4OUQsIDB4MjMsIDB4NzQsCisweDAyLCAweEQwLCAweDNGLCAweDQwLCAweEE3LCAweDgwLCAweEYxLCAweDAxLCAweDU0LCAweDAxLCAweDE0LCAweDA5LCAweDQxLAorMHg0RiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgyMCwgMHgzMCwKKzB4MDAsIDB4Q0QsIDB4MDIsIDB4MzQsIDB4MkMsIDB4NTAsIDB4MEMsIDB4NDgsIDB4MDAsIDB4MDIsIDB4MDksIDB4NDAsIDB4MzAsCisweDAzLCAweEQwLCAweDFDLCAweDQwLCAweDEzLCAweDAwLCAweDBELCAweDBCLCAweDM0LCAweDAwLCAweDkwLCAweDNDLCAweDRDLAorMHhBMiwgMHgwOCwgMHhDRCwgMHg0MSwgMHgwNCwgMHgwMywgMHg1MSwgMHgwOCwgMHg0MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsCisweDA1LCAweEQxLCAweDFDLCAweDQwLCAweEM4LCAweDAwLCAweDJELCAweDAxLCAweEI2LCAweDBGLCAweEQwLCAweDFFLCAweDQxLAorMHg3QiwgMHgwMiwgMHgyRCwgMHgwMSwgMHhCNCwgMHgwNCwgMHhEMCwgMHgxRSwgMHg0MCwgMHg3RiwgMHgwMCwgMHhFMSwgMHg0MSwKKzB4RDQsIDB4MkYsIDB4NTAsIDB4MTYsIDB4NjAsIDB4M0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDAyLCAweDMwLCAweDA4LCAweENGLCAweDAwLCAweDNDLCAweDAzLCAweDcwLCAweDhDLCAweEMwLAorMHgwMSwgMHgwMCwgMHg4RiwgMHg4QSwgMHgzRSwgMHgyMywgMHhGMCwgMHgwQywgMHhDMCwgMHgxMywgMHgwMCwgMHg0RiwgMHgwMCwKKzB4M0MsIDB4ODAsIDB4RjEsIDB4MEMsIDB4QzEsIDB4MzIsIDB4MDAsIDB4RDcsIDB4MTAsIDB4MEMsIDB4MjMsIDB4NzAsIDB4NEMsCisweEMwLCAweDRCLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDI4LAorMHgzRCwgMHgyNCwgMHhGRiwgMHgwMCwgMHhGOCwgMHgwMywgMHhGMCwgMHgwRiwgMHg4MCwgMHgxRiwgMHgwMCwgMHhGRiwgMHgyOCwKKzB4RkMsIDB4NjMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MUYsIDB4ODAsIDB4M0YsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEYsCisweEU5LCAweDNCLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDIzLCAweEI0LCAweDBELCAweEUwLCAweDBCLCAweDYwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBOCwgMHhGNywgMHgwNCwgMHhENywgMHgwMiwKKzB4N0MsIDB4MDUsIDB4MzAsIDB4Q0QsIDB4QzAsIDB4MDcsIDB4MDAsIDB4OUIsIDB4MDAsIDB4N0MsIDB4MTMsIDB4RjEsIDB4Q0QsCisweEQwLCAweDA0LCAweDQwLCAweEQzLCAweDAxLCAweDRELCAweDAwLCAweEYwLCAweDZELCAweEMwLCAweDI3LCAweDgwLCAweEQ3LAorMHgwMiwgMHg3QywgMHgwMywgMHgzNCwgMHgxOCwgMHhDNCwgMHg0MCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4ODAsIDB4MzAsIDB4MDAsIDB4RTEsIDB4NTYsIDB4QjQsIDB4MDMsIDB4QjAsIDB4OEUsCisweDQ0LCAweDJCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDMzLCAweEQwLCAweDBGLCAweDQxLCAweDJDLCAweDAwLCAweEUxLAorMHgwMCwgMHg4NCwgMHgwMSwgMHhEMCwgMHg0RSwgMHg0MSwgMHgzQiwgMHg4MCwgMHhFRCwgMHgwRSwgMHhCNCwgMHgwMywgMHhCMCwKKzB4MDYsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDAwLCAweDc4LCAweDAxLCAweEVELCAweDAxLCAweDM2LCAweDA1LCAweDEwLCAweDVFLCAweDQwLCAweDdCLCAweDE4LCAweEFELAorMHgwMSwgMHhBNCwgMHgxNywgMHhEMCwgMHg1RSwgMHg0MCwgMHg3QSwgMHgwMCwgMHhDMSwgMHgwMSwgMHhBNCwgMHgwNiwgMHhEMCwKKzB4MUUsIDB4NDAsIDB4NUIsIDB4MDQsIDB4RUQsIDB4MjUsIDB4QjQsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4MTAsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDI4LCAweDMzLCAweDAwLCAweEM5LAorMHgwMCwgMHgzNCwgMHg0MywgMHg5OCwgMHgwQywgMHg0MCwgMHgzMywgMHgyMiwgMHhDRCwgMHgwQSwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NDAsIDB4QjIsIDB4MDMsIDB4QzEsIDB4MEEsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzMsIDB4MDEsCisweENELCAweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDZDLCAweDQwLCAweDU4LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgyOCwgMHgxNywgMHgxMCwgMHg1RiwgMHgwMCwgMHhGQywgMHg4MSwgMHgzMCwKKzB4MDUsIDB4RTAsIDB4NUIsIDB4MDAsIDB4N0IsIDB4NjEsIDB4M0MsIDB4MDEsIDB4RjIsIDB4MDUsIDB4QzAsIDB4REUsIDB4MDAsCisweDczLCAweDAxLCAweEVDLCAweDA1LCAweEYwLCAweDA1LCAweENBLCAweDFCLCAweDAwLCAweDVGLCAweDAwLCAweEZDLCAweDAxLAorMHgzMCwgMHgwNywgMHhENCwgMHg1QywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MTcsIDB4MDAsIDB4NzgsIDB4MjAsIDB4RjAsIDB4MDEsIDB4QzYsIDB4NDcsIDB4MDgsCisweDFGLCAweDEwLCAweDdDLCAweDAwLCAweEYwLCAweDIwLCAweEM4LCAweDAxLCAweDAwLCAweDFGLCAweDA0LCAweDVDLCAweDI0LAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgyMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwNCwgMHhGMSwgMHgyMSwgMHhDMCwgMHg0QiwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MjUsIDB4MDAsCisweDhGLCAweDAxLCAweDRDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAyLCAweDlCLCAweDIwLCAweDRDLCAweDgyLAorMHhCMCwgMHgxOSwgMHg4MCwgMHgyNCwgMHgwMCwgMHg5MSwgMHgwMSwgMHg3QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHhFNSwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzIsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDI2LCAweDAwLCAweDlELCAweDAzLCAweDQ1LCAweDhFLAorMHhEMCwgMHgwOSwgMHg0MCwgMHhFNywgMHgxMCwgMHg4MCwgMHgwMCwgMHg0NCwgMHgwNiwgMHgxMCwgMHg0OSwgMHg1MCwgMHgyNCwKKzB4MDIsIDB4OTEsIDB4MDIsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4QTcsIDB4MDAsIDB4OTEsIDB4MEIsIDB4MzQsCisweDAyLCAweDE0LCAweDI5LCAweDQ0LCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgxOCwgMHg1NCwgMHgyQiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OTgsIDB4MjAsIDB4NDQsIDB4NTIsIDB4OTIsIDB4NDksIDB4NDgsIDB4MjUsIDB4MDgsIDB4OTUsIDB4MzgsIDB4MzQsCisweDAyLCAweDAwLCAweDA5LCAweDQyLCAweDI3LCAweDQwLCAweDkxLCAweDAwLCAweDc0LCAweDA2LCAweDFDLCAweDJELCAweDQwLAorMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwKKzB4MDAsIDB4ODksIDB4MTQsIDB4MTQsIDB4NTIsIDB4RDEsIDB4ODgsIDB4NDAsIDB4MjMsIDB4MDgsIDB4OTEsIDB4NDgsIDB4MDAsCisweDAyLCAweDAwLCAweDA4LCAweDYwLCAweDIxLCAweDAwLCAweDg1LCAweDA0LCAweDM2LCAweDIyLCAweDE0LCAweDA4LCAweDQwLAorMHgyMywgMHgwMCwgMHhDMSwgMHgxNCwgMHgzNCwgMHg1NiwgMHgxMCwgMHg0OCwgMHg0MSwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjgsIDB4MDYsIDB4MDUsIDB4MUYsIDB4MDQsIDB4NUMsCisweDEwLCAweEYwLCAweDYxLCAweEMxLCAweDE3LCAweDAwLCAweDFBLCAweDAyLCAweDRDLCAweDUwLCAweEIwLCAweEUxLCAweEMxLAorMHg4NSwgMHg0NywgMHgxNywgMHgwMSwgMHg3QywgMHgwOCwgMHgyMCwgMHg0MSwgMHhDMSwgMHgxNSwgMHgwMCwgMHgxMywgMHgwRSwKKzB4N0MsIDB4MTAsIDB4MzAsIDB4NDEsIDB4QzAsIDB4NzcsIDB4RTAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDFELCAweEI4LCAweDI3LCAweDA1LCAweDlGLCAweDE0LCAweEVDLCAweDUyLCAweEYwLCAweDQ5LCAweEMyLAorMHgyRiwgMHgxMCwgMHhCRiwgMHg0NCwgMHg3RCwgMHgwMiwgMHhGMCwgMHgxOSwgMHhDMiwgMHg2RSwgMHgwMCwgMHhCQiwgMHgwOCwKKzB4RkMsIDB4MTIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MkYsIDB4MDAsIDB4OUYsIDB4ODEsIDB4QkMsIDB4MDIsIDB4RjAsIDB4MEIsCisweEMwLCAweDc3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweDAwLAorMHhBNywgMHgxMCwgMHhCRiwgMHgwNiwgMHhDQywgMHg0NiwgMHgxMCwgMHgyOSwgMHhDMCwgMHgyRCwgMHgwMCwgMHg5RiwgMHg4MiwKKzB4REMsIDB4MTIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDUsIDB4QjMsIDB4MDAsIDB4N0MsIDB4ODIsIDB4MzAsIDB4NEIsCisweEMxLCAweDJGLCAweDAwLCAweEIzLCAweDAwLCAweEJDLCAweDkzLCAweDMwLCAweDBCLCAweEMwLCAweDc3LCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHg4NywgMHgwMCwgMHgxMSwgMHgwQSwKKzB4NDUsIDB4MEMsIDB4QjAsIDB4RTAsIDB4NDAsIDB4MDcsIDB4MDgsIDB4MTcsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4QTEsCisweDQwLCAweDg0LCAweDA4LCAweDExLCAweDAwLCAweDc0LCAweDUwLCAweDEwLCAweDIxLCAweDQwLCAweDE3LCAweDAwLCAweDExLAorMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0NCwgMHg2MywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MjAsIDB4QTEsIDB4MDEsIDB4ODUsIDB4MDQsIDB4MDQsIDB4NTIsIDB4NTgsIDB4NDgsCisweDQwLCAweDIzLCAweDAwLCAweDg5LCAweDAwLCAweDE0LCAweDBCLCAweEQwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDg1LAorMHg4MCwgMHgzNCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MiwgMHgyNSwgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHg4QSwgMHgxMCwKKzB4MDgsIDB4NDAsIDB4NEIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweDI4LCAweDI1LCAweDAwLCAweEQxLCAweDAwLCAweDQ0LCAweDAzLCAweEQxLCAweDA5LCAweDQwLCAweDI3LCAweDBDLCAweDk1LAorMHgwNCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHgxMCwgMHgyNCwgMHgxNCwgMHg5NCwgMHgwNCwgMHg3NCwgMHgwQSwgMHgxNCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MTIsIDB4MTgsIDB4NDksIDB4NDAsIDB4NjMsIDB4MjgsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEEyLCAweDI3LCAweDEwLCAweDk3LAorMHgwMCwgMHg0OCwgMHgxQSwgMHg3MCwgMHgwOSwgMHhFMCwgMHhBNSwgMHgwMCwgMHg5RiwgMHg5MywgMHg1NCwgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzQsIDB4RTQsIDB4NDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzMsIDB4MDksIDB4QzAsIDB4NjcsIDB4MDAsCisweDkxLCAweDAwLCAweDdDLCAweDA2LCAweDM0LCAweDQ5LCAweDQyLCAweDE3LCAweDA4LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwOCwgMHgyMCwgMHgwMCwgMHg5RiwgMHg5MCwgMHg3QywgMHgxMiwgMHhCMCwKKzB4MDksIDB4QzAsIDB4NjcsIDB4MDksIDB4OTcsIDB4MjEsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MjMsIDB4MTEsCisweDlCLCAweDAwLCAweDdDLCAweDBBLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDQxLCAweDlGLCAweDIwLCAweDdDLCAweDA2LAorMHhGMCwgMHgwOSwgMHhDMCwgMHg1QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NkMsIDB4MDgsIDB4RjIsIDB4MDEsIDB4QzAsIDB4ODYsIDB4MTQsCisweDFGLCAweDAyLCAweDRDLCAweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDg2LCAweDAzLCAweDFGLCAweDI4LCAweDdDLCAweDAwLAorMHhGMCwgMHgxMSwgMHhDNCwgMHgwNCwgMHgwMSwgMHgxMywgMHgxMCwgMHg3QywgMHg0MCwgMHgzMCwgMHgyMSwgMHhDMCwgMHg1MCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MTQsIDB4MDAsCisweDdELCAweDg1LCAweEM0LCAweDgxLCAweEQwLCAweDA1LCAweDU4LCAweERDLCAweDAwLCAweDVDLCAweDAwLCAweEVDLCAweDAxLAorMHhEMCwgMHgyNywgMHg0MSwgMHgxRiwgMHgxMCwgMHg3RCwgMHgwMCwgMHg3NCwgMHgwMSwgMHhEMCwgMHgwNywgMHg0MCwgMHhEOCwKKzB4NDAsIDB4NzMsIDB4MDIsIDB4QjQsIDB4MDksIDB4MTUsIDB4MDcsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDMyLCAweDAwLCAweERELCAweDAzLCAweDc0LCAweDMzLAorMHhEMCwgMHgwQywgMHg0MCwgMHg3MSwgMHgwMCwgMHhERCwgMHgwMCwgMHgwNCwgMHgwQiwgMHhEMCwgMHgyQywgMHg0MSwgMHhCMiwKKzB4MDAsIDB4Q0MsIDB4MDQsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NzAsIDB4MDAsIDB4QzEsIDB4MDIsIDB4MzQsCisweDAzLCAweDkwLCAweDBDLCAweDQwLCAweDQwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwMCwgMHg5NCwgMHgwMywgMHhEMSwgMHg5RSwgMHg0MCwgMHg5OSwKKzB4MjgsIDB4RkQsIDB4MDgsIDB4QTAsIDB4MDMsIDB4REEsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjYsCisweDEzLCAweEQwLCAweDFFLCAweDUwLCAweDNDLCAweDA0LCAweEE5LCAweDAwLCAweEY0LCAweDAzLCAweDkwLCAweDFDLCAweDQxLAorMHgxMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOCwgMHg3OCwKKzB4MTAsIDB4RkYsIDB4MDEsIDB4QkMsIDB4MDcsIDB4RjEsIDB4NUUsIDB4QzEsIDB4NkIsIDB4MDAsIDB4RkUsIDB4MTEsIDB4OEMsCisweDA2LCAweEMwLCAweDEyLCAweEMwLCAweDZBLCAweDAwLCAweEVGLCAweDIxLCAweEJDLCAweDQ3LCAweEYwLCAweDFDLCAweEUyLAorMHg1OCwgMHgwMCwgMHhBMywgMHgwMSwgMHhCQywgMHgwNywgMHhCMCwgMHgxRSwgMHhEMCwgMHg1MCwgMHg2MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjAsIDB4QjUsIDB4MDUsIDB4NUYsIDB4MDAsIDB4NkMsCisweDAxLCAweEYxLCAweDJELCAweEMwLCAweDA2LCAweDAwLCAweERGLCAweDA2LCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLAorMHgyNywgMHgxMCwgMHhERiwgMHgwMCwgMHg3QywgMHgyQiwgMHhGMCwgMHgwRCwgMHhDMCwgMHgxMywgMHgwMCwgMHgxNywgMHg0MCwKKzB4N0MsIDB4MDMsIDB4NzQsIDB4MEQsIDB4RDAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDdELCAweDA0LCAweDczLCAweDAxLCAweENELCAweDI3LCAweDMwLCAweDFGLCAweEMyLAorMHg3RiwgMHgwMiwgMHhGNywgMHgwMSwgMHhDQywgMHgwNSwgMHhCNCwgMHg5RiwgMHhDOCwgMHg1RiwgMHg5MiwgMHg2RiwgMHgwOSwKKzB4REMsIDB4MDcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4NTgsIDB4NDAsIDB4QjMsIDB4MDksIDB4Q0MsIDB4QTUsIDB4MzAsIDB4MUYsCisweEMwLCAweDE4LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDA4LAorMHgzOSwgMHhBMCwgMHg2MSwgMHgwMCwgMHhBQywgMHgwMywgMHgxMCwgMHg0RSwgMHg0OCwgMHgyQiwgMHg4MiwgMHhFMSwgMHgwMCwKKzB4ODQsIDB4MDgsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MUIsIDB4MDAsIDB4RUQsIDB4MDgsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MDYsCisweDUwLCAweDE4LCAweDAyLCAweEExLCAweDAwLCAweDg1LCAweDMzLCAweEIwLCAweDBBLCAweEM4LCAweDU2LCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMCwgMHgzOSwgMHgwMCwgMHhDMSwgMHgwOCwKKzB4OTQsIDB4NDMsIDB4MTgsIDB4MEUsIDB4NjAsIDB4MkYsIDB4ODQsIDB4RTUsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDYsCisweDA4LCAweDFCLCAweDAwLCAweDJELCAweDAwLCAweDk0LCAweDQzLCAweEQwLCAweDhFLCAweDQwLCAweDBFLCAweDAwLCAweDgxLAorMHg4MCwgMHhDNCwgMHgwMSwgMHgxOCwgMHgwRSwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MzUsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDIsIDB4MTgsIDB4MEQsCisweDQ0LCAweDYzLCAweDAwLCAweEM1LCAweDAyLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQ0LCAweDgzLCAweDAwLCAweDhELAorMHgwMiwgMHgwNCwgMHg0RiwgMHhEMCwgMHgwNCwgMHg0MCwgMHhDMiwgMHgwMiwgMHgwMSwgMHgwMCwgMHg0NCwgMHgwMSwgMHg5MCwKKzB4QTgsIDB4NDAsIDB4MEEsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweEE4LCAweDNELCAweDAwLCAweDkzLCAweDAwLCAweDU0LCAweDI4LCAweDMwLCAweDBGLCAweEMwLCAweDY3LCAweDAwLCAweEY3LAorMHgwMCwgMHg0QywgMHgwMiwgMHgzMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwNiwgMHhEQywgMHgwRiwgMHhGMCwKKzB4MEMsIDB4NDAsIDB4NjIsIDB4MDgsIDB4OTEsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MTEsIDB4M0QsIDB4QzgsIDB4NTQsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDM3LCAweDAwLCAweDlGLAorMHgwMiwgMHg2NCwgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHg4NywgMHgyOCwgMHhEQSwgMHgxMSwgMHg3QywgMHgwQSwgMHg3MCwKKzB4MDksIDB4QzAsIDB4ODcsIDB4MTAsIDB4REYsIDB4MTAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzQsIDB4MDUsIDB4MDQsCisweDlGLCAweEMwLCAweDZDLCAweDAzLCAweEYwLCAweDJELCAweEMyLCAweDM3LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwOCwgMHgzRiwgMHgwMCwgMHhCMywgMHg4MCwgMHg3QywgMHgwMCwgMHgzMSwKKzB4MEYsIDB4RTAsIDB4MEMsIDB4MDQsIDB4RjcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDMsIDB4NDAsIDB4MkYsIDB4MDQsCisweDM3LCAweDAwLCAweENDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDBDLCAweDQwLCAweEIyLCAweDAwLCAweEZDLCAweDAyLAorMHg3MCwgMHgwNSwgMHhDMSwgMHgwNSwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4QTEsIDB4MjAsIDB4MzYsIDB4MDAsIDB4OTEsIDB4MDMsIDB4NzQsIDB4MDQsIDB4MTAsIDB4MEQsIDB4NDgsIDB4NDQsIDB4MDEsCisweERELCAweDAwLCAweDc0LCAweDA0LCAweEQwLCAweDExLCAweDQwLCAweDQ3LCAweDAwLCAweDRELCAweDAwLCAweDZDLCAweDAzLAorMHhEMCwgMHgwOSwgMHg0MCwgMHg0NCwgMHgwMCwgMHgxMSwgMHgwNywgMHg3NCwgMHgwMiwgMHgxMCwgMHg0NCwgMHg0MiwgMHg4NCwKKzB4MDQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzYsIDB4MDAsCisweDExLCAweDAxLCAweDc0LCAweDA0LCAweDEwLCAweDBELCAweDQwLCAweDY0LCAweDE4LCAweERELCAweDAwLCAweDc0LCAweDA2LAorMHhEMCwgMHgxQiwgMHg2MCwgMHhDRiwgMHgwMCwgMHgxRCwgMHg1OCwgMHg0NCwgMHgwMywgMHhEMCwgMHgxRCwgMHg3MCwgMHhDNCwKKzB4MDAsIDB4MzUsIDB4ODEsIDB4NzQsIDB4MjEsIDB4NTAsIDB4MEQsIDB4NDAsIDB4MDUsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDMwLCAweDAwLCAweDAxLCAweDAwLCAweDI0LCAweDAyLAorMHgxMCwgMHgwQywgMHg0MCwgMHgyMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwMiwKKzB4MjAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MDAsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDUsIDB4MDAsIDB4NjQsCisweDgzLCAweDE0LCAweDA4LCAweDQwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgxMCwgMHgzQSwgMHgwOCwgMHg5MywgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwRiwgMHg0MCwgMHgwNCwKKzB4MTAsIDB4RTcsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTcsIDB4NjAsIDB4Q0MsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDA0LCAweDAwLCAweDE3LCAweDAwLCAweDdDLCAweDAwLCAweDcxLCAweDA1LCAweEMwLAorMHgwNSwgMHg2MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgzOCwgMHgzRiwKKzB4MjAsIDB4QkYsIDB4ODAsIDB4RkUsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MEIsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsCisweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDgzLCAweEYwLCAweDAzLCAweEM4LAorMHgwRiwgMHgwMCwgMHgzQiwgMHgwMCwgMHhCQywgMHgwMCwgMHhGMCwgMHgwMywgMHhDMiwgMHgxNywgMHg2MiwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4N0YsIDB4MDIsIDB4RkIsIDB4MDksIDB4QUMsCisweDA3LCAweEIwLCAweDFGLCAweEMwLCAweDdBLCAweDAwLCAweEZELCAweDIxLCAweEVDLCAweDA3LCAweEIwLCAweDFGLCAweEMwLAorMHg3QSwgMHgwOCwgMHhGQiwgMHg4OSwgMHhDQywgMHgwNywgMHhGMiwgMHgxRiwgMHhDMCwgMHg3RCwgMHgxMiwgMHhGQiwgMHgwOSwKKzB4RUMsIDB4ODcsIDB4MzMsIDB4MUUsIDB4RDIsIDB4MEMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDA3LCAweDAxLCAweDExLCAweDA0LCAweDQ0LCAweDA0LCAweDMwLCAweDExLCAweDQwLAorMHg0NCwgMHgwMCwgMHgxMSwgMHgwMSwgMHg0MCwgMHgwMCwgMHgxMCwgMHg0MCwgMHg0NywgMHg0NCwgMHgwMCwgMHgwRCwgMHgwMCwKKzB4NDQsIDB4MDQsIDB4MTAsIDB4MTEsIDB4QzAsIDB4MDUsIDB4MzksIDB4MTEsIDB4MjQsIDB4NDQsIDB4MTAsIDB4QjIsIDB4MTEsCisweDQ0LCAweDBDLCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLAorMHgzNSwgMHgxOCwgMHhEOSwgMHg2MCwgMHgzNCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhEOSwgMHhBMCwKKzB4NjQsIDB4NTMsIDB4OTIsIDB4MEQsIDB4NDAsIDB4MzMsIDB4MDAsIDB4RDUsIDB4MDAsIDB4NDQsIDB4MDMsIDB4OTAsIDB4MEMsCisweDQwLCAweDM2LCAweDAwLCAweERELCAweDA0LCAweDM0LCAweDQzLCAweDE5LCAweDBDLCAweDQwLCAweDRDLCAweDgwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhBOCwgMHgwNywgMHgwOCwgMHgxMSwgMHgwMCwKKzB4NDQsIDB4MDAsIDB4RDEsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDgsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsCisweDQwLCAweDA1LCAweDAwLCAweDFELCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA1LCAweDE4LCAweDE1LAorMHgwMCwgMHgxNCwgMHgwMCwgMHg5MCwgMHgwMSwgMHg0MCwgMHgwQywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4MzIsIDB4MjAsIDB4Q0IsIDB4MjAsIDB4NkMsIDB4MDMsIDB4RjAsIDB4MEQsCisweEMwLCAweDM2LCAweDgwLCAweENGLCAweDAwLCAweDJDLCAweDAzLCAweEIwLCAweDBELCAweEMwLCAweDM3LCAweDA4LCAweERCLAorMHgwMCwgMHg0QywgMHgwMywgMHhCMCwgMHgwQywgMHg4MCwgMHgzNiwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMiwKKzB4MEMsIDB4QzgsIDB4MjAsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweDg4LCAweDBELCAweDAwLCAweDNGLCAweDgwLCAweEY4LCAweDQwLCAweDMwLCAweDAzLCAweEMzLCAweDBELCAweDgwLCAweDNFLAorMHgwMCwgMHhGOCwgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRSwgMHgwOCwgMHgzRCwgMHgwMCwgMHhGOCwgMHgwMCwgMHhCMCwKKzB4MDMsIDB4ODIsIDB4MEYsIDB4MDAsIDB4M0IsIDB4MzAsIDB4RTgsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MUYsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBBLCAweDA4LCAweDM1LCAweDAwLCAweEQ3LAorMHgwMCwgMHg2QywgMHgwMywgMHg3MSwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MzYsIDB4MDQsIDB4REYsIDB4MDAsIDB4NUMsIDB4OTMsIDB4MzEsIDB4MEQsIDB4QzEsIDB4MzQsIDB4MDIsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweDcwLCAweDBELCAweEMxLCAweDA5LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHg4NCwgMHgwNiwgMHgxMSwgMHg0MCwgMHgzNCwgMHg0QywgMHgxMCwKKzB4MjAsIDB4NDEsIDB4ODMsIDB4MjQsIDB4MTAsIDB4MDAsIDB4NzQsIDB4MDQsIDB4MTAsIDB4QjAsIDB4MDAsIDB4MDQsIDB4MDAsCisweDAyLCAweDAwLCAweDA0LCAweDBDLCAweDEwLCAweDMxLCAweDQyLCAweDAzLCAweDAwLCAweDBDLCAweDAzLCAweDcwLCAweDgwLAorMHgxMCwgMHgyMSwgMHg0MCwgMHg2QywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTMsIDB4MjAsIDB4NzAsIDB4MTAsIDB4QzUsIDB4ODAsIDB4MjQsIDB4MDcsIDB4NDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDEsCisweEM1LCAweDAwLCAweDI0LCAweDQ3LCAweDUwLCAweEFDLCAweDQwLCAweDMxLCAweDA4LCAweEM0LCAweDAwLCAweDE0LCAweDBCLAorMHgxNCwgMHgzQywgMHgwMCwgMHgzMCwgMHgwNCwgMHhDRCwgMHgwMCwgMHgzNCwgMHgwMywgMHg5OCwgMHgyQywgMHg0MCwgMHgwRiwKKzB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEYsIDB4MDIsIDB4NEMsIDB4MEEsCisweDIxLCAweDA5LCAweEY0LCAweDA0LCAweDEwLCAweDEyLCAweDQwLCAweDRGLCAweDAwLCAweDI1LCAweDM3LCAweEY2LCAweDA0LAorMHgxMiwgMHgxMiwgMHg2MCwgMHg0OSwgMHgwMiwgMHgyMSwgMHgwMSwgMHg4NCwgMHgwNCwgMHgwMCwgMHgxMiwgMHg0MSwgMHg0QiwKKzB4MDIsIDB4MkQsIDB4MTEsIDB4QjQsIDB4MjQsIDB4ODAsIDB4MTIsIDB4NDIsIDB4M0UsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDE4LCAweDMwLCAweDAwLCAweEM3LCAweDAwLCAweDJDLCAweDIzLAorMHg1MSwgMHg4QywgMHhDMCwgMHgzMywgMHgwMCwgMHhDRiwgMHgwOCwgMHgzQywgMHg0MywgMHg3MCwgMHgwQywgMHhDNCwgMHgzMSwKKzB4MDYsIDB4QzcsIDB4MDAsIDB4MUMsIDB4NDMsIDB4MzAsIDB4MEMsIDB4QzAsIDB4MzAsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4N0MsCisweDAzLCAweEYwLCAweDBDLCAweEU0LCAweDRCLCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgzOCwgMHgwOSwgMHgyMCwgMHgzRiwgMHgwMCwgMHhGMCwgMHgwMCwgMHhGMCwgMHgwMywgMHhDMiwgMHgwRiwKKzB4MDAsIDB4M0IsIDB4MkMsIDB4QkMsIDB4MjAsIDB4NzAsIDB4MDMsIDB4QzAsIDB4MEMsIDB4MDIsIDB4M0YsIDB4MDAsIDB4QkMsCisweDIwLCAweEY4LCAweDgzLCAweEMwLCAweDBGLCAweDAwLCAweDFGLCAweDAwLCAweEZDLCAweDAwLCAweDcxLCAweDExLCAweEM4LAorMHgwOSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBOCwgMHg3NywKKzB4MDAsIDB4QzMsIDB4NDAsIDB4NkMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4NzMsIDB4MDAsIDB4QzcsIDB4MDEsIDB4NkMsCisweDA3LCAweDM2LCAweDBELCAweEM0LCAweDcwLCAweDAwLCAweERCLCAweDQwLCAweDZDLCAweDAzLCAweEYwLCAweDBDLCAweEQwLAorMHgzNCwgMHg0MCwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwgMHg0MywgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OTgsIDB4MEQsIDB4MDgsIDB4MkIsIDB4MDAsIDB4ODQsCisweDAwLCAweEQyLCAweDAyLCAweDQwLCAweDBCLCAweDAwLCAweDIxLCAweDYwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQyLAorMHgwOCwgMHgwMCwgMHgzMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHg5MCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwKKzB4QjQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4NEYsIDB4NjgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc5LCAweDAwLCAweEY5LCAweDAxLCAweEE2LCAweDA3LCAweEQ5LCAweDFFLCAweDQwLAorMHg3QiwgMHgwMCwgMHhGNSwgMHgwMSwgMHhBNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg3OCwgMHgxMCwgMHhFOSwgMHgwMSwKKzB4QjQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NjAsIDB4NzgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4RDQsIDB4MDcsIDB4OTAsIDB4MUUsCisweDYwLCAweDEzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDIwLAorMHgwMywgMHgwMCwgMHgxOSwgMHgwMCwgMHgwNiwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MiwgMHgwMywgMHgwMCwgMHgwNSwgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NTAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4OTAsIDB4MDAsCisweDYwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDc0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDVCLCAweDAwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgyOCwgMHgxNSwgMHgwMCwgMHg1QiwgMHg4MCwKKzB4MkMsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NTcsIDB4NDAsIDB4NkMsIDB4MDEsIDB4MzAsIDB4MDUsCisweENBLCAweDE0LCAweDEwLCAweDVCLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA0LCAweEMwLCAweDEwLCAweDAwLCAweDUzLAorMHgwMCwgMHg3QywgMHgwMSwgMHhCMCwgMHgwNSwgMHhDMCwgMHg1RiwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4OEQsIDB4MDgsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDgsIDB4RTAsIDB4MDMsCisweEMwLCAweDBGLCAweDIwLCAweDM5LCAweDIwLCAweEZDLCAweDA4LCAweEYwLCAweDAzLCAweDAwLCAweDBFLCAweDAwLCAweDNGLAorMHg0MCwgMHhFNCwgMHg4MCwgMHhDMiwgMHgwMywgMHhDMCwgMHg4RiwgMHgwMCwgMHgzQiwgMHgyMCwgMHhGQywgMHgwMCwgMHhGMCwKKzB4MDMsIDB4QzAsIDB4NEIsIDB4MDgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDIyLCAweDMwLCAweDQ5LCAweEMwLCAweDI1LCAweDAwLCAweDlGLAorMHhDMCwgMHg3QywgMHgwMiwgMHhGMSwgMHgwOSwgMHg4MCwgMHhFNSwgMHgwOCwgMHg5RiwgMHgwMCwgMHg1QywgMHgwMiwgMHg3MCwKKzB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OTcsIDB4MDEsIDB4N0MsIDB4MTYsIDB4MzAsIDB4MDksIDB4ODAsIDB4NDEsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweEU0LCAweDIzLCAweDlELAorMHgwMCwgMHg0NSwgMHgwQSwgMHgxMCwgMHgxOCwgMHg4MCwgMHgyNiwgMHgwMCwgMHg5QywgMHgxMSwgMHg3MCwgMHgwNiwgMHhEMCwKKzB4MjgsIDB4NDAsIDB4NjQsIDB4MDQsIDB4OEQsIDB4ODAsIDB4MDQsIDB4MDIsIDB4MDAsIDB4MDksIDB4NDAsIDB4NjQsIDB4MDMsCisweDkxLCAweDAyLCAweDc0LCAweDBFLCAweDEwLCAweDE4LCAweDQwLCAweDA0LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHg4MCwgMHhCRCwgMHg4MCwgMHhDNCwgMHgwMiwgMHg1MCwKKzB4MEIsIDB4NDAsIDB4MkMsIDB4MDEsIDB4QkMsIDB4MDgsIDB4RjAsIDB4MjIsIDB4RDIsIDB4MEIsIDB4NDEsIDB4MkQsIDB4MDAsCisweEJELCAweDAwLCAweEQ0LCAweDAyLCAweDQyLCAweDBCLCAweDQwLCAweDJDLCAweDAwLCAweEI1LCAweDBBLCAweEY0LCAweEMyLAorMHgwMCwgMHg0QiwgMHg0MCwgMHg3MSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjAsIDB4MjksIDB4MDAsIDB4QUQsIDB4MDAsIDB4RDQsIDB4MDMsIDB4NTQsIDB4MUIsIDB4NDAsIDB4NkEsIDB4MjAsCisweEFDLCAweEEwLCAweEIwLCAweEEzLCAweEQxLCAweDhCLCAweDQwLCAweDI5LCAweDAwLCAweEJELCAweDY4LCAweEM0LCAweDAyLAorMHg1MSwgMHgwQiwgMHg0MCwgMHgyOCwgMHgwMiwgMHhBMSwgMHgwOCwgMHhCMCwgMHgyMiwgMHgxMSwgMHgwQiwgMHg0NCwgMHg1MSwKKzB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4MDcsIDB4MDgsCisweDFGLCAweDgwLCAweDRDLCAweDAwLCAweDc0LCAweDAxLCAweEMwLCAweDA1LCAweDAwLCAweDFGLCAweDAwLCAweDM4LCAweDA4LAorMHhGMCwgMHgyMCwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxRiwgMHgyMiwgMHg1QywgMHgwMCwgMHg3MiwgMHgwMSwgMHhEMCwgMHg4MCwKKzB4MDAsIDB4MTcsIDB4MDIsIDB4NzgsIDB4MDgsIDB4MzQsIDB4MDMsIDB4QzAsIDB4NzUsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LCAweDI3LCAweDA1LCAweDlGLCAweDE0LCAweDZDLCAweDAyLAorMHhCMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgxMiwgMHhGMCwgMHg0OSwgMHg4MCwgMHgyNiwKKzB4MDAsIDB4OUYsIDB4MDQsIDB4N0MsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDEsIDB4OUYsIDB4MDQsIDB4M0MsCisweDEyLCAweEY0LCAweDA5LCAweEMwLCAweDY2LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxRCwgMHhBOCwgMHhBRiwgMHgwMCwgMHg5RiwgMHgwMiwgMHhGNCwgMHgwMiwgMHgzMCwgMHgwQiwgMHhDMCwgMHgyQiwKKzB4MDAsIDB4QkYsIDB4ODAsIDB4Q0MsIDB4ODIsIDB4RjAsIDB4MEIsIDB4RDAsIDB4MkMsIDB4MDAsIDB4OEIsIDB4ODIsIDB4OEMsCisweDAyLCAweEIwLCAweDBCLCAweEMwLCAweDJFLCAweDAwLCAweEFGLCAweDAwLCAweENELCAweDBBLCAweEIwLCAweDBBLCAweEMwLAorMHg2NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgxMCwgMHg0NywKKzB4MDEsIDB4MEQsIDB4MDUsIDB4NzQsIDB4MDAsIDB4QjAsIDB4MDEsIDB4NDAsIDB4MDcsIDB4MDgsIDB4MUQsIDB4MDAsIDB4NkMsCisweDEwLCAweEQwLCAweDQxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDU0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLAorMHgwMCwgMHgwMSwgMHgxRCwgMHgwMCwgMHg0NSwgMHgxMCwgMHgxMCwgMHgwMSwgMHg0MiwgMHg3MCwgMHg2MCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4QTIsIDB4MjEsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsCisweDAyLCAweDEwLCAweDBDLCAweDQwLCAweDIzLCAweDA4LCAweDlELCAweEEwLCAweDA0LCAweDQyLCAweEQwLCAweDA4LCAweDQxLAorMHgyNCwgMHgwMCwgMHg4OSwgMHgwMCwgMHg2NCwgMHgwMiwgMHg5MCwgMHgwOSwgMHg0MCwgMHgyMiwgMHgwNCwgMHg4RCwgMHgwMCwKKzB4NDQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NTAsIDB4NDgsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweDIwLCAweDI1LCAweDEwLCAweDlELCAweDAwLCAweDc0LCAweDAzLCAweDkwLCAweDBELCAweDQwLAorMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg2NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5MSwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OEMsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDYwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDI4LAorMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHgzQywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgyMCwKKzB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjAsIDB4MDAsIDB4OUIsIDB4MDAsIDB4MkMsIDB4MDIsIDB4QjAsIDB4MDgsCisweEMwLCAweDI2LCAweDAwLCAweDlFLCAweDAwLCAweDRDLCAweDAyLCAweEIwLCAweDA5LCAweEMwLCAweDE0LCAweDI4LCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg4MCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MDIsIDB4RjgsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4ODIsIDB4RjAsIDB4MDksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDU4LCAweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLAorMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMSwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDEsIDB4MUYsIDB4MDAsIDB4NEQsIDB4MTAsIDB4RjAsIDB4MDEsCisweEMwLCAweDA3LCAweDA0LCAweDE3LCAweDQwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDE3LAorMHgwMCwgMHg1QywgMHg0MCwgMHgzMCwgMHg4MSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxNywgMHgwMCwgMHg1QywgMHg5MCwgMHgzNCwKKzB4MDEsIDB4QzAsIDB4NDEsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweEEwLCAweERDLCAweDAxLCAweDVELCAweDAwLCAweEM0LCAweDA1LCAweEQwLCAweDg3LCAweDQ4LCAweDVGLCAweDA0LCAweDcxLAorMHgwNywgMHhGNCwgMHgwMSwgMHgxMCwgMHgwNywgMHg0MCwgMHgxRiwgMHgwMiwgMHg1MSwgMHgwMCwgMHhDMCwgMHgxMSwgMHgxMCwKKzB4QjcsIDB4NDAsIDB4NUYsIDB4MDAsIDB4NzAsIDB4MDEsIDB4ODQsIDB4MDEsIDB4MTAsIDB4MDYsIDB4NDAsIDB4NTAsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweEIyLCAweDA4LCAweENELAorMHgwMCwgMHgxNCwgMHgwQSwgMHhEOCwgMHgyQywgMHg0MCwgMHhCMywgMHgwMCwgMHhENCwgMHgxMSwgMHgzNCwgMHgwNywgMHgxMCwKKzB4MUQsIDB4NDAsIDB4QTMsIDB4MDAsIDB4RDUsIDB4MDAsIDB4MTQsIDB4MEUsIDB4MTQsIDB4MUMsIDB4NDAsIDB4NjMsIDB4MDAsCisweEM0LCAweDA1LCAweDE0LCAweDJCLCAweDE0LCAweDI0LCAweDQwLCAweDUxLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwMSwgMHg4NCwgMHgwOCwgMHhEMSwKKzB4MEUsIDB4NDAsIDB4N0YsIDB4MDAsIDB4NjEsIDB4ODAsIDB4QjAsIDB4MEYsIDB4MTAsIDB4MEUsIDB4NEQsIDB4MkYsIDB4MDAsCisweEYxLCAweDAwLCAweDg0LCAweDAyLCAweDEwLCAweDBFLCAweDQwLCAweDZCLCAweDA0LCAweEY1LCAweDMwLCAweDg0LCAweDAzLAorMHgxNCwgMHgwNywgMHg0MCwgMHgwNCwgMHgyMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MTgsIDB4NTksIDB4MDAsIDB4RUYsIDB4MDksIDB4OUMsIDB4MDUsIDB4RjEsIDB4MUEsIDB4QzAsIDB4NEIsIDB4MDAsCisweEU3LCAweDQxLCAweEZDLCAweDA3LCAweDM0LCAweDE2LCAweEMwLCAweDdCLCAweDAwLCAweEU3LCAweDc3LCAweDlDLCAweDA2LAorMHgzMCwgMHgxRSwgMHhDMiwgMHg3QiwgMHgwMCwgMHg2NywgMHhFMSwgMHhEQywgMHgwNiwgMHgzMCwgMHgxNiwgMHg4MCwgMHg0NSwKKzB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MTUsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAwLCAweEYyLCAweDAxLCAweEM0LCAweDI3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAwLAorMHhFMCwgMHgwNSwgMHhDMCwgMHgzMywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwRCwgMHhDNCwgMHgxNywKKzB4MDAsIDB4NUIsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzgsIDB4NDMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDIwLCAweDdGLCAweDIyLCAweEZGLCAweDExLCAweEY4LCAweDA0LAorMHhGMCwgMHg5RiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhBRiwgMHgwMSwgMHhEQywgMHg4NiwgMHgzMCwgMHg5RiwgMHhDOCwgMHg2QiwKKzB4MDAsIDB4RkIsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4MUIsIDB4RTQsIDB4NkYsIDB4MDAsIDB4QjMsIDB4MDksIDB4QzQsCisweDA3LCAweDMwLCAweDE2LCAweEM4LCAweDBBLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHgwMCwgMHgzOSwgMHgwMCwgMHhFRCwgMHgwNCwgMHhCQywgMHg0MCwgMHhEOCwgMHg4QSwgMHg0MCwgMHgyQiwKKzB4MDEsIDB4MkQsIDB4MDAsIDB4ODQsIDB4MjIsIDB4MTAsIDB4OEEsIDB4NDIsIDB4MkIsIDB4MDAsIDB4RTEsIDB4MDgsIDB4ODQsCisweDQyLCAweEQwLCAweDAyLCAweDQwLCAweDJCLCAweDAxLCAweEJCLCAweDBDLCAweEM0LCAweDEzLCAweEIwLCAweDBFLCAweDQwLAorMHg1NCwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMiwgMHgxOSwKKzB4MzAsIDB4RUQsIDB4NDAsIDB4QjQsIDB4MDEsIDB4RDAsIDB4MEEsIDB4NDgsIDB4MEIsIDB4ODAsIDB4RUQsIDB4MDAsIDB4QjQsCisweDAzLCAweDk0LCAweDg2LCAweDQ0LCAweDNGLCAweDA0LCAweEU5LCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDhBLCAweDQxLAorMHgyQiwgMHgyNCwgMHgyMSwgMHg0MCwgMHhENSwgMHgwMCwgMHgxMSwgMHgwNywgMHg0MCwgMHgyMiwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4ODMsIDB4MDAsIDB4Q0QsIDB4MDksIDB4MzYsCisweDg1LCAweEQwLCAweEEwLCAweDQwLCAweEUzLCAweDg0LCAweENELCAweDBDLCAweDc0LCAweDA4LCAweDkwLCAweDAxLCAweDQwLAorMHhEMywgMHgwMCwgMHhEMSwgMHg1MiwgMHgwNCwgMHgwNiwgMHhEMCwgMHgwMCwgMHg0OCwgMHhEMywgMHg4MCwgMHgwOSwgMHgwMywKKzB4MTQsIDB4MjgsIDB4OTAsIDB4QUMsIDB4NDAsIDB4MTgsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDFELCAweEEwLCAweEU1LCAweDJDLCAweEZGLCAweDBCLCAweDdDLCAweDJDLCAweEYwLCAweDMwLCAweEMwLAorMHg2NywgMHgwMSwgMHhERiwgMHgwMiwgMHg3QywgMHgxOSwgMHhCMCwgMHhEOSwgMHhDMCwgMHhBNywgMHgwMiwgMHhGQiwgMHg4NywKKzB4NEYsIDB4MDIsIDB4RTAsIDB4MkMsIDB4MDAsIDB4MDcsIDB4MDIsIDB4RDMsIDB4MTEsIDB4NUQsIDB4MEQsIDB4MzEsIDB4OTUsCisweEMwLCAweDU2LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LAorMHhBNywgMHgwMCwgMHhERSwgMHg2MCwgMHg1QywgMHgwMCwgMHhGMCwgMHgyMSwgMHhDMCwgMHgyNywgMHgwMCwgMHgxRiwgMHgwMiwKKzB4NDAsIDB4MDEsIDB4NzAsIDB4MjUsIDB4QzAsIDB4MjcsIDB4MjAsIDB4REYsIDB4ODAsIDB4N0MsIDB4Q0EsIDB4RjAsIDB4MDksCisweEM5LCAweDA3LCAweDAwLCAweERGLCAweDUyLCAweDY4LCAweDQxLCAweEYwLCAweDA1LCAweEMwLCAweEE3LCAweDAwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwOSwgMHgyRiwgMHgxNCwgMHhGRiwgMHgwMCwKKzB4RkMsIDB4MDEsIDB4RjgsIDB4MDMsIDB4QzEsIDB4MEUsIDB4MDAsIDB4RkYsIDB4MDEsIDB4Q0MsIDB4NDMsIDB4MzAsIDB4OEIsCisweEMwLCAweDZDLCAweDIwLCAweEZGLCAweDAwLCAweENELCAweDA2LCAweEYwLCAweDhGLCAweEM4LCAweDNDLCAweDAwLCAweDc3LAorMHgwNSwgMHhGQywgMHgwNywgMHgzNCwgMHgwMywgMHhDMCwgMHgxNSwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4MjAsIDB4NjYsIDB4MDEsIDB4REQsIDB4MDAsIDB4NzQsIDB4MDgsIDB4RDgsIDB4MzEsCisweDQwLCAweDY0LCAweDAwLCAweDhELCAweDA1LCAweDQ0LCAweDA4LCAweDUwLCAweDA1LCAweDQwLCAweDM0LCAweDAwLCAweERFLAorMHgwMCwgMHg0NCwgMHg2MiwgMHhEMCwgMHgxOSwgMHg0NCwgMHg5MCwgMHgwMCwgMHg5MSwgMHgwNCwgMHg3NCwgMHg0QiwgMHgzMCwKKzB4MDAsIDB4NDAsIDB4MTQsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweEEwLCAweDQ2LCAweDAwLCAweERELCAweDgwLCAweDc0LCAweDAwLCAweEQwLCAweDE5LCAweDAwLCAweDQ2LCAweDAwLCAweDFELAorMHgwOCwgMHg0NCwgMHgwOCwgMHgxMCwgMHgwOSwgMHg0MSwgMHgyNSwgMHgwMiwgMHhEOSwgMHgwMCwgMHg2NCwgMHgwMywgMHhEMCwKKzB4MDksIDB4NDAsIDB4ODQsIDB4MzAsIDB4OTUsIDB4MDAsIDB4MzAsIDB4MjAsIDB4MDIsIDB4NDUsIDB4NDAsIDB4MDUsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwOCwgMHg0NCwgMHg0MCwgMHgwMCwgMHgwRCwgMHgwMCwgMHgwNSwgMHgwMCwgMHg1MCwKKzB4MDAsIDB4NTAsIDB4MjAsIDB4MTAsIDB4QzUsIDB4MDAsIDB4MDQsIDB4MDEsIDB4RDAsIDB4MDEsIDB4MTAsIDB4MDQsIDB4ODgsCisweDQxLCAweDAwLCAweDM0LCAweDAwLCAweDExLCAweDBDLCAweDQwLCAweDQwLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgxOSwgMHgwNiwgMHgwMCwgMHhGRiwgMHgwMCwgMHg3QywgMHgwMSwgMHhEMCwKKzB4MDksIDB4QzAsIDB4MDYsIDB4MDAsIDB4NUYsIDB4MDAsIDB4MEMsIDB4MDMsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MTAsCisweEVELCAweDAwLCAweDRDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLCAweDIwLCAweDIwLCAweDE3LCAweDAwLCAweDdDLCAweDAwLAorMHgzNCwgMHgwMSwgMHhDMCwgMHgwNSwgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4QjgsIDB4MkQsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDEsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsCisweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEM0LCAweDFGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAxLAorMHhGMSwgMHgwMywgMHhFMCwgMHgxRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHg3MCwgMHgwQiwgMHhEMCwgMHgxNywKKzB4MjQsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MkYsIDB4MDQsCisweEZGLCAweDAxLCAweEVDLCAweDUyLCAweEQwLCAweDFGLCAweEMwLCAweDNFLCAweDIxLCAweDJGLCAweDAxLCAweEZDLCAweDEzLAorMHgzMCwgMHgwRCwgMHhDMCwgMHg1NywgMHgwMCwgMHg4QiwgMHgyMSwgMHhDRSwgMHgyMywgMHhCMCwgMHg2RiwgMHhDMCwgMHhCQywKKzB4MDksIDB4M0YsIDB4MDQsIDB4Q0MsIDB4OTMsIDB4MzMsIDB4MDMsIDB4QzIsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDA4LCAweDg3LCAweDEwLCAweERELCAweDAwLCAweDc0LCAweDBFLAorMHhEOCwgMHgxRCwgMHg0MCwgMHg3RiwgMHgwQSwgMHg5RCwgMHgwMSwgMHhGNCwgMHgyRiwgMHgxMCwgMHgyRiwgMHg0NCwgMHg1NywKKzB4MTAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MzMsIDB4MTAsIDB4MkYsIDB4NDAsIDB4QkMsIDB4MDEsIDB4NUQsIDB4MDksIDB4QzQsCisweERCLCAweDEwLCAweDAxLCAweDQwLCAweDBGLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMywgMHhBMCwgMHgwMywgMHgwNSwgMHhDRCwgMHg1NCwgMHgzNCwgMHgwMCwgMHhEMCwgMHgwQywgMHg0MCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDEsIDB4MzQsIDB4MDMsIDB4MTgsIDB4MkMsIDB4NDAsIDB4MTQsIDB4MDAsIDB4REQsIDB4MDAsIDB4MTUsCisweDEzLCAweEQwLCAweDZDLCAweDQwLCAweEIxLCAweDA4LCAweDhELCAweDAwLCAweDU0LCAweDIzLCAweDEwLCAweDAwLCAweDQwLAorMHg0RCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBOCwgMHg0NSwKKzB4MDAsIDB4REQsIDB4MDQsIDB4NzQsIDB4ODQsIDB4RDEsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REMsIDB4MDAsIDB4NzQsCisweDAzLCAweDEwLCAweDBELCAweDQwLCAweDE3LCAweDAwLCAweDk1LCAweDAwLCAweDY0LCAweDAzLCAweDUwLCAweDBELCAweDRBLAorMHgzNSwgMHgwMCwgMHhERCwgMHgwMCwgMHg1NCwgMHgwMywgMHgxMCwgMHgxMSwgMHg0MCwgMHgwRiwgMHgyMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTgsIDB4NjcsIDB4MDAsIDB4REYsIDB4MjAsIDB4NkMsCisweDE0LCAweEQwLCAweDBELCAweEMwLCAweDM2LCAweDAwLCAweDVGLCAweEU4LCAweDdDLCAweDAzLCAweDMxLCAweDBELCAweEMwLAorMHg0MiwgMHgwMCwgMHg4QiwgMHg0MCwgMHg0QywgMHgwMywgMHhGMCwgMHgwRCwgMHg0MCwgMHgzNSwgMHgxMCwgMHg0RSwgMHg1MiwKKzB4MUMsIDB4MDMsIDB4MTQsIDB4MTksIDB4QzAsIDB4MjMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDBGLCAweDgwLCAweDA1LCAweDAwLCAweEZGLCAweDQxLCAweEZDLCAweDAyLCAweEYyLCAweDJGLCAweEMxLAorMHgzRiwgMHgwQywgMHg3RiwgMHgwMSwgMHhCMCwgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHg0RiwgMHgwMiwgMHhCOCwgMHg0MCwKKzB4RDgsIDB4MDMsIDB4QjAsIDB4MEYsIDB4QzAsIDB4M0UsIDB4MDAsIDB4RkYsIDB4MDMsIDB4RUMsIDB4MjMsIDB4RjQsIDB4MDMsCisweDQwLCAweDFGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBBLCAweDA4LAorMHg2NSwgMHgwMSwgMHhEMywgMHgwMCwgMHg3QywgMHgwQywgMHhGMCwgMHgwRCwgMHhDOCwgMHgzNywgMHgwMCwgMHg1QiwgMHgwMCwKKzB4NEMsIDB4NDMsIDB4RjAsIDB4OEQsIDB4QzAsIDB4OTcsIDB4MDAsIDB4REYsIDB4MDgsIDB4NUMsIDB4MDMsIDB4RjEsIDB4MEQsCisweEMwLCAweDM3LCAweDAwLCAweDVGLCAweDAwLCAweDVDLCAweDQzLCAweEYwLCAweDg5LCAweEMwLCAweDJCLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgwNCwgMHgwMCwgMHhEMSwgMHgwQiwKKzB4NzQsIDB4MDAsIDB4RDAsIDB4M0QsIDB4NDAsIDB4QkYsIDB4MjQsIDB4NTEsIDB4MEEsIDB4QzQsIDB4MUIsIDB4RDAsIDB4QkYsCisweDQwLCAweDE3LCAweDA2LCAweDlDLCAweDAwLCAweEM0LCAweDAzLCAweEQwLCAweDBGLCAweDA0LCAweDNDLCAweDEwLCAweERDLAorMHgwMSwgMHg0MCwgMHgwQiwgMHgxMCwgMHhCOSwgMHg0MCwgMHg0RiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MjAsIDB4QTAsIDB4MDAsIDB4QzEsIDB4MDEsIDB4MjQsIDB4MDIsIDB4RDAsIDB4MUMsCisweDQwLCAweDMzLCAweDAwLCAweDA5LCAweDBCLCAweDM0LCAweDAzLCAweEQwLCAweDFDLCAweDYwLCAweDgzLCAweDA4LCAweDg4LAorMHgwMSwgMHg1NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwgMHgwMCwgMHg0RCwgMHgxMywgMHgxMCwgMHgyRiwgMHg1MCwKKzB4MDgsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEYsCisweDAwLCAweDc4LCAweDQwLCAweEUxLCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFFLCAweDQ5LCAweDdCLCAweDAwLCAweEI1LAorMHgwOSwgMHhBNCwgMHg4NywgMHhEMCwgMHg1RSwgMHg0MCwgMHg0QiwgMHgwOSwgMHhBRCwgMHgyNSwgMHg4MCwgMHgwNywgMHhEMCwKKzB4MUMsIDB4NDAsIDB4NzgsIDB4MDAsIDB4Q0QsIDB4MjEsIDB4QzAsIDB4MjcsIDB4MDAsIDB4MTIsIDB4NDAsIDB4M0YsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDEwLCAweDAyLCAweEMzLAorMHgxOCwgMHgzQywgMHgyMywgMHhGOCwgMHgwQywgMHhDMCwgMHgzMywgMHgwMSwgMHg4QiwgMHgwOCwgMHgyQywgMHgwMywgMHhGMCwKKzB4NUMsIDB4ODAsIDB4NDMsIDB4MDEsIDB4Q0YsIDB4MDUsIDB4MUMsIDB4MDMsIDB4RjAsIDB4NEMsIDB4QzAsIDB4MzEsIDB4MDAsCisweDRGLCAweDEwLCAweDVDLCAweDM3LCAweDcwLCAweDBDLCAweEMwLCAweDRCLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwOCwgMHhGQywgMHgyMywgMHhGMCwKKzB4MEYsIDB4QzgsIDB4M0IsIDB4MDAsIDB4RkIsIDB4NjgsIDB4REMsIDB4MjMsIDB4RjAsIDB4MkYsIDB4QzEsIDB4MEYsIDB4MjAsCisweDlGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNDLCAweDAwLCAweEZGLCAweDA4LCAweDdDLCAweEFCLAorMHg1MiwgMHgwRiwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NzgsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzYsIDB4MDQsCisweDFGLCAweDAwLCAweDRDLCAweDYzLCAweEYwLCAweDRELCAweEM4LCAweDA2LCAweDA4LCAweDkzLCAweDAwLCAweDdDLCAweDAzLAorMHhGMSwgMHhGRCwgMHhDMCwgMHhCNiwgMHgwMSwgMHg1RiwgMHgwMSwgMHg2QywgMHgwQSwgMHgzMCwgMHgwRCwgMHhDMCwgMHg0MCwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OTAsIDB4MzksIDB4MDAsCisweEVELCAweDgwLCAweEI0LCAweDAzLCAweEMxLCAweDBFLCAweEMwLCAweDM5LCAweDAxLCAweEVELCAweDAwLCAweDg0LCAweDAzLAorMHhEMSwgMHg0RSwgMHg0MiwgMHgwQSwgMHgwMCwgMHhBNSwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMSwgMHgwRSwgMHg0MSwgMHgzOCwKKzB4MEQsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDIsIDB4MTIsIDB4MDYsIDB4QzAsIDB4NEUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDI4LCAweEVELCAweDIxLCAweEIwLCAweDA3LAorMHhEOSwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMywgMHhBRCwgMHgwMSwgMHhBNCwgMHgxNywgMHhEMCwgMHg1RSwgMHg0MCwgMHg0QSwKKzB4MDgsIDB4RTEsIDB4MjEsIDB4QjQsIDB4MjcsIDB4RDAsIDB4MUMsIDB4NDAsIDB4N0EsIDB4MDIsIDB4N0QsIDB4MDEsIDB4QTQsCisweDA2LCAweDEwLCAweDFDLCAweDQwLCAweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNiwgMHgwMCwgMHgzNywgMHgwNCwgMHg5RCwgMHg0MSwgMHgzNCwgMHg0NywgMHhEMCwgMHgwOCwgMHg0MCwgMHgzMSwKKzB4MDAsIDB4Q0QsIDB4MDgsIDB4MjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NjIsIDB4ODAsIDB4ODUsIDB4MDAsIDB4MzQsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweENELCAweDAzLCAweDA0LCAweDAyLCAweDEwLCAweDJELCAweDQwLAorMHg1QSwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgyOCwgMHg5RiwKKzB4MDAsIDB4NUQsIDB4MDEsIDB4RkUsIDB4MUQsIDB4RjAsIDB4MTUsIDB4RTEsIDB4MTYsIDB4MDAsIDB4NkYsIDB4MDMsIDB4NkYsCisweDAxLCAweEYwLCAweDA1LCAweEMwLCAweDVBLCAweDA0LCAweDUzLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEMwLAorMHgxNiwgMHgwMCwgMHg3RiwgMHgxMCwgMHg2QywgMHg0NSwgMHgzMCwgMHg0NywgMHhDMCwgMHg1QywgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDIsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDgsIDB4N0UsCisweDAwLCAweEYwLCAweDAxLCAweEEwLCAweDA3LCAweDAwLCAweDFGLCAweDA0LCAweDVFLCAweDAwLCAweEYwLCAweDIwLCAweDA4LAorMHgwNywgMHgwMSwgMHgxRiwgMHg4MCwgMHg3QywgMHgwMCwgMHhEMCwgMHgwMSwgMHhDMCwgMHgwMywgMHgyMCwgMHgxRCwgMHgyNCwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MjEsIDB4RDgsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDY1LCAweDAwLCAweDkzLCAweEMxLCAweDJDLCAweDgyLCAweEUxLCAweDE5LCAweEMwLAorMHgyNSwgMHgwOSwgMHg5RiwgMHgwMCwgMHg0QywgMHg5MiwgMHhEMCwgMHgxOSwgMHhDMCwgMHg2NCwgMHgxMCwgMHg5MywgMHgwOCwKKzB4M0MsIDB4MDIsIDB4NDAsIDB4MDksIDB4QzQsIDB4MjcsIDB4MDAsIDB4OTMsIDB4ODAsIDB4N0MsIDB4MDIsIDB4NzUsIDB4MDksCisweEMxLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLAorMHg2NiwgMHgwMCwgMHg5MSwgMHg4MSwgMHg0QywgMHgwMiwgMHgxMCwgMHg5OCwgMHgwMCwgMHhBNSwgMHgwMCwgMHg5RCwgMHgxOCwKKzB4NDUsIDB4MEEsIDB4RDAsIDB4QTksIDB4NTAsIDB4MjQsIDB4MDMsIDB4OTUsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTMsIDB4MDksCisweDQ0LCAweDI3LCAweDAwLCAweDkxLCAweDFCLCAweDM0LCAweDA2LCAweDEyLCAweDY5LCAweDUwLCAweDA0LCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgzNCwgMHg4MiwgMHg5OSwgMHgwOCwKKzB4NjQsIDB4MDYsIDB4MTAsIDB4MDksIDB4MDAsIDB4QTQsIDB4MDAsIDB4OTksIDB4MDAsIDB4NTQsIDB4NDIsIDB4RDIsIDB4MDksCisweDQ1LCAweDM0LCAweDAwLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweDUwLCAweDA5LCAweDQwLCAweDI3LCAweDQwLCAweDkxLAorMHgwMCwgMHg3NCwgMHgxMiwgMHg1MSwgMHgwRCwgMHg0MCwgMHg2MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjIsIDB4MzAsIDB4MTUsIDB4QzEsIDB4MDAsIDB4MDQsIDB4NTIsIDB4MTIsIDB4MTksCisweDQyLCAweDIxLCAweDgwLCAweDhELCAweDQwLCAweDA2LCAweDgyLCAweEQwLCAweDA4LCAweDQwLCAweDI0LCAweDAwLCAweDg1LAorMHgwMCwgMHgzNCwgMHgyMiwgMHg1MCwgMHg4OCwgMHg0MCwgMHgyMywgMHgwMiwgMHg4MSwgMHgwMCwgMHg3MCwgMHhEMiwgMHgxMCwKKzB4NDgsIDB4NDEsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsCisweDM4LCAweDA3LCAweDAxLCAweDFCLCAweDAwLCAweDZDLCAweDEwLCAweDcwLCAweDAxLCAweEMwLCAweDA1LCAweDA1LCAweDFCLAorMHg0MCwgMHg0OCwgMHhEMCwgMHhGMCwgMHhFMSwgMHhDMSwgMHgwNCwgMHgwMCwgMHg1MywgMHgwQSwgMHg3QywgMHg1OCwgMHg3MSwKKzB4NjEsIDB4QzEsIDB4ODcsIDB4MDUsIDB4MTMsIDB4MTQsIDB4MzgsIDB4MTEsIDB4NzAsIDB4NDEsIDB4QzAsIDB4NzQsIDB4RTAsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDJELCAweDQ1LCAweEJGLAorMHgxNCwgMHhEQywgMHgwMiwgMHhCNCwgMHgwQiwgMHhDMCwgMHgyNywgMHgwMCwgMHhBQywgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MTksIDB4QzAsIDB4MkIsIDB4MDgsIDB4QkYsIDB4MDEsIDB4N0MsIDB4MTIsIDB4QjEsIDB4NDksIDB4QzAsIDB4MjcsIDB4MTEsCisweEFGLCAweDAwLCAweEZDLCAweDUyLCAweEYwLCAweDRCLCAweEMxLCAweDc3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBMCwgMHhCRiwgMHgwMCwgMHhCMywgMHgwMCwgMHhGQywgMHg1MiwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4MkQsIDB4MDUsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDAsCisweEJGLCAweDgwLCAweDZDLCAweDAyLCAweDEwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweEJGLCAweDAwLCAweENDLCAweDAyLAorMHgzMiwgMHgwQiwgMHhEMCwgMHg3NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MUIsIDB4QTQsIDB4NzQsIDB4MDgsIDB4RDAsIDB4MDEsIDB4NDAsIDB4ODQsIDB4NDgsCisweDExLCAweDIwLCAweDQ0LCAweDAwLCAweEQyLCAweEExLCAweDQwLCAweDA1LCAweDAwLCAweDFELCAweDAwLCAweDQwLCAweDkwLAorMHgxMCwgMHg0MSwgMHg0MCwgMHgwNCwgMHgwMSwgMHgxRCwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHg2MCwKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4QTAsIDB4QTEsIDB4MjEsCisweDgxLCAweDEwLCAweDMwLCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDIxLCAweDAwLCAweEQ1LCAweDAwLCAweDA0LCAweDBCLAorMHhEMCwgMHgwRCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHg4MCwgMHgzMCwgMHg0QSwgMHgxMSwgMHgyOCwgMHg0MSwgMHhBMiwKKzB4MDQsIDB4OEQsIDB4MDAsIDB4MDUsIDB4ODIsIDB4MTQsIDB4MDgsIDB4NDAsIDB4NDksIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDI4LCAweDI1LCAweDAwLCAweDk5LCAweDA0LCAweDc0LCAweDAyLAorMHhEMCwgMHg0OSwgMHg0MCwgMHgyNiwgMHgwOCwgMHg5NSwgMHgwMCwgMHg0NCwgMHgwMiwgMHhDMCwgMHgwOSwgMHg0MCwgMHgyNSwKKzB4MEQsIDB4OUQsIDB4ODAsIDB4MTQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDYsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MTAsIDB4NDQsCisweDAyLCAweDEwLCAweDBELCAweDQwLCAweDYwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHgyMCwgMHhFNSwgMHgwNiwgMHg5MywgMHg0MCwgMHg3OCwgMHgxQSwgMHhEMSwgMHgwOSwgMHhDMCwgMHgyNSwKKzB4MDAsIDB4OTcsIDB4MEYsIDB4NDUsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4QTQsIDB4MDAsIDB4OEYsIDB4ODEsIDB4N0UsCisweDAyLCAweDM0LCAweDA5LCAweEQwLCAweDI2LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDAyLCAweDMwLCAweDQ5LCAweEMwLAorMHgxNSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwOCwgMHgyNCwKKzB4MDAsIDB4OUYsIDB4QzAsIDB4N0MsIDB4MTIsIDB4RjAsIDB4MDksIDB4QzgsIDB4MjUsIDB4MDAsIDB4OUIsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDA5LCAweEMwLCAweDY3LCAweDAwLCAweDlGLCAweDA1LCAweDZDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLAorMHgyNSwgMHgwMCwgMHg5RiwgMHg0MCwgMHg3QywgMHgwMiwgMHhGMCwgMHg0OSwgMHhDMSwgMHg1QiwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MTAsIDB4NzgsCisweDA4LCAweEYwLCAweDAxLCAweEMxLCAweDAxLCAweDA0LCAweDFGLCAweDA0LCAweDdDLCAweDkwLCAweEIwLCAweDAxLCAweEMwLAorMHg4NCwgMHgwMCwgMHgxRiwgMHgxMCwgMHg0QywgMHgwMCwgMHhGMSwgMHgwMSwgMHhDMCwgMHgwNywgMHgxMCwgMHgwNywgMHgxMCwKKzB4M0MsIDB4MDQsIDB4MzAsIDB4MjEsIDB4QzAsIDB4NTAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweERDLCAweDAxLCAweDdELCAweDA3LCAweDc0LCAweDAxLCAweDEwLCAweDI2LCAweDQwLAorMHgxRiwgMHgxOSwgMHg2RCwgMHgwMCwgMHhGNCwgMHgwOSwgMHgxMCwgMHgwNywgMHg0MCwgMHhEQywgMHgwMiwgMHg3RCwgMHgwMywKKzB4NDQsIDB4MDEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTcsIDB4MDAsIDB4NzEsIDB4NDUsIDB4RjQsIDB4NDEsIDB4MTEsIDB4MjcsCisweDQwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLAorMHhGNiwgMHgwMSwgMHhDRCwgMHgwMywgMHgzNCwgMHgyMiwgMHg1OCwgMHgyQywgMHg0OCwgMHg3MywgMHgwMCwgMHhDQywgMHgwMCwKKzB4MzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzAsIDB4MDAsIDB4Q0QsIDB4MEEsIDB4MzIsIDB4MDMsIDB4RDAsIDB4MEMsCisweDQwLCAweDMzLCAweDgwLCAweEM1LCAweDAwLCAweDM0LCAweDA0LCAweDkwLCAweEFELCAweDQwLCAweDQwLCAweDAwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwgMHgwMCwgMHg2RCwgMHgwMCwKKzB4QjQsIDB4MDcsIDB4NUEsIDB4MkEsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjAsIDB4MDcsIDB4NTIsIDB4MEEsCisweDQwLCAweDk4LCAweDAwLCAweEVELCAweDAwLCAweDg0LCAweDEzLCAweEQwLCAweDRFLCAweDQwLCAweDdCLCAweDgxLCAweEUxLAorMHgwMCwgMHhCNCwgMHgwMiwgMHg5MCwgMHgwNCwgMHg0NCwgMHgxMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NzksIDB4MDgsIDB4RUYsIDB4MDEsIDB4QkMsIDB4ODcsIDB4NzAsIDB4MUUsCisweEMwLCAweDVCLCAweDAwLCAweEVFLCAweDAxLCAweEJDLCAweDA2LCAweEYwLCAweDFGLCAweEMwLCAweDc4LCAweDAwLCAweEJGLAorMHgwMSwgMHg5QywgMHgwNywgMHhGMCwgMHhCRSwgMHhDNCwgMHg3RiwgMHgyMSwgMHhFNywgMHgwMSwgMHhGQywgMHgwNCwgMHhCMCwKKzB4MUUsIDB4RDAsIDB4NTAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweEIyLCAweDM1LCAweDAwLCAweDVGLCAweDYwLCAweDNDLCAweDAzLCAweDM4LCAweDAxLCAweEM4LCAweDA3LCAweDAwLCAweERGLAorMHgwMCwgMHgzQywgMHgwMCwgMHhCMCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgyMCwgMHg3QywgMHgyQiwgMHhGMCwKKzB4NkQsIDB4QzgsIDB4QjcsIDB4MjAsIDB4OUQsIDB4MDAsIDB4N0MsIDB4ODIsIDB4NzEsIDB4MDUsIDB4QzAsIDB4NDMsIDB4NjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDdELCAweDAyLCAweEZGLAorMHg4MSwgMHhDQywgMHgxNywgMHg3MSwgMHgxNywgMHhDMCwgMHg2RiwgMHgwMiwgMHhGRiwgMHg4MSwgMHhGQywgMHg4NSwgMHhGMCwKKzB4OUYsIDB4NDAsIDB4NzgsIDB4MDIsIDB4QjMsIDB4MjksIDB4RkUsIDB4MkYsIDB4QjAsIDB4MUYsIDB4RTAsIDB4RkYsIDB4MDQsCisweDczLCAweDA5LCAweEZDLCAweDI3LCAweEYxLCAweDVGLCAweEMwLCAweDFCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwgMHgxOSwgMHgyNiwgMHg2RCwgMHgwOCwgMHhBQywgMHg4MywgMHhEMCwKKzB4MjIsIDB4NDAsIDB4OEIsIDB4MDAsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDgsIDB4RDAsIDB4MUEsIDB4NDAsIDB4OTgsIDB4MDAsCisweEExLCAweDAxLCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweEMwLCAweDM5LCAweDAxLCAweEVCLCAweDAwLCAweDM0LCAweDA3LAorMHhEMCwgMHgwQSwgMHg0MCwgMHg1NywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4NDgsIDB4MDgsIDB4MzksIDB4MTgsIDB4RkQsIDB4MDAsIDB4QTQsIDB4MTMsIDB4RDAsIDB4MDIsIDB4NDAsIDB4MEIsIDB4MDAsCisweEVELCAweDEwLCAweEI0LCAweDIwLCAweEQwLCAweDBFLCAweDQwLCAweDJCLCAweDQwLCAweDIxLCAweDAwLCAweEI0LCAweDgzLAorMHg5MSwgMHgwRSwgMHg0MCwgMHgzOSwgMHgxMCwgMHg2MSwgMHgxMCwgMHhCNCwgMHgwMiwgMHhEMCwgMHg0RSwgMHg0MCwgMHgyMywKKzB4MDIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MjEsIDB4MDAsCisweDFELCAweDAxLCAweDI2LCAweDA3LCAweEQwLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweDBELCAweDAzLCAweDM0LCAweDgwLAorMHhEMCwgMHgwMCwgMHg0MCwgMHhBMywgMHgwMCwgMHgwMSwgMHgwMSwgMHgzNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0OCwgMHgzMSwKKzB4ODAsIDB4ODUsIDB4MDAsIDB4MzQsIDB4ODEsIDB4RDAsIDB4MjksIDB4NDAsIDB4MEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDg4LCAweDA0LCAweDAwLCAweDlGLCAweDAxLCAweDY0LCAweDBCLAorMHg3MSwgMHgwOSwgMHhDMCwgMHgyNywgMHg5MCwgMHgxRiwgMHgwMywgMHg3QywgMHgwMiwgMHhGMCwgMHgwMSwgMHhDMCwgMHgyNywKKzB4MjAsIDB4RDMsIDB4MTEsIDB4RkMsIDB4MDMsIDB4QjAsIDB4MEYsIDB4QzAsIDB4M0QsIDB4MDAsIDB4ODEsIDB4MDEsIDB4N0MsCisweDAxLCAweEQwLCAweDI5LCAweEMwLCAweDU3LCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwRCwgMHgwMCwgMHg4NywgMHgwMSwgMHg5RiwgMHgwOCwgMHg3QywgMHgyMywgMHhGMCwgMHgxOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4MUYsIDB4MzIsIDB4M0UsIDB4MEEsIDB4RjAsIDB4MDEsIDB4NDAsIDB4MTQsIDB4QTEsIDB4OUYsIDB4MDAsIDB4NzAsCisweDAzLCAweEQwLCAweDBELCAweEM4LCAweDM1LCAweDQwLCAweDlCLCAweDEwLCAweDc0LCAweDAxLCAweEUwLCAweDIxLCAweEMwLAorMHgzNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwOCwgMHgwQiwKKzB4MDAsIDB4QkIsIDB4MDAsIDB4OEMsIDB4NDMsIDB4QjAsIDB4MEIsIDB4QzQsIDB4MkIsIDB4MDAsIDB4RjMsIDB4MDAsIDB4RkMsCisweDAyLCAweDMyLCAweDAxLCAweEM0LCAweDJGLCAweDAxLCAweEJGLCAweDQwLCAweEVDLCAweDAzLCAweEYwLCAweDBGLCAweEM0LAorMHgzQiwgMHgwMCwgMHgzNywgMHgwNSwgMHg5NCwgMHg4MSwgMHgzMywgMHgwMywgMHg4MSwgMHgwNCwgMHgyOCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4QzYsIDB4MjEsIDB4OTEsIDB4MDcsIDB4NDQsCisweDgzLCAweEIwLCAweDMxLCAweDQwLCAweEU3LCAweDAwLCAweEQxLCAweDA2LCAweDc0LCAweDA0LCAweDEwLCAweDMxLCAweDQ4LAorMHg3NywgMHgxMCwgMHg5QywgMHgwMSwgMHg3NCwgMHgwMywgMHg3MSwgMHgwRCwgMHg0MCwgMHgzNywgMHgwMCwgMHgxMSwgMHgzMiwKKzB4NDQsIDB4MEIsIDB4MTAsIDB4MzEsIDB4NDAsIDB4ODUsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDY0LCAweDAwLCAweDE5LCAweDAxLCAweDU0LCAweDA3LCAweDkwLCAweDE5LCAweDAwLAorMHg2NiwgMHgwMCwgMHgxMSwgMHgwMSwgMHg3NCwgMHgwNiwgMHgxMCwgMHgxMywgMHg0MSwgMHgwNywgMHgwMCwgMHhCOSwgMHgwMSwKKzB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4NTUsIDB4MDAsIDB4NTQsIDB4NDcsIDB4NTAsIDB4MTksCisweDQwLCAweDA1LCAweDA4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgxNCwgMHgwMywgMHg5MCwgMHgwOCwgMHg2MiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MzQsIDB4MDIsIDB4MTQsIDB4NDAsIDB4NDAsIDB4MTMsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MzQsIDB4MDMsIDB4NTAsIDB4MEMsCisweDQwLCAweDMzLCAweDA4LCAweEMxLCAweDAwLCAweDE0LCAweDIwLCAweDEwLCAweDA4LCAweDQyLCAweDQxLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHgyNiwgMHgwOCwgMHg5QiwgMHgwMCwKKzB4NUUsIDB4MDMsIDB4QjEsIDB4MDksIDB4QzAsIDB4MjcsIDB4NDAsIDB4RDEsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4NDEsCisweEMwLCAweDA3LCAweDEwLCAweDFGLCAweDFDLCAweEVDLCAweDAzLCAweEYxLCAweDBGLCAweEU0LCAweDNCLCAweDAwLCAweDU3LAorMHgwMCwgMHg1QywgMHgxMiwgMHgzNCwgMHgwMSwgMHhDMCwgMHgwNSwgMHg2MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4QTgsIDB4MkYsIDB4MDAsIDB4QUYsIDB4MDAsIDB4RUMsIDB4MDMsIDB4NzAsIDB4MDMsCisweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweEMxLCAweEMxLCAweDBGLCAweDA0LCAweDFGLAorMHgwNCwgMHhGQywgMHgwMywgMHg3MiwgMHgwRiwgMHhDNCwgMHgzRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHg2QywgMHgzMCwgMHhGMCwKKzB4MDMsIDB4QzQsIDB4MTcsIDB4NjIsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEEwLCAweDJELCAweDExLCAweEJGLCAweDAwLCAweEZDLCAweDEzLCAweEIyLCAweDkzLCAweEM4LCAweDNELCAweDExLCAweDEzLAorMHgwOCwgMHhEQywgMHgyMiwgMHgzMiwgMHg0RiwgMHhDOCwgMHgwRiwgMHgyMCwgMHg3QiwgMHg0MSwgMHhFQywgMHgwMywgMHhGMCwKKzB4MTcsIDB4QzAsIDB4M0MsIDB4MDAsIDB4QkYsIDB4MDEsIDB4RUMsIDB4MDAsIDB4MzAsIDB4MDMsIDB4QzQsIDB4MEMsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDQ3LCAweDAyLCAweDlDLAorMHg4QywgMHhGNCwgMHgyNywgMHgwNCwgMHgwOSwgMHg0QywgMHg3RCwgMHgyMiwgMHgxRCwgMHgwNCwgMHg3NCwgMHgxMiwgMHg1MCwKKzB4QUYsIDB4NDIsIDB4MDcsIDB4MDAsIDB4OTksIDB4ODEsIDB4NDQsIDB4MEIsIDB4RDAsIDB4MDksIDB4NDAsIDB4M0MsIDB4MTAsCisweDlELCAweDQwLCAweDQ0LCAweDAwLCAweDEwLCAweDExLCAweDQwLCAweDBDLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHgyMCwgMHgyMSwgMHgwOCwgMHgwRCwgMHg1MCwgMHgzNCwgMHgwMywgMHgxOCwKKzB4NTEsIDB4NDQsIDB4MzEsIDB4MDAsIDB4MEQsIDB4MjAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MEMsIDB4NjQsIDB4MDEsIDB4MDAsCisweDg5LCAweDAwLCAweDI0LCAweDBCLCAweEQwLCAweDAxLCAweDUwLCAweDMwLCAweDAwLCAweDlELCAweDAwLCAweDI0LCAweDAwLAorMHgxMCwgMHgwMCwgMHg0MCwgMHg0QywgMHg4MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTgsIDB4NDcsIDB4ODAsIDB4MUQsIDB4NTEsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MTEsIDB4NDAsIDB4MzUsIDB4MDAsCisweDNELCAweDAyLCAweEY0LCAweDAyLCAweDUwLCAweDBELCAweDAwLCAweDRGLCAweDA4LCAweDg5LCAweDA4LCAweDQ0LCAweDAzLAorMHhEMiwgMHgxOSwgMHgwMCwgMHgzQywgMHgwMCwgMHg5RCwgMHgwMSwgMHg0NCwgMHgwNCwgMHgxMCwgMHgxMSwgMHg0MiwgMHgwQywKKzB4QTAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4NjcsIDB4MDAsCisweDlGLCAweDAzLCAweDdDLCAweDAzLCAweDMwLCAweDE4LCAweENDLCAweDM1LCAweDE4LCAweDFCLCAweDAxLCAweDVFLCAweDA2LAorMHgyMCwgMHgwRCwgMHhDMCwgMHhDNywgMHgwMCwgMHhEQiwgMHgwMCwgMHg2QywgMHgwMywgMHhGMCwgMHgxQywgMHhDMCwgMHgzNCwKKzB4MjAsIDB4Q0YsIDB4MDEsIDB4NkMsIDB4ODQsIDB4MzAsIDB4MTEsIDB4QzAsIDB4MDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDg4LCAweDJELCAweDAwLCAweEJGLCAweDgwLCAweEJDLCAweDAzLAorMHhGMCwgMHgwQiwgMHhDMCwgMHgzRSwgMHg4MCwgMHgxRCwgMHgwMywgMHhGQywgMHgyNiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgyRiwKKzB4MDAsIDB4QkYsIDB4MDEsIDB4RkMsIDB4MDMsIDB4RjIsIDB4MEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsCisweDAwLCAweEY0LCAweDA5LCAweEQwLCAweDFGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwOCwgMHgyNSwgMHgxOCwgMHg5MywgMHgwMSwgMHg3QywgMHhBMywgMHhGMCwgMHgwMSwgMHhDMCwgMHg3NywKKzB4MDAsIDB4MUIsIDB4MDIsIDB4NEMsIDB4NDIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4ODcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAzLCAweDMwLCAweDA5LCAweDgwLCAweDM3LCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEMxLAorMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQiwgMHhBMCwgMHg2NCwKKzB4MDQsIDB4OTEsIDB4MDIsIDB4RjQsIDB4MkYsIDB4RDAsIDB4MDEsIDB4NDAsIDB4QkYsIDB4MDAsIDB4MTEsIDB4ODAsIDB4NDUsCisweDQ3LCAweEQxLCAweDBGLCAweDQ0LCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweEY0LCAweDAzLCAweDEwLCAweDA5LCAweDQwLAorMHgzRiwgMHgwMCwgMHg1RCwgMHgwMCwgMHgzNCwgMHg0NCwgMHgxMCwgMHgzOCwgMHg1OCwgMHg2QywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4MjAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4MzAsIDB4MzYsCisweDBGLCAweEQ4LCAweDAwLCAweDQwLCAweDMzLCAweDAxLCAweDA5LCAweDAwLCAweDUwLCAweDBFLCAweEQwLCAweDlDLCAweDIyLAorMHg0MywgMHgwMiwgMHg0QywgMHg4MCwgMHgzNCwgMHgwMywgMHgxMCwgMHgwMCwgMHg0MCwgMHgzMywgMHgwMCwgMHhDRCwgMHgwNiwKKzB4MzQsIDB4MDAsIDB4MTQsIDB4QTAsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDBGLCAweDAwLCAweDU4LCAweDAyLCAweEU5LCAweDgxLCAweEI0LCAweDA3LCAweEQwLCAweDFBLCAweDQwLAorMHg3QiwgMHgwMCwgMHgyMSwgMHgwOSwgMHg4NCwgMHgwNiwgMHhEMSwgMHg5RSwgMHg0MCwgMHg1QiwgMHgwMCwgMHhBRCwgMHgwMSwKKzB4QjQsIDB4MDcsIDB4MTAsIDB4MUEsIDB4NDAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4NDEsIDB4QjQsIDB4MDcsIDB4MTgsIDB4OUEsCisweDQwLCAweDNDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDFBLAorMHgzMCwgMHgwMCwgMHg0QiwgMHgwOCwgMHgzQywgMHgwMywgMHhGMCwgMHg4MCwgMHhDMCwgMHgzMywgMHgwMCwgMHgwQiwgMHgwNSwKKzB4MEMsIDB4MDIsIDB4RjAsIDB4MEMsIDB4QzAsIDB4NDMsIDB4MDEsIDB4Q0YsIDB4MDAsIDB4N0MsIDB4MjMsIDB4MzQsIDB4MDAsCisweDQwLCAweDMzLCAweDAwLCAweENGLCAweDAwLCAweDNDLCAweDAxLCAweDMwLCAweDA0LCAweEM4LCAweDQ4LCAweDY4LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzMCwgMHgxOSwgMHgwMCwgMHhGMCwgMHg2MCwKKzB4RkMsIDB4NjMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0IsIDB4MDIsIDB4RkYsIDB4MDgsIDB4RjAsIDB4MjMsIDB4RjAsIDB4MEYsCisweEM0LCAweDFGLCAweDAyLCAweEJGLCAweDAwLCAweEZDLCAweDgzLCAweEYwLCAweDBCLCAweEMwLCAweEJGLCAweDEwLCAweEZGLAorMHgwMCwgMHhCQywgMHgwMywgMHhGMSwgMHgwRCwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MTcsIDB4MTAsIDB4NTMsIDB4MDAsIDB4NzQsIDB4NUYsIDB4MzQsIDB4MDksCisweEMwLCAweDM3LCAweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDAyLCAweDMxLCAweDlELCAweDgwLCAweDc0LCAweDAwLCAweEQzLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHhCNywgMHg4MiwgMHhDRiwgMHgwMCwgMHgyQywgMHgwMiwgMHgzMCwKKzB4MTUsIDB4RDAsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsCisweDhBLCAweDM5LCAweDAwLCAweEUxLCAweDAwLCAweDM0LCAweDEzLCAweDEwLCAweDBBLCAweDQwLCAweEJCLCAweDAzLCAweDhELAorMHg4MCwgMHg4NCwgMHgwMiwgMHgxMiwgMHg4QywgMHg0MiwgMHgzQywgMHgwOCwgMHhBMSwgMHgwMCwgMHhCNCwgMHgxMywgMHhEMCwKKzB4MEEsIDB4NDAsIDB4M0EsIDB4ODAsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4NEMsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDQwLCAweDY5LAorMHgwMSwgMHhCNCwgMHgxNywgMHhEMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgwMCwgMHg2RCwgMHgxMSwgMHg5NCwgMHg0NiwgMHg5MCwKKzB4NUUsIDB4NDAsIDB4NjgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4QjQsIDB4MzcsIDB4OTAsIDB4MUUsIDB4NDAsIDB4N0IsIDB4MDAsCisweDdELCAweDYxLCAweEE0LCAweDA3LCAweDE0LCAweDE0LCAweDQwLCAweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyOCwgMHhCMywgMHgwMCwgMHhDOSwgMHgwMSwgMHgzNCwgMHgwMywgMHg1MCwKKzB4OEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4QzMsIDB4NTQsIDB4MDcsIDB4OTAsIDB4MEMsIDB4NTAsIDB4NzAsIDB4MDEsCisweDgxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDQ4LCAweDQwLCAweDM2LCAweDAwLCAweDRELCAweDA5LCAweDA0LCAweDAzLAorMHgxMCwgMHgxQywgMHg0MSwgMHg1OCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTcsIDB4QTAsIDB4MUYsIDB4MjAsIDB4N0IsIDB4ODUsIDB4N0MsIDB4MDEsIDB4NzgsIDB4MTcsIDB4QzYsIDB4MTcsIDB4MDgsCisweDdGLCAweDAzLCAweDVDLCAweDA1LCAweEI2LCAweDA1LCAweEMwLCAweDVDLCAweDAxLCAweDczLCAweDAyLCAweDdDLCAweDAxLAorMHhCMCwgMHgzNywgMHhDMSwgMHgxNywgMHgwMCwgMHg3RiwgMHgwOSwgMHhBQywgMHgwMSwgMHgzMCwgMHg3NywgMHhDMCwgMHg1QywKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODgsIDB4MDUsIDB4MjQsCisweDE3LCAweDQ2LCAweDdDLCAweDAwLCAweEEwLCAweDAxLCAweEUwLCAweDgzLCAweDIwLCAweDFFLCAweEEwLCAweDZDLCAweDAwLAorMHg3MCwgMHgwMSwgMHhDMCwgMHg4NywgMHgwMCwgMHgxRiwgMHgwNCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNiwKKzB4MDAsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MDQsIDB4RjAsIDB4MDEsIDB4QzAsIDB4NEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweEExLCAweDAwLCAweDkzLCAweDA4LCAweDdDLCAweDg2LAorMHhGMCwgMHgwOSwgMHhDMSwgMHgyNSwgMHgwOCwgMHg5MywgMHgxMCwgMHg0QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHg2NywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NDgsCisweDE2LCAweDMwLCAweDQ5LCAweEMwLCAweDQzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMCwgMHg5NSwgMHgwMywgMHg3NCwgMHg2NiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MjAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MEEsIDB4MTAsIDB4MzksIDB4NDQsIDB4QTcsIDB4MDIsIDB4OEQsIDB4MjAsIDB4NDQsCisweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDg1LCAweDQwLCAweDQ0LCAweDQyLCAweDEwLCAweDQ5LCAweDQwLAorMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgzNCwKKzB4MDAsIDB4OTEsIDB4ODIsIDB4NzQsIDB4ODIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjcsIDB4MDAsIDB4ODEsIDB4MDAsIDB4NTQsCisweDBBLCAweDEwLCAweDQ5LCAweDQ5LCAweEI3LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHgyNywgMHgwMCwgMHg5MSwgMHgwMCwgMHg1NSwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MzAsIDB4QTUsIDB4ODUsIDB4MTQsIDB4MzQsCisweDgyLCAweEQwLCAweDg4LCAweDQwLCAweDMzLCAweDYwLCAweDgxLCAweDRDLCAweDA0LCAweDMyLCAweDE4LCAweDA4LCAweDQwLAorMHgyMywgMHgwMSwgMHg5RCwgMHgwMiwgMHgwNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwMSwgMHg4NSwgMHgwMCwKKzB4MTQsIDB4RDIsIDB4MTAsIDB4NDgsIDB4NDEsIDB4NDMsIDB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA3LCAweDAxLCAweDEzLCAweDI0LCAweDdDLCAweDUwLCAweEYwLCAweDIxLCAweEM0LAorMHgwNSwgMHgwNSwgMHgxMywgMHgwMywgMHgwOSwgMHgwQywgMHgzMCwgMHhFMSwgMHhDMSwgMHhDNywgMHgwMiwgMHgxRiwgMHgwMCwKKzB4NEQsIDB4NzgsIDB4RjAsIDB4QTEsIDB4QzgsIDB4QzcsIDB4MEEsIDB4NTMsIDB4MDAsIDB4NUMsIDB4MTAsIDB4MzIsIDB4NDEsCisweEMwLCAweDc3LCAweEUwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LAorMHgyQiwgMHgwMCwgMHhCRiwgMHgxNCwgMHg3QywgMHgwMiwgMHhGMCwgMHg0QiwgMHhDMCwgMHgyNywgMHgwMCwgMHhCRiwgMHgwQywKKzB4RkMsIDB4MzIsIDB4RjQsIDB4MTksIDB4QzIsIDB4NkYsIDB4MDIsIDB4QkQsIDB4MDEsIDB4N0MsIDB4MDYsIDB4RjAsIDB4MUIsCisweEMwLCAweDY3LCAweDAyLCAweEZGLCAweDE0LCAweEU0LCAweDUyLCAweEY0LCAweDBCLCAweEMwLCAweDc3LCAweDQwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBOCwgMHg3RiwgMHgwNCwgMHhCRiwgMHgwMiwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MjksIDB4QzAsIDB4MkQsIDB4MjAsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MEEsIDB4MzAsIDB4NEIsCisweEMwLCAweDJDLCAweDAwLCAweDkzLCAweDAyLCAweDdDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweEIzLAorMHgwMCwgMHhGQywgMHgwQSwgMHgzMCwgMHgwQiwgMHhDMCwgMHg3NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MTcsIDB4MDAsIDB4MUQsIDB4MDIsIDB4NzQsIDB4MjgsIDB4RDAsIDB4MDAsCisweDQ4LCAweDg3LCAweDAyLCAweDFELCAweDA0LCAweDVDLCAweDEwLCAweDE0LCAweEExLCAweDUwLCAweDA0LCAweDAwLCAweDE1LAorMHgwMSwgMHg3NCwgMHgyOCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNSwgMHgwMCwgMHgxQiwgMHgwMCwgMHg3NCwgMHgxMCwgMHgxMCwKKzB4MDEsIDB4QzAsIDB4NjIsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDAwLCAweDIxLCAweDIwLCAweDhELCAweDg2LCAweDM0LCAweDAyLCAweEMwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweDhELAorMHgxMCwgMHgzMCwgMHgxMiwgMHgxOCwgMHgwOCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg4MSwgMHgwMSwgMHgzNCwgMHgwMiwgMHgxNCwKKzB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MTMsIDB4MTAsIDB4MDgsIDB4NDQsIDB4NDgsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDI4LCAweDI1LCAweDAwLCAweERELAorMHgwQSwgMHg3NCwgMHgwMiwgMHhDMCwgMHgwOSwgMHg0MCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwMiwgMHgxNCwgMHgyMiwgMHgxMCwKKzB4MDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4OTUsIDB4MDEsIDB4MzQsIDB4MDIsIDB4MTAsIDB4NDksIDB4NDQsIDB4MjUsIDB4MDAsCisweDk5LCAweDAwLCAweDM0LCAweDA2LCAweDE0LCAweDQ5LCAweDQwLCAweDYyLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwQSwgMHgyNSwgMHgxMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhFMCwKKzB4MjksIDB4QzEsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDIsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MDgsIDB4QzYsIDB4NjQsIDB4MDIsCisweEIzLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDkzLCAweDAyLCAweDdDLCAweDA2LAorMHgzMCwgMHgwOSwgMHhDMCwgMHgxNCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTYsIDB4MDAsIDB4QTUsIDB4MjAsIDB4OUYsIDB4MjEsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MzksIDB4QzAsIDB4MjcsIDB4MDQsCisweDlGLCAweDA0LCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweDQwLCAweDY3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLAorMHhGMiwgMHgxOSwgMHhDMCwgMHgyMywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMiwgMHgwOCwgMHhDMCwgMHg1QiwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDAsCisweDFGLCAweDA0LCAweDZDLCAweDAwLCAweDcwLCAweDIxLCAweEMwLCAweDA0LCAweDAyLCAweDFGLCAweDAyLCAweDdDLCAweDAwLAorMHgzMSwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxMywgMHg0MCwgMHg0QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywKKzB4MDgsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MDQsIDB4MzAsIDB4QzEsIDB4QzAsIDB4NTMsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweERDLCAweDBFLCAweDdELCAweDA2LCAweEY0LCAweDQxLAorMHgxMCwgMHgwNSwgMHg4MCwgMHg1RSwgMHgwMCwgMHg1RCwgMHg2MCwgMHhGNCwgMHg2RCwgMHgxMCwgMHgzNywgMHg0MCwgMHgxQywKKzB4MDAsIDB4NTEsIDB4MDAsIDB4NkMsIDB4MDEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTcsIDB4MDAsIDB4NzUsIDB4NDAsIDB4RjQsCisweDAxLCAweDEwLCAweDE3LCAweDQwLCAweDQzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHhBMCwgMHhFMiwgMHgwMCwgMHhDRCwgMHg0MSwgMHgyNCwgMHgxNywgMHg4MCwgMHgwQywgMHg1OCwgMHhGMCwKKzB4MjAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MEYsIDB4OTAsIDB4MkMsIDB4NDEsIDB4NzQsIDB4MDQsIDB4QzEsIDB4MDAsIDB4MDQsCisweDAzLCAweEQxLCAweDBELCAweDQwLCAweDMzLCAweDAwLCAweDgxLCAweDEwLCAweDM0LCAweDAzLCAweDEwLCAweDJDLCAweDQwLAorMHg0MywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4OCwgMHgyOSwKKzB4ODAsIDB4RUQsIDB4ODAsIDB4QjQsIDB4MDcsIDB4OTQsIDB4REUsIDB4NDAsIDB4MjgsIDB4MjAsIDB4RUMsIDB4MDgsIDB4MzQsCisweDAzLCAweDkwLCAweDJDLCAweDUwLCAweDIwLCAweDA0LCAweEYxLCAweDQ1LCAweEE0LCAweDIzLCAweEQwLCAweDBFLCAweDQwLAorMHgzQiwgMHgwMCwgMHgyNSwgMHgwMCwgMHgzNCwgMHgwMywgMHgxMiwgMHgwQSwgMHg0MCwgMHgxMywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NzksIDB4MDAsIDB4RUYsIDB4MDEsIDB4QUMsCisweDA1LCAweEIxLCAweDVFLCAweDQxLCAweDc4LCAweDAwLCAweEVGLCAweDA1LCAweEJDLCAweDA1LCAweEIwLCAweDFBLCAweEMwLAorMHg3OCwgMHgwMCwgMHhGMywgMHg0MywgMHg4QywgMHg1NywgMHhGMCwgMHgxRSwgMHhDMywgMHg3MywgMHgwMCwgMHhBMywgMHgwMSwKKzB4QkMsIDB4MDcsIDB4MzQsIDB4MTIsIDB4QzAsIDB4NTMsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEE4LCAweDM1LCAweDAwLCAweDVGLCAweDQwLCAweDNDLCAweDAwLCAweDMxLCAweDRELCAweEM4LAorMHgyNywgMHgwOCwgMHhERiwgMHgxMCwgMHg3QywgMHgwMSwgMHg3MCwgMHgwOSwgMHhDOCwgMHgzNywgMHg0MCwgMHhERiwgMHgwMCwKKzB4N0MsIDB4MTMsIDB4RjAsIDB4Q0QsIDB4QzAsIDB4QjcsIDB4MDIsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4QjQsIDB4MDksCisweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDIwLAorMHg2RCwgMHgwMCwgMHhGRiwgMHgwMSwgMHhDQywgMHgwNiwgMHhGMCwgMHg5RiwgMHhDMCwgMHg1RiwgMHgwMiwgMHhGRiwgMHgwOSwKKzB4Q0MsIDB4MjcsIDB4RjAsIDB4MUIsIDB4QzAsIDB4N0QsIDB4MDAsIDB4RUYsIDB4NDEsIDB4Q0MsIDB4ODcsIDB4NzAsIDB4MUYsCisweEMwLCAweEZDLCAweDAwLCAweEUzLCAweDAxLCAweENDLCAweDA3LCAweDMwLCAweDFGLCAweEM4LCAweDFCLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwMCwgMHgyOSwgMHgyMCwgMHhGRCwgMHgwMCwKKzB4QUMsIDB4MUEsIDB4RDIsIDB4Q0UsIDB4NDAsIDB4MkIsIDB4MDAsIDB4RkQsIDB4MDAsIDB4ODQsIDB4MDQsIDB4RDAsIDB4MEYsCisweEMwLCAweDIwLCAweDAxLCAweEVELCAweDI1LCAweEM0LCAweDA3LCAweDUwLCAweDBFLCAweEMxLCAweDNBLCAweDIwLCAweDZCLAorMHgwMCwgMHg5NCwgMHgwMywgMHhCMCwgMHgwQSwgMHg0MCwgMHg1NywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjksIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4RDIsIDB4MEUsCisweDYwLCAweDBCLCAweDIwLCAweEVELCAweDAwLCAweDk2LCAweDAzLCAweEQwLCAweDAyLCAweDQwLCAweDFCLCAweDgwLCAweEZELAorMHgwNSwgMHhDNCwgMHgwMywgMHgxMSwgMHg4RSwgMHg0MCwgMHgzOCwgMHgwMCwgMHhGMSwgMHgwMCwgMHg4NCwgMHg0MywgMHgxMCwKKzB4MkUsIDB4NDAsIDB4MjMsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDI4LCAweEYxLCAweDA0LCAweDhELCAweDEzLCAweDM0LCAweDAyLCAweEQwLCAweDJELCAweDQwLCAweDIzLCAweDAwLCAweEM5LAorMHgwMywgMHg1NCwgMHgwNCwgMHhEMCwgMHgwMCwgMHg0MCwgMHhDMCwgMHgxMCwgMHhDRCwgMHgwNCwgMHgwNCwgMHgwMywgMHg1OCwKKzB4M0MsIDB4NDEsIDB4MzIsIDB4MDAsIDB4NTksIDB4MDAsIDB4MTQsIDB4MDcsIDB4OTEsIDB4MEMsIDB4NDAsIDB4MEIsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEEwLCAweDI1LCAweDEwLCAweDFGLAorMHgxMiwgMHg3QywgMHgwMiwgMHhGMCwgMHgyRiwgMHhDMCwgMHgyNywgMHgwMCwgMHhGRiwgMHgwNSwgMHg1QywgMHg0NiwgMHhGMCwKKzB4MDUsIDB4QzAsIDB4MDcsIDB4MDEsIDB4REYsIDB4MDcsIDB4Q0QsIDB4MDMsIDB4MzIsIDB4MEYsIDB4NDAsIDB4M0MsIDB4MDAsCisweDUzLCAweDAwLCAweDRDLCAweDA3LCAweDMwLCAweDI1LCAweEMwLCAweDU3LCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRCwgMHgwOCwgMHgyNywgMHgwMiwgMHg5RiwgMHgwMCwgMHg2NCwgMHgwOCwgMHhGMCwKKzB4Q0QsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsIDB4ODcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweEUwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAzLAorMHhGMCwgMHgwMSwgMHhDMiwgMHgzNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ODksIDB4MDksIDB4M0YsIDB4MTAsIDB4MkYsIDB4MDAsIDB4Q0MsIDB4ODAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MDgsIDB4MDAsCisweEYzLCAweDEwLCAweEZDLCAweDIwLCAweDMwLCAweDAzLCAweEMwLCAweDBGLCAweDA0LCAweEZGLCAweDAwLCAweEJDLCAweDAzLAorMHgxMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgxMCwgMHhGRiwgMHgwMSwgMHg0QywgMHg2NSwgMHhGMCwgMHg5NywgMHhDMCwgMHgwNywKKzB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4QjYsIDB4MDAsCisweDFELCAweDIxLCAweDU0LCAweDA0LCAweEQwLCAweDBELCAweDQwLCAweEM0LCAweDAwLCAweEQxLCAweDQwLCAweDc0LCAweDAwLAorMHgxMCwgMHgyMSwgMHg0MCwgMHhDNiwgMHgwMSwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhCMCwgMHgwRCwgMHhDMCwgMHgzNSwKKzB4MDAsIDB4REQsIDB4MEIsIDB4NTQsIDB4MDAsIDB4RDAsIDB4MkQsIDB4NDQsIDB4ODcsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDI0LCAweDE0LCAweDFELCAweDAxLCAweDQ2LCAweDA2LAorMHhEMCwgMHgwRCwgMHg0MCwgMHg0NCwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgxMywgMHg0MSwgMHg0RiwKKzB4ODAsIDB4REQsIDB4MDAsIDB4RjQsIDB4MDMsIDB4NTAsIDB4MEYsIDB4NDAsIDB4M0YsIDB4MDAsIDB4OUQsIDB4MTAsIDB4NDQsCisweDAzLCAweDkwLCAweDI1LCAweDQwLCAweDA3LCAweDA4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyMiwgMHgyMCwgMHgwMCwgMHg4RCwgMHg4MCwgMHgxNCwgMHgwMCwgMHhEOCwgMHgwQywgMHg0MCwgMHgyMCwKKzB4MDAsIDB4QzEsIDB4MjIsIDB4MzQsIDB4NDAsIDB4MTQsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MDAsIDB4Q0QsIDB4MDQsIDB4MzQsCisweDEzLCAweEQwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweDhELCAweDAwLCAweDE0LCAweDA3LCAweEQwLCAweDAwLCAweDQwLAorMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhCOCwgMHgwNiwKKzB4MDAsIDB4MUYsIDB4MDAsIDB4NEMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MDQsIDB4MDAsIDB4RjEsIDB4MDIsIDB4NzQsCisweDEzLCAweDMwLCAweDAxLCAweEMwLCAweDg3LCAweDAyLCAweEZGLCAweDEwLCAweEZDLCAweDUzLCAweDcwLCAweDBFLCAweEMwLAorMHgzQiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgwNywgMHg2MCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4QjAsIDB4MUYsIDB4MDAsIDB4QkYsIDB4ODAsIDB4RjgsCisweDAwLCAweEYwLCAweDBGLCAweEMyLCAweDBGLCAweDAwLCAweEZGLCAweDIwLCAweDdDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLAorMHgwRSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhCMSwgMHgwRiwgMHhDMCwgMHgzRCwgMHgwMCwgMHhCRiwgMHgwMCwKKzB4RkMsIDB4ODMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MTcsIDB4NjEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAwLCAweEZGLCAweDA5LCAweEZDLCAweDAyLCAweDMwLCAweDRCLCAweEMxLAorMHgzRiwgMHgxMywgMHhGRiwgMHgwMCwgMHhDQywgMHgxMywgMHg3MCwgMHg4MywgMHhDMCwgMHgzQywgMHg0MCwgMHhGMywgMHgwMCwKKzB4QkMsIDB4MDYsIDB4QjAsIDB4MEYsIDB4QzAsIDB4MkMsIDB4MTcsIDB4M0IsIDB4MEMsIDB4Q0MsIDB4MDAsIDB4QjAsIDB4MDMsCisweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDE4LAorMHgzNywgMHgwMSwgMHhDRCwgMHgwNCwgMHg3NCwgMHhFQSwgMHgxMCwgMHg2OSwgMHhDOCwgMHhCRCwgMHgyMiwgMHhGRCwgMHhERSwKKzB4RDQsIDB4MkYsIDB4MTAsIDB4MDEsIDB4NDAsIDB4RkMsIDB4MDAsIDB4RDEsIDB4MDIsIDB4NDQsIDB4ODcsIDB4MTAsIDB4MUYsCisweDQwLCAweEE1LCAweDAxLCAweDExLCAweDBFLCAweDQ0LCAweDA4LCAweDEwLCAweDAxLCAweDQwLCAweDBGLCAweDYwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzMywgMHgwNCwgMHhDRCwgMHgwMCwKKzB4MzQsIDB4MTAsIDB4NTAsIDB4MDAsIDB4NDEsIDB4MzMsIDB4MDksIDB4Q0QsIDB4NDQsIDB4MTQsIDB4MDMsIDB4MTAsIDB4NTAsCisweDYwLCAweEIxLCAweDAwLCAweEM1LCAweDAyLCAweDE0LCAweDgyLCAweDkwLCAweDBELCAweDYwLCAweDM0LCAweDAxLCAweEM5LAorMHgwMCwgMHgwNCwgMHgwOCwgMHgxMiwgMHgwMCwgMHg0MCwgMHg0RiwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4MzUsIDB4MDAsIDB4REQsIDB4MDQsIDB4MzYsIDB4MEUsIDB4NTQsIDB4MTksCisweDQyLCAweDM3LCAweDAwLCAweERELCAweDAwLCAweDQ0LCAweDAzLCAweDEwLCAweDEyLCAweDQwLCAweDM1LCAweDAwLCAweEQ1LAorMHgyMCwgMHg1NSwgMHgwMywgMHgxMCwgMHgwRiwgMHg0MCwgMHg1NSwgMHgwMCwgMHhDMSwgMHgxOCwgMHg0NSwgMHg2MywgMHgxMCwKKzB4MTEsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweEE4LCAweDM3LCAweDAwLCAweERELCAweDAwLCAweDdDLCAweDA2LCAweDcwLCAweDMxLCAweEMwLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgxMSwgMHg0MCwgMHgzNSwgMHgwMCwgMHhENiwgMHgwMCwgMHg3QywgMHgwMiwgMHhCMCwKKzB4MEQsIDB4QzAsIDB4NjQsIDB4ODAsIDB4MUIsIDB4MDMsIDB4NEUsIDB4MDcsIDB4MzAsIDB4MTksIDB4QzAsIDB4MkIsIDB4MjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBGLCAweDgwLCAweEZELCAweDIwLCAweEZGLAorMHg4MSwgMHg3RSwgMHgwMiwgMHhCMCwgMHgwMSwgMHhDNCwgMHgzRCwgMHgwMCwgMHhERiwgMHgwMCwgMHhCQywgMHg0MywgMHhCMCwKKzB4MEIsIDB4QzAsIDB4M0UsIDB4MTAsIDB4RkEsIDB4MDAsIDB4RUMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsCisweEZGLCAweDgwLCAweDdDLCAweDAxLCAweDcwLCAweDAzLCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHgwOCwgMHgzOCwKKzB4MjEsIDB4QzAsIDB4MzQsIDB4MDgsIDB4RDcsIDB4QzAsIDB4NEMsIDB4MDMsIDB4NzAsIDB4MDEsIDB4RDEsIDB4MzAsIDB4MDAsCisweERGLCAweDg0LCAweDRELCAweDQyLCAweDMyLCAweDRELCAweEMwLCAweDI3LCAweDAwLCAweDFCLCAweDEyLCAweDNDLCAweDAyLAorMHgzMCwgMHgwOSwgMHhDMCwgMHgyQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUIsIDB4QTAsIDB4MzQsIDB4MDAsIDB4REQsIDB4MDAsIDB4NkMsIDB4ODIsIDB4MTAsIDB4MTksIDB4NDEsIDB4M0MsIDB4MDAsCisweEYxLCAweDAwLCAweEM0LCAweDRCLCAweEQwLCAweDE5LCAweDQwLCAweDNDLCAweDAxLCAweEU3LCAweDAxLCAweDA0LCAweDQ2LAorMHgxMiwgMHgzRiwgMHhDMCwgMHgxMSwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgxQiwgMHgxMCwgMHhCOSwgMHg0MSwgMHg0RiwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MzIsIDB4MDAsCisweENELCAweDAwLCAweDI0LCAweDAwLCAweDEwLCAweDU4LCAweDQwLCAweDMwLCAweDAwLCAweEQ1LCAweDAwLCAweDA0LCAweDBCLAorMHg1MCwgMHgyMCwgMHg0MCwgMHgzMiwgMHgwMCwgMHhDOCwgMHgyQiwgMHgwNCwgMHgwQSwgMHgxMiwgMHgwRCwgMHg0NCwgMHgyMywKKzB4MTAsIDB4MDksIDB4MDgsIDB4MzQsIDB4NDAsIDB4OTAsIDB4MTgsIDB4NDAsIDB4MEUsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBELCAweDA4LCAweDdBLCAweDAwLCAweEVELCAweDAxLCAweEE0LCAweDA1LAorMHgxMCwgMHgxRSwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFMSwgMHgwMSwgMHg4NCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0MSwgMHg3OCwKKzB4ODAsIDB4RTUsIDB4MDEsIDB4QzQsIDB4MDcsIDB4MTAsIDB4MUUsIDB4NDAsIDB4NzksIDB4MDAsIDB4RUQsIDB4MDEsIDB4QjQsCisweDE1LCAweDkwLCAweDEyLCAweDQwLCAweDM3LCAweDIwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgxMCwgMHgzMiwgMHgwMCwgMHhDRSwgMHg0MCwgMHgyQywgMHgyMSwgMHgxMCwgMHg4NCwgMHhDMCwgMHgzNCwKKzB4MDIsIDB4QzcsIDB4MDgsIDB4MDYsIDB4MDMsIDB4NzAsIDB4MDUsIDB4QzAsIDB4MzIsIDB4MDAsIDB4Q0YsIDB4NDAsIDB4MEMsCisweDAyLCAweDMwLCAweDBDLCAweEMxLCAweDIzLCAweDAwLCAweDBCLCAweDA0LCAweDNDLCAweDAyLCAweEIwLCAweDBDLCAweEMwLAorMHg0QiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMCwgMHgzRCwKKzB4MjAsIDB4RkYsIDB4ODAsIDB4REQsIDB4ODEsIDB4RjAsIDB4OEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MjAsIDB4RkUsCisweDAzLCAweEYwLCAweDBGLCAweEMwLCAweEJELCAweDA0LCAweEVGLCAweDAwLCAweEZDLCAweDAzLCAweEY1LCAweDBGLCAweEMwLAorMHgxRiwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgxMywgMHg3MiwgMHgwRiwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsIDB4MzcsIDB4MjAsIDB4REYsIDB4MDAsIDB4N0MsCisweDAzLCAweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAxLCAweERGLCAweDA0LCAweDdDLCAweDEzLCAweEQxLCAweDExLCAweEQwLAorMHgzMCwgMHgwMSwgMHhEMywgMHgwOCwgMHg0QywgMHgwNiwgMHgzMCwgMHg1RCwgMHhDOCwgMHgyMCwgMHgwMCwgMHgxNywgMHgwMCwKKzB4NUMsIDB4MDAsIDB4QjQsIDB4MEQsIDB4QzAsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEzLCAweDg4LCAweDM4LCAweDEwLCAweEVELCAweDIwLCAweEI2LCAweDAzLCAweEQwLCAweDBFLCAweDQwLAorMHhCQiwgMHgwMywgMHhFRCwgMHgyOCwgMHhCNCwgMHgyMywgMHhEMCwgMHgwQiwgMHg0MCwgMHgzOCwgMHgwMCwgMHhFMSwgMHgwMCwKKzB4QUMsIDB4MDIsIDB4NTAsIDB4QUUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4RTEsIDB4NDAsIDB4QjQsIDB4MDEsIDB4MTAsIDB4MDYsCisweDQwLCAweDRDLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLAorMHg3OSwgMHg4MCwgMHhFRCwgMHg4MSwgMHg5NCwgMHgwNywgMHhEOCwgMHgxNiwgMHg0MCwgMHg3QiwgMHgwMCwgMHhFRCwgMHgwOSwKKzB4QjQsIDB4MjcsIDB4RDAsIDB4MTYsIDB4NDksIDB4NzgsIDB4MDEsIDB4RTEsIDB4MDUsIDB4OTQsIDB4MDYsIDB4OTAsIDB4NUUsCisweDU4LCAweDZDLCAweDQwLCAweDIxLCAweDAzLCAweDM0LCAweDA2LCAweDUwLCAweDFDLCAweDQwLCAweDEwLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyOCwgMHgyMywgMHg4MCwgMHg4RCwgMHgwMCwKKzB4MzQsIDB4MDcsIDB4RDgsIDB4QUMsIDB4NDAsIDB4MzMsIDB4MTAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MkMsCisweDQwLCAweDMwLCAweDgwLCAweEMxLCAweDAwLCAweDM0LCAweDg2LCAweEQwLCAweDBDLCAweDQwLCAweDEwLCAweDAwLCAweEMxLAorMHgxMCwgMHg3NCwgMHgyRiwgMHg1MCwgMHgyRCwgMHg0MCwgMHg1OCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MTcsIDB4MDEsIDB4NUYsIDB4MDAsIDB4RkMsIDB4MEQsIDB4NzIsIDB4MTcsCisweENBLCAweDE3LCAweDA4LCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA3LCAweDQ4LCAweDE0LCAweDAwLCAweDQzLAorMHgwMCwgMHg1NCwgMHgwMSwgMHhCMCwgMHgwNSwgMHhDNCwgMHgxQywgMHgwMSwgMHg3MywgMHgwMywgMHhEQywgMHgyRCwgMHg3MCwKKzB4NDcsIDB4QzAsIDB4NUMsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDAwLCAweDA1LCAweDIwLCAweDFGLCAweDAwLCAweDdDLCAweDYwLCAweEY4LCAweDAxLCAweEMxLCAweDA3LCAweDAwLCAweDBGLAorMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHg0MSwgMHhDOCwgMHgwMywgMHg0MCwgMHgxRiwgMHgwMCwgMHg2NCwgMHgyMCwgMHg3MywKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MjAsIDB4MTksIDB4MDIsIDB4N0MsIDB4MDAsIDB4QjAsIDB4MjEsIDB4RDAsIDB4NEIsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDAwLCAweDlGLAorMHgwMCwgMHg3OCwgMHgwMiwgMHhGMCwgMHg4OSwgMHhDMiwgMHgyNywgMHgwMCwgMHg5QiwgMHgwMCwgMHg0QywgMHgwNiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjUsIDB4MDEsIDB4OTMsIDB4MDksIDB4NUMsIDB4MDIsIDB4RjAsIDB4OTksIDB4QzAsIDB4MjMsIDB4MDAsCisweDk3LCAweDI4LCAweDQ0LCAweDgyLCAweDMxLCAweDA5LCAweEMxLCAweDQwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MEUsIDB4RDAsIDB4MjksIDB4NDAsIDB4MjcsIDB4MDAsCisweDkxLCAweDAzLCAweDQ0LCAweDAyLCAweEQwLCAweDM5LCAweDQwLCAweDI3LCAweDAwLCAweDkxLCAweDA3LCAweDQ0LCAweDBBLAorMHgxMCwgMHgyOSwgMHg1MSwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUMsIDB4QTAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzAsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDAsCisweDlELCAweDAwLCAweDQ0LCAweDFBLCAweEQwLCAweDI5LCAweDAwLCAweDI3LCAweDQwLCAweDkxLCAweDAyLCAweDU0LCAweDAyLAorMHhEOCwgMHgwOSwgMHg0MSwgMHgyNywgMHgwMCwgMHg4NSwgMHgwMCwgMHg1NCwgMHgwMiwgMHgxMCwgMHgwRCwgMHg0MCwgMHg3MCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjAsIDB4MjAsIDB4MDAsCisweDhELCAweDAwLCAweDM0LCAweDUyLCAweEQwLCAweDRDLCAweDQxLCAweDIzLCAweDAyLCAweDhELCAweDA4LCAweDA0LCAweDgyLAorMHhEMCwgMHhDOCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4MSwgMHgxNCwgMHgwNCwgMHgwMywgMHhEOSwgMHg0OCwgMHg0MCwgMHgyMywKKzB4MDAsIDB4ODEsIDB4MDgsIDB4MTQsIDB4ODIsIDB4MTQsIDB4NDgsIDB4NDEsIDB4NTAsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDFGLCAweDQwLCAweDdDLCAweDEwLAorMHhGMCwgMHg0MSwgMHhDMCwgMHg4NywgMHgwNSwgMHgxQiwgMHgxNiwgMHg0QywgMHg1MCwgMHhGMCwgMHgzMSwgMHhDMCwgMHgwNSwKKzB4MDUsIDB4MDMsIDB4MEUsIDB4NUMsIDB4MDAsIDB4RjAsIDB4MTEsIDB4QzAsIDB4ODcsIDB4MDUsIDB4MTcsIDB4MTYsIDB4NUQsCisweDUxLCAweDMwLCAweDQxLCAweEMwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOSwgMHhCOCwgMHgyRiwgMHgwRCwgMHhCRiwgMHgzNCwgMHhGQywgMHg1MiwgMHhGMCwgMHg0QiwgMHhDMSwgMHgyNywKKzB4MDEsIDB4OUYsIDB4MDQsIDB4N0QsIDB4ODIsIDB4RjAsIDB4Q0IsIDB4ODAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDEsIDB4QkMsCisweDAyLCAweEYwLCAweDg4LCAweEMwLCAweDJGLCAweDA0LCAweEJGLCAweDA0LCAweEVDLCAweDUyLCAweEY4LCAweDRCLCAweEMxLAorMHg2NywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHhBNywKKzB4MDAsIDB4REYsIDB4MDIsIDB4NTQsIDB4MUUsIDB4RjAsIDB4MkIsIDB4QzAsIDB4MjUsIDB4MDEsIDB4OUYsIDB4NTQsIDB4RkMsCisweDEyLCAweDMwLCAweDhCLCAweEMwLCAweDJFLCAweDA1LCAweEIzLCAweDAxLCAweENDLCAweDAyLCAweEYwLCAweDBCLCAweEMwLAorMHhBNCwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMiwgMHgzMiwgMHgwQiwgMHhDMCwgMHg2MCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MTgsIDB4MDMsIDB4MjAsIDB4MUQsIDB4MDEsIDB4NkUsCisweDA4LCAweDEwLCAweDg1LCAweDQwLCAweDAwLCAweDA1LCAweDBELCAweDA0LCAweDc0LCAweDgwLCAweDEwLCAweDAxLCAweDUwLAorMHg4NCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg1NCwgMHgwMSwgMHgxRCwgMHg0MCwKKzB4NDQsIDB4MDAsIDB4QkEsIDB4MDUsIDB4QzAsIDB4NzIsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweEEwLCAweDIxLCAweDgxLCAweDlELCAweDAwLCAweDA0LCAweEIyLCAweDU4LCAweDQ4LCAweDQwLAorMHgyMSwgMHgwMiwgMHg4RCwgMHgxNCwgMHgzNCwgMHgwQSwgMHgxMiwgMHg0OCwgMHg0NCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgyMiwKKzB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NTAsIDB4MjEsIDB4MDEsIDB4OEQsIDB4MDAsIDB4MTQsIDB4MDIsIDB4MTAsIDB4MDgsCisweDQwLCAweDQ4LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDIwLAorMHgyNSwgMHg4MCwgMHg5RCwgMHgwMCwgMHg2NCwgMHg2MiwgMHg1OCwgMHgwRCwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5QywgMHgwMCwKKzB4NzAsIDB4MDIsIDB4MDAsIDB4MEMsIDB4NjAsIDB4MjQsIDB4NDAsIDB4OTEsIDB4MDAsIDB4NDUsIDB4MDIsIDB4RDAsIDB4MEQsCisweDQwLCAweDI1LCAweDIyLCAweDlELCAweDgwLCAweDU0LCAweDJBLCAweDkwLCAweDA5LCAweDQwLCAweDYyLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHg2NywgMHgwMCwgMHg4RCwgMHg0MCwKKzB4NDQsIDB4MDYsIDB4NjgsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDIsIDB4MzAsIDB4MTksCisweEM0LCAweDI2LCAweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDAyLCAweEYwLCAweDA5LCAweDQwLCAweDI1LCAweDAwLCAweDlELAorMHgwRiwgMHg1QywgMHgwNiwgMHgzMCwgMHgyOSwgMHhDMCwgMHgxNCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MjQsIDB4MDEsIDB4OUYsIDB4MDQsIDB4M0MsIDB4MDIsIDB4QjAsIDB4NTksCisweEMwLCAweDI3LCAweDA4LCAweDlGLCAweDAwLCAweDdFLCAweDAyLCAweEY0LCAweDQ5LCAweEMwLCAweDIxLCAweDAwLCAweDlGLAorMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOCwgMHhDMCwgMHg2NiwgMHgwMCwgMHg5RiwgMHgxMSwgMHg2RCwgMHg0MiwgMHhGMiwKKzB4NDksIDB4QzEsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDA1LCAweDQ4LCAweDFCLCAweDAwLCAweDdDLCAweDAwLCAweEI4LCAweDIxLCAweEMxLCAweDA3LCAweDAwLCAweDE3LAorMHgwMCwgMHg0QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwgMHgxMywgMHgwMCwgMHg1QywgMHgyMCwgMHhGMCwKKzB4MTEsIDB4QzAsIDB4MDUsIDB4MDAsIDB4MDcsIDB4MjIsIDB4NEMsIDB4MDgsIDB4RTAsIDB4MjEsIDB4RDAsIDB4NDAsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDE0LCAweDAwLCAweDUxLAorMHgwMCwgMHg3NCwgMHgwMSwgMHhCOCwgMHgwNywgMHg0MCwgMHgxNywgMHgwMCwgMHg1MSwgMHgwMCwgMHhDNCwgMHgwOSwgMHhEMCwKKzB4MTcsIDB4QzAsIDB4MTQsIDB4MDAsIDB4NzMsIDB4ODEsIDB4QzQsIDB4MjksIDB4RDAsIDB4MDcsIDB4NDAsIDB4MTQsIDB4MDAsCisweDcxLCAweDAyLCAweEMwLCAweDQ1LCAweEQxLCAweDA3LCAweDQwLCAweDUwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgzMiwgMHgwMCwgMHhDMSwgMHg4MCwgMHgzNCwgMHgwMywgMHg5MywKKzB4OEQsIDB4NDYsIDB4MzMsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MTQsIDB4MTcsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MjIsIDB4MzAsCisweDU5LCAweDhGLCAweDE0LCAweDAyLCAweEM4LCAweDFDLCAweDQwLCAweDMxLCAweDgwLCAweEM1LCAweDAzLCAweDQ1LCAweDBCLAorMHhEMCwgMHg4RCwgMHg0MCwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4ODgsIDB4NzgsIDB4MDksIDB4RTEsIDB4MDAsIDB4QjQsIDB4MTMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4N0IsIDB4MDMsCisweEU0LCAweDBELCAweDkxLCAweDQzLCAweEQwLCAweDI4LCAweDQwLCAweDMwLCAweDAwLCAweDAxLCAweDAwLCAweEE0LCAweDAxLAorMHhEMSwgMHgwRSwgMHg0MSwgMHg3OCwgMHgwMCwgMHhFMSwgMHgwMiwgMHg4NCwgMHgwMywgMHhEMCwgMHgwNCwgMHg0MCwgMHgwNCwKKzB4MjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MTAsIDB4NzksIDB4MDQsCisweEUzLCAweDBELCAweEI0LCAweDBGLCAweDkwLCAweDFFLCAweEMwLCAweDdCLCAweDA0LCAweEU3LCAweDE1LCAweDlDLCAweDA3LAorMHhGMCwgMHgxNiwgMHhFMCwgMHg2QSwgMHgwMCwgMHgyQiwgMHgwMSwgMHg5QywgMHgwNCwgMHhGMCwgMHgxRSwgMHhDMCwgMHg3RCwKKzB4MDAsIDB4NzcsIDB4MDEsIDB4OEQsIDB4MDcsIDB4RjAsIDB4MUUsIDB4QzQsIDB4NDQsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEE4LCAweDM1LCAweDIzLCAweEQ3LCAweDgwLCAweDdDLCAweDQzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHhCNywgMHgwMSwgMHhEQiwgMHgwNCwgMHg2QywgMHgwMywgMHhGMCwgMHgwMSwgMHhDMiwgMHgyNywKKzB4NDAsIDB4MUYsIDB4MjIsIDB4NUMsIDB4MDEsIDB4RjAsIDB4MDgsIDB4QzAsIDB4MzcsIDB4MDgsIDB4NUYsIDB4MDAsIDB4N0MsCisweDAxLCAweEYyLCAweDA1LCAweEMwLCAweDQzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgyMCwgMHg3RCwgMHgwMCwgMHhGMywgMHgxOSwgMHhGOCwgMHgyNywgMHg3OCwgMHg5RiwgMHhDMCwgMHg3RCwKKzB4MDAsIDB4RjMsIDB4MDEsIDB4QkMsIDB4MDYsIDB4MzAsIDB4MUYsIDB4QzAsIDB4NkYsIDB4MDAsIDB4NjMsIDB4ODMsIDB4Q0MsCisweDA0LCAweEYwLCAweDE3LCAweEM0LCAweDc4LCAweDAwLCAweEIzLCAweDAxLCAweENFLCAweDI1LCAweDMwLCAweDFGLCAweEMwLAorMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxOCwgMHgzOSwKKzB4MUEsIDB4RUIsIDB4MzgsIDB4QjQsIDB4MDMsIDB4NzAsIDB4MEUsIDB4NDAsIDB4MzgsIDB4MDIsIDB4RTEsIDB4MDAsIDB4QjQsCisweDgwLCAweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAxLCAweDY1LCAweDAwLCAweDg0LCAweDA4LCAweEQwLCAweDU2LCAweDQwLAorMHgzOSwgMHgwMCwgMHhBMSwgMHgwMiwgMHg4NCwgMHgyOCwgMHgxMCwgMHg2MiwgMHhDMCwgMHg1NiwgMHg2MCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0QsIDB4MDQsIDB4RTEsIDB4ODgsIDB4QjQsCisweDAzLCAweEQ4LCAweDA2LCAweDQ1LCAweDMxLCAweDQwLCAweEU5LCAweDAwLCAweEI0LCAweDIzLCAweDkwLCAweDA2LCAweDQwLAorMHgyMywgMHg4MCwgMHhBOSwgMHgwMCwgMHg4NCwgMHgwMCwgMHhEMCwgMHg0QywgMHg0MCwgMHgzRSwgMHgwMCwgMHgwNSwgMHgwOCwKKzB4MDUsIDB4ODEsIDB4MTAsIDB4MDYsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDIwLCAweDc1LCAweDAwLCAweEQ4LCAweDAwLCAweDc0LCAweDA3LCAweERBLCAweDE5LCAweDQxLAorMHgzMCwgMHgwMCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgwMSwgMHg5MywgMHgyNSwgMHg0MCwgMHgyNywgMHgwMCwgMHgxRCwgMHgwMCwKKzB4MDQsIDB4MjAsIDB4RDAsIDB4MDgsIDB4NDAsIDB4NzEsIDB4NDAsIDB4NDUsIDB4MDEsIDB4NDQsIDB4ODAsIDB4MTgsIDB4MjEsCisweDQwLCAweDEzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LAorMHg3RCwgMHgwMCwgMHhGMywgMHgwMSwgMHhGQywgMHgxMywgMHhGMCwgMHgwMSwgMHhDNCwgMHgzRCwgMHgwMCwgMHhGQiwgMHg4MCwKKzB4N0UsIDB4MDEsIDB4QjAsIDB4NUQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4NEQsIDB4ODQsIDB4RjAsIDB4MDksCisweEMwLCAweDdDLCAweDA0LCAweEQ1LCAweDEzLCAweDRDLCAweDNFLCAweDM2LCAweDI5LCAweEMwLCAweDU1LCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhERiwgMHg0MCwKKzB4N0MsIDB4NDMsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsIDB4MDAsIDB4M0UsIDB4MDgsIDB4NzIsIDB4MDEsCisweEMwLCAweDM3LCAweDAwLCAweDE3LCAweDAyLCAweDdDLCAweDAxLCAweEYwLCAweDAxLCAweEMwLCAweDM3LCAweDBDLCAweERBLAorMHgwNCwgMHg3QywgMHgwQSwgMHhGMCwgMHgyOSwgMHg4MCwgMHgwNiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODQsIDB4MDgsIDB4M0YsIDB4MDAsIDB4RjMsIDB4MDAsIDB4Q0UsIDB4ODMsIDB4MzAsIDB4MDEsCisweEMwLCAweDM4LCAweDAwLCAweEYzLCAweDAwLCAweEZFLCAweDgzLCAweDMyLCAweDFGLCAweEMxLCAweDJDLCAweDEwLCAweDMzLAorMHgwMCwgMHhDQywgMHgxNCwgMHhGMCwgMHgwQiwgMHg4MCwgMHgzQiwgMHgwMCwgMHg2MywgMHgwOCwgMHhDQywgMHgwMiwgMHhGMCwKKzB4MDksIDB4RDEsIDB4MTAsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsCisweDIwLCAweDM2LCAweDAwLCAweEQxLCAweDIwLCAweDQ0LCAweDAzLCAweDE4LCAweDExLCAweDQwLCAweDM1LCAweDAwLCAweEQxLAorMHgwMCwgMHg3NCwgMHgxMiwgMHg1MCwgMHgyMSwgMHhDMCwgMHgyNiwgMHgwMCwgMHgxQiwgMHgyMywgMHg2QywgMHgwOSwgMHhEMCwKKzB4MjEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4OTEsIDB4MDIsIDB4NDQsIDB4MDQsIDB4MTAsIDB4MTksIDB4NDAsIDB4MTQsIDB4MDAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDM0LCAweDEwLCAweEQxLAorMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgxOSwgMHg0MCwgMHgzNCwgMHg0MCwgMHhEMSwgMHgwMCwgMHg1NCwgMHgxMCwgMHg1MCwKKzB4NDksIDB4NDAsIDB4MjQsIDB4MDAsIDB4MzEsIDB4MTEsIDB4NDQsIDB4MDAsIDB4RDAsIDB4MTUsIDB4NDAsIDB4MzcsIDB4MDAsCisweDkxLCAweDAwLCAweDQ0LCAweDg2LCAweDUwLCAweDE5LCAweDQwLCAweDA0LCAweDA4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyQSwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMCwgMHgwNCwgMHg4MywgMHgxMCwKKzB4MDgsIDB4NDgsIDB4MzEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MzYsIDB4ODAsCisweDE5LCAweDAwLCAweDIwLCAweDAxLCAweEQwLCAweDQ0LCAweDQ0LCAweDMzLCAweDAwLCAweDAxLCAweDYwLCAweDA0LCAweDgyLAorMHgxMiwgMHgwOCwgMHg0MCwgMHg0MCwgMHhBMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MzAsIDB4M0MsIDB4MDgsIDB4RjMsIDB4MDAsIDB4QzQsIDB4MDMsIDB4MTAsIDB4MDEsIDB4NDAsIDB4M0MsIDB4MDAsCisweEYzLCAweDAwLCAweDdDLCAweDAzLCAweDcwLCAweDA5LCAweEMwLCAweDI0LCAweDAwLCAweDMzLCAweDAwLCAweDRDLCAweDAwLAorMHhGMSwgMHg0RCwgMHhDMSwgMHgzNywgMHg0MCwgMHgxMywgMHgwMCwgMHg0RCwgMHgwMiwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwMCwKKzB4QzQsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4QTgsIDB4M0IsIDB4MDAsCisweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDNGLCAweDAwLCAweEZGLCAweDQwLCAweEY0LCAweDAwLAorMHhGMSwgMHgwMywgMHhDOCwgMHgyRiwgMHgwMCwgMHgzRSwgMHgyMCwgMHhGQywgMHg4MSwgMHhGMCwgMHgwMSwgMHhDMCwgMHgzRiwKKzB4MjAsIDB4M0YsIDB4MDAsIDB4RkQsIDB4MDAsIDB4RTAsIDB4MDMsIDB4QzAsIDB4MTcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDNCLCAweDA0LCAweEZGLCAweEMwLCAweEZDLCAweDQzLAorMHhCMiwgMHg0RiwgMHhDMCwgMHgzRCwgMHgwMCwgMHhFRiwgMHgwNCwgMHhFQywgMHgyMywgMHhGMSwgMHgxMiwgMHhDMCwgMHgzNSwKKzB4MDMsIDB4N0IsIDB4MDEsIDB4RkMsIDB4NDIsIDB4QjAsIDB4MTMsIDB4QzAsIDB4MkUsIDB4MDAsIDB4QkIsIDB4MDEsIDB4RUMsCisweDg2LCAweDMwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgwOCwgMHhGRiwgMHgwMCwgMHhGRCwgMHgwQywgMHhGNCwgMHg4RiwgMHhEMCwgMHg5RiwgMHg0OCwgMHhGQywKKzB4MjIsIDB4REQsIDB4MDMsIDB4QzQsIDB4M0IsIDB4RDIsIDB4MTksIDB4NDAsIDB4QjQsIDB4MDEsIDB4OTEsIDB4RTEsIDB4NzQsCisweDBFLCAweDEwLCAweDA1LCAweDQzLCAweDc0LCAweDAwLCAweDkxLCAweDAxLCAweDQ0LCAweDAzLCAweDEzLCAweDExLCAweDQ4LAorMHgwNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzMywKKzB4MTgsIDB4Q0QsIDB4NTAsIDB4MzQsIDB4MDMsIDB4QzAsIDB4MEMsIDB4NDAsIDB4MzIsIDB4MDAsIDB4Q0QsIDB4NDIsIDB4MjQsCisweDEzLCAweEQyLCAweDAxLCAweDYwLCAweEIxLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDQxLCAweDQwLAorMHgyMiwgMHgwMCwgMHg0RCwgMHgwMCwgMHg3NCwgMHgwNCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg4MCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzQsIDB4MDgsIDB4REQsIDB4MDAsIDB4NzQsCisweDgzLCAweEQwLCAweDBELCAweDQwLCAweDM2LCAweDA4LCAweERELCAweDAwLCAweDQ0LCAweDgzLCAweEQwLCAweDExLCAweDQ4LAorMHgzNCwgMHgwOCwgMHg5OSwgMHgwMCwgMHg3NCwgMHgwNywgMHg1MSwgMHg4MSwgMHg0MSwgMHgzNCwgMHgwMCwgMHhENSwgMHgwOCwKKzB4NTYsIDB4OTEsIDB4MTAsIDB4MTksIDB4NDAsIDB4MEYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEEwLCAweDBELCAweEMwLAorMHgzNiwgMHgyMCwgMHhERiwgMHgyMCwgMHg2QywgMHgwMywgMHhGMiwgMHgzOCwgMHhDOCwgMHgzNSwgMHgzMCwgMHhEQiwgMHgwOCwKKzB4N0MsIDB4MDIsIDB4RjAsIDB4MzUsIDB4ODYsIDB4NjIsIDB4MDAsIDB4Q0YsIDB4MDMsIDB4M0MsIDB4MDcsIDB4MzAsIDB4MTEsCisweEMwLCAweDAzLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLAorMHgzRCwgMHgyNCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgzQywgMHgwMCwgMHhGRiwgMHgwMCwKKzB4RkMsIDB4MDMsIDB4RTAsIDB4MEIsIDB4ODAsIDB4MzYsIDB4MDAsIDB4QjUsIDB4MDAsIDB4QkMsIDB4NDMsIDB4QjAsIDB4MTcsCisweEMwLCAweDdGLCAweDBBLCAweEZCLCAweDAwLCAweEVDLCAweDAxLCAweEYyLCAweDBCLCAweEMwLCAweDFGLCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHhENywgMHgwNCwKKzB4N0MsIDB4MDMsIDB4NzEsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MjEsCisweEMwLCAweDM1LCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDIyLCAweEYwLCAweDIxLCAweEMwLCAweDI3LCAweDAwLCAweDVGLAorMHgwMCwgMHg3QywgMHgxMSwgMHgzMCwgMHg4MSwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4M0MsIDB4MDAsIDB4RjEsIDB4ODIsIDB4RjQsIDB4OEYsIDB4MTgsIDB4NUUsCisweDQ0LCAweEZGLCAweDI0LCAweEVELCAweDAyLCAweEM0LCAweDAzLCAweEQyLCAweDgxLCAweDQxLCAweDdDLCAweDAwLCAweDlCLAorMHgwMCwgMHg3NCwgMHgwRiwgMHhDMCwgMHgwMCwgMHg0MCwgMHgzNywgMHgwMCwgMHhEQywgMHgwOSwgMHg0MCwgMHgwOSwgMHgxMCwKKzB4MDksIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsCisweEEwLCAweEYyLCAweDAwLCAweEM1LCAweDAxLCAweDM0LCAweDE3LCAweDUxLCAweDBDLCAweDQwLCAweEIyLCAweDA0LCAweENELAorMHgxMCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwMCwgMHg0MCwgMHgzNywgMHgwMiwgMHgwNSwgMHgwMCwgMHgzNCwgMHgwQiwgMHhDMCwKKzB4MDAsIDB4NEEsIDB4MzMsIDB4MTAsIDB4NEMsIDB4MDEsIDB4MTQsIDB4MDMsIDB4MTAsIDB4MDAsIDB4NDEsIDB4MUYsIDB4MDAsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDgwLCAweDc4LCAweDA2LCAweEUxLAorMHhCMSwgMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg3QiwgMHgyMCwgMHhFRCwgMHg4OSwgMHg5NCwgMHgwNywgMHhEMCwKKzB4MUUsIDB4NDIsIDB4N0EsIDB4MDEsIDB4QTksIDB4ODEsIDB4QjQsIDB4ODcsIDB4RDAsIDB4MTYsIDB4NDAsIDB4NkIsIDB4MDAsCisweDZELCAweDMxLCAweEMwLCAweDA3LCAweDEwLCAweDEyLCAweDQwLCAweDFCLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHhDNywgMHgwOCwgMHgzQywgMHg0MywgMHg1MCwKKzB4MEMsIDB4QzAsIDB4MzMsIDB4MDAsIDB4Q0YsIDB4MjAsIDB4MUMsIDB4MDMsIDB4RjAsIDB4NDAsIDB4QzAsIDB4NzMsIDB4ODEsCisweEM3LCAweDAwLCAweDNDLCAweDMyLCAweEYwLCAweDQwLCAweEMwLCAweDMzLCAweDAwLCAweDRGLCAweDIyLCAweDFDLCAweDEyLAorMHgzMCwgMHg4NCwgMHhDMCwgMHg0QiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QjgsIDB4M0QsIDB4MDAsIDB4RkYsIDB4NDAsIDB4QkMsIDB4MkIsIDB4QjEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsCisweEZGLCAweDkwLCAweEU0LCAweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDNELCAweDAwLCAweEI3LCAweDAwLCAweEZDLCAweDYzLAorMHhGMCwgMHgwNywgMHhDMCwgMHgyRiwgMHgwMiwgMHg2RiwgMHgwMCwgMHgxQywgMHgwMywgMHhGMCwgMHg4RCwgMHhDMiwgMHgwQiwKKzB4NDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4NzMsIDB4MDEsCisweERCLCAweDBBLCAweDdDLCAweDk3LCAweDM5LCAweDZELCAweEMxLCAweEI3LCAweDAxLCAweERGLCAweDAwLCAweDVDLCAweDRCLAorMHg3MSwgMHgxOCwgMHhDMCwgMHgzNiwgMHgyMCwgMHg5RiwgMHgyMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwNSwgMHhDMCwgMHgzMiwKKzB4MDAsIDB4NUIsIDB4MDAsIDB4N0MsIDB4MDMsIDB4MzYsIDB4MDUsIDB4QzAsIDB4NTcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweEI5LCAweDA1LCAweEUxLCAweDU0LCAweEI0LCAweDEzLAorMHgxOCwgMHgyRSwgMHg2MCwgMHhCQiwgMHgwMywgMHhFRCwgMHgwNCwgMHgwNCwgMHgwMywgMHgxMCwgMHgwRSwgMHg2MCwgMHgzOCwKKzB4MDEsIDB4QTcsIDB4MDAsIDB4QjQsIDB4MTMsIDB4RDAsIDB4MDcsIDB4NDIsIDB4MjgsIDB4MTAsIDB4NjEsIDB4MjAsIDB4QjQsCisweDAxLCAweDEwLCAweDBFLCAweDQwLCAweDRCLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHgwMCwgMHg3OSwgMHgwMCwgMHhFOSwgMHgwNSwgMHgzNCwgMHgyNywgMHgxMiwgMHg1RSwgMHg0MCwgMHg3QiwKKzB4MDAsIDB4Q0QsIDB4MDUsIDB4OTQsIDB4MjcsIDB4NTIsIDB4MUEsIDB4NjQsIDB4N0EsIDB4MDIsIDB4RUQsIDB4MDEsIDB4QjQsCisweDBFLCAweEQwLCAweDFFLCAweDQwLCAweDdBLCAweDIwLCAweDZELCAweDIxLCAweEY0LCAweDA3LCAweDEwLCAweDE2LCAweDQwLAorMHgwRiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyMCwgMHgzMywKKzB4MDgsIDB4QzEsIDB4MDAsIDB4MzQsIDB4ODMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MTAsIDB4Q0QsIDB4MjAsIDB4MDQsCisweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDMyLCAweDAwLCAweDg1LCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDI1LCAweDQxLAorMHgyMCwgMHgwMCwgMHg0NSwgMHgwOCwgMHgzNCwgMHg4RiwgMHgxMCwgMHhFQywgMHg0MCwgMHg0QiwgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTAsIDB4MTUsIDB4MDAsIDB4NUIsIDB4MjAsIDB4N0MsCisweDAxLCAweDM1LCAweDA1LCAweEMwLCAweDE3LCAweDAwLCAweDVGLCAweDAwLCAweDVDLCAweDAxLCAweDcwLCAweDI3LCAweEMyLAorMHgxNiwgMHgwMCwgMHg3RiwgMHgyMiwgMHg3QywgMHgwMSwgMHhGOCwgMHgyNywgMHhEMywgMHgxNiwgMHgyMCwgMHg2RiwgMHgyMCwKKzB4RjQsIDB4MEQsIDB4MzAsIDB4MTcsIDB4QzIsIDB4NUYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDAwLCAweDFGLCAweDAyLCAweDdDLCAweDA4LCAweEYwLCAweDIxLCAweEM0LAorMHg4NywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgyMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxNywgMHgwNCwKKzB4N0MsIDB4MDgsIDB4RjIsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUEsIDB4MDIsIDB4NzQsIDB4NjAsIDB4RjAsIDB4MDEsCisweEMwLCAweDRCLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLAorMHgyNywgMHgwMiwgMHg5RiwgMHgwOSwgMHg3QywgMHgwNiwgMHhGMCwgMHgxOSwgMHhDMCwgMHg2NywgMHg4MCwgMHg4MywgMHgwOCwKKzB4NUMsIDB4MDIsIDB4MzAsIDB4OTksIDB4QzMsIDB4MjMsIDB4MDAsIDB4OTIsIDB4MDAsIDB4MEMsIDB4ODYsIDB4NzAsIDB4MDksCisweEMwLCAweDIxLCAweDAxLCAweDkzLCAweDA0LCAweDVDLCAweDA2LCAweDMyLCAweDA4LCAweEMyLCAweDQwLCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHhFNiwgMHgwMCwgMHg5RCwgMHgwMywKKzB4NzQsIDB4MDIsIDB4RDAsIDB4QTksIDB4NDEsIDB4RTMsIDB4MDQsIDB4OUIsIDB4MDEsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweDgxLCAweDAwLCAweEM0LCAweDBBLCAweEIwLCAweDA5LCAweDQwLCAweEE0LCAweDAwLCAweDk1LAorMHgwMCwgMHgwNCwgMHgwRSwgMHgxMCwgMHgwOSwgMHg0MCwgMHgwNSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ODgsIDB4MjQsIDB4MDQsIDB4OUQsIDB4MTAsIDB4NzQsIDB4MjIsIDB4RDAsIDB4MDksCisweDQwLCAweDI3LCAweDAxLCAweDkxLCAweDAwLCAweDE0LCAweDAyLCAweDE0LCAweDBELCAweDQxLCAweDI3LCAweDQxLCAweDk1LAorMHgwMCwgMHg1NCwgMHgxMiwgMHg1MCwgMHgwOSwgMHg0MCwgMHhBNSwgMHgwMCwgMHg5MSwgMHgwMCwgMHg1NCwgMHgxMiwgMHgxNCwKKzB4ODksIDB4NDAsIDB4NjAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDIwLCAweDIwLCAweDA1LCAweDhELCAweDM0LCAweDM2LCAweDUyLCAweEQyLCAweDA4LCAweDQwLCAweDIzLCAweDQwLCAweDg5LAorMHhDMCwgMHgwNCwgMHgyMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHhBMywgMHgwMCwgMHg5NSwgMHgwMiwgMHgxNCwgMHgwMywgMHg5MCwKKzB4ODgsIDB4NDAsIDB4MjAsIDB4MDUsIDB4OTQsIDB4MDAsIDB4NDQsIDB4MDYsIDB4MTAsIDB4NDgsIDB4NDEsIDB4NDEsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAxLCAweDFGLAorMHgyNCwgMHg3QywgMHg5MSwgMHhGMCwgMHg0MSwgMHhDMSwgMHgwNywgMHgwNSwgMHgxMSwgMHg1NCwgMHg1QywgMHg1OCwgMHgzMCwKKzB4MDEsIDB4Q0EsIDB4MDcsIDB4MDUsIDB4MTcsIDB4MDAsIDB4NUQsIDB4MDQsIDB4NzAsIDB4MjEsIDB4QzAsIDB4MDUsIDB4MDEsCisweDUzLCAweDAwLCAweDVDLCAweDAwLCAweDMwLCAweDQ1LCAweEMwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHgyNywgMHgwMCwgMHg5RiwgMHg1NCwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4N0MsIDB4MTIsIDB4RjIsIDB4MEIsIDB4QzAsIDB4NjcsIDB4MDAsCisweEJCLCAweDAxLCAweEVDLCAweDBBLCAweDcwLCAweDRCLCAweEM4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEFFLCAweDUyLAorMHhGNCwgMHgwQiwgMHhDMCwgMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTksIDB4QTgsIDB4NkYsIDB4MDQsIDB4QkYsIDB4MzYsIDB4RkMsIDB4NDIsIDB4RjAsIDB4MEEsIDB4QzAsIDB4MkMsIDB4MDAsCisweEJGLCAweDkwLCAweDdGLCAweDMyLCAweEYwLCAweDBGLCAweEMwLCAweEFGLCAweDA0LCAweDlGLCAweDAyLCAweENELCAweDg2LAorMHgzNCwgMHg4OSwgMHhDMCwgMHgyRiwgMHgwMCwgMHhBRiwgMHgwMCwgMHhGQywgMHgwMiwgMHgzMCwgMHgwQiwgMHhDMCwgMHg2NCwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MTgsIDB4MDcsIDB4MDAsCisweDFELCAweDAyLCAweDc0LCAweDA4LCAweEQwLCAweEExLCAweDUyLCAweDg0LCAweDAyLCAweDFELCAweDAyLCAweDQ0LCAweDAwLAorMHg3MCwgMHgwNSwgMHg0MCwgMHhDNywgMHgwMCwgMHgxRCwgMHgwMSwgMHg0NCwgMHg4OCwgMHgxMCwgMHgwNSwgMHg0OCwgMHgwNCwKKzB4MDAsIDB4MUQsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4NzAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLCAweDAwLCAweDhELCAweDA0LCAweDM0LCAweDAyLAorMHhEMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgxNCwgMHgxQSwgMHhEMCwgMHgwOCwgMHg2MiwgMHgyMywKKzB4MDAsIDB4OEQsIDB4MDAsIDB4MDQsIDB4MEEsIDB4MTAsIDB4NDgsIDB4NDAsIDB4MjIsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NzQsCisweDAzLCAweDEwLCAweDA4LCAweDQwLCAweDQwLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBMCwgMHgyNSwgMHgwMCwgMHg5RCwgMHhBMCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNCwKKzB4MjAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDgsIDB4MjcsIDB4MDAsIDB4OEQsIDB4MDAsIDB4NDQsCisweDAyLCAweDExLCAweDg5LCAweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDEwLCAweDI5LCAweDQwLAorMHg2MCwgMHgyOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyNywKKzB4MTAsIDB4OUYsIDB4MDAsIDB4NzgsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDgsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDA5LCAweDQwLCAweDJGLCAweDAwLCAweEJFLCAweDA3LCAweDRDLCAweDAyLCAweDMxLCAweDM5LCAweEMyLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHgzQywgMHgxNiwgMHgyMCwgMHgwOSwgMHhEMCwgMHgxNCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MjQsIDB4MDAsIDB4OUYsIDB4ODAsIDB4N0MsCisweDQyLCAweEYwLCAweDA4LCAweEUwLCAweDI3LCAweDBDLCAweDhGLCAweDEwLCAweDdELCAweDAyLCAweEYwLCAweDM5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMiwgMHg3QywgMHg0QSwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgyMywKKzB4N0MsIDB4MTYsIDB4RjQsIDB4NTksIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAxLCAweDFGLCAweDAwLCAweDRDLCAweDIwLCAweDMwLCAweDQxLCAweEMwLAorMHgwNCwgMHgwMCwgMHgxMiwgMHgwMCwgMHg1QywgMHg4MCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxMywgMHgwMiwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MDcsIDB4MjQsIDB4MUYsIDB4MjIsIDB4NUMsIDB4MDAsIDB4MzAsIDB4NDEsCisweEMwLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLAorMHhEQywgMHgwNCwgMHg3RCwgMHgwMCwgMHhDNCwgMHgwOSwgMHhGMCwgMHgxNywgMHg0NCwgMHhERCwgMHg0QywgMHg3MSwgMHgwMywKKzB4NDQsIDB4MDEsIDB4MTAsIDB4NzcsIDB4QzAsIDB4NTUsIDB4MDAsIDB4NUIsIDB4MDAsIDB4QjQsIDB4MTEsIDB4RDAsIDB4MDUsCisweDQwLCAweDVGLCAweDAwLCAweDdELCAweDAzLCAweEM0LCAweDAxLCAweDUwLCAweDM2LCAweDQwLCAweDUwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHhFMiwgMHgwMCwgMHhDRCwgMHg0NSwKKzB4MTQsIDB4MEEsIDB4MTAsIDB4MjQsIDB4NDAsIDB4NzAsIDB4ODAsIDB4ODEsIDB4MDAsIDB4MTQsIDB4MDMsIDB4MTAsIDB4NDgsCisweDQwLCAweDMzLCAweDAwLCAweEM1LCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDBELCAweDQyLCAweEEzLCAweDAwLCAweDhELAorMHgxMiwgMHgxNCwgMHgwMywgMHgxMCwgMHg4QywgMHg0MCwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDMsIDB4OTQsIDB4MDUsIDB4NTEsIDB4MjIsCisweDQwLCAweDYxLCAweDAwLCAweDgxLCAweDEwLCAweDg0LCAweDE3LCAweDE0LCAweDBBLCAweDQwLCAweEZELCAweDAxLCAweEVELAorMHgwNCwgMHhCNCwgMHgwMiwgMHhEMCwgMHg0RSwgMHgwMCwgMHgyQiwgMHgwNCwgMHhCRCwgMHgxMSwgMHg4NCwgMHgwMywgMHg1MiwKKzB4MDAsIDB4NDAsIDB4MTAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweDEwLCAweDY4LCAweDAwLCAweENGLCAweDAxLCAweDE1LCAweDA0LCAweDEwLCAweDE2LCAweEUwLCAweDc4LCAweDg4LCAweEEzLAorMHgwMSwgMHhEQywgMHg0NywgMHgzMCwgMHgxRSwgMHhFOCwgMHg3RiwgMHgwMSwgMHhFNywgMHgwMywgMHhCQywgMHgwNiwgMHhGMCwKKzB4MUUsIDB4QzAsIDB4NkIsIDB4MDAsIDB4QUYsIDB4NDEsIDB4REMsIDB4MDcsIDB4MzIsIDB4MUUsIDB4QzAsIDB4NTAsIDB4NDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDAwLCAweDVGLAorMHgwMCwgMHg2QywgMHgwMSwgMHhGMCwgMHgwMSwgMHhDMiwgMHgyNywgMHgwMCwgMHg5RiwgMHgyMCwgMHg3RSwgMHgyMywgMHhGMCwKKzB4MDksIDB4QzAsIDB4MzcsIDB4MTIsIDB4REIsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4OEQsIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDBELCAweEQwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMCwgMHg2RiwgMHg0MCwgMHg3MywgMHg4MSwgMHhFNCwgMHgwNCwgMHhGMSwKKzB4MTcsIDB4QzAsIDB4NzgsIDB4MDAsIDB4RjMsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUIsIDB4QzAsIDB4NkYsIDB4ODAsCisweEU3LCAweDA5LCAweENDLCAweDA3LCAweEYwLCAweDFGLCAweEMyLCAweDdDLCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDA3LAorMHgzMCwgMHgxNywgMHhDMCwgMHgwOCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4ODgsIDB4MjksIDB4MDAsIDB4NjEsIDB4MDAsIDB4ODQsIDB4MTAsIDB4NzAsIDB4MDIsIDB4NDAsIDB4OTgsIDB4MDIsCisweEUxLCAweDgwLCAweEI0LCAweDAzLCAweEQwLCAweDBBLCAweDQwLCAweDJCLCAweDgxLCAweEUxLCAweDAwLCAweDg0LCAweDAyLAorMHhEMCwgMHg4RSwgMHhDMCwgMHgzQSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhGNCwgMHgyMywgMHgxOCwgMHgyNiwgMHg0MCwgMHg1NCwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsCisweEUxLCAweDAwLCAweDg0LCAweDAwLCAweEQxLCAweDA4LCAweDQwLCAweDM4LCAweDAwLCAweEUxLCAweDA4LCAweEI0LCAweDAzLAorMHhEMCwgMHgwRSwgMHg0MSwgMHgyQiwgMHgzMCwgMHhGNSwgMHgwMSwgMHg4NCwgMHgwMywgMHhEMCwgMHgwRiwgMHg0MCwgMHgyOCwKKzB4MDQsIDB4QUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4NTAsIDB4MjYsIDB4NDAsIDB4MjAsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDI4LCAweDEzLCAweDAwLCAweDExLCAweDQwLCAweDA0LCAweDAxLAorMHg1MCwgMHgwOCwgMHg0QywgMHgxMCwgMHgwMCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgwMywgMHhEMCwgMHgyNCwgMHg0MCwgMHgyMywKKzB4MDAsIDB4QzEsIDB4MDQsIDB4MDQsIDB4MDUsIDB4RDAsIDB4MkMsIDB4NDAsIDB4MjIsIDB4ODAsIDB4NEQsIDB4MDAsIDB4MzYsCisweDBDLCAweDUwLCAweDBDLCAweDUyLCAweDE4LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHhBOCwgMHgyNSwgMHgwMCwgMHg5MywgMHgwMCwgMHg0QywgMHgwMCwgMHhGMCwgMHgwNSwgMHhDNCwgMHgxNCwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RDAsIDB4MDksIDB4QzQsIDB4MzcsIDB4MDAsIDB4RDcsIDB4MDQsIDB4NEQsCisweDEyLCAweEYwLCAweDNGLCAweEMxLCAweDI0LCAweDAwLCAweDlGLCAweDBBLCAweDdDLCAweDBDLCAweDcwLCAweDI5LCAweEMwLAorMHg1NCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywKKzB4MTAsIDB4OUYsIDB4ODIsIDB4NUMsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MDMsIDB4MDAsIDB4OTcsIDB4ODAsIDB4N0UsCisweDAzLCAweEYwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEMxLAorMHhBNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHg2MCwgMHhCNCwgMHgyOSwgMHhDMCwgMHgyNywgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MEEsIDB4MkIsIDB4MjAsIDB4OTMsIDB4ODAsIDB4Q0MsCisweDAwLCAweDMwLCAweDA3LCAweEMwLCAweEFGLCAweDAwLCAweEEzLCAweDA5LCAweDhELCAweDAzLCAweDMyLCAweDBGLCAweEMxLAorMHg3NywgMHgwMCwgMHhGQiwgMHgwMCwgMHhDQywgMHgwMiwgMHgzNCwgMHgwRiwgMHgwMCwgMHgyRSwgMHgwMCwgMHhCRiwgMHgwMCwKKzB4RkMsIDB4MDAsIDB4MzAsIDB4MDksIDB4QzAsIDB4MDcsIDB4MkEsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDgxLCAweDIxLCAweDM2LCAweDAwLCAweDkxLCAweDExLCAweDE0LCAweDQxLCAweDUxLCAweDk1LCAweDQwLAorMHhBNywgMHgwMCwgMHg5MSwgMHgwMiwgMHg0NCwgMHgwMywgMHgxMCwgMHgwOSwgMHg0NCwgMHg2NywgMHgwMiwgMHhERCwgMHgwMCwKKzB4MDQsIDB4MDIsIDB4MzAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDQsIDB4OUQsIDB4MDAsIDB4MzQsIDB4MUMsIDB4MTAsIDB4QkQsCisweDQ0LCAweDg3LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLAorMHgyNCwgMHgxMCwgMHgxMSwgMHg4MSwgMHg2NCwgMHg4MCwgMHgxOCwgMHgwNSwgMHg0MCwgMHgxNywgMHgwMCwgMHg5MSwgMHgwMiwKKzB4NDQsIDB4MDMsIDB4MTQsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MEQsCisweDQwLCAweDM2LCAweDAyLCAweERELCAweDAwLCAweDc0LCAweDA0LCAweDEwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyOCwgMHgyMCwgMHgwMCwgMHgwMSwgMHgwMCwKKzB4MTYsIDB4ODAsIDB4NTAsIDB4MDQsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MDgsCisweDQ4LCAweEIzLCAweDIwLCAweENELCAweDAwLCAweDA1LCAweDAyLCAweDEwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweENELAorMHgwMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwQywgMHg0MCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QjAsIDB4MjYsIDB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDksCisweEMwLCAweDI3LCAweDAwLCAweEQxLCAweDAwLCAweENDLCAweDAzLCAweDMwLCAweDBELCAweEMwLCAweDI3LCAweDA4LCAweEZCLAorMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgxNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwKKzB4MDEsIDB4QzQsIDB4MDcsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweEE4LCAweDFGLCAweDAwLCAweEJGLCAweDAwLCAweEZDLCAweDAxLCAweEYwLCAweDBCLCAweEMwLCAweDBGLCAweDAwLCAweDdGLAorMHg0MCwgMHhGQywgMHgwMywgMHhGMSwgMHgwNywgMHhDMCwgMHgyRiwgMHgwMSwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMSwgMHg3MCwKKzB4MEUsIDB4QzAsIDB4MUYsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MTcsIDB4NjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDg4LCAweDdCLCAweDIyLCAweEZCLAorMHgyOSwgMHhFQywgMHgyNywgMHhGMCwgMHg5RiwgMHhDNCwgMHg3QywgMHgwMiwgMHhFRiwgMHgwOSwgMHhDQywgMHgwNywgMHgzMCwKKzB4OUYsIDB4QzAsIDB4N0MsIDB4MDAsIDB4RTMsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4RjAsIDB4OUYsIDB4QzAsIDB4N0MsIDB4MDAsCisweEVGLCAweDA5LCAweENDLCAweDA3LCAweEYwLCAweDFGLCAweEMwLCAweDBGLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgxOCwgMHgwNywgMHgwMCwgMHgxMSwgMHgwNCwgMHg0QywgMHgwMCwgMHhEMSwKKzB4MDEsIDB4MDAsIDB4MDQsIDB4MzEsIDB4MUQsIDB4MDQsIDB4NDQsIDB4MDQsIDB4NTAsIDB4NDEsIDB4MDAsIDB4MDUsIDB4MDUsCisweDExLCAweDAwLCAweDVDLCAweDEwLCAweEQwLCAweDQxLCAweDQwLCAweDAwLCAweDI1LCAweDFELCAweDA0LCAweDQ0LCAweDAwLAorMHhEMCwgMHgwMSwgMHg0MCwgMHgwRiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTMsIDB4QTAsIDB4MzUsIDB4MDAsIDB4RDksIDB4MDAsIDB4MjQsIDB4MTMsIDB4NTIsIDB4NEMsIDB4NDIsIDB4MzEsIDB4MDEsCisweENELCAweDA0LCAweDQ0LCAweDgzLCAweDUwLCAweDBELCAweDBBLCAweDMwLCAweDAwLCAweEQ1LCAweDAwLCAweDA0LCAweDQzLAorMHhEMCwgMHg0QywgMHg2MCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNSwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHg0RCwKKzB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4MDcsIDB4MDAsCisweDExLCAweDAwLCAweDQwLCAweDgwLCAweEQwLCAweDAxLCAweDQwLCAweDA1LCAweDAwLCAweDFELCAweDAwLCAweDQ3LCAweDAwLAorMHg1MCwgMHgwMSwgMHg0OCwgMHgwMSwgMHg0MCwgMHgxNSwgMHgyMCwgMHg3NCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0OCwgMHgwNSwKKzB4MDAsIDB4MEQsIDB4MDAsIDB4NTQsIDB4MDAsIDB4QzAsIDB4MDEsIDB4NDAsIDB4MEYsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM2LCAweDAwLCAweERCLCAweDAwLCAweDZDLCAweDAzLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwgMHhERiwgMHg0MCwgMHgwQywgMHgwMywgMHg3MCwgMHgwRCwgMHg0MCwgMHgzNCwKKzB4MDAsIDB4RDcsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzQsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEMsCisweDAzLCAweEUwLCAweDBELCAweEMwLCAweDAzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNywgMHg4MCwgMHgwRCwgMHgwMCwgMHgzRiwgMHgwMCwgMHhEQywgMHg0MCwgMHhGMywgMHgwMywgMHhENCwgMHgwRSwKKzB4MTAsIDB4M0YsIDB4MDAsIDB4RjgsIDB4NDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MjAsIDB4M0IsIDB4MDAsIDB4REMsCisweDAwLCAweEYxLCAweDAzLCAweEMwLCAweDBFLCAweDAwLCAweDNGLCAweDAwLCAweEVDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLAorMHgxRiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwKKzB4MDAsIDB4RDcsIDB4MDQsIDB4N0MsIDB4MDMsIDB4RjAsIDB4NEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDcsIDB4NjAsIDB4NUMsCisweDA3LCAweEIwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweEQ3LCAweDAwLCAweDRDLCAweDEzLCAweEYwLCAweDBELCAweEMwLAorMHgzNCwgMHg0MCwgMHhEMywgMHgwNCwgMHg0QywgMHg0MywgMHhGMCwgMHgwRCwgMHhDMCwgMHhBQiwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUIsIDB4QTAsIDB4MDAsIDB4MDYsIDB4MDEsIDB4MTIsIDB4NzQsCisweDE0LCAweEQwLCAweDcxLCAweDYwLCAweDA3LCAweDAwLCAweDExLCAweDAwLCAweDZDLCAweDAwLCAweDEwLCAweDAwLCAweDQwLAorMHhDNywgMHgwMiwgMHgwRCwgMHgxMSwgMHg2QywgMHgxOCwgMHhEMiwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgxMiwKKzB4NkMsIDB4MDAsIDB4RDAsIDB4QjEsIDB4NDAsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweDIwLCAweEYwLCAweDEwLCAweEM1LCAweDgwLCAweDM0LCAweDAzLCAweEQxLCAweDBELCAweDQyLAorMHgzMywgMHgwMCwgMHhERCwgMHgwMCwgMHgyNCwgMHgwQiwgMHg5MCwgMHgwQywgMHg0MCwgMHhCMywgMHgwMCwgMHhDNSwgMHgwMSwKKzB4MDQsIDB4MEYsIDB4RDgsIDB4MEMsIDB4NDAsIDB4MzIsIDB4MDAsIDB4QzEsIDB4MDEsIDB4MDQsIDB4MEIsIDB4RDIsIDB4MUMsCisweDQwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFGLCAweDAyLAorMHg0QywgMHgwMCwgMHgyMSwgMHgwMSwgMHhCNCwgMHgwNCwgMHhEOSwgMHgxMiwgMHg0MCwgMHg0RiwgMHgwMiwgMHgzOSwgMHgwMSwKKzB4QTQsIDB4MDQsIDB4MTAsIDB4MTIsIDB4NDAsIDB4NEIsIDB4MDQsIDB4M0QsIDB4MDEsIDB4QTYsIDB4MjQsIDB4RDAsIDB4MTIsCisweDY4LCAweDRBLCAweDAwLCAweDMxLCAweDAxLCAweEE0LCAweDA0LCAweEQwLCAweDEyLCAweDUzLCAweDNDLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHhDNywgMHgwMCwKKzB4M0MsIDB4MDMsIDB4RjAsIDB4MEMsIDB4NDgsIDB4MzMsIDB4MTAsIDB4Q0YsIDB4MDAsIDB4M0MsIDB4MDMsIDB4QjAsIDB4MEMsCisweDQwLCAweDMzLCAweDAwLCAweEM3LCAweDAwLCAweDBDLCAweEEzLCAweEYxLCAweDBELCAweENDLCAweDMyLCAweDgwLCAweEMzLAorMHgwMCwgMHgwQywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg0OSwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsIDB4MEQsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjgsIDB4MDMsCisweDgwLCAweDBCLCAweDA4LCAweDM2LCAweDAwLCAweEJDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLAorMHgwMCwgMHhGQywgMHgyMCwgMHhEMiwgMHgwMywgMHhDMCwgMHgwRCwgMHgxMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGQSwKKzB4MTEsIDB4QzAsIDB4MDksIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweEE4LCAweDc3LCAweDIwLCAweEQ3LCAweDQxLCAweDZDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDc0LCAweDAwLCAweEMzLAorMHgwMSwgMHg0QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzMywgMHgwMCwgMHhEMywgMHgwMSwgMHg0RCwgMHgwMywgMHg3MCwKKzB4MUQsIDB4QzAsIDB4MzAsIDB4MDAsIDB4RDMsIDB4MDEsIDB4NEMsIDB4MDcsIDB4MzAsIDB4MUQsIDB4RDAsIDB4NDAsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDgwLCAweDBELCAweDQ4LCAweDIxLAorMHg0MCwgMHg4NCwgMHgwMCwgMHhEMCwgMHgwMiwgMHg0MCwgMHgwOSwgMHgwMCwgMHgyNSwgMHgwMCwgMHg5MCwgMHgwMCwgMHhEMCwKKzB4MDIsIDB4NDAsIDB4MEIsIDB4MDAsIDB4MzUsIDB4MDAsIDB4QzQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDksIDB4MDAsCisweDJCLCAweDQwLCAweDg0LCAweDAwLCAweEIwLCAweDAzLCAweEMwLCAweDRFLCAweDA4LCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMCwgMHhGOSwgMHgwMSwgMHhBNCwgMHgwNywgMHhDMiwKKzB4MUYsIDB4NDAsIDB4N0MsIDB4MDAsIDB4RjUsIDB4MDEsIDB4ODQsIDB4MDcsIDB4RDAsIDB4MUUsIDB4NDAsIDB4N0YsIDB4MDAsCisweEUxLCAweDAxLCAweDk0LCAweDA3LCAweDUwLCAweDFGLCAweDQ4LCAweDdDLCAweDgwLCAweEUxLCAweDAxLCAweEM0LCAweDA3LAorMHgxOCwgMHgxRSwgMHg0OCwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTYsIDB4MjgsIDB4MDMsIDB4MDAsIDB4MDksIDB4MDAsIDB4NDAsIDB4MDAsIDB4RDgsIDB4MDAsIDB4NDIsIDB4MDEsIDB4MDAsCisweDA1LCAweDIwLCAweDE0LCAweDAwLCAweEQwLCAweDAwLCAweDQwLCAweDA3LCAweDAwLCAweDA1LCAweDAwLCAweDE0LCAweDAwLAorMHg1MCwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwOCwgMHgwOSwgMHgwMCwgMHgwNCwgMHgwMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg1QSwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MjgsIDB4MTUsIDB4MDAsCisweDVCLCAweDAwLCAweDZDLCAweDAxLCAweEQwLCAweDA0LCAweEMwLCAweDE0LCAweDAwLCAweDU3LCAweDAwLCAweDRDLCAweDAxLAorMHhGMCwgMHgwNSwgMHhDNCwgMHgxNywgMHgwMCwgMHg1MywgMHgwMCwgMHgxQywgMHgwMSwgMHg3MCwgMHgwNSwgMHhDMCwgMHgxNCwKKzB4MDgsIDB4NTMsIDB4NjAsIDB4NEMsIDB4MDEsIDB4MzAsIDB4MDUsIDB4NDAsIDB4NUMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDhELCAweDAwLCAweDM3LCAweDAyLCAweEZDLCAweDAwLAorMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwOCwgMHhGMCwgMHgwMywgMHhDOCwgMHgwRiwKKzB4MDAsIDB4M0YsIDB4MDIsIDB4RTQsIDB4MDgsIDB4QjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4ODAsIDB4RkQsCisweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDRCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzMCwgMHgxOSwgMHg0MCwgMHgyNCwKKzB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsCisweDE2LCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDQwLCAweDkzLCAweDA0LCAweDc4LCAweDE2LCAweEYwLCAweDA5LCAweEMwLAorMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNCwKKzB4MDEsIDB4OUQsIDB4MDAsIDB4NzQsIDB4NDIsIDB4MTQsIDB4NTksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsCisweDBBLCAweEQwLCAweDA5LCAweDQwLCAweEE0LCAweDAwLCAweDkxLCAweDlBLCAweDc0LCAweDhFLCAweEIyLCAweDA5LCAweDQwLAorMHgyNywgMHgxMCwgMHg5MSwgMHgwMiwgMHg2NCwgMHgxNiwgMHhEMSwgMHgwOSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4NkMsIDB4ODAsIDB4QkQsIDB4MDEsIDB4RTQsCisweDA2LCAweDEwLCAweDRCLCAweDQwLCAweDJELCAweDAwLCAweEJELCAweDAwLCAweEY0LCAweDBFLCAweEQwLCAweDBBLCAweDQwLAorMHgyQywgMHgwNCwgMHhCMSwgMHgwMCwgMHhGNCwgMHgwMiwgMHgxMCwgMHgwQiwgMHgwMCwgMHgyRiwgMHgwMCwgMHhCMSwgMHgxMCwKKzB4RjQsIDB4MDIsIDB4RDAsIDB4MEIsIDB4NDEsIDB4NjMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDI4LCAweDAwLCAweEVDLCAweDAwLCAweEI0LCAweDAyLCAweDEwLCAweDBCLCAweDQwLAorMHgyQiwgMHgyMiwgMHhBRCwgMHgwOCwgMHhCNCwgMHg4MiwgMHhEMCwgMHg4QSwgMHg2MCwgMHgyOCwgMHg0MiwgMHhBMSwgMHg0MCwKKzB4RjQsIDB4MDIsIDB4OTAsIDB4OEEsIDB4NDAsIDB4MkIsIDB4MEEsIDB4QTEsIDB4MDgsIDB4QTQsIDB4MDIsIDB4RDAsIDB4MEEsCisweDQwLCAweDQzLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEI4LAorMHgwNiwgMHgwMCwgMHgxRiwgMHg0MCwgMHg2QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg4NSwgMHgwMCwgMHgxRCwgMHgwMiwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MjEsIDB4RDAsIDB4ODQsIDB4MDAsIDB4MTMsIDB4MEEsIDB4N0MsIDB4MDEsIDB4MzAsIDB4MjEsCisweEMwLCAweDg3LCAweDA4LCAweDAzLCAweDIyLCAweDdDLCAweDAwLCAweEYwLCAweDAzLCAweEUwLCAweDc3LCAweEUwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHgyNywgMHgwNSwgMHg4RCwgMHgxNCwKKzB4N0MsIDB4NTIsIDB4RjAsIDB4NDgsIDB4QzEsIDB4MjIsIDB4MDEsIDB4OUYsIDB4MDQsIDB4N0MsIDB4MDIsIDB4RjAsIDB4NDksCisweEMwLCAweDI3LCAweDAxLCAweDlGLCAweDgxLCAweDdDLCAweDUyLCAweEYwLCAweDQ4LCAweEMwLCAweDI3LCAweDAxLCAweDlGLAorMHgyNCwgMHgzQywgMHg1MiwgMHhGMCwgMHg0OSwgMHhDMSwgMHg3NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTAsIDB4QUYsIDB4MDAsIDB4QjcsIDB4MDIsIDB4REMsIDB4MEEsIDB4QjAsIDB4MkIsCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAyLCAweERDLCAweDAyLCAweDMwLCAweDg5LCAweEMwLCAweDJGLCAweDEwLCAweEIzLAorMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHhBNywgMHgxMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMiwgMHhCMCwKKzB4MEIsIDB4QzAsIDB4NzcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweDAwLCAweDA1LCAweDAxLCAweDExLCAweDgxLCAweDQ0LCAweDAwLCAweDEwLCAweDQxLCAweDQwLCAweDA3LCAweDA1LCAweDFELAorMHgwMCwgMHg0NCwgMHgwMCwgMHg1MCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMSwgMHgxMSwgMHgwMCwgMHg3NCwgMHg1MCwgMHhEMCwKKzB4MDEsIDB4NDAsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4NTAsIDB4MDEsIDB4NDAsIDB4NjMsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDIwLCAweDIxLCAweDAxLCAweDg1LAorMHgwMCwgMHg1NCwgMHgxMiwgMHg5MCwgMHg0OCwgMHg0MCwgMHgyMywgMHg4MCwgMHg4RCwgMHgwNCwgMHg0NCwgMHgwMiwgMHgxMCwKKzB4NDgsIDB4NDAsIDB4MjMsIDB4NDQsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4ODAsCisweDhELCAweDAwLCAweDA2LCAweDAyLCAweDkwLCAweDA4LCAweDQwLCAweDRCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyOCwgMHgyNSwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwMywgMHgwOCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OEMsIDB4MDAsIDB4NDUsIDB4ODIsIDB4NTAsIDB4MDksIDB4NDIsIDB4MjMsIDB4MDgsCisweDkxLCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLAorMHhEOCwgMHgwOSwgMHg0MCwgMHg2MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4MjAsIDB4MjUsIDB4MDAsIDB4OTcsIDB4MDAsIDB4MUMsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzQsIDB4MjcsIDB4MDAsCisweDlGLCAweDAwLCAweDVDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDkyLCAweDAwLCAweDdDLCAweDAyLAorMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg0QywgMHgwMiwgMHhCMCwgMHgwOSwgMHhDOCwgMHgxNywKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODgsIDB4MjUsIDB4MDAsCisweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEY4LCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDgwLCAweDdDLCAweDAyLAorMHhGMCwgMHgwOSwgMHhDMiwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4ODAsIDB4N0QsIDB4NDIsIDB4NzAsIDB4MDksIDB4QzAsIDB4NUIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDFELCAweDEwLCAweDdDLCAweDEwLAorMHhEMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxQiwgMHgwMCwgMHg1QywgMHgwMCwgMHg3MCwgMHgwMSwgMHhDMCwgMHgwNCwKKzB4MDAsIDB4MUIsIDB4NDksIDB4N0MsIDB4NDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDAwLCAweEI0LCAweDQxLCAweEMwLCAweDUzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHhBMCwgMHhEQywgMHgwMCwgMHg3RCwgMHgyMywgMHhGNCwgMHg5RCwgMHgxMCwgMHg5NywgMHg0MCwgMHgxNywKKzB4MDAsIDB4NUQsIDB4MDAsIDB4QjQsIDB4MjEsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MUMsIDB4MDAsIDB4N0QsIDB4MDEsIDB4RjQsCisweDAxLCAweEQwLCAweDA1LCAweDQwLCAweDE1LCAweDIwLCAweDdELCAweDAyLCAweEY0LCAweDA5LCAweDEwLCAweDA3LCAweDQwLAorMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHhCNiwKKzB4MDYsIDB4REQsIDB4MEIsIDB4MzQsIDB4MDMsIDB4NTAsIDB4QUMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4ODAsIDB4MTQsCisweDhGLCAweEQwLCAweDBDLCAweDUwLCAweDcwLCAweDgwLCAweEM5LCAweDIxLCAweDMyLCAweDI3LCAweEQwLCAweDBDLCAweDQwLAorMHgzMiwgMHgwMCwgMHhERCwgMHgxMiwgMHg3NCwgMHgyMywgMHgxMCwgMHgxQywgMHg0MCwgMHg0MywgMHgwMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4RjQsCisweDAzLCAweDEwLCAweDBFLCAweDQwLCAweDNCLCAweDAzLCAweEVDLCAweDA0LCAweEI0LCAweDBBLCAweEMwLCAweDVFLCAweDQwLAorMHgzOCwgMHgwNCwgMHhFOSwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHg1RiwgMHg0MCwgMHgzQiwgMHgwMCwgMHgyRCwgMHgxMCwKKzB4QjQsIDB4MDMsIDB4MTAsIDB4MkUsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDc5LCAweDAwLCAweEVGLCAweDAxLCAweEJDLCAweDA3LCAweDcwLCAweDFFLCAweEMwLAorMHg3QiwgMHgwNSwgMHhFQiwgMHg4OSwgMHg5QywgMHgwNywgMHg3MCwgMHhCRiwgMHhDMCwgMHg3OCwgMHgyMCwgMHgyQiwgMHgyMSwKKzB4QkMsIDB4MDcsIDB4RjAsIDB4M0UsIDB4QzAsIDB4N0EsIDB4MDUsIDB4RUYsIDB4MDEsIDB4RkMsIDB4MDcsIDB4MzEsIDB4MUUsCisweEMwLCAweDUzLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LAorMHgxNSwgMHgxMCwgMHg1RiwgMHgwMCwgMHgzQywgMHgwMywgMHg3MCwgMHgwRCwgMHg4MCwgMHhCNywgMHgwMSwgMHhERiwgMHgwQywKKzB4N0MsIDB4MDAsIDB4RjAsIDB4NEQsIDB4QzAsIDB4MTcsIDB4MDAsIDB4MUYsIDB4MjAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEMsCisweDQxLCAweDM1LCAweDA4LCAweDFGLCAweDAwLCAweDdDLCAweDAxLCAweDcwLCAweDBELCAweEMwLCAweDQzLCAweDYwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHg3RCwgMHgwMCwgMHhGRiwgMHg4OSwKKzB4RjgsIDB4MDUsIDB4NzAsIDB4MUYsIDB4QzIsIDB4N0QsIDB4MDAsIDB4RkIsIDB4MDEsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MUYsCisweEMwLCAweDZGLCAweDAwLCAweEY3LCAweDAxLCAweENFLCAweDI1LCAweDMwLCAweDFGLCAweEMwLCAweDdGLCAweDA0LCAweEYzLAorMHgwMSwgMHg4QywgMHgyNSwgMHgzMCwgMHgxRSwgMHhDMCwgMHgxOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDgsIDB4MzksIDB4MDQsIDB4RUQsIDB4MDgsIDB4RjQsIDB4MTEsIDB4MDAsIDB4MEUsCisweDQwLCAweDNGLCAweDAwLCAweEUwLCAweDEwLCAweEI0LCAweDQyLCAweEQwLCAweDhFLCAweDQxLCAweDNCLCAweDAwLCAweEY1LAorMHgwMiwgMHg5NCwgMHgwQiwgMHg1MCwgMHgwRSwgMHhDMCwgMHgzQiwgMHgwMCwgMHgzQiwgMHgwOCwgMHg4NSwgMHgzOSwgMHhCMCwKKzB4MEEsIDB4NDAsIDB4NTUsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsCisweDAwLCAweDM5LCAweDAyLCAweEVELCAweDA4LCAweEIwLCAweDAxLCAweEQxLCAweDA2LCAweDQwLCAweDM5LCAweDA0LCAweEU5LAorMHgwOCwgMHhCNCwgMHgwMiwgMHhEMCwgMHgwRSwgMHg0MCwgMHgyRiwgMHgwMCwgMHg3MSwgMHgwOCwgMHhDNCwgMHgwMSwgMHg5MCwKKzB4MEUsIDB4NDAsIDB4M0YsIDB4MDAsIDB4RTksIDB4MDAsIDB4QzQsIDB4MDAsIDB4MTgsIDB4MDcsIDB4NDAsIDB4MjAsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDIxLCAweDEwLCAweDlELAorMHgwMywgMHgzNCwgMHgwMCwgMHg5MCwgMHg4OSwgMHg0MCwgMHhGMiwgMHg4MCwgMHhDMSwgMHgwMiwgMHgzNCwgMHgwQywgMHhEMCwKKzB4MUMsIDB4NjAsIDB4NTcsIDB4MDAsIDB4MDUsIDB4MDYsIDB4MTQsIDB4MEUsIDB4RDgsIDB4MkMsIDB4NDAsIDB4QjEsIDB4MDAsCisweENELCAweDBBLCAweDAwLCAweEFDLCAweDk4LCAweDAwLCAweDQyLCAweDA5LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhBMCwgMHhDNCwgMHgyMCwgMHgxRiwgMHg1MiwgMHg3QywgMHgwQSwgMHhEMCwKKzB4QTEsIDB4QzAsIDB4RkQsIDB4ODAsIDB4RkIsIDB4MDEsIDB4N0MsIDB4MkMsIDB4RjAsIDB4MEYsIDB4QzgsIDB4RDcsIDB4MDEsCisweDkzLCAweDExLCAweDRDLCAweDEyLCAweEIwLCAweDNGLCAweDQxLCAweEJGLCAweDAwLCAweEM5LCAweDA4LCAweDQ4LCAweDBFLAorMHgxMCwgMHg5MSwgMHhDMCwgMHg3NCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MEQsIDB4MDgsIDB4MjcsIDB4MjAsIDB4OUYsIDB4ODQsIDB4N0UsIDB4NjAsIDB4NzAsIDB4MjEsIDB4QzgsIDB4MzcsIDB4MDksCisweERGLCAweDAwLCAweDdDLCAweDA4LCAweEYwLCAweDBELCAweEMxLCAweEE2LCAweDAwLCAweDlFLCAweDQwLCAweDdFLCAweDQwLAorMHg3MCwgMHgwRCwgMHhDMSwgMHgzNywgMHgyMiwgMHgxQiwgMHgwMCwgMHg3QywgMHgxQSwgMHhGMCwgMHg4OSwgMHhDNCwgMHg5NywKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MDgsIDB4MEIsIDB4ODQsCisweDMzLCAweDgwLCAweENDLCAweDAyLCAweEYwLCAweDAzLCAweEMwLCAweDNFLCAweDAwLCAweEY3LCAweDEwLCAweEY4LCAweDAwLAorMHhGMiwgMHgwRiwgMHhDMCwgMHgxQywgMHgwNCwgMHgzMywgMHg4MCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwKKzB4MDQsIDB4RkYsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MDQsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDQ2LCAweDA4LCAweDE3LCAweDExLCAweDRDLCAweDA2LAorMHhEMCwgMHgxMSwgMHg0MCwgMHgzNCwgMHgwMCwgMHhEMSwgMHg4MCwgMHg3NCwgMHgwNCwgMHhGMCwgMHgwQywgMHg0MCwgMHg4NSwKKzB4MDIsIDB4MTEsIDB4MDMsIDB4NjQsIDB4MDYsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDgsIDB4MUQsIDB4MTEsIDB4NkMsCisweDA0LCAweEQwLCAweDM4LCAweEM4LCAweDA2LCAweDA0LCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHhBMCwgMHg0NCwgMHgwNCwgMHgxMSwgMHgyMSwgMHg1NCwgMHgwNiwgMHhEOCwgMHgzOSwgMHg2NiwgMHgzMiwKKzB4MDAsIDB4RDUsIDB4MDAsIDB4NzQsIDB4MEUsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MDQsIDB4MDQsIDB4MzEsIDB4MjEsIDB4NzQsCisweDA0LCAweEQ4LCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweERELCAweDA4LCAweDQ0LCAweDA2LCAweEQwLCAweDMxLCAweDQwLAorMHgwNCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwQSwgMHgyNCwKKzB4MDAsIDB4ODUsIDB4MDAsIDB4MDUsIDB4MDAsIDB4RDIsIDB4MDgsIDB4NjAsIDB4MzAsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MzQsCisweDAyLCAweEQwLCAweDBELCAweDQwLCAweDIxLCAweDIwLCAweDAxLCAweDAwLCAweDM0LCAweDAwLCAweEQyLCAweDBDLCAweDQwLAorMHgzMywgMHgwMCwgMHgxRCwgMHgwMCwgMHgyNCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzAsIDB4MDYsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NUMsCisweDgyLCAweEY4LCAweDAxLCAweEMwLCAweDNFLCAweDAwLCAweEY2LCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBGLCAweDQwLAorMHgwNCwgMHgwMCwgMHgxMywgMHgwMCwgMHg3NCwgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHg5MCwgMHgxRiwgMHgwMCwKKzB4NEMsIDB4MDIsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4NjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDg1LCAweEE4LCAweDJGLCAweDAwLCAweEI2LCAweDAwLCAweENDLCAweDAyLCAweEY4LCAweDBCLCAweEMwLAorMHgzRiwgMHgwMCwgMHhGRSwgMHg4MCwgMHhGQywgMHgwMCwgMHg3MCwgMHgwRiwgMHhDMCwgMHgwQiwgMHg0MCwgMHgzRiwgMHgwMCwKKzB4QTQsIDB4MDIsIDB4RjIsIDB4MEYsIDB4QzAsIDB4M0IsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsCisweEMwLCAweDE3LCAweDYxLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEE4LAorMHg3RiwgMHg0MCwgMHhGMywgMHg0NiwgMHhGQywgMHgwMywgMHgzMCwgMHg0RiwgMHhDMCwgMHg0RiwgMHgxMiwgMHgzQiwgMHg0QywKKzB4Q0MsIDB4MjMsIDB4MzAsIDB4NEYsIDB4QzIsIDB4MEMsIDB4ODAsIDB4M0YsIDB4MDEsIDB4RkMsIDB4MDcsIDB4NzEsIDB4OEYsCisweEMwLCAweDBGLCAweDA4LCAweDczLCAweDAxLCAweEZDLCAweDAwLCAweDMwLCAweDAzLCAweEMwLCAweDBDLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgxMCwgMHg3RCwgMHgwMCwgMHhFMSwgMHgwOCwKKzB4RjQsIDB4QUYsIDB4MTAsIDB4QkYsIDB4NDAsIDB4MjcsIDB4MDEsIDB4NUQsIDB4MDgsIDB4QzQsIDB4M0IsIDB4NTAsIDB4OUYsCisweDQwLCAweDQ0LCAweDAwLCAweDVELCAweDAwLCAweEY0LCAweDA3LCAweDEwLCAweDBGLCAweDQwLCAweDA3LCAweDAwLCAweEQ1LAorMHg4MSwgMHg3NCwgMHgwMCwgMHhCMSwgMHgwMSwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4MjAsIDB4MzMsIDB4MDAsIDB4QzQsIDB4MDQsIDB4MzQsIDB4MDMsIDB4NTUsIDB4MEMsCisweDQwLCAweDQzLCAweDAxLCAweDhELCAweDQ0LCAweDE0LCAweDAzLCAweDUwLCAweDBDLCAweDUwLCAweDAwLCAweDAwLCAweDBELAorMHg4MCwgMHgzNCwgMHgwMywgMHgxMCwgMHg0QywgMHg0MCwgMHgwNywgMHgwMCwgMHg0MSwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEMCwKKzB4MDAsIDB4NDAsIDB4NEQsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEEwLCAweDM1LCAweDAwLCAweEQ1LCAweDAwLCAweDcwLCAweDAzLCAweDUwLCAweDBELCAweDQwLCAweDY3LCAweDAwLCAweDVELAorMHgxNCwgMHg1NCwgMHgwMywgMHgxMCwgMHgwRCwgMHgwMCwgMHg2QywgMHgwMCwgMHg1RCwgMHgxMCwgMHg3NCwgMHgwMywgMHgxMCwKKzB4MEYsIDB4NDAsIDB4NkYsIDB4MDAsIDB4RDUsIDB4MDQsIDB4NzAsIDB4MDYsIDB4RDAsIDB4MTEsIDB4NDAsIDB4MEYsIDB4MjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweDM2LCAweDAwLCAweEQ3LAorMHgwMCwgMHg3RSwgMHgwMywgMHg3MCwgMHgwRCwgMHhDNCwgMHg0NywgMHgwMCwgMHgxQiwgMHgwMywgMHg1RCwgMHgwMywgMHg3MCwKKzB4MEQsIDB4ODAsIDB4NDQsIDB4MjAsIDB4REQsIDB4MDAsIDB4M0MsIDB4MDMsIDB4NzQsIDB4MEQsIDB4QzQsIDB4NDcsIDB4MDAsCisweDkzLCAweDA2LCAweDc4LCAweDA0LCAweDcwLCAweDUxLCAweEMwLCAweDAxLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgzRCwgMHgwMCwgMHhGQiwgMHgwMCwgMHhCQywgMHgwMywgMHhCMCwKKzB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsIDB4NkEsIDB4MjAsIDB4RUMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4ODQsIDB4MEYsIDB4MDgsCisweEZDLCAweDAwLCAweEZFLCAweDAzLCAweEUwLCAweDBGLCAweDgwLCAweDBGLCAweDAwLCAweEJGLCAweDAxLCAweEI4LCAweDAyLAorMHhCMCwgMHgwOSwgMHhDMiwgMHgzRSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDgsIDB4MzEsIDB4MTAsIDB4RDMsIDB4NDAsIDB4NUMsIDB4MDMsIDB4RjMsIDB4MEQsIDB4QzAsIDB4MDYsIDB4MDAsCisweDlGLCAweDAyLCAweDJDLCAweDAzLCAweDcwLCAweDRDLCAweEMwLCAweDI2LCAweDA0LCAweEQ3LCAweDIyLCAweDdDLCAweDEzLAorMHgzMCwgMHgwRCwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgwMiwgMHg0QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgyOCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUIsIDB4QTAsIDB4MzQsIDB4MDAsCisweEYxLCAweDIwLCAweEM0LCAweDE3LCAweEQwLCAweDRGLCAweDQwLCAweDI0LCAweDAwLCAweDVELCAweDQwLCAweEMwLCAweDE3LAorMHgxMCwgMHg3RiwgMHg0MCwgMHhFNywgMHgwMCwgMHhERCwgMHgwNiwgMHg3MCwgMHgwMywgMHgxMSwgMHhBRiwgMHgxMCwgMHgyNCwKKzB4MDAsIDB4OUQsIDB4NDUsIDB4NDQsIDB4NDYsIDB4MTEsIDB4MTksIDB4MTEsIDB4NEMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLCAweDcyLCAweDQwLCAweEM5LCAweDIwLCAweDI0LCAweDAzLAorMHhEMCwgMHg2QywgMHg0MCwgMHgyMiwgMHgwMCwgMHgwOCwgMHgyMCwgMHgyMCwgMHgwMywgMHhEMCwgMHgxQywgMHg0MCwgMHhDMiwKKzB4ODgsIDB4ODQsIDB4MjAsIDB4MzAsIDB4MEIsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MDQsIDB4MDAsIDB4OEQsIDB4MjEsIDB4MjUsCisweDA0LCAweDE0LCAweDExLCAweDAyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwRiwgMHgwMCwgMHg3MCwgMHgwNCwgMHhFOSwgMHgwMSwgMHhCNCwgMHgxNywgMHhEOCwgMHgxRSwgMHg0MCwgMHg2QSwKKzB4MDgsIDB4QUQsIDB4MDUsIDB4QTQsIDB4MDcsIDB4OTAsIDB4MUUsIDB4NEEsIDB4NUIsIDB4MEEsIDB4RUQsIDB4NkIsIDB4MzQsCisweDA3LCAweDgxLCAweDlFLCAweDQyLCAweDU4LCAweDAwLCAweEFELCAweDAxLCAweEI2LCAweDA1LCAweDEwLCAweEI2LCAweDQwLAorMHgzQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxOCwgMHgzMCwKKzB4MDAsIDB4Q0IsIDB4MDAsIDB4MkMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MjIsIDB4MDEsIDB4OUYsIDB4MDAsIDB4NkMsCisweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDAyLCAweDA0LCAweDg3LCAweDA1LCAweDNDLCAweDQzLCAweDIwLCAweDBELCAweEMwLAorMHgxMCwgMHgwMCwgMHhDRiwgMHgwMCwgMHg2QywgMHgwMSwgMHgzMCwgMHgwMCwgMHhDMCwgMHg0OCwgMHg2OCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MzgsIDB4N0QsIDB4MDAsIDB4RjcsIDB4MTAsIDB4QzEsCisweDUzLCAweEYwLCAweDBFLCAweEMwLCAweDNELCAweDAwLCAweEJCLCAweDA0LCAweERDLCAweDBCLCAweDdBLCAweDhGLCAweEMxLAorMHgzRiwgMHgwOCwgMHhGRiwgMHgyOCwgMHhGQywgMHgwNywgMHg3MiwgMHgyRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhFRiwgMHgwMCwKKzB4NEMsIDB4MDMsIDB4RjAsIDB4MDcsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDAwLCAweERGLCAweDAzLCAweDVDLCAweDRGLCAweDMwLCAweDNELCAweEM5LAorMHgwNCwgMHgxMCwgMHg1RiwgMHg0MCwgMHg0QywgMHgzNywgMHgzMCwgMHgyRCwgMHhDMCwgMHg1NiwgMHg0MCwgMHhEQiwgMHgwMSwKKzB4NEMsIDB4MDMsIDB4QjMsIDB4MkQsIDB4QzIsIDB4MTQsIDB4MDAsIDB4OEYsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MEQsCisweEMwLCAweDQwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDgwLAorMHgzOSwgMHgwMSwgMHhDRCwgMHgxNCwgMHgwMiwgMHgxMywgMHhCMCwgMHg0QywgMHg0QSwgMHgwOCwgMHgwMCwgMHhDQywgMHgwMCwKKzB4ODQsIDB4MTMsIDB4QjAsIDB4NEUsIDB4NDEsIDB4MUIsIDB4MDAsIDB4RTEsIDB4MDAsIDB4ODQsIDB4MEIsIDB4RDAsIDB4MEYsCisweDQwLCAweDE4LCAweDAwLCAweEFELCAweDAwLCAweDg0LCAweDAzLCAweEQwLCAweDBFLCAweEMwLCAweDRFLCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3OSwgMHgwMiwgMHhFRCwgMHgwMSwKKzB4OTQsIDB4MTcsIDB4MTAsIDB4OUUsIDB4NDAsIDB4NzksIDB4MDAsIDB4RUQsIDB4MDEsIDB4MDQsIDB4MTcsIDB4MTAsIDB4MUUsCisweDQwLCAweDYxLCAweDg4LCAweEUxLCAweDIxLCAweDk2LCAweDE3LCAweEQwLCAweDlFLCAweDQ0LCAweDc4LCAweDAwLCAweEJELAorMHgwMSwgMHg4NSwgMHgwNSwgMHhEMCwgMHgxQywgMHg0MCwgMHgxMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjgsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDMsIDB4OTAsIDB4MEMsCisweDQwLCAweDcxLCAweDAxLCAweENELCAweDg4LCAweDA0LCAweDAzLCAweDkwLCAweDBDLCAweDQwLCAweDMzLCAweDAwLCAweEMxLAorMHgzQSwgMHgxNCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MiwgMHhGMCwgMHgwNCwgMHg4RCwgMHgwMywgMHg0NCwgMHgwQiwgMHhEMCwKKzB4OEQsIDB4NDAsIDB4NUIsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsCisweDIwLCAweDE1LCAweDAwLCAweDVGLCAweDAwLCAweDVDLCAweDAxLCAweDMwLCAweDA1LCAweDQwLCAweERELCAweDAxLCAweDdGLAorMHhDMSwgMHg0RCwgMHgwMSwgMHgzMSwgMHgwNSwgMHhDMCwgMHg5RSwgMHgwNCwgMHg3MSwgMHgwMywgMHg1QywgMHgwMSwgMHhCMCwKKzB4MDUsIDB4QzQsIDB4REMsIDB4MDEsIDB4N0YsIDB4NTksIDB4Q0MsIDB4MDksIDB4RjAsIDB4QjcsIDB4NDAsIDB4NUQsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDA1LCAweDAwLCAweDFGLAorMHgwMCwgMHg2NCwgMHgwMCwgMHhGMCwgMHgyMSwgMHg1MCwgMHgwNiwgMHgyMCwgMHgwQiwgMHg4MCwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4ODYsIDB4MDQsIDB4MTcsIDB4MDAsIDB4NjgsIDB4MDgsIDB4QTIsIDB4MDEsIDB4RDAsIDB4MDcsIDB4MDgsCisweDFGLCAweDIyLCAweDdDLCAweDQ4LCAweEYwLCAweDAxLCAweEMwLCAweDRBLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg2NSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg2QywgMHg4MiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OTcsIDB4MDAsIDB4NkMsIDB4MjIsIDB4RjAsIDB4NDksIDB4QzQsIDB4MjcsIDB4MDAsCisweDlGLCAweDAwLCAweDdDLCAweDBBLCAweEQwLCAweDI5LCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDUwLCAweDAyLAorMHgzMCwgMHgwOSwgMHhDMCwgMHg0MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MjAsIDB4MkMsIDB4MDAsIDB4OUQsIDB4NDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4QTksIDB4NDAsIDB4MjcsIDB4MTAsCisweDk0LCAweDAwLCAweDQ0LCAweDAyLCAweEQwLCAweDI5LCAweDA0LCAweEE3LCAweDAxLCAweDlELCAweDExLCAweEY0LCAweDRFLAorMHhDMiwgMHgyOSwgMHg1MCwgMHgyNCwgMHgwMCwgMHg4RCwgMHgwNCwgMHg0NCwgMHgyQSwgMHg1MCwgMHgwOSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDIsCisweDlELCAweDAwLCAweDc0LCAweDIyLCAweEQwLCAweDA5LCAweDQwLCAweDIzLCAweDAwLCAweDkwLCAweDQwLCAweDY0LCAweDAyLAorMHhEMCwgMHgwOSwgMHgwMSwgMHgyNiwgMHg4MiwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwMiwgMHhDMCwgMHgyOCwgMHg0MCwgMHgyNCwKKzB4MDAsIDB4OUMsIDB4ODAsIDB4NTQsIDB4MDIsIDB4MTIsIDB4MjksIDB4NDYsIDB4NjAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIxLCAweDAwLCAweDhELCAweDQ4LCAweDM0LCAweDAyLAorMHhEMSwgMHgwOCwgMHg0MCwgMHgyMywgMHg2MiwgMHg4MSwgMHgwOCwgMHgwNCwgMHgwQSwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMywKKzB4MjEsIDB4OEQsIDB4MjAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4QzgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4OEQsIDB4ODAsIDB4MTAsCisweDUzLCAweDUyLCAweDQ4LCAweDQxLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxRCwgMHhCOCwgMHg0NiwgMHgwMCwgMHgxRiwgMHgzNiwgMHg3QywgMHg1MCwgMHhGMCwgMHg0NSwgMHhDMSwgMHg4NywKKzB4MDAsIDB4MTIsIDB4MTYsIDB4NkMsIDB4NTAsIDB4RjEsIDB4NDEsIDB4ODEsIDB4NDYsIDB4MDAsIDB4MEYsIDB4MEEsIDB4N0MsCisweDA0LCAweEYwLCAweDMxLCAweEM0LCAweEM0LCAweDAyLCAweDFGLCAweDAwLCAweDU4LCAweDEwLCAweDMwLCAweDQxLCAweEUyLAorMHg3NCwgMHhFMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHhBNywKKzB4MDAsIDB4OUYsIDB4MjQsIDB4NzgsIDB4ODIsIDB4RjAsIDB4MDksIDB4Q0EsIDB4MkYsIDB4MDEsIDB4RkMsIDB4MDQsIDB4N0MsCisweDA2LCAweEYxLCAweDA5LCAweDgwLCAweDJGLCAweDAyLCAweEJGLCAweDAxLCAweDdDLCAweDBBLCAweEIwLCAweEM5LCAweEMwLAorMHg2RiwgMHgwMiwgMHhCRiwgMHgwMCwgMHhFQywgMHg1MiwgMHhGMCwgMHg0QiwgMHhEMSwgMHg3NywgMHg2MCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QTgsIDB4NkYsIDB4MDAsIDB4OUYsIDB4MTYsIDB4RkMsCisweDAyLCAweDM0LCAweDRCLCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAyLCAweEZDLCAweDIyLCAweEYwLCAweDBCLCAweEMwLAorMHgyQywgMHg2MCwgMHhCMywgMHgwMCwgMHhGQywgMHg0NiwgMHhGMCwgMHgwQiwgMHhDMCwgMHgyNCwgMHgwMCwgMHhCMywgMHg4MCwKKzB4Q0QsIDB4ODIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4NzcsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDg3LCAweDAwLCAweDFELCAweDAyLCAweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLAorMHgwNCwgMHgwMSwgMHgwRCwgMHg4QSwgMHg3NCwgMHgwNCwgMHhEMCwgMHhBMSwgMHg0MCwgMHgwNCwgMHgwOCwgMHgxMSwgMHgwMCwKKzB4NzQsIDB4MDgsIDB4RDAsIDB4NDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDEsIDB4MDEsCisweDQyLCAweDYzLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweEEwLAorMHhBMSwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwQSwgMHgxMSwgMHgyQywgMHg0MCwgMHgyMCwgMHgyNCwgMHg4OSwgMHg0MCwKKzB4MzQsIDB4MUEsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MTAsIDB4ODUsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDgsIDB4MDgsCisweDYxLCAweDIwLCAweDQwLCAweDk1LCAweDAwLCAweDE0LCAweDA2LCAweEQwLCAweDA4LCAweDQwLCAweDRCLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyOCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwKKzB4NzAsIDB4MDIsIDB4MTIsIDB4MDksIDB4NDAsIDB4QTQsIDB4MEEsIDB4OUQsIDB4MjAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksCisweDEwLCAweDI0LCAweDEwLCAweDk1LCAweDIwLCAweDc0LCAweDgyLCAweEQwLCAweDA4LCAweDRDLCAweDI0LCAweDA0LCAweDk1LAorMHgwOCwgMHg1NCwgMHhBMywgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MywgMHgyOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MkEsIDB4MjUsIDB4MjAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksCisweEQwLCAweDY0LCAweDAwLCAweDlGLCAweDAyLCAweEZDLCAweDAyLCAweEYwLCAweDA5LCAweEM0LCAweEE0LCAweDA0LCAweDk3LAorMHgwMCwgMHg3QywgMHgwMiwgMHhGMiwgMHgwOSwgMHg1MCwgMHg2NCwgMHgwMiwgMHg4NywgMHgwMCwgMHg1QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MTcsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDAwLCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDdFLCAweDAyLCAweEYwLCAweDA4LCAweEMwLCAweDY3LCAweDIwLCAweDlGLAorMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMywgMHgyNywgMHgwMiwgMHg5QiwgMHgxMCwgMHg3QywgMHg4MiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4NjcsIDB4MDAsIDB4OUEsIDB4MDAsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NUIsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDE3LAorMHgwMCwgMHg0QywgMHgwMCwgMHhCMCwgMHgwMSwgMHhDOCwgMHgwNywgMHgwMCwgMHgxMywgMHgwMiwgMHg2QywgMHgyMCwgMHhGMCwKKzB4ODEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzQsIDB4MDEsIDB4QzAsIDB4ODcsIDB4MDAsCisweDEzLCAweDA0LCAweDdDLCAweDA0LCAweDMwLCAweDAxLCAweEMwLCAweDUzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgxNCwgMHgwNCwgMHg1MSwgMHgwMCwgMHgyQywgMHgwMSwgMHhEMCwKKzB4QTcsIDB4NDgsIDB4MTcsIDB4MDgsIDB4NTEsIDB4MDAsIDB4NDQsIDB4MDEsIDB4RDAsIDB4MjYsIDB4NDAsIDB4NUIsIDB4MjAsCisweDdDLCAweDgzLCAweEM0LCAweDAxLCAweDExLCAweDA3LCAweDQxLCAweDE3LCAweDAwLCAweDcwLCAweDAwLCAweEY0LCAweDAxLAorMHgxMCwgMHgwNywgMHg0NCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MTQsIDB4MjcsIDB4OUEsIDB4MEMsIDB4NDQsIDB4MzMsIDB4MDAsCisweEMwLCAweDAwLCAweDI0LCAweDA3LCAweEQwLCAweDJDLCAweDQwLCAweDYzLCAweDIwLCAweENELCAweDAwLCAweDAwLCAweDAyLAorMHg5MCwgMHg1QywgMHg0MCwgMHgzNywgMHgwMCwgMHg4MSwgMHgwMywgMHgzMCwgMHgwMywgMHg5NCwgMHgxQywgMHg0MCwgMHg0MywKKzB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NzksIDB4MDAsCisweEUxLCAweDAxLCAweEE1LCAweDAzLCAweEQwLCAweDA2LCAweDQwLCAweDdCLCAweDAyLCAweEUxLCAweDQ5LCAweDg0LCAweDAyLAorMHhEMCwgMHgwNiwgMHg0MCwgMHhCQiwgMHg4MCwgMHg2RCwgMHgwMywgMHg4NCwgMHg0NiwgMHg5MiwgMHgwNiwgMHg0MCwgMHgzMywKKzB4MDAsIDB4RTEsIDB4MDIsIDB4QjQsIDB4MDcsIDB4OTAsIDB4MjYsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDc5LCAweDAwLCAweEY3LCAweDA5LCAweDlDLCAweDA2LAorMHhCMCwgMHgxRSwgMHhDMCwgMHg3RiwgMHg0NSwgMHhFMiwgMHgxNSwgMHhBQywgMHgwNywgMHhGMCwgMHgxQSwgMHhDMCwgMHg2QiwKKzB4MjAsIDB4QkYsIDB4MDEsIDB4OEMsIDB4MDYsIDB4QTAsIDB4MUEsIDB4QzAsIDB4N0IsIDB4MDUsIDB4QTMsIDB4MDEsIDB4RkMsCisweDA3LCAweEIwLCAweDFFLCAweEMwLCAweDUzLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHhCOCwgMHgzMSwgMHgwMCwgMHhERiwgMHgwQywgMHg1QywgMHgwMiwgMHhGMSwgMHgwMSwgMHhDMCwgMHhCNywKKzB4MDEsIDB4REYsIDB4ODYsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MDksIDB4RTAsIDB4MjYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4M0MsCisweDAyLCAweDcwLCAweDA5LCAweEMwLCAweDM3LCAweDAxLCAweERGLCAweDgwLCAweDdDLCAweDAyLCAweDcyLCAweDA1LCAweEMwLAorMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHg3RCwKKzB4MDAsIDB4RkYsIDB4MDEsIDB4REUsIDB4MjcsIDB4NzAsIDB4OUIsIDB4QzAsIDB4N0YsIDB4MDAsIDB4RkYsIDB4MjEsIDB4REMsCisweDI3LCAweEYwLCAweDFGLCAweEMwLCAweDZGLCAweDAwLCAweDdCLCAweDA5LCAweENDLCAweDA3LCAweDMwLCAweDFGLCAweEMwLAorMHg3QywgMHgyNiwgMHhCRiwgMHg4MSwgMHhGQywgMHgyNywgMHgzMSwgMHg5RiwgMHhDMCwgMHgxOCwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MTAsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4ODQsCisweDAyLCAweEMwLCAweDIyLCAweDQyLCAweDNCLCAweDAwLCAweEU5LCAweDAwLCAweDgwLCAweDAyLCAweEQwLCAweDIyLCAweDQwLAorMHgzQiwgMHgwMCwgMHgxOSwgMHgwMSwgMHg5NCwgMHgwQSwgMHg1MCwgMHgwNiwgMHg0MCwgMHg3OSwgMHgwQSwgMHhFRCwgMHgwMCwKKzB4QjQsIDB4MzMsIDB4MzAsIDB4MjIsIDB4NDAsIDB4NTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDg4LCAweDAwLCAweDM5LCAweDAwLCAweEVELCAweDAwLCAweDk0LCAweDgyLCAweDUwLCAweDAyLCAweDAwLAorMHgzQiwgMHgwMCwgMHhFRCwgMHgwOCwgMHg5NCwgMHgwMywgMHhEMSwgMHgwQSwgMHg0MCwgMHgyQiwgMHgwMCwgMHgzOSwgMHgxMCwKKzB4MjQsIDB4MDMsIDB4RDAsIDB4MDQsIDB4NDAsIDB4MzgsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QjQsIDB4MDksIDB4MTIsIDB4MEUsCisweDYwLCAweDYxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDIwLAorMHgyMSwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEMCwgMHgwMCwgMHg0MCwgMHhGMywgMHgwMCwgMHhDRCwgMHgwMiwKKzB4MDQsIDB4MDIsIDB4RDAsIDB4MDgsIDB4NDgsIDB4NzMsIDB4ODQsIDB4MDksIDB4MDEsIDB4MzQsIDB4MDMsIDB4RDAsIDB4MDQsCisweDY0LCAweDMxLCAweDgyLCAweENELCAweDAwLCAweDM0LCAweDA0LCAweDExLCAweDAwLCAweDQwLCAweDA5LCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBOCwgMHgzNSwgMHgxMCwgMHhGRiwgMHgwMCwKKzB4NTQsIDB4MDMsIDB4NzAsIDB4MDksIDB4QzAsIDB4M0YsIDB4MDMsIDB4RkYsIDB4MDEsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MDksCisweEM4LCAweEE3LCAweDAxLCAweDlCLCAweDAxLCAweDY0LCAweDAyLCAweEIwLCAweDBELCAweENDLCAweEZDLCAweDEyLCAweDlELAorMHgwQSwgMHg3QywgMHg5MCwgMHgzMywgMHgxOSwgMHhDMiwgMHg3NSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MEQsIDB4MDAsIDB4MzcsIDB4MjAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MjksCisweEMwLCAweDM3LCAweDA4LCAweERCLCAweDE4LCAweDdFLCAweDAyLCAweEYyLCAweDAxLCAweDQwLCAweDM3LCAweDAwLCAweDFFLAorMHgwMCwgMHg1QywgMHgwQSwgMHgzOCwgMHgwNSwgMHhDMCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwOCwgMHg3NCwKKzB4ODEsIDB4NTAsIDB4MTYsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsCisweDA4LCAweDNGLCAweDEwLCAweERGLCAweDAwLCAweEZDLCAweDBCLCAweEYwLCAweDBCLCAweEMwLCAweDNGLCAweDAwLCAweERGLAorMHgwMCwgMHhGQywgMHgwNywgMHhGMSwgMHgwQSwgMHhDMCwgMHgyQywgMHg0MCwgMHgzMiwgMHgwMSwgMHhGQywgMHgwMiwgMHhGMiwKKzB4MUEsIDB4ODAsIDB4M0MsIDB4MDAsIDB4QjMsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzEsIDB4MDcsIDB4MjYsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDAwLCAweERELAorMHgwMCwgMHg2NCwgMHgwNywgMHhEMCwgMHgxOSwgMHg0MiwgMHgzMywgMHgwMCwgMHhEMSwgMHg4MCwgMHg3NCwgMHgwNywgMHhEMCwKKzB4MzksIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDcsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MTksIDB4QzAsIDB4MzcsIDB4MDAsCisweDlCLCAweDE4LCAweDY0LCAweDBDLCAweEQwLCAweDMxLCAweDQwLCAweDA3LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEOCwKKzB4MTksIDB4NDAsIDB4MzcsIDB4MDAsIDB4RDksIDB4MDAsIDB4NzQsIDB4MTMsIDB4RDAsIDB4MTEsIDB4NDAsIDB4QTYsIDB4MDAsCisweDM1LCAweDA4LCAweDc0LCAweDAzLCAweEM4LCAweDQ5LCAweDQ2LCAweDM5LCAweDAwLCAweDkxLCAweDAwLCAweDYwLCAweDA0LAorMHhEMCwgMHgxOSwgMHg0MCwgMHgwNywgMHgwOCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MjAsIDB4MzAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MjQsIDB4MDIsIDB4RDgsIDB4MDgsIDB4NDAsIDB4MzcsIDB4MDAsCisweEMxLCAweDAwLCAweDM0LCAweDgyLCAweEQwLCAweDAwLCAweDQwLCAweDMwLCAweDgwLCAweDA1LCAweDAwLCAweDM0LCAweDAyLAorMHhEMCwgMHgwMCwgMHg0MCwgMHgzMiwgMHgwMSwgMHhDOSwgMHhBMCwgMHgyNCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHg0MywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OTgsIDB4MzYsIDB4MDAsCisweEZGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDAxLCAweEMwLCAweDNGLCAweDAwLCAweEZCLCAweDAwLCAweDc0LCAweDAyLAorMHhEMSwgMHgwMSwgMHhDMCwgMHgyNCwgMHgwMCwgMHgxNywgMHgwNCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMSwgMHhDMCwgMHgzRCwKKzB4MDUsIDB4MTMsIDB4NDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzIsIDB4MDcsIDB4NjQsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg1LCAweEI4LCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEVDLCAweDAyLAorMHhGMCwgMHgwMywgMHhDQywgMHgzRiwgMHgwMCwgMHhGQiwgMHgwMCwgMHhGOCwgMHgwMiwgMHhGMiwgMHgwMywgMHg4OCwgMHgxRiwKKzB4MDAsIDB4MUIsIDB4MTYsIDB4RkMsIDB4MDEsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MzcsIDB4MDAsIDB4N0YsIDB4MDAsIDB4RkMsCisweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDE3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBQSwgMHg3QiwgMHgxMiwgMHhFRiwgMHgwOSwgMHhFQywgMHgwNywgMHhCMCwgMHg5RSwgMHhDMCwgMHg3QSwKKzB4MDAsIDB4RjcsIDB4MDksIDB4RUMsIDB4MDcsIDB4RjAsIDB4M0YsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RjcsIDB4MjksIDB4Q0MsCisweDA3LCAweEYwLCAweDFGLCAweEMwLCAweDdGLCAweDAwLCAweEYzLCAweDAxLCAweEZDLCAweEE3LCAweEIwLCAweDFGLCAweEMwLAorMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgxOCwgMHgwNywKKzB4MDAsIDB4MUQsIDB4NDQsIDB4NDQsIDB4MDQsIDB4MzIsIDB4MDEsIDB4NDAsIDB4NDQsIDB4MjAsIDB4MTEsIDB4MDQsIDB4NEMsCisweDEwLCAweDEwLCAweDAxLCAweEMwLCAweDQ0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDEwLCAweEQwLCAweDAxLCAweDQwLAorMHg0NCwgMHgxMCwgMHgxMSwgMHgyMCwgMHg3NCwgMHgwMCwgMHgxMCwgMHgxMSwgMHhDMCwgMHgwRSwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MzMsIDB4MTEsIDB4REQsIDB4MDAsIDB4MjQsCisweDAzLCAweDkxLCAweDRELCAweDQyLCAweDMzLCAweDAwLCAweEM1LCAweDAwLCAweDM0LCAweDQzLCAweEQwLCAweDRDLCAweDQwLAorMHgzMiwgMHgwMCwgMHhDNSwgMHg0NCwgMHgxNCwgMHg0MywgMHhEMCwgMHgwQywgMHg2MiwgMHgzMiwgMHgwMCwgMHhDMSwgMHg4MCwKKzB4MzQsIDB4MTMsIDB4OTAsIDB4MEQsIDB4NDIsIDB4NEQsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDA1LCAweDAwLCAweDFELCAweDAwLCAweDU0LCAweDAwLCAweDkwLCAweDAxLCAweDQwLAorMHgwNSwgMHgwOCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwNSwgMHgwMCwKKzB4NTQsIDB4MDAsIDB4REEsIDB4MDEsIDB4NDQsIDB4MDQsIDB4NDAsIDB4MTEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MTEsIDB4MDEsCisweDQwLCAweDBGLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEwLAorMHgzNywgMHgwOCwgMHhERiwgMHg4MCwgMHg2QywgMHg4MywgMHhCMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhENiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzMsIDB4MDAsIDB4RDcsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RTAsIDB4MEQsCisweEMwLCAweDMyLCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDAzLCAweEIxLCAweDBDLCAweEMwLCAweDIxLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgwRCwgMHgwMCwgMHgzRiwgMHgwMCwKKzB4RUMsIDB4MDAsIDB4NzAsIDB4MDMsIDB4QzgsIDB4MEUsIDB4MjAsIDB4M0UsIDB4MDAsIDB4Q0MsIDB4MDAsIDB4RjAsIDB4MDMsCisweEMwLCAweDBDLCAweDA4LCAweDNCLCAweDAwLCAweEVDLCAweDAwLCAweEYyLCAweDAzLCAweEMwLCAweDBFLCAweDAwLCAweDNGLAorMHgwMCwgMHhFNCwgMHgwMCwgMHhGMCwgMHgwMywgMHhDMCwgMHgxRSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MzUsIDB4MjAsIDB4RDcsIDB4QzgsIDB4NUMsIDB4ODMsIDB4QzAsIDB4MEQsCisweEMwLCAweDM1LCAweDAxLCAweEQ3LCAweDAwLCAweDVDLCAweDAzLCAweEYwLCAweDRELCAweEMwLCAweDM2LCAweDAwLCAweEQ3LAorMHgwMCwgMHg3QywgMHgxMywgMHgzMCwgMHg0RCwgMHhDNCwgMHgzNiwgMHgwMCwgMHhENywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4RDAsIDB4MjgsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsCisweEEwLCAweEM0LCAweDAwLCAweDAxLCAweDgzLCAweDA0LCAweDA0LCAweDEwLCAweEUwLCAweDQwLCAweDgwLCAweDAwLCAweDExLAorMHgwMCwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwMiwgMHgxMSwgMHgwMCwgMHg3NCwgMHg0OCwgMHhCMCwKKzB4NTAsIDB4NDAsIDB4QzcsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NzAsIDB4MjQsIDB4RDEsIDB4MDEsIDB4NDAsIDB4NEQsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDIwLCAweEIwLCAweDA0LCAweEM1LAorMHg1MywgMHgxNCwgMHgwMywgMHg1MCwgMHgwQywgMHg0MiwgMHgzMSwgMHgwMCwgMHhDNSwgMHgwMCwgMHgxNCwgMHgwMywgMHhEMCwKKzB4MEQsIDB4MDAsIDB4MzIsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MzQsIDB4MEYsIDB4OTIsIDB4M0MsIDB4NDQsIDB4QjIsIDB4MDksCisweEM1LCAweDAwLCAweDI0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRiwgMHgwOCwgMHg0QywgMHgwNiwgMHgzMSwgMHgwMSwgMHhDNCwgMHgwNCwgMHgxMSwKKzB4MTMsIDB4NDAsIDB4NDgsIDB4MDgsIDB4MjUsIDB4MDEsIDB4ODQsIDB4MDQsIDB4RDAsIDB4MTIsIDB4NDAsIDB4NEIsIDB4MDAsCisweDIxLCAweDAxLCAweEY0LCAweDA0LCAweEQyLCAweDkyLCAweDQwLCAweDRCLCAweDBDLCAweDIxLCAweDAxLCAweEI0LCAweDE0LAorMHhEMCwgMHg5MiwgMHg0MCwgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MTAsIDB4MzAsIDB4MDAsIDB4QzcsIDB4MDgsIDB4MUMsIDB4NjMsIDB4NzIsIDB4MEMsIDB4QzAsIDB4MzEsIDB4MDIsCisweEQ1LCAweDAwLCAweDFDLCAweDEzLCAweEYwLCAweDRDLCAweEMwLCAweDMyLCAweDAxLCAweEM3LCAweDI4LCAweDNDLCAweDIzLAorMHhCMCwgMHg4QywgMHhDMCwgMHgzMiwgMHgwMCwgMHhDNiwgMHgwMCwgMHgzQywgMHg2MywgMHhGMiwgMHg4QywgMHhDMCwgMHg0QSwKKzB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MjgsIDB4MEQsIDB4MDAsCisweDNGLCAweDAwLCAweEJDLCAweDAwLCAweDcwLCAweDAzLCAweEMwLCAweDBGLCAweDBBLCAweDNCLCAweDA4LCAweEZDLCAweDAwLAorMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwOCwgMHhCQywgMHhBMCwgMHhBMCwgMHg4MSwgMHhDMCwgMHgwQiwKKzB4MTAsIDB4MUYsIDB4MDAsIDB4RkMsIDB4MzAsIDB4RjAsIDB4OTAsIDB4QzAsIDB4MDksIDB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDM3LCAweDAwLCAweEQzLCAweDAwLCAweDdFLCAweDAzLAorMHg3MCwgMHgwRCwgMHg4MCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzMCwKKzB4MDAsIDB4REEsIDB4MDAsIDB4NUMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4MzAsIDB4MDAsIDB4RDMsIDB4MDAsIDB4N0MsCisweDAzLCAweDM0LCAweDBELCAweEMwLCAweDQwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMywgMHg4MCwgMHgwRCwgMHgwOCwgMHgyMCwgMHgwMCwgMHhCMiwgMHgwMCwgMHhEMSwgMHgwMiwgMHg0MCwgMHgwQiwKKzB4MDAsIDB4MkQsIDB4MDAsIDB4QjQsIDB4MDAsIDB4NTAsIDB4MDIsIDB4QzAsIDB4MDksIDB4MDAsIDB4MjEsIDB4QTAsIDB4QjQsCisweDAwLCAweEQwLCAweDAyLCAweEM0LCAweDBBLCAweDAwLCAweDJCLCAweDgwLCAweEI0LCAweDAwLCAweDEwLCAweDAyLCAweEMwLAorMHg0RSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMiwgMHg3OSwKKzB4MjAsIDB4RTksIDB4MDEsIDB4OTQsIDB4ODcsIDB4RDAsIDB4MUUsIDB4NjAsIDB4N0IsIDB4MDAsIDB4RUQsIDB4MDEsIDB4RjQsCisweDA3LCAweEQwLCAweDFGLCAweDQwLCAweDdCLCAweDAwLCAweEU5LCAweDAxLCAweEI0LCAweDA3LCAweEQwLCAweDFGLCAweDQwLAorMHg3RSwgMHgwMCwgMHhFOSwgMHgyMSwgMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjgsIDB4MDIsIDB4MDAsIDB4MDksIDB4MDAsIDB4MzQsCisweDAwLCAweEQyLCAweDAxLCAweDQwLCAweDAzLCAweDAwLCAweDBELCAweDAwLCAweDc0LCAweDAwLCAweEQwLCAweDAwLCAweDQwLAorMHgwMSwgMHg4MCwgMHgwRCwgMHgwMCwgMHgzNCwgMHg4MCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwOSwgMHgwMCwKKzB4MzYsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4NUEsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE3LCAweEEwLCAweDExLCAweDAwLCAweDVCLCAweDAwLCAweDc4LCAweDAxLCAweDcwLCAweDA1LCAweEUwLAorMHgxNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg3RSwgMHgwMSwgMHhCMSwgMHgwNCwgMHhDMCwgMHgxNiwgMHgwMCwgMHg1QiwgMHgyMCwKKzB4NUMsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzQsIDB4MTQsIDB4MDAsIDB4NUIsIDB4MjAsIDB4N0MsIDB4MDEsIDB4MzAsIDB4MDUsCisweEMwLCAweDVDLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LAorMHg4RiwgMHg0MCwgMHgzNywgMHgwMCwgMHhGQywgMHgwMCwgMHhGMCwgMHgwMywgMHhFMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwKKzB4RkEsIDB4MDAsIDB4NzAsIDB4MjMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4MzMsIDB4MDAsIDB4RjQsIDB4MDgsIDB4RjAsIDB4MjMsCisweEMwLCAweDhGLCAweDAwLCAweDNGLCAweDQwLCAweEY0LCAweDA4LCAweEYwLCAweDAzLCAweEMwLCAweDRCLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwgMHgwMSwgMHg5NywgMHgwMCwKKzB4N0MsIDB4MTYsIDB4NTAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OUYsIDB4QTAsIDB4N0MsIDB4MDIsIDB4MzMsIDB4MDksCisweEMyLCAweDI1LCAweDIwLCAweDkzLCAweDQwLCAweDc0LCAweDAyLCAweDAyLCAweDA5LCAweDU0LCAweEE0LCAweDAwLCAweDk3LAorMHgwMCwgMHg3QywgMHgwNiwgMHgzMiwgMHgyOSwgMHhDMiwgMHg0MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4RTYsIDB4MDAsIDB4OTEsIDB4MDUsIDB4MzQsIDB4ODYsIDB4MTAsIDB4MzksCisweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweDUwLCAweDA5LCAweDEwLCAweEEwLCAweDA0LCAweDkxLAorMHgwMCwgMHgzNCwgMHgwNiwgMHhCMiwgMHgyOCwgMHg0MCwgMHhFMCwgMHgwOCwgMHg5NSwgMHgwMCwgMHgzMCwgMHgwNiwgMHg1MSwKKzB4MDgsIDB4NDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEEwLCAweDI0LCAweDAwLCAweEI1LCAweDA0LCAweEY0LCAweDAyLCAweDUwLCAweDZCLCAweDQwLCAweDJELCAweDAwLCAweEJELAorMHg4MCwgMHhENCwgMHg4MiwgMHgxOCwgMHgwQiwgMHg0MSwgMHgyQywgMHhDMCwgMHhCMSwgMHgwMCwgMHhENCwgMHgxMiwgMHgxMCwKKzB4MkIsIDB4NDAsIDB4MkQsIDB4OTAsIDB4QjAsIDB4ODAsIDB4RjQsIDB4MjIsIDB4MTIsIDB4MEIsIDB4NDIsIDB4NjAsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDNELCAweDAwLCAweEExLAorMHgwMCwgMHhGNCwgMHgwMiwgMHg1MCwgMHgwQSwgMHg0MCwgMHgyOCwgMHgyMCwgMHhBQywgMHgyOCwgMHhCNCwgMHgyMiwgMHg1MCwKKzB4MEEsIDB4NDAsIDB4MjgsIDB4MDAsIDB4QTEsIDB4QzgsIDB4RjQsIDB4MDMsIDB4RDAsIDB4MEEsIDB4NDAsIDB4MkQsIDB4MDAsCisweEE0LCAweDAwLCAweEY0LCAweDIzLCAweDUwLCAweDBFLCAweDQwLCAweDQxLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHgzOCwgMHgwNiwgMHgwMCwgMHgxNywgMHg4MCwgMHg3QywgMHgwMCwgMHg3MCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUMsIDB4MDIsIDB4N0MsIDB4MDgsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDUsIDB4MDAsCisweDEzLCAweDAyLCAweDVDLCAweDAwLCAweDMyLCAweEExLCAweEMwLCAweDE1LCAweDAwLCAweDE3LCAweDBBLCAweDM4LCAweDA4LAorMHgzMCwgMHgwMywgMHhDOCwgMHg3NCwgMHhFMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUQsIDB4QjAsIDB4MjUsIDB4MDUsIDB4OUYsIDB4MzQsIDB4N0MsIDB4MDIsIDB4QjAsIDB4NDksIDB4QzEsIDB4MjcsIDB4MDAsCisweDlGLCAweDA0LCAweDJDLCAweDEyLCAweEYwLCAweDQ4LCAweEM5LCAweDI3LCAweDAwLCAweDlGLCAweDA0LCAweDdDLCAweDUyLAorMHhCMCwgMHgxOSwgMHhDMCwgMHgyNiwgMHgwMCwgMHg5RiwgMHgwMSwgMHg3QywgMHgxMiwgMHhGMCwgMHgwOCwgMHhDMCwgMHg3NywKKzB4NDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4ODAsIDB4MkYsIDB4MDAsCisweEJGLCAweDA4LCAweERDLCAweDAyLCAweEY4LCAweDBCLCAweEMyLCAweDJGLCAweDAwLCAweDhGLCAweDAyLCAweDdDLCAweDAyLAorMHgzNCwgMHgwQiwgMHhDMCwgMHgyQywgMHgwMCwgMHg5MywgMHgwMCwgMHhGQywgMHgwQSwgMHgzMCwgMHgwQiwgMHhDMCwgMHgyQywKKzB4NDAsIDB4ODMsIDB4MDAsIDB4Q0MsIDB4MDIsIDB4QjAsIDB4MEIsIDB4QzAsIDB4NzQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDA4LCAweDQ3LCAweDAxLCAweDFELCAweDI1LCAweDQ0LCAweDAwLAorMHhEMSwgMHg0MSwgMHg0MSwgMHgwNywgMHgwMCwgMHgxRCwgMHgwNCwgMHg3NCwgMHg4MCwgMHgxMCwgMHgwMSwgMHg0MiwgMHgwNSwKKzB4MDgsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4QjAsIDB4MDEsIDB4NDIsIDB4MDQsIDB4MDAsIDB4MTEsIDB4NDAsIDB4NDQsCisweDAwLCAweDExLCAweDAxLCAweDQwLCAweDYxLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgwMCwgMHgzMSwgMHgxNSwgMHg4RCwgMHg0NCwgMHgxMCwgMHgwMiwgMHhEOCwgMHgwQywgMHg0MCwgMHgyMywKKzB4MDAsIDB4OEQsIDB4MDQsIDB4MzQsIDB4NDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MTQsIDB4MzQsCisweDAyLCAweDEwLCAweDA4LCAweDUwLCAweDIwLCAweDgwLCAweDgxLCAweDIwLCAweDE1LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHg0OCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgyQSwgMHgyNSwKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4ODIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsCisweDAyLCAweDExLCAweDA5LCAweDQwLCAweDI1LCAweDIwLCAweDkxLCAweDAwLCAweDc0LCAweDAyLCAweDkwLCAweDA4LCAweDYwLAorMHgyNCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg1NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHg2MSwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjIsIDB4MjUsIDB4MTAsIDB4OUYsIDB4MDAsIDB4NUMsCisweDAyLCAweEQwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDA5LCAweEMwLAorMHgyMCwgMHgwOCwgMHg5MywgMHg4MCwgMHg3QywgMHgwMiwgMHgzMCwgMHgwOSwgMHhDMCwgMHgyMCwgMHgwMCwgMHg5MywgMHgwMCwKKzB4NUMsIDB4ODIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE2LCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDA5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHg0MCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzEsIDB4MjcsIDB4MDQsIDB4OUYsIDB4MDAsIDB4NkMsIDB4NDIsIDB4MzAsIDB4MDksCisweDQwLCAweDVCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LAorMHgwNSwgMHgwMCwgMHgxNywgMHgwMCwgMHg0QywgMHgwMCwgMHhGMCwgMHg0MSwgMHhDNCwgMHgwNywgMHgwMSwgMHgxNywgMHgwMCwKKzB4NEMsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzMsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NUMsIDB4NDAsIDB4QjAsIDB4MDEsCisweEMwLCAweDA0LCAweDAwLCAweDFGLCAweDAwLCAweDRDLCAweDAwLCAweDMwLCAweDAxLCAweEMxLCAweDUxLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxQywgMHgwMiwgMHg3RCwgMHhEOCwKKzB4NDQsIDB4MDEsIDB4NzAsIDB4MjcsIDB4NDAsIDB4OUYsIDB4MDAsIDB4NTEsIDB4MjAsIDB4NkMsIDB4MDEsIDB4RDAsIDB4NzYsCisweDQyLCAweERGLCAweDAwLCAweDVELCAweDQwLCAweEVDLCAweDBELCAweDExLCAweDI3LCAweDQwLCAweDFDLCAweDAwLCAweDU5LAorMHgwMCwgMHhENCwgMHgwMSwgMHgxNCwgMHgwNiwgMHg1MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MzIsIDB4MDAsIDB4RDUsIDB4NDAsIDB4MDQsIDB4MjYsIDB4RDAsIDB4MEMsCisweDQwLCAweEEzLCAweDAwLCAweEM1LCAweDAwLCAweDQ0LCAweDAzLCAweDU4LCAweDBDLCAweDQ4LCAweEYzLCAweDAzLCAweENELAorMHgwMCwgMHg0NiwgMHgwNywgMHg5MCwgMHgyQywgMHg0MCwgMHgzMiwgMHgwMCwgMHhERCwgMHgwMCwgMHg0MCwgMHgwRiwgMHgwMCwKKzB4M0MsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDgwLCAweDM4LCAweDIwLCAweEVELCAweDQwLCAweDg1LCAweDAzLCAweDU4LCAweDBFLCAweDY4LCAweEVGLCAweDAwLCAweEY1LAorMHgwOSwgMHhBNCwgMHgyMywgMHhEMCwgMHgwNiwgMHg0MCwgMHgzQiwgMHgwMCwgMHhGRCwgMHg0NSwgMHhBNCwgMHgwQiwgMHgxMCwKKzB4MDIsIDB4NDEsIDB4MkEsIDB4MDQsIDB4RjksIDB4MDQsIDB4OTYsIDB4MEIsIDB4MTIsIDB4MEUsIDB4NDUsIDB4MTAsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDEwLCAweDU5LCAweDAwLCAweDc3LAorMHgwMSwgMHg4QywgMHgwNywgMHhGMSwgMHgxRSwgMHg0MCwgMHg2QiwgMHgwMCwgMHhFNywgMHgxNSwgMHg4QywgMHgwNywgMHg3MCwKKzB4MTYsIDB4ODAsIDB4N0IsIDB4MDAsIDB4RUYsIDB4MDEsIDB4REMsIDB4MDUsIDB4QjAsIDB4MUUsIDB4RDAsIDB4NUEsIDB4MDgsCisweEVGLCAweDA3LCAweENDLCAweDA2LCAweDMwLCAweDFFLCAweEMwLCAweDUxLCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgxNSwgMHgwMCwgMHg1RiwgMHg0MCwgMHg3QywgMHg4MywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MjMsIDB4MDAsIDB4REIsIDB4MDYsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MzcsIDB4MDAsCisweENGLCAweDA4LCAweDdFLCAweDgzLCAweEYwLCAweDYwLCAweEQ1LCAweDE1LCAweDIwLCAweERCLCAweDA2LCAweDdDLCAweDAyLAorMHhEMCwgMHgwQywgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDYsIDB4MjAsIDB4N0QsIDB4MEEsIDB4RkYsIDB4MDEsIDB4REMsIDB4QTcsIDB4RjAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDAsCisweEU3LCAweDAxLCAweDhDLCAweDBGLCAweEIwLCAweDEzLCAweEM4LCAweDdCLCAweDAwLCAweEYzLCAweDAzLCAweENDLCAweDA3LAorMHgzMCwgMHgxQiwgMHhEMCwgMHg3OCwgMHhBMiwgMHhGQiwgMHgwMywgMHhDQywgMHgwNywgMHhGMCwgMHgxQSwgMHhDMCwgMHgxOCwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDAsIDB4MzksIDB4MDAsCisweEVDLCAweDE4LCAweEI0LCAweDgzLCAweEQwLCAweDBFLCAweDQyLCAweDNCLCAweDI4LCAweEUxLCAweDEwLCAweDk0LCAweDAzLAorMHg1MCwgMHgyMiwgMHg0NCwgMHgzQiwgMHgwNiwgMHhFNSwgMHgwMCwgMHhENCwgMHgwMywgMHg1MCwgMHg0MywgMHg0MCwgMHgyOCwKKzB4MDIsIDB4RTEsIDB4MDQsIDB4ODQsIDB4MTMsIDB4NzEsIDB4NEEsIDB4NDgsIDB4NTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDAyLCAweDM5LCAweDEwLCAweEVELCAweDAwLCAweDk0LCAweDAzLAorMHhDMCwgMHgwNiwgMHg0MCwgMHgzQiwgMHgwNCwgMHhGNSwgMHgwMCwgMHhFNCwgMHg0MywgMHgxMCwgMHgwMiwgMHg0MCwgMHgzRiwKKzB4MDAsIDB4RkQsIDB4MDAsIDB4RDQsIDB4MDEsIDB4NTAsIDB4MEEsIDB4NjEsIDB4MTgsIDB4ODQsIDB4RTEsIDB4QjAsIDB4ODQsCisweDQyLCAweEQyLCAweDBBLCAweDQwLCAweDIwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgyOCwgMHg2NSwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNiwgMHgxMywgMHhEMCwgMHgzOSwgMHg0MCwgMHhGMywKKzB4MDAsIDB4QzUsIDB4MDMsIDB4MzQsIDB4MEIsIDB4NTAsIDB4QTAsIDB4NDAsIDB4RjMsIDB4MDAsIDB4REQsIDB4MDIsIDB4MTQsCisweDJBLCAweDUwLCAweDM4LCAweDYyLCAweDQwLCAweDA0LCAweEM5LCAweDUzLCAweDA1LCAweDA0LCAweDUwLCAweDI4LCAweDQwLAorMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBMCwgMHhFNSwKKzB4MTAsIDB4OUYsIDB4MDEsIDB4NUMsIDB4NDMsIDB4RDAsIDB4QTEsIDB4QzQsIDB4MDcsIDB4MDIsIDB4RjcsIDB4MDEsIDB4RUMsCisweDA3LCAweDMwLCAweEIxLCAweEM4LCAweEI3LCAweDAwLCAweEZGLCAweDAxLCAweDVFLCAweDBFLCAweDEwLCAweDk5LCAweEM0LAorMHg0NCwgMHgwMCwgMHhFQiwgMHgwMCwgMHgwQywgMHg4MSwgMHhGMywgMHgzRCwgMHhDNiwgMHg1NCwgMHgwMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4MjcsIDB4MDYsIDB4OUYsIDB4MDQsIDB4N0MsCisweDAzLCAweEYwLCAweDgxLCAweEMwLCAweEE3LCAweDEwLCAweERBLCAweDAwLCAweDVDLCAweDQzLCAweDc4LCAweDIxLCAweDgwLAorMHgzNywgMHgwQywgMHhENywgMHhCOCwgMHg3OCwgMHgwMCwgMHhGMCwgMHgwOSwgMHhDMCwgMHhBNywgMHg0MCwgMHhENywgMHgwMCwKKzB4N0MsIDB4ODEsIDB4NzAsIDB4QUQsIDB4QzEsIDB4MzcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDgxLCAweDA4LCAweDBGLCAweDAwLCAweDNCLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBCLCAweEMwLAorMHgwRSwgMHgwMCwgMHhGMywgMHgxMCwgMHhDQywgMHgwMywgMHhGMCwgMHgwMywgMHg0MCwgMHgzRSwgMHgwMCwgMHhGMywgMHgwMCwKKzB4RkMsIDB4NDAsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MEMsIDB4MDAsIDB4RjcsIDB4MDAsIDB4RDQsIDB4NTQsIDB4MzAsIDB4MEYsCisweEMwLCAweDA0LCAweDI4LCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLAorMHhDNiwgMHgwMCwgMHgxMSwgMHgwMywgMHg3NCwgMHgwMywgMHhEMCwgMHgxOSwgMHg0MCwgMHg2MCwgMHgwMSwgMHhEQiwgMHgwMCwKKzB4NTQsIDB4MDMsIDB4RDAsIDB4MTEsIDB4NDAsIDB4RDMsIDB4MDAsIDB4REIsIDB4MDAsIDB4NDQsIDB4MEMsIDB4RDAsIDB4MTgsCisweEMwLCAweDgzLCAweDIwLCAweEQxLCAweDAwLCAweDU0LCAweDg5LCAweDUxLCAweDRDLCAweDUwLCAweDg0LCAweDA0LCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHhDNiwgMHgwMCwgMHgxOSwgMHgwMywKKzB4NzQsIDB4MTMsIDB4RDgsIDB4MzEsIDB4NDAsIDB4NjYsIDB4MDAsIDB4QzEsIDB4ODAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MTEsCisweDQwLCAweDY2LCAweDA0LCAweEQxLCAweDAwLCAweDQ0LCAweEM2LCAweDkwLCAweDFCLCAweDQwLCAweDA0LCAweDA2LCAweEY1LAorMHgwMCwgMHg0MCwgMHgwOSwgMHg1MCwgMHg0NSwgMHg0OCwgMHgwNCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4ODMsIDB4RDAsIDB4MDAsCisweDQwLCAweDI0LCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDAzLCAweEQwLCAweDAwLCAweDQwLCAweDI3LCAweDAwLCAweEM5LAorMHgwMCwgMHgwNCwgMHg4MiwgMHhDMiwgMHgxOSwgMHg0MCwgMHgwMiwgMHhBMCwgMHhEMSwgMHg0MCwgMHg1NCwgMHgwMiwgMHg1MCwKKzB4MDQsIDB4NDIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDE4LCAweDA2LCAweDEwLCAweDFCLCAweDAwLCAweDdDLCAweDAzLCAweERBLCAweDAxLCAweEMwLCAweDI2LCAweDAwLCAweEYzLAorMHgwMCwgMHhDNCwgMHgwMywgMHhGMCwgMHgwMSwgMHhDNCwgMHgyNiwgMHgwMCwgMHhGMywgMHgwMCwgMHg1RCwgMHgwMCwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4MDQsIDB4MDAsIDB4RTcsIDB4MDAsIDB4NUMsIDB4MDAsIDB4MzAsIDB4MDksIDB4RDAsIDB4MDQsIDB4NjAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg1LCAweEI4LCAweDJGLCAweDAwLCAweEJGLAorMHgwMCwgMHhGQywgMHgwMywgMHhEMCwgMHgwQiwgMHhDMCwgMHgyQiwgMHgwMCwgMHhGQiwgMHgwMCwgMHhGQywgMHgwMywgMHhFMCwKKzB4MDMsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RUYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjEsIDB4MEIsIDB4QzIsIDB4MEYsIDB4MDAsCisweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBCLCAweEM0LCAweDE3LCAweDYyLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg2RiwgMHgwMCwgMHhCRiwgMHgxMCwgMHhGQywgMHgwNSwgMHgzMCwKKzB4MTYsIDB4QzgsIDB4M0YsIDB4MTAsIDB4RkYsIDB4MTQsIDB4RkMsIDB4MDAsIDB4MzAsIDB4MTcsIDB4QzAsIDB4MkMsIDB4MDAsCisweDYzLCAweDAxLCAweEZDLCAweDBGLCAweDMwLCAweDRCLCAweEMwLCAweDVGLCAweDAwLCAweEYzLCAweDAxLCAweEJDLCAweDAyLAorMHhCMCwgMHgxRiwgMHhDOCwgMHgwRiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4NjcsIDB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4MDUsIDB4MDAsIDB4MTksIDB4NDAsIDB4RkYsIDB4MzAsCisweEZELCAweDAzLCAweDc0LCAweDBELCAweDEwLCAweDFELCAweDQyLCAweEU0LCAweDAwLCAweDk1LCAweDAxLCAweEY0LCAweDEzLAorMHgxMiwgMHgxOSwgMHg0MCwgMHg3NywgMHgwMCwgMHhGMSwgMHg0MSwgMHg3NCwgMHgwMiwgMHg1MCwgMHgxMSwgMHg0MCwgMHgwRiwKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4QTAsIDB4MzMsIDB4MDAsCisweDhELCAweDQwLCAweDc0LCAweDAwLCAweDAwLCAweDA4LCAweDQwLCAweEIzLCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDA4LAorMHgxNCwgMHgwRCwgMHg0OCwgMHhCMCwgMHgxMCwgMHg4NCwgMHgwMCwgMHgzNCwgMHgxMywgMHgxMCwgMHg4QywgMHg0MCwgMHgyMywKKzB4MDAsIDB4QzEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4OTAsIDB4MEMsIDB4NDAsIDB4NEYsIDB4ODAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEE4LCAweDM1LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDEwLAorMHgxOCwgMHgwOSwgMHg0MCwgMHgzNywgMHgyMCwgMHhERCwgMHgwMCwgMHg3NiwgMHgyMywgMHgxMCwgMHgwRCwgMHg0OCwgMHgzMCwKKzB4MDAsIDB4OTEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4MDQsIDB4MjMsIDB4MDAsIDB4RDEsIDB4NDAsIDB4NzQsCisweDA2LCAweDUwLCAweDBELCAweDQyLCAweDBGLCAweEEwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMCwgMHg3NywgMHgwMCwgMHg5RiwgMHgwMSwgMHgzQywgMHgwOSwgMHgzMCwgMHgwRCwgMHhDMiwgMHgzNywKKzB4MDAsIDB4REYsIDB4NjAsIDB4NUMsIDB4MTMsIDB4MzEsIDB4MDgsIDB4QzgsIDB4NjQsIDB4MDIsIDB4RDMsIDB4MDAsIDB4N0MsCisweDAzLCAweDM0LCAweDBELCAweEMwLCAweEQ3LCAweDAwLCAweEQzLCAweDAwLCAweDdDLCAweDE3LCAweEIyLCAweDZELCAweEMwLAorMHgwMywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4OCwgMHgzRCwKKzB4MjEsIDB4OUYsIDB4MDQsIDB4RkMsIDB4NDUsIDB4RjQsIDB4MEIsIDB4QzIsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsCisweDAzLCAweEYwLCAweDJCLCAweEQwLCAweDNGLCAweDQwLCAweEZELCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLAorMHg3RiwgMHgwMSwgMHhGRiwgMHg4MCwgMHhGQywgMHgwMywgMHhGMSwgMHgyMywgMHhDMCwgMHgxRiwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDEsIDB4OUYsIDB4MDAsIDB4NUMsCisweDA5LCAweEI4LCAweDBELCAweEMxLCAweDM0LCAweDAwLCAweERCLCAweDUwLCAweDdDLCAweDAxLCAweEIwLCAweDBELCAweEMwLAorMHgyNywgMHg4MCwgMHg5RSwgMHgwNCwgMHgwQywgMHgwMywgMHhEMCwgMHgwRCwgMHhDNCwgMHhCNywgMHgwOCwgMHhERiwgMHg0MCwKKzB4N0MsIDB4MTMsIDB4MzIsIDB4MEQsIDB4QzIsIDB4MEIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEzLCAweDgwLCAweDM0LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDBELCAweEYwLCAweDI5LCAweDQwLAorMHgzQywgMHgwMCwgMHhGRCwgMHgwMSwgMHgzNCwgMHgwQiwgMHgxMCwgMHgwRCwgMHg0OCwgMHgzNywgMHg4MCwgMHg5RiwgMHgxMiwKKzB4NDQsIDB4MkIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MTEsIDB4MzQsIDB4MDMsIDB4QjAsIDB4MUQsCisweDQxLCAweDZGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDIwLAorMHgzMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgxNCwgMHgwQywgMHhEMCwgMHhCNCwgMHg1MCwgMHg3MCwgMHgwMSwgMHhDRCwgMHgwMiwKKzB4MjAsIDB4MTAsIDB4OTIsIDB4MDAsIDB4NEMsIDB4MjMsIDB4MDAsIDB4NEQsIDB4MDEsIDB4MjQsIDB4MjMsIDB4RDAsIDB4MDgsCisweDQwLCAweDIzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDA4LCAweDFDLCAweDBDLCAweDQwLCAweDBGLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwKKzB4ODQsIDB4NDQsIDB4NTAsIDB4MUIsIDB4NDAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4MzQsIDB4MDYsIDB4MTAsIDB4MUEsCisweDQwLCAweDdCLCAweDAwLCAweEI1LCAweDA5LCAweEE2LCAweDk3LCAweEQwLCAweDFBLCAweDQwLCAweDZCLCAweDAwLCAweEVELAorMHgwMSwgMHhGNCwgMHg4NiwgMHg5MCwgMHgxMiwgMHg0MCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTgsIDB4MzAsIDB4MDQsIDB4Q0YsIDB4MDgsIDB4MUMsIDB4MDAsIDB4REEsIDB4MDgsCisweEM4LCAweDMwLCAweDE0LCAweENCLCAweDEwLCAweDJDLCAweDIwLCAweEIwLCAweDQ4LCAweEMwLCAweDIzLCAweDAyLCAweDhELAorMHgwMCwgMHgyQywgMHgyMywgMHhGMCwgMHg4QywgMHg0MCwgMHhBMywgMHgwMCwgMHhDRiwgMHg4QywgMHgzRSwgMHgwMCwgMHgzMCwKKzB4MEMsIDB4QzAsIDB4NEIsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDM4LCAweDNELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBCLCAweEMwLCAweDNGLCAweDAwLCAweEZGLAorMHgxMiwgMHhGNCwgMHgyMywgMHhGMCwgMHgwQiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhERCwgMHgzNywgMHhGMCwKKzB4MEYsIDB4MDAsIDB4MkYsIDB4MDAsIDB4REYsIDB4MjksIDB4N0UsIDB4MjIsIDB4RjQsIDB4MEYsIDB4QzAsIDB4MEIsIDB4NjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMzLCAweDAwLCAweEQzLAorMHg0OCwgMHg3QywgMHgwMCwgMHg2MCwgMHgwQywgMHhDMCwgMHhCNCwgMHgwNCwgMHhERiwgMHgwNCwgMHg1QywgMHgwMCwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjQsIDB4MDAsIDB4RDcsIDB4MDEsIDB4NkMsIDB4MjcsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAwLCAweEMwLCAweDQwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgzOSwgMHgwMCwgMHhFMSwgMHhDMCwgMHhCNCwgMHgwMCwgMHhEMCwKKzB4MEEsIDB4NDQsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDQsIDB4QjQsIDB4MDIsIDB4RDAsIDB4MEEsIDB4NDAsIDB4MzgsIDB4MDAsCisweEVELCAweDAwLCAweDA0LCAweDEzLCAweDEwLCAweDBFLCAweDQwLCAweDJCLCAweDAwLCAweEVELCAweDA0LCAweEI0LCAweDAyLAorMHg1MCwgMHgwMiwgMHg0MCwgMHg0QywgMHgwOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDIsIDB4NzksIDB4MTAsIDB4RTEsIDB4MDUsIDB4QjQsIDB4NDQsIDB4RDgsIDB4MUYsIDB4NTEsIDB4NzgsIDB4MTMsCisweEU5LCAweDA1LCAweDk0LCAweDI1LCAweEQwLCAweDNBLCAweDQwLCAweEU4LCAweDAyLCAweEFELCAweDAxLCAweEE0LCAweDA3LAorMHg5MCwgMHgxRSwgMHg0MCwgMHg2QiwgMHgwNCwgMHhFRCwgMHgwOSwgMHhGNCwgMHgwQywgMHgxMCwgMHgwMiwgMHg0MCwgMHgxMCwKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MjgsIDB4MzMsIDB4MDAsCisweEMxLCAweDAxLCAweDM0LCAweDE2LCAweEQwLCAweDM4LCAweDQwLCAweDMwLCAweDEwLCAweENELCAweDAwLCAweDM0LCAweDA3LAorMHhEMCwgMHgxOCwgMHg0MSwgMHg3MCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgwNCwgMHgwMywgMHg5MCwgMHg5QywgMHg0MCwgMHg2MywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDYsIDB4NTAsIDB4OEMsIDB4NDAsIDB4NTgsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDIwLCAweDE1LCAweDAwLCAweDQzLCAweDExLCAweEZDLCAweDA1LAorMHhGMCwgMHgzNiwgMHhDMCwgMHgxNCwgMHgyMCwgMHg0RiwgMHgwMCwgMHhEQywgMHgxNSwgMHhGMSwgMHgyNywgMHhENCwgMHgxNCwKKzB4MDAsIDB4NzcsIDB4MUIsIDB4NkMsIDB4MDEsIDB4QjUsIDB4MTUsIDB4QzAsIDB4MUYsIDB4MDAsIDB4NUYsIDB4MDAsIDB4QkMsCisweDAxLCAweDM0LCAweDM3LCAweEM0LCAweDVDLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgwOCwgMHgwNSwgMHg0MiwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgyMSwgMHhDMCwgMHgwNywKKzB4MjAsIDB4MUYsIDB4MDAsIDB4NzAsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDA4LCAweDcxLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDIyLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMxLAorMHg0QiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgyNSwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4NDUsIDB4MDYsIDB4NTAsIDB4MTksIDB4RDEsIDB4MjQsIDB4NDAsIDB4OTMsIDB4MDgsIDB4NUMsCisweDQyLCAweEYwLCAweDA5LCAweDQwLCAweDIyLCAweDQwLCAweDkzLCAweDAyLCAweDdDLCAweDE2LCAweEYwLCAweDI5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5MywgMHg4MiwgMHg3QywgMHgwNiwgMHgzNCwgMHgwOSwgMHhDMCwgMHg0MywgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjAsIDB4MDAsIDB4QjEsIDB4MDMsIDB4NDQsCisweDAyLCAweEQwLCAweDI5LCAweDQwLCAweDIwLCAweDEzLCAweDkxLCAweDQwLCAweEM0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHgyQywgMHgwMCwgMHg5MSwgMHg0MCwgMHhGNCwgMHgwRSwgMHhEMCwgMHgwOSwgMHg0MCwgMHgyMiwgMHgyMCwgMHhCMSwgMHg4MywKKzB4NzQsIDB4MDYsIDB4MTAsIDB4MDksIDB4NDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDQwLCAweDkxLCAweDA4LCAweDU0LCAweDFCLCAweEQwLCAweDY5LCAweDQwLAorMHgyNCwgMHgwMCwgMHg5MSwgMHg1MCwgMHg1MCwgMHgxQSwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHgwMCwKKzB4NzQsIDB4MEEsIDB4RDgsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4NDAsIDB4NzQsIDB4NTIsIDB4MTAsIDB4MDksCisweDQwLCAweDYzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLAorMHgyMSwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwKKzB4MDQsIDB4MDIsIDB4RDAsIDB4MjgsIDB4NDAsIDB4QTAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MEEsIDB4ODAsIDB4MDgsCisweDQwLCAweEE2LCAweDAwLCAweDgxLCAweDAwLCAweDc0LCAweDAyLCAweDE0LCAweDA4LCAweDQwLCAweDQzLCAweDgwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhCOCwgMHgwNywgMHgwMCwgMHg1MywgMHgwMSwKKzB4NUMsIDB4MDAsIDB4NzAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDUsIDB4MTIsIDB4MTQsIDB4NUMsIDB4MDQsIDB4RjAsIDB4MDAsCisweEMwLCAweDQ3LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDA0LCAweEYwLCAweDExLCAweEMwLCAweDA3LCAweDQwLCAweDUzLAorMHg4MSwgMHg3QywgMHgwMCwgMHgzNCwgMHgwMSwgMHhDMCwgMHg3NywgMHhFMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjgsIDB4MkYsIDB4MDAsIDB4QkYsIDB4MDIsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsCisweEMwLCAweDI3LCAweDA4LCAweDlGLCAweDQwLCAweEZDLCAweDBBLCAweEYxLCAweDFCLCAweEMwLCAweEVGLCAweDAwLCAweEVGLAorMHgwMCwgMHg3QywgMHgwRSwgMHhGMCwgMHgyQiwgMHgwMCwgMHg2RSwgMHgyMCwgMHg5RiwgMHg4MiwgMHhCQywgMHg1QSwgMHhFMCwKKzB4MEIsIDB4QzAsIDB4NzcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsCisweEEwLCAweDI5LCAweDAwLCAweEJGLCAweDAxLCAweENDLCAweDAyLCAweDM0LCAweDBCLCAweEQwLCAweDJDLCAweDQwLCAweEEzLAorMHgwMCwgMHhCQywgMHg0NiwgMHhCMCwgMHgwOSwgMHg0MCwgMHg2NywgMHgwMCwgMHhCQiwgMHgwMCwgMHhDNCwgMHgxNiwgMHgyNCwKKzB4NUIsIDB4QzAsIDB4QTcsIDB4MTAsIDB4QjMsIDB4MTUsIDB4Q0QsIDB4NDIsIDB4QjAsIDB4MEIsIDB4QzAsIDB4NzQsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDA3LCAweDAwLCAweDFELAorMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwNSwgMHg0MCwgMHg4NSwgMHgwMiwgMHgxMSwgMHg0MCwgMHg3NCwgMHgwOCwgMHgzMCwKKzB4NTUsIDB4NDEsIDB4QzMsIDB4MDEsIDB4MTEsIDB4MDAsIDB4NTQsIDB4MTQsIDB4MTAsIDB4MDEsIDB4NDAsIDB4NDcsIDB4MDgsCisweDExLCAweDAyLCAweDQ0LCAweDA4LCAweDExLCAweDAxLCAweDQwLCAweDYwLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyMiwgMHgyMSwgMHgwMCwgMHg4RCwgMHgwMiwgMHgxNCwgMHgwMiwgMHg5MCwKKzB4MDgsIDB4NjgsIDB4MjAsIDB4MDAsIDB4ODEsIDB4MDIsIDB4MzQsIDB4MDIsIDB4OTAsIDB4MDgsIDB4NDAsIDB4QTMsIDB4MDQsCisweDk5LCAweDAwLCAweDA0LCAweDRBLCAweDEwLCAweDI4LCAweDQwLCAweDIzLCAweDAwLCAweDgxLCAweDIwLCAweDA0LCAweDUyLAorMHg5MSwgMHgwOSwgMHg0MiwgMHg0OCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4MjgsIDB4MjUsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NjQsIDB4MjQsIDB4MDAsCisweDkwLCAweDAwLCAweDc0LCAweDA2LCAweDEwLCAweDg5LCAweDRDLCAweDI3LCAweDAwLCAweDkxLCAweDAwLCAweDE0LCAweDAyLAorMHgxMCwgMHgwOSwgMHg0MCwgMHgyMywgMHg0MCwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwMiwgMHg5MCwgMHgxOSwgMHg0MCwgMHg2MCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MjAsIDB4NjUsIDB4MDIsCisweDhGLCAweDA5LCAweDVDLCAweDEyLCAweEIwLCAweDE4LCAweDQwLCAweDI0LCAweDAwLCAweDkzLCAweDAwLCAweDdDLCAweDRBLAorMHhCMCwgMHgzQiwgMHhDMCwgMHg2RiwgMHgwMCwgMHg5QiwgMHgwMCwgMHhDQywgMHgwMiwgMHgzMCwgMHgxOSwgMHhDMCwgMHhFRiwKKzB4MDEsIDB4OTMsIDB4ODAsIDB4NEMsIDB4MDIsIDB4QjAsIDB4NDksIDB4RDAsIDB4MTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDZELCAweDEyLAorMHhGMCwgMHg1OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMCwgMHgyMywKKzB4MDEsIDB4OUYsIDB4MDIsIDB4N0MsIDB4MDIsIDB4RjAsIDB4ODksIDB4QzAsIDB4NjcsIDB4MDEsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAyLCAweDcxLCAweDA5LCAweEMwLCAweDVCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwOCwgMHgwNSwgMHgxMCwgMHgxMywgMHgwOCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNSwKKzB4QzEsIDB4MTMsIDB4MDgsIDB4MUMsIDB4MTAsIDB4MzQsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4N0MsCisweDAwLCAweDMwLCAweDAxLCAweEMwLCAweDg3LCAweDAwLCAweDFGLCAweDA4LCAweDdDLCAweDAwLCAweDMxLCAweDAxLCAweEMwLAorMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHhEQywKKzB4MDYsIDB4NzEsIDB4MDAsIDB4QjAsIDB4MUQsIDB4NTAsIDB4MDcsIDB4NDIsIDB4MUIsIDB4ODAsIDB4NzEsIDB4MDEsIDB4QzQsCisweDBELCAweDEwLCAweDA1LCAweDQwLCAweDE3LCAweDAwLCAweDcxLCAweDAyLCAweEY0LCAweDYxLCAweEIwLCAweDA1LCAweDQwLAorMHgxNywgMHgwMCwgMHg2RCwgMHgwMCwgMHhGNCwgMHgwMSwgMHgxMSwgMHgwNCwgMHg0MCwgMHg0MywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4RTIsIDB4MDAsIDB4ODEsIDB4MTAsIDB4MzQsCisweDFFLCAweDE4LCAweDA0LCAweDQwLCAweDIzLCAweDEwLCAweDg1LCAweDUxLCAweDE0LCAweDBELCAweDEwLCAweDBDLCAweDQwLAorMHgzMywgMHgwMCwgMHhEOSwgMHgxMywgMHgzNCwgMHgwNiwgMHgxNCwgMHgxQywgMHg0MCwgMHgzMywgMHgwMCwgMHg4RCwgMHgxMCwKKzB4NzQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NDMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDgyLCAweDdDLCAweDAwLCAweEExLCAweDAwLCAweEY0LCAweDAzLCAweDUwLCAweDA2LCAweDQwLAorMHgzMywgMHgwMCwgMHhBNSwgMHgwMSwgMHg4NCwgMHgwOSwgMHgxMSwgMHg0RSwgMHg0MCwgMHgzQiwgMHgwMywgMHhFMSwgMHgwMiwKKzB4QjQsIDB4MzMsIDB4OTAsIDB4MEUsIDB4NjEsIDB4M0IsIDB4MDksIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDIsIDB4MTAsIDB4MEUsCisweDQwLCAweDEzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LAorMHg2OCwgMHgwMCwgMHhBMywgMHgwMSwgMHhCQywgMHgwNiwgMHgzMCwgMHgxNiwgMHhDMCwgMHg2QiwgMHgwMCwgMHhFNSwgMHgwMSwKKzB4OUMsIDB4MDUsIDB4MzAsIDB4M0UsIDB4QzAsIDB4N0IsIDB4MDAsIDB4RUIsIDB4MDEsIDB4QkMsIDB4MDcsIDB4MzAsIDB4MUUsCisweEMwLCAweEZCLCAweDAwLCAweEFGLCAweDAxLCAweDNDLCAweDAxLCAweDMwLCAweDFBLCAweEMwLCAweDUzLCAweDYwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhCOCwgMHgzNSwgMHg0MCwgMHg5RCwgMHgwMCwKKzB4M0MsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REIsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsCisweEMwLCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDNDLCAweDAzLCAweDcwLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg0MywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjgsIDB4NkQsIDB4MDAsIDB4QkIsIDB4MjEsIDB4RkMsIDB4MDYsIDB4RjAsIDB4MTcsCisweEMwLCAweDZGLCAweDAwLCAweEIzLCAweDAxLCAweERFLCAweDA3LCAweDMxLCAweDlFLCAweEM4LCAweDdDLCAweDAwLCAweEFFLAorMHgwMSwgMHhFQywgMHgwNywgMHhGOCwgMHg5RiwgMHhDMCwgMHg3OCwgMHgwMCwgMHhCMywgMHg0MSwgMHhDQywgMHgwNiwgMHgzMCwKKzB4MUIsIDB4QzAsIDB4MTgsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweDEwLCAweDI5LCAweDAwLCAweEFELCAweDA4LCAweEI0LCAweDAzLCAweEQwLCAweDA2LCAweDQwLCAweDNCLCAweDA4LCAweEExLAorMHgwMCwgMHg4NCwgMHgxMywgMHhCMCwgMHgwRSwgMHg0MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwMiwgMHg4NCwgMHgwMywgMHhEMCwKKzB4MEUsIDB4QzAsIDB4M0EsIDB4MDIsIDB4QTEsIDB4MDAsIDB4OTQsIDB4MDIsIDB4QjAsIDB4MEUsIDB4NDQsIDB4NTQsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDAwLCAweDI5LCAweDAwLCAweEFELAorMHgwMCwgMHhCNCwgMHgwMiwgMHhEMCwgMHgwNiwgMHg0MCwgMHgyMywgMHgwMCwgMHhBMSwgMHgwMCwgMHhENCwgMHgwMSwgMHgxMSwKKzB4MUYsIDB4MDAsIDB4NzgsIDB4MDAsIDB4RUQsIDB4MDAsIDB4QTQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDQsIDB4N0MsIDB4MDAsCisweDgxLCAweDAwLCAweDg0LCAweDAxLCAweDUwLCAweDBCLCAweDQwLCAweDIwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyMCwgMHgyMSwgMHgwMCwgMHg4RCwgMHgwMSwgMHgzNCwgMHg0MSwgMHhEMCwKKzB4MDQsIDB4NDAsIDB4MDMsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4MzMsIDB4OTAsIDB4MkMsIDB4NDEsIDB4MzAsIDB4MjAsCisweENELCAweDBDLCAweDA0LCAweDAxLCAweEQwLCAweDBDLCAweDQwLCAweDMyLCAweDA0LCAweEMxLCAweDAwLCAweDU0LCAweDAzLAorMHhEMCwgMHgzQywgMHg0MCwgMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUQsIDB4QTgsIDB4MjUsIDB4MTAsIDB4REYsIDB4MTEsIDB4N0MsIDB4OEEsIDB4RjAsIDB4OEQsIDB4QzEsIDB4MjcsIDB4MDAsCisweDkzLCAweDAwLCAweDVDLCAweDA1LCAweDMxLCAweDBELCAweEQwLCAweDM0LCAweDAxLCAweDRGLCAweDAyLCAweDZDLCAweDAxLAorMHhGMSwgMHgwQywgMHhDMCwgMHhCNCwgMHg0MCwgMHg5MywgMHgwMCwgMHg0QywgMHhBQSwgMHg3MCwgMHgyOSwgMHhDMCwgMHg3NCwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MzcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDI1LCAweEMwLCAweDM3LCAweDAwLCAweDhGLCAweDAwLCAweDdFLCAweDAxLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwMCwgMHhERiwgMHg4MCwgMHg3QywgMHgwOSwgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDgsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4QjAsIDB4ODksIDB4QzAsIDB4MTcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDA4LCAweDZGLCAweDAwLCAweEFGLCAweDAwLCAweERDLCAweDAyLAorMHgzNCwgMHgxRiwgMHgwMCwgMHg2RiwgMHgwMCwgMHhERiwgMHgwMCwgMHhFQywgMHg4OSwgMHhGMSwgMHgwRiwgMHhDMCwgMHgzRiwKKzB4MDAsIDB4N0YsIDB4MDAsIDB4Q0MsIDB4MDEsIDB4NzAsIDB4NEQsIDB4RDAsIDB4M0MsIDB4MDAsIDB4QkYsIDB4MDAsIDB4Q0QsCisweDAwLCAweDM0LCAweDBCLCAweEMxLCAweDA3LCAweDI2LCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhBMSwgMHgyMCwgMHgzNiwgMHgxMCwgMHg5RCwgMHgwMywgMHgwNCwgMHgwMiwgMHgxMCwgMHg4OSwgMHg0MywgMHgzNywKKzB4MDAsIDB4REQsIDB4MDAsIDB4NDQsIDB4MDUsIDB4RDAsIDB4MEQsIDB4NDAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MDMsIDB4NDQsCisweDE5LCAweDEwLCAweDBELCAweDQyLCAweDM0LCAweDAwLCAweENELCAweDAyLCAweDQ0LCAweDA2LCAweDEwLCAweDE5LCAweDQwLAorMHgyNywgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhBMCwgMHhBNiwKKzB4MDEsIDB4REQsIDB4MDYsIDB4NTQsIDB4MDIsIDB4MTAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDEsIDB4OUQsIDB4MDAsIDB4NjAsCisweDAzLCAweEQwLCAweDBELCAweDQ0LCAweDM3LCAweDAwLCAweERELCAweDAxLCAweDA0LCAweDg1LCAweDUwLCAweDBELCAweDQwLAorMHgzNCwgMHgxMCwgMHg5RCwgMHg1MCwgMHg0NCwgMHgwNiwgMHgxMCwgMHg0OSwgMHg0MCwgMHgwNywgMHgwMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsCisweDAzLCAweDEwLCAweDA0LCAweDQwLCAweDMzLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDAzLCAweEQwLCAweDBDLCAweDQwLAorMHgzMywgMHg4MCwgMHhERCwgMHhBMCwgMHgwNCwgMHgwMywgMHgxMCwgMHgwQywgMHg0MCwgMHgzMCwgMHgwMCwgMHg4RCwgMHhDMCwKKzB4NDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDQsIDB4NDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweDE4LCAweDI2LCAweDAwLCAweDVGLCAweDAwLCAweDVDLCAweDAyLCAweDMwLCAweDBELCAweEMwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhERiwgMHgwMCwKKzB4NEMsIDB4MDEsIDB4NzAsIDB4MDksIDB4ODAsIDB4M0MsIDB4MDAsIDB4MUYsIDB4MDAsIDB4NEMsIDB4MDAsIDB4MzAsIDB4MDksCisweEMwLCAweDA3LCAweDYwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEI4LAorMHgxRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwQiwgMHhDMCwgMHgxRiwgMHgwMCwgMHg3RiwgMHgwMCwKKzB4QkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkQsIDB4MDEsIDB4RDAsIDB4MEIsCisweEMwLCAweDNGLCAweDAwLCAweDdGLCAweDAwLCAweEJDLCAweDAyLCAweEYwLCAweDBBLCAweEM0LCAweDE3LCAweDYyLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg3RiwgMHgwMCwgMHhCMywgMHgwQywKKzB4REMsIDB4MDAsIDB4MzAsIDB4NEYsIDB4QzAsIDB4M0MsIDB4MDEsIDB4RjMsIDB4MTgsIDB4RkMsIDB4MzIsIDB4NzAsIDB4MTcsCisweEMwLCAweDdGLCAweDAwLCAweDVCLCAweDAxLCAweDhDLCAweDA2LCAweDMyLCAweDFBLCAweEMyLCAweDdFLCAweDAwLCAweDNCLAorMHgwOCwgMHhDRCwgMHgwMCwgMHhCMCwgMHgwMywgMHhDMiwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MzcsIDB4MDEsIDB4OTEsIDB4OEUsIDB4NDQsIDB4MjcsIDB4MTAsIDB4M0YsCisweDQwLCAweEJDLCAweDQwLCAweEY1LCAweDI2LCAweDc0LCAweDM4LCAweDEwLCAweDA1LCAweDQ0LCAweDc3LCAweDAwLCAweDUzLAorMHgwMSwgMHg1NCwgMHgwNSwgMHg1MiwgMHgxOSwgMHg0MCwgMHg1NSwgMHgwMCwgMHgxMSwgMHgwNiwgMHg0NCwgMHg4MiwgMHgxMCwKKzB4MDEsIDB4QzAsIDB4MEUsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsCisweEEwLCAweDMzLCAweDA0LCAweDgxLCAweDAwLCAweDU0LCAweDAzLCAweDEwLCAweDJDLCAweDQ0LCAweEIyLCAweDA1LCAweEMxLAorMHgwMCwgMHgzNCwgMHgwMiwgMHg1MCwgMHg0NCwgMHg0MSwgMHgzMSwgMHgwMCwgMHg0RCwgMHgwMCwgMHg1NCwgMHgwMywgMHgxMCwKKzB4MDgsIDB4NDAsIDB4MjIsIDB4MDAsIDB4ODksIDB4MDIsIDB4MDQsIDB4MjEsIDB4RDAsIDB4MTAsIDB4NDIsIDB4NEYsIDB4ODAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDMxLCAweDAwLCAweDkxLAorMHgwMSwgMHg0NCwgMHgwNywgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHg4NCwgMHgxMCwKKzB4MDUsIDB4NDEsIDB4MzcsIDB4MDEsIDB4NTEsIDB4MDEsIDB4NTQsIDB4MDksIDB4NTAsIDB4MUQsIDB4MDAsIDB4MzUsIDB4MDAsCisweDExLCAweDAyLCAweDQ0LCAweDgzLCAweDUxLCAweDExLCAweDQwLCAweDBGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4OCwgMHgzNiwgMHgwMCwgMHgxMywgMHgwNywgMHgxMCwgMHgxNywgMHgzMCwKKzB4MEQsIDB4QzAsIDB4MzYsIDB4MDgsIDB4RDMsIDB4NDAsIDB4N0MsIDB4NDQsIDB4NTAsIDB4QjEsIDB4RTAsIDB4MzUsIDB4MjAsCisweDVCLCAweDA3LCAweDVDLCAweDBCLCAweDMwLCAweDE4LCAweDgwLCAweDM2LCAweDAwLCAweDFCLCAweDAyLCAweDRDLCAweDI4LAorMHhGNCwgMHgxOSwgMHhDMCwgMHgyQiwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MEYsIDB4ODAsIDB4M0QsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjQsIDB4MEYsIDB4QzAsIDB4MzksIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDQwLCAweEYwLCAweDEzLCAweEMwLCAweDdGLCAweDAwLCAweDc5LCAweDEwLCAweEZDLCAweDEzLAorMHhFMCwgMHgwRiwgMHhDMCwgMHgxRiwgMHgwMCwgMHg1RiwgMHgwMiwgMHhCQywgMHgwNCwgMHhCMCwgMHgwMiwgMHhDMCwgMHgxRSwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MzUsIDB4MDAsCisweDFGLCAweDA0LCAweDRDLCAweDAzLCAweDcwLCAweDBDLCAweEUxLCAweDM1LCAweDA0LCAweEQ3LCAweDA4LCAweDRDLCAweDAyLAorMHg3MCwgMHgyNSwgMHhDMCwgMHgzNywgMHgwMCwgMHg1NywgMHgwMiwgMHg1QywgMHgwQiwgMHhCMCwgMHg0OSwgMHhDMCwgMHgzNCwKKzB4MDAsIDB4NUIsIDB4MDAsIDB4NEMsIDB4NDksIDB4MzQsIDB4MDksIDB4QzAsIDB4MkIsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFCLCAweEEwLCAweDM0LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAzLAorMHgxMSwgMHgxRiwgMHhDNCwgMHhGQywgMHgwNCwgMHhGMSwgMHgwMCwgMHg0NCwgMHgxMCwgMHgxMCwgMHgwNSwgMHg0MCwgMHg3MCwKKzB4MDAsIDB4NEIsIDB4NDEsIDB4NjgsIDB4MkYsIDB4QjAsIDB4MkQsIDB4NDAsIDB4QjAsIDB4MDEsIDB4NTEsIDB4MDAsIDB4NDQsCisweDg5LCAweDAwLCAweDE5LCAweDQwLCAweDRGLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHgyMCwgMHgzMiwgMHgwMCwgMHgxRCwgMHgwMCwgMHgzNCwgMHg4MywgMHg1MCwgMHgxQywgMHg0MCwgMHg3MywKKzB4ODAsIDB4QzEsIDB4MjYsIDB4NjQsIDB4MEUsIDB4MTAsIDB4MDAsIDB4NDgsIDB4MzEsIDB4MDAsIDB4QzUsIDB4MDMsIDB4NzAsCisweDBGLCAweDkwLCAweDAwLCAweDQ4LCAweDMxLCAweDIxLCAweDU5LCAweDBGLCAweDA0LCAweDI0LCAweDEwLCAweDA4LCAweDYwLAorMHgwRiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRCwgMHgwMCwgMHg3QSwKKzB4ODAsIDB4NkQsIDB4NTEsIDB4OTUsIDB4NDcsIDB4MTAsIDB4OUUsIDB4NDEsIDB4NzAsIDB4ODAsIDB4RTEsIDB4ODEsIDB4QTYsCisweDA3LCAweDE0LCAweDEyLCAweDAwLCAweDc4LCAweDAwLCAweDY5LCAweDA1LCAweEI0LCAweDQ3LCAweDk5LCAweERBLCAweDQwLAorMHg1RCwgMHgwMCwgMHhBMSwgMHg0OSwgMHgwNCwgMHgyNiwgMHgxMCwgMHgzMiwgMHg0MSwgMHgzNywgMHgyMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTAsIDB4MzIsIDB4MDAsIDB4Q0YsIDB4MjAsIDB4MUMsCisweDAzLCAweDUwLCAweDhDLCAweDQwLCAweDMzLCAweDAwLCAweEMxLCAweDAwLCAweDJDLCAweDEzLCAweDMwLCAweDQxLCAweEMwLAorMHgzMywgMHgyNCwgMHg0NywgMHgxNSwgMHgzQywgMHgwMywgMHhCMCwgMHg1QywgMHhDOCwgMHgyMSwgMHgwOCwgMHg4QiwgMHgwNSwKKzB4MEQsIDB4MDgsIDB4MzAsIDB4MEMsIDB4QzAsIDB4NEIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDNELCAweDIwLCAweEZGLCAweDAwLCAweEU4LCAweDAzLCAweEYwLCAweEFFLCAweEMwLAorMHgzRiwgMHg0MCwgMHhGQiwgMHgwMCwgMHhERCwgMHgwMywgMHhGMSwgMHgwMywgMHhDMCwgMHgzQiwgMHgwMCwgMHg0NSwgMHg4MCwKKzB4RUMsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzAsIDB4M0EsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjQsIDB4OEYsCisweEMwLCAweDBCLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLAorMHg3NywgMHgyMCwgMHg1MywgMHgyMCwgMHg3RSwgMHg4MywgMHhGMCwgMHhDRCwgMHhDMCwgMHgzNCwgMHgxMSwgMHhERiwgMHg0NCwKKzB4NUMsIDB4MDEsIDB4RjAsIDB4MTEsIDB4QzAsIDB4MzIsIDB4MDAsIDB4MUIsIDB4MDAsIDB4MUMsIDB4MDMsIDB4NzAsIDB4MEQsCisweEMyLCAweDM2LCAweDAwLCAweERGLCAweDAwLCAweDRELCAweDAzLCAweDMwLCAweDBELCAweEMyLCAweDQwLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg5OCwgMHgzRCwgMHgwMCwgMHg2MSwgMHgwMCwKKzB4QjQsIDB4ODMsIDB4MTQsIDB4MEUsIDB4NDAsIDB4QjgsIDB4MDUsIDB4RkQsIDB4MTYsIDB4ODQsIDB4MDMsIDB4RDAsIDB4MDIsCisweDQwLCAweDM4LCAweDgwLCAweDI3LCAweDQwLCAweDg0LCAweDAzLCAweDExLCAweDBFLCAweDQwLCAweDE4LCAweDAwLCAweEVELAorMHgwMCwgMHg4NSwgMHgwMywgMHgxMCwgMHgwNywgMHg0MCwgMHg0QywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzksIDB4MDAsIDB4RTEsIDB4MDEsIDB4RjYsIDB4ODcsIDB4RDIsIDB4NEUsCisweDQwLCAweDdCLCAweDAwLCAweEVELCAweDAxLCAweDk0LCAweDA3LCAweEQwLCAweDMzLCAweDQwLCAweDdCLCAweDAwLCAweDMxLAorMHgwMSwgMHg5NCwgMHgwNywgMHg1OCwgMHgxRiwgMHg0MSwgMHg3QSwgMHgwMCwgMHhFRCwgMHgwMSwgMHgwNCwgMHgwNywgMHg1NCwKKzB4MUUsIDB4NDAsIDB4MTAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDIwLCAweDMzLCAweDAwLCAweEMxLCAweDQzLCAweDM2LCAweDAzLCAweDEwLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweERELAorMHgwMCwgMHg0NCwgMHgxRiwgMHhEMCwgMHg0OCwgMHg2MCwgMHgyMSwgMHgwMiwgMHgwNSwgMHgwMSwgMHgwNiwgMHgwRiwgMHgxMCwKKzB4M0MsIDB4NDAsIDB4NzIsIDB4MDAsIDB4Q0QsIDB4MTksIDB4MDQsIDB4MjMsIDB4NTAsIDB4MkQsIDB4NDAsIDB4NTgsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LCAweDE3LCAweDAwLCAweDcxLAorMHgwNSwgMHhGQywgMHg0OSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNiwgMHgwMCwgMHg1RiwgMHgwMCwgMHhEQywgMHgwRCwgMHhGMCwKKzB4MTcsIDB4QzAsIDB4MTcsIDB4MDAsIDB4NjMsIDB4MDIsIDB4OUMsIDB4NkQsIDB4NzAsIDB4MjcsIDB4RTAsIDB4MUUsIDB4MDksCisweDdGLCAweDAyLCAweENDLCAweDI1LCAweDcwLCAweDg3LCAweEMwLCAweDVDLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgwNSwgMHg0MCwgMHgxRiwgMHgzMCwgMHg3QywgMHgxMCwgMHg3NCwKKzB4MDEsIDB4QzAsIDB4ODcsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0UsIDB4MjgsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDYsIDB4MDgsCisweDE3LCAweDU4LCAweDdDLCAweDAwLCAweEYwLCAweDYxLCAweEMwLCAweDg1LCAweDAwLCAweDFFLCAweDgyLCAweDNDLCAweDAwLAorMHg5MCwgMHgyMSwgMHhEMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MTksIDB4QzAsIDB4NjcsIDB4MDEsCisweDlGLCAweDAxLCAweDY4LCAweDA2LCAweDMyLCAweDA5LCAweEMyLCAweDI3LCAweDAwLCAweDkyLCAweDIwLCAweDVDLCAweDA2LAorMHg3MCwgMHgxOSwgMHhEMCwgMHgyNCwgMHgwMCwgMHg4QSwgMHgwNSwgMHg0NCwgMHgwMiwgMHg3MCwgMHgwOSwgMHhDMiwgMHg0MCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjAsIDB4MjYsIDB4MDAsCisweDlELCAweDExLCAweDM0LCAweDAyLCAweDEwLCAweDU5LCAweDQwLCAweEU3LCAweDAwLCAweDlELCAweDhCLCAweDQ0LCAweDA2LAorMHgxMCwgMHgwOSwgMHg0MCwgMHgyMywgMHgwMCwgMHg5MSwgMHgwOCwgMHg0NCwgMHg4QSwgMHgxMCwgMHg4OCwgMHg0MCwgMHhFNCwKKzB4MjAsIDB4OUQsIDB4MDcsIDB4NDQsIDB4MEEsIDB4NTAsIDB4MjksIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweEEwLCAweDI0LCAweDAwLCAweDlELCAweDA4LCAweDc0LCAweDEyLAorMHg1MCwgMHg4OSwgMHg0MiwgMHgyNywgMHgwNCwgMHg5RCwgMHgwMCwgMHg3NCwgMHg1MiwgMHg1MCwgMHgwOSwgMHg0OCwgMHgyNywKKzB4NDAsIDB4OUQsIDB4OTAsIDB4NTQsIDB4QTIsIDB4NTMsIDB4MEQsIDB4NjEsIDB4NjQsIDB4MDAsIDB4OTgsIDB4MDAsIDB4NTQsCisweDJBLCAweDUxLCAweDM5LCAweDQwLCAweDcwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgyOCwgMHgyMCwgMHgwMCwgMHg4RCwgMHgxNCwgMHg3NCwgMHg1MiwgMHgxNSwgMHg0OCwgMHg0MSwgMHgyMywKKzB4MjUsIDB4Q0QsIDB4MTQsIDB4MTQsIDB4NTIsIDB4NTAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OTUsIDB4MDAsIDB4MDQsCisweDAyLCAweDExLCAweDA4LCAweDYwLCAweDIwLCAweDAwLCAweDhELCAweDA4LCAweDE0LCAweDAyLCAweDUwLCAweDQ4LCAweDUxLAorMHg1MCwgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHgzMCwgMHgwNiwKKzB4MDAsIDB4MUYsIDB4MDQsIDB4N0MsIDB4MTAsIDB4NzAsIDB4NDEsIDB4QzgsIDB4MDcsIDB4MDEsIDB4MUYsIDB4MDQsIDB4N0MsCisweDEwLCAweDcwLCAweDAxLCAweEM4LCAweDA3LCAweDA4LCAweDE3LCAweDAwLCAweDU4LCAweDAxLCAweDcyLCAweDAxLCAweEQwLAorMHgxNCwgMHgwMCwgMHgwQiwgMHgxNiwgMHg1QywgMHg1MCwgMHg3MCwgMHg0MSwgMHhDMCwgMHg3NCwgMHhDMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QTgsIDB4MjUsIDB4MDUsIDB4QkYsIDB4MzQsIDB4QkMsCisweDAyLCAweEY2LCAweDA4LCAweEMwLCAweDI3LCAweDA1LCAweDlGLCAweDE0LCAweEU0LCAweDUyLCAweEI0LCAweDRBLCAweEMxLAorMHgyRiwgMHgxMCwgMHhBQiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwQSwgMHhDMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwNCwKKzB4RUQsIDB4NTIsIDB4RjAsIDB4NEIsIDB4QzEsIDB4NjcsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI3LCAweDAwLCAweEJGLCAweDExLCAweEJDLCAweDAyLCAweEM0LCAweDBCLCAweEMwLAorMHg2RSwgMHgwMSwgMHhCRiwgMHg1NCwgMHhGQywgMHgzMiwgMHhGMCwgMHgwOSwgMHhDOCwgMHgyOSwgMHg5MCwgMHhCMywgMHgwMCwKKzB4QUQsIDB4MDIsIDB4QjAsIDB4MEIsIDB4QzAsIDB4MkMsIDB4MDAsIDB4QjcsIDB4MDAsIDB4Q0MsIDB4MTIsIDB4MzYsIDB4MEYsCisweEMwLCAweDYzLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFDLCAweDE4LAorMHg0NywgMHgwNSwgMHgxRCwgMHg4NywgMHg3NCwgMHgwMCwgMHgxMCwgMHg4MSwgMHg0MCwgMHgwNywgMHgwNSwgMHgxRCwgMHgwNCwKKzB4N0MsIDB4MzAsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MDcsIDB4ODAsIDB4NTUsIDB4NDAsIDB4NDQsIDB4MDAsIDB4MTIsIDB4MDUsCisweDU0LCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ1LCAweDI4LCAweDU0LCAweDAxLCAweDQwLCAweDczLCAweDYwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHhBMCwgMHgyMSwgMHgwMCwgMHhDRCwgMHgxMCwKKzB4NzQsIDB4MjcsIDB4QzAsIDB4MEMsIDB4NDAsIDB4QTMsIDB4MDAsIDB4OEQsIDB4MTQsIDB4MzQsIDB4MTMsIDB4RDIsIDB4MDgsCisweDQwLCAweDI3LCAweDAwLCAweDgxLCAweDAwLCAweDI0LCAweDAzLCAweDkwLCAweDA5LCAweDQwLCAweDI0LCAweDAwLCAweDg1LAorMHg4MCwgMHgwNCwgMHgwMiwgMHgxOCwgMHgwOCwgMHg0MCwgMHg0QiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MjAsIDB4MjUsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NzYsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDc0LCAweDAyLCAweEMyLCAweDA5LCAweDQ4LCAweDI3LCAweDAxLCAweDk1LAorMHgwMCwgMHg0NCwgMHgyMiwgMHgxMCwgMHgwOSwgMHg0NCwgMHhBNCwgMHgwMiwgMHg5MSwgMHgwMCwgMHg0NCwgMHgyMiwgMHg1MCwKKzB4MDksIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweEE4LCAweDI3LCAweDAwLCAweDlELCAweDAxLCAweDNDLCAweDBBLCAweEYwLCAweDA5LCAweEMwLCAweDI2LCAweDA4LCAweDlGLAorMHg0MCwgMHg3QSwgMHg0MiwgMHhGMCwgMHhCOSwgMHhDMCwgMHgyMSwgMHg4MCwgMHg5MSwgMHgwMCwgMHgyQywgMHgwMiwgMHhCMCwKKzB4MTksIDB4QzAsIDB4NjQsIDB4MDAsIDB4OTcsIDB4MDQsIDB4NEMsIDB4MDIsIDB4MzAsIDB4NDksIDB4QzAsIDB4MTcsIDB4MjgsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweDI1LCAweDIwLCAweDlGLAorMHgwNCwgMHg3QywgMHgxNiwgMHhGNCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwQywgMHg5RiwgMHgyMCwgMHg1RSwgMHg1MiwgMHhGMCwKKzB4MTksIDB4QzAsIDB4MjcsIDB4MjAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4ODksIDB4QzEsIDB4MjcsIDB4MDAsCisweDlGLCAweDUzLCAweDdDLCAweDAyLCAweEYwLCAweDQ5LCAweEMxLCAweDRCLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwNSwgMHgwMCwgMHgxRiwgMHg0MiwgMHg3QywgMHgwMCwgMHg3MCwKKzB4MTEsIDB4Q0MsIDB4MDcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDEyLCAweDMwLCAweDRDLCAweDQwLCAweDcwLCAweDAxLCAweEMwLCAweDg1LCAweDA5LCAweDBGLCAweDhBLCAweDVDLCAweDAwLAorMHgzNCwgMHgyMSwgMHhDMCwgMHg0MCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4QTAsIDB4MTQsIDB4MDAsIDB4N0QsIDB4MEEsIDB4NzQsIDB4MDEsIDB4MTAsIDB4MDcsIDB4NDAsIDB4OUYsIDB4MDAsCisweDcxLCAweDgwLCAweEM0LCAweDAxLCAweEQwLCAweDA1LCAweEMwLCAweDlGLCAweDAwLCAweDYxLCAweDQxLCAweEM1LCAweDA5LAorMHgxMCwgMHgwNiwgMHg0MiwgMHg1OCwgMHgwOCwgMHg3RCwgMHgyMSwgMHhDNCwgMHgwOSwgMHgxMCwgMHgwNywgMHg0MCwgMHg1MCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4MzIsIDB4MDAsCisweENELCAweDAwLCAweDM0LCAweDAyLCAweEQwLCAweDAwLCAweDQ4LCAweDczLCAweDgwLCAweEM5LCAweDExLCAweDE0LCAweDAzLAorMHhEMCwgMHgwQywgMHg0MCwgMHhCMywgMHgwNiwgMHhDMSwgMHg4OCwgMHgwNCwgMHgwMywgMHg1MSwgMHgyQywgMHg0MCwgMHgzMSwKKzB4MDIsIDB4Q0QsIDB4MDEsIDB4NTQsIDB4NDMsIDB4OTAsIDB4MkMsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg4LCAweDM4LCAweDAxLCAweEVELCAweDgwLCAweEY0LCAweDAzLAorMHgxNCwgMHgwMiwgMHg0MCwgMHhGQiwgMHgwMCwgMHhFMSwgMHgwMywgMHg5NCwgMHgwMywgMHhEMCwgMHg4RSwgMHg2NCwgMHgyQiwKKzB4NDAsIDB4RjEsIDB4MDAsIDB4ODQsIDB4MDMsIDB4MTAsIDB4MEUsIDB4NDQsIDB4MTgsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QzQsCisweDAzLCAweDkxLCAweDFDLCAweDQwLCAweDA3LCAweDIwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMSwgMHgxMCwgMHg3OCwgMHgwMCwgMHhFRiwgMHg4MSwgMHhCNCwgMHgwNywgMHg3MCwgMHgxMiwgMHhDQSwgMHg3RiwKKzB4MDAsIDB4NEIsIDB4MDEsIDB4OUQsIDB4MDUsIDB4RjIsIDB4MUUsIDB4QzgsIDB4N0IsIDB4ODAsIDB4NjIsIDB4MDEsIDB4OEMsCisweDA3LCAweDcwLCAweDFFLCAweEU4LCAweDY5LCAweDIwLCAweEZGLCAweDAxLCAweERDLCAweDg1LCAweEIwLCAweDFFLCAweEQwLAorMHg0NywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBOCwgMHhCNSwKKzB4MEEsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MTcsIDB4MDAsIDB4REYsIDB4MDAsIDB4NkMsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDI1LCAweDAwLCAweENGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBDLCAweDQwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMCwgMHg3MCwgMHgwOSwgMHhDMiwgMHg0MCwgMHgwMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4RkQsIDB4MDAsIDB4RkYsIDB4MDEsIDB4Q0MsCisweDg3LCAweEIwLCAweDE3LCAweDgwLCAweDVGLCAweDAwLCAweEZGLCAweDQxLCAweEZDLCAweDA3LCAweEY5LCAweDlFLCAweEMwLAorMHg1OCwgMHgwMCwgMHg3MywgMHg4MSwgMHg4QywgMHg4NiwgMHhCMCwgMHg5RSwgMHhDMCwgMHg3RCwgMHgwOCwgMHhERiwgMHgwMSwKKzB4RkMsIDB4MDcsIDB4MzQsIDB4MTcsIDB4QzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE1LCAweDE4LCAweDM5LCAweDAwLCAweDdELCAweDA4LCAweDg0LCAweDIzLCAweDEwLCAweDgyLCAweDQwLAorMHgxQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMSwgMHhEMCwgMHgwRSwgMHg2MiwgMHgxOCwgMHgwMSwgMHg2QiwgMHgwNCwKKzB4ODQsIDB4MjIsIDB4MTAsIDB4MUMsIDB4QzAsIDB4MkEsIDB4MDQsIDB4OEQsIDB4MEQsIDB4QjQsIDB4MjksIDB4QjQsIDB4MDcsCisweDQwLCAweDU0LCAweDYwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgzOSwgMHgwMCwgMHhFRCwgMHgwMCwgMHhDNCwgMHgwMywgMHg5MCwgMHgwMiwgMHg0MCwgMHgzQiwgMHgwMCwgMHg2RCwgMHgwMCwKKzB4QjQsIDB4MDEsIDB4RDAsIDB4MEYsIDB4NUEsIDB4MTgsIDB4MjAsIDB4NzEsIDB4MDAsIDB4RjQsIDB4NDMsIDB4RDAsIDB4NEYsCisweDQwLCAweDJCLCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAxLCAweDkwLCAweDBFLCAweDQwLCAweDAwLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyMCwgMHgzMSwgMHg4MCwgMHg4RCwgMHgyMiwKKzB4MDQsIDB4MEIsIDB4MTksIDB4MDgsIDB4NDAsIDB4MDcsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDgsIDB4RDEsIDB4MkMsCisweDQwLCAweDUwLCAweDAwLCAweDQ5LCAweDAwLCAweDM0LCAweDRBLCAweDUxLCAweDNDLCAweDQwLCAweEUzLCAweDA0LCAweDBELAorMHgxMCwgMHgzNCwgMHgwMCwgMHg5MCwgMHgyOCwgMHg1MSwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4M0QsIDB4MTAsIDB4MUYsIDB4MDEsIDB4NEMsIDB4MEIsIDB4QjAsIDB4MDEsCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDFBLCAweEYwLCAweDJGLCAweEMwLCAweDMwLCAweDA0LCAweEMxLAorMHgyMCwgMHg3QywgMHg4MCwgMHhGMCwgMHgwQywgMHhDQywgMHhBMywgMHgwMCwgMHg1RCwgMHgyMCwgMHg3QywgMHgwQSwgMHg5MCwKKzB4MjksIDB4NDgsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDAwLCAweDM3LCAweDI4LCAweDlGLCAweDBDLCAweDdELCAweDIzLCAweEYwLCAweDAxLCAweEMwLCAweDI3LCAweDAwLCAweDFGLAorMHgwMiwgMHg3QywgMHg0QSwgMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHhDMCwgMHhENywgMHg1MCwgMHg0OSwgMHgwQSwgMHhBMCwKKzB4Q0QsIDB4MDAsIDB4QTYsIDB4MDAsIDB4MEYsIDB4MDgsIDB4NzgsIDB4MTIsIDB4NzQsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDA4LCAweDNGLCAweDEwLCAweDJGLAorMHgwMCwgMHhFQywgMHg0NywgMHhCMCwgMHgwMiwgMHhEMCwgMHgyQywgMHgwMCwgMHgzMywgMHgwMCwgMHhCQywgMHg4MCwgMHhCMCwKKzB4MEYsIDB4QzMsIDB4M0YsIDB4MDAsIDB4N0YsIDB4QzAsIDB4RUMsIDB4ODAsIDB4NzEsIDB4MEIsIDB4QzAsIDB4MkUsIDB4MDgsCisweDczLCAweDAwLCAweDBELCAweDAyLCAweDE0LCAweDBBLCAweEQwLCAweDExLCAweDIyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwgMHgyMCwgMHgzNiwgMHgwMCwgMHg5RCwgMHgyNSwgMHgwNCwgMHgyNywgMHgxMCwKKzB4MjEsIDB4NDAsIDB4NjQsIDB4MDAsIDB4MTEsIDB4MDUsIDB4NzQsIDB4MTYsIDB4MTIsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MTAsCisweEQ1LCAweDAxLCAweDA0LCAweDI0LCAweDEwLCAweDE5LCAweDQ1LCAweEU0LCAweDAxLCAweDU1LCAweDBBLCAweDQ0LCAweDA2LAorMHg1NCwgMHg3MSwgMHg0MiwgMHgxNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4QTAsIDB4MzQsIDB4MDAsIDB4MUQsIDB4ODEsIDB4NjQsIDB4MDMsIDB4OTAsIDB4MDUsIDB4NDksIDB4QzQsIDB4ODAsCisweDkxLCAweDAxLCAweDc2LCAweDA2LCAweDkwLCAweDBELCAweDQwLCAweEI3LCAweDAwLCAweDU1LCAweDAxLCAweDY2LCAweDhBLAorMHg1MCwgMHgxRCwgMHg2MCwgMHg2NiwgMHg4MCwgMHg1NSwgMHgwMiwgMHg0NCwgMHgwNiwgMHg1NCwgMHgxMSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjgsIDB4MzAsIDB4MDgsCisweDBELCAweDAwLCAweDQ0LCAweDAzLCAweDE0LCAweDAwLCAweDQwLCAweDAwLCAweDQ4LCAweDgxLCAweDQwLCAweDM2LCAweDAyLAorMHgxMCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHgxMSwgMHgwOCwgMHg0NCwgMHgwMiwgMHgxMCwgMHg0RCwgMHg2MCwgMHgwNCwKKzB4QzAsIDB4MDUsIDB4MDYsIDB4MDQsIDB4MDAsIDB4NTgsIDB4MDAsIDB4NDAsIDB4NDAsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEIwLCAweDNFLCAweDAwLCAweDFGLCAweDAwLCAweDZDLCAweDgzLAorMHhCMCwgMHgwMSwgMHhDMCwgMHgyNCwgMHgwMCwgMHgxMywgMHgwMCwgMHg3QywgMHgwMCwgMHhCMCwgMHgwRCwgMHhDOCwgMHgzNywKKzB4NDAsIDB4MUYsIDB4MDIsIDB4NkMsIDB4MDIsIDB4NzAsIDB4RTksIDB4QzMsIDB4MjYsIDB4ODAsIDB4OTMsIDB4MTYsIDB4NEMsCisweDAyLCAweDcwLCAweDA5LCAweEMyLCAweDAxLCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4NSwgMHhBMCwgMHgzRiwgMHgyMCwgMHhCRiwgMHgwMCwgMHhCQywgMHgwMywgMHhGMCwgMHgwMywgMHhDMCwgMHgyRiwKKzB4MDAsIDB4QkYsIDB4NDAsIDB4RkMsIDB4MDIsIDB4RjEsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDgsIDB4MkYsIDB4MDAsIDB4RkMsCisweDAyLCAweEYwLCAweDQxLCAweEMwLCAweDJGLCAweDAwLCAweDNGLCAweDA0LCAweEZDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLAorMHgxNywgMHgyMiwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg3RiwKKzB4MDAsIDB4NjMsIDB4MDQsIDB4Q0MsIDB4MzIsIDB4NzIsIDB4MUYsIDB4QzgsIDB4MkMsIDB4MDMsIDB4NzIsIDB4MDEsIDB4Q0MsCisweDA1LCAweDcwLCAweDBCLCAweEMwLCAweDNELCAweDAwLCAweEJCLCAweDgwLCAweEVDLCAweDA0LCAweEQwLCAweDlCLCAweEQwLAorMHg1QywgMHg0QSwgMHhGMywgMHgwMSwgMHhDQywgMHgxMiwgMHhGMSwgMHgxNywgMHhDMCwgMHgwQywgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDgsIDB4N0YsIDB4MDAsIDB4NTEsIDB4MDMsIDB4NDQsCisweEIyLCAweDEyLCAweDFGLCAweDQwLCAweDI0LCAweDEzLCAweEQxLCAweDAxLCAweDQ0LCAweDA3LCAweDEwLCAweDNELCAweDQwLAorMHhGQywgMHgwMCwgMHhCMSwgMHgwMywgMHg0NCwgMHg4MCwgMHhEMCwgMHg0NSwgMHg0MCwgMHgwNCwgMHgwMSwgMHhGMSwgMHgyMSwKKzB4NDQsIDB4MjYsIDB4RDAsIDB4MUQsIDB4NDAsIDB4MDUsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLCAweDAwLCAweDU1LCAweDAyLCAweDA0LCAweDEyLCAweDUwLCAweDBDLCAweDQwLAorMHgyMSwgMHgwMSwgMHg5MSwgMHgwMCwgMHgxNiwgMHgwMiwgMHg1MCwgMHg4OCwgMHg0MCwgMHgzMSwgMHgwMiwgMHg4OSwgMHgwOCwKKzB4MjQsIDB4MDAsIDB4RDgsIDB4MDgsIDB4NDAsIDB4MzAsIDB4ODgsIDB4QzEsIDB4MDAsIDB4MTQsIDB4ODIsIDB4RDIsIDB4MDgsCisweDQwLCAweDQ0LCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEE4LAorMHgzNSwgMHgwMCwgMHhENSwgMHgwMCwgMHg0NCwgMHg4MiwgMHg1MCwgMHgwRCwgMHg0MCwgMHgyNSwgMHgwMCwgMHhEMSwgMHgwMCwKKzB4MTAsIDB4MjIsIDB4MDAsIDB4MDksIDB4NDAsIDB4MzUsIDB4ODAsIDB4OTUsIDB4MDQsIDB4NDQsIDB4MDYsIDB4QzAsIDB4ODEsCisweDAwLCAweDM0LCAweDA0LCAweEQxLCAweDQwLCAweDU0LCAweDEyLCAweEQwLCAweDBDLCAweDQwLCAweDBELCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBOCwgMHgzMywgMHg0MCwgMHhDNywgMHgwMCwKKzB4NEMsIDB4MjYsIDB4NzEsIDB4MEQsIDB4RDAsIDB4NjQsIDB4MDAsIDB4ODMsIDB4ODAsIDB4NUMsIDB4MDcsIDB4NzAsIDB4MDUsCisweEMwLCAweDM1LCAweDAwLCAweDlCLCAweDAwLCAweDZDLCAweDRDLCAweEYwLCAweDA5LCAweEM4LCAweDI0LCAweDAwLCAweEQzLAorMHgwMCwgMHg1QywgMHgwNywgMHhGMCwgMHgwRCwgMHhDMCwgMHgwMCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MTAsIDB4N0IsIDB4MDksIDB4RkMsIDB4MDMsIDB4QjMsIDB4MEYsCisweEMwLCAweDNFLCAweDQxLCAweEJGLCAweDAwLCAweEVELCAweDgzLCAweEYwLCAweDlGLCAweDgyLCAweDM2LCAweDIwLCAweDlCLAorMHgwMSwgMHhGQywgMHgwMCwgMHhGMCwgMHgxRiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGRCwgMHg4MCwgMHhFQywgMHgwMiwgMHhGMiwKKzB4OEYsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDA4LCAweDM1LCAweDEyLCAweERGLCAweDBBLCAweDRELCAweDAzLCAweEYwLCAweDhDLCAweEM0LCAweDM0LCAweDAwLCAweDlGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwMCwgMHhDMCwgMHg3MywgMHgwMCwgMHg4QiwgMHgwMCwgMHg1QywgMHgwOCwgMHhGMCwKKzB4MDksIDB4QzAsIDB4QTcsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4N0MsIDB4NDIsIDB4RjIsIDB4MDksIDB4QzIsIDB4MDgsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEyLCAweDM0LCAweDAwLCAweERELAorMHg4MCwgMHg0NCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHg3NCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwKKzB4MEIsIDB4MDIsIDB4M0YsIDB4MDAsIDB4OTEsIDB4MDEsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDAsIDB4NjcsIDB4MDQsCisweERELCAweDAwLCAweDc0LCAweDAyLCAweEQyLCAweDBELCAweDQwLCAweDRDLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhBMCwgMHgzMiwgMHgwQywgMHg0QywgMHgwMCwgMHg0NCwgMHgwMywgMHhEMCwKKzB4MEMsIDB4NTEsIDB4MzQsIDB4MDIsIDB4NEQsIDB4MDAsIDB4MzAsIDB4MDAsIDB4RDAsIDB4MDgsIDB4NDAsIDB4MzIsIDB4MDAsCisweDgxLCAweDAwLCAweDE0LCAweDAwLCAweEQwLCAweDBELCAweDQwLCAweDM3LCAweDAwLCAweENELCAweDIwLCAweDM0LCAweDJFLAorMHhEMCwgMHgwMCwgMHg1MCwgMHgxQywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4ODAsIDB4NzgsIDB4MDAsIDB4NkQsIDB4NDEsIDB4ODQsIDB4NDYsIDB4RDAsIDB4MUUsIDB4NDgsIDB4NjgsIDB4MDAsCisweEVELCAweDAxLCAweEI0LCAweDA2LCAweEQwLCAweDFFLCAweDQyLCAweDdCLCAweDYwLCAweEExLCAweDIxLCAweDg0LCAweDg0LAorMHhEMCwgMHg1RSwgMHg0MSwgMHg2QiwgMHgwMCwgMHhFQywgMHg4MSwgMHhCNCwgMHgwNywgMHhEMiwgMHgxQiwgMHg0MCwgMHgxOCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MTAsIDB4MzAsIDB4MDAsCisweENGLCAweDAwLCAweDBDLCAweDAyLCAweEYyLCAweDBDLCAweEMwLCAweDIwLCAweDAwLCAweDhGLCAweDAwLCAweDNDLCAweDEyLAorMHhGMCwgMHg0OCwgMHhDMCwgMHgzMywgMHgwMCwgMHg4MywgMHgxMCwgMHgxQywgMHg4MCwgMHhGOCwgMHgwOCwgMHhFMCwgMHgzMywKKzB4MDAsIDB4Q0YsIDB4NDgsIDB4M0MsIDB4MDMsIDB4RjAsIDB4MDksIDB4QzAsIDB4NDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LCAweDdELCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDQyLAorMHhGMCwgMHgxRSwgMHhDMCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRiwKKzB4MDAsIDB4QjcsIDB4MDAsIDB4RUMsIDB4MjIsIDB4RjIsIDB4NEIsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RkUsIDB4MDEsIDB4RkMsCisweDQzLCAweEYwLCAweDA5LCAweEMwLCAweDBCLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMSwgMHhBMCwgMHgzNywgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4NzgsIDB4MDIsIDB4RjAsIDB4ODUsIDB4QzAsIDB4RjAsIDB4MjIsIDB4REIsIDB4MTQsIDB4NzQsCisweDAwLCAweEUwLCAweDFDLCAweEMwLCAweDI0LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDA5LCAweEMwLAorMHg1NywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4OCwgMHhCOSwKKzB4MDAsIDB4NkQsIDB4MDQsIDB4QjQsIDB4MTMsIDB4RDAsIDB4NEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4QUQsIDB4MDAsIDB4QjYsCisweDAyLCAweEQwLCAweDRFLCAweDUwLCAweDM4LCAweDA0LCAweEExLCAweDAwLCAweEI0LCAweDAyLCAweEQwLCAweDBFLCAweDQwLAorMHgyOCwgMHgwMCwgMHhFRCwgMHgwNCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MCwgMHg0QiwgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NzksIDB4ODksIDB4RUQsIDB4MDksIDB4QjQsCisweDA3LCAweEQwLCAweDlFLCAweDQwLCAweDc5LCAweDAzLCAweEFELCAweDAxLCAweEI0LCAweDA2LCAweEQwLCAweDE0LCAweDYyLAorMHg3OCwgMHgwMSwgMHhFOSwgMHgxMSwgMHhCNCwgMHgwNCwgMHhEMCwgMHgxRiwgMHg0MCwgMHg2OSwgMHg4OCwgMHhFRCwgMHgwRCwKKzB4QjQsIDB4NTcsIDB4RDAsIDB4MUEsIDB4NDAsIDB4MEYsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDAwLCAweDhELCAweEEwLCAweDM0LCAweDA3LCAweEQwLCAweDBDLCAweDQwLAorMHg3MywgMHgxMCwgMHg4RCwgMHgwQiwgMHgzNCwgMHgyQSwgMHhEMCwgMHgyQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMSwKKzB4MzQsIDB4MDMsIDB4RDAsIDB4REMsIDB4NDAsIDB4MjEsIDB4MjMsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MDgsCisweDQxLCAweDRCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweEE4LAorMHgxMSwgMHgwMCwgMHg3RiwgMHgyMCwgMHg3QywgMHgxMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgyNCwgMHg3RiwgMHgwMiwKKzB4RkMsIDB4MEQsIDB4RjAsIDB4MDcsIDB4QzAsIDB4MTQsIDB4MDAsIDB4NUIsIDB4MDEsIDB4RkMsIDB4MzEsIDB4RjAsIDB4MDcsCisweEQwLCAweDlELCAweDAwLCAweDVGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDI3LCAweEMwLCAweDVGLCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHg4NywgMHgwMCwgMHgxRiwgMHgwMSwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MTAsIDB4NzAsIDB4NDAsIDB4RjAsIDB4ODAsCisweEMwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweEYxLCAweDAxLCAweDgwLCAweDA2LCAweDI4LCAweDFGLAorMHg4MCwgMHg3OCwgMHgwOCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NjcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsIDB4MjYsIDB4RjAsIDB4MzksCisweEMwLCAweDI3LCAweDAxLCAweDlGLCAweDAwLCAweDRELCAweDAyLCAweDMyLCAweDA5LCAweEMzLCAweDY0LCAweDAwLCAweDhGLAorMHgwMSwgMHg0QywgMHgwMiwgMHhGMSwgMHgyOSwgMHhDMCwgMHgyNywgMHgwMSwgMHg5RiwgMHgwMCwgMHg0QywgMHgwNiwgMHgzMCwKKzB4MDksIDB4QzAsIDB4NDAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDIwLCAweDJFLCAweDAwLCAweEIxLCAweDAzLCAweEY0LCAweDAyLCAweEQwLCAweDBCLCAweDQwLCAweDZGLCAweDAwLCAweDlELAorMHgwMCwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMSwgMHg0NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4NjcsIDB4MDgsIDB4QkQsIDB4MDAsIDB4ODQsIDB4MEUsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDQsIDB4MDAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI0LCAweDAyLCAweEQxLAorMHgwOCwgMHg3NCwgMHgwMiwgMHhEMCwgMHgwOSwgMHg0MSwgMHgyNywgMHgwMCwgMHg4RCwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwKKzB4MDksIDB4NTAsIDB4MjQsIDB4MDEsIDB4OUQsIDB4MDQsIDB4NDQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDIsIDB4MjcsIDB4MDAsCisweDhELCAweDAwLCAweDQ0LCAweDFBLCAweDEwLCAweDA5LCAweDQwLCAweDYwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgwQSwgMHhEMCwKKzB4MDgsIDB4NDIsIDB4QTMsIDB4MDgsIDB4OEQsIDB4MDIsIDB4NDQsIDB4MEEsIDB4MTAsIDB4NjgsIDB4NDEsIDB4MjAsIDB4MDUsCisweDhELCAweDE0LCAweDA1LCAweDAyLCAweEQwLCAweDI4LCAweDQwLCAweEEzLCAweDA4LCAweDhELCAweDAyLCAweDA1LCAweDAyLAorMHgxMCwgMHgyOSwgMHg0MCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUQsIDB4QjAsIDB4NTYsIDB4NDAsIDB4NTMsIDB4MDEsIDB4N0MsIDB4MDQsIDB4RjAsIDB4MTEsIDB4QzAsIDB4NDcsIDB4MDAsCisweDFGLCAweDAwLCAweDRDLCAweDAwLCAweDM0LCAweDQxLCAweEMwLCAweDA0LCAweDAxLCAweDFGLCAweDA0LCAweDRDLCAweDI4LAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMSwgMHg0QywgMHgwNCwgMHgzNCwgMHgwMSwgMHhEMCwgMHg3NCwKKzB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QjgsIDB4QTcsIDB4MDAsCisweEJGLCAweDAyLCAweEZDLCAweDBFLCAweEYwLCAweDI5LCAweEMwLCAweEVGLCAweDAwLCAweEJGLCAweDAxLCAweEZDLCAweDA2LAorMHhGMCwgMHgxQiwgMHhDMCwgMHgyNywgMHgwMCwgMHhCRiwgMHg4MCwgMHhGQywgMHgwNiwgMHhGMCwgMHgxQiwgMHhDMCwgMHg2RiwKKzB4MDgsIDB4OUYsIDB4MjMsIDB4RkMsIDB4MEEsIDB4RjAsIDB4MUIsIDB4QzAsIDB4NjcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDZGLCAweDAwLCAweEZCLCAweDExLCAweENELCAweDE2LAorMHhGMCwgMHgxQiwgMHhDMCwgMHg2RiwgMHgwMSwgMHg5MywgMHgwMCwgMHg2QywgMHgwQSwgMHgyMCwgMHg1OSwgMHg4MCwgMHg2RCwKKzB4MDEsIDB4QTMsIDB4MDUsIDB4MEMsIDB4MDIsIDB4RjAsIDB4MkIsIDB4QzgsIDB4MkIsIDB4MDAsIDB4OUQsIDB4ODUsIDB4Q0MsCisweDA2LCAweDMwLCAweDI5LCAweEMwLCAweDY3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxQywgMHgwOCwgMHgwNywgMHgwMCwgMHgxMSwgMHg0MiwgMHg0NCwgMHgxNCwgMHhEMCwgMHgyMSwgMHg0MCwgMHhDNywKKzB4MDMsIDB4NTEsIDB4MTUsIDB4NjQsIDB4MDQsIDB4MTAsIDB4MzAsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NTQsCisweDAwLCAweEQwLCAweDUxLCAweDQwLCAweDU3LCAweDAwLCAweDFELCAweDA3LCAweDQ0LCAweDI4LCAweDEwLCAweDExLCAweDQwLAorMHg3MywgMHg2MCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHhBMywKKzB4MDAsIDB4ODksIDB4MDAsIDB4MDQsIDB4NEEsIDB4RDAsIDB4MjgsIDB4NDIsIDB4MjMsIDB4MDQsIDB4ODEsIDB4MjAsIDB4MjQsCisweDAyLCAweDEwLCAweEM4LCAweDYxLCAweEEzLCAweDAwLCAweDgxLCAweDAyLCAweDA0LCAweDAyLCAweDUwLCAweDQ4LCAweDYwLAorMHgzMywgMHgwNSwgMHg4RCwgMHgxMiwgMHgxNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHg0MywgMHg4MCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4MDAsIDB4OTEsIDB4NDAsIDB4NDQsCisweDAyLCAweEQwLCAweDA5LCAweDQyLCAweDI3LCAweDYwLCAweDkxLCAweDA4LCAweDI0LCAweDAyLCAweDEwLCAweDA5LCAweDQyLAorMHgyNiwgMHgwMCwgMHg5MSwgMHgwNCwgMHg1NCwgMHgwQSwgMHhEMCwgMHg4OSwgMHg0MiwgMHgyNywgMHgwMSwgMHg5RCwgMHgwMCwKKzB4NTQsIDB4MDYsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA1LCAweDI4LCAweDI1LCAweDAwLCAweDlCLCAweDBFLCAweENDLCAweDIyLCAweEYwLCAweDA5LCAweEMwLAorMHgyRiwgMHgwMCwgMHhCMywgMHgwMywgMHhFQywgMHgxMiwgMHgzMCwgMHgxQiwgMHhDMCwgMHgyNywgMHgwMCwgMHg5MywgMHgwMCwKKzB4NEMsIDB4MDYsIDB4RTAsIDB4MUIsIDB4QzAsIDB4RUYsIDB4MjAsIDB4QkYsIDB4MDAsIDB4NUQsIDB4MDIsIDB4RjAsIDB4NkIsCisweEMwLCAweDE3LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLAorMHgyNSwgMHgwMCwgMHg5RiwgMHgxMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHhBNywgMHgwMCwgMHg5RiwgMHgyMSwKKzB4N0MsIDB4MTIsIDB4RjQsIDB4MzgsIDB4RDAsIDB4MjEsIDB4NDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MEEsIDB4RjIsIDB4MDksCisweEMwLCAweDY3LCAweDA4LCAweDlGLCAweDAwLCAweDJDLCAweDgyLCAweDM0LCAweDM5LCAweEMwLCAweDUzLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwMSwgMHgwMSwgMHgwRiwgMHgwMCwKKzB4NEQsIDB4ODAsIDB4MzAsIDB4ODEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDIsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDEsCisweEMwLCAweDA0LCAweDEwLCAweDE3LCAweDAwLCAweDRDLCAweDA4LCAweDcyLCAweDAxLCAweEQwLCAweDA0LCAweDQwLCAweDAzLAorMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg1MywgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjAsIDB4REMsIDB4MjAsIDB4N0QsIDB4MDAsIDB4NDQsIDB4MDUsIDB4MTAsIDB4MDcsCisweDQwLCAweDE3LCAweDA0LCAweDVELCAweDAwLCAweDc0LCAweDAxLCAweEQwLCAweDA1LCAweEMwLCAweDE2LCAweDAwLCAweDQxLAorMHgxMSwgMHg0NCwgMHgwMSwgMHgxMCwgMHgxNSwgMHg0MywgMHgxNCwgMHgwMCwgMHg1MSwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwKKzB4MDUsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweEEwLCAweEUyLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDA3LCAweDEwLCAweDA4LCAweDQyLCAweDM3LCAweDAwLCAweENELAorMHgwMCwgMHgzMCwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgzMiwgMHgwMCwgMHg4NSwgMHgwMSwgMHgwNSwgMHgwMywgMHg1MCwKKzB4MEMsIDB4NDAsIDB4MzIsIDB4MDAsIDB4QzEsIDB4ODAsIDB4MzQsIDB4MDIsIDB4QzAsIDB4MEMsIDB4NDAsIDB4NTMsIDB4MDAsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweEI4LCAweDAwLCAweEFELAorMHgwMCwgMHgwNCwgMHg3NywgMHgxNCwgMHgwRSwgMHg0MCwgMHgyQiwgMHg4MiwgMHhFRCwgMHgwNCwgMHhCNCwgMHgxMywgMHhEMCwKKzB4NEUsIDB4NDAsIDB4MkEsIDB4MDAsIDB4RjUsIDB4MDAsIDB4QzQsIDB4MDcsIDB4NTAsIDB4REUsIDB4NDAsIDB4N0UsIDB4MDEsCisweEUxLCAweDBDLCAweEI0LCAweDAzLCAweEQxLCAweDRFLCAweDQwLCAweDEzLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg2OCwgMHgwMCwgMHhBRiwgMHgwMSwgMHg4NCwgMHgwNiwgMHgzMCwKKzB4MUEsIDB4QzAsIDB4N0IsIDB4MDEsIDB4RUYsIDB4MDMsIDB4QkMsIDB4MEYsIDB4RjAsIDB4NUUsIDB4QzAsIDB4NkEsIDB4MDAsCisweEU3LCAweDAxLCAweDhDLCAweDA3LCAweDcwLCAweDFGLCAweDgwLCAweEZBLCAweDAwLCAweEUzLCAweDAxLCAweEJDLCAweDA2LAorMHhGMCwgMHgzRSwgMHhDMCwgMHg1MywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4QjgsIDB4MzUsIDB4MDAsIDB4OEYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4QzAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweEUwLCAweDhELCAweEM0LCAweDIzLCAweDAwLCAweERCLCAweDAwLCAweDdDLCAweDYzLAorMHhCOCwgMHgwRCwgMHhDMCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHg0MywKKzB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTAsIDB4NkYsIDB4MDAsCisweEIzLCAweDAxLCAweEZDLCAweDg3LCAweDMwLCAweDFCLCAweDgwLCAweDdGLCAweDAyLCAweEUzLCAweDAxLCAweDhDLCAweDA3LAorMHgzMCwgMHgxRiwgMHg0MCwgMHg3QywgMHgwMSwgMHhGRiwgMHgwMSwgMHhFQywgMHgwNywgMHgzMCwgMHgxQiwgMHhDMCwgMHg3OCwKKzB4MjgsIDB4RjMsIDB4MjEsIDB4RkMsIDB4MDYsIDB4MzAsIDB4MUUsIDB4QzgsIDB4MDgsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDg4LCAweDI5LCAweDQwLCAweEExLCAweDAwLCAweEY0LCAweDAzLAorMHgxNCwgMHgwQSwgMHg0MCwgMHgyQiwgMHg0OCwgMHhFMSwgMHgwMCwgMHg4NCwgMHgyMywgMHgxMCwgMHg4RSwgMHg0MCwgMHgyOSwKKzB4MDAsIDB4RUQsIDB4MDAsIDB4QzQsIDB4NDMsIDB4QjAsIDB4MEEsIDB4QzAsIDB4M0EsIDB4MDIsIDB4RTEsIDB4MDAsIDB4QjQsCisweDBCLCAweDEwLCAweDhFLCAweDQwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHhBMSwgMHgxMCwgMHhCNCwgMHgwMiwgMHgxMCwgMHgwQSwgMHg0MCwgMHgzQiwKKzB4ODAsIDB4RjEsIDB4MDEsIDB4QzQsIDB4MDcsIDB4MTAsIDB4MUYsIDB4NDAsIDB4MjgsIDB4MDEsIDB4Q0QsIDB4MDAsIDB4QTQsCisweDAzLCAweDEwLCAweDBCLCAweDQxLCAweDNELCAweDAwLCAweEUxLCAweDAxLCAweEI0LCAweDYyLCAweDE0LCAweDFGLCAweDQwLAorMHgyMCwgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgyOCwgMHgxMywKKzB4MDAsIDB4ODEsIDB4MDEsIDB4MzQsIDB4ODYsIDB4MTAsIDB4MEMsIDB4NDAsIDB4NjMsIDB4MDAsIDB4QzEsIDB4MDcsIDB4MDQsCisweDBCLCAweDE4LCAweDNDLCAweDQwLCAweDIxLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDE3LCAweDkwLCAweDNDLCAweDQzLAorMHg2NywgMHgwMCwgMHhDMSwgMHgwMCwgMHgzNCwgMHgwNywgMHgxMCwgMHgxQywgMHg0MCwgMHgxOCwgMHgyMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTgsIDB4MjUsIDB4MDAsIDB4RDMsIDB4MDMsIDB4N0MsCisweDEzLCAweDMwLCAweDA5LCAweEMyLCAweDc3LCAweDA0LCAweEQzLCAweDA0LCAweDQ1LCAweDJCLCAweDM0LCAweDZELCAweEMwLAorMHgyNCwgMHgwMCwgMHhERiwgMHgxMSwgMHhFQywgMHgwMywgMHgzMCwgMHgzQywgMHhDMCwgMHg2NSwgMHg0NCwgMHhEMywgMHgyMCwKKzB4M0MsIDB4MDIsIDB4MzAsIDB4NkQsIDB4RDAsIDB4NTQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweENGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDJELCAweEMwLAorMHgyNywgMHgwOCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgyNywgMHgwMCwgMHhERCwgMHg0MCwKKzB4N0MsIDB4ODMsIDB4RjIsIDB4MEQsIDB4QzAsIDB4MjYsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MEEsIDB4RjAsIDB4NEQsCisweEMwLCAweDI3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LAorMHgyRiwgMHgwMCwgMHhCRiwgMHgxMCwgMHg4QywgMHgwNiwgMHgzMSwgMHgwQiwgMHhEMCwgMHhCNCwgMHgwMCwgMHhGRiwgMHgwMCwKKzB4Q0MsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzEsIDB4RUYsIDB4MDAsIDB4RkYsIDB4ODUsIDB4Q0MsIDB4MDMsIDB4MzAsIDB4NEYsCisweEMwLCAweEVDLCAweDAwLCAweEYzLCAweDAwLCAweDRDLCAweDE2LCAweDMwLCAweDBGLCAweEMwLCAweDA0LCAweDIwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgyMCwgMHgzNiwgMHgwMCwgMHhERCwgMHgwMywKKzB4NDQsIDB4MDIsIDB4MTEsIDB4MjQsIDB4NDAsIDB4NzQsIDB4MDAsIDB4REQsIDB4NDAsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MEQsCisweDQyLCAweDY3LCAweDIwLCAweENELCAweDAxLCAweDQ0LCAweDAzLCAweDEwLCAweDE5LCAweDQ4LCAweDc0LCAweDIwLCAweEQxLAorMHgwMCwgMHg0NCwgMHgwMSwgMHgwMCwgMHgwRCwgMHg0MCwgMHg4NCwgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MjYsIDB4MDAsIDB4REQsIDB4MDYsIDB4NDQsIDB4QTMsIDB4MTQsIDB4MDksCisweDQxLCAweDM0LCAweDAwLCAweENELCAweDAwLCAweDY0LCAweDAzLCAweEQwLCAweDBELCAweDQwLCAweDI3LCAweDEwLCAweERELAorMHgwMCwgMHg4NCwgMHgwMywgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNCwgMHg0MCwgMHhDMSwgMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwKKzB4MEMsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweDIwLCAweDAwLCAweENELCAweDAwLCAweDE0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweENELAorMHgwMCwgMHgwNSwgMHgwMywgMHhEMCwgMHgwQywgMHg0MCwgMHgyMywgMHg4MCwgMHhERCwgMHg0MCwgMHgwNCwgMHgwMywgMHgxNCwKKzB4MDksIDB4NTAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4NDAsIDB4MDQsIDB4MDIsIDB4MTYsIDB4MEMsIDB4NTQsIDB4NDAsIDB4ODAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDI2LCAweDAwLCAweDFGLAorMHgwMCwgMHg0QywgMHgwMywgMHgzMCwgMHgwOSwgMHhDQSwgMHgyNCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwKKzB4MEYsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4MDAsIDB4Q0QsIDB4MDMsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjQsIDB4MDAsCisweEYzLCAweDAwLCAweDRELCAweDAyLCAweDMwLCAweDBGLCAweEMwLCAweDA0LCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgxRiwgMHgwMCwgMHg3RiwgMHgwMCwgMHhFRCwgMHgwMiwgMHhGMCwKKzB4MDcsIDB4QzAsIDB4MkYsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEUsIDB4QzAsIDB4MkYsIDB4MDAsCisweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBBLCAweEMwLCAweDJGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAxLAorMHhGMCwgMHgwRiwgMHhDMCwgMHgxNywgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTAsIDB4N0YsIDB4MDAsIDB4RjcsIDB4MEMsIDB4Q0MsIDB4MUIsIDB4NzAsIDB4M0EsIDB4QzAsIDB4RUMsIDB4MDAsCisweEJCLCAweDA0LCAweEZDLCAweDAzLCAweDMwLCAweDFFLCAweEMwLCAweDNFLCAweDAwLCAweEE3LCAweDAxLCAweDhDLCAweDA2LAorMHgzMCwgMHgxQiwgMHhDMCwgMHg3RSwgMHgxMiwgMHhCRiwgMHgwNCwgMHhDQywgMHgwNywgMHhGMCwgMHgwMywgMHhDNCwgMHgwRSwKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4NzcsIDB4MDAsCisweEYxLCAweDhFLCAweEM0LCAweDNCLCAweDEwLCAweDQ5LCAweDQwLCAweDI0LCAweDAwLCAweDkxLCAweDBFLCAweEY0LCAweDJGLAorMHg1MCwgMHgxOSwgMHg0MCwgMHhGNCwgMHgwMCwgMHg1RCwgMHgwMSwgMHg0NCwgMHg1MCwgMHgxMCwgMHgxOSwgMHg0MCwgMHgzNCwKKzB4MDAsIDB4QzksIDB4MTQsIDB4NDQsIDB4MDMsIDB4RDAsIDB4MTksIDB4NDAsIDB4MDQsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEyLCAweDMzLCAweDIwLCAweEM1LCAweDA0LCAweDA0LCAweDEzLAorMHg1MCwgMHg0OSwgMHg0MCwgMHgzMCwgMHgwMSwgMHgwOSwgMHgxMCwgMHgxNCwgMHgwMywgMHgxMiwgMHgwOCwgMHg2MCwgMHgzMiwKKzB4MDIsIDB4Q0QsIDB4ODAsIDB4NDQsIDB4MTAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MzMsIDB4MDAsIDB4OEQsIDB4MEMsIDB4MDQsCisweDAzLCAweEQwLCAweDA4LCAweDQwLCAweDQ3LCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHhBOCwgMHgzNSwgMHgwMCwgMHhEMSwgMHgwMCwgMHg0NiwgMHgwMywgMHgxMCwgMHgxOSwgMHg0MSwgMHg3MCwKKzB4MDAsIDB4MTEsIDB4MDEsIDB4NzQsIDB4MDMsIDB4MTAsIDB4MTksIDB4NDAsIDB4MzQsIDB4MDAsIDB4REQsIDB4ODQsIDB4NDYsCisweDg0LCAweDEwLCAweDA5LCAweDQwLCAweDM1LCAweDAwLCAweDk5LCAweDAwLCAweDQ0LCAweDAzLCAweEQwLCAweDE5LCAweDQxLAorMHgwRCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhBOCwgMHgzNiwKKzB4MDgsIDB4RDcsIDB4MDAsIDB4NDgsIDB4MDMsIDB4NzAsIDB4MzksIDB4QzAsIDB4NDQsIDB4MDEsIDB4OUIsIDB4MDUsIDB4NUMsCisweDgzLCAweDMwLCAweDE5LCAweEMwLCAweDM2LCAweDgwLCAweEQ3LCAweDAwLCAweDRDLCAweDRFLCAweDMxLCAweDA4LCAweEMwLAorMHgzNywgMHgwMiwgMHg5RiwgMHgwMCwgMHg0RCwgMHgwNywgMHhGMCwgMHgzMCwgMHhDMCwgMHgwMywgMHgyMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODIsIDB4M0QsIDB4MTAsIDB4RUYsIDB4MDAsIDB4RkMsCisweDAzLCAweEYwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEJGLCAweDgwLCAweEZDLCAweDQzLCAweEYwLCAweDBCLCAweEMwLAorMHgzRiwgMHhBNCwgMHhGRiwgMHgwMSwgMHhGRCwgMHgwMywgMHhGMCwgMHgwRiwgMHhDMiwgMHgzRSwgMHgwMCwgMHhFRiwgMHgwMiwKKzB4RkMsIDB4OEYsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MUUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDM1LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweDcwLCAweDIxLCAweEMwLAorMHgzNSwgMHgwMCwgMHg5NywgMHgwOCwgMHgwQywgMHgwMywgMHg3MCwgMHgwMSwgMHhDMCwgMHgzNCwgMHgwMiwgMHhENywgMHgxMCwKKzB4NEMsIDB4MDAsIDB4QjEsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDQsIDB4RDMsIDB4MTgsIDB4NDQsIDB4MDMsIDB4RjAsIDB4MjEsCisweEMwLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLAorMHg3MCwgMHgwMCwgMHhGRCwgMHgwRiwgMHhGNCwgMHgwMywgMHhEMCwgMHgwQywgMHg2MCwgMHgzNCwgMHgwMCwgMHg5MSwgMHgwMywKKzB4QzQsIDB4NEYsIDB4MzAsIDB4QzAsIDB4QzAsIDB4M0MsIDB4MDgsIDB4QzEsIDB4MTEsIDB4MkMsIDB4MDAsIDB4MTAsIDB4OEQsCisweDQwLCAweEY0LCAweDAwLCAweEQ1LCAweDAwLCAweDQ0LCAweDBCLCAweEQwLCAweEIxLCAweDQwLCAweDRDLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHg3MiwgMHgwMCwgMHhDRCwgMHgwMywKKzB4NzQsIDB4MDcsIDB4NTAsIDB4MDgsIDB4NDQsIDB4MzEsIDB4MDAsIDB4MDUsIDB4MTIsIDB4MTQsIDB4MEIsIDB4RDAsIDB4MTgsCisweDQwLCAweEYwLCAweDIwLCAweEM1LCAweDAwLCAweDI0LCAweDAyLCAweEQyLCAweDAwLCAweDA2LCAweEYzLCAweDAwLCAweDg5LAorMHgwMSwgMHgwNCwgMHgzNywgMHhEMCwgMHg5MCwgMHg0MCwgMHgxRCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ODIsIDB4NzgsIDB4MDQsIDB4RUQsIDB4ODEsIDB4QjQsIDB4NEYsIDB4RDAsIDB4MUIsCisweDQ4LCAweDdELCAweDA4LCAweEUxLCAweDA5LCAweDk1LCAweDA3LCAweDAwLCAweDlCLCAweDQwLCAweDc4LCAweDAwLCAweDYxLAorMHgwMSwgMHhFNCwgMHgwNCwgMHgxMCwgMHg5QSwgMHg0MCwgMHg3OCwgMHgwNiwgMHhBRCwgMHgwMSwgMHg4NCwgMHgwNywgMHhEOSwKKzB4MUEsIDB4NDgsIDB4MTgsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisweDEwLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLCAweDcwLCAweDA4LCAweDQwLCAweDMxLCAweDAwLCAweDU3LAorMHgwMCwgMHgxQywgMHgwMywgMHhGMCwgMHg4OCwgMHhDMCwgMHgzMCwgMHgwMCwgMHhDNywgMHgwMCwgMHgyQywgMHgwMCwgMHhCMCwKKzB4MDAsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OEIsIDB4MEMsIDB4MEMsIDB4MDMsIDB4RjAsIDB4MEMsIDB4QzAsIDB4NDksIDB4NDgsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEIwLCAweDNELCAweDAwLCAweEZGLAorMHgwMiwgMHhGQywgMHg0QiwgMHhGMCwgMHg4QiwgMHg4MCwgMHgzQSwgMHgwMiwgMHhGRiwgMHgwMCwgMHhBQywgMHg2MywgMHhGMSwKKzB4OEIsIDB4RDAsIDB4M0IsIDB4MDAsIDB4RkYsIDB4NDgsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MEEsIDB4QzIsIDB4M0YsIDB4MDAsCisweDk3LCAweDI4LCAweEZELCAweDAzLCAweEYwLCAweDhFLCAweEMwLCAweDA5LCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwQywgMHg3QywgMHgwQiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MzQsIDB4MDAsIDB4NTcsIDB4MDEsIDB4NEMsIDB4MUIsIDB4RjEsIDB4MDksIDB4QzAsIDB4MzQsIDB4MTIsCisweENGLCAweDAwLCAweDRDLCAweDAzLCAweEIwLCAweDAxLCAweEMwLCAweDc2LCAweDkwLCAweERCLCAweDAwLCAweDdDLCAweDgzLAorMHgzMCwgMHgwNSwgMHhDMCwgMHg1NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4ODgsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDQsIDB4QjQsIDB4MTMsIDB4RDAsIDB4MEYsIDB4NDQsIDB4MzgsIDB4MDAsCisweEUxLCAweDAwLCAweDg0LCAweDMzLCAweEQ4LCAweDBBLCAweDQyLCAweDM4LCAweDAwLCAweEVELCAweEEwLCAweDg0LCAweDgxLAorMHgxNCwgMHgwRSwgMHg0NCwgMHgzOSwgMHgwMCwgMHhFNSwgMHgwMCwgMHhCNCwgMHgwMywgMHg1MCwgMHgwRSwgMHg0MCwgMHg0OCwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDIsIDB4NzksIDB4MDAsCisweEVELCAweDA1LCAweEI0LCAweDA3LCAweEQwLCAweDFBLCAweDU0LCAweDdDLCAweDAwLCAweDQ1LCAweDAxLCAweDg0LCAweDE3LAorMHhDMCwgMHgxMywgMHg0OCwgMHg3OCwgMHgwMSwgMHhFQywgMHgwMSwgMHhDNSwgMHgwNSwgMHgxMiwgMHgxNiwgMHg0MCwgMHg3RCwKKzB4ODAsIDB4RTEsIDB4QTEsIDB4RjQsIDB4OEYsIDB4MTEsIDB4MUMsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAzLAorMHhEOCwgMHgyQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHgwMywgMHgwNCwgMHgwMywgMHhEMCwgMHg4MCwgMHg0MCwgMHgzMCwKKzB4MjAsIDB4Q0QsIDB4MDUsIDB4MDQsIDB4MTUsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MjEsIDB4MDAsIDB4QzUsIDB4MDgsIDB4NzQsCisweDA2LCAweDUwLCAweDJDLCAweDQxLCAweDQ4LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNywgMHhBOCwgMHgxNSwgMHgwMCwgMHg1RiwgMHgwMCwgMHg3QywgMHgwMSwgMHhEMCwgMHg0NywgMHhDMCwgMHg5OCwKKzB4MDAsIDB4NzcsIDB4NDksIDB4NEMsIDB4MDEsIDB4RjAsIDB4QTcsIDB4QzgsIDB4MTQsIDB4MDAsIDB4N0YsIDB4MDcsIDB4OEMsCisweDE1LCAweDMwLCAweDQ3LCAweEMwLCAweDU1LCAweDAwLCAweDVCLCAweDIxLCAweDdDLCAweDAxLCAweDEwLCAweDI3LCAweEQxLAorMHg1QywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwNywKKzB4MDAsIDB4MUYsIDB4ODIsIDB4N0MsIDB4MDAsIDB4RjEsIDB4MDEsIDB4QzEsIDB4MDcsIDB4MDEsIDB4MUYsIDB4QTgsIDB4N0QsCisweDA4LCAweEQwLCAweDIxLCAweEQ0LCAweDg3LCAweDAwLCAweDFGLCAweDQwLCAweDdDLCAweDAwLCAweDcwLCAweDIxLCAweEMwLAorMHgwNSwgMHgwMiwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgyMSwgMHhDMCwgMHg0QiwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MjcsIDB4MDEsIDB4OUYsIDB4MDMsIDB4M0MsCisweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDI0LCAweDA4LCAweDk3LCAweDAxLCAweDdDLCAweDEyLCAweEYyLCAweDI5LCAweEMwLAorMHgyNiwgMHgwMCwgMHg5RiwgMHgwOCwgMHg1QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg4RiwgMHgwOSwKKzB4NEQsIDB4MDIsIDB4MzAsIDB4NDgsIDB4QzAsIDB4NDAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDI2LCAweDAwLCAweDlELCAweDAzLCAweDc0LCAweDBBLCAweDEwLCAweDA5LCAweDQwLAorMHgyNCwgMHgwMCwgMHg5MSwgMHgwMSwgMHg3NCwgMHgxQSwgMHhEMCwgMHgwOCwgMHg0MSwgMHhFNCwgMHgwMSwgMHg4RCwgMHg2MCwKKzB4NDQsIDB4MDIsIDB4MTIsIDB4NjgsIDB4NDAsIDB4MjQsIDB4MDMsIDB4OUQsIDB4MDIsIDB4NDQsIDB4MDIsIDB4MzAsIDB4MjksCisweDUwLCAweDA0LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLAorMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHg0NiwgMHg1MCwgMHgwOCwgMHg0MiwgMHgyNCwgMHgwMCwgMHg5NSwgMHgwOCwKKzB4NzQsIDB4ODIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDIsIDB4OUQsIDB4MDAsIDB4NTQsIDB4MDIsIDB4NTIsIDB4MEQsCisweDQwLCAweDI0LCAweDAwLCAweDlELCAweDAyLCAweDQ0LCAweDBBLCAweDEwLCAweDA5LCAweDQwLCAweDYwLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwgMHgwMCwgMHhDRCwgMHgxNCwKKzB4MzQsIDB4NTIsIDB4NTQsIDB4MDgsIDB4NDAsIDB4MjQsIDB4MEEsIDB4QzEsIDB4OTQsIDB4MzAsIDB4RDIsIDB4RDAsIDB4MDksCisweDQwLCAweDIxLCAweDAwLCAweDhELCAweDAwLCAweDQ0LCAweDAyLCAweDE5LCAweDA5LCAweDcwLCAweDIwLCAweDEwLCAweDhELAorMHgwOCwgMHgwNCwgMHgwMiwgMHgxNCwgMHg0QywgMHg0MSwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDQsIDB4N0MsIDB4MTAsIDB4NzAsIDB4MDEsCisweEQwLCAweDg0LCAweDAwLCAweDE3LCAweDA0LCAweDc4LCAweDEwLCAweEYwLCAweDAxLCAweEM0LCAweDA3LCAweDA1LCAweDFELAorMHg0MCwgMHg1QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxRiwgMHgxNiwgMHg0QywgMHgwMCwgMHgzMCwKKzB4NDEsIDB4QzAsIDB4NzQsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksCisweEIwLCAweDI3LCAweDAwLCAweDlGLCAweDE0LCAweDdDLCAweDUyLCAweEIxLCAweDRCLCAweEMxLCAweDJCLCAweDAxLCAweEJGLAorMHg5NCwgMHg3QywgMHgwMiwgMHhGMiwgMHgwQSwgMHhDMCwgMHgyNiwgMHgxMCwgMHhGRSwgMHgwMCwgMHhCQywgMHg1MywgMHhGMCwKKzB4MEEsIDB4QzAsIDB4MkIsIDB4MTUsIDB4QkYsIDB4MDQsIDB4QkMsIDB4NTIsIDB4NzAsIDB4MEIsIDB4QzAsIDB4NjcsIDB4NjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEEwLCAweDJGLCAweDAwLCAweEJGLAorMHgwMSwgMHhDQywgMHg1RSwgMHhFMCwgMHgyOCwgMHhDMCwgMHhBNywgMHgwMCwgMHhCNywgMHgwOSwgMHhFQywgMHgxMiwgMHg3MCwKKzB4MEEsIDB4QzAsIDB4MkYsIDB4MDQsIDB4QUQsIDB4MDAsIDB4NEMsIDB4MDIsIDB4MzAsIDB4MEEsIDB4QzAsIDB4QUUsIDB4MDAsCisweEJCLCAweDAwLCAweENELCAweDAyLCAweEIwLCAweDBCLCAweEMwLCAweDY3LCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwgMHgwNywgMHgwMCwgMHgxRCwgMHgwRiwgMHg0NCwgMHgwOCwgMHhEMCwKKzB4MDEsIDB4NDAsIDB4MDcsIDB4MDEsIDB4MTEsIDB4MEIsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4ODcsIDB4MDAsCisweDE5LCAweDAwLCAweDQ0LCAweDEwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAxLCAweDExLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHg0MCwgMHg3MywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4QTAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MTAsIDB4MDQsIDB4MTIsIDB4RDAsIDB4NDgsIDB4NDAsIDB4NjcsIDB4MDAsCisweDg1LCAweDA0LCAweDI0LCAweDBCLCAweDUwLCAweDA4LCAweDQwLCAweDMzLCAweDAwLCAweDk5LCAweDAwLCAweDA0LCAweDQyLAorMHgxMCwgMHgwOSwgMHg0MCwgMHgyMiwgMHgwMSwgMHg4OSwgMHgwMCwgMHgyNCwgMHgwMiwgMHg5MCwgMHgwOCwgMHg0MCwgMHg0MywKKzB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTgsIDB4MjUsIDB4MDAsCisweDlELCAweDYwLCAweDQ0LCAweDAyLCAweEM4LCAweDA5LCAweDQxLCAweDI3LCAweDAyLCAweDkxLCAweDAwLCAweDY0LCAweDAyLAorMHgxMCwgMHgwOSwgMHg0NCwgMHgyNywgMHgwMCwgMHg5OSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMSwgMHgwOSwgMHgwMCwgMHg2NCwKKzB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4NjMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDRDLCAweDAyLAorMHhDMSwgMHgzOSwgMHhDOCwgMHg2NywgMHgwMCwgMHg5NSwgMHg1MSwgMHg2QywgMHgwMiwgMHg3MCwgMHg3OSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OUIsIDB4MDEsIDB4NEMsIDB4MEUsIDB4MzAsIDB4MTksIDB4QzAsIDB4MjYsIDB4MDAsIDB4OUIsIDB4MDAsIDB4NEMsCisweDA2LCAweEIwLCAweDA5LCAweEMxLCAweDE3LCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHgwMCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3RCwgMHgwMiwgMHhGMCwgMHgyOSwgMHhDMCwgMHg2NywKKzB4MDAsIDB4OEYsIDB4MDUsIDB4MUMsIDB4MDIsIDB4RjAsIDB4OTksIDB4QzQsIDB4MjcsIDB4MjQsIDB4OUIsIDB4MDMsIDB4N0QsCisweDEyLCAweEY0LCAweDk5LCAweEMzLCAweDI3LCAweDAwLCAweDlGLCAweDEzLCAweDdDLCAweEQ2LCAweEYwLCAweDQ5LCAweEMxLAorMHg1MywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHgwNCwKKzB4MDAsIDB4MEYsIDB4MDQsIDB4N0MsIDB4MDAsIDB4RjQsIDB4MjEsIDB4QzIsIDB4MDQsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NkMsCisweDQwLCAweEYwLCAweDAxLCAweEMwLCAweDA2LCAweDAwLCAweDFGLCAweDAyLCAweDVDLCAweDA4LCAweDMxLCAweDAxLCAweEMwLAorMHgwNCwgMHgwMCwgMHgxRiwgMHgwMCwgMHg0QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHg1MCwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjAsIDB4NTQsIDB4MDQsIDB4N0QsIDB4MDAsIDB4RjQsCisweDYxLCAweDEwLCAweDA1LCAweEMwLCAweDEyLCAweDAwLCAweDcxLCAweDA3LCAweEM0LCAweDA5LCAweEQwLCAweDI3LCAweDQwLAorMHgxQywgMHgwMCwgMHg2RCwgMHg2MCwgMHg0NCwgMHgwMSwgMHgxMiwgMHgzNiwgMHg0MSwgMHgxQywgMHgwMSwgMHg3RCwgMHg0NywKKzB4QzQsIDB4ODUsIDB4NTAsIDB4MjcsIDB4NDAsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDgwLCAweENELCAweDAwLCAweDM0LCAweDBGLCAweDEwLCAweDBDLCAweDQwLAorMHgzMCwgMHgwMCwgMHhDMSwgMHgwNywgMHgyNCwgMHgwOSwgMHhEMSwgMHhDNCwgMHg0MCwgMHhCMywgMHgwMCwgMHg4RCwgMHgwMCwKKzB4MTQsIDB4MDMsIDB4MTAsIDB4MDAsIDB4NDgsIDB4MzUsIDB4MDksIDB4REQsIDB4MDMsIDB4NDUsIDB4QUYsIDB4MTAsIDB4QUMsCisweDQwLCAweDUwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDg4LAorMHgyOCwgMHgwMCwgMHg2RCwgMHg4MiwgMHhCNCwgMHgwNywgMHgxMCwgMHhERiwgMHg0MCwgMHgzQSwgMHgwMywgMHhFMSwgMHgwMCwKKzB4ODQsIDB4MDMsIDB4RDAsIDB4MTMsIDB4NDgsIDB4MzksIDB4ODAsIDB4N0QsIDB4ODAsIDB4RDQsIDB4MTMsIDB4MUMsIDB4MDIsCisweDQwLCAweDM5LCAweDEwLCAweEVELCAweDIwLCAweEM0LCAweDAzLCAweDQxLCAweDFDLCAweDQwLCAweDEwLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxMCwgMHg2OCwgMHgwMCwgMHhFRiwgMHgwMSwKKzB4M0MsIDB4MDUsIDB4MzAsIDB4REUsIDB4QzAsIDB4N0MsIDB4MDAsIDB4NzMsIDB4MDEsIDB4QUMsIDB4MDcsIDB4RjAsIDB4MUUsCisweEMwLCAweDVCLCAweDAwLCAweEFGLCAweDAxLCAweDlDLCAweDE3LCAweDMwLCAweDEyLCAweEQwLCAweDc5LCAweDkwLCAweEJGLAorMHgwMSwgMHhDQywgMHgwNywgMHgyMCwgMHgxRSwgMHhDMCwgMHg1MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTgsIDB4MjUsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4MzEsIDB4MEQsCisweEM4LCAweEI3LCAweDA1LCAweDVGLCAweDIwLCAweDcwLCAweDAzLCAweEYxLCAweDAxLCAweEMwLCAweDE2LCAweDAwLCAweDVGLAorMHg4MCwgMHgyQywgMHg2QiwgMHhGMCwgMHgwMSwgMHhEMCwgMHgzNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwKKzB4MEQsIDB4RDAsIDB4NDMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweEEwLCAweDZGLCAweDAyLCAweEY3LCAweDA5LCAweEZDLCAweDA3LCAweEYwLCAweDFGLCAweEMwLCAweDc4LCAweDAwLCAweEZCLAorMHgwMSwgMHhGQywgMHgwNywgMHhGMCwgMHgxNywgMHhDMCwgMHg3RSwgMHgwMCwgMHhCQiwgMHgwMSwgMHhDQywgMHgxNywgMHhCMCwKKzB4OTcsIDB4QzAsIDB4N0MsIDB4MDgsIDB4N0YsIDB4MDEsIDB4Q0MsIDB4MDUsIDB4RjEsIDB4MUYsIDB4QzAsIDB4MEIsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDg4LCAweDI5LCAweDAwLCAweDZELAorMHg0OCwgMHhCMCwgMHgwMywgMHhEMCwgMHg0RSwgMHhDMCwgMHgzQiwgMHgwMSwgMHg2MSwgMHgyMiwgMHhCNCwgMHg4QiwgMHhEMCwKKzB4NDYsIDB4NDAsIDB4QjgsIDB4MDgsIDB4NzEsIDB4MDAsIDB4RkMsIDB4MTMsIDB4MTAsIDB4QzYsIDB4NDAsIDB4MzgsIDB4MDAsCisweDZELCAweDQ4LCAweDg0LCAweDAwLCAweEQwLCAweDQyLCAweDQwLCAweDU3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyOSwgMHgyMCwgMHhFNSwgMHg0MCwgMHhCNCwgMHgwMywgMHhEMCwKKzB4MEYsIDB4NDAsIDB4M0MsIDB4MTAsIDB4RTksIDB4MDgsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MDcsIDB4NDEsIDB4MUIsIDB4MDIsCisweEI5LCAweDA4LCAweEE0LCAweDczLCAweDkyLCAweDA2LCAweDQxLCAweDE4LCAweDAwLCAweDJELCAweDAwLCAweEE0LCAweDYxLAorMHhEMCwgMHgwRSwgMHg2MCwgMHgyMywgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDYsIDB4MjgsIDB4MjMsIDB4MDAsIDB4OUQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4RUMsIDB4NjAsIDB4QjIsIDB4MDQsCisweDA5LCAweDAxLCAweDM0LCAweDAzLCAweEQwLCAweDEwLCAweDQwLCAweDEwLCAweDAwLCAweDQxLCAweDIzLCAweDM2LCAweDBGLAorMHgxMiwgMHgzNCwgMHg0MSwgMHgyMCwgMHgyMCwgMHgwRCwgMHgwOSwgMHg2MCwgMHgwNCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgxQiwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4QTgsIDB4MjUsIDB4MDAsCisweDk3LCAweDAwLCAweDc0LCAweDAyLCAweEYwLCAweDBGLCAweEMwLCAweDNDLCAweDAwLCAweDlCLCAweDAyLCAweDdDLCAweDAzLAorMHhGMCwgMHgwNSwgMHg4MCwgMHgzNywgMHgwMCwgMHg0QiwgMHgwNSwgMHhFQywgMHgwNywgMHhCMCwgMHgzNCwgMHhEMCwgMHgwNCwKKzB4ODAsIDB4REYsIDB4MDEsIDB4NkQsIDB4MDYsIDB4RDAsIDB4MEQsIDB4NDgsIDB4NTcsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI5LCAweDAwLCAweDI3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAyLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzNywgMHgwOCwgMHg5NywgMHgwRSwgMHg3NCwgMHgwQiwgMHhFMCwgMHgwMSwgMHhBMCwgMHgzNiwKKzB4MTAsIDB4NUYsIDB4MDIsIDB4NUMsIDB4MTMsIDB4RjAsIDB4MDUsIDB4QzAsIDB4ODcsIDB4MEEsIDB4REYsIDB4MDIsIDB4NUMsCisweDAyLCAweEYwLCAweDBELCAweEM4LCAweDI3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4MSwgMHgwOCwgMHhBRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhFQywgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMCwgMHgzRSwKKzB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjEsIDB4MDcsIDB4QzgsIDB4MTcsIDB4MjAsIDB4M0IsIDB4MTgsIDB4Q0MsCisweDAzLCAweEIyLCAweDA3LCAweEQwLCAweDBFLCAweDAwLCAweEJGLCAweDAxLCAweEZDLCAweDAyLCAweDMwLCAweDIzLCAweEMxLAorMHgwNywgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMSwgMHgyNiwKKzB4MjAsIDB4MUQsIDB4MDEsIDB4NDQsIDB4MDQsIDB4RDAsIDB4MEMsIDB4QzAsIDB4MzYsIDB4MDAsIDB4MUQsIDB4MDEsIDB4NzQsCisweDBGLCAweEQwLCAweDMxLCAweDQyLCAweEQ3LCAweDAwLCAweDVELCAweDUyLCAweDA0LCAweDAzLCAweDEwLCAweDM1LCAweDQwLAorMHg0NCwgMHgwNCwgMHgxRCwgMHgwMywgMHg3NCwgMHg4QywgMHgxMCwgMHgyMSwgMHg0MCwgMHg4NywgMHgwMiwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MjYsIDB4ODAsIDB4OUQsIDB4MzEsIDB4NjQsCisweDBDLCAweEQwLCAweDBELCAweDQwLCAweDM2LCAweDAwLCAweDlELCAweDAxLCAweDc0LCAweDA3LCAweDUwLCAweDE1LCAweDQxLAorMHg3NywgMHgwMCwgMHg1RCwgMHgwMCwgMHg0NywgMHgwMywgMHg5MCwgMHgxRCwgMHg0MSwgMHg2NCwgMHgwMCwgMHg1RCwgMHg5NCwKKzB4NzQsIDB4NDYsIDB4MTAsIDB4MkQsIDB4NDgsIDB4MDcsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDIwLCAweDAwLCAweDBELCAweDAwLCAweDA0LCAweDAyLCAweEQwLCAweDBELCAweDQwLAorMHgzMiwgMHgwMCwgMHg4RCwgMHgyMCwgMHgzNCwgMHg4MywgMHhEMCwgMHgwMCwgMHg0MCwgMHgyMywgMHgwMCwgMHg0RCwgMHgwMCwKKzB4NDYsIDB4MDMsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MjAsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MjYsIDB4ODIsIDB4MUMsIDB4MDAsCisweDQwLCAweDQzLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDEwLAorMHgyNCwgMHgwMCwgMHg5RiwgMHg4MCwgMHg2QywgMHgwMCwgMHhGMSwgMHgwRiwgMHhDMCwgMHgzRSwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4NzAsIDB4MDUsIDB4QzQsIDB4MTcsIDB4MDAsIDB4MUIsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4QjQsIDB4MDUsCisweEMwLCAweDA0LCAweDAwLCAweDRGLCAweDAwLCAweDdDLCAweDAyLCAweDMwLCAweDAxLCAweEM0LCAweDA3LCAweDQwLCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCMCwgMHgyRiwgMHgwMCwgMHhCRSwgMHgwMCwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MEUsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MDIsCisweEMwLCAweDNGLCAweDIwLCAweDdGLCAweDQwLCAweEZDLCAweDAzLCAweEYwLCAweDA2LCAweEMwLCAweDJGLCAweDAwLCAweDNGLAorMHgwMCwgMHhGQywgMHgwMCwgMHhGMiwgMHgwMywgMHhFMCwgMHgxNywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTAsIDB4N0YsIDB4MDAsIDB4QkYsIDB4MDEsIDB4RUMsIDB4MzIsIDB4RjIsIDB4QzcsCisweEM4LCAweDVGLCAweDAyLCAweDMzLCAweEExLCAweEZDLCAweDA3LCAweDMwLCAweDZCLCAweEM4LCAweDNGLCAweDA4LCAweEIzLAorMHgwMCwgMHhFQywgMHgwNCwgMHgxMCwgMHgxQiwgMHhDOCwgMHgxRiwgMHgwMywgMHhGRCwgMHgwOSwgMHhDQywgMHg4MiwgMHgzMiwKKzB4MUYsIDB4QzYsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDA4LCAweDdGLCAweDAwLCAweERELCAweDgxLCAweDc0LCAweDMyLCAweEQyLCAweEM1LCAweDQwLCAweDA3LCAweDExLCAweEQxLAorMHgwMSwgMHhGNCwgMHgwNywgMHgxMCwgMHg2OSwgMHg0OCwgMHhGRiwgMHgwMCwgMHg5NSwgMHgwMywgMHg3NCwgMHgwNCwgMHgxMCwKKzB4MUQsIDB4NDAsIDB4OTcsIDB4MDEsIDB4RUQsIDB4MDQsIDB4NDQsIDB4MEUsIDB4MTAsIDB4MUYsIDB4NDAsIDB4MEYsIDB4NjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweEEwLCAweDMzLCAweDAwLCAweENELAorMHgwMCwgMHgyNCwgMHgwMywgMHhEMCwgMHg0NCwgMHg0MCwgMHgzNywgMHgwMSwgMHhDNSwgMHgwMSwgMHgxNCwgMHg4MywgMHgxMCwKKzB4MjgsIDB4NDAsIDB4MzMsIDB4MEEsIDB4MDEsIDB4MDgsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MEMsIDB4NDAsIDB4OTMsIDB4MDAsCisweENELCAweDAwLCAweDE0LCAweDIyLCAweDFBLCAweDBDLCAweDQwLCAweDRGLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4OCwgMHgzNSwgMHgwMCwgMHhERCwgMHgwMSwgMHg3NCwgMHg4MiwgMHhEMCwKKzB4NjUsIDB4NDAsIDB4MjcsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NzQsIDB4MDMsIDB4NTAsIDB4MEQsIDB4NDIsIDB4MzcsIDB4MDgsCisweDk1LCAweDIwLCAweDc0LCAweDA0LCAweDEwLCAweDFELCAweDQyLCAweDM3LCAweDA5LCAweERDLCAweDAwLCAweDU0LCAweDEzLAorMHgxMCwgMHgwRCwgMHg0MCwgMHgwRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QTgsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDUsIDB4NkMsIDB4MDIsIDB4RjAsIDB4MDUsIDB4QzAsIDB4QjMsIDB4MDEsCisweEQ3LCAweDIxLCAweDNDLCAweDAzLCAweDM0LCAweDFELCAweEMwLCAweDM3LCAweDEwLCAweDkzLCAweDgwLCAweDI4LCAweDBDLAorMHgzMiwgMHgxRCwgMHhDMSwgMHg1NywgMHgwMCwgMHhERiwgMHg4MCwgMHg1QywgMHg4NiwgMHgzMSwgMHgwRCwgMHhDMCwgMHgwQiwKKzB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4M0QsIDB4MDAsCisweEZFLCAweDAwLCAweEZDLCAweDIzLCAweEYxLCAweDBGLCAweEMwLCAweEJGLCAweDQwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLAorMHhBMCwgMHgzQiwgMHhDMCwgMHgzNywgMHgwNCwgMHhCRiwgMHgyMywgMHhGMCwgMHgwMCwgMHhGMCwgMHgwRiwgMHhDMSwgMHgxRiwKKzB4MDAsIDB4RkYsIDB4MDAsIDB4MkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzQsIDB4MUYsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDM1LCAweDAwLCAweEQ3LCAweDAwLCAweDdDLCAweDA3LAorMHg3MCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhEMywgMHg4MCwgMHg3QywgMHg0MywgMHgzNCwgMHgwRCwgMHhDMCwgMHgzMywKKzB4NDIsIDB4MTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4MEQsIDB4QzAsIDB4QjcsIDB4MDgsIDB4QzMsIDB4MDAsIDB4NEMsCisweDQzLCAweDcwLCAweDBELCAweEMxLCAweDBCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMywgMHhBMCwgMHgzNCwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHhCNCwKKzB4MDgsIDB4REEsIDB4MDEsIDB4NzQsIDB4MDcsIDB4MDAsIDB4NEQsIDB4NDYsIDB4QkYsIDB4MDAsIDB4QjEsIDB4MDAsIDB4NDQsCisweDQ4LCAweEQwLCAweDJELCAweDQwLCAweDc3LCAweDA0LCAweEQxLCAweDAwLCAweDQwLCAweDBGLCAweDEwLCAweDNELCAweDQwLAorMHg2RiwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhBMCwgMHgzMiwKKzB4MDAsIDB4QzEsIDB4MDAsIDB4MjAsIDB4MDIsIDB4MTAsIDB4OUMsIDB4NDAsIDB4NjAsIDB4MjYsIDB4QzUsIDB4MDEsIDB4MjQsCisweDI3LCAweDEwLCAweDA4LCAweDAwLCAweEYzLCAweDAwLCAweDg5LCAweDAxLCAweDM1LCAweDQ0LCAweEQwLCAweDJDLCAweDQwLAorMHgzMywgMHgwMCwgMHhDNSwgMHgyOSwgMHgwNCwgMHgyRiwgMHg5MCwgMHhCQywgMHg0MiwgMHgwRiwgMHgwMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4NzgsIDB4MDAsIDB4RTEsIDB4MDEsIDB4QjYsCisweDA2LCAweDEwLCAweDE0LCAweDU4LCAweDY4LCAweDEwLCAweEVELCAweDUxLCAweDM0LCAweDA3LCAweDEwLCAweDFBLCAweDQyLAorMHg3QiwgMHgxMCwgMHg4OSwgMHgwMSwgMHg5NCwgMHgwNCwgMHhEMCwgMHgxRSwgMHg0MCwgMHg1QiwgMHhDMiwgMHhFNSwgMHgwMywKKzB4ODQsIDB4MDYsIDB4OTAsIDB4MUUsIDB4NDAsIDB4NzcsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweEM3LCAweDAwLCAweDdFLCAweDAyLCAweDcwLCAweDA0LCAweEMwLAorMHgyMCwgMHg4MiwgMHhDNywgMHg4MCwgMHgyQywgMHgxMywgMHgzOCwgMHgwQywgMHhFMCwgMHgzMywgMHgwMCwgMHgwQiwgMHg5MCwKKzB4MUMsIDB4MzAsIDB4RjAsIDB4MEMsIDB4QzAsIDB4QjcsIDB4QTAsIDB4QzcsIDB4ODAsIDB4MEMsIDB4MDMsIDB4RjAsIDB4MEMsCisweEMwLCAweDRCLCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEI4LAorMHg3OSwgMHhDMCwgMHhGRiwgMHgwMCwgMHhGNCwgMHgwMiwgMHhGOCwgMHgwNywgMHhDOCwgMHgyQiwgMHgwOCwgMHhGQiwgMHgwOCwKKzB4RkMsIDB4MDcsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QjcsIDB4MTAsIDB4RUMsIDB4QTAsIDB4RjAsIDB4MEYsCisweEMwLCAweDNGLCAweDAwLCAweEZCLCAweDAxLCAweDdFLCAweDIzLCAweDcwLCAweDFELCAweEMxLCAweDBCLCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhBMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwMCwKKzB4N0MsIDB4ODMsIDB4RjAsIDB4OEQsIDB4ODAsIDB4MjcsIDB4MDAsIDB4REYsIDB4NDAsIDB4N0UsIDB4ODMsIDB4RjAsIDB4ODksCisweDQwLCAweDM3LCAweDAzLCAweDlGLCAweDAwLCAweDZFLCAweDAwLCAweEYwLCAweDBELCAweEMwLCAweDE3LCAweDEwLCAweEQzLAorMHgwMCwgMHg3RSwgMHgwMiwgMHhGMCwgMHgwRCwgMHhDMCwgMHg0MCwgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODgsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MUIsIDB4RDAsIDB4MEUsCisweDQwLCAweDJCLCAweDAwLCAweEVELCAweDAwLCAweEI2LCAweDBCLCAweEQwLCAweDRBLCAweDQ0LCAweDNCLCAweDAyLCAweDhELAorMHgwNCwgMHg4NCwgMHg4MCwgMHhEMCwgMHgwRSwgMHg0MCwgMHg5MywgMHgwMSwgMHhFMSwgMHgwNCwgMHhCNCwgMHg4MiwgMHhEOCwKKzB4NEMsIDB4NDAsIDB4NEQsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweDAwLCAweDc5LCAweDAyLCAweEVELCAweDAxLCAweDk0LCAweDA3LCAweEQwLCAweDFFLCAweDYwLCAweDZCLCAweDI0LCAweEVELAorMHgwMSwgMHhCNCwgMHg5NywgMHhEMCwgMHg1RSwgMHg2MiwgMHg3QiwgMHgxOCwgMHgyRCwgMHgwMSwgMHhBNCwgMHhDNCwgMHhEMiwKKzB4MUUsIDB4NDEsIDB4RkIsIDB4MDAsIDB4RTEsIDB4MEQsIDB4QjQsIDB4MkYsIDB4RDEsIDB4MUUsIDB4NDAsIDB4MTAsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDI4LCAweDMzLCAweDEwLCAweDRELAorMHgwNywgMHg3NCwgMHgwNywgMHhEMCwgMHgzOCwgMHg0OSwgMHhFMywgMHgyMCwgMHhDRCwgMHgwNSwgMHgzNCwgMHgwMywgMHhEMCwKKzB4MUMsIDB4NDAsIDB4MzMsIDB4ODAsIDB4Q0QsIDB4MDAsIDB4MDQsIDB4MEYsIDB4RDAsIDB4NzQsIDB4NDAsIDB4NjMsIDB4NDAsCisweEMxLCAweDAwLCAweDM0LCAweDA3LCAweEQwLCAweDBDLCAweDQwLCAweDU5LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHgxNSwgMHgwMCwgMHg3RiwgMHgxMCwgMHg3QywgMHg0MSwgMHhGMCwKKzB4MTcsIDB4QzAsIDB4REYsIDB4MDAsIDB4N0YsIDB4MDQsIDB4M0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTcsIDB4MDAsCisweDdGLCAweDExLCAweEFDLCAweDA1LCAweEYwLCAweDI3LCAweEM4LCAweERGLCAweDA4LCAweDUzLCAweDgwLCAweDdDLCAweDAxLAorMHhGMSwgMHgwNCwgMHhDMCwgMHg1QywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MDAsIDB4ODcsIDB4MDgsIDB4MUYsIDB4ODAsIDB4NzgsIDB4MDAsIDB4RjAsIDB4ODEsIDB4QzgsIDB4ODcsIDB4MDAsCisweDFDLCAweDAwLCAweDdDLCAweDA4LCAweEYwLCAweDgxLCAweDgyLCAweDAyLCAweDAwLCAweDBGLCAweDAwLCAweDdDLCAweDEwLAorMHhGMCwgMHgyMSwgMHhDMCwgMHgwMywgMHgwMCwgMHgxRiwgMHgwMiwgMHg3NCwgMHgwMCwgMHhGMCwgMHgwMSwgMHhDOCwgMHg0QiwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NjcsIDB4MDIsCisweDlGLCAweDAwLCAweDdDLCAweDA2LCAweDMwLCAweDQ5LCAweEMwLCAweDY3LCAweDA0LCAweDlGLCAweEM4LCAweDdDLCAweDAyLAorMHgzMSwgMHgxOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5MywgMHgwMCwgMHg0RCwgMHg4QSwgMHgzMCwgMHg0OSwgMHhDMCwgMHg2NywKKzB4MDQsIDB4OTMsIDB4MDgsIDB4NEMsIDB4MjIsIDB4MzAsIDB4MDksIDB4QzAsIDB4NDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweEVFLCAweDAwLCAweDlELCAweDQwLCAweEYwLCAweDA2LAorMHgxMCwgMHgwQiwgMHg0MCwgMHhBNywgMHgwMiwgMHg5RCwgMHgwMSwgMHhGNCwgMHgwQSwgMHgxMCwgMHg5QiwgMHg0MCwgMHgyNywKKzB4MDEsIDB4OUIsIDB4ODAsIDB4NDQsIDB4MDYsIDB4MTAsIDB4MjksIDB4NDQsIDB4MkYsIDB4MDAsIDB4QjEsIDB4MDMsIDB4ODQsCisweDAyLCAweDEwLCAweDBCLCAweDAwLCAweDA0LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwNCwgMHg5RCwgMHg4MCwgMHg3MCwgMHgyMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4NDIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OTEsIDB4MDgsIDB4NDQsCisweDQzLCAweDE0LCAweDI5LCAweDQwLCAweDI3LCAweDAyLCAweDgwLCAweDAwLCAweDQ0LCAweEMyLCAweDEwLCAweDA5LCAweDQwLAorMHg3MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgyMCwKKzB4MTgsIDB4OEQsIDB4NDIsIDB4MzQsIDB4MEEsIDB4MTQsIDB4MjgsIDB4NDQsIDB4QjMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzYsCisweDAyLCAweDExLCAweDI4LCAweDQwLCAweDIzLCAweDQ1LCAweDg5LCAweDE0LCAweDA0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLAorMHhBMywgMHgwMCwgMHg4MSwgMHgwMiwgMHgwNCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHg1MCwgMHhBMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4QjAsIDB4NDYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsCisweDA0LCAweDEyLCAweDExLCAweEMyLCAweDA3LCAweDEwLCAweDFGLCAweDAwLCAweDdDLCAweDA0LCAweDM0LCAweDExLCAweEMwLAorMHgwNywgMHgwMSwgMHgxMywgMHgwNCwgMHg0QywgMHgwMCwgMHgzMiwgMHgwMSwgMHhDMCwgMHg0NywgMHg0MCwgMHg1MywgMHgwMSwKKzB4NEMsIDB4MDQsIDB4MzQsIDB4MTEsIDB4RDAsIDB4NzQsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE5LCAweEI4LCAweEE3LCAweDAwLCAweEJGLCAweDAxLCAweEZDLCAweDhFLCAweEYwLCAweDNCLCAweEMwLAorMHg3RiwgMHgyMCwgMHhCRSwgMHgwMCwgMHg3QywgMHgwQSwgMHhGMCwgMHgzQiwgMHhDMCwgMHgyNywgMHgwMCwgMHhGNywgMHgwMCwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4RUYsIDB4MDAsIDB4OUMsIDB4MjMsIDB4RkQsIDB4MEEsIDB4RjAsIDB4MjksCisweEMwLCAweDY3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEEwLAorMHg2QiwgMHgwMCwgMHg5MywgMHg4MiwgMHhGQywgMHgxNiwgMHhGMCwgMHg3QiwgMHhDMSwgMHgyQywgMHgwMCwgMHhCMywgMHgwMCwKKzB4RkMsIDB4MDYsIDB4RjAsIDB4N0IsIDB4QzEsIDB4NkMsIDB4MDEsIDB4QkUsIDB4ODEsIDB4Q0MsIDB4MDIsIDB4RjAsIDB4MEIsCisweEQwLCAweEVDLCAweDAxLCAweEJGLCAweDA3LCAweEZDLCAweDE2LCAweEYwLCAweDFCLCAweEMwLCAweDYwLCAweDAwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgwOCwgMHg4NywgMHgwMCwgMHg1MSwgMHgwNSwKKzB4NzQsIDB4NTQsIDB4RDAsIDB4MzEsIDB4NDAsIDB4NDAsIDB4MDUsIDB4MTEsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDEsIDB4MzEsCisweDQ0LCAweDA1LCAweDAwLCAweDFELCAweDBBLCAweDQ0LCAweDAxLCAweEQwLCAweDAxLCAweDQwLCAweDQ0LCAweDIwLCAweDFELAorMHgwMywgMHg3NCwgMHgyOCwgMHhEMiwgMHgwMSwgMHg0OCwgMHg3MCwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4QTMsIDB4NDAsIDB4ODUsIDB4NDQsIDB4MzYsIDB4MEEsIDB4RDgsIDB4NDksCisweDQwLCAweDIyLCAweDAwLCAweDgxLCAweDIxLCAweDM0LCAweDBBLCAweEQxLCAweDQ4LCAweDQwLCAweEEwLCAweDAwLCAweDhELAorMHhBMCwgMHgwNCwgMHgwMiwgMHhEMSwgMHgwOCwgMHg2MCwgMHhBMiwgMHgxMSwgMHhDRCwgMHgwNiwgMHgzNCwgMHg4MiwgMHhEMCwKKzB4MjgsIDB4NDAsIDB4NDgsIDB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweEE4LCAweDI1LCAweDgwLCAweDk1LCAweDAxLCAweDc0LCAweDgyLCAweEQwLCAweDE5LCAweDQxLCAweDIyLCAweDQwLCAweDkxLAorMHgwMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgwOSwgMHg0MCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwKKzB4MDksIDB4NDEsIDB4MjYsIDB4MDUsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjAsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LCAweDI3LCAweDAwLCAweEI3LAorMHgwMCwgMHhGQywgMHgwNiwgMHhGMiwgMHgwQSwgMHhEMCwgMHhBRSwgMHgxMCwgMHg5MywgMHgwQiwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4MjQsIDB4MjAsIDB4OUYsIDB4MDMsIDB4NEMsIDB4OEUsIDB4RjAsIDB4MDgsIDB4QzAsIDB4RUUsIDB4MDAsCisweEJGLCAweDAwLCAweDdDLCAweDA2LCAweEYwLCAweDA4LCAweEQwLCAweDE0LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MCwgMHgyNSwgMHgwMCwgMHg5QiwgMHgwMCwgMHg3QywgMHgwRSwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MzksIDB4QzAsIDB4MjcsIDB4MEMsCisweDhGLCAweDQ5LCAweDdELCAweDEyLCAweEYxLCAweDQ5LCAweEMwLCAweDI1LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDUyLAorMHhGMCwgMHgwOSwgMHg4MSwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MDgsIDB4MDEsIDB4MDEsIDB4MTMsIDB4MDIsIDB4N0MsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDAsCisweDFCLCAweDA4LCAweDdDLCAweDgwLCAweEYwLCAweDAxLCAweEMwLCAweDA0LCAweDAwLCAweDE3LCAweDg4LCAweDdDLCAweDAwLAorMHhGMSwgMHgyMSwgMHhDMCwgMHgwNSwgMHgwMCwgMHgxQiwgMHgwNCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg0MywKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4QTAsIDB4REMsIDB4MDAsCisweDUwLCAweDAwLCAweDc0LCAweDAxLCAweDEwLCAweDA1LCAweDQyLCAweDVDLCAweDAyLCAweDUxLCAweDAwLCAweEY0LCAweDA1LAorMHhEMCwgMHgxNSwgMHg0MSwgMHgxQywgMHgwMCwgMHg1MSwgMHg4MSwgMHhGNCwgMHgwNSwgMHhEMCwgMHgwNywgMHg0MSwgMHgxNCwKKzB4MDQsIDB4NzEsIDB4NDAsIDB4RjQsIDB4MEQsIDB4RDAsIDB4MjcsIDB4NDAsIDB4NTMsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweEUyLCAweDAwLCAweEM5LCAweDAwLCAweDM0LCAweDA3LAorMHg5MCwgMHg5QywgMHg0MCwgMHgyMCwgMHgyMiwgMHg4OSwgMHgyMCwgMHgzNCwgMHgwNiwgMHhEMCwgMHgwRCwgMHg0MCwgMHhCMCwKKzB4MEEsIDB4ODUsIDB4MDEsIDB4MzQsIDB4MjMsIDB4RDAsIDB4MDgsIDB4NDMsIDB4NzMsIDB4MDAsIDB4ODksIDB4MDAsIDB4MzQsCisweDBFLCAweEQwLCAweEE4LCAweDQwLCAweDUzLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHg4MCwgMHhBOCwgMHgwMCwgMHhFOSwgMHgwNCwgMHgzNCwgMHgwRSwgMHg5MCwgMHhDQSwgMHg1MCwgMHgzOCwKKzB4MDEsIDB4RTEsIDB4MDAsIDB4QjQsIDB4MEEsIDB4RDAsIDB4MEUsIDB4NzAsIDB4NDgsIDB4MDAsIDB4RTEsIDB4MDAsIDB4QjQsCisweDAwLCAweEQwLCAweDAyLCAweDQwLCAweDdBLCAweDAwLCAweDYxLCAweDAwLCAweEI0LCAweDQyLCAweEQxLCAweDBBLCAweDYwLAorMHgwNywgMHgyMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwgMHg2OCwKKzB4MDAsIDB4RUIsIDB4MDcsIDB4QkMsIDB4MDcsIDB4QjAsIDB4MUMsIDB4QzAsIDB4RDgsIDB4MDAsIDB4RUIsIDB4MDEsIDB4QkMsCisweDA2LCAweEYwLCAweDVGLCAweEMwLCAweDU4LCAweDAwLCAweEU3LCAweDAxLCAweEJDLCAweDA0LCAweEYxLCAweDE2LCAweEMyLAorMHg3MywgMHgwMCwgMHhFQiwgMHgwNywgMHhCQywgMHgwNiwgMHhGMCwgMHgxQSwgMHhDMCwgMHg0NywgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MjUsIDB4NDAsIDB4RDcsIDB4MDAsIDB4N0MsCisweDAyLCAweDc0LCAweDA5LCAweEMwLCAweDE3LCAweDAwLCAweERFLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEMwLAorMHgwMywgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwNCwgMHhDNiwgMHgzNSwgMHgwMiwgMHg1RiwgMHgwMCwKKzB4N0MsIDB4MDIsIDB4RkEsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEEwLCAweDdGLCAweDAwLCAweEYzLCAweDAxLCAweERDLCAweDQ3LCAweDMwLCAweDFGLCAweEMyLAorMHg3OCwgMHgwMCwgMHhGMywgMHgwMSwgMHhGQywgMHgwNywgMHgzMCwgMHgxQiwgMHg0MSwgMHg0RCwgMHgwMCwgMHhGMSwgMHgwOSwKKzB4Q0MsIDB4MDYsIDB4RTAsIDB4MTYsIDB4RTAsIDB4NkMsIDB4MDEsIDB4RTMsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4MzAsIDB4OUIsCisweEMyLCAweDAzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDg4LAorMHhCOSwgMHgxMCwgMHhFMSwgMHgxMCwgMHg4NCwgMHgwMiwgMHgxMiwgMHgwQiwgMHg0MSwgMHgzOCwgMHgyMCwgMHhFMSwgMHgwMCwKKzB4QjQsIDB4MDIsIDB4MTAsIDB4MEEsIDB4NDAsIDB4MDgsIDB4MDEsIDB4RTEsIDB4MDgsIDB4ODQsIDB4MDAsIDB4RDEsIDB4MEUsCisweEQwLCAweDJDLCAweDQxLCAweDYxLCAweDAwLCAweEM0LCAweDAyLCAweDEwLCAweDhBLCAweDQwLCAweDU3LCAweDYwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHhGOSwgMHgwMSwKKzB4OTQsIDB4MDMsIDB4MTQsIDB4OEUsIDB4NDAsIDB4MUMsIDB4MDAsIDB4RTEsIDB4MDAsIDB4MzQsIDB4MDMsIDB4OTAsIDB4MEEsCisweDQwLCAweDA4LCAweDAwLCAweEY5LCAweDAwLCAweEE0LCAweDAwLCAweEQwLCAweDhFLCAweDQxLCAweDI4LCAweDEzLCAweEUxLAorMHgwMCwgMHhENCwgMHgyMywgMHg5MCwgMHgwQSwgMHg0NCwgMHgwMywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MjgsIDB4MjMsIDB4MDAsIDB4QzksIDB4MDIsIDB4MDYsIDB4MDYsIDB4MTAsIDB4MDksCisweDQyLCAweDEwLCAweDAwLCAweEMxLCAweDA2LCAweDM0LCAweDAyLCAweDkwLCAweDA4LCAweDQwLCAweDAwLCAweDAwLCAweEM5LAorMHgwMSwgMHgyNiwgMHg0QywgMHhEMCwgMHgwQywgMHg0MiwgMHgyMCwgMHgwNCwgMHg0MSwgMHgwMCwgMHgxNCwgMHg4MSwgMHg5MCwKKzB4MDgsIDB4NDAsIDB4MTMsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweEE4LCAweDI1LCAweDAwLCAweERCLCAweDAwLCAweDVDLCAweDAzLCAweDMwLCAweDFELCAweEMwLCAweDc0LCAweDQ4LCAweEQzLAorMHgxMywgMHg3QywgMHgwMiwgMHhCNCwgMHgxRCwgMHhDMCwgMHgwNSwgMHgwMCwgMHhDQiwgMHgwMSwgMHg2QywgMHg0NiwgMHhGMCwKKzB4MUQsIDB4RTAsIDB4NzQsIDB4MDAsIDB4RDMsIDB4NDAsIDB4MUQsIDB4MDYsIDB4QjAsIDB4MEQsIDB4QzAsIDB4NTcsIDB4MjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI3LCAweDQwLCAweEQ3LAorMHgwMCwgMHg3QywgMHgyMiwgMHhGMCwgMHg0OSwgMHhEMCwgMHgzNywgMHgwMiwgMHhERiwgMHgwMCwgMHg3QywgMHgwQSwgMHg3MCwKKzB4OEQsIDB4RDAsIDB4MDcsIDB4MDAsIDB4RDcsIDB4MEMsIDB4NUQsIDB4MDAsIDB4RjAsIDB4MDUsIDB4QzksIDB4MzUsIDB4MDIsCisweDRGLCAweDAwLCAweDY0LCAweDIyLCAweDc0LCAweDI5LCAweEMwLCAweDA3LCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgyRiwgMHgwMCwgMHhGRiwgMHgxMCwgMHg0QywgMHgwQiwgMHhGMCwKKzB4MEYsIDB4QzAsIDB4NUMsIDB4MDAsIDB4RkYsIDB4ODAsIDB4RUMsIDB4MEUsIDB4RjAsIDB4OEMsIDB4QzAsIDB4MDQsIDB4MDAsCisweEZGLCAweDA4LCAweENDLCAweDAwLCAweEYwLCAweDg3LCAweEMwLCAweDdFLCAweDIwLCAweEYzLCAweDA4LCAweENDLCAweDAyLAorMHgzMywgMHgyRiwgMHhDNiwgMHgxMywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ODEsIDB4MDAsIDB4MjYsIDB4MDAsIDB4REQsIDB4MDAsIDB4NDQsIDB4ODcsIDB4RDAsIDB4MTksIDB4QzAsIDB4RjYsIDB4MDAsCisweENELCAweDA5LCAweDQ0LCAweDAwLCAweEQyLCAweDE5LCAweDQwLCAweDQ0LCAweDA0LCAweERDLCAweDIwLCAweDZDLCAweDA0LAorMHg5MCwgMHgwNCwgMHg0MCwgMHgyMSwgMHgwMCwgMHhEMywgMHgwMiwgMHg0NCwgMHgwMiwgMHgxMCwgMHgxOSwgMHg0MCwgMHgxNywKKzB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QTAsIDB4MzQsIDB4ODIsCisweENELCAweDAwLCAweDQ0LCAweDAzLCAweEQwLCAweDRELCAweDUwLCAweEI0LCAweDAyLCAweERELCAweDAwLCAweDY0LCAweDAzLAorMHhEOCwgMHgwOSwgMHg0MCwgMHg0NCwgMHgyMCwgMHhERCwgMHgwMCwgMHg0NCwgMHgwNiwgMHhEMCwgMHgwNSwgMHg0NCwgMHgyNCwKKzB4MDEsIDB4RDAsIDB4MTAsIDB4NDQsIDB4MDMsIDB4MTAsIDB4MEQsIDB4NDEsIDB4MDcsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDAyLAorMHhEMCwgMHgwQywgMHg0MCwgMHgxMiwgMHgwMCwgMHhERCwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwgMHgwOCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MjYsIDB4MDAsIDB4OTAsIDB4MEQsIDB4NDAsIDB4MzUsIDB4NDAsIDB4NDEsIDB4MDAsIDB4MDUsCisweDAyLCAweDFDLCAweDA0LCAweDQ0LCAweDQzLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhCMCwgMHgxNiwgMHgwMCwgMHhGRiwgMHg0MCwgMHg0QywgMHgwMiwgMHhGMCwgMHgwOSwgMHg0MCwgMHgxNCwKKzB4MjAsIDB4REYsIDB4MDAsIDB4NkMsIDB4MDMsIDB4RDAsIDB4MEQsIDB4QzQsIDB4MDQsIDB4MDgsIDB4REYsIDB4MDAsIDB4NEMsCisweDAwLCAweEYwLCAweDBELCAweEMwLCAweDI2LCAweDEwLCAweDUzLCAweDAwLCAweDRDLCAweDAzLCAweDMwLCAweDBELCAweEMyLAorMHgwMywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhCOCwgMHgxRiwKKzB4MDAsIDB4RUYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4MUQsIDB4MDAsIDB4RkYsIDB4MDAsIDB4RkMsCisweDAxLCAweEYwLCAweDBCLCAweEQwLCAweDBGLCAweDAwLCAweEVGLCAweDAwLCAweEZDLCAweDAwLCAweEYwLCAweDBGLCAweEMwLAorMHgyRiwgMHgwMCwgMHg3NywgMHg0MCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwNywgMHhDMCwgMHgxNywgMHgyMiwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4N0YsIDB4MDAsIDB4RUYsIDB4MDksIDB4REMsCisweDA2LCAweEYyLCAweDFGLCAweEMwLCAweDdELCAweDAwLCAweEUzLCAweDAxLCAweERDLCAweDEyLCAweDMwLCAweDEzLCAweEMwLAorMHg0RSwgMHgxMCwgMHhCMywgMHgwMCwgMHhEQywgMHgzMiwgMHg3MCwgMHgyQiwgMHhDMCwgMHhCQywgMHgwMCwgMHhCMywgMHgyMCwKKzB4RkMsIDB4MTAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweDE4LCAweDc3LCAweDAwLCAweERELCAweDA0LCAweDQ0LCAweDA2LCAweDEwLCAweDFELCAweDQwLAorMHg3NCwgMHgwMCwgMHhEMSwgMHgwMSwgMHg0NCwgMHgwRSwgMHgxMCwgMHgxMSwgMHg0MCwgMHg3NCwgMHgwMCwgMHg1MSwgMHg0MywKKzB4NDQsIDB4QjIsIDB4MTAsIDB4QTEsIDB4NDAsIDB4QkMsIDB4MDMsIDB4MTEsIDB4MzIsIDB4NzQsIDB4MjYsIDB4NTAsIDB4MTEsCisweDQwLCAweDBDLCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweEEwLAorMHgzMywgMHgwMCwgMHhDRCwgMHgwNCwgMHgxNCwgMHgwMywgMHg1OCwgMHgwQywgMHg0MCwgMHgyNywgMHgwMCwgMHhENSwgMHgwMCwKKzB4MTcsIDB4MDgsIDB4MTAsIDB4MDEsIDB4NjAsIDB4MDYsIDB4MDgsIDB4ODEsIDB4MjgsIDB4MTYsIDB4MTIsIDB4RDgsIDB4NDAsCisweDQwLCAweDMwLCAweDAwLCAweDA1LCAweDg2LCAweDM0LCAweDAwLCAweDE4LCAweDA4LCAweDYwLCAweDRFLCAweDgwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBMCwgMHgzNSwgMHgwMCwgMHhERCwgMHgwNCwKKzB4NTQsIDB4MDcsIDB4MTAsIDB4MEQsIDB4NDYsIDB4MjYsIDB4MDAsIDB4RDUsIDB4MTEsIDB4NDQsIDB4MEMsIDB4MTIsIDB4MTEsCisweDQwLCAweDc0LCAweDAwLCAweDkxLCAweDAxLCAweDQ0LCAweDQ2LCAweDE4LCAweDEwLCAweDQwLCAweDM2LCAweDAwLCAweDE1LAorMHgwMSwgMHg3NCwgMHg0MywgMHg1MiwgMHgxOSwgMHg0MSwgMHgwQywgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4MzcsIDB4MDgsIDB4REYsIDB4MDAsIDB4MUUsIDB4MDYsIDB4NzAsIDB4RDUsCisweEMwLCAweEQzLCAweDAwLCAweEM3LCAweDAzLCAweDVDLCAweDBDLCAweDMwLCAweDMwLCAweEM0LCAweDUyLCAweDA0LCAweDkyLAorMHgwNywgMHg1RCwgMHgwNCwgMHg3MCwgMHgzOSwgMHhDMCwgMHgzNCwgMHgwMCwgMHg5NywgMHg2MSwgMHg3QywgMHg4RCwgMHgzMCwKKzB4MzksIDB4QzAsIDB4MkEsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsCisweDgwLCAweDNELCAweDMwLCAweEZGLCAweDAxLCAweEVDLCAweDAyLCAweEYwLCAweDBGLCAweEMwLCAweDdELCAweDAyLCAweEZCLAorMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwgMHgwMywgMHhDMCwgMHgxRiwgMHgwMCwgMHg2RiwgMHgyMCwgMHhCQywgMHgwMCwgMHhGMCwKKzB4MDMsIDB4RDAsIDB4M0QsIDB4MDAsIDB4M0IsIDB4MjAsIDB4RkMsIDB4MjQsIDB4RjEsIDB4MEIsIDB4QzAsIDB4MUYsIDB4MDAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBBLCAweDA4LCAweDM1LCAweDAwLCAweERGLAorMHgwMCwgMHg1QywgMHgwMywgMHhCMCwgMHg0OSwgMHhDMCwgMHhBNSwgMHgwMCwgMHhEQiwgMHgwMiwgMHg0QywgMHgwMCwgMHhGMCwKKzB4MjEsIDB4QzAsIDB4MTcsIDB4MDIsIDB4RDcsIDB4MDUsIDB4NkMsIDB4MDIsIDB4RjEsIDB4MDksIDB4QzAsIDB4MzcsIDB4NDQsCisweDkzLCAweDAyLCAweDZDLCAweDBCLCAweEYwLCAweDI5LCAweEM0LCAweDJCLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzNCwgMHgwMCwgMHhERCwgMHg0RCwgMHg0MCwgMHgwRiwgMHgxNSwKKzB4MzgsIDB4NDAsIDB4MjQsIDB4MTAsIDB4OTEsIDB4MDAsIDB4MkMsIDB4NDQsIDB4RDEsIDB4QjEsIDB4NDQsIDB4NTQsIDB4MTAsCisweEQxLCAweDAxLCAweDc0LCAweEIyLCAweEQyLCAweDAxLCAweDRBLCAweEZGLCAweDAwLCAweDkwLCAweDMwLCAweDM0LCAweDgzLAorMHhEMSwgMHgwOCwgMHg0MCwgMHg0QywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTMsIDB4QTAsIDB4MzIsIDB4MDAsIDB4REQsIDB4MDAsIDB4MTQsIDB4MjYsIDB4MTAsIDB4OUMsIDB4NDgsIDB4MzEsIDB4MDAsCisweENDLCAweDA4LCAweDI1LCAweDAyLCAweEQwLCAweDEwLCAweDQwLCAweDExLCAweDAwLCAweDg1LCAweDAyLCAweDM0LCAweDAwLAorMHhEMCwgMHgwOCwgMHg0MiwgMHgzNiwgMHgwMCwgMHg4NSwgMHgyNSwgMHgyNCwgMHgwMCwgMHhEMCwgMHhCMCwgMHg0MSwgMHgwRCwKKzB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEQsIDB4MDgsIDB4N0EsIDB4MDAsCisweEZELCAweDAxLCAweEM0LCAweDFFLCAweDE4LCAweDlGLCAweDQwLCAweDdDLCAweDEwLCAweEY1LCAweDQxLCAweEI0LCAweDA3LAorMHhEMCwgMHgxMiwgMHgwMCwgMHg1OCwgMHgwMCwgMHhBMCwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHgwMCwgMHg3MywKKzB4MDQsIDB4RTUsIDB4MDEsIDB4QjQsIDB4MDQsIDB4RDEsIDB4MTYsIDB4MDAsIDB4MzQsIDB4MjAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweENGLCAweDAwLCAweDFDLCAweDAyLAorMHgzMCwgMHg4QywgMHhDMCwgMHhCMSwgMHgwMCwgMHhDRiwgMHgwMCwgMHgyQywgMHgwMywgMHhGMCwgMHhFMCwgMHhDMywgMHgxMSwKKzB4MDAsIDB4ODcsIDB4MDAsIDB4MjgsIDB4MDEsIDB4RjAsIDB4MDQsIDB4QzAsIDB4MzIsIDB4MzAsIDB4NDcsIDB4MDAsIDB4MkMsCisweDAzLCAweEYwLCAweDAwLCAweEMwLCAweDQ5LCAweDQwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHhBMCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwgMHhCQywgMHgxMiwgMHg3MCwgMHg4RSwgMHhDMCwgMHgzQiwKKzB4MDIsIDB4RkIsIDB4ODgsIDB4RUMsIDB4MjMsIDB4RjAsIDB4ODIsIDB4QzAsIDB4MTksIDB4MDAsIDB4QkIsIDB4MDAsIDB4RkMsCisweDAzLCAweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDIwLCAweDdCLCAweDQwLCAweEZDLCAweDIzLCAweEYwLCAweDhGLCAweEMwLAorMHgwOSwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhBMCwgMHgzNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDYsIDB4NzAsIDB4MEQsIDB4RTAsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4NDQsCisweDAxLCAweEIyLCAweDA1LCAweEMyLCAweDEzLCAweDAwLCAweENCLCAweDAwLCAweDZDLCAweDA1LCAweDcyLCAweDBELCAweEMyLAorMHhCNywgMHgwMywgMHhERCwgMHgwMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgxNSwgMHg4MCwgMHg0MCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OTgsIDB4MzksIDB4MTAsIDB4RUMsIDB4MDAsIDB4QjQsCisweDgyLCAweDEwLCAweDBFLCAweDUyLCAweDM4LCAweDAwLCAweDZELCAweDAwLCAweDk0LCAweDAzLCAweDkwLCAweDA2LCAweDQwLAorMHgxQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHhDNSwgMHgwMSwgMHgxMCwgMHgwRSwgMHg0OCwgMHgzQiwgMHgwNSwgMHhFRCwgMHgwMCwKKzB4ODQsIDB4MDAsIDB4OTAsIDB4MEUsIDB4NDAsIDB4NEMsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDIwLCAweEFDLCAweDkxLCAweEI0LCAweDA2LCAweEQwLCAweDFGLCAweDQ4LAorMHg3OSwgMHgyMCwgMHhGRCwgMHgwMSwgMHhCNCwgMHg0NywgMHg5MCwgMHgxRSwgMHg2MCwgMHg1QiwgMHgwMCwgMHhFOSwgMHgwMSwKKzB4QTQsIDB4MDcsIDB4NTAsIDB4MUUsIDB4NDEsIDB4N0IsIDB4MDAsIDB4Q0QsIDB4MDMsIDB4QjQsIDB4MDcsIDB4RDgsIDB4MTQsCisweDY0LCAweDEwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDIwLAorMHgzMywgMHgwMCwgMHhDRCwgMHgwMSwgMHgzNCwgMHg0MCwgMHhEMCwgMHg1QywgMHg0MCwgMHgzMSwgMHgwMCwgMHhDRCwgMHgwNSwKKzB4MzQsIDB4MDMsIDB4OTgsIDB4MjQsIDB4NDAsIDB4OTMsIDB4MDgsIDB4QzEsIDB4MDgsIDB4MDQsIDB4MDMsIDB4MTAsIDB4MkMsCisweDQxLCAweDMzLCAweDg4LCAweERELCAweDAwLCAweDE0LCAweDFGLCAweDkwLCAweDJDLCAweDQwLCAweDU4LCAweDAwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHgxNywgMHgwMCwgMHg1RiwgMHgwMSwKKzB4RkMsIDB4MDksIDB4RjAsIDB4MDcsIDB4NDAsIDB4MUQsIDB4MDAsIDB4N0YsIDB4MDEsIDB4RkMsIDB4MDEsIDB4QjAsIDB4NzcsCisweEMwLCAweDVCLCAweDAwLCAweDZCLCAweDAxLCAweEVDLCAweDI5LCAweDcwLCAweDA3LCAweEMwLCAweDE3LCAweDAwLCAweDdGLAorMHgwOCwgMHhGQywgMHgwMSwgMHhGMCwgMHg0NywgMHg0MCwgMHg1QywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MDUsIDB4MDAsIDB4MUYsIDB4QzIsIDB4N0MsIDB4MDAsIDB4MDAsIDB4QTEsCisweDgwLCAweDA2LCAweDAxLCAweDFDLCAweDA4LCAweDU4LCAweDAwLCAweEMzLCAweDAxLCAweDg4LCAweDA3LCAweDAyLCAweDFGLAorMHg0MiwgMHg3QywgMHgyMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHg4NywgMHgyMCwgMHgxRiwgMHg0MCwgMHg2MCwgMHgyMCwgMHhCMCwKKzB4MDEsIDB4RDAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDAzLCAweDdDLCAweDEyLCAweEY5LCAweDA5LCAweEM4LCAweDI1LCAweDAwLCAweDlGLAorMHgwNCwgMHgxQywgMHg1NiwgMHgzMSwgMHg4OSwgMHhDMywgMHgyNywgMHgwNCwgMHg5NywgMHgwNSwgMHg0MCwgMHgwNiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MjcsIDB4MDEsIDB4OUYsIDB4MDAsIDB4NEMsIDB4ODIsIDB4RjMsIDB4MzksIDB4QzEsIDB4NDMsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLCAweDI2LCAweDAwLCAweDlELAorMHgwMywgMHg3NCwgMHgwQSwgMHhEOCwgMHg0OCwgMHg0MCwgMHgyNCwgMHgxMCwgMHg4RCwgMHgwMCwgMHg0NCwgMHgwNiwgMHgxNCwKKzB4MTksIDB4NDQsIDB4RTcsIDB4ODEsIDB4OUIsIDB4MTIsIDB4NDQsIDB4MEUsIDB4RDAsIDB4MDksIDB4NDAsIDB4NjcsIDB4MjAsCisweDlELCAweDBFLCAweDQ0LCAweDAyLCAweDc4LCAweDM5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBMCwgMHgyNCwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwQiwgMHg5OCwKKzB4MDksIDB4NDAsIDB4MjUsIDB4MDAsIDB4OUQsIDB4MDIsIDB4NTYsIDB4MDIsIDB4NTAsIDB4MDksIDB4NDgsIDB4NjcsIDB4MDAsCisweDk1LCAweDAwLCAweDU0LCAweDFBLCAweEQwLCAweDBELCAweDYwLCAweDI3LCAweDAwLCAweERELCAweDAwLCAweDQ0LCAweDAyLAorMHg1MCwgMHgyOSwgMHg0MCwgMHg3MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTQsIDB4MjgsIDB4MjAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjAsIDB4MDAsCisweDhELCAweDgwLCAweDE0LCAweEQyLCAweDUwLCAweDBDLCAweDQwLCAweDIzLCAweDAwLCAweDgxLCAweDAwLCAweDEwLCAweDUyLAorMHhEMCwgMHg0OCwgMHg2MSwgMHgzMywgMHgwRCwgMHg4RCwgMHgxNCwgMHgxNCwgMHgwMiwgMHg1MCwgMHg0OCwgMHg0MSwgMHg1MywKKzB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsIDB4MzAsIDB4MDQsIDB4MDAsCisweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDkwLCAweDAxLCAweEMwLCAweDA1LCAweDAwLCAweDFGLCAweDgwLCAweDVDLCAweDEwLAorMHg3MCwgMHgwMSwgMHhDMCwgMHgwNywgMHgyMCwgMHgxNCwgMHgxNCwgMHg0RCwgMHgxMCwgMHhGMCwgMHg0MSwgMHhDMCwgMHgwNywKKzB4MDEsIDB4MUYsIDB4MDQsIDB4NEQsIDB4NTAsIDB4NzAsIDB4NDEsIDB4RTIsIDB4NzcsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEEwLCAweDI3LCAweDAwLCAweEJGLCAweDk0LCAweEZDLCAweDAyLAorMHhDMCwgMHgwRSwgMHg0MCwgMHgzRiwgMHgwMCwgMHhBRiwgMHg4MCwgMHhFQywgMHgwMiwgMHhCMCwgMHgwQiwgMHhDMCwgMHgyRiwKKzB4MDAsIDB4QkYsIDB4MDAsIDB4RUMsIDB4NTIsIDB4RjAsIDB4NEIsIDB4NDEsIDB4MjcsIDB4MDUsIDB4QkYsIDB4MTQsIDB4RUMsCisweDAyLCAweDcwLCAweDBCLCAweEMwLCAweDY3LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBMCwgMHgyNywgMHgwMCwgMHhCRiwgMHgwOCwgMHhGQywgMHgwMiwgMHg3OSwgMHgwQSwgMHhDMCwgMHgyNSwKKzB4MDAsIDB4QkYsIDB4MDAsIDB4Q0MsIDB4MDYsIDB4QjEsIDB4MEIsIDB4QzAsIDB4MkYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4REQsCisweDEyLCAweEYwLCAweDk5LCAweEMwLCAweDZELCAweDAzLCAweEI5LCAweDBELCAweEY4LCAweDAyLCAweDMwLCAweDBCLCAweEM4LAorMHg2MCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHgxOCwgMHgwNywKKzB4MDAsIDB4MUQsIDB4NDEsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MUQsIDB4MDAsIDB4NDQsCisweDI4LCAweDEwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDFELCAweDQwLCAweDQ0LCAweDEwLCAweEQwLCAweEIxLCAweDQwLAorMHhDNCwgMHgwMywgMHgxMSwgMHgwRiwgMHg3NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg1MCwgMHg3MCwgMHg2MCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDQsIDB4NzQsCisweDAyLCAweEQ0LCAweDA4LCAweDQwLCAweDIxLCAweDIwLCAweDlELCAweDAwLCAweDE3LCAweDAyLCAweDkwLCAweDA4LCAweDQwLAorMHgyMywgMHgwMCwgMHg5RCwgMHgwMCwgMHgzNiwgMHg2MiwgMHhEMCwgMHg0OCwgMHg0MCwgMHgyMywgMHgwMCwgMHg4OSwgMHgwMCwKKzB4MzQsIDB4MDIsIDB4MTQsIDB4MDgsIDB4NDgsIDB4NDksIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE4LCAweEEwLCAweDI1LCAweDAwLCAweDlELCAweDgwLCAweDc0LCAweDQyLCAweDEyLCAweDA5LCAweDQ0LAorMHgyNCwgMHgwMCwgMHg5RCwgMHg0MCwgMHg1MiwgMHg0NiwgMHgwMCwgMHgwOSwgMHg0MSwgMHgyNywgMHgwMCwgMHg5RCwgMHgwMCwKKzB4NzQsIDB4OEUsIDB4RDAsIDB4MDksIDB4NjEsIDB4MjQsIDB4MDAsIDB4OTEsIDB4MTAsIDB4NzQsIDB4MDIsIDB4MTAsIDB4MDksCisweDQwLCAweDYwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweEE4LAorMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3OCwgMHgwQSwgMHhGMiwgMHgwOCwgMHhDMCwgMHgyNSwgMHg4MCwgMHg5RiwgMHgwNCwKKzB4NUMsIDB4MEEsIDB4QjIsIDB4MDksIDB4QzIsIDB4MjcsIDB4MDgsIDB4OUYsIDB4MTksIDB4N0MsIDB4MDIsIDB4RjAsIDB4MzksCisweEMwLCAweDI1LCAweDIwLCAweDlBLCAweDAzLCAweDdFLCAweDE2LCAweDIwLCAweDA5LCAweEU1LCAweDE1LCAweDIwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4MCwgMHgyNSwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4N0MsIDB4MTIsIDB4RjAsIDB4MjksIDB4QzAsIDB4QTYsIDB4MDAsIDB4OUYsIDB4MjgsIDB4MkMsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDkwLCAweDRDLCAweDAyLCAweEYwLCAweDQ4LCAweEM0LCAweDI3LCAweDAwLCAweDlGLAorMHg4OSwgMHg3RSwgMHgyMiwgMHhGMiwgMHgwOCwgMHhFMCwgMHg0QiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MUYsIDB4MDQsIDB4N0MsIDB4MTgsIDB4QjIsIDB4NDEsCisweEMwLCAweDA0LCAweDIwLCAweDFGLCAweDA2LCAweDRDLCAweDI4LCAweEYyLCAweDYxLCAweEMwLCAweDA1LCAweDAyLCAweDFGLAorMHgwMiwgMHg2QywgMHgwOCwgMHhCMCwgMHgyMSwgMHhDMiwgMHgwNywgMHgwMCwgMHgxRiwgMHgxMiwgMHgxQywgMHgwOCwgMHgzMCwKKzB4MjEsIDB4QzAsIDB4NDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweEEwLCAweDE0LCAweDAwLCAweDdELCAweDExLCAweEIwLCAweDBELCAweDEwLCAweDE3LCAweDU4LCAweDE0LCAweDAwLCAweDZELAorMHgwMywgMHg0NSwgMHgwNSwgMHhEMCwgMHgxNywgMHg0NCwgMHg5RiwgMHgwMiwgMHg2RCwgMHgwMCwgMHhDMCwgMHgwMSwgMHgxMCwKKzB4MDUsIDB4NDAsIDB4OUYsIDB4MDIsIDB4N0QsIDB4ODAsIDB4NDQsIDB4MDEsIDB4MTAsIDB4MjcsIDB4MDAsIDB4NTAsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDMyLCAweDAwLCAweENELAorMHgwMCwgMHgzNCwgMHg4QSwgMHg5MCwgMHhBQywgMHgwNCwgMHgzMCwgMHgwMCwgMHg0NSwgMHgwMiwgMHgxMiwgMHgwNiwgMHhEMSwKKzB4MkMsIDB4NDAsIDB4OTEsIDB4MDAsIDB4Q0QsIDB4MjIsIDB4MjQsIDB4MTcsIDB4OTAsIDB4MEMsIDB4NDAsIDB4MzcsIDB4QTIsCisweENELCAweDA4LCAweDE2LCAweEE3LCAweDEwLCAweDRDLCAweDUwLCAweDUwLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHgzOCwgMHgwMCwgMHg2RCwgMHgwMCwgMHhGNCwgMHgwQSwgMHgxMCwKKzB4MEUsIDB4NDAsIDB4MzgsIDB4MDAsIDB4NkQsIDB4MTAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NjEsIDB4MUIsIDB4ODAsCisweEZELCAweDMwLCAweEEwLCAweDQ3LCAweDkwLCAweDRFLCAweDQwLCAweDNCLCAweEEwLCAweDZELCAweDAxLCAweDg0LCAweDAzLAorMHg1MCwgMHgyQywgMHg0MCwgMHgwNCwgMHgyMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTEsIDB4MTAsIDB4NzgsIDB4MDAsIDB4RUYsIDB4MDEsIDB4QkMsIDB4MDYsIDB4QjAsIDB4MUUsIDB4QzAsIDB4NzgsIDB4MjAsCisweDZGLCAweDAxLCAweDlDLCAweDA3LCAweEYwLCAweDFFLCAweEUwLCAweDU5LCAweDAwLCAweEVGLCAweDAxLCAweEU4LCAweDA3LAorMHhCMCwgMHhCRSwgMHhDMCwgMHg3QiwgMHgyMCwgMHhGRiwgMHgyMSwgMHgxQywgMHgwNywgMHgzNCwgMHgxRSwgMHhDMCwgMHg0NCwKKzB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QjgsIDB4MzUsIDB4MDAsCisweERGLCAweDAwLCAweDNDLCAweDAyLCAweEYwLCAweDBELCAweEMwLCAweDM3LCAweDEwLCAweDRGLCAweDAwLCAweDRELCAweDgzLAorMHhGMCwgMHgwRCwgMHhFMCwgMHgxNywgMHgwMCwgMHhDRiwgMHgwMCwgMHg1QywgMHgwMywgMHg3MCwgMHg2RCwgMHhDNCwgMHgxNywKKzB4MDgsIDB4NUUsIDB4NDAsIDB4N0MsIDB4MDMsIDB4QjAsIDB4MDksIDB4QzAsIDB4NDMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDdELCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDA3LAorMHgzMCwgMHgxNywgMHhDMCwgMHg3RCwgMHgwMCwgMHg3RiwgMHgwMSwgMHhEQywgMHgyNywgMHhGMSwgMHg5RiwgMHhDMCwgMHg1RiwKKzB4MDAsIDB4RUYsIDB4MDEsIDB4RUMsIDB4ODUsIDB4QjAsIDB4OUYsIDB4MDAsIDB4NUYsIDB4MDIsIDB4RjMsIDB4NEQsIDB4QzgsCisweDA3LCAweDIwLCAweDFGLCAweEMwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHgxOCwgMHgzOSwgMHgwMCwgMHg2RCwgMHg0MiwgMHhCNCwgMHgxMiwgMHgxMCwgMHgwRSwgMHg0MCwgMHgzOCwKKzB4MDAsIDB4MjksIDB4NDQsIDB4ODAsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4MUIsIDB4MDAsIDB4NkQsIDB4MDIsIDB4OTQsCisweDAxLCAweEQwLCAweDBFLCAweDQzLCAweDFBLCAweDAwLCAweEUxLCAweDE4LCAweDg0LCAweDUzLCAweDEwLCAweDA3LCAweDQxLAorMHg1NSwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwKKzB4MDAsIDB4RUQsIDB4MDAsIDB4RjQsIDB4MDIsIDB4MTgsIDB4MkUsIDB4NTAsIDB4QjksIDB4MDAsIDB4NkQsIDB4QjIsIDB4ODAsCisweDQzLCAweEQwLCAweDBFLCAweDQyLCAweDFCLCAweDA0LCAweEVELCAweDE4LCAweDk1LCAweDAxLCAweDkwLCAweDBFLCAweDQyLAorMHgzQSwgMHgzMCwgMHhFMSwgMHg0NCwgMHhCNSwgMHgwMywgMHgxQywgMHgwRiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MjAsIDB4MzAsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsCisweDBBLCAweDE4LCAweDBDLCAweDU4LCAweDMxLCAweDA4LCAweDQ5LCAweDAxLCAweDA0LCAweDA3LCAweEQwLCAweDA4LCAweDQwLAorMHhEMywgMHgwMCwgMHg0RCwgMHgwMywgMHgwNCwgMHg5QywgMHhEMCwgMHgxRCwgMHg0OCwgMHgwMiwgMHg4MCwgMHg5MSwgMHgwMSwKKzB4MzQsIDB4MTMsIDB4MTAsIDB4MzAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDM1LCAweDAwLCAweDlGLCAweDAwLCAweDc0LCAweDBCLCAweDMwLCAweDJELCAweEMwLAorMHgzMSwgMHgwMCwgMHhDRiwgMHgwMiwgMHg0RCwgMHgyMywgMHhGMiwgMHgwRCwgMHhDMCwgMHhENywgMHgwMCwgMHhDRiwgMHgwOSwKKzB4NUMsIDB4MUEsIDB4QjAsIDB4M0YsIDB4NDAsIDB4MjYsIDB4MjAsIDB4OTEsIDB4MDIsIDB4N0MsIDB4MDIsIDB4MzAsIDB4MkQsCisweEMwLCAweDU0LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLAorMHgzNywgMHgwMCwgMHgxRiwgMHgwMSwgMHg3QywgMHg0MywgMHhGMCwgMHgwRCwgMHg0MCwgMHgzNiwgMHgwMCwgMHhEQiwgMHgwMiwKKzB4N0MsIDB4MDMsIDB4RjAsIDB4NkQsIDB4QzQsIDB4MTcsIDB4MDEsIDB4REYsIDB4MDAsIDB4NzQsIDB4MDAsIDB4RDAsIDB4MEQsCisweEMxLCAweDI2LCAweDAwLCAweDFGLCAweDAyLCAweDRDLCAweDAyLCAweEYxLCAweDRELCAweEMwLCAweDA3LCAweDAwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwOCwgMHgzRiwgMHgwOCwgMHgzRiwgMHgwMCwKKzB4RkMsIDB4MDIsIDB4RjAsIDB4MEYsIDB4QzAsIDB4M0QsIDB4MDgsIDB4NzcsIDB4MDAsIDB4Q0MsIDB4MDMsIDB4RTAsIDB4OUYsCisweEQwLCAweDFDLCAweDAwLCAweEY5LCAweDAwLCAweDhELCAweDAyLCAweEIwLCAweDBGLCAweEMwLCAweDI0LCAweDAwLCAweDlGLAorMHgxMCwgMHg0OCwgMHg4MiwgMHhEMCwgMHgwNywgMHhDMCwgMHgxMywgMHgyMiwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4MjAsIDB4MzYsIDB4MDAsIDB4MUQsIDB4MDMsIDB4NzQsIDB4ODYsIDB4RDIsIDB4M0MsCisweDQxLCAweDM0LCAweDAwLCAweDUxLCAweDIxLCAweDQ0LCAweDAzLCAweEQwLCAweDVDLCAweDQwLCAweDU0LCAweDA4LCAweERELAorMHg0MywgMHg0NCwgMHg0RSwgMHgxMCwgMHgwRCwgMHg0MCwgMHg2NCwgMHgwMCwgMHgxRCwgMHgwNywgMHg2QywgMHhBMiwgMHhEMiwKKzB4MDEsIDB4NDAsIDB4MTcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweEEwLCAweDM0LCAweDAwLCAweDlELCAweDAxLCAweDc0LCAweDA3LCAweEQwLCAweDFELCAweDQwLCAweDM1LCAweDAwLCAweDU1LAorMHgwMywgMHg0NSwgMHgwNywgMHhEMiwgMHgwRCwgMHg0MiwgMHg1NSwgMHgwNCwgMHg5RCwgMHg4MSwgMHg1NCwgMHgwNiwgMHg5MCwKKzB4MEQsIDB4NTAsIDB4QzQsIDB4MDAsIDB4MUQsIDB4MDEsIDB4NTQsIDB4MDMsIDB4RDAsIDB4ODksIDB4NDEsIDB4MDcsIDB4MDgsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDI4LCAweDMwLCAweDAwLCAweDBELAorMHgwMCwgMHgzNCwgMHgwNywgMHhEMCwgMHgwOSwgMHg0MCwgMHgzNCwgMHgwMCwgMHg1MSwgMHgwMCwgMHgwNCwgMHgwMywgMHhEMCwKKzB4MDQsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NEQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTgsIDB4MEMsIDB4NDAsIDB4MDAsIDB4MDAsCisweDFELCAweDAwLCAweDM2LCAweDgzLCAweEQwLCAweDAwLCAweDQwLCAweDQzLCAweEEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhCMSwgMHgzNiwgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MzUsIDB4MDAsIDB4NTcsIDB4MDAsIDB4NDgsIDB4MDMsIDB4RjAsIDB4MEQsIDB4NDAsIDB4MzQsIDB4MTAsCisweDVCLCAweDAwLCAweDQ4LCAweDAyLCAweEIwLCAweDBGLCAweEMwLCAweDI0LCAweDAwLCAweDlGLCAweDAwLCAweDVDLCAweDAzLAorMHhGMCwgMHgwMSwgMHhDOCwgMHgwMywgMHhDMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4QTAsIDB4M0YsIDB4MDAsIDB4QkYsIDB4MDAsIDB4QjQsIDB4MDAsIDB4RjAsIDB4MEEsIDB4QzAsIDB4M0YsIDB4MjAsCisweDZGLCAweDAwLCAweEZDLCAweDAzLCAweEUwLCAweDBGLCAweEMwLCAweDJGLCAweDAwLCAweDdFLCAweDAwLCAweEZDLCAweDAyLAorMHhGMCwgMHgwRiwgMHhDMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhFQywgMHgwMywgMHhGMCwgMHgwMywgMHhDMCwgMHgxNywKKzB4MjEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4N0YsIDB4MDAsCisweEVGLCAweDA5LCAweENDLCAweDI3LCAweEYyLCAweDFGLCAweEMwLCAweDdDLCAweDAwLCAweEZGLCAweDAxLCAweEJDLCAweDI3LAorMHhGMCwgMHgzRiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhFRSwgMHgwOSwgMHhDQywgMHgwNywgMHgzMSwgMHgxRSwgMHhDMCwgMHg3QywKKzB4MDAsIDB4RjMsIDB4MDksIDB4RkMsIDB4MDcsIDB4MzAsIDB4MUYsIDB4QzAsIDB4MEMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LCAweDQ3LCAweDEwLCAweDFELCAweDQ0LCAweDQ0LCAweDEwLAorMHhEMCwgMHgxMSwgMHg0MCwgMHg0NCwgMHgwMCwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwMCwgMHhEMiwgMHgwMSwgMHg0OCwgMHg0NywKKzB4MDAsIDB4MUQsIDB4NDQsIDB4NDQsIDB4MDQsIDB4NTAsIDB4MTEsIDB4NDAsIDB4NDQsIDB4MDAsIDB4MTEsIDB4ODQsIDB4NzQsCisweDA0LCAweDE0LCAweDExLCAweDQwLCAweDA0LCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMSwgMHhBMCwgMHgzMywgMHgwMCwgMHhERCwgMHgwMCwgMHgxNCwgMHgwMywgMHhEMCwgMHgwRCwgMHg0MCwgMHgzMCwKKzB4MDgsIDB4Q0MsIDB4ODAsIDB4MzYsIDB4MTMsIDB4RDAsIDB4NEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsCisweDAzLCAweDExLCAweDBDLCAweDQwLCAweDMwLCAweDAwLCAweEMxLCAweDgwLCAweDc0LCAweDAzLCAweDE4LCAweDBDLCAweDQwLAorMHg0NCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwNSwKKzB4MDAsIDB4MUQsIDB4MDAsIDB4NTQsIDB4ODAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MTgsIDB4MUQsIDB4MDAsIDB4NzQsCisweDAwLCAweEQwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDBELCAweDAwLCAweDQ1LCAweDAwLCAweDUwLCAweDAxLCAweDQwLAorMHgwNCwgMHgwMCwgMHgxMSwgMHg2MCwgMHg3NiwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwQywgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MjAsIDB4NUMsCisweDAzLCAweEYyLCAweDBELCAweEQwLCAweDM0LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLAorMHgzNywgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHg4MywgMHgzMCwgMHgwQywgMHhDMCwgMHgzMCwgMHgwMCwgMHhEMywgMHgwMCwKKzB4M0MsIDB4ODMsIDB4MzEsIDB4MEQsIDB4QzAsIDB4MDAsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDBELCAweDAwLCAweDNGLCAweDAwLCAweEVDLCAweDAwLCAweEYwLCAweDAzLCAweEMwLAorMHgwRiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMiwgMHgwMywgMHhDMCwgMHgwRiwgMHgwMCwgMHgzRiwgMHhCMCwKKzB4RkMsIDB4MDAsIDB4RjIsIDB4MDMsIDB4RDAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4ODAsIDB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsCisweEQxLCAweDFGLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLAorMHgzNSwgMHgwMCwgMHhERiwgMHgwMSwgMHg0QywgMHgwMywgMHgzMCwgMHgwRCwgMHhDMCwgMHgzNCwgMHgwMCwgMHhEMywgMHg4MCwKKzB4NEMsIDB4MjMsIDB4MzQsIDB4OEQsIDB4QzAsIDB4NzQsIDB4MDAsIDB4REYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4MzAsIDB4MEQsCisweEMwLCAweDM0LCAweDAxLCAweEQzLCAweDAwLCAweDRDLCAweDgzLCAweEYwLCAweDBELCAweEMwLCAweDBCLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgwNCwgMHgwMCwgMHgwRCwgMHgwMCwKKzB4NDAsIDB4NDAsIDB4MTAsIDB4MTAsIDB4NTAsIDB4MDQsIDB4MDAsIDB4MUEsIDB4MDUsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MTEsCisweEMwLCAweDg2LCAweDAwLCAweDFELCAweDAzLCAweDA0LCAweDA0LCAweDEwLCAweDExLCAweDQwLCAweDg1LCAweDA4LCAweDExLAorMHgxMSwgMHg2RSwgMHgyQywgMHhEMCwgMHgzMCwgMHg0MCwgMHg0RiwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTgsIDB4NzIsIDB4MDIsIDB4Q0QsIDB4MDAsIDB4MDYsIDB4MDcsIDB4MDAsIDB4OUMsCisweDQwLCAweDcwLCAweDgwLCAweEMxLCAweDAxLCAweDIwLCAweDg3LCAweDEwLCAweDBDLCAweDQyLCAweDMwLCAweDA0LCAweENELAorMHgyMCwgMHgwNCwgMHgyMywgMHgxQSwgMHgxQywgMHg0MCwgMHgzMCwgMHgwMCwgMHhDMSwgMHg4MSwgMHgyNCwgMHgwNywgMHhEMCwKKzB4M0MsIDB4NDAsIDB4MUYsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDgwLCAweDQ4LCAweDAyLCAweDNELCAweDAxLCAweDg0LCAweDA0LCAweDEwLCAweDkyLCAweDQwLCAweDQ4LCAweDAwLCAweDM5LAorMHgwMSwgMHhFNCwgMHgwNCwgMHgxMCwgMHgzMywgMHg0MCwgMHg0QSwgMHgyMCwgMHgyRCwgMHg5MSwgMHg4NSwgMHgxNCwgMHgxOCwKKzB4MTMsIDB4NDEsIDB4NDksIDB4MDAsIDB4MjEsIDB4MDEsIDB4QTQsIDB4NDQsIDB4RDAsIDB4MTIsIDB4NDEsIDB4MUIsIDB4MDAsCisweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLCAweDMwLCAweDAwLCAweENGLAorMHg4MCwgMHg0NCwgMHgyMywgMHgzNCwgMHgwQywgMHhDMCwgMHgzMCwgMHgyNiwgMHhDMywgMHgwMCwgMHgyRCwgMHgyMywgMHgzMCwKKzB4MEMsIDB4NDAsIDB4MzAsIDB4MjAsIDB4Q0YsIDB4NDQsIDB4MEUsIDB4MDMsIDB4MzQsIDB4MEMsIDB4QzAsIDB4MzAsIDB4NDAsCisweEQzLCAweDA4LCAweDI1LCAweDAzLCAweEYwLCAweDBDLCAweEMwLCAweDRCLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhCOCwgMHgwRCwgMHgwOCwgMHgzRiwgMHg4MCwgMHhGRCwgMHgwMCwgMHhGMCwKKzB4MDIsIDB4QzAsIDB4MEIsIDB4ODAsIDB4MkYsIDB4MDAsIDB4REMsIDB4MjAsIDB4RjAsIDB4ODIsIDB4RTAsIDB4MEYsIDB4MDIsCisweDNGLCAweDAwLCAweEJDLCAweDEwLCAweEYwLCAweDAzLCAweEMwLCAweDBCLCAweDAwLCAweDNGLCAweDAwLCAweDVFLCAweDAwLAorMHhGMCwgMHgxMywgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4QTAsIDB4MzMsIDB4MDAsIDB4RDcsIDB4MDAsIDB4N0MsIDB4ODMsIDB4RjAsIDB4MUQsIDB4QzAsIDB4MzQsIDB4MDAsCisweERGLCAweDAwLCAweDdDLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDczLCAweDAwLCAweEQzLCAweDAwLCAweDFDLCAweDAzLAorMHgzMCwgMHgwRCwgMHhDMCwgMHgzMywgMHgwMCwgMHhEMywgMHgwMCwgMHg3RSwgMHgwMywgMHhGMCwgMHgxRCwgMHhDMCwgMHg1NCwKKzB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODgsIDB4MDksIDB4MjAsCisweDIxLCAweDIwLCAweEI0LCAweDAwLCAweEQwLCAweDAyLCAweDQwLCAweDA4LCAweDEwLCAweDJELCAweDQwLCAweEI0LCAweDAwLAorMHhEMCwgMHgwMiwgMHg0MCwgMHgwQiwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHg1MiwgMHgwMiwgMHg0MCwgMHgwQiwKKzB4MDAsIDB4MjEsIDB4MDAsIDB4QjYsIDB4MDAsIDB4RDEsIDB4MDIsIDB4NDAsIDB4NDgsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDc5LCAweDAwLCAweEU1LCAweEMxLCAweEI0LCAweDA3LAorMHhEOCwgMHgxRiwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFRCwgMHgwMSwgMHhCNCwgMHgwNywgMHhEMCwgMHgxRSwgMHg0QSwgMHg3QiwKKzB4ODgsIDB4RTEsIDB4MDEsIDB4OTQsIDB4MDcsIDB4OTQsIDB4MUUsIDB4NDAsIDB4N0YsIDB4MDAsIDB4RTksIDB4MDEsIDB4QjQsCisweDg3LCAweEQyLCAweDFFLCAweDUyLCAweDBDLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgyOCwgMHgwMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHhEOSwgMHgwMCwgMHg1NiwgMHgwMCwKKzB4MDgsIDB4MEQsIDB4ODAsIDB4NzYsIDB4MDAsIDB4RDAsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MDAsIDB4MDEsIDB4NDAsIDB4MDQsCisweDAwLCAweEQwLCAweDAwLCAweDQ4LCAweDAzLCAweDA4LCAweDA5LCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweDAwLCAweDQwLAorMHg0OCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhBOCwgMHgxMSwKKzB4MDAsIDB4NTcsIDB4MDAsIDB4M0MsIDB4MDEsIDB4RjAsIDB4MDUsIDB4QzAsIDB4MTAsIDB4MDAsIDB4NUYsIDB4MDAsIDB4N0MsCisweDAxLCAweEYwLCAweDA0LCAweEMwLCAweDE3LCAweDQwLCAweDQzLCAweDAwLCAweDFDLCAweDAxLCAweEI0LCAweDA1LCAweEMwLAorMHgxNywgMHgwMCwgMHg1QiwgMHgwMCwgMHg3QywgMHgwMSwgMHhGMCwgMHgwNSwgMHhDMCwgMHg1QywgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsCisweDAwLCAweEYwLCAweDAzLCAweEMwLCAweDBGLCAweDAwLCAweDNGLCAweDAwLCAweEY0LCAweDAwLCAweEYwLCAweDAzLCAweEM0LAorMHg4RiwgMHgwMCwgMHgzRiwgMHgwMCwgMHhGRCwgMHgwOCwgMHg3MCwgMHgyMywgMHhDMCwgMHg4RiwgMHg0MCwgMHgzNywgMHgwMCwKKzB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4NEIsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDAwLCAweDkzLCAweDA5LCAweDdDLCAweDI2LCAweDMwLCAweDE5LCAweEMwLAorMHg2NywgMHgwMCwgMHg5MywgMHgwOCwgMHg3QywgMHgwQSwgMHgzMSwgMHgxOSwgMHhDOCwgMHg2NiwgMHgwMiwgMHg5RiwgMHg4MCwKKzB4NkMsIDB4MDIsIDB4MzQsIDB4MDksIDB4QzAsIDB4NjcsIDB4NDAsIDB4OTIsIDB4MDUsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksCisweEMwLCAweDQzLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIwLAorMHgyNiwgMHgwMCwgMHg5MSwgMHgwMSwgMHg3NCwgMHgwMiwgMHg1MSwgMHgxOSwgMHg0MCwgMHgyNywgMHgwMCwgMHg5MSwgMHgwMSwKKzB4NzQsIDB4MDIsIDB4MTAsIDB4ODksIDB4NDAsIDB4NjQsIDB4MDEsIDB4OUQsIDB4MDAsIDB4NDQsIDB4MTIsIDB4MTAsIDB4MzksCisweDQ4LCAweDIzLCAweDAyLCAweDkxLCAweDAxLCAweDc0LCAweDBFLCAweEQwLCAweDA5LCAweDQwLCAweDA3LCAweDAwLCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyNCwgMHgwMSwgMHhCMSwgMHg4MCwKKzB4RjQsIDB4MDIsIDB4MTAsIDB4OEIsIDB4NDAsIDB4MkYsIDB4MDEsIDB4QjEsIDB4MDAsIDB4RjQsIDB4MDIsIDB4MTAsIDB4MEIsCisweDQwLCAweDJFLCAweDIwLCAweEJELCAweDAwLCAweEM0LCAweDAyLCAweDEwLCAweDhCLCAweDQwLCAweDJGLCAweDgwLCAweEI1LAorMHgwMCwgMHhGNCwgMHg1MiwgMHhEMCwgMHgwQiwgMHg0MCwgMHg2MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MkMsIDB4MDAsIDB4QTEsIDB4MDIsIDB4RjQsIDB4MEEsIDB4NTAsIDB4MEEsCisweDQwLCAweDJGLCAweDAwLCAweEExLCAweDAwLCAweEI0LCAweDBBLCAweDA0LCAweDFBLCAweDQwLCAweDJBLCAweDAwLCAweEJELAorMHgwMCwgMHg4NSwgMHgwMiwgMHgxOCwgMHgwRSwgMHg0MCwgMHgyQiwgMHgwMCwgMHhBNSwgMHgwMiwgMHhCNCwgMHgwMiwgMHhEMCwKKzB4MEEsIDB4NDAsIDB4NDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUQsCisweEIwLCAweDA2LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweDMwLCAweDAxLCAweEM4LCAweDA3LCAweDQwLCAweDEzLAorMHgwMCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgwMCwgMHgwRiwgMHg0MCwgMHg0QywgMHgwMCwgMHgzMiwKKzB4MDEsIDB4QzIsIDB4MTcsIDB4NDAsIDB4MTcsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4NzcsIDB4QzAsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEI4LCAweDI3LCAweDQwLCAweDlGLAorMHgwMSwgMHg3QywgMHg4NiwgMHhGMCwgMHgwOCwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwNiwgMHhGMiwKKzB4NDksIDB4NDEsIDB4MjUsIDB4MjAsIDB4OUYsIDB4MTQsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlCLCAweDAxLCAweDdDLCAweDAyLCAweEYwLCAweDA4LCAweEMwLCAweDY3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMiwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4MkYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MEEsIDB4QzAsIDB4MkIsIDB4MjAsCisweEFGLCAweDQyLCAweDhELCAweDAyLCAweDMwLCAweDBCLCAweEMwLCAweDI4LCAweDAwLCAweEIzLCAweDAyLCAweENDLCAweDAyLAorMHhGMCwgMHgwQSwgMHhDMCwgMHg2NCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MUMsIDB4MDgsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MTUsIDB4NDQsIDB4NTQsIDB4RDAsIDB4MDEsIDB4NDgsIDB4MDcsIDB4MDAsCisweDFELCAweDAwLCAweDc0LCAweDE0LCAweDEwLCAweDUxLCAweDQxLCAweDA3LCAweDAwLCAweDFELCAweDgxLCAweDQ0LCAweDAwLAorMHg1MCwgMHgwMSwgMHg0OCwgMHgwNCwgMHgxMCwgMHgxNSwgMHgwMSwgMHg0NCwgMHgwMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHg3MSwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTAsIDB4MjMsIDB4MDAsCisweDhELCAweDAwLCAweDA0LCAweDAyLCAweEQwLCAweDA4LCAweDQ4LCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDM0LCAweDQyLAorMHgxMCwgMHgwOCwgMHg0MCwgMHgyMywgMHhBMCwgMHg4RCwgMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgwOCwgMHg1MiwgMHgyMCwKKzB4MDAsIDB4RDEsIDB4MDQsIDB4MDQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4NDAsIDB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LCAweDI1LCAweDAwLCAweDlELCAweDAwLCAweDQ0LCAweDAyLAorMHhEMCwgMHgwOSwgMHg0MCwgMHgyNywgMHgxMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxNCwgMHgwOSwgMHg0NCwgMHgyNywKKzB4MDAsIDB4OEQsIDB4MDAsIDB4NDQsIDB4ODIsIDB4NTAsIDB4MDksIDB4NDYsIDB4MjQsIDB4MDAsIDB4OTUsIDB4MDAsIDB4NDQsCisweDAyLCAweEQwLCAweDA5LCAweDQwLCAweDYxLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNSwgMHgyOCwgMHgyNSwgMHgwMCwgMHhCRiwgMHgwMCwgMHhDRCwgMHg4MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4MzAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4NEMsCisweDAyLCAweDMwLCAweDA5LCAweEMwLCAweDIwLCAweDA4LCAweEEzLCAweDAwLCAweDRELCAweDAyLCAweEYwLCAweDA5LCAweEMwLAorMHgxNCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyNSwKKzB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDA5LCAweEMyLCAweDI3LCAweDAwLCAweDlGLCAweDAwLCAweDdDLCAweDgyLCAweEYwLCAweDA5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg1MywgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDUsIDB4MDIsIDB4MUYsIDB4MDAsIDB4NEMsCisweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAyLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDcwLCAweDAxLCAweEQwLAorMHgwNCwgMHg0MCwgMHgxMywgMHgwMCwgMHg0QywgMHgxMCwgMHgzMCwgMHgwMSwgMHhDMCwgMHgwNywgMHg0MCwgMHgxMywgMHgwMCwKKzB4N0MsIDB4MDQsIDB4MzAsIDB4MDEsIDB4QzEsIDB4NTAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDIwLCAweDE0LCAweDAwLCAweDVELCAweDIwLCAweDQ0LCAweDAxLCAweEQxLCAweDA1LCAweDQwLAorMHgxNywgMHgxMCwgMHg1RCwgMHgwMSwgMHg3MCwgMHgwMSwgMHhEMCwgMHgwNywgMHg0MCwgMHhEQywgMHgwMCwgMHg3MSwgMHg4MSwKKzB4OTQsIDB4MDEsIDB4NTAsIDB4MTYsIDB4NDEsIDB4MUYsIDB4MDAsIDB4NTEsIDB4MDAsIDB4RjQsIDB4MDUsIDB4MTEsIDB4MjYsCisweDUwLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLAorMHg2MiwgMHgwMCwgMHhERCwgMHgwOCwgMHgwNCwgMHgwNywgMHhEMCwgMHg4OCwgMHg0OCwgMHgzMywgMHgwMCwgMHg4RCwgMHg4MCwKKzB4NzQsIDB4MDMsIDB4NTAsIDB4MDQsIDB4NDAsIDB4QTAsIDB4MDYsIDB4QzksIDB4MTEsIDB4MDYsIDB4MDEsIDB4MTAsIDB4NEMsCisweDQ4LCAweDMzLCAweDBDLCAweEMxLCAweDgwLCAweDM0LCAweDA1LCAweDkwLCAweDE4LCAweDQ0LCAweDUwLCAweDAwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgzOCwgMHgwMCwgMHhFRCwgMHgwOCwKKzB4ODQsIDB4NTMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsIDB4RUQsIDB4MTAsIDB4QjQsIDB4NDMsIDB4RDAsIDB4MUYsCisweDQwLCAweDVDLCAweDIwLCAweEY5LCAweDUwLCAweEQ0LCAweDgwLCAweDUwLCAweDBBLCAweDQwLCAweDFGLCAweDIwLCAweEUxLAorMHgwOCwgMHhGNCwgMHg0NywgMHg5MSwgMHgyQiwgMHg0MCwgMHgxMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NzgsIDB4MDAsIDB4RkYsIDB4MDUsIDB4OEMsIDB4MDcsIDB4RjAsIDB4MUUsCisweEMwLCAweDdCLCAweDAwLCAweEVGLCAweDAxLCAweEJDLCAweDg3LCAweDcwLCAweDFFLCAweEMwLCAweDQ4LCAweDAwLCAweEVCLAorMHgwMSwgMHg4QywgMHgwNywgMHgzMCwgMHgxMiwgMHhDMCwgMHg3QiwgMHgwMCwgMHhBMywgMHg4MSwgMHhCQywgMHgwNywgMHhCNCwKKzB4MUEsIDB4QzAsIDB4NTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweEI4LCAweDM1LCAweDEwLCAweERGLCAweDAwLCAweDdDLCAweDIzLCAweEYxLCAweDBELCAweEMwLCAweDM3LCAweDAwLCAweERGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwNiwgMHgwMCwgMHhENywgMHgwMCwgMHg3OCwgMHgwMiwgMHhGMCwKKzB4MDEsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OUQsIDB4MDAsIDB4M0MsIDB4MDMsIDB4NzAsIDB4MDksIDB4QzAsIDB4NDMsIDB4NjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEE4LCAweDdGLCAweDAwLCAweEJGLAorMHgwMCwgMHhGQywgMHgwNiwgMHgzMCwgMHg5RiwgMHhDMCwgMHg3RiwgMHgwMCwgMHhFMywgMHgwMSwgMHg4QywgMHg0NywgMHgzMCwKKzB4MTcsIDB4QzAsIDB4NEYsIDB4MDAsIDB4M0YsIDB4MDEsIDB4OUMsIDB4MDQsIDB4NzAsIDB4MTYsIDB4QzQsIDB4NUMsIDB4MDAsCisweEVGLCAweDAxLCAweENDLCAweDA3LCAweEYwLCAweDFCLCAweEMyLCAweDBCLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg5OCwgMHgzOSwgMHgwNCwgMHhBRCwgMHgwQywgMHhCNCwgMHgwMiwgMHgxMSwKKzB4OEUsIDB4NDAsIDB4M0IsIDB4MTAsIDB4RTEsIDB4MDAsIDB4ODQsIDB4MjMsIDB4MTAsIDB4MEUsIDB4NDAsIDB4MEIsIDB4MTAsCisweDZELCAweDBBLCAweDg1LCAweDYwLCAweDU1LCAweDg2LCAweEMwLCAweDlBLCAweDEwLCAweEVELCAweDAwLCAweDg0LCAweDAzLAorMHhEMCwgMHgwQSwgMHg0NCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4QUQsIDB4MDgsIDB4RjQsIDB4MDIsIDB4MTAsIDB4OEUsIDB4NDAsIDB4M0YsIDB4MDQsCisweEUxLCAweDEwLCAweEU0LCAweDAzLCAweDEwLCAweDBFLCAweDQxLCAweDBCLCAweDAwLCAweDJELCAweDEwLCAweDk0LCAweDAwLAorMHhEMCwgMHgwNywgMHg0MSwgMHgzQSwgMHgwMCwgMHhCRCwgMHgwQSwgMHhBNCwgMHgwMywgMHhEMCwgMHgwQSwgMHg0MSwgMHgyMywKKzB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MjAsIDB4MzMsIDB4MDAsCisweDhELCAweDAzLCAweDc0LCAweDBBLCAweDEwLCAweDVDLCAweDQwLCAweEUzLCAweDAwLCAweEMxLCAweDQxLCAweDI0LCAweDBFLAorMHgxMCwgMHgxRCwgMHg0MCwgMHg4MywgMHgwMiwgMHg1RCwgMHgwMywgMHgwNCwgMHgwNCwgMHhEMCwgMHgxNCwgMHg0MCwgMHg3MiwKKzB4MTAsIDB4OUQsIDB4MDEsIDB4MjQsIDB4MEIsIDB4RDEsIDB4MTgsIDB4NDAsIDB4MUIsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDM1LCAweDAwLCAweERGLCAweDg5LCAweDdDLCAweDAzLAorMHgzMCwgMHgyRCwgMHhDMCwgMHg3NywgMHg0MCwgMHhEMywgMHgwMSwgMHg2QywgMHg0NiwgMHgzNCwgMHgxOSwgMHhDMCwgMHg4MywKKzB4MDAsIDB4NUYsIDB4NDEsIDB4MUMsIDB4MDgsIDB4RjAsIDB4QjEsIDB4QzAsIDB4NzYsIDB4MDQsIDB4REYsIDB4MTEsIDB4MkMsCisweDAyLCAweEYwLCAweDFELCAweEMyLCAweDc3LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHhERiwgMHgwOCwgMHg3OCwgMHgxNywgMHhGMCwgMHg4RCwgMHhDMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MTAsIDB4NUMsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzEsIDB4MDcsIDB4MDQsIDB4REYsIDB4MDAsIDB4N0MsCisweDQ4LCAweDYwLCAweDAxLCAweEM0LCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDBGLCAweEYwLCAweDJELCAweEMxLAorMHgwNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHgzRiwKKzB4MDYsIDB4RjMsIDB4MDQsIDB4RkMsIDB4MEIsIDB4MzAsIDB4OUYsIDB4QzgsIDB4M0YsIDB4MDQsIDB4RkYsIDB4ODAsIDB4Q0MsCisweDU2LCAweEYwLCAweDBGLCAweEQwLCAweDBDLCAweDAwLCAweDczLCAweDEwLCAweENDLCAweDAwLCAweEIwLCAweDAzLCAweEMwLAorMHgyRiwgMHgwNCwgMHhCMiwgMHgwMywgMHhDOCwgMHg0MywgMHgzMCwgMHgwRiwgMHhDMCwgMHgwNywgMHgyNCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MjAsIDB4NzIsIDB4NDAsIDB4OTEsIDB4MDEsIDB4NzQsCisweDA2LCAweDEwLCAweDFELCAweDQ0LCAweDM3LCAweDA4LCAweENELCAweDQwLCAweDQ0LCAweDA2LCAweEQwLCAweDNELCAweDQwLAorMHg0NCwgMHgzMCwgMHhERiwgMHhDMCwgMHg0NSwgMHgwNCwgMHgxMCwgMHg3MSwgMHg0NCwgMHg2MywgMHgxMCwgMHhEMSwgMHgwMSwKKzB4NDQsIDB4MTcsIDB4QjAsIDB4MEQsIDB4NDAsIDB4MjcsIDB4MDIsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDM2LCAweDAwLCAweDkxLCAweDgwLCAweDc0LCAweDAyLCAweDEwLCAweDBELCAweDQwLAorMHgzNywgMHgwMCwgMHhERCwgMHgwNCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgxOSwgMHg0MSwgMHg0NiwgMHgwMCwgMHgxMSwgMHgwMCwKKzB4NDQsIDB4MEMsIDB4OUEsIDB4MTUsIDB4NDIsIDB4NzcsIDB4MDAsIDB4RDUsIDB4MDAsIDB4NzcsIDB4MDcsIDB4MDAsIDB4NDksCisweDQxLCAweDA3LCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLAorMHgzNCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgzNCwgMHgwMiwgMHgxNCwgMHgwQywgMHg0MCwgMHgzMywgMHgwMCwgMHhERCwgMHgwMCwKKzB4MDYsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4NDQsIDB4MjgsIDB4NDUsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDQsCisweDQwLCAweDMzLCAweDYwLCAweDg1LCAweDAwLCAweDM0LCAweDAzLCAweDkwLCAweDA0LCAweDQwLCAweDQzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzNiwgMHgwMCwgMHhEMywgMHgwMCwKKzB4N0MsIDB4MDMsIDB4MTAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MjAsIDB4REYsIDB4MDAsIDB4NEQsIDB4MDIsIDB4RjAsIDB4MEQsCisweEMwLCAweDA0LCAweDAwLCAweDAxLCAweDgwLCAweDRDLCAweDAwLCAweEI0LCAweDA1LCAweEMwLCAweDI3LCAweDAwLCAweDk3LAorMHgwMCwgMHg3QywgMHgwMywgMHgzMCwgMHgwOSwgMHhDMCwgMHgwNywgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsIDB4M0YsIDB4MDAsIDB4QkYsIDB4MDAsIDB4QkMsIDB4MDIsIDB4RjEsIDB4MEYsCisweEMwLCAweDJCLCAweDEwLCAweEZGLCAweDAwLCAweEZDLCAweDAyLCAweEYwLCAweDBGLCAweDgwLCAweDBGLCAweDIwLCAweDdGLAorMHgwMCwgMHhGRCwgMHgwMCwgMHhGMCwgMHgwNywgMHhDMCwgMHgyRiwgMHgwMCwgMHhCQiwgMHg0MCwgMHhDQywgMHg4MywgMHhGMCwKKzB4MDcsIDB4QzQsIDB4MTcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisweEEwLCAweDdGLCAweDAwLCAweEVGLCAweDAxLCAweDhDLCAweDA3LCAweDcwLCAweDFCLCAweEQwLCAweDI4LCAweDAxLCAweEE3LAorMHgwMSwgMHhGQywgMHgzMiwgMHgzMCwgMHgxQSwgMHhDMCwgMHgzQywgMHgwMCwgMHhCMywgMHgxNCwgMHhFQywgMHgxMiwgMHgzMCwKKzB4OEIsIDB4QzAsIDB4M0QsIDB4MEMsIDB4QkYsIDB4MDgsIDB4Q0MsIDB4MDIsIDB4RjEsIDB4MEYsIDB4QzAsIDB4MEYsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDE4LCAweDc3LCAweDAwLCAweDlELAorMHgwMSwgMHg0NCwgMHgwNiwgMHgxMCwgMHgxMSwgMHg0MiwgMHg2NCwgMHgwMCwgMHg1MSwgMHgwMSwgMHg0NCwgMHgwQSwgMHgxMCwKKzB4MTksIDB4NDAsIDB4RkMsIDB4MTIsIDB4OTEsIDB4MDIsIDB4NDQsIDB4M0EsIDB4MTAsIDB4NDksIDB4NDAsIDB4QkMsIDB4MDAsCisweDlELCAweDAwLCAweDQ0LCAweDJBLCAweEQwLCAweDBELCAweDQ0LCAweDBGLCAweDYwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzMSwgMHgwMCwgMHhERCwgMHgwMCwgMHg0NCwgMHg4NSwgMHg1MCwKKzB4MDQsIDB4NDgsIDB4MDAsIDB4ODIsIDB4RDUsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NTAsIDB4MDksIDB4NDAsIDB4MzIsIDB4MDAsCisweDg1LCAweDAwLCAweDM0LCAweDQwLCAweDUwLCAweDg4LCAweDQyLCAweDMxLCAweDI0LCAweDA5LCAweDA2LCAweDA0LCAweDAwLAorMHhEMCwgMHgwQywgMHg0MCwgMHg0RiwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDMsIDB4QTAsIDB4MzcsIDB4MDAsIDB4REQsIDB4MTEsIDB4NDUsIDB4MDUsIDB4MTAsIDB4MTEsIDB4NDQsIDB4NDQsIDB4MDAsCisweEQxLCAweDAzLCAweDA0LCAweDhDLCAweDExLCAweDg5LCAweDQwLCAweDM2LCAweDgwLCAweDk0LCAweDQxLCAweDE0LCAweDA0LAorMHg1MCwgMHgxOSwgMHg0MCwgMHgzNCwgMHgwMCwgMHgwRCwgMHgxMSwgMHg0NCwgMHgwQywgMHhEMCwgMHgwRCwgMHgyMCwgMHgwRiwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTgsIDB4MzcsIDB4MDAsCisweENGLCAweDAxLCAweDBDLCAweDA0LCAweDcwLCAweDEwLCAweDQwLCAweDQ0LCAweDIwLCAweEM3LCAweDAzLCAweDVDLCAweDBFLAorMHg3MCwgMHg0MCwgMHhEMCwgMHgzMiwgMHgwOCwgMHgxNywgMHhBMywgMHg3QywgMHg5NiwgMHg3MSwgMHgxMSwgMHhDMCwgMHgzNSwKKzB4MTAsIDB4MUYsIDB4MDMsIDB4NEUsIDB4MEUsIDB4RjgsIDB4MEQsIDB4QzAsIDB4MEIsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDNELCAweDAwLCAweEZGLCAweDgwLCAweEZDLCAweDAwLAorMHhGMCwgMHgwMywgMHhDMCwgMHgyQiwgMHgwMCwgMHg3RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMiwgMHgwQiwgMHhDMCwgMHgzRCwKKzB4NjAsIDB4OUIsIDB4MDAsIDB4RUMsIDB4MDIsIDB4QjAsIDB4MDAsIDB4QzAsIDB4M0YsIDB4MDAsIDB4QkYsIDB4QTAsIDB4RkYsCisweDAyLCAweEYwLCAweDBELCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgyQSwgMHgwOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMywgMHg0QywgMHgwMSwgMHgzMCwgMHgwNSwgMHhDMCwgMHgwNywKKzB4MjQsIDB4RDMsIDB4MDQsIDB4NUMsIDB4MDIsIDB4MzAsIDB4MjEsIDB4QzAsIDB4MzYsIDB4MDEsIDB4MTcsIDB4MDAsIDB4NUMsCisweDgyLCAweEYwLCAweDI5LCAweEMwLCAweDc2LCAweDA0LCAweDEzLCAweDAyLCAweDdDLCAweDA2LCAweDMwLCAweDBELCAweEMyLAorMHhBOSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhBMCwgMHgzNCwKKzB4MDgsIDB4REMsIDB4MDEsIDB4NDYsIDB4MDUsIDB4MTAsIDB4NDEsIDB4NDgsIDB4MjcsIDB4MDAsIDB4NTEsIDB4ODEsIDB4NDQsCisweDAyLCAweDEwLCAweDE5LCAweEM0LCAweEJFLCAweDAwLCAweDlCLCAweDAwLCAweDQ0LCAweDAyLCAweEQxLCAweDA5LCAweDQ4LAorMHhCQywgMHgwMCwgMHgxMSwgMHg4MCwgMHg3NCwgMHgyMiwgMHgxMCwgMHgwRiwgMHg0MCwgMHg0QywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MjAsIDB4MzIsIDB4MDgsIDB4Q0QsIDB4MDAsIDB4MDYsCisweDMzLCAweDEwLCAweDA0LCAweDQwLCAweDIzLCAweDAyLCAweDQ5LCAweDAyLCAweDE0LCAweDAwLCAweDEwLCAweDJDLCAweDUxLAorMHgzMywgMHgwMCwgMHgxNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHhCMiwgMHgwMCwgMHg4MSwgMHg4MCwKKzB4MzQsIDB4MDAsIDB4MTEsIDB4MEMsIDB4NDgsIDB4MEYsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDBELCAweDA4LCAweDdBLCAweDAwLCAweEZELCAweDAxLCAweDg0LCAweDA3LCAweDExLCAweDEyLCAweDQwLAorMHg3QiwgMHgxMCwgMHg3OSwgMHgxMSwgMHg5NCwgMHgwNywgMHgxMCwgMHgxRiwgMHg0MSwgMHg3QiwgMHgwMCwgMHg2QywgMHgwMSwKKzB4OTQsIDB4MDcsIDB4RDgsIDB4MUUsIDB4NDAsIDB4NzAsIDB4NDIsIDB4RTEsIDB4MDEsIDB4QjQsIDB4MDcsIDB4NUMsIDB4MUUsCisweDQwLCAweDM3LCAweDIwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDEwLAorMHgzMiwgMHgwMCwgMHhDRiwgMHgwMCwgMHgwNCwgMHgyMSwgMHgxMiwgMHg4NCwgMHhDMCwgMHgzMywgMHgwMSwgMHhDQiwgMHgwMCwKKzB4MUMsIDB4MjEsIDB4MzAsIDB4NEMsIDB4QzAsIDB4MzMsIDB4MDAsIDB4QzcsIDB4RTgsIDB4MUMsIDB4ODEsIDB4RjAsIDB4MjQsCisweEMwLCAweDMyLCAweDAyLCAweEMzLCAweDAwLCAweDdDLCAweDExLCAweDMwLCAweDBDLCAweEMwLCAweDRCLCAweDQwLCAweDA4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBOCwgMHgzRCwgMHgwMCwgMHhGRiwgMHgwMCwKKzB4RkMsIDB4ODEsIDB4RjAsIDB4ODMsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RjcsIDB4MDAsIDB4RUMsIDB4MDMsIDB4RjAsIDB4MEYsCisweENDLCAweDNBLCAweDAwLCAweEZCLCAweDAwLCAweEVDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLCAweEJGLCAweDAyLCAweEZGLAorMHg0OCwgMHhGQywgMHgwMSwgMHhCMCwgMHgwRiwgMHhDMCwgMHgwOCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4QTIsIDB4MzcsIDB4MjAsIDB4REYsIDB4MDAsIDB4NEMsIDB4MDMsIDB4RjAsIDB4MDUsCisweEMyLCAweDEzLCAweDAwLCAweDU3LCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDFELCAweEMwLCAweDM2LCAweDAwLCAweDVGLAorMHg0MCwgMHg3QywgMHgwMSwgMHg3MCwgMHgxNSwgMHhDMCwgMHgzNCwgMHgwMSwgMHg1MywgMHgwMSwgMHg0RCwgMHgwMSwgMHgxMCwKKzB4MEQsIDB4QzQsIDB4NDMsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsCisweDk4LCAweDM5LCAweDA4LCAweEVELCAweDAwLCAweDg0LCAweDAxLCAweEQwLCAweDAyLCAweDQwLCAweDNCLCAweDAwLCAweDYxLAorMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgzQSwgMHgwNCwgMHhFRCwgMHgwMCwgMHhCNCwgMHgwMywgMHhEMCwKKzB4MDcsIDB4NTAsIDB4QkMsIDB4MDAsIDB4RjEsIDB4MDAsIDB4QzQsIDB4MDMsIDB4MTAsIDB4NEUsIDB4NDAsIDB4NEYsIDB4NjAsCisweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDc5LCAweDAwLCAweEZELAorMHgxMSwgMHhBNiwgMHgwNSwgMHhEMCwgMHgxNiwgMHg0MCwgMHg1QiwgMHgwNCwgMHg2NSwgMHgwMSwgMHhCNCwgMHgwNSwgMHhEMCwKKzB4MEEsIDB4NTAsIDB4N0EsIDB4OTMsIDB4NkQsIDB4MDEsIDB4QjQsIDB4MDUsIDB4NTAsIDB4MUUsIDB4NDAsIDB4NzgsIDB4NDEsCisweEU1LCAweDAzLCAweDg0LCAweDA3LCAweDEwLCAweDlFLCAweDQwLCAweDEzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgyMCwgMHgzMywgMHgwMCwgMHg0RCwgMHgxMiwgMHgwNiwgMHhCRCwgMHhEMCwKKzB4MjAsIDB4NDAsIDB4MzMsIDB4MDAsIDB4NDEsIDB4MDEsIDB4NzQsIDB4NDcsIDB4RDAsIDB4RUMsIDB4NDAsIDB4MzIsIDB4ODAsCisweENELCAweDBBLCAweDM0LCAweDJCLCAweEQwLCAweDBDLCAweDQwLCAweDM0LCAweDAwLCAweEM1LCAweDAwLCAweDA0LCAweDhCLAorMHgxMCwgMHgwQywgMHg0MCwgMHg1QiwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTcsIDB4QTgsIDB4MTcsIDB4MDAsIDB4NkYsIDB4MDIsIDB4RUMsIDB4MDksIDB4RjIsIDB4MDcsIDB4QzAsIDB4MUIsIDB4MEEsCisweDc3LCAweDA3LCAweEZDLCAweDE1LCAweEYwLCAweDA2LCAweEMwLCAweDE2LCAweDAwLCAweDdGLCAweDIxLCAweEY0LCAweDJELAorMHg3OCwgMHg4NywgMHhDMSwgMHgxNCwgMHgwMCwgMHg3NywgMHgwMCwgMHhDQywgMHgzOSwgMHgzMCwgMHgwNSwgMHhDMCwgMHg1RiwKKzB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODAsIDB4MDUsIDB4MDAsCisweDFGLCAweDgyLCAweDdELCAweDAwLCAweEYzLCAweDAxLCAweDAxLCAweDA3LCAweDAwLCAweDFGLCAweDEwLCAweDdDLCAweDAwLAorMHhDMCwgMHgyMSwgMHhDMCwgMHgwNSwgMHgyMCwgMHgxRiwgMHgxMCwgMHg3QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywKKzB4MDAsIDB4MTksIDB4MDQsIDB4N0MsIDB4MDgsIDB4RjQsIDB4MDEsIDB4QzAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI1LCAweDAwLCAweDlGLCAweDA0LCAweDVDLCAweDBFLAorMHhGMCwgMHg0OSwgMHhDNCwgMHgyNCwgMHgwOCwgMHg5QiwgMHgwMCwgMHg0RCwgMHgwMiwgMHgzMCwgMHg5OSwgMHgwMiwgMHg2NywKKzB4MDEsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MTAsIDB4OTcsIDB4ODAsIDB4M0MsCisweDBFLCAweDcwLCAweDQ5LCAweEMwLCAweDQzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwgMHg0NCwgMHgxQSwgMHhEMCwgMHg3OCwgMHg0NCwgMHgyNCwKKzB4MTAsIDB4ODEsIDB4MDAsIDB4NDQsIDB4MDIsIDB4MTAsIDB4MjksIDB4NDQsIDB4QTQsIDB4MDgsIDB4OUQsIDB4MDAsIDB4NzQsCisweDgyLCAweEQxLCAweDA5LCAweDQwLCAweDY3LCAweDAwLCAweDkxLCAweDgwLCAweDc0LCAweDA2LCAweDEwLCAweDA5LCAweDQwLAorMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxQywgMHhBMCwgMHgyNCwKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NTQsIDB4MDIsIDB4RDAsIDB4MEQsIDB4NDQsIDB4MzQsIDB4MjAsIDB4OTksIDB4MDgsIDB4NDQsCisweDAyLCAweDEwLCAweDA5LCAweDYwLCAweDI3LCAweDA0LCAweERELCAweDAwLCAweDc0LCAweDAyLCAweEQwLCAweDA5LCAweDQwLAorMHgyNywgMHgwMSwgMHg5NSwgMHgwMCwgMHg3NCwgMHg0MiwgMHg1MCwgMHgwOSwgMHg0MCwgMHg3MywgMHgwMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjgsIDB4MjAsIDB4MDAsIDB4Q0QsIDB4MDAsIDB4MDQsCisweDAyLCAweEQwLCAweDA5LCAweDQ4LCAweDIwLCAweDA1LCAweDgxLCAweDAwLCAweDA0LCAweDUyLCAweDEwLCAweDBDLCAweDQwLAorMHgyMSwgMHgxNSwgMHg4RCwgMHgxNCwgMHgzNCwgMHg1MiwgMHhEMCwgMHg0OCwgMHg0MSwgMHgzMywgMHgwNSwgMHg4MSwgMHgxNCwKKzB4MzQsIDB4NTIsIDB4MTAsIDB4NDgsIDB4NDAsIDB4NTMsIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDFGLCAweDAwLCAweDVDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLAorMHgwNCwgMHgwMSwgMHgxQiwgMHgwMCwgMHg0QywgMHgxMCwgMHgzNCwgMHgwMSwgMHhDMCwgMHgwNywgMHgyMSwgMHgxRiwgMHgwNiwKKzB4N0MsIDB4MTAsIDB4RjAsIDB4NDEsIDB4QzgsIDB4MDcsIDB4MDEsIDB4MTcsIDB4MDQsIDB4N0MsIDB4MTAsIDB4NzAsIDB4MDEsCisweEM0LCAweDc3LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweEEwLAorMHgyNywgMHgwMCwgMHhBRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMiwgMHgwQiwgMHhEMCwgMHgyRiwgMHgwMCwgMHhCRiwgMHgwMCwKKzB4RkMsIDB4NTIsIDB4RjAsIDB4MEEsIDB4QzAsIDB4MjYsIDB4MDAsIDB4QkYsIDB4MTAsIDB4RkMsIDB4NTIsIDB4RjAsIDB4NEIsCisweEMxLCAweDI3LCAweDA1LCAweEJGLCAweDE0LCAweEZDLCAweDUyLCAweEYwLCAweDY5LCAweEMzLCAweDY3LCAweDIwLCAweDBFLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg4MCwgMHgyNSwgMHgwMCwgMHhCRiwgMHgwMCwKKzB4Q0MsIDB4MDIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4NkYsIDB4NjAsIDB4QjMsIDB4MDAsIDB4N0MsIDB4MjYsIDB4RjAsIDB4MEEsCisweEMwLCAweDJELCAweDAwLCAweDkzLCAweDAyLCAweDdDLCAweDUyLCAweDMwLCAweDM5LCAweEMxLCAweEFGLCAweDAwLCAweDlGLAorMHgwOSwgMHhDQywgMHgwNiwgMHhGMCwgMHg1QiwgMHhFMCwgMHg2MywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MTgsIDB4MDcsIDB4MDAsIDB4NUQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4MDEsCisweDQwLCAweDA3LCAweDAwLCAweDExLCAweDAwLCAweDc0LCAweDJDLCAweEQwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLAorMHgwMSwgMHg3NCwgMHgxOCwgMHgxMCwgMHgyMSwgMHg0MCwgMHg0NywgMHgwOSwgMHgxRCwgMHgwQiwgMHg0NCwgMHgwMCwgMHhEMCwKKzB4MDEsIDB4NDAsIDB4NzMsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDIwLCAweDIxLCAweDAwLCAweDhELCAweDAwLCAweDA0LCAweDAyLCAweEQwLCAweDA4LCAweDQwLCAweEEzLCAweDAwLCAweDg1LAorMHgwMSwgMHgzNCwgMHgxMiwgMHhEMCwgMHgwOSwgMHg0MCwgMHhBMywgMHg4MCwgMHg4MSwgMHgyNiwgMHgzNCwgMHg0MiwgMHgxNCwKKzB4MDgsIDB4NDAsIDB4QTMsIDB4MDAsIDB4OEQsIDB4MDQsIDB4MDQsIDB4MEEsIDB4RDAsIDB4NjgsIDB4NDEsIDB4NEIsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDIwLCAweDI1LCAweDAwLCAweDlELAorMHgwMCwgMHg0NiwgMHgwNiwgMHhEMywgMHgxOSwgMHg0MCwgMHgyNywgMHgwNCwgMHg5NSwgMHgwNCwgMHg3NiwgMHgxMiwgMHhEMiwKKzB4NDksIDB4NDAsIDB4MjQsIDB4QzAsIDB4OTEsIDB4MDIsIDB4NzQsIDB4ODIsIDB4MDAsIDB4MDksIDB4NDEsIDB4MjcsIDB4MDAsCisweDlELCAweDAyLCAweDQ0LCAweDAyLCAweEQyLCAweDA5LCAweDQ4LCAweDYzLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyNywgMHgwMCwgMHg4RiwgMHgwMiwgMHg0NCwgMHgxNiwgMHhGMiwKKzB4MzksIDB4QzEsIDB4QTcsIDB4MDAsIDB4OTcsIDB4MDIsIDB4N0MsIDB4MTYsIDB4RjIsIDB4MDksIDB4QzAsIDB4MjUsIDB4MDAsCisweDkzLCAweEMyLCAweDdDLCAweDEyLCAweDMwLCAweDA5LCAweEMwLCAweDI3LCAweDAwLCAweDlGLCAweDA5LCAweDRELCAweDZFLAorMHhEOCwgMHgwOSwgMHg0OCwgMHgxNywgMHgyOCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4ODAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDIsIDB4N0QsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NjMsIDB4MDIsCisweDlCLCAweEEwLCAweDdDLCAweDAyLCAweEYxLCAweDE5LCAweEMwLCAweDI3LCAweDIwLCAweDlGLCAweDA1LCAweDdDLCAweDE2LAorMHhGMCwgMHg1OSwgMHhDMCwgMHgyNywgMHgwMCwgMHg4RiwgMHgwMSwgMHg3QywgMHg0NiwgMHhGMCwgMHgwOSwgMHhDMCwgMHg0QiwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDUsIDB4MDAsCisweDFGLCAweDA0LCAweDZDLCAweDA4LCAweEYwLCAweDAxLCAweEMwLCAweDg3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDA4LAorMHhGMCwgMHgwMSwgMHhEMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHgyMSwgMHhDMiwgMHgwNCwKKzB4MDQsIDB4MUYsIDB4MDIsIDB4NEMsIDB4MDgsIDB4MzAsIDB4MDEsIDB4QzAsIDB4NDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDE0LCAweDAwLCAweDdELCAweDAyLCAweEM0LCAweDQ1LAorMHhDMiwgMHgwNywgMHgwMCwgMHgxRiwgMHgyMCwgMHg3RCwgMHgyMSwgMHg3QywgMHgwMSwgMHhEMCwgMHgxNiwgMHg1OCwgMHgxQywKKzB4MDAsIDB4NUQsIDB4MDAsIDB4NzQsIDB4MDEsIDB4RDEsIDB4MDUsIDB4QzAsIDB4MUUsIDB4MDQsIDB4NUQsIDB4MDAsIDB4QzQsCisweDg5LCAweDEwLCAweDA1LCAweDUwLCAweDUwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHhBMCwgMHgzMiwgMHgwMCwgMHg4RCwgMHg4QiwgMHgyNCwgMHgwNiwgMHhDOCwgMHhDQywgMHgwMCwgMHg1MywKKzB4MDQsIDB4MEMsIDB4MDUsIDB4MzQsIDB4MDMsIDB4RDEsIDB4RDQsIDB4NDAsIDB4NDAsIDB4MDAsIDB4QzUsIDB4MDAsIDB4NzQsCisweDAzLCAweEQwLCAweDBDLCAweDYwLCAweDcyLCAweDAwLCAweENELCAweDAwLCAweDA0LCAweDBCLCAweDE1LCAweDhDLCAweDQwLAorMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHgzOCwKKzB4MDAsIDB4QUQsIDB4MDAsIDB4ODQsIDB4MDIsIDB4RDAsIDB4MEEsIDB4NDAsIDB4QkIsIDB4ODAsIDB4MkQsIDB4ODIsIDB4OTQsCisweDAzLCAweEQwLCAweDA3LCAweDQwLCAweDg4LCAweDAwLCAweEVELCAweDI0LCAweEI0LCAweDIzLCAweEQwLCAweDFGLCAweDQwLAorMHgzQSwgMHgwMCwgMHhGRCwgMHg4MCwgMHgwNCwgMHgwNywgMHgxMiwgMHgxRSwgMHg0MCwgMHgwNCwgMHgyMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MTAsIDB4NzksIDB4MDAsIDB4QUYsIDB4MDEsIDB4QUMsCisweDA2LCAweEYwLCAweDFBLCAweEM4LCAweDVCLCAweDAwLCAweDJGLCAweDAxLCAweEIwLCAweDA3LCAweEYwLCAweDEyLCAweENBLAorMHg3OCwgMHgwMCwgMHhFNywgMHhBMywgMHhCQywgMHg4NywgMHhGMCwgMHg3RiwgMHhDNCwgMHg1QSwgMHgwMCwgMHhGRiwgMHgwRiwKKzB4ODksIDB4MDcsIDB4MzIsIDB4MUYsIDB4QzAsIDB4NDQsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDAwLCAweDhGLCAweDAwLCAweDVDLCAweDAwLCAweEYwLCAweDA5LCAweEMwLAorMHgzNywgMHgwMCwgMHgxRiwgMHg4MCwgMHg3QywgMHgwMywgMHhGMCwgMHgwNSwgMHhDMCwgMHgxNywgMHgxMCwgMHhERiwgMHgwMCwKKzB4N0MsIDB4MEIsIDB4RjAsIDB4MkQsIDB4QzQsIDB4MzcsIDB4MDAsIDB4REYsIDB4QTQsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsCisweEMwLCAweDQzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorMHg3RCwgMHgwMCwgMHhCRiwgMHgwMSwgMHhDQywgMHgyNiwgMHhGMCwgMHg5QiwgMHhDMCwgMHg2RiwgMHgwMiwgMHgzMywgMHgwOSwKKzB4REMsIDB4RUYsIDB4NzMsIDB4MTcsIDB4QzgsIDB4NUMsIDB4MjIsIDB4RkQsIDB4MDksIDB4RkMsIDB4MEYsIDB4RjEsIDB4M0YsCisweEMwLCAweDdGLCAweDAyLCAweEY3LCAweDgxLCAweERDLCAweDA1LCAweDEwLCAweDlCLCAweEMwLCAweDAwLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxOCwgMHgzOSwgMHgwMCwgMHhBRCwgMHg0OCwKKzB4ODUsIDB4MjIsIDB4RDAsIDB4MEEsIDB4MDAsIDB4M0IsIDB4MDAsIDB4MjEsIDB4QzAsIDB4ODQsIDB4RTMsIDB4MTAsIDB4ODYsCisweDQxLCAweDk4LCAweDAwLCAweEVELCAweDE4LCAweEI0LCAweDAzLCAweEQwLCAweDBFLCAweDQwLCAweDNCLCAweDAwLCAweEUxLAorMHgwMCwgMHhGNCwgMHgxMSwgMHgxMiwgMHhDQiwgMHg0MCwgMHg1NSwgMHg2MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4MkQsIDB4MTAsIDB4ODQsIDB4MkEsIDB4RDgsIDB4MEEsCisweDYxLCAweDJCLCAweDYwLCAweDMxLCAweDUwLCAweDk0LCAweDIzLCAweDUxLCAweDA2LCAweDUwLCAweDNBLCAweDk4LCAweEVELAorMHgwOCwgMHhCNCwgMHgyMywgMHhEMCwgMHgwRSwgMHg0MSwgMHgxQiwgMHgwMCwgMHhFMSwgMHgwMCwgMHg5NCwgMHg0MywgMHg5OSwKKzB4MEYsIDB4NDQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisweDIwLCAweDMxLCAweDAwLCAweDBELCAweDQ3LCAweDA0LCAweDAwLCAweEQ4LCAweDU4LCAweDQwLCAweEIzLCAweDAyLCAweDAxLAorMHg1MywgMHgwNCwgMHgwNywgMHg1OCwgMHgzNCwgMHg0MCwgMHgxMiwgMHg4MCwgMHhDRCwgMHg0MSwgMHgyNCwgMHgzMywgMHhEMCwKKzB4M0MsIDB4NDAsIDB4MjMsIDB4NTAsIDB4QzEsIDB4NDIsIDB4MzQsIDB4NDYsIDB4OTgsIDB4MEMsIDB4NDAsIDB4MTEsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LCAweDM1LCAweDEwLCAweDlELAorMHgwMCwgMHg0QywgMHgwMiwgMHhEMCwgMHgxOSwgMHhDMCwgMHg5MywgMHg0MCwgMHgxMywgMHgwMSwgMHhEQywgMHgwQiwgMHg3MCwKKzB4MDUsIDB4QzAsIDB4MDYsIDB4MDAsIDB4RkYsIDB4MDMsIDB4RkMsIDB4MEIsIDB4RjgsIDB4M0YsIDB4QzQsIDB4MjcsIDB4MDAsCisweEYzLCAweDBGLCAweDVDLCAweDAyLCAweEI0LCAweDBELCAweDQwLCAweDU1LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgyMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4MzcsIDB4MDEsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MTMsIDB4OTAsIDB4NDUsIDB4QzAsIDB4MDUsIDB4MDAsCisweERGLCAweDEwLCAweDc0LCAweDAzLCAweEYwLCAweDRELCAweEMwLCAweDg3LCAweDAwLCAweERGLCAweDAwLCAweDdDLCAweDAwLAorMHg3MCwgMHgwRCwgMHg4OCwgMHgwNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ODQsIDB4MDgsIDB4M0UsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsIDB4MDIsIDB4QzAsIDB4MDMsIDB4QzgsIDB4MUYsIDB4MDAsCisweDNCLCAweDAyLCAweDdDLCAweDAzLCAweEYwLCAweDA3LCAweEMwLCAweDE4LCAweDAwLCAweEZBLCAweDAwLCAweEFDLCAweDAzLAorMHhCMCwgMHgwRiwgMHhDOCwgMHgwNiwgMHgxMCwgMHhFRiwgMHgwMCwgMHhEQywgMHgwMiwgMHhGMCwgMHgwRiwgMHg4MCwgMHgxMywKKzB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4MjAsIDB4MzYsIDB4MDAsCisweDlELCAweDAxLCAweDc0LCAweDA1LCAweEQwLCAweDExLCAweDQwLCAweDM3LCAweDAwLCAweEQxLCAweDgzLCAweDc0LCAweDAzLAorMHhEMCwgMHgxNCwgMHg0MCwgMHg5NCwgMHgwMCwgMHhEMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHhDNCwKKzB4MDQsIDB4REQsIDB4MDAsIDB4NDQsIDB4MUMsIDB4RDIsIDB4MEQsIDB4NDIsIDB4MTcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweDM0LCAweDAwLCAweDlELCAweDAxLCAweDc0LCAweDA2LAorMHhEMCwgMHg2OSwgMHg0MCwgMHgyNywgMHgwMCwgMHgxOSwgMHgxMCwgMHg3NCwgMHgwMywgMHhEMCwgMHgzNSwgMHg2MCwgMHgxNCwKKzB4MDAsIDB4RDUsIDB4MDAsIDB4NjQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NjAsIDB4NjUsIDB4MDAsIDB4REQsIDB4MjAsIDB4NTQsCisweDA0LCAweEQ4LCAweDA5LCAweDQwLCAweDA3LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgyOCwgMHgzMCwgMHgwMCwgMHg4RCwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwOCwgMHg0MCwgMHgzMywKKzB4MDAsIDB4MDAsIDB4MjAsIDB4MzQsIDB4ODMsIDB4RDAsIDB4MDUsIDB4NDAsIDB4MTAsIDB4MDAsIDB4QzUsIDB4MDAsIDB4MzQsCisweDAzLCAweDEwLCAweDBDLCAweDYwLCAweDIwLCAweDAwLCAweENELCAweDAwLCAweDA2LCAweDAwLCAweEQ4LCAweDA4LCAweDQwLAorMHg0MywgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhCMCwgMHgzNiwKKzB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4MUIsIDB4MjAsIDB4RkMsCisweDAzLCAweEYyLCAweDA1LCAweEQwLCAweDE0LCAweDEwLCAweEQ3LCAweDAwLCAweEVDLCAweDAzLCAweEIwLCAweDBGLCAweEMwLAorMHgwNCwgMHgxMCwgMHhGRiwgMHgyMCwgMHg1QywgMHgwMiwgMHhGMCwgMHgwRCwgMHhDOCwgMHgwMywgMHhDMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4QTgsIDB4M0YsIDB4MDAsIDB4MkYsIDB4MDAsIDB4RkMsCisweDgwLCAweEYxLCAweDBCLCAweEMwLCAweDNCLCAweDAwLCAweDJGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBFLCAweEMwLAorMHgxRiwgMHgyMCwgMHhGQiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgyRiwgMHgyMCwgMHhGRiwgMHgwMCwKKzB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4RTAsIDB4MTcsIDB4MjEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDVGLCAweDQwLCAweEIzLCAweDAwLCAweEZDLCAweDEyLCAweEYwLCAweDE3LCAweEMwLAorMHg3RiwgMHgwMCwgMHg3MywgMHg4MSwgMHhGQywgMHgxMCwgMHhGMSwgMHhDMywgMHhDMCwgMHgyQywgMHgwMiwgMHgzMywgMHg4MSwKKzB4Q0MsIDB4MjMsIDB4MzAsIDB4MEYsIDB4QzAsIDB4NDgsIDB4MTAsIDB4QkYsIDB4MjAsIDB4RkMsIDB4MDUsIDB4MzAsIDB4MUYsCisweEMwLCAweDBDLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LAorMHg3NywgMHgwOCwgMHg5MSwgMHg0QiwgMHg3NCwgMHgyRSwgMHhEMiwgMHgxOSwgMHgwMCwgMHg3RiwgMHgwMCwgMHg1MSwgMHgwMSwKKzB4NzQsIDB4MkMsIDB4RDAsIDB4RTEsIDB4NDAsIDB4QTQsIDB4MDEsIDB4MTEsIDB4MDEsIDB4QzQsIDB4MUIsIDB4NTEsIDB4QkIsCisweDQ4LCAweDY0LCAweDAwLCAweDhELCAweDRFLCAweDc0LCAweDA3LCAweDEwLCAweDBGLCAweDQ4LCAweDA0LCAweDYwLCAweDBDLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgyMywgMHgwMCwgMHg4MSwgMHg0MCwKKzB4MzQsIDB4MDIsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4RDAsIDB4MDksCisweDQwLCAweEEwLCAweDgwLCAweDE1LCAweDAwLCAweDA0LCAweDFCLCAweDEwLCAweDBDLCAweDQwLCAweDAwLCAweDAwLCAweDhELAorMHgxMCwgMHgzNCwgMHg4MiwgMHgxMCwgMHgwQywgMHg0MCwgMHg0NCwgMHg4MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MjUsIDB4MjAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDIsIDB4RDAsIDB4MEQsCisweDQwLCAweDM3LCAweDAwLCAweDkxLCAweDgyLCAweDc0LCAweDA0LCAweEQwLCAweDA5LCAweDQ4LCAweDI1LCAweDg0LCAweDExLAorMHgwMSwgMHg0NSwgMHgwNywgMHg1MywgMHg4OSwgMHg0MCwgMHg2NCwgMHgwMCwgMHg5RCwgMHg0MCwgMHgzNCwgMHg0MywgMHgxMCwKKzB4MEQsIDB4NDAsIDB4MEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDg4LCAweDIzLCAweDAwLCAweEQzLCAweDA4LCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweDQ0LCAweDMzLCAweDQwLCAweEQzLAorMHgwMCwgMHg3QywgMHgwQywgMHhGMCwgMHg4OCwgMHhDMCwgMHg2NCwgMHg0MCwgMHgxMywgMHg4MSwgMHg0QywgMHgwNSwgMHgzMCwKKzB4MUQsIDB4OTAsIDB4NDQsIDB4MDAsIDB4OUUsIDB4NDAsIDB4N0MsIDB4MkQsIDB4MzQsIDB4MEQsIDB4QzAsIDB4MDAsIDB4MjAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweEFELCAweDAwLCAweEJGLAorMHg4MSwgMHhGQywgMHgxMywgMHhEMCwgMHg0QiwgMHg0OCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwOSwgMHg3QywgMHgwMCwgMHhGMCwKKzB4MUIsIDB4QzAsIDB4NkUsIDB4MkEsIDB4M0UsIDB4MTAsIDB4QkMsIDB4ODMsIDB4RjAsIDB4MDksIDB4QzQsIDB4MkYsIDB4MjgsCisweEJGLCAweDAwLCAweEY0LCAweDAzLCAweEYxLCAweDBGLCAweEMwLCAweDFGLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgyNSwgMHgwMiwgMHhEMywgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MzcsIDB4MDIsIDB4OTMsIDB4MDIsIDB4N0MsIDB4MDAsIDB4MzQsIDB4MDksIDB4RTAsIDB4MjQsIDB4MjAsCisweDFCLCAweDAxLCAweDdDLCAweDAzLCAweDMwLCAweDBELCAweEM4LCAweDA0LCAweDQ0LCAweEQzLCAweDAwLCAweDRDLCAweDAyLAorMHhGMCwgMHgwRCwgMHhDNSwgMHgwOCwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTMsIDB4QTAsIDB4MjQsIDB4MDAsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDMsIDB4RDAsIDB4MEQsIDB4QzAsIDB4MzUsIDB4MDIsCisweDk1LCAweDAwLCAweDc0LCAweDA0LCAweDEwLCAweDBCLCAweDQyLCAweDY0LCAweDA0LCAweDAxLCAweDAzLCAweDVDLCAweEFGLAorMHg1MSwgMHgxOCwgMHhDMCwgMHhFNiwgMHgxOCwgMHhEMSwgMHgwMSwgMHg2QywgMHgwMywgMHhEMCwgMHg2RCwgMHg0MCwgMHg0QywKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4QTAsIDB4MTIsIDB4MDQsCisweDgxLCAweDAwLCAweDM0LCAweDAzLCAweEQwLCAweDAwLCAweDQwLCAweDMzLCAweDAwLCAweDgxLCAweDAwLCAweDM0LCAweDEwLAorMHgxMiwgMHgwMCwgMHgwMSwgMHg2NCwgMHg4OCwgMHgwOSwgMHgwMCwgMHgzNCwgMHgwRiwgMHg1MSwgMHhCQywgMHg0MSwgMHg4MSwKKzB4MTAsIDB4ODUsIDB4MTEsIDB4MDQsIDB4ODIsIDB4RDIsIDB4MkQsIDB4NDIsIDB4MUMsIDB4MDAsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDc4LCAweDgyLCAweEExLCAweDIxLCAweEI0LCAweDE2LAorMHhEMCwgMHgxQSwgMHg0MCwgMHg3MywgMHgwOCwgMHhBNSwgMHgwMSwgMHhCNCwgMHgwNCwgMHgxOCwgMHg5MiwgMHg0MCwgMHg2OCwKKzB4MDgsIDB4MjksIDB4MDEsIDB4MTQsIDB4MjcsIDB4NTIsIDB4MUUsIDB4NjQsIDB4NkYsIDB4MDAsIDB4QTUsIDB4MjksIDB4QTQsCisweDA2LCAweEQwLCAweDFFLCAweDQwLCAweDE4LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgxMCwgMHgyMCwgMHgwMCwgMHhDMywgMHgwOCwgMHgzQywgMHgwMiwgMHhGMCwgMHgwOCwgMHg0MiwgMHgzMywKKzB4MDIsIDB4ODMsIDB4MDAsIDB4MzQsIDB4NDgsIDB4MzAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDEsIDB4MEIsIDB4MDAsIDB4M0MsCisweDQzLCAweDcwLCAweDBDLCAweEMwLCAweDAxLCAweDA0LCAweDg3LCAweDUwLCAweDBBLCAweDAyLCAweEYwLCAweDBELCAweEMwLAorMHg0OCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhCOCwgMHgyOSwKKzB4NDAsIDB4RkYsIDB4MDgsIDB4RkMsIDB4MTIsIDB4RjAsIDB4MEIsIDB4QzAsIDB4N0QsIDB4MDgsIDB4QkYsIDB4MDAsIDB4RkMsCisweDAwLCAweEQwLCAweDBFLCAweDUyLCAweDJCLCAweDAwLCAweDM3LCAweDAwLCAweEZDLCAweDBCLCAweEYwLCAweDBGLCAweEUwLAorMHgzRSwgMHgxMCwgMHg5QiwgMHgwMCwgMHhGQywgMHgyMiwgMHhGMCwgMHgxRiwgMHhDMCwgMHgwQiwgMHg2MCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4NzcsIDB4MDAsIDB4OTMsIDB4MDAsIDB4N0MsCisweDIzLCAweDMwLCAweDA5LCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDgwLCAweEZDLCAweDAwLCAweEYwLCAweDA5LCAweEMwLAorMHgwNiwgMHgxMCwgMHg5MywgMHg4MCwgMHgzQywgMHgwOCwgMHgzNCwgMHg0RCwgMHhFMSwgMHgwNywgMHgwOCwgMHg5RiwgMHgwMSwKKzB4NEMsIDB4MDIsIDB4RjAsIDB4MEQsIDB4RDAsIDB4NTQsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDM5LCAweDAwLCAweEExLCAweDA0LCAweEI0LCAweDEzLCAweDEwLCAweDBBLCAweDQwLAorMHhCQiwgMHgyOCwgMHhFQywgMHgyMCwgMHhCNCwgMHg4MiwgMHhEMCwgMHg2RSwgMHg0OCwgMHgwOCwgMHgwMCwgMHhBMSwgMHgwMCwKKzB4QjQsIDB4MDIsIDB4NTAsIDB4MEUsIDB4NEEsIDB4M0IsIDB4MDAsIDB4QkQsIDB4NDAsIDB4QkMsIDB4MDIsIDB4RDAsIDB4NEUsCisweDQwLCAweDQ4LCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLAorMHhFRCwgMHgwMCwgMHhFOSwgMHgwOSwgMHgzNCwgMHgwRiwgMHgxMCwgMHgxQSwgMHg0MCwgMHg3QiwgMHgwMSwgMHhBRCwgMHgwMSwKKzB4QjQsIDB4MDQsIDB4RDAsIDB4MTgsIDB4NDAsIDB4NDgsIDB4MDAsIDB4QTEsIDB4MDEsIDB4QjQsIDB4MDcsIDB4OTAsIDB4MUUsCisweDQwLCAweDZCLCAweDEwLCAweEVELCAweDAxLCAweEE0LCAweDA2LCAweEQwLCAweDlFLCAweDUwLCAweDBDLCAweDAwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHhFMywgMHgwMCwgMHhDOSwgMHg4OCwKKzB4MzQsIDB4MDcsIDB4MTAsIDB4MjgsIDB4NDEsIDB4MzMsIDB4MDAsIDB4OEQsIDB4MjMsIDB4MzQsIDB4MDcsIDB4RDAsIDB4MEQsCisweDQwLCAweDE0LCAweDAyLCAweEMxLCAweDAxLCAweDM0LCAweENCLCAweEQwLCAweDBDLCAweDQwLCAweDczLCAweDA0LCAweENELAorMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwgMHgwRCwgMHg1MCwgMHg0OCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4REQsIDB4MjAsIDB4NUIsIDB4MjEsIDB4N0MsIDB4MDUsIDB4MzQsIDB4MDcsCisweEMwLCAweDE3LCAweDAwLCAweDdGLCAweDAzLCAweEZDLCAweDAxLCAweEYxLCAweDA3LCAweEMwLCAweDVDLCAweDQwLCAweDczLAorMHgwNSwgMHhCQywgMHgxRCwgMHhCMCwgMHgwNSwgMHhDNCwgMHhERiwgMHgyMSwgMHg1RiwgMHgwMCwgMHhFQywgMHgwMSwgMHhGMCwKKzB4MDUsIDB4QzAsIDB4NUMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisweDAwLCAweDg3LCAweDQxLCAweDE3LCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDAxLCAweEMwLCAweDA3LCAweDAwLCAweDFGLAorMHgwOCwgMHg2QywgMHgzMCwgMHhGMCwgMHgzMSwgMHhEMCwgMHg0NSwgMHgwMCwgMHgxRiwgMHgwMSwgMHg3QywgMHgwMCwgMHg3MCwKKzB4MjEsIDB4QzAsIDB4ODcsIDB4MTAsIDB4MUYsIDB4MDAsIDB4N0UsIDB4MDAsIDB4RjAsIDB4MjEsIDB4QzgsIDB4NEIsIDB4MDAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDI3LCAweDAwLCAweDhGLAorMHg4MCwgMHg0QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNCwgMHgwMCwgMHg5RiwgMHgxMCwgMHg0QywgMHgwMiwgMHhGMCwKKzB4MDksIDB4QzAsIDB4NjYsIDB4MDEsIDB4OUIsIDB4MDEsIDB4NEMsIDB4MDIsIDB4QjAsIDB4MTksIDB4QzAsIDB4MjcsIDB4MDAsCisweDlGLCAweDA0LCAweDdDLCAweDgyLCAweDMwLCAweDA5LCAweEMwLCAweDQwLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNiwgMHgwMSwgMHhCRCwgMHgwMCwgMHg4NSwgMHgwMiwgMHgxMCwKKzB4MDgsIDB4QzAsIDB4MkMsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NTQsIDB4MEEsIDB4RDIsIDB4MjksIDB4NDAsIDB4RTQsIDB4MjAsCisweDgxLCAweDRGLCAweDU0LCAweDAyLCAweEIwLCAweEQ5LCAweDQ2LCAweEE3LCAweDFFLCAweDlELCAweDAwLCAweDM0LCAweDAyLAorMHgxMCwgMHg2QiwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4QTAsIDB4MjQsIDB4ODAsIDB4OUQsIDB4MDAsIDB4NDQsIDB4NjIsIDB4MTAsIDB4MDksIDB4NDAsIDB4MjQsIDB4MDAsCisweDhELCAweDAwLCAweDQwLCAweDJBLCAweEQwLCAweDE5LCAweDYwLCAweDI2LCAweDAwLCAweEQxLCAweDIwLCAweDQ0LCAweDJBLAorMHg4MCwgMHgwOSwgMHgyMCwgMHgzNywgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwMiwgMHgxMCwgMHgwOSwgMHg0MCwgMHg2MCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MjAsIDB4MTAsCisweDhELCAweDAyLCAweDA0LCAweDAyLCAweDEwLCAweDI5LCAweDQwLCAweDIwLCAweDAwLCAweDhELCAweDAyLCAweDE0LCAweDUyLAorMHhEMCwgMHg0OCwgMHg0MSwgMHgyMCwgMHgwRCwgMHg5MSwgMHgyMCwgMHg1NCwgMHg1MiwgMHg5OCwgMHg0OCwgMHg0OSwgMHgyMywKKzB4MDAsIDB4OEQsIDB4OTUsIDB4NzYsIDB4MEEsIDB4MTAsIDB4MDgsIDB4NDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLCAweDA2LCAweDAwLCAweDFGLCAweDAxLCAweDRDLCAweDg0LAorMHgzMCwgMHgwMSwgMHhEMCwgMHg0NCwgMHgwMCwgMHgxRCwgMHgwMCwgMHg0QywgMHgxMCwgMHhGMCwgMHg0NSwgMHhEMCwgMHgxMiwKKzB4MDEsIDB4MTMsIDB4MDAsIDB4NEMsIDB4OTAsIDB4QjAsIDB4NDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MjQsIDB4N0MsCisweDAwLCAweDM0LCAweDEwLCAweEQwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOSwgMHhCOCwgMHgzQiwgMHgxMCwgMHhCRiwgMHgwMywgMHhGQywgMHgwQSwgMHhDMCwgMHgxRiwgMHhDMCwgMHhBNSwKKzB4MDAsIDB4RkYsIDB4MDEsIDB4RkMsIDB4MDIsIDB4RjAsIDB4NEIsIDB4QzMsIDB4MkYsIDB4NDUsIDB4QkYsIDB4MDAsIDB4RkMsCisweDUyLCAweDgwLCAweDBCLCAweEMwLCAweDJGLCAweDAwLCAweEJGLCAweDE0LCAweEZDLCAweDA2LCAweEYwLCAweDY5LCAweEMxLAorMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBMCwgMHgyRiwKKzB4MDAsIDB4OUYsIDB4MDcsIDB4Q0MsIDB4ODYsIDB4MzQsIDB4MjksIDB4QzAsIDB4NkMsIDB4MDQsIDB4OEYsIDB4MDAsIDB4RkMsCisweDA2LCAweEYwLCAweDVGLCAweEMwLCAweDZDLCAweDA1LCAweEJCLCAweDQwLCAweENDLCAweDA2LCAweDMwLCAweDFCLCAweEMyLAorMHgyQywgMHgwOCwgMHhGMywgMHgwNSwgMHg0QywgMHgwQSwgMHhGMCwgMHg3QiwgMHhDMCwgMHg2NCwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDAsIDB4MUQsIDB4MDEsIDB4NDQsCisweDgwLCAweDEwLCAweDExLCAweDUwLCAweDg0LCAweDAwLCAweDFELCAweDIxLCAweDc0LCAweDIwLCAweEQwLCAweDUwLCAweEMxLAorMHg0MiwgMHgwMSwgMHgxMSwgMHgwMCwgMHg0NCwgMHg2RCwgMHg1MCwgMHgwMSwgMHg1MCwgMHgwNCwgMHgwMCwgMHgwMSwgMHg1NSwKKzB4NDQsIDB4MDUsIDB4RDAsIDB4NjEsIDB4NDAsIDB4NzAsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLCAweDAwLCAweDhELCAweDAyLCAweDA1LCAweDBBLCAweDEwLCAweDA4LCAweDQwLAorMHgyMiwgMHgwMCwgMHg4RCwgMHgxNCwgMHgzNCwgMHgwMiwgMHhEMCwgMHhDOCwgMHg0MCwgMHgyMCwgMHgwNSwgMHg4NSwgMHgwMCwKKzB4MDUsIDB4OTIsIDB4NTgsIDB4ODgsIDB4NDAsIDB4NjAsIDB4NDAsIDB4ODEsIDB4MDgsIDB4MDQsIDB4ODIsIDB4RDAsIDB4ODgsCisweDQwLCAweDQyLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweEE4LAorMHgyNSwgMHg4MCwgMHg4RCwgMHgwMSwgMHg0NCwgMHgxMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5RCwgMHg4MCwKKzB4NzQsIDB4MjIsIDB4RDAsIDB4MDksIDB4NTAsIDB4MjYsIDB4MjAsIDB4OTUsIDB4MDgsIDB4MDQsIDB4MDIsIDB4NTgsIDB4MDksCisweDQwLCAweDM0LCAweDAyLCAweDkxLCAweDAwLCAweDQ1LCAweDIyLCAweEQwLCAweDA5LCAweDQwLCAweDYyLCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHg2NywgMHgwMCwgMHhCRiwgMHg4MCwKKzB4NEMsIDB4MDYsIDB4MzAsIDB4MUIsIDB4QzAsIDB4MjYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4NDksCisweEMwLCAweDY0LCAweDAwLCAweDk3LCAweDAwLCAweDRDLCAweDg2LCAweDcyLCAweDA5LCAweENBLCAweDY0LCAweDIwLCAweDkzLAorMHgyMSwgMHhDQywgMHgwRSwgMHhGMCwgMHgwOSwgMHhEMCwgMHgxNiwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4MjUsIDB4MDIsIDB4OUYsIDB4MDAsIDB4N0MsIDB4NDIsIDB4RjAsIDB4NDksCisweEMwLCAweDI1LCAweDA0LCAweDlGLCAweDAzLCAweDdDLCAweDA2LCAweEYwLCAweDU4LCAweEQwLCAweDI3LCAweDAyLCAweDkzLAorMHgyMCwgMHg3QywgMHgyMiwgMHhGMCwgMHgwOCwgMHhDMCwgMHg2NywgMHgwMCwgMHg4RiwgMHgwOSwgMHg3QywgMHgwMiwgMHhEMCwKKzB4MDksIDB4QzAsIDB4NTEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAwLCAweEYwLCAweDIxLCAweEMwLCAweDA3LCAweDQwLCAweDEzLAorMHgwMiwgMHg0RCwgMHgwMCwgMHgzMiwgMHgyMSwgMHhGMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0NCwgMHg0QywgMHgyMCwgMHgzNCwKKzB4NDEsIDB4QzAsIDB4MDQsIDB4MEEsIDB4MTMsIDB4MDAsIDB4NEMsIDB4MDAsIDB4RjAsIDB4ODEsIDB4QzYsIDB4NTAsIDB4MjAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLCAweDVDLCAweDAwLCAweDUxLAorMHgwMCwgMHhCNCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxRiwgMHg4MCwgMHg1MSwgMHgwMCwgMHhDNCwgMHgwOSwgMHg1MCwKKzB4MjcsIDB4NTAsIDB4MUQsIDB4MDAsIDB4NjEsIDB4RDIsIDB4QzQsIDB4MDUsIDB4MjAsIDB4MDcsIDB4NDAsIDB4MTgsIDB4MDAsCisweDc1LCAweDA4LCAweDZDLCAweDAxLCAweEQwLCAweDE3LCAweEQwLCAweDUyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHg2MiwgMHgwMCwgMHhDOSwgMHgwMCwgMHgzNCwgMHgwMiwgMHhEMCwKKzB4MEMsIDB4NDAsIDB4MjMsIDB4MDgsIDB4QzEsIDB4MDAsIDB4MDQsIDB4NEEsIDB4MTAsIDB4M0MsIDB4NDksIDB4MzAsIDB4MDAsCisweEMwLCAweDAxLCAweDA1LCAweDE3LCAweDE5LCAweDI4LCAweDQwLCAweDMwLCAweDg0LCAweEMxLCAweDAxLCAweDA0LCAweDAzLAorMHhEMCwgMHgxOSwgMHg0MCwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4ODAsIDB4RkMsIDB4MDAsIDB4RTksIDB4MDQsIDB4QjQsIDB4NDIsIDB4RDAsIDB4NEUsIDB4NDAsIDB4RkIsIDB4MDAsCisweEY1LCAweDI1LCAweDg0LCAweDQ2LCAweDUwLCAweDZFLCAweDY4LCAweDY5LCAweDIxLCAweDIxLCAweDIwLCAweDg0LCAweDAxLAorMHgxOCwgMHgwNiwgMHg0MSwgMHgzOCwgMHgwMCwgMHhFNSwgMHgxMCwgMHhBNiwgMHgxMywgMHhEMCwgMHgwRSwgMHg0MCwgMHgxMiwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MTAsIDB4NjgsIDB4MDAsCisweEVCLCAweDA3LCAweEJDLCAweDA2LCAweEYwLCAweDNFLCAweEMwLCAweDZCLCAweDAwLCAweEUxLCAweDAzLCAweDhDLCAweDA2LAorMHgzMiwgMHg3MiwgMHg0MCwgMHgyOCwgMHg0MSwgMHgyMywgMHgwMSwgMHg4NCwgMHgwNywgMHgzMiwgMHgxMCwgMHhDMCwgMHg3OCwKKzB4MDAsIDB4RTMsIDB4MDEsIDB4OEMsIDB4MEYsIDB4RjAsIDB4MTAsIDB4QzAsIDB4NTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDMxLCAweDQwLCAweEQ3LCAweDAwLCAweDdDLCAweDAyLAorMHhGMCwgMHgwRCwgMHhDMCwgMHgzMywgMHgwMCwgMHhEQiwgMHgwMCwgMHgzQywgMHgwMiwgMHhGMCwgMHgwMSwgMHhEOCwgMHgyNywKKzB4MDIsIDB4MEYsIDB4MjAsIDB4M0MsIDB4MDAsIDB4RjAsIDB4MDEsIDB4RDIsIDB4MzMsIDB4MTAsIDB4NUYsIDB4MTIsIDB4N0MsCisweDAzLCAweEYwLCAweDBELCAweEMwLCAweDQzLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMiwgMHg2RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhDQywgMHgwNywgMHhGMCwgMHgxRSwgMHhDMCwgMHg2QywKKzB4MDAsIDB4RUYsIDB4MDEsIDB4Q0MsIDB4MDcsIDB4MzIsIDB4MUYsIDB4QzAsIDB4NzgsIDB4MTAsIDB4MjMsIDB4MDEsIDB4OEMsCisweDA1LCAweDMwLCAweDEzLCAweEMwLCAweDdGLCAweDA4LCAweDdGLCAweDAxLCAweEJDLCAweDA3LCAweDMwLCAweDFGLCAweEMwLAorMHgwQiwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg4OCwgMHgyOSwKKzB4MDAsIDB4RUQsIDB4MDAsIDB4ODQsIDB4MDMsIDB4RDIsIDB4MEUsIDB4NDAsIDB4QTgsIDB4MDAsIDB4RUQsIDB4MDgsIDB4ODQsCisweDAzLCAweEIwLCAweDJGLCAweDQwLCAweDI4LCAweDAxLCAweDIxLCAweDgwLCAweDk0LCAweDAwLCAweDUyLCAweDAyLCAweDQwLAorMHgzQiwgMHgwQSwgMHg2RCwgMHgwNCwgMHhCNCwgMHgwMywgMHgxMCwgMHgwRSwgMHg0MCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjksIDB4MDAsIDB4RUQsIDB4MDEsIDB4ODQsCisweDAzLCAweEQwLCAweDFGLCAweDQwLCAweDI4LCAweDAwLCAweEZELCAweDAxLCAweDg0LCAweDIyLCAweDEwLCAweDhFLCAweDQwLAorMHgyQywgMHgxMCwgMHgzOSwgMHgwOCwgMHg4NCwgMHgwMywgMHgxMCwgMHgwMiwgMHg0MCwgMHgzQiwgMHgwMCwgMHgyRCwgMHgwMCwKKzB4RjQsIDB4MDcsIDB4MTAsIDB4MDYsIDB4NDAsIDB4NjMsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA0LCAweDI4LCAweDIzLCAweDAxLCAweENELCAweDAwLCAweDA0LCAweDA3LCAweEQwLCAweDBDLCAweDQxLAorMHgyMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNiwgMHg0NSwgMHg5MCwgMHgxQywgMHg0MCwgMHgyMCwgMHgwMCwgMHgwOSwgMHgwMSwKKzB4MTYsIDB4MTksIDB4NTAsIDB4OTAsIDB4NDAsIDB4QjMsIDB4MDAsIDB4NUQsIDB4MDAsIDB4MzQsIDB4NkYsIDB4MTAsIDB4MEMsCisweDQwLCAweDFCLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweEE4LAorMHhBNSwgMHgwMCwgMHhERiwgMHgwNCwgMHg0QywgMHgxMiwgMHhGMCwgMHgwRCwgMHhEMCwgMHgyNCwgMHgwMCwgMHhERiwgMHgwMCwKKzB4NEQsIDB4MTIsIDB4MzAsIDB4MUIsIDB4QzAsIDB4M0MsIDB4NDEsIDB4MUIsIDB4MDUsIDB4NEMsIDB4MDEsIDB4MzQsIDB4MDEsCisweEMwLCAweDQ3LCAweDEyLCAweDlGLCAweDAwLCAweDdDLCAweDBGLCAweDM2LCAweDAxLCAweEM4LCAweDU3LCAweDIwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhCNywgMHgwMCwgMHhERiwgMHg0MCwKKzB4N0MsIDB4MDIsIDB4RjAsIDB4OEQsIDB4QzAsIDB4MzMsIDB4MTAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4ODAsCisweEMwLCAweEE3LCAweDAwLCAweDE3LCAweDQwLCAweDdDLCAweDA4LCAweEYxLCAweDAwLCAweEMwLCAweEQ3LCAweDAwLCAweDFGLAorMHg0MCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDQywgMHgyNywgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4NkYsIDB4MDAsIDB4RUYsIDB4MDAsIDB4OEMsIDB4MEUsIDB4MzAsIDB4MEYsCisweEMwLCAweDJDLCAweDAwLCAweEYzLCAweDAwLCAweENDLCAweDAyLCAweEYwLCAweDMzLCAweEM0LCAweDBDLCAweDAwLCAweDMzLAorMHgwMCwgMHhCQywgMHgwOSwgMHgzMCwgMHgwMywgMHhDMCwgMHgxQywgMHgwMCwgMHhCRiwgMHgwMCwgMHhDQywgMHgwMywgMHgzMCwKKzB4MEIsIDB4RDAsIDB4MDQsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsCisweDIwLCAweEQ2LCAweDEwLCAweERELCAweDQwLCAweDQ0LCAweDRBLCAweDEwLCAweDBELCAweDQwLCAweEY1LCAweDUwLCAweEQxLAorMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgzMSwgMHg0MiwgMHgwMSwgMHgwOCwgMHgxMSwgMHgyMywgMHg3NCwgMHgwRCwgMHgxMCwKKzB4NTEsIDB4QzAsIDB4QjYsIDB4MDAsIDB4MUQsIDB4NjEsIDB4NDQsIDB4MDMsIDB4MTEsIDB4MkQsIDB4NDAsIDB4MDQsIDB4MDIsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLCAweEE0LCAweDAxLCAweERELAorMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwQywgMHg0MCwgMHgyNCwgMHgwMiwgMHhDMSwgMHgyMCwgMHg0NCwgMHgwMywgMHhEMCwKKzB4MEQsIDB4NDAsIDB4QjQsIDB4OTAsIDB4MTksIDB4NTEsIDB4NzQsIDB4MDksIDB4MTAsIDB4MTEsIDB4MDAsIDB4MTQsIDB4MDIsCisweDFELCAweDAzLCAweDA1LCAweDgzLCAweDEwLCAweDI0LCAweDQwLCAweDA0LCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNCwgMHgwMiwgMHgxNCwKKzB4MEMsIDB4NDAsIDB4MTEsIDB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4RDAsIDB4MDQsIDB4NDAsIDB4MjUsIDB4MDAsCisweDAxLCAweDAwLCAweDM0LCAweDAxLCAweDE0LCAweDAwLCAweDYwLCAweDMyLCAweDAwLCAweDFELCAweDAwLCAweDA0LCAweDAzLAorMHgxMCwgMHgwQywgMHg0MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4QjAsIDB4MjYsIDB4MDAsIDB4RUYsIDB4MDAsIDB4NEQsIDB4MDEsIDB4MzAsIDB4MEYsIDB4QzAsIDB4MjQsIDB4MDAsCisweEYzLCAweDAwLCAweDQ1LCAweDAyLCAweEYwLCAweDBELCAweEMwLCAweDA0LCAweDAwLCAweDEzLCAweDAwLCAweDdDLCAweDAxLAorMHgzMCwgMHgwMSwgMHhDMCwgMHgxNCwgMHgwMCwgMHgzRiwgMHgwMCwgMHhDQywgMHgwMywgMHgzNCwgMHgwRCwgMHhDOCwgMHgwNCwKKzB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4QjgsIDB4MUYsIDB4MDAsCisweEZGLCAweDAwLCAweEZDLCAweDgxLCAweEYwLCAweDBGLCAweEMwLCAweDFGLCAweDAwLCAweEZGLCAweDAwLCAweEJDLCAweDAxLAorMHhFMiwgMHgwNywgMHg5OCwgMHgwRiwgMHg0MCwgMHgzRiwgMHg0MCwgMHhGQywgMHgwMSwgMHhGMCwgMHgwMywgMHhDMCwgMHgzRiwKKzB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MTcsIDB4NjAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDdGLCAweDAwLCAweEZCLCAweDEwLCAweDlDLCAweDA3LAorMHhGMCwgMHgxRiwgMHhDMCwgMHg0RiwgMHgwMCwgMHhCRiwgMHgwMSwgMHhGQywgMHgwNSwgMHhGMCwgMHgxNywgMHhDOCwgMHgyRSwKKzB4MTAsIDB4QkYsIDB4MDQsIDB4RkMsIDB4MDMsIDB4MzAsIDB4MUYsIDB4QzAsIDB4N0YsIDB4MDgsIDB4QjYsIDB4MDAsIDB4RkMsCisweDI3LCAweDcwLCAweDAyLCAweEMwLCAweDBFLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHgwOCwgMHg3NywgMHgwMCwgMHhGRCwgMHgwMywgMHg0NCwgMHgwNiwgMHgxMCwgMHgxRCwgMHg0MCwgMHg0NywKKzB4MDAsIDB4REQsIDB4MDEsIDB4NzQsIDB4MDAsIDB4MTAsIDB4MUQsIDB4NDAsIDB4RTQsIDB4MDIsIDB4MUQsIDB4MDQsIDB4RjQsCisweDVCLCAweDEwLCAweDAxLCAweDQwLCAweDQ3LCAweDA4LCAweDlELCAweDAxLCAweDc0LCAweDAzLCAweEQwLCAweDE5LCAweDQwLAorMHgwQywgMHg2MCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHhBMCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MTQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MDMsIDB4MDAsIDB4OEQsIDB4NDAsIDB4NzQsCisweDUxLCAweDkwLCAweDA1LCAweDQ4LCAweDAyLCAweDAwLCAweDBELCAweDEyLCAweDM0LCAweDFCLCAweDEwLCAweDRDLCAweDQ5LAorMHgzMywgMHgwMCwgMHgwRCwgMHgwMiwgMHgzNCwgMHgxMywgMHhEMCwgMHgwMCwgMHg0MCwgMHg0RSwgMHg4MCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4MDAsIDB4REQsIDB4MjAsIDB4NDAsCisweDA3LCAweDEwLCAweDBELCAweDQwLCAweDY3LCAweDAwLCAweERELCAweDIzLCAweDc0LCAweDgxLCAweDE0LCAweDFELCAweDQxLAorMHg0NCwgMHgwMCwgMHgxRCwgMHgwMSwgMHg3NCwgMHgwMywgMHgxNCwgMHgwMSwgMHg0MCwgMHgwNywgMHgwOCwgMHg5RCwgMHg1MSwKKzB4NzQsIDB4MDMsIDB4RDAsIDB4MTksIDB4NDEsIDB4MEMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDg4LCAweDM3LCAweDAwLCAweERGLCAweDAwLCAweDU0LCAweDFGLCAweEYwLCAweDBELCAweEMwLAorMHg0NywgMHgwMCwgMHg5RiwgMHgwMSwgMHg3QywgMHgxOSwgMHhGMCwgMHgxNCwgMHhDMCwgMHhDNiwgMHgwMCwgMHg5RiwgMHgwNywKKzB4NzQsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4MTcsIDB4MDEsIDB4N0MsIDB4MDMsIDB4NzksIDB4MzksCisweEMwLCAweDIyLCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLAorMHgzQywgMHgwMCwgMHhFRiwgMHgwMCwgMHhGQywgMHgwMywgMHhGMCwgMHgwRiwgMHhDMCwgMHgwRiwgMHgwMCwgMHhGRiwgMHg0MCwKKzB4RkMsIDB4MDAsIDB4RjAsIDB4MEYsIDB4QzAsIDB4MjcsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDMsIDB4RjAsIDB4MDMsCisweEM0LCAweDBGLCAweDMwLCAweDFGLCAweDIwLCAweEZFLCAweEE3LCAweEYwLCAweDBCLCAweDQwLCAweDFGLCAweDAwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwKKzB4N0MsIDB4MDMsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MUYsIDB4MDIsIDB4NUMsIDB4NDksIDB4QjAsIDB4MjUsCisweEMwLCAweDA2LCAweDAwLCAweDlCLCAweDAwLCAweDRFLCAweDAzLCAweEYwLCAweDBELCAweEMwLCAweDM0LCAweDAwLCAweDE3LAorMHgwMiwgMHg0QywgMHgxMywgMHhGMiwgMHgyOSwgMHhDNSwgMHgyOSwgMHgyMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MzQsIDB4MDAsIDB4RkQsIDB4MDAsIDB4MzQsIDB4MDcsIDB4MTAsIDB4MEQsCisweEMwLCAweDA3LCAweDAwLCAweERELCAweDA1LCAweDA0LCAweDFELCAweDEwLCAweDBELCAweDQwLCAweDY0LCAweDAwLCAweDExLAorMHgwMCwgMHhFQywgMHg2MywgMHhEMCwgMHg3MSwgMHg0MCwgMHg4NCwgMHgwQiwgMHgxMSwgMHgwMSwgMHg0NCwgMHg0MywgMHhEMCwKKzB4MTgsIDB4QzAsIDB4NEUsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsCisweEEwLCAweDMyLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDNCLCAweDEwLCAweDBDLCAweDQwLCAweDAzLCAweDAwLCAweENELAorMHgwMCwgMHgxNCwgMHgwQiwgMHg5NCwgMHgwMCwgMHg0MiwgMHg2MiwgMHgwMCwgMHg4OSwgMHg4MCwgMHg1NCwgMHgwNywgMHhEMCwKKzB4NEMsIDB4NDAsIDB4RjEsIDB4MTAsIDB4ODUsIDB4MDAsIDB4MDQsIDB4MDMsIDB4RDAsIDB4QjAsIDB4NDAsIDB4MEQsIDB4MDAsCisweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDc4LCAweDgwLCAweEVELAorMHg0MSwgMHhCNCwgMHgwNywgMHgxMCwgMHgxRSwgMHg0MCwgMHg0OSwgMHgzMCwgMHhFRCwgMHhDOSwgMHg5NCwgMHgwNiwgMHgxMCwKKzB4MTcsIDB4MDAsIDB4NzgsIDB4MDAsIDB4RjAsIDB4NDksIDB4QjQsIDB4MDcsIDB4RDAsIDB4MTMsIDB4NDAsIDB4NDgsIDB4MDAsCisweEUxLCAweDExLCAweDg0LCAweDA3LCAweEQwLCAweDE2LCAweDQwLCAweDNFLCAweDIwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHhDRiwgMHgwMCwgMHgzQywgMHgwMSwgMHgzMCwKKzB4OEMsIDB4NDAsIDB4MDMsIDB4MDAsIDB4Q0YsIDB4MDAsIDB4NUMsIDB4MzMsIDB4QjAsIDB4MDAsIDB4QzAsIDB4MzIsIDB4MDQsCisweDVCLCAweDgwLCAweDE0LCAweDAzLCAweEYyLCAweDBDLCAweEQwLCAweDMwLCAweDAzLCAweDQ2LCAweDA4LCAweDBELCAweDAzLAorMHhGMCwgMHgwMCwgMHhDMCwgMHg0OSwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QjAsIDB4MzUsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDEsIDB4RjAsIDB4MEQsIDB4QzIsIDB4MzcsIDB4MDAsCisweENGLCAweDAwLCAweDZDLCAweEEzLCAweEYwLCAweDBDLCAweEMwLCAweDM3LCAweDAwLCAweERGLCAweDIwLCAweDZDLCAweDQzLAorMHhGMCwgMHg4MCwgMHhDMCwgMHgwMywgMHgwQSwgMHhERiwgMHgwOCwgMHg3QywgMHgyMywgMHhGMCwgMHg4RCwgMHhDMCwgMHgwOSwKKzB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4QTAsIDB4MzcsIDB4MDAsCisweERGLCAweDFFLCAweDdDLCAweDAzLCAweDMwLCAweDBELCAweEM0LCAweDA3LCAweDAwLCAweERGLCAweDAwLCAweDVDLCAweDAxLAorMHhGMCwgMHgxNSwgMHhDMCwgMHgxNCwgMHgwMCwgMHhERiwgMHgwMCwgMHg0QywgMHg0RiwgMHg3MSwgMHgwRCwgMHhDOCwgMHgzNCwKKzB4MTAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MDUsIDB4QzQsIDB4NDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDM5LCAweDAwLCAweEVELCAweDAwLCAweEI0LCAweDAzLAorMHgxMCwgMHgwRSwgMHg0OCwgMHgwQiwgMHgxMCwgMHhFRCwgMHgwMCwgMHg4NCwgMHgwMiwgMHhEMCwgMHgwRSwgMHg0MCwgMHgzOCwKKzB4MDgsIDB4RkQsIDB4ODAsIDB4MDQsIDB4MDMsIDB4MTIsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDQsIDB4RUQsIDB4MDAsIDB4QjQsCisweDAzLCAweEQwLCAweDA2LCAweDYwLCAweDRDLCAweDYwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMywgMHgwMCwgMHg3OSwgMHgwMCwgMHhFRCwgMHgwMSwgMHhGNCwgMHgwNywgMHgxNCwgMHgxRSwgMHg0MCwgMHg0QiwKKzB4MDAsIDB4RUQsIDB4MDEsIDB4OTQsIDB4MDcsIDB4RDAsIDB4MTcsIDB4NTAsIDB4NTgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4ODUsCisweDA3LCAweDUwLCAweDFGLCAweDQwLCAweDc4LCAweDAwLCAweEVELCAweDAxLCAweEI0LCAweDg3LCAweEQwLCAweDFDLCAweDQwLAorMHgxMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgyOCwgMHgzMywKKzB4MDAsIDB4Q0QsIDB4MDAsIDB4MzQsIDB4NEYsIDB4OTAsIDB4MEMsIDB4NDgsIDB4QzMsIDB4ODMsIDB4Q0QsIDB4MTIsIDB4MDQsCisweDRCLCAweEQwLCAweDdDLCAweDQwLCAweEIwLCAweDBDLCAweENELCAweDAyLCAweDA0LCAweDAzLCAweDEwLCAweDAxLCAweDQwLAorMHgwMCwgMHgwMCwgMHhDRCwgMHg4OCwgMHgzMCwgMHgyMiwgMHhEMCwgMHgxQywgMHg0MCwgMHg1OCwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MTUsIDB4MDAsIDB4NUYsIDB4MDAsIDB4QkMsCisweDQ5LCAweDMwLCAweDA1LCAweEMyLCAweDlGLCAweDAwLCAweDZGLCAweDAyLCAweDlDLCAweDA5LCAweEYwLCAweDI3LCAweEM4LAorMHgxQywgMHgwMCwgMHg3RiwgMHgwMCwgMHg0QywgMHgwMSwgMHg3MCwgMHgwNSwgMHhEMCwgMHgxNCwgMHgwMCwgMHg3RCwgMHgyMSwKKzB4N0MsIDB4MDUsIDB4RDAsIDB4MjcsIDB4NDAsIDB4NUMsIDB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDAwLCAweDFGLCAweDAwLCAweDdDLCAweDAwLCAweDcwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwOCwgMHhGMCwgMHg4MSwgMHhDMCwgMHgwNywgMHgwMCwgMHgxRiwgMHgxOCwKKzB4N0MsIDB4MDAsIDB4RjAsIDB4MjMsIDB4QzAsIDB4OEYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RjAsIDB4QTEsCisweEQxLCAweDRCLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LAorMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHgzNCwgMHgwOSwgMHhDMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwOCwKKzB4NkMsIDB4MjYsIDB4NzEsIDB4MDksIDB4QzAsIDB4MjcsIDB4MDAsIDB4OUUsIDB4MDAsIDB4NEMsIDB4MTYsIDB4RjAsIDB4MDksCisweEMwLCAweDI1LCAweDIwLCAweDkzLCAweDM4LCAweDc4LCAweDBFLCAweEYyLCAweDE4LCAweEMwLCAweDQwLCAweDIwLCAweDA0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwgMHgwMCwgMHg5RCwgMHgwMCwKKzB4NzQsIDB4MDIsIDB4MTEsIDB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4NDAsIDB4NDQsIDB4MDYsIDB4MTEsIDB4MDksCisweDQ0LCAweDI3LCAweDAwLCAweDlELCAweDgwLCAweDQ0LCAweDhFLCAweEQxLCAweDI5LCAweDQwLCAweDIwLCAweDA0LCAweDkxLAorMHgwMSwgMHg3NCwgMHgwNiwgMHhEMCwgMHg4OSwgMHg0MSwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MDAsIDB4NzQsIDB4MTIsIDB4MUMsIDB4MDksCisweDQwLCAweDI3LCAweDAwLCAweDlELCAweDAwLCAweDY0LCAweDQyLCAweDQwLCAweDA5LCAweDQyLCAweDM3LCAweDgwLCAweDhELAorMHgwMCwgMHg0NCwgMHgwMiwgMHhEMCwgMHgxOSwgMHg0MSwgMHgyRCwgMHg0MCwgMHg5MSwgMHgwMCwgMHg3NCwgMHg0MiwgMHhEMCwKKzB4MDksIDB4NDAsIDB4NzAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweDIwLCAweDAwLCAweDhELCAweDE0LCAweDc0LCAweDAyLCAweDEwLCAweDA4LCAweDQwLCAweDIzLCAweDAwLCAweDhELAorMHgwMCwgMHg0NCwgMHgwMiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwNSwgMHg4RCwgMHgzNCwgMHgwNCwgMHg1MiwgMHhEMCwKKzB4MEEsIDB4NDAsIDB4MkMsIDB4MjAsIDB4ODEsIDB4MTQsIDB4MzQsIDB4MDIsIDB4RDAsIDB4NDgsIDB4NTEsIDB4NTAsIDB4QTAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweDMwLCAweDA2LCAweDAwLCAweDFGLAorMHgwNCwgMHg3QywgMHgwMCwgMHgzMCwgMHgwMSwgMHhDOCwgMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg2QywgMHgwMCwgMHg3MCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4MjEsIDB4MUYsIDB4MDQsIDB4NEMsIDB4MTEsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MEQsIDB4MDAsCisweDEzLCAweEM0LCAweDdDLCAweDAwLCAweEYwLCAweDQxLCAweEMwLCAweDc0LCAweEMwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCMCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHhCQywgMHgwMywgMHhGMCwKKzB4MDksIDB4QzAsIDB4MkYsIDB4MDAsIDB4RUYsIDB4ODAsIDB4RkMsIDB4NTIsIDB4RjAsIDB4MEEsIDB4QzAsIDB4MkYsIDB4MDAsCisweEJGLCAweDE0LCAweDdELCAweDUyLCAweEYwLCAweDQ4LCAweEM1LCAweDI3LCAweDAwLCAweEJGLCAweDQwLCAweEZDLCAweDUyLAorMHhGMCwgMHgwQiwgMHhDMCwgMHg2NywgMHgyMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTgsIDB4QTAsIDB4MjcsIDB4MDAsIDB4OUYsIDB4MDEsIDB4RkMsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzAsIDB4MjcsIDB4NjAsCisweEIzLCAweDAwLCAweDlDLCAweDBBLCAweDcwLCAweDA5LCAweEMwLCAweDNELCAweDAwLCAweDkzLCAweDAyLCAweENDLCAweEM2LAorMHhGMCwgMHgyQiwgMHhDMiwgMHgyRiwgMHgwMCwgMHhCRiwgMHg4MCwgMHhDQywgMHgwQSwgMHhEMCwgMHgwQiwgMHhDMCwgMHg2NywKKzB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDgsIDB4MDcsIDB4MDAsCisweDFELCAweDBBLCAweDc0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA3LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDA0LAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgxMCwgMHhEMCwgMHgwMSwgMHg0MCwgMHgwNywKKzB4MDAsIDB4MUQsIDB4MDAsIDB4NDQsIDB4MDAsIDB4RDAsIDB4MDEsIDB4NDAsIDB4NzMsIDB4NjAsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLCAweDAwLCAweDhELCAweDAwLCAweDc0LCAweDAyLAorMHg5MCwgMHgwOCwgMHg0MCwgMHgyNywgMHgwMCwgMHg4MSwgMHgwMCwgMHg1NCwgMHgwMiwgMHg1MiwgMHgwOSwgMHg0MCwgMHhBMSwKKzB4MDAsIDB4ODEsIDB4MjIsIDB4MDQsIDB4NDIsIDB4RDIsIDB4MDgsIDB4NDAsIDB4MjMsIDB4MDAsIDB4OEQsIDB4MDIsIDB4MDQsCisweDAyLCAweEQwLCAweDA4LCAweDQwLCAweDRCLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxOCwgMHhBOCwgMHgyNSwgMHgwMCwgMHg5RCwgMHgwMCwgMHg3NCwgMHgwNiwgMHgxMCwgMHgwOSwgMHg0MCwgMHgyNywKKzB4MDAsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MUEsIDB4MTIsIDB4MjksIDB4NDIsIDB4MjQsIDB4NDAsIDB4OTEsIDB4ODAsIDB4NDUsCisweDgyLCAweEQwLCAweDA5LCAweDQwLCAweDI3LCAweDA4LCAweDlELCAweDAwLCAweDQ0LCAweDAzLCAweEQwLCAweDI5LCAweDQwLAorMHg2MywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhBOCwgMHgyNywKKzB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsIDB4MDIsIDB4QjAsIDB4MDksIDB4QzQsIDB4RTMsIDB4MDQsIDB4OTMsIDB4MDIsIDB4NUMsCisweDBFLCAweDcwLCAweDA4LCAweEMwLCAweEU1LCAweDA0LCAweDkyLCAweDFCLCAweDQ4LCAweDAyLCAweEUwLCAweDA5LCAweEMwLAorMHgyNywgMHgwMCwgMHg5RiwgMHgxOSwgMHg0RCwgMHgwNiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgxNywgMHgyOCwgMHgwRSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4MjUsIDB4MDAsIDB4OUYsIDB4MDAsIDB4N0MsCisweDAyLCAweEYwLCAweDA5LCAweEM0LCAweDY3LCAweDAyLCAweDlGLCAweDAwLCAweDdDLCAweDA2LCAweEYwLCAweDA5LCAweEMwLAorMHgyNywgMHgwMSwgMHg4RiwgMHgyMSwgMHg3QywgMHg4MiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNywgMHgxMCwgMHg4RiwgMHgwMSwKKzB4N0MsIDB4MTIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NEIsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDFGLCAweDAwLCAweDZDLCAweDA4LCAweEYwLCAweDAxLCAweEMwLAorMHgwNywgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHg0MCwgMHgzMSwgMHgyMSwgMHhDOCwgMHg4NywgMHgwMCwgMHgxRSwgMHgwMiwKKzB4N0MsIDB4MDAsIDB4MzIsIDB4ODEsIDB4ODEsIDB4MDQsIDB4MDQsIDB4MUYsIDB4ODAsIDB4NEMsIDB4MDAsIDB4MzQsIDB4MDEsCisweEMwLCAweDQzLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweEEwLAorMHgxNCwgMHgwMCwgMHg1RCwgMHgwMCwgMHg4NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHgxNywgMHgxMCwgMHg2RCwgMHg4MCwKKzB4QjQsIDB4MDUsIDB4MTAsIDB4MDUsIDB4NDAsIDB4MTMsIDB4MDAsIDB4NUQsIDB4MDAsIDB4RjQsIDB4MDEsIDB4MTAsIDB4MjcsCisweDQwLCAweERDLCAweDAwLCAweDVELCAweDA1LCAweEM0LCAweDYxLCAweDEyLCAweDA3LCAweDQwLCAweDUzLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgzMiwgMHgwMCwgMHhDRCwgMHgwMCwKKzB4MjQsIDB4MDUsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MzMsIDB4MDAsIDB4OEQsIDB4MEMsIDB4MzQsIDB4MEYsIDB4MTQsIDB4MEMsCisweDQwLCAweDMzLCAweDAyLCAweENELCAweDAwLCAweDM0LCAweDFGLCAweDUwLCAweDJDLCAweDQ0LCAweEQwLCAweDIwLCAweDhELAorMHgwMCwgMHgwNCwgMHgwRiwgMHgxMCwgMHgyQywgMHg0MSwgMHg1MywgMHgwMCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODAsIDB4MzgsIDB4MDAsIDB4RUQsIDB4MDEsIDB4ODQsIDB4MEIsIDB4RDAsIDB4MEUsCisweDQwLCAweDNCLCAweDgwLCAweEFELCAweDAwLCAweEY0LCAweDQzLCAweDEwLCAweDBFLCAweDQwLCAweDJCLCAweDAwLCAweEVELAorMHg0OCwgMHhCNCwgMHg0NywgMHg1MCwgMHgxRSwgMHg1MCwgMHgzOCwgMHgwNCwgMHhFRCwgMHgwMCwgMHg4NCwgMHgwNSwgMHgxMCwKKzB4MkUsIDB4NDAsIDB4MDcsIDB4MjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweDEwLCAweDc4LCAweDAwLCAweENGLCAweDAxLCAweEFDLCAweDA1LCAweEYwLCAweDFFLCAweEM0LCAweDdCLCAweDEwLCAweEFGLAorMHgwMSwgMHhCQywgMHgwNywgMHgzMCwgMHgxRSwgMHhDMCwgMHg3QiwgMHgwMCwgMHhFRiwgMHg4RCwgMHhGQywgMHgwNywgMHg3MCwKKzB4MTcsIDB4QzAsIDB4NzgsIDB4MDgsIDB4RUUsIDB4MDEsIDB4Q0QsIDB4MDcsIDB4MzAsIDB4MUUsIDB4QzAsIDB4NDcsIDB4NDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LCAweDM1LCAweDAwLCAweERGLAorMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDNCwgMHgzNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwKKzB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4NDIsIDB4N0MsIDB4MDMsIDB4QjQsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsCisweENGLCAweDAwLCAweDdDLCAweDAxLCAweEYwLCAweDA1LCAweEM4LCAweDQzLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMCwgMHg3RiwgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHg4NSwgMHhGMCwKKzB4MUYsIDB4QzAsIDB4N0YsIDB4MDIsIDB4MkYsIDB4MDksIDB4OEMsIDB4MDUsIDB4RjAsIDB4OUYsIDB4QzIsIDB4NkQsIDB4MDIsCisweEZCLCAweDA5LCAweEZDLCAweDA3LCAweDMwLCAweDFGLCAweEMwLCAweDdGLCAweDIwLCAweEZGLCAweDAxLCAweEZDLCAweDA3LAorMHgzMCwgMHgxRiwgMHhDMCwgMHgwQSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTUsIDB4ODgsIDB4MzksIDB4MDAsIDB4RUQsIDB4MDAsIDB4QjQsIDB4MDMsIDB4RDAsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDAsCisweDJELCAweDEwLCAweDg0LCAweDAxLCAweDEyLCAweDBFLCAweDQwLCAweDM4LCAweDA0LCAweEU5LCAweDAwLCAweDg0LCAweDExLAorMHgxMCwgMHgwNiwgMHg0MCwgMHgzQiwgMHgwMCwgMHhFRCwgMHgwMCwgMHhBNCwgMHgxMSwgMHgxOCwgMHgwQSwgMHg0MCwgMHg1NCwKKzB4NjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsCisweEVELCAweDAwLCAweEI0LCAweDAxLCAweEQwLCAweDBFLCAweDQwLCAweDM5LCAweDIwLCAweDNELCAweDAwLCAweEM1LCAweDAxLAorMHhEMCwgMHgwRiwgMHgwOSwgMHgyOSwgMHgwMCwgMHhFRCwgMHg0MCwgMHg5NiwgMHg4MywgMHgxNCwgMHgwNiwgMHg0MCwgMHgzQiwKKzB4MDIsIDB4RUQsIDB4MDAsIDB4RjQsIDB4ODMsIDB4MTAsIDB4MEUsIDB4NDEsIDB4MjIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDI4LCAweDMzLCAweDAwLCAweENELCAweDQwLCAweDM0LCAweDAzLAorMHhEMCwgMHgwQywgMHg2NCwgMHhCMywgMHgwNCwgMHgwRCwgMHgwNywgMHgwNCwgMHgwQywgMHg5MCwgMHgzQywgMHg0MCwgMHg3MCwKKzB4MDAsIDB4Q0QsIDB4MDMsIDB4MDQsIDB4MDIsIDB4MTAsIDB4QTEsIDB4NDQsIDB4NzMsIDB4MDAsIDB4Q0QsIDB4MDIsIDB4NjQsCisweDI0LCAweDEwLCAweDEwLCAweDQwLCAweDE4LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNSwgMHhBOCwgMHgzNSwgMHgwMCwgMHhERiwgMHgwMCwgMHg3QywgMHgwNywgMHhGMCwgMHgwRCwgMHhDMCwgMHg3NywKKzB4MTQsIDB4OUYsIDB4MDMsIDB4MEMsIDB4NEUsIDB4RjAsIDB4OUQsIDB4QzAsIDB4RjUsIDB4MDAsIDB4RkYsIDB4MTIsIDB4NzgsCisweDAwLCAweDMwLCAweDM5LCAweDQwLCAweDczLCAweDAxLCAweERELCAweDEwLCAweDdDLCAweDAyLCAweDE0LCAweDFELCAweEMwLAorMHg1NiwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzNywKKzB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MjIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MzcsIDB4MDgsIDB4OUYsIDB4MDIsIDB4N0MsCisweDA4LCAweDcwLCAweDBELCAweEMwLCAweDI3LCAweDAwLCAweERCLCAweDA0LCAweDdDLCAweDBBLCAweEYwLCAweDA5LCAweEM0LAorMHgzNywgMHgwMCwgMHhERiwgMHgzMCwgMHg2QywgMHg4MiwgMHhGMCwgMHg2RCwgMHhDMCwgMHhBNywgMHgwMCwgMHgwQywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDgsIDB4M0YsIDB4MDAsIDB4RkYsIDB4ODAsIDB4RkMsCisweDgzLCAweEYwLCAweDBGLCAweEMwLCAweDNGLCAweDA4LCAweEJGLCAweDAwLCAweERDLCAweDQyLCAweDcwLCAweDBGLCAweEMwLAorMHgzRCwgMHgwNCwgMHhERiwgMHg0MCwgMHg3OCwgMHgwMCwgMHhFMCwgMHgwMywgMHgwMSwgMHgzQywgMHgyNCwgMHhGMiwgMHg4MCwKKzB4RkMsIDB4MDAsIDB4MzAsIDB4MDksIDB4RTAsIDB4MTcsIDB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDgxLCAweDAwLCAweDM2LCAweDAwLCAweERELCAweDAwLCAweDc0LCAweDFGLCAweEQwLCAweDBELCAweEMwLAorMHgzNSwgMHgwMCwgMHg4RCwgMHg0MSwgMHg0NiwgMHgxNiwgMHgxMCwgMHgwQywgMHg0NiwgMHgyNCwgMHgyMCwgMHhERCwgMHgwMCwKKzB4NzQsIDB4MEUsIDB4RDAsIDB4MTksIDB4QzEsIDB4RjYsIDB4MDEsIDB4RDEsIDB4MDAsIDB4NzQsIDB4MDQsIDB4MzAsIDB4NDEsCisweDQwLCAweDE3LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEEwLAorMHgzNCwgMHg4MCwgMHhERCwgMHgwMCwgMHg3NCwgMHgwNywgMHhEMCwgMHgwRCwgMHg0OCwgMHgzNSwgMHgxMCwgMHg5RCwgMHgwMywKKzB4NTQsIDB4MDYsIDB4NTAsIDB4MEQsIDB4NDAsIDB4MjUsIDB4MDAsIDB4REQsIDB4MDAsIDB4NTQsIDB4MEMsIDB4RDAsIDB4MTksCisweDYwLCAweDc1LCAweDEwLCAweEQ1LCAweDA0LCAweDc0LCAweDA2LCAweDEwLCAweDg1LCAweDQwLCAweDA1LCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwgMHg4MCwgMHhDRCwgMHgwMCwKKzB4MzQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDIsIDB4MzEsIDB4MDAsIDB4REQsIDB4MjAsIDB4NDQsIDB4MDAsIDB4MTgsIDB4MEQsCisweDQwLCAweDMwLCAweDAwLCAweENELCAweDAwLCAweDM0LCAweDAwLCAweEQwLCAweDA5LCAweDQ4LCAweDI3LCAweDgwLCAweEM1LAorMHgwMCwgMHgzNCwgMHgwMiwgMHg5MywgMHgwMCwgMHg0MCwgMHg0MywgMHhBMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QjAsIDB4MzYsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsCisweEMwLCAweDM1LCAweDAwLCAweDlGLCAweDAwLCAweDU0LCAweDAyLCAweDcwLCAweDBELCAweEMwLCAweDI1LCAweDIwLCAweEZELAorMHgwMCwgMHg1QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgzNSwgMHg4MCwgMHhENywgMHg4MCwgMHg3QywgMHgwMiwgMHgyNCwKKzB4MDEsIDB4QzAsIDB4MDcsIDB4QzQsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisweEI4LCAweDNGLCAweDEwLCAweEZGLCAweDIwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEM0LCAweDNELCAweDAwLCAweEJGLAorMHg4MCwgMHhGNCwgMHgwMiwgMHhGMiwgMHgwRSwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHhGQywgMHgwMiwgMHhGMCwKKzB4MEIsIDB4QzAsIDB4MkUsIDB4NDAsIDB4RkIsIDB4MDAsIDB4QkMsIDB4MDIsIDB4NzAsIDB4MDMsIDB4QzgsIDB4MTcsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEEwLCAweDVGLCAweDAwLCAweDdGLAorMHg0MSwgMHhGQywgMHg4NSwgMHhGMCwgMHgxQiwgMHhDMCwgMHg1QywgMHgwMiwgMHhBRiwgMHgxNCwgMHhDQywgMHgwNCwgMHhGMCwKKzB4QzMsIDB4QzAsIDB4MEMsIDB4MDQsIDB4QjMsIDB4MTAsIDB4Q0MsIDB4MEMsIDB4MzAsIDB4OEIsIDB4QzAsIDB4M0YsIDB4MDAsCisweEIzLCAweDE0LCAweENDLCAweDUzLCAweDMwLCAweDBCLCAweEMwLCAweDBDLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOCwgMHg1NywgMHgwMCwgMHg5RCwgMHgwMSwgMHg3NCwgMHgwNSwgMHhEMSwKKzB4MTUsIDB4NDQsIDB4MTQsIDB4MjEsIDB4RkQsIDB4MDMsIDB4NDQsIDB4MTAsIDB4RDAsIDB4RTEsIDB4MDAsIDB4ODQsIDB4MDEsCisweEFCLCAweDA2LCAweDQ0LCAweDAwLCAweDEwLCAweEU5LCAweDQwLCAweDc3LCAweDAwLCAweEI1LCAweDA2LCAweEQ0LCAweDBGLAorMHgxMCwgMHgwOSwgMHg0MCwgMHgwNCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTEsIDB4QTAsIDB4MzMsIDB4MDAsIDB4OEQsIDB4MDAsIDB4MzQsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjAsIDB4MjAsCisweENELCAweDAwLCAweDE2LCAweDQwLCAweEQyLCAweDAxLCAweDUwLCAweDA0LCAweDQ0LCAweDgxLCAweDEwLCAweDA1LCAweDEwLAorMHgxMCwgMHgwMCwgMHg0MCwgMHgzMywgMHgwMCwgMHhDMSwgMHgxMCwgMHgwNCwgMHgwMywgMHhEMCwgMHg0OCwgMHg0MSwgMHg0NCwKKzB4ODAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4QTgsIDB4MzUsIDB4MDEsCisweDlELCAweDA0LCAweDc0LCAweDAyLCAweEQwLCAweDg1LCAweDQwLCAweDI0LCAweDAwLCAweERELCAweDAwLCAweDU1LCAweDA0LAorMHhEMCwgMHgwMSwgMHg0NiwgMHg2NCwgMHgwMCwgMHg5OSwgMHg0OCwgMHg0NCwgMHgwNCwgMHgxMCwgMHgzMSwgMHg0OCwgMHgzNywKKzB4MDAsIDB4QzUsIDB4MDAsIDB4NTQsIDB4MDMsIDB4RDAsIDB4MDksIDB4NDAsIDB4MEMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEE4LCAweEE3LCAweDAxLCAweERGLCAweDAxLCAweDdDLCAweDI3LAorMHhGMCwgMHgwRCwgMHhEMCwgMHg3NCwgMHgxMiwgMHg4RiwgMHgwMCwgMHg1QywgMHg0NCwgMHhGMCwgMHgyMCwgMHhDMSwgMHhDMCwKKzB4MDAsIDB4OTMsIDB4MDAsIDB4NEMsIDB4MTQsIDB4MzQsIDB4MUQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4OTMsIDB4ODAsIDB4NEMsCisweDAzLCAweEY0LCAweDM5LCAweEQwLCAweDA4LCAweDIwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwNywgMHg4MCwgMHg2RCwgMHgwMCwgMHhCRiwgMHgwMSwgMHhGOCwgMHgwNywgMHhGMCwgMHgwRiwgMHhDOCwgMHgzRiwKKzB4MDAsIDB4RjgsIDB4MTAsIDB4RUMsIDB4MDAsIDB4RjAsIDB4MjMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MDAsIDB4RkMsCisweDQwLCAweEYwLCAweDBGLCAweEMwLCAweDNCLCAweDEwLCAweDlGLCAweDA5LCAweEI4LCAweDgzLCAweDMwLCAweDNCLCAweEMwLAorMHgxRiwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgyNSwKKzB4MDAsIDB4OUYsIDB4NDAsIDB4N0MsIDB4MDIsIDB4RjAsIDB4MEQsIDB4QzAsIDB4MjcsIDB4MDAsIDB4REYsIDB4ODAsIDB4NEMsCisweDAwLCAweDMyLCAweDAxLCAweEQwLCAweDhDLCAweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDAwLCAweEYwLCAweDI1LCAweEMwLAorMHgzNCwgMHgwMCwgMHhEMywgMHgwNCwgMHg0RCwgMHgwMywgMHhGMCwgMHgyOCwgMHhDMCwgMHgwQiwgMHgyMCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4QTAsIDB4MjQsIDB4MDAsIDB4OUMsIDB4MDAsIDB4NzAsCisweDAyLCAweEQwLCAweDBDLCAweDYwLCAweDY3LCAweDAwLCAweERELCAweDAzLCAweDQwLCAweDJDLCAweDEwLCAweDAzLCAweDQwLAorMHg2NCwgMHgwMCwgMHg5MSwgMHgwRiwgMHg2RCwgMHgwOCwgMHg5MSwgMHhCNSwgMHg0MCwgMHhCQywgMHg0MCwgMHhENSwgMHgxMywKKzB4QzQsIDB4MDMsIDB4QzAsIDB4NDksIDB4NDAsIDB4NEYsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA3LCAweEEwLCAweDIyLCAweDIwLCAweDRELCAweDgwLCAweDM0LCAweDAyLCAweEMwLCAweDA0LCAweDQ4LAorMHg2MywgMHgwMCwgMHg4RCwgMHgwMSwgMHgyNCwgMHgwNCwgMHgxMCwgMHgwOCwgMHg0MiwgMHg0MCwgMHgwMCwgMHg5MSwgMHgwMSwKKzB4NDQsIDB4MDQsIDB4RDEsIDB4MTgsIDB4NDAsIDB4QjAsIDB4MDQsIDB4QzEsIDB4MDIsIDB4MDQsIDB4MDMsIDB4RDAsIDB4MDgsCisweDQwLCAweDFGLCAweDAwLCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDgwLAorMHg2OCwgMHgwMCwgMHhFRCwgMHgyMSwgMHhCNCwgMHgwNiwgMHhEMCwgMHgxNiwgMHg0MCwgMHg2QiwgMHgwNiwgMHhFRCwgMHgxMSwKKzB4QTUsIDB4NDQsIDB4MTQsIDB4OTgsIDB4NTAsIDB4NkMsIDB4MDQsIDB4RTEsIDB4MDksIDB4QTQsIDB4MDQsIDB4OTAsIDB4MUUsCisweDQwLCAweDc4LCAweDAyLCAweEU1LCAweDIxLCAweDg0LCAweDA3LCAweEQxLCAweDE2LCAweDQwLCAweDEzLCAweDAwLCAweDAyLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgxMCwgMHgzMCwgMHgwMCwgMHg4RiwgMHgwMCwKKzB4M0MsIDB4MDIsIDB4RjAsIDB4MDQsIDB4NDAsIDB4MjMsIDB4MEEsIDB4Q0YsIDB4MDAsIDB4NkMsIDB4MDAsIDB4MzIsIDB4ODgsCisweEM4LCAweDgwLCAweDQwLCAweEMzLCAweDA4LCAweDBDLCAweDQwLCAweEYyLCAweDhELCAweEQxLCAweDMwLCAweDAyLCAweEMzLAorMHgwMCwgMHgwRCwgMHgwMywgMHhGMCwgMHgwNCwgMHhDMCwgMHg0QiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QjgsIDB4M0QsIDB4MDAsIDB4QkYsIDB4ODAsIDB4RjAsIDB4MDIsIDB4RjAsIDB4MDcsCisweEMwLCAweDJGLCAweDBBLCAweEZGLCAweDAyLCAweERDLCAweDAwLCAweEYwLCAweDhCLCAweEQwLCAweDNCLCAweDQyLCAweEZGLAorMHgwOCwgMHhGNCwgMHgwMCwgMHhCMCwgMHg4RiwgMHhDMCwgMHgzQiwgMHgwMiwgMHhGRiwgMHgwMCwgMHhGQywgMHg0MywgMHhGMCwKKzB4ODcsIDB4QzAsIDB4MEIsIDB4NjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisweEEwLCAweDY3LCAweDAwLCAweEQzLCAweDIwLCAweDdDLCAweDA3LCAweDM0LCAweDA1LCAweEMwLCAweDcwLCAweDAwLCAweDkzLAorMHgwNiwgMHg1QywgMHgwMCwgMHhGMCwgMHg4MSwgMHhEMCwgMHgwMCwgMHgxMCwgMHg5MywgMHg4NiwgMHg0RCwgMHgwNCwgMHgzMCwKKzB4MEQsIDB4QzAsIDB4MzcsIDB4MDAsIDB4RDMsIDB4MDQsIDB4MEQsIDB4MTMsIDB4MzEsIDB4MDUsIDB4QzAsIDB4NTQsIDB4MDAsCisweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDg4LCAweDI5LCAweDAwLCAweEUxLAorMHgwMCwgMHhCNCwgMHgwMywgMHgxMCwgMHgwNiwgMHhDMCwgMHgzQSwgMHgxMCwgMHhFMSwgMHgwMCwgMHg4NCwgMHgwMiwgMHhEMCwKKzB4NDMsIDB4NDAsIDB4MjksIDB4MDAsIDB4RUIsIDB4MDgsIDB4ODQsIDB4MDEsIDB4NTEsIDB4MEUsIDB4NDAsIDB4M0IsIDB4MDEsCisweEYxLCAweDA4LCAweDk0LCAweDQzLCAweDEwLCAweDBGLCAweEMwLCAweDRBLCAweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg2RCwgMHgwMCwgMHhBMSwgMHgwMSwgMHhGNiwgMHgwNiwgMHgxMCwKKzB4MTYsIDB4NDAsIDB4NkMsIDB4MTAsIDB4RjAsIDB4MDEsIDB4QjQsIDB4MDQsIDB4RDAsIDB4M0EsIDB4NDAsIDB4NEMsIDB4MDAsCisweEMxLCAweDAxLCAweEM2LCAweDA0LCAweDEwLCAweDNFLCAweDQwLCAweDczLCAweDAyLCAweEU5LCAweDAxLCAweDg0LCAweDAzLAorMHgxMCwgMHgxRSwgMHg0MCwgMHgwQywgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTIsIDB4MjgsIDB4NjMsIDB4MDAsIDB4ODEsIDB4MDQsIDB4MzYsIDB4MTYsIDB4MTAsIDB4MTQsIDB4NDQsIDB4MjIsIDB4MDIsCisweEMxLCAweDAwLCAweDI0LCAweDBCLCAweEQxLCAweDBELCAweDQxLCAweDMwLCAweDA4LCAweEM5LCAweDAwLCAweDA0LCAweDFGLAorMHg1MCwgMHgxRCwgMHg0MCwgMHgzMywgMHgxMCwgMHhEOSwgMHgwMCwgMHgxNSwgMHgwMywgMHgxMCwgMHhFQywgMHg0MCwgMHg0QSwKKzB4MjAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4QTgsIDB4MUQsIDB4MDEsCisweDczLCAweDgwLCAweEZDLCAweDA1LCAweDMzLCAweEU3LCAweENDLCAweERDLCAweDQwLCAweDUzLCAweEMwLCAweEJDLCAweDE1LAorMHhGMSwgMHgyNywgMHhEMCwgMHgxQywgMHgwOCwgMHg1MywgMHgwMCwgMHhDRCwgMHgwNSwgMHgzMiwgMHgxNywgMHhDMCwgMHgxNywKKzB4NDAsIDB4NUIsIDB4MDAsIDB4NEMsIDB4MDEsIDB4MzAsIDB4MzcsIDB4QzAsIDB4NUMsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDA3LCAweDU0LCAweDFGLCAweDAwLCAweDdDLCAweDIwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNywgMHgyNCwgMHgxRiwgMHgwMiwgMHg1QywgMHg0OCwgMHhGMCwgMHgwMSwgMHhDMCwgMHgwMywKKzB4MDAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MjAsIDB4RjAsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MTcsIDB4MjAsIDB4N0MsCisweDgwLCAweEYwLCAweDAwLCAweEMwLCAweDRCLCAweDAwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwOCwgMHgyNywgMHgwMCwgMHg5RiwgMHgwMCwgMHg3QywgMHgwMiwgMHhGMCwgMHgwOSwgMHhDMCwgMHgyNCwKKzB4MDAsIDB4OUYsIDB4MDUsIDB4NEMsIDB4MEUsIDB4MzAsIDB4MDksIDB4QzAsIDB4NjQsIDB4MjAsIDB4OEEsIDB4MDEsIDB4NkMsCisweDAyLCAweEYwLCAweDA5LCAweEM4LCAweDYwLCAweDAwLCAweDkzLCAweDAwLCAweDRDLCAweDIyLCAweEYwLCAweDg5LCAweEMyLAorMHg0MCwgMHgyMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMCwgMHgyNiwKKzB4MDAsIDB4OUQsIDB4MDAsIDB4NzAsIDB4MDIsIDB4RDAsIDB4MDksIDB4NDAsIDB4MjUsIDB4MDAsIDB4OEMsIDB4MDAsIDB4NDQsCisweDEyLCAweDEwLCAweDA5LCAweDQwLCAweDY1LCAweDA4LCAweDlCLCAweDAxLCAweDZDLCAweDAyLCAweEQwLCAweEE5LCAweDQxLAorMHhFNCwgMHgwMSwgMHg5MSwgMHgwMiwgMHg0NSwgMHgwNiwgMHhEMCwgMHgxOSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4QTAsIDB4MjQsIDB4MDAsIDB4OUQsIDB4MjAsIDB4NzAsCisweDAzLCAweEQwLCAweDBDLCAweDQwLCAweDM0LCAweDAwLCAweDlDLCAweDEwLCAweDQ0LCAweDAyLCAweDE0LCAweDA5LCAweDQwLAorMHgyNCwgMHgwMiwgMHg5RCwgMHg0OCwgMHg2NSwgMHgxMiwgMHhEMiwgMHgwOSwgMHg0MCwgMHgyNCwgMHg0MiwgMHg5MSwgMHgxNCwKKzB4NDQsIDB4ODIsIDB4RDAsIDB4MEQsIDB4NDQsIDB4NjAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDIwLCAweEEwLCAweDEwLCAweDhELCAweDAyLCAweDM0LCAweDBBLCAweEQwLCAweDI4LCAweDQwLAorMHgyMSwgMHgxMCwgMHg5RCwgMHgxNCwgMHg0NiwgMHgwMiwgMHgxOCwgMHg0OCwgMHg0NSwgMHgyMSwgMHg0NSwgMHhDRCwgMHgxNCwKKzB4MjQsIDB4MDIsIDB4RDAsIDB4NDgsIDB4NzEsIDB4MjAsIDB4ODUsIDB4ODEsIDB4MTQsIDB4MDQsIDB4NTIsIDB4RDAsIDB4NDgsCisweDQxLCAweDQwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFELCAweEIwLAorMHgwNiwgMHgwMCwgMHgxRiwgMHgwMCwgMHg3QywgMHgwMCwgMHhEMCwgMHgwMCwgMHg0MCwgMHgwNCwgMHgxMCwgMHgxRiwgMHgwNCwKKzB4NEMsIDB4MDAsIDB4MzAsIDB4NDEsIDB4QzQsIDB4MTQsIDB4MjEsIDB4MUYsIDB4NDQsIDB4NkMsIDB4MDAsIDB4RjEsIDB4NDEsCisweEMwLCAweDA0LCAweDAxLCAweDEzLCAweEM0LCAweDRDLCAweDEwLCAweEYwLCAweDQxLCAweEQwLCAweDc0LCAweEMwLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHhCOCwgMHg3QiwgMHgwMCwgMHhGRiwgMHgwMSwKKzB4QkMsIDB4MDYsIDB4RjAsIDB4MUIsIDB4QzAsIDB4MkYsIDB4MDUsIDB4QUUsIDB4MDAsIDB4RkQsIDB4NTIsIDB4RjEsIDB4NEYsCisweEMxLCAweDJGLCAweDQ1LCAweEJCLCAweDE0LCAweEJDLCAweDUyLCAweEYwLCAweDRCLCAweEMxLCAweDI3LCAweDQwLCAweEJGLAorMHgxNCwgMHg3QywgMHgwMiwgMHhGMiwgMHg0QiwgMHhDMSwgMHg2NywgMHg2MCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4QTAsIDB4QTcsIDB4MDAsIDB4OTMsIDB4MDIsIDB4NEMsIDB4MDIsIDB4MzAsIDB4MjgsCisweEMwLCAweEFGLCAweDAwLCAweEFGLCAweDAxLCAweERDLCAweDBBLCAweEYwLCAweDM5LCAweEMwLCAweEVELCAweDA1LCAweEIzLAorMHgwMywgMHhEQywgMHgwMiwgMHgzMiwgMHg1QiwgMHhDMSwgMHgyQywgMHgwMCwgMHhCMywgMHgwMSwgMHhDQywgMHgwNiwgMHgzMCwKKzB4NkEsIDB4QzAsIDB4NjAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUMsCisweDA4LCAweDQ3LCAweDAxLCAweDFCLCAweDAxLCAweDZDLCAweDE0LCAweEIwLCAweDUxLCAweDQwLCAweDQ3LCAweDAwLCAweDFELAorMHgwMiwgMHg0NSwgMHgwNCwgMHhEMSwgMHgxMCwgMHg0MCwgMHhDMCwgMHgwMCwgMHgxMSwgMHgwMSwgMHg0NSwgMHgxNCwgMHgxMCwKKzB4NzUsIDB4QzAsIDB4MDcsIDB4MTAsIDB4MTEsIDB4MDUsIDB4NTQsIDB4MDAsIDB4MTAsIDB4NjEsIDB4NDAsIDB4NzAsIDB4MjAsCisweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEEwLCAweDIzLCAweDAwLCAweDgxLAorMHgyMCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwOCwgMHg0MCwgMHgyMywgMHgwOCwgMHg4RCwgMHgwMiwgMHgxNCwgMHgxMiwgMHhEMCwKKzB4MjgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODUsIDB4MDIsIDB4MTQsIDB4NDYsIDB4MTAsIDB4MDgsIDB4NDksIDB4MjEsIDB4MDAsCisweDgxLCAweDEyLCAweDA0LCAweDBBLCAweDEwLCAweDI4LCAweDQwLCAweDQwLCAweDgwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhBOCwgMHgyMSwgMHgwMCwgMHg4OSwgMHgwMCwgMHgyNCwgMHg0MiwgMHg5MCwKKzB4MDksIDB4NDAsIDB4MjcsIDB4MDAsIDB4OUQsIDB4MDQsIDB4NDQsIDB4MTIsIDB4RDAsIDB4MTksIDB4NDAsIDB4QTQsIDB4MDAsCisweDk1LCAweDAwLCAweDQ0LCAweDAyLCAweDEwLCAweDA5LCAweDQwLCAweDI3LCAweDAwLCAweDkwLCAweDA0LCAweDU0LCAweDAyLAorMHgxMCwgMHgzOSwgMHg0MCwgMHg2MCwgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDUsIDB4QTgsIDB4MkYsIDB4MDIsIDB4QjMsIDB4MDAsIDB4Q0MsIDB4MEEsIDB4MzAsIDB4MEIsIDB4QzAsIDB4QTcsIDB4MDQsCisweDlGLCAweDAxLCAweDVDLCAweDAyLCAweEYwLCAweDI5LCAweEM4LCAweDI1LCAweDQwLCAweDk3LCAweDAwLCAweDVDLCAweDBBLAorMHgzNCwgMHgwOSwgMHhDOCwgMHgyNSwgMHg0MCwgMHg5MywgMHgwMCwgMHg0RCwgMHgwMiwgMHgzNCwgMHgyOSwgMHhEMCwgMHgxNCwKKzB4MjAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4NjUsIDB4MDAsCisweDlGLCAweDAzLCAweDdDLCAweDBBLCAweEUwLCAweDA5LCAweEMwLCAweEE3LCAweDAwLCAweDhGLCAweDAwLCAweDdDLCAweDAyLAorMHhGMCwgMHgwOCwgMHhDNCwgMHgyNywgMHgwMSwgMHg4QiwgMHg0NSwgMHg3QywgMHgwMiwgMHhGMCwgMHg5OCwgMHhFMCwgMHgyMSwKKzB4MDAsIDB4OUYsIDB4MDAsIDB4M0MsIDB4MDIsIDB4RjAsIDB4MDksIDB4QzAsIDB4NTMsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA1LCAweDAwLCAweDEzLCAweDAwLCAweDRELCAweDA4LAorMHhGMCwgMHgwMSwgMHhDMCwgMHgwNCwgMHgwMCwgMHgxMywgMHgxMCwgMHg2QywgMHgwMCwgMHhGMCwgMHgwMSwgMHhEMCwgMHgwNCwKKzB4NDAsIDB4MTMsIDB4MDAsIDB4NkMsIDB4MDAsIDB4MzAsIDB4MDEsIDB4QzAsIDB4MDQsIDB4MDQsIDB4MDMsIDB4ODAsIDB4N0MsCisweDAwLCAweDM0LCAweDIwLCAweEMwLCAweDUwLCAweDIwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxNCwgMHhBMCwgMHgxNCwgMHgxMCwgMHg1MSwgMHgwMCwgMHg0NCwgMHgwMSwgMHhEMCwgMHgwNSwgMHg0MCwgMHg1NCwKKzB4MDEsIDB4NzUsIDB4MDIsIDB4QzQsIDB4MDUsIDB4RDAsIDB4MDUsIDB4NTAsIDB4RDgsIDB4NDAsIDB4NzUsIDB4MDAsIDB4QzQsCisweDExLCAweDEwLCAweDQ3LCAweDUwLCAweDFDLCAweDAwLCAweDcxLCAweDAwLCAweDc0LCAweDAxLCAweDEwLCAweDE1LCAweDQwLAorMHg1MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHhBMCwgMHgzMiwKKzB4MDAsIDB4QzEsIDB4MDAsIDB4MDQsIDB4MDMsIDB4RDAsIDB4MEMsIDB4NDAsIDB4MjAsIDB4MDAsIDB4QzEsIDB4MEEsIDB4MjQsCisweDI2LCAweEQwLCAweDBDLCAweDQ0LCAweEYwLCAweDg2LCAweEM0LCAweDA5LCAweDY1LCAweDA3LCAweDUwLCAweDBDLCAweDAwLAorMHhGMCwgMHgwMCwgMHhDNSwgMHgyMCwgMHgzNCwgMHgwMiwgMHgxMCwgMHgxQywgMHg0MCwgMHg1MCwgMHgwMCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ODAsIDB4M0MsIDB4MDEsIDB4RjEsIDB4MDQsIDB4ODQsCisweEEzLCAweEQwLCAweDFGLCAweDQwLCAweDc4LCAweDAwLCAweDI1LCAweDAwLCAweDg0LCAweDAwLCAweEQwLCAweDRFLCAweDQwLAorMHgyOCwgMHgwMCwgMHg2NSwgMHgwMCwgMHg4NSwgMHgxMywgMHg1MCwgMHgwQSwgMHg0MCwgMHg5MCwgMHgwMCwgMHhBNSwgMHgwMCwKKzB4QjAsIDB4MDIsIDB4MTAsIDB4MEYsIDB4NDEsIDB4MTQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDE1LCAweDEwLCAweDc4LCAweDAwLCAweEUzLCAweDA3LCAweDhDLCAweDE3LCAweEYwLCAweDdFLCAweEQwLAorMHg2QywgMHgwMCwgMHhBMywgMHgwMSwgMHhBQywgMHgwNSwgMHhGMCwgMHgzRSwgMHhDMSwgMHg2OCwgMHgwMCwgMHg3NywgMHgwMSwKKzB4RUQsIDB4MEYsIDB4NzQsIDB4MTMsIDB4ODQsIDB4NDgsIDB4MDAsIDB4QTcsIDB4MDEsIDB4M0MsIDB4MDYsIDB4MzAsIDB4MUUsCisweEMwLCAweDU0LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEI4LAorMHgzMSwgMHg0MCwgMHhDRiwgMHgwMCwgMHg3QywgMHgwMywgMHhGMCwgMHgwRCwgMHhDMCwgMHgzRiwgMHgwMCwgMHg5RiwgMHgwMCwKKzB4RkQsIDB4MDAsIDB4RjAsIDB4MkQsIDB4QzAsIDB4MjcsIDB4MDIsIDB4NUQsIDB4MDAsIDB4N0MsIDB4MDMsIDB4OTAsIDB4MDEsCisweEMwLCAweDA3LCAweDQwLCAweDFCLCAweDAwLCAweDdDLCAweDAyLCAweEYwLCAweDBELCAweEQwLCAweDQzLCAweDYwLCAweDA2LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMCwgMHg3RiwgMHgwNCwgMHhGMywgMHgwMSwKKzB4Q0MsIDB4MjcsIDB4M0MsIDB4MUYsIDB4QzAsIDB4N0IsIDB4MDAsIDB4MzcsIDB4MDEsIDB4REMsIDB4MDYsIDB4NzIsIDB4MUYsCisweEMwLCAweDZELCAweDAwLCAweEY3LCAweDgxLCAweENDLCAweDA2LCAweDMxLCAweDFCLCAweEMwLCAweDRDLCAweDEwLCAweEUzLAorMHgwMSwgMHhDQywgMHgwNiwgMHhGMCwgMHgxRiwgMHhDMCwgMHgwMywgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ODgsIDB4MzksIDB4MDAsIDB4RTEsIDB4MDAsIDB4QUMsIDB4MjMsIDB4MTgsIDB4NEUsCisweDQwLCAweDNCLCAweDAwLCAweDIxLCAweDA0LCAweDg0LCAweDgwLCAweEQwLCAweDRFLCAweDQwLCAweDJDLCAweDAwLCAweDYxLAorMHgwMiwgMHg4QywgMHgwMiwgMHgxMCwgMHgwQSwgMHg0MCwgMHgwOSwgMHgwMCwgMHhBQiwgMHgwMCwgMHg5NCwgMHgwMiwgMHhEMCwKKzB4MEUsIDB4NDAsIDB4NTcsIDB4MjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisweDAwLCAweDc5LCAweDAwLCAweEUxLCAweDExLCAweDg0LCAweDA3LCAweDEyLCAweDFFLCAweDQwLCAweDNCLCAweDAwLCAweDA1LAorMHgwMCwgMHg5MCwgMHgwMCwgMHg1MCwgMHgwRSwgMHg0NCwgMHgwOSwgMHgwNCwgMHgzRCwgMHgxMCwgMHg4NCwgMHgwMywgMHgxMCwKKzB4MDIsIDB4NDEsIDB4MEEsIDB4MDAsIDB4QTEsIDB4MDAsIDB4ODQsIDB4MDIsIDB4RDAsIDB4MkUsIDB4NDAsIDB4MDMsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDI4LCAweDMzLCAweDQwLCAweEMxLAorMHgxMCwgMHgyNCwgMHgwMywgMHgxMSwgMHg4QywgMHg0MCwgMHgzMywgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwQywgMHhEMCwKKzB4OEMsIDB4NDAsIDB4ODAsIDB4MDEsIDB4MDksIDB4NDAsIDB4MjQsIDB4MEYsIDB4MTEsIDB4MTEsIDB4NDQsIDB4MDMsIDB4MDAsCisweDA5LCAweDAwLCAweDE0LCAweDAyLCAweEQwLCAweDBDLCAweDQwLCAweDEzLCAweDIwLCAweDBDLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRCwgMHhBOCwgMHgzNSwgMHgwMCwgMHhEMywgMHgwMCwgMHgwQywgMHgwMywgMHgzMCwKKzB4M0QsIDB4QzAsIDB4MzcsIDB4MDAsIDB4ODcsIDB4MDAsIDB4NUMsIDB4MUUsIDB4NzAsIDB4MUYsIDB4QzAsIDB4NEQsIDB4MDAsCisweDlGLCAweDAwLCAweENELCAweDEzLCAweDM0LCAweDA5LCAweEMwLCAweDA2LCAweDA4LCAweEQzLCAweDAwLCAweDRDLCAweDAzLAorMHhGMywgMHgwRCwgMHhDNCwgMHg1NywgMHgyMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4REYsIDB4MDAsIDB4N0MsIDB4MDMsIDB4RjAsIDB4MEQsIDB4QzEsIDB4MzcsIDB4MDAsCisweDFGLCAweDA4LCAweDdDLCAweDQwLCAweEYwLCAweDBELCAweEM0LCAweDgzLCAweDAwLCAweDQ3LCAweDAwLCAweDVDLCAweDAwLAorMHhGMCwgMHgwMSwgMHhDMCwgMHg4NSwgMHgxMCwgMHhDRiwgMHgwMCwgMHgzQywgMHgwMywgMHhGMCwgMHg4RCwgMHhDNCwgMHgwNywKKzB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4M0YsIDB4MDAsCisweEZGLCAweDAwLCAweENDLCAweDAzLCAweDMwLCAweDBGLCAweEMwLCAweDNGLCAweDAwLCAweEIzLCAweDQwLCAweEVDLCAweDAwLAorMHgzMCwgMHgwRCwgMHhDMCwgMHg0RCwgMHgwMCwgMHhCMywgMHgwMiwgMHhDQywgMHg0MywgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4QkYsIDB4MDEsIDB4Q0MsIDB4MTYsIDB4MzAsIDB4MEYsIDB4QzAsIDB4MDMsIDB4MjIsIDB4MEMsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgxLCAweDIwLCAweDM2LCAweDAwLCAweENELCAweDAwLCAweDQ0LCAweDAzLAorMHgxNCwgMHgwRCwgMHg0NCwgMHg3MywgMHgwMiwgMHg5MSwgMHgwMSwgMHgwNCwgMHgwNCwgMHgxNCwgMHgwRCwgMHg1MCwgMHgwNCwKKzB4ODYsIDB4NTEsIDB4MDIsIDB4NkMsIDB4M0MsIDB4NTAsIDB4MzEsIDB4NDAsIDB4QzUsIDB4MDEsIDB4MUQsIDB4MDEsIDB4NDQsCisweDAyLCAweEIwLCAweDA5LCAweDQwLCAweDA3LCAweDAyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMSwgMHhBMCwgMHgzNCwgMHgwMCwgMHhERCwgMHgwMCwgMHg0NCwgMHgwMywgMHgxMCwgMHgwRCwgMHg0MCwgMHgzNywKKzB4MDAsIDB4MTEsIDB4MDEsIDB4NjQsIDB4MDYsIDB4MTAsIDB4MEMsIDB4NEEsIDB4MDQsIDB4MDAsIDB4OTUsIDB4MDAsIDB4MDQsCisweDAyLCAweDUwLCAweDM5LCAweDQwLCAweDQ1LCAweDEwLCAweERELCAweDA0LCAweDQwLCAweDAzLCAweDExLCAweDFELCAweDQwLAorMHgwNywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHgzMCwKKzB4MDAsIDB4REQsIDB4MDAsIDB4NDUsIDB4MDMsIDB4MTAsIDB4MEMsIDB4NDAsIDB4MzcsIDB4NDAsIDB4MDEsIDB4MDAsIDB4NDQsCisweDAwLCAweDEwLCAweDBDLCAweDQwLCAweDAxLCAweDgwLCAweDQxLCAweDAwLCAweDI0LCAweDAwLCAweDQwLCAweDAwLCAweDQwLAorMHgwMSwgMHgwMCwgMHhDRCwgMHgwMCwgMHgwNSwgMHgwMywgMHg4MCwgMHgwQywgMHg0MCwgMHg0MywgMHg4MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QjAsIDB4M0EsIDB4MTAsIDB4RUYsIDB4MDAsIDB4OEMsCisweDAzLCAweDMwLCAweDBGLCAweDQwLCAweDM3LCAweDAwLCAweDEzLCAweDAwLCAweDZDLCAweDAwLCAweDM4LCAweDBGLCAweEQwLAorMHgwNCwgMHgwMCwgMHg5NSwgMHgwMCwgMHgwRCwgMHgwMywgMHg2MSwgMHgwMSwgMHg4MCwgMHgwNSwgMHgyMCwgMHg5RiwgMHgwMCwKKzB4NEQsIDB4MDIsIDB4MzAsIDB4MEQsIDB4QzAsIDB4MDMsIDB4QzAsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDA1LCAweEI4LCAweDNGLCAweDAwLCAweEZGLCAweDAwLCAweEZDLCAweDAzLCAweEYwLCAweDBGLCAweEMwLAorMHgzRiwgMHgyMCwgMHgzRiwgMHgwMCwgMHhGQywgMHgwMCwgMHhGMSwgMHgwRiwgMHhDMCwgMHgwRSwgMHgwMCwgMHgyRSwgMHgwMCwKKzB4RkMsIDB4MDAsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4MDAsIDB4M0YsIDB4MDAsIDB4RkMsIDB4MDIsIDB4RjEsIDB4MEYsCisweEMwLCAweDE3LCAweDYwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEExLAorMHg4MiwgMHhDMCwgMHgwRSwgMHgwMiwgMHgzQiwgMHgwOCwgMHhFMCwgMHgyOCwgMHhCMCwgMHg4MywgMHhFMCwgMHgwRSwgMHg4MiwKKzB4MzgsIDB4MDgsIDB4RUMsIDB4MjAsIDB4OTAsIDB4ODMsIDB4QzgsIDB4MEUsIDB4MDIsIDB4MUIsIDB4MDgsIDB4RUMsIDB4MjgsCisweEE4LCAweDgzLCAweEEwLCAweDBFLCAweDAyLCAweDNBLCAweDA4LCAweENDLCAweDIwLCAweDk4LCAweDAzLCAweDhDLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHgyMiwgMHhBMCwgMHg4RSwgMHhBMCwKKzB4M0EsIDB4MDIsIDB4RUEsIDB4MDgsIDB4QTAsIDB4MjMsIDB4MjAsIDB4OEUsIDB4QTAsIDB4M0IsIDB4MDIsIDB4RUEsIDB4MDgsCisweEE4LCAweDIzLCAweEEwLCAweDhFLCAweEEwLCAweDMyLCAweDAyLCAweDRBLCAweDA4LCAweEE4LCAweDIzLCAweDg4LCAweDhFLAorMHg4MCwgMHgzQSwgMHgwMiwgMHhDQSwgMHgwOCwgMHhBOCwgMHgwMywgMHg4QywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4NDAsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDQsIDB4NDgsIDB4MTgsCisweDIwLCAweDQxLCAweDgwLCAweDA0LCAweDAxLCAweDEyLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLCAweDQxLCAweDgwLCAweDA0LAorMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwgMHgxOCwgMHgyMCwgMHg0MSwgMHhBMCwgMHgwNCwgMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwKKzB4MTAsIDB4MjAsIDB4MDEsIDB4ODQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDIxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDFBLCAweDAwLCAweDY4LCAweDAwLCAweEEwLCAweDAxLCAweEEwLCAweDBFLAorMHgyMCwgMHgxQSwgMHgwMCwgMHg2OCwgMHgwMCwgMHhBMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwQSwgMHgwMCwgMHgyOCwKKzB4MTAsIDB4QTgsIDB4MDEsIDB4ODgsIDB4MDYsIDB4ODAsIDB4MUEsIDB4MDAsIDB4NjgsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MDQsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEzLCAweDEyLCAweEEwLCAweDRFLAorMHg4MCwgMHgzQSwgMHgwMSwgMHhFQSwgMHgxNCwgMHhBMCwgMHgxMywgMHhBMCwgMHg0QSwgMHg4MCwgMHgzQSwgMHgwMSwgMHhFQSwKKzB4MDQsIDB4QTgsIDB4MTMsIDB4QTAsIDB4NEUsIDB4ODIsIDB4M0EsIDB4MDEsIDB4RUEsIDB4MDQsIDB4QTAsIDB4MTMsIDB4ODAsCisweDRBLCAweDgwLCAweDNBLCAweDAxLCAweEVBLCAweDBDLCAweEE4LCAweDAzLCAweDhDLCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHgwMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOCwgMHgwMCwgMHg2MCwKKzB4MDAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsCisweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDYwLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLAorMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHg4QywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4QTMsIDB4MjAsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MTAsIDB4MDEsIDB4NDIsIDB4MDAsIDB4MDgsIDB4MTEsIDB4MjAsCisweDA0LCAweDgwLCAweDEwLCAweDAxLCAweDQyLCAweDA0LCAweDA4LCAweDExLCAweDIwLCAweEMwLCAweDgwLCAweDEwLCAweDAxLAorMHg0MiwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwMCwgMHgwNCwgMHg4MCwgMHgxMCwgMHgwMSwgMHg0MiwgMHgwNCwgMHgwOCwgMHgwMSwKKzB4OEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4RDIsIDB4QTAsCisweDAyLCAweDAxLCAweDBBLCAweDA1LCAweDJBLCAweDEwLCAweEE4LCAweDUwLCAweDgwLCAweDAyLCAweDAxLCAweDBBLCAweDA3LAorMHgyQSwgMHgxQywgMHhBOCwgMHg1MCwgMHhBMCwgMHg0MiwgMHg4MywgMHgwQSwgMHgwNSwgMHgyQSwgMHgxMCwgMHhBMCwgMHg1MCwKKzB4ODgsIDB4MDIsIDB4MDEsIDB4MEEsIDB4MDUsIDB4MkEsIDB4M0MsIDB4QTAsIDB4MDAsIDB4OEMsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIxLCAweDMwLCAweDgwLCAweEM4LCAweDAwLCAweEFBLCAweDAzLAorMHhBOCwgMHgwRSwgMHgyMCwgMHgzOCwgMHg4MCwgMHhFMCwgMHgwMCwgMHhBQSwgMHgwNywgMHgwOCwgMHgxRSwgMHhBMCwgMHgzMiwKKzB4ODAsIDB4Q0EsIDB4MDAsIDB4MjIsIDB4MDMsIDB4QTgsIDB4MEMsIDB4QTAsIDB4M0EsIDB4QTAsIDB4Q0EsIDB4MDAsIDB4MkEsCisweDAzLCAweEE4LCAweDBDLCAweDIwLCAweDAyLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgyMSwgMHg3MiwgMHgwMCwgMHg0OCwgMHgyMCwgMHgxOCwgMHg4MCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDgsIDB4NDAsIDB4MjAsIDB4MDgsIDB4MDIsIDB4MDAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MjAsCisweDAwLCAweDIwLCAweDA0LCAweDgwLCAweDAwLCAweDA4LCAweDQyLCAweDAwLCAweDE4LCAweDAwLCAweDIwLCAweDA4LCAweDAwLAorMHg4MiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHgxNiwKKzB4NDAsIDB4MTgsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MUEsIDB4MDQsIDB4NDAsIDB4MTAsIDB4MjAsIDB4NDEsCisweDgwLCAweDA0LCAweDAxLCAweDEwLCAweDA0LCAweDQwLCAweDEwLCAweDAwLCAweDYxLCAweDAwLCAweDA0LCAweDAxLCAweDEwLAorMHgwNCwgMHgwOCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxMCwgMHg4MiwgMHg4QywgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTMsIDB4MDIsIDB4QTAsIDB4MDYsIDB4ODAsIDB4OUEsCisweDAwLCAweDZBLCAweDAyLCAweDI4LCAweDA5LCAweEEwLCAweDI0LCAweDAwLCAweDlCLCAweDAwLCAweDQ4LCAweDAyLCAweEE4LAorMHgwMSwgMHhBMCwgMHgwNiwgMHgwMCwgMHgxQSwgMHgwMCwgMHg2QSwgMHgwMCwgMHhCOCwgMHgwOSwgMHhBMCwgMHgwNiwgMHhBMCwKKzB4MUIsIDB4MDAsIDB4NkEsIDB4MDAsIDB4QTgsIDB4MDEsIDB4OEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEEzLCAweDAwLCAweEMwLCAweDQ2LCAweDAwLCAweDFBLCAweDAwLCAweDZDLCAweDAwLCAweEJDLAorMHgwMSwgMHg5MCwgMHg0NiwgMHgwMCwgMHgxQiwgMHgwMCwgMHg2QywgMHgwMCwgMHhBOCwgMHgwMSwgMHhDMCwgMHgwNiwgMHgyMCwKKzB4MUIsIDB4ODAsIDB4NkMsIDB4MDQsIDB4QTAsIDB4MDEsIDB4RTgsIDB4NDYsIDB4MDAsIDB4MUEsIDB4MDAsIDB4NkMsIDB4MDAsCisweDMyLCAweDAxLCAweDhDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLAorMHg0MiwgMHgyMCwgMHgwQywgMHg4MSwgMHgzMCwgMHgwNCwgMHhDMiwgMHgxMCwgMHgwOCwgMHg0MywgMHgyMCwgMHgwOCwgMHg4MSwKKzB4MzAsIDB4MDQsIDB4QzIsIDB4MTAsIDB4MTgsIDB4NDMsIDB4MjgsIDB4MEMsIDB4MDEsIDB4MzAsIDB4MDQsIDB4QzIsIDB4MzAsCisweDA4LCAweDQzLCAweDIwLCAweDBDLCAweDgxLCAweDMwLCAweDA0LCAweEMyLCAweDEwLCAweDA4LCAweDAzLCAweDhDLCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMiwgMHgwMCwgMHgwQywgMHgwMCwKKzB4MzAsIDB4MDAsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MzAsIDB4MDAsIDB4ODAsIDB4MDAsCisweDAwLCAweDAzLCAweDAwLCAweDBDLCAweDAwLCAweDMwLCAweDAwLCAweEMwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDA4LAorMHgwMCwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDAsIDB4ODAsIDB4MEMsIDB4ODMsIDB4MzIsIDB4MDQsIDB4QzgsIDB4MzQsCisweDI4LCAweDQzLCAweDgwLCAweDBDLCAweDgzLCAweDMyLCAweDA0LCAweEM4LCAweDEwLCAweDIwLCAweDQzLCAweDgwLCAweDBDLAorMHgwMSwgMHgzMiwgMHgwNCwgMHhDOCwgMHgxMCwgMHgyOCwgMHg0MywgMHg4MCwgMHgwQywgMHg4MywgMHgzMiwgMHgwNCwgMHhDOCwKKzB4MTAsIDB4MjAsIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEEzLCAweDQyLCAweEEwLCAweDA2LCAweDgzLCAweDFBLCAweDA0LCAweDZBLCAweDMwLCAweEE4LCAweDQxLCAweEEwLCAweDA2LAorMHg4MywgMHgxQSwgMHgwNCwgMHg2QSwgMHgxMCwgMHhBOCwgMHg0MSwgMHhBMCwgMHgwNiwgMHg4MSwgMHgxQSwgMHgwNCwgMHg2QSwKKzB4MzAsIDB4QTgsIDB4NDEsIDB4ODAsIDB4MEUsIDB4ODMsIDB4MEEsIDB4MDQsIDB4NkEsIDB4MTAsIDB4QTgsIDB4MDEsIDB4OEMsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEzLCAweDQyLCAweDAwLCAweDA0LAorMHgwMSwgMHgzMCwgMHgwNCwgMHg0MCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwQywgMHgwMSwgMHgzMCwgMHgwNCwgMHhDMCwKKzB4MTAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NDMsIDB4MDAsCisweDAwLCAweDAxLCAweDMwLCAweDA0LCAweDQwLCAweDEwLCAweDAwLCAweDAxLCAweDhDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHg0QSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgzMCwgMHgwNCwgMHg2MiwKKzB4MTIsIDB4MDgsIDB4NEIsIDB4MjAsIDB4MDYsIDB4ODEsIDB4QjAsIDB4MDQsIDB4NjIsIDB4MTIsIDB4ODgsIDB4NDEsIDB4MjAsCisweDI2LCAweDgxLCAweDE4LCAweDA0LCAweDYyLCAweDEwLCAweDA4LCAweDQzLCAweDAwLCAweDA2LCAweDgxLCAweDMwLCAweDA0LAorMHg2MiwgMHgxMiwgMHg4OCwgMHgwMSwgMHg4QywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MjMsIDB4MDYsIDB4QTAsIDB4MUEsIDB4MDAsIDB4NjIsIDB4MDAsIDB4QUEsIDB4MDEsIDB4MjAsIDB4MDQsIDB4QTAsCisweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDhBLCAweDAxLCAweEEwLCAweDA2LCAweEEwLCAweDFBLCAweDgwLCAweDZBLCAweDgwLAorMHhBQSwgMHgwMSwgMHgyMCwgMHgwNiwgMHg4MCwgMHgxOCwgMHgwMCwgMHg2MiwgMHgwMCwgMHhBQSwgMHgwMSwgMHhBOCwgMHgwMiwKKzB4OEMsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4NjAsIDB4ODAsCisweDgyLCAweDAxLCAweDJBLCAweDA2LCAweDI4LCAweDE4LCAweEEwLCAweDYwLCAweDgwLCAweDgyLCAweDAxLCAweDBBLCAweDA2LAorMHgyOCwgMHgxOCwgMHhBMCwgMHg2MCwgMHgwMCwgMHg4MiwgMHgwMSwgMHgwQSwgMHgwNiwgMHgyOCwgMHgxOCwgMHhBMCwgMHg2MCwKKzB4QTAsIDB4ODIsIDB4MDEsIDB4MEEsIDB4MDYsIDB4MjgsIDB4MTgsIDB4QTAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQ4LCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LAorMHg0OCwgMHgxMiwgMHgyMCwgMHg0OSwgMHhBMCwgMHgwMCwgMHgwMSwgMHg5MiwgMHgwNCwgMHg0OCwgMHgxMiwgMHgyOCwgMHg0MSwKKzB4ODAsIDB4MjAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODgsIDB4MDAsIDB4MDEsIDB4MDIsCisweDA0LCAweDA4LCAweDEyLCAweDIwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMywgMHg2MiwgMHhDMCwgMHg4QSwgMHgwMSwgMHgwMSwgMHgwNiwgMHhBQywgMHgxOCwgMHhCMCwgMHg2MywKKzB4QzAsIDB4OEEsIDB4MDEsIDB4MkIsIDB4MDYsIDB4OEMsIDB4MTgsIDB4QjAsIDB4NjIsIDB4QzAsIDB4OEEsIDB4MDEsIDB4MkEsCisweDA2LCAweEFDLCAweDE4LCAweEIwLCAweDYyLCAweEMwLCAweDhBLCAweDAxLCAweDJCLCAweDA2LCAweDhDLCAweDE4LCAweEIwLAorMHgwMiwgMHg4QywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHg2MiwKKzB4QTAsIDB4OEUsIDB4MDEsIDB4M0IsIDB4MDYsIDB4RUEsIDB4MTgsIDB4QTgsIDB4NjMsIDB4QTAsIDB4OEUsIDB4ODEsIDB4M0EsCisweDA2LCAweDY4LCAweDE4LCAweDg4LCAweDYzLCAweEEwLCAweDhFLCAweDgxLCAweDNBLCAweDA2LCAweEVBLCAweDE4LCAweDk4LAorMHg2MywgMHgyMCwgMHg4RSwgMHg4MSwgMHgzQiwgMHgwNiwgMHhDQSwgMHgxOCwgMHg4OCwgMHgwMywgMHg4QywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTIsIDB4NjIsIDB4ODAsIDB4OEUsIDB4MDEsIDB4M0EsCisweDA2LCAweEVDLCAweDE4LCAweEEwLCAweDYxLCAweEMwLCAweDhFLCAweDAxLCAweDNBLCAweDA2LCAweEU4LCAweDE4LCAweEEwLAorMHg2MywgMHhFMCwgMHg4RSwgMHgwMSwgMHgxQiwgMHgwNiwgMHhFMCwgMHgxOCwgMHhBMCwgMHg2MywgMHhDMCwgMHg4RSwgMHgwMSwKKzB4M0EsIDB4MDYsIDB4RUUsIDB4MTgsIDB4QjAsIDB4MDMsIDB4ODgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDYyLCAweEEwLCAweDhFLCAweDgxLCAweDMyLCAweDA2LCAweEVBLCAweDE4LCAweDA4LAorMHg2MywgMHhBMCwgMHg4RSwgMHhBMSwgMHgzOCwgMHg4NiwgMHhFQSwgMHgxOCwgMHgyOCwgMHg2MSwgMHgyMCwgMHg4RSwgMHg4MSwKKzB4MzIsIDB4ODYsIDB4RTgsIDB4MTgsIDB4QTgsIDB4NjMsIDB4QTAsIDB4OEUsIDB4QTEsIDB4MzAsIDB4MDYsIDB4RUEsIDB4MTgsCisweEE4LCAweDAzLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHg0MCwgMHg4MCwgMHgwNCwgMHgwMSwgMHgxQSwgMHg4NCwgMHg0OCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwgMHgwNCwgMHgwMSwKKzB4MzIsIDB4MDQsIDB4NDgsIDB4MTAsIDB4MjIsIDB4NDEsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDQsIDB4NDgsIDB4MTAsCisweDIwLCAweDQxLCAweDg4LCAweDA0LCAweDAxLCAweDNBLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLCAweDAxLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg4MCwgMHg4NiwgMHg4MSwKKzB4MUEsIDB4MDYsIDB4NjgsIDB4MTgsIDB4QTAsIDB4NjEsIDB4ODAsIDB4ODYsIDB4ODEsIDB4MTgsIDB4MDYsIDB4NjgsIDB4MTgsCisweEEwLCAweDYxLCAweDgwLCAweDg0LCAweDAxLCAweDFBLCAweDA2LCAweDY4LCAweDE4LCAweEE4LCAweDYxLCAweDgwLCAweDg2LAorMHg4MSwgMHgxQSwgMHgwNiwgMHg2QSwgMHgxOCwgMHhBMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTIsIDB4MDIsIDB4QTAsIDB4MEUsIDB4ODAsIDB4M0EsIDB4MDAsIDB4Q0EsIDB4MDAsCisweDIyLCAweDAzLCAweEEwLCAweDBDLCAweDgwLCAweDMyLCAweDAwLCAweENBLCAweDAwLCAweDI4LCAweDAzLCAweDgwLCAweDBFLAorMHg4MCwgMHgyQSwgMHgwMCwgMHhFQSwgMHgwMCwgMHhBOCwgMHgwMywgMHhBMCwgMHgwRSwgMHg4MCwgMHgzQSwgMHgwMCwgMHhFOCwKKzB4MDAsIDB4QTgsIDB4MDMsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweEEyLCAweDQyLCAweDAwLCAweDA2LCAweDAxLCAweDA4LCAweDA0LCAweDQwLCAweDEwLCAweDA4LCAweDQxLCAweDAwLCAweDA0LAorMHgwMSwgMHgwMCwgMHgwQywgMHg0MCwgMHgxMCwgMHg4MCwgMHg0MSwgMHgwMCwgMHgwNiwgMHgwMSwgMHgxOCwgMHgwNCwgMHg2MCwKKzB4MTAsIDB4ODAsIDB4NDEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTgsIDB4MDQsIDB4NjAsIDB4MTAsIDB4ODAsIDB4MDEsIDB4ODgsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDQyLCAweDIwLCAweDA0LAorMHg4MSwgMHgxMCwgMHgwNCwgMHgyMiwgMHgxMCwgMHg4OCwgMHg1MSwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxOCwgMHgwNSwgMHg2MiwKKzB4MTAsIDB4MDgsIDB4NDEsIDB4MDAsIDB4MDQsIDB4ODEsIDB4MTAsIDB4MDQsIDB4NDIsIDB4MTAsIDB4MEEsIDB4NDEsIDB4MjAsCisweDA2LCAweDgxLCAweDEwLCAweDA0LCAweDQwLCAweDEwLCAweDA4LCAweDAxLCAweDg4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMiwgMHg0MiwgMHhBMCwgMHgwMiwgMHgwMSwgMHgwQSwgMHgwQywgMHhBQSwKKzB4MzAsIDB4QTgsIDB4QzIsIDB4QTAsIDB4MEEsIDB4MDMsIDB4MkEsIDB4MDQsIDB4QUEsIDB4MzAsIDB4QTgsIDB4NDIsIDB4QTAsCisweDAyLCAweDgxLCAweDBBLCAweDA0LCAweDJBLCAweDEwLCAweEEwLCAweEMwLCAweEEwLCAweDAyLCAweDIxLCAweDBBLCAweDA0LAorMHgyOCwgMHgxMCwgMHhBOCwgMHgwMCwgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4MEEsIDB4MDMsIDB4MkEsIDB4MEMsIDB4QTgsIDB4MTAsIDB4QTAsIDB4NTIsIDB4ODAsCisweDBBLCAweDAzLCAweDJBLCAweDA1LCAweEE4LCAweDMwLCAweEEwLCAweEMyLCAweDgwLCAweDBBLCAweDAxLCAweDJBLCAweDBDLAorMHhBOCwgMHgzMCwgMHhBMCwgMHhDMiwgMHg4MCwgMHgwQSwgMHgwMywgMHgyQSwgMHgwQywgMHhBOCwgMHgxMCwgMHhBMCwgMHgwMiwKKzB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsCisweDQyLCAweDAwLCAweDA4LCAweDAwLCAweDIwLCAweDAwLCAweDg4LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDgwLAorMHgyMCwgMHgwMCwgMHg4OCwgMHgxMCwgMHgwMCwgMHg0MiwgMHgyMCwgMHgwOCwgMHgwMSwgMHgyMCwgMHgwNCwgMHg4MiwgMHgwMCwKKzB4MDAsIDB4NDIsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDQyLCAweDQwLCAweDAwLCAweDAxLCAweDAxLCAweDA0LAorMHgwNCwgMHgxMCwgMHgxMCwgMHg0MSwgMHg0MCwgMHg0NCwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwNCwgMHgxNCwgMHgxMCwgMHg0MCwKKzB4NDAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MTAsIDB4NTAsIDB4NDAsIDB4MDAsIDB4MDEsIDB4MDEsCisweDA0LCAweDA0LCAweDEwLCAweDEwLCAweDAwLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhBMiwgMHgwMiwgMHhFMCwgMHgwNiwgMHg4MCwgMHgxQiwgMHgwMCwgMHg2OCwgMHgwMCwgMHhBOCwgMHgwMSwKKzB4QTAsIDB4MDYsIDB4ODAsIDB4MUIsIDB4MDAsIDB4NkUsIDB4MDAsIDB4QTgsIDB4MDEsIDB4ODAsIDB4MDYsIDB4ODAsIDB4MUEsCisweDAwLCAweDZFLCAweDAwLCAweEI4LCAweDAxLCAweEEwLCAweDA2LCAweDgwLCAweDFCLCAweDAwLCAweDZBLCAweDAwLCAweEE4LAorMHgwMSwgMHg4OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhBMywgMHgwMiwKKzB4QzAsIDB4MDYsIDB4MDAsIDB4M0IsIDB4MDAsIDB4NkMsIDB4MDAsIDB4QTAsIDB4MDEsIDB4QzAsIDB4MDYsIDB4MDAsIDB4M0EsCisweDAwLCAweDY4LCAweDAwLCAweEIwLCAweDAxLCAweEMwLCAweDA2LCAweDAwLCAweDFBLCAweDAwLCAweDZDLCAweDAwLCAweEEwLAorMHgwMywgMHhDMCwgMHgwNiwgMHgwMCwgMHgzQSwgMHgwMCwgMHg0QywgMHgwMCwgMHhCMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MEMsIDB4ODAsIDB4MTgsCisweDAwLCAweEMyLCAweDAwLCAweDA4LCAweDAxLCAweDI4LCAweDBDLCAweDgwLCAweDE4LCAweDgwLCAweEMwLCAweDAwLCAweDA4LAorMHgwMywgMHgyMCwgMHgwQywgMHg4MiwgMHgzOCwgMHgwMCwgMHhDMiwgMHgwMCwgMHg4OCwgMHgwMSwgMHgyMCwgMHgwQywgMHg4MCwKKzB4MTgsIDB4MDAsIDB4QzIsIDB4MDAsIDB4MDgsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJDLCAweDAwLCAweDEwLCAweDAwLCAweEMwLCAweDAyLCAweDAwLAorMHg2MywgMHgwMCwgMHgyQywgMHgwMCwgMHgxMCwgMHgwMCwgMHhDMiwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwQywgMHgwMCwKKzB4MTAsIDB4MDAsIDB4QzAsIDB4MDIsIDB4MDAsIDB4MjEsIDB4MDAsIDB4MkMsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsCisweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgyMCwgMHg4MCwgMHg4QywgMHg4MiwgMHgzMiwgMHgwQSwgMHhDOCwgMHgwOCwgMHgyMCwgMHgyMSwgMHg4MCwgMHg4QywgMHg4MiwKKzB4MzIsIDB4MDIsIDB4ODgsIDB4MjgsIDB4MjAsIDB4QTMsIDB4ODAsIDB4OEMsIDB4MDIsIDB4MjIsIDB4MEEsIDB4QzgsIDB4MjgsCisweDI4LCAweEEzLCAweDgwLCAweDhDLCAweDgyLCAweDMyLCAweDBBLCAweEM4LCAweDA4LCAweDIwLCAweDAzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDNCwgMHhBMCwgMHgxNiwgMHg4MywKKzB4NUEsIDB4MEMsIDB4NkEsIDB4MzEsIDB4QTAsIDB4QzQsIDB4QTAsIDB4MTYsIDB4ODMsIDB4NUEsIDB4MEMsIDB4NkEsIDB4MzEsCisweEE4LCAweEM1LCAweEEwLCAweDE2LCAweDgzLCAweDRBLCAweDBDLCAweDZBLCAweDMxLCAweEE4LCAweEU1LCAweEEwLCAweDE2LAorMHg4MywgMHg1QSwgMHgwQywgMHg2QSwgMHgzMSwgMHhBOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDIsCisweDA4LCAweDIxLCAweDAwLCAweDY0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDA0LCAweDAwLCAweDAxLCAweDAwLCAweDA0LAorMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHg5MSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDEwLCAweDIyLCAweDQ2LCAweDg4LCAweDE4LCAweDIxLCAweDYyLCAweDgwLCAweDhBLCAweDAxLCAweDI2LCAweDA2LAorMHg4OCwgMHgxOCwgMHgyMCwgMHg2MiwgMHg4MCwgMHg4OCwgMHgxMSwgMHgyMiwgMHg0NiwgMHg4OCwgMHgxOCwgMHgyMSwgMHg2MiwKKzB4ODQsIDB4ODgsIDB4MDEsIDB4MjIsIDB4NDYsIDB4ODgsIDB4MTgsIDB4MjEsIDB4NjIsIDB4ODQsIDB4ODgsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDBBLAorMHgwOCwgMHgyQSwgMHgyMCwgMHhBQSwgMHg4MCwgMHg4OCwgMHgwMiwgMHhBMiwgMHgwQSwgMHgwOCwgMHgyQSwgMHgyMCwgMHhBQSwKKzB4MDAsIDB4QUEsIDB4MDIsIDB4QTIsIDB4MEEsIDB4ODgsIDB4MjgsIDB4MjAsIDB4QUEsIDB4ODAsIDB4QTAsIDB4MDIsIDB4QTYsCisweDBBLCAweDA4LCAweDJBLCAweDIwLCAweEFBLCAweDgwLCAweEE4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NCwgMHg0MiwgMHgxMCwgMHgwQSwgMHg0MSwgMHgyOCwKKzB4NDQsIDB4QTEsIDB4MTAsIDB4OEMsIDB4NEEsIDB4MTAsIDB4MkEsIDB4NDEsIDB4MjgsIDB4MDQsIDB4QTEsIDB4MTAsIDB4MDQsCisweDQyLCAweDEwLCAweDBBLCAweDQxLCAweDI4LCAweDg0LCAweDgxLCAweDEwLCAweDg0LCAweDRBLCAweDEwLCAweDBBLCAweDQxLAorMHgyMCwgMHgwNCwgMHhBMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4NTAsIDB4ODAsIDB4NDAsIDB4MDEsIDB4MDIsIDB4MDUsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NTAsIDB4ODAsCisweDQwLCAweDAxLCAweDAyLCAweDA1LCAweDAwLCAweDE0LCAweDAwLCAweDUwLCAweDgwLCAweDQwLCAweDAxLCAweDAyLCAweDA1LAorMHgwOCwgMHgxNCwgMHgyMCwgMHg1MCwgMHg4MCwgMHg0MCwgMHgwMSwgMHgwMiwgMHgwNSwgMHgwOCwgMHgxNCwgMHgyMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4QzAsCisweENBLCAweDIwLCAweDJCLCAweDAzLCAweDhDLCAweDBDLCAweDMwLCAweDMyLCAweDQwLCAweEMwLCAweDAwLCAweDAxLCAweDAzLAorMHg4OCwgMHgwQywgMHgzMCwgMHgzMiwgMHhDMCwgMHhDQSwgMHgwMCwgMHgyQiwgMHgwMywgMHhBQywgMHgwQywgMHhCMCwgMHgzMiwKKzB4NDAsIDB4QzAsIDB4MDAsIDB4MkIsIDB4MDMsIDB4QUMsIDB4MEMsIDB4QjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweEE0LCAweDRFLCAweDgwLCAweDNBLCAweDAxLAorMHhFQSwgMHgwNCwgMHhCOCwgMHgxMywgMHhBMCwgMHg0RSwgMHg4MCwgMHgzQiwgMHg0MSwgMHhFQSwgMHgwNCwgMHhBOCwgMHgxMywKKzB4QTAsIDB4NEUsIDB4ODQsIDB4M0IsIDB4MDEsIDB4RUEsIDB4MDQsIDB4QjgsIDB4MTMsIDB4QTAsIDB4NEUsIDB4ODAsIDB4M0IsCisweDAxLCAweEUyLCAweDQ0LCAweEE4LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhDNCwgMHgxMCwgMHgxMiwgMHgyMywgMHgwOCwgMHg4QywgMHgyMSwgMHgzMCwgMHg4MCwgMHhDMCwKKzB4MTAsIDB4MDIsIDB4MjMsIDB4MDgsIDB4MEMsIDB4MjEsIDB4MzAsIDB4ODQsIDB4QzQsIDB4MTgsIDB4MTIsIDB4NDMsIDB4NDgsCisweDhDLCAweDIxLCAweDMxLCAweDgyLCAweEMwLCAweDE4LCAweDEyLCAweEEzLCAweDQ4LCAweDhDLCAweDIxLCAweDMxLCAweDg0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywKKzB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsIDB4RkYsIDB4QkYsIDB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsCisweEZGLCAweDJGLCAweEZGLCAweEJGLCAweEZDLCAweEZGLCAweEYyLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEZGLCAweEJGLAorMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEI0LCAweERGLCAweEQwLCAweDZDLCAweDQzLCAweEIzLCAweDBELCAweENELCAweEJFLAorMHg3QywgMHhEQiwgMHhEMCwgMHg2QywgMHg0MywgMHhGQiwgMHgwRCwgMHhFRCwgMHgzNywgMHgzNCwgMHhEQiwgMHhEMCwgMHg3RSwKKzB4NDMsIDB4QjMsIDB4MEQsIDB4Q0QsIDB4QkUsIDB4N0MsIDB4REIsIDB4RDAsIDB4NkMsIDB4NDMsIDB4QjMsIDB4MEQsIDB4RUQsCisweDM3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhDQywgMHgzRiwgMHgzMiwgMHhGMywgMHhDOCwgMHhDQywgMHgyMywgMHgzMywgMHhCRiwgMHhGQywgMHgzQywgMHgzMiwgMHhGMywKKzB4QzgsIDB4RkMsIDB4MjMsIDB4RjMsIDB4OEYsIDB4Q0MsIDB4M0MsIDB4MzIsIDB4RkYsIDB4QzgsIDB4Q0MsIDB4MjMsIDB4MzMsCisweEJGLCAweEZDLCAweDNDLCAweDMyLCAweEYzLCAweEM4LCAweENDLCAweDIzLCAweEYzLCAweDhGLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhEQywgMHg3OCwgMHg3MiwgMHg3QiwKKzB4NDgsIDB4RUMsIDB4MjcsIDB4MzEsIDB4ODYsIDB4QzQsIDB4NzgsIDB4MTIsIDB4N0IsIDB4NDgsIDB4OEMsIDB4MjcsIDB4QjEsCisweDlGLCAweERDLCAweDdFLCAweDcyLCAweEUzLCAweEM5LCAweEVELCAweDI3LCAweEI3LCAweDg3LCAweEM0LCAweDdFLCAweDcyLAorMHg3QiwgMHhDOCwgMHhFRCwgMHgyNywgMHgzNywgMHg5RSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OEUsIDB4MDIsIDB4MzksIDB4MDgsIDB4RTQsIDB4MjAsCisweDgwLCAweDgzLCAweDQwLCAweDBFLCAweDAyLCAweDM5LCAweDA4LCAweEU0LCAweDIwLCAweDkwLCAweDgzLCAweDQwLCAweDBFLAorMHgwMiwgMHgzOSwgMHgwOCwgMHhFMCwgMHgyMCwgMHg5MCwgMHg4MywgMHg0MCwgMHg4RSwgMHgwMiwgMHgzOSwgMHgwQSwgMHhFMCwKKzB4MjgsIDB4ODAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDIwLCAweEEwLCAweDhFLCAweDgxLCAweDNBLCAweDAyLCAweEVBLCAweDA4LCAweEE4LCAweDIzLCAweEEwLCAweDhFLAorMHg4MCwgMHgzQSwgMHgwMiwgMHhFQSwgMHgwOCwgMHhBOCwgMHgyMywgMHhBMCwgMHg4RSwgMHg4MCwgMHgzQSwgMHgwMiwgMHhFQSwKKzB4MDgsIDB4QUEsIDB4MjMsIDB4QTAsIDB4OEUsIDB4ODEsIDB4M0EsIDB4MDYsIDB4RUEsIDB4MTgsIDB4QjgsIDB4MDMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgwLCAweDA0LAorMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwgMHgwNCwgMHgwMSwgMHgxMiwgMHgwNCwgMHg0OCwKKzB4MTAsIDB4MjAsIDB4NDEsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDQsIDB4NDgsIDB4MTAsIDB4MjAsIDB4NDEsIDB4ODAsCisweDg0LCAweDAxLCAweDEyLCAweDA2LCAweDQ4LCAweDE4LCAweDIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NiwgMHgwMCwgMHgxOCwgMHgwMCwgMHg2MCwKKzB4MDAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NjAsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MjAsCisweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLAorMHg2MiwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4NEUsIDB4ODAsIDB4MzgsIDB4MDEsIDB4RTIsIDB4MDQsIDB4ODgsIDB4OTMsIDB4MjAsCisweDRFLCAweDgwLCAweDM4LCAweDAxLCAweEUyLCAweDA0LCAweDg4LCAweDEzLCAweDIwLCAweDRBLCAweDgwLCAweDM4LCAweDAxLAorMHhFMiwgMHgwNCwgMHg4OCwgMHgxMywgMHgyMCwgMHg0RSwgMHg4MCwgMHgzOCwgMHgwMSwgMHhFMiwgMHgwNCwgMHg4OCwgMHgwMywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDA2LCAweDAwLCAweDE4LCAweDAwLCAweDYwLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDE4LCAweDAwLAorMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgxOCwgMHgwMCwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMSwKKzB4MDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDgsIDB4NjAsIDB4MjgsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDIwLCAweDY0LCAweDgwLCAweDEwLCAweDAxLAorMHg0MiwgMHgwQSwgMHgwOCwgMHgzMSwgMHgyMCwgMHg0NCwgMHg4MCwgMHgxMCwgMHgwMSwgMHg0MiwgMHgwQywgMHgwOCwgMHgwOSwKKzB4MjAsIDB4NDQsIDB4ODAsIDB4OTAsIDB4MDAsIDB4NDIsIDB4MDQsIDB4MDgsIDB4MTEsIDB4MjAsIDB4NjQsIDB4ODAsIDB4OTAsCisweDAwLCAweDQyLCAweDAyLCAweDA4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhENCwgMHgyMCwgMHg1MiwgMHg4MSwgMHg0OCwgMHgwNSwgMHgyMiwgMHgxMSwgMHg4MCwgMHg1NCwKKzB4MjAsIDB4NTIsIDB4ODEsIDB4NDgsIDB4MDUsIDB4MjIsIDB4MTUsIDB4ODgsIDB4NDQsIDB4MDAsIDB4NTIsIDB4ODEsIDB4NDgsCisweDA0LCAweDIwLCAweDE1LCAweDg4LCAweDU0LCAweDIwLCAweDUyLCAweDgxLCAweDQ4LCAweDBDLCAweDIwLCAweDExLCAweDgwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMywgMHgzMCwKKzB4MDAsIDB4QzgsIDB4MDAsIDB4MjgsIDB4MDMsIDB4QTAsIDB4M0MsIDB4MjAsIDB4MzAsIDB4MDAsIDB4Q0EsIDB4MDAsIDB4MDAsCisweDAzLCAweEEwLCAweDBDLCAweDgwLCAweDMyLCAweDAwLCAweENBLCAweDAwLCAweDI4LCAweDAzLCAweEEwLCAweDBDLCAweDgwLAorMHgzMiwgMHgwMCwgMHhDQSwgMHgwMCwgMHgyOCwgMHgwMywgMHhBMCwgMHgwNCwgMHgwMCwgMHgwMiwgMHgwOCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDgsCisweDAwLCAweDIwLCAweDBFLCAweDgwLCAweDIwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDE4LCAweDgwLAorMHgxOCwgMHgwMCwgMHgwMiwgMHgwMCwgMHg4OCwgMHgwMSwgMHg2MCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwKKzB4ODgsIDB4MDEsIDB4MjAsIDB4MEEsIDB4MDgsIDB4MDIsIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDAzLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDIwLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsCisweDEwLCAweDAyLCAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAzLAorMHgwMiwgMHgyMCwgMHgwNiwgMHg4MCwgMHgxOCwgMHgwMCwgMHg2MiwgMHgwMCwgMHg5OCwgMHgwMSwgMHgyMCwgMHgwNiwgMHg4MCwKKzB4MTAsIDB4MDAsIDB4NjIsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MjAsIDB4MDYsIDB4ODAsIDB4MTgsIDB4MDAsIDB4NjYsIDB4MDAsCisweDg4LCAweDAxLCAweDIwLCAweDA2LCAweDgwLCAweDE4LCAweDAwLCAweDY2LCAweDAwLCAweDg4LCAweDAxLCAweDBDLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgwNiwgMHgwMCwKKzB4MTksIDB4MDAsIDB4NjQsIDB4MDQsIDB4ODAsIDB4MDEsIDB4NDAsIDB4MDYsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NjQsIDB4MDAsCisweDkwLCAweDExLCAweDAwLCAweDA2LCAweDAwLCAweDE5LCAweDAxLCAweDYwLCAweDAwLCAweDkwLCAweDAxLCAweDQwLCAweDA2LAorMHgwMCwgMHgxOSwgMHgwMSwgMHg2MiwgMHgwMCwgMHg4MCwgMHg0MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTIsIDB4NDIsIDB4MjAsIDB4MEMsIDB4ODEsIDB4MzAsIDB4MDQsIDB4QzIsIDB4MTAsCisweDA4LCAweDQzLCAweDIwLCAweDBDLCAweDgxLCAweDMwLCAweDA0LCAweEMyLCAweDEwLCAweDA4LCAweDQzLCAweDI4LCAweDBDLAorMHg4MSwgMHgzMCwgMHgwNCwgMHhDMiwgMHgxMCwgMHgwOCwgMHg0MywgMHgyMCwgMHgwQywgMHg4MSwgMHgzMCwgMHgwNCwgMHhDMiwKKzB4MTAsIDB4MTgsIDB4MDMsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDMwLCAweDAwLCAweEMwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDBDLAorMHgwMCwgMHgzMCwgMHgwMCwgMHhDMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwQywgMHgwMCwgMHgzMCwgMHgwMCwgMHhDMCwKKzB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MzAsIDB4MDAsIDB4QzAsIDB4MDQsIDB4MDAsIDB4MDMsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLCAweDAwLCAweDBDLAorMHgwMSwgMHgzMCwgMHgwNCwgMHhDMCwgMHgzMCwgMHgwOCwgMHg0MywgMHgwMCwgMHgwQywgMHgwMSwgMHgzMCwgMHgwNCwgMHhDMCwKKzB4MTAsIDB4MDAsIDB4QzMsIDB4MjAsIDB4MEMsIDB4MDEsIDB4MzAsIDB4MEMsIDB4QzIsIDB4MTAsIDB4MDAsIDB4NDMsIDB4MDAsCisweDBDLCAweDAxLCAweDMwLCAweDBDLCAweEMyLCAweDM0LCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMiwgMHg0MiwgMHgyMCwgMHgwNiwgMHg4MSwgMHgxOCwgMHgwNCwgMHg2MiwKKzB4MzAsIDB4ODgsIDB4NDEsIDB4MjAsIDB4MDYsIDB4ODEsIDB4MTgsIDB4MDQsIDB4NjIsIDB4MTAsIDB4ODgsIDB4QzEsIDB4MjAsCisweDA2LCAweDgxLCAweDE4LCAweDBDLCAweDYyLCAweDEwLCAweDg4LCAweDQxLCAweDIwLCAweDA2LCAweDgxLCAweDE4LCAweDBDLAorMHg2MCwgMHgxMCwgMHg4OCwgMHgwMywgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4ODAsIDB4NDIsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MTAsIDB4MDQsIDB4NDAsIDB4MTAsIDB4MDAsIDB4NDMsIDB4MDAsCisweDA0LCAweDAxLCAweDEwLCAweDA0LCAweDQwLCAweDEwLCAweDAwLCAweDQxLCAweDAwLCAweDBDLCAweDAxLCAweDEwLCAweDA0LAorMHhDMCwgMHgxMCwgMHgwMCwgMHg0MSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxMCwgMHgwNCwgMHhDMCwgMHgxMCwgMHg4MCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEEsIDB4ODAsIDB4NDIsIDB4MjAsCisweDA2LCAweDgxLCAweDE4LCAweDA0LCAweDYyLCAweDEwLCAweDA4LCAweDQzLCAweDIwLCAweDA2LCAweDgxLCAweDE4LCAweDA0LAorMHg2MiwgMHgxMCwgMHg4OCwgMHg0MSwgMHgyMCwgMHgwQywgMHg4MSwgMHgxOCwgMHgwNCwgMHhDMiwgMHgxMCwgMHg4OCwgMHg0MSwKKzB4MjAsIDB4MDYsIDB4ODEsIDB4MTgsIDB4MDQsIDB4QzAsIDB4MzAsIDB4MDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEyLCAweDAyLCAweDIwLCAweDBBLCAweDgwLCAweDI4LCAweDAwLAorMHhBMiwgMHgwMCwgMHgwMCwgMHgwMiwgMHgyMCwgMHgwQSwgMHg4MCwgMHgyOCwgMHgwMCwgMHhBMiwgMHgwMCwgMHg4OCwgMHgwMiwKKzB4MDAsIDB4MDgsIDB4ODAsIDB4MjgsIDB4MDAsIDB4ODAsIDB4MDAsIDB4ODgsIDB4MDIsIDB4MjAsIDB4MEEsIDB4ODAsIDB4MjgsCisweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDQyLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMiwgMHgwMCwgMHg2MCwgMHgwMCwgMHg4MiwgMHgwMSwgMHgwOCwgMHgwNiwgMHgyMCwgMHgxOCwgMHg4MCwgMHg2MCwKKzB4MDAsIDB4ODIsIDB4MDEsIDB4MDgsIDB4MDYsIDB4MjAsIDB4MTgsIDB4ODAsIDB4NjAsIDB4MDAsIDB4ODIsIDB4MDEsIDB4MDgsCisweDA2LCAweDIwLCAweDE4LCAweDgwLCAweDYwLCAweDAwLCAweDgyLCAweDAxLCAweDA4LCAweDA2LCAweDIwLCAweDE4LCAweDgwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHg0MCwKKzB4ODAsIDB4MDAsIDB4MDEsIDB4MTIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4ODEsIDB4MDIsCisweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDQ4LCAweDEwLCAweDIwLAorMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTIsIDB4NjIsIDB4QzAsIDB4OEEsIDB4MDEsIDB4MkIsCisweDA2LCAweEFDLCAweDE4LCAweEIwLCAweDYyLCAweEMwLCAweDhBLCAweDAxLCAweDJCLCAweDA2LCAweEFDLCAweDE4LCAweEIwLAorMHg2MiwgMHhDMCwgMHg4QSwgMHgwMSwgMHgyQiwgMHgwNiwgMHhBQywgMHgxOCwgMHhCMCwgMHg2MiwgMHhDMCwgMHg4QSwgMHgwMSwKKzB4MkIsIDB4MDYsIDB4QUMsIDB4MTgsIDB4QjAsIDB4MDIsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDYyLCAweDIwLCAweDhFLCAweDgxLCAweDM4LCAweDA2LCAweEUyLCAweDE4LCAweDk4LAorMHg2MywgMHgyMCwgMHg4RSwgMHg4MSwgMHgzOCwgMHgwNiwgMHhFMiwgMHgxOCwgMHg4OCwgMHg2MywgMHg0MCwgMHg4RSwgMHg4MSwKKzB4MzgsIDB4MDYsIDB4RTYsIDB4MTgsIDB4ODgsIDB4NjMsIDB4MjAsIDB4OEUsIDB4ODEsIDB4MzgsIDB4ODYsIDB4RTYsIDB4MTgsCisweDg4LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDgwLAorMHg2MiwgMHg0MCwgMHg4RSwgMHgwMSwgMHgzOSwgMHgwNiwgMHhFMCwgMHgxOCwgMHhBMCwgMHg2MywgMHg0MCwgMHg4RSwgMHgwMSwKKzB4MzksIDB4MDYsIDB4RTQsIDB4MTgsIDB4OTAsIDB4NjMsIDB4MDAsIDB4OEUsIDB4MDEsIDB4MzksIDB4MDYsIDB4RTAsIDB4MTgsCisweDkwLCAweDYzLCAweDQwLCAweDhFLCAweDAxLCAweDM5LCAweDA2LCAweEUwLCAweDE4LCAweDgwLCAweDAzLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQSwgMHhBMiwgMHg2MiwgMHhBMCwgMHg4RSwgMHg4MSwKKzB4M0EsIDB4MDYsIDB4RTgsIDB4MTgsIDB4ODgsIDB4NjMsIDB4QTAsIDB4OEUsIDB4QTEsIDB4M0EsIDB4MDYsIDB4RUEsIDB4MTgsCisweEE4LCAweDYzLCAweDIwLCAweDhDLCAweDgxLCAweDNBLCAweDA2LCAweEMyLCAweDE4LCAweEE4LCAweDYzLCAweEEwLCAweDhFLAorMHg4MSwgMHgzQSwgMHgwNiwgMHhDMiwgMHgxOCwgMHgxOCwgMHg0MywgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDgsIDB4ODAsIDB4MDQsIDB4MDEsIDB4MTIsIDB4MDQsIDB4NDgsIDB4MTIsCisweDIwLCAweDRCLCAweDgwLCAweDI0LCAweDAxLCAweDEyLCAweDA0LCAweDQ4LCAweDEyLCAweDIwLCAweDQxLCAweDgwLCAweDBFLAorMHgwMSwgMHgxMiwgMHgwNCwgMHhFOCwgMHgxMCwgMHgyMCwgMHg0MSwgMHg4MCwgMHgwNCwgMHgwMSwgMHgxMiwgMHgwNCwgMHhFOCwKKzB4MTIsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweDAwLCAweDYwLCAweDAwLCAweDg2LCAweDAxLCAweDE4LCAweDA2LCAweDYwLCAweDE4LCAweDg4LCAweDYxLCAweDAwLCAweDg2LAorMHgwMSwgMHgxOCwgMHgwNiwgMHg2MCwgMHgxOCwgMHg4MCwgMHg2MSwgMHgyMCwgMHg4NiwgMHgwMSwgMHgxOCwgMHgwNiwgMHg2MiwKKzB4MTgsIDB4ODAsIDB4NjEsIDB4MDAsIDB4ODYsIDB4MDEsIDB4MTgsIDB4MDYsIDB4NjIsIDB4MTgsIDB4MDAsIDB4MDEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEEyLCAweDA2LCAweDIwLCAweDFFLAorMHg4MCwgMHg3MCwgMHgwMCwgMHhFMiwgMHgwMSwgMHgwOCwgMHgwNywgMHgyMCwgMHgxRSwgMHg4MCwgMHg3MCwgMHgwMCwgMHhFMiwKKzB4MDEsIDB4ODgsIDB4MDcsIDB4MjAsIDB4MUUsIDB4ODAsIDB4NzgsIDB4MDAsIDB4QzIsIDB4MDEsIDB4ODgsIDB4MDcsIDB4MjAsCisweDFFLCAweDgwLCAweDc4LCAweDAwLCAweEMyLCAweDAxLCAweDg4LCAweDAzLCAweDg4LCAweDBBLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHg0QSwgMHgwMCwgMHgwNiwgMHgwMSwgMHgxMCwgMHgwNCwgMHg2MCwKKzB4MTIsIDB4MDAsIDB4NDksIDB4MDAsIDB4MjYsIDB4MDEsIDB4MTAsIDB4MDQsIDB4NjAsIDB4MTIsIDB4ODAsIDB4NDEsIDB4MDAsCisweDA2LCAweDAxLCAweDE4LCAweDA0LCAweDQwLCAweDEwLCAweDgwLCAweDQxLCAweDAwLCAweDA2LCAweDAxLCAweDE4LCAweDA0LAorMHg0MCwgMHgxMiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4ODAsIDB4NDIsIDB4MjAsIDB4MDQsIDB4ODEsIDB4MTgsIDB4MDQsIDB4NDIsIDB4MTAsIDB4ODgsIDB4NDEsIDB4MjAsCisweDQ0LCAweDgxLCAweDE4LCAweDA0LCAweDQyLCAweDEwLCAweDA4LCAweDQxLCAweDIwLCAweDA0LCAweDgxLCAweDEwLCAweDA0LAorMHg2MiwgMHgxMCwgMHgwOCwgMHg0MSwgMHgyMCwgMHgwNCwgMHg4MSwgMHgxMCwgMHgwNCwgMHg2MiwgMHgxMCwgMHgwOCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4QTIsIDB4NDIsIDB4MjAsCisweDAyLCAweDgzLCAweDI4LCAweDA0LCAweDIyLCAweDMwLCAweDgwLCAweDQyLCAweDIwLCAweDAyLCAweDgzLCAweDI4LCAweDA0LAorMHgyMiwgMHgxMCwgMHg4OCwgMHg0MCwgMHgwMCwgMHgwMiwgMHg4MSwgMHgwOCwgMHgwQywgMHhBMCwgMHgxMCwgMHg4OCwgMHg0MCwKKzB4MjAsIDB4MDIsIDB4ODEsIDB4MDgsIDB4MEMsIDB4QTAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLCAweDAwLCAweDBBLCAweDAzLCAweDI4LCAweDBDLAorMHhBMCwgMHgzMCwgMHg4MCwgMHhDMiwgMHgwMCwgMHg0QSwgMHgwMSwgMHgyOCwgMHgwQywgMHhBMCwgMHgzMCwgMHg4MCwgMHhDMiwKKzB4MDAsIDB4MEEsIDB4MDMsIDB4MjgsIDB4MEMsIDB4QTAsIDB4MzAsIDB4ODAsIDB4QzIsIDB4MDAsIDB4MEEsIDB4MDMsIDB4MjgsCisweDBDLCAweEEwLCAweDEwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwOCwgMHgwMSwgMHgyMCwgMHgwMCwgMHg4MCwgMHgxMCwKKzB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MjAsIDB4MDQsIDB4ODAsIDB4MTAsIDB4MDAsIDB4NDIsIDB4MDAsIDB4MDgsCisweDAwLCAweDIwLCAweDA0LCAweDgwLCAweDEwLCAweDAwLCAweDQyLCAweDAwLCAweDA4LCAweDAwLCAweDIwLCAweDA0LCAweDg4LAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhBMiwgMHg0MiwKKzB4NDAsIDB4NDAsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MTQsIDB4MTAsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MDEsIDB4MDEsCisweDA0LCAweDA0LCAweDEwLCAweDEwLCAweDQwLCAweDQwLCAweDAwLCAweDAxLCAweDAxLCAweDA1LCAweDA0LCAweDEwLCAweDEwLAorMHg0MCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwNCwgMHgxMCwgMHgxMCwgMHgwMCwgMHg4OCwgMHgwQSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4MjAsIDB4MDYsIDB4ODAsIDB4MTgsCisweDAwLCAweDY2LCAweDAwLCAweDk4LCAweDAxLCAweDIwLCAweDA2LCAweDgwLCAweDE4LCAweDAwLCAweDYyLCAweDAwLCAweDg4LAorMHgwMSwgMHg2MCwgMHgwNiwgMHg4MCwgMHgxOCwgMHgwMCwgMHg2NiwgMHgwMCwgMHg4OCwgMHgwMSwgMHgyMCwgMHgwNiwgMHg4MCwKKzB4MTgsIDB4MDAsIDB4NjYsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDI2LCAweDAwLCAweDk5LCAweDAwLCAweDY0LCAweDAyLCAweDgwLAorMHgwQiwgMHg0MCwgMHgyNiwgMHgwMCwgMHg5OSwgMHgwMCwgMHg2NCwgMHgwMCwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwRSwgMHgwMCwKKzB4OTgsIDB4MDAsIDB4RTAsIDB4MDAsIDB4OTAsIDB4MDEsIDB4NDAsIDB4MDYsIDB4ODAsIDB4OTksIDB4MDAsIDB4RTAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweEEyLAorMHgwNiwgMHgyMCwgMHgxQywgMHg4MCwgMHg3MCwgMHgwMCwgMHhDMiwgMHgwMSwgMHg4OCwgMHgwNSwgMHgyMCwgMHgxQywgMHg4MiwKKzB4NzAsIDB4MDAsIDB4QzIsIDB4MDEsIDB4MDgsIDB4MDcsIDB4MjAsIDB4MTYsIDB4MDAsIDB4NzAsIDB4MDAsIDB4NjIsIDB4MDEsCisweDA4LCAweDA3LCAweDI4LCAweDFDLCAweDAwLCAweDcwLCAweDAwLCAweDYyLCAweDAxLCAweDE4LCAweDAxLCAweDg4LCAweDBBLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwQywgMHgwMiwKKzB4MzAsIDB4MEUsIDB4QzAsIDB4MjAsIDB4MDAsIDB4RTEsIDB4MDAsIDB4MEMsIDB4MDIsIDB4MzAsIDB4MEEsIDB4QzAsIDB4MjAsCisweDAwLCAweDgzLCAweDAwLCAweDA0LCAweDAyLCAweDMwLCAweDA4LCAweDQwLCAweDIwLCAweDAwLCAweDgzLCAweDAwLCAweDBDLAorMHgwMiwgMHgzMCwgMHgwQSwgMHg0MCwgMHgyMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MjAsIDB4MDAsIDB4QUMsIDB4MDIsIDB4QjAsIDB4MEEsIDB4QzAsIDB4MkEsCisweDA4LCAweEFCLCAweDAwLCAweEFDLCAweDAyLCAweEIwLCAweDBBLCAweEMwLCAweDI4LCAweDAwLCAweEEzLCAweDIwLCAweDhDLAorMHgwMiwgMHhCMCwgMHgwQSwgMHhDMiwgMHgyOCwgMHgwMCwgMHhBMywgMHgwMCwgMHg4QywgMHg4MiwgMHhCMCwgMHgxRSwgMHhDMiwKKzB4MDgsIDB4MDAsIDB4NDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisweEEyLCAweEMyLCAweDIwLCAweDA2LCAweDgzLCAweDE4LCAweDBFLCAweDYyLCAweDMwLCAweDg4LCAweEUxLCAweDIwLCAweDA2LAorMHg4MywgMHgxOCwgMHgwRSwgMHg2MiwgMHgzMCwgMHg4OCwgMHhDMSwgMHgyMCwgMHgwNiwgMHg4MywgMHgxOCwgMHgwQywgMHg2MiwKKzB4MzAsIDB4ODgsIDB4QzEsIDB4MjAsIDB4MDYsIDB4MDMsIDB4MTgsIDB4MUUsIDB4NjIsIDB4MzAsIDB4ODgsIDB4MDEsIDB4ODgsCisweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDgwLCAweDAyLCAweDAwLCAweDQ0LAorMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwNCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDA0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHgxMiwgMHgyMiwgMHgwNiwgMHg4OCwgMHgxOCwgMHgwMSwgMHg2MiwKKzB4ODAsIDB4ODgsIDB4MTEsIDB4MjAsIDB4MDYsIDB4ODgsIDB4MTgsIDB4MDEsIDB4NjIsIDB4ODQsIDB4ODgsIDB4MTEsIDB4MjIsCisweDQ2LCAweDg4LCAweDE4LCAweDIwLCAweDYyLCAweDg0LCAweDg4LCAweDExLCAweDIyLCAweDQ2LCAweDA4LCAweDE4LCAweDQwLAorMHg2MiwgMHg4NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4QTIsIDB4MDIsIDB4MjIsIDB4MEEsIDB4ODgsIDB4MjgsIDB4MjAsIDB4QTIsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MjAsCisweDBBLCAweDg4LCAweDI4LCAweDIwLCAweEEyLCAweDAwLCAweDg4LCAweDAyLCAweDAyLCAweDBBLCAweDg4LCAweDI4LCAweDIwLAorMHhBMCwgMHg4MCwgMHg4OCwgMHgwMiwgMHgyMiwgMHgwQSwgMHgwOCwgMHgyOCwgMHgyMCwgMHhBMCwgMHg0MCwgMHg4MCwgMHgwMiwKKzB4ODgsIDB4MEEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MTAsIDB4MDQsCisweDQyLCAweDAwLCAweDI4LCAweDQxLCAweDIwLCAweDA0LCAweDgxLCAweDEyLCAweDA0LCAweDQyLCAweDEwLCAweDBBLCAweDQxLAorMHgyMCwgMHgwNCwgMHg4MSwgMHgxMCwgMHgwNCwgMHg0MiwgMHgxMCwgMHgwOCwgMHg0MSwgMHhBMCwgMHgwNCwgMHg4MSwgMHgxMCwKKzB4MDQsIDB4NDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4QTAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDgwLCAweDQwLCAweDAxLCAweDAwLCAweDA1LAorMHgwOCwgMHgxNCwgMHgwMCwgMHg1MCwgMHg4MCwgMHg0MCwgMHgwMSwgMHgwMCwgMHgwNSwgMHgwOCwgMHgxNCwgMHgyMCwgMHg1MCwKKzB4ODAsIDB4NDAsIDB4MDEsIDB4MDIsIDB4MDUsIDB4MDAsIDB4MTQsIDB4MjAsIDB4NTAsIDB4ODAsIDB4NDAsIDB4MDEsIDB4MDIsCisweDZELCAweDAwLCAweDk0LCAweDI4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMiwgMHhBMiwgMHhCMiwgMHhDMCwgMHhDQSwgMHgwMiwgMHgyMSwgMHgwQiwgMHhBQywgMHgyQywgMHgxMCwgMHhCMiwKKzB4QzAsIDB4Q0EsIDB4MDIsIDB4MjMsIDB4MEIsIDB4QUMsIDB4MkMsIDB4QjAsIDB4QjIsIDB4QzAsIDB4Q0EsIDB4MDIsIDB4MkEsCisweDBCLCAweDg0LCAweDJDLCAweEIwLCAweEIyLCAweEMwLCAweENBLCAweDAyLCAweDJBLCAweDJCLCAweDg0LCAweDZDLCAweEIwLAorMHgwMiwgMHg4OCwgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHgxMiwKKzB4MjAsIDB4NEUsIDB4ODAsIDB4MzgsIDB4MDEsIDB4RTIsIDB4MDQsIDB4OTgsIDB4MTMsIDB4MjAsIDB4NEUsIDB4ODAsIDB4MzgsCisweDAxLCAweEUyLCAweDA0LCAweDgwLCAweDEzLCAweDYwLCAweDRFLCAweDgwLCAweDM5LCAweDAxLCAweEU2LCAweDA0LCAweDg4LAorMHgxMywgMHgyMCwgMHg0RSwgMHg4MCwgMHgzOCwgMHgwOSwgMHhFNiwgMHgwMCwgMHg4OSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzQsIDB4MTAsIDB4MDIsIDB4MjMsIDB4MDgsCisweDhDLCAweDIxLCAweDMwLCAweDgwLCAweEMwLCAweDEwLCAweDAyLCAweDQzLCAweDA4LCAweDhDLCAweDIxLCAweDMxLCAweDg0LAorMHhDNCwgMHgwOCwgMHgxMiwgMHg2MywgMHgwOCwgMHg4QywgMHgyMCwgMHgzMSwgMHg4NiwgMHhDNCwgMHgxOCwgMHgxMiwgMHgyMywKKzB4MDgsIDB4OEMsIDB4MjAsIDB4MzEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEYyLCAweEZGLCAweENCLCAweEZGLCAweDJGLCAweEZGLCAweEJGLAorMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwgMHhDQiwgMHhGRiwgMHgyRiwgMHhGRiwgMHhCRiwgMHhGQywgMHhGRiwgMHhGMiwgMHhGRiwKKzB4Q0IsIDB4RkYsIDB4MkYsIDB4RkYsIDB4QkYsIDB4RkMsIDB4RkYsIDB4RjIsIDB4RkYsIDB4Q0IsIDB4RkYsIDB4MkYsIDB4RkYsCisweEJGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNCwgMHhEQiwgMHhEMCwgMHhFQywKKzB4Q0IsIDB4QjcsIDB4MEQsIDB4RUQsIDB4MzcsIDB4RkMsIDB4REYsIDB4RDAsIDB4NkMsIDB4QzMsIDB4QjcsIDB4MEQsIDB4RUQsCisweDM3LCAweDM0LCAweERCLCAweEQwLCAweDZDLCAweDQzLCAweEIzLCAweDBELCAweENELCAweDM2LCAweDM0LCAweERCLCAweEQwLAorMHhFQywgMHhDQiwgMHhCNywgMHgyRiwgMHhFRCwgMHhCRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Q0MsIDB4M0MsIDB4MzIsIDB4RjMsIDB4Q0IsIDB4Q0YsIDB4MjMsIDB4RjMsCisweDhGLCAweEZDLCAweDNGLCAweDMyLCAweEYzLCAweEM4LCAweENGLCAweDIzLCAweEYzLCAweDhGLCAweENDLCAweDNDLCAweDMyLAorMHhGMywgMHhDOCwgMHhDQywgMHgyMywgMHgzMywgMHg4RiwgMHhDQywgMHgzQywgMHgzMiwgMHhGMywgMHhDQiwgMHhDRiwgMHgyRiwKKzB4RjMsIDB4QkYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweERDLCAweDc4LCAweDEyLCAweEZCLCAweEM5LCAweEVELCAweDI3LCAweEIxLCAweDg3LCAweERDLCAweDdFLCAweDEyLAorMHhFMywgMHhDOSwgMHhFRCwgMHgyNywgMHhCNywgMHg5RiwgMHhEQywgMHgxRSwgMHg3MiwgMHhGQiwgMHg0OSwgMHhFQywgMHgyMSwKKzB4QjcsIDB4OUYsIDB4REMsIDB4N0UsIDB4NzIsIDB4RkIsIDB4NDksIDB4RUMsIDB4MjEsIDB4MzcsIDB4ODYsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIxLCAweDAwLAorMHg4NSwgMHgzMywgMHgxNCwgMHgwMiwgMHg1MCwgMHgwOCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwgMHgwMCwgMHgxNCwgMHhDRSwKKzB4NTAsIDB4MzAsIDB4NDMsIDB4MjEsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MTQsIDB4MDIsIDB4NTAsIDB4MzgsIDB4NDMsIDB4RTEsCisweDBDLCAweDg1LCAweDAwLCAweDE0LCAweENFLCAweDUwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwKKzB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsCisweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAyLCAweDA0LCAweDA4LCAweDAwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAwLAorMHgwMiwgMHgwMCwgMHgxOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MTAsIDB4MjEsIDB4NDAsIDB4ODQsIDB4MDAsIDB4MTEsIDB4MDIsIDB4NDQsIDB4MDgsIDB4MTAsIDB4MjEsCisweDQwLCAweDg0LCAweDAwLCAweDExLCAweDAyLCAweDQ0LCAweDA4LCAweDEwLCAweDIxLCAweDQwLCAweDg0LCAweDAwLCAweDExLAorMHgwMiwgMHg0NCwgMHgwOCwgMHgxMCwgMHgyMSwgMHg0MCwgMHg4NCwgMHgwMCwgMHgxMSwgMHgwMiwgMHg0NCwgMHgxOCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisweDAwLCAweDgwLCAweDMzLCAweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLAorMHhDRSwgMHgwMCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgzOCwgMHgwMywKKzB4RTAsIDB4NEMsIDB4ODAsIDB4MDAsIDB4MDEsIDB4Q0UsIDB4MDAsIDB4MzgsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLAorMHhDQywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgzMywgMHgxMCwgMHgwMCwgMHg0MCwgMHgzMCwgMHgwMywKKzB4MDEsIDB4MDAsIDB4MDQsIDB4MzMsIDB4MTAsIDB4Q0MsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsCisweDEwLCAweENDLCAweDQwLCAweDMwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxMCwKKzB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsCisweDAxLCAweENDLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDMzLCAweDAxLCAweDAwLCAweDA0LCAweDMwLAorMHgxMywgMHgwMCwgMHg0MCwgMHgwMCwgMHgzMywgMHgwMSwgMHhDQywgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4Q0MsIDB4MDQsIDB4MzAsIDB4NDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDUwLCAweDIxLCAweDQwLCAweDg1LCAweDAwLCAweDE1LCAweDAyLCAweDU0LCAweDM4LAorMHg1MywgMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwKKzB4MzMsIDB4MTUsIDB4MDIsIDB4NTQsIDB4MDgsIDB4NTAsIDB4MjEsIDB4NDAsIDB4ODUsIDB4MDAsIDB4MTUsIDB4MDAsIDB4NTQsCisweDA4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLAorMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwKKzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsCisweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDg2LCAweDA0LCAweDA4LCAweDQwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwKKzB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsCisweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLAorMHg4NCwgMHgwMCwgMHgxMCwgMHg4NiwgMHg0MCwgMHgwOCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4RTAsIDB4MEMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4Q0UsIDB4MDAsCisweDA4LCAweDAwLCAweEUwLCAweDBDLCAweDgwLCAweDMzLCAweDAwLCAweENFLCAweDAwLCAweDM4LCAweDAzLCAweEUwLCAweDBDLAorMHg4MCwgMHgwMCwgMHgwMCwgMHhDRSwgMHgwMCwgMHgwOCwgMHgwMCwgMHhFMCwgMHgwQywgMHg4MCwgMHgzMywgMHgwMCwgMHhDRSwKKzB4MDAsIDB4MDgsIDB4NDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLAorMHg4NCwgMHgzMywgMHgxMCwgMHgwMiwgMHg0MCwgMHgzOCwgMHgwMywgMHgyMSwgMHgwMCwgMHg4NCwgMHgzMywgMHgxMCwgMHhDRSwKKzB4NDAsIDB4MzgsIDB4MDMsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4NDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLAorMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MTAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MDQsIDB4MDIsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwKKzB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDEsCisweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDMzLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDMzLCAweDAwLAorMHhDQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNDLCAweDNDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweEYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMSwgMHgwMCwgMHg4NSwgMHgwMCwgMHgxNCwgMHgwMiwKKzB4NTAsIDB4MDgsIDB4NDAsIDB4MjEsIDB4MDAsIDB4ODUsIDB4MDAsIDB4MTQsIDB4MDIsIDB4NTAsIDB4MDgsIDB4NDAsIDB4MjEsCisweDAwLCAweDg1LCAweDAwLCAweDE0LCAweDAyLCAweDUwLCAweDA4LCAweDQwLCAweDIxLCAweDAwLCAweDg1LCAweDAwLCAweDE0LAorMHgwMiwgMHg1MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsCisweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAxLAorMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjEsCisweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDEwLCAweDIxLCAweDQwLCAweDg0LCAweDAwLCAweDExLAorMHgwMiwgMHg0NCwgMHgwOCwgMHgxMCwgMHgyMSwgMHg0MCwgMHg4NCwgMHgwMCwgMHgxMSwgMHgwMiwgMHg0NCwgMHgwOCwgMHgxMCwKKzB4MjEsIDB4NDAsIDB4ODQsIDB4MDAsIDB4MTEsIDB4MDIsIDB4NDQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLAorMHgwMiwgMHgwMCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgwMCwKKzB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsCisweDAwLCAweDAyLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwKKzB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsCisweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MDQsIDB4MDAsCisweDExLCAweDAwLCAweDQ0LCAweDAwLCAweDEwLCAweDAxLCAweDQwLCAweDA0LCAweDAwLCAweDExLCAweDAwLCAweDQ0LCAweDAwLAorMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MCwgMHgwNCwKKzB4MDAsIDB4MTEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLAorMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwKKzB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsCisweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLAorMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwgMHgwMCwgMHgxNSwgMHgwMiwgMHg1NCwgMHgwOCwgMHg1MCwgMHgyMSwgMHg0MCwgMHg4NSwKKzB4MDAsIDB4MTUsIDB4MDIsIDB4NTQsIDB4MDgsIDB4NTAsIDB4MjEsIDB4NDAsIDB4ODUsIDB4MzMsIDB4MTUsIDB4MDIsIDB4NTQsCisweDA4LCAweDUwLCAweDIxLCAweDQwLCAweDg1LCAweDAwLCAweDE1LCAweDAyLCAweDU0LCAweDA4LCAweDQwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwKKzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsCisweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLAorMHg4MCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsCisweDA4LCAweDAwLCAweDIxLCAweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDAwLCAweDIxLCAweDAwLAorMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwKKzB4NDAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisweDA4LCAweDAwLCAweEUwLCAweDBDLCAweDgwLCAweDMzLCAweDAwLCAweDAyLCAweDAwLCAweDM4LCAweDAzLCAweDIwLCAweDAwLAorMHg4MCwgMHgzMywgMHgwMCwgMHhDRSwgMHgwMCwgMHgzOCwgMHgwMywgMHhFMCwgMHgwQywgMHg4MCwgMHgzMywgMHgwMCwgMHhDRSwKKzB4MDAsIDB4MzgsIDB4MDMsIDB4RTAsIDB4MEMsIDB4ODAsIDB4MzMsIDB4MDAsIDB4Q0UsIDB4MDAsIDB4MzgsIDB4NDMsIDB4MjAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDIxLCAweDAwLAorMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwgMHg0MCwgMHgwOCwgMHgwMCwgMHgyMSwgMHgwMCwgMHg4NCwgMHgwMCwgMHgxMCwgMHgwMiwKKzB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsIDB4MDAsIDB4ODQsIDB4MDAsIDB4MTAsIDB4MDIsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MjEsCisweDAwLCAweDg0LCAweDAwLCAweDEwLCAweDAyLCAweDQwLCAweDA4LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwKKzB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsCisweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LAorMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDEsCisweDAwLCAweDA0LCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDEwLAorMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDEsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgzQywgMHgzQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhGMCwgMHhGMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwKKzB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLAorMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4RkYsCisweEZGLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDQsIDB4ODAsCisweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweEMyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLCAweDA0LCAweDgwLCAweDQwLAorMHg0MCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHhDMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBDLCAweDAwLAorMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHhBNCwgMHgwNywgMHgwQywgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4QzAsIDB4MEMsIDB4MDAsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDBDLCAweDAwLCAweDAxLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweEEwLCAweDBDLCAweDAwLCAweDA1LCAweDgwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4NywgMHg1QSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI5OTNkMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL0tjb25maWcKQEAgLTAsMCArMSwxNCBAQAorY29uZmlnIFNMSUNPU1MKKwl0cmlzdGF0ZSAiQWxhY3JpdGVjaCBHaWdhYml0IElTLU5JQyBzdXBwb3J0IgorCWRlcGVuZHMgb24gUENJICYmIFg4NiAmJiBORVRERVZfMTAwMAorCWRlZmF1bHQgbgorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEFsYWNyaXRlY2gncyBJUy1OSUMgZ2lnYWJpdCBldGhlcm5ldCBjYXJkcy4KKworCSAgVGhpcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGRldmljZXM6CisJICAgIE1vamF2ZSBjYXJkcyAoc2luZ2xlIHBvcnQgUENJIEdpZ2FiaXQpIGJvdGggY29wcGVyIGFuZCBmaWJlcgorCSAgICBPYXNpcyBjYXJkcyAoc2luZ2xlIGFuZCBkdWFsIHBvcnQgUENJLXggR2lnYWJpdCkgY29wcGVyIGFuZCBmaWJlcgorCSAgICBLYWxhaGFyaSBjYXJkcyAoZHVhbCBhbmQgcXVhZCBwb3J0IFBDSS1lIEdpZ2FiaXQpIGNvcHBlciBhbmQgZmliZXIKKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgc2xpY29zcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JjOWU5YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai0kKENPTkZJR19TTElDT1NTKSArPSBzbGljb3NzLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDViMTEyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvUkVBRE1FCkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgZHJpdmVyIGlzIHN1cHBvc2VkIHRvIHN1cHBvcnQ6CisKKwlNb2phdmUgY2FyZHMgKHNpbmdsZSBwb3J0IFBDSSBHaWdhYml0KSBib3RoIGNvcHBlciBhbmQgZmliZXIKKwlPYXNpcyBjYXJkcyAoc2luZ2xlIGFuZCBkdWFsIHBvcnQgUENJLXggR2lnYWJpdCkgY29wcGVyIGFuZCBmaWJlcgorCUthbGFoYXJpIGNhcmRzIChkdWFsIGFuZCBxdWFkIHBvcnQgUENJLWUgR2lnYWJpdCkgY29wcGVyIGFuZCBmaWJlcgorCitUaGUgZHJpdmVyIHdhcyBhY3R1YWxseSB0ZXN0ZWQgb24gT2FzaXMgYW5kIEthbGFoYXJpIGNhcmRzLgorCitUT0RPOgorCS0gbW92ZSBmaXJtd2FyZSBsb2FkaW5nIHRvIHJlcXVlc3RfZmlybXdhcmUoKQorCS0gcmVtb3ZlIGRpcmVjdCBtZW1vcnkgYWNjZXNzIG9mIHN0cnVjdHVyZXMKKwktIGFueSByZW1haW5pbmcgc3BhcnNlIGFuZCBjaGVja3BhdGNoLnBsIHdhcm5pbmdzCisJLSBhbnkgbmV0ZGV2IHJlY29tbWVuZGVkIGNoYW5nZXMKKworUGxlYXNlIHNlbmQgcGF0Y2hlcyB0bzoKKyAgICAgICAgR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KK2FuZCBDYzogTGlvciBEb3RhbiA8bGlvZG90QGdtYWlsLmNvbT4gYW5kIENocmlzdG9waGVyIEhhcnJlcgorPGNoYXJyZXJAYWxhY3JpdGVjaC5jb20+IGFzIHdlbGwgYXMgdGhleSBhcmUgYWxzbyBhYmxlIHRvIHRlc3Qgb3V0IGFueQorY2hhbmdlcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL2diZG93bmxvYWQuaCBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL2diZG93bmxvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ0MzJiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvZ2Jkb3dubG9hZC5oCkBAIC0wLDAgKzEsODIxNSBAQAorI2RlZmluZSBNT0pBVkVfVUNPREVfVkVSU19TVFJJTkcJIjEuMiIKKyNkZWZpbmUgTU9KQVZFX1VDT0RFX1ZFUlNfREFURSAgCSIyMDA2LzAzLzI3IDE1OjEyOjIyIgorI2RlZmluZSBNT0pBVkVfVUNPREVfSE9TVElGX0lEICAJMworCitzdGF0aWMgczMyIE1OdW1TZWN0aW9ucyA9IDB4MjsKK3N0YXRpYyB1MzIgTVNlY3Rpb25TaXplW10gPQoreworCTB4MDAwMDgwMDAsIDB4MDAwMTAwMDAsCit9OworCitzdGF0aWMgdTMyIE1TZWN0aW9uU3RhcnRbXSA9Cit7CisJMHgwMDAwMDAwMCwgMHgwMDAwODAwMCwKK307CisKK3N0YXRpYyB1OCBNb2phdmVVQ29kZVsyXVs2NTUzNl0gPQoreworCXsKKwkweDEyLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwKKwkweDk4LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDgwLCAweGEyLCAweDQwLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4MDksIDB4MDAsIDB4YTIsIDB4NDksIDB4ZGQsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHhkMSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweGEyLCAweDQwLAorCTB4NzUsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwYiwgMHgwMCwgMHhhOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDExLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MWYsIDB4ZTksIDB4MTgsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZTksCisJMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHg0MCwgMHhlOSwgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGE1LCAweDk5LCAweDAxLCAweDAwLCAweDE2LCAweDAwLCAweDI5LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDAsIDB4MTQsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwZiwgMHgwMCwgMHg5MywgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MjksIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgxNCwgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDExLCAweDAwLCAweDkzLCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgyOSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDE0LCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MGUsIDB4MDAsIDB4OTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHhkZCwgMHg4MSwgMHgwMSwgMHgwMCwgMHgyYiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDI3LCAweDAwLCAweDE0LCAweGJjLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDEsIDB4MTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0MCwKKwkweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHhiNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweGQ5LCAweDAwLCAweDAwLCAweDQwLCAweGIzLCAweDMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4YjYsIDB4ZDMsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4OTUsIDB4ZTgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhlOCwgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHhiOCwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGZkLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZmYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MjIsIDB4NTAsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwKKwkweGE1LCAweGE1LCAweDAwLCAweGE2LCAweGI0LCAweGE3LCAweDAxLCAweDAwLCAweDNjLCAweDAwLCAweGEyLCAweDUwLAorCTB4YjUsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgzYywgMHgwMCwgMHhhMiwgMHg0NSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDQxLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4N2YsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ZjUsIDB4Y2YsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDEsIDB4MDAsIDB4ZmEsCisJMHhiMywgMHgzMywgMHgwMSwgMHgwMCwgMHhhNSwgMHhhNSwgMHgwMCwgMHhkYSwgMHhiNSwgMHhhYiwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDAwLCAweGEyLCAweDUwLCAweGI1LCAweDYzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NDQsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGQ3LCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweGRhLCAweGVkLCAweDhiLCAweDAxLCAweDAwLAorCTB4ZDUsIDB4MDAsIDB4MDAsIDB4NDYsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhkNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDAwLCAweDAwLCAweGRhLCAweGVmLCAweDhiLCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZTMsIDB4OGYsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgzYywgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGQ3LCAweDhkLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweGRhLCAweGYxLCAweGRiLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZTksIDB4OGIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhlOSwgMHhlMywgMHgwMSwgMHgwMCwgMHhkNSwgMHgwMCwgMHgwMCwgMHg0YiwgMHhiMywgMHgzMywgMHgwMSwgMHgwMCwKKwkweDJjLCAweDAwLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZDcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NGMsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhkYSwgMHhlYiwgMHhkYiwgMHgwMSwgMHgwMCwgMHhkNSwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweGIzLCAweDMzLCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweGRhLCAweDgxLCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZGEsCisJMHhiNSwgMHhkYiwgMHgwMSwgMHgwMCwgMHg1YywgMHgwMCwgMHgyNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweGRhLCAweGI1LCAweGNmLCAweDAxLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweGE3LAorCTB4YjQsIDB4ODcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ODEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkNSwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGIzLCAweDMzLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweGRhLCAweGI1LCAweDhiLCAweDAxLCAweDAwLAorCTB4NjIsIDB4MDAsIDB4MjYsIDB4NGMsIDB4YjUsIDB4NjMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZGEsCisJMHhiNSwgMHhjZiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhkZiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGQ1LCAweDAwLCAweDAwLCAweDUyLCAweGIzLCAweDMzLCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweGRhLAorCTB4NGIsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZGYsIDB4ZjcsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhlZiwgMHhkZiwgMHg4YiwgMHgwMSwgMHgwMCwgMHg2OSwgMHgwMCwgMHgyMiwgMHg0MCwKKwkweGRmLCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGQ3LCAweGU1LCAweDAxLCAweDAwLCAweGY4LCAweDAwLCAweDAwLCAweGRhLAorCTB4YjMsIDB4OGIsIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkOSwgMHhkNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkOSwKKwkweGQ1LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGQ3LCAweGIxLCAweDAxLCAweDAwLAorCTB4MjIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiNSwgMHhmMywgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweGRhLCAweDdiLCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDQwLAorCTB4ZGQsIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4MDAsIDB4MDAsIDB4NWQsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhkYSwgMHhlNywgMHg4YiwgMHgwMSwgMHgwMCwgMHg4YSwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZTcsIDB4ZTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNiwgMHhlNywgMHg5NywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGQ3LCAweGIxLCAweDAxLCAweDAwLCAweGQ1LCAweDAwLCAweDAwLCAweDVlLAorCTB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZTUsIDB4OGIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhlNSwgMHhlMywgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweGRhLCAweGI1LCAweDhmLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4YjUsIDB4OTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsCisJMHhkNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgzYywgMHgwMSwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGU1LCAweDk3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4ZDcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ZGQsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHg5NiwgMHgwMCwgMHgyMiwgMHhmNSwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVlLCAweGQ1LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4ZWIsIDB4OTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjUsCisJMHhkNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhlYSwgMHhkNCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY3LCAweGUzLCAweDk3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYxLAorCTB4ZDcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4ZGQsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwgMHhkNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweGU5LCAweDk3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweGQ3LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZDUsIDB4MDAsIDB4MDAsIDB4NGEsIDB4YjMsIDB4MzMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZGEsCisJMHhkZCwgMHg4OSwgMHgwMSwgMHgwMCwgMHhiNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweGE2LAorCTB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OWEsIDB4MTMsIDB4MDAsIDB4ZWIsIDB4ZDYsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHhhNiwKKwkweGQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGViLCAweGQ2LCAweDk5LCAweDAxLCAweDAwLAorCTB4MmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5YSwgMHgxMywgMHgwMCwgMHhlYiwgMHhkNiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDAxLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLAorCTB4ZDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgzYywgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweGQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGViLCAweGQ2LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5YSwgMHgxMywgMHgwMCwgMHhlYiwgMHhkNiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAxLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweGE2LAorCTB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4ZDYsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGRmLCAweGIxLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0YiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg3YiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDA0LCAweDAwLCAweDQwLCAweGRkLCAweDk5LCAweDAxLCAweDAwLCAweGI3LCAweDAwLCAweDEzLCAweGJjLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDgsIDB4MDAsIDB4NDAsIDB4ZGQsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHhkZCwgMHg5MSwgMHgwMSwgMHgwMCwgMHhiOCwgMHgwMCwgMHg5NSwgMHhlOCwKKwkweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweGU5LCAweGZhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDAwLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGMxLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODAsIDB4MjIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweGNhLCAweDAwLCAweDA5LCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YzgsIDB4MDAsIDB4MDgsIDB4ZjksIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4MWYsIDB4ZmQsCisJMHhmOSwgMHgzMywgMHgwMCwgMHgwMCwgMHhjNywgMHgwMCwgMHg5ZSwgMHhmZCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGYzLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ4LAorCTB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHhmMywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDE5LCAweGIxLCAweDAxLCAweDAwLCAweGNmLCAweDAwLCAweDBhLCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDAsIDB4ZmIsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZmQsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHhmOSwgMHhmMywgMHg4ZiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA3LCAweDQyLCAweGY5LCAweGYzLCAweDhmLCAweDAxLCAweDAwLCAweGQzLCAweDAwLCAweGEyLCAweGZmLAorCTB4ZjcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHhmZiwgMHhmYiwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmYywKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4MDAsIDB4MDYsIDB4ZmUsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhiMywgMHhlMywgMHgwMSwgMHgwMCwgMHgxYywgMHgwMSwgMHgwMCwgMHhmYSwgMHhiMywgMHhjMywgMHgwMCwgMHgwMCwKKwkweGRhLCAweDAwLCAweDAwLCAweDQyLCAweDhkLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OGQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhlYiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDk2LCAweDgwLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjYsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHgyZCwgMHgxMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyZCwgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGI1LCAweGViLCAweDAxLCAweDAwLCAweGU0LCAweDAwLCAweDg0LCAweDk2LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjUsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiNSwgMHg4MywgMHgwMSwgMHgwMCwgMHhkZSwgMHgwMCwgMHhhMiwgMHg0MSwKKwkweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDJkLCAweDgxLCAweDAxLCAweDAwLAorCTB4MjYsIDB4MDEsIDB4MDAsIDB4NDEsIDB4MmQsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhiMywgMHhjMywgMHgwMSwgMHgwMCwgMHhkYSwgMHgwMCwgMHhhMiwgMHg0MSwgMHg4ZCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweGRhLCAweGI1LCAweGJmLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGIsIDB4ODEsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkOSwgMHhiOSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGI4LCAweGUzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRjLCAweGI5LCAweGViLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YjgsIDB4OTcsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDAsIDB4MDAsIDB4ZGMsCisJMHhiOSwgMHhlNywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyZCwgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRiLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDI3LCAweDAxLCAweDAwLCAweDQyLAorCTB4MmQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MmQsIDB4MTEsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgyZCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDJkLCAweDkxLCAweDAxLCAweDAwLCAweDI2LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MmQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyZCwgMHg4MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwgMHg4MSwgMHhkMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDg0LCAweDk2LCAweDgwLCAweDMyLCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweGEwLCAweGRjLAorCTB4YjksIDB4NmIsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MmQsIDB4OTEsIDB4MDAsIDB4MDAsCisJMHhmOCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyZCwgMHg4MSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweGRhLCAweDhiLCAweGIwLCAweDAwLCAweDAwLAorCTB4MTEsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODgsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEzLCAweDQ0LCAweDg5LCAweGVjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ODksIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhkOSwgMHgwMCwgMHgwMCwgMHg0MywgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGI1LCAweGYzLCAweDAxLCAweDAwLCAweDBjLCAweDAxLCAweGEwLCAweGRhLCAweDhiLCAweDQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMSwgMHhhMiwgMHg0MSwgMHg4OSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDQ1LCAweDg4LCAweDg4LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4OGEsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDEsIDB4OTAsIDB4NDQsIDB4OGEsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4YiwgMHhjMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0NSwKKwkweDhhLCAweGE4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDUwLCAweDhiLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ZjksIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4NDAsCisJMHhiMywgMHhjZiwgMHgwMSwgMHgwMCwgMHgxYywgMHgwMSwgMHgwMCwgMHhmYywgMHgxOSwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDFjLCAweDAxLCAweDQwLCAweGRhLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGRhLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZjksIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgxNiwgMHgwMSwgMHg5ZiwgMHhkYSwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDksIDB4MmIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MWUsIDB4MDEsIDB4OWYsIDB4OTQsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg5NCwgMHg5MiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGI1LCAweGYzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LAorCTB4YjQsIDB4OTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YjMsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgxZCwgMHgwMSwgMHhhMiwgMHg0MSwgMHg5MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDJiLCAweGIxLCAweDAxLCAweDAwLCAweDI5LCAweDAxLCAweDAwLCAweDUxLCAweDkzLCAweGIwLCAweDAwLCAweDAwLAorCTB4MjksIDB4MDEsIDB4MDAsIDB4NGQsIDB4OTMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjksIDB4MDEsIDB4MDAsIDB4NDksCisJMHg5MywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDI5LCAweDAxLCAweGEyLCAweDQxLCAweDkzLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTQsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDE3LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWQsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDQwLAorCTB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4YTEsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDE3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MGQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwOSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDA3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0NCwgMHgwMSwgMHgyMCwgMHg0OCwgMHhhMSwgMHg1MSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDUwLCAweDAxLCAweDIyLCAweDRiLAorCTB4NzQsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg2MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg2MCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwKKwkweDdlLCAweGIxLCAweDAxLCAweDAwLCAweDUxLCAweDAxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NGUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGYzLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YWYsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhjNSwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDA3LCAweDkwLCAweDAxLCAweDAwLCAweGYzLCAweDlmLCAweDAwLCAweDQwLCAweGJmLCAweGIzLCAweDAwLCAweDAwLAorCTB4NWYsIDB4MDEsIDB4MjIsIDB4Y2MsIDB4ODUsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhmMywgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweGFlLCAweDAzLCAweDAwLCAweGNiLAorCTB4YTMsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDY4LCAweDAxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4ODUsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHhjNSwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweGJhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4YTQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHhiYywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyZiwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGU3LCAweGE3LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LAorCTB4YTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4ODEsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDg4LCAweDAxLCAweDAwLCAweGRkLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ODksIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDhiLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4ZiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5MSwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZDIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGUxLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDdmLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhmMSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmMiwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDc3LCAweDAxLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDFhLCAweDAwLAorCTB4NWEsIDB4MDEsIDB4NTEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MWEsIDB4MDAsIDB4NWEsIDB4MDEsIDB4NTIsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgxYSwgMHgwMCwgMHg1YSwgMHgwMSwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgxYSwgMHgwMCwKKwkweDVhLCAweDAxLCAweDU2LCAweDQwLCAweDgxLCAweGIyLCAweDFhLCAweDAwLCAweDU1LCAweDAxLCAweDkxLCAweDgxLAorCTB4ODAsIDB4MzAsIDB4MWEsIDB4MDAsIDB4NWEsIDB4MDEsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MWEsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHg5MSwgMHg4MiwgMHg4MCwgMHgzMCwgMHgxYSwgMHgwMCwgMHg1YSwgMHgwMSwgMHg0NiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhiNSwgMHgwMSwgMHgyMiwgMHhkZSwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4OTQsIDB4MDEsIDB4YTIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0OSwgMHhkMSwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMSwgMHgyMiwgMHg0MCwKKwkweGUxLCAweDZkLCAweDAwLCAweDAwLCAweDk4LCAweDAxLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4NDEsIDB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhiZiwgMHhiMywgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMSwgMHhhMCwgMHgwZiwgMHhiZCwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRlLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjcsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MTksIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0MiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHhmZiwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLCAweDE5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDIsIDB4ZmYsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZmYsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJmLCAweGZmLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDE0LCAweDAwLCAweGE0LAorCTB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDEsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhhYSwgMHgwMSwgMHhhMiwgMHg0YywKKwkweDgxLCAweDUwLCAweDAwLCAweDAwLCAweGI2LCAweDAxLCAweDIyLCAweGQyLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YjEsIDB4MDEsIDB4MjIsIDB4NDEsIDB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4YTIsIDB4ZTAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhjMSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDg5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQyLAorCTB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NDMsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHg1YSwgMHgwMSwgMHgwMCwgMHg0NCwKKwkweGUwLCAweGIxLCAweDAwLCAweDAwLCAweGIzLCAweDAxLCAweDAwLCAweDQ4LCAweDQ5LCAweGMxLCAweDAwLCAweDAwLAorCTB4YjEsIDB4MDEsIDB4MDAsIDB4NWIsIDB4ODksIDB4OTAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4OWYsIDB4MDAsIDB4YTAsCisJMHg5ZSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGNiLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YmEsIDB4MDEsIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGM0LCAweDAxLCAweDkxLCAweDgyLCAweDgyLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4OGEsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjYsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHhjMywgMHgwMSwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGM0LCAweDAxLCAweDU2LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUzLAorCTB4NmYsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ZjMsIDB4OWYsIDB4MDAsIDB4NTIsIDB4NmYsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGNkLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4YzcsIDB4MDEsIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDAxLCAweDkxLCAweDgxLCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg5LAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjYsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHhkMCwgMHgwMSwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkMSwgMHgwMSwgMHg1NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDZmLCAweDkzLCAweDAxLCAweDAwLAorCTB4ZjMsIDB4OWYsIDB4MDAsIDB4NTMsIDB4NmYsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDIzLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweGRhLCAweDAxLCAweDIyLCAweGRlLAorCTB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkNSwgMHgwMSwgMHhhMiwgMHg0NCwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDU1LCAweDAxLCAweDAwLCAweDQzLCAweGJmLCAweGIzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjgsCisJMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NWEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhlMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDkxLCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDJlLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ZGQsCisJMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhlNywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLCAweGVkLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4ZGUsIDB4YTEsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDA3LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NTcsIDB4MDEsIDB4MDAsIDB4ZGYsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwgMHhhMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweGQyLCAweGE1LCAweGU3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQyLAorCTB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmNywgMHgwMSwgMHgyMiwgMHg0NCwgMHhjMSwgMHg1MywgMHgwMCwgMHgwMCwgMHhmNiwgMHgwMSwgMHg4NCwgMHg0MSwKKwkweDgxLCAweDQwLCAweDAwLCAweDAwLCAweGZhLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZjEsIDB4MDEsIDB4MDAsIDB4NDEsCisJMHhhMSwgMHhjMSwgMHgwMCwgMHgwMCwgMHhiMSwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGM1LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDVhLCAweDAxLCAweDAwLCAweGRkLAorCTB4YTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwgMHhiMSwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweGQzLCAweGE3LCAweGNiLCAweDAxLCAweDAwLAorCTB4YzUsIDB4MDIsIDB4MDAsIDB4ZTAsIDB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhhMywgMHg5YiwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHhkZSwgMHhhMSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGJmLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NTUsIDB4MDEsIDB4YTIsIDB4YmEsIDB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsCisJMHg2MCwgMHgwMCwgMHgwMCwgMHhkZSwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMiwgMHhhOCwgMHhiMSwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDU3LCAweDAxLCAweDAwLCAweDQwLCAweGUwLCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YmEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg1ZCwgMHgwMiwgMHgwMCwgMHg0ZCwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGUxLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZTMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhlOSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweGViLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGY1LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhmOSwgMHhiMywgMHgwMSwgMHgwMCwgMHgxNSwgMHgwMiwgMHgyMiwgMHg0MCwgMHg4ZiwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDc1LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLCAweDVkLCAweDAyLCAweDAwLCAweGM3LAorCTB4ODMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2QsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg1ZCwgMHgwMiwgMHgwMCwgMHg0MiwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU5LCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZWEsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGVjLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVkLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhlMCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YWIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGJhLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJiLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjksIDB4MDIsIDB4YjgsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyYiwgMHgwMiwgMHhiOSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MmQsIDB4MDIsIDB4YmEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMiwgMHhiYiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDMxLCAweDAyLCAweGJjLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgzMywgMHgwMiwgMHhiZCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDM1LCAweDAyLCAweGJlLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDIsIDB4YmYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDM5LCAweDAyLCAweGM4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4M2IsIDB4MDIsIDB4YzksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgzZCwgMHgwMiwgMHhjYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4M2YsIDB4MDIsIDB4Y2IsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0MSwgMHgwMiwgMHhjYywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDQzLCAweDAyLCAweGNkLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg0NSwgMHgwMiwgMHhjZSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDQ3LCAweDAyLCAweGNmLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGM1LCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MmUsIDB4MDYsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHhkMywgMHhhNywgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYxLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVmLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGY3LCAweDAxLCAweDAwLCAweGM3LCAweGUxLCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjMsIDB4MDIsIDB4MDAsIDB4NDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHg0MCwgMHgxYSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4NjAsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDIsIDB4NDksIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg0MCwgMHgxYywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDRlLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjUsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg1YywgMHgwMiwgMHg0YSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwKKwkweDllLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGQ4LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ZDAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsCisJMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHhkNCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGQ2LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQxLAorCTB4ZGMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4ZGUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHhkYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwKKwkweDhlLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLCAweGU2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ZWMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksCisJMHhmYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlMCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGUyLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LAorCTB4ZTQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZTgsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwKKwkweGY0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGY2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZjgsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzcsCisJMHhhOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg0MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDgxLCAweDAyLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHg4NSwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLAorCTB4OGEsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OTUsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5NSwgMHgwMiwgMHgwMCwgMHg0NiwgMHhhMywgMHhiMywgMHgwMCwgMHgwMCwKKwkweDk4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDllLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGMsIDB4MDIsIDB4MjMsIDB4NTAsIDB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhNSwgMHhiMywgMHgwMSwgMHgwMCwgMHhiYywgMHgwMiwgMHgwMCwgMHg0MiwKKwkweGE1LCAweDYzLCAweDAxLCAweDAwLCAweGM1LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwgMHhhMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDk0LCAweDAyLCAweDIyLCAweDQ0LAorCTB4YTUsIDB4NTMsIDB4MDAsIDB4MDAsIDB4OTEsIDB4MDIsIDB4MDAsIDB4NDEsIDB4YTEsIDB4YzEsIDB4MDAsIDB4MDAsCisJMHg1YSwgMHgwMSwgMHgwMCwgMHhkZCwgMHhhMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMiwgMHgwMCwgMHhkZSwKKwkweGExLCAweDMzLCAweDAxLCAweDAwLCAweGM1LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NWEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHhiZiwgMHhiMywgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMSwgMHhhMiwgMHhkMiwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLAorCTB4NjMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OWIsIDB4MDIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1YSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMiwgMHgwMCwgMHg1NCwKKwkweGE1LCAweDMzLCAweDAxLCAweDAwLCAweGM1LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHhkMCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ZDYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhOSwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg1ZCwgMHgwMiwgMHgwMCwgMHg0NiwKKwkweDgzLCAweDMwLCAweDAxLCAweDAwLCAweDVhLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4OWUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsCisJMHg0MywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOSwgMHg0NSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGVhLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGViLAorCTB4YTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NDAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlNywgMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwKKwkweGE5LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsIDB4YTMsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg0NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQzLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGI5LCAweDAyLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4Y2MsIDB4ODUsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTcsCisJMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHhhOSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweGFlLCAweDAzLCAweDAwLCAweGNiLAorCTB4YTMsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YjgsIDB4MDIsIDB4MDAsIDB4ZDQsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4Y2MsCisJMHg4NSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGM3LCAweDAyLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweGM2LCAweDAyLCAweGEyLCAweGYyLAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4Y2MsIDB4ODUsIDB4ODMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjYiwgMHgwMiwgMHg4MCwgMHhhNSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweGE1LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4MDIsIDB4ODAsIDB4YTUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGQ2LCAweDAyLCAweDIwLCAweDRmLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZDYsIDB4MDIsIDB4MjAsIDB4NGIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHhkNiwgMHgwMiwgMHgyMCwgMHg0NywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDMsIDB4OTAsIDB4MDAsIDB4NDEsCisJMHgyMCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDE0LCAweDJmLCAweDRjLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZGEsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHhhNSwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwgMHhkZCwgMHgwMiwgMHhhMiwgMHhhNSwKKwkweDgwLCAweDZjLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDkwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MjMsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZTAsIDB4MDIsIDB4MWYsIDB4OTEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgyMCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDIzLCAweDkxLCAweDAxLCAweDAwLCAweGUzLCAweDAyLCAweDFmLCAweDkxLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MjAsIDB4YTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHhlNiwgMHgwMiwgMHgxZiwgMHg5MSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDIzLCAweDkxLCAweDAxLCAweDAwLAorCTB4ZTgsIDB4MDIsIDB4MWYsIDB4OTEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjgsIDB4MDAsIDB4OTAsCisJMHgyMCwgMHhhOSwgMHgwMSwgMHgwMCwgMHhlMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDIxLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgyNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyNSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDI2LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MjcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAxLCAweDAwLCAweGE2LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAzLCAweDAwLCAweDQwLAorCTB4ODAsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDUsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwNywgMHgwMCwgMHg0MSwgMHg4MiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MzksIDB4MDMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhkOCwgMHgxNCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDAyLCAweGEyLCAweGY4LCAweDgwLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDIyLCAweGYwLAorCTB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MjEsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHhkMCwgMHgxNCwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHgwYywKKwkweDg1LCAweDMwLCAweDAxLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDRkLCAweDg1LCAweDEwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDMsIDB4MDAsIDB4NGUsIDB4ODUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MjAsIDB4NGYsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHg0ZiwgMHg4NSwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweDM5LCAweDAzLCAweDAwLCAweDBjLCAweDg1LCAweDMwLCAweDAxLCAweDAwLCAweGQ4LCAweDE0LCAweDIwLCAweDQzLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDMsIDB4MjIsIDB4ZjAsIDB4OWUsIDB4NmUsIDB4MDAsIDB4MDAsCisJMHgzOSwgMHgwMywgMHgwMCwgMHg0ZCwgMHg4NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhkOCwgMHgxNCwgMHgyMCwgMHg0MiwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDBmLCAweDAzLCAweDIyLCAweGYwLCAweDllLCAweDZlLCAweDAwLCAweDAwLAorCTB4MzksIDB4MDMsIDB4MDAsIDB4NGUsIDB4ODUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MTQsIDB4MjAsIDB4NDEsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMSwgMHgwMywgMHhhMiwgMHhmMCwgMHg5ZSwgMHg2ZSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ5LCAweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MjAsIDB4OTUsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MjAsIDB4OGQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHgyMSwgMHg5NSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDMsIDB4MDAsIDB4MTcsIDB4ODUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4NTgsCisJMHg4NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHg1OSwgMHg4NSwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDIwLCAweDRmLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDVhLAorCTB4ODUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MzksIDB4MDMsIDB4MDAsIDB4MTcsIDB4ODUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHgxNCwgMHgyMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMywgMHgwMywgMHgyMiwgMHhmMCwKKwkweDllLCAweDZlLCAweDAwLCAweDAwLCAweDM5LCAweDAzLCAweDAwLCAweDU4LCAweDg1LCAweDEwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4MTQsIDB4MjAsIDB4NDEsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjMsIDB4MDMsIDB4MjIsIDB4ZjAsCisJMHg5ZSwgMHg2ZSwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMywgMHgwMCwgMHg1OSwgMHg4NSwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDE0LCAweDIwLCAweDQyLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDI3LCAweDAzLCAweGEyLCAweGYwLAorCTB4OWUsIDB4NmUsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MjAsIDB4OGQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMCwgMHg5NSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg4LCAweGUwLCAweDAxLCAweDAwLAorCTB4MmYsIDB4MDMsIDB4YTIsIDB4NDIsIDB4MjEsIDB4N2QsIDB4MDAsIDB4MDAsIDB4YTUsIDB4YTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyMCwgMHg0MCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAzLCAweDAwLCAweDQ0LCAweDg0LCAweDMwLCAweDAxLCAweDAwLCAweDM5LCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MTQsIDB4MjAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgyZiwgMHgwMywgMHhhMiwgMHhmMCwgMHg4MCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg5LCAweGUwLCAweDAxLCAweDAwLCAweGUwLCAweDAwLCAweDgwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4NzAsIDB4MTUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4ODcsIDB4YjQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3MCwgMHgxNSwgMHgwMCwgMHg0MywgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDQxLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NzAsIDB4MTUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkOCwgMHgxNCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4ODcsIDB4YjQsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3MCwgMHgxNSwgMHgwMCwgMHg0MywgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgzZiwgMHgwMywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDg3LCAweGIwLCAweDAxLCAweDAwLAorCTB4NDIsIDB4MDMsIDB4YTIsIDB4NDEsIDB4ODcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4ZjIsCisJMHg4NiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMSwgMHg4NiwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDQxLCAweDAzLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHg0OCwgMHg4NCwgMHg4NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDhmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDksIDB4MDMsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmNSwgMHg5ZiwgMHgwMCwgMHg0NywgMHg5OCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA4LCAweDAwLCAweDQ3LCAweDhlLCAweGM4LCAweDAxLCAweDAwLCAweDQ3LCAweDAzLCAweDAwLCAweDVjLAorCTB4OGYsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg1OCwgMHgxNSwgMHgyZCwgMHg0MCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyZCwgMHhmMCwKKwkweDg4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDhhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg4MiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4YiwgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDgzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4ODIsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NjAsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4ZCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg2NCwgMHgwMywgMHgyMiwgMHg1ZiwKKwkweDhkLCAweDZjLCAweDAwLCAweDAwLCAweDU1LCAweDAzLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4NTMsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDQzLAorCTB4ODYsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4NDEsIDB4ODUsIDB4NTAsIDB4MDEsIDB4MDAsCisJMHg2MCwgMHgwMywgMHgwMCwgMHg0MSwgMHg4MywgMHhlMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDg1LCAweGUwLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmYsIDB4NDYsIDB4ODQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MCwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQ1LAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4OGIsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHgwMywgMHhhMCwgMHg0MSwKKwkweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDZkLCAweDAzLCAweDAwLCAweDQxLCAweDgyLCAweGU4LCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsIDB4OGUsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDE1LCAweDAwLCAweDQwLCAweDg1LCAweDk4LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDAsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4NDEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg0MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDQwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTMsIDB4NTUsIDB4ODEsIDB4NmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhhMywgMHhjMSwgMHgwMSwgMHgwMCwgMHg3MywgMHgwMywgMHgwMCwgMHg1MCwgMHg4NSwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3ZSwgMHgwMywgMHhhMiwgMHg0MSwKKwkweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MWEsIDB4MTUsIDB4MDAsIDB4YTYsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3MCwgMHgxNSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA4LCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg3MCwgMHgxNSwgMHgwMCwgMHg0MywKKwkweDYyLCAweDk5LCAweDAxLCAweDAwLCAweDg4LCAweDAzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4OGEsIDB4MDMsIDB4MjIsIDB4NWEsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4N2EsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMywgMHhhOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDA4LCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDgzLCAweDAzLCAweGEyLCAweDQxLAorCTB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGY3LCAweDBmLCAweDAwLCAweGJjLAorCTB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCX0sCisJeworCTB4MzEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzQsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNSwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDFiLCAweDgwLCAweDgxLCAweDgwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4ODksIDB4YTIsIDB4NDAsIDB4OTEsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg5MCwgMHhiMywgMHgwMSwgMHgwMCwgMHg1YywgMHg5NSwgMHgyZSwgMHhhMiwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweDgwLCAweGY0LCAweDg5LCAweDAxLCAweDAwLAorCTB4OTAsIDB4OTUsIDB4MmEsIDB4YzgsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQwLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDEsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWUsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ0LCAweGIxLCAweDAxLCAweDAwLCAweDE4LCAweDgwLCAweDExLCAweDgxLAorCTB4OTgsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgxYSwgMHg4MCwgMHgxMSwgMHg4MiwgMHg5OCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGU2LCAweDg5LCAweDAwLCAweDQ4LCAweGZkLCAweDkzLCAweDAwLCAweDAwLAorCTB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjMsIDB4ODAsIDB4YTIsIDB4NDIsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHg4MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgwLCAweDExLCAweDgxLCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDIyLCAweDgwLCAweDUxLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODAsIDB4MTEsIDB4ODIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHg4MCwgMHg1MiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MCwgMHgwMCwgMHg0OCwKKwkweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDI3LCAweDgwLCAweDAwLCAweDgwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjYsIDB4ODAsIDB4YTIsIDB4NTMsIDB4MDcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4NTMsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHgyYSwgMHg4MCwgMHgwMCwgMHg1MiwgMHgwNywgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDI5LCAweDgwLCAweGEyLCAweDUyLCAweDA3LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDUyLAorCTB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTMsIDB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweGYzLCAweDkzLCAweDAxLCAweDAwLCAweDVjLCAweDk1LCAweDJlLCAweGEyLCAweDUyLCAweGIzLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjQsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOSwgMHg0NSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDRjLCAweDgwLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwNSwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwNSwgMHg0MCwKKwkweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZTEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHhkZSwgMHhiMiwgMHgwMSwgMHgwMCwgMHg3NywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4ZmQsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OWIsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHg5YywgMHhiMywgMHgwMSwgMHgwMCwgMHhkZSwgMHg5OSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU4LCAweDk1LCAweDIwLCAweDQ0LCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4YzAsIDB4MDAsIDB4YTYsIDB4MzYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDM4LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDA2LCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwNSwgMHgxOCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwOSwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4NTAsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4N2IsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhlMCwgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDg0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA4LCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NjAsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3MCwgMHg5NSwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGRkLCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NWMsIDB4OTUsIDB4MjAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxYSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDcxLCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDk3LAorCTB4ODAsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MmUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyZSwgMHhkZCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDkzLCAweDk4LCAweDAxLCAweDAwLCAweDI5LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NWMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YWYsIDB4MzMsIDB4MDEsIDB4MDAsIDB4NjEsIDB4OTksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDU1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDQ5LCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzcsIDB4MDEsIDB4MDAsIDB4NDEsIDB4ODEsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHg3MSwgMHg4MCwgMHg1MSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3MiwgMHg4MCwgMHg1MiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDczLCAweDgwLCAweDU1LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NzQsIDB4ODAsIDB4NTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4OTEsIDB4ODEsCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg1YSwgMHgwMSwgMHg0NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDU1LCAweDAxLCAweDkxLCAweDgyLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDVhLCAweDAxLCAweDQ2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MDEsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHg1YSwgMHgwMSwgMHgwMCwgMHg0OCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwgMHg1YSwgMHgwMSwgMHgwMCwgMHg0OSwKKwkweGZkLCAweDgzLCAweDAwLCAweDAwLCAweDVhLCAweDAxLCAweDAwLCAweDRhLCAweGZkLCAweDgzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsCisJMHhhMywgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0NiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweGQwLCAweGUxLCAweGIxLCAweDAwLCAweDAwLAorCTB4N2MsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsCisJMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4YiwgMHhiMywgMHgwMCwgMHgwMCwKKwkweGIxLCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDg0LCAweDgwLCAweGEyLCAweDQxLAorCTB4OTcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4YTEsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHgwNCwKKwkweDgwLCAweDk0LCAweDAwLCAweDAwLCAweDgwLCAweDE1LCAweDNmLCAweDQyLCAweDk3LCAweGUzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDMsCisJMHgwMiwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweGNiLCAweDk5LCAweGNiLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNjLAorCTB4ZjMsIDB4ODMsIDB4MDEsIDB4MDAsIDB4OGUsIDB4ODAsIDB4YTIsIDB4NDEsIDB4OTcsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwgMHhmMywgMHg5MywgMHgwMSwgMHgwMCwgMHhhZSwgMHgwMywgMHgwMCwgMHhjYiwKKwkweGEzLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGExLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg5NSwgMHg4MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjNiwgMHgwMiwgMHgwMCwgMHgyMCwKKwkweDQyLCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQxLCAweDA1LCAweDZjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4Y2IsIDB4ZGIsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NDEsCisJMHg4YiwgMHhiMywgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDliLCAweDgwLCAweGE4LCAweGIxLCAweDhjLCAweDMzLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4OWQsIDB4ODAsIDB4YTgsIDB4YjEsIDB4OTQsIDB4MzMsIDB4MDAsIDB4MDAsCisJMHhhMywgMHg4MCwgMHgxNCwgMHhjNiwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHhjNiwKKwkweDgzLCAweGY0LCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDIyLCAweDRmLCAweDgzLCAweDA0LCAweDAwLCAweDAwLAorCTB4N2YsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDEsIDB4MDAsIDB4YzYsCisJMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5NywgMHhhMywgMHgwMSwgMHgwMCwKKwkweDdmLCAweDgwLCAweDFmLCAweDVjLCAweDk3LCAweDUzLCAweDAwLCAweDAwLCAweDllLCAweDgzLCAweDFkLCAweGM2LAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4NDMsIDB4ODEsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHhhOSwgMHg4MCwgMHgwMCwgMHg0MCwgMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM2LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZGEsIDB4ODEsIDB4MDAsIDB4Y2EsIDB4NjMsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MmQsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4MSwgMHgwMCwgMHg0ZCwgMHg4MywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDFlLCAweDgxLCAweDAwLCAweDRlLCAweDYxLCAweGIxLCAweDAwLCAweDAwLCAweDBkLCAweDgxLCAweDAwLCAweDQwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODEsIDB4MDAsIDB4NGMsIDB4ODMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweDNkLCAweDgxLCAweDAwLCAweDQwLCAweGMxLCAweGIxLCAweDAwLCAweDAwLAorCTB4OGQsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MGQsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDZhLCAweDg0LCAweDAwLCAweGNhLCAweDliLCAweGIzLCAweDAwLCAweDAwLCAweDQ2LCAweDgxLCAweDAwLCAweDQwLAorCTB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHg4MSwgMHgwMCwgMHg0MCwgMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg1NiwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweGMxLCAweGIxLCAweDAwLCAweDAwLCAweDU3LCAweDgxLCAweDAwLCAweDQwLCAweGMxLCAweGIxLCAweDAwLCAweDAwLAorCTB4NTgsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NTksIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1OSwgMHg4MSwgMHgwMCwgMHg0MSwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGNlLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGRkLCAweDgzLCAweDAwLCAweGJiLAorCTB4YWIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4ZGIsIDB4ODEsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhkMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhkZiwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGRjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhjYSwgMHg3NywgMHhiMywgMHgwMCwgMHgwMCwKKwkweDE1LCAweDgxLCAweDAwLCAweDRkLCAweDgzLCAweGIwLCAweDAwLCAweDAwLCAweDFjLCAweDgxLCAweDAwLCAweDRlLAorCTB4NjEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MGQsIDB4ODEsIDB4MDAsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxNSwgMHg4MSwgMHgwMCwgMHg0YywgMHg4MywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHg4MSwgMHgwMCwgMHhiYiwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGYwLCAweDgwLCAweDAwLCAweGJiLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZTIsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsCisJMHg0ZCwgMHhiMywgMHgwMCwgMHgwMCwgMHg2NCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDhmLCAweDgyLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGM4LCAweDE0LCAweDJlLCAweGJiLAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHg3ZiwgMHgwMCwgMHhhMiwKKwkweGEwLCAweDhiLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGE1LCAweGIzLCAweDAxLCAweDAwLAorCTB4NzUsIDB4ODAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4MzMsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0ZSwgMHgwMSwgMHgwMCwgMHg0ZCwgMHg5MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDRlLCAweDAxLCAweDAwLCAweDRlLCAweDkzLCAweDMwLCAweDAxLCAweDAwLCAweDRlLCAweDAxLCAweDAwLCAweDRjLAorCTB4OTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg2YSwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1NCwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweGNhLCAweGU1LCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ODAsIDB4MjIsIDB4NDIsCisJMHg4ZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhlYSwgMHg4MCwgMHgyMiwgMHg0MSwgMHg4ZiwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweGVjLCAweDgwLCAweDFlLCAweGNhLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGVlLCAweDgwLCAweDFmLCAweGNhLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YzksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg2YSwgMHg4NCwgMHgwMCwgMHg0MiwgMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwKKwkweGNkLCAweGIxLCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweDQxLCAweDhmLCAweGIzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHhhNiwgMHhjNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDZhLCAweDg0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGE2LAorCTB4YzYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsIDB4OGYsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHg3OCwgMHgxOCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgyZiwgMHg5YywKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDA3LCAweDgxLCAweDAwLCAweDQwLCAweDM5LCAweDMzLCAweDAxLCAweDAwLAorCTB4MTgsIDB4MDAsIDB4MmYsIDB4OWIsIDB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHgzNywgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHg5YSwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDgxLCAweDAwLCAweDQwLCAweDM1LCAweDMzLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDJmLCAweDk5LAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODEsIDB4MDAsIDB4NDAsIDB4MzMsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHhhZSwgMHg0NywgMHhjOSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MTgsIDB4MDAsIDB4NDAsCisJMHhlMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweGFlLCAweDYzLCAweGRkLCAweDAxLCAweDAwLCAweDAyLCAweDgxLCAweDI4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMiwgMHg4MSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDFhLCAweDQ0LCAweDkzLCAweDkzLCAweDAwLCAweDAwLAorCTB4MDUsIDB4ODEsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODEsIDB4MDAsIDB4NTgsCisJMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmMCwgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE0LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDBjLCAweDgxLCAweGEyLCAweDQwLAorCTB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwKKwkweGUxLCAweGQxLCAweDAxLCAweDAwLCAweDBkLCAweDgxLCAweDM3LCAweDVjLCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTEsIDB4ODEsIDB4MjgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDYzLCAweGIxLCAweDAxLCAweDAwLCAweDExLCAweDgxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxNiwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg4MSwgMHgwMCwgMHhiYiwKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTcsIDB4ODEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDZhLCAweDg0LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDE5LCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4OTUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxZiwgMHg4MSwgMHgwMCwgMHhiYiwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg5NSwgMHgyZiwgMHg0MCwKKwkweDg3LCAweGIwLCAweDAxLCAweDAwLCAweDIxLCAweDgxLCAweDIyLCAweDQwLCAweDk1LCAweDdmLCAweDAwLCAweDAwLAorCTB4NmEsIDB4ODQsIDB4NjAsIDB4NDAsIDB4OTUsIDB4ODMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MSwgMHgzNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDIzLCAweDgxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyNSwgMHg4MSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwKKwkweDYzLCAweGIxLCAweDAxLCAweDAwLCAweDI3LCAweDgxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MjIsIDB4NDEsCisJMHg0MywgMHg1MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHhjYSwgMHg5NSwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDIyLCAweDgxLCAweDAwLCAweDQxLCAweDg1LCAweGMwLCAweDAwLCAweDAwLCAweDJmLCAweDgxLCAweGEyLCAweDQyLAorCTB4NjcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgyZiwgMHg4MSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDY1LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkzLCAweDgzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4Y2EsIDB4NjksIDB4OTcsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MjYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHg4MSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDZhLCAweDg0LCAweDFhLCAweDQ0LCAweDkzLCAweDkzLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDIwLCAweDQzLAorCTB4OTUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4ODAsIDB4Y2EsIDB4NjcsIDB4MzMsIDB4MDAsIDB4MDAsCisJMHg2YSwgMHg4NCwgMHgyMiwgMHg0MCwgMHg2NSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHg2ZiwKKwkweGRiLCAweDkxLCAweDAwLCAweDAwLCAweGMxLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzUsIDB4ODAsIDB4MjIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDQyLCAweDgxLCAweGEyLCAweDQ0LCAweDIxLCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4OTUsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4OTUsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwKKwkweGMzLCAweGIxLCAweDAxLCAweDAwLCAweDQ1LCAweDgxLCAweDIyLCAweDViLCAweDk1LCAweDdmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0OSwgMHg4MSwgMHgyMiwgMHg0MCwgMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweGY1LCAweDAwLCAweGNhLCAweDk1LCAweDliLCAweDAxLCAweDAwLCAweDRhLCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ZmQsIDB4MDAsIDB4Y2EsIDB4OTUsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg3ZiwgMHhiMywgMHgwMSwgMHgwMCwgMHgyNiwgMHgwMSwgMHgwMCwgMHhjYSwKKwkweGM1LCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDk1LCAweDgzLCAweDAxLCAweDAwLAorCTB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsIDB4YzUsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZGYsIDB4NmYsIDB4MDAsIDB4Y2EsCisJMHg5NSwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGM3LCAweGIxLCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDIyLCAweDVmLAorCTB4OTUsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MjYsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg5NSwgMHg4MywgMHgwMSwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhjYSwKKwkweGM3LCAweGIxLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweGNhLCAweGM5LCAweGIxLCAweDAwLCAweDAwLAorCTB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsIDB4Y2IsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsCisJMHhjZCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhjYSwgMHhjZiwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweDQyLCAweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDk4LCAweDE0LCAweDAwLCAweDQwLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDVlLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4NDEsIDB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODEsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHhhNiwgMHgwOCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDYyLCAweDgxLCAweDlmLCAweDg1LCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDYxLCAweDgxLCAweGEyLCAweDRmLAorCTB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MjEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjOSwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQxLCAweDg0LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDMsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzksIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmMCwgMHhmZiwgMHgwMCwgMHg0MSwgMHg4NiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDg0LCAweDk0LCAweDAxLCAweDAwLCAweDBmLCAweDAwLCAweDAwLCAweGE2LAorCTB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4YzQsIDB4MDAsIDB4NDMsIDB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg3NSwgMHg4MSwgMHhhMiwgMHg0MywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDIxLCAweGIzLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MWMsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4NzIsIDB4ODEsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDdlLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDQxLCAweDAxLCAweDAwLCAweGE2LAorCTB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MGMsIDB4MDAsIDB4NDMsIDB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg3YSwgMHg4MSwgMHhhMiwgMHg0MywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDIxLCAweGIzLCAweDAxLCAweDAwLCAweDdlLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NDEsIDB4MDEsIDB4MDAsIDB4YTYsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MGMsIDB4MDAsIDB4NDMsCisJMHg4NiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg3ZSwgMHg4MSwgMHhhMiwgMHg0MywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDIxLCAweGIzLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4N2YsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg0MCwgMHgxMywgMHgwMCwgMHg0MSwgMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwgMHg4NywgMHg4MSwgMHgyMiwgMHg0MywKKwkweDIxLCAweDZmLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4ODQsIDB4ODEsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg0MSwgMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDhjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTksIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHg4OSwgMHg4MSwgMHhhMiwgMHg1ZSwgMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHg0MSwKKwkweDA4LCAweDk5LCAweDAxLCAweDAwLCAweDhjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg4MSwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDhmLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweDQwLAorCTB4MDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MTQsIDB4MmUsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5MiwgMHg4MSwgMHhhMiwgMHg1ZSwgMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweGIwLCAweDAxLCAweDAwLCAweGExLCAweDgxLCAweDIyLCAweDQzLCAweDIxLCAweDZmLCAweDAwLCAweDAwLAorCTB4YjAsIDB4ODEsIDB4MjIsIDB4NDQsIDB4MjEsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTEsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjOSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDgxLCAweDIyLCAweDRhLCAweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4OWMsIDB4ODEsIDB4MjIsIDB4NGQsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg4MSwgMHgyMiwgMHg0ZiwKKwkweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDg3LCAweDkwLCAweDAxLCAweDAwLAorCTB4YTAsIDB4ODEsIDB4MjIsIDB4NGUsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHhiOCwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAxLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweGM5LCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjOSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiOCwgMHg4MSwgMHgyMiwgMHg0MiwKKwkweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDkwLCAweDAxLCAweDAwLAorCTB4MWMsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzksIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhhYiwgMHg4MSwgMHgyMiwgMHg0NSwgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg3LCAweDkwLCAweDAxLCAweDAwLCAweGFkLCAweDgxLCAweDIyLCAweDQ0LAorCTB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhhZiwgMHg4MSwgMHgyMiwgMHg0MywgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDg3LCAweDkwLCAweDAxLCAweDAwLCAweGI4LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDEsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzksIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGM5LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGI4LCAweDgxLCAweDIyLCAweDQyLAorCTB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg3LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4YzksIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmMsIDB4ODEsIDB4MjIsIDB4NGIsCisJMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4YWYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YzUsIDB4ODEsIDB4MjIsIDB4NDAsIDB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhjNSwgMHg4MSwgMHhhMiwgMHg0MSwgMHg4NywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGFlLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIzLCAweDAxLCAweDAwLAorCTB4YzQsIDB4ODEsIDB4MjIsIDB4NDIsIDB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzUsIDB4ODEsIDB4MDAsIDB4MGIsCisJMHg3ZCwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg3ZCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweGZmLCAweDdmLCAweDAwLCAweGEyLCAweGEwLCAweDhiLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NzUsIDB4ODAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgyLCAweGRjLCAweDAxLCAweDAwLCAweGNhLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4ODEsIDB4OWYsIDB4ODUsCisJMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDgxLCAweDE0LCAweGY3LCAweDgxLCAweDMwLCAweDAwLCAweDAwLCAweGQxLCAweDgxLCAweGEyLCAweDQ5LAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg4MSwgMHgxNSwgMHhmOCwgMHg4MSwgMHgxNCwgMHgwMCwgMHgwMCwgMHhkNCwgMHg4MSwgMHhhMiwgMHg0YSwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4ZDYsIDB4ODEsIDB4YTIsIDB4YzgsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGVmLCAweGIzLCAweDAxLCAweDAwLCAweGQ4LCAweDgxLCAweDQyLCAweDQwLAorCTB4ZjEsIDB4MzMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODEsIDB4MDAsIDB4NDAsIDB4NjgsIDB4OTcsIDB4MDAsIDB4MDAsCisJMHg2YSwgMHg4NCwgMHgwMCwgMHhiYiwgMHg2YiwgMHhiMywgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhiYiwKKwkweGIxLCAweGIzLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4MTQsIDB4MmUsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4YTIsCisJMHhhMCwgMHg4YiwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMCwgMHgwMCwgMHg0MywgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweGRhLCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDdjLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODksIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg4LCAweDhjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDg3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDg3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4YTUsIDB4YzMsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4ODEsIDB4MjIsIDB4NDQsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsCisJMHhmOCwgMHg4MSwgMHgyMiwgMHg0NCwgMHg4YiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhlNywgMHg4MSwgMHhhMiwgMHg1MCwKKwkweGE1LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGE1LCAweGUzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NzUsIDB4ODAsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjYywgMHgxNCwgMHgyZSwgMHhkMiwgMHg5NSwgMHhjMywgMHgwMSwgMHgwMCwKKwkweGFlLCAweDAzLCAweDAwLCAweGNiLCAweGEzLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmNSwgMHg4MSwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MSwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGU3LCAweDgxLCAweDAwLCAweDQwLCAweGE1LCAweGIzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4YTUsIDB4ZTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHg3NSwgMHg4MCwgMHgwMCwgMHhiYiwgMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ5LCAweDAwLCAweDAwLCAweDQxLAorCTB4YjMsIDB4NzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTAsIDB4YjUsIDB4ZjMsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhiMywgMHhmMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOSwKKwkweGIzLCAweGZiLCAweDAxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweGE2LCAweGI4LCAweGIzLCAweDAxLCAweDAwLAorCTB4ZjIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDEsIDB4MDAsIDB4NDIsCisJMHgyZCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGViLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwOSwgMHg4MiwgMHgxMCwgMHhkYSwgMHhiNSwgMHg2YiwgMHgwMCwgMHgwMCwgMHgwYSwgMHg4MiwgMHgwMCwgMHg0MSwKKwkweDJkLCAweDgxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDJkLCAweDkxLCAweDAxLCAweDAwLAorCTB4MjgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHgyZCwgMHgxMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyZCwgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDA2LCAweDgyLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDI2LCAweDAxLCAweDAwLCAweDQyLAorCTB4MmQsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyNiwgMHgwMSwgMHgwMCwgMHg0MiwgMHgyZCwgMHgxMSwgMHgwMSwgMHgwMCwgMHgyNSwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDJkLCAweDExLCAweDAxLCAweDAwLCAweDE1LCAweDgyLCAweDA0LCAweDQwLCAweDJkLCAweDAxLCAweDAwLCAweDAwLAorCTB4MjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MTEsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDI1LCAweDAxLCAweDAwLCAweDQyLCAweDJkLCAweDAxLCAweDAxLCAweDAwLCAweGYyLCAweDAwLCAweDAwLCAweDQwLAorCTB4YjksIDB4MzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MmQsIDB4ODEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwgMHgyZCwgMHg4MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQyLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGZmLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE4LCAweGIxLCAweDAxLCAweDAwLCAweDFmLCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWIsIDB4ODEsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDViLCAweDQzLCAweGMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MjksIDB4ODIsIDB4YTIsIDB4NTQsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDMwLCAweDgyLCAweGEyLCAweDA2LAorCTB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwNywgMHg5MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlMSwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDM5LCAweDgyLCAweGEyLCAweDQwLCAweDk3LCAweDZjLCAweDAwLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4M2EsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGZjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDIsIDB4YjMsIDB4NDMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MiwKKwkweGIzLCAweDQzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGY1LCAweGIxLCAweDAxLCAweDAwLAorCTB4NGUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNywgMHhmNSwgMHgwMSwgMHgwMCwKKwkweDUwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDgsIDB4YjIsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDkxLCAweGMwLCAweDAxLCAweDAwLAorCTB4NDUsIDB4ODIsIDB4YTIsIDB4NDEsIDB4OGYsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg0NSwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGZjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGZkLCAweGIxLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDQwLCAweGIzLCAweDliLCAweDAxLCAweDAwLAorCTB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsCisJMHhmZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGZjLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLCAweDkxLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHhkYSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZjLCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGRhLCAweGZkLCAweGIxLCAweDAxLCAweDAwLAorCTB4NmYsIDB4ODIsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NmYsIDB4ODIsIDB4MjIsIDB4NDUsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDM1LCAweDgyLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmUsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg2ZCwgMHg4MiwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwgMHg3MiwgMHg4MiwgMHgyMiwgMHgyMCwKKwkweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDZmLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZGIsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NzIsIDB4ODIsIDB4MjIsIDB4NDAsCisJMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHg2ZiwgMHg4MiwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDA0LCAweDgxLCAweDAwLCAweDU4LAorCTB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsCisJMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwKKwkweGY0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDYsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDQ4LCAweDAwLCAweDAwLCAweDQwLAorCTB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmYywgMHg4MSwgMHgwMCwgMHg0YSwgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OTUsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ODUsIDB4ODIsIDB4YTIsIDB4NDEsCisJMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgyYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDE2LCAweDAwLCAweDQwLCAweGExLCAweDliLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLAorCTB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NzUsIDB4ODAsIDB4MDAsIDB4YmIsIDB4ODUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhhNywgMHg4MiwgMHgyMiwgMHg0NSwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGUwLCAweDE1LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MWEsIDB4MDAsIDB4MDAsIDB4YTIsIDB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmMCwgMHgxNSwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg5NiwgMHg4MiwgMHhhOCwgMHhiYiwgMHhlMSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDk5LCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLAorCTB4OTgsIDB4ODIsIDB4YTIsIDB4ZjIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZTEsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg5ZiwgMHg4MiwgMHhhMiwgMHg0MCwgMHg5NywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDI4LCAweDAwLCAweDAwLCAweDQwLCAweGIzLCAweDliLCAweDAxLCAweDAwLCAweGEwLCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHgxNSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGE3LCAweDgyLCAweGEyLCAweGZhLCAweGI0LCAweDZmLCAweDAwLCAweDAwLAorCTB4ZmMsIDB4ODEsIDB4MDAsIDB4NDIsIDB4YjMsIDB4NDMsIDB4MDEsIDB4MDAsIDB4YTcsIDB4ODIsIDB4YTIsIDB4ZmEsCisJMHhiNCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MiwgMHhiMywgMHg0MywgMHgwMSwgMHgwMCwKKwkweGFhLCAweDgyLCAweDIyLCAweGZhLCAweGI0LCAweDZmLCAweDAwLCAweDAwLCAweGE3LCAweDgyLCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4NjksIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHg4MSwgMHgwMCwgMHg1OCwgMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDM1LCAweDgyLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLAorCTB4ZjYsIDB4MTUsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NWMsIDB4MTYsIDB4MDAsIDB4NDAsCisJMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHhmYSwgMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweGI0LCAweGIzLCAweDAxLCAweDAwLAorCTB4YjgsIDB4ODIsIDB4YTIsIDB4NDAsIDB4OGYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4MTUsIDB4MjAsIDB4MjAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiZCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGRiLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGJkLCAweDgyLCAweDIyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YmEsIDB4ODIsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwNCwgMHg4MSwgMHgwMCwgMHg1OCwKKwkweDY5LCAweDkzLCAweDAwLCAweDAwLCAweDM0LCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MWUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjMiwgMHg4MiwgMHgyMiwgMHg1MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDkxLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZjYsIDB4MTUsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhmZiwgMHg4MSwgMHgwMCwgMHhmMiwgMHhiNCwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGY4LCAweDE1LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODEsIDB4MDAsIDB4ZjIsIDB4YjQsIDB4MzMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYSwgMHgxNSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDgxLCAweDAwLCAweGYyLCAweGI0LCAweDMzLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4MTUsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0YSwKKwkweGI0LCAweDhiLCAweDAxLCAweDAwLCAweGZmLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NGEsCisJMHhiNCwgMHhmNywgMHgwMSwgMHgwMCwgMHhmZiwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDM0LCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFlLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHg4MiwgMHgyMiwgMHg1MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhkOSwgMHg4MiwgMHgwMCwgMHg1MCwKKwkweGI1LCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGI1LCAweGIzLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDMxLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDMyLCAweDMzLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzQsIDB4MzUsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzNiwgMHgzNywgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgzOCwgMHgzOSwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDQxLCAweDQyLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4NDMsIDB4NDQsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NDUsIDB4NDYsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg0NywgMHg0OCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDQ5LCAweDRhLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDJjLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhlNywgMHg4MiwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxNiwgMHgyZSwgMHgwNiwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGE5LCAweDAxLCAweDAwLAorCTB4ZWEsIDB4ODIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHhmNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGVkLCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDYyLCAweDAwLCAweDAwLCAweDQwLAorCTB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxNiwgMHgyZCwgMHgwNiwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGE5LCAweDAxLCAweDAwLAorCTB4ZjMsIDB4ODIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDcyLCAweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDczLAorCTB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1NCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDk1LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODIsIDB4MjIsIDB4NzAsIDB4YjUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDY3LCAweDAwLCAweGE2LCAweGUwLCAweGIyLCAweDAxLCAweDAwLCAweDAxLCAweDIzLCAweDAwLCAweDcwLAorCTB4ZTEsIDB4OWEsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4ZWYsIDB4MDAsIDB4YTYsIDB4ZTIsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg4OSwgMHhhYiwgMHgwMCwgMHg3MSwgMHhlMywgMHg5YSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg5OCwgMHgwMCwgMHhhNiwKKwkweGU0LCAweGIyLCAweDAxLCAweDAwLCAweGZlLCAweGRjLCAweDAwLCAweDcyLCAweGU1LCAweDlhLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MTAsIDB4MDAsIDB4YTYsIDB4ZTYsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NzYsIDB4NTQsIDB4MDAsIDB4NzMsCisJMHhlNywgMHg5YSwgMHgwMSwgMHgwMCwgMHhkMiwgMHhjMywgMHgwMCwgMHhhNiwgMHhlOCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGYwLCAweGUxLCAweDAwLCAweDc0LCAweGU5LCAweDlhLCAweDAxLCAweDAwLCAweDgwLCAweDE2LCAweDAwLCAweDRhLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDBkLCAweDgzLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4MTYsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZmMsIDB4MTYsIDB4MmEsIDB4NDcsCisJMHhlNywgMHhiNSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0YSwgMHhlOCwgMHhlNSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTYsIDB4M2QsIDB4NDYsIDB4OGQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDQwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGEzLCAweGMxLCAweDAxLCAweDAwLAorCTB4MTYsIDB4ODMsIDB4YTIsIDB4NDEsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhlYiwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHhlZCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDcyLCAweGVmLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDczLAorCTB4ZjEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgwLCAweDg4LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLCAweGEyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MzMsIDB4ODMsIDB4YTAsIDB4NTAsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDUwLCAweDAzLCAweDAwLCAweDRjLCAweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywKKwkweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsCisJMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywgMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4YTQsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4OCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDQxLCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQwLCAweDk0LCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ODksIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MWIsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHg4NSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDNkLCAweDgzLCAweGEzLCAweDUzLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhiLCAweGE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDhiLCAweDg0LCAweDAxLCAweDAwLAorCTB4NGMsIDB4ODMsIDB4MDAsIDB4NDUsIDB4ODgsIDB4OTQsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg0MiwgMHg4MywgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4ODksIDB4YTQsIDB4MDEsIDB4MDAsIDB4NGMsIDB4ODMsIDB4MDAsIDB4NzgsIDB4ODksIDB4YTQsIDB4MDAsIDB4MDAsCisJMHgzYiwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHgzZiwgMHg4MywgMHhhYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzYsCisJMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4YiwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDg4LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4OGIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4OGIsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHg0YywgMHg4MywgMHgwMCwgMHg0NSwgMHg4OCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc5LCAweDg1LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODQsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NTMsIDB4ODMsIDB4YTMsIDB4NTMsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHg4MiwgMHg1YSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDc5LCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDYwLCAweDgzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHg1OCwgMHg4MywgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkOSwgMHg2ZSwgMHgwMCwgMHhhNiwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGExLCAweGViLCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLAorCTB4NjAsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4M2IsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1ZCwgMHg4MywgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDhmLCAweDAwLCAweGE2LCAweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGRjLCAweGJjLCAweDAwLCAweDQyLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHhjYSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkNiwgMHhjMSwgMHgwMCwgMHg0MiwKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDYwLCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsCisJMHhmMSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4OSwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweDc2LCAweGVmLCAweGY2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZWUsIDB4OTYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ZWQsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhlYSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDRmLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4MWYsIDB4ODMsIDB4MmEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHhlMSwgMHhjMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHhlMywgMHhjMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc3LCAweGU1LCAweGMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LAorCTB4ZTcsIDB4YzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzksIDB4ZTksIDB4YzIsIDB4MDEsIDB4MDAsCisJMHgxMywgMHg4MywgMHg4MSwgMHg0MSwgMHg4ZCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDlkLCAweDgzLCAweGEyLCAweDRiLCAweGI3LCAweDZmLCAweDAwLCAweDAwLAorCTB4OWQsIDB4ODMsIDB4YTIsIDB4NDEsIDB4MmYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDM1LCAweDgyLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweDljLCAweDgzLCAweDIyLCAweDQwLAorCTB4OGYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhkYiwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDljLCAweDgzLCAweGEyLCAweDQwLCAweDk3LCAweDZjLCAweDAwLCAweDAwLAorCTB4NWUsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4N2MsIDB4MTYsIDB4MjAsIDB4ZjYsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgzMSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDgwLCAweDgzLCAweDIyLCAweDRmLCAweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ODIsIDB4ODMsIDB4MjIsIDB4NDAsIDB4OGYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg4NiwgMHg4MywgMHgwMCwgMHg1NCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwgMHg4NCwgMHg4MywgMHgyMiwgMHg0MiwKKwkweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4ODYsIDB4ODMsIDB4MjIsIDB4NDEsIDB4OGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTMsCisJMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHg5YSwgMHg4MywgMHgyMiwgMHg1MSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDM0LCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg5NSwgMHg4MywgMHhhMiwgMHg0MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZjLCAweDgxLCAweDAwLCAweDQ4LCAweDk2LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZmLCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwgMHhmZiwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4ZmMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OTksIDB4ODMsIDB4MjIsIDB4NDAsCisJMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg5ZCwgMHg4MywgMHgwMCwgMHg1NCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUxLCAweGZkLCAweDgzLCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweGZlLAorCTB4N2YsIDB4ZDksIDB4MDEsIDB4MDAsIDB4OWQsIDB4ODMsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGI2LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4NDEsIDB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4YTgsIDB4ODMsIDB4MjIsIDB4NDQsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhiMCwgMHg4MywgMHgyMiwgMHg0OCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGFhLCAweDgzLCAweDIyLCAweDRjLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGI0LCAweDgzLCAweDIyLCAweDUwLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YjUsIDB4ODMsIDB4MjIsIDB4NTQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhiNywgMHg4MywgMHgyMiwgMHg1OCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhiYywgMHg4MywgMHgyMiwgMHg1YywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDksIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsCisJMHgwMSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGYzLCAweDgzLCAweDAxLCAweDAwLCAweGFlLCAweDgzLCAweGEyLCAweDQyLAorCTB4MDUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg2YSwgMHg4NCwgMHgyMiwgMHhjYSwgMHgwNywgMHgxNCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHg0NSwKKwkweGYzLCAweDkzLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDIwLCAweDQzLCAweDk1LCAweDZmLCAweDAwLCAweDAwLAorCTB4NmEsIDB4ODQsIDB4ODAsIDB4Y2EsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MjIsIDB4MDEsCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhjYiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwKKwkweDVjLCAweDAxLCAweDAwLCAweGJjLCAweGFiLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLAorCTB4YjEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhjYSwgMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHg2YSwgMHg4NCwgMHhhMiwgMHg0MCwKKwkweDc0LCAweDdkLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDIwLCAweDQwLCAweDYwLCAweDk5LCAweDAxLCAweDAwLAorCTB4YjksIDB4ODMsIDB4YTgsIDB4YjEsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4NCwgMHgwMCwgMHhjYSwgMHg3OSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4Y2IsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHg4MywgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4Y2EsIDB4ODMsIDB4OTEsIDB4ODIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGEsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiNiwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweGM4LCAweDgzLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGNhLCAweDgzLCAweDU2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwKKwkweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAxLCAweDAwLAorCTB4ZjMsIDB4OWYsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhjZCwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQ2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGNmLCAweDgzLCAweGEyLCAweDQxLAorCTB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhkYSwgMHg4MywgMHg5MSwgMHg4MSwKKwkweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4YjYsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4ODMsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkYSwgMHg4MywgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI2LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhmMywgMHg5ZiwgMHgwMCwgMHg0MSwKKwkweDhiLCAweGIzLCAweDAwLCAweDAwLCAweGIxLCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLAorCTB4YzQsIDB4MTQsIDB4MmYsIDB4NDAsIDB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg1OCwgMHgxNSwgMHgyZCwgMHg0MCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDJkLCAweGYwLCAweDg4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTYsIDB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhmOCwgMHgwMCwgMHg0OCwgMHg5MCwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDkzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDhhLCAweGIwLCAweDAxLCAweDAwLAorCTB4NmEsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlYywgMHg4MywgMHgyMiwgMHg0MCwgMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGYwLCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQ3LCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OGQsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhmNSwgMHg4MywgMHgyMiwgMHg1ZiwgMHg4ZCwgMHg2YywgMHgwMCwgMHgwMCwgMHhlNywgMHg4MywgMHhhMiwgMHg0MSwKKwkweDkzLCAweDUwLCAweDAwLCAweDAwLCAweGU1LCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4MDcsIDB4MDAsIDB4NDcsIDB4ODQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmNSwgMHg5ZiwgMHgwMCwgMHg0NywgMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAyLCAweDAwLCAweDQ3LCAweDhlLCAweGM4LCAweDAxLCAweDAwLCAweGYwLCAweDgzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NTAsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmYiwgMHg4MywgMHgyMCwgMHgxOCwgMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDg2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsIDB4NTUsIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZmUsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLAorCTB4NTUsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NTAsIDB4ZDMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0ZiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDRlLCAweGQzLCAweDAxLCAweDAwLCAweDVlLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NmMsIDB4MDMsIDB4MDAsIDB4NDIsIDB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwNywgMHg4NCwgMHgyMiwgMHhhNywgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDQ5LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHg5NCwgMHgyZSwgMHg0MywgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDA5LCAweDg0LCAweGEyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLAorCTB4NTAsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWMsIDB4OTQsIDB4MmUsIDB4NDMsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBkLCAweDg0LCAweGEyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDg1LCAweDk4LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQwLCAweDQwLCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTksIDB4NDEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg0MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg0MCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEzLCAweDQxLAorCTB4ODEsIDB4NmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YTMsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgxMywgMHg4NCwgMHgwMCwgMHg1MCwgMHg4NSwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHg4NCwgMHhhMiwgMHg0MSwKKwkweDAxLCAweDdkLCAweDAwLCAweDAwLCAweDIxLCAweDg0LCAweDIyLCAweDU4LCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4NzgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MWMsIDB4ODQsIDB4YTgsIDB4YjEsCisJMHg5YywgMHgzMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgzOCwgMHg0NSwgMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDBlLCAweDEwLCAweGM5LCAweDAwLCAweDAwLCAweDIxLCAweDg0LCAweDMzLCAweGM0LAorCTB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ODQsIDB4YTEsIDB4YWQsIDB4OWQsIDB4MjAsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgxMywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0ZSwKKwkweDVhLCAweDgzLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDM4LCAweDQ1LCAweDlkLCAweGUwLCAweDAxLCAweDAwLAorCTB4MmMsIDB4ODQsIDB4MjIsIDB4YWIsIDB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmEsIDB4ODQsIDB4YTIsIDB4NDAsCisJMHgwMSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgyYywgMHg4NCwgMHgyMiwgMHg1ZiwgMHg1NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDIxLCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJjLCAweDg0LCAweDIyLCAweDVlLAorCTB4NTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ODQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzMSwgMHg4NCwgMHgyMiwgMHg1NCwgMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDJjLCAweDg0LCAweGE4LCAweGIxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLAorCTB4ZmEsIDB4ODUsIDB4YTIsIDB4NWYsIDB4MDEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4NWMsIDB4ODksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMywgMHg4NCwgMHhhMiwgMHg1ZiwgMHg1OSwgMHgyNywgMHgwMCwgMHgwMCwKKwkweDM1LCAweDg0LCAweGEyLCAweDVjLCAweDczLCAweDdkLCAweDAwLCAweDAwLCAweDNjLCAweDg0LCAweGEyLCAweDVlLAorCTB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NDYsIDB4ODQsIDB4MjIsIDB4NWMsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg0NywgMHg4NCwgMHgzNywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDM2LCAweDg0LCAweGE4LCAweGIxLCAweDM2LCAweDMwLCAweDAwLCAweDAwLAorCTB4N2MsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzgsIDB4ODQsIDB4YTgsIDB4YjEsCisJMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDI5LCAweDg2LCAweDE3LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDQ3LCAweDg0LCAweDM0LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4N2UsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzZCwgMHg4NCwgMHhhOCwgMHhiMSwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NCwgMHg1MiwgMHgyMSwKKwkweDEzLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDQxLCAweDJmLCAweGMzLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4M2YsIDB4MDAsIDB4MDksIDB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHgwMSwgMHhmMCwgMHgwMSwgMHgwMCwgMHg4NywgMHg4NCwgMHgwMCwgMHgzNCwgMHgxMywgMHg4NCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDNmLCAweDE0LCAweDA5LCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweGU1LCAweDg0LCAweDAwLCAweDQzLAorCTB4MDEsIDB4ZjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg0NywgMHg4NCwgMHgzMywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgxMywgMHg0ZSwKKwkweDVhLCAweDkzLCAweDAwLCAweDAwLCAweGU2LCAweDg5LCAweGEyLCAweDQ4LCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4NGUsIDB4ODQsIDB4MjIsIDB4NTksIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NzksIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg0YSwgMHg4NCwgMHgyOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDRiLCAweDg0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDUyLCAweDg0LCAweDIxLCAweGFjLAorCTB4OWMsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MWYsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMCwgMHg1ZiwgMHg5ZCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDU4LCAweDkxLCAweDAxLCAweDAwLCAweDU2LCAweDg0LCAweDIyLCAweDVhLCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4N2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTMsIDB4ODQsIDB4YTgsIDB4YjEsCisJMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhjZiwgMHgxMSwgMHhjOSwgMHgwMCwgMHgwMCwKKwkweDVjLCAweDg0LCAweGEyLCAweDQwLCAweDkzLCAweDdmLCAweDAwLCAweDAwLCAweDVjLCAweDg0LCAweDIyLCAweDQ0LAorCTB4OTMsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NTgsIDB4ODQsIDB4NDIsIDB4YTUsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg1YiwgMHg4NCwgMHhhMiwgMHg0MCwgMHg5MywgMHg3ZiwgMHgwMCwgMHgwMCwgMHg3MSwgMHg4NCwgMHgxYSwgMHg0MCwKKwkweDkzLCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4OWEsIDB4ODAsIDB4YTIsIDB4NDAsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4OWIsIDB4ODksIDB4MjIsIDB4NDQsCisJMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg5MiwgMHg4OSwgMHgyMiwgMHg0MCwgMHg2NSwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweGEwLCAweDg5LCAweGEyLCAweDViLCAweDczLCAweDdkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQ5LAorCTB4MzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODQsIDB4MjIsIDB4NDgsIDB4MzMsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHgwMSwgMHgwMCwgMHg5OSwgMHg4MCwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDgxLCAweGUwLCAweDAxLCAweDAwLCAweGE4LCAweDk4LCAweDJmLCAweDQwLCAweDMzLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODQsIDB4MjIsIDB4NDAsCisJMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg2OSwgMHg4NCwgMHgyMiwgMHg0MCwgMHg4MSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweGVmLCAweDg5LCAweDFmLCAweGE1LCAweDgyLCAweDZmLCAweDAwLCAweDAwLCAweDQ5LCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4NDAsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NmMsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NmYsIDB4ODQsIDB4MzMsIDB4NDAsCisJMHgxZiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgxMywgMHg0ZSwgMHg1YSwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDczLCAweDg0LCAweGEwLCAweGNlLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDg1LCAweDg0LCAweGEwLCAweGNkLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTUsIDB4OWMsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4NSwgMHg4NCwgMHgyMiwgMHhiNSwKKwkweDgxLCAweDE0LCAweDAwLCAweDAwLCAweDgwLCAweDE1LCAweDJmLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4NzcsIDB4ODQsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4YjQsCisJMHg2NSwgMHg5NywgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNSwgMHgyZSwgMHg0MCwgMHg2OSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFhLCAweDQ0LCAweDkzLCAweDgzLCAweDAxLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweGEyLAorCTB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODQsIDB4YTgsIDB4YTEsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHg1YywgMHg4NCwgMHgwMCwgMHg4OCwgMHg5ZSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDVjLCAweDg0LCAweGEyLCAweDQxLCAweDY3LCAweDZmLCAweDAwLCAweDAwLCAweDVjLCAweDg0LCAweDAwLCAweDZmLAorCTB4ZGIsIDB4OTEsIDB4MDAsIDB4MDAsIDB4ODUsIDB4ODQsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1YywgMHg4NCwgMHgxYSwgMHg0MCwgMHg5MywgMHg4MywgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgwMCwgMHgwOSwKKwkweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDNmLCAweDAwLCAweDAwLCAweGYzLCAweDBjLCAweDg4LCAweDAxLCAweDAwLAorCTB4OTAsIDB4ODQsIDB4YTYsIDB4NDIsIDB4MTMsIDB4NjAsIDB4MDAsIDB4MDAsIDB4M2YsIDB4OTcsIDB4MDAsIDB4OTUsCisJMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg4NCwgMHg0NSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDc1LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDhjLCAweDg0LCAweGE4LCAweGIxLAorCTB4MGMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4OTcsIDB4MWQsIDB4MTAsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg5MSwgMHg4NCwgMHgwMCwgMHg1OCwgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgzOCwgMHg5NywgMHgwMCwgMHg5NSwKKwkweDAzLCAweDMwLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgyZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlZSwgMHgwNywgMHgwMCwgMHg0MCwgMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDg0LCAweDIzLCAweDRiLCAweGU0LCAweDZkLCAweDAwLCAweDAwLCAweDk4LCAweDg0LCAweDIyLCAweDRiLAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgyZiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHg5YiwgMHg4NCwgMHg4MywgMHgxNywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDI2LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4OWQsIDB4ODQsIDB4ODUsIDB4MTcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHg0NywgMHhjMSwgMHgwMSwgMHgwMCwgMHhhMiwgMHg4NCwgMHgyMiwgMHg1NSwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDQzLCAweGQxLCAweDAxLCAweDAwLCAweDBmLCAweDAwLCAweDAwLCAweGZhLAorCTB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhhMywgMHg4NCwgMHgwMCwgMHg0YiwgMHg0NCwgMHhjMSwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHhhMiwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweGY2LCAweDAyLCAweGNjLCAweDAxLCAweDAwLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHhmMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLAorCTB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MjgsIDB4M2MsIDB4NDYsIDB4MGQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHg0NCwgMHg5NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg4NCwgMHhhMiwgMHhmOCwKKwkweDBlLCAweDMwLCAweDAwLCAweDAwLCAweGJmLCAweDg0LCAweDIyLCAweDQxLCAweDk1LCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4YWIsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhhYywgMHg4NCwgMHhhMiwgMHhmOCwgMHgxNiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGFjLCAweDg0LCAweGEyLCAweGY4LCAweDEwLCAweDZjLCAweDAwLCAweDAwLCAweGFjLCAweDg0LCAweGEyLCAweGYwLAorCTB4MWEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YmQsIDB4ODQsIDB4MjIsIDB4NTgsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwgMHgxMywgMHhmMCwgMHgwMSwgMHgwMCwgMHhiNCwgMHg4NCwgMHg0NywgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGI4LCAweDg0LCAweGEyLCAweGYzLCAweDc0LCAweDA2LCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ZTYsIDB4OTUsIDB4MDEsIDB4MDAsIDB4YmQsIDB4ODQsIDB4MWYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNmLCAweDAwLCAweDFmLCAweGYzLCAweDBjLCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiYiwgMHg4NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiZCwgMHg4NCwgMHg0NywgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGM1LCAweDg0LCAweDFmLCAweDQxLCAweDJkLCAweGMzLCAweDAwLCAweDAwLAorCTB4YzMsIDB4ODQsIDB4MjIsIDB4NTgsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGMxLCAweDg0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGMzLCAweDg0LCAweDQ3LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4ODQsIDB4MWYsIDB4NDEsIDB4MmQsIDB4YzMsIDB4MDAsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwYiwgMHg5NiwgMHgwMCwgMHgwNywKKwkweDE2LCAweDMwLCAweDAxLCAweDAwLCAweGQzLCAweDg0LCAweDIyLCAweDQxLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4Y2IsIDB4ODQsIDB4MjIsIDB4NDIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHg4NCwgMHgyMiwgMHg1ZiwgMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGZmLCAweDk2LCAweDAwLCAweDVmLCAweDAxLCAweDEwLCAweDAxLCAweDAwLCAweGQxLCAweDg0LCAweDIyLCAweDQwLAorCTB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3NCwgMHg5NiwgMHgwMCwgMHg1MiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDk2LCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGIsIDB4ODQsIDB4YTIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg4NiwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGRiLCAweDg0LCAweDIyLCAweDIwLCAweDg1LCAweDZjLCAweDAwLCAweDAwLCAweGQ4LCAweDg0LCAweDljLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2NiwgMHg5NiwgMHgwMCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4NSwgMHg5OCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2UsIDB4OTksIDB4MDAsIDB4MDcsIDB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkZSwgMHg4NCwgMHg4MiwgMHhmMCwgMHgxOCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDY2LCAweDhiLCAweDAwLCAweDQ1LCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDI4LCAweDIwLCAweDAwLCAweGE2LAorCTB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZTIsIDB4ODQsIDB4MjIsIDB4MTcsIDB4OTYsIDB4MDQsIDB4MDAsIDB4MDAsCisJMHhmNSwgMHg5NywgMHgwMCwgMHg0YiwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg2NiwgMHg4YiwgMHgwMCwgMHg0YiwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDBiLCAweDk3LCAweDAwLCAweDAzLCAweDQ4LCAweDMxLCAweDAxLCAweDAwLAorCTB4ZTcsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDUwLCAweDAzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlOSwgMHg4NCwgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgyZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDAsIDB4YTYsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhlZSwgMHgwNywgMHgyZSwgMHg0NywgMHg5NywgMHg5MCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg4NCwgMHgyMiwgMHgxNywKKwkweDk2LCAweDA0LCAweDAwLCAweDAwLCAweGZkLCAweDg0LCAweDIyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4ZmQsIDB4ODQsIDB4MjMsIDB4YTIsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NzQsIDB4OTYsIDB4MDAsIDB4NTIsCisJMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDBjLCAweDAwLCAweDJkLCAweDAwLCAweDEyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHg3YiwgMHg5NiwgMHgwMCwgMHg0YiwgMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwKKwkweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MWMsIDB4ODUsIDB4MDAsIDB4NWMsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4ODUsIDB4MjIsIDB4NDMsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDBhLCAweDg1LCAweDIyLCAweDVmLCAweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDA2LCAweDg1LCAweDQ1LCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgxZCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweDBmLCAweDAwLCAweGY2LAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MGUsIDB4ODUsIDB4YTIsIDB4YTYsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgxMSwgMHg4NSwgMHgwMCwgMHhmMiwgMHgzYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhmNywgMHg4NSwgMHhhMiwgMHg0YiwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MTUsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ODUsIDB4MjIsIDB4NGEsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxYywgMHg4NSwgMHgyMiwgMHg0OCwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDBhLCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDNmLCAweDAwLCAweDAwLCAweGYyLAorCTB4ODYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MWYsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODQsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHg0MywgMHg4MCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5NCwgMHgzZCwgMHg0MiwKKwkweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDFjLCAweDg1LCAweGEyLCAweDQyLCAweGUwLCAweDdkLCAweDAwLCAweDAwLAorCTB4ZjcsIDB4ODUsIDB4YTIsIDB4NGIsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxNSwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDFjLCAweDg1LCAweDQ3LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEzLAorCTB4MDksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4NDEsIDB4NDcsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHg4NSwgMHgyMiwgMHhhMSwgMHgwOSwgMHg2YywgMHgwMCwgMHgwMCwgMHg2YiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDFmLCAweDg1LCAweDAwLCAweDAzLCAweDQ4LCAweGIxLCAweDAwLCAweDAwLAorCTB4NWIsIDB4ODUsIDB4YTMsIDB4OTIsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg0MywgMHhjMywgMHgwMSwgMHgwMCwKKwkweDE1LCAweDhhLCAweDIyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDI4LCAweDg1LCAweDIyLCAweDVjLAorCTB4MTcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MjksIDB4ODUsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDJkLCAweDg1LCAweGEyLCAweDQzLCAweDJmLCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjgsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NDksIDB4ODUsIDB4MDAsIDB4NWUsCisJMHgxNywgMHg5MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4YywgMHhjYywgMHgwMSwgMHgwMCwKKwkweGY4LCAweDk3LCAweDAwLCAweDRjLCAweDAzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDQ2LAorCTB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwYywgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDg1LCAweGE4LCAweDU0LCAweDE3LCAweDEwLCAweDAwLCAweDAwLCAweDQ5LCAweDg1LCAweDAwLCAweDVlLAorCTB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHg0OCwgMHg4NSwgMHgyMiwgMHg0MywgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDhjLCAweGNjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDAzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTksIDB4OTgsIDB4MDAsIDB4NDMsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NDYsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDAwLCAweDAxLCAweGYwLCAweGNkLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDA5LAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NDksIDB4ODUsIDB4MjgsIDB4NTQsIDB4MTcsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxOSwgMHg5OCwgMHgwMCwgMHg0MywgMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDRiLCAweDg1LCAweDIyLCAweDUwLCAweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU2LAorCTB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MTcsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg0ZSwgMHg4NSwgMHhhMiwgMHg0MSwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwKKwkweDE3LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NGYsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU2LCAweDg1LCAweDIyLCAweDQzLAorCTB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMSwgMHg5NywgMHgwMCwgMHg1ZSwKKwkweDA1LCAweDEwLCAweDAxLCAweDAwLCAweDU5LCAweDg1LCAweGEyLCAweDVmLCAweDJmLCAweDdjLCAweDAwLCAweDAwLAorCTB4YjksIDB4OTQsIDB4MDAsIDB4MDEsIDB4MzgsIDB4NDMsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxNSwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDVkLCAweDg1LCAweGEyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGY0LCAweDg1LCAweDAwLCAweDQxLAorCTB4NDMsIDB4YzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1ZiwgMHg4NSwgMHgzNSwgMHgwMSwKKwkweDg2LCAweDMwLCAweDAwLCAweDAwLCAweDZkLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4NjYsIDB4ODUsIDB4MjgsIDB4YjEsIDB4MzAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4ODUsIDB4MjIsIDB4NGQsCisJMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4NSwgMHhhMiwgMHg0MCwgMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDQzLCAweGMzLCAweDAxLCAweDAwLCAweGYzLCAweDg1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NmQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg2NiwgMHg4NSwgMHhhOCwgMHhiMSwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg2ZiwgMHg4NSwgMHhhMiwgMHg0MCwKKwkweDExLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDQzLCAweGMzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHgyYywgMHhiMCwgMHgwMSwgMHgwMCwgMHhkZSwgMHgwNywgMHgwMCwgMHg0MywgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDg1LCAweGFhLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDc0LCAweDg1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4M2UsIDB4NDMsIDB4MjcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDI3LCAweGMwLCAweDAxLCAweDAwLAorCTB4NjAsIDB4ODUsIDB4YTMsIDB4MGIsIDB4ODcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4NDAsCisJMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDJkLCAweDQwLAorCTB4MzksIDB4YjAsIDB4MDEsIDB4MDAsIDB4N2MsIDB4ODUsIDB4YTIsIDB4NDAsIDB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHgxMiwgMHhjOCwgMHgwMSwgMHgwMCwgMHhkZSwgMHgwNywgMHgwMCwgMHg0MCwKKwkweDI1LCAweDk4LCAweDAxLCAweDAwLCAweDdmLCAweDg1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgzMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgyNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDE0LCAweDAwLCAweDIwLCAweDAxLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MzcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4NCwgMHg4NSwgMHgyMywgMHgwMSwgMHgzNiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDM2LCAweGIwLCAweDAxLCAweDAwLCAweDhmLCAweDg1LCAweDgyLCAweDQxLCAweDIzLCAweDQwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4OGIsIDB4ODUsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDg4LCAweDg1LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYiwgMHg5NSwgMHgwMCwgMHg0MywgMHgyMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTksCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg4NSwgMHgyMiwgMHg0NSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxOSwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDk1LCAweDg1LCAweGE4LCAweDE1LCAweGUwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgzMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHgyNSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDJkLCAweDRjLCAweDEzLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4MzcsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg4NCwgMHg4NSwgMHgwMCwgMHg0NSwgMHgxZiwgMHg4MCwgMHgwMCwgMHgwMCwgMHhhMCwgMHg4NSwgMHhhMywgMHgxMiwKKwkweDM2LCAweDZjLCAweDAwLCAweDAwLCAweGExLCAweDg1LCAweDY4LCAweDFiLCAweDI4LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjgsIDB4MTIsIDB4MjgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDE5LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YTQsIDB4ODUsIDB4YTgsIDB4MTUsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhjYSwgMHg4NSwgMHgyMiwgMHgxNCwgMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDMzLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDI0LCAweGQwLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MmQsIDB4MTQsIDB4MTIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YzMsIDB4ODUsIDB4YTIsIDB4MTQsCisJMHgzNiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhiNCwgMHg4NSwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGIyLCAweDg1LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg4NSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4NWMsCisJMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDJiLCAweDgwLCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4MzcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YjksIDB4ODUsIDB4MjMsIDB4MDEsIDB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgzNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjNCwgMHg4NSwgMHgyMiwgMHgxYiwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweDE1LCAweGUwLCAweDhkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHg4NSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjNCwgMHg4NSwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDJhLCAweGMwLCAweDAxLCAweDAwLAorCTB4ODQsIDB4ODUsIDB4YTIsIDB4NDAsIDB4MjUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgzOSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgzZCwgMHg0MywgMHgzOSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDI1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODQsIDB4ODUsIDB4MDAsIDB4ZjAsIDB4MzAsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhkMCwgMHg4NSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGViLCAweDk1LCAweDAwLCAweDQwLCAweDJiLCAweDMwLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDJlLCAweDAzLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4ODUsIDB4MjIsIDB4NTAsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NiwgMHgxNywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgxNywKKwkweDk4LCAweDg4LCAweDAxLCAweDAwLCAweGQ3LCAweDg1LCAweGEyLCAweDQxLCAweDk5LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZGEsIDB4ODUsIDB4MjIsIDB4NDMsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgxNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDE2LCAweDAwLCAweDIwLCAweDFkLCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweGRjLCAweDg1LCAweGEzLCAweDQwLAorCTB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZGUsIDB4ODUsIDB4NjAsIDB4NWYsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4NCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgxMywKKwkweDE2LCAweDk0LCAweDAxLCAweDAwLCAweGExLCAweDk3LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLAorCTB4MTUsIDB4OGEsIDB4YTIsIDB4NWYsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDk0LCAweDAwLCAweDAxLCAweDM4LCAweDQzLCAweDAxLCAweDAwLCAweDE1LCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGU2LCAweDg1LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmMywgMHg4NSwgMHgyMiwgMHgxMywgMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDQwLCAweDAwLCAweDNkLCAweDQzLCAweDgzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MmMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZSwgMHg4NSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZjAsIDB4ODUsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWEsIDB4ODUsIDB4MDAsIDB4NDEsCisJMHg4MywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgyLCAweDAwLCAweGE2LCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGEwLCAweDk4LCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZTMsIDB4ODksIDB4MDAsIDB4NDEsIDB4ODksIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg3NCwgMHg5NiwgMHgwMCwgMHg1MiwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg3YiwgMHg5NiwgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDE1LCAweDhhLCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MDEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgwZSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgzZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDA3LCAweDFhLCAweGY0LCAweDAxLCAweDAwLCAweDBiLCAweDk2LCAweDAwLCAweDA3LAorCTB4MTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODYsIDB4MjIsIDB4NDEsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4NiwgMHgyMiwgMHg0MiwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDg2LCAweDIyLCAweDVmLCAweDBmLCAweDdjLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4ODYsIDB4YTIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg4NiwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDBkLCAweDg2LCAweDIyLCAweDIwLCAweDg1LCAweDZjLCAweDAwLCAweDAwLCAweDBhLCAweDg2LCAweDljLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2NiwgMHg5NiwgMHgwMCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4NSwgMHg5OCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2UsIDB4OTksIDB4MDAsIDB4MDcsIDB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDEzLCAweDg2LCAweDIyLCAweDNhLCAweDAxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NDAsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDE3LCAweDg2LCAweGEyLCAweDQwLCAweGU3LCAweDZkLCAweDAwLCAweDAwLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHgwMSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDM4LCAweDk3LCAweDAwLCAweDk1LCAweDAzLCAweDMwLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgyMCwgMHgwMCwgMHhhNiwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDg2LCAweDIyLCAweDE3LCAweDk2LCAweDA0LCAweDAwLCAweDAwLAorCTB4ZjUsIDB4OTcsIDB4MDAsIDB4NGIsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NGMsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4NiwgMHg4MywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQzLCAweGMxLCAweDAxLCAweDAwLCAweDI0LCAweDg2LCAweDg1LCAweDE3LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwMiwgMHhjYywgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHhhMSwKKwkweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDBiLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZTcsIDB4OTQsIDB4MDAsIDB4NDEsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyZSwgMHg4NiwgMHg0NiwgMHg0NywKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MmYsIDB4ODYsIDB4YTgsIDB4MWIsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MWUsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDU0LCAweDg2LCAweDAxLCAweGZiLAorCTB4MDgsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4ODYsIDB4ODcsIDB4ZmIsIDB4MjIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmYSwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDE0LCAweGIwLCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDA3LCAweDFhLCAweGY0LCAweDAxLCAweDAwLAorCTB4MGIsIDB4OTYsIDB4MDAsIDB4MDcsIDB4MTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NGEsIDB4ODYsIDB4MjIsIDB4NDEsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgzZSwgMHg4NiwgMHgyMiwgMHg0MiwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDQ5LCAweDg2LCAweDIyLCAweDVmLAorCTB4MGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4MDQsIDB4N2UsIDB4ODksIDB4MDEsIDB4MDAsCisJMHg0MiwgMHg4NiwgMHhhNiwgMHg1ZiwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDA1LCAweDMwLCAweDAxLCAweDAwLCAweDQ3LCAweDg2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MTMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweGVhLCAweDk2LCAweDAwLCAweDQwLAorCTB4MDUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHg4OSwgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg4NiwgMHhhMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDg2LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTIsIDB4ODYsIDB4MjIsIDB4MjAsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NGYsIDB4ODYsIDB4OWMsIDB4MGYsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDY2LCAweDk2LCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDg1LCAweDk4LCAweDAwLCAweDQyLAorCTB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjZSwgMHg5OSwgMHgwMCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE4LCAweGIwLCAweDAxLCAweDAwLAorCTB4NTYsIDB4ODYsIDB4MjEsIDB4MDQsIDB4ODAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4ODYsIDB4MDAsIDB4NDAsCisJMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHhhOCwgMHg4YSwgMHgwMCwgMHg0YiwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDc2LCAweDg2LCAweDAwLCAweDQzLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDdhLCAweDg2LCAweDAwLCAweGZiLAorCTB4MjIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OGEsIDB4MDAsIDB4NDEsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2NiwgMHg4YiwgMHgwMCwgMHg0ZSwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3MiwgMHg4NiwgMHgwMCwgMHg1YSwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDVmLCAweDg2LCAweDAwLCAweDQ3LCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4YTgsIDB4OGEsIDB4MDAsIDB4NTMsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OGEsIDB4MDAsIDB4NTYsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzMiwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDY2LCAweDhiLCAweGEwLCAweDBhLCAweGU0LCAweDZkLCAweDAwLCAweDAwLCAweDY1LCAweDg2LCAweGEyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ODYsIDB4MjIsIDB4MGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg2NiwgMHg4YiwgMHgwMCwgMHg1MywgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4YiwgMHgwMCwgMHg1NCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDZlLCAweDg2LCAweDIyLCAweDBhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4NjgsIDB4ODYsIDB4YTIsIDB4MGEsIDB4ZTQsIDB4NmQsIDB4MDAsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NWQsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDgwLCAweGQwLCAweDAxLCAweDAwLCAweDZjLCAweDg2LCAweGEwLCAweDkxLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NjYsIDB4OGIsIDB4MDAsIDB4NWUsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2NiwgMHg4YiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDcwLCAweDg2LCAweDIwLCAweDkxLCAweGU1LCAweDZkLCAweDAwLCAweDAwLAorCTB4NjYsIDB4OGIsIDB4MDAsIDB4NTQsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2NiwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMyLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDY2LCAweDhiLCAweGEwLCAweDBhLAorCTB4ZTQsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg2NiwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGYzLCAweDgyLCAweGY0LCAweDAxLCAweDAwLAorCTB4YTgsIDB4OGEsIDB4YTAsIDB4NDIsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OGEsIDB4MDAsIDB4NTQsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDA3LCAweDFhLCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDAwLCAweDBkLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg4MywgMHg4NiwgMHgyMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDNkLCAweDk5LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHg5NSwgMHg4NiwgMHgyMiwgMHg1MCwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDkwLCAweDg2LCAweGEyLCAweDU0LCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDg4LCAweDg2LCAweDIyLCAweDU1LAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg4NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4NiwgMHgyMiwgMHg1MywKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg4MCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwYywgMHhiYywgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDkwLCAweDg2LCAweDIyLCAweDQzLCAweDgwLCAweDZjLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDRiLAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODYsIDB4YTIsIDB4NDMsIDB4ODAsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg3YywgMHg5NiwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg5MSwgMHg4NiwgMHg0MywgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDk0LCAweDg2LCAweGEwLCAweGYwLCAweDMwLCAweDZmLCAweDAwLCAweDAwLAorCTB4ODYsIDB4ODYsIDB4MWIsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NDEsCisJMHgzMSwgMHhjMywgMHgwMSwgMHgwMCwgMHg5MCwgMHg5NSwgMHgwMCwgMHg0MCwgMHgyNSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDg2LCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4OTYsIDB4MDAsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTgsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MGMsCisJMHhlMCwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjZSwgMHg5OSwgMHgwMCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGI1LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweGEwLCAweDg2LCAweDMwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTYsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMiwgMHgwMCwgMHhhMSwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweGU2LCAweDkxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDJlLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTgsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHgyOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZiLCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjEsIDB4ODYsIDB4MjIsIDB4NDYsIDB4MjMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhhZCwgMHg4NiwgMHgyMiwgMHg0MCwgMHg4NywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweGFmLCAweDg2LCAweDIyLCAweDQxLCAweDg3LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YjEsIDB4ODYsIDB4MjIsIDB4NDIsCisJMHg4NywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGIxLCAweDg2LCAweDQ3LCAweDFiLCAweDJjLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLAorCTB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4NDEsIDB4NDEsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHhlMCwgMHg4NiwgMHgyMywgMHg5MiwgMHgxNSwgMHg2YywgMHgwMCwgMHgwMCwgMHhlMCwgMHg4NiwgMHhhMiwgMHg0NSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGU0LCAweDg2LCAweDIyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YTIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyNywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwYSwgMHgyNCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGM3LCAweDk1LCAweDAwLCAweDQwLCAweDBmLCAweDMwLCAweDAxLCAweDAwLCAweGRlLCAweDg2LCAweDIyLCAweDA4LAorCTB4NDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YTMsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHgwNywgMHgwMCwgMHgxMiwgMHgyNCwgMHhjYywgMHgwMSwgMHgwMCwgMHhiYSwgMHg4NiwgMHhhYSwgMHg0MSwKKwkweDI3LCAweDQwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDEzLCAweDgwLCAweGNjLCAweDAxLCAweDAwLAorCTB4ZGEsIDB4ODYsIDB4MjYsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4NCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGNkLCAweDAxLCAweDAwLCAweDE3LCAweDAwLCAweDAwLCAweGQwLAorCTB4YTIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YzcsIDB4ODYsIDB4YTIsIDB4NDAsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkMywgMHg4NiwgMHgwMCwgMHg0MSwgMHg4MywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MiwKKwkweDQ0LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDIxLCAweDM4LCAweDk2LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4ODYsIDB4YTIsIDB4NDQsCisJMHgyMywgMHg2YywgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDIwLAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4NiwgMHhhOCwgMHg0MiwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDg1LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhhMywgMHhjMSwgMHgwMSwgMHgwMCwgMHhjNSwgMHg4NiwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGRhLCAweDg2LCAweDIyLCAweDQwLCAweDIzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhkNywgMHg4NiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZWUsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NiwgMHgwMCwgMHgxNywgMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGFhLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGU0LCAweDg2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YzcsIDB4OTUsIDB4MDAsIDB4OTIsIDB4MjUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgzMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4NiwgMHgyMiwgMHgwOCwKKwkweDJlLCAweDMwLCAweDAwLCAweDAwLCAweGVkLCAweDg2LCAweDAwLCAweDQxLCAweDI3LCAweGIwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4ODAsIDB4MDAsIDB4YTYsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHgzZCwgMHg5OSwgMHgwMCwgMHgwYSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZWMsIDB4ODYsIDB4MjIsIDB4OWYsIDB4MTMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHg4OCwgMHgxYywgMHhjYywgMHgwMSwgMHgwMCwgMHg2YiwgMHg4NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDg5LCAweDAwLCAweDQxLCAweDNmLCAweGMzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHgwMSwgMHg4NywgMHgyYSwgMHg0MCwgMHg4MSwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZjYsIDB4ODYsIDB4YTIsIDB4NDgsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhmNiwgMHg4NiwgMHhhMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhmNiwgMHg4NiwgMHhhMywgMHgwNywKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4ZjksIDB4ODYsIDB4YTMsIDB4NDAsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHhmYiwgMHg4NiwgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI4LCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGNkLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4MGUsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODYsIDB4YTgsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDA4LCAweGIwLCAweDAxLCAweDAwLCAweGEwLCAweDAxLCAweDJkLCAweDQwLAorCTB4MDAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZTcsIDB4ODgsIDB4MjIsIDB4MGYsIDB4NDIsIDB4MDUsIDB4MDAsIDB4MDAsCisJMHgxMiwgMHg4NywgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MGQsIDB4ODcsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDBhLCAweDg3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ODcsIDB4MjIsIDB4MDcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDQyLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGExLCAweDQ2LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZDEsIDB4ODcsIDB4YTIsIDB4NDUsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDU0LCAweDI5LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDBhLCAweGM4LCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweGE0LCAweDBjLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyNCwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDA4LAorCTB4MTAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg3ZiwgMHgwMCwgMHgwNSwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyMywgMHg4NywgMHgyMCwgMHg5NCwKKwkweDE1LCAweDZjLCAweDAwLCAweDAwLCAweDI0LCAweDg3LCAweDAwLCAweDk0LCAweGU1LCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4M2QsIDB4ODcsIDB4MjIsIDB4MDEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweGE0LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MmEsIDB4ODcsIDB4YTMsIDB4MDcsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyYiwgMHg4NywgMHg2OCwgMHgwMSwgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwNywKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDAyLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDBhLCAweGMwLCAweDAxLCAweDAwLCAweDM3LCAweDg3LCAweDIyLCAweDQwLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzcsIDB4ODcsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NWYsIDB4ODcsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzksIDB4ODcsIDB4YTgsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDQ0LCAweDIzLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsCisJMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHg0MiwgMHg4NywgMHhhMywgMHgxMiwgMHgwZSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDQzLCAweDg3LCAweDY4LCAweDA3LCAweDFhLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDEyLAorCTB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDYsIDB4ODcsIDB4ODAsIDB4MDgsIDB4ZjAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDFlLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDFmLCAweDAwLCAweDQzLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDRhLCAweDg3LCAweGE4LCAweDVjLAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4N2QsIDB4ODcsIDB4MjIsIDB4MGQsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHg4NywgMHgyMiwgMHgwZCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDU0LCAweDg3LCAweDAwLCAweDBkLCAweDI0LCAweGQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHhhMiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGYwLCAweDA3LCAweDAwLCAweDQwLCAweDI1LCAweDk4LCAweDAxLCAweDAwLCAweDU2LCAweDg3LCAweDIyLCAweDQyLAorCTB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ODcsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDU3LCAweDg3LCAweGE4LCAweDVjLCAweDFmLCAweDAwLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1ZCwgMHg4NywgMHgyMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGZiLCAweDk1LCAweDAwLCAweDQzLCAweDIzLCAweDMwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDBmLAorCTB4MWUsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg3ZCwgMHg4NywgMHgyMiwgMHgwZCwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg3YywgMHg4NywgMHhhMiwgMHgwZCwKKwkweDBlLCAweDUwLCAweDAwLCAweDAwLCAweDZiLCAweDg3LCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2OSwgMHg4NywgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NjYsIDB4ODcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweGUxLCAweDkxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MDYsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDcwLCAweDg3LCAweDFmLCAweGYwLCAweDBlLCAweDMwLCAweDAwLCAweDAwLCAweDI0LCAweDg3LCAweDAwLCAweDRjLAorCTB4MGQsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NWYsIDB4MGYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHg4NywgMHgyMywgMHgwNywgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDI0LCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg3OSwgMHg4NywgMHhhOCwgMHg0NiwgMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHg4NywgMHgwMCwgMHgwMywKKwkweDBjLCAweGIwLCAweDAwLCAweDAwLCAweDI0LCAweDg3LCAweDAwLCAweDBkLCAweDE4LCAweGMwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MmUsIDB4MTQsIDB4MGEsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhjZCwgMHgwMSwgMHgwMCwgMHhmZSwgMHg3ZiwgMHgwMCwgMHgwNSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDJhLCAweGYyLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDgzLCAweDg3LCAweDIyLCAweDQwLAorCTB4MzEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MTgsIDB4MzgsIDB4OTYsIDB4MDEsIDB4MDAsCisJMHgxZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHhmNiwKKwkweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDg3LCAweDg3LCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ODksIDB4ODcsIDB4MjIsIDB4MGIsCisJMHhlZCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhhMSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweGExLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDBmLCAweDAwLCAweDAwLCAweGZhLAorCTB4OTQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5MSwgMHg4NywgMHgyMiwgMHg0NywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDQzLCAweDBlLCAweDUwLCAweDAwLCAweDAwLAorCTB4OTEsIDB4ODcsIDB4YTAsIDB4NDYsIDB4MGYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5NSwgMHg4NywgMHgyMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDBmLCAweGEyLAorCTB4NDIsIDB4MzEsIDB4MDAsIDB4MDAsIDB4OTgsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwYywgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDk1LCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWIsIDB4ODcsIDB4YTAsIDB4NDEsCisJMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDg3LCAweDIyLCAweDQ3LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGEwLCAweDg3LCAweGEwLCAweDQzLAorCTB4ODksIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTAsIDB4ODcsIDB4MjAsIDB4NDUsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhMCwgMHg4NywgMHhhMCwgMHg0MSwgMHgwZSwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDBmLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg5LCAweGMwLCAweDAxLCAweDAwLAorCTB4OTgsIDB4ODcsIDB4YTIsIDB4NDEsIDB4OTUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4YTksIDB4ODcsIDB4MjIsIDB4NDgsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg5MiwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDQ4LCAweDkwLCAweDg4LCAweDAxLCAweDAwLCAweGE3LCAweDg3LCAweDkwLCAweDQ4LAorCTB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwKKwkweDkzLCAweGE0LCAweDAxLCAweDAwLCAweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHhlMCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhhZiwgMHg4NywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiYywgMHg4NywgMHgyMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDQ0LCAweDIzLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MTAsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjksIDB4ODcsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGI2LCAweDg3LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhiYywgMHg4NywgMHg4NywgMHg1YywgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweGZiLCAweDk1LCAweDAwLCAweDQxLCAweDIzLCAweDQwLCAweDAxLCAweDAwLAorCTB4YmUsIDB4ODcsIDB4YTIsIDB4NDcsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4NTIsIDB4ODksIDB4MDAsIDB4MTcsCisJMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGMxLCAweDg3LCAweGEwLCAweDA3LCAweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHhjNSwgMHg4NywgMHg5MCwgMHhmMiwKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsIDB4MTcsIDB4YTQsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgyYiwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDJhLCAweDk0LCAweDAxLCAweDAwLCAweDMwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2YsIDB4ODcsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGNjLCAweDg3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTcsCisJMHgxMCwgMHhkYywgMHgwMSwgMHgwMCwgMHg1MiwgMHg4OSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDkwLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQ1LCAweDg3LCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2NiwgMHg5NiwgMHgwMCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwNSwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgzYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDM0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LAorCTB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MGEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHgwYywgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIzLCAweGIwLCAweDAxLCAweDAwLCAweDFiLCAweDg4LCAweDIyLCAweDAxLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHhhNCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweGVhLCAweDg3LCAweGEzLCAweDA3LCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4ZWIsIDB4ODcsIDB4NjgsIDB4MDEsIDB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDcsCisJMHgxYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwMiwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwYSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhmZCwgMHg4NywgMHgyMiwgMHg0MCwKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweGY3LCAweDg3LCAweDIyLCAweDQyLCAweDIzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDM3LCAweDg4LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGY0LCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGY5LCAweDg3LCAweGE4LCAweDQwLCAweDIzLCAweDMwLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzcsIDB4ODgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODcsIDB4YTgsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgxOSwKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDE0LCAweDQ4LCAweGMxLCAweDAxLCAweDAwLAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4M2EsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHgzYiwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwZSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDAyLCAweGMwLCAweDAxLCAweDAwLCAweDBiLCAweDg4LCAweDIzLCAweDFhLAorCTB4MDIsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MDMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgzNywgMHg4OCwgMHgwMCwgMHgwMSwgMHgzNCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHgxZCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweGYwLCAweDAwLCAweDAwLCAweGYyLCAweDMwLCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MzEsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgwMiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAyLCAweGMwLCAweDAxLCAweDAwLCAweDEzLCAweDg4LCAweDIyLCAweDFhLAorCTB4MDIsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MzcsIDB4ODgsIDB4MDAsIDB4MDEsIDB4MzQsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgwMCwgMHgxOSwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgyZCwgMHgxNCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY2LCAweDE0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWQsIDB4MTQsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHgxNCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZSwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDAwLCAweDAwLCAweDE3LCAweDEwLCAweGM4LCAweDAxLCAweDAwLCAweDM3LCAweDg4LCAweDAwLCAweDFhLAorCTB4MTAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDIwLCAweDg4LCAweGEzLCAweDEyLCAweDBlLCAweDZjLCAweDAwLCAweDAwLAorCTB4MjEsIDB4ODgsIDB4NjgsIDB4MDcsIDB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MTIsCisJMHgxYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyNCwgMHg4OCwgMHg4MCwgMHgwOCwgMHhmMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDExLCAweDk4LCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLAorCTB4MWUsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDg2LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MWYsIDB4MDAsIDB4NDMsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MjgsIDB4ODgsIDB4YTgsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg4OCwgMHgyMiwgMHgwZCwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDU0LCAweDg4LCAweDIyLCAweDBkLCAweDI0LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLAorCTB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MmYsIDB4ODgsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzNywgMHg4OCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODgsIDB4YTgsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGZiLCAweDk1LCAweDAwLCAweDQzLCAweDIzLCAweDMwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDBmLAorCTB4MWUsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg1MywgMHg4OCwgMHhhMiwgMHgwZCwgMHgwZSwgMHg1MCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg4OCwgMHgyMiwgMHg0NiwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODgsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDNkLCAweDg4LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweGUxLCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA2LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0NywgMHg4OCwgMHgxZiwgMHhmMCwgMHgwZSwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDg3LCAweDAwLCAweDRjLCAweDBkLCAweGMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDVmLAorCTB4MGYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4ODcsIDB4MjMsIDB4MDcsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4ODgsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHhlNCwgMHg4NywgMHgwMCwgMHgwMywgMHgwYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4NywgMHgwMCwgMHgwZCwKKwkweDE4LCAweGMwLCAweDAwLCAweDAwLCAweDcxLCAweDg4LCAweGEyLCAweDQ0LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MGEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgyZCwgMHgxNCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDIwLCAweDQwLCAweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MmQsIDB4MWQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwOSwgMHgwMCwgMHgwMCwgMHhmMywgMHgzOCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwZCwgMHgwMCwgMHgyMCwgMHg1MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDJkLCAweDQwLCAweDNmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDE0LCAweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDFkLAorCTB4OTQsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg2NiwgMHg4OCwgMHhhMCwgMHhmYywgMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDkxLCAweGMwLCAweDAxLCAweDAwLCAweDY0LCAweDg4LCAweGEyLCAweDQxLCAweDk1LCAweDUwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDUsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweDE4LCAweDk0LCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDE4LAorCTB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmUsIDB4ODgsIDB4YTAsIDB4ZmMsIDB4OTAsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg2YywgMHg4OCwgMHhhMiwgMHg0MSwKKwkweDk1LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDgwLCAweDAwLCAweDA1LCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg3NiwgMHg4OCwgMHg0MiwgMHgzMCwgMHgzZCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZSwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQxLCAweDNkLCAweGMzLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4NDIsIDB4ZWMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgyZSwgMHgxZCwgMHg4MiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY2LCAweDE4LCAweDgyLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODgsIDB4YTAsIDB4NDEsIDB4ODAsIDB4NDQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDkyLCAweGY0LCAweDAxLCAweDAwLCAweDBhLCAweDAwLCAweDJlLCAweDMwLCAweDgxLCAweDg0LCAweDAxLCAweDAwLAorCTB4ODQsIDB4ODgsIDB4OTAsIDB4NDAsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHg5MywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDE5LAorCTB4ZTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4MTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg4YSwgMHg4OCwgMHhhMCwgMHgxOSwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDBkLCAweDAwLCAweDJmLCAweDFlLCAweDMyLCAweGMwLCAweDAxLCAweDAwLAorCTB4OGYsIDB4ODgsIDB4YTIsIDB4NDAsIDB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OGUsIDB4ODgsIDB4YTAsIDB4MWMsCisJMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweGYzLCAweDM4LCAweDk0LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmUsIDB4MWUsIDB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHgxYSwgMHg5OCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDlkLCAweDg4LCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5YiwgMHg4OCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OTgsIDB4ODgsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweGUxLCAweDkxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MWEsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLAorCTB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhhMywgMHg4OCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGIxLCAweDg4LCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MTAsCisJMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHhhZCwgMHg4OCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YWEsIDB4ODgsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZmIsIDB4OTUsIDB4MDAsIDB4NDEsIDB4MjMsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MGYsCisJMHgxZSwgMHg4YywgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4MTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4YjYsIDB4ODgsIDB4OTAsIDB4ZjIsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwKKwkweDE3LCAweGE0LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDE0LCAweDJhLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWQsIDB4MmEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgyYiwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgyYSwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGMxLCAweDg4LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiZSwgMHg4OCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTcsIDB4MTAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4ZGUsIDB4ODgsIDB4MjIsIDB4NDAsCisJMHgxNSwgMHg2YywgMHgwMCwgMHgwMCwgMHhjOSwgMHg4OCwgMHhhMiwgMHg0NCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweGM4LCAweDg4LCAweDIyLCAweDlmLAorCTB4MTMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MWMsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHg2YiwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDNmLCAweGMzLCAweDAxLCAweDAwLCAweDRlLCAweDk5LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4ODgsIDB4YTIsIDB4NDEsIDB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHgzZSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkZSwgMHg4OCwgMHgyMiwgMHg0MCwgMHgxNSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGNmLCAweDg4LCAweDIwLCAweDFlLCAweDE0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBhLAorCTB4M2MsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzcsIDB4OTUsIDB4MDAsIDB4MWUsIDB4MjQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg4OCwgMHgyMiwgMHgwOCwgMHgyZSwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MiwKKwkweDExLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MzcsIDB4ODgsIDB4MDAsIDB4NDAsIDB4MTcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDg4LCAweGEyLCAweDA4LCAweDJlLCAweDMwLCAweDAwLCAweDAwLCAweDgwLCAweDgwLCAweDAwLCAweGE2LAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwNCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDNkLCAweDk5LCAweDAwLCAweDFmLCAweDhjLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDA0LCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDRlLCAweDk5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZTMsIDB4ODgsIDB4YTIsIDB4NDEsIDB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhlNCwgMHg4OCwgMHgwMCwgMHgxZSwgMHgzZSwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwKKwkweDhjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4M2QsIDB4OTksIDB4MDAsIDB4NDAsIDB4MGYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHhlZiwgMHg4OCwgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZWYsIDB4ODgsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGVjLCAweDg4LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODgsIDB4MjIsIDB4MDcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDQyLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGExLAorCTB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZSwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmNywgMHg4OCwgMHgyMCwgMHg5NCwKKwkweDE1LCAweDZjLCAweDAwLCAweDAwLCAweGY4LCAweDg4LCAweDAwLCAweDk0LCAweGUxLCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmIsIDB4ODgsIDB4MjIsIDB4NDAsCisJMHgzMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDE4LCAweDM4LCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODksIDB4YTgsIDB4NDAsCisJMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDUyLCAweDExLCAweGMwLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDBlLCAweGIwLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweGE0LCAweDBjLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDg5LCAweGEzLCAweDEyLCAweDBlLCAweDZjLCAweDAwLCAweDAwLCAweDBmLCAweDg5LCAweDY4LCAweDA3LAorCTB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MTIsIDB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgxZiwgMHgwMCwgMHg0MywgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDE0LCAweDg5LCAweGE4LCAweDVjLCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDQ1LCAweDg5LCAweDIyLCAweDBkLAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ODksIDB4MjIsIDB4MGQsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxZSwgMHg4OSwgMHgwMCwgMHgwZCwKKwkweDI0LCAweGQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDJiLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4YTIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwgMHgyNSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDg5LCAweDIyLCAweDQyLCAweDIzLCAweDZjLCAweDAwLCAweDAwLCAweDI3LCAweDg5LCAweDAwLCAweDQxLAorCTB4MjMsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyMSwgMHg4OSwgMHhhOCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzIsIDB4OTQsIDB4MDAsIDB4NDMsCisJMHgyMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDBkLCAweDE0LCAweDUwLCAweDAwLCAweDAwLCAweDQ0LCAweDg5LCAweGEyLCAweDBkLAorCTB4MGUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MzMsIDB4ODksIDB4MjIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDMxLCAweDg5LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyZSwgMHg4OSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgwNiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MzgsIDB4ODksIDB4MWYsIDB4ZjAsIDB4MGUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ODksIDB4MDAsIDB4NGMsCisJMHgwZCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1ZiwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDA5LCAweDg5LCAweDIzLCAweDA3LCAweDE0LCAweDZjLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDQxLCAweDg5LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDA5LCAweDg5LCAweDAwLCAweDAzLAorCTB4MGMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ODksIDB4MDAsIDB4MGQsIDB4MTgsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHg0ZSwgMHg4OSwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDQ0LCAweDIzLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MTAsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4ODksIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDRiLCAweDg5LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjMiwgMHg5NCwgMHgwMCwgMHg0MSwKKwkweDIzLCAweDQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDEwLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTIsIDB4ODksIDB4MDAsIDB4NDAsIDB4MmIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDU3LCAweDg5LCAweDIyLCAweDlmLCAweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LAorCTB4MWMsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4NmIsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg0ZSwgMHg5OSwgMHgwMCwgMHg0MSwgMHgzZiwgMHg0MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4M2QsIDB4OTksIDB4MDAsIDB4NDAsIDB4MGYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTUsIDB4OGEsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZSwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDNhLCAweDAxLCAweDg0LCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDA3LAorCTB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MGIsIDB4OTYsIDB4MDAsIDB4MDcsIDB4MTYsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg2NiwgMHg4OSwgMHgyMiwgMHg0MSwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg2NCwgMHg4OSwgMHgyMiwgMHg0MiwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4NjUsIDB4ODksIDB4MjIsIDB4NWYsIDB4MGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsCisJMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHg4OSwgMHhhMiwgMHg1YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDg2LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDZlLCAweDg5LCAweDIyLCAweDIwLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NmIsIDB4ODksIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg5NiwgMHgwMCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDg1LCAweDk4LCAweDAwLCAweDQyLCAweDYxLCAweDMxLCAweDAxLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2UsIDB4OTksIDB4MDAsIDB4MDcsCisJMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTgsIDB4OGEsIDB4YTIsIDB4NWYsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhOCwgMHgwMCwgMHgyZCwgMHg0MywgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGYzLCAweDhlLCAweGY0LCAweDAxLCAweDAwLAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4N2QsIDB4ODksIDB4MjIsIDB4NDgsCisJMHg4ZSwgMHg2YywgMHgwMCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAwLCAweDNkLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLCAweDdkLCAweDg5LCAweDFmLCAweGYwLAorCTB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4N2MsIDB4ODksIDB4MjMsIDB4NDEsIDB4OGYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhOCwgMHg4YSwgMHgwMCwgMHg0NywgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg4YSwgMHgwMCwgMHg0OCwKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4YjAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODIsIDB4ODksIDB4MjIsIDB4MGEsCisJMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgyMSwgMHg5OSwgMHgwMCwgMHg0MCwgMHg5MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDhhLCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGIwLCAweDAwLCAweDJkLCAweDQ1LAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OGUsIDB4ODksIDB4MjIsIDB4ZjAsIDB4MmMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhhMywgMHgwMCwgMHgyZCwgMHgzMCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZCwgMHhmMywKKwkweDgyLCAweGUwLCAweDAxLCAweDAwLCAweDg4LCAweDg5LCAweGEzLCAweDQxLCAweDJjLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTgsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDk4LCAweGU4LCAweDAxLCAweDAwLCAweGE4LCAweDhhLCAweDIwLCAweDRjLAorCTB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4N2MsIDB4MDAsIDB4MmQsIDB4NDEsIDB4OTgsIDB4ZTgsIDB4MDEsIDB4MDAsCisJMHhhOCwgMHg4YSwgMHgyMCwgMHhmMCwgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwgMHhmZiwgMHg4OSwgMHgyMiwgMHgwYSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDBjLCAweDdlLCAweDg5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OGEsIDB4MDAsIDB4NDksCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDk2LCAweDg5LCAweDIyLCAweDQzLCAweDIxLCAweDZmLCAweDAwLCAweDAwLCAweDEzLCAweDgwLCAweDAwLCAweDQwLAorCTB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4OTcsIDB4ODksIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxYSwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwgMHg5NywgMHg4OSwgMHhhMiwgMHg1ZSwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA4LCAweGIxLCAweDAxLCAweDAwLAorCTB4OTksIDB4ODksIDB4OWYsIDB4ODUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OWQsIDB4ODksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg4NCwgMHgyMiwgMHg0MCwgMHg1NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDQwLCAweDU3LCAweDk5LCAweDAxLCAweDAwLCAweDlkLCAweDg5LCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHg0OSwgMHg4NCwgMHgxYSwgMHg1YiwgMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwgMHg3YiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGEwLCAweDg5LCAweGE4LCAweGIxLCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4YzksIDB4ODksIDB4MWQsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YmEsIDB4ODksIDB4MjIsIDB4NDAsCisJMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhiYSwgMHg4OSwgMHgyMiwgMHg1YiwgMHg4MSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDVkLCAweDczLCAweDdkLCAweDAwLCAweDAwLCAweDdkLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YTYsIDB4ODksIDB4YTgsIDB4YjEsIDB4OTQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGE5LCAweDg5LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWIsIDB4ODksIDB4NDMsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjksIDB4ODksIDB4MjIsIDB4NTcsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3NywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGFkLCAweDg5LCAweGE4LCAweGIxLCAweDk0LCAweDMwLCAweDAwLCAweDAwLCAweDc3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YWYsIDB4ODksIDB4YTgsIDB4YjEsIDB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGIyLCAweDg5LCAweGE4LCAweDRhLCAweDgwLCAweDMzLCAweDAwLCAweDAwLAorCTB4YjcsIDB4ODksIDB4MjIsIDB4NWYsIDB4OTUsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiNSwgMHg4OSwgMHhhOCwgMHg0YiwgMHhhYywgMHgzMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFiLCAweGE1LCAweDgyLCAweGIzLCAweDAxLCAweDAwLCAweGJhLCAweDg5LCAweDAwLCAweGJlLAorCTB4ODMsIDB4YzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NDAsIDB4ODEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgxOCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweGM3LCAweDg5LCAweGEyLCAweDQwLCAweDg2LCAweDA0LCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4OWMsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDAsCisJMHg4OCwgMHg4OCwgMHgwMSwgMHgwMCwgMHhlMywgMHg4OSwgMHgwMCwgMHg1MCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDAwLCAweDAwLCAweDQ0LCAweDg4LCAweGNjLCAweDAxLCAweDAwLCAweGMzLCAweDg5LCAweDUyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4ODksIDB4MDAsIDB4NDAsIDB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg4OSwgMHgwMCwgMHg0OCwKKwkweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGUzLCAweDg5LCAweDAwLCAweDA1LCAweDQ3LCAweDMxLCAweDAxLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg0MSwgMHhlMSwgMHhjMSwgMHgwMCwgMHgwMCwKKwkweDc4LCAweDE4LCAweDAwLCAweDQwLCAweDQ5LCAweDk5LCAweDAxLCAweDAwLCAweGQwLCAweDg5LCAweDIyLCAweDU0LAorCTB4ODEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4ODksIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHhiNCwgMHg2OSwgMHhkZiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg0NCwKKwkweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZTMsIDB4ODksIDB4MDAsIDB4NDEsIDB4ODksIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGUsIDB4ODksIDB4MGYsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmZiwgMHg3ZiwgMHgwMCwgMHg0MCwgMHg4OCwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweGUzLCAweDg5LCAweDAwLCAweDUwLCAweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDQ0LAorCTB4ODgsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4ZDYsIDB4ODksIDB4OTksIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4OSwgMHhkMCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg4OSwgMHg5YiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDg5LCAweGQwLCAweDAxLCAweDAwLAorCTB4ZGEsIDB4ODksIDB4MWYsIDB4NDQsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4ODksIDB4MDAsIDB4NDAsCisJMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGUzLCAweDg5LCAweDAwLCAweDQ4LCAweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGUzLCAweDg5LCAweDAwLCAweDU4LAorCTB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NiwgMHhmNCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDg2LCAweDg4LCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDI2LCAweDA1LCAweDQ3LCAweDMxLCAweDAwLCAweDAwLAorCTB4ZTMsIDB4ODksIDB4MDAsIDB4NDEsIDB4ODksIDB4MzAsIDB4MDEsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHg0NCwgMHhmMCwgMHg0MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQxLAorCTB4ZTEsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4ODEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHhlOSwgMHg4OSwgMHgyMiwgMHg0MCwgMHhmMiwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg4MSwgMHg4MCwgMHgwMCwgMHg2ZiwKKwkweDk3LCAweDMzLCAweDAxLCAweDAwLCAweGViLCAweDg5LCAweDIyLCAweDQwLCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4OWIsIDB4ODAsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4ODksIDB4MjIsIDB4NTksCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3OSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGU2LCAweDg5LCAweDI4LCAweGIxLCAweDdlLCAweDMxLCAweDAwLCAweDAwLCAweGVjLCAweDg5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4YzAsIDB4OTUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNiwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhmNCwgMHg4OSwgMHgyMiwgMHg1ZCwKKwkweDczLCAweDdkLCAweDAwLCAweDAwLCAweDdkLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZjIsIDB4ODksIDB4YTgsIDB4YjEsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsCisJMHg3ZiwgMHg4MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZiwgMHhjNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLCAweDI1LCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZjcsIDB4ODksIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHhmOSwgMHg4OSwgMHg0MywgMHg1ZiwgMHg3ZiwgMHgxMywgMHgwMCwgMHgwMCwgMHgyNiwgMHgwMSwgMHgwMCwgMHhiZiwKKwkweGM1LCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDdmLCAweDgzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4N2YsIDB4OTMsIDB4MDEsIDB4MDAsIDB4NzUsIDB4OTgsIDB4MDAsIDB4YmYsCisJMHhjNSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA2LCAweDhhLCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDYsIDB4OGEsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAzLCAweDhhLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4OTUsIDB4MjIsIDB4MDIsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNywgMHg4YSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDYyLCAweDk1LCAweDFhLCAweDAyLAorCTB4NjgsIDB4OTcsIDB4MDAsIDB4MDAsIDB4MTEsIDB4OGEsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMSwgMHg4YSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MGUsIDB4OGEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZjLCAweDk1LCAweDIyLCAweDAyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDEyLCAweDhhLCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHg2YywgMHg5NSwgMHgxYSwgMHgwMiwgMHg2OCwgMHg5NywgMHgwMCwgMHgwMCwgMHgxYywgMHg4YSwgMHg5YywgMHgwZiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MWMsIDB4OGEsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDhhLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4ODQsIDB4MjIsIDB4MDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxZCwgMHg4YSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDAyLCAweDY4LCAweDk3LCAweDAxLCAweDAwLAorCTB4NmYsIDB4ODQsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg1NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1NiwgMHg5NSwgMHgyZiwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDZkLCAweDhhLCAweGEyLCAweDQwLCAweGU3LCAweDZkLCAweDAwLCAweDAwLCAweGI4LCAweDk0LCAweDI5LCAweDQxLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4ZWYsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDBkLCAweDk4LCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA3LCAweDEyLCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4MTMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwNywgMHgxNiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDEwLCAweDM0LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4MzQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgxOCwgMHgwMCwgMHg0MCwgMHgxMSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDUxLCAweDhhLCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MzIsIDB4OGEsIDB4NDQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsCisJMHg4NCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgzOSwgMHg4YSwgMHgwNSwgMHhjMiwgMHgyNCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDUxLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmUsIDB4OGEsIDB4MWMsIDB4ZjAsIDB4MTgsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg1MSwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDQ4LCAweDhhLCAweGEwLCAweDQ4LCAweDIzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MzUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MWEsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MiwgMHg4YSwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDFhLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4M2YsIDB4OGEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDZlLCAweDhhLCAweDAwLCAweGY4LCAweDE4LCAweDMwLCAweDAxLCAweDAwLAorCTB4NDMsIDB4OGEsIDB4YTIsIDB4NDEsIDB4MjMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MTAsCisJMHgzNCwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgzNCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDE4LCAweDAwLCAweDQwLCAweDExLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDFhLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDFhLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NGMsIDB4OGEsIDB4YTgsIDB4MDksIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgzNSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDExLCAweGMwLCAweDAxLCAweDAwLCAweDVkLCAweDhhLCAweDIyLCAweDQxLAorCTB4MGQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg1OSwgMHg4YSwgMHhhMCwgMHhhYSwgMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA3LCAweDEyLCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4MTMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4YSwgMHgwMCwgMHg0MSwgMHgxNywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAyLCAweDAwLCAweDA5LCAweDEyLCAweGM4LCAweDAxLCAweDAwLCAweDMwLCAweDhhLCAweDgzLCAweDQxLAorCTB4MTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHg4YSwgMHgwMCwgMHg0MSwgMHgxYiwgMHhjMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHg4YSwgMHgyMywgMHg0MCwKKwkweDIzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDM1LCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MWEsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjUsIDB4OGEsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDFhLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDYyLCAweDhhLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg2ZSwgMHg4YSwgMHgwMCwgMHhmOCwKKwkweDE4LCAweDMwLCAweDAxLCAweDAwLCAweDY2LCAweDhhLCAweGEyLCAweDQxLCAweDIzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NmIsIDB4OGEsIDB4YTAsIDB4YWEsCisJMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDk0LCAweDIwLCAweDA3LCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDU2LCAweDk1LCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHgwYywgMHg4MCwgMHhkOCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMiwgMHgwMCwgMHgwYywKKwkweDdlLCAweDg5LCAweDAxLCAweDAwLCAweDgwLCAweDhhLCAweDI2LCAweDU0LCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4NzYsIDB4OGEsIDB4ODcsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHg3NiwgMHg4YSwgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDc2LCAweDhhLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAwLCAweDAwLCAweDcyLCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4N2IsIDB4OGEsIDB4MjIsIDB4NDYsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAxLCAweDAwLAorCTB4NzcsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OGEsIDB4MjIsIDB4NDksCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDU0LAorCTB4NzcsIDB4N2QsIDB4MDEsIDB4MDAsIDB4N2IsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAxLCAweDAwLAorCTB4ODAsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4OTQsIDB4MmYsIDB4NTUsCisJMHhmMSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHhhNiwgMHg1NiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDZmLCAweDg0LCAweGEyLCAweDQxLCAweGU1LCAweDUxLCAweDAwLCAweDAwLCAweDY0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODgsIDB4OGEsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHg4YSwgMHhhMiwgMHg5MywgMHg1NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDU3LCAweGMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweGFiLCAweDI3LCAweGIzLCAweDAxLCAweDAwLAorCTB4NmYsIDB4ODQsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NmYsIDB4ODQsIDB4MjIsIDB4NTEsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg2ZiwgMHg4NCwgMHhhMiwgMHg0MSwgMHgxZCwgMHg1MywgMHgwMCwgMHgwMCwKKwkweDUwLCAweDQ2LCAweDAwLCAweDQwLCAweDFkLCAweDliLCAweDAxLCAweDAwLCAweDM0LCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwgMHg0OSwgMHgzMSwgMHgwMSwgMHgwMCwgMHg5NywgMHg4YSwgMHgyMiwgMHg0MCwKKwkweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODEsIDB4MDAsIDB4NDEsIDB4YjUsIDB4NTMsIDB4MDEsIDB4MDAsIDB4NmYsIDB4ODQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZCwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDQwLCAweDE2LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDM1LCAweDgyLCAweDAwLCAweDQwLAorCTB4NDksIDB4MzEsIDB4MDEsIDB4MDAsIDB4MWUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHhmYywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweDkxLCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YjUsIDB4MzMsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MTYsIDB4MjAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkYiwgMHg4MiwgMHgwMCwgMHg0MCwgMHhiNSwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDRhLAorCTB4YjQsIDB4OGIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweGI0LCAweGY3LCAweDAxLCAweDAwLCAweGZmLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NmYsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHgwOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIwLCAweDQwLCAweGU2LCAweGIxLCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDQwLAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhhZSwgMHg4YSwgMHgwMCwgMHg0YiwgMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHhkMSwgMHg4ZCwgMHgwMCwgMHg0MSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4ZSwgMHgwMCwgMHg0MSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzNywgMHg4ZSwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDM3LCAweDhlLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MzcsIDB4OGUsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzcsIDB4OGUsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3NiwgMHg4ZSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg4ZSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGEzLCAweDhlLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MGIsIDB4OTAsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4ZSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhZSwgMHg4ZSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDZmLCAweDhmLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4OGYsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2ZiwgMHg4ZiwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDliLCAweDhmLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGI5LCAweDhmLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGI5LCAweDhmLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiOSwgMHg4ZiwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTEsIDB4OGYsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGNmLCAweDhkLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZjIsIDB4OGYsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4OGYsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4ZiwgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGY0LCAweDhmLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4OGYsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OGYsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGZjLCAweDhmLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2YsIDB4OGQsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4OTAsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmZCwgMHg4ZiwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHg5MCwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4OTAsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg5MCwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZkLCAweDhmLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDZkLCAweDhmLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmQsIDB4OGYsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg5MCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDBmLCAweDkwLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDBmLCAweDkwLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDE2LCAweDkwLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDE4LCAweDkwLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDI0LCAweDkwLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4OGQsIDB4OTAsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4OGUsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHg5MCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDk1LCAweDkwLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4YTMsIDB4OGUsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4OTAsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg5MCwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2YsIDB4OGQsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NzMsIDB4OGUsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5MSwgMHg5MCwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMywgMHg4ZSwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDBiLCAweDkwLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDA4LCAweGIwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDIwLCAweDQ3LAorCTB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDcsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg5NiwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDk2LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDk2LCAweGMwLCAweDAxLCAweDAwLAorCTB4NmUsIDB4OGIsIDB4MDAsIDB4NGIsIDB4MTAsIDB4YzksIDB4MDAsIDB4MDAsIDB4YmUsIDB4OTAsIDB4MDAsIDB4NDksCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhmNywgMHg5MCwgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZkLCAweDkwLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MGIsIDB4OTEsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg5MSwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MjcsIDB4OTEsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4OTEsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4NywgMHg5MSwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODYsIDB4OTEsIDB4MDAsIDB4NGIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4OTEsIDB4MDAsIDB4NDEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDkxLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDkxLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDkxLCAweDAwLCAweDQ5LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4OTEsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTEsIDB4MDAsIDB4NGIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHgwMCwgMHg0YywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDkxLCAweDAwLCAweDRkLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlNiwgMHg5MSwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGU2LCAweDkxLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlNiwgMHg5MSwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZlLCAweDkxLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDE1LCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4OTEsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDZhLCAweDk0LCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTEsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDkxLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDkxLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDI3LCAweDkxLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg4NywgMHg5MSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHg5MSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDkxLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MjUsIDB4OTEsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDg2LCAweDkxLCAweDAwLCAweDRjLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg5MiwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDkyLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MWIsIDB4OTIsIDB4MDAsIDB4NGIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDkxLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNlLCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNiwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDI2LCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI2LCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNlLCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4OTEsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHg5MSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjYsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg5MiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4YWYsIDB4OTIsIDB4MDAsIDB4NDAsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHg5MiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDFlLCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDFlLCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkMywgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkMywgMHg5MiwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4YzAsIDB4OTIsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZSwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGMwLCAweDkyLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNiwgMHg5MSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZTYsIDB4OTEsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4OTEsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDkxLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4OTEsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNiwgMHg5MSwgMHgwMCwgMHg0YywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzZCwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDMxLCAweDkyLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4OTIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzZCwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4OTIsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDMxLCAweDkyLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MiwgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZDUsIDB4OTIsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MiwgMHgwMCwgMHg0YiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGQ1LCAweDkyLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkNSwgMHg5MiwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MiwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGQ1LCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZDUsIDB4OTIsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MiwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGQ1LCAweDkyLCAweDAwLCAweDRjLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4OTIsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWYsIDB4OTIsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OTIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlZiwgMHg5MiwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4OTMsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGY2LCAweDkzLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmNiwgMHg5MywgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg5NCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTgsIDB4OTQsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDE5LCAweDk0LCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4OTEsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5MSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxOCwgMHg5NCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGUwLCAweDkyLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYywgMHg5MiwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGVjLCAweDkyLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYywgMHg5MiwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGVjLCAweDkyLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OTIsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYywgMHg5MiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlYywgMHg5MiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGVjLCAweDkyLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGVjLCAweDkyLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGZlLCAweDkxLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDE1LCAweDkyLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmMiwgMHg5MSwgMHgwMCwgMHg0YywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4YjgsIDB4OTQsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVmLCAweDk0LCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4OTQsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVmLCAweDk0LCAweDAwLCAweDRiLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg5NCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVmLCAweDk0LCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDkxLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4OTEsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NWYsIDB4OTQsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGYyLCAweDkxLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4OTQsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGYyLCAweDkxLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OTIsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZhLCAweDk0LCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2YSwgMHg5NCwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmUsIDB4OTQsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxNSwgMHg5MiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGIwLCAweDk0LCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHg5NCwgMHgwMCwgMHg0ZCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3ZiwgMHg5NCwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWQsIDB4OTQsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDdmLCAweDk0LCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5MSwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1ZCwgMHg5NCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHg5NCwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE1LCAweDkyLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4OTQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDkwLCAweDk0LCAweDAwLCAweDRkLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHg5MSwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDJjLCAweDkxLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhZSwgMHg5NCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTEsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDkxLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDkxLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGFlLCAweDk0LCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGIwLCAweDk0LCAweDAwLCAweDRhLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTUsIDB4OTIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHg5NCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmIsIDB4OTQsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NmIsIDB4OTQsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OTIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2YiwgMHg5NCwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmIsIDB4OTQsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhiNiwgMHg5NCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDVkLCAweDk0LCAweDAwLCAweDRhLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGI2LCAweDk0LCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4OTEsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHg5MSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWQsIDB4OTQsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4OTEsIDB4MDAsIDB4NGQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4OTEsIDB4MDAsIDB4NGQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5MSwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDJlLCAweDRiLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MGEsIDB4OGEsIDB4MDAsIDB4MDQsIDB4ZTYsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhiYSwgMHg4ZCwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHgzYSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YmEsIDB4OGQsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MWYsIDB4MDAsIDB4MGYsCisJMHgxZSwgMHg4YywgMHgwMSwgMHgwMCwgMHgyMSwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGNhLCAweDhkLCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhjYSwgMHg4ZCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YzcsIDB4OGQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4NiwgMHgyMiwgMHgwMiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGNiLCAweDhkLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDIsIDB4NjgsIDB4OTcsIDB4MDEsIDB4MDAsCisJMHgxMywgMHg4NiwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgyZSwgMHg0YiwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDBhLCAweDhhLCAweDAwLCAweDA0LCAweGU2LCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweGExLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTksIDB4MDAsIDB4MDYsIDB4MDcsIDB4NDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwNywgMHhkMCwgMHgwMSwgMHgwMCwgMHhkNCwgMHgwMCwgMHgyZSwgMHg1YywKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZlLCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwKKwkweDk2LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweDk2LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYSwgMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZlLCAweDk2LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDRiLAorCTB4OTQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4OTUsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgyZSwgMHgzNCwKKwkweDk3LCAweDg0LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDRiLCAweGU0LCAweGU1LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDEsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg4NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHhhNywgMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4NDMsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg1OCwgMHgwMSwgMHgwMCwgMHgwNSwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4ZjQsIDB4OGQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDJlLCAweDQwLCAweDk1LCAweGIwLCAweDAxLCAweDAwLCAweGZjLCAweDhkLCAweDIwLCAweDRiLAorCTB4OTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmOSwgMHg4ZCwgMHgwMCwgMHg0MSwgMHg5NSwgMHhjMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAzLCAweDhlLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg4ZCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwYywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDg2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4OGUsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwYiwgMHg4ZSwgMHhhMiwgMHg0YywgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDBjLCAweDhlLCAweDAwLCAweDRjLCAweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDBkLCAweDhlLCAweDIwLCAweGYwLAorCTB4NTYsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4NTYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDY0LCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4NzAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDEzLCAweDhlLCAweGE4LCAweDQ0LAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHg0NiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDY4LCAweDAxLCAweDAwLCAweDA1LCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDFiLCAweDhlLCAweGE4LCAweDQ0LCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgzOCwgMHgwMCwgMHgyZSwgMHhhNywgMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDIzLCAweDhlLCAweDIyLCAweDQzLCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OGUsIDB4MjIsIDB4NDQsCisJMHhlNywgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0NSwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDY4LCAweDAxLCAweDIwLCAweGEyLAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgyYSwgMHg4ZSwgMHgyMywgMHgwYiwgMHhlNSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4NTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4NDMsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHgwNSwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmYsIDB4OGUsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMCwgMHgyZSwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4ZjAsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4NDEsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDNhLCAweDhlLCAweGEyLCAweDQ5LCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDg2LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4M2UsIDB4OGUsIDB4MDAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg4NiwgMHgwMCwgMHgyZiwgMHg0OSwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzZSwgMHg4ZSwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDhiLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsIDB4NDEsIDB4OGUsIDB4YTIsIDB4NDYsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDhlLCAweDAwLCAweDQwLCAweGU1LCAweGIxLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDJmLCAweDQ2LAorCTB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4NDUsIDB4OGUsIDB4YTIsIDB4ZjIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGU3LCAweDkxLCAweDAxLCAweDAwLCAweGE4LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MzQsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsCisJMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZiLCAweDEyLCAweGIwLCAweDAxLCAweDAwLCAweDBmLCAweDAwLCAweDAwLCAweGYzLAorCTB4MTYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MTQsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHg3MCwgMHg4ZSwgMHgyNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg1OCwgMHg4ZSwgMHgyMiwgMHgwYSwKKwkweDE2LCAweDZjLCAweDAwLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLCAweDEzLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsCisJMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhlNywgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg1NywgMHg4ZSwgMHhhMCwgMHg0MywgMHgxMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweGIwLCAweDAxLCAweDAwLCAweDRkLCAweDhlLCAweDAwLCAweDQxLCAweDE1LCAweGQwLCAweDAwLCAweDAwLAorCTB4NzAsIDB4OGUsIDB4MjIsIDB4MGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsCisJMHgxMywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDg0LCAweDMwLCAweDAwLCAweDAwLCAweGU3LCAweDk4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDhlLCAweDIyLCAweDQxLCAweDE1LCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OGUsIDB4YTAsIDB4NDMsCisJMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAwLCAweDNkLCAweDQzLCAweDExLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHhlZSwgMHg5NywgMHgwMCwgMHg0NywKKwkweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4NWYsIDB4OTUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDZjLCAweDhlLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4OGUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg1MSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MzQsIDB4MDAsIDB4MmUsIDB4NDEsIDB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg3OCwgMHg4ZSwgMHgwMCwgMHg0OCwgMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDM0LCAweDAwLCAweDJlLCAweDQxLCAweGY1LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDExLCAweDAwLCAweDQwLAorCTB4ZTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3ZCwgMHg4ZSwgMHgyMiwgMHg0NSwKKwkweDIzLCAweDdjLCAweDAwLCAweDAwLCAweGIwLCAweDAwLCAweDJmLCAweGYwLCAweDhjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4ZjAsIDB4OGMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNSwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAwLCAweDNlLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLCAweDgyLCAweDhlLCAweDIyLCAweDQ4LAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OGQsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgwYSwgMHg4YywgMHhjMCwgMHgwMSwgMHgwMCwgMHgzOCwgMHgwMCwgMHgyYSwgMHg0YSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4M2MsIDB4MDAsIDB4MjAsIDB4MWIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgzOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDI2LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGY4LAorCTB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4OGUsIDB4MjMsIDB4MDEsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDRjLCAweDAwLCAweDIwLCAweGYwLCAweGU0LCAweGIxLCAweDAxLCAweDAwLAorCTB4NDQsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDAsIDB4MjAsIDB4NDEsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIxLCAweDk5LCAweDAwLCAweGYwLCAweDI0LCAweDMwLCAweDAxLCAweDAwLCAweDk5LCAweDhlLCAweGEyLCAweDQ0LAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTcsIDB4OGUsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg4YSwgMHg5NiwgMHgwMCwgMHg0MCwgMHgzYiwgMHgzMCwgMHgwMSwgMHgwMCwgMHhiZCwgMHg4ZSwgMHhhMiwgMHgwOCwKKwkweDNjLCAweDMwLCAweDAwLCAweDAwLCAweDk5LCAweDhlLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YzcsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmQsIDB4OGUsIDB4YTIsIDB4MDgsCisJMHgzYywgMHgzMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMCwgMHgyMCwgMHgxYywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDU0LCAweDAwLCAweDIwLCAweDEzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDRlLCAweDAwLCAweDIwLCAweDAxLAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MjAsIDB4MGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHg5OCwgMHgwMCwgMHg1ZiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4NjksIDB4OTYsIDB4MDAsIDB4ZjMsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OGUsIDB4MjIsIDB4NGEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhNSwgMHg4ZSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDM3LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDY5LCAweDk2LCAweDAwLCAweGYzLAorCTB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2UsIDB4NDMsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxZiwgMHgwMCwgMHg2MCwgMHgwMCwKKwkweDAwLCAweDhjLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDg1LCAweDExLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmYsIDB4ZjAsCisJMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwgMHg4YywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDk4LCAweDAwLCAweDVmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OGUsIDB4MDAsIDB4NDksIDB4MTksIDB4ODAsIDB4MDAsIDB4MDAsCisJMHhiNCwgMHg4ZSwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg4YSwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDNiLCAweDMwLCAweDAxLCAweDAwLCAweGI4LCAweDhlLCAweGEyLCAweDA4LCAweDNjLCAweDMwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDhlLCAweGEyLCAweDA4LCAweDNjLCAweDMwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDVmLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHgwMCwgMHgyZCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1NCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDM4LCAweGIwLCAweDAxLCAweDAwLCAweDRlLCAweDAwLCAweDJkLCAweGYwLCAweDI2LCAweGIwLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgxNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4YywgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDQ2LCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDY4LCAweDAxLCAweDJkLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NjgsIDB4ZjIsIDB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHgwNSwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDM3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MzYsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MmUsIDB4NDAsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDgxLCAweGQwLCAweDAxLCAweDAwLCAweGNiLCAweDhlLCAweDIwLCAweDk0LAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YjUsIDB4OTcsIDB4MDAsIDB4OTQsIDB4ZTUsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHhjYywgMHg4ZSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiNSwgMHg5NywgMHgwMCwgMHg0MCwKKwkweGU0LCAweDMxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDQ2LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4OGUsIDB4YTgsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MGYsCisJMHgxZSwgMHg4YywgMHgwMSwgMHgwMCwgMHhkYywgMHg4ZSwgMHg4MiwgMHg0MSwgMHgyMywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGQ2LCAweDhlLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhkMywgMHg4ZSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmIsIDB4OTUsIDB4MDAsIDB4NDMsCisJMHgyMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MWUsIDB4OGMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4ZSwgMHgyMiwgMHg0MSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGUwLCAweDhlLCAweGEzLCAweDAxLCAweDBjLCAweDZjLCAweDAwLCAweDAwLAorCTB4ZTEsIDB4OGUsIDB4MDAsIDB4MDYsIDB4MDQsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg4ZSwgMHgyMCwgMHgwMiwgMHgzNiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGU3LCAweDhlLCAweDAwLCAweDAyLAorCTB4ZjAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4OGUsIDB4YTMsIDB4MDEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhlNywgMHg4ZSwgMHg2OCwgMHgwNiwgMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMSwKKwkweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGU5LCAweDhlLCAweDgwLCAweDA4LCAweGYwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MWUsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDFmLCAweDAwLCAweDE5LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGViLCAweDhlLCAweGE4LCAweDEzLAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MjIsIDB4OGYsIDB4MjIsIDB4MDIsIDB4MTQsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg0NCwgMHgwMCwgMHgyZCwgMHgwMiwgMHgwYywgMHhkMCwgMHgwMSwgMHgwMCwgMHgxMiwgMHg4ZiwgMHhhMiwgMHgwMiwKKwkweDAyLCAweDUwLCAweDAwLCAweDAwLCAweGY5LCAweDhlLCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZjgsIDB4OGUsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGY0LCAweDhlLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0NCwgMHgwMCwgMHgyZCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDQ4LCAweDAwLCAweDJkLCAweGYwLCAweDM4LCAweGIwLCAweDAxLCAweDAwLAorCTB4NGMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MmYsIDB4ZjIsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMywgMHg4ZiwgMHgyMiwgMHgwMSwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA2LCAweDhmLCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNSwgMHg4ZiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MDIsIDB4OGYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDM4LCAweDAwLCAweDJkLCAweGYwLAorCTB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ZTEsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg0YSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDQ0LCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDBmLCAweDhmLCAweGE4LCAweDVjLAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGYsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgzOCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxZCwgMHg4ZiwgMHgyMiwgMHgwNiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MWIsIDB4OGYsIDB4YTIsIDB4MDIsIDB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4OGYsIDB4MGQsCisJMHg0MiwgMHgzMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4MzcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGUsIDB4MDAsIDB4YTEsIDB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4ZSwgMHgwMCwgMHgwMiwKKwkweDM2LCAweGQwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDIwLCAweDFjLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NTQsIDB4MDAsIDB4MjAsIDB4MTMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MjAsIDB4MDEsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHgwYSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDI3LCAweDhmLCAweDAwLCAweDVmLCAweDAxLCAweGIwLCAweDAwLCAweDAwLCAweDM3LCAweDAwLCAweDJkLCAweDQ2LAorCTB4MDEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHgyNiwgMHg4ZiwgMHhhMCwgMHg0MywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwKKwkweDAxLCAweGIwLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTksIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MmQsIDB4OGYsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDE5LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDJhLCAweDhmLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmYiwgMHg5NSwgMHgwMCwgMHgxMCwgMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDM0LCAweDhmLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzMSwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDYwLCAweDAxLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg4ZiwgMHg5MCwgMHhmMiwKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsIDB4MTcsIDB4YTQsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHgyYSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgyYSwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDQyLCAweDhmLCAweDIyLCAweDQ5LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhmMCwgMHgwMCwgMHgwYywgMHgxOCwgMHg4YywgMHgwMSwgMHgwMCwgMHhmNSwgMHg5NywgMHgwMCwgMHg0YywKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDUyLCAweDhmLCAweDAwLCAweDAwLCAweDkyLCAweGIwLCAweDAwLCAweDAwLAorCTB4NDksIDB4OGYsIDB4MjIsIDB4NDAsIDB4YWYsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MWUsCisJMHg5NCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDcyLCAweDk4LCAweDAwLCAweDQwLCAweDA1LCAweDMwLCAweDAxLCAweDAwLCAweDQ4LCAweDhmLCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NWIsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MTksIDB4ODAsIDB4MDAsIDB4MDAsCisJMHg1MiwgMHg4ZiwgMHgwMCwgMHgwMCwgMHg5MiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHg4ZiwgMHg0MywgMHg0OCwKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweDAwLCAweDFlLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NGUsIDB4OGYsIDB4MjgsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OGYsIDB4MjIsIDB4NDgsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDVhLCAweDhmLCAweDI4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NGUsIDB4OGYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYiwgMHgwMCwgMHg5MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1NywgMHg4ZiwgMHgyMiwgMHg0MSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTQsIDB4OGYsIDB4YTIsIDB4NDEsCisJMHgzYiwgMHg1MCwgMHgwMCwgMHgwMCwgMHg1YiwgMHg4ZiwgMHgwMCwgMHg0OSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweDFlLCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NWIsIDB4OGYsIDB4MDAsIDB4NDksIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYiwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg1ZSwgMHg4ZiwgMHgyMiwgMHg1ZiwKKwkweDAxLCAweDZjLCAweDAwLCAweDAwLCAweDRiLCAweDk5LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YWEsIDB4OGEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjUsIDB4OGYsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDY1LCAweDhmLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg2MiwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDY1LCAweDhmLCAweDQwLCAweDA1LCAweDQ4LCAweDMxLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsIDB4OTQsIDB4ODksIDB4MDEsIDB4MDAsIDB4NmIsIDB4OGYsIDB4ODUsIDB4Y2EsCisJMHg5NCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg5OSwgMHgxOCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDAwLCAweDAwLCAweDBmLCAweDFlLCAweDhjLCAweDAxLCAweDAwLCAweDcyLCAweDg5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MTgsIDB4MDAsIDB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE5LCAweDgwLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDIyLCAweDQ3LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YzcsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NzIsIDB4OGYsIDB4YTIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI1LCAweDk3LCAweDAwLCAweDQwLCAweDBkLCAweDMwLCAweDAxLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgyZCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHg3OCwgMHg4ZiwgMHg5MCwgMHg0YywKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4N2EsIDB4OGYsIDB4MjIsIDB4NDMsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg0NSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDY4LCAweDAxLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAxLCAweDJlLCAweGYyLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHg4MSwgMHg4ZiwgMHgyNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDgxLCAweGMwLCAweDAxLCAweDAwLCAweDgyLCAweDhmLCAweDAwLCAweDk0LCAweGU1LCAweGIxLCAweDAwLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4NjIsIDB4NDAsIDB4N2UsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsCisJMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweDhkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDg4LCAweDhmLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5NCwgMHg4ZiwgMHgyMiwgMHg0MCwgMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDQwLCAweDAwLCAweDA4LCAweDk0LCAweGRjLCAweDAxLCAweDAwLCAweDcyLCAweDk4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OTIsIDB4OGYsIDB4MjIsIDB4NDAsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhjYywgMHg5NSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4Y2YsIDB4OGQsIDB4MDAsIDB4NDcsIDB4MTksIDB4ODAsIDB4MDAsIDB4MDAsIDB4OTQsIDB4OGYsIDB4NDMsIDB4NDgsCisJMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwOCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDlhLCAweDhmLCAweDI4LCAweDQwLCAweDA1LCAweDMwLCAweDAwLCAweDAwLCAweDk1LCAweDhmLCAweDIyLCAweDQ4LAorCTB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MWIsIDB4MDgsIDB4MDAsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgxYiwgMHg0NywKKwkweDE5LCAweDgwLCAweDAwLCAweDAwLCAweDM1LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OWYsIDB4OGYsIDB4YTAsIDB4NDMsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDJmLCAweGYwLAorCTB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHhhYSwgMHg4ZiwgMHhhMiwgMHg0MSwgMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgyMiwgMHg0NCwKKwkweDgzLCAweDcwLCAweDAwLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ZTcsIDB4ZTEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MWYsIDB4ZjAsCisJMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHg0YiwgMHg5OSwgMHgwMCwgMHg0OCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGFhLCAweDhhLCAweDIzLCAweDQxLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweGFhLCAweDhhLCAweDAwLCAweDQ3LAorCTB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgzNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweDk4LCAweDAxLCAweDAwLAorCTB4ZWUsIDB4OTcsIDB4MDAsIDB4NDcsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDJkLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3ZSwgMHg4ZSwgMHhhMiwgMHg0MCwKKwkweDhmLCAweDdjLCAweDAwLCAweDAwLCAweGI4LCAweDhmLCAweDIyLCAweDQ3LCAweDhmLCAweDdjLCAweDAwLCAweDAwLAorCTB4N2UsIDB4OGUsIDB4MDAsIDB4NDgsIDB4MTksIDB4OTAsIDB4MDAsIDB4MDAsIDB4MjcsIDB4OTAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgyZCwgMHg1ZCwgMHgwNSwgMHhiNCwgMHgwMSwgMHgwMCwKKwkweDM3LCAweDAwLCAweDJkLCAweGYzLCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhhOCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDg2LCAweGRjLCAweDAxLCAweDAwLAorCTB4NDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTQsIDB4MDAsIDB4NGEsCisJMHhmMCwgMHgzMSwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgyZiwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDhmLCAweGEyLCAweDUwLCAweDhmLCAweDUwLCAweDAwLCAweDAwLCAweDM0LCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhjOSwgMHg4ZiwgMHhhMCwgMHg0MywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MjAsIDB4NDcsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MjIsIDB4NDcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0NywgMHgwYywgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDhmLCAweDg0LCAweDAxLCAweDAwLCAweGRlLCAweDhmLCAweDIyLCAweDQ3LAorCTB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhkZSwgMHg4ZiwgMHgxZiwgMHhmMCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ZDcsIDB4OGYsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGQ0LCAweDhmLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDcsIDB4OGYsIDB4NDIsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg1ZCwKKwkweDY5LCAweDkzLCAweDAxLCAweDAwLCAweGRjLCAweDhmLCAweDIzLCAweDQxLCAweDBkLCAweDZjLCAweDAwLCAweDAwLAorCTB4YjksIDB4OGYsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NGIsIDB4OTksIDB4MDAsIDB4MDUsCisJMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHhhYSwgMHg4YSwgMHgwMCwgMHg0OCwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGNmLCAweDhkLCAweDIyLCAweDQwLCAweDhmLCAweDZjLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDVmLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweGE2LCAweDAwLCAweDJkLCAweDQ5LCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MDAsIDB4MmQsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgyLCAweGY4LCAweDAxLCAweDAwLCAweDE5LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4OGYsIDB4YTAsIDB4NDAsIDB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyYywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4ZiwgMHhhMywgMHg0MCwKKwkweDgyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4ZWYsIDB4OGYsIDB4MjAsIDB4NGMsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg4NiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEyLCAweDAwLCAweDIwLCAweDQyLCAweGU2LCAweGIxLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4NTAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTksIDB4MDAsIDB4NDAsCisJMHg4NywgMHgzMCwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZiwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweGYwLCAweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDVmLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgyMiwgMHg0NiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NjIsIDB4ZjIsIDB4OTYsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0YSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGY1LCAweDk3LCAweDAwLCAweDQ2LCAweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MjIsIDB4NDksIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg4NiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MiwgMHhmMiwKKwkweDgwLCAweGNjLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NGEsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZjUsIDB4OTcsIDB4MDAsIDB4NDcsCisJMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDVmLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDVjLAorCTB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYyLCAweGYyLCAweDgwLCAweGM4LCAweDAxLCAweDAwLAorCTB4MTMsIDB4OTAsIDB4OTAsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4NjIsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhhNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGNmLCAweDhkLCAweDIyLCAweDQwLCAweGU1LCAweDZkLCAweDAwLCAweDAwLCAweGNmLCAweDhkLCAweDAwLCAweDQxLAorCTB4ZTUsIDB4YzEsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4NGQsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDk2LCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDNkLCAweDk5LCAweDAwLCAweDQwLAorCTB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgyMywgMHg5MCwgMHg4MCwgMHhmMywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGU3LCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4Y2YsIDB4OGQsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDExLCAweDAwLCAweDQwLCAweGU1LCAweDk5LCAweDAxLCAweDAwLCAweGM3LCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MzgsIDB4OTAsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweDUxLCAweDgzLCAweGQwLCAweDAxLCAweDAwLAorCTB4MzQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsCisJMHg4NCwgMHhjYywgMHgwMSwgMHgwMCwgMHgzMCwgMHg5MCwgMHg5ZiwgMHg0MiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDQyLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4MDMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgzMiwgMHg5MCwgMHgzNywgMHg1YywgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDMzLCAweDkwLCAweGE4LCAweDRiLCAweDE5LCAweDEwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzUsIDB4OTAsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmZiwgMHg4OSwgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYwLAorCTB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MzAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzNSwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZSwgMHg0MywKKwkweGU3LCAweGUxLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MjAsIDB4MDAsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzYywgMHgwMCwgMHgyMCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MmIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MGQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg0NywgMHg5MCwgMHhhMCwgMHgxNCwKKwkweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MGUsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHhmOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZCwgMHgxNCwgMHhmOCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDUwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDUwLCAweDkwLCAweDIyLCAweDRhLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NDMsIDB4ODYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzMCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhjOCwgMHgwMSwgMHgwMCwgMHg1MCwgMHg5MCwgMHhhNCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NmUsIDB4NDMsIDB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4M2IsIDB4OTgsIDB4MDAsIDB4MzAsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1NCwgMHg5MCwgMHhhMCwgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDViLCAweDkwLCAweDIyLCAweDRhLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhjYywgMHgwMCwgMHgyZCwgMHhhYiwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDVhLCAweDkwLCAweGEwLCAweGYwLCAweDE2LCAweDQ0LCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDQxLCAweDMxLCAweGMwLCAweDAxLCAweDAwLCAweGJjLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NjEsIDB4OTAsIDB4MDYsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgyMCwgMHhmMiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwOSwgMHg0NiwKKwkweDE5LCAweDEwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MmQsIDB4NTAsCisJMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHg2NiwgMHg5MCwgMHg5MCwgMHg0YywgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDY4LCAweDkwLCAweDIyLCAweDQzLAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAxLCAweDJlLCAweGYyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4M2UsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4NmYsIDB4OTAsIDB4MjQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDcwLCAweDkwLCAweDAwLCAweDk0LCAweGU1LCAweGIxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDYyLCAweDQwLAorCTB4N2UsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweDhkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDc2LCAweDkwLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg5MCwgMHgyMiwgMHg0MCwgMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwOCwKKwkweDk0LCAweGRjLCAweDAxLCAweDAwLCAweDcyLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4N2IsIDB4OTAsIDB4YTIsIDB4NDAsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg4NCwgMHg5MCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDkwLCAweDQzLCAweDQ4LCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDA4LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ODEsIDB4OTAsIDB4YTgsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgzNSwgMHgwMCwgMHgxYiwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDg3LCAweDkwLCAweGEwLCAweDQzLCAweDg1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywgMHg4MiwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDhiLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDY5LCAweDk2LCAweDAwLCAweGYzLCAweDk0LCAweDMwLCAweDAxLCAweDAwLAorCTB4MjcsIDB4OTAsIDB4MjIsIDB4NGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTUsIDB4OGUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDY5LCAweDk2LCAweDAwLCAweGYzLCAweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDc1LCAweDhlLCAweDIyLCAweDRhLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTUsIDB4OGUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwKKwkweDEyLCAweGIwLCAweDAxLCAweDAwLCAweDBmLCAweDAwLCAweDAwLCAweGYzLCAweDkwLCAweDg4LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MGMsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4OWYsIDB4OGUsIDB4MjIsIDB4MDYsCisJMHg5MCwgMHg2YywgMHgwMCwgMHgwMCwgMHg1YywgMHgwMCwgMHgzZCwgMHg0MywgMHgxMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDAwLCAweDJkLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDJmLCAweGYwLAorCTB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MmEsIDB4NTAsIDB4ZTcsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHhhMSwgMHg5MCwgMHhhMCwgMHg0MywKKwkweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4OTQsIDB4MDAsIDB4MTAsIDB4ODYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMywgMHg5MCwgMHg0MiwgMHgwNSwgMHg0OCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDlmLCAweDhlLCAweDFhLCAweDVkLAorCTB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MmQsIDB4MTAsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg1YywgMHgwMCwgMHgzZCwgMHg0MywgMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDM1LCAweDAwLCAweDJmLCAweGYwLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NmIsIDB4ZmIsIDB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OTAsIDB4YTAsIDB4NDMsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgzNSwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweGYzLAorCTB4MTIsIDB4YzgsIDB4MDEsIDB4MDAsIDB4YjEsIDB4OTAsIDB4YTAsIDB4NDMsIDB4MTMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweGNlLCAweDk0LCAweDAwLCAweDRhLCAweGYwLCAweDMxLCAweDAxLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4OTAsIDB4NDIsIDB4MDUsCisJMHg0OCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5MywgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFhLCAweDVkLCAweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHhhMywgMHg4ZiwgMHgyMiwgMHg0MSwgMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzNSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWQsIDB4OGYsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGJmLCAweDkwLCAweDQ3LCAweGYyLCAweDEyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDNmLCAweDQyLAorCTB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4YzQsIDB4OTAsIDB4MjIsIDB4NDcsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg2YiwgMHg4NCwgMHgxZiwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHg5MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweGU3LCAweDkxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4NDIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4NzUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjNiwgMHg5MCwgMHhhOCwgMHhiMSwgMHgwYywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDQ2LCAweDk3LCAweDAwLCAweDEwLCAweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmUsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHhhOCwgMHgzZCwgMHg0NiwgMHgwZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDkwLCAweDIyLCAweDQwLCAweGUxLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDIsIDB4NDEsIDB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4Y2QsIDB4OTAsIDB4MDAsIDB4NTAsCisJMHg0MywgMHhjMSwgMHgwMCwgMHgwMCwgMHhkYywgMHg5MCwgMHgyMiwgMHg0YiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYyLCAweDRiLCAweDEyLCAweDk0LCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA3LAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg5NCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0YSwKKwkweDQ0LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NWUsIDB4MDEsIDB4MDAsIDB4NGIsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MDAsIDB4MDUsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGRhLCAweDkwLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwOSwKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweGE4LCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDkwLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksIDB4M2YsIDB4NDIsIDB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHhlNiwgMHg5MCwgMHg0NywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzZiwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4NTUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlYSwgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGVmLCAweDkwLCAweDIyLCAweDRiLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4OTAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NywgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NiwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweGY1LCAweDkwLCAweDIwLCAweDA5LCAweDk2LCAweDZjLCAweDAwLCAweDAwLAorCTB4ZjUsIDB4OTAsIDB4MWYsIDB4MDksIDB4OTYsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NmIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDk3LCAweDAwLCAweDU3LCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhmYiwgMHg5MCwgMHgyMiwgMHhmMywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHg0MiwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NTIsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4NDIsCisJMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHgzYSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDk4LCAweDAwLCAweDUyLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjOSwgMHg5NiwgMHgwMCwgMHg0MCwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgyMiwgMHg0MCwKKwkweDk1LCAweDZjLCAweDAwLCAweDAwLCAweDA2LCAweDkxLCAweGEyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDc0LCAweDk2LCAweDAwLCAweDUyLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2IsIDB4OTYsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHg4OSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDExLCAweDkxLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHgzYSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDAwLCAweGE2LAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4OTEsIDB4ODMsIDB4MWUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwOCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDJhLCAweGMwLCAweDAxLCAweDAwLCAweGY4LCAweDk3LCAweDAwLCAweDA4LCAweDgwLCAweDMwLCAweDAxLCAweDAwLAorCTB4MTgsIDB4OTEsIDB4MDAsIDB4NWUsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MTksIDB4OTgsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwgMHhkYSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4ZCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk4LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MjAsIDB4OTEsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDFkLCAweDkxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4OTcsIDB4MDAsIDB4NWUsCisJMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDI0LCAweDkxLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQwLAorCTB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YmYsIDB4OGQsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhmOSwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MmIsIDB4OTEsIDB4MjIsIDB4NDMsIDB4M2QsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHgzZCwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDJjLCAweDkxLCAweDAwLCAweDQyLCAweDE5LCAweDkwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDJkLCAweDQ1LAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ODcsIDB4OTEsIDB4ODMsIDB4MWUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4NywgMHg5MSwgMHgwMCwgMHg0NCwgMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwgMHhiZiwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDNmLCAweDkxLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4M2IsIDB4OTEsIDB4YTIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHhhMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGUzLCAweDg5LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDM4LCAweDkxLCAweGEyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHg4OSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3NCwgMHg5NiwgMHgwMCwgMHgxNSwKKwkweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDk2LCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZjksIDB4OTYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDk3LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGZmLCAweDg5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OTEsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhmOSwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0MywgMHg5MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM5LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NmYsIDB4OTEsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHg5MSwgMHhhMCwgMHgwYiwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDMwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLAorCTB4NDQsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4NGIsIDB4OTEsIDB4YTgsIDB4MDAsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDAwLCAweDAwLCAweDE1LCAweDk4LCAweGM4LCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDJlLCAweDBiLAorCTB4OTksIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4NTAsIDB4OTksIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHg2MiwgMHgwMSwgMHg4MCwgMHhjYywgMHgwMSwgMHgwMCwgMHgwYywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDJkLCAweDAwLCAweDJkLCAweGYwLCAweDIyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsCisJMHgyMywgMHg4MCwgMHgwMSwgMHgwMCwgMHhkNCwgMHgwMCwgMHgzZiwgMHg0MSwgMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwKKwkweDBiLCAweDAwLCAweDAwLCAweDExLCAweGU0LCAweGY1LCAweDAxLCAweDAwLCAweDJmLCAweDAwLCAweDIwLCAweDQ3LAorCTB4ZTcsIDB4YjUsIDB4MDEsIDB4MDAsIDB4NWMsIDB4OTEsIDB4MjMsIDB4MGIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhlNSwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDAzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4MDIsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4OTcsIDB4MDAsIDB4MDAsCisJMHgyYSwgMHg0MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDYxLCAweDkxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjYywgMHg5NSwgMHgwMCwgMHgwNSwgMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDZkLCAweDkxLCAweDI2LCAweDExLCAweDAwLCAweDMwLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDAwLCAweDAwLCAweDQwLCAweDk5LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorCTB4OTgsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4OTcsIDB4MDAsIDB4NGMsIDB4MDIsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHg5OCwgMHgwMSwgMHgwMCwgMHg3NCwgMHg5MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDJmLCAweDA4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ZjQsIDB4YzksIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHhlNCwgMHhjZCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGY4LCAweDk3LCAweDAwLCAweDAwLCAweDJhLCAweDQwLCAweDAxLCAweDAwLCAweDc5LCAweDkxLCAweDIyLCAweDQ0LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmYsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhlMCwgMHhjMSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDdhLCAweDkxLCAweDAwLCAweDAxLCAweGUwLCAweGQxLCAweDAwLCAweDAwLAorCTB4ZGEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4OGQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NjMsIDB4MDAsIDB4YTYsCisJMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwMCwgMHgwNywgMHgxNiwgMHgxNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDgyLCAweDkxLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg3ZiwgMHg5MSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4YTEsIDB4OTcsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ODUsIDB4OTEsIDB4MjIsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDhkLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDg3LCAweDkxLCAweDAwLCAweDRhLAorCTB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHgwMCwgMHgyZCwgMHgxNSwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDJkLCAweGYwLCAweDI2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MmYsIDB4ZjIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHhlMCwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDE1LAorCTB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1YiwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDM1LCAweGIwLCAweDAwLCAweDAwLCAweDJmLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4Y2IsIDB4OTEsIDB4YTIsIDB4NDUsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MjAsIDB4MGIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgyMCwgMHgxMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIyLCAweDAwLCAweDIwLCAweDA2LCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweGExLCAweDkxLCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhhMSwgMHg5MSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OWQsIDB4OTEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YzQsIDB4OTEsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHhiMiwgMHg5MSwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgyMSwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDc0LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YmYsIDB4OTEsIDB4MjIsIDB4NGIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDkxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OTEsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhlMiwgMHg5NSwgMHgwMCwgMHg0MCwgMHgxMSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg5MSwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YjEsIDB4OTEsIDB4MjIsIDB4MDksIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2ZiwgMHg4NCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIxLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDcwLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiNSwgMHg5MSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4YmIsIDB4OTEsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTIsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHgxMSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhiYywgMHg5MSwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGJlLCAweDkxLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHg4NCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YzAsIDB4OTEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM3LCAweDkxLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGUyLCAweDk1LCAweDAwLCAweDQwLAorCTB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YzgsIDB4OTEsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjYSwgMHg5MSwgMHgyMiwgMHgwOSwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLAorCTB4YmYsIDB4OGQsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTksCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhkMiwgMHg5MSwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZDYsIDB4OTEsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTIsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHgxMSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhkNywgMHg5MSwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDJkLCAweDBhLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkYywgMHg5MSwgMHgwMywgMHgxZSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGRkLCAweDkxLCAweDAwLCAweDQxLCAweDg3LCAweGIwLCAweDAwLCAweDAwLAorCTB4MjEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZWEsIDB4OTYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGUxLCAweDkxLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQwLAorCTB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OTEsIDB4MjIsIDB4NDQsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHg5OCwgMHgwMCwgMHg0ZiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDE5LCAweDgwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweGEyLCAweDRhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4YmYsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YmEsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlYSwgMHg5MSwgMHg5YywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGNjLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweGZiLCAweDk4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhjNCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweGQ4LCAweDk4LCAweDAwLCAweGYwLCAweDg0LCAweDMwLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmYsIDB4OGQsIDB4MjIsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGJmLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZjYsIDB4OTEsIDB4MjIsIDB4NDAsIDB4ZTcsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgzMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZSwgMHg5MSwgMHhhMiwgMHg0MCwKKwkweGU1LCAweDZkLCAweDAwLCAweDAwLCAweGI2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MjQsIDB4MDAsIDB4MjAsIDB4MGIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MjAsIDB4MTMsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgyMCwgMHgwNiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDE0LCAweDAwLCAweDIwLCAweDBhLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGJmLCAweDhkLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDZmLCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MGMsIDB4OTIsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHg5OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxZiwgMHgxNSwgMHg5OCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDBjLCAweDkyLCAweDIwLCAweDAxLCAweDk4LCAweDZjLCAweDAwLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NDYsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDksIDB4OTIsIDB4YTgsIDB4MDAsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGFjLCAweDAwLCAweDJmLCAweDAwLCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorCTB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MmYsIDB4MTUsIDB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMSwKKwkweDgwLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4OGUsIDB4OTEsIDB4MjIsIDB4MDksIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4ZSwgMHg5MSwgMHgwMCwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwgMHhlYSwgMHg5NiwgMHgwMCwgMHhmMCwKKwkweDg0LCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4MmMsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmQsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgwMCwgMHg0MiwgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweGRjLCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY1LCAweDk3LCAweDAwLCAweDQ4LAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyMSwgMHg5MiwgMHhhOCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MjcsIDB4OTIsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MjYsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHgxMywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDE0LCAweDAwLCAweDJkLCAweGYwLAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsIDB4ODQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxMywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHhlYSwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4M2YsIDB4OTIsIDB4MDAsIDB4MDksIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YmEsIDB4OGQsIDB4ODcsIDB4NDIsCisJMHgxOSwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyZiwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDhkLCAweDAwLCAweDQwLCAweGU3LCAweDkxLCAweDAwLCAweDAwLCAweDJmLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTIsIDB4MjIsIDB4NDcsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg1MSwgMHg5NSwgMHgwMCwgMHg0MCwgMHhlNywgMHgzMSwgMHgwMSwgMHgwMCwgMHgzZCwgMHg5MiwgMHgyMiwgMHgwMCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDM4LCAweDkyLCAweGEyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDJkLCAweGYyLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDc0LCAweDk2LCAweDAwLCAweGYyLAorCTB4MDIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2IsIDB4OTYsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzZSwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDAxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4NDQsIDB4OTIsIDB4MjIsIDB4MDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDMsIDB4OTIsIDB4YTIsIDB4NDIsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhjOSwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDQ0LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGY5LCAweDk2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTIsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDRjLCAweDkyLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0OSwgMHg5MiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGNlLCAweDkyLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YmYsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg1MiwgMHg5MiwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHg0ZCwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweDAyLCAweDA0LCAweGRjLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ODksIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjAsIDB4OTIsIDB4MjIsIDB4NDIsIDB4OTYsIDB4MTQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2NCwgMHgwMCwgMHg2OCwgMHg0MCwKKwkweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDVkLCAweDkyLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDYxLCAweDkyLCAweGE4LCAweDVjLCAweDFmLCAweDAwLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2NSwgMHg5MiwgMHg0NywgMHhmMiwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDk5LCAweDNmLCAweDQyLCAweDEzLCAweGYwLCAweDAxLCAweDAwLCAweDZhLCAweDkyLCAweDIyLCAweDQ3LAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NmIsIDB4ODQsIDB4MWYsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2NCwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweGU3LCAweDkxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDA5LCAweDk2LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3MiwgMHg5MiwgMHhhOCwgMHg0MCwKKwkweGUxLCAweDMxLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4OTksIDB4M2YsIDB4NDIsIDB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4NzYsIDB4OTIsIDB4NDcsIDB4MDUsCisJMHg0OCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgzZiwgMHgwMCwgMHgwMCwgMHhmMywgMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFmLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4N2UsIDB4OTIsIDB4MjIsIDB4NGIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDdjLCAweDkyLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjIsIDB4MDAsIDB4MGIsCisJMHgxNiwgMHhkYywgMHgwMSwgMHgwMCwgMHg1MSwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDk2LCAweDkyLCAweDIyLCAweDAwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGZmLCAweDk2LCAweDAwLCAweDVmLAorCTB4MDEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4MjIsIDB4NDAsIDB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4OCwgMHg5MiwgMHhhOCwgMHgwMCwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3NCwgMHg5NiwgMHgwMCwgMHg1MiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ODAsIDB4OTIsIDB4MjIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAxLCAweDgwLCAweDAxLCAweDAwLCAweDdiLCAweDk2LCAweDAwLCAweDRiLAorCTB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTIsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgxNywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweDBjLCAweDk2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NGMsIDB4OTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGExLCAweDk3LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDA3LAorCTB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhhMCwgMHg5MiwgMHgzMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU2LCAweDgxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4YjcsIDB4MDAsIDB4MGQsIDB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHhlNiwgMHg4MSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgxMCwgMHgwZiwgMHg5NCwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDk5LCAweDAwLCAweDVmLCAweDk1LCAweDA0LCAweDAxLCAweDAwLCAweDU1LCAweDk2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YWEsIDB4OTIsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHhhOCwgMHg5MiwgMHg0MywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg0MSwKKwkweDMxLCAweGQzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiOCwgMHg5NSwgMHgwMCwgMHg0MSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGJmLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmIsIDB4OTIsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMiwgMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDAzLCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLAorCTB4YjQsIDB4OTIsIDB4MzcsIDB4NWMsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiOCwgMHg5MiwgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGI1LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjgsIDB4OTIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHg4OSwgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgyMiwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZjUsIDB4OTcsIDB4MDAsIDB4NGEsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGMsIDB4OTYsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MiwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDJmLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGNjLCAweDkyLCAweDIyLCAweDQ3LAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NTEsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ZTcsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHhjYywgMHg5MiwgMHgyMiwgMHgwMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjNywgMHg5MiwgMHhhMiwgMHg0MCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwMCwgMHgyZCwgMHhmMiwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDc0LCAweDk2LCAweDAwLCAweGYyLCAweDAyLCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDk2LCAweDAwLCAweDRiLAorCTB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmNSwgMHg5NywgMHgwMCwgMHg0OCwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhkYywgMHg5NiwgMHgwMCwgMHg1YywKKwkweDFmLCAweDEwLCAweDAxLCAweDAwLCAweGQxLCAweDkyLCAweDg3LCAweDQyLCAweDE5LCAweDEwLCAweDAwLCAweDAwLAorCTB4OGIsIDB4MDAsIDB4MmYsIDB4NDcsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGRjLCAweDk2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHhiYSwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4ZCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4YzQsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OTgsIDB4MDAsIDB4ZjAsCisJMHg4NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDk4LCAweDAwLCAweDQ1LCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDIyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4M2EsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhiYSwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGJmLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZTUsIDB4OTIsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OTcsIDB4MDAsIDB4NDcsCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHgwMiwgMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZTEsIDB4MDAsIDB4YTYsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDA3LCAweDg0LCAweDk0LCAweDAxLCAweDAwLAorCTB4YTEsIDB4OTcsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGNjLCAweDk1LCAweDAwLCAweDQxLCAweGU3LCAweDQxLCAweDAxLCAweDAwLCAweGJmLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjYsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDJjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4MGEsCisJMHgyYywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDBiLCAweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAxLCAweDkzLCAweDI2LCAweDQ3LAorCTB4OTcsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHg5MywgMHgyMywgMHg0YiwgMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHgzMywgMHg5OCwgMHgwMCwgMHg0YiwKKwkweDA0LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDMzLCAweDk4LCAweDAwLCAweDRiLCAweDA0LCAweDUwLCAweDAxLCAweDAwLCAweDAyLCAweDkzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzMsIDB4OTgsIDB4MDAsIDB4MDYsIDB4MDQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHg5MywgMHhhMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNiwgMHg5MywgMHg4NCwgMHg0OCwKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweGFjLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDgsIDB4OTMsIDB4MDAsIDB4MGEsIDB4ZTAsIDB4YzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkYSwgMHg5NCwgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDksIDB4OTMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MTYsIDB4OTMsIDB4MjIsIDB4MDYsIDB4MTQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4OTcsIDB4MDAsIDB4NDUsCisJMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmNSwgMHg5MiwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MTIsIDB4OTMsIDB4YTgsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHg5MiwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmQsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGVhLCAweDk2LCAweDAwLCAweDQxLCAweDg3LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgxYywgMHg5MywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MjIsIDB4OTMsIDB4MjIsIDB4MDksIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgyNiwgMHg5MywgMHgyMiwgMHg0NCwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDIwLCAweDk4LCAweDAwLCAweDRmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDI2LCAweDkzLCAweGEyLCAweDQ3LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgzNCwgMHg5MywgMHgyMiwgMHg0YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDJjLCAweDkzLCAweGEyLCAweDE2LCAweDAyLCAweDMwLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDJkLCAweDAwLCAweDJkLCAweDA4LCAweDJhLCAweGIwLCAweDAxLCAweDAwLCAweDMwLCAweDkzLCAweDIyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZjksIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgzMSwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjOSwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDJlLCAweDAwLCAweDJhLCAweGQwLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MmEsIDB4MTUsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4MTYsCisJMHhlNCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg0NiwgMHg5MywgMHgyMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDJhLCAweGIwLCAweDAxLCAweDAwLCAweGY0LCAweDk4LCAweDAwLCAweDQwLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NDcsIDB4OTMsIDB4MjIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyYiwgMHgwMSwKKwkweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDJiLCAweDAwLCAweGE2LCAweDE2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4OTcsIDB4MDAsIDB4MDgsCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgzZiwgMHg5MywgMHgwMCwgMHg1ZSwgMHgxNywgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDE5LCAweDk4LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg5MywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTgsIDB4MDAsIDB4MDcsIDB4MTYsIDB4MTQsIDB4MDEsIDB4MDAsIDB4YTEsIDB4OTcsIDB4MDAsIDB4NWUsCisJMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGJmLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MWIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgxZiwgMHgxNSwgMHgxYSwgMHg1MCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg5MywgMHgyMCwgMHgxNiwKKwkweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NTEsIDB4OTMsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHgyYywgMHhkMCwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZiwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDViLCAweDkzLCAweDg0LCAweDQ1LCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDVjLCAweDkzLCAweDAwLCAweDBhLAorCTB4ZTAsIDB4YzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg1YiwgMHg5NywgMHgwMCwgMHg0MCwgMHgzNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDY0LCAweDkzLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg2MCwgMHg5MywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzMsIDB4OTMsIDB4YTIsIDB4MDIsIDB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg3NCwgMHg5MywgMHgyMiwgMHg0MCwgMHgyZCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsCisJMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDZiLCAweDkzLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweGYwLCAweDEwLCAweGM4LCAweDAxLCAweDAwLAorCTB4ZjAsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MWIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NzQsIDB4OTMsIDB4MDAsIDB4NWMsCisJMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDk1LCAweDAwLCAweDQwLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTMsIDB4MjMsIDB4MGQsIDB4MmMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MywgMHgyMiwgMHg0NiwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDcwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ODAsIDB4OTMsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDkzLCAweGE4LCAweDQ2LCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgyZCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZWEsIDB4OTYsIDB4MDAsIDB4NDEsIDB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDg1LCAweDkzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg4YiwgMHg5MywgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDhmLCAweDkzLCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OGYsIDB4OTMsIDB4YTIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweGE0LCAweDkzLCAweDIyLCAweDRhLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4OTUsIDB4OTMsIDB4YTIsIDB4MTYsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4MmQsIDB4MDgsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTAsIDB4OTMsIDB4MjIsIDB4NDIsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg5OSwgMHg5MywgMHhhMiwgMHhmMywgMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE1LCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2UsIDB4NDEsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHg5ZCwgMHg5MywgMHgyMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YSwKKwkweDExLCAweDkwLCAweDAxLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDA4LCAweGU0LCAweGY1LCAweDAxLCAweDAwLAorCTB4ZjksIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YTEsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjOSwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAwLCAweDJlLCAweDAwLCAweDJhLCAweGQwLCAweDAxLCAweDAwLCAweDMyLCAweDAwLCAweDJhLCAweDE1LAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4MTYsIDB4ZTQsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhhNywgMHg5MywgMHhhMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY0LCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4MmQsIDB4MDgsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjQsIDB4OTMsIDB4MjIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhiMSwgMHg5MywgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGFjLCAweDkzLCAweGEyLCAweGYzLCAweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE1LAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODUsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHgwMCwgMHgzZSwgMHg0MSwgMHg4NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHhiMCwgMHg5MywgMHgyMiwgMHg0MCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDExLCAweDkwLCAweDAxLCAweDAwLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTQsIDB4ZjUsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MmQsIDB4MDAsCisJMHgyYSwgMHhkMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMSwgMHgyZCwgMHhmMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNmLCAweDkxLCAweDAwLCAweGYwLCAweDJjLCAweGIwLCAweDAwLCAweDAwLCAweGY0LCAweDk4LCAweDAwLCAweDQxLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YmIsIDB4OTMsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhiOSwgMHg5MywgMHgyMywgMHgwZCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4N2IsIDB4OTYsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTMsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZiwgMHgwMSwgMHgxNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAwLCAweDJiLCAweDAxLCAweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDJiLCAweDAwLCAweGE2LAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHhjYiwgMHg5MywgMHgyMywgMHgwZCwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDkzLCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDIyLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDIzLCAweDgwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTMsIDB4MjMsIDB4MGQsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGQzLCAweDkzLCAweDIyLCAweDQwLAorCTB4MWIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTcsIDB4MDAsIDB4MDEsIDB4ODQsIDB4NTAsIDB4MDEsIDB4MDAsCisJMHhkYiwgMHg5MywgMHgyMiwgMHg0MCwgMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDEwLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NDMsIDB4ODEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhkOSwgMHg5MywgMHhhOCwgMHgxMSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHhlYSwgMHg5MywgMHgwMCwgMHg1ZSwKKwkweDE3LCAweDkwLCAweDAwLCAweDAwLCAweGRlLCAweDkzLCAweDIzLCAweDBkLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4NCwgMHhkMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg5MywgMHgyMiwgMHg0MCwgMHgxYiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDE5LCAweDk4LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLCAweGVhLCAweDkzLCAweDIyLCAweDQwLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDQzLCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGU4LCAweDkzLCAweGE4LCAweDExLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhlYiwgMHg5MywgMHhhOCwgMHgwYSwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDA1LCAweDQ4LCAweDMxLCAweDAxLCAweDAwLAorCTB4ZjIsIDB4OTMsIDB4MjMsIDB4MGQsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MTEsCisJMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk4LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLCAweGExLCAweDk3LCAweDAwLCAweDVlLAorCTB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHg4ZCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiMywgMHg5NiwgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweGVhLCAweDk2LCAweDAwLCAweDQxLAorCTB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NmYsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNSwgMHg5NCwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDEsIDB4OTQsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA3LCAweDk0LCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDFhLCAweGQwLCAweDAxLCAweDAwLCAweDBkLCAweDk0LCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4OTgsIDB4MDAsIDB4NDAsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTUsIDB4OTQsIDB4MjIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzOCwgMHg5MywgMHgwMCwgMHgwMCwgMHgyYSwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweGY0LCAweDk4LCAweDAwLCAweDQxLCAweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDEwLCAweDk0LCAweDIyLCAweDA4LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YmIsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMywgMHg5NCwgMHgyMywgMHgwZCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4N2IsIDB4OTYsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGFmLCAweDk3LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTksIDB4OTQsIDB4MDAsIDB4NGEsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg5NSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDcsIDB4MDAsIDB4MDAsIDB4MGIsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MjcsIDB4OTQsIDB4MjYsIDB4NDcsCisJMHg5NywgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDI3LCAweDk0LCAweDIzLCAweDRiLCAweDBjLCAweDZjLCAweDAwLCAweDAwLCAweDMzLCAweDk4LCAweDAwLCAweDRiLAorCTB4MDQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MzMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKwkweDE2LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MzMsIDB4OTgsIDB4MDAsIDB4NGIsIDB4MDQsIDB4NTAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMywgMHg5OCwgMHgwMCwgMHgwNiwgMHgwNCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDJkLCAweDk0LCAweGEyLCAweDQ0LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLAorCTB4MWIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MmMsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkYSwgMHg5NCwgMHgwMCwgMHgwMSwKKwkweDhjLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MzQsIDB4OTQsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDk0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgzZCwgMHg5NCwgMHgyMiwgMHgwNiwKKwkweDE0LCAweDUwLCAweDAwLCAweDAwLCAweDI0LCAweDk3LCAweDAwLCAweDQ1LCAweDFmLCAweDAwLCAweDAxLCAweDAwLAorCTB4MWIsIDB4OTQsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDM5LCAweDk0LCAweGE4LCAweDVjLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4OTQsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgyZCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZWEsIDB4OTYsIDB4MDAsIDB4NDEsIDB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDQyLCAweDk0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0OCwgMHg5NCwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDRiLCAweDk0LCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwKKwkweDU5LCAweDk0LCAweDIyLCAweDRhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDUxLCAweDk0LCAweGEyLCAweDE2LAorCTB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJkLCAweDAwLCAweDJkLCAweDA4LCAweDJhLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTUsIDB4OTQsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZjksIDB4OTYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg1NiwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGM5LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDJlLCAweDAwLAorCTB4MmEsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4MmEsIDB4MTUsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiYSwgMHg4ZCwgMHgwMCwgMHgxNiwgMHhlNCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgzNSwgMHg5MywgMHhhMiwgMHgxNiwKKwkweDAyLCAweDMwLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmYsIDB4OGQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NSwgMHgwMCwgMHg0YSwgMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweDQ5LCAweDkzLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAwLCAweDAwLCAweDhhLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjMsIDB4OTQsIDB4YTIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2NiwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDc0LCAweDk2LCAweDAwLCAweDE1LCAweDk0LCAweDMwLCAweDAxLCAweDAwLAorCTB4N2IsIDB4OTYsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2OCwgMHg5NCwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGFmLCAweDk3LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQ1LAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhmZSwgMHg5MSwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDZmLCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NDksIDB4OTMsIDB4MDAsIDB4MDEsIDB4MmMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YmYsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3YSwgMHg5NCwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgyLCAweDAwLCAweDAyLCAweDA0LCAweGRjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4MDMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg3MywgMHg5NCwgMHgzNywgMHg1YywgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDc3LCAweDk0LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NzQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3NywgMHg5NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDg5LCAweDE3LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDU4LCAweDAxLCAweDIwLCAweDA4LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDEsIDB4MjAsIDB4MTYsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiNiwgMHg5NiwgMHgwMCwgMHg0NywgMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQ5LCAweDkzLCAweDAwLCAweDAxLCAweDJjLCAweGIwLCAweDAwLCAweDAwLAorCTB4YmYsIDB4OTUsIDB4MDAsIDB4NDcsIDB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4OGMsIDB4OTQsIDB4YTIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg4OCwgMHg5NCwgMHhhMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgyLCAweDAwLCAweDAyLCAweDA0LCAweGRjLCAweDAxLCAweDAwLCAweGEwLCAweDk4LCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZTMsIDB4ODksIDB4MDAsIDB4NDEsIDB4ODksIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg3NCwgMHg5NiwgMHgwMCwgMHgxNSwgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg3YiwgMHg5NiwgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZjksIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg5NywgMHgwMCwgMHgzYSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDU4LCAweDAxLCAweDIwLCAweDA4LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDEsIDB4MjAsIDB4MTYsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmNCwgMHg5NSwgMHgwMCwgMHgxMCwgMHgzMiwgMHgzMCwgMHgwMSwgMHgwMCwgMHg0OSwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDEzLCAweGIwLCAweDAwLCAweDAwLCAweGJmLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4OWMsIDB4OTQsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweDk1LCAweDk0LCAweDM3LCAweDVjLAorCTB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5OSwgMHg5NCwgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg5NiwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4OTksIDB4OTQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ODksIDB4MTcsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiMywgMHg5NiwgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweGVhLCAweDk2LCAweDAwLCAweDQxLCAweDg3LCAweDMwLCAweDAxLCAweDAwLAorCTB4NmYsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhhYiwgMHg5NCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YTcsIDB4OTQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHg4NCwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDNmLCAweDkxLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4M2YsIDB4OTEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyZCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDg3LCAweDkxLCAweDAwLCAweDQ0LCAweDE5LCAweDkwLCAweDAwLCAweDAwLCAweGIzLCAweDk0LCAweGEyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhlZiwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5NiwgMHgwMCwgMHg0YSwKKwkweDFmLCAweDEwLCAweDAxLCAweDAwLCAweDZmLCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NDksIDB4OTMsIDB4MDAsIDB4MDEsIDB4MmMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0OSwgMHg5MywgMHgwMCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZlLCAweDkxLCAweDAwLCAweDQ1LCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MzcsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MzMsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgzNiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMiwgMHhjYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGJmLCAweDk0LCAweDg1LCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OWYsIDB4NDgsIDB4MDMsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4YzEsIDB4OTQsIDB4OWMsIDB4MTcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg0YywgMHgwMywgMHhkMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDAxLCAweDM0LCAweGMzLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDJkLCAweDExLAorCTB4MTAsIDB4YzEsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTQsIDB4MDAsIDB4NDAsIDB4NDMsIDB4YzEsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg5NCwgMHgwMCwgMHg1MCwgMHg0MywgMHhjMSwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhMSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGNhLCAweDk0LCAweDIyLCAweDQwLCAweGU1LCAweDZkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDAsIDB4ZTUsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDQxLCAweDIzLCAweGQwLCAweDAwLCAweDAwLCAweGM2LCAweDk0LCAweDAwLCAweDUwLAorCTB4NDMsIDB4ZDEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4OTUsIDB4MDAsIDB4NDEsIDB4ZTEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZDcsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YmEsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZiwgMHgwMSwgMHg4YywgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweGUwLCAweGMxLCAweDAxLCAweDAwLCAweGFjLCAweDAwLCAweDJmLCAweDQwLAorCTB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4MmQsIDB4MDEsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhlMSwgMHg5NCwgMHg5YywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmYiwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGUzLCAweDk0LCAweDIyLCAweDQ3LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MTMsIDB4OTAsIDB4MDEsIDB4MDAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4NDcsCisJMHgxOSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgyZCwgMHg0NCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAwLCAweDJkLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweGQ4LCAweDk4LCAweDAwLCAweGYwLAorCTB4ODQsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmOCwgMHg5NCwgMHhhMiwgMHg0YiwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg0YiwgMHg5NSwgMHhhMiwgMHg0YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGY4LCAweDk0LCAweDFmLCAweDFjLCAweGUwLCAweDZkLCAweDAwLCAweDAwLAorCTB4ZmIsIDB4OTQsIDB4YTIsIDB4MDEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MmQsIDB4NDYsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhmMSwgMHg5NCwgMHgxZiwgMHgxYywgMHhlMCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweGI0LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweGYzLCAweDk0LCAweDIyLCAweGYwLAorCTB4M2EsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTUsIDB4MWYsIDB4ZjAsIDB4M2EsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHg0MCwgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0ZiwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDhhLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4NDksIDB4OTUsIDB4MjAsIDB4NDIsIDB4ZTcsIDB4NmQsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4OTQsIDB4MjIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1OSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDU4LCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGZhLCAweDk0LCAweDIyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NWMsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg1YiwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweGIwLCAweDAwLCAweDJkLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4OTQsIDB4YTIsIDB4NDIsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDgsIDB4OTUsIDB4MjMsIDB4ZjAsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNSwgMHg5NSwgMHhhMiwgMHhmMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDRhLCAweDk1LCAweGEyLCAweDQyLCAweDI0LCAweDZjLCAweDAwLCAweDAwLCAweDRhLCAweDk1LCAweGEyLCAweDQxLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTUsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg1MSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1MiwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDRhLCAweDk1LCAweDFmLCAweDEyLCAweDg0LCAweDUwLCAweDAwLCAweDAwLAorCTB4NGEsIDB4OTUsIDB4YTAsIDB4MDEsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMzLCAweDk1LCAweGEyLCAweDQ2LCAweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjUsIDB4OTUsIDB4MjIsIDB4ZjAsIDB4MTQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxMSwgMHg5NSwgMHgyMCwgMHgwYSwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgyMiwgMHg5NSwgMHgwMywgMHgxZSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDEwLCAweDk1LCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDQsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDksCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxNiwgMHg5NSwgMHgyMiwgMHgwYSwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDE5LCAweDk1LCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDE1LCAweDk1LCAweGEyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTUsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg1NiwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxOCwgMHg5NSwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQzLCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDgsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHg4MiwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDk1LCAweDIwLCAweDkxLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDFlLCAweDk1LCAweGEyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjYsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgyNywgMHgwMCwgMHg4MCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgyMSwgMHg5NSwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDFmLCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MjQsIDB4OTUsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDIzLCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDg4LCAweDAwLCAweDJkLCAweDQ0LAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MmUsIDB4OTUsIDB4YTIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgyYiwgMHg5NSwgMHhhMiwgMHg0MywgMHgzZCwgMHg3YywgMHgwMCwgMHgwMCwgMHgyYiwgMHg5NSwgMHhhMiwgMHhmMiwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQwLCAweDgwLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDksIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MmQsIDB4OTUsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQ4LCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDJiLCAweDk1LCAweGEwLCAweDkxLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjksIDB4OTUsIDB4MjIsIDB4NDMsIDB4M2QsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgzMiwgMHg5NSwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDI5LCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4M2MsIDB4OTUsIDB4YTIsIDB4ZjAsCisJMHgxNCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHg0NCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDM5LCAweDk1LCAweGEyLCAweGYyLCAweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQwLAorCTB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDksIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyYiwgMHg5NSwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgyOSwgMHg5NSwgMHgyMCwgMHg5MSwKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDJiLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NDAsIDB4OTUsIDB4MjAsIDB4MGEsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4M2YsIDB4OTUsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0NCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQ5LCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDQ1LCAweDk1LCAweDIyLCAweDBhLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MTksIDB4OTUsIDB4YTIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg0NCwgMHg5NSwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1NSwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU2LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4NDcsIDB4OTUsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDMsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0OCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDRkLCAweDk1LCAweDAwLCAweDQzLCAweDk1LCAweGIwLCAweDAwLCAweDAwLCAweDRkLCAweDk1LCAweDAwLCAweDQxLAorCTB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4OTUsIDB4MDAsIDB4NDIsIDB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0ZCwgMHg5NSwgMHgwMCwgMHg0NCwgMHg5NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg5NSwgMHgwMCwgMHg0YywKKwkweDk1LCAweGIwLCAweDAwLCAweDAwLCAweGY1LCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTAsIDB4OTUsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NGIsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0YywgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDJkLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDJlLCAweDAwLCAweDJmLCAweGYzLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NTUsIDB4OTUsIDB4YTIsIDB4ZjMsIDB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHgwMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyYSwgMHg0MSwKKwkweGU3LCAweGQxLCAweDAxLCAweDAwLCAweGQ0LCAweDAwLCAweDNkLCAweDQxLCAweDg1LCAweGUwLCAweDAxLCAweDAwLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MDAsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4NWIsIDB4OTUsIDB4MjIsIDB4NWEsCisJMHgwMSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDVjLCAweDk1LCAweDAwLCAweDVhLCAweDAxLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjMsIDB4NDEsIDB4ODUsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMCwgMHhhNSwgMHg4NSwgMHg2YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMywgMHg0MCwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDBjLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTksIDB4MDAsIDB4ZjAsCisJMHg4YywgMHhiMCwgMHgwMCwgMHgwMCwgMHg2OSwgMHg5NSwgMHgyMiwgMHg0MCwgMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJmLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDY2LCAweDk1LCAweGEyLCAweDRiLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4NjcsIDB4OTUsIDB4MjIsIDB4ZjAsIDB4MTgsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgzMiwgMHg5NiwgMHgwMCwgMHgwNywKKwkweDEwLCAweDMwLCAweDAxLCAweDAwLCAweDZmLCAweDg0LCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NmIsIDB4OTUsIDB4MjIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YjgsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHg4NCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJmLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDRiLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4OTYsIDB4MDAsIDB4MDcsIDB4MTAsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHg4NCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MzIsIDB4OTYsIDB4MDAsIDB4MDcsIDB4MTAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3NCwgMHg5NSwgMHgzMywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDc3LCAweDk1LCAweGExLCAweGFkLCAweDk1LCAweDIwLCAweDAwLCAweDAwLCAweDg1LCAweDk1LCAweDEzLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4NGEsIDB4NWEsIDB4ODMsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgzOSwgMHg0NSwgMHg5NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgxZiwgMHgwMCwgMHgwMCwgMHgwZiwKKwkweDVlLCAweGQ4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDVmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisJMHg0OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0YSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDU4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LAorCTB4NGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTIsIDB4ODYsIDB4MDAsIDB4NDAsIDB4NWQsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQxLCAweDk3LCAweGIwLCAweDAwLCAweDAwLAorCTB4ODIsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHg4NiwgMHg5NSwgMHg0NCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDRiLCAweDg0LCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweGMyLAorCTB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4OTUsIDB4YTIsIDB4NDUsIDB4MjUsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg4YSwgMHg5NSwgMHgzMSwgMHgyMCwgMHg4NSwgMHgzMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHg5NSwgMHgyMiwgMHgxMiwKKwkweDQ4LCAweDdmLCAweDAwLCAweDAwLCAweDUxLCAweDk4LCAweDExLCAweDEyLCAweDQ4LCAweDAzLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHgxZSwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1YSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDkwLCAweDk1LCAweDMxLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI0LAorCTB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTEsIDB4OTUsIDB4MjIsIDB4MTIsIDB4NDgsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHg1MSwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDllLCAweDk1LCAweDBiLCAweGYwLCAweDg0LCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTEsIDB4MTIsIDB4NDgsIDB4ODMsIDB4MDEsIDB4MDAsIDB4OWIsIDB4OTUsIDB4MjIsIDB4NTAsCisJMHg4NSwgMHg3MCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDUxLCAweDk3LCAweDAwLCAweGYyLCAweDk2LCAweDMwLCAweDAxLCAweDAwLCAweGQxLCAweDk5LCAweDAwLCAweDEyLAorCTB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwKKwkweDFlLCAweDk0LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQyLCAweDEwLCAweGY0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YjcsIDB4M2YsIDB4NDMsIDB4MTEsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHg4YSwgMHg4OCwgMHgwMSwgMHgwMCwgMHhhMSwgMHg5NSwgMHgzMCwgMHhhMSwgMHgwYywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGE0LCAweDk1LCAweDIyLCAweDQ1LCAweGU2LCAweDdkLCAweDAwLCAweDAwLCAweDkxLCAweDk1LCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4NDUsIDB4ZTYsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMCwgMHgxMiwgMHg0OCwgMHg4MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDRiLCAweDg1LCAweDgwLCAweDAxLCAweDAwLAorCTB4NWUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTEsIDB4OTcsIDB4MDAsIDB4ZjIsCisJMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLCAweDJlLCAweDAwLCAweDJkLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWYsIDB4OTUsIDB4MjIsIDB4NDAsIDB4ZTcsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA4LCAweDg2LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjgsIDB4YTcsIDB4ODcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGIzLCAweDk1LCAweGE4LCAweDA1LCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDEyLAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NGIsIDB4OTYsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwgMHgxZSwgMHg5NCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwZiwKKwkweDg0LCAweGY0LCAweDAxLCAweDAwLCAweDFmLCAweDAwLCAweDAwLCAweDQyLCAweDg0LCAweDg4LCAweDAxLCAweDAwLAorCTB4YmMsIDB4OTUsIDB4MjIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YmQsIDB4OTUsIDB4MDAsIDB4NDIsCisJMHg2OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2YSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGJkLCAweDk1LCAweDMxLCAweDVhLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDkxLCAweDQyLAorCTB4NDgsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YmYsIDB4OTUsIDB4MzUsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg2ZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjNCwgMHg5NSwgMHgyOCwgMHhiMSwKKwkweDJjLCAweDMwLCAweDAwLCAweDAwLCAweGMwLCAweDk1LCAweDIyLCAweDRkLCAweDc1LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTUsIDB4NDAsIDB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjNCwgMHg5NSwgMHhhOCwgMHhiMSwgMHgxMCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDk1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDdmLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4Y2IsIDB4OTUsIDB4MjgsIDB4YjEsIDB4MTAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhjNywgMHg5NSwgMHg5ZiwgMHhiYSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDExLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDI0LCAweDExLCAweDg0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGNkLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGFjLCAweDk0LCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZDEsIDB4OTUsIDB4MzIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhkNywgMHg5NSwgMHgyMiwgMHhmOCwgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmOCwKKwkweDkwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDkyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZjAsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4OTIsIDB4NDgsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGRiLCAweDk1LCAweDI4LCAweGIxLCAweDkyLCAweDMwLCAweDAwLCAweDAwLCAweGQ3LCAweDk1LCAweDIyLCAweDRjLAorCTB4NzUsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MTIsIDB4NDAsIDB4OTEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkYiwgMHg5NSwgMHhhOCwgMHhiMSwKKwkweDkwLCAweDMwLCAweDAwLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweDQ4LCAweDk2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4OTAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDkyLCAweDQ5LCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsIDB4ODIsIDB4OGMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHhmMCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwKKwkweDAwLCAweGVjLCAweDAwLCAweDAwLCAweGU4LCAweDk1LCAweDIyLCAweDFhLCAweDAwLCAweDZjLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHhlNCwgMHg5NSwgMHhhMiwgMHg0MSwgMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MTUsIDB4ODIsIDB4OGMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHhmMCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwKKwkweDAwLCAweGVjLCAweDAwLCAweDAwLCAweGYxLCAweDk1LCAweDIyLCAweDBkLCAweDAwLCAweDZjLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTUsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHhlZCwgMHg5NSwgMHhhMiwgMHg0MSwgMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGY2LCAweDk1LCAweDgzLCAweDFlLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHgwMCwgMHgyZCwgMHgwMSwgMHgyYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDJkLCAweGYwLCAweDI2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MmYsIDB4ZjIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgyZCwgMHgxMSwgMHgxMCwgMHhjMSwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDk1LCAweDAwLCAweDQwLCAweDQzLCAweGMxLCAweDAwLCAweDAwLCAweGZmLCAweDk1LCAweDAwLCAweDUwLAorCTB4NDMsIDB4YzEsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHg5NiwgMHgyMiwgMHg0MCwgMHhmNSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDQzLCAweGQxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQwLCAweGU1LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDksCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNywgMHg5NiwgMHgyMiwgMHgxMSwgMHgxZSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA5LCAweDk2LCAweGEwLCAweGYwLCAweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDA5LCAweDk2LCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDksIDB4OTYsIDB4YTAsIDB4ZjQsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwKKwkweDIzLCAweGQwLCAweDAwLCAweDAwLCAweGZmLCAweDk1LCAweDAwLCAweDUyLCAweDQzLCAweGQxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGMsIDB4OTYsIDB4MzAsIDB4NDcsCisJMHgxNywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg5NiwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDkwLCAweDQyLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweGI3LCAweDAwLCAweDBkLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTMsIDB4OTYsIDB4YTIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHhlNiwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHg0MSwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MTQsIDB4OTYsIDB4NDAsIDB4MDcsIDB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZGIsIDB4OTksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHg5NiwgMHhhMiwgMHg0NSwgMHg5NSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAxLCAweDk3LCAweDNmLCAweDQxLCAweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg5NywgMHgzZSwgMHg0MCwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweGU2LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDk3LCAweDNlLCAweDQwLCAweDlkLCAweGUwLCAweDAxLCAweDAwLAorCTB4MzEsIDB4OTYsIDB4MDAsIDB4M2IsIDB4ZTcsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MWUsIDB4OTYsIDB4MzAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHg5NiwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweGI1LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDI0LCAweDk2LCAweGEyLCAweDBiLAorCTB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5OCwgMHg0MiwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHgwZCwKKwkweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU2LCAweDkxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4NDEsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMSwgMHhhMiwgMHg5NSwgMHgyMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDEwLCAweDRhLCAweDQ0LCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDk3LCAweDNlLCAweDQxLAorCTB4OTUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ZjYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5NywgMHgzZSwgMHg0MCwKKwkweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNiLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsCisJMHg5MiwgMHg4OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDA4LCAweDg2LCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweGI3LCAweDAwLCAweDQzLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODIsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgzNSwgMHg5NiwgMHg0MCwgMHgwOCwgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHhkYiwgMHg5OSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQxLCAweDk2LCAweDIyLCAweDQ1LCAweDk1LCAweDdjLCAweDAwLCAweDAwLAorCTB4M2QsIDB4OTYsIDB4MjIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MGYsCisJMHg5NiwgMHhmNCwgMHgwMSwgMHgwMCwgMHgzYSwgMHg5NiwgMHgzMSwgMHg1ZiwgMHg5NywgMHgwNCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDExLCAweDRiLCAweDQ4LCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NmEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTYsIDB4MzAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhlNiwgMHg4MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTcsIDB4M2YsIDB4NDEsIDB4OTUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5NywgMHgzZCwgMHg0MCwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweGYzLCAweDg4LCAweGIwLCAweDAxLCAweDAwLCAweDQ5LCAweDk2LCAweGEyLCAweDNiLAorCTB4ODksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHhhNiwgMHg5MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0YSwgMHg5NiwgMHgxOCwgMHg0YSwKKwkweDQ0LCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MzksIDB4NDUsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4NGYsIDB4OTYsIDB4MjIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxZiwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5OCwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDVlLCAweDk0LCAweDAxLCAweDAwLCAweDUxLCAweDk2LCAweDAwLCAweDA1LAorCTB4NGEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4MDQsIDB4MDAsIDB4YTcsIDB4NWUsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTIsIDB4OTYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1NSwgMHg5NiwgMHg0MCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGRiLCAweDk5LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU5LCAweDk2LCAweDIyLCAweDQ1LAorCTB4OTUsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhkOSwgMHg5OSwgMHgwMCwgMHg0YSwgMHg0NCwgMHgxMywgMHgwMSwgMHgwMCwgMHgwMCwgMHg5NywgMHgzZiwgMHg0MSwKKwkweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDk2LCAweGIwLCAweDAxLCAweDAwLAorCTB4NDAsIDB4OTcsIDB4M2QsIDB4NDAsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjMsIDB4ZjMsCisJMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgzOCwgMHg0NSwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDBmLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg2MSwgMHg5NiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg1YSwgMHg5NiwgMHhhMiwgMHgzYiwKKwkweDg5LCAweDZjLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDM4LCAweDQ1LCAweDlkLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZDEsIDB4OTksIDB4MDAsIDB4MTIsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgzMiwgMHg5NiwgMHgwMCwgMHg1YSwgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDVhLCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDExLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZTYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MmYsIDB4NGYsIDB4OTUsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHg0YiwKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDQzLCAweDg1LCAweDZjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ZTMsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MmQsIDB4NDQsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwMCwgMHgyZCwgMHhmMiwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYyLCAweDAyLCAweDMwLCAweDAwLCAweDAwLCAweDUxLCAweDk1LCAweDAwLCAweDEwLAorCTB4MzIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4YTAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwKKwkweDk5LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDAyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMywgMHg0YywgMHgwMiwgMHhkMCwgMHgwMCwgMHgwMCwKKwkweDc4LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LAorCTB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODgsIDB4OTYsIDB4MjIsIDB4NDEsIDB4MDMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MSwgMHg5NiwgMHhhOCwgMHgwMCwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4N2MsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3YywgMHg5NiwgMHgwMCwgMHg1YywKKwkweDAxLCAweDgwLCAweDAwLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4MTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDEsIDB4MmQsIDB4MDYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4MiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweGM3LCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YWYsIDB4OTYsIDB4MjIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwgMHgzOCwgMHg5NiwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MSwKKwkweDgyLCAweGNjLCAweDAxLCAweDAwLCAweDhkLCAweDk2LCAweGFhLCAweDQxLCAweDNiLCAweDQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsCisJMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxZCwgMHgwNCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweGFlLCAweDk2LCAweDI2LCAweDQ2LCAweDIzLCAweDMwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAzLAorCTB4MTIsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDEsIDB4MjAsIDB4ZjAsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhZCwgMHg5NiwgMHgyMiwgMHg0MSwgMHgwNSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweGY4LCAweDg2LCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OWYsIDB4OTYsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHhhYywgMHg5NiwgMHgyMiwgMHg0MSwgMHgwNSwgMHg1MCwgMHgwMCwgMHgwMCwgMHhhYSwgMHg5NiwgMHhhMiwgMHg0MSwKKwkweDIzLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGExLCAweDFhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhhNSwgMHg5NiwgMHhhOCwgMHg0NiwgMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHg5YSwgMHg5NiwgMHgwMCwgMHg1MCwKKwkweDQ5LCAweGMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4MWEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5NiwgMHgyMiwgMHg0MCwgMHgzYiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDVjLAorCTB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YWYsIDB4OTYsIDB4MDAsIDB4NDEsIDB4M2IsIDB4ZDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHg0NywgMHg4MCwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZiwgMHg1ZiwKKwkweDEzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGYwLCAweDhjLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGJiLCAweDk2LCAweDhjLCAweGY4LCAweDhlLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjgsIDB4MTQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDI2LCAweGIwLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDJlLCAweGY4LCAweDBjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MmEsIDB4NGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgyMCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM4LCAweDk2LCAweDIwLCAweDBhLCAweDBjLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgyMCwgMHhmMCwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgyMCwgMHg0YSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDIwLCAweDRiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4YjMsIDB4OTYsIDB4MDAsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MmQsIDB4NDIsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyZiwgMHhmMywgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweGNlLCAweDk2LCAweGEyLCAweGE1LAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhkMSwgMHg5NiwgMHhhMiwgMHg0MCwgMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDJkLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NDEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2UsIDB4NDEsCisJMHg4MywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGQ2LCAweDk2LCAweGEwLCAweGE1LCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MjAsIDB4NDEsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkYiwgMHg5NiwgMHgyMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwKKwkweDk4LCAweGRjLCAweDAxLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDRjLCAweGU0LCAweGY1LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4ODAsIDB4MDAsCisJMHhlNCwgMHhmNSwgMHgwMSwgMHgwMCwgMHhkMCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHg0MSwgMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NWQsIDB4MDUsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHhlNywgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhkMCwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg1ZCwgMHgwNSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweGY2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJkLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmYsIDB4ZjMsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHg2MywgMHhmMywgMHg5NiwgMHhjOCwgMHgwMSwgMHgwMCwgMHhmZSwgMHg5NiwgMHg5ZiwgMHg0MSwKKwkweDg1LCAweDUwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE1LCAweDg1LCAweGNjLCAweDAxLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4YTAsIDB4NDIsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmQsIDB4MDAsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMywgMHg5NywgMHg1MiwgMHg0MywgMHg4MSwgMHg2MCwgMHgwMCwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweGYyLCAweDgyLCAweGY0LCAweDAxLCAweDAwLCAweDA0LCAweDk3LCAweDAwLCAweDQxLAorCTB4ODAsIDB4OTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDk1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDUsIDB4OTcsIDB4OWUsIDB4YmIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTcsIDB4YTIsIDB4NDAsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhjYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQxLCAweDk1LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDE1LAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDM4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweDNjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4M2EsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MWYsIDB4OTcsIDB4OWMsIDB4MTcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHg5NywgMHhhMiwgMHg0YSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDRjLCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDFlLAorCTB4OTgsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MTMsIDB4OTcsIDB4YTIsIDB4NDgsIDB4OTksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg0MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMywgMHg5NywgMHhhMiwgMHg4YSwKKwkweGYxLCAweDZkLCAweDAwLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDAxLCAweDAyLCAweGNjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4M2UsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZjQsCisJMHgyOCwgMHhjYywgMHgwMSwgMHgwMCwgMHhjYywgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDFlLCAweDk3LCAweDIwLCAweGYwLCAweDNlLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmMywKKwkweDNhLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDcsIDB4MDAsIDB4MmEsIDB4MGMsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDQsCisJMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDFjLCAweDAwLCAweDJkLCAweGYwLCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDJkLCAweGYwLAorCTB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmYsIDB4ZjIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNiwgMHgxNCwgMHhlYywgMHgwMCwgMHgwMCwgMHgyYiwgMHg5NywgMHgyMiwgMHg0NSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEzLCAweDA2LCAweDJhLCAweGVjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJhLCAweDRjLCAweGUxLCAweGMxLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzNSwgMHg5NywgMHhhOCwgMHg1YywgMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDEsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzYiwgMHg5NywgMHg0NSwgMHg0MiwKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4M2MsIDB4OTcsIDB4YTgsIDB4MDAsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWQsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDAxLCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDIsIDB4OTcsIDB4NDUsIDB4NDIsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0MywgMHg5NywgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDlkLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHhhOCwgMHgzZCwgMHg0NiwgMHgwZCwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDdmLCAweDAwLCAweGExLCAweGYwLCAweDg5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDA5LAorCTB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHg0ZCwgMHg5NywgMHg0NiwgMHg0MiwKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGM5LCAweDAxLCAweDAwLAorCTB4NGUsIDB4OTcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwgMHg5NywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDUyLCAweDk3LCAweDQ3LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDVhLCAweDk3LCAweDIyLCAweGYzLAorCTB4NzQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTQsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhlNywgMHg4NSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg1NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTcsIDB4OTcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDM2LCAweGIwLCAweDAxLCAweDAwLCAweDZhLCAweDk3LCAweDgyLCAweDQxLAorCTB4MjMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4OTcsIDB4YTIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHg5NCwgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDY1LCAweDk3LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg2MiwgMHg5NywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg2YSwgMHg5NywgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhlMiwgMHg5NSwgMHgwMCwgMHg0MywKKwkweDIzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4NmMsIDB4OTcsIDB4YTMsIDB4MTUsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NmQsIDB4OTcsIDB4MDAsIDB4MDYsCisJMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDZmLCAweDk3LCAweDIwLCAweDAyLCAweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MGIsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg3NCwgMHg5NywgMHgyNiwgMHg0NywgMHg5NywgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDk3LCAweGMwLCAweDAxLCAweDAwLCAweDc0LCAweDk3LCAweDIzLCAweDRiLCAweDA0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzMsIDB4OTgsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg5NywgMHgyMiwgMHgwMiwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDc4LCAweDk3LCAweGEyLCAweDAyLCAweDJhLCAweDUwLCAweDAwLCAweDAwLCAweDllLCAweDk3LCAweGEyLCAweDQ1LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4N2EsIDB4OTcsIDB4MjIsIDB4MDIsIDB4MGMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg4MywgMHg5NywgMHgwMCwgMHgwMiwgMHgxNiwgMHhjMCwgMHgwMCwgMHgwMCwgMHg4MiwgMHg5NywgMHgyMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ODIsIDB4OTcsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDdlLCAweDk3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHg5NywgMHgwMCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg5NywgMHgyMiwgMHgxNSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4OWQsIDB4OTcsIDB4YTIsIDB4MDIsIDB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4OGYsIDB4OTcsIDB4MjIsIDB4NDYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg3MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDhmLCAweDk3LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg5NywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDFiLCAweDg0LCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDAwLCAweDJmLCAweDVjLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MWIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg1YywgMHg5NywgMHgyMCwgMHgxNSwgMHgxYSwgMHg2YywgMHgwMCwgMHgwMCwgMHg3MCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDIyLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsCisJMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDlhLCAweDk3LCAweGE4LCAweDQ2LAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4OTcsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg1YywgMHg5NywgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHg5NywgMHhhMiwgMHg0NCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGRhLCAweDk0LCAweDAwLCAweDAxLCAweDhjLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4MTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4YTcsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MCwgMHgyNywgMHhlYywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweGNjLCAweDk1LCAweDAwLCAweDQxLAorCTB4YTMsIDB4NDEsIDB4MDEsIDB4MDAsIDB4YWIsIDB4OTcsIDB4MDAsIDB4NDEsIDB4MjcsIDB4ZDAsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDgwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiMiwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDk4LCAweDAwLCAweDQwLCAweDJiLCAweDMwLCAweDAxLCAweDAwLCAweGFjLCAweDAwLCAweDJkLCAweDA2LAorCTB4MTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTYsIDB4YzQsIDB4MDEsIDB4MDAsCisJMHhiYSwgMHg5NywgMHhhMCwgMHhmMCwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NmMsIDB4ZjAsIDB4MzAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmQsIDB4NDAsCisJMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YywgMHhmMCwgMHgyOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGMzLCAweDk3LCAweDIyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDQzLAorCTB4ODYsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MGIsIDB4MTYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHhjMywgMHg5NywgMHhhNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweGU0LCAweDk3LCAweDIyLCAweDA2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZDAsIDB4OTcsIDB4YTIsIDB4MDYsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4Y2QsIDB4OTcsIDB4MjIsIDB4NDgsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhjOCwgMHg5NywgMHhhMCwgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MzEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MjAsIDB4MTgsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgyZCwgMHg0OCwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyMCwgMHg0NSwKKwkweGU3LCAweDkxLCAweDAxLCAweDAwLCAweGQwLCAweDk3LCAweDAwLCAweDQwLCAweDg3LCAweDkwLCAweDAwLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4OTcsIDB4YTAsIDB4NDgsCisJMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDEwLCAweDUwLCAweDAwLCAweDQzLAorCTB4ZmMsIDB4YzksIDB4MDEsIDB4MDAsIDB4M2IsIDB4OTgsIDB4MDAsIDB4MzAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkYiwgMHg5NywgMHgyMiwgMHg0YSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4Y2MsIDB4MDAsIDB4MmQsIDB4YWIsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWIsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHhkYSwgMHg5NywgMHhhMCwgMHhmMCwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweGRmLCAweDk3LCAweDY0LCAweGYwLAorCTB4ODIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhkZiwgMHg5NywgMHhhMiwgMHhmMiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDhjLCAweDAwLCAweDIwLCAweDE4LCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDYsCisJMHgzMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NiwgMHgwYywgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGJjLCAweDAwLCAweDJkLCAweDQ2LCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweGEwLCAweGYyLAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxMCwgMHg1MCwgMHgwMCwgMHg0MywgMHhmYywgMHhjOSwgMHgwMSwgMHgwMCwgMHgzYiwgMHg5OCwgMHgwMCwgMHgzMCwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDRhLCAweDE5LCAweGZjLCAweDAwLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4MmQsIDB4YWIsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGVkLCAweDk3LCAweGEwLCAweGYwLCAweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGYyLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweDBjLAorCTB4N2UsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4NGMsIDB4OTUsIDB4NjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0YSwgMHgxOCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDAxLCAweGYwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDE1LAorCTB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ZTgsIDB4NWYsIDB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg3YSwgMHgwMSwgMHgyZSwgMHhmZSwgMHg5MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDhiLCAweDAwLCAweDJkLCAweGY2LCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDBhLCAweDk4LCAweDIyLCAweDQzLAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHg2ZSwgMHgwNiwKKwkweDgyLCAweGM4LCAweDAxLCAweDAwLCAweDBlLCAweDk4LCAweDIyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NDUsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmUsIDB4NGMsCisJMHg4MywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDBmLCAweDk4LCAweDQyLCAweDMwLCAweDNkLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDllLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NDEsIDB4M2QsIDB4YzMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHhhMiwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQ5LCAweDk4LCAweGY0LCAweDAxLCAweDAwLAorCTB4MTgsIDB4OTgsIDB4MjYsIDB4MzAsIDB4OTMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MTgsIDB4OTgsIDB4OTAsIDB4NGMsCisJMHg5MiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDgwLCAweDQ5LCAweGVjLCAweGE5LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MDEsIDB4ZjAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MTUsIDB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MWQsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyYSwgMHg5OCwgMHgyMiwgMHg1ZiwgMHg4MSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDI5LCAweDk4LCAweGEyLCAweDQwLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDk3LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjksIDB4OTgsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjYsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHgyMSwgMHg4MSwgMHg4NCwgMHgwMCwgMHgwMCwKKwkweDJkLCAweDk4LCAweGEyLCAweDVmLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQzLAorCTB4MTksIDB4N2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk2LCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDAyLAorCTB4ZjAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDE5LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MDgsIDB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MzgsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHgyZCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweGYwLCAweDk4LCAweGY0LCAweDAxLCAweDAwLCAweDQxLCAweDk4LCAweDIwLCAweDRjLAorCTB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg0MSwgMHg5OCwgMHgyMCwgMHhmMiwgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDk4LCAweDAwLCAweDJkLCAweDE0LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTMsIDB4MDAsIDB4MmQsIDB4MTQsCisJMHg5OCwgMHhkMCwgMHgwMSwgMHgwMCwgMHg0NiwgMHg5OCwgMHgyMCwgMHg0YywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4ODAsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4NDksIDB4OTgsIDB4MjMsIDB4NDAsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgwMCwgMHgyMCwgMHgxNCwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDk4LCAweDAwLCAweDI1LCAweDQyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NmUsIDB4ZjMsIDB4ODAsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4NDIsCisJMHg4MiwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OCwgMHhhMCwgMHg0MCwgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweGYwLAorCTB4ODIsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDAsIDB4YTAsIDB4NDEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1MiwgMHg5OCwgMHgwMCwgMHgxMiwgMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweGMwLCAweDQ5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4ODAsIDB4NGIsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NGQsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDUwLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDUyLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NTQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg1NiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1NywgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDU5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4NDAsIDB4NWIsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NWQsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDgwLCAweDYwLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDYyLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHg2NSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2NywgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDY5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4NmIsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NmMsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDcwLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDcyLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NzMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg3NSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3NywgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDc5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4YzAsIDB4N2EsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4N2MsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDcyLCAweDk4LCAweDQzLCAweDU3LCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDdlLCAweDk4LCAweGEyLCAweDU3LAorCTB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4N2UsIDB4OTgsIDB4YTIsIDB4NDAsIDB4ODEsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0YSwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDc2LCAweDk4LCAweGE4LCAweDRhLCAweDgwLCAweDMzLCAweDAwLCAweDAwLAorCTB4N2IsIDB4OTgsIDB4MjIsIDB4NWYsIDB4OTUsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3OSwgMHg5OCwgMHhhOCwgMHg0YiwgMHhhYywgMHgzMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFiLCAweGE1LCAweDgyLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJlLAorCTB4ODMsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxMCwgMHgwMCwgMHg0YSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4MiwgMHg5OCwgMHgyOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDdlLCAweDk4LCAweDIyLCAweDU3LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OWIsIDB4MjAsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MiwgMHg5OCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDliLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweGE3LCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YSwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGE4LCAweDAwLCAweDJkLCAweDFjLCAweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweGYwLAorCTB4OGEsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4OGIsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHg4YSwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGE0LCAweDAwLCAweDJkLCAweDQ1LCAweGUwLCAweGQxLCAweDAxLCAweDAwLAorCTB4OTcsIDB4OTgsIDB4OWMsIDB4MTcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YmUsIDB4MDAsIDB4MmYsIDB4YWIsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg5OCwgMHgwMCwgMHgxNCwgMHg4MiwgMHg1MCwgMHgwMSwgMHgwMCwKKwkweDljLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDljLCAweDk4LCAweDIyLCAweGYyLAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OGMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg5YywgMHg5OCwgMHg5ZiwgMHgxYywgMHhlMCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGZmLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YTgsIDB4MDAsIDB4MjAsIDB4MWMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OWMsIDB4MDAsIDB4MmQsIDB4MzAsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDk0LCAweDAwLCAweDJkLCAweGYyLCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweGM2LCAweDk4LCAweDIzLCAweGYwLAorCTB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODgsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHhjNiwgMHg5OCwgMHgyMCwgMHg1MCwgMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwgMHhiNSwgMHg5OCwgMHhhMywgMHg5MiwKKwkweDg3LCAweDZjLCAweDAwLCAweDAwLCAweGE1LCAweDk4LCAweDAwLCAweDQ0LCAweDEwLCAweGM5LCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTgsIDB4MDAsIDB4MGEsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MDksCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwOCwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDk4LCAweDAwLCAweDA3LCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDA3LAorCTB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MDcsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg5OCwgMHgwMCwgMHgwNiwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwNiwKKwkweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDA2LCAweDg3LCAweGIwLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTgsIDB4MDAsIDB4MDYsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MDYsCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwNSwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDk4LCAweDAwLCAweDA1LCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDA1LAorCTB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MDUsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg5OCwgMHgwMCwgMHgwNSwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5OCwgMHgwMCwgMHg0NCwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDBmLCAweDg3LCAweGIwLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTgsIDB4MDAsIDB4MGUsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MGQsCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwYywgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDk4LCAweDAwLCAweDBjLCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDBjLAorCTB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MGMsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg5OCwgMHgwMCwgMHgwYywgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwYywKKwkweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDBiLCAweDg3LCAweGIwLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTgsIDB4MDAsIDB4MGIsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MGIsCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5OCwgMHgwMCwgMHgwYiwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDk4LCAweDAwLCAweDBiLCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDk4LCAweDAwLCAweDBiLAorCTB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTgsIDB4MDAsIDB4MGIsIDB4ODcsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhiZiwgMHgwMCwgMHgyZCwgMHg0MywgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyZCwgMHhmMywKKwkweDgwLCAweGUwLCAweDAxLCAweDAwLCAweGNiLCAweDk4LCAweDIzLCAweDQwLCAweDg0LCAweDZjLCAweDAwLCAweDAwLAorCTB4OTQsIDB4MDAsIDB4MjAsIDB4OWQsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg5OCwgMHhhMiwgMHhmMCwgMHgzOCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDljLCAweDAwLCAweDIwLCAweDQyLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4MTMsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDYsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHg5YywgMHgwMCwgMHgyMCwgMHg0MiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGYzLCAweDgwLCAweGY0LCAweDAxLCAweDAwLAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODIsIDB4ODgsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4OTgsIDB4MjMsIDB4NDEsCisJMHg4MCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgxMywgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDg5LCAweDBjLCAweDgwLCAweGIyLCAweDAwLCAweDAwLCAweGJjLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4YTAsIDB4ZjIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5ZiwgMHg0MSwgMHgyNCwgMHhlYywgMHgwMCwgMHgwMCwgMHhkZiwgMHg5OCwgMHhhNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweDQyLCAweDM4LCAweGVjLCAweDAwLCAweDAwLAorCTB4ZGYsIDB4OTgsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhlMSwgMHg5OCwgMHhhMywgMHhmMCwgMHgzYSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGI0LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZTUsIDB4OTgsIDB4MjIsIDB4ZjAsIDB4M2EsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhiNCwgMHgwMCwgMHgyMCwgMHgxZCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgyZCwgMHg1ZiwKKwkweDEzLCAweDk0LCAweDAxLCAweDAwLCAweGU1LCAweDk4LCAweDIzLCAweGYwLCAweDNhLCAweDZjLCAweDAwLCAweDAwLAorCTB4ODAsIDB4MDAsIDB4MjAsIDB4MWQsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MjAsIDB4MTIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNCwgMHgwMCwgMHhhMCwgMHgxYywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhlZSwgMHg5OCwgMHg5ZiwgMHg0MSwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDhjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDhjLCAweGQwLCAweDAxLCAweDAwLAorCTB4ZWYsIDB4OTgsIDB4MDAsIDB4NDEsIDB4MjQsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzZCwgMHg5OSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhmMSwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiZiwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZjgsIDB4OTgsIDB4YTIsIDB4NDAsIDB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHhhNiwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDk4LCAweDJmLCAweDQwLCAweDExLCAweGIwLCAweDAxLCAweDAwLCAweGUzLCAweDg5LCAweDAwLCAweDQxLAorCTB4ODksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWYsIDB4ZjgsIDB4M2UsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5ZiwgMHgxMiwgMHhlMCwgMHhlZCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMCwgMHgyMCwgMHhhYiwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGNjLCAweDAwLCAweGEwLCAweDFmLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDEsIDB4OTksIDB4YTMsIDB4NWYsIDB4ZTcsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhlNywgMHhjMSwgMHgwMSwgMHgwMCwgMHhhNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDE1LCAweDk5LCAweDIyLCAweGYyLCAweDg2LCAweDMwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDQzLAorCTB4ODQsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHhiOCwgMHgwMCwgMHgyZCwgMHg0MiwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg0MCwKKwkweDg2LCAweGMwLCAweDAxLCAweDAwLCAweDA5LCAweDk5LCAweDFmLCAweDQzLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MGEsIDB4OTksIDB4YTIsIDB4NDAsIDB4ODcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4NDEsCisJMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwZSwgMHg5OSwgMHg5ZiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODQsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg0LCAweGY0LCAweDAxLCAweDAwLCAweGI4LCAweDAwLCAweDJlLCAweDQyLCAweDgwLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjIsIDB4NDAsIDB4ODgsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4OTksIDB4MWYsIDB4NDQsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxOCwgMHg5OSwgMHhhMiwgMHg0MCwgMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDE4LCAweDk5LCAweDYyLCAweDQxLCAweDg5LCAweGIwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDYyLCAweDQxLAorCTB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHg2MiwgMHg0MSwgMHg4OCwgMHhlNCwgMHgwMSwgMHgwMCwgMHhhNCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweGEyLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4YmMsIDB4MDAsIDB4MmUsIDB4NDMsIDB4ODcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxZSwgMHg5OSwgMHgyMCwgMHg0MywgMHg4NywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQzLCAweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAxLCAweDAwLCAweDQzLAorCTB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NDMsIDB4ZTQsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMSwgMHhlMiwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHg0NCwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYyLCAweDJlLCAweGIwLCAweDAxLCAweDAwLAorCTB4OWMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiYSwgMHgwMCwgMHgyZCwgMHhmMCwgMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDJiLCAweDk5LCAweGEyLCAweDEyLCAweDk4LCAweDZjLCAweDAwLCAweDAwLCAweGJjLCAweDAwLCAweDJkLCAweGYyLAorCTB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MmIsIDB4OTksIDB4YTAsIDB4ZjIsIDB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMCwgMHgyMCwgMHg0MSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGI0LCAweDAwLCAweDJkLCAweDEyLCAweDg2LCAweGQwLCAweDAxLCAweDAwLAorCTB4MmUsIDB4OTksIDB4YTMsIDB4NDEsIDB4ZTAsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MmYsIDB4OTksIDB4MDAsIDB4ZjAsCisJMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDgwLCAweDAwLCAweDJkLCAweDQzLCAweDg0LCAweGQwLCAweDAxLCAweDAwLCAweDMyLCAweDk5LCAweDlmLCAweDQyLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzNCwgMHg5OSwgMHhhMywgMHg0MiwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgzNSwgMHg5OSwgMHgwMCwgMHgwYSwKKwkweDBjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDBjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MzcsIDB4OTksIDB4YTAsIDB4MTcsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MTcsCisJMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgzYywgMHg5OSwgMHgyMiwgMHg0MCwgMHgwZCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEwLCAweDBhLCAweDBjLCAweGVjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4M2MsIDB4OTksIDB4YTAsIDB4NDEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHhmMCwgMHg4MCwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDQxLCAweDg3LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg1ZCwgMHgwNSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDQ4LCAweDk5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDRiLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MmEsIDB4MGMsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwNCwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1MiwgMHg5OSwgMHgyMiwgMHg0OSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDQyLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4YWEsIDB4OTcsIDB4MDAsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHg5OSwgMHgyMiwgMHg0MCwgMHhhZiwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDcyLCAweDk4LCAweDAwLCAweDA4LAorCTB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTcsIDB4OTksIDB4MjIsIDB4NDAsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhYSwgMHg5NywgMHgwMCwgMHg0NiwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDg3LCAweGIwLCAweDAxLCAweDAwLCAweDU4LCAweDk5LCAweDQzLCAweDQ4LCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MTAsIDB4MDAsIDB4MDgsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NWQsIDB4OTksIDB4MjgsIDB4NDAsCisJMHg4NywgMHgzMCwgMHgwMCwgMHgwMCwgMHg1OSwgMHg5OSwgMHgyMiwgMHg0OCwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweGFhLCAweDk3LCAweDFiLCAweDQ2LCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweDYwLCAweDk5LCAweDIyLCAweDVmLAorCTB4MTEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MTUsIDB4NjIsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHg1ZSwgMHg5OSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGIxLCAweDk5LCAweDAwLCAweDQ5LCAweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQ5LAorCTB4MDYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4MDMsIDB4MDYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGEwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkzLCAweGMwLCAweDAxLCAweDAwLAorCTB4NjUsIDB4OTksIDB4YTAsIDB4NTQsIDB4OTMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDUsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweGEyLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4NmUsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0OSwgMHhiMywgMHgwMSwgMHgwMCwgMHhiNiwgMHg5OSwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDJlLCAweDA4LCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzQsIDB4OTksIDB4YTIsIDB4NDEsCisJMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk3LCAweDJlLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgxOCwgMHgyZSwgMHgwNSwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4N2MsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4OTUsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHg5NCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDY0LCAweDAwLCAweDAwLCAweDQwLCAweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDU2LCAweDk1LCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjgsIDB4OTQsIDB4MjAsIDB4NDEsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiYSwgMHg5NCwgMHgyMCwgMHg0MSwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODYsIDB4OTksIDB4YTIsIDB4NDEsCisJMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDZmLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGEsIDB4OTksIDB4ODUsIDB4NDEsIDB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHhjMywgMHg5OSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDM5LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDM3LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MzUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgzMywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDNmLCAweGIzLCAweDAxLCAweDAwLCAweDNjLCAweDAwLCAweDAwLCAweDQwLAorCTB4MjksIDB4OWIsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDUsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHg0MiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDJmLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDJkLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHhiMywgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyYiwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweGVmLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4ZjEsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4YTUsIDB4M2MsIDB4OGIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg1YiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywKKwkweDQ1LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDU5LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg1MywgMHhiMywgMHgwMSwgMHgwMCwKKwkweGE3LCAweDk5LCAweGEyLCAweDUwLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGE3LCAweDk5LCAweGEyLCAweDUxLAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OTksIDB4MDAsIDB4NDAsIDB4MWQsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHg0NiwgMHgwMCwgMHg0MCwgMHgxZCwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMCwgMHhhNiwKKwkweDg4LCAweGIzLCAweDAxLCAweDAwLCAweGZmLCAweDNmLCAweDAwLCAweGE2LCAweDNhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4YzAsIDB4MDAsIDB4OWQsIDB4M2IsIDB4OWIsIDB4MDEsIDB4MDAsIDB4YjQsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHgyMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0ZCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDA4LCAweDBhLCAweDAwLCAweGE2LCAweDE0LCAweGIzLCAweDAxLCAweDAwLCAweDAxLCAweDAxLCAweDAwLCAweDhhLAorCTB4MTUsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4YTYsIDB4NTYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg1ZSwgMHg1NywgMHhiNSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDIwLCAweGU0LCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDRiLCAweDk2LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4NDMsIDB4MDAsIDB4NGIsIDB4OTYsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHgyMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwgMHgyMCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk5LCAweDJlLCAweDBhLCAweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjcsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhOSwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YmIsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGJmLCAweDk5LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YmYsIDB4OTksIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNSwgMHg5OSwgMHg4NSwgMHg0MSwgMHg5NywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHhhNiwgMHg5MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjYSwgMHg5OSwgMHg4NSwgMHg0MSwKKwkweDk3LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4Y2UsIDB4OTksIDB4NDQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsCisJMHg4MCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHg5YywgMHg0YiwgMHg4MiwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDk5LCAweDQ0LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ODAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4OWMsIDB4YTYsIDB4ODIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg5OSwgMHg0NCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0YiwKKwkweDg0LCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweGMyLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ODAsIDB4NGIsCisJMHg5MiwgMHg4OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg5MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDgwLCAweGE2LCAweDkyLCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDRiLAorCTB4OTQsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4Y2EsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweGRmLCAweDk5LCAweDgwLCAweGE1LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4OTksIDB4MDAsIDB4YTUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhlMSwgMHg5OSwgMHg4MCwgMHhhNSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDAxLCAweDAwLCAweDQwLCAweDgzLCAweDk4LCAweDAxLCAweDAwLCAweGVhLCAweDk5LCAweDIwLCAweDRmLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhlYSwgMHg5OSwgMHgyMCwgMHg0YiwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweGVhLCAweDk5LCAweDIwLCAweDQ3LCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMywgMHg5MCwgMHgwMCwgMHg0MSwgMHgyMCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDE0LCAweDJmLCAweDRjLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhlZSwgMHg5OSwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHg2NCwgMHgwMCwgMHgwMCwgMHhhNSwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweGYxLCAweDk5LCAweGEyLCAweGE1LCAweDgwLCAweDZjLCAweDAwLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MjAsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHhmNCwgMHg5OSwgMHgxZiwgMHg5MSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDAwLCAweDAwLCAweDkwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4MjMsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZjcsIDB4OTksIDB4MWYsIDB4OTEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg3MCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgyMCwgMHhhOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDIzLCAweDkxLCAweDAxLCAweDAwLCAweGZhLCAweDk5LCAweDFmLCAweDkxLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MjMsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4OTksIDB4MWYsIDB4OTEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2OCwgMHgwMCwgMHg5MCwgMHgyMCwgMHhhOSwgMHgwMSwgMHgwMCwKKwkweGUwLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDIxLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgyMywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDI1LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MjYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAyLCAweDAxLCAweDAwLCAweGE2LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODAsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDUsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwNywgMHgwMCwgMHg0MSwgMHg4MiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzOSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQ4LCAweDE0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDIsIDB4YTIsIDB4ZjgsIDB4ODAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MjIsIDB4ZjAsCisJMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwgMHhmZiwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDE0LCAweDJlLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgxZSwgMHg5YSwgMHgwMCwgMHg0MCwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweDI0LCAweDlhLCAweDAwLCAweDA1LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OWEsIDB4MDAsIDB4MDUsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMxLCAweDlhLCAweDAwLCAweDQ0LCAweGE1LCAweGIzLCAweDAwLCAweDAwLCAweDMzLCAweDlhLCAweDAwLCAweDQ0LAorCTB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHg4MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhjMSwKKwkweGYwLCAweDg5LCAweDAxLCAweDAwLCAweDI5LCAweDlhLCAweDIyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4MjUsIDB4OWEsIDB4MDAsIDB4NDEsIDB4YzEsIDB4YzMsIDB4MDAsIDB4MDAsIDB4YjEsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjNSwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDVhLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQwLAorCTB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4OTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhjOSwgMHhmMCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgyOSwgMHg5YSwgMHgyMiwgMHg0MSwKKwkweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDJkLCAweDlhLCAweDAwLCAweDQxLCAweGMxLCAweGMzLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZGUsIDB4ODUsIDB4ODksIDB4MDEsIDB4MDAsIDB4MjksIDB4OWEsIDB4MDAsIDB4YzIsCisJMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhkZSwgMHg5NSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweDI5LCAweDlhLCAweDAwLCAweGNhLCAweGUwLCAweGIxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGNiLAorCTB4ODEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NmEsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ZjIsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI2LCAweDlmLCAweDAwLCAweDg4LCAweDlhLCAweGIwLCAweDAwLCAweDAwLCAweGI2LCAweDlmLCAweDAwLCAweDg4LAorCTB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjYsIDB4OWYsIDB4MDAsIDB4ODgsIDB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhiNiwgMHg5ZiwgMHgwMCwgMHg4OCwgMHg5YSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5ZiwgMHgwMCwgMHg4OCwKKwkweDlhLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDlhLCAweGIwLCAweDAxLCAweDAwLAorCTB4YjYsIDB4OWYsIDB4NDEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjksIDB4OWYsIDB4MjIsIDB4NDAsCisJMHg3YiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhiNiwgMHg5ZiwgMHgxOSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDE5LCAweDQxLCAweDdiLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LAorCTB4YzQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4YzYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHhhMiwgMHhjOCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwOCwgMHgxNCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDk5LCAweDAxLCAweDAwLCAweGIwLCAweDlmLCAweDAwLCAweDRkLCAweDlhLCAweGNjLCAweDAxLCAweDAwLAorCTB4YzIsIDB4OWYsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHg5ZiwgMHhhMiwgMHg0MSwgMHg5YiwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDlmLCAweDgwLCAweDgwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDQ5LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHhjOSwgMHg5ZiwgMHgwMCwgMHg0MiwgMHhjZCwgMHg5MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg0YSwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4YzksIDB4OWYsIDB4MDAsIDB4NDMsIDB4Y2IsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhkOSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHgxOSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDlhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NDksIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjAsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0MSwgMHg0ZCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHhkMSwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDE5LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDksIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg5YSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGUyLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUzLAorCTB4NDMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg3YiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg0ZiwKKwkweDQwLCAweGIxLCAweDAxLCAweDAwLCAweGQ5LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDZhLCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTksIDB4OWEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNSwgMHg5YSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwl9LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL2dicmN2dWNvZGUuaCBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL2dicmN2dWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmE1YTRjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvZ2JyY3Z1Y29kZS5oCkBAIC0wLDAgKzEsMjM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAxOTk3LTIwMDIgQWxhY3JpdGVjaCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBTEFDUklURUNILCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQUxBQ1JJVEVDSCwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiBUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcKKyAqIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEdCX1JDVlVDT0RFX1ZFUlNfU1RSSU5HCSIxLjIiCisjZGVmaW5lIEdCX1JDVlVDT0RFX1ZFUlNfREFURSAgCSIyMDA2LzAzLzI3IDE1OjEyOjE1IgorCitzdGF0aWMgdTMyIEdCUmN2VUNvZGVMZW4gPSA1MTI7CisKK3N0YXRpYyB1OCBHQlJjdlVDb2RlWzI1NjBdID0KK3sKKzB4NDcsIDB4NzUsIDB4MDEsIDB4MDAsIDB4MDQsIDB4YTAsIDB4MTMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YjcsIDB4NWIsIDB4MDksCisweDMwLCAweDAwLCAweGI2LCAweDVmLCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDE4LCAweDNiLAorMHg3OCwgMHgzYSwgMHgwMCwgMHgxYywgMHhhMiwgMHg3NywgMHgwMSwgMHgwMCwgMHgxYywgMHgwNywgMHgxZCwgMHgwMSwgMHg3MCwKKzB4MTgsIDB4YjMsIDB4N2IsIDB4YTksIDB4YWEsIDB4MWUsIDB4YjQsIDB4N2IsIDB4MDEsIDB4MGMsIDB4MWMsIDB4YjUsIDB4N2IsCisweDFkLCAweDA2LCAweDFjLCAweDAwLCAweDAwLCAweDQwLCAweDY0LCAweDA4LCAweDBjLCAweDMxLCAweDU2LCAweDcwLCAweDA0LAorMHgwYywgMHgzMSwgMHg1NiwgMHg4MCwgMHgwNCwgMHgwYywgMHgzMSwgMHg0YSwgMHg5MCwgMHgwNCwgMHgwYywgMHgzMSwgMHg0NiwKKzB4YTAsIDB4MDAsIDB4MDksIDB4MjUsIDB4NTEsIDB4YzAsIDB4MDQsIDB4MGMsIDB4MzEsIDB4NGUsIDB4YjAsIDB4MDAsIDB4ZTksCisweDI0LCAweDUxLCAweGMwLCAweDA0LCAweGNjLCAweGIzLCAweDAwLCAweDFjLCAweDFjLCAweGViLCAweDJkLCAweDAxLCAweDAwLAorMHgxYywgMHgwNiwgMHg1NiwgMHg0MiwgMHhkNCwgMHgwOCwgMHgwNywgMHg5ZCwgMHgwMCwgMHgwMCwgMHgxYywgMHg3YiwgMHhiNywKKzB4MDIsIDB4MDAsIDB4MTAsIDB4YTAsIDB4MGYsIDB4NDEsIDB4NTQsIDB4MDksIDB4MDYsIDB4NTYsIDB4NWEsIDB4YzAsIDB4MDQsCisweGEwLCAweDMwLCAweDZjLCAweDAzLCAweDAwLCAweGFjLCAweDMwLCAweDZkLCAweDAzLCAweDAwLCAweGNkLCAweDAzLCAweDNhLAorMHgwMCwgMHgxYywgMHg3YiwgMHhiNywgMHgwMiwgMHgwMCwgMHgxYywgMHg2MCwgMHg4ZSwgMHg0MSwgMHg1NCwgMHgwOSwgMHgyOSwKKzB4MjUsIDB4NmQsIDB4MDMsIDB4MDAsIDB4ODAsIDB4OGUsIDB4NDEsIDB4NTQsIDB4MDksIDB4OGMsIDB4MzAsIDB4OGQsIDB4MDAsCisweDA0LCAweDQ3LCAweDFjLCAweDAxLCAweDAwLCAweDFjLCAweGEwLCAweDBmLCAweDQxLCAweDU0LCAweDA5LCAweDAwLCAweDAwLAorMHg2MCwgMHgwMCwgMHgwNCwgMHg0NywgMHgxYywgMHg2MSwgMHhjMCwgMHgwNCwgMHg0NywgMHgxYywgMHg2ZCwgMHgwMywgMHgwMCwKKzB4NmMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NGQsIDB4MzQsIDB4MDIsIDB4MDAsIDB4MWMsIDB4N2IsIDB4YjcsIDB4MDIsCisweDAwLCAweDFjLCAweGEwLCAweDBmLCAweDQxLCAweDU0LCAweDA5LCAweGM4LCAweDgzLCAweDM3LCAweDAwLCAweDFjLCAweDgwLAorMHgwMSwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwNCwgMHhhMCwgMHgwZiwgMHg0MCwgMHg1NCwKKzB4MDksIDB4MDAsIDB4MDAsIDB4NmMsIDB4YzMsIDB4MDQsIDB4N2IsIDB4ZmIsIDB4ZjIsIDB4MDAsIDB4MWMsIDB4Y2MsIDB4MzMsCisweDBkLCAweDAwLCAweDFjLCAweGI0LCAweDdiLCAweGZkLCAweDAzLCAweDFjLCAweDgwLCAweDBlLCAweDQwLCAweDU0LCAweDA5LAorMHhlMCwgMHhmYiwgMHgwNSwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMywgMHgwMCwgMHhiMywgMHgwZiwgMHg0MSwKKzB4NTQsIDB4MDksIDB4MDAsIDB4MDAsIDB4ZTgsIDB4NzAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4ODAsIDB4MDQsIDB4MDAsCisweDAwLCAweGEwLCAweDkzLCAweDAwLCAweDYxLCAweDc2LCAweGExLCAweGMzLCAweDA0LCAweGMwLCAweDhkLCAweDQxLCAweDU0LAorMHgwOSwgMHhlMCwgMHg3YiwgMHgwMCwgMHhjMCwgMHgxZiwgMHhhMCwgMHhmZCwgMHhjMSwgMHgwMSwgMHgwMCwgMHhjYywgMHgzMywKKzB4MDUsIDB4MDAsIDB4MWMsIDB4ZDQsIDB4MDMsIDB4MDAsIDB4M2MsIDB4MWMsIDB4ZDQsIDB4ZDMsIDB4MWIsIDB4MDAsIDB4MWMsCisweGMwLCAweGQzLCAweDUyLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDc0LCAweDEzLCAweDA0LCAweDhlLCAweDhlLCAweDQyLAorMHg1NCwgMHgwOSwgMHg1YiwgMHg4MCwgMHg3NiwgMHgxMywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwKKzB4MDAsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MGYsIDB4NDEsIDB4NTQsIDB4MDksIDB4YTAsIDB4MGYsIDB4NDEsIDB4NTQsCisweDA5LCAweGMwLCAweDAzLCAweGZjLCAweDdmLCAweDFjLCAweGEwLCAweDAxLCAweDljLCAweDAxLCAweDAwLCAweDAwLCAweDAwLAorMHhhMCwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHhjMCwgMHgwMywgMHhmYywgMHgwMywgMHgxYywKKzB4ZjUsIDB4NzcsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MjYsIDB4N2EsIDB4ZjYsIDB4MDUsIDB4MWMsIDB4YTAsIDB4MGYsIDB4NDEsCisweDU0LCAweDA5LCAweGIzLCAweDBmLCAweDQxLCAweDU0LCAweDA5LCAweGI1LCAweDAyLCAweDAyLCAweDAwLCAweDFjLCAweGEwLAorMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHg3YSwgMHgwNiwgMHgwMiwgMHgwMCwgMHgxYywgMHhiNSwgMHgwMiwgMHgwMiwgMHgwMCwKKzB4MWMsIDB4NTMsIDB4MGYsIDB4NDIsIDB4NTQsIDB4MDksIDB4YWYsIDB4MDMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4N2EsIDB4MGUsCisweDQyLCAweDU0LCAweDA5LCAweGI1LCAweDAyLCAweDAyLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDFjLAorMHhhMCwgMHgzZCwgMHhhNiwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgxMSwgMHgwNCwgMHhkNCwgMHhkMywgMHg1MiwKKzB4MDAsIDB4MWMsIDB4YjUsIDB4M2UsIDB4YWUsIDB4MDEsIDB4MDAsIDB4MjAsIDB4ZmIsIDB4ZmQsIDB4ZmYsIDB4MWYsIDB4ODAsCisweDJjLCAweDg0LCAweDAzLCAweDAwLCAweGI5LCAweDNhLCAweDlhLCAweDAxLCAweDAwLCAweDc1LCAweDNiLCAweDAyLCAweDAwLAorMHgxYywgMHhhNywgMHgxYywgMHgwMSwgMHgwMCwgMHgxMCwgMHhkYiwgMHg4MywgMHgxNiwgMHgwMCwgMHgxYywgMHhjNywgMHgxZCwKKzB4MWQsIDB4YzEsIDB4MDQsIDB4YjksIDB4M2IsIDB4ODksIDB4YzEsIDB4MDQsIDB4OGIsIDB4MmMsIDB4MDEsIDB4MDAsIDB4MWMsCisweDZiLCAweDJjLCAweDMxLCAweGMxLCAweDA0LCAweDAwLCAweDAwLCAweDc0LCAweDExLCAweDAwLCAweGNiLCAweDJjLCAweDc1LAorMHhjMSwgMHgwNCwgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHg1NCwKKzB4ZDAsIDB4MDIsIDB4MDAsIDB4MWMsIDB4NDksIDB4MjUsIDB4YWQsIDB4MDEsIDB4MDAsIDB4YWIsIDB4MmMsIDB4N2QsIDB4YzEsCisweDA0LCAweGE3LCAweDFkLCAweDZkLCAweDAzLCAweDAwLCAweGNjLCAweDMzLCAweDA5LCAweDAwLCAweDFjLCAweGViLCAweDJkLAorMHgwMSwgMHgwMCwgMHgxYywgMHhlYSwgMHgyOSwgMHgwMSwgMHgwMCwgMHgxYywgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwKKzB4YWUsIDB4MGYsIDB4NDEsIDB4NTQsIDB4MDksIDB4YTAsIDB4MGYsIDB4NDEsIDB4NTQsIDB4MDksIDB4ZDQsIDB4MDcsIDB4ZmMsCisweDAzLCAweDFjLCAweDk5LCAweDNhLCAweDAyLCAweDAwLCAweDFjLCAweGJiLCAweDM4LCAweDAyLCAweDAwLCAweDFjLCAweDAwLAorMHgzOCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMSwgMHgwNCwgMHhkYiwgMHgzYiwgMHg3ZSwgMHgwMCwKKzB4MWMsIDB4YzcsIDB4MWQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MjYsIDB4N2EsIDB4MGEsIDB4MDYsIDB4MWMsIDB4MjcsIDB4MWQsCisweDAxLCAweDAwLCAweDFjLCAweGIzLCAweDBmLCAweDQxLCAweDU0LCAweDA5LCAweDdhLCAweDBlLCAweDQyLCAweDU0LCAweDA5LAorMHg1MywgMHgwZiwgMHg0MiwgMHg1NCwgMHgwOSwgMHg3YSwgMHgwZSwgMHg0MiwgMHg1NCwgMHgwOSwgMHg1MywgMHgwZiwgMHg0MiwKKzB4NTQsIDB4MDksIDB4N2EsIDB4MGUsIDB4NDIsIDB4NTQsIDB4MDksIDB4NTMsIDB4MGYsIDB4NDIsIDB4NTQsIDB4MDksIDB4YTAsCisweDBmLCAweDQxLCAweDU0LCAweDA5LCAweDdhLCAweDA2LCAweDAyLCAweDAwLCAweDFjLCAweDUzLCAweDBmLCAweDQyLCAweDU0LAorMHgwOSwgMHhhZiwgMHgwMywgMHgwMSwgMHgwMCwgMHgxYywgMHg3YSwgMHgwZSwgMHg0MiwgMHg1NCwgMHgwOSwgMHg1MywgMHgwZiwKKzB4NDIsIDB4NTQsIDB4MDksIDB4N2EsIDB4MGUsIDB4NDIsIDB4NTQsIDB4MDksIDB4NTMsIDB4MGYsIDB4NDIsIDB4NTQsIDB4MDksCisweDdhLCAweDBlLCAweDQyLCAweDU0LCAweDA5LCAweDUzLCAweDBmLCAweDQyLCAweDU0LCAweDA5LCAweDdhLCAweDBlLCAweDQyLAorMHg1NCwgMHgwOSwgMHgwMCwgMHgzZCwgMHgwMiwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg1NCwgMHgxMiwgMHgwMCwgMHhjYiwKKzB4MmMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NzUsIDB4M2IsIDB4MDIsIDB4MDAsIDB4MWMsIDB4YTcsIDB4MWMsIDB4MDEsIDB4MDAsCisweDEwLCAweGE2LCAweDdiLCAweGYxLCAweDA1LCAweDFjLCAweDAwLCAweDAwLCAweDg4LCAweGMyLCAweDA0LCAweGE2LCAweDdiLAorMHhmMSwgMHgwNSwgMHgxYywgMHgwMCwgMHgwMCwgMHhhMCwgMHhjMiwgMHgwNCwgMHhjYiwgMHgyZiwgMHgwNSwgMHgwMCwgMHgxYywKKzB4NjAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4MWMsIDB4YzcsIDB4MWMsIDB4ZTEsIDB4MDIsIDB4MDAsIDB4NTMsIDB4MGYsIDB4NDIsCisweDU0LCAweDA5LCAweGMwLCAweDgzLCAweGYxLCAweDMyLCAweDFjLCAweDAwLCAweDAwLCAweDVjLCAweDAyLCAweDA0LCAweDQ2LAorMHg3YSwgMHhkYSwgMHgwNSwgMHgxYywgMHg3YSwgMHgwZSwgMHg0MiwgMHg1NCwgMHgwOSwgMHhjMCwgMHg4MywgMHhmMSwgMHgzMiwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDQsIDB4NDAsIDB4ZmEsIDB4MTUsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsCisweGEwLCAweDAyLCAweDA0LCAweDQ2LCAweDdhLCAweGRhLCAweDA1LCAweDFjLCAweGEwLCAweDBmLCAweDQxLCAweDU0LCAweDA5LAorMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHg0MSwKKzB4NTQsIDB4MDksIDB4YjMsIDB4N2IsIDB4MDEsIDB4YzAsIDB4MWYsIDB4NzQsIDB4MGUsIDB4NDAsIDB4NTQsIDB4MDksIDB4YzAsCisweDAzLCAweDljLCAweDAwLCAweDFjLCAweDgwLCAweDAwLCAweGYwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDAyLAorMHgwNCwgMHgwMCwgMHgwMCwgMHhjNCwgMHgxMiwgMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywgMHhkNCwgMHhkMywKKzB4MmIsIDB4MDAsIDB4MWMsIDB4ZDQsIDB4ZDMsIDB4NTIsIDB4MDAsIDB4MWMsIDB4ODAsIDB4NzYsIDB4OTUsIDB4MTMsIDB4MDQsCisweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweGE2LCAweDdiLCAweGE5LCAweDAzLCAweDEwLCAweGM3LCAweDljLCAweDAwLAorMHgwMCwgMHgxYywgMHg4MCwgMHgyYywgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg3OCwgMHgwMiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4NmMsIDB4YzMsIDB4MDQsIDB4YWIsIDB4MmQsIDB4ZjEsIDB4MTIsIDB4MDUsIDB4MDcsIDB4MWQsIDB4Y2QsIDB4YzIsCisweDA0LCAweDhiLCAweDJkLCAweDAxLCAweDAwLCAweDFjLCAweDY5LCAweDI1LCAweDAxLCAweDAwLCAweDFjLCAweGE2LCAweDdiLAorMHhhOSwgMHgwMywgMHgxMCwgMHhjYiwgMHgyZiwgMHgwOSwgMHgwMCwgMHgxYywgMHg2MCwgMHgyYywgMHgwMCwgMHgwMCwgMHgxYywKKzB4MDAsIDB4MDAsIDB4NjAsIDB4MDMsIDB4MDAsIDB4NTMsIDB4MGYsIDB4NDIsIDB4NTQsIDB4MDksIDB4NDYsIDB4N2EsIDB4ZGEsCisweDA1LCAweDFjLCAweDdhLCAweDBlLCAweDQyLCAweDU0LCAweDA5LCAweDQwLCAweGZhLCAweDE1LCAweDAwLCAweDFjLCAweDAwLAorMHgwMCwgMHgyOCwgMHgwMywgMHgwNCwgMHg0NiwgMHg3YSwgMHhkYSwgMHgwNSwgMHgxYywgMHhiNSwgMHgwZiwgMHg0MSwgMHg1NCwKKzB4MDksIDB4YTAsIDB4MGYsIDB4NDEsIDB4NTQsIDB4MDksIDB4NzMsIDB4ZWMsIDB4NDIsIDB4MDMsIDB4MDQsIDB4NjAsIDB4MmMsCisweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDQwLCAweDAzLCAweDAwLCAweGM3LCAweDFjLCAweDAxLCAweDAwLCAweDFjLAorMHgwMCwgMHgwMCwgMHg0MCwgMHgxMywgMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywgMHhjMCwgMHhkNywgMHgyMiwKKzB4MDAsIDB4MWMsIDB4NzUsIDB4NTYsIDB4OTYsIDB4MTMsIDB4MDQsIDB4NjAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ZTcsCisweDFjLCAweDVkLCAweDAzLCAweDA0LCAweGU3LCAweDljLCAweDAwLCAweDAwLCAweDFjLCAweGE2LCAweDdiLCAweGE5LCAweDAzLAorMHgxMCwgMHg4MCwgMHgyYywgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMywgMHgwNCwgMHgwMCwgMHgwMCwKKzB4NmMsIDB4YzMsIDB4MDQsIDB4YjksIDB4N2IsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzMsIDB4MDQsCisweGNiLCAweGFmLCAweGZjLCAweDA3LCAweDFjLCAweGNiLCAweDJmLCAweDAxLCAweDA0LCAweDFjLCAweGM3LCAweDlmLCAweDgwLAorMHgwMywgMHgxYywgMHgwMCwgMHgwMCwgMHhhMCwgMHhjMywgMHgwNCwgMHhjYiwgMHhhZiwgMHhmYywgMHgwNywgMHgxYywgMHhjYiwKKzB4MmYsIDB4MGQsIDB4MDQsIDB4MWMsIDB4YzcsIDB4OWYsIDB4ODAsIDB4MDMsIDB4MWMsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzMsCisweDA0LCAweGNiLCAweGFmLCAweDAwLCAweGY4LCAweDFkLCAweGNiLCAweDJmLCAweDAxLCAweDAwLCAweDFkLCAweDAwLCAweDAwLAorMHhhMCwgMHhjMywgMHgwNCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgxMywgMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywKKzB4YzAsIDB4MWQsIDB4ZjAsIDB4ZDMsIDB4MDgsIDB4MjcsIDB4OWQsIDB4ZjgsIDB4MDMsIDB4MDAsIDB4YTAsIDB4ZWUsIDB4NTYsCisweGQ0LCAweDAwLCAweGZiLCAweDc1LCAweDE5LCAweDE0LCAweDA0LCAweDIwLCAweDdiLCAweDA2LCAweDAwLCAweDFjLCAweGMwLAorMHgxYywgMHgyYywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjNCwgMHhkMywgMHgwOCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhmNCwKKzB4MDAsIDB4YzAsIDB4ZWYsIDB4ZjIsIDB4MDAsIDB4MWMsIDB4MjAsIDB4MjUsIDB4NmMsIDB4MTQsIDB4MDQsIDB4NjAsIDB4YjcsCisweGU2LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDE1LCAweDAwLCAweGNjLCAweGIzLCAweGZjLCAweDAzLCAweDFjLAorMHhjYywgMHgzMywgMHgwNSwgMHgwMiwgMHgxYywgMHgwMCwgMHgwMCwgMHgxYywgMHhjNSwgMHgwNCwgMHg2MCwgMHhiNywgMHgxZSwKKzB4MDUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MTUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NmMsIDB4YzQsIDB4MDQsIDB4YzAsCisweDFkLCAweGFjLCAweGYzLCAweDA0LCAweDAwLCAweDAwLCAweDc4LCAweGM0LCAweDA0LCAweDA3LCAweDlkLCAweDAwLCAweDAwLAorMHgxYywgMHgxYiwgMHg3NCwgMHgwZCwgMHhmNCwgMHgwNCwgMHhhMCwgMHgwZiwgMHg0MSwgMHg1NCwgMHgwOSwgMHhlMCwgMHg3YiwKKzB4MDAsIDB4ZmMsIDB4MWYsIDB4MzksIDB4N2YsIDB4MDIsIDB4MDAsIDB4MWMsIDB4MDcsIDB4MWQsIDB4YjEsIDB4YzMsIDB4MDQsCisweGE2LCAweDdiLCAweGMxLCAweDAzLCAweDFjLCAweDAwLCAweDAwLCAweDc4LCAweGM0LCAweDA0LCAweGUwLCAweDFjLCAweDAwLAorMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHhiOCwgMHgwMywgMHgwNCwgMHhjYiwgMHhhZiwgMHgwMCwgMHhmOCwgMHgxZCwgMHhjYiwKKzB4MmYsIDB4MDEsIDB4MTAsIDB4MWQsIDB4MDAsIDB4MDAsIDB4YzAsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDMsCisweDA0LCAweGNiLCAweGFmLCAweDAwLCAweGY4LCAweDFkLCAweGNiLCAweDJmLCAweDAxLCAweDE4LCAweDFkLCAweGM3LCAweDlmLAorMHgwMCwgMHgwYiwgMHgxYywgMHgwMCwgMHgwMCwgMHhjMCwgMHhjMywgMHgwNCwgMHhmYiwgMHg3NSwgMHgwMSwgMHgwMCwgMHgxYywKKzB4MDcsIDB4MWQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4Y2MsIDB4YjMsIDB4ZmMsIDB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsIDB4MDEsCisweDAyLCAweDFjLCAweDAwLCAweDAwLCAweGMwLCAweGMzLCAweDA0LCAweGEwLCAweDFjLCAweDAwLCAweDAwLCAweDFjLCAweGEwLAorMHhlZSwgMHhiNiwgMHgwMywgMHgwNCwgMHhjYiwgMHhhZiwgMHhmYywgMHgwNywgMHgxYywgMHhjYiwgMHgyZiwgMHgwOSwgMHgwNCwKKzB4MWMsIDB4ZmIsIDB4NzUsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4YzAsIDB4YzMsIDB4MDQsIDB4Y2MsIDB4YjMsCisweGZjLCAweDAzLCAweDFjLCAweGNjLCAweDMzLCAweDAxLCAweDAyLCAweDFjLCAweDAwLCAweDAwLCAweDFjLCAweGM1LCAweDA0LAorMHgwMCwgMHgwMCwgMHg4OCwgMHgzNCwgMHgwNSwgMHhjYywgMHhiMywgMHhmYywgMHgwMywgMHgxYywgMHhjYywgMHgzMywgMHgxNSwKKzB4MDIsIDB4MWMsIDB4NDcsIDB4OWQsIDB4NjQsIDB4YzQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODgsIDB4NDQsIDB4MDAsIDB4ODAsCisweDFkLCAweDhjLCAweDU0LCAweDA0LCAweDg3LCAweDFkLCAweDlkLCAweDA0LCAweDAwLCAweGNlLCAweDc2LCAweDAxLCAweDAwLAorMHgxYywgMHhlZiwgMHg3NiwgMHhhZCwgMHhjNCwgMHgwNCwgMHhhNCwgMHg3NywgMHg5ZCwgMHgyNCwgMHgwOSwgMHhlNCwgMHg3NiwKKzB4MDEsIDB4MDAsIDB4MWMsIDB4YzQsIDB4NzYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NTQsIDB4MDQsCisweGQ3LCAweDc2LCAweDAxLCAweDUwLCAweDE4LCAweGY2LCAweDc2LCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLAorMHgzMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhjYywgMHgzMCwgMHg1MSwgMHhjNSwgMHgwNCwgMHhlYiwKKzB4MmQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4ZWEsIDB4MjksIDB4MDEsIDB4MDAsIDB4MWMsIDB4YzAsIDB4NTksIDB4MDEsIDB4MDAsCisweDFjLCAweGY1LCAweDc3LCAweDM5LCAweGM1LCAweDA0LCAweGUwLCAweDMwLCAweGVjLCAweDA0LCAweDAwLCAweDAwLCAweDRjLAorMHhjMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0YywgMHgwNCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHgwMCwKKzB4Y2MsIDB4YjMsIDB4ZmMsIDB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsIDB4MDksIDB4MDIsIDB4MWMsIDB4ZWIsIDB4MmQsIDB4YzUsCisweGM0LCAweDA0LCAweGNjLCAweGIzLCAweGZjLCAweDAzLCAweDFjLCAweGNjLCAweDMzLCAweDE5LCAweDAyLCAweDFjLCAweGViLAorMHgyZCwgMHhjNSwgMHhjNCwgMHgwNCwgMHhjYywgMHhiMywgMHhmYywgMHgwMywgMHgxYywgMHhjYywgMHgzMywgMHgwZCwgMHgwMiwKKzB4MWMsIDB4ZWIsIDB4MmQsIDB4YzUsIDB4YzQsIDB4MDQsIDB4Y2MsIDB4YjMsIDB4ZmMsIDB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsCisweDExLCAweDAyLCAweDFjLCAweGViLCAweDJkLCAweGM1LCAweGM0LCAweDA0LCAweDAwLCAweDdiLCAweDAwLCAweDgwLCAweDFjLAorMHhhZSwgMHg3NywgMHg1MSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhjMCwgMHgwNCwgMHhkMywgMHg4YiwgMHgwMCwKKzB4ZmMsIDB4MWYsIDB4NjAsIDB4N2EsIDB4M2MsIDB4MDAsIDB4MWMsIDB4NjAsIDB4NGMsIDB4ZDAsIDB4MDQsIDB4MDAsIDB4YzAsCisweDJmLCAweDIwLCAweDA1LCAweDFmLCAweGUwLCAweDMwLCAweGMwLCAweDA0LCAweDAwLCAweDgwLCAweDI1LCAweGMwLCAweDA0LAorMHgwMCwgMHhiNSwgMHg1YiwgMHhjMSwgMHgwNCwgMHgwNCwgMHg2OSwgMHgyNiwgMHgwMSwgMHgwMCwgMHgxYywgMHg2YSwgMHgyYiwKKzB4MDEsIDB4MDAsIDB4MWMsIDB4ODAsIDB4MWQsIDB4MDAsIDB4MDAsIDB4MWMsIDB4YTksIDB4MjUsIDB4NTEsIDB4MDUsIDB4MDAsCisweGVlLCAweDMwLCAweDAwLCAweDAwLCAweDFjLCAweGFmLCAweDc3LCAweDExLCAweDA1LCAweDAwLCAweGI0LCAweDVmLCAweDAxLAorMHg0MCwgMHgxOCwgMHgwNywgMHg5ZCwgMHg1NCwgMHg1NSwgMHgwNCwgMHhiNywgMHg3NiwgMHgwMSwgMHgwMCwgMHgxYywgMHg5NiwKKzB4NzYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NDcsIDB4MWQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YTQsIDB4MzMsIDB4MDEsIDB4NjAsCisweDE4LCAweGE0LCAweDJmLCAweDAxLCAweDYwLCAweDE4LCAweDY0LCAweDc3LCAweDAxLCAweDYwLCAweDE4LCAweDI0LCAweDc3LAorMHgwMSwgMHg2MCwgMHgxOCwgMHg0NCwgMHg3NywgMHgwMSwgMHgwMCwgMHgxYywgMHg2NCwgMHg4OCwgMHgwMywgMHgwMCwgMHgxYywKKzB4YTQsIDB4M2YsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YTQsIDB4M2IsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NTMsIDB4NzcsIDB4MDEsCisweDAwLCAweDFjLCAweGQzLCAweGNmLCAweDNiLCAweDAwLCAweDFjLCAweDUzLCAweDRmLCAweDAyLCAweDAwLCAweDFjLCAweGQzLAorMHhjZiwgMHgwMCwgMHgwMCwgMHgxZiwgMHhkYSwgMHhjZiwgMHgwYiwgMHgwMCwgMHgxYywgMHhkNSwgMHg1NywgMHgwZiwgMHgwMCwKKzB4MWMsIDB4ZDMsIDB4ZDMsIDB4MzcsIDB4MDAsIDB4MWMsIDB4ZDQsIDB4NTMsIDB4MGYsIDB4MDAsIDB4MWMsIDB4ZTAsIDB4MjksCisweDAwLCAweDAwLCAweDFjLCAweGY1LCAweGQ1LCAweGMwLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweGFjLCAweDU1LCAweDA0LAorMHg3NywgMHg1NiwgMHgwMSwgMHgwMCwgMHgxYywgMHg1NiwgMHg1MywgMHgwMSwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MTAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDQsIDB4YzAsIDB4MDQsIDB4ZjUsIDB4NTUsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsCisweDAwLCAweGM0LCAweDU1LCAweDA0LCAweDc3LCAweDU2LCAweDAxLCAweDAwLCAweDFjLCAweDU2LCAweDUzLCAweDAxLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhjMCwgMHgwNCwgMHhjYiwgMHgyZiwKKzB4MDEsIDB4MTgsIDB4MTAsIDB4Y2IsIDB4MmYsIDB4MDEsIDB4MTAsIDB4MTAsIDB4Y2IsIDB4MmYsIDB4MDEsIDB4MDgsIDB4MTAsCisweGNiLCAweDJmLCAweDAxLCAweDA4LCAweDEwLCAweGNiLCAweDJmLCAweDAxLCAweDIwLCAweDEwLCAweGNiLCAweDJmLCAweDAxLAorMHgwMCwgMHgxMCwgMHhjYiwgMHgyZiwgMHgwMSwgMHgyOCwgMHgxMCwgMHg4OSwgMHgyNSwgMHg2ZCwgMHhjMiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MDQsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NmMsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NmMsIDB4YzMsCisweDA0LCAweDAwLCAweDAwLCAweDZjLCAweGMzLCAweDA0LCAweDAwLCAweDAwLCAweDZjLCAweGMyLCAweDA0LCAweDAwLCAweDAwLAorMHgwNCwgMHhjMywgMHgwNCwgMHgwMCwgMHgwMCwgMHg2YywgMHhjMywgMHgwNCwgMHgwMCwgMHgwMCwgMHg2YywgMHhjMywgMHgwNCwKKzB4MDAsIDB4MDAsIDB4NmMsIDB4YzMsIDB4MDQsIDB4NDAsIDB4MWMsIDB4NjgsIDB4YzAsIDB4MDQsIDB4NDAsIDB4MWMsIDB4OTgsCisweGMwLCAweDA0LCAweGE3LCAweDc3LCAweDZkLCAweGMzLCAweDA0LCAweDAwLCAweDAwLCAweGMwLCAweGMwLCAweDA0LCAweDI3LAorMHgxZCwgMHhlZCwgMHhjMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg2YywgMHhjMywgMHgwNCwgMHgwMCwgMHgwMCwgMHg2YywgMHhjMywKKzB4MDQsIDB4MDAsIDB4MDAsIDB4NmMsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsCisweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLAorMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsCisweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLAorMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsCisweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2MsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGM2LCAweDA0LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL29hc2lzZGJnZG93bmxvYWQuaCBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL29hc2lzZGJnZG93bmxvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTllMDA3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvb2FzaXNkYmdkb3dubG9hZC5oCkBAIC0wLDAgKzEsNjg1MCBAQAorI2RlZmluZSBPQVNJU19VQ09ERV9WRVJTX1NUUklORwkiMS4yIgorI2RlZmluZSBPQVNJU19VQ09ERV9WRVJTX0RBVEUgIAkiMjAwNi8wMy8yNyAxNToxMToyMiIKKyNkZWZpbmUgT0FTSVNfVUNPREVfSE9TVElGX0lEICAJMworCitzdGF0aWMgczMyIE9OdW1TZWN0aW9ucyA9IDB4MjsKK3N0YXRpYyB1MzIgT1NlY3Rpb25TaXplW10gPQoreworCTB4MDAwMDQwMDAsIDB4MDAwMTAwMDAsCit9OworCitzdGF0aWMgdTMyIE9TZWN0aW9uU3RhcnRbXSA9Cit7CisJMHgwMDAwMDAwMCwgMHgwMDAwODAwMCwKK307CisKK3N0YXRpYyB1OCBPYXNpc1VDb2RlWzJdWzY1NTM2XSA9Cit7CisJeworCTB4MTUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LAorCTB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4ODAsIDB4YTIsIDB4NDAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgwOSwgMHgwMCwgMHhhMiwgMHg0OSwgMHhkZCwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQwLCAweGQxLCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4YTIsIDB4NDAsCisJMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDBiLCAweDAwLCAweGE4LCAweGIxLCAweDdlLCAweDMxLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OGYsIDB4OTgsIDB4MTgsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5OCwKKwkweDgwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4ODAsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4NDAsIDB4OTgsCisJMHg4MCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGE1LCAweDk5LCAweDAxLCAweDAwLCAweDE5LCAweDAwLCAweDI5LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MTQsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwZSwgMHgwMCwgMHg5MywgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MWYsIDB4MDAsIDB4MjksIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxZiwgMHgwMCwgMHgxNCwgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDEyLCAweDAwLCAweDkzLCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyNSwgMHgwMCwgMHgyOSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDI1LCAweDAwLCAweDE0LCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4OTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHhkZCwgMHg4MSwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDMzLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJhLCAweDAwLCAweDE0LCAweGJjLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4MDAsIDB4MTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0MCwKKwkweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmZCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmZiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDMzLCAweDAwLCAweDE4LCAweGVlLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4YTIsIDB4NDEsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDIwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4ZTAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MzksIDB4MDAsIDB4OTgsIDB4ZWUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNiLCAweDAwLCAweDgwLCAweGYzLCAweGRlLCAweDMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4M2UsIDB4MDAsIDB4ODMsIDB4ZjMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDJlLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDk0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHgyNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3YywgMHgwMCwgMHgxOCwgMHhlZSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQ1LCAweDAwLCAweDk1LCAweGU4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweGU4LAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4N2MsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweGVjLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ2LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwgMHhlZSwgMHg4YiwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAxLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4ODEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDgwLCAweDg4LCAweDAxLCAweDAwLCAweDNjLCAweDAwLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZDYsIDB4OGQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZjAsCisJMHhmMCwgMHhkYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgxLCAweDk0LCAweDAxLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDQwLAorCTB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgxLCAweDk0LCAweDAxLCAweDAwLAorCTB4M2MsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ2LCAweGIxLCAweDAxLCAweDAwLCAweDFlLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ZjgsIDB4ODAsIDB4ZDgsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMCwgMHgyNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgxLCAweGQwLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDQwLCAweDgwLCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhkOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMCwgMHgyMiwgMHhmYSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZGUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmYSwKKwkweDgwLCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY2LCAweDgxLCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmYSwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY2LCAweDgxLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHhkNiwgMHhlNSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGZiLCAweGQ2LCAweGU1LCAweDAxLCAweDAwLAorCTB4NDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHhkNiwgMHhlNSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweGZiLCAweGQ2LCAweGU1LCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweGZiLAorCTB4N2EsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZGMsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3YywgMHgwMCwgMHgwMCwgMHg0YywgMHhkZCwgMHg5MSwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHg5NSwgMHhlOCwKKwkweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweGU5LCAweGZhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDAwLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDg1LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODAsIDB4MjIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg3YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDhlLCAweDAwLCAweDA5LCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4OGMsIDB4MDAsIDB4MDgsIDB4ZjksIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDAsIDB4MWYsIDB4ZmQsCisJMHhmOSwgMHgzMywgMHgwMCwgMHgwMCwgMHg4YiwgMHgwMCwgMHg5ZSwgMHhmZCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGYzLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ4LAorCTB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHhmMywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDE5LCAweGIxLCAweDAxLCAweDAwLCAweDkzLCAweDAwLCAweDBhLCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDAsIDB4ZmIsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZmQsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHhmOSwgMHhmMywgMHg4ZiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA3LCAweDQyLCAweGY5LCAweGYzLCAweDhmLCAweDAxLCAweDAwLCAweDk3LCAweDAwLCAweGEyLCAweGZmLAorCTB4ZjcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHhmZiwgMHhmYiwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmYywKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTQsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NiwgMHhmZCwgMHg3ZiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk0LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGNlLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4ZmQsIDB4N2YsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5NCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweDdmLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4OWEsIDB4MTMsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMiwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMSwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4OWEsIDB4MTMsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDIsIDB4MjksIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDY3LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweGZkLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweGUyLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDUsIDB4ODAsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0NiwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweDQwLCAweDJiLCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDYsIDB4ODgsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDQ2LCAweDgwLCAweDg4LCAweDAxLCAweDAwLCAweGE1LCAweGE1LCAweGEyLCAweDQwLAorCTB4ODAsIDB4Y2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OGQsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHhjOSwgMHgwMCwgMHg4MiwgMHg0MSwgMHg4OSwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsCisJMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDQ1LCAweDgwLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ0LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDgsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyYiwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQ2LCAweDgwLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4OTQsIDB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4YTUsIDB4YTUsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHg0ZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDg0LCAweDAwLCAweDQxLCAweDJjLCAweDk5LCAweDAxLCAweDAwLCAweGRlLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODgsIDB4MDAsIDB4NDEsIDB4MmMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg5NiwKKwkweDgwLCAweGIyLCAweDAwLCAweDAwLCAweGRmLCAweDAwLCAweGEyLCAweDQxLCAweDhkLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsCisJMHgyNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg4OSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDAwLCAweDAwLCAweDQ0LCAweDgyLCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDk0LAorCTB4OGEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4OCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg5LCAweGQwLCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweDQ0LCAweDJiLCAweDQxLCAweDAxLCAweDAwLAorCTB4ZWMsIDB4MDAsIDB4MDgsIDB4NDEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4MDAsIDB4MDAsIDB4OTQsCisJMHgyNCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgyNCwgMHhmNSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDk0LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweGYyLCAweDAwLCAweGEwLCAweDQ0LAorCTB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MmIsIDB4NDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZiwgMHgwMCwgMHgyMCwgMHg0NCwKKwkweDg5LCAweDUwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQ1LCAweDg4LCAweGY0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OGEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4NDIsCisJMHg4OSwgMHhkMCwgMHgwMCwgMHgwMCwgMHhmNywgMHgwMCwgMHhhMCwgMHhmYSwgMHg4YSwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhiLCAweGMwLCAweDAxLCAweDAwLCAweGY1LCAweDAwLCAweGEzLCAweDQyLAorCTB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDUsIDB4ODgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4YSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhmYywgMHgwMCwgMHg5MCwgMHg0NCwKKwkweDhhLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhiLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDUsIDB4OGEsIDB4YTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTAsCisJMHg4YiwgMHhlMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg3ZiwgMHgwMCwgMHg0MCwgMHgyNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDAwLCAweDAwLCAweDQwLCAweDJiLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODMsIDB4MTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgyYSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweGY5LCAweDliLCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweGZjLCAweDE5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDAsIDB4OTQsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgyYiwgMHg0MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGY5LCAweGMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4MmIsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4OWYsIDB4OTQsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMiwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MSwKKwkweDkzLCAweGIwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDRkLCAweDkzLCAweGIwLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDEsIDB4MDAsIDB4NDksIDB4OTMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMSwgMHhhMiwgMHg0MSwgMHg5MywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDE4LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDcxLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDcyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg3NCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NzcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDdhLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDdiLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N2MsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg3ZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3ZSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDdmLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhMSwgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDExLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwYiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDAxLCAweGIwLCAweDAxLCAweDAwLCAweDNiLCAweDAxLCAweDIwLCAweDQ4LCAweGExLCAweDUxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NDcsIDB4MDEsIDB4MjIsIDB4NGIsCisJMHg3NCwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDAwLCAweDAwLCAweDRiLCAweDYwLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIxLAorCTB4N2UsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg0NSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGFhLCAweDk2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDMsIDB4OTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4YWEsCisJMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDA3LCAweDkwLCAweDAxLCAweDAwLCAweGQ4LCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDA3LCAweDkwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4OWYsIDB4MDAsIDB4NDAsIDB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MDEsIDB4MjIsIDB4Y2MsCisJMHg4NSwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsIDB4YTMsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhkMCwgMHgxNCwgMHgwMCwgMHg0MCwgMHhhMSwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NjMsIDB4MDEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHg4NSwgMHg5MywgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4YmEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHhhNCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhiYywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDE0LCAweDJmLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU3LAorCTB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4YTksIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGY0LCAweDAxLCAweDAwLCAweDczLCAweDAxLCAweDAwLCAweDQwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLAorCTB4ODYsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg4NywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDg4LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDg5LCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDhmLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NTAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjYsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGM0LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM1LCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4MywgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwgMHhiOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDI4LCAweDAwLCAweGQ0LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDI4LCAweDAwLAorCTB4ZDUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MjgsIDB4MDAsIDB4ZDYsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwgMHhkNywgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwKKwkweDcyLCAweDAxLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDI4LCAweDAwLCAweDU1LCAweDAxLCAweDUxLCAweDQ5LAorCTB4ZmQsIDB4OTMsIDB4MjgsIDB4MDAsIDB4NTUsIDB4MDEsIDB4NTIsIDB4NGEsIDB4ZmQsIDB4OTMsIDB4MmEsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHg1NSwgMHg0OSwgMHhmZCwgMHg4MywgMHgyYSwgMHgwMCwgMHg1NSwgMHgwMSwgMHg1NiwgMHg0YSwKKwkweGZkLCAweDgzLCAweDJhLCAweDAwLCAweDUwLCAweDAxLCAweDkxLCAweDgxLCAweDgwLCAweDMwLCAweDJhLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MmEsIDB4MDAsIDB4NTAsIDB4MDEsIDB4OTEsIDB4ODIsCisJMHg4MCwgMHgzMCwgMHgyYSwgMHgwMCwgMHg1NSwgMHgwMSwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyYSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg5LCAweGIwLCAweDJiLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQwLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NDAsIDB4NDksIDB4OTksIDB4MDEsIDB4MDAsCisJMHhiMywgMHgwMSwgMHgyMiwgMHhkZSwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDAxLCAweDAwLAorCTB4OTIsIDB4MDEsIDB4YTIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg0OSwgMHhkMSwgMHgwMSwgMHgwMCwgMHg5YSwgMHgwMSwgMHgyMiwgMHg0MCwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDk2LCAweDAxLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDAwLCAweDQxLAorCTB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4YmYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg1MCwgMHgwMSwgMHhhMCwgMHgwZiwgMHhiZCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGMxLCAweDAxLCAweDAwLAorCTB4YjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MTksIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHhmZiwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRlLCAweDE5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGZmLAorCTB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZmYsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHhmZiwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDE0LCAweDAwLCAweGE0LCAweDgwLCAweGNjLCAweDAxLCAweDAwLAorCTB4YWEsIDB4MDEsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMSwgMHhhMiwgMHg0YywgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGI0LCAweDAxLCAweDIyLCAweGQyLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDAxLCAweDIyLCAweDQxLAorCTB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4YTIsIDB4ZTAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhjMSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDg5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQyLCAweDgwLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDEsIDB4NDMsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg0NCwgMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGIxLCAweDAxLCAweDAwLCAweDQ4LCAweDQ5LCAweGMxLCAweDAwLCAweDAwLCAweGFmLCAweDAxLCAweDAwLCAweDViLAorCTB4ODksIDB4OTAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OWYsIDB4MDAsIDB4YTAsIDB4OWUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4YmUsIDB4MDEsIDB4MjIsIDB4ZGUsIDB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDAxLCAweGEyLCAweDQ0LCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDAwLCAweDQzLAorCTB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0MCwgMHhmOCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhjNiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkxLCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDJlLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhjYiwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLAorCTB4ZDEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTMsIDB4MDEsIDB4MDAsIDB4ZGUsCisJMHhhMSwgMHhiMywgMHgwMCwgMHgwMCwgMHhlMywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweGViLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MDEsIDB4MDAsIDB4ZGYsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwKKwkweGExLCAweGIxLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweGQyLCAweGE1LCAweGU3LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMSwgMHgyMiwgMHg0NCwgMHhjMSwgMHg1MywgMHgwMCwgMHgwMCwKKwkweGRhLCAweDAxLCAweDg0LCAweDQxLCAweDgxLCAweDQwLCAweDAwLCAweDAwLCAweGRlLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkNSwgMHgwMSwgMHgwMCwgMHg0MSwgMHhhMSwgMHhjMSwgMHgwMCwgMHgwMCwgMHhkYSwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4YTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGRhLCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweGQzLAorCTB4YTcsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4MDAsIDB4ZTAsIDB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMywgMHg5YiwgMHgwMSwgMHgwMCwgMHg1MywgMHgwMSwgMHgwMCwgMHhkZSwKKwkweGExLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGJmLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGUsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDEsIDB4YTIsIDB4YmEsCisJMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHhkZSwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGU4LCAweDAxLCAweGE4LCAweGIxLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDUyLCAweDAxLCAweDAwLCAweDQwLAorCTB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YmEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg2YiwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0ZCwKKwkweDgzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGUxLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZTMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhlNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhlOSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGViLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZjUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmOSwgMHhiMywgMHgwMSwgMHgwMCwgMHhmOSwgMHgwMSwgMHgyMiwgMHg0MCwKKwkweDhmLCAweDZmLCAweDAwLCAweDAwLCAweDc4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4NjAsIDB4MDIsIDB4MDAsIDB4YzcsIDB4ODMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0MiwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGU4LCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU5LAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWEsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVjLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGFjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGFiLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhiOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJiLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDIsIDB4YjgsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwZSwgMHgwMiwgMHhiOSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDEwLCAweDAyLCAweGJhLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMiwgMHhiYiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDE0LCAweDAyLCAweGJjLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTYsIDB4MDIsIDB4YmQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDE4LCAweDAyLCAweGJlLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MWEsIDB4MDIsIDB4YmYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgxYywgMHgwMiwgMHhjOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MWUsIDB4MDIsIDB4YzksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMiwgMHhjYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDIyLCAweDAyLCAweGNiLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHgwMiwgMHhjYywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDI2LCAweDAyLCAweGNkLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDIsIDB4Y2UsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDJhLCAweDAyLCAweGNmLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDIsIDB4ZjAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMiwgMHhmMSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDIsIDB4ZjIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwMiwgMHhmMywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUzLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDM0LCAweDAyLCAweGY0LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgzNiwgMHgwMiwgMHhmNSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDM4LCAweDAyLCAweGY2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4M2EsIDB4MDIsIDB4ZjcsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDAyLCAweGY4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4M2UsIDB4MDIsIDB4ZjksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1OSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMiwgMHhmYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4NDIsIDB4MDIsIDB4ZmIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0NCwgMHgwMiwgMHhmYywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDQ2LCAweDAyLCAweGZkLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg0OCwgMHgwMiwgMHhmZSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDRhLCAweDAyLCAweGZmLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MmUsIDB4MDYsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHhkMywgMHhhNywgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYxLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVmLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGRiLCAweDAxLCAweDAwLCAweGM3LCAweGUxLCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjYsIDB4MDIsIDB4MDAsIDB4NDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHg0MCwgMHgxYSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4NjMsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MDIsIDB4NDksIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg0MCwgMHgxYywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDRlLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg1ZiwgMHgwMiwgMHg0YSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwKKwkweDllLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGQ4LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ZDAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsCisJMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHhkNCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGQ2LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQxLAorCTB4ZGMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4ZGUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHhkYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwKKwkweDhlLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLCAweGU2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ZWMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksCisJMHhmYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlMCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGUyLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LAorCTB4ZTQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZTgsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwKKwkweGY0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGY2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZjgsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzcsCisJMHhhOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg0MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDg0LCAweDAyLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLAorCTB4OGQsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwMiwgMHgwMCwgMHg0NiwgMHhhMywgMHhiMywgMHgwMCwgMHgwMCwKKwkweDliLCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGExLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGYsIDB4MDIsIDB4MjMsIDB4NTAsIDB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhNSwgMHhiMywgMHgwMSwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHg0MiwKKwkweGE1LCAweDYzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwgMHhhMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDk3LCAweDAyLCAweDIyLCAweDQ0LAorCTB4YTUsIDB4NTMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDIsIDB4MDAsIDB4NDEsIDB4YTEsIDB4YzEsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHgwMCwgMHhkZCwgMHhhMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHhkZSwKKwkweGExLCAweDMzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHhiZiwgMHhiMywgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMSwgMHhhMiwgMHhkMiwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLAorCTB4NjMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OWUsIDB4MDIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHg1NCwKKwkweGE1LCAweDMzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHhkMCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ZDYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0NiwKKwkweDgzLCAweDMwLCAweDAxLCAweDAwLCAweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4OWUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsCisJMHg0MywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOSwgMHg0NSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGVhLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGViLAorCTB4YTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NDAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDE0LCAweDJlLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhiZCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweGMzLCAweDAyLCAweDAwLCAweDA1LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4MDIsIDB4MDAsIDB4MDUsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDAyLCAweDAwLCAweDQ0LCAweGE1LCAweGIzLCAweDAwLCAweDAwLCAweGQyLCAweDAyLCAweDAwLCAweDQ0LAorCTB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHg4MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhjMSwKKwkweGYwLCAweDg5LCAweDAxLCAweDAwLCAweGM4LCAweDAyLCAweDIyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4YzQsIDB4MDIsIDB4MDAsIDB4NDEsIDB4YzEsIDB4YzMsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQwLAorCTB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4OTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhjOSwgMHhmMCwgMHg4OSwgMHgwMSwgMHgwMCwgMHhjOCwgMHgwMiwgMHgyMiwgMHg0MSwKKwkweDgxLCAweDUwLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweDQxLCAweGMxLCAweGMzLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZGUsIDB4ODUsIDB4ODksIDB4MDEsIDB4MDAsIDB4YzgsIDB4MDIsIDB4MDAsIDB4YzIsCisJMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhkZSwgMHg5NSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweGM4LCAweDAyLCAweDAwLCAweGNhLCAweGUwLCAweGIxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU3LCAweGE3LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4YTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZSwgMHgwMywgMHgwMCwgMHhjYiwgMHhhMywgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQyLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQxLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZTIsIDB4MDIsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjYywgMHg4NSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlNywgMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwKKwkweGE5LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsIDB4YTMsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg0NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4MDIsIDB4MDAsIDB4ZDQsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweGNjLAorCTB4ODUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmYSwgMHgwMiwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHhmOSwgMHgwMiwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGNjLCAweDg1LCAweDgzLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQxLAorCTB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDMsIDB4MjIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgxMiwgMHgwMywgMHgyMiwgMHg0OCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwYywgMHgwMywgMHgyMiwgMHg0YywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDE2LCAweDAzLCAweDIyLCAweDUwLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MTcsIDB4MDMsIDB4MjIsIDB4NTQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDMsIDB4MjIsIDB4NTgsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgxZSwgMHgwMywgMHgyMiwgMHg1YywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDUwLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLAorCTB4MDksIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGYzLCAweDgzLCAweDAxLCAweDAwLCAweDEwLCAweDAzLCAweGEyLCAweDQyLCAweDA1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MjIsIDB4Y2EsCisJMHgwNywgMHgxNCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHg0NSwgMHhmMywgMHg5MywgMHgwMCwgMHgwMCwKKwkweGRkLCAweDlmLCAweDIwLCAweDQzLCAweDk1LCAweDZmLCAweDAwLCAweDAwLCAweGRkLCAweDlmLCAweDgwLCAweGNhLAorCTB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MjIsIDB4MDEsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwgMHg1NywgMHgwMSwgMHgwMCwgMHhiYywKKwkweGFiLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweGIxLCAweGIzLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OWYsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHhhMiwgMHg0MCwgMHg3NCwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDYwLCAweDAwLCAweDIwLCAweDQwLCAweDYwLCAweDk5LCAweDAxLCAweDAwLCAweDFiLCAweDAzLCAweGE4LCAweGIxLAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYSwgMHg3OSwgMHhiMywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4Y2IsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMywgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MmQsIDB4MDMsIDB4OTEsIDB4ODIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDJiLCAweDAzLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDMsIDB4NTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OWYsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGNkLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MDMsIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDNkLCAweDAzLCAweDkxLCAweDgxLCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg5LAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgzYiwgMHgwMywgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzZCwgMHgwMywgMHg1NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDlmLCAweDAwLCAweDQxLCAweDhiLCAweGIzLCAweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzQsIDB4MTQsIDB4MmYsIDB4NDAsIDB4OTksIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg1NywgMHgwMSwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDk0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDkwLCAweDAwLCAweGY4LAorCTB4ODAsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODgsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDIzLCAweDkxLCAweDAxLCAweDAwLCAweDRkLCAweDAzLCAweDFmLCAweDkxLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjAsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgxZiwgMHg5MSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDQwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4MjMsIDB4OTEsIDB4MDEsIDB4MDAsIDB4NTMsIDB4MDMsIDB4MWYsIDB4OTEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMywgMHgxZiwgMHg5MSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweDQwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0OCwgMHg4NCwgMHg4NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4OGYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1YSwgMHgwMywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHg0NywKKwkweDhlLCAweGM4LCAweDAxLCAweDAwLCAweDU4LCAweDAzLCAweDAwLCAweDVjLCAweDhmLCAweDgwLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTgsIDB4MTUsIDB4MmQsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyZCwgMHhmMCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODIsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4YiwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweDgzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDgyLCAweDk0LCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NjAsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4ZCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgyMiwgMHg1ZiwgMHg4ZCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDY1LCAweDAzLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDYzLCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDQzLCAweDg2LCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4NDEsIDB4ODUsIDB4NTAsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDMsIDB4MDAsIDB4NDEsCisJMHg4MywgMHhlMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDg1LCAweGUwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDJmLCAweDQ2LAorCTB4ODQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjAsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4YiwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDg1LCAweDAzLCAweGEwLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4ODMsIDB4MDMsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsCisJMHg4ZSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDhiLCAweDAzLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg4MiwgMHhmNCwgMHgwMSwgMHgwMCwgMHgxYSwgMHgxNSwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDcwLCAweDE1LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwgMHhlMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDcwLCAweDE1LCAweDAwLCAweDQzLCAweDYyLCAweDk5LCAweDAxLCAweDAwLAorCTB4OTUsIDB4MDMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OTcsIDB4MDMsIDB4MjIsIDB4NWEsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3YSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDAzLCAweGE4LCAweGIxLCAweDdlLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDQyLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDMsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MTUsIDB4MmQsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyZCwgMHhmMCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE2LAorCTB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4NDgsIDB4OTAsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYSwKKwkweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDMsIDB4MjIsIDB4NDAsCisJMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OGQsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MjIsIDB4NWYsIDB4OGQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhNywgMHgwMywgMHhhMiwgMHg0MSwgMHg5MywgMHg1MCwgMHgwMCwgMHgwMCwgMHhhNSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDQ3LCAweDg0LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4OWYsIDB4MDAsIDB4NDcsCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHg0NywgMHg4ZSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NTAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDMsIDB4MjAsIDB4MTgsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDU1LCAweDliLCAweDAxLCAweDAwLAorCTB4YmUsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDU1LCAweDliLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NTAsIDB4ZDMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NGYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg0ZSwgMHhkMywgMHgwMSwgMHgwMCwgMHg2ZSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDgyLCAweDAzLCAweDAwLCAweDQyLCAweDgwLCAweDMwLCAweDAxLCAweDAwLAorCTB4YjAsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YzcsIDB4MDMsIDB4MjIsIDB4YTcsCisJMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwgMHg1YSwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YzgsIDB4MTQsIDB4MmUsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweGEwLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4Y2EsCisJMHhhNywgMHgzMywgMHgwMSwgMHgwMCwgMHhlMCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ2LCAweDAzLCAweDIyLCAweDQyLAorCTB4NzUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDMsIDB4MjIsIDB4NDEsIDB4NzUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHgwMywgMHgxZSwgMHhjYSwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMywgMHgxZiwgMHhjYSwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGM5LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OWYsIDB4MDAsIDB4NDIsIDB4NzUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhjZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MSwgMHg3NSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGNmLCAweGIxLCAweDAxLCAweDAwLCAweGRkLCAweDlmLCAweDAwLCAweDQwLAorCTB4NzUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4YTYsIDB4YzYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweGM2LCAweGIxLCAweDAxLCAweDAwLCAweGRkLCAweDlmLCAweDAwLCAweDQwLCAweDc1LCAweGIzLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMSwgMHgwMCwgMHg0ZCwgMHg5MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDAxLCAweDAwLCAweDRlLCAweDkzLCAweDMwLCAweDAxLCAweDAwLCAweDQ1LCAweDAxLCAweDAwLCAweDRjLAorCTB4OTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZWMsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTQsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYSwgMHhlNSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4MTQsIDB4MmUsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsCisJMHhhMCwgMHhiMywgMHgwMSwgMHgwMCwgMHgxNSwgMHgwNCwgMHgwMCwgMHg0MywgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweGRhLCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDdjLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODksIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg4LCAweDhjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDg3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDMsCisJMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDg3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4YTUsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDQsIDB4MjIsIDB4NDQsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwYiwgMHgwNCwgMHgyMiwgMHg0NCwgMHg4YiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhmYSwgMHgwMywgMHhhMiwgMHg1MCwKKwkweGE1LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGE1LCAweGUzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjYywgMHgxNCwgMHgyZSwgMHhkMiwgMHg5NSwgMHhjMywgMHgwMSwgMHgwMCwKKwkweGFlLCAweDAzLCAweDAwLCAweGNiLCAweGEzLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwNCwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwNCwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGZhLCAweDAzLCAweDAwLCAweDQwLCAweGE1LCAweGIzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4YTUsIDB4ZTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHhlMSwgMHg5ZiwgMHgwMCwgMHhiYiwgMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGUwLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDksIDB4MmIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDk0LCAweGI0LCAweDhiLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDksCisJMHgyYiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDk0LAorCTB4YjQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQ5LCAweDJiLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4MjcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDYsIDB4YzAsIDB4MDAsIDB4NDAsIDB4MmQsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhkZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweGM0LCAweDAwLCAweDQxLCAweDJjLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZGUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MiwgMHgwMCwgMHg0MSwgMHgyYywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGRlLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJkLCAweDA0LCAweDgwLCAweDk0LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDJkLCAweDk5LCAweDAxLCAweDAwLCAweGRlLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MzEsIDB4MDQsIDB4MDAsIDB4MTIsCisJMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDQ5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDRiLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NGQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg0ZiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDUyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4NDAsIDB4NTQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NTYsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDgwLCAweDU5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDViLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NWQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHg1ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDYyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4NjQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NjUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDY5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDZiLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NmMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg2ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDcyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4YzAsIDB4NzMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NzUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDc5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweGMwLCAweDdhLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4N2MsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg3ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTksIDB4MDQsIDB4MDAsIDB4MTIsIDB4MTAsIDB4YzksIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDg0LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODYsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDhjLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDhlLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OTAsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5MiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5NCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDk2LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTgsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OWEsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5YywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDllLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGEwLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTIsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhhNCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGE4LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YWEsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGIwLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGIyLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhiNiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiOCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGJhLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YmMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YmUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg4MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIxLCAweDAxLCAweDAwLCAweDgyLCAweDA0LCAweDg1LCAweDQxLAorCTB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDkwLCAweGIxLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDkyLCAweGIxLCAweDAxLCAweDAwLAorCTB4ODcsIDB4MDQsIDB4ODUsIDB4NDEsIDB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHg2MCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4ZjAsIDB4NGIsIDB4ODIsIDB4ODksIDB4MDEsIDB4MDAsIDB4OTMsIDB4MDQsIDB4NjAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweGYwLCAweGE2LCAweDgyLCAweGIxLCAweDAxLCAweDAwLCAweDk2LCAweDA0LCAweDYwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGIsIDB4ODQsIDB4ODksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhmMCwgMHhjMiwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweDkwLCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDgwLCAweDRiLCAweDkyLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTYsCisJMHg5MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0YiwgMHg5NCwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweGNhLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4OTgsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg5OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDk5LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDk4LCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4OTksIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg4OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHhhNiwgMHgwNCwgMHg0NywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFkLCAweDA0LCAweDIyLCAweDIwLCAweDg3LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFmLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGE2LCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4ODAsIDB4ODYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDQsIDB4MjIsIDB4NGYsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjEsIDB4MDQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHgwNCwgMHgyMiwgMHg0YiwgMHg4OSwgMHg3YywgMHgwMCwgMHgwMCwgMHhiNiwgMHgwNCwgMHgyMiwgMHg0ZiwKKwkweDc3LCAweDdkLCAweDAwLCAweDAwLCAweGMwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjYsIDB4MDQsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgyMCwgMHg4NywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg5OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGMxLCAweDA0LCAweGE4LCAweGIxLCAweDUyLCAweDMzLCAweDAwLCAweDAwLCAweGM2LCAweDA0LCAweDIyLCAweDRiLAorCTB4NTMsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhjNCwgMHgwNCwgMHhhOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwgMHhjMSwgMHgwNCwgMHhhMiwgMHg0MSwKKwkweDk5LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDRmLCAweDc3LCAweGZkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDRlLCAweDk4LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4OTgsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg5OSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5OCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDk5LCAweGUwLCAweDAxLCAweDAwLCAweGQ2LCAweDA0LCAweDAwLCAweDRjLAorCTB4ODgsIDB4OTQsIDB4MDAsIDB4MDAsIDB4ZDYsIDB4MDQsIDB4NDcsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHgwNCwgMHgyMiwgMHgyMCwgMHg4NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhkNiwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFmLCAweDgwLCAweDg2LCAweGIzLCAweDAxLCAweDAwLCAweGUwLCAweDA0LCAweDIyLCAweDRmLAorCTB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGUxLCAweDA0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZTgsIDB4MDQsIDB4MjIsIDB4NGEsIDB4ODksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4MDQsIDB4MjIsIDB4NGYsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGU2LCAweDA0LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MjAsIDB4ODcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4OTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhmMSwgMHgwNCwgMHhhOCwgMHhiMSwgMHg1MiwgMHgzMywgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNCwgMHgyMiwgMHg0YSwKKwkweDUzLCAweDdmLCAweDAwLCAweDAwLCAweDZmLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZjQsIDB4MDQsIDB4YTgsIDB4YjEsIDB4N2UsIDB4MzEsIDB4MDAsIDB4MDAsIDB4ZjEsIDB4MDQsIDB4YTIsIDB4NDEsCisJMHg5OSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0ZiwgMHg3NywgMHhmZCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA1LCAweGE4LCAweGIxLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDEyLCAweDA1LCAweDFkLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4NDksIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNSwgMHhhMiwgMHg0MCwKKwkweDg2LCAweDA0LCAweDAwLCAweDAwLCAweGRlLCAweDlmLCAweDljLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDAsIDB4ODgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDUsIDB4MDAsIDB4NTAsCisJMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4OCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDBjLCAweDA1LCAweDUyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQwLAorCTB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODksIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwNSwgMHgwMCwgMHg0OCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHgwNSwKKwkweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGRlLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MWIsIDB4MDAsIDB4ZGUsIDB4OWYsIDB4MDAsIDB4NDEsCisJMHhlMSwgMHhjMSwgMHgxYSwgMHgwMCwgMHg3OCwgMHgxOCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgxYiwgMHgwMCwKKwkweDE5LCAweDA1LCAweDIyLCAweDU0LCAweDgxLCAweDdjLCAweDFhLCAweDAwLCAweDE0LCAweDA1LCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MWEsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4YjMsIDB4NjcsIDB4ZGYsIDB4MWIsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHg0NCwgMHg5MywgMHg5MywgMHgxYiwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDFiLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLAorCTB4MjcsIDB4MDUsIDB4MGYsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsCisJMHg4OCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHg1MCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDAwLCAweDAwLCAweDQ0LCAweDg4LCAweGNjLCAweDAxLCAweDAwLCAweDFmLCAweDA1LCAweDk5LCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ODksIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgyMSwgMHgwNSwgMHg5YiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDg5LCAweGQwLCAweDAxLCAweDAwLCAweDIzLCAweDA1LCAweDFmLCAweDQ0LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHg0OCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDA1LCAweDAwLCAweDU4LCAweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGRlLCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODYsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHhkZSwgMHg5ZiwgMHgyNiwgMHgwNSwKKwkweDQ3LCAweDMxLCAweDAwLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLAorCTB4ZGUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4NDQsIDB4ZjAsIDB4NDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwKKwkweGUxLCAweGMxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDRjLCAweDAxLCAweDAwLCAweDA3LAorCTB4OTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4OTcsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQ0LCAweDA1LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHg0NSwgMHgwNSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDIsCisJMHhiMywgMHg0MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQyLCAweGIzLCAweDQzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDUwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDgsCisJMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDUsIDB4YTIsIDB4NDEsIDB4OGYsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg0NSwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGZkLCAweGIxLCAweDAxLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweDQwLAorCTB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHhkYSwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsCisJMHhmZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGRhLAorCTB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg3YSwgMHgwNSwgMHgyMiwgMHg0NSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweGRiLCAweDlmLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwNSwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDdkLCAweDA1LCAweDIyLCAweDIwLCAweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDdhLCAweDA1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MWYsIDB4MDAsCisJMHg3ZCwgMHgwNSwgMHgyMiwgMHg0MCwgMHg5NywgMHg2YywgMHgxZSwgMHgwMCwgMHg3YSwgMHgwNSwgMHg0MiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDFlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY3LCAweDkzLCAweDFmLCAweDAwLAorCTB4ZGYsIDB4OWYsIDB4MDAsIDB4NTgsIDB4NjcsIDB4OTMsIDB4MWUsIDB4MDAsIDB4NTQsIDB4MTYsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgxZiwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsCisJMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0NiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLAorCTB4NDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0YSwgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGRhLAorCTB4ZjcsIDB4ZjUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OTUsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHgwNSwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgyYSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGE1LCAweDliLCAweDAxLCAweDAwLCAweDQwLCAweDE2LCAweDAwLCAweDQwLCAweGExLCAweDliLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlMCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YjgsIDB4MDUsIDB4MjIsIDB4NDUsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MTUsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgxYSwgMHgwMCwgMHgwMCwgMHhhMiwgMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGYwLCAweDE1LCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGE3LCAweDA1LCAweGE4LCAweGJiLCAweGUxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWEsIDB4MDUsIDB4YTIsIDB4NDEsCisJMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHhhOSwgMHgwNSwgMHhhMiwgMHhmMiwgMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGIwLCAweDA1LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHhiMSwgMHgwNSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweGYwLCAweDE1LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MDUsIDB4YTIsIDB4ZmEsCisJMHhiNCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MiwgMHhiMywgMHg0MywgMHgwMSwgMHgwMCwKKwkweGI4LCAweDA1LCAweGEyLCAweGZhLCAweGI0LCAweDZmLCAweDAwLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQyLAorCTB4YjMsIDB4NDMsIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDUsIDB4MjIsIDB4ZmEsIDB4YjQsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHgwNSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDY3LCAweDkzLCAweDIxLCAweDAwLCAweGRmLCAweDlmLCAweDAwLCAweDU4LCAweDY3LCAweDkzLCAweDIwLCAweDAwLAorCTB4NDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MjEsIDB4MDAsIDB4ZGIsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHgzMSwgMHgyMSwgMHgwMCwgMHhmNiwgMHgxNSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgyMSwgMHgwMCwKKwkweDVjLCAweDE2LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDIxLCAweDAwLCAweDAwLCAweDAwLCAweDZlLCAweGZhLAorCTB4OGUsIDB4YjAsIDB4MjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhiNCwgMHhiMywgMHgwMSwgMHgwMCwgMHhjOSwgMHgwNSwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGZjLCAweDE1LCAweDIwLCAweDIwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGNlLCAweDA1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MjQsIDB4MDAsIDB4ZGEsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MjUsIDB4MDAsCisJMHhjZSwgMHgwNSwgMHgyMiwgMHg0MCwgMHg5NywgMHg2YywgMHgyNCwgMHgwMCwgMHhjYiwgMHgwNSwgMHg0MiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY3LCAweDkzLCAweDI1LCAweDAwLAorCTB4ZGYsIDB4OWYsIDB4MDAsIDB4NTgsIDB4NjcsIDB4OTMsIDB4MjQsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgyNSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgyNSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQzLCAweDA1LCAweDIyLCAweDUwLAorCTB4YjUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmNiwgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweGYyLCAweGI0LCAweDMzLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MTUsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHhmMiwgMHhiNCwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZhLCAweDE1LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4ZjIsIDB4YjQsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYywgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGEsIDB4YjQsIDB4OGIsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDRhLCAweGI0LCAweGY3LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGU5LCAweDA1LCAweDIyLCAweDUwLCAweGI1LCAweDZmLCAweDAwLCAweDAwLAorCTB4ZWEsIDB4MDUsIDB4MDAsIDB4NTAsIDB4YjUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGUwLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MzAsIDB4MzEsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzIsIDB4MzMsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNCwgMHgzNSwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDM3LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDM4LCAweDM5LCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NDEsIDB4NDIsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg0MywgMHg0NCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDQ3LCAweDQ4LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4NDksIDB4NGEsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGZjLCAweDA1LCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDgwLCAweDE2LCAweDJlLCAweDA2LAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4ZjYsIDB4YTksIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNSwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDYsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhkYywgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDE2LCAweDJkLCAweDA2LCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDE2LCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4ZjYsIDB4YTksIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwNiwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcxLCAweGY5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzIsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzMsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDU0LCAweDAwLCAweDAwLCAweDQwLCAweDk1LCAweDk4LCAweDAxLCAweDAwLCAweGRjLCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwNiwgMHgyMiwgMHg3MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQ1LCAweDY3LCAweDAwLCAweGE2LCAweGUwLCAweGIyLCAweDAxLCAweDAwLCAweDAxLCAweDIzLCAweDAwLCAweDcwLAorCTB4ZTEsIDB4OWEsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4ZWYsIDB4MDAsIDB4YTYsIDB4ZTIsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg4OSwgMHhhYiwgMHgwMCwgMHg3MSwgMHhlMywgMHg5YSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg5OCwgMHgwMCwgMHhhNiwKKwkweGU0LCAweGIyLCAweDAxLCAweDAwLCAweGZlLCAweGRjLCAweDAwLCAweDcyLCAweGU1LCAweDlhLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MTAsIDB4MDAsIDB4YTYsIDB4ZTYsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NzYsIDB4NTQsIDB4MDAsIDB4NzMsCisJMHhlNywgMHg5YSwgMHgwMSwgMHgwMCwgMHhkMiwgMHhjMywgMHgwMCwgMHhhNiwgMHhlOCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGYwLCAweGUxLCAweDAwLCAweDc0LCAweGU5LCAweDlhLCAweDAxLCAweDAwLCAweDgwLCAweDE2LCAweDAwLCAweDRhLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDI1LCAweDA2LCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4MTYsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZmMsIDB4MTYsIDB4MmEsIDB4NDcsCisJMHhlNywgMHhiNSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0YSwgMHhlOCwgMHhlNSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTYsIDB4M2QsIDB4NDYsIDB4OGQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDQwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGEzLCAweGMxLCAweDAxLCAweDAwLAorCTB4MmUsIDB4MDYsIDB4YTIsIDB4NDEsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhlYiwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHhlZCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDcyLCAweGVmLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDczLAorCTB4ZjEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgwLCAweDg4LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLCAweGEyLCAweGM5LCAweDAxLCAweDAwLAorCTB4NGIsIDB4MDYsIDB4YTAsIDB4NTAsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDUwLCAweDAzLCAweDAwLCAweDRjLCAweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywKKwkweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsCisJMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywgMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4YTQsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4OCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDQxLCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQwLCAweDk0LCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ODksIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MWIsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHg4NSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDA2LCAweGEzLCAweDUzLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhiLCAweGE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDhiLCAweDg0LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDYsIDB4MDAsIDB4NDUsIDB4ODgsIDB4OTQsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1YSwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4ODksIDB4YTQsIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDYsIDB4MDAsIDB4NzgsIDB4ODksIDB4YTQsIDB4MDAsIDB4MDAsCisJMHgzYiwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1NywgMHgwNiwgMHhhYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzYsCisJMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4YiwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDg4LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4OGIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4OGIsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwNiwgMHgwMCwgMHg0NSwgMHg4OCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc5LCAweDg1LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODQsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NmIsIDB4MDYsIDB4YTMsIDB4NTMsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHg4MiwgMHg1YSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDc5LCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDc4LCAweDA2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHg3MCwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkOSwgMHg2ZSwgMHgwMCwgMHhhNiwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGExLCAweGViLCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLAorCTB4NzgsIDB4MDYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4M2IsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg3NSwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDhmLCAweDAwLCAweGE2LCAweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGRjLCAweGJjLCAweDAwLCAweDQyLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MDYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHhjYSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkNiwgMHhjMSwgMHgwMCwgMHg0MiwKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDc4LCAweDA2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsCisJMHhmMSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4OSwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweDc2LCAweGVmLCAweGY2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZWUsIDB4OTYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ZWQsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhlYSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDRmLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4MzcsIDB4MDYsIDB4MmEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHhlMSwgMHhjMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHhlMywgMHhjMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc3LCAweGU1LCAweGMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LAorCTB4ZTcsIDB4YzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzksIDB4ZTksIDB4YzIsIDB4MDEsIDB4MDAsCisJMHgyYiwgMHgwNiwgMHg4MSwgMHg0MSwgMHg4ZCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweGRiLCAweDlmLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiOSwgMHgwNiwgMHgyMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGRhLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGI5LCAweDA2LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3YywgMHgxNiwgMHgyMCwgMHhmNiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDMxLCAweGIzLCAweDAxLCAweDAwLCAweDlkLCAweDA2LCAweDIyLCAweDRmLCAweDhmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4OWYsIDB4MDYsIDB4MjIsIDB4NDAsCisJMHg4ZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhMywgMHgwNiwgMHgwMCwgMHg1NCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweGExLCAweDA2LCAweDIyLCAweDQyLCAweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YTMsIDB4MDYsIDB4MjIsIDB4NDEsIDB4OGYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHhiNywgMHgwNiwgMHgyMiwgMHg1MSwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDM4LCAweDA1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiMiwgMHgwNiwgMHhhMiwgMHg0MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDFlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQ4LAorCTB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0YiwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDIwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhiNiwgMHgwNiwgMHgyMiwgMHg0MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwNiwgMHgwMCwgMHg1NCwKKwkweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4MWMsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4N2YsIDB4ZDksIDB4MDEsIDB4MDAsIDB4YmEsIDB4MDYsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZTcsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDYsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU5LCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDNjLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwYSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDBjLCAweGM4LCAweDAxLCAweDAwLCAweGVhLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDcsIDB4MjIsIDB4MDEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweGE0LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ZDksIDB4MDYsIDB4YTMsIDB4MDcsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHgwNiwgMHg2OCwgMHgwMSwgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwNywKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDAyLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDBhLCAweGMwLCAweDAxLCAweDAwLCAweGVjLCAweDA2LCAweDIyLCAweDQwLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4MDYsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MjMsIDB4MDcsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4MDYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDYsIDB4YTgsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZSwgMHgwNiwgMHhhOCwgMHg0MCwgMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGUzLCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDE5LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwZiwgMHgwMCwgMHgwMCwgMHhmMiwgMHgzYSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDNiLCAweGUwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWQsIDB4MDIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZmEsIDB4MDYsIDB4MjMsIDB4MWEsCisJMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgwMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDIzLCAweDA3LCAweDAwLCAweDAxLCAweDM0LCAweGMwLCAweDAwLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDFkLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MzAsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHgzMSwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDAyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDcsIDB4MjIsIDB4MWEsCisJMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHgwMSwgMHgzNCwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDAwLCAweDAwLCAweDE5LCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDJkLCAweDE0LAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgxNCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweDE0LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MTAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MjMsIDB4MDcsIDB4MDAsIDB4MWEsCisJMHgxMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDcsIDB4YTMsIDB4MTIsIDB4MGUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwNywgMHg2MCwgMHgwNywgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgxMiwKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDBkLCAweDE2LCAweDk0LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4MTYsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAyLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4ODYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxNywgMHgwNywgMHhhOCwgMHg1YywKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDQwLCAweDA3LCAweDIyLCAweDBkLCAweDE0LCAweDUwLCAweDAwLCAweDAwLAorCTB4NDAsIDB4MDcsIDB4MjIsIDB4MGQsIDB4MjQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwNywgMHgyMiwgMHg0MiwgMHgyMywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDIzLCAweDA3LCAweDAwLCAweDQxLCAweDIzLCAweGMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgxZiwgMHgwNywgMHhhOCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4M2YsIDB4MDcsIDB4YTIsIDB4MGQsIDB4MGUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDcsIDB4MjIsIDB4NDYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDJjLCAweDA3LCAweDIyLCAweGYyLAorCTB4NjQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyOSwgMHgwNywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGUzLCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHhlMSwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzMsIDB4MDcsIDB4MWYsIDB4ZjAsIDB4MGUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhkMywgMHgwNiwgMHgwMCwgMHg0YywgMHgwZCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1ZiwKKwkweDBmLCAweDgwLCAweDAxLCAweDAwLCAweGQzLCAweDA2LCAweDIzLCAweDA3LCAweDE0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDNjLCAweDA3LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4ZDMsIDB4MDYsIDB4MDAsIDB4MDMsIDB4MGMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4MDYsIDB4MDAsIDB4MGQsCisJMHgxOCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgwNywgMHhhMiwgMHg0NCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE5LCAweDBhLCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MmQsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDBkLCAweDAwLCAweDJkLCAweDFkLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MzgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MjAsIDB4NTAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyZCwgMHg0MCwgMHgzZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgxNCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgxZCwKKwkweDk0LCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTIsIDB4MDcsIDB4YTAsIDB4ZmMsIDB4OTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwNywgMHhhMiwgMHg0MSwgMHg5NSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDJlLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDE4LCAweDk0LCAweGY0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MTgsIDB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDcsIDB4YTAsIDB4ZmMsCisJMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDVhLCAweDA3LCAweGEyLCAweDQxLCAweDk1LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDgwLCAweGIwLCAweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE2LCAweGIwLCAweDJkLCAweDAwLAorCTB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHg0OCwgMHhjMSwgMHgyZCwgMHgwMCwgMHg2NCwgMHgwNywgMHg0MywgMHgzMCwgMHgzZCwgMHgwNywgMHgyYywgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDllLCAweDg1LCAweGIwLCAweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDQxLAorCTB4M2QsIDB4YzMsIDB4MmQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4NDIsIDB4ZWMsIDB4YjEsIDB4MmQsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxZSwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgyZSwgMHgxZCwKKwkweDgyLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDE4LCAweDgyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NmUsIDB4MDcsIDB4YTAsIDB4NDEsCisJMHg4MCwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQwLCAweDkyLCAweGY0LCAweDAxLCAweDAwLCAweDBhLCAweDAwLCAweDJlLCAweDMwLAorCTB4ODEsIDB4ODQsIDB4MDEsIDB4MDAsIDB4NzIsIDB4MDcsIDB4OTAsIDB4NDAsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwKKwkweDkzLCAweGE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4MTksIDB4ZTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwNywgMHhhMCwgMHgxOSwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDBkLCAweDAwLCAweDJmLCAweDFlLAorCTB4MzIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4N2QsIDB4MDcsIDB4YTIsIDB4NDAsIDB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg3YywgMHgwNywgMHhhMCwgMHgxYywgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweGYzLCAweDM4LCAweDk0LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmUsIDB4MWUsCisJMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgxYSwgMHg5OCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDhiLCAweDA3LCAweDIyLCAweDQ2LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg4OSwgMHgwNywgMHgyMiwgMHhmMiwKKwkweDY0LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ODYsIDB4MDcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweDAzLCAweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDkxLCAweDA3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDliLCAweDA3LCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHg5YiwgMHgwNywgMHgyMiwgMHhmMiwKKwkweDY0LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OTgsIDB4MDcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGViLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHhhMSwgMHgwNywgMHg5MCwgMHhmMiwKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsIDB4MTcsIDB4YTQsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgyYSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDJiLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwNywgMHgyMiwgMHhmMiwgMHg2NCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YTksIDB4MDcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4OWYsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxNywgMHgxMCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGM5LCAweDA3LCAweDIyLCAweDQwLCAweDE1LCAweDZjLCAweDAwLCAweDAwLCAweGI0LCAweDA3LCAweGEyLCAweDQ0LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhiMywgMHgwNywgMHgyMiwgMHg5ZiwgMHgxMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGNjLCAweDAxLCAweDAwLCAweGU0LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4M2YsIDB4YzMsIDB4MDEsIDB4MDAsIDB4ZTYsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiNywgMHgwNywgMHhhMiwgMHg0MSwgMHg4NywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDNlLCAweGMwLCAweDAxLCAweDAwLCAweGM5LCAweDA3LCAweDIyLCAweDQwLAorCTB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YmEsIDB4MDcsIDB4MjAsIDB4MWUsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgzYywgMHhiMCwgMHgwMSwgMHgwMCwgMHhlNSwgMHg5ZiwgMHgwMCwgMHgxZSwKKwkweDI0LCAweDMwLCAweDAxLCAweDAwLCAweGJmLCAweDA3LCAweDIyLCAweDA4LCAweDJlLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHg0MCwgMHgxNywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGU1LCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmMsIDB4MDcsIDB4YTIsIDB4MDgsIDB4MmUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg4MCwgMHg4MCwgMHgwMCwgMHhhNiwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MDQsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4OWYsIDB4MDAsIDB4MWYsCisJMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MDQsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhlNiwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjZSwgMHgwNywgMHhhMiwgMHg0MSwKKwkweDg3LCAweDdjLCAweDAwLCAweDAwLCAweGNmLCAweDA3LCAweDAwLCAweDFlLCAweDNlLCAweGMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHgwZiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4MDcsIDB4MDAsIDB4YmMsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJfSwKKwl7CisJMHgzMSwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM1LCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODAsIDB4ODEsIDB4ODAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4NywgMHhhMiwgMHg0MCwgMHg5MSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDkwLCAweGIzLCAweDAxLCAweDAwLCAweDVjLCAweDk1LCAweDJlLCAweGEyLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjQsIDB4ODksIDB4MDEsIDB4MDAsCisJMHg5MCwgMHg5NSwgMHgyYSwgMHhjOCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTgsIDB4ODAsIDB4MTEsIDB4ODEsCisJMHg5OCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDFhLCAweDgwLCAweDExLCAweDgyLCAweDk4LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4ODcsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwgMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MCwgMHhhMiwgMHg0MiwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDgwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODAsIDB4MTEsIDB4ODEsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODAsIDB4NTEsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MCwgMHgxMSwgMHg4MiwgMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgwLCAweDUyLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJjLCAweDgwLCAweDAwLCAweDQ4LAorCTB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MjcsIDB4ODAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyNiwgMHg4MCwgMHhhMiwgMHg1MywgMHgwNywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg1MywKKwkweDA3LCAweDkwLCAweDAxLCAweDAwLCAweDJhLCAweDgwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAwLCAweDAwLAorCTB4MjksIDB4ODAsIDB4YTIsIDB4NTIsIDB4MDcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4NTIsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4NWMsIDB4OTUsIDB4MmUsIDB4YTIsIDB4NTIsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmNCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE5LCAweDQ1LCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4NGMsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDgyLCAweDA1LCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGM2LCAweDgyLCAweDA1LCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0YywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweGRlLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5YiwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHg5YywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDQ4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU4LCAweDk1LCAweDIwLCAweDQ0LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgyNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHhlZSwKKwkweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDk3LCAweGYwLCAweDAxLCAweDAwLAorCTB4NDQsIDB4ODAsIDB4YTIsIDB4NDMsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMCwgMHhhNiwgMHgzNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwNiwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDA1LCAweDEwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDksIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDg4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGEwLCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjksIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhiMSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2MCwgMHg5NSwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDk1LCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4ZGQsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5MSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg3YiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDk5LCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NWMsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgzYywgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwNiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDJmLCAweDgxLCAweDAxLCAweDAwLAorCTB4YTIsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OWUsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDU1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAxLCAweDgzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDgyLCAweDAwLCAweDQxLCAweGUxLCAweGMxLCAweDAwLCAweDAwLCAweDc4LCAweDE4LCAweDAwLCAweDQwLAorCTB4NDksIDB4OTksIDB4MDEsIDB4MDAsIDB4MTksIDB4MDUsIDB4MjIsIDB4NTQsIDB4ODEsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg2YywgMHg4MCwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHhiNCwKKwkweDY5LCAweGRmLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NTUsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4N2QsIDB4ODAsIDB4MjIsIDB4NDAsCisJMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHg3YSwgMHg4MCwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDQzLCAweDgxLCAweDAwLCAweDU4LAorCTB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDgwLCAweDgwLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4NjksIDB4OTMsIDB4MDEsIDB4MDAsIDB4NDMsIDB4ODEsIDB4MDAsIDB4NTgsCisJMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDA1LCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweGY2LCAweDE1LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NWMsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2ZSwgMHhmYSwgMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjMSwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg5NiwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1NSwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDk2LCAweDgwLCAweDIyLCAweDQwLCAweDk3LCAweDZjLCAweDAwLCAweDAwLAorCTB4OTMsIDB4ODAsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsCisJMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwgMHg0MywgMHg4MSwgMHgwMCwgMHg1OCwgMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDM4LCAweDA1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFlLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MDUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDgzLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjgsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ2LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZDcsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzIsIDB4MDEsIDB4MDAsIDB4NDEsCisJMHg4MSwgMHhjMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgwMSwgMHg1MSwgMHg0OSwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDU1LCAweDAxLCAweDUyLCAweDRhLCAweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDU1LCAweDAxLCAweDU1LCAweDQ5LAorCTB4ZmQsIDB4ODMsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4NTYsIDB4NGEsIDB4ZmQsIDB4ODMsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHgwMSwgMHg5MSwgMHg4MSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgwMSwgMHg0NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDkxLCAweDgyLCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4NDYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhiNCwgMHg4MCwgMHg0MywgMHgzMCwgMHgzZCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZSwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDQxLCAweDNkLCAweGMzLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4NDIsIDB4ZWMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsCisJMHg5MSwgMHg2ZiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGFlLCAweDAzLCAweDAwLCAweGNiLCAweGEzLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzQsIDB4ODAsIDB4YTIsIDB4NDAsIDB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMywKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHhkMCwgMHhlMSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGMxLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LAorCTB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4NDAsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhiMSwgMHgwMywgMHgwMCwgMHg0MCwgMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhjOSwgMHg4MCwgMHhhMiwgMHg0MiwKKwkweDk3LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweGExLCAweGMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4MDQsCisJMHg4MCwgMHg5NCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxNSwgMHgzZiwgMHg0MiwgMHg5NywgMHhlMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAzLAorCTB4MDIsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhjYiwgMHg5OSwgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywKKwkweGYzLCAweDgzLCAweDAxLCAweDAwLCAweGQzLCAweDgwLCAweGEyLCAweDQyLCAweDk3LCAweDZmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsCisJMHhhMywgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0NCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4ZGEsIDB4ODAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZjksIDB4MDIsIDB4MDAsIDB4MjAsCisJMHg0MiwgMHgzMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwgMHgwNSwgMHg2YywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweGNiLCAweGRiLCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweDQxLAorCTB4OGIsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhlMCwgMHg4MCwgMHhhOCwgMHhiMSwgMHg4YywgMHgzMywgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGUyLCAweDgwLCAweGE4LCAweGIxLCAweDk0LCAweDMzLCAweDAwLCAweDAwLAorCTB4ZTgsIDB4ODAsIDB4MTQsIDB4YzYsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4YzYsCisJMHg4MywgMHhmNCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MywgMHgyMiwgMHg0ZiwgMHg4MywgMHgwNCwgMHgwMCwgMHgwMCwKKwkweGM0LCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDAxLCAweDAwLCAweGM2LAorCTB4ODEsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTcsIDB4YTMsIDB4MDEsIDB4MDAsCisJMHhjNCwgMHg4MCwgMHgxZiwgMHg1YywgMHg5NywgMHg1MywgMHgwMCwgMHgwMCwgMHg2ZCwgMHg4MiwgMHgxZSwgMHhjNiwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGYyLCAweDgwLCAweDIyLCAweDQ4LCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4ZjIsIDB4ODAsIDB4MjIsIDB4NTgsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODAsIDB4MjIsIDB4NDgsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweGYyLCAweDgwLCAweDlmLCAweDQyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4YTIsIDB4YzYsIDB4OGYsIDB4MDYsIDB4MDAsIDB4MDAsCisJMHhjNCwgMHg4MCwgMHgxZSwgMHhjNiwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHg0MywKKwkweDgxLCAweGYwLCAweDAxLCAweDAwLCAweGY2LCAweDgwLCAweDAwLCAweDQwLCAweDEwLCAweGM5LCAweDAwLCAweDAwLAorCTB4NDQsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4N2UsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzOSwgMHg4MiwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMywgMHgwMCwgMHgwMCwKKwkweDc1LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDU1LCAweDgxLCAweDAwLCAweDRkLAorCTB4ODMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4ODEsIDB4MDAsIDB4NGUsIDB4NjEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg0YywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg4MSwgMHgwMCwgMHg0YywKKwkweDgzLCAweGIwLCAweDAwLCAweDAwLCAweDJlLCAweDgxLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZjgsIDB4ODEsIDB4MDAsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4ODYsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDgxLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGYwLCAweDAzLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4Y2EsIDB4OWIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHg5MCwgMHg4MSwgMHgwMCwgMHg0MCwgMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg5NCwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweGMxLCAweGIxLCAweDAwLCAweDAwLCAweDliLCAweDgxLCAweDAwLCAweDQwLCAweGMxLCAweGIxLCAweDAwLCAweDAwLAorCTB4OWMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4OWQsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg5ZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDlmLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDlmLCAweDgxLCAweDAwLCAweDQxLAorCTB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhZSwgMHg4MiwgMHgwMCwgMHhiYiwgMHhhYiwgMHhiMywgMHgwMCwgMHgwMCwgMHgzYSwgMHg4MiwgMHgwMCwgMHhjYSwKKwkweGNmLCAweGIzLCAweDAwLCAweDAwLCAweGM4LCAweDAzLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLAorCTB4ZTgsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGUwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweGNhLAorCTB4NzcsIDB4YjMsIDB4MDAsIDB4MDAsIDB4NTYsIDB4ODEsIDB4MDAsIDB4NGQsIDB4ODMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg1ZSwgMHg4MSwgMHgwMCwgMHg0ZSwgMHg2MSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg0YywgMHg4MSwgMHgwMCwgMHhiYiwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDU2LCAweDgxLCAweDAwLCAweDRjLCAweDgzLCAweGIwLCAweDAwLCAweDAwLAorCTB4NGMsIDB4ODEsIDB4MDAsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4ODEsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgzLCAweDAwLCAweGNhLCAweDRkLCAweGIzLCAweDAwLCAweDAwLCAweDcwLCAweDA1LCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDUsIDB4MDAsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgyNiwgMHg4MSwgMHgyMiwgMHg0MiwgMHg4ZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgyOCwgMHg4MSwgMHgyMiwgMHg0MSwKKwkweDhmLCAweDZmLCAweDAwLCAweDAwLCAweDJhLCAweDgxLCAweDFlLCAweGNhLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MmMsIDB4ODEsIDB4MWYsIDB4Y2EsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhjOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MywgMHgwMCwgMHg0MiwgMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGNkLCAweGIxLCAweDAxLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweDQxLAorCTB4OGYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHg4MywgMHgwMCwgMHg0MCwgMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MSwgMHgwMCwgMHhhNiwKKwkweGM2LCAweGIxLCAweDAxLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4YTYsIDB4YzYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwgMHg3OCwgMHgxOCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDJmLCAweDljLCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDQ2LCAweDgxLCAweDAwLCAweDQwLAorCTB4MzksIDB4MzMsIDB4MDEsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MmYsIDB4OWIsIDB4ODksIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0NiwgMHg4MSwgMHgwMCwgMHg0MCwgMHgzNywgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHg5YSwKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDQ2LCAweDgxLCAweDAwLCAweDQwLCAweDM1LCAweDMzLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmYsIDB4OTksIDB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDYsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHgzMywgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHhhZSwgMHg0NywgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDgwLCAweGEyLCAweDQwLCAweGUxLCAweDZkLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgxOCwgMHgwMCwgMHg0MCwKKwkweGUxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4YWUsIDB4NjMsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NDEsIDB4ODEsIDB4MjgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQxLCAweDgxLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4NjksIDB4OTMsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MWEsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHg0NCwgMHg4MSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0MywgMHg4MSwgMHgwMCwgMHg1OCwKKwkweDY5LCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGYwLCAweGQxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODEsIDB4YTIsIDB4NDAsCisJMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg0NSwgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQxLAorCTB4ZTEsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4NGMsIDB4ODEsIDB4MzcsIDB4NWMsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1MiwgMHg4MSwgMHgyOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDRkLCAweDgxLCAweDIyLCAweDVjLCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4YzQsIDB4ODAsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDUyLCAweDgxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDE3LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTcsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg1NywgMHg4MSwgMHgwMCwgMHhiYiwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDYwLCAweGIxLCAweDAxLCAweDAwLCAweGM0LCAweDgwLCAweGEyLCAweDQxLCAweDc2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTksIDB4ODEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIyLCAweDgzLCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDViLCAweDgxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4OTUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg2MSwgMHg4MSwgMHgwMCwgMHhiYiwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg5NSwgMHgyZiwgMHg0MCwKKwkweDg3LCAweGIwLCAweDAxLCAweDAwLCAweDY1LCAweDgxLCAweDIyLCAweDQwLCAweDk1LCAweDdmLCAweDAwLCAweDAwLAorCTB4YzQsIDB4ODAsIDB4YTIsIDB4NDAsIDB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4MjIsIDB4NDAsCisJMHg5NSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHg2MCwgMHg0MCwgMHg5NSwgMHg4MywgMHgwMCwgMHgwMCwKKwkweDAyLCAweDAwLCAweDJkLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweGM0LCAweDgwLCAweDIyLCAweDQwLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4YTIsIDB4NDAsIDB4ODUsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhjNCwgMHg4MCwgMHhhMiwgMHg0ZSwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg2OSwgMHg4MSwgMHgzNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4NmEsIDB4ODEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2YywgMHg4MSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDYzLCAweGIxLCAweDAxLCAweDAwLCAweDZlLCAweDgxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg3NCwgMHg4MSwgMHgyMiwgMHg0MSwgMHg0MywgMHg1MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHhjYSwKKwkweDk1LCAweGNiLCAweDAxLCAweDAwLCAweDY4LCAweDgxLCAweDAwLCAweDQxLCAweDg1LCAweGMwLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODEsIDB4YTIsIDB4NDIsCisJMHg2NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg2NywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDc3LCAweDgxLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTMsIDB4ODMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHhjYSwgMHg2OSwgMHg5NywgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MywgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDdjLCAweDgxLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MWEsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4MjAsIDB4NDMsCisJMHg5NSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHg4MCwgMHhjYSwgMHg2NywgMHgzMywgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgzLCAweDIyLCAweDQwLCAweDY1LCAweDZmLCAweDAwLCAweDAwLCAweGM0LCAweDgwLCAweGEyLCAweDQ4LAorCTB4ZGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4NmYsIDB4ZGIsIDB4OTEsIDB4MDAsIDB4MDAsCisJMHg4NSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzNSwgMHg4MCwgMHgyMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4OTUsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwgMHg4YywgMHg4MSwgMHhhMiwgMHg0NCwgMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDk1LCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVlLAorCTB4OTUsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4OTUsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHhjMywgMHhiMSwgMHgwMSwgMHgwMCwgMHg4ZiwgMHg4MSwgMHgyMiwgMHg1YiwKKwkweDk1LCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ZmQsIDB4MDAsIDB4Y2EsCisJMHg5NSwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwZCwgMHgwMSwgMHgwMCwgMHhjYSwgMHhjNSwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDk1LCAweDgzLCAweDAxLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweGNhLAorCTB4YzUsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZGYsIDB4NmYsIDB4MDAsIDB4Y2EsIDB4OTUsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwKKwkweGM3LCAweGIxLCAweDAxLCAweDAwLCAweDIyLCAweDgzLCAweDIyLCAweDVmLCAweDk1LCAweDdmLCAweDAwLCAweDAwLAorCTB4MGQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHg5NSwgMHg4MywgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MywgMHgwMCwgMHhjYSwgMHhjNywgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgzLCAweDAwLCAweGNhLCAweGM5LCAweGIxLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweGNhLAorCTB4Y2IsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4Y2EsIDB4Y2QsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHg4MywgMHgwMCwgMHhjYSwgMHhjZiwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg0MiwKKwkweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDk4LCAweDE0LCAweDAwLCAweDQwLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4Y2EsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGE0LCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQxLAorCTB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4YTYsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHg4MCwgMHgwMCwgMHhhNiwgMHgwOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhOCwgMHg4MSwgMHg5ZiwgMHg4NSwKKwkweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDgzLCAweDg0LCAweDAxLCAweDAwLAorCTB4ZGQsIDB4ODEsIDB4MjIsIDB4MzAsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTcsIDB4ODEsIDB4YTIsIDB4NGYsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAyLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODQsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMywgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGYwLCAweGZmLCAweDAwLCAweDQxLCAweDg2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHhjNCwgMHgwMCwgMHg0MywgMHg4NiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGJkLCAweDgxLCAweGEyLCAweDQzLCAweDg0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4MjEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxYywgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwgMHhiYSwgMHg4MSwgMHhhMiwgMHg1ZSwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQxLCAweDA4LCAweDk5LCAweDAxLCAweDAwLAorCTB4Y2YsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDEsIDB4MDAsIDB4YTYsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwYywgMHgwMCwgMHg0MywgMHg4NiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGMyLCAweDgxLCAweGEyLCAweDQzLCAweDg0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg0MSwgMHgwMSwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwYywgMHgwMCwgMHg0MywKKwkweDg2LCAweDk4LCAweDAxLCAweDAwLCAweGNmLCAweDgxLCAweGEyLCAweDQzLCAweDg0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MjEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MTgsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDQxLCAweDgyLCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDc3LCAweDAwLCAweDQxLAorCTB4ODIsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDAsIDB4NDEsIDB4ODIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgyLCAweGRjLCAweDAxLCAweDAwLCAweGNkLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHg4MSwgMHhhMiwgMHg1ZSwgMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDEzLCAweDAwLCAweDQxLCAweDA4LCAweDk5LCAweDAxLCAweDAwLCAweGQ4LCAweDgxLCAweDIyLCAweDQzLAorCTB4MjEsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwgMHhkNSwgMHg4MSwgMHhhMiwgMHg1ZSwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDQxLCAweDA4LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZjMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxOSwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGRhLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDQxLAorCTB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZjMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgyMSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDgzLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4ODMsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsCisJMHg4MywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhjMiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4ODMsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YzIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMSwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGVjLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDQxLAorCTB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhlZiwgMHg4MSwgMHhhMiwgMHg1ZSwgMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxMywgMHgwMCwgMHg0MSwKKwkweDA4LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MmUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDgxLCAweDk0LCAweDAxLCAweDAwLCAweGY2LCAweDgxLCAweGEyLCAweDVlLAorCTB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsIDB4MDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhjOCwgMHgxNCwgMHgyZSwgMHhiYiwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhmOSwgMHg4MSwgMHhhMiwgMHg1ZSwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDgsIDB4ODIsIDB4MjIsIDB4NDMsIDB4MjEsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTcsIDB4ODIsIDB4MjIsIDB4NDQsCisJMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxMSwgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDI4LCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFmLCAweDgyLCAweDIyLCAweDRhLAorCTB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMywgMHg4MiwgMHgyMiwgMHg0ZCwgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg3LCAweDkwLCAweDAxLCAweDAwLCAweDA1LCAweDgyLCAweDIyLCAweDRmLCAweDgzLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODIsIDB4MjIsIDB4NGUsCisJMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAxLCAweDgwLCAweDAwLCAweGE2LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFmLCAweDgyLCAweDIyLCAweDQyLCAweDgzLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MWMsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDgyLCAweDIyLCAweDQ1LCAweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4ODIsIDB4MjIsIDB4NDQsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHgxNiwgMHg4MiwgMHgyMiwgMHg0MywKKwkweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDg3LCAweDkwLCAweDAxLCAweDAwLAorCTB4MWYsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MWYsIDB4ODIsIDB4MjIsIDB4NDIsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDg3LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg3LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MiwgMHgyMiwgMHg0YiwgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4YTIsIDB4YTAsIDB4OGIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhhNSwgMHhiMywgMHgwMSwgMHgwMCwgMHhiOCwgMHg4MCwgMHgwMCwgMHhjYSwKKwkweGE3LCAweDMzLCAweDAxLCAweDAwLCAweDQxLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MjksIDB4ODIsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwOCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDJiLCAweDgyLCAweDlmLCAweDg1LCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODIsIDB4MTQsIDB4ZjcsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHg4MiwgMHhhMiwgMHg0OSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDMzLCAweDgyLCAweDE1LCAweGY4LCAweDgxLCAweDE0LCAweDAwLCAweDAwLAorCTB4MzMsIDB4ODIsIDB4YTIsIDB4NGEsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgzNSwgMHg4MiwgMHhhMiwgMHhjOCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDQwLCAweDgwLCAweGRjLCAweDAxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLAorCTB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZWYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgzNywgMHg4MiwgMHg0MiwgMHg0MCwgMHhmMSwgMHgzMywgMHgwMCwgMHgwMCwgMHg0MywgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDY4LCAweDk3LCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDAwLCAweGJiLCAweDZiLCAweGIzLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4YmIsIDB4YjEsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDE4LCAweGIxLCAweDAxLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0MiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHhmZiwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MiwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDE2LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDE5LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDViLCAweDgxLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YiwgMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDRhLCAweDgyLCAweGEyLCAweDU0LAorCTB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MywgMHhjMCwgMHgwMSwgMHgwMCwgMHg1MSwgMHg4MiwgMHhhMiwgMHgwNiwKKwkweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTYsIDB4MmUsIDB4MDYsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHhmYiwgMHhmNiwgMHhhOSwgMHgwMSwgMHgwMCwKKwkweDU3LCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4ZjYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1YSwgMHg4MiwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHg2MiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDk1LCAweDk4LCAweDAxLCAweDAwLCAweGRjLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MTYsIDB4MmQsIDB4MDYsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTYsIDB4MDAsIDB4NDAsCisJMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg1YywgMHgwMCwgMHgwMCwgMHhmYiwgMHhmNiwgMHhhOSwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLAorCTB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzEsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg3MiwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MywKKwkweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc0LCAweGY5LCAweGIxLCAweDAxLCAweDAwLAorCTB4NTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZGMsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwgMHg5NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDZjLCAweDgyLCAweDIyLCAweDcwLCAweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQxLAorCTB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjNCwgMHg4MCwgMHhhMiwgMHg0MiwgMHg5NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwKKwkweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQyLCAweDk5LCAweGIzLCAweDAxLCAweDAwLAorCTB4NzgsIDB4ODIsIDB4MjIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4MjIsIDB4NDgsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg3YSwgMHg4MiwgMHgyMiwgMHg0YywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDg1LCAweDgyLCAweDIyLCAweDUwLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDg2LCAweDgyLCAweDIyLCAweDU0LAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4MjIsIDB4NTgsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg4ZCwgMHg4MiwgMHgyMiwgMHg1YywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweDA5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMywgMHg4MywgMHgwMSwgMHgwMCwKKwkweDdlLCAweDgyLCAweGEyLCAweDQyLCAweDA1LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MjIsIDB4Y2EsIDB4MDcsIDB4MTQsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHg4MywgMHgwMCwgMHg0NiwgMHhmMywgMHg5MywgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHgyMCwgMHg0MywKKwkweDk1LCAweDZmLCAweDAwLCAweDAwLCAweDIyLCAweDgzLCAweDgwLCAweGNhLCAweDA1LCAweDMwLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MjIsIDB4MDEsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4YTIsIDB4NDgsCisJMHhkYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHgwMCwgMHhjYiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwKKwkweDU3LCAweDAxLCAweDAwLCAweGJjLCAweGFiLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLAorCTB4YjEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhjYSwgMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg4MywgMHhhMiwgMHg0MCwKKwkweDc0LCAweDdkLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDIwLCAweDQwLCAweDYwLCAweDk5LCAweDAxLCAweDAwLAorCTB4OGEsIDB4ODIsIDB4YTgsIDB4YjEsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MywgMHgwMCwgMHhjYSwgMHg3OSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4Y2IsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHg4MiwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4OWIsIDB4ODIsIDB4OTEsIDB4ODIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGEsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDgyLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDliLCAweDgyLCAweDU2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwKKwkweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4OWYsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhjZCwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQ2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGEwLCAweDgyLCAweGEyLCAweDQxLAorCTB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhhYiwgMHg4MiwgMHg5MSwgMHg4MSwKKwkweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4YWUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4YTksIDB4ODIsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhYiwgMHg4MiwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI2LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5ZiwgMHgwMCwgMHg0MSwKKwkweDhiLCAweGIzLCAweDAwLCAweDAwLCAweGIxLCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLAorCTB4YzQsIDB4MTQsIDB4MmYsIDB4NDAsIDB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4NTcsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhhMCwgMHg5NCwgMHgyZSwgMHg0MywgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGIyLCAweDgyLCAweGEyLCAweDQxLAorCTB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhYywgMHg5NCwgMHgyZSwgMHg0MywgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGI2LCAweDgyLCAweGEyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDE1LCAweDAwLCAweDQwLCAweDg1LCAweDk4LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDAsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTksIDB4NDEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg0MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDQwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU3LCAweDQxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4NDIsCisJMHg4MSwgMHg2YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhhMywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweGJjLCAweDgyLCAweGEwLCAweDQyLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGJjLCAweDgyLCAweDAwLCAweDUwLAorCTB4ODUsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODMsIDB4YTIsIDB4NDEsIDB4MDEsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHhjZiwgMHg4MiwgMHgyMiwgMHg1OCwgMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGM3LCAweDgyLCAweGE4LCAweGIxLCAweDljLCAweDMwLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MzgsIDB4NDUsIDB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1ZSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweGMwLCAweDAwLCAweGE2LCAweDFlLCAweGE0LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDBlLAorCTB4MTAsIDB4YzksIDB4MDAsIDB4MDAsIDB4Y2YsIDB4ODIsIDB4MzMsIDB4YzQsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhkMiwgMHg4MiwgMHhhMSwgMHhhZCwgMHg5ZCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHg4MiwgMHgxMywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEzLCAweDRlLCAweDVhLCAweDgzLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MzgsIDB4NDUsIDB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1ZSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDQwLCAweDA1LCAweDZjLCAweDAwLCAweDAwLCAweGRkLCAweDgyLCAweDIyLCAweGFiLAorCTB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZGIsIDB4ODIsIDB4YTIsIDB4NDAsIDB4MDEsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4MiwgMHgyMiwgMHg1ZiwgMHg1NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg4OCwgMHgwMCwgMHg1ZiwKKwkweDFmLCAweGI0LCAweDAwLCAweDAwLCAweGRkLCAweDgyLCAweDIyLCAweDVlLCAweDU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4N2QsIDB4ODgsIDB4MDAsIDB4NWYsIDB4MWYsIDB4YjQsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4ODIsIDB4MjIsIDB4NTQsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDgyLCAweGE4LCAweGIxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4MWYsIDB4YjQsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODQsIDB4YTIsIDB4NWYsIDB4MDEsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg5MiwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlNSwgMHg4MiwgMHhhMiwgMHg1ZiwKKwkweDU5LCAweDI3LCAweDAwLCAweDAwLCAweGU3LCAweDgyLCAweGEyLCAweDVjLCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4ZWUsIDB4ODIsIDB4YTIsIDB4NWUsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4ODIsIDB4MjIsIDB4NWMsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhmYiwgMHg4MiwgMHgzNywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDdjLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGU4LCAweDgyLCAweGE4LCAweGIxLAorCTB4MzYsIDB4MzAsIDB4MDAsIDB4MDAsIDB4N2MsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhlYSwgMHg4MiwgMHhhOCwgMHhiMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAyLCAweDg4LCAweDAxLCAweDAwLCAweDM0LCAweDg1LCAweDE3LCAweDVmLCAweDFmLCAweGI0LCAweDAwLCAweDAwLAorCTB4ZmIsIDB4ODIsIDB4MzQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4N2UsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhlZiwgMHg4MiwgMHhhOCwgMHhiMSwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGY3LCAweDgyLCAweDUyLCAweDIxLCAweDEzLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDQxLAorCTB4MmYsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MWYsIDB4YjQsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgzZiwgMHgwMCwgMHgwOSwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDAxLCAweGYwLCAweDAxLCAweDAwLCAweDRmLCAweDgzLCAweDAwLCAweDM0LCAweDEzLCAweDg0LCAweDAwLCAweDAwLAorCTB4ZmYsIDB4M2YsIDB4MTQsIDB4MDksIDB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHgxZiwgMHhiNCwgMHgwMSwgMHgwMCwgMHhjMiwgMHg4MywgMHgwMCwgMHg0MywgMHgwMSwgMHhmMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGZiLCAweDgyLCAweDMzLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGUsIDB4NWEsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQwLCAweDA2LCAweDZjLCAweDAwLCAweDAwLAorCTB4YzYsIDB4ODIsIDB4MTMsIDB4NGUsIDB4NWEsIDB4OTMsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4ODcsIDB4YTIsIDB4NDgsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4MywgMHgwMiwgMHhlNiwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDA2LCAweDgzLCAweDgzLCAweGU1LCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDhlLCAweDgyLCAweDAwLCAweDQyLAorCTB4OTcsIDB4YjMsIDB4MDAsIDB4MDAsIDB4OWUsIDB4ODIsIDB4MDAsIDB4NDIsIDB4OTcsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwOSwgMHg4MywgMHgyMiwgMHg0NiwgMHhmMywgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwYywgMHg4MywgMHhhMiwgMHg0MSwKKwkweGYzLCAweDdmLCAweDAwLCAweDAwLCAweGM2LCAweDgwLCAweDAwLCAweDQyLCAweDk3LCAweDMzLCAweDAxLCAweDAwLAorCTB4MGMsIDB4ODMsIDB4MjIsIDB4NDQsIDB4ZjMsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MGMsIDB4ODMsIDB4YTIsIDB4NDEsCisJMHhmMywgMHg3ZiwgMHgwMCwgMHgwMCwgMHhjNiwgMHg4MCwgMHgwMCwgMHg2ZiwgMHg5NywgMHgzMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweGFjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDExLCAweDgzLCAweDIyLCAweDVhLAorCTB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4N2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwZSwgMHg4MywgMHhhOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhjZiwKKwkweDExLCAweGM5LCAweDAwLCAweDAwLCAweDE3LCAweDgzLCAweGEyLCAweDQwLCAweDkzLCAweDdmLCAweDAwLCAweDAwLAorCTB4MTcsIDB4ODMsIDB4MjIsIDB4NDQsIDB4OTMsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MTMsIDB4ODMsIDB4NDIsIDB4YTUsCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg4MywgMHhhMiwgMHg0MCwgMHg5MywgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDM4LCAweDgzLCAweDFhLCAweDQwLCAweDkzLCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZGYsIDB4ODAsIDB4YTIsIDB4NDAsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHhkZiwgMHg4NywgMHgyMiwgMHg0NCwgMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhkNiwgMHg4NywgMHgyMiwgMHg0MCwKKwkweDY1LCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweGEyLCAweDViLCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDksIDB4MzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MjEsIDB4ODMsIDB4MjIsIDB4NDgsCisJMHgzMywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhmZiwgMHgwMSwgMHgwMCwgMHg5OSwgMHg4MCwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDgxLCAweGUwLCAweDAxLCAweDAwLCAweGE4LCAweDk4LCAweDJmLCAweDQwLAorCTB4MzMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNiwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDhiLCAweGIzLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVlLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NWYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4MiwgMHgwMCwgMHg1ZiwgMHgxZiwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDVlLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDVmLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4YzYsIDB4ODIsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDVlLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDVmLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzIsIDB4ODMsIDB4MzMsIDB4NDAsIDB4MWYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0ZSwgMHg1YSwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDgwLCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDM5LCAweDAwLCAweDQwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDAsIDB4MDYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzYsIDB4ODIsIDB4MTMsIDB4NGUsCisJMHg1YSwgMHg5MywgMHgwMCwgMHgwMCwgMHgzYSwgMHg4MywgMHhhMCwgMHhjZSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDRkLCAweDgzLCAweGEwLCAweGNkLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE1LAorCTB4OWMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjEsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0ZCwgMHg4MywgMHgyMiwgMHhiNSwgMHg4MSwgMHgxNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxNSwgMHgyZiwgMHg0MCwKKwkweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDNlLCAweDgzLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4YjQsIDB4NjUsIDB4OTcsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTUsIDB4MmUsIDB4NDAsCisJMHg2OSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg0NCwgMHg5MywgMHg4MywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDQwLCAweGUxLCAweDZkLCAweDAwLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweGEyLAorCTB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NDgsIDB4ODMsIDB4YTgsIDB4YTEsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgxNywgMHg4MywgMHgwMCwgMHg4OCwgMHg5ZSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDE3LCAweDgzLCAweGEyLCAweDQxLCAweDY3LCAweDZmLCAweDAwLCAweDAwLCAweDE3LCAweDgzLCAweDAwLCAweDZmLAorCTB4ZGIsIDB4OTEsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODMsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxNywgMHg4MywgMHgxYSwgMHg0MCwgMHg5MywgMHg4MywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDAwLCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWEsIDB4MDEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHgwMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgwMCwgMHgwOSwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDNmLCAweDAwLCAweDAwLCAweGYzLCAweDBjLCAweDg4LCAweDAxLCAweDAwLCAweDVjLCAweDgzLCAweGE2LCAweDQyLAorCTB4MTMsIDB4NjAsIDB4MDAsIDB4MDAsIDB4OTUsIDB4OTYsIDB4MDAsIDB4OTUsIDB4MDMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg1NywgMHg4MywgMHg2MSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg3NSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDU4LCAweDgzLCAweGE4LCAweGIxLCAweDBjLCAweDMwLCAweDAwLCAweDAwLAorCTB4YTMsIDB4OTYsIDB4NzEsIDB4MTAsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NWQsIDB4ODMsIDB4MDAsIDB4NTgsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHg4NywgMHg5NiwgMHgwMCwgMHg5NSwgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDAzLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHgwNCwgMHgwMCwgMHgxNywgMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDRhLCAweGMxLCAweDAwLCAweDE3LCAweDk2LCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4MDcsIDB4MDAsIDB4NDAsCisJMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwgMHg2OCwgMHg4MywgMHgyMywgMHg0YiwgMHhlNCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDY4LCAweDgzLCAweDIyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MmYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg2YiwgMHg4MywgMHg4MywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyNiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDZkLCAweDgzLCAweDg1LCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4NDcsIDB4YzEsIDB4MDEsIDB4MDAsIDB4NzIsIDB4ODMsIDB4MjIsIDB4NTUsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg0MywgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDBmLCAweDAwLCAweDAwLCAweGZhLCAweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4NzMsIDB4ODMsIDB4MDAsIDB4NGIsIDB4NDQsIDB4YzEsIDB4MDAsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHhmNiwKKwkweDAyLCAweGNjLCAweDAxLCAweDAwLCAweDBhLCAweDAwLCAweDAwLCAweGExLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4ZjAsCisJMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxYSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDJhLCAweGIwLCAweDAxLCAweDAwLCAweGMwLCAweDI4LCAweDNjLCAweDQ2LAorCTB4MGQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4NDQsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg3ZiwgMHg4MywgMHhhMiwgMHhmOCwgMHgwZSwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4ZiwgMHg4MywgMHgyMiwgMHg0MSwKKwkweDk1LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDUwLCAweDQ5LCAweGMxLCAweDAxLCAweDAwLAorCTB4N2IsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4N2MsIDB4ODMsIDB4YTIsIDB4ZjgsCisJMHgxNiwgMHg2YywgMHgwMCwgMHgwMCwgMHg3YywgMHg4MywgMHhhMiwgMHhmOCwgMHgxMCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDdjLCAweDgzLCAweGEyLCAweGYwLCAweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDhkLCAweDgzLCAweDIyLCAweDU4LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksIDB4M2YsIDB4NDIsIDB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHg4NCwgMHg4MywgMHg2NSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg4OCwgMHg4MywgMHhhMiwgMHhmMywKKwkweDc0LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweGU2LCAweDk1LCAweDAxLCAweDAwLAorCTB4OGQsIDB4ODMsIDB4NzUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzZiwgMHgwMCwgMHg3NSwgMHhmMywgMHgwYywgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGIsIDB4ODMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4ZCwgMHg4MywgMHg2NywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg5NSwgMHg4MywgMHg3NywgMHg0MSwKKwkweDJkLCAweGMzLCAweDAwLCAweDAwLCAweDkzLCAweDgzLCAweDIyLCAweDU4LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5MSwgMHg4MywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDkzLCAweDgzLCAweDY3LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGQzLCAweDgzLCAweDc3LCAweDQxLAorCTB4MmQsIDB4YzMsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHg5NSwgMHgwMCwgMHgwNywgMHgxNiwgMHgzMCwgMHgwMSwgMHgwMCwgMHhhNiwgMHg4MywgMHgyMiwgMHg0MSwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDliLCAweDgzLCAweDIyLCAweDQyLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTUsIDB4ODMsIDB4MjIsIDB4NWYsCisJMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg0OCwgMHg5NiwgMHgwMCwgMHg1ZiwgMHgwMSwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweGExLCAweDgzLCAweDIyLCAweDQwLCAweDk1LCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5ZiwgMHg5NSwgMHgwMCwgMHg1MiwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhhNiwgMHg5NSwgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDBmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGI1LCAweDgzLCAweGEyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVhLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHgwZCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4NmEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjUsIDB4ODMsIDB4MjIsIDB4MjAsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHhiMCwgMHg4MywgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDg3LCAweDk1LCAweDAwLCAweDVjLAorCTB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YzIsIDB4OTcsIDB4MDAsIDB4NDIsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHgwMCwgMHgwNywKKwkweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NGIsIDB4ZTEsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDgzLCAweDgyLCAweGYwLCAweDE4LCAweDMwLCAweDAwLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDQ1LAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MjAsIDB4MDAsIDB4YTYsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHg4MywgMHgyMiwgMHgxNywgMHg5NiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDAwLCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4NTUsIDB4OTcsIDB4MDAsIDB4NGIsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NGIsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5NiwgMHgwMCwgMHgwMywgMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweGE5LCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwKKwkweDhhLCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQwLCAweDAxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4NTAsCisJMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDUwLAorCTB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4Y2UsIDB4ODMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhkMCwgMHg4MywgMHhhOCwgMHgwMCwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDAzLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgyZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDE3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4NDEsIDB4MDAsIDB4YTYsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDcsIDB4MmUsIDB4NDcsCisJMHg5NywgMHg5MCwgMHgwMSwgMHgwMCwgMHhlNiwgMHg4MywgMHgyMiwgMHgxNywgMHg5NiwgMHgwNCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDgzLCAweDIyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGU0LCAweDgzLCAweDIzLCAweGEyLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OWYsIDB4OTUsIDB4MDAsIDB4NTIsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHgwMCwKKwkweDEyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsCisJMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAzLCAweGIwLCAweDAxLCAweDAwLCAweDAzLCAweDg0LCAweDAwLCAweDVjLAorCTB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODMsIDB4MjIsIDB4NDMsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHhmMSwgMHg4MywgMHgyMiwgMHg1ZiwKKwkweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGVkLCAweDgzLCAweDYyLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4ODMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHg3MiwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyZCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweDBmLCAweDAwLCAweGY2LCAweDgwLCAweDg4LCAweDAxLCAweDAwLAorCTB4ZjUsIDB4ODMsIDB4YTIsIDB4YTYsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODMsIDB4MDAsIDB4ZjIsCisJMHgzYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhmMSwgMHg4NCwgMHhhMiwgMHg0YiwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweGMzLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAzLCAweDg4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODQsIDB4MjIsIDB4NGEsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4NCwgMHgyMiwgMHg0OCwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMCwgMHgyZCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDNmLCAweDAwLCAweDAwLCAweGYyLCAweDg2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MWYsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg4MCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5NCwgMHgzZCwgMHg0MiwgMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDg0LCAweGEyLCAweDQyLCAweGUwLCAweDdkLCAweDAwLCAweDAwLCAweGYxLCAweDg0LCAweGEyLCAweDRiLAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMywgMHg4OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDAwLCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDUsIDB4ODQsIDB4NjksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsCisJMHgwOSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OSwgMHg0MSwgMHg0NywgMHhjMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEwLCAweGExLCAweDA5LCAweDZjLCAweDAwLCAweDAwLCAweDBjLCAweDg0LCAweDIyLCAweGExLAorCTB4MDksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjcsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwOCwgMHg4NCwgMHgwMCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg0NiwgMHg4NCwgMHhhMywgMHg5MiwKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDI1LCAweDk4LCAweDAwLCAweDQwLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NDMsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisJMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMywgMHg4OCwgMHgyNywgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDg0LCAweDIyLCAweDVjLCAweDE3LCAweDdjLCAweDAwLCAweDAwLCAweDE0LCAweDg0LCAweDAwLCAweDAwLAorCTB4MmEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgxOCwgMHg4NCwgMHhhMiwgMHg0MywKKwkweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDU4LCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzQsIDB4ODQsIDB4MDAsIDB4NWUsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4YywgMHhjYywgMHgwMSwgMHgwMCwgMHg1OCwgMHg5NywgMHgwMCwgMHg0YywgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweDQ2LCAweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZjAsIDB4Y2QsIDB4MDEsIDB4MDAsCisJMHgyYywgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDE1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyMSwgMHg4NCwgMHhhOCwgMHg1NCwgMHgxNywgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDM0LCAweDg0LCAweDAwLCAweDVlLCAweDE3LCAweDkwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDAwLAorCTB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MzMsIDB4ODQsIDB4MjIsIDB4NDMsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4YywgMHhjYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDAzLCAweGIwLCAweDAxLCAweDAwLCAweDc5LCAweDk3LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NDYsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDAwLCAweDA5LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDM0LCAweDg0LCAweDI4LCAweDU0LCAweDE3LCAweDEwLCAweDAwLCAweDAwLAorCTB4MzAsIDB4ODQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzksIDB4OTcsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgzNiwgMHg4NCwgMHgyMiwgMHg1MCwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU2LCAweDE3LCAweDkwLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDE3LAorCTB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MzksIDB4ODQsIDB4YTIsIDB4NDEsIDB4OTksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgxNywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4M2EsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDQxLCAweDg0LCAweDIyLCAweDQzLCAweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDE2LCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWQsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmYSwgMHg5NiwgMHgwMCwgMHg1ZSwgMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg0NCwgMHg4NCwgMHhhMiwgMHg1ZiwKKwkweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDgwLCAweDkzLCAweDAwLCAweDAxLCAweDM4LCAweDQzLCAweDAxLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDMsIDB4ODgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4NCwgMHhhMiwgMHg0YiwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweGVlLCAweDg0LCAweDAwLCAweDQxLCAweDQzLCAweGMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MjcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MmQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0YiwgMHg4NCwgMHgzNSwgMHgwMSwKKwkweDg2LCAweDMwLCAweDAwLCAweDAwLCAweDZkLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4NTQsIDB4ODQsIDB4MjgsIDB4YjEsIDB4MzAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODQsIDB4MjIsIDB4NGQsCisJMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGRiLCAweDg0LCAweGE3LCAweDQwLCAweDExLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4NDMsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDAsIDB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhlZCwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDU0LCAweDg0LCAweGE4LCAweGIxLCAweDEyLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NWUsIDB4ODQsIDB4YTcsIDB4NDAsCisJMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg0MywgMHhjMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LAorCTB4MmMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZGUsIDB4MDcsIDB4MDAsIDB4NDMsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHg0YywgMHg4NCwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg2MywgMHg4NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDNlLCAweDQzLCAweDI3LCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDRjLCAweDg0LCAweGEzLCAweDBiLCAweDg3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDQwLAorCTB4MWIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHgwMywgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDJkLCAweDQwLCAweDM5LCAweGIwLCAweDAxLCAweDAwLAorCTB4NmQsIDB4ODQsIDB4YTIsIDB4NDAsIDB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHgxMiwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgxNiwgMHgzMCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGRlLCAweDA3LCAweDAwLCAweDQwLCAweDI1LCAweDk4LCAweDAxLCAweDAwLCAweDcwLCAweDg0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgzMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweDI1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDcsIDB4MDAsIDB4NDAsCisJMHgzNywgMHg5OCwgMHgwMSwgMHgwMCwgMHg3NSwgMHg4NCwgMHgyMywgMHgwMSwgMHgzNiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDM2LCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDg0LCAweDgyLCAweDQxLAorCTB4MjMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg3YywgMHg4NCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NzksIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhlZCwgMHg5NCwgMHgwMCwgMHg0MywgMHgyMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5MSwgMHg4NCwgMHgyMiwgMHg0NSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQxLCAweDIzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4MGIsIDB4MjUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg4OCwgMHg4NCwgMHhhOCwgMHgxNSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDAzLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4MjUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4NGMsCisJMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgzNywgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDJiLCAweGMwLCAweDAxLCAweDAwLCAweDc1LCAweDg0LCAweDAwLCAweDQ1LAorCTB4MWYsIDB4ODAsIDB4MDAsIDB4MDAsIDB4OTMsIDB4ODQsIDB4YTMsIDB4MTIsIDB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg5NCwgMHg4NCwgMHg2OCwgMHgxYiwgMHgyOCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgxMiwKKwkweDI4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDk3LCAweDg0LCAweGE4LCAweDE1LCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweGJmLCAweDg0LCAweDIyLCAweDE0LAorCTB4MDIsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MzMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyNCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHgxNCwKKwkweDEyLCAweGMwLCAweDAxLCAweDAwLCAweGI3LCAweDg0LCAweGEyLCAweDE0LCAweDM2LCAweDUwLCAweDAwLCAweDAwLAorCTB4YTcsIDB4ODQsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhhNSwgMHg4NCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YTIsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsCisJMHgyYiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1MCwgMHgyYiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGYwLCAweDA3LCAweDAwLCAweDQwLCAweDM3LCAweDk4LCAweDAxLCAweDAwLCAweGFkLCAweDg0LCAweDIzLCAweDAxLAorCTB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiOCwgMHg4NCwgMHgyMiwgMHgxYiwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDVjLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgxNSwgMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YjQsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHg4NCwgMHgwMCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKwkweDJhLCAweGMwLCAweDAxLCAweDAwLCAweDc1LCAweDg0LCAweGEyLCAweDQwLCAweDI1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MzksIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4MTMsCisJMHgzOCwgMHg2YywgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgzZCwgMHg0MywgMHgzOSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDI1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NzUsIDB4ODQsIDB4MDAsIDB4ZjAsIDB4MzAsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGM2LCAweDg0LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTksCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjMywgMHg4NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGVkLCAweDk0LCAweDAwLCAweDQwLAorCTB4MmIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MmUsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjYSwgMHg4NCwgMHgyMiwgMHg1MCwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NiwKKwkweDE3LCAweDkwLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDE3LCAweDk4LCAweDg4LCAweDAxLCAweDAwLAorCTB4Y2QsIDB4ODQsIDB4YTIsIDB4NDEsIDB4OTksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsCisJMHgxNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhkMCwgMHg4NCwgMHgyMiwgMHg0MywgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDE3LCAweDkwLCAweDAxLCAweDAwLCAweDE2LCAweDAwLCAweDIwLCAweDFkLAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDIsIDB4ODQsIDB4YTMsIDB4NDAsIDB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg4NCwgMHg2MCwgMHg1ZiwgMHgxNywgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwMCwgMHgwYiwKKwkweDE2LCAweGRjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDEzLCAweDE2LCAweDk0LCAweDAxLCAweDAwLAorCTB4ZmEsIDB4OTYsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDAsCisJMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMywgMHg4OCwgMHhhMiwgMHg1ZiwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDE0LCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTMsIDB4MDAsIDB4MDEsIDB4MzgsIDB4NDMsIDB4MDEsIDB4MDAsCisJMHgwMywgMHg4OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwMywKKwkweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDRkLCAweDc1LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGUwLCAweDg0LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhlMiwgMHg4NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHg4NCwgMHgyMiwgMHgxMywKKwkweDgyLCAweDZjLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDNkLCAweDQzLCAweDgzLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgyYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGU4LCAweDg0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWEsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhlNCwgMHg4NCwgMHgwMCwgMHg0MSwgMHg4MywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweGE2LCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4YTAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDUsIDB4MDAsIDB4NDEsCisJMHg4OSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg5ZiwgMHg5NSwgMHgwMCwgMHg1MiwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGE2LCAweDk1LCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDAzLCAweDg4LCAweDAwLCAweDQwLAorCTB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MDEsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDNmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDk1LCAweDAwLCAweDA3LCAweDE2LCAweDMwLCAweDAxLCAweDAwLCAweDA1LCAweDg1LCAweDIyLCAweDQxLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4MjIsIDB4NDIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4NSwgMHgyMiwgMHg1ZiwKKwkweDBmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDBmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MDYsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE0LCAweDg1LCAweGEyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVhLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHgwZCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4NmEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MTQsIDB4ODUsIDB4MjIsIDB4MjAsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwZiwgMHg4NSwgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDg3LCAweDk1LCAweDAwLCAweDVjLAorCTB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YzIsIDB4OTcsIDB4MDAsIDB4NDIsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHgwMCwgMHgwNywKKwkweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NGIsIDB4ZTEsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDg1LCAweDIyLCAweDNhLCAweDAxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NDAsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDFlLCAweDg1LCAweGEyLCAweDQwLCAweGU3LCAweDZkLCAweDAwLCAweDAwLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NDAsCisJMHgwMSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDAwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDM1LCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg4NywgMHg5NiwgMHgwMCwgMHg5NSwgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MjIsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4MTcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgyMCwgMHgwMCwgMHhhNiwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDJiLCAweDg1LCAweDIyLCAweDE3LCAweDk2LCAweDA0LCAweDAwLCAweDAwLCAweDU1LCAweDk3LCAweDAwLCAweDRiLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NGMsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyZCwgMHg4NSwgMHg4MywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDQzLCAweGMxLCAweDAxLCAweDAwLCAweDJmLCAweDg1LCAweDg1LCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4ZjYsCisJMHgwMiwgMHhjYywgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHhhMSwgMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDU3LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGE5LCAweDkzLCAweDAwLCAweDQxLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzOSwgMHg4NSwgMHg2NCwgMHg0NywgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDNhLCAweDg1LCAweGE4LCAweDFiLAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4NzQsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMCwgMHgwNSwKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEzLCAweDA5LCAweDAzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmIsIDB4ODUsIDB4MDEsIDB4ZmIsCisJMHgwOCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg4NSwgMHg4NywgMHhmYiwgMHgyMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDBlLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHg5NSwgMHgwMCwgMHgwNywgMHgxNiwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1YywgMHg4NSwgMHgyMiwgMHg0MSwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDRiLCAweDg1LCAweDIyLCAweDQyLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWIsIDB4ODUsIDB4MjIsIDB4NWYsCisJMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg3ZSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweDUxLCAweDg1LCAweGE2LCAweDVmLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDJiLCAweDk0LCAweDAwLCAweDQwLAorCTB4MDUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1OCwgMHg4NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDEzLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDI2LCAweDk2LCAweDAwLCAweDQwLCAweDA1LCAweDMwLCAweDAxLCAweDAwLCAweDA4LCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweGVkLCAweDg3LCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAwLCAweDAwLAorCTB4NjksIDB4ODUsIDB4YTIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweGI3LCAweDAwLCAweDBkLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg2YSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2OSwgMHg4NSwgMHgyMiwgMHgyMCwKKwkweDg1LCAweDZjLCAweDAwLCAweDAwLCAweDY2LCAweDg1LCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OTUsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHhjMiwgMHg5NywgMHgwMCwgMHg0MiwgMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDkwLCAweDA0LCAweDAwLCAweDA3LAorCTB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2ZCwgMHg4NSwgMHgyMSwgMHgwNCwKKwkweDgwLCAweDIwLCAweDAwLCAweDAwLCAweDZlLCAweDg1LCAweDAwLCAweDQwLCAweDEwLCAweGM5LCAweDAwLCAweDAwLAorCTB4YTEsIDB4ODgsIDB4MDAsIDB4NGIsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4ODUsIDB4MDAsIDB4NDMsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHg4NSwgMHgwMCwgMHhmYiwgMHgyMiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGExLCAweDg4LCAweDAwLCAweDQxLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDRlLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTEsIDB4ODUsIDB4MDAsIDB4NWEsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3NiwgMHg4NSwgMHgwMCwgMHg0NywgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHg4OCwgMHgwMCwgMHg1MywKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweGExLCAweDg4LCAweDAwLCAweDU2LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDBhLAorCTB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4M2QsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgxMSwgMHg4YSwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHhmMiwKKwkweDhhLCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4NjksIDB4ODksIDB4YTAsIDB4MGEsIDB4ZTQsIDB4NmQsIDB4MDAsIDB4MDAsIDB4ODQsIDB4ODUsIDB4YTIsIDB4NDEsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg4MywgMHg4NSwgMHgyMiwgMHgwYSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDY5LCAweDg5LCAweDAwLCAweDUzLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDU0LAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4ODUsIDB4MjIsIDB4MGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4NywgMHg4NSwgMHhhMiwgMHgwYSwgMHhlNCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHg2OSwgMHg4OSwgMHgwMCwgMHg1ZCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ODAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4OGIsIDB4ODUsIDB4YTAsIDB4OTEsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg2OSwgMHg4OSwgMHgwMCwgMHg1ZSwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDAwLCAweDAwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGYsIDB4ODUsIDB4MjAsIDB4OTEsIDB4ZTUsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHg2OSwgMHg4OSwgMHgwMCwgMHg1NCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDY5LCAweDg5LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDBhLAorCTB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4M2QsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg5OSwgMHgwMCwgMHhmMiwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDY5LCAweDg5LCAweGEwLCAweDBhLCAweGU0LCAweDZkLCAweDAwLCAweDAwLAorCTB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NjksIDB4ODksIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweGYzLCAweDgyLCAweGY0LCAweDAxLCAweDAwLCAweGExLCAweDg4LCAweGEwLCAweDQyLAorCTB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ODgsIDB4MDAsIDB4NTQsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMywgMHg0MCwKKwkweDBmLCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweGFhLCAweDBmLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDksIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGI1LCAweDAwLCAweDBkLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDA3LAorCTB4MTYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4YWUsIDB4ODUsIDB4MjIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHg3OCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFjLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHhjMCwgMHg4NSwgMHgyMiwgMHg1MCwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweGJiLCAweDg1LCAweGEyLCAweDU0LCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGIzLCAweDg1LCAweDIyLCAweDU1LAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhhYSwgMHg4NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1MywKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg4MCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwYywgMHhiYywgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGJiLCAweDg1LCAweDIyLCAweDQzLCAweDgwLCAweDZjLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDRiLAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4YWEsIDB4ODUsIDB4YTIsIDB4NDMsIDB4ODAsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg3YywgMHg5NiwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiYywgMHg4NSwgMHg0NiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGJmLCAweDg1LCAweGEwLCAweGYwLCAweDMwLCAweDZmLCAweDAwLCAweDAwLAorCTB4YjEsIDB4ODUsIDB4MWUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4NDEsCisJMHgzMSwgMHhjMywgMHgwMSwgMHgwMCwgMHg3OSwgMHg5NCwgMHgwMCwgMHg0MCwgMHgyNSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDg1LCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OTUsIDB4MDAsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDk2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxOCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwYywgMHhlMCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDkwLCAweDA0LCAweDAwLCAweDA3LCAweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDAwLCAweDBkLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2MsIDB4ODUsIDB4MzAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweGU2LCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweGExLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHhlNiwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyZSwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDEwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGExLCAweDg4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4MjgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDE0LCAweGIwLCAweDAxLCAweDAwLCAweGUwLCAweDg1LCAweDIyLCAweDQ2LCAweDIzLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsIDB4ODcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4ODUsIDB4MjIsIDB4NDAsCisJMHg4NywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGRlLCAweDg1LCAweDIyLCAweDQxLCAweDg3LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZTAsIDB4ODUsIDB4MjIsIDB4NDIsIDB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwKKwkweDA5LCAweDdjLCAweDAwLCAweDAwLCAweGUxLCAweDg1LCAweDY2LCAweDFiLCAweDJjLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzYsIDB4NDEsCisJMHg0MSwgMHhjMywgMHgwMSwgMHgwMCwgMHgxMywgMHg4NiwgMHgyMywgMHg5MiwgMHgxNSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDEzLCAweDg2LCAweGEyLCAweDQ1LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDE5LCAweDg2LCAweDIyLCAweDRiLAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YTIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyNywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwYSwKKwkweDI0LCAweGM4LCAweDAxLCAweDAwLCAweGI5LCAweDk0LCAweDAwLCAweDQwLCAweDBmLCAweDMwLCAweDAxLCAweDAwLAorCTB4MTEsIDB4ODYsIDB4MjIsIDB4MDgsIDB4NDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHhhMywgMHhjMSwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHgxMiwgMHgyNCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweGVhLCAweDg1LCAweGFhLCAweDQxLCAweDI3LCAweDQwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEzLCAweDQ5LAorCTB4MjcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTMsIDB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwYiwgMHg4NiwgMHgyNiwgMHg0MCwgMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDYwLCAweDAwLCAweDAwLCAweDAzLCAweDg0LCAweGM4LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhmOCwgMHg4NSwgMHhhMiwgMHg0MCwgMHg4MywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDg2LCAweDAwLCAweDQxLCAweDgzLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQyLAorCTB4NDQsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MjEsIDB4MzgsIDB4OTYsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHg1MCwgMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHhmZCwgMHg4NSwgMHhhMiwgMHg0NCwKKwkweDIzLCAweDZjLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDg2LCAweGE4LCAweDQyLAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ODUsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGEzLCAweGMxLCAweDAxLCAweDAwLCAweGY2LCAweDg1LCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4MGIsIDB4ODYsIDB4MjIsIDB4NDAsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDg2LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweGVlLCAweDA3LCAweDAwLCAweDQwLCAweDI1LCAweDk4LCAweDAxLCAweDAwLAorCTB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MjQsIDB4ODYsIDB4MDAsIDB4MTcsCisJMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDg2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI5LCAweDk0LCAweDAwLCAweDkyLAorCTB4MjUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MzEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwYiwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwKKwkweDhhLCAweDMwLCAweDAxLCAweDAwLCAweDE5LCAweDg2LCAweDIyLCAweDA4LCAweDJlLCAweDMwLCAweDAwLCAweDAwLAorCTB4MjQsIDB4ODYsIDB4MDAsIDB4NDEsIDB4MjcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDc4LCAweDk4LCAweDAwLCAweDBhLCAweDhjLCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFjLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMCwgMHg5ZiwKKwkweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDIzLCAweDg2LCAweDIyLCAweDlmLCAweDEzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MWMsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MjcsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MSwgMHgzZiwgMHhjMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAxLAorCTB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MzgsIDB4ODYsIDB4MmEsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDk4LCAweDAxLCAweDAwLCAweDJkLCAweDg2LCAweGEyLCAweDQ4LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MmQsIDB4ODYsIDB4YTIsIDB4NDcsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MmQsIDB4ODYsIDB4YTMsIDB4MDcsCisJMHgwMywgMHg2YywgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDg2LCAweGEzLCAweDQwLCAweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAxLAorCTB4ZjAsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MzIsIDB4ODYsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDBlLCAweGNjLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDM2LCAweDg2LCAweGE4LCAweDVjLAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHgwMywgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDA4LCAweGIwLCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDEsIDB4MmQsIDB4NDAsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MTksIDB4ODcsIDB4MjIsIDB4MGYsCisJMHg0MiwgMHgwNSwgMHgwMCwgMHgwMCwgMHg0YiwgMHg4NiwgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NDYsIDB4ODYsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDQzLCAweDg2LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODYsIDB4MjIsIDB4MDcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDQyLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGExLAorCTB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwNiwgMHhhMiwgMHg0NSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDU0LCAweDI5LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVmLAorCTB4MGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDBhLCAweGM4LCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweGE0LCAweDBjLCAweGM4LCAweDAxLCAweDAwLAorCTB4MTAsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyNCwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDA4LAorCTB4MTAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg3ZiwgMHgwMCwgMHgwNSwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhhMiwKKwkweDg2LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweGU0LCAweGIxLCAweDAxLCAweDAwLAorCTB4NzksIDB4ODYsIDB4MjIsIDB4MDEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsCisJMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHhhNCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDY2LCAweDg2LCAweGEzLCAweDA3LAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NjcsIDB4ODYsIDB4NjgsIDB4MDEsIDB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgwNywgMHgxYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwKKwkweDAyLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwYSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDczLCAweDg2LCAweDIyLCAweDQwLCAweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDczLCAweDg2LCAweDIyLCAweDQyLAorCTB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDk5LCAweDg2LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NzAsIDB4ODYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDc1LCAweDg2LCAweGE4LCAweDQwLAorCTB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg4NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwKKwkweDIzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDg2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4N2UsIDB4ODYsIDB4YTMsIDB4MTIsCisJMHgwZSwgMHg2YywgMHgwMCwgMHgwMCwgMHg3ZiwgMHg4NiwgMHg2MCwgMHgwNywgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDEyLCAweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDBkLAorCTB4MTYsIDB4OTQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4MTYsIDB4ZDgsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg5OSwgMHgwMCwgMHgwOCwgMHg5OCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwKKwkweDNlLCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDQzLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDg3LCAweDg2LCAweGE4LCAweDVjLAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4YjksIDB4ODYsIDB4MjIsIDB4MGQsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg4ZCwgMHg4NiwgMHgyMiwgMHgwZCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDkyLCAweDg2LCAweDAwLCAweDBkLCAweDI0LCAweGQwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NGIsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgyYiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhhMiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDIwLCAweDEwLCAweGM4LCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4MjUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4OTQsIDB4ODYsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg4NiwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4OTUsIDB4ODYsIDB4YTgsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDg2LCAweDIyLCAweDBkLCAweDE0LCAweDUwLCAweDAwLCAweDAwLCAweGI4LCAweDg2LCAweGEyLCAweDBkLAorCTB4MGUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4YTUsIDB4ODYsIDB4MjIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGEzLCAweDg2LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhhMCwgMHg4NiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgwNiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsIDB4MGUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YWIsIDB4ODYsIDB4YTIsIDB4NWYsCisJMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg2MCwgMHg4NiwgMHgwMCwgMHg0YywgMHgwZCwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweDVmLCAweDBmLCAweDgwLCAweDAxLCAweDAwLCAweDYwLCAweDg2LCAweDIzLCAweDA3LAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YjUsIDB4ODYsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHg2MCwgMHg4NiwgMHgwMCwgMHgwMywgMHgwYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg4NiwgMHgwMCwgMHgwZCwKKwkweDE4LCAweGMwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDJlLCAweDE0LCAweDBhLCAweGQwLCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4ZmUsIDB4N2YsIDB4MDAsIDB4MDUsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhhNCwgMHg4NiwgMHgwNiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweGExLCAweDg2LCAweDA2LCAweDAwLCAweDAwLCAweDBjLCAweDAwLCAweDJhLCAweGYyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzEsIDB4ODYsIDB4MjIsIDB4NDAsIDB4MzEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHgxOCwgMHgzOCwgMHg5NiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDgxLCAweDAwLCAweGY2LCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4YzUsIDB4ODYsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwgMHhjNywgMHg4NiwgMHgyMiwgMHgwYiwgMHhlZCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGExLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweGExLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4YTEsIDB4ODYsIDB4MDYsIDB4MDAsIDB4MDAsCisJMHgwZiwgMHgwMCwgMHgwMCwgMHhmYSwgMHg5NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NSwKKwkweDk1LCAweDZjLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDRhLCAweDg2LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZDEsIDB4ODYsIDB4MjIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxZiwgMHg0MywgMHgwZSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGQxLCAweDg2LCAweGEwLCAweDQ2LCAweDBmLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MGYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZDUsIDB4ODYsIDB4MjIsIDB4NDgsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwZiwgMHhhMiwKKwkweDQyLCAweDMxLCAweDAwLCAweDAwLCAweGQ4LCAweDg2LCAweDAwLCAweDQwLCAweDg5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg5NSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweGRiLCAweDg2LCAweGEwLCAweDQxLAorCTB4OTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhlMCwgMHg4NiwgMHgyMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhlMCwgMHg4NiwgMHhhMCwgMHg0MywKKwkweDg5LCAweDZjLCAweDAwLCAweDAwLCAweGUwLCAweDg2LCAweDIwLCAweDQ1LCAweDg5LCAweDZjLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4ODYsIDB4YTAsIDB4NDEsIDB4MGUsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDg2LCAweGEyLCAweDQxLCAweDk1LCAweDUwLCAweDAwLCAweDAwLCAweGVkLCAweDg2LCAweDIyLCAweDQ4LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTIsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHg0OCwgMHg5MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHhlNywgMHg4NiwgMHg5MCwgMHg0OCwKKwkweDkyLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsCisJMHg5MywgMHhhNCwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0MywgMHg4MCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQwLAorCTB4NDIsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4YTEsIDB4ODYsIDB4MDYsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0NiwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxNCwgMHg5OSwgMHgwMCwgMHgxNywKKwkweDk4LCAweDMwLCAweDAxLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDE3LCAweDdlLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE3LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDA1LAorCTB4ZTAsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGY3LCAweDg2LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDIsIDB4ODcsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsCisJMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDg3LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg4NiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MDUsIDB4ODcsIDB4YTIsIDB4NDcsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDYsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg4NSwgMHg4NywgMHgwMCwgMHgxNywgMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDBkLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDAzLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDksIDB4ODcsIDB4YTAsIDB4MDcsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDE3LCAweGYwLCAweDAxLCAweDAwLAorCTB4MGQsIDB4ODcsIDB4OTAsIDB4ZjIsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDE0LCAweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4MmIsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxNywgMHg4NywgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MTQsIDB4ODcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDE3LCAweDEwLCAweGRjLCAweDAxLCAweDAwLCAweDg1LCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjEsIDB4ODcsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDIxLCAweDg3LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxZSwgMHg4NywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDI2LCAweDg3LCAweDIyLCAweDA3LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MiwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHhhMSwKKwkweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweGUxLCAweDkxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MmUsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyYiwgMHg4NywgMHgyMiwgMHg0MCwgMHgzMSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDBjLCAweDAwLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDE4LAorCTB4MzgsIDB4OTYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4NywgMHhhOCwgMHg0MCwgMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDUyLAorCTB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDA0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDBlLCAweGIwLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MGMsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHgxNSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4M2YsIDB4ODcsIDB4YTMsIDB4MTIsIDB4MGUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg0MCwgMHg4NywgMHg2OCwgMHgwNywgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgxMiwKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDE0LCAweDk5LCAweDAwLCAweDA4LCAweDk4LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwgMHgzZSwgMHg5NiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0NywgMHg4NywgMHhhOCwgMHg1YywKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDc5LCAweDg3LCAweDIyLCAweDBkLCAweDE0LCAweDZjLCAweDAwLCAweDAwLAorCTB4NGQsIDB4ODcsIDB4MjIsIDB4MGQsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg1MiwgMHg4NywgMHgwMCwgMHgwZCwgMHgyNCwgMHhkMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4YTIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwKKwkweDI1LCAweDk4LCAweDAxLCAweDAwLCAweDU0LCAweDg3LCAweDIyLCAweDQyLCAweDIzLCAweDZjLCAweDAwLCAweDAwLAorCTB4NTksIDB4ODcsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDg3LCAweGE4LCAweDVjLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHgwZCwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4NywgMHhhMiwgMHgwZCwKKwkweDBlLCAweDUwLCAweDAwLCAweDAwLCAweDY1LCAweDg3LCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2MywgMHg4NywgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweGUxLCAweDkxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MDYsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDBlLCAweDMwLCAweDAwLCAweDAwLCAweDZiLCAweDg3LCAweGEyLCAweDVmLAorCTB4MGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzksIDB4ODcsIDB4MDAsIDB4NGMsIDB4MGQsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHg1ZiwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg4NywgMHgyMywgMHgwNywKKwkweDE0LCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDc1LCAweDg3LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4MzksIDB4ODcsIDB4MDAsIDB4MDMsIDB4MGMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzksIDB4ODcsIDB4MDAsIDB4MGQsCisJMHgxOCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NiwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDgzLCAweDg3LCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHg4MywgMHg4NywgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE3LCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDg1LCAweDg3LCAweDAwLCAweDQwLAorCTB4MmIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEwLCAweDlmLCAweDEzLCAweDZjLCAweDAwLCAweDAwLAorCTB4OGMsIDB4ODcsIDB4MjIsIDB4OWYsIDB4MTMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhjYywgMHgwMSwgMHgwMCwgMHgyNywgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDhkLCAweDk4LCAweDAwLCAweDQxLCAweDNmLCAweDQzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg3OCwgMHg5OCwgMHgwMCwgMHg0MCwgMHgwZiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAzLCAweDg4LCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYSwgMHgwMSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDg3LCAweDIyLCAweDUwLCAweDAxLCAweDZjLCAweDAwLCAweDAwLCAweDBkLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgxMiwgMHg5NSwgMHgwMCwgMHgwNywKKwkweDE2LCAweDMwLCAweDAxLCAweDAwLCAweGEzLCAweDg3LCAweDIyLCAweDQxLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4OWUsIDB4ODcsIDB4MjIsIDB4NDIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg4NywgMHgyMiwgMHg1ZiwgMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDBmLCAweDgwLCAweDAxLCAweDAwLCAweDBlLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHg4NywgMHhhMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MGIsCisJMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHgwZCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLCAweDZhLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjAsIDB4ODcsIDB4MjIsIDB4MjAsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhZCwgMHg4NywgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDg3LCAweDk1LCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLAorCTB4YzIsIDB4OTcsIDB4MDAsIDB4NDIsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHgwMCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhhMSwgMHg4OCwgMHhhMiwgMHg1ZiwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHg0MywKKwkweDE5LCAweDgwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDJkLCAweGYwLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OGUsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMywgMHg0MywgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEzLCAweDQzLCAweDkxLCAweDZjLCAweDAwLCAweDAwLCAweGMxLCAweDg3LCAweDIyLCAweDQ4LAorCTB4OGUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg1OCwgMHgwMCwgMHgzZCwgMHg0MywgMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwgMHhjMSwgMHg4NywgMHgxZiwgMHhmMCwKKwkweDI0LCAweDZjLCAweDAwLCAweDAwLCAweGMwLCAweDg3LCAweDIzLCAweDQxLCAweDhmLCAweDZjLCAweDAwLCAweDAwLAorCTB4YTEsIDB4ODgsIDB4MDAsIDB4NDcsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ODgsIDB4MDAsIDB4NDgsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAwLCAweDJkLCAweGYwLCAweDE0LCAweGIwLCAweDAxLCAweDAwLCAweGM2LCAweDg3LCAweDIyLCAweDBhLAorCTB4OTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4OTgsIDB4MDAsIDB4NDAsIDB4OTEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhhMSwgMHg4OCwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZCwgMHg0NSwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweGQyLCAweDg3LCAweDIyLCAweGYwLCAweDJjLCAweDMwLCAweDAwLCAweDAwLAorCTB4YTMsIDB4MDAsIDB4MmQsIDB4MzAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmQsIDB4ZjMsCisJMHg4MiwgMHhlMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg4NywgMHhhMywgMHg0MSwgMHgyYywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDk4LCAweDAwLCAweDJkLCAweGYwLAorCTB4ODIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ODgsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODIsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg5OCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhhMSwgMHg4OCwgMHgyMCwgMHg0YywKKwkweDgyLCAweDZjLCAweDAwLCAweDAwLCAweDdjLCAweDAwLCAweDJkLCAweDQxLCAweDk4LCAweGU4LCAweDAxLCAweDAwLAorCTB4YTEsIDB4ODgsIDB4MjAsIDB4ZjAsIDB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MjIsIDB4MGEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwYywgMHg3ZSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweGVkLCAweDg3LCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGExLCAweDg4LCAweDAwLCAweDQ5LAorCTB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhkYSwgMHg4NywgMHgyMiwgMHg0MywgMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxMywgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGRjLCAweDAxLCAweDAwLCAweGRiLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MWEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4ZGIsIDB4ODcsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwOCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDg3LCAweDlmLCAweDg1LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGUxLCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ODMsIDB4MjIsIDB4NDAsIDB4NTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg1NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhlMSwgMHg4NywgMHg0MiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLAorCTB4MDEsIDB4ODMsIDB4MWEsIDB4NWIsIDB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4ZTcsIDB4ODcsIDB4MjIsIDB4NDYsCisJMHhmMywgMHg3ZiwgMHgwMCwgMHgwMCwgMHhlNywgMHg4NywgMHhhMiwgMHg0MSwgMHhmMywgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDgwLCAweDAwLCAweDQyLCAweDk3LCAweDMzLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGNiLAorCTB4ODEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4ZWEsIDB4ODcsIDB4MjIsIDB4NDAsIDB4ZjIsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg4MCwgMHgwMCwgMHg2ZiwgMHg5NywgMHgzMywgMHgwMSwgMHgwMCwgMHhlYywgMHg4NywgMHgyMiwgMHg0MCwKKwkweDczLCAweDdkLCAweDAwLCAweDAwLCAweGUwLCAweDgwLCAweDAwLCAweDQxLCAweDhiLCAweGIzLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODcsIDB4OWMsIDB4MGYsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGY0LCAweDg3LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhmMSwgMHg4NywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDJlLCAweDk0LCAweDIyLCAweDAyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZjUsIDB4ODcsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHgyZSwgMHg5NCwgMHgxYSwgMHgwMiwgMHg2OCwgMHg5NywgMHgwMCwgMHgwMCwKKwkweGZmLCAweDg3LCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ODcsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGZjLCAweDg3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2UsIDB4OTQsIDB4MjIsIDB4MDIsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDNlLCAweDk0LCAweDFhLCAweDAyLAorCTB4NjgsIDB4OTcsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ODgsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwYSwgMHg4OCwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODgsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDJmLCAweDgzLCAweDIyLCAweDAyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDBiLCAweDg4LCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHgwMiwgMHg2OCwgMHg5NywgMHgwMSwgMHgwMCwgMHgyZiwgMHg4MywgMHgwMCwgMHg0MCwKKwkweDA1LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGE2LCAweDU2LCAweGIxLCAweDAxLCAweDAwLAorCTB4NTYsIDB4OTUsIDB4MmYsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDAsCisJMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHhiOCwgMHg5NCwgMHgyOSwgMHg0MSwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweGVmLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTMsIDB4MGMsIDB4NTUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgyOSwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwZCwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDEyLCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE3LCAweDEzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxNiwgMHg4OCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgxMCwgMHgzNCwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDM0LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4MTEsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMCwgMHhhYSwgMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDQzLCAweDg4LCAweDIyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODgsIDB4NjAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsCisJMHg4NCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgyYiwgMHg4OCwgMHgwNSwgMHhjMiwgMHgyNCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDU4LCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODgsIDB4NzAsIDB4ZjAsIDB4MTgsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwYywgMHg4MiwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0MSwKKwkweDBlLCAweDZjLCAweDAwLCAweDAwLCAweDQzLCAweDg4LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NzAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4M2EsIDB4ODgsIDB4YTAsIDB4NDgsCisJMHgyMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgzNSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDFhLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDM0LCAweDg4LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzMSwgMHg4OCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODgsIDB4MDAsIDB4ZjgsCisJMHgxOCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgzNSwgMHg4OCwgMHhhMiwgMHg0MSwgMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDEwLCAweDM0LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4MzQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4MTEsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgxYSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MWEsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzZSwgMHg4OCwgMHhhOCwgMHgwOSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDIzLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4MzUsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg0ZiwgMHg4OCwgMHgyMiwgMHg0MSwgMHgwZCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDBmLCAweGMwLCAweDAxLCAweDAwLCAweDRiLCAweDg4LCAweGEwLCAweGFhLCAweDBmLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxMiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNywgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDFmLCAweDg4LCAweDAwLCAweDQxLAorCTB4MTcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDksIDB4MTIsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgxZiwgMHg4OCwgMHg4MywgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE3LCAweGIwLCAweDAxLCAweDAwLCAweDFmLCAweDg4LCAweDAwLCAweDQxLCAweDFiLCAweGMwLCAweDAwLCAweDAwLAorCTB4NWEsIDB4ODgsIDB4MjMsIDB4NDAsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgzNSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxYSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDU3LCAweDg4LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg1NCwgMHg4OCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4NjAsIDB4ODgsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTgsIDB4ODgsIDB4YTIsIDB4NDEsCisJMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDVkLCAweDg4LCAweGEwLCAweGFhLCAweDBmLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjgsIDB4OTQsIDB4MjAsIDB4MDcsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1NiwgMHg5NSwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDBmLCAweGIwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDBjLCAweDgwLCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MGMsCisJMHg3ZSwgMHg4OSwgMHgwMSwgMHgwMCwgMHg3OSwgMHg4OCwgMHgyNiwgMHg1NCwgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDZjLCAweDg4LCAweDg3LCAweDBjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDFmLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MGMsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweDk5LCAweDAxLCAweDAwLCAweDZjLCAweDg4LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NTQsIDB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NjgsIDB4ODgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3NCwgMHg4OCwgMHgyMiwgMHg0NiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDJhLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDBjLAorCTB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4NmQsIDB4ODgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzksIDB4ODgsIDB4MjIsIDB4NDksCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDU0LAorCTB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ODgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4NzksIDB4ODgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4OTQsIDB4MmYsIDB4NTUsCisJMHhmMSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHhhNiwgMHg1NiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDgzLCAweGEyLCAweDQxLCAweGU1LCAweDUxLCAweDAwLCAweDAwLCAweDY0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODEsIDB4ODgsIDB4NDQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4NCwgMHg4OCwgMHhhMiwgMHg5MywgMHg1NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDU3LCAweGMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweGFiLCAweDI3LCAweGIzLCAweDAxLCAweDAwLAorCTB4MmYsIDB4ODMsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MmYsIDB4ODMsIDB4MjIsIDB4NTEsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgyZiwgMHg4MywgMHhhMiwgMHg0MSwgMHgxZCwgMHg1MywgMHgwMCwgMHgwMCwKKwkweDUwLCAweDQ2LCAweDAwLCAweDQwLCAweDFkLCAweDliLCAweDAxLCAweDAwLCAweDM4LCAweDA1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg0OSwgMHgzMSwgMHgwMSwgMHgwMCwgMHg5MCwgMHg4OCwgMHgyMiwgMHg0MCwKKwkweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDQsIDB4MDAsIDB4NDEsIDB4YjUsIDB4NTMsIDB4MDEsIDB4MDAsIDB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZCwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDQwLCAweDE2LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDQwLCAweDA1LCAweDAwLCAweDQwLAorCTB4NDksIDB4MzEsIDB4MDEsIDB4MDAsIDB4MWUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweDkxLCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4YjUsIDB4MzMsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MTYsIDB4MjAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1NSwgMHg4MiwgMHgwMCwgMHg0MCwgMHhiNSwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDRhLAorCTB4YjQsIDB4OGIsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweGI0LCAweGY3LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsCisJMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweGYyLCAweDBlLCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDAyLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHgwOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhYiwgMHg4OCwgMHgyMiwgMHg1MCwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDBmLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OGEsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDQsCisJMHg4YSwgMHgxNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0OCwgMHgwOSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIwLCAweDU3LCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHhiMSwgMHg4OCwgMHgwMCwgMHg0YiwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweGUxLCAweDhiLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDE2LCAweDhjLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDUyLCAweDhjLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4NTIsIDB4OGMsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4OGMsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg4YywgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg4YywgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGM4LCAweDhjLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OGMsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2IsIDB4OGUsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkYywgMHg4YywgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGRhLCAweDhjLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZGQsIDB4OGIsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTUsIDB4OGQsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5NSwgMHg4ZCwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5NSwgMHg4ZCwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjUsIDB4OGQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhkLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGQsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRkLCAweDhkLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYywgMHg4ZSwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4ZGQsIDB4OGIsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4OGUsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg4ZSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDIxLCAweDhlLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MjEsIDB4OGUsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjEsIDB4OGUsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHg4ZSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MmMsIDB4OGUsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzZSwgMHg4ZSwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHg4ZSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNlLCAweDhlLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZGQsIDB4OGIsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0MCwgMHg4ZSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzNCwgMHg4ZSwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDkzLCAweDhkLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTMsIDB4OGQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5MywgMHg4ZCwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0MSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQyLCAweDhlLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDQyLCAweDhlLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OGUsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDksIDB4OGUsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4NGIsIDB4OGUsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTgsIDB4OGUsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YmUsIDB4OGUsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjYywgMHg4YywgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDNiLCAweDhlLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OGUsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OGMsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzYiwgMHg4ZSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGRhLCAweDhlLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5MywgMHg4YywgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjMiwgMHg4ZSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGNjLCAweDhjLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4M2IsIDB4OGUsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAyLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYyLAorCTB4MGUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgyZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDA4LCAweGIwLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4OGEsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDQsCisJMHg4YSwgMHgxNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0ZSwgMHgwOSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDJhLCAweDAwLCAweDAwLCAweDQ3LCAweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDI0LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MjAsIDB4NDcsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0NywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDk2LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDk2LCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4N2EsIDB4ODksIDB4MDAsIDB4NGIsCisJMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHhmNiwgMHg4ZSwgMHgwMCwgMHg0OSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDJmLCAweDhmLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDM2LCAweDhmLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4OGYsIDB4MDAsIDB4NDIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZhLCAweDhmLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4OGYsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3MSwgMHg4ZiwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGRjLCAweDhmLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHg4ZiwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2EsIDB4OGYsIDB4MDAsIDB4NDEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDNhLCAweDhmLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNhLCAweDhmLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2EsIDB4OGYsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzYSwgMHg4ZiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzYSwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNhLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4M2EsIDB4OGYsIDB4MDAsIDB4NDksIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2EsIDB4OGYsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzYSwgMHg4ZiwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDNhLCAweDhmLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNhLCAweDhmLCAweDAwLCAweDRkLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MCwgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NDUsIDB4OTAsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MCwgMHgwMCwgMHg0YiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDkwLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4N2EsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MywgMHg5MCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGYsIDB4OTMsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4ZiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQ3LCAweDhmLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDhmLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4OGYsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NjQsIDB4OGYsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkYywgMHg4ZiwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDcxLCAweDhmLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4NjIsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4OGYsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OGYsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDgxLCAweDkwLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDgxLCAweDkwLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg4YiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4OTAsIDB4MDAsIDB4NGIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDNhLCAweDhmLCAweDAwLCAweDQxLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4ZiwgMHg5MCwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OGYsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDhmLCAweDkwLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg4ZiwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4ZiwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiYiwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGJiLCAweDkwLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTEsIDB4MDAsIDB4NDAsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDkxLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDg3LCAweDkwLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0ZSwgMHg5MSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5MSwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDU3LCAweDkxLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTEsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4NywgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDg3LCAweDkwLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDQ1LCAweDkwLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4OTAsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MCwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDhmLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0NSwgMHg5MCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDQ1LCAweDkwLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGFiLCAweDkwLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDlkLCAweDkwLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4OGUsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg4ZSwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhYiwgMHg5MCwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGM2LCAweDhiLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OGIsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5ZCwgMHg5MCwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDhlLCAweDkwLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDhlLCAweDkwLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4OWQsIDB4OTAsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDVhLCAweDkxLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4OTEsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDVhLCAweDkxLCAweDAwLCAweDRiLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4OTEsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1YSwgMHg5MSwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDVhLCAweDkxLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4NWEsIDB4OTEsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4OTEsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVhLCAweDkxLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4OTEsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg1YSwgMHg5MSwgMHgwMCwgMHg0YywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4OTEsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3YSwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDc3LCAweDkxLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5NiwgMHg5MiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3YSwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDk2LCAweDkyLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5NiwgMHg5MiwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGJmLCAweDkyLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YmQsIDB4OTIsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4YmYsIDB4OTIsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiZCwgMHg5MiwgMHgwMCwgMHg0YSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NjcsIDB4OTEsIDB4MDAsIDB4NDEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHg5MSwgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NzQsIDB4OTEsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHg5MSwgMHgwMCwgMHg0YiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDc0LCAweDkxLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3NCwgMHg5MSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHg5MSwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDc0LCAweDkxLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4NzQsIDB4OTEsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDc0LCAweDkxLCAweDAwLCAweDRjLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NjIsIDB4OTAsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4N2EsIDB4OTAsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MywgMHg5MCwgMHgwMCwgMHg0YywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4N2QsIDB4OTMsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDkzLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg5MywgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDkzLCAweDAwLCAweDRiLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDkzLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDkzLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHg4ZiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTMsIDB4MDAsIDB4NGMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTMsIDB4OTAsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwZiwgMHg5MywgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NTMsIDB4OTAsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3YSwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDBmLCAweDkzLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg5MywgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg5MywgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3YSwgMHg5MCwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NmUsIDB4OTMsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE2LCAweDkzLCAweDAwLCAweDRkLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDJjLCAweDkzLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmZCwgMHg5MiwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTMsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZkLCAweDkyLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDdhLCAweDkwLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0NCwgMHg5MywgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NDQsIDB4OTMsIDB4MDAsIDB4NGQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQ3LCAweDhmLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4OGYsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDY3LCAweDkzLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg4ZiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQ3LCAweDhmLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDhmLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4OGYsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NjcsIDB4OTMsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmUsIDB4OTMsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4N2EsIDB4OTAsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZlLCAweDkzLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHg5MywgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OTMsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3YSwgMHg5MCwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDEwLCAweDkzLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg5MywgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NywgMHg5MywgMHgwMCwgMHg0MiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4OTIsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDc3LCAweDkzLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg4ZiwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHg5MiwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3MSwgMHg4ZiwgMHgwMCwgMHg0ZCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3MSwgMHg4ZiwgMHgwMCwgMHg0ZCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDYyLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsIDB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHgwNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgyZSwgMHg0YiwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGY4LCAweDg3LCAweDAwLCAweDA0LCAweGU2LCAweGIxLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OGIsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDksIDB4OTcsIDB4MDAsIDB4M2EsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGM2LCAweDhiLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGZmLCAweDFmLCAweDAwLCAweDBmLAorCTB4MWUsIDB4OGMsIDB4MDEsIDB4MDAsIDB4NmQsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHg4YiwgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ZDgsIDB4OGIsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGQ1LCAweDhiLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ODUsIDB4MjIsIDB4MDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhkOSwgMHg4YiwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDkzLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDAyLCAweDY4LCAweDk3LCAweDAxLCAweDAwLAorCTB4MWEsIDB4ODUsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsCisJMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDA1LCAweDAwLCAweDJlLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGY4LCAweDg3LCAweDAwLCAweDA0LAorCTB4ZTYsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweGExLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTgsIDB4MDAsIDB4MDYsCisJMHgwNywgMHg0MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDA3LCAweGQwLCAweDAxLCAweDAwLCAweGQ0LCAweDAwLCAweDJlLCAweDVjLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsCisJMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDk2LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NGIsCisJMHg5NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg5NSwgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDk2LCAweGMwLCAweDAxLCAweDAwLCAweDVlLCAweDAxLCAweDJlLCAweDM0LAorCTB4OTcsIDB4ODQsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZTQsIDB4ZTUsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMSwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDg2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweGE3LCAweDg3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHg0MywgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAxLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgwNSwgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmUsIDB4NDAsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGQsIDB4OGMsIDB4MjAsIDB4NGIsCisJMHg5NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBhLCAweDhjLCAweDAwLCAweDQxLCAweDk1LCAweGMwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTQsIDB4OGMsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDEwLCAweDhjLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOSwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDBjLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDk4LCAweGM4LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGExLCAweDk4LCAweDZjLCAweDAwLCAweDAwLAorCTB4MWIsIDB4OGMsIDB4NDQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWUsIDB4OGMsIDB4YTIsIDB4NGMsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgxZiwgMHg4YywgMHgwMCwgMHg0YywgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDIwLCAweDhjLCAweDIwLCAweGYwLCAweDU2LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4NTYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2NCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGNjLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDMsCisJMHg4MSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDY0LCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDA1LAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDJiLCAweDhjLCAweGE4LCAweDQ0LCAweGUwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NDYsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDY4LCAweDAxLCAweDAwLCAweDA1LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDY0LCAweDAwLCAweDAwLCAweDQzLAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDM0LCAweDhjLCAweGE4LCAweDQ0LCAweGUwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg4NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgzOCwgMHgwMCwgMHgyZSwgMHhhNywgMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDhiLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDNjLCAweDhjLCAweDIyLCAweDQzLAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgzZiwgMHg4YywgMHgyMiwgMHg0NCwgMHhlNywgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDQ1LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4NjgsIDB4MDEsIDB4MjAsIDB4YTIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg0MywgMHg4YywgMHgyMywgMHgwYiwgMHhlNSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg1OCwgMHgwMSwgMHgwMCwgMHg0MywgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHgwNSwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDgsIDB4OGMsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVjLCAweDAwLCAweDJlLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4ZjAsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDQxLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTUsIDB4OGMsIDB4YTIsIDB4NDksCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg4NiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDU5LCAweDhjLCAweDAwLCAweDQwLCAweGU1LCAweGIxLCAweDAwLCAweDAwLCAweDg2LCAweDAwLCAweDJmLCAweDQ5LAorCTB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4NTksIDB4OGMsIDB4YTIsIDB4ZjIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGU3LCAweDkxLCAweDAxLCAweDAwLCAweDVjLCAweDhjLCAweGEyLCAweDQ2LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4NjAsIDB4OGMsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgyZiwgMHg0NiwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDhjLCAweGEyLCAweGYyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDhiLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQwLCAweDA2LCAweDZjLCAweDAwLCAweDAwLAorCTB4YTgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZiLCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLAorCTB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywgMHgxNCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg5MCwgMHg4YywgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDc2LCAweDhjLCAweDIyLCAweDBhLCAweDE2LCAweDZjLCAweDAwLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4MTMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmMCwgMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDE1LCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHg3NSwgMHg4YywgMHhhMCwgMHg0MywKKwkweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEzLCAweGIwLCAweDAxLCAweDAwLAorCTB4NmIsIDB4OGMsIDB4MDAsIDB4NDEsIDB4MTUsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4OGMsIDB4MjIsIDB4MGEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwOCwgMHgxMiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDU4LCAweDAwLCAweDNkLCAweDQzLCAweDEzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsIDB4ODQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxNSwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OTAsIDB4OGMsIDB4MjIsIDB4NDEsCisJMHgxNSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxMSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDgzLCAweDhjLCAweGEwLCAweDQzLCAweDExLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MDYsIDB4MTAsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg1OCwgMHgwMCwgMHgzZCwgMHg0MywgMHgxMSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDM2LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NGUsIDB4OTcsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDJiLCAweDk0LCAweDAwLCAweDA1LCAweDQ4LCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg4YywgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDdmLCAweDhjLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NTEsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDM3LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYzLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MmUsIDB4NDEsIDB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxMSwgMHgwMCwgMHg0MCwgMHhlNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0OCwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDlkLCAweDhjLCAweDAwLCAweDQ4LCAweDE5LCAweDkwLCAweDAwLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4ZjMsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMCwgMHgyZSwgMHg0MSwgMHhmNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDExLCAweDAwLCAweDQwLCAweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhhNCwgMHg4YywgMHgyMiwgMHg0NSwgMHgyMywgMHg3YywgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZiwgMHhmMCwKKwkweDhjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweGYwLCAweDhjLCAweGMwLCAweDAxLCAweDAwLAorCTB4N2MsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTMsIDB4ZjAsCisJMHg4YywgMHg2YywgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDM1LCAweDAwLCAweDJkLCAweGYwLCAweDhjLCAweGIwLCAweDAxLCAweDAwLCAweDM0LCAweDAwLCAweDJkLCAweGYzLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjMsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg1OCwgMHgwMCwgMHgzZSwgMHg0MywgMHg4NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHhhYiwgMHg4YywgMHgyMiwgMHg0OCwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhkLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjgsIDB4MGEsIDB4OGMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MmEsIDB4NGEsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDAwLCAweDIwLCAweDFiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MzgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmOCwKKwkweDAyLCAweDMwLCAweDAwLCAweDAwLCAweGI5LCAweDhjLCAweDIzLCAweDAxLCAweDE0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0YywgMHgwMCwgMHgyMCwgMHhmMCwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQ0LCAweDAwLCAweDIwLCAweDQwLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDQ4LCAweDAwLCAweDIwLCAweDQxLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MmQsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg1OCwgMHg5OCwgMHgwMCwgMHhmMCwgMHgyNCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjMiwgMHg4YywgMHhhMiwgMHg0NCwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGMwLCAweDhjLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YjYsIDB4OTUsIDB4MDAsIDB4NDAsIDB4M2IsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZWEsIDB4OGMsIDB4YTIsIDB4MDgsCisJMHgzYywgMHgzMCwgMHgwMCwgMHgwMCwgMHhjMiwgMHg4YywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI5LCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGVhLCAweDhjLCAweGEyLCAweDA4LAorCTB4M2MsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4MjAsIDB4MWMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1NCwgMHgwMCwgMHgyMCwgMHgxMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0ZSwgMHgwMCwgMHgyMCwgMHgwMSwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDIwLCAweDBhLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDhmLCAweDk1LCAweDAwLCAweGYzLCAweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDlkLCAweDhjLCAweDIyLCAweDRhLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4Y2UsIDB4OGMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg4ZiwgMHg5NSwgMHgwMCwgMHhmMywKKwkweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDQzLCAweDk3LCAweDZjLCAweDAwLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2UsIDB4NDMsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxZiwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwKKwkweGRkLCAweDhiLCAweDg1LCAweDExLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmYsIDB4ZjAsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwgMHg4YywgMHhjMCwgMHgwMSwgMHgwMCwgMHg3YywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEzLCAweGYwLCAweDhjLCAweDZjLCAweDAwLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0OSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGRjLCAweDhjLCAweDAwLCAweDQ5LCAweDE5LCAweDgwLCAweDAwLCAweDAwLCAweGUxLCAweDhjLCAweDIyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4YjYsIDB4OTUsIDB4MDAsIDB4NDAsIDB4M2IsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhlNSwgMHg4YywgMHhhMiwgMHgwOCwgMHgzYywgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg1ZiwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YjksIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZTUsIDB4OGMsIDB4YTIsIDB4MDgsCisJMHgzYywgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg1ZiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDJkLCAweDEwLAorCTB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NTQsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MzgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0ZSwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyZCwgMHhmMiwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NDYsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMSwgMHgyZCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDY4LCAweGYyLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgzNywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDM2LCAweGQwLCAweDAxLCAweDAwLCAweDVjLCAweDAxLCAweDJlLCAweDQwLCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsCisJMHg4MSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgxMiwgMHg5NywgMHgwMCwgMHg0MCwgMHhlNCwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDQ2LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGY2LCAweDhjLCAweGE4LCAweDQwLAorCTB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHg4ZCwgMHg4MiwgMHg0MSwKKwkweDIzLCAweDQwLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDEsIDB4OGQsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGZlLCAweDhjLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDIzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MGMsIDB4OGQsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDgsIDB4OGQsIDB4YTMsIDB4MDEsCisJMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHgwOSwgMHg4ZCwgMHgwMCwgMHgwNiwgMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweDBiLCAweDhkLCAweDIwLCAweDAyLAorCTB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwZiwgMHg4ZCwgMHgwMCwgMHgwMiwgMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwZSwgMHg4ZCwgMHhhMywgMHgwMSwKKwkweDBjLCAweDZjLCAweDAwLCAweDAwLCAweDBmLCAweDhkLCAweDAwLCAweDA2LCAweDA0LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsCisJMHgxNiwgMHg5NCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwYiwgMHgxNiwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDA4LCAweDNlLCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFjLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4ZCwgMHhhOCwgMHgxMywKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDUxLCAweDhkLCAweDIyLCAweDAyLCAweDE0LCAweDUwLCAweDAwLCAweDAwLAorCTB4NDQsIDB4MDAsIDB4MmQsIDB4MDIsIDB4MGMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4M2MsIDB4OGQsIDB4YTIsIDB4MDIsCisJMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4ZCwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDIxLCAweDhkLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxZCwgMHg4ZCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MmQsIDB4NWMsCisJMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg0OCwgMHgwMCwgMHgyZCwgMHhmMCwgMHgzOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDRjLCAweDAwLCAweDJkLCAweGYwLCAweDI2LCAweGIwLCAweDAxLCAweDAwLCAweDM4LCAweDAwLCAweDJmLCAweGYyLAorCTB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4M2UsIDB4OGQsIDB4MjIsIDB4MDEsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHg4ZCwgMHgyMiwgMHg0NiwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MmQsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmYsIDB4OGQsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDJjLCAweDhkLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzOCwgMHgwMCwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDM4LCAweDAwLCAweDJkLCAweGYwLCAweDk2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ZTEsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg0YSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQ0LCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDM5LCAweDhkLCAweGE4LCAweDVjLCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4M2UsIDB4OGQsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHgzOCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDhkLCAweDIyLCAweDA2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4MzMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NGEsIDB4OGQsIDB4YTIsIDB4MDIsIDB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg4ZiwgMHgwZCwKKwkweDQyLCAweDMxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NWMsIDB4ZTEsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4ZjAsCisJMHg2YSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4MzcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZmEsIDB4OGMsIDB4MDAsIDB4YTEsIDB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhmYSwgMHg4YywgMHgwMCwgMHgwMiwKKwkweDM2LCAweGQwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDIwLCAweDFjLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NTQsIDB4MDAsIDB4MjAsIDB4MTMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MjAsIDB4MDEsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHgwYSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDhkLCAweDAwLCAweDVmLCAweDAxLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDAyLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDIsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgyZCwgMHg0NiwgMHgwMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDgwLCAweGY0LCAweDAxLCAweDAwLCAweDU3LCAweDhkLCAweGEwLCAweDQzLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDVlLCAweDhkLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg1YiwgMHg4ZCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDBkLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjUsIDB4OGQsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDYyLCAweDhkLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2MCwgMHgwMSwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDE3LCAweGYwLCAweDAxLCAweDAwLAorCTB4NmEsIDB4OGQsIDB4OTAsIDB4ZjIsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDAwLCAweGE2LCAweDJhLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4NmQsIDB4OGQsIDB4NDUsIDB4NDgsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHhkMCwgMHgwMCwgMHgxZSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg3MiwgMHg4ZCwgMHgyOCwgMHg0MCwKKwkweDA1LCAweDMwLCAweDAwLCAweDAwLCAweDZlLCAweDhkLCAweDIyLCAweDQ4LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4NzUsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4ZCwgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDcyLCAweDhkLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDAwLAorCTB4OTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4N2QsIDB4OGQsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgzYiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMywgMHg0OCwKKwkweDNiLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2EsIDB4OGQsIDB4YTIsIDB4NDEsCisJMHgzYiwgMHg1MCwgMHgwMCwgMHgwMCwgMHg4MSwgMHg4ZCwgMHgwMCwgMHg0OSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweDFlLCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ODEsIDB4OGQsIDB4MDAsIDB4NDksIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxZCwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4NCwgMHg4ZCwgMHgyMiwgMHg1ZiwKKwkweDAxLCAweDZjLCAweDAwLCAweDAwLCAweDg3LCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YTcsIDB4ODgsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4OGQsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDhiLCAweDhkLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg4OCwgMHg4ZCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDhiLCAweDhkLCAweDQwLCAweDA1LCAweDQ4LCAweDMxLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsIDB4OTQsIDB4ODksIDB4MDEsIDB4MDAsIDB4OTEsIDB4OGQsIDB4ODUsIDB4Y2EsCisJMHg5NCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4NywgMHg5OCwgMHgxOCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDAwLCAweDAwLCAweDBmLCAweDFlLCAweDhjLCAweDAxLCAweDAwLCAweGI0LCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MTgsIDB4MDAsIDB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgwMCwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE5LCAweDgwLCAweDAxLCAweDAwLCAweGRkLCAweDhiLCAweDIyLCAweDQ3LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YjksIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OTgsIDB4OGQsIDB4YTIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDEyLCAweDk3LCAweDAwLCAweDQwLCAweDBkLCAweDMwLCAweDAxLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgyZCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg4ZCwgMHg5MCwgMHg0YywKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4YTAsIDB4OGQsIDB4MjIsIDB4NDMsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg0NSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDY4LCAweDAxLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAxLCAweDJlLCAweGYyLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NjIsIDB4NDAsIDB4N2UsIDB4Y2QsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweDhkLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGFhLCAweDhkLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZSwgMHg4ZCwgMHg0NSwgMHg0OCwKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDA4LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YjQsIDB4OGQsIDB4MjgsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YWYsIDB4OGQsIDB4MjIsIDB4NDgsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhjMywgMHg5NCwgMHgxZCwgMHgwOCwgMHgwMCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDFkLCAweDQ3LAorCTB4MTksIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsIDB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgzNSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweGJhLCAweDhkLCAweGEwLCAweDQzLCAweDg1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZiwgMHhmMCwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYzLCAweDllLCAweDA2LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweGYzLAorCTB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4YzgsIDB4OGQsIDB4YTIsIDB4NDEsIDB4OWUsIDB4MDYsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgyMiwgMHg0NCwgMHg4MywgMHg3MCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYwLCAweDI0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MzYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsCisJMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg4YiwgMHgxZiwgMHhmMCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDg3LCAweDk4LCAweDAwLCAweDQ4LCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGE3LCAweDg4LCAweDIzLCAweDQxLAorCTB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTcsIDB4ODgsIDB4MDAsIDB4NDcsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MiwKKwkweGU2LCAweDZkLCAweDAwLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLCAweDg1LCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDAwLCAweGJlLCAweDA2LCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NGUsIDB4OTcsIDB4MDAsIDB4NDcsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDJkLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgxNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGE1LCAweDhjLCAweGEyLCAweDQwLCAweDhmLCAweDdjLCAweDAwLCAweDAwLCAweGRiLCAweDhkLCAweDIyLCAweDQ3LAorCTB4OGYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDgsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhhNSwgMHg4YywgMHgwMCwgMHg0OCwgMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0NiwKKwkweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDVkLCAweDhlLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsIDB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MmQsIDB4NWQsCisJMHgwNSwgMHhiNCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZCwgMHhmMywgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDhlLCAweGIwLCAweDAxLCAweDAwLCAweGYwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4N2UsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1YywgMHgwMCwgMHgzZCwgMHg0MywgMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDRhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4NiwgMHhkYywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDhjLCAweDkzLCAweDAwLCAweDRhLCAweGYwLCAweDMxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MmYsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhlZiwgMHg4ZCwgMHhhMiwgMHg1MCwgMHg4ZiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4N2UsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGY0LCAweDhkLCAweGEwLCAweDQzLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweDQwLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MjAsIDB4NDcsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgyMiwgMHg0NywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDBjLCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDhmLCAweDg0LCAweDAxLCAweDAwLAorCTB4MDksIDB4OGUsIDB4MjIsIDB4NDcsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsCisJMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwOSwgMHg4ZSwgMHgxZiwgMHhmMCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDIsIDB4OGUsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGZmLCAweDhkLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4OGUsIDB4NDIsIDB4NDAsCisJMHgwNSwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5MywgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFhLCAweDVkLCAweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDA3LCAweDhlLCAweDIzLCAweDQxLAorCTB4MGQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGQsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg4NywgMHg5OCwgMHgwMCwgMHgwNSwgMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHhhNywgMHg4OCwgMHgwMCwgMHg0OCwKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDIyLCAweDQwLCAweDhmLCAweDZjLCAweDAwLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwYywgMHg3ZSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGEyLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhhNiwgMHgwMCwgMHgyZCwgMHg0OSwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDgwLCAweGY0LCAweDAxLCAweDAwLCAweGI4LCAweDAwLCAweDJkLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MiwgMHhmOCwgMHgwMSwgMHgwMCwgMHgxOSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDFhLCAweDhlLCAweGEwLCAweDQwLCAweDgyLCAweDZjLCAweDAwLCAweDAwLCAweDJjLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MWEsIDB4OGUsIDB4YTMsIDB4NDAsIDB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxYywgMHg4ZSwgMHgyMCwgMHg0YywKKwkweDg1LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg1LCAweGMwLCAweDAxLCAweDAwLAorCTB4ODYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTIsIDB4MDAsIDB4MjAsIDB4NDIsCisJMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA5LCAweDk3LCAweDAwLCAweDUwLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHhmMCwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDc4LCAweDk4LCAweDAwLCAweDQwLCAweDg3LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmYsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEzLCAweGYwLAorCTB4ODAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDIyLCAweDQ2LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjIsIDB4ZjIsCisJMHg5NiwgMHhjYywgMHgwMSwgMHgwMCwgMHhkZCwgMHg4YiwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDk3LCAweDAwLCAweDRhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDU1LCAweDk3LCAweDAwLCAweDQ2LAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgyMiwgMHg0OSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg4NiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYyLCAweGYyLCAweDgwLCAweGNjLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OGIsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NGEsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1NSwgMHg5NywgMHgwMCwgMHg0NywgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJiLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4YiwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDksIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDYyLCAweGYyLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDQ2LCAweDhlLCAweDkwLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4NjIsIDB4NDAsIDB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhhNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg4YiwgMHgyMiwgMHg0MCwKKwkweGU1LCAweDZkLCAweDAwLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQxLCAweGU1LCAweGMxLCAweDAwLCAweDAwLAorCTB4MDksIDB4OTcsIDB4MDAsIDB4NGQsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDk2LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDc4LCAweDk4LCAweDAwLCAweDQwLCAweDg3LCAweDMwLCAweDAxLCAweDAwLAorCTB4OGIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTYsIDB4OGUsIDB4ODAsIDB4ZjMsCisJMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OGIsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhmMywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDM0LCAweDAwLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhiOSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDZlLCAweDhlLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg1MSwgMHg4MywgMHhkMCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweGYzLCAweDg0LCAweGNjLCAweDAxLCAweDAwLAorCTB4NjYsIDB4OGUsIDB4OWYsIDB4NDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjMsIDB4NDIsCisJMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweDY4LCAweDhlLCAweDM3LCAweDVjLAorCTB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg2OSwgMHg4ZSwgMHhhOCwgMHg0YiwgMHgxOSwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDZiLCAweDhlLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZWQsIDB4ODcsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGFjLCAweDAwLCAweDJkLCAweGYwLCAweDMwLCAweGIwLCAweDAxLCAweDAwLCAweDM1LCAweDAwLCAweDJkLCAweGYwLAorCTB4MjgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MmQsIDB4ZjMsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHhmMywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZSwgMHg0MywKKwkweDg1LCAweGUwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MjAsIDB4MDAsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzYywgMHgwMCwgMHgyMCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MmIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTcsIDB4MDAsIDB4NDAsIDB4MGQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3ZiwgMHg4ZSwgMHhhMCwgMHgxNCwKKwkweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MGUsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHhmOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZCwgMHgxNCwgMHhmOCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDUwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDg4LCAweDhlLCAweDIyLCAweDRhLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NDMsIDB4ODYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzMCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhjOCwgMHgwMSwgMHgwMCwgMHg4OCwgMHg4ZSwgMHhhNCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NmUsIDB4NDMsIDB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YTgsIDB4OTcsIDB4MDAsIDB4MzAsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4YywgMHg4ZSwgMHhhMCwgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDkzLCAweDhlLCAweDIyLCAweDRhLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhjYywgMHgwMCwgMHgyZCwgMHhhYiwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDkyLCAweDhlLCAweGEwLCAweGYwLCAweDE2LCAweDQ0LCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDQxLCAweDMxLCAweGMwLCAweDAxLCAweDAwLCAweGJjLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4OTksIDB4OGUsIDB4MDYsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgyMCwgMHhmMiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwOSwgMHg0NiwKKwkweDE5LCAweDEwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MmQsIDB4NTAsCisJMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg4ZSwgMHg5MCwgMHg0YywgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweGEwLCAweDhlLCAweDIyLCAweDQzLAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAxLCAweDJlLCAweGYyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4NjIsIDB4NDAsIDB4N2UsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsCisJMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweDhkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGFhLCAweDhlLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZSwgMHg4ZSwgMHg0NSwgMHg0OCwgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDUwLCAweDAwLCAweDA4LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGFmLCAweDhlLCAweGE4LCAweDQwLAorCTB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MzUsIDB4MDAsIDB4MWQsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHg2MywgMHhmMywgMHg4NCwgMHhjOCwgMHgwMSwgMHgwMCwgMHhiNSwgMHg4ZSwgMHhhMCwgMHg0MywKKwkweDg1LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjMsCisJMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywgMHg4MiwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDQxLCAweDllLCAweDA2LCAweDAwLCAweDAwLCAweDhiLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDUsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg1ZiwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGRkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4OGYsIDB4OTUsIDB4MDAsIDB4ZjMsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1ZCwgMHg4ZSwgMHgyMiwgMHg0YSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGNlLCAweDhjLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4OGYsIDB4OTUsIDB4MDAsIDB4ZjMsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg5NywgMHg4YywgMHgyMiwgMHg0YSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjZSwgMHg4YywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywgMHgwYywgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGM4LCAweDhjLCAweDIyLCAweDA2LAorCTB4OTAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YWEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1YywgMHgwMCwgMHgzZCwgMHg0MywgMHgxMywgMHhlMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQwLCAweDk1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MmYsIDB4ZjAsIDB4MjQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MmEsIDB4NTAsCisJMHhlNywgMHhkMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGQ1LCAweDhlLCAweGEwLCAweDQzLCAweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODksIDB4OTMsIDB4MDAsIDB4MTAsIDB4ODYsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNywgMHg4ZSwgMHg0MiwgMHgwNSwKKwkweDQ4LCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLAorCTB4YzgsIDB4OGMsIDB4MWEsIDB4NWQsIDB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsCisJMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgyZCwgMHgxMCwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDVjLCAweDAwLCAweDNkLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLCAweGE4LCAweDAwLCAweDJkLCAweGYwLAorCTB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NGEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgzNSwgMHgwMCwgMHgyZiwgMHhmMCwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2YiwgMHhmYiwKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweGU0LCAweDhlLCAweGEwLCAweDQzLCAweDg1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MzUsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywgMHgxMiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGU3LCAweDhlLCAweGEwLCAweDQzLCAweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg4YywgMHg5MywgMHgwMCwgMHg0YSwgMHhmMCwgMHgzMSwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGVhLCAweDhlLCAweDQyLCAweDA1LCAweDQ4LCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NWQsCisJMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYzLCAweDllLCAweDA2LCAweDAwLCAweDAwLCAweDExLCAweDAwLCAweDYzLCAweGYzLAorCTB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4NDEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiZiwgMHg4ZCwgMHgyMiwgMHg0MSwgMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzNSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4OGQsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGY3LCAweDhlLCAweDY1LCAweGYyLCAweDEyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDNmLCAweDQyLAorCTB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4OGUsIDB4MjIsIDB4NDcsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgyNywgMHg4MywgMHg3NSwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhmNiwgMHg4ZSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweGU3LCAweDkxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NzUsIDB4NDIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4NzUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZSwgMHg4ZSwgMHhhOCwgMHhiMSwgMHgwYywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGEzLCAweDk2LCAweDAwLCAweDEwLCAweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmUsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHhhOCwgMHgzZCwgMHg0NiwgMHgwZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDA4LCAweDhmLCAweDIyLCAweDQwLCAweGUxLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDIsIDB4NDEsIDB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4OGYsIDB4MDAsIDB4NTAsCisJMHg0MywgMHhjMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4ZiwgMHgyMiwgMHg0YiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYyLCAweDRiLCAweDEyLCAweDk0LCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA3LAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg5NCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0YSwKKwkweDQ0LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NWUsIDB4MDEsIDB4MDAsIDB4NGIsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MDAsIDB4MDUsCisJMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDEyLCAweDhmLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwOSwKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweGE4LCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDFhLCAweDhmLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksIDB4M2YsIDB4NDIsIDB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgxZSwgMHg4ZiwgMHg2NSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzZiwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NzUsIDB4NTUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDI3LCAweDhmLCAweDIyLCAweDRiLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjUsIDB4OGYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NywgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NiwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDJkLCAweDhmLCAweDIwLCAweDA5LCAweDk2LCAweDZjLCAweDAwLCAweDAwLAorCTB4MmQsIDB4OGYsIDB4MWYsIDB4MDksIDB4OTYsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MjcsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA5LCAweDk3LCAweDAwLCAweDU3LCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGM2LCAweDhiLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgyZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNCwgMHg4ZiwgMHgyMiwgMHhmMywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDQyLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NTIsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgwMCwgMHg0MiwgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDNhLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NTIsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjNiwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDA1LCAweGIwLCAweDAxLCAweDAwLCAweGZmLCAweDk1LCAweDAwLCAweDQwLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4YzYsIDB4OGIsIDB4MjIsIDB4NDAsIDB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDQyLCAweDhmLCAweGEyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDlmLCAweDk1LCAweDAwLCAweDUyLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyNSwgMHg5OCwgMHgwMCwgMHg0MCwgMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDRlLCAweDhmLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDRlLCAweDhmLCAweGEyLCAweDE2LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwOSwgMHg5NywgMHgwMCwgMHgzYSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGVkLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MjMsIDB4MDAsIDB4YTYsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NTEsIDB4OGYsIDB4ODMsIDB4MWUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweGMwLCAweDAxLCAweDAwLCAweDU4LCAweDk3LCAweDAwLCAweDA4LAorCTB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTUsIDB4OGYsIDB4MDAsIDB4NWUsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHg3OSwgMHg5NywgMHgwMCwgMHg0MywgMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDhkLCAweDMwLCAweDAxLCAweDAwLCAweDYwLCAweDk3LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NWQsIDB4OGYsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDVhLCAweDhmLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmYSwgMHg5NiwgMHgwMCwgMHg1ZSwgMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDYxLCAweDhmLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4OGIsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgzNiwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDRhLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg2OSwgMHg4ZiwgMHgyMiwgMHg0MywgMHgzZCwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDNkLCAweDgwLCAweDAxLCAweDAwLAorCTB4NmEsIDB4OGYsIDB4MDAsIDB4NDIsIDB4MTksIDB4OTAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGYsCisJMHgyYiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDE0LCAweDAwLCAweDJkLCAweDQ1LCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYwLAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTAsIDB4MDEsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkYywgMHg4ZiwgMHg4MywgMHgxZSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkYywgMHg4ZiwgMHgwMCwgMHg0NCwKKwkweDE5LCAweDkwLCAweDAwLCAweDAwLCAweDJmLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDcsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg4NCwgMHg4ZiwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDg0LCAweDhmLCAweGEyLCAweDE2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDgwLCAweDhmLCAweGEyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsIDB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHg0MSwKKwkweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDdkLCAweDhmLCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg5NSwgMHgwMCwgMHgxNSwgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGE2LCAweDk1LCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLCAweGVkLCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzYsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwOSwgMHg5NywgMHgwMCwgMHgzYSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGVkLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ODcsIDB4OGYsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzYsIDB4OTYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg4OCwgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGZmLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGMwLCAweDhmLCAweDIyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHg4ZiwgMHhhMCwgMHgwYiwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0NCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDAwLCAweDdlLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwgMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5MywgMHg4ZiwgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZSwgMHgwYiwgMHg5OSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDZhLCAweDUwLCAweDk5LCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDBiLAorCTB4OTksIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4NjIsIDB4MDEsIDB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDIyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MjMsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2YsIDB4NDEsCisJMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDBiLCAweDAwLCAweDAwLCAweGYyLCAweDk4LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLAorCTB4OTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDAsIDB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgxMSwKKwkweDhhLCAweDMwLCAweDAxLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDExLCAweGU0LCAweGY1LCAweDAxLCAweDAwLAorCTB4MmYsIDB4MDAsIDB4MjAsIDB4NDcsIDB4ZTcsIDB4YjUsIDB4MDEsIDB4MDAsIDB4YWIsIDB4OGYsIDB4MjMsIDB4MGIsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhlNSwgMHg5MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGMxLCAweDAwLCAweDAwLCAweDAxLAorCTB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDAyLCAweGQwLCAweDAxLCAweDAwLCAweDU4LCAweDk3LCAweDAwLCAweDAwLCAweDJhLCAweDQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiMiwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDA1LAorCTB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHhiZSwgMHg4ZiwgMHgyNiwgMHgxMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5OCwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDk3LCAweDAwLCAweDRjLCAweDAyLCAweDMwLCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzgsIDB4OGYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgyZiwgMHgwOCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweGY0LCAweGM5LCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDAxLCAweGU0LCAweGNkLCAweDAxLCAweDAwLAorCTB4YzEsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHgwYiwgMHhlNSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweGMwLCAweDAwLCAweDAwLCAweDQwLCAweDAzLCAweDk4LCAweDAxLCAweDAwLCAweDU4LCAweDk3LCAweDAwLCAweDAwLAorCTB4MmEsIDB4NDAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4OGYsIDB4MjIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhhYywgMHgwMCwgMHgyZiwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweGUwLCAweGMxLCAweDAxLCAweDAwLCAweGIwLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4Y2UsIDB4OGYsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDAsIDB4MDAsIDB4OTgsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4ZCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MywgMHgwMCwgMHhhNiwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDk3LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZDYsIDB4OGYsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGQzLCAweDhmLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OTYsIDB4MDAsIDB4NWUsCisJMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhkOSwgMHg4ZiwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGM2LCAweDhiLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhkYywgMHg4ZiwgMHgwMCwgMHg0YSwgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0ZiwKKwkweDJiLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgyZCwgMHgxNSwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDI4LCAweDAwLCAweDJkLCAweGYwLCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDJkLCAweGYwLAorCTB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MmYsIDB4ZjIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhlMCwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MWYsIDB4MTUsIDB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDk2LCAweDAwLCAweDQwLCAweDM1LCAweGIwLCAweDAwLCAweDAwLCAweDJmLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTAsIDB4YTIsIDB4NDUsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgyMCwgMHgwYiwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDIwLCAweDEzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjIsIDB4MDAsIDB4MjAsIDB4MDYsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmEsIDB4OGYsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGZhLCAweDhmLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhmNiwgMHg4ZiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhmMCwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDFmLCAweDkwLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MGQsIDB4OTAsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg2ZCwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg1NCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFhLCAweDkwLCAweDIyLCAweDRiLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMywgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDA5LCAweDkwLCAweDIyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwYSwgMHg5MCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBjLCAweDkwLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsCisJMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2ZCwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDQ5LCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDE2LCAweDkwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZTEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDkwLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDgwLCAweDk3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDFiLCAweDkwLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHg5MCwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGUxLCAweDk0LCAweDAwLCAweDQwLCAweDExLCAweDMwLCAweDAxLCAweDAwLCAweDIzLCAweDkwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyNSwgMHg5MCwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweGNkLCAweDhiLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4ZjAsCisJMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDkwLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgyYiwgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzMsIDB4OTAsIDB4MjIsIDB4NDEsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhlMSwgMHg5NCwgMHgwMCwgMHg0MCwgMHgxMSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDM0LCAweDkwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MmQsIDB4MGEsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4M2EsIDB4OTAsIDB4MDMsIDB4MWUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4M2IsIDB4OTAsIDB4MDAsIDB4NDEsCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDI2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg5MCwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDQzLCAweDkwLCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ODAsIDB4OTcsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHhhMiwgMHg0YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGNkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LAorCTB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsIDB4YmEsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0YiwgMHg5MCwgMHg5YywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0YSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGNjLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MmYsIDB4OTgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTcsIDB4MDAsIDB4NDAsCisJMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAwLCAweDJkLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDA1LCAweDk4LCAweDAwLCAweGYwLAorCTB4ODQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhjZCwgMHg4YiwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweGNkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTcsIDB4OTAsIDB4MjIsIDB4NDAsCisJMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDYyLCAweDkwLCAweGEyLCAweDQwLCAweGU1LCAweDZkLCAweDAwLCAweDAwLCAweGVjLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MjAsIDB4MGIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwMCwgMHgyMCwgMHgxMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgyMCwgMHgwNiwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4ZjAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyMCwgMHgwYSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGNkLCAweDhiLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDgwLCAweDk3LCAweDAwLCAweDQwLAorCTB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhlYywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg5NywgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDcwLCAweDkwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4OTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4MTUsCisJMHg5OCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg3MCwgMHg5MCwgMHgyMCwgMHgwMSwgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDcwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDQ2LAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NmQsIDB4OTAsIDB4YTgsIDB4MDAsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZiwgMHgwMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDE0LCAweDAwLCAweDJmLCAweDE1LAorCTB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4ZjAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMSwKKwkweDgwLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4ZTYsIDB4OGYsIDB4MjIsIDB4MDksIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlNiwgMHg4ZiwgMHgwMCwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwgMHgyNiwgMHg5NiwgMHgwMCwgMHhmMCwKKwkweDg0LCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OGIsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDJlLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYzLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhjNiwgMHg4YiwgMHgwMCwgMHg0MiwgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNiwgMHg5NiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU1LCAweDk3LCAweDAwLCAweDQ4LCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4YSwgMHg5MCwgMHhhOCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDkwLCAweDkwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4OGYsIDB4OTAsIDB4MDAsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDE0LCAweDAwLCAweDJkLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsCisJMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDI2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhhZCwgMHg5MCwgMHgwMCwgMHgwOSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwKKwkweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweGM2LCAweDhiLCAweDg3LCAweDQyLCAweDE5LCAweDEwLCAweDAwLCAweDAwLAorCTB4OGIsIDB4MDAsIDB4MmYsIDB4NDcsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHhlNywgMHg5MSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDJmLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGFiLCAweDkwLCAweDIyLCAweDQ3LAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgxNywgMHg5NCwgMHgwMCwgMHg0MCwgMHhlNywgMHgzMSwgMHgwMSwgMHgwMCwgMHhhYiwgMHg5MCwgMHgyMiwgMHgwMCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGE2LCAweDkwLCAweGEyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YWIsIDB4OTAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDJkLCAweGYyLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDlmLCAweDk1LCAweDAwLCAweGYyLAorCTB4MDIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhYywgMHg5MCwgMHgwMCwgMHg0MCwKKwkweDAxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4YjIsIDB4OTAsIDB4MjIsIDB4MDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjEsIDB4OTAsIDB4YTIsIDB4NDIsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhmZiwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGIyLCAweDkwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM2LCAweDk2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NTEsIDB4OTEsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGJhLCAweDkwLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiNywgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDUxLCAweDkxLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhjMSwgMHg5MCwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjMSwgMHg5MCwgMHhhMiwgMHgxNiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDRkLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsIDB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3NCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhkMiwgMHg5MCwgMHgyMiwgMHg0MiwgMHg5NiwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDY0LCAweDAwLCAweDY4LCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDA1LAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjZSwgMHg5MCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGQzLCAweDkwLCAweGE4LCAweDVjLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkNywgMHg5MCwgMHg2NSwgMHhmMiwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwKKwkweDEzLCAweGYwLCAweDAxLCAweDAwLCAweGRjLCAweDkwLCAweDIyLCAweDQ3LCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MjcsIDB4ODMsIDB4NzUsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDYsIDB4OTAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDc1LCAweDA5LCAweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlNCwgMHg5MCwgMHhhOCwgMHg0MCwgMHhlMSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDNmLCAweDQyLAorCTB4MTMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OTAsIDB4NjUsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgzZiwgMHgwMCwgMHgwMCwgMHhmMywgMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDc1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4ZjAsIDB4OTAsIDB4MjIsIDB4NGIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGVlLCAweDkwLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjIsIDB4MDAsIDB4MGIsIDB4MTYsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHgyZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NywKKwkweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDE3LCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MGQsIDB4OTEsIDB4MjIsIDB4MDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTYsIDB4MDAsIDB4NWYsCisJMHgwMSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhmNCwgMHg5MCwgMHgyMiwgMHg0MCwgMHg5NSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQwLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmUsIDB4OTAsIDB4YTgsIDB4MDAsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMCwgMHgzMSwgMHgwMywgMHg2YywgMHgwMCwgMHgwMCwgMHg5ZiwgMHg5NSwgMHgwMCwgMHg1MiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZjQsIDB4OTAsIDB4MjIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAxLCAweDgwLCAweDAxLCAweDAwLCAweGE2LCAweDk1LCAweDAwLCAweDRiLAorCTB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg2MCwgMHg5NywgMHgwMCwgMHg0MCwgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgxNywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweDBjLCAweDk2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NGMsIDB4OTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4NGQsCisJMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHg5NywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDEwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGFiLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmEsIDB4OTYsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwNywKKwkweDE2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MTksIDB4OTEsIDB4MzAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MGIsCisJMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHhlNiwgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGI3LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDBiLAorCTB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTYsIDB4ODEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgxMCwgMHgwZiwgMHg5NCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg5MywgMHgwNCwgMHgwMCwgMHg1ZiwKKwkweDk1LCAweDA0LCAweDAxLCAweDAwLCAweDcwLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MjcsIDB4OTEsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MjMsIDB4OTEsIDB4NDYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyNiwgMHg5MSwgMHhhMiwgMHg0MCwgMHgzMSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDFlLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDQxLAorCTB4MzEsIDB4ZDMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDBmLCAweGIwLCAweDAxLCAweDAwLCAweGE1LCAweDk0LCAweDAwLCAweDQxLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzYSwgMHg5MSwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDNhLCAweDkxLCAweGEyLCAweDE2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweDAyLAorCTB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MDMsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgzMiwgMHg5MSwgMHgzNywgMHg1YywKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MzcsIDB4OTEsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHgzMywgMHg5MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDM3LCAweDkxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg3NCwgMHgwMCwgMHgyMiwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDU1LCAweDk3LCAweDAwLCAweDRhLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTYsIDB4OTYsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhjMSwgMHg5MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDJmLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4NGUsIDB4OTEsIDB4MjIsIDB4NDcsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgxNywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweGU3LCAweDMxLCAweDAxLCAweDAwLCAweDRlLCAweDkxLCAweDIyLCAweDAwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4NDksIDB4OTEsIDB4YTIsIDB4NDAsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0ZSwgMHg5MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDMyLCAweDAwLCAweDJkLCAweGYyLAorCTB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWYsIDB4OTUsIDB4MDAsIDB4ZjIsIDB4MDIsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhhNiwgMHg5NSwgMHgwMCwgMHg0YiwgMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDU1LCAweDk3LCAweDAwLCAweDQ4LCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTYsIDB4OTYsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDU1LCAweDkxLCAweDg3LCAweDQyLCAweDE5LCAweDEwLCAweDAwLCAweDAwLCAweDhiLCAweDAwLCAweDJmLCAweDQ3LAorCTB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg5NywgMHgwMCwgMHg0MiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDE2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweGYwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGJhLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2UsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhjNCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDA1LCAweDk4LCAweDAwLCAweGYwLCAweDg0LCAweDMwLCAweDAxLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NDUsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA5LCAweDk3LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGM2LCAweDhiLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhZSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2ZCwgMHg5MSwgMHhhMiwgMHgwOCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDZkLCAweDkxLCAweGEyLCAweDE2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDksIDB4OTcsIDB4MDAsIDB4NDcsIDB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDEwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweGUxLCAweDAwLCAweGE2LAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwNywKKwkweDg0LCAweDk0LCAweDAxLCAweDAwLCAweGZhLCAweDk2LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLAorCTB4YzYsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MSwgMHhlNywgMHg0MSwgMHgwMSwgMHgwMCwKKwkweGNkLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LAorCTB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhlYywgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEzLCAweDBhLCAweDBjLCAweDZjLCAweDAwLCAweDAwLAorCTB4OTcsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgyYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDBhLAorCTB4MmMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHhmMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg5YiwgMHg5NywgMHgwMCwgMHgwNiwKKwkweDA0LCAweDMwLCAweDAxLCAweDAwLCAweDhhLCAweDkxLCAweGEyLCAweDQ4LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4ODgsIDB4OTEsIDB4ODQsIDB4NDgsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg4YSwgMHg5MSwgMHgwMCwgMHgwYSwgMHhlMCwgMHhjMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDk4LCAweDkzLCAweDAwLCAweDAxLAorCTB4OGMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg5MSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5MSwgMHgyMiwgMHgwMiwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDczLCAweDk2LCAweDAwLCAweDQ1LCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDgzLCAweDkxLCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg5NCwgMHg5MSwgMHhhOCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4ODMsIDB4OTEsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyZCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTYsIDB4MDAsIDB4NDEsIDB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDllLCAweDkxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhNCwgMHg5MSwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDk3LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLCAweGE4LCAweDkxLCAweDIyLCAweDQ0LAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhhOCwgMHg5MSwgMHhhMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDE5LCAweDgwLCAweDAxLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDhjLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjcsIDB4OTEsIDB4MjIsIDB4NGEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZiwgMHg5MSwgMHhhMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGMzLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJmLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyZCwgMHgwMCwgMHgyZCwgMHgwOCwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiMywgMHg5MSwgMHgyMiwgMHg0MiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDM2LCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YjQsIDB4OTEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyYSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDJhLCAweDE1LCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweGM2LCAweDhiLCAweDAwLCAweDE2LAorCTB4ZTQsIDB4YjEsIDB4MDAsIDB4MDAsIDB4Y2QsIDB4OTEsIDB4MjIsIDB4MTYsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDJhLCAweGIwLCAweDAxLCAweDAwLCAweDI1LCAweDk4LCAweDAwLCAweDQwLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4YmQsIDB4OTEsIDB4YTIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4Y2UsIDB4OTEsIDB4MjIsIDB4NDAsCisJMHgyZCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDQ0LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGFjLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmIsIDB4MDEsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgyYiwgMHgwMCwgMHhhNiwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweGUwLCAweGQxLCAweDAxLCAweDAwLCAweDU4LCAweDk3LCAweDAwLCAweDA4LCAweDgwLCAweDMwLCAweDAxLCAweDAwLAorCTB4YzYsIDB4OTEsIDB4MDAsIDB4NWUsIDB4MTcsIDB4OTAsIDB4MDAsIDB4MDAsIDB4NzksIDB4OTcsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGM3LCAweDkxLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2MCwgMHg5NywgMHgwMCwgMHgwNywKKwkweDE2LCAweDE0LCAweDAxLCAweDAwLCAweGZhLCAweDk2LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhjZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDE1LAorCTB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4OTEsIDB4MjAsIDB4MTYsIDB4MWEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg3MCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDIyLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGQ5LCAweDkxLCAweGE4LCAweDQ2LAorCTB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDJhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MmMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4MTYsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweGYwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGFjLCAweDAwLCAweDJmLCAweDQwLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZTYsIDB4OTEsIDB4ODQsIDB4NDUsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHhlNywgMHg5MSwgMHgwMCwgMHgwYSwgMHhlMCwgMHhjMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweGI4LCAweDk2LCAweDAwLCAweDQwLCAweDM1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTksCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhmMCwgMHg5MSwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZWMsIDB4OTEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDkyLCAweGEyLCAweDAyLCAweDFhLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDUsIDB4OTIsIDB4MjIsIDB4NDAsIDB4MmQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsIDB4ZTAsIDB4OGQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGY4LCAweDkxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweGYwLCAweDEwLCAweGM4LCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4MWIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4OTIsIDB4MDAsIDB4NWMsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg1ZiwgMHgxYiwgMHg3YywgMHgwMCwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwKKwkweDk4LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDk4LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4MGIsIDB4OTksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgyMywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEzLCAweDQzLCAweDIzLCAweDZjLCAweDAwLCAweDAwLCAweGUxLCAweDk0LCAweDAwLCAweDQwLAorCTB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYiwgMHg5MiwgMHgyMywgMHgwZCwgMHgyYywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDEzLCAweDkyLCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4NzAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTMsIDB4OTIsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDBmLCAweDkyLCAweGE4LCAweDQ2LAorCTB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyZCwgMHg0MCwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTYsIDB4MDAsIDB4NDEsCisJMHg4NywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDE4LCAweDkyLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxZSwgMHg5MiwgMHgyMiwgMHgwOSwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDgwLCAweDk3LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLAorCTB4MjIsIDB4OTIsIDB4MjIsIDB4NDQsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NGYsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg5MiwgMHhhMiwgMHg0NywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDE5LCAweDgwLCAweDAxLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDA4LAorCTB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgzOCwgMHg5MiwgMHgyMiwgMHg0YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgyOSwgMHg5MiwgMHhhMiwgMHgxNiwKKwkweDAyLCAweDMwLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyZCwgMHgwOCwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDM0LCAweDkyLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDJkLCAweDkyLCAweGEyLCAweGYzLAorCTB4ODQsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTUsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4NSwgMHhkMCwgMHgwMSwgMHgwMCwgMHhkNCwgMHgwMCwgMHgzZSwgMHg0MSwKKwkweDg1LCAweGUwLCAweDAxLCAweDAwLCAweDMxLCAweDkyLCAweDIyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MTEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHhlNCwgMHhmNSwgMHgwMSwgMHgwMCwgMHgzNiwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDM1LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmEsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgzMiwgMHgwMCwgMHgyYSwgMHgxNSwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgwMCwgMHgxNiwKKwkweGU0LCAweGIxLCAweDAwLCAweDAwLCAweDNiLCAweDkyLCAweGEyLCAweDE2LCAweDAyLCAweDMwLCAweDAwLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OTQsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyZCwgMHgwOCwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDRlLCAweDkyLCAweDIyLCAweDQ3LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEwLCAweDkxLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTIsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg0MSwgMHg5MiwgMHhhMiwgMHhmMywgMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg1LCAweGQwLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4MDAsIDB4M2UsIDB4NDEsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4NDUsIDB4OTIsIDB4MjIsIDB4NDAsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YSwgMHgxMSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDBiLCAweDAwLCAweDAwLCAweDA4LCAweGU0LCAweGY1LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDgsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg1OCwgMHgwMSwgMHgyZCwgMHgwMCwgMHgyYSwgMHhkMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMSwgMHgyZCwgMHhmMCwKKwkweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDJjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjcsIDB4NDAsCisJMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwgMHg4NCwgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEzLCAweDkxLCAweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDI1LCAweDk4LCAweDAwLCAweDQxLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NTcsIDB4OTIsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NywgMHg5MiwgMHhhMiwgMHgxNiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDU1LCAweDkyLCAweDIzLCAweDBkLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsCisJMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHg5MiwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQ0LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmYsIDB4MDEsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiMCwgMHgwMCwgMHgyYiwgMHgwMSwgMHhlMCwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgyYiwgMHgwMCwgMHhhNiwKKwkweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4NmEsIDB4OTIsIDB4MjMsIDB4MGQsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2MywgMHg5MiwgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgyMiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDIzLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmQsIDB4OTIsIDB4MjMsIDB4MGQsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDcyLCAweDkyLCAweDIyLCAweDQwLCAweDFiLCAweDZjLCAweDAwLCAweDAwLAorCTB4NTgsIDB4OTcsIDB4MDAsIDB4MDEsIDB4ODQsIDB4NTAsIDB4MDEsIDB4MDAsIDB4N2IsIDB4OTIsIDB4MjIsIDB4NDAsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDgwLCAweDAwLCAweDEwLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLAorCTB4NDMsIDB4ODEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTIsIDB4YTgsIDB4MTEsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgyMywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDhhLCAweDkyLCAweDAwLCAweDVlLCAweDE3LCAweDkwLCAweDAwLCAweDAwLCAweDdlLCAweDkyLCAweDIzLCAweDBkLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4NCwgMHhkMCwgMHgwMSwgMHgwMCwgMHg4MywgMHg5MiwgMHgyMiwgMHg0MCwKKwkweDFiLCAweDZjLCAweDAwLCAweDAwLCAweDc5LCAweDk3LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLAorCTB4OGEsIDB4OTIsIDB4MjIsIDB4NDAsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgxMiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDQzLCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhMSwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDg4LCAweDkyLCAweGE4LCAweDExLCAweGUwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg5MiwgMHhhOCwgMHgwYSwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDA1LAorCTB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsIDB4OTIsIDB4OTIsIDB4MjMsIDB4MGQsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHgxMSwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDYwLCAweDk3LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLAorCTB4ZmEsIDB4OTYsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhjZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDhlLCAweGIwLCAweDAxLCAweDAwLCAweGU2LCAweDk1LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MGMsIDB4NDcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyNiwgMHg5NiwgMHgwMCwgMHg0MSwgMHg4NywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDk3LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDkxLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhhOCwgMHg5MiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YTQsIDB4OTIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGFhLCAweDkyLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDgwLCAweDk3LCAweDAwLCAweDQwLAorCTB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MWIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxYSwgMHhkMCwgMHgwMSwgMHgwMCwgMHhiMSwgMHg5MiwgMHhhMiwgMHg0MSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDI1LCAweDk4LCAweDAwLCAweDQwLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OTIsIDB4MjcsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiZCwgMHg5MSwgMHgwMCwgMHgwMCwgMHgyYSwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDI1LCAweDk4LCAweDAwLCAweDQxLCAweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YjUsIDB4OTIsIDB4MjcsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NywgMHg5MiwgMHgwMCwgMHgwMCwgMHgyYSwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweGI4LCAweDkyLCAweDIzLCAweDBkLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsCisJMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDhiLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDNhLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhiZiwgMHg5MiwgMHgwMCwgMHg0YSwKKwkweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NGYsIDB4MmIsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDQsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGY5LCAweDk0LCAweDAwLCAweDAwLCAweDEwLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LAorCTB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5YiwgMHg5NywgMHgwMCwgMHgwNiwgMHgwNCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg5MiwgMHhhMiwgMHg0NCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MmMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5MywgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGQzLCAweDkyLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg5MiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkYywgMHg5MiwgMHgyMiwgMHgwMiwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDczLCAweDk2LCAweDAwLCAweDQ1LCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweGM1LCAweDkyLCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5MiwgMHhhOCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4YzUsIDB4OTIsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MmQsIDB4NDAsCisJMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLCAweDI2LCAweDk2LCAweDAwLCAweDQxLAorCTB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhlMSwgMHg5MiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTcsIDB4OTIsIDB4MjIsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5NywgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGVhLCAweDkyLCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDgwLCAweDk3LCAweDAwLCAweDRmLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGY5LCAweDkyLCAweDIyLCAweDRhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjEsIDB4OTIsIDB4YTIsIDB4MTYsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJkLCAweDAwLCAweDJkLCAweDA4LAorCTB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjUsIDB4OTIsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgzNiwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmNiwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmEsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4MmEsIDB4MTUsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4YiwgMHgwMCwgMHgxNiwgMHhlNCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGI4LCAweDkxLCAweGEyLCAweDE2LCAweDAyLCAweDMwLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjZCwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDRmLCAweDJiLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDUsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGY5LCAweDk0LCAweDAwLCAweDRhLCAweDFmLCAweDEwLCAweDAxLCAweDAwLCAweGQwLCAweDkxLCAweDAwLCAweDEwLAorCTB4MzIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHg5MywgMHhhMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBiLCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4OWYsIDB4OTUsIDB4MDAsIDB4MTUsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OTUsIDB4MDAsIDB4NGIsCisJMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBkLCAweDkzLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA5LCAweDk3LCAweDAwLCAweDNhLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTcsIDB4MDAsIDB4NDUsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjNiwgMHg4YiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg2MiwgMHg5MCwgMHgwMCwgMHg0NSwKKwkweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NDcsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMywgMHgwYSwgMHgwYywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDk3LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQwLCAweDkxLCAweDAwLCAweDAxLAorCTB4MmMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZSwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDI2LCAweDkzLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjYsIDB4OTMsIDB4YTIsIDB4MTYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweDFlLCAweDkzLCAweDM3LCAweDVjLAorCTB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMywgMHg5MywgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywKKwkweDc3LCAweDdkLCAweDAwLCAweDAwLCAweDFmLCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjMsIDB4OTMsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHg4NywgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDU4LCAweDAxLCAweDIwLCAweDA4LCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDYwLCAweDAxLCAweDIwLCAweDE2LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZWMsIDB4OTUsIDB4MDAsIDB4NDcsIDB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMywgMHgwYSwgMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHg5NywgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQwLCAweDkxLCAweDAwLCAweDAxLCAweDJjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZSwgMHg5NCwgMHgwMCwgMHg0NywgMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwKKwkweDNkLCAweDkzLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDNkLCAweDkzLCAweGEyLCAweDE2LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzksIDB4OTMsIDB4YTIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMiwgMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHhhMCwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4OWYsIDB4OTUsIDB4MDAsIDB4MTUsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhhNiwgMHg5NSwgMHgwMCwgMHg0YiwgMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGVkLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM2LCAweDk2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwOSwgMHg5NywgMHgwMCwgMHgzYSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDU4LCAweDAxLCAweDIwLCAweDA4LCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NjAsIDB4MDEsIDB4MjAsIDB4MTYsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGYsCisJMHgyYiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDQ1LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGY5LCAweDk0LCAweDAwLCAweDEwLAorCTB4MzIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4OTEsIDB4MDAsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhhZSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg1MiwgMHg5MywgMHhhMiwgMHgwOCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDUyLCAweDkzLCAweGEyLCAweDE2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsIDB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDRhLCAweDkzLCAweDM3LCAweDVjLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGYsIDB4OTMsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4NGYsIDB4OTMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MTcsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDI2LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlNiwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDBjLCAweDQ3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTYsIDB4MDAsIDB4NDEsCisJMHg4NywgMHgzMCwgMHgwMSwgMHgwMCwgMHg5NywgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEwLCAweDkxLCAweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTMsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDYwLCAweDkzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4NCwgMHg4ZiwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDk3LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDg0LCAweDhmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4ODMsIDB4MWUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0ZiwgMHgyYiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0NSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDJkLCAweDQ1LCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4ZjAsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTAsIDB4MDEsCisJMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHhkYywgMHg4ZiwgMHgwMCwgMHg0NCwgMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDRhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDcyLCAweDkzLCAweGEyLCAweDQxLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg3NywgMHg5MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0OCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGVjLCAweDk1LCAweDAwLCAweDRhLCAweDFmLCAweDEwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTMsIDB4MGEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTcsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhkMCwgMHg5MSwgMHgwMCwgMHgwMSwgMHgyYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDRmLAorCTB4MmIsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0NSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhmOSwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQwLCAweDkxLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAwLCAweDAwLAorCTB4OGIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDYsCisJMHhlNywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg5MCwgMHgwMCwgMHg0NSwgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDM3LCAweGMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MzMsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhkMiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4NiwgMHg5MywgMHg4NSwgMHgxNywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweDQ4LCAweDAzLCAweGQwLCAweDAwLCAweDAwLAorCTB4ODgsIDB4OTMsIDB4OWMsIDB4MTcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWYsIDB4NGMsCisJMHgwMywgMHhkMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgzNCwgMHhjMywgMHgwMSwgMHgwMCwKKwkweDQwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweGNiLCAweDk0LCAweDAwLCAweDQxLCAweGUxLCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4NDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ5LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDk1LCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4YTUsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhiYSwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAwLCAweDJmLCAweDAxLCAweDhjLCAweGQwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweGYwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwMCwgMHgyZiwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHhjYywgMHgwMCwgMHgyZCwgMHgwMSwKKwkweGUwLCAweGMxLCAweDAxLCAweDAwLCAweGEzLCAweDkzLCAweDljLCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NGEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MmYsIDB4OTgsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhhNSwgMHg5MywgMHgyMiwgMHg0NywgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDEzLCAweDkwLCAweDAxLCAweDAwLCAweGNlLCAweDk3LCAweDAwLCAweDQ3LAorCTB4MTksIDB4MTAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MmQsIDB4NDQsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhjNCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg5OCwgMHgwMCwgMHhmMCwKKwkweDg0LCAweGIwLCAweDAwLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4YmEsIDB4OTMsIDB4YTIsIDB4NGIsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MGYsIDB4OTQsIDB4YTIsIDB4NGMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhiYSwgMHg5MywgMHgxZiwgMHgxYywgMHhlMCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweGJkLCAweDkzLCAweGEyLCAweDAxLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGE4LCAweDAwLCAweDJkLCAweDQ2LAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjMsIDB4OTMsIDB4MWYsIDB4MWMsIDB4ZTAsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHhiNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiNSwgMHg5MywgMHgyMiwgMHhmMCwKKwkweDNhLCAweDZjLCAweDAwLCAweDAwLCAweDBjLCAweDk0LCAweDFmLCAweGYwLCAweDNhLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NGYsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4YSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDBkLCAweDk0LCAweDIwLCAweDQyLCAweGU3LCAweDZkLCAweDAwLCAweDAwLCAweGI5LCAweDkzLCAweDIyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTksIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg1OCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiYywgMHg5MywgMHgyMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDVjLCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NWIsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGMxLCAweDkzLCAweGEyLCAweDQyLCAweDI0LCAweDZjLCAweDAwLCAweDAwLCAweGNjLCAweDkzLCAweDIzLCAweGYwLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjOSwgMHg5MywgMHhhMiwgMHhmMCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDBlLCAweDk0LCAweGEyLCAweDQyLCAweDI0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MGUsIDB4OTQsIDB4YTIsIDB4NDEsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzgsIDB4OTMsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1MSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDUyLCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDBlLCAweDk0LCAweDFmLCAweDEyLAorCTB4ODQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4OTQsIDB4YTAsIDB4MDEsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhiYSwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweGY3LCAweDkzLCAweGEyLCAweDQ2LCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZTksIDB4OTMsIDB4MjIsIDB4ZjAsCisJMHgxNCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MywgMHgyMCwgMHgwYSwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGU2LCAweDkzLCAweDAzLCAweDFlLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGQ0LCAweDkzLCAweGEyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDQsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkYSwgMHg5MywgMHgyMiwgMHgwYSwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweGRkLCAweDkzLCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZDksIDB4OTMsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTUsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1NiwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGRjLCAweDkzLCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQzLAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDgsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwKKwkweDgyLCAweGQwLCAweDAxLCAweDAwLCAweGUzLCAweDkzLCAweDIwLCAweDkxLCAweDgzLCAweDZjLCAweDAwLCAweDAwLAorCTB4ZTIsIDB4OTMsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjYsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgyNywgMHgwMCwgMHg4MCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGU1LCAweDkzLCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDFmLCAweDAwLCAweDgwLCAweDQwLAorCTB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhlOCwgMHg5MywgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDIzLCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLAorCTB4ODgsIDB4MDAsIDB4MmQsIDB4NDQsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjIsIDB4OTMsIDB4YTIsIDB4NDEsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhlZiwgMHg5MywgMHhhMiwgMHg0MywgMHgzZCwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGVmLCAweDkzLCAweGEyLCAweGYyLCAweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQwLAorCTB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDksIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmMSwgMHg5MywgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ4LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4ZWYsIDB4OTMsIDB4YTAsIDB4OTEsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4OTMsIDB4MjIsIDB4NDMsCisJMHgzZCwgMHg3YywgMHgwMCwgMHgwMCwgMHhmNiwgMHg5MywgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDI4LCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDI5LCAweDAwLCAweDgwLCAweDQwLAorCTB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5NCwgMHhhMiwgMHhmMCwgMHgxNCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHg0NCwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGZkLCAweDkzLCAweGEyLCAweGYyLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDksCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlZiwgMHg5MywgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGVkLCAweDkzLCAweDIwLCAweDkxLCAweDAzLCAweDZjLCAweDAwLCAweDAwLCAweGVmLCAweDkzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTQsIDB4MjAsIDB4MGEsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg5NCwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0NCwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ5LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDksIDB4OTQsIDB4MjIsIDB4MGEsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OTMsIDB4YTIsIDB4NDEsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwOCwgMHg5NCwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDU1LCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU2LAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4OTQsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0OCwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDExLCAweDk0LCAweDAwLCAweDQzLCAweDk1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTEsIDB4OTQsIDB4MDAsIDB4NDEsIDB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4OTQsIDB4MDAsIDB4NDIsCisJMHg5NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMSwgMHg5NCwgMHgwMCwgMHg0NCwgMHg5NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDExLCAweDk0LCAweDAwLCAweDRjLCAweDk1LCAweGIwLCAweDAwLCAweDAwLCAweDMwLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4NGEsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg1NSwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxNiwgMHg5NCwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDRiLCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NGMsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsCisJMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDJlLCAweDAwLCAweDJmLCAweGYzLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDFjLCAweDk0LCAweGEyLCAweGYzLAorCTB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4MDEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyZCwgMHgwMCwgMHgyYSwgMHg0MSwgMHhlNywgMHhkMSwgMHgwMSwgMHgwMCwgMHhkNCwgMHgwMCwgMHgzZCwgMHg0MSwKKwkweDg1LCAweGUwLCAweDAxLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweGYyLCAweDAwLCAweGU0LCAweDAxLCAweDAwLAorCTB4MjIsIDB4OTQsIDB4MjIsIDB4NWEsIDB4MDEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyMywgMHg5NCwgMHgwMCwgMHg1YSwgMHgwMSwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweDQxLAorCTB4ODUsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTQsIDB4YTAsIDB4YTUsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDAwLCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YTUsCisJMHg4NSwgMHg2YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTgsIDB4MDAsIDB4ZjAsIDB4OGMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg1ZiwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgzYiwgMHg5NCwgMHgyMiwgMHg0MCwKKwkweDBmLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg5OCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNywgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDBjLCAweDk4LCAweGY0LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA3LAorCTB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzgsIDB4OTQsIDB4YTIsIDB4NGIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgzOSwgMHg5NCwgMHgyMiwgMHhmMCwgMHgxOCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg0YiwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDNkLCAweDk1LCAweDAwLCAweDA3LCAweDEwLCAweDMwLCAweDAxLCAweDAwLAorCTB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4M2QsIDB4OTQsIDB4MjIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhNSwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDgzLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDVmLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQwLCAweDBmLCAweDZjLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDcsCisJMHg5NiwgMHg2YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwYywgMHg5NiwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDA3LCAweDk2LCAweDZjLCAweDAwLCAweDAwLCAweDNkLCAweDk1LCAweDAwLCAweDA3LAorCTB4MTAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MmYsIDB4ODMsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg1ZiwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5NiwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDA3LCAweDk2LCAweDZjLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDBjLAorCTB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDcsIDB4OTYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzZCwgMHg5NSwgMHgwMCwgMHgwNywgMHgxMCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDA1LCAweGIwLCAweDAxLCAweDAwLCAweDU0LCAweDk0LCAweDMzLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NTcsIDB4OTQsIDB4YTEsIDB4YWQsIDB4OTUsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NjksIDB4OTQsIDB4MTMsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0YSwgMHg1YSwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAwLCAweDM5LCAweDQ1LCAweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVmLAorCTB4NWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWUsIDB4NWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgxZiwgMHgwMCwgMHgwMCwgMHgwZiwgMHg1ZSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YSwKKwkweDVmLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVlLCAweDVmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisJMHg0OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0YSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDU4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LAorCTB4NGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTksIDB4ODUsIDB4MDAsIDB4NDAsIDB4NWQsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0NCwgMHg1ZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4NDEsIDB4OTcsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDQwLCAweDA1LCAweDZjLCAweDAwLCAweDAwLCAweDE1LCAweDk5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4NmMsIDB4OTQsIDB4NjAsIDB4MDcsIDB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHg0YiwgMHg4NCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwgMHhjMiwKKwkweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDc5LCAweDk0LCAweGEyLCAweDQ1LCAweDI1LCAweDdjLCAweDAwLCAweDAwLAorCTB4NzAsIDB4OTQsIDB4MzEsIDB4MjAsIDB4ODUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4N2EsIDB4OTQsIDB4MjIsIDB4MTIsCisJMHg0OCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwNCwgMHgxMSwgMHgxMiwgMHg0OCwgMHgwMywgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDEyLCAweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4MWUsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MTcsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg4YSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHg1ZiwKKwkweDhiLCAweDEwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDVhLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4NzksIDB4OTQsIDB4MzEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsCisJMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg3YSwgMHg5NCwgMHgyMiwgMHgxMiwgMHg0OCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDU4LCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDE3LCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MTIsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4OSwgMHg5NCwgMHgwYiwgMHhmMCwKKwkweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweDEyLCAweDQ4LCAweDgzLCAweDAxLCAweDAwLAorCTB4ODYsIDB4OTQsIDB4MjIsIDB4NTAsIDB4ODUsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5NiwgMHgwMCwgMHhmMiwgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDkzLCAweDA0LCAweDAwLCAweDEyLCAweDk0LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwgMHgxZSwgMHg5NCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDEwLCAweGY0LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4YjcsIDB4M2YsIDB4NDMsIDB4MTEsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHg4YSwgMHg4OCwgMHgwMSwgMHgwMCwgMHg4ZCwgMHg5NCwgMHgzMCwgMHhhMSwgMHgwYywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDkwLCAweDk0LCAweDIyLCAweDQ1LCAweGU2LCAweDdkLCAweDAwLCAweDAwLCAweDdhLCAweDk0LCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4NDUsIDB4ZTYsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMCwgMHgxMiwgMHg0OCwgMHg4MywgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwKKwkweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4NGIsIDB4ODUsIDB4ODAsIDB4MDEsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5NiwgMHgwMCwgMHhmMiwgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweGQ4LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5YywgMHg5NCwgMHgyMiwgMHg0MCwgMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4YTcsCisJMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDk0LCAweGE4LCAweDA1LAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxNCwgMHgwMCwgMHg0YiwgMHg5NiwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwKKwkweDFlLCAweDk0LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MGYsIDB4ODQsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MWYsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHhhYSwgMHg5NCwgMHgyMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFiLCAweDk0LCAweDAwLCAweDQyLCAweDY4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NmEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWIsIDB4OTQsIDB4MzEsIDB4NWEsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg0MiwgMHg0OCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MSwgMHg0MiwKKwkweDQ4LCAweDkzLCAweDAxLCAweDAwLCAweGFlLCAweDk0LCAweDM1LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NmQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjQsIDB4OTQsIDB4MjgsIDB4YjEsCisJMHgyYywgMHgzMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg5NCwgMHgyMiwgMHg0ZCwgMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDJkLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDk1LCAweDQwLAorCTB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhiNCwgMHg5NCwgMHhhOCwgMHhiMSwgMHgxMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDI3LCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhiZiwgMHg5NCwgMHgyOCwgMHhiMSwgMHgxMCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGI5LCAweDk0LCAweDlmLCAweGJhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDE1LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1YywKKwkweDExLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVhLCAweDExLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MDgsIDB4NDgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MjQsCisJMHgxMSwgMHg4NCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywgMHgwMSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDVhLCAweDAxLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDAwLAorCTB4NDgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4YmIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YzgsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhjYywgMHg5NCwgMHgzMiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGQ0LCAweDk0LCAweDIyLCAweGY4LCAweDk2LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyNywgMHg0OSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDRiLCAweGYwLCAweGNkLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4OTIsIDB4NDgsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5NCwgMHgyOCwgMHhiMSwgMHg5MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGQ0LCAweDk0LCAweDIyLCAweDRjLCAweDc1LCAweDdkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDEyLCAweDQwLAorCTB4OTEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhkOCwgMHg5NCwgMHhhOCwgMHhiMSwgMHg5MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDI3LCAweDQ4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg5MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0YiwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDQ4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweDQ5LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHg4MiwgMHg4YywgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywKKwkweDgzLCAweDdjLCAweDAwLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweGYwLCAweDAwLCAweDhjLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsIDB4MDEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHgwMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MSwgMHgwMCwgMHhlYywgMHgwMCwgMHgwMCwKKwkweGVhLCAweDk0LCAweDIyLCAweDFhLCAweDAwLCAweDZjLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDAwLAorCTB4MzQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhlNCwgMHg5NCwgMHhhMiwgMHg0MSwgMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDcsIDB4MDAsIDB4MTUsIDB4ODIsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWMsCisJMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHhmMCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDVjLCAweDAxLCAweDdjLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQwLAorCTB4MDEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDEsIDB4MDAsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHhmNiwgMHg5NCwgMHgyMiwgMHgwZCwgMHgwMCwgMHg2YywgMHgwMCwgMHgwMCwgMHhjMywgMHg5NCwgMHgwMCwgMHgwMCwKKwkweDFhLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDQ5LCAweGMxLCAweDAxLCAweDAwLAorCTB4ZjAsIDB4OTQsIDB4YTIsIDB4NDEsIDB4MjMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhmYiwgMHg5NCwgMHg4MywgMHgxZSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDI0LCAweDAwLCAweDJkLCAweDAxLAorCTB4MmMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyZiwgMHhmMiwKKwkweDBjLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweGYwLCAweDE0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDk3LCAweDJlLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4OTUsIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg2NCwgMHg5NywgMHgzZSwgMHg0MywgMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDY0LCAweDk3LCAweDNlLCAweDQzLCAweDlkLCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4MGIsIDB4ZTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTcsIDB4M2YsIDB4NDMsCisJMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDY0LCAweDk3LCAweDNmLCAweDQzLAorCTB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2MCwgMHgxNywgMHgzZCwgMHg0MywKKwkweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDgwLCAweGExLCAweDE2LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4MDcsIDB4MTYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHg4YSwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDk5LCAweDAwLCAweDBkLCAweDhhLCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDAwLCAweDBkLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTcsIDB4OTUsIDB4MzAsIDB4NDcsIDB4MTcsIDB4MDQsIDB4MDAsIDB4MDAsCisJMHgxYSwgMHg5NSwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHg0MiwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweGI3LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MWUsIDB4OTUsIDB4YTIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHhlNiwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHg0MSwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDEwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDFmLCAweDk1LCAweDQwLCAweDA3LAorCTB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OWQsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyOSwgMHg5NSwgMHhhMiwgMHg0NSwgMHg5NSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMSwgMHg5NywgMHgzZiwgMHg0MSwKKwkweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDk2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4OTcsIDB4M2UsIDB4NDAsCisJMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDk3LCAweDNlLCAweDQwLCAweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDNjLCAweDk1LCAweDAwLCAweDNiLAorCTB4ZTcsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MjksIDB4OTUsIDB4MzAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgzMywgMHg5NSwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwKKwkweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDJmLCAweDk1LCAweGEyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4NDIsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHgwZCwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU2LCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4NDEsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMSwgMHhhMiwgMHg5NSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0YSwKKwkweDQ0LCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDk3LCAweDNlLCAweDQxLCAweDk1LCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ZjYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsCisJMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5NywgMHgzZSwgMHg0MCwgMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDNiLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDcsIDB4OTIsIDB4ODksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5OCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMSwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDA4LCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjcsIDB4MDAsIDB4NDMsCisJMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQxLAorCTB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTUsIDB4NDAsIDB4MDgsIDB4OTYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg5ZCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg1MiwgMHg5NSwgMHgyMiwgMHg0NSwKKwkweDk1LCAweDdjLCAweDAwLCAweDAwLCAweDRkLCAweDk1LCAweDIyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MGYsIDB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4NDksIDB4OTUsIDB4MzEsIDB4NWYsCisJMHg5NywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg0YiwgMHg0OCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDExLCAweDRiLCAweDQ4LCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NmEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGQsIDB4OTUsIDB4MzAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MSwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGU2LCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OTcsIDB4M2YsIDB4NDEsCisJMHg5NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDk3LCAweDNkLCAweDQwLCAweDk3LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweGYzLAorCTB4ODgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NWIsIDB4OTUsIDB4YTIsIDB4M2IsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg5MCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDkyLCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDRhLCAweDQ0LCAweDdmLCAweDAwLCAweDAwLAorCTB4NWMsIDB4OTUsIDB4MTgsIDB4NGEsIDB4NDQsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgzZiwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDE2LCAweDAwLCAweDAwLCAweDEyLCAweDhhLCAweGU0LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDRiLAorCTB4OGEsIDB4MTQsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MzksIDB4NDUsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHg1ZiwgMHg1ZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1ZSwKKwkweDVmLCAweDdjLCAweDAwLCAweDAwLCAweDFmLCAweDA0LCAweDAwLCAweDJmLCAweDdlLCAweGQ5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NjgsIDB4OTUsIDB4MjIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxZiwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5OCwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDVlLCAweDk0LCAweDAxLCAweDAwLCAweDZhLCAweDk1LCAweDAwLCAweDA1LAorCTB4NGEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4MDQsIDB4MDAsIDB4YTcsIDB4NWUsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwKKwkweDVmLCAweDkwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA4LCAweDRlLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDZkLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDMzLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDcsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg3MiwgMHg5NSwgMHg0MCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg5ZCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDc2LCAweDk1LCAweDIyLCAweDQ1LCAweDk1LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGEsCisJMHg0NCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg5YiwgMHgwNCwgMHgwMCwgMHg0YSwgMHg0NCwgMHgxMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk3LCAweDNmLCAweDQxLCAweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4OTcsIDB4M2QsIDB4NDAsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHhmMywgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgzOCwgMHg0NSwKKwkweDk3LCAweGUwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVmLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NWUsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4YWEsCisJMHgwZiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgwZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODIsIDB4OTUsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg3OCwgMHg5NSwgMHhhMiwgMHgzYiwgMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgzOCwgMHg0NSwKKwkweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHg5NCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiNywgMHgwMCwgMHg0YSwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDA4LCAweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDRiLAorCTB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4OTMsIDB4MDQsIDB4MDAsIDB4MTIsIDB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgzZCwgMHg5NSwgMHgwMCwgMHg1YSwgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1YSwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDExLCAweDAwLCAweDAwLCAweDRhLCAweGU2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMCwgMHgyZiwgMHg0ZiwgMHg5NSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweDRiLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4NDMsIDB4ODUsIDB4NmMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhlMywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZCwgMHg0NCwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDMyLCAweDAwLCAweDJkLCAweGYyLCAweDJhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjIsCisJMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg5NCwgMHgwMCwgMHgxMCwgMHgzMiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDAwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzIsIDB4MDAsIDB4YTAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwKKwkweDk5LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDAyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMywgMHg0YywgMHgwMiwgMHhkMCwgMHgwMCwgMHgwMCwKKwkweGEzLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LAorCTB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjQsIDB4OTUsIDB4MjIsIDB4NDEsIDB4MDMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhYywgMHg5NSwgMHhhOCwgMHgwMCwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4N2MsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweGIwLCAweDAxLCAweDAwLCAweGE3LCAweDk1LCAweDAwLCAweDVjLCAweDAxLCAweDgwLCAweDAwLCAweDAwLAorCTB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMSwgMHgyZCwgMHgwNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDgyLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4YjksIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhlMiwgMHg5NSwgMHgyMiwgMHg0MCwgMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwKKwkweDM4LCAweDk2LCAweDAxLCAweDAwLCAweDNhLCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDIsIDB4OTksIDB4MDAsIDB4MDgsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4MDcsIDB4MDAsIDB4NDEsCisJMHg4MiwgMHhjYywgMHgwMSwgMHgwMCwgMHhiOSwgMHg5NSwgMHhhYSwgMHg0MSwgMHgzYiwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTMsIDB4NDgsIDB4M2IsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgxZCwgMHgwNCwgMHhjYywgMHgwMSwgMHgwMCwgMHhlMCwgMHg5NSwgMHgyNiwgMHg0NiwKKwkweDIzLCAweDMwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAzLCAweDEyLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NGMsCisJMHg0MiwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDY0LCAweDAxLCAweDIwLCAweGYwLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGRmLCAweDk1LCAweDIyLCAweDQxLAorCTB4MDUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwYywgMHgwMCwgMHgwMCwgMHhmOCwgMHg4NiwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMiwgMHg0NCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGQxLCAweDk1LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweGRlLCAweDk1LCAweDIyLCAweDQxLAorCTB4MDUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4OTUsIDB4YTIsIDB4NDEsIDB4MjMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHgxYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4ZDcsIDB4OTUsIDB4YTgsIDB4NDYsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4ODMsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDQyLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4MTMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4OTUsIDB4MDAsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDFhLCAweGM4LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZTAsIDB4OTUsIDB4MjIsIDB4NDAsCisJMHgzYiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGMzLCAweDk0LCAweDAwLCAweDVjLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweGUyLCAweDk1LCAweDAwLCAweDQxLAorCTB4M2IsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDcsIDB4ODAsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhiMCwgMHgwMCwgMHgyZiwgMHg1ZiwgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwKKwkweDhjLCAweGMwLCAweDAxLCAweDAwLCAweDdjLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTMsIDB4ZjAsIDB4OGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjEsIDB4OTUsIDB4OGMsIDB4ZjgsIDB4OGUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmOCwKKwkweDE0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDE2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MmUsIDB4ZjgsCisJMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyYSwgMHg0YSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDIwLCAweDFiLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmUsIDB4OTUsIDB4MjAsIDB4MGEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDIwLCAweGYwLCAweGU0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MTgsIDB4MDAsIDB4MjAsIDB4NGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MjAsIDB4NGIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlNiwgMHg5NSwgMHgwMCwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweDJjLCAweDAwLCAweDJkLCAweDQyLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmYsIDB4ZjMsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg5NiwgMHhhMiwgMHhhNSwKKwkweDk3LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQxLCAweDk1LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDgsIDB4OTYsIDB4YTIsIDB4NDAsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDQxLCAweDk3LCAweGMwLCAweDAxLCAweDAwLCAweGQ0LCAweDAwLCAweDNlLCAweDQxLAorCTB4ODMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwZCwgMHg5NiwgMHhhMCwgMHhhNSwgMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDJjLCAweDAwLCAweDIwLCAweDQxLCAweGU2LCAweGIxLCAweDAxLCAweDAwLAorCTB4MTIsIDB4OTYsIDB4MjIsIDB4NDAsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsCisJMHg5OCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwYiwgMHgwMCwgMHgwMCwgMHg0YywgMHhlNCwgMHhmNSwgMHgwMSwgMHgwMCwKKwkweDEzLCAweDk2LCAweDAwLCAweDQwLCAweDFmLCAweDgwLCAweDAwLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4ZjUsIDB4MDEsIDB4MDAsIDB4MWUsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGNiLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4NDEsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDVkLAorCTB4MDUsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MjMsIDB4OTYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhjYiwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg1ZCwgMHgwNSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDMzLCAweDk2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LAorCTB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4ODIsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyZiwgMHhmMywKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweGYzLCAweDk2LCAweGM4LCAweDAxLCAweDAwLAorCTB4M2QsIDB4OTYsIDB4OWYsIDB4NDEsIDB4ODUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTUsCisJMHg4NSwgMHhjYywgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyMCwgMHg0MiwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEzLCAweGE1LCAweDk3LCAweDZjLCAweDAwLCAweDAwLCAweGQ0LCAweDAwLCAweDNkLCAweDQxLAorCTB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4OTgsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHg0NCwgMHg5NiwgMHgyMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg1YSwKKwkweDk5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDk5LCAweDgwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4MDAsIDB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHgwMCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDIxLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhMiwgMHgwMCwgMHg2YSwgMHgwNiwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgyZCwgMHgwMCwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDRmLCAweDk2LCAweDUyLCAweDQzLCAweDgxLCAweDYwLCAweDAwLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4OTYsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVlLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg1MSwgMHg5NiwgMHg5ZSwgMHhiYiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg1NiwgMHg5NiwgMHhhMiwgMHg0MCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGMzLCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgyYiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZjLAorCTB4MzgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4M2MsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHgzYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2YiwgMHg5NiwgMHg5YywgMHgxNywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDYwLCAweDk2LCAweGEyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NGMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHg5OCwgMHhmNCwgMHgwMSwgMHgwMCwgMHg1ZiwgMHg5NiwgMHhhMiwgMHg0OCwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDQyLCAweGIxLCAweDAxLCAweDAwLCAweDVmLCAweDk2LCAweGEyLCAweDhhLAorCTB4ZjEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgzZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNCwKKwkweDI4LCAweGNjLCAweDAxLCAweDAwLCAweGNjLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4NmEsIDB4OTYsIDB4MjAsIDB4ZjAsIDB4M2UsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHgyYiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGJmLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGYzLAorCTB4M2EsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsIDB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwYywgMHg5NiwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNywKKwkweDk2LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDcsIDB4MDAsIDB4MmEsIDB4MGMsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDQsCisJMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDFjLCAweDAwLCAweDJkLCAweGYwLCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDJkLCAweGYwLAorCTB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmYsIDB4ZjIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNiwgMHgxNCwgMHhlYywgMHgwMCwgMHgwMCwgMHg3YSwgMHg5NiwgMHgyMiwgMHg0NSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEzLCAweDA2LCAweDJhLCAweGVjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJhLCAweDRjLCAweGUxLCAweGMxLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg4NCwgMHg5NiwgMHhhOCwgMHg1YywgMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDk1LAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDhmLCAweDk2LCAweDYyLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OTAsIDB4OTYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5MiwgMHg5NiwgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4YTIsIDB4OTUsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDlkLCAweDk2LCAweDYyLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OWUsIDB4OTYsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDk2LCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHhhOCwgMHgzZCwgMHg0NiwKKwkweDBkLCAweGUwLCAweDAxLCAweDAwLCAweGZmLCAweDdmLCAweDAwLCAweGExLCAweGYwLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4MDksIDB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGFhLCAweDk2LCAweDYzLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDRhLAorCTB4NjIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YWIsIDB4OTYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhmMywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwKKwkweDk3LCAweGYwLCAweDAxLCAweDAwLCAweGFmLCAweDk2LCAweDY1LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YjcsIDB4OTYsIDB4MjIsIDB4ZjMsIDB4NzQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhlNywgMHg4NSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc1LCAweDU1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhiNCwgMHg5NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDM2LCAweGIwLCAweDAxLCAweDAwLAorCTB4YzcsIDB4OTYsIDB4ODIsIDB4NDEsIDB4MjMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4OTYsIDB4YTIsIDB4NDQsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg5OCwgMHg5MywgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGMyLCAweDk2LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiZiwgMHg5NiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjNywgMHg5NiwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGUxLCAweDk0LCAweDAwLCAweDQzLCAweDIzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzksIDB4OTYsIDB4YTMsIDB4MTUsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhjYSwgMHg5NiwgMHgwMCwgMHgwNiwgMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGNjLCAweDk2LCAweDIwLCAweDAyLCAweDFhLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWIsIDB4OTcsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHhmNywgMHg5NiwgMHgyMiwgMHgwMiwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDk2LCAweGEyLCAweDAyLCAweDJhLCAweDUwLCAweDAwLCAweDAwLCAweGY3LCAweDk2LCAweGEyLCAweDQ1LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4OTYsIDB4MjIsIDB4MDIsIDB4MGMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHhkYiwgMHg5NiwgMHgwMCwgMHgwMiwgMHgxNiwgMHhjMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHg5NiwgMHgyMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ZGEsIDB4OTYsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGQ2LCAweDk2LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3MywgMHg5NiwgMHgwMCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmNywgMHg5NiwgMHgyMiwgMHgxNSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZjYsIDB4OTYsIDB4YTIsIDB4MDIsIDB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZTcsIDB4OTYsIDB4MjIsIDB4NDYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg3MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDFmLCAweDgwLCAweDAxLCAweDAwLCAweGU3LCAweDk2LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhlMywgMHg5NiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIzLCAweDgzLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweGYwLCAweDEwLCAweGM4LCAweDAxLCAweDAwLCAweDJmLCAweDAwLCAweDJmLCAweDVjLAorCTB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwgMHgxYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhiOSwgMHg5NiwgMHgyMCwgMHgxNSwKKwkweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZjMsIDB4OTYsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHhiOSwgMHg5NiwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhiOSwgMHg5NiwgMHgwMCwgMHgwMiwKKwkweDEwLCAweGMwLCAweDAwLCAweDAwLCAweGY5LCAweDk2LCAweGEyLCAweDQ0LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4OTgsIDB4OTMsIDB4MDAsIDB4MDEsIDB4OGMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA4LAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NWMsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDE3LCAweDAwLCAweDAwLCAweGQwLCAweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQwLAorCTB4MjcsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjMywgMHg5NCwgMHgwMCwgMHg0MSwgMHhhMywgMHg0MSwgMHgwMSwgMHgwMCwgMHgwNSwgMHg5NywgMHgwMCwgMHg0MSwKKwkweDI3LCAweGQwLCAweDAwLCAweDAwLCAweDM2LCAweDA0LCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDIsIDB4OTksIDB4MDAsIDB4NDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg4MCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgxNCwgMHhiYiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwZSwgMHg5NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLAorCTB4NjQsIDB4OTcsIDB4MDAsIDB4NDAsIDB4MmIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmQsIDB4MDYsCisJMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyZCwgMHhmMCwgMHgxNiwgMHhjNCwgMHgwMSwgMHgwMCwKKwkweDE4LCAweDk3LCAweGEwLCAweGYwLCAweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2YywgMHhmMCwgMHgzMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZCwgMHg0MCwKKwkweDg3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDZjLCAweGYwLCAweDI4LCAweGIwLCAweDAxLCAweDAwLAorCTB4MjEsIDB4OTcsIDB4MjIsIDB4NGEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NDMsCisJMHg4NiwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwYiwgMHgxNiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDIxLCAweDk3LCAweGE0LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NDQsIDB4OTcsIDB4MjIsIDB4MDYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyZiwgMHg5NywgMHhhMiwgMHgwNiwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgyYywgMHg5NywgMHgyMiwgMHg0OCwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDI2LCAweDk3LCAweGEwLCAweDQxLCAweDE3LCAweDQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgzMSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyMCwgMHgxOCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDhiLCAweDAwLCAweDJkLCAweDQ4LCAweDE5LCAweDgwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQ1LAorCTB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MjAsIDB4NDUsIDB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgyZiwgMHg5NywgMHgwMCwgMHg0MCwgMHg4NywgMHg5MCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDg2LCAweDk4LCAweDAxLCAweDAwLCAweDJmLCAweDk3LCAweGEwLCAweDQ4LCAweDE3LCAweDQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHg1MCwgMHgwMCwgMHg0MywgMHhmYywgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDk3LCAweDAwLCAweDMwLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4M2EsIDB4OTcsIDB4MjIsIDB4NGEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHhjYywgMHgwMCwgMHgyZCwgMHhhYiwKKwkweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGFiLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MzksIDB4OTcsIDB4YTAsIDB4ZjAsIDB4MTYsIDB4NDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgzZSwgMHg5NywgMHg2NCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGE0LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDNlLCAweDk3LCAweGEyLCAweGYyLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg4YywgMHgwMCwgMHgyMCwgMHgxOCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDA2LCAweDMwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODYsIDB4MGMsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NDksCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhiYywgMHgwMCwgMHgyZCwgMHg0NiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweGEwLCAweGYyLCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweGIwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTAsIDB4NTAsIDB4MDAsIDB4NDMsIDB4ZmMsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhhOCwgMHg5NywgMHgwMCwgMHgzMCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0YSwKKwkweDE5LCAweGZjLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4Y2MsIDB4MDAsIDB4MmQsIDB4YWIsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWIsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHg0ZCwgMHg5NywgMHhhMCwgMHhmMCwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweGYwLAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MWIsCisJMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg1MiwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweGYwLCAweDAwLCAweDBjLCAweDdlLCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE2LCAweDRjLAorCTB4OTUsIDB4NjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NGEsIDB4MTgsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwMSwKKwkweGYwLCAweDMxLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDE1LCAweGUwLCAweGIxLCAweDAwLCAweDAwLCAweDVkLCAweDk3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDVmLCAweDE3LCAweDkwLCAweDAxLCAweDAwLAorCTB4NzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4N2EsIDB4MDEsIDB4MmUsIDB4ZmUsCisJMHg5MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyZCwgMHhmNiwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDZhLCAweDk3LCAweDIyLCAweDQzLCAweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YTYsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwMCwgMHg2ZSwgMHgwNiwgMHg4MiwgMHhjOCwgMHgwMSwgMHgwMCwgMHg2ZSwgMHg5NywgMHgyMiwgMHg0YSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDQ1LCAweGQxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NmUsIDB4NGMsIDB4ODMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHg5NywgMHg0MywgMHgzMCwgMHgzZCwgMHgwNywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY2LCAweDllLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDQxLAorCTB4M2QsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwNiwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweDk4LCAweGY0LCAweDAxLCAweDAwLCAweDc4LCAweDk3LCAweDI2LCAweDMwLCAweDkzLCAweDA0LCAweDAwLCAweDAwLAorCTB4NzgsIDB4OTcsIDB4OTAsIDB4NGMsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHg4MCwgMHg0OSwgMHhlYywgMHhhOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDAxLAorCTB4ZjAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDE1LCAweGUwLCAweGIxLCAweDAwLCAweDAwLAorCTB4N2QsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MjAsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDhmLCAweDk3LCAweDIyLCAweDVmLCAweDgxLCAweDdjLCAweDAwLCAweDAwLCAweDhjLCAweDk3LCAweGEyLCAweDQwLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDk3LCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGMsIDB4OTcsIDB4MjgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHg1NCwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDg4LCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDI1LCAweDA0LCAweDAwLCAweDQwLAorCTB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4NDAsIDB4OGEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgyMSwgMHg4MSwgMHg4NCwgMHgwMCwgMHgwMCwgMHg5MiwgMHg5NywgMHhhMiwgMHg1ZiwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQzLCAweDE5LCAweDdjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MjUsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHg0MCwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTYsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDU0LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4OTcsIDB4OTcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwMiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGEwLCAweDk3LCAweGEyLCAweDRiLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGI0LCAweDA1LCAweDAwLCAweDAyLAorCTB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YWEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwMiwKKwkweGYwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDA4LCAweGUwLCAweGIxLCAweDAwLCAweDAwLCAweGE1LCAweDk3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsIDB4NDgsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHhiMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDdjLCAweDAwLCAweDJkLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTgsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4YjEsIDB4OTcsIDB4MjAsIDB4NGMsCisJMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGIxLCAweDk3LCAweDIwLCAweGYyLCAweDg0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTgsIDB4MDAsIDB4MmQsIDB4MTQsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhMywgMHgwMCwgMHgyZCwgMHgxNCwKKwkweDk4LCAweGQwLCAweDAxLCAweDAwLCAweGI2LCAweDk3LCAweDIwLCAweDRjLCAweDg0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MzAsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4MCwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDk3LCAweDIzLCAweDQwLCAweDg0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MDAsIDB4MjAsIDB4MTQsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5OCwgMHgwMCwgMHgyNSwgMHg0MiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHhmMywKKwkweDgwLCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE2LCAweDQyLCAweDgyLCAweGMwLCAweDAwLCAweDAwLAorCTB4YzAsIDB4OTcsIDB4YTAsIDB4NDAsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHhmMCwgMHg4MiwgMHhlYywgMHgwMCwgMHgwMCwKKwkweDk4LCAweDAwLCAweGEwLCAweDQxLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHg5OSwgMHgwMCwgMHgwNSwgMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4YTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweGE3LCAweDk3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhjYiwgMHg5NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHgxYywKKwkweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweGYwLCAweDhhLCAweGQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4OGIsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGE0LCAweDAwLCAweDJkLCAweDQ1LCAweGUwLCAweGQxLCAweDAxLCAweDAwLCAweGQ5LCAweDk3LCAweDljLCAweDE3LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4NGEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhiZSwgMHgwMCwgMHgyZiwgMHhhYiwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgzNSwgMHg5OCwgMHgwMCwgMHgxNCwKKwkweDgyLCAweDUwLCAweDAxLCAweDAwLCAweGRlLCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZGUsIDB4OTcsIDB4MjIsIDB4ZjIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OGMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhkZSwgMHg5NywgMHg5ZiwgMHgxYywgMHhlMCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweGJlLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDM1LCAweDk4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MjAsIDB4MWMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5YywgMHgwMCwgMHgyZCwgMHgzMCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDk0LCAweDAwLCAweDJkLCAweGYyLCAweDg2LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZjIsIDB4OTcsIDB4MjMsIDB4ZjAsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4OTcsIDB4MjMsIDB4OTIsCisJMHg4NywgMHg2YywgMHgwMCwgMHgwMCwgMHhjOSwgMHgwNCwgMHgwMCwgMHhhNiwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGU4LCAweDk3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LAorCTB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODksIDB4MDAsIDB4NGEsIDB4OTQsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhlOCwgMHg5NywgMHg2OCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwKKwkweGJkLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGIwLCAweGIxLCAweDAxLCAweDAwLAorCTB4YmYsIDB4MDAsIDB4MmQsIDB4NDIsIDB4YjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjMsCisJMHg4MCwgMHhlMCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg5NywgMHhkNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc4LCAweGRhLCAweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGY3LCAweDk3LCAweDIzLCAweDQwLAorCTB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDAsIDB4MjAsIDB4OWQsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmNywgMHg5NywgMHgwMCwgMHg0MCwgMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiZiwgMHgwMCwgMHgyZCwgMHg0MywKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYzLCAweDgwLCAweGUwLCAweDAxLCAweDAwLAorCTB4ZjcsIDB4OTcsIDB4MjMsIDB4NDAsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDAsIDB4MjAsIDB4OWQsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGZiLCAweDk3LCAweGEyLCAweGYwLCAweDM4LCAweDZjLCAweDAwLCAweDAwLCAweDljLCAweDAwLCAweDIwLCAweDQyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MTMsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0NiwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMCwgMHgyMCwgMHg0MiwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg4MiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMSwgMHg5OCwgMHgyMywgMHg0MSwgMHg4MCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDEzLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDBjLAorCTB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4ODYsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHhhMCwgMHhmMiwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweDQxLCAweDI0LCAweGVjLCAweDAwLCAweDAwLAorCTB4MGQsIDB4OTgsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWYsIDB4NDIsCisJMHgzOCwgMHhlYywgMHgwMCwgMHgwMCwgMHgwZCwgMHg5OCwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGI0LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDBmLCAweDk4LCAweGEzLCAweGYwLAorCTB4M2EsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTQsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhiNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDEzLCAweDk4LCAweDIyLCAweGYwLCAweDNhLCAweDZjLCAweDAwLCAweDAwLAorCTB4YjQsIDB4MDAsIDB4MjAsIDB4MWQsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MmQsIDB4NWYsCisJMHgxMywgMHg5NCwgMHgwMSwgMHgwMCwgMHgxMywgMHg5OCwgMHgyMywgMHhmMCwgMHgzYSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDgwLCAweDAwLCAweDIwLCAweDFkLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDIwLCAweDEyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDAsIDB4YTAsIDB4MWMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyNywgMHgwNCwgMHgwMCwgMHg0MCwgMHg4OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHg5OSwgMHgwMCwgMHg0MiwKKwkweDhhLCAweDMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDk4LCAweDlmLCAweDQxLCAweDI0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OGMsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHg5OCwgMHgwMCwgMHg0MSwgMHgyNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDc4LCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDk4LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGFlLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhNywgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDA4LCAweDhhLCAweDMwLCAweDAxLCAweDAwLAorCTB4MmMsIDB4OTgsIDB4YTIsIDB4NDAsIDB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHhhNiwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDk4LCAweDJmLCAweDQwLCAweDExLCAweGIwLCAweDAxLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLAorCTB4ODksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHhmOCwKKwkweDNlLCAweGVjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweDEyLCAweGUwLCAweGVkLCAweDAwLCAweDAwLAorCTB4YzgsIDB4MDAsIDB4MjAsIDB4YWIsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4YTAsIDB4MWYsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHgwNSwgMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDM4LCAweDk4LCAweGEzLCAweDVmLCAweGU3LCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ZTcsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YTYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg0YywgMHg5OCwgMHgyMiwgMHhmMiwgMHg4NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0MywKKwkweDg0LCAweGY0LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGNjLCAweDAxLCAweDAwLAorCTB4YjgsIDB4MDAsIDB4MmQsIDB4NDIsIDB4ODAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4NDAsCisJMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5OCwgMHgxZiwgMHg0MywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQxLCAweDk4LCAweGEyLCAweDQwLCAweDg3LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweDQxLAorCTB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDUsIDB4OTgsIDB4OWYsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg0LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg4NCwgMHhmNCwgMHgwMSwgMHgwMCwgMHhiOCwgMHgwMCwgMHgyZSwgMHg0MiwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYyLCAweDQwLCAweDg4LCAweGMwLCAweDAxLCAweDAwLCAweDRiLCAweDk4LCAweDFmLCAweDQ0LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NGYsIDB4OTgsIDB4YTIsIDB4NDAsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg0ZiwgMHg5OCwgMHg2MiwgMHg0MSwgMHg4OSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg2MiwgMHg0MSwKKwkweDg2LCAweGU0LCAweDAxLCAweDAwLCAweGI4LCAweDAwLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NjIsIDB4NDEsIDB4ODgsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4YTQsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGJjLCAweDAwLCAweDJlLCAweDQzLCAweDg3LCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ODYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NTUsIDB4OTgsIDB4MjAsIDB4NDMsIDB4ODcsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMSwgMHgwMCwgMHg0MywKKwkweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDQzLCAweGU0LCAweDMxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDEsIDB4ZTIsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDUsCisJMHg0OCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwYSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDg4LCAweDAwLCAweDJkLCAweDQ0LCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYyLAorCTB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiYSwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDk4LCAweGIwLCAweDAxLCAweDAwLCAweDY0LCAweDk4LCAweGEyLCAweDEyLCAweDk4LCAweDZjLCAweDAwLCAweDAwLAorCTB4YmMsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTgsIDB4YTAsIDB4ZjIsCisJMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDljLCAweDAwLCAweDIwLCAweDQxLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGI0LCAweDAwLCAweDJkLCAweDEyLAorCTB4ODYsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4NjcsIDB4OTgsIDB4YTMsIDB4NDEsIDB4ZTAsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHg2OCwgMHg5OCwgMHgwMCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDAwLCAweDJkLCAweDQzLCAweDg0LCAweGQwLCAweDAxLCAweDAwLAorCTB4NmIsIDB4OTgsIDB4OWYsIDB4NDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2ZCwgMHg5OCwgMHhhMywgMHg0MiwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDZlLCAweDk4LCAweDAwLCAweDBhLCAweDBjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NzAsIDB4OTgsIDB4YTAsIDB4MTcsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgxNywgMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwgMHg3NSwgMHg5OCwgMHgyMiwgMHg0MCwKKwkweDBkLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDBhLCAweDBjLCAweGVjLCAweDAwLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4NzUsIDB4OTgsIDB4YTAsIDB4NDEsCisJMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHhmMCwgMHg4MCwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDI5LCAweDAwLCAweDAwLCAweDQwLCAweDg5LCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweDk5LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjYiwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHgwMywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg0MSwgMHg4NywgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NWQsCisJMHgwNSwgMHg5MCwgMHgwMCwgMHgwMCwgMHg4NCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDA1LCAweDQ4LCAweDZkLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDBjLAorCTB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4MDcsIDB4OTYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHg0YiwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNSwgMHgwMCwgMHgyYSwgMHgwYywKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA0LCAweGU2LCAweGIxLCAweDAxLCAweDAwLAorCTB4M2UsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4OTksIDB4MDAsIDB4MDgsCisJMHg4YSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4ZiwgMHg5OCwgMHg0NSwgMHg0OCwgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDEwLCAweDAwLCAweDA4LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDk1LCAweDk4LCAweDI4LCAweDQwLAorCTB4ODcsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4OTgsIDB4MjIsIDB4NDgsIDB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyMiwgMHg0MCwgMHgyNywgMHg2YywgMHgwMCwgMHgwMCwgMHgwNCwgMHg5NywgMHgxZCwgMHg0NiwKKwkweDg3LCAweGIwLCAweDAwLCAweDAwLCAweDk4LCAweDk4LCAweDIyLCAweDVmLCAweDExLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MTUsIDB4NjIsIDB4MzEsIDB4MDAsIDB4MDAsIDB4OTYsIDB4OTgsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDE0LCAweDJmLCAweDRjLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5YiwgMHg5OCwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGVmLCAweDk4LCAweDAwLCAweDQ5LCAweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQ5LAorCTB4MDYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4MDMsIDB4MDYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGEwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkzLCAweGMwLCAweDAxLCAweDAwLAorCTB4YTIsIDB4OTgsIDB4YTAsIDB4NTQsIDB4OTMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDUsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweGEyLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4YWIsIDB4OTgsIDB4YTIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0OSwgMHhiMywgMHgwMSwgMHgwMCwgMHhmNSwgMHg5OCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweDAyLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4YjUsIDB4MmUsIDB4MDgsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiMiwgMHg5OCwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDE4LCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDk3LCAweDJlLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiNiwgMHg5OCwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDE4LCAweDJlLCAweDA1LCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmEsIDB4OTgsIDB4YTIsIDB4NDEsCisJMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5NSwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDk0LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDY0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTYsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiOCwgMHg5NCwgMHgyMCwgMHg0MSwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg5NCwgMHgyMCwgMHg0MSwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDk4LCAweDk0LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNCwgMHg5OCwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NmYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjOCwgMHg5OCwgMHg4NSwgMHg0MSwgMHg5NywgMHg0MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDM5LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MzcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgzNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgzMywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQxLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4M2YsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDUsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHg0MiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDJmLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDJkLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHhiMywgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyYiwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweGVmLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4ZjEsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4YTUsIDB4M2MsIDB4OGIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg1YiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywKKwkweDQ1LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDU5LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgyNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg1MywgMHhiMywgMHgwMSwgMHgwMCwKKwkweGU0LCAweDk4LCAweGEyLCAweDUwLCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGU0LCAweDk4LCAweGEyLCAweDUxLAorCTB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4OTgsIDB4MDAsIDB4NDAsIDB4MWQsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHg0NiwgMHgwMCwgMHg0MCwgMHgxZCwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMCwgMHhhNiwKKwkweDg4LCAweGIzLCAweDAxLCAweDAwLCAweGZmLCAweDNmLCAweDAwLCAweGE2LCAweDNhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4YzAsIDB4MDAsIDB4OWQsIDB4M2IsIDB4OWIsIDB4MDEsIDB4MDAsIDB4YjQsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHgyMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0ZCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDA4LCAweDBhLCAweDAwLCAweGE2LCAweDE0LCAweGIzLCAweDAxLCAweDAwLCAweDAxLCAweDAxLCAweDAwLCAweDhhLAorCTB4MTUsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHhhNiwgMHg1NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1ZSwKKwkweDU3LCAweGI1LCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDRiLCAweDIwLCAweGU0LCAweDAxLCAweDAwLAorCTB4MDYsIDB4MDAsIDB4MDAsIDB4NGIsIDB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDMsIDB4MDAsIDB4NGIsCisJMHg5NiwgMHhjOCwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDIwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU3LAorCTB4MjEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OTksIDB4MmUsIDB4MGEsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmNiwgMHg5OCwgMHhhMiwgMHg0MSwKKwkweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YTksIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmYSwgMHg5OCwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg5OCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmZSwgMHg5OCwgMHhhMiwgMHg0MSwKKwkweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4OTgsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg5OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg5OSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDk4LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4OTksIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODgsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHg5OSwgMHg2YSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwYiwgMHg5OSwgMHgyMiwgMHg0ZiwKKwkweDc3LCAweDdkLCAweDAwLCAweDAwLCAweGYwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHg5OSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDk5LCAweDIyLCAweDRhLCAweDg5LCAweDdjLCAweDAwLCAweDAwLCAweDExLCAweDk5LCAweDIyLCAweDRmLAorCTB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMSwgMHg5OSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4YTIsIDB4NWEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwZiwgMHg5OCwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweGEyLCAweDVmLCAweDk5LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4ODgsCisJMHg5YSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhZSwgMHg5ZiwgMHgwMCwgMHg4OCwgMHg5YSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGFlLCAweDlmLCAweDAwLCAweDg4LCAweDlhLCAweGIwLCAweDAwLCAweDAwLCAweGFlLCAweDlmLCAweDAwLCAweDg4LAorCTB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4ODgsIDB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg5YSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5ZiwgMHg0MSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGIyLCAweDlmLCAweDIyLCAweDQwLCAweDdiLCAweDZmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTksIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg0MSwgMHg3YiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweGM0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGExLAorCTB4YzYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4YTIsIDB4YzgsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgxNCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhhOCwgMHg5ZiwgMHgwMCwgMHg0ZCwKKwkweDlhLCAweGNjLCAweDAxLCAweDAwLCAweGJiLCAweDlmLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjksIDB4OWYsIDB4YTIsIDB4NDEsCisJMHg5YiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhiZiwgMHg5ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDUyLCAweDQ5LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YzIsIDB4OWYsIDB4MDAsIDB4NDIsIDB4Y2QsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHg0YSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweGMyLCAweDlmLCAweDAwLCAweDQzLCAweGNiLCAweDkzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZDIsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHgxOSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5YSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGQxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLAorCTB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NGQsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhjYSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHgxOSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGQxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OWEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMiwgMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGUzLCAweDQzLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LAorCTB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4N2IsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0OCwgMHg0ZiwgMHg0MCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkMiwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGNiLAorCTB4ODEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ZjIsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDE4LCAweDA2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YzYsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MywgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQxLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI4LCAweDgwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyNywgMHg4MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI5LCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4OGQsIDB4OTgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzksIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3OCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDg3LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDEwLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhiMSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxOSwgMHg5OSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvb2FzaXNkb3dubG9hZC5oIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvb2FzaXNkb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MzhjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9vYXNpc2Rvd25sb2FkLmgKQEAgLTAsMCArMSw2ODQ4IEBACisjZGVmaW5lIE9BU0lTX1VDT0RFX1ZFUlNfU1RSSU5HCSIxLjIiCisjZGVmaW5lIE9BU0lTX1VDT0RFX1ZFUlNfREFURSAgCSIyMDA2LzAzLzI3IDE1OjEwOjM3IgorI2RlZmluZSBPQVNJU19VQ09ERV9IT1NUSUZfSUQgIAkzCisKK3N0YXRpYyBzMzIgT051bVNlY3Rpb25zID0gMHgyOworc3RhdGljIHUzMiBPU2VjdGlvblNpemVbXSA9IHsKKwkweDAwMDA0MDAwLCAweDAwMDEwMDAwLAorfTsKKworc3RhdGljIHUzMiBPU2VjdGlvblN0YXJ0W10gPSB7CisJMHgwMDAwMDAwMCwgMHgwMDAwODAwMCwKK307CisKK3N0YXRpYyB1OCBPYXNpc1VDb2RlWzJdWzY1NTM2XSA9Cit7CisJeworCTB4MTUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LAorCTB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4ODAsIDB4YTIsIDB4NDAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgwOSwgMHgwMCwgMHhhMiwgMHg0OSwgMHhkZCwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDQwLCAweGQxLCAweGIxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4YTIsIDB4NDAsCisJMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDBiLCAweDAwLCAweGE4LCAweGIxLCAweDdlLCAweDMxLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OGYsIDB4OTgsIDB4MTgsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5OCwKKwkweDgwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4ODAsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4NDAsIDB4OTgsCisJMHg4MCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGE1LCAweDk5LCAweDAxLCAweDAwLCAweDE5LCAweDAwLCAweDI5LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MTQsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwZSwgMHgwMCwgMHg5MywgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MWYsIDB4MDAsIDB4MjksIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxZiwgMHgwMCwgMHgxNCwgMHhiYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDEyLCAweDAwLCAweDkzLCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyNSwgMHgwMCwgMHgyOSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDI1LCAweDAwLCAweDE0LCAweGJjLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4OTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHhkZCwgMHg4MSwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDMzLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJhLCAweDAwLCAweDE0LCAweGJjLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4MDAsIDB4MTMsIDB4YmMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0MCwKKwkweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmZCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmZiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDMzLCAweDAwLCAweDE4LCAweGVlLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4YTIsIDB4NDEsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDIwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4ZTAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MzksIDB4MDAsIDB4OTgsIDB4ZWUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNiLCAweDAwLCAweDgwLCAweGYzLCAweGRlLCAweDMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4M2UsIDB4MDAsIDB4ODMsIDB4ZjMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDJlLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDk0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHgyNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3YywgMHgwMCwgMHgxOCwgMHhlZSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQ1LCAweDAwLCAweDk1LCAweGU4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweGU4LAorCTB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4N2MsIDB4MDAsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweGVjLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ2LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwgMHhlZSwgMHg4YiwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAxLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4ODEsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDgwLCAweDg4LCAweDAxLCAweDAwLCAweDNjLCAweDAwLCAweDAwLCAweDQwLCAweGQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZDYsIDB4OGQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZjAsCisJMHhmMCwgMHhkYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgxLCAweDk0LCAweDAxLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDQwLAorCTB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgxLCAweDk0LCAweDAxLCAweDAwLAorCTB4M2MsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhkNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ2LCAweGIxLCAweDAxLCAweDAwLCAweDFlLCAweDAwLCAweDAwLCAweGYwLAorCTB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ZjgsIDB4ODAsIDB4ZDgsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMCwgMHgyNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgxLCAweGQwLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDQwLCAweDgwLCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhkOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMCwgMHgyMiwgMHhmYSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgxLCAweGUwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZGUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmYSwKKwkweDgwLCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY2LCAweDgxLCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmYSwgMHg4MCwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY2LCAweDgxLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZDYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHhkNiwgMHhlNSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGQ1LCAweDk5LCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGZiLCAweGQ2LCAweGU1LCAweDAxLCAweDAwLAorCTB4NDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHhkNiwgMHhlNSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhkNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweGZiLCAweGQ2LCAweGU1LCAweDAxLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweGZiLAorCTB4N2EsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZGMsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3YywgMHgwMCwgMHgwMCwgMHg0YywgMHhkZCwgMHg5MSwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHg5NSwgMHhlOCwKKwkweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweGU5LCAweGZhLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZDEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDAwLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDg1LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODAsIDB4MjIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg3YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDhlLCAweDAwLCAweDA5LCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4OGMsIDB4MDAsIDB4MDgsIDB4ZjksIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDAsIDB4MWYsIDB4ZmQsCisJMHhmOSwgMHgzMywgMHgwMCwgMHgwMCwgMHg4YiwgMHgwMCwgMHg5ZSwgMHhmZCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGYzLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ4LAorCTB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHhmMywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDE5LCAweGIxLCAweDAxLCAweDAwLCAweDkzLCAweDAwLCAweDBhLCAweGY5LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDAsIDB4ZmIsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ZmQsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHhmOSwgMHhmMywgMHg4ZiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA3LCAweDQyLCAweGY5LCAweGYzLCAweDhmLCAweDAxLCAweDAwLCAweDk3LCAweDAwLCAweGEyLCAweGZmLAorCTB4ZjcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHhmZiwgMHhmYiwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmYywKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTQsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NiwgMHhmZCwgMHg3ZiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDk0LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweGNlLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4ZmQsIDB4N2YsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5NCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweDdmLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4OWEsIDB4MTMsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMiwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMSwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4OWEsIDB4MTMsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDIsIDB4MjksIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDY3LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweGZkLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweGUyLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDUsIDB4ODAsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0NiwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweDQwLCAweDJiLCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDYsIDB4ODgsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDQ2LCAweDgwLCAweDg4LCAweDAxLCAweDAwLCAweGE1LCAweGE1LCAweGEyLCAweDQwLAorCTB4ODAsIDB4Y2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OGQsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHhjOSwgMHgwMCwgMHg4MiwgMHg0MSwgMHg4OSwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsCisJMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDQ1LCAweDgwLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ0LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDgsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyYiwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQ2LCAweDgwLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4OTQsIDB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4YTUsIDB4YTUsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHg0ZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDg0LCAweDAwLCAweDQxLCAweDJjLCAweDk5LCAweDAxLCAweDAwLCAweGRlLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODgsIDB4MDAsIDB4NDEsIDB4MmMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg5NiwKKwkweDgwLCAweGIyLCAweDAwLCAweDAwLCAweGRmLCAweDAwLCAweGEyLCAweDQxLCAweDhkLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsCisJMHgyNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg4OSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDAwLCAweDAwLCAweDQ0LCAweDgyLCAweDE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDk0LAorCTB4OGEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4OCwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg5LCAweGQwLCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweDQ0LCAweDJiLCAweDQxLCAweDAxLCAweDAwLAorCTB4ZWMsIDB4MDAsIDB4MDgsIDB4NDEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4MDAsIDB4MDAsIDB4OTQsCisJMHgyNCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgyNCwgMHhmNSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDk0LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweGYyLCAweDAwLCAweGEwLCAweDQ0LAorCTB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MmIsIDB4NDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZiwgMHgwMCwgMHgyMCwgMHg0NCwKKwkweDg5LCAweDUwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQ1LCAweDg4LCAweGY0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OGEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4NDIsCisJMHg4OSwgMHhkMCwgMHgwMCwgMHgwMCwgMHhmNywgMHgwMCwgMHhhMCwgMHhmYSwgMHg4YSwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhiLCAweGMwLCAweDAxLCAweDAwLCAweGY1LCAweDAwLCAweGEzLCAweDQyLAorCTB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDUsIDB4ODgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4YSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhmYywgMHgwMCwgMHg5MCwgMHg0NCwKKwkweDhhLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhiLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDUsIDB4OGEsIDB4YTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTAsCisJMHg4YiwgMHhlMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg3ZiwgMHgwMCwgMHg0MCwgMHgyNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDAwLCAweDAwLCAweDQwLCAweDJiLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODMsIDB4MTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgyYSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweGY5LCAweDliLCAweDAxLCAweDAwLCAweGRkLCAweDAwLCAweDAwLCAweGZjLCAweDE5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDAsIDB4OTQsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgyYiwgMHg0MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGY5LCAweGMzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4MmIsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDEsIDB4OWYsIDB4OTQsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMiwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MSwKKwkweDkzLCAweGIwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDRkLCAweDkzLCAweGIwLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDEsIDB4MDAsIDB4NDksIDB4OTMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMSwgMHhhMiwgMHg0MSwgMHg5MywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDE4LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDE5LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDcxLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDcyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzMsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg3NCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NzcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDdhLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDdiLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N2MsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg3ZCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3ZSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDdmLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhMSwgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDExLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwYiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDAxLCAweGIwLCAweDAxLCAweDAwLCAweDNiLCAweDAxLCAweDIwLCAweDQ4LCAweGExLCAweDUxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NDcsIDB4MDEsIDB4MjIsIDB4NGIsCisJMHg3NCwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDAwLCAweDAwLCAweDRiLCAweDYwLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIxLAorCTB4N2UsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg0NSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGFhLCAweDk2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDMsIDB4OTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4YWEsCisJMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDA3LCAweDkwLCAweDAxLCAweDAwLCAweGQ4LCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDA3LCAweDkwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4OWYsIDB4MDAsIDB4NDAsIDB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MDEsIDB4MjIsIDB4Y2MsCisJMHg4NSwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsIDB4YTMsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhkMCwgMHgxNCwgMHgwMCwgMHg0MCwgMHhhMSwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NjMsIDB4MDEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHg4NSwgMHg5MywgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4YmEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmEsCisJMHhhNCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhiYywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDE0LCAweDJmLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU3LAorCTB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4YTksIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGY0LCAweDAxLCAweDAwLCAweDczLCAweDAxLCAweDAwLCAweDQwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLAorCTB4ODYsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg4NywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDg4LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDg5LCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDhmLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NTAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjYsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGM0LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM1LCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4MywgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwgMHhiOCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDI4LCAweDAwLCAweGQ0LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDI4LCAweDAwLAorCTB4ZDUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MjgsIDB4MDAsIDB4ZDYsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwgMHhkNywgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyOCwgMHgwMCwKKwkweDcyLCAweDAxLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDI4LCAweDAwLCAweDU1LCAweDAxLCAweDUxLCAweDQ5LAorCTB4ZmQsIDB4OTMsIDB4MjgsIDB4MDAsIDB4NTUsIDB4MDEsIDB4NTIsIDB4NGEsIDB4ZmQsIDB4OTMsIDB4MmEsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHg1NSwgMHg0OSwgMHhmZCwgMHg4MywgMHgyYSwgMHgwMCwgMHg1NSwgMHgwMSwgMHg1NiwgMHg0YSwKKwkweGZkLCAweDgzLCAweDJhLCAweDAwLCAweDUwLCAweDAxLCAweDkxLCAweDgxLCAweDgwLCAweDMwLCAweDJhLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MmEsIDB4MDAsIDB4NTAsIDB4MDEsIDB4OTEsIDB4ODIsCisJMHg4MCwgMHgzMCwgMHgyYSwgMHgwMCwgMHg1NSwgMHgwMSwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgyYSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg5LCAweGIwLCAweDJiLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQwLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4NDAsIDB4NDksIDB4OTksIDB4MDEsIDB4MDAsCisJMHhiMywgMHgwMSwgMHgyMiwgMHhkZSwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweGMwLCAweDAxLCAweDAwLAorCTB4OTIsIDB4MDEsIDB4YTIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg0OSwgMHhkMSwgMHgwMSwgMHgwMCwgMHg5YSwgMHgwMSwgMHgyMiwgMHg0MCwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDk2LCAweDAxLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDAwLCAweDQxLAorCTB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4YmYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg1MCwgMHgwMSwgMHhhMCwgMHgwZiwgMHhiZCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGMxLCAweDAxLCAweDAwLAorCTB4YjUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MTksIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHhmZiwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRlLCAweDE5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGZmLAorCTB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZmYsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHhmZiwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDE0LCAweDAwLCAweGE0LCAweDgwLCAweGNjLCAweDAxLCAweDAwLAorCTB4YWEsIDB4MDEsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMSwgMHhhMiwgMHg0YywgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGI0LCAweDAxLCAweDIyLCAweGQyLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDAxLCAweDIyLCAweDQxLAorCTB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4YTIsIDB4ZTAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhjMSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDg5LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQyLCAweDgwLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDEsIDB4NDMsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg0NCwgMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGIxLCAweDAxLCAweDAwLCAweDQ4LCAweDQ5LCAweGMxLCAweDAwLCAweDAwLCAweGFmLCAweDAxLCAweDAwLCAweDViLAorCTB4ODksIDB4OTAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4OWYsIDB4MDAsIDB4YTAsIDB4OWUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDIzLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4YmUsIDB4MDEsIDB4MjIsIDB4ZGUsIDB4ZTEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDAxLCAweGEyLCAweDQ0LCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDAwLCAweDQzLAorCTB4YmYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0MCwgMHhmOCwgMHg4MCwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwKKwkweDgwLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhjNiwgMHgwMSwgMHgwMCwgMHg0MCwgMHg5MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkxLCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDJlLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhjYiwgMHgwMSwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLAorCTB4ZDEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTMsIDB4MDEsIDB4MDAsIDB4ZGUsCisJMHhhMSwgMHhiMywgMHgwMCwgMHgwMCwgMHhlMywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweGViLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MDEsIDB4MDAsIDB4ZGYsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwKKwkweGExLCAweGIxLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweGQyLCAweGE1LCAweGU3LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMSwgMHgyMiwgMHg0NCwgMHhjMSwgMHg1MywgMHgwMCwgMHgwMCwKKwkweGRhLCAweDAxLCAweDg0LCAweDQxLCAweDgxLCAweDQwLCAweDAwLCAweDAwLCAweGRlLCAweDAxLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkNSwgMHgwMSwgMHgwMCwgMHg0MSwgMHhhMSwgMHhjMSwgMHgwMCwgMHgwMCwgMHhkYSwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4YTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGRhLCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweGQzLAorCTB4YTcsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4MDAsIDB4ZTAsIDB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMywgMHg5YiwgMHgwMSwgMHgwMCwgMHg1MywgMHgwMSwgMHgwMCwgMHhkZSwKKwkweGExLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGJmLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGUsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDEsIDB4YTIsIDB4YmEsCisJMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHhkZSwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGU4LCAweDAxLCAweGE4LCAweGIxLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDUyLCAweDAxLCAweDAwLCAweDQwLAorCTB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YmEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg2YiwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0ZCwKKwkweDgzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGUxLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZTMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhlNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhlOSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGViLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZjUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ZjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmOSwgMHhiMywgMHgwMSwgMHgwMCwgMHhmOSwgMHgwMSwgMHgyMiwgMHg0MCwKKwkweDhmLCAweDZmLCAweDAwLCAweDAwLCAweDc4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4NjAsIDB4MDIsIDB4MDAsIDB4YzcsIDB4ODMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0MiwgMHg4MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGU4LCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU5LAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWEsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVjLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGFjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGFiLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhiOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJiLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDIsIDB4YjgsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwZSwgMHgwMiwgMHhiOSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDEwLCAweDAyLCAweGJhLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMiwgMHhiYiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDE0LCAweDAyLCAweGJjLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTYsIDB4MDIsIDB4YmQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDE4LCAweDAyLCAweGJlLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MWEsIDB4MDIsIDB4YmYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgxYywgMHgwMiwgMHhjOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MWUsIDB4MDIsIDB4YzksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMiwgMHhjYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDIyLCAweDAyLCAweGNiLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgyNCwgMHgwMiwgMHhjYywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDI2LCAweDAyLCAweGNkLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDIsIDB4Y2UsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDJhLCAweDAyLCAweGNmLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDIsIDB4ZjAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMiwgMHhmMSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDIsIDB4ZjIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwMiwgMHhmMywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUzLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDM0LCAweDAyLCAweGY0LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgzNiwgMHgwMiwgMHhmNSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDM4LCAweDAyLCAweGY2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4M2EsIDB4MDIsIDB4ZjcsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDAyLCAweGY4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LAorCTB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4M2UsIDB4MDIsIDB4ZjksIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1OSwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMiwgMHhmYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDgxLCAweDkwLCAweDAxLCAweDAwLAorCTB4NDIsIDB4MDIsIDB4ZmIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWIsCisJMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwgMHg0NCwgMHgwMiwgMHhmYywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDQ2LCAweDAyLCAweGZkLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWQsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg0OCwgMHgwMiwgMHhmZSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwKKwkweDgxLCAweDkwLCAweDAxLCAweDAwLCAweDRhLCAweDAyLCAweGZmLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ODEsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhNSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MTQsIDB4MmUsIDB4MDYsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHhkMywgMHhhNywgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYxLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVmLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGRiLCAweDAxLCAweDAwLCAweGM3LCAweGUxLCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjYsIDB4MDIsIDB4MDAsIDB4NDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHg0MCwgMHgxYSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4NjMsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MDIsIDB4NDksIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MiwgMHg0MCwgMHgxYywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDRlLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg1ZiwgMHgwMiwgMHg0YSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwKKwkweDllLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGQ4LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4ZDAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsCisJMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHhkNCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGQ2LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQxLAorCTB4ZGMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4ZGUsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHhkYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwKKwkweDhlLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLCAweGU2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ZWMsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksCisJMHhmYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlMCwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGUyLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LAorCTB4ZTQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZTgsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHhlYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwKKwkweGY0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweGY2LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDUsIDB4ZjgsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzcsCisJMHhhOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg0MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDg0LCAweDAyLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDEwLCAweGIxLCAweDAwLCAweDAwLAorCTB4OGQsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwMiwgMHgwMCwgMHg0NiwgMHhhMywgMHhiMywgMHgwMCwgMHgwMCwKKwkweDliLCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGExLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGYsIDB4MDIsIDB4MjMsIDB4NTAsIDB4YTUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhNSwgMHhiMywgMHgwMSwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHg0MiwKKwkweGE1LCAweDYzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhiYSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwgMHhhMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDk3LCAweDAyLCAweDIyLCAweDQ0LAorCTB4YTUsIDB4NTMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDIsIDB4MDAsIDB4NDEsIDB4YTEsIDB4YzEsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHgwMCwgMHhkZCwgMHhhMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHhkZSwKKwkweGExLCAweDMzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHhiZiwgMHhiMywgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMSwgMHhhMiwgMHhkMiwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLAorCTB4NjMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OWUsIDB4MDIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg1NSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHgwMCwgMHg1NCwKKwkweGE1LCAweDMzLCAweDAxLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZDAsIDB4MTQsIDB4MmQsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHhkMCwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGQ0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ZDYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHg0NiwKKwkweDgzLCAweDMwLCAweDAxLCAweDAwLCAweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4OWUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsCisJMHg0MywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOSwgMHg0NSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGVhLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGViLAorCTB4YTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NDAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDE0LCAweDJlLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg4MSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhiZCwgMHgwMiwgMHgwMCwgMHg0MCwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweGMzLCAweDAyLCAweDAwLCAweDA1LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4MDIsIDB4MDAsIDB4MDUsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGQwLCAweDAyLCAweDAwLCAweDQ0LCAweGE1LCAweGIzLCAweDAwLCAweDAwLCAweGQyLCAweDAyLCAweDAwLCAweDQ0LAorCTB4YTUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHg4MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhjMSwKKwkweGYwLCAweDg5LCAweDAxLCAweDAwLCAweGM4LCAweDAyLCAweDIyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4YzQsIDB4MDIsIDB4MDAsIDB4NDEsIDB4YzEsIDB4YzMsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4MDIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQwLAorCTB4YTQsIDB4ZTcsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4OTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHhjOSwgMHhmMCwgMHg4OSwgMHgwMSwgMHgwMCwgMHhjOCwgMHgwMiwgMHgyMiwgMHg0MSwKKwkweDgxLCAweDUwLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweDQxLCAweGMxLCAweGMzLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4ZGUsIDB4ODUsIDB4ODksIDB4MDEsIDB4MDAsIDB4YzgsIDB4MDIsIDB4MDAsIDB4YzIsCisJMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHhkZSwgMHg5NSwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweGM4LCAweDAyLCAweDAwLCAweGNhLCAweGUwLCAweGIxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU3LCAweGE3LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4YTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZSwgMHgwMywgMHgwMCwgMHhjYiwgMHhhMywgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQyLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQxLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZTIsIDB4MDIsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjYywgMHg4NSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlNywgMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwKKwkweGE5LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4YWUsIDB4MDMsIDB4MDAsIDB4Y2IsIDB4YTMsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg0NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4MDIsIDB4MDAsIDB4ZDQsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweGNjLAorCTB4ODUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmYSwgMHgwMiwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHhmOSwgMHgwMiwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGNjLCAweDg1LCAweDgzLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQxLAorCTB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDMsIDB4MjIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgxMiwgMHgwMywgMHgyMiwgMHg0OCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwYywgMHgwMywgMHgyMiwgMHg0YywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDE2LCAweDAzLCAweDIyLCAweDUwLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MTcsIDB4MDMsIDB4MjIsIDB4NTQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDMsIDB4MjIsIDB4NTgsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHgxZSwgMHgwMywgMHgyMiwgMHg1YywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDUwLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLAorCTB4MDksIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGYzLCAweDgzLCAweDAxLCAweDAwLCAweDEwLCAweDAzLCAweGEyLCAweDQyLCAweDA1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MjIsIDB4Y2EsCisJMHgwNywgMHgxNCwgMHgwMCwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHg0NSwgMHhmMywgMHg5MywgMHgwMCwgMHgwMCwKKwkweGRkLCAweDlmLCAweDIwLCAweDQzLCAweDk1LCAweDZmLCAweDAwLCAweDAwLCAweGRkLCAweDlmLCAweDgwLCAweGNhLAorCTB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OWYsIDB4MjIsIDB4MDEsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwgMHg1NywgMHgwMSwgMHgwMCwgMHhiYywKKwkweGFiLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweGIxLCAweGIzLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OWYsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHhhMiwgMHg0MCwgMHg3NCwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDYwLCAweDAwLCAweDIwLCAweDQwLCAweDYwLCAweDk5LCAweDAxLCAweDAwLCAweDFiLCAweDAzLCAweGE4LCAweGIxLAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYSwgMHg3OSwgMHhiMywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4Y2IsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMywgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MmQsIDB4MDMsIDB4OTEsIDB4ODIsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgwLCAweGNlLCAweDAxLCAweDAwLCAweDJiLCAweDAzLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDMsIDB4NTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OWYsIDB4MDAsIDB4NDEsIDB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGNkLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MDMsIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDNkLCAweDAzLCAweDkxLCAweDgxLCAweDgyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg5LAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgzYiwgMHgwMywgMHhhNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgzZCwgMHgwMywgMHg1NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI1LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MDcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MDAsIDB4NDAsCisJMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGQ4LCAweDlmLCAweDAwLCAweDQxLCAweDhiLCAweGIzLCAweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzQsIDB4MTQsIDB4MmYsIDB4NDAsIDB4OTksIDB4YjMsIDB4MDEsIDB4MDAsCisJMHg1NywgMHgwMSwgMHgwMCwgMHg0MCwgMHg0OSwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDk0LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDkwLCAweDAwLCAweGY4LAorCTB4ODAsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODgsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDIzLCAweDkxLCAweDAxLCAweDAwLCAweDRkLCAweDAzLCAweDFmLCAweDkxLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjAsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgxZiwgMHg5MSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDQwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4MjMsIDB4OTEsIDB4MDEsIDB4MDAsIDB4NTMsIDB4MDMsIDB4MWYsIDB4OTEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgyMywgMHg5MSwgMHgwMSwgMHgwMCwgMHg1NSwgMHgwMywgMHgxZiwgMHg5MSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweDQwLCAweDIwLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0OCwgMHg4NCwgMHg4NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4OGYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1YSwgMHgwMywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHg0NywKKwkweDhlLCAweGM4LCAweDAxLCAweDAwLCAweDU4LCAweDAzLCAweDAwLCAweDVjLCAweDhmLCAweDgwLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTgsIDB4MTUsIDB4MmQsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyZCwgMHhmMCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODIsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4YiwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweDgzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDgyLCAweDk0LCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NjAsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4ZCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgyMiwgMHg1ZiwgMHg4ZCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDY1LCAweDAzLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLCAweDYzLCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDQzLCAweDg2LCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4NDEsIDB4ODUsIDB4NTAsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDMsIDB4MDAsIDB4NDEsCisJMHg4MywgMHhlMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDg1LCAweGUwLCAweDAxLCAweDAwLCAweGQwLCAweDE0LCAweDJmLCAweDQ2LAorCTB4ODQsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjAsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDUsIDB4ODAsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4YiwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDg1LCAweDAzLCAweGEwLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4ODMsIDB4MDMsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsCisJMHg4ZSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDhiLCAweDAzLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg4MiwgMHhmNCwgMHgwMSwgMHgwMCwgMHgxYSwgMHgxNSwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDcwLCAweDE1LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgzOSwgMHgwMCwgMHg0MCwgMHhlMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDcwLCAweDE1LCAweDAwLCAweDQzLCAweDYyLCAweDk5LCAweDAxLCAweDAwLAorCTB4OTUsIDB4MDMsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OTcsIDB4MDMsIDB4MjIsIDB4NWEsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3YSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDAzLCAweGE4LCAweGIxLCAweDdlLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDQyLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDMsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MTUsIDB4MmQsIDB4NDAsCisJMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxNCwgMHgyZCwgMHhmMCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE2LAorCTB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4NDgsIDB4OTAsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYSwKKwkweDhhLCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDMsIDB4MjIsIDB4NDAsCisJMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OGQsIDB4YzAsIDB4MDEsIDB4MDAsIDB4YjUsIDB4MDMsIDB4MjIsIDB4NWYsIDB4OGQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhNywgMHgwMywgMHhhMiwgMHg0MSwgMHg5MywgMHg1MCwgMHgwMCwgMHgwMCwgMHhhNSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGZmLCAweDA3LCAweDAwLCAweDQ3LCAweDg0LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4OWYsIDB4MDAsIDB4NDcsCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHg0NywgMHg4ZSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NTAsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDMsIDB4MjAsIDB4MTgsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDU1LCAweDliLCAweDAxLCAweDAwLAorCTB4YmUsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDEwLCAweDAwLCAweDQwLCAweDU1LCAweDliLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NTAsIDB4ZDMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NGYsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg0ZSwgMHhkMywgMHgwMSwgMHgwMCwgMHg2ZSwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDgyLCAweDAzLCAweDAwLCAweDQyLCAweDgwLCAweDMwLCAweDAxLCAweDAwLAorCTB4YjAsIDB4MDMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YzcsIDB4MDMsIDB4MjIsIDB4YTcsCisJMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwgMHg1YSwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YzgsIDB4MTQsIDB4MmUsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweGEwLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4Y2EsCisJMHhhNywgMHgzMywgMHgwMSwgMHgwMCwgMHhlMCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ2LCAweDAzLCAweDIyLCAweDQyLAorCTB4NzUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDMsIDB4MjIsIDB4NDEsIDB4NzUsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHgwMywgMHgxZSwgMHhjYSwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMywgMHgxZiwgMHhjYSwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGM5LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZGQsIDB4OWYsIDB4MDAsIDB4NDIsIDB4NzUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhjZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MSwgMHg3NSwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGNmLCAweGIxLCAweDAxLCAweDAwLCAweGRkLCAweDlmLCAweDAwLCAweDQwLAorCTB4NzUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODEsIDB4MDAsIDB4YTYsIDB4YzYsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweGM2LCAweGIxLCAweDAxLCAweDAwLCAweGRkLCAweDlmLCAweDAwLCAweDQwLCAweDc1LCAweGIzLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMSwgMHgwMCwgMHg0ZCwgMHg5MywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDAxLCAweDAwLCAweDRlLCAweDkzLCAweDMwLCAweDAxLCAweDAwLCAweDQ1LCAweDAxLCAweDAwLCAweDRjLAorCTB4OTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZWMsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhkZCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTQsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkZCwgMHg5ZiwgMHgwMCwgMHhjYSwgMHhlNSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4MTQsIDB4MmUsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsCisJMHhhMCwgMHhiMywgMHgwMSwgMHgwMCwgMHgxNSwgMHgwNCwgMHgwMCwgMHg0MywgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweGRhLCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDdjLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODksIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4OSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg4LCAweDhjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDg3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4YTUsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDMsCisJMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDg3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4YTUsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDQsIDB4MjIsIDB4NDQsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwYiwgMHgwNCwgMHgyMiwgMHg0NCwgMHg4YiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhmYSwgMHgwMywgMHhhMiwgMHg1MCwKKwkweGE1LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGE1LCAweGUzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjYywgMHgxNCwgMHgyZSwgMHhkMiwgMHg5NSwgMHhjMywgMHgwMSwgMHgwMCwKKwkweGFlLCAweDAzLCAweDAwLCAweGNiLCAweGEzLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwNCwgMHhhMiwgMHg0MSwgMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwNCwgMHhhMiwgMHhmMiwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGZhLCAweDAzLCAweDAwLCAweDQwLCAweGE1LCAweGIzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4YTUsIDB4ZTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHhhNywgMHhiMywgMHgwMSwgMHgwMCwgMHhlMSwgMHg5ZiwgMHgwMCwgMHhiYiwgMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGUwLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDksIDB4MmIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHhkYiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDk0LCAweGI0LCAweDhiLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDksCisJMHgyYiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwgMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDk0LAorCTB4YjQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQ5LCAweDJiLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4MjcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDYsIDB4YzAsIDB4MDAsIDB4NDAsIDB4MmQsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhkZSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDAyLCAweGM0LCAweDAwLCAweDQxLCAweDJjLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZGUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNSwgMHg4MiwgMHgwMCwgMHg0MSwgMHgyYywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGRlLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJkLCAweDA0LCAweDgwLCAweDk0LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDJkLCAweDk5LCAweDAxLCAweDAwLCAweGRlLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MzEsIDB4MDQsIDB4MDAsIDB4MTIsCisJMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDQ5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDRiLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NGQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg0ZiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDgwLCAweDUyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4NDAsIDB4NTQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NTYsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg1NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDgwLCAweDU5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDViLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NWQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHg1ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDQwLCAweDYyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4NjQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NjUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDY5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDZiLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YzAsIDB4NmMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg2ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3MCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDcyLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4YzAsIDB4NzMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NzUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg3NywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDc5LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweGMwLCAweDdhLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODAsIDB4N2MsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg3ZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NTksIDB4MDQsIDB4MDAsIDB4MTIsIDB4MTAsIDB4YzksIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDg0LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODYsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDhjLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDhlLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OTAsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5MiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5NCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDk2LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTgsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OWEsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5YywgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDllLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGEwLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTIsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhhNCwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGE4LCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YWEsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhhZSwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGIwLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGIyLCAweDgwLCAweDQwLAorCTB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhiNiwgMHg4MCwgMHg0MCwgMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiOCwgMHg4MCwgMHg0MCwKKwkweDBiLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGJhLCAweDgwLCAweDQwLCAweDBiLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YmMsIDB4ODAsIDB4NDAsIDB4MGIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YmUsIDB4ODAsIDB4NDAsCisJMHgwYiwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg4MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIxLCAweDAxLCAweDAwLCAweDgyLCAweDA0LCAweDg1LCAweDQxLAorCTB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDkwLCAweGIxLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDkyLCAweGIxLCAweDAxLCAweDAwLAorCTB4ODcsIDB4MDQsIDB4ODUsIDB4NDEsIDB4OTcsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHg2MCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDgwLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4ZjAsIDB4NGIsIDB4ODIsIDB4ODksIDB4MDEsIDB4MDAsIDB4OTMsIDB4MDQsIDB4NjAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweGYwLCAweGE2LCAweDgyLCAweGIxLCAweDAxLCAweDAwLCAweDk2LCAweDA0LCAweDYwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGIsIDB4ODQsIDB4ODksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhmMCwgMHhjMiwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwKKwkweDkwLCAweGIxLCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDgwLCAweDRiLCAweDkyLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4OTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTYsCisJMHg5MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0YiwgMHg5NCwgMHg4OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweGNhLCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4OTgsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg5OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweDk5LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDk4LCAweDk0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4OTksIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHg4OCwgMHg5NCwgMHgwMSwgMHgwMCwgMHhhNiwgMHgwNCwgMHg0NywgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFkLCAweDA0LCAweDIyLCAweDIwLCAweDg3LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFmLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGE2LCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4ODAsIDB4ODYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDQsIDB4MjIsIDB4NGYsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjEsIDB4MDQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHgwNCwgMHgyMiwgMHg0YiwgMHg4OSwgMHg3YywgMHgwMCwgMHgwMCwgMHhiNiwgMHgwNCwgMHgyMiwgMHg0ZiwKKwkweDc3LCAweDdkLCAweDAwLCAweDAwLCAweGMwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YjYsIDB4MDQsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgyMCwgMHg4NywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg5OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGMxLCAweDA0LCAweGE4LCAweGIxLCAweDUyLCAweDMzLCAweDAwLCAweDAwLCAweGM2LCAweDA0LCAweDIyLCAweDRiLAorCTB4NTMsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhjNCwgMHgwNCwgMHhhOCwgMHhiMSwgMHg3ZSwgMHgzMSwgMHgwMCwgMHgwMCwgMHhjMSwgMHgwNCwgMHhhMiwgMHg0MSwKKwkweDk5LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDRmLCAweDc3LCAweGZkLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDRlLCAweDk4LCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4OTgsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg5OSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5OCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDk5LCAweGUwLCAweDAxLCAweDAwLCAweGQ2LCAweDA0LCAweDAwLCAweDRjLAorCTB4ODgsIDB4OTQsIDB4MDAsIDB4MDAsIDB4ZDYsIDB4MDQsIDB4NDcsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHgwNCwgMHgyMiwgMHgyMCwgMHg4NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHhkNiwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFmLCAweDgwLCAweDg2LCAweGIzLCAweDAxLCAweDAwLCAweGUwLCAweDA0LCAweDIyLCAweDRmLAorCTB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGUxLCAweDA0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZTgsIDB4MDQsIDB4MjIsIDB4NGEsIDB4ODksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4MDQsIDB4MjIsIDB4NGYsCisJMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGU2LCAweDA0LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MjAsIDB4ODcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4OTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhmMSwgMHgwNCwgMHhhOCwgMHhiMSwgMHg1MiwgMHgzMywgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNCwgMHgyMiwgMHg0YSwKKwkweDUzLCAweDdmLCAweDAwLCAweDAwLCAweDZmLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZjQsIDB4MDQsIDB4YTgsIDB4YjEsIDB4N2UsIDB4MzEsIDB4MDAsIDB4MDAsIDB4ZjEsIDB4MDQsIDB4YTIsIDB4NDEsCisJMHg5OSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0ZiwgMHg3NywgMHhmZCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDA1LCAweGE4LCAweGIxLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDEyLCAweDA1LCAweDFkLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4NDksIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNSwgMHhhMiwgMHg0MCwKKwkweDg2LCAweDA0LCAweDAwLCAweDAwLCAweGRlLCAweDlmLCAweDljLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDAsIDB4ODgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDUsIDB4MDAsIDB4NTAsCisJMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4OCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDBjLCAweDA1LCAweDUyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQwLAorCTB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODksIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwNSwgMHgwMCwgMHg0OCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHgwNSwKKwkweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGRlLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MWIsIDB4MDAsIDB4ZGUsIDB4OWYsIDB4MDAsIDB4NDEsCisJMHhlMSwgMHhjMSwgMHgxYSwgMHgwMCwgMHg3OCwgMHgxOCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgxYiwgMHgwMCwKKwkweDE5LCAweDA1LCAweDIyLCAweDU0LCAweDgxLCAweDdjLCAweDFhLCAweDAwLCAweDE0LCAweDA1LCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MWEsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4YjMsIDB4NjcsIDB4ZGYsIDB4MWIsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHg0NCwgMHg5MywgMHg5MywgMHgxYiwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDFiLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLAorCTB4MjcsIDB4MDUsIDB4MGYsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4MDAsIDB4NDAsCisJMHg4OCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHg1MCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDAwLCAweDAwLCAweDQ0LCAweDg4LCAweGNjLCAweDAxLCAweDAwLCAweDFmLCAweDA1LCAweDk5LCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ODksIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgyMSwgMHgwNSwgMHg5YiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDg5LCAweGQwLCAweDAxLCAweDAwLCAweDIzLCAweDA1LCAweDFmLCAweDQ0LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwNSwgMHgwMCwgMHg0OCwgMHg0NywgMHgzMSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDA1LCAweDAwLCAweDU4LCAweDQ3LCAweDMxLCAweDAxLCAweDAwLCAweGRlLCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODYsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHhkZSwgMHg5ZiwgMHgyNiwgMHgwNSwKKwkweDQ3LCAweDMxLCAweDAwLCAweDAwLCAweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLAorCTB4ZGUsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4NDQsIDB4ZjAsIDB4NDEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwKKwkweGUxLCAweGMxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDRjLCAweDAxLCAweDAwLCAweDA3LAorCTB4OTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4OTcsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDQ0LCAweDA1LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHg0NSwgMHgwNSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDIsCisJMHhiMywgMHg0MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQyLCAweGIzLCAweDQzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhkYSwKKwkweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDUwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDgsCisJMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDUsIDB4YTIsIDB4NDEsIDB4OGYsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg0NSwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGZkLCAweGIxLCAweDAxLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweDQwLAorCTB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHhmZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZSwgMHhkYSwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsCisJMHhmZCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGRhLAorCTB4ZmQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg3YSwgMHgwNSwgMHgyMiwgMHg0NSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweGRiLCAweDlmLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwNSwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDdkLCAweDA1LCAweDIyLCAweDIwLCAweGI1LCAweDZmLCAweDAwLCAweDAwLCAweDdhLCAweDA1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MWYsIDB4MDAsCisJMHg3ZCwgMHgwNSwgMHgyMiwgMHg0MCwgMHg5NywgMHg2YywgMHgxZSwgMHgwMCwgMHg3YSwgMHgwNSwgMHg0MiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDFlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY3LCAweDkzLCAweDFmLCAweDAwLAorCTB4ZGYsIDB4OWYsIDB4MDAsIDB4NTgsIDB4NjcsIDB4OTMsIDB4MWUsIDB4MDAsIDB4NTQsIDB4MTYsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgxZiwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsCisJMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4ZjQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0NiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhiMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGY1LCAweDAxLCAweDAwLAorCTB4NDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0YSwgMHhiMiwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGRhLAorCTB4ZjcsIDB4ZjUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4OTUsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHgwNSwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgyYSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGE1LCAweDliLCAweDAxLCAweDAwLCAweDQwLCAweDE2LCAweDAwLCAweDQwLCAweGExLCAweDliLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YTcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4OWYsIDB4MDAsIDB4YmIsCisJMHg4NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlMCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YjgsIDB4MDUsIDB4MjIsIDB4NDUsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MTUsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgxYSwgMHgwMCwgMHgwMCwgMHhhMiwgMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweGYwLCAweDE1LCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGE3LCAweDA1LCAweGE4LCAweGJiLCAweGUxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWEsIDB4MDUsIDB4YTIsIDB4NDEsCisJMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHhhOSwgMHgwNSwgMHhhMiwgMHhmMiwgMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDRjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGIwLCAweDA1LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YjMsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHhiMSwgMHgwNSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGIzLCAweDliLCAweDAxLCAweDAwLCAweGYwLCAweDE1LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MDUsIDB4YTIsIDB4ZmEsCisJMHhiNCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MiwgMHhiMywgMHg0MywgMHgwMSwgMHgwMCwKKwkweGI4LCAweDA1LCAweGEyLCAweGZhLCAweGI0LCAweDZmLCAweDAwLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQyLAorCTB4YjMsIDB4NDMsIDB4MDEsIDB4MDAsIDB4YmIsIDB4MDUsIDB4MjIsIDB4ZmEsIDB4YjQsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHgwNSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDY3LCAweDkzLCAweDIxLCAweDAwLCAweGRmLCAweDlmLCAweDAwLCAweDU4LCAweDY3LCAweDkzLCAweDIwLCAweDAwLAorCTB4NDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MjEsIDB4MDAsIDB4ZGIsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHgzMSwgMHgyMSwgMHgwMCwgMHhmNiwgMHgxNSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgyMSwgMHgwMCwKKwkweDVjLCAweDE2LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDIxLCAweDAwLCAweDAwLCAweDAwLCAweDZlLCAweGZhLAorCTB4OGUsIDB4YjAsIDB4MjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLCAweGY0LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhiNCwgMHhiMywgMHgwMSwgMHgwMCwgMHhjOSwgMHgwNSwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGZjLCAweDE1LCAweDIwLCAweDIwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGNlLCAweDA1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MjQsIDB4MDAsIDB4ZGEsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MjUsIDB4MDAsCisJMHhjZSwgMHgwNSwgMHgyMiwgMHg0MCwgMHg5NywgMHg2YywgMHgyNCwgMHgwMCwgMHhjYiwgMHgwNSwgMHg0MiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY3LCAweDkzLCAweDI1LCAweDAwLAorCTB4ZGYsIDB4OWYsIDB4MDAsIDB4NTgsIDB4NjcsIDB4OTMsIDB4MjQsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgyNSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgyNSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQzLCAweDA1LCAweDIyLCAweDUwLAorCTB4YjUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmNiwgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweGYyLCAweGI0LCAweDMzLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MTUsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHhmMiwgMHhiNCwgMHgzMywgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweGZhLCAweDE1LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4ZjIsIDB4YjQsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHhmYywgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGEsIDB4YjQsIDB4OGIsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDRhLCAweGI0LCAweGY3LCAweDAxLCAweDAwLCAweDIwLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGU5LCAweDA1LCAweDIyLCAweDUwLCAweGI1LCAweDZmLCAweDAwLCAweDAwLAorCTB4ZWEsIDB4MDUsIDB4MDAsIDB4NTAsIDB4YjUsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGUwLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MzAsIDB4MzEsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzIsIDB4MzMsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNCwgMHgzNSwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDM2LCAweDM3LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDM4LCAweDM5LCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NDEsIDB4NDIsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg0MywgMHg0NCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDQ3LCAweDQ4LCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4NDksIDB4NGEsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGZjLCAweDA1LCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDgwLCAweDE2LCAweDJlLCAweDA2LAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4ZjYsIDB4YTksIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNSwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgzLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDYsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhkYywgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDE2LCAweDJkLCAweDA2LCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDE2LCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4ZjYsIDB4YTksIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwNiwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcxLCAweGY5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzIsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzMsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDU0LCAweDAwLCAweDAwLCAweDQwLCAweDk1LCAweDk4LCAweDAxLCAweDAwLCAweGRjLCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwNiwgMHgyMiwgMHg3MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQ1LCAweDY3LCAweDAwLCAweGE2LCAweGUwLCAweGIyLCAweDAxLCAweDAwLCAweDAxLCAweDIzLCAweDAwLCAweDcwLAorCTB4ZTEsIDB4OWEsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4ZWYsIDB4MDAsIDB4YTYsIDB4ZTIsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHg4OSwgMHhhYiwgMHgwMCwgMHg3MSwgMHhlMywgMHg5YSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg5OCwgMHgwMCwgMHhhNiwKKwkweGU0LCAweGIyLCAweDAxLCAweDAwLCAweGZlLCAweGRjLCAweDAwLCAweDcyLCAweGU1LCAweDlhLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MTAsIDB4MDAsIDB4YTYsIDB4ZTYsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NzYsIDB4NTQsIDB4MDAsIDB4NzMsCisJMHhlNywgMHg5YSwgMHgwMSwgMHgwMCwgMHhkMiwgMHhjMywgMHgwMCwgMHhhNiwgMHhlOCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGYwLCAweGUxLCAweDAwLCAweDc0LCAweGU5LCAweDlhLCAweDAxLCAweDAwLCAweDgwLCAweDE2LCAweDAwLCAweDRhLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY3LCAweGIxLCAweDAxLCAweDAwLCAweDI1LCAweDA2LCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4ODAsIDB4MTYsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZmMsIDB4MTYsIDB4MmEsIDB4NDcsCisJMHhlNywgMHhiNSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0YSwgMHhlOCwgMHhlNSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTYsIDB4M2QsIDB4NDYsIDB4OGQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywKKwkweDQwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGEzLCAweGMxLCAweDAxLCAweDAwLAorCTB4MmUsIDB4MDYsIDB4YTIsIDB4NDEsIDB4ODksIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhlYiwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHhlZCwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDcyLCAweGVmLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDczLAorCTB4ZjEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgwLCAweDg4LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLCAweGEyLCAweGM5LCAweDAxLCAweDAwLAorCTB4NGIsIDB4MDYsIDB4YTAsIDB4NTAsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDUwLCAweDAzLCAweDAwLCAweDRjLCAweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLAorCTB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywKKwkweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsCisJMHg5OSwgMHg4NCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMywgMHgwMCwgMHg0YywgMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDg2LCAweGE0LCAweDAxLCAweDAwLCAweDUwLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NDAsIDB4YTQsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4OCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDQxLCAweGYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQwLCAweDk0LCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ODksIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MWIsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHg4NSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDA2LCAweGEzLCAweDUzLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhiLCAweGE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDhiLCAweDg0LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDYsIDB4MDAsIDB4NDUsIDB4ODgsIDB4OTQsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1YSwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4ODksIDB4YTQsIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDYsIDB4MDAsIDB4NzgsIDB4ODksIDB4YTQsIDB4MDAsIDB4MDAsCisJMHgzYiwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1NywgMHgwNiwgMHhhYSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc2LCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsIDB4ODksIDB4ODQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzYsCisJMHg4YiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4YiwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDg4LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc3LAorCTB4OGIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4OGIsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwNiwgMHgwMCwgMHg0NSwgMHg4OCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc5LCAweDg1LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODQsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NmIsIDB4MDYsIDB4YTMsIDB4NTMsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHg4MiwgMHg1YSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDc5LCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDc4LCAweDA2LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHg3MCwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkOSwgMHg2ZSwgMHgwMCwgMHhhNiwKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGExLCAweGViLCAweDAwLCAweDQyLCAweDg0LCAweGM4LCAweDAxLCAweDAwLAorCTB4NzgsIDB4MDYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4M2IsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg3NSwgMHgwNiwgMHhhYSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDhmLCAweDAwLCAweGE2LCAweDg0LCAweGMwLCAweDAxLCAweDAwLCAweGRjLCAweGJjLCAweDAwLCAweDQyLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MDYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg2MiwgMHhjYSwgMHgwMCwgMHhhNiwgMHg4NCwgMHhjMCwgMHgwMSwgMHgwMCwgMHhkNiwgMHhjMSwgMHgwMCwgMHg0MiwKKwkweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDc4LCAweDA2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZjMsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzcsCisJMHhmMSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg3NiwgMHg4OSwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDAwLCAweDc2LCAweGVmLCAweGY2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZWUsIDB4OTYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsIDB4ZWQsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhlYSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDRmLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4MzcsIDB4MDYsIDB4MmEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsCisJMHhlMSwgMHhjMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NiwgMHhlMywgMHhjMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDc3LCAweGU1LCAweGMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LAorCTB4ZTcsIDB4YzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzksIDB4ZTksIDB4YzIsIDB4MDEsIDB4MDAsCisJMHgyYiwgMHgwNiwgMHg4MSwgMHg0MSwgMHg4ZCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweGRiLCAweDlmLCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTUsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiOSwgMHgwNiwgMHgyMiwgMHg0MCwgMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGRhLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGI5LCAweDA2LCAweGEyLCAweDQwLAorCTB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3YywgMHgxNiwgMHgyMCwgMHhmNiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDMxLCAweGIzLCAweDAxLCAweDAwLCAweDlkLCAweDA2LCAweDIyLCAweDRmLCAweDhmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4OWYsIDB4MDYsIDB4MjIsIDB4NDAsCisJMHg4ZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhhMywgMHgwNiwgMHgwMCwgMHg1NCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweGExLCAweDA2LCAweDIyLCAweDQyLCAweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YTMsIDB4MDYsIDB4MjIsIDB4NDEsIDB4OGYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHhiNywgMHgwNiwgMHgyMiwgMHg1MSwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDM4LCAweDA1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiMiwgMHgwNiwgMHhhMiwgMHg0MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDFlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweDEwLCAweDA0LCAweDAwLCAweDQ4LAorCTB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0YiwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4NDgsCisJMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHhiNSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDIwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhiNiwgMHgwNiwgMHgyMiwgMHg0MCwgMHhiNSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwNiwgMHgwMCwgMHg1NCwKKwkweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4MWMsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4N2YsIDB4ZDksIDB4MDEsIDB4MDAsIDB4YmEsIDB4MDYsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZTcsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDYsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU5LCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDNjLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwYSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDBjLCAweGM4LCAweDAxLCAweDAwLCAweGVhLCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDcsIDB4MjIsIDB4MDEsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweGE0LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ZDksIDB4MDYsIDB4YTMsIDB4MDcsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkYSwgMHgwNiwgMHg2OCwgMHgwMSwgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwNywKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDAyLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDBhLCAweGMwLCAweDAxLCAweDAwLCAweGVjLCAweDA2LCAweDIyLCAweDQwLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4MDYsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MjMsIDB4MDcsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4MDYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDYsIDB4YTgsIDB4NDAsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZSwgMHgwNiwgMHhhOCwgMHg0MCwgMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGUzLCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDE5LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwZiwgMHgwMCwgMHgwMCwgMHhmMiwgMHgzYSwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDNiLCAweGUwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWQsIDB4MDIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZmEsIDB4MDYsIDB4MjMsIDB4MWEsCisJMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgwMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDIzLCAweDA3LCAweDAwLCAweDAxLCAweDM0LCAweGMwLCAweDAwLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDFkLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MzAsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHgzMSwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDAyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDcsIDB4MjIsIDB4MWEsCisJMHgwMiwgMHg1MCwgMHgwMCwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHgwMSwgMHgzNCwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDAwLCAweDAwLCAweDE5LCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDJkLCAweDE0LAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgxNCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweDE0LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MTAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MjMsIDB4MDcsIDB4MDAsIDB4MWEsCisJMHgxMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDcsIDB4YTMsIDB4MTIsIDB4MGUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgxMCwgMHgwNywgMHg2MCwgMHgwNywgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgxMiwKKwkweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDBkLCAweDE2LCAweDk0LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsIDB4MTYsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAyLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4ODYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxNywgMHgwNywgMHhhOCwgMHg1YywKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDQwLCAweDA3LCAweDIyLCAweDBkLCAweDE0LCAweDUwLCAweDAwLCAweDAwLAorCTB4NDAsIDB4MDcsIDB4MjIsIDB4MGQsIDB4MjQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwNywgMHgyMiwgMHg0MiwgMHgyMywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDIzLCAweDA3LCAweDAwLCAweDQxLCAweDIzLCAweGMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgxZiwgMHgwNywgMHhhOCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4M2YsIDB4MDcsIDB4YTIsIDB4MGQsIDB4MGUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MDcsIDB4MjIsIDB4NDYsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDJjLCAweDA3LCAweDIyLCAweGYyLAorCTB4NjQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyOSwgMHgwNywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGUzLCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDYsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHhlMSwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDE4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzMsIDB4MDcsIDB4MWYsIDB4ZjAsIDB4MGUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhkMywgMHgwNiwgMHgwMCwgMHg0YywgMHgwZCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1ZiwKKwkweDBmLCAweDgwLCAweDAxLCAweDAwLCAweGQzLCAweDA2LCAweDIzLCAweDA3LCAweDE0LCAweDZjLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDNjLCAweDA3LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4ZDMsIDB4MDYsIDB4MDAsIDB4MDMsIDB4MGMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4MDYsIDB4MDAsIDB4MGQsCisJMHgxOCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgwNywgMHhhMiwgMHg0NCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE5LCAweDBhLCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MmQsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDBkLCAweDAwLCAweDJkLCAweDFkLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MzgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MGQsIDB4MDAsIDB4MjAsIDB4NTAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyZCwgMHg0MCwgMHgzZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgxNCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgxZCwKKwkweDk0LCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkxLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTIsIDB4MDcsIDB4YTAsIDB4ZmMsIDB4OTAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwNywgMHhhMiwgMHg0MSwgMHg5NSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDJlLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDE4LCAweDk0LCAweGY0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MTgsIDB4OTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDcsIDB4YTAsIDB4ZmMsCisJMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDVhLCAweDA3LCAweGEyLCAweDQxLCAweDk1LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDgwLCAweGIwLCAweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE2LCAweGIwLCAweDJkLCAweDAwLAorCTB4MjIsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHg0OCwgMHhjMSwgMHgyZCwgMHgwMCwgMHg2NCwgMHgwNywgMHg0MywgMHgzMCwgMHgzZCwgMHgwNywgMHgyYywgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDllLCAweDg1LCAweGIwLCAweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDQxLAorCTB4M2QsIDB4YzMsIDB4MmQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjAsIDB4NDIsIDB4ZWMsIDB4YjEsIDB4MmQsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxZSwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgyZSwgMHgxZCwKKwkweDgyLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDE4LCAweDgyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NmUsIDB4MDcsIDB4YTAsIDB4NDEsCisJMHg4MCwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQwLCAweDkyLCAweGY0LCAweDAxLCAweDAwLCAweDBhLCAweDAwLCAweDJlLCAweDMwLAorCTB4ODEsIDB4ODQsIDB4MDEsIDB4MDAsIDB4NzIsIDB4MDcsIDB4OTAsIDB4NDAsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwKKwkweDkzLCAweGE0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQ4LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4MTksIDB4ZTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwNywgMHhhMCwgMHgxOSwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDBkLCAweDAwLCAweDJmLCAweDFlLAorCTB4MzIsIDB4YzAsIDB4MDEsIDB4MDAsIDB4N2QsIDB4MDcsIDB4YTIsIDB4NDAsIDB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg3YywgMHgwNywgMHhhMCwgMHgxYywgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYzLCAweGYzLCAweDM4LCAweDk0LCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmUsIDB4MWUsCisJMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgxYSwgMHg5OCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDhiLCAweDA3LCAweDIyLCAweDQ2LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg4OSwgMHgwNywgMHgyMiwgMHhmMiwKKwkweDY0LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ODYsIDB4MDcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweDAzLCAweDQ2LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVmLAorCTB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDkxLCAweDA3LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDliLCAweDA3LCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHg5YiwgMHgwNywgMHgyMiwgMHhmMiwKKwkweDY0LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OTgsIDB4MDcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlMywgMHg5ZiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGViLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxNywgMHhmMCwgMHgwMSwgMHgwMCwgMHhhMSwgMHgwNywgMHg5MCwgMHhmMiwKKwkweDE2LCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsIDB4MTcsIDB4YTQsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgyYSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDJiLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwNywgMHgyMiwgMHhmMiwgMHg2NCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4YTksIDB4MDcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZTMsIDB4OWYsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxNywgMHgxMCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGM5LCAweDA3LCAweDIyLCAweDQwLCAweDE1LCAweDZjLCAweDAwLCAweDAwLCAweGI0LCAweDA3LCAweGEyLCAweDQ0LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhiMywgMHgwNywgMHgyMiwgMHg5ZiwgMHgxMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGNjLCAweDAxLCAweDAwLCAweGU0LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4M2YsIDB4YzMsIDB4MDEsIDB4MDAsIDB4ZTYsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiNywgMHgwNywgMHhhMiwgMHg0MSwgMHg4NywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDNlLCAweGMwLCAweDAxLCAweDAwLCAweGM5LCAweDA3LCAweDIyLCAweDQwLAorCTB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YmEsIDB4MDcsIDB4MjAsIDB4MWUsIDB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgzYywgMHhiMCwgMHgwMSwgMHgwMCwgMHhlNSwgMHg5ZiwgMHgwMCwgMHgxZSwKKwkweDI0LCAweDMwLCAweDAxLCAweDAwLCAweGJmLCAweDA3LCAweDIyLCAweDA4LCAweDJlLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgyMywgMHgwNywgMHgwMCwgMHg0MCwgMHgxNywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDlmLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGU1LCAweDlmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YmMsIDB4MDcsIDB4YTIsIDB4MDgsIDB4MmUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg4MCwgMHg4MCwgMHgwMCwgMHhhNiwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MDQsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4OWYsIDB4MDAsIDB4MWYsCisJMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MDQsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhlNiwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjZSwgMHgwNywgMHhhMiwgMHg0MSwKKwkweDg3LCAweDdjLCAweDAwLCAweDAwLCAweGNmLCAweDA3LCAweDAwLCAweDFlLCAweDNlLCAweGMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHgwZiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDlmLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4MDcsIDB4MDAsIDB4YmMsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAzLCAweDgwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJfSwKKwl7CisJMHgzMSwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDM1LCAweDgwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODAsIDB4ODEsIDB4ODAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwZSwgMHg4NywgMHhhMiwgMHg0MCwgMHg5MSwgMHg2ZiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDkwLCAweGIzLCAweDAxLCAweDAwLCAweDVjLCAweDk1LCAweDJlLCAweGEyLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjQsIDB4ODksIDB4MDEsIDB4MDAsCisJMHg5MCwgMHg5NSwgMHgyYSwgMHhjOCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhkMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlZSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTgsIDB4ODAsIDB4MTEsIDB4ODEsCisJMHg5OCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDFhLCAweDgwLCAweDExLCAweDgyLCAweDk4LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MGUsIDB4ODcsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwgMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMywgMHg4MCwgMHhhMiwgMHg0MiwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDgwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjIsIDB4ODAsIDB4MTEsIDB4ODEsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODAsIDB4NTEsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMiwgMHg4MCwgMHgxMSwgMHg4MiwgMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDIyLCAweDgwLCAweDUyLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJjLCAweDgwLCAweDAwLCAweDQ4LAorCTB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MjcsIDB4ODAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyNiwgMHg4MCwgMHhhMiwgMHg1MywgMHgwNywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHg1MywKKwkweDA3LCAweDkwLCAweDAxLCAweDAwLCAweDJhLCAweDgwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAwLCAweDAwLAorCTB4MjksIDB4ODAsIDB4YTIsIDB4NTIsIDB4MDcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4NTIsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MywgMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4ZjMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4NWMsIDB4OTUsIDB4MmUsIDB4YTIsIDB4NTIsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmNCwgMHg4OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE5LCAweDQ1LCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4NGMsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDgyLCAweDA1LCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDA1LCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0YywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweGRlLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGZkLCAweDkzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZmQsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5YiwgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHg5YywgMHhiMywgMHgwMSwgMHgwMCwKKwkweDQ4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDU4LCAweDk1LCAweDIwLCAweDQ0LAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgyNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHhlZSwKKwkweDk2LCAweDg4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDk3LCAweGYwLCAweDAxLCAweDAwLAorCTB4NDQsIDB4ODAsIDB4YTIsIDB4NDMsIDB4OTcsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMCwgMHhhNiwgMHgzNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE0LCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwNiwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY1LCAweDk5LCAweDAxLCAweDAwLCAweDA1LCAweDEwLCAweDAwLCAweDQwLCAweGY1LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDksIDB4MDAsIDB4NDAsIDB4ZjUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDg4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGEwLCAweDAzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YTIsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg5YSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg2MCwgMHg5NSwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDk1LCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4ZGQsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5MSwgMHhiMywgMHgwMSwgMHgwMCwgMHhlMCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg1LCAweGIzLCAweDAxLCAweDAwLCAweDVjLCAweDk1LCAweDIwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjcsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHgwNiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDJmLCAweDgxLCAweDAxLCAweDAwLCAweDhkLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZTUsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweGRkLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDQxLCAweGUxLCAweGMxLCAweDAwLCAweDAwLCAweDc4LCAweDE4LCAweDAwLCAweDQwLAorCTB4NDksIDB4OTksIDB4MDEsIDB4MDAsIDB4MTksIDB4MDUsIDB4MjIsIDB4NTQsIDB4ODEsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg2YywgMHg4MCwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHhiNCwKKwkweDY5LCAweGRmLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQ0LCAweDkzLCAweDkzLCAweDAxLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NDAsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4N2QsIDB4ODAsIDB4MjIsIDB4NDAsCisJMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHg3YSwgMHg4MCwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRmLCAweDY5LCAweDkzLCAweDAxLCAweDAwLCAweDM4LCAweDgxLCAweDAwLCAweDU4LAorCTB4NjksIDB4OTMsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHhmNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDgwLCAweDgwLCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4NjksIDB4OTMsIDB4MDEsIDB4MDAsIDB4MzgsIDB4ODEsIDB4MDAsIDB4NTgsCisJMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDA1LCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweGY2LCAweDE1LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4NWMsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2ZSwgMHhmYSwgMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhjMSwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg5NiwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDk2LCAweDgwLCAweDIyLCAweDQwLCAweDk3LCAweDZjLCAweDAwLCAweDAwLAorCTB4OTMsIDB4ODAsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsCisJMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwgMHgzOCwgMHg4MSwgMHgwMCwgMHg1OCwgMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDM4LCAweDA1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDFlLCAweDAwLCAweDAwLCAweDQ4LAorCTB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MDUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDgzLCAweDAyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YjgsIDB4MDIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhkNSwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ2LCAweDlmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZDcsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzIsIDB4MDEsIDB4MDAsIDB4NDEsCisJMHg4MSwgMHhjMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgwMSwgMHg1MSwgMHg0OCwgMHhmZCwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDU1LCAweDAxLCAweDUyLCAweDQ4LCAweGZkLCAweDkzLCAweDAwLCAweDAwLCAweDU1LCAweDAxLCAweDU1LCAweDQ5LAorCTB4ZmQsIDB4ODMsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4NTYsIDB4NGEsIDB4ZmQsIDB4ODMsIDB4MDAsIDB4MDAsCisJMHg1MCwgMHgwMSwgMHg5MSwgMHg4MSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHgwMSwgMHg0NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweDkxLCAweDgyLCAweDgwLCAweDMwLCAweDAwLCAweDAwLAorCTB4NTUsIDB4MDEsIDB4NDYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHhiNCwgMHg4MCwgMHg0MywgMHgzMCwgMHgzZCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZSwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDQxLCAweDNkLCAweGMzLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4NDIsIDB4ZWMsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZSwgMHgwMywgMHgwMCwgMHhjYiwgMHhhMywgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQyLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4ZDAsIDB4ZTEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YmYsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg5OCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDgwLCAweDAwLCAweDQwLCAweDhiLCAweGIzLCAweDAwLCAweDAwLCAweGIxLCAweDAzLCAweDAwLCAweDQwLAorCTB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzcsIDB4ODAsIDB4YTIsIDB4NDIsIDB4OTcsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHhhMSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDA0LCAweDgwLCAweDk0LCAweDAwLCAweDAwLAorCTB4ODAsIDB4MTUsIDB4M2YsIDB4NDIsIDB4OTcsIDB4ZTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMywgMHgwMiwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA3LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGNiLAorCTB4OTksIDB4Y2IsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4ZjMsIDB4ODMsIDB4MDEsIDB4MDAsCisJMHhkMSwgMHg4MCwgMHhhMiwgMHg0MiwgMHg5NywgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwKKwkweGYzLCAweDkzLCAweDAxLCAweDAwLCAweGFlLCAweDAzLCAweDAwLCAweGNiLCAweGEzLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGExLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg4MCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGY5LCAweDAyLCAweDAwLCAweDIwLCAweDQyLCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4NDEsIDB4MDUsIDB4NmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4Y2IsCisJMHhkYiwgMHg5MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg0MSwgMHg4YiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDYwLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGRlLCAweDgwLCAweGE4LCAweGIxLAorCTB4OGMsIDB4MzMsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhlMCwgMHg4MCwgMHhhOCwgMHhiMSwgMHg5NCwgMHgzMywgMHgwMCwgMHgwMCwgMHhlNiwgMHg4MCwgMHgxNCwgMHhjNiwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGM2LCAweDgzLCAweGY0LCAweDAxLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MjIsIDB4NGYsIDB4ODMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YzIsIDB4ODAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmZiwgMHgwMSwgMHgwMCwgMHhjNiwgMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGM2LCAweDk3LCAweGEzLCAweDAxLCAweDAwLCAweGMyLCAweDgwLCAweDFmLCAweDVjLAorCTB4OTcsIDB4NTMsIDB4MDAsIDB4MDAsIDB4NTgsIDB4ODIsIDB4MWUsIDB4YzYsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHg0MywgMHg4MSwgMHhmMCwgMHgwMSwgMHgwMCwgMHhlYywgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDEwLCAweGM5LCAweDAwLCAweDAwLCAweDM5LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NmEsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ODIsIDB4MDAsIDB4Y2EsCisJMHg2MywgMHhiMywgMHgwMCwgMHgwMCwgMHg2MSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQ4LCAweDgxLCAweDAwLCAweDRkLCAweDgzLCAweGIwLCAweDAwLCAweDAwLCAweDUyLCAweDgxLCAweDAwLCAweDRlLAorCTB4NjEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0OCwgMHg4MSwgMHgwMCwgMHg0YywgMHg4MywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGUzLCAweDgxLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLAorCTB4NzEsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZGYsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGYwLCAweDAzLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGY0LCAweDgyLCAweDAwLCAweGNhLAorCTB4OWIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4N2IsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg3ZiwgMHg4MSwgMHgwMCwgMHg0MCwgMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg4NiwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweGMxLCAweGIxLCAweDAwLCAweDAwLCAweDg3LCAweDgxLCAweDAwLCAweDQwLCAweGMxLCAweGIxLCAweDAwLCAweDAwLAorCTB4ODgsIDB4ODEsIDB4MDAsIDB4NDAsIDB4YzEsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODEsIDB4MDAsIDB4NDAsCisJMHhjMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDhhLCAweDgxLCAweDAwLCAweDQxLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDE4LCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OTcsIDB4ODIsIDB4MDAsIDB4YmIsIDB4YWIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgyNSwgMHg4MiwgMHgwMCwgMHhjYSwgMHhjZiwgMHhiMywgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMywgMHgwMCwgMHg0MCwKKwkweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGU4LCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MjYsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGY0LCAweDgyLCAweDAwLCAweGNhLCAweDc3LCAweGIzLCAweDAwLCAweDAwLCAweDQ5LCAweDgxLCAweDAwLCAweDRkLAorCTB4ODMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODEsIDB4MDAsIDB4NGUsIDB4NjEsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg0MSwgMHg4MSwgMHgwMCwgMHhiYiwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHg4MSwgMHgwMCwgMHg0YywKKwkweDgzLCAweGIwLCAweDAwLCAweDAwLCAweDQxLCAweDgxLCAweDAwLCAweGJiLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MjQsIDB4ODEsIDB4MDAsIDB4YmIsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHhjYSwgMHg0ZCwgMHhiMywgMHgwMCwgMHgwMCwKKwkweDcwLCAweDA1LCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAwLCAweDAwLCAweGEwLCAweDA1LCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ODEsIDB4MjIsIDB4NDIsIDB4OGYsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgxZSwgMHg4MSwgMHgyMiwgMHg0MSwgMHg4ZiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MSwgMHgxZSwgMHhjYSwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDgxLCAweDFmLCAweGNhLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4YzksIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4NDIsCisJMHg4ZiwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHhjZCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGY0LCAweDgyLCAweDAwLCAweDQxLCAweDhmLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLAorCTB4Y2YsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4OGYsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MSwgMHgwMCwgMHhhNiwgMHhjNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweGE2LCAweGM2LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4OGYsIDB4YjMsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MTgsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgyZiwgMHg5YywgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNiLCAweDgxLCAweDAwLCAweDQwLCAweDM5LCAweDMzLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDJmLCAweDliLAorCTB4ODksIDB4YjAsIDB4MDEsIDB4MDAsIDB4M2IsIDB4ODEsIDB4MDAsIDB4NDAsIDB4MzcsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHg5YSwgMHg4OSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzYiwgMHg4MSwgMHgwMCwgMHg0MCwKKwkweDM1LCAweDMzLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDJmLCAweDk5LCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4M2IsIDB4ODEsIDB4MDAsIDB4NDAsIDB4MzMsIDB4MzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4YWUsCisJMHg0NywgMHhjOSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4ZTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhZSwKKwkweDYzLCAweGRkLCAweDAxLCAweDAwLCAweDM2LCAweDgxLCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MzMsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzYsIDB4ODEsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweGY0LCAweDgyLCAweDFhLCAweDQ0LCAweDkzLCAweDkzLCAweDAwLCAweDAwLCAweDM5LCAweDgxLCAweDQyLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzgsIDB4ODEsIDB4MDAsIDB4NTgsIDB4NjksIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmMCwgMHhkMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGEyLCAweDQwLCAweGUxLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwgMHhlMSwgMHhkMSwgMHgwMSwgMHgwMCwKKwkweDQxLCAweDgxLCAweDM3LCAweDVjLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDUsIDB4ODEsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg0MiwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwKKwkweDYzLCAweGIxLCAweDAxLCAweDAwLCAweDQ1LCAweDgxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NGEsIDB4ODEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4MSwgMHgwMCwgMHhiYiwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGIsIDB4ODEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMSwgMHgwMSwgMHgwMCwgMHhmNCwgMHg4MiwgMHgyOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDRkLCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NTAsIDB4OTUsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTMsIDB4ODEsIDB4MDAsIDB4YmIsCisJMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg5NSwgMHgyZiwgMHg0MCwgMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDU1LCAweDgxLCAweDIyLCAweDQwLCAweDk1LCAweDdmLCAweDAwLCAweDAwLCAweGY0LCAweDgyLCAweDYwLCAweDQwLAorCTB4OTUsIDB4ODMsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg1NiwgMHg4MSwgMHgzNiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDU3LCAweDgxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTksIDB4ODEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHg2MywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDViLCAweDgxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjIsIDB4NDEsIDB4NDMsIDB4NTEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwOCwgMHgwMCwgMHhjYSwgMHg5NSwgMHhjYiwgMHgwMSwgMHgwMCwgMHg1NiwgMHg4MSwgMHgwMCwgMHg0MSwKKwkweDg1LCAweGMwLCAweDAwLCAweDAwLCAweDYzLCAweDgxLCAweGEyLCAweDQyLCAweDY3LCAweDZmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NjcsIDB4YjMsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ODEsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2NSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDkzLCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweGNhLAorCTB4NjksIDB4OTcsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg2OCwgMHg4MSwgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgxYSwgMHg0NCwKKwkweDkzLCAweDkzLCAweDAwLCAweDAwLCAweGY0LCAweDgyLCAweDIwLCAweDQzLCAweDk1LCAweDZmLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4ODAsIDB4Y2EsIDB4NjcsIDB4MzMsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjIsIDB4NDAsCisJMHg2NSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHg2ZiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwKKwkweDg1LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDM1LCAweDgwLCAweDIyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDk1LCAweDkzLCAweDAxLCAweDAwLCAweDc3LCAweDgxLCAweGEyLCAweDQ0LCAweDIxLCAweDZmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4OTUsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWUsCisJMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5NSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGMzLCAweGIxLCAweDAxLCAweDAwLCAweDdhLCAweDgxLCAweDIyLCAweDViLAorCTB4OTUsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHhmNCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxYiwgMHhmZCwgMHgwMCwgMHhjYSwKKwkweDk1LCAweDliLCAweDAxLCAweDAwLCAweDBkLCAweDAxLCAweDAwLCAweGNhLCAweGM1LCAweDMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4OTUsIDB4ODMsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4Y2EsCisJMHhjNSwgMHhiMSwgMHgwMCwgMHgwMCwgMHhkZiwgMHg2ZiwgMHgwMCwgMHhjYSwgMHg5NSwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU1LCAweDk1LCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLAorCTB4YzcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjIsIDB4NWYsIDB4OTUsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgwZCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDk1LCAweDgzLCAweDAxLCAweDAwLCAweGY0LCAweDgyLCAweDAwLCAweGNhLCAweGM3LCAweGIxLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MDAsIDB4Y2EsIDB4YzksIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4Y2EsCisJMHhjYiwgMHhiMSwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHhjYSwgMHhjZCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGY0LCAweDgyLCAweDAwLCAweGNhLCAweGNmLCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDQyLAorCTB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4OTgsIDB4MTQsIDB4MDAsIDB4NDAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhmNCwgMHg4MiwgMHgwMCwgMHhjYSwgMHhlMSwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDA5LCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4OGYsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NDEsCisJMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwgMHg5MSwgMHg4MSwgMHhhMiwgMHg1ZSwgMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDgwLCAweDAwLCAweGE2LCAweDA4LCAweGIxLCAweDAxLCAweDAwLCAweDkzLCAweDgxLCAweDlmLCAweDg1LAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4ODMsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHhjOCwgMHg4MSwgMHgyMiwgMHgzMCwgMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHg5MiwgMHg4MSwgMHhhMiwgMHg0ZiwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDIxLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDIsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTMsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4NCwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAzLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4ZmYsIDB4MDAsIDB4NDEsIDB4ODYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDEwLCAweGM0LCAweDAwLCAweDQzLCAweDg2LCAweDk4LCAweDAxLCAweDAwLAorCTB4YTgsIDB4ODEsIDB4YTIsIDB4NDMsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHgyMSwgMHhiMywgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDFjLCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLCAweGE1LCAweDgxLCAweGEyLCAweDVlLAorCTB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDgsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhiYSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwMSwgMHgwMCwgMHhhNiwKKwkweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDUwLCAweDBjLCAweDAwLCAweDQzLCAweDg2LCAweDk4LCAweDAxLCAweDAwLAorCTB4YWQsIDB4ODEsIDB4YTIsIDB4NDMsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgyMSwgMHhiMywgMHgwMSwgMHgwMCwgMHhiYSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQxLCAweDAxLCAweDAwLCAweGE2LCAweDg2LCAweGIwLCAweDAxLCAweDAwLCAweDYwLCAweDBjLCAweDAwLCAweDQzLAorCTB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YmEsIDB4ODEsIDB4YTIsIDB4NDMsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHgyMSwgMHhiMywgMHgwMSwgMHgwMCwgMHgxOCwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NzcsIDB4MDAsIDB4NDEsCisJMHg4MiwgMHg4YywgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMCwgMHg0MSwgMHg4MiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDQxLAorCTB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4YjgsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweGJiLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLAorCTB4NDAsIDB4MTMsIDB4MDAsIDB4NDEsIDB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzMsIDB4ODEsIDB4MjIsIDB4NDMsCisJMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLCAweGMwLCAweDgxLCAweGEyLCAweDVlLAorCTB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NDEsIDB4MDgsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhkZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDE5LCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLAorCTB4YzUsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4NDEsCisJMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwgMHhkZSwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDIxLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ODMsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHg4MywgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NywKKwkweDgzLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGMyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsCisJMHg4MywgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhjMiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODIsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDExLCAweDAwLCAweDAwLCAweDQxLCAweDgyLCAweGRjLCAweDAxLCAweDAwLAorCTB4ZDcsIDB4ODEsIDB4YTIsIDB4NWUsIDB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgwOCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGRhLCAweDgxLCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDQwLCAweDEzLCAweDAwLCAweDQxLAorCTB4MDgsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyZSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweGE2LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ODEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4ZTEsIDB4ODEsIDB4YTIsIDB4NWUsCisJMHgwYiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHg0MCwgMHgwOCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGM4LCAweDE0LCAweDJlLCAweGJiLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweGU0LCAweDgxLCAweGEyLCAweDVlLAorCTB4MGIsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmMywgMHg4MSwgMHgyMiwgMHg0MywgMHgyMSwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMiwgMHg4MiwgMHgyMiwgMHg0NCwKKwkweDIxLCAweDZmLCAweDAwLCAweDAwLCAweDExLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTMsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGEsIDB4ODIsIDB4MjIsIDB4NGEsCisJMHg4MywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweGVlLCAweDgxLCAweDIyLCAweDRkLCAweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4ODEsIDB4MjIsIDB4NGYsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHhmMiwgMHg4MSwgMHgyMiwgMHg0ZSwKKwkweDgzLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDg3LCAweDkwLCAweDAxLCAweDAwLAorCTB4MGEsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMywgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDgwLCAweDAwLCAweGE2LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDgyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGEsIDB4ODIsIDB4MjIsIDB4NDIsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHgxYywgMHg4MCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZmQsIDB4ODEsIDB4MjIsIDB4NDUsIDB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg4NywgMHg5MCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg4MSwgMHgyMiwgMHg0NCwgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDg3LCAweDkwLCAweDAxLCAweDAwLCAweDAxLCAweDgyLCAweDIyLCAweDQzLAorCTB4ODMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwYSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDgyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDEsIDB4ODAsIDB4MDAsIDB4YTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTMsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwYSwgMHg4MiwgMHgyMiwgMHg0MiwgMHg4MywgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHhhNiwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxMywgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDBlLCAweDgyLCAweDIyLCAweDRiLCAweDgzLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHg3ZiwgMHgwMCwgMHhhMiwgMHhhMCwgMHg4YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweGE1LCAweGIzLCAweDAxLCAweDAwLCAweGI4LCAweDgwLCAweDAwLCAweGNhLAorCTB4YTcsIDB4MzMsIDB4MDEsIDB4MDAsIDB4MzYsIDB4ODEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MiwgMHhkYywgMHgwMSwgMHgwMCwgMHgxNCwgMHg4MiwgMHhhMiwgMHg1ZSwKKwkweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDA4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MTYsIDB4ODIsIDB4OWYsIDB4ODUsIDB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgxYiwgMHg4MiwgMHgxNCwgMHhmNywgMHg4MSwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDFiLCAweDgyLCAweGEyLCAweDQ5LCAweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MWUsIDB4ODIsIDB4MTUsIDB4ZjgsIDB4ODEsIDB4MTQsIDB4MDAsIDB4MDAsCisJMHgxZSwgMHg4MiwgMHhhMiwgMHg0YSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDIwLCAweDgyLCAweGEyLCAweGM4LCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NDAsCisJMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlZiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDIyLCAweDgyLCAweDQyLCAweDQwLCAweGYxLCAweDMzLCAweDAwLCAweDAwLCAweDM4LCAweDgxLCAweDAwLCAweDQwLAorCTB4NjgsIDB4OTcsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4YmIsIDB4NmIsIDB4YjMsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg4MiwgMHgwMCwgMHhiYiwgMHhiMSwgMHhiMywgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQyLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGZmLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDE4LCAweGIxLCAweDAxLCAweDAwLCAweDJiLCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWIsIDB4ODEsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGY2LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDViLCAweDQzLCAweGMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MzUsIDB4ODIsIDB4YTIsIDB4NTQsCisJMHg4MywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgzLCAweGMwLCAweDAxLCAweDAwLCAweDNjLCAweDgyLCAweGEyLCAweDA2LAorCTB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxNiwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxNiwgMHgyZSwgMHgwNiwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGE5LCAweDAxLCAweDAwLAorCTB4NDIsIDB4ODIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwgMHhmNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDgyLCAweGEyLCAweDQxLCAweDgzLCAweDUwLCAweDAwLCAweDAwLCAweDYyLCAweDAwLCAweDAwLCAweDQwLAorCTB4OTUsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ZGMsIDB4OWYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgxNiwgMHgyZCwgMHgwNiwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxNiwgMHgwMCwgMHg0MCwKKwkweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweDVjLCAweDAwLCAweDAwLCAweGZiLCAweGY2LCAweGE5LCAweDAxLCAweDAwLAorCTB4NGIsIDB4ODIsIDB4YTIsIDB4NDEsIDB4ODMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDcyLCAweGY5LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDczLAorCTB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1NCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5NSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhkYywgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDk1LCAweGIwLCAweDAxLCAweDAwLAorCTB4NTcsIDB4ODIsIDB4MjIsIDB4NzAsIDB4YjUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI2LCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDQyLAorCTB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4NjIsIDB4ODIsIDB4MjIsIDB4NDQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg2YSwgMHg4MiwgMHgyMiwgMHg0OCwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg2NCwgMHg4MiwgMHgyMiwgMHg0YywKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDZlLCAweDgyLCAweDIyLCAweDUwLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4NmYsIDB4ODIsIDB4MjIsIDB4NTQsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NzEsIDB4ODIsIDB4MjIsIDB4NTgsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHg3NiwgMHg4MiwgMHgyMiwgMHg1YywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDUwLCAweDAxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLAorCTB4MDksIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweGYzLCAweDgzLCAweDAxLCAweDAwLCAweDY4LCAweDgyLCAweGEyLCAweDQyLCAweDA1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjIsIDB4Y2EsCisJMHgwNywgMHgxNCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg4MiwgMHgwMCwgMHg0NiwgMHhmMywgMHg5MywgMHgwMCwgMHgwMCwKKwkweGY0LCAweDgyLCAweDIwLCAweDQzLCAweDk1LCAweDZmLCAweDAwLCAweDAwLCAweGY0LCAweDgyLCAweDgwLCAweGNhLAorCTB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MjIsIDB4MDEsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg4MiwgMHgwMCwgMHhjYiwgMHhkYiwgMHg5MSwgMHgwMCwgMHgwMCwgMHg1NywgMHgwMSwgMHgwMCwgMHhiYywKKwkweGFiLCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweGIxLCAweGIzLCAweDAxLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MDAsIDB4Y2EsIDB4Y2YsIDB4YjMsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4Y2EsCisJMHg4MSwgMHg4OCwgMHgwMSwgMHgwMCwgMHhmNCwgMHg4MiwgMHhhMiwgMHg0MCwgMHg3NCwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDYwLCAweDAwLCAweDIwLCAweDQwLCAweDYwLCAweDk5LCAweDAxLCAweDAwLCAweDczLCAweDgyLCAweGE4LCAweGIxLAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NzIsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg4MiwgMHgwMCwgMHhjYSwgMHg3OSwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweGNiLCAweDgzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NzksIDB4ODIsIDB4YTIsIDB4NDEsCisJMHg4MSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDQ1LCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDg0LCAweDgyLCAweDkxLCAweDgyLAorCTB4ODIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGEsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhhZSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg4MiwgMHg4MiwgMHhhNiwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDg0LCAweDgyLCAweDU2LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTMsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwgMHhhMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAxLCAweDAwLCAweGQ4LCAweDlmLCAweDAwLCAweDQxLAorCTB4OGIsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhjZCwgMHg4MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDg5LCAweDgyLCAweGEyLCAweDQxLCAweDgxLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHg5NCwgMHg4MiwgMHg5MSwgMHg4MSwgMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGFlLCAweDlmLCAweDAwLCAweDQwLAorCTB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4OTIsIDB4ODIsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg5NCwgMHg4MiwgMHg1NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiNiwgMHgwMywgMHgwMCwgMHg0MCwKKwkweGExLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUyLCAweDA3LCAweDkwLCAweDAxLCAweDAwLAorCTB4YjYsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTMsCisJMHgwNywgMHg5MCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5ZiwgMHgwMCwgMHg0MSwgMHg4YiwgMHhiMywgMHgwMCwgMHgwMCwKKwkweGIxLCAweDAzLCAweDAwLCAweDQwLCAweGExLCAweDk5LCAweDAxLCAweDAwLCAweGM0LCAweDE0LCAweDJmLCAweDQwLAorCTB4OTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4NTcsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhhMCwgMHg5NCwgMHgyZSwgMHg0MywgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDliLCAweDgyLCAweGEyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLAorCTB4NTAsIDB4OTUsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YWMsIDB4OTQsIDB4MmUsIDB4NDMsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDlmLCAweDgyLCAweGEyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YWUsIDB4MDMsIDB4MDAsIDB4NDAsIDB4YTMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgxNSwgMHgwMCwgMHg0MCwKKwkweDg1LCAweDk4LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQwLCAweDQwLCAweGU0LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTksIDB4NDEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHg0MSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg0MCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU3LCAweDQxLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4NDIsIDB4ODEsIDB4NmMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhhMywgMHhjMSwgMHgwMSwgMHgwMCwgMHhhNSwgMHg4MiwgMHhhMCwgMHg0MiwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGE1LCAweDgyLCAweDAwLCAweDUwLCAweDg1LCAweGMwLCAweDAwLCAweDAwLAorCTB4ZGQsIDB4ODIsIDB4YTIsIDB4NDEsIDB4MDEsIDB4N2QsIDB4MDAsIDB4MDAsIDB4YjUsIDB4ODIsIDB4MjIsIDB4NTgsCisJMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDgyLCAweGE4LCAweGIxLCAweDljLCAweDMwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDM4LCAweDQ1LAorCTB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MGUsIDB4MTAsIDB4YzksIDB4MDAsIDB4MDAsCisJMHhiNSwgMHg4MiwgMHgzMywgMHhjNCwgMHg4MSwgMHgzMCwgMHgwMCwgMHgwMCwgMHhiOCwgMHg4MiwgMHhhMSwgMHhhZCwKKwkweDlkLCAweDIwLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDEzLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTMsIDB4NGUsIDB4NWEsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MzgsIDB4NDUsCisJMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHg4MiwgMHgyMiwgMHhhYiwgMHg4MCwgMHgwNCwgMHgwMCwgMHgwMCwKKwkweGJlLCAweDgyLCAweGEyLCAweDQwLCAweDAxLCAweDdkLCAweDAwLCAweDAwLCAweGMwLCAweDgyLCAweDIyLCAweDVmLAorCTB4NTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MzYsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhjMCwgMHg4MiwgMHgyMiwgMHg1ZSwgMHg1NywgMHg3ZCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM1LCAweDgyLCAweDIyLCAweDU0LCAweDczLCAweDdkLCAweDAwLCAweDAwLAorCTB4NzQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzAsIDB4ODIsIDB4YTgsIDB4YjEsCisJMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4YSwgMHg4NCwgMHhhMiwgMHg1ZiwgMHgwMSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGNhLCAweDg2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM3LCAweDgyLCAweGEyLCAweDVmLAorCTB4NTksIDB4MjcsIDB4MDAsIDB4MDAsIDB4YzksIDB4ODIsIDB4YTIsIDB4NWMsIDB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHhkMCwgMHg4MiwgMHhhMiwgMHg1ZSwgMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhkYSwgMHg4MiwgMHgyMiwgMHg1YywKKwkweDczLCAweDdkLCAweDAwLCAweDAwLCAweGRiLCAweDgyLCAweDM3LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4N2MsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4Y2EsIDB4ODIsIDB4YTgsIDB4YjEsCisJMHgzNiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGNjLCAweDgyLCAweGE4LCAweGIxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDFmLCAweDAwLCAweDAwLCAweDAwLAorCTB4MDIsIDB4ODgsIDB4MDEsIDB4MDAsIDB4YjksIDB4ODQsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhkYiwgMHg4MiwgMHgzNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg3ZSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGQxLCAweDgyLCAweGE4LCAweGIxLCAweDEyLCAweDMwLCAweDAwLCAweDAwLAorCTB4ZDgsIDB4ODIsIDB4NTIsIDB4MjEsIDB4MTMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4NDEsCisJMHgyZiwgMHhjMywgMHgwMSwgMHgwMCwgMHhmZiwgMHgzZiwgMHgwMCwgMHgwOSwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDAxLCAweGYwLCAweDAxLCAweDAwLCAweDExLCAweDgzLCAweDAwLCAweDM0LAorCTB4MTMsIDB4ODQsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4M2YsIDB4MTQsIDB4MDksIDB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsCisJMHg2ZiwgMHg4MywgMHgwMCwgMHg0MywgMHgwMSwgMHhmMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGRiLCAweDgyLCAweDMzLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MTMsIDB4NGUsIDB4NWEsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MGUsIDB4ODcsIDB4YTIsIDB4NDgsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHhhMiwgMHhhYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGUzLCAweDgyLCAweDIyLCAweDVhLCAweDczLCAweDdkLCAweDAwLCAweDAwLCAweDdhLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZTAsIDB4ODIsIDB4YTgsIDB4YjEsIDB4N2UsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHhjZiwgMHgxMSwgMHhjOSwgMHgwMCwgMHgwMCwgMHhlOSwgMHg4MiwgMHhhMiwgMHg0MCwKKwkweDkzLCAweDdmLCAweDAwLCAweDAwLCAweGU5LCAweDgyLCAweDIyLCAweDQ0LCAweDkzLCAweDdmLCAweDAwLCAweDAwLAorCTB4ZTUsIDB4ODIsIDB4NDIsIDB4YTUsIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4ODIsIDB4YTIsIDB4NDAsCisJMHg5MywgMHg3ZiwgMHgwMCwgMHgwMCwgMHhmYiwgMHg4MiwgMHgxYSwgMHg0MCwgMHg5MywgMHg5MywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFhLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweGRkLCAweDgwLCAweGEyLCAweDQwLAorCTB4NzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MDksIDB4ODcsIDB4MjIsIDB4NDQsIDB4MjEsIDB4NmYsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4NywgMHgyMiwgMHg0MCwgMHg2NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhhMiwgMHg1YiwKKwkweDczLCAweDdkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweGEyLCAweDQ5LCAweDMzLCAweDdkLCAweDAwLCAweDAwLAorCTB4ZjMsIDB4ODIsIDB4MjIsIDB4NDgsIDB4MzMsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDEsIDB4MDAsIDB4OTksCisJMHg4MCwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg4MSwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDk4LCAweDJmLCAweDQwLCAweDMzLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsIDB4ZGQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4YiwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmOSwgMHg4MiwgMHgzMywgMHg0MCwgMHgxZiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDEzLCAweDRlLCAweDVhLCAweDkzLCAweDAwLCAweDAwLCAweGZkLCAweDgyLCAweGEwLCAweGNlLAorCTB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGYsIDB4ODMsIDB4YTAsIDB4Y2QsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHg5YywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDBmLCAweDgzLCAweDIyLCAweGI1LCAweDgxLCAweDE0LCAweDAwLCAweDAwLAorCTB4ODAsIDB4MTUsIDB4MmYsIDB4NDAsIDB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ODMsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhiNCwgMHg2NSwgMHg5NywgMHgwMSwgMHgwMCwKKwkweGQwLCAweDE1LCAweDJlLCAweDQwLCAweDY5LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDFhLCAweDQ0LAorCTB4OTMsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MWEsIDB4MDAsIDB4MDAsIDB4YTIsIDB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMSwKKwkweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI1LCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwYSwgMHg4MywgMHhhOCwgMHhhMSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweGU5LCAweDgyLCAweDAwLCAweDg4LCAweDllLCAweGIzLCAweDAwLCAweDAwLCAweGU5LCAweDgyLCAweGEyLCAweDQxLAorCTB4NjcsIDB4NmYsIDB4MDAsIDB4MDAsIDB4ZTksIDB4ODIsIDB4MDAsIDB4NmYsIDB4ZGIsIDB4OTEsIDB4MDAsIDB4MDAsCisJMHgwZiwgMHg4MywgMHg0MiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhlOSwgMHg4MiwgMHgxYSwgMHg0MCwKKwkweDkzLCAweDgzLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDAwLCAweDA5LCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MGMsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MWEsIDB4ODMsIDB4YTYsIDB4NDIsCisJMHgxMywgMHg2MCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg5NCwgMHgwMCwgMHg5NSwgMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDE1LCAweDgzLCAweDYxLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDc1LCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTYsIDB4ODMsIDB4YTgsIDB4YjEsIDB4MGMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxZiwgMHg5NCwgMHg3MSwgMHgxMCwgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgxYiwgMHg4MywgMHgwMCwgMHg1OCwKKwkweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDA1LCAweDk0LCAweDAwLCAweDk1LCAweDAzLCAweDMwLCAweDAxLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDMsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGVlLCAweDA3LCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDIyLCAweDgzLCAweDIzLCAweDRiLAorCTB4ZTQsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MjIsIDB4ODMsIDB4MjIsIDB4NGIsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgyZiwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDI1LCAweDgzLCAweDgzLCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MjYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjcsIDB4ODMsIDB4ODUsIDB4MTcsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg0NywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDJjLCAweDgzLCAweDIyLCAweDU1LCAweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NDMsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgyZCwgMHg4MywgMHgwMCwgMHg0YiwKKwkweDQ0LCAweGMxLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4YTEsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDI4LCAweGYwLCAweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgyOCwgMHgzYywgMHg0NiwgMHgwZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHg0NCwKKwkweDk1LCAweGIwLCAweDAxLCAweDAwLCAweDM5LCAweDgzLCAweGEyLCAweGY4LCAweDBlLCAweDMwLCAweDAwLCAweDAwLAorCTB4NDksIDB4ODMsIDB4MjIsIDB4NDEsIDB4OTUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4NTAsCisJMHg0OSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgzNSwgMHg4MywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDM2LCAweDgzLCAweGEyLCAweGY4LCAweDE2LCAweDZjLCAweDAwLCAweDAwLCAweDM2LCAweDgzLCAweGEyLCAweGY4LAorCTB4MTAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzYsIDB4ODMsIDB4YTIsIDB4ZjAsIDB4MWEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg0NywgMHg4MywgMHgyMiwgMHg1OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwKKwkweDEzLCAweGYwLCAweDAxLCAweDAwLCAweDNlLCAweDgzLCAweDY1LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NDIsIDB4ODMsIDB4YTIsIDB4ZjMsIDB4NzQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHhlNiwgMHg5NSwgMHgwMSwgMHgwMCwgMHg0NywgMHg4MywgMHg3NSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDNmLCAweDAwLCAweDc1LCAweGYzLAorCTB4MGMsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0NSwgMHg4MywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDQ3LCAweDgzLCAweDY3LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NGYsIDB4ODMsIDB4NzcsIDB4NDEsIDB4MmQsIDB4YzMsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODMsIDB4MjIsIDB4NTgsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDRiLCAweDgzLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NGQsIDB4ODMsIDB4NjcsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHg3YywgMHg4MywgMHg3NywgMHg0MSwgMHgyZCwgMHhjMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwNywKKwkweDFhLCAweGY0LCAweDAxLCAweDAwLCAweGQ4LCAweDkyLCAweDAwLCAweDA3LCAweDE2LCAweDMwLCAweDAxLCAweDAwLAorCTB4NWQsIDB4ODMsIDB4MjIsIDB4NDEsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NTUsIDB4ODMsIDB4MjIsIDB4NDIsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDVjLCAweDgzLCAweDIyLCAweDVmLCAweDBmLCAweDdjLCAweDAwLCAweDAwLCAweGNjLCAweDkzLCAweDAwLCAweDVmLAorCTB4MDEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4NWIsIDB4ODMsIDB4MjIsIDB4NDAsIDB4OTUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDQxLCAweDkzLCAweDAwLCAweDUyLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4NDgsIDB4OTMsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2NSwgMHg4MywgMHhhMiwgMHg1YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDUzLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDY1LCAweDgzLCAweDIyLCAweDIwLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NjIsIDB4ODMsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgzMywgMHg5MywgMHgwMCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDI1LCAweDk1LCAweDAwLCAweDQyLCAweDYxLCAweDMxLCAweDAxLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDQsIDB4MDAsIDB4MDcsCisJMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDY4LCAweDgzLCAweDgyLCAweGYwLCAweDE4LCAweDMwLCAweDAwLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDQ1LAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MjAsIDB4MDAsIDB4YTYsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg2YywgMHg4MywgMHgyMiwgMHgxNywgMHg5NiwgMHgwNCwgMHgwMCwgMHgwMCwgMHhjOSwgMHg5NCwgMHgwMCwgMHg0YiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDRiLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4ZDgsIDB4OTMsIDB4MDAsIDB4MDMsIDB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YjQsIDB4OTEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg3YiwgMHg4OCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJlLCAweDEwLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDUwLAorCTB4MDMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1MCwKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDc3LCAweDgzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NzksIDB4ODMsIDB4YTgsIDB4MDAsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDBmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDQxLCAweDAwLCAweGE2LCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweGVlLCAweDA3LCAweDJlLCAweDQ3LAorCTB4OTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4OGYsIDB4ODMsIDB4MjIsIDB4MTcsIDB4OTYsIDB4MDQsIDB4MDAsIDB4MDAsCisJMHg4ZCwgMHg4MywgMHgyMiwgMHg0YiwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg4MywgMHgyMywgMHhhMiwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDQxLCAweDkzLCAweDAwLCAweDUyLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4NDEsIDB4OTcsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4MDAsCisJMHgxMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAxLCAweDgwLCAweDAxLCAweDAwLCAweDQ4LCAweDkzLCAweDAwLCAweDRiLAorCTB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHhhYywgMHg4MywgMHgwMCwgMHg1YywKKwkweDE3LCAweDkwLCAweDAwLCAweDAwLCAweGExLCAweDgzLCAweDIyLCAweDQzLCAweDJmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4OWEsIDB4ODMsIDB4MjIsIDB4NWYsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU4LCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg5NiwgMHg4MywgMHg2MiwgMHg0MiwgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDk3LCAweDgzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4NzIsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MmQsIDB4MDMsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwZiwgMHgwMCwgMHhmNiwgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDllLCAweDgzLCAweGEyLCAweGE2LCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGExLCAweDgzLCAweDAwLCAweGYyLAorCTB4M2EsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4ODQsIDB4YTIsIDB4NGIsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyYSwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGFjLCAweDgzLCAweDIyLCAweDRhLCAweDJmLCAweDdjLCAweDAwLCAweDAwLAorCTB4YWMsIDB4ODMsIDB4MjIsIDB4NDgsIDB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MmQsIDB4MDMsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzZiwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4NiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDAwLCAweDAwLCAweDQzLCAweDg0LCAweDg4LCAweDAxLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDQzLAorCTB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4OTgsIDB4OTQsIDB4M2QsIDB4NDIsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhhYywgMHg4MywgMHhhMiwgMHg0MiwgMHhlMCwgMHg3ZCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4NCwgMHhhMiwgMHg0YiwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmEsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWMsIDB4ODMsIDB4NjksIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMywgMHgwOSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc5LCAweDQxLCAweDQ3LCAweGMzLCAweDAxLCAweDAwLCAweGIyLCAweDgzLCAweDIyLCAweGExLAorCTB4MDksIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjUsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MywgMHgwMCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhlYiwgMHg4MywgMHhhMywgMHg5MiwKKwkweDAzLCAweDZjLCAweDAwLCAweDAwLCAweDdkLCAweDk1LCAweDAwLCAweDQwLCAweDk1LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NDMsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MmEsIDB4ODcsIDB4MjIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiOCwgMHg4MywgMHgyMiwgMHg1YywgMHgxNywgMHg3YywgMHgwMCwgMHgwMCwKKwkweGI5LCAweDgzLCAweDAwLCAweDAwLCAweDJhLCAweGIwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDAwLCAweDAwLAorCTB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHhiZCwgMHg4MywgMHhhMiwgMHg0MywgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhjYywgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQ5LCAweDgzLCAweDAwLCAweDVlLCAweDE3LCAweDkwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OGMsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4OTQsIDB4MDAsIDB4NGMsCisJMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg0NiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDgwLCAweDAwLCAweDEwLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweDAxLAorCTB4ZjAsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YzYsIDB4ODMsIDB4YTgsIDB4NTQsCisJMHgxNywgMHgxMCwgMHgwMCwgMHgwMCwgMHhkOSwgMHg4MywgMHgwMCwgMHg1ZSwgMHgxNywgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweGM4LCAweDAxLCAweDAwLCAweGQ4LCAweDgzLCAweDIyLCAweDQzLAorCTB4MmYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OGMsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwgMHhlZCwgMHg5NCwgMHgwMCwgMHg0MywKKwkweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDQ2LCAweDAyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwOSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDE1LAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhkOSwgMHg4MywgMHgyOCwgMHg1NCwKKwkweDE3LCAweDEwLCAweDAwLCAweDAwLCAweGQ1LCAweDgzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZWQsIDB4OTQsIDB4MDAsIDB4NDMsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4ZGIsIDB4ODMsIDB4MjIsIDB4NTAsCisJMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NiwgMHgxNywgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDE3LCAweDk4LCAweDg4LCAweDAxLCAweDAwLCAweGRlLCAweDgzLCAweGEyLCAweDQxLAorCTB4OTksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGRmLCAweDgzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhlNiwgMHg4MywgMHgyMiwgMHg0MywgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDE2LCAweDgwLCAweDAwLCAweDAzLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzUsIDB4OTQsIDB4MDAsIDB4NWUsIDB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsCisJMHhlOSwgMHg4MywgMHhhMiwgMHg1ZiwgMHgyZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg5MCwgMHg5MSwgMHgwMCwgMHgwMSwKKwkweDM4LCAweDQzLCAweDAxLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmEsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ODMsIDB4YTIsIDB4NGIsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHg4NCwgMHg4NCwgMHgwMCwgMHg0MSwgMHg0MywgMHhjMywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDI3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZWYsIDB4ODMsIDB4MzUsIDB4MDEsIDB4ODYsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg2ZCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhmNiwgMHg4MywgMHgyOCwgMHhiMSwKKwkweDMwLCAweDMwLCAweDAwLCAweDAwLCAweGYwLCAweDgzLCAweDIyLCAweDRkLCAweDc1LCAweDdkLCAweDAwLCAweDAwLAorCTB4NzQsIDB4ODQsIDB4YTIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg0MywgMHhjMywgMHgwMSwgMHgwMCwgMHg4MywgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDZkLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGY2LCAweDgzLCAweGE4LCAweGIxLAorCTB4MTIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ODMsIDB4YTIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg0MywgMHhjMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwKKwkweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDJjLCAweGIwLCAweDAxLCAweDAwLAorCTB4ZGUsIDB4MDcsIDB4MDAsIDB4NDMsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsIDB4ZjAsIDB4ODMsIDB4YWEsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDQwLCAweDAwLCAweDNlLCAweDQzLCAweDI3LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyNywgMHhjMCwgMHgwMSwgMHgwMCwgMHhmMCwgMHg4MywgMHhhMywgMHgwYiwKKwkweDg3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDQwLCAweDFiLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyZCwgMHg0MCwgMHgzOSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDBjLCAweDg0LCAweGEyLCAweDQwLCAweDI3LCAweDZjLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDAwLCAweDA4LAorCTB4MTIsIDB4YzgsIDB4MDEsIDB4MDAsIDB4ZGUsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MjUsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwZiwgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDEyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDMwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MjUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHgzMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGVlLCAweDA3LCAweDAwLCAweDQwLCAweDM3LCAweDk4LCAweDAxLCAweDAwLCAweDE0LCAweDg0LCAweDIzLCAweDAxLAorCTB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxZiwgMHg4NCwgMHg4MiwgMHg0MSwgMHgyMywgMHg0MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDFiLCAweDg0LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxOCwgMHg4NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGI4LCAweDkyLCAweDAwLCAweDQzLAorCTB4MjMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MmUsIDB4ODQsIDB4MjIsIDB4NDUsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgyNSwgMHg4NCwgMHhhOCwgMHgxNSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDAzLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4MjUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4NGMsCisJMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgzNywgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDJiLCAweGMwLCAweDAxLCAweDAwLCAweDE0LCAweDg0LCAweDAwLCAweDQ1LAorCTB4MWYsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4ODQsIDB4YTMsIDB4MTIsIDB4MzYsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzMSwgMHg4NCwgMHg2OCwgMHgxYiwgMHgyOCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgxMiwKKwkweDI4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDM0LCAweDg0LCAweGE4LCAweDE1LCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDVhLCAweDg0LCAweDIyLCAweDE0LAorCTB4MDIsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MzMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyNCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZCwgMHgxNCwKKwkweDEyLCAweGMwLCAweDAxLCAweDAwLCAweDUzLCAweDg0LCAweGEyLCAweDE0LCAweDM2LCAweDUwLCAweDAwLCAweDAwLAorCTB4NDQsIDB4ODQsIDB4MjIsIDB4NWMsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MiwgMHg4NCwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4M2YsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsCisJMHgyYiwgMHg4MCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwgMHgzNywgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDQ5LCAweDg0LCAweDIzLCAweDAxLCAweDM2LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorCTB4MzYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NTQsIDB4ODQsIDB4MjIsIDB4MWIsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1YywKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MTUsCisJMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDUwLCAweDg0LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NTQsIDB4ODQsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyYSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4NCwgMHhhMiwgMHg0MCwKKwkweDI1LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDM5LCAweGMwLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4M2QsIDB4NDMsIDB4MzksIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsCisJMHgyNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDE0LCAweDg0LCAweDAwLCAweGYwLCAweDMwLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODQsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxOSwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDVkLCAweDg0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHgyYiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgyZSwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDY0LCAweDg0LCAweDIyLCAweDUwLCAweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU2LAorCTB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MTcsIDB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg2NywgMHg4NCwgMHhhMiwgMHg0MSwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwKKwkweDE3LCAweDkwLCAweDAxLCAweDAwLCAweDZhLCAweDg0LCAweDIyLCAweDQzLCAweDJmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTYsIDB4MDAsIDB4MjAsIDB4MWQsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2YywgMHg4NCwgMHhhMywgMHg0MCwgMHgyNywgMHg2YywgMHgwMCwgMHgwMCwKKwkweDZlLCAweDg0LCAweDYwLCAweDVmLCAweDE3LCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDAwLCAweDBiLAorCTB4MTYsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MTMsIDB4MTYsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHg3NSwgMHg5NCwgMHgwMCwgMHg1ZSwgMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHgyYSwgMHg4NywgMHhhMiwgMHg1ZiwKKwkweDJmLCAweDdjLCAweDAwLCAweDAwLCAweDE0LCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTAsIDB4OTEsIDB4MDAsIDB4MDEsCisJMHgzOCwgMHg0MywgMHgwMSwgMHgwMCwgMHgyYSwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRkLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3NiwgMHg4NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDc4LCAweDg0LCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4ODMsIDB4ODQsIDB4MjIsIDB4MTMsIDB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDAsIDB4M2QsIDB4NDMsCisJMHg4MywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDJjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4N2UsIDB4ODQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4NCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDdhLCAweDg0LCAweDAwLCAweDQxLCAweDgzLCAweGMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4YTYsCisJMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDQxLCAweDkzLCAweDAwLCAweDUyLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NDgsIDB4OTMsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyYSwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweDAxLCAweDgwLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDBlLCAweGY0LCAweDAxLCAweDAwLAorCTB4M2YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5MiwgMHgwMCwgMHgwNywgMHgxNiwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDk1LCAweDg0LCAweDIyLCAweDQxLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDkzLCAweDg0LCAweDIyLCAweDQyLAorCTB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5NCwgMHg4NCwgMHgyMiwgMHg1ZiwgMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDBmLCAweGIwLCAweDAwLCAweDAwLCAweDlkLCAweDg0LCAweGEyLCAweDVhLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4NTMsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4OWQsIDB4ODQsIDB4MjIsIDB4MjAsCisJMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHg5YSwgMHg4NCwgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDMzLCAweDkzLCAweDAwLCAweDVjLAorCTB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MjUsIDB4OTUsIDB4MDAsIDB4NDIsIDB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwNCwgMHgwMCwgMHgwNywKKwkweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTMsIDB4ODQsIDB4MjIsIDB4M2EsCisJMHgwMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDdiLCAweDg4LCAweDAwLCAweDQwLCAweDAxLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhNywgMHg4NCwgMHhhMiwgMHg0MCwgMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDQwLCAweDAxLCAweGIwLCAweDAwLCAweDAwLAorCTB4MWUsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDUsIDB4OTQsIDB4MDAsIDB4OTUsCisJMHgwMywgMHgzMCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDIyLCAweDAwLCAweDJkLCAweGYwLAorCTB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MjAsIDB4MDAsIDB4YTYsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiMCwgMHg4NCwgMHgyMiwgMHgxNywgMHg5NiwgMHgwNCwgMHgwMCwgMHgwMCwgMHhjOSwgMHg5NCwgMHgwMCwgMHg0YiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDRjLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4YjIsIDB4ODQsIDB4ODMsIDB4MTcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwgMHhiNCwgMHg4NCwgMHg4NSwgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDQzLCAweGMxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweGY2LAorCTB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4YTEsIDB4MmEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHhkOCwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiNCwgMHg5MSwgMHgwMCwgMHg0MSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmUsIDB4ODQsIDB4NjQsIDB4NDcsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHhiZiwgMHg4NCwgMHhhOCwgMHgxYiwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDc0LCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MDMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MmQsIDB4MDMsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4NCwgMHgwMSwgMHhmYiwgMHgwOCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDM3LCAweDg1LCAweDg3LCAweGZiLCAweDIyLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLAorCTB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwNywgMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHhkOCwgMHg5MiwgMHgwMCwgMHgwNywKKwkweDE2LCAweDMwLCAweDAxLCAweDAwLCAweGRhLCAweDg0LCAweDIyLCAweDQxLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4Y2UsIDB4ODQsIDB4MjIsIDB4NDIsIDB4ODEsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhkOSwgMHg4NCwgMHgyMiwgMHg1ZiwgMHgwZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDM4LCAweDAwLCAweDAwLCAweDA0LCAweDdlLCAweDg5LCAweDAxLCAweDAwLCAweGQyLCAweDg0LCAweGE2LCAweDVmLAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTIsIDB4MDAsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkNywgMHg4NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxMywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MGMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiNywgMHg5MywgMHgwMCwgMHg0MCwgMHgwNSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDE0LCAweDg3LCAweDAwLCAweDQwLAorCTB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTIsIDB4ODQsIDB4YTIsIDB4NWEsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg1MywgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhlMiwgMHg4NCwgMHgyMiwgMHgyMCwKKwkweDg1LCAweDZjLCAweDAwLCAweDAwLCAweGRmLCAweDg0LCAweDljLCAweDBmLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzMsIDB4OTMsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyNSwgMHg5NSwgMHgwMCwgMHg0MiwgMHg2MSwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDkwLCAweDA0LCAweDAwLCAweDA3LAorCTB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlNiwgMHg4NCwgMHgyMSwgMHgwNCwKKwkweDgwLCAweDIwLCAweDAwLCAweDAwLCAweGU3LCAweDg0LCAweDAwLCAweDQwLCAweDEwLCAweGM5LCAweDAwLCAweDAwLAorCTB4YmQsIDB4ODcsIDB4MDAsIDB4NGIsIDB4ODEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4ODUsIDB4MDAsIDB4NDMsCisJMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHg4NSwgMHgwMCwgMHhmYiwgMHgyMiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGJkLCAweDg3LCAweDAwLCAweDQxLCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDRlLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ODUsIDB4MDAsIDB4NWEsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlZiwgMHg4NCwgMHgwMCwgMHg0NywgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiZCwgMHg4NywgMHgwMCwgMHg1MywKKwkweDgxLCAweGIwLCAweDAwLCAweDAwLCAweGJkLCAweDg3LCAweDAwLCAweDU2LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4N2IsIDB4ODgsIDB4YTAsIDB4MGEsCisJMHhlNCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHhmNSwgMHg4NCwgMHhhMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGY0LCAweDg0LCAweDIyLCAweDBhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDUzLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4N2IsIDB4ODgsIDB4MDAsIDB4NTQsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmZSwgMHg4NCwgMHgyMiwgMHgwYSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4NCwgMHhhMiwgMHgwYSwKKwkweGU0LCAweDZkLCAweDAwLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDVkLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHhmYywgMHg4NCwgMHhhMCwgMHg5MSwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDdiLCAweDg4LCAweDAwLCAweDVlLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDI1LCAweDAwLCAweDAwLCAweDQwLAorCTB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4N2IsIDB4ODgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4NSwgMHgyMCwgMHg5MSwgMHhlNSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHg3YiwgMHg4OCwgMHgwMCwgMHg1NCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDIxLCAweDAwLCAweDAwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLAorCTB4N2IsIDB4ODgsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzIsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3YiwgMHg4OCwgMHhhMCwgMHgwYSwgMHhlNCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDI0LCAweDAwLCAweDAwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLCAweDdiLCAweDg4LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4MiwgMHhmNCwgMHgwMSwgMHgwMCwgMHhiZCwgMHg4NywgMHhhMCwgMHg0MiwKKwkweDgzLCAweDZjLCAweDAwLCAweDAwLCAweGJkLCAweDg3LCAweDAwLCAweDU0LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHgxYSwgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA3LCAweDAwLCAweDAwLCAweDA3LCAweDE2LCAweDg4LCAweDAxLCAweDAwLCAweDEzLCAweDg1LCAweDIyLCAweDBiLAorCTB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhjNiwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDE0LCAweDg3LCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4MjUsIDB4ODUsIDB4MjIsIDB4NTAsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YTIsIDB4NTQsCisJMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgxOCwgMHg4NSwgMHgyMiwgMHg1NSwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDgyLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDEwLCAweDg1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODUsIDB4MjIsIDB4NTMsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsCisJMHgxNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDRiLCAweDgwLCAweGY0LCAweDAxLCAweDAwLAorCTB4MGMsIDB4YmMsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MjAsIDB4ODUsIDB4MjIsIDB4NDMsCisJMHg4MCwgMHg2YywgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHg0YiwgMHg4MCwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDg1LCAweGEyLCAweDQzLCAweDgwLCAweDZjLCAweDAwLCAweDAwLCAweDdjLCAweDk2LCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MjEsIDB4ODUsIDB4NDYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgyNCwgMHg4NSwgMHhhMCwgMHhmMCwgMHgzMCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxNiwgMHg4NSwgMHgxZSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDQxLCAweDMxLCAweGMzLCAweDAxLCAweDAwLAorCTB4NWQsIDB4OTIsIDB4MDAsIDB4NDAsIDB4MjUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MjksIDB4ODUsIDB4OWMsIDB4MGYsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDMzLCAweDkzLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDE0LCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDE4LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDBjLCAweGUwLCAweDk5LCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDQsIDB4MDAsIDB4MDcsIDB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsCisJMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4NSwgMHgzMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU2LCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweGExLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTYsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgyZSwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweGJkLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4MjgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDQxLCAweDg1LCAweDIyLCAweDQ2LCAweDIzLCAweDdjLCAweDAwLCAweDAwLCAweDNkLCAweDg1LCAweDIyLCAweDQwLAorCTB4ODcsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgzZiwgMHg4NSwgMHgyMiwgMHg0MSwgMHg4NywgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDQxLCAweDg1LCAweDIyLCAweDQyLCAweDg3LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NDEsIDB4ODUsIDB4NjYsIDB4MWIsCisJMHgyYywgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc2LCAweDQxLCAweDQxLCAweGMzLCAweDAxLCAweDAwLCAweDcwLCAweDg1LCAweDIzLCAweDkyLAorCTB4MTUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NzAsIDB4ODUsIDB4YTIsIDB4NDUsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg3NCwgMHg4NSwgMHgyMiwgMHg0YiwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgxNywgMHgwMCwgMHgwMCwgMHhkMCwKKwkweGEyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDI3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MjQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OTQsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHgwZiwgMHgzMCwgMHgwMSwgMHgwMCwgMHg2ZSwgMHg4NSwgMHgyMiwgMHgwOCwgMHg0MCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGEzLCAweGMxLCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDEyLAorCTB4MjQsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4NGEsIDB4ODUsIDB4YWEsIDB4NDEsIDB4MjcsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgxMywgMHg4MCwgMHhjYywgMHgwMSwgMHgwMCwgMHg2YSwgMHg4NSwgMHgyNiwgMHg0MCwKKwkweDIzLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweGIwLCAweDAxLCAweDAwLAorCTB4NjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg0OCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgxNywgMHgwMCwgMHgwMCwgMHhkMCwgMHhhMiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDU3LCAweDg1LCAweGEyLCAweDQwLCAweDgzLCAweDZjLCAweDAwLCAweDAwLCAweDYzLCAweDg1LCAweDAwLCAweDQxLAorCTB4ODMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NDIsIDB4NDQsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgyMSwgMHgzOCwgMHg5NiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHg1MCwKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweDVjLCAweDg1LCAweGEyLCAweDQ0LCAweDIzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHgyMCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NWYsIDB4ODUsIDB4YTgsIDB4NDIsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDIzLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGEzLCAweGMxLCAweDAxLCAweDAwLAorCTB4NTUsIDB4ODUsIDB4YTIsIDB4NDEsIDB4ODEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4ODUsIDB4MjIsIDB4NDAsCisJMHgyMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDY3LCAweDg1LCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlZSwgMHgwNywgMHgwMCwgMHg0MCwKKwkweDI1LCAweDk4LCAweDAxLCAweDAwLCAweDE3LCAweDAwLCAweDAwLCAweGQwLCAweDJhLCAweGM4LCAweDAxLCAweDAwLAorCTB4N2QsIDB4ODUsIDB4MDAsIDB4MTcsIDB4MTAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4N2UsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3NCwgMHg4NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDk0LCAweDkyLCAweDAwLCAweDkyLCAweDI1LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MzEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NzQsIDB4ODUsIDB4MjIsIDB4MDgsIDB4MmUsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg3ZCwgMHg4NSwgMHgwMCwgMHg0MSwgMHgyNywgMHhiMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweDA0LCAweGIwLCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLAorCTB4YzYsIDB4OTUsIDB4MDAsIDB4MGEsIDB4OGMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgwZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDg1LCAweDIyLCAweDlmLCAweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LAorCTB4MWMsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4ZjUsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MSwgMHgzZiwgMHhjMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDBmLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAxLCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4OTEsIDB4ODUsIDB4MmEsIDB4NDAsIDB4ODEsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDg2LCAweDg1LCAweGEyLCAweDQ4LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDg2LCAweDg1LCAweGEyLCAweDQ3LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODYsIDB4ODUsIDB4YTMsIDB4MDcsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHg4OSwgMHg4NSwgMHhhMywgMHg0MCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAxLCAweGYwLCAweGNkLCAweDAxLCAweDAwLAorCTB4OGIsIDB4ODUsIDB4MDAsIDB4NDAsIDB4MGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwZSwgMHhjYywgMHgwMSwgMHgwMCwKKwkweDI4LCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDhmLCAweDg1LCAweGE4LCAweDVjLCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMSwgMHgyZCwgMHg0MCwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDViLCAweDg2LCAweDIyLCAweDBmLCAweDQyLCAweDA1LCAweDAwLCAweDAwLCAweGEyLCAweDg1LCAweDljLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5ZCwgMHg4NSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4OWEsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGEyLCAweDg1LCAweDIyLCAweDA3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDIsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHhhMSwgMHg0NiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweGUxLCAweDkxLCAweDAxLCAweDAwLCAweGMwLCAweDA2LCAweGEyLCAweDQ1LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4NTQsCisJMHgyOSwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MGUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MGEsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwYywgMHgwMCwgMHgwMCwgMHhhNCwgMHgwYywgMHhjOCwgMHgwMSwgMHgwMCwgMHhkNiwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDAyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MjQsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIzLCAweGIwLCAweDAxLCAweDAwLCAweGZlLCAweDdmLCAweDAwLCAweDA1LAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjYiwgMHg4NSwgMHgyMiwgMHgwMSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwKKwkweDIzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweGE0LCAweDgwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjgsIDB4ODUsIDB4YTMsIDB4MDcsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHhiOSwgMHg4NSwgMHg2OCwgMHgwMSwgMHgxYSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDA3LCAweDFhLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLAorCTB4MDIsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDBhLCAweGMwLCAweDAxLCAweDAwLAorCTB4YzUsIDB4ODUsIDB4MjIsIDB4NDAsIDB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YzUsIDB4ODUsIDB4MjIsIDB4NDIsCisJMHgyMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZTksIDB4ODUsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhjMiwgMHg4NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YzcsIDB4ODUsIDB4YTgsIDB4NDAsCisJMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU5LCAweDg1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDQ0LAorCTB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHhkMCwgMHg4NSwgMHhhMywgMHgxMiwKKwkweDBlLCAweDZjLCAweDAwLCAweDAwLCAweGQxLCAweDg1LCAweDYwLCAweDA3LCAweDFhLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MTIsIDB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MGQsCisJMHgxNiwgMHg5NCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwYiwgMHgxNiwgMHhkOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDA4LCAweDNlLCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDQzLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4ODUsIDB4YTgsIDB4NWMsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODYsIDB4MjIsIDB4MGQsCisJMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHhkZSwgMHg4NSwgMHgyMiwgMHgwZCwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDEwLCAweGMwLCAweDAxLCAweDAwLCAweGUyLCAweDg1LCAweDAwLCAweDBkLAorCTB4MjQsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MmIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHhhMiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDEwLCAweGM4LCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLCAweDI1LCAweDk4LCAweDAxLCAweDAwLAorCTB4ZTQsIDB4ODUsIDB4MjIsIDB4NDIsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZTksIDB4ODUsIDB4MDAsIDB4NDEsCisJMHgyMywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGU1LCAweDg1LCAweGE4LCAweDVjLAorCTB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNywgMHg4NiwgMHgyMiwgMHgwZCwKKwkweDE0LCAweDUwLCAweDAwLCAweDAwLCAweDA2LCAweDg2LCAweGEyLCAweDBkLCAweDBlLCAweDUwLCAweDAwLCAweDAwLAorCTB4ZjUsIDB4ODUsIDB4MjIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgzMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGYzLCAweDg1LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHg4NSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIwLCAweDgwLCAweDAwLCAweDAzLCAweDQ2LCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4ZTEsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDYsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxOCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGZhLCAweDg1LCAweDFmLCAweGYwLAorCTB4MGUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YjIsIDB4ODUsIDB4MDAsIDB4NGMsIDB4MGQsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHg1ZiwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHhiMiwgMHg4NSwgMHgyMywgMHgwNywKKwkweDE0LCAweDZjLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDI0LCAweDAwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMywgMHg4NiwgMHhhOCwgMHg0NiwKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweGIyLCAweDg1LCAweDAwLCAweDAzLCAweDBjLCAweGIwLCAweDAwLCAweDAwLAorCTB4YjIsIDB4ODUsIDB4MDAsIDB4MGQsIDB4MTgsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MmUsIDB4MTQsCisJMHgwYSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweGZlLCAweDdmLCAweDAwLCAweDA1LCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJhLCAweGYyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGQsIDB4ODYsIDB4MjIsIDB4NDAsIDB4MzEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHgxOCwgMHgzOCwgMHg5NiwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDgxLCAweDAwLCAweGY2LCAweDgwLCAweGNlLCAweDAxLCAweDAwLAorCTB4MTEsIDB4ODYsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg0MywgMHhjMSwgMHgwMSwgMHgwMCwgMHgxMywgMHg4NiwgMHgyMiwgMHgwYiwgMHhlZCwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGExLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweGExLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OTQsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHg0YSwgMHg4NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNiwKKwkweDBlLCAweGIwLCAweDAxLCAweDAwLCAweDFiLCAweDg2LCAweDIyLCAweDQ3LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MWYsIDB4NDMsIDB4MGUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4ODYsIDB4YTAsIDB4NDYsCisJMHgwZiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDg2LCAweDIyLCAweDQ4LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4OTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MGYsIDB4YTIsIDB4NDIsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgyMiwgMHg4NiwgMHgwMCwgMHg0MCwgMHg4OSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHhhMiwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDg5LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4OTUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyNSwgMHg4NiwgMHhhMCwgMHg0MSwgMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDkxLCAweGMwLCAweDAxLCAweDAwLCAweDJhLCAweDg2LCAweDIyLCAweDQ3LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MmEsIDB4ODYsIDB4YTAsIDB4NDMsIDB4ODksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgyYSwgMHg4NiwgMHgyMCwgMHg0NSwgMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgyYSwgMHg4NiwgMHhhMCwgMHg0MSwKKwkweDBlLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBmLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODksIDB4YzAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4ODYsIDB4YTIsIDB4NDEsCisJMHg5NSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgzMywgMHg4NiwgMHgyMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQ4LCAweDkyLCAweGY0LCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDQ4LAorCTB4OTAsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MzEsIDB4ODYsIDB4OTAsIDB4NDgsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHhhMiwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDIwLCAweDkzLCAweGE0LCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MTQsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDEyLCAweDAwLCAweDAwLCAweDA1LCAweGUwLCAweGNkLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLAorCTB4ODAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg4NiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDQ0LCAweDg2LCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MTAsCisJMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwgMHg0MywgMHg4NiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDQ3LCAweDg2LCAweGEyLCAweDQ3LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4Y2MsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YzAsIDB4ODYsIDB4MDAsIDB4MTcsCisJMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkMywgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJmLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDRiLCAweDg2LCAweGEwLCAweDA3LAorCTB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDE3LCAweGYwLCAweDAxLCAweDAwLCAweDRmLCAweDg2LCAweDkwLCAweGYyLCAweDE2LCAweDQwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsCisJMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgyYSwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDJiLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg1OSwgMHg4NiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4NTYsIDB4ODYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxNywgMHgxMCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweGMwLCAweDg2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDYzLCAweDg2LCAweDljLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg2MywgMHg4NiwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NjAsIDB4ODYsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDY4LCAweDg2LCAweDIyLCAweDA3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDIsIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHhhMSwgMHg0NiwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwKKwkweGUxLCAweDkxLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDJlLCAweDAzLCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmQsIDB4ODYsIDB4MjIsIDB4NDAsCisJMHgzMSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDE4LCAweDM4LCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDEwLAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzIsIDB4ODYsIDB4YTgsIDB4NDAsCisJMHgyMywgMHgzMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDJkLCAweDUyLCAweDExLCAweGMwLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDBlLCAweGIwLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDAwLCAweGE0LCAweDBjLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4M2MsIDB4NDQsIDB4MjMsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweDgwLCAweDg2LCAweGEzLCAweDEyLCAweDBlLCAweDZjLCAweDAwLCAweDAwLCAweDgxLCAweDg2LCAweDY4LCAweDA3LAorCTB4MWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MTIsIDB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwKKwkweDNlLCAweDk2LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDg2LCAweDg2LCAweGE4LCAweDVjLCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweGI1LCAweDg2LCAweDIyLCAweDBkLAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OGMsIDB4ODYsIDB4MjIsIDB4MGQsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHg4NiwgMHgwMCwgMHgwZCwKKwkweDI0LCAweGQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDJiLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4YTIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwgMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwgMHgyNSwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDkyLCAweDg2LCAweDIyLCAweDQyLCAweDIzLCAweDZjLCAweDAwLCAweDAwLCAweDk3LCAweDg2LCAweDAwLCAweDQxLAorCTB4MjMsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg5MywgMHg4NiwgMHhhOCwgMHg1YywKKwkweDFmLCAweDAwLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MGQsCisJMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwgMHhiNCwgMHg4NiwgMHhhMiwgMHgwZCwgMHgwZSwgMHg1MCwgMHgwMCwgMHgwMCwKKwkweGEzLCAweDg2LCAweDIyLCAweDQ2LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHhhMSwgMHg4NiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4OWUsIDB4ODYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NiwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweGUxLCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJkLCAweDA2LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHg4NiwgMHgxZiwgMHhmMCwKKwkweDBlLCAweDMwLCAweDAwLCAweDAwLCAweDdiLCAweDg2LCAweDAwLCAweDRjLCAweDBkLCAweGMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NWYsIDB4MGYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4N2IsIDB4ODYsIDB4MjMsIDB4MDcsCisJMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDI0LCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YjEsIDB4ODYsIDB4YTgsIDB4NDYsCisJMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwgMHg3YiwgMHg4NiwgMHgwMCwgMHgwMywgMHgwYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDdiLCAweDg2LCAweDAwLCAweDBkLCAweDE4LCAweGMwLCAweDAwLCAweDAwLCAweGJlLCAweDg2LCAweDIyLCAweDVjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgzYywgMHg0NCwgMHgyMywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgxMCwKKwkweDQ4LCAweGMxLCAweDAxLCAweDAwLCAweGJlLCAweDg2LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhiYiwgMHg4NiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE3LAorCTB4MTAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4ODYsIDB4MDAsIDB4NDAsIDB4MmIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGM1LCAweDg2LCAweDIyLCAweDlmLCAweDEzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MWMsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4ZjUsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhkNywgMHg5NSwgMHgwMCwgMHg0MSwgMHgzZiwgMHg0MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OTUsIDB4MDAsIDB4NDAsIDB4MGYsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgyYSwgMHg4NywgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDBlLCAweGY0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNhLCAweDAxLCAweDg0LCAweDAxLCAweDAwLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MWEsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OTIsIDB4MDAsIDB4MDcsCisJMHgxNiwgMHgzMCwgMHgwMSwgMHgwMCwgMHhkNCwgMHg4NiwgMHgyMiwgMHg0MSwgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGQyLCAweDg2LCAweDIyLCAweDQyLCAweDgxLCAweDZjLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDMsIDB4ODYsIDB4MjIsIDB4NWYsIDB4MGYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkYywgMHg4NiwgMHhhMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDUzLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZGMsIDB4ODYsIDB4MjIsIDB4MjAsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZDksIDB4ODYsIDB4OWMsIDB4MGYsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDMzLCAweDkzLCAweDAwLCAweDVjLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDI1LCAweDk1LCAweDAwLCAweDQyLAorCTB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5MCwgMHgwNCwgMHgwMCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE4LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YmQsIDB4ODcsIDB4YTIsIDB4NWYsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHg0MywgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDM3LCAweDAwLCAweDJkLCAweGYwLCAweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGYzLAorCTB4OGUsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTAsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHhlYiwgMHg4NiwgMHgyMiwgMHg0OCwgMHg4ZSwgMHg2YywgMHgwMCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLCAweGU3LCAweGUxLCAweDAxLCAweDAwLAorCTB4ZWIsIDB4ODYsIDB4MWYsIDB4ZjAsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZWEsIDB4ODYsIDB4MjMsIDB4NDEsCisJMHg4ZiwgMHg2YywgMHgwMCwgMHgwMCwgMHhiZCwgMHg4NywgMHgwMCwgMHg0NywgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGJkLCAweDg3LCAweDAwLCAweDQ4LCAweDgxLCAweGIwLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHg4NiwgMHgyMiwgMHgwYSwgMHg5MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHhhYSwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDkxLCAweDMwLCAweDAxLCAweDAwLCAweGJkLCAweDg3LCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4YjAsIDB4MDAsIDB4MmQsIDB4NDUsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZmMsIDB4ODYsIDB4MjIsIDB4ZjAsCisJMHgyYywgMHgzMCwgMHgwMCwgMHgwMCwgMHhhMywgMHgwMCwgMHgyZCwgMHgzMCwgMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGFjLCAweDAwLCAweDJkLCAweGYzLCAweDgyLCAweGUwLCAweDAxLCAweDAwLCAweGY2LCAweDg2LCAweGEzLCAweDQxLAorCTB4MmMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5OCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDgyLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDk4LCAweGU4LCAweDAxLCAweDAwLAorCTB4YmQsIDB4ODcsIDB4MjAsIDB4NGMsIDB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4N2MsIDB4MDAsIDB4MmQsIDB4NDEsCisJMHg5OCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhiZCwgMHg4NywgMHgyMCwgMHhmMCwgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDE0LCAweDg3LCAweDIyLCAweDBhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDBjLAorCTB4N2UsIDB4ODksIDB4MDEsIDB4MDAsIDB4MTQsIDB4ODcsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhiZCwgMHg4NywgMHgwMCwgMHg0OSwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHhhNiwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDg3LCAweDIyLCAweDQzLCAweDIxLCAweDZmLCAweDAwLCAweDAwLAorCTB4MTMsIDB4ODAsIDB4MDAsIDB4NDAsIDB4ODAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHg4MCwgMHgwMCwgMHg0MCwgMHg4MCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDA1LCAweDg3LCAweGEyLCAweDVlLCAweDBiLCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDcsIDB4ODcsIDB4OWYsIDB4ODUsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwYiwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlYywgMHg4MiwgMHgyMiwgMHg0MCwKKwkweDU3LCAweDdkLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDQwLCAweDU3LCAweDk5LCAweDAxLCAweDAwLAorCTB4MGIsIDB4ODcsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHhkZCwgMHg4MiwgMHgxYSwgMHg1YiwgMHg2OSwgMHg5MywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweGNiLCAweDgxLCAweGM4LCAweDAxLCAweDAwLCAweDExLCAweDg3LCAweDIyLCAweDQwLAorCTB4ZjIsIDB4N2YsIDB4MDAsIDB4MDAsIDB4YzQsIDB4ODAsIDB4MDAsIDB4NmYsIDB4OTcsIDB4MzMsIDB4MDEsIDB4MDAsCisJMHgxMywgMHg4NywgMHgyMiwgMHg0MCwgMHg3MywgMHg3ZCwgMHgwMCwgMHgwMCwgMHhkZSwgMHg4MCwgMHgwMCwgMHg0MSwKKwkweDhiLCAweGIzLCAweDAwLCAweDAwLCAweDBlLCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MWIsIDB4ODcsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxYiwgMHg4NywgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MTgsIDB4ODcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHg5MiwgMHgyMiwgMHgwMiwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDFjLCAweDg3LCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MmYsIDB4OTIsIDB4MWEsIDB4MDIsCisJMHg2OCwgMHg5NywgMHgwMCwgMHgwMCwgMHgyNiwgMHg4NywgMHg5YywgMHgwZiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDI2LCAweDg3LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgyMywgMHg4NywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MzksIDB4OTIsIDB4MjIsIDB4MDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MjcsIDB4ODcsIDB4NDIsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5MywgMHg5MywgMHgwMSwgMHgwMCwKKwkweDM5LCAweDkyLCAweDFhLCAweDAyLCAweDY4LCAweDk3LCAweDAwLCAweDAwLCAweDMxLCAweDg3LCAweDljLCAweDBmLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgzMSwgMHg4NywgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4MmUsIDB4ODcsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhmOSwgMHg4MiwgMHgyMiwgMHgwMiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDMyLCAweDg3LCAweDQyLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDIsIDB4NjgsIDB4OTcsIDB4MDEsIDB4MDAsCisJMHhmOSwgMHg4MiwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHhhNiwKKwkweDU2LCAweGIxLCAweDAxLCAweDAwLCAweDU2LCAweDk1LCAweDJmLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4ODIsIDB4ODcsIDB4YTIsIDB4NDAsIDB4ZTcsIDB4NmQsIDB4MDAsIDB4MDAsIDB4YjgsIDB4OTQsIDB4MjksIDB4NDEsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHhlZiwgMHg5MywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDBlLCAweGIwLCAweDAxLCAweDAwLCAweDI5LCAweDAwLCAweDAwLCAweDQwLAorCTB4MGQsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTIsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhNywgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwNywKKwkweDFhLCAweGY0LCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDA3LCAweDE2LCAweDg4LCAweDAxLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MTAsIDB4MzQsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHgzNCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDE4LCAweDAwLCAweDQwLCAweDExLCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGI1LCAweDAwLCAweDBkLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjYsIDB4ODcsIDB4MjIsIDB4MGIsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHg0NywgMHg4NywgMHg2MCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwNywKKwkweDg0LCAweDg5LCAweDAxLCAweDAwLCAweDRlLCAweDg3LCAweDA1LCAweGMyLCAweDI0LCAweDMwLCAweDAwLCAweDAwLAorCTB4NTgsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MywgMHg4NywgMHg3MCwgMHhmMCwgMHgxOCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDY2LCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4NWQsIDB4ODcsIDB4YTAsIDB4NDgsIDB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgzNSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxYSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDU3LCAweDg3LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MWEsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg1NCwgMHg4NywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDIwLCAweDk4LCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODMsIDB4ODcsIDB4MDAsIDB4ZjgsIDB4MTgsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg1OCwgMHg4NywgMHhhMiwgMHg0MSwgMHgyMywgMHg1MCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgxMCwKKwkweDM0LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDM0LCAweDk0LCAweDAxLCAweDAwLAorCTB4MjAsIDB4MTgsIDB4MDAsIDB4NDAsIDB4MTEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MWEsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg2MSwgMHg4NywgMHhhOCwgMHgwOSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDIzLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDM1LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4NzIsIDB4ODcsIDB4MjIsIDB4NDEsCisJMHgwZCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDZlLCAweDg3LCAweGEwLCAweGFhLCAweDBmLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDcsIDB4MTIsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhNywgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDFiLCAweGIwLCAweDAxLCAweDAwLCAweDQ1LCAweDg3LCAweDAwLCAweDQxLCAweDE3LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDIsIDB4MDAsIDB4MDksIDB4MTIsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NDUsIDB4ODcsIDB4ODMsIDB4NDEsCisJMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxNywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDQ1LCAweDg3LCAweDAwLCAweDQxLCAweDFiLCAweGMwLCAweDAwLCAweDAwLCAweDdkLCAweDg3LCAweDIzLCAweDQwLAorCTB4MjMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MzUsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxYSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg3YSwgMHg4NywgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NzcsIDB4ODcsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIwLCAweDk4LCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDgzLCAweDg3LCAweDAwLCAweGY4LAorCTB4MTgsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2IsIDB4ODcsIDB4YTIsIDB4NDEsIDB4MjMsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZiwgMHhjMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4NywgMHhhMCwgMHhhYSwKKwkweDBmLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBmLCAweGIwLCAweDAxLCAweDAwLAorCTB4YjgsIDB4OTQsIDB4MjAsIDB4MDcsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTYsIDB4OTUsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDBjLCAweDgwLCAweGQ4LCAweDAxLCAweDAwLCAweGMwLCAweDAyLCAweDAwLCAweDBjLAorCTB4N2UsIDB4ODksIDB4MDEsIDB4MDAsIDB4OTUsIDB4ODcsIDB4MjYsIDB4NTQsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHg4YiwgMHg4NywgMHg4NywgMHgwYywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYyLCAweDk5LCAweDAxLCAweDAwLCAweDhiLCAweDg3LCAweDI4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4OGIsIDB4ODcsIDB4YTIsIDB4NTQsIDB4NzcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4ODcsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5MCwgMHg4NywgMHgyMiwgMHg0NiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDBkLCAweDAwLCAweDAwLCAweDQwLCAweDYyLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NTQsIDB4NzcsIDB4N2QsIDB4MDEsIDB4MDAsCisJMHg4YywgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5NSwgMHg4NywgMHgyMiwgMHg0OSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweDQwLCAweDYyLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NTQsCisJMHg3NywgMHg3ZCwgMHgwMSwgMHgwMCwgMHg5MCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQwLCAweDYyLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NTQsIDB4NzcsIDB4N2QsIDB4MDEsIDB4MDAsCisJMHg5NSwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHg5NCwgMHgyZiwgMHg1NSwKKwkweGYxLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDQwLCAweDAwLCAweGE2LCAweDU2LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZjksIDB4ODIsIDB4YTIsIDB4NDEsIDB4ZTUsIDB4NTEsIDB4MDAsIDB4MDAsIDB4NjQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg5ZCwgMHg4NywgMHg0NCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGEwLCAweDg3LCAweGEyLCAweDkzLCAweDU3LCAweDZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4NTcsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4YWIsIDB4MjcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHhmOSwgMHg4MiwgMHgyMiwgMHg1MCwgMHhmZCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHhmOSwgMHg4MiwgMHgyMiwgMHg1MSwKKwkweGZkLCAweDdmLCAweDAwLCAweDAwLCAweGY5LCAweDgyLCAweGEyLCAweDQxLCAweDFkLCAweDUzLCAweDAwLCAweDAwLAorCTB4NTAsIDB4NDYsIDB4MDAsIDB4NDAsIDB4MWQsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweGFjLCAweDg3LCAweDIyLCAweDQwLAorCTB4YjUsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwNCwgMHgwMCwgMHg0MSwgMHhiNSwgMHg1MywgMHgwMSwgMHgwMCwgMHhmOSwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweGZkLCAweDgzLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MTYsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHg0OSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgxZSwgMHgwMCwgMHgwMCwgMHg0OCwgMHhiMiwgMHhjYiwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLAorCTB4OTEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHhiNSwgMHgzMywgMHgwMSwgMHgwMCwgMHg2MCwgMHgxNiwgMHgyMCwgMHg0MCwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDgyLCAweDAwLCAweDQwLCAweGI1LCAweDMzLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4NDgsIDB4YjIsIDB4Y2IsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGEsCisJMHhiNCwgMHg4YiwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwNCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDBhLCAweDAwLCAweDAwLCAweDQ4LCAweGIyLCAweGNiLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDRhLAorCTB4YjQsIDB4ZjcsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhmOSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDA4LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGMzLCAweDg3LCAweDAwLCAweDRiLCAweDEwLCAweGM5LCAweDAwLCAweDAwLCAweGU2LCAweDhhLCAweDAwLCAweDQxLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDFhLCAweDhiLCAweDAwLCAweDQxLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDRjLCAweDhiLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4OGIsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0YywgMHg4YiwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg4YiwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDhiLCAweDhiLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGI0LCAweDhiLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4OGIsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4ZCwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGM0LCAweDhiLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDhiLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NzMsIDB4OGMsIDB4MDAsIDB4NDIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3MywgMHg4YywgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDczLCAweDhjLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTMsIDB4OGMsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDhhLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4YjEsIDB4OGMsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YjEsIDB4OGMsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGIxLCAweDhjLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkOSwgMHg4YywgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYSwgMHg4YywgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlYSwgMHg4YywgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGVjLCAweDhjLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OGMsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlYywgMHg4YywgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlYywgMHg4YywgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OGMsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlNCwgMHg4YSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg4ZCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGY1LCAweDhjLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA1LCAweDhkLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg4ZCwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZjLCAweDhjLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQ1LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQxLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4NzEsIDB4OGMsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4NzEsIDB4OGMsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3MSwgMHg4YywgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGU0LCAweDhhLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgwMCwgMHg0MSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA3LCAweDhkLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDcsIDB4OGQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4OGQsIDB4MDAsIDB4NDQsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4OGQsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGQsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4OGQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg3YiwgMHg4ZCwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiOCwgMHg4YiwgMHgwMCwgMHg0NCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDAzLCAweDhkLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OGQsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhiOCwgMHg4YiwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4ZCwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDk0LCAweDhkLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlNCwgMHg4YSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDhmLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4OGYsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg4YiwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDdmLCAweDhkLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGI4LCAweDhiLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4OGQsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDhmLCAweGIwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4MDgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MjAsIDB4NDcsCisJMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0NywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDk2LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4OTYsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg4MywgMHg4OCwgMHgwMCwgMHg0YiwgMHgxMCwgMHhjOSwgMHgwMCwgMHgwMCwgMHhhYywgMHg4ZCwgMHgwMCwgMHg0OSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGU1LCAweDhkLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWIsIDB4OGQsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmOSwgMHg4ZCwgMHgwMCwgMHg0MiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDFhLCAweDhlLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxNSwgMHg4ZSwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHg4ZSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDc1LCAweDhlLCAweDAwLCAweDQ0LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHg4ZSwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlZSwgMHg4ZCwgMHgwMCwgMHg0MSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGVlLCAweDhkLCAweDAwLCAweDQzLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWUsIDB4OGQsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4OGQsIDB4MDAsIDB4NDUsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlZSwgMHg4ZCwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGVlLCAweDhkLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGVlLCAweDhkLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4OGQsIDB4MDAsIDB4NDksIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlZSwgMHg4ZCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlZSwgMHg4ZCwgMHgwMCwgMHg0YiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGVlLCAweDhkLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWUsIDB4OGQsIDB4MDAsIDB4NGQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGQ0LCAweDhlLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4OGUsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGQ0LCAweDhlLCAweDAwLCAweDRiLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWMsIDB4OGUsIDB4MDAsIDB4NDUsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHg4ZSwgMHgwMCwgMHg0NSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTEsIDB4MDAsIDB4NDYsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg4ZSwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGY5LCAweDhkLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTMsIDB4OGUsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGUsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTUsIDB4OGUsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDc1LCAweDhlLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDFkLCAweDhlLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGUsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxMywgMHg4ZSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4OGUsIDB4MDAsIDB4NGMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA5LCAweDhmLCAweDAwLCAweDQ0LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDksIDB4OGYsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjZiwgMHg4YSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwOSwgMHg4ZiwgMHgwMCwgMHg0YiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZWUsIDB4OGQsIDB4MDAsIDB4NDEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE0LCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTQsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4ZSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDhlLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzYiwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDNiLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg5ZCwgMHg4ZiwgMHgwMCwgMHg0MCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiYSwgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGFlLCAweDhmLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MGMsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiYSwgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGMxLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGMxLCAweDhmLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhhZSwgMHg4ZiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwYywgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDBjLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4YWUsIDB4OGYsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGQ0LCAweDhlLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg4ZSwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHg4ZSwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDEzLCAweDhlLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTMsIDB4OGUsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHg4ZSwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGQ0LCAweDhlLCAweDAwLCAweDRjLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDJiLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MWYsIDB4OGYsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDJiLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHg4ZiwgMHgwMCwgMHg0OCwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDEzLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTMsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4OGYsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDhmLCAweDAwLCAweDQyLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjMywgMHg4ZiwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDhmLCAweDAwLCAweDRiLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OGYsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGMzLCAweDhmLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDhmLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhjMywgMHg4ZiwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGMzLCAweDhmLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzMsIDB4OGYsIDB4MDAsIDB4NGMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhjMywgMHg4ZiwgMHgwMCwgMHg0YywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4ZiwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGRkLCAweDhmLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHg5MCwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZDgsIDB4OTAsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGQ4LCAweDkwLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGZiLCAweDkwLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhmYSwgMHg5MCwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4OTAsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4ZSwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDEzLCAweDhlLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZhLCAweDkwLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4Y2UsIDB4OGYsIDB4MDAsIDB4NDEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRhLCAweDhmLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OGYsIDB4MDAsIDB4NDQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRhLCAweDhmLCAweDAwLCAweDRiLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZGEsIDB4OGYsIDB4MDAsIDB4NDMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHg4ZiwgMHgwMCwgMHg0NSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGRhLCAweDhmLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGRhLCAweDhmLCAweDAwLCAweDQ3LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4OGYsIDB4MDAsIDB4NDgsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4ZGEsIDB4OGYsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OGUsIDB4MDAsIDB4NGMsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4OGYsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGUwLCAweDhlLCAweDAwLCAweDRjLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg4ZiwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MzYsIDB4OTEsIDB4MDAsIDB4NDIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzNiwgMHg5MSwgMHgwMCwgMHg0NCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MzYsIDB4OTEsIDB4MDAsIDB4NGIsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDM2LCAweDkxLCAweDAwLCAweDQ1LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MzYsIDB4OTEsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGUsIDB4MDAsIDB4NDcsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4ZSwgMHgwMCwgMHg0OCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzNiwgMHg5MSwgMHgwMCwgMHg0YywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4OGUsIDB4MDAsIDB4NDIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4OGUsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4ZiwgMHgwMCwgMHg0NywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4NDEsIDB4OTEsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDQxLCAweDkxLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg5MSwgMHgwMCwgMHg0MywKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAzLCAweDhmLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OTEsIDB4MDAsIDB4NGEsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDQ1LCAweDkxLCAweDAwLCAweDRkLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDU2LCAweDkxLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzNCwgMHg5MSwgMHgwMCwgMHg0YSwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NTYsIDB4OTEsIDB4MDAsIDB4NDMsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDhlLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDEzLCAweDhlLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDM0LCAweDkxLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDY3LCAweDkxLCAweDAwLCAweDQzLAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDMsIDB4OGYsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg2NywgMHg5MSwgMHgwMCwgMHg0MywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4OTEsIDB4MDAsIDB4NGQsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweGY5LCAweDhkLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4OGUsIDB4MDAsIDB4NDIsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDg1LCAweDkxLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg4ZSwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweGY5LCAweDhkLCAweDAwLCAweDQ2LCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MTMsIDB4OGUsIDB4MDAsIDB4NDcsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTMsIDB4OGUsIDB4MDAsIDB4NDgsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4OTEsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OTEsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMywgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDg3LCAweDkxLCAweDAwLCAweDRhLCAweDA5LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0MiwgMHg5MSwgMHgwMCwgMHg0NiwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4ZiwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDQyLCAweDkxLCAweDAwLCAweDQ2LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg5MSwgMHgwMCwgMHg0NiwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDhkLCAweDkxLCAweDAwLCAweDQyLCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4OTEsIDB4MDAsIDB4NGEsCisJMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4OGQsIDB4OTEsIDB4MDAsIDB4NDYsIDB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg4ZSwgMHgwMCwgMHg0NywgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDhlLCAweDAwLCAweDQ4LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgzNCwgMHg5MSwgMHgwMCwgMHg0YSwKKwkweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHg4ZSwgMHgwMCwgMHg0ZCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLAorCTB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsCisJMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHg4ZSwgMHgwMCwgMHg0ZCwgMHgwOSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDEzLCAweDhlLCAweDAwLCAweDQ3LCAweDA5LCAweGIwLCAweDAwLCAweDAwLCAweDEzLCAweDhlLCAweDAwLCAweDQ4LAorCTB4MDksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDg1LCAweGIwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDIwLCAweDg1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MmUsIDB4NGIsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgxZiwgMHg4NywgMHgwMCwgMHgwNCwgMHhlNiwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweGNmLCAweDhhLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDgzLCAweDk0LCAweDAwLCAweDNhLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhjZiwgMHg4YSwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhmZiwgMHgxZiwgMHgwMCwgMHgwZiwKKwkweDFlLCAweDhjLCAweDAxLCAweDAwLCAweGVlLCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZGYsIDB4OGEsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweGRmLCAweDhhLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhkYywgMHg4YSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGEzLCAweDg0LCAweDIyLCAweDAyLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4OGEsIDB4NDIsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHgwMiwgMHg2OCwgMHg5NywgMHgwMSwgMHgwMCwKKwkweGEzLCAweDg0LCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDJlLCAweDRiLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MWYsIDB4ODcsIDB4MDAsIDB4MDQsIDB4ZTYsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjNiwgMHg5NSwgMHgwMCwgMHgwNiwgMHgwNywgMHg0MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDA3LCAweGQwLCAweDAxLCAweDAwLCAweGQ0LCAweDAwLCAweDJlLCAweDVjLAorCTB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsCisJMHg5NiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZlLAorCTB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZhLCAweDk2LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4OTYsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NGIsCisJMHg5NCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg5NSwgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDk2LCAweGMwLCAweDAxLCAweDAwLCAweDVlLCAweDAxLCAweDJlLCAweDM0LAorCTB4OTcsIDB4ODQsIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZTQsIDB4ZTUsIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMSwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDg2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweGE3LCAweDg3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHg0MywgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDAxLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgwOSwgMHg4YiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDFhLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmUsIDB4NDAsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTEsIDB4OGIsIDB4MjAsIDB4NGIsCisJMHg5NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDhiLCAweDAwLCAweDQxLCAweDk1LCAweGMwLCAweDAwLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTgsIDB4OGIsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDE0LCAweDhiLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4MywgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGU0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDBjLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4OCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgxZCwgMHg4YiwgMHg0NCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDIwLCAweDhiLCAweGEyLCAweDRjLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4MjEsIDB4OGIsIDB4MDAsIDB4NGMsIDB4ZmQsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MjIsIDB4OGIsIDB4MjAsIDB4ZjAsCisJMHg1NiwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg1NiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDFjLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3MCwgMHgwMCwgMHgwMCwgMHgwNSwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MjgsIDB4OGIsIDB4YTgsIDB4NDQsCisJMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4YywgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDQ2LCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg2NCwgMHgwMCwgMHgwMCwgMHg0MywgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MzAsIDB4OGIsIDB4YTgsIDB4NDQsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4NiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDM4LCAweDAwLCAweDJlLCAweGE3LCAweDg3LCAweGMwLCAweDAxLCAweDAwLCAweDhiLCAweDAwLCAweDJkLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4OGIsIDB4MjIsIDB4NDMsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg0NSwgMHhjMSwgMHgwMSwgMHgwMCwgMHgzYiwgMHg4YiwgMHgyMiwgMHg0NCwKKwkweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDQ1LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDEsIDB4MjAsIDB4YTIsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4OCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDNmLCAweDhiLCAweDIzLCAweDBiLCAweGU1LCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHg1MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMSwgMHgwMCwgMHg0MywKKwkweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDU4LCAweDAxLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0NCwgMHg4YiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDVjLCAweDAwLCAweDJlLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4MywgMHg5NCwgMHgwMCwgMHg0MSwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4NGYsIDB4OGIsIDB4YTIsIDB4NDksIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODYsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg1MywgMHg4YiwgMHgwMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDg2LCAweDAwLCAweDJmLCAweDQ5LCAweDE5LCAweDgwLCAweDAxLCAweDAwLCAweDUzLCAweDhiLCAweGEyLCAweGYyLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwgMHg1NiwgMHg4YiwgMHhhMiwgMHg0NiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4NWEsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MmYsIDB4NDYsCisJMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg1YSwgMHg4YiwgMHhhMiwgMHhmMiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDhiLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzNCwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYiwKKwkweDBjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZiLCAweDEwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHgxNiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywgMHgxNCwgMHhmNCwgMHgwMSwgMHgwMCwKKwkweDg1LCAweDhiLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDZkLCAweDhiLCAweDIyLCAweDBhLAorCTB4MTYsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4MTMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmMCwKKwkweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDcwLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxMywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDZjLCAweDhiLCAweGEwLCAweDQzLCAweDEzLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjIsIDB4OGIsIDB4MDAsIDB4NDEsIDB4MTUsIDB4ZDAsIDB4MDAsIDB4MDAsCisJMHg4NSwgMHg4YiwgMHgyMiwgMHgwYSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZCwgMHg0MywKKwkweDEzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4ZjAsIDB4ODQsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ODUsIDB4OGIsIDB4MjIsIDB4NDEsIDB4MTUsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxMSwgMHhjMCwgMHgwMSwgMHgwMCwgMHg3OSwgMHg4YiwgMHhhMCwgMHg0MywKKwkweDExLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDExLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4MTEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgzNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDgzLCAweGIwLCAweDAxLCAweDAwLCAweGMyLCAweDk0LCAweDAwLCAweDQ3LAorCTB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgyYywgMHg5MiwgMHgwMCwgMHgwNSwgMHg0OCwgMHgzMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLAorCTB4ODEsIDB4OGIsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsCisJMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHg4YiwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwKKwkweDM3LCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDUxLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzNCwgMHgwMCwgMHgyZSwgMHg0MSwgMHhmNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0MCwKKwkweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDhkLCAweDhiLCAweDAwLCAweDQ4LCAweDE5LCAweDkwLCAweDAwLCAweDAwLAorCTB4MzQsIDB4MDAsIDB4MmUsIDB4NDEsIDB4ZjUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTEsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDkyLCAweDhiLCAweDIyLCAweDQ1LAorCTB4MjMsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmYsIDB4ZjAsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwgMHg4YywgMHhjMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDM1LCAweDAwLCAweDJkLCAweGYwLCAweDhjLCAweGIwLCAweDAxLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2UsIDB4NDMsIDB4ZTcsIDB4ZTEsIDB4MDEsIDB4MDAsIDB4OTcsIDB4OGIsIDB4MjIsIDB4NDgsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4ZCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDBhLCAweDhjLCAweGMwLCAweDAxLCAweDAwLCAweDM4LCAweDAwLCAweDJhLCAweDRhLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgzYywgMHgwMCwgMHgyMCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDM4LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4ZjgsCisJMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHg4YiwgMHgyMywgMHgwMSwgMHgxNCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NGMsIDB4MDAsIDB4MjAsIDB4ZjAsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0NCwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0OCwgMHgwMCwgMHgyMCwgMHg0MSwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGE4LCAweDAwLCAweDJkLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLAorCTB4YWEsIDB4OTUsIDB4MDAsIDB4ZjAsIDB4MjQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OGIsIDB4YTIsIDB4NDQsCisJMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwgMHhhYywgMHg4YiwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDU3LCAweDkzLCAweDAwLCAweDQwLCAweDNiLCAweDMwLCAweDAxLCAweDAwLCAweGQyLCAweDhiLCAweGEyLCAweDA4LAorCTB4M2MsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OGIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg5NCwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhkMiwgMHg4YiwgMHhhMiwgMHgwOCwKKwkweDNjLCAweDMwLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDIwLCAweDFjLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NTQsIDB4MDAsIDB4MjAsIDB4MTMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MjAsIDB4MDEsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHgwYSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGY0LCAweDk0LCAweDAwLCAweDVmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzNiwgMHg5MywgMHgwMCwgMHhmMywgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4ZCwgMHg4YiwgMHgyMiwgMHg0YSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGJhLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzYsIDB4OTMsIDB4MDAsIDB4ZjMsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZSwgMHg0MywgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFiLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDFmLCAweDAwLCAweDYwLCAweDAwLAorCTB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4ODUsIDB4MTEsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyZiwgMHhmMCwKKwkweDhjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweGYwLCAweDhjLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZjQsIDB4OTQsIDB4MDAsIDB4NWYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNCwgMHg4YiwgMHgwMCwgMHg0OSwgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweGM5LCAweDhiLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDU3LCAweDkzLCAweDAwLCAweDQwLAorCTB4M2IsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2QsIDB4OGIsIDB4YTIsIDB4MDgsIDB4M2MsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg5NCwgMHgwMCwgMHg1ZiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4YSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDk0LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4Y2QsIDB4OGIsIDB4YTIsIDB4MDgsIDB4M2MsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NWYsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDUwLCAweDAwLCAweDJkLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLCAweDU0LCAweDAwLCAweDJkLCAweGYwLAorCTB4MzgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NGUsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgyZCwgMHhmMiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDE0LCAweGIwLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDEwLCAweDhjLCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4NDYsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDEsIDB4MmQsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHg2OCwgMHhmMiwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDU4LCAweDAxLCAweDAwLCAweDA1LAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MzcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgzNiwgMHhkMCwgMHgwMSwgMHgwMCwgMHg1YywgMHgwMSwgMHgyZSwgMHg0MCwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDgwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4ODEsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4ODksIDB4OTQsIDB4MDAsIDB4NDAsCisJMHhlNCwgMHgzMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGRlLCAweDhiLCAweGE4LCAweDQwLCAweDIzLCAweDMwLCAweDAwLCAweDAwLCAweGNlLCAweDkyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZDYsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhlYywgMHg4YiwgMHg4MiwgMHg0MSwgMHgyMywgMHg0MCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGU5LCAweDhiLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhlNiwgMHg4YiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweGY0LCAweDhiLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4OGIsIDB4YTMsIDB4MDEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjEsIDB4OGIsIDB4MDAsIDB4MDYsCisJMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGYzLCAweDhiLCAweDIwLCAweDAyLCAweDM2LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFiLAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjcsIDB4OGIsIDB4MDAsIDB4MDIsIDB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHhmNiwgMHg4YiwgMHhhMywgMHgwMSwgMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHhmNywgMHg4YiwgMHgwMCwgMHgwNiwKKwkweDA0LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4MTYsIDB4OTQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MGIsCisJMHgxNiwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwgMHgzZSwgMHg5NiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFjLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhmYywgMHg4YiwgMHhhOCwgMHgxMywgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHgzMywgMHg4YywgMHgyMiwgMHgwMiwKKwkweDE0LCAweDUwLCAweDAwLCAweDAwLCAweDQ0LCAweDAwLCAweDJkLCAweDAyLCAweDBjLCAweGQwLCAweDAxLCAweDAwLAorCTB4MjMsIDB4OGMsIDB4YTIsIDB4MDIsIDB4MDIsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4OGMsIDB4MjIsIDB4NWMsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA5LCAweDhjLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgwNSwgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4NDQsIDB4MDAsIDB4MmQsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgzOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0YywgMHgwMCwgMHgyZCwgMHhmMCwgMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDM4LCAweDAwLCAweDJmLCAweGYyLCAweDAyLCAweGIwLCAweDAxLCAweDAwLCAweDI0LCAweDhjLCAweDIyLCAweDAxLAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MTcsIDB4OGMsIDB4MjIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgyZCwgMHgwMywKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDE2LCAweDhjLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxMywgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzOCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweGUxLCAweGMxLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4NGEsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDQsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHg4YywgMHhhOCwgMHg1YywgMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHg4YywgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDM4LCAweGMwLCAweDAxLCAweDAwLAorCTB4MmUsIDB4OGMsIDB4MjIsIDB4MDYsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgzMywgMHhjMCwgMHgwMSwgMHgwMCwgMHgyYywgMHg4YywgMHhhMiwgMHgwMiwgMHgzNiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDhmLCAweDBkLCAweDQyLCAweDMxLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MTAsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhmMCwgMHgwNywgMHgwMCwgMHg0MCwgMHgzNywgMHg5OCwgMHgwMSwgMHgwMCwgMHhlMiwgMHg4YiwgMHgwMCwgMHhhMSwKKwkweDFhLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZTIsIDB4OGIsIDB4MDAsIDB4MDIsIDB4MzYsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4MjAsIDB4MWMsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1NCwgMHgwMCwgMHgyMCwgMHgxMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDRlLCAweDAwLCAweDIwLCAweDAxLCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDIwLCAweDBhLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4OGMsIDB4MDAsIDB4NWYsIDB4MDEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzNywgMHgwMCwgMHgyZCwgMHg0NiwgMHgwMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDgwLCAweGY0LCAweDAxLCAweDAwLCAweDM3LCAweDhjLCAweGEwLCAweDQzLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4MDEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDNlLCAweDhjLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ2LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgzYiwgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGQzLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NDUsIDB4OGMsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDQyLCAweDhjLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2MCwgMHgwMSwgMHgyZiwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwKKwkweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDE3LCAweGYwLCAweDAxLCAweDAwLAorCTB4NGEsIDB4OGMsIDB4OTAsIDB4ZjIsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgyMCwgMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDAwLCAweGE2LCAweDJhLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLAorCTB4MmEsIDB4OTQsIDB4MDEsIDB4MDAsIDB4NGQsIDB4OGMsIDB4NDUsIDB4NDgsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHhkMCwgMHgwMCwgMHgxZSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg1MiwgMHg4YywgMHgyOCwgMHg0MCwKKwkweDA1LCAweDMwLCAweDAwLCAweDAwLCAweDRlLCAweDhjLCAweDIyLCAweDQ4LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4NTUsIDB4OGMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1ZSwgMHg4YywgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDUyLCAweDhjLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDAwLAorCTB4OTIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NWIsIDB4OGMsIDB4MjIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHhmOCwKKwkweDAwLCAweDMwLCAweDAxLCAweDAwLCAweDU4LCAweDhjLCAweGEyLCAweDQxLCAweDNiLCAweDUwLCAweDAwLCAweDAwLAorCTB4NWYsIDB4OGMsIDB4MDAsIDB4NDksIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MWUsCisJMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDVmLCAweDhjLCAweDAwLCAweDQ5LCAweDAwLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFkLCAweDQ3LAorCTB4MTksIDB4ODAsIDB4MDEsIDB4MDAsIDB4NjIsIDB4OGMsIDB4MjIsIDB4NWYsIDB4MDEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhiZiwgMHg4NywgMHgwMCwgMHgwMCwKKwkweDgwLCAweGIwLCAweDAwLCAweDAwLCAweDY5LCAweDhjLCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjksIDB4OGMsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDY2LCAweDhjLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg2OSwgMHg4YywgMHg0MCwgMHgwNSwgMHg0OCwgMHgzMSwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwNywKKwkweDk0LCAweDg5LCAweDAxLCAweDAwLCAweDZmLCAweDhjLCAweDg1LCAweGNhLCAweDk0LCAweDMwLCAweDAwLCAweDAwLAorCTB4ZDQsIDB4OTUsIDB4MTgsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MGYsCisJMHgxZSwgMHg4YywgMHgwMSwgMHgwMCwgMHhlMCwgMHg4NiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGY0LCAweDk0LCAweDE4LCAweDAwLCAweDgwLCAweDMwLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQ3LAorCTB4MTksIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhlNCwgMHg4YSwgMHgyMiwgMHg0NywgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg5NCwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDc2LCAweDhjLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODksIDB4OTQsIDB4MDAsIDB4NDAsCisJMHgwZCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMSwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGZmLCAweGZmLCAweDAwLCAweDBiLCAweDk4LCAweDg4LCAweDAxLCAweDAwLCAweDhiLCAweDAwLCAweDJkLCAweDUwLAorCTB4MTcsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4N2MsIDB4OGMsIDB4OTAsIDB4NGMsIDB4MTYsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHg3ZSwgMHg4YywgMHgyMiwgMHg0MywKKwkweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ1LCAweGMxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsIDB4MTcsIDB4YTQsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg1YywgMHgwMSwgMHgyZSwgMHhmMiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDAwLCAweDYyLCAweDQwLCAweDdlLCAweGNkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU3LAorCTB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDU4LCAweDAxLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4OCwgMHg4YywgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGMsIDB4OGMsIDB4NDUsIDB4NDgsIDB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg1MCwgMHgwMCwgMHgwOCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg5MiwgMHg4YywgMHgyOCwgMHg0MCwKKwkweDA1LCAweDMwLCAweDAwLCAweDAwLCAweDhkLCAweDhjLCAweDIyLCAweDQ4LCAweDc3LCAweDdkLCAweDAwLCAweDAwLAorCTB4OTksIDB4OTIsIDB4MWQsIDB4MDgsIDB4MDAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgxZCwgMHg0NywgMHgxOSwgMHg4MCwgMHgwMCwgMHgwMCwKKwkweDM1LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweGYzLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OTcsIDB4OGMsIDB4YTAsIDB4NDMsIDB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDJmLCAweGYwLCAweDI0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4YTIsIDB4OGMsIDB4YTIsIDB4NDEsCisJMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgyMiwgMHg0NCwgMHg4MywgMHg3MCwgMHgwMCwgMHgwMCwKKwkweDM2LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDU4LCAweDAwLCAweDNkLCAweDQzLAorCTB4ZTcsIDB4ZTEsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MWYsIDB4ZjAsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhkNCwgMHg5NSwgMHgwMCwgMHg0OCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhiZiwgMHg4NywgMHgyMywgMHg0MSwKKwkweDgzLCAweDZjLCAweDAwLCAweDAwLCAweGJmLCAweDg3LCAweDAwLCAweDQ3LCAweDgxLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHgzNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDI4LCAweDAwLCAweDAwLCAweDQwLCAweDgzLCAweDk4LCAweDAxLCAweDAwLCAweGMyLCAweDk0LCAweDAwLCAweDQ3LAorCTB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZCwgMHgwMywgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDhlLCAweGIwLCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5MywgMHg4YiwgMHhhMiwgMHg0MCwgMHg4ZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGIwLCAweDhjLCAweDIyLCAweDQ3LCAweDhmLCAweDdjLCAweDAwLCAweDAwLCAweDkzLCAweDhiLCAweDAwLCAweDQ4LAorCTB4MTksIDB4OTAsIDB4MDAsIDB4MDAsIDB4MWYsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgzNiwgMHgwMCwgMHgyZCwgMHg1ZCwgMHgwNSwgMHhiNCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZCwgMHhmMywKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDhlLCAweGIwLCAweDAxLCAweDAwLAorCTB4NWMsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDg2LCAweGRjLCAweDAxLCAweDAwLCAweDQwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4OWIsIDB4OTEsIDB4MDAsIDB4NGEsIDB4ZjAsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHgzNiwgMHgwMCwgMHgyZiwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHhiZSwgMHg4YywgMHhhMiwgMHg1MCwKKwkweDhmLCAweDUwLCAweDAwLCAweDAwLCAweDM0LCAweDAwLCAweDIwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjMsIDB4NDEsCisJMHg4MSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhjMSwgMHg4YywgMHhhMCwgMHg0MywgMHg4MSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDIwLCAweDQ3LAorCTB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MjIsIDB4NDcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0NywgMHgwYywgMHhmNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDhmLCAweDg0LCAweDAxLCAweDAwLCAweGQ2LCAweDhjLCAweDIyLCAweDQ3LCAweDBjLCAweDZjLCAweDAwLCAweDAwLAorCTB4NTgsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ODEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4ZDYsIDB4OGMsIDB4MWYsIDB4ZjAsCisJMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGNmLCAweDhjLCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjYywgMHg4YywgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4Y2YsIDB4OGMsIDB4NDIsIDB4NDAsIDB4MDUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg1ZCwgMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwKKwkweGQ0LCAweDhjLCAweDIzLCAweDQxLCAweDBkLCAweDZjLCAweDAwLCAweDAwLCAweGIxLCAweDhjLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4OTUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHhiZiwgMHg4NywgMHgwMCwgMHg0OCwgMHg4MSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgyMiwgMHg0MCwKKwkweDhmLCAweDZjLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDVmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YTIsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGE2LCAweDAwLCAweDJkLCAweDQ5LCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweGYyLAorCTB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MDAsIDB4MmQsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHg4MCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgyLCAweGY4LCAweDAxLCAweDAwLCAweDE5LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweDk4LCAweDAxLCAweDAwLAorCTB4ZTUsIDB4OGMsIDB4YTAsIDB4NDAsIDB4ODIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHg5OCwgMHgwMSwgMHgwMCwgMHhlNSwgMHg4YywgMHhhMywgMHg0MCwgMHg4MiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGU3LCAweDhjLCAweDIwLCAweDRjLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODUsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHg4NiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMiwgMHgwMCwgMHgyMCwgMHg0MiwKKwkweGU2LCAweGIxLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ODMsIDB4OTQsIDB4MDAsIDB4NTAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4OGQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzYsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhiMCwgMHgwMCwgMHgyZiwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHhmMCwKKwkweDgwLCAweGMwLCAweDAxLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDVmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhlNCwgMHg4YSwgMHgyMiwgMHg0NiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYyLCAweGYyLAorCTB4OTYsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4YTYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhmNCwgMHg5NCwgMHgwMCwgMHg0YSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjOSwgMHg5NCwgMHgwMCwgMHg0NiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MjIsIDB4NDksIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODYsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MiwgMHhmMiwgMHg4MCwgMHhjYywgMHgwMSwgMHgwMCwKKwkweGU0LCAweDhhLCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDRhLAorCTB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YzksIDB4OTQsIDB4MDAsIDB4NDcsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhlNCwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDYyLCAweGYyLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDBiLCAweDhkLCAweDkwLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4NjIsIDB4NDAsIDB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhhNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhlNCwgMHg4YSwgMHgyMiwgMHg0MCwKKwkweGU1LCAweDZkLCAweDAwLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDQxLCAweGU1LCAweGMxLCAweDAwLCAweDAwLAorCTB4ODMsIDB4OTQsIDB4MDAsIDB4NGQsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDk2LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDhkLCAweGIwLCAweDAxLCAweDAwLCAweGM2LCAweDk1LCAweDAwLCAweDQwLCAweDg3LCAweDMwLCAweDAxLCAweDAwLAorCTB4OGIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MWIsIDB4OGQsIDB4ODAsIDB4ZjMsCisJMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGU0LCAweDhhLCAweDAwLCAweDVjLAorCTB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDUsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmNSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHgwMCwgMHg0MCwKKwkweGU1LCAweDk5LCAweDAxLCAweDAwLCAweDk0LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4OGQsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDUxLCAweDgzLCAweGQwLCAweDAxLCAweDAwLCAweDM0LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODQsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgyOCwgMHg4ZCwgMHg5ZiwgMHg0MiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHg0MiwKKwkweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDAzLCAweGYwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MmEsIDB4OGQsIDB4MzcsIDB4NWMsCisJMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDJiLCAweDhkLCAweGE4LCAweDRiLCAweDE5LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmQsIDB4OGQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgxNywgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYwLCAweDk0LCAweGIwLCAweDAxLCAweDAwLAorCTB4YWMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MzAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzUsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgyOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZSwgMHg0MywgMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweDE4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgzYywgMHgwMCwgMHgyMCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDJiLCAweGIwLCAweDAxLCAweDAwLAorCTB4ZDgsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MGQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHgxNiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgzZiwgMHg4ZCwgMHhhMCwgMHgxNCwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDBlLCAweDAwLCAweDAwLCAweGEyLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZjgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiMCwgMHgwMCwgMHgyZCwgMHgxNCwgMHhmOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHg1MCwgMHgwMCwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDQ4LCAweDhkLCAweDIyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MzAsIDB4MDAsIDB4NDMsIDB4ODYsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MGIsCisJMHgxNiwgMHhjOCwgMHgwMSwgMHgwMCwgMHg0OCwgMHg4ZCwgMHhhNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDZlLCAweDQzLAorCTB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MGYsIDB4OTUsIDB4MDAsIDB4MzAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHg0YywgMHg4ZCwgMHhhMCwgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDUzLCAweDhkLCAweDIyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4MmQsIDB4YWIsCisJMHhmOSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDUyLCAweDhkLCAweGEwLCAweGYwLCAweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg5MCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHg0MSwKKwkweDMxLCAweGMwLCAweDAxLCAweDAwLCAweGJjLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4NTksIDB4OGQsIDB4MDYsIDB4MGMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MjAsIDB4ZjIsCisJMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwOSwgMHg0NiwgMHgxOSwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDljLCAweDAxLCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDBiLAorCTB4OTgsIDB4ODgsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MmQsIDB4NTAsIDB4MTcsIDB4ZjAsIDB4MDEsIDB4MDAsCisJMHg1ZSwgMHg4ZCwgMHg5MCwgMHg0YywgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDYwLCAweDhkLCAweDIyLCAweDQzLCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4MjAsCisJMHgxNywgMHhhNCwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDVjLCAweDAxLCAweDJlLCAweGYyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDYyLCAweDQwLAorCTB4N2UsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4ODEsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgxMCwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweGYwLCAweDhkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4NTgsIDB4MDEsIDB4MDAsIDB4MDUsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDZhLCAweDhkLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg2ZSwgMHg4ZCwgMHg0NSwgMHg0OCwgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwOCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDZmLCAweDhkLCAweGE4LCAweDQwLCAweDA1LCAweDMwLCAweDAwLCAweDAwLAorCTB4MzUsIDB4MDAsIDB4MWQsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsCisJMHg4NCwgMHhjOCwgMHgwMSwgMHgwMCwgMHg3NSwgMHg4ZCwgMHhhMCwgMHg0MywgMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHg4YiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwKKwkweGU3LCAweDkxLCAweDAxLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDVmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZTQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHgzNiwgMHg5MywgMHgwMCwgMHhmMywgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDFmLCAweDhkLCAweDIyLCAweDRhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGJhLCAweDhiLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzcsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzNiwgMHg5MywgMHgwMCwgMHhmMywgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg4YSwgMHg4YiwgMHgyMiwgMHg0YSwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGJhLCAweDhiLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MzYsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmIsCisJMHgxMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMCwgMHgwMCwgMHhmMywgMHg5MCwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweGYzLCAweDBjLCAweGY0LCAweDAxLCAweDAwLCAweGI0LCAweDhiLCAweDIyLCAweDA2LAorCTB4OTAsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDAsIDB4M2QsIDB4NDMsIDB4MTMsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhhOCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgyZiwgMHhmMCwKKwkweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDM2LCAweDAwLCAweDJhLCAweDUwLCAweGU3LCAweGQxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4NDEsIDB4MTMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4OGYsIDB4OGQsIDB4YTAsIDB4NDMsCisJMHgxMywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDkxLCAweDAwLCAweDEwLCAweDg2LCAweDMwLCAweDAxLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTEsIDB4OGQsIDB4NDIsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5MywgMHg5MywgMHgwMSwgMHgwMCwgMHhiNCwgMHg4YiwgMHgxYSwgMHg1ZCwKKwkweDY5LCAweDkzLCAweDAwLCAweDAwLCAweDM2LCAweDAwLCAweDJkLCAweDEwLCAweDg2LCAweGIwLCAweDAxLCAweDAwLAorCTB4NWMsIDB4MDAsIDB4M2QsIDB4NDMsIDB4ZTcsIDB4ZTEsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzNSwgMHgwMCwgMHgyZiwgMHhmMCwgMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDZiLCAweGZiLCAweDg0LCAweGM4LCAweDAxLCAweDAwLCAweDljLCAweDhkLCAweGEwLCAweDQzLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzUsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MywgMHhmMywKKwkweDEyLCAweGM4LCAweDAxLCAweDAwLCAweDlmLCAweDhkLCAweGEwLCAweDQzLCAweDEzLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHg5YiwgMHg5MSwgMHgwMCwgMHg0YSwgMHhmMCwgMHgzMSwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweGEyLCAweDhkLCAweDQyLCAweDA1LAorCTB4NDgsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4OTMsIDB4OTMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHg1ZCwgMHg2OSwgMHg5MywgMHgwMSwgMHgwMCwgMHgzNywgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDExLCAweDAwLCAweDYzLCAweGYzLCAweDgyLCAweGNjLCAweDAxLCAweDAwLAorCTB4OWIsIDB4OGMsIDB4MjIsIDB4NDEsIDB4OWUsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzUsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMCwgMHgzZCwgMHg0MywgMHhlNywgMHhlMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDM2LCAweGIwLCAweDAxLCAweDAwLCAweGE1LCAweDhjLCAweDAwLCAweGYwLAorCTB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NWUsIDB4MDEsIDB4MmQsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhZCwgMHg4ZCwgMHg2NSwgMHhmMiwgMHgxMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwKKwkweDEzLCAweGYwLCAweDAxLCAweDAwLCAweGIyLCAweDhkLCAweDIyLCAweDQ3LCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4ZjUsIDB4ODIsIDB4NzUsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OGQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc1LCAweDQyLCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDc1LCAweDAwLCAweDAwLCAweDQwLAorCTB4NjEsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjQsIDB4OGQsIDB4YTgsIDB4YjEsIDB4MGMsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgxZiwgMHg5NCwgMHgwMCwgMHgxMCwgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDVlLCAweDAxLCAweDJlLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4YzAsIDB4YTgsIDB4M2QsIDB4NDYsIDB4MGQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhiZSwgMHg4ZCwgMHgyMiwgMHg0MCwgMHhlMSwgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAyLCAweDQxLCAweDk3LCAweDQwLCAweDAwLCAweDAwLCAweGJiLCAweDhkLCAweDAwLCAweDUwLAorCTB4NDMsIDB4YzEsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4OGQsIDB4MjIsIDB4NGIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MiwgMHg0YiwgMHgxMiwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwNywKKwkweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE3LCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OTQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4NGEsCisJMHg0NCwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDVlLCAweDAxLCAweDAwLCAweDRiLCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDVlLCAweDAxLCAweDAwLCAweDA1LAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHhjOCwgMHg4ZCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDksCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGQ0LCAweDAwLCAweDAwLCAweDA1LCAweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkMCwgMHg4ZCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDNmLCAweDQyLCAweDEzLCAweGYwLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4OGQsIDB4NjUsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc1LCAweDU1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OGQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg4ZCwgMHgyMiwgMHg0YiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGRiLCAweDhkLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4OTcsIDB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTYsCisJMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg4ZCwgMHgyMCwgMHgwOSwgMHg5NiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGUzLCAweDhkLCAweDFmLCAweDA5LCAweDk2LCAweDI0LCAweDAwLCAweDAwLCAweGY1LCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZGUsIDB4OGQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4MywgMHg5NCwgMHgwMCwgMHg1NywgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDJlLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4ZTksIDB4OGQsIDB4MjIsIDB4ZjMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTQsIDB4MDAsIDB4NDIsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweGY0LCAweDk0LCAweDAwLCAweDUyLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDQyLAorCTB4MTksIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTQsIDB4MDAsIDB4M2EsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhmNCwgMHg5NCwgMHgwMCwgMHg1MiwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4OTYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MjIsIDB4NDAsCisJMHg5NSwgMHg2YywgMHgwMCwgMHgwMCwgMHhmNCwgMHg4ZCwgMHhhMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDE0LCAweDg3LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MSwgMHg5MywgMHgwMCwgMHg1MiwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDQ4LCAweDkzLCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLAorCTB4MTQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4N2QsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg4ZCwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDE0LCAweDg3LCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4ODMsIDB4OTQsIDB4MDAsIDB4M2EsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMywgMHgwMCwgMHhhNiwKKwkweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDAyLCAweDhlLCAweDgzLCAweDFlLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDgsIDB4MDAsIDB4MGIsIDB4MTYsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgyYSwgMHhjMCwgMHgwMSwgMHgwMCwgMHhjYywgMHg5NCwgMHgwMCwgMHgwOCwgMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDA2LCAweDhlLCAweDAwLCAweDVlLCAweDE3LCAweDkwLCAweDAwLCAweDAwLCAweGVkLCAweDk0LCAweDAwLCAweDQzLAorCTB4NjEsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YTcsIDB4OTEsIDB4MDAsIDB4NDAsIDB4OGQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg5NCwgMHgwMCwgMHgwNywgMHgxNiwgMHgxNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDBlLCAweDhlLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwYiwgMHg4ZSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDc1LCAweDk0LCAweDAwLCAweDVlLAorCTB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4OTksIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHg4ZSwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweGQ0LCAweDhhLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDhlLCAweDIyLCAweDQzLCAweDNkLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4M2QsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHgxYSwgMHg4ZSwgMHgwMCwgMHg0MiwgMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyZCwgMHg0NSwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDc1LCAweDhlLCAweDgzLCAweDFlLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4NzUsIDB4OGUsIDB4MDAsIDB4NDQsIDB4MTksIDB4OTAsIDB4MDAsIDB4MDAsIDB4OGMsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyZCwgMHg4ZSwgMHhhMiwgMHgwOCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDI5LCAweDhlLCAweGEyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweDAyLAorCTB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4YTAsIDB4OTgsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwNSwgMHgwMCwgMHg0MSwgMHg4OSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgyNiwgMHg4ZSwgMHhhMiwgMHg0MSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MTQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NDEsIDB4OTMsIDB4MDAsIDB4MTUsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg0OCwgMHg5MywgMHgwMCwgMHg0YiwgMHgwMiwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE0LCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGM2LCAweDkzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHg4MywgMHg5NCwgMHgwMCwgMHgzYSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDMwLCAweDhlLCAweDIyLCAweDQyLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YzYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MzEsIDB4OGUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5NiwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDVkLCAweDhlLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDE1LAorCTB4OTgsIDB4YzgsIDB4MDEsIDB4MDAsIDB4NWQsIDB4OGUsIDB4YTAsIDB4MGIsIDB4OTksIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDQ0LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDM5LCAweDhlLCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHg5OCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZSwgMHgwYiwKKwkweDk5LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDZhLCAweDUwLCAweDk5LCAweGMwLCAweDAxLCAweDAwLAorCTB4YzAsIDB4MDAsIDB4NjIsIDB4MDEsIDB4ODAsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgyZCwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLAorCTB4MjMsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2YsIDB4NDEsIDB4ZTcsIDB4ZTEsIDB4MDEsIDB4MDAsCisJMHgwYiwgMHgwMCwgMHgwMCwgMHgxMSwgMHhlNCwgMHhmNSwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0NywKKwkweGU3LCAweGI1LCAweDAxLCAweDAwLCAweDRhLCAweDhlLCAweDIzLCAweDBiLCAweDgxLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4ZTUsIDB4OTEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgwMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDAyLCAweGQwLCAweDAxLCAweDAwLCAweGNjLCAweDk0LCAweDAwLCAweDAwLAorCTB4MmEsIDB4NDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0ZiwgMHg4ZSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4OTksIDB4OTIsIDB4MDAsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4MCwgMHhjZSwgMHgwMSwgMHgwMCwgMHg1YiwgMHg4ZSwgMHgyNiwgMHgxMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LAorCTB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5OSwgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDk4LCAweGQwLCAweDAxLCAweDAwLCAweGNjLCAweDk0LCAweDAwLCAweDRjLCAweDAyLCAweDMwLCAweDAxLCAweDAwLAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NjIsIDB4OGUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZiwgMHgwOCwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGMwLCAweDAwLCAweDAwLCAweDE1LCAweGY0LCAweGM5LCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDAxLAorCTB4ZTQsIDB4Y2QsIDB4MDEsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHhjYywgMHg5NCwgMHgwMCwgMHgwMCwgMHgyYSwgMHg0MCwgMHgwMSwgMHgwMCwgMHg2NywgMHg4ZSwgMHgyMiwgMHg0NCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweGFjLCAweDAwLCAweDJmLCAweDQwLCAweDEzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg2OCwgMHg4ZSwgMHgwMCwgMHgwMSwgMHhlMCwgMHhkMSwgMHgwMCwgMHgwMCwKKwkweGE3LCAweDkxLCAweDAwLCAweDQwLCAweDhkLCAweDMwLCAweDAxLCAweDAwLCAweDgwLCAweDYzLCAweDAwLCAweGE2LAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4OTQsIDB4MDAsIDB4MDcsIDB4MTYsIDB4MTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHg3MCwgMHg4ZSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4NmQsIDB4OGUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDc1LCAweDk0LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLCAweDczLCAweDhlLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4YSwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg3NSwgMHg4ZSwgMHgwMCwgMHg0YSwKKwkweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweGIwLCAweDAxLCAweDAwLAorCTB4MjQsIDB4MDAsIDB4MmQsIDB4MTUsIDB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHgwMCwgMHgyZCwgMHhmMCwgMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDE0LCAweDAwLCAweDJmLCAweGYyLCAweDBjLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAorCTB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxZiwgMHgxNSwKKwkweDFhLCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzQsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHgzNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGI5LCAweDhlLCAweGEyLCAweDQ1LCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDI0LCAweDAwLCAweDIwLCAweDBiLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MjAsIDB4MTMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHgwMCwgMHgyMCwgMHgwNiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg4ZiwgMHg4ZSwgMHgyMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDgwLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4OGYsIDB4OGUsIDB4MjIsIDB4NDAsCisJMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDhiLCAweDhlLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweGIyLCAweDhlLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4YTAsIDB4OGUsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZWUsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg0MSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGFkLCAweDhlLCAweDIyLCAweDRiLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHg5NiwgMHg4ZSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDljLCAweDhlLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4YWYsIDB4OTIsIDB4MDAsIDB4NDAsIDB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OWQsIDB4OGUsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDlmLCAweDhlLCAweDIyLCAweDA5LCAweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ZjksIDB4ODIsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhlZSwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzZCwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4YTMsIDB4OGUsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGE5LCAweDhlLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGFmLCAweDkyLCAweDAwLCAweDQwLAorCTB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YWEsIDB4OGUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhhYywgMHg4ZSwgMHgyMiwgMHgwOSwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4ZjksIDB4ODIsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGFlLCAweDhlLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhiNSwgMHg4ZSwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZiwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDExLCAweDMwLCAweDAxLCAweDAwLCAweGI2LCAweDhlLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLAorCTB4OTksIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjgsIDB4OGUsIDB4MjIsIDB4MDksCisJMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGQ0LCAweDhhLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDE5LAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4YzAsIDB4OGUsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGJjLCAweDhlLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDhlLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGFmLCAweDkyLCAweDAwLCAweDQwLAorCTB4MTEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YzUsIDB4OGUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyZCwgMHgwYSwKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2EsIDB4OGUsIDB4MDMsIDB4MWUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjYiwgMHg4ZSwgMHgwMCwgMHg0MSwgMHg4NywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDIxLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLCAweGI3LCAweDkzLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4ZSwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweGQyLCAweDhlLCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4OTQsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHhhMiwgMHg0YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGQ0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGJhLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4OGUsIDB4OWMsIDB4MTcsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhjYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHg4NCwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJkLCAweDk1LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzQsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2MSwgMHg5NSwgMHgwMCwgMHhmMCwgMHg4NCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQ0LCAweDhhLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweGU0LCAweDhlLCAweDIyLCAweDQwLCAweGU3LCAweDZkLCAweDAwLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4ZWMsIDB4OGUsIDB4YTIsIDB4NDAsCisJMHhlNSwgMHg2ZCwgMHgwMCwgMHgwMCwgMHg4MywgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDI0LCAweDAwLCAweDIwLCAweDBiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDIwLCAweDEzLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MjAsIDB4MDYsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwMCwgMHgyMCwgMHgwYSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkNCwgMHg4YSwgMHgyMiwgMHgwOSwKKwkweDgwLCAweDMwLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDQwLCAweDEzLCAweDMwLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzYywgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGZhLCAweDhlLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLAorCTB4OTksIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MWYsIDB4MTUsIDB4OTgsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHhmYSwgMHg4ZSwgMHgyMCwgMHgwMSwgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwgMHg3MCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweDQ4LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJlLCAweDQ2LCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGEwLCAweDAwLCAweDAwLCAweGE0LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweGY3LCAweDhlLCAweGE4LCAweDAwLAorCTB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhhYywgMHgwMCwgMHgyZiwgMHgwMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDE0LCAweDAwLCAweDJmLCAweDE1LCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4ODAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDEsCisJMHg4MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDdjLCAweDhlLCAweDIyLCAweDA5LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGY0LCAweDk0LCAweDAwLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4N2MsIDB4OGUsIDB4MDAsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDEzLCAweDAwLCAweDAwLCAweDQwLCAweDg3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4NDMsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjcsIDB4OTMsIDB4MDAsIDB4ZjAsCisJMHg4NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweDJjLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDJkLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDIsIDB4MTksIDB4ODAsIDB4MDAsIDB4MDAsCisJMHhhOSwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjOSwgMHg5NCwgMHgwMCwgMHg0OCwKKwkweDk1LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4OGYsIDB4YTgsIDB4NDAsCisJMHgxMywgMHgzMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDE1LCAweDhmLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDE0LCAweDhmLCAweDAwLCAweDQwLAorCTB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgxNCwgMHgwMCwgMHgyZCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGYwLCAweDg0LCAweDMwLCAweDAwLCAweDAwLAorCTB4MTMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODcsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YjcsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDJkLCAweDhmLCAweDAwLCAweDA5LCAweDAwLCAweGIwLCAweDAwLCAweDAwLCAweGNmLCAweDhhLCAweDg3LCAweDQyLAorCTB4MTksIDB4MTAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MmYsIDB4NDcsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4YSwgMHgwMCwgMHg0MCwgMHhlNywgMHg5MSwgMHgwMCwgMHgwMCwgMHgyZiwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDJiLCAweDhmLCAweDIyLCAweDQ3LCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MWUsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ZTcsIDB4MzEsIDB4MDEsIDB4MDAsIDB4MmIsIDB4OGYsIDB4MjIsIDB4MDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyNiwgMHg4ZiwgMHhhMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJiLCAweDhmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgzMiwgMHgwMCwgMHgyZCwgMHhmMiwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg0MSwgMHg5MywgMHgwMCwgMHhmMiwKKwkweDAyLCAweDMwLCAweDAxLCAweDAwLCAweDQ4LCAweDkzLCAweDAwLCAweDRiLCAweDAyLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmMsIDB4OGYsIDB4MDAsIDB4NDAsCisJMHgwMSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDhmLCAweDIyLCAweDAwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDMxLCAweDhmLCAweGEyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4OTYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgzMiwgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGJjLCAweDhmLCAweDIyLCAweDVjLCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgzYSwgMHg4ZiwgMHgyMiwgMHg0MCwgMHhlMywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MzcsIDB4OGYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhiYywgMHg4ZiwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDhjLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NDAsIDB4OGYsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTQsIDB4MDAsIDB4NGQsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHgwMiwgMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDE0LCAweDg3LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDc0LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDRlLCAweDhmLCAweDIyLCAweDQyLCAweDk2LCAweDE0LCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4NjQsIDB4MDAsIDB4NjgsIDB4NDAsCisJMHg5NywgMHg5OCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDA1LAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0YiwgMHg4ZiwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0ZiwgMHg4ZiwgMHhhOCwgMHg1YywgMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDVlLCAweDAxLCAweDJkLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTMsIDB4OGYsIDB4NjUsIDB4ZjIsIDB4MTIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwgMHgxMywgMHhmMCwgMHgwMSwgMHgwMCwgMHg1OCwgMHg4ZiwgMHgyMiwgMHg0NywKKwkweGU3LCAweDdkLCAweDAwLCAweDAwLCAweGY1LCAweDgyLCAweDc1LCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4NTIsIDB4OGYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsCisJMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHg3NSwgMHgwOSwgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4YTgsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjAsIDB4OGYsIDB4YTgsIDB4NDAsCisJMHhlMSwgMHgzMSwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDk5LCAweDNmLCAweDQyLCAweDEzLCAweGYwLCAweDAxLCAweDAwLCAweDY0LCAweDhmLCAweDY1LCAweDA1LAorCTB4NDgsIDB4MzEsIDB4MDAsIDB4MDAsIDB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDZjLCAweDhmLCAweDIyLCAweDRiLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2YSwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDYyLCAweDAwLCAweDBiLAorCTB4MTYsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MWUsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHg4NCwgMHg4ZiwgMHgyMiwgMHgwMCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhjYywgMHg5MywgMHgwMCwgMHg1ZiwKKwkweDAxLCAweDEwLCAweDAxLCAweDAwLCAweDZlLCAweDhmLCAweDIyLCAweDQwLCAweDk1LCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzYsIDB4OGYsIDB4YTgsIDB4MDAsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDA0LCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NDEsIDB4OTMsIDB4MDAsIDB4NTIsCisJMHg5NSwgMHgzMCwgMHgwMSwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDZlLCAweDhmLCAweDIyLCAweDQxLCAweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDBjLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDAsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg0OCwgMHg5MywgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDZlLCAweDhmLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLAorCTB4ZDQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTcsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMCwgMHgwYywgMHg5NiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYzLCAweDRjLCAweDk3LCAweGYwLCAweDAxLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWIsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg3NSwgMHg5NCwgMHgwMCwgMHg1ZSwgMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwNywKKwkweDFhLCAweGY0LCAweDAxLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDA3LCAweDE2LCAweDg4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4OGUsIDB4OGYsIDB4MzAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHhlNiwgMHg4MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGI3LCAweDAwLCAweDBkLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLAorCTB4ZTYsIDB4ODEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MTAsIDB4MGYsIDB4OTQsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHg5MywgMHgwNCwgMHgwMCwgMHg1ZiwgMHg5NSwgMHgwNCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDk4LCAweDhmLCAweDIyLCAweDUwLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4OTYsIDB4OGYsIDB4NDYsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4NDEsCisJMHgzMSwgMHhkMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZSwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODUsIDB4OTIsIDB4MDAsIDB4NDEsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YywgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGE5LCAweDhmLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsIDB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGEyLCAweDhmLCAweDM3LCAweDVjLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTYsIDB4OGYsIDB4MjgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhMywgMHg4ZiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGE2LCAweDhmLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MTQsIDB4ODcsIDB4MTcsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NzQsIDB4MDAsIDB4MjIsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM5LCAweDk0LCAweDAwLCAweDRhLCAweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGE5LCAweDkzLCAweDAwLCAweDVjLAorCTB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4NDAsIDB4OGYsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyZiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiYSwgMHg4ZiwgMHgyMiwgMHg0NywKKwkweGU3LCAweDdkLCAweDAwLCAweDAwLCAweDFlLCAweDkyLCAweDAwLCAweDQwLCAweGU3LCAweDMxLCAweDAxLCAweDAwLAorCTB4YmEsIDB4OGYsIDB4MjIsIDB4MDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YjUsIDB4OGYsIDB4YTIsIDB4NDAsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDhmLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MzIsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MSwgMHg5MywgMHgwMCwgMHhmMiwgMHgwMiwgMHgzMCwgMHgwMSwgMHgwMCwgMHg0OCwgMHg5MywgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4YzksIDB4OTQsIDB4MDAsIDB4NDgsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4YTksIDB4OTMsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhiZiwgMHg4ZiwgMHg4NywgMHg0MiwgMHgxOSwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDhiLCAweDAwLCAweDJmLCAweDQ3LCAweDE5LCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZTcsIDB4OTEsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDIsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhjZiwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhhOSwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLAorCTB4YmEsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MmQsIDB4OTUsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAwLCAweDJkLCAweGYwLCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDYxLCAweDk1LCAweDAwLCAweGYwLAorCTB4ODQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OTksIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhmNCwgMHg5NCwgMHgwMCwgMHg0NSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgyMiwgMHg0MiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDgzLCAweDk0LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLAorCTB4Y2YsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg4YywgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGQzLCAweDhmLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDgzLCAweDk0LCAweDAwLCAweDQ3LAorCTB4ODAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsIDB4MDQsIDB4ZGMsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweGUxLCAweDAwLCAweGE2LCAweDg0LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwNywgMHg4NCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDc1LCAweDk0LCAweDAwLCAweDVlLCAweDA1LCAweDEwLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MSwgMHhlNywgMHg0MSwgMHgwMSwgMHgwMCwgMHhkNCwgMHg4YSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDgzLCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4M2MsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgyYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDFmLCAweDBhLAorCTB4MmMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4OTUsIDB4MDAsIDB4MDYsIDB4MDQsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHhlYSwgMHg4ZiwgMHhhMiwgMHg0OCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHhlOCwgMHg4ZiwgMHg4NCwgMHg0OCwKKwkweDFmLCAweDEwLCAweDAwLCAweDAwLCAweGFjLCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLAorCTB4ZWEsIDB4OGYsIDB4MDAsIDB4MGEsIDB4ZTAsIDB4YzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhNywgMHg5MSwgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZWIsIDB4OGYsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4ZjgsIDB4OGYsIDB4MjIsIDB4MDIsIDB4MTQsIDB4NTAsIDB4MDAsIDB4MDAsIDB4ZjEsIDB4OTMsIDB4MDAsIDB4NDUsCisJMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg4ZiwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4OGYsIDB4YTgsIDB4NWMsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwgMHhlMywgMHg4ZiwgMHgwMCwgMHgwNSwKKwkweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDFiLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDgsIDB4MDAsIDB4MmQsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGI3LCAweDkzLCAweDAwLCAweDQxLCAweDg3LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg4ZiwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDQsIDB4OTAsIDB4MjIsIDB4MDksIDB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHg5MCwgMHgyMiwgMHg0NCwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGY0LCAweDk0LCAweDAwLCAweDRmLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDA4LCAweDkwLCAweGEyLCAweDQ3LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTksIDB4ODAsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHgxNiwgMHg5MCwgMHgyMiwgMHg0YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDBlLCAweDkwLCAweGEyLCAweDE2LCAweDAyLCAweDMwLCAweDAwLCAweDAwLAorCTB4OTksIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDJkLCAweDAwLCAweDJkLCAweDA4LCAweDJhLCAweGIwLCAweDAxLCAweDAwLCAweDEyLCAweDkwLCAweDIyLCAweDQyLAorCTB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxMywgMHg5MCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5NiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDJlLCAweDAwLCAweDJhLCAweGQwLCAweDAxLCAweDAwLAorCTB4MzIsIDB4MDAsIDB4MmEsIDB4MTUsIDB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4MTYsCisJMHhlNCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgyOCwgMHg5MCwgMHgyMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDJhLCAweGIwLCAweDAxLCAweDAwLCAweDdkLCAweDk1LCAweDAwLCAweDQwLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MjksIDB4OTAsIDB4MjIsIDB4NDAsIDB4MTEsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHhhYywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgyYiwgMHgwMSwKKwkweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDJiLCAweDAwLCAweGE2LCAweDE2LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4OTQsIDB4MDAsIDB4MDgsCisJMHg4MCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgyMSwgMHg5MCwgMHgwMCwgMHg1ZSwgMHgxNywgMHg5MCwgMHgwMCwgMHgwMCwKKwkweGVkLCAweDk0LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4OTQsIDB4MDAsIDB4MDcsIDB4MTYsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NzUsIDB4OTQsIDB4MDAsIDB4NWUsCisJMHgwNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDJmLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGQ0LCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MWIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgxZiwgMHgxNSwgMHgxYSwgMHg1MCwgMHgwMCwgMHgwMCwgMHgzNiwgMHg5MCwgMHgyMCwgMHgxNiwKKwkweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDcwLCAweDAwLCAweDAwLCAweDAzLCAweDQ4LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweGE0LAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MzMsIDB4OTAsIDB4YTgsIDB4NDYsIDB4MWYsIDB4MTAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDEwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDEwLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsCisJMHgyYywgMHhkMCwgMHgwMSwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZiwgMHg0MCwgMHgyMywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDNkLCAweDkwLCAweDg0LCAweDQ1LCAweDFmLCAweDEwLCAweDAwLCAweDAwLCAweDNlLCAweDkwLCAweDAwLCAweDBhLAorCTB4ZTAsIDB4YzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgzNCwgMHg5NCwgMHgwMCwgMHg0MCwgMHgzNSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDQ2LCAweDkwLCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg0MiwgMHg5MCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NTUsIDB4OTAsIDB4YTIsIDB4MDIsIDB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHg1NiwgMHg5MCwgMHgyMiwgMHg0MCwgMHgyZCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsCisJMHhlMCwgMHg4ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDRkLCAweDkwLCAweGE4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYywgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweGYwLCAweDEwLCAweGM4LCAweDAxLCAweDAwLAorCTB4ZjAsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MWIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4NTYsIDB4OTAsIDB4MDAsIDB4NWMsCisJMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgxMCwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGFmLCAweDkyLCAweDAwLCAweDQwLCAweDFmLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NWEsIDB4OTAsIDB4MjMsIDB4MGQsIDB4MmMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHg2MiwgMHg5MCwgMHgyMiwgMHg0NiwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDcwLCAweDgwLCAweDAwLCAweDAzLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4NjIsIDB4OTAsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDVlLCAweDkwLCAweGE4LCAweDQ2LCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgwMCwgMHgyZCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAxLCAweDAwLAorCTB4YjcsIDB4OTMsIDB4MDAsIDB4NDEsIDB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDY3LCAweDkwLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg2ZCwgMHg5MCwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDcxLCAweDkwLCAweDIyLCAweDQ0LCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4OTQsIDB4MDAsIDB4NGYsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NzEsIDB4OTAsIDB4YTIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweDA4LCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweDg2LCAweDkwLCAweDIyLCAweDRhLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4NzcsIDB4OTAsIDB4YTIsIDB4MTYsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4MmQsIDB4MDgsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ODIsIDB4OTAsIDB4MjIsIDB4NDIsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHg3YiwgMHg5MCwgMHhhMiwgMHhmMywgMHg4NCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE1LCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4ODUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2UsIDB4NDEsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHg3ZiwgMHg5MCwgMHgyMiwgMHg0MCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YSwKKwkweDExLCAweDkwLCAweDAxLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDA4LCAweGU0LCAweGY1LCAweDAxLCAweDAwLAorCTB4YzYsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ODMsIDB4OTAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg5NiwgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAwLCAweDJlLCAweDAwLCAweDJhLCAweGQwLCAweDAxLCAweDAwLCAweDMyLCAweDAwLCAweDJhLCAweDE1LAorCTB4ZTQsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4MTYsIDB4ZTQsIDB4YjEsIDB4MDAsIDB4MDAsCisJMHg4OSwgMHg5MCwgMHhhMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGQ2LCAweDkwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4MmQsIDB4MDgsIDB4MmEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTYsIDB4OTAsIDB4MjIsIDB4NDcsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg5MywgMHg5MCwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDhlLCAweDkwLCAweGEyLCAweGYzLCAweDg0LCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE1LAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4ODUsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHgwMCwgMHgzZSwgMHg0MSwgMHg4NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHg5MiwgMHg5MCwgMHgyMiwgMHg0MCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVhLCAweDExLCAweDkwLCAweDAxLCAweDAwLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTQsIDB4ZjUsIDB4MDEsIDB4MDAsIDB4NTgsIDB4MDEsIDB4MmQsIDB4MDAsCisJMHgyYSwgMHhkMCwgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMSwgMHgyZCwgMHhmMCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDJkLCAweDhlLCAweDAwLCAweGYwLCAweDJjLCAweGIwLCAweDAwLCAweDAwLCAweDdkLCAweDk1LCAweDAwLCAweDQxLAorCTB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OWQsIDB4OTAsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHg5YiwgMHg5MCwgMHgyMywgMHgwZCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4NDgsIDB4OTMsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZDYsIDB4OTAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhhYywgMHgwMCwgMHgyZiwgMHgwMSwgMHgxNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGIwLCAweDAwLCAweDJiLCAweDAxLCAweGUwLCAweGMxLCAweDAxLCAweDAwLCAweDAwLCAweDJiLCAweDAwLCAweGE2LAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHhhZCwgMHg5MCwgMHgyMywgMHgwZCwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGE2LCAweDkwLCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwYywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDIyLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDIzLCAweDgwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YjAsIDB4OTAsIDB4MjMsIDB4MGQsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHgwMiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGI1LCAweDkwLCAweDIyLCAweDQwLAorCTB4MWIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4OTQsIDB4MDAsIDB4MDEsIDB4ODQsIDB4NTAsIDB4MDEsIDB4MDAsCisJMHhiZCwgMHg5MCwgMHgyMiwgMHg0MCwgMHg4NSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDgwLCAweGMwLCAweDAxLCAweDAwLCAweDEwLCAweDgwLCAweDAwLCAweDEwLCAweDQ2LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NDMsIDB4ODEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhiYiwgMHg5MCwgMHhhOCwgMHgxMSwgMHhlMCwgMHgzMSwgMHgwMCwgMHgwMCwgMHhjYywgMHg5MCwgMHgwMCwgMHg1ZSwKKwkweDE3LCAweDkwLCAweDAwLCAweDAwLCAweGMwLCAweDkwLCAweDIzLCAweDBkLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGQsIDB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHg4NCwgMHhkMCwgMHgwMSwgMHgwMCwgMHhjNSwgMHg5MCwgMHgyMiwgMHg0MCwgMHgxYiwgMHg2YywgMHgwMCwgMHgwMCwKKwkweGVkLCAweDk0LCAweDAwLCAweDQzLCAweDYxLCAweDMxLCAweDAxLCAweDAwLCAweGNjLCAweDkwLCAweDIyLCAweDQwLAorCTB4ODUsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MTIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwKKwkweDQzLCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhMSwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweGNhLCAweDkwLCAweGE4LCAweDExLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHhjZCwgMHg5MCwgMHhhOCwgMHgwYSwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwKKwkweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDA1LCAweDQ4LCAweDMxLCAweDAxLCAweDAwLAorCTB4ZDQsIDB4OTAsIDB4MjMsIDB4MGQsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MTEsCisJMHgwMCwgMHg4YywgMHgwMSwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweGQ0LCAweDk0LCAweDAwLCAweDA3LCAweDE2LCAweDE0LCAweDAxLCAweDAwLCAweDc1LCAweDk0LCAweDAwLCAweDVlLAorCTB4MDUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MmYsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHhkNCwgMHg4YSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHg4ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MywgMHgwMCwgMHg0MCwgMHgxMywgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDg1LCAweGIwLCAweDAxLCAweDAwLCAweGI3LCAweDkzLCAweDAwLCAweDQxLAorCTB4ODcsIDB4MzAsIDB4MDEsIDB4MDAsIDB4M2MsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhlNywgMHg5MCwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZTMsIDB4OTAsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweGU5LCAweDkwLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDFhLCAweGQwLCAweDAxLCAweDAwLCAweGVmLCAweDkwLCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4N2QsIDB4OTUsIDB4MDAsIDB4NDAsIDB4OTUsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZjcsIDB4OTAsIDB4MjIsIDB4MDgsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHg5MCwgMHgwMCwgMHgwMCwgMHgyYSwgMHhjMCwgMHgwMCwgMHgwMCwKKwkweDdkLCAweDk1LCAweDAwLCAweDQxLCAweDk1LCAweDMwLCAweDAxLCAweDAwLCAweGYyLCAweDkwLCAweDIyLCAweDA4LAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OWQsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHhmNSwgMHg5MCwgMHgyMywgMHgwZCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDk3LCAweGMwLCAweDAxLCAweDAwLAorCTB4NDgsIDB4OTMsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjZiwgMHg4YSwgMHgyMiwgMHg0MiwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDgzLCAweDk0LCAweDAwLCAweDNhLCAweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4OTAsIDB4MDAsIDB4NGEsIDB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsCisJMHhjMSwgMHg5MiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwKKwkweDEwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDMyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDcsIDB4OTUsIDB4MDAsIDB4MDYsIDB4MDQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4OTEsIDB4YTIsIDB4NDQsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgxYiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDJjLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBhLAorCTB4MDIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTcsIDB4OTEsIDB4MDAsIDB4MDEsIDB4OGMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwYiwgMHg5MSwgMHgyMiwgMHg0MCwKKwkweGUzLCAweDZkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDcsIDB4OTEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLAorCTB4MTAsIDB4YzAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4OTEsIDB4MjIsIDB4MDIsIDB4MTQsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHhmMSwgMHg5MywgMHgwMCwgMHg0NSwgMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmZCwgMHg5MCwgMHgyMiwgMHg1YywKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MTAsIDB4OTEsIDB4YTgsIDB4NWMsCisJMHgxZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGZkLCAweDkwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDJkLCAweDQwLAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiNywgMHg5MywgMHgwMCwgMHg0MSwKKwkweDg3LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MTksIDB4OTEsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhZiwgMHg4MiwgMHgwMCwgMHg4OCwgMHgxYywgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDFmLCAweDkxLCAweDIyLCAweDA5LAorCTB4ODAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZjQsIDB4OTQsIDB4MDAsIDB4NDAsIDB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsCisJMHgyMiwgMHg5MSwgMHgyMiwgMHg0NCwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0ZiwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDE5LCAweDgwLCAweDAxLCAweDAwLAorCTB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsIDB4MDAsIDB4OGMsIDB4MDEsIDB4MDAsIDB4MzAsIDB4OTEsIDB4MjIsIDB4NGEsCisJMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgyOCwgMHg5MSwgMHhhMiwgMHgxNiwgMHgwMiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDJmLCAweDAwLCAweDIwLCAweDQwLAorCTB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4Y2YsIDB4OGEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgyZCwgMHgwMCwgMHgyZCwgMHgwOCwgMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyYywgMHg5MSwgMHgyMiwgMHg0MiwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGM2LCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmQsIDB4OTEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4OTYsIDB4OTMsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyYSwgMHhkMCwgMHgwMSwgMHgwMCwKKwkweDMyLCAweDAwLCAweDJhLCAweDE1LCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweGNmLCAweDhhLCAweDAwLCAweDE2LAorCTB4ZTQsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MTcsIDB4OTAsIDB4YTIsIDB4MTYsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGQ0LCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YzEsIDB4OTIsIDB4MDAsIDB4NGEsIDB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MmIsIDB4OTAsIDB4MDAsIDB4MTAsCisJMHgzMiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4YSwgMHgwMCwgMHgyMCwgMHg0MCwgMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDNhLCAweDkxLCAweGEyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4M2QsIDB4OTEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg0MSwgMHg5MywgMHgwMCwgMHgxNSwgMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHg0OCwgMHg5MywgMHgwMCwgMHg0YiwKKwkweDAyLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4M2YsIDB4OTEsIDB4MjIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTQsIDB4MDAsIDB4M2EsCisJMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0NSwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGNmLCAweDhhLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGVjLCAweDhlLCAweDAwLCAweDQ1LAorCTB4MWYsIDB4OTAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgzYywgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyYiwgMHg5MCwgMHgwMCwgMHgwMSwKKwkweDJjLCAweGIwLCAweDAwLCAweDAwLCAweDhjLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4NTEsIDB4OTEsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweDRhLCAweDkxLCAweDM3LCAweDVjLAorCTB4NjEsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0ZSwgMHg5MSwgMHgyOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0YiwgMHg5MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4NGUsIDB4OTEsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODcsIDB4MTcsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMSwgMHgyMCwgMHgwOCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDAxLCAweDIwLCAweDE2LCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDgzLCAweDkzLCAweDAwLCAweDQ3LAorCTB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4M2MsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgyYiwgMHg5MCwgMHgwMCwgMHgwMSwgMHgyYywgMHhiMCwgMHgwMCwgMHgwMCwgMHg4YywgMHg5MiwgMHgwMCwgMHg0NywKKwkweDFmLCAweDEwLCAweDAxLCAweDAwLCAweDYzLCAweDkxLCAweGEyLCAweDA4LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4NWYsIDB4OTEsIDB4YTIsIDB4NDIsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODIsIDB4MDAsIDB4MDIsCisJMHgwNCwgMHhkYywgMHgwMSwgMHgwMCwgMHhhMCwgMHg5OCwgMHgwMCwgMHg0MCwgMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDMwLCAweDA1LCAweDAwLCAweDQxLCAweDg5LCAweDMwLCAweDAxLCAweDAwLCAweDQxLCAweDkzLCAweDAwLCAweDE1LAorCTB4OTQsIDB4MzAsIDB4MDEsIDB4MDAsIDB4NDgsIDB4OTMsIDB4MDAsIDB4NGIsIDB4MDIsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgxNCwgMHg4NywgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4ODMsIDB4OTQsIDB4MDAsIDB4M2EsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MTQsIDB4ODcsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMSwgMHgyMCwgMHgwOCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDYwLCAweDAxLCAweDIwLCAweDE2LCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweGMxLCAweDkyLCAweDAwLCAweDEwLAorCTB4MzIsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MmIsIDB4OTAsIDB4MDAsIDB4NDAsIDB4MTMsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg4YywgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3MywgMHg5MSwgMHhhMiwgMHgwOCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDgyLCAweDAwLCAweDAyLCAweDA0LCAweGRjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MDMsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg2YywgMHg5MSwgMHgzNywgMHg1YywgMHg2MSwgMHgzMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDFiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDcwLCAweDkxLCAweDI4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4NmQsIDB4OTEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3MCwgMHg5MSwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDE0LCAweDg3LCAweDE3LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4YywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDhlLCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDkzLCAweDAwLCAweDQwLAorCTB4MTMsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiNywgMHg5MywgMHgwMCwgMHg0MSwgMHg4NywgMHgzMCwgMHgwMSwgMHgwMCwgMHgzYywgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLAorCTB4ODIsIDB4OTEsIDB4MjIsIDB4NDAsIDB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDdlLCAweDkxLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LAorCTB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgyZCwgMHg4ZSwgMHgyMiwgMHgwOSwgMHg4MCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDEzLCAweDMwLCAweDAxLCAweDAwLCAweDJkLCAweDhlLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MTQsIDB4MDAsIDB4MmQsIDB4NDUsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NzUsIDB4OGUsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg5MCwgMHgwMCwgMHgwMCwgMHg4YSwgMHg5MSwgMHhhMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDFmLCAweDkwLCAweDAxLCAweDAwLCAweGRkLCAweDhmLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ODMsIDB4OTMsIDB4MDAsIDB4NGEsIDB4MWYsIDB4MTAsIDB4MDEsIDB4MDAsCisJMHgzYywgMHg5MywgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHgyYiwgMHg5MCwgMHgwMCwgMHgwMSwKKwkweDJjLCAweGIwLCAweDAwLCAweDAwLCAweGMxLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MmIsIDB4OTAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OGUsIDB4MDAsIDB4NDUsCisJMHgxZiwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgzNywgMHhjMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDMzLCAweGMzLCAweDAxLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAxLAorCTB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg5NiwgMHg5MSwgMHg4NSwgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg0OCwKKwkweDAzLCAweGQwLCAweDAwLCAweDAwLCAweDk4LCAweDkxLCAweDljLCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OWYsIDB4NGMsIDB4MDMsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDEsCisJMHgzNCwgMHhjMywgMHgwMSwgMHgwMCwgMHg0MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg5ZCwgMHg5MiwgMHgwMCwgMHg0MSwgMHhlMSwgMHgzMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MywKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMywgMHhlMCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhNCwgMHg5MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYSwgMHgwMCwgMHgyMCwgMHg0MCwKKwkweGU1LCAweGIxLCAweDAxLCAweDAwLCAweGIwLCAweDAwLCAweDJmLCAweDAxLCAweDhjLCAweGQwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4ZTAsIDB4YzEsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmYsIDB4NDAsCisJMHgxMywgMHhiMCwgMHgwMSwgMHgwMCwgMHhjYywgMHgwMCwgMHgyZCwgMHgwMSwgMHhlMCwgMHhjMSwgMHgwMSwgMHgwMCwKKwkweGFlLCAweDkxLCAweDljLCAweDE3LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDg0LCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4YjAsIDB4OTEsIDB4MjIsIDB4NDcsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHgxMywgMHg5MCwgMHgwMSwgMHgwMCwgMHgyZCwgMHg5NSwgMHgwMCwgMHg0NywKKwkweDE5LCAweDEwLCAweDAxLCAweDAwLCAweGMwLCAweDAwLCAweDJkLCAweDQ0LCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4YzQsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NjEsIDB4OTUsIDB4MDAsIDB4ZjAsCisJMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyZCwgMHgwNSwgMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM1LCAweDkxLCAweGEyLCAweDRiLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDE4LCAweDkyLCAweGEyLCAweDRjLAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4YzUsIDB4OTEsIDB4MWYsIDB4MWMsIDB4ZTAsIDB4NmQsIDB4MDAsIDB4MDAsCisJMHhjOCwgMHg5MSwgMHhhMiwgMHgwMSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMCwgMHgyZCwgMHg0NiwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGJlLCAweDkxLCAweDFmLCAweDFjLCAweGUwLCAweDZkLCAweDAwLCAweDAwLAorCTB4YjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4YzAsIDB4OTEsIDB4MjIsIDB4ZjAsCisJMHgzYSwgMHg2YywgMHgwMCwgMHgwMCwgMHgxNSwgMHg5MiwgMHgxZiwgMHhmMCwgMHgzYSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDQwLCAweDgwLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDRmLAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OGEsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgxNiwgMHg5MiwgMHgyMCwgMHg0MiwgMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHhjNCwgMHg5MSwgMHgyMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU5LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NTgsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzcsIDB4OTEsIDB4MjIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1YywgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDViLCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGFjLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4ODQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhjYywgMHg5MSwgMHhhMiwgMHg0MiwgMHgyNCwgMHg2YywgMHgwMCwgMHgwMCwgMHhkNSwgMHg5MSwgMHgyMywgMHhmMCwKKwkweDAyLCAweDZjLCAweDAwLCAweDAwLCAweGQyLCAweDkxLCAweGEyLCAweGYwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLAorCTB4MTcsIDB4OTIsIDB4YTIsIDB4NDIsIDB4MjQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MTcsIDB4OTIsIDB4YTIsIDB4NDEsCisJMHgwMywgMHg2YywgMHgwMCwgMHgwMCwgMHhkMSwgMHg5MSwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDUxLCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDUyLAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTcsIDB4OTIsIDB4MWYsIDB4MTIsIDB4ODQsIDB4NTAsIDB4MDAsIDB4MDAsCisJMHgxNywgMHg5MiwgMHhhMCwgMHgwMSwgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHhjNSwgMHg5MSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDhiLCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTIsIDB4YTIsIDB4NDYsIDB4ZTcsIDB4N2QsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHhmMiwgMHg5MSwgMHgyMiwgMHhmMCwgMHgxNCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweGRlLCAweDkxLCAweDIwLCAweDBhLCAweDAyLCAweDZjLCAweDAwLCAweDAwLCAweGVmLCAweDkxLCAweDAzLCAweDFlLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZGQsIDB4OTEsIDB4YTIsIDB4NDAsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0NCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGUzLCAweDkxLCAweDIyLCAweDBhLCAweDAyLCAweDZjLCAweDAwLCAweDAwLAorCTB4ZTYsIDB4OTEsIDB4YTIsIDB4NDEsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsIDB4ZTIsIDB4OTEsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1NSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDU2LCAweDhmLCAweGIwLCAweDAxLCAweDAwLCAweGU1LCAweDkxLCAweGEyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDMsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OCwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDgyLCAweGQwLCAweDAxLCAweDAwLAorCTB4ZWMsIDB4OTEsIDB4MjAsIDB4OTEsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4OTEsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgyNiwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDI3LCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLCAweGVlLCAweDkxLCAweGEyLCAweDQwLAorCTB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MWYsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgyMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHg4ZiwgMHg5OCwgMHgwMSwgMHgwMCwgMHhmMSwgMHg5MSwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDIyLCAweDAwLCAweDgwLCAweDQwLCAweDhmLCAweDk4LCAweDAxLCAweDAwLAorCTB4MjMsIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4ODgsIDB4MDAsIDB4MmQsIDB4NDQsCisJMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhmYiwgMHg5MSwgMHhhMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGY4LCAweDkxLCAweGEyLCAweDQzLCAweDNkLCAweDdjLCAweDAwLCAweDAwLCAweGY4LCAweDkxLCAweGEyLCAweGYyLAorCTB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsIDB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwgMHhmYSwgMHg5MSwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQzLCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDgsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4OTEsIDB4YTAsIDB4OTEsCisJMHgwMywgMHg2YywgMHgwMCwgMHgwMCwgMHhmNiwgMHg5MSwgMHgyMiwgMHg0MywgMHgzZCwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGZmLCAweDkxLCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDgwLCAweDQwLAorCTB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MjksIDB4MDAsIDB4ODAsIDB4NDAsIDB4OGYsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgwOSwgMHg5MiwgMHhhMiwgMHhmMCwKKwkweDE0LCAweDMwLCAweDAwLCAweDAwLCAweDg4LCAweDAwLCAweDJkLCAweDQ0LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDYsIDB4OTIsIDB4YTIsIDB4ZjIsIDB4MDIsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTIsIDB4NDAsCisJMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0OSwgMHg4ZiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGY4LCAweDkxLCAweDIyLCAweDQxLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweGY2LCAweDkxLCAweDIwLCAweDkxLAorCTB4MDMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTEsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwZCwgMHg5MiwgMHgyMCwgMHgwYSwgMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHgwYywgMHg5MiwgMHhhMiwgMHg0MCwKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ0LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDksIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTIsIDB4OTIsIDB4MjIsIDB4MGEsCisJMHgwMiwgMHg2YywgMHgwMCwgMHgwMCwgMHhlNiwgMHg5MSwgMHhhMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDExLCAweDkyLCAweGEyLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU1LAorCTB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTYsIDB4OGYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHg5MiwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MywKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQ4LCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MWEsIDB4OTIsIDB4MDAsIDB4NDMsIDB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4OTIsIDB4MDAsIDB4NDEsCisJMHg5NSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxYSwgMHg5MiwgMHgwMCwgMHg0MiwgMHg5NSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDFhLCAweDkyLCAweDAwLCAweDQ0LCAweDk1LCAweGIwLCAweDAwLCAweDAwLCAweDFhLCAweDkyLCAweDAwLCAweDRjLAorCTB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YzksIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgxZCwgMHg5MiwgMHhhMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0YiwKKwkweDhmLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDRjLCAweDhmLCAweGIwLCAweDAxLCAweDAwLAorCTB4MmQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmYsIDB4ZjMsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyMiwgMHg5MiwgMHhhMiwgMHhmMywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDAxLCAweGIwLCAweDAxLCAweDAwLCAweDJkLCAweDAwLCAweDJhLCAweDQxLAorCTB4ZTcsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4ZDQsIDB4MDAsIDB4M2QsIDB4NDEsIDB4ODUsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwYiwgMHgwMCwgMHgwMCwgMHhmMiwgMHgwMCwgMHhlNCwgMHgwMSwgMHgwMCwgMHgyOCwgMHg5MiwgMHgyMiwgMHg1YSwKKwkweDAxLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4MjksIDB4OTIsIDB4MDAsIDB4NWEsIDB4MDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHg4NSwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEwLCAweGE1LCAweDg1LCAweDZjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUzLCAweDQwLAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHhjNiwgMHg5NSwgMHgwMCwgMHhmMCwKKwkweDhjLCAweGIwLCAweDAwLCAweDAwLCAweDM2LCAweDkyLCAweDIyLCAweDQwLCAweDBmLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzMsIDB4OTIsIDB4YTIsIDB4NGIsCisJMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHgzNCwgMHg5MiwgMHgyMiwgMHhmMCwgMHgxOCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDRiLCAweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGZmLCAweDkyLCAweDAwLCAweDA3LAorCTB4MTAsIDB4MzAsIDB4MDEsIDB4MDAsIDB4ZjksIDB4ODIsIDB4MDAsIDB4NDAsIDB4MDUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgzOCwgMHg5MiwgMHgyMiwgMHg1YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHg4NSwgMHg5MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMwLCAweDAxLCAweDAwLCAweGY5LCAweDgyLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4NGIsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHhmZiwgMHg5MiwgMHgwMCwgMHgwNywgMHgxMCwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweGY5LCAweDgyLCAweDAwLCAweDQwLCAweDA1LCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4NGIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHhmZiwgMHg5MiwgMHgwMCwgMHgwNywgMHgxMCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDA1LCAweGIwLCAweDAxLCAweDAwLCAweDQxLCAweDkyLCAweDMzLCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4NDQsIDB4OTIsIDB4YTEsIDB4YWQsIDB4OTUsIDB4MjAsIDB4MDAsIDB4MDAsIDB4NTIsIDB4OTIsIDB4MTMsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMywgMHg0YSwgMHg1YSwgMHg4MywgMHgwMSwgMHgwMCwKKwkweDMwLCAweDAwLCAweDM5LCAweDQ1LCAweDk1LCAweGUwLCAweDAxLCAweDAwLCAweDFmLCAweDAwLCAweDAwLCAweDBmLAorCTB4NWUsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4NWYsIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKwkweDQ4LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDRhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4NTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg0ZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhMiwgMHg4NCwgMHgwMCwgMHg0MCwgMHg1ZCwgMHg5OCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDEsIDB4OTcsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHg0ZiwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDk3LCAweGIwLCAweDAxLCAweDAwLCAweDUzLCAweDkyLCAweDYwLCAweDA3LCAweDk2LCAweDMwLCAweDAwLCAweDAwLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4NGIsIDB4ODQsIDB4ODksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4YzIsCisJMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1ZCwgMHg5MiwgMHhhMiwgMHg0NSwgMHgyNSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDU3LCAweDkyLCAweDMxLCAweDIwLCAweDg1LCAweDMwLCAweDAwLCAweDAwLCAweDVlLCAweDkyLCAweDIyLCAweDEyLAorCTB4NDgsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDQsIDB4MTEsIDB4MTIsIDB4NDgsIDB4MDMsIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDFlLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDVhLCAweDFmLCAweDkwLCAweDAxLCAweDAwLAorCTB4NWQsIDB4OTIsIDB4MzEsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsCisJMHgyNCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1ZSwgMHg5MiwgMHgyMiwgMHgxMiwgMHg0OCwgMHg3ZiwgMHgwMCwgMHgwMCwKKwkweDU4LCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NmIsIDB4OTIsIDB4MGIsIDB4ZjAsIDB4ODQsIDB4MzAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMSwgMHgxMiwgMHg0OCwgMHg4MywgMHgwMSwgMHgwMCwgMHg2OCwgMHg5MiwgMHgyMiwgMHg1MCwKKwkweDg1LCAweDcwLCAweDAwLCAweDAwLCAweDVlLCAweDAxLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MmEsIDB4OTQsIDB4MDAsIDB4ZjIsIDB4OTYsIDB4MzAsIDB4MDEsIDB4MDAsIDB4OTMsIDB4MDQsIDB4MDAsIDB4MTIsCisJMHg5NCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YSwgMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDEyLCAweDk2LCAweGU0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDRiLAorCTB4MWUsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MTAsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhiNywgMHgzZiwgMHg0MywgMHgxMSwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwOCwKKwkweDhhLCAweDg4LCAweDAxLCAweDAwLCAweDZlLCAweDkyLCAweDMwLCAweGExLCAweDBjLCAweDMwLCAweDAwLCAweDAwLAorCTB4NzEsIDB4OTIsIDB4MjIsIDB4NDUsIDB4ZTYsIDB4N2QsIDB4MDAsIDB4MDAsIDB4NWUsIDB4OTIsIDB4MTAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYSwgMHg0NSwgMHhlNiwgMHg5MSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDEwLCAweDEyLCAweDQ4LCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4NGIsIDB4ODUsIDB4ODAsIDB4MDEsIDB4MDAsCisJMHg1ZSwgMHgwMSwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgyYSwgMHg5NCwgMHgwMCwgMHhmMiwKKwkweDk2LCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4ZDgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MmQsIDB4MDUsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg3YywgMHg5MiwgMHgyMiwgMHg0MCwgMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDAwLCAweDAwLCAweDQwLCAweDgwLCAweGM4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHhhNywgMHg4NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4ODAsIDB4OTIsIDB4YTgsIDB4MDUsIDB4ZTAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MTIsCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHg0YiwgMHg5NiwgMHhkYywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDRiLCAweDFlLCAweDk0LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDBmLAorCTB4ODQsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MWYsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ODQsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHg4OSwgMHg5MiwgMHgyMiwgMHg0MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHg4YSwgMHg5MiwgMHgwMCwgMHg0MiwKKwkweDY4LCAweGIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDZhLCAweGIxLCAweDAxLCAweDAwLAorCTB4OGEsIDB4OTIsIDB4MzEsIDB4NWEsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTEsIDB4NDIsCisJMHg0OCwgMHg5MywgMHgwMSwgMHgwMCwgMHg4YywgMHg5MiwgMHgzNSwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDZkLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDkxLCAweDkyLCAweDI4LCAweGIxLAorCTB4MmMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OTIsIDB4MjIsIDB4NGQsIDB4NzUsIDB4N2QsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5NSwgMHg0MCwgMHgxMSwgMHhiMCwgMHgwMSwgMHgwMCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDYxLCAweDk5LCAweDAxLCAweDAwLCAweDkxLCAweDkyLCAweGE4LCAweGIxLCAweDEwLCAweDMwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4N2YsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg2MSwgMHg5OSwgMHgwMSwgMHgwMCwgMHg5OCwgMHg5MiwgMHgyOCwgMHhiMSwgMHgxMCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDk0LCAweDkyLCAweDlmLCAweGJhLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MjQsIDB4MTEsIDB4ODQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4OWEsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg0NywgMHg5OSwgMHgwMSwgMHgwMCwgMHg5ZSwgMHg5MiwgMHgzMiwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGE0LCAweDkyLCAweDIyLCAweGY4LCAweDk2LCAweDMwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweGY4LAorCTB4OTAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OTIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHg0YiwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHg5MiwgMHg0OCwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDZjLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLAorCTB4YTgsIDB4OTIsIDB4MjgsIDB4YjEsIDB4OTIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4OTIsIDB4MjIsIDB4NGMsCisJMHg3NSwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgxMiwgMHg0MCwgMHg5MSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDZjLCAweDAwLCAweDAwLCAweDQwLCAweDYxLCAweDk5LCAweDAxLCAweDAwLCAweGE4LCAweDkyLCAweGE4LCAweGIxLAorCTB4OTAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NDgsIDB4OTYsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg5MCwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweGYwLCAweGNkLCAweDAxLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDQ4LCAweGYwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTIsIDB4NDksIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgwOCwgMHg4MiwgMHg4YywgMHgwMSwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweGYwLCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQxLAorCTB4MDAsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4YjUsIDB4OTIsIDB4MjIsIDB4MWEsIDB4MDAsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHgwMCwgMHgzNCwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweGIxLCAweDkyLCAweGEyLCAweDQxLCAweDIzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MmQsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHgwNywgMHgwMCwgMHgxNSwgMHg4MiwgMHg4YywgMHgwMSwgMHgwMCwKKwkweGZmLCAweDA3LCAweDAwLCAweGYwLCAweDAwLCAweDhjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQxLAorCTB4MDAsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4YmUsIDB4OTIsIDB4MjIsIDB4MGQsIDB4MDAsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHg5OSwgMHg5MiwgMHgwMCwgMHgwMCwgMHgxYSwgMHgzMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDQ5LCAweGMxLCAweDAxLCAweDAwLCAweGJhLCAweDkyLCAweGEyLCAweDQxLCAweDIzLCAweDUwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YzMsIDB4OTIsIDB4ODMsIDB4MWUsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDI0LCAweDAwLCAweDJkLCAweDAxLCAweDJjLCAweGIwLCAweDAxLCAweDAwLCAweDI4LCAweDAwLCAweDJkLCAweGYwLAorCTB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgxNCwgMHgwMCwgMHgyZiwgMHhmMiwgMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4NjAsIDB4OTcsIDB4MmUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjYSwgMHg5MiwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDY0LCAweDk3LCAweDNlLCAweDQzLCAweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTcsIDB4M2UsIDB4NDMsIDB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwYiwgMHhlOCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg2NCwgMHg5NywgMHgzZiwgMHg0MywKKwkweDlkLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDE2LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDAsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NjQsIDB4OTcsIDB4M2YsIDB4NDMsCisJMHg5ZCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHgxNiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLCAweDYwLCAweDE3LCAweDNkLCAweDQzLAorCTB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4ODAsIDB4YTEsIDB4MTYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHhiNSwgMHgwMCwgMHgwZCwgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhkOSwgMHg5MiwgMHgzMCwgMHg0NywKKwkweDE3LCAweDA0LCAweDAwLCAweDAwLCAweGRjLCAweDkyLCAweGEyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OTAsIDB4NDIsIDB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjcsIDB4MDAsIDB4MGQsCisJMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHhlMCwgMHg5MiwgMHhhMiwgMHgwYiwgMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBiLCAweGU2LCAweDkxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDQxLAorCTB4ODEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhlMSwgMHg5MiwgMHg0MCwgMHgwNywgMHg5NiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg5ZCwgMHgwNCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAxLCAweDAwLCAweGViLCAweDkyLCAweGEyLCAweDQ1LCAweDk1LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDEsIDB4OTcsIDB4M2YsIDB4NDEsIDB4OTUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDk3LCAweDNlLCAweDQwLCAweDk3LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRlLAorCTB4ZTYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4OTcsIDB4M2UsIDB4NDAsIDB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHhmZSwgMHg5MiwgMHgwMCwgMHgzYiwgMHhlNywgMHhiMSwgMHgwMCwgMHgwMCwgMHhlYiwgMHg5MiwgMHgzMCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGY1LCAweDkyLCAweGEyLCAweDBiLCAweGU2LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4YjUsIDB4MDAsIDB4MGQsIDB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZjEsIDB4OTIsIDB4YTIsIDB4MGIsCisJMHhlNiwgMHg3ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDk4LCAweDQyLCAweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweGI3LCAweDAwLCAweDBkLAorCTB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZTYsIDB4OTEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgxMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHg0MSwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIxLCAweGEyLCAweDk1LCAweDIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4NGEsIDB4NDQsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OTcsIDB4M2UsIDB4NDEsCisJMHg5NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZSwgMHhmNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRlLCAweGU2LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDk3LCAweDNlLCAweDQwLAorCTB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2IsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg5MCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwNywKKwkweDkyLCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjcsIDB4MDAsIDB4NDMsCisJMHg0NiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwOCwgMHg4MiwgMHg4OCwgMHgwMSwgMHgwMCwKKwkweDAyLCAweDkzLCAweDQwLCAweDA4LCAweDk2LCAweDMwLCAweDAwLCAweDAwLCAweDlkLCAweDA0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MGUsIDB4OTMsIDB4MjIsIDB4NDUsIDB4OTUsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHgwYSwgMHg5MywgMHgyMiwgMHg1YSwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwZiwKKwkweDk2LCAweGY0LCAweDAxLCAweDAwLCAweDA3LCAweDkzLCAweDMxLCAweDVmLCAweDk3LCAweDA0LCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTEsIDB4NGIsIDB4NDgsIDB4OTMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2YSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYSwgMHg5MywgMHgzMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweGU2LCAweDgxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg5NywgMHgzZiwgMHg0MSwgMHg5NSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDQwLCAweDk3LCAweDNkLCAweDQwLCAweDk3LCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4ZjMsIDB4ODgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MTYsIDB4OTMsIDB4YTIsIDB4M2IsCisJMHg4OSwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YSwgMHg5MCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDAwLCAweGE2LCAweDkyLCAweGIxLCAweDAxLCAweDAwLCAweDE3LCAweDkzLCAweDE4LCAweDRhLAorCTB4NDQsIDB4OTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHgzMCwgMHgwMCwgMHgzOSwgMHg0NSwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgxYywgMHg5MywgMHgyMiwgMHg1YSwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDFmLCAweDA0LCAweDAwLCAweDBmLCAweDk4LCAweGQ4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4NWUsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MWUsIDB4OTMsIDB4MDAsIDB4MDUsCisJMHg0YSwgMHhiMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHgwNCwgMHgwMCwgMHhhNywgMHg1ZSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDRiLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgxZiwgMHg5MywgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDIyLCAweDkzLCAweDQwLCAweDA3LCAweDk2LCAweDMwLCAweDAwLCAweDAwLAorCTB4OWQsIDB4MDQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MjYsIDB4OTMsIDB4MjIsIDB4NDUsCisJMHg5NSwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDliLCAweDA0LCAweDAwLCAweDRhLCAweDQ0LCAweDEzLCAweDAxLCAweDAwLCAweDAwLCAweDk3LCAweDNmLCAweDQxLAorCTB4OTUsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg5NywgMHgzZCwgMHg0MCwgMHg5NywgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MywgMHhmMywKKwkweDg4LCAweGIwLCAweDAxLCAweDAwLCAweDMwLCAweDAwLCAweDM4LCAweDQ1LCAweDk3LCAweGUwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MGYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDJlLCAweDkzLCAweGE4LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDI3LCAweDkzLCAweGEyLCAweDNiLAorCTB4ODksIDB4NmMsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MzgsIDB4NDUsIDB4OWQsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5OCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHg5MywgMHgwNCwgMHgwMCwgMHgxMiwKKwkweDk0LCAweDMwLCAweDAxLCAweDAwLCAweGZmLCAweDkyLCAweDAwLCAweDVhLCAweDFmLCAweDAwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NWEsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MTEsIDB4MDAsIDB4MDAsIDB4NGEsCisJMHhlNiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgzNCwgMHgwMCwgMHgyZiwgMHg0ZiwgMHg5NSwgMHg4NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDYzLCAweDRiLAorCTB4ODQsIDB4YzgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4NDMsIDB4ODUsIDB4NmMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhlMywgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyZCwgMHg0NCwKKwkweDFmLCAweDkwLCAweDAxLCAweDAwLCAweDMyLCAweDAwLCAweDJkLCAweGYyLCAweDJhLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4ZjIsIDB4MDIsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MWUsIDB4OTIsIDB4MDAsIDB4MTAsCisJMHgzMiwgMHgzMCwgMHgwMSwgMHgwMCwgMHgzMiwgMHgwMCwgMHhhMCwgMHg0MCwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQwLAorCTB4OTksIDB4OTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGEsIDB4MDIsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMywgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDk3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGEzLCAweDRjLCAweDAyLCAweGQwLCAweDAwLCAweDAwLAorCTB4NDUsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsCisJMHgzNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg1NSwgMHg5MywgMHgyMiwgMHg0MSwgMHgwMywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLAorCTB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGIxLCAweDAxLCAweDAwLCAweDRlLCAweDkzLCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4OTksIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3YywgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDQ5LCAweDkzLCAweDAwLCAweDVjLAorCTB4MDEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4OTksIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxYiwgMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMSwgMHgyZCwgMHgwNiwKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDgyLCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDYsIDB4YzksIDB4MDEsIDB4MDAsIDB4OTQsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwgMHg3YywgMHg5MywgMHgyMiwgMHg0MCwgMHgxMSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDY4LCAweDA4LCAweDM4LCAweDk2LCAweDAxLCAweDAwLCAweGYwLCAweDA3LCAweDAwLCAweDQxLAorCTB4ODIsIDB4Y2MsIDB4MDEsIDB4MDAsIDB4NWEsIDB4OTMsIDB4YWEsIDB4NDEsIDB4M2IsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywKKwkweDExLCAweDgwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDFkLCAweDA0LCAweGNjLCAweDAxLCAweDAwLAorCTB4N2IsIDB4OTMsIDB4MjYsIDB4NDYsIDB4MjMsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHgxMiwgMHhjOCwgMHgwMSwgMHgwMCwgMHg2NCwgMHgwMSwgMHgyMCwgMHhmMCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDdhLCAweDkzLCAweDIyLCAweDQxLCAweDA1LCAweDUwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAzLAorCTB4NDgsIDB4YzksIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyMiwgMHg0NCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4YTQsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg2YywgMHg5MywgMHhhOCwgMHg0NiwgMHgxZiwgMHgxMCwgMHgwMCwgMHgwMCwKKwkweDc5LCAweDkzLCAweDIyLCAweDQxLCAweDA1LCAweDUwLCAweDAwLCAweDAwLCAweDc3LCAweDkzLCAweGEyLCAweDQxLAorCTB4MjMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTEsIDB4MWEsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDcyLCAweDkzLCAweGE4LCAweDQ2LCAweDIzLCAweDMwLCAweDAwLCAweDAwLAorCTB4YWYsIDB4ODIsIDB4MDAsIDB4ODgsIDB4MWMsIDB4YjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHg0MiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDEzLCAweGMwLCAweDAxLCAweDAwLCAweDY3LCAweDkzLCAweDAwLCAweDUwLAorCTB4NDksIDB4YzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwNCwgMHg4MCwgMHgwMCwgMHgwMywgMHgxYSwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDdiLCAweDkzLCAweDIyLCAweDQwLCAweDNiLCAweDZjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OTksIDB4OTIsIDB4MDAsIDB4NWMsCisJMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg3YywgMHg5MywgMHgwMCwgMHg0MSwgMHgzYiwgMHhkMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDhkLCAweDQ3LCAweDgwLCAweDMyLCAweDAxLCAweDAwLCAweGIwLCAweDAwLCAweDJmLCAweDVmLAorCTB4MTMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4ZjAsIDB4OGMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwKKwkweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDhjLCAweGIwLCAweDAxLCAweDAwLAorCTB4ODgsIDB4OTMsIDB4OGMsIDB4ZjgsIDB4OGUsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsCisJMHgxOSwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyMiwgMHhmOCwgMHgxNCwgMHgzMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDE2LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LAorCTB4MjYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MmUsIDB4ZjgsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwYywgMHgwMCwgMHgyYSwgMHg0YSwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweGUwLCAweGM5LCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweDIwLCAweDFiLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4OTUsIDB4OTMsIDB4MjAsIDB4MGEsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsCisJMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5NiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDIwLCAweGYwLCAweGU0LCAweGIxLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDIwLCAweDRhLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MjAsIDB4NGIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg4MCwgMHg5MywgMHgwMCwgMHg0MCwgMHgxMywgMHhiMCwgMHgwMCwgMHgwMCwgMHgyYywgMHgwMCwgMHgyZCwgMHg0MiwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweDJlLCAweDAwLCAweDJmLCAweGYzLCAweDgyLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWIsIDB4OTMsIDB4YTIsIDB4YTUsCisJMHg5NywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MSwgMHg5NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDllLCAweDkzLCAweGEyLCAweDQwLCAweDk3LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MmQsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MywgMHg0MSwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHhkNCwgMHgwMCwgMHgzZSwgMHg0MSwKKwkweDgzLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDgzLCAweGMwLCAweDAxLCAweDAwLAorCTB4YTMsIDB4OTMsIDB4YTAsIDB4YTUsIDB4ODMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgyYywgMHgwMCwgMHgyMCwgMHg0MSwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGE4LCAweDkzLCAweDIyLCAweDQwLCAweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLAorCTB4OTgsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ZTQsIDB4ZjUsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwgMHgxZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHgwYiwgMHgwMCwgMHg4MCwgMHgwMCwKKwkweGU0LCAweGY1LCAweDAxLCAweDAwLCAweDlkLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDQxLCAweDg3LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg1ZCwgMHgwNSwgMHg5MCwgMHgwMCwgMHgwMCwKKwkweGI0LCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDlkLCAweDkyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDVkLCAweDA1LCAweDkwLCAweDAwLCAweDAwLAorCTB4YzMsIDB4OTMsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MmQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwgMHgyZSwgMHgwMCwgMHgyZiwgMHhmMywgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAxLCAweDAwLCAweDYzLCAweGYzLCAweDk2LCAweGM4LCAweDAxLCAweDAwLCAweGNiLCAweDkzLCAweDlmLCAweDQxLAorCTB4ODUsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YTUsIDB4ODUsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgyZCwgMHgwMCwgMHhhMCwgMHg0MiwgMHhlNiwgMHhiMSwgMHgwMSwgMHgwMCwgMHg1ZSwgMHgwMSwgMHgyZCwgMHgwMCwKKwkweDgwLCAweGIwLCAweDAxLCAweDAwLCAweGQwLCAweDkzLCAweDUyLCAweDQzLCAweDgxLCAweDYwLCAweDAwLCAweDAwLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4ZjIsIDB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4ZDEsIDB4OTMsIDB4MDAsIDB4NDEsCisJMHg4MCwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg4MSwgMHg5MCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVlLCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4OTUsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHhkMiwgMHg5MywgMHg5ZSwgMHhiYiwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhkNywgMHg5MywgMHhhMiwgMHg0MCwKKwkweDFmLCAweDdjLCAweDAwLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NDEsIDB4OTUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MTUsCisJMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgyYiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDI0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZjLAorCTB4MzgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmUsIDB4M2MsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZSwgMHgzYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhlYywgMHg5MywgMHg5YywgMHgxNywKKwkweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGUxLCAweDkzLCAweGEyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4NGMsIDB4MWYsIDB4OTAsIDB4MDEsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MWUsCisJMHg5OCwgMHhmNCwgMHgwMSwgMHgwMCwgMHhlMCwgMHg5MywgMHhhMiwgMHg0OCwgMHg5OSwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDE1LCAweDQyLCAweGIxLCAweDAxLCAweDAwLCAweGUwLCAweDkzLCAweGEyLCAweDhhLAorCTB4ZjEsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4Y2MsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgzZSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNCwKKwkweDI4LCAweGNjLCAweDAxLCAweDAwLCAweGNjLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLAorCTB4ZWIsIDB4OTMsIDB4MjAsIDB4ZjAsIDB4M2UsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHgxZiwgMHg5MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHgyYiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGJmLCAweDAwLCAweDJkLCAweDA1LCAweDQ4LCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGYzLAorCTB4M2EsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NGIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwNywgMHgwMCwgMHgyYSwgMHgwYywgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNCwKKwkweGU2LCAweGIxLCAweDAxLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MWMsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHgyNiwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwYywgMHgwMCwgMHgyZiwgMHhmMiwgMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA2LCAweDE0LCAweGVjLCAweDAwLCAweDAwLCAweGY4LCAweDkzLCAweDIyLCAweDQ1LAorCTB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTMsIDB4MDYsIDB4MmEsIDB4ZWMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDk2LCAweGIwLCAweDAxLCAweDAwLCAweDBjLCAweDAwLCAweDJkLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmEsIDB4NGMsIDB4ZTEsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwYSwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDE4LCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0NywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAyLCAweDk0LCAweGE4LCAweDVjLCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ODAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwKKwkweDQwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDBjLCAweDk0LCAweDYyLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MjAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MGQsIDB4OTQsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDBmLCAweDk0LCAweGE4LCAweDAwLCAweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHhmMCwgMHhjZCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMywKKwkweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweGM5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4NTAsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDE5LCAweDk0LCAweDYyLCAweDQyLCAweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDEwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MWEsIDB4OTQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgxYywgMHg5NCwgMHhhOCwgMHgwMCwKKwkweGUwLCAweDMxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYyLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLAorCTB4MzAsIDB4ODAsIDB4MDAsIDB4NGEsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHhhOCwgMHgzZCwgMHg0NiwgMHgwZCwgMHhlMCwgMHgwMSwgMHgwMCwKKwkweGZmLCAweDdmLCAweDAwLCAweGExLCAweGYwLCAweDg5LCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDA5LAorCTB4OTYsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsIDB4OTcsIDB4ZTAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHhhOCwgMHg5NywgMHhjMCwgMHgwMSwgMHgwMCwgMHgyNiwgMHg5NCwgMHg2MywgMHg0MiwKKwkweDYxLCAweDMxLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGM5LCAweDAxLCAweDAwLAorCTB4MjcsIDB4OTQsIDB4YTgsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHg5OSwgMHgzZiwgMHg0MiwgMHg5NywgMHhmMCwgMHgwMSwgMHgwMCwKKwkweDJiLCAweDk0LCAweDY1LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDMzLCAweDk0LCAweDIyLCAweGYzLAorCTB4NzQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4M2YsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4OTQsIDB4ODgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhlNywgMHg4NSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHg1NSwKKwkweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweDYyLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4OTQsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmNSwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDM2LCAweGIwLCAweDAxLCAweDAwLCAweDQzLCAweDk0LCAweDgyLCAweDQxLAorCTB4MjMsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4OTQsIDB4YTIsIDB4NDQsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHhhNywgMHg5MSwgMHgwMCwgMHgwMSwgMHg4YywgMHgzMCwgMHgwMSwgMHgwMCwgMHgyMCwgMHg4MCwgMHgwMCwgMHgxMCwKKwkweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDNlLCAweDk0LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHgzYiwgMHg5NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4MjMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzIsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg0MywgMHg5NCwgMHgyMiwgMHg0MSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwgMHhhZiwgMHg5MiwgMHgwMCwgMHg0MywKKwkweDIzLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDIzLCAweGIwLCAweDAxLCAweDAwLAorCTB4NDUsIDB4OTQsIDB4YTMsIDB4MTUsIDB4MGMsIDB4NmMsIDB4MDAsIDB4MDAsIDB4NDYsIDB4OTQsIDB4MDAsIDB4MDYsCisJMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNSwgMHgwNCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDQ4LCAweDk0LCAweDIwLCAweDAyLCAweDFhLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBkLAorCTB4MDQsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDcsIDB4OTUsIDB4MDAsIDB4MDUsIDB4NDgsIDB4MzEsIDB4MDEsIDB4MDAsCisJMHg3MiwgMHg5NCwgMHgyMiwgMHgwMiwgMHgxNCwgMHg1MCwgMHgwMCwgMHgwMCwgMHg0YywgMHg5NCwgMHhhMiwgMHgwMiwKKwkweDJhLCAweDUwLCAweDAwLCAweDAwLCAweDcyLCAweDk0LCAweGEyLCAweDQ1LCAweDFmLCAweDdjLCAweDAwLCAweDAwLAorCTB4NGUsIDB4OTQsIDB4MjIsIDB4MDIsIDB4MGMsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4OTQsIDB4MDAsIDB4MDIsCisJMHgxNiwgMHhjMCwgMHgwMCwgMHgwMCwgMHg1NiwgMHg5NCwgMHgyMiwgMHg1YywgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDMwLCAweDgwLCAweDAwLCAweDEwLCAweDQyLCAweGM5LCAweDAxLCAweDAwLCAweDU2LCAweDk0LCAweDIyLCAweDQwLAorCTB4ZTMsIDB4NmQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDcsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg1MiwgMHg5NCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZjEsIDB4OTMsIDB4MDAsIDB4NWMsCisJMHgxZiwgMHgwMCwgMHgwMSwgMHgwMCwgMHg3MiwgMHg5NCwgMHgyMiwgMHgxNSwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDMzLCAweGMwLCAweDAxLCAweDAwLCAweDcxLCAweDk0LCAweGEyLCAweDAyLAorCTB4MWEsIDB4NTAsIDB4MDAsIDB4MDAsIDB4NjMsIDB4OTQsIDB4MjIsIDB4NDYsIDB4MWYsIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg3MCwgMHg4MCwgMHgwMCwgMHgwMywgMHg0MiwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwKKwkweDFmLCAweDgwLCAweDAxLCAweDAwLCAweDYzLCAweDk0LCAweDIyLCAweDQwLCAweGUzLCAweDZkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsCisJMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwgMHg1ZiwgMHg5NCwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGFmLCAweDgyLCAweDAwLCAweDg4LCAweDFjLCAweGIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA1LAorCTB4NDgsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDMsIDB4NDIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgxMCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgyZiwgMHgwMCwgMHgyZiwgMHg1YywKKwkweDExLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ3LCAweGU3LCAweDkxLCAweDAxLCAweDAwLAorCTB4ZjAsIDB4MDcsIDB4MDAsIDB4NDAsIDB4MWIsIDB4OTgsIDB4MDEsIDB4MDAsIDB4MzUsIDB4OTQsIDB4MjAsIDB4MTUsCisJMHgxYSwgMHg2YywgMHgwMCwgMHgwMCwgMHg3MCwgMHgwMCwgMHgwMCwgMHgwMywgMHg0OCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDIyLCAweDUwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MDcsIDB4MDAsIDB4MDgsIDB4ZTAsIDB4OGQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHhhNCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDZlLCAweDk0LCAweGE4LCAweDQ2LCAweDFmLCAweDEwLCAweDAwLCAweDAwLAorCTB4MzUsIDB4OTQsIDB4MDAsIDB4MDUsIDB4NDgsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MzUsIDB4OTQsIDB4MDAsIDB4MDIsCisJMHgxMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHg3NCwgMHg5NCwgMHhhMiwgMHg0NCwgMHgxZiwgMHg3YywgMHgwMCwgMHgwMCwKKwkweGE3LCAweDkxLCAweDAwLCAweDAxLCAweDhjLCAweDMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFiLAorCTB4MTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwOCwKKwkweGYwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZTAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDVjLCAweDFmLCAweDkwLCAweDAwLCAweDAwLCAweDdiLCAweDk0LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4YTIsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHg0MCwgMHgyNywgMHhlYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwKKwkweDAwLCAweGIwLCAweDAxLCAweDAwLCAweDk5LCAweDkyLCAweDAwLCAweDQxLCAweGEzLCAweDQxLCAweDAxLCAweDAwLAorCTB4N2YsIDB4OTQsIDB4MDAsIDB4NDEsIDB4MjcsIDB4ZDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg4MCwgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDQwLAorCTB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg4NiwgMHg5NCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhkOCwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDJiLCAweDMwLCAweDAxLCAweDAwLCAweGFjLCAweDAwLCAweDJkLCAweDA2LCAweDE2LCAweGMwLCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDAsIDB4MmQsIDB4ZjAsIDB4MTYsIDB4YzQsIDB4MDEsIDB4MDAsIDB4OGUsIDB4OTQsIDB4YTAsIDB4ZjAsCisJMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweDBlLCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDZjLCAweGYwLAorCTB4MzAsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YWMsIDB4MDAsIDB4MmQsIDB4NDAsIDB4ODcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg2YywgMHhmMCwgMHgyOCwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5NywgMHg5NCwgMHgyMiwgMHg0YSwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDQzLCAweDg2LCAweGM4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MzAsIDB4MDAsIDB4MGIsIDB4MTYsIDB4YzgsIDB4MDEsIDB4MDAsIDB4OTcsIDB4OTQsIDB4YTQsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGI4LCAweDk0LCAweDIyLCAweDA2LCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweGE0LCAweDk0LCAweGEyLCAweDA2LAorCTB4MTQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YTEsIDB4OTQsIDB4MjIsIDB4NDgsIDB4MTksIDB4N2MsIDB4MDAsIDB4MDAsCisJMHg5YywgMHg5NCwgMHhhMCwgMHg0MSwgMHgxNywgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDMxLCAweGMwLCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDAsIDB4MjAsIDB4MTgsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MDAsIDB4MmQsIDB4NDgsCisJMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyMCwgMHg0NSwgMHhlNywgMHg5MSwgMHgwMSwgMHgwMCwKKwkweGE0LCAweDk0LCAweDAwLCAweDQwLCAweDg3LCAweDkwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDQzLAorCTB4ODYsIDB4OTgsIDB4MDEsIDB4MDAsIDB4YTQsIDB4OTQsIDB4YTAsIDB4NDgsIDB4MTcsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDQzLCAweDk5LCAweDAxLCAweDAwLCAweDEwLCAweDUwLCAweDAwLCAweDQzLCAweGZjLCAweGM5LCAweDAxLCAweDAwLAorCTB4MGYsIDB4OTUsIDB4MDAsIDB4MzAsIDB4ODEsIDB4MzAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhZiwgMHg5NCwgMHgyMiwgMHg0YSwgMHgxOSwgMHg3YywgMHgwMCwgMHgwMCwKKwkweDA4LCAweDAwLCAweDAwLCAweGEyLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweGNjLCAweDAwLCAweDJkLCAweGFiLAorCTB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWIsIDB4MTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHhhZSwgMHg5NCwgMHhhMCwgMHhmMCwgMHgxNiwgMHg0NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweGIzLCAweDk0LCAweDY0LCAweGYwLCAweDgyLCAweGIwLCAweDAwLCAweDAwLAorCTB4YTQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4YjMsIDB4OTQsIDB4YTIsIDB4ZjIsCisJMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDhjLCAweDAwLCAweDIwLCAweDE4LCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDYsIDB4MzAsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4NiwgMHgwYywgMHg4MCwgMHhiMiwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMCwgMHgyZCwgMHg0NiwKKwkweDE5LCAweDkwLCAweDAxLCAweDAwLCAweGEwLCAweDAwLCAweGEwLCAweGYyLCAweGU0LCAweGIxLCAweDAxLCAweDAwLAorCTB4YjAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTAsIDB4NTAsIDB4MDAsIDB4NDMsCisJMHhmYywgMHhjOSwgMHgwMSwgMHgwMCwgMHgwZiwgMHg5NSwgMHgwMCwgMHgzMCwgMHg4MSwgMHgzMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDRhLCAweDE5LCAweGZjLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweGEyLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDAsIDB4MmQsIDB4YWIsIDB4ZjksIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHhhYiwgMHgxNywgMHhjMCwgMHgwMSwgMHgwMCwgMHhjMSwgMHg5NCwgMHhhMCwgMHhmMCwKKwkweDE2LCAweDQ0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDE3LCAweGMwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4ZTQsIDB4ZjAsIDB4ODIsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAzLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHgxYiwgMHhlMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5NCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDAwLCAweGYwLCAweDAwLCAweDBjLCAweDdlLCAweDg5LCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4NGMsIDB4OTUsIDB4NjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NGEsCisJMHgxOCwgMHg5NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxMCwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDA0LCAweDAwLCAweDIyLCAweDAxLCAweGYwLCAweDMxLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ZjAsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTYsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwKKwkweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDE1LCAweGUwLCAweGIxLCAweDAwLCAweDAwLAorCTB4ZDEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDVmLAorCTB4MTcsIDB4OTAsIDB4MDEsIDB4MDAsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg3YSwgMHgwMSwgMHgyZSwgMHhmZSwgMHg5MiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgwMCwgMHgyZCwgMHhmNiwKKwkweDE2LCAweGIwLCAweDAxLCAweDAwLCAweGRlLCAweDk0LCAweDIyLCAweDQzLCAweGU3LCAweDdkLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NDUsIDB4YzEsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4YTYsCisJMHgyYSwgMHhiMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwMCwgMHg2ZSwgMHgwNiwgMHg4MiwgMHhjOCwgMHgwMSwgMHgwMCwKKwkweGUyLCAweDk0LCAweDIyLCAweDRhLCAweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLAorCTB4NDUsIDB4ZDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmUsIDB4NGMsIDB4ODMsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHhlMywgMHg5NCwgMHg0MywgMHgzMCwKKwkweDNkLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDllLCAweDgzLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MWIsIDB4NDEsIDB4M2QsIDB4YzMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsCisJMHg5MiwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwKKwkweDEwLCAweDAwLCAweDAwLCAweDQ5LCAweDk4LCAweGY0LCAweDAxLCAweDAwLCAweGVjLCAweDk0LCAweDI2LCAweDMwLAorCTB4OTMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4OTQsIDB4OTAsIDB4NGMsIDB4OTIsIDB4NDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHg5MywgMHhjMCwgMHgwMSwgMHgwMCwgMHhmZiwgMHhmZiwgMHg4MCwgMHg0OSwKKwkweGVjLCAweGE5LCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDEwLCAweDQ0LCAweGM5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MjIsIDB4MDEsIDB4ZjAsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDEwLCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDE1LAorCTB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4ZjEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhmZSwgMHg5NCwgMHgyMiwgMHg1ZiwgMHg4MSwgMHg3YywgMHgwMCwgMHgwMCwgMHhmZCwgMHg5NCwgMHhhMiwgMHg0MCwKKwkweDE5LCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDE5LCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsCisJMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg5NywgMHg5NCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDRiLCAweDYyLCAweGIxLCAweDAxLCAweDAwLCAweGZkLCAweDk0LCAweDI4LCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDAsIDB4MDAsIDB4ZmEsIDB4OTQsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgyMSwgMHg4MSwgMHg4NCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5NSwgMHhhMiwgMHg1ZiwKKwkweDgxLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEyLCAweDQzLCAweDE5LCAweDdjLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg5NiwgMHhlNCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk2LCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRiLAorCTB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgxOSwKKwkweDQ0LCAweGM5LCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDIyLCAweDAyLCAweGYwLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ZjAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTMsCisJMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MywgMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweDE5LCAweDYyLCAweGRkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDA4LAorCTB4ZTAsIDB4YjEsIDB4MDAsIDB4MDAsIDB4MGMsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg3YywgMHgwMCwgMHgyZCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDk4LCAweGY0LCAweDAxLCAweDAwLCAweDE1LCAweDk1LCAweDIwLCAweDRjLCAweDg0LCAweDZjLCAweDAwLCAweDAwLAorCTB4ODgsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsIDB4MTUsIDB4OTUsIDB4MjAsIDB4ZjIsCisJMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDAwLCAweDJkLCAweDE0LCAweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYwLAorCTB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YTMsIDB4MDAsIDB4MmQsIDB4MTQsIDB4OTgsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgxYSwgMHg5NSwgMHgyMCwgMHg0YywgMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywKKwkweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweDgwLCAweGUwLCAweDAxLCAweDAwLAorCTB4MWQsIDB4OTUsIDB4MjMsIDB4NDAsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgwMCwgMHgyMCwgMHgxNCwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDk4LCAweDAwLCAweDI1LCAweDQyLCAweDgwLCAweGIwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDZlLCAweGYzLAorCTB4ODAsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4NDIsIDB4ODIsIDB4YzAsIDB4MDAsIDB4MDAsCisJMHgyMywgMHg5NSwgMHhhMCwgMHg0MCwgMHgxNiwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwKKwkweDE3LCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDlmLCAweGYwLCAweDgyLCAweGVjLCAweDAwLCAweDAwLAorCTB4OTgsIDB4MDAsIDB4YTAsIDB4NDEsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4MTAsCisJMHg0OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhhOCwgMHgwMSwgMHgwMCwgMHg0MCwgMHhmMSwgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDA1LCAweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDA3LAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4YTcsIDB4OTcsIDB4YzAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDJhLCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4YTgsIDB4MDAsIDB4MmQsIDB4MWMsIDB4OGEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWYsIDB4ZjAsCisJMHg4YSwgMHhkMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHg0MCwgMHg4YiwgMHhlYywgMHgwMCwgMHgwMCwKKwkweDhhLCAweDAwLCAweDIwLCAweDQwLCAweGU3LCAweGIxLCAweDAxLCAweDAwLCAweGI0LCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4YTQsIDB4MDAsIDB4MmQsIDB4NDUsIDB4ZTAsIDB4ZDEsIDB4MDEsIDB4MDAsCisJMHgzNywgMHg5NSwgMHg5YywgMHgxNywgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMCwgMHgyZiwgMHhhYiwKKwkweDgzLCAweGIwLCAweDAxLCAweDAwLCAweDg4LCAweDk1LCAweDAwLCAweDE0LCAweDgyLCAweDUwLCAweDAxLCAweDAwLAorCTB4M2MsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4M2MsIDB4OTUsIDB4MjIsIDB4ZjIsCisJMHg4MiwgMHgzMCwgMHgwMCwgMHgwMCwgMHg4YywgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDNjLCAweDk1LCAweDlmLCAweDFjLCAweGUwLCAweDZkLCAweDAwLCAweDAwLCAweGJlLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDcsIDB4OTksIDB4MDEsIDB4MDAsIDB4ODgsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsCisJMHhhOCwgMHgwMCwgMHgyMCwgMHgxYywgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMCwgMHgyZCwgMHgzMCwKKwkweDgxLCAweGIwLCAweDAxLCAweDAwLCAweDg4LCAweDAwLCAweDJkLCAweGYwLCAweDg0LCAweGIwLCAweDAxLCAweDAwLAorCTB4OTQsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4ODYsIDB4YjAsIDB4MDEsIDB4MDAsIDB4NGYsIDB4OTUsIDB4MjMsIDB4ZjAsCisJMHg4NCwgMHg2YywgMHgwMCwgMHgwMCwgMHg0NCwgMHg5NSwgMHgyMywgMHg5MiwgMHg4NywgMHg2YywgMHgwMCwgMHgwMCwKKwkweGM5LCAweDA0LCAweDAwLCAweGE2LCAweDk0LCAweGIwLCAweDAxLCAweDAwLCAweDQ2LCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4YTYsIDB4OTQsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHg2MCwgMHg4OSwgMHgwMCwgMHg0YSwgMHg5NCwgMHg5OCwgMHgwMSwgMHgwMCwgMHg0NiwgMHg5NSwgMHg2OCwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLCAweGIwLCAweGIxLCAweDAxLCAweDAwLAorCTB4YmYsIDB4MDAsIDB4MmQsIDB4NDIsIDB4YjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MmQsIDB4ZjMsCisJMHg4MCwgMHhlMCwgMHgwMSwgMHgwMCwgMHg0YSwgMHg5NSwgMHhkNCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDc4LCAweGRhLCAweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDU0LCAweDk1LCAweDIzLCAweDQwLAorCTB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDAsIDB4MjAsIDB4OWQsIDB4ZTEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg1NCwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwgMHhiZiwgMHgwMCwgMHgyZCwgMHg0MywKKwkweDg0LCAweGMwLCAweDAxLCAweDAwLCAweDkwLCAweDAwLCAweDJkLCAweGYzLCAweDgwLCAweGUwLCAweDAxLCAweDAwLAorCTB4NTQsIDB4OTUsIDB4MjMsIDB4NDAsIDB4ODQsIDB4NmMsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDAsIDB4MjAsIDB4OWQsCisJMHhlMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDU4LCAweDk1LCAweGEyLCAweGYwLCAweDM4LCAweDZjLCAweDAwLCAweDAwLCAweDljLCAweDAwLCAweDIwLCAweDQyLAorCTB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4MTMsIDB4OTQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHg0NiwgMHgxOSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg5YywgMHgwMCwgMHgyMCwgMHg0MiwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDM3LCAweDAwLCAweDAwLCAweDQwLCAweDQzLCAweDk5LCAweDAxLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4ODAsIDB4ZjQsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4ZjMsCisJMHg4MiwgMHg4OCwgMHgwMSwgMHgwMCwgMHg1ZSwgMHg5NSwgMHgyMywgMHg0MSwgMHg4MCwgMHg2YywgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDEzLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDBjLAorCTB4ODAsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHhhMCwgMHgwMCwgMHhhMCwgMHhmMiwgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHg0MSwKKwkweDI0LCAweGVjLCAweDAwLCAweDAwLCAweDY4LCAweDk1LCAweGE2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4OWYsIDB4NDIsIDB4MzgsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4NjgsIDB4OTUsIDB4YTYsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHhiNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHg5OSwgMHgwMSwgMHgwMCwKKwkweDZhLCAweDk1LCAweGEzLCAweGYwLCAweDNhLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDMsIDB4OTksIDB4MDEsIDB4MDAsCisJMHg2ZSwgMHg5NSwgMHgyMiwgMHhmMCwgMHgzYSwgMHg2YywgMHgwMCwgMHgwMCwgMHhiNCwgMHgwMCwgMHgyMCwgMHgxZCwKKwkweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDgwLCAweDAwLCAweDJkLCAweDVmLCAweDEzLCAweDk0LCAweDAxLCAweDAwLAorCTB4NmUsIDB4OTUsIDB4MjMsIDB4ZjAsIDB4M2EsIDB4NmMsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MjAsIDB4MWQsCisJMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhjMCwgMHgwMCwgMHgyMCwgMHgxMiwgMHhlMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGM0LCAweDAwLCAweGEwLCAweDFjLCAweGUwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDgwLCAweDAwLCAweDAzLAorCTB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NywgMHg5OCwgMHgwMSwgMHgwMCwgMHg3NywgMHg5NSwgMHg5ZiwgMHg0MSwKKwkweDI0LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDhjLCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4OGMsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4NzgsIDB4OTUsIDB4MDAsIDB4NDEsCisJMHgyNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4ZCwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGM2LCAweDk1LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LAorCTB4NjEsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg3YSwgMHg5NSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDhjLCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDgsIDB4ODAsIDB4MzIsIDB4MDEsIDB4MDAsIDB4ODEsIDB4OTUsIDB4YTIsIDB4NDAsCisJMHg5NSwgMHg2YywgMHgwMCwgMHgwMCwgMHg5OSwgMHg5MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDgyLCAweDAwLCAweGE2LCAweDA0LCAweGIwLCAweDAxLCAweDAwLCAweGEwLCAweDk4LCAweDJmLCAweDQwLAorCTB4MTEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDUsIDB4MDAsIDB4NDEsIDB4ODksIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg5ZiwgMHhmOCwgMHgzZSwgMHhlYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZiwgMHgxMiwKKwkweGUwLCAweGVkLCAweDAwLCAweDAwLCAweGM4LCAweDAwLCAweDIwLCAweGFiLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4Y2MsIDB4MDAsIDB4YTAsIDB4MWYsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4OGEsIDB4OTUsIDB4YTMsIDB4NWYsCisJMHhlNywgMHg2ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHhlNywgMHhjMSwgMHgwMSwgMHgwMCwKKwkweGE2LCAweDAwLCAweDAwLCAweDQwLCAweDQ3LCAweDk5LCAweDAxLCAweDAwLCAweDllLCAweDk1LCAweDIyLCAweGYyLAorCTB4ODYsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4NDMsIDB4ODQsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHg0MSwgMHg4MCwgMHhjYywgMHgwMSwgMHgwMCwgMHhiOCwgMHgwMCwgMHgyZCwgMHg0MiwKKwkweDgwLCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYyLCAweDQwLCAweDg2LCAweGMwLCAweDAxLCAweDAwLAorCTB4OTIsIDB4OTUsIDB4MWYsIDB4NDMsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsIDB4OTMsIDB4OTUsIDB4YTIsIDB4NDAsCisJMHg4NywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MiwgMHg0MSwgMHg4NywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDk3LCAweDk1LCAweDlmLCAweDQwLCAweDgwLCAweDMyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4ODUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODQsIDB4ZDAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg4MCwgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDg4LCAweGIwLCAweDAxLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDQ0LCAweDg0LCAweGY0LCAweDAxLCAweDAwLAorCTB4YjgsIDB4MDAsIDB4MmUsIDB4NDIsIDB4ODAsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjIsIDB4NDAsCisJMHg4OCwgMHhjMCwgMHgwMSwgMHgwMCwgMHg5ZCwgMHg5NSwgMHgxZiwgMHg0NCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweGExLCAweDk1LCAweGEyLCAweDQwLCAweDg5LCAweDZjLCAweDAwLCAweDAwLCAweGExLCAweDk1LCAweDYyLCAweDQxLAorCTB4ODksIDB4YjAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4NjIsIDB4NDEsIDB4ODYsIDB4ZTQsIDB4MDEsIDB4MDAsCisJMHhiOCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0NSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHg2MiwgMHg0MSwKKwkweDg4LCAweGU0LCAweDAxLCAweDAwLCAweGE0LCAweDAwLCAweDIwLCAweDQwLCAweGU1LCAweGIxLCAweDAxLCAweDAwLAorCTB4YTIsIDB4MDAsIDB4MjAsIDB4NDAsIDB4ZTcsIDB4YjEsIDB4MDEsIDB4MDAsIDB4YmMsIDB4MDAsIDB4MmUsIDB4NDMsCisJMHg4NywgMHhmMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg4NiwgMHhjMCwgMHgwMSwgMHgwMCwKKwkweGE3LCAweDk1LCAweDIwLCAweDQzLCAweDg3LCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQzLAorCTB4ZTUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDEsIDB4MDAsIDB4NDMsIDB4ODAsIDB4Y2UsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHg0MywgMHhlNCwgMHgzMSwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMSwgMHhlMiwgMHg0MCwKKwkweDg3LCAweDk4LCAweDAxLCAweDAwLCAweDg4LCAweDAwLCAweDJkLCAweDQ0LCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4OTAsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4MmUsIDB4YjAsIDB4MDEsIDB4MDAsIDB4OWMsIDB4MDAsIDB4MmQsIDB4ZjAsCisJMHg4NiwgMHhiMCwgMHgwMSwgMHgwMCwgMHg5MCwgMHgwMCwgMHgyZCwgMHhmMCwgMHg4MiwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDAwLCAweDJkLCAweGYwLCAweDk4LCAweGIwLCAweDAxLCAweDAwLCAweGI0LCAweDk1LCAweGEyLCAweDEyLAorCTB4OTgsIDB4NmMsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDAsIDB4MmQsIDB4ZjIsIDB4OTgsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHhiNCwgMHg5NSwgMHhhMCwgMHhmMiwgMHg5OCwgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywKKwkweDgyLCAweGIwLCAweDAxLCAweDAwLCAweDljLCAweDAwLCAweDIwLCAweDQxLCAweGUwLCAweGIxLCAweDAxLCAweDAwLAorCTB4YjQsIDB4MDAsIDB4MmQsIDB4MTIsIDB4ODYsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4YjcsIDB4OTUsIDB4YTMsIDB4NDEsCisJMHhlMCwgMHg2ZCwgMHgwMCwgMHgwMCwgMHhiOCwgMHg5NSwgMHgwMCwgMHhmMCwgMHg4NCwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDg0LCAweGIwLCAweDAxLCAweDAwLCAweDgwLCAweDAwLCAweDJkLCAweDQzLAorCTB4ODQsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4YmIsIDB4OTUsIDB4OWYsIDB4NDIsIDB4ODAsIDB4MzIsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4NSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhiZCwgMHg5NSwgMHhhMywgMHg0MiwKKwkweDE0LCAweDZjLCAweDAwLCAweDAwLCAweGJlLCAweDk1LCAweDAwLCAweDBhLCAweDBjLCAweGIwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4MGMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4YzAsIDB4OTUsIDB4YTAsIDB4MTcsCisJMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxNywgMHgwYywgMHhiMCwgMHgwMSwgMHgwMCwKKwkweGM1LCAweDk1LCAweDIyLCAweDQwLCAweDBkLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDBhLAorCTB4MGMsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ODIsIDB4ZjQsIDB4MDEsIDB4MDAsCisJMHhjNSwgMHg5NSwgMHhhMCwgMHg0MSwgMHgwYywgMHg2YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMiwgMHhmMCwKKwkweDgwLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIwLCAweDAxLCAweDAwLAorCTB4OWQsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4ODAsIDB4MDAsIDB4MDMsCisJMHg0NCwgMHhjOSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwgMHhmMCwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYxLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDQxLAorCTB4ODcsIDB4OTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MTAsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwKKwkweGYwLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LCAweGYwLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4ZTAsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsCisJMHg2MSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg2MiwgMHhkZCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweGE4LCAweDVkLCAweDA1LCAweDkwLCAweDAwLCAweDAwLCAweGQxLCAweDk1LCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmUsIDB4NGIsIDB4MTksIDB4OTAsIDB4MDEsIDB4MDAsCisJMHgwNSwgMHgwMCwgMHgyYSwgMHgwYywgMHhlNCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNCwKKwkweGU2LCAweGIxLCAweDAxLCAweDAwLCAweGQ3LCAweDk1LCAweDQ1LCAweDQ4LCAweDYxLCAweDMxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MTAsIDB4MDAsIDB4MDgsIDB4NjIsIDB4ZGQsIDB4MDEsIDB4MDAsIDB4ZGMsIDB4OTUsIDB4MjgsIDB4NDAsCisJMHg4NywgMHgzMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHg5NSwgMHgyMiwgMHg0OCwgMHg3NywgMHg3ZCwgMHgwMCwgMHgwMCwKKwkweDdlLCAweDk0LCAweDFkLCAweDQ2LCAweDg3LCAweGIwLCAweDAwLCAweDAwLCAweGRmLCAweDk1LCAweDIyLCAweDVmLAorCTB4MTEsIDB4N2MsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MjIsIDB4MTUsIDB4NjIsIDB4MzEsIDB4MDAsIDB4MDAsCisJMHhkZCwgMHg5NSwgMHhhOCwgMHg0MCwgMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5ZCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MTQsIDB4MmYsIDB4NGMsIDB4ODMsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhlMiwgMHg5NSwgMHhhMiwgMHg0MSwgMHg4MywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NDksIDB4YjEsIDB4MDEsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTEsIDB4OTksIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg5MywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDFmLCAweGIwLCAweDAxLCAweDAwLCAweDM1LCAweDk2LCAweDAwLCAweDQ5LCAweDk2LCAweDMwLCAweDAxLCAweDAwLAorCTB4MDcsIDB4MDAsIDB4MDAsIDB4NDksIDB4MDYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzksIDB4MDAsIDB4MDMsCisJMHgwNiwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDIwLCAweDAwLCAweDAwLCAweGQwLCAweGEwLCAweGM5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLAorCTB4OTMsIDB4YzAsIDB4MDEsIDB4MDAsIDB4ZTksIDB4OTUsIDB4YTAsIDB4NTQsIDB4OTMsIDB4NmMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgwNSwgMHg5NywgMHhiMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHg0MCwKKwkweDQ5LCAweDk5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGUxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDIsIDB4MDAsIDB4YTIsIDB4NDQsIDB4YzksIDB4MDEsIDB4MDAsIDB4ZjIsIDB4OTUsIDB4YTIsIDB4NDEsCisJMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0OSwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDNiLCAweDk2LCAweDAwLCAweDQwLCAweDQ5LCAweDMxLCAweDAxLCAweDAwLCAweGM4LCAweDkyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4MzIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjUsIDB4MmUsIDB4MDgsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmOSwgMHg5NSwgMHhhMiwgMHg0MSwKKwkweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTcsIDB4MmUsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHhmZCwgMHg5NSwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQ5LCAweGIxLCAweDAxLCAweDAwLCAweDQwLCAweDE4LCAweDJlLCAweDA1LAorCTB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHgwMSwgMHg5NiwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHg1NywgMHg5NSwgMHgyMCwgMHg0MCwKKwkweGU3LCAweGIxLCAweDAxLCAweDAwLCAweDMwLCAweDk0LCAweDAwLCAweDQwLCAweDQ1LCAweDk5LCAweDAxLCAweDAwLAorCTB4NjQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZTUsIDB4OTksIDB4MDEsIDB4MDAsIDB4NTYsIDB4OTUsIDB4MjAsIDB4NDAsCisJMHhlNywgMHhiMSwgMHgwMSwgMHgwMCwgMHhiOCwgMHg5NCwgMHgyMCwgMHg0MSwgMHhlNSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweGJhLCAweDk0LCAweDIwLCAweDQxLCAweGU1LCAweGIxLCAweDAxLCAweDAwLCAweDk4LCAweDk0LCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4OTcsIDB4OTgsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwYiwgMHg5NiwgMHhhMiwgMHg0MSwKKwkweDk3LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDk3LCAweGIwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NmYsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsCisJMHg2OCwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwZiwgMHg5NiwgMHg4NSwgMHg0MSwgMHg5NywgMHg0MCwgMHgwMCwgMHgwMCwKKwkweDgwLCAweDA0LCAweDAwLCAweDQwLCAweDgxLCAweDMyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MzksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MzcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgzNSwgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDMzLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDQxLCAweGIzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4M2YsIDB4YjMsIDB4MDEsIDB4MDAsIDB4ZWUsIDB4MDUsIDB4MDAsIDB4NDAsCisJMHgyNSwgMHg5YiwgMHgwMSwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0YiwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDJmLCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4MmQsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NDcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg0MywgMHhiMywgMHgwMSwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDJiLCAweDliLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweGVmLCAweDkzLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4ZjEsIDB4OTMsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4YTUsCisJMHgzYywgMHg4YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg1YiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDQ1LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLAorCTB4NTksIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4NTcsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgyNywgMHhiMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDUzLCAweGIzLCAweDAxLCAweDAwLCAweDJiLCAweDk2LCAweGEyLCAweDUwLCAweGZkLCAweDdmLCAweDAwLCAweDAwLAorCTB4MmIsIDB4OTYsIDB4YTIsIDB4NTEsIDB4ZmQsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MmMsIDB4OTYsIDB4MDAsIDB4NDAsCisJMHgxZCwgMHhiMywgMHgwMCwgMHgwMCwgMHg1MCwgMHg0NiwgMHgwMCwgMHg0MCwgMHgxZCwgMHg5YiwgMHgwMSwgMHgwMCwKKwkweDAwLCAweGMwLCAweDAwLCAweGE2LCAweDg4LCAweGIzLCAweDAxLCAweDAwLCAweGZmLCAweDNmLCAweDAwLCAweGE2LAorCTB4M2EsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4OWQsIDB4M2IsIDB4OWIsIDB4MDEsIDB4MDAsCisJMHhiNCwgMHgwNSwgMHgwMCwgMHg0MCwgMHgyMywgMHg5YiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDRkLCAweGIzLCAweDAxLCAweDAwLCAweDA4LCAweDBhLCAweDAwLCAweGE2LCAweDE0LCAweGIzLCAweDAxLCAweDAwLAorCTB4MDEsIDB4MDEsIDB4MDAsIDB4OGEsIDB4MTUsIDB4OWIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4YTYsCisJMHg1NiwgMHhiMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1ZSwgMHg1NywgMHhiNSwgMHgwMSwgMHgwMCwKKwkweDE4LCAweDAwLCAweDAwLCAweDRiLCAweDIwLCAweGU0LCAweDAxLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDRiLAorCTB4OTYsIDB4ZTQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NDMsIDB4MDAsIDB4NGIsIDB4OTYsIDB4YzgsIDB4MDEsIDB4MDAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgyMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YiwKKwkweDIwLCAweDk0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDU3LCAweDIxLCAweDkwLCAweDAxLCAweDAwLAorCTB4MDAsIDB4OTksIDB4MmUsIDB4MGEsIDB4OTcsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHhmMSwgMHhiMSwgMHgwMSwgMHgwMCwgMHgzYywgMHg5NiwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAzLCAweDAwLCAweDQwLCAweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweGE5LCAweDAwLCAweDQwLAorCTB4NDUsIDB4OTksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjEsIDB4YjEsIDB4MDEsIDB4MDAsCisJMHg0MCwgMHg5NiwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDk3LCAweDk4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LCAweDYxLCAweGIxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NjIsIDB4YjEsIDB4MDEsIDB4MDAsIDB4NDQsIDB4OTYsIDB4YTgsIDB4NDAsCisJMHg4MSwgMHgzMiwgMHgwMCwgMHgwMCwgMHg0NCwgMHg5NiwgMHhhMiwgMHg0MSwgMHg5NywgMHg1MCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDQwLCAweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4ODgsCisJMHg5YSwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhZSwgMHg5ZiwgMHgwMCwgMHg4OCwgMHg5YSwgMHhiMCwgMHgwMCwgMHgwMCwKKwkweGFlLCAweDlmLCAweDAwLCAweDg4LCAweDlhLCAweGIwLCAweDAwLCAweDAwLCAweGFlLCAweDlmLCAweDAwLCAweDg4LAorCTB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4ODgsIDB4OWEsIDB4YjAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg5YSwgMHhiMCwgMHgwMSwgMHgwMCwgMHhhZSwgMHg5ZiwgMHg0MSwgMHg0MCwKKwkweDgxLCAweDMyLCAweDAwLCAweDAwLCAweGIyLCAweDlmLCAweDIyLCAweDQwLCAweDdiLCAweDZmLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MTksIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4YWUsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg0MSwgMHg3YiwgMHhiMywgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGE0LCAweGM0LCAweGIzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGExLAorCTB4YzYsIDB4YjMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmYsIDB4YTIsIDB4YzgsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwOCwgMHgxNCwgMHgwMCwgMHg0MCwgMHg0OSwgMHg5OSwgMHgwMSwgMHgwMCwgMHhhOCwgMHg5ZiwgMHgwMCwgMHg0ZCwKKwkweDlhLCAweGNjLCAweDAxLCAweDAwLCAweGJiLCAweDlmLCAweDI2LCAweDQwLCAweDgxLCAweDMyLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4NDksIDB4YzEsIDB4MDEsIDB4MDAsIDB4YjksIDB4OWYsIDB4YTIsIDB4NDEsCisJMHg5YiwgMHg1MCwgMHgwMCwgMHgwMCwgMHhiZiwgMHg5ZiwgMHg4MCwgMHg4MCwgMHg4MCwgMHgzMiwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDUyLCAweDQ5LCAweGZkLCAweDkzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRhLAorCTB4ZmQsIDB4OTMsIDB4MDEsIDB4MDAsIDB4YzIsIDB4OWYsIDB4MDAsIDB4NDIsIDB4Y2QsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHg0YSwgMHhmZCwgMHg5MywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwKKwkweGZkLCAweDkzLCAweDAxLCAweDAwLCAweGMyLCAweDlmLCAweDAwLCAweDQzLCAweGNiLCAweDkzLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4NTAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDEsIDB4MDAsIDB4ZDIsIDB4OWYsIDB4MDAsIDB4NDAsCisJMHgxOSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHg5YSwgMHhiMCwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGQxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweGYwLAorCTB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4NGQsIDB4ODAsIDB4YjIsIDB4MDEsIDB4MDAsCisJMHhjYSwgMHg5ZiwgMHgwMCwgMHg0MCwgMHgxOSwgMHg5OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0YywgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDQ5LCAweGQxLCAweDAxLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4OWEsIDB4YjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsCisJMHgxMCwgMHhiMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMiwgMHg0OSwgMHhiMSwgMHgwMSwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweGUzLCAweDQzLCAweGIxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LAorCTB4NDUsIDB4YjEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4N2IsIDB4YjMsIDB4MDEsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHg0OCwgMHg0ZiwgMHg0MCwgMHhiMSwgMHgwMSwgMHgwMCwgMHhkMiwgMHg5ZiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweGNiLAorCTB4ODEsIDB4YzgsIDB4MDEsIDB4MDAsIDB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ZjIsIDB4OTMsIDB4MDAsIDB4MDAsCisJMHg0MCwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDE4LCAweDA2LCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZjQsIDB4ODIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4YWYsIDB4ODIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgzOCwgMHg4MSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDM2LCAweDgxLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGI4LCAweDgwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODcsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHhhZiwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhmNSwgMHg4MiwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDk0LCAweDkyLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4ZDcsIDB4OTUsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4NWQsIDB4OTIsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHhjNiwgMHg5NSwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDMzLCAweDkzLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweGQ2LCAweDkyLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4OTIsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHg5YSwgMHg4MiwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsCisJMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwKKwkweDA0LCAweDAwLCAweDAwLCAweDQwLCAweDgxLCAweGIyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDQwLAorCTB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ODEsIDB4YjIsIDB4MDAsIDB4MDAsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwgMHg4MSwgMHhiMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg0MCwKKwkweDgxLCAweGIyLCAweDAwLCAweDAwLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvb2FzaXNyY3Z1Y29kZS5oIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvb2FzaXNyY3Z1Y29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMzUzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9vYXNpc3JjdnVjb2RlLmgKQEAgLTAsMCArMSwyMDUgQEAKKyNkZWZpbmUgT0FTSVNfUkNWVUNPREVfVkVSU19TVFJJTkcJIjEuMiIKKyNkZWZpbmUgT0FTSVNfUkNWVUNPREVfVkVSU19EQVRFICAJIjIwMDYvMDMvMjcgMTU6MTA6MjgiCisKK3N0YXRpYyB1MzIgT2FzaXNSY3ZVQ29kZUxlbiA9IDUxMjsKKworc3RhdGljIHU4IE9hc2lzUmN2VUNvZGVbMjU2MF0gPQoreworMHg0NywgMHg3NSwgMHgwMSwgMHgwMCwgMHgwNCwgMHhhMCwgMHgxMywgMHgwMSwgMHgwMCwgMHgxYywgMHhiNywgMHg1YiwgMHgwOSwKKzB4MzAsIDB4MDAsIDB4YjYsIDB4NWYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MTgsIDB4M2IsCisweDc4LCAweDNhLCAweDAwLCAweDFjLCAweGEyLCAweDc3LCAweDAxLCAweDAwLCAweDFjLCAweDA3LCAweDFkLCAweDAxLCAweDcwLAorMHgxOCwgMHhhZCwgMHg3YiwgMHhmMSwgMHhmZiwgMHgxYywgMHhiMywgMHg3YiwgMHhhOSwgMHhhYSwgMHgxZSwgMHhiNCwgMHg3YiwKKzB4MDEsIDB4MGMsIDB4MWMsIDB4YjUsIDB4N2IsIDB4MGQsIDB4MDYsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MzAsIDB4NjQsIDB4MDgsCisweDBjLCAweDMxLCAweDVhLCAweDcwLCAweDA0LCAweDBjLCAweDMxLCAweDVhLCAweDgwLCAweDA0LCAweDBjLCAweDMxLCAweDRlLAorMHg5MCwgMHgwNCwgMHgwYywgMHgzMSwgMHg0YSwgMHhhMCwgMHgwMCwgMHgwOSwgMHgyNSwgMHg1NSwgMHhjMCwgMHgwNCwgMHgwYywKKzB4MzEsIDB4NTIsIDB4YjAsIDB4MDAsIDB4ZTksIDB4MjQsIDB4NTUsIDB4YzAsIDB4MDQsIDB4Y2MsIDB4YjMsIDB4MDAsIDB4MWMsCisweDFjLCAweGViLCAweDJkLCAweDAxLCAweDAwLCAweDFjLCAweDA2LCAweDU2LCAweDMyLCAweGQ0LCAweDA4LCAweDA3LCAweDlkLAorMHgwMCwgMHgwMCwgMHgxYywgMHg3YiwgMHhiNywgMHgwMiwgMHgwMCwgMHgxMCwgMHhhMCwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwKKzB4MDYsIDB4NTYsIDB4NWUsIDB4YzAsIDB4MDQsIDB4YTAsIDB4MzAsIDB4NTQsIDB4MDMsIDB4MDAsIDB4YWMsIDB4MzAsIDB4NTUsCisweDAzLCAweDAwLCAweGNkLCAweDAzLCAweDNhLCAweDAwLCAweDFjLCAweDdiLCAweGI3LCAweDAyLCAweDAwLCAweDFjLCAweDYwLAorMHg4ZSwgMHgzMSwgMHg1NCwgMHgwOSwgMHgyOSwgMHgyNSwgMHg1NSwgMHgwMywgMHgwMCwgMHg4MCwgMHg4ZSwgMHgzMSwgMHg1NCwKKzB4MDksIDB4OGMsIDB4MzAsIDB4OTEsIDB4MDAsIDB4MDQsIDB4NDcsIDB4MWMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YTAsIDB4MGYsCisweDMxLCAweDU0LCAweDA5LCAweDAwLCAweDAwLCAweDY0LCAweDAwLCAweDA0LCAweDQ3LCAweDFjLCAweDY1LCAweGMwLCAweDA0LAorMHg0NywgMHgxYywgMHg1NSwgMHgwMywgMHgwMCwgMHg2YywgMHgzMCwgMHgwMSwgMHgwMCwgMHgxYywgMHg0ZCwgMHgzNCwgMHgwMiwKKzB4MDAsIDB4MWMsIDB4N2IsIDB4YjcsIDB4MDIsIDB4MDAsIDB4MWMsIDB4YTAsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksIDB4YzgsCisweDgzLCAweDM3LCAweDAwLCAweDFjLCAweDgwLCAweDAxLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDY0LCAweDAwLAorMHgwNCwgMHhhMCwgMHgwZiwgMHgzMCwgMHg1NCwgMHgwOSwgMHgwMCwgMHgwMCwgMHg1NCwgMHhjMywgMHgwNCwgMHg3YiwgMHhmYiwKKzB4ZjIsIDB4MDAsIDB4MWMsIDB4Y2MsIDB4MzMsIDB4MGQsIDB4MDAsIDB4MWMsIDB4YjQsIDB4N2IsIDB4ZmQsIDB4MDMsIDB4MWMsCisweDgwLCAweDBlLCAweDMwLCAweDU0LCAweDA5LCAweGUwLCAweGZiLCAweDA1LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDhjLAorMHgwMywgMHgwMCwgMHhiMywgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHgwMCwgMHgwMCwgMHhlYywgMHg3MCwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4ZWMsIDB4ODAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4OGMsIDB4OTMsIDB4MDAsIDB4NjEsIDB4NzYsIDB4OGQsIDB4YzMsCisweDA0LCAweGMwLCAweDhkLCAweDMxLCAweDU0LCAweDA5LCAweGUwLCAweDdiLCAweDAwLCAweGMwLCAweDFmLCAweGEwLCAweGZkLAorMHhjNSwgMHgwMSwgMHgwMCwgMHhjYywgMHgzMywgMHgwNSwgMHgwMCwgMHgxYywgMHhkNCwgMHgwMywgMHgwMCwgMHgzYywgMHgxYywKKzB4ZDQsIDB4ZDMsIDB4MWIsIDB4MDAsIDB4MWMsIDB4YzAsIDB4ZDMsIDB4NTIsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4NWMsCisweDEzLCAweDA0LCAweDhlLCAweDhlLCAweDMyLCAweDU0LCAweDA5LCAweDViLCAweDgwLCAweDVlLCAweDEzLCAweDA0LCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg5NCwgMHgwMSwgMHgwMCwgMHhhMCwgMHgwZiwgMHgzMSwgMHg1NCwKKzB4MDksIDB4YTAsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksIDB4YzAsIDB4MDMsIDB4ZmMsIDB4N2YsIDB4MWMsIDB4YTAsIDB4MDEsCisweGEwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDAxLCAweDAwLCAweGEwLCAweDBmLCAweDMxLCAweDU0LCAweDA5LAorMHhjMCwgMHgwMywgMHhmYywgMHgwMywgMHgxYywgMHhmNSwgMHg3NywgMHgwMSwgMHgwMCwgMHgxYywgMHgyNiwgMHg3YSwgMHhlNiwKKzB4MDUsIDB4MWMsIDB4YTAsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksIDB4YjMsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksIDB4YjUsCisweDAyLCAweDAyLCAweDAwLCAweDFjLCAweGEwLCAweDBmLCAweDMxLCAweDU0LCAweDA5LCAweDdhLCAweDdlLCAweDAyLCAweDAwLAorMHgxYywgMHhiNSwgMHgwMiwgMHgwMiwgMHgwMCwgMHgxYywgMHg1MywgMHgwZiwgMHgzMiwgMHg1NCwgMHgwOSwgMHhhZiwgMHgwMywKKzB4MDEsIDB4MDAsIDB4MWMsIDB4N2EsIDB4MGUsIDB4MzIsIDB4NTQsIDB4MDksIDB4YjUsIDB4MDIsIDB4MDIsIDB4MDAsIDB4MWMsCisweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDFjLCAweGEwLCAweDNkLCAweGFhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweGFjLAorMHgxMSwgMHgwNCwgMHhkNCwgMHhkMywgMHg1MiwgMHgwMCwgMHgxYywgMHhiNSwgMHgzZSwgMHhiMiwgMHgwMSwgMHgwMCwgMHgyMCwKKzB4ZmIsIDB4ZmQsIDB4ZmYsIDB4MWYsIDB4ODAsIDB4MmMsIDB4NmMsIDB4MDMsIDB4MDAsIDB4YjksIDB4M2EsIDB4OWUsIDB4MDEsCisweDAwLCAweDc1LCAweDNiLCAweDAyLCAweDAwLCAweDFjLCAweGE3LCAweDFjLCAweDAxLCAweDAwLCAweDEwLCAweGRiLCAweDgzLAorMHgxNiwgMHgwMCwgMHgxYywgMHhjNywgMHgxZCwgMHgyMSwgMHhjMSwgMHgwNCwgMHhiOSwgMHgzYiwgMHg4ZCwgMHhjMSwgMHgwNCwKKzB4OGIsIDB4MmMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NmIsIDB4MmMsIDB4MzUsIDB4YzEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NzgsCisweDExLCAweDAwLCAweGNiLCAweDJjLCAweDc5LCAweGMxLCAweDA0LCAweGEwLCAweDBmLCAweDMxLCAweDU0LCAweDA5LCAweGEwLAorMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHg1NCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgxYywgMHg0OSwgMHgyNSwgMHhiMSwgMHgwMSwKKzB4MDAsIDB4YWIsIDB4MmMsIDB4ODEsIDB4YzEsIDB4MDQsIDB4YTcsIDB4MWQsIDB4NTUsIDB4MDMsIDB4MDAsIDB4Y2MsIDB4MzMsCisweDA5LCAweDAwLCAweDFjLCAweGViLCAweDJkLCAweDAxLCAweDAwLCAweDFjLCAweGVhLCAweDI5LCAweDAxLCAweDAwLCAweDFjLAorMHhhMCwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHhhZSwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHgzMSwKKzB4NTQsIDB4MDksIDB4ZDQsIDB4MDcsIDB4ZmMsIDB4MDMsIDB4MWMsIDB4OTksIDB4M2EsIDB4MDIsIDB4MDAsIDB4MWMsIDB4YmIsCisweDM4LCAweDAyLCAweDAwLCAweDFjLCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweGZjLCAweDAxLAorMHgwNCwgMHhkYiwgMHgzYiwgMHg3ZSwgMHgwMCwgMHgxYywgMHhjNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywgMHgyNiwgMHg3YSwKKzB4ZmEsIDB4MDUsIDB4MWMsIDB4MjcsIDB4MWQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YjMsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksCisweDdhLCAweDBlLCAweDMyLCAweDU0LCAweDA5LCAweDUzLCAweDBmLCAweDMyLCAweDU0LCAweDA5LCAweDdhLCAweDBlLCAweDMyLAorMHg1NCwgMHgwOSwgMHg1MywgMHgwZiwgMHgzMiwgMHg1NCwgMHgwOSwgMHg3YSwgMHgwZSwgMHgzMiwgMHg1NCwgMHgwOSwgMHg1MywKKzB4MGYsIDB4MzIsIDB4NTQsIDB4MDksIDB4YTAsIDB4MGYsIDB4MzEsIDB4NTQsIDB4MDksIDB4N2EsIDB4MDYsIDB4MDIsIDB4MDAsCisweDFjLCAweDUzLCAweDBmLCAweDMyLCAweDU0LCAweDA5LCAweGFmLCAweDAzLCAweDAxLCAweDAwLCAweDFjLCAweDdhLCAweDBlLAorMHgzMiwgMHg1NCwgMHgwOSwgMHg1MywgMHgwZiwgMHgzMiwgMHg1NCwgMHgwOSwgMHg3YSwgMHgwZSwgMHgzMiwgMHg1NCwgMHgwOSwKKzB4NTMsIDB4MGYsIDB4MzIsIDB4NTQsIDB4MDksIDB4N2EsIDB4MGUsIDB4MzIsIDB4NTQsIDB4MDksIDB4NTMsIDB4MGYsIDB4MzIsCisweDU0LCAweDA5LCAweDdhLCAweDBlLCAweDMyLCAweDU0LCAweDA5LCAweDAwLCAweDNkLCAweDAyLCAweDAwLCAweDFjLCAweDAwLAorMHgwMCwgMHg1OCwgMHgxMiwgMHgwMCwgMHhjYiwgMHgyYywgMHgwMSwgMHgwMCwgMHgxYywgMHg3NSwgMHgzYiwgMHgwMiwgMHgwMCwKKzB4MWMsIDB4YTcsIDB4MWMsIDB4MDEsIDB4MDAsIDB4MTAsIDB4Y2IsIDB4MmYsIDB4MDUsIDB4MDAsIDB4MWMsIDB4NjAsIDB4MmMsCisweDAwLCAweDAwLCAweDFjLCAweGM3LCAweDFjLCAweGM5LCAweDAyLCAweDAwLCAweGEwLCAweDBmLCAweDMxLCAweDU0LCAweDA5LAorMHg1MywgMHgwNywgMHgwMiwgMHgwMCwgMHgxYywgMHg0NiwgMHg3YSwgMHhjYSwgMHgwNSwgMHgxYywgMHg3YSwgMHgwZSwgMHgzMiwKKzB4NTQsIDB4MDksIDB4NDAsIDB4ZmEsIDB4MTksIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MDIsIDB4MDQsIDB4NDYsCisweDdhLCAweGNhLCAweDA1LCAweDFjLCAweGEwLCAweDBmLCAweDMxLCAweDU0LCAweDA5LCAweGEwLCAweDBmLCAweDMxLCAweDU0LAorMHgwOSwgMHhhMCwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHhiMywgMHg3YiwKKzB4MDEsIDB4YzAsIDB4MWYsIDB4NzQsIDB4MGUsIDB4MzAsIDB4NTQsIDB4MDksIDB4YzAsIDB4MDMsIDB4OWMsIDB4MDAsIDB4MWMsCisweDgwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDA0LCAweDAwLCAweDAwLCAweGFjLAorMHgxMiwgMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywgMHhkNCwgMHhkMywgMHgyYiwgMHgwMCwgMHgxYywgMHhkNCwKKzB4ZDMsIDB4NTIsIDB4MDAsIDB4MWMsIDB4ODAsIDB4NzYsIDB4N2QsIDB4MTMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDIsCisweDAwLCAweGE2LCAweDdiLCAweDk1LCAweDAzLCAweDEwLCAweGM3LCAweDljLCAweDAwLCAweDAwLCAweDFjLCAweDgwLCAweDJjLAorMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg2YywgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg1NCwgMHhjMywgMHgwNCwKKzB4YWIsIDB4MmQsIDB4ZDksIDB4MTIsIDB4MDUsIDB4MDcsIDB4MWQsIDB4YjUsIDB4YzIsIDB4MDQsIDB4OGIsIDB4MmQsIDB4MDEsCisweDAwLCAweDFjLCAweDY5LCAweDI1LCAweDAxLCAweDAwLCAweDFjLCAweGE2LCAweDdiLCAweDk1LCAweDAzLCAweDEwLCAweGNiLAorMHgyZiwgMHgwOSwgMHgwMCwgMHgxYywgMHg2MCwgMHgyYywgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMywKKzB4MDAsIDB4NTMsIDB4MGYsIDB4MzIsIDB4NTQsIDB4MDksIDB4NDYsIDB4N2EsIDB4Y2EsIDB4MDUsIDB4MWMsIDB4N2EsIDB4MGUsCisweDMyLCAweDU0LCAweDA5LCAweDQwLCAweGZhLCAweDE5LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDEwLCAweDAzLCAweDA0LAorMHg0NiwgMHg3YSwgMHhjYSwgMHgwNSwgMHgxYywgMHhiNSwgMHgwZiwgMHgzMSwgMHg1NCwgMHgwOSwgMHhhMCwgMHgwZiwgMHgzMSwKKzB4NTQsIDB4MDksIDB4NzMsIDB4ZWMsIDB4MmEsIDB4MDMsIDB4MDQsIDB4NjAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDAsCisweDAwLCAweDI4LCAweDAzLCAweDAwLCAweGM3LCAweDFjLCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDI4LCAweDEzLAorMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwgMHgxYywgMHhjMCwgMHhkNywgMHgyMiwgMHgwMCwgMHgxYywgMHg3NSwgMHg1NiwKKzB4N2UsIDB4MTMsIDB4MDQsIDB4NjAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ZTcsIDB4MWMsIDB4NDUsIDB4MDMsIDB4MDQsCisweGU3LCAweDljLCAweDAwLCAweDAwLCAweDFjLCAweGE2LCAweDdiLCAweDk1LCAweDAzLCAweDEwLCAweDgwLCAweDJjLCAweDAwLAorMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg1NCwgMHhjMywgMHgwNCwgMHhiOSwKKzB4N2IsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4OGMsIDB4YzMsIDB4MDQsIDB4Y2IsIDB4YWYsIDB4ZmMsIDB4MDcsCisweDFjLCAweGNiLCAweDJmLCAweDAxLCAweDA0LCAweDFjLCAweGM3LCAweDlmLCAweDgwLCAweDAzLCAweDFjLCAweDAwLCAweDAwLAorMHg4YywgMHhjMywgMHgwNCwgMHhjYiwgMHhhZiwgMHhmYywgMHgwNywgMHgxYywgMHhjYiwgMHgyZiwgMHgwZCwgMHgwNCwgMHgxYywKKzB4YzcsIDB4OWYsIDB4ODAsIDB4MDMsIDB4MWMsIDB4MDAsIDB4MDAsIDB4OGMsIDB4YzMsIDB4MDQsIDB4Y2IsIDB4YWYsIDB4MDAsCisweGY4LCAweDFkLCAweGNiLCAweDJmLCAweDAxLCAweDAwLCAweDFkLCAweGE2LCAweDdiLCAweDk1LCAweDAzLCAweDFjLCAweGM3LAorMHg5YywgMHg4YywgMHhjMywgMHgwNCwgMHgwMCwgMHgwMCwgMHg4YywgMHgxMywgMHgwNSwgMHgwNywgMHgxZCwgMHgwMSwgMHgwMCwKKzB4MWMsIDB4YzAsIDB4MWQsIDB4ZGMsIDB4ZDMsIDB4MDgsIDB4MjcsIDB4OWQsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4YTAsIDB4ZWUsCisweDQ2LCAweGQ0LCAweDAwLCAweGZiLCAweDc1LCAweDA5LCAweDE0LCAweDA0LCAweDIwLCAweDdiLCAweDA2LCAweDAwLCAweDFjLAorMHhjMCwgMHgxYywgMHgxYywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHhkMywgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ZjQsIDB4MDAsIDB4YzAsIDB4ZWYsIDB4ZjIsIDB4MDAsIDB4MWMsIDB4MjAsIDB4MjUsIDB4NWMsIDB4MTQsIDB4MDQsIDB4NjAsCisweGI3LCAweGQyLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDE1LCAweDAwLCAweGNjLCAweGIzLCAweGZjLCAweDAzLAorMHgxYywgMHhjYywgMHgzMywgMHgwNSwgMHgwMiwgMHgxYywgMHgwMCwgMHgwMCwgMHgwYywgMHhjNSwgMHgwNCwgMHg2MCwgMHhiNywKKzB4MGUsIDB4MDUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MTUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NWMsIDB4YzQsIDB4MDQsCisweGMwLCAweDFkLCAweDk4LCAweGYzLCAweDA0LCAweDAwLCAweDAwLCAweDY4LCAweGM0LCAweDA0LCAweDA3LCAweDlkLCAweDAwLAorMHgwMCwgMHgxYywgMHgxYiwgMHg3NCwgMHhmZCwgMHhmMywgMHgwNCwgMHhhNiwgMHg3YiwgMHhmMSwgMHgwMywgMHgxYywgMHhhMCwKKzB4MGYsIDB4NjksIDB4NTQsIDB4MDksIDB4ZTAsIDB4N2IsIDB4MDAsIDB4ZmMsIDB4MWYsIDB4MzksIDB4N2YsIDB4MDIsIDB4MDAsCisweDFjLCAweDA3LCAweDFkLCAweDlkLCAweGMzLCAweDA0LCAweGE2LCAweDdiLCAweGFkLCAweDAzLCAweDFjLCAweDAwLCAweDAwLAorMHg2OCwgMHhjNCwgMHgwNCwgMHhlMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgwNCwKKzB4Y2IsIDB4YWYsIDB4MDAsIDB4ZjgsIDB4MWQsIDB4Y2IsIDB4MmYsIDB4MDEsIDB4MTAsIDB4MWQsIDB4MDAsIDB4MDAsIDB4YWMsCisweGMzLCAweDA0LCAweDAwLCAweDAwLCAweGFjLCAweDAzLCAweDA0LCAweGNiLCAweGFmLCAweDAwLCAweGY4LCAweDFkLCAweGNiLAorMHgyZiwgMHgwMSwgMHgxOCwgMHgxZCwgMHhjNywgMHg5ZiwgMHgwMCwgMHgwYiwgMHgxYywgMHgwMCwgMHgwMCwgMHhhYywgMHhjMywKKzB4MDQsIDB4ZmIsIDB4NzUsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDcsIDB4MWQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4Y2MsIDB4YjMsCisweGZjLCAweDAzLCAweDFjLCAweGNjLCAweDMzLCAweDAxLCAweDAyLCAweDFjLCAweDAwLCAweDAwLCAweGFjLCAweGMzLCAweDA0LAorMHhhMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgxYywgMHhhMCwgMHhlZSwgMHhhMiwgMHgwMywgMHgwNCwgMHhjYiwgMHhhZiwgMHhmYywKKzB4MDcsIDB4MWMsIDB4Y2IsIDB4MmYsIDB4MDksIDB4MDQsIDB4MWMsIDB4ZmIsIDB4NzUsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsCisweDAwLCAweGFjLCAweGMzLCAweDA0LCAweGNjLCAweGIzLCAweGZjLCAweDAzLCAweDFjLCAweGNjLCAweDMzLCAweDAxLCAweDAyLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwYywgMHhjNSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgzNCwgMHgwNSwgMHhjYywgMHhiMywKKzB4ZmMsIDB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsIDB4MTUsIDB4MDIsIDB4MWMsIDB4NDcsIDB4OWQsIDB4NTQsIDB4YzQsIDB4MDQsCisweDAwLCAweDAwLCAweDc4LCAweDQ0LCAweDAwLCAweDgwLCAweDFkLCAweDdjLCAweDU0LCAweDA0LCAweDg3LCAweDFkLCAweDhkLAorMHgwNCwgMHgwMCwgMHhjZSwgMHg3NiwgMHgwMSwgMHgwMCwgMHgxYywgMHhlZiwgMHg3NiwgMHg5ZCwgMHhjNCwgMHgwNCwgMHhhNCwKKzB4NzcsIDB4OGQsIDB4MjQsIDB4MDksIDB4ZTQsIDB4NzYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4YzQsIDB4NzYsIDB4MDEsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDk4LCAweDU0LCAweDA0LCAweGQ3LCAweDc2LCAweDAxLCAweDUwLCAweDE4LCAweGY2LCAweDc2LAorMHgwMSwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwKKzB4Y2MsIDB4MzAsIDB4NDUsIDB4YzUsIDB4MDQsIDB4ZWIsIDB4MmQsIDB4MDEsIDB4MDAsIDB4MWMsIDB4ZWEsIDB4MjksIDB4MDEsCisweDAwLCAweDFjLCAweGMwLCAweDU5LCAweDAxLCAweDAwLCAweDFjLCAweGY1LCAweDc3LCAweDI5LCAweGM1LCAweDA0LCAweGUwLAorMHgzMCwgMHhkYywgMHgwNCwgMHgwMCwgMHgwMCwgMHg0YywgMHhiMCwgMHgwNCwgMHgwMCwgMHgyMCwgMHg0YywgMHhmNCwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDQsIDB4MDAsIDB4Y2MsIDB4YjMsIDB4ZmMsIDB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsCisweDA5LCAweDAyLCAweDFjLCAweGViLCAweDJkLCAweGI1LCAweGM0LCAweDA0LCAweGNjLCAweGIzLCAweGZjLCAweDAzLCAweDFjLAorMHhjYywgMHgzMywgMHgxOSwgMHgwMiwgMHgxYywgMHhlYiwgMHgyZCwgMHhiNSwgMHhjNCwgMHgwNCwgMHhjYywgMHhiMywgMHhmYywKKzB4MDMsIDB4MWMsIDB4Y2MsIDB4MzMsIDB4MGQsIDB4MDIsIDB4MWMsIDB4ZWIsIDB4MmQsIDB4YjUsIDB4YzQsIDB4MDQsIDB4Y2MsCisweGIzLCAweGZjLCAweDAzLCAweDFjLCAweGNjLCAweDMzLCAweDExLCAweDAyLCAweDFjLCAweGViLCAweDJkLCAweGI1LCAweGM0LAorMHgwNCwgMHgwMCwgMHg3YiwgMHgwMCwgMHg4MCwgMHgxYywgMHhhZSwgMHg3NywgMHg0NSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDQsIDB4YzAsIDB4MDQsIDB4ZDMsIDB4OGIsIDB4MDAsIDB4ZmMsIDB4MWYsIDB4NjAsIDB4N2EsIDB4M2MsIDB4MDAsIDB4MWMsCisweDYwLCAweDRjLCAweGMwLCAweDA0LCAweDAwLCAweGMwLCAweDJmLCAweDIwLCAweDA1LCAweDFmLCAweGUwLCAweDMwLCAweGIwLAorMHgwNCwgMHgwMCwgMHg4MCwgMHgyNSwgMHhiMCwgMHgwNCwgMHgwMCwgMHhiNSwgMHg1YiwgMHhiMSwgMHgwNCwgMHgwNCwgMHg2OSwKKzB4MjYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NmEsIDB4MmIsIDB4MDEsIDB4MDAsIDB4MWMsIDB4ODAsIDB4MWQsIDB4MDAsIDB4MDAsCisweDFjLCAweGE5LCAweDI1LCAweDQ1LCAweDA1LCAweDAwLCAweGVlLCAweDMwLCAweDAwLCAweDAwLCAweDFjLCAweGFmLCAweDc3LAorMHgwMSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHgyNCwgMHgwNCwgMHhiNCwgMHg1ZiwgMHgwMSwgMHg0MCwgMHgxOCwKKzB4MDcsIDB4OWQsIDB4NDgsIDB4NTUsIDB4MDQsIDB4YjcsIDB4NzYsIDB4MDEsIDB4MDAsIDB4MWMsIDB4OTYsIDB4NzYsIDB4MDEsCisweDAwLCAweDFjLCAweDQ3LCAweDFkLCAweDAxLCAweDAwLCAweDFjLCAweGE0LCAweDMzLCAweDAxLCAweDYwLCAweDE4LCAweGE0LAorMHgyZiwgMHgwMSwgMHg2MCwgMHgxOCwgMHg2NCwgMHg3NywgMHgwMSwgMHg2MCwgMHgxOCwgMHgyNCwgMHg3NywgMHgwMSwgMHg2MCwKKzB4MTgsIDB4NDQsIDB4NzcsIDB4MDEsIDB4MDAsIDB4MWMsIDB4NjQsIDB4ODgsIDB4MDMsIDB4MDAsIDB4MWMsIDB4YTQsIDB4M2YsCisweDAxLCAweDAwLCAweDFjLCAweGE0LCAweDNiLCAweDAxLCAweDAwLCAweDFjLCAweDUzLCAweDdiLCAweDAwLCAweGMwLCAweDFjLAorMHhkMywgMHhjZiwgMHgxYiwgMHgwMCwgMHgxYywgMHg1MywgMHg0ZiwgMHgwMiwgMHgwMCwgMHgxYywgMHhkYSwgMHhjZiwgMHgwMCwKKzB4YzAsIDB4MWYsIDB4ZDUsIDB4NTcsIDB4MGYsIDB4MDAsIDB4MWMsIDB4ZDMsIDB4ZDMsIDB4MzcsIDB4MDAsIDB4MWMsIDB4ZDQsCisweDUzLCAweDBmLCAweDAwLCAweDFjLCAweGUwLCAweDI5LCAweDAwLCAweDAwLCAweDFjLCAweGY1LCAweGQ1LCAweGIwLCAweDA1LAorMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHg1NSwgMHgwNCwgMHg3NywgMHg1NiwgMHgwMSwgMHgwMCwgMHgxYywgMHg1NiwgMHg1MywKKzB4MDEsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDQsIDB4YzAsIDB4MDQsCisweGY1LCAweDU1LCAweDAxLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweGI0LCAweDU1LCAweDA0LCAweDc3LCAweDU2LCAweDAxLAorMHgwMCwgMHgxYywgMHg1NiwgMHg1MywgMHgwMSwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgxOCwgMHgwMCwKKzB4MDAsIDB4MDQsIDB4YzAsIDB4MDQsIDB4Y2IsIDB4MmYsIDB4MDEsIDB4MTgsIDB4MTAsIDB4Y2IsIDB4MmYsIDB4MDEsIDB4MTAsCisweDEwLCAweGNiLCAweDJmLCAweDAxLCAweDA4LCAweDEwLCAweGNiLCAweDJmLCAweDAxLCAweDA4LCAweDEwLCAweGNiLCAweDJmLAorMHgwMSwgMHgyMCwgMHgxMCwgMHhjYiwgMHgyZiwgMHgwMSwgMHgyOCwgMHgxMCwgMHhjYiwgMHgyZiwgMHgwMSwgMHgwMCwgMHgxMCwKKzB4ODksIDB4MjUsIDB4NjEsIDB4YzIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4YzIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NTQsCisweGMzLCAweDA0LCAweDAwLCAweDAwLCAweDU0LCAweGMzLCAweDA0LCAweDAwLCAweDAwLCAweDU0LCAweGMzLCAweDA0LCAweDAwLAorMHgwMCwgMHg2MCwgMHhjMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHhlYywgMHhjMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg1NCwgMHhjMywKKzB4MDQsIDB4MDAsIDB4MDAsIDB4NTQsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NTQsIDB4YzMsIDB4MDQsIDB4NDAsIDB4MWMsCisweDZjLCAweGMwLCAweDA0LCAweDQwLCAweDFjLCAweDljLCAweGMwLCAweDA0LCAweGE3LCAweDc3LCAweDU1LCAweGMzLCAweDA0LAorMHgwMCwgMHgwMCwgMHhjNCwgMHhjMCwgMHgwNCwgMHgyNywgMHgxZCwgMHhmMSwgMHhjMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg1NCwKKzB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NTQsIDB4YzMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NTQsIDB4YzMsIDB4MDQsIDB4MDAsCisweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLAorMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsCisweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLAorMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsCisweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsCisweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLAorMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwKKzB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsCisweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLAorMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwKKzB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsCisweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLAorMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsCisweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LCAweDAwLCAweDAwLCAweDJjLCAweGM2LCAweDA0LAorMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywgMHhjNiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyYywKKzB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzYsIDB4MDQsCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpYy5oIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNWRjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljLmgKQEAgLTAsMCArMSw1OTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAyIEFsYWNyaXRlY2gsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBTEFDUklURUNILCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQUxBQ1JJVEVDSCwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiBUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcKKyAqIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBGSUxFTkFNRTogc2xpYy5oCisgKgorICogVGhpcyBpcyB0aGUgYmFzZSBzZXQgb2YgaGVhZGVyIGRlZmluaXRpb25zIGZvciB0aGUgU0xJQ09TUyBkcml2ZXIuCisgKi8KKyNpZm5kZWYgX19TTElDX0RSSVZFUl9IX18KKyNkZWZpbmUgX19TTElDX0RSSVZFUl9IX18KKworCitzdHJ1Y3Qgc2xpY19zcGlubG9jayB7CisJc3BpbmxvY2tfdAlsb2NrOworCXVuc2lnbmVkIGxvbmcJZmxhZ3M7Cit9OworCisjZGVmaW5lIFNMSUNfUlNQUV9QQUdFU19HQiAgICAgICAgMTAKKyNkZWZpbmUgU0xJQ19SU1BRX0JVRlNJTlBBR0UgICAgICAoUEFHRV9TSVpFIC8gU0xJQ19SU1BCVUZfU0laRSkKKworc3RydWN0IHNsaWNfcnNwcXVldWUgeworICAgIHUzMiAgICAgICAgICAgICBvZmZzZXQ7CisgICAgdTMyICAgICAgICAgICAgIHBhZ2VpbmRleDsKKyAgICB1MzIgICAgICAgICAgICAgbnVtX3BhZ2VzOworICAgIHN0cnVjdCBzbGljX3JzcGJ1ZiAqcnNwYnVmOworICAgIHUzMiAqdmFkZHJbU0xJQ19SU1BRX1BBR0VTX0dCXTsKKyAgICBkbWFfYWRkcl90ICAgICAgICAgIHBhZGRyW1NMSUNfUlNQUV9QQUdFU19HQl07Cit9OworCisjZGVmaW5lIFNMSUNfUkNWUV9FWFBBTlNJT04gICAgICAgICAxCisjZGVmaW5lIFNMSUNfUkNWUV9FTlRSSUVTICAgICAgICAgICAoMjU2ICogU0xJQ19SQ1ZRX0VYUEFOU0lPTikKKyNkZWZpbmUgU0xJQ19SQ1ZRX01JTkVOVFJJRVMgICAgICAgIChTTElDX1JDVlFfRU5UUklFUyAvIDIpCisjZGVmaW5lIFNMSUNfUkNWUV9NQVhfUFJPQ0VTU19JU1IgICAoKFNMSUNfUkNWUV9FTlRSSUVTICogNCkpCisjZGVmaW5lIFNMSUNfUkNWUV9SQ1ZCVUZTSVpFICAgICAgICAyMDQ4CisjZGVmaW5lIFNMSUNfUkNWUV9GSUxMRU5UUklFUyAgICAgICAoMTYgKiBTTElDX1JDVlFfRVhQQU5TSU9OKQorI2RlZmluZSBTTElDX1JDVlFfRklMTFRIUkVTSCAgICAgICAgKFNMSUNfUkNWUV9FTlRSSUVTIC0gU0xJQ19SQ1ZRX0ZJTExFTlRSSUVTKQorCitzdHJ1Y3Qgc2xpY19yY3ZxdWV1ZSB7CisgICAgc3RydWN0IHNrX2J1ZmYgICAgKmhlYWQ7CisgICAgc3RydWN0IHNrX2J1ZmYgICAgKnRhaWw7CisgICAgdTMyICAgICAgICAgICAgY291bnQ7CisgICAgdTMyICAgICAgICAgICAgc2l6ZTsKKyAgICB1MzIgICAgICAgICAgICBlcnJvcnM7Cit9OworCitzdHJ1Y3Qgc2xpY19yY3ZidWZfaW5mbyB7CisgICAgdTMyICAgICBpZDsKKyAgICB1MzIgICAgIHN0YXJ0dGltZTsKKyAgICB1MzIgICAgIHN0b3B0aW1lOworICAgIHUzMiAgICAgc2xpY3dvcmxkOworICAgIHUzMiAgICAgbGFzdHRpbWU7CisgICAgdTMyICAgICBsYXN0aWQ7Cit9OworLyoKKyBTTElDIEhhbmRsZSBzdHJ1Y3R1cmUuICBVc2VkIHRvIHJlc3RyaWN0IGhhbmRsZSB2YWx1ZXMgdG8KKyAzMiBiaXRzIGJ5IHVzaW5nIGFuIGluZGV4IHJhdGhlciB0aGFuIGFuIGFkZHJlc3MuCisgU2ltcGxpZmllcyB1Y29kZSBpbiA2NC1iaXQgc3lzdGVtcworKi8KK3N0cnVjdCBzbGljX2hhbmRsZV93b3JkIHsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1c2hvcnQgICAgICBpbmRleDsKKwkJCXVzaG9ydCAgICAgIGJvdHRvbWJpdHM7IC8qIHRvIGRlbm90ZSBudW0gYnVmcyB0byBjYXJkICovCisJCX0gIHBhcnRzOworCQl1MzIgICAgICAgICB3aG9sZTsKKwl9ICBoYW5kbGU7Cit9OworCitzdHJ1Y3Qgc2xpY19oYW5kbGUgeworICAgIHN0cnVjdCBzbGljX2hhbmRsZV93b3JkICB0b2tlbjsgIC8qIHRva2VuIHBhc3NlZCBiZXR3ZWVuIGhvc3QgYW5kIGNhcmQqLworICAgIHVzaG9ydCAgICAgICAgICAgICAgICAgICAgICB0eXBlOworICAgIHZvaWQgKmFkZHJlc3M7ICAgIC8qIGFjdHVhbCBhZGRyZXNzIG9mIHRoZSBvYmplY3QqLworICAgIHVzaG9ydCAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ7CisgICAgc3RydWN0IHNsaWNfaGFuZGxlICAgICAgICpvdGhlcl9oYW5kbGU7CisgICAgc3RydWN0IHNsaWNfaGFuZGxlICAgICAgICpuZXh0OworfTsKKworI2RlZmluZSBTTElDX0hBTkRMRV9GUkVFICAgICAgICAweDAwMDAKKyNkZWZpbmUgU0xJQ19IQU5ETEVfREFUQSAgICAgICAgMHgwMDAxCisjZGVmaW5lIFNMSUNfSEFORExFX0NNRCAgICAgICAgIDB4MDAwMgorI2RlZmluZSBTTElDX0hBTkRMRV9DT05URVhUICAgICAweDAwMDMKKyNkZWZpbmUgU0xJQ19IQU5ETEVfVEVBTSAgICAgICAgMHgwMDA0CisKKyNkZWZpbmUgaGFuZGxlX2luZGV4ICAgICAgICBoYW5kbGUucGFydHMuaW5kZXgKKyNkZWZpbmUgaGFuZGxlX2JvdHRvbSAgICAgICBoYW5kbGUucGFydHMuYm90dG9tYml0cworI2RlZmluZSBoYW5kbGVfdG9rZW4gICAgICAgIGhhbmRsZS53aG9sZQorCisjZGVmaW5lIFNMSUNfSE9TVENNRF9TSVpFICAgIDUxMgorCitzdHJ1Y3Qgc2xpY19ob3N0Y21kIHsKKyAgICBzdHJ1Y3Qgc2xpY19ob3N0NjRfY21kICBjbWQ2NDsKKyAgICB1MzIgICAgICAgICAgICAgICAgICAgIHR5cGU7CisgICAgc3RydWN0IHNrX2J1ZmYgICAgICAgICAgICAqc2tiOworICAgIHUzMiAgICAgICAgICAgICAgICAgICAgcGFkZHJsOworICAgIHUzMiAgICAgICAgICAgICAgICAgICAgcGFkZHJoOworICAgIHUzMiAgICAgICAgICAgICAgICAgICAgYnVzeTsKKyAgICB1MzIgICAgICAgICAgICAgICAgICAgIGNtZHNpemU7CisgICAgdXNob3J0ICAgICAgICAgICAgICAgICAgICAgbnVtYnVmczsKKyAgICBzdHJ1Y3Qgc2xpY19oYW5kbGUgICAgKnBzbGljX2hhbmRsZTsvKiBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQgKi8KKyAgICBzdHJ1Y3Qgc2xpY19ob3N0Y21kICAgICpuZXh0OworICAgIHN0cnVjdCBzbGljX2hvc3RjbWQgICAgKm5leHRfYWxsOworfTsKKworI2RlZmluZSBTTElDX0NNRFFfQ01EU0lOUEFHRSAgICAoUEFHRV9TSVpFIC8gU0xJQ19IT1NUQ01EX1NJWkUpCisjZGVmaW5lIFNMSUNfQ01EX0RVTUIgICAgICAgICAgICAzCisjZGVmaW5lIFNMSUNfQ01EUV9JTklUQ01EUyAgICAgICAyNTYKKyNkZWZpbmUgU0xJQ19DTURRX01BWENNRFMgICAgICAgIDI1NgorI2RlZmluZSBTTElDX0NNRFFfTUFYT1VUU1RBTkQgICAgU0xJQ19DTURRX01BWENNRFMKKyNkZWZpbmUgU0xJQ19DTURRX01BWFBBR0VTICAgICAgIChTTElDX0NNRFFfTUFYQ01EUyAvIFNMSUNfQ01EUV9DTURTSU5QQUdFKQorI2RlZmluZSBTTElDX0NNRFFfSU5JVFBBR0VTICAgICAgKFNMSUNfQ01EUV9JTklUQ01EUyAvIFNMSUNfQ01EUV9DTURTSU5QQUdFKQorCitzdHJ1Y3Qgc2xpY19jbWRxbWVtIHsKKwlpbnQgcGFnZWNudDsKKwl1MzIgKnBhZ2VzW1NMSUNfQ01EUV9NQVhQQUdFU107CisJZG1hX2FkZHJfdCBkbWFfcGFnZXNbU0xJQ19DTURRX01BWFBBR0VTXTsKK307CisKK3N0cnVjdCBzbGljX2NtZHF1ZXVlIHsKKwlzdHJ1Y3Qgc2xpY19ob3N0Y21kICpoZWFkOworCXN0cnVjdCBzbGljX2hvc3RjbWQgKnRhaWw7CisJaW50IGNvdW50OworCXN0cnVjdCBzbGljX3NwaW5sb2NrIGxvY2s7Cit9OworCisjaWZkZWYgU1RBVFVTX1NVQ0NFU1MKKyN1bmRlZiBTVEFUVVNfU1VDQ0VTUworI2VuZGlmCisKKyNkZWZpbmUgU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU1RBVFVTX1BFTkRJTkcgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU1RBVFVTX0ZBSUxVUkUgICAgICAgICAgICAgLTEKKyNkZWZpbmUgU1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgLTIKKyNkZWZpbmUgU1RBVFVTX05PVF9TVVBQT1JURUQgICAgICAgLTMKKyNkZWZpbmUgU1RBVFVTX0JVRkZFUl9UT09fU0hPUlQgICAgLTQKKworI2RlZmluZSBTTElDX01BWF9DQVJEUyAgICAgICAgICAgICAgMzIKKyNkZWZpbmUgU0xJQ19NQVhfUE9SVFMgICAgICAgICAgICAgIDQgICAgICAgIC8qIE1heCAjIG9mIHBvcnRzIHBlciBjYXJkICAgKi8KKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorLyoKK0R1bXAgYnVmZmVyIHNpemUKKworVGhpcyBjYW5ub3QgYmUgYmlnZ2VyIHRoYW4gdGhlIG1heCBETUEgc2l6ZSB0aGUgY2FyZCBzdXBwb3J0cywKK2dpdmVuIHRoZSBjdXJyZW50IGNvZGUgc3RydWN0dXJlIGluIHRoZSBob3N0IGFuZCB1Y29kZS4KK01vamF2ZSBzdXBwb3J0cyAxNkssIE9hc2lzIHN1cHBvcnRzIDE2Sy0xLCBzbworanVzdCBzZXQgdGhpcyBhdCAxNUssIHNob3VsZG50IG1ha2UgdGhhdCBtdWNoIG9mIGEgZGlmZi4KKyovCisjZGVmaW5lIERVTVBfQlVGX1NJWkUgICAgICAgICAgICAgICAweDNDMDAKKyNlbmRpZgorCisKK3N0cnVjdCBtY2FzdF9hZGRyZXNzIHsKKwl1bnNpZ25lZCBjaGFyIGFkZHJlc3NbNl07CisJc3RydWN0IG1jYXN0X2FkZHJlc3MgKm5leHQ7Cit9OworCisjZGVmaW5lIENBUkRfRE9XTiAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBDQVJEX1VQICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgQ0FSRF9GQUlMICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIENBUkRfRElBRyAgICAgICAgMHgwMDAwMDAwMworI2RlZmluZSBDQVJEX1NMRUVQICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBBREFQVF9ET1dOICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgQURBUFRfVVAgICAgICAgICAgICAgICAweDAxCisjZGVmaW5lIEFEQVBUX0ZBSUwgICAgICAgICAgICAgMHgwMgorI2RlZmluZSBBREFQVF9SRVNFVCAgICAgICAgICAgIDB4MDMKKyNkZWZpbmUgQURBUFRfU0xFRVAgICAgICAgICAgICAweDA0CisKKyNkZWZpbmUgQURBUFRfRkxBR1NfQk9PVFRJTUUgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgQURBUFRfRkxBR1NfSVM2NEJJVCAgICAgICAgICAgICAweDAwMDIKKyNkZWZpbmUgQURBUFRfRkxBR1NfUEVORElOR0xJTktET1dOICAgICAweDAwMDQKKyNkZWZpbmUgQURBUFRfRkxBR1NfRklCRVJNRURJQSAgICAgICAgICAweDAwMDgKKyNkZWZpbmUgQURBUFRfRkxBR1NfTE9DS1NfQUxMT0NFRCAgICAgICAweDAwMTAKKyNkZWZpbmUgQURBUFRfRkxBR1NfSU5UX1JFR0lTVEVSRUQgICAgICAweDAwMjAKKyNkZWZpbmUgQURBUFRfRkxBR1NfTE9BRF9USU1FUl9TRVQgICAgICAweDAwNDAKKyNkZWZpbmUgQURBUFRfRkxBR1NfU1RBVFNfVElNRVJfU0VUICAgICAweDAwODAKKyNkZWZpbmUgQURBUFRfRkxBR1NfUkVTRVRfVElNRVJfU0VUICAgICAweDAxMDAKKworI2RlZmluZSBMSU5LX0RPV04gICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgTElOS19DT05GSUcgICAgICAgICAgICAweDAxCisjZGVmaW5lIExJTktfVVAgICAgICAgICAgICAgICAgMHgwMgorCisjZGVmaW5lIExJTktfMTBNQiAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBMSU5LXzEwME1CICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgTElOS19BVVRPU1BFRUQgICAgICAgICAweDAyCisjZGVmaW5lIExJTktfMTAwME1CICAgICAgICAgICAgMHgwMworI2RlZmluZSBMSU5LXzEwMDAwTUIgICAgICAgICAgIDB4MDQKKworI2RlZmluZSBMSU5LX0hBTEZEICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgTElOS19GVUxMRCAgICAgICAgICAgICAweDAxCisjZGVmaW5lIExJTktfQVVUT0QgICAgICAgICAgICAgMHgwMgorCisjZGVmaW5lIE1BQ19ESVJFQ1RFRCAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBNQUNfQkNBU1QgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgTUFDX01DQVNUICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIE1BQ19QUk9NSVNDICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBNQUNfTE9PUEJBQ0sgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgTUFDX0FMTE1DQVNUICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgU0xJQ19EVVBMRVgoeCkgICAgKCh4ID09IExJTktfRlVMTEQpID8gIkZEWCIgOiAiSERYIikKKyNkZWZpbmUgU0xJQ19TUEVFRCh4KSAgICAgKCh4ID09IExJTktfMTAwTUIpID8gIjEwME1iIiA6ICgoeCA9PSBMSU5LXzEwMDBNQikgP1wKKwkJCQkiMTAwME1iIiA6ICIgMTBNYiIpKQorI2RlZmluZSBTTElDX0xJTktTVEFURSh4KSAoKHggPT0gTElOS19ET1dOKSA/ICJEb3duIiA6ICJVcCAgIikKKyNkZWZpbmUgU0xJQ19BREFQVEVSX1NUQVRFKHgpICgoeCA9PSBBREFQVF9VUCkgPyAiVVAiIDogIkRvd24iKQorI2RlZmluZSBTTElDX0NBUkRfU1RBVEUoeCkgICAgKCh4ID09IENBUkRfVVApID8gIlVQIiA6ICJEb3duIikKKworc3RydWN0IHNsaWNfaWZhY2Vfc3RhdHMgeworICAgIC8qCisgICAgICogU3RhdHMKKyAgICAgKi8KKyAgICB1NjQgICAgICAgIHhtdF9ieXRlczsKKyAgICB1NjQgICAgICAgIHhtdF91Y2FzdDsKKyAgICB1NjQgICAgICAgIHhtdF9tY2FzdDsKKyAgICB1NjQgICAgICAgIHhtdF9iY2FzdDsKKyAgICB1NjQgICAgICAgIHhtdF9lcnJvcnM7CisgICAgdTY0ICAgICAgICB4bXRfZGlzY2FyZHM7CisgICAgdTY0ICAgICAgICB4bWl0X2NvbGxpc2lvbnM7CisgICAgdTY0ICAgICAgICB4bWl0X2V4Y2Vzc194bWl0X2NvbGxpc2lvbnM7CisgICAgdTY0ICAgICAgICByY3ZfYnl0ZXM7CisgICAgdTY0ICAgICAgICByY3ZfdWNhc3Q7CisgICAgdTY0ICAgICAgICByY3ZfbWNhc3Q7CisgICAgdTY0ICAgICAgICByY3ZfYmNhc3Q7CisgICAgdTY0ICAgICAgICByY3ZfZXJyb3JzOworICAgIHU2NCAgICAgICAgcmN2X2Rpc2NhcmRzOworfTsKKworc3RydWN0IHNsaWNjcF9zdGF0cyB7CisgICAgdTY0ICAgICAgICB4bWl0X3RjcF9zZWdzOworICAgIHU2NCAgICAgICAgeG1pdF90Y3BfYnl0ZXM7CisgICAgdTY0ICAgICAgICByY3ZfdGNwX3NlZ3M7CisgICAgdTY0ICAgICAgICByY3ZfdGNwX2J5dGVzOworfTsKKworc3RydWN0IHNsaWNuZXRfc3RhdHMgeworICAgIHN0cnVjdCBzbGljY3Bfc3RhdHMgICAgICAgIHRjcDsKKyAgICBzdHJ1Y3Qgc2xpY19pZmFjZV9zdGF0cyAgICAgIGlmYWNlOworfTsKKworI2RlZmluZSBTTElDX0xPQURUSU1FUl9QRVJJT0QgICAgIDEKKyNkZWZpbmUgU0xJQ19JTlRBR0dfREVGQVVMVCAgICAgICAyMDAKKyNkZWZpbmUgU0xJQ19MT0FEXzAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzAgICAgICAgICAgICAgMAorI2RlZmluZSBTTElDX0xPQURfMSAgICAgICAgICAgICAgIDgwMDAKKyNkZWZpbmUgU0xJQ19MT0FEXzIgICAgICAgICAgICAgICAxMDAwMAorI2RlZmluZSBTTElDX0xPQURfMyAgICAgICAgICAgICAgIDEyMDAwCisjZGVmaW5lIFNMSUNfTE9BRF80ICAgICAgICAgICAgICAgMTQwMDAKKyNkZWZpbmUgU0xJQ19MT0FEXzUgICAgICAgICAgICAgICAxNjAwMAorI2RlZmluZSBTTElDX0lOVEFHR18xICAgICAgICAgICAgIDUwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzIgICAgICAgICAgICAgMTAwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzMgICAgICAgICAgICAgMTUwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzQgICAgICAgICAgICAgMjAwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzUgICAgICAgICAgICAgMjUwCisjZGVmaW5lIFNMSUNfTE9BRF8xR0IgICAgICAgICAgICAgMzAwMAorI2RlZmluZSBTTElDX0xPQURfMkdCICAgICAgICAgICAgIDYwMDAKKyNkZWZpbmUgU0xJQ19MT0FEXzNHQiAgICAgICAgICAgICAxMjAwMAorI2RlZmluZSBTTElDX0xPQURfNEdCICAgICAgICAgICAgIDI0MDAwCisjZGVmaW5lIFNMSUNfTE9BRF81R0IgICAgICAgICAgICAgNDgwMDAKKyNkZWZpbmUgU0xJQ19JTlRBR0dfMUdCICAgICAgICAgICA1MAorI2RlZmluZSBTTElDX0lOVEFHR18yR0IgICAgICAgICAgIDc1CisjZGVmaW5lIFNMSUNfSU5UQUdHXzNHQiAgICAgICAgICAgMTAwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzRHQiAgICAgICAgICAgMTAwCisjZGVmaW5lIFNMSUNfSU5UQUdHXzVHQiAgICAgICAgICAgMTAwCisKK3N0cnVjdCBldGhlcl9oZWFkZXIgeworICAgIHVuc2lnbmVkIGNoYXIgICAgZXRoZXJfZGhvc3RbNl07CisgICAgdW5zaWduZWQgY2hhciAgICBldGhlcl9zaG9zdFs2XTsKKyAgICB1c2hvcnQgICBldGhlcl90eXBlOworfTsKKworc3RydWN0IHNsaWNjYXJkIHsKKyAgICB1aW50ICAgICAgICAgICAgICBidXNudW1iZXI7CisgICAgdWludCAgICAgICAgICAgICAgc2xvdG51bWJlcjsKKyAgICB1aW50ICAgICAgICAgICAgICBzdGF0ZTsKKyAgICB1aW50ICAgICAgICAgICAgICBjYXJkbnVtOworICAgIHVpbnQgICAgICAgICAgICAgIGNhcmRfc2l6ZTsKKyAgICB1aW50ICAgICAgICAgICAgICBhZGFwdGVyc19hY3RpdmF0ZWQ7CisgICAgdWludCAgICAgICAgICAgICAgYWRhcHRlcnNfYWxsb2NhdGVkOworICAgIHVpbnQgICAgICAgICAgICAgIGFkYXB0ZXJzX3NsZWVwaW5nOworICAgIHVpbnQgICAgICAgICAgICAgIGdlbm51bWJlcjsKKyAgICB1MzIgICAgICAgICAgIGV2ZW50czsKKyAgICB1MzIgICAgICAgICAgIGxvYWRsZXZlbF9jdXJyZW50OworICAgIHUzMiAgICAgICAgICAgbG9hZDsKKyAgICB1aW50ICAgICAgICAgICAgICByZXNldF9pbl9wcm9ncmVzczsKKyAgICB1MzIgICAgICAgICAgIHBpbmdzdGF0dXM7CisgICAgdTMyICAgICAgICAgICBiYWRfcGluZ3N0YXR1czsKKyAgICBzdHJ1Y3QgdGltZXJfbGlzdCBsb2FkdGltZXI7CisgICAgdTMyICAgICAgICAgICBsb2FkdGltZXJzZXQ7CisgICAgdWludCAgICAgICAgICAgICAgY29uZmlnX3NldDsKKyAgICBzdHJ1Y3Qgc2xpY19jb25maWcgIGNvbmZpZzsKKyAgICBzdHJ1Y3QgZGVudHJ5ICAgICAgKmRlYnVnZnNfZGlyOworICAgIHN0cnVjdCBkZW50cnkgICAgICAqZGVidWdmc19jYXJkaW5mbzsKKyAgICBzdHJ1Y3QgYWRhcHRlciAgKm1hc3RlcjsKKyAgICBzdHJ1Y3QgYWRhcHRlciAgKmFkYXB0ZXJbU0xJQ19NQVhfUE9SVFNdOworICAgIHN0cnVjdCBzbGljY2FyZCAqbmV4dDsKKyAgICB1MzIgICAgICAgICAgICAgZXJyb3JfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgZXJyb3Jfcm1pc3NfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgcmN2X2ludGVycnVwdHM7CisgICAgdTMyICAgICAgICAgICAgIHhtaXRfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgbnVtX2lzcnM7CisgICAgdTMyICAgICAgICAgICAgIGZhbHNlX2ludGVycnVwdHM7CisgICAgdTMyICAgICAgICAgICAgIG1heF9pc3JfcmN2czsKKyAgICB1MzIgICAgICAgICAgICAgbWF4X2lzcl94bWl0czsKKyAgICB1MzIgICAgICAgICAgICAgcmN2X2ludGVycnVwdF95aWVsZHM7CisgICAgdTMyICAgICAgICAgICAgIHR4X3BhY2tldHM7CisjaWYgU0xJQ19EVU1QX0VOQUJMRUQKKyAgICB1MzIgICAgICAgICAgICAgZHVtcHN0YXR1czsgICAgICAgICAgIC8qIFJlc3VsdCBvZiBkdW1wIFVQUiAqLworICAgIHZvaWQgKmNtZGJ1ZmZlcjsKKworICAgIHVsb25nICAgICAgICAgICAgICAgY21kYnVmZmVyX3BoeXM7CisgICAgdTMyICAgICAgICAgICAgIGNtZGJ1ZmZlcl9waHlzbDsKKyAgICB1MzIgICAgICAgICAgICAgY21kYnVmZmVyX3BoeXNoOworCisgICAgdTMyICAgICAgICAgICAgIGR1bXBfY291bnQ7CisgICAgc3RydWN0IHRhc2tfc3RydWN0ICpkdW1wX3Rhc2tfaWQ7CisgICAgdTMyICAgICAgICAgICAgIGR1bXBfd2FpdF9jb3VudDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGR1bXB0aHJlYWRfcnVubmluZzsgLyogaGFzIGEgZHVtcCB0aHJlYWQgYmVlbiBpbml0J2QgICovCisgICAgdWludCAgICAgICAgICAgICAgICBkdW1wX3JlcXVlc3RlZDsgICAgIC8qIDAgbm8sIDEgPSByZXFzdGQgMj1jdXJyIDM9ZG9uZSAqLworICAgIHUzMiAgICAgICAgICAgICBkdW1wdGltZV9zdGFydDsKKyAgICB1MzIgICAgICAgICAgICAgZHVtcHRpbWVfY29tcGxldGU7CisgICAgdTMyICAgICAgICAgICAgIGR1bXB0aW1lX2RlbHRhOworICAgIHZvaWQgKmR1bXBidWZmZXI7CisgICAgdWxvbmcgICAgICAgICAgICAgICBkdW1wYnVmZmVyX3BoeXM7CisgICAgdTMyICAgICAgICAgICAgIGR1bXBidWZmZXJfcGh5c2w7CisgICAgdTMyICAgICAgICAgICAgIGR1bXBidWZmZXJfcGh5c2g7CisgICAgd2FpdF9xdWV1ZV9oZWFkX3QgICBkdW1wX3dxOworICAgIHN0cnVjdCBmaWxlICAgICAgICAqZHVtcGhhbmRsZTsKKyAgICBtbV9zZWdtZW50X3QgICAgICAgIGR1bXBmaWxlX2ZzOworI2VuZGlmCisgICAgdTMyICAgICAgICAgICAgIGRlYnVnX2l4OworICAgIHVzaG9ydCAgICAgICAgICAgICAgcmVnX3R5cGVbMzJdOworICAgIHVzaG9ydCAgICAgICAgICAgICAgcmVnX29mZnNldFszMl07CisgICAgdTMyICAgICAgICAgICAgIHJlZ192YWx1ZVszMl07CisgICAgdTMyICAgICAgICAgICAgIHJlZ192YWx1ZWhbMzJdOworfTsKKworI2RlZmluZSBOVU1fQ0ZHX1NQQUNFUyAgICAgIDIKKyNkZWZpbmUgTlVNX0NGR19SRUdTICAgICAgICA2NAorI2RlZmluZSBOVU1fQ0ZHX1JFR19VTE9OR1MgIChOVU1fQ0ZHX1JFR1MgLyBzaXplb2YodTMyKSkKKworc3RydWN0IHBoeXNjYXJkIHsKKyAgICBzdHJ1Y3QgYWRhcHRlciAgKmFkYXB0ZXJbU0xJQ19NQVhfUE9SVFNdOworICAgIHN0cnVjdCBwaHlzY2FyZCAqbmV4dDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGFkYXB0ZXJzX2FsbG9jZDsKKworIC8qICB0aGUgZm9sbG93aW5nIGlzIG5vdCBjdXJyZW50bHkgbmVlZGVkCisgICAgdTMyICAgICAgICAgICAgICAgYnJpZGdlX2J1c251bTsKKyAgICB1MzIgICAgICAgICAgICAgICBicmlkZ2VfY2ZnW05VTV9DRkdfU1BBQ0VTXVtOVU1fQ0ZHX1JFR19VTE9OR1NdOworICovCit9OworCitzdHJ1Y3QgYmFzZV9kcml2ZXIgeworICAgIHN0cnVjdCBzbGljX3NwaW5sb2NrIGRyaXZlcl9sb2NrOworICAgIHUzMiAgICAgICAgICAgICAgbnVtX3NsaWNfY2FyZHM7CisgICAgdTMyICAgICAgICAgICAgICBudW1fc2xpY19wb3J0czsKKyAgICB1MzIgICAgICAgICAgICAgIG51bV9zbGljX3BvcnRzX2FjdGl2ZTsKKyAgICB1MzIgICAgICAgICAgICAgIGR5bmFtaWNfaW50YWdnOworICAgIHN0cnVjdCBzbGljY2FyZCAgKnNsaWNfY2FyZDsKKyAgICBzdHJ1Y3QgcGh5c2NhcmQgICpwaHlzX2NhcmQ7CisgICAgdWludCAgICAgICAgICAgICAgICAgY2FyZG51bWludXNlW1NMSUNfTUFYX0NBUkRTXTsKK307CisKK3N0cnVjdCBzbGljX3NobWVtIHsKKyAgICB2b2xhdGlsZSB1MzIgICAgICAgICAgaXNyOworICAgIHZvbGF0aWxlIHUzMiAgICAgICAgICBsaW5rc3RhdHVzOworICAgIHZvbGF0aWxlIHN0cnVjdCBzbGljX3N0YXRzICAgICBpbmljc3RhdHM7Cit9OworCitzdHJ1Y3Qgc2xpY19yZWdfcGFyYW1zIHsKKyAgICB1MzIgICAgICAgbGlua3NwZWVkOworICAgIHUzMiAgICAgICBsaW5rZHVwbGV4OworICAgIHUzMiAgICAgICBmYWlsX29uX2JhZF9lZXByb207Cit9OworCitzdHJ1Y3Qgc2xpY191cHIgeworICAgIHVpbnQgICAgICAgICAgICAgICBhZGFwdGVyOworICAgIHUzMiAgICAgICAgICAgIHVwcl9yZXF1ZXN0OworICAgIHUzMiAgICAgICAgICAgIHVwcl9kYXRhOworICAgIHUzMiAgICAgICAgICAgIHVwcl9kYXRhX2g7CisgICAgdTMyICAgICAgICAgICAgdXByX2J1ZmZlcjsKKyAgICB1MzIgICAgICAgICAgICB1cHJfYnVmZmVyX2g7CisgICAgc3RydWN0IHNsaWNfdXByICpuZXh0OworfTsKKworc3RydWN0IHNsaWNfaWZldmVudHMgeworICAgIHVpbnQgICAgICAgIG9mbG93ODAyOworICAgIHVpbnQgICAgICAgIHVmbG93ODAyOworICAgIHVpbnQgICAgICAgIFRwcnRvZmxvdzsKKyAgICB1aW50ICAgICAgICByY3ZlYXJseTsKKyAgICB1aW50ICAgICAgICBCdWZvdjsKKyAgICB1aW50ICAgICAgICBDYXJyZTsKKyAgICB1aW50ICAgICAgICBMb25nZTsKKyAgICB1aW50ICAgICAgICBJbnZwOworICAgIHVpbnQgICAgICAgIENyYzsKKyAgICB1aW50ICAgICAgICBEcmJsOworICAgIHVpbnQgICAgICAgIENvZGU7CisgICAgdWludCAgICAgICAgSXBIbGVuOworICAgIHVpbnQgICAgICAgIElwTGVuOworICAgIHVpbnQgICAgICAgIElwQ3N1bTsKKyAgICB1aW50ICAgICAgICBUcENzdW07CisgICAgdWludCAgICAgICAgVHBIbGVuOworfTsKKworc3RydWN0IGFkYXB0ZXIgeworICAgIHZvaWQgKmlmcDsKKyAgICBzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQ7CisgICAgdWludCAgICAgICAgICAgICAgICBwb3J0OworICAgIHN0cnVjdCBwaHlzY2FyZCAqcGh5c2NhcmQ7CisgICAgdWludCAgICAgICAgICAgICAgICBwaHlzcG9ydDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGNhcmRpbmRleDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGNhcmRfc2l6ZTsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGNoaXBpZDsKKyAgICBzdHJ1Y3QgbmV0X2RldmljZSAgKm5ldGRldjsKKyAgICBzdHJ1Y3QgbmV0X2RldmljZSAgKm5leHRfbmV0ZGV2aWNlOworICAgIHN0cnVjdCBzbGljX3NwaW5sb2NrICAgICBhZGFwdGVyX2xvY2s7CisgICAgc3RydWN0IHNsaWNfc3BpbmxvY2sgICAgIHJlc2V0X2xvY2s7CisgICAgc3RydWN0IHBjaV9kZXYgICAgICpwY2lkZXY7CisgICAgdWludCAgICAgICAgICAgICAgICBidXNudW1iZXI7CisgICAgdWludCAgICAgICAgICAgICAgICBzbG90bnVtYmVyOworICAgIHVpbnQgICAgICAgICAgICAgICAgZnVuY3Rpb25udW1iZXI7CisgICAgdXNob3J0ICAgICAgICAgICAgICB2ZW5kaWQ7CisgICAgdXNob3J0ICAgICAgICAgICAgICBkZXZpZDsKKyAgICB1c2hvcnQgICAgICAgICAgICAgIHN1YnN5c2lkOworICAgIHUzMiAgICAgICAgICAgICBpcnE7CisgICAgdm9pZCBfX2lvbWVtICptZW1vcnliYXNlOworICAgIHUzMiAgICAgICAgICAgICBtZW1vcnlsZW5ndGg7CisgICAgdTMyICAgICAgICAgICAgIGRyYW1iYXNlOworICAgIHUzMiAgICAgICAgICAgICBkcmFtbGVuZ3RoOworICAgIHVpbnQgICAgICAgICAgICAgICAgcXVldWVzX2luaXRpYWxpemVkOworICAgIHVpbnQgICAgICAgICAgICAgICAgYWxsb2NhdGVkOworICAgIHVpbnQgICAgICAgICAgICAgICAgYWN0aXZhdGVkOworICAgIHUzMiAgICAgICAgICAgICBpbnRycmVnaXN0ZXJlZDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGlzcF9pbml0aWFsaXplZDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGdlbm51bWJlcjsKKyAgICB1MzIgICAgICAgICAgICAgY3VyYWRkcnVwcGVyOworICAgIHN0cnVjdCBzbGljX3NobWVtICAgICAgKnBzaG1lbTsKKyAgICBkbWFfYWRkcl90ICAgICAgICAgIHBoeXNfc2htZW07CisgICAgdTMyICAgICAgICAgICAgIGlzcmNvcHk7CisgICAgX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICAgICAgICpzbGljX3JlZ3M7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIHN0YXRlOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBsaW5rc3RhdGU7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIGxpbmtzcGVlZDsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgbGlua2R1cGxleDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIGZsYWdzOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBtYWNhZGRyWzZdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBjdXJybWFjYWRkcls2XTsKKyAgICB1MzIgICAgICAgICAgICAgbWFjb3B0czsKKyAgICB1c2hvcnQgICAgICAgICAgICAgIGRldmZsYWdzX3ByZXY7CisgICAgdTY0ICAgICAgICAgICAgIG1jYXN0bWFzazsKKyAgICBzdHJ1Y3QgbWNhc3RfYWRkcmVzcyAgICptY2FzdGFkZHJzOworICAgIHN0cnVjdCBzbGljX3VwciAgICp1cHJfbGlzdDsKKyAgICB1aW50ICAgICAgICAgICAgICAgIHVwcl9idXN5OworICAgIHN0cnVjdCB0aW1lcl9saXN0ICAgcGluZ3RpbWVyOworICAgIHUzMiAgICAgICAgICAgICBwaW5ndGltZXJzZXQ7CisgICAgc3RydWN0IHRpbWVyX2xpc3QgICBzdGF0c3RpbWVyOworICAgIHUzMiAgICAgICAgICAgICBzdGF0c3RpbWVyc2V0OworICAgIHN0cnVjdCB0aW1lcl9saXN0ICAgbG9hZHRpbWVyOworICAgIHUzMiAgICAgICAgICAgICBsb2FkdGltZXJzZXQ7CisgICAgc3RydWN0IGRlbnRyeSAgICAgICpkZWJ1Z2ZzX2VudHJ5OworICAgIHN0cnVjdCBzbGljX3NwaW5sb2NrICAgICB1cHJfbG9jazsKKyAgICBzdHJ1Y3Qgc2xpY19zcGlubG9jayAgICAgYml0NjRyZWdsb2NrOworICAgIHN0cnVjdCBzbGljX3JzcHF1ZXVlICAgICByc3BxdWV1ZTsKKyAgICBzdHJ1Y3Qgc2xpY19yY3ZxdWV1ZSAgICAgcmN2cXVldWU7CisgICAgc3RydWN0IHNsaWNfY21kcXVldWUgICAgIGNtZHFfZnJlZTsKKyAgICBzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSAgICAgY21kcV9kb25lOworICAgIHN0cnVjdCBzbGljX2NtZHF1ZXVlICAgICBjbWRxX2FsbDsKKyAgICBzdHJ1Y3Qgc2xpY19jbWRxbWVtICAgICAgY21kcW1lbTsKKyAgICAvKgorICAgICAqICBTTElDIEhhbmRsZXMKKyAgICAqLworICAgIHN0cnVjdCBzbGljX2hhbmRsZSBzbGljX2hhbmRsZXNbU0xJQ19DTURRX01BWENNRFMrMV07IC8qIE9iamVjdCBoYW5kbGVzKi8KKyAgICBzdHJ1Y3Qgc2xpY19oYW5kbGUgKnBmcmVlX3NsaWNfaGFuZGxlczsgICAgICAgICAgLyogRnJlZSBvYmplY3QgaGFuZGxlcyovCisgICAgc3RydWN0IHNsaWNfc3BpbmxvY2sgICAgIGhhbmRsZV9sb2NrOyAgICAgICAgICAgLyogT2JqZWN0IGhhbmRsZSBsaXN0IGxvY2sqLworICAgIHVzaG9ydCAgICAgICAgICAgICAgc2xpY19oYW5kbGVfaXg7CisKKyAgICB1MzIgICAgICAgICAgICAgeG1pdHFfZnVsbDsKKyAgICB1MzIgICAgICAgICAgICAgYWxsX3JlZ193cml0ZXM7CisgICAgdTMyICAgICAgICAgICAgIGljcl9yZWdfd3JpdGVzOworICAgIHUzMiAgICAgICAgICAgICBpc3JfcmVnX3dyaXRlczsKKyAgICB1MzIgICAgICAgICAgICAgZXJyb3JfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgZXJyb3Jfcm1pc3NfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgcnhfZXJyb3JzOworICAgIHUzMiAgICAgICAgICAgICByY3ZfZHJvcHM7CisgICAgdTMyICAgICAgICAgICAgIHJjdl9pbnRlcnJ1cHRzOworICAgIHUzMiAgICAgICAgICAgICB4bWl0X2ludGVycnVwdHM7CisgICAgdTMyICAgICAgICAgICAgIGxpbmtldmVudF9pbnRlcnJ1cHRzOworICAgIHUzMiAgICAgICAgICAgICB1cHJfaW50ZXJydXB0czsKKyAgICB1MzIgICAgICAgICAgICAgbnVtX2lzcnM7CisgICAgdTMyICAgICAgICAgICAgIGZhbHNlX2ludGVycnVwdHM7CisgICAgdTMyICAgICAgICAgICAgIHR4X3BhY2tldHM7CisgICAgdTMyICAgICAgICAgICAgIHhtaXRfY29tcGxldGVzOworICAgIHUzMiAgICAgICAgICAgICB0eF9kcm9wczsKKyAgICB1MzIgICAgICAgICAgICAgcmN2X2Jyb2FkY2FzdHM7CisgICAgdTMyICAgICAgICAgICAgIHJjdl9tdWx0aWNhc3RzOworICAgIHUzMiAgICAgICAgICAgICByY3ZfdW5pY2FzdHM7CisgICAgdTMyICAgICAgICAgICAgIG1heF9pc3JfcmN2czsKKyAgICB1MzIgICAgICAgICAgICAgbWF4X2lzcl94bWl0czsKKyAgICB1MzIgICAgICAgICAgICAgcmN2X2ludGVycnVwdF95aWVsZHM7CisgICAgdTMyICAgICAgICAgICAgIGludGFnZ19wZXJpb2Q7CisgICAgc3RydWN0IGluaWNwbV9zdGF0ZSAgICAqaW5pY3BtX2luZm87CisgICAgdm9pZCAqcGluaWNwbV9pbmZvOworICAgIHN0cnVjdCBzbGljX3JlZ19wYXJhbXMgICByZWdfcGFyYW1zOworICAgIHN0cnVjdCBzbGljX2lmZXZlbnRzICBpZl9ldmVudHM7CisgICAgc3RydWN0IHNsaWNfc3RhdHMgICAgICAgIGluaWNzdGF0c19wcmV2OworICAgIHN0cnVjdCBzbGljbmV0X3N0YXRzICAgICBzbGljX3N0YXRzOworICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOworfTsKKworI2lmIFNMSUNfRFVNUF9FTkFCTEVECisjZGVmaW5lIFNMSUNfRFVNUF9SRVFVRVNURUQgICAgICAxCisjZGVmaW5lIFNMSUNfRFVNUF9JTl9QUk9HUkVTUyAgICAyCisjZGVmaW5lIFNMSUNfRFVNUF9ET05FICAgICAgICAgICAzCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogTWljcm9jb2RlIGNyYXNoIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4gIFRoaXMKKyAqIHN0cnVjdHVyZSBpcyB3cml0dGVuIG91dCB0byB0aGUgY2FyZCdzIFNSQU0gd2hlbiB0aGUgbWljcm9jb2RlIHBhbmljJ3MuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdHJ1Y3Qgc2xpY19jcmFzaF9pbmZvIHsKKyAgICB1c2hvcnQgIGNwdV9pZDsKKyAgICB1c2hvcnQgIGNyYXNoX3BjOworfTsKKworI2RlZmluZSBDUkFTSF9JTkZPX09GRlNFVCAgIDB4MTU1QworCisjZW5kaWYKKworI2RlZmluZSBVUERBVEVfU1RBVFMobGFyZ2VzdGF0LCBuZXdzdGF0LCBvbGRzdGF0KSAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChuZXdzdGF0KSA8IChvbGRzdGF0KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCShsYXJnZXN0YXQpICs9ICgobmV3c3RhdCkgKyAoMHhGRkZGRkZGRiAtIG9sZHN0YXQgKyAxKSk7ICAgICAgICAgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkobGFyZ2VzdGF0KSArPSAoKG5ld3N0YXQpIC0gKG9sZHN0YXQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2RlZmluZSBVUERBVEVfU1RBVFNfR0IobGFyZ2VzdGF0LCBuZXdzdGF0LCBvbGRzdGF0KSAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGxhcmdlc3RhdCkgKz0gKChuZXdzdGF0KSAtIChvbGRzdGF0KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIEVUSEVSX0VRX0FERFIoX0FkZHJBLCBfQWRkckIsIF9SZXN1bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfUmVzdWx0ID0gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCoodTMyICopKF9BZGRyQSkgIT0gKih1MzIgKikoX0FkZHJCKSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlfUmVzdWx0ID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKih1MTYgKikoJigoX0FkZHJBKVs0XSkpICE9ICoodTE2ICopKCYoKF9BZGRyQilbNF0pKSkgICAgICAgIFwKKwlfUmVzdWx0ID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2lmIGRlZmluZWQoQ09ORklHX1g4Nl82NCkgfHwgZGVmaW5lZChDT05GSUdfSUE2NCkKKyNkZWZpbmUgICBTTElDX0dFVF9BRERSX0xPVyhfYWRkcikgICh1MzIpKCh1NjQpKF9hZGRyKSAmIFwKKwkweDAwMDAwMDAwRkZGRkZGRkYpCisjZGVmaW5lICAgU0xJQ19HRVRfQUREUl9ISUdIKF9hZGRyKSAgKHUzMikoKCh1NjQpKF9hZGRyKSA+PiAzMikgJiBcCisJMHgwMDAwMDAwMEZGRkZGRkZGKQorI2Vsc2UKKyNkZWZpbmUgICBTTElDX0dFVF9BRERSX0xPVyhfYWRkcikgICAodTMyKV9hZGRyCisjZGVmaW5lICAgU0xJQ19HRVRfQUREUl9ISUdIKF9hZGRyKSAgKHUzMikwCisjZW5kaWYKKworI2RlZmluZSBGTFVTSCAgICAgICBUUlVFCisjZGVmaW5lIERPTlRfRkxVU0ggIEZBTFNFCisKKyNkZWZpbmUgU0lPQ1NMSUNEVU1QQ0FSRCAgICAgICAgIChTSU9DREVWUFJJVkFURSs5KQorI2RlZmluZSBTSU9DU0xJQ1NFVElOVEFHRyAgICAgICAgKFNJT0NERVZQUklWQVRFKzEwKQorI2RlZmluZSBTSU9DU0xJQ1RSQUNFRFVNUCAgICAgICAgKFNJT0NERVZQUklWQVRFKzExKQorCisjZW5kaWYgLyogIF9fU0xJQ19EUklWRVJfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljX29zLmggYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljX29zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjNjc4NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNfb3MuaApAQCAtMCwwICsxLDg0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgKGMpMjAwMC0yMDAyIEFsYWNyaXRlY2gsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBTEFDUklURUNILCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQUxBQ1JJVEVDSCwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiBUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcKKyAqIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBGSUxFTkFNRTogc2xpY19vcy5oCisgKgorICogVGhlc2UgYXJlIHRoZSBMaW51eC1zcGVjaWZpYyBkZWZpbml0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFNMSUNPU1MKKyAqIGRyaXZlciwgd2hpY2ggc2hvdWxkIGFsbG93IGZvciBncmVhdGVyIHBvcnRhYmlsaXR5IHRvIG90aGVyIE9TZXMuCisgKi8KKyNpZm5kZWYgX1NMSUNfT1NfU1BFQ0lGSUNfSF8KKyNkZWZpbmUgX1NMSUNfT1NfU1BFQ0lGSUNfSF8KKworI2RlZmluZSBGQUxTRSAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBUUlVFICAgICAgICAgICAgICAgICgxKQorCisjZGVmaW5lIFNMSUNfU0VDU19UT19KSUZGUyh4KSAgKCh4KSAqIEhaKQorI2RlZmluZSBTTElDX01TX1RPX0pJRkZJRVMoeCkgIChTTElDX1NFQ1NfVE9fSklGRlMoKHgpKSAvIDEwMDApCisKKyNpZmRlZiBERUJVR19SRUdJU1RFUl9UUkFDRQorI2RlZmluZSBXUklURV9SRUcocmVnLCB2YWx1ZSwgZmx1c2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQlhZGFwdGVyLT5jYXJkLT5yZWdfdHlwZVthZGFwdGVyLT5jYXJkLT5kZWJ1Z19peF0gPSAwOyAgIFwKKwkJYWRhcHRlci0+Y2FyZC0+cmVnX29mZnNldFthZGFwdGVyLT5jYXJkLT5kZWJ1Z19peF0gPSBcCisJCSgodW5zaWduZWQgY2hhciAqKSgmcmVnKSkgLSBcCisJCSgodW5zaWduZWQgY2hhciAqKWFkYXB0ZXItPnNsaWNfcmVncyk7IFwKKwkJYWRhcHRlci0+Y2FyZC0+cmVnX3ZhbHVlW2FkYXB0ZXItPmNhcmQtPmRlYnVnX2l4KytdID0gdmFsdWU7ICBcCisJCWlmIChhZGFwdGVyLT5jYXJkLT5kZWJ1Z19peCA9PSAzMikgXAorCQkJYWRhcHRlci0+Y2FyZC0+ZGVidWdfaXggPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCisJCXNsaWNfcmVnMzJfd3JpdGUoKCZyZWcpLCAodmFsdWUpLCAoZmx1c2gpKTsgICAgICAgICAgICBcCisJfQorI2RlZmluZSBXUklURV9SRUc2NChhLCByZWcsIHZhbHVlLCByZWdoLCB2YWxoLCBmbHVzaCkgICAgICAgICAgICAgICAgICAgICAgICBcCisJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQlhZGFwdGVyLT5jYXJkLT5yZWdfdHlwZVthZGFwdGVyLT5jYXJkLT5kZWJ1Z19peF0gPSAxOyAgICAgICAgXAorCQlhZGFwdGVyLT5jYXJkLT5yZWdfb2Zmc2V0W2FkYXB0ZXItPmNhcmQtPmRlYnVnX2l4XSA9IFwKKwkJKCh1bnNpZ25lZCBjaGFyICopKCZyZWcpKSAtIFwKKwkJKCh1bnNpZ25lZCBjaGFyICopYWRhcHRlci0+c2xpY19yZWdzKTsgXAorCQlhZGFwdGVyLT5jYXJkLT5yZWdfdmFsdWVbYWRhcHRlci0+Y2FyZC0+ZGVidWdfaXhdID0gdmFsdWU7ICAgXAorCQlhZGFwdGVyLT5jYXJkLT5yZWdfdmFsdWVoW2FkYXB0ZXItPmNhcmQtPmRlYnVnX2l4KytdID0gdmFsaDsgIFwKKwkJaWYgKGFkYXB0ZXItPmNhcmQtPmRlYnVnX2l4ID09IDMyKSBcCisJCQlhZGFwdGVyLT5jYXJkLT5kZWJ1Z19peCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKKwkJc2xpY19yZWc2NF93cml0ZSgoYSksICgmcmVnKSwgKHZhbHVlKSwgKCZyZWdoKSwgKHZhbGgpLCBcCisJCQkJKGZsdXNoKSk7XAorCX0KKyNlbHNlCisjZGVmaW5lIFdSSVRFX1JFRyhyZWcsIHZhbHVlLCBmbHVzaCkgXAorCXNsaWNfcmVnMzJfd3JpdGUoKCZyZWcpLCAodmFsdWUpLCAoZmx1c2gpKQorI2RlZmluZSBXUklURV9SRUc2NChhLCByZWcsIHZhbHVlLCByZWdoLCB2YWxoLCBmbHVzaCkgXAorCXNsaWNfcmVnNjRfd3JpdGUoKGEpLCAoJnJlZyksICh2YWx1ZSksICgmcmVnaCksICh2YWxoKSwgKGZsdXNoKSkKKyNlbmRpZgorCisjZW5kaWYgIC8qIF9TTElDX09TX1NQRUNJRklDX0hfICAqLworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljYnVpbGQuaCBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNidWlsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDVlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljYnVpbGQuaApAQCAtMCwwICsxLDk2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBBbGFjcml0ZWNoLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQUxBQ1JJVEVDSCwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFMQUNSSVRFQ0gsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uCisgKiBhcmUgdGhvc2Ugb2YgdGhlIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nCisgKiBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLCBvZiBBbGFjcml0ZWNoLCBJbmMuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRklMRU5BTUU6IHNsaWNidWlsZC5oCisgKgorICogVGhlIGZvbGxvd2luZyBjb250YWlucyB0aGUgY29tcGlsZXIgZGlyZWN0aXZlIHN3aXRjaGVzIHVzZWQgZm9yCisgKiBkaWZmZXJlbnQgU0xJQyBidWlsZCBvcHRpb25zLiAgVGhleSBjYW4gYWxsIGJlIHNldCBpbiB0aGUgTWFrZWZpbGUKKyAqIGJ1dCB0aGUgZGVmYXVsdHMgYXJlIGRlZmluZWQgaGVyZS4KKyAqLworI2lmbmRlZiBfU0xJQ19CVUlMRF9IXworI2RlZmluZSBfU0xJQ19CVUlMRF9IXworCisjaWZuZGVmIFNMSUNfUFJPRFVDVElPTl9CVUlMRAorI2RlZmluZSBTTElDX1BST0RVQ1RJT05fQlVJTEQJCQkxCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19GQUlMVVJFX1JFU0VUCisjZGVmaW5lIFNMSUNfRkFJTFVSRV9SRVNFVAkJCTEKKyNlbmRpZgorI2RlZmluZSBEQkcgICAgICAgICAgICAgICAgICAgICAgICAgMQorI2lmbmRlZiBTTElDX0FTU0VSVF9FTkFCTEVECisjZGVmaW5lIFNMSUNfQVNTRVJUX0VOQUJMRUQJCQkxCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19NQ0FTVF9FTkFCTEVECisjZGVmaW5lIFNMSUNfTUNBU1RfRU5BQkxFRAkJCTEKKyNlbmRpZgorI2lmbmRlZiBTTElDX0dFVF9TVEFUU19FTkFCTEVECisjZGVmaW5lIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQJCQkxCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19HRVRfU1RBVFNfVElNRVJfRU5BQkxFRAorI2RlZmluZSBTTElDX0dFVF9TVEFUU19USU1FUl9FTkFCTEVECQkwCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19QSU5HX1RJTUVSX0VOQUJMRUQKKyNkZWZpbmUgU0xJQ19QSU5HX1RJTUVSX0VOQUJMRUQJCTEKKyNlbmRpZgorI2lmbmRlZiBTTElDX0lPQ1RMX1NVUFBPUlRfRU5BQkxFRAorI2RlZmluZSBTTElDX0lPQ1RMX1NVUFBPUlRfRU5BQkxFRAkJMQorI2VuZGlmCisjaWZuZGVmIEFUS19ERUJVRworI2RlZmluZSBBVEtfREVCVUcJCQkJMQorI2VuZGlmCisjaWZuZGVmIFNMSUNfUE9XRVJfTUFOQUdFTUVOVF9FTkFCTEVECisjZGVmaW5lIFNMSUNfUE9XRVJfTUFOQUdFTUVOVF9FTkFCTEVECQkwCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19JTlRFUlJVUFRfUFJPQ0VTU19MSU1JVAorI2RlZmluZSBTTElDX0lOVEVSUlVQVF9QUk9DRVNTX0xJTUlUCQkxCisjZW5kaWYKKyNpZm5kZWYgTElOVVhfRlJFRVNfQURBUFRFUl9SRVNPVVJDRVMKKyNkZWZpbmUgTElOVVhfRlJFRVNfQURBUFRFUl9SRVNPVVJDRVMJCTEKKyNlbmRpZgorI2lmbmRlZiBTTElDX09GRkxPQURfSVBfQ0hFQ0tTVU0KKyNkZWZpbmUgU0xJQ19PRkZMT0FEX0lQX0NIRUNLU1VNCQkxCisjZW5kaWYKKyNpZm5kZWYgU0xJQ19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQKKyNkZWZpbmUgU0xJQ19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQJCTAKKyNlbmRpZgorI2lmbmRlZiBTVEFUU19USU1FUl9JTlRFUlZBTAorI2RlZmluZSBTVEFUU19USU1FUl9JTlRFUlZBTAkJCTIKKyNlbmRpZgorI2lmbmRlZiBQSU5HX1RJTUVSX0lOVEVSVkFMCisjZGVmaW5lIFBJTkdfVElNRVJfSU5URVJWQUwJCQkxCisjZW5kaWYKKworI2VuZGlmICAgLyogX1NMSUNfQlVJTERfSF8gICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljZGJnLmggYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljZGJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU0ZTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNkYmcuaApAQCAtMCwwICsxLDEwMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDIgQWxhY3JpdGVjaCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFMQUNSSVRFQ0gsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTEFDUklURUNILCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbgorICogYXJlIHRob3NlIG9mIHRoZSBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZworICogb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZCwgb2YgQWxhY3JpdGVjaCwgSW5jLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZJTEVOQU1FOiBzbGljZGJnLmgKKyAqCisgKiBBbGwgZGVidWcgYW5kIGFzc2VydGlvbi1iYXNlZCBkZWZpbml0aW9ucyBhbmQgbWFjcm9zIGFyZSBpbmNsdWRlZAorICogaW4gdGhpcyBmaWxlIGZvciB0aGUgU0xJQ09TUyBkcml2ZXIuCisgKi8KKyNpZm5kZWYgX1NMSUNfREVCVUdfSF8KKyNkZWZpbmUgX1NMSUNfREVCVUdfSF8KKworI2lmZGVmIFNMSUNfREVGQVVMVF9MT0dfTEVWRUwKKyNlbHNlCisjZGVmaW5lIFNMSUNMRVZFTCAgIEtFUk5fREVCVUcKKyNlbmRpZgorI2RlZmluZSBTTElDX0RJU1BMQVkgICAgICAgICAgICAgIHByaW50aworI2RlZmluZSBEQkdfRVJST1IobiwgYXJncy4uLikgICBTTElDX0RJU1BMQVkoS0VSTl9FTUVSRyBuLCAjI2FyZ3MpCisKKyNkZWZpbmUgU0xJQ19ERUJVR19NRVNTQUdFIDEKKyNpZiBTTElDX0RFQlVHX01FU1NBR0UKKy8qI2RlZmluZSBEQkdfTVNHKG4sIGFyZ3MuLi4pICAgICAgU0xJQ19ESVNQTEFZKFNMSUNMRVZFTCBuLCAjI2FyZ3MpKi8KKyNkZWZpbmUgREJHX01TRyhuLCBhcmdzLi4uKQorI2Vsc2UKKyNkZWZpbmUgREJHX01TRyhuLCBhcmdzLi4uKQorI2VuZGlmCisKKyNpZmRlZiBBU1NFUlQKKyN1bmRlZiBBU1NFUlQKKyNlbmRpZgorCisjaWYgU0xJQ19BU1NFUlRfRU5BQkxFRAorI2lmZGVmIENPTkZJR19YODZfNjQKKyNkZWZpbmUgVkFMSURfQUREUkVTUyhwKSAgKDEpCisjZWxzZQorI2RlZmluZSBWQUxJRF9BRERSRVNTKHApICAoKCh1MzIpKHApICYgMHg4MDAwMDAwMCkgfHwgKCh1MzIpKHApID09IDApKQorI2VuZGlmCisjaWZuZGVmIEFTU0VSVAorI2RlZmluZSBBU1NFUlQoYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWlmICghKGEpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCURCR19FUlJPUigiQVNTRVJUKCkgRmFpbHVyZTogZmlsZSAlcywgZnVuY3Rpb24gJXMgIGxpbmUgJWRcbiIsXAorCQlfX0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9fKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJc2xpY19hc3NlcnRfZmFpbCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorI2VuZGlmCisjaWZuZGVmIEFTU0VSVE1TRworI2RlZmluZSBBU1NFUlRNU0coYSxtc2cpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlpZiAoIShhKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCURCR19FUlJPUigiQVNTRVJUKCkgRmFpbHVyZTogZmlsZSAlcywgZnVuY3Rpb24gJXMiXAorCQkJImxpbmUgJWQ6ICVzXG4iLFwKKwkJCV9fRklMRV9fLCBfX2Z1bmNfXywgX19MSU5FX18sIChtc2cpKTsgICAgICAgICAgICBcCisJCXNsaWNfYXNzZXJ0X2ZhaWwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisjZW5kaWYKKyNlbHNlCisjaWZuZGVmIEFTU0VSVAorI2RlZmluZSBBU1NFUlQoYSkKKyNlbmRpZgorI2lmbmRlZiBBU1NFUlRNU0cKKyNkZWZpbmUgQVNTRVJUTVNHKGEsIG1zZykKKyNlbmRpZgorI2VuZGlmIC8qIFNMSUNfQVNTRVJUX0VOQUJMRUQgICovCisKKyNlbmRpZiAgLyogIF9TTElDX0RFQlVHX0hfICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpY2R1bXAuaCBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNkdW1wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJhOWI0NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNkdW1wLmgKQEAgLTAsMCArMSwyNzggQEAKKy8qCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDIgQWxhY3JpdGVjaCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQUxBQ1JJVEVDSCwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFMQUNSSVRFQ0gsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogTk8gTElDRU5TRSBUTyBBTlkgQUxBQ1JJVEVDSCBQQVRFTlQgQ0xBSU0gSVMgR1JBTlRFRCBCWSBBTlkgQ09QWVJJR0hUCisgKiBMSUNFTlNFIFRPIFRISVMgT1IgT1RIRVIgU09GVFdBUkUuIFRISVMgU09GVFdBUkUgTUFZIEJFIENPVkVSRUQgQlkKKyAqIEFMQUNSSVRFQ0ggUEFURU5UUyBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFUuUy4gUEFURU5UIE5PUy4gNiwyMjYsNjgwLAorICogNiwyNDcsMDYwLCA2LDMzNCwxNTMsIDYsMzg5LDQ3OSwgNiwzOTMsNDg3LCA2LDQyNywxNzEsIDYsNDI3LDE3MworICogYW5kIDYsNDM0LDYyMC4KKyAqIFRISVMgU09GVFdBUkUgSVMgTk9UIFNVQkpFQ1QgVE8gVEhFIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIChHUEwpLgorICoKKyAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQKKyAqIGRvY3VtZW50YXRpb24gYXJlIHRob3NlIG9mIHRoZSBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlCisgKiBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlcgorICogZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqLworI2lmbmRlZiBfU0xJQ19EVU1QX0hfCisjZGVmaW5lIF9TTElDX0RVTVBfSF8KKworI2RlZmluZSBERUJVR19TVUNDRVNTICAgMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBVdGlsaXR5IHByb2Nlc3NvciByZWdpc3RlciBsb2NhdGlvbnMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgVVRJTElUWV9SRVNFVCAgICAgICAweDAKKyNkZWZpbmUgVVRJTElUWV9JU1BfQUREUiAgICAweDQgICAgIC8qIEludGVycnVwdCBzdGF0dXMgUG9pbnRlciAqLworI2RlZmluZSBVVElMSVRZX0lTUl9BRERSICAgIDB4OCAgICAgLyogSW50ZXJydXB0IHN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVVElMSVRZX0lDUl9BRERSICAgIDB4YyAgICAgLyogSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVVRJTElUWV9DUFJfQUREUiAgICAweDEwICAgIC8qIENvbW1hbmQgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBVVElMSVRZX0RQUl9BRERSICAgIDB4MTQgICAgLyogRGF0YSBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFVUSUxJVFlfRE1QX1RSUSAgICAgMHgxOCAgICAvKiBEdW1wIHF1ZXVlIG9udG8gQUxVIGZvciBhbmFseXNlciAqLworI2RlZmluZSBVVElMSVRZX1VQUF9BRERSICAgIDB4MWMgICAgLyogQml0cyA2My0zMiBvZiBjbWQvZGF0YSBwb2ludGVyICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIElOSUMgc3RhdHVzIHJlZ2lzdGVyIGJpdHMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFNMSUNfSVNSX0NDICAgICAgICAgMHgxMDAwMDAwMCAgLyogQ29tbWFuZCBjb21wbGV0ZSAtIHN5bmNocm9ub3VzICovCisjZGVmaW5lIFNMSUNfSVNSX0VSUiAgICAgICAgMHgwMTAwMDAwMCAgLyogQ29tbWFuZCBFcnJvciAtIHN5bmNocm9ub3VzICovCisjZGVmaW5lIFNMSUNfSVNSX0NNRF9NQVNLICAgMHgxMTAwMDAwMCAgLyogQ29tbWFuZCBzdGF0dXMgbWFzayAqLworI2RlZmluZSBTTElDX0lTUl9UUEggICAgICAgIDB4MDAwODAwMDAgIC8qIFRyYW5zbWl0IHByb2Nlc3NvciBoYWx0ZWQgLSBhc3luYyAqLworI2RlZmluZSBTTElDX0lTUl9SUEggICAgICAgIDB4MDAwNDAwMDAgIC8qIFJlY2VpdmUgcHJvY2Vzc29yIGhhbHRlZCAtIGFzeW5jICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIElOSUMgQ29udHJvbCByZWdpc3RlciB2YWx1ZXMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFNMSUNfSUNSX09GRiAgICAgICAgMCAgICAgICAgICAgLyogSW50ZXJydXB0cyBkaXNhYmxlZCAqLworI2RlZmluZSBTTElDX0lDUl9PTiAgICAgICAgIDEgICAgICAgICAgIC8qIEludGVycnVwdHMgZW5hYmxlZCAqLworI2RlZmluZSBTTElDX0lDUl9NQVNLICAgICAgIDIgICAgICAgICAgIC8qIEludGVycnVwdHMgbWFza2VkICovCisKKyNkZWZpbmUgV1JJVEVfRFJFRyhyZWcsIHZhbHVlLCBmbHVzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdyaXRlbCgodmFsdWUpLCAocmVnKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKGZsdXNoKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCW1iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvbW1hbmQgRm9ybWF0CisgKgorICogRWFjaCBjb21tYW5kIGNvbnRhaW5zIGEgY29tbWFuZCBieXRlIHdoaWNoIGlzIGRlZmluZWQgYXMgZm9sbG93czoKKyAqCisgKiAgYml0czogICA3LTMgICAgIDIgICAgICAgMS0wCisgKiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgY29tbWFuZCAgICAgQWx0LiBQcm9jICAgUHJvY2Vzc29yCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIE1hY3JvIHRvIGNyZWF0ZSB0aGUgY29tbWFuZCBieXRlIGdpdmVuIHRoZSBjb21tYW5kLCBBbHQuIFByb2MsIGFuZAorICogUHJvY2Vzc29yIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgbWFjcm8gYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZXMgYXJlCisgKiBwcmVzaGlmdGVkLiAgVGhhdCBpcywgdGhlIHZhbHVlcyBmb3IgYWx0LiBwcm9jIGFyZSAwIGZvciB0cmFuc21pdCBhbmQKKyAqIDQgZm9yIHJlY2VpdmUuCisgKi8KKyNkZWZpbmUgQ09NTUFORF9CWVRFKGNvbW1hbmQsIGFsdF9wcm9jLCBwcm9jKSAoKGNvbW1hbmQpIHwgKGFsdF9wcm9jKSB8IChwcm9jKSkKKworLyoKKyAqIENvbW1hbmQgdmFsdWVzCisgKi8KKyNkZWZpbmUgQ01EX0hBTFQgICAgICAgIDB4MCAgICAgLyogU2VuZCBhIGhhbHQgdG8gdGhlIElOSUMgKi8KKyNkZWZpbmUgQ01EX1JVTiAgICAgICAgIDB4OCAgICAgLyogU3RhcnQgdGhlIGhhbHRlZCBJTklDICovCisjZGVmaW5lIENNRF9TVEVQICAgICAgICAweDEwICAgIC8qIFNpbmdsZSBzdGVwIHRoZSBpbmljICovCisjZGVmaW5lIENNRF9CUkVBSyAgICAgICAweDE4ICAgIC8qIFNldCBhIGJyZWFrcG9pbnQgLSA4IGJ5dGUgY29tbWFuZCAqLworI2RlZmluZSBDTURfUkVTRVRfQlJFQUsgMHgyMCAgICAvKiBSZXNldCBhIGJyZWFrcG9pbnQgLSA4IGJ5dGUgY21kICovCisjZGVmaW5lIENNRF9EVU1QICAgICAgICAweDI4ICAgIC8qIER1bXAgSU5JQyBtZW1vcnkgLSA4IGJ5dGUgY29tbWFuZCAqLworI2RlZmluZSBDTURfTE9BRCAgICAgICAgMHgzMCAgICAvKiBMb2FkIElOSUMgbWVtb3J5IC0gOCBieXRlIGNvbW1hbmQgKi8KKyNkZWZpbmUgQ01EX01BUCAgICAgICAgIDB4MzggICAgLyogTWFwIG91dCBhIFJPTSBpbnN0cnVjdGlvbiAtIDggQkMgKi8KKyNkZWZpbmUgQ01EX0NBTV9PUFMgICAgIDB4MzggICAgLyogcGVyZm9ybSBvcHMgb24gc3BlY2lmaWMgQ0FNICovCisjZGVmaW5lIENNRF9YTVQgICAgICAgICAweDQwICAgIC8qIFRyYW5zbWl0IGZyYW1lICovCisjZGVmaW5lIENNRF9SQ1YgICAgICAgICAweDQ4ICAgIC8qIFJlY2VpdmUgZnJhbWUgKi8KKworLyoKKyAqIEFsdC4gUHJvYyB2YWx1ZXMKKyAqCisgKiBXaGVuIHRoZSBwcm9jIHZhbHVlIGlzIHNldCB0byB0aGUgdXRpbGl0eSBwcm9jZXNzb3IsIHRoZSBBbHQuIFByb2MKKyAqIHNwZWNpZmllcyB3aGljaCBwcm9jZXNzb3IgaGFuZGxlcyB0aGUgZGVidWdnaW5nLgorICovCisjZGVmaW5lIEFMVF9QUk9DX1RSQU5TTUlUICAgMHgwCisjZGVmaW5lIEFMVF9QUk9DX1JFQ0VJVkUgICAgMHg0CisKKy8qCisgKiBQcm9jIHZhbHVlcworICovCisjZGVmaW5lIFBST0NfSU5WQUxJRCAgICAgICAgMHgwCisjZGVmaW5lIFBST0NfTk9ORSAgICAgICAgICAgMHgwICAvKiBHaWdhYml0IHVzZSAqLworI2RlZmluZSBQUk9DX1RSQU5TTUlUICAgICAgIDB4MQorI2RlZmluZSBQUk9DX1JFQ0VJVkUgICAgICAgIDB4MgorI2RlZmluZSBQUk9DX1VUSUxJVFkgICAgICAgIDB4MworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogOCBieXRlIGNvbW1hbmQgc3RydWN0dXJlIGRlZmluaXRpb25zCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEJyZWFrIGFuZCBSZXNldCBCcmVhayBjb21tYW5kIHN0cnVjdHVyZQorICovCitzdHJ1Y3QgQlJFQUsgeworICAgIHVuc2lnbmVkIGNoYXIgICAgIGNvbW1hbmQ7ICAgIC8qIENvbW1hbmQgd29yZCBkZWZpbmVkIGFib3ZlICovCisgICAgdW5zaWduZWQgY2hhciAgICAgcmVzdmQ7CisgICAgdXNob3J0ICAgIGNvdW50OyAgICAgIC8qIE51bWJlciBvZiBleGVjdXRpb25zIGJlZm9yZSBicmVhayAqLworICAgIHUzMiAgIGFkZHI7ICAgICAgIC8qIEFkZHJlc3Mgb2YgYnJlYWsgcG9pbnQgKi8KK307CisKKy8qCisgKiBEdW1wIGFuZCBMb2FkIGNvbW1hbmQgc3RydWN0dXJlCisgKi8KK3N0cnVjdCBkdW1wX2NtZCB7CisgICAgdW5zaWduZWQgY2hhciAgICAgY21kOyAgICAgICAgLyogQ29tbWFuZCB3b3JkIGRlZmluZWQgYWJvdmUgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgICBkZXNjOyAgICAgICAvKiBEZXNjcmlwdG9yIHZhbHVlcyAtIGRlZmluZWQgYmVsb3cgKi8KKyAgICB1c2hvcnQgICAgY291bnQ7ICAgICAgLyogbnVtYmVyIG9mIDQgYnl0ZSB3b3JkcyB0byBiZSB0cmFuc2ZlcnJlZCAqLworICAgIHUzMiAgIGFkZHI7ICAgICAgIC8qIHN0YXJ0IGFkZHJlc3Mgb2YgZHVtcCBvciBsb2FkICovCit9OworCisvKgorICogUmVjZWl2ZSBvciBUcmFuc21pdCBhIGZyYW1lLgorICovCitzdHJ1Y3QgUkNWX09SX1hNVF9GUkFNRSB7CisgICAgdW5zaWduZWQgY2hhciAgICAgY29tbWFuZDsgICAgLyogQ29tbWFuZCB3b3JkIGRlZmluZWQgYWJvdmUgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgICBNYWNJZDsgICAgICAvKiBNYWMgSUQgb2YgaW50ZXJmYWNlIC0gdHJhbnNtaXQgb25seSAqLworICAgIHVzaG9ydCAgICBjb3VudDsgICAgICAvKiBMZW5ndGggb2YgZnJhbWUgaW4gYnl0ZXMgKi8KKyAgICB1MzIgICBwYWQ7ICAgICAgICAvKiBub3QgdXNlZCAqLworfTsKKworLyoKKyAqIFZhbHVlcyBvZiBkZXNjIGZpZWxkIGluIERVTVBfT1JfTE9BRCBzdHJ1Y3R1cmUKKyAqLworI2RlZmluZSBERVNDX1JGSUxFICAgICAgICAgIDB4MCAgICAgLyogUmVnaXN0ZXIgZmlsZSAqLworI2RlZmluZSBERVNDX1NSQU0gICAgICAgICAgIDB4MSAgICAgLyogU1JBTSAqLworI2RlZmluZSBERVNDX0RSQU0gICAgICAgICAgIDB4MiAgICAgLyogRFJBTSAqLworI2RlZmluZSBERVNDX1FVRVVFICAgICAgICAgIDB4MyAgICAgLyogcXVldWVzICovCisjZGVmaW5lIERFU0NfUkVHICAgICAgICAgICAgMHg0ICAgICAvKiBHZW5lcmFsIHJlZ2lzdGVycyAocGMsIHN0YXR1cywgZXRjKSAqLworI2RlZmluZSBERVNDX1NFTlNFICAgICAgICAgIDB4NSAgICAgLyogU2Vuc2UgcmVnaXN0ZXIgKi8KKworLyogRGVzY3JpcHRvciBmaWVsZCBkZWZpbml0aW9ucyBmb3IgQ01EX0RVTVBfQ0FNICovCisjZGVmaW5lIERVTVBfQ0FNX0EgICAgICAgICAgICAgIDAKKyNkZWZpbmUgRFVNUF9DQU1fQiAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgIC8qIHVudXNlZCBhdCBwcmVzZW50ICovCisjZGVmaW5lIERVTVBfQ0FNX0MgICAgICAgICAgICAgIDIKKyNkZWZpbmUgRFVNUF9DQU1fRCAgICAgICAgICAgICAgMworI2RlZmluZSBTRUFSQ0hfQ0FNX0EgICAgICAgICAgICA0CisjZGVmaW5lIFNFQVJDSF9DQU1fQyAgICAgICAgICAgIDUKKworLyoKKyAqIE1hcCBjb21tYW5kIHRvIHJlcGxhY2UgYSBjb21tYW5kIGluIFJPTSB3aXRoIGEgY29tbWFuZCBpbiBXQ1MKKyAqLworc3RydWN0IE1BUCB7CisgICAgdW5zaWduZWQgY2hhciAgIGNvbW1hbmQ7ICAgIC8qIENvbW1hbmQgd29yZCBkZWZpbmVkIGFib3ZlICovCisgICAgdW5zaWduZWQgY2hhciAgIG5vdF91c2VkWzNdOworICAgIHVzaG9ydCAgbWFwX3RvOyAgICAgLyogSW5zdHJ1Y3Rpb24gYWRkcmVzcyBpbiBXQ1MgKi8KKyAgICB1c2hvcnQgIG1hcF9vdXQ7ICAgIC8qIEluc3RydWN0aW9uIGFkZHJlc3MgaW4gUk9NICovCit9OworCisvKgorICogTWlzYyBkZWZpbml0aW9ucworICovCisjZGVmaW5lIFNMSUNfTUFYX1FVRVVFICAgICAgIDMyIC8qIFRvdGFsICMgb2YgcXVldWVzIG9uIHRoZSBJTklDICgwLTMxKSovCisjZGVmaW5lIFNMSUNfNE1BWF9SRUcgICAgICAgNTEyIC8qIFRvdGFsICMgb2YgNC1wb3J0IGZpbGUtcmVnaXN0ZXJzICAgICovCisjZGVmaW5lIFNMSUNfMU1BWF9SRUcgICAgICAgMzg0IC8qIFRvdGFsICMgb2YgZmlsZS1yZWdpc3RlcnMgICAgICAgICAgICovCisjZGVmaW5lIFNMSUNfR0JNQVhfUkVHICAgICAxMDI0IC8qIFRvdGFsICMgb2YgR2JpdCBmaWxlLXJlZ2lzdGVycyAgICAgICovCisjZGVmaW5lIFNMSUNfTlVNX1JFRyAgICAgICAgIDMyIC8qIG5vbi1maWxlLXJlZ2lzdGVycyA9IE5VTV9SRUcgaW4gdG0tc2ltYmEuaCAqLworI2RlZmluZSBTTElDX0dCX0NBTUFfU1pFICAgICAzMgorI2RlZmluZSBTTElDX0dCX0NBTUJfU1pFICAgICAxNgorI2RlZmluZSBTTElDX0dCX0NBTUFCX1NaRSAgICAzMgorI2RlZmluZSBTTElDX0dCX0NBTUNfU1pFICAgICAxNgorI2RlZmluZSBTTElDX0dCX0NBTURfU1pFICAgICAxNgorI2RlZmluZSBTTElDX0dCX0NBTUNEX1NaRSAgICAzMgorCisvKgorICogQ29yZWR1bXAgaGVhZGVyIHN0cnVjdHVyZQorICovCitzdHJ1Y3QgQ09SRV9RIHsKKyAgICB1MzIgICBxdWV1ZU9mZjsgICAgICAgICAgIC8qIE9mZnNldCBvZiBxdWV1ZSAqLworICAgIHUzMiAgIHF1ZXVlc2l6ZTsgICAgICAgICAgLyogc2l6ZSBvZiBxdWV1ZSAqLworfTsKKworI2RlZmluZSBEUklWRVJfTkFNRV9TSVpFICAgIDMyCisKK3N0cnVjdCBzbGljY29yZV9oZHIgeworICAgIHVuc2lnbmVkIGNoYXIgZHJpdmVyX3ZlcnNpb25bRFJJVkVSX05BTUVfU0laRV07IC8qIERyaXZlciB2ZXJzaW9uIHN0cmluZyAqLworICAgIHUzMiAgIFJjdlJlZ09mZjsgICAgICAgICAgLyogT2Zmc2V0IG9mIHJlY2VpdmUgcmVnaXN0ZXJzICovCisgICAgdTMyICAgUmN2UmVnc2l6ZTsgICAgICAgICAvKiBzaXplIG9mIHJlY2VpdmUgcmVnaXN0ZXJzICovCisgICAgdTMyICAgWG10UmVnT2ZmOyAgICAgICAgICAvKiBPZmZzZXQgb2YgdHJhbnNtaXQgcmVnaXN0ZXJzICovCisgICAgdTMyICAgWG10UmVnc2l6ZTsgICAgICAgICAvKiBzaXplIG9mIHRyYW5zbWl0IHJlZ2lzdGVycyAqLworICAgIHUzMiAgIEZpbGVSZWdPZmY7ICAgICAgICAgLyogT2Zmc2V0IG9mIHJlZ2lzdGVyIGZpbGUgKi8KKyAgICB1MzIgICBGaWxlUmVnc2l6ZTsgICAgICAgIC8qIHNpemUgb2YgcmVnaXN0ZXIgZmlsZSAqLworICAgIHUzMiAgIFNyYW1PZmY7ICAgICAgICAgICAgLyogT2Zmc2V0IG9mIFNyYW0gKi8KKyAgICB1MzIgICBTcmFtc2l6ZTsgICAgICAgICAgIC8qIHNpemUgb2YgU3JhbSAqLworICAgIHUzMiAgIERyYW1PZmY7ICAgICAgICAgICAgLyogT2Zmc2V0IG9mIERyYW0gKi8KKyAgICB1MzIgICBEcmFtc2l6ZTsgICAgICAgICAgIC8qIHNpemUgb2YgRHJhbSAqLworICAgIENPUkVfUSAgICBxdWV1ZXNbU0xJQ19NQVhfUVVFVUVdOyAvKiBzaXplIGFuZCBvZmZzZXRzIG9mIHF1ZXVlcyAqLworICAgIHUzMiAgIENhbUFNT2ZmOyAgICAgICAgICAgLyogT2Zmc2V0IG9mIENBTSBBIGNvbnRlbnRzICovCisgICAgdTMyICAgQ2FtQVNpemU7ICAgICAgICAgICAvKiBTaXplIG9mIENhbSBBICovCisgICAgdTMyICAgQ2FtQk1PZmY7ICAgICAgICAgICAvKiBPZmZzZXQgb2YgQ0FNIEIgY29udGVudHMgKi8KKyAgICB1MzIgICBDYW1CU2l6ZTsgICAgICAgICAgIC8qIFNpemUgb2YgQ2FtIEIgKi8KKyAgICB1MzIgICBDYW1DTU9mZjsgICAgICAgICAgIC8qIE9mZnNldCBvZiBDQU0gQyBjb250ZW50cyAqLworICAgIHUzMiAgIENhbUNTaXplOyAgICAgICAgICAgLyogU2l6ZSBvZiBDYW0gQyAqLworICAgIHUzMiAgIENhbURNT2ZmOyAgICAgICAgICAgLyogT2Zmc2V0IG9mIENBTSBEIGNvbnRlbnRzICovCisgICAgdTMyICAgQ2FtRFNpemU7ICAgICAgICAgICAvKiBTaXplIG9mIENhbSBEICovCit9OworCisvKgorICogZGVmaW5pdGlvbnMgbmVlZGVkIGZvciBvdXIga2VybmVsLW1vZGUgZ2RiIHN0dWIuCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERlZmluaXRpb25zICYgVHlwZWRlZnMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQlVGTUFYICAgICAgMHgyMDAwMCAvKiAxMjhrIC0gc2l6ZSBvZiBpbnB1dC9vdXRwdXQgYnVmZmVyICovCisjZGVmaW5lIEJVRk1BWFAyICAgIDUgICAgICAgLyogMioqNSAoMzIpIDRLIHBhZ2VzICovCisKKyNkZWZpbmUgSU9DVExfU0lNQkFfQlJFQUsgICAgICAgICAgIF9JT1coJ3MnLCAwLCB1bnNpZ25lZCBsb25nKQorLyogI2RlZmluZSBJT0NUTF9TSU1CQV9JTklUICAgICAgICAgICAgX0lPVygncycsIDEsIHVuc2lnbmVkIGxvbmcpICovCisjZGVmaW5lIElPQ1RMX1NJTUJBX0tJTExfVEdUX1BST0MgICBfSU9XKCdzJywgMiwgdW5zaWduZWQgbG9uZykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR2xvYmFsIHZhcmlhYmxlcworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBUSFJFQURSRUNFSVZFICAgMSAgIC8qIGJpdCAwIG9mIFN0b3BwZWRUaHJlYWRzICovCisjZGVmaW5lIFRIUkVBRFRSQU5TTUlUICAyICAgLyogYml0IDEgb2YgU3RvcHBlZFRocmVhZHMgKi8KKyNkZWZpbmUgVEhSRUFEQk9USCAgICAgIDMgICAvKiBiaXQgMCBhbmQgMS4uICovCisKKyNlbmRpZiAgLyogIF9TTElDX0RVTVBfSCAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNody5oIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpY2h3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzZTkwYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNody5oCkBAIC0wLDAgKzEsODQ1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBBbGFjcml0ZWNoLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQUxBQ1JJVEVDSCwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFMQUNSSVRFQ0gsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uCisgKiBhcmUgdGhvc2Ugb2YgdGhlIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nCisgKiBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLCBvZiBBbGFjcml0ZWNoLCBJbmMuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRklMRU5BTUU6IHNsaWNody5oCisgKgorICogVGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBkZWZpbml0aW9ucyB0aGF0IGFyZSBjb21tb24gdG8gb3VyIGhhcmR3YXJlLgorICovCisjaWZuZGVmIF9fU0xJQ0hXX0hfXworI2RlZmluZSBfX1NMSUNIV19IX18KKworI2RlZmluZSBQQ0lfVkVORE9SX0lEX0FMQUNSSVRFQ0ggICAgMHgxMzlBCisjZGVmaW5lIFNMSUNfMUdCX0RFVklDRV9JRCAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgU0xJQ18yR0JfREVWSUNFX0lEICAgICAgICAgIDB4MDAwNyAgLypPYXNpcyBEZXZpY2UgSUQgKi8KKworI2RlZmluZSBTTElDXzFHQl9DSUNBREFfU1VCU1lTX0lEICAgMHgwMDA4CisKKyNkZWZpbmUgU0xJQ19OQlJfTUFDUyAgICAgIDQKKworI2RlZmluZSBTTElDX1JDVkJVRl9TSVpFICAgICAgICAyMDQ4CisjZGVmaW5lIFNMSUNfUkNWQlVGX0hFQURTSVpFICAgIDM0CisjZGVmaW5lIFNMSUNfUkNWQlVGX1RBSUxTSVpFICAgIDAKKyNkZWZpbmUgU0xJQ19SQ1ZCVUZfREFUQVNJWkUgICAgKFNMSUNfUkNWQlVGX1NJWkUgLSAoU0xJQ19SQ1ZCVUZfSEVBRFNJWkUgK1wKKwkJCQkJU0xJQ19SQ1ZCVUZfVEFJTFNJWkUpKQorCisjZGVmaW5lIFZHQlNUQVRfWFBFUlIgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgVkdCU1RBVF9YRVJSU0hGVCAgICAgICAgMjUKKyNkZWZpbmUgVkdCU1RBVF9YQ1NFUlIgICAgICAgICAgMHgyMworI2RlZmluZSBWR0JTVEFUX1hVRkxPVyAgICAgICAgICAweDIyCisjZGVmaW5lIFZHQlNUQVRfWEhMRU4gICAgICAgICAgIDB4MjAKKyNkZWZpbmUgVkdCU1RBVF9ORVRFUlIgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBWR0JTVEFUX05FUlJTSEZUICAgICAgICAxNgorI2RlZmluZSBWR0JTVEFUX05FUlJNU0sgICAgICAgICAweDFmZgorI2RlZmluZSBWR0JTVEFUX05DU0VSUiAgICAgICAgICAweDEwMworI2RlZmluZSBWR0JTVEFUX05VRkxPVyAgICAgICAgICAweDEwMgorI2RlZmluZSBWR0JTVEFUX05ITEVOICAgICAgICAgICAweDEwMAorI2RlZmluZSBWR0JTVEFUX0xOS0VSUiAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIFZHQlNUQVRfTEVSUk1TSyAgICAgICAgIDB4ZmYKKyNkZWZpbmUgVkdCU1RBVF9MREVBUkxZICAgICAgICAgMHg4NgorI2RlZmluZSBWR0JTVEFUX0xCT0ZMTyAgICAgICAgICAweDg1CisjZGVmaW5lIFZHQlNUQVRfTENPREVSUiAgICAgICAgIDB4ODQKKyNkZWZpbmUgVkdCU1RBVF9MREJMTkJMICAgICAgICAgMHg4MworI2RlZmluZSBWR0JTVEFUX0xDUkNFUlIgICAgICAgICAweDgyCisjZGVmaW5lIFZHQlNUQVRfTE9GTE8gICAgICAgICAgIDB4ODEKKyNkZWZpbmUgVkdCU1RBVF9MVUZMTyAgICAgICAgICAgMHg4MAorI2RlZmluZSBJUkhERFJfRkxFTl9NU0sgICAgICAgICAweDAwMDBmZmZmCisjZGVmaW5lIElSSEREUl9TVkFMSUQgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSVJIRERSX0VSUiAgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBWUkhTVEFUXzgwMk9FICAgICAgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIFZSSFNUQVRfVFBPRkxPICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgVlJIU1RBVEJfODAyVUUgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBWUkhTVEFUQl9SQ1ZFICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFZSSFNUQVRCX0JVRkYgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgVlJIU1RBVEJfQ0FSUkUgICAgICAgICAgMHgwODAwMDAwMAorI2RlZmluZSBWUkhTVEFUQl9MT05HRSAgICAgICAgICAweDAyMDAwMDAwCisjZGVmaW5lIFZSSFNUQVRCX1BSRUEgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgVlJIU1RBVEJfQ1JDICAgICAgICAgICAgMHgwMDgwMDAwMAorI2RlZmluZSBWUkhTVEFUQl9EUkJMICAgICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIFZSSFNUQVRCX0NPREUgICAgICAgICAgIDB4MDAyMDAwMDAKKyNkZWZpbmUgVlJIU1RBVEJfVFBDU1VNICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBWUkhTVEFUQl9UUEhMRU4gICAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIFZSSFNUQVRCX0lQQ1NVTSAgICAgICAgIDB4MDAwNDAwMDAKKyNkZWZpbmUgVlJIU1RBVEJfSVBMRVJSICAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBWUkhTVEFUQl9JUEhFUlIgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIFNMSUNfTUFYNjRfQkNOVCAgICAgICAgIDIzCisjZGVmaW5lIFNMSUNfTUFYMzJfQkNOVCAgICAgICAgIDI2CisjZGVmaW5lIElIQ01EX1hNVF9SRVEgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgSUhGTEdfSUZTSEZUICAgICAgICAgICAgMgorI2RlZmluZSBTTElDX1JTUEJVRl9TSVpFICAgICAgICAzMgorCisjZGVmaW5lIFNMSUNfUkVTRVRfTUFHSUMgICAgICAgIDB4REVBRAorI2RlZmluZSBJQ1JfSU5UX09GRiAgICAgICAgICAgICAwCisjZGVmaW5lIElDUl9JTlRfT04gICAgICAgICAgICAgIDEKKyNkZWZpbmUgSUNSX0lOVF9NQVNLICAgICAgICAgICAgMgorCisjZGVmaW5lIElTUl9FUlIgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSVNSX1JDViAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBJU1JfQ01EICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIElTUl9JTyAgICAgICAgICAgICAgICAgIDB4NjAwMDAwMDAKKyNkZWZpbmUgSVNSX1VQQyAgICAgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBJU1JfTEVWRU5UICAgICAgICAgICAgICAweDA4MDAwMDAwCisjZGVmaW5lIElTUl9STUlTUyAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgSVNSX1VQQ0VSUiAgICAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBJU1JfWERST1AgICAgICAgICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIElTUl9VUENCU1kgICAgICAgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZpbmUgSVNSX0VWTVNLICAgICAgICAgICAgICAgMHhmZmZmMDAwMAorI2RlZmluZSBJU1JfUElOR01BU0sgICAgICAgICAgICAweDAwNzAwMDAwCisjZGVmaW5lIElTUl9QSU5HRFNNQVNLICAgICAgICAgIDB4MDA3MTAwMDAKKyNkZWZpbmUgSVNSX1VQQ01BU0sgICAgICAgICAgICAgMHgxMTAwMDAwMAorI2RlZmluZSBTTElDX1dDU19TVEFSVCAgICAgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIFNMSUNfV0NTX0NPTVBBUkUgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgU0xJQ19SQ1ZXQ1NfQkVHSU4gICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBTTElDX1JDVldDU19GSU5JU0ggICAgICAweDgwMDAwMDAwCisjZGVmaW5lIFNMSUNfUE1fTUFYUEFUVEVSTlMgICAgIDYKKyNkZWZpbmUgU0xJQ19QTV9QQVRURVJOU0laRSAgICAgMTI4CisjZGVmaW5lIFNMSUNfUE1DQVBTX1dBS0VPTkxBTiAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTUlJQ1JfUkVHX1BDUiAgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBNSUlDUl9SRUdfNCAgICAgICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIE1JSUNSX1JFR185ICAgICAgICAgICAgIDB4MDAwOTAwMDAKKyNkZWZpbmUgTUlJQ1JfUkVHXzE2ICAgICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBQQ1JfUkVTRVQgICAgICAgICAgICAgICAweDgwMDAKKyNkZWZpbmUgUENSX1BPV0VSRE9XTiAgICAgICAgICAgMHgwODAwCisjZGVmaW5lIFBDUl9TUEVFRF8xMDAgICAgICAgICAgIDB4MjAwMAorI2RlZmluZSBQQ1JfU1BFRURfMTAwMCAgICAgICAgICAweDAwNDAKKyNkZWZpbmUgUENSX0FVVE9ORUcgICAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIFBDUl9BVVRPTkVHX1JTVCAgICAgICAgIDB4MDIwMAorI2RlZmluZSBQQ1JfRFVQTEVYX0ZVTEwgICAgICAgICAweDAxMDAKKyNkZWZpbmUgUFNSX0xJTktVUCAgICAgICAgICAgICAgMHgwMDA0CisKKyNkZWZpbmUgUEFSX0FEVjEwMEZEICAgICAgICAgICAgMHgwMTAwCisjZGVmaW5lIFBBUl9BRFYxMDBIRCAgICAgICAgICAgIDB4MDA4MAorI2RlZmluZSBQQVJfQURWMTBGRCAgICAgICAgICAgICAweDAwNDAKKyNkZWZpbmUgUEFSX0FEVjEwSEQgICAgICAgICAgICAgMHgwMDIwCisjZGVmaW5lIFBBUl9BU1lNUEFVU0UgICAgICAgICAgIDB4MEMwMAorI2RlZmluZSBQQVJfODAyXzMgICAgICAgICAgICAgICAweDAwMDEKKworI2RlZmluZSBQQVJfQURWMTAwMFhGRCAgICAgICAgICAweDAwMjAKKyNkZWZpbmUgUEFSX0FEVjEwMDBYSEQgICAgICAgICAgMHgwMDQwCisjZGVmaW5lIFBBUl9BU1lNUEFVU0VfRklCRVIgICAgIDB4MDE4MAorCisjZGVmaW5lIFBHQ19BRFYxMDAwRkQgICAgICAgICAgIDB4MDIwMAorI2RlZmluZSBQR0NfQURWMTAwMEhEICAgICAgICAgICAweDAxMDAKKyNkZWZpbmUgU0VFUV9MSU5LRkFJTCAgICAgICAgICAgMHg0MDAwCisjZGVmaW5lIFNFRVFfU1BFRUQgICAgICAgICAgICAgIDB4MDA4MAorI2RlZmluZSBTRUVRX0RVUExFWCAgICAgICAgICAgICAweDAwNDAKKyNkZWZpbmUgVERLX0RVUExFWCAgICAgICAgICAgICAgMHgwODAwCisjZGVmaW5lIFRES19TUEVFRCAgICAgICAgICAgICAgIDB4MDQwMAorI2RlZmluZSBNUlZfUkVHMTZfWE9WRVJPTiAgICAgICAweDAwNjgKKyNkZWZpbmUgTVJWX1JFRzE2X1hPVkVST0ZGICAgICAgMHgwMDA4CisjZGVmaW5lIE1SVl9TUEVFRF8xMDAwICAgICAgICAgIDB4ODAwMAorI2RlZmluZSBNUlZfU1BFRURfMTAwICAgICAgICAgICAweDQwMDAKKyNkZWZpbmUgTVJWX1NQRUVEXzEwICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIE1SVl9GVUxMRFVQTEVYICAgICAgICAgIDB4MjAwMAorI2RlZmluZSBNUlZfTElOS1VQICAgICAgICAgICAgICAweDA0MDAKKworI2RlZmluZSBHSUdfTElOS1VQICAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgR0lHX0ZVTExEVVBMRVggICAgICAgICAgMHgwMDAyCisjZGVmaW5lIEdJR19TUEVFRF9NQVNLICAgICAgICAgIDB4MDAwQworI2RlZmluZSBHSUdfU1BFRURfMTAwMCAgICAgICAgICAweDAwMDgKKyNkZWZpbmUgR0lHX1NQRUVEXzEwMCAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIEdJR19TUEVFRF8xMCAgICAgICAgICAgIDB4MDAwMAorCisjZGVmaW5lIE1DUl9SRVNFVCAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgTUNSX0NSQ0VOICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBNQ1JfRlVMTEQgICAgICAgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5lIE1DUl9QQUQgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgTUNSX1JFVFJZTEFURSAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBNQ1JfQk9MX1NISUZUICAgICAgICAgICAyMQorI2RlZmluZSBNQ1JfSVBHMV9TSElGVCAgICAgICAgICAxNAorI2RlZmluZSBNQ1JfSVBHMl9TSElGVCAgICAgICAgICA3CisjZGVmaW5lIE1DUl9JUEczX1NISUZUICAgICAgICAgIDAKKyNkZWZpbmUgR01DUl9SRVNFVCAgICAgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBHTUNSX0dCSVQgICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIEdNQ1JfRlVMTEQgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgR01DUl9HQVBCQl9TSElGVCAgICAgICAgMTQKKyNkZWZpbmUgR01DUl9HQVBSMV9TSElGVCAgICAgICAgNworI2RlZmluZSBHTUNSX0dBUFIyX1NISUZUICAgICAgICAwCisjZGVmaW5lIEdNQ1JfR0FQQkJfMTAwMCAgICAgICAgIDB4NjAKKyNkZWZpbmUgR01DUl9HQVBSMV8xMDAwICAgICAgICAgMHgyQworI2RlZmluZSBHTUNSX0dBUFIyXzEwMDAgICAgICAgICAweDQwCisjZGVmaW5lIEdNQ1JfR0FQQkJfMTAwICAgICAgICAgIDB4NzAKKyNkZWZpbmUgR01DUl9HQVBSMV8xMDAgICAgICAgICAgMHgyQworI2RlZmluZSBHTUNSX0dBUFIyXzEwMCAgICAgICAgICAweDQwCisjZGVmaW5lIFhDUl9SRVNFVCAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgWENSX1hNVEVOICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBYQ1JfUEFVU0VFTiAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIFhDUl9MT0FEUk5HICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgUkNSX1JFU0VUICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBSQ1JfUkNWRU4gICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFJDUl9SQ1ZBTEwgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgUkNSX1JDVkJBRCAgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBSQ1JfQ1RMRU4gICAgICAgICAgICAgICAweDA4MDAwMDAwCisjZGVmaW5lIFJDUl9BRERSQUVOICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgR1hDUl9SRVNFVCAgICAgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBHWENSX1hNVEVOICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIEdYQ1JfUEFVU0VFTiAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgR1JDUl9SRVNFVCAgICAgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBHUkNSX1JDVkVOICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIEdSQ1JfUkNWQUxMICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgR1JDUl9SQ1ZCQUQgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBHUkNSX0NUTEVOICAgICAgICAgICAgICAweDA4MDAwMDAwCisjZGVmaW5lIEdSQ1JfQUREUkFFTiAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgR1JDUl9IQVNIU0laRV9TSElGVCAgICAgMTcKKyNkZWZpbmUgR1JDUl9IQVNIU0laRSAgICAgICAgICAgMTQKKworI2RlZmluZSBTTElDX0VFUFJPTV9JRCAgICAgICAgMHhBNUE1CisjZGVmaW5lIFNMSUNfU1JBTV9TSVpFMkdCICAgICAoNjQgKiAxMDI0KQorI2RlZmluZSBTTElDX1NSQU1fU0laRTFHQiAgICAgKDMyICogMTAyNCkKKyNkZWZpbmUgU0xJQ19IT1NUSURfREVGQVVMVCAgIDB4RkZGRiAgICAgIC8qIHVuaW5pdGlhbGl6ZWQgaG9zdGlkICovCisjZGVmaW5lIFNMSUNfTkJSX01BQ1MgICAgICAgICA0CisKKyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFMU0UgIDAKKyNlbHNlCisjdW5kZWYgIEZBTFNFCisjZGVmaW5lIEZBTFNFICAwCisjZW5kaWYKKworI2lmbmRlZiBUUlVFCisjZGVmaW5lIFRSVUUgICAxCisjZWxzZQorI3VuZGVmICBUUlVFCisjZGVmaW5lIFRSVUUgICAxCisjZW5kaWYKKworc3RydWN0IHNsaWNfcmN2YnVmIHsKKyAgICB1bnNpZ25lZCBjaGFyICAgICBwYWQxWzZdOworICAgIHVzaG9ydCAgICBwYWQyOworICAgIHUzMiAgIHBhZDM7CisgICAgdTMyICAgcGFkNDsKKyAgICB1MzIgICBidWZmZXI7CisgICAgdTMyICAgbGVuZ3RoOworICAgIHUzMiAgIHN0YXR1czsKKyAgICB1MzIgICBwYWQ1OworICAgIHVzaG9ydCAgICBwYWQ2OworICAgIHVuc2lnbmVkIGNoYXIgICAgIGRhdGFbU0xJQ19SQ1ZCVUZfREFUQVNJWkVdOworfTsKKworIHN0cnVjdCBzbGljX2hkZHJfd2RzIHsKKyAgdW5pb24geworICAgIHN0cnVjdCB7CisJdTMyICAgIGZyYW1lX3N0YXR1czsKKwl1MzIgICAgZnJhbWVfc3RhdHVzX2I7CisJdTMyICAgIHRpbWVfc3RhbXA7CisJdTMyICAgIGNoZWNrc3VtOworICAgIH0gaGRyc18xNHBvcnQ7CisgICAgc3RydWN0IHsKKwl1MzIgICAgZnJhbWVfc3RhdHVzOworCXVzaG9ydCAgICAgQnl0ZUNudDsKKwl1c2hvcnQgICAgIFRwQ2hrc3VtOworCXVzaG9ydCAgICAgQ3R4SGFzaDsKKwl1c2hvcnQgICAgIE1hY0hhc2g7CisJdTMyICAgIEJ1ZkxuazsKKyAgICB9IGhkcnNfZ2JpdDsKKyAgfSB1MDsKK307CisKKyNkZWZpbmUgZnJhbWVfc3RhdHVzMTQgICAgICAgIHUwLmhkcnNfMTRwb3J0LmZyYW1lX3N0YXR1cworI2RlZmluZSBmcmFtZV9zdGF0dXNfYjE0ICAgICAgdTAuaGRyc18xNHBvcnQuZnJhbWVfc3RhdHVzX2IKKyNkZWZpbmUgZnJhbWVfc3RhdHVzR0IgICAgICAgIHUwLmhkcnNfZ2JpdC5mcmFtZV9zdGF0dXMKKworc3RydWN0IHNsaWNfaG9zdDY0c2cgeworCXUzMiAgICAgICAgcGFkZHJsOworCXUzMiAgICAgICAgcGFkZHJoOworCXUzMiAgICAgICAgbGVuZ3RoOworfTsKKworc3RydWN0IHNsaWNfaG9zdDY0X2NtZCB7CisgICAgdTMyICAgICAgIGhvc3RoYW5kbGU7CisgICAgdTMyICAgICAgIFJTVkQ7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgIGNvbW1hbmQ7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgIGZsYWdzOworICAgIHVuaW9uIHsKKwl1c2hvcnQgICAgICAgICAgcnN2MTsKKwl1c2hvcnQgICAgICAgICAgcnN2MjsKKyAgICB9IHUwOworICAgIHVuaW9uIHsKKwlzdHJ1Y3QgeworCQl1MzIgICAgICAgICAgICB0b3RsZW47CisJCXN0cnVjdCBzbGljX2hvc3Q2NHNnICAgIGJ1ZnNbU0xJQ19NQVg2NF9CQ05UXTsKKwl9IHNsaWNfYnVmZmVyczsKKyAgICB9IHU7Cit9OworCitzdHJ1Y3Qgc2xpY19yc3BidWYgeworICAgIHUzMiAgIGhvc3RoYW5kbGU7CisgICAgdTMyICAgcGFkMDsKKyAgICB1MzIgICBwYWQxOworICAgIHUzMiAgIHN0YXR1czsKKyAgICB1MzIgICBwYWQyWzRdOworCit9OworCitzdHJ1Y3Qgc2xpY19yZWdzIHsKKwl1MzIJc2xpY19yZXNldDsJCS8qIFJlc2V0IFJlZ2lzdGVyICovCisJdTMyCXBhZDA7CisKKwl1MzIJc2xpY19pY3I7CQkvKiBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqLworCXUzMglwYWQyOworI2RlZmluZSBTTElDX0lDUgkJMHgwMDA4CisKKwl1MzIJc2xpY19pc3A7CQkvKiBJbnRlcnJ1cHQgc3RhdHVzIHBvaW50ZXIgKi8KKwl1MzIJcGFkMTsKKyNkZWZpbmUgU0xJQ19JU1AJCTB4MDAxMAorCisgICAgdTMyCXNsaWNfaXNyOwkJLyogSW50ZXJydXB0IHN0YXR1cyAqLworCXUzMglwYWQzOworI2RlZmluZSBTTElDX0lTUgkJMHgwMDE4CisKKyAgICB1MzIJc2xpY19oYmFyOwkJLyogSGVhZGVyIGJ1ZmZlciBhZGRyZXNzIHJlZyAqLworCXUzMgkJcGFkNDsKKwkvKiAzMS04IC0gcGh5IGFkZHIgb2Ygc2V0IG9mIGNvbnRpZ3VvdXMgaGRyIGJ1ZmZlcnMKKwkgICAgNy0wIC0gbnVtYmVyIG9mIGJ1ZmZlcnMgcGFzc2VkCisJICAgQnVmZmVycyBhcmUgMjU2IGJ5dGVzIGxvbmcgb24gMjU2LWJ5dGUgYm91bmRhcmllcy4gKi8KKyNkZWZpbmUgU0xJQ19IQkFSCQkweDAwMjAKKyNkZWZpbmUgU0xJQ19IQkFSX0NOVF9NU0sJMHgwMDAwMDBGRgorCisgICAgdTMyCXNsaWNfZGJhcjsJLyogRGF0YSBidWZmZXIgaGFuZGxlICYgYWRkcmVzcyByZWcgKi8KKwl1MzIJCXBhZDU7CisKKwkvKiA0IHNldHMgb2YgcmVnaXN0ZXJzOyBCdWZmZXJzIGFyZSAySyBieXRlcyBsb25nIDIgcGVyIDRLIHBhZ2UuICovCisjZGVmaW5lIFNMSUNfREJBUgkJMHgwMDI4CisjZGVmaW5lIFNMSUNfREJBUl9TSVpFCQkyMDQ4CisKKyAgICB1MzIJc2xpY19jYmFyOwkJIAkvKiBYbXQgQ21kIGJ1ZiBhZGRyIHJlZ3MuKi8KKwkvKiAxIHBlciBYTVQgaW50ZXJmYWNlCisJICAgMzEtNSAtIHBoeSBhZGRyIG9mIGhvc3QgY29tbWFuZCBidWZmZXIKKwkgICAgNC0wIC0gbGVuZ3RoIG9mIGNtZCBpbiBtdWx0aXBsZXMgb2YgMzIgYnl0ZXMKKwkgICBCdWZmZXJzIGFyZSAzMiBieXRlcyB1cCB0byA1MTIgYnl0ZXMgbG9uZyAqLworI2RlZmluZSBTTElDX0NCQVIJCTB4MDAzMAorI2RlZmluZSBTTElDX0NCQVJfTEVOX01TSwkweDAwMDAwMDFGCisjZGVmaW5lIFNMSUNfQ0JBUl9BTElHTgkJMHgwMDAwMDAyMAorCisJdTMyCXNsaWNfd2NzOwkJLyogd3JpdGUgY29udHJvbCBzdG9yZSovCisjZGVmaW5lCVNMSUNfV0NTCQkweDAwMzQKKyNkZWZpbmUgU0xJQ19XQ1NfU1RBUlQJCTB4ODAwMDAwMDAJLypTdGFydCB0aGUgU0xJQyAoSnVtcCB0byBXQ1MpKi8KKyNkZWZpbmUgU0xJQ19XQ1NfQ09NUEFSRQkweDQwMDAwMDAwCS8qIENvbXBhcmUgd2l0aCB2YWx1ZSBpbiBXQ1MqLworCisgICAgdTMyCXNsaWNfcmJhcjsJCS8qIFJlc3BvbnNlIGJ1ZmZlciBhZGRyZXNzIHJlZy4qLworCXUzMgkJcGFkNzsKKwkgLyozMS04IC0gcGh5IGFkZHIgb2Ygc2V0IG9mIGNvbnRpZ3VvdXMgcmVzcG9uc2UgYnVmZmVycworCSAgNy0wIC0gbnVtYmVyIG9mIGJ1ZmZlcnMgcGFzc2VkCisJIEJ1ZmZlcnMgYXJlIDMyIGJ5dGVzIGxvbmcgb24gMzItYnl0ZSBib3VuZGFyaWVzLiovCisjZGVmaW5lIFNMSUNfUkJBUgkJMHgwMDM4CisjZGVmaW5lIFNMSUNfUkJBUl9DTlRfTVNLCTB4MDAwMDAwRkYKKyNkZWZpbmUgU0xJQ19SQkFSX1NJWkUJCTMyCisKKwl1MzIJc2xpY19zdGF0czsJCS8qIHJlYWQgc3RhdGlzdGljcyAoVVBSKSAqLworCXUzMgkJcGFkODsKKyNkZWZpbmUJU0xJQ19SU1RBVAkJMHgwMDQwCisKKwl1MzIJc2xpY19ybHNyOwkJCS8qIHJlYWQgbGluayBzdGF0dXMgKi8KKwl1MzIJCXBhZDk7CisjZGVmaW5lIFNMSUNfTFNUQVQJCTB4MDA0OAorCisJdTMyCXNsaWNfd21jZmc7CQkJLyogV3JpdGUgTWFjIENvbmZpZyAqLworCXUzMgkJcGFkMTA7CisjZGVmaW5lCVNMSUNfV01DRkcJCTB4MDA1MAorCisJdTMyCXNsaWNfd3BoeTsJCQkvKiBXcml0ZSBwaHkgcmVnaXN0ZXIgKi8KKwl1MzIJCXBhZDExOworI2RlZmluZSBTTElDX1dQSFkJCTB4MDA1OAorCisJdTMyCXNsaWNfcmNiYXI7CQkJLypSY3YgQ21kIGJ1ZiBhZGRyIHJlZyovCisJdTMyCQlwYWQxMjsKKyNkZWZpbmUJU0xJQ19SQ0JBUgkJMHgwMDYwCisKKwl1MzIJc2xpY19yY29uZmlnOwkJLyogUmVhZCBTTElDIENvbmZpZyovCisJdTMyCQlwYWQxMzsKKyNkZWZpbmUgU0xJQ19SQ09ORklHCTB4MDA2OAorCisJdTMyCXNsaWNfaW50YWdnOwkJLyogSW50ZXJydXB0IGFnZ3JlZ2F0aW9uIHRpbWUqLworCXUzMgkJcGFkMTQ7CisjZGVmaW5lIFNMSUNfSU5UQUdHCQkweDAwNzAKKworCXUzMglzbGljX3d4Y2ZnOwkJLyogV3JpdGUgWE1JVCBjb25maWcgcmVnKi8KKwl1MzIJCXBhZDE2OworI2RlZmluZQlTTElDX1dYQ0ZHCQkweDAwNzgKKworCXUzMglzbGljX3dyY2ZnOwkJLyogV3JpdGUgUkNWIGNvbmZpZyByZWcqLworCXUzMgkJcGFkMTc7CisjZGVmaW5lCVNMSUNfV1JDRkcJCTB4MDA4MAorCisJdTMyCXNsaWNfd3JhZGRyYWw7CQkvKiBXcml0ZSByY3YgYWRkciBhIGxvdyovCisJdTMyCQlwYWQxODsKKyNkZWZpbmUJU0xJQ19XUkFERFJBTAkweDAwODgKKworCXUzMglzbGljX3dyYWRkcmFoOwkJLyogV3JpdGUgcmN2IGFkZHIgYSBoaWdoKi8KKwl1MzIJCXBhZDE5OworI2RlZmluZQlTTElDX1dSQUREUkFICTB4MDA5MAorCisJdTMyCXNsaWNfd3JhZGRyYmw7CQkvKiBXcml0ZSByY3YgYWRkciBiIGxvdyovCisJdTMyCQlwYWQyMDsKKyNkZWZpbmUJU0xJQ19XUkFERFJCTAkweDAwOTgKKworCXUzMglzbGljX3dyYWRkcmJoOwkJLyogV3JpdGUgcmN2IGFkZHIgYiBoaWdoKi8KKwl1MzIJCXBhZDIxOworI2RlZmluZQlTTElDX1dSQUREUkJICTB4MDBhMAorCisJdTMyCXNsaWNfbWNhc3Rsb3c7CQkvKiBMb3cgYml0cyBvZiBtY2FzdCBtYXNrKi8KKwl1MzIJCXBhZDIyOworI2RlZmluZQlTTElDX01DQVNUTE9XCTB4MDBhOAorCisJdTMyCXNsaWNfbWNhc3RoaWdoOwkJLyogSGlnaCBiaXRzIG9mIG1jYXN0IG1hc2sqLworCXUzMgkJcGFkMjM7CisjZGVmaW5lCVNMSUNfTUNBU1RISUdICTB4MDBiMAorCisJdTMyCXNsaWNfcGluZzsJCQkvKiBQaW5nIHRoZSBjYXJkKi8KKwl1MzIJCXBhZDI0OworI2RlZmluZSBTTElDX1BJTkcJCTB4MDBiOAorCisJdTMyCXNsaWNfZHVtcF9jbWQ7CQkvKiBEdW1wIGNvbW1hbmQgKi8KKwl1MzIJCXBhZDI1OworI2RlZmluZSBTTElDX0RVTVBfQ01ECTB4MDBjMAorCisJdTMyCXNsaWNfZHVtcF9kYXRhOwkJLyogRHVtcCBkYXRhIHBvaW50ZXIgKi8KKwl1MzIJCXBhZDI2OworI2RlZmluZSBTTElDX0RVTVBfREFUQQkweDAwYzgKKworCXUzMglzbGljX3BjaXN0YXR1czsJLyogUmVhZCBjYXJkJ3MgcGNpX3N0YXR1cyByZWdpc3RlciAqLworCXUzMgkJcGFkMjc7CisjZGVmaW5lCVNMSUNfUENJU1RBVFVTCTB4MDBkMAorCisJdTMyCXNsaWNfd3Job3N0aWQ7CQkvKiBXcml0ZSBob3N0aWQgZmllbGQgKi8KKwl1MzIJCXBhZDI4OworI2RlZmluZSBTTElDX1dSSE9TVElECQkgMHgwMGQ4CisjZGVmaW5lIFNMSUNfUkRIT1NUSURfMUdCCSAweDE1NTQKKyNkZWZpbmUgU0xJQ19SREhPU1RJRF8yR0IJIDB4MTU1NAorCisJdTMyCXNsaWNfbG93X3Bvd2VyOwkvKiBQdXQgY2FyZCBpbiBhIGxvdyBwb3dlciBzdGF0ZSAqLworCXUzMgkJcGFkMjk7CisjZGVmaW5lIFNMSUNfTE9XX1BPV0VSCTB4MDBlMAorCisJdTMyCXNsaWNfcXVpZXNjZTsJLyogZm9yY2Ugc2xpYyBpbnRvIHF1aWVzY2VudCBzdGF0ZQorCQkJCQkgYmVmb3JlIHNvZnQgcmVzZXQgKi8KKwl1MzIJCXBhZDMwOworI2RlZmluZSBTTElDX1FVSUVTQ0UJMHgwMGU4CisKKwl1MzIJc2xpY19yZXNldF9pZmFjZTsJLyogcmVzZXQgaW50ZXJmYWNlIHF1ZXVlcyAqLworCXUzMgkJcGFkMzE7CisjZGVmaW5lIFNMSUNfUkVTRVRfSUZBQ0UgMHgwMGYwCisKKyAgICB1MzIJc2xpY19hZGRyX3VwcGVyOwkvKiBCaXRzIDYzLTMyIGZvciBob3N0IGkvZiBhZGRycyAqLworCXUzMgkJcGFkMzI7CisjZGVmaW5lIFNMSUNfQUREUl9VUFBFUgkweDAwZjggLypSZWdpc3RlciBpcyBvbmx5IHdyaXR0ZW4gd2hlbiBpdCBoYXMgY2hhbmdlZCovCisKKyAgICB1MzIJc2xpY19oYmFyNjQ7CQkvKiA2NCBiaXQgSGVhZGVyIGJ1ZmZlciBhZGRyZXNzIHJlZyAqLworCXUzMgkJcGFkMzM7CisjZGVmaW5lIFNMSUNfSEJBUjY0CQkweDAxMDAKKworICAgIHUzMglzbGljX2RiYXI2NDsJLyogNjQgYml0IERhdGEgYnVmZmVyIGhhbmRsZSAmIGFkZHJlc3MgcmVnICovCisJdTMyCQlwYWQzNDsKKyNkZWZpbmUgU0xJQ19EQkFSNjQJCTB4MDEwOAorCisgICAgdTMyCXNsaWNfY2JhcjY0OwkgCS8qIDY0IGJpdCBYbXQgQ21kIGJ1ZiBhZGRyIHJlZ3MuICovCisJdTMyCQlwYWQzNTsKKyNkZWZpbmUgU0xJQ19DQkFSNjQJCTB4MDExMAorCisgICAgdTMyCXNsaWNfcmJhcjY0OwkJLyogNjQgYml0IFJlc3BvbnNlIGJ1ZmZlciBhZGRyZXNzIHJlZy4qLworCXUzMgkJcGFkMzY7CisjZGVmaW5lIFNMSUNfUkJBUjY0CQkweDAxMTgKKworCXUzMglzbGljX3JjYmFyNjQ7CQkvKiA2NCBiaXQgUmN2IENtZCBidWYgYWRkciByZWcqLworCXUzMgkJcGFkMzc7CisjZGVmaW5lCVNMSUNfUkNCQVI2NAkweDAxMjAKKworCXUzMglzbGljX3N0YXRzNjQ7CQkvKnJlYWQgc3RhdGlzdGljcyAoNjQgYml0IFVQUikqLworCXUzMgkJcGFkMzg7CisjZGVmaW5lCVNMSUNfUlNUQVQ2NAkweDAxMjgKKworCXUzMglzbGljX3Jjdl93Y3M7CS8qRG93bmxvYWQgR2lnYWJpdCBSQ1Ygc2VxdWVuY2VyIHVjb2RlKi8KKwl1MzIJCXBhZDM5OworI2RlZmluZSBTTElDX1JDVl9XQ1MJMHgwMTMwCisjZGVmaW5lIFNMSUNfUkNWV0NTX0JFR0lOCTB4NDAwMDAwMDAKKyNkZWZpbmUgU0xJQ19SQ1ZXQ1NfRklOSVNICTB4ODAwMDAwMDAKKworCXUzMglzbGljX3dydmxhbmlkOwkJLyogV3JpdGUgVmxhbklkIGZpZWxkICovCisJdTMyCQlwYWQ0MDsKKyNkZWZpbmUgU0xJQ19XUlZMQU5JRAkweDAxMzgKKworCXUzMglzbGljX3JlYWRfeGZfaW5mbzsgIC8qIFJlYWQgVHJhbnNmb3JtZXIgaW5mbyAqLworCXUzMgkJcGFkNDE7CisjZGVmaW5lIFNMSUNfUkVBRF9YRl9JTkZPIAkweDAxNDAKKworCXUzMglzbGljX3dyaXRlX3hmX2luZm87IC8qIFdyaXRlIFRyYW5zZm9ybWVyIGluZm8gKi8KKwl1MzIJCXBhZDQyOworI2RlZmluZSBTTElDX1dSSVRFX1hGX0lORk8gCTB4MDE0OAorCisJdTMyCVJTVkQxOyAgICAgICAgICAgICAgLyogVE9FIE9ubHkgKi8KKwl1MzIJCXBhZDQzOworCisJdTMyCVJTVkQyOyAJICAgICAgICAgICAgLyogVE9FIE9ubHkgKi8KKwl1MzIJCXBhZDQ0OworCisJdTMyCVJTVkQzOyAgICAgICAgICAgICAgLyogVE9FIE9ubHkgKi8KKwl1MzIJCXBhZDQ1OworCisJdTMyCVJTVkQ0OyAgICAgICAgICAgICAgLyogVE9FIE9ubHkgKi8KKwl1MzIJCXBhZDQ2OworCisJdTMyCXNsaWNfdGlja3NfcGVyX3NlYzsgLyogV3JpdGUgY2FyZCB0aWNrcyBwZXIgc2Vjb25kICovCisJdTMyCQlwYWQ0NzsKKyNkZWZpbmUgU0xJQ19USUNLU19QRVJfU0VDCTB4MDE3MAorCit9OworCitlbnVtIFVQUl9SRVFVRVNUIHsKKyAgICBTTElDX1VQUl9TVEFUUywKKyAgICBTTElDX1VQUl9STFNSLAorICAgIFNMSUNfVVBSX1dDRkcsCisgICAgU0xJQ19VUFJfUkNPTkZJRywKKyAgICBTTElDX1VQUl9SUEhZLAorICAgIFNMSUNfVVBSX0VOTEIsCisgICAgU0xJQ19VUFJfRU5DVCwKKyAgICBTTElDX1VQUl9QRFdOLAorICAgIFNMSUNfVVBSX1BJTkcsCisgICAgU0xJQ19VUFJfRFVNUCwKK307CisKK3N0cnVjdCBpbmljcG1fd2FrZXBhdHRlcm4geworICAgIHUzMiAgICBwYXR0ZXJubGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgICAgICBwYXR0ZXJuW1NMSUNfUE1fUEFUVEVSTlNJWkVdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICBtYXNrW1NMSUNfUE1fUEFUVEVSTlNJWkVdOworfTsKKworc3RydWN0IGluaWNwbV9zdGF0ZSB7CisgICAgdTMyICAgICAgICAgICAgICAgICBwb3dlcmNhcHM7CisgICAgdTMyICAgICAgICAgICAgICAgICBwb3dlcnN0YXRlOworICAgIHUzMiAgICAgICAgICAgICAgICAgd2FrZV9saW5rc3RhdHVzOworICAgIHUzMiAgICAgICAgICAgICAgICAgd2FrZV9tYWdpY3BhY2tldDsKKyAgICB1MzIgICAgICAgICAgICAgICAgIHdha2VfZnJhbWVwYXR0ZXJuOworICAgIHN0cnVjdCBpbmljcG1fd2FrZXBhdHRlcm4gICAgd2FrZXBhdHRlcm5bU0xJQ19QTV9NQVhQQVRURVJOU107Cit9OworCitzdHJ1Y3Qgc2xpY3BtX3BhY2tldF9wYXR0ZXJuIHsKKyAgICB1MzIgICAgIHByaW9yaXR5OworICAgIHUzMiAgICAgcmVzZXJ2ZWQ7CisgICAgdTMyICAgICBtYXNrc2l6ZTsKKyAgICB1MzIgICAgIHBhdHRlcm5vZmZzZXQ7CisgICAgdTMyICAgICBwYXR0ZXJuc2l6ZTsKKyAgICB1MzIgICAgIHBhdHRlcm5mbGFnczsKK307CisKK2VudW0gc2xpY3BtX3Bvd2VyX3N0YXRlIHsKKyAgICBzbGljcG1fc3RhdGVfdW5zcGVjaWZpZWQgPSAwLAorICAgIHNsaWNwbV9zdGF0ZV9kMCwKKyAgICBzbGljcG1fc3RhdGVfZDEsCisgICAgc2xpY3BtX3N0YXRlX2QyLAorICAgIHNsaWNwbV9zdGF0ZV9kMywKKyAgICBzbGljcG1fc3RhdGVfbWF4aW11bQorfTsKKworc3RydWN0IHNsaWNwbV93YWtldXBfY2FwYWJpbGl0aWVzIHsKKyAgICBlbnVtIHNsaWNwbV9wb3dlcl9zdGF0ZSAgbWluX21hZ2ljX3BhY2tldF93YWtldXA7CisgICAgZW51bSBzbGljcG1fcG93ZXJfc3RhdGUgIG1pbl9wYXR0ZXJuX3dha2V1cDsKKyAgICBlbnVtIHNsaWNwbV9wb3dlcl9zdGF0ZSAgbWluX2xpbmtfY2hhbmdlX3dha2V1cDsKK307CisKK3N0cnVjdCBzbGljX3BucF9jYXBhYmlsaXRpZXMgeworCXUzMiBmbGFnczsKKwlzdHJ1Y3Qgc2xpY3BtX3dha2V1cF9jYXBhYmlsaXRpZXMgd2FrZXVwX2NhcGFiaWxpdGllczsKK307CisKK3N0cnVjdCB4bXRfc3RhdHMgeworCXUzMiB4bWl0X3RjcF9ieXRlczsKKwl1MzIgeG1pdF90Y3Bfc2VnczsKKwl1MzIgeG1pdF9ieXRlczsKKwl1MzIgeG1pdF9jb2xsaXNpb25zOworCXUzMiB4bWl0X3VuaWNhc3RzOworCXUzMiB4bWl0X290aGVyX2Vycm9yOworCXUzMiB4bWl0X2V4Y2Vzc19jb2xsaXNpb25zOworfTsKKworc3RydWN0IHJjdl9zdGF0cyB7CisJdTMyIHJjdl90Y3BfYnl0ZXM7CisJdTMyIHJjdl90Y3Bfc2VnczsKKwl1MzIgcmN2X2J5dGVzOworCXUzMiByY3ZfdW5pY2FzdHM7CisJdTMyIHJjdl9vdGhlcl9lcnJvcjsKKwl1MzIgcmN2X2Ryb3BzOworfTsKKworc3RydWN0IHhtdF9zdGF0c2diIHsKKwl1NjQgeG1pdF90Y3BfYnl0ZXM7CisJdTY0IHhtaXRfdGNwX3NlZ3M7CisJdTY0IHhtaXRfYnl0ZXM7CisJdTY0IHhtaXRfY29sbGlzaW9uczsKKwl1NjQgeG1pdF91bmljYXN0czsKKwl1NjQgeG1pdF9vdGhlcl9lcnJvcjsKKwl1NjQgeG1pdF9leGNlc3NfY29sbGlzaW9uczsKK307CisKK3N0cnVjdCByY3Zfc3RhdHNnYiB7CisJdTY0IHJjdl90Y3BfYnl0ZXM7CisJdTY0IHJjdl90Y3Bfc2VnczsKKwl1NjQgcmN2X2J5dGVzOworCXU2NCByY3ZfdW5pY2FzdHM7CisJdTY0IHJjdl9vdGhlcl9lcnJvcjsKKwl1NjQgcmN2X2Ryb3BzOworfTsKKworc3RydWN0IHNsaWNfc3RhdHMgeworICAgIHVuaW9uIHsKKwlzdHJ1Y3QgeworCQlzdHJ1Y3QgeG10X3N0YXRzICB4bXQxMDA7CisJCXN0cnVjdCByY3Zfc3RhdHMgIHJjdjEwMDsKKwl9IHN0YXRzXzEwMDsKKwlzdHJ1Y3QgeworCQlzdHJ1Y3QgeG10X3N0YXRzZ2IgICAgIHhtdEdCOworCQlzdHJ1Y3QgcmN2X3N0YXRzZ2IgICAgIHJjdkdCOworCX0gc3RhdHNfR0I7CisgICAgfSB1OworfTsKKworI2RlZmluZSB4bWl0X3RjcF9zZWdzMTAwICAgICAgICAgICB1LnN0YXRzXzEwMC54bXQxMDAueG1pdF90Y3Bfc2VncworI2RlZmluZSB4bWl0X3RjcF9ieXRlczEwMCAgICAgICAgICB1LnN0YXRzXzEwMC54bXQxMDAueG1pdF90Y3BfYnl0ZXMKKyNkZWZpbmUgeG1pdF9ieXRlczEwMCAgICAgICAgICAgICAgdS5zdGF0c18xMDAueG10MTAwLnhtaXRfYnl0ZXMKKyNkZWZpbmUgeG1pdF9jb2xsaXNpb25zMTAwICAgICAgICAgdS5zdGF0c18xMDAueG10MTAwLnhtaXRfY29sbGlzaW9ucworI2RlZmluZSB4bWl0X3VuaWNhc3RzMTAwICAgICAgICAgICB1LnN0YXRzXzEwMC54bXQxMDAueG1pdF91bmljYXN0cworI2RlZmluZSB4bWl0X290aGVyX2Vycm9yMTAwICAgICAgICB1LnN0YXRzXzEwMC54bXQxMDAueG1pdF9vdGhlcl9lcnJvcgorI2RlZmluZSB4bWl0X2V4Y2Vzc19jb2xsaXNpb25zMTAwICB1LnN0YXRzXzEwMC54bXQxMDAueG1pdF9leGNlc3NfY29sbGlzaW9ucworI2RlZmluZSByY3ZfdGNwX3NlZ3MxMDAgICAgICAgICAgICB1LnN0YXRzXzEwMC5yY3YxMDAucmN2X3RjcF9zZWdzCisjZGVmaW5lIHJjdl90Y3BfYnl0ZXMxMDAgICAgICAgICAgIHUuc3RhdHNfMTAwLnJjdjEwMC5yY3ZfdGNwX2J5dGVzCisjZGVmaW5lIHJjdl9ieXRlczEwMCAgICAgICAgICAgICAgIHUuc3RhdHNfMTAwLnJjdjEwMC5yY3ZfYnl0ZXMKKyNkZWZpbmUgcmN2X3VuaWNhc3RzMTAwICAgICAgICAgICAgdS5zdGF0c18xMDAucmN2MTAwLnJjdl91bmljYXN0cworI2RlZmluZSByY3Zfb3RoZXJfZXJyb3IxMDAgICAgICAgICB1LnN0YXRzXzEwMC5yY3YxMDAucmN2X290aGVyX2Vycm9yCisjZGVmaW5lIHJjdl9kcm9wczEwMCAgICAgICAgICAgICAgIHUuc3RhdHNfMTAwLnJjdjEwMC5yY3ZfZHJvcHMKKyNkZWZpbmUgeG1pdF90Y3Bfc2Vnc19nYiAgICAgICAgICAgdS5zdGF0c19HQi54bXRHQi54bWl0X3RjcF9zZWdzCisjZGVmaW5lIHhtaXRfdGNwX2J5dGVzX2diICAgICAgICAgIHUuc3RhdHNfR0IueG10R0IueG1pdF90Y3BfYnl0ZXMKKyNkZWZpbmUgeG1pdF9ieXRlc19nYiAgICAgICAgICAgICAgdS5zdGF0c19HQi54bXRHQi54bWl0X2J5dGVzCisjZGVmaW5lIHhtaXRfY29sbGlzaW9uc19nYiAgICAgICAgIHUuc3RhdHNfR0IueG10R0IueG1pdF9jb2xsaXNpb25zCisjZGVmaW5lIHhtaXRfdW5pY2FzdHNfZ2IgICAgICAgICAgIHUuc3RhdHNfR0IueG10R0IueG1pdF91bmljYXN0cworI2RlZmluZSB4bWl0X290aGVyX2Vycm9yX2diICAgICAgICB1LnN0YXRzX0dCLnhtdEdCLnhtaXRfb3RoZXJfZXJyb3IKKyNkZWZpbmUgeG1pdF9leGNlc3NfY29sbGlzaW9uc19nYiAgdS5zdGF0c19HQi54bXRHQi54bWl0X2V4Y2Vzc19jb2xsaXNpb25zCisKKyNkZWZpbmUgcmN2X3RjcF9zZWdzX2diICAgICAgICAgICAgdS5zdGF0c19HQi5yY3ZHQi5yY3ZfdGNwX3NlZ3MKKyNkZWZpbmUgcmN2X3RjcF9ieXRlc19nYiAgICAgICAgICAgdS5zdGF0c19HQi5yY3ZHQi5yY3ZfdGNwX2J5dGVzCisjZGVmaW5lIHJjdl9ieXRlc19nYiAgICAgICAgICAgICAgIHUuc3RhdHNfR0IucmN2R0IucmN2X2J5dGVzCisjZGVmaW5lIHJjdl91bmljYXN0c19nYiAgICAgICAgICAgIHUuc3RhdHNfR0IucmN2R0IucmN2X3VuaWNhc3RzCisjZGVmaW5lIHJjdl9vdGhlcl9lcnJvcl9nYiAgICAgICAgIHUuc3RhdHNfR0IucmN2R0IucmN2X290aGVyX2Vycm9yCisjZGVmaW5lIHJjdl9kcm9wc19nYiAgICAgICAgICAgICAgIHUuc3RhdHNfR0IucmN2R0IucmN2X2Ryb3BzCisKK3N0cnVjdCBzbGljX2NvbmZpZ19tYWMgeworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIG1hY2FkZHJBWzZdOworfTsKKworI2RlZmluZSBBVEtfRlJVX0ZPUk1BVCAgICAgICAgMHgwMAorI2RlZmluZSBWRU5ET1IxX0ZSVV9GT1JNQVQgICAgMHgwMQorI2RlZmluZSBWRU5ET1IyX0ZSVV9GT1JNQVQgICAgMHgwMgorI2RlZmluZSBWRU5ET1IzX0ZSVV9GT1JNQVQgICAgMHgwMworI2RlZmluZSBWRU5ET1I0X0ZSVV9GT1JNQVQgICAgMHgwNAorI2RlZmluZSBOT19GUlVfRk9STUFUICAgICAgICAgMHhGRgorCitzdHJ1Y3QgYXRrX2ZydSB7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgYXNzZW1ibHlbNl07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgcmV2aXNpb25bMl07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgc2VyaWFsWzE0XTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBwYWRbM107Cit9OworCitzdHJ1Y3QgdmVuZG9yMV9mcnUgeworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIGNvbW1vZGl0eTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBhc3NlbWJseVs0XTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICByZXZpc2lvblsyXTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBzdXBwbGllclsyXTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBkYXRlWzJdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHNlcXVlbmNlWzNdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHBhZFsxM107Cit9OworCitzdHJ1Y3QgdmVuZG9yMl9mcnUgeworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHBhcnRbOF07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgc3VwcGxpZXJbNV07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgZGF0ZVszXTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBzZXF1ZW5jZVs0XTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBwYWRbN107Cit9OworCitzdHJ1Y3QgdmVuZG9yM19mcnUgeworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIGFzc2VtYmx5WzZdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHJldmlzaW9uWzJdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHNlcmlhbFsxNF07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgcGFkWzNdOworfTsKKworc3RydWN0IHZlbmRvcjRfZnJ1IHsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICBudW1iZXJbOF07CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgcGFydFs4XTsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgICB2ZXJzaW9uWzhdOworICAgIHVuc2lnbmVkIGNoYXIgICAgICAgIHBhZFszXTsKK307CisKK3VuaW9uIG9lbWZydSB7CisgICAgc3RydWN0IHZlbmRvcjFfZnJ1ICAgdmVuZG9yMV9mcnU7CisgICAgc3RydWN0IHZlbmRvcjJfZnJ1ICAgdmVuZG9yMl9mcnU7CisgICAgc3RydWN0IHZlbmRvcjNfZnJ1ICAgdmVuZG9yM19mcnU7CisgICAgc3RydWN0IHZlbmRvcjRfZnJ1ICAgdmVuZG9yNF9mcnU7Cit9OworCisvKgorICAgU0xJQyBFRVBST00gc3RydWN0dXJlIGZvciBNb2phdmUKKyovCitzdHJ1Y3Qgc2xpY19lZXByb20geworCXVzaG9ydAkJSWQ7CQkvKiAwMCBFRVBST00vRkxBU0ggTWFnaWMgY29kZSAnQTVBNScqLworCXVzaG9ydAkJRWVjb2RlU2l6ZTsJLyogMDEgU2l6ZSBvZiBFRVBST00gQ29kZXMgKGJ5dGVzICogNCkqLworCXVzaG9ydAkJRmxhc2hTaXplOwkvKiAwMiBGbGFzaCBzaXplICovCisJdXNob3J0CQlFZXByb21TaXplOwkvKiAwMyBFRVBST00gU2l6ZSAqLworCXVzaG9ydAkJVmVuZG9ySWQ7CS8qIDA0IFZlbmRvciBJRCAqLworCXVzaG9ydAkJRGV2aWNlSWQ7CS8qIDA1IERldmljZSBJRCAqLworCXVuc2lnbmVkIGNoYXIJCVJldmlzaW9uSWQ7CS8qIDA2IFJldmlzaW9uIElEICovCisJdW5zaWduZWQgY2hhcgkJQ2xhc3NDb2RlWzNdOwkvKiAwNyBDbGFzcyBDb2RlICovCisJdW5zaWduZWQgY2hhcgkJRGJnSW50UGluOwkvKiAwOCBEZWJ1ZyBJbnRlcnJ1cHQgcGluICovCisJdW5zaWduZWQgY2hhcgkJTmV0SW50UGluMDsJLyogICAgTmV0d29yayBJbnRlcnJ1cHQgUGluICovCisJdW5zaWduZWQgY2hhcgkJTWluR3JhbnQ7CS8qIDA5IE1pbmltdW0gZ3JhbnQgKi8KKwl1bnNpZ25lZCBjaGFyCQlNYXhMYXQ7CQkvKiAgICBNYXhpbXVtIExhdGVuY3kgKi8KKwl1c2hvcnQJCVBjaVN0YXR1czsJLyogMTAgUENJIFN0YXR1cyAqLworCXVzaG9ydAkJU3ViU3lzVklkOwkvKiAxMSBTdWJzeXN0ZW0gVmVuZG9yIElkICovCisJdXNob3J0CQlTdWJTeXNJZDsJLyogMTIgU3Vic3lzdGVtIElEICovCisJdXNob3J0CQlEYmdEZXZJZDsJLyogMTMgRGVidWcgRGV2aWNlIElkICovCisJdXNob3J0CQlEcmFtUm9tRm47CS8qIDE0IERyYW0vUm9tIGZ1bmN0aW9uICovCisJdXNob3J0CQlEU2l6ZTJQY2k7CS8qIDE1IERSQU0gc2l6ZSB0byBQQ0kgKGJ5dGVzICogNjRLKSAqLworCXVzaG9ydAlSU2l6ZTJQY2k7CS8qIDE2IFJPTSBleHRlbnNpb24gc2l6ZSB0byBQQ0kgKGJ5dGVzICogNGspICovCisJdW5zaWduZWQgY2hhciBOZXRJbnRQaW4xOy8qIDE3IE5ldHdvcmsgSW50ZXJmYWNlIFBpbiAxCisJCQkJICAgIChzaW1iYS9sZW9uZSBvbmx5KSAqLworCXVuc2lnbmVkIGNoYXIgTmV0SW50UGluMjsgLypOZXR3b3JrIEludGVyZmFjZSBQaW4gMiAoc2ltYmEvbGVvbmUgb25seSkqLworCXVuaW9uIHsKKwkJdW5zaWduZWQgY2hhciBOZXRJbnRQaW4zOy8qMTggTmV0d29yayBJbnRlcmZhY2UgUGluIDMKKwkJCQkJICAgKHNpbWJhIG9ubHkpKi8KKwkJdW5zaWduZWQgY2hhciBGcmVlVGltZTsvKkZyZWVUaW1lIHNldHRpbmcgKGxlb25lL21vamF2ZSBvbmx5KSAqLworCX0gdTE7CisJdW5zaWduZWQgY2hhcglUQkljdGw7CS8qICAgIDEwLWJpdCBpbnRlcmZhY2UgY29udHJvbCAoTW9qYXZlIG9ubHkpICovCisJdXNob3J0CQlEcmFtU2l6ZTsJLyogMTkgRFJBTSBzaXplIChieXRlcyAqIDY0aykgKi8KKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQkvKiBNYWMgSW50ZXJmYWNlIFNwZWNpZmljIHBvcnRpb25zICovCisJCQlzdHJ1Y3Qgc2xpY19jb25maWdfbWFjCU1hY0luZm9bU0xJQ19OQlJfTUFDU107CisJCX0gbWFjOwkJCQkvKiBNQUMgYWNjZXNzIGZvciBhbGwgYm9hcmRzICovCisJCXN0cnVjdCB7CisJCQkvKiB1c2UgYWJvdmUgc3RydWN0IGZvciBNQUMgYWNjZXNzICovCisJCQlzdHJ1Y3Qgc2xpY19jb25maWdfbWFjCXBhZFtTTElDX05CUl9NQUNTIC0gMV07CisJCQl1c2hvcnQJCURldmljZUlkMjsJLyogRGV2aWNlIElEIGZvciAybmQKKwkJCQkJCQkJUENJIGZ1bmN0aW9uICovCisJCQl1bnNpZ25lZCBjaGFyCUludFBpbjI7CS8qIEludGVycnVwdCBwaW4gZm9yCisJCQkJCQkJICAgMm5kIFBDSSBmdW5jdGlvbiAqLworCQkJdW5zaWduZWQgY2hhcglDbGFzc0NvZGUyWzNdOwkvKiBDbGFzcyBDb2RlIGZvciAybmQKKwkJCQkJCQkJUENJIGZ1bmN0aW9uICovCisJCX0gbW9qYXZlOwkvKiAybmQgZnVuY3Rpb24gYWNjZXNzIGZvciBnaWdhYml0IGJvYXJkICovCisJfSB1MjsKKwl1c2hvcnQJCUNmZ0J5dGU2OwkvKiBDb25maWcgQnl0ZSA2ICovCisJdXNob3J0CQlQTUVDYXBhYjsJLyogUG93ZXIgTWdtZW50IGNhcGFiaWxpdGllcyAqLworCXVzaG9ydAkJTndDbGtDdHJsczsJLyogTmV0d29ya0Nsb2NrQ29udHJvbHMgKi8KKwl1bnNpZ25lZCBjaGFyCUZydUZvcm1hdDsJLyogQWxhY3JpdGVjaCBGUlUgZm9ybWF0IHR5cGUgKi8KKwlzdHJ1Y3QgYXRrX2ZydSAgIEF0a0ZydTsJLyogQWxhY3JpdGVjaCBGUlUgaW5mb3JtYXRpb24gKi8KKwl1bnNpZ25lZCBjaGFyCU9lbUZydUZvcm1hdDsJLyogb3B0aW9uYWwgT0VNIEZSVSBmb3JtYXQgdHlwZSAqLworCXVuaW9uIG9lbWZydSAgICBPZW1GcnU7ICAgICAgICAgLyogb3B0aW9uYWwgT0VNIEZSVSBpbmZvcm1hdGlvbiAqLworCXVuc2lnbmVkIGNoYXIJUGFkWzRdOwkvKiBQYWQgdG8gMTI4IGJ5dGVzIC0gaW5jbHVkZXMgMiBja3N1bSBieXRlcworCQkJCSAqKGlmIE9FTSBGUlUgaW5mbyBleGlzdHMpIGFuZCB0d28gdW51c2FibGUKKwkJCQkgKiBieXRlcyBhdCB0aGUgZW5kICovCit9OworCisvKiBTTElDIEVFUFJPTSBzdHJ1Y3R1cmUgZm9yIE9hc2lzICovCitzdHJ1Y3Qgb3NsaWNfZWVwcm9tIHsKKwl1c2hvcnQJCUlkOwkJLyogMDAgRUVQUk9NL0ZMQVNIIE1hZ2ljIGNvZGUgJ0E1QTUnICovCisJdXNob3J0CQlFZWNvZGVTaXplOwkvKiAwMSBTaXplIG9mIEVFUFJPTSBDb2RlcyAoYnl0ZXMgKiA0KSovCisJdXNob3J0CQlGbGFzaENvbmZpZzA7CS8qIDAyIEZsYXNoIENvbmZpZyBmb3IgU1BJIGRldmljZSAwICovCisJdXNob3J0CQlGbGFzaENvbmZpZzE7CS8qIDAzIEZsYXNoIENvbmZpZyBmb3IgU1BJIGRldmljZSAxICovCisJdXNob3J0CQlWZW5kb3JJZDsJLyogMDQgVmVuZG9yIElEICovCisJdXNob3J0CQlEZXZpY2VJZDsJLyogMDUgRGV2aWNlIElEIChmdW5jdGlvbiAwKSAqLworCXVuc2lnbmVkIGNoYXIJUmV2aXNpb25JZDsJLyogMDYgUmV2aXNpb24gSUQgKi8KKwl1bnNpZ25lZCBjaGFyCUNsYXNzQ29kZVszXTsJLyogMDcgQ2xhc3MgQ29kZSBmb3IgUENJIGZ1bmN0aW9uIDAgKi8KKwl1bnNpZ25lZCBjaGFyCUludFBpbjE7CS8qIDA4IEludGVycnVwdCBwaW4gZm9yIFBDSSBmdW5jdGlvbiAxKi8KKwl1bnNpZ25lZCBjaGFyCUNsYXNzQ29kZTJbM107CS8qIDA5IENsYXNzIENvZGUgZm9yIFBDSSBmdW5jdGlvbiAxICovCisJdW5zaWduZWQgY2hhcglJbnRQaW4yOwkvKiAxMCBJbnRlcnJ1cHQgcGluIGZvciBQQ0kgZnVuY3Rpb24gMiovCisJdW5zaWduZWQgY2hhcglJbnRQaW4wOwkvKiAgICBJbnRlcnJ1cHQgcGluIGZvciBQQ0kgZnVuY3Rpb24gMCovCisJdW5zaWduZWQgY2hhcgkJTWluR3JhbnQ7CS8qIDExIE1pbmltdW0gZ3JhbnQgKi8KKwl1bnNpZ25lZCBjaGFyCQlNYXhMYXQ7CQkvKiAgICBNYXhpbXVtIExhdGVuY3kgKi8KKwl1c2hvcnQJCVN1YlN5c1ZJZDsJLyogMTIgU3Vic3lzdGVtIFZlbmRvciBJZCAqLworCXVzaG9ydAkJU3ViU3lzSWQ7CS8qIDEzIFN1YnN5c3RlbSBJRCAqLworCXVzaG9ydAkJRmxhc2hTaXplOwkvKiAxNCBGbGFzaCBzaXplIChieXRlcyAvIDRLKSAqLworCXVzaG9ydAkJRFNpemUyUGNpOwkvKiAxNSBEUkFNIHNpemUgdG8gUENJIChieXRlcyAvIDY0SykgKi8KKwl1c2hvcnQJCVJTaXplMlBjaTsJLyogMTYgRmxhc2ggKFJPTSBleHRlbnNpb24pIHNpemUgdG8KKwkJCQkJCVBDSSAoYnl0ZXMgLyA0SykgKi8KKwl1c2hvcnQJCURldmljZUlkMTsJLyogMTcgRGV2aWNlIElkIChmdW5jdGlvbiAxKSAqLworCXVzaG9ydAkJRGV2aWNlSWQyOwkvKiAxOCBEZXZpY2UgSWQgKGZ1bmN0aW9uIDIpICovCisJdXNob3J0CQlDZmdCeXRlNjsJLyogMTkgRGV2aWNlIFN0YXR1cyBDb25maWcgQnl0ZXMgNi03ICovCisJdXNob3J0CQlQTUVDYXBhYjsJLyogMjAgUG93ZXIgTWdtZW50IGNhcGFiaWxpdGllcyAqLworCXVuc2lnbmVkIGNoYXIJCU1TSUNhcGFiOwkvKiAyMSBNU0kgY2FwYWJpbGl0aWVzICovCisJdW5zaWduZWQgY2hhcgkJQ2xvY2tEaXZpZGVyOwkvKiAgICBDbG9jayBkaXZpZGVyICovCisJdXNob3J0CQlQY2lTdGF0dXNMb3c7CS8qIDIyIFBDSSBTdGF0dXMgYml0cyAxNTowICovCisJdXNob3J0CQlQY2lTdGF0dXNIaWdoOwkvKiAyMyBQQ0kgU3RhdHVzIGJpdHMgMzE6MTYgKi8KKwl1c2hvcnQJCURyYW1Db25maWdMb3c7CS8qIDI0IERSQU0gQ29uZmlndXJhdGlvbiBiaXRzIDE1OjAgKi8KKwl1c2hvcnQJCURyYW1Db25maWdIaWdoOwkvKiAyNSBEUkFNIENvbmZpZ3VyYXRpb24gYml0cyAzMToxNiAqLworCXVzaG9ydAkJRHJhbVNpemU7CS8qIDI2IERSQU0gc2l6ZSAoYnl0ZXMgLyA2NEspICovCisJdXNob3J0CQlHcGlvVGJpQ3RsOy8qIDI3IEdQSU8vVEJJIGNvbnRyb2xzIGZvciBmdW5jdGlvbnMgMS8wICovCisJdXNob3J0CQlFZXByb21TaXplOwkJLyogMjggRUVQUk9NIFNpemUgKi8KKwlzdHJ1Y3Qgc2xpY19jb25maWdfbWFjIE1hY0luZm9bMl07CS8qIDI5IE1BQyBhZGRyZXNzZXMgKDIgcG9ydHMpICovCisJdW5zaWduZWQgY2hhcglGcnVGb3JtYXQ7CS8qIDM1IEFsYWNyaXRlY2ggRlJVIGZvcm1hdCB0eXBlICovCisJc3RydWN0IGF0a19mcnUJQXRrRnJ1OwkvKiBBbGFjcml0ZWNoIEZSVSBpbmZvcm1hdGlvbiAqLworCXVuc2lnbmVkIGNoYXIJT2VtRnJ1Rm9ybWF0OwkvKiBvcHRpb25hbCBPRU0gRlJVIGZvcm1hdCB0eXBlICovCisJdW5pb24gb2VtZnJ1ICAgIE9lbUZydTsgICAgICAgICAvKiBvcHRpb25hbCBPRU0gRlJVIGluZm9ybWF0aW9uICovCisJdW5zaWduZWQgY2hhcglQYWRbNF07CS8qIFBhZCB0byAxMjggYnl0ZXMgLSBpbmNsdWRlcyAyIGNoZWNrc3VtIGJ5dGVzCisJCQkJICogKGlmIE9FTSBGUlUgaW5mbyBleGlzdHMpIGFuZCB0d28gdW51c2FibGUKKwkJCQkgKiBieXRlcyBhdCB0aGUgZW5kCisJCQkJICovCit9OworCisjZGVmaW5lCU1BWF9FRUNPREVfU0laRQlzaXplb2Yoc3RydWN0IHNsaWNfZWVwcm9tKQorI2RlZmluZSBNSU5fRUVDT0RFX1NJWkUJMHg2MgkvKiBjb2RlIHNpemUgd2l0aG91dCBvcHRpb25hbCBPRU0gRlJVIHN0dWZmICovCisKKy8qIFNMSUMgQ09ORklHIHN0cnVjdHVyZQorCisgVGhpcyBzdHJ1Y3R1cmUgbGl2ZXMgaW4gdGhlIENBUkQgc3RydWN0dXJlIGFuZCBpcyB2YWxpZCBmb3IgYWxsCisgYm9hcmQgdHlwZXMuICBJdCBpcyBmaWxsZWQgaW4gZnJvbSB0aGUgYXBwcm9wcmlhdGUgRUVQUk9NIHN0cnVjdHVyZQorIGJ5IFNsaWNHZXRDb25maWdEYXRhKCkuCisqLworc3RydWN0IHNsaWNfY29uZmlnIHsKKwlib29sIEVlcHJvbVZhbGlkOwkvKiBWYWxpZCBFRVBST00gZmxhZyAoY2hlY2tzdW0gZ29vZD8pICovCisJdXNob3J0CQlEcmFtU2l6ZTsJLyogRFJBTSBzaXplIChieXRlcyAvIDY0SykgKi8KKwlzdHJ1Y3Qgc2xpY19jb25maWdfbWFjIE1hY0luZm9bU0xJQ19OQlJfTUFDU107IC8qIE1BQyBhZGRyZXNzZXMgKi8KKwl1bnNpZ25lZCBjaGFyCQlGcnVGb3JtYXQ7CS8qIEFsYWNyaXRlY2ggRlJVIGZvcm1hdCB0eXBlICovCisJc3RydWN0IGF0a19mcnUJQXRrRnJ1OwkvKiBBbGFjcml0ZWNoIEZSVSBpbmZvcm1hdGlvbiAqLworCXVuc2lnbmVkIGNoYXIJT2VtRnJ1Rm9ybWF0OwkvKiBvcHRpb25hbCBPRU0gRlJVIGZvcm1hdCB0eXBlICovCisJdW5pb24geworCQlzdHJ1Y3QgdmVuZG9yMV9mcnUgICB2ZW5kb3IxX2ZydTsKKwkJc3RydWN0IHZlbmRvcjJfZnJ1ICAgdmVuZG9yMl9mcnU7CisJCXN0cnVjdCB2ZW5kb3IzX2ZydSAgIHZlbmRvcjNfZnJ1OworCQlzdHJ1Y3QgdmVuZG9yNF9mcnUgICB2ZW5kb3I0X2ZydTsKKwl9IE9lbUZydTsKK307CisKKyNwcmFnbWEgcGFjaygpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpY2luYy5oIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpY2luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMjg4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9zbGljaW5jLmgKQEAgLTAsMCArMSwxODUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAyIEFsYWNyaXRlY2gsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBTEFDUklURUNILCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQUxBQ1JJVEVDSCwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiBUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcKKyAqIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBGSUxFTkFNRTogc2xpY2luYy5oCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCBvdGhlciBpbmNsdWRlIGZpbGVzIGFuZCBwcm90b3R5cGUgZGVmaW5pdGlvbnMKKyAqIGZvciB0aGUgU0xJQ09TUyBkcml2ZXIuCisgKi8KKyNpZm5kZWYgX1NMSUNfSU5DTFVERV9IXworI2RlZmluZSBfU0xJQ19JTkNMVURFX0hfCisKKyNpbmNsdWRlICJzbGljX29zLmgiCisjaW5jbHVkZSAic2xpY2RiZy5oIgorI2luY2x1ZGUgInNsaWNody5oIgorI2luY2x1ZGUgInNsaWMuaCIKKworc3RhdGljIGludCBzbGljX2VudHJ5X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICAgICAgICAgICAgICAqcGNpZGV2LAorCQkJY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgICplbnQpOworc3RhdGljIHZvaWQgc2xpY19lbnRyeV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaWRldik7CisKK3N0YXRpYyB2b2lkIHNsaWNfaW5pdF9kcml2ZXIodm9pZCk7CitzdGF0aWMgaW50ICBzbGljX2VudHJ5X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CitzdGF0aWMgaW50ICBzbGljX2VudHJ5X2hhbHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CitzdGF0aWMgaW50ICBzbGljX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpOworc3RhdGljIGludCAgc2xpY194bWl0X3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworc3RhdGljIHZvaWQgc2xpY194bWl0X2ZhaWwoc3RydWN0IGFkYXB0ZXIgICAgKmFkYXB0ZXIsCisJCQlzdHJ1Y3Qgc2tfYnVmZiAgICpza2IsCisJCQl2b2lkICpjbWQsCisJCQl1MzIgICAgICAgICAgIHNrYnR5cGUsCisJCQl1MzIgICAgICAgICAgIHN0YXR1cyk7CitzdGF0aWMgdm9pZCBzbGljX2NvbmZpZ19wY2koc3RydWN0IHBjaV9kZXYgKnBjaWRldik7CitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNsaWNfcmN2cXVldWVfZ2V0bmV4dChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbGljX3JlZzMyX3dyaXRlKHZvaWQgX19pb21lbSAqcmVnLCB1MzIgdmFsdWUsIHVpbnQgZmx1c2gpOworc3RhdGljIGlubGluZSB2b2lkIHNsaWNfcmVnNjRfd3JpdGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHZvaWQgX19pb21lbSAqcmVnLAorCXUzMiB2YWx1ZSwgdm9pZCBfX2lvbWVtICpyZWdoLCB1MzIgcGFkZHJoLCB1aW50IGZsdXNoKTsKKworI2lmIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQKK3N0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc2xpY19nZXRfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisjZW5kaWYKKworc3RhdGljIGludCBzbGljX21hY19zZXRfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwdHIpOworc3RhdGljIHZvaWQgc2xpY19yY3ZfaGFuZGxlcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX2xpbmtfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX3htaXRfY29tcGxldGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY191cHJfcmVxdWVzdF9jb21wbGV0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIGlzcik7CitzdGF0aWMgaW50ICAgc2xpY19yc3BxdWV1ZV9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgICBzbGljX3JzcHF1ZXVlX3Jlc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB2b2lkICBzbGljX3JzcHF1ZXVlX2ZyZWUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHN0cnVjdCBzbGljX3JzcGJ1ZiAqc2xpY19yc3BxdWV1ZV9nZXRuZXh0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB2b2lkICBzbGljX2NtZHFtZW1faW5pdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCAgc2xpY19jbWRxbWVtX2ZyZWUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHUzMiAqc2xpY19jbWRxbWVtX2FkZHBhZ2Uoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIGludCAgIHNsaWNfY21kcV9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB2b2lkICBzbGljX2NtZHFfZnJlZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCAgc2xpY19jbWRxX3Jlc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB2b2lkICBzbGljX2NtZHFfYWRkY21kcGFnZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyICpwYWdlKTsKK3N0YXRpYyB2b2lkICBzbGljX2NtZHFfZ2V0ZG9uZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCAgc2xpY19jbWRxX3B1dGRvbmVfaXJxKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAorCQkJCQkJc3RydWN0IHNsaWNfaG9zdGNtZCAqY21kKTsKK3N0YXRpYyBzdHJ1Y3Qgc2xpY19ob3N0Y21kICpzbGljX2NtZHFfZ2V0ZnJlZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgaW50ICAgc2xpY19yY3ZxdWV1ZV9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgICBzbGljX3JjdnF1ZXVlX3Jlc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgICBzbGljX3JjdnF1ZXVlX2ZpbGwoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHUzMiBzbGljX3JjdnF1ZXVlX3JlaW5zZXJ0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK3N0YXRpYyB2b2lkICBzbGljX3JjdnF1ZXVlX2ZyZWUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19yY3ZfaGFuZGxlX2Vycm9yKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAorCQkJCQlzdHJ1Y3Qgc2xpY19yY3ZidWYgKnJjdmJ1Zik7CitzdGF0aWMgdm9pZCBzbGljX2FkYXB0ZXJfc2V0X2h3YWRkcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgaW50IHNsaWNfY2FyZF9pbml0KHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19pbnRhZ2dfc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1MzIgdmFsdWUpOworc3RhdGljIGludCAgc2xpY19jYXJkX2Rvd25sb2FkKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB1MzIgc2xpY19jYXJkX2xvY2F0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CisKK3N0YXRpYyB2b2lkIHNsaWNfaWZfc3RvcF9xdWV1ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX2lmX3N0YXJ0X3F1ZXVlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgIHNsaWNfaWZfaW5pdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgaW50ICBzbGljX2FkYXB0ZXJfYWxsb2NyZXNvdXJjZXMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19hZGFwdGVyX2ZyZWVyZXNvdXJjZXMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19saW5rX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIGxpbmtzcGVlZCwKKwkJCXUzMiBsaW5rZHVwbGV4KTsKK3N0YXRpYyB2b2lkIHNsaWNfdW5tYXBfbW1pb19zcGFjZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX2NhcmRfY2xlYW51cChzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQpOworc3RhdGljIHZvaWQgc2xpY19pbml0X2NsZWFudXAoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19zb2Z0X3Jlc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBib29sIHNsaWNfbWFjX2ZpbHRlcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCXN0cnVjdCBldGhlcl9oZWFkZXIgKmV0aGVyX2ZyYW1lKTsKK3N0YXRpYyB2b2lkIHNsaWNfbWFjX2FkZHJlc3NfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyB2b2lkIHNsaWNfbWFjX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX21jYXN0X3NldF9tYXNrKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgc2xpY19tY2FzdF9hZGRfbGlzdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgY2hhciAqYWRkcmVzcyk7CitzdGF0aWMgdW5zaWduZWQgY2hhciBzbGljX21jYXN0X2dldF9tYWNfaGFzaChjaGFyICptYWNhZGRyKTsKK3N0YXRpYyB2b2lkICBzbGljX21jYXN0X3NldF9iaXQoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGNoYXIgKmFkZHJlc3MpOworc3RhdGljIHZvaWQgc2xpY19jb25maWdfc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBib29sIGxpbmtjaGFuZ2UpOworc3RhdGljIHZvaWQgc2xpY19jb25maWdfY2xlYXIoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19jb25maWdfZ2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1MzIgY29uZmlnLAorCQkJdTMyIGNvbmZpZ2gpOworc3RhdGljIHZvaWQgc2xpY190aW1lcl9sb2FkX2NoZWNrKHVsb25nIGNvbnRleHQpOworc3RhdGljIHZvaWQgc2xpY190aW1lcl9waW5nKHVsb25nIGRldik7CitzdGF0aWMgdm9pZCBzbGljX2Fzc2VydF9mYWlsKHZvaWQpOworc3RhdGljIHVzaG9ydCBzbGljX2VlcHJvbV9ja3N1bShjaGFyICptLCBpbnQgbGVuKTsKKy8qIHVwciAqLworc3RhdGljIHZvaWQgc2xpY191cHJfc3RhcnQoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOworc3RhdGljIHZvaWQgc2xpY19saW5rX3Vwcl9jb21wbGV0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIElzcik7CitzdGF0aWMgaW50ICBzbGljX3Vwcl9yZXF1ZXN0KHN0cnVjdCBhZGFwdGVyICAgICphZGFwdGVyLAorCQkJdTMyICAgICAgICAgICAgdXByX3JlcXVlc3QsCisJCQl1MzIgICAgICAgICAgICB1cHJfZGF0YSwKKwkJCXUzMiAgICAgICAgICAgIHVwcl9kYXRhX2gsCisJCQl1MzIgICAgICAgICAgICB1cHJfYnVmZmVyLAorCQkJdTMyICAgICAgICAgICAgdXByX2J1ZmZlcl9oKTsKK3N0YXRpYyBpbnQgIHNsaWNfdXByX3F1ZXVlX3JlcXVlc3Qoc3RydWN0IGFkYXB0ZXIgICAgICAqYWRhcHRlciwKKwkJCQl1MzIgICAgICAgICAgICB1cHJfcmVxdWVzdCwKKwkJCQl1MzIgICAgICAgICAgICB1cHJfZGF0YSwKKwkJCQl1MzIgICAgICAgICAgICB1cHJfZGF0YV9oLAorCQkJCXUzMiAgICAgICAgICAgIHVwcl9idWZmZXIsCisJCQkJdTMyICAgICAgICAgICAgdXByX2J1ZmZlcl9oKTsKK3N0YXRpYyB2b2lkIHNsaWNfbWNhc3Rfc2V0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CitzdGF0aWMgdm9pZCBzbGljX21jYXN0X2luaXRfY3JjMzIodm9pZCk7CisKKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorc3RhdGljIGludCAgIHNsaWNfZHVtcF90aHJlYWQodm9pZCAqY29udGV4dCk7CitzdGF0aWMgdWludCAgc2xpY19pbml0X2R1bXBfdGhyZWFkKHN0cnVjdCBzbGljY2FyZCAqY2FyZCk7CitzdGF0aWMgdW5zaWduZWQgY2hhciBzbGljX2dldF9kdW1wX2luZGV4KGNoYXIgKnBhdGgpOworc3RhdGljIHUzMiBzbGljX2R1bXBfY2FyZChzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIGJvb2wgcmVzdW1lKTsKK3N0YXRpYyB1MzIgc2xpY19kdW1wX2hhbHQoc3RydWN0IHNsaWNjYXJkICpjYXJkLCB1bnNpZ25lZCBjaGFyIHByb2MpOworc3RhdGljIHUzMiBzbGljX2R1bXBfcmVnKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgdW5zaWduZWQgY2hhciBwcm9jKTsKK3N0YXRpYyB1MzIgc2xpY19kdW1wX2RhdGEoc3RydWN0IHNsaWNjYXJkICpjYXJkLCB1MzIgYWRkciwKKwkJCXVzaG9ydCBjb3VudCwgdW5zaWduZWQgY2hhciBkZXNjKTsKK3N0YXRpYyB1MzIgc2xpY19kdW1wX3F1ZXVlKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgdTMyIGJ1Zl9waHlzLAorCQkJdTMyIGJ1Zl9waHlzaCwgdTMyIHF1ZXVlKTsKK3N0YXRpYyB1MzIgc2xpY19kdW1wX2xvYWRfcXVldWUoc3RydWN0IHNsaWNjYXJkICpjYXJkLCB1MzIgZGF0YSwKKwkJCQl1MzIgcXVldWUpOworc3RhdGljIHUzMiBzbGljX2R1bXBfY2FtKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgdTMyIGFkZHIsCisJCQl1MzIgY291bnQsIHVuc2lnbmVkIGNoYXIgZGVzYyk7CisKK3N0YXRpYyB1MzIgc2xpY19kdW1wX3Jlc3VtZShzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIHVuc2lnbmVkIGNoYXIgcHJvYyk7CitzdGF0aWMgdTMyIHNsaWNfZHVtcF9zZW5kX2NtZChzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIHUzMiBjbWRfcGh5cywKKwkJCQl1MzIgY21kX3BoeXNoLCB1MzIgYnVmX3BoeXMsCisJCQkJdTMyIGJ1Zl9waHlzaCk7CisKKyNkZWZpbmUgY3JlYXRlX2ZpbGUoeCkgICAgICAgICBTVEFUVVNfU1VDQ0VTUworI2RlZmluZSB3cml0ZV9maWxlKHcsIHgsIHksIHopIFNUQVRVU19TVUNDRVNTCisjZGVmaW5lIGNsb3NlX2ZpbGUoeCkgICAgICAgICAgU1RBVFVTX1NVQ0NFU1MKKyNkZWZpbmUgcmVhZF9maWxlKHcsIHgsIHksIHopICBTVEFUVVNfU1VDQ0VTUworI2RlZmluZSBvcGVuX2ZpbGUoeCkgICAgICAgICAgIFNUQVRVU19TVUNDRVNTCisKKy8qIFBBR0VfU0laRSAqIDE2ICovCisjZGVmaW5lIERVTVBfUEFHRV9TSVpFICAgICAgICAgMHhGRkZGCisjZGVmaW5lIERVTVBfUEFHRV9TSVpFX0hBTEYgICAgMHg3RkZFCisjZW5kaWYKKworI2VuZGlmIC8qIF9TTElDX0lOQ0xVREVfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNvc3MuYyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL3NsaWNvc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjFhYzRiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3Mvc2xpY29zcy5jCkBAIC0wLDAgKzEsNTkzNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0ICAyMDAwLTIwMDYgQWxhY3JpdGVjaCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIEFsdGVybmF0aXZlbHksIHRoaXMgc29mdHdhcmUgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICgiR1BMIikgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFMQUNSSVRFQ0gsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTEFDUklURUNILCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbgorICogYXJlIHRob3NlIG9mIHRoZSBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZworICogb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZCwgb2YgQWxhY3JpdGVjaCwgSW5jLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZJTEVOQU1FOiBzbGljb3NzLmMKKyAqCisgKiBUaGUgU0xJQ09TUyBkcml2ZXIgZm9yIEFsYWNyaXRlY2gncyBJUy1OSUMgcHJvZHVjdHMuCisgKgorICogVGhpcyBkcml2ZXIgaXMgc3VwcG9zZWQgdG8gc3VwcG9ydDoKKyAqCisgKiAgICAgIE1vamF2ZSBjYXJkcyAoc2luZ2xlIHBvcnQgUENJIEdpZ2FiaXQpIGJvdGggY29wcGVyIGFuZCBmaWJlcgorICogICAgICBPYXNpcyBjYXJkcyAoc2luZ2xlIGFuZCBkdWFsIHBvcnQgUENJLXggR2lnYWJpdCkgY29wcGVyIGFuZCBmaWJlcgorICogICAgICBLYWxhaGFyaSBjYXJkcyAoZHVhbCBhbmQgcXVhZCBwb3J0IFBDSS1lIEdpZ2FiaXQpIGNvcHBlciBhbmQgZmliZXIKKyAqCisgKiBUaGUgZHJpdmVyIHdhcyBhY3V0YWxseSB0ZXN0ZWQgb24gT2FzaXMgYW5kIEthbGFoYXJpIGNhcmRzLgorICoKKyAqCisgKiBOT1RFOiBUaGlzIGlzIHRoZSBzdGFuZGFyZCwgbm9uLWFjY2VsZXJhdGVkIHZlcnNpb24gb2YgQWxhY3JpdGVjaCdzCisgKiAgICAgICBJUy1OSUMgZHJpdmVyLgorICovCisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisKKyNkZWZpbmUgU0xJQ19EVU1QX0VOQUJMRUQgICAgICAgICAgICAgICAwCisjZGVmaW5lIEtMVURHRV9GT1JfNEdCX0JPVU5EQVJZICAgICAgICAgMQorI2RlZmluZSBERUJVR19NSUNST0NPREUgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgU0xJQ19QUk9EVUNUSU9OX0JVSUxECSAgICAgICAgMQorI2RlZmluZSBTTElDX0ZBSUxVUkVfUkVTRVQJICAgICAgICAgICAgMQorI2RlZmluZSBEQkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgU0xJQ19BU1NFUlRfRU5BQkxFRAkJICAgICAgICAxCisjZGVmaW5lIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQJCQkxCisjZGVmaW5lIFNMSUNfR0VUX1NUQVRTX1RJTUVSX0VOQUJMRUQJMAorI2RlZmluZSBTTElDX1BJTkdfVElNRVJfRU5BQkxFRAkJICAgIDEKKyNkZWZpbmUgU0xJQ19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQJMAorI2RlZmluZSBTTElDX0lOVEVSUlVQVF9QUk9DRVNTX0xJTUlUCTEKKyNkZWZpbmUgTElOVVhfRlJFRVNfQURBUFRFUl9SRVNPVVJDRVMJMQorI2RlZmluZSBTTElDX09GRkxPQURfSVBfQ0hFQ0tTVU0JCTEKKyNkZWZpbmUgU1RBVFNfVElNRVJfSU5URVJWQUwJCQkyCisjZGVmaW5lIFBJTkdfVElNRVJfSU5URVJWQUwJCQkgICAgMQorCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9taWkuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl92bGFuLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorCisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorI2RlZmluZSBTTElDX0VUSFRPT0xfU1VQUE9SVCAgICAgMQorCisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgInNsaWNpbmMuaCIKKyNpbmNsdWRlICJnYmRvd25sb2FkLmgiCisjaW5jbHVkZSAiZ2JyY3Z1Y29kZS5oIgorI2luY2x1ZGUgIm9hc2lzcmN2dWNvZGUuaCIKKworI2lmZGVmIERFQlVHX01JQ1JPQ09ERQorI2luY2x1ZGUgIm9hc2lzZGJnZG93bmxvYWQuaCIKKyNlbHNlCisjaW5jbHVkZSAib2FzaXNkb3dubG9hZC5oIgorI2VuZGlmCisKKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorI2luY2x1ZGUgInNsaWNkdW1wLmgiCisjZW5kaWYKKworI2RlZmluZSBTTElDX1BPV0VSX01BTkFHRU1FTlQgIDAKKworc3RhdGljIHVpbnQgc2xpY19maXJzdF9pbml0ID0gMTsKK3N0YXRpYyBjaGFyICpzbGljX2Jhbm5lciA9ICJBbGFjcml0ZWNoIFNMSUMgVGVjaG5vbG9neSh0bSkgU2VydmVyICJcCisJCSJhbmQgU3RvcmFnZSBBY2NlbGVyYXRvciAoTm9uLUFjY2VsZXJhdGVkKVxuIjsKKworc3RhdGljIGNoYXIgKnNsaWNfcHJvY192ZXJzaW9uID0gIjIuMC4zNTEgIDIwMDYvMDcvMTQgMTI6MjY6MDAiOworc3RhdGljIGNoYXIgKnNsaWNfcHJvZHVjdF9uYW1lID0gIlNMSUMgVGVjaG5vbG9neSh0bSkgU2VydmVyICJcCisJCSJhbmQgU3RvcmFnZSBBY2NlbGVyYXRvciAoTm9uLUFjY2VsZXJhdGVkKSI7CitzdGF0aWMgY2hhciAqc2xpY192ZW5kb3IgPSAiQWxhY3JpdGVjaCwgSW5jLiI7CisKK3N0YXRpYyBpbnQgc2xpY19kZWJ1ZyA9IDE7CitzdGF0aWMgaW50IGRlYnVnID0gLTE7CitzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmhlYWRfbmV0ZGV2aWNlOworCitzdGF0aWMgc3RydWN0IGJhc2VfZHJpdmVyIHNsaWNfZ2xvYmFsID0geyB7fSwgMCwgMCwgMCwgMSwgTlVMTCwgTlVMTCB9Oworc3RhdGljIGludCBpbnRhZ2dfZGVsYXkgPSAxMDA7CitzdGF0aWMgdTMyIGR5bmFtaWNfaW50YWdnOworc3RhdGljIGludCBlcnJvcm1zZzsKK3N0YXRpYyBpbnQgZ29vZG1zZzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcmN2X2NvdW50Oworc3RhdGljIHN0cnVjdCBkZW50cnkgKnNsaWNfZGVidWdmczsKKworI2RlZmluZSBEUlZfTkFNRSAgICAgICAgICAic2xpY29zcyIKKyNkZWZpbmUgRFJWX1ZFUlNJT04gICAgICAgIjIuMC4xIgorI2RlZmluZSBEUlZfQVVUSE9SICAgICAgICAiQWxhY3JpdGVjaCwgSW5jLiBFbmdpbmVlcmluZyIKKyNkZWZpbmUgRFJWX0RFU0NSSVBUSU9OICAgIkFsYWNyaXRlY2ggU0xJQyBUZWNob25vbG9neSh0bSkgIlwKKwkJIk5vbi1BY2NlbGVyYXRlZCBEcml2ZXIiCisjZGVmaW5lIERSVl9DT1BZUklHSFQgICAgICJDb3B5cmlnaHQgIDIwMDAtMjAwNiBBbGFjcml0ZWNoLCBJbmMuICJcCisJCSJBbGwgcmlnaHRzIHJlc2VydmVkLiIKKyNkZWZpbmUgUEZYCQkgICBEUlZfTkFNRSAiICIKKworTU9EVUxFX0FVVEhPUihEUlZfQVVUSE9SKTsKK01PRFVMRV9ERVNDUklQVElPTihEUlZfREVTQ1JJUFRJT04pOworTU9EVUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQTCIpOworCittb2R1bGVfcGFyYW0oZHluYW1pY19pbnRhZ2csIGludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKGR5bmFtaWNfaW50YWdnLCAiRHluYW1pYyBJbnRlcnJ1cHQgQWdncmVnYXRpb24gU2V0dGluZyIpOworbW9kdWxlX3BhcmFtKGludGFnZ19kZWxheSwgaW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MoaW50YWdnX2RlbGF5LCAidVNlYyBJbnRlcnJ1cHQgQWdncmVnYXRpb24gRGVsYXkiKTsKKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHNsaWNfcGNpX3RibFtdIF9fZGV2aW5pdGRhdGEgPSB7CisJe1BDSV9WRU5ET1JfSURfQUxBQ1JJVEVDSCwKKwkgU0xJQ18xR0JfREVWSUNFX0lELAorCSBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELH0sCisJe1BDSV9WRU5ET1JfSURfQUxBQ1JJVEVDSCwKKwkgU0xJQ18yR0JfREVWSUNFX0lELAorCSBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELH0sCisJezAsfQorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHNsaWNfcGNpX3RibCk7CisKKyNkZWZpbmUgU0xJQ19HRVRfU0xJQ19IQU5ETEUoX2FkYXB0ZXIsIF9wc2xpY19oYW5kbGUpICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmX2FkYXB0ZXItPmhhbmRsZV9sb2NrLmxvY2ssICAgICAgICAgICAgICAgICAgICAgIFwKKwkJCV9hZGFwdGVyLT5oYW5kbGVfbG9jay5mbGFncyk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBfcHNsaWNfaGFuZGxlICA9ICBfYWRhcHRlci0+cGZyZWVfc2xpY19oYW5kbGVzOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX3BzbGljX2hhbmRsZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlBU1NFUlQoX3BzbGljX2hhbmRsZS0+dHlwZSA9PSBTTElDX0hBTkRMRV9GUkVFKTsgICAgICAgICAgICAgICAgXAorCV9hZGFwdGVyLT5wZnJlZV9zbGljX2hhbmRsZXMgPSBfcHNsaWNfaGFuZGxlLT5uZXh0OyAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmX2FkYXB0ZXItPmhhbmRsZV9sb2NrLmxvY2ssICAgICAgICAgICAgICAgICBcCisJCQlfYWRhcHRlci0+aGFuZGxlX2xvY2suZmxhZ3MpOyAgICAgICAgICAgICAgICAgICBcCit9CisKKyNkZWZpbmUgU0xJQ19GUkVFX1NMSUNfSEFORExFKF9hZGFwdGVyLCBfcHNsaWNfaGFuZGxlKSAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfcHNsaWNfaGFuZGxlLT50eXBlID0gU0xJQ19IQU5ETEVfRlJFRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmX2FkYXB0ZXItPmhhbmRsZV9sb2NrLmxvY2ssICAgICAgICAgICAgICAgICAgICAgIFwKKwkJCV9hZGFwdGVyLT5oYW5kbGVfbG9jay5mbGFncyk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBfcHNsaWNfaGFuZGxlLT5uZXh0ID0gX2FkYXB0ZXItPnBmcmVlX3NsaWNfaGFuZGxlczsgICAgICAgICAgICAgICAgIFwKKyAgICBfYWRhcHRlci0+cGZyZWVfc2xpY19oYW5kbGVzID0gX3BzbGljX2hhbmRsZTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZfYWRhcHRlci0+aGFuZGxlX2xvY2subG9jaywgICAgICAgICAgICAgICAgIFwKKwkJCV9hZGFwdGVyLT5oYW5kbGVfbG9jay5mbGFncyk7ICAgICAgICAgICAgICAgICAgIFwKK30KKworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19pbml0KHZvaWQpOworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19jbGVhbnVwKHZvaWQpOworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19hZGFwdGVyX2NyZWF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX2RlYnVnX2FkYXB0ZXJfZGVzdHJveShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzbGljX2RlYnVnX2NhcmRfY3JlYXRlKHN0cnVjdCBzbGljY2FyZCAqY2FyZCk7CitzdGF0aWMgdm9pZCBzbGljX2RlYnVnX2NhcmRfZGVzdHJveShzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQpOworCitzdGF0aWMgaW5saW5lIHZvaWQgc2xpY19yZWczMl93cml0ZSh2b2lkIF9faW9tZW0gKnJlZywgdTMyIHZhbHVlLCB1aW50IGZsdXNoKQoreworCXdyaXRlbCh2YWx1ZSwgcmVnKTsKKwlpZiAoZmx1c2gpCisJCW1iKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbGljX3JlZzY0X3dyaXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAorCQkJICAgICAgIHZvaWQgX19pb21lbSAqcmVnLAorCQkJICAgICAgIHUzMiB2YWx1ZSwKKwkJCSAgICAgICB2b2lkIF9faW9tZW0gKnJlZ2gsIHUzMiBwYWRkcmgsIHVpbnQgZmx1c2gpCit7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmFkYXB0ZXItPmJpdDY0cmVnbG9jay5sb2NrLAorCQkJCWFkYXB0ZXItPmJpdDY0cmVnbG9jay5mbGFncyk7CisJaWYgKHBhZGRyaCAhPSBhZGFwdGVyLT5jdXJhZGRydXBwZXIpIHsKKwkJYWRhcHRlci0+Y3VyYWRkcnVwcGVyID0gcGFkZHJoOworCQl3cml0ZWwocGFkZHJoLCByZWdoKTsKKwl9CisJd3JpdGVsKHZhbHVlLCByZWcpOworCWlmIChmbHVzaCkKKwkJbWIoKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGFwdGVyLT5iaXQ2NHJlZ2xvY2subG9jaywKKwkJCQlhZGFwdGVyLT5iaXQ2NHJlZ2xvY2suZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBzbGljX2luaXRfZHJpdmVyKHZvaWQpCit7CisJaWYgKHNsaWNfZmlyc3RfaW5pdCkgeworCQlEQkdfTVNHKCJzbGljb3NzOiAlcyBzbGljX2ZpcnN0X2luaXQgc2V0IGppZmZpZXNbJWx4XVxuIiwKKwkJCV9fZnVuY19fLCBqaWZmaWVzKTsKKwkJc2xpY19maXJzdF9pbml0ID0gMDsKKwkJc3Bpbl9sb2NrX2luaXQoJnNsaWNfZ2xvYmFsLmRyaXZlcl9sb2NrLmxvY2spOworCQlzbGljX2RlYnVnX2luaXQoKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfZGJnX21hY2FkZHJzKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCURCR19NU0coIiAgKCVzKSBjdXJyICUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYXG4iLAorCQlhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzBdLAorCQlhZGFwdGVyLT5jdXJybWFjYWRkclsxXSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMl0sCisJCWFkYXB0ZXItPmN1cnJtYWNhZGRyWzNdLCBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSwKKwkJYWRhcHRlci0+Y3Vycm1hY2FkZHJbNV0pOworCURCR19NU0coIiAgKCVzKSBtYWMgICUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYXG4iLAorCQlhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPm1hY2FkZHJbMF0sCisJCWFkYXB0ZXItPm1hY2FkZHJbMV0sIGFkYXB0ZXItPm1hY2FkZHJbMl0sCisJCWFkYXB0ZXItPm1hY2FkZHJbM10sIGFkYXB0ZXItPm1hY2FkZHJbNF0sIGFkYXB0ZXItPm1hY2FkZHJbNV0pOworCXJldHVybjsKK30KKworI2lmZGVmIERFQlVHX1JFR0lTVEVSX1RSQUNFCitzdGF0aWMgdm9pZCBzbGljX2RiZ19yZWdpc3Rlcl90cmFjZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCQkJc3RydWN0IHNsaWNjYXJkICpjYXJkKQoreworCXVpbnQgaTsKKworCURCR19FUlJPUigiRHVtcCBSZWdpc3RlciBXcml0ZSBUcmFjZTogY3Vycl9peCA9PSAlZFxuIiwgY2FyZC0+ZGVidWdfaXgpOworCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisJCURCR19FUlJPUigiJTJkICVkICU0eCAleCAleFxuIiwKKwkJCSAgaSwgY2FyZC0+cmVnX3R5cGVbaV0sIGNhcmQtPnJlZ19vZmZzZXRbaV0sCisJCQkgIGNhcmQtPnJlZ192YWx1ZVtpXSwgY2FyZC0+cmVnX3ZhbHVlaFtpXSk7CisJfQorfQorfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNsaWNfaW5pdF9hZGFwdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCisJCQkgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LAorCQkJICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV90YmxfZW50cnksCisJCQkgICAgICB2b2lkIF9faW9tZW0gKm1lbWFkZHIsIGludCBjaGlwX2lkeCkKK3sKKwl1c2hvcnQgaW5kZXg7CisJc3RydWN0IHNsaWNfaGFuZGxlICpwc2xpY19oYW5kbGU7CisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKiluZXRkZXZfcHJpdihuZXRkZXYpOworLyoKKyAgICBEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpXG4gICAgbmV0ZGV2IFslcF1cbiAgICBhZGFwdGVyWyVwXVxuICAgICIKKwkgICAgInBjaWRldiBbJXBdXG4iLCBfX2Z1bmNfXywgbmV0ZGV2LT5uYW1lLCBuZXRkZXYsIGFkYXB0ZXIsIHBjaWRldik7Ki8KKy8qCWFkYXB0ZXItPnBjaWRldiA9IHBjaWRldjsqLworCWFkYXB0ZXItPnZlbmRpZCA9IHBjaV90YmxfZW50cnktPnZlbmRvcjsKKwlhZGFwdGVyLT5kZXZpZCA9IHBjaV90YmxfZW50cnktPmRldmljZTsKKwlhZGFwdGVyLT5zdWJzeXNpZCA9IHBjaV90YmxfZW50cnktPnN1YmRldmljZTsKKwlhZGFwdGVyLT5idXNudW1iZXIgPSBwY2lkZXYtPmJ1cy0+bnVtYmVyOworCWFkYXB0ZXItPnNsb3RudW1iZXIgPSAoKHBjaWRldi0+ZGV2Zm4gPj4gMykgJiAweDFGKTsKKwlhZGFwdGVyLT5mdW5jdGlvbm51bWJlciA9IChwY2lkZXYtPmRldmZuICYgMHg3KTsKKwlhZGFwdGVyLT5tZW1vcnlsZW5ndGggPSBwY2lfcmVzb3VyY2VfbGVuKHBjaWRldiwgMCk7CisJYWRhcHRlci0+c2xpY19yZWdzID0gKF9faW9tZW0gc3RydWN0IHNsaWNfcmVncyAqKW1lbWFkZHI7CisJYWRhcHRlci0+aXJxID0gcGNpZGV2LT5pcnE7CisvKglhZGFwdGVyLT5uZXRkZXYgPSBuZXRkZXY7Ki8KKwlhZGFwdGVyLT5uZXh0X25ldGRldmljZSA9IGhlYWRfbmV0ZGV2aWNlOworCWhlYWRfbmV0ZGV2aWNlID0gbmV0ZGV2OworCWFkYXB0ZXItPmNoaXBpZCA9IGNoaXBfaWR4OworCWFkYXB0ZXItPnBvcnQgPSAwOwkvKmFkYXB0ZXItPmZ1bmN0aW9ubnVtYmVyOyovCisJYWRhcHRlci0+Y2FyZGluZGV4ID0gYWRhcHRlci0+cG9ydDsKKwlhZGFwdGVyLT5tZW1vcnliYXNlID0gbWVtYWRkcjsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+dXByX2xvY2subG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPmJpdDY0cmVnbG9jay5sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+YWRhcHRlcl9sb2NrLmxvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5yZXNldF9sb2NrLmxvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5oYW5kbGVfbG9jay5sb2NrKTsKKworCWFkYXB0ZXItPmNhcmRfc2l6ZSA9IDE7CisJLyoKKwkgIEluaXRpYWxpemUgc2xpY19oYW5kbGUgYXJyYXkKKwkqLworCUFTU0VSVChTTElDX0NNRFFfTUFYQ01EUyA8PSAweEZGRkYpOworCS8qCisJIFN0YXJ0IHdpdGggMS4gIDAgaXMgYW4gaW52YWxpZCBob3N0IGhhbmRsZS4KKwkqLworCWZvciAoaW5kZXggPSAxLCBwc2xpY19oYW5kbGUgPSAmYWRhcHRlci0+c2xpY19oYW5kbGVzWzFdOworCSAgICAgaW5kZXggPCBTTElDX0NNRFFfTUFYQ01EUzsgaW5kZXgrKywgcHNsaWNfaGFuZGxlKyspIHsKKworCQlwc2xpY19oYW5kbGUtPnRva2VuLmhhbmRsZV9pbmRleCA9IGluZGV4OworCQlwc2xpY19oYW5kbGUtPnR5cGUgPSBTTElDX0hBTkRMRV9GUkVFOworCQlwc2xpY19oYW5kbGUtPm5leHQgPSBhZGFwdGVyLT5wZnJlZV9zbGljX2hhbmRsZXM7CisJCWFkYXB0ZXItPnBmcmVlX3NsaWNfaGFuZGxlcyA9IHBzbGljX2hhbmRsZTsKKwl9CisvKgorICAgIERCR19NU0coIi4uLi4uLi4uLlxuaXhbJWRdIHBoYW5kbGVbJXBdIHBmcmVlWyVwXSBuZXh0WyVwXVxuIiwKKwlpbmRleCwgcHNsaWNfaGFuZGxlLCBhZGFwdGVyLT5wZnJlZV9zbGljX2hhbmRsZXMsIHBzbGljX2hhbmRsZS0+bmV4dCk7Ki8KKwlhZGFwdGVyLT5wc2htZW0gPSAoc3RydWN0IHNsaWNfc2htZW0gKikKKwkJCQkJcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQlzaXplb2Yoc3RydWN0IHNsaWNfc2htZW0gKiksCisJCQkJCSZhZGFwdGVyLT4KKwkJCQkJcGh5c19zaG1lbSk7CisvKgorICAgICAgREJHX01TRygic2xpY29zczogJXMgKCVzKVxuICAgcHNobWVtICAgIFslcF1cbiAgIHBoeXNfc2htZW1bJXBdXG4iXAorCQkic2xpY19yZWdzIFslcF1cbiIsIF9fZnVuY19fLCBuZXRkZXYtPm5hbWUsIGFkYXB0ZXItPnBzaG1lbSwKKwkJKHZvaWQgKilhZGFwdGVyLT5waHlzX3NobWVtLCBhZGFwdGVyLT5zbGljX3JlZ3MpOworKi8KKwlBU1NFUlQoYWRhcHRlci0+cHNobWVtKTsKKworCW1lbXNldChhZGFwdGVyLT5wc2htZW0sIDAsIHNpemVvZihzdHJ1Y3Qgc2xpY19zaG1lbSkpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgaW50IF9fZGV2aW5pdCBzbGljX2VudHJ5X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lkZXYsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV90YmxfZW50cnkpCit7CisJc3RhdGljIGludCBjYXJkc19mb3VuZDsKKwlzdGF0aWMgaW50IGRpZF92ZXJzaW9uOworCWludCBlcnI7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKKwl2b2lkIF9faW9tZW0gKm1lbW1hcHBlZF9pb2FkZHIgPSBOVUxMOworCXUzMiBzdGF0dXMgPSAwOworCXVsb25nIG1taW9fc3RhcnQgPSAwOworCXVsb25nIG1taW9fbGVuID0gMDsKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSBOVUxMOworCisJREJHX01TRygic2xpY29zczogJXMgMi42IFZFUlNJT04gRU5URVIgamlmZmllc1slbHhdIGNwdSAlZFxuIiwKKwkJX19mdW5jX18sIGppZmZpZXMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisKKwlzbGljX2dsb2JhbC5keW5hbWljX2ludGFnZyA9IGR5bmFtaWNfaW50YWdnOworCisJZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpZGV2KTsKKworCURCR19NU0coIkNhbGwgcGNpX2VuYWJsZV9kZXZpY2UoJXApICBzdGF0dXNbJXhdXG4iLCBwY2lkZXYsIGVycik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWlmIChzbGljX2RlYnVnID4gMCAmJiBkaWRfdmVyc2lvbisrID09IDApIHsKKwkJcHJpbnRrKHNsaWNfYmFubmVyKTsKKwkJcHJpbnRrKHNsaWNfcHJvY192ZXJzaW9uKTsKKwl9CisKKwllcnIgPSBwY2lfc2V0X2RtYV9tYXNrKHBjaWRldiwgRE1BXzY0QklUX01BU0spOworCWlmICghZXJyKSB7CisJCURCR19NU0coInBjaV9zZXRfZG1hX21hc2soRE1BXzY0QklUX01BU0spIHN1Y2Nlc3NmdWxcbiIpOworCX0gZWxzZSB7CisJCWVyciA9IHBjaV9zZXRfZG1hX21hc2socGNpZGV2LCBETUFfMzJCSVRfTUFTSyk7CisJCWlmIChlcnIpIHsKKwkJCURCR19NU0cKKwkJCSAgICAoIk5vIHVzYWJsZSBETUEgY29uZmlndXJhdGlvbiwgYWJvcnRpbmcgIGVyclsleF1cbiIsCisJCQkgICAgIGVycik7CisJCQlyZXR1cm4gZXJyOworCQl9CisJCURCR19NU0coInBjaV9zZXRfZG1hX21hc2soRE1BXzMyQklUX01BU0spIHN1Y2Nlc3NmdWxcbiIpOworCX0KKworCURCR19NU0coIkNhbGwgcGNpX3JlcXVlc3RfcmVnaW9uc1xuIik7CisKKwllcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaWRldiwgRFJWX05BTUUpOworCWlmIChlcnIpIHsKKwkJREJHX01TRygicGNpX3JlcXVlc3RfcmVnaW9ucyBGQUlMRUQgZXJyWyV4XVxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlEQkdfTVNHKCJjYWxsIHBjaV9zZXRfbWFzdGVyXG4iKTsKKwlwY2lfc2V0X21hc3RlcihwY2lkZXYpOworCisJREJHX01TRygiY2FsbCBhbGxvY19ldGhlcmRldlxuIik7CisJbmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBhZGFwdGVyKSk7CisJaWYgKCFuZXRkZXYpIHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBlcnJfb3V0X2V4aXRfc2xpY19wcm9iZTsKKwl9CisJREJHX01TRygiYWxsb2NfZXRoZXJkZXYgZm9yIHNsaWMgbmV0ZGV2WyVwXVxuIiwgbmV0ZGV2KTsKKworCVNFVF9ORVRERVZfREVWKG5ldGRldiwgJnBjaWRldi0+ZGV2KTsKKworCXBjaV9zZXRfZHJ2ZGF0YShwY2lkZXYsIG5ldGRldik7CisJYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CisJYWRhcHRlci0+bmV0ZGV2ID0gbmV0ZGV2OworCWFkYXB0ZXItPnBjaWRldiA9IHBjaWRldjsKKworCW1taW9fc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpZGV2LCAwKTsKKwltbWlvX2xlbiA9IHBjaV9yZXNvdXJjZV9sZW4ocGNpZGV2LCAwKTsKKworCURCR19NU0coInNsaWNvc3M6IGNhbGwgaW9yZW1hcChtbWlvX3N0YXJ0WyVseF0sIG1taW9fbGVuWyVseF0pXG4iLAorCQltbWlvX3N0YXJ0LCBtbWlvX2xlbik7CisKKy8qICBtZW1tYXBwZWRfaW9hZGRyID0gICh1MzIpaW9yZW1hcF9ub2NhY2hlKG1taW9fc3RhcnQsIG1taW9fbGVuKTsqLworCW1lbW1hcHBlZF9pb2FkZHIgPSBpb3JlbWFwKG1taW9fc3RhcnQsIG1taW9fbGVuKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBNRU1NQVBQRURfSU9BRERSIFslcF1cbiIsIF9fZnVuY19fLAorCQltZW1tYXBwZWRfaW9hZGRyKTsKKwlpZiAoIW1lbW1hcHBlZF9pb2FkZHIpIHsKKwkJREJHX0VSUk9SKCIlcyBjYW5ub3QgcmVtYXAgTU1JTyByZWdpb24gJWx4IEAgJWx4XG4iLAorCQkJICBfX2Z1bmNfXywgbW1pb19sZW4sIG1taW9fc3RhcnQpOworCQlnb3RvIGVycl9vdXRfZnJlZV9tbWlvX3JlZ2lvbjsKKwl9CisKKwlEQkdfTVNHCisJICAgICgic2xpY29zczogJXMgZm91bmQgQWxhY3JpdGVjaCBTTElDT1NTIFBDSSwgTU1JTyBhdCAlcCwgIlwKKwkgICAgInN0YXJ0WyVseF0gbGVuWyVseF0sIElSUSAlZC5cbiIsCisJICAgICBfX2Z1bmNfXywgbWVtbWFwcGVkX2lvYWRkciwgbW1pb19zdGFydCwgbW1pb19sZW4sIHBjaWRldi0+aXJxKTsKKworCXNsaWNfY29uZmlnX3BjaShwY2lkZXYpOworCisJc2xpY19pbml0X2RyaXZlcigpOworCisJc2xpY19pbml0X2FkYXB0ZXIobmV0ZGV2LAorCQkJICBwY2lkZXYsIHBjaV90YmxfZW50cnksIG1lbW1hcHBlZF9pb2FkZHIsIGNhcmRzX2ZvdW5kKTsKKworCXN0YXR1cyA9IHNsaWNfY2FyZF9sb2NhdGUoYWRhcHRlcik7CisJaWYgKHN0YXR1cykgeworCQlEQkdfRVJST1IoIiVzIGNhbm5vdCBsb2NhdGUgY2FyZFxuIiwgX19mdW5jX18pOworCQlnb3RvIGVycl9vdXRfZnJlZV9tbWlvX3JlZ2lvbjsKKwl9CisKKwljYXJkID0gYWRhcHRlci0+Y2FyZDsKKworCWlmICghYWRhcHRlci0+YWxsb2NhdGVkKSB7CisJCWNhcmQtPmFkYXB0ZXJzX2FsbG9jYXRlZCsrOworCQlhZGFwdGVyLT5hbGxvY2F0ZWQgPSAxOworCX0KKworCURCR19NU0coInNsaWNvc3M6ICVzICAgIGNhcmQ6ICAgICAgICAgICAgICVwXG4iLCBfX2Z1bmNfXywKKwkJYWRhcHRlci0+Y2FyZCk7CisJREJHX01TRygic2xpY29zczogJXMgICAgY2FyZC0+YWRhcHRlclslZF0gPT0gWyVwXVxuIiwgX19mdW5jX18sCisJCSh1aW50KSBhZGFwdGVyLT5wb3J0LCBhZGFwdGVyKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAgICBjYXJkLT5hZGFwdGVyc19hbGxvY2F0ZWQgWyVkXVxuIiwgX19mdW5jX18sCisJCWNhcmQtPmFkYXB0ZXJzX2FsbG9jYXRlZCk7CisJREJHX01TRygic2xpY29zczogJXMgICAgY2FyZC0+YWRhcHRlcnNfYWN0aXZhdGVkIFslZF1cbiIsIF9fZnVuY19fLAorCQljYXJkLT5hZGFwdGVyc19hY3RpdmF0ZWQpOworCisJc3RhdHVzID0gc2xpY19jYXJkX2luaXQoY2FyZCwgYWRhcHRlcik7CisKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCWNhcmQtPnN0YXRlID0gQ0FSRF9GQUlMOworCQlhZGFwdGVyLT5zdGF0ZSA9IEFEQVBUX0ZBSUw7CisJCWFkYXB0ZXItPmxpbmtzdGF0ZSA9IExJTktfRE9XTjsKKwkJREJHX0VSUk9SKCJzbGljX2NhcmRfaW5pdCBGQUlMRUQgc3RhdHVzWyV4XVxuIiwgc3RhdHVzKTsKKwl9IGVsc2UgeworCQlzbGljX2FkYXB0ZXJfc2V0X2h3YWRkcihhZGFwdGVyKTsKKwl9CisKKwluZXRkZXYtPmJhc2VfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFkYXB0ZXItPm1lbW9yeWJhc2U7CisJbmV0ZGV2LT5pcnEgPSBhZGFwdGVyLT5pcnE7CisJbmV0ZGV2LT5vcGVuID0gc2xpY19lbnRyeV9vcGVuOworCW5ldGRldi0+c3RvcCA9IHNsaWNfZW50cnlfaGFsdDsKKwluZXRkZXYtPmhhcmRfc3RhcnRfeG1pdCA9IHNsaWNfeG1pdF9zdGFydDsKKwluZXRkZXYtPmRvX2lvY3RsID0gc2xpY19pb2N0bDsKKwluZXRkZXYtPnNldF9tYWNfYWRkcmVzcyA9IHNsaWNfbWFjX3NldF9hZGRyZXNzOworI2lmIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQKKwluZXRkZXYtPmdldF9zdGF0cyA9IHNsaWNfZ2V0X3N0YXRzOworI2VuZGlmCisJbmV0ZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBzbGljX21jYXN0X3NldF9saXN0OworCisJc2xpY19kZWJ1Z19hZGFwdGVyX2NyZWF0ZShhZGFwdGVyKTsKKworCXN0cmNweShuZXRkZXYtPm5hbWUsICJldGglZCIpOworCWVyciA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpOworCWlmIChlcnIpIHsKKwkJREJHX0VSUk9SKCJDYW5ub3QgcmVnaXN0ZXIgbmV0IGRldmljZSwgYWJvcnRpbmcuXG4iKTsKKwkJZ290byBlcnJfb3V0X3VubWFwOworCX0KKworCURCR19NU0cKKwkgICAgKCJzbGljb3NzOiBhZGRyIDB4JWx4LCBpcnEgJWQsIE1BQyBhZGRyICJcCisJICAgICAiJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlhcbiIsCisJICAgICBtbWlvX3N0YXJ0LCAvKnBjaV9yZXNvdXJjZV9zdGFydChwY2lkZXYsIDApLCAqLyBwY2lkZXYtPmlycSwKKwkgICAgIG5ldGRldi0+ZGV2X2FkZHJbMF0sIG5ldGRldi0+ZGV2X2FkZHJbMV0sIG5ldGRldi0+ZGV2X2FkZHJbMl0sCisJICAgICBuZXRkZXYtPmRldl9hZGRyWzNdLCBuZXRkZXYtPmRldl9hZGRyWzRdLCBuZXRkZXYtPmRldl9hZGRyWzVdKTsKKworCWNhcmRzX2ZvdW5kKys7CisJREJHX01TRygic2xpY29zczogJXMgRVhJVCBzdGF0dXNbJXhdIGppZmZpZXNbJWx4XSBjcHUgJWRcbiIsCisJCV9fZnVuY19fLCBzdGF0dXMsIGppZmZpZXMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisKKwlyZXR1cm4gc3RhdHVzOworCitlcnJfb3V0X3VubWFwOgorCWlvdW5tYXAobWVtbWFwcGVkX2lvYWRkcik7CisKK2Vycl9vdXRfZnJlZV9tbWlvX3JlZ2lvbjoKKwlyZWxlYXNlX21lbV9yZWdpb24obW1pb19zdGFydCwgbW1pb19sZW4pOworCitlcnJfb3V0X2V4aXRfc2xpY19wcm9iZToKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBjaWRldik7CisJREJHX0VSUk9SKCIlcyBFWElUIGppZmZpZXNbJWx4XSBjcHUgJWRcbiIsIF9fZnVuY19fLCBqaWZmaWVzLAorCQkgIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisKKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIGludCBzbGljX2VudHJ5X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBzbGljY2FyZCAqY2FyZCA9IGFkYXB0ZXItPmNhcmQ7CisJdTMyIGxvY2tlZCA9IDA7CisJaW50IHN0YXR1czsKKworCUFTU0VSVChhZGFwdGVyKTsKKwlBU1NFUlQoY2FyZCk7CisJREJHX01TRworCSAgICAoInNsaWNvc3M6ICVzIGFkYXB0ZXItPmFjdGl2YXRlZFslZF0gY2FyZC0+YWRhcHRlcnNbJXhdICJcCisJICAgICAiYWxsb2NkWyV4XVxuIiwgX19mdW5jX18sIGFkYXB0ZXItPmFjdGl2YXRlZCwKKwkgICAgIGNhcmQtPmFkYXB0ZXJzX2FjdGl2YXRlZCwKKwkgICAgIGNhcmQtPmFkYXB0ZXJzX2FsbG9jYXRlZCk7CisJREJHX01TRworCSAgICAoInNsaWNvc3M6ICVzICglcyk6IFtqaWZmaWVzWyVseF0gY3B1ICVkXSBkZXZbJXBdIGFkYXB0WyVwXSAiXAorCSAgICAgInBvcnRbJWRdIGNhcmRbJXBdXG4iLAorCSAgICAgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgamlmZmllcywgc21wX3Byb2Nlc3Nvcl9pZCgpLAorCSAgICAgYWRhcHRlci0+bmV0ZGV2LCBhZGFwdGVyLCBhZGFwdGVyLT5wb3J0LCBjYXJkKTsKKworCW5ldGlmX3N0b3BfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5sb2NrLAorCQkJCXNsaWNfZ2xvYmFsLmRyaXZlcl9sb2NrLmZsYWdzKTsKKwlsb2NrZWQgPSAxOworCWlmICghYWRhcHRlci0+YWN0aXZhdGVkKSB7CisJCWNhcmQtPmFkYXB0ZXJzX2FjdGl2YXRlZCsrOworCQlzbGljX2dsb2JhbC5udW1fc2xpY19wb3J0c19hY3RpdmUrKzsKKwkJYWRhcHRlci0+YWN0aXZhdGVkID0gMTsKKwl9CisJc3RhdHVzID0gc2xpY19pZl9pbml0KGFkYXB0ZXIpOworCisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQlpZiAoYWRhcHRlci0+YWN0aXZhdGVkKSB7CisJCQljYXJkLT5hZGFwdGVyc19hY3RpdmF0ZWQtLTsKKwkJCXNsaWNfZ2xvYmFsLm51bV9zbGljX3BvcnRzX2FjdGl2ZS0tOworCQkJYWRhcHRlci0+YWN0aXZhdGVkID0gMDsKKwkJfQorCQlpZiAobG9ja2VkKSB7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5sb2NrLAorCQkJCQkJc2xpY19nbG9iYWwuZHJpdmVyX2xvY2suZmxhZ3MpOworCQkJbG9ja2VkID0gMDsKKwkJfQorCQlyZXR1cm4gc3RhdHVzOworCX0KKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBzZXQgY2FyZC0+bWFzdGVyWyVwXSBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sCisJCWNhcmQtPm1hc3RlciwgYWRhcHRlcik7CisJaWYgKCFjYXJkLT5tYXN0ZXIpCisJCWNhcmQtPm1hc3RlciA9IGFkYXB0ZXI7CisjaWYgU0xJQ19EVU1QX0VOQUJMRUQKKwlpZiAoIShjYXJkLT5kdW1wdGhyZWFkX3J1bm5pbmcpKQorCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjYXJkLT5kdW1wX3dxKTsKKyNlbmRpZgorCisJaWYgKGxvY2tlZCkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5sb2NrLAorCQkJCQlzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5mbGFncyk7CisJCWxvY2tlZCA9IDA7CisJfQorI2lmIFNMSUNfRFVNUF9FTkFCTEVECisJaWYgKCEoY2FyZC0+ZHVtcHRocmVhZF9ydW5uaW5nKSkgeworCQlEQkdfTVNHKCJhdHRlbXB0IHRvIGluaXRpYWxpemUgZHVtcCB0aHJlYWRcbiIpOworCQlzdGF0dXMgPSBzbGljX2luaXRfZHVtcF90aHJlYWQoY2FyZCk7CisJCS8qCisJCUV2ZW4gaWYgdGhlIGR1bXAgdGhyZWFkIGZhaWxzLCB3ZSB3aWxsIGNvbnRpbnVlIGF0IHRoaXMgcG9pbnQKKwkJKi8KKwl9CisjZW5kaWYKKworCXJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIHZvaWQgX19kZXZleGl0IHNsaWNfZW50cnlfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwY2lkZXYpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lkZXYpOworCXUzMiBtbWlvX3N0YXJ0ID0gMDsKKwl1aW50IG1taW9fbGVuID0gMDsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBzbGljY2FyZCAqY2FyZDsKKworCUFTU0VSVChhZGFwdGVyKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBFTlRFUiBkZXZbJXBdIGFkYXB0ZXJbJXBdXG4iLCBfX2Z1bmNfXywgZGV2LAorCQlhZGFwdGVyKTsKKwlzbGljX2FkYXB0ZXJfZnJlZXJlc291cmNlcyhhZGFwdGVyKTsKKwlzbGljX3VubWFwX21taW9fc3BhY2UoYWRhcHRlcik7CisJREJHX01TRygic2xpY29zczogJXMgdW5yZWdpc3Rlcl9uZXRkZXZcbiIsIF9fZnVuY19fKTsKKwl1bnJlZ2lzdGVyX25ldGRldihkZXYpOworCisJbW1pb19zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2lkZXYsIDApOworCW1taW9fbGVuID0gcGNpX3Jlc291cmNlX2xlbihwY2lkZXYsIDApOworCisJREJHX01TRygic2xpY29zczogJXMgcmVsX3JlZ2lvbigwKSBzdGFydFsleF0gbGVuWyV4XVxuIiwgX19mdW5jX18sCisJCW1taW9fc3RhcnQsIG1taW9fbGVuKTsKKwlyZWxlYXNlX21lbV9yZWdpb24obW1pb19zdGFydCwgbW1pb19sZW4pOworCisJREJHX01TRygic2xpY29zczogJXMgaW91bm1hcCBkZXYtPmJhc2VfYWRkclsleF1cbiIsIF9fZnVuY19fLAorCQkodWludCkgZGV2LT5iYXNlX2FkZHIpOworCWlvdW5tYXAoKHZvaWQgX19pb21lbSAqKWRldi0+YmFzZV9hZGRyKTsKKwlBU1NFUlQoYWRhcHRlci0+Y2FyZCk7CisJY2FyZCA9IGFkYXB0ZXItPmNhcmQ7CisJQVNTRVJUKGNhcmQtPmFkYXB0ZXJzX2FsbG9jYXRlZCk7CisJY2FyZC0+YWRhcHRlcnNfYWxsb2NhdGVkLS07CisJYWRhcHRlci0+YWxsb2NhdGVkID0gMDsKKwlEQkdfTVNHCisJICAgICgic2xpY29zczogJXMgaW5pdFsleF0gYWxsb2NbJXhdIGNhcmRbJXBdIGFkYXB0ZXJbJXBdXG4iLAorCSAgICAgX19mdW5jX18sIGNhcmQtPmFkYXB0ZXJzX2FjdGl2YXRlZCwgY2FyZC0+YWRhcHRlcnNfYWxsb2NhdGVkLAorCSAgICAgY2FyZCwgYWRhcHRlcik7CisJaWYgKCFjYXJkLT5hZGFwdGVyc19hbGxvY2F0ZWQpIHsKKwkJc3RydWN0IHNsaWNjYXJkICpjdXJyX2NhcmQgPSBzbGljX2dsb2JhbC5zbGljX2NhcmQ7CisJCWlmIChjdXJyX2NhcmQgPT0gY2FyZCkgeworCQkJc2xpY19nbG9iYWwuc2xpY19jYXJkID0gY2FyZC0+bmV4dDsKKwkJfSBlbHNlIHsKKwkJCXdoaWxlIChjdXJyX2NhcmQtPm5leHQgIT0gY2FyZCkKKwkJCQljdXJyX2NhcmQgPSBjdXJyX2NhcmQtPm5leHQ7CisJCQlBU1NFUlQoY3Vycl9jYXJkKTsKKwkJCWN1cnJfY2FyZC0+bmV4dCA9IGNhcmQtPm5leHQ7CisJCX0KKwkJQVNTRVJUKHNsaWNfZ2xvYmFsLm51bV9zbGljX2NhcmRzKTsKKwkJc2xpY19nbG9iYWwubnVtX3NsaWNfY2FyZHMtLTsKKwkJc2xpY19jYXJkX2NsZWFudXAoY2FyZCk7CisJfQorCURCR19NU0coInNsaWNvc3M6ICVzIGRlYWxsb2NhdGUgZGV2aWNlXG4iLCBfX2Z1bmNfXyk7CisJa2ZyZWUoZGV2KTsKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBjaWRldik7CisJREJHX01TRygic2xpY29zczogJXMgRVhJVFxuIiwgX19mdW5jX18pOworfQorCitzdGF0aWMgaW50IHNsaWNfZW50cnlfaGFsdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSBhZGFwdGVyLT5jYXJkOworCV9faW9tZW0gc3RydWN0IHNsaWNfcmVncyAqc2xpY19yZWdzID0gYWRhcHRlci0+c2xpY19yZWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNsaWNfZ2xvYmFsLmRyaXZlcl9sb2NrLmxvY2ssCisJCQkJc2xpY19nbG9iYWwuZHJpdmVyX2xvY2suZmxhZ3MpOworCUFTU0VSVChjYXJkKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIEVOVEVSXG4iLCBfX2Z1bmNfXywgZGV2LT5uYW1lKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIGFjdHZ0ZFslZF0gYWxsb2NbJWRdIHN0YXRlWyV4XSBhZGFwdFslcF1cbiIsCisJCV9fZnVuY19fLCBkZXYtPm5hbWUsIGNhcmQtPmFkYXB0ZXJzX2FjdGl2YXRlZCwKKwkJY2FyZC0+YWRhcHRlcnNfYWxsb2NhdGVkLCBjYXJkLT5zdGF0ZSwgYWRhcHRlcik7CisJc2xpY19pZl9zdG9wX3F1ZXVlKGFkYXB0ZXIpOworCWFkYXB0ZXItPnN0YXRlID0gQURBUFRfRE9XTjsKKwlhZGFwdGVyLT5saW5rc3RhdGUgPSBMSU5LX0RPV047CisJYWRhcHRlci0+dXByX2xpc3QgPSBOVUxMOworCWFkYXB0ZXItPnVwcl9idXN5ID0gMDsKKwlhZGFwdGVyLT5kZXZmbGFnc19wcmV2ID0gMDsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIHNldCBhZGFwdGVyWyVwXSBzdGF0ZSB0byBBREFQVF9ET1dOKCVkKVxuIiwKKwkJX19mdW5jX18sIGRldi0+bmFtZSwgYWRhcHRlciwgYWRhcHRlci0+c3RhdGUpOworCUFTU0VSVChjYXJkLT5hZGFwdGVyW2FkYXB0ZXItPmNhcmRpbmRleF0gPT0gYWRhcHRlcik7CisJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pY3IsIElDUl9JTlRfT0ZGLCBGTFVTSCk7CisJYWRhcHRlci0+YWxsX3JlZ193cml0ZXMrKzsKKwlhZGFwdGVyLT5pY3JfcmVnX3dyaXRlcysrOworCXNsaWNfY29uZmlnX2NsZWFyKGFkYXB0ZXIpOworCURCR19NU0coInNsaWNvc3M6ICVzICglcykgZGV2WyVwXSBhZGFwdFslcF0gY2FyZFslcF1cbiIsCisJCV9fZnVuY19fLCBkZXYtPm5hbWUsIGRldiwgYWRhcHRlciwgY2FyZCk7CisJaWYgKGFkYXB0ZXItPmFjdGl2YXRlZCkgeworCQljYXJkLT5hZGFwdGVyc19hY3RpdmF0ZWQtLTsKKwkJc2xpY19nbG9iYWwubnVtX3NsaWNfcG9ydHNfYWN0aXZlLS07CisJCWFkYXB0ZXItPmFjdGl2YXRlZCA9IDA7CisJfQorI2lmZGVmIEFVVE9NQVRJQ19SRVNFVAorCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfcmVzZXRfaWZhY2UsIDAsIEZMVVNIKTsKKyNlbmRpZgorCS8qCisJICogIFJlc2V0IHRoZSBhZGFwdGVyJ3MgcnNwLCBjbWQsIGFuZCByY3YgcXVldWVzCisJICovCisJc2xpY19jbWRxX3Jlc2V0KGFkYXB0ZXIpOworCXNsaWNfcnNwcXVldWVfcmVzZXQoYWRhcHRlcik7CisJc2xpY19yY3ZxdWV1ZV9yZXNldChhZGFwdGVyKTsKKworI2lmZGVmIEFVVE9NQVRJQ19SRVNFVAorCWlmICghY2FyZC0+YWRhcHRlcnNfYWN0aXZhdGVkKSB7CisKKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorCQlpZiAoY2FyZC0+ZHVtcHRocmVhZF9ydW5uaW5nKSB7CisJCQl1aW50IHN0YXR1czsKKwkJCURCR19NU0coImF0dGVtcHQgdG8gdGVybWluYXRlIGR1bXAgdGhyZWFkIHBpZFsleF1cbiIsCisJCQkJY2FyZC0+ZHVtcF90YXNrX2lkKTsKKwkJCXN0YXR1cyA9IGtpbGxfcHJvYyhjYXJkLT5kdW1wX3Rhc2tfaWQtPnBpZCwgU0lHS0lMTCwgMSk7CisKKwkJCWlmICghc3RhdHVzKSB7CisJCQkJaW50IGNvdW50ID0gMTAgKiAxMDA7CisJCQkJd2hpbGUgKGNhcmQtPmR1bXB0aHJlYWRfcnVubmluZyAmJiAtLWNvdW50KSB7CisJCQkJCWN1cnJlbnQtPnN0YXRlID0gVEFTS19JTlRFUlJVUFRJQkxFOworCQkJCQlzY2hlZHVsZV90aW1lb3V0KDEpOworCQkJCX0KKworCQkJCWlmICghY291bnQpIHsKKwkJCQkJREJHX01TRworCQkJCQkgICAgKCJzbGljbW9uIHRocmVhZCBjbGVhbnVwIEZBSUxFRCBcCisJCQkJCSAgICAgcGlkWyV4XVxuIiwKKwkJCQkJICAgICBjYXJkLT5kdW1wX3Rhc2tfaWQtPnBpZCk7CisJCQkJfQorCQkJfQorCQl9CisjZW5kaWYKKwkJREJHX01TRygic2xpY29zczogJXMgKCVzKSBpbml0aWF0ZSBDQVJEX0hBTFRcbiIsIF9fZnVuY19fLAorCQkJZGV2LT5uYW1lKTsKKworCQlzbGljX2NhcmRfaW5pdChjYXJkLCBhZGFwdGVyKTsKKwl9CisjZW5kaWYKKworCURCR19NU0coInNsaWNvc3M6ICVzICglcykgRVhJVFxuIiwgX19mdW5jX18sIGRldi0+bmFtZSk7CisJREJHX01TRygic2xpY29zczogJXMgRVhJVFxuIiwgX19mdW5jX18pOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNsaWNfZ2xvYmFsLmRyaXZlcl9sb2NrLmxvY2ssCisJCQkJc2xpY19nbG9iYWwuZHJpdmVyX2xvY2suZmxhZ3MpOworCXJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIGludCBzbGljX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpCit7CisJQVNTRVJUKHJxKTsKKy8qCisgICAgICBEQkdfTVNHKCJzbGljb3NzOiAlcyBjbWRbJXhdIHJxWyVwXSBkZXZbJXBdXG4iLCBfX2Z1bmNfXywgY21kLCBycSwgZGV2KTsKKyovCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNJT0NTTElDU0VUSU5UQUdHOgorCQl7CisJCQlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKQorCQkJCQkJCW5ldGRldl9wcml2KGRldik7CisJCQl1MzIgZGF0YVs3XTsKKwkJCXUzMiBpbnRhZ2c7CisKKwkJCWlmIChjb3B5X2Zyb21fdXNlcihkYXRhLCBycS0+aWZyX2RhdGEsIDI4KSkgeworCQkJCURCR19FUlJPUgorCQkJCSAgICAoImNvcHlfZnJvbV91c2VyIEZBSUxFRCBnZXR0aW5nIGluaXRpYWwgXAorCQkJCSAgICAgcGFyYW1zXG4iKTsKKwkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCX0KKwkJCWludGFnZyA9IGRhdGFbMF07CisJCQlwcmludGsoS0VSTl9FTUVSRworCQkJICAgICAgICIlczogc2V0IGludGVycnVwdCBhZ2dyZWdhdGlvbiB0byAlZFxuIiwKKwkJCSAgICAgICBfX2Z1bmNfXywgaW50YWdnKTsKKwkJCXNsaWNfaW50YWdnX3NldChhZGFwdGVyLCBpbnRhZ2cpOworCQkJcmV0dXJuIDA7CisJCX0KKyNpZmRlZiBTTElDX1VTRVJfUkVRVUVTVF9EVU1QX0VOQUJMRUQKKwljYXNlIFNJT0NTTElDRFVNUENBUkQ6CisJCXsKKwkJCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopCisJCQkJCQkJZGV2LT5wcml2OworCQkJc3RydWN0IHNsaWNjYXJkICpjYXJkOworCisJCQlBU1NFUlQoYWRhcHRlcik7CisJCQlBU1NFUlQoYWRhcHRlci0+Y2FyZCkKKwkJCWNhcmQgPSBhZGFwdGVyLT5jYXJkOworCisJCQlEQkdfSU9DVEwoInNsaWNfaW9jdGwgIFNJT0NTTElDX0RVTVBfQ0FSRFxuIik7CisKKwkJCWlmIChjYXJkLT5kdW1wX3JlcXVlc3RlZCA9PSBTTElDX0RVTVBfRE9ORSkgeworCQkJCXByaW50ayhTTElDTEVWRUwKKwkJCQkgICAgICAgIlNMSUMgQ2FyZCBkdW1wIHRvIGJlIG92ZXJ3cml0dGVuXG4iKTsKKwkJCQljYXJkLT5kdW1wX3JlcXVlc3RlZCA9IFNMSUNfRFVNUF9SRVFVRVNURUQ7CisJCQl9IGVsc2UgaWYgKChjYXJkLT5kdW1wX3JlcXVlc3RlZCA9PSBTTElDX0RVTVBfUkVRVUVTVEVEKQorCQkJCSAgIHx8IChjYXJkLT5kdW1wX3JlcXVlc3RlZCA9PQorCQkJCSAgICAgICBTTElDX0RVTVBfSU5fUFJPR1JFU1MpKSB7CisJCQkJcHJpbnRrKFNMSUNMRVZFTAorCQkJCSAgICAgICAiU0xJQyBDYXJkIGR1bXAgUmVxdWVzdGVkIGJ1dCBhbHJlYWR5IFwKKwkJCQkJaW4gcHJvZ3Jlc3MuLi4gaWdub3JlXG4iKTsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRrKFNMSUNMRVZFTAorCQkJCSAgICAgICAiU0xJQyBDYXJkICMlZCBEdW1wIFJlcXVlc3RlZFxuIiwKKwkJCQkgICAgICAgY2FyZC0+Y2FyZG51bSk7CisJCQkJY2FyZC0+ZHVtcF9yZXF1ZXN0ZWQgPSBTTElDX0RVTVBfUkVRVUVTVEVEOworCQkJfQorCQkJcmV0dXJuIDA7CisJCX0KKyNlbmRpZgorCisjaWZkZWYgU0xJQ19UUkFDRV9EVU1QX0VOQUJMRUQKKwljYXNlIFNJT0NTTElDVFJBQ0VEVU1QOgorCQl7CisJCQl1bG9uZyBkYXRhWzddOworCQkJdWxvbmcgdmFsdWU7CisKKwkJCURCR19JT0NUTCgic2xpY19pb2N0bCAgU0lPQ1NMSUNfVFJBQ0VfRFVNUFxuIik7CisKKwkJCWlmIChjb3B5X2Zyb21fdXNlcihkYXRhLCBycS0+aWZyX2RhdGEsIDI4KSkgeworCQkJCVBSSU5UX0VSUk9SCisJCQkJICAgICgic2xpYzogY29weV9mcm9tX3VzZXIgRkFJTEVEIGdldHRpbmcgXAorCQkJCSAgICAgaW5pdGlhbCBzaW1iYSBwYXJhbVxuIik7CisJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQl9CisKKwkJCXZhbHVlID0gZGF0YVswXTsKKwkJCWlmICh0cmFjZW1vbl9yZXF1ZXN0ID09IFNMSUNfRFVNUF9ET05FKSB7CisJCQkJUFJJTlRfRVJST1IKKwkJCQkgICAgKCJBVEsgRGlhZ25vc3RpYyBUcmFjZSBEdW1wIFJlcXVlc3RlZFxuIik7CisJCQkJdHJhY2Vtb25fcmVxdWVzdCA9IFNMSUNfRFVNUF9SRVFVRVNURUQ7CisJCQkJdHJhY2Vtb25fcmVxdWVzdF90eXBlID0gdmFsdWU7CisJCQkJdHJhY2Vtb25fdGltZXN0YW1wID0gamlmZmllczsKKwkJCX0gZWxzZSBpZiAoKHRyYWNlbW9uX3JlcXVlc3QgPT0gU0xJQ19EVU1QX1JFUVVFU1RFRCkgfHwKKwkJCQkgICAodHJhY2Vtb25fcmVxdWVzdCA9PQorCQkJCSAgICBTTElDX0RVTVBfSU5fUFJPR1JFU1MpKSB7CisJCQkJUFJJTlRfRVJST1IKKwkJCQkgICAgKCJBVEsgRGlhZ25vc3RpYyBUcmFjZSBEdW1wIFJlcXVlc3RlZCBidXQgXAorCQkJCSAgICAgYWxyZWFkeSBpbiBwcm9ncmVzcy4uLiBpZ25vcmVcbiIpOworCQkJfSBlbHNlIHsKKwkJCQlQUklOVF9FUlJPUgorCQkJCSAgICAoIkFUSyBEaWFnbm9zdGljIFRyYWNlIER1bXAgUmVxdWVzdGVkXG4iKTsKKwkJCQl0cmFjZW1vbl9yZXF1ZXN0ID0gU0xJQ19EVU1QX1JFUVVFU1RFRDsKKwkJCQl0cmFjZW1vbl9yZXF1ZXN0X3R5cGUgPSB2YWx1ZTsKKwkJCQl0cmFjZW1vbl90aW1lc3RhbXAgPSBqaWZmaWVzOworCQkJfQorCQkJcmV0dXJuIDA7CisJCX0KKyNlbmRpZgorI2lmIFNMSUNfRVRIVE9PTF9TVVBQT1JUCisJY2FzZSBTSU9DRVRIVE9PTDoKKwkJeworCQkJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKikKKwkJCQkJCQluZXRkZXZfcHJpdihkZXYpOworCQkJc3RydWN0IGV0aHRvb2xfY21kIGRhdGE7CisJCQlzdHJ1Y3QgZXRodG9vbF9jbWQgZWNtZDsKKworCQkJQVNTRVJUKGFkYXB0ZXIpOworLyogICAgICAgICAgICAgICAgICAgICAgREJHX01TRygic2xpY29zczogJXMgU0lPQ0VUSFRPT0xcbiIsIF9fZnVuY19fKTsgKi8KKwkJCWlmIChjb3B5X2Zyb21fdXNlcigmZWNtZCwgcnEtPmlmcl9kYXRhLCBzaXplb2YoZWNtZCkpKQorCQkJCXJldHVybiAtRUZBVUxUOworCisJCQlpZiAoZWNtZC5jbWQgPT0gRVRIVE9PTF9HU0VUKSB7CisJCQkJZGF0YS5zdXBwb3J0ZWQgPQorCQkJCSAgICAoU1VQUE9SVEVEXzEwYmFzZVRfSGFsZiB8CisJCQkJICAgICBTVVBQT1JURURfMTBiYXNlVF9GdWxsIHwKKwkJCQkgICAgIFNVUFBPUlRFRF8xMDBiYXNlVF9IYWxmIHwKKwkJCQkgICAgIFNVUFBPUlRFRF8xMDBiYXNlVF9GdWxsIHwKKwkJCQkgICAgIFNVUFBPUlRFRF9BdXRvbmVnIHwgU1VQUE9SVEVEX01JSSk7CisJCQkJZGF0YS5wb3J0ID0gUE9SVF9NSUk7CisJCQkJZGF0YS50cmFuc2NlaXZlciA9IFhDVlJfSU5URVJOQUw7CisJCQkJZGF0YS5waHlfYWRkcmVzcyA9IDA7CisJCQkJaWYgKGFkYXB0ZXItPmxpbmtzcGVlZCA9PSBMSU5LXzEwME1CKQorCQkJCQlkYXRhLnNwZWVkID0gU1BFRURfMTAwOworCQkJCWVsc2UgaWYgKGFkYXB0ZXItPmxpbmtzcGVlZCA9PSBMSU5LXzEwTUIpCisJCQkJCWRhdGEuc3BlZWQgPSBTUEVFRF8xMDsKKwkJCQllbHNlCisJCQkJCWRhdGEuc3BlZWQgPSAwOworCisJCQkJaWYgKGFkYXB0ZXItPmxpbmtkdXBsZXggPT0gTElOS19GVUxMRCkKKwkJCQkJZGF0YS5kdXBsZXggPSBEVVBMRVhfRlVMTDsKKwkJCQllbHNlCisJCQkJCWRhdGEuZHVwbGV4ID0gRFVQTEVYX0hBTEY7CisKKwkJCQlkYXRhLmF1dG9uZWcgPSBBVVRPTkVHX0VOQUJMRTsKKwkJCQlkYXRhLm1heHR4cGt0ID0gMTsKKwkJCQlkYXRhLm1heHJ4cGt0ID0gMTsKKwkJCQlpZiAoY29weV90b191c2VyCisJCQkJICAgIChycS0+aWZyX2RhdGEsICZkYXRhLCBzaXplb2YoZGF0YSkpKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKworCQkJfSBlbHNlIGlmIChlY21kLmNtZCA9PSBFVEhUT09MX1NTRVQpIHsKKwkJCQlpZiAoIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpCisJCQkJCXJldHVybiAtRVBFUk07CisKKwkJCQlpZiAoYWRhcHRlci0+bGlua3NwZWVkID09IExJTktfMTAwTUIpCisJCQkJCWRhdGEuc3BlZWQgPSBTUEVFRF8xMDA7CisJCQkJZWxzZSBpZiAoYWRhcHRlci0+bGlua3NwZWVkID09IExJTktfMTBNQikKKwkJCQkJZGF0YS5zcGVlZCA9IFNQRUVEXzEwOworCQkJCWVsc2UKKwkJCQkJZGF0YS5zcGVlZCA9IDA7CisKKwkJCQlpZiAoYWRhcHRlci0+bGlua2R1cGxleCA9PSBMSU5LX0ZVTExEKQorCQkJCQlkYXRhLmR1cGxleCA9IERVUExFWF9GVUxMOworCQkJCWVsc2UKKwkJCQkJZGF0YS5kdXBsZXggPSBEVVBMRVhfSEFMRjsKKworCQkJCWRhdGEuYXV0b25lZyA9IEFVVE9ORUdfRU5BQkxFOworCQkJCWRhdGEubWF4dHhwa3QgPSAxOworCQkJCWRhdGEubWF4cnhwa3QgPSAxOworCQkJCWlmICgoZWNtZC5zcGVlZCAhPSBkYXRhLnNwZWVkKSB8fAorCQkJCSAgICAoZWNtZC5kdXBsZXggIT0gZGF0YS5kdXBsZXgpKSB7CisJCQkJCXUzMiBzcGVlZDsKKwkJCQkJdTMyIGR1cGxleDsKKworCQkJCQlpZiAoZWNtZC5zcGVlZCA9PSBTUEVFRF8xMCkgeworCQkJCQkJc3BlZWQgPSAwOworCQkJCQkJU0xJQ19ESVNQTEFZCisJCQkJCQkgICAgKCIlczogc2xpYyBFVEhUT09MIHNldCBcCisJCQkJCQkgICAgIGxpbmsgc3BlZWQ9PTEwTUIiLAorCQkJCQkJICAgICBkZXYtPm5hbWUpOworCQkJCQl9IGVsc2UgeworCQkJCQkJc3BlZWQgPSBQQ1JfU1BFRURfMTAwOworCQkJCQkJU0xJQ19ESVNQTEFZCisJCQkJCQkgICAgKCIlczogc2xpYyBFVEhUT09MIHNldCBcCisJCQkJCQkgICAgbGluayBzcGVlZD09MTAwTUIiLAorCQkJCQkJICAgICBkZXYtPm5hbWUpOworCQkJCQl9CisJCQkJCWlmIChlY21kLmR1cGxleCA9PSBEVVBMRVhfRlVMTCkgeworCQkJCQkJZHVwbGV4ID0gUENSX0RVUExFWF9GVUxMOworCQkJCQkJU0xJQ19ESVNQTEFZCisJCQkJCQkgICAgKCI6IGR1cGxleD09RlVMTFxuIik7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlkdXBsZXggPSAwOworCQkJCQkJU0xJQ19ESVNQTEFZCisJCQkJCQkgICAgKCI6IGR1cGxleD09SEFMRlxuIik7CisJCQkJCX0KKwkJCQkJc2xpY19saW5rX2NvbmZpZyhhZGFwdGVyLAorCQkJCQkJCSBzcGVlZCwgZHVwbGV4KTsKKwkJCQkJc2xpY19saW5rX2V2ZW50X2hhbmRsZXIoYWRhcHRlcik7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIDA7CisJCX0KKyNlbmRpZgorCWRlZmF1bHQ6CisvKiAgICAgICAgICAgICAgREJHX01TRygic2xpY29zczogJXMgVU5TVVBQT1JURURbJXhdXG4iLCBfX2Z1bmNfXywgY21kKTsgKi8KKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCX0KK30KKworI2RlZmluZSAgWE1JVF9GQUlMX0xJTktfU1RBVEUgICAgICAgICAgICAgICAxCisjZGVmaW5lICBYTUlUX0ZBSUxfWkVST19MRU5HVEggICAgICAgICAgICAgIDIKKyNkZWZpbmUgIFhNSVRfRkFJTF9IT1NUQ01EX0ZBSUwgICAgICAgICAgICAgMworCitzdGF0aWMgdm9pZCBzbGljX3htaXRfYnVpbGRfcmVxdWVzdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCSAgICAgc3RydWN0IHNsaWNfaG9zdGNtZCAqaGNtZCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgc2xpY19ob3N0NjRfY21kICppaGNtZDsKKwl1bG9uZyBwaHlzX2FkZHI7CisKKwlpaGNtZCA9ICZoY21kLT5jbWQ2NDsKKworCWloY21kLT5mbGFncyA9IChhZGFwdGVyLT5wb3J0IDw8IElIRkxHX0lGU0hGVCk7CisJaWhjbWQtPmNvbW1hbmQgPSBJSENNRF9YTVRfUkVROworCWloY21kLT51LnNsaWNfYnVmZmVycy50b3RsZW4gPSBza2ItPmxlbjsKKwlwaHlzX2FkZHIgPSBwY2lfbWFwX3NpbmdsZShhZGFwdGVyLT5wY2lkZXYsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sCisJCQlQQ0lfRE1BX1RPREVWSUNFKTsKKwlpaGNtZC0+dS5zbGljX2J1ZmZlcnMuYnVmc1swXS5wYWRkcmwgPSBTTElDX0dFVF9BRERSX0xPVyhwaHlzX2FkZHIpOworCWloY21kLT51LnNsaWNfYnVmZmVycy5idWZzWzBdLnBhZGRyaCA9IFNMSUNfR0VUX0FERFJfSElHSChwaHlzX2FkZHIpOworCWloY21kLT51LnNsaWNfYnVmZmVycy5idWZzWzBdLmxlbmd0aCA9IHNrYi0+bGVuOworI2lmIGRlZmluZWQoQ09ORklHX1g4Nl82NCkKKwloY21kLT5jbWRzaXplID0gKHUzMikgKCgoKHU2NCkmaWhjbWQtPnUuc2xpY19idWZmZXJzLmJ1ZnNbMV0gLQorCQkJCSAgICAgKHU2NCkgaGNtZCkgKyAzMSkgPj4gNSk7CisjZWxpZiBkZWZpbmVkKENPTkZJR19YODYpCisJaGNtZC0+Y21kc2l6ZSA9ICgoKCh1MzIpICZpaGNtZC0+dS5zbGljX2J1ZmZlcnMuYnVmc1sxXSAtCisJCQkgICAodTMyKSBoY21kKSArIDMxKSA+PiA1KTsKKyNlbHNlCisJU3RvcCBDb21waWxhdGlvbjsKKyNlbmRpZgorfQorCisjZGVmaW5lIE5PUk1BTF9FVEhGUkFNRSAgICAgMAorCitzdGF0aWMgaW50IHNsaWNfeG1pdF9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBzbGljY2FyZCAqY2FyZDsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKW5ldGRldl9wcml2KGRldik7CisJc3RydWN0IHNsaWNfaG9zdGNtZCAqaGNtZCA9IE5VTEw7CisJdTMyIHN0YXR1cyA9IDA7CisJdTMyIHNrYnR5cGUgPSBOT1JNQUxfRVRIRlJBTUU7CisJdm9pZCAqb2ZmbG9hZGNtZCA9IE5VTEw7CisKKwljYXJkID0gYWRhcHRlci0+Y2FyZDsKKwlBU1NFUlQoY2FyZCk7CisvKgorICAgIERCR19FUlJPUigieG1pdF9zdGFydCAoJXMpIEVOVEVSIHNrYlslcF0gbGVuWyVkXSBsaW5rc3RhdGVbJXhdIHN0YXRlWyV4XVxuIiwKKwlhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIHNrYiwgc2tiLT5sZW4sIGFkYXB0ZXItPmxpbmtzdGF0ZSwKKwkgYWRhcHRlci0+c3RhdGUpOworKi8KKwlpZiAoKGFkYXB0ZXItPmxpbmtzdGF0ZSAhPSBMSU5LX1VQKSB8fAorCSAgICAoYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfVVApIHx8IChjYXJkLT5zdGF0ZSAhPSBDQVJEX1VQKSkgeworCQlzdGF0dXMgPSBYTUlUX0ZBSUxfTElOS19TVEFURTsKKwkJZ290byB4bWl0X2ZhaWw7CisKKwl9IGVsc2UgaWYgKHNrYi0+bGVuID09IDApIHsKKwkJc3RhdHVzID0gWE1JVF9GQUlMX1pFUk9fTEVOR1RIOworCQlnb3RvIHhtaXRfZmFpbDsKKwl9CisKKwlpZiAoc2tidHlwZSA9PSBOT1JNQUxfRVRIRlJBTUUpIHsKKwkJaGNtZCA9IHNsaWNfY21kcV9nZXRmcmVlKGFkYXB0ZXIpOworCQlpZiAoIWhjbWQpIHsKKwkJCWFkYXB0ZXItPnhtaXRxX2Z1bGwgPSAxOworCQkJc3RhdHVzID0gWE1JVF9GQUlMX0hPU1RDTURfRkFJTDsKKwkJCWdvdG8geG1pdF9mYWlsOworCQl9CisJCUFTU0VSVChoY21kLT5wc2xpY19oYW5kbGUpOworCQlBU1NFUlQoaGNtZC0+Y21kNjQuaG9zdGhhbmRsZSA9PQorCQkgICAgICAgaGNtZC0+cHNsaWNfaGFuZGxlLT50b2tlbi5oYW5kbGVfdG9rZW4pOworCQloY21kLT5za2IgPSBza2I7CisJCWhjbWQtPmJ1c3kgPSAxOworCQloY21kLT50eXBlID0gU0xJQ19DTURfRFVNQjsKKwkJaWYgKHNrYnR5cGUgPT0gTk9STUFMX0VUSEZSQU1FKQorCQkJc2xpY194bWl0X2J1aWxkX3JlcXVlc3QoYWRhcHRlciwgaGNtZCwgc2tiKTsKKwl9CisJYWRhcHRlci0+c3RhdHMudHhfcGFja2V0cysrOworCWFkYXB0ZXItPnN0YXRzLnR4X2J5dGVzICs9IHNrYi0+bGVuOworCisjaWZkZWYgREVCVUdfRFVNUAorCWlmIChhZGFwdGVyLT5raWxsX2NhcmQpIHsKKwkJc3RydWN0IHNsaWNfaG9zdDY0X2NtZCBpaGNtZDsKKworCQlpaGNtZCA9ICZoY21kLT5jbWQ2NDsKKworCQlpaGNtZC0+ZmxhZ3MgfD0gMHg0MDsKKwkJYWRhcHRlci0+a2lsbF9jYXJkID0gMDsJLyogb25seSBkbyB0aGlzIG9uY2UgKi8KKwl9CisjZW5kaWYKKwlpZiAoaGNtZC0+cGFkZHJoID09IDApIHsKKwkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY19jYmFyLAorCQkJICAoaGNtZC0+cGFkZHJsIHwgaGNtZC0+Y21kc2l6ZSksIERPTlRfRkxVU0gpOworCX0gZWxzZSB7CisJCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCQkgICAgYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2NiYXI2NCwKKwkJCSAgICAoaGNtZC0+cGFkZHJsIHwgaGNtZC0+Y21kc2l6ZSksCisJCQkgICAgYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsCisJCQkgICAgaGNtZC0+cGFkZHJoLCBET05UX0ZMVVNIKTsKKwl9Cit4bWl0X2RvbmU6CisJcmV0dXJuIDA7Cit4bWl0X2ZhaWw6CisJc2xpY194bWl0X2ZhaWwoYWRhcHRlciwgc2tiLCBvZmZsb2FkY21kLCBza2J0eXBlLCBzdGF0dXMpOworCWdvdG8geG1pdF9kb25lOworfQorCitzdGF0aWMgdm9pZCBzbGljX3htaXRfZmFpbChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJICAgIHN0cnVjdCBza19idWZmICpza2IsCisJCSAgICB2b2lkICpjbWQsIHUzMiBza2J0eXBlLCB1MzIgc3RhdHVzKQoreworCWlmIChhZGFwdGVyLT54bWl0cV9mdWxsKQorCQlzbGljX2lmX3N0b3BfcXVldWUoYWRhcHRlcik7CisJaWYgKChjbWQgPT0gTlVMTCkgJiYgKHN0YXR1cyA8PSBYTUlUX0ZBSUxfSE9TVENNRF9GQUlMKSkgeworCQlzd2l0Y2ggKHN0YXR1cykgeworCQljYXNlIFhNSVRfRkFJTF9MSU5LX1NUQVRFOgorCQkJREJHX0VSUk9SCisJCQkgICAgKCIoJXMpIHJlamVjdCB4bWl0IHNrYlslcDogJXhdIGxpbmtzdGF0ZVslc10gXAorCQkJICAgICBhZGFwdGVyWyVzOiVkXSBjYXJkWyVzOiVkXVxuIiwKKwkJCSAgICAgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBza2IsIHNrYi0+cGt0X3R5cGUsCisJCQkgICAgIFNMSUNfTElOS1NUQVRFKGFkYXB0ZXItPmxpbmtzdGF0ZSksCisJCQkgICAgIFNMSUNfQURBUFRFUl9TVEFURShhZGFwdGVyLT5zdGF0ZSksIGFkYXB0ZXItPnN0YXRlLAorCQkJICAgICBTTElDX0NBUkRfU1RBVEUoYWRhcHRlci0+Y2FyZC0+c3RhdGUpLAorCQkJICAgICBhZGFwdGVyLT5jYXJkLT5zdGF0ZSk7CisJCQlicmVhazsKKwkJY2FzZSBYTUlUX0ZBSUxfWkVST19MRU5HVEg6CisJCQlEQkdfRVJST1IKKwkJCSAgICAoInhtaXRfc3RhcnQgc2tiLT5sZW4gPT0gMCBza2JbJXBdIHR5cGVbJXhdISEhISBcbiIsCisJCQkgICAgIHNrYiwgc2tiLT5wa3RfdHlwZSk7CisJCQlicmVhazsKKwkJY2FzZSBYTUlUX0ZBSUxfSE9TVENNRF9GQUlMOgorCQkJREJHX0VSUk9SCisJCQkgICAgKCJ4bWl0X3N0YXJ0IHNrYlslcF0gdHlwZVsleF0gTm8gaG9zdCBjb21tYW5kcyBcCisJCQkgICAgIGF2YWlsYWJsZSAhISEhIFxuIiwKKwkJCSAgICAgc2tiLCBza2ItPnBrdF90eXBlKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJQVNTRVJUKDApOworCQl9CisJfQorCWRldl9rZnJlZV9za2Ioc2tiKTsKKwlhZGFwdGVyLT5zdGF0cy50eF9kcm9wcGVkKys7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfcmN2X2hhbmRsZV9lcnJvcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCQkJc3RydWN0IHNsaWNfcmN2YnVmICpyY3ZidWYpCit7CisJc3RydWN0IHNsaWNfaGRkcl93ZHMgKmhkciA9IChzdHJ1Y3Qgc2xpY19oZGRyX3dkcyAqKXJjdmJ1Zi0+ZGF0YTsKKworCWlmIChhZGFwdGVyLT5kZXZpZCAhPSBTTElDXzFHQl9ERVZJQ0VfSUQpIHsKKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzMTQgJiBWUkhTVEFUXzgwMk9FKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLm9mbG93ODAyKys7CisJCWlmIChoZHItPmZyYW1lX3N0YXR1czE0ICYgVlJIU1RBVF9UUE9GTE8pCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuVHBydG9mbG93Kys7CisJCWlmIChoZHItPmZyYW1lX3N0YXR1c19iMTQgJiBWUkhTVEFUQl84MDJVRSkKKwkJCWFkYXB0ZXItPmlmX2V2ZW50cy51ZmxvdzgwMisrOworCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNfYjE0ICYgVlJIU1RBVEJfUkNWRSkgeworCQkJYWRhcHRlci0+aWZfZXZlbnRzLnJjdmVhcmx5Kys7CisJCQlhZGFwdGVyLT5zdGF0cy5yeF9maWZvX2Vycm9ycysrOworCQl9CisJCWlmIChoZHItPmZyYW1lX3N0YXR1c19iMTQgJiBWUkhTVEFUQl9CVUZGKSB7CisJCQlhZGFwdGVyLT5pZl9ldmVudHMuQnVmb3YrKzsKKwkJCWFkYXB0ZXItPnN0YXRzLnJ4X292ZXJfZXJyb3JzKys7CisJCX0KKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzX2IxNCAmIFZSSFNUQVRCX0NBUlJFKSB7CisJCQlhZGFwdGVyLT5pZl9ldmVudHMuQ2FycmUrKzsKKwkJCWFkYXB0ZXItPnN0YXRzLnR4X2NhcnJpZXJfZXJyb3JzKys7CisJCX0KKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzX2IxNCAmIFZSSFNUQVRCX0xPTkdFKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkxvbmdlKys7CisJCWlmIChoZHItPmZyYW1lX3N0YXR1c19iMTQgJiBWUkhTVEFUQl9QUkVBKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkludnArKzsKKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzX2IxNCAmIFZSSFNUQVRCX0NSQykgeworCQkJYWRhcHRlci0+aWZfZXZlbnRzLkNyYysrOworCQkJYWRhcHRlci0+c3RhdHMucnhfY3JjX2Vycm9ycysrOworCQl9CisJCWlmIChoZHItPmZyYW1lX3N0YXR1c19iMTQgJiBWUkhTVEFUQl9EUkJMKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkRyYmwrKzsKKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzX2IxNCAmIFZSSFNUQVRCX0NPREUpCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuQ29kZSsrOworCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNfYjE0ICYgVlJIU1RBVEJfVFBDU1VNKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLlRwQ3N1bSsrOworCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNfYjE0ICYgVlJIU1RBVEJfVFBITEVOKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLlRwSGxlbisrOworCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNfYjE0ICYgVlJIU1RBVEJfSVBDU1VNKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwQ3N1bSsrOworCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNfYjE0ICYgVlJIU1RBVEJfSVBMRVJSKQorCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwTGVuKys7CisJCWlmIChoZHItPmZyYW1lX3N0YXR1c19iMTQgJiBWUkhTVEFUQl9JUEhFUlIpCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuSXBIbGVuKys7CisJfSBlbHNlIHsKKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzR0IgJiBWR0JTVEFUX1hQRVJSKSB7CisJCQl1MzIgeGVyciA9IGhkci0+ZnJhbWVfc3RhdHVzR0IgPj4gVkdCU1RBVF9YRVJSU0hGVDsKKworCQkJaWYgKHhlcnIgPT0gVkdCU1RBVF9YQ1NFUlIpCisJCQkJYWRhcHRlci0+aWZfZXZlbnRzLlRwQ3N1bSsrOworCQkJaWYgKHhlcnIgPT0gVkdCU1RBVF9YVUZMT1cpCisJCQkJYWRhcHRlci0+aWZfZXZlbnRzLlRwcnRvZmxvdysrOworCQkJaWYgKHhlcnIgPT0gVkdCU1RBVF9YSExFTikKKwkJCQlhZGFwdGVyLT5pZl9ldmVudHMuVHBIbGVuKys7CisJCX0KKwkJaWYgKGhkci0+ZnJhbWVfc3RhdHVzR0IgJiBWR0JTVEFUX05FVEVSUikgeworCQkJdTMyIG5lcnIgPQorCQkJICAgIChoZHItPgorCQkJICAgICBmcmFtZV9zdGF0dXNHQiA+PiBWR0JTVEFUX05FUlJTSEZUKSAmCisJCQkgICAgVkdCU1RBVF9ORVJSTVNLOworCQkJaWYgKG5lcnIgPT0gVkdCU1RBVF9OQ1NFUlIpCisJCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwQ3N1bSsrOworCQkJaWYgKG5lcnIgPT0gVkdCU1RBVF9OVUZMT1cpCisJCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwTGVuKys7CisJCQlpZiAobmVyciA9PSBWR0JTVEFUX05ITEVOKQorCQkJCWFkYXB0ZXItPmlmX2V2ZW50cy5JcEhsZW4rKzsKKwkJfQorCQlpZiAoaGRyLT5mcmFtZV9zdGF0dXNHQiAmIFZHQlNUQVRfTE5LRVJSKSB7CisJCQl1MzIgbGVyciA9IGhkci0+ZnJhbWVfc3RhdHVzR0IgJiBWR0JTVEFUX0xFUlJNU0s7CisKKwkJCWlmIChsZXJyID09IFZHQlNUQVRfTERFQVJMWSkKKwkJCQlhZGFwdGVyLT5pZl9ldmVudHMucmN2ZWFybHkrKzsKKwkJCWlmIChsZXJyID09IFZHQlNUQVRfTEJPRkxPKQorCQkJCWFkYXB0ZXItPmlmX2V2ZW50cy5CdWZvdisrOworCQkJaWYgKGxlcnIgPT0gVkdCU1RBVF9MQ09ERVJSKQorCQkJCWFkYXB0ZXItPmlmX2V2ZW50cy5Db2RlKys7CisJCQlpZiAobGVyciA9PSBWR0JTVEFUX0xEQkxOQkwpCisJCQkJYWRhcHRlci0+aWZfZXZlbnRzLkRyYmwrKzsKKwkJCWlmIChsZXJyID09IFZHQlNUQVRfTENSQ0VSUikKKwkJCQlhZGFwdGVyLT5pZl9ldmVudHMuQ3JjKys7CisJCQlpZiAobGVyciA9PSBWR0JTVEFUX0xPRkxPKQorCQkJCWFkYXB0ZXItPmlmX2V2ZW50cy5vZmxvdzgwMisrOworCQkJaWYgKGxlcnIgPT0gVkdCU1RBVF9MVUZMTykKKwkJCQlhZGFwdGVyLT5pZl9ldmVudHMudWZsb3c4MDIrKzsKKwkJfQorCX0KKwlyZXR1cm47Cit9CisKKyNkZWZpbmUgVENQX09GRkxPQURfRlJBTUVfUFVTSEZMQUcgIDB4MTAwMDAwMDAKKyNkZWZpbmUgTV9GQVNUX1BBVEggICAgICAgICAgICAgICAgIDB4MDA0MAorCitzdGF0aWMgdm9pZCBzbGljX3Jjdl9oYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCXN0cnVjdCBza19idWZmICpza2I7CisJc3RydWN0IHNsaWNfcmN2YnVmICpyY3ZidWY7CisJdTMyIGZyYW1lcyA9IDA7CisKKwl3aGlsZSAoKHNrYiA9IHNsaWNfcmN2cXVldWVfZ2V0bmV4dChhZGFwdGVyKSkpIHsKKwkJdTMyIHJ4X2J5dGVzOworCisJCUFTU0VSVChza2ItPmhlYWQpOworCQlyY3ZidWYgPSAoc3RydWN0IHNsaWNfcmN2YnVmICopc2tiLT5oZWFkOworCQlhZGFwdGVyLT5jYXJkLT5ldmVudHMrKzsKKwkJaWYgKHJjdmJ1Zi0+c3RhdHVzICYgSVJIRERSX0VSUikgeworCQkJYWRhcHRlci0+cnhfZXJyb3JzKys7CisJCQlzbGljX3Jjdl9oYW5kbGVfZXJyb3IoYWRhcHRlciwgcmN2YnVmKTsKKwkJCXNsaWNfcmN2cXVldWVfcmVpbnNlcnQoYWRhcHRlciwgc2tiKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFzbGljX21hY19maWx0ZXIoYWRhcHRlciwgKHN0cnVjdCBldGhlcl9oZWFkZXIgKikKKwkJCQkJcmN2YnVmLT5kYXRhKSkgeworI2lmIDAKKwkJCURCR19NU0cKKwkJCSAgICAoInNsaWNvc3M6ICVzICglcykgZHJvcCBmcmFtZSBkdWUgdG8gbWFjIGZpbHRlclxuIiwKKwkJCSAgICAgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSk7CisjZW5kaWYKKwkJCXNsaWNfcmN2cXVldWVfcmVpbnNlcnQoYWRhcHRlciwgc2tiKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXNrYl9wdWxsKHNrYiwgU0xJQ19SQ1ZCVUZfSEVBRFNJWkUpOworCQlyeF9ieXRlcyA9IChyY3ZidWYtPmxlbmd0aCAmIElSSEREUl9GTEVOX01TSyk7CisJCXNrYl9wdXQoc2tiLCByeF9ieXRlcyk7CisJCWFkYXB0ZXItPnN0YXRzLnJ4X3BhY2tldHMrKzsKKwkJYWRhcHRlci0+c3RhdHMucnhfYnl0ZXMgKz0gcnhfYnl0ZXM7CisjaWYgU0xJQ19PRkZMT0FEX0lQX0NIRUNLU1VNCisJCXNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7CisjZW5kaWYKKworCQlza2ItPmRldiA9IGFkYXB0ZXItPm5ldGRldjsKKwkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgc2tiLT5kZXYpOworCQluZXRpZl9yeChza2IpOworCisJCSsrZnJhbWVzOworI2lmIFNMSUNfSU5URVJSVVBUX1BST0NFU1NfTElNSVQKKwkJaWYgKGZyYW1lcyA+PSBTTElDX1JDVlFfTUFYX1BST0NFU1NfSVNSKSB7CisJCQlhZGFwdGVyLT5yY3ZfaW50ZXJydXB0X3lpZWxkcysrOworCQkJYnJlYWs7CisJCX0KKyNlbmRpZgorCX0KKwlhZGFwdGVyLT5tYXhfaXNyX3JjdnMgPSBtYXgoYWRhcHRlci0+bWF4X2lzcl9yY3ZzLCBmcmFtZXMpOworfQorCitzdGF0aWMgdm9pZCBzbGljX3htaXRfY29tcGxldGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJc3RydWN0IHNsaWNfaG9zdGNtZCAqaGNtZDsKKwlzdHJ1Y3Qgc2xpY19yc3BidWYgKnJzcGJ1ZjsKKwl1MzIgZnJhbWVzID0gMDsKKwlzdHJ1Y3Qgc2xpY19oYW5kbGVfd29yZCBzbGljX2hhbmRsZV93b3JkOworCisJZG8geworCQlyc3BidWYgPSBzbGljX3JzcHF1ZXVlX2dldG5leHQoYWRhcHRlcik7CisJCWlmICghcnNwYnVmKQorCQkJYnJlYWs7CisJCWFkYXB0ZXItPnhtaXRfY29tcGxldGVzKys7CisJCWFkYXB0ZXItPmNhcmQtPmV2ZW50cysrOworCQkvKgorCQkgR2V0IHRoZSBjb21wbGV0ZSBob3N0IGNvbW1hbmQgYnVmZmVyCisJCSovCisJCXNsaWNfaGFuZGxlX3dvcmQuaGFuZGxlX3Rva2VuID0gcnNwYnVmLT5ob3N0aGFuZGxlOworCQlBU1NFUlQoc2xpY19oYW5kbGVfd29yZC5oYW5kbGVfaW5kZXgpOworCQlBU1NFUlQoc2xpY19oYW5kbGVfd29yZC5oYW5kbGVfaW5kZXggPD0gU0xJQ19DTURRX01BWENNRFMpOworCQloY21kID0KKwkJICAgIChzdHJ1Y3Qgc2xpY19ob3N0Y21kICopCisJCQlhZGFwdGVyLT5zbGljX2hhbmRsZXNbc2xpY19oYW5kbGVfd29yZC5oYW5kbGVfaW5kZXhdLgorCQkJCQkJCQkJYWRkcmVzczsKKy8qICAgICAgaGNtZCA9IChzdHJ1Y3Qgc2xpY19ob3N0Y21kICopIHJzcGJ1Zi0+aG9zdGhhbmRsZTsgKi8KKwkJQVNTRVJUKGhjbWQpOworCQlBU1NFUlQoaGNtZC0+cHNsaWNfaGFuZGxlID09CisJCSAgICAgICAmYWRhcHRlci0+c2xpY19oYW5kbGVzW3NsaWNfaGFuZGxlX3dvcmQuaGFuZGxlX2luZGV4XSk7CisvKgorICAgICAgREJHX0VSUk9SKCJ4bWl0X2NvbXBsZXRlICglcykgICBoY21kWyVwXSAgaG9zdGhhbmRsZVsleF1cbiIsCisJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSwgaGNtZCwgaGNtZC0+Y21kNjQuaG9zdGhhbmRsZSk7CisgICAgICBEQkdfRVJST1IoIiAgICBza2JbJXBdIGxlbiAlZCAgaGNtZHR5cGVbJXhdXG4iLCBoY21kLT5za2IsCisJCWhjbWQtPnNrYi0+bGVuLCBoY21kLT50eXBlKTsKKyovCisJCWlmIChoY21kLT50eXBlID09IFNMSUNfQ01EX0RVTUIpIHsKKwkJCWlmIChoY21kLT5za2IpCisJCQkJZGV2X2tmcmVlX3NrYl9pcnEoaGNtZC0+c2tiKTsKKwkJCXNsaWNfY21kcV9wdXRkb25lX2lycShhZGFwdGVyLCBoY21kKTsKKwkJfQorCQlyc3BidWYtPnN0YXR1cyA9IDA7CisJCXJzcGJ1Zi0+aG9zdGhhbmRsZSA9IDA7CisJCWZyYW1lcysrOworCX0gd2hpbGUgKDEpOworCWFkYXB0ZXItPm1heF9pc3JfeG1pdHMgPSBtYXgoYWRhcHRlci0+bWF4X2lzcl94bWl0cywgZnJhbWVzKTsKK30KKworc3RhdGljIGlycXJldHVybl90IHNsaWNfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gKHN0cnVjdCBuZXRfZGV2aWNlICopZGV2X2lkOworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopbmV0ZGV2X3ByaXYoZGV2KTsKKwl1MzIgaXNyOworCisJaWYgKChhZGFwdGVyLT5wc2htZW0pICYmIChhZGFwdGVyLT5wc2htZW0tPmlzcikpIHsKKwkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY19pY3IsIElDUl9JTlRfTUFTSywgRkxVU0gpOworCQlpc3IgPSBhZGFwdGVyLT5pc3Jjb3B5ID0gYWRhcHRlci0+cHNobWVtLT5pc3I7CisJCWFkYXB0ZXItPnBzaG1lbS0+aXNyID0gMDsKKwkJYWRhcHRlci0+bnVtX2lzcnMrKzsKKwkJc3dpdGNoIChhZGFwdGVyLT5jYXJkLT5zdGF0ZSkgeworCQljYXNlIENBUkRfVVA6CisJCQlpZiAoaXNyICYgfklTUl9JTykgeworCQkJCWlmIChpc3IgJiBJU1JfRVJSKSB7CisJCQkJCWFkYXB0ZXItPmVycm9yX2ludGVycnVwdHMrKzsKKwkJCQkJaWYgKGlzciAmIElTUl9STUlTUykgeworCQkJCQkJaW50IGNvdW50OworCQkJCQkJaW50IHByZV9jb3VudDsKKwkJCQkJCWludCBlcnJvcnM7CisKKwkJCQkJCXN0cnVjdCBzbGljX3JjdnF1ZXVlICpyY3ZxID0KKwkJCQkJCSAgICAmYWRhcHRlci0+cmN2cXVldWU7CisKKwkJCQkJCWFkYXB0ZXItPgorCQkJCQkJICAgIGVycm9yX3JtaXNzX2ludGVycnVwdHMrKzsKKwkJCQkJCWlmICghcmN2cS0+ZXJyb3JzKQorCQkJCQkJCXJjdl9jb3VudCA9IHJjdnEtPmNvdW50OworCQkJCQkJcHJlX2NvdW50ID0gcmN2cS0+Y291bnQ7CisJCQkJCQllcnJvcnMgPSByY3ZxLT5lcnJvcnM7CisKKwkJCQkJCXdoaWxlIChyY3ZxLT5jb3VudCA8CisJCQkJCQkgICAgICAgU0xJQ19SQ1ZRX0ZJTExUSFJFU0gpIHsKKwkJCQkJCQljb3VudCA9CisJCQkJCQkJICAgIHNsaWNfcmN2cXVldWVfZmlsbAorCQkJCQkJCSAgICAoYWRhcHRlcik7CisJCQkJCQkJaWYgKCFjb3VudCkKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCQlEQkdfTVNHCisJCQkJCQkgICAgKCIoJXMpOiBbJXhdIElTUl9STUlTUyBcCisJCQkJCQkgICAgIGluaXRpYWxbJXhdIHByZVsleF0gXAorCQkJCQkJICAgICBlcnJvcnNbJXhdIFwKKwkJCQkJCSAgICAgcG9zdF9jb3VudFsleF1cbiIsCisJCQkJCQkgICAgIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwKKwkJCQkJCSAgICAgaXNyLCByY3ZfY291bnQsIHByZV9jb3VudCwKKwkJCQkJCSAgICAgZXJyb3JzLCByY3ZxLT5jb3VudCk7CisJCQkJCX0gZWxzZSBpZiAoaXNyICYgSVNSX1hEUk9QKSB7CisJCQkJCQlEQkdfRVJST1IKKwkJCQkJCSAgICAoImlzciAmIElTUl9FUlIgWyV4XSBcCisJCQkJCQkgICAgIElTUl9YRFJPUCBcbiIsCisJCQkJCQkgICAgIGlzcik7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlEQkdfRVJST1IKKwkJCQkJCSAgICAoImlzciAmIElTUl9FUlIgWyV4XVxuIiwKKwkJCQkJCSAgICAgaXNyKTsKKwkJCQkJfQorCQkJCX0KKworCQkJCWlmIChpc3IgJiBJU1JfTEVWRU5UKSB7CisJCQkJCS8qREJHX01TRygiJXMgKCVzKSAgSVNSX0xFVkVOVCBcbiIsCisJCQkJCSAgIF9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOyovCisJCQkJCWFkYXB0ZXItPmxpbmtldmVudF9pbnRlcnJ1cHRzKys7CisJCQkJCXNsaWNfbGlua19ldmVudF9oYW5kbGVyKGFkYXB0ZXIpOworCQkJCX0KKworCQkJCWlmICgoaXNyICYgSVNSX1VQQykgfHwKKwkJCQkgICAgKGlzciAmIElTUl9VUENFUlIpIHx8IChpc3IgJiBJU1JfVVBDQlNZKSkgeworCQkJCQlhZGFwdGVyLT51cHJfaW50ZXJydXB0cysrOworCQkJCQlzbGljX3Vwcl9yZXF1ZXN0X2NvbXBsZXRlKGFkYXB0ZXIsIGlzcik7CisJCQkJfQorCQkJfQorCisJCQlpZiAoaXNyICYgSVNSX1JDVikgeworCQkJCWFkYXB0ZXItPnJjdl9pbnRlcnJ1cHRzKys7CisJCQkJc2xpY19yY3ZfaGFuZGxlcihhZGFwdGVyKTsKKwkJCX0KKworCQkJaWYgKGlzciAmIElTUl9DTUQpIHsKKwkJCQlhZGFwdGVyLT54bWl0X2ludGVycnVwdHMrKzsKKwkJCQlzbGljX3htaXRfY29tcGxldGUoYWRhcHRlcik7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIENBUkRfRE9XTjoKKwkJCWlmICgoaXNyICYgSVNSX1VQQykgfHwKKwkJCSAgICAoaXNyICYgSVNSX1VQQ0VSUikgfHwgKGlzciAmIElTUl9VUENCU1kpKSB7CisJCQkJYWRhcHRlci0+dXByX2ludGVycnVwdHMrKzsKKwkJCQlzbGljX3Vwcl9yZXF1ZXN0X2NvbXBsZXRlKGFkYXB0ZXIsIGlzcik7CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKworCQlhZGFwdGVyLT5pc3Jjb3B5ID0gMDsKKwkJYWRhcHRlci0+YWxsX3JlZ193cml0ZXMgKz0gMjsKKwkJYWRhcHRlci0+aXNyX3JlZ193cml0ZXMrKzsKKwkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY19pc3IsIDAsIEZMVVNIKTsKKwl9IGVsc2UgeworCQlhZGFwdGVyLT5mYWxzZV9pbnRlcnJ1cHRzKys7CisJfQorCXJldHVybiBJUlFfSEFORExFRDsKK30KKworLyoKKyAqIHNsaWNfbGlua19ldmVudF9oYW5kbGVyIC0KKyAqCisgKiBJbml0aWF0ZSBhIGxpbmsgY29uZmlndXJhdGlvbiBzZXF1ZW5jZS4gIFRoZSBsaW5rIGNvbmZpZ3VyYXRpb24gYmVnaW5zCisgKiBieSBpc3N1aW5nIGEgUkVBRF9MSU5LX1NUQVRVUyBjb21tYW5kIHRvIHRoZSBVdGlsaXR5IFByb2Nlc3NvciBvbiB0aGUKKyAqIFNMSUMuICBTaW5jZSB0aGUgY29tbWFuZCBmaW5pc2hlcyBhc3luY2hyb25vdXNseSwgdGhlIHNsaWNfdXByX2NvbWxldGUKKyAqIHJvdXRpbmUgd2lsbCBmb2xsb3cgaXQgdXAgd2l0aGEgVVAgY29uZmlndXJhdGlvbiB3cml0ZSBjb21tYW5kLCB3aGljaAorICogd2lsbCBhbHNvIGNvbXBsZXRlIGFzeW5jaHJvbm91c2x5LgorICoKKyAqLworc3RhdGljIHZvaWQgc2xpY19saW5rX2V2ZW50X2hhbmRsZXIoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJaW50IHN0YXR1czsKKwlzdHJ1Y3Qgc2xpY19zaG1lbSAqcHNobWVtOworCisJaWYgKGFkYXB0ZXItPnN0YXRlICE9IEFEQVBUX1VQKSB7CisJCS8qIEFkYXB0ZXIgaXMgbm90IG9wZXJhdGlvbmFsLiAgSWdub3JlLiAgKi8KKwkJcmV0dXJuOworCX0KKworCXBzaG1lbSA9IChzdHJ1Y3Qgc2xpY19zaG1lbSAqKWFkYXB0ZXItPnBoeXNfc2htZW07CisKKyNpZiBkZWZpbmVkKENPTkZJR19YODZfNjQpCisvKgorICAgIERCR19NU0coInNsaWNfZXZlbnRfaGFuZGxlciAgcHNobWVtLT5saW5rc3RhdHVzWyV4XSAgcHNobWVtWyVwXVxuICAgXAorCSZsaW5rc3RhdHVzWyVwXSAmaXNyWyVwXVxuIiwgYWRhcHRlci0+cHNobWVtLT5saW5rc3RhdHVzLCBwc2htZW0sCisJJnBzaG1lbS0+bGlua3N0YXR1cywgJnBzaG1lbS0+aXNyKTsKKyovCisJc3RhdHVzID0gc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLAorCQkJCSAgU0xJQ19VUFJfUkxTUiwKKwkJCQkgIFNMSUNfR0VUX0FERFJfTE9XKCZwc2htZW0tPmxpbmtzdGF0dXMpLAorCQkJCSAgU0xJQ19HRVRfQUREUl9ISUdIKCZwc2htZW0tPmxpbmtzdGF0dXMpLAorCQkJCSAgMCwgMCk7CisjZWxpZiBkZWZpbmVkKENPTkZJR19YODYpCisJc3RhdHVzID0gc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLCBTTElDX1VQUl9STFNSLAorCQkodTMyKSAmcHNobWVtLT5saW5rc3RhdHVzLAkvKiBubyA0R0Igd3JhcCBndWFyYW50ZWVkICovCisJCQkJICAwLCAwLCAwKTsKKyNlbHNlCisJU3RvcCBjb21waWxhdGlvbjsKKyNlbmRpZgorCUFTU0VSVCgoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKSB8fCAoc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfaW5pdF9jbGVhbnVwKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCURCR19NU0coInNsaWNvc3M6ICVzIEVOVEVSIGFkYXB0ZXJbJXBdICIsIF9fZnVuY19fLCBhZGFwdGVyKTsKKwlpZiAoYWRhcHRlci0+aW50cnJlZ2lzdGVyZWQpIHsKKwkJREJHX01TRygiRlJFRV9JUlEgIik7CisJCWFkYXB0ZXItPmludHJyZWdpc3RlcmVkID0gMDsKKwkJZnJlZV9pcnEoYWRhcHRlci0+bmV0ZGV2LT5pcnEsIGFkYXB0ZXItPm5ldGRldik7CisKKwl9CisJaWYgKGFkYXB0ZXItPnBzaG1lbSkgeworCQlEQkdfTVNHKCJGUkVFX1NITUVNICIpOworCQlEQkdfTVNHKCJhZGFwdGVyWyVwXSBwb3J0ICVkIHBzaG1lbVslcF0gRnJlZVNobWVtICIsCisJCQlhZGFwdGVyLCBhZGFwdGVyLT5wb3J0LCAodm9pZCAqKSBhZGFwdGVyLT5wc2htZW0pOworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBzbGljX3NobWVtICopLAorCQkJCSAgICBhZGFwdGVyLT5wc2htZW0sIGFkYXB0ZXItPnBoeXNfc2htZW0pOworCQlhZGFwdGVyLT5wc2htZW0gPSBOVUxMOworCQlhZGFwdGVyLT5waHlzX3NobWVtID0gKGRtYV9hZGRyX3QpIE5VTEw7CisJfQorI2lmIFNMSUNfR0VUX1NUQVRTX1RJTUVSX0VOQUJMRUQKKwlpZiAoYWRhcHRlci0+c3RhdHN0aW1lcnNldCkgeworCQlEQkdfTVNHKCJzdGF0c3RpbWVyICIpOworCQlhZGFwdGVyLT5zdGF0c3RpbWVyc2V0ID0gMDsKKwkJZGVsX3RpbWVyKCZhZGFwdGVyLT5zdGF0c3RpbWVyKTsKKwl9CisjZW5kaWYKKyNpZiAhU0xJQ19EVU1QX0VOQUJMRUQgJiYgU0xJQ19QSU5HX1RJTUVSX0VOQUJMRUQKKy8qI2lmIFNMSUNfRFVNUF9FTkFCTEVEICYmIFNMSUNfUElOR19USU1FUl9FTkFCTEVEKi8KKwlpZiAoYWRhcHRlci0+cGluZ3RpbWVyc2V0KSB7CisJCURCR19NU0coInBpbmd0aW1lciAiKTsKKwkJYWRhcHRlci0+cGluZ3RpbWVyc2V0ID0gMDsKKwkJZGVsX3RpbWVyKCZhZGFwdGVyLT5waW5ndGltZXIpOworCX0KKyNlbmRpZgorCXNsaWNfcnNwcXVldWVfZnJlZShhZGFwdGVyKTsKKwlzbGljX2NtZHFfZnJlZShhZGFwdGVyKTsKKwlzbGljX3JjdnF1ZXVlX2ZyZWUoYWRhcHRlcik7CisKKwlEQkdfTVNHKCJcbiIpOworfQorCisjaWYgU0xJQ19HRVRfU1RBVFNfRU5BQkxFRAorc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpzbGljX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHM7CisKKwlBU1NFUlQoYWRhcHRlcik7CisJc3RhdHMgPSAmYWRhcHRlci0+c3RhdHM7CisJc3RhdHMtPmNvbGxpc2lvbnMgPSBhZGFwdGVyLT5zbGljX3N0YXRzLmlmYWNlLnhtaXRfY29sbGlzaW9uczsKKwlzdGF0cy0+cnhfZXJyb3JzID0gYWRhcHRlci0+c2xpY19zdGF0cy5pZmFjZS5yY3ZfZXJyb3JzOworCXN0YXRzLT50eF9lcnJvcnMgPSBhZGFwdGVyLT5zbGljX3N0YXRzLmlmYWNlLnhtdF9lcnJvcnM7CisJc3RhdHMtPnJ4X21pc3NlZF9lcnJvcnMgPSBhZGFwdGVyLT5zbGljX3N0YXRzLmlmYWNlLnJjdl9kaXNjYXJkczsKKwlzdGF0cy0+dHhfaGVhcnRiZWF0X2Vycm9ycyA9IDA7CisJc3RhdHMtPnR4X2Fib3J0ZWRfZXJyb3JzID0gMDsKKwlzdGF0cy0+dHhfd2luZG93X2Vycm9ycyA9IDA7CisJc3RhdHMtPnR4X2ZpZm9fZXJyb3JzID0gMDsKKwlzdGF0cy0+cnhfZnJhbWVfZXJyb3JzID0gMDsKKwlzdGF0cy0+cnhfbGVuZ3RoX2Vycm9ycyA9IDA7CisJcmV0dXJuICZhZGFwdGVyLT5zdGF0czsKK30KKyNlbmRpZgorCisvKgorICogIEFsbG9jYXRlIGEgbWNhc3RfYWRkcmVzcyBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgbXVsdGljYXN0IGFkZHJlc3MuCisgKiAgTGluayBpdCBpbi4KKyAqLworc3RhdGljIGludCBzbGljX21jYXN0X2FkZF9saXN0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBjaGFyICphZGRyZXNzKQoreworCXN0cnVjdCBtY2FzdF9hZGRyZXNzICptY2FkZHIsICptbGlzdDsKKwlib29sIGVxdWFsYWRkcjsKKworCS8qIENoZWNrIHRvIHNlZSBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLworCW1saXN0ID0gYWRhcHRlci0+bWNhc3RhZGRyczsKKwl3aGlsZSAobWxpc3QpIHsKKwkJRVRIRVJfRVFfQUREUihtbGlzdC0+YWRkcmVzcywgYWRkcmVzcywgZXF1YWxhZGRyKTsKKwkJaWYgKGVxdWFsYWRkcikKKwkJCXJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKwkJbWxpc3QgPSBtbGlzdC0+bmV4dDsKKwl9CisKKwkvKiBEb2Vzbid0IGFscmVhZHkgZXhpc3QuICBBbGxvY2F0ZSBhIHN0cnVjdHVyZSB0byBob2xkIGl0ICovCisJbWNhZGRyID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1jYXN0X2FkZHJlc3MpLCBHRlBfQVRPTUlDKTsKKwlpZiAobWNhZGRyID09IE5VTEwpCisJCXJldHVybiAxOworCisJbWVtY3B5KG1jYWRkci0+YWRkcmVzcywgYWRkcmVzcywgNik7CisKKwltY2FkZHItPm5leHQgPSBhZGFwdGVyLT5tY2FzdGFkZHJzOworCWFkYXB0ZXItPm1jYXN0YWRkcnMgPSBtY2FkZHI7CisKKwlyZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBGdW5jdGlvbnMgdG8gb2J0YWluIHRoZSBDUkMgY29ycmVzcG9uZGluZyB0byB0aGUgZGVzdGluYXRpb24gbWFjIGFkZHJlc3MuCisgKiBUaGlzIGlzIGEgc3RhbmRhcmQgZXRoZXJuZXQgQ1JDIGluIHRoYXQgaXQgaXMgYSAzMi1iaXQsIHJlZmxlY3RlZCBDUkMgdXNpbmcKKyAqIHRoZSBwb2x5bm9taWFsOgorICogICB4XjMyICsgeF4yNiArIHheMjMgKyB4XjIyICsgeF4xNiArIHheMTIgKyB4XjExICsgeF4xMCArIHheOCArIHheNyArIHheNSArCisgKiAgIHheNCArIHheMiArIHheMS4KKyAqCisgKiBBZnRlciB0aGUgQ1JDIGZvciB0aGUgNiBieXRlcyBpcyBnZW5lcmF0ZWQgKGJ1dCBiZWZvcmUgdGhlIHZhbHVlIGlzCisgKiBjb21wbGVtZW50ZWQpLAorICogd2UgbXVzdCB0aGVuIHRyYW5zcG9zZSB0aGUgdmFsdWUgYW5kIHJldHVybiBiaXRzIDMwLTIzLgorICoKKyAqLworc3RhdGljIHUzMiBzbGljX2NyY190YWJsZVsyNTZdOwkvKiBUYWJsZSBvZiBDUkNzIGZvciBhbGwgcG9zc2libGUgYnl0ZSB2YWx1ZXMgKi8KK3N0YXRpYyB1MzIgc2xpY19jcmNfaW5pdDsJLyogSXMgdGFibGUgaW5pdGlhbGl6ZWQgKi8KKworLyoKKyAqICBDb250cnVjdCB0aGUgQ1JDMzIgdGFibGUKKyAqLworc3RhdGljIHZvaWQgc2xpY19tY2FzdF9pbml0X2NyYzMyKHZvaWQpCit7CisJdTMyIGM7CQkvKiAgQ1JDIHNoaXQgcmVnICAgICAgICAgICAgICAgICAqLworCXUzMiBlID0gMDsJCS8qICBQb2x5IFgtb3IgcGF0dGVybiAgICAgICAgICAgICovCisJaW50IGk7CQkJLyogIGNvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgKi8KKwlpbnQgazsJCQkvKiAgYnl0ZSBiZWluZyBzaGlmdGVkIGludG8gY3JjICAqLworCisJc3RhdGljIGludCBwW10gPSB7IDAsIDEsIDIsIDQsIDUsIDcsIDgsIDEwLCAxMSwgMTIsIDE2LCAyMiwgMjMsIDI2IH07CisKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHApIC8gc2l6ZW9mKGludCk7IGkrKykKKwkJZSB8PSAxTCA8PCAoMzEgLSBwW2ldKTsKKworCWZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworCQljID0gaTsKKwkJZm9yIChrID0gODsgazsgay0tKQorCQkJYyA9IGMgJiAxID8gKGMgPj4gMSkgXiBlIDogYyA+PiAxOworCQlzbGljX2NyY190YWJsZVtpXSA9IGM7CisJfQorfQorCisvKgorICogIFJldHVybiB0aGUgTUFDIGhhc3QgYXMgZGVzY3JpYmVkIGFib3ZlLgorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBzbGljX21jYXN0X2dldF9tYWNfaGFzaChjaGFyICptYWNhZGRyKQoreworCXUzMiBjcmM7CisJY2hhciAqcDsKKwlpbnQgaTsKKwl1bnNpZ25lZCBjaGFyIG1hY2hhc2ggPSAwOworCisJaWYgKCFzbGljX2NyY19pbml0KSB7CisJCXNsaWNfbWNhc3RfaW5pdF9jcmMzMigpOworCQlzbGljX2NyY19pbml0ID0gMTsKKwl9CisKKwljcmMgPSAweEZGRkZGRkZGOwkvKiBQcmVsb2FkIHNoaWZ0IHJlZ2lzdGVyLCBwZXIgY3JjLTMyIHNwZWMgKi8KKwlmb3IgKGkgPSAwLCBwID0gbWFjYWRkcjsgaSA8IDY7ICsrcCwgKytpKQorCQljcmMgPSAoY3JjID4+IDgpIF4gc2xpY19jcmNfdGFibGVbKGNyYyBeICpwKSAmIDB4RkZdOworCisJLyogUmV0dXJuIGJpdHMgMS04LCB0cmFuc3Bvc2VkICovCisJZm9yIChpID0gMTsgaSA8IDk7IGkrKykKKwkJbWFjaGFzaCB8PSAoKChjcmMgPj4gaSkgJiAxKSA8PCAoOCAtIGkpKTsKKworCXJldHVybiBtYWNoYXNoOworfQorCitzdGF0aWMgdm9pZCBzbGljX21jYXN0X3NldF9iaXQoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGNoYXIgKmFkZHJlc3MpCit7CisJdW5zaWduZWQgY2hhciBjcmNwb2x5OworCisJLyogR2V0IHRoZSBDUkMgcG9seW5vbWlhbCBmb3IgdGhlIG1hYyBhZGRyZXNzICovCisJY3JjcG9seSA9IHNsaWNfbWNhc3RfZ2V0X21hY19oYXNoKGFkZHJlc3MpOworCisJLyogV2Ugb25seSBoYXZlIHNwYWNlIG9uIHRoZSBTTElDIGZvciA2NCBlbnRyaWVzLiAgTG9wCisJICogb2ZmIHRoZSB0b3AgdHdvIGJpdHMuICgyXjYgPSA2NCkKKwkgKi8KKwljcmNwb2x5ICY9IDB4M0Y7CisKKwkvKiBPUiBpbiB0aGUgbmV3IGJpdCBpbnRvIG91ciA2NCBiaXQgbWFzay4gKi8KKwlhZGFwdGVyLT5tY2FzdG1hc2sgfD0gKHU2NCkgMSA8PCBjcmNwb2x5OworfQorCitzdGF0aWMgdm9pZCBzbGljX21jYXN0X3NldF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKiluZXRkZXZfcHJpdihkZXYpOworCWludCBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKwlpbnQgaTsKKwljaGFyICphZGRyZXNzZXM7CisJc3RydWN0IGRldl9tY19saXN0ICptY19saXN0ID0gZGV2LT5tY19saXN0OworCWludCBtY19jb3VudCA9IGRldi0+bWNfY291bnQ7CisKKwlBU1NFUlQoYWRhcHRlcik7CisKKwlmb3IgKGkgPSAxOyBpIDw9IG1jX2NvdW50OyBpKyspIHsKKwkJYWRkcmVzc2VzID0gKGNoYXIgKikgJm1jX2xpc3QtPmRtaV9hZGRyOworCQlpZiAobWNfbGlzdC0+ZG1pX2FkZHJsZW4gPT0gNikgeworCQkJc3RhdHVzID0gc2xpY19tY2FzdF9hZGRfbGlzdChhZGFwdGVyLCBhZGRyZXNzZXMpOworCQkJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykKKwkJCQlicmVhazsKKwkJfSBlbHNlIHsKKwkJCXN0YXR1cyA9IC1FSU5WQUw7CisJCQlicmVhazsKKwkJfQorCQlzbGljX21jYXN0X3NldF9iaXQoYWRhcHRlciwgYWRkcmVzc2VzKTsKKwkJbWNfbGlzdCA9IG1jX2xpc3QtPm5leHQ7CisJfQorCisJREJHX01TRygiJXMgYS0+ZGV2ZmxhZ3NfcHJldlsleF0gZGV2LT5mbGFnc1sleF0gc3RhdHVzWyV4XVxuIiwKKwkJX19mdW5jX18sIGFkYXB0ZXItPmRldmZsYWdzX3ByZXYsIGRldi0+ZmxhZ3MsIHN0YXR1cyk7CisJaWYgKGFkYXB0ZXItPmRldmZsYWdzX3ByZXYgIT0gZGV2LT5mbGFncykgeworCQlhZGFwdGVyLT5tYWNvcHRzID0gTUFDX0RJUkVDVEVEOworCQlpZiAoZGV2LT5mbGFncykgeworCQkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfQlJPQURDQVNUKQorCQkJCWFkYXB0ZXItPm1hY29wdHMgfD0gTUFDX0JDQVNUOworCQkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykKKwkJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19QUk9NSVNDOworCQkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfQUxMTVVMVEkpCisJCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfQUxMTUNBU1Q7CisJCQlpZiAoZGV2LT5mbGFncyAmIElGRl9NVUxUSUNBU1QpCisJCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfTUNBU1Q7CisJCX0KKwkJYWRhcHRlci0+ZGV2ZmxhZ3NfcHJldiA9IGRldi0+ZmxhZ3M7CisJCURCR19NU0coIiVzIGNhbGwgc2xpY19jb25maWdfc2V0IGFkYXB0ZXItPm1hY29wdHNbJXhdXG4iLAorCQkJX19mdW5jX18sIGFkYXB0ZXItPm1hY29wdHMpOworCQlzbGljX2NvbmZpZ19zZXQoYWRhcHRlciwgVFJVRSk7CisJfSBlbHNlIHsKKwkJaWYgKHN0YXR1cyA9PSBTVEFUVVNfU1VDQ0VTUykKKwkJCXNsaWNfbWNhc3Rfc2V0X21hc2soYWRhcHRlcik7CisJfQorCXJldHVybjsKK30KKworc3RhdGljIHZvaWQgc2xpY19tY2FzdF9zZXRfbWFzayhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlfX2lvbWVtIHN0cnVjdCBzbGljX3JlZ3MgKnNsaWNfcmVncyA9IGFkYXB0ZXItPnNsaWNfcmVnczsKKworCURCR19NU0coIiVzIEVOVEVSICglcykgbWFjb3B0c1sleF0gbWFza1slbGx4XVxuIiwgX19mdW5jX18sCisJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSwgKHVpbnQpIGFkYXB0ZXItPm1hY29wdHMsCisJCWFkYXB0ZXItPm1jYXN0bWFzayk7CisKKwlpZiAoYWRhcHRlci0+bWFjb3B0cyAmIChNQUNfQUxMTUNBU1QgfCBNQUNfUFJPTUlTQykpIHsKKwkJLyogVHVybiBvbiBhbGwgbXVsdGljYXN0IGFkZHJlc3Nlcy4gV2UgaGF2ZSB0byBkbyB0aGlzIGZvcgorCQkgKiBwcm9taXNjdW91cyBtb2RlIGFzIHdlbGwgYXMgQUxMTUNBU1QgbW9kZS4gIEl0IHNhdmVzIHRoZQorCQkgKiBNaWNyb2NvZGUgZnJvbSBoYXZpbmcgdG8ga2VlcCBzdGF0ZSBhYm91dCB0aGUgTUFDCisJCSAqIGNvbmZpZ3VyYXRpb24uCisJCSAqLworLyogICAgICAgICAgICAgIERCR19NU0coInNsaWNvc3M6ICVzIG1hY29wdHMgPSBNQUNfQUxMTUNBU1QgfCBNQUNfUFJPTUlTQ1xuXAorCQlTTFVUIE1PREUhISFcbiIsX19mdW5jX18pOyAqLworCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX21jYXN0bG93LCAweEZGRkZGRkZGLCBGTFVTSCk7CisJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfbWNhc3RoaWdoLCAweEZGRkZGRkZGLCBGTFVTSCk7CisvKiAgICAgICAgREJHX01TRygiJXMgKCVzKSBXUklURSB0byBzbGljX3JlZ3Mgc2xpY19tY2FzdGxvdyZoaWdoIDB4RkZGRkZGRkZcbiIsCisJCV9mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSk7ICovCisJfSBlbHNlIHsKKwkJLyogQ29tbWl0IG91ciBtdWx0aWNhc3QgbWFzdCB0byB0aGUgU0xJQyBieSB3cml0aW5nIHRvIHRoZQorCQkgKiBtdWx0aWNhc3QgYWRkcmVzcyBtYXNrIHJlZ2lzdGVycworCQkgKi8KKwkJREJHX01TRygiJXMgKCVzKSBXUklURSBtY2FzdGxvd1sleF0gbWNhc3RoaWdoWyV4XVxuIiwKKwkJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsCisJCQkoKHVsb25nKSAoYWRhcHRlci0+bWNhc3RtYXNrICYgMHhGRkZGRkZGRikpLAorCQkJKCh1bG9uZykgKChhZGFwdGVyLT5tY2FzdG1hc2sgPj4gMzIpICYgMHhGRkZGRkZGRikpKTsKKworCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX21jYXN0bG93LAorCQkJICAodTMyKSAoYWRhcHRlci0+bWNhc3RtYXNrICYgMHhGRkZGRkZGRiksIEZMVVNIKTsKKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19tY2FzdGhpZ2gsCisJCQkgICh1MzIpICgoYWRhcHRlci0+bWNhc3RtYXNrID4+IDMyKSAmIDB4RkZGRkZGRkYpLAorCQkJICBGTFVTSCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzbGljX3RpbWVyX3BpbmcodWxvbmcgZGV2KQoreworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyOworCXN0cnVjdCBzbGljY2FyZCAqY2FyZDsKKworCUFTU0VSVChkZXYpOworCWFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKikoKHN0cnVjdCBuZXRfZGV2aWNlICopIGRldiktPnByaXY7CisJQVNTRVJUKGFkYXB0ZXIpOworCWNhcmQgPSBhZGFwdGVyLT5jYXJkOworCUFTU0VSVChjYXJkKTsKKyNpZiAhU0xJQ19EVU1QX0VOQUJMRUQKKy8qI2lmIFNMSUNfRFVNUF9FTkFCTEVEKi8KKwlpZiAoKGFkYXB0ZXItPnN0YXRlID09IEFEQVBUX1VQKSAmJiAoY2FyZC0+c3RhdGUgPT0gQ0FSRF9VUCkpIHsKKwkJaW50IHN0YXR1czsKKworCQlpZiAoY2FyZC0+cGluZ3N0YXR1cyAhPSBJU1JfUElOR01BU0spIHsKKwkJCWlmIChlcnJvcm1zZysrIDwgNSkgeworCQkJCURCR19NU0cKKwkJCQkgICAgKCIlcyAoJXMpIENBUkQgSEFTIENSQVNIRUQgIFBJTkdfc3RhdHVzID09IFwKKwkJCQkgICAgICV4IEVSUk9STVNHIyAlZFxuIiwKKwkJCQkgICAgIF9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsCisJCQkJICAgICBjYXJkLT5waW5nc3RhdHVzLCBlcnJvcm1zZyk7CisJCQl9CisJCQkvKiAgIEFTU0VSVChjYXJkLT5waW5nc3RhdHVzID09IElTUl9QSU5HTUFTSyk7ICovCisJCX0gZWxzZSB7CisJCQlpZiAoZ29vZG1zZysrIDwgNSkgeworCQkJCURCR19NU0cKKwkJCQkgICAgKCJzbGljb3NzOiAlcyAoJXMpIFBJTkdfc3RhdHVzID09ICV4IFwKKwkJCQkgICAgIEdPT0QhISEhISEhISBtc2cjICVkXG4iLAorCQkJCSAgICAgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwKKwkJCQkgICAgIGNhcmQtPnBpbmdzdGF0dXMsIGVycm9ybXNnKTsKKwkJCX0KKwkJfQorCQljYXJkLT5waW5nc3RhdHVzID0gMDsKKwkJc3RhdHVzID0gc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLCBTTElDX1VQUl9QSU5HLCAwLCAwLCAwLCAwKTsKKworCQlBU1NFUlQoc3RhdHVzID09IDApOworCX0gZWxzZSB7CisJCURCR19NU0coInNsaWNvc3MgJXMgKCVzKSBhZGFwdGVyWyVwXSBOT1QgVVAhISEhXG4iLAorCQkJX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlcik7CisJfQorI2VuZGlmCisJYWRhcHRlci0+cGluZ3RpbWVyLmV4cGlyZXMgPQorCSAgICBqaWZmaWVzICsgU0xJQ19TRUNTX1RPX0pJRkZTKFBJTkdfVElNRVJfSU5URVJWQUwpOworCWFkZF90aW1lcigmYWRhcHRlci0+cGluZ3RpbWVyKTsKK30KKworc3RhdGljIHZvaWQgc2xpY19pZl9zdG9wX3F1ZXVlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCW5ldGlmX3N0b3BfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKK30KKworc3RhdGljIHZvaWQgc2xpY19pZl9zdGFydF9xdWV1ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwluZXRpZl9zdGFydF9xdWV1ZShhZGFwdGVyLT5uZXRkZXYpOworfQorCisvKgorICogIHNsaWNfaWZfaW5pdAorICoKKyAqICBQZXJmb3JtIGluaXRpYWxpemF0aW9uIG9mIG91ciBzbGljIGludGVyZmFjZS4KKyAqCisgKi8KK3N0YXRpYyBpbnQgc2xpY19pZl9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCXN0cnVjdCBzbGljY2FyZCAqY2FyZCA9IGFkYXB0ZXItPmNhcmQ7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGFkYXB0ZXItPm5ldGRldjsKKwlfX2lvbWVtIHN0cnVjdCBzbGljX3JlZ3MgKnNsaWNfcmVncyA9IGFkYXB0ZXItPnNsaWNfcmVnczsKKwlzdHJ1Y3Qgc2xpY19zaG1lbSAqcHNobWVtOworCWludCBzdGF0dXMgPSAwOworCisJQVNTRVJUKGNhcmQpOworCURCR19NU0coInNsaWNvc3M6ICVzICglcykgRU5URVIgc3RhdGVzWyVkOiVkOiVkOiVkXSBmbGFnc1sleF1cbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsCisJCWFkYXB0ZXItPnF1ZXVlc19pbml0aWFsaXplZCwgYWRhcHRlci0+c3RhdGUsIGFkYXB0ZXItPmxpbmtzdGF0ZSwKKwkJY2FyZC0+c3RhdGUsIGRldi0+ZmxhZ3MpOworCisJLyogYWRhcHRlciBzaG91bGQgYmUgZG93biBhdCB0aGlzIHBvaW50ICovCisJaWYgKGFkYXB0ZXItPnN0YXRlICE9IEFEQVBUX0RPV04pIHsKKwkJREJHX0VSUk9SKCJzbGljX2lmX2luaXQgYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfRE9XTlxuIik7CisJCXJldHVybiAtRUlPOworCX0KKwlBU1NFUlQoYWRhcHRlci0+bGlua3N0YXRlID09IExJTktfRE9XTik7CisKKwlhZGFwdGVyLT5kZXZmbGFnc19wcmV2ID0gZGV2LT5mbGFnczsKKwlhZGFwdGVyLT5tYWNvcHRzID0gTUFDX0RJUkVDVEVEOworCWlmIChkZXYtPmZsYWdzKSB7CisJCURCR19NU0coInNsaWNvc3M6ICVzICglcykgU2V0IE1BQyBvcHRpb25zOiAiLCBfX2Z1bmNfXywKKwkJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSk7CisJCWlmIChkZXYtPmZsYWdzICYgSUZGX0JST0FEQ0FTVCkgeworCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfQkNBU1Q7CisJCQlEQkdfTVNHKCJCQ0FTVCAiKTsKKwkJfQorCQlpZiAoZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSB7CisJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19QUk9NSVNDOworCQkJREJHX01TRygiUFJPTUlTQyAiKTsKKwkJfQorCQlpZiAoZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkgeworCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfQUxMTUNBU1Q7CisJCQlEQkdfTVNHKCJBTExfTUNBU1QgIik7CisJCX0KKwkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfTVVMVElDQVNUKSB7CisJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19NQ0FTVDsKKwkJCURCR19NU0coIk1DQVNUICIpOworCQl9CisJCURCR19NU0coIlxuIik7CisJfQorCXN0YXR1cyA9IHNsaWNfYWRhcHRlcl9hbGxvY3Jlc291cmNlcyhhZGFwdGVyKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCURCR19FUlJPUgorCQkgICAgKCJzbGljX2lmX2luaXQ6IHNsaWNfYWRhcHRlcl9hbGxvY3Jlc291cmNlcyBGQUlMRUQgJXhcbiIsCisJCSAgICAgc3RhdHVzKTsKKwkJc2xpY19hZGFwdGVyX2ZyZWVyZXNvdXJjZXMoYWRhcHRlcik7CisJCXJldHVybiBzdGF0dXM7CisJfQorCisJaWYgKCFhZGFwdGVyLT5xdWV1ZXNfaW5pdGlhbGl6ZWQpIHsKKwkJREJHX01TRygic2xpY29zczogJXMgY2FsbCBzbGljX3JzcHF1ZXVlX2luaXRcbiIsIF9fZnVuY19fKTsKKwkJaWYgKHNsaWNfcnNwcXVldWVfaW5pdChhZGFwdGVyKSkKKwkJCXJldHVybiAtRU5PTUVNOworCQlEQkdfTVNHCisJCSAgICAoInNsaWNvc3M6ICVzIGNhbGwgc2xpY19jbWRxX2luaXQgYWRhcHRlclslcF0gcG9ydCAlZCBcbiIsCisJCSAgICAgX19mdW5jX18sIGFkYXB0ZXIsIGFkYXB0ZXItPnBvcnQpOworCQlpZiAoc2xpY19jbWRxX2luaXQoYWRhcHRlcikpCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJREJHX01TRworCQkgICAgKCJzbGljb3NzOiAlcyBjYWxsIHNsaWNfcmN2cXVldWVfaW5pdCBhZGFwdGVyWyVwXSBcCisJCSAgICAgcG9ydCAlZCBcbiIsIF9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5wb3J0KTsKKwkJaWYgKHNsaWNfcmN2cXVldWVfaW5pdChhZGFwdGVyKSkKKwkJCXJldHVybiAtRU5PTUVNOworCQlhZGFwdGVyLT5xdWV1ZXNfaW5pdGlhbGl6ZWQgPSAxOworCX0KKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBkaXNhYmxlIGludGVycnVwdHMoc2xpYylcbiIsIF9fZnVuY19fKTsKKworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfaWNyLCBJQ1JfSU5UX09GRiwgRkxVU0gpOworCW1kZWxheSgxKTsKKworCWlmICghYWRhcHRlci0+aXNwX2luaXRpYWxpemVkKSB7CisJCXBzaG1lbSA9IChzdHJ1Y3Qgc2xpY19zaG1lbSAqKWFkYXB0ZXItPnBoeXNfc2htZW07CisKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFkYXB0ZXItPmJpdDY0cmVnbG9jay5sb2NrLAorCQkJCQlhZGFwdGVyLT5iaXQ2NHJlZ2xvY2suZmxhZ3MpOworCisjaWYgZGVmaW5lZChDT05GSUdfWDg2XzY0KQorCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsCisJCQkgIFNMSUNfR0VUX0FERFJfSElHSCgmcHNobWVtLT5pc3IpLCBET05UX0ZMVVNIKTsKKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pc3AsCisJCQkgIFNMSUNfR0VUX0FERFJfTE9XKCZwc2htZW0tPmlzciksIEZMVVNIKTsKKyNlbGlmIGRlZmluZWQoQ09ORklHX1g4NikKKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19hZGRyX3VwcGVyLCAodTMyKSAwLCBET05UX0ZMVVNIKTsKKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pc3AsICh1MzIpICZwc2htZW0tPmlzciwgRkxVU0gpOworI2Vsc2UKKwkJU3RvcCBDb21waWxhdGlvbnMKKyNlbmRpZgorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGFwdGVyLT5iaXQ2NHJlZ2xvY2subG9jaywKKwkJCQkJYWRhcHRlci0+Yml0NjRyZWdsb2NrLmZsYWdzKTsKKwkJYWRhcHRlci0+aXNwX2luaXRpYWxpemVkID0gMTsKKwl9CisKKwlhZGFwdGVyLT5zdGF0ZSA9IEFEQVBUX1VQOworCWlmICghY2FyZC0+bG9hZHRpbWVyc2V0KSB7CisJCWluaXRfdGltZXIoJmNhcmQtPmxvYWR0aW1lcik7CisJCWNhcmQtPmxvYWR0aW1lci5leHBpcmVzID0KKwkJICAgIGppZmZpZXMgKyBTTElDX1NFQ1NfVE9fSklGRlMoU0xJQ19MT0FEVElNRVJfUEVSSU9EKTsKKwkJY2FyZC0+bG9hZHRpbWVyLmRhdGEgPSAodWxvbmcpIGNhcmQ7CisJCWNhcmQtPmxvYWR0aW1lci5mdW5jdGlvbiA9ICZzbGljX3RpbWVyX2xvYWRfY2hlY2s7CisJCWFkZF90aW1lcigmY2FyZC0+bG9hZHRpbWVyKTsKKworCQljYXJkLT5sb2FkdGltZXJzZXQgPSAxOworCX0KKyNpZiBTTElDX0dFVF9TVEFUU19USU1FUl9FTkFCTEVECisJaWYgKCFhZGFwdGVyLT5zdGF0c3RpbWVyc2V0KSB7CisJCURCR19NU0coInNsaWNvc3M6ICVzIHN0YXJ0IGdldHN0YXRzX3RpbWVyKHNsaWMpXG4iLAorCQkJX19mdW5jX18pOworCQlpbml0X3RpbWVyKCZhZGFwdGVyLT5zdGF0c3RpbWVyKTsKKwkJYWRhcHRlci0+c3RhdHN0aW1lci5leHBpcmVzID0KKwkJICAgIGppZmZpZXMgKyBTTElDX1NFQ1NfVE9fSklGRlMoU1RBVFNfVElNRVJfSU5URVJWQUwpOworCQlhZGFwdGVyLT5zdGF0c3RpbWVyLmRhdGEgPSAodWxvbmcpIGFkYXB0ZXItPm5ldGRldjsKKwkJYWRhcHRlci0+c3RhdHN0aW1lci5mdW5jdGlvbiA9ICZzbGljX3RpbWVyX2dldF9zdGF0czsKKwkJYWRkX3RpbWVyKCZhZGFwdGVyLT5zdGF0c3RpbWVyKTsKKwkJYWRhcHRlci0+c3RhdHN0aW1lcnNldCA9IDE7CisJfQorI2VuZGlmCisjaWYgIVNMSUNfRFVNUF9FTkFCTEVEICYmIFNMSUNfUElOR19USU1FUl9FTkFCTEVECisvKiNpZiBTTElDX0RVTVBfRU5BQkxFRCAmJiBTTElDX1BJTkdfVElNRVJfRU5BQkxFRCovCisJaWYgKCFhZGFwdGVyLT5waW5ndGltZXJzZXQpIHsKKwkJREJHX01TRygic2xpY29zczogJXMgc3RhcnQgY2FyZF9waW5nX3RpbWVyKHNsaWMpXG4iLAorCQkJX19mdW5jX18pOworCQlpbml0X3RpbWVyKCZhZGFwdGVyLT5waW5ndGltZXIpOworCQlhZGFwdGVyLT5waW5ndGltZXIuZXhwaXJlcyA9CisJCSAgICBqaWZmaWVzICsgU0xJQ19TRUNTX1RPX0pJRkZTKFBJTkdfVElNRVJfSU5URVJWQUwpOworCQlhZGFwdGVyLT5waW5ndGltZXIuZGF0YSA9ICh1bG9uZykgZGV2OworCQlhZGFwdGVyLT5waW5ndGltZXIuZnVuY3Rpb24gPSAmc2xpY190aW1lcl9waW5nOworCQlhZGRfdGltZXIoJmFkYXB0ZXItPnBpbmd0aW1lcik7CisJCWFkYXB0ZXItPnBpbmd0aW1lcnNldCA9IDE7CisJCWFkYXB0ZXItPmNhcmQtPnBpbmdzdGF0dXMgPSBJU1JfUElOR01BU0s7CisJfQorI2VuZGlmCisKKwkvKgorCSAqICAgIGNsZWFyIGFueSBwZW5kaW5nIGV2ZW50cywgdGhlbiBlbmFibGUgaW50ZXJydXB0cworCSAqLworCURCR19NU0coInNsaWNvc3M6ICVzIEVOQUJMRSBpbnRlcnJ1cHRzKHNsaWMpXG4iLCBfX2Z1bmNfXyk7CisJYWRhcHRlci0+aXNyY29weSA9IDA7CisJYWRhcHRlci0+cHNobWVtLT5pc3IgPSAwOworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfaXNyLCAwLCBGTFVTSCk7CisJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pY3IsIElDUl9JTlRfT04sIEZMVVNIKTsKKworCURCR19NU0coInNsaWNvc3M6ICVzIGNhbGwgc2xpY19saW5rX2NvbmZpZyhzbGljKVxuIiwgX19mdW5jX18pOworCXNsaWNfbGlua19jb25maWcoYWRhcHRlciwgTElOS19BVVRPU1BFRUQsIExJTktfQVVUT0QpOworCXNsaWNfbGlua19ldmVudF9oYW5kbGVyKGFkYXB0ZXIpOworCisJREJHX01TRygic2xpY29zczogJXMgRVhJVFxuIiwgX19mdW5jX18pOworCXJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIHZvaWQgc2xpY191bm1hcF9tbWlvX3NwYWNlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworI2lmIExJTlVYX0ZSRUVTX0FEQVBURVJfUkVTT1VSQ0VTCisJaWYgKGFkYXB0ZXItPnNsaWNfcmVncykKKwkJaW91bm1hcChhZGFwdGVyLT5zbGljX3JlZ3MpOworCWFkYXB0ZXItPnNsaWNfcmVncyA9IE5VTEw7CisjZW5kaWYKK30KKworc3RhdGljIGludCBzbGljX2FkYXB0ZXJfYWxsb2NyZXNvdXJjZXMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJaWYgKCFhZGFwdGVyLT5pbnRycmVnaXN0ZXJlZCkgeworCQlpbnQgcmV0dmFsOworCisJCURCR19NU0cKKwkJICAgICgic2xpY29zczogJXMgQWxsb2NBZGFwdFJzcmNzIGFkYXB0ZXJbJXBdIHNobWVtWyVwXSBcCisJCSAgICAgcGh5c19zaG1lbVslcF0gZGV2LT5pcnFbJXhdICV4XG4iLAorCQkgICAgIF9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5wc2htZW0sCisJCSAgICAgKHZvaWQgKilhZGFwdGVyLT5waHlzX3NobWVtLCBhZGFwdGVyLT5uZXRkZXYtPmlycSwKKwkJICAgICBOUl9JUlFTKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5sb2NrLAorCQkJCQlzbGljX2dsb2JhbC5kcml2ZXJfbG9jay5mbGFncyk7CisKKwkJcmV0dmFsID0gcmVxdWVzdF9pcnEoYWRhcHRlci0+bmV0ZGV2LT5pcnEsCisJCQkJICAgICAmc2xpY19pbnRlcnJ1cHQsCisJCQkJICAgICBJUlFGX1NIQVJFRCwKKwkJCQkgICAgIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+bmV0ZGV2KTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmc2xpY19nbG9iYWwuZHJpdmVyX2xvY2subG9jaywKKwkJCQkJc2xpY19nbG9iYWwuZHJpdmVyX2xvY2suZmxhZ3MpOworCisJCWlmIChyZXR2YWwpIHsKKwkJCURCR19FUlJPUigic2xpY29zczogcmVxdWVzdF9pcnEgKCVzKSBGQUlMRUQgWyV4XVxuIiwKKwkJCQkgIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgcmV0dmFsKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJYWRhcHRlci0+aW50cnJlZ2lzdGVyZWQgPSAxOworCQlEQkdfTVNHCisJCSAgICAoInNsaWNvc3M6ICVzIEFsbG9jQWRhcHRSc3JjcyBhZGFwdGVyWyVwXSBzaG1lbVslcF0gXAorCQkgICAgIHBzaG1lbVslcF0gZGV2LT5pcnFbJXhdXG4iLAorCQkgICAgIF9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5wc2htZW0sCisJCSAgICAgKHZvaWQgKilhZGFwdGVyLT5wc2htZW0sIGFkYXB0ZXItPm5ldGRldi0+aXJxKTsKKwl9CisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBzbGljX2NvbmZpZ19wY2koc3RydWN0IHBjaV9kZXYgKnBjaWRldikKK3sKKwl1MTYgcGNpX2NvbW1hbmQ7CisJdTE2IG5ld19jb21tYW5kOworCisJcGNpX3JlYWRfY29uZmlnX3dvcmQocGNpZGV2LCBQQ0lfQ09NTUFORCwgJnBjaV9jb21tYW5kKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAgUENJIGNvbW1hbmRbJTQuNHhdXG4iLCBfX2Z1bmNfXywgcGNpX2NvbW1hbmQpOworCisJbmV3X2NvbW1hbmQgPSBwY2lfY29tbWFuZCB8IFBDSV9DT01NQU5EX01BU1RFUgorCSAgICB8IFBDSV9DT01NQU5EX01FTU9SWQorCSAgICB8IFBDSV9DT01NQU5EX0lOVkFMSURBVEUKKwkgICAgfCBQQ0lfQ09NTUFORF9QQVJJVFkgfCBQQ0lfQ09NTUFORF9TRVJSIHwgUENJX0NPTU1BTkRfRkFTVF9CQUNLOworCWlmIChwY2lfY29tbWFuZCAhPSBuZXdfY29tbWFuZCkgeworCQlEQkdfTVNHKCIlcyAtLSBVcGRhdGluZyBQQ0kgQ09NTUFORCByZWdpc3RlciAlNC40eC0+JTQuNHguXG4iLAorCQkJX19mdW5jX18sIHBjaV9jb21tYW5kLCBuZXdfY29tbWFuZCk7CisJCXBjaV93cml0ZV9jb25maWdfd29yZChwY2lkZXYsIFBDSV9DT01NQU5ELCBuZXdfY29tbWFuZCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzbGljX2FkYXB0ZXJfZnJlZXJlc291cmNlcyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBFTlRFUiBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sIGFkYXB0ZXIpOworCXNsaWNfaW5pdF9jbGVhbnVwKGFkYXB0ZXIpOworCW1lbXNldCgmYWRhcHRlci0+c3RhdHMsIDAsIHNpemVvZihzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cykpOworCWFkYXB0ZXItPmVycm9yX2ludGVycnVwdHMgPSAwOworCWFkYXB0ZXItPnJjdl9pbnRlcnJ1cHRzID0gMDsKKwlhZGFwdGVyLT54bWl0X2ludGVycnVwdHMgPSAwOworCWFkYXB0ZXItPmxpbmtldmVudF9pbnRlcnJ1cHRzID0gMDsKKwlhZGFwdGVyLT51cHJfaW50ZXJydXB0cyA9IDA7CisJYWRhcHRlci0+bnVtX2lzcnMgPSAwOworCWFkYXB0ZXItPnhtaXRfY29tcGxldGVzID0gMDsKKwlhZGFwdGVyLT5yY3ZfYnJvYWRjYXN0cyA9IDA7CisJYWRhcHRlci0+cmN2X211bHRpY2FzdHMgPSAwOworCWFkYXB0ZXItPnJjdl91bmljYXN0cyA9IDA7CisJREJHX01TRygic2xpY29zczogJXMgRVhJVFxuIiwgX19mdW5jX18pOworfQorCisvKgorICogIHNsaWNfbGlua19jb25maWcKKyAqCisgKiAgV3JpdGUgcGh5IGNvbnRyb2wgdG8gY29uZmlndXJlIGxpbmsgZHVwbGV4L3NwZWVkCisgKgorICovCitzdGF0aWMgdm9pZCBzbGljX2xpbmtfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAorCQkgICAgICB1MzIgbGlua3NwZWVkLCB1MzIgbGlua2R1cGxleCkKK3sKKwl1MzIgc3BlZWQ7CisJdTMyIGR1cGxleDsKKwl1MzIgcGh5X2NvbmZpZzsKKwl1MzIgcGh5X2FkdnJlZzsKKwl1MzIgcGh5X2djdGxyZWc7CisKKwlpZiAoYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfVVApIHsKKwkJREJHX01TRworCQkgICAgKCIlcyAoJXMpIEFEQVBUIE5vdCB1cCB5ZXQsIFJldHVybiEgc3BlZWRbJXhdIGR1cGxleFsleF1cbiIsCisJCSAgICAgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgbGlua3NwZWVkLAorCQkgICAgIGxpbmtkdXBsZXgpOworCQlyZXR1cm47CisJfQorCURCR19NU0coInNsaWNvc3M6ICVzICglcykgc2xpY19saW5rX2NvbmZpZzogc3BlZWRbJXhdIGR1cGxleFsleF1cbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGxpbmtzcGVlZCwgbGlua2R1cGxleCk7CisKKwlBU1NFUlQoKGFkYXB0ZXItPmRldmlkID09IFNMSUNfMUdCX0RFVklDRV9JRCkKKwkgICAgICAgfHwgKGFkYXB0ZXItPmRldmlkID09IFNMSUNfMkdCX0RFVklDRV9JRCkpOworCisJaWYgKGxpbmtzcGVlZCA+IExJTktfMTAwME1CKQorCQlsaW5rc3BlZWQgPSBMSU5LX0FVVE9TUEVFRDsKKwlpZiAobGlua2R1cGxleCA+IExJTktfQVVUT0QpCisJCWxpbmtkdXBsZXggPSBMSU5LX0FVVE9EOworCisJaWYgKChsaW5rc3BlZWQgPT0gTElOS19BVVRPU1BFRUQpIHx8IChsaW5rc3BlZWQgPT0gTElOS18xMDAwTUIpKSB7CisJCWlmIChhZGFwdGVyLT5mbGFncyAmIEFEQVBUX0ZMQUdTX0ZJQkVSTUVESUEpIHsKKwkJCS8qICBXZSd2ZSBnb3QgYSBmaWJlciBnaWdhYml0IGludGVyZmFjZSwgYW5kIHJlZ2lzdGVyCisJCQkgKiAgNCBpcyBkaWZmZXJlbnQgaW4gZmliZXIgbW9kZSB0aGFuIGluIGNvcHBlciBtb2RlCisJCQkgKi8KKworCQkJLyogYWR2ZXJ0aXNlIEZEIG9ubHkgQDEwMDAgTWIgKi8KKwkJCXBoeV9hZHZyZWcgPSAoTUlJQ1JfUkVHXzQgfCAoUEFSX0FEVjEwMDBYRkQpKTsKKwkJCS8qIGVuYWJsZSBQQVVTRSBmcmFtZXMgICAgICAgICovCisJCQlwaHlfYWR2cmVnIHw9IFBBUl9BU1lNUEFVU0VfRklCRVI7CisJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksIHBoeV9hZHZyZWcsCisJCQkJICBGTFVTSCk7CisKKwkJCWlmIChsaW5rc3BlZWQgPT0gTElOS19BVVRPU1BFRUQpIHsKKwkJCQkvKiByZXNldCBwaHksIGVuYWJsZSBhdXRvLW5lZyAgKi8KKwkJCQlwaHlfY29uZmlnID0KKwkJCQkgICAgKE1JSUNSX1JFR19QQ1IgfAorCQkJCSAgICAgKFBDUl9SRVNFVCB8IFBDUl9BVVRPTkVHIHwKKwkJCQkgICAgICBQQ1JfQVVUT05FR19SU1QpKTsKKwkJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksCisJCQkJCSAgcGh5X2NvbmZpZywgRkxVU0gpOworCQkJfSBlbHNlIHsJLyogZm9yY2VkIDEwMDAgTWIgRkQqLworCQkJCS8qIHBvd2VyIGRvd24gcGh5IHRvIGJyZWFrIGxpbmsKKwkJCQkgICB0aGlzIG1heSBub3Qgd29yaykgKi8KKwkJCQlwaHlfY29uZmlnID0gKE1JSUNSX1JFR19QQ1IgfCBQQ1JfUE9XRVJET1dOKTsKKwkJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksCisJCQkJCSAgcGh5X2NvbmZpZywgRkxVU0gpOworCQkJCS8qIHdhaXQsIE1hcnZlbGwgc2F5cyAxIHNlYywKKwkJCQkgICB0cnkgdG8gZ2V0IGF3YXkgd2l0aCAxMCBtcyAgKi8KKwkJCQltZGVsYXkoMTApOworCisJCQkJLyogZGlzYWJsZSBhdXRvLW5lZywgc2V0IHNwZWVkL2R1cGxleCwKKwkJCQkgICBzb2Z0IHJlc2V0IHBoeSwgcG93ZXJ1cCAqLworCQkJCXBoeV9jb25maWcgPQorCQkJCSAgICAoTUlJQ1JfUkVHX1BDUiB8CisJCQkJICAgICAoUENSX1JFU0VUIHwgUENSX1NQRUVEXzEwMDAgfAorCQkJCSAgICAgIFBDUl9EVVBMRVhfRlVMTCkpOworCQkJCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfd3BoeSwKKwkJCQkJICBwaHlfY29uZmlnLCBGTFVTSCk7CisJCQl9CisJCX0gZWxzZSB7CS8qIGNvcHBlciBnaWdhYml0ICovCisKKwkJCS8qIEF1dG8tTmVnb3RpYXRlIG9yIDEwMDAgTWIgbXVzdCBiZSBhdXRvIG5lZ290aWF0ZWQKKwkJCSAqIFdlJ3ZlIGdvdCBhIGNvcHBlciBnaWdhYml0IGludGVyZmFjZSwgYW5kCisJCQkgKiByZWdpc3RlciA0IGlzIGRpZmZlcmVudCBpbiBjb3BwZXIgbW9kZSB0aGFuCisJCQkgKiBpbiBmaWJlciBtb2RlCisJCQkgKi8KKwkJCWlmIChsaW5rc3BlZWQgPT0gTElOS19BVVRPU1BFRUQpIHsKKwkJCQkvKiBhZHZlcnRpc2UgMTAvMTAwIE1iIG1vZGVzICAgKi8KKwkJCQlwaHlfYWR2cmVnID0KKwkJCQkgICAgKE1JSUNSX1JFR180IHwKKwkJCQkgICAgIChQQVJfQURWMTAwRkQgfCBQQVJfQURWMTAwSEQgfCBQQVJfQURWMTBGRAorCQkJCSAgICAgIHwgUEFSX0FEVjEwSEQpKTsKKwkJCX0gZWxzZSB7CisJCQkvKiBsaW5rc3BlZWQgPT0gTElOS18xMDAwTUIgLQorCQkJICAgZG9uJ3QgYWR2ZXJ0aXNlIDEwLzEwMCBNYiBtb2RlcyAgKi8KKwkJCQlwaHlfYWR2cmVnID0gTUlJQ1JfUkVHXzQ7CisJCQl9CisJCQkvKiBlbmFibGUgUEFVU0UgZnJhbWVzICAqLworCQkJcGh5X2FkdnJlZyB8PSBQQVJfQVNZTVBBVVNFOworCQkJLyogcmVxdWlyZWQgYnkgdGhlIENpY2FkYSBQSFkgICovCisJCQlwaHlfYWR2cmVnIHw9IFBBUl84MDJfMzsKKwkJCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfd3BoeSwgcGh5X2FkdnJlZywKKwkJCQkgIEZMVVNIKTsKKwkJCS8qIGFkdmVydGlzZSBGRCBvbmx5IEAxMDAwIE1iICAqLworCQkJcGh5X2djdGxyZWcgPSAoTUlJQ1JfUkVHXzkgfCAoUEdDX0FEVjEwMDBGRCkpOworCQkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY193cGh5LCBwaHlfZ2N0bHJlZywKKwkJCQkgIEZMVVNIKTsKKworCQkJaWYgKGFkYXB0ZXItPnN1YnN5c2lkICE9IFNMSUNfMUdCX0NJQ0FEQV9TVUJTWVNfSUQpIHsKKwkJCQkvKiBpZiBhIE1hcnZlbGwgUEhZCisJCQkJICAgZW5hYmxlIGF1dG8gY3Jvc3NvdmVyICovCisJCQkJcGh5X2NvbmZpZyA9CisJCQkJICAgIChNSUlDUl9SRUdfMTYgfCAoTVJWX1JFRzE2X1hPVkVST04pKTsKKwkJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksCisJCQkJCSAgcGh5X2NvbmZpZywgRkxVU0gpOworCisJCQkJLyogcmVzZXQgcGh5LCBlbmFibGUgYXV0by1uZWcgICovCisJCQkJcGh5X2NvbmZpZyA9CisJCQkJICAgIChNSUlDUl9SRUdfUENSIHwKKwkJCQkgICAgIChQQ1JfUkVTRVQgfCBQQ1JfQVVUT05FRyB8CisJCQkJICAgICAgUENSX0FVVE9ORUdfUlNUKSk7CisJCQkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY193cGh5LAorCQkJCQkgIHBoeV9jb25maWcsIEZMVVNIKTsKKwkJCX0gZWxzZSB7CS8qIGl0J3MgYSBDaWNhZGEgUEhZICAqLworCQkJCS8qIGVuYWJsZSBhbmQgcmVzdGFydCBhdXRvLW5lZyAoZG9uJ3QgcmVzZXQpICAqLworCQkJCXBoeV9jb25maWcgPQorCQkJCSAgICAoTUlJQ1JfUkVHX1BDUiB8CisJCQkJICAgICAoUENSX0FVVE9ORUcgfCBQQ1JfQVVUT05FR19SU1QpKTsKKwkJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksCisJCQkJCSAgcGh5X2NvbmZpZywgRkxVU0gpOworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJLyogRm9yY2VkIDEwLzEwMCAgKi8KKwkJaWYgKGxpbmtzcGVlZCA9PSBMSU5LXzEwTUIpCisJCQlzcGVlZCA9IDA7CisJCWVsc2UKKwkJCXNwZWVkID0gUENSX1NQRUVEXzEwMDsKKwkJaWYgKGxpbmtkdXBsZXggPT0gTElOS19IQUxGRCkKKwkJCWR1cGxleCA9IDA7CisJCWVsc2UKKwkJCWR1cGxleCA9IFBDUl9EVVBMRVhfRlVMTDsKKworCQlpZiAoYWRhcHRlci0+c3Vic3lzaWQgIT0gU0xJQ18xR0JfQ0lDQURBX1NVQlNZU19JRCkgeworCQkJLyogaWYgYSBNYXJ2ZWxsIFBIWQorCQkJICAgZGlzYWJsZSBhdXRvIGNyb3Nzb3ZlciAgKi8KKwkJCXBoeV9jb25maWcgPSAoTUlJQ1JfUkVHXzE2IHwgKE1SVl9SRUcxNl9YT1ZFUk9GRikpOworCQkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY193cGh5LCBwaHlfY29uZmlnLAorCQkJCSAgRkxVU0gpOworCQl9CisKKwkJLyogcG93ZXIgZG93biBwaHkgdG8gYnJlYWsgbGluayAodGhpcyBtYXkgbm90IHdvcmspICAqLworCQlwaHlfY29uZmlnID0gKE1JSUNSX1JFR19QQ1IgfCAoUENSX1BPV0VSRE9XTiB8IHNwZWVkIHwgZHVwbGV4KSk7CisJCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfd3BoeSwgcGh5X2NvbmZpZywgRkxVU0gpOworCisJCS8qIHdhaXQsIE1hcnZlbGwgc2F5cyAxIHNlYywgdHJ5IHRvIGdldCBhd2F5IHdpdGggMTAgbXMgKi8KKwkJbWRlbGF5KDEwKTsKKworCQlpZiAoYWRhcHRlci0+c3Vic3lzaWQgIT0gU0xJQ18xR0JfQ0lDQURBX1NVQlNZU19JRCkgeworCQkJLyogaWYgYSBNYXJ2ZWxsIFBIWQorCQkJICAgZGlzYWJsZSBhdXRvLW5lZywgc2V0IHNwZWVkLAorCQkJICAgc29mdCByZXNldCBwaHksIHBvd2VydXAgKi8KKwkJCXBoeV9jb25maWcgPQorCQkJICAgIChNSUlDUl9SRUdfUENSIHwgKFBDUl9SRVNFVCB8IHNwZWVkIHwgZHVwbGV4KSk7CisJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksIHBoeV9jb25maWcsCisJCQkJICBGTFVTSCk7CisJCX0gZWxzZSB7CS8qIGl0J3MgYSBDaWNhZGEgUEhZICAqLworCQkJLyogZGlzYWJsZSBhdXRvLW5lZywgc2V0IHNwZWVkLCBwb3dlcnVwICAqLworCQkJcGh5X2NvbmZpZyA9IChNSUlDUl9SRUdfUENSIHwgKHNwZWVkIHwgZHVwbGV4KSk7CisJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3dwaHksIHBoeV9jb25maWcsCisJCQkJICBGTFVTSCk7CisJCX0KKwl9CisKKwlEQkdfTVNHCisJICAgICgic2xpY29zczogJXMgKCVzKSBFWElUIHNsaWNfbGlua19jb25maWcgOiBzdGF0ZVslZF0gXAorCSAgICBwaHlfY29uZmlnWyV4XVxuIiwgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+c3RhdGUsCisJICAgIHBoeV9jb25maWcpOworfQorCitzdGF0aWMgdm9pZCBzbGljX2NhcmRfY2xlYW51cChzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQpCit7CisJREJHX01TRygic2xpY29zczogJXMgRU5URVJcbiIsIF9fZnVuY19fKTsKKworI2lmIFNMSUNfRFVNUF9FTkFCTEVECisJaWYgKGNhcmQtPmR1bXBidWZmZXIpIHsKKwkJY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzID0gMDsKKwkJY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzbCA9IDA7CisJCWNhcmQtPmR1bXBidWZmZXJfcGh5c2ggPSAwOworCQlrZnJlZShjYXJkLT5kdW1wYnVmZmVyKTsKKwkJY2FyZC0+ZHVtcGJ1ZmZlciA9IE5VTEw7CisJfQorCWlmIChjYXJkLT5jbWRidWZmZXIpIHsKKwkJY2FyZC0+Y21kYnVmZmVyX3BoeXMgPSAwOworCQljYXJkLT5jbWRidWZmZXJfcGh5c2wgPSAwOworCQljYXJkLT5jbWRidWZmZXJfcGh5c2ggPSAwOworCQlrZnJlZShjYXJkLT5jbWRidWZmZXIpOworCQljYXJkLT5jbWRidWZmZXIgPSBOVUxMOworCX0KKyNlbmRpZgorCisJaWYgKGNhcmQtPmxvYWR0aW1lcnNldCkgeworCQljYXJkLT5sb2FkdGltZXJzZXQgPSAwOworCQlkZWxfdGltZXIoJmNhcmQtPmxvYWR0aW1lcik7CisJfQorCisJc2xpY19kZWJ1Z19jYXJkX2Rlc3Ryb3koY2FyZCk7CisKKwlrZnJlZShjYXJkKTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBFWElUXG4iLCBfX2Z1bmNfXyk7Cit9CisKK3N0YXRpYyBpbnQgc2xpY19jYXJkX2Rvd25sb2FkX2dicmN2KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCV9faW9tZW0gc3RydWN0IHNsaWNfcmVncyAqc2xpY19yZWdzID0gYWRhcHRlci0+c2xpY19yZWdzOworCXUzMiBjb2RlYWRkcjsKKwl1bnNpZ25lZCBjaGFyICppbnN0cnVjdGlvbiA9IE5VTEw7CisJdTMyIHJjdnVjb2RlbGVuID0gMDsKKworCXN3aXRjaCAoYWRhcHRlci0+ZGV2aWQpIHsKKwljYXNlIFNMSUNfMkdCX0RFVklDRV9JRDoKKwkJaW5zdHJ1Y3Rpb24gPSAodW5zaWduZWQgY2hhciAqKSZPYXNpc1JjdlVDb2RlWzBdOworCQlyY3Z1Y29kZWxlbiA9IE9hc2lzUmN2VUNvZGVMZW47CisJCWJyZWFrOworCWNhc2UgU0xJQ18xR0JfREVWSUNFX0lEOgorCQlpbnN0cnVjdGlvbiA9ICh1bnNpZ25lZCBjaGFyICopJkdCUmN2VUNvZGVbMF07CisJCXJjdnVjb2RlbGVuID0gR0JSY3ZVQ29kZUxlbjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQVNTRVJUKDApOworCQlicmVhazsKKwl9CisKKwkvKiBzdGFydCBkb3dubG9hZCAqLworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfcmN2X3djcywgU0xJQ19SQ1ZXQ1NfQkVHSU4sIEZMVVNIKTsKKworCS8qIGRvd25sb2FkIHRoZSByY3Ygc2VxdWVuY2VyIHVjb2RlICovCisJZm9yIChjb2RlYWRkciA9IDA7IGNvZGVhZGRyIDwgcmN2dWNvZGVsZW47IGNvZGVhZGRyKyspIHsKKwkJLyogd3JpdGUgb3V0IGluc3RydWN0aW9uIGFkZHJlc3MgKi8KKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19yY3Zfd2NzLCBjb2RlYWRkciwgRkxVU0gpOworCisJCS8qIHdyaXRlIG91dCB0aGUgaW5zdHJ1Y3Rpb24gZGF0YSBsb3cgYWRkciAqLworCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3Jjdl93Y3MsCisJCQkgICh1MzIpICoodTMyICopIGluc3RydWN0aW9uLCBGTFVTSCk7CisJCWluc3RydWN0aW9uICs9IDQ7CisKKwkJLyogd3JpdGUgb3V0IHRoZSBpbnN0cnVjdGlvbiBkYXRhIGhpZ2ggYWRkciAqLworCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3Jjdl93Y3MsICh1MzIpICppbnN0cnVjdGlvbiwKKwkJCSAgRkxVU0gpOworCQlpbnN0cnVjdGlvbiArPSAxOworCX0KKworCS8qIGRvd25sb2FkIGZpbmlzaGVkICovCisJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19yY3Zfd2NzLCBTTElDX1JDVldDU19GSU5JU0gsIEZMVVNIKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNsaWNfY2FyZF9kb3dubG9hZChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1MzIgc2VjdGlvbjsKKwlpbnQgdGhpc3NlY3Rpb25zaXplOworCWludCBjb2RlYWRkcjsKKwlfX2lvbWVtIHN0cnVjdCBzbGljX3JlZ3MgKnNsaWNfcmVncyA9IGFkYXB0ZXItPnNsaWNfcmVnczsKKwl1MzIgKmluc3RydWN0aW9uID0gTlVMTDsKKwl1MzIgKmxhc3RpbnN0cnVjdCA9IE5VTEw7CisJdTMyICpzdGFydGluc3RydWN0ID0gTlVMTDsKKwl1bnNpZ25lZCBjaGFyICpuZXh0aW5zdHJ1Y3Q7CisJdTMyIGJhc2VhZGRyZXNzOworCXUzMiBmYWlsdXJlOworCXUzMiBpOworCXUzMiBudW1zZWN0cyA9IDA7CisJdTMyIHNlY3RzaXplWzNdOworCXUzMiBzZWN0c3RhcnRbM107CisKKy8qICAgICAgREJHX01TRyAoInNsaWNvc3M6ICVzICglcykgYWRhcHRlclslcF0gY2FyZFslcF0gZGV2aWRbJXhdIFwKKwlqaWZmaWVzWyVseF0gY3B1ICVkXG4iLCBfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyLAorCSAgICBhZGFwdGVyLT5jYXJkLCBhZGFwdGVyLT5kZXZpZCxqaWZmaWVzLCBzbXBfcHJvY2Vzc29yX2lkKCkpOyAqLworCisJc3dpdGNoIChhZGFwdGVyLT5kZXZpZCkgeworCWNhc2UgU0xJQ18yR0JfREVWSUNFX0lEOgorLyogICAgICBEQkdfTVNHICgic2xpY29zczogJXMgZGV2aWQ9PVNMSUNfMkdCX0RFVklDRV9JRCBzZWN0aW9uc1sleF1cbiIsCisJX19mdW5jX18sICh1aW50KSBPTnVtU2VjdGlvbnMpOyAqLworCQludW1zZWN0cyA9IE9OdW1TZWN0aW9uczsKKwkJZm9yIChpID0gMDsgaSA8IG51bXNlY3RzOyBpKyspIHsKKwkJCXNlY3RzaXplW2ldID0gT1NlY3Rpb25TaXplW2ldOworCQkJc2VjdHN0YXJ0W2ldID0gT1NlY3Rpb25TdGFydFtpXTsKKwkJfQorCQlicmVhazsKKwljYXNlIFNMSUNfMUdCX0RFVklDRV9JRDoKKy8qICAgICAgICAgICAgICBEQkdfTVNHICgic2xpY29zczogJXMgZGV2aWQ9PVNMSUNfMUdCX0RFVklDRV9JRCBzZWN0aW9uc1sleF1cbiIsCisJCV9fZnVuY19fLCAodWludCkgTU51bVNlY3Rpb25zKTsgKi8KKwkJbnVtc2VjdHMgPSBNTnVtU2VjdGlvbnM7CisJCWZvciAoaSA9IDA7IGkgPCBudW1zZWN0czsgaSsrKSB7CisJCQlzZWN0c2l6ZVtpXSA9IE1TZWN0aW9uU2l6ZVtpXTsKKwkJCXNlY3RzdGFydFtpXSA9IE1TZWN0aW9uU3RhcnRbaV07CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQVNTRVJUKDApOworCQlicmVhazsKKwl9CisKKwlBU1NFUlQobnVtc2VjdHMgPD0gMyk7CisKKwlmb3IgKHNlY3Rpb24gPSAwOyBzZWN0aW9uIDwgbnVtc2VjdHM7IHNlY3Rpb24rKykgeworCQlzd2l0Y2ggKGFkYXB0ZXItPmRldmlkKSB7CisJCWNhc2UgU0xJQ18yR0JfREVWSUNFX0lEOgorCQkJaW5zdHJ1Y3Rpb24gPSAodTMyICopICZPYXNpc1VDb2RlW3NlY3Rpb25dWzBdOworCQkJYmFzZWFkZHJlc3MgPSBzZWN0c3RhcnRbc2VjdGlvbl07CisJCQl0aGlzc2VjdGlvbnNpemUgPSBzZWN0c2l6ZVtzZWN0aW9uXSA+PiAzOworCQkJbGFzdGluc3RydWN0ID0KKwkJCSAgICAodTMyICopICZPYXNpc1VDb2RlW3NlY3Rpb25dW3NlY3RzaXplW3NlY3Rpb25dIC0KKwkJCQkJCQkgICAgIDhdOworCQkJYnJlYWs7CisJCWNhc2UgU0xJQ18xR0JfREVWSUNFX0lEOgorCQkJaW5zdHJ1Y3Rpb24gPSAodTMyICopICZNb2phdmVVQ29kZVtzZWN0aW9uXVswXTsKKwkJCWJhc2VhZGRyZXNzID0gc2VjdHN0YXJ0W3NlY3Rpb25dOworCQkJdGhpc3NlY3Rpb25zaXplID0gc2VjdHNpemVbc2VjdGlvbl0gPj4gMzsKKwkJCWxhc3RpbnN0cnVjdCA9CisJCQkgICAgKHUzMiAqKSAmTW9qYXZlVUNvZGVbc2VjdGlvbl1bc2VjdHNpemVbc2VjdGlvbl0KKwkJCQkJCQkgICAgICAtIDhdOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlBU1NFUlQoMCk7CisJCQlicmVhazsKKwkJfQorCisJCWJhc2VhZGRyZXNzID0gc2VjdHN0YXJ0W3NlY3Rpb25dOworCQl0aGlzc2VjdGlvbnNpemUgPSBzZWN0c2l6ZVtzZWN0aW9uXSA+PiAzOworCisJCWZvciAoY29kZWFkZHIgPSAwOyBjb2RlYWRkciA8IHRoaXNzZWN0aW9uc2l6ZTsgY29kZWFkZHIrKykgeworCQkJc3RhcnRpbnN0cnVjdCA9IGluc3RydWN0aW9uOworCQkJbmV4dGluc3RydWN0ID0gKCh1bnNpZ25lZCBjaGFyICopaW5zdHJ1Y3Rpb24pICsgODsKKwkJCS8qIFdyaXRlIG91dCBpbnN0cnVjdGlvbiBhZGRyZXNzICovCisJCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3djcywgYmFzZWFkZHJlc3MgKyBjb2RlYWRkciwKKwkJCQkgIEZMVVNIKTsKKwkJCS8qIFdyaXRlIG91dCBpbnN0cnVjdGlvbiB0byBsb3cgYWRkciAqLworCQkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193Y3MsICppbnN0cnVjdGlvbiwgRkxVU0gpOworI2lmZGVmIENPTkZJR19YODZfNjQKKwkJCWluc3RydWN0aW9uID0gKHUzMiAqKSgodW5zaWduZWQgY2hhciAqKWluc3RydWN0aW9uICsgNCk7CisjZWxzZQorCQkJaW5zdHJ1Y3Rpb24rKzsKKyNlbmRpZgorCQkJLyogV3JpdGUgb3V0IGluc3RydWN0aW9uIHRvIGhpZ2ggYWRkciAqLworCQkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193Y3MsICppbnN0cnVjdGlvbiwgRkxVU0gpOworI2lmZGVmIENPTkZJR19YODZfNjQKKwkJCWluc3RydWN0aW9uID0gKHUzMiAqKSgodW5zaWduZWQgY2hhciAqKWluc3RydWN0aW9uICsgNCk7CisjZWxzZQorCQkJaW5zdHJ1Y3Rpb24rKzsKKyNlbmRpZgorCQl9CisJfQorCisJZm9yIChzZWN0aW9uID0gMDsgc2VjdGlvbiA8IG51bXNlY3RzOyBzZWN0aW9uKyspIHsKKwkJc3dpdGNoIChhZGFwdGVyLT5kZXZpZCkgeworCQljYXNlIFNMSUNfMkdCX0RFVklDRV9JRDoKKwkJCWluc3RydWN0aW9uID0gKHUzMiAqKSZPYXNpc1VDb2RlW3NlY3Rpb25dWzBdOworCQkJYnJlYWs7CisJCWNhc2UgU0xJQ18xR0JfREVWSUNFX0lEOgorCQkJaW5zdHJ1Y3Rpb24gPSAodTMyICopJk1vamF2ZVVDb2RlW3NlY3Rpb25dWzBdOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlBU1NFUlQoMCk7CisJCQlicmVhazsKKwkJfQorCisJCWJhc2VhZGRyZXNzID0gc2VjdHN0YXJ0W3NlY3Rpb25dOworCQlpZiAoYmFzZWFkZHJlc3MgPCAweDgwMDApCisJCQljb250aW51ZTsKKwkJdGhpc3NlY3Rpb25zaXplID0gc2VjdHNpemVbc2VjdGlvbl0gPj4gMzsKKworLyogICAgICAgIERCR19NU0cgKCJzbGljb3NzOiBDT01QQVJFIHNlY3RvblsleF0gYmFzZWFkZHJbJXhdIHNlY3Ruc2l6ZVsleF1cbiIsCisJCSh1aW50KXNlY3Rpb24sYmFzZWFkZHJlc3MsdGhpc3NlY3Rpb25zaXplKTsqLworCisJCWZvciAoY29kZWFkZHIgPSAwOyBjb2RlYWRkciA8IHRoaXNzZWN0aW9uc2l6ZTsgY29kZWFkZHIrKykgeworCQkJLyogV3JpdGUgb3V0IGluc3RydWN0aW9uIGFkZHJlc3MgKi8KKwkJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd2NzLAorCQkJCSAgU0xJQ19XQ1NfQ09NUEFSRSB8IChiYXNlYWRkcmVzcyArIGNvZGVhZGRyKSwKKwkJCQkgIEZMVVNIKTsKKwkJCS8qIFdyaXRlIG91dCBpbnN0cnVjdGlvbiB0byBsb3cgYWRkciAqLworCQkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193Y3MsICppbnN0cnVjdGlvbiwgRkxVU0gpOworI2lmZGVmIENPTkZJR19YODZfNjQKKwkJCWluc3RydWN0aW9uID0gKHUzMiAqKSgodW5zaWduZWQgY2hhciAqKWluc3RydWN0aW9uICsgNCk7CisjZWxzZQorCQkJaW5zdHJ1Y3Rpb24rKzsKKyNlbmRpZgorCQkJLyogV3JpdGUgb3V0IGluc3RydWN0aW9uIHRvIGhpZ2ggYWRkciAqLworCQkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193Y3MsICppbnN0cnVjdGlvbiwgRkxVU0gpOworI2lmZGVmIENPTkZJR19YODZfNjQKKwkJCWluc3RydWN0aW9uID0gKHUzMiAqKSgodW5zaWduZWQgY2hhciAqKWluc3RydWN0aW9uICsgNCk7CisjZWxzZQorCQkJaW5zdHJ1Y3Rpb24rKzsKKyNlbmRpZgorCQkJLyogQ2hlY2sgU1JBTSBsb2NhdGlvbiB6ZXJvLiBJZiBpdCBpcyBub24temVyby4gQWJvcnQuKi8KKwkJCWZhaWx1cmUgPSByZWFkbCgodTMyIF9faW9tZW0gKikmc2xpY19yZWdzLT5zbGljX3Jlc2V0KTsKKwkJCWlmIChmYWlsdXJlKSB7CisJCQkJREJHX01TRworCQkJCSAgICAoInNsaWNvc3M6ICVzIEZBSUxVUkUgRVhJVCBjb2RlYWRkclsleF0gXAorCQkJCSAgICB0aGlzc2VjdGlvbnNpemVbJXhdIGZhaWx1cmVbJXhdXG4iLAorCQkJCSAgICAgX19mdW5jX18sIGNvZGVhZGRyLCB0aGlzc2VjdGlvbnNpemUsCisJCQkJICAgICBmYWlsdXJlKTsKKworCQkJCXJldHVybiAtRUlPOworCQkJfQorCQl9CisJfQorLyogICAgREJHX01TRyAoInNsaWNvc3M6IENvbXBhcmUgZG9uZVxuIik7Ki8KKworCS8qIEV2ZXJ5dGhpbmcgT0ssIGtpY2sgb2ZmIHRoZSBjYXJkICovCisJbWRlbGF5KDEwKTsKKwlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3djcywgU0xJQ19XQ1NfU1RBUlQsIEZMVVNIKTsKKworCS8qIHN0YWxsIGZvciAyMCBtcywgbG9uZyBlbm91Z2ggZm9yIHVjb2RlIHRvIGluaXQgY2FyZAorCSAgIGFuZCByZWFjaCBtYWlubG9vcCAqLworCW1kZWxheSgyMCk7CisKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIEVYSVQgYWRhcHRlclslcF0gY2FyZFslcF1cbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXIsIGFkYXB0ZXItPmNhcmQpOworCisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBzbGljX2FkYXB0ZXJfc2V0X2h3YWRkcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSBhZGFwdGVyLT5jYXJkOworCisvKiAgREJHX01TRyAoIiVzIEVOVEVSIGNhcmQtPmNvbmZpZ19zZXRbJXhdIHBvcnRbJWRdIHBoeXNwb3J0WyVkXSBmdW5jdCNbJWRdXG4iLAorICAgIF9fZnVuY19fLCBjYXJkLT5jb25maWdfc2V0LCBhZGFwdGVyLT5wb3J0LCBhZGFwdGVyLT5waHlzcG9ydCwKKyAgICBhZGFwdGVyLT5mdW5jdGlvbm51bWJlcik7CisKKyAgICBzbGljX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsgKi8KKworCWlmICgoYWRhcHRlci0+Y2FyZCkgJiYgKGNhcmQtPmNvbmZpZ19zZXQpKSB7CisJCW1lbWNweShhZGFwdGVyLT5tYWNhZGRyLAorCQkgICAgICAgY2FyZC0+Y29uZmlnLk1hY0luZm9bYWRhcHRlci0+ZnVuY3Rpb25udW1iZXJdLm1hY2FkZHJBLAorCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzbGljX2NvbmZpZ19tYWMpKTsKKy8qICAgICAgREJHX01TRyAoIiVzIEFGVEVSIGNvcHlpbmcgZnJvbSBjb25maWcubWFjaW5mbyBpbnRvIGN1cnJtYWNhZGRyXG4iLAorCV9fZnVuY19fKTsKKwlzbGljX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsqLworCQlpZiAoIShhZGFwdGVyLT5jdXJybWFjYWRkclswXSB8fCBhZGFwdGVyLT5jdXJybWFjYWRkclsxXSB8fAorCQkgICAgICBhZGFwdGVyLT5jdXJybWFjYWRkclsyXSB8fCBhZGFwdGVyLT5jdXJybWFjYWRkclszXSB8fAorCQkgICAgICBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSB8fCBhZGFwdGVyLT5jdXJybWFjYWRkcls1XSkpIHsKKwkJCW1lbWNweShhZGFwdGVyLT5jdXJybWFjYWRkciwgYWRhcHRlci0+bWFjYWRkciwgNik7CisJCX0KKwkJaWYgKGFkYXB0ZXItPm5ldGRldikgeworCQkJbWVtY3B5KGFkYXB0ZXItPm5ldGRldi0+ZGV2X2FkZHIsIGFkYXB0ZXItPmN1cnJtYWNhZGRyLAorCQkJICAgICAgIDYpOworCQl9CisJfQorLyogIERCR19NU0cgKCIlcyBFWElUIHBvcnQgJWRcbiIsIF9fZnVuY19fLCBhZGFwdGVyLT5wb3J0KTsKKyAgICBzbGljX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsgKi8KK30KKworc3RhdGljIHZvaWQgc2xpY19pbnRhZ2dfc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1MzIgdmFsdWUpCit7CisJX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICpzbGljX3JlZ3MgPSBhZGFwdGVyLT5zbGljX3JlZ3M7CisKKwlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX2ludGFnZywgdmFsdWUsIEZMVVNIKTsKKwlhZGFwdGVyLT5jYXJkLT5sb2FkbGV2ZWxfY3VycmVudCA9IHZhbHVlOworfQorCitzdGF0aWMgaW50IHNsaWNfY2FyZF9pbml0KHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICpzbGljX3JlZ3MgPSBhZGFwdGVyLT5zbGljX3JlZ3M7CisJc3RydWN0IHNsaWNfZWVwcm9tICpwZWVwcm9tOworCXN0cnVjdCBvc2xpY19lZXByb20gKnBPZWVwcm9tOworCWRtYV9hZGRyX3QgcGh5c19jb25maWc7CisJdTMyIHBoeXNfY29uZmlnaDsKKwl1MzIgcGh5c19jb25maWdsOworCXUzMiBpID0gMDsKKwlzdHJ1Y3Qgc2xpY19zaG1lbSAqcHNobWVtOworCWludCBzdGF0dXM7CisJdWludCBtYWNhZGRycyA9IGNhcmQtPmNhcmRfc2l6ZTsKKwl1c2hvcnQgZWVjb2Rlc2l6ZTsKKwl1c2hvcnQgZHJhbXNpemU7CisJdXNob3J0IGVlX2Noa3N1bTsKKwl1c2hvcnQgY2FsY19jaGtzdW07CisJc3RydWN0IHNsaWNfY29uZmlnX21hYyAqcG1hYzsKKwl1bnNpZ25lZCBjaGFyIGZydWZvcm1hdDsKKwl1bnNpZ25lZCBjaGFyIG9lbWZydWZvcm1hdDsKKwlzdHJ1Y3QgYXRrX2ZydSAqcGF0a2ZydTsKKwl1bmlvbiBvZW1mcnUgKnBvZW1mcnU7CisKKwlEQkdfTVNHCisJICAgICgic2xpY29zczogJXMgRU5URVIgY2FyZFslcF0gYWRhcHRlclslcF0gY2FyZC0+c3RhdGVbJXhdIFwKKwkgICAgc2l6ZVslZF1cbiIsIF9fZnVuY19fLCBjYXJkLCBhZGFwdGVyLCBjYXJkLT5zdGF0ZSwgY2FyZC0+Y2FyZF9zaXplKTsKKworCS8qIFJlc2V0IGV2ZXJ5dGhpbmcgZXhjZXB0IFBDSSBjb25maWd1cmF0aW9uIHNwYWNlICovCisJc2xpY19zb2Z0X3Jlc2V0KGFkYXB0ZXIpOworCisJLyogRG93bmxvYWQgdGhlIG1pY3JvY29kZSAqLworCXN0YXR1cyA9IHNsaWNfY2FyZF9kb3dubG9hZChhZGFwdGVyKTsKKworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpIHsKKwkJREJHX0VSUk9SKCJTTElDIGRvd25sb2FkIGZhaWxlZCBidXMgJWQgc2xvdCAlZFxuIiwKKwkJCSAgKHVpbnQpIGFkYXB0ZXItPmJ1c251bWJlciwKKwkJCSAgKHVpbnQpIGFkYXB0ZXItPnNsb3RudW1iZXIpOworCQlyZXR1cm4gc3RhdHVzOworCX0KKworCWlmICghY2FyZC0+Y29uZmlnX3NldCkgeworCQlwZWVwcm9tID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzbGljX2VlcHJvbSksCisJCQkJCSAgICAgICAmcGh5c19jb25maWcpOworCisJCXBoeXNfY29uZmlnbCA9IFNMSUNfR0VUX0FERFJfTE9XKHBoeXNfY29uZmlnKTsKKwkJcGh5c19jb25maWdoID0gU0xJQ19HRVRfQUREUl9ISUdIKHBoeXNfY29uZmlnKTsKKworCQlEQkdfTVNHKCJzbGljb3NzOiAlcyBFZXByb20gaW5mbyAgYWRhcHRlciBbJXBdXG4gICAgIgorCQkJInNpemUgICAgICAgIFsleF1cbiAgICBwZWVwcm9tICAgICBbJXBdXG4gICAgIgorCQkJInBoeXNfY29uZmlnIFslcF1cbiAgICBwaHlzX2NvbmZpZ2xbJXhdXG4gICAgIgorCQkJInBoeXNfY29uZmlnaFsleF1cbiIsCisJCQlfX2Z1bmNfXywgYWRhcHRlciwKKwkJCSh1MzIpc2l6ZW9mKHN0cnVjdCBzbGljX2VlcHJvbSksCisJCQlwZWVwcm9tLCAodm9pZCAqKSBwaHlzX2NvbmZpZywgcGh5c19jb25maWdsLAorCQkJcGh5c19jb25maWdoKTsKKwkJaWYgKCFwZWVwcm9tKSB7CisJCQlEQkdfRVJST1IKKwkJCSAgICAoIlNMSUMgZWVwcm9tIHJlYWQgZmFpbGVkIHRvIGdldCBtZW1vcnkgYnVzICVkIFwKKwkJCSAgICBzbG90ICVkXG4iLAorCQkJICAgICAodWludCkgYWRhcHRlci0+YnVzbnVtYmVyLAorCQkJICAgICAodWludCkgYWRhcHRlci0+c2xvdG51bWJlcik7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfSBlbHNlIHsKKwkJCW1lbXNldChwZWVwcm9tLCAwLCBzaXplb2Yoc3RydWN0IHNsaWNfZWVwcm9tKSk7CisJCX0KKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pY3IsIElDUl9JTlRfT0ZGLCBGTFVTSCk7CisJCW1kZWxheSgxKTsKKwkJcHNobWVtID0gKHN0cnVjdCBzbGljX3NobWVtICopYWRhcHRlci0+cGh5c19zaG1lbTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYWRhcHRlci0+Yml0NjRyZWdsb2NrLmxvY2ssCisJCQkJCWFkYXB0ZXItPmJpdDY0cmVnbG9jay5mbGFncyk7CisJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwgMCwgRE9OVF9GTFVTSCk7CisJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfaXNwLAorCQkJICBTTElDX0dFVF9BRERSX0xPVygmcHNobWVtLT5pc3IpLCBGTFVTSCk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPmJpdDY0cmVnbG9jay5sb2NrLAorCQkJCQlhZGFwdGVyLT5iaXQ2NHJlZ2xvY2suZmxhZ3MpOworCisJCXNsaWNfY29uZmlnX2dldChhZGFwdGVyLCBwaHlzX2NvbmZpZ2wsIHBoeXNfY29uZmlnaCk7CisKKwkJZm9yICg7OykgeworCQkJaWYgKGFkYXB0ZXItPnBzaG1lbS0+aXNyKSB7CisJCQkJREJHX01TRygiJXMgc2htZW1bJXBdIHNobWVtLT5pc3JbJXhdXG4iLAorCQkJCQlfX2Z1bmNfXywgYWRhcHRlci0+cHNobWVtLAorCQkJCQlhZGFwdGVyLT5wc2htZW0tPmlzcik7CisKKwkJCQlpZiAoYWRhcHRlci0+cHNobWVtLT5pc3IgJiBJU1JfVVBDKSB7CisJCQkJCWFkYXB0ZXItPnBzaG1lbS0+aXNyID0gMDsKKwkJCQkJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJCQkJCSAgICBzbGljX3JlZ3MtPnNsaWNfaXNwLAorCQkJCQkJICAgIDAsCisJCQkJCQkgICAgc2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsCisJCQkJCQkgICAgMCwgRkxVU0gpOworCQkJCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX2lzciwgMCwKKwkJCQkJCSAgRkxVU0gpOworCisJCQkJCXNsaWNfdXByX3JlcXVlc3RfY29tcGxldGUoYWRhcHRlciwgMCk7CisJCQkJCWJyZWFrOworCQkJCX0gZWxzZSB7CisJCQkJCWFkYXB0ZXItPnBzaG1lbS0+aXNyID0gMDsKKwkJCQkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY19pc3IsIDAsCisJCQkJCQkgIEZMVVNIKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCW1kZWxheSgxKTsKKwkJCQlpKys7CisJCQkJaWYgKGkgPiA1MDAwKSB7CisJCQkJCURCR19FUlJPUgorCQkJCQkgICAgKCJTTElDOiAlZCBjb25maWcgZGF0YSBmZXRjaCB0aW1lZFwKKwkJCQkJICAgICAgb3V0IVxuIiwgYWRhcHRlci0+cG9ydCk7CisJCQkJCURCR19NU0coIiVzIHNobWVtWyVwXSBzaG1lbS0+aXNyWyV4XVxuIiwKKwkJCQkJCV9fZnVuY19fLCBhZGFwdGVyLT5wc2htZW0sCisJCQkJCQlhZGFwdGVyLT5wc2htZW0tPmlzcik7CisJCQkJCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCQkJCQkgICAgc2xpY19yZWdzLT5zbGljX2lzcCwgMCwKKwkJCQkJCSAgICBzbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwKKwkJCQkJCSAgICAwLCBGTFVTSCk7CisJCQkJCXJldHVybiAtRUlOVkFMOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXN3aXRjaCAoYWRhcHRlci0+ZGV2aWQpIHsKKwkJLyogT2FzaXMgY2FyZCAqLworCQljYXNlIFNMSUNfMkdCX0RFVklDRV9JRDoKKwkJCS8qIGV4dHJhY3QgRUVQUk9NIGRhdGEgYW5kIHBvaW50ZXJzIHRvIEVFUFJPTSBkYXRhICovCisJCQlwT2VlcHJvbSA9IChzdHJ1Y3Qgb3NsaWNfZWVwcm9tICopIHBlZXByb207CisJCQllZWNvZGVzaXplID0gcE9lZXByb20tPkVlY29kZVNpemU7CisJCQlkcmFtc2l6ZSA9IHBPZWVwcm9tLT5EcmFtU2l6ZTsKKwkJCXBtYWMgPSBwT2VlcHJvbS0+TWFjSW5mbzsKKwkJCWZydWZvcm1hdCA9IHBPZWVwcm9tLT5GcnVGb3JtYXQ7CisJCQlwYXRrZnJ1ID0gJnBPZWVwcm9tLT5BdGtGcnU7CisJCQlvZW1mcnVmb3JtYXQgPSBwT2VlcHJvbS0+T2VtRnJ1Rm9ybWF0OworCQkJcG9lbWZydSA9ICZwT2VlcHJvbS0+T2VtRnJ1OworCQkJbWFjYWRkcnMgPSAyOworCQkJLyogTWlub3Iga2x1ZGdlIGZvciBPYXNpcyBjYXJkCisJCQkgICAgIGdldCAyIE1BQyBhZGRyZXNzZXMgZnJvbSB0aGUKKwkJCSAgICAgRUVQUk9NIHRvIGVuc3VyZSB0aGF0IGZ1bmN0aW9uIDEKKwkJCSAgICAgZ2V0cyB0aGUgUG9ydCAxIE1BQyBhZGRyZXNzICovCisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCS8qIGV4dHJhY3QgRUVQUk9NIGRhdGEgYW5kIHBvaW50ZXJzIHRvIEVFUFJPTSBkYXRhICovCisJCQllZWNvZGVzaXplID0gcGVlcHJvbS0+RWVjb2RlU2l6ZTsKKwkJCWRyYW1zaXplID0gcGVlcHJvbS0+RHJhbVNpemU7CisJCQlwbWFjID0gcGVlcHJvbS0+dTIubWFjLk1hY0luZm87CisJCQlmcnVmb3JtYXQgPSBwZWVwcm9tLT5GcnVGb3JtYXQ7CisJCQlwYXRrZnJ1ID0gJnBlZXByb20tPkF0a0ZydTsKKwkJCW9lbWZydWZvcm1hdCA9IHBlZXByb20tPk9lbUZydUZvcm1hdDsKKwkJCXBvZW1mcnUgPSAmcGVlcHJvbS0+T2VtRnJ1OworCQkJYnJlYWs7CisJCX0KKworCQljYXJkLT5jb25maWcuRWVwcm9tVmFsaWQgPSBGQUxTRTsKKworCQkvKiAgc2VlIGlmIHRoZSBFRVBST00gaXMgdmFsaWQgYnkgY2hlY2tpbmcgaXQncyBjaGVja3N1bSAqLworCQlpZiAoKGVlY29kZXNpemUgPD0gTUFYX0VFQ09ERV9TSVpFKSAmJgorCQkgICAgKGVlY29kZXNpemUgPj0gTUlOX0VFQ09ERV9TSVpFKSkgeworCisJCQllZV9jaGtzdW0gPQorCQkJICAgICoodTE2ICopICgoY2hhciAqKSBwZWVwcm9tICsgKGVlY29kZXNpemUgLSAyKSk7CisJCQkvKgorCQkJICAgIGNhbGN1bGF0ZSB0aGUgRUVQUk9NIGNoZWNrc3VtCisJCQkqLworCQkJY2FsY19jaGtzdW0gPQorCQkJICAgIH5zbGljX2VlcHJvbV9ja3N1bSgoY2hhciAqKSBwZWVwcm9tLAorCQkJCQkgICAgICAgKGVlY29kZXNpemUgLSAyKSk7CisJCQkvKgorCQkJICAgIGlmIHRoZSB1Y2RvZSBjaGtzdW0gZmxhZyBiaXQgd29ya2VkLAorCQkJICAgIHdlIHdvdWxkbid0IG5lZWQgdGhpcyBzaGl0CisJCQkqLworCQkJaWYgKGVlX2Noa3N1bSA9PSBjYWxjX2Noa3N1bSkKKwkJCQljYXJkLT5jb25maWcuRWVwcm9tVmFsaWQgPSBUUlVFOworCQl9CisJCS8qICBjb3B5IGluIHRoZSBEUkFNIHNpemUgKi8KKwkJY2FyZC0+Y29uZmlnLkRyYW1TaXplID0gZHJhbXNpemU7CisKKwkJLyogIGNvcHkgaW4gdGhlIE1BQyBhZGRyZXNzKGVzKSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbWFjYWRkcnM7IGkrKykgeworCQkJbWVtY3B5KCZjYXJkLT5jb25maWcuTWFjSW5mb1tpXSwKKwkJCSAgICAgICAmcG1hY1tpXSwgc2l6ZW9mKHN0cnVjdCBzbGljX2NvbmZpZ19tYWMpKTsKKwkJfQorLyogICAgICBEQkdfTVNHICgiJXMgRUVQUk9NIENoZWNrc3VtIEdvb2Q/ICVkICBNYWNBZGRyZXNzXG4iLF9fZnVuY19fLAorCQljYXJkLT5jb25maWcuRWVwcm9tVmFsaWQpOyAqLworCisJCS8qICBjb3B5IHRoZSBBbGFjcml0ZWNoIEZSVSBpbmZvcm1hdGlvbiAqLworCQljYXJkLT5jb25maWcuRnJ1Rm9ybWF0ID0gZnJ1Zm9ybWF0OworCQltZW1jcHkoJmNhcmQtPmNvbmZpZy5BdGtGcnUsIHBhdGtmcnUsCisJCQkJCQlzaXplb2Yoc3RydWN0IGF0a19mcnUpKTsKKworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBzbGljX2VlcHJvbSksCisJCQkJICAgIHBlZXByb20sIHBoeXNfY29uZmlnKTsKKwkJREJHX01TRworCQkgICAgKCJzbGljb3NzOiAlcyBhZGFwdGVyJWQgWyVwXSBzaXplWyV4XSBGUkVFIHBlZXByb21bJXBdIFwKKwkJICAgICBwaHlzX2NvbmZpZ1slcF1cbiIsCisJCSAgICAgX19mdW5jX18sIGFkYXB0ZXItPnBvcnQsIGFkYXB0ZXIsCisJCSAgICAgKHUzMikgc2l6ZW9mKHN0cnVjdCBzbGljX2VlcHJvbSksIHBlZXByb20sCisJCSAgICAgKHZvaWQgKikgcGh5c19jb25maWcpOworCisJCWlmICgoIWNhcmQtPmNvbmZpZy5FZXByb21WYWxpZCkgJiYKKwkJICAgIChhZGFwdGVyLT5yZWdfcGFyYW1zLmZhaWxfb25fYmFkX2VlcHJvbSkpIHsKKwkJCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCQkJICAgIHNsaWNfcmVncy0+c2xpY19pc3AsCisJCQkJICAgIDAsIHNsaWNfcmVncy0+c2xpY19hZGRyX3VwcGVyLCAwLCBGTFVTSCk7CisJCQlEQkdfRVJST1IKKwkJCSAgICAoInVuc3VwcG9ydGVkIENPTkZJR1VSQVRJT04gIEVFUFJPTSBpbnZhbGlkXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJY2FyZC0+Y29uZmlnX3NldCA9IDE7CisJfQorCisJaWYgKHNsaWNfY2FyZF9kb3dubG9hZF9nYnJjdihhZGFwdGVyKSkgeworCQlEQkdfRVJST1IoIiVzIHVuYWJsZSB0byBkb3dubG9hZCBHQiByZWNlaXZlIG1pY3JvY29kZVxuIiwKKwkJCSAgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoc2xpY19nbG9iYWwuZHluYW1pY19pbnRhZ2cpIHsKKwkJREJHX01TRworCQkgICAgKCJEeW5hbWljIEludGVycnVwdCBBZ2dyZWdhdGlvbltFTkFCTEVEXTogc2xpYyVkIFwKKwkJICAgICBTRVQgaW50YWdnIHRvICVkXG4iLAorCQkgICAgIGNhcmQtPmNhcmRudW0sIDApOworCQlzbGljX2ludGFnZ19zZXQoYWRhcHRlciwgMCk7CisJfSBlbHNlIHsKKwkJc2xpY19pbnRhZ2dfc2V0KGFkYXB0ZXIsIGludGFnZ19kZWxheSk7CisJCURCR19NU0cKKwkJICAgICgiRHluYW1pYyBJbnRlcnJ1cHQgQWdncmVnYXRpb25bRElTQUJMRURdOiBzbGljJWQgXAorCQkgICAgIFNFVCBpbnRhZ2cgdG8gJWRcbiIsCisJCSAgICAgY2FyZC0+Y2FyZG51bSwgaW50YWdnX2RlbGF5KTsKKwl9CisKKwkvKgorCSAqICBJbml0aWFsaXplIHBpbmcgc3RhdHVzIHRvICJvayIKKwkgKi8KKwljYXJkLT5waW5nc3RhdHVzID0gSVNSX1BJTkdNQVNLOworCisjaWYgU0xJQ19EVU1QX0VOQUJMRUQKKwlpZiAoIWNhcmQtPmR1bXBidWZmZXIpIHsKKwkJY2FyZC0+ZHVtcGJ1ZmZlciA9IGttYWxsb2MoRFVNUF9QQUdFX1NJWkUsIEdGUF9BVE9NSUMpOworCisJCUFTU0VSVChjYXJkLT5kdW1wYnVmZmVyKTsKKwkJaWYgKGNhcmQtPmR1bXBidWZmZXIgPT0gTlVMTCkKKwkJCXJldHVybiAtRU5PTUVNOworCX0KKwkvKgorCSAqICBTbWVhciB0aGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgYW5kIHRoZW4gb2J0YWluCisJICogIHRoZSBQSFlTSUNBTCBhZGRyZXNzIG9mIHRoaXMgc3RydWN0dXJlCisJICovCisJbWVtc2V0KGNhcmQtPmR1bXBidWZmZXIsIDAsIERVTVBfUEFHRV9TSVpFKTsKKwljYXJkLT5kdW1wYnVmZmVyX3BoeXMgPSB2aXJ0X3RvX2J1cyhjYXJkLT5kdW1wYnVmZmVyKTsKKwljYXJkLT5kdW1wYnVmZmVyX3BoeXNoID0gU0xJQ19HRVRfQUREUl9ISUdIKGNhcmQtPmR1bXBidWZmZXJfcGh5cyk7CisJY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzbCA9IFNMSUNfR0VUX0FERFJfTE9XKGNhcmQtPmR1bXBidWZmZXJfcGh5cyk7CisKKwkvKgorCSAqICBBbGxvY2F0ZSBDT01NQU5EIEJVRkZFUgorCSAqLworCWlmICghY2FyZC0+Y21kYnVmZmVyKSB7CisJCWNhcmQtPmNtZGJ1ZmZlciA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBkdW1wX2NtZCksIEdGUF9BVE9NSUMpOworCisJCUFTU0VSVChjYXJkLT5jbWRidWZmZXIpOworCQlpZiAoY2FyZC0+Y21kYnVmZmVyID09IE5VTEwpCisJCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJLyoKKwkgKiAgU21lYXIgdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIGFuZCB0aGVuIG9idGFpbgorCSAqICB0aGUgUEhZU0lDQUwgYWRkcmVzcyBvZiB0aGlzIHN0cnVjdHVyZQorCSAqLworCW1lbXNldChjYXJkLT5jbWRidWZmZXIsIDAsIHNpemVvZihzdHJ1Y3QgZHVtcF9jbWQpKTsKKwljYXJkLT5jbWRidWZmZXJfcGh5cyA9IHZpcnRfdG9fYnVzKGNhcmQtPmNtZGJ1ZmZlcik7CisJY2FyZC0+Y21kYnVmZmVyX3BoeXNoID0gU0xJQ19HRVRfQUREUl9ISUdIKGNhcmQtPmNtZGJ1ZmZlcl9waHlzKTsKKwljYXJkLT5jbWRidWZmZXJfcGh5c2wgPSBTTElDX0dFVF9BRERSX0xPVyhjYXJkLT5jbWRidWZmZXJfcGh5cyk7CisjZW5kaWYKKworCS8qCisJICogTGFzdGx5LCBtYXJrIG91ciBjYXJkIHN0YXRlIGFzIHVwIGFuZCByZXR1cm4gc3VjY2VzcworCSAqLworCWNhcmQtPnN0YXRlID0gQ0FSRF9VUDsKKwljYXJkLT5yZXNldF9pbl9wcm9ncmVzcyA9IDA7CisJREJHX01TRygic2xpY29zczogJXMgRVhJVCBjYXJkWyVwXSBhZGFwdGVyWyVwXSBjYXJkLT5zdGF0ZVsleF1cbiIsCisJCV9fZnVuY19fLCBjYXJkLCBhZGFwdGVyLCBjYXJkLT5zdGF0ZSk7CisKKwlyZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB1MzIgc2xpY19jYXJkX2xvY2F0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSBzbGljX2dsb2JhbC5zbGljX2NhcmQ7CisJc3RydWN0IHBoeXNjYXJkICpwaHlzY2FyZCA9IHNsaWNfZ2xvYmFsLnBoeXNfY2FyZDsKKwl1c2hvcnQgY2FyZF9ob3N0aWQ7CisJdTE2IF9faW9tZW0gKmhvc3RpZF9yZWc7CisJdWludCBpOworCXVpbnQgcmRob3N0aWRfb2Zmc2V0ID0gMDsKKworCURCR19NU0coInNsaWNvc3M6ICVzIGFkYXB0ZXJbJXBdIHNsb3RbJXhdIGJ1c1sleF0gcG9ydFsleF1cbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5zbG90bnVtYmVyLCBhZGFwdGVyLT5idXNudW1iZXIsCisJCWFkYXB0ZXItPnBvcnQpOworCisJc3dpdGNoIChhZGFwdGVyLT5kZXZpZCkgeworCWNhc2UgU0xJQ18yR0JfREVWSUNFX0lEOgorCQlyZGhvc3RpZF9vZmZzZXQgPSBTTElDX1JESE9TVElEXzJHQjsKKwkJYnJlYWs7CisJY2FzZSBTTElDXzFHQl9ERVZJQ0VfSUQ6CisJCXJkaG9zdGlkX29mZnNldCA9IFNMSUNfUkRIT1NUSURfMUdCOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlBU1NFUlQoMCk7CisJCWJyZWFrOworCX0KKworCWhvc3RpZF9yZWcgPQorCSAgICAodTE2IF9faW9tZW0gKikgKCgodTggX19pb21lbSAqKSAoYWRhcHRlci0+c2xpY19yZWdzKSkgKworCSAgICByZGhvc3RpZF9vZmZzZXQpOworCURCR19NU0coInNsaWNvc3M6ICVzICpob3N0aWRfcmVnWyVwXSA9PSAiLCBfX2Z1bmNfXywgaG9zdGlkX3JlZyk7CisKKwkvKiByZWFkIHRoZSAxNiBiaXQgaG9zdGlkIGZyb20gU1JBTSAqLworCWNhcmRfaG9zdGlkID0gKHVzaG9ydCkgcmVhZHcoaG9zdGlkX3JlZyk7CisJREJHX01TRygiIGNhcmRfaG9zdGlkWyV4XVxuIiwgY2FyZF9ob3N0aWQpOworCisJLyogSW5pdGlhbGl6ZSBhIG5ldyBjYXJkIHN0cnVjdHVyZSBpZiBuZWVkIGJlICovCisJaWYgKGNhcmRfaG9zdGlkID09IFNMSUNfSE9TVElEX0RFRkFVTFQpIHsKKwkJY2FyZCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbGljY2FyZCksIEdGUF9LRVJORUwpOworCQlpZiAoY2FyZCA9PSBOVUxMKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJY2FyZC0+bmV4dCA9IHNsaWNfZ2xvYmFsLnNsaWNfY2FyZDsKKwkJc2xpY19nbG9iYWwuc2xpY19jYXJkID0gY2FyZDsKKyNpZiBEQkcKKwkJaWYgKGFkYXB0ZXItPmRldmlkID09IFNMSUNfMkdCX0RFVklDRV9JRCkgeworCQkJREJHX01TRworCQkJICAgICgiU0xJQ09TUyA9PT4gSW5pdGlhbGl6ZSAyIFBvcnQgR2lnYWJpdCBTZXJ2ZXIgXAorCQkJICAgICBhbmQgU3RvcmFnZSBBY2NlbGVyYXRvclxuIik7CisJCX0gZWxzZSB7CisJCQlEQkdfTVNHCisJCQkgICAgKCJTTElDT1NTID09PiBJbml0aWFsaXplIDEgUG9ydCBHaWdhYml0IFNlcnZlciBcCisJCQkgICAgIGFuZCBTdG9yYWdlIEFjY2VsZXJhdG9yXG4iKTsKKwkJfQorI2VuZGlmCisJCWNhcmQtPmJ1c251bWJlciA9IGFkYXB0ZXItPmJ1c251bWJlcjsKKwkJY2FyZC0+c2xvdG51bWJlciA9IGFkYXB0ZXItPnNsb3RudW1iZXI7CisKKwkJLyogRmluZCBhbiBhdmFpbGFibGUgY2FyZG51bSAqLworCQlmb3IgKGkgPSAwOyBpIDwgU0xJQ19NQVhfQ0FSRFM7IGkrKykgeworCQkJaWYgKHNsaWNfZ2xvYmFsLmNhcmRudW1pbnVzZVtpXSA9PSAwKSB7CisJCQkJc2xpY19nbG9iYWwuY2FyZG51bWludXNlW2ldID0gMTsKKwkJCQljYXJkLT5jYXJkbnVtID0gaTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlzbGljX2dsb2JhbC5udW1fc2xpY19jYXJkcysrOworCQlEQkdfTVNHKCJcbkNBUkROVU0gPT0gJWQgIFRvdGFsICVkICBDYXJkWyVwXVxuXG4iLAorCQkJY2FyZC0+Y2FyZG51bSwgc2xpY19nbG9iYWwubnVtX3NsaWNfY2FyZHMsIGNhcmQpOworCisJCXNsaWNfZGVidWdfY2FyZF9jcmVhdGUoY2FyZCk7CisJfSBlbHNlIHsKKwkJREJHX01TRworCQkgICAgKCJzbGljb3NzOiAlcyBDQVJEIGFscmVhZHkgYWxsb2NhdGVkLCBmaW5kIHRoZSBcCisJCSAgICAgY29ycmVjdCBjYXJkXG4iLCBfX2Z1bmNfXyk7CisJCS8qIENhcmQgZXhpc3RzLCBmaW5kIHRoZSBjYXJkIHRoaXMgYWRhcHRlciBiZWxvbmdzIHRvICovCisJCXdoaWxlIChjYXJkKSB7CisJCQlEQkdfTVNHCisJCQkgICAgKCJzbGljb3NzOiAlcyBjYXJkWyVwXSBzbG90WyV4XSBidXNbJXhdIFwKKwkJCSAgICAgIGFkYXB0cG9ydFslcF0gaG9zdGlkWyV4XSBjYXJkbnVtWyV4XVxuIiwKKwkJCSAgICAgX19mdW5jX18sIGNhcmQsIGNhcmQtPnNsb3RudW1iZXIsCisJCQkgICAgIGNhcmQtPmJ1c251bWJlciwgY2FyZC0+YWRhcHRlclthZGFwdGVyLT5wb3J0XSwKKwkJCSAgICAgY2FyZF9ob3N0aWQsIGNhcmQtPmNhcmRudW0pOworCisJCQlpZiAoY2FyZC0+Y2FyZG51bSA9PSBjYXJkX2hvc3RpZCkKKwkJCQlicmVhazsKKwkJCWNhcmQgPSBjYXJkLT5uZXh0OworCQl9CisJfQorCisJQVNTRVJUKGNhcmQpOworCWlmICghY2FyZCkKKwkJcmV0dXJuIFNUQVRVU19GQUlMVVJFOworCS8qIFB1dCB0aGUgYWRhcHRlciBpbiB0aGUgY2FyZCdzIGFkYXB0ZXIgbGlzdCAqLworCUFTU0VSVChjYXJkLT5hZGFwdGVyW2FkYXB0ZXItPnBvcnRdID09IE5VTEwpOworCWlmICghY2FyZC0+YWRhcHRlclthZGFwdGVyLT5wb3J0XSkgeworCQljYXJkLT5hZGFwdGVyW2FkYXB0ZXItPnBvcnRdID0gYWRhcHRlcjsKKwkJYWRhcHRlci0+Y2FyZCA9IGNhcmQ7CisJfQorCisJY2FyZC0+Y2FyZF9zaXplID0gMTsJLyogb25lIHBvcnQgcGVyICpsb2dpY2FsKiBjYXJkICovCisKKwl3aGlsZSAocGh5c2NhcmQpIHsKKwkJZm9yIChpID0gMDsgaSA8IFNMSUNfTUFYX1BPUlRTOyBpKyspIHsKKwkJCWlmICghcGh5c2NhcmQtPmFkYXB0ZXJbaV0pCisJCQkJY29udGludWU7CisJCQllbHNlCisJCQkJYnJlYWs7CisJCX0KKwkJQVNTRVJUKGkgIT0gU0xJQ19NQVhfUE9SVFMpOworCQlpZiAocGh5c2NhcmQtPmFkYXB0ZXJbaV0tPnNsb3RudW1iZXIgPT0gYWRhcHRlci0+c2xvdG51bWJlcikKKwkJCWJyZWFrOworCQlwaHlzY2FyZCA9IHBoeXNjYXJkLT5uZXh0OworCX0KKwlpZiAoIXBoeXNjYXJkKSB7CisJCS8qIG5vIHN0cnVjdHVyZSBhbGxvY2F0ZWQgZm9yIHRoaXMgcGh5c2ljYWwgY2FyZCB5ZXQgKi8KKwkJcGh5c2NhcmQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcGh5c2NhcmQgKiksIEdGUF9BVE9NSUMpOworCQlBU1NFUlQocGh5c2NhcmQpOworCQltZW1zZXQocGh5c2NhcmQsIDAsIHNpemVvZihzdHJ1Y3QgcGh5c2NhcmQgKikpOworCisJCURCR19NU0cKKwkJICAgICgiXG4lcyBBbGxvY2F0ZSBhIFBIWVNJQ0FMY2FyZDpcbiAgICBQSFlTSUNBTF9DYXJkWyVwXVxuXAorCQkgICAgIExvZ2ljYWxDYXJkICBbJXBdXG4gICAgYWRhcHRlciAgICAgIFslcF1cbiIsCisJCSAgICAgX19mdW5jX18sIHBoeXNjYXJkLCBjYXJkLCBhZGFwdGVyKTsKKworCQlwaHlzY2FyZC0+bmV4dCA9IHNsaWNfZ2xvYmFsLnBoeXNfY2FyZDsKKwkJc2xpY19nbG9iYWwucGh5c19jYXJkID0gcGh5c2NhcmQ7CisJCXBoeXNjYXJkLT5hZGFwdGVyc19hbGxvY2QgPSAxOworCX0gZWxzZSB7CisJCXBoeXNjYXJkLT5hZGFwdGVyc19hbGxvY2QrKzsKKwl9CisJLyogTm90ZSAtIHRoaXMgaXMgWkVSTyByZWxhdGl2ZSAqLworCWFkYXB0ZXItPnBoeXNwb3J0ID0gcGh5c2NhcmQtPmFkYXB0ZXJzX2FsbG9jZCAtIDE7CisKKwlBU1NFUlQocGh5c2NhcmQtPmFkYXB0ZXJbYWRhcHRlci0+cGh5c3BvcnRdID09IE5VTEwpOworCXBoeXNjYXJkLT5hZGFwdGVyW2FkYXB0ZXItPnBoeXNwb3J0XSA9IGFkYXB0ZXI7CisJYWRhcHRlci0+cGh5c2NhcmQgPSBwaHlzY2FyZDsKKwlEQkdfTVNHKCIgICAgUEhZU0lDQUxfUG9ydCAlZCAgICBMb2dpY2FsX1BvcnQgICVkXG4iLCBhZGFwdGVyLT5waHlzcG9ydCwKKwkJYWRhcHRlci0+cG9ydCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2xpY19zb2Z0X3Jlc2V0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCWlmIChhZGFwdGVyLT5jYXJkLT5zdGF0ZSA9PSBDQVJEX1VQKSB7CisJCURCR19NU0coInNsaWNvc3M6ICVzIFFVSUVTQ0UgYWRhcHRlclslcF0gY2FyZFslcF0gZGV2aWRbJXhdXG4iLAorCQkJX19mdW5jX18sIGFkYXB0ZXIsIGFkYXB0ZXItPmNhcmQsIGFkYXB0ZXItPmRldmlkKTsKKwkJV1JJVEVfUkVHKGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY19xdWllc2NlLCAwLCBGTFVTSCk7CisJCW1kZWxheSgxKTsKKwl9CisvKiAgICAgIERCR19NU0cgKCJzbGljb3NzOiAlcyAoJXMpIGFkYXB0ZXJbJXBdIGNhcmRbJXBdIGRldmlkWyV4XVxuIiwKKwlfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyLCBhZGFwdGVyLT5jYXJkLAorCSAgIGFkYXB0ZXItPmRldmlkKTsgKi8KKworCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfcmVzZXQsIFNMSUNfUkVTRVRfTUFHSUMsIEZMVVNIKTsKKwltZGVsYXkoMSk7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfY29uZmlnX3NldChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgYm9vbCBsaW5rY2hhbmdlKQoreworCXUzMiB2YWx1ZTsKKwl1MzIgUmNyUmVzZXQ7CisJX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICpzbGljX3JlZ3MgPSBhZGFwdGVyLT5zbGljX3JlZ3M7CisKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIHNsaWNfaW50ZXJmYWNlX2VuYWJsZVslcF0oJWQpXG4iLAorCQlfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyLAorCQlhZGFwdGVyLT5jYXJkaW5kZXgpOworCisJaWYgKGxpbmtjaGFuZ2UpIHsKKwkJLyogU2V0dXAgTUFDICovCisJCXNsaWNfbWFjX2NvbmZpZyhhZGFwdGVyKTsKKwkJUmNyUmVzZXQgPSBHUkNSX1JFU0VUOworCX0gZWxzZSB7CisJCXNsaWNfbWFjX2FkZHJlc3NfY29uZmlnKGFkYXB0ZXIpOworCQlSY3JSZXNldCA9IDA7CisJfQorCisJaWYgKGFkYXB0ZXItPmxpbmtkdXBsZXggPT0gTElOS19GVUxMRCkgeworCQkvKiBzZXR1cCB4bXRjZmcgKi8KKwkJdmFsdWUgPSAoR1hDUl9SRVNFVCB8CS8qIEFsd2F5cyByZXNldCAgICAgKi8KKwkJCSBHWENSX1hNVEVOIHwJLyogRW5hYmxlIHRyYW5zbWl0ICAqLworCQkJIEdYQ1JfUEFVU0VFTik7CS8qIEVuYWJsZSBwYXVzZSAgICAgKi8KKworCQlEQkdfTVNHKCJzbGljb3NzOiBGRFggYWRhcHRbJXBdIHNldCB4bXRjZmcgdG8gWyV4XVxuIiwgYWRhcHRlciwKKwkJCXZhbHVlKTsKKwkJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193eGNmZywgdmFsdWUsIEZMVVNIKTsKKworCQkvKiBTZXR1cCByY3ZjZmcgbGFzdCAqLworCQl2YWx1ZSA9IChSY3JSZXNldCB8CS8qIFJlc2V0LCBpZiBsaW5rY2hhbmdlICovCisJCQkgR1JDUl9DVExFTiB8CS8qIEVuYWJsZSBDVEwgZnJhbWVzICAgICovCisJCQkgR1JDUl9BRERSQUVOIHwJLyogQWRkcmVzcyBBIGVuYWJsZSAgICAgKi8KKwkJCSBHUkNSX1JDVkJBRCB8CS8qIFJjdiBiYWQgZnJhbWVzICAgICAgICovCisJCQkgKEdSQ1JfSEFTSFNJWkUgPDwgR1JDUl9IQVNIU0laRV9TSElGVCkpOworCX0gZWxzZSB7CisJCS8qIHNldHVwIHhtdGNmZyAqLworCQl2YWx1ZSA9IChHWENSX1JFU0VUIHwJLyogQWx3YXlzIHJlc2V0ICAgICAqLworCQkJIEdYQ1JfWE1URU4pOwkvKiBFbmFibGUgdHJhbnNtaXQgICovCisKKwkJREJHX01TRygic2xpY29zczogSERYIGFkYXB0WyVwXSBzZXQgeG10Y2ZnIHRvIFsleF1cbiIsIGFkYXB0ZXIsCisJCQl2YWx1ZSk7CisJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd3hjZmcsIHZhbHVlLCBGTFVTSCk7CisKKwkJLyogU2V0dXAgcmN2Y2ZnIGxhc3QgKi8KKwkJdmFsdWUgPSAoUmNyUmVzZXQgfAkvKiBSZXNldCwgaWYgbGlua2NoYW5nZSAqLworCQkJIEdSQ1JfQUREUkFFTiB8CS8qIEFkZHJlc3MgQSBlbmFibGUgICAgICovCisJCQkgR1JDUl9SQ1ZCQUQgfAkvKiBSY3YgYmFkIGZyYW1lcyAgICAgICAqLworCQkJIChHUkNSX0hBU0hTSVpFIDw8IEdSQ1JfSEFTSFNJWkVfU0hJRlQpKTsKKwl9CisKKwlpZiAoYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfRE9XTikgeworCQkvKiBPbmx5IGVuYWJsZSByZWNlaXZlIGlmIHdlIGFyZSByZXN0YXJ0aW5nIG9yIHJ1bm5pbmcgKi8KKwkJdmFsdWUgfD0gR1JDUl9SQ1ZFTjsKKwl9CisKKwlpZiAoYWRhcHRlci0+bWFjb3B0cyAmIE1BQ19QUk9NSVNDKQorCQl2YWx1ZSB8PSBHUkNSX1JDVkFMTDsKKworCURCR19NU0coInNsaWNvc3M6IGFkYXB0WyVwXSBzZXQgcmN2Y2ZnIHRvIFsleF1cbiIsIGFkYXB0ZXIsIHZhbHVlKTsKKwlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3dyY2ZnLCB2YWx1ZSwgRkxVU0gpOworfQorCisvKgorICogIFR1cm4gb2ZmIFJDViBhbmQgWE1ULCBwb3dlciBkb3duIFBIWQorICovCitzdGF0aWMgdm9pZCBzbGljX2NvbmZpZ19jbGVhcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1MzIgdmFsdWU7CisJdTMyIHBoeV9jb25maWc7CisJX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICpzbGljX3JlZ3MgPSBhZGFwdGVyLT5zbGljX3JlZ3M7CisKKwkvKiBTZXR1cCB4bXRjZmcgKi8KKwl2YWx1ZSA9IChHWENSX1JFU0VUIHwJLyogQWx3YXlzIHJlc2V0ICovCisJCSBHWENSX1BBVVNFRU4pOwkvKiBFbmFibGUgcGF1c2UgKi8KKworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd3hjZmcsIHZhbHVlLCBGTFVTSCk7CisKKwl2YWx1ZSA9IChHUkNSX1JFU0VUIHwJLyogQWx3YXlzIHJlc2V0ICAgICAgKi8KKwkJIEdSQ1JfQ1RMRU4gfAkvKiBFbmFibGUgQ1RMIGZyYW1lcyAqLworCQkgR1JDUl9BRERSQUVOIHwJLyogQWRkcmVzcyBBIGVuYWJsZSAgKi8KKwkJIChHUkNSX0hBU0hTSVpFIDw8IEdSQ1JfSEFTSFNJWkVfU0hJRlQpKTsKKworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd3JjZmcsIHZhbHVlLCBGTFVTSCk7CisKKwkvKiBwb3dlciBkb3duIHBoeSAqLworCXBoeV9jb25maWcgPSAoTUlJQ1JfUkVHX1BDUiB8IChQQ1JfUE9XRVJET1dOKSk7CisJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193cGh5LCBwaHlfY29uZmlnLCBGTFVTSCk7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfY29uZmlnX2dldChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIGNvbmZpZywKKwkJCQkJCQl1MzIgY29uZmlnX2gpCit7CisJaW50IHN0YXR1czsKKworCXN0YXR1cyA9IHNsaWNfdXByX3JlcXVlc3QoYWRhcHRlciwKKwkJCQkgIFNMSUNfVVBSX1JDT05GSUcsCisJCQkJICAodTMyKSBjb25maWcsICh1MzIpIGNvbmZpZ19oLCAwLCAwKTsKKwlBU1NFUlQoc3RhdHVzID09IDApOworfQorCitzdGF0aWMgdm9pZCBzbGljX21hY19hZGRyZXNzX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1MzIgdmFsdWU7CisJdTMyIHZhbHVlMjsKKwlfX2lvbWVtIHN0cnVjdCBzbGljX3JlZ3MgKnNsaWNfcmVncyA9IGFkYXB0ZXItPnNsaWNfcmVnczsKKworCXZhbHVlID0gKih1MzIgKikgJmFkYXB0ZXItPmN1cnJtYWNhZGRyWzJdOworCXZhbHVlID0gbnRvaGwodmFsdWUpOworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd3JhZGRyYWwsIHZhbHVlLCBGTFVTSCk7CisJV1JJVEVfUkVHKHNsaWNfcmVncy0+c2xpY193cmFkZHJibCwgdmFsdWUsIEZMVVNIKTsKKworCXZhbHVlMiA9ICh1MzIpICgoYWRhcHRlci0+Y3Vycm1hY2FkZHJbMF0gPDwgOCB8CisJCQkgICAgIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzFdKSAmIDB4RkZGRik7CisKKwlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3dyYWRkcmFoLCB2YWx1ZTIsIEZMVVNIKTsKKwlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3dyYWRkcmJoLCB2YWx1ZTIsIEZMVVNIKTsKKworCURCR19NU0coIiVzIHZhbHVlMVsleF0gdmFsdWUyWyV4XSBDYWxsIHNsaWNfbWNhc3Rfc2V0X21hc2tcbiIsCisJCV9fZnVuY19fLCB2YWx1ZSwgdmFsdWUyKTsKKwlzbGljX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsKKworCS8qIFdyaXRlIG91ciBtdWx0aWNhc3QgbWFzayBvdXQgdG8gdGhlIGNhcmQuICBUaGlzIGlzIGRvbmUgKi8KKwkvKiBoZXJlIGluIGFkZGl0aW9uIHRvIHRoZSBzbGljX21jYXN0X2FkZHJfc2V0IHJvdXRpbmUgICAgICovCisJLyogYmVjYXVzZSBBTExfTUNBU1QgbWF5IGhhdmUgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkICAgICAqLworCXNsaWNfbWNhc3Rfc2V0X21hc2soYWRhcHRlcik7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfbWFjX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwl1MzIgdmFsdWU7CisJX19pb21lbSBzdHJ1Y3Qgc2xpY19yZWdzICpzbGljX3JlZ3MgPSBhZGFwdGVyLT5zbGljX3JlZ3M7CisKKwkvKiBTZXR1cCBHTUFDIGdhcHMgKi8KKwlpZiAoYWRhcHRlci0+bGlua3NwZWVkID09IExJTktfMTAwME1CKSB7CisJCXZhbHVlID0gKChHTUNSX0dBUEJCXzEwMDAgPDwgR01DUl9HQVBCQl9TSElGVCkgfAorCQkJIChHTUNSX0dBUFIxXzEwMDAgPDwgR01DUl9HQVBSMV9TSElGVCkgfAorCQkJIChHTUNSX0dBUFIyXzEwMDAgPDwgR01DUl9HQVBSMl9TSElGVCkpOworCX0gZWxzZSB7CisJCXZhbHVlID0gKChHTUNSX0dBUEJCXzEwMCA8PCBHTUNSX0dBUEJCX1NISUZUKSB8CisJCQkgKEdNQ1JfR0FQUjFfMTAwIDw8IEdNQ1JfR0FQUjFfU0hJRlQpIHwKKwkJCSAoR01DUl9HQVBSMl8xMDAgPDwgR01DUl9HQVBSMl9TSElGVCkpOworCX0KKworCS8qIGVuYWJsZSBHTUlJICovCisJaWYgKGFkYXB0ZXItPmxpbmtzcGVlZCA9PSBMSU5LXzEwMDBNQikKKwkJdmFsdWUgfD0gR01DUl9HQklUOworCisJLyogZW5hYmxlIGZ1bGxkdXBsZXggKi8KKwlpZiAoKGFkYXB0ZXItPmxpbmtkdXBsZXggPT0gTElOS19GVUxMRCkKKwkgICAgfHwgKGFkYXB0ZXItPm1hY29wdHMgJiBNQUNfTE9PUEJBQ0spKSB7CisJCXZhbHVlIHw9IEdNQ1JfRlVMTEQ7CisJfQorCisJLyogd3JpdGUgbWFjIGNvbmZpZyAqLworCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfd21jZmcsIHZhbHVlLCBGTFVTSCk7CisKKwkvKiBzZXR1cCBtYWMgYWRkcmVzc2VzICovCisJc2xpY19tYWNfYWRkcmVzc19jb25maWcoYWRhcHRlcik7Cit9CisKK3N0YXRpYyBib29sIHNsaWNfbWFjX2ZpbHRlcihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCXN0cnVjdCBldGhlcl9oZWFkZXIgKmV0aGVyX2ZyYW1lKQoreworCXUzMiBvcHRzID0gYWRhcHRlci0+bWFjb3B0czsKKwl1MzIgKmRob3N0NCA9ICh1MzIgKikmZXRoZXJfZnJhbWUtPmV0aGVyX2Rob3N0WzBdOworCXUxNiAqZGhvc3QyID0gKHUxNiAqKSZldGhlcl9mcmFtZS0+ZXRoZXJfZGhvc3RbNF07CisJYm9vbCBlcXVhbGFkZHI7CisKKwlpZiAob3B0cyAmIE1BQ19QUk9NSVNDKSB7CisJCURCR19NU0coInNsaWNvc3M6ICVzICglcykgUFJPTUlTQ1VPVVMuIEFjY2VwdCBmcmFtZVxuIiwKKwkJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCQlyZXR1cm4gVFJVRTsKKwl9CisKKwlpZiAoKCpkaG9zdDQgPT0gMHhGRkZGRkZGRikgJiYgKCpkaG9zdDIgPT0gMHhGRkZGKSkgeworCQlpZiAob3B0cyAmIE1BQ19CQ0FTVCkgeworCQkJYWRhcHRlci0+cmN2X2Jyb2FkY2FzdHMrKzsKKwkJCXJldHVybiBUUlVFOworCQl9IGVsc2UgeworCQkJcmV0dXJuIEZBTFNFOworCQl9CisJfQorCisJaWYgKGV0aGVyX2ZyYW1lLT5ldGhlcl9kaG9zdFswXSAmIDB4MDEpIHsKKwkJaWYgKG9wdHMgJiBNQUNfQUxMTUNBU1QpIHsKKwkJCWFkYXB0ZXItPnJjdl9tdWx0aWNhc3RzKys7CisJCQlhZGFwdGVyLT5zdGF0cy5tdWx0aWNhc3QrKzsKKwkJCXJldHVybiBUUlVFOworCQl9CisJCWlmIChvcHRzICYgTUFDX01DQVNUKSB7CisJCQlzdHJ1Y3QgbWNhc3RfYWRkcmVzcyAqbWNhZGRyID0gYWRhcHRlci0+bWNhc3RhZGRyczsKKworCQkJd2hpbGUgKG1jYWRkcikgeworCQkJCUVUSEVSX0VRX0FERFIobWNhZGRyLT5hZGRyZXNzLAorCQkJCQkgICAgICBldGhlcl9mcmFtZS0+ZXRoZXJfZGhvc3QsCisJCQkJCSAgICAgIGVxdWFsYWRkcik7CisJCQkJaWYgKGVxdWFsYWRkcikgeworCQkJCQlhZGFwdGVyLT5yY3ZfbXVsdGljYXN0cysrOworCQkJCQlhZGFwdGVyLT5zdGF0cy5tdWx0aWNhc3QrKzsKKwkJCQkJcmV0dXJuIFRSVUU7CisJCQkJfQorCQkJCW1jYWRkciA9IG1jYWRkci0+bmV4dDsKKwkJCX0KKwkJCXJldHVybiBGQUxTRTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiBGQUxTRTsKKwkJfQorCX0KKwlpZiAob3B0cyAmIE1BQ19ESVJFQ1RFRCkgeworCQlhZGFwdGVyLT5yY3ZfdW5pY2FzdHMrKzsKKwkJcmV0dXJuIFRSVUU7CisJfQorCXJldHVybiBGQUxTRTsKKworfQorCitzdGF0aWMgaW50IHNsaWNfbWFjX3NldF9hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnB0cikKK3sKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKW5ldGRldl9wcml2KGRldik7CisJc3RydWN0IHNvY2thZGRyICphZGRyID0gcHRyOworCisJREJHX01TRygiJXMgRU5URVIgKCVzKVxuIiwgX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSk7CisKKwlpZiAobmV0aWZfcnVubmluZyhkZXYpKQorCQlyZXR1cm4gLUVCVVNZOworCWlmICghYWRhcHRlcikKKwkJcmV0dXJuIC1FQlVTWTsKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIGN1cnIgJTIuMlg6JTIuMlg6JTIuMlg6JTIuMlg6JTIuMlg6JTIuMlhcbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzBdLAorCQlhZGFwdGVyLT5jdXJybWFjYWRkclsxXSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMl0sCisJCWFkYXB0ZXItPmN1cnJtYWNhZGRyWzNdLCBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSwKKwkJYWRhcHRlci0+Y3Vycm1hY2FkZHJbNV0pOworCW1lbWNweShkZXYtPmRldl9hZGRyLCBhZGRyLT5zYV9kYXRhLCBkZXYtPmFkZHJfbGVuKTsKKwltZW1jcHkoYWRhcHRlci0+Y3Vycm1hY2FkZHIsIGFkZHItPnNhX2RhdGEsIGRldi0+YWRkcl9sZW4pOworCURCR19NU0coInNsaWNvc3M6ICVzICglcykgbmV3ICUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYXG4iLAorCQlfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyLT5jdXJybWFjYWRkclswXSwKKwkJYWRhcHRlci0+Y3Vycm1hY2FkZHJbMV0sIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzJdLAorCQlhZGFwdGVyLT5jdXJybWFjYWRkclszXSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbNF0sCisJCWFkYXB0ZXItPmN1cnJtYWNhZGRyWzVdKTsKKworCXNsaWNfY29uZmlnX3NldChhZGFwdGVyLCBUUlVFKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqICBzbGljX3RpbWVyX2dldF9zdGF0cworICoKKyAqIFRpbWVyIGZ1bmN0aW9uIHVzZWQgdG8gc3VjayB0aGUgc3RhdGlzdGljcyBvdXQgb2YgdGhlIGNhcmQgZXZlcnkKKyAqIDUwIHNlY29uZHMgb3Igd2hhdGV2ZXIgU1RBVFNfVElNRVJfSU5URVJWQUwgaXMgc2V0IHRvLgorICoKKyAqLworI2lmIFNMSUNfR0VUX1NUQVRTX1RJTUVSX0VOQUJMRUQKK3N0YXRpYyB2b2lkIHNsaWNfdGltZXJfZ2V0X3N0YXRzKHVsb25nIGRldikKK3sKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQ7CisJc3RydWN0IHNsaWNfc2htZW0gKnBzaG1lbTsKKworCUFTU0VSVChkZXYpOworCWFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKikoKHN0cnVjdCBuZXRfZGV2aWNlICopZGV2KS0+cHJpdjsKKwlBU1NFUlQoYWRhcHRlcik7CisJY2FyZCA9IGFkYXB0ZXItPmNhcmQ7CisJQVNTRVJUKGNhcmQpOworCisJaWYgKChjYXJkLT5zdGF0ZSA9PSBDQVJEX1VQKSAmJgorCSAgICAoYWRhcHRlci0+c3RhdGUgPT0gQURBUFRfVVApICYmIChhZGFwdGVyLT5saW5rc3RhdGUgPT0gTElOS19VUCkpIHsKKwkJcHNobWVtID0gKHN0cnVjdCBzbGljX3NobWVtICopYWRhcHRlci0+cGh5c19zaG1lbTsKKyNpZmRlZiBDT05GSUdfWDg2XzY0CisJCXNsaWNfdXByX3JlcXVlc3QoYWRhcHRlciwKKwkJCQkgU0xJQ19VUFJfU1RBVFMsCisJCQkJIFNMSUNfR0VUX0FERFJfTE9XKCZwc2htZW0tPmluaWNzdGF0cyksCisJCQkJIFNMSUNfR0VUX0FERFJfSElHSCgmcHNobWVtLT5pbmljc3RhdHMpLCAwLCAwKTsKKyNlbGlmIGRlZmluZWQoQ09ORklHX1g4NikKKwkJc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLAorCQkJCSBTTElDX1VQUl9TVEFUUywKKwkJCQkgKHUzMikgJnBzaG1lbS0+aW5pY3N0YXRzLCAwLCAwLCAwKTsKKyNlbHNlCisJCVN0b3AgY29tcGlsYXRpb247CisjZW5kaWYKKwl9IGVsc2UgeworLyoJCURCR19NU0cgKCJzbGljb3NzOiAlcyBhZGFwdGVyWyVwXSBsaW5rc3RhdGVbJXhdIE5PVCBVUCFcbiIsCisJCQlfX2Z1bmNfXywgYWRhcHRlciwgYWRhcHRlci0+bGlua3N0YXRlKTsgKi8KKwl9CisJYWRhcHRlci0+c3RhdHN0aW1lci5leHBpcmVzID0gamlmZmllcyArCisJICAgIFNMSUNfU0VDU19UT19KSUZGUyhTVEFUU19USU1FUl9JTlRFUlZBTCk7CisJYWRkX3RpbWVyKCZhZGFwdGVyLT5zdGF0c3RpbWVyKTsKK30KKyNlbmRpZgorc3RhdGljIHZvaWQgc2xpY190aW1lcl9sb2FkX2NoZWNrKHVsb25nIGNhcmRhZGRyKQoreworCXN0cnVjdCBzbGljY2FyZCAqY2FyZCA9IChzdHJ1Y3Qgc2xpY2NhcmQgKiljYXJkYWRkcjsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IGNhcmQtPm1hc3RlcjsKKwl1MzIgbG9hZCA9IGNhcmQtPmV2ZW50czsKKwl1MzIgbGV2ZWwgPSAwOworCisJaWYgKChhZGFwdGVyKSAmJiAoYWRhcHRlci0+c3RhdGUgPT0gQURBUFRfVVApICYmCisJICAgIChjYXJkLT5zdGF0ZSA9PSBDQVJEX1VQKSAmJiAoc2xpY19nbG9iYWwuZHluYW1pY19pbnRhZ2cpKSB7CisJCWlmIChhZGFwdGVyLT5kZXZpZCA9PSBTTElDXzFHQl9ERVZJQ0VfSUQpIHsKKwkJCWlmIChhZGFwdGVyLT5saW5rc3BlZWQgPT0gTElOS18xMDAwTUIpCisJCQkJbGV2ZWwgPSAxMDA7CisJCQllbHNlIHsKKwkJCQlpZiAobG9hZCA+IFNMSUNfTE9BRF81KQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzU7CisJCQkJZWxzZSBpZiAobG9hZCA+IFNMSUNfTE9BRF80KQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzQ7CisJCQkJZWxzZSBpZiAobG9hZCA+IFNMSUNfTE9BRF8zKQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzM7CisJCQkJZWxzZSBpZiAobG9hZCA+IFNMSUNfTE9BRF8yKQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzI7CisJCQkJZWxzZSBpZiAobG9hZCA+IFNMSUNfTE9BRF8xKQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzE7CisJCQkJZWxzZQorCQkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzA7CisJCQl9CisJCQlpZiAoY2FyZC0+bG9hZGxldmVsX2N1cnJlbnQgIT0gbGV2ZWwpIHsKKwkJCQljYXJkLT5sb2FkbGV2ZWxfY3VycmVudCA9IGxldmVsOworCQkJCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfaW50YWdnLAorCQkJCQkgIGxldmVsLCBGTFVTSCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAobG9hZCA+IFNMSUNfTE9BRF81KQorCQkJCWxldmVsID0gU0xJQ19JTlRBR0dfNTsKKwkJCWVsc2UgaWYgKGxvYWQgPiBTTElDX0xPQURfNCkKKwkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzQ7CisJCQllbHNlIGlmIChsb2FkID4gU0xJQ19MT0FEXzMpCisJCQkJbGV2ZWwgPSBTTElDX0lOVEFHR18zOworCQkJZWxzZSBpZiAobG9hZCA+IFNMSUNfTE9BRF8yKQorCQkJCWxldmVsID0gU0xJQ19JTlRBR0dfMjsKKwkJCWVsc2UgaWYgKGxvYWQgPiBTTElDX0xPQURfMSkKKwkJCQlsZXZlbCA9IFNMSUNfSU5UQUdHXzE7CisJCQllbHNlCisJCQkJbGV2ZWwgPSBTTElDX0lOVEFHR18wOworCQkJaWYgKGNhcmQtPmxvYWRsZXZlbF9jdXJyZW50ICE9IGxldmVsKSB7CisJCQkJY2FyZC0+bG9hZGxldmVsX2N1cnJlbnQgPSBsZXZlbDsKKwkJCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2ludGFnZywKKwkJCQkJICBsZXZlbCwgRkxVU0gpOworCQkJfQorCQl9CisJfQorCWNhcmQtPmV2ZW50cyA9IDA7CisJY2FyZC0+bG9hZHRpbWVyLmV4cGlyZXMgPQorCSAgICBqaWZmaWVzICsgU0xJQ19TRUNTX1RPX0pJRkZTKFNMSUNfTE9BRFRJTUVSX1BFUklPRCk7CisJYWRkX3RpbWVyKCZjYXJkLT5sb2FkdGltZXIpOworfQorCitzdGF0aWMgdm9pZCBzbGljX2Fzc2VydF9mYWlsKHZvaWQpCit7CisJdTMyIGNwdWlkOworCXUzMiBjdXJyX3BpZDsKKwljcHVpZCA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwljdXJyX3BpZCA9IGN1cnJlbnQtPnBpZDsKKworCURCR19FUlJPUigiJXMgQ1BVICMgJWQgLS0tLSBQSUQgIyAlZFxuIiwgX19mdW5jX18sIGNwdWlkLCBjdXJyX3BpZCk7Cit9CisKK3N0YXRpYyBpbnQgc2xpY191cHJfcXVldWVfcmVxdWVzdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwKKwkJCSAgIHUzMiB1cHJfcmVxdWVzdCwKKwkJCSAgIHUzMiB1cHJfZGF0YSwKKwkJCSAgIHUzMiB1cHJfZGF0YV9oLAorCQkJICAgdTMyIHVwcl9idWZmZXIsIHUzMiB1cHJfYnVmZmVyX2gpCit7CisJc3RydWN0IHNsaWNfdXByICp1cHI7CisJc3RydWN0IHNsaWNfdXByICp1cHJxdWV1ZTsKKworCXVwciA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbGljX3VwciksIEdGUF9BVE9NSUMpOworCWlmICghdXByKSB7CisJCURCR19NU0coIiVzIENPVUxEIE5PVCBBTExPQ0FURSBVUFIgTUVNXG4iLCBfX2Z1bmNfXyk7CisKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCXVwci0+YWRhcHRlciA9IGFkYXB0ZXItPnBvcnQ7CisJdXByLT51cHJfcmVxdWVzdCA9IHVwcl9yZXF1ZXN0OworCXVwci0+dXByX2RhdGEgPSB1cHJfZGF0YTsKKwl1cHItPnVwcl9idWZmZXIgPSB1cHJfYnVmZmVyOworCXVwci0+dXByX2RhdGFfaCA9IHVwcl9kYXRhX2g7CisJdXByLT51cHJfYnVmZmVyX2ggPSB1cHJfYnVmZmVyX2g7CisJdXByLT5uZXh0ID0gTlVMTDsKKwlpZiAoYWRhcHRlci0+dXByX2xpc3QpIHsKKwkJdXBycXVldWUgPSBhZGFwdGVyLT51cHJfbGlzdDsKKworCQl3aGlsZSAodXBycXVldWUtPm5leHQpCisJCQl1cHJxdWV1ZSA9IHVwcnF1ZXVlLT5uZXh0OworCQl1cHJxdWV1ZS0+bmV4dCA9IHVwcjsKKwl9IGVsc2UgeworCQlhZGFwdGVyLT51cHJfbGlzdCA9IHVwcjsKKwl9CisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgaW50IHNsaWNfdXByX3JlcXVlc3Qoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsCisJCSAgICAgdTMyIHVwcl9yZXF1ZXN0LAorCQkgICAgIHUzMiB1cHJfZGF0YSwKKwkJICAgICB1MzIgdXByX2RhdGFfaCwKKwkJICAgICB1MzIgdXByX2J1ZmZlciwgdTMyIHVwcl9idWZmZXJfaCkKK3sKKwlpbnQgc3RhdHVzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFkYXB0ZXItPnVwcl9sb2NrLmxvY2ssIGFkYXB0ZXItPnVwcl9sb2NrLmZsYWdzKTsKKwlzdGF0dXMgPSBzbGljX3Vwcl9xdWV1ZV9yZXF1ZXN0KGFkYXB0ZXIsCisJCQkJCXVwcl9yZXF1ZXN0LAorCQkJCQl1cHJfZGF0YSwKKwkJCQkJdXByX2RhdGFfaCwgdXByX2J1ZmZlciwgdXByX2J1ZmZlcl9oKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPnVwcl9sb2NrLmxvY2ssCisJCQkJCWFkYXB0ZXItPnVwcl9sb2NrLmZsYWdzKTsKKwkJcmV0dXJuIHN0YXR1czsKKwl9CisJc2xpY191cHJfc3RhcnQoYWRhcHRlcik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRhcHRlci0+dXByX2xvY2subG9jaywKKwkJCQlhZGFwdGVyLT51cHJfbG9jay5mbGFncyk7CisJcmV0dXJuIFNUQVRVU19QRU5ESU5HOworfQorCitzdGF0aWMgdm9pZCBzbGljX3Vwcl9yZXF1ZXN0X2NvbXBsZXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1MzIgaXNyKQoreworCXN0cnVjdCBzbGljY2FyZCAqY2FyZCA9IGFkYXB0ZXItPmNhcmQ7CisJc3RydWN0IHNsaWNfdXByICp1cHI7CisKKy8qICAgIGlmIChjYXJkLT5kdW1wX3JlcXVlc3RlZCkgeworCURCR19NU0coIkVOVEVSIHNsaWNfdXByX3JlcXVlc3RfY29tcGxldGUgRHVtcCBpbiBwcm9ncmVzcyBJU1JbJXhdXG4iLAorCQlpc3IpOworICAgICAgfSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZhZGFwdGVyLT51cHJfbG9jay5sb2NrLCBhZGFwdGVyLT51cHJfbG9jay5mbGFncyk7CisJdXByID0gYWRhcHRlci0+dXByX2xpc3Q7CisJaWYgKCF1cHIpIHsKKwkJQVNTRVJUKDApOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGFwdGVyLT51cHJfbG9jay5sb2NrLAorCQkJCQlhZGFwdGVyLT51cHJfbG9jay5mbGFncyk7CisJCXJldHVybjsKKwl9CisJYWRhcHRlci0+dXByX2xpc3QgPSB1cHItPm5leHQ7CisJdXByLT5uZXh0ID0gTlVMTDsKKwlhZGFwdGVyLT51cHJfYnVzeSA9IDA7CisJQVNTRVJUKGFkYXB0ZXItPnBvcnQgPT0gdXByLT5hZGFwdGVyKTsKKwlzd2l0Y2ggKHVwci0+dXByX3JlcXVlc3QpIHsKKwljYXNlIFNMSUNfVVBSX1NUQVRTOgorCQl7CisjaWYgU0xJQ19HRVRfU1RBVFNfRU5BQkxFRAorCQkJc3RydWN0IHNsaWNfc3RhdHMgKnNsaWNzdGF0cyA9CisJCQkgICAgKHN0cnVjdCBzbGljX3N0YXRzICopICZhZGFwdGVyLT5wc2htZW0tPmluaWNzdGF0czsKKwkJCXN0cnVjdCBzbGljX3N0YXRzICpuZXdzdGF0cyA9IHNsaWNzdGF0czsKKwkJCXN0cnVjdCBzbGljX3N0YXRzICAqb2xkID0gJmFkYXB0ZXItPmluaWNzdGF0c19wcmV2OworCQkJc3RydWN0IHNsaWNuZXRfc3RhdHMgKnN0c3QgPSAmYWRhcHRlci0+c2xpY19zdGF0czsKKyNlbmRpZgorCQkJaWYgKGlzciAmIElTUl9VUENFUlIpIHsKKwkJCQlEQkdfRVJST1IKKwkJCQkgICAgKCJTTElDX1VQUl9TVEFUUyBjb21tYW5kIGZhaWxlZCBpc3JbJXhdXG4iLAorCQkJCSAgICAgaXNyKTsKKworCQkJCWJyZWFrOworCQkJfQorI2lmIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQKKy8qCQkJREJHX01TRyAoInNsaWNvc3M6ICVzIHJjdiAlbHg6JWx4OiVseDolbHg6JWx4ICVseCAlbHggIgorCQkJCSJ4bXQgJWx4OiVseDolbHg6JWx4OiVseCAlbHggJWx4XG4iLAorCQkJCSBfX2Z1bmNfXywKKwkJCSAgICAgc2xpY3N0YXRzLT5yY3ZfdW5pY2FzdHMxMDAsCisJCQkgICAgIHNsaWNzdGF0cy0+cmN2X2J5dGVzMTAwLAorCQkJICAgICBzbGljc3RhdHMtPnJjdl9ieXRlczEwMCwKKwkJCSAgICAgc2xpY3N0YXRzLT5yY3ZfdGNwX2J5dGVzMTAwLAorCQkJICAgICBzbGljc3RhdHMtPnJjdl90Y3Bfc2VnczEwMCwKKwkJCSAgICAgc2xpY3N0YXRzLT5yY3Zfb3RoZXJfZXJyb3IxMDAsCisJCQkgICAgIHNsaWNzdGF0cy0+cmN2X2Ryb3BzMTAwLAorCQkJICAgICBzbGljc3RhdHMtPnhtaXRfdW5pY2FzdHMxMDAsCisJCQkgICAgIHNsaWNzdGF0cy0+eG1pdF9ieXRlczEwMCwKKwkJCSAgICAgc2xpY3N0YXRzLT54bWl0X2J5dGVzMTAwLAorCQkJICAgICBzbGljc3RhdHMtPnhtaXRfdGNwX2J5dGVzMTAwLAorCQkJICAgICBzbGljc3RhdHMtPnhtaXRfdGNwX3NlZ3MxMDAsCisJCQkgICAgIHNsaWNzdGF0cy0+eG1pdF9vdGhlcl9lcnJvcjEwMCwKKwkJCSAgICAgc2xpY3N0YXRzLT54bWl0X2NvbGxpc2lvbnMxMDApOyovCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+dGNwLnhtaXRfdGNwX3NlZ3MsCisJCQkJCW5ld3N0YXRzLT54bWl0X3RjcF9zZWdzX2diLAorCQkJCQlvbGQtPnhtaXRfdGNwX3NlZ3NfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+dGNwLnhtaXRfdGNwX2J5dGVzLAorCQkJCQluZXdzdGF0cy0+eG1pdF90Y3BfYnl0ZXNfZ2IsCisJCQkJCW9sZC0+eG1pdF90Y3BfYnl0ZXNfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+dGNwLnJjdl90Y3Bfc2VncywKKwkJCQkJbmV3c3RhdHMtPnJjdl90Y3Bfc2Vnc19nYiwKKwkJCQkJb2xkLT5yY3ZfdGNwX3NlZ3NfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+dGNwLnJjdl90Y3BfYnl0ZXMsCisJCQkJCW5ld3N0YXRzLT5yY3ZfdGNwX2J5dGVzX2diLAorCQkJCQlvbGQtPnJjdl90Y3BfYnl0ZXNfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+aWZhY2UueG10X2J5dGVzLAorCQkJCQluZXdzdGF0cy0+eG1pdF9ieXRlc19nYiwKKwkJCQkJb2xkLT54bWl0X2J5dGVzX2diKTsKKworCQkJVVBEQVRFX1NUQVRTX0dCKHN0c3QtPmlmYWNlLnhtdF91Y2FzdCwKKwkJCQkJbmV3c3RhdHMtPnhtaXRfdW5pY2FzdHNfZ2IsCisJCQkJCW9sZC0+eG1pdF91bmljYXN0c19nYik7CisKKwkJCVVQREFURV9TVEFUU19HQihzdHN0LT5pZmFjZS5yY3ZfYnl0ZXMsCisJCQkJCW5ld3N0YXRzLT5yY3ZfYnl0ZXNfZ2IsCisJCQkJCW9sZC0+cmN2X2J5dGVzX2diKTsKKworCQkJVVBEQVRFX1NUQVRTX0dCKHN0c3QtPmlmYWNlLnJjdl91Y2FzdCwKKwkJCQkJbmV3c3RhdHMtPnJjdl91bmljYXN0c19nYiwKKwkJCQkJb2xkLT5yY3ZfdW5pY2FzdHNfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+aWZhY2UueG10X2Vycm9ycywKKwkJCQkJbmV3c3RhdHMtPnhtaXRfY29sbGlzaW9uc19nYiwKKwkJCQkJb2xkLT54bWl0X2NvbGxpc2lvbnNfZ2IpOworCisJCQlVUERBVEVfU1RBVFNfR0Ioc3RzdC0+aWZhY2UueG10X2Vycm9ycywKKwkJCQkJbmV3c3RhdHMtPnhtaXRfZXhjZXNzX2NvbGxpc2lvbnNfZ2IsCisJCQkJCW9sZC0+eG1pdF9leGNlc3NfY29sbGlzaW9uc19nYik7CisKKwkJCVVQREFURV9TVEFUU19HQihzdHN0LT5pZmFjZS54bXRfZXJyb3JzLAorCQkJCQluZXdzdGF0cy0+eG1pdF9vdGhlcl9lcnJvcl9nYiwKKwkJCQkJb2xkLT54bWl0X290aGVyX2Vycm9yX2diKTsKKworCQkJVVBEQVRFX1NUQVRTX0dCKHN0c3QtPmlmYWNlLnJjdl9lcnJvcnMsCisJCQkJCW5ld3N0YXRzLT5yY3Zfb3RoZXJfZXJyb3JfZ2IsCisJCQkJCW9sZC0+cmN2X290aGVyX2Vycm9yX2diKTsKKworCQkJVVBEQVRFX1NUQVRTX0dCKHN0c3QtPmlmYWNlLnJjdl9kaXNjYXJkcywKKwkJCQkJbmV3c3RhdHMtPnJjdl9kcm9wc19nYiwKKwkJCQkJb2xkLT5yY3ZfZHJvcHNfZ2IpOworCisJCQlpZiAobmV3c3RhdHMtPnJjdl9kcm9wc19nYiA+IG9sZC0+cmN2X2Ryb3BzX2diKSB7CisJCQkJYWRhcHRlci0+cmN2X2Ryb3BzICs9CisJCQkJICAgIChuZXdzdGF0cy0+cmN2X2Ryb3BzX2diIC0KKwkJCQkgICAgIG9sZC0+cmN2X2Ryb3BzX2diKTsKKwkJCX0KKwkJCW1lbWNweShvbGQsIG5ld3N0YXRzLCBzaXplb2Yoc3RydWN0IHNsaWNfc3RhdHMpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCX0KKwljYXNlIFNMSUNfVVBSX1JMU1I6CisJCXNsaWNfbGlua191cHJfY29tcGxldGUoYWRhcHRlciwgaXNyKTsKKwkJYnJlYWs7CisJY2FzZSBTTElDX1VQUl9SQ09ORklHOgorCQlicmVhazsKKwljYXNlIFNMSUNfVVBSX1JQSFk6CisJCUFTU0VSVCgwKTsKKwkJYnJlYWs7CisJY2FzZSBTTElDX1VQUl9FTkxCOgorCQlBU1NFUlQoMCk7CisJCWJyZWFrOworCWNhc2UgU0xJQ19VUFJfRU5DVDoKKwkJQVNTRVJUKDApOworCQlicmVhazsKKwljYXNlIFNMSUNfVVBSX1BEV046CisJCUFTU0VSVCgwKTsKKwkJYnJlYWs7CisJY2FzZSBTTElDX1VQUl9QSU5HOgorCQljYXJkLT5waW5nc3RhdHVzIHw9IChpc3IgJiBJU1JfUElOR0RTTUFTSyk7CisJCWJyZWFrOworI2lmIFNMSUNfRFVNUF9FTkFCTEVECisJY2FzZSBTTElDX1VQUl9EVU1QOgorCQljYXJkLT5kdW1wc3RhdHVzIHw9IChpc3IgJiBJU1JfVVBDTUFTSyk7CisJCWJyZWFrOworI2VuZGlmCisJZGVmYXVsdDoKKwkJQVNTRVJUKDApOworCX0KKwlrZnJlZSh1cHIpOworCXNsaWNfdXByX3N0YXJ0KGFkYXB0ZXIpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPnVwcl9sb2NrLmxvY2ssCisJCQkJYWRhcHRlci0+dXByX2xvY2suZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBzbGljX3Vwcl9zdGFydChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY191cHIgKnVwcjsKKwlfX2lvbWVtIHN0cnVjdCBzbGljX3JlZ3MgKnNsaWNfcmVncyA9IGFkYXB0ZXItPnNsaWNfcmVnczsKKy8qCisgICAgY2hhciAqIHB0cjE7CisgICAgY2hhciAqIHB0cjI7CisgICAgdWludCBjbWRvZmZzZXQ7CisqLworCXVwciA9IGFkYXB0ZXItPnVwcl9saXN0OworCWlmICghdXByKQorCQlyZXR1cm47CisJaWYgKGFkYXB0ZXItPnVwcl9idXN5KQorCQlyZXR1cm47CisJYWRhcHRlci0+dXByX2J1c3kgPSAxOworCisJc3dpdGNoICh1cHItPnVwcl9yZXF1ZXN0KSB7CisJY2FzZSBTTElDX1VQUl9TVEFUUzoKKwkJaWYgKHVwci0+dXByX2RhdGFfaCA9PSAwKSB7CisJCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3N0YXRzLCB1cHItPnVwcl9kYXRhLCBGTFVTSCk7CisJCX0gZWxzZSB7CisJCQlXUklURV9SRUc2NChhZGFwdGVyLAorCQkJCSAgICBzbGljX3JlZ3MtPnNsaWNfc3RhdHM2NCwKKwkJCQkgICAgdXByLT51cHJfZGF0YSwKKwkJCQkgICAgc2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsCisJCQkJICAgIHVwci0+dXByX2RhdGFfaCwgRkxVU0gpOworCQl9CisJCWJyZWFrOworCisJY2FzZSBTTElDX1VQUl9STFNSOgorCQlXUklURV9SRUc2NChhZGFwdGVyLAorCQkJICAgIHNsaWNfcmVncy0+c2xpY19ybHNyLAorCQkJICAgIHVwci0+dXByX2RhdGEsCisJCQkgICAgc2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsIHVwci0+dXByX2RhdGFfaCwgRkxVU0gpOworCQlicmVhazsKKworCWNhc2UgU0xJQ19VUFJfUkNPTkZJRzoKKwkJREJHX01TRygiJXMgU0xJQ19VUFJfUkNPTkZJRyEhISFcbiIsIF9fZnVuY19fKTsKKwkJREJHX01TRygiV1JJVEVfUkVHNjQgYWRhcHRlclslcF1cbiIKKwkJCSIgICAgYS0+c2xpY19yZWdzWyVwXSBzbGljX3JlZ3NbJXBdXG4iCisJCQkiICAgICZzbGljX3Jjb25maWdbJXBdICZzbGljX2FkZHJfdXBwZXJbJXBdXG4iCisJCQkiICAgIHVwclslcF1cbiIKKwkJCSIgICAgdXByZGF0YVsleF0gdXByZGF0YWhbJXhdXG4iLAorCQkJYWRhcHRlciwgYWRhcHRlci0+c2xpY19yZWdzLCBzbGljX3JlZ3MsCisJCQkmc2xpY19yZWdzLT5zbGljX3Jjb25maWcsICZzbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwKKwkJCXVwciwgdXByLT51cHJfZGF0YSwgdXByLT51cHJfZGF0YV9oKTsKKwkJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJCSAgICBzbGljX3JlZ3MtPnNsaWNfcmNvbmZpZywKKwkJCSAgICB1cHItPnVwcl9kYXRhLAorCQkJICAgIHNsaWNfcmVncy0+c2xpY19hZGRyX3VwcGVyLCB1cHItPnVwcl9kYXRhX2gsIEZMVVNIKTsKKwkJYnJlYWs7CisjaWYgU0xJQ19EVU1QX0VOQUJMRUQKKwljYXNlIFNMSUNfVVBSX0RVTVA6CisjaWYgMAorCQlEQkdfTVNHKCIlcyBTTElDX1VQUl9EVU1QISEhIVxuIiwgX19mdW5jX18pOworCQlEQkdfTVNHKCJXUklURV9SRUc2NCBhZGFwdGVyWyVwXVxuIgorCQkJICIgICAgdXByX2J1ZmZlclsleF0gICB1cHJfYnVmZmVyaFsleF1cbiIKKwkJCSAiICAgIHVwcl9kYXRhWyV4XSAgICAgdXByX2RhdGFoWyV4XVxuIgorCQkJICIgICAgY21kYnVmZlslcF0gY21kYnVmZlBbJXBdXG4iCisJCQkgIiAgICBkdW1wYnVmZlslcF0gZHVtcGJ1ZmZQWyVwXVxuIiwKKwkJCSBhZGFwdGVyLCB1cHItPnVwcl9idWZmZXIsIHVwci0+dXByX2J1ZmZlcl9oLAorCQkJIHVwci0+dXByX2RhdGEsIHVwci0+dXByX2RhdGFfaCwKKwkJCSBhZGFwdGVyLT5jYXJkLT5jbWRidWZmZXIsCisJCQkgKHZvaWQgKilhZGFwdGVyLT5jYXJkLT5jbWRidWZmZXJfcGh5cywKKwkJCSBhZGFwdGVyLT5jYXJkLT5kdW1wYnVmZmVyLCAoCisJCQkgdm9pZCAqKWFkYXB0ZXItPmNhcmQtPmR1bXBidWZmZXJfcGh5cyk7CisKKwkJcHRyMSA9IChjaGFyICopc2xpY19yZWdzOworCQlwdHIyID0gKGNoYXIgKikoJnNsaWNfcmVncy0+c2xpY19kdW1wX2NtZCk7CisJCWNtZG9mZnNldCA9IHB0cjIgLSBwdHIxOworCQlEQkdfTVNHKCJzbGljX2R1bXBfY21kIHJlZ2lzdGVyIG9mZnNldCBbJXhdXG4iLCBjbWRvZmZzZXQpOworI2VuZGlmCisJCWlmICh1cHItPnVwcl9idWZmZXIgfHwgdXByLT51cHJfYnVmZmVyX2gpIHsKKwkJCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCQkJICAgIHNsaWNfcmVncy0+c2xpY19kdW1wX2RhdGEsCisJCQkJICAgIHVwci0+dXByX2J1ZmZlciwKKwkJCQkgICAgc2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsCisJCQkJICAgIHVwci0+dXByX2J1ZmZlcl9oLCBGTFVTSCk7CisJCX0KKwkJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJCSAgICBzbGljX3JlZ3MtPnNsaWNfZHVtcF9jbWQsCisJCQkgICAgdXByLT51cHJfZGF0YSwKKwkJCSAgICBzbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwgdXByLT51cHJfZGF0YV9oLCBGTFVTSCk7CisJCWJyZWFrOworI2VuZGlmCisJY2FzZSBTTElDX1VQUl9QSU5HOgorCQlXUklURV9SRUcoc2xpY19yZWdzLT5zbGljX3BpbmcsIDEsIEZMVVNIKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQVNTRVJUKDApOworCX0KK30KKworc3RhdGljIHZvaWQgc2xpY19saW5rX3Vwcl9jb21wbGV0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIGlzcikKK3sKKwl1MzIgbGlua3N0YXR1cyA9IGFkYXB0ZXItPnBzaG1lbS0+bGlua3N0YXR1czsKKwl1aW50IGxpbmt1cDsKKwl1bnNpZ25lZCBjaGFyIGxpbmtzcGVlZDsKKwl1bnNpZ25lZCBjaGFyIGxpbmtkdXBsZXg7CisKKwlEQkdfTVNHKCIlczogJXMgSVNSWyV4XSBsaW5rc3RhdHVzWyV4XVxuICAgYWRhcHRlclslcF0oJWQpXG4iLAorCQlfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBpc3IsIGxpbmtzdGF0dXMsIGFkYXB0ZXIsCisJCWFkYXB0ZXItPmNhcmRpbmRleCk7CisKKwlpZiAoKGlzciAmIElTUl9VUENFUlIpIHx8IChpc3IgJiBJU1JfVVBDQlNZKSkgeworCQlzdHJ1Y3Qgc2xpY19zaG1lbSAqcHNobWVtOworCisJCXBzaG1lbSA9IChzdHJ1Y3Qgc2xpY19zaG1lbSAqKWFkYXB0ZXItPnBoeXNfc2htZW07CisjaWYgZGVmaW5lZChDT05GSUdfWDg2XzY0KQorCQlzbGljX3Vwcl9xdWV1ZV9yZXF1ZXN0KGFkYXB0ZXIsCisJCQkJICAgICAgIFNMSUNfVVBSX1JMU1IsCisJCQkJICAgICAgIFNMSUNfR0VUX0FERFJfTE9XKCZwc2htZW0tPmxpbmtzdGF0dXMpLAorCQkJCSAgICAgICBTTElDX0dFVF9BRERSX0hJR0goJnBzaG1lbS0+bGlua3N0YXR1cyksCisJCQkJICAgICAgIDAsIDApOworI2VsaWYgZGVmaW5lZChDT05GSUdfWDg2KQorCQlzbGljX3Vwcl9xdWV1ZV9yZXF1ZXN0KGFkYXB0ZXIsCisJCQkJICAgICAgIFNMSUNfVVBSX1JMU1IsCisJCQkJICAgICAgICh1MzIpICZwc2htZW0tPmxpbmtzdGF0dXMsCisJCQkJICAgICAgIFNMSUNfR0VUX0FERFJfSElHSChwc2htZW0pLCAwLCAwKTsKKyNlbHNlCisJCVN0b3AgQ29tcGlsYXRpb247CisjZW5kaWYKKwkJcmV0dXJuOworCX0KKwlpZiAoYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfVVApCisJCXJldHVybjsKKworCUFTU0VSVCgoYWRhcHRlci0+ZGV2aWQgPT0gU0xJQ18xR0JfREVWSUNFX0lEKQorCSAgICAgICB8fCAoYWRhcHRlci0+ZGV2aWQgPT0gU0xJQ18yR0JfREVWSUNFX0lEKSk7CisKKwlsaW5rdXAgPSBsaW5rc3RhdHVzICYgR0lHX0xJTktVUCA/IExJTktfVVAgOiBMSU5LX0RPV047CisJaWYgKGxpbmtzdGF0dXMgJiBHSUdfU1BFRURfMTAwMCkgeworCQlsaW5rc3BlZWQgPSBMSU5LXzEwMDBNQjsKKwkJREJHX01TRygic2xpY29zczogJXMgKCVzKSBHSUdBQklUIFNwZWVkPT0xMDAwTUIgICIsCisJCQlfX2Z1bmNfXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lKTsKKwl9IGVsc2UgaWYgKGxpbmtzdGF0dXMgJiBHSUdfU1BFRURfMTAwKSB7CisJCWxpbmtzcGVlZCA9IExJTktfMTAwTUI7CisJCURCR19NU0coInNsaWNvc3M6ICVzICglcykgR0lHQUJJVCBTcGVlZD09MTAwTUIgICIsIF9fZnVuY19fLAorCQkJYWRhcHRlci0+bmV0ZGV2LT5uYW1lKTsKKwl9IGVsc2UgeworCQlsaW5rc3BlZWQgPSBMSU5LXzEwTUI7CisJCURCR19NU0coInNsaWNvc3M6ICVzICglcykgR0lHQUJJVCBTcGVlZD09MTBNQiAgIiwgX19mdW5jX18sCisJCQlhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCX0KKwlpZiAobGlua3N0YXR1cyAmIEdJR19GVUxMRFVQTEVYKSB7CisJCWxpbmtkdXBsZXggPSBMSU5LX0ZVTExEOworCQlEQkdfTVNHKCIgRHVwbGV4ID09IEZVTExcbiIpOworCX0gZWxzZSB7CisJCWxpbmtkdXBsZXggPSBMSU5LX0hBTEZEOworCQlEQkdfTVNHKCIgRHVwbGV4ID09IEhBTEZcbiIpOworCX0KKworCWlmICgoYWRhcHRlci0+bGlua3N0YXRlID09IExJTktfRE9XTikgJiYgKGxpbmt1cCA9PSBMSU5LX0RPV04pKSB7CisJCURCR19NU0coInNsaWNvc3M6ICVzICglcykgcGh5c3BvcnQoJWQpIGxpbmsgc3RpbGwgZG93blxuIiwKKwkJCV9fZnVuY19fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPnBoeXNwb3J0KTsKKwkJcmV0dXJuOworCX0KKworCS8qIGxpbmsgdXAgZXZlbnQsIGJ1dCBub3RoaW5nIGhhcyBjaGFuZ2VkICovCisJaWYgKChhZGFwdGVyLT5saW5rc3RhdGUgPT0gTElOS19VUCkgJiYKKwkgICAgKGxpbmt1cCA9PSBMSU5LX1VQKSAmJgorCSAgICAoYWRhcHRlci0+bGlua3NwZWVkID09IGxpbmtzcGVlZCkgJiYKKwkgICAgKGFkYXB0ZXItPmxpbmtkdXBsZXggPT0gbGlua2R1cGxleCkpIHsKKwkJREJHX01TRygic2xpY29zczogJXMgKCVzKSBwb3J0KCVkKSBsaW5rIHN0aWxsIHVwXG4iLAorCQkJX19mdW5jX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+cGh5c3BvcnQpOworCQlyZXR1cm47CisJfQorCisJLyogbGluayBoYXMgY2hhbmdlZCBhdCB0aGlzIHBvaW50ICovCisKKwkvKiBsaW5rIGhhcyBnb25lIGZyb20gdXAgdG8gZG93biAqLworCWlmIChsaW5rdXAgPT0gTElOS19ET1dOKSB7CisJCWFkYXB0ZXItPmxpbmtzdGF0ZSA9IExJTktfRE9XTjsKKwkJREJHX01TRygic2xpY29zczogJXMgJWQgTGlua0Rvd24hXG4iLCBfX2Z1bmNfXywKKwkJCWFkYXB0ZXItPnBoeXNwb3J0KTsKKwkJcmV0dXJuOworCX0KKworCS8qIGxpbmsgaGFzIGdvbmUgZnJvbSBkb3duIHRvIHVwICovCisJYWRhcHRlci0+bGlua3NwZWVkID0gbGlua3NwZWVkOworCWFkYXB0ZXItPmxpbmtkdXBsZXggPSBsaW5rZHVwbGV4OworCisJaWYgKGFkYXB0ZXItPmxpbmtzdGF0ZSAhPSBMSU5LX1VQKSB7CisJCS8qIHNldHVwIHRoZSBtYWMgKi8KKwkJREJHX01TRygiJXMgY2FsbCBzbGljX2NvbmZpZ19zZXRcbiIsIF9fZnVuY19fKTsKKwkJc2xpY19jb25maWdfc2V0KGFkYXB0ZXIsIFRSVUUpOworCQlhZGFwdGVyLT5saW5rc3RhdGUgPSBMSU5LX1VQOworCQlEQkdfTVNHKCJcbiglcykgTGluayBVUDogQ0FMTCBzbGljX2lmX3N0YXJ0X3F1ZXVlIiwKKwkJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSk7CisJCXNsaWNfaWZfc3RhcnRfcXVldWUoYWRhcHRlcik7CisJfQorI2lmIDEKKwlzd2l0Y2ggKGxpbmtzcGVlZCkgeworCWNhc2UgTElOS18xMDAwTUI6CisJCURCR19NU0cKKwkJICAgICgiXG4oJXMpIExJTksgVVAhOiBHSUdBQklUIFNQRUVEID09IDEwMDBNQiAgZHVwbGV4WyV4XVxuIiwKKwkJICAgICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPmxpbmtkdXBsZXgpOworCQlicmVhazsKKwljYXNlIExJTktfMTAwTUI6CisJCURCR19NU0coIlxuKCVzKSBMSU5LIFVQITogU1BFRUQgPT0gMTAwTUIgIGR1cGxleFsleF1cbiIsCisJCQlhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPmxpbmtkdXBsZXgpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEQkdfTVNHKCJcbiglcykgTElOSyBVUCE6IFNQRUVEID09IDEwTUIgIGR1cGxleFsleF1cbiIsCisJCQlhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPmxpbmtkdXBsZXgpOworCQlicmVhazsKKwl9CisjZW5kaWYKK30KKworLyoKKyAqICB0aGlzIGlzIGhlcmUgdG8gY2hlY2tzdW0gdGhlIGVlcHJvbSwgdGhlcmUgaXMgc29tZSB1Y29kZSBidWcKKyAqICB3aGljaCBwcmV2ZW5zIHVzIGZyb20gdXNpbmcgdGhlIHVjb2RlIHJlc3VsdC4KKyAqICByZW1vdmUgdGhpcyBvbmNlIHVjb2RlIGlzIGZpeGVkLgorICovCitzdGF0aWMgdXNob3J0IHNsaWNfZWVwcm9tX2Nrc3VtKGNoYXIgKm0sIGludCBsZW4pCit7CisjZGVmaW5lIEFERENBUlJZKHgpICAoeCA+IDY1NTM1ID8geCAtPSA2NTUzNSA6IHgpCisjZGVmaW5lIFJFRFVDRSB7bF91dGlsLmwgPSBzdW07IHN1bSA9IGxfdXRpbC5zWzBdICsgbF91dGlsLnNbMV07IEFERENBUlJZKHN1bSk7XAorCQl9CisKKwl1MTYgKnc7CisJdTMyIHN1bSA9IDA7CisJdTMyIGJ5dGVfc3dhcHBlZCA9IDA7CisJdTMyIHdfaW50OworCisJdW5pb24geworCQljaGFyIGNbMl07CisJCXVzaG9ydCBzOworCX0gc191dGlsOworCisJdW5pb24geworCQl1c2hvcnQgc1syXTsKKwkJaW50IGw7CisJfSBsX3V0aWw7CisKKwlsX3V0aWwubCA9IDA7CisJc191dGlsLnMgPSAwOworCisJdyA9ICh1MTYgKiltOworI2lmZGVmIENPTkZJR19YODZfNjQKKwl3X2ludCA9ICh1MzIpICgodWxvbmcpIHcgJiAweDAwMDAwMDAwRkZGRkZGRkYpOworI2Vsc2UKKwl3X2ludCA9ICh1MzIpICh3KTsKKyNlbmRpZgorCWlmICgoMSAmIHdfaW50KSAmJiAobGVuID4gMCkpIHsKKwkJUkVEVUNFOworCQlzdW0gPDw9IDg7CisJCXNfdXRpbC5jWzBdID0gKih1bnNpZ25lZCBjaGFyICopdzsKKwkJdyA9ICh1MTYgKikoKGNoYXIgKil3ICsgMSk7CisJCWxlbi0tOworCQlieXRlX3N3YXBwZWQgPSAxOworCX0KKworCS8qIFVucm9sbCB0aGUgbG9vcCB0byBtYWtlIG92ZXJoZWFkIGZyb20gYnJhbmNoZXMgJmMgc21hbGwuICovCisJd2hpbGUgKChsZW4gLT0gMzIpID49IDApIHsKKwkJc3VtICs9IHdbMF07CisJCXN1bSArPSB3WzFdOworCQlzdW0gKz0gd1syXTsKKwkJc3VtICs9IHdbM107CisJCXN1bSArPSB3WzRdOworCQlzdW0gKz0gd1s1XTsKKwkJc3VtICs9IHdbNl07CisJCXN1bSArPSB3WzddOworCQlzdW0gKz0gd1s4XTsKKwkJc3VtICs9IHdbOV07CisJCXN1bSArPSB3WzEwXTsKKwkJc3VtICs9IHdbMTFdOworCQlzdW0gKz0gd1sxMl07CisJCXN1bSArPSB3WzEzXTsKKwkJc3VtICs9IHdbMTRdOworCQlzdW0gKz0gd1sxNV07CisJCXcgPSAodTE2ICopKCh1bG9uZykgdyArIDE2KTsJLyogdmVyaWZ5ICovCisJfQorCWxlbiArPSAzMjsKKwl3aGlsZSAoKGxlbiAtPSA4KSA+PSAwKSB7CisJCXN1bSArPSB3WzBdOworCQlzdW0gKz0gd1sxXTsKKwkJc3VtICs9IHdbMl07CisJCXN1bSArPSB3WzNdOworCQl3ID0gKHUxNiAqKSgodWxvbmcpIHcgKyA0KTsJLyogdmVyaWZ5ICovCisJfQorCWxlbiArPSA4OworCWlmIChsZW4gIT0gMCB8fCBieXRlX3N3YXBwZWQgIT0gMCkgeworCQlSRURVQ0U7CisJCXdoaWxlICgobGVuIC09IDIpID49IDApCisJCQlzdW0gKz0gKncrKzsJLyogdmVyaWZ5ICovCisJCWlmIChieXRlX3N3YXBwZWQpIHsKKwkJCVJFRFVDRTsKKwkJCXN1bSA8PD0gODsKKwkJCWJ5dGVfc3dhcHBlZCA9IDA7CisJCQlpZiAobGVuID09IC0xKSB7CisJCQkJc191dGlsLmNbMV0gPSAqKGNoYXIgKikgdzsKKwkJCQlzdW0gKz0gc191dGlsLnM7CisJCQkJbGVuID0gMDsKKwkJCX0gZWxzZSB7CisJCQkJbGVuID0gLTE7CisJCQl9CisKKwkJfSBlbHNlIGlmIChsZW4gPT0gLTEpIHsKKwkJCXNfdXRpbC5jWzBdID0gKihjaGFyICopIHc7CisJCX0KKworCQlpZiAobGVuID09IC0xKSB7CisJCQlzX3V0aWwuY1sxXSA9IDA7CisJCQlzdW0gKz0gc191dGlsLnM7CisJCX0KKwl9CisJUkVEVUNFOworCXJldHVybiAodXNob3J0KSBzdW07Cit9CisKK3N0YXRpYyBpbnQgc2xpY19yc3BxdWV1ZV9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCWludCBpOworCXN0cnVjdCBzbGljX3JzcHF1ZXVlICpyc3BxID0gJmFkYXB0ZXItPnJzcHF1ZXVlOworCV9faW9tZW0gc3RydWN0IHNsaWNfcmVncyAqc2xpY19yZWdzID0gYWRhcHRlci0+c2xpY19yZWdzOworCXUzMiBwYWRkcmggPSAwOworCisJREJHX01TRygic2xpY29zczogJXMgKCVzKSBFTlRFUiBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sCisJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlcik7CisJQVNTRVJUKGFkYXB0ZXItPnN0YXRlID09IEFEQVBUX0RPV04pOworCW1lbXNldChyc3BxLCAwLCBzaXplb2Yoc3RydWN0IHNsaWNfcnNwcXVldWUpKTsKKworCXJzcHEtPm51bV9wYWdlcyA9IFNMSUNfUlNQUV9QQUdFU19HQjsKKworCWZvciAoaSA9IDA7IGkgPCByc3BxLT5udW1fcGFnZXM7IGkrKykgeworCQlyc3BxLT52YWRkcltpXSA9CisJCSAgICBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wY2lkZXYsIFBBR0VfU0laRSwKKwkJCQkJICZyc3BxLT5wYWRkcltpXSk7CisJCWlmICghcnNwcS0+dmFkZHJbaV0pIHsKKwkJCURCR19FUlJPUgorCQkJICAgICgicnNwcXVldWVfaW5pdF9mYWlsZWQgIHBjaV9hbGxvY19jb25zaXN0ZW50XG4iKTsKKwkJCXNsaWNfcnNwcXVldWVfZnJlZShhZGFwdGVyKTsKKwkJCXJldHVybiBTVEFUVVNfRkFJTFVSRTsKKwkJfQorI2lmbmRlZiBDT05GSUdfWDg2XzY0CisJCUFTU0VSVCgoKHUzMikgcnNwcS0+dmFkZHJbaV0gJiAweEZGRkZGMDAwKSA9PQorCQkgICAgICAgKHUzMikgcnNwcS0+dmFkZHJbaV0pOworCQlBU1NFUlQoKCh1MzIpIHJzcHEtPnBhZGRyW2ldICYgMHhGRkZGRjAwMCkgPT0KKwkJICAgICAgICh1MzIpIHJzcHEtPnBhZGRyW2ldKTsKKyNlbmRpZgorCQltZW1zZXQocnNwcS0+dmFkZHJbaV0sIDAsIFBBR0VfU0laRSk7CisvKiAgICAgICAgICAgICAgREJHX01TRygic2xpY29zczogJXMgVVBMT0FEIFJTUEJVRkYgUGFnZSBwYWdlaXhbJXhdIHBhZGRyWyVwXSAiCisJCQkidmFkZHJbJXBdXG4iLAorCQkJX19mdW5jX18sIGksICh2b2lkICopcnNwcS0+cGFkZHJbaV0sIHJzcHEtPnZhZGRyW2ldKTsgKi8KKworCQlpZiAocGFkZHJoID09IDApIHsKKwkJCVdSSVRFX1JFRyhzbGljX3JlZ3MtPnNsaWNfcmJhciwKKwkJCQkgIChyc3BxLT5wYWRkcltpXSB8IFNMSUNfUlNQUV9CVUZTSU5QQUdFKSwKKwkJCQkgIERPTlRfRkxVU0gpOworCQl9IGVsc2UgeworCQkJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJCQkgICAgc2xpY19yZWdzLT5zbGljX3JiYXI2NCwKKwkJCQkgICAgKHJzcHEtPnBhZGRyW2ldIHwgU0xJQ19SU1BRX0JVRlNJTlBBR0UpLAorCQkJCSAgICBzbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwKKwkJCQkgICAgcGFkZHJoLCBET05UX0ZMVVNIKTsKKwkJfQorCX0KKwlyc3BxLT5vZmZzZXQgPSAwOworCXJzcHEtPnBhZ2VpbmRleCA9IDA7CisJcnNwcS0+cnNwYnVmID0gKHN0cnVjdCBzbGljX3JzcGJ1ZiAqKXJzcHEtPnZhZGRyWzBdOworCURCR19NU0coInNsaWNvc3M6ICVzICglcykgRVhJVCBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sCisJCWFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlcik7CisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgaW50IHNsaWNfcnNwcXVldWVfcmVzZXQoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJc3RydWN0IHNsaWNfcnNwcXVldWUgKnJzcHEgPSAmYWRhcHRlci0+cnNwcXVldWU7CisKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyAoJXMpIEVOVEVSIGFkYXB0ZXJbJXBdXG4iLCBfX2Z1bmNfXywKKwkJYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyKTsKKwlBU1NFUlQoYWRhcHRlci0+c3RhdGUgPT0gQURBUFRfRE9XTik7CisJQVNTRVJUKHJzcHEpOworCisJREJHX01TRygic2xpY29zczogTm90aGluZyB0byBkby4gcnNwcVslcF1cbiIKKwkJIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WyV4XVxuIgorCQkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlaXhbJXhdXG4iCisJCSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzcGJ1ZlslcF1cbiIsCisJCXJzcHEsIHJzcHEtPm9mZnNldCwgcnNwcS0+cGFnZWluZGV4LCByc3BxLT5yc3BidWYpOworCisJREJHX01TRygic2xpY29zczogJXMgKCVzKSBFWElUIGFkYXB0ZXJbJXBdXG4iLCBfX2Z1bmNfXywKKwkJYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyKTsKKwlyZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfcnNwcXVldWVfZnJlZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgc2xpY19yc3BxdWV1ZSAqcnNwcSA9ICZhZGFwdGVyLT5yc3BxdWV1ZTsKKworCURCR19NU0coInNsaWNvc3M6ICVzIGFkYXB0ZXJbJXBdIHBvcnQgJWQgcnNwcVslcF0gRnJlZVJTUFFcbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5waHlzcG9ydCwgcnNwcSk7CisJZm9yIChpID0gMDsgaSA8IHJzcHEtPm51bV9wYWdlczsgaSsrKSB7CisJCWlmIChyc3BxLT52YWRkcltpXSkgeworCQkJREJHX01TRworCQkJICAgICgic2xpY29zczogIHBjaV9mcmVlX2NvbnNpc3RlbnQgcnNwcS0+dmFkZHJbJXBdIFwKKwkJCSAgICBwYWRkclslcF1cbiIsCisJCQkgICAgIHJzcHEtPnZhZGRyW2ldLCAodm9pZCAqKSByc3BxLT5wYWRkcltpXSk7CisJCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwgUEFHRV9TSVpFLAorCQkJCQkgICAgcnNwcS0+dmFkZHJbaV0sIHJzcHEtPnBhZGRyW2ldKTsKKwkJfQorCQlyc3BxLT52YWRkcltpXSA9IE5VTEw7CisJCXJzcHEtPnBhZGRyW2ldID0gMDsKKwl9CisJcnNwcS0+b2Zmc2V0ID0gMDsKKwlyc3BxLT5wYWdlaW5kZXggPSAwOworCXJzcHEtPnJzcGJ1ZiA9IE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2xpY19yc3BidWYgKnNsaWNfcnNwcXVldWVfZ2V0bmV4dChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19yc3BxdWV1ZSAqcnNwcSA9ICZhZGFwdGVyLT5yc3BxdWV1ZTsKKwlzdHJ1Y3Qgc2xpY19yc3BidWYgKmJ1ZjsKKworCWlmICghKHJzcHEtPnJzcGJ1Zi0+c3RhdHVzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlidWYgPSByc3BxLT5yc3BidWY7CisjaWZuZGVmIENPTkZJR19YODZfNjQKKwlBU1NFUlQoKGJ1Zi0+c3RhdHVzICYgMHhGRkZGRkZFMCkgPT0gMCk7CisjZW5kaWYKKwlBU1NFUlQoYnVmLT5ob3N0aGFuZGxlKTsKKwlpZiAoKytyc3BxLT5vZmZzZXQgPCBTTElDX1JTUFFfQlVGU0lOUEFHRSkgeworCQlyc3BxLT5yc3BidWYrKzsKKyNpZm5kZWYgQ09ORklHX1g4Nl82NAorCQlBU1NFUlQoKCh1MzIpIHJzcHEtPnJzcGJ1ZiAmIDB4RkZGRkZGRTApID09CisJCSAgICAgICAodTMyKSByc3BxLT5yc3BidWYpOworI2VuZGlmCisJfSBlbHNlIHsKKwkJQVNTRVJUKHJzcHEtPm9mZnNldCA9PSBTTElDX1JTUFFfQlVGU0lOUEFHRSk7CisJCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCQkgICAgYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX3JiYXI2NCwKKwkJCSAgICAocnNwcS0+CisJCQkgICAgIHBhZGRyW3JzcHEtPnBhZ2VpbmRleF0gfCBTTElDX1JTUFFfQlVGU0lOUEFHRSksCisJCQkgICAgYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2FkZHJfdXBwZXIsIDAsIERPTlRfRkxVU0gpOworCQlyc3BxLT5wYWdlaW5kZXggPSAoKytyc3BxLT5wYWdlaW5kZXgpICUgcnNwcS0+bnVtX3BhZ2VzOworCQlyc3BxLT5vZmZzZXQgPSAwOworCQlyc3BxLT5yc3BidWYgPSAoc3RydWN0IHNsaWNfcnNwYnVmICopCisJCQkJCQlyc3BxLT52YWRkcltyc3BxLT5wYWdlaW5kZXhdOworI2lmbmRlZiBDT05GSUdfWDg2XzY0CisJCUFTU0VSVCgoKHUzMikgcnNwcS0+cnNwYnVmICYgMHhGRkZGRjAwMCkgPT0KKwkJICAgICAgICh1MzIpIHJzcHEtPnJzcGJ1Zik7CisjZW5kaWYKKwl9CisjaWZuZGVmIENPTkZJR19YODZfNjQKKwlBU1NFUlQoKCh1MzIpIGJ1ZiAmIDB4RkZGRkZGRTApID09ICh1MzIpIGJ1Zik7CisjZW5kaWYKKwlyZXR1cm4gYnVmOworfQorCitzdGF0aWMgdm9pZCBzbGljX2NtZHFtZW1faW5pdChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19jbWRxbWVtICpjbWRxbWVtID0gJmFkYXB0ZXItPmNtZHFtZW07CisKKwltZW1zZXQoY21kcW1lbSwgMCwgc2l6ZW9mKHN0cnVjdCBzbGljX2NtZHFtZW0pKTsKK30KKworc3RhdGljIHZvaWQgc2xpY19jbWRxbWVtX2ZyZWUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJc3RydWN0IHNsaWNfY21kcW1lbSAqY21kcW1lbSA9ICZhZGFwdGVyLT5jbWRxbWVtOworCWludCBpOworCisJREJHX01TRygic2xpY29zczogKCVzKSBhZGFwdGVyWyVwXSBwb3J0ICVkIHJzcHFbJXBdIEZyZWUgQ01EUSBNZW1vcnlcbiIsCisJCV9fZnVuY19fLCBhZGFwdGVyLCBhZGFwdGVyLT5waHlzcG9ydCwgY21kcW1lbSk7CisJZm9yIChpID0gMDsgaSA8IFNMSUNfQ01EUV9NQVhQQUdFUzsgaSsrKSB7CisJCWlmIChjbWRxbWVtLT5wYWdlc1tpXSkgeworCQkJREJHX01TRygic2xpY29zczogJXMgRGVhbGxvY2F0ZSBwYWdlICBDbWRRUGFnZVslcF1cbiIsCisJCQkJX19mdW5jX18sICh2b2lkICopIGNtZHFtZW0tPnBhZ2VzW2ldKTsKKwkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkgICAgUEFHRV9TSVpFLAorCQkJCQkgICAgKHZvaWQgKikgY21kcW1lbS0+cGFnZXNbaV0sCisJCQkJCSAgICBjbWRxbWVtLT5kbWFfcGFnZXNbaV0pOworCQl9CisJfQorCW1lbXNldChjbWRxbWVtLCAwLCBzaXplb2Yoc3RydWN0IHNsaWNfY21kcW1lbSkpOworfQorCitzdGF0aWMgdTMyICpzbGljX2NtZHFtZW1fYWRkcGFnZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19jbWRxbWVtICpjbWRxbWVtID0gJmFkYXB0ZXItPmNtZHFtZW07CisJdTMyICpwYWdlYWRkcjsKKworCWlmIChjbWRxbWVtLT5wYWdlY250ID49IFNMSUNfQ01EUV9NQVhQQUdFUykKKwkJcmV0dXJuIE5VTEw7CisJcGFnZWFkZHIgPSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wY2lkZXYsCisJCQkJCVBBR0VfU0laRSwKKwkJCQkJJmNtZHFtZW0tPmRtYV9wYWdlc1tjbWRxbWVtLT5wYWdlY250XSk7CisJaWYgKCFwYWdlYWRkcikKKwkJcmV0dXJuIE5VTEw7CisjaWZuZGVmIENPTkZJR19YODZfNjQKKwlBU1NFUlQoKCh1MzIpIHBhZ2VhZGRyICYgMHhGRkZGRjAwMCkgPT0gKHUzMikgcGFnZWFkZHIpOworI2VuZGlmCisJY21kcW1lbS0+cGFnZXNbY21kcW1lbS0+cGFnZWNudF0gPSBwYWdlYWRkcjsKKwljbWRxbWVtLT5wYWdlY250Kys7CisJcmV0dXJuIHBhZ2VhZGRyOworfQorCitzdGF0aWMgaW50IHNsaWNfY21kcV9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCWludCBpOworCXUzMiAqcGFnZWFkZHI7CisKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBFTlRFUiBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sIGFkYXB0ZXIpOworCUFTU0VSVChhZGFwdGVyLT5zdGF0ZSA9PSBBREFQVF9ET1dOKTsKKwltZW1zZXQoJmFkYXB0ZXItPmNtZHFfYWxsLCAwLCBzaXplb2Yoc3RydWN0IHNsaWNfY21kcXVldWUpKTsKKwltZW1zZXQoJmFkYXB0ZXItPmNtZHFfZnJlZSwgMCwgc2l6ZW9mKHN0cnVjdCBzbGljX2NtZHF1ZXVlKSk7CisJbWVtc2V0KCZhZGFwdGVyLT5jbWRxX2RvbmUsIDAsIHNpemVvZihzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSkpOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5jbWRxX2FsbC5sb2NrLmxvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5jbWRxX2ZyZWUubG9jay5sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+Y21kcV9kb25lLmxvY2subG9jayk7CisJc2xpY19jbWRxbWVtX2luaXQoYWRhcHRlcik7CisJYWRhcHRlci0+c2xpY19oYW5kbGVfaXggPSAxOworCWZvciAoaSA9IDA7IGkgPCBTTElDX0NNRFFfSU5JVFBBR0VTOyBpKyspIHsKKwkJcGFnZWFkZHIgPSBzbGljX2NtZHFtZW1fYWRkcGFnZShhZGFwdGVyKTsKKyNpZm5kZWYgQ09ORklHX1g4Nl82NAorCQlBU1NFUlQoKCh1MzIpIHBhZ2VhZGRyICYgMHhGRkZGRjAwMCkgPT0gKHUzMikgcGFnZWFkZHIpOworI2VuZGlmCisJCWlmICghcGFnZWFkZHIpIHsKKwkJCXNsaWNfY21kcV9mcmVlKGFkYXB0ZXIpOworCQkJcmV0dXJuIFNUQVRVU19GQUlMVVJFOworCQl9CisJCXNsaWNfY21kcV9hZGRjbWRwYWdlKGFkYXB0ZXIsIHBhZ2VhZGRyKTsKKwl9CisJYWRhcHRlci0+c2xpY19oYW5kbGVfaXggPSAxOworCURCR19NU0coInNsaWNvc3M6ICVzIHJlc2V0IHNsaWNfaGFuZGxlX2l4IHRvIE9ORVxuIiwgX19mdW5jX18pOworCisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBzbGljX2NtZHFfZnJlZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19ob3N0Y21kICpjbWQ7CisKKwlEQkdfTVNHKCJzbGljb3NzOiAlcyBhZGFwdGVyWyVwXSBwb3J0ICVkIEZyZWVDb21tYW5kc0Zyb20gQ01EUVxuIiwKKwkJX19mdW5jX18sIGFkYXB0ZXIsIGFkYXB0ZXItPnBoeXNwb3J0KTsKKwljbWQgPSBhZGFwdGVyLT5jbWRxX2FsbC5oZWFkOworCXdoaWxlIChjbWQpIHsKKwkJaWYgKGNtZC0+YnVzeSkgeworCQkJc3RydWN0IHNrX2J1ZmYgKnRlbXBza2I7CisKKwkJCXRlbXBza2IgPSBjbWQtPnNrYjsKKwkJCWlmICh0ZW1wc2tiKSB7CisJCQkJY21kLT5za2IgPSBOVUxMOworCQkJCWRldl9rZnJlZV9za2JfaXJxKHRlbXBza2IpOworCQkJfQorCQl9CisJCWNtZCA9IGNtZC0+bmV4dF9hbGw7CisJfQorCW1lbXNldCgmYWRhcHRlci0+Y21kcV9hbGwsIDAsIHNpemVvZihzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSkpOworCW1lbXNldCgmYWRhcHRlci0+Y21kcV9mcmVlLCAwLCBzaXplb2Yoc3RydWN0IHNsaWNfY21kcXVldWUpKTsKKwltZW1zZXQoJmFkYXB0ZXItPmNtZHFfZG9uZSwgMCwgc2l6ZW9mKHN0cnVjdCBzbGljX2NtZHF1ZXVlKSk7CisJc2xpY19jbWRxbWVtX2ZyZWUoYWRhcHRlcik7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfY21kcV9yZXNldChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19ob3N0Y21kICpoY21kOworCXN0cnVjdCBza19idWZmICpza2I7CisJdTMyIG91dHN0YW5kaW5nOworCisJREJHX01TRygiJXMgRU5URVIgYWRhcHRlclslcF1cbiIsIF9fZnVuY19fLCBhZGFwdGVyKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWRhcHRlci0+Y21kcV9mcmVlLmxvY2subG9jaywKKwkJCWFkYXB0ZXItPmNtZHFfZnJlZS5sb2NrLmZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWRhcHRlci0+Y21kcV9kb25lLmxvY2subG9jaywKKwkJCWFkYXB0ZXItPmNtZHFfZG9uZS5sb2NrLmZsYWdzKTsKKwlvdXRzdGFuZGluZyA9IGFkYXB0ZXItPmNtZHFfYWxsLmNvdW50IC0gYWRhcHRlci0+Y21kcV9kb25lLmNvdW50OworCW91dHN0YW5kaW5nIC09IGFkYXB0ZXItPmNtZHFfZnJlZS5jb3VudDsKKwloY21kID0gYWRhcHRlci0+Y21kcV9hbGwuaGVhZDsKKwl3aGlsZSAoaGNtZCkgeworCQlpZiAoaGNtZC0+YnVzeSkgeworCQkJc2tiID0gaGNtZC0+c2tiOworCQkJQVNTRVJUKHNrYik7CisJCQlEQkdfTVNHKCJzbGljb3NzOiAlcyBoY21kWyVwXSBza2JbJXBdICIsIF9fZnVuY19fLAorCQkJCWhjbWQsIHNrYik7CisJCQloY21kLT5idXN5ID0gMDsKKwkJCWhjbWQtPnNrYiA9IE5VTEw7CisJCQlEQkdfTVNHKCIgRnJlZSBTS0JcbiIpOworCQkJZGV2X2tmcmVlX3NrYl9pcnEoc2tiKTsKKwkJfQorCQloY21kID0gaGNtZC0+bmV4dF9hbGw7CisJfQorCWFkYXB0ZXItPmNtZHFfZnJlZS5jb3VudCA9IDA7CisJYWRhcHRlci0+Y21kcV9mcmVlLmhlYWQgPSBOVUxMOworCWFkYXB0ZXItPmNtZHFfZnJlZS50YWlsID0gTlVMTDsKKwlhZGFwdGVyLT5jbWRxX2RvbmUuY291bnQgPSAwOworCWFkYXB0ZXItPmNtZHFfZG9uZS5oZWFkID0gTlVMTDsKKwlhZGFwdGVyLT5jbWRxX2RvbmUudGFpbCA9IE5VTEw7CisJYWRhcHRlci0+Y21kcV9mcmVlLmhlYWQgPSBhZGFwdGVyLT5jbWRxX2FsbC5oZWFkOworCWhjbWQgPSBhZGFwdGVyLT5jbWRxX2FsbC5oZWFkOworCXdoaWxlIChoY21kKSB7CisJCWFkYXB0ZXItPmNtZHFfZnJlZS5jb3VudCsrOworCQloY21kLT5uZXh0ID0gaGNtZC0+bmV4dF9hbGw7CisJCWhjbWQgPSBoY21kLT5uZXh0X2FsbDsKKwl9CisJaWYgKGFkYXB0ZXItPmNtZHFfZnJlZS5jb3VudCAhPSBhZGFwdGVyLT5jbWRxX2FsbC5jb3VudCkgeworCQlEQkdfRVJST1IoIiVzIGZyZWVfY291bnQgJWQgIT0gYWxsIGNvdW50ICVkXG4iLCBfX2Z1bmNfXywKKwkJCSAgYWRhcHRlci0+Y21kcV9mcmVlLmNvdW50LCBhZGFwdGVyLT5jbWRxX2FsbC5jb3VudCk7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPmNtZHFfZG9uZS5sb2NrLmxvY2ssCisJCQkJYWRhcHRlci0+Y21kcV9kb25lLmxvY2suZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPmNtZHFfZnJlZS5sb2NrLmxvY2ssCisJCQkJYWRhcHRlci0+Y21kcV9mcmVlLmxvY2suZmxhZ3MpOworCURCR19NU0coIiVzIEVYSVQgYWRhcHRlclslcF1cbiIsIF9fZnVuY19fLCBhZGFwdGVyKTsKK30KKworc3RhdGljIHZvaWQgc2xpY19jbWRxX2FkZGNtZHBhZ2Uoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUzMiAqcGFnZSkKK3sKKwlzdHJ1Y3Qgc2xpY19ob3N0Y21kICpjbWQ7CisJc3RydWN0IHNsaWNfaG9zdGNtZCAqcHJldjsKKwlzdHJ1Y3Qgc2xpY19ob3N0Y21kICp0YWlsOworCXN0cnVjdCBzbGljX2NtZHF1ZXVlICpjbWRxOworCWludCBjbWRjbnQ7CisJdm9pZCAqY21kYWRkcjsKKwl1bG9uZyBwaHlzX2FkZHI7CisJdTMyIHBoeXNfYWRkcmw7CisJdTMyIHBoeXNfYWRkcmg7CisJc3RydWN0IHNsaWNfaGFuZGxlICpwc2xpY19oYW5kbGU7CisKKwljbWRhZGRyID0gcGFnZTsKKwljbWQgPSAoc3RydWN0IHNsaWNfaG9zdGNtZCAqKWNtZGFkZHI7CisvKiAgREJHX01TRygiQ01EUSBQYWdlIGFkZHJbJXBdIGl4WyVkXSBwZnJlZVslcF1cbiIsIGNtZGFkZHIsIHNsaWNfaGFuZGxlX2l4LAorICAgIGFkYXB0ZXItPnBmcmVlX3NsaWNfaGFuZGxlcyk7ICovCisJY21kY250ID0gMDsKKworCXBoeXNfYWRkciA9IHZpcnRfdG9fYnVzKCh2b2lkICopcGFnZSk7CisJcGh5c19hZGRybCA9IFNMSUNfR0VUX0FERFJfTE9XKHBoeXNfYWRkcik7CisJcGh5c19hZGRyaCA9IFNMSUNfR0VUX0FERFJfSElHSChwaHlzX2FkZHIpOworCisJcHJldiA9IE5VTEw7CisJdGFpbCA9IGNtZDsKKwl3aGlsZSAoKGNtZGNudCA8IFNMSUNfQ01EUV9DTURTSU5QQUdFKSAmJgorCSAgICAgICAoYWRhcHRlci0+c2xpY19oYW5kbGVfaXggPCAyNTYpKSB7CisJCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgU0xJQ19IQU5ETEUgZm9yIHRoaXMgY29tbWFuZCAqLworCQlTTElDX0dFVF9TTElDX0hBTkRMRShhZGFwdGVyLCBwc2xpY19oYW5kbGUpOworCQlpZiAocHNsaWNfaGFuZGxlID09IE5VTEwpCisJCQlBU1NFUlQoMCk7CisJCUFTU0VSVChwc2xpY19oYW5kbGUgPT0KKwkJICAgICAgICZhZGFwdGVyLT5zbGljX2hhbmRsZXNbcHNsaWNfaGFuZGxlLT50b2tlbi4KKwkJCQkJICAgICAgaGFuZGxlX2luZGV4XSk7CisJCXBzbGljX2hhbmRsZS0+dHlwZSA9IFNMSUNfSEFORExFX0NNRDsKKwkJcHNsaWNfaGFuZGxlLT5hZGRyZXNzID0gKHZvaWQgKikgY21kOworCQlwc2xpY19oYW5kbGUtPm9mZnNldCA9ICh1c2hvcnQpIGFkYXB0ZXItPnNsaWNfaGFuZGxlX2l4Kys7CisJCXBzbGljX2hhbmRsZS0+b3RoZXJfaGFuZGxlID0gTlVMTDsKKwkJcHNsaWNfaGFuZGxlLT5uZXh0ID0gTlVMTDsKKworCQljbWQtPnBzbGljX2hhbmRsZSA9IHBzbGljX2hhbmRsZTsKKwkJY21kLT5jbWQ2NC5ob3N0aGFuZGxlID0gcHNsaWNfaGFuZGxlLT50b2tlbi5oYW5kbGVfdG9rZW47CisJCWNtZC0+YnVzeSA9IEZBTFNFOworCQljbWQtPnBhZGRybCA9IHBoeXNfYWRkcmw7CisJCWNtZC0+cGFkZHJoID0gcGh5c19hZGRyaDsKKwkJY21kLT5uZXh0X2FsbCA9IHByZXY7CisJCWNtZC0+bmV4dCA9IHByZXY7CisJCXByZXYgPSBjbWQ7CisJCXBoeXNfYWRkcmwgKz0gU0xJQ19IT1NUQ01EX1NJWkU7CisJCWNtZGFkZHIgKz0gU0xJQ19IT1NUQ01EX1NJWkU7CisKKwkJY21kID0gKHN0cnVjdCBzbGljX2hvc3RjbWQgKiljbWRhZGRyOworCQljbWRjbnQrKzsKKwl9CisKKwljbWRxID0gJmFkYXB0ZXItPmNtZHFfYWxsOworCWNtZHEtPmNvdW50ICs9IGNtZGNudDsJLyogIFNMSUNfQ01EUV9DTURTSU5QQUdFOyAgIG1vb2t0b2RvICovCisJdGFpbC0+bmV4dF9hbGwgPSBjbWRxLT5oZWFkOworCUFTU0VSVChWQUxJRF9BRERSRVNTKHByZXYpKTsKKwljbWRxLT5oZWFkID0gcHJldjsKKwljbWRxID0gJmFkYXB0ZXItPmNtZHFfZnJlZTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY21kcS0+bG9jay5sb2NrLCBjbWRxLT5sb2NrLmZsYWdzKTsKKwljbWRxLT5jb3VudCArPSBjbWRjbnQ7CS8qICBTTElDX0NNRFFfQ01EU0lOUEFHRTsgICBtb29rdG9kbyAqLworCXRhaWwtPm5leHQgPSBjbWRxLT5oZWFkOworCUFTU0VSVChWQUxJRF9BRERSRVNTKHByZXYpKTsKKwljbWRxLT5oZWFkID0gcHJldjsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbWRxLT5sb2NrLmxvY2ssIGNtZHEtPmxvY2suZmxhZ3MpOworfQorCitzdGF0aWMgc3RydWN0IHNsaWNfaG9zdGNtZCAqc2xpY19jbWRxX2dldGZyZWUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJc3RydWN0IHNsaWNfY21kcXVldWUgKmNtZHEgPSAmYWRhcHRlci0+Y21kcV9mcmVlOworCXN0cnVjdCBzbGljX2hvc3RjbWQgKmNtZCA9IE5VTEw7CisKK2xvY2tfYW5kX3JldHJ5OgorCXNwaW5fbG9ja19pcnFzYXZlKCZjbWRxLT5sb2NrLmxvY2ssIGNtZHEtPmxvY2suZmxhZ3MpOworcmV0cnk6CisJY21kID0gY21kcS0+aGVhZDsKKwlpZiAoY21kKSB7CisJCWNtZHEtPmhlYWQgPSBjbWQtPm5leHQ7CisJCWNtZHEtPmNvdW50LS07CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNtZHEtPmxvY2subG9jaywgY21kcS0+bG9jay5mbGFncyk7CisJfSBlbHNlIHsKKwkJc2xpY19jbWRxX2dldGRvbmUoYWRhcHRlcik7CisJCWNtZCA9IGNtZHEtPmhlYWQ7CisJCWlmIChjbWQpIHsKKwkJCWdvdG8gcmV0cnk7CisJCX0gZWxzZSB7CisJCQl1MzIgKnBhZ2VhZGRyOworCisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbWRxLT5sb2NrLmxvY2ssCisJCQkJCQljbWRxLT5sb2NrLmZsYWdzKTsKKwkJCXBhZ2VhZGRyID0gc2xpY19jbWRxbWVtX2FkZHBhZ2UoYWRhcHRlcik7CisJCQlpZiAocGFnZWFkZHIpIHsKKwkJCQlzbGljX2NtZHFfYWRkY21kcGFnZShhZGFwdGVyLCBwYWdlYWRkcik7CisJCQkJZ290byBsb2NrX2FuZF9yZXRyeTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gY21kOworfQorCitzdGF0aWMgdm9pZCBzbGljX2NtZHFfZ2V0ZG9uZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSAqZG9uZV9jbWRxID0gJmFkYXB0ZXItPmNtZHFfZG9uZTsKKwlzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSAqZnJlZV9jbWRxID0gJmFkYXB0ZXItPmNtZHFfZnJlZTsKKworCUFTU0VSVChmcmVlX2NtZHEtPmhlYWQgPT0gTlVMTCk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRvbmVfY21kcS0+bG9jay5sb2NrLCBkb25lX2NtZHEtPmxvY2suZmxhZ3MpOworCUFTU0VSVChWQUxJRF9BRERSRVNTKGRvbmVfY21kcS0+aGVhZCkpOworCisJZnJlZV9jbWRxLT5oZWFkID0gZG9uZV9jbWRxLT5oZWFkOworCWZyZWVfY21kcS0+Y291bnQgPSBkb25lX2NtZHEtPmNvdW50OworCWRvbmVfY21kcS0+aGVhZCA9IE5VTEw7CisJZG9uZV9jbWRxLT50YWlsID0gTlVMTDsKKwlkb25lX2NtZHEtPmNvdW50ID0gMDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkb25lX2NtZHEtPmxvY2subG9jaywgZG9uZV9jbWRxLT5sb2NrLmZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgc2xpY19jbWRxX3B1dGRvbmVfaXJxKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAorCQkJCXN0cnVjdCBzbGljX2hvc3RjbWQgKmNtZCkKK3sKKwlzdHJ1Y3Qgc2xpY19jbWRxdWV1ZSAqY21kcSA9ICZhZGFwdGVyLT5jbWRxX2RvbmU7CisKKwlzcGluX2xvY2soJmNtZHEtPmxvY2subG9jayk7CisJY21kLT5idXN5ID0gMDsKKwlBU1NFUlQoVkFMSURfQUREUkVTUyhjbWRxLT5oZWFkKSk7CisJY21kLT5uZXh0ID0gY21kcS0+aGVhZDsKKwlBU1NFUlQoVkFMSURfQUREUkVTUyhjbWQpKTsKKwljbWRxLT5oZWFkID0gY21kOworCWNtZHEtPmNvdW50Kys7CisJaWYgKChhZGFwdGVyLT54bWl0cV9mdWxsKSAmJiAoY21kcS0+Y291bnQgPiAxMCkpCisJCW5ldGlmX3dha2VfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKKwlzcGluX3VubG9jaygmY21kcS0+bG9jay5sb2NrKTsKK30KKworc3RhdGljIGludCBzbGljX3JjdnF1ZXVlX2luaXQoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJaW50IGksIGNvdW50OworCXN0cnVjdCBzbGljX3JjdnF1ZXVlICpyY3ZxID0gJmFkYXB0ZXItPnJjdnF1ZXVlOworCisJREJHX01TRygic2xpY29zczogJXMgRU5URVIgYWRhcHRlclslcF1cbiIsIF9fZnVuY19fLCBhZGFwdGVyKTsKKwlBU1NFUlQoYWRhcHRlci0+c3RhdGUgPT0gQURBUFRfRE9XTik7CisJcmN2cS0+dGFpbCA9IE5VTEw7CisJcmN2cS0+aGVhZCA9IE5VTEw7CisJcmN2cS0+c2l6ZSA9IFNMSUNfUkNWUV9FTlRSSUVTOworCXJjdnEtPmVycm9ycyA9IDA7CisJcmN2cS0+Y291bnQgPSAwOworCWkgPSAoU0xJQ19SQ1ZRX0VOVFJJRVMgLyBTTElDX1JDVlFfRklMTEVOVFJJRVMpOworCWNvdW50ID0gMDsKKwl3aGlsZSAoaSkgeworCQljb3VudCArPSBzbGljX3JjdnF1ZXVlX2ZpbGwoYWRhcHRlcik7CisJCWktLTsKKwl9CisJaWYgKHJjdnEtPmNvdW50IDwgU0xJQ19SQ1ZRX01JTkVOVFJJRVMpIHsKKwkJc2xpY19yY3ZxdWV1ZV9mcmVlKGFkYXB0ZXIpOworCQlyZXR1cm4gU1RBVFVTX0ZBSUxVUkU7CisJfQorCURCR19NU0coInNsaWNvc3M6ICVzIEVYSVQgYWRhcHRlclslcF1cbiIsIF9fZnVuY19fLCBhZGFwdGVyKTsKKwlyZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBpbnQgc2xpY19yY3ZxdWV1ZV9yZXNldChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3Qgc2xpY19yY3ZxdWV1ZSAqcmN2cSA9ICZhZGFwdGVyLT5yY3ZxdWV1ZTsKKworCURCR19NU0coInNsaWNvc3M6ICVzIEVOVEVSIGFkYXB0ZXJbJXBdXG4iLCBfX2Z1bmNfXywgYWRhcHRlcik7CisJQVNTRVJUKGFkYXB0ZXItPnN0YXRlID09IEFEQVBUX0RPV04pOworCUFTU0VSVChyY3ZxKTsKKworCURCR19NU0coInNsaWNvc3M6IE5vdGhpbmcgdG8gZG8uIHJjdnFbJXBdXG4iCisJCSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50WyV4XVxuIgorCQkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkWyVwXVxuIgorCQkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsWyVwXVxuIiwKKwkJcmN2cSwgcmN2cS0+Y291bnQsIHJjdnEtPmhlYWQsIHJjdnEtPnRhaWwpOworCisJREJHX01TRygic2xpY29zczogJXMgRVhJVCBhZGFwdGVyWyVwXVxuIiwgX19mdW5jX18sIGFkYXB0ZXIpOworCXJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIHZvaWQgc2xpY19yY3ZxdWV1ZV9mcmVlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCXN0cnVjdCBzbGljX3JjdnF1ZXVlICpyY3ZxID0gJmFkYXB0ZXItPnJjdnF1ZXVlOworCXN0cnVjdCBza19idWZmICpza2I7CisKKwl3aGlsZSAocmN2cS0+aGVhZCkgeworCQlza2IgPSByY3ZxLT5oZWFkOworCQlyY3ZxLT5oZWFkID0gcmN2cS0+aGVhZC0+bmV4dDsKKwkJZGV2X2tmcmVlX3NrYihza2IpOworCX0KKwlyY3ZxLT50YWlsID0gTlVMTDsKKwlyY3ZxLT5oZWFkID0gTlVMTDsKKwlyY3ZxLT5jb3VudCA9IDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2xpY19yY3ZxdWV1ZV9nZXRuZXh0KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQoreworCXN0cnVjdCBzbGljX3JjdnF1ZXVlICpyY3ZxID0gJmFkYXB0ZXItPnJjdnF1ZXVlOworCXN0cnVjdCBza19idWZmICpza2I7CisJc3RydWN0IHNsaWNfcmN2YnVmICpyY3ZidWY7CisJaW50IGNvdW50OworCisJaWYgKHJjdnEtPmNvdW50KSB7CisJCXNrYiA9IHJjdnEtPmhlYWQ7CisJCXJjdmJ1ZiA9IChzdHJ1Y3Qgc2xpY19yY3ZidWYgKilza2ItPmhlYWQ7CisJCUFTU0VSVChyY3ZidWYpOworCisJCWlmIChyY3ZidWYtPnN0YXR1cyAmIElSSEREUl9TVkFMSUQpIHsKKwkJCXJjdnEtPmhlYWQgPSByY3ZxLT5oZWFkLT5uZXh0OworCQkJc2tiLT5uZXh0ID0gTlVMTDsKKwkJCXJjdnEtPmNvdW50LS07CisJCX0gZWxzZSB7CisJCQlza2IgPSBOVUxMOworCQl9CisJfSBlbHNlIHsKKwkJREJHX0VSUk9SKCJSY3ZRIEVtcHR5ISEgYWRhcHRlclslcF0gcmN2cVslcF0gY291bnRbJXhdXG4iLAorCQkJICBhZGFwdGVyLCByY3ZxLCByY3ZxLT5jb3VudCk7CisJCXNrYiA9IE5VTEw7CisJfQorCXdoaWxlIChyY3ZxLT5jb3VudCA8IFNMSUNfUkNWUV9GSUxMVEhSRVNIKSB7CisJCWNvdW50ID0gc2xpY19yY3ZxdWV1ZV9maWxsKGFkYXB0ZXIpOworCQlpZiAoIWNvdW50KQorCQkJYnJlYWs7CisJfQorCWlmIChza2IpCisJCXJjdnEtPmVycm9ycyA9IDA7CisJcmV0dXJuIHNrYjsKK30KKworc3RhdGljIGludCBzbGljX3JjdnF1ZXVlX2ZpbGwoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCit7CisJdm9pZCAqcGFkZHI7CisJdTMyIHBhZGRybDsKKwl1MzIgcGFkZHJoOworCXN0cnVjdCBzbGljX3JjdnF1ZXVlICpyY3ZxID0gJmFkYXB0ZXItPnJjdnF1ZXVlOworCWludCBpID0gMDsKKworCXdoaWxlIChpIDwgU0xJQ19SQ1ZRX0ZJTExFTlRSSUVTKSB7CisJCXN0cnVjdCBzbGljX3JjdmJ1ZiAqcmN2YnVmOworCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworI2lmZGVmIEtMVURHRV9GT1JfNEdCX0JPVU5EQVJZCityZXRyeV9yY3ZxZmlsbDoKKyNlbmRpZgorCQlza2IgPSBhbGxvY19za2IoU0xJQ19SQ1ZRX1JDVkJVRlNJWkUsIEdGUF9BVE9NSUMpOworCQlpZiAoc2tiKSB7CisJCQlwYWRkciA9ICh2b2lkICopcGNpX21hcF9zaW5nbGUoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkJCSAgc2tiLT5kYXRhLAorCQkJCQkJCSAgU0xJQ19SQ1ZRX1JDVkJVRlNJWkUsCisJCQkJCQkJICBQQ0lfRE1BX0ZST01ERVZJQ0UpOworCQkJcGFkZHJsID0gU0xJQ19HRVRfQUREUl9MT1cocGFkZHIpOworCQkJcGFkZHJoID0gU0xJQ19HRVRfQUREUl9ISUdIKHBhZGRyKTsKKworCQkJc2tiLT5sZW4gPSBTTElDX1JDVkJVRl9IRUFEU0laRTsKKwkJCXJjdmJ1ZiA9IChzdHJ1Y3Qgc2xpY19yY3ZidWYgKilza2ItPmhlYWQ7CisJCQlyY3ZidWYtPnN0YXR1cyA9IDA7CisJCQlza2ItPm5leHQgPSBOVUxMOworI2lmZGVmIEtMVURHRV9GT1JfNEdCX0JPVU5EQVJZCisJCQlpZiAocGFkZHJsID09IDApIHsKKwkJCQlEQkdfRVJST1IKKwkJCQkgICAgKCIlczogTE9XIDMyYml0cyBQSFlTSUNBTCBBRERSRVNTID09IDAgIgorCQkJCSAgICAgInNrYlslcF0gICBQUk9CTEVNXG4iCisJCQkJICAgICAiICAgICAgICAgc2tiZGF0YVslcF1cbiIKKwkJCQkgICAgICIgICAgICAgICBza2JsZW5bJXhdXG4iCisJCQkJICAgICAiICAgICAgICAgcGFkZHJbJXBdXG4iCisJCQkJICAgICAiICAgICAgICAgcGFkZHJsWyV4XVxuIgorCQkJCSAgICAgIiAgICAgICAgIHBhZGRyaFsleF1cbiIsIF9fZnVuY19fLCBza2IsCisJCQkJICAgICBza2ItPmRhdGEsIHNrYi0+bGVuLCBwYWRkciwgcGFkZHJsLAorCQkJCSAgICAgcGFkZHJoKTsKKwkJCQlEQkdfRVJST1IoIiAgICAgICAgIHJjdnEtPmhlYWRbJXBdXG4iCisJCQkJCSAgIiAgICAgICAgIHJjdnEtPnRhaWxbJXBdXG4iCisJCQkJCSAgIiAgICAgICAgIHJjdnEtPmNvdW50WyV4XVxuIiwKKwkJCQkJICByY3ZxLT5oZWFkLCByY3ZxLT50YWlsLCByY3ZxLT5jb3VudCk7CisJCQkJREJHX0VSUk9SKCJTS0lQIFRISVMgU0tCISEhISEhISFcbiIpOworCQkJCWdvdG8gcmV0cnlfcmN2cWZpbGw7CisJCQl9CisjZWxzZQorCQkJaWYgKHBhZGRybCA9PSAwKSB7CisJCQkJREJHX0VSUk9SCisJCQkJICAgICgiXG5cbiVzOiBMT1cgMzJiaXRzIFBIWVNJQ0FMIEFERFJFU1MgPT0gMCAiCisJCQkJICAgICAic2tiWyVwXSAgR0lWRSBUTyBDQVJEIEFOWVdBWVxuIgorCQkJCSAgICAgIiAgICAgICAgIHNrYmRhdGFbJXBdXG4iCisJCQkJICAgICAiICAgICAgICAgcGFkZHJbJXBdXG4iCisJCQkJICAgICAiICAgICAgICAgcGFkZHJsWyV4XVxuIgorCQkJCSAgICAgIiAgICAgICAgIHBhZGRyaFsleF1cbiIsIF9fZnVuY19fLCBza2IsCisJCQkJICAgICBza2ItPmRhdGEsIHBhZGRyLCBwYWRkcmwsIHBhZGRyaCk7CisJCQl9CisjZW5kaWYKKwkJCWlmIChwYWRkcmggPT0gMCkgeworCQkJCVdSSVRFX1JFRyhhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfaGJhciwKKwkJCQkJICAodTMyKSBwYWRkcmwsIERPTlRfRkxVU0gpOworCQkJfSBlbHNlIHsKKwkJCQlXUklURV9SRUc2NChhZGFwdGVyLAorCQkJCQkgICAgYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2hiYXI2NCwKKwkJCQkJICAgICh1MzIpIHBhZGRybCwKKwkJCQkJICAgIGFkYXB0ZXItPnNsaWNfcmVncy0+c2xpY19hZGRyX3VwcGVyLAorCQkJCQkgICAgKHUzMikgcGFkZHJoLCBET05UX0ZMVVNIKTsKKwkJCX0KKwkJCWlmIChyY3ZxLT5oZWFkKQorCQkJCXJjdnEtPnRhaWwtPm5leHQgPSBza2I7CisJCQllbHNlCisJCQkJcmN2cS0+aGVhZCA9IHNrYjsKKwkJCXJjdnEtPnRhaWwgPSBza2I7CisJCQlyY3ZxLT5jb3VudCsrOworCQkJaSsrOworCQl9IGVsc2UgeworCQkJREJHX0VSUk9SCisJCQkgICAgKCIlcyBzbGljX3JjdnF1ZXVlX2ZpbGwgY291bGQgb25seSBnZXQgWyVkXSAiCisJCQkgICAgICJza2J1ZmZzXG4iLAorCQkJICAgICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGkpOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyB1MzIgc2xpY19yY3ZxdWV1ZV9yZWluc2VydChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgc2xpY19yY3ZxdWV1ZSAqcmN2cSA9ICZhZGFwdGVyLT5yY3ZxdWV1ZTsKKwl2b2lkICpwYWRkcjsKKwl1MzIgcGFkZHJsOworCXUzMiBwYWRkcmg7CisJc3RydWN0IHNsaWNfcmN2YnVmICpyY3ZidWYgPSAoc3RydWN0IHNsaWNfcmN2YnVmICopc2tiLT5oZWFkOworCisJQVNTRVJUKHNrYi0+bGVuID09IFNMSUNfUkNWQlVGX0hFQURTSVpFKTsKKworCXBhZGRyID0gKHZvaWQgKilwY2lfbWFwX3NpbmdsZShhZGFwdGVyLT5wY2lkZXYsIHNrYi0+aGVhZCwKKwkJCQkgIFNMSUNfUkNWUV9SQ1ZCVUZTSVpFLCBQQ0lfRE1BX0ZST01ERVZJQ0UpOworCXJjdmJ1Zi0+c3RhdHVzID0gMDsKKwlza2ItPm5leHQgPSBOVUxMOworCisJcGFkZHJsID0gU0xJQ19HRVRfQUREUl9MT1cocGFkZHIpOworCXBhZGRyaCA9IFNMSUNfR0VUX0FERFJfSElHSChwYWRkcik7CisKKwlpZiAocGFkZHJsID09IDApIHsKKwkJREJHX0VSUk9SCisJCSAgICAoIiVzOiBMT1cgMzJiaXRzIFBIWVNJQ0FMIEFERFJFU1MgPT0gMCBza2JbJXBdICAgUFJPQkxFTVxuIgorCQkgICAgICIgICAgICAgICBza2JkYXRhWyVwXVxuIiAiICAgICAgICAgc2tibGVuWyV4XVxuIgorCQkgICAgICIgICAgICAgICBwYWRkclslcF1cbiIgIiAgICAgICAgIHBhZGRybFsleF1cbiIKKwkJICAgICAiICAgICAgICAgcGFkZHJoWyV4XVxuIiwgX19mdW5jX18sIHNrYiwgc2tiLT5kYXRhLAorCQkgICAgIHNrYi0+bGVuLCBwYWRkciwgcGFkZHJsLCBwYWRkcmgpOworCQlEQkdfRVJST1IoIiAgICAgICAgIHJjdnEtPmhlYWRbJXBdXG4iCisJCQkgICIgICAgICAgICByY3ZxLT50YWlsWyVwXVxuIgorCQkJICAiICAgICAgICAgcmN2cS0+Y291bnRbJXhdXG4iLCByY3ZxLT5oZWFkLCByY3ZxLT50YWlsLAorCQkJICByY3ZxLT5jb3VudCk7CisJfQorCWlmIChwYWRkcmggPT0gMCkgeworCQlXUklURV9SRUcoYWRhcHRlci0+c2xpY19yZWdzLT5zbGljX2hiYXIsICh1MzIpIHBhZGRybCwKKwkJCSAgRE9OVF9GTFVTSCk7CisJfSBlbHNlIHsKKwkJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJCSAgICBhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfaGJhcjY0LAorCQkJICAgIHBhZGRybCwKKwkJCSAgICBhZGFwdGVyLT5zbGljX3JlZ3MtPnNsaWNfYWRkcl91cHBlciwKKwkJCSAgICBwYWRkcmgsIERPTlRfRkxVU0gpOworCX0KKwlpZiAocmN2cS0+aGVhZCkKKwkJcmN2cS0+dGFpbC0+bmV4dCA9IHNrYjsKKwllbHNlCisJCXJjdnEtPmhlYWQgPSBza2I7CisJcmN2cS0+dGFpbCA9IHNrYjsKKwlyY3ZxLT5jb3VudCsrOworCXJldHVybiByY3ZxLT5jb3VudDsKK30KKworc3RhdGljIGludCBzbGljX2RlYnVnX2NhcmRfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKK3sKKyNpZmRlZiBNT09LVE9ETworCWludCBpOworCXN0cnVjdCBzbGljY2FyZCAqY2FyZCA9IHNlcS0+cHJpdmF0ZTsKKwlzdHJ1Y3Qgc2xpY19jb25maWcgKmNvbmZpZyA9ICZjYXJkLT5jb25maWc7CisJdW5zaWduZWQgY2hhciAqZnJ1ID0gKHVuc2lnbmVkIGNoYXIgKikoJmNhcmQtPmNvbmZpZy5hdGtfZnJ1KTsKKwl1bnNpZ25lZCBjaGFyICpvZW1mcnUgPSAodW5zaWduZWQgY2hhciAqKSgmY2FyZC0+Y29uZmlnLk9lbUZydSk7CisjZW5kaWYKKworCXNlcV9wcmludGYoc2VxLCAiZHJpdmVyX3ZlcnNpb24gICAgICAgICAgIDogJXMiLCBzbGljX3Byb2NfdmVyc2lvbik7CisJc2VxX3ByaW50ZihzZXEsICJNaWNyb2NvZGUgdmVyc2lvbnM6ICAgICAgICAgICBcbiIpOworCXNlcV9wcmludGYoc2VxLCAiICAgIEdpZ2FiaXQgKGdiKSAgICAgICAgIDogJXMgJXNcbiIsCisJCSAgICBNT0pBVkVfVUNPREVfVkVSU19TVFJJTkcsIE1PSkFWRV9VQ09ERV9WRVJTX0RBVEUpOworCXNlcV9wcmludGYoc2VxLCAiICAgIEdpZ2FiaXQgUmVjZWl2ZXIgICAgIDogJXMgJXNcbiIsCisJCSAgICBHQl9SQ1ZVQ09ERV9WRVJTX1NUUklORywgR0JfUkNWVUNPREVfVkVSU19EQVRFKTsKKwlzZXFfcHJpbnRmKHNlcSwgIlZlbmRvciAgICAgICAgICAgICAgICAgICA6ICVzXG4iLCBzbGljX3ZlbmRvcik7CisJc2VxX3ByaW50ZihzZXEsICJQcm9kdWN0IE5hbWUgICAgICAgICAgICAgOiAlc1xuIiwgc2xpY19wcm9kdWN0X25hbWUpOworI2lmZGVmIE1PT0tUT0RPCisJc2VxX3ByaW50ZihzZXEsICJWZW5kb3JJZCAgICAgICAgICAgICAgICAgOiAlNC40WFxuIiwKKwkJICAgIGNvbmZpZy0+VmVuZG9ySWQpOworCXNlcV9wcmludGYoc2VxLCAiRGV2aWNlSWQgICAgICAgICAgICAgICAgIDogJTQuNFhcbiIsCisJCSAgICBjb25maWctPkRldmljZUlkKTsKKwlzZXFfcHJpbnRmKHNlcSwgIlJldmlzaW9uSWQgICAgICAgICAgICAgICA6ICUyLjJ4XG4iLAorCQkgICAgY29uZmlnLT5SZXZpc2lvbklkKTsKKwlzZXFfcHJpbnRmKHNlcSwgIkJ1cyAgICAjICAgICAgICAgICAgICAgICA6ICVkXG4iLCBjYXJkLT5idXNudW1iZXIpOworCXNlcV9wcmludGYoc2VxLCAiRGV2aWNlICMgICAgICAgICAgICAgICAgIDogJWRcbiIsIGNhcmQtPnNsb3RudW1iZXIpOworCXNlcV9wcmludGYoc2VxLCAiSW50ZXJmYWNlcyAgICAgICAgICAgICAgIDogJWRcbiIsIGNhcmQtPmNhcmRfc2l6ZSk7CisJc2VxX3ByaW50ZihzZXEsICIgICAgIEluaXRpYWxpemVkICAgICAgICAgOiAlZFxuIiwKKwkJICAgIGNhcmQtPmFkYXB0ZXJzX2FjdGl2YXRlZCk7CisJc2VxX3ByaW50ZihzZXEsICIgICAgIEFsbG9jYXRlZCAgICAgICAgICAgOiAlZFxuIiwKKwkJICAgIGNhcmQtPmFkYXB0ZXJzX2FsbG9jYXRlZCk7CisJQVNTRVJUKGNhcmQtPmNhcmRfc2l6ZSA8PSBTTElDX05CUl9NQUNTKTsKKwlmb3IgKGkgPSAwOyBpIDwgY2FyZC0+Y2FyZF9zaXplOyBpKyspIHsKKwkJc2VxX3ByaW50ZihzZXEsCisJCQkgICAiICAgICBNQUMlZCA6ICUyLjJYICUyLjJYICUyLjJYICUyLjJYICUyLjJYICUyLjJYXG4iLAorCQkJICAgaSwgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzBdLAorCQkJICAgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzFdLAorCQkJICAgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzJdLAorCQkJICAgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzNdLAorCQkJICAgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzRdLAorCQkJICAgY29uZmlnLT5tYWNpbmZvW2ldLm1hY2FkZHJBWzVdKTsKKwl9CisJc2VxX3ByaW50ZihzZXEsICIgICAgIElGICBJbml0IFN0YXRlIER1cGxleC9TcGVlZCBpcnFcbiIpOworCXNlcV9wcmludGYoc2VxLCAiICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgY2FyZC0+YWRhcHRlcnNfYWxsb2NhdGVkOyBpKyspIHsKKwkJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXI7CisKKwkJYWRhcHRlciA9IGNhcmQtPmFkYXB0ZXJbaV07CisJCWlmIChhZGFwdGVyKSB7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCQkgICAgIiAgICAgJWQgICAlZCAgICVzICAlcyAgJXMgICAgMHglWFxuIiwKKwkJCQkgICAgYWRhcHRlci0+cGh5c3BvcnQsIGFkYXB0ZXItPnN0YXRlLAorCQkJCSAgICBTTElDX0xJTktTVEFURShhZGFwdGVyLT5saW5rc3RhdGUpLAorCQkJCSAgICBTTElDX0RVUExFWChhZGFwdGVyLT5saW5rZHVwbGV4KSwKKwkJCQkgICAgU0xJQ19TUEVFRChhZGFwdGVyLT5saW5rc3BlZWQpLAorCQkJCSAgICAodWludCkgYWRhcHRlci0+aXJxKTsKKwkJfQorCX0KKwlzZXFfcHJpbnRmKHNlcSwgIkdlbmVyYXRpb24gIyAgICAgICAgICAgICA6ICU0LjRYXG4iLCBjYXJkLT5nZW5udW1iZXIpOworCXNlcV9wcmludGYoc2VxLCAiUmN2USBtYXggZW50cmllcyAgICAgICAgIDogJTQuNFhcbiIsCisJCSAgICBTTElDX1JDVlFfRU5UUklFUyk7CisJc2VxX3ByaW50ZihzZXEsICJQaW5nIFN0YXR1cyAgICAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJICAgIGNhcmQtPnBpbmdzdGF0dXMpOworCXNlcV9wcmludGYoc2VxLCAiTWluaW11bSBncmFudCAgICAgICAgICAgIDogJTIuMnhcbiIsCisJCSAgICBjb25maWctPk1pbkdyYW50KTsKKwlzZXFfcHJpbnRmKHNlcSwgIk1heGltdW0gTGF0ZW5jeSAgICAgICAgICA6ICUyLjJ4XG4iLCBjb25maWctPk1heExhdCk7CisJc2VxX3ByaW50ZihzZXEsICJQY2lTdGF0dXMgICAgICAgICAgICAgICAgOiAlNC40eFxuIiwKKwkJICAgIGNvbmZpZy0+UGNpc3RhdHVzKTsKKwlzZXFfcHJpbnRmKHNlcSwgIkRlYnVnIERldmljZSBJZCAgICAgICAgICA6ICU0LjR4XG4iLAorCQkgICAgY29uZmlnLT5EYmdEZXZJZCk7CisJc2VxX3ByaW50ZihzZXEsICJEUkFNIFJPTSBGdW5jdGlvbiAgICAgICAgOiAlNC40eFxuIiwKKwkJICAgIGNvbmZpZy0+RHJhbVJvbUZuKTsKKwlzZXFfcHJpbnRmKHNlcSwgIk5ldHdvcmsgaW50ZXJmYWNlIFBpbiAxICA6ICUyLjJ4XG4iLAorCQkgICAgY29uZmlnLT5OZXRJbnRQaW4xKTsKKwlzZXFfcHJpbnRmKHNlcSwgIk5ldHdvcmsgaW50ZXJmYWNlIFBpbiAyICA6ICUyLjJ4XG4iLAorCQkgICAgY29uZmlnLT5OZXRJbnRQaW4xKTsKKwlzZXFfcHJpbnRmKHNlcSwgIk5ldHdvcmsgaW50ZXJmYWNlIFBpbiAzICA6ICUyLjJ4XG4iLAorCQkgICAgY29uZmlnLT5OZXRJbnRQaW4xKTsKKwlzZXFfcHJpbnRmKHNlcSwgIlBNIGNhcGFiaWxpdGllcyAgICAgICAgICA6ICU0LjRYXG4iLAorCQkgICAgY29uZmlnLT5QTUVDYXBhYik7CisJc2VxX3ByaW50ZihzZXEsICJOZXR3b3JrIENsb2NrIENvbnRyb2xzICAgOiAlNC40WFxuIiwKKwkJICAgIGNvbmZpZy0+TndDbGtDdHJscyk7CisKKwlzd2l0Y2ggKGNvbmZpZy0+RnJ1Rm9ybWF0KSB7CisJY2FzZSBBVEtfRlJVX0ZPUk1BVDoKKwkJeworCQkJc2VxX3ByaW50ZihzZXEsCisJCQkgICAgIlZlbmRvciAgICAgICAgICAgICAgICAgICA6IEFsYWNyaXRlY2gsIEluYy5cbiIpOworCQkJc2VxX3ByaW50ZihzZXEsCisJCQkgICAgIkFzc2VtYmx5ICMgICAgICAgICAgICAgICA6ICVjJWMlYyVjJWMlY1xuIiwKKwkJCQkgICAgZnJ1WzBdLCBmcnVbMV0sIGZydVsyXSwgZnJ1WzNdLCBmcnVbNF0sCisJCQkJICAgIGZydVs1XSk7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCQkgICAgIlJldmlzaW9uICMgICAgICAgICAgICAgICA6ICVjJWNcbiIsCisJCQkJICAgIGZydVs2XSwgZnJ1WzddKTsKKworCQkJaWYgKGNvbmZpZy0+T0VNRnJ1Rm9ybWF0ID09IFZFTkRPUjRfRlJVX0ZPUk1BVCkgeworCQkJCXNlcV9wcmludGYoc2VxLAorCQkJCQkgICAgIlNlcmlhbCAgICMgICAgICAgICAgICAgICA6ICIKKwkJCQkJICAgICIlYyVjJWMlYyVjJWMlYyVjJWMlYyVjJWNcbiIsCisJCQkJCSAgICBmcnVbOF0sIGZydVs5XSwgZnJ1WzEwXSwKKwkJCQkJICAgIGZydVsxMV0sIGZydVsxMl0sIGZydVsxM10sCisJCQkJCSAgICBmcnVbMTZdLCBmcnVbMTddLCBmcnVbMThdLAorCQkJCQkgICAgZnJ1WzE5XSwgZnJ1WzIwXSwgZnJ1WzIxXSk7CisJCQl9IGVsc2UgeworCQkJCXNlcV9wcmludGYoc2VxLAorCQkJCQkgICAgIlNlcmlhbCAgICMgICAgICAgICAgICAgICA6ICIKKwkJCQkJICAgICIlYyVjJWMlYyVjJWMlYyVjJWMlYyVjJWMlYyVjXG4iLAorCQkJCQkgICAgZnJ1WzhdLCBmcnVbOV0sIGZydVsxMF0sCisJCQkJCSAgICBmcnVbMTFdLCBmcnVbMTJdLCBmcnVbMTNdLAorCQkJCQkgICAgZnJ1WzE0XSwgZnJ1WzE1XSwgZnJ1WzE2XSwKKwkJCQkJICAgIGZydVsxN10sIGZydVsxOF0sIGZydVsxOV0sCisJCQkJCSAgICBmcnVbMjBdLCBmcnVbMjFdKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisKKwlkZWZhdWx0OgorCQl7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCSAgICAiVmVuZG9yICAgICAgICAgICAgICAgICAgIDogQWxhY3JpdGVjaCwgSW5jLlxuIik7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCSAgICAiU2VyaWFsICAgIyAgICAgICAgICAgICAgIDogRW1wdHkgRlJVXG4iKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3dpdGNoIChjb25maWctPk9FTUZydUZvcm1hdCkgeworCWNhc2UgVkVORE9SMV9GUlVfRk9STUFUOgorCQl7CisJCQlzZXFfcHJpbnRmKHNlcSwgIkZSVSBJbmZvcm1hdGlvbjpcbiIpOworCQkJc2VxX3ByaW50ZihzZXEsICIgICAgQ29tbW9kaXR5ICMgICAgICAgICAgOiAlY1xuIiwKKwkJCQkgICAgb2VtZnJ1WzBdKTsKKwkJCXNlcV9wcmludGYoc2VxLAorCQkJCSAgICAiICAgIEFzc2VtYmx5ICMgICAgICAgICAgIDogJWMlYyVjJWNcbiIsCisJCQkJICAgIG9lbWZydVsxXSwgb2VtZnJ1WzJdLCBvZW1mcnVbM10sIG9lbWZydVs0XSk7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCQkgICAgIiAgICBSZXZpc2lvbiAjICAgICAgICAgICA6ICVjJWNcbiIsCisJCQkJICAgIG9lbWZydVs1XSwgb2VtZnJ1WzZdKTsKKwkJCXNlcV9wcmludGYoc2VxLAorCQkJCSAgICAiICAgIFN1cHBsaWVyICMgICAgICAgICAgIDogJWMlY1xuIiwKKwkJCQkgICAgb2VtZnJ1WzddLCBvZW1mcnVbOF0pOworCQkJc2VxX3ByaW50ZihzZXEsCisJCQkJICAgICIgICAgRGF0ZSAgICAgICAgICAgICAgICAgOiAlYyVjXG4iLAorCQkJCSAgICBvZW1mcnVbOV0sIG9lbWZydVsxMF0pOworCQkJc2VxX3NwcmludGYoc2VxLAorCQkJCSAgICAiICAgIFNlcXVlbmNlICMgICAgICAgICAgIDogJWMlYyVjXG4iLAorCQkJCSAgICBvZW1mcnVbMTFdLCBvZW1mcnVbMTJdLCBvZW1mcnVbMTNdKTsKKwkJCWJyZWFrOworCQl9CisKKwljYXNlIFZFTkRPUjJfRlJVX0ZPUk1BVDoKKwkJeworCQkJc2VxX3ByaW50ZihzZXEsICJGUlUgSW5mb3JtYXRpb246XG4iKTsKKwkJCXNlcV9wcmludGYoc2VxLAorCQkJCSAgICAiICAgIFBhcnQgICAgICMgICAgICAgICAgIDogIgorCQkJCSAgICAiJWMlYyVjJWMlYyVjJWMlY1xuIiwKKwkJCQkgICAgb2VtZnJ1WzBdLCBvZW1mcnVbMV0sIG9lbWZydVsyXSwKKwkJCQkgICAgb2VtZnJ1WzNdLCBvZW1mcnVbNF0sIG9lbWZydVs1XSwKKwkJCQkgICAgb2VtZnJ1WzZdLCBvZW1mcnVbN10pOworCQkJc2VxX3ByaW50ZihzZXEsCisJCQkJICAgICIgICAgU3VwcGxpZXIgIyAgICAgICAgICAgOiAlYyVjJWMlYyVjXG4iLAorCQkJCSAgICBvZW1mcnVbOF0sIG9lbWZydVs5XSwgb2VtZnJ1WzEwXSwKKwkJCQkgICAgb2VtZnJ1WzExXSwgb2VtZnJ1WzEyXSk7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCQkgICAgIiAgICBEYXRlICAgICAgICAgICAgICAgICA6ICVjJWMlY1xuIiwKKwkJCQkgICAgb2VtZnJ1WzEzXSwgb2VtZnJ1WzE0XSwgb2VtZnJ1WzE1XSk7CisJCQlzZXFfc3ByaW50ZihzZXEsCisJCQkJICAgICIgICAgU2VxdWVuY2UgIyAgICAgICAgICAgOiAlYyVjJWMlY1xuIiwKKwkJCQkgICAgb2VtZnJ1WzE2XSwgb2VtZnJ1WzE3XSwgb2VtZnJ1WzE4XSwKKwkJCQkgICAgb2VtZnJ1WzE5XSk7CisJCQlicmVhazsKKwkJfQorCisJY2FzZSBWRU5ET1IzX0ZSVV9GT1JNQVQ6CisJCXsKKwkJCXNlcV9wcmludGYoc2VxLCAiRlJVIEluZm9ybWF0aW9uOlxuIik7CisJCX0KKworCWNhc2UgVkVORE9SNF9GUlVfRk9STUFUOgorCQl7CisJCQlzZXFfcHJpbnRmKHNlcSwgIkZSVSBJbmZvcm1hdGlvbjpcbiIpOworCQkJc2VxX3ByaW50ZihzZXEsCisJCQkJICAgICIgICAgRlJVIE51bWJlciAgICAgICAgICAgOiAiCisJCQkJICAgICIlYyVjJWMlYyVjJWMlYyVjXG4iLAorCQkJCSAgICBvZW1mcnVbMF0sIG9lbWZydVsxXSwgb2VtZnJ1WzJdLAorCQkJCSAgICBvZW1mcnVbM10sIG9lbWZydVs0XSwgb2VtZnJ1WzVdLAorCQkJCSAgICBvZW1mcnVbNl0sIG9lbWZydVs3XSk7CisJCQlzZXFfc3ByaW50ZihzZXEsCisJCQkJICAgICIgICAgUGFydCBOdW1iZXIgICAgICAgICAgOiAiCisJCQkJICAgICIlYyVjJWMlYyVjJWMlYyVjXG4iLAorCQkJCSAgICBvZW1mcnVbOF0sIG9lbWZydVs5XSwgb2VtZnJ1WzEwXSwKKwkJCQkgICAgb2VtZnJ1WzExXSwgb2VtZnJ1WzEyXSwgb2VtZnJ1WzEzXSwKKwkJCQkgICAgb2VtZnJ1WzE0XSwgb2VtZnJ1WzE1XSk7CisJCQlzZXFfcHJpbnRmKHNlcSwKKwkJCQkgICAgIiAgICBFQyBMZXZlbCAgICAgICAgICAgICA6ICIKKwkJCQkgICAgIiVjJWMlYyVjJWMlYyVjJWNcbiIsCisJCQkJICAgIG9lbWZydVsxNl0sIG9lbWZydVsxN10sIG9lbWZydVsxOF0sCisJCQkJICAgIG9lbWZydVsxOV0sIG9lbWZydVsyMF0sIG9lbWZydVsyMV0sCisJCQkJICAgIG9lbWZydVsyMl0sIG9lbWZydVsyM10pOworCQkJYnJlYWs7CisJCX0KKworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2xpY19kZWJ1Z19hZGFwdGVyX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpCit7CisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSBzZXEtPnByaXZhdGU7CisKKwlpZiAoKGFkYXB0ZXItPm5ldGRldikgJiYgKGFkYXB0ZXItPm5ldGRldi0+bmFtZSkpIHsKKwkJc2VxX3ByaW50ZihzZXEsICJpbmZvOiBpbnRlcmZhY2UgICAgICAgICAgOiAlc1xuIiwKKwkJCSAgICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCX0KKwlzZXFfcHJpbnRmKHNlcSwgImluZm86IHN0YXR1cyAgICAgICAgICAgICA6ICVzXG4iLAorCQlTTElDX0xJTktTVEFURShhZGFwdGVyLT5saW5rc3RhdGUpKTsKKwlzZXFfcHJpbnRmKHNlcSwgImluZm86IHBvcnQgICAgICAgICAgICAgICA6ICVkXG4iLAorCQlhZGFwdGVyLT5waHlzcG9ydCk7CisJc2VxX3ByaW50ZihzZXEsICJpbmZvOiBzcGVlZCAgICAgICAgICAgICAgOiAlc1xuIiwKKwkJU0xJQ19TUEVFRChhZGFwdGVyLT5saW5rc3BlZWQpKTsKKwlzZXFfcHJpbnRmKHNlcSwgImluZm86IGR1cGxleCAgICAgICAgICAgICA6ICVzXG4iLAorCQlTTElDX0RVUExFWChhZGFwdGVyLT5saW5rZHVwbGV4KSk7CisJc2VxX3ByaW50ZihzZXEsICJpbmZvOiBpcnEgICAgICAgICAgICAgICAgOiAweCVYXG4iLAorCQkodWludCkgYWRhcHRlci0+aXJxKTsKKwlzZXFfcHJpbnRmKHNlcSwgImluZm86IEludGVycnVwdCBBZ2cgRGVsYXk6ICVkIHVzZWNcbiIsCisJCWFkYXB0ZXItPmNhcmQtPmxvYWRsZXZlbF9jdXJyZW50KTsKKwlzZXFfcHJpbnRmKHNlcSwgImluZm86IFJjdlEgbWF4IGVudHJpZXMgICA6ICU0LjRYXG4iLAorCQlTTElDX1JDVlFfRU5UUklFUyk7CisJc2VxX3ByaW50ZihzZXEsICJpbmZvOiBSY3ZRIGN1cnJlbnQgICAgICAgOiAlNC40WFxuIiwKKwkJICAgIGFkYXB0ZXItPnJjdnF1ZXVlLmNvdW50KTsKKwlzZXFfcHJpbnRmKHNlcSwgInJ4IHN0YXRzOiBwYWNrZXRzICAgICAgICAgICAgICAgICAgOiAlOC44bFhcbiIsCisJCSAgICBhZGFwdGVyLT5zdGF0cy5yeF9wYWNrZXRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInJ4IHN0YXRzOiBieXRlcyAgICAgICAgICAgICAgICAgICAgOiAlOC44bFhcbiIsCisJCSAgICBhZGFwdGVyLT5zdGF0cy5yeF9ieXRlcyk7CisJc2VxX3ByaW50ZihzZXEsICJyeCBzdGF0czogYnJvYWRjYXN0cyAgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCSAgICBhZGFwdGVyLT5yY3ZfYnJvYWRjYXN0cyk7CisJc2VxX3ByaW50ZihzZXEsICJyeCBzdGF0czogbXVsdGljYXN0cyAgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCSAgICBhZGFwdGVyLT5yY3ZfbXVsdGljYXN0cyk7CisJc2VxX3ByaW50ZihzZXEsICJyeCBzdGF0czogdW5pY2FzdHMgICAgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCSAgICBhZGFwdGVyLT5yY3ZfdW5pY2FzdHMpOworCXNlcV9wcmludGYoc2VxLCAicnggc3RhdHM6IGVycm9ycyAgICAgICAgICAgICAgICAgICA6ICU4LjhYXG4iLAorCQkgICAgKHUzMikgYWRhcHRlci0+c2xpY19zdGF0cy5pZmFjZS5yY3ZfZXJyb3JzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInJ4IHN0YXRzOiBNaXNzZWQgZXJyb3JzICAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJICAgICh1MzIpIGFkYXB0ZXItPnNsaWNfc3RhdHMuaWZhY2UucmN2X2Rpc2NhcmRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInJ4IHN0YXRzOiBkcm9wcyAgICAgICAgICAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCSh1MzIpIGFkYXB0ZXItPnJjdl9kcm9wcyk7CisJc2VxX3ByaW50ZihzZXEsICJ0eCBzdGF0czogcGFja2V0cyAgICAgICAgICAgICAgICAgIDogJTguOGxYXG4iLAorCQkJYWRhcHRlci0+c3RhdHMudHhfcGFja2V0cyk7CisJc2VxX3ByaW50ZihzZXEsICJ0eCBzdGF0czogYnl0ZXMgICAgICAgICAgICAgICAgICAgIDogJTguOGxYXG4iLAorCQkJYWRhcHRlci0+c3RhdHMudHhfYnl0ZXMpOworCXNlcV9wcmludGYoc2VxLCAidHggc3RhdHM6IGVycm9ycyAgICAgICAgICAgICAgICAgICA6ICU4LjhYXG4iLAorCQkJKHUzMikgYWRhcHRlci0+c2xpY19zdGF0cy5pZmFjZS54bXRfZXJyb3JzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInJ4IHN0YXRzOiBtdWx0aWNhc3RzICAgICAgICAgICAgICAgOiAlOC44bFhcbiIsCisJCQlhZGFwdGVyLT5zdGF0cy5tdWx0aWNhc3QpOworCXNlcV9wcmludGYoc2VxLCAidHggc3RhdHM6IGNvbGxpc2lvbiBlcnJvcnMgICAgICAgICA6ICU4LjhYXG4iLAorCQkJKHUzMikgYWRhcHRlci0+c2xpY19zdGF0cy5pZmFjZS54bWl0X2NvbGxpc2lvbnMpOworCXNlcV9wcmludGYoc2VxLCAicGVyZjogTWF4IHJjdiBmcmFtZXMvaXNyICAgICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+bWF4X2lzcl9yY3ZzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IFJjdiBpbnRlcnJ1cHQgeWllbGRzICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPnJjdl9pbnRlcnJ1cHRfeWllbGRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IE1heCB4bWl0IGNvbXBsZXRlL2lzciAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPm1heF9pc3JfeG1pdHMpOworCXNlcV9wcmludGYoc2VxLCAicGVyZjogZXJyb3IgaW50ZXJydXB0cyAgICAgICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+ZXJyb3JfaW50ZXJydXB0cyk7CisJc2VxX3ByaW50ZihzZXEsICJwZXJmOiBlcnJvciBybWlzcyBpbnRlcnJ1cHRzICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5lcnJvcl9ybWlzc19pbnRlcnJ1cHRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IHJjdiBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPnJjdl9pbnRlcnJ1cHRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IHhtaXQgaW50ZXJydXB0cyAgICAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPnhtaXRfaW50ZXJydXB0cyk7CisJc2VxX3ByaW50ZihzZXEsICJwZXJmOiBsaW5rIGV2ZW50IGludGVycnVwdHMgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5saW5rZXZlbnRfaW50ZXJydXB0cyk7CisJc2VxX3ByaW50ZihzZXEsICJwZXJmOiBVUFIgaW50ZXJydXB0cyAgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT51cHJfaW50ZXJydXB0cyk7CisJc2VxX3ByaW50ZihzZXEsICJwZXJmOiBpbnRlcnJ1cHQgY291bnQgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5udW1faXNycyk7CisJc2VxX3ByaW50ZihzZXEsICJwZXJmOiBmYWxzZSBpbnRlcnJ1cHRzICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5mYWxzZV9pbnRlcnJ1cHRzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IEFsbCByZWdpc3RlciB3cml0ZXMgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmFsbF9yZWdfd3JpdGVzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IElDUiByZWdpc3RlciB3cml0ZXMgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmljcl9yZWdfd3JpdGVzKTsKKwlzZXFfcHJpbnRmKHNlcSwgInBlcmY6IElTUiByZWdpc3RlciB3cml0ZXMgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmlzcl9yZWdfd3JpdGVzKTsKKwlzZXFfcHJpbnRmKHNlcSwgImlmZXZlbnRzOiBvdmVyZmxvdyA4MDIgZXJyb3JzICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmlmX2V2ZW50cy5vZmxvdzgwMik7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogdHJhbnNwb3J0IG92ZXJmbG93IGVycm9yczogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuVHBydG9mbG93KTsKKwlzZXFfcHJpbnRmKHNlcSwgImlmZXZlbnRzOiB1bmRlcmZsb3cgZXJyb3JzICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmlmX2V2ZW50cy51ZmxvdzgwMik7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogcmVjZWl2ZSBlYXJseSAgICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMucmN2ZWFybHkpOworCXNlcV9wcmludGYoc2VxLCAiaWZldmVudHM6IGJ1ZmZlciBvdmVyZmxvd3MgICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkJ1Zm92KTsKKwlzZXFfcHJpbnRmKHNlcSwgImlmZXZlbnRzOiBjYXJyaWVyIGVycm9ycyAgICAgICAgICAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmlmX2V2ZW50cy5DYXJyZSk7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogTG9uZyAgICAgICAgICAgICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuTG9uZ2UpOworCXNlcV9wcmludGYoc2VxLCAiaWZldmVudHM6IGludmFsaWQgcHJlYW1ibGVzICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkludnApOworCXNlcV9wcmludGYoc2VxLCAiaWZldmVudHM6IENSQyBlcnJvcnMgICAgICAgICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+aWZfZXZlbnRzLkNyYyk7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogZHJpYmJsZSBuaWJibGVzICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuRHJibCk7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogQ29kZSB2aW9sYXRpb25zICAgICAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuQ29kZSk7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogVENQIGNoZWNrc3VtIGVycm9ycyAgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuVHBDc3VtKTsKKwlzZXFfcHJpbnRmKHNlcSwgImlmZXZlbnRzOiBUQ1AgaGVhZGVyIHNob3J0IGVycm9ycyAgOiAlOC44WFxuIiwKKwkJCWFkYXB0ZXItPmlmX2V2ZW50cy5UcEhsZW4pOworCXNlcV9wcmludGYoc2VxLCAiaWZldmVudHM6IElQIGNoZWNrc3VtIGVycm9ycyAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwQ3N1bSk7CisJc2VxX3ByaW50ZihzZXEsICJpZmV2ZW50czogSVAgZnJhbWUgaW5jb21wbGV0ZXMgICAgIDogJTguOFhcbiIsCisJCQlhZGFwdGVyLT5pZl9ldmVudHMuSXBMZW4pOworCXNlcV9wcmludGYoc2VxLCAiaWZldmVudHM6IElQIGhlYWRlcnMgc2hvcnRzICAgICAgICA6ICU4LjhYXG4iLAorCQkJYWRhcHRlci0+aWZfZXZlbnRzLklwSGxlbik7CisKKwlyZXR1cm4gMDsKK30KK3N0YXRpYyBpbnQgc2xpY19kZWJ1Z19hZGFwdGVyX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHNsaWNfZGVidWdfYWRhcHRlcl9zaG93LCBpbm9kZS0+aV9wcml2YXRlKTsKK30KKworc3RhdGljIGludCBzbGljX2RlYnVnX2NhcmRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgc2xpY19kZWJ1Z19jYXJkX3Nob3csIGlub2RlLT5pX3ByaXZhdGUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzbGljX2RlYnVnX2FkYXB0ZXJfZm9wcyA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm9wZW4JCT0gc2xpY19kZWJ1Z19hZGFwdGVyX29wZW4sCisJLnJlYWQJCT0gc2VxX3JlYWQsCisJLmxsc2VlawkJPSBzZXFfbHNlZWssCisJLnJlbGVhc2UJPSBzaW5nbGVfcmVsZWFzZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHNsaWNfZGVidWdfY2FyZF9mb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkub3BlbgkJPSBzbGljX2RlYnVnX2NhcmRfb3BlbiwKKwkucmVhZAkJPSBzZXFfcmVhZCwKKwkubGxzZWVrCQk9IHNlcV9sc2VlaywKKwkucmVsZWFzZQk9IHNpbmdsZV9yZWxlYXNlLAorfTsKKworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19hZGFwdGVyX2NyZWF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpkOworCWNoYXIgICAgbmFtZVs3XTsKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSBhZGFwdGVyLT5jYXJkOworCisJaWYgKCFjYXJkLT5kZWJ1Z2ZzX2RpcikKKwkJcmV0dXJuOworCisJc3ByaW50ZihuYW1lLCAicG9ydCVkIiwgYWRhcHRlci0+cG9ydCk7CisJZCA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgU19JUlVHTywKKwkJCQljYXJkLT5kZWJ1Z2ZzX2RpciwgYWRhcHRlciwKKwkJCQkmc2xpY19kZWJ1Z19hZGFwdGVyX2ZvcHMpOworCWlmICghZCB8fCBJU19FUlIoZCkpCisJCXByX2luZm8oUEZYICIlczogZGVidWdmcyBjcmVhdGUgZmFpbGVkXG4iLCBuYW1lKTsKKwllbHNlCisJCWFkYXB0ZXItPmRlYnVnZnNfZW50cnkgPSBkOworfQorCitzdGF0aWMgdm9pZCBzbGljX2RlYnVnX2FkYXB0ZXJfZGVzdHJveShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK3sKKwlpZiAoYWRhcHRlci0+ZGVidWdmc19lbnRyeSkgeworCQlkZWJ1Z2ZzX3JlbW92ZShhZGFwdGVyLT5kZWJ1Z2ZzX2VudHJ5KTsKKwkJYWRhcHRlci0+ZGVidWdmc19lbnRyeSA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgdm9pZCBzbGljX2RlYnVnX2NhcmRfY3JlYXRlKHN0cnVjdCBzbGljY2FyZCAqY2FyZCkKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpkOworCWNoYXIgICAgbmFtZVtJRk5BTVNJWl07CisKKwlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICJzbGljJWQiLCBjYXJkLT5jYXJkbnVtKTsKKwlkID0gZGVidWdmc19jcmVhdGVfZGlyKG5hbWUsIHNsaWNfZGVidWdmcyk7CisJaWYgKCFkIHx8IElTX0VSUihkKSkKKwkJcHJfaW5mbyhQRlggIiVzOiBkZWJ1Z2ZzIGNyZWF0ZSBkaXIgZmFpbGVkXG4iLAorCQkJCW5hbWUpOworCWVsc2UgeworCQljYXJkLT5kZWJ1Z2ZzX2RpciA9IGQ7CisJCWQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJjYXJkaW5mbyIsIFNfSVJVR08sCisJCQkJc2xpY19kZWJ1Z2ZzLCBjYXJkLAorCQkJCSZzbGljX2RlYnVnX2NhcmRfZm9wcyk7CisJCWlmICghZCB8fCBJU19FUlIoZCkpCisJCQlwcl9pbmZvKFBGWCAiJXM6IGRlYnVnZnMgY3JlYXRlIGZhaWxlZFxuIiwKKwkJCQkJbmFtZSk7CisJCWVsc2UKKwkJCWNhcmQtPmRlYnVnZnNfY2FyZGluZm8gPSBkOworCX0KK30KKworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19jYXJkX2Rlc3Ryb3koc3RydWN0IHNsaWNjYXJkICpjYXJkKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGNhcmQtPmNhcmRfc2l6ZTsgaSsrKSB7CisJCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyOworCisJCWFkYXB0ZXIgPSBjYXJkLT5hZGFwdGVyW2ldOworCQlpZiAoYWRhcHRlcikKKwkJCXNsaWNfZGVidWdfYWRhcHRlcl9kZXN0cm95KGFkYXB0ZXIpOworCX0KKwlpZiAoY2FyZC0+ZGVidWdmc19jYXJkaW5mbykgeworCQlkZWJ1Z2ZzX3JlbW92ZShjYXJkLT5kZWJ1Z2ZzX2NhcmRpbmZvKTsKKwkJY2FyZC0+ZGVidWdmc19jYXJkaW5mbyA9IE5VTEw7CisJfQorCWlmIChjYXJkLT5kZWJ1Z2ZzX2RpcikgeworCQlkZWJ1Z2ZzX3JlbW92ZShjYXJkLT5kZWJ1Z2ZzX2Rpcik7CisJCWNhcmQtPmRlYnVnZnNfZGlyID0gTlVMTDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfZGVidWdfaW5pdCh2b2lkKQoreworCXN0cnVjdCBkZW50cnkgKmVudDsKKworCWVudCA9IGRlYnVnZnNfY3JlYXRlX2Rpcigic2xpYyIsIE5VTEwpOworCWlmICghZW50IHx8IElTX0VSUihlbnQpKSB7CisJCXByX2luZm8oUEZYICJkZWJ1Z2ZzIGNyZWF0ZSBkaXJlY3RvcnkgZmFpbGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXNsaWNfZGVidWdmcyA9IGVudDsKK30KKworc3RhdGljIHZvaWQgc2xpY19kZWJ1Z19jbGVhbnVwKHZvaWQpCit7CisJaWYgKHNsaWNfZGVidWdmcykgeworCQlkZWJ1Z2ZzX3JlbW92ZShzbGljX2RlYnVnZnMpOworCQlzbGljX2RlYnVnZnMgPSBOVUxMOworCX0KK30KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgU0xJQyAgRFVNUCAgTUFOQUdFTUVOVCAgICAgICAgU0VDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gRHVtcCByb3V0aW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2lmIFNMSUNfRFVNUF9FTkFCTEVECisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKwordm9pZCAqc2xpY19kdW1wX2hhbmRsZTsJCS8qIHRocmVhZCBoYW5kbGUgKi8KKworLyoKKyAqIFRoZXNlIGFyZSB0aGUgb25seSB0aGluZ3MgeW91IHNob3VsZCBkbyBvbiBhIGNvcmUtZmlsZTogdXNlIG9ubHkgdGhlc2UKKyAqIGZ1bmN0aW9ucyB0byB3cml0ZSBvdXQgYWxsIHRoZSBuZWNlc3NhcnkgaW5mby4KKyAqLworc3RhdGljIGludCBzbGljX2R1bXBfc2VlayhzdHJ1Y3QgZmlsZSAqU0xJQ2hhbmRsZSwgdTMyIGZpbGVfb2Zmc2V0KQoreworCWlmIChTTElDaGFuZGxlLT5mX3BvcyAhPSBmaWxlX29mZnNldCkgeworCQkvKkRCR19NU0coInNsaWNfZHVtcF9zZWVrICBub3cgbmVlZGVkIFsleCA6ICV4XVxuIiwKKwkJCSh1MzIpU0xJQ2hhbmRsZS0+Zl9wb3MsICh1MzIpZmlsZV9vZmZzZXQpOyAqLworCQlpZiAoU0xJQ2hhbmRsZS0+Zl9vcC0+bGxzZWVrKSB7CisJCQlpZiAoU0xJQ2hhbmRsZS0+Zl9vcC0+CisJCQkgICAgbGxzZWVrKFNMSUNoYW5kbGUsIGZpbGVfb2Zmc2V0LCAwKSAhPSBmaWxlX29mZnNldCkKKwkJCQlyZXR1cm4gMDsKKwkJfSBlbHNlIHsKKwkJCVNMSUNoYW5kbGUtPmZfcG9zID0gZmlsZV9vZmZzZXQ7CisJCX0KKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgc2xpY19kdW1wX3dyaXRlKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwKKwkJCSAgIGNvbnN0IHZvaWQgKmFkZHIsIGludCBzaXplLCB1MzIgZmlsZV9vZmZzZXQpCit7CisJaW50IHIgPSAxOworCXUzMiByZXN1bHQgPSAwOworCXN0cnVjdCBmaWxlICpTTElDaGFuZGxlID0gY2FyZC0+ZHVtcGhhbmRsZTsKKworI2lmZGVmIEhJU1RPUklDQUwJCS8qIGxlZ2FjeSAqLworCWRvd24oJlNMSUNoYW5kbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3NlbSk7CisjZW5kaWYKKwlpZiAoc2l6ZSkgeworCQlzbGljX2R1bXBfc2VlayhTTElDaGFuZGxlLCBmaWxlX29mZnNldCk7CisKKwkJcmVzdWx0ID0KKwkJICAgIFNMSUNoYW5kbGUtPmZfb3AtPndyaXRlKFNMSUNoYW5kbGUsIGFkZHIsIHNpemUsCisJCQkJCSAgICAmU0xJQ2hhbmRsZS0+Zl9wb3MpOworCisJCXIgPSByZXN1bHQgPT0gc2l6ZTsKKwl9CisKKwljYXJkLT5kdW1wdGltZV9jb21wbGV0ZSA9IGppZmZpZXM7CisJY2FyZC0+ZHVtcHRpbWVfZGVsdGEgPSBjYXJkLT5kdW1wdGltZV9jb21wbGV0ZSAtIGNhcmQtPmR1bXB0aW1lX3N0YXJ0OworCWNhcmQtPmR1bXB0aW1lX3N0YXJ0ID0gamlmZmllczsKKworI2lmZGVmIEhJU1RPUklDQUwKKwl1cCgmU0xJQ2hhbmRsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2VtKTsKKyNlbmRpZgorCWlmICghcikgeworCQlEQkdfRVJST1IoIiVzOiBhZGRyWyVwXSBzaXplWyV4XSByZXN1bHRbJXhdIGZpbGVfb2Zmc2V0WyV4XVxuIiwKKwkJCSAgX19mdW5jX18sIGFkZHIsIHNpemUsIHJlc3VsdCwgZmlsZV9vZmZzZXQpOworCX0KKwlyZXR1cm4gcjsKK30KKworc3RhdGljIHVpbnQgc2xpY19pbml0X2R1bXBfdGhyZWFkKHN0cnVjdCBzbGljY2FyZCAqY2FyZCkKK3sKKwljYXJkLT5kdW1wX3Rhc2tfaWQgPSBrdGhyZWFkX3J1bihzbGljX2R1bXBfdGhyZWFkLCAodm9pZCAqKWNhcmQsIDApOworCisvKiAgREJHX01TRygiY3JlYXRlIHNsaWNfZHVtcF90aHJlYWQgZHVtcF9waWRbJXhdXG4iLCBjYXJkLT5kdW1wX3BpZCk7ICovCisJaWYgKElTX0VSUihjYXJkLT5kdW1wX3Rhc2tfaWQpKSB7CisJCURCR19NU0coImNyZWF0ZSBzbGljX2R1bXBfdGhyZWFkIEZBSUxFRCBcbiIpOworCQlyZXR1cm4gU1RBVFVTX0ZBSUxVUkU7CisJfQorCisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgaW50IHNsaWNfZHVtcF90aHJlYWQodm9pZCAqY29udGV4dCkKK3sKKwlzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQgPSAoc3RydWN0IHNsaWNjYXJkICopY29udGV4dDsKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKKwlzdHJ1Y3QgYWRhcHRlciAqZHVtcF9hZGFwdGVyID0gTlVMTDsKKwl1MzIgZHVtcF9jb21wbGV0ZSA9IDA7CisJdTMyIGRlbGF5ID0gU0xJQ19TRUNTX1RPX0pJRkZTKFBJTkdfVElNRVJfSU5URVJWQUwpOworCXN0cnVjdCBzbGljX3JlZ3MgKnByZWdzOworCXUzMiBpOworCXN0cnVjdCBzbGljX3VwciAqdXByLCAqdXBybmV4dDsKKwl1MzIgZHVtcF9jYXJkOworCisJQVNTRVJUKGNhcmQpOworCisJY2FyZC0+ZHVtcHRocmVhZF9ydW5uaW5nID0gMTsKKworI2lmZGVmIEhJU1RPUklDQUwKKwlsb2NrX2tlcm5lbCgpOworCS8qCisJICogVGhpcyB0aHJlYWQgZG9lc24ndCBuZWVkIGFueSB1c2VyLWxldmVsIGFjY2VzcywKKwkgKiBzbyBnZXQgcmlkIG9mIGFsbCBvdXIgcmVzb3VyY2VzCisJICovCisJZXhpdF9maWxlcyhjdXJyZW50KTsJLyogZGFlbW9uaXplIGRvZXNuJ3QgZG8gZXhpdF9maWxlcyAqLworCWN1cnJlbnQtPmZpbGVzID0gaW5pdF90YXNrLmZpbGVzOworCWF0b21pY19pbmMoJmN1cnJlbnQtPmZpbGVzLT5jb3VudCk7CisjZW5kaWYKKworCWRhZW1vbml6ZSgiJXMiLCAic2xpY21vbiIpOworCisJLyogU2V0dXAgYSBuaWNlIG5hbWUgKi8KKwlzdHJjcHkoY3VycmVudC0+Y29tbSwgInNsaWNtb24iKTsKKwlEQkdfRVJST1IKKwkgICAgKCJzbGljX2R1bXBfdGhyZWFkW3NsaWNtb25dIGRhZW1vbiBpcyBhbGl2ZSBjYXJkWyVwXSBwaWRbJXhdXG4iLAorCSAgICAgY2FyZCwgY2FyZC0+ZHVtcF90YXNrX2lkLT5waWQpOworCisJLyoKKwkgKiAgICBTZW5kIG1lIGEgc2lnbmFsIHRvIGdldCBtZSB0byBkaWUgKGZvciBkZWJ1Z2dpbmcpCisJICovCisJZG8geworCQkvKgorCQkgKiBJZiBjYXJkIHN0YXRlIGlzIG5vdCBzZXQgdG8gdXAsIHNraXAKKwkJICovCisJCWlmIChjYXJkLT5zdGF0ZSAhPSBDQVJEX1VQKSB7CisJCQlpZiAoY2FyZC0+YWRhcHRlcnNfYWN0aXZhdGVkKQorCQkJCWdvdG8gd2FpdDsKKwkJCWVsc2UKKwkJCQlnb3RvIGVuZF90aHJlYWQ7CisJCX0KKwkJLyoKKwkJICogICAgQ2hlY2sgdGhlIHJlc3VsdHMgb2Ygb3VyIGxhc3QgcGluZy4KKwkJICovCisJCWR1bXBfY2FyZCA9IDA7CisjaWZkZWYgU0xJQ19GQUlMVVJFX0RVTVAKKwkJaWYgKGNhcmQtPnBpbmdzdGF0dXMgIT0gSVNSX1BJTkdNQVNLKSB7CisJCQlEQkdfTVNHCisJCQkgICAgKCJcbltzbGljbW9uXSAgQ0FSRCAjJWQgVElNRUQgT1VUIC0gc3RhdHVzICIKKwkJCSAgICAgIiV4OiBEVU1QIFRIRSBDQVJEIVxuIiwKKwkJCSAgICAgY2FyZC0+Y2FyZG51bSwgY2FyZC0+cGluZ3N0YXR1cyk7CisJCQlkdW1wX2NhcmQgPSAxOworCQl9CisjZWxzZQorCQkvKgorCQkgKiAgQ2F1c2UgYSBjYXJkIFJFU0VUIGluc3RlYWQ/CisJCSAqLworCQlpZiAoY2FyZC0+cGluZ3N0YXR1cyAhPSBJU1JfUElOR01BU0spIHsKKwkJCS8qIHRvZG8uIGRvIHdlIHdhbnQgdG8gcmVzZXQgdGhlIGNhcmQgaW4gcHJvZHVjdGlvbiAqLworCQkJLyogREJHX01TRygiXG5bc2xpY21vbl0gIENBUkQgIyVkIFRJTUVEIE9VVCAtICIKKwkJCSAgIHN0YXR1cyAleDogUkVTRVQgVEhFIENBUkQhXG4iLCBjYXJkLT5jYXJkbnVtLAorCQkJICAgY2FyZC0+cGluZ3N0YXR1cyk7ICovCisJCQlEQkdfRVJST1IKKwkJCSAgICAoIlxuW3NsaWNtb25dICBDQVJEICMlZCBUSU1FRCBPVVQgLSBzdGF0dXMgJXg6ICIKKwkJCSAgICAgIkRVTVAgVEhFIENBUkQhXG4iLAorCQkJICAgICBjYXJkLT5jYXJkbnVtLCBjYXJkLT5waW5nc3RhdHVzKTsKKwkJCWR1bXBfY2FyZCA9IDE7CisJCX0KKyNlbmRpZgorCQlpZiAoKGR1bXBfY2FyZCkKKwkJICAgIHx8IChjYXJkLT5kdW1wX3JlcXVlc3RlZCA9PSBTTElDX0RVTVBfUkVRVUVTVEVEKSkgeworCQkJaWYgKGNhcmQtPmR1bXBfcmVxdWVzdGVkID09IFNMSUNfRFVNUF9SRVFVRVNURUQpIHsKKwkJCQlEQkdfRVJST1IKKwkJCSAgICAoIltzbGljbW9uXTogRHVtcCBjYXJkIFJlcXVlc3RlZDogQ2FyZCAleFxuIiwKKwkJCQkgICAgIGNhcmQtPmNhcmRudW0pOworCQkJfQorCQkJaWYgKGNhcmQtPnBpbmdzdGF0dXMgIT0gSVNSX1BJTkdNQVNLKSB7CisJCQkJdXNob3J0IGNwdWlkID0gMDsKKwkJCQl1c2hvcnQgY3Jhc2hwYyA9IDA7CisKKwkJCQlpZiAoY2FyZC0+YWRhcHRlclswXSkgeworCQkJCQlpZiAoKGNhcmQtPmFkYXB0ZXJbMF0pLT5tZW1vcnlsZW5ndGggPj0KKwkJCQkJICAgIENSQVNIX0lORk9fT0ZGU0VUICsKKwkJCQkJICAgIHNpemVvZihzbGljX2NyYXNoX2luZm8pKSB7CisJCQkJCQljaGFyICpjcmFzaHB0cjsKKwkJCQkJCXBfc2xpY19jcmFzaF9pbmZvIGNyYXNoaW5mbzsKKworCQkJCQkJY3Jhc2hwdHIgPQorCQkJCQkJICAgICgoY2hhciAqKWNhcmQtPmFkYXB0ZXJbMF0tPgorCQkJCQkJICAgICBzbGljX3JlZ3MpICsKKwkJCQkJCSAgICBDUkFTSF9JTkZPX09GRlNFVDsKKwkJCQkJCWNyYXNoaW5mbyA9CisJCQkJCQkgICAgKHBfc2xpY19jcmFzaF9pbmZvKQorCQkJCQkJICAgIGNyYXNocHRyOworCQkJCQkJY3B1aWQgPSBjcmFzaGluZm8tPmNwdV9pZDsKKwkJCQkJCWNyYXNocGMgPSBjcmFzaGluZm8tPmNyYXNoX3BjOworCQkJCQl9CisJCQkJfQorCQkJCURCR19FUlJPUgorCQkJCSAgICAoIltzbGljbW9uXTogRHVtcCBjYXJkOiBDYXJkICV4IGNyYXNoZWQgIgorCQkJCSAgICAgImFuZCBmYWlsZWQgdG8gYW5zd2VyIFBJTkcuICIKKwkJCQkgICAgICJDUFVJRFsleF0gUENbJXhdXG4gIiwKKwkJCQkgICAgIGNhcmQtPmNhcmRudW0sIGNwdWlkLCBjcmFzaHBjKTsKKwkJCX0KKworCQkJY2FyZC0+ZHVtcF9yZXF1ZXN0ZWQgPSBTTElDX0RVTVBfSU5fUFJPR1JFU1M7CisKKwkJCS8qCisJCQkgKiBTZXQgdGhlIGNhcmQgc3RhdGUgdG8gRE9XTiBhbmQgdGhlIGFkYXB0ZXIgc3RhdGVzCisJCQkgKiB0byBSRVNFVC5UaGV5IHdpbGwgY2hlY2sgdGhpcyBpbiBTaW1iYUNoZWNrRm9ySGFuZworCQkJICogYW5kIGluaXRpYXRlIGludGVyZmFjZSByZXNldCAod2hpY2ggaW4gdHVybiB3aWxsCisJCQkgKiByZWluaXRpYWxpemUgdGhlIGNhcmQpLgorCQkJICovCisJCQljYXJkLT5zdGF0ZSA9IENBUkRfRE9XTjsKKworCQkJZm9yIChpID0gMDsgaSA8IGNhcmQtPmNhcmRfc2l6ZTsgaSsrKSB7CisJCQkJYWRhcHRlciA9IGNhcmQtPmFkYXB0ZXJbaV07CisJCQkJaWYgKGFkYXB0ZXIpIHsKKwkJCQkJc2xpY19pZl9zdG9wX3F1ZXVlKGFkYXB0ZXIpOworCisJCQkJCWlmIChhZGFwdGVyLT5zdGF0ZSA9PSBBREFQVF9VUCkgeworCQkJCQkJYWRhcHRlci0+c3RhdGUgPSBBREFQVF9SRVNFVDsKKwkJCQkJCWFkYXB0ZXItPmxpbmtzdGF0ZSA9IExJTktfRE9XTjsKKwkJCQkJCURCR19FUlJPUgorCQkJCQkJICAgICgiW3NsaWNtb25dOiBTTElDIENhcmRbJWRdICIKKwkJCQkJCSAgICAgIlBvcnRbJWRdIGFkYXB0ZXJbJXBdICIKKwkJCQkJCSAgICAgImRvd25cbiIsCisJCQkJCQkgICAgICh1aW50KSBjYXJkLT5jYXJkbnVtLAorCQkJCQkJICAgICAodWludCkgaSwgYWRhcHRlcik7CisJCQkJCX0KKyNpZiBTTElDX0dFVF9TVEFUU19USU1FUl9FTkFCTEVECisJCQkJCS8qIGZyZWUgc3RhdHMgdGltZXIgKi8KKwkJCQkJaWYgKGFkYXB0ZXItPnN0YXRzdGltZXJzZXQpIHsKKwkJCQkJCWFkYXB0ZXItPnN0YXRzdGltZXJzZXQgPSAwOworCQkJCQkJZGVsX3RpbWVyKCZhZGFwdGVyLT5zdGF0c3RpbWVyKTsKKwkJCQkJfQorI2VuZGlmCisJCQkJfQorCQkJfQorCisJCQlmb3IgKGkgPSAwOyBpIDwgY2FyZC0+Y2FyZF9zaXplOyBpKyspIHsKKwkJCQlhZGFwdGVyID0gY2FyZC0+YWRhcHRlcltpXTsKKwkJCQlpZiAoKGFkYXB0ZXIpICYmIChhZGFwdGVyLT5hY3RpdmF0ZWQpKSB7CisJCQkJCXByZWdzID0gYWRhcHRlci0+c2xpY19yZWdzOworCQkJCQlkdW1wX2FkYXB0ZXIgPSBhZGFwdGVyOworCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBkdW1wIHN0YXR1cyBpcyB6ZXJvLCB0aGVuCisJCQkJCSAqIHRoZSB1dGlsaXR5IHByb2Nlc3NvciBoYXMgY3Jhc2hlZC4KKwkJCQkJICogSWYgdGhpcyBpcyB0aGUgY2FzZSwgYW55IHBlbmRpbmcKKwkJCQkJICogdXRpbGl0eXByb2Nlc3NvciByZXF1ZXN0cyB3aWxsIG5vdAorCQkJCQkgKiBjb21wbGV0ZSBhbmQgb3VyIGR1bXAgY29tbWFuZHMgd2lsbAorCQkJCQkgKiBub3QgYmUgaXNzdWVkLgorCQkJCQkgKgorCQkJCQkgKiBUbyBhdm9pZCB0aGlzIHdlIHdpbGwgY2xlYXIgYW55CisJCQkJCSAqIHBlbmRpbmcgdXRpbGl0eSBwcm9jZXNzb3IgcmVxdWVzdHMKKwkJCQkJICogbm93LgorCQkJCQkgKi8KKwkJCQkJaWYgKCFjYXJkLT5waW5nc3RhdHVzKSB7CisJCQkJCQlzcGluX2xvY2tfaXJxc2F2ZSgKKwkJCQkJCSAgICAmYWRhcHRlci0+dXByX2xvY2subG9jaywKKwkJCQkJCSAgICBhZGFwdGVyLT51cHJfbG9jay5mbGFncyk7CisJCQkJCQl1cHIgPSBhZGFwdGVyLT51cHJfbGlzdDsKKwkJCQkJCXdoaWxlICh1cHIpIHsKKwkJCQkJCQl1cHJuZXh0ID0gdXByLT5uZXh0OworCQkJCQkJCWtmcmVlKHVwcik7CisJCQkJCQkJdXByID0gdXBybmV4dDsKKwkJCQkJCX0KKwkJCQkJCWFkYXB0ZXItPnVwcl9saXN0ID0gMDsKKwkJCQkJCWFkYXB0ZXItPnVwcl9idXN5ID0gMDsKKwkJCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoCisJCQkJCQkgICAgJmFkYXB0ZXItPnVwcl9sb2NrLmxvY2ssCisJCQkJCQkgICAgYWRhcHRlci0+dXByX2xvY2suZmxhZ3MpOworCQkJCQl9CisKKwkJCQkJc2xpY19kdW1wX2NhcmQoY2FyZCwgRkFMU0UpOworCQkJCQlkdW1wX2NvbXBsZXRlID0gMTsKKwkJCQl9CisKKwkJCQlpZiAoZHVtcF9jb21wbGV0ZSkgeworCQkJCQlEQkdfRVJST1IoIlNMSUMgRHVtcCBDb21wbGV0ZVxuIik7CisJCQkJCS8qICBPbmx5IGR1bXAgdGhlIGNhcmQgb25lIHRpbWUgKi8KKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZHVtcF9hZGFwdGVyKSB7CisJCQkJREJHX0VSUk9SCisJCQkJICAgICgic2xpYyBkdW1wIGNvbXBsZXRlZC4gIgorCQkJCSAgICAgIlJlZW5hYmxlIGludGVyZmFjZXNcbiIpOworCQkJCXNsaWNfY2FyZF9pbml0KGNhcmQsIGR1bXBfYWRhcHRlcik7CisKKwkJCQkvKgorCQkJCSAqICBSZWVuYWJsZSB0aGUgYWRhcHRlcnMgdGhhdCB3ZXJlIHJlc2V0CisJCQkJICovCisJCQkJZm9yIChpID0gMDsgaSA8IGNhcmQtPmNhcmRfc2l6ZTsgaSsrKSB7CisJCQkJCWFkYXB0ZXIgPSBjYXJkLT5hZGFwdGVyW2ldOworCQkJCQlpZiAoYWRhcHRlcikgeworCQkJCQkJaWYgKGFkYXB0ZXItPnN0YXRlID09CisJCQkJCQkgICAgQURBUFRfUkVTRVQpIHsKKwkJCQkJCQlEQkdfRVJST1IKKwkJCQkJCQkgICAgKCJzbGljZHVtcDogU0xJQyAiCisJCQkJCSAgICJDYXJkWyVkXSBQb3J0WyVkXSBhZGFwdGVyWyVwXSAiCisJCQkJCSAgICJicmluZyBVUFxuIiwKKwkJCQkJCQkgICAgICh1aW50KSBjYXJkLT4KKwkJCQkJCQkgICAgIGNhcmRudW0sICh1aW50KSBpLAorCQkJCQkJCSAgICAgYWRhcHRlcik7CisJCQkJCQkJYWRhcHRlci0+c3RhdGUgPQorCQkJCQkJCSAgICBBREFQVF9ET1dOOworCQkJCQkJCWFkYXB0ZXItPmxpbmtzdGF0ZSA9CisJCQkJCQkJICAgIExJTktfRE9XTjsKKwkJCQkJCQlzbGljX2VudHJ5X29wZW4KKwkJCQkJCQkgICAgKGFkYXB0ZXItPm5ldGRldik7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKKwkJCQljYXJkLT5kdW1wX3JlcXVlc3RlZCA9IFNMSUNfRFVNUF9ET05FOworCQkJfQorCQl9IGVsc2UgeworCQkvKiBpZiBwaW5nc3RhdHVzICE9IElTUl9QSU5HTUFTSykgfHwgZHVtcF9yZXF1ZXN0ZWQuLi5FTFNFCisJCSAqICAgIFdlIHJlY2VpdmVkIGEgdmFsaWQgcGluZyByZXNwb25zZS4KKwkJICogICAgQ2xlYXIgdGhlIFBpbmdzdGF0dXMgZmllbGQsIGZpbmQgYSB2YWxpZCBhZGFwdGVyCisJCSAqICAgIHN0cnVjdHVyZSBhbmQgc2VuZCBhbm90aGVyIHBpbmcuCisJCSAqLworCQkJZm9yIChpID0gMDsgaSA8IGNhcmQtPmNhcmRfc2l6ZTsgaSsrKSB7CisJCQkJYWRhcHRlciA9IGNhcmQtPmFkYXB0ZXJbaV07CisJCQkJaWYgKGFkYXB0ZXIgJiYgKGFkYXB0ZXItPnN0YXRlID09IEFEQVBUX1VQKSkgeworCQkJCQljYXJkLT5waW5nc3RhdHVzID0gMDsKKwkJCQkJc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLCBTTElDX1VQUl9QSU5HLAorCQkJCQkJCSAwLCAwLCAwLCAwKTsKKwkJCQkJYnJlYWs7CS8qIE9ubHkgaXNzdWUgb25lIHBlciBjYXJkICovCisJCQkJfQorCQkJfQorCQl9Cit3YWl0OgorCQlTTElDX0lOVEVSUlVQVElCTEVfU0xFRVBfT05fVElNRU9VVChjYXJkLT5kdW1wX3dxLCBkZWxheSk7CisJfSB3aGlsZSAoIXNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKTsKKworZW5kX3RocmVhZDoKKy8qICBEQkdfTVNHKCJbc2xpY21vbl0gc2xpY19kdW1wX3RocmVhZCBjYXJkWyVwXSBwaWRbJXhdIEVORElOR1xuIiwKKyAgICBjYXJkLCBjYXJkLT5kdW1wX3BpZCk7ICovCisJY2FyZC0+ZHVtcHRocmVhZF9ydW5uaW5nID0gMDsKKworCXJldHVybiAwOworfQorCisvKgorICogUmVhZCBhIHNpbmdsZSBieXRlIGZyb20gb3VyIGR1bXAgaW5kZXggZmlsZS4gIFRoaXMKKyAqIHZhbHVlIGlzIHVzZWQgYXMgb3VyIHN1ZmZpeCBmb3Igb3VyIGR1bXAgcGF0aC4gIFRoZQorICogdmFsdWUgaXMgaW5jcmVtZW50ZWQgYW5kIHdyaXR0ZW4gYmFjayB0byB0aGUgZmlsZQorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBzbGljX2dldF9kdW1wX2luZGV4KGNoYXIgKnBhdGgpCit7CisJdW5zaWduZWQgY2hhciBpbmRleCA9IDA7CisjaWZkZWYgU0xJQ19EVU1QX0lOREVYX1NVUFBPUlQKKwl1MzIgc3RhdHVzOworCXZvaWQgKkZpbGVIYW5kbGU7CisJdTMyIG9mZnNldDsKKworCW9mZnNldCA9IDA7CisKKwkvKgorCSAqIE9wZW4gdGhlIGluZGV4IGZpbGUuICBJZiBvbmUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGl0CisJICovCisJc3RhdHVzID0gY3JlYXRlX2ZpbGUoJkZpbGVIYW5kbGUpOworCisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykKKwkJcmV0dXJuICh1bnNpZ25lZCBjaGFyKSAwOworCisJc3RhdHVzID0gcmVhZF9maWxlKEZpbGVIYW5kbGUsICZpbmRleCwgMSwgJm9mZnNldCk7CisKKwlpbmRleCsrOworCisJc3RhdHVzID0gd3JpdGVfZmlsZShGaWxlSGFuZGxlLCAmaW5kZXgsIDEsICZvZmZzZXQpOworCisJY2xvc2VfZmlsZShGaWxlSGFuZGxlKTsKKyNlbHNlCisJaW5kZXggPSAwOworI2VuZGlmCisJcmV0dXJuIGluZGV4OworfQorCitzdGF0aWMgc3RydWN0IGZpbGUgKnNsaWNfZHVtcF9vcGVuX2ZpbGUoc3RydWN0IHNsaWNjYXJkICpjYXJkKQoreworCXN0cnVjdCBmaWxlICpTTElDaGFuZGxlID0gTlVMTDsKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBOVUxMOworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBOVUxMOworCWNoYXIgU0xJQ2ZpbGVbNTBdOworCisJY2FyZC0+ZHVtcGZpbGVfZnMgPSBnZXRfZnMoKTsKKworCXNldF9mcyhLRVJORUxfRFMpOworCisJbWVtc2V0KFNMSUNmaWxlLCAwLCBzaXplb2YoU0xJQ2ZpbGUpKTsKKwlzcHJpbnRmKFNMSUNmaWxlLCAiL3Zhci90bXAvc2xpYyVkLWR1bXAtJWQiLCBjYXJkLT5jYXJkbnVtLAorCQkodWludCkgY2FyZC0+ZHVtcF9jb3VudCk7CisJY2FyZC0+ZHVtcF9jb3VudCsrOworCisJU0xJQ2hhbmRsZSA9CisJICAgIGZpbHBfb3BlbihTTElDZmlsZSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fU1lOQyB8IE9fTEFSR0VGSUxFLCAwNjY2KTsKKworCURCR19NU0coIltzbGljbW9uXTogRHVtcCBDYXJkICMlZCB0byBmaWxlOiAlcyBcbiIsIGNhcmQtPmNhcmRudW0sCisJCVNMSUNmaWxlKTsKKworLyogIERCR19NU0coIltzbGljbW9uXSBmaWxwX29wZW4gJXMgU0xJQ2hhbmRsZVslcF1cbiIsIFNMSUNmaWxlLCBTTElDaGFuZGxlKTsqLworCisJaWYgKElTX0VSUihTTElDaGFuZGxlKSkKKwkJZ290byBlbmRfc2xpY2R1bXA7CisKKwlkZW50cnkgPSBTTElDaGFuZGxlLT5mX2RlbnRyeTsKKwlpbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKKworLyogIERCR19NU0coIltzbGljbW9uXSBpbm9kZVslcF0gaV9ubGlua1sleF0gaV9tb2RlWyV4XSBpX29wWyVwXSBpX2ZvcFslcF1cbiIKKwkJImZfb3AtPndyaXRlWyVwXVxuIiwKKwkJaW5vZGUsIGlub2RlLT5pX25saW5rLCBpbm9kZS0+aV9tb2RlLCBpbm9kZS0+aV9vcCwKKwkJaW5vZGUtPmlfZm9wLCBTTElDaGFuZGxlLT5mX29wLT53cml0ZSk7ICovCisJaWYgKGlub2RlLT5pX25saW5rID4gMSkKKwkJZ290byBjbG9zZV9zbGljZHVtcDsJLyogbXVsdGlwbGUgbGlua3MgLSBkb24ndCBkdW1wICovCisjaWZkZWYgSElTVE9SSUNBTAorCWlmICghU19JU1JFRyhpbm9kZS0+aV9tb2RlKSkKKwkJZ290byBjbG9zZV9zbGljZHVtcDsKKyNlbmRpZgorCWlmICghaW5vZGUtPmlfb3AgfHwgIWlub2RlLT5pX2ZvcCkKKwkJZ290byBjbG9zZV9zbGljZHVtcDsKKworCWlmICghU0xJQ2hhbmRsZS0+Zl9vcC0+d3JpdGUpCisJCWdvdG8gY2xvc2Vfc2xpY2R1bXA7CisKKwkvKgorCSAqICBJZiB3ZSBnb3QgaGVyZSB3ZSBoYXZlIFNVQ0NFU1NGVUxMWSBPUEVORUQgdGhlIGR1bXAgZmlsZQorCSAqLworLyogIERCR19NU0coIm9wZW5lZCAlcyBTTElDaGFuZGxlWyVwXVxuIiwgU0xJQ2ZpbGUsIFNMSUNoYW5kbGUpOyAqLworCXJldHVybiBTTElDaGFuZGxlOworCitjbG9zZV9zbGljZHVtcDoKKwlEQkdfTVNHKCJbc2xpY21vbl0gc2xpY19kdW1wX29wZW5fZmlsZSBmYWlsZWQgY2xvc2UgU0xJQ2hhbmRsZVslcF1cbiIsCisJCVNMSUNoYW5kbGUpOworCWZpbHBfY2xvc2UoU0xJQ2hhbmRsZSwgTlVMTCk7CisKK2VuZF9zbGljZHVtcDoKKwlzZXRfZnMoY2FyZC0+ZHVtcGZpbGVfZnMpOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHNsaWNfZHVtcF9jbG9zZV9maWxlKHN0cnVjdCBzbGljY2FyZCAqY2FyZCkKK3sKKworLyogIERCR19NU0coIltzbGljbW9uXSBzbGljX2R1bXBfQ0xPU0VfZmlsZSBjbG9zZSBTTElDaGFuZGxlWyVwXVxuIiwKKyAgIGNhcmQtPmR1bXBoYW5kbGUpOyAqLworCisJZmlscF9jbG9zZShjYXJkLT5kdW1waGFuZGxlLCBOVUxMKTsKKworCXNldF9mcyhjYXJkLT5kdW1wZmlsZV9mcyk7Cit9CisKK3N0YXRpYyB1MzIgc2xpY19kdW1wX2NhcmQoc3RydWN0IHNsaWNjYXJkICpjYXJkLCBib29sIHJlc3VtZSkKK3sKKwlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IGNhcmQtPm1hc3RlcjsKKwl1MzIgc3RhdHVzOworCXUzMiBxdWV1ZTsKKwl1MzIgbGVuLCBvZmZzZXQ7CisJdTMyIHNyYW1fc2l6ZSwgZHJhbV9zaXplLCByZWdzOworCXN0cnVjdCBzbGljY29yZV9oZHIgY29yZWhkcjsKKwl1MzIgZmlsZV9vZmZzZXQ7CisJY2hhciAqbmFtZXN0cjsKKwl1MzIgaTsKKwl1MzIgbWF4X3F1ZXVlcyA9IDA7CisJdTMyIHJlc3VsdDsKKworCWNhcmQtPmR1bXBoYW5kbGUgPSBzbGljX2R1bXBfb3Blbl9maWxlKGNhcmQpOworCisJaWYgKGNhcmQtPmR1bXBoYW5kbGUgPT0gTlVMTCkgeworCQlEQkdfTVNHKCJbc2xpY21vbl0gQ2FudCBjcmVhdGUgRHVtcCBmaWxlIC0gZHVtcCBmYWlsZWRcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJaWYgKCFjYXJkLT5kdW1wYnVmZmVyKSB7CisJCURCR19NU0coIltzbGljbW9uXSBJbnN1ZmZpY2llbnQgbWVtb3J5IGZvciBkdW1wXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCWlmICghY2FyZC0+Y21kYnVmZmVyKSB7CisJCURCR19NU0coIltzbGljbW9uXSBJbnN1ZmZpY2llbnQgY21kIG1lbW9yeSBmb3IgZHVtcFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qCisJICogV3JpdGUgdGhlIGZpbGUgdmVyc2lvbiB0byB0aGUgY29yZSBoZWFkZXIuCisJICovCisJbmFtZXN0ciA9IHNsaWNfcHJvY192ZXJzaW9uOworCWZvciAoaSA9IDA7IGkgPCAoRFJJVkVSX05BTUVfU0laRSAtIDEpOyBpKyssIG5hbWVzdHIrKykgeworCQlpZiAoIW5hbWVzdHIpCisJCQlicmVhazsKKwkJY29yZWhkci5kcml2ZXJfdmVyc2lvbltpXSA9ICpuYW1lc3RyOworCX0KKwljb3JlaGRyLmRyaXZlcl92ZXJzaW9uW2ldID0gMDsKKworCWZpbGVfb2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCBzbGljY29yZV9oZHIpOworCisJLyoKKwkgKiBJc3N1ZSB0aGUgZm9sbG93aW5nIGRlYnVnIGNvbW1hbmRzIHRvIHRoZSBTTElDOgorCSAqICAgICAgICAtIEhhbHQgYm90aCByZWNlaXZlIGFuZCB0cmFuc21pdAorCSAqICAgICAgICAtIER1bXAgcmVjZWl2ZSByZWdpc3RlcnMKKwkgKiAgICAgICAgLSBEdW1wIHRyYW5zbWl0IHJlZ2lzdGVycworCSAqICAgICAgICAtIER1bXAgc3JhbQorCSAqICAgICAgICAtIER1bXAgZHJhbQorCSAqICAgICAgICAtIER1bXAgcXVldWVzCisJICovCisJREJHX01TRygic2xpY0R1bXAgSEFMVCBSZWNlaXZlIFByb2Nlc3NvclxuIik7CisJY2FyZC0+ZHVtcHRpbWVfc3RhcnQgPSBqaWZmaWVzOworCisJc3RhdHVzID0gc2xpY19kdW1wX2hhbHQoY2FyZCwgUFJPQ19SRUNFSVZFKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCURCR19FUlJPUgorCQkgICAgKCJDYW50IGhhbHQgcmVjZWl2ZSBzZXF1ZW5jZXIgLSBkdW1wIGZhaWxlZCBzdGF0dXNbJXhdXG4iLAorCQkgICAgIHN0YXR1cyk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwlEQkdfTVNHKCJzbGljRHVtcCBIQUxUIFRyYW5zbWl0IFByb2Nlc3NvclxuIik7CisJc3RhdHVzID0gc2xpY19kdW1wX2hhbHQoY2FyZCwgUFJPQ19UUkFOU01JVCk7CisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQlEQkdfRVJST1IoIkNhbnQgaGFsdCB0cmFuc21pdCBzZXF1ZW5jZXIgLSBkdW1wIGZhaWxlZFxuIik7CisJCWdvdG8gZG9uZTsKKwl9CisKKwkvKiBEdW1wIHJlY2VpdmUgcmVncyAqLworCXN0YXR1cyA9IHNsaWNfZHVtcF9yZWcoY2FyZCwgUFJPQ19SRUNFSVZFKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCURCR19FUlJPUigiQ2FudCBkdW1wIHJlY2VpdmUgcmVnaXN0ZXJzIC0gZHVtcCBmYWlsZWRcbiIpOworCQlnb3RvIGRvbmU7CisJfQorCisJREJHX01TRygic2xpY0R1bXAgV3JpdGUgUmVjZWl2ZSBSRUdTIGxlblsleF0gb2Zmc2V0WyV4XVxuIiwKKwkJKFNMSUNfTlVNX1JFRyAqIDQpLCBmaWxlX29mZnNldCk7CisKKwlyZXN1bHQgPQorCSAgICBzbGljX2R1bXBfd3JpdGUoY2FyZCwgY2FyZC0+ZHVtcGJ1ZmZlciwgU0xJQ19OVU1fUkVHICogNCwKKwkJCSAgICBmaWxlX29mZnNldCk7CisJaWYgKCFyZXN1bHQpIHsKKwkJREJHX0VSUk9SCisJCSAgICAoIkNhbnQgd3JpdGUgcmN2IHJlZ2lzdGVycyB0byBkdW1wIGZpbGUgLSBkdW1wIGZhaWxlZFxuIik7CisJCWdvdG8gZG9uZTsKKwl9CisKKwljb3JlaGRyLlJjdlJlZ09mZiA9IGZpbGVfb2Zmc2V0OworCWNvcmVoZHIuUmN2UmVnc2l6ZSA9IFNMSUNfTlVNX1JFRyAqIDQ7CisJZmlsZV9vZmZzZXQgKz0gU0xJQ19OVU1fUkVHICogNDsKKworCS8qIER1bXAgdHJhbnNtaXQgcmVncyAqLworCXN0YXR1cyA9IHNsaWNfZHVtcF9yZWcoY2FyZCwgUFJPQ19UUkFOU01JVCk7CisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQlEQkdfRVJST1IoIkNhbnQgZHVtcCB0cmFuc21pdCByZWdpc3RlcnMgLSBkdW1wIGZhaWxlZFxuIik7CisJCWdvdG8gZG9uZTsKKwl9CisKKwlEQkdfTVNHKCJzbGljRHVtcCBXcml0ZSBYTUlUIFJFR1MgbGVuWyV4XSBvZmZzZXRbJXhdXG4iLAorCQkoU0xJQ19OVU1fUkVHICogNCksIGZpbGVfb2Zmc2V0KTsKKworCXJlc3VsdCA9CisJICAgIHNsaWNfZHVtcF93cml0ZShjYXJkLCBjYXJkLT5kdW1wYnVmZmVyLCBTTElDX05VTV9SRUcgKiA0LAorCQkJICAgIGZpbGVfb2Zmc2V0KTsKKwlpZiAoIXJlc3VsdCkgeworCQlEQkdfRVJST1IKKwkJICAgICgiQ2FudCB3cml0ZSB4bXQgcmVnaXN0ZXJzIHRvIGR1bXAgZmlsZSAtIGR1bXAgZmFpbGVkXG4iKTsKKwkJZ290byBkb25lOworCX0KKworCWNvcmVoZHIuWG10UmVnT2ZmID0gZmlsZV9vZmZzZXQ7CisJY29yZWhkci5YbXRSZWdzaXplID0gU0xJQ19OVU1fUkVHICogNDsKKwlmaWxlX29mZnNldCArPSBTTElDX05VTV9SRUcgKiA0OworCisJcmVncyA9IFNMSUNfR0JNQVhfUkVHOworCisJY29yZWhkci5GaWxlUmVnT2ZmID0gZmlsZV9vZmZzZXQ7CisJY29yZWhkci5GaWxlUmVnc2l6ZSA9IHJlZ3MgKiA0OworCisJZm9yIChvZmZzZXQgPSAwOyByZWdzOykgeworCQlsZW4gPSBNSU4ocmVncywgMTYpOwkvKiBDYW4gb25seSB4ZnIgMTYgcmVncyBhdCBhIHRpbWUgKi8KKworCQlzdGF0dXMgPSBzbGljX2R1bXBfZGF0YShjYXJkLCBvZmZzZXQsICh1c2hvcnQpIGxlbiwgREVTQ19SRklMRSk7CisKKwkJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQkJREJHX0VSUk9SKCJDYW50IGR1bXAgcmVnaXN0ZXIgZmlsZSAtIGR1bXAgZmFpbGVkXG4iKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCURCR19NU0coInNsaWNEdW1wIFdyaXRlIFJlZ2lzdGVyRmlsZSBsZW5bJXhdIG9mZnNldFsleF1cbiIsCisJCQkobGVuICogNCksIGZpbGVfb2Zmc2V0KTsKKworCQlyZXN1bHQgPQorCQkgICAgc2xpY19kdW1wX3dyaXRlKGNhcmQsIGNhcmQtPmR1bXBidWZmZXIsIGxlbiAqIDQsCisJCQkJICAgIGZpbGVfb2Zmc2V0KTsKKwkJaWYgKCFyZXN1bHQpIHsKKwkJCURCR19FUlJPUgorCQkJICAgICgiQ2FudCB3cml0ZSByZWdpc3RlciBmaWxlIHRvIGR1bXAgZmlsZSAtICIKKwkJCSAgICAgImR1bXAgZmFpbGVkXG4iKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWZpbGVfb2Zmc2V0ICs9IGxlbiAqIDQ7CisJCW9mZnNldCArPSBsZW47CisJCXJlZ3MgLT0gbGVuOworCX0KKworCWRyYW1fc2l6ZSA9IGNhcmQtPmNvbmZpZy5EcmFtU2l6ZSAqIDB4MTAwMDA7CisKKwlzd2l0Y2ggKGFkYXB0ZXItPmRldmlkKSB7CisJY2FzZSBTTElDXzJHQl9ERVZJQ0VfSUQ6CisJCXNyYW1fc2l6ZSA9IFNMSUNfU1JBTV9TSVpFMkdCOworCQlicmVhazsKKwljYXNlIFNMSUNfMUdCX0RFVklDRV9JRDoKKwkJc3JhbV9zaXplID0gU0xJQ19TUkFNX1NJWkUxR0I7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXNyYW1fc2l6ZSA9IDA7CisJCUFTU0VSVCgwKTsKKwkJYnJlYWs7CisJfQorCisJY29yZWhkci5TcmFtT2ZmID0gZmlsZV9vZmZzZXQ7CisJY29yZWhkci5TcmFtc2l6ZSA9IHNyYW1fc2l6ZTsKKworCWZvciAob2Zmc2V0ID0gMDsgc3JhbV9zaXplOykgeworCQlsZW4gPSBNSU4oc3JhbV9zaXplLCBEVU1QX0JVRl9TSVpFKTsKKwkJc3RhdHVzID0gc2xpY19kdW1wX2RhdGEoY2FyZCwgb2Zmc2V0LCAodXNob3J0KSBsZW4sIERFU0NfU1JBTSk7CisJCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpIHsKKwkJCURCR19FUlJPUgorCQkJICAgICgiW3NsaWNtb25dIENhbnQgZHVtcCBTUkFNIGF0IG9mZnNldCAleCAtICIKKwkJCSAgICAgImR1bXAgZmFpbGVkXG4iLCAodWludCkgb2Zmc2V0KTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCURCR19NU0coIltzbGljbW9uXSBzbGljRHVtcCBXcml0ZSBTUkFNICBsZW5bJXhdIG9mZnNldFsleF1cbiIsCisJCQlsZW4sIGZpbGVfb2Zmc2V0KTsKKworCQlyZXN1bHQgPQorCQkgICAgc2xpY19kdW1wX3dyaXRlKGNhcmQsIGNhcmQtPmR1bXBidWZmZXIsIGxlbiwgZmlsZV9vZmZzZXQpOworCQlpZiAoIXJlc3VsdCkgeworCQkJREJHX0VSUk9SCisJCQkgICAgKCJbc2xpY21vbl0gQ2FudCB3cml0ZSBTUkFNIHRvIGR1bXAgZmlsZSAtICIKKwkJCSAgICAgImR1bXAgZmFpbGVkXG4iKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWZpbGVfb2Zmc2V0ICs9IGxlbjsKKwkJb2Zmc2V0ICs9IGxlbjsKKwkJc3JhbV9zaXplIC09IGxlbjsKKwl9CisKKwljb3JlaGRyLkRyYW1PZmYgPSBmaWxlX29mZnNldDsKKwljb3JlaGRyLkRyYW1zaXplID0gZHJhbV9zaXplOworCisJZm9yIChvZmZzZXQgPSAwOyBkcmFtX3NpemU7KSB7CisJCWxlbiA9IE1JTihkcmFtX3NpemUsIERVTVBfQlVGX1NJWkUpOworCisJCXN0YXR1cyA9IHNsaWNfZHVtcF9kYXRhKGNhcmQsIG9mZnNldCwgKHVzaG9ydCkgbGVuLCBERVNDX0RSQU0pOworCQlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCQlEQkdfRVJST1IKKwkJCSAgICAoIltzbGljbW9uXSBDYW50IGR1bXAgZHJhbSBhdCBvZmZzZXQgJXggLSAiCisJCQkgICAgICJkdW1wIGZhaWxlZFxuIiwgKHVpbnQpIG9mZnNldCk7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQlEQkdfTVNHKCJzbGljRHVtcCBXcml0ZSBEUkFNICBsZW5bJXhdIG9mZnNldFsleF1cbiIsIGxlbiwKKwkJCWZpbGVfb2Zmc2V0KTsKKworCQlyZXN1bHQgPQorCQkgICAgc2xpY19kdW1wX3dyaXRlKGNhcmQsIGNhcmQtPmR1bXBidWZmZXIsIGxlbiwgZmlsZV9vZmZzZXQpOworCQlpZiAoIXJlc3VsdCkgeworCQkJREJHX0VSUk9SCisJCQkgICAgKCJbc2xpY21vbl0gQ2FudCB3cml0ZSBEUkFNIHRvIGR1bXAgZmlsZSAtICIKKwkJCSAgICAgImR1bXAgZmFpbGVkXG4iKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWZpbGVfb2Zmc2V0ICs9IGxlbjsKKwkJb2Zmc2V0ICs9IGxlbjsKKwkJZHJhbV9zaXplIC09IGxlbjsKKwl9CisKKwltYXhfcXVldWVzID0gU0xJQ19NQVhfUVVFVUU7CisKKwlmb3IgKHF1ZXVlID0gMDsgcXVldWUgPCBtYXhfcXVldWVzOyBxdWV1ZSsrKSB7CisJCXUzMiAqcWFycmF5ID0gKHUzMiAqKSBjYXJkLT5kdW1wYnVmZmVyOworCQl1MzIgcWFycmF5X3BoeXNsID0gY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzbDsKKwkJdTMyIHFhcnJheV9waHlzaCA9IGNhcmQtPmR1bXBidWZmZXJfcGh5c2g7CisJCXUzMiBxc3RhcnQ7CisJCXUzMiBxZGVsdGE7CisJCXUzMiBxdG90YWwgPSAwOworCisJCURCR19NU0coIltzbGljbW9uXSBTdGFydCBEdW1wIG9mIFFVRVVFICMweCV4XG4iLCAodWludCkgcXVldWUpOworCisJCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgKERVTVBfQlVGX1NJWkUgPj4gMik7IG9mZnNldCsrKSB7CisJCQlxc3RhcnQgPSBqaWZmaWVzOworCQkJcWRlbHRhID0gMDsKKworCQkJc3RhdHVzID0gc2xpY19kdW1wX3F1ZXVlKGNhcmQsCisJCQkJCQkgcWFycmF5X3BoeXNsLAorCQkJCQkJIHFhcnJheV9waHlzaCwgcXVldWUpOworCQkJcWFycmF5X3BoeXNsICs9IDQ7CisKKwkJCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCQkJYnJlYWs7CisKKwkJCWlmIChqaWZmaWVzID4gcXN0YXJ0KSB7CisJCQkJcWRlbHRhID0gamlmZmllcyAtIHFzdGFydDsKKwkJCQlxdG90YWwgKz0gcWRlbHRhOworCQkJfQorCQl9CisKKwkJaWYgKG9mZnNldCkKKwkJCXFkZWx0YSA9IHF0b3RhbCAvIG9mZnNldDsKKwkJZWxzZQorCQkJcWRlbHRhID0gMDsKKworLyogICAgICAgIERCR19NU0coIiAgIHNsaWNEdW1wIFdyaXRlIFFVRVVFICMweCV4IGxlblsleF0gb2Zmc2V0WyV4XSAiCisJCSJhdmdqaWZmc1sleF1cbiIsIHF1ZXVlLCAob2Zmc2V0KjQpLCBmaWxlX29mZnNldCwgcWRlbHRhKTsgKi8KKworCQlyZXN1bHQgPQorCQkgICAgc2xpY19kdW1wX3dyaXRlKGNhcmQsIGNhcmQtPmR1bXBidWZmZXIsIG9mZnNldCAqIDQsCisJCQkJICAgIGZpbGVfb2Zmc2V0KTsKKworCQlpZiAoIXJlc3VsdCkgeworCQkJREJHX0VSUk9SCisJCQkgICAgKCJbc2xpY21vbl0gQ2FudCB3cml0ZSBRVUVVRVMgdG8gZHVtcCBmaWxlIC0gIgorCQkJICAgICAiZHVtcCBmYWlsZWRcbiIpOworCQkJZ290byBkb25lOworCQl9CisKKwkJY29yZWhkci5xdWV1ZXNbcXVldWVdLnF1ZXVlT2ZmID0gZmlsZV9vZmZzZXQ7CisJCWNvcmVoZHIucXVldWVzW3F1ZXVlXS5xdWV1ZXNpemUgPSBvZmZzZXQgKiA0OworCQlmaWxlX29mZnNldCArPSBvZmZzZXQgKiA0OworCisvKiAgICAgIERCR19NU0coIiAgICBSZWxvYWQgUVVFVUUgIzB4JXggZWxlbWVudHNbJXhdXG4iLCAodWludClxdWV1ZSwgb2Zmc2V0KTsqLworCQkvKgorCQkgKiBGaWxsIHRoZSBxdWV1ZSBiYWNrIHVwCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0OyBpKyspIHsKKwkJCXFzdGFydCA9IGppZmZpZXM7CisJCQlxZGVsdGEgPSAwOworCisJCQlzdGF0dXMgPSBzbGljX2R1bXBfbG9hZF9xdWV1ZShjYXJkLCBxYXJyYXlbaV0sIHF1ZXVlKTsKKwkJCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCQkJYnJlYWs7CisKKwkJCWlmIChqaWZmaWVzID4gcXN0YXJ0KSB7CisJCQkJcWRlbHRhID0gamlmZmllcyAtIHFzdGFydDsKKwkJCQlxdG90YWwgKz0gcWRlbHRhOworCQkJfQorCQl9CisKKwkJaWYgKG9mZnNldCkKKwkJCXFkZWx0YSA9IHF0b3RhbCAvIG9mZnNldDsKKwkJZWxzZQorCQkJcWRlbHRhID0gMDsKKworLyogICAgICBEQkdfTVNHKCIgICBSZWxvYWQgRE9ORSBhdmdqaWZmc1sleF1cbiIsIHFkZWx0YSk7ICovCisKKwkJcmVzdW1lID0gMTsKKwl9CisKKwlsZW4gPSBTTElDX0dCX0NBTUFCX1NaRSAqIDQ7CisJc3RhdHVzID0gc2xpY19kdW1wX2NhbShjYXJkLCAwLCBsZW4sIERVTVBfQ0FNX0EpOworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpIHsKKwkJREJHX0VSUk9SKCJbc2xpY21vbl0gQ2FuJ3QgZHVtcCBDQU1fQSAtIGR1bXAgZmFpbGVkXG4iKTsKKwkJZ290byBkb25lOworCX0KKworCXJlc3VsdCA9IHNsaWNfZHVtcF93cml0ZShjYXJkLCBjYXJkLT5kdW1wYnVmZmVyLCBsZW4sIGZpbGVfb2Zmc2V0KTsKKwlpZiAocmVzdWx0KSB7CisJCURCR19FUlJPUgorCQkgICAgKCJbc2xpY21vbl0gQ2FuJ3Qgd3JpdGUgQ0FNX0EgZGF0YSB0byBkdW1wIGZpbGUgLSAiCisJCSAgICAgImR1bXAgZmFpbGVkXG4iKTsKKwkJZ290byBkb25lOworCX0KKwljb3JlaGRyLkNhbUFNT2ZmID0gZmlsZV9vZmZzZXQ7CisJY29yZWhkci5DYW1BU2l6ZSA9IGxlbjsKKwlmaWxlX29mZnNldCArPSBsZW47CisKKwlsZW4gPSBTTElDX0dCX0NBTUNEX1NaRSAqIDQ7CisJc3RhdHVzID0gc2xpY19kdW1wX2NhbShjYXJkLCAwLCBsZW4sIERVTVBfQ0FNX0MpOworCWlmIChzdGF0dXMpIHsKKwkJREJHX0VSUk9SKCJbc2xpY21vbl0gQ2FuJ3QgZHVtcCBDQU1fQyAtIGR1bXAgZmFpbGVkXG4iKTsKKwkJZ290byBkb25lOworCX0KKworCXJlc3VsdCA9IHNsaWNfZHVtcF93cml0ZShjYXJkLCBjYXJkLT5kdW1wYnVmZmVyLCBsZW4sIGZpbGVfb2Zmc2V0KTsKKwlpZiAocmVzdWx0KSB7CisJCURCR19FUlJPUgorCQkgICAgKCJbc2xpY21vbl0gQ2FuJ3Qgd3JpdGUgQ0FNX0MgZGF0YSB0byBkdW1wIGZpbGUgLSAiCisJCSAgICAgImR1bXAgZmFpbGVkXG4iKTsKKwkJZ290byBkb25lOworCX0KKwljb3JlaGRyLkNhbUNNT2ZmID0gZmlsZV9vZmZzZXQ7CisJY29yZWhkci5DYW1DU2l6ZSA9IGxlbjsKKwlmaWxlX29mZnNldCArPSBsZW47CisKK2RvbmU6CisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIGNvcmUgaGVhZGVyCisJICovCisJZmlsZV9vZmZzZXQgPSAwOworCURCR19NU0coIltzbGljbW9uXSBXcml0ZSBDb3JlSGVhZGVyIGxlblsleF0gb2Zmc2V0WyV4XVxuIiwKKwkJKHVpbnQpIHNpemVvZihzdHJ1Y3Qgc2xpY2NvcmVfaGRyKSwgZmlsZV9vZmZzZXQpOworCisJcmVzdWx0ID0KKwkgICAgc2xpY19kdW1wX3dyaXRlKGNhcmQsICZjb3JlaGRyLCBzaXplb2Yoc3RydWN0IHNsaWNjb3JlX2hkciksCisJCQkgICAgZmlsZV9vZmZzZXQpOworCURCR19NU0coIltzbGljbW9uXSBjb3JlaGRyICB4b2ZmWyV4XSB4c3pbJXhdXG4iCisJCSIgICAgcm9mZlsleF0gcnN6WyV4XSBmaWxlb2ZmWyV4XSBmaWxlc3pbJXhdXG4iCisJCSIgICAgc3JhbW9mZlsleF0gc3JhbXN6WyV4XSwgZHJhbW9mZlsleF0gZHJhbXN6WyV4XVxuIgorCQkiICAgIGNvcmVoZHJfb2Zmc2V0WyV4XVxuIiwgY29yZWhkci5YbXRSZWdPZmYsCisJCWNvcmVoZHIuWG10UmVnc2l6ZSwgY29yZWhkci5SY3ZSZWdPZmYsIGNvcmVoZHIuUmN2UmVnc2l6ZSwKKwkJY29yZWhkci5GaWxlUmVnT2ZmLCBjb3JlaGRyLkZpbGVSZWdzaXplLCBjb3JlaGRyLlNyYW1PZmYsCisJCWNvcmVoZHIuU3JhbXNpemUsIGNvcmVoZHIuRHJhbU9mZiwgY29yZWhkci5EcmFtc2l6ZSwKKwkJKHVpbnQpIHNpemVvZihzdHJ1Y3Qgc2xpY2NvcmVfaGRyKSk7CisJZm9yIChpID0gMDsgaSA8IG1heF9xdWV1ZXM7IGkrKykgeworCQlEQkdfTVNHKCJbc2xpY21vbl0gIFFVRVVFIDB4JXggIG9mZnNldFsleF0gc2l6ZVsleF1cbiIsCisJCQkodWludCkgaSwgY29yZWhkci5xdWV1ZXNbaV0ucXVldWVPZmYsCisJCQljb3JlaGRyLnF1ZXVlc1tpXS5xdWV1ZXNpemUpOworCisJfQorCisJc2xpY19kdW1wX2Nsb3NlX2ZpbGUoY2FyZCk7CisKKwlpZiAocmVzdW1lKSB7CisJCURCR19NU0coInNsaWNEdW1wIFJFU1RBUlQgUkVDRUlWRSBhbmQgWE1JVCBQUk9DRVNTT1JTXG5cbiIpOworCQlzbGljX2R1bXBfcmVzdW1lKGNhcmQsIFBST0NfUkVDRUlWRSk7CisJCXNsaWNfZHVtcF9yZXN1bWUoY2FyZCwgUFJPQ19UUkFOU01JVCk7CisJfQorCisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIHUzMiBzbGljX2R1bXBfaGFsdChzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIHVuc2lnbmVkIGNoYXIgcHJvYykKK3sKKwl1bnNpZ25lZCBjaGFyICpjbWQgPSBjYXJkLT5jbWRidWZmZXI7CisKKwkqY21kID0gQ09NTUFORF9CWVRFKENNRF9IQUxULCAwLCBwcm9jKTsKKworCXJldHVybiBzbGljX2R1bXBfc2VuZF9jbWQoY2FyZCwKKwkJCQkgICBjYXJkLT5jbWRidWZmZXJfcGh5c2wsCisJCQkJICAgY2FyZC0+Y21kYnVmZmVyX3BoeXNoLCAwLCAwKTsKK30KKworc3RhdGljIHUzMiBzbGljX2R1bXBfcmVzdW1lKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwgdW5zaWduZWQgY2hhciBwcm9jKQoreworCXVuc2lnbmVkIGNoYXIgKmNtZCA9IGNhcmQtPmNtZGJ1ZmZlcjsKKworCSpjbWQgPSBDT01NQU5EX0JZVEUoQ01EX1JVTiwgMCwgcHJvYyk7CisKKwlyZXR1cm4gc2xpY19kdW1wX3NlbmRfY21kKGNhcmQsCisJCQkJICAgY2FyZC0+Y21kYnVmZmVyX3BoeXNsLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzaCwgMCwgMCk7Cit9CisKK3N0YXRpYyB1MzIgc2xpY19kdW1wX3JlZyhzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIHVuc2lnbmVkIGNoYXIgcHJvYykKK3sKKwlzdHJ1Y3QgZHVtcF9jbWQgKmR1bXAgPSAoc3RydWN0IGR1bXBfY21kICopY2FyZC0+Y21kYnVmZmVyOworCisJZHVtcC0+Y21kID0gQ09NTUFORF9CWVRFKENNRF9EVU1QLCAwLCBwcm9jKTsKKwlkdW1wLT5kZXNjID0gREVTQ19SRUc7CisJZHVtcC0+Y291bnQgPSAwOworCWR1bXAtPmFkZHIgPSAwOworCisJcmV0dXJuIHNsaWNfZHVtcF9zZW5kX2NtZChjYXJkLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5jbWRidWZmZXJfcGh5c2gsCisJCQkJICAgY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5kdW1wYnVmZmVyX3BoeXNoKTsKK30KKworc3RhdGljIHUzMiBzbGljX2R1bXBfZGF0YShzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsCisJCSAgICAgICB1MzIgYWRkciwgdXNob3J0IGNvdW50LCB1bnNpZ25lZCBjaGFyIGRlc2MpCit7CisJc3RydWN0IGR1bXBfY21kICpkdW1wID0gKHN0cnVjdCBkdW1wX2NtZCAqKWNhcmQtPmNtZGJ1ZmZlcjsKKworCWR1bXAtPmNtZCA9IENPTU1BTkRfQllURShDTURfRFVNUCwgMCwgUFJPQ19SRUNFSVZFKTsKKwlkdW1wLT5kZXNjID0gZGVzYzsKKwlkdW1wLT5jb3VudCA9IGNvdW50OworCWR1bXAtPmFkZHIgPSBhZGRyOworCisJcmV0dXJuIHNsaWNfZHVtcF9zZW5kX2NtZChjYXJkLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5jbWRidWZmZXJfcGh5c2gsCisJCQkJICAgY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5kdW1wYnVmZmVyX3BoeXNoKTsKK30KKworc3RhdGljIHUzMiBzbGljX2R1bXBfcXVldWUoc3RydWN0IHNsaWNjYXJkICpjYXJkLAorCQkJdTMyIGFkZHIsIHUzMiBidWZfcGh5c2gsIHUzMiBxdWV1ZSkKK3sKKwlzdHJ1Y3QgZHVtcF9jbWQgKmR1bXAgPSAoc3RydWN0IGR1bXBfY21kICopY2FyZC0+Y21kYnVmZmVyOworCisJZHVtcC0+Y21kID0gQ09NTUFORF9CWVRFKENNRF9EVU1QLCAwLCBQUk9DX1JFQ0VJVkUpOworCWR1bXAtPmRlc2MgPSBERVNDX1FVRVVFOworCWR1bXAtPmNvdW50ID0gMTsKKwlkdW1wLT5hZGRyID0gcXVldWU7CisKKwlyZXR1cm4gc2xpY19kdW1wX3NlbmRfY21kKGNhcmQsCisJCQkJICAgY2FyZC0+Y21kYnVmZmVyX3BoeXNsLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzaCwKKwkJCQkgICBhZGRyLCBjYXJkLT5kdW1wYnVmZmVyX3BoeXNoKTsKK30KKworc3RhdGljIHUzMiBzbGljX2R1bXBfbG9hZF9xdWV1ZShzdHJ1Y3Qgc2xpY2NhcmQgKmNhcmQsIHUzMiBkYXRhLAorCQkJCXUzMiBxdWV1ZSkKK3sKKwlzdHJ1Y3QgZHVtcF9jbWQgKmxvYWQgPSAoc3RydWN0IGR1bXBfY21kICopIGNhcmQtPmNtZGJ1ZmZlcjsKKworCWxvYWQtPmNtZCA9IENPTU1BTkRfQllURShDTURfTE9BRCwgMCwgUFJPQ19SRUNFSVZFKTsKKwlsb2FkLT5kZXNjID0gREVTQ19RVUVVRTsKKwlsb2FkLT5jb3VudCA9ICh1c2hvcnQpIHF1ZXVlOworCWxvYWQtPmFkZHIgPSBkYXRhOworCisJcmV0dXJuIHNsaWNfZHVtcF9zZW5kX2NtZChjYXJkLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5jbWRidWZmZXJfcGh5c2gsIDAsIDApOworfQorCitzdGF0aWMgdTMyIHNsaWNfZHVtcF9jYW0oc3RydWN0IHNsaWNjYXJkICpjYXJkLAorCQkgICAgICB1MzIgYWRkciwgdTMyIGNvdW50LCB1bnNpZ25lZCBjaGFyIGRlc2MpCit7CisJc3RydWN0IGR1bXBfY21kICpkdW1wID0gKHN0cnVjdCBkdW1wX2NtZCAqKWNhcmQtPmNtZGJ1ZmZlcjsKKworCWR1bXAtPmNtZCA9IENPTU1BTkRfQllURShDTURfQ0FNX09QUywgMCwgUFJPQ19OT05FKTsKKwlkdW1wLT5kZXNjID0gZGVzYzsKKwlkdW1wLT5jb3VudCA9IGNvdW50OworCWR1bXAtPmFkZHIgPSAwOworCisJcmV0dXJuIHNsaWNfZHVtcF9zZW5kX2NtZChjYXJkLAorCQkJCSAgIGNhcmQtPmNtZGJ1ZmZlcl9waHlzbCwKKwkJCQkgICBjYXJkLT5jbWRidWZmZXJfcGh5c2gsCisJCQkJICAgYWRkciwgY2FyZC0+ZHVtcGJ1ZmZlcl9waHlzaCk7Cit9CisKK3N0YXRpYyB1MzIgc2xpY19kdW1wX3NlbmRfY21kKHN0cnVjdCBzbGljY2FyZCAqY2FyZCwKKwkJCSAgIHUzMiBjbWRfcGh5c2wsCisJCQkgICB1MzIgY21kX3BoeXNoLAorCQkJICAgdTMyIGJ1Zl9waHlzbCwgdTMyIGJ1Zl9waHlzaCkKK3sKKwl1bG9uZyB0aW1lb3V0ID0gU0xJQ19NU19UT19KSUZGSUVTKDUwMCk7CS8qIDUwMCBtc2VjICovCisJdTMyIGF0dGVtcHRzID0gNTsKKwl1MzIgZGVsYXkgPSBTTElDX01TX1RPX0pJRkZJRVMoMTApOwkvKiAxMCBtc2VjICovCisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSBjYXJkLT5tYXN0ZXI7CisKKwlBU1NFUlQoYWRhcHRlcik7CisJZG8geworCQkvKgorCQkgKiBaZXJvIHRoZSBEdW1wc3RhdHVzIGZpZWxkIG9mIHRoZSBhZGFwdGVyIHN0cnVjdHVyZQorCQkgKi8KKwkJY2FyZC0+ZHVtcHN0YXR1cyA9IDA7CisJCS8qCisJCSAqIElzc3VlIHRoZSBkdW1wIGNvbW1hbmQgdmlhIGEgdXRpbGl0eSBwcm9jZXNzb3IgcmVxdWVzdC4KKwkJICoKKwkJICogS2x1ZGdlOiBXZSB1c2UgdGhlIEluZm9ybWF0aW9uYnVmZmVyIHBhcmFtZXRlciB0byBob2xkCisJCSAqIHRoZSBidWZmZXIgYWRkcmVzcworCQkgKi8KKwkJc2xpY191cHJfcmVxdWVzdChhZGFwdGVyLCBTTElDX1VQUl9EVU1QLCBjbWRfcGh5c2wsIGNtZF9waHlzaCwKKwkJCQkgYnVmX3BoeXNsLCBidWZfcGh5c2gpOworCisJCXRpbWVvdXQgKz0gamlmZmllczsKKwkJLyoKKwkJICogU3BpbiB1bnRpbCBjb21wbGV0aW9uIG9yIHRpbWVvdXQuCisJCSAqLworCQl3aGlsZSAoIWNhcmQtPmR1bXBzdGF0dXMpIHsKKwkJCWludCBudW1fc2xlZXBzID0gMDsKKworCQkJaWYgKGppZmZpZXMgPiB0aW1lb3V0KSB7CisJCQkJLyoKKwkJCQkgKiAgQ29tcGxldGUgdGhlIHRpbWVkLW91dCBEVU1QIFVQUiByZXF1ZXN0LgorCQkJCSAqLworCQkJCXNsaWNfdXByX3JlcXVlc3RfY29tcGxldGUoYWRhcHRlciwgMCk7CisJCQkJREJHX0VSUk9SCisJCQkJICAgICgiJXM6IFRJTUVEIE9VVCBudW1fc2xlZXBzWyV4XSAiCisJCQkJICAgICAic3RhdHVzWyV4XVxuIiwKKwkJCQkgICAgIF9fZnVuY19fLCBudW1fc2xlZXBzLCBTVEFUVVNfRkFJTFVSRSk7CisKKwkJCQlyZXR1cm4gU1RBVFVTX0ZBSUxVUkU7CisJCQl9CisJCQludW1fc2xlZXBzKys7CisJCQlTTElDX0lOVEVSUlVQVElCTEVfU0xFRVBfT05fVElNRU9VVChjYXJkLT5kdW1wX3dxLAorCQkJCQkJCSAgICBkZWxheSk7CisJCX0KKworCQlpZiAoY2FyZC0+ZHVtcHN0YXR1cyAmIElTUl9VUENFUlIpIHsKKwkJCS8qCisJCQkgKiBFcnJvciAob3IgcXVldWUgZW1wdHkpCisJCQkgKi8KKy8qICAgICAgICAgIERCR19FUlJPUigiW3NsaWNtb25dICVzOiBEVU1QX1NUQVRVUyAmIElTUl9VUENFUlIgc3RhdHVzWyV4XVxuIiwKKwkJX19mdW5jX18sIFNUQVRVU19GQUlMVVJFKTsgKi8KKworCQkJcmV0dXJuIFNUQVRVU19GQUlMVVJFOworCQl9IGVsc2UgaWYgKGNhcmQtPmR1bXBzdGF0dXMgJiBJU1JfVVBDQlNZKSB7CisJCQkvKgorCQkJICogUmV0cnkKKwkJCSAqLworCQkJREJHX0VSUk9SKCIlczogSVNSX1VQQ0JVU1kgYXR0ZW1wdFsleF1cbiIsIF9fZnVuY19fLAorCQkJCSAgYXR0ZW1wdHMpOworCisJCQlhdHRlbXB0cy0tOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIHN1Y2Nlc3MKKwkJCSAqLworCQkJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCQl9CisKKwl9IHdoaWxlIChhdHRlbXB0cyk7CisKKwlEQkdfRVJST1IoIiVzOiBHQVZFIFVQIEFGVEVSIFNFVkVSQUwgQVRURU1QVFMgc3RhdHVzWyV4XVxuIiwKKwkJICBfX2Z1bmNfXywgU1RBVFVTX0ZBSUxVUkUpOworCisJLyoKKwkgKiBHYXZlIHVwIGFmdGVyIHNldmVyYWwgYXR0ZW1wdHMKKwkgKi8KKwlyZXR1cm4gU1RBVFVTX0ZBSUxVUkU7Cit9CisKKyNlbmRpZgorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAqKiogRU5EICoqKiogRU5EICoqKiogRU5EICoqKiogRU5EICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgU0xJQyAgRFVNUCAgTUFOQUdFTUVOVCAgICAgICAgU0VDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqICAgTU9EVUxFIElOSVRJQVRJT04gLyBURVJNSU5BVElPTiBGVU5DVElPTlMgICAqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc2xpY19kcml2ZXIgPSB7CisJLm5hbWUgPSBEUlZfTkFNRSwKKwkuaWRfdGFibGUgPSBzbGljX3BjaV90YmwsCisJLnByb2JlID0gc2xpY19lbnRyeV9wcm9iZSwKKwkucmVtb3ZlID0gc2xpY19lbnRyeV9yZW1vdmUsCisjaWYgU0xJQ19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQKKwkuc3VzcGVuZCA9IHNsaWNwbV9zdXNwZW5kLAorCS5yZXN1bWUgPSBzbGljcG1fcmVzdW1lLAorI2VuZGlmCisvKiAgICAuc2h1dGRvd24gICA9ICAgICBzbGljX3NodXRkb3duLCAgTU9PS19JTlZFU1RJR0FURSAqLworfTsKKworc3RhdGljIGludCBfX2luaXQgc2xpY19tb2R1bGVfaW5pdCh2b2lkKQoreworCXN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lkZXY7CisJaW50IHJldDsKKworLyogICAgICBEQkdfTVNHKCJzbGljb3NzOiAlcyBFTlRFUiBjcHUgJWRcbiIsIF9fZnVuY19fLCBzbXBfcHJvY2Vzc29yX2lkKCkpOyAqLworCisJc2xpY19pbml0X2RyaXZlcigpOworCisJaWYgKGRlYnVnID49IDAgJiYgc2xpY19kZWJ1ZyAhPSBkZWJ1ZykKKwkJcHJpbnRrKFNMSUNMRVZFTCAic2xpY29zczogZGVidWcgbGV2ZWwgaXMgJWQuXG4iLCBkZWJ1Zyk7CisJaWYgKGRlYnVnID49IDApCisJCXNsaWNfZGVidWcgPSBkZWJ1ZzsKKworCXBjaWRldiA9IChzdHJ1Y3QgcGNpX2RldmljZV9pZCAqKXNsaWNfZHJpdmVyLmlkX3RhYmxlOworLyogICAgICBEQkdfTVNHKCJzbGljb3NzOiAlcyBjYWxsIHBjaV9tb2R1bGVfaW5pdCBqaWZmaWVzWyVseF0gY3B1ICMlZFxuIiwKKwlfX2Z1bmNfXywgamlmZmllcywgc21wX3Byb2Nlc3Nvcl9pZCgpKTsgKi8KKworCXJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoJnNsaWNfZHJpdmVyKTsKKworLyogIERCR19NU0coInNsaWNvc3M6ICVzIEVYSVQgYWZ0ZXIgY2FsbCBwY2lfbW9kdWxlX2luaXQgamlmZmllc1slbHhdICIKKwkgICAgImNwdSAjJWQgc3RhdHVzWyV4XVxuIixfX2Z1bmNfXywgamlmZmllcywKKwkgICAgc21wX3Byb2Nlc3Nvcl9pZCgpLCByZXQpOyAqLworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHNsaWNfbW9kdWxlX2NsZWFudXAodm9pZCkKK3sKKy8qICAgICAgREJHX01TRygic2xpY29zczogJXMgRU5URVJcbiIsIF9fZnVuY19fKTsgKi8KKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJnNsaWNfZHJpdmVyKTsKKwlzbGljX2RlYnVnX2NsZWFudXAoKTsKKy8qICAgICAgREJHX01TRygic2xpY29zczogJXMgRVhJVFxuIiwgX19mdW5jX18pOyAqLworfQorCittb2R1bGVfaW5pdChzbGljX21vZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KHNsaWNfbW9kdWxlX2NsZWFudXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3N0YWdpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9zdGFnaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzZTU4OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zdGFnaW5nLmMKQEAgLTAsMCArMSwxOSBAQAorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworc3RhdGljIGludCBfX2luaXQgc3RhZ2luZ19pbml0KHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzdGFnaW5nX2V4aXQodm9pZCkKK3sKK30KKworbW9kdWxlX2luaXQoc3RhZ2luZ19pbml0KTsKK21vZHVsZV9leGl0KHN0YWdpbmdfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIkdyZWcgS3JvYWgtSGFydG1hbiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJTdGFnaW5nIENvcmUiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWUzNTA4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9LY29uZmlnCkBAIC0wLDAgKzEsMTAgQEAKK2NvbmZpZyBTWEcKKwl0cmlzdGF0ZSAiQWxhY3JpdGVjaCBTTElDIFRlY2hub2xvZ3kgTm9uLUFjY2VsZXJhdGVkIDEwR2JlIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgTkVUREVWXzEwMDAwCisJZGVmYXVsdCBuCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEFsYWNyaXRlY2ggU0xJQyBUZWNobm9sb2d5IE5vbi1BY2NlbGVyYXRlZAorCSAgMTBHYmUgbmV0d29yayBjYXJkcy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlCisJICBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3hnLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3N4Zy9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM0OGZhYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvTWFrZWZpbGUKQEAgLTAsMCArMSBAQAorb2JqLSQoQ09ORklHX1NYRykJKz0gc3hnLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvUkVBRE1FIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxZGRiZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvUkVBRE1FCkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgaXMgdGhlIHJvdWdoIGN1dCBhdCBhIGRyaXZlciBmb3IgdGhlIEFsYWNyaXRlY2ggU0xJQyBUZWNobm9sb2d5CitOb24tQWNjZWxlcmF0ZWQgMTBHYmUgbmV0d29yayBkcml2ZXIuCisKK1RPRE86CisJLSBsaW5kZW50IHRoZSBjb2RlCisJLSByZW1vdmUgdHlwZWRlZnMKKwktIHJlbW92ZSB3cmFwcGVycworCS0gY2hlY2twYXRjaC5wbCBjbGVhbnVwcworCS0gbmV3IGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGUgY2FyZCBuZWVkcworCitQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvOgorICAgICAgICBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBzdXNlLmRlPgorZm9yIGFueSBjbGVhbnVwcyB0aGF0IHlvdSBkbyB0byB0aGlzIGRyaXZlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvc2FoYXJhZGJnZG93bmxvYWQuaCBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvc2FoYXJhZGJnZG93bmxvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODg2NWJhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9zYWhhcmFkYmdkb3dubG9hZC5oCkBAIC0wLDAgKzEsNDg1NCBAQAorI2RlZmluZSBTQUhBUkFfVUNPREVfVkVSU19TVFJJTkcJIiRSZXZpc2lvbjogMS4xICQiCisjZGVmaW5lIFNBSEFSQV9VQ09ERV9WRVJTX0RBVEUgIAkiJERhdGU6IDIwMDgvMDYvMjcgMTI6NTg6MjcgJCIKKyNkZWZpbmUgU0FIQVJBX1VDT0RFX0hPU1RJRl9JRCAgCTMKKworc3RhdGljIHUzMiBTTnVtU2VjdGlvbnMgPSAweDI7CitzdGF0aWMgdTMyIFNTZWN0aW9uU2l6ZVtdID0KK3sKKwkweDAwMDBlMjc0LCAweDAwMDAwMDBjLAorfTsKKworc3RhdGljIHUzMiBTU2VjdGlvblN0YXJ0W10gPQoreworCTB4MDAwMDAwMDAsIDB4MDAwMDFmZmYsCit9OworCitzdGF0aWMgdW5zaWduZWQgY2hhciBTYWhhcmFVQ29kZVsyXVs1Nzk3Ml0gPQoreworeworCTB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4NGQsIDB4MjksIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhiMiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4ZmUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg4MCwgMHgyOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDIxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDBmLCAweDgwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MGYsIDB4ODAsIDB4MjgsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgyMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg0MCwgMHgyYiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDBmLCAweDgwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MjUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MGYsIDB4ODAsIDB4MjgsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgyNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg4MCwgMHgyOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDI3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDBmLCAweDgwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MGYsIDB4ODAsIDB4MjgsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgyOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg4MCwgMHgyOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDJhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDBmLCAweDgwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MWUsIDB4ODAsIDB4ZTksIDB4OWEsCisJMHgwMCwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg4MCwgMHgyOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDBmLCAweDgwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MGYsIDB4ODAsIDB4MjgsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZiwgMHg4MCwgMHgyOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGYsIDB4NDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwZiwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDM0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGYsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwZiwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweDgwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGYsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwZiwgMHgwMCwgMHgwMiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweDQwLCAweDAyLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGYsIDB4ODAsIDB4MDIsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweDAwLCAweDAzLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGYsIDB4NDAsIDB4MDMsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwZiwgMHg4MCwgMHgwMywgMHg5MiwKKwkweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDBmLCAweGMwLCAweDAzLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4NWYsIDB4M2YsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MiwgMHhmZiwgMHhmYywgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDEyLCAweDgwLCAweGZkLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHg4YSwgMHgxMSwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHhmZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDEyLCAweDgwLCAweGZkLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDMsIDB4YzAsIDB4MDEsIDB4MzIsCisJMHgzOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4NCwgMHg4MiwgMHg0ZCwgMHgyOCwgMHgxYSwKKwkweDAwLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDVmLCAweDBhLCAweGY2LCAweDk0LAorCTB4MDAsIDB4MDAsIDB4NGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg2MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDQ5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDBlLCAweDgwLCAweDE4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZDIsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4YzAsIDB4MjAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGQwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDQwLCAweDIxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ODUsIDB4MjEsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg0YiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYywgMHgwMiwgMHhjMCwgMHgyMiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDQzLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4NDAsIDB4MTgsIDB4OWQsCisJMHgwMCwgMHgwMCwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhiLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweDAwLCAweDAwLCAweDQ4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4MDAsIDB4OTAsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhiMiwgMHgwMCwgMHhlOSwgMHhiNiwKKwkweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDdjLCAweDFlLCAweGMwLCAweGU3LCAweDlhLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhiOCwgMHgwMSwgMHgwMCwgMHg5NCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGIzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MDMsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxNywgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDY5LCAweDA1LCAweDAwLCAweDEwLCAweDAxLCAweGY4LCAweDAyLCAweDAwLCAweDZlLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MGEsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgyNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDQwLCAweDE4LCAweGQyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODQsIDB4MDEsIDB4MDAsIDB4MmIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg1NywgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxMiwgMHg4MSwgMHhmYywgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDJiLCAweGJjLAorCTB4MDIsIDB4MDAsIDB4NTcsIDB4MDAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzIsIDB4MGEsIDB4MDAsIDB4YjksCisJMHgwMCwgMHgwMCwgMHg1YSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjMCwgMHhiMCwgMHhiYywKKwkweDAwLCAweDAwLCAweDYwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NWMsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YzIsIDB4NGEsIDB4ZDAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDA0LCAweGNkLCAweDRhLCAweGQwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4ZmEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg5MiwgMHhiYywKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4NTQsIDB4MDAsIDB4MDMsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDIsIDB4NDAsIDB4MTgsIDB4YmQsCisJMHgwOCwgMHgwMCwgMHhiMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMywgMHg0MCwgMHgwMSwgMHg5OSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDAwLCAweDE2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NjcsIDB4MDAsIDB4MDMsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4ODAsIDB4YmQsCisJMHgwMCwgMHgwMCwgMHg3NiwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweDM5LAorCTB4NzYsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg2YiwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg1YywgMHgwOCwgMHg4MCwgMHgyMiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDY1LCAweDAwLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDg1LCAweDgwLCAweGJjLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDMsIDB4MzksCisJMHg2MywgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDY4LCAweDhiLCAweDgwLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4YjgsIDB4ZmYsIDB4ODUsIDB4MzAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgyMSwgMHhmZiwgMHgzOCwKKwkweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg3LCAweDRkLCAweDgwLCAweDNhLAorCTB4MmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODcsIDB4MGQsIDB4ODAsIDB4M2EsCisJMHgwMCwgMHhjNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDU0LCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MTIsIDB4ODAsIDB4MmQsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg0OCwgMHg0MSwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDg2LCAweDk4LCAweDY3LCAweGMwLCAweDgyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4YiwgMHg4MCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDEyLCAweDgwLCAweDJkLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDgsIDB4ODAsIDB4NzAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg3YywgMHgwMCwgMHg5MCwgMHg5OSwgMHg4NiwgMHgyYywgMHgyOCwgMHhkZSwgMHg4MiwgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDE4LCAweGMwLCAweDgyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDgsIDB4YzUsIDB4ODIsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjNSwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDY4LCAweDhiLCAweDgwLCAweDk0LAorCTB4MDgsIDB4MDAsIDB4ODEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4NDAsIDB4MDEsIDB4OTksCisJMHgwOCwgMHgwMCwgMHgzOCwgMHgwMywgMHgwYywgMHgwMCwgMHgwMCwgMHhmOCwgMHg1MywgMHg0MCwgMHgwMSwgMHhiOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA1LCAweDgwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4MDIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgzZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDdlLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDAwLCAweDgwLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDU5LCAweDAwLCAweDgwLCAweGQ3LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NjIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHgzYSwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweDNhLCAweDgwLCAweGJjLAorCTB4MDAsIDB4OTAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4MGQsIDB4ODAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDIsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTksIDB4MGQsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMiwgMHhhNCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAyLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDA4LCAweDAwLCAweDM3LCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwNCwgMHgwOCwgMHg4MCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDk2LCAweDAwLCAweDlmLCAweDAwLCAweDAwLCAweDVjLCAweDA4LCAweDAwLCAweDcyLCAweGIyLAorCTB4ODcsIDB4MDAsIDB4OTUsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhkOCwgMHhjMSwgMHg4MiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGE3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDg4LCAweGMxLCAweDgyLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4OWUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTIsIDB4N2QsIDB4ODAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwNSwgMHg4MCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweDA1LCAweDgwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MWYsIDB4YzAsIDB4ZjUsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweDA0LCAweDAwLCAweDAwLCAweGRjLCAweDQzLCAweDYwLCAweDNkLCAweGIzLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDMsIDB4MzksCisJMHg5YSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDBmLCAweDk3LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDg1LCAweGIwLAorCTB4MTAsIDB4MDAsIDB4YTUsIDB4MDAsIDB4ODcsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NzksIDB4MjEsIDB4MTYsIDB4YjgsCisJMHgwMSwgMHgwMCwgMHhhNSwgMHgwMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHg5NywgMHhiYywKKwkweDg3LCAweDAwLCAweGFmLCAweDAwLCAweDg3LCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweGNkLCAweDg1LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDAsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhhNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhkOCwgMHhjMSwgMHg4MiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGE3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDg4LCAweGMxLCAweDgyLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4YWYsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzAsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhhZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHg5OCwgMHhjMSwgMHg4MiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGFkLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGQyLCAweGMxLCAweDgyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YWYsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4ZmMsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHhhOCwgMHg0MiwgMHgzZCwgMHg3MiwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDE4LCAweDk5LCAweGIxLCAweGYyLCAweGMwLCAweDdjLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4ZDYsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGMxLCAweDgyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YTksIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODAsIDB4ZmMsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDgwLCAweDAwLCAweDgwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGMyLCAweGNkLCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4YzYsIDB4MDAsIDB4MGIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4OSwgMHhjZCwgMHg4NSwgMHgzMCwKKwkweDgwLCAweDAwLCAweGM2LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDk3LCAweGJjLAorCTB4YTAsIDB4MDAsIDB4YzYsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OGQsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhiZCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4MCwgMHhmYywgMHhiNiwKKwkweDg3LCAweDAwLCAweGJkLCAweDAwLCAweDg3LCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweGNkLCAweDg1LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4YjksIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MTIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhiZCwgMHgwMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgyMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweGJkLCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NzksIDB4NjEsIDB4MTYsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHhjNCwgMHgwMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweGQ2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweGI4LCAweGMxLCAweDgyLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NTIsIDB4ODAsIDB4ZmMsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjNCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHhjMSwgMHg4NSwgMHhiNiwKKwkweDAwLCAweDAwLCAweGM0LCAweDAwLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZDIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg3OSwgMHhlMSwgMHgxNiwgMHgzOCwKKwkweDAwLCAweDAwLCAweGM0LCAweDAwLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ZDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YzgsIDB4YzEsIDB4ODIsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOCwgMHgwMCwgMHgwNCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGQ2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweGE4LCAweGMxLCAweDgyLCAweDk0LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NzksIDB4MjEsIDB4MTcsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHhkNiwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweGQ2LCAweDAwLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDIyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDAsIDB4MDgsIDB4ODksIDB4OGQsIDB4NzIsIDB4MzAsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMCwgMHgwMCwgMHhhOSwgMHhkYywgMHgxNywgMHgzOCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDIyLCAweDAwLCAweDkwLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4ZDYsIDB4MDAsIDB4ODAsIDB4MDAsIDB4ODYsIDB4ODAsIDB4MjIsIDB4MjQsIDB4N2MsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwNSwgMHg4MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwNSwgMHg4MCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweDA1LCAweDgwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4MDIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgwNCwgMHgwMCwgMHgwMCwgMHhkYywgMHg0MywgMHg2MCwgMHgzZCwgMHhiMywKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDhhLCAweDAzLCAweDM5LAorCTB4ZDIsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDU5LCAweDAwLCAweDgwLCAweGQ3LAorCTB4MDAsIDB4MDAsIDB4ZGQsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4YjIsCisJMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDAwLCAweDgwLCAweGQyLAorCTB4MDAsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHhjMCwgMHhmNSwgMHg5YSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDI0LCAweDA4LCAweDAwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDgsIDB4YzAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHg4MCwgMHgyMywgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTQsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4NDMsIDB4NjAsIDB4M2QsIDB4YjMsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHg4YSwgMHgwMywgMHgzOSwKKwkweGUwLCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAyLCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4ZjQsIDB4MDAsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgyMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweGMwLCAweGY1LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAyLCAweDQwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MDAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwNSwgMHg4MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwNSwgMHg4MCwgMHhkMCwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDY4LCAweDAyLCAweDA1LCAweDgwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwMCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE2LCAweDAwLCAweDAwLCAweDI5LCAweGMxLCAweDcyLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDk3LCAweDMyLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MjAsIDB4OTAsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHhjMSwgMHg4MiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDU3LCAweDAwLCAweDgwLCAweDk3LAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YTAsIDB4MDQsIDB4MzksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg4MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweDA1LCAweDgwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4MDUsIDB4ODAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwNSwgMHg4MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDAwLCAweDA4LCAweGU4LCAweDgxLCAweDgwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0NSwgMHg5MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDEyLCAweDAwLCAweDI4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MTEsIDB4MDEsIDB4ZjAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg1OSwgMHhjMCwgMHg2ZSwgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAxLCAweDc4LCAweDE5LCAweGMwLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGUsIDB4MDQsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4YmQsIDB4OTcsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMCwgMHgwMCwgMHhmNCwgMHgxZSwgMHg0MCwgMHhlZiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDA5LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg3NywgMHhjMCwgMHgyOSwgMHgzNywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDAwLCAweDE3LCAweDNkLCAweDkwLCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ZjQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDBiLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4ODAsIDB4ODMsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHg3MiwgMHgwMCwgMHgyYiwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDNkLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDEsIDB4ODAsIDB4MzgsIDB4MDAsIDB4ODAsIDB4MjIsIDB4YzAsIDB4NzIsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgyNywgMHgwMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMiwgMHgwMCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDJjLCAweDAxLCAweDEyLCAweDAxLCAweDAwLCAweDVjLCAweDA4LCAweDgwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDIsIDB4ODAsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxZiwgMHg4MCwgMHhmZiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDcyLCAweDAwLCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4ODksIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4NDMsIDB4NjAsIDB4M2QsIDB4YjMsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHg4YSwgMHgwMywgMHgzOSwKKwkweDI4LCAweDAxLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAyLCAweDAwLCAweDM2LCAweDkyLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4Y2QsIDB4ODUsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwOCwgMHgwMCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDI0LCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4NmMsIDB4MDgsIDB4MDAsIDB4NzIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHg0YywgMHgwOCwgMHgwMCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDIwLCAweDAwLCAweDE4LCAweDA4LCAweDAwLCAweDcyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MjgsIDB4MDgsIDB4MDAsIDB4NzIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1MiwgMHhiZCwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDMwLCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4ODAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgzZCwgMHgwMSwgMHgwNiwgMHgwMCwgMHgwMCwgMHg4MCwgMHg2MiwgMHhhMCwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDNjLCAweDAwLCAweDE0LCAweDI4LCAweDgwLCAweDcyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDYsIDB4MzIsCisJMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg3NywgMHg0YSwgMHgwOSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MTksIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NjQsIDB4MDEsIDB4MDQsIDB4MzgsIDB4MDAsIDB4NzgsIDB4ZDksIDB4YzUsIDB4NzIsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg0MSwgMHgwMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg5NywgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4NDMsIDB4MDEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTIsIDB4ODAsIDB4OTcsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5MiwgMHg4MCwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDJkLCAweGJjLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4M2MsIDB4YjgsIDB4MWMsIDB4MTcsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgyOCwgMHhjMCwgMHg4MywgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNhLCAweDAwLCAweDJjLCAweDA4LCAweGMwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4YjgsIDB4ZTAsIDB4ODMsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwgMHgyOSwgMHgwMCwgMHgyMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDYzLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGMwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4NzgsIDB4YTAsIDB4ODEsIDB4M2UsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHhkOCwgMHhlMCwgMHg4MSwgMHgzYywKKwkweDAwLCAweDAwLCAweDUxLCAweDAxLCAweDA2LCAweDNhLCAweDAwLCAweDgwLCAweGIyLCAweDVjLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MDAsIDB4ODksIDB4YzEsIDB4NzIsIDB4MzcsCisJMHgwNywgMHgwMCwgMHg1MCwgMHgwMSwgMHgyYiwgMHgwMSwgMHgwMCwgMHgwNCwgMHg3OSwgMHgwYSwgMHgwNCwgMHhiOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNiLCAweDAwLCAweDAwLCAweDA0LCAweDE5LCAweDQxLCAweDkwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4NTQsIDB4MDEsIDB4MDAsIDB4M2EsIDB4MDAsIDB4MmMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYSwgMHgwMCwgMHgyYywgMHhkNywgMHhlMCwgMHg3MiwgMHgzYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg2NCwgMHg4MywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDczLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweGQ4LCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgyMCwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDVlLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTIsIDB4ZTQsIDB4MzgsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1ZiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgxMiwgMHg4MCwgMHgyZCwgMHg5YSwKKwkweDAwLCAweDAwLCAweGQ3LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGY5LCAweDQxLCAweDkwLCAweGY0LAorCTB4MDAsIDB4MDAsIDB4NjEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZDgsIDB4YTAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg0OSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YywgMHhkOCwgMHhlMCwgMHg4NiwgMHg5YSwKKwkweDAwLCAweDAwLCAweDg0LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDA4LCAweDgwLCAweDJkLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NDksIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwgMHgxOSwgMHgwMCwgMHgyMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDA3LCAweDAwLCAweDY2LCAweDAxLCAweDJiLCAweDAxLCAweDAwLCAweDA0LCAweDc5LCAweDBhLCAweDAyLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2IsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MTksIDB4NDEsIDB4OTAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNywgMHhhMCwgMHg4MSwgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDczLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweGQ4LCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NjIsIDB4NjAsIDB4ODMsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgyMCwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDcwLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MTIsIDB4ZTQsIDB4MzgsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg3MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgxMiwgMHg4MCwgMHgyZCwgMHg5YSwKKwkweDAwLCAweDAwLCAweGQ3LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGY5LCAweDQxLCAweDkwLCAweGY0LAorCTB4MDAsIDB4MDAsIDB4ODQsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MDgsIDB4ODAsIDB4MmQsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg2NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ZjksIDB4NDEsIDB4OTAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0NCwgMHgxMiwgMHhlNCwgMHgzOCwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwNCwgMHgwOSwgMHg4MCwgMHg3MywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDA4LCAweDg5LCAweDgwLCAweDczLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4ODYsIDB4MzIsCisJMHg0MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHg4YywgMHgwNywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDdmLCAweDAxLCAweDI5LCAweDA4LCAweDAwLCAweDgwLCAweDA3LCAweGMwLCAweDg1LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ODIsIDB4MDEsIDB4MjgsIDB4MTAsIDB4MDAsIDB4OGMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4MywgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHg4NCwgMHgwNywgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDhjLCAweGY3LCAweGUwLCAweDgyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4ODIsIDB4MDEsIDB4MjgsIDB4MTgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4NDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4MywgMHgwMSwgMHgwMCwgMHgxMiwgMHgwMCwgMHg4NCwgMHgwNywgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDg0LCAweDI3LCAweGU0LCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4NzIsIDB4MDAsIDB4ODUsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4NywgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHhkYywgMHg0MywgMHg2MCwgMHgzZCwgMHhiMywKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDhhLCAweDAzLCAweDM5LAorCTB4ODMsIDB4MDEsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDVjLCAweDUyLCAweDgxLCAweDJjLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4ODksIDB4MDEsIDB4ZjIsIDB4MDEsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgwMSwgMHhmMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHgzOCwgMHg4MSwgMHg4MCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAwLCAweDAwLCAweGY0LCAweDFlLCAweDQwLCAweGVmLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4OTMsIDB4MDEsIDB4MGIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgzYiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhlLCAweDAxLCAweGI5LCAweDAwLCAweDAwLCAweDc4LCAweGM5LCAweDNiLCAweDNhLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OTIsIDB4MDEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOSwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweGUyLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTksIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MGUsIDB4MDAsIDB4M2EsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMiwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGJhLCAweDgzLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YmQsIDB4OTcsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHhmNCwgMHhiZCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGE0LCAweDk3LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MGUsIDB4ODAsIDB4ODMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgyMiwgMHg3YSwgMHhlOCwgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGU4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzksIDB4YzAsIDB4MjksIDB4MzcsCisJMHg2MCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwZCwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDAwLCAweGQ4LCAweDEyLCAweDgwLCAweDJkLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweGU4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ZTgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHg0OCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NzgsIDB4MDgsIDB4ODAsIDB4NzIsIDB4MzIsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMCwgMHg1NCwgMHhhOCwgMHg1YywgMHgxNiwgMHgzOCwKKwkweDBiLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDJjLCAweGE4LCAweGRjLCAweDE2LCAweDM4LAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ODgsIDB4NGQsIDB4ODUsIDB4M2EsCisJMHgyMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDEwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDM4LCAweDAwLCAweDE0LCAweGE5LCAweDljLCAweDg3LCAweGQ5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDgsIDB4MDAsIDB4NzIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgyNCwgMHgwOCwgMHgwMCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDZjLCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NGMsIDB4MDgsIDB4MDAsIDB4NzIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgyMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHgwMCwgMHg3MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDMwLCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4M2MsIDB4MDAsIDB4MTQsIDB4MTgsIDB4ODAsIDB4NzIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhiYiwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDYsIDB4MzIsCisJMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg3NywgMHg0YSwgMHgwOSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MTksIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4NzgsIDB4YzAsIDB4MjksIDB4MzcsCisJMHgwMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NCwgMHg4OCwgMHg0ZCwgMHg4NiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NywgMHhhMCwgMHg4MSwgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGQ2LCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDFjLCAweGQ4LCAweGUwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NCwgMHhkOCwgMHg2MCwgMHg4NiwgMHgzYSwKKwkweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4YzAsIDB4MzgsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhkMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgxMiwgMHg4MCwgMHgyZCwgMHg5YSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhkMCwgMHgwMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4Y2IsIDB4MDEsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhkOCwgMHhhMCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDZjLCAweGQ4LCAweGUwLCAweDg2LCAweDlhLAorCTB4MDAsIDB4MDAsIDB4MzIsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MDgsIDB4ODAsIDB4MmQsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhkYywgMHgwMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4ZDcsIDB4MDEsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGU4LCAweDAxLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDg0LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgyMiwgMHg0MCwgMHg4NSwgMHgzYSwKKwkweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDQwLCAweDg4LCAweGNkLCAweDc0LCAweDM2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MjgsIDB4MDAsIDB4ODQsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDE0LCAweDAwLCAweGU4LCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDFjLCAweDg4LCAweDBkLCAweDg0LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHg2MSwgMHg4NSwgMHgzYSwKKwkweDgwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4ZDgsIDB4NjAsIDB4ODYsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhkMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGVhLCAweDAxLCAweDA0LCAweDAwLCAweDAwLCAweDE4LCAweGQ4LCAweGEwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ZWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmMsIDB4ZDgsIDB4ZTAsIDB4ODYsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHgzMiwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgwOCwgMHg4MCwgMHgyZCwgMHhmMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDA4LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgyMiwgMHhjMCwgMHg4MiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweGI4LCAweDYwLCAweDg1LCAweDNjLAorCTB4MDQsIDB4MDAsIDB4ZjIsIDB4MDEsIDB4ODEsIDB4MDAsIDB4MDAsIDB4NjAsIDB4ODgsIDB4Y2QsIDB4NzQsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgyOCwgMHhmOCwgMHhhMCwgMHg3NSwgMHgzYywKKwkweDAwLCAweDAwLCAweGYzLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDc0LCAweDA4LCAweDgwLCAweDc1LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MjgsIDB4ZjgsIDB4YTAsIDB4NzUsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHhhMSwgMHg4MiwgMHgzYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweGYyLCAweDYwLCAweDJhLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4NDgsIDB4MDgsIDB4MDAsIDB4NzUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg3YywgMHgwOCwgMHg4MCwgMHg3NSwgMHgzMiwKKwkweDA5LCAweDAwLCAweGY5LCAweDAxLCAweDA0LCAweDFhLCAweDAwLCAweDcwLCAweDg4LCAweGNkLCAweDc0LCAweGIwLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDAsIDB4NGMsIDB4ODcsIDB4Y2QsIDB4NzQsIDB4MzEsCisJMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NCwgMHg4OCwgMHg0ZCwgMHg4NiwgMHgzMSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY0LCAweDI4LCAweDQwLCAweDg2LCAweDNhLAorCTB4MjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg4MCwgMHg4MiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDEyLCAweDAwLCAweDAwLCAweGM4LCAweDAyLCAweDAwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDgsIDB4ODAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMiwgMHg4MCwgMHgyYywgMHhiMiwKKwkweDAwLCAweDAwLCAweDI3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHhjZCwgMHg4NSwgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweGU4LCAweGExLCAweDgyLCAweDNlLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MjIsIDB4YzAsIDB4ODIsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwOCwgMHhlMSwgMHg4MSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDBiLCAweDAyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDQyLCAweDAwLCAweDg2LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4NTgsIDB4MDcsIDB4NDAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwYSwgMHgwMiwgMHg4ZiwgMHgwMSwgMHgwMCwgMHg3NCwgMHgxOCwgMHg0MCwgMHg4NywgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc0LCAweDA4LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MGQsIDB4MDIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4NTgsIDB4ZjcsIDB4YTAsIDB4ODYsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhmOSwgMHhhMCwgMHg4NiwgMHgzYSwKKwkweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDU4LCAweDg3LCAweDhkLCAweDk3LCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MjIsIDB4NDAsIDB4ODUsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHg1MCwgMHgwNywgMHg4MCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDExLCAweDAyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWEsIDB4MDAsIDB4NGMsIDB4YzcsIDB4ZTEsIDB4NzQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg3OCwgMHhhMCwgMHg4NCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDE0LCAweDAyLCAweDkwLCAweDAxLCAweDAwLCAweDc4LCAweGY5LCAweGExLCAweDg2LCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MTksIDB4ODAsIDB4OTcsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg1OCwgMHgwNywgMHg4MCwgMHg5NywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDU4LCAweGExLCAweDg2LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNywgMHg2MCwgMHg4NSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHgwMiwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0YywgMHgwMiwgMHhjMCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg1NywgMHgyMSwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDU3LCAweDYxLCAweDg2LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4MDIsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NGMsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHg4MCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweGMwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwgMHgxOSwgMHgwMCwgMHgyMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDIxLCAweDgwLCAweDNhLAorCTB4MDcsIDB4MDAsIDB4MjcsIDB4MDIsIDB4MmIsIDB4MDEsIDB4MDAsIDB4MDQsIDB4NzksIDB4MGEsIDB4MDIsIDB4YjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgxOSwgMHg0MSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDRkLCAweDAwLCAweDAwLCAweDAwLCAweDc3LCAweGEwLCAweDgxLCAweDNlLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDg0LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4ZDgsIDB4YTAsIDB4ODIsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHg0MSwgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgxYywgMHhkOCwgMHhlMCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweDYwLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MjAsIDB4ODAsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgzMiwgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweDEyLCAweGU0LCAweDM4LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4M2YsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MTIsIDB4ODAsIDB4MmQsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhmOSwgMHg0MSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweDEyLCAweGU0LCAweDM4LCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgzZCwgMHgwMiwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgyMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDNhLCAweDAyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgzNCwgMHgwMiwgMHg2NywgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNSwKKwkweDAwLCAweDAwLCAweDM1LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MjIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzNCwgMHgwMiwgMHg2NywgMHgwMCwgMHgwMCwgMHg4MCwgMHgxOCwgMHgwMCwgMHg4OCwgMHhiYywKKwkweDAwLCAweDAwLCAweDM1LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHhjMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDMyLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDA4LCAweDgwLCAweDJkLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MjUsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhmOSwgMHg0MSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweDEyLCAweGU0LCAweDM4LCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NDMsIDB4MDIsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg0NCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDRiLCAweDAyLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDE4LCAweDAwLCAweDg4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NDMsIDB4MDIsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg0NCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NGYsIDB4MDIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NDIsIDB4MDAsIDB4ODYsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDg5LCAweDgwLCAweDcxLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOSwgMHg4MCwgMHg3MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDUzLCAweDAyLCAweDkwLCAweDE5LCAweDAwLCAweDA0LCAweGU5LCAweDVjLCAweDkwLCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MTksIDB4NDAsIDB4OTAsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNywgMHg4MCwgMHg4NiwgMHgzMiwKKwkweDQxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDAwLCAweDhjLCAweDA3LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4YzAsIDB4ODUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg4YywgMHgwNywgMHg0MCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDgwLCAweDA3LCAweDQ1LCAweDkwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4NWEsIDB4MDIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NDIsIDB4MDAsIDB4ODYsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg1YiwgMHgwMiwgMHgwMCwgMHgxMiwgMHgwMCwgMHg4NCwgMHgyNywgMHhlNCwgMHg4MiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAwLCAweDg0LCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NWYsIDB4MDIsIDB4MjcsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1ZiwgMHgwMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg0MiwgMHg2MCwgMHgzZCwgMHhiMywKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDhhLCAweDAzLCAweDM5LAorCTB4NWIsIDB4MDIsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MiwgMHg4MCwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDVjLCAweDUyLCAweDgxLCAweDJjLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDg5LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NjcsIDB4MDIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4MTgsIDB4ZDgsIDB4YTAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzMiwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgwOCwgMHg4MCwgMHgyZCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDA4LCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmMsIDB4ZDgsIDB4ZTAsIDB4ODYsIDB4OWEsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjNiwgMHgwMSwgMHgwMCwgMHhmOCwgMHg5MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDE5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4NDAsIDB4ODEsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHg0NSwgMHg4MSwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHg4MCwgMHgwMSwgMHg4MCwgMHg4MCwgMHgzMiwgMHgwYiwgMHg2YSwgMHhiNiwKKwkweDAwLCAweDAwLCAweGRjLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NzIsIDB4MDIsIDB4MDQsIDB4MDYsIDB4MDEsIDB4ODAsIDB4MDIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwNiwgMHgwMSwgMHhlYywgMHg1NiwgMHhlMCwgMHg2ZSwgMHg5YSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM0LCAweDA3LCAweDAxLCAweGVjLCAweDU2LCAweGUwLCAweDZlLCAweDNhLAorCTB4MDgsIDB4YzAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTIsIDB4Y2QsIDB4MzksIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAzLCAweGI4LCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDZlLCAweGJkLAorCTB4NzcsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4MGQsIDB4OTAsIDB4M2EsCisJMHgyZSwgMHgwMCwgMHg5MywgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MmIsIDB4MDAsIDB4OTMsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgzNywgMHgwMCwgMHg5MywgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDM4LCAweDAwLCAweDkzLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4MzIsIDB4MGIsIDB4NmEsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhkYywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDAwLCAweDAwLCAweDg2LCAweDAyLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDUyLCAweDQwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NjIsIDB4NDAsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwNSwgMHgwMSwgMHg4MCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDQyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDgsIDB4YzAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTIsIDB4Y2QsIDB4MzksIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwNCwgMHgwMSwgMHgxNCwgMHg1OSwgMHhjMCwgMHg2ZSwgMHhkNywKKwkweDAyLCAweDAwLCAweDhmLCAweDAyLCAweDA0LCAweGI4LCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDZlLCAweGJjLAorCTB4MDgsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4YjksIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMSwgMHgzOCwgMHgwOCwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDAxLCAweGVjLCAweDA2LCAweDQwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OTEsIDB4MDIsIDB4YjUsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNSwgMHgwMCwgMHg4MCwgMHhhMCwgMHgzNiwgMHgwYiwgMHg2YSwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY0LCAweDAxLCAweGU4LCAweDA2LCAweGMwLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MiwgMHg4NSwgMHgyZiwgMHgzMCwKKwkweDAwLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4NjAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4OGQsIDB4MmYsIDB4YjAsCisJMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDQwLCAweDgxLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MDIsIDB4ODAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4MzIsIDB4MGIsIDB4NmEsIDB4YjYsCisJMHgxNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweGI4LCAweDAwLCAweDE0LCAweDA5LCAweGMwLCAweDZlLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkYywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAyLCAweDA0LCAweDAyLCAweDAxLCAweDgwLCAweDAyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MDAsIDB4MDIsIDB4MDEsIDB4ZWMsIDB4NTYsIDB4ZTAsIDB4NmUsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMywgMHgwMSwgMHhlYywgMHg1NiwgMHhlMCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4YzAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4YTIsIDB4OGQsIDB4MzksIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDIwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDM5LCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDZlLCAweGJjLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhkMiwKKwkweDE1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4MTQsIDB4MDksIDB4MDAsIDB4NmUsIDB4ZDIsCisJMHgxYiwgMHgwMCwgMHhhZiwgMHgwMiwgMHgzOCwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHhiMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDMwLCAweDAxLCAweDE0LCAweDA5LCAweDAwLCAweDZlLCAweGQyLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg3OSwgMHgwYiwgMHgxNCwgMHgzOCwKKwkweDEwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDUwLCAweDAxLCAweDE0LCAweGE5LCAweDViLCAweDkxLCAweGQ5LAorCTB4MDAsIDB4MDAsIDB4YmUsIDB4MDIsIDB4MzgsIDB4MjgsIDB4MDAsIDB4MTgsIDB4MDksIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhiNiwgMHgwMiwgMHgwNCwgMHgyMSwgMHgwMSwgMHgwOCwgMHg2OSwgMHgyNCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA5LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDMsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhiYSwgMHgwMiwgMHgwMiwgMHgzMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg5YiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweGI5LCAweDAyLCAweDA2LCAweDAzLCAweDAxLCAweDgwLCAweDEyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDQsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwNSwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDMwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YmQsIDB4MDIsIDB4MDYsIDB4MDMsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwYSwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDBiLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YzEsIDB4MDIsIDB4MDQsIDB4MjEsIDB4MDEsIDB4MDgsIDB4NjksIDB4MjQsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwOSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAzLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YzMsIDB4MDIsIDB4MDIsIDB4MzAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OWIsIDB4OTAsIDB4YmMsCisJMHgwNCwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweGM1LCAweDAyLCAweDlmLCAweDMxLCAweDAxLCAweDBjLCAweDY5LCAweDI0LCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjOSwgMHgwMiwgMHgwNCwgMHgzMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg5YiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweGM4LCAweDAyLCAweDA2LCAweDAzLCAweDAxLCAweDgwLCAweDEyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MjAsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgyMSwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweGNkLCAweDAyLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDMyLCAweGE0LCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MDYsIDB4MDMsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgyMiwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDIzLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4Y2YsIDB4MDIsIDB4MDYsIDB4MDMsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgyMCwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDIxLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDgsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MGMsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjMsIDB4NDAsIDB4MDEsIDB4YjksCisJMHgxMCwgMHgwMCwgMHhkNCwgMHgwMiwgMHhjNSwgMHgwMSwgMHgwMCwgMHhjYywgMHgwMiwgMHgyMCwgMHgxNSwgMHg5OCwKKwkweDA4LCAweDAwLCAweDM4LCAweDAzLCAweDBjLCAweDAwLCAweDAwLCAweGY4LCAweDQzLCAweDQwLCAweDAxLCAweGI5LAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzUsIDB4MDEsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MjAsIDB4MTUsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHg3ZSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwNSwgMHg4MCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4NTksIDB4MDAsIDB4ODAsIDB4ZDcsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGRjLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDgsIDB4MDUsIDB4ODAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGZhLCAweDg1LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4ZmEsIDB4ODUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhkZiwgMHgwMiwgMHgzNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDBlLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDIsIDB4MDAsIDB4YTksIDB4ZGIsIDB4ODUsIDB4MzksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMiwgMHhhNCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAyLCAweDhjLCAweDA4LCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4OTQsIDB4MDgsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwMiwgMHg5OCwgMHgyOCwgMHg4MCwgMHg2ZSwgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDM4LCAweDIyLCAweDE0LCAweDM3LAorCTB4MDAsIDB4MDAsIDB4ZWIsIDB4MDIsIDB4MDQsIDB4MzAsIDB4MDAsIDB4MjgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMCwgMHgwMCwgMHg2YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDRjLCAweDA4LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MjAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHgxNCwgMHgwOCwgMHg4MCwgMHg2ZSwgMHgzMiwKKwkweDA1LCAweDAwLCAweGVlLCAweDAyLCAweDAwLCAweDMwLCAweDAyLCAweDAwLCAweDc4LCAweGUxLCAweDZlLCAweDk5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMiwgMHg3OCwgMHgwOSwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDA4LCAweDAwLCAweDAwLCAweDc3LCAweGExLCAweDk3LCAweDM5LAorCTB4MDAsIDB4MDAsIDB4ZjAsIDB4MDIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MTQsIDB4MTAsIDB4ZjQsIDB4MDIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4MGQsIDB4NzIsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg1OCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHhjMCwgMHgwMiwgMHhmMiwKKwkweDBkLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDksIDB4MDAsIDB4ODAsIDB4NTIsIDB4YmQsIDB4NzIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhmYiwgMHgwMiwgMHgzMywgMHgxNSwgMHgwMCwgMHhhNCwgMHgwMiwgMHhjMCwgMHg3MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDMzLCAweDAzLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGIyLCAweDAxLCAweDcyLCAweGI2LAorCTB4MDEsIDB4MDEsIDB4MDgsIDB4MGEsIDB4MDAsIDB4MjgsIDB4MDAsIDB4ODAsIDB4YzIsIDB4MGQsIDB4NzQsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHgzMywgMHgwMywgMHgwYiwgMHgzMSwgMHgwMCwgMHg3YywgMHgwOCwgMHgwMCwgMHg3NSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDMzLCAweDAzLCAweDlmLCAweGYwLCAweDAxLCAweDgwLCAweDgyLCAweGRiLCAweDg3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ZmMsIDB4MDIsIDB4MDAsIDB4MzgsIDB4MDAsIDB4ODgsIDB4MTgsIDB4MDAsIDB4NzUsIDB4OWMsCisJMHgwMCwgMHgwMCwgMHgzMywgMHgwMywgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhiMiwgMHgwMSwgMHg3MiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDQ4LCAweDA4LCAweDAwLCAweDc1LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4NzAsIDB4MDgsIDB4MDAsIDB4NzUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHg3NCwgMHgzOCwgMHhhMiwgMHg3NSwgMHgzNywKKwkweDAwLCAweDAwLCAweDAxLCAweDAzLCAweDgzLCAweDFiLCAweDAwLCAweDc4LCAweDA4LCAweGMwLCAweDc0LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YzIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhmMiwgMHgwMiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHg4MCwgMHg4NywgMHhiNiwKKwkweDJmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4ODAsIDB4ODQsIDB4ZDIsCisJMHgzNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDAwLCAweDg3LCAweGQyLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4OWYsIDB4NzgsIDB4MDEsIDB4ODAsIDB4YzIsIDB4MjEsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwYSwgMHgwMywgMHg5ZiwgMHg5OSwgMHgwMSwgMHg2NCwgMHg4OCwgMHgxYiwgMHg4NywgMHhiYywKKwkweDAwLCAweDAwLCAweDE2LCAweDAzLCAweDlmLCAweDY4LCAweDAxLCAweDY0LCAweDg4LCAweDViLCAweDg2LCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNiwgMHgwMCwgMHhhNCwgMHgwMiwgMHhjMCwgMHg3MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM0LCAweDAyLCAweGE0LCAweGIyLCAweDViLCAweDJhLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzIsIDB4MDIsIDB4NzgsIDB4MDksIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgxNywgMHgwMywgMHgwOCwgMHgwMSwgMHgwMCwgMHgwNCwgMHhlOCwgMHhhNSwgMHg3NSwgMHhiYywKKwkweDBmLCAweDAwLCAweDMzLCAweDAzLCAweDBiLCAweDAxLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDQsIDB4YTEsIDB4MDEsIDB4ODAsIDB4ODIsIDB4OWIsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg5ZCwgMHgwNSwgMHg5ZiwgMHg5OCwgMHgwMSwgMHg4MCwgMHhjMiwgMHgyMSwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDlkLCAweDA1LCAweDA2LCAweGIxLCAweDAxLCAweDgwLCAweDgyLCAweDViLCAweDg3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MzIsIDB4MDMsIDB4MGIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMiwgMHhkNCwgMHgwMSwgMHg4MCwgMHg5MiwgMHhmYiwgMHg2ZSwgMHhiYywKKwkweDE1LCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MTYsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgxYywgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDA4LCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDI4LCAweDcyLCAweDYxLCAweDgwLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4MDMsIDB4MDQsIDB4YTEsIDB4MDEsIDB4ODAsIDB4ODIsIDB4OWIsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgyMSwgMHgwMywgMHgwNiwgMHhhOCwgMHgwMSwgMHg4MCwgMHg4MiwgMHg1YiwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDFlLCAweDAzLCAweDA0LCAweGE5LCAweDAxLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MzEsIDB4MDMsIDB4MDQsIDB4YTksIDB4MDEsIDB4ODAsIDB4ODIsIDB4OWIsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzMSwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxMiwgMHg0MCwgMHg4MCwgMHhiYywKKwkweDEzLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzEsIDB4MDMsIDB4OWYsIDB4YTAsIDB4MDEsIDB4NzgsIDB4MjksIDB4MjEsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzMSwgMHgwMywgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxMiwgMHhhMCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDE1LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MmMsIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMiwgMHgwMSwgMHg4MCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDI3LCAweDAzLCAweDAyLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDYwLCAweDgwLCAweGJjLAorCTB4MDYsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MmMsIDB4MDEsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4YjIsCisJMHgwMCwgMHhjMCwgMHgyOSwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDA2LCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MjksIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4NjAsIDB4ODAsIDB4YmMsCisJMHgwOSwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDJiLCAweDAzLCAweDA2LCAweDAzLCAweDAxLCAweDgwLCAweDEyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDcsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwOCwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAyLCAweDAwLCAweDlkLCAweDA1LCAweDM4LCAweDAxLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MDMsIDB4MDIsIDB4MGMsIDB4MDIsIDB4ODAsIDB4YTIsIDB4NWIsIDB4ODAsIDB4YmMsCisJMHgxZiwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDFlLCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4NDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgzNCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDM0LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgzMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDgwLCAweDkyLCAweGQyLAorCTB4MGQsIDB4MDAsIDB4NTgsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDEwLCAweDAwLCAweDhhLCAweDExLCAweDJhLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDIwLCAweDE1LCAweGI4LAorCTB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwMCwgMHg4MCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZGMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgxZCwgMHgwMCwgMHg0OSwgMHgwMywgMHg4MCwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHhlMCwgMHgwMCwgMHhiOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MWQsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgyMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDE0LCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4YTgsIDB4MDUsIDB4MjgsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjMCwgMHgyYywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHg2MCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHhmOCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MzUsIDB4MDAsIDB4NTQsIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ODEsIDB4YmMsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGMwLCAweDgxLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4ZGMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgyYiwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDkzLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1YSwgMHgwMywgMHgxZCwgMHg0MSwgMHgwMiwgMHg1YywgMHhmOCwgMHgwMSwgMHg2OCwgMHhiNCwKKwkweDQxLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDhkLCAweDJmLCAweDkxLAorCTB4MzUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHg1OSwgMHhjMCwgMHg4NSwgMHhkNywKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweDJjLCAweDAyLCAweDAwLCAweGE5LCAweGRiLCAweDg1LCAweDM5LAorCTB4MDAsIDB4MDAsIDB4ZTEsIDB4MDIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NTQsIDB4MDIsIDB4YTQsIDB4MzgsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDY0LCAweDAzLCAweDA0LCAweGIwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MTEsIDB4MDAsIDB4NzgsIDB4MDEsIDB4NjAsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgyZiwgMHgwMCwgMHg5MywgMHgwNSwgMHhkNywgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDY1LCAweDAzLCAweDA2LCAweGE5LCAweDAxLCAweDA4LCAweDA5LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NmQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3MCwgMHgwMywgMHgwNCwgMHhhOCwgMHgwMSwgMHgwOCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweDA4LCAweDg5LCAweDliLCAweDkwLCAweDNlLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDEsIDB4MDgsIDB4ODksIDB4OWIsIDB4OTAsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg3MCwgMHgwMywgMHg5ZiwgMHg4OCwgMHgwMSwgMHgwOCwgMHg4OSwgMHg5YiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDAyLCAweDA0LCAweGY5LCAweGJhLCAweDZlLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4NmMsIDB4MDMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MTIsIDB4YTQsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgxOSwgMHg4MCwgMHg5MCwgMHgzNywKKwkweDAwLCAweDAwLCAweDcwLCAweDAzLCAweDAyLCAweDAxLCAweDAyLCAweDgwLCAweDgyLCAweDliLCAweDkwLCAweGJjLAorCTB4MzAsIDB4MDAsIDB4OTMsIDB4MDUsIDB4ZDcsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg3MCwgMHgwMywgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDEyLCAweDcwLCAweDAzLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDhkLCAweDJmLCAweGIwLAorCTB4MzEsIDB4MDAsIDB4OTMsIDB4MDUsIDB4ZDcsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MiwgMHg4MSwgMHgyZiwgMHg5NSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDQyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDgsIDB4YzAsIDB4NzQsIDB4MDIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4YTIsIDB4Y2QsIDB4MzksIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDkzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjMCwgMHg4MSwgMHhkMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGMwLCAweDJjLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHg2MCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHhmOCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDgwLCAweDAxLCAweDgwLCAweDgwLCAweDMyLCAweDBiLCAweDZhLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhkYywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDJiLCAweDAwLCAweDlkLCAweDA1LCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OTMsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MTAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODksIDB4NGQsIDB4ODEsIDB4ZDcsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjMCwgMHgyYywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4NjAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4OGQsIDB4MmYsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwMywgMHg4MCwgMHgwMSwgMHg4MCwgMHg4MCwgMHgzMiwgMHgwYiwgMHg2YSwgMHhiNiwKKwkweDAwLCAweDAwLCAweGRjLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MDMsIDB4MDQsIDB4MjAsIDB4MDEsIDB4ODAsIDB4NTIsIDB4MjAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwOSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDI1LCAweDAwLCAweDlkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MjQsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg5MywgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHhkOCwgMHgxZSwgMHg4MCwgMHhlZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhjLCAweDAzLCAweGI3LCAweDAwLCAweDAwLCAweGQ4LCAweDBlLCAweGMwLCAweGVkLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGYsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NDIsIDB4M2IsIDB4ZWUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgxZSwgMHgwMCwgMHhlZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE3LCAweDAwLCAweDAwLCAweGQwLCAweDBlLCAweDAwLCAweGVlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OTMsIDB4MDMsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4ODAsIDB4ZmMsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg5MywgMHgwMywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHhmYywgMHhiNiwKKwkweDAwLCAweDAwLCAweDkzLCAweDAzLCAweDA0LCAweDAxLCAweDAwLCAweGIwLCAweDFlLCAweDAwLCAweGViLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzQsIDB4ODYsIDB4Y2MsIDB4MDIsIDB4ODAsIDB4NmMsIDB4MzIsCisJMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDk3LCAweDAzLCAweDgwLCAweDAxLCAweDgwLCAweDgwLCAweDMyLCAweDBiLCAweDZhLCAweGI2LAorCTB4MzUsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg5OSwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHhjNSwgMHgyYywgMHhiYywKKwkweDAwLCAweDAwLCAweDlhLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MTIsIDB4YzAsIDB4MmMsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg5NSwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc0LCAweDg2LCAweGM4LCAweDA2LCAweGMwLCAweDJjLCAweDMyLAorCTB4MDgsIDB4MDAsIDB4YjAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YzMsIDB4NDAsIDB4MDEsIDB4OTksCisJMHgwMCwgMHgwMCwgMHg5ZiwgMHgwMywgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDU1LCAweDAxLCAweDgwLCAweGIyLCAweDFiLCAweDJiLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YzYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDksIDB4MDAsIDB4MDAsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEzLCAweDAzLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NTUsIDB4MDEsIDB4ODAsIDB4YjIsIDB4MWIsIDB4MmIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhjNiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhmOSwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweGFkLCAweDAzLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDgwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlZiwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhkMiwKKwkweDAwLCAweDAwLCAweGFkLCAweDAzLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDkyLCAweGJjLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwMywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4MzksCisJMHhiMCwgMHgwMywgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDIsIDB4OTksCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAyLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweGFhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDksIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwZiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDYsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDA4LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDcsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YzIsIDB4MDMsIDB4OGIsIDB4MDEsIDB4MDAsIDB4YTAsIDB4MTIsIDB4MDAsIDB4MmEsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YzUsIDB4MDMsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjOCwgMHgwMywgMHg4NSwgMHgwMSwgMHgwMCwgMHg5YywgMHgxMiwgMHhjMCwgMHgyOSwgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDEzLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwYywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDA2LCAweDMyLAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDBkLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxNCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweGI3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MTUsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDE4LCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxZCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDA0LCAweDMyLAorCTB4MWUsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHg3MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDFmLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MTcsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDFiLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxYywgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDQwLCAweDAwLCAweDMyLAorCTB4MTYsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDFhLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxOSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MGIsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDBjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4ZmUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAzLCAweDY0LCAweDAyLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4ZmIsIDB4MDMsIDB4ODUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4OTAsIDB4YmEsCisJMHgyNSwgMHgyNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAxLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhmMywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGUzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YzMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhiMywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGEzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4OTMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg4MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg1MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDQzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MzMsIDB4NDAsIDB4MDEsIDB4MzksCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDIzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDMsIDB4ODAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgzZiwgMHg4MCwgMHhmYywgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHg0YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAzLCAweDQwLCAweDM4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZDIsIDB4MDEsIDB4MzAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgxMywgMHgwNCwgMHgwNCwgMHgwMSwgMHgwMCwgMHhkMCwgMHgxMiwgMHgwMCwgMHgyZCwgMHhiYywKKwkweDUwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNywgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDEsIDB4ZTQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZSwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4MTIsIDB4MDAsIDB4MmQsIDB4M2EsCisJMHg0YywgMHgwMCwgMHgxYSwgMHgwNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHgwZCwgMHgyZCwgMHhiYywKKwkweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweGFlLCAweDBkLCAweDAyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg4NiwgMHhjYywgMHgwNywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDhhLCAweDg2LCAweGNjLCAweDA3LCAweDgwLCAweDAwLCAweDNhLAorCTB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg2NCwgMHgwMiwgMHg0MCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDI5LCAweDQwLCAweDkwLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MjYsIDB4MDQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHg4MSwgMHg5NywgMHhiNiwKKwkweDFkLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDc4LCAweGU5LCAweGU1LCAweDAwLCAweGI4LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4NDUsIDB4OTAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgyNCwgMHgwNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHhjMiwgMHg4MiwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgyYywgMHgwNCwgMHg4ZSwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgyOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDI2LCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweGQyLAorCTB4MGUsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGMsIDB4MGUsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhiOSwgMHgwNSwgMHgzNiwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDczLCAweDgwLCAweDk3LCAweDM0LAorCTB4MDksIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDBhLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4NzMsIDB4ODAsIDB4OTcsIDB4MzQsCisJMHgwOSwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweGZlLCAweGNhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgzYiwgMHgwNCwgMHgxMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDM5LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4M2IsIDB4MDQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4NDAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgzZSwgMHgwNCwgMHg5ZiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDNkLCAweDA0LCAweDEyLCAweDAwLCAweDAwLCAweDA4LCAweDA5LCAweDQwLCAweDIwLCAweGIyLAorCTB4MDIsIDB4MDAsIDB4MzksIDB4MDQsIDB4MDQsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MDksIDB4MjQsIDB4MTcsIDB4YjgsCisJMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHg2NCwgMHgxNiwgMHgzOCwKKwkweDAwLCAweDAwLCAweDM5LCAweDA0LCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDk3LCAweGJjLAorCTB4ZmUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHhmZSwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMywgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDQwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NDQsIDB4MDQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4NDAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg0NywgMHgwNCwgMHg5ZiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDQ2LCAweDA0LCAweDEyLCAweDAwLCAweDAwLCAweDA4LCAweDA5LCAweDQwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4MDIsIDB4MDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDYsIDB4MDAsIDB4NTksIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDksIDB4NjQsIDB4MTYsIDB4OTgsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHg0MCwgMHg5MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDk3LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDQwLCAweDkwLCAweDkyLAorCTB4MzMsIDB4MDAsIDB4NzQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgxMSwgMHgwMCwgMHg3NCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDM5LCAweDAwLCAweDc0LCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3ZiwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOCwgMHg0MCwgMHg5MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDdmLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDQwLCAweDkwLCAweDkyLAorCTB4NWEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4OTAsIDB4M2EsCisJMHgwZCwgMHgwMCwgMHg3YywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHhlNCwgMHgxNiwgMHg5OCwKKwkweDBkLCAweDAwLCAweDhlLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweGU0LCAweDE2LCAweDk4LAorCTB4MGQsIDB4MDAsIDB4OTcsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4ZTQsIDB4MTYsIDB4OTgsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGFkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDQwLCAweDkwLCAweDlkLAorCTB4MDAsIDB4MDAsIDB4YjMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGM3LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4NDAsIDB4OTAsIDB4OWQsCisJMHgwMCwgMHgwMCwgMHhkOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGUxLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDQwLCAweDkwLCAweDlkLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmMywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGYzLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDQwLCAweDAwLCAweDkyLAorCTB4ZDgsIDB4MDAsIDB4ZjUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4MGYsIDB4NDAsIDB4OTAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhlOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZWQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MzksIDB4NDAsIDB4OTAsIDB4OTcsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYywgMHgwZSwgMHg0MCwgMHg5MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGVmLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDBlLCAweDQwLCAweDkwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MGUsIDB4NDAsIDB4OTAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhmMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDg1LCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweGRjLCAweDBlLCAweDQwLCAweDkwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwOCwgMHgwMCwgMHgxNSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxZiwgMHgyNCwgMHgxNiwgMHg5OCwKKwkweDAwLCAweDAwLCAweDI3LCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MGQsIDB4MDAsIDB4MzIsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4ZTQsIDB4MTYsIDB4OTgsCisJMHgwMCwgMHgwMCwgMHgzMywgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDBjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGQwLCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ODksIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDkzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4NDUsIDB4OTAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgyMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDNmLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDBkLCAweDAwLCAweGIwLAorCTB4MDIsIDB4MDAsIDB4ODAsIDB4MDQsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzIsIDB4MGEsIDB4MDAsIDB4YjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg2YiwgMHg0MSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweGIwLCAweDAzLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweGIwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4YjAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDIyLCAweDAwLCAweDJiLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHgyYSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ZDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweDM5LAorCTB4YjAsIDB4MDMsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwOCwgMHgwMCwgMHhiMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5MywgMHg0MCwgMHgwMSwgMHg5OSwKKwkweDAwLCAweDAwLCAweDkxLCAweDA0LCAweDlmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOSwgMHhjMCwgMHhmZCwgMHgzMiwKKwkweDAyLCAweDAwLCAweDkxLCAweDA0LCAweGIwLCAweDAwLCAweDAwLCAweGEwLCAweGMyLCAweDBhLCAweDAwLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGIsIDB4ODAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwZCwgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDA0LCAweDNiLCAweDQwLCAweGIwLCAweDMxLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MmIsIDB4YmMsCisJMHhmMSwgMHgwZiwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YywgMHgwZSwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDkzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDIsIDB4MDAsIDB4OTgsIDB4MDQsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzIsIDB4MGEsIDB4MDAsIDB4YjksCisJMHgwMCwgMHgwMCwgMHg5YiwgMHgwNCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxMiwgMHg0MCwgMHhiMCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDNiLCAweDQwLCAweGIwLCAweDMzLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4Y2QsIDB4NGEsIDB4ZDAsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwYiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDBjLCAweDFiLCAweGU0LCAweGIwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MDMsIDB4MGIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHg5MCwgMHhiMiwKKwkweDFmLCAweDAwLCAweGIwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDExLCAweDQwLCAweDAwLCAweDk5LAorCTB4MDAsIDB4MDAsIDB4YTAsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4ZjgsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHhmOCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweGZjLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YTcsIDB4MDQsIDB4OWYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweGMwLCAweGZkLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NDIsIDB4ODUsIDB4OTAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDA5LCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDBmLCAweDgxLCAweGZjLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NzIsIDB4NDIsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHhlMiwgMHg0MiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweDY0LCAweDkwLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4NzMsIDB4MDAsIDB4OTAsIDB4M2MsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YjYsIDB4MDQsIDB4OWYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweGMwLCAweGZkLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4NDIsIDB4ODUsIDB4OTAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAxLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MGYsIDB4ODAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MGYsIDB4NDAsIDB4OTAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhjMCwgMHgwNCwgMHg5ZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA5LCAweDQwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4YzAsIDB4ZmQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHg4NSwgMHg5MCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDgwLCAweDkwLCAweDMyLAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwZSwgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDQwLCAweDkwLCAweDMyLAorCTB4MDQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHgwZSwgMHg0MCwgMHg5MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGNhLCAweDA0LCAweDlmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOSwgMHhjMCwgMHhmZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDQyLCAweDg1LCAweDkwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4ODAsIDB4OTAsIDB4MzIsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDQwLCAweDkwLCAweDMyLAorCTB4MDYsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgwZiwgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDBmLCAweDQwLCAweDkwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4NDIsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg3OCwgMHgwOSwgMHg2NCwgMHg5MCwgMHhiNSwKKwkweDAwLCAweDAwLCAweGQ1LCAweDA0LCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDQyLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHgwMCwgMHg5MCwgMHgzMiwKKwkweDEyLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MWYsIDB4NDAsIDB4OTAsIDB4OWMsCisJMHgwMCwgMHgwMCwgMHhkYiwgMHgwNCwgMHg5ZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA5LCAweDQwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4YzAsIDB4ZmQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHg4NSwgMHg5MCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDgwLCAweDkwLCAweDMyLAorCTB4MDcsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMywgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDA4LCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg0MiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweDY0LCAweDkwLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4ZTUsIDB4MDQsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4NDIsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDkwLCAweDMyLAorCTB4MTEsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgxZiwgMHg0MCwgMHg5MCwgMHg5YywKKwkweDAwLCAweDAwLCAweGViLCAweDA0LCAweDlmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOSwgMHhjMCwgMHhmZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDBlLCAweDgwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MGUsIDB4NDAsIDB4OTAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHg0MCwgMHg5MCwgMHgzNywKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDBmLCAweGE0LCAweDk3LCAweDlhLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MGUsIDB4ODAsIDB4ZWUsIDB4OWQsCisJMHgwMCwgMHgwMCwgMHhmMiwgMHgwNCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweGMwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MWUsIDB4NDAsIDB4OTAsIDB4OWMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgyMiwgMHgwMCwgMHg5MCwgMHgzNywKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDg2LCAweGMwLCAweDA3LCAweDQwLCAweDkwLCAweDkyLAorCTB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4ZTQsIDB4MTYsIDB4MzgsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGZhLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDI0LCAweGY2LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4M2YsIDB4ODAsIDB4ZmMsIDB4MzQsCisJMHg0MCwgMHg4MCwgMHhmYywgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHg4MCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDBmLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4NzksIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgwMiwgMHgwMCwgMHhmYywgMHgwNCwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHhjMiwgMHgwYSwgMHgwMCwgMHhiOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDBjLCAweGFiLCAweGU0LCAweGIwLCAweDMyLAorCTB4MWYsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MTEsIDB4NDAsIDB4MDAsIDB4OTksCisJMHhlYSwgMHgwNSwgMHgwNSwgMHgwNSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg0ZCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVjLCAweDBmLCAweDAwLCAweDE1LCAweDMyLAorCTB4MDAsIDB4ZmUsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MGYsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHhmMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDk4LCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDBmLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MGIsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4NGYsIDB4ODAsIDB4ZmMsIDB4OTUsCisJMHgzNiwgMHgyMywgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg0ZCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGVjLCAweDBmLCAweDgwLCAweDE0LCAweDMyLAorCTB4MDAsIDB4ZjgsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MGYsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHhjMCwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDk4LCAweDI3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDBmLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4NGYsIDB4ODAsIDB4ZmMsIDB4MzQsCisJMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg4ZiwgMHg0ZCwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDYwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4N2EsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhOSwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhkLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MTIsIDB4MDUsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4OTAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHg2ZiwgMHg4MCwgMHhmYywgMHgzNCwKKwkweDAwLCAweDAwLCAweDE0LCAweDA1LCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDEyLCAweDQwLCAweDkwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4NWYsIDB4ODAsIDB4ZmMsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDE3LCAweDA1LCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDQwLCAweDkwLCAweGIwLAorCTB4ODAsIDB4MDEsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4OGYsIDB4OGQsIDB4ZmMsIDB4OTEsCisJMHgwMCwgMHgwMCwgMHgxOSwgMHgwNSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxMiwgMHg0MCwgMHg5MCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDFhLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDdmLCAweDgwLCAweGZjLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4N2YsIDB4ODAsIDB4ZmMsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgxYywgMHgwNSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHg5MCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDFkLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDhmLCAweDgwLCAweGZjLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4OGYsIDB4ODAsIDB4ZmMsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgyMCwgMHgwNSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgyMiwgMHg0MCwgMHg5MCwgMHhiNiwKKwkweGYxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDhjLCAweDBlLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MWYsIDB4ODEsIDB4ZmMsIDB4OTUsCisJMHgwZSwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YywgMHgwZSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDFmLCAweDgxLCAweGZjLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4MDIsIDB4ZjUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMywgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwMCwgMHhmNSwgMHhiZCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweGUyLCAweDI1LCAweGY1LCAweGI1LAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGMsIDB4MWYsIDB4MjQsIDB4MTYsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgxZiwgMHgwMCwgMHhmNSwgMHg5YywKKwkweDgwLCAweDAxLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweGZjLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MmIsIDB4MDUsIDB4OWYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweGMwLCAweGZkLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDAsIDB4ZjUsIDB4M2EsCisJMHg4YywgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYywgMHgwMywgMHg0MCwgMHg5MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MDUsIDB4YjIsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhlNCwgMHg2ZSwgMHgzYSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDkzLCAweDQwLCAweDAxLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4NjksIDB4MDUsIDB4MTcsIDB4MTAsIDB4MDEsIDB4ZjgsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwNiwgMHgwMCwgMHgzZiwgMHgwNSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDgyLCAweDhkLCAweDJmLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4ZDMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4ODAsIDB4MzYsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHgzYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDg2LCAweGM4LCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDQ2LCAweDA1LCAweDA0LCAweDE5LCAweDg2LCAweDgwLCAweDAyLCAweDgwLCAweDZjLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMxLCAweDA4LCAweDAwLCAweDA0LCAweDA5LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MTUsIDB4ODYsIDB4MmMsIDB4MDksIDB4YzAsIDB4NmMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg0YywgMHgwNSwgMHgyMiwgMHgxZCwgMHg4NiwgMHhjOCwgMHgwNiwgMHhjMCwgMHg5MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDRjLCAweDA1LCAweDAwLCAweDE4LCAweDg2LCAweGM4LCAweDA2LCAweDQwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MjIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMyLCAweDQ4LCAweDAwLCAweDA0LCAweDA5LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MTYsIDB4ODYsIDB4MmMsIDB4MDksIDB4YzAsIDB4NmMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg0YywgMHgwNSwgMHgyMSwgMHgxZCwgMHg4NiwgMHhjOCwgMHgwNiwgMHhjMCwgMHg5MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDg2LCAweGM4LCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg1NCwgMHgwNSwgMHgwNCwgMHgwMiwgMHgwMSwgMHg4MCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweGQzLCAweDBlLCAweDAwLCAweDAyLCAweDAxLCAweGVjLCAweDE2LCAweGMwLCAweDZlLCAweGRjLAorCTB4MDAsIDB4MDAsIDB4NTIsIDB4MDUsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg1NCwgMHgwNSwgMHg4MSwgMHgwMCwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MCwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweDU0LCAweDA1LCAweDAwLCAweDE4LCAweDg2LCAweGM4LCAweDA2LCAweDQwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NTQsIDB4MDUsIDB4ODIsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MTIsIDB4ODAsIDB4MmYsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg4NiwgMHhjOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NiwgMHhjOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDBhLCAweDMyLAorCTB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweGMwLCAweDY5LCAweDA1LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweGE5LCAweGNkLCAweDNlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4ODYsIDB4MDQsIDB4MTksIDB4ODAsIDB4NmMsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHgwYywgMHhmNywgMHg3ZiwgMHg5MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweDAyLCAweDAwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDEwLCAweDg2LCAweDgwLCAweDcyLCAweDgyLCAweDZjLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4ODYsIDB4YTgsIDB4NDIsIDB4ODAsIDB4NmMsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHg3OCwgMHgwNSwgMHgxMiwgMHgwMCwgMHg3MCwgMHgzOCwgMHgwMiwgMHgwMCwgMHg3YywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDBiLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDNjLCAweDAyLCAweDAwLCAweDdlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4N2UsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3MCwgMHgzNCwgMHgwMiwgMHgwMCwgMHg3ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDZiLCAweDA1LCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweGIyLCAweDgyLCAweDJhLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwNiwgMHgwMCwgMHgzZiwgMHgwNSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDAwLCAweDAwLCAweDM5LCAweDA1LCAweDA0LCAweDAzLCAweDAxLCAweDgwLCAweDAyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4MmYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHhhMiwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDdhLCAweDA1LCAweDA0LCAweDAzLCAweDAxLCAweDgwLCAweDAyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ODMsIDB4MDUsIDB4MDAsIDB4MTAsIDB4ODYsIDB4YzgsIDB4NDYsIDB4ODAsIDB4MmEsIDB4OTYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4NiwgMHhjOCwgMHg0NiwgMHg4MCwgMHgyYSwgMHgzNiwKKwkweDAwLCAweDAwLCAweDdlLCAweDA1LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDMsIDB4MDAsIDB4ODAsIDB4MDUsIDB4MjIsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4OGQsIDB4MmYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwgMHgwMCwgMHgxOCwgMHg4NiwgMHhjOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDgzLCAweDA1LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDIyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzIsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODAsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHhjMCwgMHhkMywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHg4MCwgMHgzNiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDAxLCAweGVjLCAweDE2LCAweGMwLCAweDZlLCAweDNjLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHhlMCwgMHgwNiwgMHg4MCwgMHgyZiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweGEyLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MDUsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4YzAsIDB4ZWQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwZSwgMHg4MCwgMHgwMiwgMHgzMiwKKwkweDQwLCAweDdlLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI0LCAweDBlLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzQsIDB4MGUsIDB4ODAsIDB4MDcsIDB4MzIsCisJMHg2NCwgMHgwMCwgMHg4ZiwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwZSwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDY0LCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweGVkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MGUsIDB4NDAsIDB4MDAsIDB4MzIsCisJMHhhMCwgMHg4YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNCwgMHgwZSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM0LCAweDBlLCAweGMwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MGUsIDB4ODAsIDB4MDIsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgzMywgMHg3YiwgMHhlYywgMHgzOSwKKwkweDFlLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4NmUsIDB4YzAsIDB4ZWMsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwZSwgMHhjMCwgMHhlZCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDY1LCAweDAxLCAweDgwLCAweGEyLCAweGRiLCAweDJjLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgxYywgMHgwMSwgMHg4MCwgMHg1MiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDJiLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDgxLCAweGJjLAorCTB4M2QsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ODEsIDB4YmMsCisJMHgzNSwgMHgwMCwgMHg5YywgMHgwNSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHg4MSwgMHhiYywKKwkweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MmIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ODksIDB4Y2QsIDB4ODEsIDB4M2MsCisJMHgxMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgxYywgMHgwMSwgMHgxNCwgMHg1OSwgMHhlNCwgMHg2ZSwgMHhkOSwKKwkweGE0LCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDgyLCAweGNkLCAweDgxLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg2NSwgMHgwMSwgMHg4MCwgMHhhMiwgMHhkYiwgMHgyYywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDE4LCAweDAxLCAweDgwLCAweDkyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MmIsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ODEsIDB4YmMsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDEwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDE4LCAweDAxLCAweDE0LCAweDc5LCAweGUwLCAweDZlLCAweGQ5LAorCTB4YTQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4ODEsIDB4M2EsCisJMHhlMSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweGVhLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4ZjMsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHhmYywgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDA1LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MGUsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHgxNywgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDIwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MjksIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHgzMiwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDNiLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4NDQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg0ZCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDU2LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4NWYsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg2OCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDcxLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4N2EsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg4MywgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDhjLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4OTUsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg5ZSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweGE3LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4YjAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHhiOSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweGMyLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4Y2IsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHhkNCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweGRkLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4ZTYsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHhlZiwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweGY4LCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MDEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHgwYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDEzLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MWMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHgyNSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDJlLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MzcsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg0MCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDQ5LCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4NTcsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDUyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4NTcsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg1YywgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDYxLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4NjYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg2YiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDcwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4NzUsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg3YSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDdmLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4ODQsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg4OSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDhlLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4OTMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4M2EsCisJMHg5OCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMSwgMHg4OCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHgzYSwKKwkweDlkLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAxLCAweDg4LCAweDgyLCAweGNkLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4NWYsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg3MSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDNiLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NzksIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4OCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkYSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZGEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZGEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlYSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZWEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZWEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlOCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTgsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTgsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDg2LCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZDcsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDdkLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZDcsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDdkLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZDcsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDBjLCAweDBiLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlOSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTksIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlOSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTksIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjMSwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGI4LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YzEsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YzEsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ODEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4MSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDgxLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ODEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4NiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDgxLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ODEsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3NiwgMHgwYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDc2LCAweDBiLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NzYsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NzYsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjOSwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NDcsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg0YiwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGIwLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NGIsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NGIsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg0YywgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGIwLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NGMsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NGMsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg1MSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDUxLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDY4LCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg2NCwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDY0LCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NjQsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NjQsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3ZSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDdlLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhmLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGEwLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGEwLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiNSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGI1LCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YjUsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3NSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDc1LCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NzUsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NzUsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjYywgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4OCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4OCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHgwYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhOCwgMHgwYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTgsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MmEsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MmEsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgzMSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg0MCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGFiLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGYzLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGI2LCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YjYsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhiNiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwYSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhiNCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGMzLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YzMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlNSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTgsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhlOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGVhLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZWEsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhlYSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4NDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhjMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGMyLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDQwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ZjgsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhmOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHhjMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDJlLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDcsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4ODAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDAwLCAweDAxLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDIyLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweDgwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4YzAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHgwMCwgMHgwMSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlZiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOCwgMHg4MCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweGVmLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA4LCAweGMwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MDAsIDB4MDEsIDB4OTIsCisJMHgwOCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgxOCwgMHgwMSwgMHhlOCwgMHg3NiwgMHgyMCwgMHg4MSwgMHg5OSwKKwkweDA4LCAweDAwLCAweDlkLCAweDAzLCAweDAwLCAweDE4LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweDk5LAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwOCwgMHgwMCwgMHhhNywgMHgwNywgMHgxZCwgMHgxOSwgMHgwMSwgMHhlOCwgMHg3NiwgMHgyMCwgMHg4MSwgMHhiOSwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MDMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDk0LAorCTB4MDgsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ZTgsIDB4NzYsIDB4MjAsIDB4ODEsIDB4OTksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwZiwgMHgwMSwgMHg4MCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGUsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4YzAsIDB4NmUsIDB4MzUsCisJMHg1NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweGE5LCAweDAwLCAweDJkLCAweDM3LAorCTB4YjQsIDB4Y2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OGQsIDB4OTcsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg5OSwgMHhjMCwgMHgyYywgMHgzNywKKwkweGI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweDhkLCAweDk3LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4YmYsIDB4OTcsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHhmZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDAsIDB4NzgsIDB4MDksIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhiNywgMHgwNywgMHhiNywgMHgxMCwgMHgwMiwgMHhlMCwgMHgwNiwgMHg4MCwgMHg5NywgMHhiMiwKKwkweDAwLCAweDAwLCAweGJhLCAweDA3LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGYyLCAweDgwLCAweGZjLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YmIsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4ZmYsIDB4ODAsIDB4ZmMsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHhiYywgMHgwNywgMHg5ZiwgMHg5OSwgMHgwMCwgMHg4MCwgMHg4MiwgMHgxYiwgMHhlZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDAwLCAweGUwLCAweDBlLCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAyLCAweDFjLCAweDA5LCAweDAwLCAweDZlLCAweDMyLAorCTB4NDAsIDB4MDAsIDB4YzEsIDB4MDcsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4OTEsIDB4YmMsCisJMHgwMCwgMHg0MCwgMHhjMiwgMHgwNywgMHgwMCwgMHgxOCwgMHgwMiwgMHhlMCwgMHhhNiwgMHhjZCwgMHgyYywgMHg5MiwKKwkweDAwLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAyLCAweGUwLCAweGE2LCAweGNkLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDksIDB4ODAsIDB4MDMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjNSwgMHgwNywgMHg4MCwgMHhkNywgMHgwMSwgMHg4MCwgMHgzMiwgMHhjMCwgMHg2ZSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ5LCAweDAwLCAweDkyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDEsIDB4MTgsIDB4MDksIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMiwgMHgyNCwgMHgwOSwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAxLCAweDI4LCAweDA5LCAweDgwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZDMsIDB4MDcsIDB4ODAsIDB4MGUsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YjYsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMiwgMHhlYywgMHgwNiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ5LCAweDAxLCAweDkyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4Y2YsIDB4MDcsIDB4ODAsIDB4ZDYsIDB4MDEsIDB4ODAsIDB4NDIsIDB4YzAsIDB4NmUsIDB4YjYsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMiwgMHhlMCwgMHhhNiwgMHhjZCwgMHg5MSwgMHgzMiwKKwkweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDAyLCAweGU4LCAweDA2LCAweDAwLCAweDM2LCAweDMyLAorCTB4MjgsIDB4MDAsIDB4ZGQsIDB4MDcsIDB4MDAsIDB4MzIsIDB4MDIsIDB4ZWMsIDB4MDYsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMywgMHgwMSwgMHgwMCwgMHgxYywgMHhkOSwgMHhjMSwgMHg5MSwgMHgzNCwKKwkweDAwLCAweDgyLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAyLCAweGUwLCAweGE2LCAweGNkLCAweDkxLCAweDMyLAorCTB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDIsIDB4ZTgsIDB4MDYsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgzNCwgMHgwMCwgMHhkZCwgMHgwNywgMHgwMCwgMHgzMiwgMHgwMiwgMHhlYywgMHgwNiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM0LCAweDAyLCAweGVjLCAweDA2LCAweDAwLCAweDM2LCAweDMyLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4MGQsIDB4OTIsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhkOSwgMHgwNywgMHg4MCwgMHhkNiwgMHgwMSwgMHg4MCwgMHg0MiwgMHhjMCwgMHg2ZSwgMHhiNiwKKwkweDAwLCAweDg2LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAyLCAweGUwLCAweGE2LCAweGNkLCAweDkxLCAweDMyLAorCTB4MDQsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDIsIDB4ZTgsIDB4MDYsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxNCwgMHgwMCwgMHhkZCwgMHgwNywgMHgwMCwgMHgzMiwgMHgwMiwgMHhlYywgMHgwNiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQzLCAweDAxLCAweDAwLCAweDFjLCAweGQ5LCAweGMxLCAweDkxLCAweDM0LAorCTB4MDAsIDB4ODYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4ZTAsIDB4YTYsIDB4Y2QsIDB4OTEsIDB4MzIsCisJMHgwNCwgMHhhMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHgwMiwgMHhlOCwgMHgwNiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDIwLCAweDAwLCAweGRkLCAweDA3LCAweDAwLCAweDMyLCAweDAyLCAweGVjLCAweDA2LCAweDAwLCAweDM2LCAweDkyLAorCTB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDIsIDB4ZWMsIDB4ODYsIDB4Y2QsIDB4OTEsIDB4M2EsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMiwgMHhlOCwgMHg4NiwgMHgyNCwgMHg5MCwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweGUwLCAweDk2LCAweDI0LCAweDE0LCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4OTEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMywgMHgwNywgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg5MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMCwgMHhlMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4YTksIDB4MDAsIDB4MmQsIDB4MzcsCisJMHgwMCwgMHhjZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHg5NywgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDk5LCAweGMwLCAweDJjLCAweDM3LAorCTB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ODksIDB4OGQsIDB4OTcsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4NywgMHhiZiwgMHg5NywgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweGZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAxLCAweDM4LCAweDA4LCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4YzksIDB4MDEsIDB4ODAsIDB4MDIsIDB4ODAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMSwgMHhlYywgMHgwNiwgMHg4MCwgMHg4MywgMHgzMiwKKwkweDAxLCAweDAwLCAweGFhLCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4ZjksIDB4MDcsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgyMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDJjLCAweDAwLCAweDlkLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMSwgMHgzOCwgMHgwOCwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDA4LCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NTAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgwNywgMHg4MCwgMHhkNywgMHgwMSwgMHgyYywgMHgwOSwgMHhjMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLCAweGQ3LCAweDAxLCAweGVjLCAweDA2LCAweGMwLCAweDZlLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4NDAsIDB4ZWQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMSwgMHhlYywgMHgwNiwgMHg4MCwgMHhlZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAyLCAweDA4LCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweGMwLCAweDkyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwNCwgMHgwNiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgzYiwgMHgwMCwgMHhhYSwgMHgwNywgMHgxMiwgMHgwMSwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDcsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhiMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDBhLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGIyLCAweDgxLCAweDJmLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4YTAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweDYwLCAweDExLCAweDAwLCAweDc4LCAweDAxLCAweDYwLCAweDA4LCAweDAwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MGYsIDB4MDgsIDB4MTIsIDB4MDEsIDB4MDAsIDB4YzgsIDB4MDIsIDB4MDAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDFlLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDVjLCAweDA4LCAweDgwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDIsIDB4ODAsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MWYsIDB4ODAsIDB4ZmYsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgxNywgMHgwOCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweGNhLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDNiLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzIsIDB4ODEsIDB4MmYsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMCwgMHgxNCwgMHgwOCwgMHg4MCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDEyLCAweDAwLCAweDAwLCAweGM4LCAweDAyLCAweDAwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MTAsIDB4MDgsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDgsIDB4ODAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHhhMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDJkLCAweGJjLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4NzgsIDB4ZTEsIDB4NmUsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgyMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDc4LCAweGNhLCAweGU5LCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDgsIDB4NDAsIDB4ODAsIDB4MzIsCisJMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg3OSwgMHgyMSwgMHgyZiwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAyLCAweDQ0LCAweGUyLCAweDI1LCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4OTAsIDB4MDAsIDB4NmMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwMCwgMHg0YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4ZTAsIDB4ODMsIDB4M2UsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhkOCwgMHhhMCwgMHg4MSwgMHgzYywKKwkweDAwLCAweDAwLCAweDgyLCAweDA4LCAweDA0LCAweGIwLCAweDAwLCAweGUwLCAweGQ2LCAweDIwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg1MCwgMHgwOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhkOCwgMHhlMCwgMHg4MywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0NCwgMHhlMiwgMHhlMCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDQxLCAweDA4LCAweDUxLCAweDAwLCAweDAwLCAweGQ4LCAweDEyLCAweDgwLCAweDJkLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZjksIDB4ODEsIDB4ODMsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0NCwgMHhlMiwgMHhlNSwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDM5LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NWMsIDB4MTAsIDB4MDAsIDB4YTAsIDB4MDEsIDB4NTAsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDNiLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgzZiwgMHgwOCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4M2EsIDB4MDgsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg0NiwgMHgwOCwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgyMCwgMHg4MCwgMHhiYSwKKwkweDAwLCAweDAwLCAweDQ1LCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHg4NCwgMHgzMiwKKwkweDFkLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGE0LCAweDE3LCAweGI4LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4ZTAsIDB4MDAsIDB4NmMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMCwgMHg0YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweGYwLCAweDAwLCAweDE4LCAweDA4LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MTgsIDB4ODEsIDB4ODMsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg5YiwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDBkLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgwMSwgMHgwMCwgMHhmOCwgMHg0MiwgMHg4MCwgMHgyZiwgMHgzNSwKKwkweDA4LCAweGEwLCAweDI4LCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDQwLCAweGEyLCAweGNkLCAweDM5LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhmOSwgMHg4MSwgMHg4MywgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweGUyLCAweGU1LCAweDM4LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NTgsIDB4MDgsIDB4MjgsIDB4MDAsIDB4MDAsIDB4NmMsIDB4ZDgsIDB4ZTAsIDB4ODYsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHg1YiwgMHgxMCwgMHgwMCwgMHhhMCwgMHgwMSwgMHg1MCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweDU4LCAweDA4LCAweDFkLCAweGY4LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDg1LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NTgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4NWMsIDB4MDgsIDB4MDQsIDB4YTAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMCwgMHhlOCwgMHgwNiwgMHg0MCwgMHg4MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDkwLCAweDAwLCAweGUwLCAweDA2LCAweGMwLCAweDg2LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NmUsIDB4MDgsIDB4MDAsIDB4OTgsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4YzAsIDB4ODQsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg2MiwgMHgwOCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDVmLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHg2MiwgMHgwOCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGUyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NWUsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHhlMCwgMHgwMCwgMHg2YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweGU4LCAweDAwLCAweDRjLCAweDA4LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4ZjAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg2YSwgMHgwOCwgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg5YiwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDBkLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgwMSwgMHgwMCwgMHhmOCwgMHg0MiwgMHg4MCwgMHgyZiwgMHgzNSwKKwkweDA4LCAweGEwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGEyLCAweGNkLCAweDM5LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwMCwgMHhlMCwgMHgwNiwgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDkwLCAweDAwLCAweGUwLCAweDA2LCAweGMwLCAweDg2LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDAsIDB4ZTgsIDB4MDYsIDB4NDAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg3NCwgMHgwOCwgMHgyYSwgMHg1ZCwgMHgwMSwgMHhlYywgMHgwNiwgMHg4MCwgMHhlZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDcxLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHg3NCwgMHgwOCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGUyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NzAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4OTQsCisJMHgxMCwgMHgwNCwgMHg3NywgMHgwOCwgMHgzNywgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4ZCwgMHgyZiwgMHhiMSwKKwkweDNiLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgxYywgMHgwMSwgMHhlOCwgMHg3NiwgMHgyMCwgMHg4MSwgMHgzOSwKKwkweDAwLCAweDAwLCAweGM2LCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweGY5LCAweDAxLCAweDAwLCAweGY0LAorCTB4MDAsIDB4MDAsIDB4N2QsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg3YywgMHgwOCwgMHgxMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MWQsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweGMyLCAweDAwLCAweDAzLCAweGJjLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4ODAsIDB4NjcsIDB4YTEsIDB4NzMsIDB4MzksCisJMHgzMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHg1YywgMHhhMiwgMHg4ZCwgMHgyYywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZDIsIDB4ZTAsIDB4ODMsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgyYSwgMHgwMCwgMHgwMCwgMHg3OCwgMHhmOSwgMHg4MSwgMHg4MywgMHhiNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweGUyLCAweGU1LCAweDM4LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgwOCwgMHgxZCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgxOCwgMHg4MSwgMHg4MywgMHhiNSwKKwkweDAwLCAweDAwLCAweDhhLCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MjksIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhkLCAweDA4LCAweDA0LCAweDA2LCAweDAxLCAweGVjLCAweDE2LCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4NDIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwOCwgMHhjMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMiwgMHhjZCwgMHgzOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDkwLCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NWMsIDB4MTAsIDB4MDAsIDB4YTAsIDB4MDEsIDB4NTAsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDkyLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhhZSwgMHgwOCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDk1LCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4MCwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweGFjLCAweDA4LCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDYxLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDgsIDB4ODAsIDB4YjgsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4NmUsIDB4YjIsCisJMHg0MCwgMHgwMCwgMHg5YywgMHgwOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHgwZCwgMHg5MCwgMHhiYywKKwkweDgwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDBkLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MDgsIDB4MDIsIDB4YjAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4MWIsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhiMiwgMHg4MSwgMHgyZiwgMHg5NCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDA3LCAweDAxLCAweDgwLCAweDEyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YjIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHhkNiwgMHgwMSwgMHg4MCwgMHg1MiwgMHhjMCwgMHg2ZSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ2LCAweDAxLCAweGVjLCAweDU2LCAweGMwLCAweDZlLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MTgsIDB4MDAsIDB4ODYsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhiNywgMHgwMSwgMHg3OCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDg2LCAweDMyLAorCTB4NDAsIDB4MDAsIDB4YWUsIDB4MDgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4MGQsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHhhMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAxLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDIwLCAweDgwLCAweGZhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MTgsIDB4MjAsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHhiMCwgMHgwMCwgMHgzYywgMHg4OCwgMHhkYiwgMHg4MywgMHhiZSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGMyLCAweDAxLCAweDc4LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjcsIDB4MjAsIDB4NzgsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHg3OCwgMHgwMSwgMHhlMCwgMHhmNiwgMHgyMCwgMHg4NiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDI1LCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGY4LCAweDYwLCAweDgwLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyZSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YzIsIDB4MDAsIDB4MDMsIDB4YmMsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgxOCwgMHgwMCwgMHg4MCwgMHg2NywgMHhhMSwgMHg3MywgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRhLCAweDVjLCAweDAxLCAweGVjLCAweDA2LCAweDgwLCAweGVlLCAweDMyLAorCTB4MzAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NWMsIDB4YTIsIDB4OGQsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGMyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YzIsIDB4ODEsIDB4MmYsIDB4OTUsCisJMHgwMCwgMHgwMCwgMHhiOCwgMHgwOCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGJiLCAweDA4LCAweDAwLCAweGQwLCAweDAxLCAweGU4LCAweDA2LCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YzIsIDB4ODEsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHhiYiwgMHgwOCwgMHgwNCwgMHhkMSwgMHgwMSwgMHg4MCwgMHgwMiwgMHg4MCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ2LCAweDAxLCAweGVjLCAweDI2LCAweGMwLCAweDZlLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YmQsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4OTIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjMCwgMHgwOCwgMHgwMCwgMHhjOCwgMHgwMSwgMHhlOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDkyLCAweDgxLCAweDJmLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4YzAsIDB4MDgsIDB4MDQsIDB4YzksIDB4MDEsIDB4ODAsIDB4MDIsIDB4ODAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHgzNCwKKwkweDEwLCAweDAwLCAweGFhLCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHg5YSwgMHgwMSwgMHgwMCwgMHhmOCwgMHg0MiwgMHg4MSwgMHgyZiwgMHhiNSwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDEyLCAweDAwLCAweDAwLCAweGM4LCAweDAyLCAweDAwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YzcsIDB4MDgsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NWMsIDB4MDgsIDB4ODAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMiwgMHg4MCwgMHgyYywgMHhiMiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDFmLCAweDgwLCAweGZmLCAweDlhLAorCTB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NzksIDB4MjEsIDB4MmYsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhmOSwgMHg4MSwgMHg5NywgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAyLCAweDQ0LCAweGUyLCAweDI1LCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDEsIDB4NTAsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwMSwgMHg2MCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAyLCAweDBjLCAweDA5LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDEsIDB4MWMsIDB4MDksIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg3NywgMHgxMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHgwOCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweGY4LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDg1LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGEsIDB4NWMsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4ODAsIDB4ZWUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhkMSwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGQ0LCAweDA4LCAweDIzLCAweDI5LCAweDAyLCAweDA0LCAweDA5LCAweDgwLCAweDZlLCAweGIyLAorCTB4M2MsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwOCwgMHgwMCwgMHhkOCwgMHgwOCwgMHgxZCwgMHgxYywgMHgwMSwgMHhlOCwgMHg3NiwgMHgyMCwgMHg4MSwgMHhiOSwKKwkweDAwLCAweDAwLCAweGQ4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MjksIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweGM2LCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweGY5LCAweDAxLCAweDAwLCAweGY0LAorCTB4MDAsIDB4MDAsIDB4ZGMsIDB4MDgsIDB4OWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDcsIDB4YzAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHg4MCwgMHgwNywgMHhjMCwgMHg5MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDgwLCAweDA3LCAweDAwLCAweGVlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4YzAsIDB4ODUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHg4MCwgMHgwNywgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDgwLCAweDg3LCAweDhkLCAweDg1LCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHg4MCwgMHgwNywgMHgwMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUzLCAweDA4LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgzMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHg1YywgMHhhMiwgMHg4ZCwgMHgyYywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MTIsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4OGQsIDB4MmYsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwMSwgMHg3OCwgMHgwOSwgMHg4MCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweGRjLCAweGQxLCAweDAxLCAweGU4LCAweDA2LCAweDgwLCAweDk3LCAweDkyLAorCTB4MTIsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDRmLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDA5LCAweDQwLCAweDgxLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MGUsIDB4MDAsIDB4YTgsIDB4MDEsIDB4MjAsIDB4MDksIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDMwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NDIsIDB4ODEsIDB4MmYsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgzNSwgMHgwMSwgMHgwMCwgMHhmOCwgMHgxMiwgMHg4MSwgMHgyZiwgMHhiNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MDEsIDB4YjAsIDB4MDIsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHhjMCwgMHhmNiwgMHgwOCwgMHgxOCwgMHgwMSwgMHgwMCwgMHgwYywgMHhhOCwgMHhjZCwgMHgzZSwgMHhiMiwKKwkweDIwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OWQsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4NzIsIDB4ZTAsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDQ3LCAweDEwLCAweDAwLCAweDk4LCAweDAxLCAweDI4LCAweDA5LCAweDAwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgwOCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGZmLCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDQyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg4MCwgMHgyZiwgMHhkMiwKKwkweDAwLCAweDAwLCAweGZmLCAweDA4LCAweDA4LCAweDViLCAweDAxLCAweGVjLCAweDA2LCAweGZiLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWEsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgzNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDA2LCAweDA5LCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YzIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwZCwgMHgwOSwgMHgwOCwgMHhjOSwgMHgwMSwgMHhlOCwgMHgwNiwgMHhiYiwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDAxLCAweGU4LCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MzIsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1OCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHg4MCwgMHgwMSwgMHhmMiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MGQsIDB4MDksIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YzIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg5MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDBkLCAweDA5LCAweDA4LCAweGQxLCAweDAxLCAweGU4LCAweDA2LCAweGJiLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDAsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgzMiwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDU4LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweGMwLCAweDAxLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDE3LCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDcsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgxMywgMHgwOSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMiwgMHgwMCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDE2LCAweDA5LCAweDEyLCAweDAxLCAweDAwLCAweDVjLCAweDA4LCAweDgwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDIsIDB4ODAsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxZiwgMHg4MCwgMHhmZiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDlkLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDcyLCAweGUwLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg3OSwgMHgyMSwgMHgyZiwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweGY5LCAweDgxLCAweDk3LCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDIsIDB4NDQsIDB4ZTIsIDB4MjUsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHhhMCwgMHgwMSwgMHg1MCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRiLCAweDc5LCAweDAxLCAweDYwLCAweDA4LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NWMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDFmLCAweDA5LCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgzMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1YywgMHhhMiwgMHg4ZCwgMHgyYywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDA3LCAweDAxLCAweGVjLCAweDE2LCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4ZGEsIDB4NWMsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4ODAsIDB4ZWUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHg5ZiwgMHg0MSwgMHgwMSwgMHg4MCwgMHg1MiwgMHgyMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDJkLCAweDA5LCAweDlmLCAweDk4LCAweDAxLCAweDgwLCAweDUyLCAweDIwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweGMwLCAweDJiLCAweDA5LCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4YWEsIDB4MDcsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgxMiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDNhLCAweDAwLCAweGFhLCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg0NywgMHgxMCwgMHgwMCwgMHg5OCwgMHgwMSwgMHgyOCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YWEsIDB4MDcsIDB4ZDUsIDB4NDEsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4NDAsIDB4ODEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MTEsIDB4MDAsIDB4NzgsIDB4MDEsIDB4NjAsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDAyLCAweDc4LCAweDA5LCAweDgwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MzUsIDB4MDksIDB4MDQsIDB4ZDQsIDB4MDEsIDB4ODAsIDB4MTIsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgxOSwgMHg4MCwgMHg5NywgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDAxLCAweGUwLCAweGU2LCAweDI1LCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHgzOSwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGFhLCAweDA3LCAweDAwLCAweDkwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDgwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDIsIDB4MDAsIDB4M2YsIDB4MDksIDB4MDQsIDB4YjksIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg0MSwgMHgwOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHhmYywgMHhiNiwKKwkweDAwLCAweDAwLCAweDQ0LCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NDEsIDB4MDksIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODAsIDB4ZmMsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg0NCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweGY1LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NDIsIDB4YmQsIDB4OTcsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg5OSwgMHhiMSwgMHhmMiwgMHhjMCwgMHg3YywgMHgzMCwKKwkweDAwLCAweGMwLCAweDQ4LCAweDA5LCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDgsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg1MCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDA3LCAweDAxLCAweGVjLCAweDE2LCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4YTIsIDB4MDAsIDB4MmQsIDB4MzcsCisJMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDk5LCAweGUxLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NGQsIDB4MDksIDB4MDQsIDB4MDEsIDB4MDAsIDB4NzgsIDB4MTksIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMiwgMHgwMCwgMHg1OSwgMHgwOSwgMHgwNCwgMHhiOSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGQ2LCAweDAxLCAweDAwLCAweDc4LCAweGM5LCAweGNkLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MDksIDB4YjYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg2NCwgMHgwMiwgMHg4MCwgMHg5NywgMHhiMiwKKwkweDAwLCAweDAwLCAweDUzLCAweDA5LCAweDEyLCAweDA4LCAweDAwLCAweDY0LCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NTQsIDB4MDksIDB4MTIsIDB4MTgsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1NSwgMHgwOSwgMHgxMiwgMHgxMCwgMHgwMCwgMHg2NCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE2LCAweDU0LCAweDAxLCAweGVjLCAweDA2LCAweDAwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwZSwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHg5NCwKKwkweDAwLCAweDIwLCAweDAwLCAweDRjLCAweGQ2LCAweDAxLCAweDAwLCAweDc4LCAweGM5LCAweGNkLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NWEsIDB4MDksIDB4YjYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg2NCwgMHgwMiwgMHg4MCwgMHg5NywgMHhiMiwKKwkweDAwLCAweDAwLCAweDVjLCAweDA5LCAweDEyLCAweDA4LCAweDAwLCAweDY0LCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NWQsIDB4MDksIDB4MTIsIDB4MzAsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg1ZSwgMHgwOSwgMHgxMiwgMHgzOCwgMHgwMCwgMHg2NCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDVmLCAweDA5LCAweDEyLCAweDQwLCAweDAwLCAweDY0LCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MDksIDB4MTIsIDB4NDgsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg2MSwgMHgwOSwgMHgxMiwgMHgxMCwgMHgwMCwgMHg2NCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDYyLCAweDA5LCAweDEyLCAweDE4LCAweDAwLCAweDY0LCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NjMsIDB4MDksIDB4MTIsIDB4MjAsIDB4MDAsIDB4NjQsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg2NCwgMHgwOSwgMHgxMiwgMHgyOCwgMHgwMCwgMHg2NCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE2LCAweDU0LCAweDAxLCAweGVjLCAweDA2LCAweDAwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjQsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMywgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwZSwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NmIsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4ODAsIDB4M2QsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDZlLCAweDA5LCAweDA0LCAweDAwLCAweDAwLCAweGRjLCAweDUzLCAweDYwLCAweDNkLCAweGIzLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDMsIDB4MzksCisJMHg2YSwgMHgwOSwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHhjMCwgMHg3NCwgMHgwOSwgMHgxOCwgMHgwMSwgMHgwMCwgMHgwYywgMHhhOCwgMHhjZCwgMHgzZSwgMHhiMiwKKwkweDIwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDMyLAorCTB4MTQsIDB4MDAsIDB4OWQsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHgxMCwgMHgwMCwgMHg4MiwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweDAyLCAweGMwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4Y2EsIDB4MDEsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDJjLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4N2QsIDB4MDksIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHg5NSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgyOSwgMHgwMCwgMHhhMiwgMHgwNywgMHgxMiwgMHgwMSwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MmMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDksIDB4YzAsIDB4ODUsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHhkMSwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDIzLCAweDAxLCAweDAwLCAweGY4LCAweDIyLCAweDgxLCAweDJmLCAweGI0LAorCTB4M2MsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDJjLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDA5LCAweGMwLCAweDg1LCAweGQyLAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MjIsIDB4ODEsIDB4MmYsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHg4YywgMHgwOSwgMHgzOCwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhjLCAweDA5LCAweDFlLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhmLCAweDA5LCAweDEyLCAweDAxLCAweDAwLCAweDYwLCAweDA4LCAweDQwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4ODIsIDB4OWMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDI0LCAweDA4LCAweDAwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDgsIDB4YzAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHg4MCwgMHgyMywgMHhiMiwKKwkweDAwLCAweGMwLCAweDk5LCAweDA5LCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHg4MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDMwLCAweDAyLCAweDQwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MDAsIDB4ODYsIDB4YjIsCisJMHgyMCwgMHg4MCwgMHg5YywgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHhmMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDUsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAxLCAweDBlLCAweDAwLCAweDMwLCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweGZhLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDksIDB4MzgsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ZjgsIDB4MDEsIDB4MGIsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwOSwgMHgwMiwgMHgwZCwgMHgwMiwgMHg4MCwgMHhhMiwgMHg1YiwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweGM4LCAweGMxLCAweDgyLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4YTgsIDB4MDEsIDB4ZTAsIDB4MTYsIDB4MjAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzYiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweGE3LCAweDA5LCAweDI3LCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzcsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ZTgsIDB4YzAsIDB4ODIsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHg0MCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg4NywgMHgzMiwKKwkweDA4LCAweDAwLCAweGIwLCAweDEwLCAweDAwLCAweDE4LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhYiwgMHgwOSwgMHgyMywgMHgxOSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHg4MSwgMHhiMiwKKwkweDNjLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YWQsIDB4MDksIDB4MWQsIDB4MjEsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHg5NSwKKwkweDAwLCAweDAwLCAweGIwLCAweDA5LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MjksIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YzYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ZjksIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDEwLCAweDAwLCAweGI2LCAweDA5LCAweDJjLCAweDMwLCAweDAwLCAweDAwLCAweDE3LCAweGUwLCAweDJjLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4YjgsIDB4MDksIDB4OGUsIDB4MzksIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhiOCwgMHgwOSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4NywgMHg5MiwKKwkweDAwLCAweDAwLCAweGI4LCAweDA5LCAweDhlLCAweDM5LCAweDAwLCAweDAwLCAweGI3LCAweGMxLCAweDgyLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhiYSwgMHgwOSwgMHgxMiwgMHgwMSwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4YzAsIDB4MDksIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjNSwgMHg4NSwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGM1LCAweDg1LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzUsIDB4ODUsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YjgsIDB4MDksIDB4OWYsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDAwLCAweDA4LCAweGU4LCAweDAxLCAweDAwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGM4LCAweDA5LCAweDFlLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweGE4LCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDEsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgzYiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweGE0LCAweDA3LCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4Y2UsIDB4MDksIDB4MTIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGM1LCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGM1LCAweDg1LCAweGQwLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YzUsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWMsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDYsIDB4YzAsIDB4ODUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MmMsIDB4MTAsIDB4ZDYsIDB4MDEsIDB4MDAsIDB4MmMsIDB4MDksIDB4YzAsIDB4ODUsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHhkMiwgMHgwMSwgMHgwMCwgMHg5NCwgMHgxZSwgMHg0MCwgMHhlOSwgMHg5YSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDIwLCAweDAwLCAweDE4LCAweDA4LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhlZSwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NTEsIDB4MDEsIDB4ODAsIDB4MDIsIDB4ODAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgyMSwgMHgwMSwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAwLCAweGU4LCAweDA2LCAweDQwLCAweDgxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTQsIDB4MDksIDB4MWYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhlMSwgMHgwOSwgMHg5ZSwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MmEsIDB4MzEsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHgzOSwKKwkweGE0LCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwYywgMHgwMCwgMHhlYiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweGViLCAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDA4LCAweDAwLCAweDAwLCAweDkyLAorCTB4MWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDgsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgyMCwgMHgwMCwgMHgxOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGYyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4ZWUsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgzMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MjUsIDB4MGEsIDB4MzgsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MDgsIDB4ODAsIDB4ODIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgyNSwgMHgwYSwgMHgwNCwgMHgyOCwgMHgwMSwgMHgwNCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA4LCAweDUwLCAweDAxLCAweDA0LCAweGE4LCAweDViLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDgsIDB4MjAsIDB4MDEsIDB4ZTAsIDB4MTYsIDB4MjAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHhlOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDBhLCAweDBhLCAweDA4LCAweDAxLCAweDAwLCAweDI4LCAweDE4LCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDEsIDB4ZTAsIDB4YTYsIDB4MjAsIDB4MDAsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweGZiLCAweDA5LCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDM4LCAweDA4LCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4OTcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHg5NywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgzZCwgMHgwMCwgMHgwYywgMHgwNywgMHg4MCwgMHg4MywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA4LCAweDQwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDgsIDB4MGEsIDB4MDQsIDB4MDIsIDB4MDEsIDB4ZWMsIDB4MTYsIDB4YzAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMCwgMHgxNCwgMHgxOCwgMHg0MCwgMHg4MSwgMHgzYSwKKwkweDAwLCAweGMwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGEyLCAweDhkLCAweDM5LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NjYsIDB4MGEsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDIsIDB4YzAsIDB4ODAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDZjLCAweDE4LCAweDIwLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NGMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwZiwgMHgwYSwgMHgwMCwgMHgzOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHg0MCwgMHg4MCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDZjLCAweDE4LCAweDIwLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDAsIDB4NGMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgxMSwgMHgwYSwgMHg5ZiwgMHgwMSwgMHgwMCwgMHgwNCwgMHg2OCwgMHg2MCwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDFhLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDE4LCAweDIwLCAweDAwLCAweDljLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgxNCwgMHgwYSwgMHgxMiwgMHgwMSwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4NzAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwZCwgMHgwYSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg2MCwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODAsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHhhMCwgMHgwZCwgMHgwYSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHhhMiwgMHg4ZCwgMHgzOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MWYsIDB4MGEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgxZiwgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhhMiwgMHhhMCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODAsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHhhMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMiwgMHg4ZCwgMHgzOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4ZTgsIDB4MDYsIDB4NDAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHhlMCwgMHgwNiwgMHg4MCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweGUwLCAweDA2LCAweDgwLCAweDgxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4YzAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgyNywgMHgwYSwgMHgwMCwgMHgxOCwgMHgwMCwgMHhlMCwgMHgwNiwgMHhjMCwgMHg4NCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDEwLCAweDAwLCAweDZjLCAweDA4LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4NGMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHg1MSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAwLCAweDAwLCAweDJhLCAweDBhLCAweDAwLCAweDUwLCAweDAxLCAweDNjLCAweGE4LCAweDViLCAweDgwLCAweDljLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MDAsIDB4MzAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwYSwgMHgzZSwgMHg1MSwgMHgwMSwgMHgwMCwgMHhhOCwgMHgxYiwgMHg4MCwgMHhiYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLCAweDAwLCAweDAwLCAweGY4LCAweGYyLCAweDgxLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4YzAsIDB4ZWUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwYSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg4NywgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGUyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4NGMsIDB4MGYsIDB4NjAsIDB4MzAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg3YiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg4NSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgzYSwgMHgwYSwgMHgwNCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM5LCAweDAxLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDEsIDB4MzgsIDB4MDgsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZiwgMHgwMCwgMHgwMCwgMHhhNCwgMHhhOCwgMHg2MCwgMHg4YSwgMHgzYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDBmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4YzAsIDB4M2UsIDB4MGEsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4YTIsIDB4OGQsIDB4MzksIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGYsIDB4MDAsIDB4MDAsIDB4YTQsIDB4YTgsIDB4NjAsIDB4OGEsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDM4LCAweDA4LCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGUsIDB4YTgsIDB4MDEsIDB4MjAsIDB4OTksIDB4MjIsIDB4NmUsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMiwgMHg4MCwgMHg4MiwgMHgxYiwgMHg5MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDQyLCAweDBhLCAweDJmLCAweDIwLCAweDAxLCAweGUwLCAweDk2LCAweDIyLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHg0YSwgMHgwYSwgMHgxZiwgMHg1MCwgMHgwMSwgMHhlOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDQ1LCAweDBhLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGMwLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NGEsIDB4MGEsIDB4MDAsIDB4NTAsIDB4MDEsIDB4ZTgsIDB4ZjYsIDB4NjAsIDB4ODAsIDB4OWMsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg3OCwgMHgzOSwgMHg5YSwgMHhmZSwgMHgzOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwOCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHg0MCwgMHgwMiwgMHgxNCwgMHgzOSwgMHg5YSwgMHhmZSwgMHhkOCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDY4LCAweDEyLCAweDlhLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4NGYsIDB4MGEsIDB4MmEsIDB4YTksIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4OTIsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHhjYSwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDFkLCAweDAwLCAweDRmLCAweDBhLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGE0LCAweDE3LCAweGI4LAorCTB4MDAsIDB4MDAsIDB4NGIsIDB4MGEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NTIsIDB4MGEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MzIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgzYywgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4MzIsCisJMHgwMCwgMHhjMCwgMHg2MSwgMHgwYSwgMHgxOCwgMHgwMSwgMHgwMCwgMHgwYywgMHhhOCwgMHhjZCwgMHgzZSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDgyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NTgsIDB4MGEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDE4LCAweDAwLCAweDVhLCAweDBhLCAweDJlLCAweDQ5LCAweDAxLCAweGUwLCAweGU2LCAweGEwLCAweDgyLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4NWIsIDB4MGEsIDB4MDAsIDB4NWUsIDB4MDEsIDB4ZWMsIDB4NzYsIDB4MDAsIDB4MDAsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDIwLCAweDgwLCAweGIwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweGYyLAorCTB4MWIsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwYywgMHgwMCwgMHhhMSwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHg4NSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDMwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YzIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHg5ZSwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHg4MCwgMHg4NSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjYiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweDAyLCAweGMwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweGNhLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MWQsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg5ZiwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOCwgMHg0MCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDY3LCAweDBhLCAweDBiLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4NmUsIDB4MGEsIDB4M2QsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg2ZSwgMHgwYSwgMHgzNCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHg4MSwgMHgyZiwgMHhiNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGIyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YjAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHg3MiwgMHgwYSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDJhLCAweDAwLCAweDc4LCAweDBhLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3NSwgMHgwYSwgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDc4LCAweDBhLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3OCwgMHgwYSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDI5LCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg4NSwgMHhiYywKKwkweDAwLCAweDAwLCAweGMyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4OWUsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4ODAsIDB4ODUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwNywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4MCwgMHgwYSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDMxLCAweDAxLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MzEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OWIsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgxMiwgMHhhMCwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNlLCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4ODYsIDB4MGEsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgyMCwgMHg4MCwgMHg5YywgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHhmMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhmLCAweDBhLCAweDNmLCAweDAwLCAweDAwLCAweDNjLCAweDA4LCAweDQwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGYsIDB4MGEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkZSwgMHgwMCwgMHgwMCwgMHhmOCwgMHhmMiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDAxLCAweGVjLCAweDA2LCAweGMwLCAweGVlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4ZTAsIDB4ODMsIDB4M2UsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhkYSwgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyOCwgMHhkOCwgMHhhMCwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA5LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4ZDgsIDB4YTAsIDB4ODEsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhkOCwgMHhlMCwgMHg4MywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OWIsIDB4MGEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMiwgMHhjMCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGFlLCAweDBhLCAweDUxLCAweDAwLCAweDAwLCAweGQ4LCAweDEyLCAweDgwLCAweDJkLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhhNywgMHgwYSwgMHgyOCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGE1LCAweDBhLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MGEsIDB4MWYsIDB4NDAsIDB4MDIsIDB4ODQsIDB4ZTYsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhhNSwgMHgwYSwgMHgxZCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweGE1LCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4YTMsIDB4MGEsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHhlMCwgMHgxNiwgMHgyMCwgMHg2ZSwgMHgzYywKKwkweDAwLCAweDAwLCAweDNjLCAweDBlLCAweGRhLCAweDViLCAweDAxLCAweGVjLCAweDA2LCAweDQwLCAweGVkLCAweGYyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhhYywgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YTcsIDB4MGEsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhZiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgyMCwgMHg4MCwgMHhmYSwKKwkweDAwLCAweDAwLCAweDkwLCAweDBhLCAweDRkLCAweDAwLCAweDAwLCAweDAwLCAweDY3LCAweGUwLCAweDgzLCAweDllLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhiYywgMHgwYSwgMHgyOCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwOCwgMHg0MCwgMHgwMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGJhLCAweDBhLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YjYsIDB4MGEsIDB4MWYsIDB4NDAsIDB4MDIsIDB4ODQsIDB4ZTYsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhiYSwgMHgwYSwgMHgxZCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweGJhLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4YjgsIDB4MGEsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHhlMCwgMHgxNiwgMHgyMCwgMHg2ZSwgMHgzYywKKwkweDAwLCAweDAwLCAweDNjLCAweDBlLCAweGRhLCAweDViLCAweDAxLCAweGVjLCAweDA2LCAweDQwLCAweGVkLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4ZTAsIDB4MGEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjMCwgMHgwYSwgMHgwNCwgMHgyMSwgMHgwMCwgMHhlMCwgMHgwNiwgMHg4MCwgMHg4MSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGFmLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDM0LCAweDA4LCAweDAwLCAweDAwLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHhlOCwgMHgwNiwgMHg0MCwgMHg4MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGM2LCAweDBhLCAweDJhLCAweDExLCAweDAwLCAweGUwLCAweGQ2LCAweGUwLCAweDg2LCAweGJhLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHhjNiwgMHgwYSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweGMyLCAweDBhLCAweDlmLCAweDAxLCAweDAwLCAweDgwLCAweDE4LCAweDAwLCAweDg4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDgsIDB4MDAsIDB4Y2EsIDB4MGEsIDB4MjMsIDB4MTksIDB4MDEsIDB4ZTgsIDB4NzYsIDB4MjAsIDB4ODEsIDB4YjksCisJMHgzYywgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGNlLCAweDBhLCAweDFkLCAweDE4LCAweDAwLCAweGUwLCAweDA2LCAweGMwLCAweDg0LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4Y2UsIDB4MGEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YzYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ZjksIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHhkMywgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg4OCwgMHhiYywKKwkweDAwLCAweDAwLCAweGQyLCAweDBhLCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzUsIDB4ODUsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4YzUsIDB4ODUsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMiwgMHhjNSwgMHg4NSwgMHhiMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4NzgsIDB4MTksIDB4MjAsIDB4NmUsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhlMiwgMHhhNSwgMHg4MiwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4ODgsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg4MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDUwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDEsIDB4MDEsIDB4MzgsIDB4MDgsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlNCwgMHgwYSwgMHgwNCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweGMwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGEyLCAweDhkLCAweDM5LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZTUsIDB4MGEsIDB4YzksIDB4MDEsIDB4MDAsIDB4MTQsIDB4MDgsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgzMCwgMHgwMCwgMHhlMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGVmLCAweDBhLCAweDI4LCAweDAwLCAweDAwLCAweDA4LCAweGU4LCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4ZWUsIDB4MGEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhlYSwgMHgwYSwgMHgxZiwgMHg0MCwgMHgwMiwgMHg4NCwgMHhlNiwgMHgwMSwgMHgwMCwgMHhiNCwKKwkweDAwLCAweDAwLCAweGVlLCAweDBhLCAweDFkLCAweDAxLCAweDAwLCAweGY4LCAweDIyLCAweDgxLCAweDJmLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4ZWUsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjIsIDB4ODEsIDB4MmYsIDB4OTUsCisJMHgwMCwgMHgwMCwgMHhlYywgMHgwYSwgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4NDAsIDB4NjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDNjLCAweDBlLCAweGRhLCAweDViLCAweDAxLCAweGVjLCAweDA2LCAweDQwLCAweGVkLCAweGYyLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4ZGYsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhmMywgMHgwYSwgMHgzZCwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGYzLCAweDBhLCAweDM0LCAweDAwLCAweDAwLCAweGY4LCAweGQyLCAweDgxLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YjIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhjYiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhlMiwgMHg4MSwgMHgyZiwgMHhmNSwKKwkweDA4LCAweDAwLCAweGIwLCAweDEwLCAweDAwLCAweDE4LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhmOCwgMHgwYSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDNjLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZmQsIDB4MGEsIDB4MjksIDB4MDgsIDB4MDEsIDB4ZTQsIDB4MDYsIDB4YzAsIDB4MmQsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMiwgMHgwYiwgMHgxZCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAyLCAweDBiLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MjksIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMiwgMHgwYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MSwgMHgyZiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGZmLCAweDBhLCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHgwMSwgMHgwYiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweGZlLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDljLAorCTB4MmEsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhjNywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhmOSwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweDA1LCAweDBiLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDgxLCAweGJjLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGM1LCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGM1LCAweDg1LCAweGQwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YzUsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg4NSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MzEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OWIsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxMiwgMHhhMCwgMHg4MiwgMHhiYywKKwkweDI1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MTAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4YTksIDB4NjAsIDB4ODAsIDB4ZDksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweDE1LCAweDBiLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4OWMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweGMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDhkLCAweDJmLCAweDMxLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDIwLCAweDBiLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4YTgsIDB4NjAsIDB4ODAsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwOCwgMHg0MCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDNiLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA4LCAweDgwLCAweDgyLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MjEsIDB4MGIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDIwLCAweDgwLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MjYsIDB4MGIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjgsIDB4NjgsIDB4YTAsIDB4ODIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhlMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGFmLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4MTcsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ODEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjNywgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweGNhLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MmUsIDB4MGIsIDB4M2QsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgyZSwgMHgwYiwgMHgzNCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHg4MSwgMHgyZiwgMHhiNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGIyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDgsIDB4ODAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgzYywgMHgwYiwgMHgwNCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDgwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZWYsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgzNCwgMHgwYiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg5MiwgMHhiYywKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4M2EsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MzgsIDB4ODAsIDB4ODcsIDB4ZjUsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGMyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHhhNSwgMHgwMiwgMHgyMywgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MCwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDMyLCAweDgwLCAweDJmLCAweDM1LAorCTB4M2MsIDB4MDAsIDB4YTUsIDB4MDIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFmLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4M2YsIDB4MGIsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgzMSwgMHgwMSwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDQxLCAweDBiLCAweDEyLCAweDAxLCAweDAwLCAweDYwLCAweDA4LCAweDQwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4ODIsIDB4NGIsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4YTgsIDB4OGQsIDB4ODAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwOCwgMHgwMCwgMHgyMywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDIwLCAweDA4LCAweGMwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4ODAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweDVjLCAweDBiLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4YTgsIDB4OGQsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMiwgMHg4MCwgMHg4MSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDNjLCAweDAyLCAweDAwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDIsIDB4NDAsIDB4ODIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMiwgMHgwMCwgMHg4NiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDUzLCAweDBiLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NGYsIDB4MGIsIDB4MWYsIDB4NDAsIDB4MDIsIDB4ODQsIDB4ZTYsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg1MywgMHgwYiwgMHgxZCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweDUzLCAweDBiLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MGIsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDAwLCAweDgwLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4YzUsIDB4ODUsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMiwgMHhjNSwgMHg4NSwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGM1LCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDFmLCAweGMwLCAweGY1LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MDAsIDB4MzAsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgzOSwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHhmMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDgxLCAweDMyLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MTcsIDB4ZTAsIDB4MmMsIDB4MzksCisJMHgwMCwgMHgxMCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweGIwLCAweDEwLCAweDAwLCAweDMwLCAweDAwLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg2YSwgMHgwYiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDNjLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YzMsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHg2ZSwgMHgwYiwgMHgxZCwgMHgyMSwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDcxLCAweDBiLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3MSwgMHgwYiwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDI5LCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhjNiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhmOSwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweDc0LCAweDBiLCAweDEyLCAweDAxLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweGNhLCAweDAxLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDg1LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MGIsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg3YSwgMHgwYiwgMHgxZiwgMHg0MCwgMHgwMiwgMHg4NCwgMHhlNiwgMHgwMSwgMHgwMCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDdlLCAweDBiLCAweDFkLCAweDAxLCAweDAwLCAweGY4LCAweDIyLCAweDgxLCAweDJmLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjIsIDB4ODEsIDB4MmYsIDB4OTUsCisJMHgwMCwgMHgwMCwgMHg3YywgMHgwYiwgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4NDAsIDB4NjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDgwLCAweDBiLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDg2LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MGEsIDB4MTEsIDB4MDAsIDB4OTAsIDB4MDEsIDB4MDgsIDB4MDksIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgzZiwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweDg3LCAweDBiLCAweDMzLCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ODcsIDB4MGIsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YjIsIDB4MDEsIDB4NzIsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4NywgMHgwYiwgMHg5ZiwgMHhmMCwgMHgwMSwgMHg4MCwgMHg4MiwgMHhkYiwgMHg4NywgMHhiYywKKwkweDAwLCAweDAwLCAweDg3LCAweDBiLCAweDlmLCAweGY4LCAweDAxLCAweDgwLCAweDIyLCAweDIxLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ZWUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMCwgMHgwMSwgMHhlMCwgMHgwNiwgMHhjMCwgMHg4NywgMHgzMiwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4OGQsIDB4MGIsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZDIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwYiwgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDAwLCAweDAwLCAweGY4LCAweDcyLCAweDgxLCAweDJmLCAweDM0LAorCTB4M2IsIDB4MDAsIDB4OGQsIDB4MGIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDlkLCAweDBiLCAweDI3LCAweDA5LCAweDAxLCAweGU0LCAweDA2LCAweGMwLCAweDJkLCAweGIyLAorCTB4MDAsIDB4YzAsIDB4OTUsIDB4MGIsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjNSwgMHg4NSwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjNSwgMHg4NSwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGM1LCAweDg1LCAweGIwLAorCTB4MjAsIDB4ODAsIDB4YTQsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4OTIsCisJMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDk4LCAweDAxLCAweDE0LCAweDA5LCAweDAwLCAweDZlLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4NDAsIDB4ODgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg4OCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDA3LCAweGMwLCAweDJjLCAweDMyLAorCTB4MDAsIDB4NDAsIDB4MDAsIDB4ODAsIDB4Y2EsIDB4MzksIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGU4LCAweDAxLCAweDAwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MGIsIDB4MWQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhMSwgMHgwYiwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDI5LCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhjNywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhmOSwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGM1LCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGM1LCAweDg1LCAweGQwLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YzUsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHhjMCwgMHhhZSwgMHgwYiwgMHgxOCwgMHgwMSwgMHgwMCwgMHgwYywgMHhhOCwgMHhjZCwgMHgzZSwgMHhiMiwKKwkweDIwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4NzIsIDB4ZTAsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4ZWUsIDB4MTAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgzMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDA4LCAweDgwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MTAsIDB4MDAsIDB4NmMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHgwMCwgMHgxOCwgMHgwMCwgMHg0YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweGI2LCAweDBiLCAweDAwLCAweDUwLCAweDAxLCAweDNjLCAweGE4LCAweDViLCAweDgwLCAweDljLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgxYiwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDA4LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NywgMHhlMCwgMHg4MywgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGVlLCAweDBiLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweGQ4LCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhkOCwgMHhhMCwgMHg4MSwgMHgzYywKKwkweDAwLCAweDAwLCAweGQ0LCAweDBiLCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGQ4LCAweGUwLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhjNSwgMHgwYiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDUwLCAweDAyLCAweGMwLCAweDM4LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4Y2QsIDB4MGIsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MTIsIDB4ODAsIDB4MmQsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4Y2IsIDB4MGIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGM2LCAweDBiLCAweDY3LCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDgwLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZDIsIDB4MGIsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MjAsIDB4ODAsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHhkMSwgMHgwYiwgMHgxMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4ODQsIDB4MzIsCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweGI3LCAweDBlLCAweDAwLCAweDYwLCAweDAwLCAweDZjLCAweDA4LCAweDAwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4YmEsIDB4MGIsIDB4NGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4ZTAsIDB4ODMsIDB4OWUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MWQsIDB4MDAsIDB4ZGIsIDB4MGIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGQ1LCAweDBiLCAweDY3LCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDgwLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDc4LCAweDM5LCAweDlhLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDA4LCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDQwLCAweDAyLCAweDE0LCAweDM5LCAweDlhLCAweGZlLCAweGQ4LAorCTB4MDgsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4NDAsIDB4MDIsIDB4NjgsIDB4MTIsIDB4OWEsIDB4ZmUsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwYiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDAsIDB4MDAsIDB4NmMsIDB4ZDgsIDB4ZTAsIDB4ODYsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHg1MSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAwLCAweDAwLCAweGU2LCAweDBiLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDA4LCAweDQwLCAweDgwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiOSwgMHgwYiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweGVjLCAweDBiLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4ZWIsIDB4MGIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDg0LCAweDMyLAorCTB4MWQsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHhiNywgMHgwZSwgMHgwMCwgMHg2MCwgMHgwMCwgMHg2YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweGJhLCAweDBiLCAweDRkLCAweDAwLCAweDAwLCAweDAwLCAweDY3LCAweGUwLCAweDgzLCAweDllLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHgwMSwgMHgzOCwgMHgwOCwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDMwLCAweDAwLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHhmNiwgMHgwYiwgMHgwNCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM5LCAweDAxLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDNhLAorCTB4MDAsIDB4YzAsIDB4ZjcsIDB4MGIsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4YTIsIDB4OGQsIDB4MzksIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDEsIDB4MjAsIDB4OTksIDB4MjIsIDB4NmUsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMiwgMHg4MCwgMHg4MiwgMHgxYiwgMHg5MiwgMHhiYywKKwkweDAwLCAweDAwLCAweGZiLCAweDBiLCAweDJmLCAweDIwLCAweDAxLCAweGUwLCAweDk2LCAweDIyLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgwYiwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzYywgMHhkOCwgMHhlMCwgMHg4MywgMHhiYywKKwkweDAwLCAweDAwLCAweGZlLCAweDBiLCAweDlmLCAweDMxLCAweDAxLCAweGUwLCAweDk2LCAweDIyLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwNywgMHgwYywgMHgwMCwgMHg1MCwgMHgwMSwgMHhlOCwgMHhmNiwgMHg2MCwgMHg4MCwgMHg5YywKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDc4LCAweDM5LCAweDlhLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDA4LCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDQwLCAweDAyLCAweDE0LCAweDM5LCAweDlhLCAweGZlLCAweGQ4LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4NjgsIDB4MTIsIDB4OWEsIDB4ZmUsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHgwNiwgMHgwYywgMHg5ZiwgMHgzMSwgMHgwMSwgMHhlMCwgMHg5NiwgMHgyMiwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg5MiwgMHgzMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MWQsIDB4MDAsIDB4MGMsIDB4MGMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHgwOCwgMHgwYywgMHgwNCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOCwgMHg0MCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweDIwLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4Y2IsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MTQsIDB4MGMsIDB4MjMsIDB4MDEsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmEsCisJMHgzYywgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MTUsIDB4MGMsIDB4MGIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgxYywgMHgwYywgMHgzZCwgMHgwMSwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHg4NSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDFjLCAweDBjLCAweDM0LCAweDAwLCAweDAwLCAweGY4LCAweGQyLCAweDgxLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YjIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweDIwLCAweDBjLCAweDI5LCAweDMxLCAweDAxLCAweDBjLCAweDA5LCAweDAwLCAweDZlLCAweGIyLAorCTB4MmEsIDB4MDAsIDB4YTIsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDI3LCAweDBlLCAweDAwLCAweDBjLCAweDAyLCAweDAwLCAweDA5LCAweDgwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MjQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgxMiwgMHgwMSwgMHgwMCwgMHgyYywgMHgwMiwgMHhlNCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MjcsIDB4MGMsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwOSwgMHg0MCwgMHg4MSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDRmLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4MmYsIDB4MGUsIDB4MDAsIDB4YTgsIDB4MDEsIDB4MjAsIDB4MDksIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMSwgMHgwYywgMHgwOSwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDI3LCAweDBlLCAweDAwLCAweDBjLCAweDAyLCAweDAwLCAweDA5LCAweDgwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweGMyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4OTAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4NzgsIDB4MGIsIDB4MTYsIDB4MzgsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHg3OCwgMHgwYiwgMHgxNiwgMHgzOCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweGE4LCAweDAwLCAweDJkLCAweDM3LAorCTB4MDAsIDB4Y2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4ODgsIDB4MGQsIDB4OGIsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHhiNCwgMHgwOCwgMHg4MCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDQ1LCAweDBjLCAweDA0LCAweDMxLCAweDAxLCAweDkwLCAweDA4LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4ODIsIDB4OGQsIDB4OGEsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHhjMiwgMHhhMiwgMHgyYywgMHgzYSwKKwkweDE4LCAweDAwLCAweDQzLCAweDBjLCAweDg2LCAweDQxLCAweDAyLCAweDc4LCAweDg4LCAweDBkLCAweDc4LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ZTIsIDB4OGEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg0MSwgMHgwMiwgMHg4MCwgMHhiMiwgMHgzZiwgMHg3OCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDNjLCAweDBjLCAweDlmLCAweDAxLCAweDAwLCAweGE4LCAweDE4LCAweDgwLCAweDhhLCAweGJjLAorCTB4YjcsIDB4MDAsIDB4M2MsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwNCwgMHhiOCwgMHgzZiwgMHg3OCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDU4LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGQ4LCAweDYyLCAweDgwLCAweDljLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MGMsIDB4MDIsIDB4ODAsIDB4YTIsIDB4MWIsIDB4ODksIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDgyLCAweDhkLCAweDhhLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4YzIsIDB4YTIsIDB4MmMsIDB4M2EsCisJMHgxOCwgMHgwMCwgMHg0ZSwgMHgwYywgMHg4NiwgMHg0MSwgMHgwMiwgMHg3OCwgMHg4OCwgMHgwZCwgMHg3OCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweGUyLCAweDhhLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NDEsIDB4MDIsIDB4ODAsIDB4YjIsIDB4M2YsIDB4NzgsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg0NywgMHgwYywgMHg5ZiwgMHgwMSwgMHgwMCwgMHhhOCwgMHgxOCwgMHg4MCwgMHg4YSwgMHhiYywKKwkweGI3LCAweDAwLCAweDQ3LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDA4LCAweDAwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NTEsIDB4MGMsIDB4MjgsIDB4NDAsIDB4MDIsIDB4MDQsIDB4YjgsIDB4M2YsIDB4NzgsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMSwgMHgwMCwgMHgwNCwgMHhkOCwgMHg2MiwgMHg4MCwgMHgzYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NTUsIDB4MGMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4OTAsIDB4MTgsIDB4MjAsIDB4ODksIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDQ3LCAweDBjLCAweDlmLCAweDAxLCAweDAwLCAweGE4LCAweDE4LCAweDgwLCAweDhhLCAweGJjLAorCTB4YjcsIDB4MDAsIDB4NDcsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg1OCwgMHgwYywgMHgwNCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgxOCwgMHgyMCwgMHg4OSwgMHhiYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDA0LCAweDQ4LCAweDYyLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OTAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4NDgsIDB4NjIsIDB4OGIsIDB4YmEsCisJMHgwMywgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwOCwgMHgxZSwgMHhmZiwgMHhiOCwKKwkweDAwLCAweDAwLCAweDYwLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDIyLCAweDgwLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4ODksIDB4MGMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ZTIsIDB4OGEsIDB4YmMsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHg4MiwgMHg4ZCwgMHg4YSwgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweGMyLCAweGEyLCAweDJjLCAweDNhLAorCTB4MTgsIDB4MDAsIDB4ODcsIDB4MGMsIDB4ODYsIDB4NDAsIDB4MDIsIDB4NzgsIDB4ODgsIDB4MGQsIDB4NzgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg0MCwgMHgwMiwgMHgwNCwgMHhiOCwgMHgzZiwgMHg3OCwgMHhiMCwKKwkweDAzLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDQwLCAweDAyLCAweDAwLCAweDA4LCAweDFlLCAweGZmLCAweGI4LAorCTB4MzgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHgwMCwgMHg4MCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDY3LCAweDBjLCAweDEyLCAweDAxLCAweDAwLCAweDYwLCAweDA4LCAweDQwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDcyLCAweGUwLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwOCwgMHgwMCwgMHgyMywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDIwLCAweDA4LCAweGMwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4ODAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4NzIsIDB4MGMsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMiwgMHg4MCwgMHg4MSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDNjLCAweDAyLCAweDAwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDIsIDB4NDAsIDB4ODIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzNCwgMHgwMiwgMHgwMCwgMHg4NiwgMHhiMiwKKwkweDIwLCAweDgwLCAweDY0LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHhiOCwgMHgxYiwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY0LCAweDMwLCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4MiwgMHgzMiwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDE3LCAweGUwLCAweDJjLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4ZjcsIDB4MDEsIDB4MGIsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4MSwgMHgwYywgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg4NywgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweGI3LCAweDAxLCAweDcwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg5MywgMHgwYywgMHgwMiwgMHgwYywgMHgwMiwgMHg4MCwgMHhhMiwgMHgxYiwgMHg4OSwgMHhiYywKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDMsIDB4MDAsIDB4MzgsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4NWEsIDB4MGMsIDB4OWYsIDB4MDEsIDB4MDAsIDB4YTgsIDB4MTgsIDB4ODAsIDB4OGEsIDB4YmMsCisJMHhiNywgMHgwMCwgMHg1YSwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDI3LCAweDAwLCAweDhjLCAweDBjLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4NzgsIDB4MDksIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHhhMiwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhlLCAweDBjLCAweDIzLCAweDU1LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweGIyLAorCTB4M2MsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg5MCwgMHgwYywgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4YzcsIDB4MDEsIDB4NzAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhkMSwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMywgMHgwMCwgMHgzOCwgMHhmMiwKKwkweDA4LCAweDAwLCAweDk3LCAweDBjLCAweDIzLCAweDE5LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweGI5LAorCTB4M2MsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg5OSwgMHgwYywgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDljLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgyOSwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAyLCAweDgxLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjNiwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHhmOSwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweGEwLCAweDBjLCAweDEyLCAweDAxLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDAzLCAweGNhLCAweDAxLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDg1LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4YWQsIDB4MGMsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHg4MiwgMHhiNiwKKwkweDIwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MzgsIDB4MDgsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZSwgMHgwMSwgMHhlYywgMHg2NiwgMHgwMCwgMHgwMCwgMHgzNCwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDAxLCAweGUwLCAweGU2LCAweGEwLCAweDgyLCAweDM5LAorCTB4MWIsIDB4MDAsIDB4YTEsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDIwLCAweDAwLCAweDg0LCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YzcsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4NTQsIDB4MDEsIDB4YjAsIDB4MDIsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHhjMCwgMHhiNiwgMHgwYywgMHgxOCwgMHgwMSwgMHgwMCwgMHgwYywgMHhhOCwgMHhjZCwgMHgzZSwgMHhiMiwKKwkweDIwLCAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OWQsIDB4MDMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4NzIsIDB4ZTAsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDU4LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDAyLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4YmQsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4YmQsIDB4MGMsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgyMCwgMHg4MCwgMHg5YywgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHhmMiwKKwkweDAwLCAweDAwLCAweGExLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MjgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgyMCwgMHgwMCwgMHg4NCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweGM3LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGU4LCAweDAxLCAweDAwLCAweGY0LAorCTB4MDAsIDB4MDAsIDB4YzIsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4ODUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGM2LCAweDBjLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGMwLCAweDg1LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YzYsIDB4MGMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHg0MSwgMHgwMiwgMHg4MCwgMHgwNiwgMHhjMCwgMHg4NSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFjLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4NGMsIDB4MGQsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHhjYSwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDRjLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDg1LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4MGQsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgyMiwgMHgwZCwgMHgxZiwgMHgyMCwgMHgwMSwgMHgwOCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDFhLCAweDBkLCAweDA0LCAweDMwLCAweDAxLCAweDA4LCAweDg5LCAweDliLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ZDIsIDB4MGMsIDB4MDQsIDB4MzEsIDB4MDEsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMCwKKwkweDAwLCAweDAwLCAweGQwLCAweDBjLCAweDAwLCAweDUwLCAweDAxLCAweDQ4LCAweDA4LCAweDgwLCAweDZlLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgyOCwgMHg2MSwgMHg4MCwgMHgzYywKKwkweDAwLCAweDAwLCAweGViLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDIxLCAweDgwLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHgwMCwgMHgzMCwgMHgwMSwgMHg0OCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweGQ2LCAweDBjLCAweDAwLCAweDUwLCAweDAxLCAweDA0LCAweGE4LCAweDViLCAweDgwLCAweDljLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMSwgMHgwMCwgMHhhOCwgMHgxYiwgMHg4MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweGU4LCAweDBjLCAweDA3LCAweDAwLCAweDAwLCAweDQ4LCAweDE4LCAweGEwLCAweDg0LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4NDAsIDB4NjgsIDB4MzIsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhhMCwgMHhmZSwgMHgzOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwNSwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhhMCwgMHhmZSwgMHhkOCwKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGEwLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4YTMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHhlMSwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZTgsIDB4MGMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MTgsIDB4YTAsIDB4ODQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHgzMiwKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGEwLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDA1LCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGEwLCAweGZlLCAweGQ4LAorCTB4MDUsIDB4MDAsIDB4ZGUsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YTAsIDB4ZmUsIDB4OTgsCisJMHgwMCwgMHgwMCwgMHhlYiwgMHgwYywgMHgwNCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgxOCwgMHhhMCwgMHg4NCwgMHhiYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDA0LCAweDI4LCAweDYxLCAweDgwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MjEsIDB4ODAsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGY0LCAweDBjLCAweDEyLCAweDAxLCAweDAwLCAweDYwLCAweDA4LCAweDQwLCAweDIzLCAweGIyLAorCTB4MDMsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NDAsIDB4MDIsIDB4MDAsIDB4MzgsIDB4MWEsIDB4ZmYsIDB4YjgsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHg2MCwgMHg4MCwgMHgzOSwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweGQyLCAweDQxLCAweDAyLCAweDhjLCAweGU2LCAweGExLCAweDk3LCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4ODAsIDB4ODQsIDB4MzIsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMCwgMHhkNiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDI4LCAweDAwLCAweGExLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwOCwgMHgwMCwgMHgyMywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDIwLCAweDA4LCAweGMwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4ODAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweGZlLCAweDBjLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHg4MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDMwLCAweDAyLCAweDQwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZWQsIDB4MGMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MDAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg4MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNiwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDgxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ODIsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgxNywgMHhlMCwgMHgyYywgMHgzOSwKKwkweDAwLCAweDAwLCAweDBkLCAweDBkLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDg3LCAweGI2LAorCTB4MDAsIDB4MTAsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MzgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwZSwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDEwLCAweDAwLCAweDg4LCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDM3LCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwNSwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhhMCwgMHhmZSwgMHhkOCwKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGEwLCAweGZlLCAweDM4LAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YTAsIDB4ZmUsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHg4MCwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4YTMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHhlYiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDIyLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTMsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwNSwgMHgwMCwgMHgxZCwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMiwgMHhhMCwgMHhmZSwgMHg5OCwKKwkweDAwLCAweDAwLCAweDIyLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDUsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4YTAsIDB4ZmUsIDB4ZDgsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhhMCwgMHhmZSwgMHgzOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgxYSwgMHgwZCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4NGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhhOSwgMHgwMCwgMHgyZCwgMHgzNywKKwkweGI0LCAweGNjLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDg3LCAweDhkLCAweDk3LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4OTksIDB4YzAsIDB4MmMsIDB4MzcsCisJMHhiNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg4OSwgMHg4ZCwgMHg5NywgMHgzYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDEwLCAweDAwLCAweDAwLCAweDg3LCAweGJmLCAweDk3LCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ZmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDJiLCAweDBkLCAweGI2LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MjAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NjQsIDB4YTIsIDB4Y2QsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDMwLCAweDBkLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MzksIDB4MGQsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4NDAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDI4LCAweDAwLCAweGExLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwOCwgMHgwMCwgMHgyMywgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDIwLCAweDA4LCAweGMwLCAweDIzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4ODAsIDB4MjMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweDQzLCAweDBkLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHg4MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDMwLCAweDAyLCAweDQwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZWQsIDB4MGMsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MzQsIDB4MDIsIDB4MDAsIDB4ODYsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGEzLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDA4LCAweDAwLCAweDAwLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NDYsIDB4MGQsIDB4MDAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4NDAsIDB4NjgsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDBkLCAweDAwLCAweDUwLCAweDAxLCAweDAwLCAweGE4LCAweDFiLCAweDgwLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDU4LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweDgwLCAweDAyLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MmIsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg1OCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHgwMCwgMHgwMiwgMHhmMiwKKwkweDAwLCAweDAwLCAweDRmLCAweDBkLCAweDlhLCAweDAxLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweGI0LAorCTB4MTAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4OGQsIDB4MmYsIDB4MzEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNiwgMHgwMSwgMHhlYywgMHgwNiwgMHhjMCwgMHg2ZSwgMHgzNCwKKwkweDJkLCAweDAwLCAweGEyLCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHhhOSwgMHgwMSwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDVhLCAweDBkLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NTYsIDB4MGQsIDB4MWYsIDB4NDAsIDB4MDIsIDB4ODQsIDB4ZTYsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg1YSwgMHgwZCwgMHgxZCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweDVhLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4NTgsIDB4MGQsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg1YywgMHgwZCwgMHgwNCwgMHg5OCwgMHgwMSwgMHg2NCwgMHg4OCwgMHgxYiwgMHg4NywgMHhiYywKKwkweDAwLCAweDAwLCAweDBhLCAweDExLCAweDAwLCAweDkwLCAweDAxLCAweDA4LCAweDA5LCAweDgwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4M2YsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjNSwgMHg4NSwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjNSwgMHg4NSwgMHhkMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGM1LCAweDg1LCAweGIwLAorCTB4MzAsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDZjLCAweDBkLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDg1LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4NjgsIDB4MGQsIDB4MWYsIDB4NDAsIDB4MDIsIDB4ODQsIDB4ZTYsIDB4MDEsIDB4MDAsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg2YywgMHgwZCwgMHgxZCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgyMiwgMHg4MSwgMHgyZiwgMHhiNCwKKwkweDAwLCAweDAwLCAweDZjLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDk1LAorCTB4MDAsIDB4MDAsIDB4NmEsIDB4MGQsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDgwLCAweDAyLCAweDQwLCAweDY4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGM1LCAweDg1LCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGM1LCAweDg1LCAweGQwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YzUsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwNywgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDM2LCAweDAwLCAweGE0LCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3ZCwgMHgwZCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHhjMSwgMHg4NSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDc5LCAweDBkLCAweDFmLCAweDQwLCAweDAyLCAweDg0LCAweGU2LCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4N2QsIDB4MGQsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MjIsIDB4ODEsIDB4MmYsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg3ZCwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHg5NSwKKwkweDAwLCAweDAwLCAweDdiLCAweDBkLCAweDFkLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjIsIDB4ODEsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFmLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4ODgsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4NiwgMHgwZCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHhjMSwgMHg4NSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDgyLCAweDBkLCAweDFmLCAweDQwLCAweDAyLCAweDg0LCAweGU2LCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4ODYsIDB4MGQsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MjIsIDB4ODEsIDB4MmYsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHg4NiwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHg5NSwKKwkweDAwLCAweDAwLCAweDg0LCAweDBkLCAweDFkLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjIsIDB4ODEsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFmLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MzAsIDB4MDAsIDB4ODgsIDB4MGQsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ0LCAweGQ1LCAweDAxLCAweGVjLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4MDksIDB4YzUsIDB4ODUsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4YzUsIDB4ODUsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwNywgMHgxMiwgMHgwMSwgMHgwMCwgMHg2OCwgMHgwMiwgMHhjNSwgMHg4NSwgMHhiMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YTIsIDB4MDcsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgwNywgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhlMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDkzLCAweDBkLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg1OCwgMHgwMSwgMHg4MCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweGEyLCAweDA3LCAweDA4LCAweDU5LCAweDAxLCAweGVjLCAweDA2LCAweGZiLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4ODAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweGMwLCAweDljLCAweDBkLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4ZmIsIDB4NmUsIDB4M2EsCisJMHgyMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDlkLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDcyLCAweGUwLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhlMiwgMHg4MSwgMHgyZiwgMHhmNCwKKwkweDAwLCAweDAwLCAweDlmLCAweDBkLCAweDA2LCAweDAzLCAweDAxLCAweDgwLCAweDEyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MTgsIDB4MDAsIDB4OWQsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDgsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgxOSwgMHgwMCwgMHg5ZCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwOCwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGYyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4ZCwgMHgyZiwgMHgzMSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgyOCwgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ1LCAweDMwLCAweDAwLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YzcsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4ZjQsCisJMHgwMCwgMHgwMCwgMHhhZCwgMHgwZCwgMHgwNCwgMHgwMiwgMHgwMSwgMHhlYywgMHgxNiwgMHhjMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM5LCAweDAxLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHhjMCwgMHhhZCwgMHgwZCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0MCwgMHhhMiwgMHg4ZCwgMHgzOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhhZCwgMHgwZCwgMHg5ZiwgMHgwMSwgMHgwMCwgMHgxNCwgMHgxOCwgMHg0MCwgMHg4MSwgMHhiYywKKwkweDAwLCAweDAwLCAweGIyLCAweDBkLCAweDNkLCAweDAxLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDg1LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YjIsIDB4MGQsIDB4MzQsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ZDIsIDB4ODEsIDB4MmYsIDB4YjUsCisJMHgzNCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGE0LCAweDA3LCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MmEsIDB4MDAsIDB4YTQsIDB4MDcsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTQsIDB4NTQsIDB4MDEsIDB4YjAsIDB4MDIsIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHgzMiwKKwkweDAwLCAweGMwLCAweGJjLCAweDBkLCAweDE4LCAweDAxLCAweDAwLCAweDBjLCAweGE4LCAweGNkLCAweDNlLCAweGIyLAorCTB4MjAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDgsIDB4ODAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg5ZCwgMHgwMywgMHgxMiwgMHgwMSwgMHgwMCwgMHgyYywgMHg3MiwgMHhlMCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MjAsIDB4MDAsIDB4ODAsIDB4ZGYsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMSwgMHgzOCwgMHg4OCwgMHgxYiwgMHgxNiwgMHgzOCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRlLCAweDQ4LCAweDAxLCAweDI4LCAweDg4LCAweDA0LCAweDZlLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4YzEsIDB4MGQsIDB4ODAsIDB4NWYsIDB4MDEsIDB4ODAsIDB4NzIsIDB4YzAsIDB4NmUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjMywgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhlMiwgMHg4MCwgMHgyZiwgMHg5NCwKKwkweDAwLCAweDAwLCAweGMzLCAweDBkLCAweDgwLCAweDVmLCAweDAxLCAweDgwLCAweDYyLCAweGMwLCAweDZlLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4YTksIDB4ODEsIDB4OTIsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhjYiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOCwgMHgwMSwgMHgwMCwgMHhmNCwKKwkweDAwLCAweDAwLCAweGM2LCAweDBkLCAweDEyLCAweDAxLCAweDAwLCAweDQ4LCAweDAyLCAweGMwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjOSwgMHgwZCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhkMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGM5LCAweDBkLCAweDM0LCAweDAwLCAweDAwLCAweGY4LCAweGQyLCAweDgxLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YjIsIDB4ODAsIDB4MmYsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgwNywgMHgwNCwgMHgzMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDJhLCAweDAwLCAweGE0LCAweDA3LCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMiwgMHg4MCwgMHgwMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4YzAsIDB4ZDIsIDB4MGQsIDB4MTgsIDB4MDEsIDB4MDAsIDB4MGMsIDB4YTgsIDB4Y2QsIDB4M2UsIDB4YjIsCisJMHgwMCwgMHg4MiwgMHgwMCwgMHgwMCwgMHhkNiwgMHgwMSwgMHgwMCwgMHgwOCwgMHgwOCwgMHg4MCwgMHgzNiwgMHgzMiwKKwkweDFkLCAweDAwLCAweGExLCAweDAzLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhjMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHgwMCwgMHhmMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDgwLCAweDAxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTYsIDB4MDEsIDB4NzgsIDB4MDksIDB4YzAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHgyYywgMHgzMiwKKwkweDAwLCAweDEwLCAweDAwLCAweGEwLCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ZWUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwYywgMHgwNywgMHg4MCwgMHg5NywgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweDAyLCAweGMwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4ZjAsIDB4ZTEsIDB4MGQsIDB4MWQsIDB4NDAsIDB4MDIsIDB4MDAsIDB4YTgsIDB4MGQsIDB4NjgsIDB4YjEsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwYiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDFlLCAweDQwLCAweDAyLCAweDg0LCAweDA2LCAweDAwLCAweDAwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4MDUsIDB4ODAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHhkZSwgMHgwZCwgMHhiNiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweGMwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY0LCAweGEyLCAweDBkLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZGEsIDB4MGQsIDB4YTYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhlMSwgMHgwZCwgMHhiNSwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE1LCAweDAwLCAweDgwLCAweGEwLCAweDM2LCAweDBiLCAweDZhLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4ZTYsIDB4MGQsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU0LCAweDAxLCAweGIwLCAweDAyLCAweGMwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHhlOSwgMHgwMSwgMHgwMCwgMHgzNCwKKwkweDAwLCAweDAwLCAweGVmLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4ZWIsIDB4MGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4OTIsIDB4YmMsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDM5LCAweDBiLCAweDJlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ZjMsIDB4ODEsIDB4OTcsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHhmMSwgMHgwZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhkOSwgMHgwMSwgMHgzMCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDUsIDB4MzAsIDB4MzAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMywgMHhhNCwgMHgwMywgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM0LCAweDMzLCAweDBiLCAweDJmLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YTQsIDB4MDMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZDksIDB4MDEsIDB4MzAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweGI5LCAweDA1LCAweDMwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHg4YSwgMHgwMiwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAyLCAweDgwLCAweDk3LCAweDMyLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjMCwgMHgyOSwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA4LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4MGQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4MmYsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwMCwgMHgyYywgMHgzMiwKKwkweGQ5LCAweDAyLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDk3LCAweGJjLAorCTB4NDYsIDB4MDMsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OGQsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweGYxLCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDAyLCAweDAwLCAweDAwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MTgsIDB4MGUsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4NDIsIDB4ODAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgxOCwgMHgwZSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmMiwgMHhjMSwgMHg4NSwgMHhiNiwKKwkweDAwLCAweDAwLCAweDE4LCAweDBlLCAweDFmLCAweDQwLCAweDAyLCAweDA4LCAweGI5LCAweGJmLCAweDY4LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDgsIDB4MGUsIDB4ODAsIDB4NDEsIDB4MDIsIDB4ODAsIDB4ZTIsIDB4ODEsIDB4NjgsIDB4YjYsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg3OSwgMHg2MSwgMHg4MCwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQyLCAweDIxLCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweDNhLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MDIsIDB4ODgsIDB4ZTYsIDB4MjEsIDB4OTEsIDB4NzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgxOSwgMHhhMCwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDE4LCAweDBlLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweGQyLCAweGZmLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MGMsIDB4MGUsIDB4MmMsIDB4NDEsIDB4MDIsIDB4NzgsIDB4ZjksIDB4ODEsIDB4NjgsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhiOSwgMHg4MSwgMHg5NywgMHgzNCwKKwkweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4NTksIDB4YzAsIDB4ODUsIDB4ZDcsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHgyOSwgMHgxYSwgMHhmZiwgMHgzOCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAyLCAweDAwLCAweGI5LCAweDFiLCAweDkwLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4NDEsIDB4MDIsIDB4ODgsIDB4MTYsIDB4YTAsIDB4OTcsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgyNywgMHgyNCwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDhhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NTgsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4NzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDA4LCAweDAwLCAweDIzLCAweDBlLCAweDFlLCAweDAxLCAweDAwLCAweDM0LCAweDc5LCAweDYxLCAweDgwLCAweGI5LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MzgsIDB4MDAsIDB4MDAsIDB4NTQsIDB4MWYsIDB4NDAsIDB4ZjUsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHg0MCwgMHgwMiwgMHgwMCwgMHgwOSwgMHg0MCwgMHg2OCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGI5LCAweDNmLCAweDkwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDEsIDB4ZTAsIDB4MjYsIDB4MjQsIDB4NmUsIDB4M2EsCisJMHgwOCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhhNCwgMHhmZSwgMHhiOCwKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDA1LCAweDkwLCAweGQwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4MDUsIDB4OTAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHgwNSwgMHg5MCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkMiwgMHgyMSwgMHgwMSwgMHhlMCwgMHgxNiwgMHgyMCwgMHg2ZSwgMHgzYSwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDFlLCAweDQxLCAweDAyLCAweDg0LCAweGU2LCAweDYxLCAweDkzLCAweDc5LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDIwLCAweDAxLCAweDgwLCAweDgyLCAweGRiLCAweDkwLCAweDdjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MjAsIDB4MDEsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweDBjLCAweDAyLCAweDgwLCAweGEyLCAweGRiLCAweDkwLCAweDdjLAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MGUsIDB4MDYsIDB4MjEsIDB4MDEsIDB4ODAsIDB4ODIsIDB4MWIsIDB4OTAsIDB4YmMsCisJMHgyNiwgMHgwMCwgMHgyZSwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDI3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MTIsIDB4MDAsIDB4MmMsIDB4M2EsCisJMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDAwLCAweDkyLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwgMHhhMCwgMHgwMSwgMHg3OCwgMHg4OSwgMHgxYiwgMHg5MiwgMHg3YSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDAxLCAweDc4LCAweDg5LCAweDliLCAweDk3LCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDIsIDB4MDAsIDB4ZjksIDB4YmEsIDB4NmUsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgzOSwgMHgwZSwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDM5LCAweDBlLCAweDAyLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ODksIDB4OGQsIDB4OTcsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwMiwgMHg4MCwgMHg4MiwgMHg5YiwgMHg5NywgMHg3YywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGY4LCAweGYyLCAweDgwLCAweDJmLCAweDc0LAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYSwgMHg1YiwgMHgwMSwgMHhlYywgMHgwNiwgMHg0MCwgMHhlZCwgMHgzMiwKKwkweDJkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4NDAsIDB4ODksIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHg0MiwgMHgwZSwgMHgwOCwgMHg1ZCwgMHgwMSwgMHhlYywgMHgxNiwgMHg0MCwgMHg4OSwgMHhiYywKKwkweDAwLCAweDAwLCAweDQyLCAweDBlLCAweDBiLCAweDVkLCAweDAxLCAweGVjLCAweDA2LCAweDAwLCAweDAwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NDIsIDB4MGUsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhiMiwgMHg4MCwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTgsIDB4MDEsIDB4NzgsIDB4ODksIDB4MWIsIDB4ODcsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhhMSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDQ3LCAweDBlLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDg2LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MGEsIDB4MTEsIDB4MDAsIDB4OTAsIDB4MDEsIDB4MDgsIDB4MDksIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMSwgMHhlMCwgMHgxNiwgMHgyMCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDNmLCAweDExLCAweDMzLCAweDAxLCAweDAwLCAweGY4LCAweDgyLCAweDgwLCAweDJmLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4M2YsIDB4MTEsIDB4OWYsIDB4ZjAsIDB4MDEsIDB4ODAsIDB4ODIsIDB4ZGIsIDB4ODcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgzZiwgMHgxMSwgMHg5ZiwgMHhmOCwgMHgwMSwgMHg4MCwgMHgyMiwgMHgyMSwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweGVlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4YzAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgzZiwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4OTEsIDB4YmMsCisJMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDEwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDUwLCAweDAxLCAweDE0LCAweGE5LCAweDliLCAweDkxLCAweGQ5LAorCTB4MTUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHgxNCwgMHg4OSwgMHgwZCwgMHg2ZSwgMHgzNywKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDMwLCAweDAxLCAweDE0LCAweDg5LCAweDViLCAweDkxLCAweGQyLAorCTB4MWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjMCwgMHgyZCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDIxLCAweDAxLCAweDgwLCAweDgyLCAweDliLCAweDkxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDEsIDB4NzgsIDB4MDksIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMiwgMHg4MCwgMHg4MiwgMHg5YiwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDcxLCAweDBlLCAweDA0LCAweDIxLCAweDAxLCAweDMwLCAweDY5LCAweDI0LCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4MDAsIDB4YTksIDB4OWIsIDB4OTEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg2NiwgMHgwZSwgMHgxZiwgMHg0MCwgMHgwMiwgMHgyNCwgMHgwOSwgMHg0MCwgMHg2OCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDVjLCAweDBlLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGUyLCAweDQxLCAweDkyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4YjksIDB4N2YsIDB4OTIsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOSwgMHgyNCwgMHg5MCwgMHgzYywKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDk5LCAweGE0LCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDA4LCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDk5LCAweGE0LCAweGZlLCAweGQ4LAorCTB4MDgsIDB4MDAsIDB4NWMsIDB4MGUsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NjgsIDB4OTIsIDB4YTQsIDB4ZmUsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NmIsIDB4MGUsIDB4MzgsIDB4NTAsIDB4MDEsIDB4NzgsIDB4MDksIDB4ODAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg2YiwgMHgwZSwgMHgwNCwgMHgyOCwgMHgwMSwgMHg4MCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDI4LCAweDAxLCAweDc4LCAweGU5LCAweDI1LCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDgsIDB4MDEsIDB4MDAsIDB4NzgsIDB4NjksIDB4YTQsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHhlMCwgMHg2NiwgMHgyNCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDZlLCAweDBlLCAweDM4LCAweDIwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDkzLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NmYsIDB4MGUsIDB4MDAsIDB4MjgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweGU4LCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHgwMCwgMHgwMCwgMHg3NywgMHgwZSwgMHgzOCwgMHg1MSwgMHgwMSwgMHgwMCwgMHhhOSwgMHg5YiwgMHg5MSwgMHhiYSwKKwkweDAwLCAweDAwLCAweDc1LCAweDBlLCAweDA0LCAweDQxLCAweDAyLCAweDA4LCAweGI5LCAweGZmLCAweDY4LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4NDEsIDB4MDIsIDB4ODAsIDB4ZTIsIDB4YzEsIDB4NjgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg3MiwgMHgwZSwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDg0LCAweDBlLCAweDlmLCAweDMxLCAweDAxLCAweGUwLCAweDY2LCAweDI0LCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ODQsIDB4MGUsIDB4MDAsIDB4MzAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHg4MSwgMHgwZSwgMHgwNCwgMHgyOCwgMHgwMSwgMHgwNCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDUwLCAweDAxLCAweDgwLCAweGEyLCAweDViLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4N2YsIDB4MGUsIDB4OWYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTksIDB4MjQsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHhlMCwgMHg2NiwgMHgyNCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDAxLCAweGUwLCAweDA2LCAweDI0LCAweDAwLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDEsIDB4ZTgsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg5MywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDcwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4ZSwgMHgwZSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDg0LCAweDBlLCAweDA0LCAweDQxLCAweDAyLCAweDA4LCAweGI5LCAweGZmLCAweDY4LCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4NDEsIDB4MDIsIDB4ODAsIDB4ZTIsIDB4YzEsIDB4NjgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4MSwgMHgwZSwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHg5MiwKKwkweDAwLCAweDAwLCAweDg4LCAweDBlLCAweDAyLCAweDAwLCAweDAwLCAweDgwLCAweDIyLCAweDI0LCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGUsIDB4MGUsIDB4ODAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4NjgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4YywgMHhiNiwgMHhjMSwgMHg2OCwgMHgzNSwKKwkweDAwLCAweDAwLCAweDhlLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDIyLCAweDgxLCAweDJmLCAweDk0LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4NzgsIDB4MzksIDB4OWEsIDB4ZmUsIDB4MzgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA2LCAweDAxLCAweDAwLCAweDgwLCAweDkyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NzMsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4ODAsIDB4OTcsIDB4ZDIsCisJMHgwOCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHg0MCwgMHgwMiwgMHg2OCwgMHgxMiwgMHg5YSwgMHhmZSwgMHhiOCwKKwkweDAwLCAweDAwLCAweDgxLCAweDBlLCAweDA0LCAweDAxLCAweDAwLCAweDAwLCAweDI5LCAweDI0LCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg3OSwgMHgwYiwgMHgxNiwgMHgzOCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDc5LCAweDBiLCAweDE2LCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NDIsIDB4ZTQsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhhOSwgMHgwMCwgMHgyZCwgMHgzNywKKwkweDAwLCAweGNjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDg5LCAweDRkLCAweDkwLCAweDNhLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4ODIsIDB4MGQsIDB4OTEsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgxMiwgMHhhNCwgMHgyYSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDk5LCAweDBlLCAweDgwLCAweDQwLCAweDAyLCAweDgwLCAweGUyLCAweDAxLCAweDdjLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NDAsIDB4MDIsIDB4NzgsIDB4YjksIDB4M2YsIDB4N2MsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOSwgMHhhNSwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDliLCAweDBlLCAweDlmLCAweDAxLCAweDAwLCAweDEwLCAweDE5LCAweDAwLCAweDkxLCAweGJjLAorCTB4YjcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg5NCwgMHgwZSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHhlNCwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweGM5LCAweDI0LCAweDkwLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MjIsIDB4YTQsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHhlMCwgMHg2NiwgMHgyNCwgMHg2ZSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweGU4LCAweDA2LCAweDAwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4OTMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MTgsIDB4MDAsIDB4YTUsIDB4MGUsIDB4MWYsIDB4NDEsIDB4MDIsIDB4NzgsIDB4ODgsIDB4Y2QsIDB4NjgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgxMiwgMHgwMCwgMHgyYywgMHgzYSwKKwkweDAwLCAweDAwLCAweGE4LCAweDBlLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDYyLCAweDgwLCAweDg3LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NDEsIDB4MDIsIDB4ODAsIDB4YjIsIDB4ZmYsIDB4NjgsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHgwMCwgMHg0MCwgMHgwMiwgMHg4MCwgMHgwMiwgMHg0MCwgMHg2OCwgMHg5MiwKKwkweDAzLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDQwLCAweDAyLCAweDAwLCAweDM4LCAweDFhLCAweGZmLCAweGI4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MWYsIDB4NDAsIDB4MDIsIDB4MDQsIDB4YjgsIDB4ZmYsIDB4NjgsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHhiOCwgMHgxYiwgMHg4MCwgMHgzYSwKKwkweDJlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4MDAsIDB4ODAsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4YjYsIDB4MGUsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhiMywgMHgwZSwgMHgxMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4ODQsIDB4MzIsCisJMHgxZCwgMHgwMCwgMHhiNiwgMHgwZSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweGIwLCAweDBlLCAweDlmLCAweDAxLCAweDAwLCAweDgwLCAweDE4LCAweDAwLCAweDg4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHg2YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDY4LCAweDAwLCAweDRjLCAweDA4LCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4NzAsIDB4MDAsIDB4MTgsIDB4MDgsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDEwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweGE5LCAweDYwLCAweDgxLCAweGQ5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4YTAsIDB4ODEsIDB4N2MsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweGMxLCAweDBlLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGUyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjMSwgMHgwZSwgMHgxYiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDgwLCAweDYyLCAweGUwLCAweDgzLCAweDdjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MTgsIDB4NDAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MCwgMHgyZiwgMHgzNSwKKwkweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDEyLCAweDAxLCAweDAwLCAweDQwLCAweGEyLCAweDhkLCAweDM5LCAweDcyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAxLCAweGU0LCAweDA2LCAweGMwLCAweDJkLCAweDMyLAorCTB4ZWUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4ZTAsIDB4ODYsIDB4OGQsIDB4MmYsIDB4MzEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHhiMywgMHhlNCwgMHgzOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweGNkLCAweDBlLCAweDA0LCAweDAwLCAweDAwLCAweDc4LCAweGQ5LCAweDAxLCAweDMwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MzIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhiOSwgMHgwNSwgMHgzMCwgMHgzMCwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGUzLCAweGE1LCAweDAzLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzQsIDB4MzMsIDB4MGIsIDB4MmYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhkOSwgMHgwMSwgMHgzMCwgMHg3NiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4YjksIDB4MDUsIDB4MzAsIDB4MzAsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmOCwgMHhlMywgMHhhNSwgMHgwMywgMHg3OSwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZDgsIDB4MGUsIDB4MjAsIDB4MDAsIDB4MDEsIDB4MmMsIDB4MDksIDB4YzAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhkOSwgMHgwZSwgMHgwMCwgMHgxNiwgMHg4NiwgMHhjYywgMHgwNiwgMHhjMCwgMHg5MiwgMHg5MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDg2LCAweGNjLCAweDA2LCAweGMwLCAweDkyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4NjIsIDB4OGUsIDB4OTIsIDB4NTIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZGYsIDB4MGUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ZDksIDB4MDEsIDB4MzAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg0MiwgMHg4MCwgMHg5NywgMHhiYywKKwkweGRmLCAweDBlLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDAyLCAweDAwLCAweDM2LCAweDkyLAorCTB4NjAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OGQsIDB4MmYsIDB4YjEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMywgMHgwMCwgMHgzOCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDAyLCAweDAwLCAweDMwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MjIsIDB4MGYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ZDgsIDB4MDEsIDB4MzAsIDB4YjYsCisJMHhlNCwgMHgwZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHg4MiwgMHg0ZCwgMHg4MiwgMHgzYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4ZGYsIDB4MGUsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwZiwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGVjLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDQ4LCAweDA1LCAweDMwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmNywgMHgwZSwgMHgzMiwgMHgwZiwgMHgwMSwgMHhiYywgMHgwOCwgMHhjMCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAxLCAweGRjLCAweDAyLCAweDQwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZjAsIDB4MGUsIDB4MWYsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhmNiwgMHgwZSwgMHgxZCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4YTksIDB4MDAsIDB4MmQsIDB4MzcsCisJMHgyMCwgMHhjZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHg5NywgMHgzYSwKKwkweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDg3LCAweGEwLCAweGVhLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ZWEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0OCwgMHgwMiwgMHhjMCwgMHgzOCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweGUwLCAweDI2LCAweDAxLCAweDZlLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4ZmIsIDB4MGUsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YzAsIDB4OGIsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwZSwgMHg4MiwgMHgzMiwKKwkweDAwLCAweGUwLCAweDAzLCAweDBmLCAweDEyLCAweDAxLCAweDAwLCAweDQ4LCAweGEyLCAweDBkLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHgwMCwgMHgzMiwKKwkweGI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4YTksIDB4MDAsIDB4MmQsIDB4MzcsCisJMHgwMCwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHg5NywgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDk5LCAweDAwLCAweDgyLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ODcsIDB4YmYsIDB4OTcsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHhmZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg4OSwgMHg2MCwgMHgzOCwgMHgzMiwKKwkweDFkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweGE0LCAweDE3LCAweDM4LAorCTB4MDAsIDB4MDAsIDB4MDksIDB4MGYsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YzAsIDB4OGIsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwYSwgMHgwZiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhmMywgMHg0MSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDBmLCAweDBmLCAweDA0LCAweDAwLCAweDAwLCAweDc4LCAweGQ5LCAweDAxLCAweDMwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MzIsIDB4ODAsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiOSwgMHgwNSwgMHgzMCwgMHgzMCwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDAzLCAweGE0LCAweDAzLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTksIDB4Y2UsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHhlMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMiwgMHgwZCwgMHg5MCwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDEsIDB4ZGMsIDB4MDIsIDB4NDAsIDB4NmUsIDB4MzIsCisJMHgxZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhhNCwgMHgxNywgMHgzOCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDMyLCAweDgwLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MTAsIDB4MDEsIDB4ODAsIDB4MjIsIDB4MDEsIDB4NmUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgxOCwgMHgwZiwgMHgxZiwgMHgwMSwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDIwLCAweDBmLCAweDFkLCAweDEwLCAweDAxLCAweGY4LCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4ZTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhhOSwgMHgwMCwgMHgyZCwgMHgzNywKKwkweDIwLCAweGNkLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDg3LCAweDhkLCAweDk3LCAweDNhLAorCTB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MzcsIDB4OGIsIDB4ZWEsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHhlYSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHhmOCwgMHgwMiwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweGVlLCAweGZmLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDJmLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHhlZSwgMHhmZiwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMSwgMHgwMSwgMHg4MCwgMHg4MiwgMHgwZCwgMHg2ZSwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweGY4LCAweDAyLCAweDAwLCAweDZlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4MDEsIDB4ZGMsIDB4MDIsIDB4NDAsIDB4NmUsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA5LCAweDAwLCAweDAwLCAweDMyLAorCTB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4ODksIDB4NGQsIDB4MGQsIDB4MzYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHgwYiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgyYiwgMHgwZiwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0YywgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4MmMsIDB4MGYsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOSwgMHgwMiwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDI4LCAweDBmLCAweDA0LCAweDAxLCAweDAwLCAweDA0LCAweDE5LCAweDQwLCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDNiLCAweDBmLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MzUsIDB4MGYsIDB4MTIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDNhLCAweDBmLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MjIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg5ZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxOCwgMHgwMCwgMHg4OCwgMHhiYywKKwkweDAwLCAweDAwLCAweDM1LCAweDBmLCAweDEyLCAweDAxLCAweDAwLCAweGU4LCAweDAyLCAweGMwLCAweDIxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHg2YywgMHg4OCwgMHgxYywgMHg4MywgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDAwLCAweDRjLCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDgsIDB4NTAsIDB4MDAsIDB4MTgsIDB4YzgsIDB4MjAsIDB4NzIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHg4MSwgMHg3YywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODgsIDB4MDEsIDB4ODIsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDA2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4YmMsCisJMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg3NywgMHg0YSwgMHgwOSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MTksIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDg0LCAweDcyLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NywgMHhlMCwgMHg4MywgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4ODYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHhjMCwgMHg4NCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGEzLCAweDBmLCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweGQ4LCAweGEwLCAweDgyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDksIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHhkOCwgMHhhMCwgMHg4MSwgMHgzYywKKwkweDAwLCAweDAwLCAweDY3LCAweDBmLCAweDA0LCAweDAwLCAweDAwLCAweDNjLCAweGQ4LCAweGUwLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg1OCwgMHgwZiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDUwLCAweDAyLCAweGMwLCAweDM4LCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NjAsIDB4MGYsIDB4NTEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MTIsIDB4ODAsIDB4MmQsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4NWUsIDB4MGYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NzIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDU5LCAweDBmLCAweDY3LCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDgwLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4MDIsIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg3MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NjUsIDB4MGYsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MjAsIDB4ODAsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHg2NCwgMHgwZiwgMHgxMiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwOSwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4ODQsIDB4MzIsCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDAwLCAweDAwLCAweGI3LCAweDBlLCAweDAwLCAweDYwLCAweDAwLCAweDZjLCAweDA4LCAweDAwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NGQsIDB4MGYsIDB4NGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjcsIDB4ZTAsIDB4ODMsIDB4OWUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDE4LCAweDAwLCAweDM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDBhLCAweDAzLCAweGY5LAorCTB4MWQsIDB4MDAsIDB4NmUsIDB4MGYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDY4LCAweDBmLCAweDY3LCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDgwLCAweDJmLCAweGI1LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxZCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHhhNCwgMHgxNywgMHhiOCwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQwLCAweDAyLCAweDc4LCAweDM5LCAweDlhLCAweGZlLCAweDM4LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhiYSwgMHg5NywgMHhiYywKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDgwLCAweDk3LCAweGQyLAorCTB4MDgsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4NDAsIDB4MDIsIDB4NjgsIDB4MTIsIDB4OWEsIDB4ZmUsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwYiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MDAsIDB4MDAsIDB4ODYsIDB4MGYsIDB4MWYsIDB4MDAsIDB4MDAsIDB4NmMsIDB4ZDgsIDB4ZTAsIDB4ODYsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHhhMywgMHgwZSwgMHg1MSwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmMiwKKwkweDAwLCAweDAwLCAweDc5LCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDA4LCAweDQwLCAweDgwLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ODYsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg3ZSwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4N2UsIDB4MGYsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg3ZSwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgzMiwgMHg4MCwgMHg4NywgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGUyLCAweDgwLCAweDJmLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4NGMsIDB4MGYsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4ODEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4NCwgMHgwZiwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDgzLCAweDBmLCAweDEyLCAweDAxLCAweDAwLCAweDAwLCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHg0MCwgMHg4NCwgMHgzMiwKKwkweDFkLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGE0LCAweDE3LCAweGI4LAorCTB4MDAsIDB4MDAsIDB4YjcsIDB4MGUsIDB4MDAsIDB4NjAsIDB4MDAsIDB4NmMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4ZjIsCisJMHgwMCwgMHgwMCwgMHg0ZCwgMHgwZiwgMHg0ZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NywgMHhlMCwgMHg4MywgMHg5ZSwKKwkweDAwLCAweDAwLCAweDg5LCAweDBmLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGUyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YTcsIDB4MGYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweGE4LCAweDYwLCAweDhhLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MjEsIDB4MDEsIDB4ODAsIDB4ODIsIDB4NWIsIDB4OGEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4ZCwgMHgwZiwgMHgyZiwgMHhhOCwgMHgwMSwgMHgyMCwgMHg5OSwgMHgyMiwgMHg2ZSwgMHhiYSwKKwkweDAwLCAweDAwLCAweDJmLCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGYwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDIsIDB4ODAsIDB4ODIsIDB4MWIsIDB4OTIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg5MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDAxLCAweGU4LCAweDA2LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OTIsIDB4MGYsIDB4MjMsIDB4MjEsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgzYywgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgyYywgMHg4MiwgMHhjZCwgMHgyZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDMwLCAweDAwLCAweGUwLCAweDA2LCAweDgwLCAweDgyLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MGYsIDB4MDQsIDB4MjEsIDB4MDAsIDB4ZTAsIDB4MDYsIDB4ODAsIDB4ODEsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhlMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDlhLCAweDBmLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OTksIDB4MGYsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDg0LCAweDMyLAorCTB4MWQsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YTQsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHhiNywgMHgwZSwgMHgwMCwgMHg2MCwgMHgwMCwgMHg2YywgMHgwOCwgMHgwMCwgMHg2ZSwgMHhmMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweGUwLCAweDA2LCAweDgwLCAweDgxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4ZTgsIDB4MDYsIDB4NDAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgxMCwgMHgwMCwgMHhlMCwgMHgwNiwgMHhjMCwgMHg4NiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweDE5LCAweDAwLCAweGUwLCAweDA2LCAweGMwLCAweDg0LCAweDcyLAorCTB4MDAsIDB4MDAsIDB4YTEsIDB4MGYsIDB4MTIsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDksIDB4YzAsIDB4MjEsIDB4YjIsCisJMHgxOCwgMHgwMCwgMHgzNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMywgMHhmOSwKKwkweDFkLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGE0LCAweDE3LCAweGI4LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4NzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHhkOCwgMHhlMCwgMHg4MywgMHgzYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDUwLCAweGYyLCAweGMxLCAweDM4LCAweGI0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4MCwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDEyLCAweDAwLCAweDJjLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDA5LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHhlZSwgMHgwNSwgMHhhZiwgMHgwZiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHg0ZCwgMHhmNSwgMHhiYywKKwkweDAwLCAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YjEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDksIDB4YzAsIDB4MDksIDB4OTIsCisJMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweDgwLCAweDA5LCAweDMyLAorCTB4MWUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4YzAsIDB4ODcsIDB4Y2QsIDB4MDAsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHg2MCwgMHhjMCwgMHgwNywgMHg4MCwgMHg5NywgMHgzMiwKKwkweDAwLCAweDMwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweDhkLCAweDJhLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NWMsIDB4NTIsIDB4ODEsIDB4OTcsIDB4YjQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOSwgMHgyNCwgMHg5MCwgMHgzYSwKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweDBkLCAweDkwLCAweDM2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MTksIDB4NDAsIDB4OTAsIDB4M2MsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHg1MiwgMHg4MiwgMHgyYSwgMHgzYSwKKwkweDAwLCAweDA4LCAweGIxLCAweDBmLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweDhkLCAweDJhLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4YzIsIDB4MGYsIDB4MDYsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgyMCwgMHhiMiwKKwkweDFlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGMwLCAweDg3LCAweGNkLCAweDAwLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4YzAsIDB4MDcsIDB4ODAsIDB4OTcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg1YywgMHg1MiwgMHg4MSwgMHgyYSwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI5LCAweDI0LCAweDkwLCAweDNhLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4ODksIDB4MGQsIDB4OTAsIDB4MzYsCisJMHgwMCwgMHgwMCwgMHhiYiwgMHgwZiwgMHgwNCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgxOSwgMHg0MCwgMHg5MCwgMHhiYywKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDg5LCAweDBkLCAweDkwLCAweDM2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MGUsIDB4ODAsIDB4OTcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg2OCwgMHgwMiwgMHg4MCwgMHg5NywgMHhiMiwKKwkweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI0LCAweDg5LCAweDBkLCAweDkwLCAweDM2LAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ODksIDB4NGQsIDB4OTIsIDB4M2MsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHg4MiwgMHg0ZCwgMHg5MiwgMHgzNiwKKwkweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDg5LCAweDRkLCAweDkyLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MTgsIDB4OWIsIDB4ODEsIDB4YjIsIDB4ZTQsIDB4NzgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHg5YiwgMHg4ZCwgMHhiNywgMHhlNCwgMHg3OCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE0LCAweDBlLCAweDgwLCAweDk3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjksIDB4MjQsIDB4OTAsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg1OSwgMHgwMCwgMHg5MCwgMHgzNiwKKwkweDAwLCAweDAwLCAweGM0LCAweDBmLCAweDk1LCAweDAxLCAweDAwLCAweDgwLCAweDIyLCAweDI0LCAweDkwLCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGVjLCAweDBmLCAweDA0LCAweDAxLCAweDAwLCAweDc4LCAweGQ5LCAweDAxLCAweDMwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4YzAsIDB4MjksIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHhiMiwgMHg0NSwgMHgyOCwgMHgzMCwKKwkweDAwLCAweDAwLCAweGRkLCAweDBmLCAweDg2LCAweDAxLCAweDAwLCAweDA4LCAweDA5LCAweDgwLCAweDJmLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDksIDB4NDAsIDB4ODEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDIsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHg4MCwgMHg5MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGRjLCAweDBmLCAweDA0LCAweDA3LCAweDAxLCAweDgwLCAweDAyLCAweGMwLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4ZTcsIDB4MGYsIDB4YzMsIDB4MDcsIDB4MDEsIDB4ZWMsIDB4YjYsIDB4ZTQsIDB4NmUsIDB4OWEsCisJMHgwMCwgMHgwMCwgMHhlNywgMHgwZiwgMHgwMCwgMHgwNiwgMHgwMSwgMHhlYywgMHhiNiwgMHhlNCwgMHg2ZSwgMHg5YSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDUyLCAweDgwLCAweDkwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MDksIDB4MDUsIDB4ODAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY0LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4OGEsIDB4MDIsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHg4MCwgMHg5MiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGYyLCAweGMxLCAweDkyLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4ZmEsIDB4OTIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNiwgMHgwMSwgMHgwMCwgMHg4MCwgMHg5MiwgMHhmYSwgMHg5MiwgMHhiYywKKwkweDQ0LCAweDAwLCAweDJjLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweGEyLCAweDhkLCAweDJmLCAweGQyLAorCTB4MjEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjMCwgMHg5MiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZWMsIDB4MGYsIDB4MDQsIDB4MDEsIDB4MDAsIDB4NzgsIDB4ZDksIDB4MDEsIDB4MzAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhkNCwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHhiMiwgMHg0NSwgMHgyOCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDIyLCAweDgwLCAweDk3LCAweDdjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweGMwLCAweGU4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4MDIsIDB4YzAsIDB4ZTgsIDB4MzIsCisJMHgwMiwgMHgwMCwgMHhmMSwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHhjMiwgMHgwYSwgMHgwMCwgMHhiOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGFiLCAweGU0LCAweGIwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZjYsIDB4MGYsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YzIsIDB4NGEsIDB4ZDAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwOSwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLAorCTB4MDAsIDB4MDAsIDB4ZjksIDB4MGYsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4ZjgsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDAwLCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4Y2QsIDB4NGEsIDB4ZDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhjMiwgMHg0YSwgMHhkMCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA0LCAweDAxLCAweDAwLCAweDI4LCAweDA5LCAweDM0LCAweGIwLCAweGJhLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4YzIsIDB4NGEsIDB4ZDAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhmZCwgMHgwZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDA0LCAweGNkLCAweDRhLCAweGQwLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MDAsIDB4NTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHhiMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgyMiwgMHgwMCwgMHgyYiwgMHhiNywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDg0LCAweGMwLCAweDM3LCAweGFjLCAweGIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MGIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHhhOSwgMHg0ZCwgMHhiMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDA4LCAweDEwLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweGIwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MTIsIDB4NDAsIDB4YjAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHg2OSwgMHg4MSwgMHg5NywgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg0LCAweDA4LCAweDBiLCAweDAwLCAweDdjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTcsIDB4MjUsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHgyYSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGIwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ZDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0OCwgMHhmMiwgMHhjMSwgMHgzOCwgMHg1NCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MGUsIDB4MTAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhhYiwgMHhlNCwgMHhiMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDEzLCAweDEwLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweGQwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDAwLCAweDAwLCAweDE2LCAweDEwLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweGY4LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwOSwgMHgwMCwgMHgwMCwgMHg1MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDA0LCAweDBkLCAweDQwLCAweGQwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4ZDAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgxZCwgMHgxMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwOSwgMHgzNCwgMHhiMCwgMHhiYSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweGQwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MWEsIDB4MTAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwZCwgMHg0MCwgMHhkMCwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDI4LCAweDA5LCAweDAwLCAweDAwLCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MWQsIDB4MTAsIDB4YjAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHg4NCwgMHhjMCwgMHgzNywgMHhhYywgMHhiMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDAwLCAweDAwLCAweDBjLCAweDBiLCAweDAwLCAweDAwLCAweDMyLAorCTB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4YTksIDB4NGQsIDB4YjAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgyNSwgMHgxMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHhiMCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDEyLCAweDQwLCAweGIwLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4NjksIDB4ODEsIDB4OTcsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwOCwgMHgwYiwgMHgwMCwgMHg3YywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU3LCAweDI1LCAweDAxLCAweDMyLAorCTB4MDAsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODcsIDB4OGQsIDB4MmEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHhiMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGQwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDgsIDB4ZjIsIDB4YzEsIDB4MzgsIDB4NTQsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4NDEsIDB4MDIsIDB4ODAsIDB4MDYsIDB4YzAsIDB4OTIsIDB4NTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjNSwgMHg5MiwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg3MywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg4MCwgMHg5NywgMHhkMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDY4LCAweDAyLCAweGM1LCAweDkyLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MGIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHhjMCwgMHhmNSwgMHgzYSwKKwkweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4YzAsIDB4OTIsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NCwgMHgwMSwgMHhiMCwgMHgwMiwgMHhjMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDgyLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDA4LCAweDA4LCAweDgwLCAweDM2LCAweDUyLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgzOCwgMHg4MCwgMHg4NywgMHgzNSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDg3LCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MDEsIDB4ZTAsIDB4MTYsIDB4MjAsIDB4NmUsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjNSwgMHg4NSwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAxLCAweGUwLCAweDE2LCAweDIwLCAweDZlLCAweDNjLAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDIsIDB4MDEsIDB4MDAsIDB4NzgsIDB4ZTksIDB4ZTUsIDB4ODMsIDB4MzksCisJMHgxOCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHg0MSwgMHgwMiwgMHg4NCwgMHhlNiwgMHhhMSwgMHg5NywgMHhiOSwKKwkweDAwLCAweDAwLCAweDQzLCAweDEwLCAweDM2LCAweDUxLCAweDAxLCAweGU4LCAweDE2LCAweGUwLCAweDgzLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NDMsIDB4MTAsIDB4MWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg2MiwgMHg4MSwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDQ1LCAweDEwLCAweDM4LCAweDIxLCAweDAxLCAweGUwLCAweDA2LCAweDQwLCAweDgwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4NDAsIDB4ODAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMSwgMHgwMCwgMHhlMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg3MiwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg4MCwgMHg5MiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ1LCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDkyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHg0MCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgzOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDQxLCAweDAxLCAweGUwLCAweDA2LCAweDgwLCAweDkyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MDIsIDB4YzAsIDB4ODAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwOCwgMHhlOCwgMHgwMSwgMHgwMCwgMHg3NCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg2MiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDkyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYSwgMHgzZCwgMHgwMCwgMHgwYywgMHgwNywgMHg4MCwgMHg4MywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDAxLCAweDAwLCAweDQ4LCAweDAyLCAweGMwLCAweDgwLCAweDcyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDU3LCAweDAxLCAweDgwLCAweDAyLCAweGMwLCAweDZlLCAweDdjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTcsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4ODAsIDB4OTIsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGQxLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDMwLCAweDAzLCAweDAwLCAweDM4LCAweGYyLAorCTB4MzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgxOSwgMHhhMCwgMHgyYywgMHhkOSwKKwkweDAwLCAweDAwLCAweDYwLCAweDEwLCAweDlkLCAweDExLCAweDAyLCAweDBjLCAweDA5LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NjEsIDB4MTAsIDB4MDAsIDB4ZjAsIDB4MDEsIDB4MWMsIDB4MDksIDB4MDAsIDB4NmUsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiOCwgMHgwMSwgMHgxYywgMHgwOSwgMHgwMCwgMHg2ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDYzLCAweDEwLCAweDJjLCAweGNkLCAweDAxLCAweDE4LCAweDA5LCAweDgwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4YzksIDB4YzEsIDB4OTAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHg2NywgMHgxMCwgMHgzYiwgMHgyOSwgMHgwMiwgMHgwNCwgMHgwOSwgMHg4MCwgMHg2ZSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweGQ2LCAweDAxLCAweDgwLCAweDUyLCAweGMwLCAweDZlLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDYsIDB4MDEsIDB4ZWMsIDB4NTYsIDB4YzAsIDB4NmUsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhiOSwgMHhjMSwgMHg5MCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDc3LCAweDEwLCAweDAwLCAweGE4LCAweDAxLCAweDA4LCAweDA5LCAweDAwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4NmIsIDB4MTAsIDB4OWQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTcsIDB4ZTAsIDB4OTAsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHg4MCwgMHgwNywgMHhjMCwgMHg5MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDZlLCAweDEwLCAweDAwLCAweDM4LCAweDAwLCAweDgwLCAweDA3LCAweDAwLCAweGVlLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4NmUsIDB4MTAsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4YzAsIDB4OTEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHhlZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDg2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NzEsIDB4MTAsIDB4MzksIDB4MDgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4YzAsIDB4ODUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjMiwgMHg4MSwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ5LCAweGM5LCAweDAxLCAweGU4LCAweDA2LCAweDgwLCAweDkxLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzgsIDB4MTEsIDB4MDAsIDB4ODAsIDB4MDcsIDB4NDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg3NCwgMHgxMCwgMHgzYiwgMHgyMSwgMHgwMCwgMHg4MCwgMHgwNywgMHgwMCwgMHg4NiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGRiLCAweDAwLCAweDAwLCAweDYwLCAweDE4LCAweDAwLCAweDg2LCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4NzgsIDB4MDEsIDB4ZTAsIDB4MTYsIDB4MjAsIDB4ODYsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOSwgMHgwMCwgMHg4MCwgMHgwNywgMHgwMCwgMHg4NSwgMHg3MiwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4N2IsIDB4MTAsIDB4MDIsIDB4MGMsIDB4MDIsIDB4ODAsIDB4YTIsIDB4OWIsIDB4OTAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg3OCwgMHgyOSwgMHgwMCwgMHg2ZSwgMHgzNiwKKwkweDAwLCAweDAwLCAweDdiLCAweDEwLCAweDAyLCAweDAwLCAweDAwLCAweDgwLCAweGUyLCAweGE1LCAweDkwLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMSwgMHg3OCwgMHg0OSwgMHgyMSwgMHg2ZSwgMHgzYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweGU5LCAweGE1LCAweDkwLCAweDNmLAorCTB4MDAsIDB4MDAsIDB4ODIsIDB4MTAsIDB4MDQsIDB4MjAsIDB4MDIsIDB4MDgsIDB4ODksIDB4OWIsIDB4OTAsIDB4YmUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYSwgMHgwMiwgMHg1OCwgMHhiOCwgMHg5YiwgMHg5MCwgMHgzNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweDQ5LCAweGExLCAweDkwLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWYsIDB4ODgsIDB4MDEsIDB4ODAsIDB4ODIsIDB4OWIsIDB4OTcsIDB4N2MsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwMSwgMHhlMCwgMHgwNiwgMHg4MCwgMHg5NywgMHg3MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDAyLCAweDU4LCAweGI4LCAweDliLCAweDkwLCAweDc2LAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YiwgMHgxMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDg5LCAweDEwLCAweDEyLCAweDAxLCAweDAwLCAweDc4LCAweDA5LCAweGMwLCAweDIxLCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhiLCAweDEwLCAweGNhLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDg0LCAweDkyLAorCTB4MTUsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4NzgsIDB4ZTksIDB4NjUsIDB4MTcsIDB4YjgsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhhMiwgMHg4MCwgMHgyZiwgMHgzNSwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDQwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4MmQsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MCwgMHgwMCwgMHg2YywgMHg4OCwgMHgxYywgMHg4MywgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweDAwLCAweDRjLCAweDA4LCAweDAwLCAweDcyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDgsIDB4NTAsIDB4MDAsIDB4MTgsIDB4YzgsIDB4MjAsIDB4NzIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg4MCwgMHg2MiwgMHhhMCwgMHg4MiwgMHg3YywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDlmLCAweDAwLCAweDAwLCAweDE0LCAweDE4LCAweDQwLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MjAsIDB4ODgsIDB4MDEsIDB4ODIsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDA2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MzYsIDB4YmMsCisJMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg3NywgMHg0YSwgMHgwOSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDgyLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MTksIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhmMiwgMHhjMSwgMHgzOCwgMHhiNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGQ4LCAweDAyLCAweDQwLCAweDg0LCAweDcyLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgyYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGUyLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGMwLCAweDg1LCAweGQyLAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4MTAsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4YzEsIDB4ODUsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhhMiwgMHgxMCwgMHgxZiwgMHg0MCwgMHgwMiwgMHg4NCwgMHhlNiwgMHgwMSwgMHgwMCwgMHhiNCwKKwkweDAwLCAweDAwLCAweGE2LCAweDEwLCAweDFkLCAweDAxLCAweDAwLCAweGY4LCAweDIyLCAweDgxLCAweDJmLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4YTYsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NjIsIDB4ODEsIDB4MmYsIDB4OTUsCisJMHgwMCwgMHgwMCwgMHhhNCwgMHgxMCwgMHgxZCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDYyLCAweDgxLCAweDJmLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDIsIDB4ODAsIDB4MDIsIDB4NDAsIDB4NjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxZiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhiMCwKKwkweDAwLCAweDAwLCAweDczLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweGM1LCAweDg1LCAweGQwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4NjgsIDB4MDIsIDB4YzUsIDB4ODUsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOSwgMHhjNSwgMHg4NSwgMHgzMCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDAyLCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGJhLCAweDk3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4YmEsIDB4OTcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZCwgMHgwMCwgMHgwMCwgMHg1YywgMHgxZiwgMHhjMCwgMHhmNSwgMHg3YSwKKwkweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDhkLCAweDJmLCAweDcwLAorCTB4MjksIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgwMiwgMHg4MSwgMHgyZiwgMHg3NCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4ODAsIDB4YTgsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OGQsIDB4MmYsIDB4NzAsCisJMHgwMCwgMHgwMCwgMHhiNywgMHgxMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhkMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4YmEsIDB4MTAsIDB4MDQsIDB4YjAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MiwgMHg4MSwgMHgyZiwgMHgzNCwKKwkweDNiLCAweDAwLCAweGJhLCAweDEwLCAweDEyLCAweDAxLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhiYSwgMHgxMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhmMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDMwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YmQsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NDIsIDB4ODEsIDB4MmYsIDB4OTQsCisJMHgwMCwgMHgwMCwgMHhiZCwgMHgxMCwgMHg4MCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhiMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDM0LCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDJjLCAweDgyLCAweGNkLCAweDJlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NDIsIDB4ODEsIDB4MmYsIDB4MzQsCisJMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHg3MCwKKwkweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDhkLCAweDJmLCAweDcwLAorCTB4M2EsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MmMsIDB4ODIsIDB4Y2QsIDB4MmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmOCwgMHgxMiwgMHg4MSwgMHgyZiwgMHg3NCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg2NSwgMHgwMSwgMHg4MCwgMHhhMiwgMHhkYiwgMHgyYywgMHhiYywKKwkweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAxLCAweGU4LCAweDc2LCAweDIwLCAweDgxLCAweDM5LAorCTB4ZWUsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4ODIsIDB4OGQsIDB4MmYsIDB4NzEsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGNiLCAweDEwLCAweDAwLCAweDAwLCAweDAxLCAweDM4LCAweDA4LCAweGMwLCAweDZlLCAweGYyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDIsIDB4YzAsIDB4ODAsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4Y2QsIDB4MTAsIDB4MDQsIDB4MzgsIDB4MDEsIDB4NzgsIDB4MDksIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4ODIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhkMSwgMHgxMCwgMHgyZSwgMHgxOSwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHg5NywgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweGU5LCAweDgxLCAweDkyLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4ZDUsIDB4MTAsIDB4MjcsIDB4MzEsIDB4MDAsIDB4MDAsIDB4MDcsIDB4YzAsIDB4MmMsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNSwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHg4NywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM3LCAweDAwLCAweDAwLCAweDI4LCAweGU5LCAweDgwLCAweDkyLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODcsIDB4MzIsCisJMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOSwgMHgwMCwgMHgwMCwgMHhlNywgMHhhMCwgMHg5MiwgMHg3OSwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg0MCwgMHg5MCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQ0LCAweDEyLCAweGU0LCAweDM4LCAweGIyLAorCTB4MTgsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4NzMsIDB4MGEsIDB4MDMsIDB4ZjksCisJMHgwMCwgMHgwMCwgMHhkZiwgMHgxMCwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHgyZCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAxLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4ZGEsIDB4MTAsIDB4NjcsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4YTIsIDB4ODAsIDB4MmYsIDB4YjUsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHhlOCwgMHgwMiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDcyLCAweDgwLCAweDJkLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4NDAsIDB4MDAsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDFiLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDc5LCAweDBhLCAweDkxLCAweDM5LAorCTB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MzksIDB4MGIsIDB4OTEsIDB4MzksCisJMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg1OSwgMHgwYSwgMHg5MSwgMHgzOSwKKwkweDA5LCAweDAwLCAweGU1LCAweDEwLCAweGYxLCAweDAxLCAweDAwLCAweDEwLCAweDY5LCAweDBiLCAweDkxLCAweGI5LAorCTB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ODYsIDB4YTgsIDB4ODIsIDB4OGQsIDB4NmMsIDB4MzcsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHhlMCwgMHgwNywgMHgwMCwgMHg5MSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweGUwLCAweDA3LCAweDQwLCAweDkxLCAweDMyLAorCTB4MDAsIDB4ODAsIDB4ZWIsIDB4MTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4OGQsIDB4MmEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHhlYywgMHgxMCwgMHhlMSwgMHgyNCwgMHg4NiwgMHhjOCwgMHgwNiwgMHgwMCwgMHgwMCwgMHg5MiwKKwkweDAzLCAweDAwLCAweDAwLCAweDAwLCAweGUxLCAweDI0LCAweDg2LCAweGM4LCAweDg2LCAweDhkLCAweDJhLCAweDM2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGY0LCAweDEwLCAweDA0LCAweDMwLCAweDAwLCAweDgwLCAweDgyLCAweDliLCAweDgxLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MGQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg5ZiwgMHgzYywgMHgwMCwgMHgxNCwgMHgyOCwgMHg4MCwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2EsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4MDIsIDB4ODAsIDB4MmYsIDB4MzUsCisJMHgwMCwgMHhhMCwgMHg4YSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg0MCwgMHhhMiwgMHg4ZCwgMHgzOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweGY2LCAweDEwLCAweDgwLCAweDM5LCAweDAwLCAweDgwLCAweGUyLCAweDgwLCAweDZlLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MzgsIDB4MDAsIDB4ODAsIDB4ZjIsIDB4ODAsIDB4NmUsIDB4YjYsCisJMHgwMCwgMHhlMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4ZCwgMHgyZiwgMHhiMCwKKwkweDAwLCAweGUwLCAweGZkLCAweDEwLCAweDA0LCAweDM4LCAweDAwLCAweDc4LCAweDg5LCAweDhkLCAweDZlLCAweGIwLAorCTB4MTAsIDB4MDAsIDB4ZmQsIDB4MTAsIDB4OWYsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4ZTIsIDB4YTUsIDB4MmYsIDB4YjksCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjMCwgMHhlZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDgxLCAweDJmLCAweGI2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MDEsIDB4ZWMsIDB4MDYsIDB4YzAsIDB4ZWUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDI4LCAweDAwLCAweDE4LCAweDA5LCAweDAwLCAweDZlLCAweDcyLAorCTB4MDAsIDB4MDAsIDB4NGYsIDB4MGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjAsCisJMHgwMCwgMHgwMCwgMHgyZiwgMHgwZSwgMHgwMCwgMHhhOCwgMHgwMSwgMHgyMCwgMHgwOSwgMHgwMCwgMHg2ZSwgMHg5MiwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4MDQsIDB4YTksIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHhiMCwgMHgwMCwgMHg4MCwgMHg4MiwgMHg5YiwgMHg4MSwgMHg3YywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDBkLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4OWYsIDB4YmMsIDB4MDAsIDB4MTQsIDB4MjgsIDB4ODAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhhMiwgMHg4MCwgMHgyZiwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGNhLCAweDAxLCAweDAwLCAweGY4LCAweDQyLCAweDgwLCAweDJmLCAweDM1LAorCTB4MDgsIDB4YTAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDEsIDB4MDAsIDB4NDAsIDB4YTIsIDB4Y2QsIDB4MzksIDB4NzIsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg4MCwgMHg5MCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDBmLCAweDExLCAweDMzLCAweGNkLCAweDAxLCAweGJjLCAweDA4LCAweDgwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4NGUsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MjksIDB4MjIsIDB4ZWUsIDB4ZGMsCisJMHgwMCwgMHgwMCwgMHgxNCwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDE0LCAweDExLCAweDA0LCAweGI4LCAweDAxLCAweDI4LCAweDA5LCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MTQsIDB4MTEsIDB4OWYsIDB4NzEsIDB4MDEsIDB4ODAsIDB4YzIsIDB4MjEsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyOCwgMHhhOSwgMHgyNCwgMHhlZSwgMHgzYywKKwkweDAwLCAweDAwLCAweDRlLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDE5LCAweDgwLCAweDkyLCAweGRmLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgwMCwgMHgwMCwgMHgyOCwgMHgxMSwgMHgwNiwgMHg4MCwgMHgwMSwgMHg4MCwgMHg4MiwgMHg5YiwgMHg5MCwgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDkwLCAweGJjLAorCTB4ZWUsIDB4MDUsIDB4MjAsIDB4MTEsIDB4MDYsIDB4MGMsIDB4MDIsIDB4ODAsIDB4ODIsIDB4OGQsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHg5MCwgMHg0YywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwMiwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDFhLCAweDExLCAweGI4LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MTgsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjNCwgMHgwMywgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAxLCAweGUwLCAweDk2LCAweDIxLCAweDZlLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjEsIDB4OTgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAwLCAweDAwLCAweDc4LCAweDQ5LCAweDQwLCAweDNjLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MmQsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4ZTksIDB4YTUsIDB4OTAsIDB4OWEsCisJMHg2MCwgMHg4OSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwMiwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDIzLCAweDExLCAweGI4LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4MjEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjNCwgMHgwMywgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAxLCAweGUwLCAweDk2LCAweDIxLCAweDZlLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjEsIDB4OTgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDJkLCAweDExLCAweGE4LCAweDAwLCAweDAwLCAweDA4LCAweDE5LCAweDhmLCAweDkwLCAweDlhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzgsIDB4OTksIDB4YTEsIDB4ODksIDB4M2UsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHhlOSwgMHhhNSwgMHg5MCwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAxLCAweGUwLCAweDk2LCAweDIxLCAweDZlLCAweDNjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjEsIDB4OTgsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkNCwgMHgwMSwgMHhlYywgMHgwNiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDMwLCAweDExLCAweDA2LCAweDAwLCAweDAwLCAweDgwLCAweDcyLCAweGEyLCAweDkwLCAweGJjLAorCTB4MDAsIDB4YzAsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ODAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHhjMCwgMHg4OSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDM2LCAweDExLCAweDA0LCAweDc5LCAweDAxLCAweDgwLCAweDgyLCAweDFiLCAweDg3LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MzQsIDB4MTEsIDB4MDQsIDB4YjAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMSwgMHhlMCwgMHgwNiwgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGY4LCAweDkyLCAweDgxLCAweDJmLCAweDc1LAorCTB4MDAsIDB4MDAsIDB4M2MsIDB4MTEsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4NTIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgzYywgMHgxMSwgMHhkNSwgMHg0MSwgMHgwMSwgMHhlMCwgMHgwNiwgMHgwMCwgMHg4NywgMHg5MiwKKwkweDAwLCAweDAwLCAweDM5LCAweDExLCAweDNjLCAweDkwLCAweDAxLCAweGUwLCAweDA2LCAweDgwLCAweDkwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4OTIsIDB4ODEsIDB4MmYsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHgwMSwgMHhlOCwgMHgwNiwgMHhjMCwgMHg4YiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk1LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDJmLCAweDcyLAorCTB4MDAsIDB4MDAsIDB4M2QsIDB4MTEsIDB4OWYsIDB4NDEsIDB4MDEsIDB4ODAsIDB4ODIsIDB4MWIsIDB4ODcsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ5LCAweDkwLCAweDAxLCAweGUwLCAweDA2LCAweDgwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZjgsIDB4NzIsIDB4ODAsIDB4MmYsIDB4NzQsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDI3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDA5LCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDksIDB4NDAsIDB4ODcsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHg0NywgMHgxMSwgMHg5ZiwgMHhkOCwgMHgwMSwgMHg4MCwgMHgyMiwgMHgyMSwgMHg2ZSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBiLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDcwLAorCTB4MDAsIDB4MDAsIDB4NDcsIDB4MTEsIDB4OWYsIDB4ZTAsIDB4MDEsIDB4ODAsIDB4YzIsIDB4MjEsIDB4NmUsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg3MCwKKwkweDAwLCAweDAwLCAweDQ3LCAweDExLCAweDlmLCAweGIwLCAweDAxLCAweDgwLCAweGQyLCAweDIxLCAweDZlLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NzAsCisJMHgwMCwgMHgwMCwgMHg0OSwgMHgxMSwgMHgwNiwgMHg2OCwgMHgwMSwgMHg4MCwgMHg4MiwgMHg1YiwgMHg4NywgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY4LCAweDAxLCAweGUwLCAweDA2LCAweDQwLCAweDg3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NGIsIDB4MTEsIDB4MzcsIDB4YjAsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4NDAsIDB4ODcsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHhkMiwgMHg4MCwgMHgyZiwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAxLCAweGUwLCAweDA2LCAweDgwLCAweDg0LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTEsIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4ODcsIDB4NzIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA4LCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDgwLCAweDkyLCAweGJjLAorCTB4MDAsIDB4MDAsIDB4NWIsIDB4MTEsIDB4MDQsIDB4YzEsIDB4MDEsIDB4ODQsIDB4MDIsIDB4MDAsIDB4NmUsIDB4YjIsCisJMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHhlOCwgMHg4NiwgMHg4ZCwgMHg5MiwgMHgzNywKKwkweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM0LCAweDAxLCAweGU4LCAweDg2LCAweDhkLCAweDkyLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzAsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHgyYywgMHg4OSwgMHg4ZCwgMHg2ZSwgMHgzNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM0LCAweDAxLCAweDJjLCAweGE5LCAweGRiLCAweDkyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4MjksIDB4YzAsIDB4OTIsIDB4MzYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYywgMHgxOSwgMHhmYiwgMHg5MiwgMHgzZiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDI5LCAweDgwLCAweDkyLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4YTksIDB4ZTQsIDB4OTIsIDB4M2YsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZiwgMHhjYywgMHgwMSwgMHhlOCwgMHgyNiwgMHhmYiwgMHg5MiwgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI5LCAweDAxLCAweGUwLCAweDA2LCAweDAwLCAweDAwLCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTQsIDB4MDIsIDB4ODAsIDB4OTIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwMSwgMHhlMCwgMHgwNiwgMHg0MCwgMHgyOCwgMHgzMiwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDZmLCAweGNjLCAweDAxLCAweGU4LCAweDg2LCAweGNkLCAweDJhLCAweDM2LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDEsIDB4ZTAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4NTIsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDA0LCAweGIwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDZlLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDEsIDB4YmMsIDB4MDgsIDB4MDAsIDB4NmUsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMSwgMHhiYywgMHg4OCwgMHhkYiwgMHg4YiwgMHgzZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDAxLCAweGJjLCAweDg4LCAweGRiLCAweDhiLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4NmEsIDB4MTEsIDB4OWYsIDB4MDAsIDB4MDAsIDB4YmMsIDB4ODgsIDB4ZTEsIDB4OGIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg2YSwgMHgxMSwgMHgwNCwgMHgwYywgMHgwMiwgMHg0MCwgMHhhOCwgMHhkYiwgMHg4YiwgMHhiZSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAwLCAweDA0LCAweDg4LCAweDFiLCAweDg0LCAweDNlLAorCTB4MDAsIDB4MDAsIDB4NjksIDB4MTEsIDB4MDQsIDB4YjEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4NWIsIDB4ODAsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmOCwgMHhjMiwgMHg4MCwgMHgyZiwgMHg3NCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDBjLCAweDAyLCAweDgwLCAweGEyLCAweDViLCAweDgwLCAweDdjLAorCTB4MjksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHhjMCwgMHg4YiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDEyLCAweDAwLCAweDJjLCAweDNhLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwNCwgMHg2NSwgMHgwMSwgMHg4MCwgMHhhMiwgMHhkYiwgMHgyYywgMHhiYywKKwkweDAwLCAweDAwLCAweDhhLCAweDExLCAweDgwLCAweDAwLCAweDAwLCAweDgwLCAweGEyLCAweDgwLCAweDJmLCAweGI2LAorCTB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDEsIDB4ZTgsIDB4NzYsIDB4MjAsIDB4ODEsIDB4MzksCisJMHhlZSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhmOCwgMHg4MiwgMHg4ZCwgMHgyZiwgMHg3MSwKKwkweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4ZDksIDB4NGEsIDB4OTEsIDB4MzksCisJMHgzOSwgMHgwMCwgMHhlMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwOSwgMHgwMCwgMHgzNiwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweDA5LCAweDQ1LCAweDkxLCAweDMwLAorCTB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4ODksIDB4NGQsIDB4OTEsIDB4MzYsCisJMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHg4OSwgMHhjZCwgMHg5MywgMHgzYywKKwkweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGM4LCAweDgyLCAweGNkLCAweDkzLCAweDM2LAorCTB4MDcsIDB4MDAsIDB4NzksIDB4MTEsIDB4ZjMsIDB4MDEsIDB4MDAsIDB4NDAsIDB4ODksIDB4Y2QsIDB4OTMsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHg4MCwgMHgxOCwgMHg5YiwgMHg4MSwgMHgwMiwgMHhlNSwgMHg3OCwgMHhiNiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUzLCAweDE4LCAweDliLCAweDhkLCAweDA3LCAweGU1LCAweDc4LCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE0LCAweGQ5LCAweDRhLCAweDkxLCAweDM5LAorCTB4M2EsIDB4MDAsIDB4ZTIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDksIDB4MDAsIDB4MzYsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwOSwgMHg0NSwgMHg5MSwgMHgzMCwKKwkweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDg5LCAweDRkLCAweDkxLCAweDM2LAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4ODksIDB4Y2QsIDB4OTMsIDB4M2MsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjOCwgMHg4MiwgMHhjZCwgMHg5MywgMHgzNiwKKwkweDA3LCAweDAwLCAweDg0LCAweDExLCAweGYzLCAweDAxLCAweDAwLCAweDQwLCAweDg5LCAweGNkLCAweDkzLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4OGEsIDB4MTEsIDB4ODAsIDB4MTksIDB4OWIsIDB4ODEsIDB4MDIsIDB4ZTUsIDB4NzgsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMywgMHgxOCwgMHg5YiwgMHg4ZCwgMHgwNywgMHhlNSwgMHg3OCwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNCwgMHgwZiwgMHg0MCwgMHhmYiwgMHg5NCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDBmLCAweDQwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MGYsIDB4MDAsIDB4MjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgwZiwgMHgwMCwgMHgyOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI4LCAweDBmLCAweDQwLCAweDE4LCAweDMyLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MGYsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHg1ZiwgMHhjYSwgMHhmOSwgMHgzNSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDAzLCAweGMwLCAweGY5LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHg0MSwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweDAwLCAweDAwLCAweDMyLAorCTB4NDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OCwgMHgwZiwgMHg4MCwgMHgyYSwgMHgzMiwKKwkweDRjLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4OTgsIDB4MTEsIDB4OTcsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MGYsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAxLCAweDg0LCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweGFjLCAweDBmLCAweDAwLCAweDM2LCAweGQyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MGYsIDB4ODAsIDB4MmEsIDB4MzIsCisJMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDdlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MGYsIDB4MDAsIDB4N2UsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgwZiwgMHgwMCwgMHg3ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDBmLCAweDAwLCAweDdlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4YzAsIDB4ZmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHhjMCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweGZhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4NDAsIDB4ZmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhYywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg4MCwgMHhmYSwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweGZiLCAweDMyLAorCTB4MDEsIDB4MDAsIDB4Y2YsIDB4MTEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4YjQsIDB4OGYsIDB4NGQsIDB4ZmIsIDB4YjAsCisJMHg0MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHhhYiwgMHhjZCwgMHhiMCwgMHgzMiwKKwkweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDViLCAweGNhLCAweGIwLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MmIsIDB4ZmUsIDB4YjAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhYSwgMHgxMSwgMHgxMiwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGJlLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MDMsIDB4MDAsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhlMCwgMHgwNywgMHg4MCwgMHgzZiwgMHg1MiwKKwkweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGY4LCAweDczLCAweDhhLCAweDAyLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NTMsIDB4MGEsIDB4MTYsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDBmLCAweDQwLCAweDkwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4MGYsIDB4ODAsIDB4OTAsIDB4MzIsCisJMHhhMiwgMHg2MCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweGI5LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4ODMsIDB4MGQsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OCwgMHg4MywgMHgwZCwgMHgwMCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ0LCAweDUzLCAweDBhLCAweDAwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHhjMCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweDAwLCAweGZhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDksIDB4NDAsIDB4ZmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhjOSwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweGMyLCAweDBhLCAweDAwLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4YzAsIDB4MTEsIDB4ODAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MTIsIDB4NDAsIDB4YjAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgzYiwgMHg0MCwgMHhiMCwgMHgzMywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGNkLCAweDRhLCAweGQwLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MGIsIDB4NDAsIDB4OTAsIDB4OTIsCisJMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHhjMiwgMHgwYSwgMHgwMCwgMHgzOSwKKwkweDAwLCAweDAwLCAweGM0LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDZiLCAweDQxLCAweDkwLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MTEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDksIDB4NDAsIDB4MjAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhjNSwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwOSwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDBkLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweGU0LCAweDE2LCAweDM4LAorCTB4MDAsIDB4MDAsIDB4YzksIDB4MTEsIDB4OWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhjOCwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMiwgMHgwMCwgMHhjNCwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHhiYywgMHgwZiwgMHgyNCwgMHgxNywgMHhiOCwKKwkweDA2LCAweDAwLCAweGMyLCAweDExLCAweDA0LCAweDAwLCAweDAwLCAweGJjLCAweDBmLCAweDY0LCAweDE2LCAweGI4LAorCTB4MDAsIDB4MDAsIDB4YmQsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MjIsIDB4YzAsIDB4ZmIsIDB4YmMsCisJMHgyMCwgMHgwMCwgMHhjNCwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHhmYiwgMHhiYywKKwkweDAwLCAweDAwLCAweGQ3LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4ZDEsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODgsIDB4ODIsIDB4Y2QsIDB4ZjksIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhiNywgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweGY3LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZjgsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHhmYywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDA0LCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4NWQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMywgMHgzMiwKKwkweDQwLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4ZGUsIDB4MTEsIDB4OWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg4MCwgMHg5MCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGRlLCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDQwLCAweGYyLCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhlMCwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDdlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MGYsIDB4MDAsIDB4N2UsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgwZiwgMHgwMCwgMHg3ZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGZhLCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHg0YywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDA3LCAweDgwLCAweDJhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YWQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHhiMywgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweGNiLCAweGMxLCAweGIwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweGVmLCAweDBmLCAweDAwLCAweDAwLCAweDAwLCAweDI4LCAweDA5LCAweGMwLCAweGIwLCAweGQyLAorCTB4MDAsIDB4MDAsIDB4ZWIsIDB4MTEsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4OTIsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhlZiwgMHgxMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAyLCAweDAwLCAweGYyLCAweDExLCAweDA0LCAweDAxLCAweDAwLCAweGI0LCAweDhmLCAweDRkLCAweGZiLCAweGIwLAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg5MywgMHg0MCwgMHgwMSwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI0LCAweDFmLCAweDQwLCAweGZiLCAweDM1LAorCTB4ZmUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHgwMywgMHgwMCwgMHgwMCwgMHgzNCwKKwkweDAwLCAweDAwLCAweGViLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDBjLCAweDhiLCAweGMxLCAweGIwLCAweDk0LAorCTB4MDAsIDB4MDAsIDB4YmIsIDB4MTIsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4NDAsIDB4ZmEsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHhhZCwgMHgxMiwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHhmYSwgMHhkMiwKKwkweDAwLCAweDAwLCAweGY5LCAweDExLCAweDEyLCAweDAwLCAweDAwLCAweDUwLCAweGYyLCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4YjQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHhiZCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4Y2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweGIwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MTIsIDB4MDAsIDB4MmEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhmZiwgMHgxMSwgMHgwNCwgMHgwMSwgMHgwMCwgMHg5YywgMHgxZiwgMHhjMCwgMHhmOSwgMHhiYywKKwkweDAwLCAweGNjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YmEsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwYywgMHgxMiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHhmYSwgMHhiMiwKKwkweDAwLCAweGNjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MGUsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHgxYiwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweGMwLCAweDNjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDgsIDB4MTIsIDB4OGUsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4MjgsIDB4YjIsCisJMHgwMCwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGY3LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4Y2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTQsIDB4OGYsIDB4NGQsIDB4ZmEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHhmNywgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg5MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDAwLCAweDMyLAorCTB4MTAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MGYsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgyMCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDA4LCAweDAwLCAweDEwLCAweDEyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweGY5LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwZSwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHgwZiwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDIwLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MGIsIDB4MDAsIDB4MTQsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ZjksIDB4YmMsCisJMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDBmLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGFjLCAweDBmLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MjAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgyNywgMHgwMCwgMHgxOCwgMHgxMiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHhmOSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHgwZiwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDIwLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MjAsIDB4MDAsIDB4MWQsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ZjksIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAzLCAweGMwLCAweGY5LCAweDMyLAorCTB4MGQsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDMsIDB4MDAsIDB4MzcsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHhjMCwgMHhmYSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDQwLCAweDNlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4OWMsIDB4MWYsIDB4YzAsIDB4ZjksIDB4NWEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwMywgMHhjMCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDQwLCAweDNlLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MWYsIDB4YzAsIDB4ZjksIDB4M2EsCisJMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhhYywgMHg4ZiwgMHhjZCwgMHhmOSwgMHg1MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg4MCwgMHgzZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDEyLCAweDAwLCAweDJiLCAweDNhLAorCTB4MGYsIDB4MDAsIDB4MmIsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4MGQsIDB4MmIsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg4MCwgMHgzZSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGIwLCAweDAyLCAweGMwLCAweGY5LCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4M2EsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg0MCwgMHgzYSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweDNhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4YzAsIDB4M2EsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgyYiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGIwLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4M2QsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg0MCwgMHgzZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDM2LCAweDEyLCAweDg0LCAweDAxLCAweDAwLCAweGIwLCAweDEyLCAweDAwLCAweDJiLCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4YjAsIDB4MDIsIDB4YzAsIDB4ZjksIDB4NTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDczLCAweDNlLCAweDAwLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MzAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgxZiwgMHhjMCwgMHhmOSwgMHgzYSwKKwkweDcwLCAweDAwLCAweDNiLCAweDEyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweGY5LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHgwMCwgMHgzMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAzLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MzAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweDBmLCAweGMwLCAweDI5LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MDIsIDB4YzAsIDB4ZjksIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgwZiwgMHhjMCwgMHgyYywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAyLCAweDAwLCAweGZhLCAweDMyLAorCTB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4NzMsIDB4N2UsIDB4ZmEsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHgwMCwgMHgzMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDQ0LCAweDEyLCAweDg1LCAweDAxLCAweDAwLCAweDljLCAweDFmLCAweGMwLCAweGY5LCAweGJhLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsCisJMHgwMSwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgzNywgMHgzMiwKKwkweDAwLCAweDAwLCAweDI1LCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MGUsIDB4MDAsIDB4NTMsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODIsIDB4Y2QsIDB4ZmEsIDB4YmMsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg0ZCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgzZiwgMHhjMCwgMHhmOSwgMHg5YSwKKwkweDFjLCAweDAwLCAweDRkLCAweDEyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweGZhLCAweGJjLAorCTB4MDIsIDB4MDAsIDB4MjUsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4OGYsIDB4Y2QsIDB4ZjksIDB4ZGEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg1MCwKKwkweDAxLCAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweDAwLCAweDM3LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MjUsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwZSwgMHgwMCwgMHg1YiwgMHgxMiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHhmYSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4NTcsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MWYsIDB4YzAsIDB4ZjksIDB4OWEsCisJMHgyNiwgMHgwMCwgMHg1NywgMHgxMiwgMHgwNCwgMHgwMSwgMHgwMCwgMHg4MCwgMHg4MiwgMHhjZCwgMHhmYSwgMHhiYywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MGYsIDB4NDAsIDB4MjksIDB4MzIsCisJMHgwMCwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDRjLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MDAsIDB4MDAsIDB4NTYsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHgyOSwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweDE4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHhhMiwgMHg2MCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHgwMywgMHgwMCwgMHgzNywgMHgzMiwKKwkweDZiLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAzLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MGYsIDB4ODAsIDB4MmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg2YiwgMHgxMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgyOSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDgzLCAweDNlLCAweDAwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDgsIDB4ODMsIDB4M2UsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwgMHg1MywgMHgwYSwgMHgwMCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDZjLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDg4LCAweDBmLCAweDQwLCAweDJiLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MGYsIDB4MDAsIDB4MjgsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NCwgMHgwZiwgMHgwMCwgMHgyOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDk4LCAweDBmLCAweDgwLCAweDJhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MDIsIDB4YzAsIDB4ZjksIDB4MzIsCisJMHg3MSwgMHgxMiwgMHg5NywgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwZiwgMHgwMCwgMHgzNiwgMHg5MiwKKwkweDA3LCAweDAwLCAweDc0LCAweDEyLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweDRkLCAweDI5LCAweGJjLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4MWYsIDB4MDAsIDB4ZmEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg2OCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHg4MCwgMHgyYSwgMHg5MiwKKwkweGMwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGFjLCAweDBmLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MDIsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHg4NCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDFmLCAweDAwLCAweDdhLCAweDEyLCAweDA0LCAweDAwLCAweDAwLCAweDgwLCAweDgyLCAweGNkLCAweDI5LCAweGJjLAorCTB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4OGYsIDB4Y2QsIDB4ZmEsIDB4M2EsCisJMHgwMCwgMHgwMCwgMHg3NiwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgxMiwgMHhjMCwgMHgyOSwgMHg5YSwKKwkweDAwLCAweDAwLCAweDNhLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MDAsIDB4MDAsIDB4MzAsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZDAsCisJMHgwMCwgMHgwMCwgMHg4MiwgMHgxMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHg1MiwgMHg4YSwgMHhmYSwgMHhiYywKKwkweGEyLCAweDYwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDAzLCAweDAwLCAweDM3LCAweDMyLAorCTB4ODIsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhhMywgMHgzZSwgMHgwMCwgMHgzNCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQ4LCAweGEzLCAweDNlLCAweDAwLCAweDM0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4NTMsIDB4MGEsIDB4MDAsIDB4MzQsCisJMHgwMCwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhhNCwgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweGY3LCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YzQsIDB4MDIsIDB4YzAsIDB4ZmEsIDB4MzIsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweDBmLCAweDQwLCAweDJmLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4OGIsIDB4MTIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MWYsIDB4YzAsIDB4ZjksIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg4YSwgMHgxMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg0MCwgMHgyZiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDg3LCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweDJjLCAweDkyLAorCTB4MDAsIDB4MDAsIDB4ODcsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg0MCwgMHgyYywgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweDJjLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4YzAsIDB4MmMsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHgwMCwgMHgyZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDQwLCAweDJkLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4ODAsIDB4MmQsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHhjMCwgMHgyZCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweGMwLCAweGZiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4ODAsIDB4MmYsIDB4MzIsCisJMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOCwgMHg3MywgMHgwYSwgMHgwMiwgMHgzOSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweDNmLCAweDUyLAorCTB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDQsIDB4MDMsIDB4MDAsIDB4MzYsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHgwMCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDQwLCAweDI4LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4ODAsIDB4ZjgsIDB4MzIsCisJMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHgwMCwgMHgzNiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweDBmLCAweGMwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YTAsIDB4MTIsIDB4MDQsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MWYsIDB4YzAsIDB4ZjksIDB4YmMsCisJMHgwMCwgMHgwMCwgMHg5ZiwgMHgxMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHhjMCwgMHgyYiwgMHhiMiwKKwkweDAwLCAweDAwLCAweDljLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweGMwLCAweDI4LCAweDkyLAorCTB4MDAsIDB4MDAsIDB4OWMsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MzYsIDB4OTIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg0MCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDQwLCAweDI5LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4ODAsIDB4MjksIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHhjMCwgMHgyOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDAwLCAweDJhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4NDAsIDB4MmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg4MCwgMHhmOSwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweGMwLCAweDJhLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4MDAsIDB4MmIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMCwgMHgwNywgMHg0MCwgMHgyYiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGUwLCAweDA3LCAweDgwLCAweDJiLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTAsIDB4MDcsIDB4YzAsIDB4ZmIsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OCwgMHgwMiwgMHgwMCwgMHhmYiwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZDgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhiMSwgMHgxMiwgMHg5ZiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHg5MCwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDExLCAweDAwLCAweDAwLCAweDA3LCAweDQwLCAweDkwLCAweDUyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHgwMCwgMHgwNywgMHg0MCwgMHg5MCwgMHg1MiwKKwkweDAwLCAweDAwLCAweGIzLCAweDEyLCAweDEyLCAweDAwLCAweDAwLCAweDQ4LCAweGYyLCAweDAxLCAweDAwLCAweGI0LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhiNSwgMHgxMiwgMHgxMiwgMHgwMCwgMHgwMCwgMHg5YywgMHgwZiwgMHhjMCwgMHgyMSwgMHhiMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4MGYsIDB4NDAsIDB4ZmIsIDB4MzUsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDRjLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDAyLCAweDAwLCAweDM2LCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MmEsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHhhZCwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhkMCwKKwkweDAwLCAweDAwLCAweGIzLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGQwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGMsIDB4Y2IsIDB4YzEsIDB4YjAsIDB4MzQsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGQ4LCAweDAyLCAweDAwLCAweDAwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDksIDB4YzAsIDB4YjAsIDB4ZDIsCisJMHgwMCwgMHgwMCwgMHhiZSwgMHgxMiwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHg4MCwgMHg5MiwgMHhiMiwKKwkweDAwLCAweDAwLCAweGMyLCAweDEyLCAweDEyLCAweDAwLCAweDAwLCAweDljLCAweDBmLCAweGMwLCAweDIxLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4YzQsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGEwLCAweGMyLCAweDBhLCAweDAwLCAweDM5LAorCTB4MDAsIDB4MDAsIDB4YzgsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4MjgsIDB4MDksIDB4MzQsIDB4YjAsIDB4YmEsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgyOCwgMHgwOSwgMHgwMCwgMHgwMCwgMHg1MiwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGE4LCAweDIyLCAweDAwLCAweDJiLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODQsIDB4YzAsIDB4MzcsIDB4YWMsIDB4YjAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwYywgMHgwYiwgMHgwMCwgMHgwMCwgMHgzMiwKKwkweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDc4LCAweGE5LCAweDRkLCAweGIwLCAweDMwLAorCTB4MDAsIDB4MDAsIDB4ZDgsIDB4MTIsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4NDAsIDB4YjAsIDB4YjYsCisJMHgwMCwgMHgwMCwgMHhjZCwgMHgxMiwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDAwLCAweDAwLCAweGNlLCAweDEyLCAweDEyLCAweDAwLCAweDAwLCAweDA0LCAweDA5LCAweDQwLCAweDIwLCAweGIyLAorCTB4MDAsIDB4MDAsIDB4ZDEsIDB4MTIsIDB4OWYsIDB4MDEsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4OTAsIDB4YjIsCisJMHgwMCwgMHgwMCwgMHhkMCwgMHgxMiwgMHgxMiwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwOSwgMHg0MCwgMHgyMCwgMHhiMiwKKwkweDBkLCAweDAwLCAweGNkLCAweDEyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDAyLCAweGU0LCAweDE2LCAweGI4LAorCTB4MDIsIDB4MDAsIDB4Y2QsIDB4MTIsIDB4MDQsIDB4MDEsIDB4MDAsIDB4YmMsIDB4MGYsIDB4MjQsIDB4MTcsIDB4YjgsCisJMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYywgMHgwZiwgMHg2NCwgMHgxNiwgMHgzOCwKKwkweDAwLCAweDAwLCAweGNkLCAweDEyLCAweDA0LCAweDAxLCAweDAwLCAweDgwLCAweDIyLCAweGMwLCAweGZiLCAweGJjLAorCTB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTAsIDB4YzIsIDB4MGEsIDB4MDAsIDB4MzksCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgzYiwgMHg0MCwgMHhiMCwgMHgzMywKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweGNkLCAweDRhLCAweGQwLCAweDM1LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTcsIDB4MjUsIDB4MDEsIDB4MzIsCisJMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg4NywgMHg4ZCwgMHgyYSwgMHgzYSwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDA3LCAweDAwLCAweGIwLCAweDMyLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4ZDAsIDB4MzIsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwMSwgMHgwMCwgMHg0OCwgMHhmMiwgMHhjMSwgMHgzOCwgMHg1NCwKKwkweDAwLCAweDAwLCAweGRjLCAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweDkwLAorCTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCit9LAoreworCTB4MDAsIDB4MDAsIDB4MzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OTAsCit9LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnLmMgYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Zy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjY2JlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Zy5jCkBAIC0wLDAgKzEsMzYyNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDggQWxhY3JpdGVjaCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQUxBQ1JJVEVDSCwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFMQUNSSVRFQ0gsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uCisgKiBhcmUgdGhvc2Ugb2YgdGhlIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nCisgKiBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLCBvZiBBbGFjcml0ZWNoLCBJbmMuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRklMRU5BTUU6IHN4Zy5jCisgKgorICogVGhlIFNYRyBkcml2ZXIgZm9yIEFsYWNyaXRlY2gncyAxMEdiZSBwcm9kdWN0cy4KKyAqCisgKiBOT1RFOiBUaGlzIGlzIHRoZSBzdGFuZGFyZCwgbm9uLWFjY2VsZXJhdGVkIHZlcnNpb24gb2YgQWxhY3JpdGVjaCdzCisgKiAgICAgICBJUy1OSUMgZHJpdmVyLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvbWlpLmg+CisKKyNkZWZpbmUgU0xJQ19EVU1QX0VOQUJMRUQJCTAKKyNkZWZpbmUgU0xJQ19HRVRfU1RBVFNfRU5BQkxFRAkJMAorI2RlZmluZSBMSU5VWF9GUkVFU19BREFQVEVSX1JFU09VUkNFUwkxCisjZGVmaW5lIFNYR19PRkZMT0FEX0lQX0NIRUNLU1VNCQkwCisjZGVmaW5lIFNYR19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQJMAorI2RlZmluZSBWUENJCQkJCTAKKyNkZWZpbmUgREJHCQkJCTEKKyNkZWZpbmUgQVRLX0RFQlVHCQkJMQorCisjaW5jbHVkZSAic3hnX29zLmgiCisjaW5jbHVkZSAic3hnaHcuaCIKKyNpbmNsdWRlICJzeGdoaWYuaCIKKyNpbmNsdWRlICJzeGcuaCIKKyNpbmNsdWRlICJzeGdkYmcuaCIKKworI2luY2x1ZGUgInN4Z3BoeWNvZGUuaCIKKyNpbmNsdWRlICJzYWhhcmFkYmdkb3dubG9hZC5oIgorCitzdGF0aWMgaW50IHN4Z19hbGxvY2F0ZV9idWZmZXJfbWVtb3J5KHBfYWRhcHRlcl90IGFkYXB0ZXIsIHUzMiBTaXplLAorCQkJCSAgICAgIFNYR19CVUZGRVJfVFlQRSBCdWZmZXJUeXBlKTsKK3N0YXRpYyB2b2lkIHN4Z19hbGxvY2F0ZV9yY3ZibG9ja19jb21wbGV0ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLCB2b2lkICpSY3ZCbG9jaywKKwkJCQkJICAgZG1hX2FkZHJfdCBQaHlzaWNhbEFkZHJlc3MsCisJCQkJCSAgIHUzMiBMZW5ndGgpOworc3RhdGljIHZvaWQgc3hnX2FsbG9jYXRlX3NnbF9idWZmZXJfY29tcGxldGUocF9hZGFwdGVyX3QgYWRhcHRlciwKKwkJCQkJICAgICBQU1hHX1NDQVRURVJfR0FUSEVSIFN4Z1NnbCwKKwkJCQkJICAgICBkbWFfYWRkcl90IFBoeXNpY2FsQWRkcmVzcywKKwkJCQkJICAgICB1MzIgTGVuZ3RoKTsKKworc3RhdGljIHZvaWQgc3hnX21jYXN0X2luaXRfY3JjMzIodm9pZCk7CisKK3N0YXRpYyBpbnQgc3hnX2VudHJ5X29wZW4ocF9uZXRfZGV2aWNlIGRldik7CitzdGF0aWMgaW50IHN4Z19lbnRyeV9oYWx0KHBfbmV0X2RldmljZSBkZXYpOworc3RhdGljIGludCBzeGdfaW9jdGwocF9uZXRfZGV2aWNlIGRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZCk7CitzdGF0aWMgaW50IHN4Z19zZW5kX3BhY2tldHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgcF9uZXRfZGV2aWNlIGRldik7CitzdGF0aWMgaW50IHN4Z190cmFuc21pdF9wYWNrZXQocF9hZGFwdGVyX3QgYWRhcHRlciwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CitzdGF0aWMgdm9pZCBzeGdfZHVtYl9zZ2woUFNDQVRURVJfR0FUSEVSX0xJU1QgcFNnbCwgUFNYR19TQ0FUVEVSX0dBVEhFUiBTeGdTZ2wpOworCitzdGF0aWMgdm9pZCBzeGdfaGFuZGxlX2ludGVycnVwdChwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKK3N0YXRpYyBpbnQgc3hnX3Byb2Nlc3NfaXNyKHBfYWRhcHRlcl90IGFkYXB0ZXIsIHUzMiBNZXNzYWdlSWQpOworc3RhdGljIHUzMiBzeGdfcHJvY2Vzc19ldmVudF9xdWV1ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLCB1MzIgUnNzSWQpOworc3RhdGljIHZvaWQgc3hnX2NvbXBsZXRlX3Nsb3dfc2VuZChwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc3hnX3Nsb3dfcmVjZWl2ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLCBQU1hHX0VWRU5UIEV2ZW50KTsKK3N0YXRpYyB2b2lkIHN4Z19wcm9jZXNzX3Jjdl9lcnJvcihwX2FkYXB0ZXJfdCBhZGFwdGVyLCB1MzIgRXJyb3JTdGF0dXMpOworc3RhdGljIGJvb2wgc3hnX21hY19maWx0ZXIocF9hZGFwdGVyX3QgYWRhcHRlciwKKwkJCSAgIHBfZXRoZXJfaGVhZGVyIEV0aGVySGRyLCB1c2hvcnQgbGVuZ3RoKTsKKworI2lmIFNMSUNfR0VUX1NUQVRTX0VOQUJMRUQKK3N0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3hnX2dldF9zdGF0cyhwX25ldF9kZXZpY2UgZGV2KTsKKyNlbmRpZgorCitzdGF0aWMgaW50IHN4Z19tYWNfc2V0X2FkZHJlc3MocF9uZXRfZGV2aWNlIGRldiwgdm9pZCAqcHRyKTsKKworc3RhdGljIHZvaWQgc3hnX2FkYXB0ZXJfc2V0X2h3YWRkcihwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKKworc3RhdGljIHZvaWQgc3hnX3VubWFwX21taW9fc3BhY2UocF9hZGFwdGVyX3QgYWRhcHRlcik7CitzdGF0aWMgdm9pZCBzeGdfbWNhc3Rfc2V0X21hc2socF9hZGFwdGVyX3QgYWRhcHRlcik7CisKK3N0YXRpYyBpbnQgc3hnX2luaXRpYWxpemVfYWRhcHRlcihwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKK3N0YXRpYyB2b2lkIHN4Z19zdG9ja19yY3ZfYnVmZmVycyhwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKK3N0YXRpYyB2b2lkIHN4Z19jb21wbGV0ZV9kZXNjcmlwdG9yX2Jsb2NrcyhwX2FkYXB0ZXJfdCBhZGFwdGVyLAorCQkJCQkgICB1bnNpZ25lZCBjaGFyIEluZGV4KTsKK3N0YXRpYyBpbnQgc3hnX2luaXRpYWxpemVfbGluayhwX2FkYXB0ZXJfdCBhZGFwdGVyKTsKK3N0YXRpYyBpbnQgc3hnX3BoeV9pbml0KHBfYWRhcHRlcl90IGFkYXB0ZXIpOworc3RhdGljIHZvaWQgc3hnX2xpbmtfZXZlbnQocF9hZGFwdGVyX3QgYWRhcHRlcik7CitzdGF0aWMgU1hHX0xJTktfU1RBVEUgc3hnX2dldF9saW5rX3N0YXRlKHBfYWRhcHRlcl90IGFkYXB0ZXIpOworc3RhdGljIHZvaWQgc3hnX2xpbmtfc3RhdGUocF9hZGFwdGVyX3QgYWRhcHRlciwgU1hHX0xJTktfU1RBVEUgTGlua1N0YXRlKTsKK3N0YXRpYyBpbnQgc3hnX3dyaXRlX21kaW9fcmVnKHBfYWRhcHRlcl90IGFkYXB0ZXIsCisJCQkgICAgICB1MzIgRGV2QWRkciwgdTMyIFJlZ0FkZHIsIHUzMiBWYWx1ZSk7CitzdGF0aWMgaW50IHN4Z19yZWFkX21kaW9fcmVnKHBfYWRhcHRlcl90IGFkYXB0ZXIsCisJCQkgICAgIHUzMiBEZXZBZGRyLCB1MzIgUmVnQWRkciwgdTMyICpwVmFsdWUpOworc3RhdGljIHZvaWQgc3hnX21jYXN0X3NldF9saXN0KHBfbmV0X2RldmljZSBkZXYpOworCisjZGVmaW5lIFhYWFRPRE8gMAorCitzdGF0aWMgdW5zaWduZWQgaW50IHN4Z19maXJzdF9pbml0ID0gMTsKK3N0YXRpYyBjaGFyICpzeGdfYmFubmVyID0KKyAgICAiQWxhY3JpdGVjaCBTTElDIFRlY2hub2xvZ3kodG0pIFNlcnZlciBhbmQgU3RvcmFnZSAxMEdiZSBBY2NlbGVyYXRvciAoTm9uLUFjY2VsZXJhdGVkKVxuIjsKKworc3RhdGljIGludCBzeGdfZGVidWcgPSAxOworc3RhdGljIGludCBkZWJ1ZyA9IC0xOworc3RhdGljIHBfbmV0X2RldmljZSBoZWFkX25ldGRldmljZSA9IE5VTEw7CisKK3N0YXRpYyBzeGdiYXNlX2RyaXZlcl90IHN4Z19nbG9iYWwgPSB7CisJLmR5bmFtaWNfaW50YWdnID0gMSwKK307CitzdGF0aWMgaW50IGludGFnZ19kZWxheSA9IDEwMDsKK3N0YXRpYyB1MzIgZHluYW1pY19pbnRhZ2cgPSAwOworCisjZGVmaW5lIERSVl9OQU1FCSJzeGciCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjAuMSIKKyNkZWZpbmUgRFJWX0FVVEhPUgkiQWxhY3JpdGVjaCwgSW5jLiBFbmdpbmVlcmluZyIKKyNkZWZpbmUgRFJWX0RFU0NSSVBUSU9OCSJBbGFjcml0ZWNoIFNMSUMgVGVjaG9ub2xvZ3kodG0pIE5vbi1BY2NlbGVyYXRlZCAxMEdiZSBEcml2ZXIiCisjZGVmaW5lIERSVl9DT1BZUklHSFQJIkNvcHlyaWdodCAyMDAwLTIwMDggQWxhY3JpdGVjaCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iCisKK01PRFVMRV9BVVRIT1IoRFJWX0FVVEhPUik7CitNT0RVTEVfREVTQ1JJUFRJT04oRFJWX0RFU0NSSVBUSU9OKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworbW9kdWxlX3BhcmFtKGR5bmFtaWNfaW50YWdnLCBpbnQsIDApOworTU9EVUxFX1BBUk1fREVTQyhkeW5hbWljX2ludGFnZywgIkR5bmFtaWMgSW50ZXJydXB0IEFnZ3JlZ2F0aW9uIFNldHRpbmciKTsKK21vZHVsZV9wYXJhbShpbnRhZ2dfZGVsYXksIGludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKGludGFnZ19kZWxheSwgInVTZWMgSW50ZXJydXB0IEFnZ3JlZ2F0aW9uIERlbGF5Iik7CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzeGdfcGNpX3RibFtdIF9fZGV2aW5pdGRhdGEgPSB7CisJe1BDSV9ERVZJQ0UoU1hHX1ZFTkRPUl9JRCwgU1hHX0RFVklDRV9JRCl9LAorCXswLH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzeGdfcGNpX3RibCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW5saW5lIHZvaWQgc3hnX3JlZzMyX3dyaXRlKHZvaWQgX19pb21lbSAqcmVnLCB1MzIgdmFsdWUsIGJvb2wgZmx1c2gpCit7CisJd3JpdGVsKHZhbHVlLCByZWcpOworCWlmIChmbHVzaCkKKwkJbWIoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN4Z19yZWc2NF93cml0ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLCB2b2lkIF9faW9tZW0gKnJlZywKKwkJCQkgICB1NjQgdmFsdWUsIHUzMiBjcHUpCit7CisJdTMyIHZhbHVlX2hpZ2ggPSAodTMyKSAodmFsdWUgPj4gMzIpOworCXUzMiB2YWx1ZV9sb3cgPSAodTMyKSAodmFsdWUgJiAweDAwMDAwMDAwRkZGRkZGRkYpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWRhcHRlci0+Qml0NjRSZWdMb2NrLCBmbGFncyk7CisJd3JpdGVsKHZhbHVlX2hpZ2gsICh2b2lkIF9faW9tZW0gKikoJmFkYXB0ZXItPlVjb2RlUmVnc1tjcHVdLlVwcGVyKSk7CisJd3JpdGVsKHZhbHVlX2xvdywgcmVnKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGFwdGVyLT5CaXQ2NFJlZ0xvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgc3hnX2luaXRfZHJpdmVyKHZvaWQpCit7CisJaWYgKHN4Z19maXJzdF9pbml0KSB7CisJCURCR19FUlJPUigic3hnOiAlcyBzeGdfZmlyc3RfaW5pdCBzZXQgamlmZmllc1slbHhdXG4iLAorCQkJICBfX0ZVTkNUSU9OX18sIGppZmZpZXMpOworCQlzeGdfZmlyc3RfaW5pdCA9IDA7CisJCXNwaW5fbG9ja19pbml0KCZzeGdfZ2xvYmFsLmRyaXZlcl9sb2NrKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHN4Z19kYmdfbWFjYWRkcnMocF9hZGFwdGVyX3QgYWRhcHRlcikKK3sKKwlEQkdfRVJST1IoIiAgKCVzKSBjdXJyICUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYXG4iLAorCQkgIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMF0sCisJCSAgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMV0sIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzJdLAorCQkgIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzNdLCBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSwKKwkJICBhZGFwdGVyLT5jdXJybWFjYWRkcls1XSk7CisJREJHX0VSUk9SKCIgICglcykgbWFjICAlMi4yWDolMi4yWDolMi4yWDolMi4yWDolMi4yWDolMi4yWFxuIiwKKwkJICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIGFkYXB0ZXItPm1hY2FkZHJbMF0sCisJCSAgYWRhcHRlci0+bWFjYWRkclsxXSwgYWRhcHRlci0+bWFjYWRkclsyXSwKKwkJICBhZGFwdGVyLT5tYWNhZGRyWzNdLCBhZGFwdGVyLT5tYWNhZGRyWzRdLAorCQkgIGFkYXB0ZXItPm1hY2FkZHJbNV0pOworCXJldHVybjsKK30KKworLy8gU1hHIEdsb2JhbHMKK3N0YXRpYyBTWEdfRFJJVkVSIFN4Z0RyaXZlcjsKKworI2lmZGVmICBBVEtEQkcKK3N0YXRpYyBzeGdfdHJhY2VfYnVmZmVyX3QgTFN4Z1RyYWNlQnVmZmVyOworI2VuZGlmIC8qIEFUS0RCRyAqLworc3RhdGljIHN4Z190cmFjZV9idWZmZXJfdCAqU3hnVHJhY2VCdWZmZXIgPSBOVUxMOworCisvKgorICogc3hnX2Rvd25sb2FkX21pY3JvY29kZQorICoKKyAqIERvd25sb2FkIE1pY3JvY29kZSB0byBTYWhhcmEgYWRhcHRlcgorICoKKyAqIEFyZ3VtZW50cyAtCisgKgkJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgkJVWNvZGVTZWwJLSBtaWNyb2NvZGUgZmlsZSBzZWxlY3Rpb24KKyAqCisgKiBSZXR1cm4KKyAqCWludAorICovCitzdGF0aWMgYm9vbCBzeGdfZG93bmxvYWRfbWljcm9jb2RlKHBfYWRhcHRlcl90IGFkYXB0ZXIsIFNYR19VQ09ERV9TRUwgVWNvZGVTZWwpCit7CisJUFNYR19IV19SRUdTIEh3UmVncyA9IGFkYXB0ZXItPkh3UmVnczsKKwl1MzIgU2VjdGlvbjsKKwl1MzIgVGhpc1NlY3Rpb25TaXplOworCXUzMiAqSW5zdHJ1Y3Rpb24gPSBOVUxMOworCXUzMiBCYXNlQWRkcmVzcywgQWRkcmVzc09mZnNldCwgQWRkcmVzczsKKy8vICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmU7CisJdTMyIFZhbHVlUmVhZDsKKwl1MzIgaTsKKwl1MzIgbnVtU2VjdGlvbnMgPSAwOworCXUzMiBzZWN0aW9uU2l6ZVsxNl07CisJdTMyIHNlY3Rpb25TdGFydFsxNl07CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJEbmxkVWNvZCIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisJREJHX0VSUk9SKCJzeGc6ICVzIEVOVEVSXG4iLCBfX0ZVTkNUSU9OX18pOworCisJc3dpdGNoIChVY29kZVNlbCkgeworCWNhc2UgU1hHX1VDT0RFX1NBSEFSQToJLy8gU2FoYXJhIG9wZXJhdGlvbmFsIHVjb2RlCisJCW51bVNlY3Rpb25zID0gU051bVNlY3Rpb25zOworCQlmb3IgKGkgPSAwOyBpIDwgbnVtU2VjdGlvbnM7IGkrKykgeworCQkJc2VjdGlvblNpemVbaV0gPSBTU2VjdGlvblNpemVbaV07CisJCQlzZWN0aW9uU3RhcnRbaV0gPSBTU2VjdGlvblN0YXJ0W2ldOworCQl9CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUiBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogV29haCwgYmlnIGVycm9yIHdpdGggdGhlIG1pY3JvY29kZSFcbiIpOworCQlicmVhazsKKwl9CisKKwlEQkdfRVJST1IoInN4ZzogUkVTRVQgVEhFIENBUkRcbiIpOworCS8vIEZpcnN0LCByZXNldCB0aGUgY2FyZAorCVdSSVRFX1JFRyhId1JlZ3MtPlJlc2V0LCAweERFQUQsIEZMVVNIKTsKKworCS8vIERvd25sb2FkIGVhY2ggc2VjdGlvbiBvZiB0aGUgbWljcm9jb2RlIGFzIHNwZWNpZmllZCBpbgorCS8vIGl0cyBkb3dubG9hZCBmaWxlLiAgVGhlICpkb3dubG9hZC5jIGZpbGUgaXMgZ2VuZXJhdGVkIHVzaW5nCisJLy8gdGhlIHNhaGFyYW9ianRvYyBmYWNpbGl0eSB3aGljaCBjb252ZXJ0cyB0aGUgbWV0YXN0ZXAgLm9iagorCS8vIGZpbGUgdG8gYSAuYyBmaWxlIHdoaWNoIGNvbnRhaW5zIGEgdHdvIGRpbWVudGlvbmFsIGFycmF5LgorCWZvciAoU2VjdGlvbiA9IDA7IFNlY3Rpb24gPCBudW1TZWN0aW9uczsgU2VjdGlvbisrKSB7CisJCURCR19FUlJPUigic3hnOiBTRUNUSU9OICMgJWRcbiIsIFNlY3Rpb24pOworCQlzd2l0Y2ggKFVjb2RlU2VsKSB7CisJCWNhc2UgU1hHX1VDT0RFX1NBSEFSQToKKwkJCUluc3RydWN0aW9uID0gKHUzMiAqKSAmIFNhaGFyYVVDb2RlW1NlY3Rpb25dWzBdOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlBU1NFUlQoMCk7CisJCQlicmVhazsKKwkJfQorCQlCYXNlQWRkcmVzcyA9IHNlY3Rpb25TdGFydFtTZWN0aW9uXTsKKwkJVGhpc1NlY3Rpb25TaXplID0gc2VjdGlvblNpemVbU2VjdGlvbl0gLyAxMjsJLy8gU2l6ZSBpbiBpbnN0cnVjdGlvbnMKKwkJZm9yIChBZGRyZXNzT2Zmc2V0ID0gMDsgQWRkcmVzc09mZnNldCA8IFRoaXNTZWN0aW9uU2l6ZTsKKwkJICAgICBBZGRyZXNzT2Zmc2V0KyspIHsKKwkJCUFkZHJlc3MgPSBCYXNlQWRkcmVzcyArIEFkZHJlc3NPZmZzZXQ7CisJCQlBU1NFUlQoKEFkZHJlc3MgJiB+TUlDUk9DT0RFX0FERFJFU1NfTUFTSykgPT0gMCk7CisJCQkvLyBXcml0ZSBpbnN0cnVjdGlvbiBiaXRzIDMxIC0gMAorCQkJV1JJVEVfUkVHKEh3UmVncy0+VWNvZGVEYXRhTG93LCAqSW5zdHJ1Y3Rpb24sIEZMVVNIKTsKKwkJCS8vIFdyaXRlIGluc3RydWN0aW9uIGJpdHMgNjMtMzIKKwkJCVdSSVRFX1JFRyhId1JlZ3MtPlVjb2RlRGF0YU1pZGRsZSwgKihJbnN0cnVjdGlvbiArIDEpLAorCQkJCSAgRkxVU0gpOworCQkJLy8gV3JpdGUgaW5zdHJ1Y3Rpb24gYml0cyA5NS02NAorCQkJV1JJVEVfUkVHKEh3UmVncy0+VWNvZGVEYXRhSGlnaCwgKihJbnN0cnVjdGlvbiArIDIpLAorCQkJCSAgRkxVU0gpOworCQkJLy8gV3JpdGUgaW5zdHJ1Y3Rpb24gYWRkcmVzcyB3aXRoIHRoZSBXUklURSBiaXQgc2V0CisJCQlXUklURV9SRUcoSHdSZWdzLT5VY29kZUFkZHIsCisJCQkJICAoQWRkcmVzcyB8IE1JQ1JPQ09ERV9BRERSRVNTX1dSSVRFKSwgRkxVU0gpOworCQkJLy8gU2FoYXJhIGJ1ZyBpbiB0aGUgdWNvZGUgZG93bmxvYWQgbG9naWMgLSB0aGUgd3JpdGUgdG8gRGF0YUxvdworCQkJLy8gZm9yIHRoZSBuZXh0IGluc3RydWN0aW9uIGNvdWxkIGdldCBjb3JydXB0ZWQuICBUbyBhdm9pZCB0aGlzLAorCQkJLy8gd3JpdGUgdG8gRGF0YUxvdyBhZ2FpbiBmb3IgdGhpcyBpbnN0cnVjdGlvbiAod2hpY2ggbWF5IGdldAorCQkJLy8gY29ycnVwdGVkLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIpLCB0aGVuIGluY3JlbWVudCB0aGUgYWRkcmVzcworCQkJLy8gYW5kIHdyaXRlIHRoZSBkYXRhIGZvciB0aGUgbmV4dCBpbnN0cnVjdGlvbiB0byBEYXRhTG93LiAgVGhhdAorCQkJLy8gd3JpdGUgc2hvdWxkIHN1Y2NlZWQuCisJCQlXUklURV9SRUcoSHdSZWdzLT5VY29kZURhdGFMb3csICpJbnN0cnVjdGlvbiwgVFJVRSk7CisJCQkvLyBBZHZhbmNlIDMgdTMyUyB0byBzdGFydCBvZiBuZXh0IGluc3RydWN0aW9uCisJCQlJbnN0cnVjdGlvbiArPSAzOworCQl9CisJfQorCS8vIE5vdyByZXBlYXQgdGhlIGVudGlyZSBvcGVyYXRpb24gcmVhZGluZyB0aGUgaW5zdHJ1Y3Rpb24gYmFjayBhbmQKKwkvLyBjaGVja2luZyBmb3IgcGFyaXR5IGVycm9ycworCWZvciAoU2VjdGlvbiA9IDA7IFNlY3Rpb24gPCBudW1TZWN0aW9uczsgU2VjdGlvbisrKSB7CisJCURCR19FUlJPUigic3hnOiBjaGVjayBTRUNUSU9OICMgJWRcbiIsIFNlY3Rpb24pOworCQlzd2l0Y2ggKFVjb2RlU2VsKSB7CisJCWNhc2UgU1hHX1VDT0RFX1NBSEFSQToKKwkJCUluc3RydWN0aW9uID0gKHUzMiAqKSAmIFNhaGFyYVVDb2RlW1NlY3Rpb25dWzBdOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlBU1NFUlQoMCk7CisJCQlicmVhazsKKwkJfQorCQlCYXNlQWRkcmVzcyA9IHNlY3Rpb25TdGFydFtTZWN0aW9uXTsKKwkJVGhpc1NlY3Rpb25TaXplID0gc2VjdGlvblNpemVbU2VjdGlvbl0gLyAxMjsJLy8gU2l6ZSBpbiBpbnN0cnVjdGlvbnMKKwkJZm9yIChBZGRyZXNzT2Zmc2V0ID0gMDsgQWRkcmVzc09mZnNldCA8IFRoaXNTZWN0aW9uU2l6ZTsKKwkJICAgICBBZGRyZXNzT2Zmc2V0KyspIHsKKwkJCUFkZHJlc3MgPSBCYXNlQWRkcmVzcyArIEFkZHJlc3NPZmZzZXQ7CisJCQkvLyBXcml0ZSB0aGUgYWRkcmVzcyB3aXRoIHRoZSBSRUFEIGJpdCBzZXQKKwkJCVdSSVRFX1JFRyhId1JlZ3MtPlVjb2RlQWRkciwKKwkJCQkgIChBZGRyZXNzIHwgTUlDUk9DT0RFX0FERFJFU1NfUkVBRCksIEZMVVNIKTsKKwkJCS8vIFJlYWQgaXQgYmFjayBhbmQgY2hlY2sgcGFyaXR5IGJpdC4KKwkJCVJFQURfUkVHKEh3UmVncy0+VWNvZGVBZGRyLCBWYWx1ZVJlYWQpOworCQkJaWYgKFZhbHVlUmVhZCAmIE1JQ1JPQ09ERV9BRERSRVNTX1BBUklUWSkgeworCQkJCURCR19FUlJPUigic3hnOiAlcyBQQVJJVFkgRVJST1JcbiIsCisJCQkJCSAgX19GVU5DVElPTl9fKTsKKworCQkJCXJldHVybiAoRkFMU0UpOwkvLyBQYXJpdHkgZXJyb3IKKwkJCX0KKwkJCUFTU0VSVCgoVmFsdWVSZWFkICYgTUlDUk9DT0RFX0FERFJFU1NfTUFTSykgPT0gQWRkcmVzcyk7CisJCQkvLyBSZWFkIHRoZSBpbnN0cnVjdGlvbiBiYWNrIGFuZCBjb21wYXJlCisJCQlSRUFEX1JFRyhId1JlZ3MtPlVjb2RlRGF0YUxvdywgVmFsdWVSZWFkKTsKKwkJCWlmIChWYWx1ZVJlYWQgIT0gKkluc3RydWN0aW9uKSB7CisJCQkJREJHX0VSUk9SKCJzeGc6ICVzIE1JU0NPTVBBUkUgTE9XXG4iLAorCQkJCQkgIF9fRlVOQ1RJT05fXyk7CisJCQkJcmV0dXJuIChGQUxTRSk7CS8vIE1pc2NvbXBhcmUKKwkJCX0KKwkJCVJFQURfUkVHKEh3UmVncy0+VWNvZGVEYXRhTWlkZGxlLCBWYWx1ZVJlYWQpOworCQkJaWYgKFZhbHVlUmVhZCAhPSAqKEluc3RydWN0aW9uICsgMSkpIHsKKwkJCQlEQkdfRVJST1IoInN4ZzogJXMgTUlTQ09NUEFSRSBNSURETEVcbiIsCisJCQkJCSAgX19GVU5DVElPTl9fKTsKKwkJCQlyZXR1cm4gKEZBTFNFKTsJLy8gTWlzY29tcGFyZQorCQkJfQorCQkJUkVBRF9SRUcoSHdSZWdzLT5VY29kZURhdGFIaWdoLCBWYWx1ZVJlYWQpOworCQkJaWYgKFZhbHVlUmVhZCAhPSAqKEluc3RydWN0aW9uICsgMikpIHsKKwkJCQlEQkdfRVJST1IoInN4ZzogJXMgTUlTQ09NUEFSRSBISUdIXG4iLAorCQkJCQkgIF9fRlVOQ1RJT05fXyk7CisJCQkJcmV0dXJuIChGQUxTRSk7CS8vIE1pc2NvbXBhcmUKKwkJCX0KKwkJCS8vIEFkdmFuY2UgMyB1MzJTIHRvIHN0YXJ0IG9mIG5leHQgaW5zdHJ1Y3Rpb24KKwkJCUluc3RydWN0aW9uICs9IDM7CisJCX0KKwl9CisKKwkvLyBFdmVyeXRoaW5nIE9LLCBHby4KKwlXUklURV9SRUcoSHdSZWdzLT5VY29kZUFkZHIsIE1JQ1JPQ09ERV9BRERSRVNTX0dPLCBGTFVTSCk7CisKKwkvLyBQb2xsIHRoZSBDYXJkVXAgcmVnaXN0ZXIgdG8gd2FpdCBmb3IgbWljcm9jb2RlIHRvIGluaXRpYWxpemUKKwkvLyBHaXZlIHVwIGFmdGVyIDEwLDAwMCBhdHRlbXBzICg1MDBtcykuCisJZm9yIChpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKwkJdWRlbGF5KDUwKTsKKwkJUkVBRF9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLkNhcmRVcCwgVmFsdWVSZWFkKTsKKwkJaWYgKFZhbHVlUmVhZCA9PSAweENBRkUpIHsKKwkJCURCR19FUlJPUigic3hnOiAlcyBCT08gWUEgMHhDQUZFXG4iLCBfX0ZVTkNUSU9OX18pOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGkgPT0gMTAwMDApIHsKKwkJREJHX0VSUk9SKCJzeGc6ICVzIFRJTUVPVVRcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkJcmV0dXJuIChGQUxTRSk7CS8vIFRpbWVvdXQKKwl9CisJLy8gTm93IHdyaXRlIHRoZSBMb2FkU3luYyByZWdpc3Rlci4gIFRoaXMgaXMgdXNlZCB0bworCS8vIHN5bmNocm9uaXplIHdpdGggdGhlIGNhcmQgc28gaXQgY2FuIHNjcmliYmxlIG9uIHRoZSBtZW1vcnkKKwkvLyB0aGF0IGNvbnRhaW5lZCAweENBRkUgZnJvbSB0aGUgIkNhcmRVcCIgc3RlcCBhYm92ZQorCWlmIChVY29kZVNlbCA9PSBTWEdfVUNPREVfU0FIQVJBKSB7CisJCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbMF0uTG9hZFN5bmMsIDAsIEZMVVNIKTsKKwl9CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYRG5sZFVjZCIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisJREJHX0VSUk9SKCJzeGc6ICVzIEVYSVRcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlyZXR1cm4gKFRSVUUpOworfQorCisvKgorICogc3hnX2FsbG9jYXRlX3Jlc291cmNlcyAtIEFsbG9jYXRlIG1lbW9yeSBhbmQgbG9ja3MKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglpbnQKKyAqLworc3RhdGljIGludCBzeGdfYWxsb2NhdGVfcmVzb3VyY2VzKHBfYWRhcHRlcl90IGFkYXB0ZXIpCit7CisJaW50IHN0YXR1czsKKwl1MzIgaTsKKwl1MzIgUnNzSWRzLCBJc3JDb3VudDsKKy8vICAgICAgUFNYR19YTVRfUklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWG10UmluZzsKKy8vICAgICAgUFNYR19SQ1ZfUklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmN2UmluZzsKKworCURCR19FUlJPUigiJXMgRU5URVJcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJBbGxvY1JlcyIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisKKwkvLyBXaW5kb3dzIHRlbGxzIHVzIGhvdyBtYW55IENQVXMgaXQgcGxhbnMgdG8gdXNlIGZvcgorCS8vIFJTUworCVJzc0lkcyA9IFNYR19SU1NfQ1BVX0NPVU5UKGFkYXB0ZXIpOworCUlzckNvdW50ID0gYWRhcHRlci0+TXNpRW5hYmxlZCA/IFJzc0lkcyA6IDE7CisKKwlEQkdfRVJST1IoIiVzIFNldHVwIHRoZSBzcGlubG9ja3NcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkvLyBBbGxvY2F0ZSBzcGlubG9ja3MgYW5kIGluaXRpYWxpemUgbGlzdGhlYWRzIGZpcnN0LgorCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5SY3ZRTG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmFkYXB0ZXItPlNnbFFMb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+WG10WmVyb0xvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5CaXQ2NFJlZ0xvY2spOworCXNwaW5fbG9ja19pbml0KCZhZGFwdGVyLT5BZGFwdGVyTG9jayk7CisKKwlEQkdfRVJST1IoIiVzIFNldHVwIHRoZSBsaXN0c1xuIiwgX19GVU5DVElPTl9fKTsKKworCUluaXRpYWxpemVMaXN0SGVhZCgmYWRhcHRlci0+RnJlZVJjdkJ1ZmZlcnMpOworCUluaXRpYWxpemVMaXN0SGVhZCgmYWRhcHRlci0+RnJlZVJjdkJsb2Nrcyk7CisJSW5pdGlhbGl6ZUxpc3RIZWFkKCZhZGFwdGVyLT5BbGxSY3ZCbG9ja3MpOworCUluaXRpYWxpemVMaXN0SGVhZCgmYWRhcHRlci0+RnJlZVNnbEJ1ZmZlcnMpOworCUluaXRpYWxpemVMaXN0SGVhZCgmYWRhcHRlci0+QWxsU2dsQnVmZmVycyk7CisKKwkvLyBNYXJrIHRoZXNlIGJhc2ljIGFsbG9jYXRpb25zIGRvbmUuICBUaGlzIGZsYWdzIGVzc2VudGlhbGx5CisJLy8gdGVsbHMgdGhlIFN4Z0ZyZWVSZXNvdXJjZXMgcm91dGluZSB0aGF0IGl0IGNhbiBncmFiIHNwaW5sb2NrcworCS8vIGFuZCByZWZlcmVuY2UgbGlzdGhlYWRzLgorCWFkYXB0ZXItPkJhc2ljQWxsb2NhdGlvbnMgPSBUUlVFOworCS8vIE1haW4gYWxsb2NhdGlvbiBsb29wLiAgU3RhcnQgd2l0aCB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgYnkKKwkvLyB0aGUgbWljcm9jb2RlIGFuZCBiYWNrIG9mZiBpZiBtZW1vcnkgYWxsb2NhdGlvbgorCS8vIGZhaWxzLiAgSWYgd2UgaGl0IGEgbWluaW11bSwgZmFpbC4KKworCWZvciAoOzspIHsKKwkJREJHX0VSUk9SKCIlcyBBbGxvY2F0ZSBYbXRSaW5ncyBzaXplWyVseF1cbiIsIF9fRlVOQ1RJT05fXywKKwkJCSAgKHNpemVvZihTWEdfWE1UX1JJTkcpICogMSkpOworCisJCS8vIFN0YXJ0IHdpdGggYmlnIGl0ZW1zIGZpcnN0IC0gcmVjZWl2ZSBhbmQgdHJhbnNtaXQgcmluZ3MuICBBdCB0aGUgbW9tZW50CisJCS8vIEknbSBnb2luZyB0byBrZWVwIHRoZSByaW5nIHNpemUgZml4ZWQgYW5kIGFkanVzdCB0aGUgbnVtYmVyIG9mCisJCS8vIFRDQnMgaWYgd2UgZmFpbC4gIExhdGVyIHdlIG1pZ2h0IGNvbnNpZGVyIHJlZHVjaW5nIHRoZSByaW5nIHNpemUgYXMgd2VsbC4uCisJCWFkYXB0ZXItPlhtdFJpbmdzID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkJCSBzaXplb2YoU1hHX1hNVF9SSU5HKSAqCisJCQkJCQkJIDEsCisJCQkJCQkJICZhZGFwdGVyLT5QWG10UmluZ3MpOworCQlEQkdfRVJST1IoIiVzIFhtdFJpbmdzWyVwXVxuIiwgX19GVU5DVElPTl9fLCBhZGFwdGVyLT5YbXRSaW5ncyk7CisKKwkJaWYgKCFhZGFwdGVyLT5YbXRSaW5ncykgeworCQkJZ290byBwZXJfdGNiX2FsbG9jYXRpb25fZmFpbGVkOworCQl9CisJCW1lbXNldChhZGFwdGVyLT5YbXRSaW5ncywgMCwgc2l6ZW9mKFNYR19YTVRfUklORykgKiAxKTsKKworCQlEQkdfRVJST1IoIiVzIEFsbG9jYXRlIFJjdlJpbmdzIHNpemVbJWx4XVxuIiwgX19GVU5DVElPTl9fLAorCQkJICAoc2l6ZW9mKFNYR19SQ1ZfUklORykgKiAxKSk7CisJCWFkYXB0ZXItPlJjdlJpbmdzID0KKwkJICAgIHBjaV9hbGxvY19jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkJIHNpemVvZihTWEdfUkNWX1JJTkcpICogMSwKKwkJCQkJICZhZGFwdGVyLT5QUmN2UmluZ3MpOworCQlEQkdfRVJST1IoIiVzIFJjdlJpbmdzWyVwXVxuIiwgX19GVU5DVElPTl9fLCBhZGFwdGVyLT5SY3ZSaW5ncyk7CisJCWlmICghYWRhcHRlci0+UmN2UmluZ3MpIHsKKwkJCWdvdG8gcGVyX3RjYl9hbGxvY2F0aW9uX2ZhaWxlZDsKKwkJfQorCQltZW1zZXQoYWRhcHRlci0+UmN2UmluZ3MsIDAsIHNpemVvZihTWEdfUkNWX1JJTkcpICogMSk7CisJCWJyZWFrOworCisJICAgICAgcGVyX3RjYl9hbGxvY2F0aW9uX2ZhaWxlZDoKKwkJLy8gYW4gYWxsb2NhdGlvbiBmYWlsZWQuICBGcmVlIGFueSBzdWNjZXNzZnVsIGFsbG9jYXRpb25zLgorCQlpZiAoYWRhcHRlci0+WG10UmluZ3MpIHsKKwkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkgICAgc2l6ZW9mKFNYR19YTVRfUklORykgKiA0MDk2LAorCQkJCQkgICAgYWRhcHRlci0+WG10UmluZ3MsCisJCQkJCSAgICBhZGFwdGVyLT5QWG10UmluZ3MpOworCQkJYWRhcHRlci0+WG10UmluZ3MgPSBOVUxMOworCQl9CisJCWlmIChhZGFwdGVyLT5SY3ZSaW5ncykgeworCQkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wY2lkZXYsCisJCQkJCSAgICBzaXplb2YoU1hHX1JDVl9SSU5HKSAqIDQwOTYsCisJCQkJCSAgICBhZGFwdGVyLT5SY3ZSaW5ncywKKwkJCQkJICAgIGFkYXB0ZXItPlBSY3ZSaW5ncyk7CisJCQlhZGFwdGVyLT5SY3ZSaW5ncyA9IE5VTEw7CisJCX0KKwkJLy8gTG9vcCBhcm91bmQgYW5kIHRyeSBhZ2Fpbi4uLi4KKwl9CisKKwlEQkdfRVJST1IoIiVzIEluaXRpYWxpemUgUkNWIFpFUk8gYW5kIFhNVCBaRVJPIHJpbmdzXG4iLCBfX0ZVTkNUSU9OX18pOworCS8vIEluaXRpYWxpemUgcmN2IHplcm8gYW5kIHhtdCB6ZXJvIHJpbmdzCisJU1hHX0lOSVRJQUxJWkVfUklORyhhZGFwdGVyLT5SY3ZSaW5nWmVyb0luZm8sIFNYR19SQ1ZfUklOR19TSVpFKTsKKwlTWEdfSU5JVElBTElaRV9SSU5HKGFkYXB0ZXItPlhtdFJpbmdaZXJvSW5mbywgU1hHX1hNVF9SSU5HX1NJWkUpOworCisJLy8gU2FuaXR5IGNoZWNrIHJlY2VpdmUgZGF0YSBzdHJ1Y3R1cmUgZm9ybWF0CisJQVNTRVJUKChhZGFwdGVyLT5SZWNlaXZlQnVmZmVyU2l6ZSA9PSBTWEdfUkNWX0RBVEFfQlVGRkVSX1NJWkUpIHx8CisJICAgICAgIChhZGFwdGVyLT5SZWNlaXZlQnVmZmVyU2l6ZSA9PSBTWEdfUkNWX0pVTUJPX0JVRkZFUl9TSVpFKSk7CisJQVNTRVJUKHNpemVvZihTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0spID09CisJICAgICAgIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19TSVpFKTsKKworCS8vIEFsbG9jYXRlIHJlY2VpdmUgZGF0YSBidWZmZXJzLiAgV2UgYWxsb2NhdGUgYSBibG9jayBvZiBidWZmZXJzIGFuZAorCS8vIGEgY29ycmVzcG9uZGluZyBkZXNjcmlwdG9yIGJsb2NrIGF0IG9uY2UuICBTZWUgc3hnaHcuaDpTWEdfUkNWX0JMT0NLCisJZm9yIChpID0gMDsgaSA8IFNYR19JTklUSUFMX1JDVl9EQVRBX0JVRkZFUlM7CisJICAgICBpICs9IFNYR19SQ1ZfREVTQ1JJUFRPUlNfUEVSX0JMT0NLKSB7CisJCXN4Z19hbGxvY2F0ZV9idWZmZXJfbWVtb3J5KGFkYXB0ZXIsCisJCQkJCSAgIFNYR19SQ1ZfQkxPQ0tfU0laRShhZGFwdGVyLT4KKwkJCQkJCQkgICAgICBSZWNlaXZlQnVmZmVyU2l6ZSksCisJCQkJCSAgIFNYR19CVUZGRVJfVFlQRV9SQ1YpOworCX0KKwkvLyBOQkwgcmVzb3VyY2UgYWxsb2NhdGlvbiBjYW4gZmFpbCBpbiB0aGUgJ0FsbG9jYXRlQ29tcGxldGUnIHJvdXRpbmUsIHdoaWNoCisJLy8gZG9lc24ndCByZXR1cm4gc3RhdHVzLiAgTWFrZSBzdXJlIHdlIGdvdCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgd2UgcmVxdWVzdGVkCisJaWYgKGFkYXB0ZXItPkZyZWVSY3ZCdWZmZXJDb3VudCA8IFNYR19JTklUSUFMX1JDVl9EQVRBX0JVRkZFUlMpIHsKKwkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEFSZXNGNiIsCisJCQkgIGFkYXB0ZXIsIGFkYXB0ZXItPkZyZWVSY3ZCdWZmZXJDb3VudCwgU1hHX01BWF9FTlRSSUVTLAorCQkJICAwKTsKKwkJcmV0dXJuIChTVEFUVVNfUkVTT1VSQ0VTKTsKKwl9CisKKwlEQkdfRVJST1IoIiVzIEFsbG9jYXRlIEV2ZW50UmluZ3Mgc2l6ZVslbHhdXG4iLCBfX0ZVTkNUSU9OX18sCisJCSAgKHNpemVvZihTWEdfRVZFTlRfUklORykgKiBSc3NJZHMpKTsKKworCS8vIEFsbG9jYXRlIGV2ZW50IHF1ZXVlcy4KKwlhZGFwdGVyLT5FdmVudFJpbmdzID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkJICAgc2l6ZW9mKFNYR19FVkVOVF9SSU5HKSAqCisJCQkJCQkgICBSc3NJZHMsCisJCQkJCQkgICAmYWRhcHRlci0+UEV2ZW50UmluZ3MpOworCisJaWYgKCFhZGFwdGVyLT5FdmVudFJpbmdzKSB7CisJCS8vIENhbGxlciB3aWxsIGNhbGwgU3hnRnJlZUFkYXB0ZXIgdG8gY2xlYW4gdXAgYWJvdmUgYWxsb2NhdGlvbnMKKwkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEFSZXNGOCIsCisJCQkgIGFkYXB0ZXIsIFNYR19NQVhfRU5UUklFUywgMCwgMCk7CisJCXN0YXR1cyA9IFNUQVRVU19SRVNPVVJDRVM7CisJCWdvdG8gcGVyX3RjYl9hbGxvY2F0aW9uX2ZhaWxlZDsKKwl9CisJbWVtc2V0KGFkYXB0ZXItPkV2ZW50UmluZ3MsIDAsIHNpemVvZihTWEdfRVZFTlRfUklORykgKiBSc3NJZHMpOworCisJREJHX0VSUk9SKCIlcyBBbGxvY2F0ZSBJU1Igc2l6ZVsleF1cbiIsIF9fRlVOQ1RJT05fXywgSXNyQ291bnQpOworCS8vIEFsbG9jYXRlIElTUgorCWFkYXB0ZXItPklzciA9IHBjaV9hbGxvY19jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkJICAgIElzckNvdW50LCAmYWRhcHRlci0+UElzcik7CisJaWYgKCFhZGFwdGVyLT5Jc3IpIHsKKwkJLy8gQ2FsbGVyIHdpbGwgY2FsbCBTeGdGcmVlQWRhcHRlciB0byBjbGVhbiB1cCBhYm92ZSBhbGxvY2F0aW9ucworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYQVJlc0Y5IiwKKwkJCSAgYWRhcHRlciwgU1hHX01BWF9FTlRSSUVTLCAwLCAwKTsKKwkJc3RhdHVzID0gU1RBVFVTX1JFU09VUkNFUzsKKwkJZ290byBwZXJfdGNiX2FsbG9jYXRpb25fZmFpbGVkOworCX0KKwltZW1zZXQoYWRhcHRlci0+SXNyLCAwLCBzaXplb2YodTMyKSAqIElzckNvdW50KTsKKworCURCR19FUlJPUigiJXMgQWxsb2NhdGUgc2hhcmVkIFhNVCByaW5nIHplcm8gaW5kZXggbG9jYXRpb24gc2l6ZVslbHhdXG4iLAorCQkgIF9fRlVOQ1RJT05fXywgc2l6ZW9mKHUzMikpOworCisJLy8gQWxsb2NhdGUgc2hhcmVkIFhNVCByaW5nIHplcm8gaW5kZXggbG9jYXRpb24KKwlhZGFwdGVyLT5YbXRSaW5nWmVyb0luZGV4ID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCQkJCSBzaXplb2YodTMyKSwKKwkJCQkJCQkgJmFkYXB0ZXItPgorCQkJCQkJCSBQWG10UmluZ1plcm9JbmRleCk7CisJaWYgKCFhZGFwdGVyLT5YbXRSaW5nWmVyb0luZGV4KSB7CisJCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhBUmVzRjEwIiwKKwkJCSAgYWRhcHRlciwgU1hHX01BWF9FTlRSSUVTLCAwLCAwKTsKKwkJc3RhdHVzID0gU1RBVFVTX1JFU09VUkNFUzsKKwkJZ290byBwZXJfdGNiX2FsbG9jYXRpb25fZmFpbGVkOworCX0KKwltZW1zZXQoYWRhcHRlci0+WG10UmluZ1plcm9JbmRleCwgMCwgc2l6ZW9mKHUzMikpOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEFsY1Jlc1MiLAorCQkgIGFkYXB0ZXIsIFNYR19NQVhfRU5UUklFUywgMCwgMCk7CisKKwlEQkdfRVJST1IoIiVzIEVYSVRcbiIsIF9fRlVOQ1RJT05fXyk7CisJcmV0dXJuIChTVEFUVVNfU1VDQ0VTUyk7Cit9CisKKy8qCisgKiBzeGdfY29uZmlnX3BjaSAtCisgKgorICogU2V0IHVwIFBDSSBDb25maWd1cmF0aW9uIHNwYWNlCisgKgorICogQXJndW1lbnRzIC0KKyAqCQlwY2lkZXYJCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKi8KK3N0YXRpYyB2b2lkIHN4Z19jb25maWdfcGNpKHN0cnVjdCBwY2lfZGV2ICpwY2lkZXYpCit7CisJdTE2IHBjaV9jb21tYW5kOworCXUxNiBuZXdfY29tbWFuZDsKKworCXBjaV9yZWFkX2NvbmZpZ193b3JkKHBjaWRldiwgUENJX0NPTU1BTkQsICZwY2lfY29tbWFuZCk7CisJREJHX0VSUk9SKCJzeGc6ICVzICBQQ0kgY29tbWFuZFslNC40eF1cbiIsIF9fRlVOQ1RJT05fXywgcGNpX2NvbW1hbmQpOworCS8vIFNldCB0aGUgY29tbWFuZCByZWdpc3RlcgorCW5ld19jb21tYW5kID0gcGNpX2NvbW1hbmQgfCAoUENJX0NPTU1BTkRfTUVNT1JZIHwJLy8gTWVtb3J5IFNwYWNlIEVuYWJsZQorCQkJCSAgICAgUENJX0NPTU1BTkRfTUFTVEVSIHwJLy8gQnVzIG1hc3RlciBlbmFibGUKKwkJCQkgICAgIFBDSV9DT01NQU5EX0lOVkFMSURBVEUgfAkvLyBNZW1vcnkgd3JpdGUgYW5kIGludmFsaWRhdGUKKwkJCQkgICAgIFBDSV9DT01NQU5EX1BBUklUWSB8CS8vIFBhcml0eSBlcnJvciByZXNwb25zZQorCQkJCSAgICAgUENJX0NPTU1BTkRfU0VSUiB8CS8vIFN5c3RlbSBFUlIKKwkJCQkgICAgIFBDSV9DT01NQU5EX0ZBU1RfQkFDSyk7CS8vIEZhc3QgYmFjay10by1iYWNrCisJaWYgKHBjaV9jb21tYW5kICE9IG5ld19jb21tYW5kKSB7CisJCURCR19FUlJPUigiJXMgLS0gVXBkYXRpbmcgUENJIENPTU1BTkQgcmVnaXN0ZXIgJTQuNHgtPiU0LjR4LlxuIiwKKwkJCSAgX19GVU5DVElPTl9fLCBwY2lfY29tbWFuZCwgbmV3X2NvbW1hbmQpOworCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQocGNpZGV2LCBQQ0lfQ09NTUFORCwgbmV3X2NvbW1hbmQpOworCX0KK30KKworc3RhdGljIGludCBzeGdfZW50cnlfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaWRldiwKKwkJCSAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfdGJsX2VudHJ5KQoreworCXN0YXRpYyBpbnQgZGlkX3ZlcnNpb24gPSAwOworCWludCBlcnI7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKKwlwX2FkYXB0ZXJfdCBhZGFwdGVyOworCXZvaWQgX19pb21lbSAqbWVtbWFwcGVkX2lvYWRkcjsKKwl1MzIgc3RhdHVzID0gMDsKKwl1bG9uZyBtbWlvX3N0YXJ0ID0gMDsKKwl1bG9uZyBtbWlvX2xlbiA9IDA7CisKKwlEQkdfRVJST1IoInN4ZzogJXMgMi42IFZFUlNJT04gRU5URVIgamlmZmllc1slbHhdIGNwdSAlZFxuIiwKKwkJICBfX0ZVTkNUSU9OX18sIGppZmZpZXMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisKKwkvLyBJbml0aWFsaXplIHRyYWNlIGJ1ZmZlcgorI2lmZGVmIEFUS0RCRworCVN4Z1RyYWNlQnVmZmVyID0gJkxTeGdUcmFjZUJ1ZmZlcjsKKwlTWEdfVFJBQ0VfSU5JVChTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1kpOworI2VuZGlmCisKKwlzeGdfZ2xvYmFsLmR5bmFtaWNfaW50YWdnID0gZHluYW1pY19pbnRhZ2c7CisKKwllcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2lkZXYpOworCisJREJHX0VSUk9SKCJDYWxsIHBjaV9lbmFibGVfZGV2aWNlKCVwKSAgc3RhdHVzWyV4XVxuIiwgcGNpZGV2LCBlcnIpOworCWlmIChlcnIpIHsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlpZiAoc3hnX2RlYnVnID4gMCAmJiBkaWRfdmVyc2lvbisrID09IDApIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXNcbiIsIHN4Z19iYW5uZXIpOworCQlwcmludGsoS0VSTl9JTkZPICIlc1xuIiwgRFJWX1ZFUlNJT04pOworCX0KKworCWlmICghKGVyciA9IHBjaV9zZXRfZG1hX21hc2socGNpZGV2LCBETUFfNjRCSVRfTUFTSykpKSB7CisJCURCR19FUlJPUigicGNpX3NldF9kbWFfbWFzayhETUFfNjRCSVRfTUFTSykgc3VjY2Vzc2Z1bFxuIik7CisJfSBlbHNlIHsKKwkJaWYgKChlcnIgPSBwY2lfc2V0X2RtYV9tYXNrKHBjaWRldiwgRE1BXzMyQklUX01BU0spKSkgeworCQkJREJHX0VSUk9SCisJCQkgICAgKCJObyB1c2FibGUgRE1BIGNvbmZpZ3VyYXRpb24sIGFib3J0aW5nICBlcnJbJXhdXG4iLAorCQkJICAgICBlcnIpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCQlEQkdfRVJST1IoInBjaV9zZXRfZG1hX21hc2soRE1BXzMyQklUX01BU0spIHN1Y2Nlc3NmdWxcbiIpOworCX0KKworCURCR19FUlJPUigiQ2FsbCBwY2lfcmVxdWVzdF9yZWdpb25zXG4iKTsKKworCWVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpZGV2LCBEUlZfTkFNRSk7CisJaWYgKGVycikgeworCQlEQkdfRVJST1IoInBjaV9yZXF1ZXN0X3JlZ2lvbnMgRkFJTEVEIGVyclsleF1cbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJREJHX0VSUk9SKCJjYWxsIHBjaV9zZXRfbWFzdGVyXG4iKTsKKwlwY2lfc2V0X21hc3RlcihwY2lkZXYpOworCisJREJHX0VSUk9SKCJjYWxsIGFsbG9jX2V0aGVyZGV2XG4iKTsKKwluZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2YoYWRhcHRlcl90KSk7CisJaWYgKCFuZXRkZXYpIHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBlcnJfb3V0X2V4aXRfc3hnX3Byb2JlOworCX0KKwlEQkdfRVJST1IoImFsbG9jX2V0aGVyZGV2IGZvciBzbGljIG5ldGRldlslcF1cbiIsIG5ldGRldik7CisKKwlTRVRfTkVUREVWX0RFVihuZXRkZXYsICZwY2lkZXYtPmRldik7CisKKwlwY2lfc2V0X2RydmRhdGEocGNpZGV2LCBuZXRkZXYpOworCWFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCWFkYXB0ZXItPm5ldGRldiA9IG5ldGRldjsKKwlhZGFwdGVyLT5wY2lkZXYgPSBwY2lkZXY7CisKKwltbWlvX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaWRldiwgMCk7CisJbW1pb19sZW4gPSBwY2lfcmVzb3VyY2VfbGVuKHBjaWRldiwgMCk7CisKKwlEQkdfRVJST1IoInN4ZzogY2FsbCBpb3JlbWFwKG1taW9fc3RhcnRbJWx4XSwgbW1pb19sZW5bJWx4XSlcbiIsCisJCSAgbW1pb19zdGFydCwgbW1pb19sZW4pOworCisJbWVtbWFwcGVkX2lvYWRkciA9IGlvcmVtYXAobW1pb19zdGFydCwgbW1pb19sZW4pOworCURCR19FUlJPUigic3hnOiAlcyBNRU1NQVBQRURfSU9BRERSIFslcF1cbiIsIF9fRlVOQ1RJT05fXywKKwkJICBtZW1tYXBwZWRfaW9hZGRyKTsKKwlpZiAoIW1lbW1hcHBlZF9pb2FkZHIpIHsKKwkJREJHX0VSUk9SKCIlcyBjYW5ub3QgcmVtYXAgTU1JTyByZWdpb24gJWx4IEAgJWx4XG4iLAorCQkJICBfX0ZVTkNUSU9OX18sIG1taW9fbGVuLCBtbWlvX3N0YXJ0KTsKKwkJZ290byBlcnJfb3V0X2ZyZWVfbW1pb19yZWdpb247CisJfQorCisJREJHX0VSUk9SCisJICAgICgic3hnOiAlcyBmb3VuZCBBbGFjcml0ZWNoIFNYRyBQQ0ksIE1NSU8gYXQgJXAsIHN0YXJ0WyVseF0gbGVuWyVseF0sIElSUSAlZC5cbiIsCisJICAgICBfX2Z1bmNfXywgbWVtbWFwcGVkX2lvYWRkciwgbW1pb19zdGFydCwgbW1pb19sZW4sIHBjaWRldi0+aXJxKTsKKworCWFkYXB0ZXItPkh3UmVncyA9ICh2b2lkICopbWVtbWFwcGVkX2lvYWRkcjsKKwlhZGFwdGVyLT5iYXNlX2FkZHIgPSBtZW1tYXBwZWRfaW9hZGRyOworCisJbW1pb19zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2lkZXYsIDIpOworCW1taW9fbGVuID0gcGNpX3Jlc291cmNlX2xlbihwY2lkZXYsIDIpOworCisJREJHX0VSUk9SKCJzeGc6IGNhbGwgaW9yZW1hcChtbWlvX3N0YXJ0WyVseF0sIG1taW9fbGVuWyVseF0pXG4iLAorCQkgIG1taW9fc3RhcnQsIG1taW9fbGVuKTsKKworCW1lbW1hcHBlZF9pb2FkZHIgPSBpb3JlbWFwKG1taW9fc3RhcnQsIG1taW9fbGVuKTsKKwlEQkdfRVJST1IoInN4ZzogJXMgTUVNTUFQUEVEX0lPQUREUiBbJXBdXG4iLCBfX2Z1bmNfXywKKwkJICBtZW1tYXBwZWRfaW9hZGRyKTsKKwlpZiAoIW1lbW1hcHBlZF9pb2FkZHIpIHsKKwkJREJHX0VSUk9SKCIlcyBjYW5ub3QgcmVtYXAgTU1JTyByZWdpb24gJWx4IEAgJWx4XG4iLAorCQkJICBfX0ZVTkNUSU9OX18sIG1taW9fbGVuLCBtbWlvX3N0YXJ0KTsKKwkJZ290byBlcnJfb3V0X2ZyZWVfbW1pb19yZWdpb247CisJfQorCisJREJHX0VSUk9SKCJzeGc6ICVzIGZvdW5kIEFsYWNyaXRlY2ggU1hHIFBDSSwgTU1JTyBhdCAlcCwgIgorCQkgICJzdGFydFslbHhdIGxlblslbHhdLCBJUlEgJWQuXG4iLCBfX2Z1bmNfXywKKwkJICBtZW1tYXBwZWRfaW9hZGRyLCBtbWlvX3N0YXJ0LCBtbWlvX2xlbiwgcGNpZGV2LT5pcnEpOworCisJYWRhcHRlci0+VWNvZGVSZWdzID0gKHZvaWQgKiltZW1tYXBwZWRfaW9hZGRyOworCisJYWRhcHRlci0+U3RhdGUgPSBTWEdfU1RBVEVfSU5JVElBTElaSU5HOworCS8vIE1haW50YWluIGEgbGlzdCBvZiBhbGwgYWRhcHRlcnMgYW5jaG9yZWQgYnkKKwkvLyB0aGUgZ2xvYmFsIFN4Z0RyaXZlciBzdHJ1Y3R1cmUuCisJYWRhcHRlci0+TmV4dCA9IFN4Z0RyaXZlci5BZGFwdGVyczsKKwlTeGdEcml2ZXIuQWRhcHRlcnMgPSBhZGFwdGVyOworCWFkYXB0ZXItPkFkYXB0ZXJJRCA9ICsrU3hnRHJpdmVyLkFkYXB0ZXJJRDsKKworCS8vIEluaXRpYWxpemUgQ1JDIHRhYmxlIHVzZWQgdG8gZGV0ZXJtaW5lIG11bHRpY2FzdCBoYXNoCisJc3hnX21jYXN0X2luaXRfY3JjMzIoKTsKKworCWFkYXB0ZXItPkp1bWJvRW5hYmxlZCA9IEZBTFNFOworCWFkYXB0ZXItPlJzc0VuYWJsZWQgPSBGQUxTRTsKKwlpZiAoYWRhcHRlci0+SnVtYm9FbmFibGVkKSB7CisJCWFkYXB0ZXItPkZyYW1lU2l6ZSA9IEpVTUJPTUFYRlJBTUU7CisJCWFkYXB0ZXItPlJlY2VpdmVCdWZmZXJTaXplID0gU1hHX1JDVl9KVU1CT19CVUZGRVJfU0laRTsKKwl9IGVsc2UgeworCQlhZGFwdGVyLT5GcmFtZVNpemUgPSBFVEhFUk1BWEZSQU1FOworCQlhZGFwdGVyLT5SZWNlaXZlQnVmZmVyU2l6ZSA9IFNYR19SQ1ZfREFUQV9CVUZGRVJfU0laRTsKKwl9CisKKy8vICAgIHN0YXR1cyA9IFNYR19SRUFEX0VFUFJPTShhZGFwdGVyKTsKKy8vICAgIGlmICghc3RhdHVzKSB7CisvLyAgICAgICAgZ290byBzeGdfaW5pdF9iYWQ7CisvLyAgICB9CisKKwlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2NvbmZpZ19wY2lcbiIsIF9fRlVOQ1RJT05fXyk7CisJc3hnX2NvbmZpZ19wY2kocGNpZGV2KTsKKwlEQkdfRVJST1IoInN4ZzogJXMgRVhJVCBzeGdfY29uZmlnX3BjaVxuIiwgX19GVU5DVElPTl9fKTsKKworCURCR19FUlJPUigic3hnOiAlcyBFTlRFUiBzeGdfaW5pdF9kcml2ZXJcbiIsIF9fRlVOQ1RJT05fXyk7CisJc3hnX2luaXRfZHJpdmVyKCk7CisJREJHX0VSUk9SKCJzeGc6ICVzIEVYSVQgc3hnX2luaXRfZHJpdmVyXG4iLCBfX0ZVTkNUSU9OX18pOworCisJYWRhcHRlci0+dmVuZGlkID0gcGNpX3RibF9lbnRyeS0+dmVuZG9yOworCWFkYXB0ZXItPmRldmlkID0gcGNpX3RibF9lbnRyeS0+ZGV2aWNlOworCWFkYXB0ZXItPnN1YnN5c2lkID0gcGNpX3RibF9lbnRyeS0+c3ViZGV2aWNlOworCWFkYXB0ZXItPmJ1c251bWJlciA9IHBjaWRldi0+YnVzLT5udW1iZXI7CisJYWRhcHRlci0+c2xvdG51bWJlciA9ICgocGNpZGV2LT5kZXZmbiA+PiAzKSAmIDB4MUYpOworCWFkYXB0ZXItPmZ1bmN0aW9ubnVtYmVyID0gKHBjaWRldi0+ZGV2Zm4gJiAweDcpOworCWFkYXB0ZXItPm1lbW9yeWxlbmd0aCA9IHBjaV9yZXNvdXJjZV9sZW4ocGNpZGV2LCAwKTsKKwlhZGFwdGVyLT5pcnEgPSBwY2lkZXYtPmlycTsKKwlhZGFwdGVyLT5uZXh0X25ldGRldmljZSA9IGhlYWRfbmV0ZGV2aWNlOworCWhlYWRfbmV0ZGV2aWNlID0gbmV0ZGV2OworLy8gICAgICBhZGFwdGVyLT5jaGlwaWQgPSBjaGlwX2lkeDsKKwlhZGFwdGVyLT5wb3J0ID0gMDsJLy9hZGFwdGVyLT5mdW5jdGlvbm51bWJlcjsKKwlhZGFwdGVyLT5jYXJkaW5kZXggPSBhZGFwdGVyLT5wb3J0OworCisJLy8gQWxsb2NhdGUgbWVtb3J5IGFuZCBvdGhlciByZXNvdXJjZXMKKwlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2FsbG9jYXRlX3Jlc291cmNlc1xuIiwgX19GVU5DVElPTl9fKTsKKwlzdGF0dXMgPSBzeGdfYWxsb2NhdGVfcmVzb3VyY2VzKGFkYXB0ZXIpOworCURCR19FUlJPUigic3hnOiAlcyBFWElUIHN4Z19hbGxvY2F0ZV9yZXNvdXJjZXMgc3RhdHVzICV4XG4iLAorCQkgIF9fRlVOQ1RJT05fXywgc3RhdHVzKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCWdvdG8gZXJyX291dF91bm1hcDsKKwl9CisKKwlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2Rvd25sb2FkX21pY3JvY29kZVxuIiwgX19GVU5DVElPTl9fKTsKKwlpZiAoc3hnX2Rvd25sb2FkX21pY3JvY29kZShhZGFwdGVyLCBTWEdfVUNPREVfU0FIQVJBKSkgeworCQlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2FkYXB0ZXJfc2V0X2h3YWRkclxuIiwKKwkJCSAgX19GVU5DVElPTl9fKTsKKwkJc3hnX2FkYXB0ZXJfc2V0X2h3YWRkcihhZGFwdGVyKTsKKwl9IGVsc2UgeworCQlhZGFwdGVyLT5zdGF0ZSA9IEFEQVBUX0ZBSUw7CisJCWFkYXB0ZXItPmxpbmtzdGF0ZSA9IExJTktfRE9XTjsKKwkJREJHX0VSUk9SKCJzeGdfZG93bmxvYWRfbWljcm9jb2RlIEZBSUxFRCBzdGF0dXNbJXhdXG4iLCBzdGF0dXMpOworCX0KKworCW5ldGRldi0+YmFzZV9hZGRyID0gKHVuc2lnbmVkIGxvbmcpYWRhcHRlci0+YmFzZV9hZGRyOworCW5ldGRldi0+aXJxID0gYWRhcHRlci0+aXJxOworCW5ldGRldi0+b3BlbiA9IHN4Z19lbnRyeV9vcGVuOworCW5ldGRldi0+c3RvcCA9IHN4Z19lbnRyeV9oYWx0OworCW5ldGRldi0+aGFyZF9zdGFydF94bWl0ID0gc3hnX3NlbmRfcGFja2V0czsKKwluZXRkZXYtPmRvX2lvY3RsID0gc3hnX2lvY3RsOworI2lmIFhYWFRPRE8KKwluZXRkZXYtPnNldF9tYWNfYWRkcmVzcyA9IHN4Z19tYWNfc2V0X2FkZHJlc3M7CisjaWYgU0xJQ19HRVRfU1RBVFNfRU5BQkxFRAorCW5ldGRldi0+Z2V0X3N0YXRzID0gc3hnX2dldF9zdGF0czsKKyNlbmRpZgorCW5ldGRldi0+c2V0X211bHRpY2FzdF9saXN0ID0gc3hnX21jYXN0X3NldF9saXN0OworI2VuZGlmCisKKwlzdHJjcHkobmV0ZGV2LT5uYW1lLCAiZXRoJWQiKTsKKy8vICBzdHJjcHkobmV0ZGV2LT5uYW1lLCBwY2lfbmFtZShwY2lkZXYpKTsKKwlpZiAoKGVyciA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpKSkgeworCQlEQkdfRVJST1IoIkNhbm5vdCByZWdpc3RlciBuZXQgZGV2aWNlLCBhYm9ydGluZy4gJXNcbiIsCisJCQkgIG5ldGRldi0+bmFtZSk7CisJCWdvdG8gZXJyX291dF91bm1hcDsKKwl9CisKKwlEQkdfRVJST1IKKwkgICAgKCJzeGc6ICVzIGFkZHIgMHglbHgsIGlycSAlZCwgTUFDIGFkZHIgJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlhcbiIsCisJICAgICBuZXRkZXYtPm5hbWUsIG5ldGRldi0+YmFzZV9hZGRyLCBwY2lkZXYtPmlycSwgbmV0ZGV2LT5kZXZfYWRkclswXSwKKwkgICAgIG5ldGRldi0+ZGV2X2FkZHJbMV0sIG5ldGRldi0+ZGV2X2FkZHJbMl0sIG5ldGRldi0+ZGV2X2FkZHJbM10sCisJICAgICBuZXRkZXYtPmRldl9hZGRyWzRdLCBuZXRkZXYtPmRldl9hZGRyWzVdKTsKKworLy9zeGdfaW5pdF9iYWQ6CisJQVNTRVJUKHN0YXR1cyA9PSBGQUxTRSk7CisvLyAgICAgIHN4Z19mcmVlX2FkYXB0ZXIoYWRhcHRlcik7CisKKwlEQkdfRVJST1IoInN4ZzogJXMgRVhJVCBzdGF0dXNbJXhdIGppZmZpZXNbJWx4XSBjcHUgJWRcbiIsIF9fRlVOQ1RJT05fXywKKwkJICBzdGF0dXMsIGppZmZpZXMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJcmV0dXJuIHN0YXR1czsKKworICAgICAgZXJyX291dF91bm1hcDoKKwlpb3VubWFwKCh2b2lkICopbWVtbWFwcGVkX2lvYWRkcik7CisKKyAgICAgIGVycl9vdXRfZnJlZV9tbWlvX3JlZ2lvbjoKKwlyZWxlYXNlX21lbV9yZWdpb24obW1pb19zdGFydCwgbW1pb19sZW4pOworCisgICAgICBlcnJfb3V0X2V4aXRfc3hnX3Byb2JlOgorCisJREJHX0VSUk9SKCIlcyBFWElUIGppZmZpZXNbJWx4XSBjcHUgJWRcbiIsIF9fRlVOQ1RJT05fXywgamlmZmllcywKKwkJICBzbXBfcHJvY2Vzc29yX2lkKCkpOworCisJcmV0dXJuIC1FTk9ERVY7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTElORSBCQVNFIEludGVycnVwdCByb3V0aW5lcy4uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICoKKyAqIHN4Z19kaXNhYmxlX2ludGVycnVwdAorICoKKyAqIERpc2FibGVJbnRlcnJ1cHQgSGFuZGxlcgorICoKKyAqIEFyZ3VtZW50czoKKyAqCisgKiAgIGFkYXB0ZXI6CU91ciBhZGFwdGVyIHN0cnVjdHVyZQorICoKKyAqIFJldHVybiBWYWx1ZToKKyAqIAlOb25lLgorICovCitzdGF0aWMgdm9pZCBzeGdfZGlzYWJsZV9pbnRlcnJ1cHQocF9hZGFwdGVyX3QgYWRhcHRlcikKK3sKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJEaXNJbnRyIiwKKwkJICBhZGFwdGVyLCBhZGFwdGVyLT5JbnRlcnJ1cHRzRW5hYmxlZCwgMCwgMCk7CisJLy8gRm9yIG5vdywgUlNTIGlzIGRpc2FibGVkIHdpdGggbGluZSBiYXNlZCBpbnRlcnJ1cHRzCisJQVNTRVJUKGFkYXB0ZXItPlJzc0VuYWJsZWQgPT0gRkFMU0UpOworCUFTU0VSVChhZGFwdGVyLT5Nc2lFbmFibGVkID09IEZBTFNFKTsKKwkvLworCS8vIFR1cm4gb2ZmIGludGVycnVwdHMgYnkgd3JpdGluZyB0byB0aGUgaWNyIHJlZ2lzdGVyLgorCS8vCisJV1JJVEVfUkVHKGFkYXB0ZXItPlVjb2RlUmVnc1swXS5JY3IsIFNYR19JQ1IoMCwgU1hHX0lDUl9ESVNBQkxFKSwgVFJVRSk7CisKKwlhZGFwdGVyLT5JbnRlcnJ1cHRzRW5hYmxlZCA9IDA7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYRGlzSW50ciIsCisJCSAgYWRhcHRlciwgYWRhcHRlci0+SW50ZXJydXB0c0VuYWJsZWQsIDAsIDApOworfQorCisvKgorICoKKyAqIHN4Z19lbmFibGVfaW50ZXJydXB0CisgKgorICogRW5hYmxlSW50ZXJydXB0IEhhbmRsZXIKKyAqCisgKiBBcmd1bWVudHM6CisgKgorICogICBhZGFwdGVyOglPdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiAJTm9uZS4KKyAqLworc3RhdGljIHZvaWQgc3hnX2VuYWJsZV9pbnRlcnJ1cHQocF9hZGFwdGVyX3QgYWRhcHRlcikKK3sKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJFbkludHIiLAorCQkgIGFkYXB0ZXIsIGFkYXB0ZXItPkludGVycnVwdHNFbmFibGVkLCAwLCAwKTsKKwkvLyBGb3Igbm93LCBSU1MgaXMgZGlzYWJsZWQgd2l0aCBsaW5lIGJhc2VkIGludGVycnVwdHMKKwlBU1NFUlQoYWRhcHRlci0+UnNzRW5hYmxlZCA9PSBGQUxTRSk7CisJQVNTRVJUKGFkYXB0ZXItPk1zaUVuYWJsZWQgPT0gRkFMU0UpOworCS8vCisJLy8gVHVybiBvbiBpbnRlcnJ1cHRzIGJ5IHdyaXRpbmcgdG8gdGhlIGljciByZWdpc3Rlci4KKwkvLworCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbMF0uSWNyLCBTWEdfSUNSKDAsIFNYR19JQ1JfRU5BQkxFKSwgVFJVRSk7CisKKwlhZGFwdGVyLT5JbnRlcnJ1cHRzRW5hYmxlZCA9IDE7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYRW5JbnRyIiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKK30KKworLyoKKyAqCisgKiBzeGdfaXNyIC0gUHJvY2VzcyBhbiBsaW5lLWJhc2VkIGludGVycnVwdAorICoKKyAqIEFyZ3VtZW50czoKKyAqIAkJQ29udGV4dAkJCS0gT3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgkJUXVldWVEZWZhdWx0IAktIE91dHB1dCBwYXJhbWV0ZXIgdG8gcXVldWUgdG8gZGVmYXVsdCBDUFUKKyAqCQlUYXJnZXRDcHVzCQktIE91dHB1dCBiaXRtYXAgdG8gc2NoZWR1bGUgRFBDJ3MKKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiAJVFJVRSBpZiBvdXIgaW50ZXJydXB0CisgKi8KK3N0YXRpYyBpcnFyZXR1cm5fdCBzeGdfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlwX25ldF9kZXZpY2UgZGV2ID0gKHBfbmV0X2RldmljZSkgZGV2X2lkOworCXBfYWRhcHRlcl90IGFkYXB0ZXIgPSAocF9hZGFwdGVyX3QpIG5ldGRldl9wcml2KGRldik7CisvLyAgICAgIHUzMiAgICAgICAgICAgICAgICAgQ3B1TWFzayA9IDAsIGk7CisKKwlhZGFwdGVyLT5TdGF0cy5OdW1JbnRzKys7CisJaWYgKGFkYXB0ZXItPklzclswXSA9PSAwKSB7CisJCS8vIFRoZSBTTElDIGRyaXZlciB1c2VkIHRvIGV4cGVyaWVuY2UgYSBudW1iZXIgb2Ygc3B1cmlvdXMgaW50ZXJydXB0cworCQkvLyBkdWUgdG8gdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFza2luZyBvZiB0aGUgaW50ZXJydXB0CisJCS8vICh3ZSdkIGJvdW5jZSBiYWNrIGluIGhlcmUpLiAgSWYgd2Ugc2VlIHRoYXQgYWdhaW4gd2l0aCBTYWhhcmEsCisJCS8vIGFkZCBhIFJFQURfUkVHIG9mIHRoZSBJY3IgcmVnaXN0ZXIgYWZ0ZXIgdGhlIFdSSVRFX1JFRyBiZWxvdy4KKwkJYWRhcHRlci0+U3RhdHMuRmFsc2VJbnRzKys7CisJCXJldHVybiBJUlFfTk9ORTsKKwl9CisJLy8KKwkvLyBNb3ZlIHRoZSBJc3IgY29udGVudHMgYW5kIGNsZWFyIHRoZSB2YWx1ZSBpbgorCS8vIHNoYXJlZCBtZW1vcnksIGFuZCBtYXNrIGludGVycnVwdHMKKwkvLworCWFkYXB0ZXItPklzckNvcHlbMF0gPSBhZGFwdGVyLT5Jc3JbMF07CisJYWRhcHRlci0+SXNyWzBdID0gMDsKKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLkljciwgU1hHX0lDUigwLCBTWEdfSUNSX01BU0spLCBUUlVFKTsKKy8vICAgICAgQVNTRVJUKGFkYXB0ZXItPklzckRwY3NQZW5kaW5nID09IDApOworI2lmIFhYWFRPRE8JCQkvLyBSU1MgU3R1ZmYKKwkvLyBJZiBSU1MgaXMgZW5hYmxlZCBhbmQgdGhlIElTUiBzcGVjaWZpZXMKKwkvLyBTWEdfSVNSX0VWRU5ULCB0aGVuIHNjaGVkdWxlIERQQydzCisJLy8gYmFzZWQgb24gZXZlbnQgcXVldWVzLgorCWlmIChhZGFwdGVyLT5Sc3NFbmFibGVkICYmIChhZGFwdGVyLT5Jc3JDb3B5WzBdICYgU1hHX0lTUl9FVkVOVCkpIHsKKwkJZm9yIChpID0gMDsKKwkJICAgICBpIDwgYWRhcHRlci0+UnNzU3lzdGVtSW5mby0+UHJvY2Vzc29ySW5mby5Sc3NDcHVDb3VudDsKKwkJICAgICBpKyspIHsKKwkJCVBTWEdfRVZFTlRfUklORyBFdmVudFJpbmcgPSAmYWRhcHRlci0+RXZlbnRSaW5nc1tpXTsKKwkJCVBTWEdfRVZFTlQgRXZlbnQgPQorCQkJICAgICZFdmVudFJpbmctPlJpbmdbYWRhcHRlci0+TmV4dEV2ZW50W2ldXTsKKwkJCXVuc2lnbmVkIGNoYXIgQ3B1ID0KKwkJCSAgICBhZGFwdGVyLT5Sc3NTeXN0ZW1JbmZvLT5Sc3NJZFRvQ3B1W2ldOworCQkJaWYgKEV2ZW50LT5TdGF0dXMgJiBFVkVOVF9TVEFUVVNfVkFMSUQpIHsKKwkJCQlhZGFwdGVyLT5Jc3JEcGNzUGVuZGluZysrOworCQkJCUNwdU1hc2sgfD0gKDEgPDwgQ3B1KTsKKwkJCX0KKwkJfQorCX0KKwkvLyBOb3csIGVpdGhlciBzY2hlZHVsZSB0aGUgQ1BVcyBzcGVjaWZpZWQgYnkgdGhlIENwdU1hc2ssCisJLy8gb3IgcXVldWUgZGVmYXVsdAorCWlmIChDcHVNYXNrKSB7CisJCSpRdWV1ZURlZmF1bHQgPSBGQUxTRTsKKwl9IGVsc2UgeworCQlhZGFwdGVyLT5Jc3JEcGNzUGVuZGluZyA9IDE7CisJCSpRdWV1ZURlZmF1bHQgPSBUUlVFOworCX0KKwkqVGFyZ2V0Q3B1cyA9IENwdU1hc2s7CisjZW5kaWYKKwkvLworCS8vICBUaGVyZSBhcmUgbm8gRFBDcyBpbiBMaW51eCwgc28gY2FsbCB0aGUgaGFuZGxlciBub3cKKwkvLworCXN4Z19oYW5kbGVfaW50ZXJydXB0KGFkYXB0ZXIpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgdm9pZCBzeGdfaGFuZGxlX2ludGVycnVwdChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworLy8gICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgUnNzSWQgICA9IDA7CisJdTMyIE5ld0lzcjsKKworCWlmIChhZGFwdGVyLT5TdGF0cy5SY3ZOb0J1ZmZlciA8IDUpIHsKKwkJREJHX0VSUk9SKCJFbnRlciBzeGdfaGFuZGxlX2ludGVycnVwdCBJU1JbJXhdXG4iLAorCQkJICBhZGFwdGVyLT5Jc3JDb3B5WzBdKTsKKwl9CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiSG5kbEludHIiLAorCQkgIGFkYXB0ZXIsIGFkYXB0ZXItPklzckNvcHlbMF0sIDAsIDApOworCS8vIEZvciBub3csIFJTUyBpcyBkaXNhYmxlZCB3aXRoIGxpbmUgYmFzZWQgaW50ZXJydXB0cworCUFTU0VSVChhZGFwdGVyLT5Sc3NFbmFibGVkID09IEZBTFNFKTsKKwlBU1NFUlQoYWRhcHRlci0+TXNpRW5hYmxlZCA9PSBGQUxTRSk7CisJQVNTRVJUKGFkYXB0ZXItPklzckNvcHlbMF0pOworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCS8vIEFsd2F5cyBwcm9jZXNzIHRoZSBldmVudCBxdWV1ZS4KKwlzeGdfcHJvY2Vzc19ldmVudF9xdWV1ZShhZGFwdGVyLAorCQkJCShhZGFwdGVyLT5Sc3NFbmFibGVkID8gLypSc3NJZCAqLyAwIDogMCkpOworCisjaWYgWFhYVE9ETwkJCS8vIFJTUyBzdHVmZgorCWlmICgtLWFkYXB0ZXItPklzckRwY3NQZW5kaW5nKSB7CisJCS8vIFdlJ3JlIGRvbmUuCisJCUFTU0VSVChhZGFwdGVyLT5Sc3NFbmFibGVkKTsKKwkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiRFBDc1BlbmQiLAorCQkJICBhZGFwdGVyLCAwLCAwLCAwKTsKKwkJcmV0dXJuOworCX0KKyNlbmRpZgorCS8vCisJLy8gTGFzdCAob3Igb25seSkgRFBDIHByb2Nlc3NlcyB0aGUgSVNSIGFuZCBjbGVhcnMgdGhlIGludGVycnVwdC4KKwkvLworCU5ld0lzciA9IHN4Z19wcm9jZXNzX2lzcihhZGFwdGVyLCAwKTsKKwkvLworCS8vIFJlZW5hYmxlIGludGVycnVwdHMKKwkvLworCWFkYXB0ZXItPklzckNvcHlbMF0gPSAwOworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIkNsZWFySXNyIiwKKwkJICBhZGFwdGVyLCBOZXdJc3IsIDAsIDApOworCisJaWYgKGFkYXB0ZXItPlN0YXRzLlJjdk5vQnVmZmVyIDwgNSkgeworCQlEQkdfRVJST1IKKwkJICAgICgiRXhpdCBzeGdfaGFuZGxlX2ludGVycnVwdDIgYWZ0ZXIgZW5hYmxpbmcgaW50ZXJydXB0XG4iKTsKKwl9CisKKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLklzciwgTmV3SXNyLCBUUlVFKTsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhIbmRsSW50IiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKK30KKworLyoKKyAqCisgKiBzeGdfcHJvY2Vzc19pc3IgLSBQcm9jZXNzIGFuIGludGVycnVwdC4gIENhbGxlZCBmcm9tIHRoZSBsaW5lLWJhc2VkIGFuZAorICoJCQltZXNzYWdlIGJhc2VkIGludGVycnVwdCBEUEMgcm91dGluZXMKKyAqCisgKiBBcmd1bWVudHM6CisgKiAJCWFkYXB0ZXIJCQktIE91ciBhZGFwdGVyIHN0cnVjdHVyZQorICoJCVF1ZXVlCQkJLSBUaGUgSVNSIHRoYXQgbmVlZHMgcHJvY2Vzc2luZworICoKKyAqIFJldHVybiBWYWx1ZToKKyAqIAlOb25lCisgKi8KK3N0YXRpYyBpbnQgc3hnX3Byb2Nlc3NfaXNyKHBfYWRhcHRlcl90IGFkYXB0ZXIsIHUzMiBNZXNzYWdlSWQpCit7CisJdTMyIElzciA9IGFkYXB0ZXItPklzckNvcHlbTWVzc2FnZUlkXTsKKwl1MzIgTmV3SXNyID0gMDsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlByb2NJc3IiLAorCQkgIGFkYXB0ZXIsIElzciwgMCwgMCk7CisKKwkvLyBFcnJvcgorCWlmIChJc3IgJiBTWEdfSVNSX0VSUikgeworCQlpZiAoSXNyICYgU1hHX0lTUl9QRFFGKSB7CisJCQlhZGFwdGVyLT5TdGF0cy5QZHFGdWxsKys7CisJCQlEQkdfRVJST1IoIiVzOiBTWEdfSVNSX0VSUiAgUERRRiEhXG4iLCBfX0ZVTkNUSU9OX18pOworCQl9CisJCS8vIE5vIGhvc3QgYnVmZmVyCisJCWlmIChJc3IgJiBTWEdfSVNSX1JNSVNTKSB7CisJCQkvLyBUaGVyZSBpcyBhIGJ1bmNoIG9mIGNvZGUgaW4gdGhlIFNMSUMgZHJpdmVyIHdoaWNoCisJCQkvLyBhdHRlbXB0cyB0byBwcm9jZXNzIG1vcmUgcmVjZWl2ZSBldmVudHMgcGVyIERQQworCQkJLy8gaWYgd2Ugc3RhcnQgdG8gZmFsbCBiZWhpbmQuICBXZSdsbCBwcm9iYWJseQorCQkJLy8gbmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhciBoZXJlLCBidXQgaG9sZAorCQkJLy8gb2ZmIGZvciBub3cuICBJIGRvbid0IHdhbnQgdG8gbWFrZSB0aGUgY29kZSBtb3JlCisJCQkvLyBjb21wbGljYXRlZCB0aGFuIHN0cmljdGx5IG5lZWRlZC4KKwkJCWFkYXB0ZXItPlN0YXRzLlJjdk5vQnVmZmVyKys7CisJCQlpZiAoYWRhcHRlci0+U3RhdHMuUmN2Tm9CdWZmZXIgPCA1KSB7CisJCQkJREJHX0VSUk9SKCIlczogU1hHX0lTUl9FUlIgIFJNSVNTISFcbiIsCisJCQkJCSAgX19GVU5DVElPTl9fKTsKKwkJCX0KKwkJfQorCQkvLyBDYXJkIGNyYXNoCisJCWlmIChJc3IgJiBTWEdfSVNSX0RFQUQpIHsKKwkJCS8vIFNldCBhc2lkZSB0aGUgY3Jhc2ggaW5mbyBhbmQgc2V0IHRoZSBhZGFwdGVyIHN0YXRlIHRvIFJFU0VUCisJCQlhZGFwdGVyLT5DcmFzaENwdSA9CisJCQkgICAgKHVuc2lnbmVkIGNoYXIpKChJc3IgJiBTWEdfSVNSX0NQVSkgPj4KKwkJCQkJICAgIFNYR19JU1JfQ1BVX1NISUZUKTsKKwkJCWFkYXB0ZXItPkNyYXNoTG9jYXRpb24gPSAodXNob3J0KSAoSXNyICYgU1hHX0lTUl9DUkFTSCk7CisJCQlhZGFwdGVyLT5EZWFkID0gVFJVRTsKKwkJCURCR19FUlJPUigiJXM6IElTUl9ERUFEICV4LCBDUFU6ICVkXG4iLCBfX0ZVTkNUSU9OX18sCisJCQkJICBhZGFwdGVyLT5DcmFzaExvY2F0aW9uLCBhZGFwdGVyLT5DcmFzaENwdSk7CisJCX0KKwkJLy8gRXZlbnQgcmluZyBmdWxsCisJCWlmIChJc3IgJiBTWEdfSVNSX0VSRlVMTCkgeworCQkJLy8gU2FtZSBpc3N1ZSBhcyBSTUlTUywgcmVhbGx5LiAgVGhpcyBtZWFucyB0aGUKKwkJCS8vIGhvc3QgaXMgZmFsbGluZyBiZWhpbmQgdGhlIGNhcmQuICBOZWVkIHRvIGluY3JlYXNlCisJCQkvLyBldmVudCByaW5nIHNpemUsIHByb2Nlc3MgbW9yZSBldmVudHMgcGVyIGludGVycnVwdCwKKwkJCS8vIGFuZC9vciByZWR1Y2UvcmVtb3ZlIGludGVycnVwdCBhZ2dyZWdhdGlvbi4KKwkJCWFkYXB0ZXItPlN0YXRzLkV2ZW50UmluZ0Z1bGwrKzsKKwkJCURCR19FUlJPUigiJXM6IFNYR19JU1JfRVJSICBFVkVOVCBSSU5HIEZVTEwhIVxuIiwKKwkJCQkgIF9fRlVOQ1RJT05fXyk7CisJCX0KKwkJLy8gVHJhbnNtaXQgZHJvcCAtIG5vIERSQU0gYnVmZmVycyBvciBYTVQgZXJyb3IKKwkJaWYgKElzciAmIFNYR19JU1JfWERST1ApIHsKKwkJCWFkYXB0ZXItPlN0YXRzLlhtdERyb3BzKys7CisJCQlhZGFwdGVyLT5TdGF0cy5YbXRFcnJvcnMrKzsKKwkJCURCR19FUlJPUigiJXM6IFNYR19JU1JfRVJSICBYRFJPUCEhXG4iLCBfX0ZVTkNUSU9OX18pOworCQl9CisJfQorCS8vIFNsb3dwYXRoIHNlbmQgY29tcGxldGlvbnMKKwlpZiAoSXNyICYgU1hHX0lTUl9TUFNFTkQpIHsKKwkJc3hnX2NvbXBsZXRlX3Nsb3dfc2VuZChhZGFwdGVyKTsKKwl9CisJLy8gRHVtcAorCWlmIChJc3IgJiBTWEdfSVNSX1VQQykgeworCQlBU1NFUlQoYWRhcHRlci0+RHVtcENtZFJ1bm5pbmcpOwkvLyBNYXliZSBjaGFuZ2Ugd2hlbiBkZWJ1ZyBpcyBhZGRlZC4uCisJCWFkYXB0ZXItPkR1bXBDbWRSdW5uaW5nID0gRkFMU0U7CisJfQorCS8vIExpbmsgZXZlbnQKKwlpZiAoSXNyICYgU1hHX0lTUl9MSU5LKSB7CisJCXN4Z19saW5rX2V2ZW50KGFkYXB0ZXIpOworCX0KKwkvLyBEZWJ1ZyAtIGJyZWFrcG9pbnQgaGl0CisJaWYgKElzciAmIFNYR19JU1JfQlJFQUspIHsKKwkJLy8gQXQgdGhlIG1vbWVudCBBR0RCIGlzbid0IHdyaXR0ZW4gdG8gc3VwcG9ydCBpbnRlcmFjdGl2ZQorCQkvLyBkZWJ1ZyBzZXNzaW9ucy4gIFdoZW4gaXQgaXMsIHRoaXMgaW50ZXJydXB0IHdpbGwgYmUgdXNlZAorCQkvLyB0byBzaWduYWwgQUdEQiB0aGF0IGl0IGhhcyBoaXQgYSBicmVha3BvaW50LiAgRm9yIG5vdywgQVNTRVJULgorCQlBU1NFUlQoMCk7CisJfQorCS8vIEhlYXJ0YmVhdCByZXNwb25zZQorCWlmIChJc3IgJiBTWEdfSVNSX1BJTkcpIHsKKwkJYWRhcHRlci0+UGluZ091dHN0YW5kaW5nID0gRkFMU0U7CisJfQorCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhQcm9jSXNyIiwKKwkJICBhZGFwdGVyLCBJc3IsIE5ld0lzciwgMCk7CisKKwlyZXR1cm4gKE5ld0lzcik7Cit9CisKKy8qCisgKgorICogc3hnX3Byb2Nlc3NfZXZlbnRfcXVldWUgLSBQcm9jZXNzIG91ciBldmVudCBxdWV1ZQorICoKKyAqIEFyZ3VtZW50czoKKyAqIAkJLSBhZGFwdGVyCS0gQWRhcHRlciBzdHJ1Y3R1cmUKKyAqCQktIFJzc0lkCQktIFRoZSBldmVudCBxdWV1ZSByZXF1aXJpbmcgcHJvY2Vzc2luZworICoKKyAqIFJldHVybiBWYWx1ZToKKyAqIAlOb25lLgorICovCitzdGF0aWMgdTMyIHN4Z19wcm9jZXNzX2V2ZW50X3F1ZXVlKHBfYWRhcHRlcl90IGFkYXB0ZXIsIHUzMiBSc3NJZCkKK3sKKwlQU1hHX0VWRU5UX1JJTkcgRXZlbnRSaW5nID0gJmFkYXB0ZXItPkV2ZW50UmluZ3NbUnNzSWRdOworCVBTWEdfRVZFTlQgRXZlbnQgPSAmRXZlbnRSaW5nLT5SaW5nW2FkYXB0ZXItPk5leHRFdmVudFtSc3NJZF1dOworCXUzMiBFdmVudHNQcm9jZXNzZWQgPSAwLCBCYXRjaGVzID0gMDsKKwl1MzIgbnVtX3NrYnMgPSAwOworCXN0cnVjdCBza19idWZmICpza2I7CisjaWZkZWYgTElOVVhfSEFORExFU19SQ1ZfSU5ESUNBVElPTl9MSVNUUworCXN0cnVjdCBza19idWZmICpwcmV2X3NrYiA9IE5VTEw7CisJc3RydWN0IHNrX2J1ZmYgKkluZGljYXRpb25MaXN0W1NYR19SQ1ZfQVJSQVlTSVpFXTsKKwl1MzIgSW5kZXg7CisJUFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSIFJjdkRhdGFCdWZmZXJIZHI7CisjZW5kaWYKKwl1MzIgUmV0dXJuU3RhdHVzID0gMDsKKworCUFTU0VSVCgoYWRhcHRlci0+U3RhdGUgPT0gU1hHX1NUQVRFX1JVTk5JTkcpIHx8CisJICAgICAgIChhZGFwdGVyLT5TdGF0ZSA9PSBTWEdfU1RBVEVfUEFVU0lORykgfHwKKwkgICAgICAgKGFkYXB0ZXItPlN0YXRlID09IFNYR19TVEFURV9QQVVTRUQpIHx8CisJICAgICAgIChhZGFwdGVyLT5TdGF0ZSA9PSBTWEdfU1RBVEVfSEFMVElORykpOworCS8vIFdlIG1heSBzdGlsbCBoYXZlIHVucHJvY2Vzc2VkIGV2ZW50cyBvbiB0aGUgcXVldWUgaWYKKwkvLyB0aGUgY2FyZCBjcmFzaGVkLiAgRG9uJ3QgcHJvY2VzcyB0aGVtLgorCWlmIChhZGFwdGVyLT5EZWFkKSB7CisJCXJldHVybiAoMCk7CisJfQorCS8vIEluIHRoZW9yeSB0aGVyZSBzaG91bGQgb25seSBiZSBhIHNpbmdsZSBwcm9jZXNzb3IgdGhhdAorCS8vIGFjY2Vzc2VzIHRoaXMgcXVldWUsIGFuZCBvbmx5IGF0IGludGVycnVwdC1EUEMgdGltZS4gIFNvCisJLy8gd2Ugc2hvdWxkbid0IG5lZWQgYSBsb2NrIGZvciBhbnkgb2YgdGhpcy4KKwl3aGlsZSAoRXZlbnQtPlN0YXR1cyAmIEVWRU5UX1NUQVRVU19WQUxJRCkgeworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJFdmVudCIsCisJCQkgIEV2ZW50LCBFdmVudC0+Q29kZSwgRXZlbnQtPlN0YXR1cywKKwkJCSAgYWRhcHRlci0+TmV4dEV2ZW50KTsKKwkJc3dpdGNoIChFdmVudC0+Q29kZSkgeworCQljYXNlIEVWRU5UX0NPREVfQlVGRkVSUzoKKwkJCUFTU0VSVCghKEV2ZW50LT5Db21tYW5kSW5kZXggJiAweEZGMDApKTsJLy8gU1hHX1JJTkdfSU5GTyBIZWFkICYgVGFpbCA9PSB1bnNpZ25lZCBjaGFyCisJCQkvLworCQkJc3hnX2NvbXBsZXRlX2Rlc2NyaXB0b3JfYmxvY2tzKGFkYXB0ZXIsCisJCQkJCQkgICAgICAgRXZlbnQtPkNvbW1hbmRJbmRleCk7CisJCQkvLworCQkJYnJlYWs7CisJCWNhc2UgRVZFTlRfQ09ERV9TTE9XUkNWOgorCQkJLS1hZGFwdGVyLT5SY3ZCdWZmZXJzT25DYXJkOworCQkJaWYgKChza2IgPSBzeGdfc2xvd19yZWNlaXZlKGFkYXB0ZXIsIEV2ZW50KSkpIHsKKwkJCQl1MzIgcnhfYnl0ZXM7CisjaWZkZWYgTElOVVhfSEFORExFU19SQ1ZfSU5ESUNBVElPTl9MSVNUUworCQkJCS8vIEFkZCBpdCB0byBvdXIgaW5kaWNhdGlvbiBsaXN0CisJCQkJU1hHX0FERF9SQ1ZfUEFDS0VUKGFkYXB0ZXIsIHNrYiwgcHJldl9za2IsCisJCQkJCQkgICBJbmRpY2F0aW9uTGlzdCwgbnVtX3NrYnMpOworCQkJCS8vICBJbiBMaW51eCwgd2UganVzdCBwYXNzIHVwIGVhY2ggc2tiIHRvIHRoZSBwcm90b2NvbCBhYm92ZSBhdCB0aGlzIHBvaW50LAorCQkJCS8vICB0aGVyZSBpcyBubyBjYXBhYmlsaXR5IG9mIGFuIGluZGljYXRpb24gbGlzdC4KKyNlbHNlCisvLyBDSEVDSyAgICAgICAgICAgIHNrYl9wdWxsKHNrYiwgSU5JQ19SQ1ZCVUZfSEVBRFNJWkUpOworCQkJCXJ4X2J5dGVzID0gRXZlbnQtPkxlbmd0aDsJLy8gKHJjdmJ1Zi0+bGVuZ3RoICYgSVJIRERSX0ZMRU5fTVNLKTsKKwkJCQlza2JfcHV0KHNrYiwgcnhfYnl0ZXMpOworCQkJCWFkYXB0ZXItPnN0YXRzLnJ4X3BhY2tldHMrKzsKKwkJCQlhZGFwdGVyLT5zdGF0cy5yeF9ieXRlcyArPSByeF9ieXRlczsKKyNpZiBTWEdfT0ZGTE9BRF9JUF9DSEVDS1NVTQorCQkJCXNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7CisjZW5kaWYKKwkJCQlza2ItPmRldiA9IGFkYXB0ZXItPm5ldGRldjsKKwkJCQlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBza2ItPmRldik7CisJCQkJbmV0aWZfcngoc2tiKTsKKyNlbmRpZgorCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEQkdfRVJST1IoIiVzOiBFUlJPUiAgSW52YWxpZCBFdmVudENvZGUgJWRcbiIsCisJCQkJICBfX0ZVTkNUSU9OX18sIEV2ZW50LT5Db2RlKTsKKy8vICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgwKTsKKwkJfQorCQkvLyBTZWUgaWYgd2UgbmVlZCB0byByZXN0b2NrIGNhcmQgcmVjZWl2ZSBidWZmZXJzLgorCQkvLyBUaGVyZSBhcmUgdHdvIHRoaW5ncyB0byBub3RlIGhlcmU6CisJCS8vICAgICAgRmlyc3QgLSBUaGlzIHRlc3QgaXMgbm90IFNNUCBzYWZlLiAgVGhlCisJCS8vICAgICAgICAgICAgICBhZGFwdGVyLT5CdWZmZXJzT25DYXJkIGZpZWxkIGlzIHByb3RlY3RlZCB2aWEgYXRvbWljIGludGVybG9ja2VkIGNhbGxzLCBidXQKKwkJLy8gICAgICAgICAgICAgIHdlIGRvIG5vdCBwcm90ZWN0IGl0IHdpdGggcmVzcGVjdCB0byB0aGVzZSB0ZXN0cy4gIFRoZSBvbmx5IHdheSB0byBkbyB0aGF0CisJCS8vICAgICAgaXMgd2l0aCBhIGxvY2ssIGFuZCBJIGRvbid0IHdhbnQgdG8gZ3JhYiBhIGxvY2sgZXZlcnkgdGltZSB3ZSBhZGp1c3QgdGhlCisJCS8vICAgICAgQnVmZmVyc09uQ2FyZCBjb3VudC4gIEluc3RlYWQsIHdlIGFsbG93IHRoZSBidWZmZXIgcmVwbGVuaXNobWVudCB0byBiZSBvZmYKKwkJLy8gICAgICBvbmNlIGluIGEgd2hpbGUuICBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoZSBjYXJkIGlzIGdpdmVuIG9uZQorCQkvLyAgICAgIG1vcmUtb3ItbGVzcyBkZXNjcmlwdG9yIGJsb2NrIHRoYW4gdGhlIGFyYml0cmFyeSB2YWx1ZSB3ZSd2ZSBjaG9zZW4uCisJCS8vICAgICAgTm8gYmlnIGRlYWwKKwkJLy8gICAgICBJbiBzaG9ydCBETyBOT1QgQUREIEEgTE9DSyBIRVJFLCBPUiBXSEVSRSBSY3ZCdWZmZXJzT25DYXJkIGlzIGFkanVzdGVkLgorCQkvLyAgICAgIFNlY29uZCAtIFdlIGV4cGVjdCB0aGlzIHRlc3QgdG8gcmFyZWx5IGV2YWx1YXRlIHRvIHRydWUuICBXZSBhdHRlbXB0IHRvCisJCS8vICAgICAgcmVmaWxsIGRlc2NyaXB0b3IgYmxvY2tzIGFzIHRoZXkgYXJlIHJldHVybmVkIHRvIHVzCisJCS8vICAgICAgKHN4Z19jb21wbGV0ZV9kZXNjcmlwdG9yX2Jsb2NrcyksIHNvIFRoZSBvbmx5IHRpbWUgdGhpcyBzaG91bGQgZXZhbHVhdGUKKwkJLy8gICAgICB0byB0cnVlIGlzIHdoZW4gc3hnX2NvbXBsZXRlX2Rlc2NyaXB0b3JfYmxvY2tzIGZhaWxlZCB0byBhbGxvY2F0ZQorCQkvLyAgICAgICAgICAgICAgcmVjZWl2ZSBidWZmZXJzLgorCQlpZiAoYWRhcHRlci0+UmN2QnVmZmVyc09uQ2FyZCA8IFNYR19SQ1ZfREFUQV9CVUZGRVJTKSB7CisJCQlzeGdfc3RvY2tfcmN2X2J1ZmZlcnMoYWRhcHRlcik7CisJCX0KKwkJLy8gSXQncyBtb3JlIGVmZmljaWVudCB0byBqdXN0IHNldCB0aGlzIHRvIHplcm8uCisJCS8vIEJ1dCBjbGVhcmluZyB0aGUgdG9wIGJpdCBzYXZlcyBwb3RlbnRpYWwgZGVidWcgaW5mby4uLgorCQlFdmVudC0+U3RhdHVzICY9IH5FVkVOVF9TVEFUVVNfVkFMSUQ7CisJCS8vIEFkdmFuY3QgdG8gdGhlIG5leHQgZXZlbnQKKwkJU1hHX0FEVkFOQ0VfSU5ERVgoYWRhcHRlci0+TmV4dEV2ZW50W1Jzc0lkXSwgRVZFTlRfUklOR19TSVpFKTsKKwkJRXZlbnQgPSAmRXZlbnRSaW5nLT5SaW5nW2FkYXB0ZXItPk5leHRFdmVudFtSc3NJZF1dOworCQlFdmVudHNQcm9jZXNzZWQrKzsKKwkJaWYgKEV2ZW50c1Byb2Nlc3NlZCA9PSBFVkVOVF9SSU5HX0JBVENIKSB7CisJCQkvLyBSZWxlYXNlIGEgYmF0Y2ggb2YgZXZlbnRzIGJhY2sgdG8gdGhlIGNhcmQKKwkJCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbUnNzSWRdLkV2ZW50UmVsZWFzZSwKKwkJCQkgIEVWRU5UX1JJTkdfQkFUQ0gsIEZBTFNFKTsKKwkJCUV2ZW50c1Byb2Nlc3NlZCA9IDA7CisJCQkvLyBJZiB3ZSd2ZSBwcm9jZXNzZWQgb3VyIGJhdGNoIGxpbWl0LCBicmVhayBvdXQgb2YgdGhlCisJCQkvLyBsb29wIGFuZCByZXR1cm4gU1hHX0lTUl9FVkVOVCB0byBhcnJhbmdlIGZvciB1cyB0bworCQkJLy8gYmUgY2FsbGVkIGFnYWluCisJCQlpZiAoQmF0Y2hlcysrID09IEVWRU5UX0JBVENIX0xJTUlUKSB7CisJCQkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsCisJCQkJCSAgVFJBQ0VfTk9JU1ksICJFdnRMaW1pdCIsIEJhdGNoZXMsCisJCQkJCSAgYWRhcHRlci0+TmV4dEV2ZW50LCAwLCAwKTsKKwkJCQlSZXR1cm5TdGF0dXMgPSBTWEdfSVNSX0VWRU5UOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorI2lmZGVmIExJTlVYX0hBTkRMRVNfUkNWX0lORElDQVRJT05fTElTVFMKKwkvLworCS8vIEluZGljYXRlIGFueSByZWNlaXZlZCBkdW1iLW5pYyBmcmFtZXMKKwkvLworCVNYR19JTkRJQ0FURV9QQUNLRVRTKGFkYXB0ZXIsIEluZGljYXRpb25MaXN0LCBudW1fc2ticyk7CisjZW5kaWYKKwkvLworCS8vIFJlbGVhc2UgZXZlbnRzIGJhY2sgdG8gdGhlIGNhcmQuCisJLy8KKwlpZiAoRXZlbnRzUHJvY2Vzc2VkKSB7CisJCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbUnNzSWRdLkV2ZW50UmVsZWFzZSwKKwkJCSAgRXZlbnRzUHJvY2Vzc2VkLCBGQUxTRSk7CisJfQorCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhQcmNFdm50IiwKKwkJICBCYXRjaGVzLCBFdmVudHNQcm9jZXNzZWQsIGFkYXB0ZXItPk5leHRFdmVudCwgbnVtX3NrYnMpOworCisJcmV0dXJuIChSZXR1cm5TdGF0dXMpOworfQorCisvKgorICogc3hnX2NvbXBsZXRlX3Nsb3dfc2VuZCAtIENvbXBsZXRlIHNsb3dwYXRoIG9yIGR1bWItbmljIHNlbmRzCisgKgorICogQXJndW1lbnRzIC0KKyAqCWFkYXB0ZXIJCS0gQSBwb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorCisgKiBSZXR1cm4KKyAqCU5vbmUKKyAqLworc3RhdGljIHZvaWQgc3hnX2NvbXBsZXRlX3Nsb3dfc2VuZChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCVBTWEdfWE1UX1JJTkcgWG10UmluZyA9ICZhZGFwdGVyLT5YbXRSaW5nc1swXTsKKwlQU1hHX1JJTkdfSU5GTyBYbXRSaW5nSW5mbyA9ICZhZGFwdGVyLT5YbXRSaW5nWmVyb0luZm87CisJdTMyICpDb250ZXh0VHlwZTsKKwlQU1hHX0NNRCBYbXRDbWQ7CisKKwkvLyBOT1RFIC0gVGhpcyBsb2NrIGlzIGRyb3BwZWQgYW5kIHJlZ3JhYmJlZCBpbiB0aGlzIGxvb3AuCisJLy8gVGhpcyBtZWFucyB0d28gZGlmZmVyZW50IHByb2Nlc3NvcnMgY2FuIGJvdGggYmUgcnVubmluZworCS8vIHRocm91Z2ggdGhpcyBsb29wLiBCZSAqdmVyeSogY2FyZWZ1bC4KKwlzcGluX2xvY2soJmFkYXB0ZXItPlhtdFplcm9Mb2NrKTsKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJDbXBTbmRzIiwKKwkJICBhZGFwdGVyLCBYbXRSaW5nSW5mby0+SGVhZCwgWG10UmluZ0luZm8tPlRhaWwsIDApOworCisJd2hpbGUgKFhtdFJpbmdJbmZvLT5UYWlsICE9ICphZGFwdGVyLT5YbXRSaW5nWmVyb0luZGV4KSB7CisJCS8vIExvY2F0ZSB0aGUgY3VycmVudCBDbWQgKHJpbmcgZGVzY3JpcHRvciBlbnRyeSksIGFuZAorCQkvLyBhc3NvY2lhdGVkIFNHTCwgYW5kIGFkdmFuY2UgdGhlIHRhaWwKKwkJU1hHX1JFVFVSTl9DTUQoWG10UmluZywgWG10UmluZ0luZm8sIFhtdENtZCwgQ29udGV4dFR5cGUpOworCQlBU1NFUlQoQ29udGV4dFR5cGUpOworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJDbXBTbmQiLAorCQkJICBYbXRSaW5nSW5mby0+SGVhZCwgWG10UmluZ0luZm8tPlRhaWwsIFhtdENtZCwgMCk7CisJCS8vIENsZWFyIHRoZSBTR0wgZmllbGQuCisJCVhtdENtZC0+U2dsID0gMDsKKworCQlzd2l0Y2ggKCpDb250ZXh0VHlwZSkgeworCQljYXNlIFNYR19TR0xfRFVNQjoKKwkJCXsKKwkJCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCQkJCS8vIER1bWItbmljIHNlbmQuICBDb21tYW5kIGNvbnRleHQgaXMgdGhlIGR1bWItbmljIFNHTAorCQkJCXNrYiA9IChzdHJ1Y3Qgc2tfYnVmZiAqKUNvbnRleHRUeXBlOworCQkJCS8vIENvbXBsZXRlIHRoZSBzZW5kCisJCQkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsCisJCQkJCSAgVFJBQ0VfSU1QT1JUQU5ULCAiRG1TbmRDbXAiLCBza2IsIDAsCisJCQkJCSAgMCwgMCk7CisJCQkJQVNTRVJUKGFkYXB0ZXItPlN0YXRzLlhtdFFMZW4pOworCQkJCWFkYXB0ZXItPlN0YXRzLlhtdFFMZW4tLTsJLy8gd2l0aGluIFhtdFplcm9Mb2NrCisJCQkJYWRhcHRlci0+U3RhdHMuWG10T2srKzsKKwkJCQkvLyBOb3cgZHJvcCB0aGUgbG9jayBhbmQgY29tcGxldGUgdGhlIHNlbmQgYmFjayB0bworCQkJCS8vIE1pY3Jvc29mdC4gIFdlIG5lZWQgdG8gZHJvcCB0aGUgbG9jayBiZWNhdXNlCisJCQkJLy8gTWljcm9zb2Z0IGNhbiBjb21lIGJhY2sgd2l0aCBhIGNoaW1uZXkgc2VuZCwgd2hpY2gKKwkJCQkvLyByZXN1bHRzIGluIGEgZG91YmxlIHRyaXAgaW4gU3hnVGNwT3VwdXQKKwkJCQlzcGluX3VubG9jaygmYWRhcHRlci0+WG10WmVyb0xvY2spOworCQkJCVNYR19DT01QTEVURV9EVU1CX1NFTkQoYWRhcHRlciwgc2tiKTsKKwkJCQkvLyBhbmQgcmVhY3F1aXJlLi4KKwkJCQlzcGluX2xvY2soJmFkYXB0ZXItPlhtdFplcm9Mb2NrKTsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJQVNTRVJUKDApOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5YbXRaZXJvTG9jayk7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiQ21wU25kIiwKKwkJICBhZGFwdGVyLCBYbXRSaW5nSW5mby0+SGVhZCwgWG10UmluZ0luZm8tPlRhaWwsIDApOworfQorCisvKgorICogc3hnX3Nsb3dfcmVjZWl2ZQorICoKKyAqIEFyZ3VtZW50cyAtCisgKglhZGFwdGVyCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCUV2ZW50CQktIFJlY2VpdmUgZXZlbnQKKyAqCisgKiBSZXR1cm4KKyAqCSBza2IKKyAqLworc3RhdGljIHN0cnVjdCBza19idWZmICpzeGdfc2xvd19yZWNlaXZlKHBfYWRhcHRlcl90IGFkYXB0ZXIsIFBTWEdfRVZFTlQgRXZlbnQpCit7CisJUFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSIFJjdkRhdGFCdWZmZXJIZHI7CisJc3RydWN0IHNrX2J1ZmYgKlBhY2tldDsKKworCVJjdkRhdGFCdWZmZXJIZHIgPSAoUFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSKSBFdmVudC0+SG9zdEhhbmRsZTsKKwlBU1NFUlQoUmN2RGF0YUJ1ZmZlckhkcik7CisJQVNTRVJUKFJjdkRhdGFCdWZmZXJIZHItPlN0YXRlID09IFNYR19CVUZGRVJfT05DQVJEKTsKKwlBU1NFUlQoU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihSY3ZEYXRhQnVmZmVySGRyKSA9PQorCSAgICAgICBSY3ZEYXRhQnVmZmVySGRyLT5WaXJ0dWFsQWRkcmVzcyk7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX0lNUE9SVEFOVCwgIlNsb3dSY3YiLCBFdmVudCwKKwkJICBSY3ZEYXRhQnVmZmVySGRyLCBSY3ZEYXRhQnVmZmVySGRyLT5TdGF0ZSwKKwkJICBSY3ZEYXRhQnVmZmVySGRyLT5WaXJ0dWFsQWRkcmVzcyk7CisJLy8gRHJvcCByY3YgZnJhbWVzIGluIG5vbi1ydW5uaW5nIHN0YXRlCisJc3dpdGNoIChhZGFwdGVyLT5TdGF0ZSkgeworCWNhc2UgU1hHX1NUQVRFX1JVTk5JTkc6CisJCWJyZWFrOworCWNhc2UgU1hHX1NUQVRFX1BBVVNJTkc6CisJY2FzZSBTWEdfU1RBVEVfUEFVU0VEOgorCWNhc2UgU1hHX1NUQVRFX0hBTFRJTkc6CisJCWdvdG8gZHJvcDsKKwlkZWZhdWx0OgorCQlBU1NFUlQoMCk7CisJCWdvdG8gZHJvcDsKKwl9CisKKwkvLyBDaGFuZ2UgYnVmZmVyIHN0YXRlIHRvIFVQU1RSRUFNCisJUmN2RGF0YUJ1ZmZlckhkci0+U3RhdGUgPSBTWEdfQlVGRkVSX1VQU1RSRUFNOworCWlmIChFdmVudC0+U3RhdHVzICYgRVZFTlRfU1RBVFVTX1JDVkVSUikgeworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJSY3ZFcnJvciIsCisJCQkgIEV2ZW50LCBFdmVudC0+U3RhdHVzLCBFdmVudC0+SG9zdEhhbmRsZSwgMCk7CisJCS8vIFhYWFRPRE8gLSBSZW1vdmUgdGhpcyBwcmludCBsYXRlcgorCQlEQkdfRVJST1IoIlNYRzogUmVjZWl2ZSBlcnJvciAleFxuIiwgKih1MzIgKikKKwkJCSAgU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihSY3ZEYXRhQnVmZmVySGRyKSk7CisJCXN4Z19wcm9jZXNzX3Jjdl9lcnJvcihhZGFwdGVyLCAqKHUzMiAqKQorCQkJCSAgICAgIFNYR19SRUNFSVZFX0RBVEFfTE9DQVRJT04KKwkJCQkgICAgICAoUmN2RGF0YUJ1ZmZlckhkcikpOworCQlnb3RvIGRyb3A7CisJfQorI2lmIFhYWFRPRE8JCQkvLyBWTEFOIHN0dWZmCisJLy8gSWYgdGhlcmUncyBhIFZMQU4gdGFnLCBleHRyYWN0IGl0IGFuZCB2YWxpZGF0ZSBpdAorCWlmICgoKHBfZXRoZXJfaGVhZGVyKSAoU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihSY3ZEYXRhQnVmZmVySGRyKSkpLT4KKwkgICAgRXRoZXJUeXBlID09IEVUSEVSVFlQRV9WTEFOKSB7CisJCWlmIChTeGdFeHRyYWN0VmxhbkhlYWRlcihhZGFwdGVyLCBSY3ZEYXRhQnVmZmVySGRyLCBFdmVudCkgIT0KKwkJICAgIFNUQVRVU19TVUNDRVNTKSB7CisJCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksCisJCQkJICAiQmFkVmxhbiIsIEV2ZW50LAorCQkJCSAgU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihSY3ZEYXRhQnVmZmVySGRyKSwKKwkJCQkgIEV2ZW50LT5MZW5ndGgsIDApOworCQkJZ290byBkcm9wOworCQl9CisJfQorI2VuZGlmCisJLy8KKwkvLyBEdW1iLW5pYyBmcmFtZS4gIFNlZSBpZiBpdCBwYXNzZXMgb3VyIG1hYyBmaWx0ZXIgYW5kIHVwZGF0ZSBzdGF0cworCS8vCisJaWYgKCFzeGdfbWFjX2ZpbHRlcihhZGFwdGVyLCAocF9ldGhlcl9oZWFkZXIpCisJCQkgICAgU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihSY3ZEYXRhQnVmZmVySGRyKSwKKwkJCSAgICBFdmVudC0+TGVuZ3RoKSkgeworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJSY3ZGaWx0ciIsCisJCQkgIEV2ZW50LCBTWEdfUkVDRUlWRV9EQVRBX0xPQ0FUSU9OKFJjdkRhdGFCdWZmZXJIZHIpLAorCQkJICBFdmVudC0+TGVuZ3RoLCAwKTsKKwkJZ290byBkcm9wOworCX0KKworCVBhY2tldCA9IFJjdkRhdGFCdWZmZXJIZHItPlN4Z0R1bWJSY3ZQYWNrZXQ7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfSU1QT1JUQU5ULCAiRHVtYlJjdiIsCisJCSAgUmN2RGF0YUJ1ZmZlckhkciwgUGFja2V0LCBFdmVudC0+TGVuZ3RoLCAwKTsKKwkvLworCS8vIExhc3RseSBhZGp1c3QgdGhlIHJlY2VpdmUgcGFja2V0IGxlbmd0aC4KKwkvLworCVNYR19BREpVU1RfUkNWX1BBQ0tFVChQYWNrZXQsIFJjdkRhdGFCdWZmZXJIZHIsIEV2ZW50KTsKKworCXJldHVybiAoUGFja2V0KTsKKworICAgICAgZHJvcDoKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJEcm9wUmN2IiwKKwkJICBSY3ZEYXRhQnVmZmVySGRyLCBFdmVudC0+TGVuZ3RoLCAwLCAwKTsKKwlhZGFwdGVyLT5TdGF0cy5SY3ZEaXNjYXJkcysrOworCXNwaW5fbG9jaygmYWRhcHRlci0+UmN2UUxvY2spOworCVNYR19GUkVFX1JDVl9EQVRBX0JVRkZFUihhZGFwdGVyLCBSY3ZEYXRhQnVmZmVySGRyKTsKKwlzcGluX3VubG9jaygmYWRhcHRlci0+UmN2UUxvY2spOworCXJldHVybiAoTlVMTCk7Cit9CisKKy8qCisgKiBzeGdfcHJvY2Vzc19yY3ZfZXJyb3IgLSBwcm9jZXNzIHJlY2VpdmUgZXJyb3IgYW5kIHVwZGF0ZQorICogc3RhdHMKKyAqCisgKiBBcmd1bWVudHM6CisgKgkJYWRhcHRlcgkJLSBBZGFwdGVyIHN0cnVjdHVyZQorICoJCUVycm9yU3RhdHVzCS0gNC1ieXRlIHJlY2VpdmUgZXJyb3Igc3RhdHVzCisgKgorICogUmV0dXJuIFZhbHVlOgorICogCU5vbmUKKyAqLworc3RhdGljIHZvaWQgc3hnX3Byb2Nlc3NfcmN2X2Vycm9yKHBfYWRhcHRlcl90IGFkYXB0ZXIsIHUzMiBFcnJvclN0YXR1cykKK3sKKwl1MzIgRXJyb3I7CisKKwlhZGFwdGVyLT5TdGF0cy5SY3ZFcnJvcnMrKzsKKworCWlmIChFcnJvclN0YXR1cyAmIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9FUlJPUikgeworCQlFcnJvciA9IEVycm9yU3RhdHVzICYgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX01BU0s7CisJCXN3aXRjaCAoRXJyb3IpIHsKKwkJY2FzZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfQ1NVTToKKwkJCWFkYXB0ZXItPlN0YXRzLlRyYW5zcG9ydENzdW0rKzsKKwkJCWJyZWFrOworCQljYXNlIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9VRkxPVzoKKwkJCWFkYXB0ZXItPlN0YXRzLlRyYW5zcG9ydFVmbG93Kys7CisJCQlicmVhazsKKwkJY2FzZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfSERSTEVOOgorCQkJYWRhcHRlci0+U3RhdHMuVHJhbnNwb3J0SGRyTGVuKys7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoRXJyb3JTdGF0dXMgJiBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0VSUk9SKSB7CisJCUVycm9yID0gRXJyb3JTdGF0dXMgJiBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX01BU0s7CisJCXN3aXRjaCAoRXJyb3IpIHsKKwkJY2FzZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0NTVU06CisJCQlhZGFwdGVyLT5TdGF0cy5OZXR3b3JrQ3N1bSsrOworCQkJYnJlYWs7CisJCWNhc2UgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19VRkxPVzoKKwkJCWFkYXB0ZXItPlN0YXRzLk5ldHdvcmtVZmxvdysrOworCQkJYnJlYWs7CisJCWNhc2UgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19IRFJMRU46CisJCQlhZGFwdGVyLT5TdGF0cy5OZXR3b3JrSGRyTGVuKys7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoRXJyb3JTdGF0dXMgJiBTWEdfUkNWX1NUQVRVU19QQVJJVFkpIHsKKwkJYWRhcHRlci0+U3RhdHMuUGFyaXR5Kys7CisJfQorCWlmIChFcnJvclN0YXR1cyAmIFNYR19SQ1ZfU1RBVFVTX0xJTktfRVJST1IpIHsKKwkJRXJyb3IgPSBFcnJvclN0YXR1cyAmIFNYR19SQ1ZfU1RBVFVTX0xJTktfTUFTSzsKKwkJc3dpdGNoIChFcnJvcikgeworCQljYXNlIFNYR19SQ1ZfU1RBVFVTX0xJTktfUEFSSVRZOgorCQkJYWRhcHRlci0+U3RhdHMuTGlua1Bhcml0eSsrOworCQkJYnJlYWs7CisJCWNhc2UgU1hHX1JDVl9TVEFUVVNfTElOS19FQVJMWToKKwkJCWFkYXB0ZXItPlN0YXRzLkxpbmtFYXJseSsrOworCQkJYnJlYWs7CisJCWNhc2UgU1hHX1JDVl9TVEFUVVNfTElOS19CVUZPRkxPVzoKKwkJCWFkYXB0ZXItPlN0YXRzLkxpbmtCdWZPZmxvdysrOworCQkJYnJlYWs7CisJCWNhc2UgU1hHX1JDVl9TVEFUVVNfTElOS19DT0RFOgorCQkJYWRhcHRlci0+U3RhdHMuTGlua0NvZGUrKzsKKwkJCWJyZWFrOworCQljYXNlIFNYR19SQ1ZfU1RBVFVTX0xJTktfRFJJQkJMRToKKwkJCWFkYXB0ZXItPlN0YXRzLkxpbmtEcmliYmxlKys7CisJCQlicmVhazsKKwkJY2FzZSBTWEdfUkNWX1NUQVRVU19MSU5LX0NSQzoKKwkJCWFkYXB0ZXItPlN0YXRzLkxpbmtDcmMrKzsKKwkJCWJyZWFrOworCQljYXNlIFNYR19SQ1ZfU1RBVFVTX0xJTktfT0ZMT1c6CisJCQlhZGFwdGVyLT5TdGF0cy5MaW5rT2Zsb3crKzsKKwkJCWJyZWFrOworCQljYXNlIFNYR19SQ1ZfU1RBVFVTX0xJTktfVUZMT1c6CisJCQlhZGFwdGVyLT5TdGF0cy5MaW5rVWZsb3crKzsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCisvKgorICogc3hnX21hY19maWx0ZXIKKyAqCisgKiBBcmd1bWVudHM6CisgKgkJYWRhcHRlcgkJLSBBZGFwdGVyIHN0cnVjdHVyZQorICoJCXBldGhlcgkJLSBFdGhlcm5ldCBoZWFkZXIKKyAqCQlsZW5ndGgJCS0gRnJhbWUgbGVuZ3RoCisgKgorICogUmV0dXJuIFZhbHVlOgorICogCVRSVUUgaWYgdGhlIGZyYW1lIGlzIHRvIGJlIGFsbG93ZWQKKyAqLworc3RhdGljIGJvb2wgc3hnX21hY19maWx0ZXIocF9hZGFwdGVyX3QgYWRhcHRlciwgcF9ldGhlcl9oZWFkZXIgRXRoZXJIZHIsCisJCQkgICB1c2hvcnQgbGVuZ3RoKQoreworCWJvb2wgRXF1YWxBZGRyOworCisJaWYgKFNYR19NVUxUSUNBU1RfUEFDS0VUKEV0aGVySGRyKSkgeworCQlpZiAoU1hHX0JST0FEQ0FTVF9QQUNLRVQoRXRoZXJIZHIpKSB7CisJCQkvLyBicm9hZGNhc3QKKwkJCWlmIChhZGFwdGVyLT5NYWNGaWx0ZXIgJiBNQUNfQkNBU1QpIHsKKwkJCQlhZGFwdGVyLT5TdGF0cy5EdW1iUmN2QmNhc3RQa3RzKys7CisJCQkJYWRhcHRlci0+U3RhdHMuRHVtYlJjdkJjYXN0Qnl0ZXMgKz0gbGVuZ3RoOworCQkJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZQa3RzKys7CisJCQkJYWRhcHRlci0+U3RhdHMuRHVtYlJjdkJ5dGVzICs9IGxlbmd0aDsKKwkJCQlyZXR1cm4gKFRSVUUpOworCQkJfQorCQl9IGVsc2UgeworCQkJLy8gbXVsdGljYXN0CisJCQlpZiAoYWRhcHRlci0+TWFjRmlsdGVyICYgTUFDX0FMTE1DQVNUKSB7CisJCQkJYWRhcHRlci0+U3RhdHMuRHVtYlJjdk1jYXN0UGt0cysrOworCQkJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZNY2FzdEJ5dGVzICs9IGxlbmd0aDsKKwkJCQlhZGFwdGVyLT5TdGF0cy5EdW1iUmN2UGt0cysrOworCQkJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZCeXRlcyArPSBsZW5ndGg7CisJCQkJcmV0dXJuIChUUlVFKTsKKwkJCX0KKwkJCWlmIChhZGFwdGVyLT5NYWNGaWx0ZXIgJiBNQUNfTUNBU1QpIHsKKwkJCQlQU1hHX01VTFRJQ0FTVF9BRERSRVNTIE11bHRpY2FzdEFkZHJzID0KKwkJCQkgICAgYWRhcHRlci0+TXVsdGljYXN0QWRkcnM7CisJCQkJd2hpbGUgKE11bHRpY2FzdEFkZHJzKSB7CisJCQkJCUVUSEVSX0VRX0FERFIoTXVsdGljYXN0QWRkcnMtPkFkZHJlc3MsCisJCQkJCQkgICAgICBFdGhlckhkci0+ZXRoZXJfZGhvc3QsCisJCQkJCQkgICAgICBFcXVhbEFkZHIpOworCQkJCQlpZiAoRXF1YWxBZGRyKSB7CisJCQkJCQlhZGFwdGVyLT5TdGF0cy4KKwkJCQkJCSAgICBEdW1iUmN2TWNhc3RQa3RzKys7CisJCQkJCQlhZGFwdGVyLT5TdGF0cy4KKwkJCQkJCSAgICBEdW1iUmN2TWNhc3RCeXRlcyArPSBsZW5ndGg7CisJCQkJCQlhZGFwdGVyLT5TdGF0cy5EdW1iUmN2UGt0cysrOworCQkJCQkJYWRhcHRlci0+U3RhdHMuRHVtYlJjdkJ5dGVzICs9CisJCQkJCQkgICAgbGVuZ3RoOworCQkJCQkJcmV0dXJuIChUUlVFKTsKKwkJCQkJfQorCQkJCQlNdWx0aWNhc3RBZGRycyA9IE11bHRpY2FzdEFkZHJzLT5OZXh0OworCQkJCX0KKwkJCX0KKwkJfQorCX0gZWxzZSBpZiAoYWRhcHRlci0+TWFjRmlsdGVyICYgTUFDX0RJUkVDVEVEKSB7CisJCS8vIE5vdCBicm9hZGNhc3Qgb3IgbXVsdGljYXN0LiAgTXVzdCBiZSBkaXJlY3RlZCBhdCB1cyBvcgorCQkvLyB0aGUgY2FyZCBpcyBpbiBwcm9taXNjdW91cyBtb2RlLiAgRWl0aGVyIHdheSwgY29uc2lkZXIgaXQKKwkJLy8gb3VycyBpZiBNQUNfRElSRUNURUQgaXMgc2V0CisJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZVY2FzdFBrdHMrKzsKKwkJYWRhcHRlci0+U3RhdHMuRHVtYlJjdlVjYXN0Qnl0ZXMgKz0gbGVuZ3RoOworCQlhZGFwdGVyLT5TdGF0cy5EdW1iUmN2UGt0cysrOworCQlhZGFwdGVyLT5TdGF0cy5EdW1iUmN2Qnl0ZXMgKz0gbGVuZ3RoOworCQlyZXR1cm4gKFRSVUUpOworCX0KKwlpZiAoYWRhcHRlci0+TWFjRmlsdGVyICYgTUFDX1BST01JU0MpIHsKKwkJLy8gV2hhdGV2ZXIgaXQgaXMsIGtlZXAgaXQuCisJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZQa3RzKys7CisJCWFkYXB0ZXItPlN0YXRzLkR1bWJSY3ZCeXRlcyArPSBsZW5ndGg7CisJCXJldHVybiAoVFJVRSk7CisJfQorCWFkYXB0ZXItPlN0YXRzLlJjdkRpc2NhcmRzKys7CisJcmV0dXJuIChGQUxTRSk7Cit9CisKK3N0YXRpYyBpbnQgc3hnX3JlZ2lzdGVyX2ludGVycnVwdChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCWlmICghYWRhcHRlci0+aW50cnJlZ2lzdGVyZWQpIHsKKwkJaW50IHJldHZhbDsKKworCQlEQkdfRVJST1IKKwkJICAgICgic3hnOiAlcyBBbGxvY0FkYXB0UnNyY3MgYWRhcHRlclslcF0gZGV2LT5pcnFbJXhdICV4XG4iLAorCQkgICAgIF9fRlVOQ1RJT05fXywgYWRhcHRlciwgYWRhcHRlci0+bmV0ZGV2LT5pcnEsIE5SX0lSUVMpOworCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN4Z19nbG9iYWwuZHJpdmVyX2xvY2ssCisJCQkJICAgICAgIHN4Z19nbG9iYWwuZmxhZ3MpOworCisJCXJldHZhbCA9IHJlcXVlc3RfaXJxKGFkYXB0ZXItPm5ldGRldi0+aXJxLAorCQkJCSAgICAgJnN4Z19pc3IsCisJCQkJICAgICBJUlFGX1NIQVJFRCwKKwkJCQkgICAgIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+bmV0ZGV2KTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3hnX2dsb2JhbC5kcml2ZXJfbG9jaywgc3hnX2dsb2JhbC5mbGFncyk7CisKKwkJaWYgKHJldHZhbCkgeworCQkJREJHX0VSUk9SKCJzeGc6IHJlcXVlc3RfaXJxICglcykgRkFJTEVEIFsleF1cbiIsCisJCQkJICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUsIHJldHZhbCk7CisJCQlyZXR1cm4gKHJldHZhbCk7CisJCX0KKwkJYWRhcHRlci0+aW50cnJlZ2lzdGVyZWQgPSAxOworCQlhZGFwdGVyLT5JbnRSZWdpc3RlcmVkID0gVFJVRTsKKwkJLy8gRGlzYWJsZSBSU1Mgd2l0aCBsaW5lLWJhc2VkIGludGVycnVwdHMKKwkJYWRhcHRlci0+TXNpRW5hYmxlZCA9IEZBTFNFOworCQlhZGFwdGVyLT5Sc3NFbmFibGVkID0gRkFMU0U7CisJCURCR19FUlJPUigic3hnOiAlcyBBbGxvY0FkYXB0UnNyY3MgYWRhcHRlclslcF0gZGV2LT5pcnFbJXhdXG4iLAorCQkJICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXIsIGFkYXB0ZXItPm5ldGRldi0+aXJxKTsKKwl9CisJcmV0dXJuIChTVEFUVVNfU1VDQ0VTUyk7Cit9CisKK3N0YXRpYyB2b2lkIHN4Z19kZXJlZ2lzdGVyX2ludGVycnVwdChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCURCR19FUlJPUigic3hnOiAlcyBFTlRFUiBhZGFwdGVyWyVwXVxuIiwgX19GVU5DVElPTl9fLCBhZGFwdGVyKTsKKyNpZiBYWFhUT0RPCisJc2xpY19pbml0X2NsZWFudXAoYWRhcHRlcik7CisjZW5kaWYKKwltZW1zZXQoJmFkYXB0ZXItPnN0YXRzLCAwLCBzaXplb2Yoc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMpKTsKKwlhZGFwdGVyLT5lcnJvcl9pbnRlcnJ1cHRzID0gMDsKKwlhZGFwdGVyLT5yY3ZfaW50ZXJydXB0cyA9IDA7CisJYWRhcHRlci0+eG1pdF9pbnRlcnJ1cHRzID0gMDsKKwlhZGFwdGVyLT5saW5rZXZlbnRfaW50ZXJydXB0cyA9IDA7CisJYWRhcHRlci0+dXByX2ludGVycnVwdHMgPSAwOworCWFkYXB0ZXItPm51bV9pc3JzID0gMDsKKwlhZGFwdGVyLT54bWl0X2NvbXBsZXRlcyA9IDA7CisJYWRhcHRlci0+cmN2X2Jyb2FkY2FzdHMgPSAwOworCWFkYXB0ZXItPnJjdl9tdWx0aWNhc3RzID0gMDsKKwlhZGFwdGVyLT5yY3ZfdW5pY2FzdHMgPSAwOworCURCR19FUlJPUigic3hnOiAlcyBFWElUXG4iLCBfX0ZVTkNUSU9OX18pOworfQorCisvKgorICogIHN4Z19pZl9pbml0CisgKgorICogIFBlcmZvcm0gaW5pdGlhbGl6YXRpb24gb2Ygb3VyIHNsaWMgaW50ZXJmYWNlLgorICoKKyAqLworc3RhdGljIGludCBzeGdfaWZfaW5pdChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCXBfbmV0X2RldmljZSBkZXYgPSBhZGFwdGVyLT5uZXRkZXY7CisJaW50IHN0YXR1cyA9IDA7CisKKwlEQkdfRVJST1IoInN4ZzogJXMgKCVzKSBFTlRFUiBzdGF0ZXNbJWQ6JWQ6JWRdIGZsYWdzWyV4XVxuIiwKKwkJICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwKKwkJICBhZGFwdGVyLT5xdWV1ZXNfaW5pdGlhbGl6ZWQsIGFkYXB0ZXItPnN0YXRlLAorCQkgIGFkYXB0ZXItPmxpbmtzdGF0ZSwgZGV2LT5mbGFncyk7CisKKwkvKiBhZGFwdGVyIHNob3VsZCBiZSBkb3duIGF0IHRoaXMgcG9pbnQgKi8KKwlpZiAoYWRhcHRlci0+c3RhdGUgIT0gQURBUFRfRE9XTikgeworCQlEQkdfRVJST1IoInN4Z19pZl9pbml0IGFkYXB0ZXItPnN0YXRlICE9IEFEQVBUX0RPV05cbiIpOworCQlyZXR1cm4gKC1FSU8pOworCX0KKwlBU1NFUlQoYWRhcHRlci0+bGlua3N0YXRlID09IExJTktfRE9XTik7CisKKwlhZGFwdGVyLT5kZXZmbGFnc19wcmV2ID0gZGV2LT5mbGFnczsKKwlhZGFwdGVyLT5tYWNvcHRzID0gTUFDX0RJUkVDVEVEOworCWlmIChkZXYtPmZsYWdzKSB7CisJCURCR19FUlJPUigic3hnOiAlcyAoJXMpIFNldCBNQUMgb3B0aW9uczogIiwgX19GVU5DVElPTl9fLAorCQkJICBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCQlpZiAoZGV2LT5mbGFncyAmIElGRl9CUk9BRENBU1QpIHsKKwkJCWFkYXB0ZXItPm1hY29wdHMgfD0gTUFDX0JDQVNUOworCQkJREJHX0VSUk9SKCJCQ0FTVCAiKTsKKwkJfQorCQlpZiAoZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSB7CisJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19QUk9NSVNDOworCQkJREJHX0VSUk9SKCJQUk9NSVNDICIpOworCQl9CisJCWlmIChkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSB7CisJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19BTExNQ0FTVDsKKwkJCURCR19FUlJPUigiQUxMX01DQVNUICIpOworCQl9CisJCWlmIChkZXYtPmZsYWdzICYgSUZGX01VTFRJQ0FTVCkgeworCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfTUNBU1Q7CisJCQlEQkdfRVJST1IoIk1DQVNUICIpOworCQl9CisJCURCR19FUlJPUigiXG4iKTsKKwl9CisJc3RhdHVzID0gc3hnX3JlZ2lzdGVyX2ludGVycnVwdChhZGFwdGVyKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCURCR19FUlJPUigic3hnX2lmX2luaXQ6IHN4Z19yZWdpc3Rlcl9pbnRlcnJ1cHQgRkFJTEVEICV4XG4iLAorCQkJICBzdGF0dXMpOworCQlzeGdfZGVyZWdpc3Rlcl9pbnRlcnJ1cHQoYWRhcHRlcik7CisJCXJldHVybiAoc3RhdHVzKTsKKwl9CisKKwlhZGFwdGVyLT5zdGF0ZSA9IEFEQVBUX1VQOworCisJLyoKKwkgKiAgICBjbGVhciBhbnkgcGVuZGluZyBldmVudHMsIHRoZW4gZW5hYmxlIGludGVycnVwdHMKKwkgKi8KKwlEQkdfRVJST1IoInN4ZzogJXMgRU5BQkxFIGludGVycnVwdHMoc2xpYylcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlyZXR1cm4gKFNUQVRVU19TVUNDRVNTKTsKK30KKworc3RhdGljIGludCBzeGdfZW50cnlfb3BlbihwX25ldF9kZXZpY2UgZGV2KQoreworCXBfYWRhcHRlcl90IGFkYXB0ZXIgPSAocF9hZGFwdGVyX3QpIG5ldGRldl9wcml2KGRldik7CisJaW50IHN0YXR1czsKKworCUFTU0VSVChhZGFwdGVyKTsKKwlEQkdfRVJST1IoInN4ZzogJXMgYWRhcHRlci0+YWN0aXZhdGVkWyVkXVxuIiwgX19GVU5DVElPTl9fLAorCQkgIGFkYXB0ZXItPmFjdGl2YXRlZCk7CisJREJHX0VSUk9SCisJICAgICgic3hnOiAlcyAoJXMpOiBbamlmZmllc1slbHhdIGNwdSAlZF0gZGV2WyVwXSBhZGFwdFslcF0gcG9ydFslZF1cbiIsCisJICAgICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgamlmZmllcywgc21wX3Byb2Nlc3Nvcl9pZCgpLAorCSAgICAgYWRhcHRlci0+bmV0ZGV2LCBhZGFwdGVyLCBhZGFwdGVyLT5wb3J0KTsKKworCW5ldGlmX3N0b3BfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzeGdfZ2xvYmFsLmRyaXZlcl9sb2NrLCBzeGdfZ2xvYmFsLmZsYWdzKTsKKwlpZiAoIWFkYXB0ZXItPmFjdGl2YXRlZCkgeworCQlzeGdfZ2xvYmFsLm51bV9zeGdfcG9ydHNfYWN0aXZlKys7CisJCWFkYXB0ZXItPmFjdGl2YXRlZCA9IDE7CisJfQorCS8vIEluaXRpYWxpemUgdGhlIGFkYXB0ZXIKKwlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2luaXRpYWxpemVfYWRhcHRlclxuIiwgX19GVU5DVElPTl9fKTsKKwlzdGF0dXMgPSBzeGdfaW5pdGlhbGl6ZV9hZGFwdGVyKGFkYXB0ZXIpOworCURCR19FUlJPUigic3hnOiAlcyBFWElUIHN4Z19pbml0aWFsaXplX2FkYXB0ZXIgc3RhdHVzWyV4XVxuIiwKKwkJICBfX0ZVTkNUSU9OX18sIHN0YXR1cyk7CisKKwlpZiAoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKSB7CisJCURCR19FUlJPUigic3hnOiAlcyBFTlRFUiBzeGdfaWZfaW5pdFxuIiwgX19GVU5DVElPTl9fKTsKKwkJc3RhdHVzID0gc3hnX2lmX2luaXQoYWRhcHRlcik7CisJCURCR19FUlJPUigic3hnOiAlcyBFWElUIHN4Z19pZl9pbml0IHN0YXR1c1sleF1cbiIsIF9fRlVOQ1RJT05fXywKKwkJCSAgc3RhdHVzKTsKKwl9CisKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCWlmIChhZGFwdGVyLT5hY3RpdmF0ZWQpIHsKKwkJCXN4Z19nbG9iYWwubnVtX3N4Z19wb3J0c19hY3RpdmUtLTsKKwkJCWFkYXB0ZXItPmFjdGl2YXRlZCA9IDA7CisJCX0KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3hnX2dsb2JhbC5kcml2ZXJfbG9jaywKKwkJCQkgICAgICAgc3hnX2dsb2JhbC5mbGFncyk7CisJCXJldHVybiAoc3RhdHVzKTsKKwl9CisJREJHX0VSUk9SKCJzeGc6ICVzIEVOQUJMRSBBTEwgSU5URVJSVVBUU1xuIiwgX19GVU5DVElPTl9fKTsKKworCS8vIEVuYWJsZSBpbnRlcnJ1cHRzCisJU1hHX0VOQUJMRV9BTExfSU5URVJSVVBUUyhhZGFwdGVyKTsKKworCURCR19FUlJPUigic3hnOiAlcyBFWElUXG4iLCBfX0ZVTkNUSU9OX18pOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3hnX2dsb2JhbC5kcml2ZXJfbG9jaywgc3hnX2dsb2JhbC5mbGFncyk7CisJcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBfX2RldmV4aXQgc3hnX2VudHJ5X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2KQoreworCXBfbmV0X2RldmljZSBkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGNpZGV2KTsKKwl1MzIgbW1pb19zdGFydCA9IDA7CisJdW5zaWduZWQgaW50IG1taW9fbGVuID0gMDsKKwlwX2FkYXB0ZXJfdCBhZGFwdGVyID0gKHBfYWRhcHRlcl90KSBuZXRkZXZfcHJpdihkZXYpOworCisJQVNTRVJUKGFkYXB0ZXIpOworCURCR19FUlJPUigic3hnOiAlcyBFTlRFUiBkZXZbJXBdIGFkYXB0ZXJbJXBdXG4iLCBfX0ZVTkNUSU9OX18sIGRldiwKKwkJICBhZGFwdGVyKTsKKwlzeGdfZGVyZWdpc3Rlcl9pbnRlcnJ1cHQoYWRhcHRlcik7CisJc3hnX3VubWFwX21taW9fc3BhY2UoYWRhcHRlcik7CisJREJHX0VSUk9SKCJzeGc6ICVzIHVucmVnaXN0ZXJfbmV0ZGV2XG4iLCBfX0ZVTkNUSU9OX18pOworCXVucmVnaXN0ZXJfbmV0ZGV2KGRldik7CisKKwltbWlvX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaWRldiwgMCk7CisJbW1pb19sZW4gPSBwY2lfcmVzb3VyY2VfbGVuKHBjaWRldiwgMCk7CisKKwlEQkdfRVJST1IoInN4ZzogJXMgcmVsX3JlZ2lvbigwKSBzdGFydFsleF0gbGVuWyV4XVxuIiwgX19GVU5DVElPTl9fLAorCQkgIG1taW9fc3RhcnQsIG1taW9fbGVuKTsKKwlyZWxlYXNlX21lbV9yZWdpb24obW1pb19zdGFydCwgbW1pb19sZW4pOworCisJREJHX0VSUk9SKCJzeGc6ICVzIGlvdW5tYXAgZGV2LT5iYXNlX2FkZHJbJXhdXG4iLCBfX0ZVTkNUSU9OX18sCisJCSAgKHVuc2lnbmVkIGludClkZXYtPmJhc2VfYWRkcik7CisJaW91bm1hcCgoY2hhciAqKWRldi0+YmFzZV9hZGRyKTsKKworCURCR19FUlJPUigic3hnOiAlcyBkZWFsbG9jYXRlIGRldmljZVxuIiwgX19GVU5DVElPTl9fKTsKKwlrZnJlZShkZXYpOworCURCR19FUlJPUigic3hnOiAlcyBFWElUXG4iLCBfX0ZVTkNUSU9OX18pOworfQorCitzdGF0aWMgaW50IHN4Z19lbnRyeV9oYWx0KHBfbmV0X2RldmljZSBkZXYpCit7CisJcF9hZGFwdGVyX3QgYWRhcHRlciA9IChwX2FkYXB0ZXJfdCkgbmV0ZGV2X3ByaXYoZGV2KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzeGdfZ2xvYmFsLmRyaXZlcl9sb2NrLCBzeGdfZ2xvYmFsLmZsYWdzKTsKKwlEQkdfRVJST1IoInN4ZzogJXMgKCVzKSBFTlRFUlxuIiwgX19GVU5DVElPTl9fLCBkZXYtPm5hbWUpOworCisJbmV0aWZfc3RvcF9xdWV1ZShhZGFwdGVyLT5uZXRkZXYpOworCWFkYXB0ZXItPnN0YXRlID0gQURBUFRfRE9XTjsKKwlhZGFwdGVyLT5saW5rc3RhdGUgPSBMSU5LX0RPV047CisJYWRhcHRlci0+ZGV2ZmxhZ3NfcHJldiA9IDA7CisJREJHX0VSUk9SKCJzeGc6ICVzICglcykgc2V0IGFkYXB0ZXJbJXBdIHN0YXRlIHRvIEFEQVBUX0RPV04oJWQpXG4iLAorCQkgIF9fRlVOQ1RJT05fXywgZGV2LT5uYW1lLCBhZGFwdGVyLCBhZGFwdGVyLT5zdGF0ZSk7CisKKwlEQkdfRVJST1IoInN4ZzogJXMgKCVzKSBFWElUXG4iLCBfX0ZVTkNUSU9OX18sIGRldi0+bmFtZSk7CisJREJHX0VSUk9SKCJzeGc6ICVzIEVYSVRcbiIsIF9fRlVOQ1RJT05fXyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3hnX2dsb2JhbC5kcml2ZXJfbG9jaywgc3hnX2dsb2JhbC5mbGFncyk7CisJcmV0dXJuIChTVEFUVVNfU1VDQ0VTUyk7Cit9CisKK3N0YXRpYyBpbnQgc3hnX2lvY3RsKHBfbmV0X2RldmljZSBkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpCit7CisJQVNTRVJUKHJxKTsKKy8vICAgICAgREJHX0VSUk9SKCJzeGc6ICVzIGNtZFsleF0gcnFbJXBdIGRldlslcF1cbiIsIF9fRlVOQ1RJT05fXywgY21kLCBycSwgZGV2KTsKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU0lPQ1NMSUNTRVRJTlRBR0c6CisJCXsKKy8vICAgICAgICAgICAgICAgICAgICAgIHBfYWRhcHRlcl90IGFkYXB0ZXIgPSAocF9hZGFwdGVyX3QpIG5ldGRldl9wcml2KGRldik7CisJCQl1MzIgZGF0YVs3XTsKKwkJCXUzMiBpbnRhZ2c7CisKKwkJCWlmIChjb3B5X2Zyb21fdXNlcihkYXRhLCBycS0+aWZyX2RhdGEsIDI4KSkgeworCQkJCURCR19FUlJPUgorCQkJCSAgICAoImNvcHlfZnJvbV91c2VyIEZBSUxFRCAgZ2V0dGluZyBpbml0aWFsIHBhcmFtc1xuIik7CisJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQl9CisJCQlpbnRhZ2cgPSBkYXRhWzBdOworCQkJcHJpbnRrKEtFUk5fRU1FUkcKKwkJCSAgICAgICAiJXM6IHNldCBpbnRlcnJ1cHQgYWdncmVnYXRpb24gdG8gJWRcbiIsCisJCQkgICAgICAgX19GVU5DVElPTl9fLCBpbnRhZ2cpOworCQkJcmV0dXJuIDA7CisJCX0KKworCWRlZmF1bHQ6CisvLyAgICAgICAgICAgICAgREJHX0VSUk9SKCJzeGc6ICVzIFVOU1VQUE9SVEVEWyV4XVxuIiwgX19GVU5DVElPTl9fLCBjbWQpOworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCXJldHVybiAwOworfQorCisjZGVmaW5lIE5PUk1BTF9FVEhGUkFNRSAgICAgMAorCisvKgorICoKKyAqIHN4Z19zZW5kX3BhY2tldHMgLSBTZW5kIGEgc2tiIHBhY2tldAorICoKKyAqIEFyZ3VtZW50czoKKyAqCQkJc2tiICAgICAgICAgICAgICAgICAgICAgLSBUaGUgcGFja2V0IHRvIHNlbmQKKyAqCQkJZGV2ICAgICAgICAgICAgICAgICAgICAgLSBPdXIgbGludXggbmV0IGRldmljZSB0aGF0IHJlZnMgb3VyIGFkYXB0ZXIKKyAqCisgKiBSZXR1cm46CisgKgkJMCAgIHJlZ2FyZGxlc3Mgb2Ygb3V0Y29tZSAgICBYWFhUT0RPIHJlZmVyIHRvIGUxMDAwIGRyaXZlcgorICovCitzdGF0aWMgaW50IHN4Z19zZW5kX3BhY2tldHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgcF9uZXRfZGV2aWNlIGRldikKK3sKKwlwX2FkYXB0ZXJfdCBhZGFwdGVyID0gKHBfYWRhcHRlcl90KSBuZXRkZXZfcHJpdihkZXYpOworCXUzMiBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworCURCR19FUlJPUigic3hnOiAlcyBFTlRFUiBzeGdfc2VuZF9wYWNrZXRzIHNrYlslcF1cbiIsIF9fRlVOQ1RJT05fXywKKwkJICBza2IpOworCS8vIENoZWNrIHRoZSBhZGFwdGVyIHN0YXRlCisJc3dpdGNoIChhZGFwdGVyLT5TdGF0ZSkgeworCWNhc2UgU1hHX1NUQVRFX0lOSVRJQUxJWklORzoKKwljYXNlIFNYR19TVEFURV9IQUxURUQ6CisJY2FzZSBTWEdfU1RBVEVfU0hVVERPV046CisJCUFTU0VSVCgwKTsJLy8gdW5leHBlY3RlZAorCQkvLyBmYWxsIHRocm91Z2gKKwljYXNlIFNYR19TVEFURV9SRVNFVFRJTkc6CisJY2FzZSBTWEdfU1RBVEVfU0xFRVA6CisJY2FzZSBTWEdfU1RBVEVfQk9PVERJQUc6CisJY2FzZSBTWEdfU1RBVEVfRElBRzoKKwljYXNlIFNYR19TVEFURV9IQUxUSU5HOgorCQlzdGF0dXMgPSBTVEFUVVNfRkFJTFVSRTsKKwkJYnJlYWs7CisJY2FzZSBTWEdfU1RBVEVfUlVOTklORzoKKwkJaWYgKGFkYXB0ZXItPkxpbmtTdGF0ZSAhPSBTWEdfTElOS19VUCkgeworCQkJc3RhdHVzID0gU1RBVFVTX0ZBSUxVUkU7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQVNTRVJUKDApOworCQlzdGF0dXMgPSBTVEFUVVNfRkFJTFVSRTsKKwl9CisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQlnb3RvIHhtaXRfZmFpbDsKKwl9CisJLy8gc2VuZCBhIHBhY2tldAorCXN0YXR1cyA9IHN4Z190cmFuc21pdF9wYWNrZXQoYWRhcHRlciwgc2tiKTsKKwlpZiAoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKSB7CisJCWdvdG8geG1pdF9kb25lOworCX0KKworICAgICAgeG1pdF9mYWlsOgorCS8vIHJlamVjdCAmIGNvbXBsZXRlIGFsbCB0aGUgcGFja2V0cyBpZiB0aGV5IGNhbnQgYmUgc2VudAorCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpIHsKKyNpZiBYWFhUT0RPCisvLyAgICAgIHN4Z19zZW5kX3BhY2tldHNfZmFpbChhZGFwdGVyLCBza2IsIHN0YXR1cyk7CisjZWxzZQorCQlTWEdfRFJPUF9EVU1CX1NFTkQoYWRhcHRlciwgc2tiKTsKKwkJYWRhcHRlci0+c3RhdHMudHhfZHJvcHBlZCsrOworI2VuZGlmCisJfQorCURCR19FUlJPUigic3hnOiAlcyBFWElUIHN4Z19zZW5kX3BhY2tldHMgc3RhdHVzWyV4XVxuIiwgX19GVU5DVElPTl9fLAorCQkgIHN0YXR1cyk7CisKKyAgICAgIHhtaXRfZG9uZToKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHN4Z190cmFuc21pdF9wYWNrZXQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHRyYW5zbWl0cyBhIHNpbmdsZSBwYWNrZXQuCisgKgorICogQXJndW1lbnRzIC0KKyAqCQlhZGFwdGVyCQkJLSBQb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICogICAgICBza2IgICAgICAgICAgICAgLSBUaGUgcGFja2V0IHRvIGJlIHNlbnQKKyAqCisgKiBSZXR1cm4gLQorICogCQlTVEFUVVMgb2Ygc2VuZAorICovCitzdGF0aWMgaW50IHN4Z190cmFuc21pdF9wYWNrZXQocF9hZGFwdGVyX3QgYWRhcHRlciwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlQU0NBVFRFUl9HQVRIRVJfTElTVCBwU2dsOworCVBTWEdfU0NBVFRFUl9HQVRIRVIgU3hnU2dsOworCXZvaWQgKlNnbEJ1ZmZlcjsKKwl1MzIgU2dsQnVmZmVyTGVuZ3RoOworCisJLy8gVGhlIHZhc3QgbWFqb3JpdHkgb2Ygd29yayBpcyBkb25lIGluIHRoZSBzaGFyZWQKKwkvLyBzeGdfZHVtYl9zZ2wgcm91dGluZS4KKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJEdW1iU2VuZCIsCisJCSAgYWRhcHRlciwgc2tiLCAwLCAwKTsKKworCS8vIEFsbG9jYXRlIGEgU0dMIGJ1ZmZlcgorCVNYR19HRVRfU0dMX0JVRkZFUihhZGFwdGVyLCBTeGdTZ2wpOworCWlmICghU3hnU2dsKSB7CisJCWFkYXB0ZXItPlN0YXRzLk5vU2dsQnVmKys7CisJCWFkYXB0ZXItPlN0YXRzLlhtdEVycm9ycysrOworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJTbmRQa3RGMSIsCisJCQkgIGFkYXB0ZXIsIHNrYiwgMCwgMCk7CisJCXJldHVybiAoU1RBVFVTX1JFU09VUkNFUyk7CisJfQorCUFTU0VSVChTeGdTZ2wtPmFkYXB0ZXIgPT0gYWRhcHRlcik7CisJU2dsQnVmZmVyID0gU1hHX1NHTF9CVUZGRVIoU3hnU2dsKTsKKwlTZ2xCdWZmZXJMZW5ndGggPSBTWEdfU0dMX0JVRl9TSVpFOworCVN4Z1NnbC0+VmxhblRhZy5WbGFuVGNpID0gMDsKKwlTeGdTZ2wtPlZsYW5UYWcuVmxhblRwaWQgPSAwOworCVN4Z1NnbC0+VHlwZSA9IFNYR19TR0xfRFVNQjsKKwlTeGdTZ2wtPkR1bWJQYWNrZXQgPSBza2I7CisJcFNnbCA9IE5VTEw7CisKKwkvLyBDYWxsIHRoZSBjb21tb24gc3hnX2R1bWJfc2dsIHJvdXRpbmUgdG8gY29tcGxldGUgdGhlIHNlbmQuCisJc3hnX2R1bWJfc2dsKHBTZ2wsIFN4Z1NnbCk7CisJLy8gUmV0dXJuIHN1Y2Nlc3MgICBzeGdfZHVtYl9zZ2wgKG9yIHNvbWV0aGluZyBsYXRlcikgd2lsbCBjb21wbGV0ZSBpdC4KKwlyZXR1cm4gKFNUQVRVU19TVUNDRVNTKTsKK30KKworLyoKKyAqIHN4Z19kdW1iX3NnbAorICoKKyAqIEFyZ3VtZW50czoKKyAqCQlwU2dsICAgICAtCisgKgkJU3hnU2dsICAgLSBTWEdfU0NBVFRFUl9HQVRIRVIKKyAqCisgKiBSZXR1cm4gVmFsdWU6CisgKiAJTm9uZS4KKyAqLworc3RhdGljIHZvaWQgc3hnX2R1bWJfc2dsKFBTQ0FUVEVSX0dBVEhFUl9MSVNUIHBTZ2wsIFBTWEdfU0NBVFRFUl9HQVRIRVIgU3hnU2dsKQoreworCXBfYWRhcHRlcl90IGFkYXB0ZXIgPSBTeGdTZ2wtPmFkYXB0ZXI7CisJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IFN4Z1NnbC0+RHVtYlBhY2tldDsKKwkvLyBGb3Igbm93LCBhbGwgZHVtYi1uaWMgc2VuZHMgZ28gb24gUlNTIHF1ZXVlIHplcm8KKwlQU1hHX1hNVF9SSU5HIFhtdFJpbmcgPSAmYWRhcHRlci0+WG10UmluZ3NbMF07CisJUFNYR19SSU5HX0lORk8gWG10UmluZ0luZm8gPSAmYWRhcHRlci0+WG10UmluZ1plcm9JbmZvOworCVBTWEdfQ01EIFhtdENtZCA9IE5VTEw7CisvLyAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCA9IDA7CisJdTMyIERhdGFMZW5ndGggPSBza2ItPmxlbjsKKy8vICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZkxlbjsKKy8vICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgIFNnbE9mZnNldDsKKwl1NjQgcGh5c19hZGRyOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiRHVtYlNnbCIsCisJCSAgcFNnbCwgU3hnU2dsLCAwLCAwKTsKKworCS8vIFNldCBhc2lkZSBhIHBvaW50ZXIgdG8gdGhlIHNnbAorCVN4Z1NnbC0+cFNnbCA9IHBTZ2w7CisKKwkvLyBTYW5pdHkgY2hlY2sgdGhhdCBvdXIgU0dMIGZvcm1hdCBpcyBhcyB3ZSBleHBlY3QuCisJQVNTRVJUKHNpemVvZihTWEdfWDY0X1NHRSkgPT0gc2l6ZW9mKFNDQVRURVJfR0FUSEVSX0VMRU1FTlQpKTsKKwkvLyBTaG91bGRuJ3QgYmUgYSB2bGFuIHRhZyBvbiB0aGlzIGZyYW1lCisJQVNTRVJUKFN4Z1NnbC0+VmxhblRhZy5WbGFuVGNpID09IDApOworCUFTU0VSVChTeGdTZ2wtPlZsYW5UYWcuVmxhblRwaWQgPT0gMCk7CisKKwkvLyBGcm9tIGhlcmUgYmVsb3cgd2Ugd29yayB3aXRoIHRoZSBTR0wgcGxhY2VkIGluIG91cgorCS8vIGJ1ZmZlci4KKworCVN4Z1NnbC0+U2dsLk51bWJlck9mRWxlbWVudHMgPSAxOworCisJLy8gR3JhYiB0aGUgc3BpbmxvY2sgYW5kIGFjcXVpcmUgYSBjb21tYW5kCisJc3Bpbl9sb2NrKCZhZGFwdGVyLT5YbXRaZXJvTG9jayk7CisJU1hHX0dFVF9DTUQoWG10UmluZywgWG10UmluZ0luZm8sIFhtdENtZCwgU3hnU2dsKTsKKwlpZiAoWG10Q21kID09IE5VTEwpIHsKKwkJLy8gQ2FsbCBzeGdfY29tcGxldGVfc2xvd19zZW5kIHRvIHNlZSBpZiB3ZSBjYW4KKwkJLy8gZnJlZSB1cCBhbnkgWG10UmluZ1plcm8gZW50cmllcyBhbmQgdGhlbiB0cnkgYWdhaW4KKwkJc3Bpbl91bmxvY2soJmFkYXB0ZXItPlhtdFplcm9Mb2NrKTsKKwkJc3hnX2NvbXBsZXRlX3Nsb3dfc2VuZChhZGFwdGVyKTsKKwkJc3Bpbl9sb2NrKCZhZGFwdGVyLT5YbXRaZXJvTG9jayk7CisJCVNYR19HRVRfQ01EKFhtdFJpbmcsIFhtdFJpbmdJbmZvLCBYbXRDbWQsIFN4Z1NnbCk7CisJCWlmIChYbXRDbWQgPT0gTlVMTCkgeworCQkJYWRhcHRlci0+U3RhdHMuWG10WmVyb0Z1bGwrKzsKKwkJCWdvdG8gYWJvcnRjbWQ7CisJCX0KKwl9CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiRHVtYkNtZCIsCisJCSAgWG10Q21kLCBYbXRSaW5nSW5mby0+SGVhZCwgWG10UmluZ0luZm8tPlRhaWwsIDApOworCS8vIFVwZGF0ZSBzdGF0cworCWFkYXB0ZXItPlN0YXRzLkR1bWJYbXRQa3RzKys7CisJYWRhcHRlci0+U3RhdHMuRHVtYlhtdEJ5dGVzICs9IERhdGFMZW5ndGg7CisjaWYgWFhYVE9ETwkJCS8vIFN0YXRzIHN0dWZmCisJaWYgKFNYR19NVUxUSUNBU1RfUEFDS0VUKEV0aGVySGRyKSkgeworCQlpZiAoU1hHX0JST0FEQ0FTVF9QQUNLRVQoRXRoZXJIZHIpKSB7CisJCQlhZGFwdGVyLT5TdGF0cy5EdW1iWG10QmNhc3RQa3RzKys7CisJCQlhZGFwdGVyLT5TdGF0cy5EdW1iWG10QmNhc3RCeXRlcyArPSBEYXRhTGVuZ3RoOworCQl9IGVsc2UgeworCQkJYWRhcHRlci0+U3RhdHMuRHVtYlhtdE1jYXN0UGt0cysrOworCQkJYWRhcHRlci0+U3RhdHMuRHVtYlhtdE1jYXN0Qnl0ZXMgKz0gRGF0YUxlbmd0aDsKKwkJfQorCX0gZWxzZSB7CisJCWFkYXB0ZXItPlN0YXRzLkR1bWJYbXRVY2FzdFBrdHMrKzsKKwkJYWRhcHRlci0+U3RhdHMuRHVtYlhtdFVjYXN0Qnl0ZXMgKz0gRGF0YUxlbmd0aDsKKwl9CisjZW5kaWYKKwkvLyBGaWxsIGluIHRoZSBjb21tYW5kCisJLy8gQ29weSBvdXQgdGhlIGZpcnN0IFNHRSB0byB0aGUgY29tbWFuZCBhbmQgYWRqdXN0IGZvciBvZmZzZXQKKwlwaHlzX2FkZHIgPQorCSAgICBwY2lfbWFwX3NpbmdsZShhZGFwdGVyLT5wY2lkZXYsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sCisJCQkgICBQQ0lfRE1BX1RPREVWSUNFKTsKKwlYbXRDbWQtPkJ1ZmZlci5GaXJzdFNnZUFkZHJlc3MgPSBTWEdfR0VUX0FERFJfSElHSChwaHlzX2FkZHIpOworCVhtdENtZC0+QnVmZmVyLkZpcnN0U2dlQWRkcmVzcyA9IFhtdENtZC0+QnVmZmVyLkZpcnN0U2dlQWRkcmVzcyA8PCAzMjsKKwlYbXRDbWQtPkJ1ZmZlci5GaXJzdFNnZUFkZHJlc3MgPQorCSAgICBYbXRDbWQtPkJ1ZmZlci5GaXJzdFNnZUFkZHJlc3MgfCBTWEdfR0VUX0FERFJfTE9XKHBoeXNfYWRkcik7CisvLyAgICAgIFhtdENtZC0+QnVmZmVyLkZpcnN0U2dlQWRkcmVzcyA9IFN4Z1NnbC0+U2dsLkVsZW1lbnRzW0luZGV4XS5BZGRyZXNzOworLy8gICAgICBYbXRDbWQtPkJ1ZmZlci5GaXJzdFNnZUFkZHJlc3MuTG93UGFydCArPSBNZGxPZmZzZXQ7CisJWG10Q21kLT5CdWZmZXIuRmlyc3RTZ2VMZW5ndGggPSBEYXRhTGVuZ3RoOworCS8vIFNldCBhIHBvaW50ZXIgdG8gdGhlIHJlbWFpbmluZyBTR0wgZW50cmllcworLy8gICAgICBYbXRDbWQtPlNnbCA9IFN4Z1NnbC0+UGh5c2ljYWxBZGRyZXNzOworCS8vIEFkdmFuY2UgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFN4Z1NnbCBzdHJ1Y3R1cmUgdG8KKwkvLyB0aGUgc2Vjb25kIFNHRQorLy8gICAgICBTZ2xPZmZzZXQgPSAodTMyKSgodTMyICopKCZTeGdTZ2wtPlNnbC5FbGVtZW50c1tJbmRleCsxXSkgLQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHUzMiAqKVN4Z1NnbCk7CisvLyAgICAgIFhtdENtZC0+U2dsLkxvd1BhcnQgKz0gU2dsT2Zmc2V0OworCVhtdENtZC0+QnVmZmVyLlNnZU9mZnNldCA9IDA7CisJLy8gTm90ZSAtIFRvdGFsTGVuZ3RoIG1pZ2h0IGJlIG92ZXJ3cml0dGVuIHdpdGggTVNTIGJlbG93Li4KKwlYbXRDbWQtPkJ1ZmZlci5Ub3RhbExlbmd0aCA9IERhdGFMZW5ndGg7CisJWG10Q21kLT5TZ0VudHJpZXMgPSAxOwkvLyh1c2hvcnQpKFN4Z1NnbC0+U2dsLk51bWJlck9mRWxlbWVudHMgLSBJbmRleCk7CisJWG10Q21kLT5GbGFncyA9IDA7CisJLy8KKwkvLyBBZHZhbmNlIHRyYW5zbWl0IGNtZCBkZXNjcmlwdGVyIGJ5IDEuCisJLy8gTk9URSAtIFNlZSBjb21tZW50cyBpbiBTeGdUY3BPdXRwdXQgd2hlcmUgd2Ugd3JpdGUKKwkvLyB0byB0aGUgWG10Q21kIHJlZ2lzdGVyIHJlZ2FyZGluZyBDUFUgSUQgdmFsdWVzIGFuZC9vcgorCS8vIG11bHRpcGxlIGNvbW1hbmRzLgorCS8vCisJLy8KKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLlhtdENtZCwgMSwgVFJVRSk7CisJLy8KKwkvLworCWFkYXB0ZXItPlN0YXRzLlhtdFFMZW4rKzsJLy8gU3RhdHMgd2l0aGluIGxvY2sKKwlzcGluX3VubG9jaygmYWRhcHRlci0+WG10WmVyb0xvY2spOworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhEdW1TZ2wyIiwKKwkJICBYbXRDbWQsIHBTZ2wsIFN4Z1NnbCwgMCk7CisJcmV0dXJuOworCisgICAgICBhYm9ydGNtZDoKKwkvLyBOT1RFIC0gT25seSBqdW1wIHRvIHRoaXMgbGFiZWwgQUZURVIgZ3JhYmJpbmcgdGhlCisJLy8gWG10WmVyb0xvY2ssIGFuZCBETyBOT1QgRFJPUCBJVCBiZXR3ZWVuIHRoZQorCS8vIGNvbW1hbmQgYWxsb2NhdGlvbiBhbmQgdGhlIGZvbGxvd2luZyBhYm9ydC4KKwlpZiAoWG10Q21kKSB7CisJCVNYR19BQk9SVF9DTUQoWG10UmluZ0luZm8pOworCX0KKwlzcGluX3VubG9jaygmYWRhcHRlci0+WG10WmVyb0xvY2spOworCisvLyBmYWlsc2dsOgorCS8vIEp1bXAgdG8gdGhpcyBsYWJlbCBpZiBmYWlsdXJlIG9jY3VycyBiZWZvcmUgdGhlCisJLy8gWG10WmVyb0xvY2sgaXMgZ3JhYmJlZAorCWFkYXB0ZXItPlN0YXRzLlhtdEVycm9ycysrOworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9JTVBPUlRBTlQsICJEdW1TR0ZhbCIsCisJCSAgcFNnbCwgU3hnU2dsLCBYbXRSaW5nSW5mby0+SGVhZCwgWG10UmluZ0luZm8tPlRhaWwpOworCisJU1hHX0NPTVBMRVRFX0RVTUJfU0VORChhZGFwdGVyLCBTeGdTZ2wtPkR1bWJQYWNrZXQpOwkvLyBTeGdTZ2wtPkR1bWJQYWNrZXQgaXMgdGhlIHNrYgorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBMaW5rIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogc3hnX2luaXRpYWxpemVfbGluayAtIEluaXRpYWxpemUgdGhlIGxpbmsgc3R1ZmYKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglzdGF0dXMKKyAqLworc3RhdGljIGludCBzeGdfaW5pdGlhbGl6ZV9saW5rKHBfYWRhcHRlcl90IGFkYXB0ZXIpCit7CisJUFNYR19IV19SRUdTIEh3UmVncyA9IGFkYXB0ZXItPkh3UmVnczsKKwl1MzIgVmFsdWU7CisJdTMyIENvbmZpZ0RhdGE7CisJdTMyIE1heEZyYW1lOworCWludCBzdGF0dXM7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJJbml0TGluayIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisKKwkvLyBSZXNldCBQSFkgYW5kIFhHWFMgbW9kdWxlCisJV1JJVEVfUkVHKEh3UmVncy0+TGlua1N0YXR1cywgTFNfU0VSREVTX1BPV0VSX0RPV04sIFRSVUUpOworCisJLy8gUmVzZXQgdHJhbnNtaXQgY29uZmlndXJhdGlvbiByZWdpc3RlcgorCVdSSVRFX1JFRyhId1JlZ3MtPlhtdENvbmZpZywgWE1UX0NPTkZJR19SRVNFVCwgVFJVRSk7CisKKwkvLyBSZXNldCByZWNlaXZlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIKKwlXUklURV9SRUcoSHdSZWdzLT5SY3ZDb25maWcsIFJDVl9DT05GSUdfUkVTRVQsIFRSVUUpOworCisJLy8gUmVzZXQgYWxsIE1BQyBtb2R1bGVzCisJV1JJVEVfUkVHKEh3UmVncy0+TWFjQ29uZmlnMCwgQVhHTUFDX0NGRzBfU1VCX1JFU0VULCBUUlVFKTsKKworCS8vIExpbmsgYWRkcmVzcyAwCisJLy8gWFhYVE9ETyAtIFRoaXMgYXNzdW1lcyB0aGUgTUFDIGFkZHJlc3MgKDBhOjBiOjBjOjBkOjBlOjBmKQorCS8vIGlzIHN0b3JlZCB3aXRoIHRoZSBmaXJzdCBuaWJibGUgKDBhKSBpbiB0aGUgYnl0ZSAwCisJLy8gb2YgdGhlIE1hYyBhZGRyZXNzLiAgUG9zc2libHkgcmV2ZXJzZT8KKwlWYWx1ZSA9ICoodTMyICopIGFkYXB0ZXItPk1hY0FkZHI7CisJV1JJVEVfUkVHKEh3UmVncy0+TGlua0FkZHJlc3MwTG93LCBWYWx1ZSwgVFJVRSk7CisJLy8gYWxzbyB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gdGhlIE1BQy4gIEVuZGlhbiBpcyByZXZlcnNlZC4KKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBZGRyZXNzTG93LCBudG9obChWYWx1ZSksIFRSVUUpOworCVZhbHVlID0gKCoodTE2ICopICYgYWRhcHRlci0+TWFjQWRkcls0XSAmIDB4MDAwMEZGRkYpOworCVdSSVRFX1JFRyhId1JlZ3MtPkxpbmtBZGRyZXNzMEhpZ2gsIFZhbHVlIHwgTElOS19BRERSRVNTX0VOQUJMRSwgVFJVRSk7CisJLy8gZW5kaWFuIHN3YXAgZm9yIHRoZSBNQUMgKHB1dCBoaWdoIGJ5dGVzIGluIGJpdHMgWzMxOjE2XSwgc3dhcHBlZCkKKwlWYWx1ZSA9IG50b2hsKFZhbHVlKTsKKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBZGRyZXNzSGlnaCwgVmFsdWUsIFRSVUUpOworCS8vIExpbmsgYWRkcmVzcyAxCisJV1JJVEVfUkVHKEh3UmVncy0+TGlua0FkZHJlc3MxTG93LCAwLCBUUlVFKTsKKwlXUklURV9SRUcoSHdSZWdzLT5MaW5rQWRkcmVzczFIaWdoLCAwLCBUUlVFKTsKKwkvLyBMaW5rIGFkZHJlc3MgMgorCVdSSVRFX1JFRyhId1JlZ3MtPkxpbmtBZGRyZXNzMkxvdywgMCwgVFJVRSk7CisJV1JJVEVfUkVHKEh3UmVncy0+TGlua0FkZHJlc3MySGlnaCwgMCwgVFJVRSk7CisJLy8gTGluayBhZGRyZXNzIDMKKwlXUklURV9SRUcoSHdSZWdzLT5MaW5rQWRkcmVzczNMb3csIDAsIFRSVUUpOworCVdSSVRFX1JFRyhId1JlZ3MtPkxpbmtBZGRyZXNzM0hpZ2gsIDAsIFRSVUUpOworCisJLy8gRW5hYmxlIE1BQyBtb2R1bGVzCisJV1JJVEVfUkVHKEh3UmVncy0+TWFjQ29uZmlnMCwgMCwgVFJVRSk7CisKKwkvLyBDb25maWd1cmUgTUFDCisJV1JJVEVfUkVHKEh3UmVncy0+TWFjQ29uZmlnMSwgKEFYR01BQ19DRkcxX1hNVF9QQVVTRSB8CS8vIEFsbG93IHNlbmRpbmcgb2YgcGF1c2UKKwkJCQkgICAgICAgQVhHTUFDX0NGRzFfWE1UX0VOIHwJLy8gRW5hYmxlIFhNVAorCQkJCSAgICAgICBBWEdNQUNfQ0ZHMV9SQ1ZfUEFVU0UgfAkvLyBFbmFibGUgZGV0ZWN0aW9uIG9mIHBhdXNlCisJCQkJICAgICAgIEFYR01BQ19DRkcxX1JDVl9FTiB8CS8vIEVuYWJsZSByZWNlaXZlCisJCQkJICAgICAgIEFYR01BQ19DRkcxX1NIT1JUX0FTU0VSVCB8CS8vIHNob3J0IGZyYW1lIGRldGVjdGlvbgorCQkJCSAgICAgICBBWEdNQUNfQ0ZHMV9DSEVDS19MRU4gfAkvLyBWZXJpZnkgZnJhbWUgbGVuZ3RoCisJCQkJICAgICAgIEFYR01BQ19DRkcxX0dFTl9GQ1MgfAkvLyBHZW5lcmF0ZSBGQ1MKKwkJCQkgICAgICAgQVhHTUFDX0NGRzFfUEFEXzY0KSwJLy8gUGFkIGZyYW1lcyB0byA2NCBieXRlcworCQkgIFRSVUUpOworCisJLy8gU2V0IEFYR01BQyBtYXggZnJhbWUgbGVuZ3RoIGlmIGp1bWJvLiAgTm90IG5lZWRlZCBmb3Igc3RhbmRhcmQgTVRVCisJaWYgKGFkYXB0ZXItPkp1bWJvRW5hYmxlZCkgeworCQlXUklURV9SRUcoSHdSZWdzLT5NYWNNYXhGcmFtZUxlbiwgQVhHTUFDX01BWEZSQU1FX0pVTUJPLCBUUlVFKTsKKwl9CisJLy8gQU1JSU0gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAtCisJLy8gVGhlIHZhbHVlIHBsYWNlZCBpbiB0aGUgQVhHTUFDX0FNSUlNX0NGR19IQUxGX0NMT0NLIHBvcnRpb24KKwkvLyAoYm90dG9tIGJpdHMpIG9mIHRoaXMgcmVnaXN0ZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlCisJLy8gTURDIGZyZXF1ZW5jeSBhcyBzcGVjaWZpZWQgaW4gdGhlIEEtWEdNQUMgRGVzaWduIERvY3VtZW50LgorCS8vIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgemVyby4gIFRoZSBmb2xsb3dpbmcgdmFsdWUgKDYyIG9yIDB4M0UpCisJLy8gaXMgYmFzZWQgb24gb3VyIE1BQyB0cmFuc21pdCBjbG9jayBmcmVxdWVuY3kgKE1UQ0xLKSBvZiAzMTIuNSBNSHouCisJLy8gR2l2ZW4gYSBtYXhpbXVtIE1ESU8gY2xvY2sgZnJlcXVlbmN5IG9mIDIuNSBNSHogKHNlZSB0aGUgUEhZIHNwZWMpLAorCS8vIHdlIGdldDogIDMxMi41LygyKihYKzEpKSA8IDIuNSAgPT0+IFggPSA2Mi4KKwkvLyBUaGlzIHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgcmVnaXN0ZXIsCisJLy8gc28gd2UgcmVhbGx5IGRvbid0IGhhdmUgdG8gZG8gdGhpcy4KKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUNvbmZpZywgMHgwMDAwMDAzRSwgVFJVRSk7CisKKwkvLyBQb3dlciB1cCBhbmQgZW5hYmxlIFBIWSBhbmQgWEFVSS9YR1hTL1NlcmRlcyBsb2dpYworCVdSSVRFX1JFRyhId1JlZ3MtPkxpbmtTdGF0dXMsCisJCSAgKExTX1BIWV9DTFJfUkVTRVQgfAorCQkgICBMU19YR1hTX0VOQUJMRSB8CisJCSAgIExTX1hHWFNfQ1RMIHwgTFNfUEhZX0NMS19FTiB8IExTX0FUVE5fQUxBUk0pLCBUUlVFKTsKKwlEQkdfRVJST1IoIkFmdGVyIFBvd2VyIFVwIGFuZCBlbmFibGUgUEhZIGluIHN4Z19pbml0aWFsaXplX2xpbmtcbiIpOworCisJLy8gUGVyIGluZm9ybWF0aW9uIGdpdmVuIGJ5IEFlbHVyb3MsIHdhaXQgMTAwIG1zIGFmdGVyIHJlbW92aW5nIHJlc2V0LgorCS8vIEl0J3Mgbm90IGVub3VnaCB0byB3YWl0IGZvciB0aGUgc2VsZi1jbGVhcmluZyByZXNldCBiaXQgaW4gcmVnIDAgdG8gY2xlYXIuCisJbWRlbGF5KDEwMCk7CisKKwkvLyBWZXJpZnkgdGhlIFBIWSBoYXMgY29tZSB1cCBieSBjaGVja2luZyB0aGF0IHRoZSBSZXNldCBiaXQgaGFzIGNsZWFyZWQuCisJc3RhdHVzID0gc3hnX3JlYWRfbWRpb19yZWcoYWRhcHRlciwgTUlJTV9ERVZfUEhZX1BNQSwJLy8gUEhZIFBNQS9QTUQgbW9kdWxlCisJCQkJICAgUEhZX1BNQV9DT05UUk9MMSwJLy8gUE1BL1BNRCBjb250cm9sIHJlZ2lzdGVyCisJCQkJICAgJlZhbHVlKTsKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKQorCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKwlpZiAoVmFsdWUgJiBQTUFfQ09OVFJPTDFfUkVTRVQpCS8vIHJlc2V0IGNvbXBsZXRlIGlmIGJpdCBpcyAwCisJCXJldHVybiAoU1RBVFVTX0ZBSUxVUkUpOworCisJLy8gVGhlIFNFUkRFUyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgYnkgbm93IC0gY29uZmlybQorCVJFQURfUkVHKEh3UmVncy0+TGlua1N0YXR1cywgVmFsdWUpOworCWlmIChWYWx1ZSAmIExTX1NFUkRFU19ET1dOKQkvLyB2ZXJpZnkgU0VSREVTIGlzIGluaXRpYWxpemVkCisJCXJldHVybiAoU1RBVFVTX0ZBSUxVUkUpOworCisJLy8gVGhlIFhBVUkgbGluayBzaG91bGQgYWxzbyBiZSB1cCAtIGNvbmZpcm0KKwlpZiAoIShWYWx1ZSAmIExTX1hBVUlfTElOS19VUCkpCS8vIHZlcmlmeSBYQVVJIGxpbmsgaXMgdXAKKwkJcmV0dXJuIChTVEFUVVNfRkFJTFVSRSk7CisKKwkvLyBJbml0aWFsaXplIHRoZSBQSFkKKwlzdGF0dXMgPSBzeGdfcGh5X2luaXQoYWRhcHRlcik7CisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykKKwkJcmV0dXJuIChTVEFUVVNfRkFJTFVSRSk7CisKKwkvLyBFbmFibGUgdGhlIExpbmsgQWxhcm0KKwlzdGF0dXMgPSBzeGdfd3JpdGVfbWRpb19yZWcoYWRhcHRlciwgTUlJTV9ERVZfUEhZX1BNQSwJLy8gUEhZIFBNQS9QTUQgbW9kdWxlCisJCQkJICAgIExBU0lfQ09OVFJPTCwJLy8gTEFTSSBjb250cm9sIHJlZ2lzdGVyCisJCQkJICAgIExBU0lfQ1RMX0xTX0FMQVJNX0VOQUJMRSk7CS8vIGVuYWJsZSBsaW5rIGFsYXJtIGJpdAorCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCXJldHVybiAoU1RBVFVTX0ZBSUxVUkUpOworCisJLy8gWFhYVE9ETyAtIHRlbXBvcmFyeSAtIHZlcmlmeSBiaXQgaXMgc2V0CisJc3RhdHVzID0gc3hnX3JlYWRfbWRpb19yZWcoYWRhcHRlciwgTUlJTV9ERVZfUEhZX1BNQSwJLy8gUEhZIFBNQS9QTUQgbW9kdWxlCisJCQkJICAgTEFTSV9DT05UUk9MLAkvLyBMQVNJIGNvbnRyb2wgcmVnaXN0ZXIKKwkJCQkgICAmVmFsdWUpOworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCXJldHVybiAoU1RBVFVTX0ZBSUxVUkUpOworCWlmICghKFZhbHVlICYgTEFTSV9DVExfTFNfQUxBUk1fRU5BQkxFKSkgeworCQlEQkdfRVJST1IoIkVycm9yISAgTEFTSSBDb250cm9sIEFsYXJtIEVuYWJsZSBiaXQgbm90IHNldCFcbiIpOworCX0KKwkvLyBFbmFibGUgcmVjZWl2ZQorCU1heEZyYW1lID0gYWRhcHRlci0+SnVtYm9FbmFibGVkID8gSlVNQk9NQVhGUkFNRSA6IEVUSEVSTUFYRlJBTUU7CisJQ29uZmlnRGF0YSA9IChSQ1ZfQ09ORklHX0VOQUJMRSB8CisJCSAgICAgIFJDVl9DT05GSUdfRU5QQVJTRSB8CisJCSAgICAgIFJDVl9DT05GSUdfUkNWQkFEIHwKKwkJICAgICAgUkNWX0NPTkZJR19SQ1ZQQVVTRSB8CisJCSAgICAgIFJDVl9DT05GSUdfVFpJUFY2IHwKKwkJICAgICAgUkNWX0NPTkZJR19UWklQVjQgfAorCQkgICAgICBSQ1ZfQ09ORklHX0hBU0hfMTYgfAorCQkgICAgICBSQ1ZfQ09ORklHX1NPQ0tFVCB8IFJDVl9DT05GSUdfQlVGU0laRShNYXhGcmFtZSkpOworCVdSSVRFX1JFRyhId1JlZ3MtPlJjdkNvbmZpZywgQ29uZmlnRGF0YSwgVFJVRSk7CisKKwlXUklURV9SRUcoSHdSZWdzLT5YbXRDb25maWcsIFhNVF9DT05GSUdfRU5BQkxFLCBUUlVFKTsKKworCS8vIE1hcmsgdGhlIGxpbmsgYXMgZG93bi4gIFdlJ2xsIGdldCBhIGxpbmsgZXZlbnQgd2hlbiBpdCBjb21lcyB1cC4KKwlzeGdfbGlua19zdGF0ZShhZGFwdGVyLCBTWEdfTElOS19ET1dOKTsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhJbml0TG5rIiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKKwlyZXR1cm4gKFNUQVRVU19TVUNDRVNTKTsKK30KKworLyoKKyAqIHN4Z19waHlfaW5pdCAtIEluaXRpYWxpemUgdGhlIFBIWQorICoKKyAqIEFyZ3VtZW50cyAtCisgKglhZGFwdGVyCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBSZXR1cm4KKyAqCXN0YXR1cworICovCitzdGF0aWMgaW50IHN4Z19waHlfaW5pdChwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCXUzMiBWYWx1ZTsKKwlQUEhZX1VDT0RFIHA7CisJaW50IHN0YXR1czsKKworCURCR19FUlJPUigiRU5URVIgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkvLyBSZWFkIGEgcmVnaXN0ZXIgdG8gaWRlbnRpZnkgdGhlIFBIWSB0eXBlCisJc3RhdHVzID0gc3hnX3JlYWRfbWRpb19yZWcoYWRhcHRlciwgTUlJTV9ERVZfUEhZX1BNQSwJLy8gUEhZIFBNQS9QTUQgbW9kdWxlCisJCQkJICAgMHhDMjA1LAkvLyBQSFkgSUQgcmVnaXN0ZXIgKD8pCisJCQkJICAgJlZhbHVlKTsJLy8gICAgWFhYVE9ETyAtIGFkZCBkZWYKKwlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKQorCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKworCWlmIChWYWx1ZSA9PSAweDAwMTIpIHsJLy8gMHgwMDEyID09IEFFTDIwMDVDIFBIWSg/KSAtIFhYWFRPRE8gLSBhZGQgZGVmCisJCURCR19FUlJPUgorCQkgICAgKCJBRUwyMDA1QyBQSFkgZGV0ZWN0ZWQuICBEb3dubG9hZGluZyBQSFkgbWljcm9jb2RlLlxuIik7CisKKwkJLy8gSW5pdGlhbGl6ZSBBRUwyMDA1QyBQSFkgYW5kIGRvd25sb2FkIFBIWSBtaWNyb2NvZGUKKwkJZm9yIChwID0gUGh5VWNvZGU7IHAtPkFkZHIgIT0gMHhGRkZGOyBwKyspIHsKKwkJCWlmIChwLT5BZGRyID09IDApIHsKKwkJCQkvLyBpZiBhZGRyZXNzID09IDAsIGRhdGEgPT0gc2xlZXAgdGltZSBpbiBtcworCQkJCW1kZWxheShwLT5EYXRhKTsKKwkJCX0gZWxzZSB7CisJCQkJLy8gd3JpdGUgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzCisJCQkJc3RhdHVzID0gc3hnX3dyaXRlX21kaW9fcmVnKGFkYXB0ZXIsIE1JSU1fREVWX1BIWV9QTUEsCS8vIFBIWSBQTUEvUE1EIG1vZHVsZQorCQkJCQkJCSAgICBwLT5BZGRyLAkvLyBQSFkgYWRkcmVzcworCQkJCQkJCSAgICBwLT5EYXRhKTsJLy8gUEhZIGRhdGEKKwkJCQlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKQorCQkJCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKwkJCX0KKwkJfQorCX0KKwlEQkdfRVJST1IoIkVYSVQgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlyZXR1cm4gKFNUQVRVU19TVUNDRVNTKTsKK30KKworLyoKKyAqIHN4Z19saW5rX2V2ZW50IC0gUHJvY2VzcyBhIGxpbmsgZXZlbnQgbm90aWZpY2F0aW9uIGZyb20gdGhlIGNhcmQKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglOb25lCisgKi8KK3N0YXRpYyB2b2lkIHN4Z19saW5rX2V2ZW50KHBfYWRhcHRlcl90IGFkYXB0ZXIpCit7CisJUFNYR19IV19SRUdTIEh3UmVncyA9IGFkYXB0ZXItPkh3UmVnczsKKwlTWEdfTElOS19TVEFURSBMaW5rU3RhdGU7CisJaW50IHN0YXR1czsKKwl1MzIgVmFsdWU7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJMaW5rRXZudCIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisJREJHX0VSUk9SKCJFTlRFUiAlc1xuIiwgX19GVU5DVElPTl9fKTsKKworCS8vIENoZWNrIHRoZSBMaW5rIFN0YXR1cyByZWdpc3Rlci4gIFdlIHNob3VsZCBoYXZlIGEgTGluayBBbGFybS4KKwlSRUFEX1JFRyhId1JlZ3MtPkxpbmtTdGF0dXMsIFZhbHVlKTsKKwlpZiAoVmFsdWUgJiBMU19MSU5LX0FMQVJNKSB7CisJCS8vIFdlIGdvdCBhIExpbmsgU3RhdHVzIGFsYXJtLiAgRmlyc3QsIHBhdXNlIHRvIGxldCB0aGUKKwkJLy8gbGluayBzdGF0ZSBzZXR0bGUgKGl0IGNhbiBib3VuY2UgYSBudW1iZXIgb2YgdGltZXMpCisJCW1kZWxheSgxMCk7CisKKwkJLy8gTm93IGNsZWFyIHRoZSBhbGFybSBieSByZWFkaW5nIHRoZSBMQVNJIHN0YXR1cyByZWdpc3Rlci4KKwkJc3RhdHVzID0gc3hnX3JlYWRfbWRpb19yZWcoYWRhcHRlciwgTUlJTV9ERVZfUEhZX1BNQSwJLy8gUEhZIFBNQS9QTUQgbW9kdWxlCisJCQkJCSAgIExBU0lfU1RBVFVTLAkvLyBMQVNJIHN0YXR1cyByZWdpc3RlcgorCQkJCQkgICAmVmFsdWUpOworCQlpZiAoc3RhdHVzICE9IFNUQVRVU19TVUNDRVNTKSB7CisJCQlEQkdfRVJST1IoIkVycm9yIHJlYWRpbmcgTEFTSSBTdGF0dXMgTURJTyByZWdpc3RlciFcbiIpOworCQkJc3hnX2xpbmtfc3RhdGUoYWRhcHRlciwgU1hHX0xJTktfRE9XTik7CisvLyAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoMCk7CisJCX0KKwkJQVNTRVJUKFZhbHVlICYgTEFTSV9TVEFUVVNfTFNfQUxBUk0pOworCisJCS8vIE5vdyBnZXQgYW5kIHNldCB0aGUgbGluayBzdGF0ZQorCQlMaW5rU3RhdGUgPSBzeGdfZ2V0X2xpbmtfc3RhdGUoYWRhcHRlcik7CisJCXN4Z19saW5rX3N0YXRlKGFkYXB0ZXIsIExpbmtTdGF0ZSk7CisJCURCR19FUlJPUigiU1hHOiBMaW5rIEFsYXJtIG9jY3VycmVkLiAgTGluayBpcyAlc1xuIiwKKwkJCSAgKChMaW5rU3RhdGUgPT0gU1hHX0xJTktfVVApID8gIlVQIiA6ICJET1dOIikpOworCX0gZWxzZSB7CisJCS8vIFhYWFRPRE8gLSBBc3N1bWluZyBMaW5rIEF0dGVudGlvbiBpcyBvbmx5IGJlaW5nIGdlbmVyYXRlZCBmb3IgdGhlCisJCS8vIExpbmsgQWxhcm0gcGluIChhbmQgbm90IGZvciBhIFhBVUkgTGluayBTdGF0dXMgY2hhbmdlKSwgdGhlbiBpdCdzCisJCS8vIGltcG9zc2libGUgdG8gZ2V0IGhlcmUuICBZZXQgd2UndmUgZ290dGVuIGhlcmUgdHdpY2UgKHVuZGVyIGV4dHJlbWUKKwkJLy8gY29uZGl0aW9ucyAtIGJvdW5jaW5nIHRoZSBsaW5rIHVwIGFuZCBkb3duIG1hbnkgdGltZXMgYSBzZWNvbmQpLgorCQkvLyBOZWVkcyBmdXJ0aGVyIGludmVzdGlnYXRpb24uCisJCURCR19FUlJPUigiU1hHOiBzeGdfbGlua19ldmVudDogQ2FuJ3QgZ2V0IGhlcmUhXG4iKTsKKwkJREJHX0VSUk9SKCJTWEc6IExpbmsgU3RhdHVzID09IDB4JTA4WC5cbiIsIFZhbHVlKTsKKy8vICAgICAgICAgICAgICBBU1NFUlQoMCk7CisJfQorCURCR19FUlJPUigiRVhJVCAlc1xuIiwgX19GVU5DVElPTl9fKTsKKworfQorCisvKgorICogc3hnX2dldF9saW5rX3N0YXRlIC0gRGV0ZXJtaW5lIGlmIHRoZSBsaW5rIGlzIHVwIG9yIGRvd24KKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglMaW5rIFN0YXRlCisgKi8KK3N0YXRpYyBTWEdfTElOS19TVEFURSBzeGdfZ2V0X2xpbmtfc3RhdGUocF9hZGFwdGVyX3QgYWRhcHRlcikKK3sKKwlpbnQgc3RhdHVzOworCXUzMiBWYWx1ZTsKKworCURCR19FUlJPUigiRU5URVIgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJHZXRMaW5rIiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKKworCS8vIFBlciB0aGUgWGVucGFrIHNwZWMgKGFuZCB0aGUgSUVFRSAxMEdiIHNwZWM/KSwgdGhlIGxpbmsgaXMgdXAgaWYKKwkvLyB0aGUgZm9sbG93aW5nIDMgYml0cyAoZnJvbSAzIGRpZmZlcmVudCBNRElPIHJlZ2lzdGVycykgYXJlIGFsbCB0cnVlLgorCXN0YXR1cyA9IHN4Z19yZWFkX21kaW9fcmVnKGFkYXB0ZXIsIE1JSU1fREVWX1BIWV9QTUEsCS8vIFBIWSBQTUEvUE1EIG1vZHVsZQorCQkJCSAgIFBIWV9QTUFfUkNWX0RFVCwJLy8gUE1BL1BNRCBSZWNlaXZlIFNpZ25hbCBEZXRlY3QgcmVnaXN0ZXIKKwkJCQkgICAmVmFsdWUpOworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCWdvdG8gYmFkOworCisJLy8gSWYgUE1BL1BNRCByZWNlaXZlIHNpZ25hbCBkZXRlY3QgaXMgMCwgdGhlbiB0aGUgbGluayBpcyBkb3duCisJaWYgKCEoVmFsdWUgJiBQTUFfUkNWX0RFVEVDVCkpCisJCXJldHVybiAoU1hHX0xJTktfRE9XTik7CisKKwlzdGF0dXMgPSBzeGdfcmVhZF9tZGlvX3JlZyhhZGFwdGVyLCBNSUlNX0RFVl9QSFlfUENTLAkvLyBQSFkgUENTIG1vZHVsZQorCQkJCSAgIFBIWV9QQ1NfMTBHX1NUQVRVUzEsCS8vIFBDUyAxMEdCQVNFLVIgU3RhdHVzIDEgcmVnaXN0ZXIKKwkJCQkgICAmVmFsdWUpOworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCWdvdG8gYmFkOworCisJLy8gSWYgUENTIGlzIG5vdCBsb2NrZWQgdG8gcmVjZWl2ZSBibG9ja3MsIHRoZW4gdGhlIGxpbmsgaXMgZG93bgorCWlmICghKFZhbHVlICYgUENTXzEwQl9CTE9DS19MT0NLKSkKKwkJcmV0dXJuIChTWEdfTElOS19ET1dOKTsKKworCXN0YXR1cyA9IHN4Z19yZWFkX21kaW9fcmVnKGFkYXB0ZXIsIE1JSU1fREVWX1BIWV9YUywJLy8gUEhZIFhTIG1vZHVsZQorCQkJCSAgIFBIWV9YU19MQU5FX1NUQVRVUywJLy8gWFMgTGFuZSBTdGF0dXMgcmVnaXN0ZXIKKwkJCQkgICAmVmFsdWUpOworCWlmIChzdGF0dXMgIT0gU1RBVFVTX1NVQ0NFU1MpCisJCWdvdG8gYmFkOworCisJLy8gSWYgWFMgdHJhbnNtaXQgbGFuZXMgYXJlIG5vdCBhbGlnbmVkLCB0aGVuIHRoZSBsaW5rIGlzIGRvd24KKwlpZiAoIShWYWx1ZSAmIFhTX0xBTkVfQUxJR04pKQorCQlyZXR1cm4gKFNYR19MSU5LX0RPV04pOworCisJLy8gQWxsIDMgYml0cyBhcmUgdHJ1ZSwgc28gdGhlIGxpbmsgaXMgdXAKKwlEQkdfRVJST1IoIkVYSVQgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlyZXR1cm4gKFNYR19MSU5LX1VQKTsKKworICAgICAgYmFkOgorCS8vIEFuIGVycm9yIG9jY3VycmVkIHJlYWRpbmcgYW4gTURJTyByZWdpc3Rlci4gIFRoaXMgc2hvdWxkbid0IGhhcHBlbi4KKwlEQkdfRVJST1IoIkVycm9yIHJlYWRpbmcgYW4gTURJTyByZWdpc3RlciFcbiIpOworCUFTU0VSVCgwKTsKKwlyZXR1cm4gKFNYR19MSU5LX0RPV04pOworfQorCitzdGF0aWMgdm9pZCBzeGdfaW5kaWNhdGVfbGlua19zdGF0ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLAorCQkJCSAgICBTWEdfTElOS19TVEFURSBMaW5rU3RhdGUpCit7CisJaWYgKGFkYXB0ZXItPkxpbmtTdGF0ZSA9PSBTWEdfTElOS19VUCkgeworCQlEQkdfRVJST1IoIiVzOiBMSU5LIG5vdyBVUCwgY2FsbCBuZXRpZl9zdGFydF9xdWV1ZVxuIiwKKwkJCSAgX19GVU5DVElPTl9fKTsKKwkJbmV0aWZfc3RhcnRfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKKwl9IGVsc2UgeworCQlEQkdfRVJST1IoIiVzOiBMSU5LIG5vdyBET1dOLCBjYWxsIG5ldGlmX3N0b3BfcXVldWVcbiIsCisJCQkgIF9fRlVOQ1RJT05fXyk7CisJCW5ldGlmX3N0b3BfcXVldWUoYWRhcHRlci0+bmV0ZGV2KTsKKwl9Cit9CisKKy8qCisgKiBzeGdfbGlua19zdGF0ZSAtIFNldCB0aGUgbGluayBzdGF0ZSBhbmQgaWYgbmVjZXNzYXJ5LCBpbmRpY2F0ZS4KKyAqCVRoaXMgcm91dGluZSB0aGUgY2VudHJhbCBwb2ludCBvZiBwcm9jZXNzaW5nIGZvciBhbGwgbGluayBzdGF0ZSBjaGFuZ2VzLgorICoJTm90aGluZyBlbHNlIGluIHRoZSBkcml2ZXIgc2hvdWxkIGFsdGVyIHRoZSBsaW5rIHN0YXRlIG9yIHBlcmZvcm0KKyAqCWxpbmsgc3RhdGUgaW5kaWNhdGlvbnMKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKglMaW5rU3RhdGUgCS0gVGhlIGxpbmsgc3RhdGUKKyAqCisgKiBSZXR1cm4KKyAqCU5vbmUKKyAqLworc3RhdGljIHZvaWQgc3hnX2xpbmtfc3RhdGUocF9hZGFwdGVyX3QgYWRhcHRlciwgU1hHX0xJTktfU1RBVEUgTGlua1N0YXRlKQoreworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9JTVBPUlRBTlQsICJMbmtJTkRDVCIsCisJCSAgYWRhcHRlciwgTGlua1N0YXRlLCBhZGFwdGVyLT5MaW5rU3RhdGUsIGFkYXB0ZXItPlN0YXRlKTsKKworCURCR19FUlJPUigiRU5URVIgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkvLyBIb2xkIHRoZSBhZGFwdGVyIGxvY2sgZHVyaW5nIHRoaXMgcm91dGluZS4gIE1heWJlIG1vdmUKKwkvLyB0aGUgbG9jayB0byB0aGUgY2FsbGVyLgorCXNwaW5fbG9jaygmYWRhcHRlci0+QWRhcHRlckxvY2spOworCWlmIChMaW5rU3RhdGUgPT0gYWRhcHRlci0+TGlua1N0YXRlKSB7CisJCS8vIE5vdGhpbmcgY2hhbmdlZC4uCisJCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5BZGFwdGVyTG9jayk7CisJCURCR19FUlJPUigiRVhJVCAjMCAlc1xuIiwgX19GVU5DVElPTl9fKTsKKwkJcmV0dXJuOworCX0KKwkvLyBTYXZlIHRoZSBhZGFwdGVyIHN0YXRlCisJYWRhcHRlci0+TGlua1N0YXRlID0gTGlua1N0YXRlOworCisJLy8gRHJvcCB0aGUgbG9jayBhbmQgaW5kaWNhdGUgbGluayBzdGF0ZQorCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5BZGFwdGVyTG9jayk7CisJREJHX0VSUk9SKCJFWElUICMxICVzXG4iLCBfX0ZVTkNUSU9OX18pOworCisJc3hnX2luZGljYXRlX2xpbmtfc3RhdGUoYWRhcHRlciwgTGlua1N0YXRlKTsKK30KKworLyoKKyAqIHN4Z193cml0ZV9tZGlvX3JlZyAtIFdyaXRlIHRvIGEgcmVnaXN0ZXIgb24gdGhlIE1ESU8gYnVzCisgKgorICogQXJndW1lbnRzIC0KKyAqCWFkYXB0ZXIJCS0gQSBwb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICogIERldkFkZHIgICAgIC0gTURJTyBkZXZpY2UgbnVtYmVyIGJlaW5nIGFkZHJlc3NlZAorICogIFJlZ0FkZHIgICAgIC0gcmVnaXN0ZXIgYWRkcmVzcyBmb3IgdGhlIHNwZWNpZmllZCBNRElPIGRldmljZQorICogIFZhbHVlCQktIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBNRElPIHJlZ2lzdGVyCisgKgorICogUmV0dXJuCisgKglzdGF0dXMKKyAqLworc3RhdGljIGludCBzeGdfd3JpdGVfbWRpb19yZWcocF9hZGFwdGVyX3QgYWRhcHRlciwKKwkJCSAgICAgIHUzMiBEZXZBZGRyLCB1MzIgUmVnQWRkciwgdTMyIFZhbHVlKQoreworCVBTWEdfSFdfUkVHUyBId1JlZ3MgPSBhZGFwdGVyLT5Id1JlZ3M7CisJdTMyIEFkZHJPcDsJCS8vIEFkZHJlc3Mgb3BlcmF0aW9uICh3cml0dGVuIHRvIE1JSU0gZmllbGQgcmVnKQorCXUzMiBXcml0ZU9wOwkJLy8gV3JpdGUgb3BlcmF0aW9uICh3cml0dGVuIHRvIE1JSU0gZmllbGQgcmVnKQorCXUzMiBDbWQ7CQkvLyBDb21tYW5kICh3cml0dGVuIHRvIE1JSU0gY29tbWFuZCByZWcpCisJdTMyIFZhbHVlUmVhZDsKKwl1MzIgVGltZW91dDsKKworLy8gIERCR19FUlJPUigiRU5URVIgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJXcnRNRElPIiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKKworCS8vIEVuc3VyZSB2YWx1ZXMgZG9uJ3QgZXhjZWVkIGZpZWxkIHdpZHRoCisJRGV2QWRkciAmPSAweDAwMUY7CS8vIDUtYml0IGZpZWxkCisJUmVnQWRkciAmPSAweEZGRkY7CS8vIDE2LWJpdCBmaWVsZAorCVZhbHVlICY9IDB4RkZGRjsJLy8gMTYtYml0IGZpZWxkCisKKwkvLyBTZXQgTUlJTSBmaWVsZCByZWdpc3RlciBiaXRzIGZvciBhbiBNSUlNIGFkZHJlc3Mgb3BlcmF0aW9uCisJQWRkck9wID0gKE1JSU1fUE9SVF9OVU0gPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX1BPUlRfU0hJRlQpIHwKKwkgICAgKERldkFkZHIgPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX0RFVl9TSElGVCkgfAorCSAgICAoTUlJTV9UQV8xMEdCIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9UQV9TSElGVCkgfAorCSAgICAoTUlJTV9PUF9BRERSIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9PUF9TSElGVCkgfCBSZWdBZGRyOworCisJLy8gU2V0IE1JSU0gZmllbGQgcmVnaXN0ZXIgYml0cyBmb3IgYW4gTUlJTSB3cml0ZSBvcGVyYXRpb24KKwlXcml0ZU9wID0gKE1JSU1fUE9SVF9OVU0gPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX1BPUlRfU0hJRlQpIHwKKwkgICAgKERldkFkZHIgPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX0RFVl9TSElGVCkgfAorCSAgICAoTUlJTV9UQV8xMEdCIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9UQV9TSElGVCkgfAorCSAgICAoTUlJTV9PUF9XUklURSA8PCBBWEdNQUNfQU1JSU1fRklFTERfT1BfU0hJRlQpIHwgVmFsdWU7CisKKwkvLyBTZXQgTUlJTSBjb21tYW5kIHJlZ2lzdGVyIGJpdHMgdG8gZXhlY3V0ZSBhbiBNSUlNIGNvbW1hbmQKKwlDbWQgPSBBWEdNQUNfQU1JSU1fQ01EX1NUQVJUIHwgQVhHTUFDX0FNSUlNX0NNRF8xMEdfT1BFUkFUSU9OOworCisJLy8gUmVzZXQgdGhlIGNvbW1hbmQgcmVnaXN0ZXIgY29tbWFuZCBiaXQgKGluIGNhc2UgaXQncyBub3QgMCkKKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUNtZCwgMCwgVFJVRSk7CisKKwkvLyBNSUlNIHdyaXRlIHRvIHNldCB0aGUgYWRkcmVzcyBvZiB0aGUgc3BlY2lmaWVkIE1ESU8gcmVnaXN0ZXIKKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUZpZWxkLCBBZGRyT3AsIFRSVUUpOworCisJLy8gV3JpdGUgdG8gTUlJTSBDb21tYW5kIFJlZ2lzdGVyIHRvIGV4ZWN1dGUgdG8gYWRkcmVzcyBvcGVyYXRpb24KKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUNtZCwgQ21kLCBUUlVFKTsKKworCS8vIFBvbGwgQU1JSU0gSW5kaWNhdG9yIHJlZ2lzdGVyIHRvIHdhaXQgZm9yIGNvbXBsZXRpb24KKwlUaW1lb3V0ID0gU1hHX0xJTktfVElNRU9VVDsKKwlkbyB7CisJCXVkZWxheSgxMDApOwkvLyBUaW1lb3V0IGluIDEwMHVzIHVuaXRzCisJCVJFQURfUkVHKEh3UmVncy0+TWFjQW1paW1JbmRpY2F0b3IsIFZhbHVlUmVhZCk7CisJCWlmICgtLVRpbWVvdXQgPT0gMCkgeworCQkJcmV0dXJuIChTVEFUVVNfRkFJTFVSRSk7CisJCX0KKwl9IHdoaWxlIChWYWx1ZVJlYWQgJiBBWEdNQUNfQU1JSU1fSU5EQ19CVVNZKTsKKworCS8vIFJlc2V0IHRoZSBjb21tYW5kIHJlZ2lzdGVyIGNvbW1hbmQgYml0CisJV1JJVEVfUkVHKEh3UmVncy0+TWFjQW1paW1DbWQsIDAsIFRSVUUpOworCisJLy8gTUlJTSB3cml0ZSB0byBzZXQgdXAgYW4gTURJTyB3cml0ZSBvcGVyYXRpb24KKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUZpZWxkLCBXcml0ZU9wLCBUUlVFKTsKKworCS8vIFdyaXRlIHRvIE1JSU0gQ29tbWFuZCBSZWdpc3RlciB0byBleGVjdXRlIHRoZSB3cml0ZSBvcGVyYXRpb24KKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUNtZCwgQ21kLCBUUlVFKTsKKworCS8vIFBvbGwgQU1JSU0gSW5kaWNhdG9yIHJlZ2lzdGVyIHRvIHdhaXQgZm9yIGNvbXBsZXRpb24KKwlUaW1lb3V0ID0gU1hHX0xJTktfVElNRU9VVDsKKwlkbyB7CisJCXVkZWxheSgxMDApOwkvLyBUaW1lb3V0IGluIDEwMHVzIHVuaXRzCisJCVJFQURfUkVHKEh3UmVncy0+TWFjQW1paW1JbmRpY2F0b3IsIFZhbHVlUmVhZCk7CisJCWlmICgtLVRpbWVvdXQgPT0gMCkgeworCQkJcmV0dXJuIChTVEFUVVNfRkFJTFVSRSk7CisJCX0KKwl9IHdoaWxlIChWYWx1ZVJlYWQgJiBBWEdNQUNfQU1JSU1fSU5EQ19CVVNZKTsKKworLy8gIERCR19FUlJPUigiRVhJVCAlc1xuIiwgX19GVU5DVElPTl9fKTsKKworCXJldHVybiAoU1RBVFVTX1NVQ0NFU1MpOworfQorCisvKgorICogc3hnX3JlYWRfbWRpb19yZWcgLSBSZWFkIGEgcmVnaXN0ZXIgb24gdGhlIE1ESU8gYnVzCisgKgorICogQXJndW1lbnRzIC0KKyAqCWFkYXB0ZXIJCS0gQSBwb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICogIERldkFkZHIgICAgIC0gTURJTyBkZXZpY2UgbnVtYmVyIGJlaW5nIGFkZHJlc3NlZAorICogIFJlZ0FkZHIgICAgIC0gcmVnaXN0ZXIgYWRkcmVzcyBmb3IgdGhlIHNwZWNpZmllZCBNRElPIGRldmljZQorICogIHBWYWx1ZQkJLSBwb2ludGVyIHRvIHdoZXJlIHRvIHB1dCBkYXRhIHJlYWQgZnJvbSB0aGUgTURJTyByZWdpc3RlcgorICoKKyAqIFJldHVybgorICoJc3RhdHVzCisgKi8KK3N0YXRpYyBpbnQgc3hnX3JlYWRfbWRpb19yZWcocF9hZGFwdGVyX3QgYWRhcHRlciwKKwkJCSAgICAgdTMyIERldkFkZHIsIHUzMiBSZWdBZGRyLCB1MzIgKnBWYWx1ZSkKK3sKKwlQU1hHX0hXX1JFR1MgSHdSZWdzID0gYWRhcHRlci0+SHdSZWdzOworCXUzMiBBZGRyT3A7CQkvLyBBZGRyZXNzIG9wZXJhdGlvbiAod3JpdHRlbiB0byBNSUlNIGZpZWxkIHJlZykKKwl1MzIgUmVhZE9wOwkJLy8gUmVhZCBvcGVyYXRpb24gKHdyaXR0ZW4gdG8gTUlJTSBmaWVsZCByZWcpCisJdTMyIENtZDsJCS8vIENvbW1hbmQgKHdyaXR0ZW4gdG8gTUlJTSBjb21tYW5kIHJlZykKKwl1MzIgVmFsdWVSZWFkOworCXUzMiBUaW1lb3V0OworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiV3J0TURJTyIsCisJCSAgYWRhcHRlciwgMCwgMCwgMCk7CisvLyAgREJHX0VSUk9SKCJFTlRFUiAlc1xuIiwgX19GVU5DVElPTl9fKTsKKworCS8vIEVuc3VyZSB2YWx1ZXMgZG9uJ3QgZXhjZWVkIGZpZWxkIHdpZHRoCisJRGV2QWRkciAmPSAweDAwMUY7CS8vIDUtYml0IGZpZWxkCisJUmVnQWRkciAmPSAweEZGRkY7CS8vIDE2LWJpdCBmaWVsZAorCisJLy8gU2V0IE1JSU0gZmllbGQgcmVnaXN0ZXIgYml0cyBmb3IgYW4gTUlJTSBhZGRyZXNzIG9wZXJhdGlvbgorCUFkZHJPcCA9IChNSUlNX1BPUlRfTlVNIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9QT1JUX1NISUZUKSB8CisJICAgIChEZXZBZGRyIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9ERVZfU0hJRlQpIHwKKwkgICAgKE1JSU1fVEFfMTBHQiA8PCBBWEdNQUNfQU1JSU1fRklFTERfVEFfU0hJRlQpIHwKKwkgICAgKE1JSU1fT1BfQUREUiA8PCBBWEdNQUNfQU1JSU1fRklFTERfT1BfU0hJRlQpIHwgUmVnQWRkcjsKKworCS8vIFNldCBNSUlNIGZpZWxkIHJlZ2lzdGVyIGJpdHMgZm9yIGFuIE1JSU0gcmVhZCBvcGVyYXRpb24KKwlSZWFkT3AgPSAoTUlJTV9QT1JUX05VTSA8PCBBWEdNQUNfQU1JSU1fRklFTERfUE9SVF9TSElGVCkgfAorCSAgICAoRGV2QWRkciA8PCBBWEdNQUNfQU1JSU1fRklFTERfREVWX1NISUZUKSB8CisJICAgIChNSUlNX1RBXzEwR0IgPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX1RBX1NISUZUKSB8CisJICAgIChNSUlNX09QX1JFQUQgPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX09QX1NISUZUKTsKKworCS8vIFNldCBNSUlNIGNvbW1hbmQgcmVnaXN0ZXIgYml0cyB0byBleGVjdXRlIGFuIE1JSU0gY29tbWFuZAorCUNtZCA9IEFYR01BQ19BTUlJTV9DTURfU1RBUlQgfCBBWEdNQUNfQU1JSU1fQ01EXzEwR19PUEVSQVRJT047CisKKwkvLyBSZXNldCB0aGUgY29tbWFuZCByZWdpc3RlciBjb21tYW5kIGJpdCAoaW4gY2FzZSBpdCdzIG5vdCAwKQorCVdSSVRFX1JFRyhId1JlZ3MtPk1hY0FtaWltQ21kLCAwLCBUUlVFKTsKKworCS8vIE1JSU0gd3JpdGUgdG8gc2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBzcGVjaWZpZWQgTURJTyByZWdpc3RlcgorCVdSSVRFX1JFRyhId1JlZ3MtPk1hY0FtaWltRmllbGQsIEFkZHJPcCwgVFJVRSk7CisKKwkvLyBXcml0ZSB0byBNSUlNIENvbW1hbmQgUmVnaXN0ZXIgdG8gZXhlY3V0ZSB0byBhZGRyZXNzIG9wZXJhdGlvbgorCVdSSVRFX1JFRyhId1JlZ3MtPk1hY0FtaWltQ21kLCBDbWQsIFRSVUUpOworCisJLy8gUG9sbCBBTUlJTSBJbmRpY2F0b3IgcmVnaXN0ZXIgdG8gd2FpdCBmb3IgY29tcGxldGlvbgorCVRpbWVvdXQgPSBTWEdfTElOS19USU1FT1VUOworCWRvIHsKKwkJdWRlbGF5KDEwMCk7CS8vIFRpbWVvdXQgaW4gMTAwdXMgdW5pdHMKKwkJUkVBRF9SRUcoSHdSZWdzLT5NYWNBbWlpbUluZGljYXRvciwgVmFsdWVSZWFkKTsKKwkJaWYgKC0tVGltZW91dCA9PSAwKSB7CisJCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKwkJfQorCX0gd2hpbGUgKFZhbHVlUmVhZCAmIEFYR01BQ19BTUlJTV9JTkRDX0JVU1kpOworCisJLy8gUmVzZXQgdGhlIGNvbW1hbmQgcmVnaXN0ZXIgY29tbWFuZCBiaXQKKwlXUklURV9SRUcoSHdSZWdzLT5NYWNBbWlpbUNtZCwgMCwgVFJVRSk7CisKKwkvLyBNSUlNIHdyaXRlIHRvIHNldCB1cCBhbiBNRElPIHJlZ2lzdGVyIHJlYWQgb3BlcmF0aW9uCisJV1JJVEVfUkVHKEh3UmVncy0+TWFjQW1paW1GaWVsZCwgUmVhZE9wLCBUUlVFKTsKKworCS8vIFdyaXRlIHRvIE1JSU0gQ29tbWFuZCBSZWdpc3RlciB0byBleGVjdXRlIHRoZSByZWFkIG9wZXJhdGlvbgorCVdSSVRFX1JFRyhId1JlZ3MtPk1hY0FtaWltQ21kLCBDbWQsIFRSVUUpOworCisJLy8gUG9sbCBBTUlJTSBJbmRpY2F0b3IgcmVnaXN0ZXIgdG8gd2FpdCBmb3IgY29tcGxldGlvbgorCVRpbWVvdXQgPSBTWEdfTElOS19USU1FT1VUOworCWRvIHsKKwkJdWRlbGF5KDEwMCk7CS8vIFRpbWVvdXQgaW4gMTAwdXMgdW5pdHMKKwkJUkVBRF9SRUcoSHdSZWdzLT5NYWNBbWlpbUluZGljYXRvciwgVmFsdWVSZWFkKTsKKwkJaWYgKC0tVGltZW91dCA9PSAwKSB7CisJCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKwkJfQorCX0gd2hpbGUgKFZhbHVlUmVhZCAmIEFYR01BQ19BTUlJTV9JTkRDX0JVU1kpOworCisJLy8gUmVhZCB0aGUgTURJTyByZWdpc3RlciBkYXRhIGJhY2sgZnJvbSB0aGUgZmllbGQgcmVnaXN0ZXIKKwlSRUFEX1JFRyhId1JlZ3MtPk1hY0FtaWltRmllbGQsICpwVmFsdWUpOworCSpwVmFsdWUgJj0gMHhGRkZGOwkvLyBkYXRhIGlzIGluIHRoZSBsb3dlciAxNiBiaXRzCisKKy8vICBEQkdfRVJST1IoIkVYSVQgJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwlyZXR1cm4gKFNUQVRVU19TVUNDRVNTKTsKK30KKworLyoKKyAqICBBbGxvY2F0ZSBhIG1jYXN0X2FkZHJlc3Mgc3RydWN0dXJlIHRvIGhvbGQgdGhlIG11bHRpY2FzdCBhZGRyZXNzLgorICogIExpbmsgaXQgaW4uCisgKi8KK3N0YXRpYyBpbnQgc3hnX21jYXN0X2FkZF9saXN0KHBfYWRhcHRlcl90IGFkYXB0ZXIsIGNoYXIgKmFkZHJlc3MpCit7CisJcF9tY2FzdF9hZGRyZXNzX3QgbWNhZGRyLCBtbGlzdDsKKwlib29sIGVxdWFsYWRkcjsKKworCS8qIENoZWNrIHRvIHNlZSBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLworCW1saXN0ID0gYWRhcHRlci0+bWNhc3RhZGRyczsKKwl3aGlsZSAobWxpc3QpIHsKKwkJRVRIRVJfRVFfQUREUihtbGlzdC0+YWRkcmVzcywgYWRkcmVzcywgZXF1YWxhZGRyKTsKKwkJaWYgKGVxdWFsYWRkcikgeworCQkJcmV0dXJuIChTVEFUVVNfU1VDQ0VTUyk7CisJCX0KKwkJbWxpc3QgPSBtbGlzdC0+bmV4dDsKKwl9CisKKwkvKiBEb2Vzbid0IGFscmVhZHkgZXhpc3QuICBBbGxvY2F0ZSBhIHN0cnVjdHVyZSB0byBob2xkIGl0ICovCisJbWNhZGRyID0ga21hbGxvYyhzaXplb2YobWNhc3RfYWRkcmVzc190KSwgR0ZQX0FUT01JQyk7CisJaWYgKG1jYWRkciA9PSBOVUxMKQorCQlyZXR1cm4gMTsKKworCW1lbWNweShtY2FkZHItPmFkZHJlc3MsIGFkZHJlc3MsIDYpOworCisJbWNhZGRyLT5uZXh0ID0gYWRhcHRlci0+bWNhc3RhZGRyczsKKwlhZGFwdGVyLT5tY2FzdGFkZHJzID0gbWNhZGRyOworCisJcmV0dXJuIChTVEFUVVNfU1VDQ0VTUyk7Cit9CisKKy8qCisgKiBGdW5jdGlvbnMgdG8gb2J0YWluIHRoZSBDUkMgY29ycmVzcG9uZGluZyB0byB0aGUgZGVzdGluYXRpb24gbWFjIGFkZHJlc3MuCisgKiBUaGlzIGlzIGEgc3RhbmRhcmQgZXRoZXJuZXQgQ1JDIGluIHRoYXQgaXQgaXMgYSAzMi1iaXQsIHJlZmxlY3RlZCBDUkMgdXNpbmcKKyAqIHRoZSBwb2x5bm9taWFsOgorICogICB4XjMyICsgeF4yNiArIHheMjMgKyB4XjIyICsgeF4xNiArIHheMTIgKyB4XjExICsgeF4xMCArIHheOCArIHheNyArIHheNSArIHheNCArIHheMiArIHheMS4KKyAqCisgKiBBZnRlciB0aGUgQ1JDIGZvciB0aGUgNiBieXRlcyBpcyBnZW5lcmF0ZWQgKGJ1dCBiZWZvcmUgdGhlIHZhbHVlIGlzIGNvbXBsZW1lbnRlZCksCisgKiB3ZSBtdXN0IHRoZW4gdHJhbnNwb3NlIHRoZSB2YWx1ZSBhbmQgcmV0dXJuIGJpdHMgMzAtMjMuCisgKgorICovCitzdGF0aWMgdTMyIHN4Z19jcmNfdGFibGVbMjU2XTsJLyogVGFibGUgb2YgQ1JDJ3MgZm9yIGFsbCBwb3NzaWJsZSBieXRlIHZhbHVlcyAqLworc3RhdGljIHUzMiBzeGdfY3JjX2luaXQ7CS8qIElzIHRhYmxlIGluaXRpYWxpemVkICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworLyoKKyAqICBDb250cnVjdCB0aGUgQ1JDMzIgdGFibGUKKyAqLworc3RhdGljIHZvaWQgc3hnX21jYXN0X2luaXRfY3JjMzIodm9pZCkKK3sKKwl1MzIgYzsJCQkvKiAgQ1JDIHNoaXQgcmVnICAgICAgICAgICAgICAgICAqLworCXUzMiBlID0gMDsJCS8qICBQb2x5IFgtb3IgcGF0dGVybiAgICAgICAgICAgICovCisJaW50IGk7CQkJLyogIGNvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgKi8KKwlpbnQgazsJCQkvKiAgYnl0ZSBiZWluZyBzaGlmdGVkIGludG8gY3JjICAqLworCisJc3RhdGljIGludCBwW10gPSB7IDAsIDEsIDIsIDQsIDUsIDcsIDgsIDEwLCAxMSwgMTIsIDE2LCAyMiwgMjMsIDI2IH07CisKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHApIC8gc2l6ZW9mKGludCk7IGkrKykgeworCQllIHw9IDFMIDw8ICgzMSAtIHBbaV0pOworCX0KKworCWZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworCQljID0gaTsKKwkJZm9yIChrID0gODsgazsgay0tKSB7CisJCQljID0gYyAmIDEgPyAoYyA+PiAxKSBeIGUgOiBjID4+IDE7CisJCX0KKwkJc3hnX2NyY190YWJsZVtpXSA9IGM7CisJfQorfQorCisvKgorICogIFJldHVybiB0aGUgTUFDIGhhc3QgYXMgZGVzY3JpYmVkIGFib3ZlLgorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBzeGdfbWNhc3RfZ2V0X21hY19oYXNoKGNoYXIgKm1hY2FkZHIpCit7CisJdTMyIGNyYzsKKwljaGFyICpwOworCWludCBpOworCXVuc2lnbmVkIGNoYXIgbWFjaGFzaCA9IDA7CisKKwlpZiAoIXN4Z19jcmNfaW5pdCkgeworCQlzeGdfbWNhc3RfaW5pdF9jcmMzMigpOworCQlzeGdfY3JjX2luaXQgPSAxOworCX0KKworCWNyYyA9IDB4RkZGRkZGRkY7CS8qIFByZWxvYWQgc2hpZnQgcmVnaXN0ZXIsIHBlciBjcmMtMzIgc3BlYyAqLworCWZvciAoaSA9IDAsIHAgPSBtYWNhZGRyOyBpIDwgNjsgKytwLCArK2kpIHsKKwkJY3JjID0gKGNyYyA+PiA4KSBeIHN4Z19jcmNfdGFibGVbKGNyYyBeICpwKSAmIDB4RkZdOworCX0KKworCS8qIFJldHVybiBiaXRzIDEtOCwgdHJhbnNwb3NlZCAqLworCWZvciAoaSA9IDE7IGkgPCA5OyBpKyspIHsKKwkJbWFjaGFzaCB8PSAoKChjcmMgPj4gaSkgJiAxKSA8PCAoOCAtIGkpKTsKKwl9CisKKwlyZXR1cm4gKG1hY2hhc2gpOworfQorCitzdGF0aWMgdm9pZCBzeGdfbWNhc3Rfc2V0X2JpdChwX2FkYXB0ZXJfdCBhZGFwdGVyLCBjaGFyICphZGRyZXNzKQoreworCXVuc2lnbmVkIGNoYXIgY3JjcG9seTsKKworCS8qIEdldCB0aGUgQ1JDIHBvbHlub21pYWwgZm9yIHRoZSBtYWMgYWRkcmVzcyAqLworCWNyY3BvbHkgPSBzeGdfbWNhc3RfZ2V0X21hY19oYXNoKGFkZHJlc3MpOworCisJLyogV2Ugb25seSBoYXZlIHNwYWNlIG9uIHRoZSBTTElDIGZvciA2NCBlbnRyaWVzLiAgTG9wCisJICogb2ZmIHRoZSB0b3AgdHdvIGJpdHMuICgyXjYgPSA2NCkKKwkgKi8KKwljcmNwb2x5ICY9IDB4M0Y7CisKKwkvKiBPUiBpbiB0aGUgbmV3IGJpdCBpbnRvIG91ciA2NCBiaXQgbWFzay4gKi8KKwlhZGFwdGVyLT5NdWx0aWNhc3RNYXNrIHw9ICh1NjQpIDEgPDwgY3JjcG9seTsKK30KKworc3RhdGljIHZvaWQgc3hnX21jYXN0X3NldF9saXN0KHBfbmV0X2RldmljZSBkZXYpCit7CisjaWYgWFhYVE9ETworCXBfYWRhcHRlcl90IGFkYXB0ZXIgPSAocF9hZGFwdGVyX3QpIG5ldGRldl9wcml2KGRldik7CisJaW50IHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCWludCBpOworCWNoYXIgKmFkZHJlc3NlczsKKwlzdHJ1Y3QgZGV2X21jX2xpc3QgKm1jX2xpc3QgPSBkZXYtPm1jX2xpc3Q7CisJaW50IG1jX2NvdW50ID0gZGV2LT5tY19jb3VudDsKKworCUFTU0VSVChhZGFwdGVyKTsKKworCWZvciAoaSA9IDE7IGkgPD0gbWNfY291bnQ7IGkrKykgeworCQlhZGRyZXNzZXMgPSAoY2hhciAqKSZtY19saXN0LT5kbWlfYWRkcjsKKwkJaWYgKG1jX2xpc3QtPmRtaV9hZGRybGVuID09IDYpIHsKKwkJCXN0YXR1cyA9IHN4Z19tY2FzdF9hZGRfbGlzdChhZGFwdGVyLCBhZGRyZXNzZXMpOworCQkJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQkJCWJyZWFrOworCQkJfQorCQl9IGVsc2UgeworCQkJc3RhdHVzID0gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9CisJCXN4Z19tY2FzdF9zZXRfYml0KGFkYXB0ZXIsIGFkZHJlc3Nlcyk7CisJCW1jX2xpc3QgPSBtY19saXN0LT5uZXh0OworCX0KKworCURCR19FUlJPUigiJXMgYS0+ZGV2ZmxhZ3NfcHJldlsleF0gZGV2LT5mbGFnc1sleF0gc3RhdHVzWyV4XVxuIiwKKwkJICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXItPmRldmZsYWdzX3ByZXYsIGRldi0+ZmxhZ3MsIHN0YXR1cyk7CisJaWYgKGFkYXB0ZXItPmRldmZsYWdzX3ByZXYgIT0gZGV2LT5mbGFncykgeworCQlhZGFwdGVyLT5tYWNvcHRzID0gTUFDX0RJUkVDVEVEOworCQlpZiAoZGV2LT5mbGFncykgeworCQkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfQlJPQURDQVNUKSB7CisJCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfQkNBU1Q7CisJCQl9CisJCQlpZiAoZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSB7CisJCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfUFJPTUlTQzsKKwkJCX0KKwkJCWlmIChkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSB7CisJCQkJYWRhcHRlci0+bWFjb3B0cyB8PSBNQUNfQUxMTUNBU1Q7CisJCQl9CisJCQlpZiAoZGV2LT5mbGFncyAmIElGRl9NVUxUSUNBU1QpIHsKKwkJCQlhZGFwdGVyLT5tYWNvcHRzIHw9IE1BQ19NQ0FTVDsKKwkJCX0KKwkJfQorCQlhZGFwdGVyLT5kZXZmbGFnc19wcmV2ID0gZGV2LT5mbGFnczsKKwkJREJHX0VSUk9SKCIlcyBjYWxsIHN4Z19jb25maWdfc2V0IGFkYXB0ZXItPm1hY29wdHNbJXhdXG4iLAorCQkJICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXItPm1hY29wdHMpOworCQlzeGdfY29uZmlnX3NldChhZGFwdGVyLCBUUlVFKTsKKwl9IGVsc2UgeworCQlpZiAoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKSB7CisJCQlzeGdfbWNhc3Rfc2V0X21hc2soYWRhcHRlcik7CisJCX0KKwl9CisjZW5kaWYKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN4Z19tY2FzdF9zZXRfbWFzayhwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCVBTWEdfVUNPREVfUkVHUyBzeGdfcmVncyA9IGFkYXB0ZXItPlVjb2RlUmVnczsKKworCURCR19FUlJPUigiJXMgRU5URVIgKCVzKSBtYWNvcHRzWyV4XSBtYXNrWyVsbHhdXG4iLCBfX0ZVTkNUSU9OX18sCisJCSAgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCAodW5zaWduZWQgaW50KWFkYXB0ZXItPk1hY0ZpbHRlciwKKwkJICBhZGFwdGVyLT5NdWx0aWNhc3RNYXNrKTsKKworCWlmIChhZGFwdGVyLT5NYWNGaWx0ZXIgJiAoTUFDX0FMTE1DQVNUIHwgTUFDX1BST01JU0MpKSB7CisJCS8qIFR1cm4gb24gYWxsIG11bHRpY2FzdCBhZGRyZXNzZXMuIFdlIGhhdmUgdG8gZG8gdGhpcyBmb3IgcHJvbWlzY3VvdXMKKwkJICogbW9kZSBhcyB3ZWxsIGFzIEFMTE1DQVNUIG1vZGUuICBJdCBzYXZlcyB0aGUgTWljcm9jb2RlIGZyb20gaGF2aW5nCisJCSAqIHRvIGtlZXAgc3RhdGUgYWJvdXQgdGhlIE1BQyBjb25maWd1cmF0aW9uLgorCQkgKi8KKy8vICAgICAgICAgICAgICBEQkdfRVJST1IoInN4ZzogJXMgbWFjb3B0cyA9IE1BQ19BTExNQ0FTVCB8IE1BQ19QUk9NSVNDXG4gICAgICBTTFVUIE1PREUhISFcbiIsX19GVU5DVElPTl9fKTsKKwkJV1JJVEVfUkVHKHN4Z19yZWdzLT5NY2FzdExvdywgMHhGRkZGRkZGRiwgRkxVU0gpOworCQlXUklURV9SRUcoc3hnX3JlZ3MtPk1jYXN0SGlnaCwgMHhGRkZGRkZGRiwgRkxVU0gpOworLy8gICAgICAgIERCR19FUlJPUigiJXMgKCVzKSBXUklURSB0byBzbGljX3JlZ3Mgc2xpY19tY2FzdGxvdyZoaWdoIDB4RkZGRkZGRkZcbiIsX19GVU5DVElPTl9fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCisJfSBlbHNlIHsKKwkJLyogQ29tbWl0IG91ciBtdWx0aWNhc3QgbWFzdCB0byB0aGUgU0xJQyBieSB3cml0aW5nIHRvIHRoZSBtdWx0aWNhc3QKKwkJICogYWRkcmVzcyBtYXNrIHJlZ2lzdGVycworCQkgKi8KKwkJREJHX0VSUk9SKCIlcyAoJXMpIFdSSVRFIG1jYXN0bG93WyVseF0gbWNhc3RoaWdoWyVseF1cbiIsCisJCQkgIF9fRlVOQ1RJT05fXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLAorCQkJICAoKHVsb25nKSAoYWRhcHRlci0+TXVsdGljYXN0TWFzayAmIDB4RkZGRkZGRkYpKSwKKwkJCSAgKCh1bG9uZykKKwkJCSAgICgoYWRhcHRlci0+TXVsdGljYXN0TWFzayA+PiAzMikgJiAweEZGRkZGRkZGKSkpOworCisJCVdSSVRFX1JFRyhzeGdfcmVncy0+TWNhc3RMb3csCisJCQkgICh1MzIpIChhZGFwdGVyLT5NdWx0aWNhc3RNYXNrICYgMHhGRkZGRkZGRiksIEZMVVNIKTsKKwkJV1JJVEVfUkVHKHN4Z19yZWdzLT5NY2FzdEhpZ2gsCisJCQkgICh1MzIpICgoYWRhcHRlci0+CisJCQkJICBNdWx0aWNhc3RNYXNrID4+IDMyKSAmIDB4RkZGRkZGRkYpLCBGTFVTSCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzeGdfdW5tYXBfbW1pb19zcGFjZShwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworI2lmIExJTlVYX0ZSRUVTX0FEQVBURVJfUkVTT1VSQ0VTCisvLyAgICAgIGlmIChhZGFwdGVyLT5SZWdzKSB7CisvLyAgICAgICAgICAgICAgaW91bm1hcChhZGFwdGVyLT5SZWdzKTsKKy8vICAgICAgfQorLy8gICAgICBhZGFwdGVyLT5zbGljX3JlZ3MgPSBOVUxMOworI2VuZGlmCit9CisKKyNpZiBYWFhUT0RPCisvKgorICogU3hnRnJlZVJlc291cmNlcyAtIEZyZWUgZXZlcnl0aGluZyBhbGxvY2F0ZWQgaW4gU3hnQWxsb2NhdGVSZXNvdXJjZXMKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglub25lCisgKi8KK3ZvaWQgU3hnRnJlZVJlc291cmNlcyhwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCXUzMiBSc3NJZHMsIElzckNvdW50OworCVBUQ1BfT0JKRUNUIFRjcE9iamVjdDsKKwl1MzIgaTsKKwlCT09MRUFOIFRpbWVyQ2FuY2VsbGVkOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiRnJlZVJlcyIsCisJCSAgYWRhcHRlciwgYWRhcHRlci0+TWF4VGNicywgMCwgMCk7CisKKwlSc3NJZHMgPSBTWEdfUlNTX0NQVV9DT1VOVChhZGFwdGVyKTsKKwlJc3JDb3VudCA9IGFkYXB0ZXItPk1zaUVuYWJsZWQgPyBSc3NJZHMgOiAxOworCisJaWYgKGFkYXB0ZXItPkJhc2ljQWxsb2NhdGlvbnMgPT0gRkFMU0UpIHsKKwkJLy8gTm8gYWxsb2NhdGlvbnMgaGF2ZSBiZWVuIG1hZGUsIGluY2x1ZGluZyBzcGlubG9ja3MsCisJCS8vIG9yIGxpc3RoZWFkIGluaXRpYWxpemF0aW9ucy4gIFJldHVybi4KKwkJcmV0dXJuOworCX0KKworCWlmICghKElzTGlzdEVtcHR5KCZhZGFwdGVyLT5BbGxSY3ZCbG9ja3MpKSkgeworCQlTeGdGcmVlUmN2QmxvY2tzKGFkYXB0ZXIpOworCX0KKwlpZiAoIShJc0xpc3RFbXB0eSgmYWRhcHRlci0+QWxsU2dsQnVmZmVycykpKSB7CisJCVN4Z0ZyZWVTZ2xCdWZmZXJzKGFkYXB0ZXIpOworCX0KKwkvLyBGcmVlIGV2ZW50IHF1ZXVlcy4KKwlpZiAoYWRhcHRlci0+RXZlbnRSaW5ncykgeworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkgICAgc2l6ZW9mKFNYR19FVkVOVF9SSU5HKSAqIFJzc0lkcywKKwkJCQkgICAgYWRhcHRlci0+RXZlbnRSaW5ncywgYWRhcHRlci0+UEV2ZW50UmluZ3MpOworCX0KKwlpZiAoYWRhcHRlci0+SXNyKSB7CisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRhcHRlci0+cGNpZGV2LAorCQkJCSAgICBzaXplb2YodTMyKSAqIElzckNvdW50LAorCQkJCSAgICBhZGFwdGVyLT5Jc3IsIGFkYXB0ZXItPlBJc3IpOworCX0KKwlpZiAoYWRhcHRlci0+WG10UmluZ1plcm9JbmRleCkgeworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkgICAgc2l6ZW9mKHUzMiksCisJCQkJICAgIGFkYXB0ZXItPlhtdFJpbmdaZXJvSW5kZXgsCisJCQkJICAgIGFkYXB0ZXItPlBYbXRSaW5nWmVyb0luZGV4KTsKKwl9CisJaWYgKGFkYXB0ZXItPkluZGlyZWN0aW9uVGFibGUpIHsKKwkJcGNpX2ZyZWVfY29uc2lzdGVudChhZGFwdGVyLT5wY2lkZXYsCisJCQkJICAgIFNYR19NQVhfUlNTX1RBQkxFX1NJWkUsCisJCQkJICAgIGFkYXB0ZXItPkluZGlyZWN0aW9uVGFibGUsCisJCQkJICAgIGFkYXB0ZXItPlBJbmRpcmVjdGlvblRhYmxlKTsKKwl9CisKKwlTWEdfRlJFRV9QQUNLRVRfUE9PTChhZGFwdGVyLT5QYWNrZXRQb29sSGFuZGxlKTsKKwlTWEdfRlJFRV9CVUZGRVJfUE9PTChhZGFwdGVyLT5CdWZmZXJQb29sSGFuZGxlKTsKKworCS8vIFVubWFwIHJlZ2lzdGVyIHNwYWNlcworCVN4Z1VubWFwUmVzb3VyY2VzKGFkYXB0ZXIpOworCisJLy8gRGVyZWdpc3RlciBETUEKKwlpZiAoYWRhcHRlci0+RG1hSGFuZGxlKSB7CisJCVNYR19ERVJFR0lTVEVSX0RNQShhZGFwdGVyLT5EbWFIYW5kbGUpOworCX0KKwkvLyBEZXJlZ2lzdGVyIGludGVycnVwdAorCVN4Z0RlcmVnaXN0ZXJJbnRlcnJ1cHQoYWRhcHRlcik7CisKKwkvLyBQb3NzaWJseSBmcmVlIHN5c3RlbSBpbmZvICg1LjIgb25seSkKKwlTWEdfUkVMRUFTRV9TWVNURU1fSU5GTyhhZGFwdGVyKTsKKworCVN4Z0RpYWdGcmVlUmVzb3VyY2VzKGFkYXB0ZXIpOworCisJU3hnRnJlZU1DYXN0QWRkcnMoYWRhcHRlcik7CisKKwlpZiAoU1hHX1RJTUVSX0FMTE9DQVRFRChhZGFwdGVyLT5SZXNldFRpbWVyKSkgeworCQlTWEdfQ0FOQ0VMX1RJTUVSKGFkYXB0ZXItPlJlc2V0VGltZXIsIFRpbWVyQ2FuY2VsbGVkKTsKKwkJU1hHX0ZSRUVfVElNRVIoYWRhcHRlci0+UmVzZXRUaW1lcik7CisJfQorCWlmIChTWEdfVElNRVJfQUxMT0NBVEVEKGFkYXB0ZXItPlJzc1RpbWVyKSkgeworCQlTWEdfQ0FOQ0VMX1RJTUVSKGFkYXB0ZXItPlJzc1RpbWVyLCBUaW1lckNhbmNlbGxlZCk7CisJCVNYR19GUkVFX1RJTUVSKGFkYXB0ZXItPlJzc1RpbWVyKTsKKwl9CisJaWYgKFNYR19USU1FUl9BTExPQ0FURUQoYWRhcHRlci0+T2ZmbG9hZFRpbWVyKSkgeworCQlTWEdfQ0FOQ0VMX1RJTUVSKGFkYXB0ZXItPk9mZmxvYWRUaW1lciwgVGltZXJDYW5jZWxsZWQpOworCQlTWEdfRlJFRV9USU1FUihhZGFwdGVyLT5PZmZsb2FkVGltZXIpOworCX0KKworCWFkYXB0ZXItPkJhc2ljQWxsb2NhdGlvbnMgPSBGQUxTRTsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhGcmVlUmVzIiwKKwkJICBhZGFwdGVyLCBhZGFwdGVyLT5NYXhUY2JzLCAwLCAwKTsKK30KKyNlbmRpZgorCisvKgorICogc3hnX2FsbG9jYXRlX2NvbXBsZXRlIC0KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHdoZW4gYSBtZW1vcnkgYWxsb2NhdGlvbiBoYXMgY29tcGxldGVkLgorICoKKyAqIEFyZ3VtZW50cyAtCisgKglwX2FkYXB0ZXJfdCAgICAJLSBPdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCVZpcnR1YWxBZGRyZXNzCS0gTWVtb3J5IHZpcnR1YWwgYWRkcmVzcworICoJUGh5c2ljYWxBZGRyZXNzCS0gTWVtb3J5IHBoeXNpY2FsIGFkZHJlc3MKKyAqCUxlbmd0aAkJLSBMZW5ndGggb2YgbWVtb3J5IGFsbG9jYXRlZCAob3IgMCkKKyAqCUNvbnRleHQJCS0gVGhlIHR5cGUgb2YgYnVmZmVyIGFsbG9jYXRlZAorICoKKyAqIFJldHVybgorICoJTm9uZS4KKyAqLworc3RhdGljIHZvaWQgc3hnX2FsbG9jYXRlX2NvbXBsZXRlKHBfYWRhcHRlcl90IGFkYXB0ZXIsCisJCQkJICB2b2lkICpWaXJ0dWFsQWRkcmVzcywKKwkJCQkgIGRtYV9hZGRyX3QgUGh5c2ljYWxBZGRyZXNzLAorCQkJCSAgdTMyIExlbmd0aCwgU1hHX0JVRkZFUl9UWVBFIENvbnRleHQpCit7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiQWxsb2NDbXAiLAorCQkgIGFkYXB0ZXIsIFZpcnR1YWxBZGRyZXNzLCBMZW5ndGgsIENvbnRleHQpOworCUFTU0VSVChhZGFwdGVyLT5BbGxvY2F0aW9uc1BlbmRpbmcpOworCS0tYWRhcHRlci0+QWxsb2NhdGlvbnNQZW5kaW5nOworCisJc3dpdGNoIChDb250ZXh0KSB7CisKKwljYXNlIFNYR19CVUZGRVJfVFlQRV9SQ1Y6CisJCXN4Z19hbGxvY2F0ZV9yY3ZibG9ja19jb21wbGV0ZShhZGFwdGVyLAorCQkJCQkgICAgICAgVmlydHVhbEFkZHJlc3MsCisJCQkJCSAgICAgICBQaHlzaWNhbEFkZHJlc3MsIExlbmd0aCk7CisJCWJyZWFrOworCWNhc2UgU1hHX0JVRkZFUl9UWVBFX1NHTDoKKwkJc3hnX2FsbG9jYXRlX3NnbF9idWZmZXJfY29tcGxldGUoYWRhcHRlciwgKFBTWEdfU0NBVFRFUl9HQVRIRVIpCisJCQkJCQkgVmlydHVhbEFkZHJlc3MsCisJCQkJCQkgUGh5c2ljYWxBZGRyZXNzLCBMZW5ndGgpOworCQlicmVhazsKKwl9CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEFsb2NDbXAiLAorCQkgIGFkYXB0ZXIsIFZpcnR1YWxBZGRyZXNzLCBMZW5ndGgsIENvbnRleHQpOworfQorCisvKgorICogc3hnX2FsbG9jYXRlX2J1ZmZlcl9tZW1vcnkgLSBTaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZSB1c2VkIGZvcgorICoJCXN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgYnVmZmVyIGFsbG9jYXRpb25zCisgKgorICogQXJndW1lbnRzIC0KKyAqCWFkYXB0ZXIJCS0gQSBwb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICoJU2l6ZQkJLSBibG9jayBzaXplIHRvIGFsbG9jYXRlCisgKglCdWZmZXJUeXBlCS0gVHlwZSBvZiBidWZmZXIgdG8gYWxsb2NhdGUKKyAqCisgKiBSZXR1cm4KKyAqCWludAorICovCitzdGF0aWMgaW50IHN4Z19hbGxvY2F0ZV9idWZmZXJfbWVtb3J5KHBfYWRhcHRlcl90IGFkYXB0ZXIsCisJCQkJICAgICAgdTMyIFNpemUsIFNYR19CVUZGRVJfVFlQRSBCdWZmZXJUeXBlKQoreworCWludCBzdGF0dXM7CisJdm9pZCAqQnVmZmVyOworCWRtYV9hZGRyX3QgcEJ1ZmZlcjsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIkFsbG9jTWVtIiwKKwkJICBhZGFwdGVyLCBTaXplLCBCdWZmZXJUeXBlLCAwKTsKKwkvLyBHcmFiIHRoZSBhZGFwdGVyIGxvY2sgYW5kIGNoZWNrIHRoZSBzdGF0ZS4KKwkvLyBJZiB3ZSdyZSBpbiBhbnl0aGluZyBvdGhlciB0aGFuIElOSVRJQUxJWklORyBvcgorCS8vIFJVTk5JTkcgc3RhdGUsIGZhaWwuICBUaGlzIGlzIHRvIHByZXZlbnQKKwkvLyBhbGxvY2F0aW9ucyBpbiBhbiBpbXByb3BlciBkcml2ZXIgc3RhdGUKKwlzcGluX2xvY2soJmFkYXB0ZXItPkFkYXB0ZXJMb2NrKTsKKworCS8vIEluY3JlbWVudCB0aGUgQWxsb2NhdGlvbnNQZW5kaW5nIGNvdW50IHdoaWxlIGhvbGRpbmcKKwkvLyB0aGUgbG9jay4gIFBhdXNlIHByb2Nlc3NpbmcgcmVsaWVzIG9uIHRoaXMKKwkrK2FkYXB0ZXItPkFsbG9jYXRpb25zUGVuZGluZzsKKwlzcGluX3VubG9jaygmYWRhcHRlci0+QWRhcHRlckxvY2spOworCisJLy8gQXQgaW5pdGlhbGl6YXRpb24gdGltZSBhbGxvY2F0ZSByZXNvdXJjZXMgc3luY2hyb25vdXNseS4KKwlCdWZmZXIgPSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGFwdGVyLT5wY2lkZXYsIFNpemUsICZwQnVmZmVyKTsKKwlpZiAoQnVmZmVyID09IE5VTEwpIHsKKwkJc3Bpbl9sb2NrKCZhZGFwdGVyLT5BZGFwdGVyTG9jayk7CisJCS8vIERlY3JlbWVudCB0aGUgQWxsb2NhdGlvbnNQZW5kaW5nIGNvdW50IHdoaWxlIGhvbGRpbmcKKwkJLy8gdGhlIGxvY2suICBQYXVzZSBwcm9jZXNzaW5nIHJlbGllcyBvbiB0aGlzCisJCS0tYWRhcHRlci0+QWxsb2NhdGlvbnNQZW5kaW5nOworCQlzcGluX3VubG9jaygmYWRhcHRlci0+QWRhcHRlckxvY2spOworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJBbGNNZW1GMSIsCisJCQkgIGFkYXB0ZXIsIFNpemUsIEJ1ZmZlclR5cGUsIDApOworCQlyZXR1cm4gKFNUQVRVU19SRVNPVVJDRVMpOworCX0KKwlzeGdfYWxsb2NhdGVfY29tcGxldGUoYWRhcHRlciwgQnVmZmVyLCBwQnVmZmVyLCBTaXplLCBCdWZmZXJUeXBlKTsKKwlzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlhBbG9jTWVtIiwKKwkJICBhZGFwdGVyLCBTaXplLCBCdWZmZXJUeXBlLCBzdGF0dXMpOworCXJldHVybiAoc3RhdHVzKTsKK30KKworLyoKKyAqIHN4Z19hbGxvY2F0ZV9yY3ZibG9ja19jb21wbGV0ZSAtIENvbXBsZXRlIGEgcmVjZWl2ZSBkZXNjcmlwdG9yIGJsb2NrIGFsbG9jYXRpb24KKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCVJjdkJsb2NrCQkJLSByZWNlaXZlIGJsb2NrIHZpcnR1YWwgYWRkcmVzcworICoJUGh5c2ljYWxBZGRyZXNzCQktIFBoeXNpY2FsIGFkZHJlc3MKKyAqCUxlbmd0aAkJCQktIE1lbW9yeSBsZW5ndGgKKyAqCisgKiBSZXR1cm4KKyAqCisgKi8KK3N0YXRpYyB2b2lkIHN4Z19hbGxvY2F0ZV9yY3ZibG9ja19jb21wbGV0ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLAorCQkJCQkgICB2b2lkICpSY3ZCbG9jaywKKwkJCQkJICAgZG1hX2FkZHJfdCBQaHlzaWNhbEFkZHJlc3MsCisJCQkJCSAgIHUzMiBMZW5ndGgpCit7CisJdTMyIGk7CisJdTMyIEJ1ZmZlclNpemUgPSBhZGFwdGVyLT5SZWNlaXZlQnVmZmVyU2l6ZTsKKwl1NjQgUGFkZHI7CisJUFNYR19SQ1ZfQkxPQ0tfSERSIFJjdkJsb2NrSGRyOworCXVuc2lnbmVkIGNoYXIgKlJjdkRhdGFCdWZmZXI7CisJUFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSIFJjdkRhdGFCdWZmZXJIZHI7CisJUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSyBSY3ZEZXNjcmlwdG9yQmxvY2s7CisJUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIgUmN2RGVzY3JpcHRvckJsb2NrSGRyOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiQWxSY3ZCbGsiLAorCQkgIGFkYXB0ZXIsIFJjdkJsb2NrLCBMZW5ndGgsIDApOworCWlmIChSY3ZCbG9jayA9PSBOVUxMKSB7CisJCWdvdG8gZmFpbDsKKwl9CisJbWVtc2V0KFJjdkJsb2NrLCAwLCBMZW5ndGgpOworCUFTU0VSVCgoQnVmZmVyU2l6ZSA9PSBTWEdfUkNWX0RBVEFfQlVGRkVSX1NJWkUpIHx8CisJICAgICAgIChCdWZmZXJTaXplID09IFNYR19SQ1ZfSlVNQk9fQlVGRkVSX1NJWkUpKTsKKwlBU1NFUlQoTGVuZ3RoID09IFNYR19SQ1ZfQkxPQ0tfU0laRShCdWZmZXJTaXplKSk7CisJLy8gRmlyc3QsIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lZCBwb29sIG9mIHJlY2VpdmUgZGF0YQorCS8vIGJ1ZmZlcnMuICBUaGlzIGluaXRpYWxpemF0aW9uIHJlcXVpcmVzIE5CTC9OQi9NREwgYWxsb2NhdGlvbnMsCisJLy8gSWYgYW55IG9mIHRoZW0gZmFpbCwgZnJlZSB0aGUgYmxvY2sgYW5kIHJldHVybiB3aXRob3V0CisJLy8gcXVldWVpbmcgdGhlIHNoYXJlZCBtZW1vcnkKKwlSY3ZEYXRhQnVmZmVyID0gUmN2QmxvY2s7CisjaWYgMAorCWZvciAoaSA9IDAsIFBhZGRyID0gKlBoeXNpY2FsQWRkcmVzczsKKwkgICAgIGkgPCBTWEdfUkNWX0RFU0NSSVBUT1JTX1BFUl9CTE9DSzsKKwkgICAgIGkrKywgUGFkZHIuTG93UGFydCArPSBCdWZmZXJTaXplLCBSY3ZEYXRhQnVmZmVyICs9IEJ1ZmZlclNpemUpCisjZW5kaWYKKwkJZm9yIChpID0gMCwgUGFkZHIgPSBQaHlzaWNhbEFkZHJlc3M7CisJCSAgICAgaSA8IFNYR19SQ1ZfREVTQ1JJUFRPUlNfUEVSX0JMT0NLOworCQkgICAgIGkrKywgUGFkZHIgKz0gQnVmZmVyU2l6ZSwgUmN2RGF0YUJ1ZmZlciArPSBCdWZmZXJTaXplKSB7CisJCQkvLworCQkJUmN2RGF0YUJ1ZmZlckhkciA9CisJCQkgICAgKFBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUikgKFJjdkRhdGFCdWZmZXIgKworCQkJCQkJCVNYR19SQ1ZfREFUQV9CVUZGRVJfSERSX09GRlNFVAorCQkJCQkJCShCdWZmZXJTaXplKSk7CisJCQlSY3ZEYXRhQnVmZmVySGRyLT5WaXJ0dWFsQWRkcmVzcyA9IFJjdkRhdGFCdWZmZXI7CisJCQlSY3ZEYXRhQnVmZmVySGRyLT5QaHlzaWNhbEFkZHJlc3MgPSBQYWRkcjsKKwkJCVJjdkRhdGFCdWZmZXJIZHItPlN0YXRlID0gU1hHX0JVRkZFUl9VUFNUUkVBTTsJLy8gRm9yIEZSRUUgbWFjcm8gYXNzZXJ0aW9uCisJCQlSY3ZEYXRhQnVmZmVySGRyLT5TaXplID0KKwkJCSAgICBTWEdfUkNWX0JVRkZFUl9EQVRBX1NJWkUoQnVmZmVyU2l6ZSk7CisKKwkJCVNYR19BTExPQ0FURV9SQ1ZfUEFDS0VUKGFkYXB0ZXIsIFJjdkRhdGFCdWZmZXJIZHIpOworCQkJaWYgKFJjdkRhdGFCdWZmZXJIZHItPlN4Z0R1bWJSY3ZQYWNrZXQgPT0gTlVMTCkKKwkJCQlnb3RvIGZhaWw7CisKKwkJfQorCisJLy8gUGxhY2UgdGhpcyBlbnRpcmUgYmxvY2sgb2YgbWVtb3J5IG9uIHRoZSBBbGxSY3ZCbG9ja3MgcXVldWUgc28gaXQgY2FuIGJlCisJLy8gZnJlZSBsYXRlcgorCVJjdkJsb2NrSGRyID0KKwkgICAgKFBTWEdfUkNWX0JMT0NLX0hEUikgKCh1bnNpZ25lZCBjaGFyICopUmN2QmxvY2sgKworCQkJCSAgU1hHX1JDVl9CTE9DS19IRFJfT0ZGU0VUKEJ1ZmZlclNpemUpKTsKKwlSY3ZCbG9ja0hkci0+VmlydHVhbEFkZHJlc3MgPSBSY3ZCbG9jazsKKwlSY3ZCbG9ja0hkci0+UGh5c2ljYWxBZGRyZXNzID0gUGh5c2ljYWxBZGRyZXNzOworCXNwaW5fbG9jaygmYWRhcHRlci0+UmN2UUxvY2spOworCWFkYXB0ZXItPkFsbFJjdkJsb2NrQ291bnQrKzsKKwlJbnNlcnRUYWlsTGlzdCgmYWRhcHRlci0+QWxsUmN2QmxvY2tzLCAmUmN2QmxvY2tIZHItPkFsbExpc3QpOworCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5SY3ZRTG9jayk7CisKKwkvLyBOb3cgZnJlZSB0aGUgY29udGFpbmVkIHJlY2VpdmUgZGF0YSBidWZmZXJzIHRoYXQgd2UgaW5pdGlhbGl6ZWQgYWJvdmUKKwlSY3ZEYXRhQnVmZmVyID0gUmN2QmxvY2s7CisJZm9yIChpID0gMCwgUGFkZHIgPSBQaHlzaWNhbEFkZHJlc3M7CisJICAgICBpIDwgU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0s7CisJICAgICBpKyssIFBhZGRyICs9IEJ1ZmZlclNpemUsIFJjdkRhdGFCdWZmZXIgKz0gQnVmZmVyU2l6ZSkgeworCQlSY3ZEYXRhQnVmZmVySGRyID0gKFBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUikgKFJjdkRhdGFCdWZmZXIgKworCQkJCQkJCSAgICAgICBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUl9PRkZTRVQKKwkJCQkJCQkgICAgICAgKEJ1ZmZlclNpemUpKTsKKwkJc3Bpbl9sb2NrKCZhZGFwdGVyLT5SY3ZRTG9jayk7CisJCVNYR19GUkVFX1JDVl9EQVRBX0JVRkZFUihhZGFwdGVyLCBSY3ZEYXRhQnVmZmVySGRyKTsKKwkJc3Bpbl91bmxvY2soJmFkYXB0ZXItPlJjdlFMb2NrKTsKKwl9CisKKwkvLyBMb2NhdGUgdGhlIGRlc2NyaXB0b3IgYmxvY2sgYW5kIHB1dCBpdCBvbiBhIHNlcGFyYXRlIGZyZWUgcXVldWUKKwlSY3ZEZXNjcmlwdG9yQmxvY2sgPQorCSAgICAoUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSykgKCh1bnNpZ25lZCBjaGFyICopUmN2QmxvY2sgKworCQkJCQkgU1hHX1JDVl9ERVNDUklQVE9SX0JMT0NLX09GRlNFVAorCQkJCQkgKEJ1ZmZlclNpemUpKTsKKwlSY3ZEZXNjcmlwdG9yQmxvY2tIZHIgPQorCSAgICAoUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIpICgodW5zaWduZWQgY2hhciAqKVJjdkJsb2NrICsKKwkJCQkJICAgICBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSX09GRlNFVAorCQkJCQkgICAgIChCdWZmZXJTaXplKSk7CisJUmN2RGVzY3JpcHRvckJsb2NrSGRyLT5WaXJ0dWFsQWRkcmVzcyA9IFJjdkRlc2NyaXB0b3JCbG9jazsKKwlSY3ZEZXNjcmlwdG9yQmxvY2tIZHItPlBoeXNpY2FsQWRkcmVzcyA9IFBhZGRyOworCXNwaW5fbG9jaygmYWRhcHRlci0+UmN2UUxvY2spOworCVNYR19GUkVFX1JDVl9ERVNDUklQVE9SX0JMT0NLKGFkYXB0ZXIsIFJjdkRlc2NyaXB0b3JCbG9ja0hkcik7CisJc3Bpbl91bmxvY2soJmFkYXB0ZXItPlJjdlFMb2NrKTsKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYQWxSQmxrIiwKKwkJICBhZGFwdGVyLCBSY3ZCbG9jaywgTGVuZ3RoLCAwKTsKKwlyZXR1cm47CisgICAgICBmYWlsOgorCS8vIEZyZWUgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMKKwlpZiAoUmN2QmxvY2spIHsKKwkJUmN2RGF0YUJ1ZmZlciA9IFJjdkJsb2NrOworCQlmb3IgKGkgPSAwOyBpIDwgU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0s7CisJCSAgICAgaSsrLCBSY3ZEYXRhQnVmZmVyICs9IEJ1ZmZlclNpemUpIHsKKwkJCVJjdkRhdGFCdWZmZXJIZHIgPQorCQkJICAgIChQU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIpIChSY3ZEYXRhQnVmZmVyICsKKwkJCQkJCQlTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUl9PRkZTRVQKKwkJCQkJCQkoQnVmZmVyU2l6ZSkpOworCQkJU1hHX0ZSRUVfUkNWX1BBQ0tFVChSY3ZEYXRhQnVmZmVySGRyKTsKKwkJfQorCQlwY2lfZnJlZV9jb25zaXN0ZW50KGFkYXB0ZXItPnBjaWRldiwKKwkJCQkgICAgTGVuZ3RoLCBSY3ZCbG9jaywgUGh5c2ljYWxBZGRyZXNzKTsKKwl9CisJREJHX0VSUk9SKCIlczogT1VUIE9GIFJFU09VUkNFU1xuIiwgX19GVU5DVElPTl9fKTsKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfSU1QT1JUQU5ULCAiUmN2QUZhaWwiLAorCQkgIGFkYXB0ZXIsIGFkYXB0ZXItPkZyZWVSY3ZCdWZmZXJDb3VudCwKKwkJICBhZGFwdGVyLT5GcmVlUmN2QmxvY2tDb3VudCwgYWRhcHRlci0+QWxsUmN2QmxvY2tDb3VudCk7CisJYWRhcHRlci0+U3RhdHMuTm9NZW0rKzsKK30KKworLyoKKyAqIHN4Z19hbGxvY2F0ZV9zZ2xfYnVmZmVyX2NvbXBsZXRlIC0gQ29tcGxldGUgYSBTR0wgYnVmZmVyIGFsbG9jYXRpb24KKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCVN4Z1NnbAkJCQktIFNYR19TQ0FUVEVSX0dBVEhFUiBidWZmZXIKKyAqCVBoeXNpY2FsQWRkcmVzcwkJLSBQaHlzaWNhbCBhZGRyZXNzCisgKglMZW5ndGgJCQkJLSBNZW1vcnkgbGVuZ3RoCisgKgorICogUmV0dXJuCisgKgorICovCitzdGF0aWMgdm9pZCBzeGdfYWxsb2NhdGVfc2dsX2J1ZmZlcl9jb21wbGV0ZShwX2FkYXB0ZXJfdCBhZGFwdGVyLAorCQkJCQkgICAgIFBTWEdfU0NBVFRFUl9HQVRIRVIgU3hnU2dsLAorCQkJCQkgICAgIGRtYV9hZGRyX3QgUGh5c2ljYWxBZGRyZXNzLAorCQkJCQkgICAgIHUzMiBMZW5ndGgpCit7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiQWxTZ2xDbXAiLAorCQkgIGFkYXB0ZXIsIFN4Z1NnbCwgTGVuZ3RoLCAwKTsKKwlzcGluX2xvY2soJmFkYXB0ZXItPlNnbFFMb2NrKTsKKwlhZGFwdGVyLT5BbGxTZ2xCdWZmZXJDb3VudCsrOworCW1lbXNldChTeGdTZ2wsIDAsIHNpemVvZihTWEdfU0NBVFRFUl9HQVRIRVIpKTsKKwlTeGdTZ2wtPlBoeXNpY2FsQWRkcmVzcyA9IFBoeXNpY2FsQWRkcmVzczsJLyogKlBoeXNpY2FsQWRkcmVzczsgKi8KKwlTeGdTZ2wtPmFkYXB0ZXIgPSBhZGFwdGVyOwkvLyBJbml0aWFsaXplIGJhY2twb2ludGVyIG9uY2UKKwlJbnNlcnRUYWlsTGlzdCgmYWRhcHRlci0+QWxsU2dsQnVmZmVycywgJlN4Z1NnbC0+QWxsTGlzdCk7CisJc3Bpbl91bmxvY2soJmFkYXB0ZXItPlNnbFFMb2NrKTsKKwlTeGdTZ2wtPlN0YXRlID0gU1hHX0JVRkZFUl9CVVNZOworCVNYR19GUkVFX1NHTF9CVUZGRVIoYWRhcHRlciwgU3hnU2dsLCBOVUxMKTsKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYQWxTZ2wiLAorCQkgIGFkYXB0ZXIsIFN4Z1NnbCwgTGVuZ3RoLCAwKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgdGVtcF9tYWNfYWRkcmVzc1s2XSA9CisgICAgeyAweDAwLCAweGFiLCAweGNkLCAweGVmLCAweDEyLCAweDY5IH07CisKK3N0YXRpYyB2b2lkIHN4Z19hZGFwdGVyX3NldF9od2FkZHIocF9hZGFwdGVyX3QgYWRhcHRlcikKK3sKKy8vICBEQkdfRVJST1IgKCIlcyBFTlRFUiBjYXJkLT5jb25maWdfc2V0WyV4XSBwb3J0WyVkXSBwaHlzcG9ydFslZF0gZnVuY3QjWyVkXVxuIiwgX19GVU5DVElPTl9fLAorLy8gICAgICAgICAgICAgY2FyZC0+Y29uZmlnX3NldCwgYWRhcHRlci0+cG9ydCwgYWRhcHRlci0+cGh5c3BvcnQsIGFkYXB0ZXItPmZ1bmN0aW9ubnVtYmVyKTsKKy8vCisvLyAgc3hnX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsKKworCW1lbWNweShhZGFwdGVyLT5tYWNhZGRyLCB0ZW1wX21hY19hZGRyZXNzLCBzaXplb2YoU1hHX0NPTkZJR19NQUMpKTsKKy8vICAgICAgREJHX0VSUk9SICgiJXMgQUZURVIgY29weWluZyBmcm9tIGNvbmZpZy5tYWNpbmZvIGludG8gY3Vycm1hY2FkZHJcbiIsIF9fRlVOQ1RJT05fXyk7CisvLyAgICAgIHN4Z19kYmdfbWFjYWRkcnMoYWRhcHRlcik7CisJaWYgKCEoYWRhcHRlci0+Y3Vycm1hY2FkZHJbMF0gfHwKKwkgICAgICBhZGFwdGVyLT5jdXJybWFjYWRkclsxXSB8fAorCSAgICAgIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzJdIHx8CisJICAgICAgYWRhcHRlci0+Y3Vycm1hY2FkZHJbM10gfHwKKwkgICAgICBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSB8fCBhZGFwdGVyLT5jdXJybWFjYWRkcls1XSkpIHsKKwkJbWVtY3B5KGFkYXB0ZXItPmN1cnJtYWNhZGRyLCBhZGFwdGVyLT5tYWNhZGRyLCA2KTsKKwl9CisJaWYgKGFkYXB0ZXItPm5ldGRldikgeworCQltZW1jcHkoYWRhcHRlci0+bmV0ZGV2LT5kZXZfYWRkciwgYWRhcHRlci0+Y3Vycm1hY2FkZHIsIDYpOworCX0KKy8vICBEQkdfRVJST1IgKCIlcyBFWElUIHBvcnQgJWRcbiIsIF9fRlVOQ1RJT05fXywgYWRhcHRlci0+cG9ydCk7CisJc3hnX2RiZ19tYWNhZGRycyhhZGFwdGVyKTsKKworfQorCitzdGF0aWMgaW50IHN4Z19tYWNfc2V0X2FkZHJlc3MocF9uZXRfZGV2aWNlIGRldiwgdm9pZCAqcHRyKQoreworI2lmIFhYWFRPRE8KKwlwX2FkYXB0ZXJfdCBhZGFwdGVyID0gKHBfYWRhcHRlcl90KSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IHB0cjsKKworCURCR19FUlJPUigiJXMgRU5URVIgKCVzKVxuIiwgX19GVU5DVElPTl9fLCBhZGFwdGVyLT5uZXRkZXYtPm5hbWUpOworCisJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgeworCQlyZXR1cm4gLUVCVVNZOworCX0KKwlpZiAoIWFkYXB0ZXIpIHsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisJREJHX0VSUk9SKCJzeGc6ICVzICglcykgY3VyciAlMi4yWDolMi4yWDolMi4yWDolMi4yWDolMi4yWDolMi4yWFxuIiwKKwkJICBfX0ZVTkNUSU9OX18sIGFkYXB0ZXItPm5ldGRldi0+bmFtZSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMF0sCisJCSAgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMV0sIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzJdLAorCQkgIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzNdLCBhZGFwdGVyLT5jdXJybWFjYWRkcls0XSwKKwkJICBhZGFwdGVyLT5jdXJybWFjYWRkcls1XSk7CisJbWVtY3B5KGRldi0+ZGV2X2FkZHIsIGFkZHItPnNhX2RhdGEsIGRldi0+YWRkcl9sZW4pOworCW1lbWNweShhZGFwdGVyLT5jdXJybWFjYWRkciwgYWRkci0+c2FfZGF0YSwgZGV2LT5hZGRyX2xlbik7CisJREJHX0VSUk9SKCJzeGc6ICVzICglcykgbmV3ICUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYOiUyLjJYXG4iLAorCQkgIF9fRlVOQ1RJT05fXywgYWRhcHRlci0+bmV0ZGV2LT5uYW1lLCBhZGFwdGVyLT5jdXJybWFjYWRkclswXSwKKwkJICBhZGFwdGVyLT5jdXJybWFjYWRkclsxXSwgYWRhcHRlci0+Y3Vycm1hY2FkZHJbMl0sCisJCSAgYWRhcHRlci0+Y3Vycm1hY2FkZHJbM10sIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzRdLAorCQkgIGFkYXB0ZXItPmN1cnJtYWNhZGRyWzVdKTsKKworCXN4Z19jb25maWdfc2V0KGFkYXB0ZXIsIFRSVUUpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqICBTWEcgRFJJVkVSIEZVTkNUSU9OUyAgKGJlbG93KSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIHN4Z19pbml0aWFsaXplX2FkYXB0ZXIgLSBJbml0aWFsaXplIGFkYXB0ZXIKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglpbnQKKyAqLworc3RhdGljIGludCBzeGdfaW5pdGlhbGl6ZV9hZGFwdGVyKHBfYWRhcHRlcl90IGFkYXB0ZXIpCit7CisJdTMyIFJzc0lkcywgSXNyQ291bnQ7CisJdTMyIGk7CisJaW50IHN0YXR1czsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIkluaXRBZHB0IiwKKwkJICBhZGFwdGVyLCAwLCAwLCAwKTsKKworCVJzc0lkcyA9IDE7CQkvLyAgWFhYVE9ETyAgU1hHX1JTU19DUFVfQ09VTlQoYWRhcHRlcik7CisJSXNyQ291bnQgPSBhZGFwdGVyLT5Nc2lFbmFibGVkID8gUnNzSWRzIDogMTsKKworCS8vIFNhbml0eSBjaGVjayBTWEdfVUNPREVfUkVHUyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0bworCS8vIG1ha2Ugc3VyZSB0aGUgbGVuZ3RoIGlzIGNvcnJlY3QKKwlBU1NFUlQoc2l6ZW9mKFNYR19VQ09ERV9SRUdTKSA9PSBTWEdfUkVHSVNURVJfU0laRV9QRVJfQ1BVKTsKKworCS8vIERpc2FibGUgaW50ZXJydXB0cworCVNYR19ESVNBQkxFX0FMTF9JTlRFUlJVUFRTKGFkYXB0ZXIpOworCisJLy8gU2V0IE1UVQorCUFTU0VSVCgoYWRhcHRlci0+RnJhbWVTaXplID09IEVUSEVSTUFYRlJBTUUpIHx8CisJICAgICAgIChhZGFwdGVyLT5GcmFtZVNpemUgPT0gSlVNQk9NQVhGUkFNRSkpOworCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbMF0uTGlua010dSwgYWRhcHRlci0+RnJhbWVTaXplLCBUUlVFKTsKKworCS8vIFNldCBldmVudCByaW5nIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZQorCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCSAgICBhZGFwdGVyLT5VY29kZVJlZ3NbMF0uRXZlbnRCYXNlLCBhZGFwdGVyLT5QRXZlbnRSaW5ncywgMCk7CisJV1JJVEVfUkVHKGFkYXB0ZXItPlVjb2RlUmVnc1swXS5FdmVudFNpemUsIEVWRU5UX1JJTkdfU0laRSwgVFJVRSk7CisKKwkvLyBQZXItSVNSIGluaXRpYWxpemF0aW9uCisJZm9yIChpID0gMDsgaSA8IElzckNvdW50OyBpKyspIHsKKwkJdTY0IEFkZHI7CisJCS8vIFNldCBpbnRlcnJ1cHQgc3RhdHVzIHBvaW50ZXIKKwkJQWRkciA9IGFkYXB0ZXItPlBJc3IgKyAoaSAqIHNpemVvZih1MzIpKTsKKwkJV1JJVEVfUkVHNjQoYWRhcHRlciwgYWRhcHRlci0+VWNvZGVSZWdzW2ldLklzcCwgQWRkciwgaSk7CisJfQorCisJLy8gWE1UIHJpbmcgemVybyBpbmRleAorCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCSAgICBhZGFwdGVyLT5VY29kZVJlZ3NbMF0uU1BTZW5kSW5kZXgsCisJCSAgICBhZGFwdGVyLT5QWG10UmluZ1plcm9JbmRleCwgMCk7CisKKwkvLyBQZXItUlNTIGluaXRpYWxpemF0aW9uCisJZm9yIChpID0gMDsgaSA8IFJzc0lkczsgaSsrKSB7CisJCS8vIFJlbGVhc2UgYWxsIGV2ZW50IHJpbmcgZW50cmllcyB0byB0aGUgTWljcm9jb2RlCisJCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbaV0uRXZlbnRSZWxlYXNlLCBFVkVOVF9SSU5HX1NJWkUsCisJCQkgIFRSVUUpOworCX0KKworCS8vIFRyYW5zbWl0IHJpbmcgYmFzZSBhbmQgc2l6ZQorCVdSSVRFX1JFRzY0KGFkYXB0ZXIsCisJCSAgICBhZGFwdGVyLT5VY29kZVJlZ3NbMF0uWG10QmFzZSwgYWRhcHRlci0+UFhtdFJpbmdzLCAwKTsKKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLlhtdFNpemUsIFNYR19YTVRfUklOR19TSVpFLCBUUlVFKTsKKworCS8vIFJlY2VpdmUgcmluZyBiYXNlIGFuZCBzaXplCisJV1JJVEVfUkVHNjQoYWRhcHRlciwKKwkJICAgIGFkYXB0ZXItPlVjb2RlUmVnc1swXS5SY3ZCYXNlLCBhZGFwdGVyLT5QUmN2UmluZ3MsIDApOworCVdSSVRFX1JFRyhhZGFwdGVyLT5VY29kZVJlZ3NbMF0uUmN2U2l6ZSwgU1hHX1JDVl9SSU5HX1NJWkUsIFRSVUUpOworCisJLy8gUG9wdWxhdGUgdGhlIGNhcmQgd2l0aCByZWNlaXZlIGJ1ZmZlcnMKKwlzeGdfc3RvY2tfcmN2X2J1ZmZlcnMoYWRhcHRlcik7CisKKwkvLyBJbml0aWFsaXplIGNoZWNrc3VtIG9mZmxvYWQgY2FwYWJpbGl0aWVzLiAgQXQgdGhlIG1vbWVudAorCS8vIHdlIGFsd2F5cyBlbmFibGUgSVAgYW5kIFRDUCByZWNlaXZlIGNoZWNrc3VtcyBvbiB0aGUgY2FyZC4KKwkvLyBEZXBlbmRpbmcgb24gdGhlIGNoZWNrc3VtIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZQorCS8vIHVzZXIsIHdlIGNhbiBjaG9vc2UgdG8gcmVwb3J0IG9yIGlnbm9yZSB0aGUgY2hlY2tzdW0KKwkvLyBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGUgY2FyZC4KKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLlJlY2VpdmVDaGVja3N1bSwKKwkJICBTWEdfUkNWX1RDUF9DU1VNX0VOQUJMRUQgfCBTWEdfUkNWX0lQX0NTVU1fRU5BQkxFRCwgVFJVRSk7CisKKwkvLyBJbml0aWFsaXplIHRoZSBNQUMsIFhBVUkKKwlEQkdfRVJST1IoInN4ZzogJXMgRU5URVIgc3hnX2luaXRpYWxpemVfbGlua1xuIiwgX19GVU5DVElPTl9fKTsKKwlzdGF0dXMgPSBzeGdfaW5pdGlhbGl6ZV9saW5rKGFkYXB0ZXIpOworCURCR19FUlJPUigic3hnOiAlcyBFWElUIHN4Z19pbml0aWFsaXplX2xpbmsgc3RhdHVzWyV4XVxuIiwgX19GVU5DVElPTl9fLAorCQkgIHN0YXR1cyk7CisJaWYgKHN0YXR1cyAhPSBTVEFUVVNfU1VDQ0VTUykgeworCQlyZXR1cm4gKHN0YXR1cyk7CisJfQorCS8vIEluaXRpYWxpemUgRGVhZCB0byBGQUxTRS4KKwkvLyBTbGljQ2hlY2tGb3JIYW5nIG9yIFNsaWNEdW1wVGhyZWFkIHdpbGwgdGFrZSBpdCBmcm9tIGhlcmUuCisJYWRhcHRlci0+RGVhZCA9IEZBTFNFOworCWFkYXB0ZXItPlBpbmdPdXRzdGFuZGluZyA9IEZBTFNFOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEluaXQiLAorCQkgIGFkYXB0ZXIsIDAsIDAsIDApOworCXJldHVybiAoU1RBVFVTX1NVQ0NFU1MpOworfQorCisvKgorICogc3hnX2ZpbGxfZGVzY3JpcHRvcl9ibG9jayAtIFBvcHVsYXRlIGEgZGVzY3JpcHRvciBibG9jayBhbmQgZ2l2ZSBpdCB0bworICogdGhlIGNhcmQuICBUaGUgY2FsbGVyIHNob3VsZCBob2xkIHRoZSBSY3ZRTG9jaworICoKKyAqIEFyZ3VtZW50cyAtCisgKglhZGFwdGVyCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqICBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIJLSBEZXNjcmlwdG9yIGJsb2NrIHRvIGZpbGwKKyAqCisgKiBSZXR1cm4KKyAqCXN0YXR1cworICovCitzdGF0aWMgaW50IHN4Z19maWxsX2Rlc2NyaXB0b3JfYmxvY2socF9hZGFwdGVyX3QgYWRhcHRlciwKKwkJCQkgICAgIFBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSCisJCQkJICAgICBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIpCit7CisJdTMyIGk7CisJUFNYR19SSU5HX0lORk8gUmN2UmluZ0luZm8gPSAmYWRhcHRlci0+UmN2UmluZ1plcm9JbmZvOworCVBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUiBSY3ZEYXRhQnVmZmVySGRyOworCVBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0sgUmN2RGVzY3JpcHRvckJsb2NrOworCVBTWEdfQ01EIFJpbmdEZXNjcmlwdG9yQ21kOworCVBTWEdfUkNWX1JJTkcgUmluZ1plcm8gPSAmYWRhcHRlci0+UmN2UmluZ3NbMF07CisKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJGaWxCbGsiLAorCQkgIGFkYXB0ZXIsIGFkYXB0ZXItPlJjdkJ1ZmZlcnNPbkNhcmQsCisJCSAgYWRhcHRlci0+RnJlZVJjdkJ1ZmZlckNvdW50LCBhZGFwdGVyLT5BbGxSY3ZCbG9ja0NvdW50KTsKKworCUFTU0VSVChSY3ZEZXNjcmlwdG9yQmxvY2tIZHIpOworCisJLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGUgcmVzb3VyY2VzIHRvIGZpbGwgdGhlIGRlc2NyaXB0b3IgYmxvY2ssCisJLy8gcmV0dXJuIGZhaWx1cmUKKwlpZiAoKGFkYXB0ZXItPkZyZWVSY3ZCdWZmZXJDb3VudCA8IFNYR19SQ1ZfREVTQ1JJUFRPUlNfUEVSX0JMT0NLKSB8fAorCSAgICBTWEdfUklOR19GVUxMKFJjdlJpbmdJbmZvKSkgeworCQlhZGFwdGVyLT5TdGF0cy5Ob01lbSsrOworCQlyZXR1cm4gKFNUQVRVU19GQUlMVVJFKTsKKwl9CisJLy8gR2V0IGEgcmluZyBkZXNjcmlwdG9yIGNvbW1hbmQKKwlTWEdfR0VUX0NNRChSaW5nWmVybywKKwkJICAgIFJjdlJpbmdJbmZvLCBSaW5nRGVzY3JpcHRvckNtZCwgUmN2RGVzY3JpcHRvckJsb2NrSGRyKTsKKwlBU1NFUlQoUmluZ0Rlc2NyaXB0b3JDbWQpOworCVJjdkRlc2NyaXB0b3JCbG9ja0hkci0+U3RhdGUgPSBTWEdfQlVGRkVSX09OQ0FSRDsKKwlSY3ZEZXNjcmlwdG9yQmxvY2sgPQorCSAgICAoUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSykgUmN2RGVzY3JpcHRvckJsb2NrSGRyLT5WaXJ0dWFsQWRkcmVzczsKKworCS8vIEZpbGwgaW4gdGhlIGRlc2NyaXB0b3IgYmxvY2sKKwlmb3IgKGkgPSAwOyBpIDwgU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0s7IGkrKykgeworCQlTWEdfR0VUX1JDVl9EQVRBX0JVRkZFUihhZGFwdGVyLCBSY3ZEYXRhQnVmZmVySGRyKTsKKwkJQVNTRVJUKFJjdkRhdGFCdWZmZXJIZHIpOworCQlTWEdfUkVJTklBVElBTElaRV9QQUNLRVQoUmN2RGF0YUJ1ZmZlckhkci0+U3hnRHVtYlJjdlBhY2tldCk7CisJCVJjdkRhdGFCdWZmZXJIZHItPlN0YXRlID0gU1hHX0JVRkZFUl9PTkNBUkQ7CisJCVJjdkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcnNbaV0uVmlydHVhbEFkZHJlc3MgPQorCQkgICAgKHZvaWQgKilSY3ZEYXRhQnVmZmVySGRyOworCQlSY3ZEZXNjcmlwdG9yQmxvY2stPkRlc2NyaXB0b3JzW2ldLlBoeXNpY2FsQWRkcmVzcyA9CisJCSAgICBSY3ZEYXRhQnVmZmVySGRyLT5QaHlzaWNhbEFkZHJlc3M7CisJfQorCS8vIEFkZCB0aGUgZGVzY3JpcHRvciBibG9jayB0byByZWNlaXZlIGRlc2NyaXB0b3IgcmluZyAwCisJUmluZ0Rlc2NyaXB0b3JDbWQtPlNnbCA9IFJjdkRlc2NyaXB0b3JCbG9ja0hkci0+UGh5c2ljYWxBZGRyZXNzOworCisJLy8gUmN2QnVmZmVyc09uQ2FyZCBpcyBub3QgcHJvdGVjdGVkIHZpYSB0aGUgcmVjZWl2ZSBsb2NrIChzZWUKKwkvLyBzeGdfcHJvY2Vzc19ldmVudF9xdWV1ZSkgV2UgZG9uJ3Qgd2FudCB0byBncmFwIGEgbG9jayBldmVyeSB0aW1lIGEKKwkvLyBidWZmZXIgaXMgcmV0dXJuZWQgdG8gdXMsIHNvIHdlIHVzZSBhdG9taWMgaW50ZXJsb2NrZWQgZnVuY3Rpb25zCisJLy8gaW5zdGVhZC4KKwlhZGFwdGVyLT5SY3ZCdWZmZXJzT25DYXJkICs9IFNYR19SQ1ZfREVTQ1JJUFRPUlNfUEVSX0JMT0NLOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiRHNjQmxrIiwKKwkJICBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIsCisJCSAgUmluZ0Rlc2NyaXB0b3JDbWQsIFJjdlJpbmdJbmZvLT5IZWFkLCBSY3ZSaW5nSW5mby0+VGFpbCk7CisKKwlXUklURV9SRUcoYWRhcHRlci0+VWNvZGVSZWdzWzBdLlJjdkNtZCwgMSwgdHJ1ZSk7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWEZpbEJsayIsCisJCSAgYWRhcHRlciwgYWRhcHRlci0+UmN2QnVmZmVyc09uQ2FyZCwKKwkJICBhZGFwdGVyLT5GcmVlUmN2QnVmZmVyQ291bnQsIGFkYXB0ZXItPkFsbFJjdkJsb2NrQ291bnQpOworCXJldHVybiAoU1RBVFVTX1NVQ0NFU1MpOworfQorCisvKgorICogc3hnX3N0b2NrX3Jjdl9idWZmZXJzIC0gU3RvY2sgdGhlIGNhcmQgd2l0aCByZWNlaXZlIGJ1ZmZlcnMKKyAqCisgKiBBcmd1bWVudHMgLQorICoJYWRhcHRlcgkJLSBBIHBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKgorICogUmV0dXJuCisgKglOb25lCisgKi8KK3N0YXRpYyB2b2lkIHN4Z19zdG9ja19yY3ZfYnVmZmVycyhwX2FkYXB0ZXJfdCBhZGFwdGVyKQoreworCVBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSIFJjdkRlc2NyaXB0b3JCbG9ja0hkcjsKKworCVNYR19UUkFDRShUUkFDRV9TWEcsIFN4Z1RyYWNlQnVmZmVyLCBUUkFDRV9OT0lTWSwgIlN0b2NrQnVmIiwKKwkJICBhZGFwdGVyLCBhZGFwdGVyLT5SY3ZCdWZmZXJzT25DYXJkLAorCQkgIGFkYXB0ZXItPkZyZWVSY3ZCdWZmZXJDb3VudCwgYWRhcHRlci0+QWxsUmN2QmxvY2tDb3VudCk7CisJLy8gRmlyc3QsIHNlZSBpZiB3ZSd2ZSBnb3QgbGVzcyB0aGFuIG91ciBtaW5pbXVtIHRocmVzaG9sZCBvZgorCS8vIHJlY2VpdmUgYnVmZmVycywgdGhlcmUgaXNuJ3QgYW4gYWxsb2NhdGlvbiBpbiBwcm9ncmVzcywgYW5kCisJLy8gd2UgaGF2ZW4ndCBleGNlZWRlZCBvdXIgbWF4aW11bS4uIGdldCBhbm90aGVyIGJsb2NrIG9mIGJ1ZmZlcnMKKwkvLyBOb25lIG9mIHRoaXMgbmVlZHMgdG8gYmUgU01QIHNhZmUuICBJdCdzIHJvdW5kIG51bWJlcnMuCisJaWYgKChhZGFwdGVyLT5GcmVlUmN2QnVmZmVyQ291bnQgPCBTWEdfTUlOX1JDVl9EQVRBX0JVRkZFUlMpICYmCisJICAgIChhZGFwdGVyLT5BbGxSY3ZCbG9ja0NvdW50IDwgU1hHX01BWF9SQ1ZfQkxPQ0tTKSAmJgorCSAgICAoYWRhcHRlci0+QWxsb2NhdGlvbnNQZW5kaW5nID09IDApKSB7CisJCXN4Z19hbGxvY2F0ZV9idWZmZXJfbWVtb3J5KGFkYXB0ZXIsCisJCQkJCSAgIFNYR19SQ1ZfQkxPQ0tfU0laRShhZGFwdGVyLT4KKwkJCQkJCQkgICAgICBSZWNlaXZlQnVmZmVyU2l6ZSksCisJCQkJCSAgIFNYR19CVUZGRVJfVFlQRV9SQ1YpOworCX0KKwkvLyBOb3cgZ3JhYiB0aGUgUmN2UUxvY2sgbG9jayBhbmQgcHJvY2VlZAorCXNwaW5fbG9jaygmYWRhcHRlci0+UmN2UUxvY2spOworCXdoaWxlIChhZGFwdGVyLT5SY3ZCdWZmZXJzT25DYXJkIDwgU1hHX1JDVl9EQVRBX0JVRkZFUlMpIHsKKwkJUExJU1RfRU5UUlkgX3BsZTsKKworCQkvLyBHZXQgYSBkZXNjcmlwdG9yIGJsb2NrCisJCVJjdkRlc2NyaXB0b3JCbG9ja0hkciA9IE5VTEw7CisJCWlmIChhZGFwdGVyLT5GcmVlUmN2QmxvY2tDb3VudCkgeworCQkJX3BsZSA9IFJlbW92ZUhlYWRMaXN0KCZhZGFwdGVyLT5GcmVlUmN2QmxvY2tzKTsKKwkJCVJjdkRlc2NyaXB0b3JCbG9ja0hkciA9CisJCQkgICAgY29udGFpbmVyX29mKF9wbGUsIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIsCisJCQkJCSBGcmVlTGlzdCk7CisJCQlhZGFwdGVyLT5GcmVlUmN2QmxvY2tDb3VudC0tOworCQkJUmN2RGVzY3JpcHRvckJsb2NrSGRyLT5TdGF0ZSA9IFNYR19CVUZGRVJfQlVTWTsKKwkJfQorCisJCWlmIChSY3ZEZXNjcmlwdG9yQmxvY2tIZHIgPT0gTlVMTCkgeworCQkJLy8gQmFpbCBvdXQuLgorCQkJYWRhcHRlci0+U3RhdHMuTm9NZW0rKzsKKwkJCWJyZWFrOworCQl9CisJCS8vIEZpbGwgaW4gdGhlIGRlc2NyaXB0b3IgYmxvY2sgYW5kIGdpdmUgaXQgdG8gdGhlIGNhcmQKKwkJaWYgKHN4Z19maWxsX2Rlc2NyaXB0b3JfYmxvY2soYWRhcHRlciwgUmN2RGVzY3JpcHRvckJsb2NrSGRyKSA9PQorCQkgICAgU1RBVFVTX0ZBSUxVUkUpIHsKKwkJCS8vIEZyZWUgdGhlIGRlc2NyaXB0b3IgYmxvY2sKKwkJCVNYR19GUkVFX1JDVl9ERVNDUklQVE9SX0JMT0NLKGFkYXB0ZXIsCisJCQkJCQkgICAgICBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIpOworCQkJYnJlYWs7CisJCX0KKwl9CisJc3Bpbl91bmxvY2soJmFkYXB0ZXItPlJjdlFMb2NrKTsKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJYRmlsQmxrcyIsCisJCSAgYWRhcHRlciwgYWRhcHRlci0+UmN2QnVmZmVyc09uQ2FyZCwKKwkJICBhZGFwdGVyLT5GcmVlUmN2QnVmZmVyQ291bnQsIGFkYXB0ZXItPkFsbFJjdkJsb2NrQ291bnQpOworfQorCisvKgorICogc3hnX2NvbXBsZXRlX2Rlc2NyaXB0b3JfYmxvY2tzIC0gUmV0dXJuIGRlc2NyaXB0b3IgYmxvY2tzIHRoYXQgaGF2ZSBiZWVuCisgKiBjb21wbGV0ZWQgYnkgdGhlIG1pY3JvY29kZQorICoKKyAqIEFyZ3VtZW50cyAtCisgKglhZGFwdGVyCQktIEEgcG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCUluZGV4CQktIFdoZXJlIHRoZSBtaWNyb2NvZGUgaXMgdXAgdG8KKyAqCisgKiBSZXR1cm4KKyAqCU5vbmUKKyAqLworc3RhdGljIHZvaWQgc3hnX2NvbXBsZXRlX2Rlc2NyaXB0b3JfYmxvY2tzKHBfYWRhcHRlcl90IGFkYXB0ZXIsCisJCQkJCSAgIHVuc2lnbmVkIGNoYXIgSW5kZXgpCit7CisJUFNYR19SQ1ZfUklORyBSaW5nWmVybyA9ICZhZGFwdGVyLT5SY3ZSaW5nc1swXTsKKwlQU1hHX1JJTkdfSU5GTyBSY3ZSaW5nSW5mbyA9ICZhZGFwdGVyLT5SY3ZSaW5nWmVyb0luZm87CisJUFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIgUmN2RGVzY3JpcHRvckJsb2NrSGRyOworCVBTWEdfQ01EIFJpbmdEZXNjcmlwdG9yQ21kOworCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiQ21wUkJsa3MiLAorCQkgIGFkYXB0ZXIsIEluZGV4LCBSY3ZSaW5nSW5mby0+SGVhZCwgUmN2UmluZ0luZm8tPlRhaWwpOworCisJLy8gTm93IGdyYWIgdGhlIFJjdlFMb2NrIGxvY2sgYW5kIHByb2NlZWQKKwlzcGluX2xvY2soJmFkYXB0ZXItPlJjdlFMb2NrKTsKKwlBU1NFUlQoSW5kZXggIT0gUmN2UmluZ0luZm8tPlRhaWwpOworCXdoaWxlIChSY3ZSaW5nSW5mby0+VGFpbCAhPSBJbmRleCkgeworCQkvLworCQkvLyBMb2NhdGUgdGhlIGN1cnJlbnQgQ21kIChyaW5nIGRlc2NyaXB0b3IgZW50cnkpLCBhbmQKKwkJLy8gYXNzb2NpYXRlZCByZWNlaXZlIGRlc2NyaXB0b3IgYmxvY2ssIGFuZCBhZHZhbmNlCisJCS8vIHRoZSB0YWlsCisJCS8vCisJCVNYR19SRVRVUk5fQ01EKFJpbmdaZXJvLAorCQkJICAgICAgIFJjdlJpbmdJbmZvLAorCQkJICAgICAgIFJpbmdEZXNjcmlwdG9yQ21kLCBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIpOworCQlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJDbXBSQmxrIiwKKwkJCSAgUmN2UmluZ0luZm8tPkhlYWQsIFJjdlJpbmdJbmZvLT5UYWlsLAorCQkJICBSaW5nRGVzY3JpcHRvckNtZCwgUmN2RGVzY3JpcHRvckJsb2NrSGRyKTsKKworCQkvLyBDbGVhciB0aGUgU0dMIGZpZWxkCisJCVJpbmdEZXNjcmlwdG9yQ21kLT5TZ2wgPSAwOworCQkvLyBBdHRlbXB0IHRvIHJlZmlsbCBpdCBhbmQgaGFuZCBpdCByaWdodCBiYWNrIHRvIHRoZQorCQkvLyBjYXJkLiAgSWYgd2UgZmFpbCB0byByZWZpbGwgaXQsIGZyZWUgdGhlIGRlc2NyaXB0b3IgYmxvY2sKKwkJLy8gaGVhZGVyLiAgVGhlIGNhcmQgd2lsbCBiZSByZXN0b2NrZWQgbGF0ZXIgdmlhIHRoZQorCQkvLyBSY3ZCdWZmZXJzT25DYXJkIHRlc3QKKwkJaWYgKHN4Z19maWxsX2Rlc2NyaXB0b3JfYmxvY2soYWRhcHRlciwgUmN2RGVzY3JpcHRvckJsb2NrSGRyKSA9PQorCQkgICAgU1RBVFVTX0ZBSUxVUkUpIHsKKwkJCVNYR19GUkVFX1JDVl9ERVNDUklQVE9SX0JMT0NLKGFkYXB0ZXIsCisJCQkJCQkgICAgICBSY3ZEZXNjcmlwdG9yQmxvY2tIZHIpOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5SY3ZRTG9jayk7CisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiWENSQmxrcyIsCisJCSAgYWRhcHRlciwgSW5kZXgsIFJjdlJpbmdJbmZvLT5IZWFkLCBSY3ZSaW5nSW5mby0+VGFpbCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzeGdfZHJpdmVyID0geworCS5uYW1lID0gRFJWX05BTUUsCisJLmlkX3RhYmxlID0gc3hnX3BjaV90YmwsCisJLnByb2JlID0gc3hnX2VudHJ5X3Byb2JlLAorCS5yZW1vdmUgPSBzeGdfZW50cnlfcmVtb3ZlLAorI2lmIFNYR19QT1dFUl9NQU5BR0VNRU5UX0VOQUJMRUQKKwkuc3VzcGVuZCA9IHN4Z3BtX3N1c3BlbmQsCisJLnJlc3VtZSA9IHN4Z3BtX3Jlc3VtZSwKKyNlbmRpZgorLyogICAgLnNodXRkb3duICAgPSAgICAgc2xpY19zaHV0ZG93biwgIE1PT0tfSU5WRVNUSUdBVEUgKi8KK307CisKK3N0YXRpYyBpbnQgX19pbml0IHN4Z19tb2R1bGVfaW5pdCh2b2lkKQoreworCXN4Z19pbml0X2RyaXZlcigpOworCisJaWYgKGRlYnVnID49IDApCisJCXN4Z19kZWJ1ZyA9IGRlYnVnOworCisJcmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoJnN4Z19kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgc3hnX21vZHVsZV9jbGVhbnVwKHZvaWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZzeGdfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQoc3hnX21vZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KHN4Z19tb2R1bGVfY2xlYW51cCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Zy5oIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9zeGcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDRjYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9zeGcuaApAQCAtMCwwICsxLDc3MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IKkgMjAwMC0yMDA4IEFsYWNyaXRlY2gsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogJElkOiBzeGcuaCx2IDEuMyAyMDA4LzA3LzI0IDE3OjI1OjA4IGNocmlzIEV4cCAkCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFMQUNSSVRFQ0gsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTEFDUklURUNILCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbgorICogYXJlIHRob3NlIG9mIHRoZSBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZworICogb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZCwgb2YgQWxhY3JpdGVjaCwgSW5jLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZJTEVOQU1FOiBzeGcuaAorICoKKyAqIFRoaXMgaXMgdGhlIGJhc2Ugc2V0IG9mIGhlYWRlciBkZWZpbml0aW9ucyBmb3IgdGhlIFNYRyBkcml2ZXIuCisgKi8KKyNpZm5kZWYgX19TWEdfRFJJVkVSX0hfXworI2RlZmluZSBfX1NYR19EUklWRVJfSF9fCisKKyNkZWZpbmUgcF9uZXRfZGV2aWNlIHN0cnVjdCBuZXRfZGV2aWNlICoKKy8vIFNYR19TVEFUUyAtIFByb2JhYmx5IG1vdmUgdGhlc2UgdG8gc29tZXBsYWNlIHdoZXJlCisvLyB0aGUgc2xpY3N0YXQgKHN4Z3N0YXQ/KSBwcm9ncmFtIGNhbiBnZXQgdGhlbS4KK3R5cGVkZWYgc3RydWN0IF9TWEdfU1RBVFMgeworCS8vIFhtdAorCXUzMgkJCQlYbXROQkw7CQkJCS8vIE9mZmxvYWQgc2VuZCBOQkwgY291bnQKKwl1NjQJCQkJRHVtYlhtdEJ5dGVzOwkJLy8gRHVtYm5pYyBzZW5kIGJ5dGVzCisJdTY0CQkJCVNsb3dYbXRCeXRlczsJCS8vIFNsb3dwYXRoIHNlbmQgYnl0ZXMKKwl1NjQJCQkJRmFzdFhtdEJ5dGVzOwkJLy8gRmFzdHBhdGggc2VuZCBieXRlcworCXU2NAkJCQlEdW1iWG10UGt0czsJCS8vIER1bWJuaWMgc2VuZCBwYWNrZXRzCisJdTY0CQkJCVNsb3dYbXRQa3RzOwkJLy8gU2xvd3BhdGggc2VuZCBwYWNrZXRzCisJdTY0CQkJCUZhc3RYbXRQa3RzOwkJLy8gRmFzdHBhdGggc2VuZCBwYWNrZXRzCisgICAgdTY0CQkJCUR1bWJYbXRVY2FzdFBrdHM7CS8vIGRpcmVjdGVkIHBhY2tldHMKKyAgICB1NjQJCQkJRHVtYlhtdE1jYXN0UGt0czsJLy8gTXVsdGljYXN0IHBhY2tldHMKKyAgICB1NjQJCQkJRHVtYlhtdEJjYXN0UGt0czsJLy8gT0lEX0dFTl9CUk9BRENBU1RfRlJBTUVTX1JDVgorICAgIHU2NAkJCQlEdW1iWG10VWNhc3RCeXRlczsJLy8gT0lEX0dFTl9ESVJFQ1RFRF9CWVRFU19YTUlUCisgICAgdTY0CQkJCUR1bWJYbXRNY2FzdEJ5dGVzOwkvLyBPSURfR0VOX01VTFRJQ0FTVF9CWVRFU19YTUlUCisgICAgdTY0CQkJCUR1bWJYbXRCY2FzdEJ5dGVzOwkvLyBPSURfR0VOX0JST0FEQ0FTVF9CWVRFU19YTUlUCisgICAgdTY0CQkJCVhtdEVycm9yczsJCQkvLyBPSURfR0VOX1hNSVRfRVJST1IKKyAgICB1NjQJCQkJWG10RGlzY2FyZHM7CQkvLyBPSURfR0VOX1hNSVRfRElTQ0FSRFMKKwl1NjQJCQkJWG10T2s7CQkJCS8vIE9JRF9HRU5fWE1JVF9PSworCXU2NAkJCQlYbXRRTGVuOwkJCS8vIE9JRF9HRU5fVFJBTlNNSVRfUVVFVUVfTEVOR1RICisJdTY0CQkJCVhtdFplcm9GdWxsOwkJLy8gVHJhbnNtaXQgcmluZyB6ZXJvIGZ1bGwKKwkvLyBSY3YKKwl1MzIJCQkJUmN2TkJMOwkJCQkvLyBPZmZsb2FkIHJlY2lldmUgTkJMIGNvdW50CisJdTY0CQkJCUR1bWJSY3ZCeXRlczsJCS8vIGR1bWJuaWMgcmVjdiBieXRlcworICAgIHU2NCAgICAgICAgICAgICBEdW1iUmN2VWNhc3RCeXRlczsJLy8gT0lEX0dFTl9ESVJFQ1RFRF9CWVRFU19SQ1YKKyAgICB1NjQgICAgICAgICAgICAgRHVtYlJjdk1jYXN0Qnl0ZXM7CS8vIE9JRF9HRU5fTVVMVElDQVNUX0JZVEVTX1JDVgorICAgIHU2NCAgICAgICAgICAgICBEdW1iUmN2QmNhc3RCeXRlczsJLy8gT0lEX0dFTl9CUk9BRENBU1RfQllURVNfUkNWCisJdTY0CQkJCVNsb3dSY3ZCeXRlczsJCS8vIFNsb3dwYXRoIHJlY3YgYnl0ZXMKKwl1NjQJCQkJRmFzdFJjdkJ5dGVzOwkJLy8gRmFzdHBhdGggcmVjdiBieXRlcworICAgIHU2NAkJCQlEdW1iUmN2UGt0czsJCS8vIE9JRF9HRU5fRElSRUNURURfRlJBTUVTX1JDVgorCXU2NAkJCQlEdW1iUmN2VGNwUGt0czsJCS8vIFNlZSBTeGdDb2xsZWN0U3RhdHMKKyAgICB1NjQJCQkJRHVtYlJjdlVjYXN0UGt0czsJLy8gZGlyZWN0ZWQgcGFja2V0cworICAgIHU2NAkJCQlEdW1iUmN2TWNhc3RQa3RzOwkvLyBNdWx0aWNhc3QgcGFja2V0cworICAgIHU2NAkJCQlEdW1iUmN2QmNhc3RQa3RzOwkvLyBPSURfR0VOX0JST0FEQ0FTVF9GUkFNRVNfUkNWCisJdTY0CQkJCVNsb3dSY3ZQa3RzOwkJLy8gT0lEX0dFTl9ESVJFQ1RFRF9GUkFNRVNfUkNWCisgICAgdTY0CQkJCVJjdkVycm9yczsJCQkvLyBPSURfR0VOX1JDVl9FUlJPUgorICAgIHU2NAkJCQlSY3ZEaXNjYXJkczsJCS8vIE9JRF9HRU5fUkNWX0RJU0NBUkRTCisJdTY0CQkJCVJjdk5vQnVmZmVyOwkJLy8gT0lEX0dFTl9SQ1ZfTk9fQlVGRkVSCisgICAgdTY0IAkJCVBkcUZ1bGw7CQkJLy8gUHJvY2Vzc2VkIERhdGEgUXVldWUgRnVsbAorCXU2NAkJCQlFdmVudFJpbmdGdWxsOwkJLy8gRXZlbnQgcmluZyBmdWxsCisJLy8gVmVyYm9zZSBzdGF0cworCXU2NAkJCQlNYXhTZW5kczsJCQkvLyBNYXggc2VuZHMgb3V0c3RhbmRpbmcKKwl1NjQJCQkJTm9TZ2xCdWY7CQkJLy8gU0dMIGJ1ZmZlciBhbGxvY2F0aW9uIGZhaWx1cmUKKwl1NjQJCQkJU2dsRmFpbDsJCQkvLyBORElTIFNHTCBmYWlsdXJlCisJdTY0CQkJCVNnbEFzeW5jOwkJCS8vIE5ESVMgU0dMIGZhaWx1cmUKKwl1NjQJCQkJTm9NZW07CQkJCS8vIE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKKwl1NjQJCQkJTnVtSW50czsJCQkvLyBJbnRlcnJ1cHRzCisJdTY0CQkJCUZhbHNlSW50czsJCQkvLyBJbnRlcnJ1cHQgd2l0aCBJU1IgPT0gMAorCXU2NAkJCQlYbXREcm9wczsJCQkvLyBObyBzYWhhcmEgRFJBTSBidWZmZXIgZm9yIHhtdAorCS8vIFNhaGFyYSByZWNlaXZlIHN0YXR1cworCXU2NAkJCQlUcmFuc3BvcnRDc3VtOwkJLy8gU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX0NTVU0KKwl1NjQJCQkJVHJhbnNwb3J0VWZsb3c7CQkvLyBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfVUZMT1cKKwl1NjQJCQkJVHJhbnNwb3J0SGRyTGVuOwkvLyBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfSERSTEVOCisJdTY0CQkJCU5ldHdvcmtDc3VtOwkJLy8gU1hHX1JDVl9TVEFUVVNfTkVUV09SS19DU1VNOgorCXU2NAkJCQlOZXR3b3JrVWZsb3c7CQkvLyBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX1VGTE9XOgorCXU2NAkJCQlOZXR3b3JrSGRyTGVuOwkJLy8gU1hHX1JDVl9TVEFUVVNfTkVUV09SS19IRFJMRU46CisJdTY0CQkJCVBhcml0eTsJCQkJLy8gU1hHX1JDVl9TVEFUVVNfUEFSSVRZCisJdTY0CQkJCUxpbmtQYXJpdHk7CQkJLy8gU1hHX1JDVl9TVEFUVVNfTElOS19QQVJJVFk6CisJdTY0CQkJCUxpbmtFYXJseTsJCQkvLyBTWEdfUkNWX1NUQVRVU19MSU5LX0VBUkxZOgorCXU2NAkJCQlMaW5rQnVmT2Zsb3c7CQkvLyBTWEdfUkNWX1NUQVRVU19MSU5LX0JVRk9GTE9XOgorCXU2NAkJCQlMaW5rQ29kZTsJCQkvLyBTWEdfUkNWX1NUQVRVU19MSU5LX0NPREU6CisJdTY0CQkJCUxpbmtEcmliYmxlOwkJLy8gU1hHX1JDVl9TVEFUVVNfTElOS19EUklCQkxFOgorCXU2NAkJCQlMaW5rQ3JjOwkJCS8vIFNYR19SQ1ZfU1RBVFVTX0xJTktfQ1JDOgorCXU2NAkJCQlMaW5rT2Zsb3c7CQkJLy8gU1hHX1JDVl9TVEFUVVNfTElOS19PRkxPVzoKKwl1NjQJCQkJTGlua1VmbG93OwkJCS8vIFNYR19SQ1ZfU1RBVFVTX0xJTktfVUZMT1c6Cit9IFNYR19TVEFUUywgKlBTWEdfU1RBVFM7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIERVTUItTklDIFNlbmQgcGF0aCBkZWZpbml0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgU1hHX0NPTVBMRVRFX0RVTUJfU0VORChfcEFkYXB0LCBfc2tiKSB7ICAgICAgICAgICAgICAgICAgICAgCQkgICAgCVwKKwlBU1NFUlQoX3NrYik7CQkJCQkJCQkJCQkJCSAgICAJCQlcCisgICAgZGV2X2tmcmVlX3NrYl9pcnEoX3NrYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKyNkZWZpbmUgU1hHX0RST1BfRFVNQl9TRU5EKF9wQWRhcHQsIF9za2IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAJCSAgICAJXAorCUFTU0VSVChfc2tiKTsJCQkJCQkJCQkJCQkJICAgIAkJCVwKKyAgICBkZXZfa2ZyZWVfc2tiKF9za2IpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLy8gTG9jYXRlIGN1cnJlbnQgcmVjZWl2ZSBoZWFkZXIgYnVmZmVyIGxvY2F0aW9uLiAgVXNlIHRoaXMKKy8vIGluc3RlYWQgb2YgUmN2RGF0YUhkci0+VmlydHVhbEFkZHJlc3Mgc2luY2UgdGhlIGRhdGEKKy8vIG1heSBoYXZlIGJlZW4gb2Zmc2V0IGJ5IFNYR19BRFZBTkNFX01ETF9PRkZTRVQKKyNkZWZpbmUgU1hHX1JFQ0VJVkVfREFUQV9MT0NBVElPTihfUmN2RGF0YUhkcikgICAgICAgIChfUmN2RGF0YUhkciktPnNrYi0+ZGF0YQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBEdW1iLU5JQyByZWNlaXZlIHByb2Nlc3NpbmcKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBEZWZpbmUgYW4gU1hHX1BBQ0tFVCBhcyBhbiBORElTX1BBQ0tFVAorI2RlZmluZSBQU1hHX1BBQ0tFVCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqCisvLyBJbmRpY2F0aW9ucyBhcnJheSBzaXplCisjZGVmaW5lIFNYR19SQ1ZfQVJSQVlTSVpFCTY0CisKKyNkZWZpbmUgU1hHX0FMTE9DQVRFX1JDVl9QQUNLRVQoX3BBZGFwdCwgX1JjdkRhdGFCdWZmZXJIZHIpIHsJCQkJXAorCXN0cnVjdCBza19idWZmICogc2tiOwkJCQkJCQkJCQkJCSAgICBcCisgICAgc2tiID0gYWxsb2Nfc2tiKDIwNDgsIEdGUF9BVE9NSUMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChza2IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAJKF9SY3ZEYXRhQnVmZmVySGRyKS0+c2tiID0gc2tiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNrYi0+bmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAJKF9SY3ZEYXRhQnVmZmVySGRyKS0+c2tiID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIFNYR19GUkVFX1JDVl9QQUNLRVQoX1JjdkRhdGFCdWZmZXJIZHIpIHsJCQkJCQkJXAorCWlmKChfUmN2RGF0YUJ1ZmZlckhkciktPnNrYikgewkJCQkJCQkJCQkJXAorCQlkZXZfa2ZyZWVfc2tiKChfUmN2RGF0YUJ1ZmZlckhkciktPnNrYik7CQkJCQkJICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8vIE1hY3JvIHRvIGFkZCBhIE5ESVNfUEFDS0VUIHRvIGFuIGluZGljYXRpb24gYXJyYXkKKy8vIElmIHdlIGZpbGwgdXAgb3VyIGFycmF5IG9mIHBhY2tldCBwb2ludGVycywgdGhlbiBpbmRpY2F0ZSB0aGlzCisvLyBibG9jayB1cCBub3cgYW5kIHN0YXJ0IG9uIGEgbmV3IG9uZS4KKyNkZWZpbmUJU1hHX0FERF9SQ1ZfUEFDS0VUKF9wQWRhcHQsIF9QYWNrZXQsIF9QcmV2UGFja2V0LCBfSW5kaWNhdGlvbkxpc3QsIF9OdW1QYWNrZXRzKSB7IFwKKwkoX0luZGljYXRpb25MaXN0KVtfTnVtUGFja2V0c10gPSAoX1BhY2tldCk7CQkJCQkJCQkJCVwKKwkoX051bVBhY2tldHMpKys7CQkJCQkJCQkJCQkJCQkJCVwKKwlpZigoX051bVBhY2tldHMpID09IFNYR19SQ1ZfQVJSQVlTSVpFKSB7CQkJCQkJCQkJCVwKKwkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiSW5kaWNSY3YiLAkJCQlcCisJCQkJICAgKF9OdW1QYWNrZXRzKSwgMCwgMCwgMCk7CQkJCQkJCQkJCQlcCisgICAgICAgIG5ldGlmX3J4KChfSW5kaWNhdGlvbkxpc3QpLChfTnVtUGFja2V0cykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCShfTnVtUGFja2V0cykgPSAwOwkJCQkJCQkJCQkJCQkJCVwKKwl9CQkJCQkJCQkJCQkJCQkJCQkJCQlcCit9CisKKyNkZWZpbmUgU1hHX0lORElDQVRFX1BBQ0tFVFMoX3BBZGFwdCwgX0luZGljYXRpb25MaXN0LCBfTnVtUGFja2V0cykgewkJCVwKKwlpZihfTnVtUGFja2V0cykgewkJCQkJCQkJCQkJCQkJCVwKKwkJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiSW5kaWNSY3YiLAkJCVwKKwkJCQkgICAoX051bVBhY2tldHMpLCAwLCAwLCAwKTsJCQkJCQkJCQkJXAorICAgICAgICBuZXRpZl9yeCgoX0luZGljYXRpb25MaXN0KSwoX051bVBhY2tldHMpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCShfTnVtUGFja2V0cykgPSAwOwkJCQkJCQkJCQkJCQkJXAorCX0JCQkJCQkJCQkJCQkJCQkJCQkJXAorfQorCisjZGVmaW5lIFNYR19SRUlOSUFUSUFMSVpFX1BBQ0tFVChfUGFja2V0KQkJCQkJCQkJCQlcCisJe30gIC8qX05kaXNSZWluaXRpYWxpemVQYWNrZXQoX1BhY2tldCkqLyAgLyogIHRoaXMgaXMgbm90IG5lY2Vzc2FyeSB3aXRoIGFuIHNrYiAqLworCisvLyBEZWZpbml0aW9ucyB0byBpbml0aWFsaXplIER1bWItbmljIFJlY2VpdmUgTkJMcworI2RlZmluZSBTWEdfUkNWX1BBQ0tFVF9CVUZGRVJfSERSKF9QYWNrZXQpICgoKFBTWEdfUkNWX05CTF9SRVNFUlZFRCkoKF9QYWNrZXQpLT5NaW5pcG9ydFJlc2VydmVkRXgpKS0+UmN2RGF0YUJ1ZmZlckhkcikKKworI2RlZmluZSBTWEdfUkNWX1NFVF9DSEVDS1NVTV9JTkZPKF9QYWNrZXQsIF9DcGkpCVwKKwlORElTX1BFUl9QQUNLRVRfSU5GT19GUk9NX1BBQ0tFVCgoX1BhY2tldCksIFRjcElwQ2hlY2tzdW1QYWNrZXRJbmZvKSA9IChQVk9JRCkoX0NwaSkKKworI2RlZmluZSBTWEdfUkNWX1NFVF9UT0VQTElUWihfUGFja2V0LCBfVG9lcGxpdHosIF9UeXBlLCBfRnVuY3Rpb24pIHsJCVwKKwlORElTX1BBQ0tFVF9TRVRfSEFTSF9WQUxVRSgoX1BhY2tldCksIChfVG9lcGxpdHopKTsJCQkJCQlcCisJTkRJU19QQUNLRVRfU0VUX0hBU0hfVFlQRSgoX1BhY2tldCksIChfVHlwZSkpOwkJCQkJCQlcCisJTkRJU19QQUNLRVRfU0VUX0hBU0hfRlVOQ1RJT04oKF9QYWNrZXQpLCAoX0Z1bmN0aW9uKSk7CQkJCQlcCit9CisKKyNkZWZpbmUgU1hHX1JDVl9TRVRfVkxBTl9JTkZPKF9QYWNrZXQsIF9WbGFuSWQsIF9Qcmlvcml0eSkgewkJCQkJXAorCU5ESVNfUEFDS0VUXzgwMjFRX0lORk8JX1BhY2tldDgwMjFxSW5mbzsJCQkJCQkJCQlcCisJX1BhY2tldDgwMjFxSW5mby5UYWdIZWFkZXIuVmxhbklkID0gKF9WbGFuSWQpOwkJCQkJCQkJXAorCV9QYWNrZXQ4MDIxcUluZm8uVGFnSGVhZGVyLlVzZXJQcmlvcml0eSA9IChfUHJpb3JpdHkpOwkJCQkJCVwKKwlORElTX1BFUl9QQUNLRVRfSU5GT19GUk9NX1BBQ0tFVCgoX1BhY2tldCksIEllZWU4MDIxUU5ldEJ1ZmZlckxpc3RJbmZvKSA9IAlcCisJCV9QYWNrZXQ4MDIxcUluZm8uVmFsdWU7CQkJCQkJCQkJCQkJCVwKK30KKworI2RlZmluZSBTWEdfQURKVVNUX1JDVl9QQUNLRVQoX1BhY2tldCwgX1JjdkRhdGFCdWZmZXJIZHIsIF9FdmVudCkgewkJCVwKKwlTWEdfVFJBQ0UoVFJBQ0VfU1hHLCBTeGdUcmFjZUJ1ZmZlciwgVFJBQ0VfTk9JU1ksICJEdW1iUmN2IiwJCQlcCisJCQkgICAoX1JjdkRhdGFCdWZmZXJIZHIpLCAoX1BhY2tldCksCQkJCQkJCQlcCisJCQkgICAoX0V2ZW50KS0+U3RhdHVzLCAwKTsJICAgICAgICAgICAgICAgICAgICAJCQkJXAorCUFTU0VSVCgoX0V2ZW50KS0+TGVuZ3RoIDw9IChfUmN2RGF0YUJ1ZmZlckhkciktPlNpemUpOwkJCQkJXAorICAgIFBhY2tldC0+bGVuID0gKF9FdmVudCktPkxlbmd0aDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTWFjcm9zIHRvIGZyZWUgYSByZWNlaXZlIGRhdGEgYnVmZmVyIGFuZCByZWNlaXZlIGRhdGEgZGVzY3JpcHRvciBibG9jaworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTk9URSAtIExvY2sgbXVzdCBiZSBoZWxkIHdpdGggUkNWIG1hY3JvcworI2RlZmluZSBTWEdfR0VUX1JDVl9EQVRBX0JVRkZFUihfcEFkYXB0LCBfSGRyKSB7CQkJCQkJCQlcCisJUExJU1RfRU5UUlkgICAgIAkJCQlfcGxlOwkJCQkJCQkJCQlcCisJX0hkciA9IE5VTEw7CQkJCQkJCQkJCQkJCQkJCVwKKwlpZigoX3BBZGFwdCktPkZyZWVSY3ZCdWZmZXJDb3VudCkgewkJCQkJCQkJCQkJXAorCQlBU1NFUlQoIShJc0xpc3RFbXB0eSgmKF9wQWRhcHQpLT5GcmVlUmN2QnVmZmVycykpKTsJCQkJCQlcCisJCV9wbGUgPSBSZW1vdmVIZWFkTGlzdCgmKF9wQWRhcHQpLT5GcmVlUmN2QnVmZmVycyk7CSAgICAJCQkJXAorCQkoX0hkcikgPSBjb250YWluZXJfb2YoX3BsZSwgU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIsIEZyZWVMaXN0KTsJICAgICAgICBcCisJCShfcEFkYXB0KS0+RnJlZVJjdkJ1ZmZlckNvdW50LS07CQkJCQkJCQkJCVwKKwkJQVNTRVJUKChfSGRyKS0+U3RhdGUgPT0gU1hHX0JVRkZFUl9GUkVFKTsJCQkJCQkJCVwKKwl9CQkJCQkJCQkJCQkJCQkJCQkJCVwKK30KKworI2RlZmluZSBTWEdfRlJFRV9SQ1ZfREFUQV9CVUZGRVIoX3BBZGFwdCwgX0hkcikgewkJCQkJCQlcCisJU1hHX1RSQUNFKFRSQUNFX1NYRywgU3hnVHJhY2VCdWZmZXIsIFRSQUNFX05PSVNZLCAiUnRuREhkciIsCQkJXAorCQkJICAgKF9IZHIpLCAoX3BBZGFwdCktPkZyZWVSY3ZCdWZmZXJDb3VudCwJCQkJCQlcCisJCQkgICAoX0hkciktPlN0YXRlLCAoX0hkciktPlZpcnR1YWxBZGRyZXNzKTsJCQkJCQlcCisvKglTWEdfUkVTVE9SRV9NRExfT0ZGU0VUKF9IZHIpOwkqLwkJCQkJCQkJCQlcCisJKF9wQWRhcHQpLT5GcmVlUmN2QnVmZmVyQ291bnQrKzsJCQkJCQkJCQkJXAorCUFTU0VSVCgoKF9wQWRhcHQpLT5BbGxSY3ZCbG9ja0NvdW50ICogU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0spID49IChfcEFkYXB0KS0+RnJlZVJjdkJ1ZmZlckNvdW50KTsgXAorCUFTU0VSVCgoX0hkciktPlN0YXRlICE9IFNYR19CVUZGRVJfRlJFRSk7CQkJCQkJCQlcCisJKF9IZHIpLT5TdGF0ZSA9IFNYR19CVUZGRVJfRlJFRTsJCQkJCQkJCQkJXAorCUluc2VydFRhaWxMaXN0KCYoX3BBZGFwdCktPkZyZWVSY3ZCdWZmZXJzLCAmKChfSGRyKS0+RnJlZUxpc3QpKTsJCVwKK30KKworI2RlZmluZSBTWEdfRlJFRV9SQ1ZfREVTQ1JJUFRPUl9CTE9DSyhfcEFkYXB0LCBfSGRyKSB7CQkJCQkJXAorCUFTU0VSVCgoX0hkciktPlN0YXRlICE9IFNYR19CVUZGRVJfRlJFRSk7CQkJCQkJCQlcCisJKF9IZHIpLT5TdGF0ZSA9IFNYR19CVUZGRVJfRlJFRTsJCQkJCQkJCQkJXAorCShfcEFkYXB0KS0+RnJlZVJjdkJsb2NrQ291bnQrKzsJCQkJCQkJCQkJCVwKKwlBU1NFUlQoKF9wQWRhcHQpLT5BbGxSY3ZCbG9ja0NvdW50ID49IChfcEFkYXB0KS0+RnJlZVJjdkJsb2NrQ291bnQpOwlcCisJSW5zZXJ0VGFpbExpc3QoJihfcEFkYXB0KS0+RnJlZVJjdkJsb2NrcywgJihfSGRyKS0+RnJlZUxpc3QpOwkJCVwKK30KKworLy8gU0dMIG1hY3JvcworI2RlZmluZSBTWEdfRlJFRV9TR0xfQlVGRkVSKF9wQWRhcHQsIF9TZ2wsIF9OQikgewlcCisJc3Bpbl9sb2NrKCYoX3BBZGFwdCktPlNnbFFMb2NrKTsJCVwKKwkoX3BBZGFwdCktPkZyZWVTZ2xCdWZmZXJDb3VudCsrOwkJXAorCUFTU0VSVCgoX3BBZGFwdCktPkFsbFNnbEJ1ZmZlckNvdW50ID49IChfcEFkYXB0KS0+RnJlZVNnbEJ1ZmZlckNvdW50KTtcCisJQVNTRVJUKCEoKF9TZ2wpLT5TdGF0ZSAmIFNYR19CVUZGRVJfRlJFRSkpOwlcCisJKF9TZ2wpLT5TdGF0ZSA9IFNYR19CVUZGRVJfRlJFRTsJCVwKKwlJbnNlcnRUYWlsTGlzdCgmKF9wQWRhcHQpLT5GcmVlU2dsQnVmZmVycywgJihfU2dsKS0+RnJlZUxpc3QpOwlcCisJc3Bpbl91bmxvY2soJihfcEFkYXB0KS0+U2dsUUxvY2spOwkJXAorfQorCisvLyBHZXQgYW4gU0dMIGJ1ZmZlciBmcm9tIHRoZSBmcmVlIHF1ZXVlLiAgVGhlIGZpcnN0IHBhcnQgb2YgdGhpcyBtYWNybworLy8gYXR0ZW1wdHMgdG8ga2VlcCBhaGVhZCBvZiBidWZmZXIgZGVwbGV0aW9uIGJ5IGFsbG9jYXRpbmcgbW9yZSB3aGVuCisvLyB3ZSBoaXQgYSBtaW5pbXVtIHRocmVzaG9sZC4gIE5vdGUgdGhhdCB3ZSBkb24ndCBncmFiIHRoZSBsb2NrCisvLyB1bnRpbCBhZnRlciB0aGF0LiAgV2UncmUgZGVhbGluZyB3aXRoIHJvdW5kIG51bWJlcnMgaGVyZSwgc28gd2UgZG9uJ3QgbmVlZCB0bywKKy8vIGFuZCBub3QgZ3JhYmJpbmcgaXQgYXZvaWRzIGEgcG9zc2libGUgZG91YmxlLXRyaXAuCisjZGVmaW5lIFNYR19HRVRfU0dMX0JVRkZFUihfcEFkYXB0LCBfU2dsKSB7CQkJCVwKKwlQTElTVF9FTlRSWSBfcGxlOwkJCQkJCVwKKwlpZiAoKF9wQWRhcHQtPkZyZWVTZ2xCdWZmZXJDb3VudCA8IFNYR19NSU5fU0dMX0JVRkZFUlMpICYmCVwKKwkgICAoX3BBZGFwdC0+QWxsU2dsQnVmZmVyQ291bnQgPCBTWEdfTUFYX1NHTF9CVUZGRVJTKSAmJglcCisJICAgKF9wQWRhcHQtPkFsbG9jYXRpb25zUGVuZGluZyA9PSAwKSkgewkJCVwKKwkJc3hnX2FsbG9jYXRlX2J1ZmZlcl9tZW1vcnkoX3BBZGFwdCwJCQlcCisJCQkoc2l6ZW9mKFNYR19TQ0FUVEVSX0dBVEhFUikgKyBTWEdfU0dMX0JVRl9TSVpFKSxcCisJCQlTWEdfQlVGRkVSX1RZUEVfU0dMKTsJCQkJXAorCX0JCQkJCQkJCVwKKwlfU2dsID0gTlVMTDsJCQkJCQkJXAorCXNwaW5fbG9jaygmKF9wQWRhcHQpLT5TZ2xRTG9jayk7CQkJCVwKKwlpZigoX3BBZGFwdCktPkZyZWVTZ2xCdWZmZXJDb3VudCkgewkJCQlcCisJCUFTU0VSVCghKElzTGlzdEVtcHR5KCYoX3BBZGFwdCktPkZyZWVTZ2xCdWZmZXJzKSkpOwlcCisJCV9wbGUgPSBSZW1vdmVIZWFkTGlzdCgmKF9wQWRhcHQpLT5GcmVlU2dsQnVmZmVycyk7CVwKKwkJKF9TZ2wpID0gY29udGFpbmVyX29mKF9wbGUsIFNYR19TQ0FUVEVSX0dBVEhFUiwgRnJlZUxpc3QpOyBcCisgICAgICAgICAgICAoX3BBZGFwdCktPkZyZWVTZ2xCdWZmZXJDb3VudC0tOwkJCQlcCisJCUFTU0VSVCgoX1NnbCktPlN0YXRlID09IFNYR19CVUZGRVJfRlJFRSk7CQlcCisJCShfU2dsKS0+U3RhdGUgPSBTWEdfQlVGRkVSX0JVU1k7CQkJXAorCQkoX1NnbCktPnBTZ2wgPSBOVUxMOwkJCQkJXAorCX0JCQkJCQkJCVwKKwlzcGluX3VubG9jaygmKF9wQWRhcHQpLT5TZ2xRTG9jayk7CQkJCVwKK30KKworLy8KKy8vIFNYR19NVUxUSUNBU1RfQUREUkVTUworLy8KKy8vIExpbmtlZCBsaXN0IG9mIG11bHRpY2FzdCBhZGRyZXNzZXMuCit0eXBlZGVmIHN0cnVjdCBfU1hHX01VTFRJQ0FTVF9BRERSRVNTIHsKKwl1bnNpZ25lZCBjaGFyCQkJCQkJCUFkZHJlc3NbNl07CisJc3RydWN0IF9TWEdfTVVMVElDQVNUX0FERFJFU1MJKk5leHQ7Cit9IFNYR19NVUxUSUNBU1RfQUREUkVTUywgKlBTWEdfTVVMVElDQVNUX0FERFJFU1M7CisKKy8vIFN0cnVjdHVyZSB0byBtYWludGFpbiBjaGltbmV5IHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHF1ZXVlcy4KKy8vIFRoaXMgc3RydWN0dXJlIG1haW50YWlucyBORVRfQlVGRkVSX0xJU1QgcXVldWVzIHRoYXQgYXJlCisvLyBnaXZlbiB0byB1cyB2aWEgdGhlIENoaW1uZXkgTWluaXBvcnRUY3BPZmZsb2FkU2VuZCBhbmQKKy8vIE1pbmlwb3J0VGNwT2ZmbG9hZFJlY2VpdmUgcm91dGluZXMuICBUaGlzIHN0cnVjdHVyZSBET0VTIE5PVAorLy8gbWFuYWdlIG91ciBkYXRhIGJ1ZmZlciBxdWV1ZQordHlwZWRlZiBzdHJ1Y3QgX1NYR19CVUZGRVJfUVVFVUUgeworCXUzMgkJCQkJCVR5cGU7CQkJLy8gU2xvdyBvciBmYXN0IC0gU2VlIGJlbG93CisJdTMyCQkJCQkJRGlyZWN0aW9uOwkJLy8gWG10IG9yIFJjdgorCXUzMgkJCQkJCUJ5dGVzOwkJCS8vIEJ5dGUgY291bnQKKwl1MzIgKiAgICAgICAgCQkJSGVhZDsJCQkvLyBTZW5kIHF1ZXVlIGhlYWQKKwl1MzIgKiAgICAgICAgCQkJVGFpbDsJCQkvLyBTZW5kIHF1ZXVlIHRhaWwKKy8vCVBORVRfQlVGRkVSX0xJU1QJCQlOZXh0TkJMOwkJLy8gU2hvcnQgY3V0IC0gbmV4dCBOQkwKKy8vCVBORVRfQlVGRkVSCQkJCQlOZXh0TkI7CQkJLy8gU2hvcnQgY3V0IC0gbmV4dCBOQgorfSBTWEdfQlVGRkVSX1FVRVVFLCAqUFNYR19CVUZGRVJfUVVFVUU7CisKKyNkZWZpbmUJCVNYR19TTE9XX1NFTkRfQlVGRkVSCTAKKyNkZWZpbmUJCVNYR19GQVNUX1NFTkRfQlVGRkVSCTEKKyNkZWZpbmUgCVNYR19SRUNFSVZFX0JVRkZFUgkJMgorCisjZGVmaW5lIFNYR19JTklUX0JVRkZFUihfQnVmZmVyLCBfVHlwZSkgeyAJCQkJCQlcCisJKF9CdWZmZXIpLT5UeXBlID0gKF9UeXBlKTsJCQkJCQkJCQlcCisJaWYoKF9UeXBlKSA9PSBTWEdfUkVDRUlWRV9CVUZGRVIpIHsJCQkJCQkJXAorCQkoX0J1ZmZlciktPkRpcmVjdGlvbiA9IDA7CQkJCQkJCQlcCisJfSBlbHNlIHsJCQkJCQkJCQkJCQkJXAorCQkoX0J1ZmZlciktPkRpcmVjdGlvbiA9IE5ESVNfU0dfTElTVF9XUklURV9UT19ERVZJQ0U7CVwKKwl9CQkJCQkJCQkJCQkJCQkJXAorCShfQnVmZmVyKS0+Qnl0ZXMgPSAwOwkJCQkJCQkJCQlcCisJKF9CdWZmZXIpLT5IZWFkID0gTlVMTDsJCQkJCQkJCQkJXAorCShfQnVmZmVyKS0+VGFpbCA9IE5VTEw7CQkJCQkJCQkJCVwKK30KKworCisjZGVmaW5lIFNYR19SU1NfQ1BVX0NPVU5UKF9wQWRhcHQpIAkJCQkJCQkJXAorCSgoX3BBZGFwdCktPlJzc0VuYWJsZWQgCT8gIE5SX0NQVVMgOiAxKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRFJJVkVSIGFuZCBBREFQVEVSIHN0cnVjdHVyZXMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvLyBBZGFwdGVyIHN0YXRlcyAtIFRoZXNlIHN0YXRlcyBjbG9zZWx5IG1hdGNoIHRoZSBhZGFwdGVyIHN0YXRlcworLy8gZG9jdW1lbnRlZCBpbiB0aGUgRERLICh3aXRoIGEgZmV3IGV4Y2VwdGlvbnMpLgordHlwZWRlZiBlbnVtIF9TWEdfU1RBVEUgeworCVNYR19TVEFURV9JTklUSUFMSVpJTkcsCQkJLy8gSW5pdGlhbGl6aW5nCisJU1hHX1NUQVRFX0JPT1RESUFHLAkJCQkvLyBCb290LURpYWdub3N0aWMgbW9kZQorCVNYR19TVEFURV9QQVVTSU5HLAkJCQkvLyBQYXVzaW5nCisJU1hHX1NUQVRFX1BBVVNFRCwJCQkJLy8gUGF1c2VkCisJU1hHX1NUQVRFX1JVTk5JTkcsCQkJCS8vIFJ1bm5pbmcKKwlTWEdfU1RBVEVfUkVTRVRUSU5HLAkJCS8vIFJlc2V0IGluIHByb2dyZXNzCisJU1hHX1NUQVRFX1NMRUVQLAkJCQkvLyBTbGVlcGluZworCVNYR19TVEFURV9ESUFHLAkJCQkJLy8gRGlhZ25vc3RpYyBtb2RlCisJU1hHX1NUQVRFX0hBTFRJTkcsCQkJCS8vIEhhbHRpbmcKKwlTWEdfU1RBVEVfSEFMVEVELAkJCQkvLyBEb3duIG9yIG5vdC1pbml0aWFsaXplZAorCVNYR19TVEFURV9TSFVURE9XTgkJCQkvLyBzaHV0ZG93bgorfSBTWEdfU1RBVEUsICpQU1hHX1NUQVRFOworCisvLyBMaW5rIHN0YXRlCit0eXBlZGVmIGVudW0gX1NYR19MSU5LX1NUQVRFIHsKKwlTWEdfTElOS19ET1dOLAorCVNYR19MSU5LX1VQCit9IFNYR19MSU5LX1NUQVRFLCAqUFNYR19MSU5LX1NUQVRFOworCisvLyBMaW5rIGluaXRpYWxpemF0aW9uIHRpbWVvdXQgaW4gMTAwdXMgdW5pdHMKKyNkZWZpbmUgU1hHX0xJTktfVElNRU9VVAkxMDAwMDAJCS8vIDEwIFNlY29uZHMgLSBSRURVQ0UhCisKKworLy8gTWljcm9jb2RlIGZpbGUgc2VsZWN0aW9uIGNvZGVzCit0eXBlZGVmIGVudW0gX1NYR19VQ09ERV9TRUwgeworCVNYR19VQ09ERV9TQUhBUkEsCQkJCS8vIFNhaGFyYSB1Y29kZQorCVNYR19VQ09ERV9TRElBR0NQVSwJCQkJLy8gU2FoYXJhIENQVSBkaWFnbm9zdGljIHVjb2RlCisJU1hHX1VDT0RFX1NESUFHU1lTCQkJCS8vIFNhaGFyYSBzeXN0ZW0gZGlhZ25vc3RpYyB1Y29kZQorfSBTWEdfVUNPREVfU0VMOworCisKKyNkZWZpbmUgU1hHX0RJU0FCTEVfQUxMX0lOVEVSUlVQVFMoX3BhZGFwdCkgc3hnX2Rpc2FibGVfaW50ZXJydXB0KF9wYWRhcHQpCisjZGVmaW5lIFNYR19FTkFCTEVfQUxMX0lOVEVSUlVQVFMoX3BhZGFwdCkgc3hnX2VuYWJsZV9pbnRlcnJ1cHQoX3BhZGFwdCkKKworLy8gVGhpcyBwcm9iYWJseSBsaXZlcyBpbiBhIHByb3RvLmggZmlsZS4gIE1vdmUgbGF0ZXIKKyNkZWZpbmUgU1hHX01VTFRJQ0FTVF9QQUNLRVQoX3BldGhlcikgKChfcGV0aGVyKS0+ZXRoZXJfZGhvc3RbMF0gJiAweDAxKQorI2RlZmluZSBTWEdfQlJPQURDQVNUX1BBQ0tFVChfcGV0aGVyKSAoKCoodTMyICopKF9wZXRoZXIpLT5ldGhlcl9kaG9zdCA9PSAweEZGRkZGRkZGKSAmJiBcCisJCQkJKCoodTE2ICopJihfcGV0aGVyKS0+ZXRoZXJfZGhvc3RbNF0gPT0gMHhGRkZGKSkKKworLy8gRm9yIERiZ1ByaW50cworI2RlZmluZSBTWEdfSUQgICAgICBEUEZMVFJfSUhWTkVUV09SS19JRAorI2RlZmluZSBTWEdfRVJST1IgICBEUEZMVFJfRVJST1JfTEVWRUwKKworLy8KKy8vIFNYR19EUklWRVIgc3RydWN0dXJlIC0KKy8vCisvLyBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3hnIGRyaXZlci4gIFRoZXJlIGlzIG9ubHkKKy8vIG9uZSBvZiB0aGVzZSwgYW5kIGl0IGlzIGRlZmluZWQgYXMgYSBnbG9iYWwuCit0eXBlZGVmIHN0cnVjdCBfU1hHX0RSSVZFUiB7CisJc3RydWN0IF9hZGFwdGVyX3QJKkFkYXB0ZXJzOwkJLy8gTGlua2VkIGxpc3Qgb2YgYWRhcHRlcnMKKwl1c2hvcnQJCQkJQWRhcHRlcklEOwkJLy8gTWFpbnRhaW4gdW5pcXVlIGFkYXB0ZXIgSUQKK30gU1hHX0RSSVZFUiwgKlBTWEdfRFJJVkVSOworCisjaWZkZWYgU1RBVFVTX1NVQ0NFU1MKKyN1bmRlZiBTVEFUVVNfU1VDQ0VTUworI2VuZGlmCisKKyNkZWZpbmUgU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU1RBVFVTX1BFTkRJTkcgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU1RBVFVTX0ZBSUxVUkUgICAgICAgICAgICAgLTEKKyNkZWZpbmUgU1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgLTIKKyNkZWZpbmUgU1RBVFVTX05PVF9TVVBQT1JURUQgICAgICAgLTMKKyNkZWZpbmUgU1RBVFVTX0JVRkZFUl9UT09fU0hPUlQgICAgLTQKKyNkZWZpbmUgU1RBVFVTX1JFU09VUkNFUyAgICAgICAgICAgLTUKKworI2RlZmluZSBTTElDX01BWF9DQVJEUyAgICAgICAgICAgICAgMzIKKyNkZWZpbmUgU0xJQ19NQVhfUE9SVFMgICAgICAgICAgICAgIDQgICAgICAgIC8qIE1heCAjIG9mIHBvcnRzIHBlciBjYXJkICAgKi8KKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorLy8gRHVtcCBidWZmZXIgc2l6ZQorLy8KKy8vIFRoaXMgY2Fubm90IGJlIGJpZ2dlciB0aGFuIHRoZSBtYXggRE1BIHNpemUgdGhlIGNhcmQgc3VwcG9ydHMsCisvLyBnaXZlbiB0aGUgY3VycmVudCBjb2RlIHN0cnVjdHVyZSBpbiB0aGUgaG9zdCBhbmQgdWNvZGUuCisvLyBNb2phdmUgc3VwcG9ydHMgMTZLLCBPYXNpcyBzdXBwb3J0cyAxNkstMSwgc28KKy8vIGp1c3Qgc2V0IHRoaXMgYXQgMTVLLCBzaG91bGRudCBtYWtlIHRoYXQgbXVjaCBvZiBhIGRpZmYuCisjZGVmaW5lIERVTVBfQlVGX1NJWkUgICAgICAgICAgICAgICAweDNDMDAKKyNlbmRpZgorCisjZGVmaW5lIE1JTihhLCBiKSAoKHUzMikoYSkgPCAodTMyKShiKSA/IChhKSA6IChiKSkKKyNkZWZpbmUgTUFYKGEsIGIpICgodTMyKShhKSA+ICh1MzIpKGIpID8gKGEpIDogKGIpKQorCit0eXBlZGVmIHN0cnVjdCBfbWNhc3RfYWRkcmVzc190Cit7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NbNl07CisgICAgc3RydWN0IF9tY2FzdF9hZGRyZXNzX3QgICAqbmV4dDsKK30gIG1jYXN0X2FkZHJlc3NfdCwgKnBfbWNhc3RfYWRkcmVzc190OworCisjZGVmaW5lIENBUkRfRE9XTiAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBDQVJEX1VQICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgQ0FSRF9GQUlMICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIENBUkRfRElBRyAgICAgICAgMHgwMDAwMDAwMworI2RlZmluZSBDQVJEX1NMRUVQICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBBREFQVF9ET1dOICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgQURBUFRfVVAgICAgICAgICAgICAgICAweDAxCisjZGVmaW5lIEFEQVBUX0ZBSUwgICAgICAgICAgICAgMHgwMgorI2RlZmluZSBBREFQVF9SRVNFVCAgICAgICAgICAgIDB4MDMKKyNkZWZpbmUgQURBUFRfU0xFRVAgICAgICAgICAgICAweDA0CisKKyNkZWZpbmUgQURBUFRfRkxBR1NfQk9PVFRJTUUgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgQURBUFRfRkxBR1NfSVM2NEJJVCAgICAgICAgICAgICAweDAwMDIKKyNkZWZpbmUgQURBUFRfRkxBR1NfUEVORElOR0xJTktET1dOICAgICAweDAwMDQKKyNkZWZpbmUgQURBUFRfRkxBR1NfRklCRVJNRURJQSAgICAgICAgICAweDAwMDgKKyNkZWZpbmUgQURBUFRfRkxBR1NfTE9DS1NfQUxMT0NFRCAgICAgICAweDAwMTAKKyNkZWZpbmUgQURBUFRfRkxBR1NfSU5UX1JFR0lTVEVSRUQgICAgICAweDAwMjAKKyNkZWZpbmUgQURBUFRfRkxBR1NfTE9BRF9USU1FUl9TRVQgICAgICAweDAwNDAKKyNkZWZpbmUgQURBUFRfRkxBR1NfU1RBVFNfVElNRVJfU0VUICAgICAweDAwODAKKyNkZWZpbmUgQURBUFRfRkxBR1NfUkVTRVRfVElNRVJfU0VUICAgICAweDAxMDAKKworI2RlZmluZSBMSU5LX0RPV04gICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgTElOS19DT05GSUcgICAgICAgICAgICAweDAxCisjZGVmaW5lIExJTktfVVAgICAgICAgICAgICAgICAgMHgwMgorCisjZGVmaW5lIExJTktfMTBNQiAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBMSU5LXzEwME1CICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgTElOS19BVVRPU1BFRUQgICAgICAgICAweDAyCisjZGVmaW5lIExJTktfMTAwME1CICAgICAgICAgICAgMHgwMworI2RlZmluZSBMSU5LXzEwMDAwTUIgICAgICAgICAgIDB4MDQKKworI2RlZmluZSBMSU5LX0hBTEZEICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgTElOS19GVUxMRCAgICAgICAgICAgICAweDAxCisjZGVmaW5lIExJTktfQVVUT0QgICAgICAgICAgICAgMHgwMgorCisjZGVmaW5lIE1BQ19ESVJFQ1RFRCAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBNQUNfQkNBU1QgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgTUFDX01DQVNUICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIE1BQ19QUk9NSVNDICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBNQUNfTE9PUEJBQ0sgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgTUFDX0FMTE1DQVNUICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgU0xJQ19EVVBMRVgoeCkgICAgKCh4PT1MSU5LX0ZVTExEKSA/ICJGRFgiIDogIkhEWCIpCisjZGVmaW5lIFNMSUNfU1BFRUQoeCkgICAgICgoeD09TElOS18xMDBNQikgPyAiMTAwTWIiIDogKCh4PT1MSU5LXzEwMDBNQikgPyAiMTAwME1iIiA6ICIgMTBNYiIpKQorI2RlZmluZSBTTElDX0xJTktTVEFURSh4KSAoKHg9PUxJTktfRE9XTikgPyAiRG93biIgOiAiVXAgICIpCisjZGVmaW5lIFNMSUNfQURBUFRFUl9TVEFURSh4KSAoKHg9PUFEQVBUX1VQKSA/ICJVUCIgOiAiRG93biIpCisjZGVmaW5lIFNMSUNfQ0FSRF9TVEFURSh4KSAgICAoKHg9PUNBUkRfVVApID8gIlVQIiA6ICJEb3duIikKKworCit0eXBlZGVmIHN0cnVjdCBfZXRoZXJfaGVhZGVyCit7CisgICAgdW5zaWduZWQgY2hhciAgICBldGhlcl9kaG9zdFs2XTsKKyAgICB1bnNpZ25lZCBjaGFyICAgIGV0aGVyX3Nob3N0WzZdOworICAgIHVzaG9ydCAgIGV0aGVyX3R5cGU7Cit9IGV0aGVyX2hlYWRlciwgKnBfZXRoZXJfaGVhZGVyOworCisKKyNkZWZpbmUgTlVNX0NGR19TUEFDRVMgICAgICAyCisjZGVmaW5lIE5VTV9DRkdfUkVHUyAgICAgICAgNjQKKwordHlwZWRlZiBzdHJ1Y3QgX3BoeXNjYXJkX3QKK3sKKyAgICBzdHJ1Y3QgX2FkYXB0ZXJfdCAgKmFkYXB0ZXJbU0xJQ19NQVhfUE9SVFNdOworICAgIHN0cnVjdCBfcGh5c2NhcmRfdCAqbmV4dDsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgYWRhcHRlcnNfYWxsb2NkOworfSBwaHlzY2FyZF90LCAqcF9waHlzY2FyZF90OworCit0eXBlZGVmIHN0cnVjdCBfc3hnYmFzZV9kcml2ZXIKK3sKKwlzcGlubG9ja190CWRyaXZlcl9sb2NrOworCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CS8qIGlycXNhdmUgZm9yIHNwaW5sb2NrICovCisJdTMyCQludW1fc3hnX2NhcmRzOworCXUzMgkJbnVtX3N4Z19wb3J0czsKKwl1MzIJCW51bV9zeGdfcG9ydHNfYWN0aXZlOworCXUzMgkJZHluYW1pY19pbnRhZ2c7CisJcF9waHlzY2FyZF90CXBoeXNfY2FyZDsKK30gc3hnYmFzZV9kcml2ZXJfdDsKKworCit0eXBlZGVmIHN0cnVjdCBfYWRhcHRlcl90Cit7CisJdm9pZCAqICAgICAgICAgICAgICAgaWZwOworCXVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBwb3J0OworCXBfcGh5c2NhcmRfdCAgICAgICAgcGh5c2NhcmQ7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIHBoeXNwb3J0OworCXVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBjYXJkaW5kZXg7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIGNhcmRfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgY2hpcGlkOworCXVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBidXNudW1iZXI7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIHNsb3RudW1iZXI7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIGZ1bmN0aW9ubnVtYmVyOworCXVzaG9ydCAgICAgICAgICAgICAgdmVuZGlkOworCXVzaG9ydCAgICAgICAgICAgICAgZGV2aWQ7CisJdXNob3J0ICAgICAgICAgICAgICBzdWJzeXNpZDsKKwl1MzIgICAgICAgICAgICAgaXJxOworCisJdm9pZCAqICAgICAgICAgICAgICAgc3hnX2FkYXB0ZXI7CisJdTMyICAgICAgICAgICAgIG5CdXN5U2VuZDsKKworCXZvaWQgX19pb21lbSAqCWJhc2VfYWRkcjsKKwl1MzIgICAgICAgICAgICAgbWVtb3J5bGVuZ3RoOworCXUzMiAgICAgICAgICAgICBkcmFtYmFzZTsKKwl1MzIgICAgICAgICAgICAgZHJhbWxlbmd0aDsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgcXVldWVzX2luaXRpYWxpemVkOworCXVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBhbGxvY2F0ZWQ7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIGFjdGl2YXRlZDsKKwl1MzIgICAgICAgICAgICAgaW50cnJlZ2lzdGVyZWQ7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIGlzcF9pbml0aWFsaXplZDsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgZ2VubnVtYmVyOworCXUzMiAgICAgICAgICAgICBjdXJhZGRydXBwZXI7CisJdTMyICAgICAgICAgICAgIGlzcmNvcHk7CisJdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIHN0YXRlOworCXVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBsaW5rc3RhdGU7CisJdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIGxpbmtzcGVlZDsKKwl1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgbGlua2R1cGxleDsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgZmxhZ3M7CisJdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIG1hY2FkZHJbNl07CisJdW5zaWduZWQgY2hhciAgICAgICAgICAgICAgIGN1cnJtYWNhZGRyWzZdOworCXUzMiAgICAgICAgICAgICBtYWNvcHRzOworCXVzaG9ydCAgICAgICAgICAgICAgZGV2ZmxhZ3NfcHJldjsKKwl1NjQgICAgICAgICAgICAgbWNhc3RtYXNrOworCXBfbWNhc3RfYWRkcmVzc190ICAgbWNhc3RhZGRyczsKKwlzdHJ1Y3QgdGltZXJfbGlzdCAgIHBpbmd0aW1lcjsKKwl1MzIgICAgICAgICAgICAgcGluZ3RpbWVyc2V0OworCXN0cnVjdCB0aW1lcl9saXN0ICAgc3RhdHN0aW1lcjsKKwl1MzIgICAgICAgICAgICAgc3RhdHN0aW1lcnNldDsKKwlzdHJ1Y3QgdGltZXJfbGlzdCAgIHZwY2lfdGltZXI7CisJdTMyICAgICAgICAgICAgIHZwY2lfdGltZXJzZXQ7CisJc3RydWN0IHRpbWVyX2xpc3QgICBsb2FkdGltZXI7CisJdTMyICAgICAgICAgICAgIGxvYWR0aW1lcnNldDsKKworCXUzMiAgICAgICAgICAgICB4bWl0cV9mdWxsOworCXUzMiAgICAgICAgICAgICBhbGxfcmVnX3dyaXRlczsKKwl1MzIgICAgICAgICAgICAgaWNyX3JlZ193cml0ZXM7CisJdTMyICAgICAgICAgICAgIGlzcl9yZWdfd3JpdGVzOworCXUzMiAgICAgICAgICAgICBlcnJvcl9pbnRlcnJ1cHRzOworCXUzMiAgICAgICAgICAgICBlcnJvcl9ybWlzc19pbnRlcnJ1cHRzOworCXUzMiAgICAgICAgICAgICByeF9lcnJvcnM7CisJdTMyICAgICAgICAgICAgIHJjdl9kcm9wczsKKwl1MzIgICAgICAgICAgICAgcmN2X2ludGVycnVwdHM7CisJdTMyICAgICAgICAgICAgIHhtaXRfaW50ZXJydXB0czsKKwl1MzIgICAgICAgICAgICAgbGlua2V2ZW50X2ludGVycnVwdHM7CisJdTMyICAgICAgICAgICAgIHVwcl9pbnRlcnJ1cHRzOworCXUzMiAgICAgICAgICAgICBudW1faXNyczsKKwl1MzIgICAgICAgICAgICAgZmFsc2VfaW50ZXJydXB0czsKKwl1MzIgICAgICAgICAgICAgdHhfcGFja2V0czsKKwl1MzIgICAgICAgICAgICAgeG1pdF9jb21wbGV0ZXM7CisJdTMyICAgICAgICAgICAgIHR4X2Ryb3BzOworCXUzMiAgICAgICAgICAgICByY3ZfYnJvYWRjYXN0czsKKwl1MzIgICAgICAgICAgICAgcmN2X211bHRpY2FzdHM7CisJdTMyICAgICAgICAgICAgIHJjdl91bmljYXN0czsKKwl1MzIgICAgICAgICAgICAgbWF4X2lzcl9yY3ZzOworCXUzMiAgICAgICAgICAgICBtYXhfaXNyX3htaXRzOworCXUzMiAgICAgICAgICAgICByY3ZfaW50ZXJydXB0X3lpZWxkczsKKwl1MzIgICAgICAgICAgICAgaW50YWdnX3BlcmlvZDsKKwlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyBzdGF0czsKKwl1MzIgKgkJCQkJTWluaXBvcnRIYW5kbGU7CQkvLyBPdXIgbWluaXBvcnQgaGFuZGxlCisJU1hHX1NUQVRFCQkJCQlTdGF0ZTsJCQkJLy8gQWRhcHRlciBzdGF0ZQorCVNYR19MSU5LX1NUQVRFCQkJCUxpbmtTdGF0ZTsJCQkvLyBMaW5rIHN0YXRlCisJdTY0CQkJCQkJTGlua1NwZWVkOwkJCS8vIExpbmsgU3BlZWQKKwl1MzIJCQkJCQlQb3dlclN0YXRlOwkJCS8vIE5ESVMgcG93ZXIgc3RhdGUKKwlzdHJ1Y3QgX2FkYXB0ZXJfdCAgIAkJKk5leHQ7CQkJCS8vIExpbmtlZCBsaXN0CisJdXNob3J0CQkJCQkJQWRhcHRlcklEOwkJCS8vIDEuLm4KKwl1bnNpZ25lZCBjaGFyCQkJCQkJTWFjQWRkcls2XTsJCQkvLyBPdXIgcGVybWFuZW50IEhXIG1hYyBhZGRyZXNzCisJdW5zaWduZWQgY2hhcgkJCQkJCUN1cnJNYWNBZGRyWzZdOwkJLy8gT3VyIEN1cnJlbnQgbWFjIGFkZHJlc3MKKwlwX25ldF9kZXZpY2UgICAgICAgICAgICAgICAgbmV0ZGV2OworCXBfbmV0X2RldmljZSAgICAgICAgICAgICAgICBuZXh0X25ldGRldmljZTsKKwlzdHJ1Y3QgcGNpX2RldiAgICAgICAgICAgICogcGNpZGV2OworCisJUFNYR19NVUxUSUNBU1RfQUREUkVTUwkJTXVsdGljYXN0QWRkcnM7CQkvLyBNdWx0aWNhc3QgbGlzdAorCXU2NCAgICAgCQkJCU11bHRpY2FzdE1hc2s7CQkvLyBNdWx0aWNhc3QgbWFzaworCXUzMiAqCQkJCQlJbnRlcnJ1cHRIYW5kbGU7CS8vIFJlZ2lzdGVyIEludGVycnVwdCBoYW5kbGUKKwl1MzIJCQkJCQlJbnRlcnJ1cHRMZXZlbDsJCS8vIEZyb20gUmVzb3VyY2UgbGlzdAorCXUzMgkJCQkJCUludGVycnVwdFZlY3RvcjsJLy8gRnJvbSBSZXNvdXJjZSBsaXN0CisJc3BpbmxvY2tfdAlBZGFwdGVyTG9jazsJLyogU2VyaWFsaXplIGFjY2VzcyBhZGFwdGVyIHJvdXRpbmVzICovCisJc3BpbmxvY2tfdAlCaXQ2NFJlZ0xvY2s7CS8qIEZvciB3cml0aW5nIDY0LWJpdCBhZGRyZXNzZXMgKi8KKwlQU1hHX0hXX1JFR1MJCQkJSHdSZWdzOwkJCQkvLyBTYWhhcmEgSFcgUmVnaXN0ZXIgTWVtb3J5IChCQVIwLzEpCisJUFNYR19VQ09ERV9SRUdTCQkJCVVjb2RlUmVnczsJCQkvLyBNaWNyb2NvZGUgUmVnaXN0ZXIgTWVtb3J5IChCQVIyLzMpCisJUFNYR19UQ0JfUkVHUwkJCQlUY2JSZWdzOwkJCS8vIFNhbWUgYXMgVWNvZGUgcmVncyAtIFNlZSBzeGdody5oCisJdXNob3J0CQkJCQkJUmVzZXREcGNDb3VudDsJCS8vIEZvciB0aW1lb3V0CisJdXNob3J0CQkJCQkJUnNzRHBjQ291bnQ7CQkvLyBGb3IgdGltZW91dAorCXVzaG9ydAkJCQkJCVZlbmRvcklEOwkJCS8vIFZlbmRvciBJRAorCXVzaG9ydAkJCQkJCURldmljZUlEOwkJCS8vIERldmljZSBJRAorCXVzaG9ydAkJCQkJCVN1YlN5c3RlbUlEOwkJLy8gU3ViLVN5c3RlbSBJRAorCXVzaG9ydAkJCQkJCUZyYW1lU2l6ZTsJCQkvLyBNYXhpbXVtIGZyYW1lIHNpemUKKwl1MzIgKgkJCQkJRG1hSGFuZGxlOwkJCS8vIE5ESVMgRE1BIGhhbmRsZQorCXUzMiAqCQkJCQlQYWNrZXRQb29sSGFuZGxlOwkvLyBVc2VkIHdpdGggTkRJUyA1LjIgb25seS4gIERvbid0IGlmZGVmIG91dAorCXUzMiAqCQkJCQlCdWZmZXJQb29sSGFuZGxlOwkvLyBVc2VkIHdpdGggTkRJUyA1LjIgb25seS4gIERvbid0IGlmZGVmIG91dAorCXUzMgkJCQkJCU1hY0ZpbHRlcjsJCQkvLyBORElTIE1BQyBGaWx0ZXIKKwl1c2hvcnQJCQkJCQlJcElkOwkJCQkvLyBGb3Igc2xvd3BhdGgKKwlQU1hHX0VWRU5UX1JJTkcJCQkJRXZlbnRSaW5nczsJCQkvLyBIb3N0IGV2ZW50IHJpbmdzLiAgMS9DUFUgdG8gMTYgbWF4CisJZG1hX2FkZHJfdCAgICAgICAgICAgICAgCVBFdmVudFJpbmdzOwkJLy8gUGh5c2ljYWwgYWRkcmVzcworCXUzMgkJCQkJCU5leHRFdmVudFtTWEdfTUFYX1JTU107CS8vIEN1cnJlbnQgbG9jYXRpb24gaW4gcmluZworCWRtYV9hZGRyX3QgICAgICAgICAgCQlQVGNiQnVmZmVyczsJCS8vIFRDQiBCdWZmZXJzIC0gcGh5c2ljYWwgYWRkcmVzcworCWRtYV9hZGRyX3QJICAgICAgICAgICAgCVBUY2JDb21wQnVmZmVyczsJLy8gVENCIENvbXBvc2l0ZSBCdWZmZXJzIC0gcGh5cyBhZGRyCisJUFNYR19YTVRfUklORwkJCQlYbXRSaW5nczsJCQkvLyBUcmFuc21pdCByaW5ncworCWRtYV9hZGRyX3QJCSAgICAgICAgICAgIFBYbXRSaW5nczsJCQkvLyBUcmFuc21pdCByaW5ncyAtIHBoeXNpY2FsIGFkZHJlc3MKKwlTWEdfUklOR19JTkZPCQkJCVhtdFJpbmdaZXJvSW5mbzsJLy8gVHJhbnNtaXQgcmluZyAwIGluZm8KKwlzcGlubG9ja190CVhtdFplcm9Mb2NrOwkvKiBUcmFuc21pdCByaW5nIDAgbG9jayAqLworCXUzMiAqCQkJCQlYbXRSaW5nWmVyb0luZGV4OwkvLyBTaGFyZWQgWE1UIHJpbmcgMCBpbmRleAorCWRtYV9hZGRyX3QgICAgICAgICAgCQlQWG10UmluZ1plcm9JbmRleDsJLy8gU2hhcmVkIFhNVCByaW5nIDAgaW5kZXggLSBwaHlzaWNhbAorCUxJU1RfRU5UUlkJCQkJCUZyZWVQcm90b2NvbEhlYWRlcnM7Ly8gRnJlZSBwcm90b2NvbCBoZWFkZXJzCisJdTMyCQkJCQkJRnJlZVByb3RvSGRyQ291bnQ7CS8vIENvdW50CisJdm9pZCAqCQkJCQkJUHJvdG9jb2xIZWFkZXJzOwkvLyBCbG9jayBvZiBwcm90b2NvbCBoZWFkZXIKKwlkbWFfYWRkcl90CSAgICAgICAgICAgIAlQUHJvdG9jb2xIZWFkZXJzOwkvLyBCbG9jayBvZiBwcm90b2NvbCBoZWFkZXJzIC0gcGh5cworCisJUFNYR19SQ1ZfUklORwkJCQlSY3ZSaW5nczsJCQkvLyBSZWNlaXZlIHJpbmdzCisJZG1hX2FkZHJfdAkgICAgICAgICAgICAJUFJjdlJpbmdzOwkJCS8vIFJlY2VpdmUgcmluZ3MgLSBwaHlzaWNhbCBhZGRyZXNzCisJU1hHX1JJTkdfSU5GTwkJCQlSY3ZSaW5nWmVyb0luZm87CS8vIFJlY2VpdmUgcmluZyAwIGluZm8KKworCXUzMiAqCQkJCQlJc3I7CQkJCS8vIEludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIKKwlkbWFfYWRkcl90CSAgICAgICAgICAgIAlQSXNyOwkJCQkvLyBJU1IgLSBwaHlzaWNhbCBhZGRyZXNzCisJdTMyCQkJCQkJSXNyQ29weVtTWEdfTUFYX1JTU107CS8vIENvcHkgb2YgSVNSCisJdXNob3J0CQkJCQkJSW50ZXJydXB0c0VuYWJsZWQ7CS8vIEJpdG1hc2sgb2YgZW5hYmxlZCB2ZWN0b3JzCisJdW5zaWduZWQgY2hhciAqCQkJCQkJSW5kaXJlY3Rpb25UYWJsZTsJLy8gUlNTIGluZGlyZWN0aW9uIHRhYmxlCisJZG1hX2FkZHJfdAkgICAgICAgICAgICAJUEluZGlyZWN0aW9uVGFibGU7CS8vIFBoeXNpY2FsIGFkZHJlc3MKKwl1c2hvcnQJCQkJCQlSc3NUYWJsZVNpemU7CQkvLyBGcm9tIE5ESVNfUkVDRUlWRV9TQ0FMRV9QQVJBTUVURVJTCisJdXNob3J0CQkJCQkJSGFzaEtleVNpemU7CQkvLyBGcm9tIE5ESVNfUkVDRUlWRV9TQ0FMRV9QQVJBTUVURVJTCisJdW5zaWduZWQgY2hhcgkJCQkJCUhhc2hTZWNyZXRLZXlbNDBdOwkvLyByc3Mga2V5CisJdTMyCQkJCQkJSGFzaEluZm9ybWF0aW9uOworCS8vIFJlY2VpdmUgYnVmZmVyIHF1ZXVlcworCXNwaW5sb2NrX3QJUmN2UUxvY2s7CS8qIFJlY2VpdmUgUXVldWUgTG9jayAqLworCUxJU1RfRU5UUlkJCQkJCUZyZWVSY3ZCdWZmZXJzOwkJLy8gRnJlZSBTWEdfREFUQV9CVUZGRVIgcXVldWUKKwlMSVNUX0VOVFJZCQkJCQlGcmVlUmN2QmxvY2tzOwkJLy8gRnJlZSBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0sgUQorCUxJU1RfRU5UUlkJCQkJCUFsbFJjdkJsb2NrczsJCS8vIEFsbCBTWEdfUkNWX0JMT0NLcworCXVzaG9ydAkJCQkJCUZyZWVSY3ZCdWZmZXJDb3VudDsJLy8gTnVtYmVyIG9mIGZyZWUgcmN2IGRhdGEgYnVmZmVycworCXVzaG9ydAkJCQkJCUZyZWVSY3ZCbG9ja0NvdW50OwkvLyAjIG9mIGZyZWUgcmN2IGRlc2NyaXB0b3IgYmxvY2tzCisJdXNob3J0CQkJCQkJQWxsUmN2QmxvY2tDb3VudDsJLy8gTnVtYmVyIG9mIHRvdGFsIHJlY2VpdmUgYmxvY2tzCisJdXNob3J0CQkJCQkJUmVjZWl2ZUJ1ZmZlclNpemU7CS8vIFNYR19SQ1ZfREFUQS9KVU1CT19CVUZGRVJfU0laRSBvbmx5CisJdTMyCQkJCQkJQWxsb2NhdGlvbnNQZW5kaW5nOwkvLyBSZWNlaXZlIGFsbG9jYXRpb24gcGVuZGluZworCXUzMgkJCQkJCVJjdkJ1ZmZlcnNPbkNhcmQ7CS8vIFNYR19EQVRBX0JVRkZFUlMgb3duZWQgYnkgY2FyZAorCS8vIFNHTCBidWZmZXJzCisJc3BpbmxvY2tfdAlTZ2xRTG9jazsJLyogU0dMIFF1ZXVlIExvY2sgKi8KKwlMSVNUX0VOVFJZCQkJCQlGcmVlU2dsQnVmZmVyczsJCS8vIEZyZWUgU1hHX1NDQVRURVJfR0FUSEVSCisJTElTVF9FTlRSWQkJCQkJQWxsU2dsQnVmZmVyczsJCS8vIEFsbCBTWEdfU0NBVFRFUl9HQVRIRVIKKwl1c2hvcnQJCQkJCQlGcmVlU2dsQnVmZmVyQ291bnQ7CS8vIE51bWJlciBvZiBmcmVlIFNHTCBidWZmZXJzCisJdXNob3J0CQkJCQkJQWxsU2dsQnVmZmVyQ291bnQ7CS8vIE51bWJlciBvZiB0b3RhbCBTR0wgYnVmZmVycworCXUzMgkJCQkJCUN1cnJlbnRUaW1lOwkJLy8gVGljayBjb3VudAorCXUzMgkJCQkJCUZhc3RwYXRoQ29ubmVjdGlvbnM7Ly8gIyBvZiBmYXN0cGF0aCBjb25uZWN0aW9ucworCS8vIFZhcmlvdXMgc2luZ2xlLWJpdCBmbGFnczoKKwl1MzIJCQkJCQlCYXNpY0FsbG9jYXRpb25zOjE7CS8vIExvY2tzIGFuZCBsaXN0aGVhZHMKKwl1MzIJCQkJCQlJbnRSZWdpc3RlcmVkOjE7CS8vIEludGVycnVwdCByZWdpc3RlcmVkCisJdTMyCQkJCQkJUGluZ091dHN0YW5kaW5nOjE7CS8vIFBpbmcgb3V0c3RhbmRpbmcgdG8gY2FyZAorCXUzMgkJCQkJCURlYWQ6MTsJCQkJLy8gQ2FyZCBkZWFkCisJdTMyCQkJCQkJRHVtcERyaXZlcjoxOwkJLy8gT0lEX1NMSUNfRFJJVkVSX0RVTVAgcmVxdWVzdAorCXUzMgkJCQkJCUR1bXBDYXJkOjE7CQkJLy8gT0lEX1NMSUNfQ0FSRF9EVU1QIHJlcXVlc3QKKwl1MzIJCQkJCQlEdW1wQ21kUnVubmluZzoxOwkvLyBEdW1wIGNvbW1hbmQgaW4gcHJvZ3Jlc3MKKwl1MzIJCQkJCQlEZWJ1Z1J1bm5pbmc6MTsJCS8vIEFHREIgZGVidWcgaW4gcHJvZ3Jlc3MKKwl1MzIJCQkJCQlKdW1ib0VuYWJsZWQ6MTsJCS8vIEp1bWJvIGZyYW1lcyBlbmFibGVkCisJdTMyCQkJCQkJTXNpRW5hYmxlZDoxOwkJLy8gTVNJIGludGVycnVwdCBlbmFibGVkCisJdTMyCQkJCQkJUnNzRW5hYmxlZDoxOwkJLy8gUlNTIEVuYWJsZWQKKwl1MzIJCQkJCQlGYWlsT25CYWRFZXByb206MTsJLy8gRmFpbCBvbiBCYWQgRWVwcm9tCisJdTMyCQkJCQkJRGlhZ1N0YXJ0OjE7CQkvLyBJbml0IGFkYXB0ZXIgZm9yIGRpYWdub3N0aWMgc3RhcnQKKwkvLyBTdGF0cworCXUzMgkJCQkJCVBlbmRpbmdSY3ZDb3VudDsJLy8gT3V0c3RhbmRpbmcgcmN2IGluZGljYXRpb25zCisJdTMyCQkJCQkJUGVuZGluZ1htdENvdW50OwkvLyBPdXRzdGFuZGluZyBzZW5kIHJlcXVlc3RzCisJU1hHX1NUQVRTCQkJCQlTdGF0czsJCQkJLy8gU3RhdGlzdGljcworCXUzMgkJCQkJCVJlYXNzQnVmczsJCQkvLyBOdW1iZXIgb2YgcmVhc3NlbWJseSBidWZmZXJzCisJLy8gQ2FyZCBDcmFzaCBJbmZvCisJdXNob3J0CQkJCQkJQ3Jhc2hMb2NhdGlvbjsJCS8vIE1pY3JvY29kZSBjcmFzaCBsb2NhdGlvbgorCXVuc2lnbmVkIGNoYXIJCQkJCQlDcmFzaENwdTsJCQkvLyBTYWhhcmEgQ1BVIElECisJLy8gRGlhZ25vc3RpY3MKKwkvLwlQRElBR19DTUQJCQkJCURpYWdDbWRzOwkJCS8vIExpc3Qgb2YgZnJlZSBkaWFnbm9zdGljIGNvbW1hbmRzCisJLy8JUERJQUdfQlVGRkVSCQkJCURpYWdCdWZmZXJzOwkJLy8gTGlzdCBvZiBmcmVlIGRpYWdub3N0aWMgYnVmZmVycworCS8vCVBESUFHX1JFUQkJCQkJRGlhZ1JlcVE7CQkJLy8gTGlzdCBvZiBvdXRzdGFuZGluZyAoYXN5bmNocm9ub3VzKSBkaWFnIHJlcXVlc3RzCisJLy8JdTMyCQkJCQkJRGlhZ0NtZFRpbWVvdXQ7CQkvLyBUaW1lIG91dCBmb3IgZGlhZyBjbWRzIChzZWNvbmRzKSBYWFhUT0RPIC0gcmVwbGFjZSB3aXRoIFNYR19QQVJBTSB2YXI/CisJLy8JdW5zaWduZWQgY2hhcgkJCQkJCURpYWdEbWFEZXNjW0RNQV9DUFVfQ1RYU107CQkvLyBGcmVlIERNQSBkZXNjcmlwdG9ycyBiaXQgZmllbGQgKDMyIENQVSBjdHggKiA4IERNQSBjdHgpCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwkvLyBQdXQgcHJlcHJvY2Vzc29yLWNvbmRpdGlvbmFsIGZpZWxkcyBhdCB0aGUgZW5kIHNvIHdlIGRvbid0CisJLy8gaGF2ZSB0byByZWNvbXBpbGUgc3hnZGJnIGV2ZXJ5dGltZSB3ZSByZWNvbmZpZ3VyZSB0aGUgZHJpdmVyCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJdm9pZCAqCQkJCQkJUGVuZGluZ1NldFJzczsJCS8vIFBlbmRpbmcgUlNTIHBhcmFtZXRlciBjaGFuZ2UKKwl1MzIJCQkJCQlJUHY0SGRyU2l6ZTsJCS8vIFNoYXJlZCA1LjIvNi4wIGVuY2FwIHBhcmFtCisJdW5zaWduZWQgY2hhciAqICAgICAgICAgIAkJCUludGVycnVwdEluZm87CQkvLyBBbGxvY2F0ZWQgYnkgdXMgZHVyaW5nIEFkZERldmljZQorI2lmIGRlZmluZWQoQ09ORklHX1g4NikKKwl1MzIJCQkJCQlBZGRyVXBwZXI7CQkJLy8gVXBwZXIgMzIgYml0cyBvZiA2NC1iaXQgcmVnaXN0ZXIKKyNlbmRpZgorCS8vI2lmIFNYR19GQUlMVVJFX0RVTVAKKwkvLwlORElTX0VWRU5UCQkJCQlEdW1wVGhyZWFkRXZlbnQ7CS8vIHN5bmNyb25pemUgZHVtcCB0aHJlYWQKKwkvLwlCT09MRUFOCQkJCQkJRHVtcFRocmVhZFJ1bm5pbmc7CS8vIHRlcm1pbmF0aW9uIGZsYWcKKwkvLwlQU1hHX0RVTVBfQ01ECQkJCUR1bXBCdWZmZXI7CQkJLy8gNjhrIC0gQ21kIGFuZCBCdWZmZXIKKwkvLwlkbWFfYWRkcl90CQlQRHVtcEJ1ZmZlcjsJCS8vIFBoeXNpY2FsIGFkZHJlc3MKKwkvLyNlbmRpZiAvLyBTWEdfRkFJTFVSRV9EVU1QCisKK30gYWRhcHRlcl90LCAqcF9hZGFwdGVyX3Q7CisKKyNpZiBTTElDX0RVTVBfRU5BQkxFRAorI2RlZmluZSBTTElDX0RVTVBfUkVRVUVTVEVEICAgICAgMQorI2RlZmluZSBTTElDX0RVTVBfSU5fUFJPR1JFU1MgICAgMgorI2RlZmluZSBTTElDX0RVTVBfRE9ORSAgICAgICAgICAgMworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIE1pY3JvY29kZSBjcmFzaCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuICBUaGlzCisgKiBzdHJ1Y3R1cmUgaXMgd3JpdHRlbiBvdXQgdG8gdGhlIGNhcmQncyBTUkFNIHdoZW4gdGhlIG1pY3JvY29kZSBwYW5pYydzLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgX3NsaWNfY3Jhc2hfaW5mbyB7CisgICAgdXNob3J0ICBjcHVfaWQ7CisgICAgdXNob3J0ICBjcmFzaF9wYzsKK30gc2xpY19jcmFzaF9pbmZvLCAqcF9zbGljX2NyYXNoX2luZm87CisKKyNkZWZpbmUgQ1JBU0hfSU5GT19PRkZTRVQgICAweDE1NUMKKworI2VuZGlmCisKKyNkZWZpbmUgVVBEQVRFX1NUQVRTKGxhcmdlc3RhdCwgbmV3c3RhdCwgb2xkc3RhdCkgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgobmV3c3RhdCkgPCAob2xkc3RhdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKGxhcmdlc3RhdCkgKz0gKChuZXdzdGF0KSArICgweEZGRkZGRkZGIC0gb2xkc3RhdCArIDEpKTsgICAgICAgICBcCisgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAobGFyZ2VzdGF0KSArPSAoKG5ld3N0YXQpIC0gKG9sZHN0YXQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2RlZmluZSBVUERBVEVfU1RBVFNfR0IobGFyZ2VzdGF0LCBuZXdzdGF0LCBvbGRzdGF0KSAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGxhcmdlc3RhdCkgKz0gKChuZXdzdGF0KSAtIChvbGRzdGF0KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIEVUSEVSX0VRX0FERFIoX0FkZHJBLCBfQWRkckIsIF9SZXN1bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfUmVzdWx0ID0gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCoodTMyICopKF9BZGRyQSkgIT0gKih1MzIgKikoX0FkZHJCKSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfUmVzdWx0ID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKih1MTYgKikoJigoX0FkZHJBKVs0XSkpICE9ICoodTE2ICopKCYoKF9BZGRyQilbNF0pKSkgICAgICAgIFwKKyAgICAgICAgX1Jlc3VsdCA9IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKyNkZWZpbmUgRVRIRVJNQVhGUkFNRSAgIDE1MTQKKyNkZWZpbmUgSlVNQk9NQVhGUkFNRSAgIDkwMTQKKworI2lmIGRlZmluZWQoQ09ORklHX1g4Nl82NCkgfHwgZGVmaW5lZChDT05GSUdfSUE2NCkKKyNkZWZpbmUgICBTWEdfR0VUX0FERFJfTE9XKF9hZGRyKSAgKHUzMikoKHU2NCkoX2FkZHIpICYgMHgwMDAwMDAwMEZGRkZGRkZGKQorI2RlZmluZSAgIFNYR19HRVRfQUREUl9ISUdIKF9hZGRyKSAgKHUzMikoKCh1NjQpKF9hZGRyKSA+PiAzMikgJiAweDAwMDAwMDAwRkZGRkZGRkYpCisjZWxzZQorI2RlZmluZSAgIFNYR19HRVRfQUREUl9MT1coX2FkZHIpICAgKHUzMilfYWRkcgorI2RlZmluZSAgIFNYR19HRVRfQUREUl9ISUdIKF9hZGRyKSAgKHUzMikwCisjZW5kaWYKKworI2RlZmluZSBGTFVTSCAgICAgICBUUlVFCisjZGVmaW5lIERPTlRfRkxVU0ggIEZBTFNFCisKKyNkZWZpbmUgU0lPQ1NMSUNEVU1QQ0FSRCAgICAgICAgIFNJT0NERVZQUklWQVRFKzkKKyNkZWZpbmUgU0lPQ1NMSUNTRVRJTlRBR0cgICAgICAgIFNJT0NERVZQUklWQVRFKzEwCisjZGVmaW5lIFNJT0NTTElDVFJBQ0VEVU1QICAgICAgICBTSU9DREVWUFJJVkFURSsxMQorCisjZW5kaWYgLyogIF9fU1hHX0RSSVZFUl9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnX29zLmggYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z19vcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZmIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z19vcy5oCkBAIC0wLDAgKzEsMTU0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOCBBbGFjcml0ZWNoLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBTEFDUklURUNILCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQUxBQ1JJVEVDSCwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKiBUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcKKyAqIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIEFsYWNyaXRlY2gsIEluYy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBGSUxFTkFNRTogc3hnX29zLmgKKyAqCisgKiBUaGVzZSBhcmUgdGhlIExpbnV4LXNwZWNpZmljIGRlZmluaXRpb25zIHJlcXVpcmVkIGZvciB0aGUgU0xJQ09TUworICogZHJpdmVyLCB3aGljaCBzaG91bGQgYWxsb3cgZm9yIGdyZWF0ZXIgcG9ydGFiaWxpdHkgdG8gb3RoZXIgT1Nlcy4KKyAqLworI2lmbmRlZiBfU0xJQ19PU19TUEVDSUZJQ19IXworI2RlZmluZSBfU0xJQ19PU19TUEVDSUZJQ19IXworCisjZGVmaW5lIEZBTFNFCSgwKQorI2RlZmluZSBUUlVFCSgxKQorCisKK3R5cGVkZWYgc3RydWN0IF9MSVNUX0VOVFJZIHsKKwlzdHJ1Y3QgX0xJU1RfRU5UUlkgKm5sZV9mbGluazsKKwlzdHJ1Y3QgX0xJU1RfRU5UUlkgKm5sZV9ibGluazsKK30gbGlzdF9lbnRyeSwgTElTVF9FTlRSWSwgKlBMSVNUX0VOVFJZOworCisjZGVmaW5lIEluaXRpYWxpemVMaXN0SGVhZChsKSAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChsKS0+bmxlX2ZsaW5rID0gKGwpLT5ubGVfYmxpbmsgPSAobCkKKworI2RlZmluZSBJc0xpc3RFbXB0eShoKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGgpLT5ubGVfZmxpbmsgPT0gKGgpKQorCisjZGVmaW5lIFJlbW92ZUVudHJ5TGlzdChlKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSAgICAgICAgICAgICAgKmI7ICAgICBcCisgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSAgICAgICAgICAgICAgKmY7ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZiA9IChlKS0+bmxlX2ZsaW5rOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYiA9IChlKS0+bmxlX2JsaW5rOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYi0+bmxlX2ZsaW5rID0gZjsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZi0+bmxlX2JsaW5rID0gYjsgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUgKDApCisKKy8qIFRoZXNlIHR3byBoYXZlIHRvIGJlIGlubGluZWQgc2luY2UgdGhleSByZXR1cm4gdGhpbmdzLiAqLworCitzdGF0aWMgX19pbmxpbmUgUExJU1RfRU5UUlkKK1JlbW92ZUhlYWRMaXN0KGxpc3RfZW50cnkgKmwpCit7CisgICAgICAgIGxpc3RfZW50cnkgICAgICAgICAgICAgICpmOworICAgICAgICBsaXN0X2VudHJ5ICAgICAgICAgICAgICAqZTsKKworICAgICAgICBlID0gbC0+bmxlX2ZsaW5rOworICAgICAgICBmID0gZS0+bmxlX2ZsaW5rOworICAgICAgICBsLT5ubGVfZmxpbmsgPSBmOworICAgICAgICBmLT5ubGVfYmxpbmsgPSBsOworCisgICAgICAgIHJldHVybiAoZSk7Cit9CisKK3N0YXRpYyBfX2lubGluZSBQTElTVF9FTlRSWQorUmVtb3ZlVGFpbExpc3QobGlzdF9lbnRyeSAqbCkKK3sKKyAgICAgICAgbGlzdF9lbnRyeSAgICAgICAgICAgICAgKmI7CisgICAgICAgIGxpc3RfZW50cnkgICAgICAgICAgICAgICplOworCisgICAgICAgIGUgPSBsLT5ubGVfYmxpbms7CisgICAgICAgIGIgPSBlLT5ubGVfYmxpbms7CisgICAgICAgIGwtPm5sZV9ibGluayA9IGI7CisgICAgICAgIGItPm5sZV9mbGluayA9IGw7CisKKyAgICAgICAgcmV0dXJuIChlKTsKK30KKworCisjZGVmaW5lIEluc2VydFRhaWxMaXN0KGwsIGUpICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSAgICAgICAgICAgICAgKmI7ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYiA9IChsKS0+bmxlX2JsaW5rOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKGUpLT5ubGVfZmxpbmsgPSAobCk7ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKGUpLT5ubGVfYmxpbmsgPSBiOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYi0+bmxlX2ZsaW5rID0gKGUpOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKGwpLT5ubGVfYmxpbmsgPSAoZSk7ICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgSW5zZXJ0SGVhZExpc3QobCwgZSkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICAgICAgICAgICAgICAqZjsgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBmID0gKGwpLT5ubGVfZmxpbms7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoZSktPm5sZV9mbGluayA9IGY7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoZSktPm5sZV9ibGluayA9IGw7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBmLT5ubGVfYmxpbmsgPSAoZSk7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAobCktPm5sZV9mbGluayA9IChlKTsgICAgICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCkKKworCisjZGVmaW5lIEFUS19ERUJVRyAgMQorCisjaWYgQVRLX0RFQlVHCisjZGVmaW5lIFNMSUNfVElNRVNUQU1QKHZhbHVlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG9fZ2V0dGltZW9mZGF5KCZ0aW1ldik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZhbHVlID0gdGltZXYudHZfc2VjKjEwMDAwMDAgKyB0aW1ldi50dl91c2VjOyAgICAgICAgICAgICAgICAgICAgICAgXAorfQorI2Vsc2UKKyNkZWZpbmUgU0xJQ19USU1FU1RBTVAodmFsdWUpCisjZW5kaWYKKworCisvKioqKioqKioqKioqKioqKioqICBTWEcgREVGSU5FUyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiAgQVRLREJHCisjZGVmaW5lIFNYR19USU1FU1RBTVAodmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0aW1ldjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkb19nZXR0aW1lb2ZkYXkoJnRpbWV2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdmFsdWUgPSB0aW1ldi50dl9zZWMqMTAwMDAwMCArIHRpbWV2LnR2X3VzZWM7ICAgICAgICAgICAgICAgICAgICAgICBcCit9CisjZWxzZQorI2RlZmluZSBTWEdfVElNRVNUQU1QKHZhbHVlKQorI2VuZGlmCisKKyNkZWZpbmUgV1JJVEVfUkVHKHJlZyx2YWx1ZSxmbHVzaCkgICAgICAgICAgICAgICAgICBzeGdfcmVnMzJfd3JpdGUoKCZyZWcpLCAodmFsdWUpLCAoZmx1c2gpKQorI2RlZmluZSBXUklURV9SRUc2NChhLHJlZyx2YWx1ZSxjcHUpICAgICAgICAgICAgICAgIHN4Z19yZWc2NF93cml0ZSgoYSksKCZyZWcpLCh2YWx1ZSksKGNwdSkpCisjZGVmaW5lIFJFQURfUkVHKHJlZyx2YWx1ZSkgICAodmFsdWUpID0gcmVhZGwoKHZvaWQgX19pb21lbSAqKSgmcmVnKSkKKworI2VuZGlmICAvKiBfU0xJQ19PU19TUEVDSUZJQ19IXyAgKi8KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3N4Zy9zeGdkYmcuaCBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnZGJnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZiNmM3YwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnZGJnLmgKQEAgLTAsMCArMSwxOTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCCpIDIwMDAtMjAwOCBBbGFjcml0ZWNoLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICRJZDogc3hnZGJnLmgsdiAxLjEgMjAwOC8wNi8yNyAxMjo0OToyOCBtb29rIEV4cCAkCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFMQUNSSVRFQ0gsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTEFDUklURUNILCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbgorICogYXJlIHRob3NlIG9mIHRoZSBhdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZworICogb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZCwgb2YgQWxhY3JpdGVjaCwgSW5jLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZJTEVOQU1FOiBzeGdkYmcuaAorICoKKyAqIEFsbCBkZWJ1ZyBhbmQgYXNzZXJ0aW9uLWJhc2VkIGRlZmluaXRpb25zIGFuZCBtYWNyb3MgYXJlIGluY2x1ZGVkCisgKiBpbiB0aGlzIGZpbGUgZm9yIHRoZSBTWEdPU1MgZHJpdmVyLgorICovCisjaWZuZGVmIF9TWEdfREVCVUdfSF8KKyNkZWZpbmUgX1NYR19ERUJVR19IXworCisjZGVmaW5lIEFUS0RCRyAgMQorI2RlZmluZSBBVEtfVFJBQ0VfRU5BQkxFRCAxCisKKyNkZWZpbmUgREJHX0VSUk9SKG4sIGFyZ3MuLi4pCXByaW50ayhLRVJOX0VNRVJHIG4sICMjYXJncykKKworI2lmZGVmIEFTU0VSVAorI3VuZGVmIEFTU0VSVAorI2VuZGlmCisKKyNpZmRlZiBTWEdfQVNTRVJUX0VOQUJMRUQKKyNpZm5kZWYgQVNTRVJUCisjZGVmaW5lIEFTU0VSVChhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEoYSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBEQkdfRVJST1IoIkFTU0VSVCgpIEZhaWx1cmU6IGZpbGUgJXMsIGZ1bmN0aW9uICVzICBsaW5lICVkXG4iLFwKKyAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKyNlbmRpZgorI2Vsc2UKKyNpZm5kZWYgQVNTRVJUCisjZGVmaW5lIEFTU0VSVChhKQorI2VuZGlmCisjZW5kaWYgLyogU1hHX0FTU0VSVF9FTkFCTEVEICAqLworCisKKyNpZmRlZiBBVEtEQkcKKy8qCisgKiAgR2xvYmFsIGZvciB0aW1lciBncmFudWxhcml0eTsgZXZlcnkgZHJpdmVyIG11c3QgaGF2ZSBhbiBpbnN0YW5jZQorICogIG9mIHRoaXMgaW5pdGlhbGl6ZWQgdG8gMAorICovCisKK2V4dGVybiB1bG9uZyBBVEtUaW1lckRpdjsKKworLyoKKyAqIHRyYWNlX2VudHJ5X3QgLQorICoKKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgYW4gZW50cnkgaW4gdGhlIHRyYWNlIGJ1ZmZlci4gIFRoZQorICogZmlyc3QgZmV3IGZpZWxkcyBtZWFuIHRoZSBzYW1lIGZyb20gZW50cnkgdG8gZW50cnksIHdoaWxlCisgKiB0aGUgbWVhbmluZyBvZiBsYXN0IHNldmVyYWwgZmllbGRzIGNoYW5nZSB0byBzdWl0IHRoZQorICogbmVlZHMgb2YgdGhlIHRyYWNlIGVudHJ5LiAgVHlwaWNhbGx5IHRoZXkgYXJlIGZ1bmN0aW9uIGNhbGwKKyAqIHBhcmFtZXRlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IF90cmFjZV9lbnRyeV9zIHsKKyAgICAgICAgY2hhciAgICAgIG5hbWVbOF07ICAgICAgICAvKiA4IGNoYXJhY3RlciBuYW1lIC0gbGlrZSAncydpJ20nYidhJ3InYyd2JyAqLworICAgICAgICB1MzIgICB0aW1lOyAgICAgICAgICAgLyogQ3VycmVudCBjbG9jayB0aWMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciAgICAgY3B1OyAgICAgICAgICAgIC8qIEN1cnJlbnQgQ1BVICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgICAgIGlycWw7ICAgICAgICAgICAvKiBDdXJyZW50IElSUUwgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciAgICAgZHJpdmVyOyAgICAgICAgIC8qIFRoZSBkcml2ZXIgd2hpY2ggYWRkZWQgdGhlIHRyYWNlIGNhbGwgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciAgICAgcGFkMjsgICAgICAgICAgIC8qIHBhZCB0byA0IGJ5dGUgYm91bmRhcnkgLSB3aWxsIHByb2JhYmx5IGdldCB1c2VkICovCisgICAgICAgIHUzMiAgIGFyZzE7ICAgICAgICAgICAvKiBDYWxsZXIgYXJnMSAqLworICAgICAgICB1MzIgICBhcmcyOyAgICAgICAgICAgLyogQ2FsbGVyIGFyZzIgKi8KKyAgICAgICAgdTMyICAgYXJnMzsgICAgICAgICAgIC8qIENhbGxlciBhcmczICovCisgICAgICAgIHUzMiAgIGFyZzQ7ICAgICAgICAgICAvKiBDYWxsZXIgYXJnNCAqLworfSB0cmFjZV9lbnRyeV90LCAqcHRyYWNlX2VudHJ5X3Q7CisKKy8qCisgKiBEcml2ZXIgdHlwZXMgZm9yIGRyaXZlciBmaWVsZCBpbiB0cmFjZV9lbnRyeV90CisgKi8KKyNkZWZpbmUgVFJBQ0VfU1hHICAgICAgICAgICAgIDEKKyNkZWZpbmUgVFJBQ0VfVlBDSSAgICAgICAgICAgIDIKKyNkZWZpbmUgVFJBQ0VfU0xJQyAgICAgICAgICAgIDMKKworI2RlZmluZSBUUkFDRV9FTlRSSUVTICAgMTAyNAorCit0eXBlZGVmIHN0cnVjdCBfc3hnX3RyYWNlX2J1ZmZlcl90Cit7CisgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgc2l6ZTsgICAgICAgICAgICAgICAgICAvKiBhaWQgZm9yIHdpbmRiZyBleHRlbnNpb24gKi8KKyAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICBpbjsgICAgICAgICAgICAgICAgICAgIC8qIFdoZXJlIHRvIGFkZCAqLworICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgIGxldmVsOyAgICAgICAgICAgICAgICAgLyogQ3VycmVudCBUcmFjZSBsZXZlbCAqLworCXNwaW5sb2NrX3QJbG9jazsgICAgICAgICAgICAgICAgICAvKiBGb3IgTVAgdHJhY2luZyAqLworICAgICAgICB0cmFjZV9lbnRyeV90ICAgICAgICAgICBlbnRyaWVzW1RSQUNFX0VOVFJJRVNdOy8qIFRoZSBjaXJjdWxhciBidWZmZXIgKi8KK30gc3hnX3RyYWNlX2J1ZmZlcl90OworCisvKgorICogVGhlIHRyYWNlIGxldmVscworICoKKyAqIFhYWCBBdCB0aGUgbW9tZW50IEkgYW0gb25seSBkZWZpbmluZyBjcml0aWNhbCwgaW1wb3J0YW50LCBhbmQgbm9pc3kuCisgKiBJIGFtIGxlYXZpbmcgcm9vbSBmb3IgbW9yZSBpZiBhbnlvbmUgd2FudHMgdGhlbS4KKyAqLworI2RlZmluZSBUUkFDRV9OT05FICAgICAgICAgICAgICAwICAgLyogRm9yIHRyYWNlIGxldmVsIC0gaWYgbm8gdHJhY2luZyB3YW50ZWQgKi8KKyNkZWZpbmUgVFJBQ0VfQ1JJVElDQUwgICAgICAgICAgMSAgIC8qIG1pbmltYWwgdHJhY2luZyAtIG9ubHkgY3JpdGljYWwgc3R1ZmYgKi8KKyNkZWZpbmUgVFJBQ0VfSU1QT1JUQU5UICAgICAgICAgNSAgIC8qIG1vcmUgdHJhY2luZyAtIGFueXRoaW5nIGltcG9ydGFudCAqLworI2RlZmluZSBUUkFDRV9OT0lTWSAgICAgICAgICAgICAxMCAgLyogRXZlcnl0aGluZyBpbiB0aGUgd29ybGQgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRoZSBtYWNyb3MgdGhlbXNlbHZlcyAtCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZiBBVEtfVFJBQ0VfRU5BQkxFRAorI2RlZmluZSBTWEdfVFJBQ0VfSU5JVChidWZmZXIsIHRsZXZlbCkJCQkJXAorewkJCQkJCQkJXAorCW1lbXNldCgoYnVmZmVyKSwgMCwgc2l6ZW9mKHN4Z190cmFjZV9idWZmZXJfdCkpOwlcCisJKGJ1ZmZlciktPmxldmVsID0gKHRsZXZlbCk7CQkJCVwKKwkoYnVmZmVyKS0+c2l6ZSA9IFRSQUNFX0VOVFJJRVM7CQkJCVwKKwlzcGluX2xvY2tfaW5pdCgmKGJ1ZmZlciktPmxvY2spOwkJCVwKK30KKyNlbHNlCisjZGVmaW5lIFNYR19UUkFDRV9JTklUKGJ1ZmZlciwgdGxldmVsKQorI2VuZGlmCisKKy8qCisgKiBUaGUgdHJhY2UgbWFjcm8uICBUaGlzIGlzIGFjdGl2ZSBvbmx5IGlmIEFUS19UUkFDRV9FTkFCTEVEIGlzIHNldC4KKyAqLworI2lmIEFUS19UUkFDRV9FTkFCTEVECisjZGVmaW5lIFNYR19UUkFDRSh0ZHJpdmVyLCBidWZmZXIsIHRsZXZlbCwgdG5hbWUsIGExLCBhMiwgYTMsIGE0KSB7ICAgICAgICBcCisgICAgICAgIGlmICgoYnVmZmVyKSAmJiAoKGJ1ZmZlciktPmxldmVsID49ICh0bGV2ZWwpKSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgdHJhY2VfaXJxbCA9IDA7ICAgIC8qID8/Pz8/PyBGSVggVEhJUyAgKi8gICAgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHRyYWNlX2xlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBwdHJhY2VfZW50cnlfdCAgdHJhY2VfZW50cnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0aW1ldjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBzcGluX2xvY2soJihidWZmZXIpLT5sb2NrKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB0cmFjZV9lbnRyeSA9ICYoYnVmZmVyKS0+ZW50cmllc1soYnVmZmVyKS0+aW5dOyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGRvX2dldHRpbWVvZmRheSgmdGltZXYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBtZW1zZXQodHJhY2VfZW50cnktPm5hbWUsIDAsIDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHRyYWNlX2xlbiA9IHN0cmxlbih0bmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdHJhY2VfbGVuID0gdHJhY2VfbGVuID4gOCA/IDggOiB0cmFjZV9sZW47ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBtZW1jcHkodHJhY2VfZW50cnktPm5hbWUsICh0bmFtZSksIHRyYWNlX2xlbik7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHRyYWNlX2VudHJ5LT50aW1lID0gdGltZXYudHZfdXNlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdHJhY2VfZW50cnktPmNwdSA9ICh1bnNpZ25lZCBjaGFyKShzbXBfcHJvY2Vzc29yX2lkKCkgJiAweEZGKTsgICAgICAgXAorICAgICAgICAgICAgICAgIHRyYWNlX2VudHJ5LT5kcml2ZXIgPSAodGRyaXZlcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdHJhY2VfZW50cnktPmlycWwgPSB0cmFjZV9pcnFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB0cmFjZV9lbnRyeS0+YXJnMSA9ICh1bG9uZykoYTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHRyYWNlX2VudHJ5LT5hcmcyID0gKHVsb25nKShhMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdHJhY2VfZW50cnktPmFyZzMgPSAodWxvbmcpKGEzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB0cmFjZV9lbnRyeS0+YXJnNCA9ICh1bG9uZykoYTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKGJ1ZmZlciktPmluKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoKGJ1ZmZlciktPmluID09IFRSQUNFX0VOVFJJRVMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlciktPmluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmKGJ1ZmZlciktPmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisjZWxzZQorI2RlZmluZSBTWEdfVFJBQ0UodGRyaXZlciwgYnVmZmVyLCB0bGV2ZWwsIHRuYW1lLCBhMSwgYTIsIGEzLCBhNCkKKyNlbmRpZgorCisjZW5kaWYKKworI2VuZGlmICAvKiAgX1NYR19ERUJVR19IXyAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnaGlmLmggYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z2hpZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjZjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z2hpZi5oCkBAIC0wLDAgKzEsODYxIEBACisvKgorICogQ29weXJpZ2h0IKkgMTk5Ny0yMDA3IEFsYWNyaXRlY2gsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICoKKyAqICRJZDogc3hnaGlmLmgsdiAxLjUgMjAwOC8wNy8yNCAxOToxODoyMiBjaHJpcyBFeHAgJAorICoKKyAqIHN4Z2hpZi5oOgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyBmb3IgdGhlCisgKiBBbGFjcml0ZWNoIFNhaGFyYSBob3N0IGludGVyZmFjZQorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBVQ09ERSBSZWdpc3RlcnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgX1NYR19VQ09ERV9SRUdTIHsKKwkvLyBBZGRyZXNzIDAgLSAweDNGID0gQ29tbWFuZCBjb2RlcyAwLTE1IGZvciBUQ0IgMC4gIEV4Y29kZSAwCisJdTMyCQlJY3I7CQkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMCAtIEludCBjb250cm9sCisJdTMyCQlSc3ZkUmVnMTsJCS8vIENvZGUgPSAxIC0gVE9FIC1OQQorCXUzMgkJUnN2ZFJlZzI7CQkvLyBDb2RlID0gMiAtIFRPRSAtTkEKKwl1MzIJCVJzdmRSZWczOwkJLy8gQ29kZSA9IDMgLSBUT0UgLU5BCisJdTMyCQlSc3ZkUmVnNDsJCS8vIENvZGUgPSA0IC0gVE9FIC1OQQorCXUzMgkJUnN2ZFJlZzU7CQkvLyBDb2RlID0gNSAtIFRPRSAtTkEKKwl1MzIJCUNhcmRVcDsJCQkvLyBDb2RlID0gNiAtIE1pY3JvY29kZSBpbml0aWFsaXplZCB3aGVuIDEKKwl1MzIJCVJzdmRSZWc3OwkJLy8gQ29kZSA9IDcgLSBUT0UgLU5BCisJdTMyCQlDb2RlTm90VXNlZFs4XTsJCS8vIENvZGVzIDgtMTUgbm90IHVzZWQuICBFeENvZGUgPSAwCisJLy8gVGhpcyBicmluZ3MgdXMgdG8gRXhDb2RlIDEgYXQgYWRkcmVzcyAweDQwID0gSW50ZXJydXB0IHN0YXR1cyBwb2ludGVyCisJdTMyCQlJc3A7CQkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMQorCXUzMgkJUGFkRXgxWzE1XTsJCS8vIENvZGVzIDEtMTUgbm90IHVzZWQgd2l0aCBleHRlbmRlZCBjb2RlcworCS8vIEV4Q29kZSAyID0gSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgorCXUzMgkJSXNyOwkJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDIKKwl1MzIJCVBhZEV4MlsxNV07CisJLy8gRXhDb2RlIDMgPSBFdmVudCBiYXNlIHJlZ2lzdGVyLiAgTG9jYXRpb24gb2YgZXZlbnQgcmluZ3MKKwl1MzIJCUV2ZW50QmFzZTsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDMKKwl1MzIJCVBhZEV4M1sxNV07CisJLy8gRXhDb2RlIDQgPSBFdmVudCByaW5nIHNpemUKKwl1MzIJCUV2ZW50U2l6ZTsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDQKKwl1MzIJCVBhZEV4NFsxNV07CisJLy8gRXhDb2RlIDUgPSBUQ0IgQnVmZmVycyBiYXNlIGFkZHJlc3MKKwl1MzIJCVRjYkJhc2U7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSA1CisJdTMyCQlQYWRFeDVbMTVdOworCS8vIEV4Q29kZSA2ID0gVENCIENvbXBvc2l0ZSBCdWZmZXJzIGJhc2UgYWRkcmVzcworCXUzMgkJVGNiQ29tcEJhc2U7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSA2CisJdTMyCQlQYWRFeDZbMTVdOworCS8vIEV4Q29kZSA3ID0gVHJhbnNtaXQgcmluZyBiYXNlIGFkZHJlc3MKKwl1MzIJCVhtdEJhc2U7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSA3CisJdTMyCQlQYWRFeDdbMTVdOworCS8vIEV4Q29kZSA4ID0gVHJhbnNtaXQgcmluZyBzaXplCisJdTMyCQlYbXRTaXplOwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gOAorCXUzMgkJUGFkRXg4WzE1XTsKKwkvLyBFeENvZGUgOSA9IFJlY2VpdmUgcmluZyBiYXNlIGFkZHJlc3MKKwl1MzIJCVJjdkJhc2U7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSA5CisJdTMyCQlQYWRFeDlbMTVdOworCS8vIEV4Q29kZSAxMCA9IFJlY2VpdmUgcmluZyBzaXplCisJdTMyCQlSY3ZTaXplOwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMTAKKwl1MzIJCVBhZEV4MTBbMTVdOworCS8vIEV4Q29kZSAxMSA9IFJlYWQgRUVQUk9NIENvbmZpZworCXUzMgkJQ29uZmlnOwkJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDExCisJdTMyCQlQYWRFeDExWzE1XTsKKwkvLyBFeENvZGUgMTIgPSBNdWx0aWNhc3QgYml0cyAzMTowCisJdTMyCQlNY2FzdExvdzsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDEyCisJdTMyCQlQYWRFeDEyWzE1XTsKKwkvLyBFeENvZGUgMTMgPSBNdWx0aWNhc3QgYml0cyA2MzozMgorCXUzMgkJTWNhc3RIaWdoOwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMTMKKwl1MzIJCVBhZEV4MTNbMTVdOworCS8vIEV4Q29kZSAxNCA9IFBpbmcKKwl1MzIJCVBpbmc7CQkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMTQKKwl1MzIJCVBhZEV4MTRbMTVdOworCS8vIEV4Q29kZSAxNSA9IExpbmsgTVRVCisJdTMyCQlMaW5rTXR1OwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMTUKKwl1MzIJCVBhZEV4MTVbMTVdOworCS8vIEV4Q29kZSAxNiA9IERvd25sb2FkIHN5bmNocm9uaXphdGlvbgorCXUzMgkJTG9hZFN5bmM7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSAxNgorCXUzMgkJUGFkRXgxNlsxNV07CisJLy8gRXhDb2RlIDE3ID0gVXBwZXIgRFJBTSBhZGRyZXNzIGJpdHMgb24gMzItYml0IHN5c3RlbXMKKwl1MzIJCVVwcGVyOwkJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDE3CisJdTMyCQlQYWRFeDE3WzE1XTsKKwkvLyBFeENvZGUgMTggPSBTbG93cGF0aCBTZW5kIEluZGV4IEFkZHJlc3MKKwl1MzIJCVNQU2VuZEluZGV4OwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMTgKKwl1MzIJCVBhZEV4MThbMTVdOworCXUzMgkJUnN2ZFhGOwkJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDE5CisJdTMyCQlQYWRFeDE5WzE1XTsKKwkvLyBFeENvZGUgMjAgPSBBZ2dyZWdhdGlvbgorCXUzMgkJQWdncmVnYXRpb247CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSAyMAorCXUzMgkJUGFkRXgyMFsxNV07CisJLy8gRXhDb2RlIDIxID0gUmVjZWl2ZSBNREwgcHVzaCB0aW1lcgorCXUzMgkJUHVzaFRpY2tzOwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMjEKKwl1MzIJCVBhZEV4MjFbMTVdOworCS8vIEV4Q29kZSAyMiA9IFRPRSBOQQorCXUzMgkJQWNrRnJlcXVlbmN5OwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMjIKKwl1MzIJCVBhZEV4MjJbMTVdOworCS8vIEV4Q29kZSAyMyA9IFRPRSBOQQorCXUzMgkJUnN2ZFJlZzIzOworCXUzMgkJUGFkRXgyM1sxNV07CisJLy8gRXhDb2RlIDI0ID0gVE9FIE5BCisJdTMyCQlSc3ZkUmVnMjQ7CisJdTMyCQlQYWRFeDI0WzE1XTsKKwkvLyBFeENvZGUgMjUgPSBUT0UgTkEKKwl1MzIJCVJzdmRSZWcyNTsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDI1CisJdTMyCQlQYWRFeDI1WzE1XTsKKwkvLyBFeENvZGUgMjYgPSBSZWNlaXZlIGNoZWNrc3VtIHJlcXVpcmVtZW50cworCXUzMgkJUmVjZWl2ZUNoZWNrc3VtOwkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSAyNgorCXUzMgkJUGFkRXgyNlsxNV07CisJLy8gRXhDb2RlIDI3ID0gUlNTIFJlcXVpcmVtZW50cworCXUzMgkJUnNzOwkJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDI3CisJdTMyCQlQYWRFeDI3WzE1XTsKKwkvLyBFeENvZGUgMjggPSBSU1MgVGFibGUKKwl1MzIJCVJzc1RhYmxlOwkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMjgKKwl1MzIJCVBhZEV4MjhbMTVdOworCS8vIEV4Q29kZSAyOSA9IEV2ZW50IHJpbmcgcmVsZWFzZSBlbnRyaWVzCisJdTMyCQlFdmVudFJlbGVhc2U7CQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSAyOQorCXUzMgkJUGFkRXgyOVsxNV07CisJLy8gRXhDb2RlIDMwID0gTnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVybGlzdCBjb21tYW5kcyBvbiByaW5nIDAKKwl1MzIJCVJjdkNtZDsJCQkvLyBDb2RlID0gMCAoZXh0ZW5kZWQpLCBFeENvZGUgPSAzMAorCXUzMgkJUGFkRXgzMFsxNV07CisJLy8gRXhDb2RlIDMxID0gc2xvd3BhdGggdHJhbnNtaXQgY29tbWFuZCAtIERhdGFbMzE6MF0gPSAxCisJdTMyCQlYbXRDbWQ7CQkJLy8gQ29kZSA9IDAgKGV4dGVuZGVkKSwgRXhDb2RlID0gMzEKKwl1MzIJCVBhZEV4MzFbMTVdOworCS8vIEV4Q29kZSAzMiA9IER1bXAgY29tbWFuZAorCXUzMgkJRHVtcENtZDsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDMyCisJdTMyCQlQYWRFeDMyWzE1XTsKKwkvLyBFeENvZGUgMzMgPSBEZWJ1ZyBjb21tYW5kCisJdTMyCQlEZWJ1Z0NtZDsJCS8vIENvZGUgPSAwIChleHRlbmRlZCksIEV4Q29kZSA9IDMzCisJdTMyCQlQYWRFeDMzWzE1XTsKKwkvLyBUaGVyZSBhcmUgMTI4IHBvc3NpYmxlIGV4dGVuZGVkIGNvbW1hbmRzIC0gZWFjaCBvZiBhY2NvdW50IGZvciAxNgorCS8vIHdvcmRzIChpbmNsdWRpbmcgdGhlIG5vbi1yZWxldmVudCBiYXNlIGNvbW1hbmQgY29kZXMgMS0xNSkuCisJLy8gUGFkIGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZXNlIGhlcmUgdG8gYnJpbmcgdXMgdG8gdGhlIG5leHQgQ1BVCisJLy8gYmFzZS4gIEFzIGV4dGVuZGVkIGNvZGVzIGFyZSBhZGRlZCwgcmVkdWNlIHRoZSBmaXJzdCBhcnJheSB2YWx1ZSBpbgorCS8vIHRoZSBmb2xsb3dpbmcgZmllbGQKKwl1MzIJCVBhZFRvTmV4dENwdVs5NF1bMTZdOwkvLyA5NCA9IDEyOCAtIDM0ICgzNCA9IEV4Y29kZXMgMCAtIDMzKQorfSBTWEdfVUNPREVfUkVHUywgKlBTWEdfVUNPREVfUkVHUzsKKworLy8gSW50ZXJydXB0IGNvbnRyb2wgcmVnaXN0ZXIgKDApIHZhbHVlcworI2RlZmluZSBTWEdfSUNSX0RJU0FCTEUJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgU1hHX0lDUl9FTkFCTEUJCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgU1hHX0lDUl9NQVNLCQkJCQkweDAwMDAwMDAyCisjZGVmaW5lIFNYR19JQ1JfTVNHSURfTUFTSwkJCQkweEZGRkYwMDAwCisjZGVmaW5lIFNYR19JQ1JfTVNHSURfU0hJRlQJCQkxNgorI2RlZmluZSBTWEdfSUNSKF9NZXNzYWdlSWQsIF9EYXRhKQlcCisJKCgoKF9NZXNzYWdlSWQpIDw8IFNYR19JQ1JfTVNHSURfU0hJRlQpICYJXAorCSAgU1hHX0lDUl9NU0dJRF9NQVNLKSB8IChfRGF0YSkpCisKKy8vIFRoZSBNaWNyb2NvZGUgc3VwcG9ydHMgdXAgdG8gMTYgUlNTIHF1ZXVlcworI2RlZmluZSBTWEdfTUFYX1JTUwkJCQkxNgorI2RlZmluZSBTWEdfTUFYX1JTU19UQUJMRV9TSVpFCTI1NgkJLy8gMjU2LWJ5dGUgbWF4CisKKyNkZWZpbmUgU1hHX1JTU19UQ1A2CQkJCTB4MDAwMDAwMDEJLy8gUlNTIFRDUCBvdmVyIElQdjYKKyNkZWZpbmUgU1hHX1JTU19UQ1A0CQkJCTB4MDAwMDAwMDIJLy8gUlNTIFRDUCBvdmVyIElQdjQKKyNkZWZpbmUgU1hHX1JTU19MRUdBQ1kJCQkJMHgwMDAwMDAwNAkvLyBMaW5lLWJhc2UgaW50ZXJydXB0cworI2RlZmluZSBTWEdfUlNTX1RBQkxFX1NJWkUJCQkweDAwMDBGRjAwCS8vIFRhYmxlIHNpemUgbWFzaworI2RlZmluZSBTWEdfUlNTX1RBQkxFX1NISUZUCQkJOAorI2RlZmluZQlTWEdfUlNTX0JBU0VfQ1BVCQkJMHgwMEZGMDAwMAkvLyBCYXNlIENQVSAobm90IHVzZWQpCisjZGVmaW5lIFNYR19SU1NfQkFTRV9TSElGVAkJCTE2CisKKyNkZWZpbmUgU1hHX1JDVl9JUF9DU1VNX0VOQUJMRUQJCTB4MDAwMDAwMDEJLy8gRXhDb2RlIDI2IChSZWNlaXZlQ2hlY2tzdW0pCisjZGVmaW5lIFNYR19SQ1ZfVENQX0NTVU1fRU5BQkxFRAkweDAwMDAwMDAyCS8vIEV4Q29kZSAyNiAoUmVjZWl2ZUNoZWNrc3VtKQorCisjZGVmaW5lIFNYR19YTVRfQ1BVSURfU0hJRlQJCQkxNgorCisjaWYgVlBDSQorI2RlZmluZSBTWEdfQ0hFQ0tfRk9SX0hBTkdfVElNRQkJMzAwMAorI2Vsc2UKKyNkZWZpbmUgU1hHX0NIRUNLX0ZPUl9IQU5HX1RJTUUJCTUKKyNlbmRpZgorCisvKgorICogVENCIHJlZ2lzdGVycyAtIFRoaXMgaXMgcmVhbGx5IHRoZSBzYW1lIHJlZ2lzdGVyIG1lbW9yeSBhcmVhIGFzIFVDT0RFX1JFR1MKKyAqIGFib3ZlLCBidXQgZGVmaW5lZCBkaWZmZXJlbnRseS4gIEJpdHMgMTc6MDYgb2YgdGhlIGFkZHJlc3MgZGVmaW5lIHRoZSBUQ0IsCisgKiB3aGljaCBtZWFucyBlYWNoIFRDQiBhcmVhIG9jY3VwaWVzIDB4NDAgKDY0KSBieXRlcywgb3IgMTYgdTMyUy4gIFdoYXQgcmVhbGx5CisgKiBpcyBoYXBwZW5pbmcgaXMgdGhhdCB0aGVzZSByZWdpc3RlcnMgb2NjdXB5IHRoZSAiUGFkRXhbMTVdIiBhcmVhcyBpbiB0aGUKKyAqIFNYR19VQ09ERV9SRUdTIGRlZmluaXRpb24gYWJvdmUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1NYR19UQ0JfUkVHUyB7CisJdTMyCQlFeENvZGU7CQkvKiBFeHRlbmRlZCBjb2RlcyAtIHNlZSBTWEdfVUNPREVfUkVHUyAqLworCXUzMgkJWG10OwkJLyogQ29kZSA9IDEgLSAjIG9mIFhtdCBkZXNjcmlwdG9ycyBhZGRlZCB0byByaW5nICovCisJdTMyCQlSY3Y7CQkvKiBDb2RlID0gMiAtICMgb2YgUmN2IGRlc2NyaXB0b3JzIGFkZGVkIHRvIHJpbmcgKi8KKwl1MzIJCVJzdmQxOwkJLyogQ29kZSA9IDMgLSBUT0UgTkEgKi8KKwl1MzIJCVJzdmQyOwkJLyogQ29kZSA9IDQgLSBUT0UgTkEgKi8KKwl1MzIJCVJzdmQzOwkJLyogQ29kZSA9IDUgLSBUT0UgTkEgKi8KKwl1MzIJCUludmFsaWQ7CS8qIENvZGUgPSA2IC0gUmVzZXJ2ZWQgZm9yICJDYXJkVXAiIHNlZSBhYm92ZSAqLworCXUzMgkJUnN2ZDQ7CQkvKiBDb2RlID0gNyAtIFRPRSBOQSAqLworCXUzMgkJUnN2ZDU7CQkvKiBDb2RlID0gOCAtIFRPRSBOQSAqLworCXUzMgkJUGFkWzddOwkJLyogQ29kZXMgOC0xNSAtIE5vdCB1c2VkLiAqLworfSBTWEdfVENCX1JFR1MsICpQU1hHX1RDQl9SRUdTOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJU1IgRm9ybWF0CisgKiAgICAgICAgICAgICAgICAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICogICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICogICAgICAgICAgICAgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwKKyAqICAgICAgICAgICAgICAgIHxfX19ffF9fX198X19fX3xfX19ffF9fX198X19fX3xfX19ffF9fX198CisgKiAgICAgICAgICAgICAgICAgXl5eXiBeXl5eIF5eXl4gXl5eXiBcICAgICAgICAgICAgICAgICAvCisgKiAgICAgICAgICAgRVJSIC0tfHx8fCB8fHx8IHx8fHwgfHx8fCAgLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgICAgRVZFTlQgLS0tfHx8IHx8fHwgfHx8fCB8fHx8ICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgLS0tLXx8IHx8fHwgfHx8fCB8fHx8ICAgICAgICAgIHwtLSBDcmFzaCBBZGRyZXNzCisgKiAgICAgICAgICAgVVBDIC0tLS0tfCB8fHx8IHx8fHwgfHx8fAorICogICAgICAgIExFVkVOVCAtLS0tLS0tfHx8fCB8fHx8IHx8fHwKKyAqICAgICAgICAgIFBEUUYgLS0tLS0tLS18fHwgfHx8fCB8fHx8CisgKiAgICAgICAgIFJNSVNTIC0tLS0tLS0tLXx8IHx8fHwgfHx8fAorICogICAgICAgICBCUkVBSyAtLS0tLS0tLS0tfCB8fHx8IHx8fHwKKyAqICAgICAgIEhCRUFUT0sgLS0tLS0tLS0tLS0tfHx8fCB8fHx8CisgKiAgICAgICBOT0hCRUFUIC0tLS0tLS0tLS0tLS18fHwgfHx8fAorICogICAgICAgIEVSRlVMTCAtLS0tLS0tLS0tLS0tLXx8IHx8fHwKKyAqICAgICAgICAgWERST1AgLS0tLS0tLS0tLS0tLS0tfCB8fHx8CisgKiAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tfHx8fAorICogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLXx8fHwtLVwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwtLS18LUNwdUlkIG9mIGNyYXNoCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgU1hHX0lTUl9FUlIJCTB4ODAwMDAwMDAJLy8gRXJyb3IKKyNkZWZpbmUgU1hHX0lTUl9FVkVOVAkJMHg0MDAwMDAwMAkvLyBFdmVudCByaW5nIGV2ZW50CisjZGVmaW5lIFNYR19JU1JfTk9ORTEJCTB4MjAwMDAwMDAJLy8gTm90IHVzZWQKKyNkZWZpbmUgU1hHX0lTUl9VUEMJCTB4MTAwMDAwMDAJLy8gRHVtcC9kZWJ1ZyBjb21tYW5kIGNvbXBsZXRlCisjZGVmaW5lIFNYR19JU1JfTElOSwkJMHgwODAwMDAwMAkvLyBMaW5rIGV2ZW50CisjZGVmaW5lIFNYR19JU1JfUERRRgkJMHgwNDAwMDAwMAkvLyBQcm9jZXNzZWQgZGF0YSBxdWV1ZSBmdWxsCisjZGVmaW5lIFNYR19JU1JfUk1JU1MJCTB4MDIwMDAwMDAJLy8gRHJvcCAtIG5vIGhvc3QgYnVmCisjZGVmaW5lIFNYR19JU1JfQlJFQUsJCTB4MDEwMDAwMDAJLy8gQnJlYWtwb2ludCBoaXQKKyNkZWZpbmUgU1hHX0lTUl9QSU5HCQkweDAwODAwMDAwCS8vIEhlYXJ0YmVhdCByZXNwb25zZQorI2RlZmluZSBTWEdfSVNSX0RFQUQJCTB4MDA0MDAwMDAJLy8gQ2FyZCBjcmFzaAorI2RlZmluZSBTWEdfSVNSX0VSRlVMTAkJMHgwMDIwMDAwMAkvLyBFdmVudCByaW5nIGZ1bGwKKyNkZWZpbmUgU1hHX0lTUl9YRFJPUAkJMHgwMDEwMDAwMAkvLyBYTVQgRHJvcCAtIG5vIERSQU0gYnVmcyBvciBYTVQgZXJyCisjZGVmaW5lIFNYR19JU1JfU1BTRU5ECQkweDAwMDgwMDAwCS8vIFNsb3cgc2VuZCBjb21wbGV0ZQorI2RlZmluZSBTWEdfSVNSX0NQVQkJMHgwMDA3MDAwMAkvLyBEZWFkIENQVSBtYXNrCisjZGVmaW5lIFNYR19JU1JfQ1BVX1NISUZUCQkxNgkvLyBEZWFkIENQVSBzaGlmdAorI2RlZmluZSBTWEdfSVNSX0NSQVNICQkweDAwMDBGRkZGCS8vIENyYXNoIGFkZHJlc3MgbWFzaworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRXZlbnQgUmluZyBlbnRyeQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogIDMxICAgICAgICAgICAgICAgICAgMTUgICAgICAgICAgICAgICAgIDAKKyAqICAuX19fX19fX19fX19fX19fX19fXy5fX19fX19fX19fX19fX19fX19fLgorICogIHw8LS0tLS0tLS0tLS0tICAgIFBhZCAwICAgIC0tLS0tLS0tLS0tLT58CisgKiAgfF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3wwCQkweDAwCisgKiAgfDwtLS0tLS0tLS0tLS0gICAgUGFkIDEgICAgLS0tLS0tLS0tLS0tPnwKKyAqICB8X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffDQJCTB4MDQKKyAqICB8PC0tLS0tLS0tLS0tLSAgICBQYWQgMiAgICAtLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198OCAJCTB4MDgKKyAqICB8PC0tLS0tLS0tLS0tIEV2ZW50IFdvcmQgMCAtLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MTIJCTB4MGMKKyAqICB8PC0tLS0tLS0tLS0tIEV2ZW50IFdvcmQgMSAtLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MTYJCTB4MTAKKyAqICB8PC0tLS0tLS0tLS0tLS0gVG9lcGxpdHogICAtLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjAJCTB4MTQKKyAqICB8PC0tLS0tIExlbmd0aCAtLS0tPnw8LS0tLS0tIFRDQiBJZCAtLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjQJCTB4MTgKKyAqICB8PC0tLS0tIFN0YXR1cyAtLS0tPnxFdm50IENvZGV8RmxzaCBDb2RlfAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjgJCTB4MWMKKyAqICAgXiAgICAgICAgICAgICAgICAgICBeXl5eIF5eXl4KKyAqICAgfC0gVkFMSUQgICAgICAgICAgICB8fHx8IHx8fHwtIFJCVUZDCisgKiAgICAgICAgICAgICAgICAgICAgICAgfHx8fCB8fHwtLSBTTE9XUgorICogICAgICAgICAgICAgICAgICAgICAgIHx8fHwgfHwtLS0gVU5VU0VECisgKiAgICAgICAgICAgICAgICAgICAgICAgfHx8fCB8LS0tLSBGQVNUQworICogICAgICAgICAgICAgICAgICAgICAgIHx8fHwtLS0tLS0gRkFTVFIKKyAqICAgICAgICAgICAgICAgICAgICAgICB8fHwtLS0tLS0tCisgKiAgICAgICAgICAgICAgICAgICAgICAgfHwtLS0tLS0tLQorICogICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0KKyAqCisgKiBTbG93cGF0aCBzdGF0dXM6CisgKiAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICogIHw8LS0tLS0gU3RhdHVzIC0tLS0+fEV2bnQgQ29kZXxGbHNoIENvZGV8CisgKiAgfF9fX19fX19fX3xDbWQgSW5kZXh8X19fX19fX19ffF9fX19fX19fX3wyOAkJMHgxYworICogICAgXl5eIF5eXl4KKyAqICAgIHx8fCB8fHx8LSBJU1RDUElQNgorICogICAgfHx8IHx8fC0tIElQT05MWQorICogICAgfHx8IHx8LS0tIFJDVkVSUgorICogICAgfHx8IHwtLS0tIElQQ0JBRAorICogICAgfHx8LS0tLS0tIFRDUENCQUQKKyAqICAgIHx8LS0tLS0tLSBJU1RDUElQCisgKiAgICB8LS0tLS0tLS0gU0NFUlIKKyAqCisgKi8KKyNwcmFnbWEgcGFjayhwdXNoLCAxKQordHlwZWRlZiBzdHJ1Y3QgX1NYR19FVkVOVCB7CisJdTMyCQkJUGFkWzFdOwkJLy8gbm90IHVzZWQKKwl1MzIJCQlTbmRVbmE7CQkvLyBTbmRVbmEgdmFsdWUKKwl1MzIJCQlSZXNpZDsJCS8vIHJlY2VpdmUgTURMIHJlc2lkCisJdW5pb24geworCQl2b2lkICoJCUhvc3RIYW5kbGU7CS8vIFJlY2VpdmUgaG9zdCBoYW5kbGUKKwkJdTMyCQlSc3ZkMTsJCS8vIFRPRSBOQQorCQlzdHJ1Y3QgeworCQkJdTMyCU5vdFVzZWQ7CisJCQl1MzIJUnN2ZDI7CQkvLyBUT0UgTkEKKwkJfSBGbHVzaDsKKwl9OworCXUzMgkJCVRvZXBsaXR6OwkvLyBSU1MgVG9lcGxpdHogaGFzaAorCXVuaW9uIHsKKwkJdXNob3J0CQlSc3ZkMzsJCS8vIFRPRSBOQQorCQl1c2hvcnQJCUhkck9mZnNldDsJLy8gU2xvd3BhdGgKKwl9OworCXVzaG9ydAkJCUxlbmd0aDsJCS8vCisJdW5zaWduZWQgY2hhciAJCVJzdmQ0OwkJLy8gVE9FIE5BCisJdW5zaWduZWQgY2hhciAJCUNvZGU7CQkvLyBFdmVudCBjb2RlCisJdW5zaWduZWQgY2hhcgkJQ29tbWFuZEluZGV4OwkvLyBOZXcgcmluZyBpbmRleAorCXVuc2lnbmVkIGNoYXIJCVN0YXR1czsJCS8vIEV2ZW50IHN0YXR1cworfSBTWEdfRVZFTlQsICpQU1hHX0VWRU5UOworI3ByYWdtYSBwYWNrKHBvcCkKKworLy8gRXZlbnQgY29kZSBkZWZpbml0aW9ucworI2RlZmluZSBFVkVOVF9DT0RFX0JVRkZFUlMJMHgwMQkvLyBSZWNlaXZlIGJ1ZmZlciBsaXN0IGNvbW1hbmQgKHJpbmcgMCkKKyNkZWZpbmUgRVZFTlRfQ09ERV9TTE9XUkNWCTB4MDIJLy8gU2xvd3BhdGggcmVjZWl2ZQorI2RlZmluZSBFVkVOVF9DT0RFX1VOVVNFRAkweDA0CS8vIFdhcyBzbG93cGF0aCBjb21tYW5kcyBjb21wbGV0ZQorCisvLyBTdGF0dXMgdmFsdWVzCisjZGVmaW5lIEVWRU5UX1NUQVRVU19WQUxJRAkweDgwCS8vIEVudHJ5IHZhbGlkCisKKy8vIFNsb3dwYXRoIHN0YXR1cworI2RlZmluZSBFVkVOVF9TVEFUVVNfRVJST1IJMHg0MAkvLyBDb21wbGV0ZWQgd2l0aCBlcnJvci4gSW5kZXggaW4gbmV4dCBieXRlCisjZGVmaW5lIEVWRU5UX1NUQVRVU19UQ1BJUDQJMHgyMAkvLyBUQ1BJUHY0IGZyYW1lCisjZGVmaW5lIEVWRU5UX1NUQVRVU19UQ1BCQUQJMHgxMAkvLyBCYWQgVENQIGNoZWNrc3VtCisjZGVmaW5lIEVWRU5UX1NUQVRVU19JUEJBRAkweDA4CS8vIEJhZCBJUCBjaGVja3N1bQorI2RlZmluZSBFVkVOVF9TVEFUVVNfUkNWRVJSCTB4MDQJLy8gU2xvd3BhdGggcmVjZWl2ZSBlcnJvcgorI2RlZmluZSBFVkVOVF9TVEFUVVNfSVBPTkxZCTB4MDIJLy8gSVAgZnJhbWUKKyNkZWZpbmUgRVZFTlRfU1RBVFVTX1RDUElQNgkweDAxCS8vIFRDUElQdjYgZnJhbWUKKyNkZWZpbmUgRVZFTlRfU1RBVFVTX1RDUElQCTB4MjEJLy8gQ29tYmluYXRpb24gb2YgdjQgYW5kIHY2CisKKy8vIEV2ZW50IHJpbmcKKy8vIFNpemUgbXVzdCBiZSBwb3dlciBvZiAyLCBiZXR3ZWVuIDEyOCBhbmQgMTZrCisjZGVmaW5lIEVWRU5UX1JJTkdfU0laRQkJNDA5NgkvLyA/PworI2RlZmluZSBFVkVOVF9SSU5HX0JBVENICTE2CQkvLyBIYW5kIGVudHJpZXMgYmFjayAxNiBhdCBhIHRpbWUuCisjZGVmaW5lIEVWRU5UX0JBVENIX0xJTUlUCTI1NgkgICAgLy8gU3RvcCBwcm9jZXNzaW5nIGV2ZW50cyBhZnRlciAyNTYgKDE2ICogMTYpCisKK3R5cGVkZWYgc3RydWN0IF9TWEdfRVZFTlRfUklORyB7CisJU1hHX0VWRU5UCVJpbmdbRVZFTlRfUklOR19TSVpFXTsKK31TWEdfRVZFTlRfUklORywgKlBTWEdfRVZFTlRfUklORzsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRDQiBCdWZmZXJzCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIE1heGltdW0gbnVtYmVyIG9mIFRDQlMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlL21pY3JvY29kZQorI2RlZmluZSBTWEdfTUFYX1RDQgkJNDA5NgorLy8gTWluaW11bSBUQ0JzIGJlZm9yZSB3ZSBmYWlsIGluaXRpYWxpemF0aW9uCisjZGVmaW5lIFNYR19NSU5fVENCCQk1MTIKKy8vIFRDQiBIYXNoCisvLyBUaGUgYnVja2V0IGlzIGRldGVybWluZWQgYnkgYml0cyAxMTo0IG9mIHRoZSB0b2VwbGl0eiBpZiB3ZSBzdXBwb3J0IDRrCisvLyBvZmZsb2FkZWQgY29ubmVjdGlvbnMsIDEwOjQgaWYgd2Ugc3VwcG9ydCAyayBhbmQgc28gb24uCisjZGVmaW5lIFNYR19UQ0JfQlVDS0VUX1NISUZUCTQKKyNkZWZpbmUgU1hHX1RDQl9QRVJfQlVDS0VUCQkxNgorI2RlZmluZSBTWEdfVENCX0JVQ0tFVF9NQVNLCQkweEZGMAkvLyBCdWNrZXQgcG9ydGlvbiBvZiBUQ0IgSUQKKyNkZWZpbmUgU1hHX1RDQl9FTEVNRU5UX01BU0sJMHgwMEYJLy8gRWxlbWVudCB3aXRoaW4gYnVja2V0CisjZGVmaW5lIFNYR19UQ0JfQlVDS0VUUwkJCTI1NgkJLy8gMjU2ICogMTYgPSA0aworCisjZGVmaW5lIFNYR19UQ0JfQlVGRkVSX1NJWkUJNTEyCS8vIEFTU0VSVCBmb3JtYXQgaXMgY29ycmVjdAorCisjZGVmaW5lIFNYR19UQ0JfUkNWUV9TSVpFCQk3MzYKKworI2RlZmluZSBTWEdfVENCX0NPTVBPU0lURV9CVUZGRVJfU0laRQkxMDI0CisKKyNkZWZpbmUgU1hHX0xPQ0FURV9UQ1BfRlJBTUVfSERSKF9UY3BPYmplY3QsIF9JUHY2KQkJCQkJCQlcCisJKCgoX1RjcE9iamVjdCktPlZsYW5JZCkgPwkJCQkJCQkJCQkJCVwKKwkgKChfSVB2NikgPwkJLyogVmxhbiBmcmFtZSBoZWFkZXIgPSB5ZXMgKi8JCQkJCQkJXAorCSAgJihfVGNwT2JqZWN0KS0+Q29tcEJ1ZmZlci0+RnJhbWUuSGFzVmxhbi5UY3BJcDYuU3hnVGNwCQkJOglcCisJICAmKF9UY3BPYmplY3QpLT5Db21wQnVmZmVyLT5GcmFtZS5IYXNWbGFuLlRjcElwLlN4Z1RjcCkJCQk6IAlcCisJICgoX0lQdjYpID8JCS8qIFZsYW4gZnJhbWUgaGVhZGVyID0gTm8gKi8JCQkJCQkJXAorCSAgJihfVGNwT2JqZWN0KS0+Q29tcEJ1ZmZlci0+RnJhbWUuTm9WbGFuLlRjcElwNi5TeGdUY3AJCQkJOiAJXAorCSAgJihfVGNwT2JqZWN0KS0+Q29tcEJ1ZmZlci0+RnJhbWUuTm9WbGFuLlRjcElwLlN4Z1RjcCkpCisKKyNkZWZpbmUgU1hHX0xPQ0FURV9JUF9GUkFNRV9IRFIoX1RjcE9iamVjdCkJCQkJCQkJCQlcCisJKF9UY3BPYmplY3QpLT5WbGFuSWQgPwkJCQkJCQkJCQkJCQlcCisJJihfVGNwT2JqZWN0KS0+Q29tcEJ1ZmZlci0+RnJhbWUuSGFzVmxhbi5UY3BJcC5JcAkJCQk6IAkJXAorCSYoX1RjcE9iamVjdCktPkNvbXBCdWZmZXItPkZyYW1lLk5vVmxhbi5UY3BJcC5JcAorCisjZGVmaW5lIFNYR19MT0NBVEVfSVA2X0ZSQU1FX0hEUihfVGNwT2JqZWN0KQkJCQkJCQkJXAorCShfVGNwT2JqZWN0KS0+VmxhbklkID8JCQkJCQkJCQkJCQkJXAorCSYoX1RjcE9iamVjdCktPkNvbXBCdWZmZXItPkZyYW1lLkhhc1ZsYW4uVGNwSXA2LklwCQkJCToJCVwKKwkmKF9UY3BPYmplY3QpLT5Db21wQnVmZmVyLT5GcmFtZS5Ob1ZsYW4uVGNwSXA2LklwCisKKworI2lmIERCRworLy8gSG9ycmlibGUga2x1ZGdlIHRvIGRpc3Rpbmd1aXNoIGR1bWItbmljLCBzbG93cGF0aCwgYW5kCisvLyBmYXN0cGF0aCB0cmFmZmljLiAgRGVjcmVtZW50IHRoZSBIb3BMaW1pdCBieSBvbmUKKy8vIGZvciBzbG93cGF0aCwgdHdvIGZvciBmYXN0cGF0aC4gIFRoaXMgYXNzdW1lcyB0aGUgbGltaXQgaXMgbWVhc3VyYWJseQorLy8gZ3JlYXRlciB0aGFuIHR3bywgd2hpY2ggSSB0aGluayBpcyByZWFzb25hYmxlLgorLy8gT2J2aW91c2x5IHRoaXMgaXMgREJHIG9ubHkuICBNYXliZSByZW1vdmUgbGF0ZXIsIG9yICNpZiAwIHNvIHdlCisvLyBjYW4gc2V0IGl0IHdoZW4gbmVlZGVkCisjZGVmaW5lIFNYR19EQkdfSE9QX0xJTUlUKF9UY3BPYmplY3QsIF9GYXN0UGF0aCkgewkJCQkJCQkJXAorCVBJUFY2X0hEUgkJX0lwNkZyYW1lSGRyOwkJCQkJCQkJCQkJCVwKKwlpZigoX1RjcE9iamVjdCktPklQdjYpIHsJCQkJCQkJCQkJCQkJXAorCQlfSXA2RnJhbWVIZHIgPSBTWEdfTE9DQVRFX0lQNl9GUkFNRV9IRFIoKF9UY3BPYmplY3QpKTsJCQkJCVwKKwkJaWYoX0Zhc3RQYXRoKSB7CQkJCQkJCQkJCQkJCQkJXAorCQkJX0lwNkZyYW1lSGRyLT5Ib3BMaW1pdCA9IChfVGNwT2JqZWN0KS0+Q2FjaGVkLlR0bE9ySG9wTGltaXQgLSAyOwlcCisJCX0gZWxzZSB7CQkJCQkJCQkJCQkJCQkJCVwKKwkJCV9JcDZGcmFtZUhkci0+SG9wTGltaXQgPSAoX1RjcE9iamVjdCktPkNhY2hlZC5UdGxPckhvcExpbWl0IC0gMTsJXAorCQl9CQkJCQkJCQkJCQkJCQkJCQkJXAorCX0JCQkJCQkJCQkJCQkJCQkJCQkJXAorfQorI2Vsc2UKKy8vIERvIG5vdGhpbmcgd2l0aCBmcmVlIGJ1aWxkCisjZGVmaW5lIFNYR19EQkdfSE9QX0xJTUlUKF9UY3BPYmplY3QsIF9GYXN0UGF0aCkKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBSZWNlaXZlIGFuZCB0cmFuc21pdCByaW5ncworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgU1hHX01BWF9SSU5HX1NJWkUJMjU2CisjZGVmaW5lIFNYR19YTVRfUklOR19TSVpFCTEyOAkJLy8gU3RhcnQgd2l0aCAxMjgKKyNkZWZpbmUgU1hHX1JDVl9SSU5HX1NJWkUJMTI4CQkvLyBTdGFydCB3aXRoIDEyOAorI2RlZmluZSBTWEdfTUFYX0VOVFJJRVMgICAgIDQwOTYKKworLy8gU3RydWN0dXJlIGFuZCBtYWNyb3MgdG8gbWFuYWdlIGEgcmluZwordHlwZWRlZiBzdHJ1Y3QgX1NYR19SSU5HX0lORk8geworCXVuc2lnbmVkIGNoYXIJCQlIZWFkOwkJLy8gV2hlcmUgd2UgYWRkIGVudHJpZXMgLSBOb3RlIHVuc2lnbmVkIGNoYXI6UklOR19TSVpFCisJdW5zaWduZWQgY2hhcgkJCVRhaWw7CQkvLyBXaGVyZSB3ZSBwdWxsIG9mZiBjb21wbGV0ZWQgZW50cmllcworCXVzaG9ydAkJCVNpemU7CQkvLyBSaW5nIHNpemUgLSBNdXN0IGJlIG11bHRpcGxlIG9mIDIKKwl2b2lkICoJCQlDb250ZXh0W1NYR19NQVhfUklOR19TSVpFXTsJLy8gU2hhZG93IHJpbmcKK30gU1hHX1JJTkdfSU5GTywgKlBTWEdfUklOR19JTkZPOworCisjZGVmaW5lIFNYR19JTklUSUFMSVpFX1JJTkcoX3JpbmcsIF9zaXplKSB7CQkJCQkJCVwKKwkoX3JpbmcpLkhlYWQgPSAwOwkJCQkJCQkJCQkJCVwKKwkoX3JpbmcpLlRhaWwgPSAwOwkJCQkJCQkJCQkJCVwKKwkoX3JpbmcpLlNpemUgPSAoX3NpemUpOwkJCQkJCQkJCQkJXAorfQorI2RlZmluZSBTWEdfQURWQU5DRV9JTkRFWChfaW5kZXgsIF9zaXplKSAoKF9pbmRleCkgPSAoKF9pbmRleCkgKyAxKSAmICgoX3NpemUpIC0gMSkpCisjZGVmaW5lIFNYR19QUkVWSU9VU19JTkRFWChfaW5kZXgsIF9zaXplKSAoKChfaW5kZXgpIC0gMSkgJigoX3NpemUpIC0gMSkpCisjZGVmaW5lIFNYR19SSU5HX0VNUFRZKF9yaW5nKSAoKF9yaW5nKS0+SGVhZCA9PSAoX3JpbmcpLT5UYWlsKQorI2RlZmluZSBTWEdfUklOR19GVUxMKF9yaW5nKSAoKCgoX3JpbmcpLT5IZWFkICsgMSkgJiAoKF9yaW5nKS0+U2l6ZSAtIDEpKSA9PSAoX3JpbmcpLT5UYWlsKQorI2RlZmluZSBTWEdfUklOR19BRFZBTkNFX0hFQUQoX3JpbmcpIFNYR19BRFZBTkNFX0lOREVYKChfcmluZyktPkhlYWQsICgoX3JpbmcpLT5TaXplKSkKKyNkZWZpbmUgU1hHX1JJTkdfUkVUUkVBVF9IRUFEKF9yaW5nKSAoKF9yaW5nKS0+SGVhZCA9CQkJCVwKKwkJCQkJCQkJCSAgU1hHX1BSRVZJT1VTX0lOREVYKChfcmluZyktPkhlYWQsIChfcmluZyktPlNpemUpKQorI2RlZmluZSBTWEdfUklOR19BRFZBTkNFX1RBSUwoX3JpbmcpIHsJCQkJCQkJCVwKKwlBU1NFUlQoKF9yaW5nKS0+VGFpbCAhPSAoX3JpbmcpLT5IZWFkKTsJCQkJCQkJXAorCVNYR19BRFZBTkNFX0lOREVYKChfcmluZyktPlRhaWwsICgoX3JpbmcpLT5TaXplKSk7CQkJCVwKK30KKy8vIFNldCBjbWQgdG8gdGhlIG5leHQgYXZhaWxhYmxlIHJpbmcgZW50cnksIHNldCB0aGUgc2hhZG93IGNvbnRleHQKKy8vIGVudHJ5IGFuZCBhZHZhbmNlIHRoZSByaW5nLgorLy8gVGhlIGFwcHJvcHJpYXRlIGxvY2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIG1hY3JvCisjZGVmaW5lIFNYR19HRVRfQ01EKF9yaW5nLCBfcmluZ2luZm8sIF9jbWQsIF9jb250ZXh0KSB7CQkJCVwKKwlpZihTWEdfUklOR19GVUxMKF9yaW5naW5mbykpIHsJCQkJCQkJCQlcCisJCShfY21kKSA9IE5VTEw7CQkJCQkJCQkJCQkJXAorCX0gZWxzZSB7CQkJCQkJCQkJCQkJCQlcCisJCShfY21kKSA9ICYoX3JpbmcpLT5EZXNjcmlwdG9yc1soX3JpbmdpbmZvKS0+SGVhZF07CQkJXAorCQkoX3JpbmdpbmZvKS0+Q29udGV4dFsoX3JpbmdpbmZvKS0+SGVhZF0gPSAodm9pZCAqKShfY29udGV4dCk7XAorCQlTWEdfUklOR19BRFZBTkNFX0hFQUQoX3JpbmdpbmZvKTsJCQkJCQkJXAorCX0JCQkJCQkJCQkJCQkJCQkJXAorfQorCisvLyBBYm9ydCB0aGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgY29tbWFuZCBieSByZXRyZWF0aW5nIHRoZSBoZWFkLgorLy8gTk9URSAtIFRoZSBhcHBvcHJpYXRlIGxvY2sgTVVTVCBOT1QgQkUgRFJPUFBFRCBiZXR3ZWVuIHRoZSBTWEdfR0VUX0NNRAorLy8gYW5kIFNYR19BQk9SVF9DTUQgY2FsbHMuCisjZGVmaW5lIFNYR19BQk9SVF9DTUQoX3JpbmdpbmZvKSB7CQkJCQkJCQkJXAorCUFTU0VSVCghKFNYR19SSU5HX0VNUFRZKF9yaW5naW5mbykpKTsJCQkJCQkJXAorCVNYR19SSU5HX1JFVFJFQVRfSEVBRChfcmluZ2luZm8pOwkJCQkJCQkJXAorCShfcmluZ2luZm8pLT5Db250ZXh0WyhfcmluZ2luZm8pLT5IZWFkXSA9IE5VTEw7CQkJCQlcCit9CisKKy8vIEZvciB0aGUgZ2l2ZW4gcmluZywgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgdGFpbCBjbWQgYW5kIGNvbnRleHQsCisvLyBjbGVhciB0aGUgY29udGV4dCBhbmQgYWR2YW5jZSB0aGUgdGFpbAorI2RlZmluZSBTWEdfUkVUVVJOX0NNRChfcmluZywgX3JpbmdpbmZvLCBfY21kLCBfY29udGV4dCkgewkJCVwKKwkoX2NtZCkgPSAmKF9yaW5nKS0+RGVzY3JpcHRvcnNbKF9yaW5naW5mbyktPlRhaWxdOwkJCQlcCisJKF9jb250ZXh0KSA9IChfcmluZ2luZm8pLT5Db250ZXh0WyhfcmluZ2luZm8pLT5UYWlsXTsgICAgICAgCVwKKwkoX3JpbmdpbmZvKS0+Q29udGV4dFsoX3JpbmdpbmZvKS0+VGFpbF0gPSBOVUxMOwkJCQkJXAorCVNYR19SSU5HX0FEVkFOQ0VfVEFJTChfcmluZ2luZm8pOwkJCQkJCQkJXAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogSG9zdCBDb21tYW5kIEJ1ZmZlciAtIGNvbW1hbmRzIHRvIElOSUMgdmlhIHRoZSBDbWQgUmluZ3MKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICAzMSAgICAgICAgICAgICAgICAgIDE1ICAgICAgICAgICAgICAgICAwCisgKiAgLl9fX19fX19fX19fX19fX19fX18uX19fX19fX19fX19fX19fX19fXy4KKyAqICB8PC0tLS0tLS0tLS0tLS0tIFNnbCBMb3cgLS0tLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MAkJMHgwMAorICogIHw8LS0tLS0tLS0tLS0tLS0gU2dsIEhpZ2ggLS0tLS0tLS0tLS0tLT58CisgKiAgfF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3w0CQkweDA0CisgKiAgfDwtLS0tLS0tLS0tLS0tICBTZ2UgMCBMb3cgIC0tLS0tLS0tLS0tPnwKKyAqICB8X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffDggCQkweDA4CisgKiAgfDwtLS0tLS0tLS0tLS0tICBTZ2UgMCBIaWdoIC0tLS0tLS0tLS0tPnwKKyAqICB8X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffDEyCQkweDBjCisgKiAgfDwtLS0tLS0tLS0tLS0gIFNnZSAwIExlbmd0aCAtLS0tLS0tLS0tPnwKKyAqICB8X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198X19fX19fX19ffDE2CQkweDEwCisgKiAgfDwtLS0tLS0tLS0tLSBXaW5kb3cgVXBkYXRlIC0tLS0tLS0tLS0tPnwKKyAqICB8PC0tLS0tLS0tIFNQIDFzdCBTR0Ugb2Zmc2V0IC0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjAJCTB4MTQKKyAqICB8PC0tLS0tLS0tLS0tIFRvdGFsIExlbmd0aCAtLS0tLS0tLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjQJCTB4MTgKKyAqICB8PC0tLS0tIExDbnQgLS0tLS0tPnw8LS0tLS0gRmxhZ3MgLS0tLS0+fAorICogIHxfX19fX19fX198X19fX19fX19ffF9fX19fX19fX3xfX19fX19fX198MjgJCTB4MWMKKyAqLworI3ByYWdtYSBwYWNrKHB1c2gsIDEpCit0eXBlZGVmIHN0cnVjdCBfU1hHX0NNRCB7CisJZG1hX2FkZHJfdCAgICAgICAgICAgICAJCQlTZ2w7CQkJLy8gUGh5c2ljYWwgYWRkcmVzcyBvZiBTR0wKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlkbWE2NF9hZGRyX3QgICAgICAgICAgCUZpcnN0U2dlQWRkcmVzczsvLyBBZGRyZXNzIG9mIGZpcnN0IFNHRQorCQkJdTMyCQkJCQlGaXJzdFNnZUxlbmd0aDsJLy8gTGVuZ3RoIG9mIGZpcnN0IFNHRQorCQkJdW5pb24geworCQkJCXUzMgkJCQlSc3ZkMTsJICAgICAgICAvLyBUT0UgTkEKKwkJCQl1MzIJCQkJU2dlT2Zmc2V0OwkJLy8gU2xvd3BhdGggLSAybmQgU0dFIG9mZnNldAorCQkJCXUzMgkJCQlSZXNpZDsJCQkvLyBNREwgY29tcGxldGlvbiAtIGNsb2JiZXJzIHVwZGF0ZQorCQkJfTsKKwkJCXVuaW9uIHsKKwkJCQl1MzIJCQkJVG90YWxMZW5ndGg7CS8vIFRvdGFsIHRyYW5zZmVyIGxlbmd0aAorCQkJCXUzMgkJCQlNc3M7CQkJLy8gTFNPIE1TUworCQkJfTsKKwkJfSBCdWZmZXI7CisJfTsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1bnNpZ25lZCBjaGFyCQkJCQlGbGFnczo0OwkJLy8gc2xvd3BhdGggZmxhZ3MKKwkJCXVuc2lnbmVkIGNoYXIJCQkJCUlwSGw6NDsJCQkvLyBJcCBoZWFkZXIgbGVuZ3RoICg+PjIpCisJCQl1bnNpZ25lZCBjaGFyCQkJCQlNYWNMZW47CQkJLy8gTWFjIGhlYWRlciBsZW4KKwkJfSBDc3VtRmxhZ3M7CisJCXN0cnVjdCB7CisJCQl1c2hvcnQJCQkJCUZsYWdzOjQ7CQkvLyBzbG93cGF0aCBmbGFncworCQkJdXNob3J0CQkJCQlUY3BIZHJPZmY6NzsJLy8gVENQCisJCQl1c2hvcnQJCQkJCU1hY0xlbjo1OwkJLy8gTWFjIGhlYWRlciBsZW4KKwkJfSBMc29GbGFnczsKKwkJdXNob3J0CQkJCQkJRmxhZ3M7CQkJLy8gZmxhZ3MKKwl9OworCXVuaW9uIHsKKwkJdXNob3J0CQkJCQkJU2dFbnRyaWVzOwkJLy8gU0cgZW50cnkgY291bnQgaW5jbHVkaW5nIGZpcnN0IHNnZQorCQlzdHJ1Y3QgeworCQkJdW5zaWduZWQgY2hhcgkJCQkJU3RhdHVzOwkJICAgIC8vIENvcGllZCBmcm9tIGV2ZW50IHN0YXR1cworCQkJdW5zaWduZWQgY2hhcgkJCQkJTm90VXNlZDsKKwkJfSBTdGF0dXM7CisJfTsKK30gU1hHX0NNRCwgKlBTWEdfQ01EOworI3ByYWdtYSBwYWNrKHBvcCkKKworI3ByYWdtYSBwYWNrKHB1c2gsIDEpCit0eXBlZGVmIHN0cnVjdCBfVkxBTl9IRFIgeworCXVzaG9ydAlWbGFuVGNpOworCXVzaG9ydAlWbGFuVHBpZDsKK30gVkxBTl9IRFIsICpQVkxBTl9IRFI7CisjcHJhZ21hIHBhY2socG9wKQorCisvKgorICogU2xvd3BhdGggRmxhZ3M6CisgKgorICoKKyAqIExTUyBGbGFnczoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4tLS0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4tLS0gVENQIExhcmdlIHNlZ21lbnQgc2VuZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLi0tLQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLi0tLQorICogIDMgICAgICAgICAgICAgICAgICAgMSAgICAgMSAgICAgICAvLy8vCisgKiAgMSAgICAgICAgICAgICAgICAgICA1ICAgICAwICAgICAgfHx8fAorICogIC5fX19fX19fX19fX19fX19fX19fLl9fX19fX19fX19fX3Z2dnYuCisgKiAgfCAgICAgICAgICAgICAgICAgICB8TUFDIHwgIFRDUCB8ICAgIHwKKyAqICB8ICAgICAgTENudCAgICAgICAgIHxobGVufGhkcm9mZnxGbGdzfAorICogIHxfX19fX19fX19fX19fX19fX19ffHx8fHx8fHx8fHx8fF9fX198CisgKgorICoKKyAqIENoZWNrc3VtIEZsYWdzCisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi0tLQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLi0tLQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLi0tLSBDaGVja3N1bSBUQ1AKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy4tLS0gQ2hlY2tzdW0gSVAKKyAqICAzICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgLy8vLyBObyBiaXRzIC0gbm9ybWFsIHNlbmQKKyAqICAxICAgICAgICAgICAgICAgICAgIDUgICAgICAgICAgNyAgICB8fHx8CisgKiAgLl9fX19fX19fX19fX19fX19fX18uX19fX19fX19fX19fX19fdnZ2di4KKyAqICB8ICAgICAgICAgICAgICAgICAgIHwgT2ZmbG9hZCB8IElQIHwgICAgfAorICogIHwgICAgICBMQ250ICAgICAgICAgfE1BQyBobGVuIHxIbGVufEZsZ3N8CisgKiAgfF9fX19fX19fX19fX19fX19fX198X19fX3xfX19ffF9fX198X19fX3wKKyAqCisgKi8KKy8vIFNsb3dwYXRoIENNRCBmbGFncworI2RlZmluZSBTWEdfU0xPV0NNRF9DU1VNX0lQCQkJMHgwMQkJLy8gQ2hlY2tzdW0gSVAKKyNkZWZpbmUgU1hHX1NMT1dDTURfQ1NVTV9UQ1AJCTB4MDIJCS8vIENoZWNrc3VtIFRDUAorI2RlZmluZSBTWEdfU0xPV0NNRF9MU08JCQkJMHgwNAkJLy8gTGFyZ2Ugc2VnbWVudCBzZW5kCisKK3R5cGVkZWYgc3RydWN0IF9TWEdfWE1UX1JJTkcgeworCVNYR19DTUQJCURlc2NyaXB0b3JzW1NYR19YTVRfUklOR19TSVpFXTsKK30gU1hHX1hNVF9SSU5HLCAqUFNYR19YTVRfUklORzsKKwordHlwZWRlZiBzdHJ1Y3QgX1NYR19SQ1ZfUklORyB7CisJU1hHX0NNRAkJRGVzY3JpcHRvcnNbU1hHX1JDVl9SSU5HX1NJWkVdOworfSBTWEdfUkNWX1JJTkcsICpQU1hHX1JDVl9SSU5HOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTaGFyZSBtZW1vcnkgYnVmZmVyIHR5cGVzIC0gVXNlZCB0byBpZGVudGlmeSBhc3luY2hyb25vdXMKKyAqIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgZW51bSB7CisJU1hHX0JVRkZFUl9UWVBFX1JDViwJCS8vIFJlY2VpdmUgYnVmZmVyCisJU1hHX0JVRkZFUl9UWVBFX1NHTAkJCS8vIFNHTCBidWZmZXIKK30gU1hHX0JVRkZFUl9UWVBFOworCisvLyBTdGF0ZSBmb3IgU1hHIGJ1ZmZlcnMKKyNkZWZpbmUgU1hHX0JVRkZFUl9GUkVFCQkweDAxCisjZGVmaW5lIFNYR19CVUZGRVJfQlVTWQkJMHgwMgorI2RlZmluZSBTWEdfQlVGRkVSX09OQ0FSRAkweDA0CisjZGVmaW5lIFNYR19CVUZGRVJfVVBTVFJFQU0JMHgwOAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBSZWNlaXZlIGRhdGEgYnVmZmVycworICoKKyAqIFJlY2VpdmUgZGF0YSBidWZmZXJzIGFyZSBnaXZlbiB0byB0aGUgU2FoYXJhIGNhcmQgMTI4IGF0IGEgdGltZS4KKyAqIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGZpbGxpbmcgaW4gYSAicmVjZWl2ZSBkZXNjcmlwdG9yIGJsb2NrIgorICogd2l0aCAxMjggInJlY2VpdmUgZGVzY3JpcHRvcnMiLiAgRWFjaCBkZXNjcmlwdG9yIGNvbnNpc3RzIG9mCisgKiBhIHBoeXNpY2FsIGFkZHJlc3MsIHdoaWNoIHRoZSBjYXJkIHVzZXMgYXMgdGhlIGFkZHJlc3MgdG8KKyAqIERNQSBkYXRhIGludG8sIGFuZCBhIHZpcnR1YWwgYWRkcmVzcywgd2hpY2ggaXMgZ2l2ZW4gYmFjaworICogdG8gdGhlIGhvc3QgaW4gdGhlICJIb3N0SGFuZGxlIiBwb3J0aW9uIG9mIGFuIGV2ZW50LgorICogVGhlIHJlY2VpdmUgZGVzY3JpcHRvciBkYXRhIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGJlbG93CisgKiBhcyBTWEdfUkNWX0RBVEFfREVTQ1JJUFRPUiwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrCisgKiBpcyBkZWZpbmVkIGFzIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSy4KKyAqCisgKiBUaGlzIHJlY2VpdmUgZGVzY3JpcHRvciBibG9jayBpcyBnaXZlbiB0byB0aGUgY2FyZCBieSBmaWxsaW5nCisgKiBpbiB0aGUgU2dsIGZpZWxkIG9mIGEgU1hHX0NNRCBlbnRyeSBmcm9tIHBBZGFwdC0+UmN2UmluZ3NbMF0KKyAqIHdpdGggdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHJlY2VpdmUgZGVzY3JpcHRvciBibG9jay4KKyAqCisgKiBCb3RoIHRoZSByZWNlaXZlIGJ1ZmZlcnMgYW5kIHRoZSByZWNlaXZlIGRlc2NyaXB0b3IgYmxvY2tzCisgKiByZXF1aXJlIGFkZGl0aW9uYWwgZGF0YSBzdHJ1Y3R1cmVzIHRvIG1haW50YWluIHRoZW0KKyAqIG9uIGEgZnJlZSBxdWV1ZSBhbmQgY29udGFpbiBvdGhlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlbS4KKyAqIFRob3NlIGRhdGEgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBhcyB0aGUgU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIKKyAqIGFuZCBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSIHJlc3BlY3RpdmVseS4KKyAqCisgKiBTaW5jZSBib3RoIHRoZSByZWNlaXZlIGJ1ZmZlcnMgYW5kIHRoZSByZWNlaXZlIGRlc2NyaXB0b3IgYmxvY2sKKyAqIG11c3QgYmUgYWNjZXNzaWJsZSBieSB0aGUgY2FyZCwgYm90aCBtdXN0IGJlIGFsbG9jYXRlZCBvdXQgb2YKKyAqIHNoYXJlZCBtZW1vcnkuICBUbyBlbnN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIGRlc2NyaXB0b3IKKyAqIGJsb2NrIGF2YWlsYWJsZSBmb3IgZXZlcnkgMTI4IGJ1ZmZlcnMsIHdlIGFsbG9jYXRlIGFsbCBvZgorICogdGhlc2UgcmVzb3VyY2VzIHRvZ2V0aGVyIGluIGEgc2luZ2xlIGJsb2NrLiAgVGhpcyBlbnRpcmUKKyAqIGJsb2NrIGlzIG1hbmFnZWQgYnkgYSBTWEdfUkNWX0JMT0NLX0hEUiwgd2hvJ3Mgc29sZSBwdXJwb3NlCisgKiBpcyB0byBtYWludGFpbiBhZGRyZXNzIGluZm9ybWF0aW9uIHNvIHRoYXQgdGhlIGVudGlyZSBibG9jaworICogY2FuIGJlIGZyZWUgbGF0ZXIuCisgKgorICogRnVydGhlciBjb21wbGljYXRpbmcgbWF0dGVycyBpcyB0aGUgZmFjdCB0aGF0IHRoZSByZWNlaXZlCisgKiBidWZmZXJzIG11c3QgYmUgdmFyaWFibGUgaW4gbGVuZ3RoIGluIG9yZGVyIHRvIGFjY29tb2RhdGUKKyAqIGp1bWJvIGZyYW1lIGNvbmZpZ3VyYXRpb25zLiAgV2UgY29uZmlndXJlIHRoZSBidWZmZXIKKyAqIGxlbmd0aCBzbyB0aGF0IHRoZSBidWZmZXIgYW5kIGl0J3MgY29ycmVzcG9uZGluZyBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUgorICogc3RydWN0dXJlIGFkZCB1cCB0byBhbiBldmVuIGJvdW5kYXJ5LiAgVGhlbiB3ZSBwbGFjZSB0aGUKKyAqIHJlbWFpbmluZyBkYXRhIHN0cnVjdHVyZXMgYWZ0ZXIgMTI4IG9mIHRoZW0gYXMgc2hvd24gaW4KKyAqIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbToKKyAqCisgKiAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqIHwgICAgVmFyaWFibGUgbGVuZ3RoIHJlY2VpdmUgYnVmZmVyICMxICAgIHwKKyAqIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqIHwgICAgICAgU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIgIzEgICAgICAgIHwKKyAqIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wgPD09IEV2ZW4gMmsgb3IgMTBrIGJvdW5kYXJ5CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB8ICAgICAgICAgLi4uIHJlcGVhdCAyLTEyOCAuLiAgICAgICAgICAgICB8CisgKiB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB8ICAgICAgU1hHX1JDVl9ERVNDUklQVE9SX0JMT0NLICAgICAgICAgICB8CisgKiB8ICBDb250YWlucyBTWEdfUkNWX0RBVEFfREVTQ1JJUFRPUiAqIDEyOCB8CisgKiB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB8ICAgICAgU1hHX1JDVl9ERVNDUklQVE9SX0JMT0NLX0hEUiAgICAgICB8CisgKiB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB8ICAgICAgICAgIFNYR19SQ1ZfQkxPQ0tfSERSICAgICAgICAgICAgICB8CisgKiB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198CisgKgorICogTWVtb3J5IGNvbnN1bXB0aW9uOgorICoJICBOb24tanVtYm86CisgKiAgICAgIEJ1ZmZlcnMgYW5kIFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSID0gMmsgKiAxMjggPSAyNTZrCisgKiAgICArIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSyA9IDJrCisgKiAgICArIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIgPSB+MzIKKyAqICAgICsgU1hHX1JDVl9CTE9DS19IRFIgPSB+MzIKKyAqICAgID0+IFRvdGFsID0gfjI1OGsvYmxvY2sKKyAqCisgKgkgIEp1bWJvOgorICogICAgICBCdWZmZXJzIGFuZCBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUiA9IDEwayAqIDEyOCA9IDEyODBrCisgKiAgICArIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSyA9IDJrCisgKiAgICArIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIgPSB+MzIKKyAqICAgICsgU1hHX1JDVl9CTE9DS19IRFIgPSB+MzIKKyAqICAgID0+IFRvdGFsID0gfjEyODJrL2Jsb2NrCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgU1hHX1JDVl9EQVRBX0JVRkZFUlMJCQk0MDk2CS8vIEFtb3VudCB0byBnaXZlIHRvIHRoZSBjYXJkCisjZGVmaW5lIFNYR19JTklUSUFMX1JDVl9EQVRBX0JVRkZFUlMJODE5MgkvLyBJbml0aWFsIHBvb2wgb2YgYnVmZmVycworI2RlZmluZSBTWEdfTUlOX1JDVl9EQVRBX0JVRkZFUlMJCTIwNDgJLy8gTWluaW11bSBhbW91bnQgYW5kIHdoZW4gdG8gZ2V0IG1vcmUKKyNkZWZpbmUgU1hHX01BWF9SQ1ZfQkxPQ0tTCQkJCTEyOAkJLy8gPSAxNjM4NCByZWNlaXZlIGJ1ZmZlcnMKKworLy8gUmVjZWl2ZSBidWZmZXIgaGVhZGVyCit0eXBlZGVmIHN0cnVjdCBfU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIgeworCWRtYV9hZGRyX3QgICAgICAgICAgCQkJUGh5c2ljYWxBZGRyZXNzOwkvLyBCdWZmZXIgcGh5c2ljYWwgYWRkcmVzcworCS8vIE5vdGUgLSBETyBOT1QgVVNFIHRoZSBWaXJ0dWFsQWRkcmVzcyBmaWVsZCB0byBsb2NhdGUgZGF0YS4KKwkvLyBVc2UgdGhlIHN4Zy5oOlNYR19SRUNFSVZFX0RBVEFfTE9DQVRJT04gbWFjcm8gaW5zdGVhZC4KKwl2b2lkICpWaXJ0dWFsQWRkcmVzczsJCS8vIFN0YXJ0IG9mIGJ1ZmZlcgorCUxJU1RfRU5UUlkJCQkJCQlGcmVlTGlzdDsJCQkvLyBGcmVlIHF1ZXVlIG9mIGJ1ZmZlcnMKKwlzdHJ1Y3QgX1NYR19SQ1ZfREFUQV9CVUZGRVJfSERSCSpOZXh0OwkJCQkvLyBGYXN0cGF0aCBkYXRhIGJ1ZmZlciBxdWV1ZQorCXUzMgkJCQkJCQlTaXplOwkJCQkvLyBCdWZmZXIgc2l6ZQorCXUzMgkJCQkJCQlCeXRlT2Zmc2V0OwkJCS8vIFNlZSBTWEdfUkVTVE9SRV9NRExfT0ZGU0VUCisJdW5zaWduZWQgY2hhcgkJCQkJCQlTdGF0ZTsJCQkJLy8gU2VlIFNYR19CVUZGRVIgc3RhdGUgYWJvdmUKKwl1bnNpZ25lZCBjaGFyCQkJCQkJCVN0YXR1czsJCQkJLy8gRXZlbnQgc3RhdHVzICh0byBsb2cgUFVTSCkKKwlzdHJ1Y3Qgc2tfYnVmZiAgICAgICAgICAgICAgICAqIHNrYjsJCQkJLy8gRG91YmxlIG1hcHBlZCAobmJsIGFuZCBwa3QpCit9IFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSLCAqUFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSOworCisvLyBTeGdTbG93UmVjZWl2ZSB1c2VzIHRoZSBQQUNLRVQgKHNrYikgY29udGFpbmVkCisvLyBpbiB0aGUgU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIgd2hlbiBpbmRpY2F0aW5nIGR1bWItbmljIGRhdGEKKyNkZWZpbmUgU3hnRHVtYlJjdlBhY2tldAkgICAgICAgIHNrYgorCisjZGVmaW5lIFNYR19SQ1ZfREFUQV9IRFJfU0laRQkJCTI1NgkJLy8gU3BhY2UgZm9yIFNYR19SQ1ZfREFUQV9CVUZGRVJfSERSCisjZGVmaW5lIFNYR19SQ1ZfREFUQV9CVUZGRVJfU0laRQkJMjA0OAkvLyBOb24ganVtYm8gPSAyayBpbmNsdWRpbmcgSERSCisjZGVmaW5lIFNYR19SQ1ZfSlVNQk9fQlVGRkVSX1NJWkUJCTEwMjQwCS8vIGp1bWJvID0gMTBrIGluY2x1ZGluZyBIRFIKKworLy8gUmVjZWl2ZSBkYXRhIGRlc2NyaXB0b3IKK3R5cGVkZWYgc3RydWN0IF9TWEdfUkNWX0RBVEFfREVTQ1JJUFRPUiB7CisJdW5pb24geworCQlzdHJ1Y3Qgc2tfYnVmZiAgICAqCVZpcnR1YWxBZGRyZXNzOwkJCS8vIEhvc3QgaGFuZGxlCisJCXU2NCAJCQlGb3JjZVRvOEJ5dGVzOwkJCS8vIEZvcmNlIHg4NiB0byA4LWJ5dGUgYm91bmRhcnkKKwl9OworCWRtYV9hZGRyX3QgICAgICAgICAgICAgCVBoeXNpY2FsQWRkcmVzczsKK30gU1hHX1JDVl9EQVRBX0RFU0NSSVBUT1IsICpQU1hHX1JDVl9EQVRBX0RFU0NSSVBUT1I7CisKKy8vIFJlY2VpdmUgZGVzY3JpcHRvciBibG9jaworI2RlZmluZSBTWEdfUkNWX0RFU0NSSVBUT1JTX1BFUl9CTE9DSwkJMTI4CisjZGVmaW5lIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19TSVpFCQkyMDQ4CS8vIEZvciBzYW5pdHkgY2hlY2sKK3R5cGVkZWYgc3RydWN0IF9TWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0sgeworCVNYR19SQ1ZfREFUQV9ERVNDUklQVE9SCQlEZXNjcmlwdG9yc1tTWEdfUkNWX0RFU0NSSVBUT1JTX1BFUl9CTE9DS107Cit9IFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DSywgKlBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0s7CisKKy8vIFJlY2VpdmUgZGVzY3JpcHRvciBibG9jayBoZWFkZXIKK3R5cGVkZWYgc3RydWN0IF9TWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSIHsKKwl2b2lkICoJCQkJCVZpcnR1YWxBZGRyZXNzOwkJCS8vIFN0YXJ0IG9mIDJrIGJ1ZmZlcgorCWRtYV9hZGRyX3QJICAgICAgICAgICAgUGh5c2ljYWxBZGRyZXNzOwkJLy8gLi5hbmQgaXQncyBwaHlzaWNhbCBhZGRyZXNzCisJTElTVF9FTlRSWQkJCQlGcmVlTGlzdDsJCQkJLy8gRnJlZSBxdWV1ZSBvZiBkZXNjcmlwdG9yIGJsb2NrcworCXVuc2lnbmVkIGNoYXIJCQkJCVN0YXRlOwkJCQkJLy8gU2VlIFNYR19CVUZGRVIgc3RhdGUgYWJvdmUKK30gU1hHX1JDVl9ERVNDUklQVE9SX0JMT0NLX0hEUiwgKlBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSOworCisvLyBSZWNlaXZlIGJsb2NrIGhlYWRlcgordHlwZWRlZiBzdHJ1Y3QgX1NYR19SQ1ZfQkxPQ0tfSERSIHsKKwl2b2lkICoJCQkJCVZpcnR1YWxBZGRyZXNzOwkJCS8vIFN0YXJ0IG9mIHZpcnR1YWwgbWVtb3J5CisJZG1hX2FkZHJfdAkgICAgICAgICAgICBQaHlzaWNhbEFkZHJlc3M7CQkvLyAuLmFuZCBpdCdzIHBoeXNpY2FsIGFkZHJlc3MKKwlMSVNUX0VOVFJZCQkJCUFsbExpc3Q7CQkJCS8vIFF1ZXVlIG9mIGFsbCBTWEdfUkNWX0JMT0NLUworfSBTWEdfUkNWX0JMT0NLX0hEUiwgKlBTWEdfUkNWX0JMT0NLX0hEUjsKKworLy8gTWFjcm9zIHRvIGRldGVybWluZSBkYXRhIHN0cnVjdHVyZSBvZmZzZXRzIGludG8gcmVjZWl2ZSBibG9jaworI2RlZmluZSBTWEdfUkNWX0JMT0NLX1NJWkUoX0J1ZmZlcnNpemUpIAkJCQkJXAorCSgoKF9CdWZmZXJzaXplKSAqIFNYR19SQ1ZfREVTQ1JJUFRPUlNfUEVSX0JMT0NLKSArCQlcCisJIChzaXplb2YoU1hHX1JDVl9ERVNDUklQVE9SX0JMT0NLKSkgICAgICAgICAgICAgICsJCVwKKwkgKHNpemVvZihTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfSERSKSkgICAgICAgICAgKwkJXAorCSAoc2l6ZW9mKFNYR19SQ1ZfQkxPQ0tfSERSKSkpCisjZGVmaW5lIFNYR19SQ1ZfQlVGRkVSX0RBVEFfU0laRShfQnVmZmVyc2l6ZSkJCQkJXAorCSgoX0J1ZmZlcnNpemUpIC0gU1hHX1JDVl9EQVRBX0hEUl9TSVpFKQorI2RlZmluZSBTWEdfUkNWX0RBVEFfQlVGRkVSX0hEUl9PRkZTRVQoX0J1ZmZlcnNpemUpCQkJXAorCSgoX0J1ZmZlcnNpemUpIC0gU1hHX1JDVl9EQVRBX0hEUl9TSVpFKQorI2RlZmluZSBTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0tfT0ZGU0VUKF9CdWZmZXJzaXplKQkJXAorCSgoX0J1ZmZlcnNpemUpICogU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0spCisjZGVmaW5lIFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFJfT0ZGU0VUKF9CdWZmZXJzaXplKQlcCisJKCgoX0J1ZmZlcnNpemUpICogU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0spICsJCVwKKwkgKHNpemVvZihTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0spKSkKKyNkZWZpbmUgU1hHX1JDVl9CTE9DS19IRFJfT0ZGU0VUKF9CdWZmZXJzaXplKQkJCQlcCisJKCgoX0J1ZmZlcnNpemUpICogU1hHX1JDVl9ERVNDUklQVE9SU19QRVJfQkxPQ0spICsJCVwKKwkgKHNpemVvZihTWEdfUkNWX0RFU0NSSVBUT1JfQkxPQ0spKSAgICAgICAgICAgICAgKwkJXAorCSAoc2l6ZW9mKFNYR19SQ1ZfREVTQ1JJUFRPUl9CTE9DS19IRFIpKSkKKworLy8gVXNlIHRoZSBtaW5pcG9ydCByZXNlcnZlZCBwb3J0aW9uIG9mIHRoZSBOQkwgdG8gbG9jYXRlCisvLyBvdXIgU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIgc3RydWN0dXJlLgordHlwZWRlZiBzdHJ1Y3QgX1NYR19SQ1ZfTkJMX1JFU0VSVkVEIHsKKwlQU1hHX1JDVl9EQVRBX0JVRkZFUl9IRFIJUmN2RGF0YUJ1ZmZlckhkcjsKKwl2b2lkICoJCQkJCQlBdmFpbGFibGU7Cit9IFNYR19SQ1ZfTkJMX1JFU0VSVkVELCAqUFNYR19SQ1ZfTkJMX1JFU0VSVkVEOworCisjZGVmaW5lIFNYR19SQ1ZfTkJMX0JVRkZFUl9IRFIoX05CTCkgKCgoUFNYR19SQ1ZfTkJMX1JFU0VSVkVEKU5FVF9CVUZGRVJfTElTVF9NSU5JUE9SVF9SRVNFUlZFRChfTkJMKSktPlJjdkRhdGFCdWZmZXJIZHIpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFNjYXR0ZXIgZ2F0aGVyIGxpc3QgYnVmZmVyCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBTWEdfSU5JVElBTF9TR0xfQlVGRkVSUwkJODE5MgkvLyBJbml0aWFsIHBvb2wgb2YgU0dMIGJ1ZmZlcnMKKyNkZWZpbmUgU1hHX01JTl9TR0xfQlVGRkVSUwkJCTIwNDgJLy8gTWluaW11bSBhbW91bnQgYW5kIHdoZW4gdG8gZ2V0IG1vcmUKKyNkZWZpbmUgU1hHX01BWF9TR0xfQlVGRkVSUwkJCTE2Mzg0CS8vIE1heGltdW0gdG8gYWxsb2NhdGUgKG5vdGUgQURBUFQ6dXNob3J0KQorCisKKy8vIFNlbGYgaWRlbnRpZnlpbmcgc3RydWN0dXJlIHR5cGUKK3R5cGVkZWYgZW51bSBfU1hHX1NHTF9UWVBFIHsKKwlTWEdfU0dMX0RVTUIsCQkJCS8vIER1bWIgTklDIFNHTAorCVNYR19TR0xfU0xPVywJCQkJLy8gU2xvd3BhdGggcHJvdG9jb2wgaGVhZGVyIC0gc2VlIGJlbG93CisJU1hHX1NHTF9DSElNTkVZCQkJCS8vIENoaW1uZXkgb2ZmbG9hZCBTR0wKK30gU1hHX1NHTF9UWVBFLCBQU1hHX1NHTF9UWVBFOworCisvLyBOb3RlIC0gdGhlIGRlc2NyaXB0aW9uIGJlbG93IGlzIE1pY3Jvc29mdCBzcGVjaWZpYworLy8KKy8vIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHRvIGFsbG9jYXRlCisvLyBmb3IgdGhlIFNDQVRURVJfR0FUSEVSX0xJU1QgcG9ydGlvbiBvZiB0aGUgU1hHX1NDQVRURVJfR0FUSEVSIGRhdGEgc3RydWN0dXJlLgorLy8gVGhlIGZvbGxvd2luZyBjb25zaWRlcmF0aW9ucyBhcHBseSB3aGVuIHNldHRpbmcgdGhpcyB2YWx1ZToKKy8vIC0gRmlyc3QsIHRoZSBTYWhhcmEgY2FyZCBpcyBkZXNpZ25lZCB0byByZWFkIHRoZSBNaWNyb3NvZnQgU0dMIHN0cnVjdHVyZQorLy8gCSBzdHJhaWdodCBvdXQgb2YgaG9zdCBtZW1vcnkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIFNHTCBtdXN0IHJlc2lkZSBpbgorLy8JIHNoYXJlZCBtZW1vcnkuICBJZiB0aGUgbGVuZ3RoIGhlcmUgaXMgc21hbGxlciB0aGFuIHRoZSBTR0wgZm9yIHRoZQorLy8JIE5FVF9CVUZGRVIsIHRoZW4gTkRJUyB3aWxsIGFsbG9jYXRlIGl0cyBvd24gYnVmZmVyLiAgVGhlIGJ1ZmZlcgorLy8JIHRoYXQgTkRJUyBhbGxvY2F0ZXMgaXMgbm90IGluIHNoYXJlZCBtZW1vcnksIHNvIHdoZW4gdGhpcyBoYXBwZW5zLAorLy8JIHRoZSBTR0wgd2lsbCBuZWVkIHRvIGJlIGNvcGllZCB0byBhIHNldCBvZiBTWEdfU0NBVFRFUl9HQVRIRVIgYnVmZmVycy4KKy8vCSBJbiBvdGhlciB3b3Jkcy4uIHdlIGRvbid0IHdhbnQgdGhpcyB2YWx1ZSB0byBiZSB0b28gc21hbGwuCisvLyAtIE9uIHRoZSBvdGhlciBoYW5kLi4gd2UncmUgYWxsb2NhdGluZyB1cCB0byAxNmsgb2YgdGhlc2UgdGhpbmdzLiAgSWYKKy8vCSB3ZSBtYWtlIHRoaXMgdG9vIGJpZywgd2Ugc3RhcnQgdG8gY29uc3VtZSBhIHRvbiBvZiBtZW1vcnkuLgorLy8gQXQgdGhlIG1vbWVudCwgSSdtIGdvaW5nIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgU0cgZW50cmllcyB0byAxNTAuCisvLyBJZiBlYWNoIGVudHJ5IG1hcHMgcm91Z2hseSA0aywgdGhlbiB0aGlzIHNob3VsZCBjb3ZlciByb3VnaGx5IDYwMGtCCisvLyBORVRfQlVGRkVScy4gIEZ1cnRoZXJtb3JlLCBzaW5jZSBlYWNoIGVudHJ5IGlzIDI0IGJ5dGVzLCB0aGUgdG90YWwKKy8vIFNHRSBwb3J0aW9uIG9mIHRoZSBzdHJ1Y3R1cmUgY29uc3VtZXMgMzYwMCBieXRlcywgd2hpY2ggc2hvdWxkIGFsbG93CisvLyB0aGUgZW50aXJlIFNYR19TQ0FUVEVSX0dBVEhFUiBzdHJ1Y3R1cmUgdG8gcmVzaWRlIGNvbWZvcnRhYmx5IHdpdGhpbgorLy8gYSA0ayBibG9jaywgcHJvdmlkaW5nIHRoZSByZW1haW5pbmcgZmllbGRzIHN0YXkgdW5kZXIgNTAwIGJ5dGVzLgorLy8KKy8vIFNvIHdpdGggMTUwIGVudHJpZXMsIHRoZSBTWEdfU0NBVFRFUl9HQVRIRVIgc3RydWN0dXJlIGJlY29tZXMgcm91Z2hseQorLy8gNGsuICBBdCAxNmsgb2YgdGhlbSwgdGhhdCBhbW91bnRzIHRvIDY0TSBvZiBzaGFyZWQgbWVtb3J5LiAgQSB0b24sIGJ1dAorLy8gbWFuYWdlYWJsZS4KKyNkZWZpbmUgU1hHX1NHTF9FTlRSSUVTCQkxNTAKKworLy8gVGhlIHVjb2RlIGV4cGVjdHMgYW4gTkRJUyBTR0wgc3RydWN0dXJlIHRoYXQKKy8vIGlzIGZvcm1hdHRlZCBmb3IgYW4geDY0IHN5c3RlbS4gIFdoZW4gcnVubmluZworLy8gb24gYW4geDY0IHN5c3RlbSwgd2UgY2FuIHNpbXBseSBoYW5kIHRoZSBORElTIFNHTAorLy8gdG8gdGhlIGNhcmQgZGlyZWN0bHkuICBGb3IgeDg2IHN5c3RlbXMgd2UgbXVzdCByZWNvbnN0cnVjdAorLy8gdGhlIFNHTC4gIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGRlZmluZXMgYW4geDY0CisvLyBmb3JtYXR0ZWQgU0dMIGVudHJ5Cit0eXBlZGVmIHN0cnVjdCBfU1hHX1g2NF9TR0UgeworICAgIGRtYTY0X2FkZHJfdCAgICAgIAlBZGRyZXNzOwkvLyBzYW1lIGFzIHdkbS5oCisgICAgdTMyCQkJCUxlbmd0aDsJCS8vIHNhbWUgYXMgd2RtLmgKKwl1MzIJCQkJQ29tcGlsZXJQYWQ7Ly8gVGhlIGNvbXBpbGVyIHBhZHMgdG8gOC1ieXRlcworICAgIHU2NCAJCQlSZXNlcnZlZDsJLy8gdTMyICogaW4gd2RtLmguICBGb3JjZSB0byA4IGJ5dGVzCit9IFNYR19YNjRfU0dFLCAqUFNYR19YNjRfU0dFOworCit0eXBlZGVmIHN0cnVjdCBfU0NBVFRFUl9HQVRIRVJfRUxFTUVOVCB7CisgICAgZG1hNjRfYWRkcl90ICAgICAgCUFkZHJlc3M7CS8vIHNhbWUgYXMgd2RtLmgKKyAgICB1MzIJCQkJTGVuZ3RoOwkJLy8gc2FtZSBhcyB3ZG0uaAorCXUzMgkJCQlDb21waWxlclBhZDsvLyBUaGUgY29tcGlsZXIgcGFkcyB0byA4LWJ5dGVzCisgICAgdTY0IAkJCVJlc2VydmVkOwkvLyB1MzIgKiBpbiB3ZG0uaC4gIEZvcmNlIHRvIDggYnl0ZXMKK30gU0NBVFRFUl9HQVRIRVJfRUxFTUVOVCwgKlBTQ0FUVEVSX0dBVEhFUl9FTEVNRU5UOworCisKK3R5cGVkZWYgc3RydWN0IF9TQ0FUVEVSX0dBVEhFUl9MSVNUIHsKKyAgICB1MzIJCQkJCU51bWJlck9mRWxlbWVudHM7CisgICAgdTMyICoJCQkJUmVzZXJ2ZWQ7CisgICAgU0NBVFRFUl9HQVRIRVJfRUxFTUVOVAlFbGVtZW50c1tdOworfSBTQ0FUVEVSX0dBVEhFUl9MSVNULCAqUFNDQVRURVJfR0FUSEVSX0xJU1Q7CisKKy8vIFRoZSBjYXJkIGRvZXNuJ3QgY2FyZSBhYm91dCBhbnl0aGluZyBleGNlcHQgZWxlbWVudHMsIHNvCisvLyB3ZSBjYW4gbGVhdmUgdGhlIHUzMiAqIHJlc2VydmVkIGZpZWxkIGFsb25lIGluIHRoZSBmb2xsb3dpbmcKKy8vIFNHTCBzdHJ1Y3R1cmUuICBCdXQgcmVkZWZpbmUgZnJvbSB3ZG0uaDpTQ0FUVEVSX0dBVEhFUl9MSVNUIHNvCisvLyB3ZSBjYW4gc3BlY2lmeSBTWEdfWDY0X1NHRSBhbmQgZGVmaW5lIGEgZml4ZWQgbnVtYmVyIG9mIGVsZW1lbnRzCit0eXBlZGVmIHN0cnVjdCBfU1hHX1g2NF9TR0wgeworICAgIHUzMgkJCQkJTnVtYmVyT2ZFbGVtZW50czsKKyAgICB1MzIgKgkJCQlSZXNlcnZlZDsKKyAgICBTWEdfWDY0X1NHRQkJCQlFbGVtZW50c1tTWEdfU0dMX0VOVFJJRVNdOworfSBTWEdfWDY0X1NHTCwgKlBTWEdfWDY0X1NHTDsKKwordHlwZWRlZiBzdHJ1Y3QgX1NYR19TQ0FUVEVSX0dBVEhFUiB7CisJU1hHX1NHTF9UWVBFCQkJCQkJVHlwZTsJCQkvLyBGSVJTVCEgRHVtYi1uaWMgb3Igb2ZmbG9hZAorCXZvaWQgKiAgIAkJCQkJCQlhZGFwdGVyOwkJLy8gQmFjayBwb2ludGVyIHRvIGFkYXB0ZXIKKwlMSVNUX0VOVFJZCQkJCQkJCUZyZWVMaXN0OwkJLy8gRnJlZSBTWEdfU0NBVFRFUl9HQVRIRVIgYmxvY2tzCisJTElTVF9FTlRSWQkJCQkJCQlBbGxMaXN0OwkJLy8gQWxsIFNYR19TQ0FUVEVSX0dBVEhFUiBibG9ja3MKKwlkbWFfYWRkcl90CQkJCSAgICAgICAgICAgIFBoeXNpY2FsQWRkcmVzczsvLyBwaHlzaWNhbCBhZGRyZXNzCisJdW5zaWduZWQgY2hhcgkJCQkJCQkJU3RhdGU7CQkJLy8gU2VlIFNYR19CVUZGRVIgc3RhdGUgYWJvdmUKKwl1bnNpZ25lZCBjaGFyCQkJCQkJCQlDbWRJbmRleDsJCS8vIENvbW1hbmQgcmluZyBpbmRleAorCXN0cnVjdCBza19idWZmICAgICAgICAgICAgICAgICAgICAqCUR1bWJQYWNrZXQ7CQkvLyBBc3NvY2lhdGVkIFBhY2tldAorCXUzMgkJCQkJCQkJRGlyZWN0aW9uOwkJLy8gRm9yIGFzeW5jaHJvbm91cyBjb21wbGV0aW9ucworCXUzMgkJCQkJCQkJQ3VyT2Zmc2V0OwkJLy8gQ3VycmVudCBTR0wgb2Zmc2V0CisJdTMyCQkJCQkJCQlTZ2xSZWY7CQkJLy8gU0dMIHJlZmVyZW5jZSBjb3VudAorCVZMQU5fSERSCQkJCQkJCVZsYW5UYWc7CQkvLyBWTEFOIHRhZyB0byBiZSBpbnNlcnRlZCBpbnRvIFNHTAorCVBTQ0FUVEVSX0dBVEhFUl9MSVNUICAgCQkJCXBTZ2w7CQkJLy8gU0dMIEFkZHIuIFBvc3NpYmx5ICZTZ2wKKwlTWEdfWDY0X1NHTAkJCQkJCQlTZ2w7CQkJLy8gU0dMIGhhbmRlZCB0byBjYXJkCit9IFNYR19TQ0FUVEVSX0dBVEhFUiwgKlBTWEdfU0NBVFRFUl9HQVRIRVI7CisKKyNpZiBkZWZpbmVkKENPTkZJR19YODZfNjQpCisjZGVmaW5lIFNYR19TR0xfQlVGRkVSKF9TeGdTZ2wpCQkoJl9TeGdTZ2wtPlNnbCkKKyNkZWZpbmUgU1hHX1NHTF9CVUZfU0laRQkJCXNpemVvZihTWEdfWDY0X1NHTCkKKyNlbGlmIGRlZmluZWQoQ09ORklHX1g4NikKKy8vIEZvcmNlIE5ESVMgdG8gZ2l2ZSB1cyBpdCdzIG93biBidWZmZXIgc28gd2UgY2FuIHJlZm9ybWF0IHRvIG91ciBvd24KKyNkZWZpbmUgU1hHX1NHTF9CVUZGRVIoX1N4Z1NnbCkJCU5VTEwKKyNkZWZpbmUgU1hHX1NHTF9CVUZfU0laRQkJCTAKKyNlbHNlCisgICAgU3RvcCBDb21waWxhdGlvbjsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z2h3LmggYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z2h3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY0ZjZlZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zeGcvc3hnaHcuaApAQCAtMCwwICsxLDczNCBAQAorLyoKKyAqIENvcHlyaWdodCCpIDE5OTctMjAwNyBBbGFjcml0ZWNoLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiAkSWQ6IHN4Z2h3LmgsdiAxLjIgMjAwOC8wNy8yNCAxNzoyNDoyMyBjaHJpcyBFeHAgJAorICoKKyAqIHN4Z2h3Lmg6CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zIGZvciB0aGUKKyAqIEFsYWNyaXRlY2ggU2FoYXJhIGhhcmR3YXJlCisgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29uZmlndXJhdGlvbiBzcGFjZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyAgUENJIFZlbmRvciBJRAorI2RlZmluZSBTWEdfVkVORE9SX0lECQkJMHgxMzlBCS8vIEFsYWNyaXRlY2gncyBWZW5kb3IgSUQKKworLy8gIFBDSSBEZXZpY2UgSUQKKyNkZWZpbmUgU1hHX0RFVklDRV9JRAkJCTB4MDAwOQkvLyBTYWhhcmEgRGV2aWNlIElECisKKy8vCisvLyBTdWJzeXN0ZW0gSURzLgorLy8KKy8vIFRoZSBzdWJzeXN0ZW0gSUQgdmFsdWUgaXMgYnJva2VuIGludG8gYml0IGZpZWxkcyBhcyBmb2xsb3dzOgorLy8JCUJpdHMgWzE1OjEyXSAtIEZ1bmN0aW9uCisvLwkJQml0cyBbMTE6OF0gIC0gT0VNIGFuZC9vciBvcGVyYXRpbmcgc3lzdGVtLgorLy8JCUJpdHMgWzc6MF0gICAtIEJhc2UgU0lELgorLy8KKy8vIFNTSUQgZmllbGQgKGJpdCkgbWFza3MKKyNkZWZpbmUgU1NJRF9CQVNFX01BU0sJCQkJCTB4MDBGRgkvLyBCYXNlIHN1YnN5c3RlbSBJRCBtYXNrCisjZGVmaW5lIFNTSURfT0VNX01BU0sJCQkJCTB4MEYwMAkvLyBTdWJzeXN0ZW0gT0VNIG1hc2sKKyNkZWZpbmUgU1NJRF9GVU5DX01BU0sJCQkJCTB4RjAwMAkvLyBTdWJzeXN0ZW0gZnVuY3Rpb24gbWFzaworCisvLyBCYXNlIFNTSUQncworI2RlZmluZSBTU0lEX1NBSEFSQV9QUk9UTwkJCQkweDAwMTgJLy8gMTAwMDIyIFNhaGFyYSBwcm90b3R5cGUgKFhlblBhaykgYm9hcmQKKyNkZWZpbmUgU1NJRF9TQUhBUkFfRklCRVIJCQkJMHgwMDE5CS8vIDEwMDAyMyBTYWhhcmEgMS1wb3J0IGZpYmVyIGJvYXJkCisjZGVmaW5lIFNTSURfU0FIQVJBX0NPUFBFUgkJCQkweDAwMUEJLy8gMTAwMDI0IFNhaGFyYSAxLXBvcnQgY29wcGVyIGJvYXJkCisKKy8vIFVzZWZ1bCBTU0lEIG1hY3JvcworI2RlZmluZQlTU0lEX0JBU0Uoc3NpZCkJCQkoKHNzaWQpICYgU1NJRF9CQVNFX01BU0spCQkvLyBpc29sYXRlIGJhc2UgU1NJRCBiaXRzCisjZGVmaW5lCVNTSURfT0VNKHNzaWQpCQkJKChzc2lkKSAmIFNTSURfT0VNX01BU0spCQkvLyBpc29sYXRlIFNTSUQgT0VNIGJpdHMKKyNkZWZpbmUJU1NJRF9GVU5DKHNzaWQpCQkJKChzc2lkKSAmIFNTSURfRlVOQ19NQVNLKQkJLy8gaXNvbGF0ZSBTU0lEIGZ1bmN0aW9uIGJpdHMKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEhXIFJlZ2lzdGVyIFNwYWNlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgU1hHX0hXUkVHX01FTVNJWkUJMHg0MDAwCQkvLyAxNmsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDEpCit0eXBlZGVmIHN0cnVjdCBfU1hHX0hXX1JFR1MgeworCXUzMgkJUmVzZXQ7CQkJCS8vIFdyaXRlIDB4ZGVhZCB0byBpbnZva2Ugc29mdCByZXNldAorCXUzMgkJUGFkMTsJCQkJLy8gTm8gcmVnaXN0ZXIgZGVmaW5lZCBhdCBvZmZzZXQgNAorCXUzMgkJSW50ZXJydXB0TWFzazA7CQkvLyBEZWFzc2VydCBsZWdhY3kgaW50ZXJydXB0IG9uIGZ1bmN0aW9uIDAKKwl1MzIJCUludGVycnVwdE1hc2sxOwkJLy8gRGVhc3NlcnQgbGVnYWN5IGludGVycnVwdCBvbiBmdW5jdGlvbiAxCisJdTMyCQlVY29kZURhdGFMb3c7CQkvLyBTdG9yZSBtaWNyb2NvZGUgaW5zdHJ1Y3Rpb24gYml0cyAzMS0wCisJdTMyCQlVY29kZURhdGFNaWRkbGU7CS8vIFN0b3JlIG1pY3JvY29kZSBpbnN0cnVjdGlvbiBiaXRzIDYzLTMyCisJdTMyCQlVY29kZURhdGFIaWdoOwkJLy8gU3RvcmUgbWljcm9jb2RlIGluc3RydWN0aW9uIGJpdHMgOTUtNjQKKwl1MzIJCVVjb2RlQWRkcjsJCQkvLyBTdG9yZSBtaWNyb2NvZGUgYWRkcmVzcyAtIFNlZSBmbGFncyBiZWxvdworCXUzMgkJUGFkVG8weDgwWzI0XTsJCS8vIFBhZCB0byBYY3YgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKwl1MzIJCU1hY0NvbmZpZzA7CQkJLy8gMHg4MCAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDAKKwl1MzIJCU1hY0NvbmZpZzE7CQkJLy8gMHg4NCAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEKKwl1MzIJCU1hY0NvbmZpZzI7CQkJLy8gMHg4OCAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIKKwl1MzIJCU1hY0NvbmZpZzM7CQkJLy8gMHg4QyAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDMKKwl1MzIJCU1hY0FkZHJlc3NMb3c7CQkvLyAweDkwIC0gQVhHTUFDIE1BQyBTdGF0aW9uIEFkZHJlc3MgLSBvY3RldHMgMS00CisJdTMyCQlNYWNBZGRyZXNzSGlnaDsJCS8vIDB4OTQgLSBBWEdNQUMgTUFDIFN0YXRpb24gQWRkcmVzcyAtIG9jdGV0cyA1LTYKKwl1MzIJCU1hY1Jlc2VydmVkMVsyXTsJLy8gMHg5OCAtIEFYR01BQyBSZXNlcnZlZAorCXUzMgkJTWFjTWF4RnJhbWVMZW47CQkvLyAweEEwIC0gQVhHTUFDIE1heGltdW0gRnJhbWUgTGVuZ3RoCisJdTMyCQlNYWNSZXNlcnZlZDJbMl07CS8vIDB4QTQgLSBBWEdNQUMgUmVzZXJ2ZWQKKwl1MzIJCU1hY1JldmlzaW9uOwkJLy8gMHhBQyAtIEFYR01BQyBSZXZpc2lvbiBMZXZlbCBSZWdpc3RlcgorCXUzMgkJTWFjUmVzZXJ2ZWQzWzRdOwkvLyAweEIwIC0gQVhHTUFDIFJlc2VydmVkCisJdTMyCQlNYWNBbWlpbUNtZDsJCS8vIDB4QzAgLSBBWEdNQUMgQU1JSU0gQ29tbWFuZCBSZWdpc3RlcgorCXUzMgkJTWFjQW1paW1GaWVsZDsJCS8vIDB4QzQgLSBBWEdNQUMgQU1JSU0gRmllbGQgUmVnaXN0ZXIKKwl1MzIJCU1hY0FtaWltQ29uZmlnOwkJLy8gMHhDOCAtIEFYR01BQyBBTUlJTSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCisJdTMyCQlNYWNBbWlpbUxpbms7CQkvLyAweENDIC0gQVhHTUFDIEFNSUlNIExpbmsgRmFpbCBWZWN0b3IgUmVnaXN0ZXIKKwl1MzIJCU1hY0FtaWltSW5kaWNhdG9yOwkvLyAweEQwIC0gQVhHTUFDIEFNSUlNIEluZGljYXRvciBSZWdpc3RvcgorCXUzMgkJUGFkVG8weDEwMFsxMV07CQkvLyAweEQ0IC0gMHgxMDAgLSBQYWQKKwl1MzIJCVhtdENvbmZpZzsJCQkvLyAweDEwMCAtIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIKKwl1MzIJCVJjdkNvbmZpZzsJCQkvLyAweDEwNCAtIFJlY2VpdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxCisJdTMyCQlMaW5rQWRkcmVzczBMb3c7CS8vIDB4MTA4IC0gTGluayBhZGRyZXNzIDAKKwl1MzIJCUxpbmtBZGRyZXNzMEhpZ2g7CS8vIDB4MTBDIC0gTGluayBhZGRyZXNzIDAKKwl1MzIJCUxpbmtBZGRyZXNzMUxvdzsJLy8gMHgxMTAgLSBMaW5rIGFkZHJlc3MgMQorCXUzMgkJTGlua0FkZHJlc3MxSGlnaDsJLy8gMHgxMTQgLSBMaW5rIGFkZHJlc3MgMQorCXUzMgkJTGlua0FkZHJlc3MyTG93OwkvLyAweDExOCAtIExpbmsgYWRkcmVzcyAyCisJdTMyCQlMaW5rQWRkcmVzczJIaWdoOwkvLyAweDExQyAtIExpbmsgYWRkcmVzcyAyCisJdTMyCQlMaW5rQWRkcmVzczNMb3c7CS8vIDB4MTIwIC0gTGluayBhZGRyZXNzIDMKKwl1MzIJCUxpbmtBZGRyZXNzM0hpZ2g7CS8vIDB4MTI0IC0gTGluayBhZGRyZXNzIDMKKwl1MzIJCVRvZXBsaXR6S2V5WzEwXTsJLy8gMHgxMjggLSAweDE1MCAtIFRvZXBsaXR6IGtleQorCXUzMgkJU29ja2V0S2V5WzEwXTsJCS8vIDB4MTUwIC0gMHgxNzggLSBTb2NrZXQgS2V5CisJdTMyCQlMaW5rU3RhdHVzOwkJCS8vIDB4MTc4IC0gTGluayBzdGF0dXMKKwl1MzIJCUNsZWFyU3RhdHM7CQkJLy8gMHgxN0MgLSBDbGVhciBTdGF0cworCXUzMgkJWG10RXJyb3JzTG93OwkJLy8gMHgxODAgLSBUcmFuc21pdCBzdGF0cyAtIGVycm9ycworCXUzMgkJWG10RXJyb3JzSGlnaDsJCS8vIDB4MTg0IC0gVHJhbnNtaXQgc3RhdHMgLSBlcnJvcnMKKwl1MzIJCVhtdEZyYW1lc0xvdzsJCS8vIDB4MTg4IC0gVHJhbnNtaXQgc3RhdHMgLSBmcmFtZSBjb3VudAorCXUzMgkJWG10RnJhbWVzSGlnaDsJCS8vIDB4MThDIC0gVHJhbnNtaXQgc3RhdHMgLSBmcmFtZSBjb3VudAorCXUzMgkJWG10Qnl0ZXNMb3c7CQkvLyAweDE5MCAtIFRyYW5zbWl0IHN0YXRzIC0gYnl0ZSBjb3VudAorCXUzMgkJWG10Qnl0ZXNIaWdoOwkJLy8gMHgxOTQgLSBUcmFuc21pdCBzdGF0cyAtIGJ5dGUgY291bnQKKwl1MzIJCVhtdFRjcFNlZ21lbnRzTG93OwkvLyAweDE5OCAtIFRyYW5zbWl0IHN0YXRzIC0gVENQIHNlZ21lbnRzCisJdTMyCQlYbXRUY3BTZWdtZW50c0hpZ2g7CS8vIDB4MTlDIC0gVHJhbnNtaXQgc3RhdHMgLSBUQ1Agc2VnbWVudHMKKwl1MzIJCVhtdFRjcEJ5dGVzTG93OwkJLy8gMHgxQTAgLSBUcmFuc21pdCBzdGF0cyAtIFRDUCBieXRlcworCXUzMgkJWG10VGNwQnl0ZXNIaWdoOwkvLyAweDFBNCAtIFRyYW5zbWl0IHN0YXRzIC0gVENQIGJ5dGVzCisJdTMyCQlSY3ZFcnJvcnNMb3c7CQkvLyAweDFBOCAtIFJlY2VpdmUgc3RhdHMgLSBlcnJvcnMKKwl1MzIJCVJjdkVycm9yc0hpZ2g7CQkvLyAweDFBQyAtIFJlY2VpdmUgc3RhdHMgLSBlcnJvcnMKKwl1MzIJCVJjdkZyYW1lc0xvdzsJCS8vIDB4MUIwIC0gUmVjZWl2ZSBzdGF0cyAtIGZyYW1lIGNvdW50CisJdTMyCQlSY3ZGcmFtZXNIaWdoOwkJLy8gMHgxQjQgLSBSZWNlaXZlIHN0YXRzIC0gZnJhbWUgY291bnQKKwl1MzIJCVJjdkJ5dGVzTG93OwkJLy8gMHgxQjggLSBSZWNlaXZlIHN0YXRzIC0gYnl0ZSBjb3VudAorCXUzMgkJUmN2Qnl0ZXNIaWdoOwkJLy8gMHgxQkMgLSBSZWNlaXZlIHN0YXRzIC0gYnl0ZSBjb3VudAorCXUzMgkJUmN2VGNwU2VnbWVudHNMb3c7CS8vIDB4MUMwIC0gUmVjZWl2ZSBzdGF0cyAtIFRDUCBzZWdtZW50cworCXUzMgkJUmN2VGNwU2VnbWVudHNIaWdoOwkvLyAweDFDNCAtIFJlY2VpdmUgc3RhdHMgLSBUQ1Agc2VnbWVudHMKKwl1MzIJCVJjdlRjcEJ5dGVzTG93OwkJLy8gMHgxQzggLSBSZWNlaXZlIHN0YXRzIC0gVENQIGJ5dGVzCisJdTMyCQlSY3ZUY3BCeXRlc0hpZ2g7CS8vIDB4MUNDIC0gUmVjZWl2ZSBzdGF0cyAtIFRDUCBieXRlcworCXUzMgkJUGFkVG8weDIwMFsxMl07CQkvLyAweDFEMCAtIDB4MjAwIC0gUGFkCisJdTMyCQlTb2Z0d2FyZVsxOTIwXTsJCS8vIDB4MjAwIC0gMHgyMDAwIC0gU29mdHdhcmUgZGVmaW5lZCAobm90IHVzZWQpCisJdTMyCQlNc2l4VGFibGVbMTAyNF07CS8vIDB4MjAwMCAtIDB4MzAwMCAtIE1TSVggVGFibGUKKwl1MzIJCU1zaXhCaXRBcnJheVsxMDI0XTsJLy8gMHgzMDAwIC0gMHg0MDAwIC0gTVNJWCBQZW5kaW5nIEJpdCBBcnJheQorfSBTWEdfSFdfUkVHUywgKlBTWEdfSFdfUkVHUzsKKyNwcmFnbWEgcGFjayhwb3ApCisKKy8vIE1pY3JvY29kZSBBZGRyZXNzIEZsYWdzCisjZGVmaW5lCU1JQ1JPQ09ERV9BRERSRVNTX0dPCQkweDgwMDAwMDAwCS8vIFN0YXJ0IG1pY3JvY29kZQorI2RlZmluZQlNSUNST0NPREVfQUREUkVTU19XUklURQkJMHg0MDAwMDAwMAkvLyBTdG9yZSBtaWNyb2NvZGUKKyNkZWZpbmUJTUlDUk9DT0RFX0FERFJFU1NfUkVBRAkJMHgyMDAwMDAwMAkvLyBSZWFkIG1pY3JvY29kZQorI2RlZmluZQlNSUNST0NPREVfQUREUkVTU19QQVJJVFkJMHgxMDAwMDAwMAkvLyBQYXJpdHkgZXJyb3IgZGV0ZWN0ZWQKKyNkZWZpbmUJTUlDUk9DT0RFX0FERFJFU1NfTUFTSwkJMHgwMDAwMUZGRgkvLyBBZGRyZXNzIGJpdHMKKworLy8gTGluayBBZGRyZXNzIFJlZ2lzdGVycworI2RlZmluZSBMSU5LX0FERFJFU1NfRU5BQkxFCQkJMHg4MDAwMDAwMAkvLyBBcHBsaWVkIHRvIGxpbmsgYWRkcmVzcyBoaWdoCisKKy8vIE1pY3Jvc29mdCByZWdpc3RlciBzcGFjZSBzaXplCisjZGVmaW5lIFNYR19VQ09ERVJFR19NRU1TSVpFCTB4NDAwMDAJCS8vIDI1NmsKKworLy8gU2FoYXJhIG1pY3JvY29kZSByZWdpc3RlciBhZGRyZXNzIGZvcm1hdC4gIFRoZSBjb21tYW5kIGNvZGUsCisvLyBleHRlbmRlZCBjb21tYW5kIGNvZGUsIGFuZCBhc3NvY2lhdGVkIHByb2Nlc3NvciBhcmUgZW5jb2RlZCBpbgorLy8gdGhlIGFkZHJlc3MgYml0cyBhcyBmb2xsb3dzCisjZGVmaW5lIFNYR19BRERSRVNTX0NPREVfU0hJRlQJCTIJCQkvLyBCYXNlIGNvbW1hbmQgY29kZQorI2RlZmluZSBTWEdfQUREUkVTU19DT0RFX01BU0sJCTB4MDAwMDAwM0MKKyNkZWZpbmUgU1hHX0FERFJFU1NfRVhDT0RFX1NISUZUCTYJCQkvLyBFeHRlbmRlZCAob3Igc3ViKSBjb21tYW5kIGNvZGUKKyNkZWZpbmUgU1hHX0FERFJFU1NfRVhDT0RFX01BU0sJCTB4MDAwMDFGQzAKKyNkZWZpbmUJU1hHX0FERFJFU1NfQ1BVSURfU0hJRlQJCTEzCQkJLy8gQ1BVCisjZGVmaW5lIFNYR19BRERSRVNTX0NQVUlEX01BU0sJCTB4MDAwM0UwMDAKKyNkZWZpbmUgU1hHX1JFR0lTVEVSX1NJWkVfUEVSX0NQVQkweDAwMDAyMDAwCS8vIFVzZWQgdG8gc2FuaXR5IGNoZWNrIFVDT0RFX1JFR1Mgc3RydWN0dXJlCisKKy8vIFNhaGFyYSByZWNlaXZlIHNlcXVlbmNlciBzdGF0dXMgdmFsdWVzCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FUVE4JCQkJCTB4ODAwMDAwMDAJLy8gQXR0ZW50aW9uCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9NQVNLCQkweDNGMDAwMDAwCS8vIFRyYW5zcG9ydCBtYXNrCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9FUlJPUgkJMHgyMDAwMDAwMAkvLyBUcmFuc3BvcnQgZXJyb3IKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX0NTVU0JCTB4MjMwMDAwMDAJLy8gVHJhbnNwb3J0IGNrc3VtIGVycm9yCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9VRkxPVwkJMHgyMjAwMDAwMAkvLyBUcmFuc3BvcnQgdW5kZXJmbG93CisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9IRFJMRU4JCTB4MjAwMDAwMDAJLy8gVHJhbnNwb3J0IGhlYWRlciBsZW5ndGgKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX0ZMQUdTCQkweDEwMDAwMDAwCS8vIFRyYW5zcG9ydCBmbGFncyBkZXRlY3RlZAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfT1BUUwkJMHgwODAwMDAwMAkvLyBUcmFuc3BvcnQgb3B0aW9ucyBkZXRlY3RlZAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfU0VTU19NQVNLCTB4MDcwMDAwMDAJLy8gVHJhbnNwb3J0IEREUAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfRERQCQkweDA2MDAwMDAwCS8vIFRyYW5zcG9ydCBERFAKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX2lTQ1NJCQkweDA1MDAwMDAwCS8vIFRyYW5zcG9ydCBpU0NTSQorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfTkZTCQkweDA0MDAwMDAwCS8vIFRyYW5zcG9ydCBORlMKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX0ZUUAkJMHgwMzAwMDAwMAkvLyBUcmFuc3BvcnQgRlRQCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9IVFRQCQkweDAyMDAwMDAwCS8vIFRyYW5zcG9ydCBIVFRQCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9TTUIJCTB4MDEwMDAwMDAJLy8gVHJhbnNwb3J0IFNNQgorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX01BU0sJCQkweDAwRkYwMDAwCS8vIE5ldHdvcmsgbWFzaworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0VSUk9SCQkweDAwODAwMDAwCS8vIE5ldHdvcmsgZXJyb3IKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19DU1VNCQkJMHgwMDgzMDAwMAkvLyBOZXR3b3JrIGNrc3VtIGVycm9yCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfVUZMT1cJCTB4MDA4MjAwMDAJLy8gTmV0d29yayB1bmRlcmZsb3cgZXJyb3IKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19IRFJMRU4JCTB4MDA4MDAwMDAJLy8gTmV0d29yayBoZWFkZXIgbGVuZ3RoCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfT0ZMT1cJCTB4MDA0MDAwMDAJLy8gTmV0d29yayBvdmVyZmxvdyBkZXRlY3RlZAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX01DQVNUCQkweDAwMjAwMDAwCS8vIE5ldHdvcmsgbXVsdGljYXN0IGRldGVjdGVkCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfT1BUSU9OUwkJMHgwMDEwMDAwMAkvLyBOZXR3b3JrIG9wdGlvbnMgZGV0ZWN0ZWQKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19PRkZTRVQJCTB4MDAwODAwMDAJLy8gTmV0d29yayBvZmZzZXQgZGV0ZWN0ZWQKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19GUkFHTUVOVAkJMHgwMDA0MDAwMAkvLyBOZXR3b3JrIGZyYWdtZW50IGRldGVjdGVkCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfVFJBTlNfTUFTSwkweDAwMDMwMDAwCS8vIE5ldHdvcmsgdHJhbnNwb3J0IHR5cGUgbWFzaworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX1VEUAkJCTB4MDAwMjAwMDAJLy8gVURQCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfVENQCQkJMHgwMDAxMDAwMAkvLyBUQ1AKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfSVBPTkxZCQkJCTB4MDAwMDgwMDAJLy8gSVAtb25seSBub3QgVENQCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1BLVF9QUkkJCQkJMHgwMDAwNjAwMAkvLyBSZWNlaXZlIHByaW9yaXR5CisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1BLVF9QUklfU0hGVAkJCQkJMTMJLy8gUmVjZWl2ZSBwcmlvcml0eSBzaGlmdAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19QQVJJVFkJCQkJMHgwMDAwMTAwMAkvLyBNQUMgUmVjZWl2ZSBSQU0gcGFyaXR5IGVycm9yCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FERFJFU1NfTUFTSwkJCTB4MDAwMDBGMDAJLy8gTGluayBhZGRyZXNzIGRldGVjdGlvbiBtYXNrCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FERFJFU1NfRAkJCTB4MDAwMDBCMDAJLy8gTGluayBhZGRyZXNzIEQKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfQUREUkVTU19DCQkJMHgwMDAwMEEwMAkvLyBMaW5rIGFkZHJlc3MgQworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0IJCQkweDAwMDAwOTAwCS8vIExpbmsgYWRkcmVzcyBCCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FERFJFU1NfQQkJCTB4MDAwMDA4MDAJLy8gTGluayBhZGRyZXNzIEEKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfQUREUkVTU19CQ0FTVAkJMHgwMDAwMDMwMAkvLyBMaW5rIGFkZHJlc3MgYnJvYWRjYXN0CisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FERFJFU1NfTUNBU1QJCTB4MDAwMDAyMDAJLy8gTGluayBhZGRyZXNzIG11bHRpY2FzdAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0NNQ0FTVAkJMHgwMDAwMDEwMAkvLyBMaW5rIGNvbnRyb2wgbXVsdGljYXN0CisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfTUFTSwkJCTB4MDAwMDAwRkYJLy8gTGluayBzdGF0dXMgbWFzaworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0VSUk9SCQkJMHgwMDAwMDA4MAkvLyBMaW5rIGVycm9yCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfTUFTSwkJCTB4MDAwMDAwRkYJLy8gTGluayBzdGF0dXMgbWFzaworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX1BBUklUWQkJCTB4MDAwMDAwODcJLy8gUmN2TWFjUSBwYXJpdHkgZXJyb3IKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19FQVJMWQkJCTB4MDAwMDAwODYJLy8gRGF0YSBlYXJseQorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0JVRk9GTE9XCQkweDAwMDAwMDg1CS8vIEJ1ZmZlciBvdmVyZmxvdworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0NPREUJCQkweDAwMDAwMDg0CS8vIExpbmsgY29kZSBlcnJvcgorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0RSSUJCTEUJCQkweDAwMDAwMDgzCS8vIERyaWJibGUgbmliYmxlCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfQ1JDCQkJCTB4MDAwMDAwODIJLy8gQ1JDIGVycm9yCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfT0ZMT1cJCQkweDAwMDAwMDgxCS8vIExpbmsgb3ZlcmZsb3cKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19VRkxPVwkJCTB4MDAwMDAwODAJLy8gTGluayB1bmRlcmZsb3cKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS184MDIzCQkJMHgwMDAwMDAyMAkvLyA4MDIuMworI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX1NOQVAJCQkweDAwMDAwMDEwCS8vIFNuYXAKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19WTEFOCQkJMHgwMDAwMDAwOAkvLyBWTEFOCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfVFlQRV9NQVNLCQkweDAwMDAwMDA3CS8vIE5ldHdvcmsgdHlwZSBtYXNrCisjZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfQ09OVFJPTAkJCTB4MDAwMDAwMDMJLy8gQ29udHJvbCBwYWNrZXQKKyNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19JUFY2CQkJMHgwMDAwMDAwMgkvLyBJUHY2IHBhY2tldAorI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0lQVjQJCQkweDAwMDAwMDAxCS8vIElQdjQgcGFja2V0CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFNhaGFyYSByZWNlaXZlIGFuZCB0cmFuc21pdCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUJUkNWX0NPTkZJR19SRVNFVAkJCTB4ODAwMDAwMDAJLy8gUmN2Q29uZmlnIHJlZ2lzdGVyIHJlc2V0CisjZGVmaW5lCVJDVl9DT05GSUdfRU5BQkxFCQkJMHg0MDAwMDAwMAkvLyBFbmFibGUgdGhlIHJlY2VpdmUgbG9naWMKKyNkZWZpbmUJUkNWX0NPTkZJR19FTlBBUlNFCQkJMHgyMDAwMDAwMAkvLyBFbmFibGUgdGhlIHJlY2VpdmUgcGFyc2VyCisjZGVmaW5lCVJDVl9DT05GSUdfU09DS0VUCQkJMHgxMDAwMDAwMAkvLyBFbmFibGUgdGhlIHNvY2tldCBkZXRlY3RvcgorI2RlZmluZQlSQ1ZfQ09ORklHX1JDVkJBRAkJCTB4MDgwMDAwMDAJLy8gUmVjZWl2ZSBhbGwgYmFkIGZyYW1lcworI2RlZmluZQlSQ1ZfQ09ORklHX0NPTlRST0wJCQkweDA0MDAwMDAwCS8vIFJlY2VpdmUgYWxsIGNvbnRyb2wgZnJhbWVzCisjZGVmaW5lCVJDVl9DT05GSUdfUkNWUEFVU0UJCQkweDAyMDAwMDAwCS8vIEVuYWJsZSBwYXVzZSB0cmFuc21pdCB3aGVuIGF0dG4KKyNkZWZpbmUJUkNWX0NPTkZJR19UWklQVjYJCQkweDAxMDAwMDAwCS8vIEluY2x1ZGUgVENQIHBvcnQgdy8gSVB2NiB0b2VwbGl0egorI2RlZmluZQlSQ1ZfQ09ORklHX1RaSVBWNAkJCTB4MDA4MDAwMDAJLy8gSW5jbHVkZSBUQ1AgcG9ydCB3LyBJUHY0IHRvZXBsaXR6CisjZGVmaW5lCVJDVl9DT05GSUdfRkxVU0gJCQkweDAwNDAwMDAwCS8vIEZsdXNoIGJ1ZmZlcnMKKyNkZWZpbmUJUkNWX0NPTkZJR19QUklPUklUWV9NQVNLCTB4MDAzMDAwMDAJLy8gUHJpb3JpdHkgbGV2ZWwKKyNkZWZpbmUJUkNWX0NPTkZJR19IQVNIX01BU0sJCTB4MDAwMzAwMDAJLy8gSGFzaCBkZXB0aAorI2RlZmluZQlSQ1ZfQ09ORklHX0hBU0hfOAkJCTB4MDAwMDAwMDAJLy8gSGFzaCBkZXB0aCA4CisjZGVmaW5lCVJDVl9DT05GSUdfSEFTSF8xNgkJCTB4MDAwMTAwMDAJLy8gSGFzaCBkZXB0aCAxNgorI2RlZmluZQlSQ1ZfQ09ORklHX0hBU0hfNAkJCTB4MDAwMjAwMDAJLy8gSGFzaCBkZXB0aCA0CisjZGVmaW5lCVJDVl9DT05GSUdfSEFTSF8yCQkJMHgwMDAzMDAwMAkvLyBIYXNoIGRlcHRoIDIKKyNkZWZpbmUJUkNWX0NPTkZJR19CVUZMRU5fTUFTSwkJMHgwMDAwRkZGMAkvLyBCdWZmZXIgbGVuZ3RoIGJpdHMgMTU6NC4gaWUgbXVsdGlwbGUgb2YgMTYuCisjZGVmaW5lIFJDVl9DT05GSUdfU0tUX0RJUwkJCTB4MDAwMDAwMDgJLy8gRGlzYWJsZSBzb2NrZXQgZGV0ZWN0aW9uIG9uIGF0dG4KKy8vIE1hY3JvIHRvIGRldGVybWluZSBSQ1ZfQ09ORklHX0JVRkxFTiBiYXNlZCBvbiBtYXhpbXVtIGZyYW1lIHNpemUuCisvLyBXZSBhZGQgMTggYnl0ZXMgZm9yIFNhaGFyYSByZWNlaXZlIHN0YXR1cyBhbmQgcGFkZGluZywgcGx1cyA0IGJ5dGVzIGZvciBDUkMsCisvLyBhbmQgcm91bmQgdXAgdG8gbmVhcmVzdCAxNiBieXRlIGJvdW5kYXJ5CisjZGVmaW5lIFJDVl9DT05GSUdfQlVGU0laRShfTWF4RnJhbWUpICgoKChfTWF4RnJhbWUpICsgMjIpICsgMTUpICYgUkNWX0NPTkZJR19CVUZMRU5fTUFTSykKKworI2RlZmluZQlYTVRfQ09ORklHX1JFU0VUCQkJMHg4MDAwMDAwMAkvLyBYbXRDb25maWcgcmVnaXN0ZXIgcmVzZXQKKyNkZWZpbmUJWE1UX0NPTkZJR19FTkFCTEUJCQkweDQwMDAwMDAwCS8vIEVuYWJsZSB0cmFuc21pdCBsb2dpYworI2RlZmluZQlYTVRfQ09ORklHX01BQ19QQVJJVFkJCTB4MjAwMDAwMDAJLy8gSW5oaWJpdCBNQUMgUkFNIHBhcml0eSBlcnJvcgorI2RlZmluZQlYTVRfQ09ORklHX0JVRl9QQVJJVFkJCTB4MTAwMDAwMDAJLy8gSW5oaWJpdCBEMkYgYnVmZmVyIHBhcml0eSBlcnJvcgorI2RlZmluZQlYTVRfQ09ORklHX01FTV9QQVJJVFkJCTB4MDgwMDAwMDAJLy8gSW5oaWJpdCAxVCBTUkFNIHBhcml0eSBlcnJvcgorI2RlZmluZQlYTVRfQ09ORklHX0lOVkVSVF9QQVJJVFkJMHgwNDAwMDAwMAkvLyBJbnZlcnQgTUFDIFJBTSBwYXJpdHkKKyNkZWZpbmUJWE1UX0NPTkZJR19JTklUSUFMX0lQSUQJCTB4MDAwMEZGRkYJLy8gSW5pdGlhbCBJUElECisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEEtWEdNQUMgUmVnaXN0ZXJzIC0gT2NjdXB5IDB4ODAgLSAweEQ0IG9mIHRoZSBTWEdfSFdfUkVHUworICoKKyAqIEZ1bGwgcmVnaXN0ZXIgZGVzY3JpcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBheGdtYWMucGRmCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gQS1YR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDAKKyNkZWZpbmUgQVhHTUFDX0NGRzBfU1VCX1JFU0VUCQkweDgwMDAwMDAwCQkvLyBTdWIgbW9kdWxlIHJlc2V0CisjZGVmaW5lIEFYR01BQ19DRkcwX1JDTlRSTF9SRVNFVAkweDAwNDAwMDAwCQkvLyBSZWNlaXZlIGNvbnRyb2wgcmVzZXQKKyNkZWZpbmUgQVhHTUFDX0NGRzBfUkZVTkNfUkVTRVQJCTB4MDAyMDAwMDAJCS8vIFJlY2VpdmUgZnVuY3Rpb24gcmVzZXQKKyNkZWZpbmUgQVhHTUFDX0NGRzBfVENOVFJMX1JFU0VUCTB4MDAwNDAwMDAJCS8vIFRyYW5zbWl0IGNvbnRyb2wgcmVzZXQKKyNkZWZpbmUgQVhHTUFDX0NGRzBfVEZVTkNfUkVTRVQJCTB4MDAwMjAwMDAJCS8vIFRyYW5zbWl0IGZ1bmN0aW9uIHJlc2V0CisjZGVmaW5lIEFYR01BQ19DRkcwX01JSV9SRVNFVAkJMHgwMDAxMDAwMAkJLy8gTUlJIE1hbmFnZW1lbnQgcmVzZXQKKworLy8gQS1YR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEKKyNkZWZpbmUgQVhHTUFDX0NGRzFfWE1UX1BBVVNFCQkweDgwMDAwMDAwCQkvLyBBbGxvdyB0aGUgc2VuZGluZyBvZiBQYXVzZSBmcmFtZXMKKyNkZWZpbmUgQVhHTUFDX0NGRzFfWE1UX0VOCQkJMHg0MDAwMDAwMAkJLy8gRW5hYmxlIHRyYW5zbWl0CisjZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9QQVVTRQkJMHgyMDAwMDAwMAkJLy8gQWxsb3cgdGhlIGRldGVjdGlvbiBvZiBQYXVzZSBmcmFtZXMKKyNkZWZpbmUgQVhHTUFDX0NGRzFfUkNWX0VOCQkJMHgxMDAwMDAwMAkJLy8gRW5hYmxlIHJlY2VpdmUKKyNkZWZpbmUgQVhHTUFDX0NGRzFfWE1UX1NUQVRFCQkweDA0MDAwMDAwCQkvLyBDdXJyZW50IHRyYW5zbWl0IHN0YXRlIC0gUkVBRCBPTkxZCisjZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9TVEFURQkJMHgwMTAwMDAwMAkJLy8gQ3VycmVudCByZWNlaXZlIHN0YXRlIC0gUkVBRCBPTkxZCisjZGVmaW5lIEFYR01BQ19DRkcxX1hPRkZfU0hPUlQJCTB4MDAwMDEwMDAJCS8vIE9ubHkgcGF1c2UgZm9yIDY0IHNsb3Qgb24gWE9GRgorI2RlZmluZSBBWEdNQUNfQ0ZHMV9YTUdfRkNTMQkJMHgwMDAwMDQwMAkJLy8gRGVsYXkgdHJhbnNtaXQgRkNTIDEgNC1ieXRlIHdvcmQKKyNkZWZpbmUgQVhHTUFDX0NGRzFfWE1HX0ZDUzIJCTB4MDAwMDA4MDAJCS8vIERlbGF5IHRyYW5zbWl0IEZDUyAyIDQtYnl0ZSB3b3JkcworI2RlZmluZSBBWEdNQUNfQ0ZHMV9YTUdfRkNTMwkJMHgwMDAwMEMwMAkJLy8gRGVsYXkgdHJhbnNtaXQgRkNTIDMgNC1ieXRlIHdvcmRzCisjZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9GQ1MxCQkweDAwMDAwMTAwCQkvLyBEZWxheSByZWNlaXZlIEZDUyAxIDQtYnl0ZSB3b3JkCisjZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9GQ1MyCQkweDAwMDAwMjAwCQkvLyBEZWxheSByZWNlaXZlIEZDUyAyIDQtYnl0ZSB3b3JkcworI2RlZmluZSBBWEdNQUNfQ0ZHMV9SQ1ZfRkNTMwkJMHgwMDAwMDMwMAkJLy8gRGVsYXkgcmVjZWl2ZSBGQ1MgMyA0LWJ5dGUgd29yZHMKKyNkZWZpbmUgQVhHTUFDX0NGRzFfUEtUX09WRVJSSURFCTB4MDAwMDAwODAJCS8vIFBlci1wYWNrZXQgb3ZlcnJpZGUgZW5hYmxlCisjZGVmaW5lIEFYR01BQ19DRkcxX1NXQVAJCQkweDAwMDAwMDQwCQkvLyBCeXRlIHN3YXAgZW5hYmxlCisjZGVmaW5lIEFYR01BQ19DRkcxX1NIT1JUX0FTU0VSVAkweDAwMDAwMDIwCQkvLyBBU1NFUlQgc3JkcnBmcm0gb24gc2hvcnQgZnJhbWUgKDw2NCkKKyNkZWZpbmUgQVhHTUFDX0NGRzFfUkNWX1NUUklDVAkJMHgwMDAwMDAxMAkJLy8gUkNWIG9ubHkgODAyLjNBRSB3aGVuIENMRUFSCisjZGVmaW5lIEFYR01BQ19DRkcxX0NIRUNLX0xFTgkJMHgwMDAwMDAwOAkJLy8gVmVyaWZ5IGZyYW1lIGxlbmd0aAorI2RlZmluZSBBWEdNQUNfQ0ZHMV9HRU5fRkNTCQkJMHgwMDAwMDAwNAkJLy8gR2VuZXJhdGUgRkNTCisjZGVmaW5lIEFYR01BQ19DRkcxX1BBRF9NQVNLCQkweDAwMDAwMDAzCQkvLyBNYXNrIGZvciBwYWQgYml0cworI2RlZmluZSBBWEdNQUNfQ0ZHMV9QQURfNjQJCQkweDAwMDAwMDAxCQkvLyBQYWQgZnJhbWVzIHRvIDY0IGJ5dGVzCisjZGVmaW5lIEFYR01BQ19DRkcxX1BBRF9WTEFOCQkweDAwMDAwMDAyCQkvLyBEZXRlY3QgVkxBTiBhbmQgcGFkIHRvIDY4IGJ5dGVzCisjZGVmaW5lIEFYR01BQ19DRkcxX1BBRF82OAkJCTB4MDAwMDAwMDMJCS8vIFBhZCB0byA2OCBieXRlcworCisvLyBBLVhHTUFDIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMgorI2RlZmluZSBBWEdNQUNfQ0ZHMl9HRU5fUEFVU0UJCTB4ODAwMDAwMDAJCS8vIEdlbmVyYXRlIHNpbmdsZSBwYXVzZSBmcmFtZSAodGVzdCkKKyNkZWZpbmUgQVhHTUFDX0NGRzJfTEZfTUFOVUFMCQkweDA4MDAwMDAwCQkvLyBNYW51YWwgbGluayBmYXVsdCBzZXF1ZW5jZQorI2RlZmluZSBBWEdNQUNfQ0ZHMl9MRl9BVVRPCQkJMHgwNDAwMDAwMAkJLy8gQXV0byBsaW5rIGZhdWx0IHNlcXVlbmNlCisjZGVmaW5lIEFYR01BQ19DRkcyX0xGX1JFTU9URQkJMHgwMjAwMDAwMAkJLy8gUmVtb3RlIGxpbmsgZmF1bHQgKFJFQUQgT05MWSkKKyNkZWZpbmUgQVhHTUFDX0NGRzJfTEZfTE9DQUwJCTB4MDEwMDAwMDAJCS8vIExvY2FsIGxpbmsgZmF1bHQgKFJFQUQgT05MWSkKKyNkZWZpbmUgQVhHTUFDX0NGRzJfSVBHX01BU0sJCTB4MDAxRjAwMDAJCS8vIEludGVyIHBhY2tldCBnYXAKKyNkZWZpbmUgQVhHTUFDX0NGRzJfSVBHX1NISUZUCQkxNgorI2RlZmluZSBBWEdNQUNfQ0ZHMl9QQVVTRV9YTVQJCTB4MDAwMDgwMDAJCS8vIFBhdXNlIHRyYW5zbWl0IG1vZHVsZQorI2RlZmluZSBBWEdNQUNfQ0ZHMl9JUEdfRVhURU4JCTB4MDAwMDAwMjAJCS8vIEVuYWJsZSBJUEcgZXh0ZW5zaW9uIGFsZ29yaXRobQorI2RlZmluZSBBWEdNQUNfQ0ZHMl9JUEdFWF9NQVNLCQkweDAwMDAwMDFGCQkvLyBJUEcgZXh0ZW5zaW9uCisKKy8vIEEtWEdNQUMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAzCisjZGVmaW5lIEFYR01BQ19DRkczX1JDVl9EUk9QCQkweEZGRkYwMDAwCQkvLyBSZWNlaXZlIGZyYW1lIGRyb3AgZmlsdGVyCisjZGVmaW5lIEFYR01BQ19DRkczX1JDVl9ET05UX0NBUkUJMHgwMDAwRkZGRgkJLy8gUmVjZWl2ZSBmcmFtZSBkb24ndCBjYXJlIGZpbHRlcgorCisvLyBBLVhHTUFDIFN0YXRpb24gQWRkcmVzcyBSZWdpc3RlciAtIE9jdGV0cyAxLTQKKyNkZWZpbmUgQVhHTUFDX1NBUkxPV19PQ1RFVF9PTkUJCTB4RkYwMDAwMDAJCS8vIEZpcnN0IG9jdGV0CisjZGVmaW5lIEFYR01BQ19TQVJMT1dfT0NURVRfVFdPCQkweDAwRkYwMDAwCQkvLyBTZWNvbmQgb2N0ZXQKKyNkZWZpbmUgQVhHTUFDX1NBUkxPV19PQ1RFVF9USFJFRQkweDAwMDBGRjAwCQkvLyBUaGlyZCBvY3RldAorI2RlZmluZSBBWEdNQUNfU0FSTE9XX09DVEVUX0ZPVVIJMHgwMDAwMDBGRgkJLy8gRm91cnRoIG9jdGV0CisKKy8vIEEtWEdNQUMgU3RhdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIC0gT2N0ZXRzIDUtNgorI2RlZmluZSBBWEdNQUNfU0FSSElHSF9PQ1RFVF9GSVZFCTB4RkYwMDAwMDAJCS8vIEZpZnRoIG9jdGV0CisjZGVmaW5lIEFYR01BQ19TQVJISUdIX09DVEVUX1NJWAkweDAwRkYwMDAwCQkvLyBTaXh0aCBvY3RldAorCisvLyBBLVhHTUFDIE1heGltdW0gZnJhbWUgbGVuZ3RoIHJlZ2lzdGVyCisjZGVmaW5lIEFYR01BQ19NQVhGUkFNRV9YTVQJCQkweDNGRkYwMDAwCQkvLyBNYXhpbXVtIHRyYW5zbWl0IGZyYW1lIGxlbmd0aAorI2RlZmluZSBBWEdNQUNfTUFYRlJBTUVfWE1UX1NISUZUCTE2CisjZGVmaW5lIEFYR01BQ19NQVhGUkFNRV9SQ1YJCQkweDAwMDBGRkZGCQkvLyBNYXhpbXVtIHJlY2VpdmUgZnJhbWUgbGVuZ3RoCisvLyBUaGlzIHJlZ2lzdGVyIGRvZXNuJ3QgbmVlZCB0byBiZSB3cml0dGVuIGZvciBzdGFuZGFyZCBNVFUuCisvLyBGb3IganVtYm8sIEknbGwganVzdCBzdGF0aWNhbGx5IGRlZmluZSB0aGUgdmFsdWUgaGVyZS4gIFRoaXMKKy8vIHZhbHVlIHNldHMgdGhlIHJlY2VpdmUgYnl0ZSBjb3VudCB0byA5MDM2ICgweDIzNEMpIGFuZCB0aGUKKy8vIHRyYW5zbWl0IFdPUkQgY291bnQgdG8gMjI1OSAoMHg4RDMpLiAgVGhlc2UgdmFsdWVzIGluY2x1ZGUgMjIKKy8vIGJ5dGVzIG9mIHBhZGRpbmcgYmV5b25kIHRoZSBqdW1ibyBNVFUgb2YgOTAxNAorI2RlZmluZSBBWEdNQUNfTUFYRlJBTUVfSlVNQk8JCTB4MDhEMzIzNEMKKworLy8gQS1YR01BQyBSZXZpc2lvbiBsZXZlbAorI2RlZmluZSBBWEdNQUNfUkVWSVNJT05fTUFTSwkJMHgwMDAwRkZGRgkJLy8gUmV2aXNpb24gbGV2ZWwKKworLy8gQS1YR01BQyBBTUlJTSBDb21tYW5kIFJlZ2lzdGVyCisjZGVmaW5lIEFYR01BQ19BTUlJTV9DTURfU1RBUlQJCTB4MDAwMDAwMDgJCS8vIENvbW1hbmQgc3RhcnQKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0NNRF9NQVNLCQkweDAwMDAwMDA3CQkvLyBDb21tYW5kCisjZGVmaW5lIEFYR01BQ19BTUlJTV9DTURfTEVHQUNZX1dSSVRFCQkxCQkvLyAxMC8xMDAvMTAwMCBNYnBzIFBoeSBXcml0ZQorI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX0xFR0FDWV9SRUFECQkyCQkvLyAxMC8xMDAvMTAwMCBNYnBzIFBoeSBSZWFkCisjZGVmaW5lIEFYR01BQ19BTUlJTV9DTURfTU9OSVRPUl9TSU5HTEUJCTMJCS8vIE1vbml0b3Igc2luZ2xlIFBIWQorI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX01PTklUT1JfTVVMVElQTEUJNAkJLy8gTW9uaXRvciBtdWx0aXBsZSBjb250aWd1b3VzIFBIWXMKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0NNRF8xMEdfT1BFUkFUSU9OCQk1CQkvLyBQcmVzZW50IEFNSUlNIEZpZWxkIFJlZworI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX0NMRUFSX0xJTktfRkFJTAk2CQkvLyBDbGVhciBMaW5rIEZhaWwgQml0IGluIE1JSU0KKworLy8gQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgorI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfU1QJCTB4QzAwMDAwMDAJCS8vIDItYml0IFNUIGZpZWxkCisjZGVmaW5lIEFYR01BQ19BTUlJTV9GSUVMRF9TVF9TSElGVAkJCTMwCisjZGVmaW5lIEFYR01BQ19BTUlJTV9GSUVMRF9PUAkJMHgzMDAwMDAwMAkJLy8gMi1iaXQgT1AgZmllbGQKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX09QX1NISUZUCQkJMjgKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX1BPUlRfQUREUiAweDBGODAwMDAwCQkvLyBQb3J0IGFkZHJlc3MgZmllbGQgKGhzdHBoeWFkeCBpbiBzcGVjKQorI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfUE9SVF9TSElGVAkJMjMKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX0RFVl9BRERSCTB4MDA3QzAwMDAJCS8vIERldmljZSBhZGRyZXNzIGZpZWxkIChoc3RyZWdhZHggaW4gc3BlYykKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX0RFVl9TSElGVAkJMTgKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX1RBCQkweDAwMDMwMDAwCQkvLyAyLWJpdCBUQSBmaWVsZAorI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfVEFfU0hJRlQJCQkxNgorI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfREFUQQkJMHgwMDAwRkZGRgkJLy8gRGF0YSBmaWVsZAorCisvLyBWYWx1ZXMgZm9yIHRoZSBBWEdNQUNfQU1JSU1fRklFTERfT1AgZmllbGQgaW4gdGhlIEEtWEdNQUMgQU1JSU0gRmllbGQgUmVnaXN0ZXIKKyNkZWZpbmUJTUlJTV9PUF9BRERSCQkJCQkJMAkJLy8gTUlJTSBBZGRyZXNzIHNldCBvcGVyYXRpb24KKyNkZWZpbmUJTUlJTV9PUF9XUklURQkJCQkJCTEJCS8vIE1JSU0gV3JpdGUgcmVnaXN0ZXIgb3BlcmF0aW9uCisjZGVmaW5lCU1JSU1fT1BfUkVBRAkJCQkJCTIJCS8vIE1JSU0gUmVhZCByZWdpc3RlciBvcGVyYXRpb24KKyNkZWZpbmUJTUlJTV9PUF9BRERSX1NISUZUCShNSUlNX09QX0FERFIgPDwgQVhHTUFDX0FNSUlNX0ZJRUxEX09QX1NISUZUKQorCisvLyBWYWx1ZXMgZm9yIHRoZSBBWEdNQUNfQU1JSU1fRklFTERfUE9SVF9BRERSIGZpZWxkIGluIHRoZSBBLVhHTUFDIEFNSUlNIEZpZWxkIFJlZ2lzdGVyCisjZGVmaW5lCU1JSU1fUE9SVF9OVU0JCQkJCQkxCQkvLyBBbGwgU2FoYXJhIE1JSU0gbW9kdWxlcyB1c2UgcG9ydCAxCisKKy8vIFZhbHVlcyBmb3IgdGhlIEFYR01BQ19BTUlJTV9GSUVMRF9ERVZfQUREUiBmaWVsZCBpbiB0aGUgQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgorI2RlZmluZQlNSUlNX0RFVl9QSFlfUE1BCQkJCQkxCQkvLyBQSFkgUE1BL1BNRCBtb2R1bGUgTUlJTSBkZXZpY2UgbnVtYmVyCisjZGVmaW5lCU1JSU1fREVWX1BIWV9QQ1MJCQkJCTMJCS8vIFBIWSBQQ1MgbW9kdWxlIE1JSU0gZGV2aWNlIG51bWJlcgorI2RlZmluZQlNSUlNX0RFVl9QSFlfWFMJCQkJCQk0CQkvLyBQSFkgWFMgbW9kdWxlIE1JSU0gZGV2aWNlIG51bWJlcgorI2RlZmluZQlNSUlNX0RFVl9YR1hTCQkJCQkJNQkJLy8gWEdYUyBNSUlNIGRldmljZSBudW1iZXIKKworLy8gVmFsdWVzIGZvciB0aGUgQVhHTUFDX0FNSUlNX0ZJRUxEX1RBIGZpZWxkIGluIHRoZSBBLVhHTUFDIEFNSUlNIEZpZWxkIFJlZ2lzdGVyCisjZGVmaW5lCU1JSU1fVEFfMTBHQgkJCQkJCTIJCS8vIHNldCB0byAyIGZvciAxMCBHQiBvcGVyYXRpb24KKworLy8gQS1YR01BQyBBTUlJTSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCisjZGVmaW5lIEFYR01BQ19BTUlJTV9DRkdfTk9QUkVBTQkweDAwMDAwMDgwCQkvLyBCeXBhc3MgcHJlYW1ibGUgb2YgbW5nbXQgZnJhbWUKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0NGR19IQUxGX0NMT0NLCTB4MDAwMDAwN0YJCS8vIGhhbGYtY2xvY2sgZHVyYXRpb24gb2YgTURDIG91dHB1dAorCisvLyBBLVhHTUFDIEFNSUlNIEluZGljYXRvciBSZWdpc3RlcgorI2RlZmluZSBBWEdNQUNfQU1JSU1fSU5EQ19MSU5LCQkweDAwMDAwMDEwCQkvLyBMaW5rIHN0YXR1cyBmcm9tIGxlZ2FjeSBQSFkgb3IgTU1ECisjZGVmaW5lIEFYR01BQ19BTUlJTV9JTkRDX01QSFkJCTB4MDAwMDAwMDgJCS8vIE11bHRpcGxlIHBoeSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0lORENfU1BIWQkJMHgwMDAwMDAwNAkJLy8gU2luZ2xlIHBoeSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0lORENfTU9OCQkweDAwMDAwMDAyCQkvLyBTaW5nbGUgb3IgbXVsdGlwbGUgbW9uaXRvciBjbWQKKyNkZWZpbmUgQVhHTUFDX0FNSUlNX0lORENfQlVTWQkJMHgwMDAwMDAwMQkJLy8gU2V0IHVudGlsIGNtZCBvcGVyYXRpb24gY29tcGxldGUKKworLy8gTGluayBTdGF0dXMgYW5kIENvbnRyb2wgUmVnaXN0ZXIKKyNkZWZpbmUJTFNfUEhZX0NMUl9SRVNFVAkJCTB4ODAwMDAwMDAJCS8vIENsZWFyIHJlc2V0IHNpZ25hbCB0byBQSFkKKyNkZWZpbmUJTFNfU0VSREVTX1BPV0VSX0RPV04JCTB4NDAwMDAwMDAJCS8vIFBvd2VyIGRvd24gdGhlIFNhaGFyYSBTZXJkZXMKKyNkZWZpbmUJTFNfWEdYU19FTkFCTEUJCQkJMHgyMDAwMDAwMAkJLy8gRW5hYmxlIHRoZSBYQVVJIFhHWFMgbG9naWMKKyNkZWZpbmUJTFNfWEdYU19DVEwJCQkJCTB4MTAwMDAwMDAJCS8vIEhvbGQgWEFVSSBYR1hTIGxvZ2ljIHJlc2V0IHVudGlsIFNlcmRlcyBpcyB1cAorI2RlZmluZQlMU19TRVJERVNfRE9XTgkJCQkweDA4MDAwMDAwCQkvLyBXaGVuIDAsIFhBVUkgU2VyZGVzIGlzIHVwIGFuZCBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZQorI2RlZmluZQlMU19UUkFDRV9ET1dOCQkJCTB4MDQwMDAwMDAJCS8vIFdoZW4gMCwgVHJhY2UgU2VyZGVzIGlzIHVwIGFuZCBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZQorI2RlZmluZQlMU19QSFlfQ0xLXzI1TUhaCQkJMHgwMjAwMDAwMAkJLy8gU2V0IFBIWSBjbG9jayB0byAyNSBNSHogKGVsc2UgMTU2LjEyNSBNSHopCisjZGVmaW5lCUxTX1BIWV9DTEtfRU4JCQkJMHgwMTAwMDAwMAkJLy8gRW5hYmxlIGNsb2NrIHRvIFBIWQorI2RlZmluZQlMU19YQVVJX0xJTktfVVAJCQkJMHgwMDAwMDAxMAkJLy8gWEFVSSBsaW5rIGlzIHVwCisjZGVmaW5lCUxTX1hBVUlfTElOS19DSE5HCQkJMHgwMDAwMDAwOAkJLy8gWEFVSSBsaW5rIHN0YXR1cyBoYXMgY2hhbmdlZAorI2RlZmluZQlMU19MSU5LX0FMQVJNCQkJCTB4MDAwMDAwMDQJCS8vIExpbmsgYWxhcm0gcGluCisjZGVmaW5lCUxTX0FUVE5fQ1RSTF9NQVNLCQkJMHgwMDAwMDAwMwkJLy8gTWFzayBsaW5rIGF0dGVudGlvbiBjb250cm9sIGJpdHMKKyNkZWZpbmUJTFNfQVRUTl9BTEFSTQkJCQkweDAwMDAwMDAwCQkvLyAwMCA9PiBBdHRuIG9uIGxpbmsgYWxhcm0KKyNkZWZpbmUJTFNfQVRUTl9BTEFSTV9PUl9TVEFUX0NITkcJMHgwMDAwMDAwMQkJLy8gMDEgPT4gQXR0biBvbiBsaW5rIGFsYXJtIG9yIHN0YXR1cyBjaGFuZ2UKKyNkZWZpbmUJTFNfQVRUTl9TVEFUX0NITkcJCQkweDAwMDAwMDAyCQkvLyAxMCA9PiBBdHRuIG9uIGxpbmsgc3RhdHVzIGNoYW5nZQorI2RlZmluZQlMU19BVFROX05PTkUJCQkJMHgwMDAwMDAwMwkJLy8gMTEgPT4gbm8gQXR0bgorCisvLyBMaW5rIEFkZHJlc3MgSGlnaCBSZWdpc3RlcnMKKyNkZWZpbmUJTElOS19BRERSX0VOQUJMRQkJCTB4ODAwMDAwMDAJCS8vIEVuYWJsZSB0aGlzIGxpbmsgYWRkcmVzcworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFhHWFMgWEFVSSBYR01JSSBFeHRlbmRlciByZWdpc3RlcnMKKyAqCisgKiBGdWxsIHJlZ2lzdGVyIGRlc2NyaXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gbXhneHMucGRmCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gWEdYUyBSZWdpc3RlciBNYXAKKyNkZWZpbmUgWEdYU19BRERSRVNTX0NPTlRST0wxCQkweDAwMDAJCQkvLyBYUyBDb250cm9sIDEKKyNkZWZpbmUgWEdYU19BRERSRVNTX1NUQVRVUzEJCTB4MDAwMQkJCS8vIFhTIFN0YXR1cyAxCisjZGVmaW5lIFhHWFNfQUREUkVTU19ERVZJRF9MT1cJCTB4MDAwMgkJCS8vIFhTIERldmljZSBJRCAobG93KQorI2RlZmluZSBYR1hTX0FERFJFU1NfREVWSURfSElHSAkJMHgwMDAzCQkJLy8gWFMgRGV2aWNlIElEIChoaWdoKQorI2RlZmluZSBYR1hTX0FERFJFU1NfU1BFRUQJCQkweDAwMDQJCQkvLyBYUyBTcGVlZCBhYmlsaXR5CisjZGVmaW5lIFhHWFNfQUREUkVTU19ERVZfTE9XCQkweDAwMDUJCQkvLyBYUyBEZXZpY2VzIGluIHBhY2thZ2UKKyNkZWZpbmUgWEdYU19BRERSRVNTX0RFVl9ISUdICQkweDAwMDYJCQkvLyBYUyBEZXZpY2VzIGluIHBhY2thZ2UKKyNkZWZpbmUgWEdYU19BRERSRVNTX1NUQVRVUzIJCTB4MDAwOAkJCS8vIFhTIFN0YXR1cyAyCisjZGVmaW5lIFhHWFNfQUREUkVTU19QS0dJRF9sT1cJCTB4MDAwRQkJCS8vIFhTIFBhY2thZ2UgSWRlbnRpZmllcgorI2RlZmluZSBYR1hTX0FERFJFU1NfUEtHSURfSElHSAkJMHgwMDBGCQkJLy8gWFMgUGFja2FnZSBJZGVudGlmaWVyCisjZGVmaW5lIFhHWFNfQUREUkVTU19MQU5FX1NUQVRVUwkweDAwMTgJCQkvLyAxMEcgWEdYUyBMYW5lIFN0YXR1cworI2RlZmluZSBYR1hTX0FERFJFU1NfVEVTVF9DVFJMCQkweDAwMTkJCQkvLyAxMEcgWEdYUyBUZXN0IENvbnRyb2wKKyNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0xPMQkJMHg4MDAwCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IExvIDEKKyNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0xPMgkJMHg4MDAxCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IExvIDIKKyNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0hJMQkJMHg4MDAyCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IEhpIDEKKyNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0hJMgkJMHg4MDAzCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IEhpIDIKKworLy8gWFMgQ29udHJvbCAxIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworI2RlZmluZSBYR1hTX0NPTlRST0wxX1JFU0VUCQkJMHg4MDAwCQkJLy8gUmVzZXQgLSBzZWxmIGNsZWFyaW5nCisjZGVmaW5lIFhHWFNfQ09OVFJPTDFfTE9PUEJBQ0sJCTB4NDAwMAkJCS8vIEVuYWJsZSBsb29wYmFjaworI2RlZmluZSBYR1hTX0NPTlRST0wxX1NQRUVEMQkJMHgyMDAwCQkJLy8gMCA9IHVuc3BlY2lmaWVkLCAxID0gMTBHYisKKyNkZWZpbmUgWEdYU19DT05UUk9MMV9MT1dQT1dFUgkJMHgwNDAwCQkJLy8gMSA9IExvdyBwb3dlciBtb2RlCisjZGVmaW5lIFhHWFNfQ09OVFJPTDFfU1BFRUQyCQkweDAwNDAJCQkvLyBTYW1lIGFzIFNQRUVEMSAoPykKKyNkZWZpbmUgWEdYU19DT05UUk9MMV9TUEVFRAkJCTB4MDAzQwkJCS8vIEV2ZXJ5dGhpbmcgcmVzZXJ2ZWQgZXhjZXB0IHplcm8gKD8pCisKKy8vIFhTIFN0YXR1cyAxIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworI2RlZmluZSBYR1hTX1NUQVRVUzFfRkFVTFQJCQkweDAwODAJCQkvLyBGYXVsdCBkZXRlY3RlZAorI2RlZmluZSBYR1hTX1NUQVRVUzFfTElOSwkJCTB4MDAwNAkJCS8vIDEgPSBMaW5rIHVwCisjZGVmaW5lIFhHWFNfU1RBVFVTMV9MT1dQT1dFUgkJMHgwMDAyCQkJLy8gMSA9IExvdyBwb3dlciBzdXBwb3J0ZWQKKworLy8gWFMgU3BlZWQgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zCisjZGVmaW5lIFhHWFNfU1BFRURfMTBHCQkJCTB4MDAwMQkJCS8vIDEgPSAxMEcgY2FwYWJsZQorCisvLyBYUyBEZXZpY2VzIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworI2RlZmluZSBYR1hTX0RFVklDRVNfRFRFCQkJMHgwMDIwCQkJLy8gRFRFIFhTIFByZXNlbnQKKyNkZWZpbmUgWEdYU19ERVZJQ0VTX1BIWQkJCTB4MDAxMAkJCS8vIFBIWSBYUyBQcmVzZW50CisjZGVmaW5lIFhHWFNfREVWSUNFU19QQ1MJCQkweDAwMDgJCQkvLyBQQ1MgUHJlc2VudAorI2RlZmluZSBYR1hTX0RFVklDRVNfV0lTCQkJMHgwMDA0CQkJLy8gV0lTIFByZXNlbnQKKyNkZWZpbmUgWEdYU19ERVZJQ0VTX1BNRAkJCTB4MDAwMgkJCS8vIFBNRC9QTUEgUHJlc2VudAorI2RlZmluZSBYR1hTX0RFVklDRVNfQ0xBVVNFMjIJCTB4MDAwMQkJCS8vIENsYXVzZSAyMiByZWdpc3RlcnMgcHJlc2VudAorCisvLyBYUyBEZXZpY2VzIEhpZ2ggcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zCisjZGVmaW5lIFhHWFNfREVWSUNFU19WRU5ET1IyCQkweDgwMDAJCQkvLyBWZW5kb3Igc3BlY2lmaWMgZGV2aWNlIDIKKyNkZWZpbmUgWEdYU19ERVZJQ0VTX1ZFTkRPUjEJCTB4NDAwMAkJCS8vIFZlbmRvciBzcGVjaWZpYyBkZXZpY2UgMQorCisvLyBYUyBTdGF0dXMgMiByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUgWEdYU19TVEFUVVMyX0RFVl9NQVNLCQkweEMwMDAJCQkvLyBEZXZpY2UgcHJlc2VudCBtYXNrCisjZGVmaW5lIFhHWFNfU1RBVFVTMl9ERVZfUkVTUE9ORAkweDgwMDAJCQkvLyBEZXZpY2UgcmVzcG9uZGluZworI2RlZmluZSBYR1hTX1NUQVRVUzJfWE1UX0ZBVUxUCQkweDA4MDAJCQkvLyBUcmFuc21pdCBmYXVsdAorI2RlZmluZSBYR1hTX1NUQVRVUzJfUkNWX0ZBVUxUCQkweDA0MDAJCQkvLyBSZWNlaXZlIGZhdWx0CisKKy8vIFhTIFBhY2thZ2UgSUQgSGlnaCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUgWEdYU19QS0dJRF9ISUdIX09SRwkJCTB4RkMwMAkJCS8vIE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlCisjZGVmaW5lIFhHWFNfUEtHSURfSElHSF9NRkcJCQkweDAzRjAJCQkvLyBNYW51ZmFjdHVyZXIgTW9kZWwKKyNkZWZpbmUgWEdYU19QS0dJRF9ISUdIX1JFVgkJCTB4MDAwRgkJCS8vIFJldmlzaW9uIE51bWJlcgorCisvLyBYUyBMYW5lIFN0YXR1cyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUgWEdYU19MQU5FX1BIWQkJCQkweDEwMDAJCQkvLyBQSFkvRFRFIGxhbmUgYWxpZ25tZW50IHN0YXR1cworI2RlZmluZSBYR1hTX0xBTkVfUEFUVEVSTgkJCTB4MDgwMAkJCS8vIFBhdHRlcm4gdGVzdGluZyBhYmlsaXR5CisjZGVmaW5lIFhHWFNfTEFORV9MT09QQkFDSwkJCTB4MDQwMAkJCS8vIFBIWSBsb29wYmFjayBhYmlsaXR5CisjZGVmaW5lIFhHWFNfTEFORV9TWU5DMwkJCQkweDAwMDgJCQkvLyBMYW5lIDMgc3luYworI2RlZmluZSBYR1hTX0xBTkVfU1lOQzIJCQkJMHgwMDA0CQkJLy8gTGFuZSAyIHN5bmMKKyNkZWZpbmUgWEdYU19MQU5FX1NZTkMxCQkJCTB4MDAwMgkJCS8vIExhbmUgMSBzeW5jCisjZGVmaW5lIFhHWFNfTEFORV9TWU5DMAkJCQkweDAwMDEJCQkvLyBMYW5lIDAgc3luYworCisvLyBYUyBUZXN0IENvbnRyb2wgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zCisjZGVmaW5lIFhHWFNfVEVTVF9QQVRURVJOX0VOQUJMRQkweDAwMDQJCQkvLyBUZXN0IHBhdHRlcm4gZW5hYmxlZAorI2RlZmluZSBYR1hTX1RFU1RfUEFUVEVSTl9NQVNLCQkweDAwMDMJCQkvLyBUZXN0IHBhdHRlcm5zCisjZGVmaW5lIFhHWFNfVEVTVF9QQVRURVJOX1JTVkQJCTB4MDAwMwkJCS8vIFRlc3QgcGF0dGVybiAtIHJlc2VydmVkCisjZGVmaW5lIFhHWFNfVEVTVF9QQVRURVJOX01JWAkJMHgwMDAyCQkJLy8gVGVzdCBwYXR0ZXJuIC0gbWl4ZWQKKyNkZWZpbmUgWEdYU19URVNUX1BBVFRFUk5fTE9XCQkweDAwMDEJCQkvLyBUZXN0IHBhdHRlcm4gLSBsb3cKKyNkZWZpbmUgWEdYU19URVNUX1BBVFRFUk5fSElHSAkJMHgwMDAxCQkJLy8gVGVzdCBwYXR0ZXJuIC0gaGlnaAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFeHRlcm5hbCBNRElPIEJ1cyBSZWdpc3RlcnMKKyAqCisgKiBGdWxsIHJlZ2lzdGVyIGRlc2NyaXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gUEhZL1hFTlBBSy9JRUVFIHNwZWNzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gTEFTSSAoTGluayBBbGFybSBTdGF0dXMgSW50ZXJydXB0KSBSZWdpc3RlcnMgKGxvY2F0ZWQgaW4gTUlJTV9ERVZfUEhZX1BNQSBkZXZpY2UpCisjZGVmaW5lIExBU0lfUlhfQUxBUk1fQ09OVFJPTAkJMHg5MDAwCQkJLy8gTEFTSSBSWF9BTEFSTSBDb250cm9sCisjZGVmaW5lIExBU0lfVFhfQUxBUk1fQ09OVFJPTAkJMHg5MDAxCQkJLy8gTEFTSSBUWF9BTEFSTSBDb250cm9sCisjZGVmaW5lIExBU0lfQ09OVFJPTAkJCQkweDkwMDIJCQkvLyBMQVNJIENvbnRyb2wKKyNkZWZpbmUgTEFTSV9SWF9BTEFSTV9TVEFUVVMJCTB4OTAwMwkJCS8vIExBU0kgUlhfQUxBUk0gU3RhdHVzCisjZGVmaW5lIExBU0lfVFhfQUxBUk1fU1RBVFVTCQkweDkwMDQJCQkvLyBMQVNJIFRYX0FMQVJNIFN0YXR1cworI2RlZmluZSBMQVNJX1NUQVRVUwkJCQkJMHg5MDA1CQkJLy8gTEFTSSBTdGF0dXMKKworLy8gTEFTSV9DT05UUk9MIGJpdCBkZWZpbml0aW9ucworI2RlZmluZQlMQVNJX0NUTF9SWF9BTEFSTV9FTkFCTEUJMHgwMDA0CQkJLy8gRW5hYmxlIFJYX0FMQVJNIGludGVycnVwdHMKKyNkZWZpbmUJTEFTSV9DVExfVFhfQUxBUk1fRU5BQkxFCTB4MDAwMgkJCS8vIEVuYWJsZSBUWF9BTEFSTSBpbnRlcnJ1cHRzCisjZGVmaW5lCUxBU0lfQ1RMX0xTX0FMQVJNX0VOQUJMRQkweDAwMDEJCQkvLyBFbmFibGUgTGluayBTdGF0dXMgaW50ZXJydXB0cworCisvLyBMQVNJX1NUQVRVUyBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUJTEFTSV9TVEFUVVNfUlhfQUxBUk0JCTB4MDAwNAkJCS8vIFJYX0FMQVJNIHN0YXR1cworI2RlZmluZQlMQVNJX1NUQVRVU19UWF9BTEFSTQkJMHgwMDAyCQkJLy8gVFhfQUxBUk0gc3RhdHVzCisjZGVmaW5lCUxBU0lfU1RBVFVTX0xTX0FMQVJNCQkweDAwMDEJCQkvLyBMaW5rIFN0YXR1cworCisvLyBQSFkgcmVnaXN0ZXJzIC0gUE1BL1BNRCAoZGV2aWNlIDEpCisjZGVmaW5lCVBIWV9QTUFfQ09OVFJPTDEJCQkweDAwMDAJCQkvLyBQTUEvUE1EIENvbnRyb2wgMQorI2RlZmluZQlQSFlfUE1BX1NUQVRVUzEJCQkJMHgwMDAxCQkJLy8gUE1BL1BNRCBTdGF0dXMgMQorI2RlZmluZQlQSFlfUE1BX1JDVl9ERVQJCQkJMHgwMDBBCQkJLy8gUE1BL1BNRCBSZWNlaXZlIFNpZ25hbCBEZXRlY3QKKwkJLy8gb3RoZXIgUE1BL1BNRCByZWdpc3RlcnMgZXhpc3QgYW5kIGNhbiBiZSBkZWZpbmVkIGFzIG5lZWRlZAorCisvLyBQSFkgcmVnaXN0ZXJzIC0gUENTIChkZXZpY2UgMykKKyNkZWZpbmUJUEhZX1BDU19DT05UUk9MMQkJCTB4MDAwMAkJCS8vIFBDUyBDb250cm9sIDEKKyNkZWZpbmUJUEhZX1BDU19TVEFUVVMxCQkJCTB4MDAwMQkJCS8vIFBDUyBTdGF0dXMgMQorI2RlZmluZQlQSFlfUENTXzEwR19TVEFUVVMxCQkJMHgwMDIwCQkJLy8gUENTIDEwR0JBU0UtUiBTdGF0dXMgMQorCQkvLyBvdGhlciBQQ1MgcmVnaXN0ZXJzIGV4aXN0IGFuZCBjYW4gYmUgZGVmaW5lZCBhcyBuZWVkZWQKKworLy8gUEhZIHJlZ2lzdGVycyAtIFhTIChkZXZpY2UgNCkKKyNkZWZpbmUJUEhZX1hTX0NPTlRST0wxCQkJCTB4MDAwMAkJCS8vIFhTIENvbnRyb2wgMQorI2RlZmluZQlQSFlfWFNfU1RBVFVTMQkJCQkweDAwMDEJCQkvLyBYUyBTdGF0dXMgMQorI2RlZmluZQlQSFlfWFNfTEFORV9TVEFUVVMJCQkweDAwMTgJCQkvLyBYUyBMYW5lIFN0YXR1cworCQkvLyBvdGhlciBYUyByZWdpc3RlcnMgZXhpc3QgYW5kIGNhbiBiZSBkZWZpbmVkIGFzIG5lZWRlZAorCisvLyBQSFlfUE1BX0NPTlRST0wxIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworI2RlZmluZQlQTUFfQ09OVFJPTDFfUkVTRVQJCQkweDgwMDAJCQkvLyBQTUEvUE1EIHJlc2V0CisKKy8vIFBIWV9QTUFfUkNWX0RFVCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUJUE1BX1JDVl9ERVRFQ1QJCQkJMHgwMDAxCQkJLy8gUE1BL1BNRCByZWNlaXZlIHNpZ25hbCBkZXRlY3QKKworLy8gUEhZX1BDU18xMEdfU1RBVFVTMSByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKKyNkZWZpbmUJUENTXzEwQl9CTE9DS19MT0NLCQkJMHgwMDAxCQkJLy8gUENTIDEwR0JBU0UtUiBsb2NrZWQgdG8gcmVjZWl2ZSBibG9ja3MKKworLy8gUEhZX1hTX0xBTkVfU1RBVFVTIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworI2RlZmluZQlYU19MQU5FX0FMSUdOCQkJCTB4MTAwMAkJCS8vIFhTIHRyYW5zbWl0IGxhbmVzIGFsaWduZWQKKworLy8gUEhZIE1pY3JvY29kZSBkb3dubG9hZCBkYXRhIHN0cnVjdHVyZQordHlwZWRlZiBzdHJ1Y3QgX1BIWV9VQ09ERSB7CisJdXNob3J0CUFkZHI7CisJdXNob3J0CURhdGE7Cit9IFBIWV9VQ09ERSwgKlBQSFlfVUNPREU7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUcmFuc21pdCBTZXF1ZW5jZXIgQ29tbWFuZCBEZXNjcmlwdG9yIGRlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vIFRoaXMgZGVzY3JpcHRvciBtdXN0IGJlIHBsYWNlZCBpbiBHUkFNLiAgVGhlIGFkZHJlc3Mgb2YgdGhpcyBkZXNjcmlwdG9yCisvLyAoYWxvbmcgd2l0aCBhIGNvdXBsZSBvZiBjb250cm9sIGJpdHMpIGlzIHB1c2hlZCBvbnRvIHRoZSBQeGhDbWRRIG9yIFB4bENtZFEKKy8vIChQcm94eSBoaWdoIG9yIGxvdyBjb21tYW5kIHF1ZXVlKS4gIFRoaXMgZGF0YSBpcyByZWFkIGJ5IHRoZSBQcm94eSBTZXF1ZW5jZXIsCisvLyB3aGljaCBwdXNoZXMgaXQgb250byB0aGUgWG10Q21kUSwgd2hpY2ggaXMgKGV2ZW50dWFsbHkpIHJlYWQgYnkgdGhlIFRyYW5zbWl0CisvLyBTZXF1ZW5jZXIsIGNhdXNpbmcgYSBwYWNrZXQgdG8gYmUgdHJhbnNtaXR0ZWQuICBOb3QgYWxsIGZpZWxkcyBhcmUgdmFsaWQgZm9yCisvLyBhbGwgY29tbWFuZHMgLSBzZWUgdGhlIFNhaGFyYSBzcGVjIGZvciBkZXRhaWxzLiAgTm90ZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzCisvLyBvbmx5IHZhbGlkIHdoZW4gY29tcGlsZWQgb24gYSBsaXR0bGUgZW5kaWFuIG1hY2hpbmUuCisjcHJhZ21hIHBhY2socHVzaCwgMSkKK3R5cGVkZWYgc3RydWN0IF9YTVRfREVTQyB7CisJdXNob3J0CVhtdExlbjsJCQkvLyB3b3JkIDAsIGJpdHMgWzE1OjBdIC0gIHRyYW5zbWl0IGxlbmd0aAorCXVuc2lnbmVkIGNoYXIJWG10Q3RsOwkJCS8vIHdvcmQgMCwgYml0cyBbMjM6MTZdIC0gdHJhbnNtaXQgY29udHJvbCBieXRlCisJdW5zaWduZWQgY2hhcglDbWQ7CQkJLy8gd29yZCAwLCBiaXRzIFszMToyNF0gLSB0cmFuc21pdCBjb21tYW5kIHBsdXMgbWlzYy4KKwl1MzIJWG10QnVmSWQ7CQkvLyB3b3JkIDEsIGJpdHMgWzMxOjBdIC0gIHRyYW5zbWl0IGJ1ZmZlciBJRAorCXVuc2lnbmVkIGNoYXIJVGNwU3RydDsJCS8vIHdvcmQgMiwgYml0cyBbNzowXSAtICAgYnl0ZSBhZGRyZXNzIG9mIFRDUCBoZWFkZXIKKwl1bnNpZ25lZCBjaGFyCUlwU3RydDsJCQkvLyB3b3JkIDIsIGJpdHMgWzE1OjhdIC0gIGJ5dGUgYWRkcmVzcyBvZiBJUCBoZWFkZXIKKwl1c2hvcnQJSXBDa1N1bTsJCS8vIHdvcmQgMiwgYml0cyBbMzE6MTZdIC0gcGFydGlhbCBJUCBjaGVja3N1bQorCXVzaG9ydAlUY3BDa1N1bTsJCS8vIHdvcmQgMywgYml0cyBbMTU6MF0gLSAgcGFydGlhbCBUQ1AgY2hlY2tzdW0KKwl1c2hvcnQJUnN2ZDE7CQkJLy8gd29yZCAzLCBiaXRzIFszMToxNl0gLSBQQUQKKwl1MzIJUnN2ZDI7CQkJLy8gd29yZCA0LCBiaXRzIFszMTowXSAtICBQQUQKKwl1MzIJUnN2ZDM7CQkJLy8gd29yZCA1LCBiaXRzIFszMTowXSAtICBQQUQKKwl1MzIJUnN2ZDQ7CQkgICAgLy8gd29yZCA2LCBiaXRzIFszMTowXSAtICBQQUQKKwl1MzIJUnN2ZDU7CQkgICAgLy8gd29yZCA3LCBiaXRzIFszMTowXSAtICBQQUQKK30gWE1UX0RFU0MsICpQWE1UX0RFU0M7CisjcHJhZ21hIHBhY2socG9wKQorCisvLyBYTVRfREVTQyBDbWQgYnl0ZSBkZWZpbml0aW9ucworCQkvLyBjb21tYW5kIGNvZGVzCisjZGVmaW5lIFhNVF9ERVNDX0NNRF9SQVdfU0VORAkJMAkJLy8gcmF3IHNlbmQgZGVzY3JpcHRvcgorI2RlZmluZSBYTVRfREVTQ19DTURfQ1NVTV9JTlNFUlQJMQkJLy8gY2hlY2tzdW0gaW5zZXJ0IGRlc2NyaXB0b3IKKyNkZWZpbmUgWE1UX0RFU0NfQ01EX0ZPUk1BVAkJCTIJCS8vIGZvcm1hdCBkZXNjcmlwdG9yCisjZGVmaW5lIFhNVF9ERVNDX0NNRF9QUklNRQkJCTMJCS8vIHByaW1lIGRlc2NyaXB0b3IKKyNkZWZpbmUgWE1UX0RFU0NfQ01EX0NPREVfU0hGVAkJNgkJLy8gY29tYW5kIGNvZGUgc2hpZnQgKHNoaWZ0IHRvIGJpdHMgWzMxOjMwXSBpbiB3b3JkIDApCisJCS8vIHNoaWZ0ZWQgY29tbWFuZCBjb2RlcworI2RlZmluZSBYTVRfUkFXX1NFTkQJCShYTVRfREVTQ19DTURfUkFXX1NFTkQgICAgPDwgWE1UX0RFU0NfQ01EX0NPREVfU0hGVCkKKyNkZWZpbmUgWE1UX0NTVU1fSU5TRVJUCQkoWE1UX0RFU0NfQ01EX0NTVU1fSU5TRVJUIDw8IFhNVF9ERVNDX0NNRF9DT0RFX1NIRlQpCisjZGVmaW5lIFhNVF9GT1JNQVQJCQkoWE1UX0RFU0NfQ01EX0ZPUk1BVCAgICAgIDw8IFhNVF9ERVNDX0NNRF9DT0RFX1NIRlQpCisjZGVmaW5lIFhNVF9QUklNRQkJCShYTVRfREVTQ19DTURfUFJJTUUgICAgICAgPDwgWE1UX0RFU0NfQ01EX0NPREVfU0hGVCkKKworLy8gWE1UX0RFU0MgQ29udHJvbCBCeXRlIChYbXRDdGwpIGRlZmluaXRpb25zCisvLyBOT1RFOiAgVGhlc2UgYml0cyBkbyBub3Qgd29yayBvbiBTYWhhcmEgKFJldiBBKSEKKyNkZWZpbmUJWE1UX0NUTF9QQVVTRV9GUkFNRQkJCTB4ODAJLy8gY3VycmVudCBmcmFtZSBpcyBhIHBhdXNlIGNvbnRyb2wgZnJhbWUgKGZvciBzdGF0aXN0aWNzKQorI2RlZmluZQlYTVRfQ1RMX0NPTlRST0xfRlJBTUUJCTB4NDAJLy8gY3VycmVudCBmcmFtZSBpcyBhIGNvbnRyb2wgZnJhbWUgKGZvciBzdGF0aXN0aWNzKQorI2RlZmluZQlYTVRfQ1RMX1BFUl9QS1RfUVVBTAkJMHgyMAkvLyBwZXIgcGFja2V0IHF1YWxpZmllcgorI2RlZmluZQlYTVRfQ1RMX1BBRF9NT0RFX05PTkUJCTB4MDAJLy8gZG8gbm90IHBhZCBmcmFtZQorI2RlZmluZQlYTVRfQ1RMX1BBRF9NT0RFXzY0CQkJMHgwOAkvLyBwYWQgZnJhbWUgdG8gNjQgYnl0ZXMKKyNkZWZpbmUJWE1UX0NUTF9QQURfTU9ERV9WTEFOXzY4CTB4MTAJLy8gcGFkIGZyYW1lIHRvIDY0IGJ5dGVzLCBhbmQgVkxBTiBmcmFtZXMgdG8gNjggYnl0ZXMKKyNkZWZpbmUJWE1UX0NUTF9QQURfTU9ERV82OAkJCTB4MTgJLy8gcGFkIGZyYW1lIHRvIDY4IGJ5dGVzCisjZGVmaW5lCVhNVF9DVExfR0VOX0ZDUwkJCQkweDA0CS8vIGdlbmVyYXRlIEZDUyAoQ1JDKSBmb3IgdGhpcyBmcmFtZQorI2RlZmluZQlYTVRfQ1RMX0RFTEFZX0ZDU18wCQkJMHgwMAkvLyBkbyBub3QgZGVsYXkgRkNTIGNhbGN1dGlvbgorI2RlZmluZQlYTVRfQ1RMX0RFTEFZX0ZDU18xCQkJMHgwMQkvLyBkZWxheSBGQ1MgY2FsY3VsYXRpb24gYnkgMSAoNC1ieXRlKSB3b3JkCisjZGVmaW5lCVhNVF9DVExfREVMQVlfRkNTXzIJCQkweDAyCS8vIGRlbGF5IEZDUyBjYWxjdWxhdGlvbiBieSAyICg0LWJ5dGUpIHdvcmRzCisjZGVmaW5lCVhNVF9DVExfREVMQVlfRkNTXzMJCQkweDAzCS8vIGRlbGF5IEZDUyBjYWxjdWxhdGlvbiBieSAzICg0LWJ5dGUpIHdvcmRzCisKKy8vIFhNVF9ERVNDIFhtdEJ1ZklkIGRlZmluaXRpb24KKyNkZWZpbmUgWE1UX0JVRl9JRF9TSEZUCQk4CQkJLy8gVGhlIFhtdCBidWZmZXIgSUQgaXMgZm9ybWVkIGJ5IGRpdmlkaW5nCisJCQkJCQkJCQkJLy8gdGhlIGJ1ZmZlciAoRFJBTSkgYWRkcmVzcyBieSAyNTYgKG9yIDw8IDgpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUmVjZWl2ZXIgU2VxdWVuY2VyIERlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vIFJlY2VpdmUgRXZlbnQgUXVldWUgKHF1ZXVlcyAzIC0gNikgYml0IGRlZmluaXRpb25zCisjZGVmaW5lCVJDVl9FVlRRX1JCRklEX01BU0sJCTB4MDAwMEZGRkYJLy8gYml0IG1hc2sgZm9yIHRoZSBSZWNlaXZlIEJ1ZmZlciBJRAorCisvLyBSZWNlaXZlIEJ1ZmZlciBJRCBkZWZpbml0aW9uCisjZGVmaW5lIFJDVl9CVUZfSURfU0hGVAkJNQkJCS8vIFRoZSBSY3YgYnVmZmVyIElEIGlzIGZvcm1lZCBieSBkaXZpZGluZworCQkJCQkJCQkJCS8vIHRoZSBidWZmZXIgKERSQU0pIGFkZHJlc3MgYnkgMzIgKG9yIDw8IDUpCisKKy8vIEZvcm1hdCBvZiB0aGUgMTggYnl0ZSBSZWNlaXZlIEJ1ZmZlciByZXR1cm5lZCBieSB0aGUKKy8vIFJlY2VpdmUgU2VxdWVuY2VyIGZvciByZWNlaXZlZCBwYWNrZXRzCisjcHJhZ21hIHBhY2socHVzaCwgMSkKK3R5cGVkZWYgc3RydWN0IF9SQ1ZfQlVGX0hEUiB7CisJdTMyCVN0YXR1czsJCQkJLy8gU3RhdHVzIHdvcmQgZnJvbSBSY3YgU2VxIFBhcnNlcgorCXVzaG9ydAlMZW5ndGg7CQkJCS8vIFJjdiBwYWNrZXQgYnl0ZSBjb3VudAorCXVuaW9uIHsKKwkJdXNob3J0CQlUY3BDc3VtOwkvLyBUQ1AgY2hlY2tzdW0KKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGNoYXIJVGNwQ3N1bUw7CS8vIGxvd2VyIDggYml0cyBvZiB0aGUgVENQIGNoZWNrc3VtCisJCQl1bnNpZ25lZCBjaGFyCUxpbmtIYXNoOwkvLyBMaW5rIGhhc2ggKG11bHRpY2FzdCBmcmFtZXMgb25seSkKKwkJfTsKKwl9OworCXVzaG9ydAlTa3RIYXNoOwkJCS8vIFNvY2tldCBoYXNoCisJdW5zaWduZWQgY2hhcglUY3BIZHJPZmZzZXQ7CQkvLyBUQ1AgaGVhZGVyIG9mZnNldCBpbnRvIHBhY2tldAorCXVuc2lnbmVkIGNoYXIJSXBIZHJPZmZzZXQ7CQkvLyBJUCBoZWFkZXIgb2Zmc2V0IGludG8gcGFja2V0CisJdTMyCVRwekhhc2g7CQkJLy8gVG9lcGxpdHogaGFzaAorCXVzaG9ydAlSZXNlcnZlZDsJCQkvLyBSZXNlcnZlZAorfSBSQ1ZfQlVGX0hEUiwgKlBSQ1ZfQlVGX0hEUjsKKyNwcmFnbWEgcGFjayhwb3ApCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBRdWV1ZSBkZWZpbml0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvLyBJbmdyZXNzIChyZWFkIG9ubHkpIHF1ZXVlIG51bWJlcnMKKyNkZWZpbmUgUFhZX0JVRl9RCQkwCQkvLyBQcm94eSBCdWZmZXIgUXVldWUKKyNkZWZpbmUgSFNUX0VWVF9RCQkxCQkvLyBIb3N0IEV2ZW50IFF1ZXVlCisjZGVmaW5lIFhNVF9CVUZfUQkJMgkJLy8gVHJhbnNtaXQgQnVmZmVyIFF1ZXVlCisjZGVmaW5lIFNLVF9FVkxfUQkJMwkJLy8gUmN2U3FyIFNvY2tldCBFdmVudCBMb3cgUHJpb3JpdHkgUXVldWUKKyNkZWZpbmUgUkNWX0VWTF9RCQk0CQkvLyBSY3ZTcXIgUmN2IEV2ZW50IExvdyBQcmlvcml0eSBRdWV1ZQorI2RlZmluZSBTS1RfRVZIX1EJCTUJCS8vIFJjdlNxciBTb2NrZXQgRXZlbnQgSGlnaCBQcmlvcml0eSBRdWV1ZQorI2RlZmluZSBSQ1ZfRVZIX1EJCTYJCS8vIFJjdlNxciBSY3YgRXZlbnQgSGlnaCBQcmlvcml0eSBRdWV1ZQorI2RlZmluZSBETUFfUlNQX1EJCTcJCS8vIERtYSBSZXNwb25zZSBRdWV1ZSAtIG9uZSBwZXIgQ1BVIGNvbnRleHQKKy8vIExvY2FsIChyZWFkL3dyaXRlKSBxdWV1ZSBudW1iZXJzCisjZGVmaW5lIExPQ0FMX0FfUQkJOAkJLy8gU3BhcmUgbG9jYWwgUXVldWUKKyNkZWZpbmUgTE9DQUxfQl9RCQk5CQkvLyBTcGFyZSBsb2NhbCBRdWV1ZQorI2RlZmluZSBMT0NBTF9DX1EJCTEwCQkvLyBTcGFyZSBsb2NhbCBRdWV1ZQorI2RlZmluZSBGU01fRVZUX1EJCTExCQkvLyBGaW5pdGUtU3RhdGUtTWFjaGluZSBFdmVudCBRdWV1ZQorI2RlZmluZSBTQkZfUEFMX1EJCTEyCQkvLyBTeXN0ZW0gQnVmZmVyIFBoeXNpY2FsIEFkZHJlc3MgKGxvdykgUXVldWUKKyNkZWZpbmUgU0JGX1BBSF9RCQkxMwkJLy8gU3lzdGVtIEJ1ZmZlciBQaHlzaWNhbCBBZGRyZXNzIChoaWdoKSBRdWV1ZQorI2RlZmluZSBTQkZfVkFMX1EJCTE0CQkvLyBTeXN0ZW0gQnVmZmVyIFZpcnR1YWwgQWRkcmVzcyAobG93KSBRdWV1ZQorI2RlZmluZSBTQkZfVkFIX1EJCTE1CQkvLyBTeXN0ZW0gQnVmZmVyIFZpcnR1YWwgQWRkcmVzcyAoaGlnaCkgUXVldWUKKy8vIEVncmVzcyAod3JpdGUgb25seSkgcXVldWUgbnVtYmVycworI2RlZmluZSBIMkdfQ01EX1EJCTE2CQkvLyBIb3N0IHRvIEdsYlJhbSBETUEgQ29tbWFuZCBRdWV1ZQorI2RlZmluZSBIMkRfQ01EX1EJCTE3CQkvLyBIb3N0IHRvIERSQU0gRE1BIENvbW1hbmQgUXVldWUKKyNkZWZpbmUgRzJIX0NNRF9RCQkxOAkJLy8gR2xiUmFtIHRvIEhvc3QgRE1BIENvbW1hbmQgUXVldWUKKyNkZWZpbmUgRzJEX0NNRF9RCQkxOQkJLy8gR2xiUmFtIHRvIERSQU0gRE1BIENvbW1hbmQgUXVldWUKKyNkZWZpbmUgRDJIX0NNRF9RCQkyMAkJLy8gRFJBTSB0byBIb3N0IERNQSBDb21tYW5kIFF1ZXVlCisjZGVmaW5lIEQyR19DTURfUQkJMjEJCS8vIERSQU0gdG8gR2xiUmFtIERNQSBDb21tYW5kIFF1ZXVlCisjZGVmaW5lIEQyRF9DTURfUQkJMjIJCS8vIERSQU0gdG8gRFJBTSBETUEgQ29tbWFuZCBRdWV1ZQorI2RlZmluZSBQWExfQ01EX1EJCTIzCQkvLyBMb3cgUHJpb3JpdHkgUHJveHkgQ29tbWFuZCBRdWV1ZQorI2RlZmluZSBQWEhfQ01EX1EJCTI0CQkvLyBIaWdoIFByaW9yaXR5IFByb3h5IENvbW1hbmQgUXVldWUKKyNkZWZpbmUgUlNRX0NNRF9RCQkyNQkJLy8gUmVjZWl2ZSBTZXF1ZW5jZXIgQ29tbWFuZCBRdWV1ZQorI2RlZmluZSBSQ1ZfQlVGX1EJCTI2CQkvLyBSZWNlaXZlIEJ1ZmZlciBRdWV1ZQorCisvLyBCaXQgZGVmaW5pdGlvbnMgZm9yIHRoZSBQcm94eSBDb21tYW5kIHF1ZXVlcyAoUFhMX0NNRF9RIGFuZCBQWEhfQ01EX1EpCisjZGVmaW5lIFBYWV9DT1BZX0VOCQkweDAwMjAwMDAwCQkvLyBlbmFibGUgY29weSBvZiB4bXQgZGVzY3JpcHRvciB0byB4bXQgY29tbWFuZCBxdWV1ZQorI2RlZmluZSBQWFlfU0laRV8xNgkJMHgwMDAwMDAwMAkJLy8gY29weSAxNiBieXRlcworI2RlZmluZSBQWFlfU0laRV8zMgkJMHgwMDEwMDAwMAkJLy8gY29weSAzMiBieXRlcworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFNYRyBFRVBST00vRmxhc2ggQ29uZmlndXJhdGlvbiBEZWZpbml0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI3ByYWdtYSBwYWNrKHB1c2gsIDEpCisKKy8vCit0eXBlZGVmIHN0cnVjdCBfSFdfQ0ZHX0RBVEEgeworCXVzaG9ydAkJQWRkcjsKKwl1bmlvbiB7CisJCXVzaG9ydAlEYXRhOworCQl1c2hvcnQJQ2hlY2tzdW07CisJfTsKK30gSFdfQ0ZHX0RBVEEsICpQSFdfQ0ZHX0RBVEE7CisKKy8vCisjZGVmaW5lCU5VTV9IV19DRkdfRU5UUklFUwkoKDEyOC9zaXplb2YoSFdfQ0ZHX0RBVEEpKSAtIDQpCisKKy8vIE1BQyBhZGRyZXNzCit0eXBlZGVmIHN0cnVjdCBfU1hHX0NPTkZJR19NQUMgeworCXVuc2lnbmVkIGNoYXIJCU1hY0FkZHJbNl07CQkJLy8gTUFDIEFkZHJlc3MKK30gU1hHX0NPTkZJR19NQUMsICpQU1hHX0NPTkZJR19NQUM7CisKKy8vCit0eXBlZGVmIHN0cnVjdCBfQVRLX0ZSVSB7CisJdW5zaWduZWQgY2hhcgkJUGFydE51bVs2XTsKKwl1bnNpZ25lZCBjaGFyCQlSZXZpc2lvblsyXTsKKwl1bnNpZ25lZCBjaGFyCQlTZXJpYWxbMTRdOworfSBBVEtfRlJVLCAqUEFUS19GUlU7CisKKy8vIE9FTSBGUlUgRm9ybWF0IHR5cGVzCisjZGVmaW5lCUFUS19GUlVfRk9STUFUCQkweDAwMDAKKyNkZWZpbmUgQ1BRX0ZSVV9GT1JNQVQJCTB4MDAwMQorI2RlZmluZSBERUxMX0ZSVV9GT1JNQVQJCTB4MDAwMgorI2RlZmluZSBIUF9GUlVfRk9STUFUCQkweDAwMDMKKyNkZWZpbmUgSUJNX0ZSVV9GT1JNQVQJCTB4MDAwNAorI2RlZmluZSBFTUNfRlJVX0ZPUk1BVAkJMHgwMDA1CisjZGVmaW5lIE5PX0ZSVV9GT1JNQVQJCTB4RkZGRgorCisvLyBFRVBST00vRmxhc2ggRm9ybWF0Cit0eXBlZGVmIHN0cnVjdCBfU1hHX0NPTkZJRyB7CisJLy8KKwkvLyBTZWN0aW9uIDEgKDEyOCBieXRlcykKKwkvLworCXVzaG9ydAkJCU1hZ2ljV29yZDsJCQkvLyBFRVBST00vRkxBU0ggTWFnaWMgY29kZSAnQTVBNScKKwl1c2hvcnQJCQlTcGlDbGtzOwkJCS8vIFNQSSBidXMgY2xvY2sgZGl2aWRlcnMKKwlIV19DRkdfREFUQQkJSHdDZmdbTlVNX0hXX0NGR19FTlRSSUVTXTsKKwkvLworCS8vCisJLy8KKwl1c2hvcnQJCQlWZXJzaW9uOwkJCS8vIEVFUFJPTSBmb3JtYXQgdmVyc2lvbgorCVNYR19DT05GSUdfTUFDCU1hY0FkZHJbNF07CQkJLy8gc3BhY2UgZm9yIDQgTUFDIGFkZHJlc3NlcworCUFUS19GUlUJCQlBdGtGcnU7CQkJCS8vIEZSVSBpbmZvcm1hdGlvbgorCXVzaG9ydAkJCU9lbUZydUZvcm1hdDsJCS8vIE9FTSBGUlUgZm9ybWF0IHR5cGUKKwl1bnNpZ25lZCBjaGFyCQkJT2VtRnJ1Wzc2XTsJCQkvLyBPRU0gRlJVIGluZm9ybWF0aW9uIChvcHRpb25hbCkKKwl1c2hvcnQJCQlDaGVja3N1bTsJCQkvLyBDaGVja3N1bSBvZiBzZWN0aW9uIDIKKwkvLyBDUyBpbmZvIFhYWFRPRE8KK30gU1hHX0NPTkZJRywgKlBTWEdfQ09ORklHOworI3ByYWdtYSBwYWNrKHBvcCkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNaXNjZWxsYW5lb3VzIEhhcmR3YXJlIGRlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vIFNhaGFyYSAoQVNJQyBsZXZlbCkgZGVmaW5lcworI2RlZmluZSBTQUhBUkFfR1JBTV9TSVpFCQkJMHgwMjAwMDAJCS8vIEdSQU0gc2l6ZSAtIDEyOCBLQgorI2RlZmluZSBTQUhBUkFfRFJBTV9TSVpFCQkJMHgyMDAwMDAJCS8vIERSQU0gc2l6ZSAtIDIgTUIKKyNkZWZpbmUgU0FIQVJBX1FSQU1fU0laRQkJCTB4MDA0MDAwCQkvLyBRUkFNIHNpemUgLSAxNksgZW50cmllcyAoNjQgS0IpCisjZGVmaW5lIFNBSEFSQV9XQ1NfU0laRQkJCQkweDAwMjAwMAkJLy8gV0NTIC0gOEsgaW5zdHJ1Y3Rpb25zICh4IDEwOCBiaXRzKQorCisvLyBBcmFiaWEgKGJvYXJkIGxldmVsKSBkZWZpbmVzCisjZGVmaW5lCUZMQVNIX1NJWkUJCQkJMHgwODAwMDAJCS8vIDUxMiBLQiAoNCBNYikKKyNkZWZpbmUJRUVQUk9NX1NJWkVfWEZNUgkJNTEyCQkJCS8vIHRydWUgRUVQUk9NIHNpemUgKGJ5dGVzKSwgaW5jbHVkaW5nIHhmbXIgYXJlYQorI2RlZmluZQlFRVBST01fU0laRV9OT19YRk1SCQkyNTYJCQkJLy8gRUVQUk9NIHNpemUgZXhjbHVkaW5nIHhmbXIgYXJlYQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3N4Zy9zeGdwaHljb2RlLmggYi9kcml2ZXJzL3N0YWdpbmcvc3hnL3N4Z3BoeWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmIzNmM4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3N4Zy9zeGdwaHljb2RlLmgKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwOCBBbGFjcml0ZWNoLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiBzeGdwaHljb2RlLmg6CisgKgorICogVGhpcyBmaWxlIFBIWSBtaWNyb2NvZGUgYW5kIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIGRhdGEuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFBIWSBNaWNyb2NvZGUKKyAqCisgKiBUaGUgZm9sbG93aW5nIGNvbnRhaW5zIGJvdGggUEhZIG1pY3JvY29kZSBhbmQgUEhZIHJlZ2lzdGVyCisgKiBpbml0aWFsaXphdGlvbiBkYXRhLiAgSXQgaXMgc3BlY2lmaWMgdG8gYm90aCB0aGUgUEhZIGFuZCB0aGUKKyAqIHR5cGUgb2YgdHJhbnNjZWl2ZXIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBEb3dubG9hZCBmb3IgQUVMMjAwNUMgUEhZIHdpdGggU1IvTFIgdHJhbnNjZWl2ZXIgKDEwR0JBU0UtU1Igb3IgMTBHQkFTRS1MUikKKyAqLworc3RhdGljIFBIWV9VQ09ERSBQaHlVY29kZVtdID0geworCS8qCisJICogTk9URTogIEFuIGFkZHJlc3Mgb2YgMCBpcyBhIHNwZWNpYWwgY2FzZS4gIFdoZW4gdGhlIGRvd25sb2FkIHJvdXRpbmUKKwkgKiBzZWVzIGFuIGFkZHJlc3Mgb2YgMCwgaXQgZG9lcyBub3Qgd3JpdGUgdG8gdGhlIFBIWS4gIEluc3RlYWQsIGl0CisJICogZGVsYXlzIHRoZSBkb3dubG9hZC4gIFRoZSBsZW5ndGggb2YgdGhlIGRlbGF5IChpbiBtcykgaXMgZ2l2ZW4gaW4KKwkgKiB0aGUgZGF0YSBmaWVsZC4KKwkgKgorCSAqIERlbGF5cyBhcmUgcmVxdWlyZWQgYXQgY2VydGFpbiBwb2ludHMuCisJICovCisKKwkvKgorCSAqIFBsYXRmb3JtLXNwZWNpZmljIE1ESU8gUGF0Y2hlczoKKwkgKiAoaW5jbHVkZSBwYXRjaGVzIGZvciAxMEcgUlggcG9sYXJpdHkgZmxpcCwgNTBNaHogU3ludGgsIGV0YykKKwkgKi8KKwkvKiBBZGRyLCBEYXRhICovCisJezB4YzAxNywgMHhmZWIwfSwJLyogZmxpcCBSWF9MT1MgcG9sYXJpdHkgKG1hbmRhdG9yeSAqLworCQkJCS8qICBwYXRjaCBmb3IgU0ZQKyBhcHBsaWNhdGlvbnMpICovCisJezB4QzAwMSwgMHgwNDI4fSwJLyogZmxpcCBSWCBzZXJpYWwgcG9sYXJpdHkgKi8KKworCXsweGMwMTMsIDB4ZjM0MX0sCS8qIGludmVydCBseG1pdCBjbG9jayAobWFuZGF0b3J5IHBhdGNoKSAqLworCXsweGMyMTAsIDB4ODAwMH0sCS8qIHJlc2V0IGRhdGFwYXRoIChtYW5kYXRvcnkgcGF0Y2gpICovCisJezB4YzIxMCwgMHg4MTAwfSwJLyogcmVzZXQgZGF0YXBhdGggKG1hbmRhdG9yeSBwYXRjaCkgKi8KKwl7MHhjMjEwLCAweDgwMDB9LAkvKiByZXNldCBkYXRhcGF0aCAobWFuZGF0b3J5IHBhdGNoKSAqLworCXsweGMyMTAsIDB4MDAwMH0sCS8qIHJlc2V0IGRhdGFwYXRoIChtYW5kYXRvcnkgcGF0Y2gpICovCisJezB4MDAwMCwgMHgwMDMyfSwJLyogd2FpdCBmb3IgNTBtcyBmb3IgZGF0YXBhdGggcmVzZXQgdG8gKi8KKwkJCQkvKiBjb21wbGV0ZS4gKG1hbmRhdG9yeSBwYXRjaCkgKi8KKworCS8qIENvbmZpZ3VyZSB0aGUgTEVEJ3MgKi8KKwl7MHhjMjE0LCAweDAwOTl9LAkvKiBjb25maWd1cmUgdGhlIExFRCBkcml2ZXJzICovCisJezB4YzIxNiwgMHg1ZjVmfSwJLyogY29uZmlndXJlIHRoZSBBY3Rpdml0eSBMRUQgKi8KKwl7MHhjMjE3LCAweDMzZmZ9LAkvKiBjb25maWd1cmUgdGhlIExpbmsgTEVEICovCisKKwkvKiBUcmFuc2NlaXZlci1zcGVjaWZpYyBNRElPIFBhdGNoZXM6ICovCisJezB4YzAxMCwgMHg0NDhhfSwJLyogKGJpdCAxNCkgbWFzayBvdXQgaGlnaCBCRVIgaW5wdXQgZnJvbSB0aGUgKi8KKwkJCQkvKiBMT1Mgc2lnbmFsIGluIDEuMDAwQSAqLworCQkJCS8qIChtYW5kYXRvcnkgcGF0Y2ggZm9yIFNSIGNvZGUpKi8KKwl7MHhjMDAzLCAweDAxODF9LAkvKiAoYml0IDcpIGVuYWJsZSB0aGUgQ0RSIGluYyBzZXR0aW5nIGluICovCisJCQkJLyogMS5DMDA1IChtYW5kYXRvcnkgcGF0Y2ggZm9yIFNSIGNvZGUpICovCisKKwkvKiBUcmFuc2NlaXZlci1zcGVjaWZpYyBNaWNyb2NvbnRyb2xsZXIgSW5pdGlhbGl6YXRpb246ICovCisJezB4YzA0YSwgMHg1MjAwfSwJLyogYWN0aXZhdGUgbWljcm9jb250cm9sbGVyIGFuZCBwYXVzZSAqLworCXsweDAwMDAsIDB4MDAzMn0sCS8qIHdhaXQgNTBtcyBmb3IgbWljcm9jb250cm9sbGVyIGJlZm9yZSAqLworCQkJCS8qIHdyaXRpbmcgaW4gY29kZS4gKi8KKworCS8qIGNvZGUgYmxvY2sgc3RhcnRzIGhlcmU6ICovCisJezB4Y2MwMCwgMHgyMDA5fSwKKwl7MHhjYzAxLCAweDMwMDl9LAorCXsweGNjMDIsIDB4MjdmZn0sCisJezB4Y2MwMywgMHgzMDBmfSwKKwl7MHhjYzA0LCAweDIwMGN9LAorCXsweGNjMDUsIDB4MzAwY30sCisJezB4Y2MwNiwgMHgyMGM0fSwKKwl7MHhjYzA3LCAweDNjMDR9LAorCXsweGNjMDgsIDB4NjQzN30sCisJezB4Y2MwOSwgMHgyMGM0fSwKKwl7MHhjYzBhLCAweDNjMDR9LAorCXsweGNjMGIsIDB4NjQzN30sCisJezB4Y2MwYywgMHgyNWM0fSwKKwl7MHhjYzBkLCAweDNjNTR9LAorCXsweGNjMGUsIDB4NjcyNH0sCisJezB4Y2MwZiwgMHgyNWM0fSwKKwl7MHhjYzEwLCAweDNjNTR9LAorCXsweGNjMTEsIDB4NjcyNH0sCisJezB4Y2MxMiwgMHgyMDQyfSwKKwl7MHhjYzEzLCAweDMwMTJ9LAorCXsweGNjMTQsIDB4MTAwMn0sCisJezB4Y2MxNSwgMHgyNDgyfSwKKwl7MHhjYzE2LCAweDMwMTJ9LAorCXsweGNjMTcsIDB4MTAwMn0sCisJezB4Y2MxOCwgMHgyYTMyfSwKKwl7MHhjYzE5LCAweDMwMDJ9LAorCXsweGNjMWEsIDB4MTAwMn0sCisJezB4Y2MxYiwgMHgyMDBkfSwKKwl7MHhjYzFjLCAweDMwNGR9LAorCXsweGNjMWQsIDB4Mjg2Mn0sCisJezB4Y2MxZSwgMHgzMDEyfSwKKwl7MHhjYzFmLCAweDEwMDJ9LAorCXsweGNjMjAsIDB4Mjk4Mn0sCisJezB4Y2MyMSwgMHgzMDAyfSwKKwl7MHhjYzIyLCAweDEwMDJ9LAorCXsweGNjMjMsIDB4NjI4Zn0sCisJezB4Y2MyNCwgMHgyMGE0fSwKKwl7MHhjYzI1LCAweDMwMDR9LAorCXsweGNjMjYsIDB4NjQzOH0sCisJezB4Y2MyNywgMHgyMGE0fSwKKwl7MHhjYzI4LCAweDMwMDR9LAorCXsweGNjMjksIDB4NjQzOH0sCisJezB4Y2MyYSwgMHgyMDE1fSwKKwl7MHhjYzJiLCAweDMwMDV9LAorCXsweGNjMmMsIDB4NTg1M30sCisJezB4Y2MyZCwgMHgyYmQyfSwKKwl7MHhjYzJlLCAweDMwMDJ9LAorCXsweGNjMmYsIDB4MTM0Mn0sCisJezB4Y2MzMCwgMHgyMDBjfSwKKwl7MHhjYzMxLCAweDMwMGN9LAorCXsweGNjMzIsIDB4MmZmN30sCisJezB4Y2MzMywgMHgzMGY3fSwKKwl7MHhjYzM0LCAweDIwYzR9LAorCXsweGNjMzUsIDB4M2MwNH0sCisJezB4Y2MzNiwgMHg2NzI0fSwKKwl7MHhjYzM3LCAweDIwYzR9LAorCXsweGNjMzgsIDB4M2MwNH0sCisJezB4Y2MzOSwgMHg2NzI0fSwKKwl7MHhjYzNhLCAweDJkMzJ9LAorCXsweGNjM2IsIDB4MzAwMn0sCisJezB4Y2MzYywgMHgxMDAyfSwKKwl7MHhjYzNkLCAweDIwMDh9LAorCXsweGNjM2UsIDB4MzAwOH0sCisJezB4Y2MzZiwgMHg1YzgzfSwKKwl7MHhjYzQwLCAweDJkNTJ9LAorCXsweGNjNDEsIDB4MzAwMn0sCisJezB4Y2M0MiwgMHgxMzUyfSwKKwl7MHhjYzQzLCAweDIwMDh9LAorCXsweGNjNDQsIDB4MzAwOH0sCisJezB4Y2M0NSwgMHg1YzgzfSwKKwl7MHhjYzQ2LCAweDJkMzJ9LAorCXsweGNjNDcsIDB4MzAwMn0sCisJezB4Y2M0OCwgMHgxMzUyfSwKKwl7MHhjYzQ5LCAweDIwMWN9LAorCXsweGNjNGEsIDB4MzAwY30sCisJezB4Y2M0YiwgMHgyMDBkfSwKKwl7MHhjYzRjLCAweDMxMGR9LAorCXsweGNjNGQsIDB4Mjg2Mn0sCisJezB4Y2M0ZSwgMHgzMDEyfSwKKwl7MHhjYzRmLCAweDEwMDJ9LAorCXsweGNjNTAsIDB4MmVkMn0sCisJezB4Y2M1MSwgMHgzMDAyfSwKKwl7MHhjYzUyLCAweDEzNDJ9LAorCXsweGNjNTMsIDB4NmY3Mn0sCisJezB4Y2M1NCwgMHgxMDAyfSwKKwl7MHhjYzU1LCAweDYyOGZ9LAorCXsweGNjNTYsIDB4MjUxNH0sCisJezB4Y2M1NywgMHgzYzY0fSwKKwl7MHhjYzU4LCAweDY0MzZ9LAorCXsweGNjNTksIDB4MjUxNH0sCisJezB4Y2M1YSwgMHgzYzY0fSwKKwl7MHhjYzViLCAweDY0MzZ9LAorCXsweGNjNWMsIDB4MmZhNH0sCisJezB4Y2M1ZCwgMHgzY2Q0fSwKKwl7MHhjYzVlLCAweDY2MjR9LAorCXsweGNjNWYsIDB4MmZhNH0sCisJezB4Y2M2MCwgMHgzY2Q0fSwKKwl7MHhjYzYxLCAweDY2MjR9LAorCXsweGNjNjIsIDB4MmY0NX0sCisJezB4Y2M2MywgMHgzMDE1fSwKKwl7MHhjYzY0LCAweDU2NTN9LAorCXsweGNjNjUsIDB4MmViMn0sCisJezB4Y2M2NiwgMHgzMDAyfSwKKwl7MHhjYzY3LCAweDEzZDJ9LAorCXsweGNjNjgsIDB4MmVkMn0sCisJezB4Y2M2OSwgMHgzMDAyfSwKKwl7MHhjYzZhLCAweDEwMDJ9LAorCXsweGNjNmIsIDB4NmY3Mn0sCisJezB4Y2M2YywgMHgxMDAyfSwKKwl7MHhjYzZkLCAweDYyOGZ9LAorCXsweGNjNmUsIDB4MjYwMn0sCisJezB4Y2M2ZiwgMHgzMDEyfSwKKwl7MHhjYzcwLCAweDEwMDJ9LAorCXsweGNjNzEsIDB4MjAwZH0sCisJezB4Y2M3MiwgMHgzMjBkfSwKKwl7MHhjYzczLCAweDI4NjJ9LAorCXsweGNjNzQsIDB4MzAxMn0sCisJezB4Y2M3NSwgMHgxMDAyfSwKKwl7MHhjYzc2LCAweDI1YzR9LAorCXsweGNjNzcsIDB4M2M1NH0sCisJezB4Y2M3OCwgMHg2NDM3fSwKKwl7MHhjYzc5LCAweDI1YzR9LAorCXsweGNjN2EsIDB4M2M1NH0sCisJezB4Y2M3YiwgMHg2NDM3fSwKKwl7MHhjYzdjLCAweDIwYzR9LAorCXsweGNjN2QsIDB4M2MwNH0sCisJezB4Y2M3ZSwgMHg2NzI0fSwKKwl7MHhjYzdmLCAweDIwYzR9LAorCXsweGNjODAsIDB4M2MwNH0sCisJezB4Y2M4MSwgMHg2NzI0fSwKKwl7MHhjYzgyLCAweDZmNzJ9LAorCXsweGNjODMsIDB4MTAwMn0sCisJezB4Y2M4NCwgMHg2MjhmfSwKKwl7MHhjYzg1LCAweDI2ZjJ9LAorCXsweGNjODYsIDB4MzAxMn0sCisJezB4Y2M4NywgMHgxMDAyfSwKKwl7MHhjYzg4LCAweGM1MDN9LAorCXsweGNjODksIDB4ZDVkNX0sCisJezB4Y2M4YSwgMHhjNjAwfSwKKwl7MHhjYzhiLCAweDJhNmR9LAorCXsweGNjOGMsIDB4YzYwMX0sCisJezB4Y2M4ZCwgMHgyYTRjfSwKKwl7MHhjYzhlLCAweGM2MDJ9LAorCXsweGNjOGYsIDB4MDExMX0sCisJezB4Y2M5MCwgMHhjNjBjfSwKKwl7MHhjYzkxLCAweDU5MDB9LAorCXsweGNjOTIsIDB4YzcxMH0sCisJezB4Y2M5MywgMHgwNzAwfSwKKwl7MHhjYzk0LCAweGM3MTh9LAorCXsweGNjOTUsIDB4MDcwMH0sCisJezB4Y2M5NiwgMHhjNzIwfSwKKwl7MHhjYzk3LCAweDQ3MDB9LAorCXsweGNjOTgsIDB4YzgwMX0sCisJezB4Y2M5OSwgMHg3ZjUwfSwKKwl7MHhjYzlhLCAweGM4MDJ9LAorCXsweGNjOWIsIDB4Nzc2MH0sCisJezB4Y2M5YywgMHhjODAzfSwKKwl7MHhjYzlkLCAweDdmY2V9LAorCXsweGNjOWUsIDB4YzgwNH0sCisJezB4Y2M5ZiwgMHg1NzAwfSwKKwl7MHhjY2EwLCAweGM4MDV9LAorCXsweGNjYTEsIDB4NWYxMX0sCisJezB4Y2NhMiwgMHhjODA2fSwKKwl7MHhjY2EzLCAweDQ3NTF9LAorCXsweGNjYTQsIDB4YzgwN30sCisJezB4Y2NhNSwgMHg1N2UxfSwKKwl7MHhjY2E2LCAweGM4MDh9LAorCXsweGNjYTcsIDB4MjcwMH0sCisJezB4Y2NhOCwgMHhjODA5fSwKKwl7MHhjY2E5LCAweDAwMDB9LAorCXsweGNjYWEsIDB4YzgyMX0sCisJezB4Y2NhYiwgMHgwMDAyfSwKKwl7MHhjY2FjLCAweGM4MjJ9LAorCXsweGNjYWQsIDB4MDAxNH0sCisJezB4Y2NhZSwgMHhjODMyfSwKKwl7MHhjY2FmLCAweDExODZ9LAorCXsweGNjYjAsIDB4Yzg0N30sCisJezB4Y2NiMSwgMHgxZTAyfSwKKwl7MHhjY2IyLCAweGMwMTN9LAorCXsweGNjYjMsIDB4ZjM0MX0sCisJezB4Y2NiNCwgMHhjMDFhfSwKKwl7MHhjY2I1LCAweDA0NDZ9LAorCXsweGNjYjYsIDB4YzAyNH0sCisJezB4Y2NiNywgMHgxMDAwfSwKKwl7MHhjY2I4LCAweGMwMjV9LAorCXsweGNjYjksIDB4MGEwMH0sCisJezB4Y2NiYSwgMHhjMDI2fSwKKwl7MHhjY2JiLCAweDBjMGN9LAorCXsweGNjYmMsIDB4YzAyN30sCisJezB4Y2NiZCwgMHgwYzBjfSwKKwl7MHhjY2JlLCAweGMwMjl9LAorCXsweGNjYmYsIDB4MDBhMH0sCisJezB4Y2NjMCwgMHhjMDMwfSwKKwl7MHhjY2MxLCAweDBhMDB9LAorCXsweGNjYzIsIDB4YzAzY30sCisJezB4Y2NjMywgMHgwMDFjfSwKKwl7MHhjY2M0LCAweGMwMDV9LAorCXsweGNjYzUsIDB4N2EwNn0sCisJezB4Y2NjNiwgMHgwMDAwfSwKKwl7MHhjY2M3LCAweDAwMDB9LAorCXsweGNjYzgsIDB4NjI4Zn0sCisJezB4Y2NjOSwgMHgyNmYyfSwKKwl7MHhjY2NhLCAweDMwMTJ9LAorCXsweGNjY2IsIDB4MTAwMn0sCisJezB4Y2NjYywgMHhjNjIwfSwKKwl7MHhjY2NkLCAweDAwMDB9LAorCXsweGNjY2UsIDB4YzYyMX0sCisJezB4Y2NjZiwgMHgwMDNmfSwKKwl7MHhjY2QwLCAweGM2MjJ9LAorCXsweGNjZDEsIDB4MDAwMH0sCisJezB4Y2NkMiwgMHhjNjIzfSwKKwl7MHhjY2QzLCAweDAwMDB9LAorCXsweGNjZDQsIDB4YzYyNH0sCisJezB4Y2NkNSwgMHgwMDAwfSwKKwl7MHhjY2Q2LCAweGM2MjV9LAorCXsweGNjZDcsIDB4MDAwMH0sCisJezB4Y2NkOCwgMHhjNjI3fSwKKwl7MHhjY2Q5LCAweDAwMDB9LAorCXsweGNjZGEsIDB4YzYyOH0sCisJezB4Y2NkYiwgMHgwMDAwfSwKKwl7MHhjY2RjLCAweGM2MmN9LAorCXsweGNjZGQsIDB4MDAwMH0sCisJezB4Y2NkZSwgMHgwMDAwfSwKKwl7MHhjY2RmLCAweDAwMDB9LAorCXsweGNjZTAsIDB4NjI4Zn0sCisJezB4Y2NlMSwgMHhkMDE5fSwKKwl7MHhjY2UyLCAweDI2ZjJ9LAorCXsweGNjZTMsIDB4MzAxMn0sCisJezB4Y2NlNCwgMHgxMDAyfSwKKwl7MHhjY2U1LCAweGMyMTB9LAorCXsweGNjZTYsIDB4ODAwMH0sCisJezB4Y2NlNywgMHhjMjEwfSwKKwl7MHhjY2U4LCAweDgwMTB9LAorCXsweGNjZTksIDB4YzIxMH0sCisJezB4Y2NlYSwgMHg4MDAwfSwKKwl7MHhjY2ViLCAweGMyMTB9LAorCXsweGNjZWMsIDB4MDAwMH0sCisJezB4Y2NlZCwgMHgwMDAwfSwKKwl7MHhjY2VlLCAweDAwMDB9LAorCXsweGNjZWYsIDB4ODIyMX0sCisJezB4Y2NmMCwgMHgyNzUyfSwKKwl7MHhjY2YxLCAweDMwMTJ9LAorCXsweGNjZjIsIDB4MTAwMn0sCisJezB4Y2NmMywgMHg2ZjcyfSwKKwl7MHhjY2Y0LCAweDEwMDJ9LAorCXsweGNjZjUsIDB4MjgwNn0sCisJezB4Y2NmNiwgMHgzMDA2fSwKKwl7MHhjY2Y3LCAweDIwMDd9LAorCXsweGNjZjgsIDB4M2NjN30sCisJezB4Y2NmOSwgMHhlMTYxfSwKKwl7MHhjY2ZhLCAweGMxNzF9LAorCXsweGNjZmIsIDB4NjEzNH0sCisJezB4Y2NmYywgMHg2MTM1fSwKKwl7MHhjY2ZkLCAweDU0NTN9LAorCXsweGNjZmUsIDB4Mjg1OH0sCisJezB4Y2NmZiwgMHgzMDE4fSwKKwl7MHhjZDAwLCAweDEzNDh9LAorCXsweGNkMDEsIDB4NjUyNH0sCisJezB4Y2QwMiwgMHgyN2I4fSwKKwl7MHhjZDAzLCAweDMwMTh9LAorCXsweGNkMDQsIDB4MTAwOH0sCisJezB4Y2QwNSwgMHgxMDAyfSwKKwl7MHhjZDA2LCAweDYyOGZ9LAorCXsweGNkMDcsIDB4NWRkM30sCisJezB4Y2QwOCwgMHgyOTA2fSwKKwl7MHhjZDA5LCAweDMwMTZ9LAorCXsweGNkMGEsIDB4MTMwNn0sCisJezB4Y2QwYiwgMHgyZmY3fSwKKwl7MHhjZDBjLCAweDMwZjd9LAorCXsweGNkMGQsIDB4NjBiN30sCisJezB4Y2QwZSwgMHhkZmZkfSwKKwl7MHhjZDBmLCAweDAwMDh9LAorCXsweGNkMTAsIDB4NmY3Mn0sCisJezB4Y2QxMSwgMHgxMDAyfSwKKwl7MHhjZDEyLCAweDAwMDB9LAorCXsweGNkZmYsIDB4MGEwMX0sCisJLyogZW5kIG9mIGNvZGUgYmxvY2sgKi8KKworCS8qIFVucGF1c2UgdGhlIG1pY3JvY29udHJvbGxlciB0byBzdGFydCBwcm9ncmFtICovCisJezB4Y2EwMCwgMHgwMDgwfSwKKwl7MHhjYTEyLCAweDAwMDB9LAorCXsweDAwMDAsIDB4MDAwQX0sCS8qIHdhaXQgMTBtcyBqdXN0IHRvIGJlIHNhZmUgKi8KKwl7MHhmZmZmLCAweGZmZmZ9CS8qIHRhYmxlIHRlcm1pbmF0b3IgKi8KK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MjYyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvS2NvbmZpZwpAQCAtMCwwICsxLDM2IEBACitjb25maWcgVVNCX0lQX0NPTU1PTgorCXRyaXN0YXRlICJVU0IgSVAgc3VwcG9ydCAoRVhQRVJJTUVOVEFMKSIKKwlkZXBlbmRzIG9uIFVTQiAmJiBFWFBFUklNRU5UQUwKKwlkZWZhdWx0IE4KKwktLS1oZWxwLS0tCisJICBUaGlzIGVuYWJsZXMgcHVzaGluZyBVU0IgcGFja2V0cyBvdmVyIElQIHRvIGFsbG93IHJlbW90ZQorCSAgbWFjaGluZXMgYWNjZXNzIHRvIFVTQiBkZXZpY2VzIGRpcmVjdGx5LiAgRm9yIG1vcmUgZGV0YWlscywKKwkgIGFuZCBsaW5rcyB0byB0aGUgdXNlcnNwYWNlIHV0aWxpdHkgcHJvZ3JhbXMgdG8gbGV0IHRoaXMgd29yaworCSAgcHJvcGVybHksIHNlZSBodHRwOi8vdXNiaXAubmFpc3QuanAvCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVzYmlwX2NvbW1vbl9tb2QuCisKKwkgIElmIHVuc3VyZSwgc2F5IE4uCisKK2NvbmZpZyBVU0JfSVBfVkhDSV9IQ0QKKwl0cmlzdGF0ZSAiVVNCIElQIGNsaWVudCBkcml2ZXIiCisJZGVwZW5kcyBvbiBVU0JfSVBfQ09NTU9OCisJZGVmYXVsdCBOCisJLS0taGVscC0tLQorCSBUaGlzIGVuYWJsZXMgdGhlIFVTQiBJUCBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIHdoaWNoIHdpbGwKKwkgcnVuIG9uIHRoZSBjbGllbnQgbWFjaGluZS4KKworCSBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHZoY2lfaGNkLgorCitjb25maWcgVVNCX0lQX0hPU1QKKwl0cmlzdGF0ZSAiVVNCIElQIGhvc3QgZHJpdmVyIgorCWRlcGVuZHMgb24gVVNCX0lQX0NPTU1PTgorCWRlZmF1bHQgTgorCS0tLWhlbHAtLS0KKwkgVGhpcyBlbmFibGVzIHRoZSBVU0IgSVAgZGV2aWNlIGRyaXZlciB3aGljaCB3aWxsIHJ1biBvbiB0aGUKKwkgaG9zdCBtYWNoaW5lLgorCisJIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNiaXAuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5ZjQyMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9NYWtlZmlsZQpAQCAtMCwwICsxLDEyIEBACitvYmotJChDT05GSUdfVVNCX0lQX0NPTU1PTikgKz0gdXNiaXBfY29tbW9uX21vZC5vCit1c2JpcF9jb21tb25fbW9kLW9ianMgOj0gdXNiaXBfY29tbW9uLm8gdXNiaXBfZXZlbnQubworCitvYmotJChDT05GSUdfVVNCX0lQX1ZIQ0lfSENEKSArPSB2aGNpLWhjZC5vCit2aGNpLWhjZC1vYmpzIDo9IHZoY2lfc3lzZnMubyB2aGNpX3R4Lm8gdmhjaV9yeC5vIHZoY2lfaGNkLm8KKworb2JqLSQoQ09ORklHX1VTQl9JUF9IT1NUKSArPSB1c2JpcC5vCit1c2JpcC1vYmpzIDo9IHN0dWJfZGV2Lm8gc3R1Yl9tYWluLm8gc3R1Yl9yeC5vIHN0dWJfdHgubworCitpZmVxICgkKENPTkZJR19VU0JfREVCVUcpLHkpCisJRVhUUkFfQ0ZMQUdTICs9IC1EREVCVUcKK2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvUkVBRE1FIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTFiZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL1JFQURNRQpAQCAtMCwwICsxLDYgQEAKK1RPRE86CisJLSBtb3JlIGRpc2N1c3Npb24gYWJvdXQgdGhlIHByb3RvY29sCisJLSB0ZXN0aW5nCisJLSByZXZpZXcgb2YgdGhlIHVzZXJzcGFjZSBpbnRlcmZhY2UKKworUGxlYXNlIHNlbmQgcGF0Y2hlcyBmb3IgdGhpcyBjb2RlIHRvIEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yi5oIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTQxYTNhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L25ldC5oPgorCitzdHJ1Y3Qgc3R1Yl9kZXZpY2UgeworCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCisJc3RydWN0IHVzYmlwX2RldmljZSB1ZDsKKwlfX3UzMiBkZXZpZDsKKworCS8qCisJICogc3R1Yl9wcml2IHByZXNlcnZlcyBwcml2YXRlIGRhdGEgb2YgZWFjaCB1cmIuCisJICogSXQgaXMgYWxsb2NhdGVkIGFzIHN0dWJfcHJpdl9jYWNoZSBhbmQgYXNzaWduZWQgdG8gdXJiLT5jb250ZXh0LgorCSAqCisJICogc3R1Yl9wcml2IGlzIGFsd2F5cyBsaW5rZWQgdG8gYW55IG9uZSBvZiAzIGxpc3RzOworCSAqCXByaXZfaW5pdDogbGlua2VkIHRvIHRoaXMgdW50aWwgdGhlIGNvbWxldGlvbiBvZiBhIHVyYi4KKwkgKglwcml2X3R4ICA6IGxpbmtlZCB0byB0aGlzIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIGEgdXJiLgorCSAqCXByaXZfZnJlZTogbGlua2VkIHRvIHRoaXMgYWZ0ZXIgdGhlIHNlbmRpbmcgb2YgdGhlIHJlc3VsdC4KKwkgKgorCSAqIEFueSBvZiB0aGVzZSBsaXN0IG9wZXJhdGlvbnMgc2hvdWxkIGJlIGxvY2tlZCBieSBwcml2X2xvY2suCisJICovCisJc3BpbmxvY2tfdCBwcml2X2xvY2s7CisJc3RydWN0IGxpc3RfaGVhZCBwcml2X2luaXQ7CisJc3RydWN0IGxpc3RfaGVhZCBwcml2X3R4OworCXN0cnVjdCBsaXN0X2hlYWQgcHJpdl9mcmVlOworCisJLyogc2VlIGNvbW1lbnRzIGZvciB1bmxpbmtpbmcgaW4gc3R1Yl9yeC5jICovCisJc3RydWN0IGxpc3RfaGVhZCB1bmxpbmtfdHg7CisJc3RydWN0IGxpc3RfaGVhZCB1bmxpbmtfZnJlZTsKKworCisJd2FpdF9xdWV1ZV9oZWFkX3QgdHhfd2FpdHE7Cit9OworCisvKiBwcml2YXRlIGRhdGEgaW50byB1cmItPnByaXYgKi8KK3N0cnVjdCBzdHViX3ByaXYgeworCXVuc2lnbmVkIGxvbmcgc2VxbnVtOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXY7CisJc3RydWN0IHVyYiAqdXJiOworCisJaW50IHVubGlua2luZzsKK307CisKK3N0cnVjdCBzdHViX3VubGluayB7CisJdW5zaWduZWQgbG9uZyBzZXFudW07CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCV9fdTMyIHN0YXR1czsKK307CisKKworZXh0ZXJuIHN0cnVjdCBrbWVtX2NhY2hlICpzdHViX3ByaXZfY2FjaGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgKi8KKworLyogc3R1Yl90eC5jICovCit2b2lkIHN0dWJfY29tcGxldGUoc3RydWN0IHVyYiAqKTsKK3ZvaWQgc3R1Yl90eF9sb29wKHN0cnVjdCB1c2JpcF90YXNrICopOworCisvKiBzdHViX2Rldi5jICovCitleHRlcm4gc3RydWN0IHVzYl9kcml2ZXIgc3R1Yl9kcml2ZXI7CisKKy8qIHN0dWJfcnguYyAqLwordm9pZCBzdHViX3J4X2xvb3Aoc3RydWN0IHVzYmlwX3Rhc2sgKik7Cit2b2lkIHN0dWJfZW5xdWV1ZV9yZXRfdW5saW5rKHN0cnVjdCBzdHViX2RldmljZSAqLCBfX3UzMiwgX191MzIpOworCisvKiBzdHViX21haW4uYyAqLworaW50IG1hdGNoX2J1c2lkKGNoYXIgKmJ1c2lkKTsKK3ZvaWQgc3R1Yl9kZXZpY2VfY2xlYW51cF91cmJzKHN0cnVjdCBzdHViX2RldmljZSAqc2Rldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9kZXYuYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX2Rldi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNDU1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9kZXYuYwpAQCAtMCwwICsxLDQ4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IFRha2FoaXJvIEhpcm9mdWNoaQorICoKKyAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgKiBVU0EuCisgKi8KKworI2luY2x1ZGUgInVzYmlwX2NvbW1vbi5oIgorI2luY2x1ZGUgInN0dWIuaCIKKworCisKK3N0YXRpYyBpbnQgc3R1Yl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAorCQkJCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7CitzdGF0aWMgdm9pZCBzdHViX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSk7CisKKworLyoKKyAqIERlZmluZSBkZXZpY2UgSURzIGhlcmUgaWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBsaW1pdCBleHBvcnRhYmxlIGRldmljZXMuCisgKiBJbiB0aGUgbW9zdCBjYXNlcywgd2lsZCBjYXJkIG1hdGNoaW5nIHdpbGwgYmUgb2sgYmVjYXVzZSBkcml2ZXIgYmluZGluZyBjYW4KKyAqIGJlIGNoYW5nZWQgZHluYW1pY2FsbHkgYnkgYSB1c2VybGFuZCBwcm9ncmFtLgorICovCitzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgc3R1Yl90YWJsZVtdID0geworI2lmIDAKKwkvKiBqdXN0IGFuIGV4YW1wbGUgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwNWFjLCAweDAzMDEpIH0sICAgLyogTWFjIDEgYnV0dG9uIG1vdXNlICovCisJeyBVU0JfREVWSUNFKDB4MDQzMCwgMHgwMDA5KSB9LCAgIC8qIFBsYXQgSG9tZSBLZXlib2FyZCAqLworCXsgVVNCX0RFVklDRSgweDA1OWIsIDB4MDAwMSkgfSwgICAvKiBJb21lZ2EgVVNCIFppcCAxMDAgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwNGIzLCAweDQ0MjcpIH0sICAgLyogSUJNIFVTQiBDRC1ST00gKi8KKwl7IFVTQl9ERVZJQ0UoMHgwNWE5LCAweGE1MTEpIH0sICAgLyogTGlmZVZpZXcgVVNCIGNhbSAqLworCXsgVVNCX0RFVklDRSgweDU1YWEsIDB4MDIwMSkgfSwgICAvKiBJbWF0aW9uIGNhcmQgcmVhZGVyICovCisJeyBVU0JfREVWSUNFKDB4MDQ2ZCwgMHgwODcwKSB9LCAgIC8qIFFjYW0gRXhwcmVzcyhRVi0zMCkgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwNGJiLCAweDAxMDEpIH0sICAgLyogSU8tREFUQSBIRCAxMjBHQiAqLworCXsgVVNCX0RFVklDRSgweDA0YmIsIDB4MDkwNCkgfSwgICAvKiBJTy1EQVRBIFVTQi1FVC9UWCAqLworCXsgVVNCX0RFVklDRSgweDA0YmIsIDB4MDIwMSkgfSwgICAvKiBJTy1EQVRBIFVTQi1FVC9UWCAqLworCXsgVVNCX0RFVklDRSgweDA4YmIsIDB4MjcwMikgfSwgICAvKiBPTktZTyBVU0IgU3BlYWtlciAqLworCXsgVVNCX0RFVklDRSgweDA0NmQsIDB4MDhiMikgfSwgICAvKiBMb2dpY29vbCBRY2FtIDQwMDAgUHJvICovCisjZW5kaWYKKwkvKiBtYWdpYyBmb3Igd2lsZCBjYXJkICovCisJeyAuZHJpdmVyX2luZm8gPSAxIH0sCisJeyAwLCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCit9OworTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHN0dWJfdGFibGUpOworCitzdHJ1Y3QgdXNiX2RyaXZlciBzdHViX2RyaXZlciA9IHsKKwkubmFtZQkJPSAidXNiaXAiLAorCS5wcm9iZQkJPSBzdHViX3Byb2JlLAorCS5kaXNjb25uZWN0CT0gc3R1Yl9kaXNjb25uZWN0LAorCS5pZF90YWJsZQk9IHN0dWJfdGFibGUsCit9OworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIERlZmluZSBzeXNmcyBlbnRyaWVzIGZvciBhIHVzYmlwLWJvdW5kIGRldmljZSAqLworCisKKy8qCisgKiB1c2JpcF9zdGF0dXMgc2hvd3Mgc3RhdHVzIG9mIHVzYmlwIGFzIGxvbmcgYXMgdGhpcyBkcml2ZXIgaXMgYm91bmQgdG8gdGhlCisgKiB0YXJnZXQgZGV2aWNlLgorICovCitzdGF0aWMgc3NpemVfdCBzaG93X3N0YXR1cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICAgY2hhciAqYnVmKQoreworCXN0cnVjdCBzdHViX2RldmljZSAqc2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCBzdGF0dXM7CisKKwlpZiAoIXNkZXYpIHsKKwkJZGV2X2VycihkZXYsICJzZGV2IGlzIG51bGxcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlzcGluX2xvY2soJnNkZXYtPnVkLmxvY2spOworCXN0YXR1cyA9IHNkZXYtPnVkLnN0YXR1czsKKwlzcGluX3VubG9jaygmc2Rldi0+dWQubG9jayk7CisKKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgc3RhdHVzKTsKK30KK3N0YXRpYyBERVZJQ0VfQVRUUih1c2JpcF9zdGF0dXMsIFNfSVJVR08sIHNob3dfc3RhdHVzLCBOVUxMKTsKKworLyoKKyAqIHVzYmlwX3NvY2tmZCBnZXRzIGEgc29ja2V0IGRlc2NyaXB0b3Igb2YgYW4gZXN0YWJsaXNoZWQgVENQIGNvbm5lY3Rpb24gdGhhdAorICogaXMgdXNlZCB0byB0cmFuc2ZlciB1c2JpcCByZXF1ZXN0cyBieSBrZXJuZWwgdGhyZWFkcy4gLTEgaXMgYSBtYWdpYyBudW1iZXIKKyAqIGJ5IHdoaWNoIHVzYmlwIGNvbm5lY3Rpb24gaXMgZmluaXNoZWQuCisgKi8KK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3NvY2tmZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzdHViX2RldmljZSAqc2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCBzb2NrZmQgPSAwOworCXN0cnVjdCBzb2NrZXQgKnNvY2tldDsKKworCWlmICghc2RldikgeworCQlkZXZfZXJyKGRldiwgInNkZXYgaXMgbnVsbFxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXNzY2FuZihidWYsICIlZCIsICZzb2NrZmQpOworCisJaWYgKHNvY2tmZCAhPSAtMSkgeworCQlkZXZfaW5mbyhkZXYsICJzdHViIHVwXG4iKTsKKworCQlzcGluX2xvY2soJnNkZXYtPnVkLmxvY2spOworCisJCWlmIChzZGV2LT51ZC5zdGF0dXMgIT0gU0RFVl9TVF9BVkFJTEFCTEUpIHsKKwkJCWRldl9lcnIoZGV2LCAibm90IHJlYWR5XG4iKTsKKwkJCXNwaW5fdW5sb2NrKCZzZGV2LT51ZC5sb2NrKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJc29ja2V0ID0gc29ja2ZkX3RvX3NvY2tldChzb2NrZmQpOworCQlpZiAoIXNvY2tldCkgeworCQkJc3Bpbl91bmxvY2soJnNkZXYtPnVkLmxvY2spOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworI2lmIDAKKwkJc2V0bm9kZWxheShzb2NrZXQpOworCQlzZXRrZWVwYWxpdmUoc29ja2V0KTsKKwkJc2V0cmV1c2Uoc29ja2V0KTsKKyNlbmRpZgorCisJCXNkZXYtPnVkLnRjcF9zb2NrZXQgPSBzb2NrZXQ7CisKKwkJc3Bpbl91bmxvY2soJnNkZXYtPnVkLmxvY2spOworCisJCXVzYmlwX3N0YXJ0X3RocmVhZHMoJnNkZXYtPnVkKTsKKworCQlzcGluX2xvY2soJnNkZXYtPnVkLmxvY2spOworCQlzZGV2LT51ZC5zdGF0dXMgPSBTREVWX1NUX1VTRUQ7CisJCXNwaW5fdW5sb2NrKCZzZGV2LT51ZC5sb2NrKTsKKworCX0gZWxzZSB7CisJCWRldl9pbmZvKGRldiwgInN0dWIgZG93blxuIik7CisKKwkJc3Bpbl9sb2NrKCZzZGV2LT51ZC5sb2NrKTsKKwkJaWYgKHNkZXYtPnVkLnN0YXR1cyAhPSBTREVWX1NUX1VTRUQpIHsKKwkJCXNwaW5fdW5sb2NrKCZzZGV2LT51ZC5sb2NrKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCXNwaW5fdW5sb2NrKCZzZGV2LT51ZC5sb2NrKTsKKworCQl1c2JpcF9ldmVudF9hZGQoJnNkZXYtPnVkLCBTREVWX0VWRU5UX0RPV04pOworCX0KKworCXJldHVybiBjb3VudDsKK30KK3N0YXRpYyBERVZJQ0VfQVRUUih1c2JpcF9zb2NrZmQsIFNfSVdVU1IsIE5VTEwsIHN0b3JlX3NvY2tmZCk7CisKK3N0YXRpYyBpbnQgc3R1Yl9hZGRfZmlsZXMoc3RydWN0IGRldmljZSAqZGV2KQoreworCWludCBlcnIgPSAwOworCisJZXJyID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX3VzYmlwX3N0YXR1cyk7CisJaWYgKGVycikKKwkJZ290byBlcnJfc3RhdHVzOworCisJZXJyID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX3VzYmlwX3NvY2tmZCk7CisJaWYgKGVycikKKwkJZ290byBlcnJfc29ja2ZkOworCisJZXJyID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX3VzYmlwX2RlYnVnKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9kZWJ1ZzsKKworCXJldHVybiAwOworCitlcnJfZGVidWc6CisJZGV2aWNlX3JlbW92ZV9maWxlKGRldiwgJmRldl9hdHRyX3VzYmlwX3NvY2tmZCk7CisKK2Vycl9zb2NrZmQ6CisJZGV2aWNlX3JlbW92ZV9maWxlKGRldiwgJmRldl9hdHRyX3VzYmlwX3N0YXR1cyk7CisKK2Vycl9zdGF0dXM6CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgc3R1Yl9yZW1vdmVfZmlsZXMoc3RydWN0IGRldmljZSAqZGV2KQoreworCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0cl91c2JpcF9zdGF0dXMpOworCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0cl91c2JpcF9zb2NrZmQpOworCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0cl91c2JpcF9kZWJ1Zyk7Cit9CisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBFdmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYW4gZXZlbnQgaGFuZGxlciB0aHJlYWQgKi8KKworc3RhdGljIHZvaWQgc3R1Yl9zaHV0ZG93bl9jb25uZWN0aW9uKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCXN0cnVjdCBzdHViX2RldmljZSAqc2RldiA9IGNvbnRhaW5lcl9vZih1ZCwgc3RydWN0IHN0dWJfZGV2aWNlLCB1ZCk7CisKKwkvKgorCSAqIFdoZW4gcmVtb3ZpbmcgYW4gZXhwb3J0ZWQgZGV2aWNlLCBrZXJuZWwgcGFuaWMgc29tZXRpbWVzIG9jY3VycmVkCisJICogYW5kIHRoZW4gRUlQIHdhcyBza193YWl0X2RhdGEgb2Ygc3R1Yl9yeCB0aHJlYWQuIElzIHRoaXMgYmVjYXVzZQorCSAqIHNrX3dhaXRfZGF0YSByZXR1cm5lZCB0aG91Z2ggc3R1Yl9yeCB0aHJlYWQgd2FzIGFscmVhZHkgZmluaXNoZWQgYnkKKwkgKiBzdGVwIDE/CisJICovCisJaWYgKHVkLT50Y3Bfc29ja2V0KSB7CisJCXVkYmcoInNodXRkb3duIHRjcF9zb2NrZXQgJXBcbiIsIHVkLT50Y3Bfc29ja2V0KTsKKwkJa2VybmVsX3NvY2tfc2h1dGRvd24odWQtPnRjcF9zb2NrZXQsIFNIVVRfUkRXUik7CisJfQorCisJLyogMS4gc3RvcCB0aHJlYWRzICovCisJdXNiaXBfc3RvcF90aHJlYWRzKHVkKTsKKworCS8qIDIuIGNsb3NlIHRoZSBzb2NrZXQgKi8KKwkvKgorCSAqIHRjcF9zb2NrZXQgaXMgZnJlZWQgYWZ0ZXIgdGhyZWFkcyBhcmUga2lsbGVkLgorCSAqIFNvIHVzYmlwX3htaXQgZG8gbm90IHRvdWNoIE5VTEwgc29ja2V0LgorCSAqLworCWlmICh1ZC0+dGNwX3NvY2tldCkgeworCQlzb2NrX3JlbGVhc2UodWQtPnRjcF9zb2NrZXQpOworCQl1ZC0+dGNwX3NvY2tldCA9IE5VTEw7CisJfQorCisJLyogMy4gZnJlZSB1c2VkIGRhdGEgKi8KKwlzdHViX2RldmljZV9jbGVhbnVwX3VyYnMoc2Rldik7CisKKwkvKiA0LiBmcmVlIHN0dWJfdW5saW5rICovCisJeworCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCQlzdHJ1Y3Qgc3R1Yl91bmxpbmsgKnVubGluaywgKnRtcDsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmc2Rldi0+cHJpdl9sb2NrLCBmbGFncyk7CisKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVubGluaywgdG1wLCAmc2Rldi0+dW5saW5rX3R4LCBsaXN0KSB7CisJCQlsaXN0X2RlbCgmdW5saW5rLT5saXN0KTsKKwkJCWtmcmVlKHVubGluayk7CisJCX0KKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodW5saW5rLCB0bXAsCisJCQkJCQkgJnNkZXYtPnVubGlua19mcmVlLCBsaXN0KSB7CisJCQlsaXN0X2RlbCgmdW5saW5rLT5saXN0KTsKKwkJCWtmcmVlKHVubGluayk7CisJCX0KKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHN0dWJfZGV2aWNlX3Jlc2V0KHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCXN0cnVjdCBzdHViX2RldmljZSAqc2RldiA9IGNvbnRhaW5lcl9vZih1ZCwgc3RydWN0IHN0dWJfZGV2aWNlLCB1ZCk7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHNkZXYtPmludGVyZmFjZSk7CisJaW50IHJldDsKKworCXVkYmcoImRldmljZSByZXNldCIpOworCXJldCA9IHVzYl9sb2NrX2RldmljZV9mb3JfcmVzZXQodWRldiwgc2Rldi0+aW50ZXJmYWNlKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZ1ZGV2LT5kZXYsICJsb2NrIGZvciByZXNldFxuIik7CisKKwkJc3Bpbl9sb2NrKCZ1ZC0+bG9jayk7CisJCXVkLT5zdGF0dXMgPSBTREVWX1NUX0VSUk9SOworCQlzcGluX3VubG9jaygmdWQtPmxvY2spOworCisJCXJldHVybjsKKwl9CisKKwkvKiB0cnkgdG8gcmVzZXQgdGhlIGRldmljZSAqLworCXJldCA9IHVzYl9yZXNldF9kZXZpY2UodWRldik7CisKKwl1c2JfdW5sb2NrX2RldmljZSh1ZGV2KTsKKworCXNwaW5fbG9jaygmdWQtPmxvY2spOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmdWRldi0+ZGV2LCAiZGV2aWNlIHJlc2V0XG4iKTsKKwkJdWQtPnN0YXR1cyA9IFNERVZfU1RfRVJST1I7CisKKwl9IGVsc2UgeworCQlkZXZfaW5mbygmdWRldi0+ZGV2LCAiZGV2aWNlIHJlc2V0XG4iKTsKKwkJdWQtPnN0YXR1cyA9IFNERVZfU1RfQVZBSUxBQkxFOworCisJfQorCXNwaW5fdW5sb2NrKCZ1ZC0+bG9jayk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0dWJfZGV2aWNlX3VudXNhYmxlKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCXNwaW5fbG9jaygmdWQtPmxvY2spOworCXVkLT5zdGF0dXMgPSBTREVWX1NUX0VSUk9SOworCXNwaW5fdW5sb2NrKCZ1ZC0+bG9jayk7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqCisgKiBzdHViX2RldmljZV9hbGxvYyAtIGFsbG9jYXRlIGEgbmV3IHN0dWJfZGV2aWNlIHN0cnVjdAorICogQGludGVyZmFjZTogdXNiX2ludGVyZmFjZSBvZiBhIG5ldyBkZXZpY2UKKyAqCisgKiBBbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIGEgbmV3IHN0dWJfZGV2aWNlIHN0cnVjdC4KKyAqLworc3RhdGljIHN0cnVjdCBzdHViX2RldmljZSAqc3R1Yl9kZXZpY2VfYWxsb2Moc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXY7CisJaW50IGJ1c251bSA9IGludGVyZmFjZV90b19idXNudW0oaW50ZXJmYWNlKTsKKwlpbnQgZGV2bnVtID0gaW50ZXJmYWNlX3RvX2Rldm51bShpbnRlcmZhY2UpOworCisJZGV2X2RiZygmaW50ZXJmYWNlLT5kZXYsICJhbGxvY2F0aW5nIHN0dWIgZGV2aWNlIik7CisKKwkvKiB5ZXMsIGl0J3MgYSBuZXcgZGV2aWNlICovCisJc2RldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzdHViX2RldmljZSksIEdGUF9LRVJORUwpOworCWlmICghc2RldikgeworCQlkZXZfZXJyKCZpbnRlcmZhY2UtPmRldiwgIm5vIG1lbW9yeSBmb3Igc3R1Yl9kZXZpY2VcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlzZGV2LT5pbnRlcmZhY2UgPSBpbnRlcmZhY2U7CisKKwkvKgorCSAqIGRldmlkIGlzIGRlZmluZWQgd2l0aCBkZXZudW0gd2hlbiB0aGlzIGRyaXZlciBpcyBmaXJzdCBhbGxvY2F0ZWQuCisJICogZGV2bnVtIG1heSBjaGFuZ2UgbGF0ZXIgaWYgYSBkZXZpY2UgaXMgcmVzZXQuIEhvd2V2ZXIsIGRldmlkIG5ldmVyCisJICogY2hhbmdlcyBkdXJpbmcgYSB1c2JpcCBjb25uZWN0aW9uLgorCSAqLworCXNkZXYtPmRldmlkICAgICA9IChidXNudW0gPDwgMTYpIHwgZGV2bnVtOworCisJdXNiaXBfdGFza19pbml0KCZzZGV2LT51ZC50Y3BfcngsICJzdHViX3J4Iiwgc3R1Yl9yeF9sb29wKTsKKwl1c2JpcF90YXNrX2luaXQoJnNkZXYtPnVkLnRjcF90eCwgInN0dWJfdHgiLCBzdHViX3R4X2xvb3ApOworCisJc2Rldi0+dWQuc2lkZSA9IFVTQklQX1NUVUI7CisJc2Rldi0+dWQuc3RhdHVzID0gU0RFVl9TVF9BVkFJTEFCTEU7CisJLyogc2Rldi0+dWQubG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsgKi8KKwlzcGluX2xvY2tfaW5pdCgmc2Rldi0+dWQubG9jayk7CisJc2Rldi0+dWQudGNwX3NvY2tldCA9IE5VTEw7CisKKwlJTklUX0xJU1RfSEVBRCgmc2Rldi0+cHJpdl9pbml0KTsKKwlJTklUX0xJU1RfSEVBRCgmc2Rldi0+cHJpdl90eCk7CisJSU5JVF9MSVNUX0hFQUQoJnNkZXYtPnByaXZfZnJlZSk7CisJSU5JVF9MSVNUX0hFQUQoJnNkZXYtPnVubGlua19mcmVlKTsKKwlJTklUX0xJU1RfSEVBRCgmc2Rldi0+dW5saW5rX3R4KTsKKwkvKiBzZGV2LT5wcml2X2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7ICovCisJc3Bpbl9sb2NrX2luaXQoJnNkZXYtPnByaXZfbG9jayk7CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZGV2LT50eF93YWl0cSk7CisKKwlzZGV2LT51ZC5laF9vcHMuc2h1dGRvd24gPSBzdHViX3NodXRkb3duX2Nvbm5lY3Rpb247CisJc2Rldi0+dWQuZWhfb3BzLnJlc2V0ICAgID0gc3R1Yl9kZXZpY2VfcmVzZXQ7CisJc2Rldi0+dWQuZWhfb3BzLnVudXNhYmxlID0gc3R1Yl9kZXZpY2VfdW51c2FibGU7CisKKwl1c2JpcF9zdGFydF9laCgmc2Rldi0+dWQpOworCisJdWRiZygicmVnaXN0ZXIgbmV3IGludGVyZmFjZVxuIik7CisJcmV0dXJuIHNkZXY7Cit9CisKK3N0YXRpYyBpbnQgc3R1Yl9kZXZpY2VfZnJlZShzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYpCit7CisJaWYgKCFzZGV2KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWtmcmVlKHNkZXYpOworCXVkYmcoImtmcmVlIHVkZXYgb2tcbiIpOworCisJcmV0dXJuIDA7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoKKyAqIElmIGEgdXNiIGRldmljZSBoYXMgbXVsdGlwbGUgYWN0aXZlIGludGVyZmFjZXMsIHRoaXMgZHJpdmVyIGlzIGJvdW5kIHRvIGFsbAorICogdGhlIGFjdGl2ZSBpbnRlcmZhY2VzLiBIb3dldmVyLCB1c2JpcCBleHBvcnRzICphKiB1c2IgZGV2aWNlIChpLmUuLCBub3QgKmFuKgorICogYWN0aXZlIGludGVyZmFjZSkuIEN1cnJlbnRseSwgYSB1c2VybGFuZCBwcm9ncmFtIG11c3QgZW5zdXJlIHRoYXQgaXQKKyAqIGxvb2tzIGF0IHRoZSB1c2JpcCdzIHN5c2ZzIGVudHJpZXMgb2Ygb25seSB0aGUgZmlyc3QgYWN0aXZlIGludGVyZmFjZS4KKyAqCisgKiBUT0RPOiB1c2UgInN0cnVjdCB1c2JfZGV2aWNlX2RyaXZlciIgdG8gYmluZCBhIHVzYiBkZXZpY2UuCisgKiBIb3dldmVyLCBpdCBzZWVtcyBpdCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIG1haW5saW5lIGtlcm5lbCB5ZXQKKyAqICgyLjYuMTkuMikuCisgKi8KK3N0YXRpYyBpbnQgc3R1Yl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7CisJc3RydWN0IHN0dWJfZGV2aWNlICpzZGV2ID0gTlVMTDsKKwljaGFyICp1ZGV2X2J1c2lkID0gaW50ZXJmYWNlLT5kZXYucGFyZW50LT5idXNfaWQ7CisJaW50IGVyciA9IDA7CisKKwlkZXZfZGJnKCZpbnRlcmZhY2UtPmRldiwgIkVudGVyXG4iKTsKKworCS8qIGNoZWNrIHdlIHNob3VsZCBjbGFpbSBvciBub3QgYnkgYnVzaWRfdGFibGUgKi8KKwlpZiAobWF0Y2hfYnVzaWQodWRldl9idXNpZCkpIHsKKwkJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LAorCQkJICJ0aGlzIGRldmljZSAlcyBpcyBub3QgaW4gbWF0Y2hfYnVzaWQgdGFibGUuIHNraXAhXG4iLAorCQkJIHVkZXZfYnVzaWQpOworCisJCS8qCisJCSAqIFJldHVybiB2YWx1ZSBzaG91bGQgYmUgRU5PREVWIG9yIEVOT1hJTyB0byBjb250aW51ZSB0cnlpbmcKKwkJICogb3RoZXIgbWF0Y2hlZCBkcml2ZXJzIGJ5IHRoZSBkcml2ZXIgY29yZS4KKwkJICogU2VlIGRyaXZlcl9wcm9iZV9kZXZpY2UoKSBpbiBkcml2ZXIvYmFzZS9kZC5jCisJCSAqLworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlpZiAodWRldi0+ZGVzY3JpcHRvci5iRGV2aWNlQ2xhc3MgPT0gIFVTQl9DTEFTU19IVUIpIHsKKwkJdWRiZygidGhpcyBkZXZpY2UgJXMgaXMgYSB1c2IgaHViIGRldmljZS4gc2tpcCFcbiIsCisJCQkJCQkJCXVkZXZfYnVzaWQpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlpZiAoIXN0cmNtcCh1ZGV2LT5idXMtPmJ1c19uYW1lLCAidmhjaV9oY2QiKSkgeworCQl1ZGJnKCJ0aGlzIGRldmljZSAlcyBpcyBhdHRhY2hlZCBvbiB2aGNpX2hjZC4gc2tpcCFcbiIsCisJCQkJCQkJCXVkZXZfYnVzaWQpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBvay4gdGhpcyBpcyBteSBkZXZpY2UuICovCisJc2RldiA9IHN0dWJfZGV2aWNlX2FsbG9jKGludGVyZmFjZSk7CisJaWYgKCFzZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldl9pbmZvKCZpbnRlcmZhY2UtPmRldiwgIlVTQi9JUCBTdHViOiByZWdpc3RlciBhIG5ldyBpbnRlcmZhY2UgIgorCQkgIihidXMgJXUgZGV2ICV1IGlmbiAldSlcbiIsIHVkZXYtPmJ1cy0+YnVzbnVtLCB1ZGV2LT5kZXZudW0sCisJCSBpbnRlcmZhY2UtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJJbnRlcmZhY2VOdW1iZXIpOworCisJLyogc2V0IHByaXZhdGUgZGF0YSB0byB1c2JfaW50ZXJmYWNlICovCisJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIHNkZXYpOworCisJZXJyID0gc3R1Yl9hZGRfZmlsZXMoJmludGVyZmFjZS0+ZGV2KTsKKwlpZiAoZXJyKSB7CisJCWRldl9lcnIoJmludGVyZmFjZS0+ZGV2LCAiY3JlYXRlIHN5c2ZzIGZpbGVzIGZvciAlc1xuIiwKKwkJCXVkZXZfYnVzaWQpOworCQlyZXR1cm4gZXJyOworCX0KKworCXJldHVybiAwOworfQorCisKKy8qCisgKiBjYWxsZWQgaW4gdXNiX2Rpc2Nvbm5lY3QoKSBvciB1c2JfZGVyZWdpc3RlcigpCisgKiBidXQgb25seSBpZiBhY3Rjb25maWcoYWN0aXZlIGNvbmZpZ3VyYXRpb24pIGV4aXN0cworICovCitzdGF0aWMgdm9pZCBzdHViX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7CisKKwl1ZGJnKCJFbnRlclxuIik7CisKKwkvKiBnZXQgc3R1Yl9kZXZpY2UgKi8KKwlpZiAoIXNkZXYpIHsKKwkJZXJyKCIgY291bGQgbm90IGdldCBkZXZpY2UgZnJvbSBpbnRlZmFjZSBkYXRhIik7CisJCS8qIEJVRygpOyAqLworCQlyZXR1cm47CisJfQorCisJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpOworCisKKwkvKgorCSAqIE5PVEU6CisJICogcngvdHggdGhyZWFkcyBhcmUgaW52b2tlZCBmb3IgZWFjaCB1c2JfZGV2aWNlLgorCSAqLworCXN0dWJfcmVtb3ZlX2ZpbGVzKCZpbnRlcmZhY2UtPmRldik7CisKKwkvKiAxLiBzaHV0ZG93biB0aGUgY3VycmVudCBjb25uZWN0aW9uICovCisJdXNiaXBfZXZlbnRfYWRkKCZzZGV2LT51ZCwgU0RFVl9FVkVOVF9SRU1PVkVEKTsKKworCS8qIDIuIHdhaXQgZm9yIHRoZSBzdG9wIG9mIHRoZSBldmVudCBoYW5kbGVyICovCisJdXNiaXBfc3RvcF9laCgmc2Rldi0+dWQpOworCisJLyogMy4gZnJlZSBzZGV2ICovCisJc3R1Yl9kZXZpY2VfZnJlZShzZGV2KTsKKworCisJdWRiZygiYnllXG4iKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX21haW4uYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjY1ZDdmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWJfbWFpbi5jCkBAIC0wLDAgKzEsMzAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisKKyNpbmNsdWRlICJ1c2JpcF9jb21tb24uaCIKKyNpbmNsdWRlICJzdHViLmgiCisKKy8qIFZlcnNpb24gSW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gIjEuMCIKKyNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiVGFrYWhpcm8gSGlyb2Z1Y2hpIgorI2RlZmluZSBEUklWRVJfREVTQyAiU3R1YiBEcml2ZXIgZm9yIFVTQi9JUCIKKworLyogc3R1Yl9wcml2IGlzIGFsbG9jYXRlZCBmcm9tIHN0dWJfcHJpdl9jYWNoZSAqLworc3RydWN0IGttZW1fY2FjaGUgKnN0dWJfcHJpdl9jYWNoZTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogRGVmaW5lIHN5c2ZzIGVudHJpZXMgZm9yIHRoZSB1c2JpcCBkcml2ZXIgKi8KKworCisvKgorICogYnVzaWRfdGFibGVzIGRlZmluZXMgbWF0Y2hpbmcgYnVzaWRzIHRoYXQgdXNiaXAgY2FuIGdyYWIuIEEgdXNlciBjYW4gY2hhbmdlCisgKiBkeW5hbWljYWxseSB3aGF0IGRldmljZSBpcyBsb2NhbGx5IHVzZWQgYW5kIHdoYXQgZGV2aWNlIGlzIGV4cG9ydGVkIHRvIGEKKyAqIHJlbW90ZSBob3N0LgorICovCisjZGVmaW5lIE1BWF9CVVNJRCAxNgorc3RhdGljIGNoYXIgYnVzaWRfdGFibGVbTUFYX0JVU0lEXVtCVVNfSURfU0laRV07CitzdGF0aWMgc3BpbmxvY2tfdCBidXNpZF90YWJsZV9sb2NrOworCisKK2ludCBtYXRjaF9idXNpZChjaGFyICpidXNpZCkKK3sKKwlpbnQgaTsKKworCXNwaW5fbG9jaygmYnVzaWRfdGFibGVfbG9jayk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVU0lEOyBpKyspCisJCWlmIChidXNpZF90YWJsZVtpXVswXSkKKwkJCWlmICghc3RybmNtcChidXNpZF90YWJsZVtpXSwgYnVzaWQsIEJVU19JRF9TSVpFKSkgeworCQkJCS8qIGFscmVhZHkgcmVnaXN0ZXJkICovCisJCQkJc3Bpbl91bmxvY2soJmJ1c2lkX3RhYmxlX2xvY2spOworCQkJCXJldHVybiAwOworCQkJfQorCisJc3Bpbl91bmxvY2soJmJ1c2lkX3RhYmxlX2xvY2spOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfbWF0Y2hfYnVzaWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgY2hhciAqYnVmKQoreworCWludCBpOworCWNoYXIgKm91dCA9IGJ1ZjsKKworCXNwaW5fbG9jaygmYnVzaWRfdGFibGVfbG9jayk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVU0lEOyBpKyspCisJCWlmIChidXNpZF90YWJsZVtpXVswXSkKKwkJCW91dCArPSBzcHJpbnRmKG91dCwgIiVzICIsIGJ1c2lkX3RhYmxlW2ldKTsKKworCXNwaW5fdW5sb2NrKCZidXNpZF90YWJsZV9sb2NrKTsKKworCW91dCArPSBzcHJpbnRmKG91dCwgIlxuIik7CisKKwlyZXR1cm4gb3V0IC0gYnVmOworfQorCitzdGF0aWMgaW50IGFkZF9tYXRjaF9idXNpZChjaGFyICpidXNpZCkKK3sKKwlpbnQgaTsKKworCWlmICghbWF0Y2hfYnVzaWQoYnVzaWQpKQorCQlyZXR1cm4gMDsKKworCXNwaW5fbG9jaygmYnVzaWRfdGFibGVfbG9jayk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVU0lEOyBpKyspCisJCWlmICghYnVzaWRfdGFibGVbaV1bMF0pIHsKKwkJCXN0cm5jcHkoYnVzaWRfdGFibGVbaV0sIGJ1c2lkLCBCVVNfSURfU0laRSk7CisJCQlzcGluX3VubG9jaygmYnVzaWRfdGFibGVfbG9jayk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJc3Bpbl91bmxvY2soJmJ1c2lkX3RhYmxlX2xvY2spOworCisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IGRlbF9tYXRjaF9idXNpZChjaGFyICpidXNpZCkKK3sKKwlpbnQgaTsKKworCXNwaW5fbG9jaygmYnVzaWRfdGFibGVfbG9jayk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVU0lEOyBpKyspCisJCWlmICghc3RybmNtcChidXNpZF90YWJsZVtpXSwgYnVzaWQsIEJVU19JRF9TSVpFKSkgeworCQkJLyogZm91bmQgKi8KKwkJCW1lbXNldChidXNpZF90YWJsZVtpXSwgMCwgQlVTX0lEX1NJWkUpOworCQkJc3Bpbl91bmxvY2soJmJ1c2lkX3RhYmxlX2xvY2spOworCQkJcmV0dXJuIDA7CisJCX0KKworCXNwaW5fdW5sb2NrKCZidXNpZF90YWJsZV9sb2NrKTsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfbWF0Y2hfYnVzaWQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRldiwgY29uc3QgY2hhciAqYnVmLAorCQlzaXplX3QgY291bnQpCit7CisJaW50IGxlbjsKKwljaGFyIGJ1c2lkW0JVU19JRF9TSVpFXTsKKworCWlmIChjb3VudCA8IDUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogc3RybmxlbigpIGRvZXMgbm90IGluY2x1ZGUgXDAgKi8KKwlsZW4gPSBzdHJubGVuKGJ1ZiArIDQsIEJVU19JRF9TSVpFKTsKKworCS8qIGJ1c2lkIG5lZWRzIHRvIGluY2x1ZGUgXDAgdGVybWluYXRpb24gKi8KKwlpZiAoIShsZW4gPCBCVVNfSURfU0laRSkpCisJCXJldHVybiAtRUlOVkFMOworCisJc3RybmNweShidXNpZCwgYnVmICsgNCwgQlVTX0lEX1NJWkUpOworCisKKwlpZiAoIXN0cm5jbXAoYnVmLCAiYWRkICIsIDQpKSB7CisJCWlmIChhZGRfbWF0Y2hfYnVzaWQoYnVzaWQpIDwgMCkKKwkJCXJldHVybiAtRU5PTUVNOworCQllbHNlIHsKKwkJCXVkYmcoImFkZCBidXNpZCAlc1xuIiwgYnVzaWQpOworCQkJcmV0dXJuIGNvdW50OworCQl9CisJfSBlbHNlIGlmICghc3RybmNtcChidWYsICJkZWwgIiwgNCkpIHsKKwkJaWYgKGRlbF9tYXRjaF9idXNpZChidXNpZCkgPCAwKQorCQkJcmV0dXJuIC1FTk9ERVY7CisJCWVsc2UgeworCQkJdWRiZygiZGVsIGJ1c2lkICVzXG4iLCBidXNpZCk7CisJCQlyZXR1cm4gY291bnQ7CisJCX0KKwl9IGVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBEUklWRVJfQVRUUihtYXRjaF9idXNpZCwgU19JUlVTUnxTX0lXVVNSLCBzaG93X21hdGNoX2J1c2lkLAorCQkJCQkJCXN0b3JlX21hdGNoX2J1c2lkKTsKKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIENsZWFudXAgZnVuY3Rpb25zIHVzZWQgdG8gZnJlZSBwcml2YXRlIGRhdGEgKi8KKworc3RhdGljIHN0cnVjdCBzdHViX3ByaXYgKnN0dWJfcHJpdl9wb3BfZnJvbV9saXN0aGVhZChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0aGVhZCkKK3sKKwlzdHJ1Y3Qgc3R1Yl9wcml2ICpwcml2LCAqdG1wOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHByaXYsIHRtcCwgbGlzdGhlYWQsIGxpc3QpIHsKKwkJbGlzdF9kZWwoJnByaXYtPmxpc3QpOworCQlyZXR1cm4gcHJpdjsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHN0cnVjdCBzdHViX3ByaXYgKnN0dWJfcHJpdl9wb3Aoc3RydWN0IHN0dWJfZGV2aWNlICpzZGV2KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IHN0dWJfcHJpdiAqcHJpdjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCXByaXYgPSBzdHViX3ByaXZfcG9wX2Zyb21fbGlzdGhlYWQoJnNkZXYtPnByaXZfaW5pdCk7CisJaWYgKHByaXYpIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Rldi0+cHJpdl9sb2NrLCBmbGFncyk7CisJCXJldHVybiBwcml2OworCX0KKworCXByaXYgPSBzdHViX3ByaXZfcG9wX2Zyb21fbGlzdGhlYWQoJnNkZXYtPnByaXZfdHgpOworCWlmIChwcml2KSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCQlyZXR1cm4gcHJpdjsKKwl9CisKKwlwcml2ID0gc3R1Yl9wcml2X3BvcF9mcm9tX2xpc3RoZWFkKCZzZGV2LT5wcml2X2ZyZWUpOworCWlmIChwcml2KSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCQlyZXR1cm4gcHJpdjsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBzdHViX2RldmljZV9jbGVhbnVwX3VyYnMoc3RydWN0IHN0dWJfZGV2aWNlICpzZGV2KQoreworCXN0cnVjdCBzdHViX3ByaXYgKnByaXY7CisKKwl1ZGJnKCJmcmVlIHNkZXYgJXBcbiIsIHNkZXYpOworCisJd2hpbGUgKChwcml2ID0gc3R1Yl9wcml2X3BvcChzZGV2KSkpIHsKKwkJc3RydWN0IHVyYiAqdXJiID0gcHJpdi0+dXJiOworCisJCXVkYmcoIiAgIGZyZWUgdXJiICVwXG4iLCB1cmIpOworCQl1c2Jfa2lsbF91cmIodXJiKTsKKworCQlrbWVtX2NhY2hlX2ZyZWUoc3R1Yl9wcml2X2NhY2hlLCBwcml2KTsKKworCQlpZiAodXJiLT50cmFuc2Zlcl9idWZmZXIgIT0gTlVMTCkKKwkJCWtmcmVlKHVyYi0+dHJhbnNmZXJfYnVmZmVyKTsKKworCQlpZiAodXJiLT5zZXR1cF9wYWNrZXQgIT0gTlVMTCkKKwkJCWtmcmVlKHVyYi0+c2V0dXBfcGFja2V0KTsKKworCQl1c2JfZnJlZV91cmIodXJiKTsKKwl9Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBfX2luaXQgdXNiX3N0dWJfaW5pdCh2b2lkKQoreworCWludCByZXQ7CisKKwlzdHViX3ByaXZfY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZSgic3R1Yl9wcml2IiwKKwkJCQkJICAgIHNpemVvZihzdHJ1Y3Qgc3R1Yl9wcml2KSwgMCwKKwkJCQkJICAgIFNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCk7CisKKwlpZiAoIXN0dWJfcHJpdl9jYWNoZSkgeworCQlwcmludGsoS0VSTl9FUlIgS0JVSUxEX01PRE5BTUUKKwkJICAgICAgICI6IGNyZWF0ZSBzdHViX3ByaXZfY2FjaGUgZXJyb3JcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyZXQgPSB1c2JfcmVnaXN0ZXIoJnN0dWJfZHJpdmVyKTsKKwlpZiAocmV0KSB7CisJCXByaW50ayhLRVJOX0VSUiBLQlVJTERfTU9ETkFNRSAiOiB1c2JfcmVnaXN0ZXIgZmFpbGVkICVkXG4iLAorCQkgICAgICAgcmV0KTsKKwkJZ290byBlcnJvcl91c2JfcmVnaXN0ZXI7CisJfQorCisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIjoiIERSSVZFUl9WRVJTSU9OICJcbiIpOworCisJbWVtc2V0KGJ1c2lkX3RhYmxlLCAwLCBzaXplb2YoYnVzaWRfdGFibGUpKTsKKwlzcGluX2xvY2tfaW5pdCgmYnVzaWRfdGFibGVfbG9jayk7CisKKwlyZXQgPSBkcml2ZXJfY3JlYXRlX2ZpbGUoJnN0dWJfZHJpdmVyLmRydndyYXAuZHJpdmVyLAorCQkJCSAmZHJpdmVyX2F0dHJfbWF0Y2hfYnVzaWQpOworCisJaWYgKHJldCkgeworCQlwcmludGsoS0VSTl9FUlIgS0JVSUxEX01PRE5BTUUgIjogY3JlYXRlIGRyaXZlciBzeXNmc1xuIik7CisJCWdvdG8gZXJyb3JfY3JlYXRlX2ZpbGU7CisJfQorCisJcmV0dXJuIHJldDsKK2Vycm9yX2NyZWF0ZV9maWxlOgorCXVzYl9kZXJlZ2lzdGVyKCZzdHViX2RyaXZlcik7CitlcnJvcl91c2JfcmVnaXN0ZXI6CisJa21lbV9jYWNoZV9kZXN0cm95KHN0dWJfcHJpdl9jYWNoZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHVzYl9zdHViX2V4aXQodm9pZCkKK3sKKwlkcml2ZXJfcmVtb3ZlX2ZpbGUoJnN0dWJfZHJpdmVyLmRydndyYXAuZHJpdmVyLAorCQkJICAgJmRyaXZlcl9hdHRyX21hdGNoX2J1c2lkKTsKKworCS8qCisJICogZGVyZWdpc3RlcigpIGNhbGxzIHN0dWJfZGlzY29ubmVjdCgpIGZvciBhbGwgZGV2aWNlcy4gRGV2aWNlCisJICogc3BlY2lmaWMgZGF0YSBpcyBjbGVhcmVkIGluIHN0dWJfZGlzY29ubmVjdCgpLgorCSAqLworCXVzYl9kZXJlZ2lzdGVyKCZzdHViX2RyaXZlcik7CisKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koc3R1Yl9wcml2X2NhY2hlKTsKK30KKworbW9kdWxlX2luaXQodXNiX3N0dWJfaW5pdCk7Cittb2R1bGVfZXhpdCh1c2Jfc3R1Yl9leGl0KTsKKworTU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTsKK01PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWJfcnguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmNlODk4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWJfcnguYwpAQCAtMCwwICsxLDYxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IFRha2FoaXJvIEhpcm9mdWNoaQorICoKKyAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgKiBVU0EuCisgKi8KKworI2luY2x1ZGUgInVzYmlwX2NvbW1vbi5oIgorI2luY2x1ZGUgInN0dWIuaCIKKyNpbmNsdWRlICIuLi8uLi91c2IvY29yZS9oY2QuaCIKKworCitzdGF0aWMgaW50IGlzX2NsZWFyX2hhbHRfY21kKHN0cnVjdCB1cmIgKnVyYikKK3sKKwlzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpyZXE7CisKKwlyZXEgPSAoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqKSB1cmItPnNldHVwX3BhY2tldDsKKworCSByZXR1cm4gKHJlcS0+YlJlcXVlc3QgPT0gVVNCX1JFUV9DTEVBUl9GRUFUVVJFKSAmJgorCQkgKHJlcS0+YlJlcXVlc3RUeXBlID09IFVTQl9SRUNJUF9FTkRQT0lOVCkgJiYKKwkJIChyZXEtPndWYWx1ZSA9PSBVU0JfRU5EUE9JTlRfSEFMVCk7Cit9CisKK3N0YXRpYyBpbnQgaXNfc2V0X2ludGVyZmFjZV9jbWQoc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKnJlcTsKKworCXJlcSA9IChzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICopIHVyYi0+c2V0dXBfcGFja2V0OworCisJcmV0dXJuIChyZXEtPmJSZXF1ZXN0ID09IFVTQl9SRVFfU0VUX0lOVEVSRkFDRSkgJiYKKwkJICAgKHJlcS0+YlJlcXVlc3RUeXBlID09IFVTQl9SRUNJUF9JTlRFUkZBQ0UpOworfQorCitzdGF0aWMgaW50IGlzX3NldF9jb25maWd1cmF0aW9uX2NtZChzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqcmVxOworCisJcmVxID0gKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikgdXJiLT5zZXR1cF9wYWNrZXQ7CisKKwlyZXR1cm4gKHJlcS0+YlJlcXVlc3QgPT0gVVNCX1JFUV9TRVRfQ09ORklHVVJBVElPTikgJiYKKwkJICAgKHJlcS0+YlJlcXVlc3RUeXBlID09IFVTQl9SRUNJUF9ERVZJQ0UpOworfQorCitzdGF0aWMgaW50IGlzX3Jlc2V0X2RldmljZV9jbWQoc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKnJlcTsKKwlfX3UxNiB2YWx1ZTsKKwlfX3UxNiBpbmRleDsKKworCXJlcSA9IChzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICopIHVyYi0+c2V0dXBfcGFja2V0OworCXZhbHVlID0gbGUxNl90b19jcHUocmVxLT53VmFsdWUpOworCWluZGV4ID0gbGUxNl90b19jcHUocmVxLT53SW5kZXgpOworCisJaWYgKChyZXEtPmJSZXF1ZXN0ID09IFVTQl9SRVFfU0VUX0ZFQVRVUkUpICYmCisJCQkocmVxLT5iUmVxdWVzdFR5cGUgPT0gVVNCX1JUX1BPUlQpICYmCisJCQkodmFsdWUgPSBVU0JfUE9SVF9GRUFUX1JFU0VUKSkgeworCQlkYmdfc3R1Yl9yeCgicmVzZXRfZGV2aWNlX2NtZCwgcG9ydCAldVxuIiwgaW5kZXgpOworCQlyZXR1cm4gMTsKKwl9IGVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdHdlYWtfY2xlYXJfaGFsdF9jbWQoc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKnJlcTsKKwlpbnQgdGFyZ2V0X2VuZHA7CisJaW50IHRhcmdldF9kaXI7CisJaW50IHRhcmdldF9waXBlOworCWludCByZXQ7CisKKwlyZXEgPSAoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqKSB1cmItPnNldHVwX3BhY2tldDsKKworCS8qCisJICogVGhlIHN0YWxsZWQgZW5kcG9pbnQgaXMgc3BlY2lmaWVkIGluIHRoZSB3SW5kZXggdmFsdWUuIFRoZSBlbmRwb2ludAorCSAqIG9mIHRoZSB1cmIgaXMgdGhlIHRhcmdldCBvZiB0aGlzIGNsZWFyX2hhbHQgcmVxdWVzdCAoaS5lLiwgY29udHJvbAorCSAqIGVuZHBvaW50KS4KKwkgKi8KKwl0YXJnZXRfZW5kcCA9IGxlMTZfdG9fY3B1KHJlcS0+d0luZGV4KSAmIDB4MDAwZjsKKworCS8qIHRoZSBzdGFsbGVkIGVuZHBvaW50IGRpcmVjdGlvbiBpcyBJTiBvciBPVVQ/LiBVU0JfRElSX0lOIGlzIDB4ODAuICAqLworCXRhcmdldF9kaXIgPSBsZTE2X3RvX2NwdShyZXEtPndJbmRleCkgJiAweDAwODA7CisKKwlpZiAodGFyZ2V0X2RpcikKKwkJdGFyZ2V0X3BpcGUgPSB1c2JfcmN2Y3RybHBpcGUodXJiLT5kZXYsIHRhcmdldF9lbmRwKTsKKwllbHNlCisJCXRhcmdldF9waXBlID0gdXNiX3NuZGN0cmxwaXBlKHVyYi0+ZGV2LCB0YXJnZXRfZW5kcCk7CisKKwlyZXQgPSB1c2JfY2xlYXJfaGFsdCh1cmItPmRldiwgdGFyZ2V0X3BpcGUpOworCWlmIChyZXQgPCAwKQorCQl1aW5mbygiY2xlYXJfaGFsdCBlcnJvcjogZGV2bnVtICVkIGVuZHAgJWQsICVkXG4iLAorCQkJCXVyYi0+ZGV2LT5kZXZudW0sIHRhcmdldF9lbmRwLCByZXQpOworCWVsc2UKKwkJdWluZm8oImNsZWFyX2hhbHQgZG9uZTogZGV2bnVtICVkIGVuZHAgJWRcbiIsCisJCQkJdXJiLT5kZXYtPmRldm51bSwgdGFyZ2V0X2VuZHApOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB0d2Vha19zZXRfaW50ZXJmYWNlX2NtZChzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqcmVxOworCV9fdTE2IGFsdGVybmF0ZTsKKwlfX3UxNiBpbnRlcmZhY2U7CisJaW50IHJldDsKKworCXJlcSA9IChzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICopIHVyYi0+c2V0dXBfcGFja2V0OworCWFsdGVybmF0ZSA9IGxlMTZfdG9fY3B1KHJlcS0+d1ZhbHVlKTsKKwlpbnRlcmZhY2UgPSBsZTE2X3RvX2NwdShyZXEtPndJbmRleCk7CisKKwlkYmdfc3R1Yl9yeCgic2V0X2ludGVyZmFjZTogaW5mICV1IGFsdCAldVxuIiwgaW50ZXJmYWNlLCBhbHRlcm5hdGUpOworCisJcmV0ID0gdXNiX3NldF9pbnRlcmZhY2UodXJiLT5kZXYsIGludGVyZmFjZSwgYWx0ZXJuYXRlKTsKKwlpZiAocmV0IDwgMCkKKwkJdWluZm8oInNldF9pbnRlcmZhY2UgZXJyb3I6IGluZiAldSBhbHQgJXUsICVkXG4iLAorCQkJCWludGVyZmFjZSwgYWx0ZXJuYXRlLCByZXQpOworCWVsc2UKKwkJdWluZm8oInNldF9pbnRlcmZhY2UgZG9uZTogaW5mICV1IGFsdCAldVxuIiwKKwkJCQkJCQlpbnRlcmZhY2UsCisJCQkJCQkJYWx0ZXJuYXRlKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdHdlYWtfc2V0X2NvbmZpZ3VyYXRpb25fY21kKHN0cnVjdCB1cmIgKnVyYikKK3sKKwlzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpyZXE7CisJX191MTYgY29uZmlnOworCisJcmVxID0gKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikgdXJiLT5zZXR1cF9wYWNrZXQ7CisJY29uZmlnID0gbGUxNl90b19jcHUocmVxLT53VmFsdWUpOworCisJLyoKKwkgKiBJIGhhdmUgbmV2ZXIgc2VlbiBhIG11bHRpLWNvbmZpZyBkZXZpY2UuIFZlcnkgcmFyZS4KKwkgKiBGb3IgbW9zdCBkZXZpY2VzLCB0aGlzIHdpbGwgYmUgY2FsbGVkIHRvIGNob29zZSBhIGRlZmF1bHQKKwkgKiBjb25maWd1cmF0aW9uIG9ubHkgb25jZSBpbiBhbiBpbml0aWFsaXphdGlvbiBwaGFzZS4KKwkgKgorCSAqIHNldF9jb25maWd1cmF0aW9uIG1heSBjaGFuZ2UgYSBkZXZpY2UgY29uZmlndXJhdGlvbiBhbmQgaXRzIGRldmljZQorCSAqIGRyaXZlcnMgd2lsbCBiZSB1bmJvdW5kIGFuZCBhc3NpZ25lZCBmb3IgYSBuZXcgZGV2aWNlIGNvbmZpZ3VyYXRpb24uCisJICogVGhpcyBtZWFucyB0aGlzIHVzYmlwIGRyaXZlciB3aWxsIGJlIGFsc28gdW5ib3VuZCB3aGVuIGNhbGxlZCwgdGhlbgorCSAqIGV2ZW50dWFsbHkgcmVhc3NpZ25lZCB0byB0aGUgZGV2aWNlIGFzIGZhciBhcyBkcml2ZXIgbWF0Y2hpbmcKKwkgKiBjb25kaXRpb24gaXMga2VwdC4KKwkgKgorCSAqIFVuZm9ydHVuYXRlbGx5LCBhbiBleGlzdGluZyB1c2JpcCBjb25uZWN0aW9uIHdpbGwgYmUgZHJvcHBlZAorCSAqIGR1ZSB0byB0aGlzIGRyaXZlciB1bmJpbmRpbmcuIFNvLCBza2lwIGhlcmUuCisJICogQSB1c2VyIG1heSBuZWVkIHRvIHNldCBhIHNwZWNpYWwgY29uZmlndXJhdGlvbiB2YWx1ZSBiZWZvcmUKKwkgKiBleHBvcnRpbmcgdGhlIGRldmljZS4KKwkgKi8KKwl1aW5mbygic2V0X2NvbmZpZ3VyYXRpb24gKCVkKSB0byAlc1xuIiwgY29uZmlnLCB1cmItPmRldi0+ZGV2LmJ1c19pZCk7CisJdWluZm8oImJ1dCwgc2tpcCFcbiIpOworCisJcmV0dXJuIDA7CisJLyogcmV0dXJuIHVzYl9kcml2ZXJfc2V0X2NvbmZpZ3VyYXRpb24odXJiLT5kZXYsIGNvbmZpZyk7ICovCit9CisKK3N0YXRpYyBpbnQgdHdlYWtfcmVzZXRfZGV2aWNlX2NtZChzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqcmVxOworCV9fdTE2IHZhbHVlOworCV9fdTE2IGluZGV4OworCWludCByZXQ7CisKKwlyZXEgPSAoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqKSB1cmItPnNldHVwX3BhY2tldDsKKwl2YWx1ZSA9IGxlMTZfdG9fY3B1KHJlcS0+d1ZhbHVlKTsKKwlpbmRleCA9IGxlMTZfdG9fY3B1KHJlcS0+d0luZGV4KTsKKworCXVpbmZvKCJyZXNldF9kZXZpY2UgKHBvcnQgJWQpIHRvICVzXG4iLCBpbmRleCwgdXJiLT5kZXYtPmRldi5idXNfaWQpOworCisJLyogYWxsIGludGVyZmFjZXMgc2hvdWxkIGJlIG93bmVkIGJ5IHVzYmlwIGRyaXZlciwgc28ganVzdCByZXNldCBpdC4gICovCisJcmV0ID0gdXNiX2xvY2tfZGV2aWNlX2Zvcl9yZXNldCh1cmItPmRldiwgTlVMTCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycigmdXJiLT5kZXYtPmRldiwgImxvY2sgZm9yIHJlc2V0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiB0cnkgdG8gcmVzZXQgdGhlIGRldmljZSAqLworCXJldCA9IHVzYl9yZXNldF9kZXZpY2UodXJiLT5kZXYpOworCWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKCZ1cmItPmRldi0+ZGV2LCAiZGV2aWNlIHJlc2V0XG4iKTsKKworCXVzYl91bmxvY2tfZGV2aWNlKHVyYi0+ZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBjbGVhcl9oYWx0LCBzZXRfaW50ZXJmYWNlLCBhbmQgc2V0X2NvbmZpZ3VyYXRpb24gcmVxdWlyZSBzcGVjaWFsIHRyaWNrcy4KKyAqLworc3RhdGljIHZvaWQgdHdlYWtfc3BlY2lhbF9yZXF1ZXN0cyhzdHJ1Y3QgdXJiICp1cmIpCit7CisJaWYgKCF1cmIgfHwgIXVyYi0+c2V0dXBfcGFja2V0KQorCQlyZXR1cm47CisKKwlpZiAodXNiX3BpcGV0eXBlKHVyYi0+cGlwZSkgIT0gUElQRV9DT05UUk9MKQorCQlyZXR1cm47CisKKwlpZiAoaXNfY2xlYXJfaGFsdF9jbWQodXJiKSkKKwkJLyogdHdlYWsgY2xlYXJfaGFsdCAqLworCQkgdHdlYWtfY2xlYXJfaGFsdF9jbWQodXJiKTsKKworCWVsc2UgaWYgKGlzX3NldF9pbnRlcmZhY2VfY21kKHVyYikpCisJCS8qIHR3ZWFrIHNldF9pbnRlcmZhY2UgKi8KKwkJdHdlYWtfc2V0X2ludGVyZmFjZV9jbWQodXJiKTsKKworCWVsc2UgaWYgKGlzX3NldF9jb25maWd1cmF0aW9uX2NtZCh1cmIpKQorCQkvKiB0d2VhayBzZXRfY29uZmlndXJhdGlvbiAqLworCQl0d2Vha19zZXRfY29uZmlndXJhdGlvbl9jbWQodXJiKTsKKworCWVsc2UgaWYgKGlzX3Jlc2V0X2RldmljZV9jbWQodXJiKSkKKwkJdHdlYWtfcmVzZXRfZGV2aWNlX2NtZCh1cmIpOworCWVsc2UKKwkJZGJnX3N0dWJfcngoIm5vIG5lZWQgdG8gdHdlYWtcbiIpOworfQorCisvKgorICogc3R1Yl9yZWN2X3VubGluaygpIHVubGlua3MgdGhlIFVSQiBieSBhIGNhbGwgdG8gdXNiX3VubGlua191cmIoKS4KKyAqIEJ5IHVubGlua2luZyB0aGUgdXJiIGFzeW5jaHJvbm91c2x5LCBzdHViX3J4IGNhbiBjb250aW51b3VzbHkKKyAqIHByb2Nlc3MgY29taW5nIHVyYnMuICBFdmVuIGlmIHRoZSB1cmIgaXMgdW5saW5rZWQsIGl0cyBjb21wbGV0aW9uCisgKiBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGFuZCBzdHViX3R4IHdpbGwgc2VuZCBhIHJldHVybiBwZHUuCisgKgorICogU2VlIGFsc28gY29tbWVudHMgYWJvdXQgdW5saW5raW5nIHN0cmF0ZWd5IGluIHZoY2lfaGNkLmMuCisgKi8KK3N0YXRpYyBpbnQgc3R1Yl9yZWN2X2NtZF91bmxpbmsoc3RydWN0IHN0dWJfZGV2aWNlICpzZGV2LAorCQkJCQkJc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1KQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3RoZWFkID0gJnNkZXYtPnByaXZfaW5pdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwdHI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXN0cnVjdCBzdHViX3ByaXYgKnByaXY7CisKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCWZvciAocHRyID0gbGlzdGhlYWQtPm5leHQ7IHB0ciAhPSBsaXN0aGVhZDsgcHRyID0gcHRyLT5uZXh0KSB7CisJCXByaXYgPSBsaXN0X2VudHJ5KHB0ciwgc3RydWN0IHN0dWJfcHJpdiwgbGlzdCk7CisJCWlmIChwcml2LT5zZXFudW0gPT0gcGR1LT51LmNtZF91bmxpbmsuc2VxbnVtKSB7CisJCQlpbnQgcmV0OworCisJCQlkZXZfaW5mbygmcHJpdi0+dXJiLT5kZXYtPmRldiwgInVubGluayB1cmIgJXBcbiIsCisJCQkJIHByaXYtPnVyYik7CisKKwkJCS8qCisJCQkgKiBUaGlzIG1hdGNoZWQgdXJiIGlzIG5vdCBjb21wbGV0ZWQgeWV0IChpLmUuLCBiZSBpbgorCQkJICogZmxpZ2h0IGluIHVzYiBoY2QgaGFyZHdhcmUvZHJpdmVyKS4gTm93IHdlIGFyZQorCQkJICogY2FuY2VsbGluZyBpdC4gVGhlIHVubGlua2luZyBmbGFnIG1lYW5zIHRoYXQgd2UgYXJlCisJCQkgKiBub3cgbm90IGdvaW5nIHRvIHJldHVybiB0aGUgbm9ybWFsIHJlc3VsdCBwZHUgb2YgYQorCQkJICogc3VibWlzc2lvbiByZXF1ZXN0LCBidXQgZ29pbmcgdG8gcmV0dXJuIGEgcmVzdWx0IHBkdQorCQkJICogb2YgdGhlIHVubGluayByZXF1ZXN0LgorCQkJICovCisJCQlwcml2LT51bmxpbmtpbmcgPSAxOworCisJCQkvKgorCQkJICogSW4gdGhlIGNhc2UgdGhhdCB1bmxpbmtpbmcgZmxhZyBpcyBvbiwgcHJldi0+c2VxbnVtCisJCQkgKiBpcyBjaGFuZ2VkIGZyb20gdGhlIHNlcW51bSBvZiB0aGUgY2FuY2VsbGluZyB1cmIgdG8KKwkJCSAqIHRoZSBzZXFudW0gb2YgdGhlIHVubGluayByZXF1ZXN0LiBUaGlzIHdpbGwgYmUgdXNlZAorCQkJICogdG8gbWFrZSB0aGUgcmVzdWx0IHBkdSBvZiB0aGUgdW5saW5rIHJlcXVlc3QuCisJCQkgKi8KKwkJCXByaXYtPnNlcW51bSA9IHBkdS0+YmFzZS5zZXFudW07CisKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJCQkvKgorCQkJICogdXNiX3VubGlua191cmIoKSBpcyBub3cgb3V0IG9mIHNwaW5sb2NraW5nIHRvIGF2b2lkCisJCQkgKiBzcGlubG9jayByZWN1cnNpb24gc2luY2Ugc3R1Yl9jb21wbGV0ZSgpIGlzCisJCQkgKiBzb21ldGltZXMgY2FsbGVkIGluIHRoaXMgY29udGV4dCBidXQgbm90IGluIHRoZQorCQkJICogaW50ZXJydXB0IGNvbnRleHQuICBJZiBzdHViX2NvbXBsZXRlKCkgaXMgZXhlY3V0ZWQKKwkJCSAqIGJlZm9yZSB3ZSBjYWxsIHVzYl91bmxpbmtfdXJiKCksIHVzYl91bmxpbmtfdXJiKCkKKwkJCSAqIHdpbGwgcmV0dXJuIGFuIGVycm9yIHZhbHVlLiBJbiB0aGlzIGNhc2UsIHN0dWJfdHgKKwkJCSAqIHdpbGwgcmV0dXJuIHRoZSByZXN1bHQgcGR1IG9mIHRoaXMgdW5saW5rIHJlcXVlc3QKKwkJCSAqIHRob3VnaCBzdWJtaXNzaW9uIGlzIGNvbXBsZXRlZCBhbmQgYWN0dWFsIHVubGlua2luZworCQkJICogaXMgbm90IGV4ZWN1dGVkLiBPSz8KKwkJCSAqLworCQkJLyogSW4gdGhlIGFib3ZlIGNhc2UsIHVyYi0+c3RhdHVzIGlzIG5vdCAtRUNPTk5SRVNFVCwKKwkJCSAqIHNvIGEgZHJpdmVyIGluIGEgY2xpZW50IGhvc3Qgd2lsbCBrbm93IHRoZSBmYWlsdXJlCisJCQkgKiBvZiB0aGUgdW5saW5rIHJlcXVlc3QgPworCQkJICovCisJCQlyZXQgPSB1c2JfdW5saW5rX3VyYihwcml2LT51cmIpOworCQkJaWYgKHJldCAhPSAtRUlOUFJPR1JFU1MpCisJCQkJZGV2X2VycigmcHJpdi0+dXJiLT5kZXYtPmRldiwKKwkJCQkJImZhaWxlZCB0byB1bmxpbmsgYSB1cmIgJXAsIHJldCAlZFxuIiwKKwkJCQkJcHJpdi0+dXJiLCByZXQpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlkYmdfc3R1Yl9yeCgic2VxbnVtICVkIGlzIG5vdCBwZW5kaW5nXG4iLCBwZHUtPnUuY21kX3VubGluay5zZXFudW0pOworCisJLyoKKwkgKiBUaGUgdXJiIG9mIHRoZSB1bmxpbmsgdGFyZ2V0IGlzIG5vdCBmb3VuZCBpbiBwcml2X2luaXQgcXVldWUuIEl0IHdhcworCSAqIGFscmVhZHkgY29tcGxldGVkIGFuZCBpdHMgcmVzdWx0cyBpcy93YXMgZ29pbmcgdG8gYmUgc2VudCBieSBhCisJICogQ01EX1JFVCBwZHUuIEluIHRoaXMgY2FzZSwgdXNiX3VubGlua191cmIoKSBpcyBub3QgbmVlZGVkLiBXZSBvbmx5CisJICogcmV0dXJuIHRoZSBjb21wbGV0ZW5lc3Mgb2YgdGhpcyB1bmxpbmsgcmVxdWVzdCB0byB2aGNpX2hjZC4KKwkgKi8KKwlzdHViX2VucXVldWVfcmV0X3VubGluayhzZGV2LCBwZHUtPmJhc2Uuc2VxbnVtLCAwKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2YWxpZF9yZXF1ZXN0KHN0cnVjdCBzdHViX2RldmljZSAqc2Rldiwgc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1KQoreworCXN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkID0gJnNkZXYtPnVkOworCisJaWYgKHBkdS0+YmFzZS5kZXZpZCA9PSBzZGV2LT5kZXZpZCkgeworCQlzcGluX2xvY2soJnVkLT5sb2NrKTsKKwkJaWYgKHVkLT5zdGF0dXMgPT0gU0RFVl9TVF9VU0VEKSB7CisJCQkvKiBBIHJlcXVlc3QgaXMgdmFsaWQuICovCisJCQlzcGluX3VubG9jaygmdWQtPmxvY2spOworCQkJcmV0dXJuIDE7CisJCX0KKwkJc3Bpbl91bmxvY2soJnVkLT5sb2NrKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzdHViX3ByaXYgKnN0dWJfcHJpdl9hbGxvYyhzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYsCisJCQkJCSBzdHJ1Y3QgdXNiaXBfaGVhZGVyICpwZHUpCit7CisJc3RydWN0IHN0dWJfcHJpdiAqcHJpdjsKKwlzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCA9ICZzZGV2LT51ZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJcHJpdiA9IGttZW1fY2FjaGVfYWxsb2Moc3R1Yl9wcml2X2NhY2hlLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXByaXYpIHsKKwkJZGV2X2Vycigmc2Rldi0+aW50ZXJmYWNlLT5kZXYsICJhbGxvYyBzdHViX3ByaXZcbiIpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKwkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCXJldHVybiBOVUxMOworCX0KKworCW1lbXNldChwcml2LCAwLCBzaXplb2Yoc3RydWN0IHN0dWJfcHJpdikpOworCisJcHJpdi0+c2VxbnVtID0gcGR1LT5iYXNlLnNlcW51bTsKKwlwcml2LT5zZGV2ID0gc2RldjsKKworCS8qCisJICogQWZ0ZXIgYSBzdHViX3ByaXYgaXMgbGlua2VkIHRvIGEgbGlzdF9oZWFkLAorCSAqIG91ciBlcnJvciBoYW5kbGVyIGNhbiBmcmVlIGFsbG9jYXRlZCBkYXRhLgorCSAqLworCWxpc3RfYWRkX3RhaWwoJnByaXYtPmxpc3QsICZzZGV2LT5wcml2X2luaXQpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Rldi0+cHJpdl9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gcHJpdjsKK30KKworCitzdGF0aWMgc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICpnZXRfZXBfZnJvbV9lcG51bShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKKwkJaW50IGVwbnVtMCkKK3sKKwlzdHJ1Y3QgdXNiX2hvc3RfY29uZmlnICpjb25maWc7CisJaW50IGkgPSAwLCBqID0gMDsKKwlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKmVwID0gTlVMTDsKKwlpbnQgZXBudW07CisJaW50IGZvdW5kID0gMDsKKworCWlmIChlcG51bTAgPT0gMCkKKwkJcmV0dXJuICZ1ZGV2LT5lcDA7CisKKwljb25maWcgPSB1ZGV2LT5hY3Rjb25maWc7CisJaWYgKCFjb25maWcpCisJCXJldHVybiBOVUxMOworCisJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+ZGVzYy5iTnVtSW50ZXJmYWNlczsgaSsrKSB7CisJCXN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKnNldHRpbmc7CisKKwkJc2V0dGluZyA9IGNvbmZpZy0+aW50ZXJmYWNlW2ldLT5jdXJfYWx0c2V0dGluZzsKKworCQlmb3IgKGogPSAwOyBqIDwgc2V0dGluZy0+ZGVzYy5iTnVtRW5kcG9pbnRzOyBqKyspIHsKKwkJCWVwID0gJnNldHRpbmctPmVuZHBvaW50W2pdOworCQkJZXBudW0gPSAoZXAtPmRlc2MuYkVuZHBvaW50QWRkcmVzcyAmIDB4N2YpOworCisJCQlpZiAoZXBudW0gPT0gZXBudW0wKSB7CisJCQkJLyogdWluZm8oImZvdW5kIGVwbnVtICVkXG4iLCBlcG51bTApOyAqLworCQkJCWZvdW5kID0gMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmIChmb3VuZCkKKwkJcmV0dXJuIGVwOworCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIGludCBnZXRfcGlwZShzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYsIGludCBlcG51bSwgaW50IGRpcikKK3sKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoc2Rldi0+aW50ZXJmYWNlKTsKKwlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKmVwOworCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBkID0gTlVMTDsKKworCWVwID0gZ2V0X2VwX2Zyb21fZXBudW0odWRldiwgZXBudW0pOworCWlmICghZXApIHsKKwkJZGV2X2Vycigmc2Rldi0+aW50ZXJmYWNlLT5kZXYsICJubyBzdWNoIGVuZHBvaW50PywgJWRcbiIsCisJCQllcG51bSk7CisJCUJVRygpOworCX0KKworCWVwZCA9ICZlcC0+ZGVzYzsKKworCisjaWYgMAorCS8qIGVwbnVtIDAgaXMgYWx3YXlzIGNvbnRyb2wgKi8KKwlpZiAoZXBudW0gPT0gMCkgeworCQlpZiAoZGlyID09IFVTQklQX0RJUl9PVVQpCisJCQlyZXR1cm4gdXNiX3NuZGN0cmxwaXBlKHVkZXYsIDApOworCQllbHNlCisJCQlyZXR1cm4gdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDApOworCX0KKyNlbmRpZgorCisJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2NvbnRyb2woZXBkKSkgeworCQlpZiAoZGlyID09IFVTQklQX0RJUl9PVVQpCisJCQlyZXR1cm4gdXNiX3NuZGN0cmxwaXBlKHVkZXYsIGVwbnVtKTsKKwkJZWxzZQorCQkJcmV0dXJuIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCBlcG51bSk7CisJfQorCisJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZXBkKSkgeworCQlpZiAoZGlyID09IFVTQklQX0RJUl9PVVQpCisJCQlyZXR1cm4gdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIGVwbnVtKTsKKwkJZWxzZQorCQkJcmV0dXJuIHVzYl9yY3ZidWxrcGlwZSh1ZGV2LCBlcG51bSk7CisJfQorCisJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2ludChlcGQpKSB7CisJCWlmIChkaXIgPT0gVVNCSVBfRElSX09VVCkKKwkJCXJldHVybiB1c2Jfc25kaW50cGlwZSh1ZGV2LCBlcG51bSk7CisJCWVsc2UKKwkJCXJldHVybiB1c2JfcmN2aW50cGlwZSh1ZGV2LCBlcG51bSk7CisJfQorCisJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2lzb2MoZXBkKSkgeworCQlpZiAoZGlyID09IFVTQklQX0RJUl9PVVQpCisJCQlyZXR1cm4gdXNiX3NuZGlzb2NwaXBlKHVkZXYsIGVwbnVtKTsKKwkJZWxzZQorCQkJcmV0dXJuIHVzYl9yY3Zpc29jcGlwZSh1ZGV2LCBlcG51bSk7CisJfQorCisJLyogTk9UIFJFQUNIRUQgKi8KKwlkZXZfZXJyKCZzZGV2LT5pbnRlcmZhY2UtPmRldiwgImdldCBwaXBlLCBlcG51bSAlZFxuIiwgZXBudW0pOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzdHViX3JlY3ZfY21kX3N1Ym1pdChzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYsCisJCQkJIHN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdSkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBzdHViX3ByaXYgKnByaXY7CisJc3RydWN0IHVzYmlwX2RldmljZSAqdWQgPSAmc2Rldi0+dWQ7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHNkZXYtPmludGVyZmFjZSk7CisJaW50IHBpcGUgPSBnZXRfcGlwZShzZGV2LCBwZHUtPmJhc2UuZXAsIHBkdS0+YmFzZS5kaXJlY3Rpb24pOworCisKKwlwcml2ID0gc3R1Yl9wcml2X2FsbG9jKHNkZXYsIHBkdSk7CisJaWYgKCFwcml2KQorCQlyZXR1cm47CisKKwkvKiBzZXR1cCBhIHVyYiAqLworCWlmICh1c2JfcGlwZWlzb2MocGlwZSkpCisJCXByaXYtPnVyYiA9IHVzYl9hbGxvY191cmIocGR1LT51LmNtZF9zdWJtaXQubnVtYmVyX29mX3BhY2tldHMsCisJCQkJCQkJCUdGUF9LRVJORUwpOworCWVsc2UKKwkJcHJpdi0+dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKKworCWlmICghcHJpdi0+dXJiKSB7CisJCWRldl9lcnIoJnNkZXYtPmludGVyZmFjZS0+ZGV2LCAibWFsbG9jIHVyYlxuIik7CisJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgU0RFVl9FVkVOVF9FUlJPUl9NQUxMT0MpOworCQlyZXR1cm47CisJfQorCisJLyogc2V0IHByaXYtPnVyYi0+dHJhbnNmZXJfYnVmZmVyICovCisJaWYgKHBkdS0+dS5jbWRfc3VibWl0LnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPiAwKSB7CisJCXByaXYtPnVyYi0+dHJhbnNmZXJfYnVmZmVyID0KKwkJCWt6YWxsb2MocGR1LT51LmNtZF9zdWJtaXQudHJhbnNmZXJfYnVmZmVyX2xlbmd0aCwKKwkJCQkJCQkJR0ZQX0tFUk5FTCk7CisJCWlmICghcHJpdi0+dXJiLT50cmFuc2Zlcl9idWZmZXIpIHsKKwkJCWRldl9lcnIoJnNkZXYtPmludGVyZmFjZS0+ZGV2LCAibWFsbG9jIHhfYnVmZlxuIik7CisJCQl1c2JpcF9ldmVudF9hZGQodWQsIFNERVZfRVZFTlRfRVJST1JfTUFMTE9DKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCS8qIHNldCBwcml2LT51cmItPnNldHVwX3BhY2tldCAqLworCXByaXYtPnVyYi0+c2V0dXBfcGFja2V0ID0ga3phbGxvYyg4LCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYtPnVyYi0+c2V0dXBfcGFja2V0KSB7CisJCWRldl9lcnIoJnNkZXYtPmludGVyZmFjZS0+ZGV2LCAiYWxsb2NhdGUgc2V0dXBfcGFja2V0XG4iKTsKKwkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCXJldHVybjsKKwl9CisJbWVtY3B5KHByaXYtPnVyYi0+c2V0dXBfcGFja2V0LCAmcGR1LT51LmNtZF9zdWJtaXQuc2V0dXAsIDgpOworCisJLyogc2V0IG90aGVyIG1lbWJlcnMgZnJvbSB0aGUgYmFzZSBoZWFkZXIgb2YgcGR1ICovCisJcHJpdi0+dXJiLT5jb250ZXh0ICAgICAgICAgICAgICAgID0gKHZvaWQgKikgcHJpdjsKKwlwcml2LT51cmItPmRldiAgICAgICAgICAgICAgICAgICAgPSB1ZGV2OworCXByaXYtPnVyYi0+cGlwZSAgICAgICAgICAgICAgICAgICA9IHBpcGU7CisJcHJpdi0+dXJiLT5jb21wbGV0ZSAgICAgICAgICAgICAgID0gc3R1Yl9jb21wbGV0ZTsKKworCXVzYmlwX3BhY2tfcGR1KHBkdSwgcHJpdi0+dXJiLCBVU0JJUF9DTURfU1VCTUlULCAwKTsKKworCisJaWYgKHVzYmlwX3JlY3ZfeGJ1ZmYodWQsIHByaXYtPnVyYikgPCAwKQorCQlyZXR1cm47CisKKwlpZiAodXNiaXBfcmVjdl9pc28odWQsIHByaXYtPnVyYikgPCAwKQorCQlyZXR1cm47CisKKwkvKiBubyBuZWVkIHRvIHN1Ym1pdCBhbiBpbnRlcmNlcHRlZCByZXF1ZXN0LCBidXQgaGFybWxlc3M/ICovCisJdHdlYWtfc3BlY2lhbF9yZXF1ZXN0cyhwcml2LT51cmIpOworCisJLyogdXJiIGlzIG5vdyByZWFkeSB0byBzdWJtaXQgKi8KKwlyZXQgPSB1c2Jfc3VibWl0X3VyYihwcml2LT51cmIsIEdGUF9LRVJORUwpOworCisJaWYgKHJldCA9PSAwKQorCQlkYmdfc3R1Yl9yeCgic3VibWl0IHVyYiBvaywgc2VxbnVtICV1XG4iLCBwZHUtPmJhc2Uuc2VxbnVtKTsKKwllbHNlIHsKKwkJZGV2X2Vycigmc2Rldi0+aW50ZXJmYWNlLT5kZXYsICJzdWJtaXRfdXJiIGVycm9yLCAlZFxuIiwgcmV0KTsKKwkJdXNiaXBfZHVtcF9oZWFkZXIocGR1KTsKKwkJdXNiaXBfZHVtcF91cmIocHJpdi0+dXJiKTsKKworCQkvKgorCQkgKiBQZXNzaW1pc3RpYy4KKwkJICogVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgZGlzY2FyZGVkLgorCQkgKi8KKwkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX1NVQk1JVCk7CisJfQorCisJZGJnX3N0dWJfcngoIkxlYXZlXG4iKTsKKwlyZXR1cm47Cit9CisKKy8qIHJlY3YgYSBwZHUgKi8KK3N0YXRpYyB2b2lkIHN0dWJfcnhfcGR1KHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCWludCByZXQ7CisJc3RydWN0IHVzYmlwX2hlYWRlciBwZHU7CisJc3RydWN0IHN0dWJfZGV2aWNlICpzZGV2ID0gY29udGFpbmVyX29mKHVkLCBzdHJ1Y3Qgc3R1Yl9kZXZpY2UsIHVkKTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmc2Rldi0+aW50ZXJmYWNlLT5kZXY7CisKKwlkYmdfc3R1Yl9yeCgiRW50ZXJcbiIpOworCisJbWVtc2V0KCZwZHUsIDAsIHNpemVvZihwZHUpKTsKKworCS8qIDEuIHJlY2VpdmUgYSBwZHUgaGVhZGVyICovCisJcmV0ID0gdXNiaXBfeG1pdCgwLCB1ZC0+dGNwX3NvY2tldCwgKGNoYXIgKikgJnBkdSwgc2l6ZW9mKHBkdSksIDApOworCWlmIChyZXQgIT0gc2l6ZW9mKHBkdSkpIHsKKwkJZGV2X2VycihkZXYsICJyZWN2IGEgaGVhZGVyLCAlZFxuIiwgcmV0KTsKKwkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX1RDUCk7CisJCXJldHVybjsKKwl9CisKKwl1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4oJnBkdSwgMCk7CisKKwlpZiAoZGJnX2ZsYWdfc3R1Yl9yeCkKKwkJdXNiaXBfZHVtcF9oZWFkZXIoJnBkdSk7CisKKwlpZiAoIXZhbGlkX3JlcXVlc3Qoc2RldiwgJnBkdSkpIHsKKwkJZGV2X2VycihkZXYsICJyZWN2IGludmFsaWQgcmVxdWVzdFxuIik7CisJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgU0RFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQlyZXR1cm47CisJfQorCisJc3dpdGNoIChwZHUuYmFzZS5jb21tYW5kKSB7CisJY2FzZSBVU0JJUF9DTURfVU5MSU5LOgorCQlzdHViX3JlY3ZfY21kX3VubGluayhzZGV2LCAmcGR1KTsKKwkJYnJlYWs7CisKKwljYXNlIFVTQklQX0NNRF9TVUJNSVQ6CisJCXN0dWJfcmVjdl9jbWRfc3VibWl0KHNkZXYsICZwZHUpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCS8qIE5PVFJFQUNIRUQgKi8KKwkJZGV2X2VycihkZXYsICJ1bmtub3duIHBkdVxuIik7CisJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgU0RFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQlyZXR1cm47CisJfQorCit9CisKK3ZvaWQgc3R1Yl9yeF9sb29wKHN0cnVjdCB1c2JpcF90YXNrICp1dCkKK3sKKwlzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCA9IGNvbnRhaW5lcl9vZih1dCwgc3RydWN0IHVzYmlwX2RldmljZSwgdGNwX3J4KTsKKworCXdoaWxlICgxKSB7CisJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJZGJnX3N0dWJfcngoInNpZ25hbCBjYXVnaHQhXG4iKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKHVzYmlwX2V2ZW50X2hhcHBlbmQodWQpKQorCQkJYnJlYWs7CisKKwkJc3R1Yl9yeF9wZHUodWQpOworCX0KK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl90eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NTYzY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl90eC5jCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaW5jbHVkZSAidXNiaXBfY29tbW9uLmgiCisjaW5jbHVkZSAic3R1Yi5oIgorCisKK3N0YXRpYyB2b2lkIHN0dWJfZnJlZV9wcml2X2FuZF91cmIoc3RydWN0IHN0dWJfcHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgdXJiICp1cmIgPSBwcml2LT51cmI7CisKKwlrZnJlZSh1cmItPnNldHVwX3BhY2tldCk7CisJa2ZyZWUodXJiLT50cmFuc2Zlcl9idWZmZXIpOworCWxpc3RfZGVsKCZwcml2LT5saXN0KTsKKwlrbWVtX2NhY2hlX2ZyZWUoc3R1Yl9wcml2X2NhY2hlLCBwcml2KTsKKwl1c2JfZnJlZV91cmIodXJiKTsKK30KKworLyogYmUgaW4gc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpICovCit2b2lkIHN0dWJfZW5xdWV1ZV9yZXRfdW5saW5rKHN0cnVjdCBzdHViX2RldmljZSAqc2RldiwgX191MzIgc2VxbnVtLAorCQkJICAgICBfX3UzMiBzdGF0dXMpCit7CisJc3RydWN0IHN0dWJfdW5saW5rICp1bmxpbms7CisKKwl1bmxpbmsgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc3R1Yl91bmxpbmspLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXVubGluaykgeworCQlkZXZfZXJyKCZzZGV2LT5pbnRlcmZhY2UtPmRldiwgImFsbG9jIHN0dWJfdW5saW5rXG4iKTsKKwkJdXNiaXBfZXZlbnRfYWRkKCZzZGV2LT51ZCwgVkRFVl9FVkVOVF9FUlJPUl9NQUxMT0MpOworCQlyZXR1cm47CisJfQorCisJdW5saW5rLT5zZXFudW0gPSBzZXFudW07CisJdW5saW5rLT5zdGF0dXMgPSBzdGF0dXM7CisKKwlsaXN0X2FkZF90YWlsKCZ1bmxpbmstPmxpc3QsICZzZGV2LT51bmxpbmtfdHgpOworfQorCisvKioKKyAqIHN0dWJfY29tcGxldGUgLSBjb21wbGV0aW9uIGhhbmRsZXIgb2YgYSB1c2JpcCB1cmIKKyAqIEB1cmI6IHBvaW50ZXIgdG8gdGhlIHVyYiBjb21wbGV0ZWQKKyAqIEByZWdzOgorICoKKyAqIFdoZW4gYSB1cmIgaGFzIGNvbXBsZXRlZCwgdGhlIFVTQiBjb3JlIGRyaXZlciBjYWxscyB0aGlzIGZ1bmN0aW9uIG1vc3RseSBpbgorICogdGhlIGludGVycnVwdCBjb250ZXh0LiBUbyByZXR1cm4gdGhlIHJlc3VsdCBvZiBhIHVyYiwgdGhlIGNvbXBsZXRlZCB1cmIgaXMKKyAqIGxpbmtlZCB0byB0aGUgcGVuZGluZyBsaXN0IG9mIHJldHVybmluZy4KKyAqCisgKi8KK3ZvaWQgc3R1Yl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHN0dWJfcHJpdiAqcHJpdiA9IChzdHJ1Y3Qgc3R1Yl9wcml2ICopIHVyYi0+Y29udGV4dDsKKwlzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYgPSBwcml2LT5zZGV2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlkYmdfc3R1Yl90eCgiY29tcGxldGUhIHN0YXR1cyAlZFxuIiwgdXJiLT5zdGF0dXMpOworCisKKwlzd2l0Y2ggKHVyYi0+c3RhdHVzKSB7CisJY2FzZSAwOgorCQkvKiBPSyAqLworCQlicmVhazsKKwljYXNlIC1FTk9FTlQ6CisJCXVpbmZvKCJzdG9wcGVkIGJ5IGEgY2FsbCBvZiB1c2Jfa2lsbF91cmIoKSBiZWNhdXNlIG9mIgorCQkJCQkiY2xlYW5pbmcgdXAgYSB2aXJ0dWFsIGNvbm5lY3Rpb25cbiIpOworCQlyZXR1cm47CisJY2FzZSAtRUNPTk5SRVNFVDoKKwkJdWluZm8oInVubGlua2VkIGJ5IGEgY2FsbCBvZiB1c2JfdW5saW5rX3VyYigpXG4iKTsKKwkJYnJlYWs7CisJY2FzZSAtRVBJUEU6CisJCXVpbmZvKCJlbmRwb2ludCAlZCBpcyBzdGFsbGVkXG4iLCB1c2JfcGlwZWVuZHBvaW50KHVyYi0+cGlwZSkpOworCQlicmVhazsKKwljYXNlIC1FU0hVVERPV046CisJCXVpbmZvKCJkZXZpY2UgcmVtb3ZlZD9cbiIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl1aW5mbygidXJiIGNvbXBsZXRpb24gd2l0aCBub24temVybyBzdGF0dXMgJWRcbiIsIHVyYi0+c3RhdHVzKTsKKwl9CisKKwkvKiBsaW5rIGEgdXJiIHRvIHRoZSBxdWV1ZSBvZiB0eC4gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2Rldi0+cHJpdl9sb2NrLCBmbGFncyk7CisKKwlpZiAocHJpdi0+dW5saW5raW5nKSB7CisJCXN0dWJfZW5xdWV1ZV9yZXRfdW5saW5rKHNkZXYsIHByaXYtPnNlcW51bSwgdXJiLT5zdGF0dXMpOworCQlzdHViX2ZyZWVfcHJpdl9hbmRfdXJiKHByaXYpOworCX0gZWxzZQorCQlsaXN0X21vdmVfdGFpbCgmcHJpdi0+bGlzdCwgJnNkZXYtPnByaXZfdHgpOworCisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCS8qIHdha2UgdXAgdHhfdGhyZWFkICovCisJd2FrZV91cCgmc2Rldi0+dHhfd2FpdHEpOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBmaWxsIFBEVSAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfYmFzZV9wZHUoc3RydWN0IHVzYmlwX2hlYWRlcl9iYXNpYyAqYmFzZSwKKwkJX191MzIgY29tbWFuZCwgX191MzIgc2VxbnVtKQoreworCWJhc2UtPmNvbW1hbmQgPSBjb21tYW5kOworCWJhc2UtPnNlcW51bSAgPSBzZXFudW07CisJYmFzZS0+ZGV2aWQgICA9IDA7CisJYmFzZS0+ZXAgICAgICA9IDA7CisJYmFzZS0+ZGlyZWN0aW9uICAgPSAwOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9yZXRfc3VibWl0X3BkdShzdHJ1Y3QgdXNiaXBfaGVhZGVyICpycGR1LCBzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHN0dWJfcHJpdiAqcHJpdiA9IChzdHJ1Y3Qgc3R1Yl9wcml2ICopIHVyYi0+Y29udGV4dDsKKworCXNldHVwX2Jhc2VfcGR1KCZycGR1LT5iYXNlLCBVU0JJUF9SRVRfU1VCTUlULCBwcml2LT5zZXFudW0pOworCisJdXNiaXBfcGFja19wZHUocnBkdSwgdXJiLCBVU0JJUF9SRVRfU1VCTUlULCAxKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfcmV0X3VubGlua19wZHUoc3RydWN0IHVzYmlwX2hlYWRlciAqcnBkdSwKKwkJc3RydWN0IHN0dWJfdW5saW5rICp1bmxpbmspCit7CisJc2V0dXBfYmFzZV9wZHUoJnJwZHUtPmJhc2UsIFVTQklQX1JFVF9VTkxJTkssIHVubGluay0+c2VxbnVtKTsKKworCXJwZHUtPnUucmV0X3VubGluay5zdGF0dXMgPSB1bmxpbmstPnN0YXR1czsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogc2VuZCBSRVRfU1VCTUlUICovCisKK3N0YXRpYyBzdHJ1Y3Qgc3R1Yl9wcml2ICpkZXF1ZXVlX2Zyb21fcHJpdl90eChzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qgc3R1Yl9wcml2ICpwcml2LCAqdG1wOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHByaXYsIHRtcCwgJnNkZXYtPnByaXZfdHgsIGxpc3QpIHsKKwkJbGlzdF9tb3ZlX3RhaWwoJnByaXYtPmxpc3QsICZzZGV2LT5wcml2X2ZyZWUpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKwkJcmV0dXJuIHByaXY7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Rldi0+cHJpdl9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBzdHViX3NlbmRfcmV0X3N1Ym1pdChzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qgc3R1Yl9wcml2ICpwcml2LCAqdG1wOworCisJc3RydWN0IG1zZ2hkciBtc2c7CisJc3RydWN0IGt2ZWMgaW92WzNdOworCXNpemVfdCB0eHNpemU7CisKKwlzaXplX3QgdG90YWxfc2l6ZSA9IDA7CisKKwl3aGlsZSAoKHByaXYgPSBkZXF1ZXVlX2Zyb21fcHJpdl90eChzZGV2KSkgIT0gTlVMTCkgeworCQlpbnQgcmV0OworCQlzdHJ1Y3QgdXJiICp1cmIgPSBwcml2LT51cmI7CisJCXN0cnVjdCB1c2JpcF9oZWFkZXIgcGR1X2hlYWRlcjsKKwkJdm9pZCAqaXNvX2J1ZmZlciA9IE5VTEw7CisKKwkJdHhzaXplID0gMDsKKwkJbWVtc2V0KCZwZHVfaGVhZGVyLCAwLCBzaXplb2YocGR1X2hlYWRlcikpOworCQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCQltZW1zZXQoJmlvdiwgMCwgc2l6ZW9mKGlvdikpOworCisJCWRiZ19zdHViX3R4KCJzZXR1cCB0eGRhdGEgdXJiICVwXG4iLCB1cmIpOworCisKKwkJLyogMS4gc2V0dXAgdXNiaXBfaGVhZGVyICovCisJCXNldHVwX3JldF9zdWJtaXRfcGR1KCZwZHVfaGVhZGVyLCB1cmIpOworCQl1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4oJnBkdV9oZWFkZXIsIDEpOworCisJCWlvdlswXS5pb3ZfYmFzZSA9ICZwZHVfaGVhZGVyOworCQlpb3ZbMF0uaW92X2xlbiAgPSBzaXplb2YocGR1X2hlYWRlcik7CisJCXR4c2l6ZSArPSBzaXplb2YocGR1X2hlYWRlcik7CisKKwkJLyogMi4gc2V0dXAgdHJhbnNmZXIgYnVmZmVyICovCisJCWlmICh1c2JfcGlwZWluKHVyYi0+cGlwZSkgJiYgdXJiLT5hY3R1YWxfbGVuZ3RoID4gMCkgeworCQkJaW92WzFdLmlvdl9iYXNlID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CisJCQlpb3ZbMV0uaW92X2xlbiAgPSB1cmItPmFjdHVhbF9sZW5ndGg7CisJCQl0eHNpemUgKz0gdXJiLT5hY3R1YWxfbGVuZ3RoOworCQl9CisKKwkJLyogMy4gc2V0dXAgaXNvX3BhY2tldF9kZXNjcmlwdG9yICovCisJCWlmICh1c2JfcGlwZXR5cGUodXJiLT5waXBlKSA9PSBQSVBFX0lTT0NIUk9OT1VTKSB7CisJCQlzc2l6ZV90IGxlbiA9IDA7CisKKwkJCWlzb19idWZmZXIgPSB1c2JpcF9hbGxvY19pc29fZGVzY19wZHUodXJiLCAmbGVuKTsKKwkJCWlmICghaXNvX2J1ZmZlcikgeworCQkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsCisJCQkJCQlTREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlpb3ZbMl0uaW92X2Jhc2UgPSBpc29fYnVmZmVyOworCQkJaW92WzJdLmlvdl9sZW4gID0gbGVuOworCQkJdHhzaXplICs9IGxlbjsKKwkJfQorCisJCXJldCA9IGtlcm5lbF9zZW5kbXNnKHNkZXYtPnVkLnRjcF9zb2NrZXQsICZtc2csIGlvdiwKKwkJCQkgICAgIDMsIHR4c2l6ZSk7CisJCWlmIChyZXQgIT0gdHhzaXplKSB7CisJCQlkZXZfZXJyKCZzZGV2LT5pbnRlcmZhY2UtPmRldiwKKwkJCQkic2VuZG1zZyBmYWlsZWQhLCByZXR2YWwgJWQgZm9yICV6ZFxuIiwKKwkJCQlyZXQsIHR4c2l6ZSk7CisJCQlrZnJlZShpc29fYnVmZmVyKTsKKwkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsIFNERVZfRVZFTlRfRVJST1JfVENQKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWtmcmVlKGlzb19idWZmZXIpOworCQlkYmdfc3R1Yl90eCgic2VuZCB0eGRhdGFcbiIpOworCisJCXRvdGFsX3NpemUgKz0gdHhzaXplOworCX0KKworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHByaXYsIHRtcCwgJnNkZXYtPnByaXZfZnJlZSwgbGlzdCkgeworCQlzdHViX2ZyZWVfcHJpdl9hbmRfdXJiKHByaXYpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHRvdGFsX3NpemU7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHNlbmQgUkVUX1VOTElOSyAqLworCitzdGF0aWMgc3RydWN0IHN0dWJfdW5saW5rICpkZXF1ZXVlX2Zyb21fdW5saW5rX3R4KHN0cnVjdCBzdHViX2RldmljZSAqc2RldikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCBzdHViX3VubGluayAqdW5saW5rLCAqdG1wOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVubGluaywgdG1wLCAmc2Rldi0+dW5saW5rX3R4LCBsaXN0KSB7CisJCWxpc3RfbW92ZV90YWlsKCZ1bmxpbmstPmxpc3QsICZzZGV2LT51bmxpbmtfZnJlZSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCQlyZXR1cm4gdW5saW5rOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIGludCBzdHViX3NlbmRfcmV0X3VubGluayhzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qgc3R1Yl91bmxpbmsgKnVubGluaywgKnRtcDsKKworCXN0cnVjdCBtc2doZHIgbXNnOworCXN0cnVjdCBrdmVjIGlvdlsxXTsKKwlzaXplX3QgdHhzaXplOworCisJc2l6ZV90IHRvdGFsX3NpemUgPSAwOworCisJd2hpbGUgKCh1bmxpbmsgPSBkZXF1ZXVlX2Zyb21fdW5saW5rX3R4KHNkZXYpKSAhPSBOVUxMKSB7CisJCWludCByZXQ7CisJCXN0cnVjdCB1c2JpcF9oZWFkZXIgcGR1X2hlYWRlcjsKKworCQl0eHNpemUgPSAwOworCQltZW1zZXQoJnBkdV9oZWFkZXIsIDAsIHNpemVvZihwZHVfaGVhZGVyKSk7CisJCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJCW1lbXNldCgmaW92LCAwLCBzaXplb2YoaW92KSk7CisKKwkJZGJnX3N0dWJfdHgoInNldHVwIHJldCB1bmxpbmsgJWx1XG4iLCB1bmxpbmstPnNlcW51bSk7CisKKwkJLyogMS4gc2V0dXAgdXNiaXBfaGVhZGVyICovCisJCXNldHVwX3JldF91bmxpbmtfcGR1KCZwZHVfaGVhZGVyLCB1bmxpbmspOworCQl1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4oJnBkdV9oZWFkZXIsIDEpOworCisJCWlvdlswXS5pb3ZfYmFzZSA9ICZwZHVfaGVhZGVyOworCQlpb3ZbMF0uaW92X2xlbiAgPSBzaXplb2YocGR1X2hlYWRlcik7CisJCXR4c2l6ZSArPSBzaXplb2YocGR1X2hlYWRlcik7CisKKwkJcmV0ID0ga2VybmVsX3NlbmRtc2coc2Rldi0+dWQudGNwX3NvY2tldCwgJm1zZywgaW92LAorCQkJCSAgICAgMSwgdHhzaXplKTsKKwkJaWYgKHJldCAhPSB0eHNpemUpIHsKKwkJCWRldl9lcnIoJnNkZXYtPmludGVyZmFjZS0+ZGV2LAorCQkJCSJzZW5kbXNnIGZhaWxlZCEsIHJldHZhbCAlZCBmb3IgJXpkXG4iLAorCQkJCXJldCwgdHhzaXplKTsKKwkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsIFNERVZfRVZFTlRfRVJST1JfVENQKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisKKwkJZGJnX3N0dWJfdHgoInNlbmQgdHhkYXRhXG4iKTsKKworCQl0b3RhbF9zaXplICs9IHR4c2l6ZTsKKwl9CisKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh1bmxpbmssIHRtcCwgJnNkZXYtPnVubGlua19mcmVlLCBsaXN0KSB7CisJCWxpc3RfZGVsKCZ1bmxpbmstPmxpc3QpOworCQlrZnJlZSh1bmxpbmspOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHRvdGFsX3NpemU7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBzdHViX3R4X2xvb3Aoc3RydWN0IHVzYmlwX3Rhc2sgKnV0KQoreworCXN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkID0gY29udGFpbmVyX29mKHV0LCBzdHJ1Y3QgdXNiaXBfZGV2aWNlLCB0Y3BfdHgpOworCXN0cnVjdCBzdHViX2RldmljZSAqc2RldiA9IGNvbnRhaW5lcl9vZih1ZCwgc3RydWN0IHN0dWJfZGV2aWNlLCB1ZCk7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCWRiZ19zdHViX3R4KCJzaWduYWwgY2F0Y2hlZFxuIik7CisJCQlicmVhazsKKwkJfQorCisJCWlmICh1c2JpcF9ldmVudF9oYXBwZW5kKHVkKSkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIHNlbmRfcmV0X3N1Ym1pdCBjb21lcyBlYXJsaWVyIHRoYW4gc2VuZF9yZXRfdW5saW5rLiAgc3R1Yl9yeAorCQkgKiBsb29rcyBhdCBvbmx5IHByaXZfaW5pdCBxdWV1ZS4gSWYgdGhlIGNvbXBsZXRpb24gb2YgYSBVUkIgaXMKKwkJICogZWFybGllciB0aGFuIHRoZSByZWNlaXZlIG9mIENNRF9VTkxJTkssIHByaXYgaXMgbW92ZWQgdG8KKwkJICogcHJpdl90eCBxdWV1ZSBhbmQgc3R1Yl9yeCBkb2VzIG5vdCBmaW5kIHRoZSB0YXJnZXQgcHJpdi4gSW4KKwkJICogdGhpcyBjYXNlLCB2aGNpX3J4IHJlY2VpdmVzIHRoZSByZXN1bHQgb2YgdGhlIHN1Ym1pdCByZXF1ZXN0CisJCSAqIGFuZCB0aGVuIHJlY2VpdmVzIHRoZSByZXN1bHQgb2YgdGhlIHVubGluayByZXF1ZXN0LiBUaGUKKwkJICogcmVzdWx0IG9mIHRoZSBzdWJtaXQgaXMgZ2l2ZW4gYmFjayB0byB0aGUgdXNiY29yZSBhcyB0aGUKKwkJICogY29tcGxldGlvbiBvZiB0aGUgdW5saW5rIHJlcXVlc3QuIFRoZSByZXF1ZXN0IG9mIHRoZQorCQkgKiB1bmxpbmsgaXMgaWdub3JlZC4gVGhpcyBpcyBvayBiZWNhdXNlIGEgZHJpdmVyIHdobyBjYWxscworCQkgKiB1c2JfdW5saW5rX3VyYigpIHVuZGVyc3RhbmRzIHRoZSB1bmxpbmsgd2FzIHRvbyBsYXRlIGJ5CisJCSAqIGdldHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgZ2l2ZW4tYmFja2VkIFVSQiB3aGljaCBoYXMgdGhlCisJCSAqIHN0YXR1cyBvZiB1c2Jfc3VibWl0X3VyYigpLgorCQkgKi8KKwkJaWYgKHN0dWJfc2VuZF9yZXRfc3VibWl0KHNkZXYpIDwgMCkKKwkJCWJyZWFrOworCisJCWlmIChzdHViX3NlbmRfcmV0X3VubGluayhzZGV2KSA8IDApCisJCQlicmVhazsKKworCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoc2Rldi0+dHhfd2FpdHEsCisJCQkJKCFsaXN0X2VtcHR5KCZzZGV2LT5wcml2X3R4KSB8fAorCQkJCSAhbGlzdF9lbXB0eSgmc2Rldi0+dW5saW5rX3R4KSkpOworCX0KK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjQ5MThmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2NvbW1vbi5jCkBAIC0wLDAgKzEsOTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3RjcC5oPgorI2luY2x1ZGUgPGxpbnV4L2luLmg+CisjaW5jbHVkZSAidXNiaXBfY29tbW9uLmgiCisKKy8qIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gIjEuMCIKKyNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiVGFrYWhpcm8gSGlyb2Z1Y2hpIDxoaXJvZnVjaGkgX2F0XyB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgorI2RlZmluZSBEUklWRVJfREVTQyAidXNiaXAgY29tbW9uIGRyaXZlciIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIGRlYnVnIHJvdXRpbmVzICovCisKKyNpZmRlZiBDT05GSUdfVVNCX0RFQlVHCit1bnNpZ25lZCBsb25nIHVzYmlwX2RlYnVnX2ZsYWcgPSAweGZmZmZmZmZmOworI2Vsc2UKK3Vuc2lnbmVkIGxvbmcgdXNiaXBfZGVidWdfZmxhZzsKKyNlbmRpZgorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfZGVidWdfZmxhZyk7CisKKworLyogRklYTUUgKi8KK3N0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3VzYmlwX2RlYnVnOworRVhQT1JUX1NZTUJPTF9HUEwoZGV2X2F0dHJfdXNiaXBfZGVidWcpOworCisKK3N0YXRpYyBzc2l6ZV90IHNob3dfZmxhZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCQkJCQljaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWx4XG4iLCB1c2JpcF9kZWJ1Z19mbGFnKTsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfZmxhZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWc7CisKKwlzc2NhbmYoYnVmLCAiJWx4IiwgJmZsYWcpOworCXVzYmlwX2RlYnVnX2ZsYWcgPSBmbGFnOworCisJcmV0dXJuIGNvdW50OworfQorREVWSUNFX0FUVFIodXNiaXBfZGVidWcsIChTX0lSVUdPIHwgU19JV1VTUiksIHNob3dfZmxhZywgc3RvcmVfZmxhZyk7CisKK3N0YXRpYyB2b2lkIHVzYmlwX2R1bXBfYnVmZmVyKGNoYXIgKmJ1ZmYsIGludCBidWZmbGVuKQoreworCWludCBpOworCisJaWYgKGJ1ZmZsZW4gPiAxMjgpIHsKKwkJZm9yIChpID0gMDsgaSA8IDEyODsgaSsrKSB7CisJCQlpZiAoaSUyNCA9PSAwKQorCQkJCXByaW50aygiICAgIik7CisJCQlwcmludGsoIiUwMnggIiwgKHVuc2lnbmVkIGNoYXIpIGJ1ZmZbaV0pOworCQkJaWYgKGklNCA9PSAzKQorCQkJCXByaW50aygifCAiKTsKKwkJCWlmIChpJTI0ID09IDIzKQorCQkJCXByaW50aygiXG4iKTsKKwkJfQorCQlwcmludGsoIi4uLiAoJWQgYnl0ZSlcbiIsIGJ1ZmZsZW4pOworCQlyZXR1cm47CisJfQorCisJZm9yIChpID0gMDsgaSA8IGJ1ZmZsZW47IGkrKykgeworCQlpZiAoaSUyNCA9PSAwKQorCQkJcHJpbnRrKCIgICAiKTsKKwkJcHJpbnRrKCIlMDJ4ICIsICh1bnNpZ25lZCBjaGFyKSBidWZmW2ldKTsKKwkJaWYgKGklNCA9PSAzKQorCQkJcHJpbnRrKCJ8ICIpOworCQlpZiAoaSUyNCA9PSAyMykKKwkJCXByaW50aygiXG4iKTsKKwl9CisJcHJpbnRrKCJcbiIpOworCit9CisKK3N0YXRpYyB2b2lkIHVzYmlwX2R1bXBfcGlwZSh1bnNpZ25lZCBpbnQgcCkKK3sKKwl1bnNpZ25lZCBjaGFyIHR5cGUgPSB1c2JfcGlwZXR5cGUocCk7CisJdW5zaWduZWQgY2hhciBlcCA9IHVzYl9waXBlZW5kcG9pbnQocCk7CisJdW5zaWduZWQgY2hhciBkZXYgPSB1c2JfcGlwZWRldmljZShwKTsKKwl1bnNpZ25lZCBjaGFyIGRpciA9IHVzYl9waXBlaW4ocCk7CisKKwlwcmludGsoImRldiglZCkgIiwgZGV2KTsKKwlwcmludGsoImVwKCVkKSAiLCAgZXApOworCXByaW50aygiJXMgIiwgZGlyID8gIklOIiA6ICJPVVQiKTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgUElQRV9JU09DSFJPTk9VUzoKKwkJcHJpbnRrKCIlcyAiLCAiSVNPIik7CisJCWJyZWFrOworCWNhc2UgUElQRV9JTlRFUlJVUFQ6CisJCXByaW50aygiJXMgIiwgIklOVCIpOworCQlicmVhazsKKwljYXNlIFBJUEVfQ09OVFJPTDoKKwkJcHJpbnRrKCIlcyAiLCAiQ1RMIik7CisJCWJyZWFrOworCWNhc2UgUElQRV9CVUxLOgorCQlwcmludGsoIiVzICIsICJCTEsiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKCJFUlIiKTsKKwl9CisKKwlwcmludGsoIlxuIik7CisKK30KKworc3RhdGljIHZvaWQgdXNiaXBfZHVtcF91c2JfZGV2aWNlKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZ1ZGV2LT5kZXY7CisJaW50IGk7CisKKwlkZXZfZGJnKGRldiwgIiAgICAgICBkZXZudW0oJWQpIGRldnBhdGgoJXMpIiwKKwkJdWRldi0+ZGV2bnVtLCB1ZGV2LT5kZXZwYXRoKTsKKworCXN3aXRjaCAodWRldi0+c3BlZWQpIHsKKwljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQlwcmludGsoIiBTUERfSElHSCIpOworCQlicmVhazsKKwljYXNlIFVTQl9TUEVFRF9GVUxMOgorCQlwcmludGsoIiBTUERfRlVMTCIpOworCQlicmVhazsKKwljYXNlIFVTQl9TUEVFRF9MT1c6CisJCXByaW50aygiIFNQRF9MT1ciKTsKKwkJYnJlYWs7CisJY2FzZSBVU0JfU1BFRURfVU5LTk9XTjoKKwkJcHJpbnRrKCIgU1BEX1VOS05PV04iKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKCIgU1BEX0VSUk9SIik7CisJfQorCisJcHJpbnRrKCIgdHQgJXAsIHR0cG9ydCAlZCIsIHVkZXYtPnR0LCB1ZGV2LT50dHBvcnQpOworCXByaW50aygiXG4iKTsKKworCWRldl9kYmcoZGV2LCAiICAgICAgICAgICAgICAgICAgICAiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKwkJcHJpbnRrKCIgJTJ1IiwgaSk7CisJcHJpbnRrKCJcbiIpOworCisJZGV2X2RiZyhkZXYsICIgICAgICAgdG9nZ2xlMChJTikgOiIpOworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorCQlwcmludGsoIiAlMnUiLCAodWRldi0+dG9nZ2xlWzBdICYgKDEgPDwgaSkpID8gMSA6IDApOworCXByaW50aygiXG4iKTsKKworCWRldl9kYmcoZGV2LCAiICAgICAgIHRvZ2dsZTEoT1VUKToiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKwkJcHJpbnRrKCIgJTJ1IiwgKHVkZXYtPnRvZ2dsZVsxXSAmICgxIDw8IGkpKSA/IDEgOiAwKTsKKwlwcmludGsoIlxuIik7CisKKworCWRldl9kYmcoZGV2LCAiICAgICAgIGVwbWF4cF9pbiAgIDoiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworCQlpZiAodWRldi0+ZXBfaW5baV0pCisJCQlwcmludGsoIiAlMnUiLAorCQkJICAgICBsZTE2X3RvX2NwdSh1ZGV2LT5lcF9pbltpXS0+ZGVzYy53TWF4UGFja2V0U2l6ZSkpOworCX0KKwlwcmludGsoIlxuIik7CisKKwlkZXZfZGJnKGRldiwgIiAgICAgICBlcG1heHBfb3V0ICA6Iik7CisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKwkJaWYgKHVkZXYtPmVwX291dFtpXSkKKwkJCXByaW50aygiICUydSIsCisJCQkgICAgIGxlMTZfdG9fY3B1KHVkZXYtPmVwX291dFtpXS0+ZGVzYy53TWF4UGFja2V0U2l6ZSkpOworCX0KKwlwcmludGsoIlxuIik7CisKKwlkZXZfZGJnKGRldiwgInBhcmVudCAlcCwgYnVzICVwXG4iLCB1ZGV2LT5wYXJlbnQsIHVkZXYtPmJ1cyk7CisKKwlkZXZfZGJnKGRldiwgImRlc2NyaXB0b3IgJXAsIGNvbmZpZyAlcCwgYWN0Y29uZmlnICVwLCAiCisJCSJyYXdkZXNjcmlwdG9ycyAlcFxuIiwgJnVkZXYtPmRlc2NyaXB0b3IsIHVkZXYtPmNvbmZpZywKKwkJdWRldi0+YWN0Y29uZmlnLCB1ZGV2LT5yYXdkZXNjcmlwdG9ycyk7CisKKwlkZXZfZGJnKGRldiwgImhhdmVfbGFuZ2lkICVkLCBzdHJpbmdfbGFuZ2lkICVkXG4iLAorCQl1ZGV2LT5oYXZlX2xhbmdpZCwgdWRldi0+c3RyaW5nX2xhbmdpZCk7CisKKwlkZXZfZGJnKGRldiwgIm1heGNoaWxkICVkLCBjaGlsZHJlbiAlcFxuIiwKKwkJdWRldi0+bWF4Y2hpbGQsIHVkZXYtPmNoaWxkcmVuKTsKK30KKworc3RhdGljIHZvaWQgdXNiaXBfZHVtcF9yZXF1ZXN0X3R5cGUoX191OCBydCkKK3sKKwlzd2l0Y2ggKHJ0ICYgVVNCX1JFQ0lQX01BU0spIHsKKwljYXNlIFVTQl9SRUNJUF9ERVZJQ0U6CisJCXByaW50aygiREVWSUNFIik7CisJCWJyZWFrOworCWNhc2UgVVNCX1JFQ0lQX0lOVEVSRkFDRToKKwkJcHJpbnRrKCJJTlRFUkYiKTsKKwkJYnJlYWs7CisJY2FzZSBVU0JfUkVDSVBfRU5EUE9JTlQ6CisJCXByaW50aygiRU5EUE9JIik7CisJCWJyZWFrOworCWNhc2UgVVNCX1JFQ0lQX09USEVSOgorCQlwcmludGsoIk9USEVSICIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGsoIi0tLS0tLSIpOworCX0KK30KKworc3RhdGljIHZvaWQgdXNiaXBfZHVtcF91c2JfY3RybHJlcXVlc3Qoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY21kKQoreworCWlmICghY21kKSB7CisJCXByaW50aygiICAgICAgJXMgOiBudWxsIHBvaW50ZXJcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXJldHVybjsKKwl9CisKKwlwcmludGsoIiAgICAgICAiKTsKKwlwcmludGsoImJSZXF1ZXN0VHlwZSglMDJYKSAiLCBjbWQtPmJSZXF1ZXN0VHlwZSk7CisJcHJpbnRrKCJiUmVxdWVzdCglMDJYKSAiICwgY21kLT5iUmVxdWVzdCk7CisJcHJpbnRrKCJ3VmFsdWUoJTA0WCkgIiwgY21kLT53VmFsdWUpOworCXByaW50aygid0luZGV4KCUwNFgpICIsIGNtZC0+d0luZGV4KTsKKwlwcmludGsoIndMZW5ndGgoJTA0WCkgIiwgY21kLT53TGVuZ3RoKTsKKworCXByaW50aygiXG4gICAgICAgIik7CisKKwlpZiAoKGNtZC0+YlJlcXVlc3RUeXBlICYgVVNCX1RZUEVfTUFTSykgPT0gVVNCX1RZUEVfU1RBTkRBUkQpIHsKKwkJcHJpbnRrKCJTVEFOREFSRCAiKTsKKwkJc3dpdGNoIChjbWQtPmJSZXF1ZXN0KSB7CisJCWNhc2UgVVNCX1JFUV9HRVRfU1RBVFVTOgorCQkJcHJpbnRrKCJHRVRfU1RBVFVTIik7CisJCQlicmVhazsKKwkJY2FzZSBVU0JfUkVRX0NMRUFSX0ZFQVRVUkU6CisJCQlwcmludGsoIkNMRUFSX0ZFQVQiKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfU0VUX0ZFQVRVUkU6CisJCQlwcmludGsoIlNFVF9GRUFUICAiKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfU0VUX0FERFJFU1M6CisJCQlwcmludGsoIlNFVF9BRERSUlMiKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfR0VUX0RFU0NSSVBUT1I6CisJCQlwcmludGsoIkdFVF9ERVNDUkkiKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfU0VUX0RFU0NSSVBUT1I6CisJCQlwcmludGsoIlNFVF9ERVNDUkkiKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfR0VUX0NPTkZJR1VSQVRJT046CisJCQlwcmludGsoIkdFVF9DT05GSUciKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfU0VUX0NPTkZJR1VSQVRJT046CisJCQlwcmludGsoIlNFVF9DT05GSUciKTsKKwkJCWJyZWFrOworCQljYXNlIFVTQl9SRVFfR0VUX0lOVEVSRkFDRToKKwkJCXByaW50aygiR0VUX0lOVEVSRiIpOworCQkJYnJlYWs7CisJCWNhc2UgVVNCX1JFUV9TRVRfSU5URVJGQUNFOgorCQkJcHJpbnRrKCJTRVRfSU5URVJGIik7CisJCQlicmVhazsKKwkJY2FzZSBVU0JfUkVRX1NZTkNIX0ZSQU1FOgorCQkJcHJpbnRrKCJTWU5DX0ZSQU1FIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50aygiUkVRKCUwMlgpICIsIGNtZC0+YlJlcXVlc3QpOworCQl9CisKKwkJcHJpbnRrKCIgIik7CisJCXVzYmlwX2R1bXBfcmVxdWVzdF90eXBlKGNtZC0+YlJlcXVlc3RUeXBlKTsKKworCX0gZWxzZSBpZiAoKGNtZC0+YlJlcXVlc3RUeXBlICYgVVNCX1RZUEVfTUFTSykgPT0gVVNCX1RZUEVfQ0xBU1MpCisJCXByaW50aygiQ0xBU1MgICAiKTsKKworCWVsc2UgaWYgKChjbWQtPmJSZXF1ZXN0VHlwZSAmIFVTQl9UWVBFX01BU0spID09IFVTQl9UWVBFX1ZFTkRPUikKKwkJcHJpbnRrKCJWRU5ET1IgICIpOworCisJZWxzZSBpZiAoKGNtZC0+YlJlcXVlc3RUeXBlICYgVVNCX1RZUEVfTUFTSykgPT0gVVNCX1RZUEVfUkVTRVJWRUQpCisJCXByaW50aygiUkVTRVJWRUQiKTsKKworCXByaW50aygiXG4iKTsKK30KKwordm9pZCB1c2JpcF9kdW1wX3VyYihzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IGRldmljZSAqZGV2OworCisJaWYgKCF1cmIpIHsKKwkJcHJpbnRrKEtFUk5fREVCVUcgS0JVSUxEX01PRE5BTUUKKwkJICAgICAgICI6JXM6IHVyYjogbnVsbCBwb2ludGVyISFcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuOworCX0KKworCWlmICghdXJiLT5kZXYpIHsKKwkJcHJpbnRrKEtFUk5fREVCVUcgS0JVSUxEX01PRE5BTUUKKwkJICAgICAgICI6JXM6IHVyYi0+ZGV2OiBudWxsIHBvaW50ZXIhIVxuIiwgX19mdW5jX18pOworCQlyZXR1cm47CisJfQorCWRldiA9ICZ1cmItPmRldi0+ZGV2OworCisJZGV2X2RiZyhkZXYsICIgICB1cmIgICAgICAgICAgICAgICAgICAgOiVwXG4iLCB1cmIpOworCWRldl9kYmcoZGV2LCAiICAgZGV2ICAgICAgICAgICAgICAgICAgIDolcFxuIiwgdXJiLT5kZXYpOworCisJdXNiaXBfZHVtcF91c2JfZGV2aWNlKHVyYi0+ZGV2KTsKKworCWRldl9kYmcoZGV2LCAiICAgcGlwZSAgICAgICAgICAgICAgICAgIDolMDh4ICIsIHVyYi0+cGlwZSk7CisKKwl1c2JpcF9kdW1wX3BpcGUodXJiLT5waXBlKTsKKworCWRldl9kYmcoZGV2LCAiICAgc3RhdHVzICAgICAgICAgICAgICAgIDolZFxuIiwgdXJiLT5zdGF0dXMpOworCWRldl9kYmcoZGV2LCAiICAgdHJhbnNmZXJfZmxhZ3MgICAgICAgIDolMDhYXG4iLCB1cmItPnRyYW5zZmVyX2ZsYWdzKTsKKwlkZXZfZGJnKGRldiwgIiAgIHRyYW5zZmVyX2J1ZmZlciAgICAgICA6JXBcbiIsIHVyYi0+dHJhbnNmZXJfYnVmZmVyKTsKKwlkZXZfZGJnKGRldiwgIiAgIHRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg6JWRcbiIsIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCk7CisJZGV2X2RiZyhkZXYsICIgICBhY3R1YWxfbGVuZ3RoICAgICAgICAgOiVkXG4iLCB1cmItPmFjdHVhbF9sZW5ndGgpOworCWRldl9kYmcoZGV2LCAiICAgc2V0dXBfcGFja2V0ICAgICAgICAgIDolcFxuIiwgdXJiLT5zZXR1cF9wYWNrZXQpOworCisJaWYgKHVyYi0+c2V0dXBfcGFja2V0ICYmIHVzYl9waXBldHlwZSh1cmItPnBpcGUpID09IFBJUEVfQ09OVFJPTCkKKwkJCXVzYmlwX2R1bXBfdXNiX2N0cmxyZXF1ZXN0KAorCQkJKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKil1cmItPnNldHVwX3BhY2tldCk7CisKKwlkZXZfZGJnKGRldiwgIiAgIHN0YXJ0X2ZyYW1lICAgICAgICAgICA6JWRcbiIsIHVyYi0+c3RhcnRfZnJhbWUpOworCWRldl9kYmcoZGV2LCAiICAgbnVtYmVyX29mX3BhY2tldHMgICAgIDolZFxuIiwgdXJiLT5udW1iZXJfb2ZfcGFja2V0cyk7CisJZGV2X2RiZyhkZXYsICIgICBpbnRlcnZhbCAgICAgICAgICAgICAgOiVkXG4iLCB1cmItPmludGVydmFsKTsKKwlkZXZfZGJnKGRldiwgIiAgIGVycm9yX2NvdW50ICAgICAgICAgICA6JWRcbiIsIHVyYi0+ZXJyb3JfY291bnQpOworCWRldl9kYmcoZGV2LCAiICAgY29udGV4dCAgICAgICAgICAgICAgIDolcFxuIiwgdXJiLT5jb250ZXh0KTsKKwlkZXZfZGJnKGRldiwgIiAgIGNvbXBsZXRlICAgICAgICAgICAgICA6JXBcbiIsIHVyYi0+Y29tcGxldGUpOworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfZHVtcF91cmIpOworCit2b2lkIHVzYmlwX2R1bXBfaGVhZGVyKHN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdSkKK3sKKwl1ZGJnKCJCQVNFOiBjbWQgJXUgc2VxICV1IGRldmlkICV1IGRpciAldSBlcCAldVxuIiwKKwkJCXBkdS0+YmFzZS5jb21tYW5kLAorCQkJcGR1LT5iYXNlLnNlcW51bSwKKwkJCXBkdS0+YmFzZS5kZXZpZCwKKwkJCXBkdS0+YmFzZS5kaXJlY3Rpb24sCisJCQlwZHUtPmJhc2UuZXApOworCisJc3dpdGNoIChwZHUtPmJhc2UuY29tbWFuZCkgeworCWNhc2UgVVNCSVBfQ01EX1NVQk1JVDoKKwkJdWRiZygiQ01EX1NVQk1JVDogeF9mbGFncyAldSB4X2xlbiAldSBzZiAldSAjcCAldSBpdiAldVxuIiwKKwkJCQlwZHUtPnUuY21kX3N1Ym1pdC50cmFuc2Zlcl9mbGFncywKKwkJCQlwZHUtPnUuY21kX3N1Ym1pdC50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoLAorCQkJCXBkdS0+dS5jbWRfc3VibWl0LnN0YXJ0X2ZyYW1lLAorCQkJCXBkdS0+dS5jbWRfc3VibWl0Lm51bWJlcl9vZl9wYWNrZXRzLAorCQkJCXBkdS0+dS5jbWRfc3VibWl0LmludGVydmFsKTsKKwkJCQlicmVhazsKKwljYXNlIFVTQklQX0NNRF9VTkxJTks6CisJCXVkYmcoIkNNRF9VTkxJTks6IHNlcSAldVxuIiwgcGR1LT51LmNtZF91bmxpbmsuc2VxbnVtKTsKKwkJYnJlYWs7CisJY2FzZSBVU0JJUF9SRVRfU1VCTUlUOgorCQl1ZGJnKCJSRVRfU1VCTUlUOiBzdCAlZCBhbCAldSBzZiAlZCBlYyAlZFxuIiwKKwkJCQlwZHUtPnUucmV0X3N1Ym1pdC5zdGF0dXMsCisJCQkJcGR1LT51LnJldF9zdWJtaXQuYWN0dWFsX2xlbmd0aCwKKwkJCQlwZHUtPnUucmV0X3N1Ym1pdC5zdGFydF9mcmFtZSwKKwkJCQlwZHUtPnUucmV0X3N1Ym1pdC5lcnJvcl9jb3VudCk7CisJY2FzZSBVU0JJUF9SRVRfVU5MSU5LOgorCQl1ZGJnKCJSRVRfVU5MSU5LOiBzdGF0dXMgJWRcbiIsIHBkdS0+dS5yZXRfdW5saW5rLnN0YXR1cyk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCS8qIE5PVCBSRUFDSEVEICovCisJCXVkYmcoIlVOS05PV05cbiIpOworCX0KK30KK0VYUE9SVF9TWU1CT0xfR1BMKHVzYmlwX2R1bXBfaGVhZGVyKTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogdGhyZWFkIHJvdXRpbmVzICovCisKK2ludCB1c2JpcF90aHJlYWQodm9pZCAqcGFyYW0pCit7CisJc3RydWN0IHVzYmlwX3Rhc2sgKnV0ID0gcGFyYW07CisKKwlpZiAoIXV0KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWxvY2tfa2VybmVsKCk7CisJZGFlbW9uaXplKHV0LT5uYW1lKTsKKwlhbGxvd19zaWduYWwoU0lHS0lMTCk7CisJdXQtPnRocmVhZCA9IGN1cnJlbnQ7CisJdW5sb2NrX2tlcm5lbCgpOworCisJLyogc3J2LnJiIG11c3Qgd2FpdCBmb3IgcnhfdGhyZWFkIHN0YXJ0aW5nICovCisJY29tcGxldGUoJnV0LT50aHJlYWRfZG9uZSk7CisKKwkvKiBzdGFydCBvZiB3aGlsZSBsb29wICovCisJdXQtPmxvb3Bfb3BzKHV0KTsKKworCS8qIGVuZCBvZiBsb29wICovCisJdXQtPnRocmVhZCA9IE5VTEw7CisKKwljb21wbGV0ZV9hbmRfZXhpdCgmdXQtPnRocmVhZF9kb25lLCAwKTsKK30KKwordm9pZCB1c2JpcF9zdGFydF90aHJlYWRzKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCS8qCisJICogdGhyZWFkcyBhcmUgaW52b2tlZCBwZXIgb25lIGRldmljZSAocGVyIG9uZSBjb25uZWN0aW9uKS4KKwkgKi8KKwlrZXJuZWxfdGhyZWFkKHVzYmlwX3RocmVhZCwgKHZvaWQgKikmdWQtPnRjcF9yeCwgMCk7CisJa2VybmVsX3RocmVhZCh1c2JpcF90aHJlYWQsICh2b2lkICopJnVkLT50Y3BfdHgsIDApOworCisJLyogY29uZmlybSB0aHJlYWRzIGFyZSBzdGFydGluZyAqLworCXdhaXRfZm9yX2NvbXBsZXRpb24oJnVkLT50Y3BfcngudGhyZWFkX2RvbmUpOworCXdhaXRfZm9yX2NvbXBsZXRpb24oJnVkLT50Y3BfdHgudGhyZWFkX2RvbmUpOworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfc3RhcnRfdGhyZWFkcyk7CisKK3ZvaWQgdXNiaXBfc3RvcF90aHJlYWRzKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCS8qIGtpbGwgdGhyZWFkcyByZWxhdGVkIHRvIHRoaXMgc2RldiwgaWYgdi5jLiBleGlzdHMgKi8KKwlpZiAodWQtPnRjcF9yeC50aHJlYWQgIT0gTlVMTCkgeworCQlzZW5kX3NpZyhTSUdLSUxMLCB1ZC0+dGNwX3J4LnRocmVhZCwgMSk7CisJCXdhaXRfZm9yX2NvbXBsZXRpb24oJnVkLT50Y3BfcngudGhyZWFkX2RvbmUpOworCQl1ZGJnKCJyeF90aHJlYWQgZm9yIHVkICVwIGhhcyBmaW5pc2hlZFxuIiwgdWQpOworCX0KKworCWlmICh1ZC0+dGNwX3R4LnRocmVhZCAhPSBOVUxMKSB7CisJCXNlbmRfc2lnKFNJR0tJTEwsIHVkLT50Y3BfdHgudGhyZWFkLCAxKTsKKwkJd2FpdF9mb3JfY29tcGxldGlvbigmdWQtPnRjcF90eC50aHJlYWRfZG9uZSk7CisJCXVkYmcoInR4X3RocmVhZCBmb3IgdWQgJXAgaGFzIGZpbmlzaGVkXG4iLCB1ZCk7CisJfQorfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfc3RvcF90aHJlYWRzKTsKKwordm9pZCB1c2JpcF90YXNrX2luaXQoc3RydWN0IHVzYmlwX3Rhc2sgKnV0LCBjaGFyICpuYW1lLAorCQl2b2lkICgqbG9vcF9vcHMpKHN0cnVjdCB1c2JpcF90YXNrICopKQoreworCXV0LT50aHJlYWQgPSBOVUxMOworCWluaXRfY29tcGxldGlvbigmdXQtPnRocmVhZF9kb25lKTsKKwl1dC0+bmFtZSA9IG5hbWU7CisJdXQtPmxvb3Bfb3BzID0gbG9vcF9vcHM7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF90YXNrX2luaXQpOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBzb2NrZXQgcm91dGluZXMgKi8KKworIC8qICBTZW5kL3JlY2VpdmUgbWVzc2FnZXMgb3ZlciBUQ1AvSVAuIEkgcmVmZXIgZHJpdmVycy9ibG9jay9uYmQuYyAqLworaW50IHVzYmlwX3htaXQoaW50IHNlbmQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGNoYXIgKmJ1ZiwKKwkgICAgICAgaW50IHNpemUsIGludCBtc2dfZmxhZ3MpCit7CisJaW50IHJlc3VsdDsKKwlzdHJ1Y3QgbXNnaGRyIG1zZzsKKwlzdHJ1Y3Qga3ZlYyBpb3Y7CisJaW50IHRvdGFsID0gMDsKKworCS8qIGZvciBibG9ja3Mgb2YgaWYgKGRiZ19mbGFnX3htaXQpICovCisJY2hhciAqYnAgPSBidWY7CisJaW50IG9zaXplID0gc2l6ZTsKKworCWRiZ194bWl0KCJlbnRlclxuIik7CisKKwlpZiAoIXNvY2sgfHwgIWJ1ZiB8fCAhc2l6ZSkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBpbnZhbGlkIGFyZywgc29jayAlcCBidWZmICVwIHNpemUgJWRcbiIsCisJCSAgICAgICBfX2Z1bmNfXywgc29jaywgYnVmLCBzaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisKKwlpZiAoZGJnX2ZsYWdfeG1pdCkgeworCQlpZiAoc2VuZCkgeworCQkJaWYgKCFpbl9pbnRlcnJ1cHQoKSkKKwkJCQlwcmludGsoS0VSTl9ERUJVRyAiJS0xMHM6IiwgY3VycmVudC0+Y29tbSk7CisJCQllbHNlCisJCQkJcHJpbnRrKEtFUk5fREVCVUcgImludGVydXB0ICA6Iik7CisKKwkJCXByaW50aygiJXM6IHNlbmRpbmcuLi4gLCBzb2NrICVwLCBidWYgJXAsICIKKwkJCSAgICAgICAic2l6ZSAlZCwgbXNnX2ZsYWdzICVkXG4iLCBfX2Z1bmNfXywKKwkJCSAgICAgICBzb2NrLCBidWYsIHNpemUsIG1zZ19mbGFncyk7CisJCQl1c2JpcF9kdW1wX2J1ZmZlcihidWYsIHNpemUpOworCQl9CisJfQorCisKKwlkbyB7CisJCXNvY2stPnNrLT5za19hbGxvY2F0aW9uID0gR0ZQX05PSU87CisJCWlvdi5pb3ZfYmFzZSAgICA9IGJ1ZjsKKwkJaW92Lmlvdl9sZW4gICAgID0gc2l6ZTsKKwkJbXNnLm1zZ19uYW1lICAgID0gTlVMTDsKKwkJbXNnLm1zZ19uYW1lbGVuID0gMDsKKwkJbXNnLm1zZ19jb250cm9sID0gTlVMTDsKKwkJbXNnLm1zZ19jb250cm9sbGVuID0gMDsKKwkJbXNnLm1zZ19uYW1lbGVuICAgID0gMDsKKwkJbXNnLm1zZ19mbGFncyAgICAgID0gbXNnX2ZsYWdzIHwgTVNHX05PU0lHTkFMOworCisJCWlmIChzZW5kKQorCQkJcmVzdWx0ID0ga2VybmVsX3NlbmRtc2coc29jaywgJm1zZywgJmlvdiwgMSwgc2l6ZSk7CisJCWVsc2UKKwkJCXJlc3VsdCA9IGtlcm5lbF9yZWN2bXNnKHNvY2ssICZtc2csICZpb3YsIDEsIHNpemUsCisJCQkJCQkJCU1TR19XQUlUQUxMKTsKKworCQlpZiAocmVzdWx0IDw9IDApIHsKKwkJCXVkYmcoInVzYmlwX3htaXQ6ICVzIHNvY2sgJXAgYnVmICVwIHNpemUgJXUgcmV0ICVkIgorCQkJCQkiIHRvdGFsICVkXG4iLAorCQkJCQlzZW5kID8gInNlbmQiIDogInJlY2VpdmUiLCBzb2NrLCBidWYsCisJCQkJCXNpemUsIHJlc3VsdCwgdG90YWwpOworCQkJZ290byBlcnI7CisJCX0KKworCQlzaXplIC09IHJlc3VsdDsKKwkJYnVmICs9IHJlc3VsdDsKKwkJdG90YWwgKz0gcmVzdWx0OworCisJfSB3aGlsZSAoc2l6ZSA+IDApOworCisKKwlpZiAoZGJnX2ZsYWdfeG1pdCkgeworCQlpZiAoIXNlbmQpIHsKKwkJCWlmICghaW5faW50ZXJydXB0KCkpCisJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiUtMTBzOiIsIGN1cnJlbnQtPmNvbW0pOworCQkJZWxzZQorCQkJCXByaW50ayhLRVJOX0RFQlVHICJpbnRlcnVwdCAgOiIpOworCisJCQlwcmludGsoInVzYmlwX3htaXQ6IHJlY2VpdmluZy4uLi5cbiIpOworCQkJdXNiaXBfZHVtcF9idWZmZXIoYnAsIG9zaXplKTsKKwkJCXByaW50aygidXNiaXBfeG1pdDogcmVjZWl2ZWQsIG9zaXplICVkIHJldCAlZCBzaXplICVkICIKKwkJCQkJInRvdGFsICVkXG4iLCBvc2l6ZSwgcmVzdWx0LCBzaXplLAorCQkJCQl0b3RhbCk7CisJCX0KKworCQlpZiAoc2VuZCkKKwkJCXByaW50aygidXNiaXBfeG1pdDogc2VuZCwgdG90YWwgJWRcbiIsIHRvdGFsKTsKKwl9CisKKwlyZXR1cm4gdG90YWw7CisKK2VycjoKKwlyZXR1cm4gcmVzdWx0OworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfeG1pdCk7CisKKworLyogbm93IGEgdXNybGFuZCB1dGlsaXR5IHNob3VsZCBzZXQgb3B0aW9ucy4gKi8KKyNpZiAwCitpbnQgc2V0cXVpY2thY2soc3RydWN0IHNvY2tldCAqc29ja2V0KQoreworCW1tX3NlZ21lbnRfdCBvbGRmczsKKwlpbnQgdmFsID0gMTsKKwlpbnQgcmV0OworCisJb2xkZnMgPSBnZXRfZnMoKTsKKwlzZXRfZnMoZ2V0X2RzKCkpOworCXJldCA9IHNvY2tldC0+b3BzLT5zZXRzb2Nrb3B0KHNvY2tldCwgU09MX1RDUCwgVENQX1FVSUNLQUNLLAorCQkJKGNoYXIgX191c2VyICopICZ2YWwsIHNpemVvZihyZXQpKTsKKwlzZXRfZnMob2xkZnMpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IHNldG5vZGVsYXkoc3RydWN0IHNvY2tldCAqc29ja2V0KQoreworCW1tX3NlZ21lbnRfdCBvbGRmczsKKwlpbnQgdmFsID0gMTsKKwlpbnQgcmV0OworCisJb2xkZnMgPSBnZXRfZnMoKTsKKwlzZXRfZnMoZ2V0X2RzKCkpOworCXJldCA9IHNvY2tldC0+b3BzLT5zZXRzb2Nrb3B0KHNvY2tldCwgU09MX1RDUCwgVENQX05PREVMQVksCisJCQkoY2hhciBfX3VzZXIgKikgJnZhbCwgc2l6ZW9mKHJldCkpOworCXNldF9mcyhvbGRmcyk7CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgc2V0a2VlcGFsaXZlKHN0cnVjdCBzb2NrZXQgKnNvY2tldCkKK3sKKwltbV9zZWdtZW50X3Qgb2xkZnM7CisJaW50IHZhbCA9IDE7CisJaW50IHJldDsKKworCW9sZGZzID0gZ2V0X2ZzKCk7CisJc2V0X2ZzKGdldF9kcygpKTsKKwlyZXQgPSBzb2NrZXQtPm9wcy0+c2V0c29ja29wdChzb2NrZXQsIFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwKKwkJCShjaGFyIF9fdXNlciAqKSAmdmFsLCBzaXplb2YocmV0KSk7CisJc2V0X2ZzKG9sZGZzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2V0cmV1c2Uoc3RydWN0IHNvY2tldCAqc29ja2V0KQoreworCXNvY2tldC0+c2stPnNrX3JldXNlID0gMTsKK30KKyNlbmRpZgorCitzdHJ1Y3Qgc29ja2V0ICpzb2NrZmRfdG9fc29ja2V0KHVuc2lnbmVkIGludCBzb2NrZmQpCit7CisJc3RydWN0IHNvY2tldCAqc29ja2V0OworCXN0cnVjdCBmaWxlICpmaWxlOworCXN0cnVjdCBpbm9kZSAqaW5vZGU7CisKKwlmaWxlID0gZmdldChzb2NrZmQpOworCWlmICghZmlsZSkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBpbnZhbGlkIHNvY2tmZFxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOworCisJaWYgKCFpbm9kZSB8fCAhU19JU1NPQ0soaW5vZGUtPmlfbW9kZSkpCisJCXJldHVybiBOVUxMOworCisJc29ja2V0ID0gU09DS0VUX0koaW5vZGUpOworCisJcmV0dXJuIHNvY2tldDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNvY2tmZF90b19zb2NrZXQpOworCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHBkdSByb3V0aW5lcyAqLworCisvKiB0aGVyZSBtYXkgYmUgbW9yZSBjYXNlcyB0byB0d2VhayB0aGUgZmxhZ3MuICovCitzdGF0aWMgdW5zaWduZWQgaW50IHR3ZWFrX3RyYW5zZmVyX2ZsYWdzKHVuc2lnbmVkIGludCBmbGFncykKK3sKKworCWlmIChmbGFncyAmIFVSQl9OT19UUkFOU0ZFUl9ETUFfTUFQKQorCQkvKgorCQkgKiB2aGNpX2hjZCBkb2VzIG5vdCBwcm92aWRlIERNQS1tYXBwZWQgSS9PLiBUaGUgdXBwZXIKKwkJICogZHJpdmVyIGRvZXMgbm90IG5lZWQgdG8gc2V0IHRoaXMgZmxhZy4gVGhlIHJlbW90ZQorCQkgKiB1c2JpcC5rbyBkb2VzIG5vdCBzdGlsbCBwZXJmb3JtIERNQS1tYXBwZWQgSS9PIGZvcgorCQkgKiBETUEtY2FwbGFibGUgaG9zdCBjb250cm9sbGVycy4gU28sIGNsZWFyIHRoaXMgZmxhZy4KKwkJICovCisJCWZsYWdzICY9IH5VUkJfTk9fVFJBTlNGRVJfRE1BX01BUDsKKworCWlmIChmbGFncyAmIFVSQl9OT19TRVRVUF9ETUFfTUFQKQorCQlmbGFncyAmPSB+VVJCX05PX1NFVFVQX0RNQV9NQVA7CisKKwlyZXR1cm4gZmxhZ3M7Cit9CisKK3N0YXRpYyB2b2lkIHVzYmlwX3BhY2tfY21kX3N1Ym1pdChzdHJ1Y3QgdXNiaXBfaGVhZGVyICpwZHUsIHN0cnVjdCB1cmIgKnVyYiwKKwkJCQkJCQkJaW50IHBhY2spCit7CisJc3RydWN0IHVzYmlwX2hlYWRlcl9jbWRfc3VibWl0ICpzcGR1ID0gJnBkdS0+dS5jbWRfc3VibWl0OworCisJLyoKKwkgKiBTb21lIG1lbWJlcnMgYXJlIG5vdCBzdGlsbCBpbXBsZW1lbnRlZCBpbiB1c2JpcC4gSSBob3BlIHRoaXMgaXNzdWUKKwkgKiB3aWxsIGJlIGRpc2N1c3NlZCB3aGVuIHVzYmlwIGlzIHBvcnRlZCB0byBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcy4KKwkgKi8KKwlpZiAocGFjaykgeworCQkvKiB2aGNpX3R4LmMgKi8KKwkJc3BkdS0+dHJhbnNmZXJfZmxhZ3MgPQorCQkJCXR3ZWFrX3RyYW5zZmVyX2ZsYWdzKHVyYi0+dHJhbnNmZXJfZmxhZ3MpOworCQlzcGR1LT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoCT0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoOworCQlzcGR1LT5zdGFydF9mcmFtZQkJPSB1cmItPnN0YXJ0X2ZyYW1lOworCQlzcGR1LT5udW1iZXJfb2ZfcGFja2V0cwkJPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOworCQlzcGR1LT5pbnRlcnZhbAkJCT0gdXJiLT5pbnRlcnZhbDsKKwl9IGVsc2UgIHsKKwkJLyogc3R1Yl9yeC5jICovCisJCXVyYi0+dHJhbnNmZXJfZmxhZ3MgICAgICAgICA9IHNwZHUtPnRyYW5zZmVyX2ZsYWdzOworCisJCXVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IHNwZHUtPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CisJCXVyYi0+c3RhcnRfZnJhbWUgICAgICAgICAgICA9IHNwZHUtPnN0YXJ0X2ZyYW1lOworCQl1cmItPm51bWJlcl9vZl9wYWNrZXRzICAgICAgPSBzcGR1LT5udW1iZXJfb2ZfcGFja2V0czsKKwkJdXJiLT5pbnRlcnZhbCAgICAgICAgICAgICAgID0gc3BkdS0+aW50ZXJ2YWw7CisJfQorfQorCitzdGF0aWMgdm9pZCB1c2JpcF9wYWNrX3JldF9zdWJtaXQoc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1LCBzdHJ1Y3QgdXJiICp1cmIsCisJCQkJCQkJCWludCBwYWNrKQoreworCXN0cnVjdCB1c2JpcF9oZWFkZXJfcmV0X3N1Ym1pdCAqcnBkdSA9ICZwZHUtPnUucmV0X3N1Ym1pdDsKKworCWlmIChwYWNrKSB7CisJCS8qIHN0dWJfdHguYyAqLworCisJCXJwZHUtPnN0YXR1cwkJPSB1cmItPnN0YXR1czsKKwkJcnBkdS0+YWN0dWFsX2xlbmd0aAk9IHVyYi0+YWN0dWFsX2xlbmd0aDsKKwkJcnBkdS0+c3RhcnRfZnJhbWUJPSB1cmItPnN0YXJ0X2ZyYW1lOworCQlycGR1LT5lcnJvcl9jb3VudAk9IHVyYi0+ZXJyb3JfY291bnQ7CisJfSBlbHNlIHsKKwkJLyogdmhjaV9yeC5jICovCisKKwkJdXJiLT5zdGF0dXMJCT0gcnBkdS0+c3RhdHVzOworCQl1cmItPmFjdHVhbF9sZW5ndGgJPSBycGR1LT5hY3R1YWxfbGVuZ3RoOworCQl1cmItPnN0YXJ0X2ZyYW1lCT0gcnBkdS0+c3RhcnRfZnJhbWU7CisJCXVyYi0+ZXJyb3JfY291bnQJPSBycGR1LT5lcnJvcl9jb3VudDsKKwl9Cit9CisKKwordm9pZCB1c2JpcF9wYWNrX3BkdShzdHJ1Y3QgdXNiaXBfaGVhZGVyICpwZHUsIHN0cnVjdCB1cmIgKnVyYiwgaW50IGNtZCwKKwkJCQkJCQkJaW50IHBhY2spCit7CisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFVTQklQX0NNRF9TVUJNSVQ6CisJCXVzYmlwX3BhY2tfY21kX3N1Ym1pdChwZHUsIHVyYiwgcGFjayk7CisJCWJyZWFrOworCWNhc2UgVVNCSVBfUkVUX1NVQk1JVDoKKwkJdXNiaXBfcGFja19yZXRfc3VibWl0KHBkdSwgdXJiLCBwYWNrKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZXJyKCJ1bmtub3duIGNvbW1hbmQiKTsKKwkJLyogTk9UUkVBQ0hFRCAqLworCQkvKiBCVUcoKTsgKi8KKwl9Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF9wYWNrX3BkdSk7CisKKworc3RhdGljIHZvaWQgY29ycmVjdF9lbmRpYW5fYmFzaWMoc3RydWN0IHVzYmlwX2hlYWRlcl9iYXNpYyAqYmFzZSwgaW50IHNlbmQpCit7CisJaWYgKHNlbmQpIHsKKwkJYmFzZS0+Y29tbWFuZAk9IGNwdV90b19iZTMyKGJhc2UtPmNvbW1hbmQpOworCQliYXNlLT5zZXFudW0JPSBjcHVfdG9fYmUzMihiYXNlLT5zZXFudW0pOworCQliYXNlLT5kZXZpZAk9IGNwdV90b19iZTMyKGJhc2UtPmRldmlkKTsKKwkJYmFzZS0+ZGlyZWN0aW9uCT0gY3B1X3RvX2JlMzIoYmFzZS0+ZGlyZWN0aW9uKTsKKwkJYmFzZS0+ZXAJPSBjcHVfdG9fYmUzMihiYXNlLT5lcCk7CisJfSBlbHNlIHsKKwkJYmFzZS0+Y29tbWFuZAk9IGJlMzJfdG9fY3B1KGJhc2UtPmNvbW1hbmQpOworCQliYXNlLT5zZXFudW0JPSBiZTMyX3RvX2NwdShiYXNlLT5zZXFudW0pOworCQliYXNlLT5kZXZpZAk9IGJlMzJfdG9fY3B1KGJhc2UtPmRldmlkKTsKKwkJYmFzZS0+ZGlyZWN0aW9uCT0gYmUzMl90b19jcHUoYmFzZS0+ZGlyZWN0aW9uKTsKKwkJYmFzZS0+ZXAJPSBiZTMyX3RvX2NwdShiYXNlLT5lcCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBjb3JyZWN0X2VuZGlhbl9jbWRfc3VibWl0KHN0cnVjdCB1c2JpcF9oZWFkZXJfY21kX3N1Ym1pdCAqcGR1LAorCQkJCQkJCQlpbnQgc2VuZCkKK3sKKwlpZiAoc2VuZCkgeworCQlwZHUtPnRyYW5zZmVyX2ZsYWdzID0gY3B1X3RvX2JlMzIocGR1LT50cmFuc2Zlcl9mbGFncyk7CisKKwkJY3B1X3RvX2JlMzJzKCZwZHUtPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgpOworCQljcHVfdG9fYmUzMnMoJnBkdS0+c3RhcnRfZnJhbWUpOworCQljcHVfdG9fYmUzMnMoJnBkdS0+bnVtYmVyX29mX3BhY2tldHMpOworCQljcHVfdG9fYmUzMnMoJnBkdS0+aW50ZXJ2YWwpOworCX0gZWxzZSB7CisJCXBkdS0+dHJhbnNmZXJfZmxhZ3MgPSBiZTMyX3RvX2NwdShwZHUtPnRyYW5zZmVyX2ZsYWdzKTsKKworCQliZTMyX3RvX2NwdXMoJnBkdS0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCk7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5zdGFydF9mcmFtZSk7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5udW1iZXJfb2ZfcGFja2V0cyk7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5pbnRlcnZhbCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBjb3JyZWN0X2VuZGlhbl9yZXRfc3VibWl0KHN0cnVjdCB1c2JpcF9oZWFkZXJfcmV0X3N1Ym1pdCAqcGR1LAorCQkJCQkJCQlpbnQgc2VuZCkKK3sKKwlpZiAoc2VuZCkgeworCQljcHVfdG9fYmUzMnMoJnBkdS0+c3RhdHVzKTsKKwkJY3B1X3RvX2JlMzJzKCZwZHUtPmFjdHVhbF9sZW5ndGgpOworCQljcHVfdG9fYmUzMnMoJnBkdS0+c3RhcnRfZnJhbWUpOworCQljcHVfdG9fYmUzMnMoJnBkdS0+ZXJyb3JfY291bnQpOworCX0gZWxzZSB7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5zdGF0dXMpOworCQliZTMyX3RvX2NwdXMoJnBkdS0+YWN0dWFsX2xlbmd0aCk7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5zdGFydF9mcmFtZSk7CisJCWJlMzJfdG9fY3B1cygmcGR1LT5lcnJvcl9jb3VudCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBjb3JyZWN0X2VuZGlhbl9jbWRfdW5saW5rKHN0cnVjdCB1c2JpcF9oZWFkZXJfY21kX3VubGluayAqcGR1LAorCQkJCQkJCQlpbnQgc2VuZCkKK3sKKwlpZiAoc2VuZCkKKwkJcGR1LT5zZXFudW0gPSBjcHVfdG9fYmUzMihwZHUtPnNlcW51bSk7CisJZWxzZQorCQlwZHUtPnNlcW51bSA9IGJlMzJfdG9fY3B1KHBkdS0+c2VxbnVtKTsKK30KKworc3RhdGljIHZvaWQgY29ycmVjdF9lbmRpYW5fcmV0X3VubGluayhzdHJ1Y3QgdXNiaXBfaGVhZGVyX3JldF91bmxpbmsgKnBkdSwKKwkJCQkJCQkJaW50IHNlbmQpCit7CisJaWYgKHNlbmQpCisJCWNwdV90b19iZTMycygmcGR1LT5zdGF0dXMpOworCWVsc2UKKwkJYmUzMl90b19jcHVzKCZwZHUtPnN0YXR1cyk7Cit9CisKK3ZvaWQgdXNiaXBfaGVhZGVyX2NvcnJlY3RfZW5kaWFuKHN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdSwgaW50IHNlbmQpCit7CisJX191MzIgY21kID0gMDsKKworCWlmIChzZW5kKQorCQljbWQgPSBwZHUtPmJhc2UuY29tbWFuZDsKKworCWNvcnJlY3RfZW5kaWFuX2Jhc2ljKCZwZHUtPmJhc2UsIHNlbmQpOworCisJaWYgKCFzZW5kKQorCQljbWQgPSBwZHUtPmJhc2UuY29tbWFuZDsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBVU0JJUF9DTURfU1VCTUlUOgorCQljb3JyZWN0X2VuZGlhbl9jbWRfc3VibWl0KCZwZHUtPnUuY21kX3N1Ym1pdCwgc2VuZCk7CisJCWJyZWFrOworCWNhc2UgVVNCSVBfUkVUX1NVQk1JVDoKKwkJY29ycmVjdF9lbmRpYW5fcmV0X3N1Ym1pdCgmcGR1LT51LnJldF9zdWJtaXQsIHNlbmQpOworCQlicmVhazsKKwljYXNlIFVTQklQX0NNRF9VTkxJTks6CisJCWNvcnJlY3RfZW5kaWFuX2NtZF91bmxpbmsoJnBkdS0+dS5jbWRfdW5saW5rLCBzZW5kKTsKKwkJYnJlYWs7CisJY2FzZSBVU0JJUF9SRVRfVU5MSU5LOgorCQljb3JyZWN0X2VuZGlhbl9yZXRfdW5saW5rKCZwZHUtPnUucmV0X3VubGluaywgc2VuZCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCS8qIE5PVFJFQUNIRUQgKi8KKwkJZXJyKCJ1bmtub3duIGNvbW1hbmQgaW4gcGR1IGhlYWRlcjogJWQiLCBjbWQpOworCQkvKiBCVUcoKTsgKi8KKwl9Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4pOworCitzdGF0aWMgdm9pZCB1c2JpcF9pc29fcGFrY2V0X2NvcnJlY3RfZW5kaWFuKAorCQkJCXN0cnVjdCB1c2JpcF9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKmlzbywKKwkJCQlpbnQgc2VuZCkKK3sKKwkvKiBkb2VzIG5vdCBuZWVkIGFsbCBtZW1iZXJzLiBidXQgY29weSBhbGwgc2ltcGx5LiAqLworCWlmIChzZW5kKSB7CisJCWlzby0+b2Zmc2V0CT0gY3B1X3RvX2JlMzIoaXNvLT5vZmZzZXQpOworCQlpc28tPmxlbmd0aAk9IGNwdV90b19iZTMyKGlzby0+bGVuZ3RoKTsKKwkJaXNvLT5zdGF0dXMJPSBjcHVfdG9fYmUzMihpc28tPnN0YXR1cyk7CisJCWlzby0+YWN0dWFsX2xlbmd0aCA9IGNwdV90b19iZTMyKGlzby0+YWN0dWFsX2xlbmd0aCk7CisJfSBlbHNlIHsKKwkJaXNvLT5vZmZzZXQJPSBiZTMyX3RvX2NwdShpc28tPm9mZnNldCk7CisJCWlzby0+bGVuZ3RoCT0gYmUzMl90b19jcHUoaXNvLT5sZW5ndGgpOworCQlpc28tPnN0YXR1cwk9IGJlMzJfdG9fY3B1KGlzby0+c3RhdHVzKTsKKwkJaXNvLT5hY3R1YWxfbGVuZ3RoID0gYmUzMl90b19jcHUoaXNvLT5hY3R1YWxfbGVuZ3RoKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHVzYmlwX3BhY2tfaXNvKHN0cnVjdCB1c2JpcF9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKmlzbywKKwkJc3RydWN0IHVzYl9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKnVpc28sIGludCBwYWNrKQoreworCWlmIChwYWNrKSB7CisJCWlzby0+b2Zmc2V0CQk9IHVpc28tPm9mZnNldDsKKwkJaXNvLT5sZW5ndGgJCT0gdWlzby0+bGVuZ3RoOworCQlpc28tPnN0YXR1cwkJPSB1aXNvLT5zdGF0dXM7CisJCWlzby0+YWN0dWFsX2xlbmd0aAk9IHVpc28tPmFjdHVhbF9sZW5ndGg7CisJfSBlbHNlIHsKKwkJdWlzby0+b2Zmc2V0CQk9IGlzby0+b2Zmc2V0OworCQl1aXNvLT5sZW5ndGgJCT0gaXNvLT5sZW5ndGg7CisJCXVpc28tPnN0YXR1cwkJPSBpc28tPnN0YXR1czsKKwkJdWlzby0+YWN0dWFsX2xlbmd0aAk9IGlzby0+YWN0dWFsX2xlbmd0aDsKKwl9Cit9CisKKworLyogbXVzdCBmcmVlIGJ1ZmZlciAqLwordm9pZCAqdXNiaXBfYWxsb2NfaXNvX2Rlc2NfcGR1KHN0cnVjdCB1cmIgKnVyYiwgc3NpemVfdCAqYnVmZmxlbikKK3sKKwl2b2lkICpidWZmOworCXN0cnVjdCB1c2JpcF9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKmlzbzsKKwlpbnQgbnAgPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOworCXNzaXplX3Qgc2l6ZSA9IG5wICogc2l6ZW9mKCppc28pOworCWludCBpOworCisJYnVmZiA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmKQorCQlyZXR1cm4gTlVMTDsKKworCWZvciAoaSA9IDA7IGkgPCBucDsgaSsrKSB7CisJCWlzbyA9IGJ1ZmYgKyAoaSAqIHNpemVvZigqaXNvKSk7CisKKwkJdXNiaXBfcGFja19pc28oaXNvLCAmdXJiLT5pc29fZnJhbWVfZGVzY1tpXSwgMSk7CisJCXVzYmlwX2lzb19wYWtjZXRfY29ycmVjdF9lbmRpYW4oaXNvLCAxKTsKKwl9CisKKwkqYnVmZmxlbiA9IHNpemU7CisKKwlyZXR1cm4gYnVmZjsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHVzYmlwX2FsbG9jX2lzb19kZXNjX3BkdSk7CisKKy8qIHNvbWUgbWVtYmVycyBvZiB1cmIgbXVzdCBiZSBzdWJzdGl0dXRlZCBiZWZvcmUuICovCitpbnQgdXNiaXBfcmVjdl9pc28oc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHN0cnVjdCB1cmIgKnVyYikKK3sKKwl2b2lkICpidWZmOworCXN0cnVjdCB1c2JpcF9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKmlzbzsKKwlpbnQgbnAgPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOworCWludCBzaXplID0gbnAgKiBzaXplb2YoKmlzbyk7CisJaW50IGk7CisJaW50IHJldDsKKworCWlmICghdXNiX3BpcGVpc29jKHVyYi0+cGlwZSkpCisJCXJldHVybiAwOworCisJLyogbXkgQmx1ZXRvb3RoIGRvbmdsZSBnZXRzIElTTyBVUkJzIHdoaWNoIGFyZSBucCA9IDAgKi8KKwlpZiAobnAgPT0gMCkgeworCQkvKiB1aW5mbygiaXNvIG5wID09IDBcbiIpOyAqLworCQkvKiB1c2JpcF9kdW1wX3VyYih1cmIpOyAqLworCQlyZXR1cm4gMDsKKwl9CisKKwlidWZmID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmYpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gdXNiaXBfeG1pdCgwLCB1ZC0+dGNwX3NvY2tldCwgYnVmZiwgc2l6ZSwgMCk7CisJaWYgKHJldCAhPSBzaXplKSB7CisJCWRldl9lcnIoJnVyYi0+ZGV2LT5kZXYsICJyZWN2IGlzb19mcmFtZV9kZXNjcmlwdG9yLCAlZFxuIiwKKwkJCXJldCk7CisJCWtmcmVlKGJ1ZmYpOworCisJCWlmICh1ZC0+c2lkZSA9PSBVU0JJUF9TVFVCKQorCQkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX1RDUCk7CisJCWVsc2UKKwkJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgVkRFVl9FVkVOVF9FUlJPUl9UQ1ApOworCisJCXJldHVybiAtRVBJUEU7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5wOyBpKyspIHsKKwkJaXNvID0gYnVmZiArIChpICogc2l6ZW9mKCppc28pKTsKKworCQl1c2JpcF9pc29fcGFrY2V0X2NvcnJlY3RfZW5kaWFuKGlzbywgMCk7CisJCXVzYmlwX3BhY2tfaXNvKGlzbywgJnVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0sIDApOworCX0KKworCisJa2ZyZWUoYnVmZik7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfcmVjdl9pc28pOworCisKKy8qIHNvbWUgbWVtYmVycyBvZiB1cmIgbXVzdCBiZSBzdWJzdGl0dXRlZCBiZWZvcmUuICovCitpbnQgdXNiaXBfcmVjdl94YnVmZihzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCwgc3RydWN0IHVyYiAqdXJiKQoreworCWludCByZXQ7CisJaW50IHNpemU7CisKKwlpZiAodWQtPnNpZGUgPT0gVVNCSVBfU1RVQikgeworCQkvKiBzdHViX3J4LmMgKi8KKwkJLyogdGhlIGRpcmVjdGlvbiBvZiB1cmIgbXVzdCBiZSBPVVQuICovCisJCWlmICh1c2JfcGlwZWluKHVyYi0+cGlwZSkpCisJCQlyZXR1cm4gMDsKKworCQlzaXplID0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoOworCX0gZWxzZSB7CisJCS8qIHZoY2lfcnguYyAqLworCQkvKiB0aGUgZGlyZWN0aW9uIG9mIHVyYiBtdXN0IGJlIElOLiAqLworCQlpZiAodXNiX3BpcGVvdXQodXJiLT5waXBlKSkKKwkJCXJldHVybiAwOworCisJCXNpemUgPSB1cmItPmFjdHVhbF9sZW5ndGg7CisJfQorCisJLyogbm8gbmVlZCB0byByZWN2IHhidWZmICovCisJaWYgKCEoc2l6ZSA+IDApKQorCQlyZXR1cm4gMDsKKworCXJldCA9IHVzYmlwX3htaXQoMCwgdWQtPnRjcF9zb2NrZXQsIChjaGFyICopdXJiLT50cmFuc2Zlcl9idWZmZXIsCisJCQkgc2l6ZSwgMCk7CisJaWYgKHJldCAhPSBzaXplKSB7CisJCWRldl9lcnIoJnVyYi0+ZGV2LT5kZXYsICJyZWN2IHhidWYsICVkXG4iLCByZXQpOworCQlpZiAodWQtPnNpZGUgPT0gVVNCSVBfU1RVQikgeworCQkJdXNiaXBfZXZlbnRfYWRkKHVkLCBTREVWX0VWRU5UX0VSUk9SX1RDUCk7CisJCX0gZWxzZSB7CisJCQl1c2JpcF9ldmVudF9hZGQodWQsIFZERVZfRVZFTlRfRVJST1JfVENQKTsKKwkJCXJldHVybiAtRVBJUEU7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfcmVjdl94YnVmZik7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBfX2luaXQgdXNiaXBfY29tbW9uX2luaXQodm9pZCkKK3sKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX0RFU0MgIiIgRFJJVkVSX1ZFUlNJT04pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2JpcF9jb21tb25fZXhpdCh2b2lkKQoreworCXJldHVybjsKK30KKworCisKKworbW9kdWxlX2luaXQodXNiaXBfY29tbW9uX2luaXQpOworbW9kdWxlX2V4aXQodXNiaXBfY29tbW9uX2V4aXQpOworCitNT0RVTEVfQVVUSE9SKERSSVZFUl9BVVRIT1IpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uaCBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDE4NmI3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2NvbW1vbi5oCkBAIC0wLDAgKzEsNDA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaWZuZGVmIF9fVkhDSV9DT01NT05fSAorI2RlZmluZSBfX1ZIQ0lfQ09NTU9OX0gKKworCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKyNpbmNsdWRlIDxuZXQvc29jay5oPgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKgorICogZGVmaW5lIG1hY3JvcyB0byBwcmludCBtZXNzYWdlcworICovCisKKy8qKgorICogdWRiZyAtIHByaW50IGRlYnVnIG1lc3NhZ2VzIGlmIENPTkZJR19VU0JfREVCVUcgaXMgZGVmaW5lZAorICogQGZtdDoKKyAqIEBhcmdzOgorICovCisKKyNpZmRlZiBDT05GSUdfVVNCX0RFQlVHCisKKyNkZWZpbmUgdWRiZyhmbXQsIGFyZ3MuLi4pCQkJCQkJXAorCWRvIHsJCQkJCQkJCVwKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiUtMTBzOiglcywlZCkgJXM6ICIgZm10LAkJXAorCQkJKGluX2ludGVycnVwdCgpID8gImludGVycnVwdCIgOiAoY3VycmVudCktPmNvbW0pLFwKKwkJCV9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18sICMjYXJncyk7CVwKKwl9IHdoaWxlICgwKQorCisjZWxzZSAgLyogQ09ORklHX1VTQl9ERUJVRyAqLworCisjZGVmaW5lIHVkYmcoZm10LCBhcmdzLi4uKQkJZG8geyB9IHdoaWxlICgwKQorCisjZW5kaWYgLyogQ09ORklHX1VTQl9ERUJVRyAqLworCisKK2VudW0geworCXVzYmlwX2RlYnVnX3htaXQJPSAoMSA8PCAwKSwKKwl1c2JpcF9kZWJ1Z19zeXNmcwk9ICgxIDw8IDEpLAorCXVzYmlwX2RlYnVnX3VyYgkJPSAoMSA8PCAyKSwKKwl1c2JpcF9kZWJ1Z19laAkJPSAoMSA8PCAzKSwKKworCXVzYmlwX2RlYnVnX3N0dWJfY21wCT0gKDEgPDwgOCksCisJdXNiaXBfZGVidWdfc3R1Yl9kZXYJPSAoMSA8PCA5KSwKKwl1c2JpcF9kZWJ1Z19zdHViX3J4CT0gKDEgPDwgMTApLAorCXVzYmlwX2RlYnVnX3N0dWJfdHgJPSAoMSA8PCAxMSksCisKKwl1c2JpcF9kZWJ1Z192aGNpX3JoCT0gKDEgPDwgOCksCisJdXNiaXBfZGVidWdfdmhjaV9oYwk9ICgxIDw8IDkpLAorCXVzYmlwX2RlYnVnX3ZoY2lfcngJPSAoMSA8PCAxMCksCisJdXNiaXBfZGVidWdfdmhjaV90eAk9ICgxIDw8IDExKSwKKwl1c2JpcF9kZWJ1Z192aGNpX3N5c2ZzICA9ICgxIDw8IDEyKQorfTsKKworI2RlZmluZSBkYmdfZmxhZ194bWl0CQkodXNiaXBfZGVidWdfZmxhZyAmIHVzYmlwX2RlYnVnX3htaXQpCisjZGVmaW5lIGRiZ19mbGFnX3ZoY2lfcmgJKHVzYmlwX2RlYnVnX2ZsYWcgJiB1c2JpcF9kZWJ1Z192aGNpX3JoKQorI2RlZmluZSBkYmdfZmxhZ192aGNpX2hjCSh1c2JpcF9kZWJ1Z19mbGFnICYgdXNiaXBfZGVidWdfdmhjaV9oYykKKyNkZWZpbmUgZGJnX2ZsYWdfdmhjaV9yeAkodXNiaXBfZGVidWdfZmxhZyAmIHVzYmlwX2RlYnVnX3ZoY2lfcngpCisjZGVmaW5lIGRiZ19mbGFnX3ZoY2lfdHgJKHVzYmlwX2RlYnVnX2ZsYWcgJiB1c2JpcF9kZWJ1Z192aGNpX3R4KQorI2RlZmluZSBkYmdfZmxhZ192aGNpX3N5c2ZzCSh1c2JpcF9kZWJ1Z19mbGFnICYgdXNiaXBfZGVidWdfdmhjaV9zeXNmcykKKyNkZWZpbmUgZGJnX2ZsYWdfc3R1Yl9yeAkodXNiaXBfZGVidWdfZmxhZyAmIHVzYmlwX2RlYnVnX3N0dWJfcngpCisjZGVmaW5lIGRiZ19mbGFnX3N0dWJfdHgJKHVzYmlwX2RlYnVnX2ZsYWcgJiB1c2JpcF9kZWJ1Z19zdHViX3R4KQorCitleHRlcm4gdW5zaWduZWQgbG9uZyB1c2JpcF9kZWJ1Z19mbGFnOworZXh0ZXJuIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3VzYmlwX2RlYnVnOworCisjZGVmaW5lIGRiZ193aXRoX2ZsYWcoZmxhZywgZm10LCBhcmdzLi4uKQkJXAorCWRvIHsJCQkJCQlcCisJCWlmIChmbGFnICYgdXNiaXBfZGVidWdfZmxhZykJCVwKKwkJCXVkYmcoZm10ICwgIyNhcmdzKTsJCVwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGRiZ19zeXNmcyhmbXQsIGFyZ3MuLi4pCQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z19zeXNmcywgZm10ICwgIyNhcmdzKQorI2RlZmluZSBkYmdfeG1pdChmbXQsIGFyZ3MuLi4pCQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z194bWl0LCBmbXQgLCAjI2FyZ3MpCisjZGVmaW5lIGRiZ191cmIoZm10LCBhcmdzLi4uKQkJXAorCWRiZ193aXRoX2ZsYWcodXNiaXBfZGVidWdfdXJiLCBmbXQgLCAjI2FyZ3MpCisjZGVmaW5lIGRiZ19laChmbXQsIGFyZ3MuLi4pCQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z19laCwgZm10ICwgIyNhcmdzKQorCisjZGVmaW5lIGRiZ192aGNpX3JoKGZtdCwgYXJncy4uLikJXAorCWRiZ193aXRoX2ZsYWcodXNiaXBfZGVidWdfdmhjaV9yaCwgZm10ICwgIyNhcmdzKQorI2RlZmluZSBkYmdfdmhjaV9oYyhmbXQsIGFyZ3MuLi4pCVwKKwlkYmdfd2l0aF9mbGFnKHVzYmlwX2RlYnVnX3ZoY2lfaGMsIGZtdCAsICMjYXJncykKKyNkZWZpbmUgZGJnX3ZoY2lfcngoZm10LCBhcmdzLi4uKQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z192aGNpX3J4LCBmbXQgLCAjI2FyZ3MpCisjZGVmaW5lIGRiZ192aGNpX3R4KGZtdCwgYXJncy4uLikJXAorCWRiZ193aXRoX2ZsYWcodXNiaXBfZGVidWdfdmhjaV90eCwgZm10ICwgIyNhcmdzKQorI2RlZmluZSBkYmdfdmhjaV9zeXNmcyhmbXQsIGFyZ3MuLi4pCVwKKwlkYmdfd2l0aF9mbGFnKHVzYmlwX2RlYnVnX3ZoY2lfc3lzZnMsIGZtdCAsICMjYXJncykKKworI2RlZmluZSBkYmdfc3R1Yl9jbXAoZm10LCBhcmdzLi4uKQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z19zdHViX2NtcCwgZm10ICwgIyNhcmdzKQorI2RlZmluZSBkYmdfc3R1Yl9yeChmbXQsIGFyZ3MuLi4pCVwKKwlkYmdfd2l0aF9mbGFnKHVzYmlwX2RlYnVnX3N0dWJfcngsIGZtdCAsICMjYXJncykKKyNkZWZpbmUgZGJnX3N0dWJfdHgoZm10LCBhcmdzLi4uKQlcCisJZGJnX3dpdGhfZmxhZyh1c2JpcF9kZWJ1Z19zdHViX3R4LCBmbXQgLCAjI2FyZ3MpCisKKworLyoqCisgKiB1ZXJyIC0gcHJpbnQgZXJyb3IgbWVzc2FnZXMKKyAqIEBmbXQ6CisgKiBAYXJnczoKKyAqLworI2RlZmluZSB1ZXJyKGZtdCwgYXJncy4uLikJCQkJCQlcCisJZG8gewkJCQkJCQkJXAorCQlwcmludGsoS0VSTl9FUlIgIiUtMTBzOiAqKipFUlJPUioqKiAoJXMsJWQpICVzOiAiIGZtdCwJXAorCQkJKGluX2ludGVycnVwdCgpID8gImludGVycnVwdCIgOiAoY3VycmVudCktPmNvbW0pLFwKKwkJCV9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18sICMjYXJncyk7CVwKKwl9IHdoaWxlICgwKQorCisvKioKKyAqIHVpbmZvIC0gcHJpbnQgaW5mb3JtYXRpb24gbWVzc2FnZXMKKyAqIEBmbXQ6CisgKiBAYXJnczoKKyAqLworI2RlZmluZSB1aW5mbyhmbXQsIGFyZ3MuLi4pCQkJCQlcCisJZG8gewkJCQkJCQlcCisJCXByaW50ayhLRVJOX0lORk8gInVzYmlwOiAiIGZtdCAsICMjIGFyZ3MpOwlcCisJfSB3aGlsZSAoMCkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKgorICogVVNCL0lQIHJlcXVlc3QgaGVhZGVycy4KKyAqIEN1cnJlbnRseSwgd2UgZGVmaW5lIDQgcmVxdWVzdCB0eXBlczoKKyAqCisgKiAgLSBDTURfU1VCTUlUIHRyYW5zZmVycyBhIFVTQiByZXF1ZXN0LCBjb3JyZXNwb25kaW5nIHRvIHVzYl9zdWJtaXRfdXJiKCkuCisgKiAgICAoY2xpZW50IHRvIHNlcnZlcikKKyAqICAtIFJFVF9SRVRVUk4gdHJhbnNmZXJzIHRoZSByZXN1bHQgb2YgQ01EX1NVQk1JVC4KKyAqICAgIChzZXJ2ZXIgdG8gY2xpZW50KQorICogIC0gQ01EX1VOTElOSyB0cmFuc2ZlcnMgYW4gdW5saW5rIHJlcXVlc3Qgb2YgYSBwZW5kaW5nIFVTQiByZXF1ZXN0LgorICogICAgKGNsaWVudCB0byBzZXJ2ZXIpCisgKiAgLSBSRVRfVU5MSU5LIHRyYW5zZmVycyB0aGUgcmVzdWx0IG9mIENNRF9VTkxJTksuCisgKiAgICAoc2VydmVyIHRvIGNsaWVudCkKKyAqCisgKiBOb3RlOiBUaGUgYmVsb3cgcmVxdWVzdCBmb3JtYXRzIGFyZSBiYXNlZCBvbiB0aGUgVVNCIHN1YnN5c3RlbSBvZiBMaW51eC4gSXRzCisgKiBkZXRhaWxzIHdpbGwgYmUgZGVmaW5lZCB3aGVuIG90aGVyIGltcGxlbWVudGF0aW9ucyBjb21lLgorICoKKyAqCisgKi8KKworLyoKKyAqIEEgYmFzaWMgaGVhZGVyIGZvbGxvd2VkIGJ5IG90aGVyIGFkZGl0aW9uYWwgaGVhZGVycy4KKyAqLworc3RydWN0IHVzYmlwX2hlYWRlcl9iYXNpYyB7CisjZGVmaW5lIFVTQklQX0NNRF9TVUJNSVQJMHgwMDAxCisjZGVmaW5lIFVTQklQX0NNRF9VTkxJTksJMHgwMDAyCisjZGVmaW5lIFVTQklQX1JFVF9TVUJNSVQJMHgwMDAzCisjZGVmaW5lIFVTQklQX1JFVF9VTkxJTksJMHgwMDA0CisJX191MzIgY29tbWFuZDsKKworCSAvKiBzZXF1ZW5jaWFsIG51bWJlciB3aGljaCBpZGVudGlmaWVzIHJlcXVlc3RzLgorCSAgKiBpbmNyZW1lbnRlZCBwZXIgY29ubmVjdGlvbnMgKi8KKwlfX3UzMiBzZXFudW07CisKKwkvKiBkZXZpZCBpcyB1c2VkIHRvIHNwZWNpZnkgYSByZW1vdGUgVVNCIGRldmljZSB1bmlxdWVseSBpbnN0ZWFkCisJICogb2YgYnVzbnVtIGFuZCBkZXZudW0gaW4gTGludXguIEluIHRoZSBjYXNlIG9mIExpbnV4IHN0dWJfZHJpdmVyLAorCSAqIHRoaXMgdmFsdWUgaXMgKChidXNudW0gPDwgMTYpIHwgZGV2bnVtKSAqLworCV9fdTMyIGRldmlkOworCisjZGVmaW5lIFVTQklQX0RJUl9PVVQJMAorI2RlZmluZSBVU0JJUF9ESVJfSU4gCTEKKwlfX3UzMiBkaXJlY3Rpb247CisJX191MzIgZXA7ICAgICAvKiBlbmRwb2ludCBudW1iZXIgKi8KK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvKgorICogQW4gYWRkaXRpb25hbCBoZWFkZXIgZm9yIGEgQ01EX1NVQk1JVCBwYWNrZXQuCisgKi8KK3N0cnVjdCB1c2JpcF9oZWFkZXJfY21kX3N1Ym1pdCB7CisJLyogdGhlc2UgdmFsdWVzIGFyZSBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgaW4gYSBVUkIuICovCisKKwkvKiB0aGUgc2FtZSBpbiBhIFVSQi4gKi8KKwlfX3UzMiB0cmFuc2Zlcl9mbGFnczsKKworCS8qIHNldCB0aGUgZm9sbG93aW5nIGRhdGEgc2l6ZSAob3V0KSwKKwkgKiBvciBleHBlY3RlZCByZWFkaW5nIGRhdGEgc2l6ZSAoaW4pICovCisJX19zMzIgdHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKKworCS8qIGl0IGlzIGRpZmZpY3VsdCBmb3IgdXNiaXAgdG8gc3luYyBmcmFtZXMgKHJlc2VydmVkIG9ubHk/KSAqLworCV9fczMyIHN0YXJ0X2ZyYW1lOworCisJLyogdGhlIG51bWJlciBvZiBpc28gZGVzY3JpcHRvcnMgdGhhdCBmb2xsb3dzIHRoaXMgaGVhZGVyICovCisJX19zMzIgbnVtYmVyX29mX3BhY2tldHM7CisKKwkvKiB0aGUgbWF4aW11bSB0aW1lIHdpdGhpbiB3aGljaCB0aGlzIHJlcXVlc3Qgd29ya3MgaW4gYSBob3N0CisJICogY29udHJvbGxlciBvZiBhIHNlcnZlciBzaWRlICovCisJX19zMzIgaW50ZXJ2YWw7CisKKwkvKiBzZXQgc2V0dXAgcGFja2V0IGRhdGEgZm9yIGEgQ1RSTCByZXF1ZXN0ICovCisJdW5zaWduZWQgY2hhciBzZXR1cFs4XTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvKgorICogQW4gYWRkaXRpb25hbCBoZWFkZXIgZm9yIGEgUkVUX1NVQk1JVCBwYWNrZXQuCisgKi8KK3N0cnVjdCB1c2JpcF9oZWFkZXJfcmV0X3N1Ym1pdCB7CisJX19zMzIgc3RhdHVzOworCV9fczMyIGFjdHVhbF9sZW5ndGg7IC8qIHJldHVybmVkIGRhdGEgbGVuZ3RoICovCisJX19zMzIgc3RhcnRfZnJhbWU7IC8qIElTTyBhbmQgSU5UICovCisJX19zMzIgbnVtYmVyX29mX3BhY2tldHM7ICAvKiBJU08gb25seSAqLworCV9fczMyIGVycm9yX2NvdW50OyAvKiBJU08gb25seSAqLworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKy8qCisgKiBBbiBhZGRpdGlvbmFsIGhlYWRlciBmb3IgYSBDTURfVU5MSU5LIHBhY2tldC4KKyAqLworc3RydWN0IHVzYmlwX2hlYWRlcl9jbWRfdW5saW5rIHsKKwlfX3UzMiBzZXFudW07IC8qIFVSQidzIHNlcW51bSB3aGljaCB3aWxsIGJlIHVubGlua2VkICovCit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworCisvKgorICogQW4gYWRkaXRpb25hbCBoZWFkZXIgZm9yIGEgUkVUX1VOTElOSyBwYWNrZXQuCisgKi8KK3N0cnVjdCB1c2JpcF9oZWFkZXJfcmV0X3VubGluayB7CisJX19zMzIgc3RhdHVzOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKworLyogdGhlIHNhbWUgYXMgdXNiX2lzb19wYWNrZXRfZGVzY3JpcHRvciBidXQgcGFja2VkIGZvciBwZHUgKi8KK3N0cnVjdCB1c2JpcF9pc29fcGFja2V0X2Rlc2NyaXB0b3IgeworCV9fdTMyIG9mZnNldDsKKwlfX3UzMiBsZW5ndGg7ICAgICAgICAgICAgLyogZXhwZWN0ZWQgbGVuZ3RoICovCisJX191MzIgYWN0dWFsX2xlbmd0aDsKKwlfX3UzMiBzdGF0dXM7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworCisvKgorICogQWxsIHVzYmlwIHBhY2tldHMgdXNlIGEgY29tbW9uIGhlYWRlciB0byBrZWVwIGNvZGUgc2ltcGxlLgorICovCitzdHJ1Y3QgdXNiaXBfaGVhZGVyIHsKKwlzdHJ1Y3QgdXNiaXBfaGVhZGVyX2Jhc2ljIGJhc2U7CisKKwl1bmlvbiB7CisJCXN0cnVjdCB1c2JpcF9oZWFkZXJfY21kX3N1Ym1pdAljbWRfc3VibWl0OworCQlzdHJ1Y3QgdXNiaXBfaGVhZGVyX3JldF9zdWJtaXQJcmV0X3N1Ym1pdDsKKwkJc3RydWN0IHVzYmlwX2hlYWRlcl9jbWRfdW5saW5rCWNtZF91bmxpbms7CisJCXN0cnVjdCB1c2JpcF9oZWFkZXJfcmV0X3VubGluawlyZXRfdW5saW5rOworCX0gdTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisKK2ludCB1c2JpcF94bWl0KGludCwgc3RydWN0IHNvY2tldCAqLCBjaGFyICosIGludCwgaW50KTsKK2ludCB1c2JpcF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IG1zZ2hkciAqLCBpbnQpOworCisKK3N0YXRpYyBpbmxpbmUgaW50IGludGVyZmFjZV90b19idXNudW0oc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTsKKwlyZXR1cm4gdWRldi0+YnVzLT5idXNudW07Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGludGVyZmFjZV90b19kZXZudW0oc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTsKKwlyZXR1cm4gdWRldi0+ZGV2bnVtOworfQorCitzdGF0aWMgaW5saW5lIGludCBpbnRlcmZhY2VfdG9faW5mbnVtKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpCit7CisJcmV0dXJuIGludGVyZmFjZS0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlcjsKK30KKworI2lmIDAKK2ludCBzZXRub2RlbGF5KHN0cnVjdCBzb2NrZXQgKik7CitpbnQgc2V0cXVpY2thY2soc3RydWN0IHNvY2tldCAqKTsKK2ludCBzZXRrZWVwYWxpdmUoc3RydWN0IHNvY2tldCAqc29ja2V0KTsKK3ZvaWQgc2V0cmV1c2Uoc3RydWN0IHNvY2tldCAqKTsKKyNlbmRpZgorCitzdHJ1Y3Qgc29ja2V0ICpzb2NrZmRfdG9fc29ja2V0KHVuc2lnbmVkIGludCk7CitpbnQgc2V0X3NvY2thZGRyKHN0cnVjdCBzb2NrZXQgKnNvY2tldCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNzKTsKKwordm9pZCB1c2JpcF9kdW1wX3VyYihzdHJ1Y3QgdXJiICpwdXJiKTsKK3ZvaWQgdXNiaXBfZHVtcF9oZWFkZXIoc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1KTsKKworCitzdHJ1Y3QgdXNiaXBfZGV2aWNlOworCitzdHJ1Y3QgdXNiaXBfdGFzayB7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQ7CisJc3RydWN0IGNvbXBsZXRpb24gdGhyZWFkX2RvbmU7CisJY2hhciAqbmFtZTsKKwl2b2lkICgqbG9vcF9vcHMpKHN0cnVjdCB1c2JpcF90YXNrICopOworfTsKKworZW51bSB1c2JpcF9zaWRlIHsKKwlVU0JJUF9WSENJLAorCVVTQklQX1NUVUIsCit9OworCitlbnVtIHVzYmlwX3N0YXR1cyB7CisJLyogc2RldiBpcyBhdmFpbGFibGUuICovCisJU0RFVl9TVF9BVkFJTEFCTEUgPSAweDAxLAorCS8qIHNkZXYgaXMgbm93IHVzZWQuICovCisJU0RFVl9TVF9VU0VELAorCS8qIHNkZXYgaXMgdW51c2FibGUgYmVjYXVzZSBvZiBhIGZhdGFsIGVycm9yLiAqLworCVNERVZfU1RfRVJST1IsCisKKwkvKiB2ZGV2IGRvZXMgbm90IGNvbm5lY3QgYSByZW1vdGUgZGV2aWNlLiAqLworCVZERVZfU1RfTlVMTCwKKwkvKiB2ZGV2IGlzIHVzZWQsIGJ1dCB0aGUgVVNCIGFkZHJlc3MgaXMgbm90IGFzc2lnbmVkIHlldCAqLworCVZERVZfU1RfTk9UQVNTSUdORUQsCisJVkRFVl9TVF9VU0VELAorCVZERVZfU1RfRVJST1IKK307CisKKy8qIGEgY29tbW9uIHN0cnVjdHVyZSBmb3Igc3R1Yl9kZXZpY2UgYW5kIHZoY2lfZGV2aWNlICovCitzdHJ1Y3QgdXNiaXBfZGV2aWNlIHsKKwllbnVtIHVzYmlwX3NpZGUgc2lkZTsKKworCWVudW0gdXNiaXBfc3RhdHVzIHN0YXR1czsKKworCS8qIGxvY2sgZm9yIHN0YXR1cyAqLworCXNwaW5sb2NrX3QgbG9jazsKKworCXN0cnVjdCBzb2NrZXQgKnRjcF9zb2NrZXQ7CisKKwlzdHJ1Y3QgdXNiaXBfdGFzayB0Y3Bfcng7CisJc3RydWN0IHVzYmlwX3Rhc2sgdGNwX3R4OworCisJLyogZXZlbnQgaGFuZGxlciAqLworI2RlZmluZSBVU0JJUF9FSF9TSFVURE9XTgkoMSA8PCAwKQorI2RlZmluZSBVU0JJUF9FSF9CWUUJCSgxIDw8IDEpCisjZGVmaW5lIFVTQklQX0VIX1JFU0VUCQkoMSA8PCAyKQorI2RlZmluZSBVU0JJUF9FSF9VTlVTQUJMRQkoMSA8PCAzKQorCisjZGVmaW5lIFNERVZfRVZFTlRfUkVNT1ZFRAkoVVNCSVBfRUhfU0hVVERPV04gfCBVU0JJUF9FSF9SRVNFVCB8IFVTQklQX0VIX0JZRSkKKyNkZWZpbmUJU0RFVl9FVkVOVF9ET1dOCQkoVVNCSVBfRUhfU0hVVERPV04gfCBVU0JJUF9FSF9SRVNFVCkKKyNkZWZpbmUJU0RFVl9FVkVOVF9FUlJPUl9UQ1AJKFVTQklQX0VIX1NIVVRET1dOIHwgVVNCSVBfRUhfUkVTRVQpCisjZGVmaW5lCVNERVZfRVZFTlRfRVJST1JfU1VCTUlUCShVU0JJUF9FSF9TSFVURE9XTiB8IFVTQklQX0VIX1JFU0VUKQorI2RlZmluZQlTREVWX0VWRU5UX0VSUk9SX01BTExPQwkoVVNCSVBfRUhfU0hVVERPV04gfCBVU0JJUF9FSF9VTlVTQUJMRSkKKworI2RlZmluZQlWREVWX0VWRU5UX1JFTU9WRUQJKFVTQklQX0VIX1NIVVRET1dOIHwgVVNCSVBfRUhfQllFKQorI2RlZmluZQlWREVWX0VWRU5UX0RPV04JCShVU0JJUF9FSF9TSFVURE9XTiB8IFVTQklQX0VIX1JFU0VUKQorI2RlZmluZQlWREVWX0VWRU5UX0VSUk9SX1RDUAkoVVNCSVBfRUhfU0hVVERPV04gfCBVU0JJUF9FSF9SRVNFVCkKKyNkZWZpbmUJVkRFVl9FVkVOVF9FUlJPUl9NQUxMT0MJKFVTQklQX0VIX1NIVVRET1dOIHwgVVNCSVBfRUhfVU5VU0FCTEUpCisKKwl1bnNpZ25lZCBsb25nIGV2ZW50OworCXN0cnVjdCB1c2JpcF90YXNrIGVoOworCXdhaXRfcXVldWVfaGVhZF90IGVoX3dhaXRxOworCisJc3RydWN0IGVoX29wcyB7CisJCXZvaWQgKCpzaHV0ZG93bikoc3RydWN0IHVzYmlwX2RldmljZSAqKTsKKwkJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgdXNiaXBfZGV2aWNlICopOworCQl2b2lkICgqdW51c2FibGUpKHN0cnVjdCB1c2JpcF9kZXZpY2UgKik7CisJfSBlaF9vcHM7Cit9OworCisKK3ZvaWQgdXNiaXBfdGFza19pbml0KHN0cnVjdCB1c2JpcF90YXNrICp1dCwgY2hhciAqLAorCQkJCXZvaWQgKCpsb29wX29wcykoc3RydWN0IHVzYmlwX3Rhc2sgKikpOworCit2b2lkIHVzYmlwX3N0YXJ0X3RocmVhZHMoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpOwordm9pZCB1c2JpcF9zdG9wX3RocmVhZHMoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpOworaW50IHVzYmlwX3RocmVhZCh2b2lkICpwYXJhbSk7CisKK3ZvaWQgdXNiaXBfcGFja19wZHUoc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1LCBzdHJ1Y3QgdXJiICp1cmIsIGludCBjbWQsCisJCQkJCQkJCWludCBwYWNrKTsKKwordm9pZCB1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4oc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1LCBpbnQgc2VuZCk7CisvKiBzb21lIG1lbWJlcnMgb2YgdXJiIG11c3QgYmUgc3Vic3RpdHV0ZWQgYmVmb3JlLiAqLworaW50IHVzYmlwX3JlY3ZfeGJ1ZmYoc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHN0cnVjdCB1cmIgKnVyYik7CisvKiBzb21lIG1lbWJlcnMgb2YgdXJiIG11c3QgYmUgc3Vic3RpdHV0ZWQgYmVmb3JlLiAqLworaW50IHVzYmlwX3JlY3ZfaXNvKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkLCBzdHJ1Y3QgdXJiICp1cmIpOwordm9pZCAqdXNiaXBfYWxsb2NfaXNvX2Rlc2NfcGR1KHN0cnVjdCB1cmIgKnVyYiwgc3NpemVfdCAqYnVmZmxlbik7CisKKworLyogdXNiaXBfZXZlbnQuYyAqLwordm9pZCB1c2JpcF9zdGFydF9laChzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCk7Cit2b2lkIHVzYmlwX3N0b3BfZWgoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpOwordm9pZCB1c2JpcF9ldmVudF9hZGQoc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHVuc2lnbmVkIGxvbmcgZXZlbnQpOworaW50IHVzYmlwX2V2ZW50X2hhcHBlbmQoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2V2ZW50LmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdXNiaXBfZXZlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzE4NTUzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2V2ZW50LmMKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBUYWthaGlybyBIaXJvZnVjaGkKKyAqCisgKiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICogVVNBLgorICovCisKKyNpbmNsdWRlICJ1c2JpcF9jb21tb24uaCIKKworc3RhdGljIGludCBldmVudF9oYW5kbGVyKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCWRiZ19laCgiZW50ZXJcbiIpOworCisJLyoKKwkgKiBFdmVudHMgYXJlIGhhbmRsZWQgYnkgb25seSB0aGlzIHRocmVhZC4KKwkgKi8KKwl3aGlsZSAodXNiaXBfZXZlbnRfaGFwcGVuZCh1ZCkpIHsKKwkJZGJnX2VoKCJwZW5kaW5nIGV2ZW50ICVseFxuIiwgdWQtPmV2ZW50KTsKKworCQkvKgorCQkgKiBOT1RFOiBzaHV0ZG93biBtdXN0IGNvbWUgZmlyc3QuCisJCSAqIFNodXRkb3duIHRoZSBkZXZpY2UuCisJCSAqLworCQlpZiAodWQtPmV2ZW50ICYgVVNCSVBfRUhfU0hVVERPV04pIHsKKwkJCXVkLT5laF9vcHMuc2h1dGRvd24odWQpOworCisJCQl1ZC0+ZXZlbnQgJj0gflVTQklQX0VIX1NIVVRET1dOOworCisJCQlicmVhazsKKwkJfQorCisJCS8qIFN0b3AgdGhlIGVycm9yIGhhbmRsZXIuICovCisJCWlmICh1ZC0+ZXZlbnQgJiBVU0JJUF9FSF9CWUUpCisJCQlyZXR1cm4gLTE7CisKKwkJLyogUmVzZXQgdGhlIGRldmljZS4gKi8KKwkJaWYgKHVkLT5ldmVudCAmIFVTQklQX0VIX1JFU0VUKSB7CisJCQl1ZC0+ZWhfb3BzLnJlc2V0KHVkKTsKKworCQkJdWQtPmV2ZW50ICY9IH5VU0JJUF9FSF9SRVNFVDsKKworCQkJYnJlYWs7CisJCX0KKworCQkvKiBNYXJrIHRoZSBkZXZpY2UgYXMgdW51c2FibGUuICovCisJCWlmICh1ZC0+ZXZlbnQgJiBVU0JJUF9FSF9VTlVTQUJMRSkgeworCQkJdWQtPmVoX29wcy51bnVzYWJsZSh1ZCk7CisKKwkJCXVkLT5ldmVudCAmPSB+VVNCSVBfRUhfVU5VU0FCTEU7CisKKwkJCWJyZWFrOworCQl9CisKKwkJLyogTk9UUkVBQ0hFRCAqLworCQlwcmludGsoS0VSTl9FUlIgIiVzOiB1bmtub3duIGV2ZW50XG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXZlbnRfaGFuZGxlcl9sb29wKHN0cnVjdCB1c2JpcF90YXNrICp1dCkKK3sKKwlzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCA9IGNvbnRhaW5lcl9vZih1dCwgc3RydWN0IHVzYmlwX2RldmljZSwgZWgpOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQlkYmdfZWgoInNpZ25hbCBjYXRjaGVkIVxuIik7CisJCQlicmVhazsKKwkJfQorCisJCWlmIChldmVudF9oYW5kbGVyKHVkKSA8IDApCisJCQlicmVhazsKKworCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUodWQtPmVoX3dhaXRxLCB1c2JpcF9ldmVudF9oYXBwZW5kKHVkKSk7CisJCWRiZ19laCgid2FrZXVwXG4iKTsKKwl9Cit9CisKK3ZvaWQgdXNiaXBfc3RhcnRfZWgoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpCit7CisJc3RydWN0IHVzYmlwX3Rhc2sgKmVoID0gJnVkLT5laDsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnVkLT5laF93YWl0cSk7CisJdWQtPmV2ZW50ID0gMDsKKworCXVzYmlwX3Rhc2tfaW5pdChlaCwgInVzYmlwX2VoIiwgZXZlbnRfaGFuZGxlcl9sb29wKTsKKworCWtlcm5lbF90aHJlYWQodXNiaXBfdGhyZWFkLCAodm9pZCAqKWVoLCAwKTsKKworCXdhaXRfZm9yX2NvbXBsZXRpb24oJmVoLT50aHJlYWRfZG9uZSk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF9zdGFydF9laCk7CisKK3ZvaWQgdXNiaXBfc3RvcF9laChzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCkKK3sKKwlzdHJ1Y3QgdXNiaXBfdGFzayAqZWggPSAmdWQtPmVoOworCisJd2FpdF9mb3JfY29tcGxldGlvbigmZWgtPnRocmVhZF9kb25lKTsKKwlkYmdfZWgoInVzYmlwX2VoIGhhcyBmaW5pc2hlZFxuIik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF9zdG9wX2VoKTsKKwordm9pZCB1c2JpcF9ldmVudF9hZGQoc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHVuc2lnbmVkIGxvbmcgZXZlbnQpCit7CisJc3Bpbl9sb2NrKCZ1ZC0+bG9jayk7CisKKwl1ZC0+ZXZlbnQgfD0gZXZlbnQ7CisKKwl3YWtlX3VwKCZ1ZC0+ZWhfd2FpdHEpOworCisJc3Bpbl91bmxvY2soJnVkLT5sb2NrKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHVzYmlwX2V2ZW50X2FkZCk7CisKK2ludCB1c2JpcF9ldmVudF9oYXBwZW5kKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCWludCBoYXBwZW5kID0gMDsKKworCXNwaW5fbG9jaygmdWQtPmxvY2spOworCisJaWYgKHVkLT5ldmVudCAhPSAwKQorCQloYXBwZW5kID0gMTsKKworCXNwaW5fdW5sb2NrKCZ1ZC0+bG9jayk7CisKKwlyZXR1cm4gaGFwcGVuZDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHVzYmlwX2V2ZW50X2hhcHBlbmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2kuaCBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzNzUxNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBUYWthaGlybyBIaXJvZnVjaGkKKyAqCisgKiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICogVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlICIuLi8uLi91c2IvY29yZS9oY2QuaCIKKworCitzdHJ1Y3QgdmhjaV9kZXZpY2UgeworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OworCisJLyoKKwkgKiBkZXZpZCBzcGVjaWZpZXMgYSByZW1vdGUgdXNiIGRldmljZSB1bmlxdWVseSBpbnN0ZWFkCisJICogb2YgY29tYmluYXRpb24gb2YgYnVzbnVtIGFuZCBkZXZudW0uCisJICovCisJX191MzIgZGV2aWQ7CisKKwkvKiBzcGVlZCBvZiBhIHJlbW90ZSBkZXZpY2UgKi8KKwllbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQ7CisKKwkvKiAgdmhjaSByb290LWh1YiBwb3J0IHRvIHdoaWNoIHRoaXMgZGV2aWNlIGlzIGF0dGFjaGVkICAqLworCV9fdTMyIHJocG9ydDsKKworCXN0cnVjdCB1c2JpcF9kZXZpY2UgdWQ7CisKKworCS8qIGxvY2sgZm9yIHRoZSBiZWxvdyBsaW5rIGxpc3RzICovCisJc3BpbmxvY2tfdCBwcml2X2xvY2s7CisKKwkvKiB2aGNpX3ByaXYgaXMgbGlua2VkIHRvIG9uZSBvZiB0aGVtLiAqLworCXN0cnVjdCBsaXN0X2hlYWQgcHJpdl90eDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHByaXZfcng7CisKKwkvKiB2aGNpX3VubGluayBpcyBsaW5rZWQgdG8gb25lIG9mIHRoZW0gKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHVubGlua190eDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHVubGlua19yeDsKKworCS8qIHZoY2lfdHggdGhyZWFkIHNsZWVwcyBmb3IgdGhpcyBxdWV1ZSAqLworCXdhaXRfcXVldWVfaGVhZF90IHdhaXRxX3R4OworfTsKKworCisvKiB1cmItPmhjcHJpdiwgdXNlIGNvbnRhaW5lcl9vZigpICovCitzdHJ1Y3QgdmhjaV9wcml2IHsKKwl1bnNpZ25lZCBsb25nIHNlcW51bTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisKKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXY7CisJc3RydWN0IHVyYiAqdXJiOworfTsKKworCitzdHJ1Y3QgdmhjaV91bmxpbmsgeworCS8qIHNlcW51bSBvZiB0aGlzIHJlcXVlc3QgKi8KKwl1bnNpZ25lZCBsb25nIHNlcW51bTsKKworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCS8qIHNlcW51bSBvZiB0aGUgdW5saW5rIHRhcmdldCAqLworCXVuc2lnbmVkIGxvbmcgdW5saW5rX3NlcW51bTsKK307CisKKy8qCisgKiBUaGUgbnVtYmVyIG9mIHBvcnRzIGlzIGxlc3MgdGhhbiAxNiA/CisgKiBVU0JfTUFYQ0hJTERSRU4gaXMgc3RhdGljYWxseSBkZWZpbmVkIHRvIDE2IGluIHVzYi5oLiAgSXRzIG1heGltdW0gdmFsdWUKKyAqIHdvdWxkIGJlIDMxIGJlY2F1c2UgdGhlIGV2ZW50X2JpdHNbMV0gb2Ygc3RydWN0IHVzYl9odWIgaXMgZGVmaW5lZCBhcworICogdW5zaWduZWQgbG9uZyBpbiBodWIuaAorICovCisjZGVmaW5lIFZIQ0lfTlBPUlRTIDgKKworLyogZm9yIHVzYl9idXMuaGNwcml2ICovCitzdHJ1Y3QgdmhjaV9oY2QgeworCXNwaW5sb2NrX3QJbG9jazsKKworCXUzMglwb3J0X3N0YXR1c1tWSENJX05QT1JUU107CisKKwl1bnNpZ25lZAlyZXN1bWluZzoxOworCXVuc2lnbmVkIGxvbmcJcmVfdGltZW91dDsKKworCWF0b21pY190IHNlcW51bTsKKworCS8qCisJICogTk9URToKKwkgKiB3SW5kZXggc2hvd3MgdGhlIHBvcnQgbnVtYmVyIGFuZCBiZWdpbnMgZnJvbSAxLgorCSAqIEJ1dCwgdGhlIGluZGV4IG9mIHRoaXMgYXJyYXkgYmVnaW5zIGZyb20gMC4KKwkgKi8KKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgdmRldltWSENJX05QT1JUU107CisKKwkvKiB2aGNpX2RldmljZSB3aGljaCBoYXMgbm90IGJlZW4gYXNzaWdlZCBpdHMgYWRkcmVzcyB5ZXQgKi8KKwlpbnQgcGVuZGluZ19wb3J0OworfTsKKworCitleHRlcm4gc3RydWN0IHZoY2lfaGNkICp0aGVfY29udHJvbGxlcjsKK2V4dGVybiBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRldl9hdHRyX2dyb3VwOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBwcm90b3R5cGUgZGVjbGFyYXRpb24gKi8KKworLyogdmhjaV9oY2QuYyAqLwordm9pZCByaF9wb3J0X2Nvbm5lY3QoaW50IHJocG9ydCwgZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVkKTsKK3ZvaWQgcmhfcG9ydF9kaXNjb25uZWN0KGludCByaHBvcnQpOwordm9pZCB2aGNpX3J4X2xvb3Aoc3RydWN0IHVzYmlwX3Rhc2sgKnV0KTsKK3ZvaWQgdmhjaV90eF9sb29wKHN0cnVjdCB1c2JpcF90YXNrICp1dCk7CisKKyNkZWZpbmUgaGFyZHdhcmUJCSgmdGhlX2NvbnRyb2xsZXItPnBkZXYuZGV2KQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCB2aGNpX2RldmljZSAqcG9ydF90b192ZGV2KF9fdTMyIHBvcnQpCit7CisJcmV0dXJuICZ0aGVfY29udHJvbGxlci0+dmRldltwb3J0XTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdmhjaV9oY2QgKmhjZF90b192aGNpKHN0cnVjdCB1c2JfaGNkICpoY2QpCit7CisJcmV0dXJuIChzdHJ1Y3QgdmhjaV9oY2QgKikgKGhjZC0+aGNkX3ByaXYpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCB1c2JfaGNkICp2aGNpX3RvX2hjZChzdHJ1Y3QgdmhjaV9oY2QgKnZoY2kpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZigodm9pZCAqKSB2aGNpLCBzdHJ1Y3QgdXNiX2hjZCwgaGNkX3ByaXYpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2UgKnZoY2lfZGV2KHN0cnVjdCB2aGNpX2hjZCAqdmhjaSkKK3sKKwlyZXR1cm4gdmhjaV90b19oY2QodmhjaSktPnNlbGYuY29udHJvbGxlcjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfaGNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1YTJlMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jCkBAIC0wLDAgKzEsMTI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IFRha2FoaXJvIEhpcm9mdWNoaQorICoKKyAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgKiBVU0EuCisgKi8KKworCisjaW5jbHVkZSAidXNiaXBfY29tbW9uLmgiCisjaW5jbHVkZSAidmhjaS5oIgorCisjZGVmaW5lIERSSVZFUl9WRVJTSU9OICIxLjAiCisjZGVmaW5lIERSSVZFUl9BVVRIT1IgIlRha2FoaXJvIEhpcm9mdWNoaSIKKyNkZWZpbmUgRFJJVkVSX0RFU0MgIlZpcnR1YWwgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBEcml2ZXIgZm9yIFVTQi9JUCIKKyNkZWZpbmUgRFJJVkVSX0xJQ0VOQ0UgIkdQTCIKK01PRFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7CitNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOworTU9EVUxFX0xJQ0VOU0UoRFJJVkVSX0xJQ0VOQ0UpOworCisKKworLyoKKyAqIFRPRE8KKyAqCS0gdXBkYXRlIHJvb3QgaHViIGVtdWxhdGlvbgorICoJLSBtb3ZlIHRoZSBlbXVsYXRpb24gY29kZSB0byB1c2VybGFuZCA/CisgKgkJcG9ydGluZyB0byBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcworICoJCW1pbmltaXplIGtlcm5lbCBjb2RlCisgKgktIGFkZCBzdXNwZW5kL3Jlc3VtZSBjb2RlCisgKgktIGNsZWFuIHVwIGV2ZXJ5dGhpbmcKKyAqLworCisKKy8qIFNlZSB1c2IgZ2FkZ2V0IGR1bW15IGhjZCAqLworCisKK3N0YXRpYyBpbnQgdmhjaV9odWJfc3RhdHVzKHN0cnVjdCB1c2JfaGNkICpoY2QsIGNoYXIgKmJ1ZmYpOworc3RhdGljIGludCB2aGNpX2h1Yl9jb250cm9sKHN0cnVjdCB1c2JfaGNkICpoY2QsIHUxNiB0eXBlUmVxLCB1MTYgd1ZhbHVlLAorCQl1MTYgd0luZGV4LCBjaGFyICpidWZmLCB1MTYgd0xlbmd0aCk7CitzdGF0aWMgaW50IHZoY2lfdXJiX2VucXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLAorCQkJCQkJCWdmcF90IG1lbV9mbGFncyk7CitzdGF0aWMgaW50IHZoY2lfdXJiX2RlcXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKTsKK3N0YXRpYyBpbnQgdmhjaV9zdGFydChzdHJ1Y3QgdXNiX2hjZCAqdmhjaV9oY2QpOworc3RhdGljIHZvaWQgdmhjaV9zdG9wKHN0cnVjdCB1c2JfaGNkICpoY2QpOworc3RhdGljIGludCB2aGNpX2dldF9mcmFtZV9udW1iZXIoc3RydWN0IHVzYl9oY2QgKmhjZCk7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRyaXZlcl9uYW1lW10gPSAidmhjaV9oY2QiOworc3RhdGljIGNvbnN0IGNoYXIgZHJpdmVyX2Rlc2NbXSA9ICJVU0IvSVAgVmlydHVhbCBIb3N0IENvbnRvcm9sbGVyIjsKKworc3RydWN0IHZoY2lfaGNkICp0aGVfY29udHJvbGxlcjsKKworc3RhdGljIGNvbnN0IGNoYXIgKmJpdF9kZXNjW10gPSB7CisJIkNPTk5FQ1RJT04iLAkJLyowKi8KKwkiRU5BQkxFIiwJCS8qMSovCisJIlNVU1BFTkQiLAkJLyoyKi8KKwkiT1ZFUl9DVVJSRU5UIiwJCS8qMyovCisJIlJFU0VUIiwJCS8qNCovCisJIlI1IiwJCS8qNSovCisJIlI2IiwJCS8qNiovCisJIlI3IiwJCS8qNyovCisJIlBPV0VSIiwJCS8qOCovCisJIkxPV1NQRUVEIiwJCS8qOSovCisJIkhJR0hTUEVFRCIsCQkvKjEwKi8KKwkiUE9SVF9URVNUIiwJCS8qMTEqLworCSJJTkRJQ0FUT1IiLAkJLyoxMiovCisJIlIxMyIsCQkvKjEzKi8KKwkiUjE0IiwJCS8qMTQqLworCSJSMTUiLAkJLyoxNSovCisJIkNfQ09OTkVDVElPTiIsCQkvKjE2Ki8KKwkiQ19FTkFCTEUiLAkJLyoxNyovCisJIkNfU1VTUEVORCIsCQkvKjE4Ki8KKwkiQ19PVkVSX0NVUlJFTlQiLAkvKjE5Ki8KKwkiQ19SRVNFVCIsCQkvKjIwKi8KKwkiUjIxIiwJCS8qMjEqLworCSJSMjIiLAkJLyoyMiovCisJIlIyMyIsCQkvKjIzKi8KKwkiUjI0IiwJCS8qMjQqLworCSJSMjUiLAkJLyoyNSovCisJIlIyNiIsCQkvKjI2Ki8KKwkiUjI3IiwJCS8qMjcqLworCSJSMjgiLAkJLyoyOCovCisJIlIyOSIsCQkvKjI5Ki8KKwkiUjMwIiwJCS8qMzAqLworCSJSMzEiLAkJLyozMSovCit9OworCisKK3N0YXRpYyB2b2lkIGR1bXBfcG9ydF9zdGF0dXModTMyIHN0YXR1cykKK3sKKwlpbnQgaSA9IDA7CisKKwlwcmludGsoS0VSTl9ERUJVRyAic3RhdHVzICUwOHg6Iiwgc3RhdHVzKTsKKwlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworCQlpZiAoc3RhdHVzICYgKDEgPDwgaSkpCisJCQlwcmludGsoIiAlcyIsIGJpdF9kZXNjW2ldKTsKKwl9CisKKwlwcmludGsoIlxuIik7Cit9CisKKworCit2b2lkIHJoX3BvcnRfY29ubmVjdChpbnQgcmhwb3J0LCBlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQpCit7CisJdW5zaWduZWQgbG9uZwlmbGFnczsKKworCWRiZ192aGNpX3JoKCJyaF9wb3J0X2Nvbm5lY3QgJWRcbiIsIHJocG9ydCk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdGhlX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKworCXRoZV9jb250cm9sbGVyLT5wb3J0X3N0YXR1c1tyaHBvcnRdIHw9IFVTQl9QT1JUX1NUQVRfQ09OTkVDVElPTgorCQl8ICgxIDw8IFVTQl9QT1JUX0ZFQVRfQ19DT05ORUNUSU9OKTsKKworCXN3aXRjaCAoc3BlZWQpIHsKKwljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQl0aGVfY29udHJvbGxlci0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PSBVU0JfUE9SVF9TVEFUX0hJR0hfU1BFRUQ7CisJCWJyZWFrOworCWNhc2UgVVNCX1NQRUVEX0xPVzoKKwkJdGhlX2NvbnRyb2xsZXItPnBvcnRfc3RhdHVzW3JocG9ydF0gfD0gVVNCX1BPUlRfU1RBVF9MT1dfU1BFRUQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCS8qIHNwaW5fbG9jaygmdGhlX2NvbnRyb2xsZXItPnZkZXZbcmhwb3J0XS51ZC5sb2NrKTsKKwkgKiB0aGVfY29udHJvbGxlci0+dmRldltyaHBvcnRdLnVkLnN0YXR1cyA9IFZERVZfQ09OTkVDVDsKKwkgKiBzcGluX3VubG9jaygmdGhlX2NvbnRyb2xsZXItPnZkZXZbcmhwb3J0XS51ZC5sb2NrKTsgKi8KKworCXRoZV9jb250cm9sbGVyLT5wZW5kaW5nX3BvcnQgPSByaHBvcnQ7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJdXNiX2hjZF9wb2xsX3JoX3N0YXR1cyh2aGNpX3RvX2hjZCh0aGVfY29udHJvbGxlcikpOworfQorCit2b2lkIHJoX3BvcnRfZGlzY29ubmVjdChpbnQgcmhwb3J0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlkYmdfdmhjaV9yaCgicmhfcG9ydF9kaXNjb25uZWN0ICVkXG4iLCByaHBvcnQpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnRoZV9jb250cm9sbGVyLT5sb2NrLCBmbGFncyk7CisJLyogc3RvcF9hY3Rpdml0eShkdW0sIGRyaXZlcik7ICovCisJdGhlX2NvbnRyb2xsZXItPnBvcnRfc3RhdHVzW3JocG9ydF0gJj0gflVTQl9QT1JUX1NUQVRfQ09OTkVDVElPTjsKKwl0aGVfY29udHJvbGxlci0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkoMSA8PCBVU0JfUE9SVF9GRUFUX0NfQ09OTkVDVElPTik7CisKKworCS8qIG5vdCB5ZXQgY29tcGxldGUgdGhlIGRpc2Nvbm5lY3Rpb24KKwkgKiBzcGluX2xvY2soJnZkZXYtPnVkLmxvY2spOworCSAqIHZkZXYtPnVkLnN0YXR1cyA9IFZIQ19TVF9ESVNDT05ORUNUOworCSAqIHNwaW5fdW5sb2NrKCZ2ZGV2LT51ZC5sb2NrKTsgKi8KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRoZV9jb250cm9sbGVyLT5sb2NrLCBmbGFncyk7Cit9CisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIFBPUlRfQ19NQVNLIFwKKwkoKFVTQl9QT1JUX1NUQVRfQ19DT05ORUNUSU9OIFwKKwkgIHwgVVNCX1BPUlRfU1RBVF9DX0VOQUJMRSBcCisJICB8IFVTQl9QT1JUX1NUQVRfQ19TVVNQRU5EIFwKKwkgIHwgVVNCX1BPUlRfU1RBVF9DX09WRVJDVVJSRU5UIFwKKwkgIHwgVVNCX1BPUlRfU1RBVF9DX1JFU0VUKSA8PCAxNikKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0bHkgdGhlIHNhbWUgYXMgZHVtbXlfaGNkLmM6ZHVtbXlfaHViX3N0YXR1cygpIHdpdGhvdXQKKyAqIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQuIEJ1dCwgaXQgaXMgbW9kaWZpZWQgdG8gcHJvdmlkZSBtdWx0aXBsZSBwb3J0cy4KKyAqCisgKiBAYnVmOiBhIGJpdG1hcCB0byBzaG93IHdoaWNoIHBvcnQgc3RhdHVzIGhhcyBiZWVuIGNoYW5nZWQuCisgKiAgYml0ICAwOiByZXNlcnZlZCBvciB1c2VkIGZvciBhbm90aGVyIHB1cnBvc2U/CisgKiAgYml0ICAxOiB0aGUgc3RhdHVzIG9mIHBvcnQgMCBoYXMgYmVlbiBjaGFuZ2VkLgorICogIGJpdCAgMjogdGhlIHN0YXR1cyBvZiBwb3J0IDEgaGFzIGJlZW4gY2hhbmdlZC4KKyAqICAuLi4KKyAqICBiaXQgIDc6IHRoZSBzdGF0dXMgb2YgcG9ydCA2IGhhcyBiZWVuIGNoYW5nZWQuCisgKiAgYml0ICA4OiB0aGUgc3RhdHVzIG9mIHBvcnQgNyBoYXMgYmVlbiBjaGFuZ2VkLgorICogIC4uLgorICogIGJpdCAxNTogdGhlIHN0YXR1cyBvZiBwb3J0IDE0IGhhcyBiZWVuIGNoYW5nZWQuCisgKgorICogU28sIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb3J0cyBpcyAzMSAoIHBvcnQgMCB0byBwb3J0IDMwKSA/CisgKgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgYWN0dWFsIHRyYW5zZmVyZWQgbGVuZ3RoIGluIGJ5dGUuIElmIG5vdGhpbmcgaGFzCisgKiBiZWVuIGNoYW5nZWQsIHJldHVybiAwLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBudW1iZXIgb2YgcG9ydHMgaXMgbGVzcyB0aGFuIG9yCisgKiBlcXVhbCB0byA2IChWSENJX05QT1JUUz09NyksIHJldHVybiAxLgorICoKKyAqLworc3RhdGljIGludCB2aGNpX2h1Yl9zdGF0dXMoc3RydWN0IHVzYl9oY2QgKmhjZCwgY2hhciAqYnVmKQoreworCXN0cnVjdCB2aGNpX2hjZAkqdmhjaTsKKwl1bnNpZ25lZCBsb25nCWZsYWdzOworCWludAkJcmV0dmFsID0gMDsKKworCS8qIHRoZSBlbm91Z2ggYnVmZmVyIGlzIGFsbG9jYXRlZCBhY2NvcmRpbmcgdG8gVVNCX01BWENISUxEUkVOICovCisJdW5zaWduZWQgbG9uZwkqZXZlbnRfYml0cyA9ICh1bnNpZ25lZCBsb25nICopIGJ1ZjsKKwlpbnQJCXJocG9ydDsKKwlpbnQJCWNoYW5nZWQgPSAwOworCisKKwkqZXZlbnRfYml0cyA9IDA7CisKKwl2aGNpID0gaGNkX3RvX3ZoY2koaGNkKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ2aGNpLT5sb2NrLCBmbGFncyk7CisJaWYgKCF0ZXN0X2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncykpIHsKKwkJZGJnX3ZoY2lfcmgoImh3IGFjY2Vzc2libGUgZmxhZyBpbiBvbj9cbiIpOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogY2hlY2sgcHNldWRvIHN0YXR1cyByZWdpc3RlciBmb3IgZWFjaCBwb3J0ICovCisJZm9yIChyaHBvcnQgPSAwOyByaHBvcnQgPCBWSENJX05QT1JUUzsgcmhwb3J0KyspIHsKKwkJaWYgKCh2aGNpLT5wb3J0X3N0YXR1c1tyaHBvcnRdICYgUE9SVF9DX01BU0spKSB7CisJCQkvKiBUaGUgc3RhdHVzIG9mIGEgcG9ydCBoYXMgYmVlbiBjaGFuZ2VkLCAqLworCQkJZGJnX3ZoY2lfcmgoInBvcnQgJWQgaXMgY2hhbmdlZFxuIiwgcmhwb3J0KTsKKworCQkJKmV2ZW50X2JpdHMgfD0gMSA8PCAocmhwb3J0ICsgMSk7CisJCQljaGFuZ2VkID0gMTsKKwkJfQorCX0KKworCXVpbmZvKCJjaGFuZ2VkICVkXG4iLCBjaGFuZ2VkKTsKKworCWlmIChoY2QtPnN0YXRlID09IEhDX1NUQVRFX1NVU1BFTkRFRCkKKwkJdXNiX2hjZF9yZXN1bWVfcm9vdF9odWIoaGNkKTsKKworCWlmIChjaGFuZ2VkKQorCQlyZXR2YWwgPSAxICsgKFZIQ0lfTlBPUlRTIC8gOCk7CisJZWxzZQorCQlyZXR2YWwgPSAwOworCitkb25lOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZoY2ktPmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKiBTZWUgaHViX2NvbmZpZ3VyZSBpbiBodWIuYyAqLworc3RhdGljIGlubGluZSB2b2lkIGh1Yl9kZXNjcmlwdG9yKHN0cnVjdCB1c2JfaHViX2Rlc2NyaXB0b3IgKmRlc2MpCit7CisJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOworCWRlc2MtPmJEZXNjcmlwdG9yVHlwZSA9IDB4Mjk7CisJZGVzYy0+YkRlc2NMZW5ndGggPSA5OworCWRlc2MtPndIdWJDaGFyYWN0ZXJpc3RpY3MgPSAoX19mb3JjZSBfX3UxNikKKwkJKF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoMHgwMDAxKSk7CisJZGVzYy0+Yk5iclBvcnRzID0gVkhDSV9OUE9SVFM7CisJZGVzYy0+Yml0bWFwWzBdID0gMHhmZjsKKwlkZXNjLT5iaXRtYXBbMV0gPSAweGZmOworfQorCitzdGF0aWMgaW50IHZoY2lfaHViX2NvbnRyb2woc3RydWN0IHVzYl9oY2QgKmhjZCwgdTE2IHR5cGVSZXEsIHUxNiB3VmFsdWUsCisJCQkgICAgdTE2IHdJbmRleCwgY2hhciAqYnVmLCB1MTYgd0xlbmd0aCkKK3sKKwlzdHJ1Y3QgdmhjaV9oY2QJKmR1bTsKKwlpbnQgICAgICAgICAgICAgcmV0dmFsID0gMDsKKwl1bnNpZ25lZCBsb25nICAgZmxhZ3M7CisJaW50CQlyaHBvcnQ7CisKKwl1MzIgcHJldl9wb3J0X3N0YXR1c1tWSENJX05QT1JUU107CisKKwlpZiAoIXRlc3RfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKSkKKwkJcmV0dXJuIC1FVElNRURPVVQ7CisKKwkvKgorCSAqIE5PVEU6CisJICogd0luZGV4IHNob3dzIHRoZSBwb3J0IG51bWJlciBhbmQgYmVnaW5zIGZyb20gMS4KKwkgKi8KKwlkYmdfdmhjaV9yaCgidHlwZVJlcSAleCB3VmFsdWUgJXggd0luZGV4ICV4XG4iLCB0eXBlUmVxLCB3VmFsdWUsCisJCQkJCQkJCXdJbmRleCk7CisJaWYgKHdJbmRleCA+IFZIQ0lfTlBPUlRTKQorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBpbnZhbGlkIHBvcnQgbnVtYmVyICVkXG4iLCBfX2Z1bmNfXywgd0luZGV4KTsKKwlyaHBvcnQgPSAoKF9fdTgpKHdJbmRleCAmIDB4MDBmZikpIC0gMTsKKworCWR1bSA9IGhjZF90b192aGNpKGhjZCk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZHVtLT5sb2NrLCBmbGFncyk7CisKKwkvKiBzdG9yZSBvbGQgc3RhdHVzIGFuZCBjb21wYXJlIG5vdyBhbmQgb2xkIGxhdGVyICovCisJaWYgKGRiZ19mbGFnX3ZoY2lfcmgpIHsKKwkJaW50IGkgPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgVkhDSV9OUE9SVFM7IGkrKykKKwkJCXByZXZfcG9ydF9zdGF0dXNbaV0gPSBkdW0tPnBvcnRfc3RhdHVzW2ldOworCX0KKworCXN3aXRjaCAodHlwZVJlcSkgeworCWNhc2UgQ2xlYXJIdWJGZWF0dXJlOgorCQlkYmdfdmhjaV9yaCgiIENsZWFySHViRmVhdHVyZVxuIik7CisJCWJyZWFrOworCWNhc2UgQ2xlYXJQb3J0RmVhdHVyZToKKwkJc3dpdGNoICh3VmFsdWUpIHsKKwkJY2FzZSBVU0JfUE9SVF9GRUFUX1NVU1BFTkQ6CisJCQlpZiAoZHVtLT5wb3J0X3N0YXR1c1tyaHBvcnRdICYgVVNCX1BPUlRfU1RBVF9TVVNQRU5EKSB7CisJCQkJLyogMjBtc2VjIHNpZ25hbGluZyAqLworCQkJCWR1bS0+cmVzdW1pbmcgPSAxOworCQkJCWR1bS0+cmVfdGltZW91dCA9CisJCQkJCWppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDIwKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFVTQl9QT1JUX0ZFQVRfUE9XRVI6CisJCQlkYmdfdmhjaV9yaCgiIENsZWFyUG9ydEZlYXR1cmU6IFVTQl9QT1JUX0ZFQVRfUE9XRVJcbiIpOworCQkJZHVtLT5wb3J0X3N0YXR1c1tyaHBvcnRdID0gMDsKKwkJCS8qIGR1bS0+YWRkcmVzcyA9IDA7ICovCisJCQkvKiBkdW0tPmhkZXYgPSAwOyAqLworCQkJZHVtLT5yZXN1bWluZyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBVU0JfUE9SVF9GRUFUX0NfUkVTRVQ6CisJCQlkYmdfdmhjaV9yaCgiIENsZWFyUG9ydEZlYXR1cmU6ICIKKwkJCQkJIlVTQl9QT1JUX0ZFQVRfQ19SRVNFVFxuIik7CisJCQlzd2l0Y2ggKGR1bS0+dmRldltyaHBvcnRdLnNwZWVkKSB7CisJCQljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQkJCWR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkJVVNCX1BPUlRfU1RBVF9ISUdIX1NQRUVEOworCQkJCWJyZWFrOworCQkJY2FzZSBVU0JfU1BFRURfTE9XOgorCQkJCWR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkJVVNCX1BPUlRfU1RBVF9MT1dfU1BFRUQ7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0OgorCQkJZGJnX3ZoY2lfcmgoIiBDbGVhclBvcnRGZWF0dXJlOiBkZWZhdWx0ICV4XG4iLCB3VmFsdWUpOworCQkJZHVtLT5wb3J0X3N0YXR1c1tyaHBvcnRdICY9IH4oMSA8PCB3VmFsdWUpOworCQl9CisJCWJyZWFrOworCWNhc2UgR2V0SHViRGVzY3JpcHRvcjoKKwkJZGJnX3ZoY2lfcmgoIiBHZXRIdWJEZXNjcmlwdG9yXG4iKTsKKwkJaHViX2Rlc2NyaXB0b3IoKHN0cnVjdCB1c2JfaHViX2Rlc2NyaXB0b3IgKikgYnVmKTsKKwkJYnJlYWs7CisJY2FzZSBHZXRIdWJTdGF0dXM6CisJCWRiZ192aGNpX3JoKCIgR2V0SHViU3RhdHVzXG4iKTsKKwkJKihfX2xlMzIgKikgYnVmID0gX19jb25zdGFudF9jcHVfdG9fbGUzMigwKTsKKwkJYnJlYWs7CisJY2FzZSBHZXRQb3J0U3RhdHVzOgorCQlkYmdfdmhjaV9yaCgiIEdldFBvcnRTdGF0dXMgcG9ydCAleFxuIiwgd0luZGV4KTsKKwkJaWYgKHdJbmRleCA+IFZIQ0lfTlBPUlRTIHx8IHdJbmRleCA8IDEpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiJXM6IGludmFsaWQgcG9ydCBudW1iZXIgJWRcbiIsCisJCQkgICAgICAgX19mdW5jX18sIHdJbmRleCk7CisJCQlyZXR2YWwgPSAtRVBJUEU7CisJCX0KKworCQkvKiB3ZSBkbyBubyBjYXJlIG9mIHJlc3VtZS4gKi8KKworCQkvKiB3aG9ldmVyIHJlc2V0cyBvciByZXN1bWVzIG11c3QgR2V0UG9ydFN0YXR1cyB0bworCQkgKiBjb21wbGV0ZSBpdCEhCisJCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCQlpZiAoZHVtLT5yZXN1bWluZyAmJiB0aW1lX2FmdGVyKGppZmZpZXMsIGR1bS0+cmVfdGltZW91dCkpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiJXM6IG5vdCB5ZXRcbiIsIF9fZnVuY19fKTsKKwkJCWR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkoMSA8PCBVU0JfUE9SVF9GRUFUX0NfU1VTUEVORCk7CisJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gJj0KKwkJCQkJfigxIDw8IFVTQl9QT1JUX0ZFQVRfU1VTUEVORCk7CisJCQlkdW0tPnJlc3VtaW5nID0gMDsKKwkJCWR1bS0+cmVfdGltZW91dCA9IDA7CisJCQkvKiBpZiAoZHVtLT5kcml2ZXIgJiYgZHVtLT5kcml2ZXItPnJlc3VtZSkgeworCQkJICoJc3Bpbl91bmxvY2sgKCZkdW0tPmxvY2spOworCQkJICoJZHVtLT5kcml2ZXItPnJlc3VtZSAoJmR1bS0+Z2FkZ2V0KTsKKwkJCSAqCXNwaW5fbG9jayAoJmR1bS0+bG9jayk7CisJCQkgKiB9ICovCisJCX0KKworCQlpZiAoKGR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSAmICgxIDw8IFVTQl9QT1JUX0ZFQVRfUkVTRVQpKSAhPQorCQkJCTAgJiYgdGltZV9hZnRlcihqaWZmaWVzLCBkdW0tPnJlX3RpbWVvdXQpKSB7CisJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gfD0KKwkJCQkJCSgxIDw8IFVTQl9QT1JUX0ZFQVRfQ19SRVNFVCk7CisJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gJj0KKwkJCQkJCX4oMSA8PCBVU0JfUE9SVF9GRUFUX1JFU0VUKTsKKwkJCWR1bS0+cmVfdGltZW91dCA9IDA7CisKKwkJCWlmIChkdW0tPnZkZXZbcmhwb3J0XS51ZC5zdGF0dXMgPT0KKwkJCQkJCQlWREVWX1NUX05PVEFTU0lHTkVEKSB7CisJCQkJZGJnX3ZoY2lfcmgoIiBlbmFibGUgcmhwb3J0ICVkIChzdGF0dXMgJXUpXG4iLAorCQkJCQkJcmhwb3J0LAorCQkJCQkJZHVtLT52ZGV2W3JocG9ydF0udWQuc3RhdHVzKTsKKwkJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gfD0KKwkJCQkJCQlVU0JfUE9SVF9TVEFUX0VOQUJMRTsKKwkJCX0KKyNpZiAwCisJCQlpZiAoZHVtLT5kcml2ZXIpIHsKKworCQkJCWR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkJCVVTQl9QT1JUX1NUQVRfRU5BQkxFOworCQkJCS8qIGdpdmUgaXQgdGhlIGJlc3Qgc3BlZWQgd2UgYWdyZWUgb24gKi8KKwkJCQlkdW0tPmdhZGdldC5zcGVlZCA9IGR1bS0+ZHJpdmVyLT5zcGVlZDsKKwkJCQlkdW0tPmdhZGdldC5lcDAtPm1heHBhY2tldCA9IDY0OworCQkJCXN3aXRjaCAoZHVtLT5nYWRnZXQuc3BlZWQpIHsKKwkJCQljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQkJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gfD0KKwkJCQkJVVNCX1BPUlRfU1RBVF9ISUdIX1NQRUVEOworCQkJCQlicmVhazsKKwkJCQljYXNlIFVTQl9TUEVFRF9MT1c6CisJCQkJCWR1bS0+Z2FkZ2V0LmVwMC0+bWF4cGFja2V0ID0gODsKKwkJCQkJZHVtLT5wb3J0X3N0YXR1c1tyaHBvcnRdIHw9CisJCQkJCVVTQl9QT1JUX1NUQVRfTE9XX1NQRUVEOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlkdW0tPmdhZGdldC5zcGVlZCA9IFVTQl9TUEVFRF9GVUxMOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisjZW5kaWYKKworCQl9CisJCSgodTE2ICopIGJ1ZilbMF0gPSBjcHVfdG9fbGUxNihkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0pOworCQkoKHUxNiAqKSBidWYpWzFdID0KKwkJCQljcHVfdG9fbGUxNihkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gPj4gMTYpOworCisJCWRiZ192aGNpX3JoKCIgR2V0UG9ydFN0YXR1cyBieWUgJXggJXhcbiIsICgodTE2ICopYnVmKVswXSwKKwkJCQkJCQkoKHUxNiAqKWJ1ZilbMV0pOworCQlicmVhazsKKwljYXNlIFNldEh1YkZlYXR1cmU6CisJCWRiZ192aGNpX3JoKCIgU2V0SHViRmVhdHVyZVxuIik7CisJCXJldHZhbCA9IC1FUElQRTsKKwkJYnJlYWs7CisJY2FzZSBTZXRQb3J0RmVhdHVyZToKKwkJc3dpdGNoICh3VmFsdWUpIHsKKwkJY2FzZSBVU0JfUE9SVF9GRUFUX1NVU1BFTkQ6CisJCQlkYmdfdmhjaV9yaCgiIFNldFBvcnRGZWF0dXJlOiAiCisJCQkJCSJVU0JfUE9SVF9GRUFUX1NVU1BFTkRcbiIpOworCQkJcHJpbnRrKEtFUk5fRVJSICIlczogbm90IHlldFxuIiwgX19mdW5jX18pOworI2lmIDAKKwkJCWR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSB8PQorCQkJCQkJKDEgPDwgVVNCX1BPUlRfRkVBVF9TVVNQRU5EKTsKKwkJCWlmIChkdW0tPmRyaXZlci0+c3VzcGVuZCkgeworCQkJCXNwaW5fdW5sb2NrKCZkdW0tPmxvY2spOworCQkJCWR1bS0+ZHJpdmVyLT5zdXNwZW5kKCZkdW0tPmdhZGdldCk7CisJCQkJc3Bpbl9sb2NrKCZkdW0tPmxvY2spOworCQkJfQorI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBVU0JfUE9SVF9GRUFUX1JFU0VUOgorCQkJZGJnX3ZoY2lfcmgoIiBTZXRQb3J0RmVhdHVyZTogVVNCX1BPUlRfRkVBVF9SRVNFVFxuIik7CisJCQkvKiBpZiBpdCdzIGFscmVhZHkgcnVubmluZywgZGlzY29ubmVjdCBmaXJzdCAqLworCQkJaWYgKGR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSAmIFVTQl9QT1JUX1NUQVRfRU5BQkxFKSB7CisJCQkJZHVtLT5wb3J0X3N0YXR1c1tyaHBvcnRdICY9CisJCQkJCQl+KFVTQl9QT1JUX1NUQVRfRU5BQkxFIHwKKwkJCQkJCSAgVVNCX1BPUlRfU1RBVF9MT1dfU1BFRUQgfAorCQkJCQkJICBVU0JfUE9SVF9TVEFUX0hJR0hfU1BFRUQpOworI2lmIDAKKwkJCQlpZiAoZHVtLT5kcml2ZXIpIHsKKwkJCQkJZGV2X2RiZyhoYXJkd2FyZSwgImRpc2Nvbm5lY3RcbiIpOworCQkJCQlzdG9wX2FjdGl2aXR5KGR1bSwgZHVtLT5kcml2ZXIpOworCQkJCX0KKyNlbmRpZgorCisJCQkJLyogRklYTUUgdGVzdCB0aGF0IGNvZGUgcGF0aCEgKi8KKwkJCX0KKwkJCS8qIDUwbXNlYyByZXNldCBzaWduYWxpbmcgKi8KKwkJCWR1bS0+cmVfdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDUwKTsKKworCQkJLyogRkFMTFRIUk9VR0ggKi8KKwkJZGVmYXVsdDoKKwkJCWRiZ192aGNpX3JoKCIgU2V0UG9ydEZlYXR1cmU6IGRlZmF1bHQgJWRcbiIsIHdWYWx1ZSk7CisJCQlkdW0tPnBvcnRfc3RhdHVzW3JocG9ydF0gfD0gKDEgPDwgd1ZhbHVlKTsKKwkJfQorCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGRlZmF1bHQ6IG5vIHN1Y2ggcmVxdWVzdFxuIiwgX19mdW5jX18pOworCQkvKiBkZXZfZGJnIChoYXJkd2FyZSwKKwkJICoJCSJodWIgY29udHJvbCByZXElMDR4IHYlMDR4IGklMDR4IGwlZFxuIiwKKwkJICoJCXR5cGVSZXEsIHdWYWx1ZSwgd0luZGV4LCB3TGVuZ3RoKTsgKi8KKworCQkvKiAicHJvdG9jb2wgc3RhbGwiIG9uIGVycm9yICovCisJCXJldHZhbCA9IC1FUElQRTsKKwl9CisKKwlpZiAoZGJnX2ZsYWdfdmhjaV9yaCkgeworCQlwcmludGsoS0VSTl9ERUJVRyAicG9ydCAlZFxuIiwgcmhwb3J0KTsKKwkJZHVtcF9wb3J0X3N0YXR1cyhwcmV2X3BvcnRfc3RhdHVzW3JocG9ydF0pOworCQlkdW1wX3BvcnRfc3RhdHVzKGR1bS0+cG9ydF9zdGF0dXNbcmhwb3J0XSk7CisJfQorCWRiZ192aGNpX3JoKCIgYnllXG4iKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmR1bS0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBzdHJ1Y3QgdmhjaV9kZXZpY2UgKmdldF92ZGV2KHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQoreworCWludCBpOworCisJaWYgKCF1ZGV2KQorCQlyZXR1cm4gTlVMTDsKKworCWZvciAoaSA9IDA7IGkgPCBWSENJX05QT1JUUzsgaSsrKQorCQlpZiAodGhlX2NvbnRyb2xsZXItPnZkZXZbaV0udWRldiA9PSB1ZGV2KQorCQkJcmV0dXJuIHBvcnRfdG9fdmRldihpKTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCB2aGNpX3R4X3VyYihzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2ID0gZ2V0X3ZkZXYodXJiLT5kZXYpOworCXN0cnVjdCB2aGNpX3ByaXYgKnByaXY7CisJdW5zaWduZWQgbG9uZyBmbGFnOworCisJaWYgKCF2ZGV2KSB7CisJCWVycigiY291bGQgbm90IGdldCB2aXJ0dWFsIGRldmljZSIpOworCQkvKiBCVUcoKTsgKi8KKwkJcmV0dXJuOworCX0KKworCXNwaW5fbG9ja19pcnFzYXZlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWcpOworCisJcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2aGNpX3ByaXYpLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXByaXYpIHsKKwkJZGV2X2VycigmdXJiLT5kZXYtPmRldiwgIm1hbGxvYyB2aGNpX3ByaXZcbiIpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWcpOworCQl1c2JpcF9ldmVudF9hZGQoJnZkZXYtPnVkLCBWREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCXJldHVybjsKKwl9CisKKwlwcml2LT5zZXFudW0gPSBhdG9taWNfaW5jX3JldHVybigmdGhlX2NvbnRyb2xsZXItPnNlcW51bSk7CisJaWYgKHByaXYtPnNlcW51bSA9PSAweGZmZmYpCisJCXVpbmZvKCJzZXFudW0gbWF4XG4iKTsKKworCXByaXYtPnZkZXYgPSB2ZGV2OworCXByaXYtPnVyYiA9IHVyYjsKKworCXVyYi0+aGNwcml2ID0gKHZvaWQgKikgcHJpdjsKKworCisJbGlzdF9hZGRfdGFpbCgmcHJpdi0+bGlzdCwgJnZkZXYtPnByaXZfdHgpOworCisJd2FrZV91cCgmdmRldi0+d2FpdHFfdHgpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZkZXYtPnByaXZfbG9jaywgZmxhZyk7Cit9CisKK3N0YXRpYyBpbnQgdmhjaV91cmJfZW5xdWV1ZShzdHJ1Y3QgdXNiX2hjZCAqaGNkLCBzdHJ1Y3QgdXJiICp1cmIsCisJCQkgICAgZ2ZwX3QgbWVtX2ZsYWdzKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZ1cmItPmRldi0+ZGV2OworCWludCByZXQgPSAwOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlkYmdfdmhjaV9oYygiZW50ZXIsIHVzYl9oY2QgJXAgdXJiICVwIG1lbV9mbGFncyAlZFxuIiwKKwkJICAgIGhjZCwgdXJiLCBtZW1fZmxhZ3MpOworCisJLyogcGF0Y2ggdG8gdXNiX3NnX2luaXQoKSBpcyBpbiAyLjUuNjAgKi8KKwlCVUdfT04oIXVyYi0+dHJhbnNmZXJfYnVmZmVyICYmIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdGhlX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKworCS8qIGNoZWNrIEhDIGlzIGFjdGl2ZSBvciBub3QgKi8KKwlpZiAoIUhDX0lTX1JVTk5JTkcoaGNkLT5zdGF0ZSkpIHsKKwkJZGV2X2VycihkZXYsICJIQyBpcyBub3QgcnVubmluZ1xuIik7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRoZV9jb250cm9sbGVyLT5sb2NrLCBmbGFncyk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmICh1cmItPnN0YXR1cyAhPSAtRUlOUFJPR1JFU1MpIHsKKwkJZGV2X2VycihkZXYsICJVUkIgYWxyZWFkeSB1bmxpbmtlZCEsIHN0YXR1cyAlZFxuIiwgdXJiLT5zdGF0dXMpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCQlyZXR1cm4gdXJiLT5zdGF0dXM7CisJfQorCisJcmV0ID0gdXNiX2hjZF9saW5rX3VyYl90b19lcChoY2QsIHVyYik7CisJaWYgKHJldCkKKwkJZ290byBub19uZWVkX3VubGluazsKKworCS8qCisJICogVGhlIGVudW1lbGF0aW9uIHByb2Nlc3MgaXMgYXMgZm9sbG93czsKKwkgKgorCSAqICAxLiBHZXRfRGVzY3JpcHRvciByZXF1ZXN0IHRvIERldkFkZHJzKDApIEVuZFBvaW50KDApCisJICogICAgIHRvIGdldCBtYXggcGFja2V0IGxlbmd0aCBvZiBkZWZhdWx0IHBpcGUKKwkgKgorCSAqICAyLiBTZXRfQWRkcmVzcyByZXF1ZXN0IHRvIERldkFkZHIoMCkgRW5kUG9pbnQoMCkKKwkgKgorCSAqLworCisJaWYgKHVzYl9waXBlZGV2aWNlKHVyYi0+cGlwZSkgPT0gMCkgeworCQlfX3U4IHR5cGUgPSB1c2JfcGlwZXR5cGUodXJiLT5waXBlKTsKKwkJc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybHJlcSA9CisJCQkJKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikgdXJiLT5zZXR1cF9wYWNrZXQ7CisJCXN0cnVjdCB2aGNpX2RldmljZSAqdmRldiA9CisJCQkJcG9ydF90b192ZGV2KHRoZV9jb250cm9sbGVyLT5wZW5kaW5nX3BvcnQpOworCisJCWlmICh0eXBlICE9IFBJUEVfQ09OVFJPTCB8fCAhY3RybHJlcSkgeworCQkJZGV2X2VycihkZXYsICJpbnZhbGlkIHJlcXVlc3QgdG8gZGV2bnVtIDBcbiIpOworCQkJcmV0ID0gRUlOVkFMOworCQkJZ290byBub19uZWVkX3htaXQ7CisJCX0KKworCQlzd2l0Y2ggKGN0cmxyZXEtPmJSZXF1ZXN0KSB7CisJCWNhc2UgVVNCX1JFUV9TRVRfQUREUkVTUzoKKwkJCS8qIHNldF9hZGRyZXNzIG1heSBjb21lIHdoZW4gYSBkZXZpY2UgaXMgcmVzZXQgKi8KKwkJCWRldl9pbmZvKGRldiwgIlNldEFkZHJlc3MgUmVxdWVzdCAoJWQpIHRvIHBvcnQgJWRcbiIsCisJCQkJIGN0cmxyZXEtPndWYWx1ZSwgdmRldi0+cmhwb3J0KTsKKworCQkJdmRldi0+dWRldiA9IHVyYi0+ZGV2OworCisJCQlzcGluX2xvY2soJnZkZXYtPnVkLmxvY2spOworCQkJdmRldi0+dWQuc3RhdHVzID0gVkRFVl9TVF9VU0VEOworCQkJc3Bpbl91bmxvY2soJnZkZXYtPnVkLmxvY2spOworCisJCQlpZiAodXJiLT5zdGF0dXMgPT0gLUVJTlBST0dSRVNTKSB7CisJCQkJLyogVGhpcyByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuICovCisJCQkJLyogSWYgbm90IC1FSU5QUk9HUkVTUywgcG9zc2libHkgdW5saW5rZWQuICovCisJCQkJdXJiLT5zdGF0dXMgPSAwOworCQkJfQorCisJCQlnb3RvIG5vX25lZWRfeG1pdDsKKworCQljYXNlIFVTQl9SRVFfR0VUX0RFU0NSSVBUT1I6CisJCQlpZiAoY3RybHJlcS0+d1ZhbHVlID09IChVU0JfRFRfREVWSUNFIDw8IDgpKQorCQkJCWRiZ192aGNpX2hjKCJOb3QgeWV0PzogIgorCQkJCQkJIkdldF9EZXNjcmlwdG9yIHRvIGRldmljZSAwICIKKwkJCQkJCSIoZ2V0IG1heCBwaXBlIHNpemUpXG4iKTsKKworCQkJLyogRklYTUU6IHJlZmVyZW5jZSBjb3VudD8gKHVzYl9nZXRfZGV2KCkpICovCisJCQl2ZGV2LT51ZGV2ID0gdXJiLT5kZXY7CisJCQlnb3RvIG91dDsKKworCQlkZWZhdWx0OgorCQkJLyogTk9UIFJFQUNIRUQgKi8KKwkJCWRldl9lcnIoZGV2LCAiaW52YWxpZCByZXF1ZXN0IHRvIGRldm51bSAwIGJSZXF1ZXN0ICV1LCAiCisJCQkJIndWYWx1ZSAldVxuIiwgY3RybHJlcS0+YlJlcXVlc3QsCisJCQkJY3RybHJlcS0+d1ZhbHVlKTsKKwkJCXJldCA9ICAtRUlOVkFMOworCQkJZ290byBub19uZWVkX3htaXQ7CisJCX0KKworCX0KKworb3V0OgorCXZoY2lfdHhfdXJiKHVyYik7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7CisKK25vX25lZWRfeG1pdDoKKwl1c2JfaGNkX3VubGlua191cmJfZnJvbV9lcChoY2QsIHVyYik7Citub19uZWVkX3VubGluazoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJdXNiX2hjZF9naXZlYmFja191cmIodmhjaV90b19oY2QodGhlX2NvbnRyb2xsZXIpLCB1cmIsIHVyYi0+c3RhdHVzKTsKKworCXJldHVybiAwOworfQorCisvKgorICogdmhjaV9yeCBnaXZlcyBiYWNrIHRoZSB1cmIgYWZ0ZXIgcmVjZWl2aW5nIHRoZSByZXBseSBvZiB0aGUgdXJiLiAgSWYgYW4KKyAqIHVubGluayBwZHUgaXMgc2VudCBvciBub3QsIHZoY2lfcnggcmVjZWl2ZXMgYSBub3JtYWwgcmV0dXJuIHBkdSBhbmQgZ2l2ZXMKKyAqIGJhY2sgaXRzIHVyYi4gRm9yIHRoZSBkcml2ZXIgdW5saW5raW5nIHRoZSB1cmIsIHRoZSBjb250ZW50IG9mIHRoZSB1cmIgaXMKKyAqIG5vdCBpbXBvcnRhbnQsIGJ1dCB0aGUgY2FsbGluZyB0byBpdHMgY29tcGxldGlvbiBoYW5kbGVyIGlzIGltcG9ydGFudDsgdGhlCisgKiBjb21wbGV0aW9uIG9mIHVubGlua2luZyBpcyBub3RpZmllZCBieSB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICoKKyAqCisgKiBDTElFTlQgU0lERQorICoKKyAqIC0gV2hlbiB2aGNpX2hjZCByZWNlaXZlcyBSRVRfU1VCTUlULAorICoKKyAqCS0gY2FzZSAxYSkuIHRoZSB1cmIgb2YgdGhlIHBkdSBpcyBub3QgdW5saW5raW5nLgorICoJCS0gbm9ybWFsIGNhc2UKKyAqCQk9PiBqdXN0IGdpdmUgYmFjayB0aGUgdXJiCisgKgorICoJLSBjYXNlIDFiKS4gdGhlIHVyYiBvZiB0aGUgcGR1IGlzIHVubGlua2luZy4KKyAqCQktIHVzYmlwLmtvIHdpbGwgcmV0dXJuIGEgcmVwbHkgb2YgdGhlIHVubGlua2luZyByZXF1ZXN0LgorICoJCT0+IGdpdmUgYmFjayB0aGUgdXJiIG5vdyBhbmQgZ28gdG8gY2FzZSAyYikuCisgKgorICogLSBXaGVuIHZoY2lfaGNkIHJlY2VpdmVzIFJFVF9VTkxJTkssCisgKgorICoJLSBjYXNlIDJhKS4gYSBzdWJtaXQgcmVxdWVzdCBpcyBzdGlsbCBwZW5kaW5nIGluIHZoY2lfaGNkLgorICoJCS0gdXJiIHdhcyByZWFsbHkgcGVuZGluZyBpbiB1c2JpcC5rbyBhbmQgdXJiX3VubGlua191cmIoKSB3YXMKKyAqCQkgIGNvbXBsZXRlZCB0aGVyZS4KKyAqCQk9PiBmcmVlIGEgcGVuZGluZyBzdWJtaXQgcmVxdWVzdAorICoJCT0+IG5vdGlmeSB1bmxpbmsgY29tcGxldGVuZXNzIGJ5IGdpdmluZyBiYWNrIHRoZSB1cmIKKyAqCisgKgktIGNhc2UgMmIpLiBhIHN1Ym1pdCByZXF1ZXN0IGlzICpub3QqIHBlbmRpbmcgaW4gdmhjaV9oY2QuCisgKgkJLSB1cmIgd2FzIGFscmVhZHkgZ2l2ZW4gYmFjayB0byB0aGUgY29yZSBkcml2ZXIuCisgKgkJPT4gZG8gbm90IGdpdmUgYmFjayB0aGUgdXJiCisgKgorICoKKyAqIFNFUlZFUiBTSURFCisgKgorICogLSBXaGVuIHVzYmlwIHJlY2VpdmVzIENNRF9VTkxJTkssCisgKgorICoJLSBjYXNlIDNhKS4gdGhlIHVyYiBvZiB0aGUgdW5saW5rIHJlcXVlc3QgaXMgbm93IGluIHN1Ym1pc3Npb24uCisgKgkJPT4gZG8gdXNiX3VubGlua191cmIoKS4KKyAqCQk9PiBhZnRlciB0aGUgdW5saW5rIGlzIGNvbXBsZXRlZCwgc2VuZCBSRVRfVU5MSU5LLgorICoKKyAqCS0gY2FzZSAzYikuIHRoZSB1cmIgb2YgdGhlIHVubGluayByZXF1ZXN0IGlzIG5vdCBpbiBzdWJtaXNzaW9uLgorICoJCS0gbWF5IGJlIGFscmVhZHkgY29tcGxldGVkIG9yIG5ldmVyIGJlIHJlY2VpdmVkCisgKgkJPT4gc2VuZCBSRVRfVU5MSU5LCisgKgorICovCitzdGF0aWMgaW50IHZoY2lfdXJiX2RlcXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IHZoY2lfcHJpdiAqcHJpdjsKKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXY7CisKKwl1aW5mbygidmhjaV9oY2Q6IGRlcXVldWUgYSB1cmIgJXBcbiIsIHVyYik7CisKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJcHJpdiA9IHVyYi0+aGNwcml2OworCWlmICghcHJpdikgeworCQkvKiBVUkIgd2FzIG5ldmVyIGxpbmtlZCEgb3Igd2lsbCBiZSBzb29uIGdpdmVuIGJhY2sgYnkKKwkJICogdmhjaV9yeC4gKi8KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGhlX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKwkJcmV0dXJuIDA7CisJfQorCisJeworCQlpbnQgcmV0ID0gMDsKKwkJcmV0ID0gdXNiX2hjZF9jaGVja191bmxpbmtfdXJiKGhjZCwgdXJiLCBzdGF0dXMpOworCQlpZiAocmV0KSB7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkgLyogc2VuZCB1bmxpbmsgcmVxdWVzdCBoZXJlPyAqLworCXZkZXYgPSBwcml2LT52ZGV2OworCisJaWYgKCF2ZGV2LT51ZC50Y3Bfc29ja2V0KSB7CisJCS8qIHRjcCBjb25uZWN0aW9uIGlzIGNsb3NlZCAqLworCQl1bnNpZ25lZCBsb25nIGZsYWdzMjsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmdmRldi0+cHJpdl9sb2NrLCBmbGFnczIpOworCisJCXVpbmZvKCJ2aGNpX2hjZDogZGV2aWNlICVwIHNlZW1zIHRvIGJlIGRpc2Nvbm5lY3RlZFxuIiwgdmRldik7CisJCWxpc3RfZGVsKCZwcml2LT5saXN0KTsKKwkJa2ZyZWUocHJpdik7CisJCXVyYi0+aGNwcml2ID0gTlVMTDsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWdzMik7CisKKwl9IGVsc2UgeworCQkvKiB0Y3AgY29ubmVjdGlvbiBpcyBhbGl2ZSAqLworCQl1bnNpZ25lZCBsb25nIGZsYWdzMjsKKwkJc3RydWN0IHZoY2lfdW5saW5rICp1bmxpbms7CisKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnZkZXYtPnByaXZfbG9jaywgZmxhZ3MyKTsKKworCQkvKiBzZXR1cCBDTURfVU5MSU5LIHBkdSAqLworCQl1bmxpbmsgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdmhjaV91bmxpbmspLCBHRlBfQVRPTUlDKTsKKwkJaWYgKCF1bmxpbmspIHsKKwkJCXVlcnIoIm1hbGxvYyB2aGNpX3VubGlua1xuIik7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWdzMik7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCQkJdXNiaXBfZXZlbnRfYWRkKCZ2ZGV2LT51ZCwgVkRFVl9FVkVOVF9FUlJPUl9NQUxMT0MpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKworCQl1bmxpbmstPnNlcW51bSA9IGF0b21pY19pbmNfcmV0dXJuKCZ0aGVfY29udHJvbGxlci0+c2VxbnVtKTsKKwkJaWYgKHVubGluay0+c2VxbnVtID09IDB4ZmZmZikKKwkJCXVpbmZvKCJzZXFudW0gbWF4XG4iKTsKKworCQl1bmxpbmstPnVubGlua19zZXFudW0gPSBwcml2LT5zZXFudW07CisKKwkJdWluZm8oInZoY2lfaGNkOiBkZXZpY2UgJXAgc2VlbXMgdG8gYmUgc3RpbGwgY29ubmVjdGVkXG4iLAorCQkJCQkJCQkJdmRldik7CisKKwkJLyogc2VuZCBjbWRfdW5saW5rIGFuZCB0cnkgdG8gY2FuY2VsIHRoZSBwZW5kaW5nIFVSQiBpbiB0aGUKKwkJICogcGVlciAqLworCQlsaXN0X2FkZF90YWlsKCZ1bmxpbmstPmxpc3QsICZ2ZGV2LT51bmxpbmtfdHgpOworCQl3YWtlX3VwKCZ2ZGV2LT53YWl0cV90eCk7CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmRldi0+cHJpdl9sb2NrLCBmbGFnczIpOworCX0KKworCisJLyoKKwkgKiBJZiB0Y3AgY29ubmVjdGlvbiBpcyBhbGl2ZSwgd2UgaGF2ZSBzZW50IENNRF9VTkxJTksuCisJICogdmhjaV9yeCB3aWxsIHJlY2VpdmUgUkVUX1VOTElOSyBhbmQgZ2l2ZSBiYWNrIHRoZSBVUkIuCisJICogT3RoZXJ3aXNlLCB3ZSBnaXZlIGJhY2sgaXQgaGVyZS4KKwkgKi8KKwlpZiAoIXZkZXYtPnVkLnRjcF9zb2NrZXQpIHsKKwkJLyogdGNwIGNvbm5lY3Rpb24gaXMgY2xvc2VkICovCisJCXVpbmZvKCJ2aGNpX2hjZDogdmhjaV91cmJfZGVxdWV1ZSgpIGdpdmVzIGJhY2sgdXJiICVwXG4iLCB1cmIpOworCisJCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKGhjZCwgdXJiKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCQl1c2JfaGNkX2dpdmViYWNrX3VyYih2aGNpX3RvX2hjZCh0aGVfY29udHJvbGxlciksIHVyYiwKKwkJCQkJCQkJdXJiLT5zdGF0dXMpOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmdGhlX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aGVfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJZGJnX3ZoY2lfaGMoImxlYXZlXG4iKTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgdm9pZCB2aGNpX2RldmljZV91bmxpbmtfY2xlYW51cChzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYpCit7CisJc3RydWN0IHZoY2lfdW5saW5rICp1bmxpbmssICp0bXA7CisKKwlzcGluX2xvY2soJnZkZXYtPnByaXZfbG9jayk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodW5saW5rLCB0bXAsICZ2ZGV2LT51bmxpbmtfdHgsIGxpc3QpIHsKKwkJbGlzdF9kZWwoJnVubGluay0+bGlzdCk7CisJCWtmcmVlKHVubGluayk7CisJfQorCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVubGluaywgdG1wLCAmdmRldi0+dW5saW5rX3J4LCBsaXN0KSB7CisJCWxpc3RfZGVsKCZ1bmxpbmstPmxpc3QpOworCQlrZnJlZSh1bmxpbmspOworCX0KKworCXNwaW5fdW5sb2NrKCZ2ZGV2LT5wcml2X2xvY2spOworfQorCisvKgorICogVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IG9ubHkgb25lIGNvbnRleHQgYmVnaW5zIGNsZWFudXAuCisgKiBUaGlzIGlzIHdoeSBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCBiZWNvbWUgc2ltcGxlLgorICogV2UgZG8gbm90IHdhbnQgdG8gY29uc2lkZXIgcmFjZSBjb25kaXRpb24gYXMgcG9zc2libGUuCisgKi8KK3N0YXRpYyB2b2lkIHZoY2lfc2h1dGRvd25fY29ubmVjdGlvbihzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCkKK3sKKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYgPSBjb250YWluZXJfb2YodWQsIHN0cnVjdCB2aGNpX2RldmljZSwgdWQpOworCisJLyogbmVlZCB0aGlzPyBzZWUgc3R1Yl9kZXYuYyAqLworCWlmICh1ZC0+dGNwX3NvY2tldCkgeworCQl1ZGJnKCJzaHV0ZG93biB0Y3Bfc29ja2V0ICVwXG4iLCB1ZC0+dGNwX3NvY2tldCk7CisJCWtlcm5lbF9zb2NrX3NodXRkb3duKHVkLT50Y3Bfc29ja2V0LCBTSFVUX1JEV1IpOworCX0KKworCXVzYmlwX3N0b3BfdGhyZWFkcygmdmRldi0+dWQpOworCXVpbmZvKCJzdG9wIHRocmVhZHNcbiIpOworCisJLyogYWN0aXZlIGNvbm5lY3Rpb24gaXMgY2xvc2VkICovCisJaWYgKHZkZXYtPnVkLnRjcF9zb2NrZXQgIT0gTlVMTCkgeworCQlzb2NrX3JlbGVhc2UodmRldi0+dWQudGNwX3NvY2tldCk7CisJCXZkZXYtPnVkLnRjcF9zb2NrZXQgPSBOVUxMOworCX0KKwl1aW5mbygicmVsZWFzZSBzb2NrZXRcbiIpOworCisJdmhjaV9kZXZpY2VfdW5saW5rX2NsZWFudXAodmRldik7CisKKwkvKgorCSAqIHJoX3BvcnRfZGlzY29ubmVjdCgpIGlzIGEgdHJpZ2dlciBvZiAuLi4KKwkgKiAgIHVzYl9kaXNhYmxlX2RldmljZSgpOgorCSAqCWRpc2FibGUgYWxsIHRoZSBlbmRwb2ludHMgZm9yIGEgVVNCIGRldmljZS4KKwkgKiAgIHVzYl9kaXNhYmxlX2VuZHBvaW50KCk6CisJICoJZGlzYWJsZSBlbmRwb2ludHMuIHBlbmRpbmcgdXJicyBhcmUgdW5saW5rZWQoZGVxdWV1ZWQpLgorCSAqCisJICogTk9URTogQWZ0ZXIgY2FsbGluZyByaF9wb3J0X2Rpc2Nvbm5lY3QoKSwgdGhlIFVTQiBkZXZpY2UgZHJpdmVycyBvZiBhCisJICogZGV0ZWNoZWQgZGV2aWNlIHNob3VsZCByZWxlYXNlIHVzZWQgdXJicyBpbiBhIGNsZWFudXAgZnVuY3Rpb24oaS5lLgorCSAqIHh4eF9kaXNjb25uZWN0KCkpLiBUaGVyZWZvcmUsIHZoY2lfaGNkIGRvZXMgbm90IG5lZWQgdG8gcmVsZWFzZQorCSAqIHB1c2hlZCB1cmJzIGFuZCB0aGVpciBwcml2YXRlIGRhdGEgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKgorCSAqIE5PVEU6IHZoY2lfZGVxdWV1ZSgpIG11c3QgYmUgY29uc2lkZXJlZCBjYXJlZnVsbHkuIFdoZW4gc2h1dGRvd25pbmcKKwkgKiBhIGNvbm5lY3Rpb24sIHZoY2lfc2h1dGRvd25fY29ubmVjdGlvbigpIGV4cGVjdHMgdmhjaV9kZXF1ZXVlKCkKKwkgKiBnaXZlcyBiYWNrIHB1c2hlZCB1cmJzIGFuZCBmcmVlcyB0aGVpciBwcml2YXRlIGRhdGEgYnkgcmVxdWVzdCBvZgorCSAqIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIG9mIGEgVVNCIGRyaXZlci4gV2hlbiB1bmxpbmtpbmcgYSB1cmIgd2l0aCBhbgorCSAqIGFjdGl2ZSBjb25uZWN0aW9uLCB2aGNpX2RlcXVldWUoKSBkb2VzIG5vdCBnaXZlIGJhY2sgdGhlIHVyYiB3aGljaAorCSAqIGlzIGFjdHVhbGx5IGdpdmVuIGJhY2sgYnkgdmhjaV9yeCBhZnRlciByZWNlaXZpbmcgaXRzIHJldHVybiBwZHUuCisJICoKKwkgKi8KKwlyaF9wb3J0X2Rpc2Nvbm5lY3QodmRldi0+cmhwb3J0KTsKKworCXVpbmZvKCJkaXNjb25uZWN0IGRldmljZVxuIik7Cit9CisKKworc3RhdGljIHZvaWQgdmhjaV9kZXZpY2VfcmVzZXQoc3RydWN0IHVzYmlwX2RldmljZSAqdWQpCit7CisJc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2ID0gY29udGFpbmVyX29mKHVkLCBzdHJ1Y3QgdmhjaV9kZXZpY2UsIHVkKTsKKworCXNwaW5fbG9jaygmdWQtPmxvY2spOworCisJdmRldi0+c3BlZWQgID0gMDsKKwl2ZGV2LT5kZXZpZCAgPSAwOworCisJdWQtPnRjcF9zb2NrZXQgPSBOVUxMOworCisJdWQtPnN0YXR1cyA9IFZERVZfU1RfTlVMTDsKKworCXNwaW5fdW5sb2NrKCZ1ZC0+bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIHZoY2lfZGV2aWNlX3VudXNhYmxlKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkKQoreworCXNwaW5fbG9jaygmdWQtPmxvY2spOworCisJdWQtPnN0YXR1cyA9IFZERVZfU1RfRVJST1I7CisKKwlzcGluX3VubG9jaygmdWQtPmxvY2spOworfQorCitzdGF0aWMgdm9pZCB2aGNpX2RldmljZV9pbml0KHN0cnVjdCB2aGNpX2RldmljZSAqdmRldikKK3sKKwltZW1zZXQodmRldiwgMCwgc2l6ZW9mKCp2ZGV2KSk7CisKKwl1c2JpcF90YXNrX2luaXQoJnZkZXYtPnVkLnRjcF9yeCwgInZoY2lfcngiLCB2aGNpX3J4X2xvb3ApOworCXVzYmlwX3Rhc2tfaW5pdCgmdmRldi0+dWQudGNwX3R4LCAidmhjaV90eCIsIHZoY2lfdHhfbG9vcCk7CisKKwl2ZGV2LT51ZC5zaWRlICAgPSBVU0JJUF9WSENJOworCXZkZXYtPnVkLnN0YXR1cyA9IFZERVZfU1RfTlVMTDsKKwkvKiB2ZGV2LT51ZC5sb2NrICAgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7ICovCisJc3Bpbl9sb2NrX2luaXQoJnZkZXYtPnVkLmxvY2spOworCisJSU5JVF9MSVNUX0hFQUQoJnZkZXYtPnByaXZfcngpOworCUlOSVRfTElTVF9IRUFEKCZ2ZGV2LT5wcml2X3R4KTsKKwlJTklUX0xJU1RfSEVBRCgmdmRldi0+dW5saW5rX3R4KTsKKwlJTklUX0xJU1RfSEVBRCgmdmRldi0+dW5saW5rX3J4KTsKKwkvKiB2ZGV2LT5wcml2X2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7ICovCisJc3Bpbl9sb2NrX2luaXQoJnZkZXYtPnByaXZfbG9jayk7CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2ZGV2LT53YWl0cV90eCk7CisKKwl2ZGV2LT51ZC5laF9vcHMuc2h1dGRvd24gPSB2aGNpX3NodXRkb3duX2Nvbm5lY3Rpb247CisJdmRldi0+dWQuZWhfb3BzLnJlc2V0ID0gdmhjaV9kZXZpY2VfcmVzZXQ7CisJdmRldi0+dWQuZWhfb3BzLnVudXNhYmxlID0gdmhjaV9kZXZpY2VfdW51c2FibGU7CisKKwl1c2JpcF9zdGFydF9laCgmdmRldi0+dWQpOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgdmhjaV9zdGFydChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQoreworCXN0cnVjdCB2aGNpX2hjZCAqdmhjaSA9IGhjZF90b192aGNpKGhjZCk7CisJaW50IHJocG9ydDsKKwlpbnQgZXJyID0gMDsKKworCWRiZ192aGNpX2hjKCJlbnRlciB2aGNpX3N0YXJ0XG4iKTsKKworCisJLyogaW5pdGlhbGl6ZSBwcml2YXRlIGRhdGEgb2YgdXNiX2hjZCAqLworCisJZm9yIChyaHBvcnQgPSAwOyByaHBvcnQgPCBWSENJX05QT1JUUzsgcmhwb3J0KyspIHsKKwkJc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2ID0gJnZoY2ktPnZkZXZbcmhwb3J0XTsKKwkJdmhjaV9kZXZpY2VfaW5pdCh2ZGV2KTsKKwkJdmRldi0+cmhwb3J0ID0gcmhwb3J0OworCX0KKworCWF0b21pY19zZXQoJnZoY2ktPnNlcW51bSwgMCk7CisJc3Bpbl9sb2NrX2luaXQoJnZoY2ktPmxvY2spOworCisKKworCWhjZC0+cG93ZXJfYnVkZ2V0ID0gMDsgLyogbm8gbGltaXQgKi8KKwloY2QtPnN0YXRlICA9IEhDX1NUQVRFX1JVTk5JTkc7CisJaGNkLT51c2VzX25ld19wb2xsaW5nID0gMTsKKworCisJLyogdmhjaV9oY2QgaXMgbm93IHJlYWR5IHRvIGJlIGNvbnRyb2xsZWQgdGhyb3VnaCBzeXNmcyAqLworCWVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmdmhjaV9kZXYodmhjaSktPmtvYmosICZkZXZfYXR0cl9ncm91cCk7CisJaWYgKGVycikgeworCQl1ZXJyKCJjcmVhdGUgc3lzZnMgZmlsZXNcbiIpOworCQlyZXR1cm4gZXJyOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB2aGNpX3N0b3Aoc3RydWN0IHVzYl9oY2QgKmhjZCkKK3sKKwlzdHJ1Y3QgdmhjaV9oY2QgKnZoY2kgPSBoY2RfdG9fdmhjaShoY2QpOworCWludCByaHBvcnQgPSAwOworCisJZGJnX3ZoY2lfaGMoInN0b3AgVkhDSSBjb250cm9sbGVyXG4iKTsKKworCisJLyogMS4gcmVtb3ZlIHRoZSB1c2VybGFuZCBpbnRlcmZhY2Ugb2YgdmhjaV9oY2QgKi8KKwlzeXNmc19yZW1vdmVfZ3JvdXAoJnZoY2lfZGV2KHZoY2kpLT5rb2JqLCAmZGV2X2F0dHJfZ3JvdXApOworCisJLyogMi4gc2h1dGRvd24gYWxsIHRoZSBwb3J0cyBvZiB2aGNpX2hjZCAqLworCWZvciAocmhwb3J0ID0gMCA7IHJocG9ydCA8IFZIQ0lfTlBPUlRTOyByaHBvcnQrKykgeworCQlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYgPSAmdmhjaS0+dmRldltyaHBvcnRdOworCisJCXVzYmlwX2V2ZW50X2FkZCgmdmRldi0+dWQsIFZERVZfRVZFTlRfUkVNT1ZFRCk7CisJCXVzYmlwX3N0b3BfZWgoJnZkZXYtPnVkKTsKKwl9CisKKworCXVpbmZvKCJ2aGNpX3N0b3AgZG9uZVxuIik7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgdmhjaV9nZXRfZnJhbWVfbnVtYmVyKHN0cnVjdCB1c2JfaGNkICpoY2QpCit7CisJdWVycigiTm90IHlldCBpbXBsZW1lbnRlZFxuIik7CisJcmV0dXJuIDA7Cit9CisKKworI2lmZGVmIENPTkZJR19QTQorCisvKiBGSVhNRTogc3VzcGVuZC9yZXN1bWUgKi8KK3N0YXRpYyBpbnQgdmhjaV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQoreworCXN0cnVjdCB2aGNpX2hjZCAqdmhjaSA9IGhjZF90b192aGNpKGhjZCk7CisKKwlkZXZfZGJnKCZoY2QtPnNlbGYucm9vdF9odWItPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CisKKwlzcGluX2xvY2tfaXJxKCZ2aGNpLT5sb2NrKTsKKwkvKiB2aGNpLT5yaF9zdGF0ZSA9IERVTU1ZX1JIX1NVU1BFTkRFRDsKKwkgKiBzZXRfbGlua19zdGF0ZSh2aGNpKTsgKi8KKwloY2QtPnN0YXRlID0gSENfU1RBVEVfU1VTUEVOREVEOworCXNwaW5fdW5sb2NrX2lycSgmdmhjaS0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2aGNpX2J1c19yZXN1bWUoc3RydWN0IHVzYl9oY2QgKmhjZCkKK3sKKwlzdHJ1Y3QgdmhjaV9oY2QgKnZoY2kgPSBoY2RfdG9fdmhjaShoY2QpOworCWludCByYyA9IDA7CisKKwlkZXZfZGJnKCZoY2QtPnNlbGYucm9vdF9odWItPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CisKKwlzcGluX2xvY2tfaXJxKCZ2aGNpLT5sb2NrKTsKKwlpZiAoIXRlc3RfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKSkgeworCQlyYyA9IC1FU0hVVERPV047CisJfSBlbHNlIHsKKwkJLyogdmhjaS0+cmhfc3RhdGUgPSBEVU1NWV9SSF9SVU5OSU5HOworCQkgKiBzZXRfbGlua19zdGF0ZSh2aGNpKTsKKwkJICogaWYgKCFsaXN0X2VtcHR5KCZ2aGNpLT51cmJwX2xpc3QpKQorCQkgKgltb2RfdGltZXIoJnZoY2ktPnRpbWVyLCBqaWZmaWVzKTsgKi8KKwkJaGNkLT5zdGF0ZSA9IEhDX1NUQVRFX1JVTk5JTkc7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmdmhjaS0+bG9jayk7CisJcmV0dXJuIHJjOworCisJcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKKyNkZWZpbmUgdmhjaV9idXNfc3VzcGVuZCAgICAgIE5VTEwKKyNkZWZpbmUgdmhjaV9idXNfcmVzdW1lICAgICAgIE5VTEwKKyNlbmRpZgorCisKKworc3RhdGljIHN0cnVjdCBoY19kcml2ZXIgdmhjaV9oY19kcml2ZXIgPSB7CisJLmRlc2NyaXB0aW9uCT0gZHJpdmVyX25hbWUsCisJLnByb2R1Y3RfZGVzYwk9IGRyaXZlcl9kZXNjLAorCS5oY2RfcHJpdl9zaXplCT0gc2l6ZW9mKHN0cnVjdCB2aGNpX2hjZCksCisKKwkuZmxhZ3MJCT0gSENEX1VTQjIsCisKKwkuc3RhcnQJCT0gdmhjaV9zdGFydCwKKwkuc3RvcCAJCT0gdmhjaV9zdG9wLAorCisJLnVyYl9lbnF1ZXVlCT0gdmhjaV91cmJfZW5xdWV1ZSwKKwkudXJiX2RlcXVldWUJPSB2aGNpX3VyYl9kZXF1ZXVlLAorCisJLmdldF9mcmFtZV9udW1iZXIgPSB2aGNpX2dldF9mcmFtZV9udW1iZXIsCisKKwkuaHViX3N0YXR1c19kYXRhID0gdmhjaV9odWJfc3RhdHVzLAorCS5odWJfY29udHJvbCAgICA9IHZoY2lfaHViX2NvbnRyb2wsCisJLmJ1c19zdXNwZW5kCT0gdmhjaV9idXNfc3VzcGVuZCwKKwkuYnVzX3Jlc3VtZQk9IHZoY2lfYnVzX3Jlc3VtZSwKK307CisKK3N0YXRpYyBpbnQgdmhjaV9oY2RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdXNiX2hjZAkJKmhjZDsKKwlpbnQJCQlyZXQ7CisKKwl1aW5mbygicHJvdmluZy4uLlxuIik7CisKKwlkYmdfdmhjaV9oYygibmFtZSAlcyBpZCAlZFxuIiwgcGRldi0+bmFtZSwgcGRldi0+aWQpOworCisJLyogd2lsbCBiZSByZW1vdmVkICovCisJaWYgKHBkZXYtPmRldi5kbWFfbWFzaykgeworCQlkZXZfaW5mbygmcGRldi0+ZGV2LCAidmhjaV9oY2QgRE1BIG5vdCBzdXBwb3J0ZWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKgorCSAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGhjZC4KKwkgKiBPdXIgcHJpdmF0ZSBkYXRhIGlzIGFsc28gYWxsb2NhdGVkIGF1dG9tYXRpY2FsbHkuCisJICovCisJaGNkID0gdXNiX2NyZWF0ZV9oY2QoJnZoY2lfaGNfZHJpdmVyLCAmcGRldi0+ZGV2LCBwZGV2LT5kZXYuYnVzX2lkKTsKKwlpZiAoIWhjZCkgeworCQl1ZXJyKCJjcmVhdGUgaGNkIGZhaWxlZFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCisJLyogdGhpcyBpcyBwcml2YXRlIGRhdGEgZm9yIHZoY2lfaGNkICovCisJdGhlX2NvbnRyb2xsZXIgPSBoY2RfdG9fdmhjaShoY2QpOworCisJLyoKKwkgKiBGaW5pc2ggZ2VuZXJpYyBIQ0Qgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGFuZCByZWdpc3Rlci4KKwkgKiBDYWxsIHRoZSBkcml2ZXIncyByZXNldCgpIGFuZCBzdGFydCgpIHJvdXRpbmVzLgorCSAqLworCXJldCA9IHVzYl9hZGRfaGNkKGhjZCwgMCwgMCk7CisJaWYgKHJldCAhPSAwKSB7CisJCXVlcnIoInVzYl9hZGRfaGNkIGZhaWxlZCAlZFxuIiwgcmV0KTsKKwkJdXNiX3B1dF9oY2QoaGNkKTsKKwkJdGhlX2NvbnRyb2xsZXIgPSBOVUxMOworCQlyZXR1cm4gcmV0OworCX0KKworCisJZGJnX3ZoY2lfaGMoImJ5ZVxuIik7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCB2aGNpX2hjZF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdXNiX2hjZAkqaGNkOworCisJaGNkID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJaWYgKCFoY2QpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBEaXNjb25uZWN0cyB0aGUgcm9vdCBodWIsCisJICogdGhlbiByZXZlcnNlcyB0aGUgZWZmZWN0cyBvZiB1c2JfYWRkX2hjZCgpLAorCSAqIGludm9raW5nIHRoZSBIQ0QncyBzdG9wKCkgbWV0aG9kcy4KKwkgKi8KKwl1c2JfcmVtb3ZlX2hjZChoY2QpOworCXVzYl9wdXRfaGNkKGhjZCk7CisJdGhlX2NvbnRyb2xsZXIgPSBOVUxMOworCisKKwlyZXR1cm4gMDsKK30KKworCisKKyNpZmRlZiBDT05GSUdfUE0KKworLyogd2hhdCBzaG91bGQgaGFwcGVuIGZvciBVU0IvSVAgdW5kZXIgc3VzcGVuZC9yZXN1bWU/ICovCitzdGF0aWMgaW50IHZoY2lfaGNkX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0cnVjdCB1c2JfaGNkICpoY2Q7CisJaW50IHJocG9ydCA9IDA7CisJaW50IGNvbm5lY3RlZCA9IDA7CisJaW50IHJldCA9IDA7CisKKwlkZXZfZGJnKCZwZGV2LT5kZXYsICIlc1xuIiwgX19mdW5jX18pOworCisJaGNkID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwlzcGluX2xvY2soJnRoZV9jb250cm9sbGVyLT5sb2NrKTsKKworCWZvciAocmhwb3J0ID0gMDsgcmhwb3J0IDwgVkhDSV9OUE9SVFM7IHJocG9ydCsrKQorCQlpZiAodGhlX2NvbnRyb2xsZXItPnBvcnRfc3RhdHVzW3JocG9ydF0gJgorCQkJCQkJVVNCX1BPUlRfU1RBVF9DT05ORUNUSU9OKQorCQkJY29ubmVjdGVkICs9IDE7CisKKwlzcGluX3VubG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCisJaWYgKGNvbm5lY3RlZCA+IDApIHsKKwkJdWluZm8oIldlIGhhdmUgJWQgYWN0aXZlIGNvbm5lY3Rpb24lcy4gRG8gbm90IHN1c3BlbmQuXG4iLAorCQkJCWNvbm5lY3RlZCwgKGNvbm5lY3RlZCA9PSAxID8gIiIgOiAicyIpKTsKKwkJcmV0ID0gIC1FQlVTWTsKKwl9IGVsc2UgeworCQl1aW5mbygic3VzcGVuZCB2aGNpX2hjZCIpOworCQljbGVhcl9iaXQoSENEX0ZMQUdfSFdfQUNDRVNTSUJMRSwgJmhjZC0+ZmxhZ3MpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdmhjaV9oY2RfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IHVzYl9oY2QgKmhjZDsKKworCWRldl9kYmcoJnBkZXYtPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CisKKwloY2QgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzZXRfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKTsKKwl1c2JfaGNkX3BvbGxfcmhfc3RhdHVzKGhjZCk7CisKKwlyZXR1cm4gMDsKK30KKworI2Vsc2UKKworI2RlZmluZSB2aGNpX2hjZF9zdXNwZW5kCU5VTEwKKyNkZWZpbmUgdmhjaV9oY2RfcmVzdW1lCQlOVUxMCisKKyNlbmRpZgorCisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZoY2lfZHJpdmVyID0geworCS5wcm9iZQk9IHZoY2lfaGNkX3Byb2JlLAorCS5yZW1vdmUJPSBfX2RldmV4aXRfcCh2aGNpX2hjZF9yZW1vdmUpLAorCS5zdXNwZW5kID0gdmhjaV9oY2Rfc3VzcGVuZCwKKwkucmVzdW1lCT0gdmhjaV9oY2RfcmVzdW1lLAorCS5kcml2ZXIJPSB7CisJCS5uYW1lID0gKGNoYXIgKikgZHJpdmVyX25hbWUsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCX0sCit9OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKgorICogVGhlIFZIQ0kgJ2RldmljZScgaXMgJ3ZpcnR1YWwnOyBub3QgYSByZWFsIHBsdWcmcGxheSBoYXJkd2FyZS4KKyAqIFdlIG5lZWQgdG8gYWRkIHRoaXMgdmlydHVhbCBkZXZpY2UgYXMgYSBwbGF0Zm9ybSBkZXZpY2UgYXJiaXRyYXJpbHk6CisgKgkxLiBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoKQorICovCitzdGF0aWMgdm9pZCB0aGVfcGRldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHRoZV9wZGV2ID0geworCS8qIHNob3VsZCBiZSB0aGUgc2FtZSBuYW1lIGFzIGRyaXZlcl9uYW1lICovCisJLm5hbWUgPSAoY2hhciAqKSBkcml2ZXJfbmFtZSwKKwkuaWQgPSAtMSwKKwkuZGV2ID0geworCQkvKiAuZHJpdmVyID0gJnZoY2lfZHJpdmVyLCAqLworCQkucmVsZWFzZSA9IHRoZV9wZGV2X3JlbGVhc2UsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHZoY2lfaW5pdCh2b2lkKQoreworCWludCByZXQ7CisKKwlkYmdfdmhjaV9oYygiZW50ZXJcbiIpOworCWlmICh1c2JfZGlzYWJsZWQoKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICVzLCAlc1xuIiwgZHJpdmVyX25hbWUsCisJICAgICAgIERSSVZFUl9WRVJTSU9OKTsKKworCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdmhjaV9kcml2ZXIpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9kcml2ZXJfcmVnaXN0ZXI7CisKKwlyZXQgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRoZV9wZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyOworCisJZGJnX3ZoY2lfaGMoImJ5ZVxuIik7CisJcmV0dXJuIHJldDsKKworCS8qIGVycm9yIG9jY3VycmVkICovCitlcnJfcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyOgorCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZ2aGNpX2RyaXZlcik7CisKK2Vycl9kcml2ZXJfcmVnaXN0ZXI6CisJZGJnX3ZoY2lfaGMoImJ5ZVxuIik7CisJcmV0dXJuIHJldDsKK30KK21vZHVsZV9pbml0KHZoY2lfaW5pdCk7CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB2aGNpX2NsZWFudXAodm9pZCkKK3sKKwlkYmdfdmhjaV9oYygiZW50ZXJcbiIpOworCisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoJnRoZV9wZGV2KTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdmhjaV9kcml2ZXIpOworCisJZGJnX3ZoY2lfaGMoImJ5ZVxuIik7Cit9Cittb2R1bGVfZXhpdCh2aGNpX2NsZWFudXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX3J4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMzY2NhZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX3J4LmMKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBUYWthaGlybyBIaXJvZnVjaGkKKyAqCisgKiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICogVVNBLgorICovCisKKyNpbmNsdWRlICJ1c2JpcF9jb21tb24uaCIKKyNpbmNsdWRlICJ2aGNpLmgiCisKKworLyogZ2V0IFVSQiBmcm9tIHRyYW5zbWl0dGVkIHVyYiBxdWV1ZSAqLworc3RhdGljIHN0cnVjdCB1cmIgKnBpY2t1cF91cmJfYW5kX2ZyZWVfcHJpdihzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYsCisJCQkJCSAgICBfX3UzMiBzZXFudW0pCit7CisJc3RydWN0IHZoY2lfcHJpdiAqcHJpdiwgKnRtcDsKKwlzdHJ1Y3QgdXJiICp1cmIgPSBOVUxMOworCWludCBzdGF0dXM7CisKKwlzcGluX2xvY2soJnZkZXYtPnByaXZfbG9jayk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHJpdiwgdG1wLCAmdmRldi0+cHJpdl9yeCwgbGlzdCkgeworCQlpZiAocHJpdi0+c2VxbnVtID09IHNlcW51bSkgeworCQkJdXJiID0gcHJpdi0+dXJiOworCQkJc3RhdHVzID0gdXJiLT5zdGF0dXM7CisKKwkJCWRiZ192aGNpX3J4KCJmaW5kIHVyYiAlcCB2dXJiICVwIHNlcW51bSAldVxuIiwKKwkJCQkgICAgdXJiLCBwcml2LCBzZXFudW0pOworCisJCQkvKiBUT0RPOiBmaXggbG9naWMgaGVyZSB0byBpbXByb3ZlIGluZGVudCBzaXR1dGF0aW9uICovCisJCQlpZiAoc3RhdHVzICE9IC1FSU5QUk9HUkVTUykgeworCQkJCWlmIChzdGF0dXMgPT0gLUVOT0VOVCB8fAorCQkJCSAgICAgc3RhdHVzID09IC1FQ09OTlJFU0VUKQorCQkJCQlkZXZfaW5mbygmdXJiLT5kZXYtPmRldiwKKwkJCQkJCSAidXJiICVwIHdhcyB1bmxpbmtlZCAiCisJCQkJCQkgIiVzc3luY2hyb251b3VzbHkuXG4iLCB1cmIsCisJCQkJCQkgc3RhdHVzID09IC1FTk9FTlQgPyAiIiA6ICJhIik7CisJCQkJZWxzZQorCQkJCQlkZXZfaW5mbygmdXJiLT5kZXYtPmRldiwKKwkJCQkJCSAidXJiICVwIG1heSBiZSBpbiBhIGVycm9yLCAiCisJCQkJCQkgInN0YXR1cyAlZFxuIiwgdXJiLCBzdGF0dXMpOworCQkJfQorCisJCQlsaXN0X2RlbCgmcHJpdi0+bGlzdCk7CisJCQlrZnJlZShwcml2KTsKKwkJCXVyYi0+aGNwcml2ID0gTlVMTDsKKworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlzcGluX3VubG9jaygmdmRldi0+cHJpdl9sb2NrKTsKKworCXJldHVybiB1cmI7Cit9CisKK3N0YXRpYyB2b2lkIHZoY2lfcmVjdl9yZXRfc3VibWl0KHN0cnVjdCB2aGNpX2RldmljZSAqdmRldiwKKwkJCQkJCXN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdSkKK3sKKwlzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCA9ICZ2ZGV2LT51ZDsKKwlzdHJ1Y3QgdXJiICp1cmI7CisKKworCXVyYiA9IHBpY2t1cF91cmJfYW5kX2ZyZWVfcHJpdih2ZGV2LCBwZHUtPmJhc2Uuc2VxbnVtKTsKKworCisJaWYgKCF1cmIpIHsKKwkJdWVycigiY2Fubm90IGZpbmQgYSB1cmIgb2Ygc2VxbnVtICV1XG4iLCBwZHUtPmJhc2Uuc2VxbnVtKTsKKwkJdWluZm8oIm1heCBzZXFudW0gJWRcbiIsIGF0b21pY19yZWFkKCZ0aGVfY29udHJvbGxlci0+c2VxbnVtKSk7CisJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgVkRFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQlyZXR1cm47CisJfQorCisKKwkvKiB1bnBhY2sgdGhlIHBkdSB0byBhIHVyYiAqLworCXVzYmlwX3BhY2tfcGR1KHBkdSwgdXJiLCBVU0JJUF9SRVRfU1VCTUlULCAwKTsKKworCisJLyogcmVjdiB0cmFuc2ZlciBidWZmZXIgKi8KKwlpZiAodXNiaXBfcmVjdl94YnVmZih1ZCwgdXJiKSA8IDApCisJCXJldHVybjsKKworCisJLyogcmVjdiBpc29fcGFja2V0X2Rlc2NyaXB0b3IgKi8KKwlpZiAodXNiaXBfcmVjdl9pc28odWQsIHVyYikgPCAwKQorCQlyZXR1cm47CisKKworCWlmIChkYmdfZmxhZ192aGNpX3J4KQorCQl1c2JpcF9kdW1wX3VyYih1cmIpOworCisKKwlkYmdfdmhjaV9yeCgibm93IGdpdmViYWNrIHVyYiAlcFxuIiwgdXJiKTsKKworCXNwaW5fbG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKHZoY2lfdG9faGNkKHRoZV9jb250cm9sbGVyKSwgdXJiKTsKKwlzcGluX3VubG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCisJdXNiX2hjZF9naXZlYmFja191cmIodmhjaV90b19oY2QodGhlX2NvbnRyb2xsZXIpLCB1cmIsIHVyYi0+c3RhdHVzKTsKKworCisJZGJnX3ZoY2lfcngoIkxlYXZlXG4iKTsKKworCXJldHVybjsKK30KKworCitzdGF0aWMgc3RydWN0IHZoY2lfdW5saW5rICpkZXF1ZXVlX3BlbmRpbmdfdW5saW5rKHN0cnVjdCB2aGNpX2RldmljZSAqdmRldiwKKwkJc3RydWN0IHVzYmlwX2hlYWRlciAqcGR1KQoreworCXN0cnVjdCB2aGNpX3VubGluayAqdW5saW5rLCAqdG1wOworCisJc3Bpbl9sb2NrKCZ2ZGV2LT5wcml2X2xvY2spOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVubGluaywgdG1wLCAmdmRldi0+dW5saW5rX3J4LCBsaXN0KSB7CisJCXVpbmZvKCJ1bmxpbmstPnNlcW51bSAlbHVcbiIsIHVubGluay0+c2VxbnVtKTsKKwkJaWYgKHVubGluay0+c2VxbnVtID09IHBkdS0+YmFzZS5zZXFudW0pIHsKKwkJCWRiZ192aGNpX3J4KCJmb3VuZCBwZW5kaW5nIHVubGluaywgJWx1XG4iLAorCQkJCQkJCXVubGluay0+c2VxbnVtKTsKKwkJCWxpc3RfZGVsKCZ1bmxpbmstPmxpc3QpOworCisJCQlzcGluX3VubG9jaygmdmRldi0+cHJpdl9sb2NrKTsKKwkJCXJldHVybiB1bmxpbms7CisJCX0KKwl9CisKKwlzcGluX3VubG9jaygmdmRldi0+cHJpdl9sb2NrKTsKKworCXJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyB2b2lkIHZoY2lfcmVjdl9yZXRfdW5saW5rKHN0cnVjdCB2aGNpX2RldmljZSAqdmRldiwKKwkJCQkJCXN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdSkKK3sKKwlzdHJ1Y3QgdmhjaV91bmxpbmsgKnVubGluazsKKwlzdHJ1Y3QgdXJiICp1cmI7CisKKwl1c2JpcF9kdW1wX2hlYWRlcihwZHUpOworCisJdW5saW5rID0gZGVxdWV1ZV9wZW5kaW5nX3VubGluayh2ZGV2LCBwZHUpOworCWlmICghdW5saW5rKSB7CisJCXVpbmZvKCJjYW5ub3QgZmluZCB0aGUgcGVuZGluZyB1bmxpbmsgJXVcbiIsIHBkdS0+YmFzZS5zZXFudW0pOworCQlyZXR1cm47CisJfQorCisJdXJiID0gcGlja3VwX3VyYl9hbmRfZnJlZV9wcml2KHZkZXYsIHVubGluay0+dW5saW5rX3NlcW51bSk7CisJaWYgKCF1cmIpIHsKKwkJLyoKKwkJICogSSBnZXQgdGhlIHJlc3VsdCBvZiBhIHVubGluayByZXF1ZXN0LiBCdXQsIGl0IHNlZW1zIHRoYXQgSQorCQkgKiBhbHJlYWR5IHJlY2VpdmVkIHRoZSByZXN1bHQgb2YgaXRzIHN1Ym1pdCByZXN1bHQgYW5kIGdhdmUKKwkJICogYmFjayB0aGUgVVJCLgorCQkgKi8KKwkJdWluZm8oInRoZSB1cmIgKHNlcW51bSAlZCkgd2FzIGFscmVhZHkgZ2l2ZW4gYmFja2VkXG4iLAorCQkJCQkJCXBkdS0+YmFzZS5zZXFudW0pOworCX0gZWxzZSB7CisJCWRiZ192aGNpX3J4KCJub3cgZ2l2ZWJhY2sgdXJiICVwXG4iLCB1cmIpOworCisJCS8qIElmIHVubGluayBpcyBzdWNjZWVkLCBzdGF0dXMgaXMgLUVDT05OUkVTRVQgKi8KKwkJdXJiLT5zdGF0dXMgPSBwZHUtPnUucmV0X3VubGluay5zdGF0dXM7CisJCXVpbmZvKCIlZFxuIiwgdXJiLT5zdGF0dXMpOworCisJCXNwaW5fbG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCQl1c2JfaGNkX3VubGlua191cmJfZnJvbV9lcCh2aGNpX3RvX2hjZCh0aGVfY29udHJvbGxlciksIHVyYik7CisJCXNwaW5fdW5sb2NrKCZ0aGVfY29udHJvbGxlci0+bG9jayk7CisKKwkJdXNiX2hjZF9naXZlYmFja191cmIodmhjaV90b19oY2QodGhlX2NvbnRyb2xsZXIpLCB1cmIsCisJCQkJCQkJCXVyYi0+c3RhdHVzKTsKKwl9CisKKwlrZnJlZSh1bmxpbmspOworCisJcmV0dXJuOworfQorCisvKiByZWN2IGEgcGR1ICovCitzdGF0aWMgdm9pZCB2aGNpX3J4X3BkdShzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCB1c2JpcF9oZWFkZXIgcGR1OworCXN0cnVjdCB2aGNpX2RldmljZSAqdmRldiA9IGNvbnRhaW5lcl9vZih1ZCwgc3RydWN0IHZoY2lfZGV2aWNlLCB1ZCk7CisKKworCWRiZ192aGNpX3J4KCJFbnRlclxuIik7CisKKwltZW1zZXQoJnBkdSwgMCwgc2l6ZW9mKHBkdSkpOworCisKKwkvKiAxLiByZWNlaXZlIGEgcGR1IGhlYWRlciAqLworCXJldCA9IHVzYmlwX3htaXQoMCwgdWQtPnRjcF9zb2NrZXQsIChjaGFyICopICZwZHUsIHNpemVvZihwZHUpLCAwKTsKKwlpZiAocmV0ICE9IHNpemVvZihwZHUpKSB7CisJCXVlcnIoInJlY2VpdmluZyBwZHUgZmFpbGVkISBzaXplIGlzICVkLCBzaG91bGQgYmUgJWRcbiIsCisJCQkJcmV0LCBzaXplb2YocGR1KSk7CisJCXVzYmlwX2V2ZW50X2FkZCh1ZCwgVkRFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQlyZXR1cm47CisJfQorCisJdXNiaXBfaGVhZGVyX2NvcnJlY3RfZW5kaWFuKCZwZHUsIDApOworCisJaWYgKGRiZ19mbGFnX3ZoY2lfcngpCisJCXVzYmlwX2R1bXBfaGVhZGVyKCZwZHUpOworCisJc3dpdGNoIChwZHUuYmFzZS5jb21tYW5kKSB7CisJY2FzZSBVU0JJUF9SRVRfU1VCTUlUOgorCQl2aGNpX3JlY3ZfcmV0X3N1Ym1pdCh2ZGV2LCAmcGR1KTsKKwkJYnJlYWs7CisJY2FzZSBVU0JJUF9SRVRfVU5MSU5LOgorCQl2aGNpX3JlY3ZfcmV0X3VubGluayh2ZGV2LCAmcGR1KTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJLyogTk9UUkVBQ0hFRCAqLworCQl1ZXJyKCJ1bmtub3duIHBkdSAldVxuIiwgcGR1LmJhc2UuY29tbWFuZCk7CisJCXVzYmlwX2R1bXBfaGVhZGVyKCZwZHUpOworCQl1c2JpcF9ldmVudF9hZGQodWQsIFZERVZfRVZFTlRfRVJST1JfVENQKTsKKwl9Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCB2aGNpX3J4X2xvb3Aoc3RydWN0IHVzYmlwX3Rhc2sgKnV0KQoreworCXN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkID0gY29udGFpbmVyX29mKHV0LCBzdHJ1Y3QgdXNiaXBfZGV2aWNlLCB0Y3BfcngpOworCisKKwl3aGlsZSAoMSkgeworCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKKwkJCWRiZ192aGNpX3J4KCJzaWduYWwgY2F0Y2hlZCFcbiIpOworCQkJYnJlYWs7CisJCX0KKworCisJCWlmICh1c2JpcF9ldmVudF9oYXBwZW5kKHVkKSkKKwkJCWJyZWFrOworCisJCXZoY2lfcnhfcGR1KHVkKTsKKwl9Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX3N5c2ZzLmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9zeXNmcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YzI4NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9zeXNmcy5jCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaW5jbHVkZSAidXNiaXBfY29tbW9uLmgiCisjaW5jbHVkZSAidmhjaS5oIgorCisjaW5jbHVkZSA8bGludXgvaW4uaD4KKworLyogVE9ETzogcmVmaW5lIGxvY2tpbmcgPyovCisKKy8qIFN5c2ZzIGVudHJ5IHRvIHNob3cgcG9ydCBzdGF0dXMgKi8KK3N0YXRpYyBzc2l6ZV90IHNob3dfc3RhdHVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICBjaGFyICpvdXQpCit7CisJY2hhciAqcyA9IG91dDsKKwlpbnQgaSA9IDA7CisKKwlpZiAoIXRoZV9jb250cm9sbGVyIHx8ICFvdXQpCisJCUJVRygpOworCisJc3Bpbl9sb2NrKCZ0aGVfY29udHJvbGxlci0+bG9jayk7CisKKwkvKgorCSAqIG91dHB1dCBleGFtcGxlOgorCSAqIHBydCBzdGEgc3BkIGRldiBzb2NrZXQgICAgICAgICAgIGxvY2FsX2J1c2lkCisJICogMDAwIDAwNCAwMDAgMDAwICAgICAgICAgYzVhN2JiODAgMS0yLjMKKwkgKiAwMDEgMDA0IDAwMCAwMDAgICAgICAgICBkOGNlZTk4MCAyLTMuNAorCSAqCisJICogSVAgYWRkcmVzcyBjYW4gYmUgcmV0cmlldmVkIGZyb20gYSBzb2NrZXQgcG9pbnRlciBhZGRyZXNzIGJ5IGxvb2tpbmcKKwkgKiB1cCAvcHJvYy9uZXQve3RjcCx0Y3A2fS4gQWxzbywgYSB1c2VybGFuZCBwcm9ncmFtIG1heSByZW1lbWJlciBhCisJICogcG9ydCBudW1iZXIgYW5kIGl0cyBwZWVyIElQIGFkZHJlc3MuCisJICovCisJb3V0ICs9IHNwcmludGYob3V0LCAicHJ0IHN0YSBzcGQgYnVzIGRldiBzb2NrZXQgICAgICAgICAgICIKKwkJICAgICAgICJsb2NhbF9idXNpZFxuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgVkhDSV9OUE9SVFM7IGkrKykgeworCQlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYgPSBwb3J0X3RvX3ZkZXYoaSk7CisKKwkJc3Bpbl9sb2NrKCZ2ZGV2LT51ZC5sb2NrKTsKKworCQlvdXQgKz0gc3ByaW50ZihvdXQsICIlMDN1ICUwM3UgIiwgaSwgdmRldi0+dWQuc3RhdHVzKTsKKworCQlpZiAodmRldi0+dWQuc3RhdHVzID09IFZERVZfU1RfVVNFRCkgeworCQkJb3V0ICs9IHNwcmludGYob3V0LCAiJTAzdSAlMDh4ICIsCisJCQkJCXZkZXYtPnNwZWVkLCB2ZGV2LT5kZXZpZCk7CisJCQlvdXQgKz0gc3ByaW50ZihvdXQsICIlMTZwICIsIHZkZXYtPnVkLnRjcF9zb2NrZXQpOworCQkJb3V0ICs9IHNwcmludGYob3V0LCAiJXMiLCB2ZGV2LT51ZGV2LT5kZXYuYnVzX2lkKTsKKworCQl9IGVsc2UKKwkJCW91dCArPSBzcHJpbnRmKG91dCwgIjAwMCAwMDAgMDAwIDAwMDAwMDAwMDAwMDAwMDAgMC0wIik7CisKKwkJb3V0ICs9IHNwcmludGYob3V0LCAiXG4iKTsKKworCQlzcGluX3VubG9jaygmdmRldi0+dWQubG9jayk7CisJfQorCisJc3Bpbl91bmxvY2soJnRoZV9jb250cm9sbGVyLT5sb2NrKTsKKworCXJldHVybiBvdXQgLSBzOworfQorc3RhdGljIERFVklDRV9BVFRSKHN0YXR1cywgU19JUlVHTywgc2hvd19zdGF0dXMsIE5VTEwpOworCisvKiBTeXNmcyBlbnRyeSB0byBzaHV0ZG93biBhIHZpcnR1YWwgY29ubmVjdGlvbiAqLworc3RhdGljIGludCB2aGNpX3BvcnRfZGlzY29ubmVjdChfX3UzMiByaHBvcnQpCit7CisJc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2OworCisJZGJnX3ZoY2lfc3lzZnMoImVudGVyXG4iKTsKKworCS8qIGxvY2sgKi8KKwlzcGluX2xvY2soJnRoZV9jb250cm9sbGVyLT5sb2NrKTsKKworCXZkZXYgPSBwb3J0X3RvX3ZkZXYocmhwb3J0KTsKKworCXNwaW5fbG9jaygmdmRldi0+dWQubG9jayk7CisJaWYgKHZkZXYtPnVkLnN0YXR1cyA9PSBWREVWX1NUX05VTEwpIHsKKwkJdWVycigibm90IGNvbm5lY3RlZCAlZFxuIiwgdmRldi0+dWQuc3RhdHVzKTsKKworCQkvKiB1bmxvY2sgKi8KKwkJc3Bpbl91bmxvY2soJnZkZXYtPnVkLmxvY2spOworCQlzcGluX3VubG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIHVubG9jayAqLworCXNwaW5fdW5sb2NrKCZ2ZGV2LT51ZC5sb2NrKTsKKwlzcGluX3VubG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCisJdXNiaXBfZXZlbnRfYWRkKCZ2ZGV2LT51ZCwgVkRFVl9FVkVOVF9ET1dOKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9kZXRhY2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpbnQgZXJyOworCV9fdTMyIHJocG9ydCA9IDA7CisKKwlzc2NhbmYoYnVmLCAiJXUiLCAmcmhwb3J0KTsKKworCS8qIGNoZWNrIHJocG9ydCAqLworCWlmIChyaHBvcnQgPj0gVkhDSV9OUE9SVFMpIHsKKwkJdWVycigiaW52YWxpZCBwb3J0ICV1XG4iLCByaHBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwllcnIgPSB2aGNpX3BvcnRfZGlzY29ubmVjdChyaHBvcnQpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWRiZ192aGNpX3N5c2ZzKCJMZWF2ZVxuIik7CisJcmV0dXJuIGNvdW50OworfQorc3RhdGljIERFVklDRV9BVFRSKGRldGFjaCwgU19JV1VTUiwgTlVMTCwgc3RvcmVfZGV0YWNoKTsKKworLyogU3lzZnMgZW50cnkgdG8gZXN0YWJsaXNoIGEgdmlydHVhbCBjb25uZWN0aW9uICovCitzdGF0aWMgaW50IHZhbGlkX2FyZ3MoX191MzIgcmhwb3J0LCBlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQpCit7CisJLyogY2hlY2sgcmhwb3J0ICovCisJaWYgKChyaHBvcnQgPCAwKSB8fCAocmhwb3J0ID49IFZIQ0lfTlBPUlRTKSkgeworCQl1ZXJyKCJwb3J0ICV1XG4iLCByaHBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBjaGVjayBzcGVlZCAqLworCXN3aXRjaCAoc3BlZWQpIHsKKwljYXNlIFVTQl9TUEVFRF9MT1c6CisJY2FzZSBVU0JfU1BFRURfRlVMTDoKKwljYXNlIFVTQl9TUEVFRF9ISUdIOgorCWNhc2UgVVNCX1NQRUVEX1ZBUklBQkxFOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQl1ZXJyKCJzcGVlZCAlZFxuIiwgc3BlZWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRvIHN0YXJ0IGEgbmV3IFVTQi9JUCBhdHRhY2htZW50LCBhIHVzZXJsYW5kIHByb2dyYW0gbmVlZHMgdG8gc2V0dXAgYSBUQ1AKKyAqIGNvbm5lY3Rpb24gYW5kIHRoZW4gd3JpdGUgaXRzIHNvY2tldCBkZXNjcmlwdG9yIHdpdGggcmVtb3RlIGRldmljZQorICogaW5mb3JtYXRpb24gaW50byB0aGlzIHN5c2ZzIGZpbGUuCisgKgorICogQSByZW1vdGUgZGV2aWNlIGlzIHZpcnR1YWxseSBhdHRhY2hlZCB0byB0aGUgcm9vdC1odWIgcG9ydCBvZiBAcmhwb3J0IHdpdGgKKyAqIEBzcGVlZC4gQGRldmlkIGlzIGVtYmVkZGVkIGludG8gYSByZXF1ZXN0IHRvIHNwZWNpZnkgdGhlIHJlbW90ZSBkZXZpY2UgaW4gYQorICogc2VydmVyIGhvc3QuCisgKgorICogd3JpdGUoKSByZXR1cm5zIDAgb24gc3VjY2VzcywgZWxzZSBuZWdhdGl2ZSBlcnJuby4KKyAqLworc3RhdGljIHNzaXplX3Qgc3RvcmVfYXR0YWNoKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2OworCXN0cnVjdCBzb2NrZXQgKnNvY2tldDsKKwlpbnQgc29ja2ZkID0gMDsKKwlfX3UzMiByaHBvcnQgPSAwLCBkZXZpZCA9IDAsIHNwZWVkID0gMDsKKworCS8qCisJICogQHJocG9ydDogcG9ydCBudW1iZXIgb2YgdmhjaV9oY2QKKwkgKiBAc29ja2ZkOiBzb2NrZXQgZGVzY3JpcHRvciBvZiBhbiBlc3RhYmxpc2hlZCBUQ1AgY29ubmVjdGlvbgorCSAqIEBkZXZpZDogdW5pcXVlIGRldmljZSBpZGVudGlmaWVyIGluIGEgcmVtb3RlIGhvc3QKKwkgKiBAc3BlZWQ6IHVzYiBkZXZpY2Ugc3BlZWQgaW4gYSByZW1vdGUgaG9zdAorCSAqLworCXNzY2FuZihidWYsICIldSAldSAldSAldSIsICZyaHBvcnQsICZzb2NrZmQsICZkZXZpZCwgJnNwZWVkKTsKKworCWRiZ192aGNpX3N5c2ZzKCJyaHBvcnQoJXUpIHNvY2tmZCgldSkgZGV2aWQoJXUpIHNwZWVkKCV1KVxuIiwKKwkJCXJocG9ydCwgc29ja2ZkLCBkZXZpZCwgc3BlZWQpOworCisKKwkvKiBjaGVjayByZWNlaXZlZCBwYXJhbWV0ZXJzICovCisJaWYgKHZhbGlkX2FyZ3Mocmhwb3J0LCBzcGVlZCkgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIGNoZWNrIHNvY2tmZCAqLworCXNvY2tldCA9IHNvY2tmZF90b19zb2NrZXQoc29ja2ZkKTsKKwlpZiAoIXNvY2tldCkKKwkJcmV0dXJuICAtRUlOVkFMOworCisJLyogbm93IG5lZWQgbG9jayB1bnRpbCBzZXR0aW5nIHZkZXYgc3RhdHVzIGFzIHVzZWQgKi8KKworCS8qIGJlZ2luIGEgbG9jayAqLworCXNwaW5fbG9jaygmdGhlX2NvbnRyb2xsZXItPmxvY2spOworCisJdmRldiA9IHBvcnRfdG9fdmRldihyaHBvcnQpOworCisJc3Bpbl9sb2NrKCZ2ZGV2LT51ZC5sb2NrKTsKKworCWlmICh2ZGV2LT51ZC5zdGF0dXMgIT0gVkRFVl9TVF9OVUxMKSB7CisJCS8qIGVuZCBvZiB0aGUgbG9jayAqLworCQlzcGluX3VubG9jaygmdmRldi0+dWQubG9jayk7CisJCXNwaW5fdW5sb2NrKCZ0aGVfY29udHJvbGxlci0+bG9jayk7CisKKwkJdWVycigicG9ydCAlZCBhbHJlYWR5IHVzZWRcbiIsIHJocG9ydCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXVpbmZvKCJyaHBvcnQoJXUpIHNvY2tmZCglZCkgZGV2aWQoJXUpIHNwZWVkKCV1KVxuIiwKKwkJCXJocG9ydCwgc29ja2ZkLCBkZXZpZCwgc3BlZWQpOworCisJdmRldi0+ZGV2aWQgICAgICAgICA9IGRldmlkOworCXZkZXYtPnNwZWVkICAgICAgICAgPSBzcGVlZDsKKwl2ZGV2LT51ZC50Y3Bfc29ja2V0ID0gc29ja2V0OworCXZkZXYtPnVkLnN0YXR1cyAgICAgPSBWREVWX1NUX05PVEFTU0lHTkVEOworCisJc3Bpbl91bmxvY2soJnZkZXYtPnVkLmxvY2spOworCXNwaW5fdW5sb2NrKCZ0aGVfY29udHJvbGxlci0+bG9jayk7CisJLyogZW5kIHRoZSBsb2NrICovCisKKwkvKgorCSAqIHRoaXMgZnVuY3Rpb24gd2lsbCBzbGVlcCwgc28gc2hvdWxkIGJlIG91dCBvZiB0aGUgbG9jay4gYnV0LCBpdCdzIG9rCisJICogYmVjYXVzZSB3ZSBhbHJlYWR5IG1hcmtlZCB2ZGV2IGFzIGJlaW5nIHVzZWQuIHJlYWxseT8KKwkgKi8KKwl1c2JpcF9zdGFydF90aHJlYWRzKCZ2ZGV2LT51ZCk7CisKKwlyaF9wb3J0X2Nvbm5lY3Qocmhwb3J0LCBzcGVlZCk7CisKKwlyZXR1cm4gY291bnQ7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIoYXR0YWNoLCBTX0lXVVNSLCBOVUxMLCBzdG9yZV9hdHRhY2gpOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGV2X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX3N0YXR1cy5hdHRyLAorCSZkZXZfYXR0cl9kZXRhY2guYXR0ciwKKwkmZGV2X2F0dHJfYXR0YWNoLmF0dHIsCisJJmRldl9hdHRyX3VzYmlwX2RlYnVnLmF0dHIsCisJTlVMTCwKK307CisKK3N0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZGV2X2F0dHJfZ3JvdXAgPSB7CisJLmF0dHJzID0gZGV2X2F0dHJzLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV90eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNTUyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV90eC5jCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggVGFrYWhpcm8gSGlyb2Z1Y2hpCisgKgorICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAqIFVTQS4KKyAqLworCisjaW5jbHVkZSAidXNiaXBfY29tbW9uLmgiCisjaW5jbHVkZSAidmhjaS5oIgorCisKK3N0YXRpYyB2b2lkIHNldHVwX2NtZF9zdWJtaXRfcGR1KHN0cnVjdCB1c2JpcF9oZWFkZXIgKnBkdXAsICBzdHJ1Y3QgdXJiICp1cmIpCit7CisJc3RydWN0IHZoY2lfcHJpdiAqcHJpdiA9ICgoc3RydWN0IHZoY2lfcHJpdiAqKXVyYi0+aGNwcml2KTsKKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYgPSBwcml2LT52ZGV2OworCisJZGJnX3ZoY2lfdHgoIlVSQiwgbG9jYWwgZGV2bnVtICV1LCByZW1vdGUgZGV2aWQgJXVcbiIsCisJCQkJdXNiX3BpcGVkZXZpY2UodXJiLT5waXBlKSwgdmRldi0+ZGV2aWQpOworCisJcGR1cC0+YmFzZS5jb21tYW5kID0gVVNCSVBfQ01EX1NVQk1JVDsKKwlwZHVwLT5iYXNlLnNlcW51bSAgPSBwcml2LT5zZXFudW07CisJcGR1cC0+YmFzZS5kZXZpZCAgID0gdmRldi0+ZGV2aWQ7CisJaWYgKHVzYl9waXBlaW4odXJiLT5waXBlKSkKKwkJcGR1cC0+YmFzZS5kaXJlY3Rpb24gPSBVU0JJUF9ESVJfSU47CisJZWxzZQorCQlwZHVwLT5iYXNlLmRpcmVjdGlvbiA9IFVTQklQX0RJUl9PVVQ7CisJcGR1cC0+YmFzZS5lcCAgICAgID0gdXNiX3BpcGVlbmRwb2ludCh1cmItPnBpcGUpOworCisJdXNiaXBfcGFja19wZHUocGR1cCwgdXJiLCBVU0JJUF9DTURfU1VCTUlULCAxKTsKKworCWlmICh1cmItPnNldHVwX3BhY2tldCkKKwkJbWVtY3B5KHBkdXAtPnUuY21kX3N1Ym1pdC5zZXR1cCwgdXJiLT5zZXR1cF9wYWNrZXQsIDgpOworfQorCitzdGF0aWMgc3RydWN0IHZoY2lfcHJpdiAqZGVxdWV1ZV9mcm9tX3ByaXZfdHgoc3RydWN0IHZoY2lfZGV2aWNlICp2ZGV2KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IHZoY2lfcHJpdiAqcHJpdiwgKnRtcDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwcml2LCB0bXAsICZ2ZGV2LT5wcml2X3R4LCBsaXN0KSB7CisJCWxpc3RfbW92ZV90YWlsKCZwcml2LT5saXN0LCAmdmRldi0+cHJpdl9yeCk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZkZXYtPnByaXZfbG9jaywgZmxhZ3MpOworCQlyZXR1cm4gcHJpdjsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiBOVUxMOworfQorCisKKworc3RhdGljIGludCB2aGNpX3NlbmRfY21kX3N1Ym1pdChzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYpCit7CisJc3RydWN0IHZoY2lfcHJpdiAqcHJpdiA9IE5VTEw7CisKKwlzdHJ1Y3QgbXNnaGRyIG1zZzsKKwlzdHJ1Y3Qga3ZlYyBpb3ZbM107CisJc2l6ZV90IHR4c2l6ZTsKKworCXNpemVfdCB0b3RhbF9zaXplID0gMDsKKworCXdoaWxlICgocHJpdiA9IGRlcXVldWVfZnJvbV9wcml2X3R4KHZkZXYpKSAhPSBOVUxMKSB7CisJCWludCByZXQ7CisJCXN0cnVjdCB1cmIgKnVyYiA9IHByaXYtPnVyYjsKKwkJc3RydWN0IHVzYmlwX2hlYWRlciBwZHVfaGVhZGVyOworCQl2b2lkICppc29fYnVmZmVyID0gTlVMTDsKKworCQl0eHNpemUgPSAwOworCQltZW1zZXQoJnBkdV9oZWFkZXIsIDAsIHNpemVvZihwZHVfaGVhZGVyKSk7CisJCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJCW1lbXNldCgmaW92LCAwLCBzaXplb2YoaW92KSk7CisKKwkJZGJnX3ZoY2lfdHgoInNldHVwIHR4ZGF0YSB1cmIgJXBcbiIsIHVyYik7CisKKworCQkvKiAxLiBzZXR1cCB1c2JpcF9oZWFkZXIgKi8KKwkJc2V0dXBfY21kX3N1Ym1pdF9wZHUoJnBkdV9oZWFkZXIsIHVyYik7CisJCXVzYmlwX2hlYWRlcl9jb3JyZWN0X2VuZGlhbigmcGR1X2hlYWRlciwgMSk7CisKKwkJaW92WzBdLmlvdl9iYXNlID0gJnBkdV9oZWFkZXI7CisJCWlvdlswXS5pb3ZfbGVuICA9IHNpemVvZihwZHVfaGVhZGVyKTsKKwkJdHhzaXplICs9IHNpemVvZihwZHVfaGVhZGVyKTsKKworCQkvKiAyLiBzZXR1cCB0cmFuc2ZlciBidWZmZXIgKi8KKwkJaWYgKCF1c2JfcGlwZWluKHVyYi0+cGlwZSkgJiYgdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoID4gMCkgeworCQkJaW92WzFdLmlvdl9iYXNlID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CisJCQlpb3ZbMV0uaW92X2xlbiAgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CisJCQl0eHNpemUgKz0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoOworCQl9CisKKwkJLyogMy4gc2V0dXAgaXNvX3BhY2tldF9kZXNjcmlwdG9yICovCisJCWlmICh1c2JfcGlwZXR5cGUodXJiLT5waXBlKSA9PSBQSVBFX0lTT0NIUk9OT1VTKSB7CisJCQlzc2l6ZV90IGxlbiA9IDA7CisKKwkJCWlzb19idWZmZXIgPSB1c2JpcF9hbGxvY19pc29fZGVzY19wZHUodXJiLCAmbGVuKTsKKwkJCWlmICghaXNvX2J1ZmZlcikgeworCQkJCXVzYmlwX2V2ZW50X2FkZCgmdmRldi0+dWQsCisJCQkJCQlTREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlpb3ZbMl0uaW92X2Jhc2UgPSBpc29fYnVmZmVyOworCQkJaW92WzJdLmlvdl9sZW4gID0gbGVuOworCQkJdHhzaXplICs9IGxlbjsKKwkJfQorCisJCXJldCA9IGtlcm5lbF9zZW5kbXNnKHZkZXYtPnVkLnRjcF9zb2NrZXQsICZtc2csIGlvdiwgMywgdHhzaXplKTsKKwkJaWYgKHJldCAhPSB0eHNpemUpIHsKKwkJCXVlcnIoInNlbmRtc2cgZmFpbGVkISwgcmV0dmFsICVkIGZvciAlemRcbiIsIHJldCwKKwkJCQkJCQkJdHhzaXplKTsKKwkJCWtmcmVlKGlzb19idWZmZXIpOworCQkJdXNiaXBfZXZlbnRfYWRkKCZ2ZGV2LT51ZCwgVkRFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJa2ZyZWUoaXNvX2J1ZmZlcik7CisJCWRiZ192aGNpX3R4KCJzZW5kIHR4ZGF0YVxuIik7CisKKwkJdG90YWxfc2l6ZSArPSB0eHNpemU7CisJfQorCisJcmV0dXJuIHRvdGFsX3NpemU7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIHN0cnVjdCB2aGNpX3VubGluayAqZGVxdWV1ZV9mcm9tX3VubGlua190eChzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgdmhjaV91bmxpbmsgKnVubGluaywgKnRtcDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ2ZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh1bmxpbmssIHRtcCwgJnZkZXYtPnVubGlua190eCwgbGlzdCkgeworCQlsaXN0X21vdmVfdGFpbCgmdW5saW5rLT5saXN0LCAmdmRldi0+dW5saW5rX3J4KTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmRldi0+cHJpdl9sb2NrLCBmbGFncyk7CisJCXJldHVybiB1bmxpbms7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmRldi0+cHJpdl9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCB2aGNpX3NlbmRfY21kX3VubGluayhzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYpCit7CisJc3RydWN0IHZoY2lfdW5saW5rICp1bmxpbmsgPSBOVUxMOworCisJc3RydWN0IG1zZ2hkciBtc2c7CisJc3RydWN0IGt2ZWMgaW92WzNdOworCXNpemVfdCB0eHNpemU7CisKKwlzaXplX3QgdG90YWxfc2l6ZSA9IDA7CisKKwl3aGlsZSAoKHVubGluayA9IGRlcXVldWVfZnJvbV91bmxpbmtfdHgodmRldikpICE9IE5VTEwpIHsKKwkJaW50IHJldDsKKwkJc3RydWN0IHVzYmlwX2hlYWRlciBwZHVfaGVhZGVyOworCisJCXR4c2l6ZSA9IDA7CisJCW1lbXNldCgmcGR1X2hlYWRlciwgMCwgc2l6ZW9mKHBkdV9oZWFkZXIpKTsKKwkJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKwkJbWVtc2V0KCZpb3YsIDAsIHNpemVvZihpb3YpKTsKKworCQlkYmdfdmhjaV90eCgic2V0dXAgY21kIHVubGluaywgJWx1IFxuIiwgdW5saW5rLT5zZXFudW0pOworCisKKwkJLyogMS4gc2V0dXAgdXNiaXBfaGVhZGVyICovCisJCXBkdV9oZWFkZXIuYmFzZS5jb21tYW5kID0gVVNCSVBfQ01EX1VOTElOSzsKKwkJcGR1X2hlYWRlci5iYXNlLnNlcW51bSAgPSB1bmxpbmstPnNlcW51bTsKKwkJcGR1X2hlYWRlci5iYXNlLmRldmlkCT0gdmRldi0+ZGV2aWQ7CisJCXBkdV9oZWFkZXIuYmFzZS5lcAk9IDA7CisJCXBkdV9oZWFkZXIudS5jbWRfdW5saW5rLnNlcW51bSA9IHVubGluay0+dW5saW5rX3NlcW51bTsKKworCQl1c2JpcF9oZWFkZXJfY29ycmVjdF9lbmRpYW4oJnBkdV9oZWFkZXIsIDEpOworCisJCWlvdlswXS5pb3ZfYmFzZSA9ICZwZHVfaGVhZGVyOworCQlpb3ZbMF0uaW92X2xlbiAgPSBzaXplb2YocGR1X2hlYWRlcik7CisJCXR4c2l6ZSArPSBzaXplb2YocGR1X2hlYWRlcik7CisKKwkJcmV0ID0ga2VybmVsX3NlbmRtc2codmRldi0+dWQudGNwX3NvY2tldCwgJm1zZywgaW92LCAxLCB0eHNpemUpOworCQlpZiAocmV0ICE9IHR4c2l6ZSkgeworCQkJdWVycigic2VuZG1zZyBmYWlsZWQhLCByZXR2YWwgJWQgZm9yICV6ZFxuIiwgcmV0LAorCQkJCQkJCQl0eHNpemUpOworCQkJdXNiaXBfZXZlbnRfYWRkKCZ2ZGV2LT51ZCwgVkRFVl9FVkVOVF9FUlJPUl9UQ1ApOworCQkJcmV0dXJuIC0xOworCQl9CisKKworCQlkYmdfdmhjaV90eCgic2VuZCB0eGRhdGFcbiIpOworCisJCXRvdGFsX3NpemUgKz0gdHhzaXplOworCX0KKworCXJldHVybiB0b3RhbF9zaXplOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3ZvaWQgdmhjaV90eF9sb29wKHN0cnVjdCB1c2JpcF90YXNrICp1dCkKK3sKKwlzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCA9IGNvbnRhaW5lcl9vZih1dCwgc3RydWN0IHVzYmlwX2RldmljZSwgdGNwX3R4KTsKKwlzdHJ1Y3QgdmhjaV9kZXZpY2UgKnZkZXYgPSBjb250YWluZXJfb2YodWQsIHN0cnVjdCB2aGNpX2RldmljZSwgdWQpOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQl1aW5mbygidmhjaV90eCBzaWduYWwgY2F0Y2hlZFxuIik7CisJCQlicmVhazsKKwkJfQorCisJCWlmICh2aGNpX3NlbmRfY21kX3N1Ym1pdCh2ZGV2KSA8IDApCisJCQlicmVhazsKKworCQlpZiAodmhjaV9zZW5kX2NtZF91bmxpbmsodmRldikgPCAwKQorCQkJYnJlYWs7CisKKwkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHZkZXYtPndhaXRxX3R4LAorCQkJCSghbGlzdF9lbXB0eSgmdmRldi0+cHJpdl90eCkgfHwKKwkJCQkgIWxpc3RfZW1wdHkoJnZkZXYtPnVubGlua190eCkpKTsKKworCQlkYmdfdmhjaV90eCgicGVuZGluZyB1cmJzID8sIG5vdyB3YWtlIHVwXG4iKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGQ3MmJlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvS2NvbmZpZwpAQCAtMCwwICsxLDcgQEAKK2NvbmZpZyBXMzVVTkQKKwl0cmlzdGF0ZSAiV2luYm9uZCBkcml2ZXIiCisJZGVwZW5kcyBvbiBNQUM4MDIxMSAmJiBXTEFOXzgwMjExICYmIEVYUEVSSU1FTlRBTCAmJiAhNEtTVEFDS1MKKwlkZWZhdWx0IG4KKwktLS1oZWxwLS0tCisJICBUaGlzIGlzIGhpZ2hseSBleHBlcmltZW50YWwgZHJpdmVyIGZvciB3aW5ib25kIHdpZmkgY2FyZCBvbiBzb21lIEtvaGppbnNoYSBub3RlYm9va3MKKwkgIENoZWNrIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93aW5ib25kcG9ydC8gZm9yIG5ldyB2ZXJzaW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5Yzk4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9NYWtlZmlsZQpAQCAtMCwwICsxLDE4IEBACisJRFJJVkVSX0RJUj0uL2xpbnV4CisKK3czNXVuZC1vYmpzIDo9ICQoRFJJVkVSX0RJUikvd2J1c2IubyAkKERSSVZFUl9ESVIpL3diMzVyZWcubyAkKERSSVZFUl9ESVIpL3diMzVyeC5vICQoRFJJVkVSX0RJUikvd2IzNXR4Lm8gXAorCW1kcy5vIFwKKwltbG1ldHhyeC5vIFwKKwltdG8ubwlcCisJcGh5X2NhbGlicmF0aW9uLm8JXAorCXJlZy5vCQkJXAorCXJ4aXNyLm8JCQlcCisJc21lX2FwaS5vCQlcCisJd2JoYWwubwkJCVwKKwl3YmxpbnV4Lm8JCVwKKworCitvYmotJChDT05GSUdfVzM1VU5EKSArPSB3MzV1bmQubworCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvUkVBRE1FIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwN2I2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9SRUFETUUKQEAgLTAsMCArMSwxMCBAQAorVE9ETzoKKwktIHNwYXJzZSBjbGVhbnVwcworCS0gY2hlY2twYXRjaCBjbGVhbnVwcworCS0ga2VybmVsZG9jIGNsZWFudXBzCisJLSByZW1vdmUgdHlwZWRlZnMKKwktIHJlbW92ZSB1bnVzZWQgaW9jdGxzCisJLSB1c2UgY2ZnODAyMTEgZm9yIHJlZ3VsYXRvcnkgc3R1ZmYKKworUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPiBhbmQKK1BhdmVsIE1hY2hlayA8cGF2ZWxAc3VzZS5jej4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2FkYXB0ZXIuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2FkYXB0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDk3MDFkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvYWRhcHRlci5oCkBAIC0wLDAgKzEsMjMgQEAKKy8vCisvLyBBREFQVEVSLkggLQorLy8gV2luZG93cyBORElTIGdsb2JhbCB2YXJpYWJsZSAnQWRhcHRlcicgdHlwZWRlZgorLy8KKyNkZWZpbmUgTUFYX0FOU0lfU1RSSU5HCQk0MAordHlwZWRlZiBzdHJ1Y3QgV0IzMl9BREFQVEVSCit7CisJdTMyIEFkYXB0ZXJJbmRleDsgLy8gMjAwNjA3MDMuNCBBZGQgZm9yIHVzaW5nIHBBZGFwdGVyQ29udGV4dCBnbG9iYWwgQWRhcHRlciBwb2ludAorCisJV0JfTE9DQUxERVNDUklQVAlzTG9jYWxQYXJhOwkJLy8gTXlzZWxmIGNvbm5lY3RlZCBwYXJhbWV0ZXJzCisJUFdCX0JTU0RFU0NSSVBUSU9OCWFzQlNTRGVzY3JpcHRFbGVtZW50OworCisJTUxNRV9GUkFNRQkJc01sbWVGcmFtZTsJCS8vIGNvbm5lY3QgdG8gcGVlclNUQSBwYXJhbWV0ZXJzCisKKwlNVE9fUEFSQU1FVEVSUwkJc010b1BhcmE7IC8vIE1UT19zdHJ1Y3QgLi4uCisJaHdfZGF0YV90CQkJc0h3RGF0YTsgLy9Gb3IgSEFMCisJTURTCQkJCQlNZHM7CisKKwlXQkxJTlVYCQlXYkxpbnV4OworICAgICAgICBzdHJ1Y3QgaXdfc3RhdGlzdGljcyBpd19zdGF0czsKKworCXU4CUxpbmtOYW1lW01BWF9BTlNJX1NUUklOR107Cit9IFdCMzJfQURBUFRFUiwgQURBUFRFUiwgKlBXQjMyX0FEQVBURVIsICpQQURBUFRFUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2Jzc19mLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9ic3NfZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NTdiYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9ic3NfZi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBCU1MgZGVzY3JpcHRvciBEYXRhQmFzZSBtYW5hZ2VtZW50IGdsb2JhbCBmdW5jdGlvbgorLy8KKwordm9pZCB2QlNTZGVzY3JpcHRpb25Jbml0KFBXQjMyX0FEQVBURVIgQWRhcHRlcik7Cit2b2lkIHZCU1Nmb3VuZExpc3QoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3U4IGJvQ2hhbkZpbHRlcihQV0IzMl9BREFQVEVSIEFkYXB0ZXIsIHU4IENoYW5Obyk7Cit1MTYgd0JTU2FsbG9jYXRlRW50cnkoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3UxNiB3QlNTR2V0RW50cnkoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3ZvaWQgdlNpbXBsZUhvdXNlS2VlcGluZyhQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOwordTE2IHdCU1Nob3VzZUtlZXBpbmcoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3ZvaWQgQ2xlYXJCU1NkZXNjcHQoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1MTYgaSk7Cit1MTYgd0JTU2ZpbmRCc3NJRChQV0IzMl9BREFQVEVSIEFkYXB0ZXIsIHU4ICpwYkJzc2lkKTsKK3UxNiB3QlNTZmluZERlZGljYXRlQ2FuZGlkYXRlKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgc3RydWN0IFNTSURfRWxlbWVudCAqcHNTc2lkLCB1OCAqcGJCc3NpZCk7Cit1MTYgd0JTU2ZpbmRNQUNhZGRyKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTggKnBiTWFjQWRkcik7Cit1MTYgd0JTU3NlYXJjaE1BQ2FkZHIoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1OCAqcGJNYWNBZGRyLCB1OCBiYW5kKTsKK3UxNiB3QlNTYWRkU2NhbkRhdGEoUFdCMzJfQURBUFRFUiwgdTE2LCBwc1JYREFUQSk7Cit1MTYgd0JTU1VwZGF0ZVNjYW5EYXRhKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTE2IHdCc3NJZHgsIHBzUlhEQVRBIHBzUmN2RGF0YSk7Cit1MTYgd0JTU2NyZWF0ZUlCU1NkYXRhKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgUFdCX0JTU0RFU0NSSVBUSU9OIHBzRGVzRGF0YSk7Cit2b2lkIERlc2lyZWRSYXRlMkJTU2Rlc2NyaXB0b3IoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCBQV0JfQlNTREVTQ1JJUFRJT04gcHNEZXNEYXRhLAorCQkJCQkJCSB1OCAqcEJhc2ljUmF0ZVNldCwgdTggQmFzaWNSYXRlQ291bnQsCisJCQkJCQkJIHU4ICpwT3BlcmF0aW9uUmF0ZVNldCwgdTggT3BlcmF0aW9uUmF0ZUNvdW50KTsKK3ZvaWQgRGVzaXJlZFJhdGUySW5mb0VsZW1lbnQoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1OAkqYWRkciwgdTE2ICppRmlsZE9mZnNldCwKKwkJCQkJCQkgdTggKnBCYXNpY1JhdGVTZXQsIHU4IEJhc2ljUmF0ZUNvdW50LAorCQkJCQkJCSB1OCAqcE9wZXJhdGlvblJhdGVTZXQsIHU4IE9wZXJhdGlvblJhdGVDb3VudCk7Cit2b2lkIEJTU0FkZElCU1NkYXRhKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgUFdCX0JTU0RFU0NSSVBUSU9OIHBzRGVzRGF0YSk7Cit1bnNpZ25lZCBjaGFyIGJvQ21wTWFjQWRkciggUFVDSEFSLCBQVUNIQVIgKTsKK3Vuc2lnbmVkIGNoYXIgYm9DbXBTU0lEKHN0cnVjdCBTU0lEX0VsZW1lbnQgKnBzU1NJRDEsIHN0cnVjdCBTU0lEX0VsZW1lbnQgKnBzU1NJRDIpOwordTE2IHdCU1NmaW5kU1NJRChQV0IzMl9BREFQVEVSIEFkYXB0ZXIsIHN0cnVjdCBTU0lEX0VsZW1lbnQgKnBzU3NpZCk7Cit1MTYgd1JvYW1pbmdRdWVyeShQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOwordm9pZCB2UmF0ZVRvQml0bWFwKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTE2IGluZGV4KTsKK3U4IGJSYXRlVG9CaXRtYXBJbmRleChQV0IzMl9BREFQVEVSIEFkYXB0ZXIsIHU4IGJSYXRlKTsKK3U4IGJCaXRtYXBUb1JhdGUodTggaSk7Cit1bnNpZ25lZCBjaGFyIGJvSXNFUlBzdGEoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1MTYgaSk7Cit1bnNpZ25lZCBjaGFyIGJvQ2hlY2tDb25uZWN0KFBXQjMyX0FEQVBURVIgQWRhcHRlcik7Cit1bnNpZ25lZCBjaGFyIGJvQ2hlY2tTaWduYWwoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3ZvaWQgQWRkSUJTU0llKFBXQjMyX0FEQVBURVIgQWRhcHRlcixQV0JfQlNTREVTQ1JJUFRJT04gcHNEZXNEYXRhICk7Ly9hZGRlZCBieSB3cyBmb3IgV1BBX05vbmUwNi8wMS8wNAordm9pZCBCc3NTY2FuVXBUb0RhdGUoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3ZvaWQgQnNzVXBUb0RhdGUoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKK3ZvaWQgUmF0ZVNvcnQodTggKlJhdGVBcnJheSwgdTggbnVtLCB1OCBtb2RlKTsKK3ZvaWQgUmF0ZVJlU29ydEZvclNSYXRlKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTggKlJhdGVBcnJheSwgdTggbnVtKTsKK3ZvaWQgQXNzZW1ibGVfSUUoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1MTYgd0Jzc0lkeCk7Cit2b2lkIFNldE1heFR4UmF0ZShQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOworCit2b2lkIENyZWF0ZVdwYUlFKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTE2KiBpRmlsZE9mZnNldCwgUFVDSEFSIG1zZywgc3RydWN0ICBNYW5hZ2VtZW50X0ZyYW1lKiBtc2dIZWFkZXIsCisJCQkJIHN0cnVjdCBBc3NvY2lhdGlvbl9SZXF1ZXN0X0ZyYW1lX0JvZHkqIG1zZ0JvZHksIHUxNiBpTVNpbmRleCk7IC8vYWRkZWQgYnkgV1MgMDUvMTQvMDUKKworI2lmZGVmIF9XUEEyXwordm9pZCBDcmVhdGVSc25JRShQV0IzMl9BREFQVEVSIEFkYXB0ZXIsIHUxNiogaUZpbGRPZmZzZXQsIFBVQ0hBUiBtc2csIHN0cnVjdCAgTWFuYWdlbWVudF9GcmFtZSogbXNnSGVhZGVyLAorCQkJCSBzdHJ1Y3QgQXNzb2NpYXRpb25fUmVxdWVzdF9GcmFtZV9Cb2R5KiBtc2dCb2R5LCB1MTYgaU1TaW5kZXgpOy8vYWRkZWQgYnkgV1MgMDUvMTQvMDUKKwordTE2IFNlYXJjaFBta2lkKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgc3RydWN0ICBNYW5hZ2VtZW50X0ZyYW1lKiBtc2dIZWFkZXIsCisJCQkJICAgc3RydWN0IFBNS0lEX0luZm9ybWF0aW9uX0VsZW1lbnQgKiBBc3NvUmVxX1BNS0lEICk7CisjZW5kaWYKKworCisKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9ic3Nkc2NwdC5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvYnNzZHNjcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzE1MGEyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvYnNzZHNjcHQuaApAQCAtMCwwICsxLDE1NiBAQAorLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworLy8JYnNzZHNjcHQuYworLy8JCUJTUyBkZXNjcmlwdG9yIGRhdGEgYmFzZQorLy8JaGlzdG9yeSA6CisvLworLy8JRGVzY3JpcHRpb246CisvLwkJQlNTIGRlc2NyaXB0b3IgZGF0YSBiYXNlIHdpbGwgc3RvcmUgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBzdGF0aW9ucyBhdCB0aGUKKy8vCQlzdXJyb3VuZGluZyBlbnZpcm9ubWVudC4gVGhlIGZpcnN0IGVudHJ5KCBwc0JTUygwKSApIHdpbGwgbm90IGJlIHVzZWQgYW5kIHRoZQorLy8JCXNlY29uZCBvbmUoIHBzQlNTKDEpICkgd2lsbCBiZSB1c2VkIGZvciB0aGUgYnJvYWRjYXN0IGFkZHJlc3MuCisvLysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKKy8vI2RlZmluZSBNQVhfQUNDX1JTU0lfQ09VTlQJCTEwCisjZGVmaW5lIE1BWF9BQ0NfUlNTSV9DT1VOVAkJNgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBCU1MgRGVzY3JpcHRpb24gc2V0IEVsZW1lbnQgLCB0byBzdG9yZSBzY2FuIHJlY2VpdmVkIEJlYWNvbiBpbmZvcm1hdGlvbgorLy8KKy8vIE91cidzIGRpZmZlcnMgc2xpZ2h0bHkgZnJvbSB0aGUgc3BlY3MuIFRoZSBzcGVjaWZ5IGEgUEhZX1BhcmFtZXRlcl9TZXQuCisvLyBTaW5jZSB3ZSdyZSBvbmx5IGRvaW5nIGEgRFMgZGVzaWduIHJpZ2h0IG5vdywgd2UganVzdCBoYXZlIGEgRFMgc3RydWN0dXJlLgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit0eXBlZGVmIHN0cnVjdCBCU1NEZXNjcmlwdGlvbkVsZW1lbnQKK3sKKwl1MzIJCVNsb3RWYWxpZDsKKwl1MzIJCVBvd2VyU2F2ZU1vZGU7CisJUlhMQVlFUjEJUnhMYXllcjE7CisKKyAgICB1OAkJYWJQZWVyQWRkcmVzc1sgTUFDX0FERFJfTEVOR1RIICsgMiBdOyAvLyBwZWVyIE1BQyBBZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uIDYtT0NURVQgdmFsdWUKKyAgICB1MzIJCWR3QmdTY2FuU3RhbXA7CQkvLyBCZ1NjYW4gU2VxdWVuY2UgQ291bnRlciBzdGFtcCwgcmVjb3JkIHBzUk9BTS0+ZHdTY2FuQ291bnRlci4KKworCXUxNgkJQmVhY29uX1BlcmlvZDsKKwl1MTYJCXdBVElNX1dpbmRvdzsKKworICAgIHU4CQlhYkJzc0lEWyBNQUNfQUREUl9MRU5HVEggKyAyIF07CQkJCS8vIDZCCisKKyAgICB1OAkJYkJzc1R5cGU7CisgICAgdTgJCURUSU1fUGVyaW9kOyAgICAgICAgLy8gMSBvY3RldCB1c3VhbGx5IGZyb20gVElNIGVsZW1lbnQsIGlmIHByZXNlbnQKKwl1OAkJYm9JblRpbWVySGFuZGxlcjsKKwl1OAkJYm9FUlA7CQkJLy8gYW5hbHlzaXMgRVJQIG9yIChleHRlbmRlZCkgc3VwcG9ydGVkIHJhdGUgZWxlbWVudAorCisJdTgJCVRpbWVzdGFtcFs4XTsKKwl1OAkJQmFzaWNSYXRlWzMyXTsKKwl1OAkJT3BlcmF0aW9uYWxSYXRlWzMyXTsKKwl1MzIJCWR3QmFzaWNSYXRlQml0bWFwOwkJCS8vYml0IG1hcCwgcmV0cmlldmUgZnJvbSBTdXBwb3J0ZWRSYXRlU2V0CisJdTMyCQlkd09wZXJhdGlvbmFsUmF0ZUJpdG1hcDsJLy9iaXQgbWFwLCByZXRyaWV2ZSBmcm9tIFN1cHBvcnRlZFJhdGVTZXQgYW5kCisJCQkJCQkJCQkJLy8gRXh0ZW5kZWRTdXBwb3J0ZWRSYXRlU2V0CisJLy8gRm9yIFJTU0kgY2FsY3VsYXRpbmcKKwl1MzIJCUhhbFJzc2lbTUFYX0FDQ19SU1NJX0NPVU5UXTsgLy8gRW5jb2RlLiBJdCBtdXN0IHVzZSBNQUNSTyBvZiBIQUwgdG8gZ2V0IHRoZSBMTkEgYW5kIEFHQyBkYXRhCisJdTMyCQlIYWxSc3NpSW5kZXg7CisKKwkvLy8vRnJvbSBiZWFjb24vcHJvYmUgcmVzcG9uc2UKKyAgICBzdHJ1Y3QgU1NJRF9FbGVtZW50IFNTSUQ7CQkJCS8vIDM0QgorCXU4CXJlc2VydmVkXzFbIDIgXTsKKworICAgIHN0cnVjdCBDYXBhYmlsaXR5X0luZm9ybWF0aW9uX0VsZW1lbnQgICBDYXBhYmlsaXR5SW5mb3JtYXRpb247ICAvLyAyQgorCXU4CXJlc2VydmVkXzJbIDIgXTsKKworICAgIHN0cnVjdCBDRl9QYXJhbWV0ZXJfU2V0X0VsZW1lbnQgICAgQ0ZfUGFyYW1ldGVyX1NldDsJCS8vIDhCCisgICAgc3RydWN0IElCU1NfUGFyYW1ldGVyX1NldF9FbGVtZW50ICBJQlNTX1BhcmFtZXRlcl9TZXQ7CQkvLyA0QgorICAgIHN0cnVjdCBUSU1fRWxlbWVudCAgICAgICAgICAgICAgICAgVElNX0VsZW1lbnRfU2V0OyAJCQkvLyAyNTZCCisKKyAgICBzdHJ1Y3QgRFNfUGFyYW1ldGVyX1NldF9FbGVtZW50ICAgIERTX1BhcmFtZXRlcl9TZXQ7CQkvLyAzQgorCXU4CXJlc2VydmVkXzM7CisKKwlzdHJ1Y3QgRVJQX0luZm9ybWF0aW9uX0VsZW1lbnQJCUVSUF9JbmZvcm1hdGlvbl9TZXQ7CS8vIDNCCisJdTgJcmVzZXJ2ZWRfNDsKKworICAgIHN0cnVjdCBTdXBwb3J0ZWRfUmF0ZXNfRWxlbWVudCAgICAgU3VwcG9ydGVkUmF0ZVNldDsJCQkvLyAxMEIKKwl1OAlyZXNlcnZlZF81WzJdOworCisJc3RydWN0IEV4dGVuZGVkX1N1cHBvcnRlZF9SYXRlc19FbGVtZW50CUV4dGVuZGVkU3VwcG9ydGVkUmF0ZVNldDsJLy8gMjU3QgorCXU4CXJlc2VydmVkXzZbM107CisKKwl1OAliYW5kOworCXU4CXJlc2VydmVkXzdbM107CisKKwkvLyBmb3IgTUxNRSBtb2R1bGUKKyAgICB1MTYJCXdTdGF0ZTsJCQkvLyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3lzdGVtCisJdTE2CQl3SW5kZXg7CQkJLy8gVEhJUyBCU1MgZWxlbWVudCBlbnRyeSBpbmRleAorCisJdm9pZCoJcHNBZGFwdGVyOwkJLy8gcG9pbnRlciB0byBUSElTIEFkYXB0ZXIKKwlPU19USU1FUgluVGltZXI7ICAvLyBNTE1FIHRpbWVyCisKKyAgICAvLyBBdXRoZW50aWNhdGlvbgorICAgIHUxNgkJd0F1dGhBbGdvOyAgICAgIC8vIHBlZXIgTUFDIE1MTUUgdXNlIEF1dGggYWxnb3JpdGhtLCBkZWZhdWx0IE9QRU5fQVVUSAorICAgIHUxNgkJd0F1dGhTZXFOdW07ICAgIC8vIGN1cnJlbnQgbG9jYWwgTUFDIHNlbmRvdXQgQXV0aFJlcSBzZXF1ZW5jZSBudW1iZXIKKworCXU4CQlhdXRoX2NoYWxsZW5nZVRleHRbMTI4XTsKKworCS8vLy9Gb3IgWFA6CisgICAgdTMyCQlpZXNfbGVuOwkJLy8gaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGgKKyAgICB1OAkJaWVzWzI1Nl07CQkvLyBpbmZvcm1hdGlvbiBlbGVtZW50CisKKwkvLy8vRm9yIFdQQQorCXU4CVJzbkllX1R5cGVbMl07CQkvL2FkZGVkIGJ5IHdzIGZvciBkaXN0aW5ndWlzaCBXUEEgYW5kIFdQQTIgMDUvMTQvMDQKKwl1OAlSc25JZV9sZW47CisgICAgdTgJUnNuX051bTsKKworICAgIC8vIHRvIHJlY29yZCB0aGUgcnNuIGNpcGhlciBzdWl0ZXMsYWRkZGVkIGJ5IHdzIDA5LzA1LzA0CisJU1VJVEVfU0VMRUNUT1IJCQlncm91cF9jaXBoZXI7IC8vIDRCCisJU1VJVEVfU0VMRUNUT1IJCQlwYWlyd2lzZV9rZXlfY2lwaGVyX3N1aXRlc1tXTEFOX01BWF9QQUlSV0lTRV9DSVBIRVJfU1VJVEVfQ09VTlRdOworCVNVSVRFX1NFTEVDVE9SCQkJYXV0aF9rZXlfbWd0X3N1aXRlc1tXTEFOX01BWF9BVVRIX0tFWV9NR1RfU1VJVEVfTElTVF9DT1VOVF07CisKKwl1MTYJCQkJCXBhaXJ3aXNlX2tleV9jaXBoZXJfc3VpdGVfY291bnQ7CisJdTE2CQkJCQlhdXRoX2tleV9tZ3Rfc3VpdGVfY291bnQ7CisKKwl1OAkJCQkJcGFpcndpc2Vfa2V5X2NpcGhlcl9zdWl0ZV9zZWxlY3RlZDsKKwl1OAkJCQkJYXV0aF9rZXlfbWd0X3N1aXRlX3NlbGVjdGVkOworCXU4CQkJCQlyZXNlcnZlZF84WzJdOworCisJc3RydWN0IFJTTl9DYXBhYmlsaXR5X0VsZW1lbnQgIHJzbl9jYXBhYmlsaXRpZXM7IC8vIDJCCisJdTgJCQkJCXJlc2VydmVkXzlbMl07CisKKyAgICAvL3RvIHJlY29yZCB0aGUgcnNuIGNpcGhlciBzdWl0ZXMgZm9yIFdQQTIKKyAgICAjaWZkZWYgX1dQQTJfCisJdTMyCQkJCQlwcmVfYXV0aDsJCS8vYWRkZWQgYnkgV1MgZm9yIGRpc3Rpbmd1aXNoIGZvciAwNS8wNC8wNAorICAgIFNVSVRFX1NFTEVDVE9SCQkJd3BhMl9ncm91cF9jaXBoZXI7IC8vIDRCCisJU1VJVEVfU0VMRUNUT1IJCQl3cGEyX3BhaXJ3aXNlX2tleV9jaXBoZXJfc3VpdGVzW1dMQU5fTUFYX1BBSVJXSVNFX0NJUEhFUl9TVUlURV9DT1VOVF07CisJU1VJVEVfU0VMRUNUT1IJCQl3cGEyX2F1dGhfa2V5X21ndF9zdWl0ZXNbV0xBTl9NQVhfQVVUSF9LRVlfTUdUX1NVSVRFX0xJU1RfQ09VTlRdOworCisJdTE2CQkJCQl3cGEyX3BhaXJ3aXNlX2tleV9jaXBoZXJfc3VpdGVfY291bnQ7CisJdTE2CQkJCQl3cGEyX2F1dGhfa2V5X21ndF9zdWl0ZV9jb3VudDsKKworCXU4CQkJCQl3cGEyX3BhaXJ3aXNlX2tleV9jaXBoZXJfc3VpdGVfc2VsZWN0ZWQ7CisJdTgJCQkJCXdwYTJfYXV0aF9rZXlfbWd0X3N1aXRlX3NlbGVjdGVkOworCXU4CQkJCQlyZXNlcnZlZF8xMFsyXTsKKworCXN0cnVjdCBSU05fQ2FwYWJpbGl0eV9FbGVtZW50ICB3cGEyX3Jzbl9jYXBhYmlsaXRpZXM7IC8vIDJCCisJdTgJCQkJCXJlc2VydmVkXzExWzJdOworICAgICNlbmRpZiAvL2VuZGlmIF9XUEEyXworCisJLy9Gb3IgUmVwbGF5IHByb3RlY3Rpb24KKy8vCXU4CQlQYWlyd2lzZVRTQ1s2XTsKKy8vCXU4CQlHcm91cFRTQ1s2XTsKKworCS8vLy9Gb3IgdXAtdG8tZGF0ZQorCXUzMgkJU2NhblRpbWVTdGFtcDsJLy9mb3IgdGhlIGRlY2lzaW9uIHdoZXRoZXIgdGhlIHN0YXRpb24vQVAobWF5IGV4aXN0IGF0CisJCQkJCQkJLy9kaWZmZXJlbnQgY2hhbm5lbHMpIGhhcyBsZWZ0LiBJdCBtdXN0IGJlIGRldGVjdGVkIGJ5CisJCQkJCQkJLy9zY2FubmluZy4gTG9jYWwgZGV2aWNlIG1heSBjb25uZWN0ZWQgb3IgZGlzY29ubmVjdGVkLgorCXUzMgkJQnNzVGltZVN0YW1wOwkvL09ubHkgZm9yIHRoZSBkZWNpc2lvbiB3aGV0aGVyIHRoZSBzdGF0aW9uL0FQKGV4aXN0IGluCisJCQkJCQkJLy90aGUgc2FtZSBjaGFubmVsLCBhbmQgbm8gc2Nhbm5pbmcpIGlmIGxvY2FsIGRldmljZSBoYXMKKwkJCQkJCQkvL2Nvbm5lY3RlZCBzdWNjZXNzZnVsbHkuCisKKwkvLyAyMDA2MTEwOCBBZGQgZm9yIHN0b3JpbmcgV1BTX0lFLiBbRSBpZF1bTGVuZ3RoXVtPVUldW0RhdGFdCisJdTgJCVdQU19JRV9EYXRhW01BWF9JRV9BUFBFTkRfU0laRV07CisJdTE2CQlXUFNfSUVfbGVuZ3RoOworCXUxNgkJV1BTX0lFX2xlbmd0aF90bXA7IC8vIEZvciB2ZXJpZnkgdGhlcmUgaXMgYW4gV1BTX0lFIGluIEJlYWNvbiBvciBwcm9iZSByZXNwb25zZQorCit9IFdCX0JTU0RFU0NSSVBUSU9OLCAqUFdCX0JTU0RFU0NSSVBUSU9OOworCisjZGVmaW5lIHdCU1NDb25uZWN0ZWRTVEEoQWRhcHRlcikgICAgICAgICAgICAgXAorICAgICgodTE2KShBZGFwdGVyKS0+c0xvY2FsUGFyYS53Q29ubmVjdGVkU1RBaW5kZXgpCisKKyNkZWZpbmUgcHNCU1MoaSkJCQkoJihBZGFwdGVyLT5hc0JTU0Rlc2NyaXB0RWxlbWVudFsoaSldKSkKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9kc190a2lwLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9kc190a2lwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjllNTA1NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2RzX3RraXAuaApAQCAtMCwwICsxLDMzIEBACisvLyBSb3RhdGlvbiBmdW5jdGlvbnMgb24gMzIgYml0IHZhbHVlcworI2RlZmluZSBST0wzMiggQSwgbiApIFwKKyAgICAoICgoQSkgPDwgKG4pKSB8ICggKChBKT4+KDMyLShuKSkpICAmICggKDFVTCA8PCAobikpIC0gMSApICkgKQorCisjZGVmaW5lIFJPUjMyKCBBLCBuICkgICBST0wzMiggKEEpLCAzMi0obikgKQorCisKK3R5cGVkZWYgc3RydWN0IHRraXAKK3sKKyAgICB1MzIJSzAsIEsxOwkJLy8gS2V5CisJdW5pb24KKwl7CisJCXN0cnVjdCAvLyBDdXJyZW50IHN0YXRlCisJCXsKKwkJCXUzMglMOworCQkJdTMyCVI7CisJCX07CisJCXU4CUxSWzhdOworCX07CisJdW5pb24KKwl7CisJCXUzMglNOwkJLy8gTWVzc2FnZSBhY2N1bXVsYXRvciAoc2luZ2xlIHdvcmQpCisJCXU4CU1iWzRdOworCX07CisJczMyCQlieXRlc19pbl9NOwkvLyAjIGJ5dGVzIGluIE0KK30gdGtpcF90OworCisvL3ZvaWQgX2FwcGVuZF9kYXRhKCBQVUNIQVIgcERhdGEsIHUxNiBzaXplLCB0a2lwX3QgKnAgKTsKK3ZvaWQgTWRzX01pY0dldCggIHZvaWQqIEFkYXB0ZXIsICB2b2lkKiBwUnhMYXllcjEsICBQVUNIQVIgcEtleSwgIFBVQ0hBUiBwTWljICk7Cit2b2lkIE1kc19NaWNGaWxsKCAgdm9pZCogQWRhcHRlciwgIHZvaWQqIHBEZXMsICBQVUNIQVIgWG1pdEJ1ZkFkZHJlc3MgKTsKKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2dsXzgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9nbF84MDIxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MDZkODEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9nbF84MDIxMS5oCkBAIC0wLDAgKzEsMTI1IEBACisKKyNpZm5kZWYgX19HTF84MDIxMV9IX18KKyNkZWZpbmUgX19HTF84MDIxMV9IX18KKworLyoqKioqKioqKioqKioqKioqKiBDT05TVEFOVCBBTkQgTUFDUk8gU0VDVElPTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEJTUyBUeXBlICovCitlbnVtIHsKKyAgICBXTEFOX0JTU1RZUEVfSU5GUkFTVFJVQ1RVUkUgICAgICAgICA9IDAsCisgICAgV0xBTl9CU1NUWVBFX0lOREVQRU5ERU5ULAorICAgIFdMQU5fQlNTVFlQRV9BTllfQlNTLAorfTsKKworCisKKy8qIFByZWFtYmxlX1R5cGUsIHNlZSA8U0ZTLTgwMi4xMUctTUlCLTIwMz4gKi8KK3R5cGVkZWYgZW51bSBwcmVhbWJsZV90eXBlIHsKKyAgICBXTEFOX1BSRUFNQkxFX1RZUEVfU0hPUlQsCisgICAgV0xBTl9QUkVBTUJMRV9UWVBFX0xPTkcsCit9ICAgIHByZWFtYmxlX3R5cGVfZTsKKworCisvKiBTbG90X1RpbWVfVHlwZSwgc2VlIDxTRlMtODAyLjExRy1NSUItMjA4PiAqLwordHlwZWRlZiBlbnVtIHNsb3RfdGltZV90eXBlIHsKKyAgICBXTEFOX1NMT1RfVElNRV9UWVBFX0xPTkcsCisgICAgV0xBTl9TTE9UX1RJTUVfVFlQRV9TSE9SVCwKK30gICAgc2xvdF90aW1lX3R5cGVfZTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBFbmNyeXB0aW9uIE1vZGUgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VQX0RJU0FCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKKyAgICBXRVBfNjQsCisgICAgV0VQXzEyOCwKKworICAgIEVOQ1JZUFRfRElTQUJMRSwKKyAgICBFTkNSWVBUX1dFUCwKKyAgICBFTkNSWVBUX1dFUF9OT0tFWSwKKyAgICBFTkNSWVBUX1RLSVAsCisgICAgRU5DUllQVF9US0lQX05PS0VZLAorICAgIEVOQ1JZUFRfQ0NNUCwKKyAgICBFTkNSWVBUX0NDTVBfTk9LRVksCit9ICAgIGVuY3J5cHRpb25fbW9kZV9lOworCit0eXBlZGVmIGVudW0gX1dMQU5fUkFESU8geworICAgIFdMQU5fUkFESU9fT04sCisgICAgV0xBTl9SQURJT19PRkYsCisgICAgV0xBTl9SQURJT19NQVgsIC8vIG5vdCBhIHJlYWwgdHlwZSwgZGVmaW5lZCBhcyBhbiB1cHBlciBib3VuZAorfSBXTEFOX1JBRElPOworCit0eXBlZGVmIHN0cnVjdCBfV0xBTl9SQURJT19TVEFUVVMgeworCVdMQU5fUkFESU8gSFdTdGF0dXM7CisJV0xBTl9SQURJTyBTV1N0YXR1czsKK30gV0xBTl9SQURJT19TVEFUVVM7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gMjAwNDEwMjEgMS4xLjgxLjEwMDAgeWJqaWFuZworLy8gYWRkIGZvciByYWRpbyBub3RpZmljYXRpb24KK3R5cGVkZWYKK3ZvaWQgKCpSQURJT19OT1RJRklDQVRJT05fSEFORExFUikoCisJdm9pZCAqRGF0YSwKKwl2b2lkICpSYWRpb1N0YXR1c0J1ZmZlciwKKwl1MzIgUmFkaW9TdGF0dXNCdWZmZXJMZW4KKwkpOworCit0eXBlZGVmIHN0cnVjdCBfV0xBTl9SQURJT19OT1RJRklDQVRJT04KK3sKKyAgICBSQURJT19OT1RJRklDQVRJT05fSEFORExFUiBSYWRpb0NoYW5nZUhhbmRsZXI7CisgICAgdm9pZCAqRGF0YTsKK30gV0xBTl9SQURJT19OT1RJRklDQVRJT047CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gMjAwNDExMDIgMS4xLjkxLjEwMDAgeWJqaWFuZworLy8gYWRkIGZvciBPSURfODAyXzExX0NVU1RfUkVHSU9OX0NBUEFCSUxJVElFUyBhbmQgT0lEXzgwMl8xMV9PSURfUkVHSU9OCit0eXBlZGVmIGVudW0gX1dMQU5fUkVHSU9OX0NPREUKK3sKKwlXTEFOX1JFR0lPTl9VTktOT1dOLAorCVdMQU5fUkVHSU9OX0VVUk9QRSwKKwlXTEFOX1JFR0lPTl9KQVBBTiwKKwlXTEFOX1JFR0lPTl9VU0EsCisJV0xBTl9SRUdJT05fRlJBTkNFLAorCVdMQU5fUkVHSU9OX1NQQUlOLAorCVdMQU5fUkVHSU9OX0lTUkFFTCwKKwlXTEFOX1JFR0lPTl9NQVgsIC8vIG5vdCBhIHJlYWwgdHlwZSwgZGVmaW5lZCBhcyBhbiB1cHBlciBib3VuZAorfSBXTEFOX1JFR0lPTl9DT0RFOworCisjZGVmaW5lIFJFR0lPTl9OQU1FX01BWF9MRU5HVEggICAyNTYKKwordHlwZWRlZiBzdHJ1Y3QgX1dMQU5fUkVHSU9OX0NIQU5ORUxTCit7CisJdTMyIExlbmd0aDsKKwl1MzIgTmFtZUxlbmd0aDsKKwl1OCBOYW1lW1JFR0lPTl9OQU1FX01BWF9MRU5HVEhdOworCVdMQU5fUkVHSU9OX0NPREUgQ29kZTsKKwl1MzIgRnJlcXVlbmN5WzFdOworfSBXTEFOX1JFR0lPTl9DSEFOTkVMUzsKKwordHlwZWRlZiBzdHJ1Y3QgX1dMQU5fUkVHSU9OX0NBUEFCSUxJVElFUworeworCXUzMiBOdW1iZXJPZkl0ZW1zOworCVdMQU5fUkVHSU9OX0NIQU5ORUxTIFJlZ2lvblsxXTsKK30gV0xBTl9SRUdJT05fQ0FQQUJJTElUSUVTOworCit0eXBlZGVmIHN0cnVjdCBfcmVnaW9uX25hbWVfbWFwIHsKKwlXTEFOX1JFR0lPTl9DT0RFIHJlZ2lvbjsKKwl1OCAqbmFtZTsKKwl1MzIgKmNoYW5uZWxzOworfSByZWdpb25fbmFtZV9tYXA7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBNQUMyU1RSKGEpIChhKVswXSwgKGEpWzFdLCAoYSlbMl0sIChhKVszXSwgKGEpWzRdLCAoYSlbNV0KKyNkZWZpbmUgTUFDU1RSICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWCIKKworLy8gVE9ETzogMDYyNyBrZXZpbgorI2RlZmluZSBNSUMyU1RSKGEpIChhKVswXSwgKGEpWzFdLCAoYSlbMl0sIChhKVszXSwgKGEpWzRdLCAoYSlbNV0sIChhKVs2XSwgKGEpWzddCisjZGVmaW5lIE1JQ1NUUiAiJTAyWCAlMDJYICUwMlggJTAyWCAlMDJYICUwMlggJTAyWCAlMDJYIgorCisjZGVmaW5lIE1JQ0tFWTJTVFIoYSkgICBNSUMyU1RSKGEpCisjZGVmaW5lIE1JQ0tFWVNUUiAgICAgICBNSUNTVFIKKworCisjZW5kaWYgLyogX19HTF84MDIxMV9IX18gKi8KKy8qKiogZW5kIG9mIGZpbGUgKioqLworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2lvY3Rscy5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvaW9jdGxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiMzVkYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2lvY3Rscy5oCkBAIC0wLDAgKzEsNjc4IEBACisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBJT0NUTFMuSCAtCisvLworLy8gIERlc2NyaXB0aW9uOgorLy8gICAgRGVmaW5lIHRoZSBJT0NUTCBjb2Rlcy4KKy8vCisvLyAgUmV2aXNpb24gaGlzdG9yeToKKy8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBXaW5ib25kIEVsZWN0cm9uaWNzIENvcnAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyNpZm5kZWYgX0lPQ1RMU19ICisjZGVmaW5lIF9JT0NUTFNfSAorCisvLyBQRDQzIEtlZXAgaXQgLSBVc2VkIHdpdGggdGhlIFdpbjMzIGFwcGxpY2F0aW9uCisvLyAjaW5jbHVkZSA8d2luaW9jdGwuaD4KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gMjAwNDAxMDggQUREIHRoZSBmb2xsb3cgZm9yIHRlc3QKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgSU5GT1JNQVRJT05fTEVOR1RIIHNpemVvZih1bnNpZ25lZCBpbnQpCisKKyNkZWZpbmUgV0IzMl9JT0NUTF9JTkRFWCAgMHgwOTAwIC8vwq3Dl8KnxI/EvUjFpEvFucWwxb1lLy8KKworI2RlZmluZSBXYjMyX1JlZ2lzdGVyUmVhZAkJCUNUTF9DT0RFKAlcCisJCQlGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgMCwJCQkJXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELAkJCQkJXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIFdiMzJfUmVnaXN0ZXJXcml0ZQkJCUNUTF9DT0RFKAlcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgMSwJCQkJXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELAkJCQkJXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIFdiMzJfU2VuZFBhY2tldAkJCQlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDIsCQkJCVwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwJCQkJCVwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBXYjMyX1F1ZXJ5U2VuZFJlc3VsdAkJQ1RMX0NPREUoCVwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sCQkJCVwKKyAgICAgICAgICAgIFdCMzJfSU9DVExfSU5ERVggKyAzLAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgV2IzMl9TZXRGcmFnbWVudFRocmVzaG9sZAlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDQsCQkJCVwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwJCQkJCVwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBXYjMyX1NldExpbmtTdGF0dXMJCUNUTF9DT0RFKAlcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgNSwJCQkJXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELAkJCQkJXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIFdiMzJfU2V0QnVsa0luCQkJQ1RMX0NPREUoCVwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sCQkJCVwKKyAgICAgICAgICAgIFdCMzJfSU9DVExfSU5ERVggKyA2LAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgV2IzMl9Mb29wYmFja1Rlc3QJCQlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDcsCQkJCVwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwJCQkJCVwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBXYjM1X0VFUHJvbVJlYWQJCQkJQ1RMX0NPREUoCVwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sCQkJCVwKKyAgICAgICAgICAgIFdCMzJfSU9DVExfSU5ERVggKyA4LAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgV2IzNV9FRVByb21Xcml0ZQkJCUNUTF9DT0RFKAlcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgOSwJCQkJXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELAkJCQkJXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIFdiMzVfRmxhc2hSZWFkRGF0YQkJCUNUTF9DT0RFKAlcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgMTAsCQkJCVwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwJCQkJCVwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBXYjM1X0ZsYXNoV3JpdGUJCQkJQ1RMX0NPREUoCVwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sCQkJCVwKKyAgICAgICAgICAgIFdCMzJfSU9DVExfSU5ERVggKyAxMSwJCQkJXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELAkJCQkJXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIFdiMzVfRmxhc2hXcml0ZUJ1cnN0CQlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDEyLAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgV2IzNV9UeEJ1cnN0U3RhcnQJCQlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDEzLAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgV2IzNV9UeEJ1cnN0U3RvcAkJCUNUTF9DT0RFKAlcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLAkJCQlcCisgICAgICAgICAgICBXQjMyX0lPQ1RMX0lOREVYICsgMTQsCQkJCVwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwJCQkJCVwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBXYjM1X1R4QnVyc3RTdGF0dXMJCQlDVExfQ09ERSgJXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwJCQkJXAorICAgICAgICAgICAgV0IzMl9JT0NUTF9JTkRFWCArIDE1LAkJCQlcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsCQkJCQlcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIEZvciBJT0NUTCBpbnRlcmZhY2UKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIExJTktOQU1FX1NUUklORyAgICAgIlxcRG9zRGV2aWNlc1xcVzM1VU5EIgorI2RlZmluZSBOVERFVklDRV9TVFJJTkcgICAgICJcXERldmljZVxcVzM1VU5EIgorI2RlZmluZSBBUFBMSUNBVElPTl9MSU5LCSJcXFxcLlxcVzM1VU5EIgorCisjZGVmaW5lIFdCX0lPQ1RMX0lOREVYICAgICAgMHgwODAwCisjZGVmaW5lIFdCX0lPQ1RMX1RTX0lOREVYICAgV0JfSU9DVExfSU5ERVggKyA2MAorI2RlZmluZSBXQl9JT0NUTF9EVVRfSU5ERVggIFdCX0lPQ1RMX1RTX0lOREVYICsgNDAKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSU9DVExTIGRlZmluZWQgZm9yIERVVCAoRGV2aWNlIFVuZGVyIFRlc3QpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfTUFDX0FERFJFU1MKKy8vIFF1ZXJ5OiBSZXR1cm4gdGhlIGRvdDExU3RhdGlvbklECisvLyBTZXQgIDogU2V0IHRoZSBkb3QxMVN0YXRpb25JRC4gRGVtbyBvbmx5LgorLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9NQUNfQUREUkVTUyAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDEsICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfQlNTX0RFU0NSSVBUSU9OCisvLyBRdWVyeTogUmV0dXJuIHRoZSBpbmZvLiBvZiB0aGUgY3VycmVudCBjb25uZWN0ZWQgQlNTLgorLy8gU2V0ICA6IE5vbmUuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0JTU19ERVNDUklQVElPTiAgIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDIsICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX1RYX1JBVEUKKy8vIFF1ZXJ5OiBSZXR1cm4gdGhlIGN1cnJlbnQgdHJhbnNtaXNzaW9uIHJhdGUuCisvLyBTZXQgIDogU2V0IHRoZSB0cmFuc21pc3Npb24gcmF0ZSBvZiB0aGUgVHggcGFja2V0cy4KKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfVFhfUkFURSAgICAgICAgICAgICBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDMsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9DVVJSRU5UX1NUQV9TVEFURQorLy8gUXVlcnk6IFJldHVybiB0aGUgY3VycmVudCBTVEEgc3RhdGUuIChXQl9TVEFTVEFURSB0eXBlKQorLy8gU2V0ICA6IE5vbmUuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0NVUlJFTlRfU1RBX1NUQVRFICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyA0LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vLy8vLy8vLy8vIDEwLzMxLzAyJyBBZGRlZCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9TVEFSVF9JQlNTX1JFUVVFU1QKKy8vIFF1ZXJ5OiBOb25lLgorLy8gU2V0ICA6IFN0YXJ0IGEgbmV3IElCU1MKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfU1RBUlRfSUJTU19SRVFVRVNUICBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDUsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9KT0lOX1JFUVVFU1QKKy8vIFF1ZXJ5OiBOb25lLgorLy8gU2V0ICA6IFN5bmNocm9uaXplIHdpdGggdGhlIHNlbGVjdGVkIEJTUworLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9KT0lOX1JFUVVFU1QgICAgICAgIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgNiwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0FVVEhFTl9SRVFVRVNUCisvLyBRdWVyeTogTm9uZS4KKy8vIFNldCAgOiBBdXRoZW50aWNhdGUgd2l0aCB0aGUgQlNTCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0FVVEhFTl9SRVFVRVNUICAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyA3LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfREVBVVRIRU5fUkVRVUVTVAorLy8gUXVlcnk6IE5vbmUuCisvLyBTZXQgIDogRGVBdXRoZW50aWNhdGUgd2l0aGUgdGhlIEJTUworLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9ERUFVVEhFTl9SRVFVRVNUICAgIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgOCwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0FTU09DX1JFUVVFU1QKKy8vIFF1ZXJ5OiBOb25lLgorLy8gU2V0ICA6IEFzc29jaWF0ZSB3aXRoZSB0aGUgQlNTCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0FTU09DX1JFUVVFU1QgICAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyA5LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfUkVBU1NPQ19SRVFVRVNUCisvLyBRdWVyeTogTm9uZS4KKy8vIFNldCAgOiBSZUFzc29jaWF0ZSB3aXRoZSB0aGUgQlNTCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1JFQVNTT0NfUkVRVUVTVCAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAxMCwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9ESVNBU1NPQ19SRVFVRVNUCisvLyBRdWVyeTogTm9uZS4KKy8vIFNldCAgOiBEaXNBc3NvY2lhdGUgd2l0aGUgdGhlIEJTUworLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9ESVNBU1NPQ19SRVFVRVNUICAgIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMTEsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0ZSQUdfVEhSRVNIT0xECisvLyBRdWVyeTogUmV0dXJuIHRoZSBkb3QxMUZyYWdtZW50VGhyZXNob2xkCisvLyBTZXQgIDogU2V0IHRoZSBkb3QxMUZyYWdtZW50VGhyZXNob2xkCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0ZSQUdfVEhSRVNIT0xEICAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAxMiwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfUlRTX1RIUkVTSE9MRAorLy8gUXVlcnk6IFJldHVybiB0aGUgZG90MTFSVFNUaHJlc2hvbGQKKy8vIFNldCAgOiBTZXQgdGhlIGRvdDExUlRTVGhyZXNvbGQKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfUlRTX1RIUkVTSE9MRCAgICAgICBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDEzLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9XRVBfS0VZTU9ERQorLy8gUXVlcnk6IEdldCB0aGUgV0VQIGtleSBtb2RlLgorLy8gU2V0ICA6IFNldCB0aGUgV0VQIGtleSBtb2RlOiBkaXNhYmxlLzY0IGJpdHMvMTI4IGJpdHMKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfV0VQX0tFWU1PREUgICAgICAgICBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDE0LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9XRVBfS0VZVkFMVUUKKy8vIFF1ZXJ5OiBOb25lLgorLy8gU2V0ICA6IGZpbGwgaW4gdGhlIFdFUCBrZXkgdmFsdWUKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfV0VQX0tFWVZBTFVFICAgICAgICBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDE1LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9SRVNFVAorLy8gUXVlcnk6IE5vbmUuCisvLyBTZXQgIDogUmVzZXQgUy9XIGFuZCBIL1cKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfUkVTRVQgICAgICAgICAgQ1RMX0NPREUoICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDE2LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9QT1dFUl9TQVZFCisvLyBRdWVyeTogTm9uZS4KKy8vIFNldCAgOiBTZXQgUG93ZXIgU2F2ZSBNb2RlCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1BPV0VSX1NBVkUgICAgQ1RMX0NPREUoICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAxNywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfQlNTSURfTElTVF9TQ0FOCisvLyBRdWVyeTogTm9uZS4KKy8vIFNldCAgOgorLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9CU1NJRF9MSVNUX1NDQU4gQ1RMX0NPREUoICAgICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMTgsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0JTU0lEX0xJU1QKKy8vIFF1ZXJ5OiBSZXR1cm4gdGhlIEJTUyBpbmZvIG9mIEJTU3MgaW4gdGhlIGxhc3Qgc2Nhbm5pbmcgcHJvY2VzcworLy8gU2V0ICA6IE5vbmUuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0JTU0lEX0xJU1QgICAgQ1RMX0NPREUoICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAxOSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfU1RBVElTVElDUworLy8gUXVlcnk6IFJldHVybiB0aGUgc3RhdGlzdGljcyBvZiBUeC9SeC4KKy8vIFNldCAgOiBOb25lLgorLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9TVEFUSVNUSUNTICAgIENUTF9DT0RFKCAgICAgICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMjAsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0FDQ0VQVF9CRUFDT04KKy8vIFF1ZXJ5OiBSZXR1cm4gdGhlIGN1cnJlbnQgbW9kZSB0byBhY2NlcHQgYmVhY29uIG9yIG5vdC4KKy8vIFNldCAgOiBFbmFibGUgb3IgZGlzYWJsZSBhbGxvd2luZyB0aGUgSFctTUFDIHRvIHBhc3MgdGhlIGJlYWNvbiB0byB0aGUgU1ctTUFDCisvLyBBcmd1bWVudHM6IHVuc2lnbmVkIGNoYXIKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfQUNDRVBUX0JFQUNPTiAgQ1RMX0NPREUoICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDIxLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9ST0FNSU5HCisvLyBRdWVyeTogUmV0dXJuIHRoZSByb2FtaW5nIGZ1bmN0aW9uIHN0YXR1cworLy8gU2V0ICA6IEVuYWJsZS9EaXNhYmxlIHRoZSByb2FtaW5nIGZ1bmN0aW9uLgorI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1JPQU1JTkcgICAgICAgIENUTF9DT0RFKCAgICAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAyMiwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfRFRPCisvLyBRdWVyeTogUmV0dXJuIHRoZSBEVE8oRGF0YSBUaHJvdWdocHV0IE9wdGltaXphdGlvbikKKy8vICAgICAgICBmdW5jdGlvbiBzdGF0dXMgKFRSVUUgb3IgRkFMU0UpCisvLyBTZXQgIDogRW5hYmxlL0Rpc2FibGUgdGhlIERUTyBmdW5jdGlvbi4KKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfRFRPICAgICAgICAgICAgQ1RMX0NPREUoICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDIzLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9BTlRFTk5BX0RJVkVSU0lUWQorLy8gUXVlcnk6IFJldHVybiB0aGUgYW50ZW5uYSBkaXZlcnNpdHkgc3RhdHVzLiAoVFJVRS9PTiBvciBGQUxTRS9PRkYpCisvLyBTZXQgIDogRW5hYmxlL0Rpc2FibGUgdGhlIGFudGVubmEgZGl2ZXJzaXR5LgorLy8KKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX0RVVF9BTlRFTk5BX0RJVkVSU0lUWSBDVExfQ09ERSggICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMjQsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLy0tLS0tLS0tLS0tLS0tIG5ldyBhZGRlZCBmb3IgYStiK2cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX01BQ19PUEVSQVRJT05fTU9ERQorLy8gUXVlcnk6IFJldHVybiB0aGUgTUFDIG9wZXJhdGlvbiBtb2RlLiAoTU9ERV84MDJfMTFfQkcsIE1PREVfODAyXzExX0EsCisvLwkJCSBNT0RFXzgwMl8xMV9BQkcsIE1PREVfODAyXzExX0JHX0lCU1MpCisvLyBTZXQgIDogU2V0IHRoZSBNQUMgb3BlcmF0aW9uIG1vZGUuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX01BQ19PUEVSQVRJT05fTU9ERSBDVExfQ09ERSggICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMjUsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX1RYX1JBVEVfUkVERUZJTkVECisvLyBRdWVyeTogUmV0dXJuIHRoZSBjdXJyZW50IHR4IHJhdGUgd2hpY2ggZm9sbG93cyB0aGUgZGVmaW5pdGlvbiBpbiBzcGVjLiAoZm9yCisvLwkJCWV4YW1wbGUsIDUuNU0gPT4gMHgwYikKKy8vIFNldCAgOiBOb25lCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1RYX1JBVEVfUkVERUZJTkVEIENUTF9DT0RFKCAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAyNiwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfUFJFQU1CTEVfTU9ERQorLy8gUXVlcnk6IFJldHVybiB0aGUgcHJlYW1ibGUgbW9kZS4gKGF1dG8gb3IgbG9uZykKKy8vIFNldCAgOiBTZXQgdGhlIHByZWFtYmxlIG1vZGUuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1BSRUFNQkxFX01PREUgQ1RMX0NPREUoICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDI3LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9TTE9UX1RJTUVfTU9ERQorLy8gUXVlcnk6IFJldHVybiB0aGUgc2xvdCB0aW1lIG1vZGUuIChhdXRvIG9yIGxvbmcpCisvLyBTZXQgIDogU2V0IHRoZSBzbG90IHRpbWUgbW9kZS4KKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfU0xPVF9USU1FX01PREUgQ1RMX0NPREUoICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDI4LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfQURWQU5DRV9TVEFUVVMKKy8vIFF1ZXJ5OgorLy8gU2V0ICA6IE5PTkUKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfQURWQU5DRV9TVEFUVVMgQ1RMX0NPREUoICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDI5LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9UWF9SQVRFX01PREUKKy8vIFF1ZXJ5OiBSZXR1cm4gdGhlIHR4IHJhdGUgbW9kZS4gKFJBVEVfQVVUTywgUkFURV8xTSwgLi4sIFJBVEVfNTRNLCBSQVRFX01BWCkKKy8vIFNldCAgOiBTZXQgdGhlIHR4IHJhdGUgbW9kZS4gIChSQVRFX0FVVE8sIFJBVEVfMU0sIC4uLCBSQVRFXzU0TSwgUkFURV9NQVgpCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX1RYX1JBVEVfTU9ERSBDVExfQ09ERSggICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMzAsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0RUT19QQVJBCisvLyBRdWVyeTogUmV0dXJuIHRoZSBEVE8gcGFyYW1ldGVycworLy8gU2V0ICA6IFNldCB0aGUgRFRPIHBhcmFtZXRlcnMKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfRFRPX1BBUkEgQ1RMX0NPREUoICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDMxLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX0RVVF9FVkVOVF9MT0cKKy8vIFF1ZXJ5OiBSZXR1cm4gZXZlbnQgbG9nCisvLyBTZXQgIDogUmVzZXQgZXZlbnQgbG9nCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0VWRU5UX0xPRyBDVExfQ09ERSggICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfRFVUX0lOREVYICsgMzIsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisvLyBJT0NUTF9XQl84MDJfMTFfRFVUX0NXTUlOCisvLyBRdWVyeTogTk9ORShJdCB3aWxsIGJlIG9idGFpbmVkIGJ5IElPQ1RMX1dCXzgwMl8xMV9EVVRfQURWQU5DRV9TVEFUVVMpCisvLyBTZXQgIDogU2V0IENXTWluIHZhbHVlCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfRFVUX0NXTUlOIENUTF9DT0RFKCAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9EVVRfSU5ERVggKyAzMywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9EVVRfQ1dNQVgKKy8vIFF1ZXJ5OiBOT05FKEl0IHdpbGwgYmUgb2J0YWluZWQgYnkgSU9DVExfV0JfODAyXzExX0RVVF9BRFZBTkNFX1NUQVRVUykKKy8vIFNldCAgOiBTZXQgQ1dNYXggdmFsdWUKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9EVVRfQ1dNQVggQ1RMX0NPREUoICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX0RVVF9JTkRFWCArIDM0LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIElPQ1RMcyBmb3IgVGVzdGluZworCisvLyBJT0NUTF9XQl84MDJfMTFfVFNfU0VUX0NYWF9SRUcKKy8vIFF1ZXJ5OiBOb25lCisvLyBTZXQgIDogV3JpdGUgdGhlIHZhbHVlIHRvIG9uZSBvZiBDeHggcmVnaXN0ZXIuCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfU0VUX0NYWF9SRUcgIENUTF9DT0RFKCAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDAsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9UU19HRVRfQ1hYX1JFRworLy8gUXVlcnk6IFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIEN4eCByZWdpc3Rlci4KKy8vIFNldCAgOiBXcml0ZSB0aGUgcmVnIG5vLiAoMHgwMCwgMHgwNCwgMHgwOCBldGMpCisvLworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfR0VUX0NYWF9SRUcgIENUTF9DT0RFKCAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDEsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIElPQ1RMX1dCXzgwMl8xMV9UU19TRVRfRFhYX1JFRworLy8gUXVlcnk6IE5vbmUKKy8vIFNldCAgOiBXcml0ZSB0aGUgdmFsdWUgdG8gb25lIG9mIER4eCByZWdpc3Rlci4KKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19TRVRfRFhYX1JFRyAgQ1RMX0NPREUoICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy8gSU9DVExfV0JfODAyXzExX1RTX0dFVF9EWFhfUkVHCisvLyBRdWVyeTogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgRHh4IHJlZ2lzdGVyLgorLy8gU2V0ICA6IFdyaXRlIHRoZSByZWcgbm8uICgweDAwLCAweDA0LCAweDA4IGV0YykKKy8vCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19HRVRfRFhYX1JFRyAgQ1RMX0NPREUoICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFtUU10KKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfVFhfUkFURSAgICAgICAgICAgICAgQ1RMX0NPREUoICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19DVVJSRU5UX0NIQU5ORUwgICAgICBDVExfQ09ERSggICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDUsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX0VOQUJMRV9TRVFOTyAgICAgICAgIENUTF9DT0RFKCAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgNiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfRU5BTEJFX0FDS0VEUEFDS0VUICAgQ1RMX0NPREUoICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyA3LCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19JTkhJQklUX0NSQyAgICAgICAgICBDVExfQ09ERSggICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDgsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX1JFU0VUX1JDVl9DT1VOVEVSICAgIENUTF9DT0RFKCAgIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgOSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfU0VUX1RYX1RSSUdHRVIgICAgICAgQ1RMX0NPREUoICAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAxMCwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19GQUlMRURfVFhfQ09VTlQgICAgICAgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDExLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIFtUUzFdCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19UWF9QT1dFUiAgICAgICAgICAgICBDVExfQ09ERSggICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDEyLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX01PREVfRU5BQkxFCQkJIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAxMywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19NT0RFX0RJU0FCTEUJCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDE0LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX0FOVEVOTkEJCQkJIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAxNSwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19BREFQVEVSX0lORk8JCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDE2LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX01BQ19BRERSRVNTCQkJIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAxNywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19CU1NJRAkJCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDE4LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX1JGX1BBUkFNRVRFUgkJCSBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMTksICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfRklMVEVSCQkJCSBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMjAsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfQ0FMSUJSQVRJT04JCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDIxLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX0JTU19NT0RFCQkJCSBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMjIsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfU0VUX1NTSUQJCQkJIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAyMywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19JQlNTX0NIQU5ORUwJCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDI0LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKy8vIHNldC9xdWVyeSB0aGUgc2xvdCB0aW1lIHZhbHVlKHNob3J0IG9yIGxvbmcgc2xvdCB0aW1lKQorI2RlZmluZSBJT0NUTF9XQl84MDJfMTFfVFNfU0xPVF9USU1FCQkJIENUTF9DT0RFKCAgXAorICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgV0JfSU9DVExfVFNfSU5ERVggKyAyNSwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1dCXzgwMl8xMV9UU19TTE9UX1RJTUUJCQkgQ1RMX0NPREUoICBcCisgICAgICAgICAgICBGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBXQl9JT0NUTF9UU19JTkRFWCArIDI1LCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKKyNkZWZpbmUgSU9DVExfV0JfODAyXzExX1RTX1JYX1NUQVRJU1RJQ1MJCSBDVExfQ09ERSggIFwKKyAgICAgICAgICAgIEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFdCX0lPQ1RMX1RTX0lOREVYICsgMjYsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE1FVEhPRF9CVUZGRVJFRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2VuZGlmICAvLyAjaWZuZGVmIF9JT0NUTFNfSAorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L2NvbW1vbi5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwMGJhZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L2NvbW1vbi5oCkBAIC0wLDAgKzEsMTQzIEBACisvLworLy8gY29tbW9uLmgKKy8vCisvLyBUaGlzIGZpbGUgY29udGFpbnMgdGhlIE9TIGRlcGVuZGFudCBkZWZpbml0aW9uIGFuZCBmdW5jdGlvbi4KKy8vIEV2ZXJ5IE9TIGhhcyB0aGlzIGZpbGUgaW5kaXZpZHVhbC4KKy8vCisKKyNkZWZpbmUgRGVidWdVc2JkU3RhdHVzSW5mb3JtYXRpb24oIF9BICkKKworI2lmbmRlZiBDT01NT05fREVGCisjZGVmaW5lIENPTU1PTl9ERUYKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4gLy9uZWVkIGZvciBrZXJuZWwgYWxlcnQKKyNpbmNsdWRlIDxsaW51eC9hdXRvY29uZi5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPiAvL21lbW9yeSBhbGxvY2F0ZQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPi8vbmVlZCBmb3IgaW5pdCBhbmQgZXhpdCBtb2R1bGVzIG1hcmNvCisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxuZXQvaXdfaGFuZGxlci5oPgorI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorCisKKy8vI2RlZmluZSBERUJVR19FTkFCTEVEICAxCisKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ29tbW9uIHR5cGUgZGVmaW5pdGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwordHlwZWRlZiB1OCogICAgICAgICAgICBQVUNIQVI7Cit0eXBlZGVmIHM4KiAgICAgICAgICAgIFBDSEFSOwordHlwZWRlZiB1OCogICAgICAgICAgICBQQk9PTEVBTjsKK3R5cGVkZWYgdTE2KiAgICAgICAgICAgUFVTSE9SVDsKK3R5cGVkZWYgdTMyKiAgICAgICAgICAgUFVMT05HOwordHlwZWRlZiBzMTYqICAgUFNIT1JUOworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBJR05PUkUgICAgICAyCisjZGVmaW5lCVNVQ0NFU1MgICAgIDEKKyNkZWZpbmUJRkFJTFVSRSAgICAgMAorCisKKyNpZm5kZWYgdHJ1ZQorI2RlZmluZSB0cnVlICAgICAgICAxCisjZW5kaWYKKworI2lmbmRlZiBmYWxzZQorI2RlZmluZSBmYWxzZSAgICAgICAwCisjZW5kaWYKKworLy8gUEQ0MyAyMDAyMTEwOAorI2lmbmRlZiBUUlVFCisjZGVmaW5lIFRSVUUgICAgICAgIDEKKyNlbmRpZgorCisjaWZuZGVmIEZBTFNFCisjZGVmaW5lIEZBTFNFICAgICAgIDAKKyNlbmRpZgorCisjZGVmaW5lIFNUQVRVU19NRURJQV9DT05ORUNUIDEKKyNkZWZpbmUgU1RBVFVTX01FRElBX0RJU0NPTk5FQ1QgMAorCisjaWZuZGVmIEJJVAorI2RlZmluZSBCSVQoeCkgICAgICAgICAgICAgICAgICAoMSA8PCAoeCkpCisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgdXJiICogUFVSQjsKKworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIENvbW1vbiBmdW5jdGlvbiBkZWZpbml0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjaWZuZGVmIGFicworI2RlZmluZSBhYnMoX1QpCQkJCQkJCSgoX1QpIDwgMCA/IC1fVCA6IF9UKQorI2VuZGlmCisjZGVmaW5lIERFQlVHX0VOQUJMRUQKKyNkZWZpbmUgRVRIX0xFTkdUSF9PRl9BRERSRVNTCTYKKyNpZmRlZiBERUJVR19FTkFCTEVECisjZGVmaW5lIFdCREVCVUcoIF9NICkJcHJpbnRrIF9NCisjZWxzZQorI2RlZmluZSBXQkRFQlVHKCBfTSApCTAKKyNlbmRpZgorCisjZGVmaW5lIE9TX0RJU0NPTk5FQ1RFRAkwCisjZGVmaW5lIE9TX0NPTk5FQ1RFRAkxCisKKworI2RlZmluZSBPU19FVkVOVF9JTkRJQ0FURSggX0EsIF9CLCBfRiApCisjZGVmaW5lIE9TX1BNS0lEX1NUQVRVU19FVkVOVCggX0EgKQorCisKKy8qIFVmZiwgbm8sIGxvbmdzIGFyZSBub3QgYXRvbWljIG9uIGFsbCBhcmNoaXRlY3R1cmVzIExpbnV4CisgKiBzdXBwb3J0cy4gVGhpcyBzaG91bGQgcmVhbGx5IHVzZSBhdG9taWNfdCAqLworCisjZGVmaW5lIE9TX0FUT01JQwkJCXUzMgorI2RlZmluZSBPU19BVE9NSUNfUkVBRCggX0EsIF9WICkJX1YKKyNkZWZpbmUgT1NfQVRPTUlDX0lOQyggX0EsIF9WICkJCUVuY2FwQXRvbWljSW5jKCBfQSwgKHZvaWQqKV9WICkKKyNkZWZpbmUgT1NfQVRPTUlDX0RFQyggX0EsIF9WICkJCUVuY2FwQXRvbWljRGVjKCBfQSwgKHZvaWQqKV9WICkKKyNkZWZpbmUgT1NfTUVNT1JZX0NMRUFSKCBfQSwgX1MgKQltZW1zZXQoIChQVUNIQVIpX0EsMCxfUykKKyNkZWZpbmUgT1NfTUVNT1JZX0NPTVBBUkUoIF9BLCBfQiwgX1MgKQkobWVtY21wKF9BLF9CLF9TKT8gMCA6IDEpIC8vIERlZmluaXRpb24gaXMgcmV2ZXJzZSB3aXRoIE5kaXMgMTogdGhlIHNhbWUgMDogZGlmZmVyZW50CisKKworI2RlZmluZSBPU19TUElOX0xPQ0sJCQkJc3BpbmxvY2tfdAorI2RlZmluZSBPU19TUElOX0xPQ0tfQUxMT0NBVEUoIF9TICkJCXNwaW5fbG9ja19pbml0KCBfUyApOworI2RlZmluZSBPU19TUElOX0xPQ0tfRlJFRSggX1MgKQorI2RlZmluZSBPU19TUElOX0xPQ0tfQUNRVUlSRUQoIF9TICkJCXNwaW5fbG9ja19pcnEoIF9TICkKKyNkZWZpbmUgT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCBfUyApCQlzcGluX3VubG9ja19pcnEoIF9TICk7CisKKyNkZWZpbmUgT1NfVElNRVIJc3RydWN0IHRpbWVyX2xpc3QKKyNkZWZpbmUgT1NfVElNRVJfSU5JVElBTCggX1QsIF9GLCBfUCApCQkJXAorewkJCQkJCQlcCisJaW5pdF90aW1lciggX1QgKTsJCQkJXAorCShfVCktPmZ1bmN0aW9uID0gKHZvaWQgKilfRiMjXzFhOwkJXAorCShfVCktPmRhdGEgPSAodW5zaWduZWQgbG9uZylfUDsJCQlcCit9CisKKy8vIF9TIDogTWlsbGlzZWNvbmQKKy8vIDIwMDYwNDIwIEF0IGxlYXN0IDEgbGFyZ2UgdGhhbiBqaWZmaWVzCisjZGVmaW5lIE9TX1RJTUVSX1NFVCggX1QsIF9TICkJCQkJCVwKK3sJCQkJCQkJCVwKKwkoX1QpLT5leHBpcmVzID0gamlmZmllcyArICgoX1MqSForOTk5KS8xMDAwKTtcCisJYWRkX3RpbWVyKCBfVCApOwkJCQkJXAorfQorI2RlZmluZSBPU19USU1FUl9DQU5DRUwoIF9ULCBfQiApCQlkZWxfdGltZXJfc3luYyggX1QgKQorI2RlZmluZSBPU19USU1FUl9HRVRfU1lTX1RJTUUoIF9UICkJCSgqX1Q9amlmZmllcykKKworCisjZW5kaWYgLy8gQ09NTU9OX0RFRgorCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC9zeXNkZWYuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3N5c2RlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC9zeXNkZWYuaApAQCAtMCwwICsxLDczIEBACisKKworLy8KKy8vIFdpbmJvbmQgV0xBTiBTeXN0ZW0gQ29uZmlndXJhdGlvbiBkZWZpbmVzCisvLworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ3VycmVudCBkaXJlY3RvcnkgaXMgTGludXgKKy8vIFRoZSBkZWZpbml0aW9uIFdCX0xJTlVYIGlzIGEga2V5d29yZCBmb3IgdGhpcyBPUworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNpZm5kZWYgU1lTX0RFRl9ICisjZGVmaW5lIFNZU19ERUZfSAorI2RlZmluZSBXQl9MSU5VWAorI2RlZmluZSBXQl9MSU5VWF9XUEFfUFNLCisKKworLy8jZGVmaW5lIF9JQlNTX0JFQUNPTl9TRVFfU1RJQ0tfCisjZGVmaW5lIF9VU0VfRkFMTEJBQ0tfUkFURV8KKy8vI2RlZmluZSBBTlRESVZfREVGQVVMVF9PTgorCisjZGVmaW5lIF9XUEEyXwkvLyAyMDA2MTEyMiBJdCdzIG5lZWRlZCBmb3IgY3VycmVudCBMaW51eCBkcml2ZXIKKworCisjaWZuZGVmIF9XUEFfUFNLX0RFQlVHCisjdW5kZWYgIF9XUEFfUFNLX0RFQlVHCisjZW5kaWYKKworLy8gZGVidWcgcHJpbnQgb3B0aW9ucywgbWFyayB3aGF0IGRlYnVnIHlvdSBkb24ndCBuZWVkCisKKyNpZmRlZiBGVUxMX0RFQlVHCisjZGVmaW5lIF9QRV9TVEFURV9EVU1QXworI2RlZmluZSBfUEVfVFhfRFVNUF8KKyNkZWZpbmUgX1BFX1JYX0RVTVBfCisjZGVmaW5lIF9QRV9PSURfRFVNUF8KKyNkZWZpbmUgX1BFX0RUT19EVU1QXworI2RlZmluZSBfUEVfUkVHX0RVTVBfCisjZGVmaW5lIF9QRV9VU0JfSU5JX0RVTVBfCisjZW5kaWYKKworCisKKyNpbmNsdWRlICJjb21tb24uaCIJLy8gSW5kaXZpZHVhbCBmaWxlIGRlcGVuZHMgb24gT1MKKworI2luY2x1ZGUgIi4uL3diMzVfdmVyLmgiCisjaW5jbHVkZSAiLi4vbWFjX3N0cnVjdHVyZXMuaCIKKyNpbmNsdWRlICIuLi9kc190a2lwLmgiCisjaW5jbHVkZSAiLi4vbG9jYWxwYXJhLmgiCisjaW5jbHVkZSAiLi4vc21lX3MuaCIKKyNpbmNsdWRlICIuLi9zY2FuX3MuaCIKKyNpbmNsdWRlICIuLi9tZHNfcy5oIgorI2luY2x1ZGUgIi4uL21sbWVfcy5oIgorI2luY2x1ZGUgIi4uL2Jzc2RzY3B0LmgiCisjaW5jbHVkZSAiLi4vc21lX2FwaS5oIgorI2luY2x1ZGUgIi4uL2dsXzgwMjExLmgiCisjaW5jbHVkZSAiLi4vbXRvLmgiCisjaW5jbHVkZSAiLi4vd2JsaW51eF9zLmgiCisjaW5jbHVkZSAiLi4vd2JoYWxfcy5oIgorCisKKyNpbmNsdWRlICIuLi9hZGFwdGVyLmgiCisKKyNpbmNsdWRlICIuLi9tbG1lX21pYi5oIgorI2luY2x1ZGUgIi4uL21kc19mLmgiCisjaW5jbHVkZSAiLi4vYnNzX2YuaCIKKyNpbmNsdWRlICIuLi9tbG1ldHhyeF9mLmgiCisjaW5jbHVkZSAiLi4vbXRvX2YuaCIKKyNpbmNsdWRlICIuLi93YmhhbF9mLmgiCisjaW5jbHVkZSAiLi4vd2JsaW51eF9mLmgiCisvLyBLZXJuZWwgVGltZXIgcmVzb2x1dGlvbiwgTkRJUyBpcyAxMG1zLCAxMDAwMHVzCisjZGVmaW5lIE1JTl9USU1FT1VUX1ZBTAkoMTApIC8vbXMKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyZWcuYyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyZWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzBiNDU0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJlZy5jCkBAIC0wLDAgKzEsNzQ3IEBACisjaW5jbHVkZSAic3lzZGVmLmgiCisKK2V4dGVybiB2b2lkIHBoeV9jYWxpYnJhdGlvbl93aW5ib25kKGh3X2RhdGFfdCAqcGh3X2RhdGEsIHUzMiBmcmVxdWVuY3kpOworCisvLyBUUlVFICA6IHJlYWQgY29tbWFuZCBwcm9jZXNzIHN1Y2Nlc3NmdWxseQorLy8gRkFMU0UgOiByZWdpc3RlciBub3Qgc3VwcG9ydAorLy8gUmVnaXN0ZXJObyA6IHN0YXJ0IGJhc2UKKy8vIHBSZWdpc3RlckRhdGEgOiBkYXRhIHBvaW50CisvLyBOdW1iZXJPZkRhdGEgOiBudW1iZXIgb2YgcmVnaXN0ZXIgZGF0YQorLy8gRmxhZyA6IEFVVE9fSU5DUkVNRU5UIC0gUmVnaXN0ZXJObyB3aWxsIGF1dG8gaW5jcmVtZW50IDQKKy8vCQkgIE5PX0lOQ1JFTUVOVCAtIEZ1bmN0aW9uIHdpbGwgd3JpdGUgZGF0YSBpbnRvIHRoZSBzYW1lIHJlZ2lzdGVyCit1bnNpZ25lZCBjaGFyCitXYjM1UmVnX0J1cnN0V3JpdGUocGh3X2RhdGFfdCBwSHdEYXRhLCB1MTYgUmVnaXN0ZXJObywgUFVMT05HIHBSZWdpc3RlckRhdGEsIHU4IE51bWJlck9mRGF0YSwgdTggRmxhZykKK3sKKwlQV0IzNVJFRyBwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCVBVUkIJCXBVcmIgPSBOVUxMOworCVBSRUdfUVVFVUUJcFJlZ1F1ZXVlID0gTlVMTDsKKwl1MTYJCVVyYlNpemU7CisJc3RydWN0ICAgICAgdXNiX2N0cmxyZXF1ZXN0ICpkcjsKKwl1MTYJCWksIERhdGFTaXplID0gTnVtYmVyT2ZEYXRhKjQ7CisKKwkvLyBNb2R1bGUgc2h1dGRvd24KKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUpCisJCXJldHVybiBGQUxTRTsKKworCS8vIFRyeWluZyB0byB1c2UgYnVyc3Qgd3JpdGUgZnVuY3Rpb24gaWYgdXNlIG5ldyBoYXJkd2FyZQorCVVyYlNpemUgPSBzaXplb2YoUkVHX1FVRVVFKSArIERhdGFTaXplICsgc2l6ZW9mKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QpOworCU9TX01FTU9SWV9BTExPQyggKHZvaWQqICopJnBSZWdRdWV1ZSwgVXJiU2l6ZSApOworCXBVcmIgPSB3Yl91c2JfYWxsb2NfdXJiKDApOworCWlmKCBwVXJiICYmIHBSZWdRdWV1ZSApIHsKKwkJcFJlZ1F1ZXVlLT5ESVJFQ1QgPSAyOy8vIGJ1cnN0IHdyaXRlIHJlZ2lzdGVyCisJCXBSZWdRdWV1ZS0+SU5ERVggPSBSZWdpc3Rlck5vOworCQlwUmVnUXVldWUtPnBCdWZmZXIgPSAoUFVMT05HKSgoUFVDSEFSKXBSZWdRdWV1ZSArIHNpemVvZihSRUdfUVVFVUUpKTsKKwkJbWVtY3B5KCBwUmVnUXVldWUtPnBCdWZmZXIsIHBSZWdpc3RlckRhdGEsIERhdGFTaXplICk7CisJCS8vdGhlIGZ1bmN0aW9uIGZvciByZXZlcnNpbmcgcmVnaXN0ZXIgZGF0YSBmcm9tIGxpdHRsZSBlbmRpYW4gdG8gYmlnIGVuZGlhbgorCQlmb3IoIGk9MDsgaTxOdW1iZXJPZkRhdGEgOyBpKysgKQorCQkJcFJlZ1F1ZXVlLT5wQnVmZmVyW2ldID0gY3B1X3RvX2xlMzIoIHBSZWdRdWV1ZS0+cEJ1ZmZlcltpXSApOworCisJCWRyID0gKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikoKFBVQ0hBUilwUmVnUXVldWUgKyBzaXplb2YoUkVHX1FVRVVFKSArIERhdGFTaXplKTsKKwkJZHItPmJSZXF1ZXN0VHlwZSA9IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9ESVJfT1VUIHwgVVNCX1JFQ0lQX0RFVklDRTsKKwkJZHItPmJSZXF1ZXN0ID0gMHgwNDsgLy8gVVNCIG9yIHZlbmRvci1kZWZpbmVkIHJlcXVlc3QgY29kZSwgYnVyc3QgbW9kZQorCQlkci0+d1ZhbHVlID0gY3B1X3RvX2xlMTYoIEZsYWcgKTsgLy8gMDogUmVnaXN0ZXIgbnVtYmVyIGF1dG8taW5jcmVtZW50LCAxOiBObyBhdXRvIGluY3JlbWVudAorCQlkci0+d0luZGV4ID0gY3B1X3RvX2xlMTYoIFJlZ2lzdGVyTm8gKTsKKwkJZHItPndMZW5ndGggPSBjcHVfdG9fbGUxNiggRGF0YVNpemUgKTsKKwkJcFJlZ1F1ZXVlLT5OZXh0ID0gTlVMTDsKKwkJcFJlZ1F1ZXVlLT5wVXNiUmVxID0gZHI7CisJCXBSZWdRdWV1ZS0+cFVyYiA9IHBVcmI7CisKKwkJT1NfU1BJTl9MT0NLX0FDUVVJUkVEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCQlpZiAocFdiMzVSZWctPnBSZWdGaXJzdCA9PSBOVUxMKQorCQkJcFdiMzVSZWctPnBSZWdGaXJzdCA9IHBSZWdRdWV1ZTsKKwkJZWxzZQorCQkJcFdiMzVSZWctPnBSZWdMYXN0LT5OZXh0ID0gcFJlZ1F1ZXVlOworCQlwV2IzNVJlZy0+cFJlZ0xhc3QgPSBwUmVnUXVldWU7CisKKwkJT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJCS8vIFN0YXJ0IEVQMFZNCisJCVdiMzVSZWdfRVAwVk1fc3RhcnQocEh3RGF0YSk7CisKKwkJcmV0dXJuIFRSVUU7CisJfSBlbHNlIHsKKwkJaWYgKHBVcmIpCisJCQl1c2JfZnJlZV91cmIocFVyYik7CisJCWlmIChwUmVnUXVldWUpCisJCQlrZnJlZShwUmVnUXVldWUpOworCQlyZXR1cm4gRkFMU0U7CisJfQorICAgcmV0dXJuIEZBTFNFOworfQorCit2b2lkCitXYjM1UmVnX1VwZGF0ZShwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgUmVnaXN0ZXJObywgIHUzMiBSZWdpc3RlclZhbHVlKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJc3dpdGNoIChSZWdpc3Rlck5vKSB7CisJY2FzZSAweDNiMDogcFdiMzVSZWctPlUxQjAgPSBSZWdpc3RlclZhbHVlOyBicmVhazsKKwljYXNlIDB4M2JjOiBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgPSBSZWdpc3RlclZhbHVlOyBicmVhazsKKwljYXNlIDB4NDAwOiBwV2IzNVJlZy0+RDAwX0RtYUNvbnRyb2wgPSBSZWdpc3RlclZhbHVlOyBicmVhazsKKwljYXNlIDB4ODAwOiBwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgPSBSZWdpc3RlclZhbHVlOyBicmVhazsKKwljYXNlIDB4ODA0OiBwV2IzNVJlZy0+TTA0X011bHRpY2FzdEFkZHJlc3MxID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDgwODogcFdiMzVSZWctPk0wOF9NdWx0aWNhc3RBZGRyZXNzMiA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4MjQ6IHBXYjM1UmVnLT5NMjRfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4Mjg6IHBXYjM1UmVnLT5NMjhfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4MmM6IHBXYjM1UmVnLT5NMkNfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4Mzg6IHBXYjM1UmVnLT5NMzhfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4NDA6IHBXYjM1UmVnLT5NNDBfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4NDQ6IHBXYjM1UmVnLT5NNDRfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4NDg6IHBXYjM1UmVnLT5NNDhfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4NGM6IHBXYjM1UmVnLT5NNENfTWFjU3RhdHVzID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDg2MDogcFdiMzVSZWctPk02MF9NYWNDb250cm9sID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDg2ODogcFdiMzVSZWctPk02OF9NYWNDb250cm9sID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDg3MDogcFdiMzVSZWctPk03MF9NYWNDb250cm9sID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDg3NDogcFdiMzVSZWctPk03NF9NYWNDb250cm9sID0gUmVnaXN0ZXJWYWx1ZTsgYnJlYWs7CisJY2FzZSAweDg3ODogcFdiMzVSZWctPk03OF9FUlBJbmZvcm1hdGlvbiA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4N0M6IHBXYjM1UmVnLT5NN0NfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4ODA6IHBXYjM1UmVnLT5NODBfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4ODQ6IHBXYjM1UmVnLT5NODRfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4ODg6IHBXYjM1UmVnLT5NODhfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHg4OTg6IHBXYjM1UmVnLT5NOThfTWFjQ29udHJvbCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDBjOiBwV2IzNVJlZy0+QkIwQyA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDJjOiBwV2IzNVJlZy0+QkIyQyA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDMwOiBwV2IzNVJlZy0+QkIzMCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDNjOiBwV2IzNVJlZy0+QkIzQyA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDQ4OiBwV2IzNVJlZy0+QkI0OCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDRjOiBwV2IzNVJlZy0+QkI0QyA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDUwOiBwV2IzNVJlZy0+QkI1MCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDU0OiBwV2IzNVJlZy0+QkI1NCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDU4OiBwV2IzNVJlZy0+QkI1OCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDVjOiBwV2IzNVJlZy0+QkI1QyA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCWNhc2UgMHgxMDYwOiBwV2IzNVJlZy0+QkI2MCA9IFJlZ2lzdGVyVmFsdWU7IGJyZWFrOworCX0KK30KKworLy8gVFJVRSAgOiByZWFkIGNvbW1hbmQgcHJvY2VzcyBzdWNjZXNzZnVsbHkKKy8vIEZBTFNFIDogcmVnaXN0ZXIgbm90IHN1cHBvcnQKK3Vuc2lnbmVkIGNoYXIKK1diMzVSZWdfV3JpdGVTeW5jKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IFJlZ2lzdGVyTm8sICB1MzIgUmVnaXN0ZXJWYWx1ZSApCit7CisJUFdCMzVSRUcgcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwlpbnQgcmV0ID0gLTE7CisKKwkvLyBNb2R1bGUgc2h1dGRvd24KKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUpCisJCXJldHVybiBGQUxTRTsKKworCVJlZ2lzdGVyVmFsdWUgPSBjcHVfdG9fbGUzMihSZWdpc3RlclZhbHVlKTsKKworCS8vIHVwZGF0ZSB0aGUgcmVnaXN0ZXIgYnkgc2VuZCB1c2IgbWVzc2FnZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXBXYjM1UmVnLT5TeW5jSW9QYXVzZSA9IDE7CisKKwkvLyAyMDA2MDcxNy41IFdhaXQgdW50aWwgRVAwVk0gc3RvcAorCXdoaWxlIChwV2IzNVJlZy0+RVAwdm1fc3RhdGUgIT0gVk1fU1RPUCkKKwkJT1NfU0xFRVAoMTAwMDApOworCisJLy8gU3luYyBJb0NhbGxEcml2ZXIKKwlwV2IzNVJlZy0+RVAwdm1fc3RhdGUgPSBWTV9SVU5OSU5HOworCXJldCA9IHVzYl9jb250cm9sX21zZyggcEh3RGF0YS0+V2JVc2IudWRldiwKKwkJCSAgICAgICB1c2Jfc25kY3RybHBpcGUoIHBId0RhdGEtPldiVXNiLnVkZXYsIDAgKSwKKwkJCSAgICAgICAweDAzLCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfREVWSUNFIHwgVVNCX0RJUl9PVVQsCisJCQkgICAgICAgMHgwLFJlZ2lzdGVyTm8sICZSZWdpc3RlclZhbHVlLCA0LCBIWioxMDAgKTsKKwlwV2IzNVJlZy0+RVAwdm1fc3RhdGUgPSBWTV9TVE9QOworCXBXYjM1UmVnLT5TeW5jSW9QYXVzZSA9IDA7CisKKwlXYjM1UmVnX0VQMFZNX3N0YXJ0KHBId0RhdGEpOworCisJaWYgKHJldCA8IDApIHsKKwkJI2lmZGVmIF9QRV9SRUdfRFVNUF8KKwkJV0JERUJVRygoIkVQMCBXcml0ZSByZWdpc3RlciB1c2IgbWVzc2FnZSBzZW5kaW5nIGVycm9yXG4iKSk7CisJCSNlbmRpZgorCisJCXBId0RhdGEtPlN1cnByaXNlUmVtb3ZlID0gMTsgLy8gMjAwNjA3MDQuMgorCQlyZXR1cm4gRkFMU0U7CisJfQorCisJcmV0dXJuIFRSVUU7Cit9CisKKy8vIFRSVUUgIDogcmVhZCBjb21tYW5kIHByb2Nlc3Mgc3VjY2Vzc2Z1bGx5CisvLyBGQUxTRSA6IHJlZ2lzdGVyIG5vdCBzdXBwb3J0Cit1bnNpZ25lZCBjaGFyCitXYjM1UmVnX1dyaXRlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IFJlZ2lzdGVyTm8sICB1MzIgUmVnaXN0ZXJWYWx1ZSApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwlzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpkcjsKKwlQVVJCCQlwVXJiID0gTlVMTDsKKwlQUkVHX1FVRVVFCXBSZWdRdWV1ZSA9IE5VTEw7CisJdTE2CQlVcmJTaXplOworCisKKwkvLyBNb2R1bGUgc2h1dGRvd24KKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUpCisJCXJldHVybiBGQUxTRTsKKworCS8vIHVwZGF0ZSB0aGUgcmVnaXN0ZXIgYnkgc2VuZCB1cmIgcmVxdWVzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVVyYlNpemUgPSBzaXplb2YoUkVHX1FVRVVFKSArIHNpemVvZihzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0KTsKKwlPU19NRU1PUllfQUxMT0MoICh2b2lkKiAqKSZwUmVnUXVldWUsIFVyYlNpemUgKTsKKwlwVXJiID0gd2JfdXNiX2FsbG9jX3VyYigwKTsKKwlpZiAocFVyYiAmJiBwUmVnUXVldWUpIHsKKwkJcFJlZ1F1ZXVlLT5ESVJFQ1QgPSAxOy8vIGJ1cnN0IHdyaXRlIHJlZ2lzdGVyCisJCXBSZWdRdWV1ZS0+SU5ERVggPSBSZWdpc3Rlck5vOworCQlwUmVnUXVldWUtPlZBTFVFID0gY3B1X3RvX2xlMzIoUmVnaXN0ZXJWYWx1ZSk7CisJCXBSZWdRdWV1ZS0+UkVTRVJWRURfVkFMSUQgPSBGQUxTRTsKKwkJZHIgPSAoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqKSgoUFVDSEFSKXBSZWdRdWV1ZSArIHNpemVvZihSRUdfUVVFVUUpKTsKKwkJZHItPmJSZXF1ZXN0VHlwZSA9IFVTQl9UWVBFX1ZFTkRPUnxVU0JfRElSX09VVCB8VVNCX1JFQ0lQX0RFVklDRTsKKwkJZHItPmJSZXF1ZXN0ID0gMHgwMzsgLy8gVVNCIG9yIHZlbmRvci1kZWZpbmVkIHJlcXVlc3QgY29kZSwgYnVyc3QgbW9kZQorCQlkci0+d1ZhbHVlID0gY3B1X3RvX2xlMTYoMHgwKTsKKwkJZHItPndJbmRleCA9IGNwdV90b19sZTE2KFJlZ2lzdGVyTm8pOworCQlkci0+d0xlbmd0aCA9IGNwdV90b19sZTE2KDQpOworCisJCS8vIEVudGVyIHRoZSBzZW5kaW5nIHF1ZXVlCisJCXBSZWdRdWV1ZS0+TmV4dCA9IE5VTEw7CisJCXBSZWdRdWV1ZS0+cFVzYlJlcSA9IGRyOworCQlwUmVnUXVldWUtPnBVcmIgPSBwVXJiOworCisJCU9TX1NQSU5fTE9DS19BQ1FVSVJFRCgmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCQlpZiAocFdiMzVSZWctPnBSZWdGaXJzdCA9PSBOVUxMKQorCQkJcFdiMzVSZWctPnBSZWdGaXJzdCA9IHBSZWdRdWV1ZTsKKwkJZWxzZQorCQkJcFdiMzVSZWctPnBSZWdMYXN0LT5OZXh0ID0gcFJlZ1F1ZXVlOworCQlwV2IzNVJlZy0+cFJlZ0xhc3QgPSBwUmVnUXVldWU7CisKKwkJT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJCS8vIFN0YXJ0IEVQMFZNCisJCVdiMzVSZWdfRVAwVk1fc3RhcnQocEh3RGF0YSk7CisKKwkJcmV0dXJuIFRSVUU7CisJfSBlbHNlIHsKKwkJaWYgKHBVcmIpCisJCQl1c2JfZnJlZV91cmIocFVyYik7CisJCWtmcmVlKHBSZWdRdWV1ZSk7CisJCXJldHVybiBGQUxTRTsKKwl9Cit9CisKKy8vVGhpcyBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgd2l0aCBhIHVzZXIgZGVmaW5lZCB2YWx1ZS4gV2hlbiBpdCBjb21wbGV0ZXMsCisvL3RoaXMgdmFsdWUgaXMgdXNlZnVsLiBGb3IgZXhhbXBsZSwgaGFsX3NldF9jdXJyZW50X2NoYW5uZWwgd2lsbCB1c2UgaXQuCisvLyBUUlVFICA6IHJlYWQgY29tbWFuZCBwcm9jZXNzIHN1Y2Nlc3NmdWxseQorLy8gRkFMU0UgOiByZWdpc3RlciBub3Qgc3VwcG9ydAordW5zaWduZWQgY2hhcgorV2IzNVJlZ19Xcml0ZVdpdGhDYWxsYmFja1ZhbHVlKCBwaHdfZGF0YV90IHBId0RhdGEsIHUxNiBSZWdpc3Rlck5vLCB1MzIgUmVnaXN0ZXJWYWx1ZSwKKwkJCQlQQ0hBUiBwVmFsdWUsIHM4IExlbikKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmRyOworCVBVUkIJCXBVcmIgPSBOVUxMOworCVBSRUdfUVVFVUUJcFJlZ1F1ZXVlID0gTlVMTDsKKwl1MTYJCVVyYlNpemU7CisKKwkvLyBNb2R1bGUgc2h1dGRvd24KKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUpCisJCXJldHVybiBGQUxTRTsKKworCS8vIHVwZGF0ZSB0aGUgcmVnaXN0ZXIgYnkgc2VuZCB1cmIgcmVxdWVzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVVyYlNpemUgPSBzaXplb2YoUkVHX1FVRVVFKSArIHNpemVvZihzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0KTsKKwlPU19NRU1PUllfQUxMT0MoKHZvaWQqICopICZwUmVnUXVldWUsIFVyYlNpemUgKTsKKwlwVXJiID0gd2JfdXNiX2FsbG9jX3VyYigwKTsKKwlpZiAocFVyYiAmJiBwUmVnUXVldWUpIHsKKwkJcFJlZ1F1ZXVlLT5ESVJFQ1QgPSAxOy8vIGJ1cnN0IHdyaXRlIHJlZ2lzdGVyCisJCXBSZWdRdWV1ZS0+SU5ERVggPSBSZWdpc3Rlck5vOworCQlwUmVnUXVldWUtPlZBTFVFID0gY3B1X3RvX2xlMzIoUmVnaXN0ZXJWYWx1ZSk7CisJCS8vTk9URSA6IFVzZXJzIG11c3QgZ3VhcmFudGVlIHRoZSBzaXplIG9mIHZhbHVlIHdpbGwgbm90IGV4Y2VlZCB0aGUgYnVmZmVyIHNpemUuCisJCW1lbWNweShwUmVnUXVldWUtPlJFU0VSVkVELCBwVmFsdWUsIExlbik7CisJCXBSZWdRdWV1ZS0+UkVTRVJWRURfVkFMSUQgPSBUUlVFOworCQlkciA9IChzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICopKChQVUNIQVIpcFJlZ1F1ZXVlICsgc2l6ZW9mKFJFR19RVUVVRSkpOworCQlkci0+YlJlcXVlc3RUeXBlID0gVVNCX1RZUEVfVkVORE9SfFVTQl9ESVJfT1VUIHxVU0JfUkVDSVBfREVWSUNFOworCQlkci0+YlJlcXVlc3QgPSAweDAzOyAvLyBVU0Igb3IgdmVuZG9yLWRlZmluZWQgcmVxdWVzdCBjb2RlLCBidXJzdCBtb2RlCisJCWRyLT53VmFsdWUgPSBjcHVfdG9fbGUxNigweDApOworCQlkci0+d0luZGV4ID0gY3B1X3RvX2xlMTYoUmVnaXN0ZXJObyk7CisJCWRyLT53TGVuZ3RoID0gY3B1X3RvX2xlMTYoNCk7CisKKwkJLy8gRW50ZXIgdGhlIHNlbmRpbmcgcXVldWUKKwkJcFJlZ1F1ZXVlLT5OZXh0ID0gTlVMTDsKKwkJcFJlZ1F1ZXVlLT5wVXNiUmVxID0gZHI7CisJCXBSZWdRdWV1ZS0+cFVyYiA9IHBVcmI7CisJCU9TX1NQSU5fTE9DS19BQ1FVSVJFRCAoJnBXYjM1UmVnLT5FUDBWTV9zcGluX2xvY2sgKTsKKwkJaWYoIHBXYjM1UmVnLT5wUmVnRmlyc3QgPT0gTlVMTCApCisJCQlwV2IzNVJlZy0+cFJlZ0ZpcnN0ID0gcFJlZ1F1ZXVlOworCQllbHNlCisJCQlwV2IzNVJlZy0+cFJlZ0xhc3QtPk5leHQgPSBwUmVnUXVldWU7CisJCXBXYjM1UmVnLT5wUmVnTGFzdCA9IHBSZWdRdWV1ZTsKKworCQlPU19TUElOX0xPQ0tfUkVMRUFTRUQgKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJCS8vIFN0YXJ0IEVQMFZNCisJCVdiMzVSZWdfRVAwVk1fc3RhcnQocEh3RGF0YSk7CisJCXJldHVybiBUUlVFOworCX0gZWxzZSB7CisJCWlmIChwVXJiKQorCQkJdXNiX2ZyZWVfdXJiKHBVcmIpOworCQlrZnJlZShwUmVnUXVldWUpOworCQlyZXR1cm4gRkFMU0U7CisJfQorfQorCisvLyBUUlVFICA6IHJlYWQgY29tbWFuZCBwcm9jZXNzIHN1Y2Nlc3NmdWxseQorLy8gRkFMU0UgOiByZWdpc3RlciBub3Qgc3VwcG9ydAorLy8gcFJlZ2lzdGVyVmFsdWUgOiBJdCBtdXN0IGJlIGEgcmVzaWRlbnQgYnVmZmVyIGR1ZSB0byBhc3luY2hyb25vdXMgcmVhZCByZWdpc3Rlci4KK3Vuc2lnbmVkIGNoYXIKK1diMzVSZWdfUmVhZFN5bmMoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgUmVnaXN0ZXJObywgICBQVUxPTkcgcFJlZ2lzdGVyVmFsdWUgKQoreworCVBXQjM1UkVHIHBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJUFVMT05HCXBsdG1wID0gcFJlZ2lzdGVyVmFsdWU7CisJaW50IHJldCA9IC0xOworCisJLy8gTW9kdWxlIHNodXRkb3duCisJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlKQorCQlyZXR1cm4gRkFMU0U7CisKKwkvLyBSZWFkIHRoZSByZWdpc3RlciBieSBzZW5kIHVzYiBtZXNzYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwV2IzNVJlZy0+U3luY0lvUGF1c2UgPSAxOworCisJLy8gMjAwNjA3MTcuNSBXYWl0IHVudGlsIEVQMFZNIHN0b3AKKwl3aGlsZSAocFdiMzVSZWctPkVQMHZtX3N0YXRlICE9IFZNX1NUT1ApCisJCU9TX1NMRUVQKDEwMDAwKTsKKworCXBXYjM1UmVnLT5FUDB2bV9zdGF0ZSA9IFZNX1JVTk5JTkc7CisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKCBwSHdEYXRhLT5XYlVzYi51ZGV2LAorCQkJICAgICAgIHVzYl9yY3ZjdHJscGlwZShwSHdEYXRhLT5XYlVzYi51ZGV2LCAwKSwKKwkJCSAgICAgICAweDAxLCBVU0JfVFlQRV9WRU5ET1J8VVNCX1JFQ0lQX0RFVklDRXxVU0JfRElSX0lOLAorCQkJICAgICAgIDB4MCwgUmVnaXN0ZXJObywgcGx0bXAsIDQsIEhaKjEwMCApOworCisJKnBSZWdpc3RlclZhbHVlID0gY3B1X3RvX2xlMzIoKnBsdG1wKTsKKworCXBXYjM1UmVnLT5FUDB2bV9zdGF0ZSA9IFZNX1NUT1A7CisKKwlXYjM1UmVnX1VwZGF0ZSggcEh3RGF0YSwgUmVnaXN0ZXJObywgKnBSZWdpc3RlclZhbHVlICk7CisJcFdiMzVSZWctPlN5bmNJb1BhdXNlID0gMDsKKworCVdiMzVSZWdfRVAwVk1fc3RhcnQoIHBId0RhdGEgKTsKKworCWlmIChyZXQgPCAwKSB7CisJCSNpZmRlZiBfUEVfUkVHX0RVTVBfCisJCVdCREVCVUcoKCJFUDAgUmVhZCByZWdpc3RlciB1c2IgbWVzc2FnZSBzZW5kaW5nIGVycm9yXG4iKSk7CisJCSNlbmRpZgorCisJCXBId0RhdGEtPlN1cnByaXNlUmVtb3ZlID0gMTsgLy8gMjAwNjA3MDQuMgorCQlyZXR1cm4gRkFMU0U7CisJfQorCisJcmV0dXJuIFRSVUU7Cit9CisKKy8vIFRSVUUgIDogcmVhZCBjb21tYW5kIHByb2Nlc3Mgc3VjY2Vzc2Z1bGx5CisvLyBGQUxTRSA6IHJlZ2lzdGVyIG5vdCBzdXBwb3J0CisvLyBwUmVnaXN0ZXJWYWx1ZSA6IEl0IG11c3QgYmUgYSByZXNpZGVudCBidWZmZXIgZHVlIHRvIGFzeW5jaHJvbm91cyByZWFkIHJlZ2lzdGVyLgordW5zaWduZWQgY2hhcgorV2IzNVJlZ19SZWFkKHBod19kYXRhX3QgcEh3RGF0YSwgdTE2IFJlZ2lzdGVyTm8sICBQVUxPTkcgcFJlZ2lzdGVyVmFsdWUgKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqIGRyOworCVBVUkIJCXBVcmI7CisJUFJFR19RVUVVRQlwUmVnUXVldWU7CisJdTE2CQlVcmJTaXplOworCisJLy8gTW9kdWxlIHNodXRkb3duCisJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlKQorCQlyZXR1cm4gRkFMU0U7CisKKwkvLyB1cGRhdGUgdGhlIHZhcmlhYmxlIGJ5IHNlbmQgVXJiIHRvIHJlYWQgcmVnaXN0ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJVXJiU2l6ZSA9IHNpemVvZihSRUdfUVVFVUUpICsgc2l6ZW9mKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QpOworCU9TX01FTU9SWV9BTExPQyggKHZvaWQqICopJnBSZWdRdWV1ZSwgVXJiU2l6ZSApOworCXBVcmIgPSB3Yl91c2JfYWxsb2NfdXJiKDApOworCWlmKCBwVXJiICYmIHBSZWdRdWV1ZSApCisJeworCQlwUmVnUXVldWUtPkRJUkVDVCA9IDA7Ly8gcmVhZCByZWdpc3RlcgorCQlwUmVnUXVldWUtPklOREVYID0gUmVnaXN0ZXJObzsKKwkJcFJlZ1F1ZXVlLT5wQnVmZmVyID0gcFJlZ2lzdGVyVmFsdWU7CisJCWRyID0gKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikoKFBVQ0hBUilwUmVnUXVldWUgKyBzaXplb2YoUkVHX1FVRVVFKSk7CisJCWRyLT5iUmVxdWVzdFR5cGUgPSBVU0JfVFlQRV9WRU5ET1J8VVNCX1JFQ0lQX0RFVklDRXxVU0JfRElSX0lOOworCQlkci0+YlJlcXVlc3QgPSAweDAxOyAvLyBVU0Igb3IgdmVuZG9yLWRlZmluZWQgcmVxdWVzdCBjb2RlLCBidXJzdCBtb2RlCisJCWRyLT53VmFsdWUgPSBjcHVfdG9fbGUxNigweDApOworCQlkci0+d0luZGV4ID0gY3B1X3RvX2xlMTYgKFJlZ2lzdGVyTm8pOworCQlkci0+d0xlbmd0aCA9IGNwdV90b19sZTE2ICg0KTsKKworCQkvLyBFbnRlciB0aGUgc2VuZGluZyBxdWV1ZQorCQlwUmVnUXVldWUtPk5leHQgPSBOVUxMOworCQlwUmVnUXVldWUtPnBVc2JSZXEgPSBkcjsKKwkJcFJlZ1F1ZXVlLT5wVXJiID0gcFVyYjsKKwkJT1NfU1BJTl9MT0NLX0FDUVVJUkVEICggJnBXYjM1UmVnLT5FUDBWTV9zcGluX2xvY2sgKTsKKwkJaWYoIHBXYjM1UmVnLT5wUmVnRmlyc3QgPT0gTlVMTCApCisJCQlwV2IzNVJlZy0+cFJlZ0ZpcnN0ID0gcFJlZ1F1ZXVlOworCQllbHNlCisJCQlwV2IzNVJlZy0+cFJlZ0xhc3QtPk5leHQgPSBwUmVnUXVldWU7CisJCXBXYjM1UmVnLT5wUmVnTGFzdCA9IHBSZWdRdWV1ZTsKKworCQlPU19TUElOX0xPQ0tfUkVMRUFTRUQoICZwV2IzNVJlZy0+RVAwVk1fc3Bpbl9sb2NrICk7CisKKwkJLy8gU3RhcnQgRVAwVk0KKwkJV2IzNVJlZ19FUDBWTV9zdGFydCggcEh3RGF0YSApOworCisJCXJldHVybiBUUlVFOworCX0gZWxzZSB7CisJCWlmIChwVXJiKQorCQkJdXNiX2ZyZWVfdXJiKCBwVXJiICk7CisJCWtmcmVlKHBSZWdRdWV1ZSk7CisJCXJldHVybiBGQUxTRTsKKwl9Cit9CisKKwordm9pZAorV2IzNVJlZ19FUDBWTV9zdGFydCggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJUFdCMzVSRUcgcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKworCWlmIChPU19BVE9NSUNfSU5DKCBwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVSZWctPlJlZ0ZpcmVDb3VudCkgPT0gMSkgeworCQlwV2IzNVJlZy0+RVAwdm1fc3RhdGUgPSBWTV9SVU5OSU5HOworCQlXYjM1UmVnX0VQMFZNKHBId0RhdGEpOworCX0gZWxzZQorCQlPU19BVE9NSUNfREVDKCBwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVSZWctPlJlZ0ZpcmVDb3VudCApOworfQorCit2b2lkCitXYjM1UmVnX0VQMFZNKHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwlQVVJCCQlwVXJiOworCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmRyOworCVBVTE9ORwkJcEJ1ZmZlcjsKKwlpbnQJCQlyZXQgPSAtMTsKKwlQUkVHX1FVRVVFCXBSZWdRdWV1ZTsKKworCisJaWYgKHBXYjM1UmVnLT5TeW5jSW9QYXVzZSkKKwkJZ290byBjbGVhbnVwOworCisJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlKQorCQlnb3RvIGNsZWFudXA7CisKKwkvLyBHZXQgdGhlIHJlZ2lzdGVyIGRhdGEgYW5kIHNlbmQgdG8gVVNCIHRocm91Z2ggSXJwCisJT1NfU1BJTl9MT0NLX0FDUVVJUkVEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCXBSZWdRdWV1ZSA9IHBXYjM1UmVnLT5wUmVnRmlyc3Q7CisJT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJaWYgKCFwUmVnUXVldWUpCisJCWdvdG8gY2xlYW51cDsKKworCS8vIEdldCBhbiBVcmIsIHNlbmQgaXQKKwlwVXJiID0gKFBVUkIpcFJlZ1F1ZXVlLT5wVXJiOworCisJZHIgPSBwUmVnUXVldWUtPnBVc2JSZXE7CisJcFVyYiA9IHBSZWdRdWV1ZS0+cFVyYjsKKwlwQnVmZmVyID0gcFJlZ1F1ZXVlLT5wQnVmZmVyOworCWlmIChwUmVnUXVldWUtPkRJUkVDVCA9PSAxKSAvLyBvdXRwdXQKKwkJcEJ1ZmZlciA9ICZwUmVnUXVldWUtPlZBTFVFOworCisJdXNiX2ZpbGxfY29udHJvbF91cmIoIHBVcmIsIHBId0RhdGEtPldiVXNiLnVkZXYsCisJCQkgICAgICBSRUdfRElSRUNUSU9OKHBId0RhdGEtPldiVXNiLnVkZXYscFJlZ1F1ZXVlKSwKKwkJCSAgICAgIChQVUNIQVIpZHIscEJ1ZmZlcixjcHVfdG9fbGUxNihkci0+d0xlbmd0aCksCisJCQkgICAgICBXYjM1UmVnX0VQMFZNX2NvbXBsZXRlLCAodm9pZCopcEh3RGF0YSk7CisKKwlwV2IzNVJlZy0+RVAwdm1fc3RhdGUgPSBWTV9SVU5OSU5HOworCisJcmV0ID0gd2JfdXNiX3N1Ym1pdF91cmIoIHBVcmIgKTsKKworCWlmIChyZXQgPCAwKSB7CisjaWZkZWYgX1BFX1JFR19EVU1QXworCQlXQkRFQlVHKCgiRVAwIElycCBzZW5kaW5nIGVycm9yXG4iKSk7CisjZW5kaWYKKwkJZ290byBjbGVhbnVwOworCX0KKworCXJldHVybjsKKworIGNsZWFudXA6CisJcFdiMzVSZWctPkVQMHZtX3N0YXRlID0gVk1fU1RPUDsKKwlPU19BVE9NSUNfREVDKCBwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVSZWctPlJlZ0ZpcmVDb3VudCApOworfQorCisKK3ZvaWQKK1diMzVSZWdfRVAwVk1fY29tcGxldGUoUFVSQiBwVXJiKQoreworCXBod19kYXRhX3QgIHBId0RhdGEgPSAocGh3X2RhdGFfdClwVXJiLT5jb250ZXh0OworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJUFJFR19RVUVVRQlwUmVnUXVldWU7CisKKworCS8vIFZhcmlhYmxlIHNldHRpbmcKKwlwV2IzNVJlZy0+RVAwdm1fc3RhdGUgPSBWTV9DT01QTEVURUQ7CisJcFdiMzVSZWctPkVQMFZNX3N0YXR1cyA9IHBVcmItPnN0YXR1czsKKworCWlmIChwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSkgeyAvLyBMZXQgV2JXbGFuSGFsdCB0byBoYW5kbGUgc3VycHJpc2UgcmVtb3ZlCisJCXBXYjM1UmVnLT5FUDB2bV9zdGF0ZSA9IFZNX1NUT1A7CisJCU9TX0FUT01JQ19ERUMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVJlZy0+UmVnRmlyZUNvdW50ICk7CisJfSBlbHNlIHsKKwkJLy8gQ29tcGxldGUgdG8gc2VuZCwgcmVtb3ZlIHRoZSBVUkIgZnJvbSB0aGUgZmlyc3QKKwkJT1NfU1BJTl9MT0NLX0FDUVVJUkVEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCQlwUmVnUXVldWUgPSBwV2IzNVJlZy0+cFJlZ0ZpcnN0OworCQlpZiAocFJlZ1F1ZXVlID09IHBXYjM1UmVnLT5wUmVnTGFzdCkKKwkJCXBXYjM1UmVnLT5wUmVnTGFzdCA9IE5VTEw7CisJCXBXYjM1UmVnLT5wUmVnRmlyc3QgPSBwV2IzNVJlZy0+cFJlZ0ZpcnN0LT5OZXh0OworCQlPU19TUElOX0xPQ0tfUkVMRUFTRUQoICZwV2IzNVJlZy0+RVAwVk1fc3Bpbl9sb2NrICk7CisKKwkJaWYgKHBXYjM1UmVnLT5FUDBWTV9zdGF0dXMpIHsKKyNpZmRlZiBfUEVfUkVHX0RVTVBfCisJCQlXQkRFQlVHKCgiRVAwIElvQ29tcGxldGVSb3V0aW5lIHJldHVybiBlcnJvclxuIikpOworCQkJRGVidWdVc2JkU3RhdHVzSW5mb3JtYXRpb24oIHBXYjM1UmVnLT5FUDBWTV9zdGF0dXMgKTsKKyNlbmRpZgorCQkJcFdiMzVSZWctPkVQMHZtX3N0YXRlID0gVk1fU1RPUDsKKwkJCXBId0RhdGEtPlN1cnByaXNlUmVtb3ZlID0gMTsKKwkJfSBlbHNlIHsKKwkJCS8vIFN1Y2Nlc3MuIFVwZGF0ZSB0aGUgcmVzdWx0CisKKwkJCS8vIFN0YXJ0IHRoZSBuZXh0IHNlbmQKKwkJCVdiMzVSZWdfRVAwVk0ocEh3RGF0YSk7CisJCX0KKworICAgCQlrZnJlZShwUmVnUXVldWUpOworCX0KKworCXVzYl9mcmVlX3VyYihwVXJiKTsKK30KKworCit2b2lkCitXYjM1UmVnX2Rlc3Ryb3kocGh3X2RhdGFfdCBwSHdEYXRhKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJUFVSQgkJcFVyYjsKKwlQUkVHX1FVRVVFCXBSZWdRdWV1ZTsKKworCisJVXh4X3Bvd2VyX29mZl9wcm9jZWR1cmUocEh3RGF0YSk7CisKKwkvLyBXYWl0IGZvciBSZWcgb3BlcmF0aW9uIGNvbXBsZXRlZAorCWRvIHsKKwkJT1NfU0xFRVAoMTAwMDApOyAvLyBEZWxheSBmb3Igd2FpdGluZyBmdW5jdGlvbiBlbnRlciA5NDA2MjMuMS5hCisJfSB3aGlsZSAocFdiMzVSZWctPkVQMHZtX3N0YXRlICE9IFZNX1NUT1ApOworCU9TX1NMRUVQKDEwMDAwKTsgIC8vIERlbGF5IGZvciB3YWl0aW5nIGZ1bmN0aW9uIGVudGVyIDk0MDYyMy4xLmIKKworCS8vIFJlbGVhc2UgYWxsIHRoZSBkYXRhIGluIFJlZ1F1ZXVlCisJT1NfU1BJTl9MT0NLX0FDUVVJUkVEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCXBSZWdRdWV1ZSA9IHBXYjM1UmVnLT5wUmVnRmlyc3Q7CisJd2hpbGUgKHBSZWdRdWV1ZSkgeworCQlpZiAocFJlZ1F1ZXVlID09IHBXYjM1UmVnLT5wUmVnTGFzdCkKKwkJCXBXYjM1UmVnLT5wUmVnTGFzdCA9IE5VTEw7CisJCXBXYjM1UmVnLT5wUmVnRmlyc3QgPSBwV2IzNVJlZy0+cFJlZ0ZpcnN0LT5OZXh0OworCisJCXBVcmIgPSBwUmVnUXVldWUtPnBVcmI7CisJCU9TX1NQSU5fTE9DS19SRUxFQVNFRCggJnBXYjM1UmVnLT5FUDBWTV9zcGluX2xvY2sgKTsKKwkJaWYgKHBVcmIpIHsKKwkJCXVzYl9mcmVlX3VyYihwVXJiKTsKKwkJCWtmcmVlKHBSZWdRdWV1ZSk7CisJCX0gZWxzZSB7CisJCQkjaWZkZWYgX1BFX1JFR19EVU1QXworCQkJV0JERUJVRygoIkVQMCBxdWV1ZSByZWxlYXNlIGVycm9yXG4iKSk7CisJCQkjZW5kaWYKKwkJfQorCQlPU19TUElOX0xPQ0tfQUNRVUlSRUQoICZwV2IzNVJlZy0+RVAwVk1fc3Bpbl9sb2NrICk7CisKKwkJcFJlZ1F1ZXVlID0gcFdiMzVSZWctPnBSZWdGaXJzdDsKKwl9CisJT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJLy8gRnJlZSByZXNvdXJjZQorCU9TX1NQSU5fTE9DS19GUkVFKCAgJnBXYjM1UmVnLT5FUDBWTV9zcGluX2xvY2sgKTsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRoZSBmdW5jdGlvbiBjYW4gYmUgcnVuIGluIHBhc3NpdmUtbGV2ZWwgb25seS4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit1bnNpZ25lZCBjaGFyIFdiMzVSZWdfaW5pdGlhbChwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVSRUcgcFdiMzVSZWc9JnBId0RhdGEtPldiMzVSZWc7CisJdTMyIGx0bXA7CisJdTMyIFNvZnR3YXJlU2V0LCBWQ09fdHJpbSwgVHhWZ2EsIFJlZ2lvbl9TY2FuSW50ZXJ2YWw7CisKKwkvLyBTcGluIGxvY2sgaXMgYWNxdWlyZWQgZm9yIHJlYWQgYW5kIHdyaXRlIElSUCBjb21tYW5kCisJT1NfU1BJTl9MT0NLX0FMTE9DQVRFKCAmcFdiMzVSZWctPkVQMFZNX3NwaW5fbG9jayApOworCisJLy8gR2V0dGluZyBSRiBtb2R1bGUgdHlwZSBmcm9tIEVFUFJPTSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2I0LCAweDA4MGQwMDAwICk7IC8vIFN0YXJ0IEVFUFJPTSBhY2Nlc3MgKyBSZWFkICsgYWRkcmVzcygweDBkKQorCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MDNiNCwgJmx0bXAgKTsKKworCS8vVXBkYXRlIFJGIG1vZHVsZSB0eXBlIGFuZCBkZXRlcm1pbmUgdGhlIFBIWSB0eXBlIGJ5IGluZiBvciBFRVBST00KKwlwV2IzNVJlZy0+RUVQUk9NUGh5VHlwZSA9ICh1OCkoIGx0bXAgJiAweGZmICk7CisJLy8gMCBWIE1BWDI4MjUsIDEgViBNQVgyODI3LCAyIFYgTUFYMjgyOCwgMyBWIE1BWDI4MjkKKwkvLyAxNlYgQUwyMjMwLCAxNyAtIEFMNzIzMCwgMTggLSBBTDIyMzBTCisJLy8gMzIgUmVzZXJ2ZWQKKwkvLyAzMyAtIFc4OVJGMjQyKFR4VkdBIDB+MTkpLCAzNCAtIFc4OVJGMjQyKFR4VkdBIDB+MzQpCisJaWYgKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlICE9IFJGX0RFQ0lERV9CWV9JTkYpIHsKKwkJaWYoIChwV2IzNVJlZy0+RUVQUk9NUGh5VHlwZSA9PSBSRl9NQVhJTV8yODI1KQl8fAorCQkJKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlID09IFJGX01BWElNXzI4MjcpCXx8CisJCQkocFdiMzVSZWctPkVFUFJPTVBoeVR5cGUgPT0gUkZfTUFYSU1fMjgyOCkJfHwKKwkJCShwV2IzNVJlZy0+RUVQUk9NUGh5VHlwZSA9PSBSRl9NQVhJTV8yODI5KQl8fAorCQkJKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlID09IFJGX01BWElNX1YxKQl8fAorCQkJKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlID09IFJGX0FJUk9IQV8yMjMwKQl8fAorCQkJKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlID09IFJGX0FJUk9IQV8yMjMwUykgICAgfHwKKwkJCShwV2IzNVJlZy0+RUVQUk9NUGh5VHlwZSA9PSBSRl9BSVJPSEFfNzIzMCkJfHwKKwkJCShwV2IzNVJlZy0+RUVQUk9NUGh5VHlwZSA9PSBSRl9XQl8yNDIpCQl8fAorCQkJKHBXYjM1UmVnLT5FRVBST01QaHlUeXBlID09IFJGX1dCXzI0Ml8xKSkKKwkJCXBId0RhdGEtPnBoeV90eXBlID0gcFdiMzVSZWctPkVFUFJPTVBoeVR5cGU7CisJfQorCisJLy8gUG93ZXIgT24gcHJvY2VkdXJlIHJ1bm5pbmcuIFRoZSByZWxhdGl2ZSBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgYWNjb3JkaW5nIHRvIHBoeV90eXBlCisJVXh4X3Bvd2VyX29uX3Byb2NlZHVyZSggcEh3RGF0YSApOworCisJLy8gUmVhZGluZyBNQUMgYWRkcmVzcworCVV4eF9SZWFkRXRoZXJuZXRBZGRyZXNzKCBwSHdEYXRhICk7CisKKwkvLyBSZWFkIFZDTyB0cmltIGZvciBSRiBwYXJhbWV0ZXIKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2I0LCAweDA4MjAwMDAwICk7CisJV2IzNVJlZ19SZWFkU3luYyggcEh3RGF0YSwgMHgwM2I0LCAmVkNPX3RyaW0gKTsKKworCS8vIFJlYWQgQW50ZW5uYSBPbi9PZmYgb2Ygc29mdHdhcmUgZmxhZworCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjQsIDB4MDgyMTAwMDAgKTsKKwlXYjM1UmVnX1JlYWRTeW5jKCBwSHdEYXRhLCAweDAzYjQsICZTb2Z0d2FyZVNldCApOworCisJLy8gUmVhZCBUWFZHQQorCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjQsIDB4MDgxMDAwMDAgKTsKKwlXYjM1UmVnX1JlYWRTeW5jKCBwSHdEYXRhLCAweDAzYjQsICZUeFZnYSApOworCisJLy8gR2V0IFNjYW4gaW50ZXJ2YWwgc2V0dGluZyBmcm9tIEVFUFJPTSBvZmZzZXQgMHgxYworCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjQsIDB4MDgxZDAwMDAgKTsKKwlXYjM1UmVnX1JlYWRTeW5jKCBwSHdEYXRhLCAweDAzYjQsICZSZWdpb25fU2NhbkludGVydmFsICk7CisKKwkvLyBVcGRhdGUgRXRoZXJuZXQgYWRkcmVzcworCW1lbWNweSggcEh3RGF0YS0+Q3VycmVudE1hY0FkZHJlc3MsIHBId0RhdGEtPlBlcm1hbmVudE1hY0FkZHJlc3MsIEVUSF9MRU5HVEhfT0ZfQUREUkVTUyApOworCisJLy8gVXBkYXRlIHNvZnR3YXJlIHZhcmlhYmxlCisJcEh3RGF0YS0+U29mdHdhcmVTZXQgPSAodTE2KShTb2Z0d2FyZVNldCAmIDB4ZmZmZik7CisJVHhWZ2EgJj0gMHgwMDAwMDBmZjsKKwlwSHdEYXRhLT5Qb3dlckluZGV4RnJvbUVFUFJPTSA9ICh1OClUeFZnYTsKKwlwSHdEYXRhLT5WQ09fdHJpbSA9ICh1OClWQ09fdHJpbSAmIDB4ZmY7CisJaWYgKHBId0RhdGEtPlZDT190cmltID09IDB4ZmYpCisJCXBId0RhdGEtPlZDT190cmltID0gMHgyODsKKworCXBXYjM1UmVnLT5FRVBST01SZWdpb24gPSAodTgpKFJlZ2lvbl9TY2FuSW50ZXJ2YWw+PjgpOyAvLyAyMDA2MDcyMAorCWlmKCBwV2IzNVJlZy0+RUVQUk9NUmVnaW9uPDEgfHwgcFdiMzVSZWctPkVFUFJPTVJlZ2lvbj42ICkKKwkJcFdiMzVSZWctPkVFUFJPTVJlZ2lvbiA9IFJFR0lPTl9BVVRPOworCisJLy9Gb3IgR2V0IFR4IFZHQSBmcm9tIEVFUFJPTSAyMDA2MDMxNS41IG1vdmUgaGVyZQorCUdldFR4VmdhRnJvbUVFUFJPTSggcEh3RGF0YSApOworCisJLy8gU2V0IFNjYW4gSW50ZXJ2YWwKKwlwSHdEYXRhLT5TY2FuX0ludGVydmFsID0gKHU4KShSZWdpb25fU2NhbkludGVydmFsICYgMHhmZikgKiAxMDsKKwlpZiAoKHBId0RhdGEtPlNjYW5fSW50ZXJ2YWwgPT0gMjU1MCkgfHwgKHBId0RhdGEtPlNjYW5fSW50ZXJ2YWwgPCAxMCkpIC8vIElzIGRlZmF1bHQgc2V0dGluZyAweGZmICogMTAKKwkJcEh3RGF0YS0+U2Nhbl9JbnRlcnZhbCA9IFNDQU5fTUFYX0NITkxfVElNRTsKKworCS8vIEluaXRpYWwgcmVnaXN0ZXIKKwlSRlN5bnRoZXNpemVyX2luaXRpYWwocEh3RGF0YSk7CisKKwlCQlByb2Nlc3Nvcl9pbml0aWFsKHBId0RhdGEpOyAvLyBBc3luYyB3cml0ZSwgbXVzdCB3YWl0IHVudGlsIGNvbXBsZXRlCisKKwlXYjM1UmVnX3BoeV9jYWxpYnJhdGlvbihwSHdEYXRhKTsKKworCU14eF9pbml0aWFsKHBId0RhdGEpOworCUR4eF9pbml0aWFsKHBId0RhdGEpOworCisJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlKQorCQlyZXR1cm4gRkFMU0U7CisJZWxzZQorCQlyZXR1cm4gVFJVRTsgLy8gSW5pdGlhbCBmYWlsCit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBDYXJkQ29tcHV0ZUNyYyAtLQorLy8KKy8vICBEZXNjcmlwdGlvbjoKKy8vICAgIFJ1bnMgdGhlIEFVVE9ESU4gSUkgQ1JDIGFsZ29yaXRobSBvbiBidWZmZXIgQnVmZmVyIG9mIGxlbmd0aCwgTGVuZ3RoLgorLy8KKy8vICBBcmd1bWVudHM6CisvLyAgICBCdWZmZXIgLSB0aGUgaW5wdXQgYnVmZmVyCisvLyAgICBMZW5ndGggLSB0aGUgbGVuZ3RoIG9mIEJ1ZmZlcgorLy8KKy8vICBSZXR1cm4gVmFsdWU6CisvLyAgICBUaGUgMzItYml0IENSQyB2YWx1ZS4KKy8vCisvLyAgTm90ZToKKy8vICAgIFRoaXMgaXMgYWRhcHRlZCBmcm9tIHRoZSBjb21tZW50cyBpbiB0aGUgYXNzZW1ibHkgbGFuZ3VhZ2UKKy8vICAgIHZlcnNpb24gaW4gX0dFTlJFUS5BU00gb2YgdGhlIERXQiBORTEwMDAvMjAwMCBkcml2ZXIuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3UzMgorQ2FyZENvbXB1dGVDcmMoUFVDSEFSIEJ1ZmZlciwgdTMyIExlbmd0aCkKK3sKKyAgICB1MzIgQ3JjLCBDYXJyeTsKKyAgICB1MzIgIGksIGo7CisgICAgdTggQ3VyQnl0ZTsKKworICAgIENyYyA9IDB4ZmZmZmZmZmY7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTGVuZ3RoOyBpKyspIHsKKworICAgICAgICBDdXJCeXRlID0gQnVmZmVyW2ldOworCisgICAgICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKworICAgICAgICAgICAgQ2FycnkgICAgID0gKChDcmMgJiAweDgwMDAwMDAwKSA/IDEgOiAwKSBeIChDdXJCeXRlICYgMHgwMSk7CisgICAgICAgICAgICBDcmMgICAgIDw8PSAxOworICAgICAgICAgICAgQ3VyQnl0ZSA+Pj0gMTsKKworICAgICAgICAgICAgaWYgKENhcnJ5KSB7CisgICAgICAgICAgICAgICAgQ3JjID0oQ3JjIF4gMHgwNGMxMWRiNikgfCBDYXJyeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBDcmM7Cit9CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEJpdFJldmVyc2UgLS0KKy8vICAgUmV2ZXJzZSB0aGUgYml0cyBpbiB0aGUgaW5wdXQgYXJndW1lbnQsIGR3RGF0YSwgd2hpY2ggaXMKKy8vICAgcmVnYXJkZWQgYXMgYSBzdHJpbmcgb2YgYml0cyB3aXRoIHRoZSBsZW5ndGgsIERhdGFMZW5ndGguCisvLworLy8gQXJndW1lbnRzOgorLy8gICBkd0RhdGEgICAgIDoKKy8vICAgRGF0YUxlbmd0aCA6CisvLworLy8gUmV0dXJuOgorLy8gICBUaGUgY29udmVydGVkIHZhbHVlLgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3UzMiBCaXRSZXZlcnNlKCB1MzIgZHdEYXRhLCB1MzIgRGF0YUxlbmd0aCkKK3sKKwl1MzIgICBIYWxmTGVuZ3RoLCBpLCBqOworCXUzMiAgIEJpdEEsIEJpdEI7CisKKwlpZiAoIERhdGFMZW5ndGggPD0gMCkgICAgICAgcmV0dXJuIDA7ICAgLy8gTm8gY29udmVyc2lvbiBpcyBkb25lLgorCWR3RGF0YSA9IGR3RGF0YSAmICgweGZmZmZmZmZmID4+ICgzMiAtIERhdGFMZW5ndGgpKTsKKworCUhhbGZMZW5ndGggPSBEYXRhTGVuZ3RoIC8gMjsKKwlmb3IgKCBpID0gMCwgaiA9IERhdGFMZW5ndGgtMSA7IGkgPCBIYWxmTGVuZ3RoOyBpKyssIGotLSkKKwl7CisJCUJpdEEgPSBHZXRCaXQoIGR3RGF0YSwgaSk7CisJCUJpdEIgPSBHZXRCaXQoIGR3RGF0YSwgaik7CisJCWlmIChCaXRBICYmICFCaXRCKSB7CisJCQlkd0RhdGEgPSBDbGVhckJpdCggZHdEYXRhLCBpKTsKKwkJCWR3RGF0YSA9IFNldEJpdCggZHdEYXRhLCBqKTsKKwkJfSBlbHNlIGlmICghQml0QSAmJiBCaXRCKSB7CisJCQlkd0RhdGEgPSBTZXRCaXQoIGR3RGF0YSwgaSk7CisJCQlkd0RhdGEgPSBDbGVhckJpdCggZHdEYXRhLCBqKTsKKwkJfSBlbHNlCisJCXsKKwkJCS8vIERvIG5vdGhpbmcgc2luY2UgdGhlc2UgdHdvIGJpdHMgYXJlIG9mIHRoZSBzYXZlIHZhbHVlcy4KKwkJfQorCX0KKworCXJldHVybiBkd0RhdGE7Cit9CisKK3ZvaWQgV2IzNVJlZ19waHlfY2FsaWJyYXRpb24oICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCXUzMiBCQjNjLCBCQjU0OworCisJaWYgKChwSHdEYXRhLT5waHlfdHlwZSA9PSBSRl9XQl8yNDIpIHx8CisJCShwSHdEYXRhLT5waHlfdHlwZSA9PSBSRl9XQl8yNDJfMSkpIHsKKwkJcGh5X2NhbGlicmF0aW9uX3dpbmJvbmQgKCBwSHdEYXRhLCAyNDEyICk7IC8vIFN5bmMgb3BlcmF0aW9uCisJCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MTAzYywgJkJCM2MgKTsKKwkJV2IzNVJlZ19SZWFkU3luYyggcEh3RGF0YSwgMHgxMDU0LCAmQkI1NCApOworCisJCXBId0RhdGEtPkJCM2NfY2FsID0gQkIzYzsKKwkJcEh3RGF0YS0+QkI1NF9jYWwgPSBCQjU0OworCisJCVJGU3ludGhlc2l6ZXJfaW5pdGlhbChwSHdEYXRhKTsKKwkJQkJQcm9jZXNzb3JfaW5pdGlhbChwSHdEYXRhKTsgLy8gQXN5bmMgb3BlcmF0aW9uCisKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MTAzYywgQkIzYyApOworCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgxMDU0LCBCQjU0ICk7CisJfQorfQorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyZWdfZi5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJlZ19mLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlMjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyZWdfZi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBJbnRlcmZhY2UgZnVuY3Rpb24gZGVjbGFyZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3Vuc2lnbmVkIGNoYXIgV2IzNVJlZ19pbml0aWFsKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIFV4eF9wb3dlcl9vbl9wcm9jZWR1cmUoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgVXh4X3Bvd2VyX29mZl9wcm9jZWR1cmUoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgVXh4X1JlYWRFdGhlcm5ldEFkZHJlc3MoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgRHh4X2luaXRpYWwoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgTXh4X2luaXRpYWwoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgUkZTeW50aGVzaXplcl9pbml0aWFsKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisvL3ZvaWQgUkZTeW50aGVzaXplcl9Td2l0Y2hpbmdDaGFubmVsKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgczggQ2hhbm5lbCApOwordm9pZCBSRlN5bnRoZXNpemVyX1N3aXRjaGluZ0NoYW5uZWwoICBwaHdfZGF0YV90IHBId0RhdGEsICBDaGFuSW5mbyBDaGFubmVsICk7Cit2b2lkIEJCUHJvY2Vzc29yX2luaXRpYWwoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgQkJQcm9jZXNzb3JfUmF0ZUNoYW5naW5nKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggcmF0ZSApOyAvLyAyMDA2MDYxMy4xCisvL3ZvaWQgUkZfUmF0ZUNoYW5naW5nKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggcmF0ZSApOyAvLyAyMDA2MDYyNi41LmMgQWRkCit1OCBSRlN5bnRoZXNpemVyX1NldFBvd2VySW5kZXgoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCBQb3dlckluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyOF8yNFBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyOF81MFBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyN18yNFBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyN181MFBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyNVBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit1OCBSRlN5bnRoZXNpemVyX1NldEFpcm9oYTIyMzBQb3dlciggIHBod19kYXRhX3QsICB1OCBpbmRleCApOwordTggUkZTeW50aGVzaXplcl9TZXRBaXJvaGE3MjMwUG93ZXIoICBwaHdfZGF0YV90LCAgdTggaW5kZXggKTsKK3U4IFJGU3ludGhlc2l6ZXJfU2V0V2luYm9uZDI0MlBvd2VyKCAgcGh3X2RhdGFfdCwgIHU4IGluZGV4ICk7Cit2b2lkIEdldFR4VmdhRnJvbUVFUFJPTSggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZCBFRVBST01UeFZnYUFkanVzdCggIHBod19kYXRhX3QgcEh3RGF0YSApOyAvLyAyMDA2MDYxOS41IEFkZAorCisjZGVmaW5lIFJGV3JpdGVDb250cm9sRGF0YSggX0EsIF9WICkgV2IzNVJlZ19Xcml0ZSggX0EsIDB4MDg2NCwgX1YgKQorCit2b2lkIFdiMzVSZWdfZGVzdHJveSggIHBod19kYXRhX3QgcEh3RGF0YSApOworCit1bnNpZ25lZCBjaGFyIFdiMzVSZWdfUmVhZCggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUxNiBSZWdpc3Rlck5vLCAgIFBVTE9ORyBwUmVnaXN0ZXJWYWx1ZSApOwordW5zaWduZWQgY2hhciBXYjM1UmVnX1JlYWRTeW5jKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IFJlZ2lzdGVyTm8sICAgUFVMT05HIHBSZWdpc3RlclZhbHVlICk7Cit1bnNpZ25lZCBjaGFyIFdiMzVSZWdfV3JpdGUoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgUmVnaXN0ZXJObywgIHUzMiBSZWdpc3RlclZhbHVlICk7Cit1bnNpZ25lZCBjaGFyIFdiMzVSZWdfV3JpdGVTeW5jKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IFJlZ2lzdGVyTm8sICB1MzIgUmVnaXN0ZXJWYWx1ZSApOwordW5zaWduZWQgY2hhciBXYjM1UmVnX1dyaXRlV2l0aENhbGxiYWNrVmFsdWUoICBwaHdfZGF0YV90IHBId0RhdGEsCisJCQkJCQkJCSB1MTYgUmVnaXN0ZXJObywKKwkJCQkJCQkJIHUzMiBSZWdpc3RlclZhbHVlLAorCQkJCQkJCQkgUENIQVIgcFZhbHVlLAorCQkJCQkJCQkgczgJTGVuKTsKK3Vuc2lnbmVkIGNoYXIgV2IzNVJlZ19CdXJzdFdyaXRlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IFJlZ2lzdGVyTm8sICBQVUxPTkcgcFJlZ2lzdGVyRGF0YSwgIHU4IE51bWJlck9mRGF0YSwgIHU4IEZsYWcgKTsKKwordm9pZCBXYjM1UmVnX0VQMFZNKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIFdiMzVSZWdfRVAwVk1fc3RhcnQoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgV2IzNVJlZ19FUDBWTV9jb21wbGV0ZSggIFBVUkIgcFVyYiApOworCit1MzIgQml0UmV2ZXJzZSggdTMyIGR3RGF0YSwgdTMyIERhdGFMZW5ndGgpOworCit2b2lkIENhcmRHZXRNdWx0aWNhc3RCaXQoICAgdTggQWRkcmVzc1tNQUNfQUREUl9MRU5HVEhdLCAgdTggKkJ5dGUsICB1OCAqVmFsdWUgKTsKK3UzMiBDYXJkQ29tcHV0ZUNyYyggIFBVQ0hBUiBCdWZmZXIsICB1MzIgTGVuZ3RoICk7CisKK3ZvaWQgV2IzNVJlZ19waHlfY2FsaWJyYXRpb24oICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgV2IzNVJlZ19VcGRhdGUoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgUmVnaXN0ZXJObywgIHUzMiBSZWdpc3RlclZhbHVlICk7Cit1bnNpZ25lZCBjaGFyIGFkanVzdF9UWFZHQV9mb3JfaXFfbWFnKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJlZ19zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cmVnX3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzU5NWIxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJlZ19zLmgKQEAgLTAsMCArMSwxNzAgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKgorCQkJCUhBTCBzZXR0aW5nIGZ1bmN0aW9uCisKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQl8VXh4fCAJfER4eHwJfE14eHwJfEJCfAl8UkZ8CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCXwJCQkJCXwKKwkJV2IzNVJlZ19SZWFkCQlXYjM1UmVnX1dyaXRlCisKKwkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJCVdiVXNiX0NhbGxVU0JEQVN5bmMJCQkJCXN1cHBsaWVkIEJ5IFdiVXNiIG1vZHVsZQorKi8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyNkZWZpbmUgICAgIEdldEJpdCggZHdEYXRhLCBpKSAgICAgICggZHdEYXRhICYgKDB4MDAwMDAwMDEgPDwgaSkpCisjZGVmaW5lICAgICBTZXRCaXQoIGR3RGF0YSwgaSkgICAgICAoIGR3RGF0YSB8ICgweDAwMDAwMDAxIDw8IGkpKQorI2RlZmluZSAgICAgQ2xlYXJCaXQoIGR3RGF0YSwgaSkgICAgKCBkd0RhdGEgJiB+KDB4MDAwMDAwMDEgPDwgaSkpCisKKyNkZWZpbmUJCUlHTk9SRV9JTkNSRU1FTlQJMAorI2RlZmluZQkJQVVUT19JTkNSRU1FTlQJCTAKKyNkZWZpbmUJCU5PX0lOQ1JFTUVOVAkJMQorI2RlZmluZSBSRUdfRElSRUNUSU9OKF94LF95KSAgICgoX3kpLT5ESVJFQ1QgPT0wID8gdXNiX3JjdmN0cmxwaXBlKF94LDApIDogdXNiX3NuZGN0cmxwaXBlKF94LDApKQorI2RlZmluZSBSRUdfQlVGX1NJWkUoX3gpICAgICAgICgoX3gpLT5iUmVxdWVzdD09IDB4MDQgPyBjcHVfdG9fbGUxNigoX3gpLT53TGVuZ3RoKSA6IDQpCisKKy8vIDIwMDYwNjEzLjIgQWRkIHRoZSBmb2xsb3cgZGVmaW5pdGlvbgorI2RlZmluZSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExQgkJMHgwMDMzNDQ3YworI2RlZmluZSBCQjRDX0RFRkFVTFRfQUwyMjMwXzExQgkJMHgwQTAwRkVGRgorI2RlZmluZSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExRwkJMHgwMDMzMkMxQgorI2RlZmluZSBCQjRDX0RFRkFVTFRfQUwyMjMwXzExRwkJMHgwQTAwRkVGRgorCisKKyNkZWZpbmUgQkI0OF9ERUZBVUxUX1dCMjQyXzExQgkJMHgwMDI5MjMxNQkvL2JhY2tvZmYgIDJkQgorI2RlZmluZSBCQjRDX0RFRkFVTFRfV0IyNDJfMTFCCQkweDA4MDBGRUZGCS8vYmFja29mZiAgMmRCCisvLyNkZWZpbmUgQkI0OF9ERUZBVUxUX1dCMjQyXzExQgkJMHgwMDIwMUIxMQkvL2JhY2tvZmYgIDRkQgorLy8jZGVmaW5lIEJCNENfREVGQVVMVF9XQjI0Ml8xMUIJCTB4MDYwMEZGMDAJLy9iYWNrb2ZmICA0ZEIKKyNkZWZpbmUgQkI0OF9ERUZBVUxUX1dCMjQyXzExRwkJMHgwMDQ1M0IyNAorI2RlZmluZSBCQjRDX0RFRkFVTFRfV0IyNDJfMTFHCQkweDBFMDBGRUZGCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEZWZhdWx0IHNldHRpbmcgZm9yIE14eAorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgREVGQVVMVF9DV01JTgkJCQkJMzEJCS8vKE0yQykgQ1dtaW4uIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC0zMS4KKyNkZWZpbmUgREVGQVVMVF9DV01BWAkJCQkJMTAyMwkvLyhNMkMpIENXbWF4LiBJdHMgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIDAtMTAyMy4KKyNkZWZpbmUgREVGQVVMVF9BSUQJCQkJCQkxCQkvLyhNMzQpIEFJRC4gSXRzIHZhbHVlIGlzIGluIHRoZSByYW5nZSAxLTIwMDcuCisKKyNpZmRlZiBfVVNFX0ZBTExCQUNLX1JBVEVfCisjZGVmaW5lIERFRkFVTFRfUkFURV9SRVRSWV9MSU1JVAkJMgkJLy8oTTM4KSBhcyBuYW1lZAorI2Vsc2UKKyNkZWZpbmUgREVGQVVMVF9SQVRFX1JFVFJZX0xJTUlUCQk3CQkvLyhNMzgpIGFzIG5hbWVkCisjZW5kaWYKKworI2RlZmluZSBERUZBVUxUX0xPTkdfUkVUUllfTElNSVQJCTcJCS8vKE0zOCkgTG9uZ1JldHJ5TGltaXQuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC0xNS4KKyNkZWZpbmUgREVGQVVMVF9TSE9SVF9SRVRSWV9MSU1JVAkJNwkJLy8oTTM4KSBTaG9ydFJldHJ5TGltaXQuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC0xNS4KKyNkZWZpbmUgREVGQVVMVF9QSUZTVAkJCQkJMjUJCS8vKE0zQykgUElGUyBUaW1lLiBJdHMgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIDAtNjU1MzUuCisjZGVmaW5lIERFRkFVTFRfRUlGU1QJCQkJCTM1NAkJLy8oTTNDKSBFSUZTIFRpbWUuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC0xMDQ4NTc1LgorI2RlZmluZSBERUZBVUxUX0RJRlNUCQkJCQk0NQkJLy8oTTNDKSBESUZTIFRpbWUuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC02NTUzNS4KKyNkZWZpbmUgREVGQVVMVF9TSUZTVAkJCQkJNQkJLy8oTTNDKSBTSUZTIFRpbWUuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC02NTUzNS4KKyNkZWZpbmUgREVGQVVMVF9PU0lGU1QJCQkJCTEwCQkvLyhNM0MpIE9yaWdpbmFsIFNJRlMgVGltZS4gSXRzIHZhbHVlIGlzIGluIHRoZSByYW5nZSAwLTE1LgorI2RlZmluZSBERUZBVUxUX0FUSU1XRAkJCQkJMAkJLy8oTTQwKSBBVElNIFdpbmRvdy4gSXRzIHZhbHVlIGlzIGluIHRoZSByYW5nZSAwLTY1NTM1LgorI2RlZmluZSBERUZBVUxUX1NMT1RfVElNRQkJCQkyMAkJLy8oTTQwKSAoJCkgU2xvdFRpbWUuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC0yNTUuCisjZGVmaW5lIERFRkFVTFRfTUFYX1RYX01TRFVfTElGRV9USU1FCTUxMgkvLyhNNDQpIE1heFR4TVNEVUxpZmVUaW1lLiBJdHMgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIDAtNDI5NDk2NzI5NS4KKyNkZWZpbmUgREVGQVVMVF9CRUFDT05fSU5URVJWQUwJCQk1MDAJCS8vKE00OCkgQmVhY29uIEludGVydmFsLiBJdHMgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIDAtNjU1MzUuCisjZGVmaW5lIERFRkFVTFRfUFJPQkVfREVMQVlfVElNRQkJMjAwCQkvLyhNNDgpIFByb2JlIERlbGF5IFRpbWUuIEl0cyB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgMC02NTUzNS4KKyNkZWZpbmUgREVGQVVMVF9QUk9UT0NPTF9WRVJTSU9OCQkwCQkvLyhNNEMpCisjZGVmaW5lIERFRkFVTFRfTUFDX1BPV0VSX1NUQVRFCQkJMgkJLy8oTTRDKSAyOiBNQUMgYXQgcG93ZXIgYWN0aXZlCisjZGVmaW5lIERFRkFVTFRfRFRJTV9BTEVSVF9USU1FCQkJMAorCisKK3R5cGVkZWYgc3RydWN0IF9SRUdfUVVFVUUKK3sKKyAgICBzdHJ1Y3QgIHVyYiAqcFVyYjsKKwl2b2lkKglwVXNiUmVxOworCXZvaWQqCU5leHQ7CisJdW5pb24KKwl7CisJCXUzMglWQUxVRTsKKwkJUFVMT05HCXBCdWZmZXI7CisJfTsKKwl1OAlSRVNFUlZFRFs0XTsvLyBzcGFjZSByZXNlcnZlZCBmb3IgY29tbXVuaWNhdGlvbgorCisgICAgdTE2CUlOREVYOyAvLyBGb3Igc3RvcmluZyB0aGUgcmVnaXN0ZXIgaW5kZXgKKyAgICB1OAlSRVNFUlZFRF9WQUxJRDsJLy9JbmRpY2F0ZSB3aGV0aGVyIHRoZSBSRVNFUlZFRCBzcGFjZSBpcyB2YWxpZCBhdCB0aGlzIGNvbW1hbmQuCisJdTgJRElSRUNUOyAvLyAwOkluICAgMTpPdXQKKworfSBSRUdfUVVFVUUsICpQUkVHX1FVRVVFOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSW50ZXJuYWwgdmFyaWFibGUgZm9yIG1vZHVsZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgTUFYX1NRM19GSUxURVJfU0laRQkJNQordHlwZWRlZiBzdHJ1Y3QgX1dCMzVSRUcKK3sKKwkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkvLyBSZWdpc3RlciBCYW5rIGJhY2t1cAorCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCXUzMglVMUIwOwkJCS8vYml0MTYgcmVjb3JkIHRoZSBoL3cgcmFkaW8gb24vb2ZmIHN0YXR1cworCXUzMglVMUJDX0xFRENvbmZpZ3VyZTsKKwl1MzIJRDAwX0RtYUNvbnRyb2w7CisJdTMyCU0wMF9NYWNDb250cm9sOworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXUzMglNMDRfTXVsdGljYXN0QWRkcmVzczE7CisJCQl1MzIJTTA4X011bHRpY2FzdEFkZHJlc3MyOworCQl9OworCQl1OAkJTXVsdGljYXN0WzhdOwkvLyBjb250ZW50cyBvZiBjYXJkIG11bHRpY2FzdCByZWdpc3RlcnMKKwl9OworCisJdTMyCU0yNF9NYWNDb250cm9sOworCXUzMglNMjhfTWFjQ29udHJvbDsKKwl1MzIJTTJDX01hY0NvbnRyb2w7CisJdTMyCU0zOF9NYWNDb250cm9sOworCXUzMglNM0NfTWFjQ29udHJvbDsgLy8gMjAwNjAyMTQgYmFja3VwIG9ubHkKKwl1MzIJTTQwX01hY0NvbnRyb2w7CisJdTMyCU00NF9NYWNDb250cm9sOyAvLyAyMDA2MDIxNCBiYWNrdXAgb25seQorCXUzMglNNDhfTWFjQ29udHJvbDsgLy8gMjAwNjAyMTQgYmFja3VwIG9ubHkKKwl1MzIJTTRDX01hY1N0YXR1czsKKwl1MzIJTTYwX01hY0NvbnRyb2w7IC8vIDIwMDYwMjE0IGJhY2t1cCBvbmx5CisJdTMyCU02OF9NYWNDb250cm9sOyAvLyAyMDA2MDIxNCBiYWNrdXAgb25seQorCXUzMglNNzBfTWFjQ29udHJvbDsgLy8gMjAwNjAyMTQgYmFja3VwIG9ubHkKKwl1MzIJTTc0X01hY0NvbnRyb2w7IC8vIDIwMDYwMjE0IGJhY2t1cCBvbmx5CisJdTMyCU03OF9FUlBJbmZvcm1hdGlvbjsvLzkzMDIwNi4yLmIKKwl1MzIJTTdDX01hY0NvbnRyb2w7IC8vIDIwMDYwMjE0IGJhY2t1cCBvbmx5CisJdTMyCU04MF9NYWNDb250cm9sOyAvLyAyMDA2MDIxNCBiYWNrdXAgb25seQorCXUzMglNODRfTWFjQ29udHJvbDsgLy8gMjAwNjAyMTQgYmFja3VwIG9ubHkKKwl1MzIJTTg4X01hY0NvbnRyb2w7IC8vIDIwMDYwMjE0IGJhY2t1cCBvbmx5CisJdTMyCU05OF9NYWNDb250cm9sOyAvLyAyMDA2MDIxNCBiYWNrdXAgb25seQorCisJLy9bMjAwNDA3MjIgV0tdCisJLy9CYXNlYmFuZCByZWdpc3RlcgorCXUzMglCQjBDOwkvLyBVc2VkIGZvciBMTkEgY2FsY3VsYXRpb24KKwl1MzIJQkIyQzsJLy8KKwl1MzIJQkIzMDsJLy8xMWIgYWNxdWlzaXRpb24gY29udHJvbCByZWdpc3RlcgorCXUzMglCQjNDOworCXUzMglCQjQ4OwkvLyAyMDA1MTIyMS4xLmEgMjAwNjA2MTMuMSBGaXggT0JXIGlzc3VlIG9mIDExYi8xMWcgcmF0ZQorCXUzMglCQjRDOwkvLyAyMDA2MDYxMy4xICBGaXggT0JXIGlzc3VlIG9mIDExYi8xMWcgcmF0ZQorCXUzMglCQjUwOwkvL21vZGUgY29udHJvbCByZWdpc3RlcgorCXUzMglCQjU0OworCXUzMiAJQkI1ODsJLy9JUV9BTFBIQQorCXUzMglCQjVDOwkvLyBGb3IgdGVzdAorCXUzMglCQjYwOwkvLyBmb3IgV1RPIHJlYWQgdmFsdWUKKworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vIFZNCisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tCisJT1NfU1BJTl9MT0NLCUVQMFZNX3NwaW5fbG9jazsgLy8gNEIKKwl1MzIJICAgICAgICBFUDBWTV9zdGF0dXM7Ly8kJAorCVBSRUdfUVVFVUUJICAgIHBSZWdGaXJzdDsKKwlQUkVHX1FVRVVFCSAgICBwUmVnTGFzdDsKKwlPU19BVE9NSUMgICAgICAgUmVnRmlyZUNvdW50OworCisJLy8gSGFyZHdhcmUgc3RhdHVzCisJdTgJRVAwdm1fc3RhdGU7CisJdTgJbWFjX3Bvd2VyX3NhdmU7CisJdTgJRUVQUk9NUGh5VHlwZTsgLy8gMCB+IDE1IGZvciBNYXhpbSAoMCDEhFYgTUFYMjgyNSwgMSDEhFYgTUFYMjgyNywgMiDEhFYgTUFYMjgyOCwgMyDEhFYgTUFYMjgyOSksCisJCQkJCQkgICAvLyAxNiB+IDMxIGZvciBBaXJvaGEgKDE2IMSEViBBTDIyMzAsIDExIC0gQUw3MjMwKQorCQkJCQkJICAgLy8gMzIgfiBSZXNlcnZlZAorCQkJCQkJICAgLy8gMzMgfiA0NyBGb3IgV0IyNDIgKCAzMyAtIFdCMjQyLCAzNCAtIFdCMjQyIHdpdGggbmV3IFR4dmdhIDAuNSBkYiBzdGVwKQorCQkJCQkJICAgLy8gNDggfiAyNTUgQVJFIFJFU0VSVkVELgorCXU4CUVFUFJPTVJlZ2lvbjsJLy9SZWdpb24gc2V0dGluZyBpbiBFRVBST00KKworCXUzMglTeW5jSW9QYXVzZTsgLy8gSWYgdXNlciB1c2UgdGhlIFN5bmMgSW8gdG8gYWNjZXNzIEh3LCB0aGVuIHBhdXNlIHRoZSBhc3luYyBhY2Nlc3MKKworCXU4CUxOQVZhbHVlWzRdOyAvL1RhYmxlIGZvciBzcGVlZCB1cCBydW5uaW5nCisJdTMyCVNRM19maWx0ZXJbTUFYX1NRM19GSUxURVJfU0laRV07CisJdTMyCVNRM19pbmRleDsKKworfSBXQjM1UkVHLCAqUFdCMzVSRUc7CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJ4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cnguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjE1N2ViCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXJ4LmMKQEAgLTAsMCArMSwzMzcgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gIENvcHlyaWdodCAoYykgMTk5Ni0yMDAyIFdpbmJvbmQgRWxlY3Ryb25pYyBDb3Jwb3JhdGlvbgorLy8KKy8vICBNb2R1bGUgTmFtZToKKy8vICAgIFdiMzVSeC5jCisvLworLy8gIEFic3RyYWN0OgorLy8gICAgUHJvY2Vzc2luZyB0aGUgUnggbWVzc2FnZSBmcm9tIGRvd24gbGF5ZXIKKy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNpbmNsdWRlICJzeXNkZWYuaCIKKworCit2b2lkIFdiMzVSeF9zdGFydChwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVSWCBwV2IzNVJ4ID0gJnBId0RhdGEtPldiMzVSeDsKKworCS8vIEFsbG93IG9ubHkgb25lIHRocmVhZCB0byBydW4gaW50byB0aGUgV2IzNVJ4KCkgZnVuY3Rpb24KKwlpZiAoT1NfQVRPTUlDX0lOQyhwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVSeC0+UnhGaXJlQ291bnRlcikgPT0gMSkgeworCQlwV2IzNVJ4LT5FUDN2bV9zdGF0ZSA9IFZNX1JVTk5JTkc7CisJCVdiMzVSeChwSHdEYXRhKTsKKwl9IGVsc2UKKwkJT1NfQVRPTUlDX0RFQyhwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVSeC0+UnhGaXJlQ291bnRlcik7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY2Fubm90IHJlZW50cmFpbgordm9pZCBXYjM1UngoICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCVBXQjM1UlgJcFdiMzVSeCA9ICZwSHdEYXRhLT5XYjM1Ung7CisJUFVDSEFSCXBSeEJ1ZmZlckFkZHJlc3M7CisJUFVSQglwVXJiID0gKFBVUkIpcFdiMzVSeC0+UnhVcmI7CisJaW50CXJldHY7CisJdTMyCVJ4QnVmZmVySWQ7CisKKwkvLworCS8vIElzc3VpbmcgVVJCCisJLy8KKwlkbyB7CisJCWlmIChwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSB8fCBwSHdEYXRhLT5Id1N0b3ApCisJCQlicmVhazsKKworCQlpZiAocFdiMzVSeC0+cnhfaGFsdCkKKwkJCWJyZWFrOworCisJCS8vIEdldCBSeEJ1ZmZlcidzIElECisJCVJ4QnVmZmVySWQgPSBwV2IzNVJ4LT5SeEJ1ZmZlcklkOworCQlpZiAoIXBXYjM1UngtPlJ4T3duZXJbUnhCdWZmZXJJZF0pIHsKKwkJCS8vIEl0J3MgaW1wb3NzaWJsZSB0byBydW4gaGVyZS4KKwkJCSNpZmRlZiBfUEVfUlhfRFVNUF8KKwkJCVdCREVCVUcoKCJSeCBkcml2ZXIgZmlmbyB1bmF2YWlsYWJsZVxuIikpOworCQkJI2VuZGlmCisJCQlicmVhazsKKwkJfQorCisJCS8vIFVwZGF0ZSBidWZmZXIgcG9pbnQsIHRoZW4gc3RhcnQgdG8gYnVsa2luIHRoZSBkYXRhIGZyb20gVVNCCisJCXBXYjM1UngtPlJ4QnVmZmVySWQrKzsKKwkJcFdiMzVSeC0+UnhCdWZmZXJJZCAlPSBNQVhfVVNCX1JYX0JVRkZFUl9OVU1CRVI7CisKKwkJcFdiMzVSeC0+Q3VycmVudFJ4QnVmZmVySWQgPSBSeEJ1ZmZlcklkOworCisJCWlmICgxICE9IE9TX01FTU9SWV9BTExPQygodm9pZCogKikmcFdiMzVSeC0+cERSeCwgTUFYX1VTQl9SWF9CVUZGRVIpKSB7CisJCQlwcmludGsoInczNXVuZDogUnggbWVtb3J5IGFsbG9jIGZhaWxlZFxuIik7CisJCQlicmVhazsKKwkJfQorCQlwUnhCdWZmZXJBZGRyZXNzID0gcFdiMzVSeC0+cERSeDsKKworCQl1c2JfZmlsbF9idWxrX3VyYihwVXJiLCBwSHdEYXRhLT5XYlVzYi51ZGV2LAorCQkJCSAgdXNiX3JjdmJ1bGtwaXBlKHBId0RhdGEtPldiVXNiLnVkZXYsIDMpLAorCQkJCSAgcFJ4QnVmZmVyQWRkcmVzcywgTUFYX1VTQl9SWF9CVUZGRVIsCisJCQkJICBXYjM1UnhfQ29tcGxldGUsIHBId0RhdGEpOworCisJCXBXYjM1UngtPkVQM3ZtX3N0YXRlID0gVk1fUlVOTklORzsKKworCQlyZXR2ID0gd2JfdXNiX3N1Ym1pdF91cmIocFVyYik7CisKKwkJaWYgKHJldHYgIT0gMCkgeworCQkJcHJpbnRrKCJSeCBVUkIgc2VuZGluZyBlcnJvclxuIik7CisJCQlicmVhazsKKwkJfQorCQlyZXR1cm47CisJfSB3aGlsZShGQUxTRSk7CisKKwkvLyBWTSBzdG9wCisJcFdiMzVSeC0+RVAzdm1fc3RhdGUgPSBWTV9TVE9QOworCU9TX0FUT01JQ19ERUMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVJ4LT5SeEZpcmVDb3VudGVyICk7Cit9CisKK3ZvaWQgV2IzNVJ4X0NvbXBsZXRlKFBVUkIgcFVyYikKK3sKKwlwaHdfZGF0YV90CXBId0RhdGEgPSBwVXJiLT5jb250ZXh0OworCVBXQjM1UlgJCXBXYjM1UnggPSAmcEh3RGF0YS0+V2IzNVJ4OworCVBVQ0hBUgkJcFJ4QnVmZmVyQWRkcmVzczsKKwl1MzIJCVNpemVDaGVjazsKKwl1MTYJCUJ1bGtMZW5ndGg7CisJdTMyCQlSeEJ1ZmZlcklkOworCVIwMF9ERVNDUklQVE9SIAlSMDA7CisKKwkvLyBWYXJpYWJsZSBzZXR0aW5nCisJcFdiMzVSeC0+RVAzdm1fc3RhdGUgPSBWTV9DT01QTEVURUQ7CisJcFdiMzVSeC0+RVAzVk1fc3RhdHVzID0gcFVyYi0+c3RhdHVzOy8vU3RvcmUgdGhlIGxhc3QgcmVzdWx0IG9mIElycAorCisJZG8geworCQlSeEJ1ZmZlcklkID0gcFdiMzVSeC0+Q3VycmVudFJ4QnVmZmVySWQ7CisKKwkJcFJ4QnVmZmVyQWRkcmVzcyA9IHBXYjM1UngtPnBEUng7CisJCUJ1bGtMZW5ndGggPSAodTE2KXBVcmItPmFjdHVhbF9sZW5ndGg7CisKKwkJLy8gVGhlIElSUCBpcyBjb21wbGV0ZWQKKwkJcFdiMzVSeC0+RVAzdm1fc3RhdGUgPSBWTV9DT01QTEVURUQ7CisKKwkJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlIHx8IHBId0RhdGEtPkh3U3RvcCkgLy8gTXVzdCBiZSBoZXJlLCBvciBSeEJ1ZmZlcklkIGlzIGludmFsaWQKKwkJCWJyZWFrOworCisJCWlmIChwV2IzNVJ4LT5yeF9oYWx0KQorCQkJYnJlYWs7CisKKwkJLy8gU3RhcnQgdG8gcHJvY2VzcyB0aGUgZGF0YSBvbmx5IGluIHN1Y2Nlc3NmdWwgY29uZGl0aW9uCisJCXBXYjM1UngtPlJ4T3duZXJbIFJ4QnVmZmVySWQgXSA9IDA7IC8vIFNldCB0aGUgb3duZXIgdG8gZHJpdmVyCisJCVIwMC52YWx1ZSA9IGxlMzJfdG9fY3B1KCooUFVMT05HKXBSeEJ1ZmZlckFkZHJlc3MpOworCisJCS8vIFRoZSBVUkIgaXMgY29tcGxldGVkLCBjaGVjayB0aGUgcmVzdWx0CisJCWlmIChwV2IzNVJ4LT5FUDNWTV9zdGF0dXMgIT0gMCkgeworCQkJI2lmZGVmIF9QRV9VU0JfU1RBVEVfRFVNUF8KKwkJCVdCREVCVUcoKCJFUDMgSW9Db21wbGV0ZVJvdXRpbmUgcmV0dXJuIGVycm9yXG4iKSk7CisJCQlEZWJ1Z1VzYmRTdGF0dXNJbmZvcm1hdGlvbiggcFdiMzVSeC0+RVAzVk1fc3RhdHVzICk7CisJCQkjZW5kaWYKKwkJCXBXYjM1UngtPkVQM3ZtX3N0YXRlID0gVk1fU1RPUDsKKwkJCWJyZWFrOworCQl9CisKKwkJLy8gMjAwNjAyMjAgRm9yIHJlY292ZXJpbmcuIGNoZWNrIGlmIG9wZXJhdGluZyBpbiBzaW5nbGUgVVNCIG1vZGUKKwkJaWYgKCFIQUxfVVNCX01PREVfQlVSU1QocEh3RGF0YSkpIHsKKwkJCVNpemVDaGVjayA9IFIwMC5SMDBfcmVjZWl2ZV9ieXRlX2NvdW50OyAgLy8yMDA2MDkyNiBhbnNvbidzIGVuZGlhbgorCQkJaWYgKChTaXplQ2hlY2sgJiAweDAzKSA+IDApCisJCQkJU2l6ZUNoZWNrIC09IDQ7CisJCQlTaXplQ2hlY2sgPSAoU2l6ZUNoZWNrICsgMykgJiB+MHgwMzsKKwkJCVNpemVDaGVjayArPSAxMjsgLy8gOCArIDQgYmFkYmVlZgorCQkJaWYgKChCdWxrTGVuZ3RoID4gMTYwMCkgfHwKKwkJCQkoU2l6ZUNoZWNrID4gMTYwMCkgfHwKKwkJCQkoQnVsa0xlbmd0aCAhPSBTaXplQ2hlY2spIHx8CisJCQkJKEJ1bGtMZW5ndGggPT0gMCkpIHsgLy8gQWRkIGZvciBmYWlsIFVyYgorCQkJCXBXYjM1UngtPkVQM3ZtX3N0YXRlID0gVk1fU1RPUDsKKwkJCQlwV2IzNVJ4LT5FcDNFcnJvckNvdW50MisrOworCQkJfQorCQl9CisKKwkJLy8gSW5kaWNhdGluZyB0aGUgcmVjZWl2aW5nIGRhdGEKKwkJcFdiMzVSeC0+Qnl0ZVJlY2VpdmVkICs9IEJ1bGtMZW5ndGg7CisJCXBXYjM1UngtPlJ4QnVmZmVyU2l6ZVsgUnhCdWZmZXJJZCBdID0gQnVsa0xlbmd0aDsKKworCQlpZiAoIXBXYjM1UngtPlJ4T3duZXJbIFJ4QnVmZmVySWQgXSkKKwkJCVdiMzVSeF9pbmRpY2F0ZShwSHdEYXRhKTsKKworCQlrZnJlZShwV2IzNVJ4LT5wRFJ4KTsKKwkJLy8gRG8gdGhlIG5leHQgcmVjZWl2ZQorCQlXYjM1UngocEh3RGF0YSk7CisJCXJldHVybjsKKworCX0gd2hpbGUoRkFMU0UpOworCisJcFdiMzVSeC0+UnhPd25lclsgUnhCdWZmZXJJZCBdID0gMTsgLy8gU2V0IHRoZSBvd25lciB0byBoYXJkd2FyZQorCU9TX0FUT01JQ19ERUMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVJ4LT5SeEZpcmVDb3VudGVyICk7CisJcFdiMzVSeC0+RVAzdm1fc3RhdGUgPSBWTV9TVE9QOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3Vuc2lnbmVkIGNoYXIgV2IzNVJ4X2luaXRpYWwocGh3X2RhdGFfdCBwSHdEYXRhKQoreworCVBXQjM1UlggcFdiMzVSeCA9ICZwSHdEYXRhLT5XYjM1Ung7CisKKwkvLyBJbml0aWFsIHRoZSBCdWZmZXIgUXVldWUKKwlXYjM1UnhfcmVzZXRfZGVzY3JpcHRvciggcEh3RGF0YSApOworCisJcFdiMzVSeC0+UnhVcmIgPSB3Yl91c2JfYWxsb2NfdXJiKDApOworCXJldHVybiAoISFwV2IzNVJ4LT5SeFVyYik7Cit9CisKK3ZvaWQgV2IzNVJ4X3N0b3AocGh3X2RhdGFfdCBwSHdEYXRhKQoreworCVBXQjM1UlggcFdiMzVSeCA9ICZwSHdEYXRhLT5XYjM1Ung7CisKKwkvLyBDYW5jZWxpbmcgdGhlIElycCBpZiBhbHJlYWR5IHNlbmRzIGl0IG91dC4KKwlpZiAocFdiMzVSeC0+RVAzdm1fc3RhdGUgPT0gVk1fUlVOTklORykgeworCQl1c2JfdW5saW5rX3VyYiggcFdiMzVSeC0+UnhVcmIgKTsgLy8gT25seSB1c2UgdW5saW5rLCBsZXQgV2IzNVJ4X2Rlc3Ryb3kgdG8gZnJlZSB0aGVtCisJCSNpZmRlZiBfUEVfUlhfRFVNUF8KKwkJV0JERUJVRygoIkVQMyBSeCBzdG9wXG4iKSk7CisJCSNlbmRpZgorCX0KK30KKworLy8gTmVlZHMgcHJvY2VzcyBjb250ZXh0Cit2b2lkIFdiMzVSeF9kZXN0cm95KHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlQV0IzNVJYIHBXYjM1UnggPSAmcEh3RGF0YS0+V2IzNVJ4OworCisJZG8geworCQlPU19TTEVFUCgxMDAwMCk7IC8vIERlbGF5IGZvciB3YWl0aW5nIGZ1bmN0aW9uIGVudGVyIDk0MDYyMy4xLmEKKwl9IHdoaWxlIChwV2IzNVJ4LT5FUDN2bV9zdGF0ZSAhPSBWTV9TVE9QKTsKKwlPU19TTEVFUCgxMDAwMCk7IC8vIERlbGF5IGZvciB3YWl0aW5nIGZ1bmN0aW9uIGV4aXQgOTQwNjIzLjEuYgorCisJaWYgKHBXYjM1UngtPlJ4VXJiKQorCQl1c2JfZnJlZV91cmIoIHBXYjM1UngtPlJ4VXJiICk7CisJI2lmZGVmIF9QRV9SWF9EVU1QXworCVdCREVCVUcoKCJXYjM1UnhfZGVzdHJveSBPS1xuIikpOworCSNlbmRpZgorfQorCit2b2lkIFdiMzVSeF9yZXNldF9kZXNjcmlwdG9yKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwlQV0IzNVJYIHBXYjM1UnggPSAmcEh3RGF0YS0+V2IzNVJ4OworCXUzMglpOworCisJcFdiMzVSeC0+Qnl0ZVJlY2VpdmVkID0gMDsKKwlwV2IzNVJ4LT5SeFByb2Nlc3NJbmRleCA9IDA7CisJcFdiMzVSeC0+UnhCdWZmZXJJZCA9IDA7CisJcFdiMzVSeC0+RVAzdm1fc3RhdGUgPSBWTV9TVE9QOworCXBXYjM1UngtPnJ4X2hhbHQgPSAwOworCisJLy8gSW5pdGlhbCB0aGUgUXVldWUuIFRoZSBsYXN0IGJ1ZmZlciBpcyByZXNlcnZlZCBmb3IgdXNlZCBpZiB0aGUgUnggcmVzb3VyY2UgaXMgdW5hdmFpbGFibGUuCisJZm9yKCBpPTA7IGk8TUFYX1VTQl9SWF9CVUZGRVJfTlVNQkVSOyBpKysgKQorCQlwV2IzNVJ4LT5SeE93bmVyW2ldID0gMTsKK30KKwordm9pZCBXYjM1UnhfYWRqdXN0KFBERVNDUklQVE9SIHBSeERlcykKK3sKKwlQVUxPTkcJcFJ4QnVmZmVyQWRkcmVzczsKKwl1MzIJRGVjcnlwdGlvbk1ldGhvZDsKKwl1MzIJaTsKKwl1MTYJQnVmZmVyU2l6ZTsKKworCURlY3J5cHRpb25NZXRob2QgPSBwUnhEZXMtPlIwMS5SMDFfZGVjcnlwdGlvbl9tZXRob2Q7CisJcFJ4QnVmZmVyQWRkcmVzcyA9IHBSeERlcy0+YnVmZmVyX2FkZHJlc3NbMF07CisJQnVmZmVyU2l6ZSA9IHBSeERlcy0+YnVmZmVyX3NpemVbMF07CisKKwkvLyBBZGp1c3QgdGhlIGxhc3QgcGFydCBvZiBkYXRhLiBPbmx5IGRhdGEgbGVmdAorCUJ1ZmZlclNpemUgLT0gNDsgLy8gRm9yIENSQy0zMgorCWlmIChEZWNyeXB0aW9uTWV0aG9kKQorCQlCdWZmZXJTaXplIC09IDQ7CisJaWYgKERlY3J5cHRpb25NZXRob2QgPT0gMykgLy8gRm9yIENDTVAKKwkJQnVmZmVyU2l6ZSAtPSA0OworCisJLy8gQWRqdXN0IHRoZSBJViBmaWVsZCB3aGljaCBhZnRlciA4MDIuMTEgaGVhZGVyIGFuZCBJQ1YgZmllbGQuCisJaWYgKERlY3J5cHRpb25NZXRob2QgPT0gMSkgLy8gRm9yIFdFUAorCXsKKwkJZm9yKCBpPTY7IGk+MDsgaS0tICkKKwkJCXBSeEJ1ZmZlckFkZHJlc3NbaV0gPSBwUnhCdWZmZXJBZGRyZXNzW2ktMV07CisJCXBSeERlcy0+YnVmZmVyX2FkZHJlc3NbMF0gPSBwUnhCdWZmZXJBZGRyZXNzICsgMTsKKwkJQnVmZmVyU2l6ZSAtPSA0OyAvLyA0IGJ5dGUgZm9yIElWCisJfQorCWVsc2UgaWYoIERlY3J5cHRpb25NZXRob2QgKSAvLyBGb3IgVEtJUCBhbmQgQ0NNUAorCXsKKwkJZm9yIChpPTc7IGk+MTsgaS0tKQorCQkJcFJ4QnVmZmVyQWRkcmVzc1tpXSA9IHBSeEJ1ZmZlckFkZHJlc3NbaS0yXTsKKwkJcFJ4RGVzLT5idWZmZXJfYWRkcmVzc1swXSA9IHBSeEJ1ZmZlckFkZHJlc3MgKyAyOy8vVXBkYXRlIHRoZSBkZXNjcmlwdG9yLCBzaGlmdCA4IGJ5dGUKKwkJQnVmZmVyU2l6ZSAtPSA4OyAvLyA4IGJ5dGUgZm9yIElWICsgSUNWCisJfQorCXBSeERlcy0+YnVmZmVyX3NpemVbMF0gPSBCdWZmZXJTaXplOworfQorCitleHRlcm4gdm9pZCBwYWNrZXRfY2FtZShjaGFyICpwUnhCdWZmZXJBZGRyZXNzLCBpbnQgUGFja2V0U2l6ZSk7CisKKwordTE2IFdiMzVSeF9pbmRpY2F0ZShwaHdfZGF0YV90IHBId0RhdGEpCit7CisJREVTQ1JJUFRPUglSeERlczsKKwlQV0IzNVJYCXBXYjM1UnggPSAmcEh3RGF0YS0+V2IzNVJ4OworCVBVQ0hBUgkJcFJ4QnVmZmVyQWRkcmVzczsKKwl1MTYJCVBhY2tldFNpemU7CisJdTE2CQlzdG1wLCBCdWZmZXJTaXplLCBzdG1wMiA9IDA7CisJdTMyCQlSeEJ1ZmZlcklkOworCisJLy8gT25seSBvbmUgdGhyZWFkIGJlIGFsbG93ZWQgdG8gcnVuIGludG8gdGhlIGZvbGxvd2luZworCWRvIHsKKwkJUnhCdWZmZXJJZCA9IHBXYjM1UngtPlJ4UHJvY2Vzc0luZGV4OworCQlpZiAocFdiMzVSeC0+UnhPd25lclsgUnhCdWZmZXJJZCBdKSAvL093bmVyIGJ5IFZNCisJCQlicmVhazsKKworCQlwV2IzNVJ4LT5SeFByb2Nlc3NJbmRleCsrOworCQlwV2IzNVJ4LT5SeFByb2Nlc3NJbmRleCAlPSBNQVhfVVNCX1JYX0JVRkZFUl9OVU1CRVI7CisKKwkJcFJ4QnVmZmVyQWRkcmVzcyA9IHBXYjM1UngtPnBEUng7CisJCUJ1ZmZlclNpemUgPSBwV2IzNVJ4LT5SeEJ1ZmZlclNpemVbIFJ4QnVmZmVySWQgXTsKKworCQkvLyBQYXJzZSB0aGUgYnVsa2luIGJ1ZmZlcgorCQl3aGlsZSAoQnVmZmVyU2l6ZSA+PSA0KSB7CisJCQlpZiAoKGNwdV90b19sZTMyKCooUFVMT05HKXBSeEJ1ZmZlckFkZHJlc3MpICYgMHgwZmZmZmZmZikgPT0gUlhfRU5EX1RBRykgLy9JcyBlbmRpbmc/IDkyMTAwMi45LmEKKwkJCQlicmVhazsKKworCQkJLy8gR2V0IHRoZSBSMDAgUjAxIGZpcnN0CisJCQlSeERlcy5SMDAudmFsdWUgPSBsZTMyX3RvX2NwdSgqKFBVTE9ORylwUnhCdWZmZXJBZGRyZXNzKTsKKwkJCVBhY2tldFNpemUgPSAodTE2KVJ4RGVzLlIwMC5SMDBfcmVjZWl2ZV9ieXRlX2NvdW50OworCQkJUnhEZXMuUjAxLnZhbHVlID0gbGUzMl90b19jcHUoKigoUFVMT05HKShwUnhCdWZmZXJBZGRyZXNzKzQpKSk7CisJCQkvLyBGb3IgbmV3IERNQSA0aworCQkJaWYgKChQYWNrZXRTaXplICYgMHgwMykgPiAwKQorCQkJCVBhY2tldFNpemUgLT0gNDsKKworCQkJLy8gQmFzaWMgY2hlY2sgZm9yIFJ4IGxlbmd0aC4gSXMgbGVuZ3RoIHZhbGlkPworCQkJaWYgKFBhY2tldFNpemUgPiBNQVhfUEFDS0VUX1NJWkUpIHsKKwkJCQkjaWZkZWYgX1BFX1JYX0RVTVBfCisJCQkJV0JERUJVRygoIlNlcmlvdXMgRVJST1IgOiBSeCBkYXRhIHNpemUgdG9vIGxvbmcsIHNpemUgPSVkXG4iLCBQYWNrZXRTaXplKSk7CisJCQkJI2VuZGlmCisKKwkJCQlwV2IzNVJ4LT5FUDN2bV9zdGF0ZSA9IFZNX1NUT1A7CisJCQkJcFdiMzVSeC0+RXAzRXJyb3JDb3VudDIrKzsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLy8gU3RhcnQgdG8gcHJvY2VzcyBSeCBidWZmZXIKKy8vCQkJUnhEZXMuRGVzY3JpcHRvcl9JRCA9IFJ4QnVmZmVySWQ7IC8vIER1ZSB0byBzeW5jaHJvbm91cyBpbmRpY2F0ZSwgdGhlIGZpZWxkIGRvZXNuJ3QgbmVjZXNzYXJ5IHRvIHVzZS4KKwkJCUJ1ZmZlclNpemUgLT0gODsgLy9zdWJ0cmFjdCA4IGJ5dGUgZm9yIDM1J3MgVVNCIGhlYWRlciBsZW5ndGgKKwkJCXBSeEJ1ZmZlckFkZHJlc3MgKz0gODsKKworCQkJUnhEZXMuYnVmZmVyX2FkZHJlc3NbMF0gPSBwUnhCdWZmZXJBZGRyZXNzOworCQkJUnhEZXMuYnVmZmVyX3NpemVbMF0gPSBQYWNrZXRTaXplOworCQkJUnhEZXMuYnVmZmVyX251bWJlciA9IDE7CisJCQlSeERlcy5idWZmZXJfc3RhcnRfaW5kZXggPSAwOworCQkJUnhEZXMuYnVmZmVyX3RvdGFsX3NpemUgPSBSeERlcy5idWZmZXJfc2l6ZVswXTsKKwkJCVdiMzVSeF9hZGp1c3QoJlJ4RGVzKTsKKworCQkJcGFja2V0X2NhbWUocFJ4QnVmZmVyQWRkcmVzcywgUGFja2V0U2l6ZSk7CisKKwkJCS8vIE1vdmUgUnhCdWZmZXIgcG9pbnQgdG8gdGhlIG5leHQKKwkJCXN0bXAgPSBQYWNrZXRTaXplICsgMzsKKwkJCXN0bXAgJj0gfjB4MDM7IC8vIDRuIGFsaWdubWVudAorCQkJcFJ4QnVmZmVyQWRkcmVzcyArPSBzdG1wOworCQkJQnVmZmVyU2l6ZSAtPSBzdG1wOworCQkJc3RtcDIgKz0gc3RtcDsKKwkJfQorCisJCS8vIFJlY2xhaW0gcmVzb3VyY2UKKwkJcFdiMzVSeC0+UnhPd25lclsgUnhCdWZmZXJJZCBdID0gMTsKKwl9IHdoaWxlKFRSVUUpOworCisJcmV0dXJuIHN0bXAyOworfQorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyeF9mLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cnhfZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYTNlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cnhfZi5oCkBAIC0wLDAgKzEsMTcgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBJbnRlcmZhY2UgZnVuY3Rpb24gZGVjbGFyZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQJCVdiMzVSeF9yZXNldF9kZXNjcmlwdG9yKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit1bnNpZ25lZCBjaGFyCQlXYjM1UnhfaW5pdGlhbCggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZAkJV2IzNVJ4X2Rlc3Ryb3koICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQJCVdiMzVSeF9zdG9wKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit1MTYJCVdiMzVSeF9pbmRpY2F0ZSggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZAkJV2IzNVJ4X2FkanVzdCggIFBERVNDUklQVE9SIHBSeERlcyApOwordm9pZAkJV2IzNVJ4X3N0YXJ0KCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisKK3ZvaWQJCVdiMzVSeCggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZAkJV2IzNVJ4X0NvbXBsZXRlKCAgUFVSQiBwVXJiICk7CisKKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzVyeF9zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cnhfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYjgzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1cnhfcy5oCkBAIC0wLDAgKzEsNDggQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gd2IzNXJ4LmggLS0KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyBEZWZpbml0aW9uIGZvciB0aGlzIG1vZHVsZSB1c2VkCisjZGVmaW5lIE1BWF9VU0JfUlhfQlVGRkVSCTQwOTYJLy8gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSA0MDk2IDkzMTEzMC40LmYKKworI2RlZmluZSBNQVhfVVNCX1JYX0JVRkZFUl9OVU1CRVIJRVRIRVJORVRfUlhfREVTQ1JJUFRPUlMJCS8vIE1heGltdW0gMjU0LCAyNTUgaXMgUkVTRVJWRUQgSUQKKyNkZWZpbmUgUlhfSU5URVJGQUNFCQkJCTAJLy8gSW50ZXJmYWNlIDEKKyNkZWZpbmUgUlhfUElQRQkJCQkJCTIJLy8gUGlwZSAzCisjZGVmaW5lIE1BWF9QQUNLRVRfU0laRQkJCQkxNjAwIC8vMTU2OAkvLyA4ICsgMTUzMiArIDQgKyAyNChJViBFSVYgTUlDIElDViBDUkMpIGZvciBjaGVjayBETUEgZGF0YSA5MzExMzAuNC5nCisjZGVmaW5lIFJYX0VORF9UQUcJCQkJCTB4MGJhZGJlZWYKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSW50ZXJuYWwgdmFyaWFibGUgZm9yIG1vZHVsZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3R5cGVkZWYgc3RydWN0IF9XQjM1UlgKK3sKKwl1MzIJCQlCeXRlUmVjZWl2ZWQ7Ly8gRm9yIGNhbGN1bGF0aW5nIHRocm91Z2hwdXQgb2YgQnVsa0luCisJT1NfQVRPTUlDCQlSeEZpcmVDb3VudGVyOy8vIERvZXMgV2IzNVJ4IG1vZHVsZSBmaXJlPworCisJdTgJUnhCdWZmZXJbIE1BWF9VU0JfUlhfQlVGRkVSX05VTUJFUiBdWyAoKE1BWF9VU0JfUlhfQlVGRkVSKzMpICYgfjB4MDMgKSBdOworCXUxNglSeEJ1ZmZlclNpemVbICgoTUFYX1VTQl9SWF9CVUZGRVJfTlVNQkVSKzEpICYgfjB4MDEpIF07CisJdTgJUnhPd25lclsgKChNQVhfVVNCX1JYX0JVRkZFUl9OVU1CRVIrMykgJiB+MHgwMyApIF07Ly9Pd25lcnNoaXAgb2YgYnVmZmVyICAwOiBTVyAxOkhXCisKKwl1MzIJUnhQcm9jZXNzSW5kZXg7Ly9UaGUgbmV4dCBpbmRleCB0byBwcm9jZXNzCisJdTMyCVJ4QnVmZmVySWQ7CisJdTMyCUVQM3ZtX3N0YXRlOworCisJdTMyCXJ4X2hhbHQ7IC8vIEZvciBWTSBzdG9wcGluZworCisJdTE2CU1vcmVEYXRhU2l6ZTsKKwl1MTYJUGFja2V0U2l6ZTsKKworCXUzMglDdXJyZW50UnhCdWZmZXJJZDsgLy8gRm9yIGNvbXBsZXRlIHJvdXRpbmUgdXNhZ2UKKwl1MzIJUngzVXJiQ2FuY2VsOworCisJdTMyCUxhc3RSMTsgLy8gRm9yIFJTU0kgcmVwb3J0aW5nCisJc3RydWN0IHVyYiAqCQkJCVJ4VXJiOworCXUzMgkJRXAzRXJyb3JDb3VudDI7IC8vIDIwMDYwNjI1LjEgVXNiZCBmb3IgUnggRE1BIGVycm9yIGNvdW50CisKKwlpbnQJCUVQM1ZNX3N0YXR1czsKKwlQVUNIQVIJcERSeDsKKworfSBXQjM1UlgsICpQV0IzNVJYOworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzV0eC5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2IzNXR4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxOWMzYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzV0eC5jCkBAIC0wLDAgKzEsMzEzIEBACisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMiBXaW5ib25kIEVsZWN0cm9uaWMgQ29ycG9yYXRpb24KKy8vCisvLyAgTW9kdWxlIE5hbWU6CisvLyAgICBXYjM1VHguYworLy8KKy8vICBBYnN0cmFjdDoKKy8vICAgIFByb2Nlc3NpbmcgdGhlIFR4IG1lc3NhZ2UgYW5kIHB1dCBpbnRvIGRvd24gbGF5ZXIKKy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNpbmNsdWRlICJzeXNkZWYuaCIKKworCit1bnNpZ25lZCBjaGFyCitXYjM1VHhfZ2V0X3R4X2J1ZmZlcihwaHdfZGF0YV90IHBId0RhdGEsIFBVQ0hBUiAqcEJ1ZmZlciApCit7CisJUFdCMzVUWCBwV2IzNVR4ID0gJnBId0RhdGEtPldiMzVUeDsKKworCSpwQnVmZmVyID0gcFdiMzVUeC0+VHhCdWZmZXJbMF07CisJcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgV2IzNVR4X3N0YXJ0KHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlQV0IzNVRYIHBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCisJLy8gQWxsb3cgb25seSBvbmUgdGhyZWFkIHRvIHJ1biBpbnRvIGZ1bmN0aW9uCisJaWYgKE9TX0FUT01JQ19JTkMocEh3RGF0YS0+QWRhcHRlciwgJnBXYjM1VHgtPlR4RmlyZUNvdW50ZXIpID09IDEpIHsKKwkJcFdiMzVUeC0+RVA0dm1fc3RhdGUgPSBWTV9SVU5OSU5HOworCQlXYjM1VHgocEh3RGF0YSk7CisJfSBlbHNlCisJCU9TX0FUT01JQ19ERUMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVR4LT5UeEZpcmVDb3VudGVyICk7Cit9CisKKwordm9pZCBXYjM1VHgocGh3X2RhdGFfdCBwSHdEYXRhKQoreworCVBXQjM1VFgJCXBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCVBBREFQVEVSCUFkYXB0ZXIgPSBwSHdEYXRhLT5BZGFwdGVyOworCVBVQ0hBUgkJcFR4QnVmZmVyQWRkcmVzczsKKwlQTURTCQlwTWRzID0gJkFkYXB0ZXItPk1kczsKKwlzdHJ1Y3QgdXJiICoJcFVyYiA9IChzdHJ1Y3QgdXJiICopcFdiMzVUeC0+VHg0VXJiOworCWludCAgICAgICAgIAlyZXR2OworCXUzMgkJU2VuZEluZGV4OworCisKKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgfHwgcEh3RGF0YS0+SHdTdG9wKQorCQlnb3RvIGNsZWFudXA7CisKKwlpZiAocFdiMzVUeC0+dHhfaGFsdCkKKwkJZ290byBjbGVhbnVwOworCisJLy8gT3duZXJzaGlwIGNoZWNraW5nCisJU2VuZEluZGV4ID0gcFdiMzVUeC0+VHhTZW5kSW5kZXg7CisJaWYgKCFwTWRzLT5UeE93bmVyW1NlbmRJbmRleF0pIC8vTm8gbW9yZSBkYXRhIG5lZWQgdG8gYmUgc2VudCwgcmV0dXJuIGltbWVkaWF0ZWx5CisJCWdvdG8gY2xlYW51cDsKKworCXBUeEJ1ZmZlckFkZHJlc3MgPSBwV2IzNVR4LT5UeEJ1ZmZlcltTZW5kSW5kZXhdOworCS8vCisJLy8gSXNzdWluZyBVUkIKKwkvLworCXVzYl9maWxsX2J1bGtfdXJiKHBVcmIsIHBId0RhdGEtPldiVXNiLnVkZXYsCisJCQkgIHVzYl9zbmRidWxrcGlwZShwSHdEYXRhLT5XYlVzYi51ZGV2LCA0KSwKKwkJCSAgcFR4QnVmZmVyQWRkcmVzcywgcE1kcy0+VHhCdWZmZXJTaXplWyBTZW5kSW5kZXggXSwKKwkJCSAgV2IzNVR4X2NvbXBsZXRlLCBwSHdEYXRhKTsKKworCXBXYjM1VHgtPkVQNHZtX3N0YXRlID0gVk1fUlVOTklORzsKKwlyZXR2ID0gd2JfdXNiX3N1Ym1pdF91cmIoIHBVcmIgKTsKKwlpZiAocmV0djwwKSB7CisJCXByaW50aygiRVA0IFR4IElycCBzZW5kaW5nIGVycm9yXG4iKTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCS8vIENoZWNrIGlmIGRyaXZlciBuZWVkcyBpc3N1ZSBJcnAgZm9yIEVQMgorCXBXYjM1VHgtPlR4RmlsbENvdW50ICs9IHBNZHMtPlR4Q291bnRJbkJ1ZmZlcltTZW5kSW5kZXhdOworCWlmIChwV2IzNVR4LT5UeEZpbGxDb3VudCA+IDEyKQorCQlXYjM1VHhfRVAyVk1fc3RhcnQoIHBId0RhdGEgKTsKKworCXBXYjM1VHgtPkJ5dGVUcmFuc2ZlciArPSBwTWRzLT5UeEJ1ZmZlclNpemVbU2VuZEluZGV4XTsKKwlyZXR1cm47CisKKyBjbGVhbnVwOgorCXBXYjM1VHgtPkVQNHZtX3N0YXRlID0gVk1fU1RPUDsKKwlPU19BVE9NSUNfREVDKCBwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVUeC0+VHhGaXJlQ291bnRlciApOworfQorCisKK3ZvaWQgV2IzNVR4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKiBwVXJiKQoreworCXBod19kYXRhX3QJcEh3RGF0YSA9IHBVcmItPmNvbnRleHQ7CisJUEFEQVBURVIJQWRhcHRlciA9IChQQURBUFRFUilwSHdEYXRhLT5BZGFwdGVyOworCVBXQjM1VFgJCXBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCVBNRFMJCXBNZHMgPSAmQWRhcHRlci0+TWRzOworCisJcHJpbnRrKCJ3YjM1OiB0eCBjb21wbGV0ZVxuIik7CisJLy8gVmFyaWFibGUgc2V0dGluZworCXBXYjM1VHgtPkVQNHZtX3N0YXRlID0gVk1fQ09NUExFVEVEOworCXBXYjM1VHgtPkVQNFZNX3N0YXR1cyA9IHBVcmItPnN0YXR1czsgLy9TdG9yZSB0aGUgbGFzdCByZXN1bHQgb2YgSXJwCisJcE1kcy0+VHhPd25lclsgcFdiMzVUeC0+VHhTZW5kSW5kZXggXSA9IDA7Ly8gU2V0IHRoZSBvd25lci4gRnJlZSB0aGUgb3duZXIgYml0IGFsd2F5cy4KKwlwV2IzNVR4LT5UeFNlbmRJbmRleCsrOworCXBXYjM1VHgtPlR4U2VuZEluZGV4ICU9IE1BWF9VU0JfVFhfQlVGRkVSX05VTUJFUjsKKworCWRvIHsKKwkJaWYgKHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlIHx8IHBId0RhdGEtPkh3U3RvcCkgLy8gTGV0IFdiV2xhbkhhbHQgdG8gaGFuZGxlIHN1cnByaXNlIHJlbW92ZQorCQkJYnJlYWs7CisKKwkJaWYgKHBXYjM1VHgtPnR4X2hhbHQpCisJCQlicmVhazsKKworCQkvLyBUaGUgVVJCIGlzIGNvbXBsZXRlZCwgY2hlY2sgdGhlIHJlc3VsdAorCQlpZiAocFdiMzVUeC0+RVA0Vk1fc3RhdHVzICE9IDApIHsKKwkJCXByaW50aygiVVJCIHN1Ym1pc3Npb24gZmFpbGVkXG4iKTsKKwkJCXBXYjM1VHgtPkVQNHZtX3N0YXRlID0gVk1fU1RPUDsKKwkJCWJyZWFrOyAvLyBFeGl0IHdoaWxlKEZBTFNFKTsKKwkJfQorCisJCU1kc19UeChBZGFwdGVyKTsKKwkJV2IzNVR4KHBId0RhdGEpOworCQlyZXR1cm47CisJfSB3aGlsZShGQUxTRSk7CisKKwlPU19BVE9NSUNfREVDKCBwSHdEYXRhLT5BZGFwdGVyLCAmcFdiMzVUeC0+VHhGaXJlQ291bnRlciApOworCXBXYjM1VHgtPkVQNHZtX3N0YXRlID0gVk1fU1RPUDsKK30KKwordm9pZCBXYjM1VHhfcmVzZXRfZGVzY3JpcHRvciggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJUFdCMzVUWCBwV2IzNVR4ID0gJnBId0RhdGEtPldiMzVUeDsKKworCXBXYjM1VHgtPlR4U2VuZEluZGV4ID0gMDsKKwlwV2IzNVR4LT50eF9oYWx0ID0gMDsKK30KKwordW5zaWduZWQgY2hhciBXYjM1VHhfaW5pdGlhbChwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVUWCBwV2IzNVR4ID0gJnBId0RhdGEtPldiMzVUeDsKKworCXBXYjM1VHgtPlR4NFVyYiA9IHdiX3VzYl9hbGxvY191cmIoMCk7CisJaWYgKCFwV2IzNVR4LT5UeDRVcmIpCisJCXJldHVybiBGQUxTRTsKKworCXBXYjM1VHgtPlR4MlVyYiA9IHdiX3VzYl9hbGxvY191cmIoMCk7CisJaWYgKCFwV2IzNVR4LT5UeDJVcmIpCisJeworCQl1c2JfZnJlZV91cmIoIHBXYjM1VHgtPlR4NFVyYiApOworCQlyZXR1cm4gRkFMU0U7CisJfQorCisJcmV0dXJuIFRSVUU7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIFdiMzVUeF9zdG9wKHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlQV0IzNVRYIHBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCisJLy8gVHJ5aW5nIHRvIGNhbmNlbGluZyB0aGUgVHJwIG9mIEVQMgorCWlmIChwV2IzNVR4LT5FUDJ2bV9zdGF0ZSA9PSBWTV9SVU5OSU5HKQorCQl1c2JfdW5saW5rX3VyYiggcFdiMzVUeC0+VHgyVXJiICk7IC8vIE9ubHkgdXNlIHVubGluaywgbGV0IFdiMzVUeF9kZXN0cm90IHRvIGZyZWUgdGhlbQorCSNpZmRlZiBfUEVfVFhfRFVNUF8KKwlXQkRFQlVHKCgiRVAyIFR4IHN0b3BcbiIpKTsKKwkjZW5kaWYKKworCS8vIFRyeWluZyB0byBjYW5jZWxpbmcgdGhlIElycCBvZiBFUDQKKwlpZiAocFdiMzVUeC0+RVA0dm1fc3RhdGUgPT0gVk1fUlVOTklORykKKwkJdXNiX3VubGlua191cmIoIHBXYjM1VHgtPlR4NFVyYiApOyAvLyBPbmx5IHVzZSB1bmxpbmssIGxldCBXYjM1VHhfZGVzdHJvdCB0byBmcmVlIHRoZW0KKwkjaWZkZWYgX1BFX1RYX0RVTVBfCisJV0JERUJVRygoIkVQNCBUeCBzdG9wXG4iKSk7CisJI2VuZGlmCit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIFdiMzVUeF9kZXN0cm95KHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlQV0IzNVRYIHBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCisJLy8gV2FpdCBmb3IgVk0gc3RvcAorCWRvIHsKKwkJT1NfU0xFRVAoMTAwMDApOyAgLy8gRGVsYXkgZm9yIHdhaXRpbmcgZnVuY3Rpb24gZW50ZXIgOTQwNjIzLjEuYQorCX0gd2hpbGUoIChwV2IzNVR4LT5FUDJ2bV9zdGF0ZSAhPSBWTV9TVE9QKSAmJiAocFdiMzVUeC0+RVA0dm1fc3RhdGUgIT0gVk1fU1RPUCkgKTsKKwlPU19TTEVFUCgxMDAwMCk7ICAvLyBEZWxheSBmb3Igd2FpdGluZyBmdW5jdGlvbiBlbnRlciA5NDA2MjMuMS5iCisKKwlpZiAocFdiMzVUeC0+VHg0VXJiKQorCQl1c2JfZnJlZV91cmIoIHBXYjM1VHgtPlR4NFVyYiApOworCisJaWYgKHBXYjM1VHgtPlR4MlVyYikKKwkJdXNiX2ZyZWVfdXJiKCBwV2IzNVR4LT5UeDJVcmIgKTsKKworCSNpZmRlZiBfUEVfVFhfRFVNUF8KKwlXQkRFQlVHKCgiV2IzNVR4X2Rlc3Ryb3kgT0tcbiIpKTsKKwkjZW5kaWYKK30KKwordm9pZCBXYjM1VHhfQ3VycmVudFRpbWUocGh3X2RhdGFfdCBwSHdEYXRhLCB1MzIgVGltZUNvdW50KQoreworCVBXQjM1VFggcFdiMzVUeCA9ICZwSHdEYXRhLT5XYjM1VHg7CisJdW5zaWduZWQgY2hhciBUcmlnZ2VyID0gRkFMU0U7CisKKwlpZiAocFdiMzVUeC0+VHhUaW1lciA+IFRpbWVDb3VudCkKKwkJVHJpZ2dlciA9IFRSVUU7CisJZWxzZSBpZiAoVGltZUNvdW50ID4gKHBXYjM1VHgtPlR4VGltZXIrNTAwKSkKKwkJVHJpZ2dlciA9IFRSVUU7CisKKwlpZiAoVHJpZ2dlcikgeworCQlwV2IzNVR4LT5UeFRpbWVyID0gVGltZUNvdW50OworCQlXYjM1VHhfRVAyVk1fc3RhcnQoIHBId0RhdGEgKTsKKwl9Cit9CisKK3ZvaWQgV2IzNVR4X0VQMlZNX3N0YXJ0KHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlQV0IzNVRYIHBXYjM1VHggPSAmcEh3RGF0YS0+V2IzNVR4OworCisJLy8gQWxsb3cgb25seSBvbmUgdGhyZWFkIHRvIHJ1biBpbnRvIGZ1bmN0aW9uCisJaWYgKE9TX0FUT01JQ19JTkMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVR4LT5UeFJlc3VsdENvdW50ICkgPT0gMSkgeworCQlwV2IzNVR4LT5FUDJ2bV9zdGF0ZSA9IFZNX1JVTk5JTkc7CisJCVdiMzVUeF9FUDJWTSggcEh3RGF0YSApOworCX0KKwllbHNlCisJCU9TX0FUT01JQ19ERUMoIHBId0RhdGEtPkFkYXB0ZXIsICZwV2IzNVR4LT5UeFJlc3VsdENvdW50ICk7Cit9CisKKwordm9pZCBXYjM1VHhfRVAyVk0ocGh3X2RhdGFfdCBwSHdEYXRhKQoreworCVBXQjM1VFggcFdiMzVUeCA9ICZwSHdEYXRhLT5XYjM1VHg7CisJc3RydWN0IHVyYiAqCXBVcmIgPSAoc3RydWN0IHVyYiAqKXBXYjM1VHgtPlR4MlVyYjsKKwlQVUxPTkcJcGx0bXAgPSAoUFVMT05HKXBXYjM1VHgtPkVQMl9idWY7CisJaW50CQlyZXR2OworCisJZG8geworCQlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgfHwgcEh3RGF0YS0+SHdTdG9wKQorCQkJYnJlYWs7CisKKwkJaWYgKHBXYjM1VHgtPnR4X2hhbHQpCisJCQlicmVhazsKKworCQkvLworCQkvLyBJc3N1aW5nIFVSQgorCQkvLworCQl1c2JfZmlsbF9pbnRfdXJiKCBwVXJiLCBwSHdEYXRhLT5XYlVzYi51ZGV2LCB1c2JfcmN2aW50cGlwZShwSHdEYXRhLT5XYlVzYi51ZGV2LDIpLAorCQkJCSAgcGx0bXAsIE1BWF9JTlRFUlJVUFRfTEVOR1RILCBXYjM1VHhfRVAyVk1fY29tcGxldGUsIHBId0RhdGEsIDMyKTsKKworCQlwV2IzNVR4LT5FUDJ2bV9zdGF0ZSA9IFZNX1JVTk5JTkc7CisJCXJldHYgPSB3Yl91c2Jfc3VibWl0X3VyYiggcFVyYiApOworCisJCWlmKHJldHYgPCAwKSB7CisJCQkjaWZkZWYgX1BFX1RYX0RVTVBfCisJCQlXQkRFQlVHKCgiRVAyIFR4IElycCBzZW5kaW5nIGVycm9yXG4iKSk7CisJCQkjZW5kaWYKKwkJCWJyZWFrOworCQl9CisKKwkJcmV0dXJuOworCisJfSB3aGlsZShGQUxTRSk7CisKKwlwV2IzNVR4LT5FUDJ2bV9zdGF0ZSA9IFZNX1NUT1A7CisJT1NfQVRPTUlDX0RFQyggcEh3RGF0YS0+QWRhcHRlciwgJnBXYjM1VHgtPlR4UmVzdWx0Q291bnQgKTsKK30KKworCit2b2lkIFdiMzVUeF9FUDJWTV9jb21wbGV0ZShzdHJ1Y3QgdXJiICogcFVyYikKK3sKKwlwaHdfZGF0YV90CXBId0RhdGEgPSBwVXJiLT5jb250ZXh0OworCVQwMl9ERVNDUklQVE9SCVQwMiwgVFNUQVRVUzsKKwlQQURBUFRFUglBZGFwdGVyID0gKFBBREFQVEVSKXBId0RhdGEtPkFkYXB0ZXI7CisJUFdCMzVUWAkJcFdiMzVUeCA9ICZwSHdEYXRhLT5XYjM1VHg7CisJUFVMT05HCQlwbHRtcCA9IChQVUxPTkcpcFdiMzVUeC0+RVAyX2J1ZjsKKwl1MzIJCWk7CisJdTE2CQlJbnRlcnJ1cHRJbkxlbmd0aDsKKworCisJLy8gVmFyaWFibGUgc2V0dGluZworCXBXYjM1VHgtPkVQMnZtX3N0YXRlID0gVk1fQ09NUExFVEVEOworCXBXYjM1VHgtPkVQMlZNX3N0YXR1cyA9IHBVcmItPnN0YXR1czsKKworCWRvIHsKKwkJLy8gRm9yIExpbnV4IDIuNC4gSW50ZXJydXB0IHdpbGwgYWx3YXlzIHRyaWdnZXIKKwkJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlIHx8IHBId0RhdGEtPkh3U3RvcCApIC8vIExldCBXYldsYW5IYWx0IHRvIGhhbmRsZSBzdXJwcmlzZSByZW1vdmUKKwkJCWJyZWFrOworCisJCWlmKCBwV2IzNVR4LT50eF9oYWx0ICkKKwkJCWJyZWFrOworCisJCS8vVGhlIFVyYiBpcyBjb21wbGV0ZWQsIGNoZWNrIHRoZSByZXN1bHQKKwkJaWYgKHBXYjM1VHgtPkVQMlZNX3N0YXR1cyAhPSAwKSB7CisJCQlXQkRFQlVHKCgiRVAyIElvQ29tcGxldGVSb3V0aW5lIHJldHVybiBlcnJvclxuIikpOworCQkJcFdiMzVUeC0+RVAydm1fc3RhdGU9IFZNX1NUT1A7CisJCQlicmVhazsgLy8gRXhpdCB3aGlsZShGQUxTRSk7CisJCX0KKworCQkvLyBVcGRhdGUgdGhlIFR4IHJlc3VsdAorCQlJbnRlcnJ1cHRJbkxlbmd0aCA9IHBVcmItPmFjdHVhbF9sZW5ndGg7CisJCS8vIE1vZGlmeSBmb3IgbWluaW11bSBtZW1vcnkgYWNjZXNzIGFuZCBEV09SRCBhbGlnbm1lbnQuCisJCVQwMi52YWx1ZSA9IGNwdV90b19sZTMyKHBsdG1wWzBdKSA+PiA4OyAvLyBbMzE6OF0gLT4gWzI0OjBdCisJCUludGVycnVwdEluTGVuZ3RoIC09IDE7Ly8gMjAwNTEyMjEuMS5jIE1vZGlmeSB0aGUgZm9sbG93IGZvciBtb3JlIHN0YWJsZQorCQlJbnRlcnJ1cHRJbkxlbmd0aCA+Pj0gMjsgLy8gSW50ZXJydXB0SW5MZW5ndGgvNAorCQlmb3IgKGk9MTsgaTw9SW50ZXJydXB0SW5MZW5ndGg7IGkrKykgeworCQkJVDAyLnZhbHVlIHw9ICgoY3B1X3RvX2xlMzIocGx0bXBbaV0pICYgMHhmZikgPDwgMjQpOworCisJCQlUU1RBVFVTLnZhbHVlID0gVDAyLnZhbHVlOyAgLy8yMDA2MTAwOSBhbnNvbidzIGVuZGlhbgorCQkJTWRzX1NlbmRDb21wbGV0ZSggQWRhcHRlciwgJlRTVEFUVVMgKTsKKwkJCVQwMi52YWx1ZSA9IGNwdV90b19sZTMyKHBsdG1wW2ldKSA+PiA4OworCQl9CisKKwkJcmV0dXJuOworCX0gd2hpbGUoRkFMU0UpOworCisJT1NfQVRPTUlDX0RFQyggcEh3RGF0YS0+QWRhcHRlciwgJnBXYjM1VHgtPlR4UmVzdWx0Q291bnQgKTsKKwlwV2IzNVR4LT5FUDJ2bV9zdGF0ZSA9IFZNX1NUT1A7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzV0eF9mLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1dHhfZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDVhODQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1dHhfZi5oCkBAIC0wLDAgKzEsMjAgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBJbnRlcmZhY2UgZnVuY3Rpb24gZGVjbGFyZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3Vuc2lnbmVkIGNoYXIgV2IzNVR4X2luaXRpYWwoCSBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgV2IzNVR4X2Rlc3Ryb3koICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3Vuc2lnbmVkIGNoYXIgV2IzNVR4X2dldF90eF9idWZmZXIoICBwaHdfZGF0YV90IHBId0RhdGEsICBQVUNIQVIgKnBCdWZmZXIgKTsKKwordm9pZCBXYjM1VHhfRVAyVk0oICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgV2IzNVR4X0VQMlZNX3N0YXJ0KCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIFdiMzVUeF9FUDJWTV9jb21wbGV0ZSggIFBVUkIgcHVyYiApOworCit2b2lkIFdiMzVUeF9zdGFydCggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZCBXYjM1VHhfc3RvcCggIHBod19kYXRhX3QgcEh3RGF0YSApOwordm9pZCBXYjM1VHgoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgV2IzNVR4X2NvbXBsZXRlKCAgUFVSQiBwdXJiICk7Cit2b2lkIFdiMzVUeF9yZXNldF9kZXNjcmlwdG9yKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisKK3ZvaWQgV2IzNVR4X0N1cnJlbnRUaW1lKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTMyIFRpbWVDb3VudCApOworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3diMzV0eF9zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1dHhfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNDMyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YjM1dHhfcy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBJUzg5QzM1IFR4IHJlbGF0ZWQgZGVmaW5pdGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgVFhfSU5URVJGQUNFCQkJMAkvLyBJbnRlcmZhY2UgMQorI2RlZmluZSBUWF9QSVBFCQkJCQkzCS8vIGVuZHBvaW50IDQKKyNkZWZpbmUgVFhfSU5URVJSVVBUCQkJMQkvLyBlbmRwb2ludCAyCisjZGVmaW5lIE1BWF9JTlRFUlJVUFRfTEVOR1RICTY0CS8vIEl0IG11c3QgYmUgNjQgZm9yIEVQMiBoYXJkd2FyZQorCisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEludGVybmFsIHZhcmlhYmxlIGZvciBtb2R1bGUKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwordHlwZWRlZiBzdHJ1Y3QgX1dCMzVUWAoreworCS8vIEZvciBUeCBidWZmZXIKKwl1OAlUeEJ1ZmZlclsgTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSIF1bIE1BWF9VU0JfVFhfQlVGRkVSIF07CisKKwkvLyBGb3IgSW50ZXJydXB0IHBpcGUKKwl1OAlFUDJfYnVmW01BWF9JTlRFUlJVUFRfTEVOR1RIXTsKKworCU9TX0FUT01JQwlUeFJlc3VsdENvdW50Oy8vIEZvciB0aHJlYWQgY29udHJvbCBvZiBFUDIgOTMxMTMwLjQubQorCU9TX0FUT01JQwlUeEZpcmVDb3VudGVyOy8vIEZvciB0aHJlYWQgY29udHJvbCBvZiBFUDQgOTMxMTMwLjQubgorCXUzMgkJCUJ5dGVUcmFuc2ZlcjsKKworCXUzMgkgICAgVHhTZW5kSW5kZXg7Ly8gVGhlIG5leHQgaW5kZXggb2YgTWRzIGFycmF5IHRvIGJlIHNlbnQKKwl1MzIJICAgIEVQMnZtX3N0YXRlOyAvLyBmb3IgRVAydm0gc3RhdGUKKwl1MzIJICAgIEVQNHZtX3N0YXRlOyAvLyBmb3IgRVA0dm0gc3RhdGUKKwl1MzIJICAgIHR4X2hhbHQ7IC8vIFN0b3BwaW5nIFZNCisKKwlzdHJ1Y3QgdXJiICoJCQkJVHg0VXJiOworCXN0cnVjdCB1cmIgKgkJCQlUeDJVcmI7CisKKwlpbnQJCUVQMlZNX3N0YXR1czsKKwlpbnQJCUVQNFZNX3N0YXR1czsKKworCXUzMglUeEZpbGxDb3VudDsgLy8gMjAwNjA5MjgKKwl1MzIJVHhUaW1lcjsgLy8gMjAwNjA5MjggQWRkIGlmIHNlbmRpbmcgcGFja2V0IG5vdCBncmVhdCB0aGFuIDEzCisKK30gV0IzNVRYLCAqUFdCMzVUWDsKKworCisKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9saW51eC93YnVzYi5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2J1c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmFkNWZiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2J1c2IuYwpAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IFBhdmVsIE1hY2hlayA8cGF2ZWxAc3VzZS5jej4KKyAqCisgKiBEaXN0cmlidXRlIHVuZGVyIEdQTHYyLgorICovCisjaW5jbHVkZSAic3lzZGVmLmgiCisjaW5jbHVkZSA8bmV0L21hYzgwMjExLmg+CisKKworTU9EVUxFX0FVVEhPUiggRFJJVkVSX0FVVEhPUiApOworTU9EVUxFX0RFU0NSSVBUSU9OKCBEUklWRVJfREVTQyApOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX1ZFUlNJT04oIjAuMSIpOworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyB2ZW5kb3IgSUQgYW5kIHByb2R1Y3QgSUQgY2FuIGludG8gaGVyZSBmb3Igb3RoZXJzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIElkX1RhYmxlW10gPQoreworICB7VVNCX0RFVklDRSggMHgwNDE2LCAweDAwMzUgKX0sCisgIHtVU0JfREVWSUNFKCAweDE4RTgsIDB4NjIwMSApfSwKKyAge1VTQl9ERVZJQ0UoIDB4MThFOCwgMHg2MjA2ICl9LAorICB7VVNCX0RFVklDRSggMHgxOEU4LCAweDYyMTcgKX0sCisgIHtVU0JfREVWSUNFKCAweDE4RTgsIDB4NjIzMCApfSwKKyAge1VTQl9ERVZJQ0UoIDB4MThFOCwgMHg2MjMzICl9LAorICB7VVNCX0RFVklDRSggMHgxMTMxLCAweDIwMzUgKX0sCisgIHsgIH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBJZF9UYWJsZSk7CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB3YjM1X2RyaXZlciA9IHsKKwkubmFtZSA9CQkidzM1dW5kIiwKKwkucHJvYmUgPQl3YjM1X3Byb2JlLAorCS5kaXNjb25uZWN0ID0gd2IzNV9kaXNjb25uZWN0LAorCS5pZF90YWJsZSA9IElkX1RhYmxlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZSB3YnNvZnRfcmF0ZXNbXSA9IHsKKwl7IC5iaXRyYXRlID0gMTAsIC5mbGFncyA9IElFRUU4MDIxMV9SQVRFX1NIT1JUX1BSRUFNQkxFIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIHdic29mdF9jaGFubmVsc1tdID0geworCXsgLmNlbnRlcl9mcmVxID0gMjQxMn0sCit9OworCitpbnQgd2Jzb2Z0X2VuYWJsZWQ7CitzdHJ1Y3QgaWVlZTgwMjExX2h3ICpteV9kZXY7CitQQURBUFRFUiBteV9hZGFwdGVyOworCitzdGF0aWMgaW50IHdic29mdF9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwKKwkJCQkgc3RydWN0IGllZWU4MDIxMV9pZl9pbml0X2NvbmYgKmNvbmYpCit7CisJcHJpbnRrKCJ3YnNvZnRfYWRkIGludGVyZmFjZSBjYWxsZWRcbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB3YnNvZnRfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2lmX2luaXRfY29uZiAqY29uZikKK3sKKwlwcmludGsoIndic29mdF9yZW1vdmUgaW50ZXJmYWNlIGNhbGxlZFxuIik7Cit9CisKK3N0YXRpYyBpbnQgd2Jzb2Z0X25vcCh2b2lkKQoreworCXByaW50aygid2Jzb2Z0X25vcCBjYWxsZWRcbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB3YnNvZnRfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCisJCQkJICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncywKKwkJCQkgICAgIHVuc2lnbmVkIGludCAqdG90YWxfZmxhZ3MsCisJCQkJICAgICBpbnQgbWNfY291bnQsIHN0cnVjdCBkZXZfbWNfbGlzdCAqbWNsaXN0KQoreworCXVuc2lnbmVkIGludCBiaXRfbnIsIG5ld19mbGFnczsKKwl1MzIgbWNfZmlsdGVyWzJdOworCWludCBpOworCisJbmV3X2ZsYWdzID0gMDsKKworCWlmICgqdG90YWxfZmxhZ3MgJiBGSUZfUFJPTUlTQ19JTl9CU1MpIHsKKwkJbmV3X2ZsYWdzIHw9IEZJRl9QUk9NSVNDX0lOX0JTUzsKKwkJbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gfjA7CisJfSBlbHNlIGlmICgoKnRvdGFsX2ZsYWdzICYgRklGX0FMTE1VTFRJKSB8fCAobWNfY291bnQgPiAzMikpIHsKKwkJbmV3X2ZsYWdzIHw9IEZJRl9BTExNVUxUSTsKKwkJbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gfjA7CisJfSBlbHNlIHsKKwkJbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IG1jX2NvdW50OyBpKyspIHsKKwkJCWlmICghbWNsaXN0KQorCQkJCWJyZWFrOworCQkJcHJpbnRrKCJTaG91bGQgY2FsbCBldGhlcl9jcmMgaGVyZVxuIik7CisJCQkvL2JpdF9uciA9IGV0aGVyX2NyYyhFVEhfQUxFTiwgbWNsaXN0LT5kbWlfYWRkcikgPj4gMjY7CisJCQliaXRfbnIgPSAwOworCisJCQliaXRfbnIgJj0gMHgzRjsKKwkJCW1jX2ZpbHRlcltiaXRfbnIgPj4gNV0gfD0gMSA8PCAoYml0X25yICYgMzEpOworCQkJbWNsaXN0ID0gbWNsaXN0LT5uZXh0OworCQl9CisJfQorCisJZGV2LT5mbGFncyAmPSB+SUVFRTgwMjExX0hXX1JYX0lOQ0xVREVTX0ZDUzsKKworCSp0b3RhbF9mbGFncyA9IG5ld19mbGFnczsKK30KKworc3RhdGljIGludCB3YnNvZnRfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wpCit7CisJY2hhciAqYnVmZmVyID0ga21hbGxvYyhza2ItPmxlbiwgR0ZQX0FUT01JQyk7CisJcHJpbnRrKCJTZW5kaW5nIGZyYW1lICVkIGJ5dGVzXG4iLCBza2ItPmxlbik7CisJbWVtY3B5KGJ1ZmZlciwgc2tiLT5kYXRhLCBza2ItPmxlbik7CisJaWYgKDEgPT0gTUxNRVNlbmRGcmFtZShteV9hZGFwdGVyLCBidWZmZXIsIHNrYi0+bGVuLCBGUkFNRV9UWVBFXzgwMl8xMV9NQU5BR0VNRU5UKSkKKwkJcHJpbnRrKCJmcmFtZSBzZW50IG9rICglZCBieXRlcyk/XG4iLCBza2ItPmxlbik7CisJcmV0dXJuIE5FVERFVl9UWF9PSzsKK30KKworCitzdGF0aWMgaW50IHdic29mdF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJd2Jzb2Z0X2VuYWJsZWQgPSAxOworCXByaW50aygid2Jzb2Z0X3N0YXJ0IGNhbGxlZFxuIik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2Jzb2Z0X2NvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfY29uZiAqY29uZikKK3sKKwlDaGFuSW5mbyBjaDsKKwlwcmludGsoIndic29mdF9jb25maWcgY2FsbGVkXG4iKTsKKworCWNoLmJhbmQgPSAxOworCWNoLkNoYW5ObyA9IDE7CS8qIFNob3VsZCB1c2UgY2hhbm5lbF9udW0sIG9yIHNvbWV0aGluZywgYXMgdGhhdCBpcyBhbHJlYWR5IHByZS10cmFuc2xhdGVkICovCisKKworCWhhbF9zZXRfY3VycmVudF9jaGFubmVsKCZteV9hZGFwdGVyLT5zSHdEYXRhLCBjaCk7CisJaGFsX3NldF9iZWFjb25fcGVyaW9kKCZteV9hZGFwdGVyLT5zSHdEYXRhLCBjb25mLT5iZWFjb25faW50KTsKKy8vCWhhbF9zZXRfY2FwX2luZm8oJm15X2FkYXB0ZXItPnNId0RhdGEsID8/ICk7CisvLyBoYWxfc2V0X3NzaWQocGh3X2RhdGFfdCBwSHdEYXRhLCAgUFVDSEFSIHBzc2lkLCAgdTggc3NpZF9sZW4pOyA/PworCWhhbF9zZXRfYWNjZXB0X2Jyb2FkY2FzdCgmbXlfYWRhcHRlci0+c0h3RGF0YSwgMSk7CisJaGFsX3NldF9hY2NlcHRfcHJvbWlzY3VvdXMoJm15X2FkYXB0ZXItPnNId0RhdGEsICAxKTsKKwloYWxfc2V0X2FjY2VwdF9tdWx0aWNhc3QoJm15X2FkYXB0ZXItPnNId0RhdGEsICAxKTsKKwloYWxfc2V0X2FjY2VwdF9iZWFjb24oJm15X2FkYXB0ZXItPnNId0RhdGEsICAxKTsKKwloYWxfc2V0X3JhZGlvX21vZGUoJm15X2FkYXB0ZXItPnNId0RhdGEsICAwKTsKKwkvL2hhbF9zZXRfYW50ZW5uYV9udW1iZXIoICBwaHdfZGF0YV90IHBId0RhdGEsIHU4IG51bWJlciApCisJLy9oYWxfc2V0X3JmX3Bvd2VyKHBod19kYXRhX3QgcEh3RGF0YSwgdTggUG93ZXJJbmRleCkKKworCisvLwloYWxfc3RhcnRfYnNzKCZteV9hZGFwdGVyLT5zSHdEYXRhLCBXTEFOX0JTU1RZUEVfSU5GUkFTVFJVQ1RVUkUpOwk/PworCisvL3ZvaWQgaGFsX3NldF9yYXRlcyhwaHdfZGF0YV90IHBId0RhdGEsIFBVQ0hBUiBwYnNzX3JhdGVzLAorLy8JCSAgIHU4IGxlbmd0aCwgdW5zaWduZWQgY2hhciBiYXNpY19yYXRlX3NldCkKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdic29mdF9jb25maWdfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwKKwkJCQkgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKKwkJCQkgICAgc3RydWN0IGllZWU4MDIxMV9pZl9jb25mICpjb25mKQoreworCXByaW50aygid2Jzb2Z0X2NvbmZpZ19pbnRlcmZhY2UgY2FsbGVkXG4iKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHU2NCB3YnNvZnRfZ2V0X3RzZihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJcHJpbnRrKCJ3YnNvZnRfZ2V0X3RzZiBjYWxsZWRcbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgd2Jzb2Z0X29wcyA9IHsKKwkudHgJCQk9IHdic29mdF90eCwKKwkuc3RhcnQJCQk9IHdic29mdF9zdGFydCwJCS8qIFN0YXJ0IGNhbiBiZSBwcmV0dHkgbXVjaCBlbXB0eSBhcyB3ZSBkbyBXYldMYW5Jbml0aWFsaXplKCkgZHVyaW5nIHByb2JlPyAqLworCS5zdG9wCQkJPSB3YnNvZnRfbm9wLAorCS5hZGRfaW50ZXJmYWNlCQk9IHdic29mdF9hZGRfaW50ZXJmYWNlLAorCS5yZW1vdmVfaW50ZXJmYWNlCT0gd2Jzb2Z0X3JlbW92ZV9pbnRlcmZhY2UsCisJLmNvbmZpZwkJCT0gd2Jzb2Z0X2NvbmZpZywKKwkuY29uZmlnX2ludGVyZmFjZQk9IHdic29mdF9jb25maWdfaW50ZXJmYWNlLAorCS5jb25maWd1cmVfZmlsdGVyCT0gd2Jzb2Z0X2NvbmZpZ3VyZV9maWx0ZXIsCisJLmdldF9zdGF0cwkJPSB3YnNvZnRfbm9wLAorCS5nZXRfdHhfc3RhdHMJCT0gd2Jzb2Z0X25vcCwKKwkuZ2V0X3RzZgkJPSB3YnNvZnRfZ2V0X3RzZiwKKy8vIGNvbmZfdHg6IGhhbF9zZXRfY3dtaW4oKS9oYWxfc2V0X2N3bWF4OworfTsKKworc3RydWN0IHdic29mdF9wcml2IHsKK307CisKKworaW50IF9faW5pdCB3YjM1X2luaXQodm9pZCkKK3sKKwlwcmludGsoIlt3MzV1bmRdZHJpdmVyIGluaXRcbiIpOworCXJldHVybiB1c2JfcmVnaXN0ZXIoJndiMzVfZHJpdmVyKTsKK30KKwordm9pZCBfX2V4aXQgd2IzNV9leGl0KHZvaWQpCit7CisJcHJpbnRrKCJbdzM1dW5kXWRyaXZlciBleGl0XG4iKTsKKwl1c2JfZGVyZWdpc3RlciggJndiMzVfZHJpdmVyICk7Cit9CisKK21vZHVsZV9pbml0KHdiMzVfaW5pdCk7Cittb2R1bGVfZXhpdCh3YjM1X2V4aXQpOworCisvLyBVc2Iga2VybmVsIHN1YnN5c3RlbSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGEgbmV3IGRldmljZSBpcyBwbHVnZ2VkIGludG8uCitpbnQgd2IzNV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkX3RhYmxlKQoreworCVBBREFQVEVSCUFkYXB0ZXI7CisJUFdCTElOVVgJcFdiTGludXg7CisJUFdCVVNCCQlwV2JVc2I7CisgICAgICAgIHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmludGVyZmFjZTsKKwlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50OworCWludAlpLCByZXQgPSAtMTsKKwl1MzIJbHRtcDsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7CisKKwl1c2JfZ2V0X2Rldih1ZGV2KTsKKworCXByaW50aygiW3czNXVuZF13YjM1X3Byb2JlIC0+XG4iKTsKKworCWRvIHsKKwkJZm9yIChpPTA7IGk8KHNpemVvZihJZF9UYWJsZSkvc2l6ZW9mKHN0cnVjdCB1c2JfZGV2aWNlX2lkKSk7IGkrKyApIHsKKwkJCWlmICgodWRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciA9PSBJZF9UYWJsZVtpXS5pZFZlbmRvcikgJiYKKwkJCQkodWRldi0+ZGVzY3JpcHRvci5pZFByb2R1Y3QgPT0gSWRfVGFibGVbaV0uaWRQcm9kdWN0KSkgeworCQkJCXByaW50aygiW3czNXVuZF1Gb3VuZCBzdXBwb3J0ZWQgaGFyZHdhcmVcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICgoaSA9PSAoc2l6ZW9mKElkX1RhYmxlKS9zaXplb2Yoc3RydWN0IHVzYl9kZXZpY2VfaWQpKSkpIHsKKwkJCSNpZmRlZiBfUEVfVVNCX0lOSV9EVU1QXworCQkJV0JERUJVRygoIlt3MzV1bmRdIFRoaXMgaXMgbm90IHRoZSBvbmUgd2UgYXJlIGludGVyZXN0ZWQgYWJvdXRcbiIpKTsKKwkJCSNlbmRpZgorCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQkvLyAyMDA2MDYzMC4yIENoZWNrIHRoZSBkZXZpY2UgaWYgaXQgYWxyZWFkeSBiZSBvcGVuZWQKKwkJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSggdWRldiwgMCApLAorCQkJCSAgICAgIDB4MDEsIFVTQl9UWVBFX1ZFTkRPUnxVU0JfUkVDSVBfREVWSUNFfFVTQl9ESVJfSU4sCisJCQkJICAgICAgMHgwLCAweDQwMCwgJmx0bXAsIDQsIEhaKjEwMCApOworCQlpZiggcmV0IDwgMCApCisJCQlicmVhazsKKworCQlsdG1wID0gY3B1X3RvX2xlMzIobHRtcCk7CisJCWlmIChsdG1wKSAgLy8gSXMgYWxyZWFkeSBpbml0aWFsaXplZD8KKwkJCWJyZWFrOworCisKKwkJQWRhcHRlciA9IGt6YWxsb2Moc2l6ZW9mKEFEQVBURVIpLCBHRlBfS0VSTkVMKTsKKworCQlteV9hZGFwdGVyID0gQWRhcHRlcjsKKwkJcFdiTGludXggPSAmQWRhcHRlci0+V2JMaW51eDsKKwkJcFdiVXNiID0gJkFkYXB0ZXItPnNId0RhdGEuV2JVc2I7CisJCXBXYlVzYi0+dWRldiA9IHVkZXY7CisKKwkgICAgICAgIGludGVyZmFjZSA9IGludGYtPmN1cl9hbHRzZXR0aW5nOworCSAgICAgICAgZW5kcG9pbnQgPSAmaW50ZXJmYWNlLT5lbmRwb2ludFswXS5kZXNjOworCisJCWlmIChlbmRwb2ludFsyXS53TWF4UGFja2V0U2l6ZSA9PSA1MTIpIHsKKwkJCXByaW50aygiW3czNXVuZF0gV29ya2luZyBvbiBVU0IgMi4wXG4iKTsKKwkJCXBXYlVzYi0+SXNVc2IyMCA9IDE7CisJCX0KKworCQlpZiAoIVdiV0xhbkluaXRpYWxpemUoQWRhcHRlcikpIHsKKwkJCXByaW50aygiW3czNXVuZF1XYldMYW5Jbml0aWFsaXplIGZhaWxcbiIpOworCQkJYnJlYWs7CisJCX0KKworCQl7CisJCQlzdHJ1Y3Qgd2Jzb2Z0X3ByaXYgKnByaXY7CisJCQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXY7CisJCQlpbnQgcmVzOworCisJCQlkZXYgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKCpwcml2KSwgJndic29mdF9vcHMpOworCisJCQlpZiAoIWRldikgeworCQkJCXByaW50aygidzM1dW5kOiBpZWVlODAyMTEgYWxsb2MgZmFpbGVkXG4iICk7CisJCQkJQlVHKCk7CisJCQl9CisKKwkJCW15X2RldiA9IGRldjsKKworCQkJU0VUX0lFRUU4MDIxMV9ERVYoZGV2LCAmdWRldi0+ZGV2KTsKKwkJCXsKKwkJCQlwaHdfZGF0YV90IHBId0RhdGEgPSAmQWRhcHRlci0+c0h3RGF0YTsKKwkJCQl1bnNpZ25lZCBjaGFyCQlkZXZfYWRkcltNQVhfQUREUl9MRU5dOworCQkJCWhhbF9nZXRfcGVybWFuZW50X2FkZHJlc3MocEh3RGF0YSwgZGV2X2FkZHIpOworCQkJCVNFVF9JRUVFODAyMTFfUEVSTV9BRERSKGRldiwgZGV2X2FkZHIpOworCQkJfQorCisKKwkJCWRldi0+ZXh0cmFfdHhfaGVhZHJvb20gPSAxMjsJLyogRklYTUUgKi8KKwkJCWRldi0+ZmxhZ3MgPSAwOworCisJCQlkZXYtPmNoYW5uZWxfY2hhbmdlX3RpbWUgPSAxMDAwOworLy8JCQlkZXYtPm1heF9yc3NpID0gMTAwOworCisJCQlkZXYtPnF1ZXVlcyA9IDE7CisKKwkJCXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGJhbmQ7CisKKwkJCWJhbmQuY2hhbm5lbHMgPSB3YnNvZnRfY2hhbm5lbHM7CisJCQliYW5kLm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKHdic29mdF9jaGFubmVscyk7CisJCQliYW5kLmJpdHJhdGVzID0gd2Jzb2Z0X3JhdGVzOworCQkJYmFuZC5uX2JpdHJhdGVzID0gQVJSQVlfU0laRSh3YnNvZnRfcmF0ZXMpOworCisJCQlkZXYtPndpcGh5LT5iYW5kc1tJRUVFODAyMTFfQkFORF8yR0haXSA9ICZiYW5kOworI2lmIDAKKwkJCXdic29mdF9tb2Rlc1swXS5udW1fY2hhbm5lbHMgPSAxOworCQkJd2Jzb2Z0X21vZGVzWzBdLmNoYW5uZWxzID0gd2Jzb2Z0X2NoYW5uZWxzOworCQkJd2Jzb2Z0X21vZGVzWzBdLm1vZGUgPSBNT0RFX0lFRUU4MDIxMUI7CisJCQl3YnNvZnRfbW9kZXNbMF0ubnVtX3JhdGVzID0gQVJSQVlfU0laRSh3YnNvZnRfcmF0ZXMpOworCQkJd2Jzb2Z0X21vZGVzWzBdLnJhdGVzID0gd2Jzb2Z0X3JhdGVzOworCisJCQlyZXMgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHdtb2RlKGRldiwgJndic29mdF9tb2Rlc1swXSk7CisJCQlCVUdfT04ocmVzKTsKKyNlbmRpZgorCisJCQlyZXMgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoZGV2KTsKKwkJCUJVR19PTihyZXMpOworCQl9CisKKwkJdXNiX3NldF9pbnRmZGF0YSggaW50ZiwgQWRhcHRlciApOworCisJCXByaW50aygiW3czNXVuZF0gX3Byb2JlIE9LXG4iKTsKKwkJcmV0dXJuIDA7CisKKwl9IHdoaWxlKEZBTFNFKTsKKworCXJldHVybiAtRU5PTUVNOworfQorCit2b2lkIHBhY2tldF9jYW1lKGNoYXIgKnBSeEJ1ZmZlckFkZHJlc3MsIGludCBQYWNrZXRTaXplKQoreworCXN0cnVjdCBza19idWZmICpza2I7CisJc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgcnhfc3RhdHVzID0gezB9OworCisJaWYgKCF3YnNvZnRfZW5hYmxlZCkKKwkJcmV0dXJuOworCisJc2tiID0gZGV2X2FsbG9jX3NrYihQYWNrZXRTaXplKTsKKwlpZiAoIXNrYikgeworCQlwcmludGsoIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBwYWNrZXQsIEZJWE1FXG4iKTsKKwkJcmV0dXJuOworCX0KKworCW1lbWNweShza2JfcHV0KHNrYiwgUGFja2V0U2l6ZSksCisJICAgICAgIHBSeEJ1ZmZlckFkZHJlc3MsCisJICAgICAgIFBhY2tldFNpemUpOworCisvKgorCXJ4X3N0YXR1cy5yYXRlID0gMTA7CisJcnhfc3RhdHVzLmNoYW5uZWwgPSAxOworCXJ4X3N0YXR1cy5mcmVxID0gMTIzNDU7CisJcnhfc3RhdHVzLnBoeW1vZGUgPSBNT0RFX0lFRUU4MDIxMUI7CisqLworCisJaWVlZTgwMjExX3J4X2lycXNhZmUobXlfZGV2LCBza2IsICZyeF9zdGF0dXMpOworfQorCit1bnNpZ25lZCBjaGFyCitXYlVzYl9pbml0aWFsKHBod19kYXRhX3QgcEh3RGF0YSkKK3sKKwlyZXR1cm4gMTsKK30KKworCit2b2lkCitXYlVzYl9kZXN0cm95KHBod19kYXRhX3QgcEh3RGF0YSkKK3sKK30KKworaW50IHdiMzVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQoreworCVBBREFQVEVSIEFkYXB0ZXIgPSAoUEFEQVBURVIpbmV0ZGV2LT5wcml2OworCXBod19kYXRhX3QgcEh3RGF0YSA9ICZBZGFwdGVyLT5zSHdEYXRhOworCisgICAgICAgIG5ldGlmX3N0YXJ0X3F1ZXVlKG5ldGRldik7CisKKwkvL1RPRE8gOiBwdXQgaGVyZSB0ZW1wb3JhcmlseQorCWhhbF9zZXRfYWNjZXB0X2Jyb2FkY2FzdChwSHdEYXRhLCAxKTsgLy8gb3BlbiBhY2NlcHQgYnJvYWRjYXN0CisKKwlyZXR1cm4gMDsKK30KKworaW50IHdiMzVfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKK3sKKwluZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgd2IzNV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQoreworCVBXQkxJTlVYIHBXYkxpbnV4OworCVBBREFQVEVSIEFkYXB0ZXIgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CisKKyAgICAgICAgcFdiTGludXggPSAmQWRhcHRlci0+V2JMaW51eDsKKworCS8vIENhcmQgcmVtb3ZlCisJV2JXbGFuSGFsdChBZGFwdGVyKTsKKworfQorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3didXNiX2YuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3didXNiX2YuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWUyOWUxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2J1c2JfZi5oCkBAIC0wLDAgKzEsMzQgQEAKKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworLy8gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgV2luYm9uZCBFbGVjdHJvbmljIENvcnBvcmF0aW9uCisvLworLy8gIE1vZHVsZSBOYW1lOgorLy8gICAgd2J1c2JfZi5oCisvLworLy8gIEFic3RyYWN0OgorLy8gICAgTGludXggZHJpdmVyLgorLy8KKy8vICBBdXRob3I6CisvLworLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworCitpbnQgd2IzNV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOworaW50IHdiMzVfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7Cit1bnNpZ25lZCBjaGFyIFdiVXNiX2luaXRpYWwocGh3X2RhdGFfdCBwSHdEYXRhKTsKK3ZvaWQgV2JVc2JfZGVzdHJveShwaHdfZGF0YV90IHBId0RhdGEpOwordW5zaWduZWQgY2hhciBXYldMYW5Jbml0aWFsaXplKFBBREFQVEVSIEFkYXB0ZXIpOworI2RlZmluZQlXYlVzYl9TdG9wKCBfQSApCisKK2ludCB3YjM1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZF90YWJsZSk7Cit2b2lkIHdiMzVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisKKworI2RlZmluZSB3Yl91c2Jfc3VibWl0X3VyYihfQSkgdXNiX3N1Ym1pdF91cmIoX0EsIEdGUF9BVE9NSUMpCisjZGVmaW5lIHdiX3VzYl9hbGxvY191cmIoX0EpIHVzYl9hbGxvY191cmIoX0EsIEdGUF9BVE9NSUMpCisKKyNkZWZpbmUgV2JVc2JfQ2hlY2tGb3JIYW5nKCBfUCApCisjZGVmaW5lIFdiVXNiX0RldGVjdFN0YXJ0KCBfUCwgX0kgKQorCisKKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3didXNiX3MuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL2xpbnV4L3didXNiX3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWMxZDUzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbGludXgvd2J1c2Jfcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworLy8gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgV2luYm9uZCBFbGVjdHJvbmljIENvcnBvcmF0aW9uCisvLworLy8gIE1vZHVsZSBOYW1lOgorLy8gICAgd2J1c2Jfcy5oCisvLworLy8gIEFic3RyYWN0OgorLy8gICAgTGludXggZHJpdmVyLgorLy8KKy8vICBBdXRob3I6CisvLworLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworCisjZGVmaW5lIE9TX1NMRUVQKCBfTVQgKQl7IHNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7IFwKKwkJCSAgc2NoZWR1bGVfdGltZW91dCggX01UKkhaLzEwMDAwMDAgKTsgfQorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgUldfQ09OVEVYVCAtLQorLy8KKy8vICBVc2VkIHRvIHRyYWNrIGRyaXZlci1nZW5lcmF0ZWQgaW8gaXJwcworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3R5cGVkZWYgc3RydWN0IF9SV19DT05URVhUCit7CisJdm9pZCoJCQlwSHdEYXRhOworCVBVUkIJCQlwVXJiOworCXZvaWQqCQkJcENhbGxCYWNrRnVuY3Rpb25QYXJhbWV0ZXI7Cit9IFJXX0NPTlRFWFQsICpQUldfQ09OVEVYVDsKKworCisKKworI2RlZmluZSBEUklWRVJfQVVUSE9SICJPcmlnaW5hbCBieTogSmVmZiBMZWU8WVlfTGVlQGlzc2MuY29tLnR3PiBBZGFwdGVkIHRvIDIuNi54IGJ5IENvc3RhbnRpbm8gTGVhbmRybyAoUnhhcnQgRGVza3RvcCkgPGxlX2Nvc3RhbnRpbm9AcGl4YXJ0YXJnZW50aW5hLmNvbS5hcj4iCisjZGVmaW5lIERSSVZFUl9ERVNDICAgIklTODlDMzUgODAyLjExYmcgV0xBTiBVU0IgRHJpdmVyIgorCisKKwordHlwZWRlZiBzdHJ1Y3QgX1dCVVNCIHsKKwl1MzIJSXNVc2IyMDsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjsKKwl1MzIJRGV0ZWN0Q291bnQ7Cit9IFdCVVNCLCAqUFdCVVNCOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbG9jYWxwYXJhLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9sb2NhbHBhcmEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjhjZjkxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbG9jYWxwYXJhLmgKQEAgLTAsMCArMSwyNzUgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTG9jYWxQYXJhLmggLQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvL0RlZmluZSB0aGUgbG9jYWwgYWJpbGl0eQorCisjZGVmaW5lIExPQ0FMX0RFRkFVTFRfQkVBQ09OX1BFUklPRAkJCTEwMAkJLy9tcworI2RlZmluZSBMT0NBTF9ERUZBVUxUX0FUSU1fV0lORE9XCQkJMAorI2RlZmluZSBMT0NBTF9ERUZBVUxUX0VSUF9DQVBBQklMSVRZCQkweDA0MzEJLy8weDAwMDE6CUVTUworCQkJCQkJCQkJCQkJCS8vMHgwMDEwOglQcml2YWN5CisJCQkJCQkJCQkJCQkJLy8weDAwMjA6CXNob3J0IHByZWFtYmxlCisJCQkJCQkJCQkJCQkJLy8weDA0MDA6CXNob3J0IHNsb3QgdGltZQorI2RlZmluZSBMT0NBTF9ERUZBVUxUX0xJU1RFTl9JTlRFUlZBTAkJNQorCisvLyNkZWZpbmUgTE9DQUxfREVGQVVMVF8yNF9DSEFOTkVMX05VTQkJMTEJCS8vIGNoYW5uZWwgMS4uMTEKKyNkZWZpbmUgTE9DQUxfREVGQVVMVF8yNF9DSEFOTkVMX05VTQkJMTMJCS8vIGNoYW5uZWwgMS4uMTMKKyNkZWZpbmUgTE9DQUxfREVGQVVMVF81X0NIQU5ORUxfTlVNCQkJOAkJLy8gY2hhbm5lbCAzNi4uNjQKKworI2RlZmluZSBMT0NBTF9VU0FfMjRfQ0hBTk5FTF9OVU0JCQkxMQorI2RlZmluZSBMT0NBTF9VU0FfNV9DSEFOTkVMX05VTQkJCQkxMgorI2RlZmluZSBMT0NBTF9FVVJPUEVfMjRfQ0hBTk5FTF9OVU0JCQkxMworI2RlZmluZSBMT0NBTF9FVVJPUEVfNV9DSEFOTkVMX05VTQkJCTE5CisjZGVmaW5lIExPQ0FMX0pBUEFOXzI0X0NIQU5ORUxfTlVNCQkJMTQKKyNkZWZpbmUgTE9DQUxfSkFQQU5fNV9DSEFOTkVMX05VTQkJCTExCisjZGVmaW5lIExPQ0FMX1VOS05PV05fMjRfQ0hBTk5FTF9OVU0JCTE0CisjZGVmaW5lIExPQ0FMX1VOS05PV05fNV9DSEFOTkVMX05VTQkJCTM0CS8vbm90IGluY2x1ZGUgMTY1CisKKworI2RlZmluZSBwc0xPQ0FMCQkJKCYoQWRhcHRlci0+c0xvY2FsUGFyYSkpCisKKyNkZWZpbmUgTU9ERV84MDJfMTFfQkcJCQkwCisjZGVmaW5lIE1PREVfODAyXzExX0EJCQkxCisjZGVmaW5lIE1PREVfODAyXzExX0FCRwkJCTIKKyNkZWZpbmUgTU9ERV84MDJfMTFfQkdfSUJTUwkJMworI2RlZmluZSBNT0RFXzgwMl8xMV9CCQkJNAorI2RlZmluZSBNT0RFX0FVVE8JCQkJMjU1CisKKyNkZWZpbmUgQkFORF9UWVBFX0RTU1MJCQkwCisjZGVmaW5lIEJBTkRfVFlQRV9PRkRNXzI0CQkxCisjZGVmaW5lIEJBTkRfVFlQRV9PRkRNXzUJCTIKKworLy9yZWZlciBCaXRtYXAyUmF0ZVZhbHVlIHRhYmxlCisjZGVmaW5lIExPQ0FMX0FMTF9TVVBQT1JURURfUkFURVNfQklUTUFQCQkweDEzMGMxYTY2CS8vdGhlIGJpdG1hcCB2YWx1ZSBvZiBhbGwgdGhlIEgvVyBzdXBwb3J0ZWQgcmF0ZXMKKwkJCQkJCQkJCQkJCQkJCS8vMSwgMiwgNS41LCAxMSwgNiwgOSwgMTIsIDE4LCAyNCwgMzYsIDQ4LCA1NAorI2RlZmluZSBMT0NBTF9PRkRNX1NVUFBPUlRFRF9SQVRFU19CSVRNQVAJCTB4MTMwYzEyNDAJLy90aGUgYml0bWFwIHZhbHVlIG9mIGFsbCB0aGUgSC9XIHN1cHBvcnRlZCByYXRlcworCQkJCQkJCQkJCQkJCQkJLy9leGNlcHQgdG8gbm9uLU9GRE0gcmF0ZXMKKwkJCQkJCQkJCQkJCQkJCS8vNiwgOSwgMTIsIDE4LCAyNCwgMzYsIDQ4LCA1NAorCisjZGVmaW5lIExPQ0FMXzExQl9TVVBQT1JURURfUkFURV9CSVRNQVAJCQkweDgyNgorI2RlZmluZSBMT0NBTF8xMUJfQkFTSUNfUkFURV9CSVRNQVAJCQkJMHg4MjYKKyNkZWZpbmUgTE9DQUxfMTFCX09QRVJBVElPTl9SQVRFX0JJVE1BUAkJCTB4ODI2CisjZGVmaW5lIExPQ0FMXzExR19CQVNJQ19SQVRFX0JJVE1BUAkJCQkweDgyNgkJLy8xLCAyLCA1LjUsIDExCisjZGVmaW5lIExPQ0FMXzExR19PUEVSQVRJT05fUkFURV9CSVRNQVAJCQkweDEzMGMxMjQwCS8vNiwgOSwgMTIsIDE4LCAyNCwgMzYsIDQ4LCA1NAorI2RlZmluZSBMT0NBTF8xMUFfQkFTSUNfUkFURV9CSVRNQVAJCQkJMHgwMTAwMTA0MAkvLzYsIDEyLCAyNAorI2RlZmluZSBMT0NBTF8xMUFfT1BFUkFUSU9OX1JBVEVfQklUTUFQCQkJMHgxMjBjMDIwMAkvLzksIDE4LCAzNiwgNDgsIDU0CisKKworCisjZGVmaW5lIFBXUl9BQ1RJVkUJCTAKKyNkZWZpbmUgUFdSX1NBVkUJCTEKKyNkZWZpbmUgUFdSX1RYX0lETEVfQ1lDTEUJCQk2CisKKy8vYlByZWFtYmxlTW9kZSBhbmQgYlNsb3RUaW1lTW9kZQorI2RlZmluZSBBVVRPX01PREUJCQkwCisjZGVmaW5lIExPTkdfTU9ERQkJCTEKKworLy9SZWdpb24gZGVmaW5pdGlvbgorI2RlZmluZSBSRUdJT05fQVVUTwkJCTB4ZmYKKyNkZWZpbmUgUkVHSU9OX1VOS05PV04JCTAKKyNkZWZpbmUgUkVHSU9OX0VVUk9QRQkJMQkvL0VUU0kKKyNkZWZpbmUgUkVHSU9OX0pBUEFOCQkyCS8vTUtLCisjZGVmaW5lIFJFR0lPTl9VU0EJCQkzCS8vRkNDCisjZGVmaW5lCVJFR0lPTl9GUkFOQ0UJCTQJLy9GUkFOQ0UKKyNkZWZpbmUgUkVHSU9OX1NQQUlOCQk1CS8vU1BBSU4KKyNkZWZpbmUgUkVHSU9OX0lTUkFFTAkJNgkvL0lTUkFFTAorLy8jZGVmaW5lIFJFR0lPTl9DQU5BREEJCTcJLy9JQworCisjZGVmaW5lIE1BWF9CU1NfREVTQ1JJUFRfRUxFTUVOVAkJMzIKKyNkZWZpbmUgTUFYX1BNS0lEX0NhbmRpZGF0ZUxpc3QgICAgICAgICAxNgorCisvL0hpZ2ggYnl0ZSA6IEV2ZW50IG51bWJlciwgIGxvdyBieXRlIDogcmVhc29uCisvL0V2ZW50IGRlZmluaXRpb24KKy8vLS0gU01FL01MTUUgZXZlbnQKKyNkZWZpbmUgRVZFTlRfUkNWX0RFQVVUSAkJCQkJMHgwMTAwCisjZGVmaW5lIEVWRU5UX0pPSU5fRkFJTAkJCQkJCTB4MDIwMAorI2RlZmluZSBFVkVOVF9BVVRIX0ZBSUwJCQkJCQkweDAzMDAKKyNkZWZpbmUgRVZFTlRfQVNTT0NfRkFJTAkJCQkJMHgwNDAwCisjZGVmaW5lIEVWRU5UX0xPU1RfU0lHTkFMCQkJCQkweDA1MDAKKyNkZWZpbmUgRVZFTlRfQlNTX0RFU0NSSVBUX0xBQ0sJCQkJMHgwNjAwCisjZGVmaW5lIEVWRU5UX0NPVU5URVJNRUFTVVJFCQkJCTB4MDcwMAorI2RlZmluZSBFVkVOVF9KT0lOX0ZJTFRFUgkJCQkJMHgwODAwCisvLy0tIFRYL1JYIGV2ZW50CisjZGVmaW5lIEVWRU5UX1JYX0JVRkZfVU5BVkFJTEFCTEUJCQkweDQxMDAKKworI2RlZmluZSBFVkVOVF9DT05ORUNUCQkJCQkJMHg4MTAwCisjZGVmaW5lIEVWRU5UX0RJU0NPTk5FQ1QJCQkJCTB4ODIwMAorI2RlZmluZSBFVkVOVF9TQ0FOX1JFUQkJCQkJCTB4ODMwMAorCisvL1JlYXNvbiBvZiBFdmVudAorI2RlZmluZSBFVkVOVF9SRUFTT05fRklMVEVSX0JBU0lDX1JBVEUJCTB4MDAwMQorI2RlZmluZSBFVkVOVF9SRUFTT05fRklMVEVSX1BSSVZBQ1kJCQkweDAwMDIKKyNkZWZpbmUgRVZFTlRfUkVBU09OX0ZJTFRFUl9BVVRIX01PREUJCTB4MDAwMworI2RlZmluZSBFVkVOVF9SRUFTT05fVElNRU9VVAkJCQkweDAwZmYKKworLy8gMjAwNjExMDggV1BTIElFIGJ1ZmZlcgorI2RlZmluZSBNQVhfSUVfQVBQRU5EX1NJWkUJCQkJCTI1NiArIDQgLy8gRHVlIHRvIFtFIGlkXVtMZW5ndGhdW09VSV1bRGF0YV0gbWF5IDI1NyBieXRlcworCit0eXBlZGVmIHN0cnVjdCBfRVZFTlRMT0cKK3sKKwl1MTYJCUNvdW50OwkJCS8vVG90YWwgY291bnQgZnJvbSBzdGFydAorCXUxNgkJaW5kZXg7CQkJLy9CdWZmZXIgaW5kZXgsIDAgfiA2MworCXUzMgkJRXZlbnRWYWx1ZVs2NF07CS8vQllURSAzfjIgOiBjb3VudCwgQllURSAxIDogRXZlbnQsIEJZVEUgMCA6IHJlYXNvbgorfSBFdmVudF9Mb2csICpwRXZlbnRfTG9nOworCit0eXBlZGVmIHN0cnVjdCBfQ2hhbkluZm8KK3sKKwl1OAkJYmFuZDsKKwl1OAkJQ2hhbk5vOworfSBDaGFuSW5mbywgKnBDaGFuSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgX0NIQU5fTElTVAoreworCXUxNgkJCQlDb3VudDsKKwlDaGFuSW5mbwkJQ2hhbm5lbFs1MF07IC8vIDEwMEIKK30gQ0hBTl9MSVNULCAqcHNDSEFOX0xJU1Q7CisKK3R5cGVkZWYgc3RydWN0IF9SYWRpb09mZgoreworCXU4CQkJYm9Id1JhZGlvT2ZmOworCXU4CQkJYm9Td1JhZGlvT2ZmOworfSBSYWRpb09mZiwgKnBzUmFkaW9PZmY7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit0eXBlZGVmIHN0cnVjdCBMT0NBTF9QQVJBCit7CisJdTgJCQlQZXJtYW5lbnRBZGRyZXNzWyBNQUNfQUREUl9MRU5HVEggKyAyIF07IAkvLyByZWFkIGZyb20gRVBST00sIG1hbnVmYWN0dXJlIHNldCBmb3IgZWFjaCBOZXRDYXJkCisgICAgdTggICAgCQlUaGlzTWFjQWRkcmVzc1sgTUFDX0FERFJfTEVOR1RIICsgMiBdOwkJCS8vIHRoZSBkcml2ZXIgd2lsbCB1c2UgYWN0dWFsbHkuCisKKwl1MzIJCQlNVFVzaXplOwkJCQkvLyBJbmQgdG8gVXBsYXllciwgTWF4IHRyYW5zbWlzc2lvbiB1bml0IHNpemUKKworCXU4CQkJcmVnaW9uX0lORjsJLy9yZWdpb24gc2V0dGluZyBmcm9tIElORgorCXU4CQkJcmVnaW9uOwkJLy9yZWFsIHJlZ2lvbiBzZXR0aW5nIG9mIHRoZSBkZXZpY2UKKwl1OAkJCVJlc2VydmVkXzFbMl07CisKKyAgICAvLy8vIHBvd2VyLXNhdmUgdmFyaWFibGVzCisgICAgdTggIAkJICAJaVBvd2VyU2F2ZU1vZGU7ICAgICAvLyAwIGluZGljYXRlcyBpdCBpcyBvbiwgMSBpbmRpY2F0ZXMgaXQgaXMgb2ZmCisJdTgJCQlTaHV0RG93bmVkOworCXU4CQkJQVRJTW1vZGU7CisJdTgJCQlFeGNsdWRlVW5lbmNyeXB0ZWQ7CisKKwl1MTYJCQlDaGVja0NvdW50Rm9yUFM7CS8vVW5pdCBpbWUgY291bnQgZm9yIHRoZSBkZWNpc2lvbiB0byBlbnRlciBQUyBtb2RlCisJdTgJCQlib0hhc1R4QWN0aXZpdHk7CS8vdHggYWN0aXZpdHkgaGFzIG9jY3VycmVkCisJdTgJCQlib01hY1BzVmFsaWQ7CQkvL1Bvd2VyIHNhdmUgbW9kZSBvYnRhaW5lZCBmcm9tIEgvVyBpcyB2YWxpZCBvciBub3QKKworCS8vLy8gUmF0ZQorCXU4CQkJVHhSYXRlTW9kZTsJCQkJLy8gSW5pdGlhbCwgaW5wdXQgZnJvbSBSZWdpc3RyeSwgbWF5IGJlIHVwZGF0ZWQgYnkgR1VJCisJCQkJCQkJCQkJCS8vVHggUmF0ZSBNb2RlOiBhdXRvKERUTyBvbiksIG1heCwgMU0sIDJNLCAuLgorCXU4CQkJQ3VycmVudFR4UmF0ZTsJCQkvLyBUaGUgY3VycmVudCBUeCByYXRlCisJdTgJCQlDdXJyZW50VHhSYXRlRm9yTW5nOwkvLyBUaGUgY3VycmVudCBUeCByYXRlIGZvciBtYW5hZ2VtZW50IGZyYW1lcworCQkJCQkJCQkJCS8vIEl0IHdpbGwgYmUgZGVjaWRlZCBiZWZvcmUgY29ubmVjdGlvbiBzdWNjZWVkcy4KKwl1OAkJCUN1cnJlbnRUeEZhbGxiYWNrUmF0ZTsKKworCS8vZm9yIFJhdGUgaGFuZGxlcgorCXU4CQkJQlJhdGVTZXRbMzJdOwkJCS8vYmFzaWMgcmF0ZSBzZXQKKwl1OAkJCVNSYXRlU2V0WzMyXTsJCQkvL3N1cHBvcnQgcmF0ZSBzZXQKKworCXU4CQkJTnVtT2ZCUmF0ZTsKKwl1OAkJCU51bU9mU1JhdGU7CisJdTgJCQlOdW1PZkRzc3NSYXRlSW5TUmF0ZTsJLy9udW1iZXIgb2YgRFNTUyByYXRlcyBpbiBzdXBwb3J0ZWQgcmF0ZSBzZXQKKwl1OAkJCXJlc2VydmVkMTsKKworCXUzMgkJCWR3QmFzaWNSYXRlQml0bWFwOwkJLy9iaXQgbWFwIG9mIGJhc2ljIHJhdGVzCisJdTMyCQkJZHdTdXBwb3J0UmF0ZUJpdG1hcDsJLy9iaXQgbWFwIG9mIGFsbCBzdXBwb3J0IHJhdGVzIGluY2x1ZGluZworCQkJCQkJCQkJCS8vYmFzaWMgYW5kIG9wZXJhdGlvbmFsIHJhdGVzCisKKwkvLy8vRm9yIFNNRS9NTE1FIGhhbmRsZXIKKwl1MTYJCQl3T2xkU1RBaW5kZXg7CQkJLy8gdmFsaWQgd2hlbiBib0hhbmRvdmVyPVRSVUUsIHN0b3JlIG9sZCBjb25uZWN0ZWQgU1RBIGluZGV4CisJdTE2CQkJd0Nvbm5lY3RlZFNUQWluZGV4OwkJLy8gSW5kZXggb2YgcGVlcmx5IGNvbm5lY3RlZCBBUCBvciBJQlNTIGluCisJCQkJCQkJCQkJLy8gdGhlIGRlc2NyaXB0aW9uc2V0LgorICAgIHUxNgkJCUFzc29jaWF0aW9uX0lEOyAgICAgCS8vIFRoZSBBc3NvY2lhdGlvbiBJRCBpbiB0aGUgKFJlKUFzc29jaWF0aW9uCisgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgICAJLy8gUmVzcG9uc2UgZnJhbWUuCisgICAgdTE2CQkJTGlzdGVuSW50ZXJ2YWw7ICAgICAJLy8gVGhlIGxpc3RlbiBpbnRlcnZhbCB3aGVuIFNNRSBpbnZva2luZyBNTE1FXworICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgCS8vIChSZSlBc3NvY2lhdGVfUmVxdWVzdCgpLgorCisJUmFkaW9PZmYJCVJhZGlvT2ZmU3RhdHVzOworCXU4CQkJUmVzZXJ2ZWQwWzJdOworCisJdTgJCQlib01zUmFkaW9PZmY7CQkJLy8gTmRpcyBkZW1hbmRzIHRvIGJlIHRydWUgd2hlbiBzZXQgRGlzYXNzb2MuIE9JRCBhbmQgYmUgZmFsc2Ugd2hlbiBzZXQgU1NJRCBPSUQuCisJdTgJCQlib0FudGVubmFEaXZlcnNpdHk7CQkvL1RSVUUvT04gb3IgRkFMU0UvT0ZGCisJdTgJCQliQW50ZW5uYU5vOwkJCQkvL3doaWNoIGFudGVubmEKKwl1OAkJCWJDb25uZWN0RmxhZzsJCQkvL3RoZSBjb25uZWN0IHN0YXR1cyBmbGFnIGZvciByb2FtaW5nIHRhc2sKKworCXU4CQkJUm9hbVN0YXR1czsKKwl1OAkJCXJlc2VydmVkN1szXTsKKworCUNoYW5JbmZvCUN1cnJlbnRDaGFuOwkJCS8vQ3VycmVudCBjaGFubmVsIG5vLiBhbmQgY2hhbm5lbCBiYW5kLiBJdCBtYXkgYmUgY2hhbmdlZCBieSBzY2FubmluZy4KKwl1OAkJCWJvSGFuZG92ZXI7CQkJCS8vIFJvYW1pbmcsIEhuYWRvdmVyIHRvIG90aGVyIEFQLgorCXU4CQkJYm9DQ0FidXN5OworCisJdTE2CQkJQ1dNYXg7CQkJCQkvLyBJdCBtYXkgbm90IGJlIHRoZSByZWFsIHZhbHVlIHRoYXQgSC9XIHVzZWQKKwl1OAkJCUNXTWluOwkJCQkJLy8gMjU1OiBzZXQgYWNjb3JkaW5nIHRvIDgwMi4xMSBzcGVjLgorCXU4CQkJcmVzZXJ2ZWQyOworCisJLy8xMUc6CisJdTgJCQliTWFjT3BlcmF0aW9uTW9kZTsJCS8vIG9wZXJhdGlvbiBpbiA4MDIuMTFiIG9yIDgwMi4xMWcKKwl1OAkJCWJTbG90VGltZU1vZGU7CQkJLy9BVVRPLCBzMzIKKwl1OAkJCWJQcmVhbWJsZU1vZGU7CQkJLy9BVVRPLCBzMzIKKwl1OAkJCWJvTm9uRVJQcHJlc2VudDsKKworCXU4CQkJYm9Qcm90ZWN0TWVjaGFuaXNtOwkvLyBIL1cgd2lsbCB0YWtlIHRoZSBuZWNlc3NhcnkgYWN0aW9uIGJhc2VkIG9uIHRoaXMgdmFyaWFibGUKKwl1OAkJCWJvU2hvcnRQcmVhbWJsZTsJLy8gSC9XIHdpbGwgdGFrZSB0aGUgbmVjZXNzYXJ5IGFjdGlvbiBiYXNlZCBvbiB0aGlzIHZhcmlhYmxlCisJdTgJCQlib1Nob3J0U2xvdFRpbWU7CS8vIEgvVyB3aWxsIHRha2UgdGhlIG5lY2Vzc2FyeSBhY3Rpb24gYmFzZWQgb24gdGhpcyB2YXJpYWJsZQorCXU4CQkJcmVzZXJ2ZWRfMzsKKworCXUzMiAgICAgICAJUlNOX0lFX0JpdG1hcDsJCS8vYWRkZWQgYnkgV1MKKwl1MzIgICAgICAJCVJTTl9PVUlfVHlwZTsJCS8vYWRkZWQgYnkgV1MKKworCS8vRm9yIHRoZSBCU1NJRAorCXU4CQkJSHdCc3NpZFtNQUNfQUREUl9MRU5HVEggKyAyXTsKKwl1MzIJCQlId0Jzc2lkVmFsaWQ7CisKKwkvL0ZvciBzY2FuIGxpc3QKKwl1OAkJCUJzc0xpc3RDb3VudDsJCQkJCQkJLy9Ub3RhbCBjb3VudCBvZiB2YWxpZCBkZXNjcmlwdG9yIGluZGV4ZXMKKwl1OAkJCWJvUmVjZWl2ZVVuY29ycmVjdEluZm87CS8vaW1wb3J0YW50IHNldHRpbmdzIGluIGJlYWNvbi9wcm9iZSByZXNwLiBoYXZlIGJlZW4gY2hhbmdlZAorCXU4CQkJTm9PZkpvaW5lckluSWJzczsKKwl1OAkJCXJlc2VydmVkXzQ7CisKKwl1OAkJCUJzc0xpc3RJbmRleFsgKE1BWF9CU1NfREVTQ1JJUFRfRUxFTUVOVCszKSAmIH4weDAzIF07CS8vU3RvcmUgdGhlIHZhbGlkIGRlc2NyaXB0b3IgaW5kZXhlcyBvYnRhaW5lZCBmcm9tIHNjYW5uaW5ncworCXU4CQkJSm9pbmVySW5JYnNzWyAoTUFYX0JTU19ERVNDUklQVF9FTEVNRU5UKzMpICYgfjB4MDMgXTsJLy9zYXZlIHRoZSBCc3NEZXNjcmlwdG9yIGluZGV4IGluIHRoaXMKKwkJCQkJCQkJCQkJCQkJLy9JQlNTLiBUaGUgaW5kZXggMCBpcyBsb2NhbCBkZXNjcmlwdG9yCisJCQkJCQkJCQkJCQkJCS8vKHBzTE9DQUwtPndDb25uZWN0ZWRTVEFpbmRleCkuCisJCQkJCQkJCQkJCQkJCS8vSWYgQ09OTkVDVEVEIDogTm9PZkpvaW5lckluSWJzcyA+PTIKKwkJCQkJCQkJCQkJCQkJLy8JCWVsc2UgICA6IE5vT2ZKb2luZXJJbklic3MgPD0xCisKKwkvLy8vIEdlbmVyYWwgU3RhdGlzdGljcywgY291bnQgYXQgUnhfaGFuZGxlciBvciBUeF9jYWxsYmFjayBpbnRlcnJ1cHQgaGFuZGxlcgorICAgIHU2NCAJR1NfWE1JVF9PSzsJCQkJLy8gR29vZCBGcmFtZXMgVHJhbnNtaXR0ZWQKKyAgICB1NjQgCUdTX1JDVl9PSzsJCQkJLy8gR29vZCBGcmFtZXMgUmVjZWl2ZWQKKwl1MzIJCUdTX1JDVl9FUlJPUjsJCQkvLyBGcmFtZXMgcmVjZWl2ZWQgd2l0aCBjcmMgZXJyb3IKKwl1MzIJCUdTX1hNSVRfRVJST1I7CQkJLy8gQmFkIEZyYW1lcyBUcmFuc21pdHRlZAorCXUzMgkJR1NfUkNWX05PX0JVRkZFUjsJCS8vIFJlY2VpdmUgQnVmZmVyIHVuZGVycnVuCisJdTMyCQlHU19YTUlUX09ORV9DT0xMSVNJT047CS8vIG9uZSBjb2xsaXNpb24KKwl1MzIJCUdTX1hNSVRfTU9SRV9DT0xMSVNJT05TOy8vIG1vcmUgY29sbGlzaW9ucworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU3RhdGlzdGljcyAobm8gbWF0dGVyIHdoZXRoZXIgaXQgaGFkIGRvbmUgc3VjY2Vzc2Z1bGx5KSAtd2tjaGVuCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgdTMyCQkgICAJX051bVJ4TVNEVTsKKyAgICB1MzIJICAgCQlfTnVtVHhNU0RVOworICAgIHUzMgkgICAJCV9kb3QxMVdFUEV4Y2x1ZGVkQ291bnQ7CisgICAgdTMyCSAgIAkJX2RvdDExV0VQVW5kZWNyeXB0YWJsZUNvdW50OworICAgIHUzMgkgICAJCV9kb3QxMUZyYW1lRHVwbGljYXRlQ291bnQ7CisKKwlDaGFuSW5mbwlJYnNzQ2hhblNldHRpbmc7CS8vIDJCLiBTdGFydCBJQlNTIENoYW5uZWwgc2V0dGluZyBieSByZWdpc3RyeSBvciBXV1UuCisJdTgJCXJlc2VydmVkXzVbMl07CQkvL0l0IG1heSBub3QgYmUgdXNlZCBhZnRlciBjb25zaWRlcmluZyBSRiB0eXBlLAorCQkJCQkJCQkJLy9yZWdpb24gYW5kIG1vZHVsYXRpb24gdHlwZS4KKworCUNIQU5fTElTVAlzU3VwcG9ydENoYW5MaXN0OwkvLyA4NkIuIEl0IHdpbGwgYmUgb2J0YWluZWQgYWNjb3JkaW5nIHRvIFJGIHR5cGUgYW5kIHJlZ2lvbgorCXU4CQlyZXNlcnZlZF82WzJdOwkJLy90d28gdmFyaWFibGVzIGFyZSBmb3Igd2VwIGtleSBlcnJvciBkZXRlY3Rpb24gYWRkZWQgYnkgd3MgMDIvMDIvMDQKKworICAgIHUzMgkgICAgICBiV2VwS2V5RXJyb3I7CisgICAgdTMyICAgICAgICAgYlRvU2VsZlBhY2tldFJlY2VpdmVkOworICAgIHUzMiAgICAgICAgIFdlcEtleURldGVjdFRpbWVyQ291bnQ7CisKKwlFdmVudF9Mb2cJRXZlbnRMb2c7CisKKwl1MTYJCVNpZ25hbExvc3RUaDsKKwl1MTYJCVNpZ25hbFJvYW1UaDsKKworCS8vIDIwMDYxMTA4IFdQUyBJRSBBcHBlbmQKKwl1OAkJSUVfQXBwZW5kX2RhdGFbTUFYX0lFX0FQUEVORF9TSVpFXTsKKwl1MTYJCUlFX0FwcGVuZF9zaXplOworCXUxNgkJcmVzZXJ2ZWRfNzsKKworfSBXQl9MT0NBTERFU0NSSVBULCAqUFdCX0xPQ0FMREVTQ1JJUFQ7CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWFjX3N0cnVjdHVyZXMuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21hY19zdHJ1Y3R1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxZDJjYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21hY19zdHJ1Y3R1cmVzLmgKQEAgLTAsMCArMSw2NzAgQEAKKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworLy8gTUFDX1N0cnVjdHVyZXMuaAorLy8KKy8vIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcyB1c2VkIGJ5IFNXLU1BQy4KKy8vCisvLyBSZXZpc2lvbiBIaXN0b3kKKy8vPT09PT09PT09PT09PT09PT0KKy8vIDAuMSAgICAgIDIwMDIgICAgICAgIFVOMDAKKy8vIDAuMiAgICAgIDIwMDIxMDA0ICAgIFBENDMgQ0NMaXU2CisvLyAgICAgICAgICAyMDAyMTAxOCAgICBQRDQzIENDTGl1NgorLy8gICAgICAgICAgICAgICAgICAgICAgQWRkIGVudW1fVHhSYXRlIHR5cGUKKy8vICAgICAgICAgICAgICAgICAgICAgIE1vZGlmeSBlbnVtX1NUQVN0YXRlIHR5cGUKKy8vIDAuMyAgICAgIDIwMDIxMDIzICAgIFBFMjMgQ1lMaXUgdXBkYXRlIE1BQyBzZXNzaW9uIHN0cnVjdAorLy8gICAgICAgICAgMjAwMjExMDgKKy8vICAgICAgICAgIDIwMDIxMTIyICAgIFBENDMgQXVzdGluCisvLyAgICAgICAgICAgICAgICAgICAgICBEZWxldGVkIHNvbWUgdW51c2VkLgorLy8gICAgICAgICAgMjAwMjExMjkgICAgUEQ0MyBBdXN0aW4KKy8vCQkJMjAwMzA2MTcJaW5jcmVhc2UgdGhlIDgwMi4xMWcgZGVmaW5pdGlvbgorLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKKyNpZm5kZWYgX01BQ19TdHJ1Y3R1cmVzX0hfCisjZGVmaW5lIF9NQUNfU3RydWN0dXJlc19IXworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBTb21lIG1pc2NlbGxhbmVvdXMgZGVmaW5pdGlvbnMKKy8vLS0tLS0KKyNkZWZpbmUgTUFYX0NIQU5ORUxTICAgICAgICAgICAgICAgICAgICAgICAgMzAKKyNkZWZpbmUgTUFDX0FERFJfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBNQVhfV0VQX0tFWV9TSVpFICAgICAgICAgICAgICAgICAgICAxNiAgLy8gMTI4IGJpdHMKKyNkZWZpbmUJTUFYXzgwMl8xMV9GUkFHTUVOVF9OVU1CRVIJCTEwIC8vIEJ5IHNwZWMKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gODAyLjExIEZyYW1lIGRlZmluZQorLy8tLS0tLQorI2RlZmluZSBNQVNLX1BST1RPQ09MX1ZFUlNJT05fVFlQRQkweDBGCisjZGVmaW5lIE1BU0tfRlJBR01FTlRfTlVNQkVSCQkweDAwMEYKKyNkZWZpbmUgU0VRVUVOQ0VfTlVNQkVSX1NISUZUCQk0CisjZGVmaW5lIERJRkZFUl8xMV9UT18zCQkJCTE4CisjZGVmaW5lIERPVF8xMV9NQUNfSEVBREVSX1NJWkUJCTI0CisjZGVmaW5lIERPVF8xMV9TTkFQX1NJWkUJCQk2CisjZGVmaW5lIERPVF8xMV9EVVJBVElPTl9PRkZTRVQJCTIKKyNkZWZpbmUgRE9UXzExX1NFUVVFTkNFX09GRlNFVAkJMjIgLy9TZXF1ZW5jZSBjb250cm9sIG9mZnNldAorI2RlZmluZSBET1RfMTFfVFlQRV9PRkZTRVQJCQkzMCAvL1RoZSBzdGFydCBvZmZzZXQgb2YgODAyLjExIEZyYW1lLy8KKyNkZWZpbmUgRE9UXzExX0RBVEFfT0ZGU0VUICAgICAgICAgIDI0CisjZGVmaW5lIERPVF8xMV9EQV9PRkZTRVQJCQk0CisjZGVmaW5lIERPVF8zX1RZUEVfQVJQCQkJCTB4ODBGMworI2RlZmluZSBET1RfM19UWVBFX0lQWAkJCQkweDgxMzcKKyNkZWZpbmUgRE9UXzNfVFlQRV9PRkZTRVQJCQkxMgorCisKKyNkZWZpbmUgRVRIRVJORVRfSEVBREVSX1NJWkUJCQkxNAorI2RlZmluZSBNQVhfRVRIRVJORVRfUEFDS0VUX1NJWkUJCTE1MTQKKworCisvLy0tLS0tICBtYW5hZ2VtZW50IDogVHlwZSBvZiBCaXRzICgyLCAzKSBhbmQgU3VidHlwZSBvZiBCaXRzICg0LCA1LCA2LCA3KQorI2RlZmluZSBNQUNfU1VCVFlQRV9NTkdNTlRfQVNTT0NfUkVRVUVTVCAgICAweDAwCisjZGVmaW5lIE1BQ19TVUJUWVBFX01OR01OVF9BU1NPQ19SRVNQT05TRSAgIDB4MTAKKyNkZWZpbmUgTUFDX1NVQlRZUEVfTU5HTU5UX1JFQVNTT0NfUkVRVUVTVCAgMHgyMAorI2RlZmluZSBNQUNfU1VCVFlQRV9NTkdNTlRfUkVBU1NPQ19SRVNQT05TRSAweDMwCisjZGVmaW5lIE1BQ19TVUJUWVBFX01OR01OVF9QUk9CRV9SRVFVRVNUICAgIDB4NDAKKyNkZWZpbmUgTUFDX1NVQlRZUEVfTU5HTU5UX1BST0JFX1JFU1BPTlNFICAgMHg1MAorI2RlZmluZSBNQUNfU1VCVFlQRV9NTkdNTlRfQkVBQ09OICAgICAgICAgICAweDgwCisjZGVmaW5lIE1BQ19TVUJUWVBFX01OR01OVF9BVElNICAgICAgICAgICAgIDB4OTAKKyNkZWZpbmUgTUFDX1NVQlRZUEVfTU5HTU5UX0RJU0FTU09DSUFUSU9OICAgMHhBMAorI2RlZmluZSBNQUNfU1VCVFlQRV9NTkdNTlRfQVVUSEVOVElDQVRJT04gICAweEIwCisjZGVmaW5lIE1BQ19TVUJUWVBFX01OR01OVF9ERUFVVEhFTlRJQ0FUSU9OIDB4QzAKKworLy8tLS0tLSAgY29udHJvbCA6IFR5cGUgb2YgQml0cyAoMiwgMykgYW5kIFN1YnR5cGUgb2YgQml0cyAoNCwgNSwgNiwgNykKKyNkZWZpbmUgTUFDX1NVQlRZUEVfQ09OVFJPTF9QU1BPTEwgICAgICAgICAgMHhBNAorI2RlZmluZSBNQUNfU1VCVFlQRV9DT05UUk9MX1JUUyAgICAgICAgICAgICAweEI0CisjZGVmaW5lIE1BQ19TVUJUWVBFX0NPTlRST0xfQ1RTICAgICAgICAgICAgIDB4QzQKKyNkZWZpbmUgTUFDX1NVQlRZUEVfQ09OVFJPTF9BQ0sgICAgICAgICAgICAgMHhENAorI2RlZmluZSBNQUNfU1VCVFlQRV9DT05UUk9MX0NGRU5EICAgICAgICAgICAweEU0CisjZGVmaW5lIE1BQ19TVUJUWVBFX0NPTlRST0xfQ0ZFTkRfQ0ZBQ0sgICAgIDB4RjQKKworLy8tLS0tLSAgZGF0YSA6IFR5cGUgb2YgQml0cyAoMiwgMykgYW5kIFN1YnR5cGUgb2YgQml0cyAoNCwgNSwgNiwgNykKKyNkZWZpbmUgTUFDX1NVQlRZUEVfREFUQSAgICAgICAgICAgICAgICAgICAgMHgwOAorI2RlZmluZSBNQUNfU1VCVFlQRV9EQVRBX0NGQUNLICAgICAgICAgICAgICAweDE4CisjZGVmaW5lIE1BQ19TVUJUWVBFX0RBVEFfQ0ZQT0xMICAgICAgICAgICAgIDB4MjgKKyNkZWZpbmUgTUFDX1NVQlRZUEVfREFUQV9DRkFDS19DRlBPTEwgICAgICAgMHgzOAorI2RlZmluZSBNQUNfU1VCVFlQRV9EQVRBX05VTEwgICAgICAgICAgICAgICAweDQ4CisjZGVmaW5lIE1BQ19TVUJUWVBFX0RBVEFfQ0ZBQ0tfTlVMTCAgICAgICAgIDB4NTgKKyNkZWZpbmUgTUFDX1NVQlRZUEVfREFUQV9DRlBPTExfTlVMTCAgICAgICAgMHg2OAorI2RlZmluZSBNQUNfU1VCVFlQRV9EQVRBX0NGQUNLX0NGUE9MTF9OVUxMICAweDc4CisKKy8vLS0tLS0gIEZyYW1lIFR5cGUgb2YgQml0cyAoMiwgMykKKyNkZWZpbmUgTUFDX1RZUEVfTUFOQUdFTUVOVCAgICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBNQUNfVFlQRV9DT05UUk9MICAgICAgICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIE1BQ19UWVBFX0RBVEEgICAgICAgICAgICAgICAgICAgICAgIDB4MDgKKworLy8tLS0tLSBkZWZpbml0aW9ucyBmb3IgTWFuYWdlbWVudCBGcmFtZSBFbGVtZW50IElEICgxIEJZVEUpCisjZGVmaW5lIEVMRU1FTlRfSURfU1NJRCAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgRUxFTUVOVF9JRF9TVVBQT1JURURfUkFURVMgICAgICAgICAgMQorI2RlZmluZSBFTEVNRU5UX0lEX0ZIX1BBUkFNRVRFUl9TRVQgICAgICAgICAyCisjZGVmaW5lIEVMRU1FTlRfSURfRFNfUEFSQU1FVEVSX1NFVCAgICAgICAgIDMKKyNkZWZpbmUgRUxFTUVOVF9JRF9DRl9QQVJBTUVURVJfU0VUICAgICAgICAgNAorI2RlZmluZSBFTEVNRU5UX0lEX1RJTSAgICAgICAgICAgICAgICAgICAgICA1CisjZGVmaW5lIEVMRU1FTlRfSURfSUJTU19QQVJBTUVURVJfU0VUICAgICAgIDYKKy8vIDd+MTUgcmVzZXJ2ZXJkCisjZGVmaW5lIEVMRU1FTlRfSURfQ0hBTExFTkdFX1RFWFQgICAgICAgICAgIDE2CisvLyAxN34zMSByZXNlcnZlZCBmb3IgY2hhbGxlbmdlIHRleHQgZXh0ZW5zaW9uCisvLyAzMn4yNTUgcmVzZXJ2ZWQKKy8vLS0gIDExRyAgLS0KKyNkZWZpbmUgRUxFTUVOVF9JRF9FUlBfSU5GT1JNQVRJT04JCQk0MgorI2RlZmluZSBFTEVNRU5UX0lEX0VYVEVOREVEX1NVUFBPUlRFRF9SQVRFUyA1MAorCisvLy0tICBXUEEgIC0tCisKKyNkZWZpbmUgRUxFTUVOVF9JRF9SU05fV1BBCQkJCQkyMjEKKyNpZmRlZiBfV1BBMl8KKyNkZWZpbmUgRUxFTUVOVF9JRF9SU05fV1BBMgkJCQkgICAgNDgKKyNlbmRpZiAvL2VuZGlmIFdQQTIKKworI2RlZmluZSBXTEFOX01BWF9QQUlSV0lTRV9DSVBIRVJfU1VJVEVfQ09VTlQgICAgKCh1MTYpIDYpCisjZGVmaW5lIFdMQU5fTUFYX0FVVEhfS0VZX01HVF9TVUlURV9MSVNUX0NPVU5UICAoKHUxNikgMikKKworI2lmZGVmIFdCX0xJTlVYCisjZGVmaW5lIFVOQUxJR05FRAorI2VuZGlmCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3R5cGVkZWYgZW51bSBlbnVtX1Bvd2VyTWFuYWdlbWVudE1vZGUKK3sKKyAgICBBQ1RJVkUgPSAwLAorICAgIFBPV0VSX1NBVkUKK30gV0JfUE1fTW9kZSwgKlBXQl9QTV9NT0RFOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBSZWFzb24gQ29kZSAoVGFibGUgMTgpOiBpbmRpY2F0ZSB0aGUgcmVhc29uIG9mIERpc0Fzc29jLCBEZUF1dGhlbgorLy8gIGxlbmd0aCBvZiBSZWFzb25Db2RlIGlzIDIgT2N0cy4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBSRUFTT05fUkVBU0VSRUQgICAgICAgICAgICAgMAorI2RlZmluZSBSRUFTT05fVU5TUEVDSURJRUQgICAgICAgICAgMQorI2RlZmluZSBSRUFTT05fUFJFQVVUSF9JTlZBTElEICAgICAgMgorI2RlZmluZSBERUFVVEhfUkVBU09OX0xFRlRfQlNTICAgICAgMworI2RlZmluZSBESVNBU1NfUkVBU09OX0FQX0lOQUNUSVZFICAgNAorI2RlZmluZSBESVNBU1NfUkVBU09OX0FQX0JVU1kgICAgICAgNQorI2RlZmluZSBSRUFTT05fQ0xBU1MyX0ZSQU1FX0ZST01fTk9OQVVUSF9TVEEgICAgNgorI2RlZmluZSBSRUFTT05fQ0xBU1MzX0ZSQU1FX0ZST01fTk9OQVNTT19TVEEgICAgNworI2RlZmluZSBESVNBU1NfUkVBU09OX0xFRlRfQlNTICAgICAgOAorI2RlZmluZSBSRUFTT05fTk9UX0FVVEhfWUVUICAgICAgICAgOQorLy84MDIuMTFpIGRlZmluZQorI2RlZmluZSBSRUFTT05fSU5WQUxJRF9JRQkJCQkJCTEzCisjZGVmaW5lIFJFQVNPTl9NSUNfRVJST1IJCQkJCQkxNAorI2RlZmluZSBSRUFTT05fNFdBWV9IQU5EU0hBS0VfVElNRU9VVAkJCTE1CisjZGVmaW5lIFJFQVNPTl9HUk9VUEtFWV9VUERBVEVfVElNRU9VVAkJCTE2CisjZGVmaW5lIFJFQVNPTl9JRV9ESUZGXzRXQVlfQVNTT0MJCQkJMTcKKyNkZWZpbmUgUkVBU09OX0lOVkFMSURfTVVMVElDQVNUX0NJUEhFUgkJCTE4CisjZGVmaW5lIFJFQVNPTl9JTlZBTElEX1VOSUNBU1RfQ0lQSEVSCQkJMTkKKyNkZWZpbmUgUkVBU09OX0lOVkFMSURfQUtNUAkJCQkJCTIwCisjZGVmaW5lIFJFQVNPTl9VTlNVUFBPUlRFRF9SU05JRV9WRVJTSU9OCQkyMQorI2RlZmluZSBSRUFTT05fSU5WQUxJRF9SU05JRV9DQVBBQklMSVRZCQkJMjIKKyNkZWZpbmUgUkVBU09OXzgwMl8xWF9BVVRIX0ZBSUwJCQkJCTIzCisjZGVmaW5lCVJFQVNPTl9DSVBIRVJfUkVKRUNUX1BFUl9TRUNfUE9MSUNZCQkxNAorCisvKgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gZW51bV9NTVBEVVJlc3VsdENvZGUgLS0KKy8vICAgU3RhdHVzIGNvZGUgKDIgT2N0cykgaW4gdGhlIE1NUERVJ3MgZnJhbWUgYm9keS4gVGFibGUuMTkKKy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlbnVtIGVudW1fTU1QRFVSZXN1bHRDb2RlCit7CisvLyAgICBTVUNDRVNTICAgPSAwLCAgICAgIC8vIFJlZGVmaW5lZAorICAgIFVOU1BFQ0lGSUVEX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgPSAxLAorCisgICAgLy8gMiAtIDkgUmVzZXJ2ZWQKKworICAgIE5PVF9TVVBQUk9UX0NBUEFCSUxJVElFUyAgICAgICAgICAgICAgICAgICAgPSAxMCwKKworICAgIC8vUkVBU1NPQ0lBVElPTl9ERU5JRUQKKyAgICAvLworICAgIFJFQVNTT0NfREVOSUVEX1VOQUJMRV9DRk1fQVNTT0NfRVhJU1QgICAgICAgPSAxMSwKKworICAgIC8vQVNTT0NJQVRJT05fREVOSUVEX05PVF9JTl9TVEFOREFSRAorICAgIC8vCisgICAgQVNTT0NfREVOSUVEX1JFQVNPTl9OT1RfSU5fU1RBTkRBUkQgICAgICAgICA9IDEyLAorICAgIFBFRVJfTk9UX1NVUFBPUlRfQVVUSF9BTEdPUklUSE0gICAgICAgICAgICAgPSAxMywKKyAgICBBVVRIX1NFUU5VTV9PVVRfT0ZfRVhQRUNUICAgICAgICAgICAgICAgICAgID0gMTQsCisgICAgQVVUSF9SRUpFQ1RfUkVBU09OX0NIQUxMRU5HRV9GQUlMICAgICAgICAgICA9IDE1LAorICAgIEFVVEhfUkVKRUNUX1JFQVNPTl9XQUlUX1RJTUVPVVQgICAgICAgICAgICAgPSAxNiwKKyAgICBBU1NPQ19ERU5JRURfUkVBU09OX0FQX0JVU1kgICAgICAgICAgICAgICAgID0gMTcsCisgICAgQVNTT0NfREVOSUVEX1JFQVNPTl9OT1RfU1VQUE9SVF9CQVNJQ19SQVRFICA9IDE4Cit9IFdCX01NUERVUkVTVUxUQ09ERSwgKlBXQl9NTVBEVVJFU1VMVENPREU7CisqLworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBlbnVtX1R4UmF0ZSAtLQorLy8gICBEZWZpbmUgdGhlIHRyYW5zbWlzc2lvbiBjb25zdGFudHMgYmFzZWQgb24gVzg5QzMyIE1BQworLy8gICB0YXJnZXQgc3BlY2lmaWNhdGlvbi4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3R5cGVkZWYgZW51bSBlbnVtX1R4UmF0ZQoreworICAgIFRYUkFURV8xTSAgICAgICAgICAgICAgID0gMCwKKyAgICBUWFJBVEVfMk1MT05HICAgICAgICAgICA9IDIsCisgICAgVFhSQVRFXzJNU0hPUlQgICAgICAgICAgPSAzLAorICAgIFRYUkFURV81NU1MT05HICAgICAgICAgID0gNCwKKyAgICBUWFJBVEVfNTVNU0hPUlQgICAgICAgICA9IDUsCisgICAgVFhSQVRFXzExTUxPTkcgICAgICAgICAgPSA2LAorICAgIFRYUkFURV8xMU1TSE9SVCAgICAgICAgID0gNywKKyAgICBUWFJBVEVfQVVUTyAgICAgICAgICAgICA9IDI1NSAgICAgICAgICAgLy8gUEQ0MyAyMDAyMTEwOAorfSBXQl9UWFJBVEUsICpQV0JfVFhSQVRFOworCisKKyNkZWZpbmUJUkFURV9CSVRNQVBfMU0JCQkJMQorI2RlZmluZQlSQVRFX0JJVE1BUF8yTQkJCQkyCisjZGVmaW5lCVJBVEVfQklUTUFQXzVkb3Q1TQkJCTUKKyNkZWZpbmUgUkFURV9CSVRNQVBfNk0JCQkJNgorI2RlZmluZSBSQVRFX0JJVE1BUF85TQkJCQk5CisjZGVmaW5lIFJBVEVfQklUTUFQXzExTQkJCQkxMQorI2RlZmluZSBSQVRFX0JJVE1BUF8xMk0JCQkJMTIKKyNkZWZpbmUgUkFURV9CSVRNQVBfMThNCQkJCTE4CisjZGVmaW5lIFJBVEVfQklUTUFQXzIyTQkJCQkyMgorI2RlZmluZSBSQVRFX0JJVE1BUF8yNE0JCQkJMjQKKyNkZWZpbmUgUkFURV9CSVRNQVBfMzNNCQkJCTE3CisjZGVmaW5lIFJBVEVfQklUTUFQXzM2TQkJCQkxOQorI2RlZmluZSBSQVRFX0JJVE1BUF80OE0JCQkJMjUKKyNkZWZpbmUgUkFURV9CSVRNQVBfNTRNCQkJCTI4CisKKyNkZWZpbmUgUkFURV9BVVRPCQkJCQkwCisjZGVmaW5lIFJBVEVfMU0JCQkJCQkyCisjZGVmaW5lIFJBVEVfMk0JCQkJCQk0CisjZGVmaW5lIFJBVEVfNWRvdDVNCQkJCQkxMQorI2RlZmluZSBSQVRFXzZNCQkJCQkJMTIKKyNkZWZpbmUgUkFURV85TQkJCQkJCTE4CisjZGVmaW5lIFJBVEVfMTFNCQkJCQkyMgorI2RlZmluZSBSQVRFXzEyTQkJCQkJMjQKKyNkZWZpbmUgUkFURV8xOE0JCQkJCTM2CisjZGVmaW5lIFJBVEVfMjJNCQkJCQk0NAorI2RlZmluZSBSQVRFXzI0TQkJCQkJNDgKKyNkZWZpbmUgUkFURV8zM00JCQkJCTY2CisjZGVmaW5lIFJBVEVfMzZNCQkJCQk3MgorI2RlZmluZSBSQVRFXzQ4TQkJCQkJOTYKKyNkZWZpbmUgUkFURV81NE0JCQkJCTEwOAorI2RlZmluZSBSQVRFX01BWAkJCQkJMjU1CisKKy8vQ0FQQUJJTElUWQorI2RlZmluZSBDQVBBQklMSVRZX0VTU19CSVQJCQkJMHgwMDAxCisjZGVmaW5lIENBUEFCSUxJVFlfSUJTU19CSVQJCQkJMHgwMDAyCisjZGVmaW5lIENBUEFCSUxJVFlfQ0ZfUE9MTF9CSVQJCQkweDAwMDQKKyNkZWZpbmUgQ0FQQUJJTElUWV9DRl9QT0xMX1JFUV9CSVQJCTB4MDAwOAorI2RlZmluZSBDQVBBQklMSVRZX1BSSVZBQ1lfQklUCQkJMHgwMDEwCisjZGVmaW5lIENBUEFCSUxJVFlfU0hPUlRfUFJFQU1CTEVfQklUCTB4MDAyMAorI2RlZmluZSBDQVBBQklMSVRZX1BCQ0NfQklUCQkJCTB4MDA0MAorI2RlZmluZSBDQVBBQklMSVRZX0NIQU5fQUdJTElUWV9CSVQJCTB4MDA4MAorI2RlZmluZSBDQVBBQklMSVRZX1NIT1JUX1NMT1RfVElNRV9CSVQJMHgwNDAwCisjZGVmaW5lIENBUEFCSUxJVFlfRFNTU19PRkRNX0JJVAkJMHgyMDAwCisKKworc3RydWN0IENhcGFiaWxpdHlfSW5mb3JtYXRpb25fRWxlbWVudAoreworICB1bmlvbgorICB7CisgIAl1MTYgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHdWYWx1ZTsKKyAgICAjaWZkZWYgX0JJR19FTkRJQU5fICAvLzIwMDYwOTI2IGFkZCBieSBhbnNvbidzIGVuZGlhbgorICAgIHN0cnVjdCBfQ2FwYWJpbGl0eQorICAgIHsKKyAgICAgICAgLy8tLSAgMTFHICAtLQorCXU4CVJlc2VydmVkMyA6IDI7CisJdTgJRFNTU19PRkRNIDogMTsKKwl1OAlSZXNlcnZlZDIgOiAyOworCXU4CVNob3J0X1Nsb3RfVGltZSA6IDE7CisJdTggICAgUmVzZXJ2ZWQxIDogMjsKKwl1OCAgICBDaGFubmVsX0FnaWxpdHkgOiAxOworCXU4ICAgIFBCQ0MgOiAxOworCXU4ICAgIFNob3J0UHJlYW1ibGUgOiAxOworCXU4ICAgIENGX1ByaXZhY3kgOiAxOworCXU4ICAgIENGX1BvbGxfUmVxdWVzdCA6IDE7CisJdTggICAgQ0ZfUG9sbGFibGUgOiAxOworCXU4ICAgIElCU1MgOiAxOworCXU4ICAgIEVTUyA6IDE7CisgICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgQ2FwYWJpbGl0eTsKKyAgICAjZWxzZQorICAgIHN0cnVjdCBfQ2FwYWJpbGl0eQorICAgIHsKKyAgICAgICAgdTggICAgRVNTIDogMTsKKyAgICAgICAgdTggICAgSUJTUyA6IDE7CisgICAgICAgIHU4ICAgIENGX1BvbGxhYmxlIDogMTsKKyAgICAgICAgdTggICAgQ0ZfUG9sbF9SZXF1ZXN0IDogMTsKKyAgICAgICAgdTggICAgQ0ZfUHJpdmFjeSA6IDE7CisgICAgICAgIHU4ICAgIFNob3J0UHJlYW1ibGUgOiAxOworICAgICAgICB1OCAgICBQQkNDIDogMTsKKyAgICAgICAgdTggICAgQ2hhbm5lbF9BZ2lsaXR5IDogMTsKKyAgICAgICAgdTggICAgUmVzZXJ2ZWQxIDogMjsKKwkJLy8tLSAgMTFHICAtLQorCQl1OAlTaG9ydF9TbG90X1RpbWUgOiAxOworCQl1OAlSZXNlcnZlZDIgOiAyOworCQl1OAlEU1NTX09GRE0gOiAxOworCQl1OAlSZXNlcnZlZDMgOiAyOworICAgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIENhcGFiaWxpdHk7CisgICAgI2VuZGlmCisgIH1fX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgOworfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RydWN0IEZIX1BhcmFtZXRlcl9TZXRfRWxlbWVudAoreworICAgIHU4ICAgIEVsZW1lbnRfSUQ7CisgICAgdTggICAgTGVuZ3RoOworICAgIHU4ICAgIER3ZWxsX1RpbWVbMl07CisgICAgdTggICAgSG9wX1NldDsKKyAgICB1OCAgICBIb3BfUGF0dGVybjsKKyAgICB1OCAgICBIb3BfSW5kZXg7Cit9OworCitzdHJ1Y3QgRFNfUGFyYW1ldGVyX1NldF9FbGVtZW50Cit7CisgICAgdTggICAgRWxlbWVudF9JRDsKKyAgICB1OCAgICBMZW5ndGg7CisgICAgdTggICAgQ3VycmVudF9DaGFubmVsOworfTsKKworc3RydWN0IFN1cHBvcnRlZF9SYXRlc19FbGVtZW50Cit7CisgICAgdTggICAgRWxlbWVudF9JRDsKKyAgICB1OCAgICBMZW5ndGg7CisgICAgdTggICAgU3VwcG9ydGVkUmF0ZXNbOF07Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgU1NJRF9FbGVtZW50Cit7CisgICAgdTggICAgRWxlbWVudF9JRDsKKyAgICB1OCAgICBMZW5ndGg7CisgICAgdTggICAgU1NJRFszMl07Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIDsKKworc3RydWN0IENGX1BhcmFtZXRlcl9TZXRfRWxlbWVudAoreworICAgIHU4ICAgIEVsZW1lbnRfSUQ7CisgICAgdTggICAgTGVuZ3RoOworICAgIHU4ICAgIENGUF9Db3VudDsKKyAgICB1OCAgICBDRlBfUGVyaW9kOworICAgIHU4ICAgIENGUF9NYXhEdXJhdGlvblsyXTsgICAgIC8vIGluIFRpbWUgVW5pdHMKKyAgICB1OCAgICBDRlBfRHVyUmVtYWluaW5nWzJdOyAgICAvLyBpbiB0aW1lIHVuaXRzCit9OworCitzdHJ1Y3QgVElNX0VsZW1lbnQKK3sKKyAgICB1OCAgICBFbGVtZW50X0lEOworICAgIHU4ICAgIExlbmd0aDsKKyAgICB1OCAgICBEVElNX0NvdW50OworICAgIHU4ICAgIERUSU1fUGVyaW9kOworICAgIHU4ICAgIEJpdG1hcF9Db250cm9sOworICAgIHU4ICAgIFBhcnRpYWxfVmlydHVhbF9CaXRtYXBbMjUxXTsKK307CisKK3N0cnVjdCBJQlNTX1BhcmFtZXRlcl9TZXRfRWxlbWVudAoreworICAgIHU4ICAgIEVsZW1lbnRfSUQ7CisgICAgdTggICAgTGVuZ3RoOworICAgIHU4ICAgIEFUSU1fV2luZG93WzJdOworfTsKKworc3RydWN0IENoYWxsZW5nZV9UZXh0X0VsZW1lbnQKK3sKKyAgICB1OCAgICBFbGVtZW50X0lEOworICAgIHU4ICAgIExlbmd0aDsKKyAgICB1OCAgICBDaGFsbGVuZ2VfVGV4dFsyNTNdOworfTsKKworc3RydWN0IFBIWV9QYXJhbWV0ZXJfU2V0X0VsZW1lbnQKK3sKKy8vICBpbnQgICAgIGFTbG90VGltZTsKKy8vICBpbnQgICAgIGFTaWZzVGltZTsKKyAgICBzMzIgICAgIGFDQ0FUaW1lOworICAgIHMzMiAgICAgYVJ4VHhUdXJuYXJvdW5kVGltZTsKKyAgICBzMzIgICAgIGFUeFBMQ1BEZWxheTsKKyAgICBzMzIgICAgIFJ4UExDUERlbGF5OworICAgIHMzMiAgICAgYVJ4VHhTd2l0Y2hUaW1lOworICAgIHMzMiAgICAgYVR4UmFtcE9udGltZTsKKyAgICBzMzIgICAgIGFUeFJhbXBPZmZUaW1lOworICAgIHMzMiAgICAgYVR4UkZEZWxheTsKKyAgICBzMzIgICAgIGFSeFJGRGVsYXk7CisgICAgczMyICAgICBhQWlyUHJvcGFnYXRpb25UaW1lOworICAgIHMzMiAgICAgYU1BQ1Byb2Nlc3NpbmdEZWxheTsKKyAgICBzMzIgICAgIGFQcmVhbWJsZUxlbmd0aDsKKyAgICBzMzIgICAgIGFQTENQSGVhZGVyTGVuZ3RoOworICAgIHMzMiAgICAgYU1QRFVEdXJhdGlvbkZhY3RvcjsKKyAgICBzMzIgICAgIGFNUERVTWF4TGVuZ3RoOworLy8gIGludCAgICAgYUNXbWluOworLy8gIGludCAgICAgYUNXbWF4OworfTsKKworLy8tLSAgMTFHICAtLQorc3RydWN0IEVSUF9JbmZvcm1hdGlvbl9FbGVtZW50Cit7CisgICAgdTgJRWxlbWVudF9JRDsKKyAgICB1OAlMZW5ndGg7CisgICAgI2lmZGVmIF9CSUdfRU5ESUFOXyAvLzIwMDYwOTI2IGFkZCBieSBhbnNvbidzIGVuZGlhbgorICAgIAl1OAlSZXNlcnZlZDo1OyAgIC8vMjAwNjA5MjYgYWRkIGJ5IGFuc29uCisgICAgICAgdTgJQmFya2VyX1ByZWFtYmxlX01vZGU6MTsKKwl1OAlVc2VfUHJvdGVjdGlvbjoxOworICAgICAgIHU4CU5vbkVSUF9QcmVzZW50OjE7CisgICAgI2Vsc2UKKwl1OAlOb25FUlBfUHJlc2VudDoxOworCXU4CVVzZV9Qcm90ZWN0aW9uOjE7CisJdTgJQmFya2VyX1ByZWFtYmxlX01vZGU6MTsKKwl1OAlSZXNlcnZlZDo1OworICAgICNlbmRpZgorfTsKKworc3RydWN0IEV4dGVuZGVkX1N1cHBvcnRlZF9SYXRlc19FbGVtZW50Cit7CisgICAgdTgJRWxlbWVudF9JRDsKKyAgICB1OAlMZW5ndGg7CisgICAgdTgJRXh0ZW5kZWRTdXBwb3J0ZWRSYXRlc1syNTVdOworfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworLy9XUEEoODAyLjExaSBkcmFmdCAzLjApCisjZGVmaW5lIFZFUlNJT05fV1BBCQkJCTEKKyNpZmRlZiBfV1BBMl8KKyNkZWZpbmUgVkVSU0lPTl9XUEEyICAgICAgICAgICAgMQorI2VuZGlmIC8vZW5kIGRlZiAgX1dQQTJfCisjZGVmaW5lIE9VSV9XUEEJCQkJCTB4MDBGMjUwMDAJLy9XUEEyLjAgT1VJPTAwOjUwOkYyLCB0aGUgTVNCIGlzIHJlc2VydmVkIGZvciBzdWl0ZSB0eXBlCisjaWZkZWYgX1dQQTJfCisjZGVmaW5lIE9VSV9XUEEyCQkJCTB4MDBBQzBGMDAJLy8gZm9yIHdwYTIgY2hhbmdlIHRvIDB4MDBBQ09GMDQgYnkgV3MgMjYvMDQvMDQKKyNlbmRpZiAvL2VuZCBkZWYgX1dQQTJfCisKKyNkZWZpbmUgT1VJX1dQQV9BRERJVElPTkFMCQkweDAxCisjZGVmaW5lIFdMQU5fTUlOX1JTTl9XUEFfTEVOR1RIICAgICAgICAgICAgICAgICA2IC8vYWRkZWQgYnkgd3MgMDkvMTAvMDQKKyNpZmRlZiBfV1BBMl8KKyNkZWZpbmUgV0xBTl9NSU5fUlNOX1dQQTJfTEVOR1RIICAgICAgICAgICAgICAgIDIgLy8gRml4IHRvIDIgMDkvMTQvMDUKKyNlbmRpZiAvL2VuZCBkZWYgX1dQQTJfCisKKyNkZWZpbmUgb3VpX3dwYSAgICAgICAgICAgICAgICAgICh1MzIpKE9VSV9XUEF8T1VJX1dQQV9BRERJVElPTkFMKQorCisjZGVmaW5lIFdQQV9PVUlfQklHICAgICgodTMyKSAweDAxRjI1MDAwKS8vYWRkZWQgYnkgd3MgMDkvMjMvMDQKKyNkZWZpbmUgV1BBX09VSV9MSVRUTEUgICgodTMyKSAweDAxRjI1MDAxKS8vYWRkZWQgYnkgd3MgMDkvMjMvMDQKKworI2RlZmluZSBXUEFfV1BTX09VSQkJCQljcHVfdG9fbGUzMigweDA0RjI1MDAwKSAvLyAyMDA2MTEwOCBGb3IgV1BTLiBJdCdzIGxpdHRsZSBlbmRpYW4uIEJpZyBlbmRpYW4gaXMgMHgwMDUwRjIwNAorCisvLy0tLS0tV1BBMi0tLS0tCisjaWZkZWYgX1dQQTJfCisjZGVmaW5lIFdQQTJfT1VJX0JJRyAgICAoKHUzMikweDAxQUMwRjAwKQorI2RlZmluZSBXUEEyX09VSV9MSVRUTEUgKCh1MzIpMHgwMUFDMEYwMSkKKyNlbmRpZiAvL2VuZCBkZWYgX1dQQTJfCisKKy8vQXV0aGVudGljYXRpb24gc3VpdGUKKyNkZWZpbmUgT1VJX0FVVEhfV1BBX05PTkUgICAgICAgICAgIDB4MDAgLy9mb3IgV1BBX05PTkUKKyNkZWZpbmUgT1VJX0FVVEhfODAyMVgJCQkJMHgwMQorI2RlZmluZSBPVUlfQVVUSF9QU0sJCQkJMHgwMgorLy9DaXBoZXIgc3VpdGUKKyNkZWZpbmUgT1VJX0NJUEhFUl9HUk9VUF9LRVkgICAgICAgIDB4MDAgIC8vYWRkZWQgYnkgd3MgMDUvMjEvMDQKKyNkZWZpbmUgT1VJX0NJUEhFUl9XRVBfNDAJCQkweDAxCisjZGVmaW5lIE9VSV9DSVBIRVJfVEtJUAkJCQkweDAyCisjZGVmaW5lIE9VSV9DSVBIRVJfQ0NNUAkJCQkweDA0CisjZGVmaW5lIE9VSV9DSVBIRVJfV0VQXzEwNAkJCTB4MDUKKwordHlwZWRlZiBzdHJ1Y3QgX1NVSVRFX1NFTEVDVE9SXworeworCXVuaW9uCisJeworCQl1OAlWYWx1ZVs0XTsKKwkJc3RydWN0IF9TVUlUXworCQl7CisJCQl1OAlPVUlbM107CisJCQl1OAlUeXBlOworCQl9U3VpdFNlbGVjdG9yOworCX07Cit9U1VJVEVfU0VMRUNUT1I7CisKKy8vLS0gIFdQQSAgLS0KK3N0cnVjdAlSU05fSW5mb3JtYXRpb25fRWxlbWVudAoreworCXU4CQkJCQlFbGVtZW50X0lEOworCXU4CQkJCQlMZW5ndGg7CisJVU5BTElHTkVEIFNVSVRFX1NFTEVDVE9SCU91aVdQQUFkZGl0aW9uYWw7Ly9XUEEgdmVyc2lvbiAyLjAgYWRkaXRpb25hbCBmaWVsZCwgYW5kIHNob3VsZCBiZSAwMDo1MDpGMjowMQorCXUxNgkJCQkJVmVyc2lvbjsKKwlTVUlURV9TRUxFQ1RPUgkJR3JvdXBLZXlTdWl0ZTsKKwl1MTYJCQkJCVBhaXJ3aXNlS2V5U3VpdGVDb3VudDsKKwlTVUlURV9TRUxFQ1RPUgkJUGFpcndpc2VLZXlTdWl0ZVsxXTsKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CitzdHJ1Y3QgUlNOX0F1dGhfU3ViX0luZm9ybWF0aW9uX0VsZW1lbnQKK3sKKwl1MTYJCQkJQXV0aEtleU1uZ3RTdWl0ZUNvdW50OworCVNVSVRFX1NFTEVDVE9SCUF1dGhLZXlNbmd0U3VpdGVbMV07Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvLy0tICBXUEEyICAtLQorc3RydWN0IFJTTl9DYXBhYmlsaXR5X0VsZW1lbnQKK3sKKyAgdW5pb24KKyAgeworCXUxNglfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkJd1ZhbHVlOworICAgICNpZmRlZiBfQklHX0VORElBTl8JIC8vMjAwNjA5MjcgYWRkIGJ5IGFuc29uJ3MgZW5kaWFuCisgICAgc3RydWN0IF9SU05fQ2FwYWJpbGl0eQorICAgIHsKKyAgICAJdTE2ICAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICBSZXNlcnZlZDIgOiA4OyAvLyAyMDA1MTIwMQorCXUxNiAgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSAgUmVzZXJ2ZWQxIDogMjsKKwl1MTYgICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgIEdUS19SZXBsYXlfQ291bnRlciA6IDI7CisJdTE2ICAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICBQVEtfUmVwbGF5X0NvdW50ZXIgOiAyOworCXUxNiAgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSAgTm9fUGFpcndpc2UgOiAxOworICAgICAgICB1MTYgICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgIFByZV9BdXRoIDogMTsKKyAgICB9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICBSU05fQ2FwYWJpbGl0eTsKKyAgICAjZWxzZQorICAgIHN0cnVjdCBfUlNOX0NhcGFiaWxpdHkKKyAgICB7CisgICAgICAgIHUxNiAgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSAgUHJlX0F1dGggOiAxOworICAgICAgICB1MTYgICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgIE5vX1BhaXJ3aXNlIDogMTsKKyAgICAgICAgdTE2ICAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICBQVEtfUmVwbGF5X0NvdW50ZXIgOiAyOworCSAgICB1MTYgICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgIEdUS19SZXBsYXlfQ291bnRlciA6IDI7CisJICAgIHUxNiAgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSAgUmVzZXJ2ZWQxIDogMjsKKwkgICAgdTE2ICAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICBSZXNlcnZlZDIgOiA4OyAvLyAyMDA1MTIwMQorICAgIH1fX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgIFJTTl9DYXBhYmlsaXR5OworICAgICNlbmRpZgorCisgIH1fX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgOworfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CisKKyNpZmRlZiBfV1BBMl8KK3R5cGVkZWYgc3RydWN0IF9QTUtJRAoreworICB1OCBwVmFsdWVbMTZdOworfVBNS0lEOworCitzdHJ1Y3QJV1BBMl9SU05fSW5mb3JtYXRpb25fRWxlbWVudAoreworCXU4CQkJCQlFbGVtZW50X0lEOworCXU4CQkJCQlMZW5ndGg7CisJdTE2CQkJCQlWZXJzaW9uOworCVNVSVRFX1NFTEVDVE9SCQlHcm91cEtleVN1aXRlOworCXUxNgkJCQkJUGFpcndpc2VLZXlTdWl0ZUNvdW50OworCVNVSVRFX1NFTEVDVE9SCQlQYWlyd2lzZUtleVN1aXRlWzFdOworCit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgV1BBMl9SU05fQXV0aF9TdWJfSW5mb3JtYXRpb25fRWxlbWVudAoreworCXUxNgkJCQlBdXRoS2V5TW5ndFN1aXRlQ291bnQ7CisJU1VJVEVfU0VMRUNUT1IJQXV0aEtleU1uZ3RTdWl0ZVsxXTsKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKworc3RydWN0IFBNS0lEX0luZm9ybWF0aW9uX0VsZW1lbnQKK3sKKwl1MTYJCQkJUE1LSURfQ291bnQ7CisJUE1LSUQgcG1raWQgWzE2XSA7Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisjZW5kaWYgLy9lbmRkZWYgX1dQQTJfCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUFDIEZyYW1lIHN0cnVjdHVyZSAoZGlmZmVyZW50IHR5cGUpIGFuZCBzdWJmaWVsZCBzdHJ1Y3R1cmUKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitzdHJ1Y3QgTUFDX2ZyYW1lX2NvbnRyb2wKK3sKKyAgICB1OCAgICBtYWNfZnJhbWVfaW5mbzsgLy8gYSBjb21iaW5hdGlvbiBvZiB0aGUgW1Byb3RvY29sIFZlcnNpb24sIENvbnRyb2wgVHlwZSwgQ29udHJvbCBTdWJ0eXBlXQorICAgICNpZmRlZiBfQklHX0VORElBTl8gLy8yMDA2MDkyNyBhZGQgYnkgYW5zb24ncyBlbmRpYW4KKyAgICB1OCAgICBvcmRlcjoxOworICAgIHU4ICAgIFdFUDoxOworICAgIHU4ICAgIG1vcmVfZGF0YToxOworICAgIHU4ICAgIHB3cl9tZ3Q6MTsKKyAgICB1OCAgICByZXRyeToxOworICAgIHU4ICAgIG1vcmVfZnJhZzoxOworICAgIHU4ICAgIGZyb21fZHM6MTsKKyAgICB1OCAgICB0b19kczoxOworICAgICNlbHNlCisgICAgdTggICAgdG9fZHM6MTsKKyAgICB1OCAgICBmcm9tX2RzOjE7CisgICAgdTggICAgbW9yZV9mcmFnOjE7CisgICAgdTggICAgcmV0cnk6MTsKKyAgICB1OCAgICBwd3JfbWd0OjE7CisgICAgdTggICAgbW9yZV9kYXRhOjE7CisgICAgdTggICAgV0VQOjE7CisgICAgdTggICAgb3JkZXI6MTsKKyAgICAjZW5kaWYKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgTWFuYWdlbWVudF9GcmFtZSB7CisgICAgc3RydWN0IE1BQ19mcmFtZV9jb250cm9sIGZyYW1lX2NvbnRyb2w7IC8vIDJCLCBUb0RTLEZyb21EUyxNb3JlRnJhZyxNb3JlRGF0YSxPcmRlcj0wCisgICAgdTE2CQlkdXJhdGlvbjsKKyAgICB1OAkJREFbTUFDX0FERFJfTEVOR1RIXTsJCQkvLyBBZGRyMQorICAgIHU4CQlTQVtNQUNfQUREUl9MRU5HVEhdOwkJCS8vIEFkZHIyCisgICAgdTgJCUJTU0lEW01BQ19BRERSX0xFTkdUSF07CQkJLy8gQWRkcjMKKyAgICB1MTYJCVNlcXVlbmNlX0NvbnRyb2w7CisgICAgLy8gTWFuYWdlbWVudCBGcmFtZSBCb2R5IDw9IDMyNSBieXRlcworICAgIC8vIEZDUyA0IGJ5dGVzCit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvLyBTVy1NQUMgZG9uJ3QgVHgvUnggQ29udHJvbC1GcmFtZSwgSFctTUFDIGRvIGl0Lgorc3RydWN0IENvbnRyb2xfRnJhbWUgeworICAgIHN0cnVjdCBNQUNfZnJhbWVfY29udHJvbCBmcmFtZV9jb250cm9sOyAvLyBUb0RTLEZyb21EUyxNb3JlRnJhZyxSZXRyeSxNb3JlRGF0YSxXRVAsT3JkZXI9MAorICAgIHUxNgkJZHVyYXRpb247CisgICAgdTgJCVJBW01BQ19BRERSX0xFTkdUSF07CisgICAgdTgJCVRBW01BQ19BRERSX0xFTkdUSF07CisgICAgdTE2CQlGQ1M7Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgRGF0YV9GcmFtZSB7CisgICAgc3RydWN0IE1BQ19mcmFtZV9jb250cm9sIGZyYW1lX2NvbnRyb2w7CisgICAgdTE2CQlkdXJhdGlvbjsKKyAgICB1OAkJQWRkcjFbTUFDX0FERFJfTEVOR1RIXTsKKyAgICB1OAkJQWRkcjJbTUFDX0FERFJfTEVOR1RIXTsKKyAgICB1OAkJQWRkcjNbTUFDX0FERFJfTEVOR1RIXTsKKyAgICB1MTYJCVNlcXVlbmNlX0NvbnRyb2w7CisgICAgdTgJCUFkZHI0W01BQ19BRERSX0xFTkdUSF07IC8vIG9ubHkgZXhpc3Qgd2hlbiBUb0RTPUZyb21EUz0xCisgICAgLy8gRGF0YSBGcmFtZSBCb2R5IDw9IDIzMTIKKyAgICAvLyBGQ1MKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCBEaXNhc3NvY2lhdGlvbl9GcmFtZV9Cb2R5Cit7CisgICAgdTE2ICAgIHJlYXNvbkNvZGU7Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgQXNzb2NpYXRpb25fUmVxdWVzdF9GcmFtZV9Cb2R5Cit7CisgICAgdTE2ICAgIGNhcGFiaWxpdHlfaW5mb3JtYXRpb247CisgICAgdTE2ICAgIGxpc3RlbkludGVydmFsOworICAgIHU4ICAgICBDdXJyZW50X0FQX0FkZHJlc3NbTUFDX0FERFJfTEVOR1RIXTsvL2ZvciByZWFzc29jaWF0aW9uIG9ubHkKKyAgICAvLyBTU0lEICgyKzMyIGJ5dGVzKQorICAgIC8vIFN1cHBvcnRlZF9SYXRlcyAoMis4IGJ5dGVzKQorfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RydWN0IEFzc29jaWF0aW9uX1Jlc3BvbnNlX0ZyYW1lX0JvZHkKK3sKKyAgICB1MTYgICAgY2FwYWJpbGl0eV9pbmZvcm1hdGlvbjsKKyAgICB1MTYgICAgc3RhdHVzQ29kZTsKKyAgICB1MTYgICAgQXNzb2NpYXRpb25fSUQ7CisgICAgc3RydWN0IFN1cHBvcnRlZF9SYXRlc19FbGVtZW50IHN1cHBvcnRlZFJhdGVzOworfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworLypzdHJ1Y3QgUmVhc3NvY2lhdGlvbl9SZXF1ZXN0X0ZyYW1lX0JvZHkKK3sKKyAgICB1MTYgICAgY2FwYWJpbGl0eV9pbmZvcm1hdGlvbjsKKyAgICB1MTYgICAgbGlzdGVuSW50ZXJ2YWw7CisgICAgdTggICAgIEN1cnJlbnRfQVBfQWRkcmVzc1tNQUNfQUREUl9MRU5HVEhdOworICAgIC8vIFNTSUQgKDIrMzIgYnl0ZXMpCisgICAgLy8gU3VwcG9ydGVkX1JhdGVzICgyKzggYnl0ZXMpCit9OyovCisvLyBlbGltaW5hdGVkIGJ5IFdTIDA3LzIyLzA0IGNvbWJvaW5lZCB3aXRoIGFzc29jaWF0ZWlvbiByZXF1ZXN0IGZyYW1lLgorCitzdHJ1Y3QgUmVhc3NvY2lhdGlvbl9SZXNwb25zZV9GcmFtZV9Cb2R5Cit7CisgICAgdTE2ICAgIGNhcGFiaWxpdHlfaW5mb3JtYXRpb247CisgICAgdTE2ICAgIHN0YXR1c0NvZGU7CisgICAgdTE2ICAgIEFzc29jaWF0aW9uX0lEOworICAgIHN0cnVjdCBTdXBwb3J0ZWRfUmF0ZXNfRWxlbWVudCBzdXBwb3J0ZWRSYXRlczsKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCBEZWF1dGhlbnRpY2F0aW9uX0ZyYW1lX0JvZHkKK3sKKyAgICB1MTYgICAgcmVhc29uQ29kZTsKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKworc3RydWN0IFByb2JlX1Jlc3BvbnNlX0ZyYW1lX0JvZHkKK3sKKyAgICB1MTYgICAgVGltZXN0YW1wOworICAgIHUxNiAgICBCZWFjb25fSW50ZXJ2YWw7CisgICAgdTE2ICAgIENhcGFiaWxpdHlfSW5mb3JtYXRpb247CisgICAgLy8gU1NJRAorICAgIC8vIFN1cHBvcnRlZF9SYXRlcworICAgIC8vIFBIWSBwYXJhbWV0ZXIgU2V0IChEUyBQYXJhbWV0ZXJzKQorICAgIC8vIENGIHBhcmFtZXRlciBTZXQKKyAgICAvLyBJQlNTIHBhcmFtZXRlciBTZXQKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCBBdXRoZW50aWNhdGlvbl9GcmFtZV9Cb2R5Cit7CisgICAgdTE2ICAgIGFsZ29yaXRobU51bWJlcjsKKyAgICB1MTYgICAgc2VxdWVuY2VOdW1iZXI7CisgICAgdTE2ICAgIHN0YXR1c0NvZGU7CisgICAgLy8gTkI6IGRvbid0IGluY2x1ZGUgQ2hhbGxlbmdlVGV4dCBpbiB0aGlzIHN0cnVjdHVyZQorCS8vIHN0cnVjdCBDaGFsbGVuZ2VfVGV4dF9FbGVtZW50IHNDaGFsbGVuZ2VUZXh0RWxlbWVudDsgLy8gd2tjaGVuIGFkZGVkCit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisKKyNlbmRpZiAvLyBfTUFDX1N0cnVjdHVyZV9IXworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNlNjM4OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jCkBAIC0wLDAgKzEsNjMwIEBACisjaW5jbHVkZSAib3NfY29tbW9uLmgiCisKK3ZvaWQKK01kc19yZXNldF9kZXNjcmlwdG9yKFBBREFQVEVSIEFkYXB0ZXIpCit7CisJUE1EUyBwTWRzID0gJkFkYXB0ZXItPk1kczsKKworCXBNZHMtPlR4UGF1c2UgPSAwOworCXBNZHMtPlR4VGhyZWFkQ291bnQgPSAwOworCXBNZHMtPlR4RmlsbEluZGV4ID0gMDsKKwlwTWRzLT5UeERlc0luZGV4ID0gMDsKKwlwTWRzLT5TY2FuVHhQYXVzZSA9IDA7CisJbWVtc2V0KHBNZHMtPlR4T3duZXIsIDAsICgoTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSICsgMykgJiB+MHgwMykpOworfQorCit1bnNpZ25lZCBjaGFyCitNZHNfaW5pdGlhbChQQURBUFRFUiBBZGFwdGVyKQoreworCVBNRFMgcE1kcyA9ICZBZGFwdGVyLT5NZHM7CisKKwlwTWRzLT5UeFBhdXNlID0gRkFMU0U7CisJcE1kcy0+VHhSVFNUaHJlc2hvbGQgPSBERUZBVUxUX1JUU1RocmVzaG9sZDsKKwlwTWRzLT5UeEZyYWdtZW50VGhyZXNob2xkID0gREVGQVVMVF9GUkFHTUVOVF9USFJFU0hPTEQ7CisKKwl2UnhUaW1lckluaXQoQWRhcHRlcik7Ly9mb3IgV1BBIGNvdW50ZXJtZWFzdXJlCisKKwlyZXR1cm4gaGFsX2dldF90eF9idWZmZXIoICZBZGFwdGVyLT5zSHdEYXRhLCAmcE1kcy0+cFR4QnVmZmVyICk7Cit9CisKK3ZvaWQKK01kc19EZXN0cm95KFBBREFQVEVSIEFkYXB0ZXIpCit7CisJdlJ4VGltZXJTdG9wKEFkYXB0ZXIpOworfQorCit2b2lkCitNZHNfVHgoUEFEQVBURVIgQWRhcHRlcikKK3sKKwlwaHdfZGF0YV90CXBId0RhdGEgPSAmQWRhcHRlci0+c0h3RGF0YTsKKwlQTURTCQlwTWRzID0gJkFkYXB0ZXItPk1kczsKKwlERVNDUklQVE9SCVR4RGVzOworCVBERVNDUklQVE9SCXBUeERlcyA9ICZUeERlczsKKwlQVUNIQVIJCVhtaXRCdWZBZGRyZXNzOworCXUxNgkJWG1pdEJ1ZlNpemUsIFBhY2tldFNpemUsIHN0bXAsIEN1cnJlbnRTaXplLCBGcmFnbWVudFRocmVzaG9sZDsKKwl1OAkJRmlsbEluZGV4LCBUeERlc0luZGV4LCBGcmFnbWVudENvdW50LCBGaWxsQ291bnQ7CisJdW5zaWduZWQgY2hhcglCdWZmZXJGaWxsZWQgPSBGQUxTRSwgTUlDQWRkID0gMDsKKworCisJaWYgKHBNZHMtPlR4UGF1c2UpCisJCXJldHVybjsKKwlpZiAoIWhhbF9kcml2ZXJfaW5pdF9PSyhwSHdEYXRhKSkKKwkJcmV0dXJuOworCisJLy9Pbmx5IG9uZSB0aHJlYWQgY2FuIGJlIHJ1biBoZXJlCisJaWYgKCFPU19BVE9NSUNfSU5DKCBBZGFwdGVyLCAmcE1kcy0+VHhUaHJlYWRDb3VudCkgPT0gMSkKKwkJZ290byBjbGVhbnVwOworCisJLy8gU3RhcnQgdG8gZmlsbCB0aGUgZGF0YQorCWRvIHsKKwkJRmlsbEluZGV4ID0gcE1kcy0+VHhGaWxsSW5kZXg7CisJCWlmIChwTWRzLT5UeE93bmVyW0ZpbGxJbmRleF0pIHsgLy8gSXMgb3duZWQgYnkgc29mdHdhcmUgMDpZZXMgMTpObworI2lmZGVmIF9QRV9UWF9EVU1QXworCQkJV0JERUJVRygoIltNZHNfVHhdIFR4IE93bmVyIGlzIEgvVy5cbiIpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCX0KKworCQlYbWl0QnVmQWRkcmVzcyA9IHBNZHMtPnBUeEJ1ZmZlciArIChNQVhfVVNCX1RYX0JVRkZFUiAqIEZpbGxJbmRleCk7IC8vR2V0IGJ1ZmZlcgorCQlYbWl0QnVmU2l6ZSA9IDA7CisJCUZpbGxDb3VudCA9IDA7CisJCWRvIHsKKwkJCVBhY2tldFNpemUgPSBBZGFwdGVyLT5zTWxtZUZyYW1lLmxlbjsKKwkJCWlmICghUGFja2V0U2l6ZSkKKwkJCQlicmVhazsKKworCQkJLy9Gb3IgQ2hlY2sgdGhlIGJ1ZmZlciByZXNvdXJjZQorCQkJRnJhZ21lbnRUaHJlc2hvbGQgPSBDVVJSRU5UX0ZSQUdNRU5UX1RIUkVTSE9MRDsKKwkJCS8vOTMxMTMwLjUuYgorCQkJRnJhZ21lbnRDb3VudCA9IFBhY2tldFNpemUvRnJhZ21lbnRUaHJlc2hvbGQgKyAxOworCQkJc3RtcCA9IFBhY2tldFNpemUgKyBGcmFnbWVudENvdW50KjMyICsgODsvLzkzMTEzMC41LmMgODpNSUMKKwkJCWlmICgoWG1pdEJ1ZlNpemUgKyBzdG1wKSA+PSBNQVhfVVNCX1RYX0JVRkZFUikgeworCQkJCXByaW50aygiW01kc19UeF0gRXhjZXNzIG1heCB0eCBidWZmZXIuXG4iKTsKKwkJCQlicmVhazsgLy8gYnVmZmVyIGlzIG5vdCBlbm91Z2gKKwkJCX0KKworCisJCQkvLworCQkJLy8gU3RhcnQgdHJhbnNtaXR0aW5nCisJCQkvLworCQkJQnVmZmVyRmlsbGVkID0gVFJVRTsKKworCQkJLyogTGVhdmVzIGZpcnN0IHU4IGludGFjdCAqLworCQkJbWVtc2V0KChQVUNIQVIpcFR4RGVzICsgMSwgMCwgc2l6ZW9mKERFU0NSSVBUT1IpIC0gMSk7CisKKwkJCVR4RGVzSW5kZXggPSBwTWRzLT5UeERlc0luZGV4Oy8vR2V0IHRoZSBjdXJyZW50IElECisJCQlwVHhEZXMtPkRlc2NyaXB0b3JfSUQgPSBUeERlc0luZGV4OworCQkJcE1kcy0+VHhEZXNGcm9tWyBUeERlc0luZGV4IF0gPSAyOy8vU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gb2Ygc291cmNlIGNvbW1pbmcgZnJvbQorCQkJcE1kcy0+VHhEZXNJbmRleCsrOworCQkJcE1kcy0+VHhEZXNJbmRleCAlPSBNQVhfVVNCX1RYX0RFU0NSSVBUT1I7CisKKwkJCU1MTUVfR2V0TmV4dFBhY2tldCggQWRhcHRlciwgcFR4RGVzICk7CisKKwkJCS8vIENvcHkgaGVhZGVyLiA4Ynl0ZSBVU0IgKyAyNGJ5dGUgODAyLjExSGRyLiBTZXQgVHhSYXRlLCBQcmVhbWJsZSB0eXBlCisJCQlNZHNfSGVhZGVyQ29weSggQWRhcHRlciwgcFR4RGVzLCBYbWl0QnVmQWRkcmVzcyApOworCisJCQkvLyBGb3Igc3BlZWQgdXAgS2V5IHNldHRpbmcKKwkJCWlmIChwVHhEZXMtPkVhcEZpeCkgeworI2lmZGVmIF9QRV9UWF9EVU1QXworCQkJCVdCREVCVUcoKCIzNTogRVBBIDR0aCBmcmFtZSBkZXRlY3RlZC4gU2l6ZSA9ICVkXG4iLCBQYWNrZXRTaXplKSk7CisjZW5kaWYKKwkJCQlwSHdEYXRhLT5Jc0tleVByZVNldCA9IDE7CisJCQl9CisKKwkJCS8vIENvcHkgKGZyYWdtZW50KSBmcmFtZSBib2R5LCBhbmQgc2V0IFVTQiwgODAyLjExIGhkciBmbGFnCisJCQlDdXJyZW50U2l6ZSA9IE1kc19Cb2R5Q29weShBZGFwdGVyLCBwVHhEZXMsIFhtaXRCdWZBZGRyZXNzKTsKKworCQkJLy8gU2V0IFJUUy9DVFMgYW5kIE5vcm1hbCBkdXJhdGlvbiBmaWVsZCBpbnRvIGJ1ZmZlcgorCQkJTWRzX0R1cmF0aW9uU2V0KEFkYXB0ZXIsIHBUeERlcywgWG1pdEJ1ZkFkZHJlc3MpOworCisJCQkvLworCQkJLy8gQ2FsY3VsYXRpb24gTUlDIGZyb20gYnVmZmVyIHdoaWNoIG1heWJlIGZyYWdtZW50LCB0aGVuIGZpbGwgaW50byB0ZW1wb3JhcnkgYWRkcmVzcyA4IGJ5dGUKKwkJCS8vIDkzMTEzMC41LmUKKwkJCWlmIChNSUNBZGQpCisJCQkJTWRzX01pY0ZpbGwoIEFkYXB0ZXIsIHBUeERlcywgWG1pdEJ1ZkFkZHJlc3MgKTsKKworCQkJLy9TaGlmdCB0byB0aGUgbmV4dCBhZGRyZXNzCisJCQlYbWl0QnVmU2l6ZSArPSBDdXJyZW50U2l6ZTsKKwkJCVhtaXRCdWZBZGRyZXNzICs9IEN1cnJlbnRTaXplOworCisjaWZkZWYgX0lCU1NfQkVBQ09OX1NFUV9TVElDS18KKwkJCWlmICgoWG1pdEJ1ZkFkZHJlc3NbIERPVF8xMV9EQV9PRkZTRVQrOCBdICYgMHhmYykgIT0gTUFDX1NVQlRZUEVfTU5HTU5UX1BST0JFX1JFUVVFU1QpIC8vICs4IGZvciBVU0IgaGRyCisjZW5kaWYKKwkJCQlwTWRzLT5UeFRvZ2dsZSA9IFRSVUU7CisKKwkJCS8vIEdldCBwYWNrZXQgdG8gdHJhbnNtaXQgY29tcGxldGVkLCAxOlRFU1RTVEEgMjpNTE1FIDM6IE5kaXMgZGF0YQorCQkJTUxNRV9TZW5kQ29tcGxldGUoQWRhcHRlciwgMCwgVFJVRSk7CisKKwkJCS8vIFNvZnR3YXJlIFRTQyBjb3VudCAyMDA2MDIxNAorCQkJcE1kcy0+VHhUc2MrKzsKKwkJCWlmIChwTWRzLT5UeFRzYyA9PSAwKQorCQkJCXBNZHMtPlR4VHNjXzIrKzsKKworCQkJRmlsbENvdW50Kys7IC8vIDIwMDYwOTI4CisJCX0gd2hpbGUgKEhBTF9VU0JfTU9ERV9CVVJTVChwSHdEYXRhKSk7IC8vIEVuZCBvZiBtdWx0aXBsZSBNU0RVIGNvcHkgbG9vcC4gRkFMU0UgPSBzaW5nbGUgVFJVRSA9IG11bHRpcGxlIHNlbmRpbmcKKworCQkvLyBNb3ZlIHRvIHRoZSBuZXh0IG9uZSwgaWYgbmVjZXNzYXJ5CisJCWlmIChCdWZmZXJGaWxsZWQpIHsKKwkJCS8vIHNpemUgc2V0dGluZworCQkJcE1kcy0+VHhCdWZmZXJTaXplWyBGaWxsSW5kZXggXSA9IFhtaXRCdWZTaXplOworCisJCQkvLyAyMDA2MDkyOCBzZXQgVHggY291bnQKKwkJCXBNZHMtPlR4Q291bnRJbkJ1ZmZlcltGaWxsSW5kZXhdID0gRmlsbENvdW50OworCisJCQkvLyBTZXQgb3duZXIgZmxhZworCQkJcE1kcy0+VHhPd25lcltGaWxsSW5kZXhdID0gMTsKKworCQkJcE1kcy0+VHhGaWxsSW5kZXgrKzsKKwkJCXBNZHMtPlR4RmlsbEluZGV4ICU9IE1BWF9VU0JfVFhfQlVGRkVSX05VTUJFUjsKKwkJCUJ1ZmZlckZpbGxlZCA9IEZBTFNFOworCQl9IGVsc2UKKwkJCWJyZWFrOworCisJCWlmICghUGFja2V0U2l6ZSkgLy8gTm8gbW9yZSBwayBmb3IgdHJhbnNtaXR0aW5nCisJCQlicmVhazsKKworCX0gd2hpbGUoVFJVRSk7CisKKwkvLworCS8vIFN0YXJ0IHRvIHNlbmQgYnkgbG93ZXIgbW9kdWxlCisJLy8KKwlpZiAoIXBId0RhdGEtPklzS2V5UHJlU2V0KQorCQlXYjM1VHhfc3RhcnQocEh3RGF0YSk7CisKKyBjbGVhbnVwOgorCU9TX0FUT01JQ19ERUMoIEFkYXB0ZXIsICZwTWRzLT5UeFRocmVhZENvdW50ICk7Cit9CisKK3ZvaWQKK01kc19TZW5kQ29tcGxldGUoUEFEQVBURVIgQWRhcHRlciwgUFQwMl9ERVNDUklQVE9SIHBUMDIpCit7CisJUE1EUwlwTWRzID0gJkFkYXB0ZXItPk1kczsKKwlwaHdfZGF0YV90CXBId0RhdGEgPSAmQWRhcHRlci0+c0h3RGF0YTsKKwl1OAlQYWNrZXRJZCA9ICh1OClwVDAyLT5UMDJfVHhfUGt0SUQ7CisJdW5zaWduZWQgY2hhcglTZW5kT0sgPSBUUlVFOworCXU4CVJldHJ5Q291bnQsIFR4UmF0ZTsKKworCWlmIChwVDAyLT5UMDJfSWdub3JlUmVzdWx0KSAvLyBEb24ndCBjYXJlIHRoZSByZXN1bHQKKwkJcmV0dXJuOworCWlmIChwVDAyLT5UMDJfSXNMYXN0TXBkdSkgeworCQkvL1RPRE86IERUTyAtLSBnZXQgdGhlIHJldHJ5IGNvdW50IGFuZCBmcmFnbWVudCBjb3VudAorCQkvLyBUeCByYXRlCisJCVR4UmF0ZSA9IHBNZHMtPlR4UmF0ZVsgUGFja2V0SWQgXVsgMCBdOworCQlSZXRyeUNvdW50ID0gKHU4KXBUMDItPlQwMl9NUERVX0NudDsKKwkJaWYgKHBUMDItPnZhbHVlICYgRkxBR19FUlJPUl9UWF9NQVNLKSB7CisJCQlTZW5kT0sgPSBGQUxTRTsKKworCQkJaWYgKHBUMDItPlQwMl90cmFuc21pdF9hYm9ydCB8fCBwVDAyLT5UMDJfb3V0X29mX01heFR4TVNEVUxpZnRUaW1lKSB7CisJCQkJLy9yZXRyeSBlcnJvcgorCQkJCXBId0RhdGEtPmR0b190eF9yZXRyeV9jb3VudCArPSAoUmV0cnlDb3VudCsxKTsKKwkJCQkvL1tmb3IgdHggZGVidWddCisJCQkJaWYgKFJldHJ5Q291bnQ8NykKKwkJCQkJcEh3RGF0YS0+dHhfcmV0cnlfY291bnRbUmV0cnlDb3VudF0gKz0gUmV0cnlDb3VudDsKKwkJCQllbHNlCisJCQkJCXBId0RhdGEtPnR4X3JldHJ5X2NvdW50WzddICs9IFJldHJ5Q291bnQ7CisJCQkJI2lmZGVmIF9QRV9TVEFURV9EVU1QXworCQkJCVdCREVCVUcoKCJkdG9fdHhfcmV0cnlfY291bnQgPSVkXG4iLCBwSHdEYXRhLT5kdG9fdHhfcmV0cnlfY291bnQpKTsKKwkJCQkjZW5kaWYKKwkJCQlNVE9fU2V0VHhDb3VudChBZGFwdGVyLCBUeFJhdGUsIFJldHJ5Q291bnQpOworCQkJfQorCQkJcEh3RGF0YS0+ZHRvX3R4X2ZyYWdfY291bnQgKz0gKFJldHJ5Q291bnQrMSk7CisKKwkJCS8vW2ZvciB0eCBkZWJ1Z10KKwkJCWlmIChwVDAyLT5UMDJfdHJhbnNtaXRfYWJvcnRfZHVlX3RvX1RCVFQpCisJCQkJcEh3RGF0YS0+dHhfVEJUVF9zdGFydF9jb3VudCsrOworCQkJaWYgKHBUMDItPlQwMl90cmFuc21pdF93aXRob3V0X2VuY3J5cHRpb25fZHVlX3RvX3dlcF9vbl9mYWxzZSkKKwkJCQlwSHdEYXRhLT50eF9XZXBPbl9mYWxzZV9jb3VudCsrOworCQkJaWYgKHBUMDItPlQwMl9kaXNjYXJkX2R1ZV90b19udWxsX3dlcF9rZXkpCisJCQkJcEh3RGF0YS0+dHhfTnVsbF9rZXlfY291bnQrKzsKKwkJfSBlbHNlIHsKKwkJCWlmIChwVDAyLT5UMDJfZWZmZWN0aXZlX3RyYW5zbWlzc2lvbl9yYXRlKQorCQkJCXBId0RhdGEtPnR4X0VUUl9jb3VudCsrOworCQkJTVRPX1NldFR4Q291bnQoQWRhcHRlciwgVHhSYXRlLCBSZXRyeUNvdW50KTsKKwkJfQorCisJCS8vIENsZWFyIHNlbmQgcmVzdWx0IGJ1ZmZlcgorCQlwTWRzLT5UeFJlc3VsdFsgUGFja2V0SWQgXSA9IDA7CisJfSBlbHNlCisJCXBNZHMtPlR4UmVzdWx0WyBQYWNrZXRJZCBdIHw9ICgodTE2KShwVDAyLT52YWx1ZSAmIDB4MGZmZmYpKTsKK30KKwordm9pZAorTWRzX0hlYWRlckNvcHkoUEFEQVBURVIgQWRhcHRlciwgUERFU0NSSVBUT1IgcERlcywgUFVDSEFSIFRhcmdldEJ1ZmZlcikKK3sKKwlQTURTCXBNZHMgPSAmQWRhcHRlci0+TWRzOworCVBVQ0hBUglzcmNfYnVmZmVyID0gcERlcy0+YnVmZmVyX2FkZHJlc3NbMF07Ly85MzExMzAuNS5nCisJUFQwMF9ERVNDUklQVE9SCXBUMDA7CisJUFQwMV9ERVNDUklQVE9SCXBUMDE7CisJdTE2CXN0bXA7CisJdTgJaSwgY3RtcDEsIGN0bXAyLCBjdG1wZjsKKwl1MTYJRnJhZ21lbnRUaHJlc2hvbGQgPSBDVVJSRU5UX0ZSQUdNRU5UX1RIUkVTSE9MRDsKKworCisJc3RtcCA9IHBEZXMtPmJ1ZmZlcl90b3RhbF9zaXplOworCS8vCisJLy8gU2V0IFVTQiBoZWFkZXIgOCBieXRlCisJLy8KKwlwVDAwID0gKFBUMDBfREVTQ1JJUFRPUilUYXJnZXRCdWZmZXI7CisJVGFyZ2V0QnVmZmVyICs9IDQ7CisJcFQwMSA9IChQVDAxX0RFU0NSSVBUT1IpVGFyZ2V0QnVmZmVyOworCVRhcmdldEJ1ZmZlciArPSA0OworCisJcFQwMC0+dmFsdWUgPSAwOy8vIENsZWFyCisJcFQwMS0+dmFsdWUgPSAwOy8vIENsZWFyCisKKwlwVDAwLT5UMDBfdHhfcGFja2V0X2lkID0gcERlcy0+RGVzY3JpcHRvcl9JRDsvLyBTZXQgcGFja2V0IElECisJcFQwMC0+VDAwX2hlYWRlcl9sZW5ndGggPSAyNDsvLyBTZXQgaGVhZGVyIGxlbmd0aAorCXBUMDEtPlQwMV9yZXRyeV9hYm9ydF9lYmFibGUgPSAxOy8vOTIxMDEzIDkzMTEzMC41LmgKKworCS8vIEtleSBJRCBzZXR1cAorCXBUMDEtPlQwMV93ZXBfaWQgPSAwOworCisJRnJhZ21lbnRUaHJlc2hvbGQgPSBERUZBVUxUX0ZSQUdNRU5UX1RIUkVTSE9MRDsJLy9EbyBub3QgZnJhZ21lbnQKKwkvLyBDb3B5IGZ1bGwgZGF0YSwgdGhlIDEnc3QgYnVmZmVyIGNvbnRhaW4gYWxsIHRoZSBkYXRhIDkzMTEzMC41LmoKKwltZW1jcHkoIFRhcmdldEJ1ZmZlciwgc3JjX2J1ZmZlciwgRE9UXzExX01BQ19IRUFERVJfU0laRSApOy8vIENvcHkgaGVhZGVyCisJcERlcy0+YnVmZmVyX2FkZHJlc3NbMF0gPSBzcmNfYnVmZmVyICsgRE9UXzExX01BQ19IRUFERVJfU0laRTsKKwlwRGVzLT5idWZmZXJfdG90YWxfc2l6ZSAtPSBET1RfMTFfTUFDX0hFQURFUl9TSVpFOworCXBEZXMtPmJ1ZmZlcl9zaXplWzBdID0gcERlcy0+YnVmZmVyX3RvdGFsX3NpemU7CisKKwkvLyBTZXQgZnJhZ21lbnQgdGhyZXNob2xkCisJRnJhZ21lbnRUaHJlc2hvbGQgLT0gKERPVF8xMV9NQUNfSEVBREVSX1NJWkUgKyA0KTsKKwlwRGVzLT5GcmFnbWVudFRocmVzaG9sZCA9IEZyYWdtZW50VGhyZXNob2xkOworCisJLy8gU2V0IG1vcmUgZnJhZyBiaXQKKwlUYXJnZXRCdWZmZXJbMV0gfD0gMHgwNDsvLyBTZXQgbW9yZSBmcmFnIGJpdAorCisJLy8KKwkvLyBTZXQgdHggcmF0ZQorCS8vCisJc3RtcCA9ICooUFVTSE9SVCkoVGFyZ2V0QnVmZmVyKzMwKTsgLy8gMm4gYWxpZ25tZW50IGFkZHJlc3MKKworCS8vVXNlIGJhc2ljIHJhdGUKKwljdG1wMSA9IGN0bXBmID0gQ1VSUkVOVF9UWF9SQVRFX0ZPUl9NTkc7CisKKwlwRGVzLT5UeFJhdGUgPSBjdG1wMTsKKwkjaWZkZWYgX1BFX1RYX0RVTVBfCisJV0JERUJVRygoIlR4IHJhdGUgPSV4XG4iLCBjdG1wMSkpOworCSNlbmRpZgorCisJcFQwMS0+VDAxX21vZHVsYXRpb25fdHlwZSA9IChjdG1wMSUzKSA/IDAgOiAxOworCisJZm9yKCBpPTA7IGk8MjsgaSsrICkgeworCQlpZiggaSA9PSAxICkKKwkJCWN0bXAxID0gY3RtcGY7CisKKwkJcE1kcy0+VHhSYXRlW3BEZXMtPkRlc2NyaXB0b3JfSURdW2ldID0gY3RtcDE7IC8vIGJhY2t1cCB0aGUgdGEgcmF0ZSBhbmQgZmFsbCBiYWNrIHJhdGUKKworCQlpZiggY3RtcDEgPT0gMTA4KSBjdG1wMiA9IDc7CisJCWVsc2UgaWYoIGN0bXAxID09IDk2ICkgY3RtcDIgPSA2OyAvLyBSYXRlIGNvbnZlcnQgZm9yIFVTQgorCQllbHNlIGlmKCBjdG1wMSA9PSA3MiApIGN0bXAyID0gNTsKKwkJZWxzZSBpZiggY3RtcDEgPT0gNDggKSBjdG1wMiA9IDQ7CisJCWVsc2UgaWYoIGN0bXAxID09IDM2ICkgY3RtcDIgPSAzOworCQllbHNlIGlmKCBjdG1wMSA9PSAyNCApIGN0bXAyID0gMjsKKwkJZWxzZSBpZiggY3RtcDEgPT0gMTggKSBjdG1wMiA9IDE7CisJCWVsc2UgaWYoIGN0bXAxID09IDEyICkgY3RtcDIgPSAwOworCQllbHNlIGlmKCBjdG1wMSA9PSAyMiApIGN0bXAyID0gMzsKKwkJZWxzZSBpZiggY3RtcDEgPT0gMTEgKSBjdG1wMiA9IDI7CisJCWVsc2UgaWYoIGN0bXAxID09IDQgICkgY3RtcDIgPSAxOworCQllbHNlIGN0bXAyID0gMDsgLy8gaWYoIGN0bXAxID09IDIgICkgb3IgZGVmYXVsdAorCisJCWlmKCBpID09IDAgKQorCQkJcFQwMS0+VDAxX3RyYW5zbWl0X3JhdGUgPSBjdG1wMjsKKwkJZWxzZQorCQkJcFQwMS0+VDAxX2ZhbGxfYmFja19yYXRlID0gY3RtcDI7CisJfQorCisJLy8KKwkvLyBTZXQgcHJlYW1ibGUgdHlwZQorCS8vCisJaWYgKChwVDAxLT5UMDFfbW9kdWxhdGlvbl90eXBlID09IDApICYmIChwVDAxLT5UMDFfdHJhbnNtaXRfcmF0ZSA9PSAwKSkJLy8gUkFURV8xTQorCQlwRGVzLT5QcmVhbWJsZU1vZGUgPSAgV0xBTl9QUkVBTUJMRV9UWVBFX0xPTkc7CisJZWxzZQorCQlwRGVzLT5QcmVhbWJsZU1vZGUgPSAgQ1VSUkVOVF9QUkVBTUJMRV9NT0RFOworCXBUMDEtPlQwMV9wbGNwX2hlYWRlcl9sZW5ndGggPSBwRGVzLT5QcmVhbWJsZU1vZGU7CS8vIFNldCBwcmVhbWJsZQorCit9CisKKy8vIFRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIDRuIHNpemUgb2YgdXNiIHBrCit1MTYKK01kc19Cb2R5Q29weShQQURBUFRFUiBBZGFwdGVyLCBQREVTQ1JJUFRPUiBwRGVzLCBQVUNIQVIgVGFyZ2V0QnVmZmVyKQoreworCVBUMDBfREVTQ1JJUFRPUglwVDAwOworCVBNRFMJcE1kcyA9ICZBZGFwdGVyLT5NZHM7CisJUFVDSEFSCWJ1ZmZlciwgc3JjX2J1ZmZlciwgcGN0bXA7CisJdTE2CVNpemUgPSAwOworCXUxNglTaXplTGVmdCwgQ29weVNpemUsIENvcHlMZWZ0LCBzdG1wOworCXU4CWJ1Zl9pbmRleCwgRnJhZ21lbnRDb3VudCA9IDA7CisKKworCS8vIENvcHkgZnJhZ21lbnQgYm9keQorCWJ1ZmZlciA9IFRhcmdldEJ1ZmZlcjsgLy8gc2hpZnQgOEIgdXNiICsgMjRCIDgwMi4xMQorCVNpemVMZWZ0ID0gcERlcy0+YnVmZmVyX3RvdGFsX3NpemU7CisJYnVmX2luZGV4ID0gcERlcy0+YnVmZmVyX3N0YXJ0X2luZGV4OworCisJcFQwMCA9IChQVDAwX0RFU0NSSVBUT1IpYnVmZmVyOworCXdoaWxlIChTaXplTGVmdCkgeworCQlwVDAwID0gKFBUMDBfREVTQ1JJUFRPUilidWZmZXI7CisJCUNvcHlTaXplID0gU2l6ZUxlZnQ7CisJCWlmIChTaXplTGVmdCA+IHBEZXMtPkZyYWdtZW50VGhyZXNob2xkKSB7CisJCQlDb3B5U2l6ZSA9IHBEZXMtPkZyYWdtZW50VGhyZXNob2xkOworCQkJcFQwMC0+VDAwX2ZyYW1lX2xlbmd0aCA9IDI0ICsgQ29weVNpemU7Ly9TZXQgVVNCIGxlbmd0aAorCQl9IGVsc2UKKwkJCXBUMDAtPlQwMF9mcmFtZV9sZW5ndGggPSAyNCArIFNpemVMZWZ0Oy8vU2V0IFVTQiBsZW5ndGgKKworCQlTaXplTGVmdCAtPSBDb3B5U2l6ZTsKKworCQkvLyAxIEJ5dGUgb3BlcmF0aW9uCisJCXBjdG1wID0gKFBVQ0hBUikoIGJ1ZmZlciArIDggKyBET1RfMTFfU0VRVUVOQ0VfT0ZGU0VUICk7CisJCSpwY3RtcCAmPSAweGYwOworCQkqcGN0bXAgfD0gRnJhZ21lbnRDb3VudDsvLzkzMTEzMC41Lm0KKwkJaWYoICFGcmFnbWVudENvdW50ICkKKwkJCXBUMDAtPlQwMF9maXJzdF9tcGR1ID0gMTsKKworCQlidWZmZXIgKz0gMzI7IC8vIDhCIHVzYiArIDI0QiA4MDIuMTEgaGVhZGVyCisJCVNpemUgKz0gMzI7CisKKwkJLy8gQ29weSBpbnRvIGJ1ZmZlcgorCQlzdG1wID0gQ29weVNpemUgKyAzOworCQlzdG1wICY9IH4weDAzOy8vNG4gQWxpZ25tZW50CisJCVNpemUgKz0gc3RtcDsvLyBDdXJyZW50IDRuIG9mZnNldCBvZiBtcGR1CisKKwkJd2hpbGUgKENvcHlTaXplKSB7CisJCQkvLyBDb3B5IGJvZHkKKwkJCXNyY19idWZmZXIgPSBwRGVzLT5idWZmZXJfYWRkcmVzc1tidWZfaW5kZXhdOworCQkJQ29weUxlZnQgPSBDb3B5U2l6ZTsKKwkJCWlmIChDb3B5U2l6ZSA+PSBwRGVzLT5idWZmZXJfc2l6ZVtidWZfaW5kZXhdKSB7CisJCQkJQ29weUxlZnQgPSBwRGVzLT5idWZmZXJfc2l6ZVtidWZfaW5kZXhdOworCisJCQkJLy8gR2V0IHRoZSBuZXh0IGJ1ZmZlciBvZiBkZXNjcmlwdG9yCisJCQkJYnVmX2luZGV4Kys7CisJCQkJYnVmX2luZGV4ICU9IE1BWF9ERVNDUklQVE9SX0JVRkZFUl9JTkRFWDsKKwkJCX0gZWxzZSB7CisJCQkJUFVDSEFSCXBjdG1wID0gcERlcy0+YnVmZmVyX2FkZHJlc3NbYnVmX2luZGV4XTsKKwkJCQlwY3RtcCArPSBDb3B5U2l6ZTsKKwkJCQlwRGVzLT5idWZmZXJfYWRkcmVzc1tidWZfaW5kZXhdID0gcGN0bXA7CisJCQkJcERlcy0+YnVmZmVyX3NpemVbYnVmX2luZGV4XSAtPSBDb3B5U2l6ZTsKKwkJCX0KKworCQkJbWVtY3B5KGJ1ZmZlciwgc3JjX2J1ZmZlciwgQ29weUxlZnQpOworCQkJYnVmZmVyICs9IENvcHlMZWZ0OworCQkJQ29weVNpemUgLT0gQ29weUxlZnQ7CisJCX0KKworCQkvLyA5MzExMzAuNS5uCisJCWlmIChwTWRzLT5NaWNBZGQpIHsKKwkJCWlmICghU2l6ZUxlZnQpIHsKKwkJCQlwTWRzLT5NaWNXcml0ZUFkZHJlc3NbIHBNZHMtPk1pY1dyaXRlSW5kZXggXSA9IGJ1ZmZlciAtIHBNZHMtPk1pY0FkZDsKKwkJCQlwTWRzLT5NaWNXcml0ZVNpemVbIHBNZHMtPk1pY1dyaXRlSW5kZXggXSA9IHBNZHMtPk1pY0FkZDsKKwkJCQlwTWRzLT5NaWNBZGQgPSAwOworCQkJfQorCQkJZWxzZSBpZiggU2l6ZUxlZnQgPCA4ICkgLy85MzExMzAuNS5wCisJCQl7CisJCQkJcE1kcy0+TWljQWRkID0gU2l6ZUxlZnQ7CisJCQkJcE1kcy0+TWljV3JpdGVBZGRyZXNzWyBwTWRzLT5NaWNXcml0ZUluZGV4IF0gPSBidWZmZXIgLSAoIDggLSBTaXplTGVmdCApOworCQkJCXBNZHMtPk1pY1dyaXRlU2l6ZVsgcE1kcy0+TWljV3JpdGVJbmRleCBdID0gOCAtIFNpemVMZWZ0OworCQkJCXBNZHMtPk1pY1dyaXRlSW5kZXgrKzsKKwkJCX0KKwkJfQorCisJCS8vIERvZXMgaXQgbmVlZCB0byBnZW5lcmF0ZSB0aGUgbmV3IGhlYWRlciBmb3IgbmV4dCBtcGR1PworCQlpZiAoU2l6ZUxlZnQpIHsKKwkJCWJ1ZmZlciA9IFRhcmdldEJ1ZmZlciArIFNpemU7IC8vIEdldCB0aGUgbmV4dCA0biBzdGFydCBhZGRyZXNzCisJCQltZW1jcHkoIGJ1ZmZlciwgVGFyZ2V0QnVmZmVyLCAzMiApOy8vQ29weSA4QiBVU0IgKzI0QiA4MDIuMTEKKwkJCXBUMDAgPSAoUFQwMF9ERVNDUklQVE9SKWJ1ZmZlcjsKKwkJCXBUMDAtPlQwMF9maXJzdF9tcGR1ID0gMDsKKwkJfQorCisJCUZyYWdtZW50Q291bnQrKzsKKwl9CisKKwlwVDAwLT5UMDBfbGFzdF9tcGR1ID0gMTsKKwlwVDAwLT5UMDBfSXNMYXN0TXBkdSA9IDE7CisJYnVmZmVyID0gKFBVQ0hBUilwVDAwICsgODsgLy8gKzggZm9yIFVTQiBoZHIKKwlidWZmZXJbMV0gJj0gfjB4MDQ7IC8vIENsZWFyIG1vcmUgZnJhZyBiaXQgb2YgODAyLjExIGZyYW1lIGNvbnRyb2wKKwlwRGVzLT5GcmFnbWVudENvdW50ID0gRnJhZ21lbnRDb3VudDsgLy8gVXBkYXRlIHRoZSBjb3JyZWN0IGZyYWdtZW50IG51bWJlcgorCXJldHVybiBTaXplOworfQorCisKK3ZvaWQKK01kc19EdXJhdGlvblNldCggIFBBREFQVEVSIEFkYXB0ZXIsICBQREVTQ1JJUFRPUiBwRGVzLCAgUFVDSEFSIGJ1ZmZlciApCit7CisJUFQwMF9ERVNDUklQVE9SCXBUMDA7CisJUFQwMV9ERVNDUklQVE9SCXBUMDE7CisJdTE2CUR1cmF0aW9uLCBOZXh0Qm9keUxlbiwgT2Zmc2V0U2l6ZTsKKwl1OAlSYXRlLCBpOworCXVuc2lnbmVkIGNoYXIJQ1RTX29uID0gRkFMU0UsIFJUU19vbiA9IEZBTFNFOworCVBUMDBfREVTQ1JJUFRPUiBwTmV4dFQwMDsKKwl1MTYgQm9keUxlbjsKKwl1bnNpZ25lZCBjaGFyIGJvR3JvdXBBZGRyID0gRkFMU0U7CisKKworCU9mZnNldFNpemUgPSBwRGVzLT5GcmFnbWVudFRocmVzaG9sZCArIDMyICsgMzsKKwlPZmZzZXRTaXplICY9IH4weDAzOworCVJhdGUgPSBwRGVzLT5UeFJhdGUgPj4gMTsKKwlpZiAoIVJhdGUpCisJCVJhdGUgPSAxOworCisJcFQwMCA9IChQVDAwX0RFU0NSSVBUT1IpYnVmZmVyOworCXBUMDEgPSAoUFQwMV9ERVNDUklQVE9SKShidWZmZXIrNCk7CisJcE5leHRUMDAgPSAoUFQwMF9ERVNDUklQVE9SKShidWZmZXIrT2Zmc2V0U2l6ZSk7CisKKwlpZiggYnVmZmVyWyBET1RfMTFfREFfT0ZGU0VUKzggXSAmIDB4MSApIC8vICs4IGZvciBVU0IgaGRyCisJCWJvR3JvdXBBZGRyID0gVFJVRTsKKworCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCS8vIFNldCBSVFMvQ1RTIG1lY2hhbmlzbQorCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCWlmICghYm9Hcm91cEFkZHIpCisJeworCQkvL05PVEUgOiBJZiB0aGUgcHJvdGVjdGlvbiBtb2RlIGlzIGVuYWJsZWQgYW5kIHRoZSBNU0RVIHdpbGwgYmUgZnJhZ21lbnRlZCwKKwkJLy8JCSB0aGUgdHggcmF0ZXMgb2YgTVBEVXMgd2lsbCBhbGwgYmUgRFNTUyByYXRlcy4gU28gaXQgd2lsbCBub3QgdXNlCisJCS8vCQkgQ1RTLXRvLXNlbGYgaW4gdGhpcyBjYXNlLiBDVFMtVG8tc2VsZiB3aWxsIG9ubHkgYmUgdXNlZCB3aGVuIHdpdGhvdXQKKwkJLy8JCSBmcmFnbWVudGF0aW9uLiAtLSAyMDA1MDExMgorCQlCb2R5TGVuID0gKHUxNilwVDAwLT5UMDBfZnJhbWVfbGVuZ3RoOwkvL2luY2x1ZGUgODAyLjExIGhlYWRlcgorCQlCb2R5TGVuICs9IDQ7CS8vQ1JDCisKKwkJaWYoIEJvZHlMZW4gPj0gQ1VSUkVOVF9SVFNfVEhSRVNIT0xEICkKKwkJCVJUU19vbiA9IFRSVUU7IC8vIFVzaW5nIFJUUworCQllbHNlCisJCXsKKwkJCWlmKCBwVDAxLT5UMDFfbW9kdWxhdGlvbl90eXBlICkgLy8gSXMgdXNpbmcgT0ZETQorCQkJeworCQkJCWlmKCBDVVJSRU5UX1BST1RFQ1RfTUVDSEFOSVNNICkgLy8gSXMgdXNpbmcgcHJvdGVjdAorCQkJCQlDVFNfb24gPSBUUlVFOyAvLyBVc2luZyBDVFMKKwkJCX0KKwkJfQorCX0KKworCWlmKCBSVFNfb24gfHwgQ1RTX29uICkKKwl7CisJCWlmKCBwVDAxLT5UMDFfbW9kdWxhdGlvbl90eXBlKSAvLyBJcyB1c2luZyBPRkRNCisJCXsKKwkJCS8vQ1RTIGR1cmF0aW9uCisJCQkvLyAyIFNJRlMgKyBEQVRBIHRyYW5zbWl0IHRpbWUgKyAxIEFDSworCQkJLy8gQUNLIFJhdGUgOiAyNCBNZWdhIGJwcworCQkJLy8gQUNLIGZyYW1lIGxlbmd0aCA9IDE0IGJ5dGVzCisJCQlEdXJhdGlvbiA9IDIqREVGQVVMVF9TSUZTVElNRSArCisJCQkJCSAgIDIqUFJFQU1CTEVfUExVU19TSUdOQUxfUExVU19TSUdOQUxFWFRFTlNJT04gKworCQkJCQkgICAoKEJvZHlMZW4qOCArIDIyICsgUmF0ZSo0IC0gMSkvKFJhdGUqNCkpKlRzeW0gKworCQkJCQkgICAoKDExMiArIDIyICsgOTUpLzk2KSpUc3ltOworCQl9CisJCWVsc2UJLy9EU1NTCisJCXsKKwkJCS8vQ1RTIGR1cmF0aW9uCisJCQkvLyAyIFNJRlMgKyBEQVRBIHRyYW5zbWl0IHRpbWUgKyAxIEFDSworCQkJLy8gUmF0ZSA6ID8/IE1lZ2EgYnBzCisJCQkvLyBBQ0sgZnJhbWUgbGVuZ3RoID0gMTQgYnl0ZXMKKwkJCWlmKCBwVDAxLT5UMDFfcGxjcF9oZWFkZXJfbGVuZ3RoICkgLy9sb25nIHByZWFtYmxlCisJCQkJRHVyYXRpb24gPSBMT05HX1BSRUFNQkxFX1BMVVNfUExDUEhFQURFUl9USU1FKjI7CisJCQllbHNlCisJCQkJRHVyYXRpb24gPSBTSE9SVF9QUkVBTUJMRV9QTFVTX1BMQ1BIRUFERVJfVElNRSoyOworCisJCQlEdXJhdGlvbiArPSAoICgoQm9keUxlbiArIDE0KSo4ICsgUmF0ZS0xKSAvIFJhdGUgKworCQkJCQkJREVGQVVMVF9TSUZTVElNRSoyICk7CisJCX0KKworCQlpZiggUlRTX29uICkKKwkJeworCQkJaWYoIHBUMDEtPlQwMV9tb2R1bGF0aW9uX3R5cGUgKSAvLyBJcyB1c2luZyBPRkRNCisJCQl7CisJCQkJLy9DVFMgKyAxIFNJRlMgKyBDVFMgZHVyYXRpb24KKwkJCQkvL0NUUyBSYXRlIDogMjQgTWVnYSBicHMKKwkJCQkvL0NUUyBmcmFtZSBsZW5ndGggPSAxNCBieXRlcworCQkJCUR1cmF0aW9uICs9IChERUZBVUxUX1NJRlNUSU1FICsKKwkJCQkJCQkJUFJFQU1CTEVfUExVU19TSUdOQUxfUExVU19TSUdOQUxFWFRFTlNJT04gKworCQkJCQkJCQkoKDExMiArIDIyICsgOTUpLzk2KSpUc3ltKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvL0NUUyArIDEgU0lGUyArIENUUyBkdXJhdGlvbgorCQkJCS8vQ1RTIFJhdGUgOiA/PyBNZWdhIGJwcworCQkJCS8vQ1RTIGZyYW1lIGxlbmd0aCA9IDE0IGJ5dGVzCisJCQkJaWYoIHBUMDEtPlQwMV9wbGNwX2hlYWRlcl9sZW5ndGggKSAvL2xvbmcgcHJlYW1ibGUKKwkJCQkJRHVyYXRpb24gKz0gTE9OR19QUkVBTUJMRV9QTFVTX1BMQ1BIRUFERVJfVElNRTsKKwkJCQllbHNlCisJCQkJCUR1cmF0aW9uICs9IFNIT1JUX1BSRUFNQkxFX1BMVVNfUExDUEhFQURFUl9USU1FOworCisJCQkJRHVyYXRpb24gKz0gKCAoKDExMiArIFJhdGUtMSkgLyBSYXRlKSArIERFRkFVTFRfU0lGU1RJTUUgKTsKKwkJCX0KKwkJfQorCisJCS8vIFNldCB0aGUgdmFsdWUgaW50byBVU0IgZGVzY3JpcHRvcgorCQlwVDAxLT5UMDFfYWRkX3J0cyA9IFJUU19vbiA/IDEgOiAwOworCQlwVDAxLT5UMDFfYWRkX2N0cyA9IENUU19vbiA/IDEgOiAwOworCQlwVDAxLT5UMDFfcnRzX2N0c19kdXJhdGlvbiA9IER1cmF0aW9uOworCX0KKworCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCS8vIEZpbGwgdGhlIG1vcmUgZnJhZ21lbnQgZGVzY3JpcHRvcgorCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCWlmKCBib0dyb3VwQWRkciApCisJCUR1cmF0aW9uID0gMDsKKwllbHNlCisJeworCQlmb3IoIGk9cERlcy0+RnJhZ21lbnRDb3VudC0xOyBpPjA7IGktLSApCisJCXsKKwkJCU5leHRCb2R5TGVuID0gKHUxNilwTmV4dFQwMC0+VDAwX2ZyYW1lX2xlbmd0aDsKKwkJCU5leHRCb2R5TGVuICs9IDQ7CS8vQ1JDCisKKwkJCWlmKCBwVDAxLT5UMDFfbW9kdWxhdGlvbl90eXBlICkKKwkJCXsKKwkJCQkvL09GRE0KKwkJCQkvLyBkYXRhIHRyYW5zbWl0IHRpbWUgKyAzIFNJRlMgKyAyIEFDSworCQkJCS8vIFJhdGUgOiA/P01lZ2EgYnBzCisJCQkJLy8gQUNLIGZyYW1lIGxlbmd0aCA9IDE0IGJ5dGVzLCB0eCByYXRlID0gMjRNCisJCQkJRHVyYXRpb24gPSBQUkVBTUJMRV9QTFVTX1NJR05BTF9QTFVTX1NJR05BTEVYVEVOU0lPTiAqIDM7CisJCQkJRHVyYXRpb24gKz0gKCgoTmV4dEJvZHlMZW4qOCArIDIyICsgUmF0ZSo0IC0gMSkvKFJhdGUqNCkpICogVHN5bSArCisJCQkJCQkJKCgoMioxNCkqOCArIDIyICsgOTUpLzk2KSpUc3ltICsKKwkJCQkJCQlERUZBVUxUX1NJRlNUSU1FKjMpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8vRFNTUworCQkJCS8vIGRhdGEgdHJhbnNtaXQgdGltZSArIDIgQUNLICsgMyBTSUZTCisJCQkJLy8gUmF0ZSA6ID8/TWVnYSBicHMKKwkJCQkvLyBBQ0sgZnJhbWUgbGVuZ3RoID0gMTQgYnl0ZXMKKwkJCQkvL1RPRE8gOgorCQkJCWlmKCBwVDAxLT5UMDFfcGxjcF9oZWFkZXJfbGVuZ3RoICkgLy9sb25nIHByZWFtYmxlCisJCQkJCUR1cmF0aW9uID0gTE9OR19QUkVBTUJMRV9QTFVTX1BMQ1BIRUFERVJfVElNRSozOworCQkJCWVsc2UKKwkJCQkJRHVyYXRpb24gPSBTSE9SVF9QUkVBTUJMRV9QTFVTX1BMQ1BIRUFERVJfVElNRSozOworCisJCQkJRHVyYXRpb24gKz0gKCAoKE5leHRCb2R5TGVuICsgKDIqMTQpKSo4ICsgUmF0ZS0xKSAvIFJhdGUgKworCQkJCQkJCURFRkFVTFRfU0lGU1RJTUUqMyApOworCQkJfQorCisJCQkoKFBVU0hPUlQpYnVmZmVyKVs1XSA9IGNwdV90b19sZTE2KER1cmF0aW9uKTsvLyA0IFVTSE9SIGZvciBza2lwIDhCIFVTQiwgMlVTSE9SVD1GQyArIER1cmF0aW9uCisKKwkJCS8vLS0tLTIwMDYxMDA5IGFkZCBieSBhbnNvbidzIGVuZGlhbgorCQkJcE5leHRUMDAtPnZhbHVlID0gY3B1X3RvX2xlMzIocE5leHRUMDAtPnZhbHVlKTsKKwkJCXBUMDEtPnZhbHVlID0gY3B1X3RvX2xlMzIoIHBUMDEtPnZhbHVlICk7CisJCQkvLy0tLS1lbmQgMjAwNjEwMDkgYWRkIGJ5IGFuc29uJ3MgZW5kaWFuCisKKwkJCWJ1ZmZlciArPSBPZmZzZXRTaXplOworCQkJcFQwMSA9IChQVDAxX0RFU0NSSVBUT1IpKGJ1ZmZlcis0KTsKKwkJCWlmIChpICE9IDEpCS8vVGhlIGxhc3QgZnJhZ21lbnQgd2lsbCBub3QgaGF2ZSB0aGUgbmV4dCBmcmFnbWVudAorCQkJCXBOZXh0VDAwID0gKFBUMDBfREVTQ1JJUFRPUikoYnVmZmVyK09mZnNldFNpemUpOworCQl9CisKKwkJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCS8vIEZpbGwgdGhlIGxhc3QgZnJhZ21lbnQgZGVzY3JpcHRvcgorCQkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJaWYoIHBUMDEtPlQwMV9tb2R1bGF0aW9uX3R5cGUgKQorCQl7CisJCQkvL09GRE0KKwkJCS8vIDEgU0lGUyArIDEgQUNLCisJCQkvLyBSYXRlIDogMjQgTWVnYSBicHMKKwkJCS8vIEFDSyBmcmFtZSBsZW5ndGggPSAxNCBieXRlcworCQkJRHVyYXRpb24gPSBQUkVBTUJMRV9QTFVTX1NJR05BTF9QTFVTX1NJR05BTEVYVEVOU0lPTjsKKwkJCS8vVGhlIFR4IHJhdGUgb2YgQUNLIHVzZSAyNE0KKwkJCUR1cmF0aW9uICs9ICgoKDExMiArIDIyICsgOTUpLzk2KSpUc3ltICsgREVGQVVMVF9TSUZTVElNRSApOworCQl9CisJCWVsc2UKKwkJeworCQkJLy8gRFNTUworCQkJLy8gMSBBQ0sgKyAxIFNJRlMKKwkJCS8vIFJhdGUgOiA/PyBNZWdhIGJwcworCQkJLy8gQUNLIGZyYW1lIGxlbmd0aCA9IDE0IGJ5dGVzKDExMiBiaXRzKQorCQkJaWYoIHBUMDEtPlQwMV9wbGNwX2hlYWRlcl9sZW5ndGggKSAvL2xvbmcgcHJlYW1ibGUKKwkJCQlEdXJhdGlvbiA9IExPTkdfUFJFQU1CTEVfUExVU19QTENQSEVBREVSX1RJTUU7CisJCQllbHNlCisJCQkJRHVyYXRpb24gPSBTSE9SVF9QUkVBTUJMRV9QTFVTX1BMQ1BIRUFERVJfVElNRTsKKworCQkJRHVyYXRpb24gKz0gKCAoMTEyICsgUmF0ZS0xKS9SYXRlICsJREVGQVVMVF9TSUZTVElNRSApOworCQl9CisJfQorCisJKChQVVNIT1JUKWJ1ZmZlcilbNV0gPSBjcHVfdG9fbGUxNihEdXJhdGlvbik7Ly8gNCBVU0hPUiBmb3Igc2tpcCA4QiBVU0IsIDJVU0hPUlQ9RkMgKyBEdXJhdGlvbgorCXBUMDAtPnZhbHVlID0gY3B1X3RvX2xlMzIocFQwMC0+dmFsdWUpOworCXBUMDEtPnZhbHVlID0gY3B1X3RvX2xlMzIocFQwMS0+dmFsdWUpOworCS8vLS1lbmQgMjAwNjEwMDkgYWRkCisKK30KKwordm9pZCBNRFNfRXRoZXJuZXRQYWNrZXRSZWNlaXZlKCAgUEFEQVBURVIgQWRhcHRlciwgIFBSWExBWUVSMSBwUnhMYXllcjEgKQoreworCQlPU19SRUNFSVZFX1BBQ0tFVF9JTkRJQ0FURSggQWRhcHRlciwgcFJ4TGF5ZXIxICk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzX2YuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kc19mLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxMTg4YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kc19mLmgKQEAgLTAsMCArMSwzMyBAQAordW5zaWduZWQgY2hhciBNZHNfaW5pdGlhbCggIFBBREFQVEVSIEFkYXB0ZXIgKTsKK3ZvaWQgTWRzX0Rlc3Ryb3koICBQQURBUFRFUiBBZGFwdGVyICk7Cit2b2lkIE1kc19UeCggIFBBREFQVEVSIEFkYXB0ZXIgKTsKK3ZvaWQgTWRzX0hlYWRlckNvcHkoICBQQURBUFRFUiBBZGFwdGVyLCAgUERFU0NSSVBUT1IgcERlcywgIFBVQ0hBUiBUYXJnZXRCdWZmZXIgKTsKK3UxNiBNZHNfQm9keUNvcHkoICBQQURBUFRFUiBBZGFwdGVyLCAgUERFU0NSSVBUT1IgcERlcywgIFBVQ0hBUiBUYXJnZXRCdWZmZXIgKTsKK3ZvaWQgTWRzX0R1cmF0aW9uU2V0KCAgUEFEQVBURVIgQWRhcHRlciwgIFBERVNDUklQVE9SIHBEZXMsICBQVUNIQVIgVGFyZ2V0QnVmZmVyICk7Cit2b2lkIE1kc19TZW5kQ29tcGxldGUoICBQQURBUFRFUiBBZGFwdGVyLCAgUFQwMl9ERVNDUklQVE9SIHBUMDIgKTsKK3ZvaWQgTWRzX01wZHVQcm9jZXNzKCAgUEFEQVBURVIgQWRhcHRlciwgIFBERVNDUklQVE9SIHBSeERlcyApOwordm9pZCBNZHNfcmVzZXRfZGVzY3JpcHRvciggIFBBREFQVEVSIEFkYXB0ZXIgKTsKK2V4dGVybiB2b2lkIERhdGFEbXAodTggKnBkYXRhLCB1MzIgbGVuLCB1MzIgb2Zmc2V0KTsKKworCit2b2lkIHZSeFRpbWVySW5pdChQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOwordm9pZCB2UnhUaW1lclN0YXJ0KFBXQjMyX0FEQVBURVIgQWRhcHRlciwgaW50IHRpbWVvdXRfdmFsdWUpOwordm9pZCBSeFRpbWVySGFuZGxlcl8xYSggUEFEQVBURVIgQWRhcHRlcik7Cit2b2lkIHZSeFRpbWVyU3RvcChQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOwordm9pZCBSeFRpbWVySGFuZGxlciggdm9pZCoJCQlTeXN0ZW1TcGVjaWZpYzEsCisJCQkJCSAgIFBXQjMyX0FEQVBURVIgCUFkYXB0ZXIsCisJCQkJCSAgIHZvaWQqCQkJU3lzdGVtU3BlY2lmaWMyLAorCQkJCQkgICB2b2lkKgkJCVN5c3RlbVNwZWNpZmljMyk7CisKKworLy8gRm9yIEFzeW5jaHJvbm91cyBpbmRpY2F0aW5nLiBUaGUgcm91dGluZSBjb2xsb2NhdGVzIHdpdGggVVNCLgordm9pZCBNZHNfTXNkdVByb2Nlc3MoICBQV0IzMl9BREFQVEVSIEFkYXB0ZXIsICBQUlhMQVlFUjEgcFJ4TGF5ZXIxLCAgdTggU2xvdEluZGV4KTsKKworLy8gRm9yIGRhdGEgZnJhbWUgc2VuZGluZyAyMDA2MDgwMgordTE2IE1EU19HZXRQYWNrZXRTaXplKCAgUEFEQVBURVIgQWRhcHRlciApOwordm9pZCBNRFNfR2V0TmV4dFBhY2tldCggIFBBREFQVEVSIEFkYXB0ZXIsICBQREVTQ1JJUFRPUiBwRGVzICk7Cit2b2lkIE1EU19HZXROZXh0UGFja2V0Q29tcGxldGUoICBQQURBUFRFUiBBZGFwdGVyLCAgUERFU0NSSVBUT1IgcERlcyApOwordm9pZCBNRFNfU2VuZFJlc3VsdCggIFBBREFQVEVSIEFkYXB0ZXIsICB1OCBQYWNrZXRJZCwgIHVuc2lnbmVkIGNoYXIgU2VuZE9LICk7Cit2b2lkIE1EU19FdGhlcm5ldFBhY2tldFJlY2VpdmUoICBQQURBUFRFUiBBZGFwdGVyLCAgUFJYTEFZRVIxIHBSeExheWVyMSApOworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kc19zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHNfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MzgyNzkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHNfcy5oCkBAIC0wLDAgKzEsMTgzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2RlZmluZSBNQVhfVVNCX1RYX0RFU0NSSVBUT1IJCTE1CQkvLyBJUzg5QzM1IGFiaWxpdHkKKyNkZWZpbmUgTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSCTQJCS8vIFZpcnR1YWwgcHJlLWJ1ZmZlciBudW1iZXIgb2YgTUFYX1VTQl9UWF9CVUZGRVIKKyNkZWZpbmUgTUFYX1VTQl9UWF9CVUZGRVIJCQk0MDk2CS8vIElTODlDMzUgYWJpbGl0eSA0biBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9yIGhhcmR3YXJlCisKKyNkZWZpbmUgTURTX0VWRU5UX0lORElDQVRFKCBfQSwgX0IsIF9GICkJT1NfRVZFTlRfSU5ESUNBVEUoIF9BLCBfQiwgX0YgKQorI2RlZmluZSBBVVRIX1JFUVVFU1RfUEFJUldJU0VfRVJST1IJCQkwCQkvLyBfRiBmbGFnIHNldHRpbmcKKyNkZWZpbmUgQVVUSF9SRVFVRVNUX0dST1VQX0VSUk9SCQkJMQkJLy8gX0YgZmxhZyBzZXR0aW5nCisKKy8vIEZvciB2YXJpYWJsZSBzZXR0aW5nCisjZGVmaW5lIENVUlJFTlRfQlNTX1RZUEUJCQkJcHNCU1MocHNMT0NBTC0+d0Nvbm5lY3RlZFNUQWluZGV4KS0+YkJzc1R5cGUKKyNkZWZpbmUgQ1VSUkVOVF9XRVBfTU9ERQkJCQlwc1NNRS0+X2RvdDExUHJpdmFjeUludm9rZWQKKyNkZWZpbmUgQ1VSUkVOVF9CU1NJRAkJCQkJcHNCU1MocHNMT0NBTC0+d0Nvbm5lY3RlZFNUQWluZGV4KS0+YWJCc3NJRAorI2RlZmluZSBDVVJSRU5UX0RFU0lSRURfV1BBX0VOQUJMRQkJKChwc1NNRS0+YkRlc2lyZWRBdXRoTW9kZT09V1BBX0FVVEgpfHwocHNTTUUtPmJEZXNpcmVkQXV0aE1vZGU9PVdQQVBTS19BVVRIKSkKKyNpZmRlZiBfV1BBMl8KKyNkZWZpbmUgQ1VSUkVOVF9ERVNJUkVEX1dQQTJfRU5BQkxFCQkoKHBzU01FLT5iRGVzaXJlZEF1dGhNb2RlPT1XUEEyX0FVVEgpfHwocHNTTUUtPmJEZXNpcmVkQXV0aE1vZGU9PVdQQTJQU0tfQVVUSCkpCisjZW5kaWYgLy9lbmQgZGVmIF9XUEEyXworI2RlZmluZSBDVVJSRU5UX1BBSVJXSVNFX0tFWV9PSwkJCXBzU01FLT5wYWlyd2lzZV9rZXlfb2sKKy8vWzIwMDQwNzEyIFdTXQorI2RlZmluZSBDVVJSRU5UX0dST1VQX0tFWV9PSwkJCXBzU01FLT5ncm91cF9rZXlfb2sKKyNkZWZpbmUgQ1VSUkVOVF9QQUlSV0lTRV9LRVkJCQlwc1NNRS0+dHhfbWljX2tleQorI2RlZmluZSBDVVJSRU5UX0dST1VQX0tFWQkJCQlwc1NNRS0+Z3JvdXBfdHhfbWljX2tleQorI2RlZmluZSBDVVJSRU5UX0VOQ1JZUFRfU1RBVFVTCQkJcHNTTUUtPmVuY3J5cHRfc3RhdHVzCisjZGVmaW5lIENVUlJFTlRfV0VQX0lECQkJCQlBZGFwdGVyLT5zU21lUGFyYS5fZG90MTFXRVBEZWZhdWx0S2V5SUQKKyNkZWZpbmUgQ1VSUkVOVF9DT05UUk9MX1BPUlRfQkxPQ0sJCSggcHNTTUUtPndwYV9vayE9MSB8fCAoQWRhcHRlci0+TWRzLmJvQ291bnRlck1lYXN1cmVCbG9jaz09MSAmJiAoQ1VSUkVOVF9FTkNSWVBUX1NUQVRVUz09RU5DUllQVF9US0lQKSkgKQorI2RlZmluZSBDVVJSRU5UX0ZSQUdNRU5UX1RIUkVTSE9MRAkJKEFkYXB0ZXItPk1kcy5UeEZyYWdtZW50VGhyZXNob2xkICYgfjB4MSkKKyNkZWZpbmUgQ1VSUkVOVF9QUkVBTUJMRV9NT0RFCQkJcHNMT0NBTC0+Ym9TaG9ydFByZWFtYmxlP1dMQU5fUFJFQU1CTEVfVFlQRV9TSE9SVDpXTEFOX1BSRUFNQkxFX1RZUEVfTE9ORworI2RlZmluZSBDVVJSRU5UX0xJTktfT04JCQkJCU9TX0xJTktfU1RBVFVTCisjZGVmaW5lIENVUlJFTlRfVFhfUkFURQkJCQkJQWRhcHRlci0+c0xvY2FsUGFyYS5DdXJyZW50VHhSYXRlCisjZGVmaW5lIENVUlJFTlRfRkFMTF9CQUNLX1RYX1JBVEUJCUFkYXB0ZXItPnNMb2NhbFBhcmEuQ3VycmVudFR4RmFsbGJhY2tSYXRlCisjZGVmaW5lIENVUlJFTlRfVFhfUkFURV9GT1JfTU5HCQkJQWRhcHRlci0+c0xvY2FsUGFyYS5DdXJyZW50VHhSYXRlRm9yTW5nCisjZGVmaW5lIENVUlJFTlRfUFJPVEVDVF9NRUNIQU5JU00JCXBzTE9DQUwtPmJvUHJvdGVjdE1lY2hhbmlzbQorI2RlZmluZSBDVVJSRU5UX1JUU19USFJFU0hPTEQJCQlBZGFwdGVyLT5NZHMuVHhSVFNUaHJlc2hvbGQKKworI2RlZmluZSBNSUJfR1NfWE1JVF9PS19JTkMJCQkJQWRhcHRlci0+c0xvY2FsUGFyYS5HU19YTUlUX09LKysKKyNkZWZpbmUgTUlCX0dTX1JDVl9PS19JTkMJCQkJQWRhcHRlci0+c0xvY2FsUGFyYS5HU19SQ1ZfT0srKworI2RlZmluZSBNSUJfR1NfWE1JVF9FUlJPUl9JTkMJCQlBZGFwdGVyLT5zTG9jYWxQYXJhLkdTX1hNSVRfRVJST1IKKworLy8tLS0tLS0tLS0tIFRYIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVUSEVSTkVUX1RYX0RFU0NSSVBUT1JTICAgICAgICAgTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSCisKKy8vLS0tLS0tLS0tLSBSWCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRVRIRVJORVRfUlhfREVTQ1JJUFRPUlMJCQk4CS8vSXQncyBub3QgbmVjZXNzYXJ5IHRvIGFsbG9jYXRlIG1vcmUgdGhhbiAyIGluIHN5bmMgaW5kaWNhdGUKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBDb25maWdyYXRpb24gZGVmYXVsdCB2YWx1ZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERFRkFVTFRfTVVMVElDQVNUTElTVE1BWAkJMzIgCQkvLyBzdGFuZGFyZAorI2RlZmluZSBERUZBVUxUX1RYX0JVUlNUTEVOR1RICQkJMyAJCS8vIDMyIExvbmd3b3JkcworI2RlZmluZSBERUZBVUxUX1JYX0JVUlNUTEVOR1RICQkJMyAJCS8vIDMyIExvbmd3b3JkcworI2RlZmluZSBERUZBVUxUX1RYX1RIUkVTSE9MRAkJCTAgCQkvLyBGdWxsIFBhY2tldAorI2RlZmluZSBERUZBVUxUX1JYX1RIUkVTSE9MRAkJCTAgCQkvLyBGdWxsIFBhY2tldAorI2RlZmluZSBERUZBVUxUX01BWFRYUkFURQkJCQk2IAkJLy8gMTEgTWJwcyAoTG9uZykKKyNkZWZpbmUgREVGQVVMVF9DSEFOTkVMCQkJCQkzIAkJLy8gQ2hlbm5lbCAzCisjZGVmaW5lIERFRkFVTFRfUlRTVGhyZXNob2xkCQkJMjM0NyAJLy8gRGlzYWJsZSBSVFMKKy8vI2RlZmluZSBERUZBVUxUX1BNRQkJCQkJCTEgCQkvLyBFbmFibGUKKyNkZWZpbmUgREVGQVVMVF9QTUUJCQkJCQkwIAkJLy8gRGlzYWJsZQorI2RlZmluZSBERUZBVUxUX1NJRlNUSU1FCQkJCTEwCisjZGVmaW5lIERFRkFVTFRfQUNLVElNRV8xTUwgICAgICAgICAgICAgMzA0ICAgICAvLyAxNDgrNDQrMTEyIDkxMTIyMCBieSBMQ0MKKyNkZWZpbmUgREVGQVVMVF9BQ0tUSU1FXzJNTCAgICAgICAgICAgICAyNDggICAgIC8vIDE0OCs0NCs1NiA5MTEyMjAgYnkgTENDCisjZGVmaW5lIERFRkFVTFRfRlJBR01FTlRfVEhSRVNIT0xEICAgICAgMjM0NiAJLy8gTm8gZnJhZ21lbnQKKyNkZWZpbmUgREVGQVVMVF9QUkVBTUJMRV9MRU5HVEgJCQk3MgorI2RlZmluZSBERUZBVUxUX1BMQ1BIRUFERVJUSU1FX0xFTkdUSAkyNAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAuOTYgc2VjIHNpbmNlIHRpbWUgdW5pdCBvZiB0aGUgUjAzIGZvciB0aGUgY3VycmVudCwgVzg5QzMyIGlzIGFib3V0IDYwbnMKKyBpbnN0ZWFkIG9mIDk2MCBucy4gVGhpcyBzaGFsbCBiZSBmaXhlZCBpbiB0aGUgZnV0dXJlIFc4OUMzMgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBERUZBVUxUX01BWF9SRUNFSVZFX1RJTUUgICAgICAgIDE2NDQwMDAwCisKKyNkZWZpbmUgUlhfQlVGX1NJWkUJCQkJCQkyMzUyICAgICAgICAvLyA2MDAgCS8vIEZvciAzMDEgbXVzdCBiZSBtdWx0aXBsZSBvZiA4CisjZGVmaW5lIE1BWF9SWF9ERVNDUklQVE9SUyAgICAgICAgICAgICAgMTggICAgICAgICAvLyBSeCBMYXllciAyCisjZGVmaW5lIE1BWF9CVUZGRVJfUVVFVUUJOCAvLyBUaGUgdmFsdWUgaXMgYWx3YXlzIGVxdWFsIDggZHVlIHRvIE5ESVNfUEFDS0VUJ3MgTWluaXBvcnRSZXNlcnZlZCBmaWVsZCBzaXplCisKKworLy8gRm9yIGJyYW5kLW5ldyByeCBzeXN0ZW0KKyNkZWZpbmUgTURTX0lEX0lHTk9SRQkJCQlFVEhFUk5FVF9SWF9ERVNDUklQVE9SUworCisvLyBGb3IgVHggUGFja2V0IHN0YXR1cyBjbGFzc2lmeQorI2RlZmluZSBQQUNLRVRfRlJFRV9UT19VU0UJCQkJCQkwCisjZGVmaW5lIFBBQ0tFVF9DT01FX0ZST01fTkRJUwkJCQkJMHgwOAorI2RlZmluZSBQQUNLRVRfQ09NRV9GUk9NX01MTUUJCQkJCTB4ODAKKyNkZWZpbmUgUEFDS0VUX1NFTkRfQ09NUExFVEUJCQkJCTB4ZmYKKwordHlwZWRlZiBzdHJ1Y3QgX01EUworeworCS8vIEZvciBUeCB1c2FnZQorCXU4CVR4T3duZXJbICgoTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSICsgMykgJiB+MHgwMykgXTsKKwlQVUNIQVIJcFR4QnVmZmVyOworCXUxNglUeEJ1ZmZlclNpemVbICgoTUFYX1VTQl9UWF9CVUZGRVJfTlVNQkVSICsgMSkgJiB+MHgwMSkgXTsKKwl1OAlUeERlc0Zyb21bICgoTUFYX1VTQl9UWF9ERVNDUklQVE9SICsgMykgJiB+MHgwMykgXTsvLzkzMTEzMC40LnUgLy8gMTogTUxNRSAyOiBORElTIGNvbnRyb2wgMzogTkRJUyBkYXRhCisJdTgJVHhDb3VudEluQnVmZmVyWyAoKE1BWF9VU0JfVFhfREVTQ1JJUFRPUiArIDMpICYgfjB4MDMpIF07IC8vIDIwMDYwOTI4CisKKwl1OAlUeEZpbGxJbmRleDsvL3RoZSBuZXh0IGluZGV4IG9mIFR4QnVmZmVyIGNhbiBiZSB1c2VkCisJdTgJVHhEZXNJbmRleDsvL1RoZSBuZXh0IGluZGV4IG9mIFR4RGVzIGNhbiBiZSB1c2VkCisJdTgJU2NhblR4UGF1c2U7CS8vZGF0YSBUeCBwYXVzZSBiZWNhdXNlIHRoZSBzY2FubmluZyBpcyBwcm9ncmVzc2luZywgYnV0IHByb2JlIHJlcXVlc3QgVHggd29uJ3QuCisJdTgJVHhQYXVzZTsvL0ZvciBwYXVzZSB0aGUgTWRzX1R4IG1vZHVsdAorCisJT1NfQVRPTUlDCVR4VGhyZWFkQ291bnQ7Ly9Gb3IgdGhyZWFkIGNvdW50aW5nIDkzMTEzMC40LnYKKy8vOTUwMzAxIGRlbGV0ZSBkdWUgdG8gSFcKKy8vCU9TX0FUT01JQwlUeENvbmN1cnJlbnRDb3VudDsvLzkzMTEzMC40LncKKworCXUxNglUeFJlc3VsdFsgKChNQVhfVVNCX1RYX0RFU0NSSVBUT1IgKyAxKSAmIH4weDAxKSBdOy8vQ29sbGVjdCB0aGUgc2VuZGluZyByZXN1bHQgb2YgTXBkdQorCisJdTgJTWljUmVkdW5kYW50WzhdOyAvLyBGb3IgdG1wIHVzZQorCVBVQ0hBUglNaWNXcml0ZUFkZHJlc3NbMl07IC8vVGhlIHN0YXJ0IGFkZHJlc3MgdG8gZmlsbCB0aGUgTWljLCB1c2UgMiBwb2ludCBkdWUgdG8gTWljIG1heWJlIGZyYWdtZW50CisKKwl1MTYJTWljV3JpdGVTaXplWzJdOyAvLzkzMTEzMC40LngKKworCXUxNglNaWNBZGQ7IC8vIElmIHdhbnQgdG8gYWRkIHRoZSBNaWMsIHRoaXMgdmFyaWFibGUgZXF1YWwgdG8gOAorCXUxNglNaWNXcml0ZUluZGV4Oy8vVGhlIG51bWJlciBvZiBNaWNXcml0ZUFkZHJlc3MgOTMxMTMwLjQueQorCisJdTgJVHhSYXRlWyAoKE1BWF9VU0JfVFhfREVTQ1JJUFRPUisxKSZ+MHgwMSkgXVsyXTsgLy8gWzBdIGN1cnJlbnQgdHggcmF0ZSwgWzFdIGZhbGwgYmFjayByYXRlCisJdTgJVHhJbmZvWyAoKE1BWF9VU0JfVFhfREVTQ1JJUFRPUisxKSZ+MHgwMSkgXTsJLy9TdG9yZSBpbmZvcm1hdGlvbiBmb3IgY2FsbGJhY2sgZnVuY3Rpb24KKworCS8vV0tDSEVOIGFkZGVkIGZvciBzY2FubmluZyBtZWNoYW5pc20KKwl1OAlUeFRvZ2dsZTsJCS8vSXQgaXMgVFJVRSBpZiB0aGVyZSBhcmUgdHggYWN0aXZpdGllcyBpbiBzb21lIHRpbWUgaW50ZXJ2YWwKKwl1OAlSZXNlcnZlZF9bM107CisKKwkvLy0tLS0tLS0tLS0gZm9yIFR4IFBhcmFtZXRlcgorCXUxNglUeEZyYWdtZW50VGhyZXNob2xkOyAgICAJLy8gRm9yIGZyYW1lIGJvZHkgb25seQorCXUxNglUeFJUU1RocmVzaG9sZDsKKworCXUzMgkJTWF4UmVjZWl2ZVRpbWU7Ly85MTEyMjAuMyBBZGQKKworCS8vIGRlcGVuZCBvbiBPUywKKwl1MzIJCQkJCU11bHRpY2FzdExpc3RObzsKKwl1MzIJCQkJCVBhY2tldEZpbHRlcjsgLy8gU2V0dGluZyBieSBORElTLCB0aGUgY3VycmVudCBwYWNrZXQgZmlsdGVyIGluIHVzZS4KKwl1OAkJCQkJTXVsdGljYXN0QWRkcmVzc2VzQXJyYXlbREVGQVVMVF9NVUxUSUNBU1RMSVNUTUFYXVtNQUNfQUREUl9MRU5HVEhdOworCisJLy9DT1VOVEVSTUVBU1VSRQorCXU4CQliTUlDZmFpbENvdW50OworCXU4CQlib0NvdW50ZXJNZWFzdXJlQmxvY2s7CisJdTgJCXJlc2VydmVkXzRbMl07CisKKwkvL05ESVNfTUlOSVBPUlRfVElNRVIJblRpbWVyOworCU9TX1RJTUVSCW5UaW1lcjsKKworCXUzMglUeFRzYzsgLy8gMjAwNjAyMTQKKwl1MzIJVHhUc2NfMjsgLy8gMjAwNjAyMTQKKworfSBNRFMsICpQTURTOworCisKK3R5cGVkZWYgc3RydWN0IF9SeEJ1ZmZlcgoreworICAgIFBVQ0hBUiAgcEJ1ZmZlckFkZHJlc3M7ICAgICAvLyBQb2ludGVyIHRoZSByZWNlaXZlZCBkYXRhIGJ1ZmZlci4KKwl1MTYJQnVmZmVyU2l6ZTsKKwl1OAlSRVNFUlZFRDsKKwl1OAlCdWZmZXJJbmRleDsvLyBPbmx5IDEgYnl0ZQorfSBSWEJVRkZFUiwgKlBSWEJVRkZFUjsKKworLy8KKy8vIFJldmVpdmUgTGF5ZXIgMSBGb3JtYXQuCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3R5cGVkZWYgc3RydWN0IF9SWExBWUVSMQoreworICAgIHUxNiAgU2VxdWVuY2VOdW1iZXI7ICAgICAvLyBUaGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBsYXN0IHJlY2VpdmVkIHBhY2tldC4KKwl1MTYJQnVmZmVyVG90YWxTaXplOworCisJdTMyCUluVXNlZDsKKyAgICB1MzIgICBEZWNyeXB0aW9uTWV0aG9kOyAgIC8vIFRoZSBkZXNpcmVkIGRlZnJhZ21lbnQgbnVtYmVyIG9mIHRoZSBuZXh0IGluY29taW5nIHBhY2tldC4KKworCXU4CURlRnJhZ21lbnROdW1iZXI7CisJdTgJRnJhbWVUeXBlOworICAgIHU4CVR5cGVFbmNhcHN1bGF0ZWQ7CisJdTgJQnVmZmVyTnVtYmVyOworCisJdTMyCUZpcnN0RnJhbWVBcnJpdmVkVGltZTsKKworCVJYQlVGRkVSCUJ1ZmZlclF1ZXVlWyBNQVhfQlVGRkVSX1FVRVVFIF07CisKKwl1OAkJTGFzdEZyYW1lVHlwZTsgLy8gMjAwNjEwMDQgZm9yIGZpeCBpbnRlbCAzOTQ1ICdzIGJ1ZworCXU4CQlSRVNFUlZFRFszXTsgIC8vQEAgYW5zb24KKworCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCS8vIEZvciBicmFuZC1uZXcgUnggc3lzdGVtCisJdTgJUmVzZXJ2ZWRCdWZmZXJbIDI0MDAgXTsvL0lmIEJ1ZmZlciBJRCBpcyByZXNlcnZlZCBvbmUsIGl0IG11c3QgY29weSB0aGUgZGF0YSBpbnRvIHRoaXMgYXJlYQorCVBVQ0hBUglSZXNlcnZlZEJ1ZmZlclBvaW50Oy8vIFBvaW50IHRvIHRoZSBuZXh0IGF2YWlsYWJlIGFkZHJlc3Mgb2YgcmVzZXJ2ZWQgYnVmZmVyCisKK31SWExBWUVSMSwgKiBQUlhMQVlFUjE7CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWxtZV9taWIuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWVfbWliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3NTk3MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWVfbWliLmgKQEAgLTAsMCArMSw4NCBAQAorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgTUxNRU1JQi5IIC0KKy8vCisvLyAgRGVzY3JpcHRpb246CisvLyAgICBHZXQgYW5kIFNldCBzb21lIG9mIE1MTUUgTUlCIGF0dHJpYnV0ZXMuCisvLworLy8gIFJldmlzaW9uIGhpc3Rvcnk6CisvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICAyMDAzMDExNyAgUEQ0MyBBdXN0aW4gTGl1CisvLyAgICAgICAgICAgICAgICAgICAgIEluaXRpYWwgcmVsZWFzZQorLy8KKy8vICBDb3B5cmlnaHQgKGMpIDIwMDMgV2luYm9uZCBFbGVjdHJvbmljcyBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyNpZm5kZWYgX01MTUVfTUlCX0gKKyNkZWZpbmUgX01MTUVfTUlCX0gKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBNTE1FU2V0RXhjbHVkZVVuZW5jcnlwdGVkIC0tCisvLworLy8gRGVzY3JpcHRpb246CisvLyAgIFNldCB0aGUgZG90MTFFeGNsdWRlVW5lbmNyeXB0ZWQgdmFsdWUuCisvLworLy8gQXJndW1lbnRzOgorLy8gICBBZGFwdGVyICAgICAgICAtIFRoZSBwb2ludGVyIHRvIHRoZSBtaW5pcG9ydCBhZGFwdGVyIGNvbnRleHQuCisvLyAgIEV4VW5lbmNyeXB0ZWQgIC0gdW5zaWduZWQgY2hhciB0eXBlLiBUaGUgdmFsdWUgdG8gYmUgc2V0LgorLy8KKy8vIFJldHVybiB2YWx1ZXM6CisvLyAgIE5vbmUuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgTUxNRVNldEV4Y2x1ZGVVbmVuY3J5cHRlZChBZGFwdGVyLCBFeFVuZW5jcnlwdGVkKSAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChBZGFwdGVyKS0+c0xvY2FsUGFyYS5FeGNsdWRlVW5lbmNyeXB0ZWQgPSBFeFVuZW5jcnlwdGVkOyAgICAgICAgICAgICBcCit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUxNRUdldEV4Y2x1ZGVVbmVuY3J5cHRlZCAtLQorLy8KKy8vIERlc2NyaXB0aW9uOgorLy8gICBHZXQgdGhlIGRvdDExRXhjbHVkZVVuZW5jcnlwdGVkIHZhbHVlLgorLy8KKy8vIEFyZ3VtZW50czoKKy8vICAgQWRhcHRlciAgICAgICAgLSBUaGUgcG9pbnRlciB0byB0aGUgbWluaXBvcnQgYWRhcHRlciBjb250ZXh0LgorLy8KKy8vIFJldHVybiB2YWx1ZXM6CisvLyAgIHVuc2lnbmVkIGNoYXIgdHlwZS4gVGhlIGN1cnJlbnQgZG90MTFFeGNsdWRlVW5lbmNyeXB0ZWQgdmFsdWUuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgTUxNRUdldEV4Y2x1ZGVVbmVuY3J5cHRlZChBZGFwdGVyKSAoKHVuc2lnbmVkIGNoYXIpIChBZGFwdGVyKS0+c0xvY2FsUGFyYS5FeGNsdWRlVW5lbmNyeXB0ZWQpCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUxNRVNldE1heFJlY2VpdmVMaWZlVGltZSAtLQorLy8KKy8vIERlc2NyaXB0aW9uOgorLy8gICBTZXQgdGhlIGRvdDExTWF4UmVjZWl2ZUxpZmVUaW1lIHZhbHVlLgorLy8KKy8vIEFyZ3VtZW50czoKKy8vICAgQWRhcHRlciAgICAgICAgLSBUaGUgcG9pbnRlciB0byB0aGUgbWluaXBvcnQgYWRhcHRlciBjb250ZXh0LgorLy8gICBSZWNlaXZlTGlmZVRpbWUtIHUzMiB0eXBlLiBUaGUgdmFsdWUgdG8gYmUgc2V0LgorLy8KKy8vIFJldHVybiB2YWx1ZXM6CisvLyAgIE5vbmUuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgTUxNRVNldE1heFJlY2VpdmVMaWZlVGltZShBZGFwdGVyLCBSZWNlaXZlTGlmZVRpbWUpICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKEFkYXB0ZXIpLT5NZHMuTWF4UmVjZWl2ZVRpbWUgPSBSZWNlaXZlTGlmZVRpbWU7ICAgICAgICAgICAgICAgIFwKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBNTE1FU2V0TWF4UmVjZWl2ZUxpZmVUaW1lIC0tCisvLworLy8gRGVzY3JpcHRpb246CisvLyAgIEdldCB0aGUgZG90MTFNYXhSZWNlaXZlTGlmZVRpbWUgdmFsdWUuCisvLworLy8gQXJndW1lbnRzOgorLy8gICBBZGFwdGVyICAgICAgICAtIFRoZSBwb2ludGVyIHRvIHRoZSBtaW5pcG9ydCBhZGFwdGVyIGNvbnRleHQuCisvLworLy8gUmV0dXJuIHZhbHVlczoKKy8vICAgdTMyIHR5cGUuIFRoZSBjdXJyZW50IGRvdDExTWF4UmVjZWl2ZUxpZmVUaW1lIHZhbHVlLgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIE1MTUVHZXRNYXhSZWNlaXZlTGlmZVRpbWUoQWRhcHRlcikgKCh1MzIpIChBZGFwdGVyKS0+TWRzLk1heFJlY2VpdmVUaW1lKQorCisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tbG1lX3MuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWVfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MDk0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tbG1lX3MuaApAQCAtMCwwICsxLDE5NSBAQAorLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworLy8JTWxtZS5oCisvLwkJRGVmaW5lIHRoZSByZWxhdGVkIGRlZmluaXRpb25zIG9mIE1MTUUgbW9kdWxlCisvLwloaXN0b3J5IC0tIDAxLzE0LzAzJyBjcmVhdGVkCisvLworLy8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworCisjZGVmaW5lIEFVVEhfUkVKRUNUX1JFQVNPTl9DSEFMTEVOR0VfRkFJTAkJMQorCisvLz09PT09PSB0aGUgc3RhdGUgb2YgTUxNRSBtb2R1bGUKKyNkZWZpbmUgSU5BQ1RJVkUJCQkweDAKKyNkZWZpbmUgSURMRV9TQ0FOCQkJMHgxCisKKy8vPT09PT09IHRoZSBzdGF0ZSBvZiBNTE1FL0VTUyBtb2R1bGUKKyNkZWZpbmUgU1RBVEVfMQkJCQkweDIKKyNkZWZpbmUgQVVUSF9SRVEJCQkweDMKKyNkZWZpbmUgQVVUSF9XRVAJCQkweDQKKyNkZWZpbmUgU1RBVEVfMgkJCQkweDUKKyNkZWZpbmUgQVNTT0NfUkVRCQkJMHg2CisjZGVmaW5lIFNUQVRFXzMJCQkJMHg3CisKKy8vPT09PT09IHRoZSBzdGF0ZSBvZiBNTE1FL0lCU1MgbW9kdWxlCisjZGVmaW5lIElCU1NfSk9JTl9TWU5DCQkweDgKKyNkZWZpbmUgSUJTU19BVVRIX1JFUQkJMHg5CisjZGVmaW5lIElCU1NfQVVUSF9DSEFOTEdFCTB4YQorI2RlZmluZSBJQlNTX0FVVEhfV0VQCQkweGIKKyNkZWZpbmUgSUJTU19BVVRIX0lORAkJMHhjCisjZGVmaW5lIElCU1NfU1RBVEVfMgkJMHhkCisKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvL2RlcGVuZCBvbiBENUMoTUFDIHRpbWluZyBjb250cm9sIDAzIHJlZ2lzdGVyKTogTWF4VHhNU0RVTGlmZVRpbWUgZGVmYXVsdCAweDgwMDAwdXMKKyNkZWZpbmUgQVVUSF9GQUlMX1RJTUVPVVQJCTU1MAorI2RlZmluZSBBU1NPQ19GQUlMX1RJTUVPVVQJCTU1MAorI2RlZmluZSBSRUFTU09DX0ZBSUxfVElNRU9VVAk1NTAKKworCisKKy8vCisvLyBNTE1FIHRhc2sgZ2xvYmFsIENPTlNUQU5UUywgU1RSVUNUVVJFLCB2YXJpYWJsZXMKKy8vCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gIGVudW1fUmVzdWx0Q29kZSAtLQorLy8gIFJlc3VsdCBjb2RlIHJldHVybmVkIGZyb20gTUxNRSB0byBTTUUuCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUEQ0MyAyMDAzMDgyOSBNb2RpZmlsZWQKKy8vI2RlZmluZQlTVUNDRVNTCQkJCQkJCQkwCisjZGVmaW5lIE1MTUVfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgIDAgLy9mb2xsb3cgc3BlYy4KKyNkZWZpbmUJSU5WQUxJRF9QQVJBTUVURVJTCQkJCQkxIC8vTm90IGZvbGxvd2luZyBzcGVjLgorI2RlZmluZQlOT1RfU1VQUFBPUlRFRAkJCQkJCTIKKyNkZWZpbmUJVElNRU9VVAkJCQkJCQkJMworI2RlZmluZQlUT09fTUFOWV9TSU1VTFRBTkVPVVNfUkVRVUVTVFMJCTQKKyNkZWZpbmUgUkVGVVNFRAkJCQkJCQkJNQorI2RlZmluZQlCU1NfQUxSRUFEWV9TVEFSVEVEX09SX0pPSU5FRAkJNgorI2RlZmluZQlUUkFOU01JVF9GUkFNRV9GQUlMCQkJCQk3CisjZGVmaW5lCU5PX0JTU19GT1VORAkJCQkJCTgKKyNkZWZpbmUgUkVUUlkJCQkJCQkJCTkKKyNkZWZpbmUgR0lWRV9VUAkJCQkJCQkJMTAKKworCisjZGVmaW5lIE9QRU5fQVVUSAkJCQkJCQkwCisjZGVmaW5lIFNIQVJFX0FVVEgJCQkJCQkJMQorI2RlZmluZSBBTllfQVVUSAkJCQkJCQkyCisjZGVmaW5lIFdQQV9BVVRICQkJCQkJCTMJLy9mb3IgV1BBCisjZGVmaW5lIFdQQVBTS19BVVRICQkJCQkJCTQKKyNkZWZpbmUgV1BBTk9ORV9BVVRICQkJCQkJNQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIGFkZGVkIGJ5IHdzIDA0LzE5LzA0CisjaWZkZWYgX1dQQTJfCisjZGVmaW5lIFdQQTJfQVVUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIDYvL2ZvciBXUEEyCisjZGVmaW5lIFdQQTJQU0tfQVVUSCAgICAgICAgICAgICAgICAgICAgICAgIDcKKyNlbmRpZiAvL2VuZCBkZWYgX1dQQTJfCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9kZWZpbmUgdGhlIG1zZyB0eXBlIG9mIE1MTUUgbW9kdWxlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vZnJvbSBTTUUKKworI2RlZmluZSBNTE1FTVNHX0FVVEhfUkVRCQkJCTB4MGIKKyNkZWZpbmUgTUxNRU1TR19ERUFVVEhfUkVRCQkJCTB4MGMKKyNkZWZpbmUgTUxNRU1TR19BU1NPQ19SRVEJCQkJMHgwZAorI2RlZmluZSBNTE1FTVNHX1JFQVNTT0NfUkVRCQkJCTB4MGUKKyNkZWZpbmUgTUxNRU1TR19ESVNBU1NPQ19SRVEJCQkweDBmCisjZGVmaW5lIE1MTUVNU0dfU1RBUlRfSUJTU19SRVEJCQkweDEwCisjZGVmaW5lIE1MTUVNU0dfSUJTU19ORVRfQ0ZNCQkJMHgxMQorCisvL2Zyb20gUlggOgorI2RlZmluZSBNTE1FTVNHX1JDVl9NTE1FRlJBTUUJCQkweDIwCisjZGVmaW5lIE1MTUVNU0dfUkNWX0FTU09DUlNQCQkJMHgyMgorI2RlZmluZSBNTE1FTVNHX1JDVl9SRUFTU09DUlNQCQkJMHgyNAorI2RlZmluZSBNTE1FTVNHX1JDVl9ESVNBU1NPQwkJCTB4MmIKKyNkZWZpbmUgTUxNRU1TR19SQ1ZfQVVUSAkJCQkweDJjCisjZGVmaW5lIE1MTUVNU0dfUkNWX0RFQVVUSAkJCQkweDJkCisKKworLy9mcm9tIFRYIGNhbGxiYWNrCisjZGVmaW5lIE1MTUVNU0dfVFhfQ0FMTEJBQ0sJCQkJMHg0MAorI2RlZmluZSBNTE1FTVNHX0FTU09DUkVRX0NBTExCQUNLCQkweDQxCisjZGVmaW5lIE1MTUVNU0dfUkVBU1NPQ1JFUV9DQUxMQkFDSwkJMHg0MworI2RlZmluZSBNTE1FTVNHX0RJU0FTU09DX0NBTExCQUNLCQkweDRhCisjZGVmaW5lIE1MTUVNU0dfQVVUSF9DQUxMQkFDSwkJCTB4NGMKKyNkZWZpbmUgTUxNRU1TR19ERUFVVEhfQ0FMTEJBQ0sJCQkweDRkCisKKy8vI2RlZmluZSBNTE1FTVNHX0pPSU5fRkFJTAkJCQk0CisvLyNkZWZpbmUgTUxNRU1TR19BVVRIRU5fRkFJTAkJCTE4CisjZGVmaW5lIE1MTUVNU0dfVElNRU9VVAkJCQkJMHg1MAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vR2xvYmFsIGRhdGEgc3RydWN0dXJlcworI2RlZmluZSBNQVhfTlVNX1RYX01NUERVCTIKKyNkZWZpbmUgTUFYX01NUERVX1NJWkUJCTE1MTIKKyNkZWZpbmUgTUFYX05VTV9SWF9NTVBEVQk2CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL01BQ1JPCisjZGVmaW5lIGJvTUxNRV9JbmFjdGl2ZVN0YXRlKF9BQV8pCShfQUFfLT53U3RhdGU9PUlOQUNUSVZFKQorI2RlZmluZSBib01MTUVfSWRsZVNjYW5TdGF0ZShfQkJfKQkoX0JCXy0+d1N0YXRlPT1JRExFX1NDQU4pCisjZGVmaW5lIGJvTUxNRV9Gb3VuZFNUQWluZm8oX0NDXykJKF9DQ18tPndTdGF0ZT49SURMRV9TQ0FOKQorCit0eXBlZGVmIHN0cnVjdCBfTUxNRV9GUkFNRQoreworCS8vTkRJU19QQUNLRVQJCU1MTUVfUGFja2V0OworCVBDSEFSCQkJcE1NUERVOworCXUxNgkJCWxlbjsKKwl1OAkJCURhdGFUeXBlOworCXU4CQkJSXNJblVzZWQ7CisKKwlPU19TUElOX0xPQ0sJTUxNRVNwaW5Mb2NrOworCisgICAgdTgJCVR4TU1QRFVbTUFYX05VTV9UWF9NTVBEVV1bTUFYX01NUERVX1NJWkVdOworCXU4CQlUeE1NUERVSW5Vc2VbIChNQVhfTlVNX1RYX01NUERVKzMpICYgfjB4MDMgXTsKKworCXUxNgkJd051bVR4TU1QRFU7CisJdTE2CQl3TnVtVHhNTVBEVURpc2NhcmRlZDsKKworICAgIHU4CQlSeE1NUERVW01BWF9OVU1fUlhfTU1QRFVdW01BWF9NTVBEVV9TSVpFXTsKKyAgICB1OAkgCVNhdmVSeEJ1ZlNsb3RJblVzZVsgKE1BWF9OVU1fUlhfTU1QRFUrMykgJiB+MHgwMyBdOworCisJdTE2CQl3TnVtUnhNTVBEVTsKKwl1MTYJCXdOdW1SeE1NUERVRGlzY2FyZGVkOworCisJdTE2CQl3TnVtUnhNTVBEVUluTUxNRTsgCS8vIE51bWJlciBvZiB0aGUgUnggTU1QRFUKKwl1MTYJCXJlc2VydmVkXzE7CQkJLy8gIGluIE1MTUUuCisgICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAvLyAgZXhjbHVkaW5nIHRoZSBkaXNjYXJkZWQKK30gTUxNRV9GUkFNRSwgKnBzTUxNRV9GUkFNRTsKKwordHlwZWRlZiBzdHJ1Y3QgX0FVVEhSRVEgeworCisJdTggCXBlZXJNQUNhZGRyW01BQ19BRERSX0xFTkdUSF07CisJdTE2CXdBdXRoQWxnb3JpdGhtOworCit9IE1MTUVfQVVUSFJFUV9QQVJBLCAqcHNNTE1FX0FVVEhSRVFfUEFSQTsKKworc3RydWN0IF9SZWFzb25fQ29kZSB7CisKKwl1OAlwZWVyTUFDYWRkcltNQUNfQUREUl9MRU5HVEhdOworCXUxNgl3UmVhc29uQ29kZTsKK307Cit0eXBlZGVmIHN0cnVjdCBfUmVhc29uX0NvZGUgTUxNRV9ERUFVVEhSRVFfUEFSQSwgKnBzTUxNRV9ERUFVVEhSRVFfUEFSQTsKK3R5cGVkZWYgc3RydWN0IF9SZWFzb25fQ29kZSBNTE1FX0RJU0FTU09DUkVRX1BBUkEsICpwc01MTUVfRElTQVNTT0NSRVFfUEFSQTsKKwordHlwZWRlZiBzdHJ1Y3QgX0FTU09DUkVRIHsKKyAgdTggICAgICAgUGVlclNUQUFkZHJbTUFDX0FERFJfTEVOR1RIXTsKKyAgdTE2ICAgICAgIENhcGFiaWxpdHlJbmZvOworICB1MTYgICAgICAgTGlzdGVuSW50ZXJ2YWw7CisKK31fX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgTUxNRV9BU1NPQ1JFUV9QQVJBLCAqcHNNTE1FX0FTU09DUkVRX1BBUkE7CisKK3R5cGVkZWYgc3RydWN0IF9SRUFTU09DUkVRIHsKKyAgdTggICAgICAgTmV3QVBBZGRyW01BQ19BRERSX0xFTkdUSF07CisgIHUxNiAgICAgICBDYXBhYmlsaXR5SW5mbzsKKyAgdTE2ICAgICAgIExpc3RlbkludGVydmFsOworCit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIE1MTUVfUkVBU1NPQ1JFUV9QQVJBLCAqcHNNTE1FX1JFQVNTT0NSRVFfUEFSQTsKKwordHlwZWRlZiBzdHJ1Y3QgX01MTUVDQUxMQkFDSyB7CisKKyAgdTggCSpwc0ZyYW1lUHRyOworICB1OAkJYlJlc3VsdDsKKworfSBNTE1FX1RYQ0FMTEJBQ0ssICpwc01MTUVfVFhDQUxMQkFDSzsKKwordHlwZWRlZiBzdHJ1Y3QgX1JYREFUQQoreworCXMzMgkJRnJhbWVMZW5ndGg7CisJdTgJX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpICpwYkZyYW1lUHRyOworCit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIFJYREFUQSwgKnBzUlhEQVRBOworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWV0eHJ4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tbG1ldHhyeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YjA5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tbG1ldHhyeC5jCkBAIC0wLDAgKzEsMTUwIEBACisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBNb2R1bGUgTmFtZToKKy8vICAgIE1MTUVUeFJ4LkMKKy8vCisvLyAgRGVzY3JpcHRpb246CisvLyAgICBUaGUgaW50ZXJmYWNlIGJldHdlZW4gTURTIChNQUMgRGF0YSBTZXJ2aWNlKSBhbmQgTUxNRS4KKy8vCisvLyAgUmV2aXNpb24gSGlzdG9yeToKKy8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgMjAwMjA5ICAgICAgVU4yMCBKZW5uaWZlciBYdQorLy8gICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbCBSZWxlYXNlCisvLyAgICAgICAgICAyMDAyMTEwOCAgICBQRDQzIEF1c3RpbiBMaXUKKy8vICAgICAgICAgIDIwMDMwMTE3ICAgIFBENDMgQXVzdGluIExpdQorLy8gICAgICAgICAgICAgICAgICAgICAgRGVsZXRlZCBNTE1FUmV0dXJuUGFja2V0IGFuZCBNTE1FUHJvY1RocmVhZCgpCisvLworLy8gIENvcHlyaWdodCAoYykgMTk5Ni0yMDAyIFdpbmJvbmQgRWxlY3Ryb25pY3MgQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2luY2x1ZGUgIm9zX2NvbW1vbi5oIgorCit2b2lkIE1MTUVSZXNldFR4UngoUFdCMzJfQURBUFRFUiBBZGFwdGVyKQoreworCXMzMiAgICAgaTsKKworCS8vIFJlc2V0IHRoZSBpbnRlcmZhY2UgYmV0d2VlbiBNRFMgYW5kIE1MTUUKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX05VTV9UWF9NTVBEVTsgaSsrKQorCQlBZGFwdGVyLT5zTWxtZUZyYW1lLlR4TU1QRFVJblVzZVtpXSA9IEZBTFNFOworCWZvciAoaSA9IDA7IGkgPCBNQVhfTlVNX1JYX01NUERVOyBpKyspCisJCUFkYXB0ZXItPnNNbG1lRnJhbWUuU2F2ZVJ4QnVmU2xvdEluVXNlW2ldID0gRkFMU0U7CisKKwlBZGFwdGVyLT5zTWxtZUZyYW1lLndOdW1SeE1NUERVSW5NTE1FICAgPSAwOworCUFkYXB0ZXItPnNNbG1lRnJhbWUud051bVJ4TU1QRFVEaXNjYXJkZWQgPSAwOworCUFkYXB0ZXItPnNNbG1lRnJhbWUud051bVJ4TU1QRFUgICAgICAgICAgPSAwOworCUFkYXB0ZXItPnNNbG1lRnJhbWUud051bVR4TU1QRFVEaXNjYXJkZWQgPSAwOworCUFkYXB0ZXItPnNNbG1lRnJhbWUud051bVR4TU1QRFUgICAgICAgICAgPSAwOworCUFkYXB0ZXItPnNMb2NhbFBhcmEuYm9DQ0FidXN5ICAgID0gRkFMU0U7CisJQWRhcHRlci0+c0xvY2FsUGFyYS5pUG93ZXJTYXZlTW9kZSAgICAgPSBQV1JfQUNUSVZFOyAgICAgLy8gUG93ZXIgYWN0aXZlCit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCUZ1bmN0aW9uOgorLy8gICAgTUxNRUdldE1NUERVQnVmZmVyKCkKKy8vCisvLwlEZXNjcmlwdGlvbjoKKy8vICAgIFJldHVybiB0aGUgcG9pbnRlciB0byBhbiBhdmFpbGFibGUgZGF0YSBidWZmZXIgd2l0aAorLy8gICAgdGhlIHNpemUgTUFYX01NUERVX1NJWkUgZm9yIGEgTU1QRFUuCisvLworLy8gIEFyZ3VtZW50czoKKy8vICAgIEFkYXB0ZXIgICAtIHBvaW50ZXIgdG8gdGhlIG1pbmlwb3J0IGFkYXB0ZXIgY29udGV4dC4KKy8vCisvLwlSZXR1cm4gdmFsdWU6CisvLyAgICBOVUxMICAgICA6IE5vIGF2YWlsYWJsZSBkYXRhIGJ1ZmZlciBhdmFpbGFibGUKKy8vICAgIE90aGVyd2lzZTogUG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyogRklYTUU6IFNob3VsZCB0aGlzIGp1c3QgYmUgcmVwbGFjZWQgd2l0aCBrbWFsbG9jKCkgYW5kIGtmcmVlKCk/ICovCit1OCAqTUxNRUdldE1NUERVQnVmZmVyKFBXQjMyX0FEQVBURVIgQWRhcHRlcikKK3sKKwlzMzIgaTsKKwl1OCAqcmV0dXJuVmFsOworCisJZm9yIChpID0gMDsgaTwgTUFYX05VTV9UWF9NTVBEVTsgaSsrKSB7CisJCWlmIChBZGFwdGVyLT5zTWxtZUZyYW1lLlR4TU1QRFVJblVzZVtpXSA9PSBGQUxTRSkKKwkJCWJyZWFrOworCX0KKwlpZiAoaSA+PSBNQVhfTlVNX1RYX01NUERVKSByZXR1cm4gTlVMTDsKKworCXJldHVyblZhbCA9ICh1OCAqKSYoQWRhcHRlci0+c01sbWVGcmFtZS5UeE1NUERVW2ldKTsKKwlBZGFwdGVyLT5zTWxtZUZyYW1lLlR4TU1QRFVJblVzZVtpXSA9IFRSVUU7CisKKwlyZXR1cm4gcmV0dXJuVmFsOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit1OCBNTE1FU2VuZEZyYW1lKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgdTggKnBNTVBEVSwgdTE2IGxlbiwgdTggRGF0YVR5cGUpCisvKglEYXRhVHlwZSA6IEZSQU1FX1RZUEVfODAyXzExX01BTkFHRU1FTlQsIEZSQU1FX1RZUEVfODAyXzExX01BTkFHRU1FTlRfQ0hBTExFTkdFLAorCQkJCUZSQU1FX1RZUEVfODAyXzExX0RBVEEgKi8KK3sKKwlpZiAoQWRhcHRlci0+c01sbWVGcmFtZS5Jc0luVXNlZCAhPSBQQUNLRVRfRlJFRV9UT19VU0UpIHsKKwkJQWRhcHRlci0+c01sbWVGcmFtZS53TnVtVHhNTVBEVURpc2NhcmRlZCsrOworCQlyZXR1cm4gRkFMU0U7CisJfQorCUFkYXB0ZXItPnNNbG1lRnJhbWUuSXNJblVzZWQgPSBQQUNLRVRfQ09NRV9GUk9NX01MTUU7CisKKwkvLyBLZWVwIGluZm9ybWF0aW9uIGZvciBzZW5kaW5nCisJQWRhcHRlci0+c01sbWVGcmFtZS5wTU1QRFUgPSBwTU1QRFU7CisJQWRhcHRlci0+c01sbWVGcmFtZS5EYXRhVHlwZSA9IERhdGFUeXBlOworCS8vIGxlbiBtdXN0IGJlIHRoZSBsYXN0IHNldHRpbmcgZHVlIHRvIFFVRVJZX1NJWkVfU0VDT05EIG9mIE1kcworCUFkYXB0ZXItPnNNbG1lRnJhbWUubGVuID0gbGVuOworCUFkYXB0ZXItPnNNbG1lRnJhbWUud051bVR4TU1QRFUrKzsKKworCS8vIEgvVyB3aWxsIGVudGVyIHBvd2VyIHNhdmUgYnkgc2V0IHRoZSByZWdpc3Rlci4gUy9XIGRvbid0IHNlbmQgbnVsbCBmcmFtZQorCS8vd2l0aCBQV1JNZ3QgYml0IGVuYmxlZCB0byBlbnRlciBwb3dlciBzYXZlIG5vdy4KKworCS8vIFRyYW5zbWl0IE5ESVMgcGFja2V0CisJTWRzX1R4KEFkYXB0ZXIpOworCXJldHVybiBUUlVFOworfQorCit2b2lkCitNTE1FX0dldE5leHRQYWNrZXQoUEFEQVBURVIgQWRhcHRlciwgUERFU0NSSVBUT1IgcERlcykKK3sKKyNkZWZpbmUgREVTQ1JJUFRPUl9BRERfQlVGRkVSKCBfRCwgX0EsIF9TICkgXAore1wKKwlfRC0+SW50ZXJuYWxVc2VkID0gX0QtPmJ1ZmZlcl9zdGFydF9pbmRleCArIF9ELT5idWZmZXJfbnVtYmVyOyBcCisJX0QtPkludGVybmFsVXNlZCAlPSBNQVhfREVTQ1JJUFRPUl9CVUZGRVJfSU5ERVg7IFwKKwlfRC0+YnVmZmVyX2FkZHJlc3NbIF9ELT5JbnRlcm5hbFVzZWQgXSA9IF9BOyBcCisJX0QtPmJ1ZmZlcl9zaXplWyBfRC0+SW50ZXJuYWxVc2VkIF0gPSBfUzsgXAorCV9ELT5idWZmZXJfdG90YWxfc2l6ZSArPSBfUzsgXAorCV9ELT5idWZmZXJfbnVtYmVyKys7XAorfQorCisJREVTQ1JJUFRPUl9BRERfQlVGRkVSKCBwRGVzLCBBZGFwdGVyLT5zTWxtZUZyYW1lLnBNTVBEVSwgQWRhcHRlci0+c01sbWVGcmFtZS5sZW4gKTsKKwlwRGVzLT5UeXBlID0gQWRhcHRlci0+c01sbWVGcmFtZS5EYXRhVHlwZTsKK30KKwordm9pZCBNTE1FZnJlZU1NUERVQnVmZmVyKFBXQjMyX0FEQVBURVIgQWRhcHRlciwgUENIQVIgcERhdGEpCit7CisJaW50IGk7CisKKwkvLyBSZWNsYWltIHRoZSBkYXRhIGJ1ZmZlcgorCWZvciAoaSA9IDA7IGkgPCBNQVhfTlVNX1RYX01NUERVOyBpKyspIHsKKwkJaWYgKHBEYXRhID09IChQQ0hBUikmKEFkYXB0ZXItPnNNbG1lRnJhbWUuVHhNTVBEVVtpXSkpCisJCQlicmVhazsKKwl9CisJaWYgKEFkYXB0ZXItPnNNbG1lRnJhbWUuVHhNTVBEVUluVXNlW2ldKQorCQlBZGFwdGVyLT5zTWxtZUZyYW1lLlR4TU1QRFVJblVzZVtpXSA9IEZBTFNFOworCWVsc2UgIHsKKwkJLy8gU29tZXRoaW5nIHdyb25nCisJCS8vIFBENDMgQWRkIGRlYnVnIGNvZGUgaGVyZT8/PworCX0KK30KKwordm9pZAorTUxNRV9TZW5kQ29tcGxldGUoUEFEQVBURVIgQWRhcHRlciwgdTggUGFja2V0SUQsIHVuc2lnbmVkIGNoYXIgU2VuZE9LKQoreworCU1MTUVfVFhDQUxMQkFDSwlUeENhbGxiYWNrOworCisgICAgLy8gUmVjbGFpbSB0aGUgZGF0YSBidWZmZXIKKwlBZGFwdGVyLT5zTWxtZUZyYW1lLmxlbiA9IDA7CisJTUxNRWZyZWVNTVBEVUJ1ZmZlciggQWRhcHRlciwgQWRhcHRlci0+c01sbWVGcmFtZS5wTU1QRFUgKTsKKworCisJVHhDYWxsYmFjay5iUmVzdWx0ID0gTUxNRV9TVUNDRVNTOworCisJLy8gUmV0dXJuIHJlc291cmNlCisJQWRhcHRlci0+c01sbWVGcmFtZS5Jc0luVXNlZCA9IFBBQ0tFVF9GUkVFX1RPX1VTRTsKK30KKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWV0eHJ4X2YuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21sbWV0eHJ4X2YuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzRlMjI1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWxtZXR4cnhfZi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUxNRVR4UnguSCAtLQorLy8KKy8vICAgRnVuY3Rpb25zIGRlZmluZWQgaW4gTUxNRVR4UnguYy4KKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIgV2luYm9uZCBFbGVjdHJpY3MgQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2lmbmRlZiBfTUxNRVRYUlhfSAorI2RlZmluZSBfTUxNRVRYUlhfSAorCit2b2lkCitNTE1FUHJvY1RocmVhZCgKKyAgICAgUFdCMzJfQURBUFRFUiAgICBBZGFwdGVyCisJKTsKKwordm9pZCBNTE1FUmVzZXRUeFJ4KCBQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOworCit1OCAqCitNTE1FR2V0TU1QRFVCdWZmZXIoCisgICAgIFBXQjMyX0FEQVBURVIgICAgQWRhcHRlcgorICAgKTsKKwordm9pZCBNTE1FZnJlZU1NUERVQnVmZmVyKCBQV0IzMl9BREFQVEVSIEFkYXB0ZXIsICBQQ0hBUiBwRGF0YSk7CisKK3ZvaWQgTUxNRV9HZXROZXh0UGFja2V0KCAgUEFEQVBURVIgQWRhcHRlciwgIFBERVNDUklQVE9SIHBEZXMgKTsKK3U4IE1MTUVTZW5kRnJhbWUoIFBXQjMyX0FEQVBURVIgQWRhcHRlciwKKwkJCQkJdTgJKnBNTVBEVSwKKwkJCQkJdTE2CWxlbiwKKwkJCQkJIHU4CURhdGFUeXBlKTsKKwordm9pZAorTUxNRV9TZW5kQ29tcGxldGUoICBQV0IzMl9BREFQVEVSIEFkYXB0ZXIsICB1OCBQYWNrZXRJRCwgIHVuc2lnbmVkIGNoYXIgU2VuZE9LICk7CisKK3ZvaWQKK01MTUVSY3ZGcmFtZSgKKyAgICAgUFdCMzJfQURBUFRFUiAgICBBZGFwdGVyLAorICAgICBQUlhCVUZGRVIgICAgICAgIHBSeEJ1ZmZlckFycmF5LAorICAgICB1OCAgICAgICAgICAgIE51bU9mQnVmZmVyLAorICAgICB1OCAgICAgICAgICAgIFJldHVyblNsb3RJbmRleAorCSk7CisKK3ZvaWQKK01MTUVSZXR1cm5QYWNrZXQoCisgICAgIFBXQjMyX0FEQVBURVIgICAgQWRhcHRlciwKKyAgICAgUFVDSEFSICAgICAgICAgICBwUnhCdWZlcgorICAgKTsKKyNpZmRlZiBfSUJTU19CRUFDT05fU0VRX1NUSUNLXworczggU2VuZEJDTnVsbERhdGEoUFdCMzJfQURBUFRFUiBBZGFwdGVyLCB1MTYgd0lkeCk7CisjZW5kaWYKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL210by5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbXRvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVmNjBlNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL210by5jCkBAIC0wLDAgKzEsMTIyOSBAQAorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgTVRPLkMgLQorLy8KKy8vICBEZXNjcmlwdGlvbjoKKy8vICAgIE1BQyBUaHJvdWdocHV0IE9wdGltaXphdGlvbiBmb3IgVzg5QzMzIDgwMi4xMWcgV0xBTiBTVEEuCisvLworLy8gICAgVGhlIGZvbGxvd2luZyBNSUIgYXR0cmlidXRlcyBvciBpbnRlcm5hbCB2YXJpYWJsZXMgd2lsbCBiZSBhZmZlY3RlZAorLy8gICAgd2hpbGUgdGhlIE1UTyBpcyBiZWluZyBleGVjdXRlZDoKKy8vICAgICAgIGRvdDExRnJhZ21lbnRhdGlvblRocmVzaG9sZCwKKy8vICAgICAgIGRvdDExUlRTVGhyZXNob2xkLAorLy8gICAgICAgdHJhbnNtaXNzaW9uIHJhdGUgYW5kIFBMQ1AgcHJlYW1ibGUgdHlwZSwKKy8vICAgICAgIENDQSBtb2RlLAorLy8gICAgICAgYW50ZW5uYSBkaXZlcnNpdHkuCisvLworLy8gIFJldmlzaW9uIGhpc3Rvcnk6CisvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICAyMDAzMTIyNyAgVU4yMCBQZXRlIENoYW8KKy8vICAgICAgICAgICAgICAgICAgICAgRmlyc3QgZHJhZnQKKy8vICAyMDAzMTIyOSAgICAgICAgICAgVHVyYm8gICAgICAgICAgICAgICAgY29weSBmcm9tIFBENDMKKy8vICAyMDA0MDIxMCAgICAgICAgICAgS2V2aW4gICAgICAgICAgICAgICAgcmV2aXNlZAorLy8gIENvcHlyaWdodCAoYykgMjAwMyBXaW5ib25kIEVsZWN0cm9uaWNzIENvcnAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gTEEyMDA0MDIxMF9EVE8ga2V2aW4KKyNpbmNsdWRlICJvc19jb21tb24uaCIKKworLy8gRGVjbGFyZSBTUTMgdG8gcmF0ZSBhbmQgZnJhZ21lbnRhdGlvbiB0aHJlc2hvbGQgdGFibGUKKy8vIERlY2xhcmUgZnJhZ21lbnRhdGlvbiB0aHJlc2hvbGRzIHRhYmxlCisjZGVmaW5lIE1UT19NQVhfU1EzX0xFVkVMUyAgICAgICAgICAgICAgICAgICAgICAxNAorI2RlZmluZSBNVE9fTUFYX0ZSQUdfVEhfTEVWRUxTICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFMgICAgICAgICAgICAgICAgMTIKKwordTE2IE1UT19GcmFnX1RoX1RibFtNVE9fTUFYX0ZSQUdfVEhfTEVWRUxTXSA9Cit7CisgICAgMjU2LCAzODQsIDUxMiwgNzY4LCAxNTM2Cit9OworCit1OCAgTVRPX1NRM19MZXZlbFtNVE9fTUFYX1NRM19MRVZFTFNdID0KK3sKKyAgICAwLCAyNiwgMzAsIDMyLCAzNCwgMzUsIDM3LCA0MiwgNDQsIDQ2LCA1NCwgNjIsIDc4LCA4MQorfTsKK3U4ICBNVE9fU1EzdG9SYXRlW01UT19NQVhfU1EzX0xFVkVMU10gPQoreworICAgIDAsIDEsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMQorfTsKK3U4ICBNVE9fU1EzdG9GcmFnW01UT19NQVhfU1EzX0xFVkVMU10gPQoreworICAgIDAsIDIsIDIsIDMsIDMsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQKK307CisKKy8vIE9uZSBFeGNoYW5nZSBUaW1lIHRhYmxlCisvLwordTE2IE1UT19PbmVfRXhjaGFuZ2VfVGltZV9UYmxfbFtNVE9fTUFYX0ZSQUdfVEhfTEVWRUxTXVtNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFNdID0KK3sKKyAgICB7IDI1NTQsIDE0NzQsICA4MjIsICAgIDAsICAgIDAsICA2MzYsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDB9LAorICAgIHsgMzU3OCwgMTk4NiwgMTAwOSwgICAgMCwgICAgMCwgIDcyOSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMH0sCisgICAgeyA0NjAyLCAyNDk4LCAxMTk1LCAgICAwLCAgICAwLCAgODIyLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwfSwKKyAgICB7IDY2NTAsIDM1MjIsIDE1NjcsICAgIDAsICAgIDAsIDEwMDksICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDB9LAorICAgIHsxMjc5NCwgNjU5NCwgMjY4NCwgICAgMCwgICAgMCwgMTU2NywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMH0KK307CisKK3UxNiBNVE9fT25lX0V4Y2hhbmdlX1RpbWVfVGJsX3NbTVRPX01BWF9GUkFHX1RIX0xFVkVMU11bTVRPX01BWF9EQVRBX1JBVEVfTEVWRUxTXSA9Cit7CisgICAgeyAgICAwLCAxMjgyLCAgNjMwLCAgNDA0LCAgMjg4LCAgNDQ0LCAgMjMyLCAgMTcyLCAgMTQ0LCAgMTE2LCAgMTAwLCAgIDk2fSwKKyAgICB7ICAgIDAsIDE3OTQsICA4MTcsICA1NzIsICA0MDAsICA1MzcsICAzMTYsICAyMjgsICAxODgsICAxNDQsICAxMjQsICAxMTZ9LAorICAgIHsgICAgMCwgMjMwNiwgMTAwMywgIDc0NCwgIDUxNiwgIDYzMCwgIDQwMCwgIDI4OCwgIDIyOCwgIDE3MiwgIDE0NCwgIDEzNn0sCisgICAgeyAgICAwLCAzMzMwLCAxMzc1LCAxMDg0LCAgNzQ0LCAgODE3LCAgNTcyLCAgNDAwLCAgMzE2LCAgMjI4LCAgMTg4LCAgMTcyfSwKKyAgICB7ICAgIDAsIDY0MDIsIDI0OTIsIDIxMDgsIDE0MjQsIDEzNzUsIDEwODQsICA3NDAsICA1NzIsICA0MDAsICAzMTYsICAyODR9Cit9OworCisjZGVmaW5lIE1UT19PTkVfRVhDSEFOR0VfVElNRShwcmVhbWJsZV90eXBlLCBmcmFnX3RoX2x2bCwgZGF0YV9yYXRlX2x2bCkgXAorICAgICAgICAgICAgKHByZWFtYmxlX3R5cGUpID8gICBNVE9fT25lX0V4Y2hhbmdlX1RpbWVfVGJsX3NbZnJhZ190aF9sdmxdW2RhdGFfcmF0ZV9sdmxdIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVE9fT25lX0V4Y2hhbmdlX1RpbWVfVGJsX2xbZnJhZ190aF9sdmxdW2RhdGFfcmF0ZV9sdmxdCisKKy8vIERlY2xhcmUgZGF0YSByYXRlIHRhYmxlCisvL1RoZSBmb2xsb3dpbmcgdGFibGUgd2lsbCBiZSBjaGFuZ2VkIGF0IGFueXRpbWUgaWYgdGhlIG9wcmF0aW9uIHJhdGUgc3VwcG9ydGVkIGJ5IEFQIGRvbid0CisvL21hdGNoIHRoZSB0YWJsZQordTggIE1UT19EYXRhX1JhdGVfVGJsW01UT19NQVhfREFUQV9SQVRFX0xFVkVMU10gPQoreworICAgIDIsIDQsIDExLCAyMiwgMTIsIDE4LCAyNCwgMzYsIDQ4LCA3MiwgOTYsIDEwOAorfTsKKworLy9UaGUgU3RhcmRhcmRfRGF0YV9SYXRlX1RibCBhbmQgTGV2ZWwyUGVyVGJsIHRhYmxlIGlzIHVzZWQgdG8gaW5kaXJlY3RseSByZXRyZWl2ZSBQRVIKKy8vaW5mb3JtYXRpb24gZnJvbSBSYXRlX1BFUl9UQkwKKy8vVGhlIGRlZmF1bHQgc2V0dGluZ3MgaXMgQVAgY2FuIHN1cHBvcnQgZnVsbCByYXRlIHNldC4KK3N0YXRpYyB1OCAgU3RhcmRhcmRfRGF0YV9SYXRlX1RibFtNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFNdID0KK3sKKwkyLCA0LCAxMSwgMjIsIDEyLCAxOCwgMjQsIDM2LCA0OCwgNzIsIDk2LCAxMDgKK307CitzdGF0aWMgdTggIExldmVsMlBlclRibFtNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFNdID0KK3sKKwkwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEKK307CisvL0hvdyBtYW55IGtpbmQgb2YgdHggcmF0ZSBjYW4gYmUgc3VwcG9ydGVkIGJ5IEFQCisvL0RUTyB3aWxsIGNoYW5nZSBSYXRlIGJldHdlZW4gTVRPX0RhdGFfUmF0ZV9UYmxbMF0gYW5kIE1UT19EYXRhX1JhdGVfVGJsW01UT19EYXRhUmF0ZUF2YWlsYWJsZUxldmVsLTFdCitzdGF0aWMgdTggIE1UT19EYXRhUmF0ZUF2YWlsYWJsZUxldmVsID0gTVRPX01BWF9EQVRBX1JBVEVfTEVWRUxTOworLy9TbW9vdGhlZCBQRVIgdGFibGUgZm9yIGVhY2ggZGlmZmVyZW50IFJBVEUgYmFzZWQgb24gcGFja2V0IGxlbmd0aCBvZiAxNTE0CitzdGF0aWMgaW50IFJhdGVfUEVSX1RCTFs5MV1bTVRPX01BWF9EQVRBX1JBVEVfTEVWRUxTXSA9IHsKKy8vICAgICAgICAxTSAgICAyTSAgICA1LjVNICAxMU0gICA2TSAgICA5TSAgICAxMk0gICAgIDE4TSAgICAyNE0gICAgMzZNICAgIDQ4TSAgIDU0TQorLyogMCUgICoveyA5MywgICAxNzcsICA0MjAsICA1MzgsICA2OTAsICA3NzQsICAxMDAxLCAgMTQwMSwgIDE3NjgsICAyMzU4LCAgMjgzOCwgIDMwMzl9LAorLyogMSUgICoveyA5MiwgICAxNzYsICA0MTYsICA1MzMsICA2ODMsICA3NjcsICA5OTIsICAgMTM4OSwgIDE3NTIsICAyMzM2LCAgMjgxMSwgIDMwMTB9LAorLyogMiUgICoveyA5MSwgICAxNzQsICA0MTIsICA1MjgsICA2NzUsICA3NjAsICA5ODMsICAgMTM3NiwgIDE3MzUsICAyMzEzLCAgMjc4MywgIDI5Nzl9LAorLyogMyUgICoveyA5MCwgICAxNzIsICA0MDcsICA1MjMsICA2NjcsICA3NTMsICA5NzMsICAgMTM2MywgIDE3MTksICAyMjkwLCAgMjc1NSwgIDI5NDh9LAorLyogNCUgICoveyA5MCwgICAxNzAsICA0MDMsICA1MTgsICA2NTksICA3NDYsICA5NjQsICAgMTM1MCwgIDE3MDEsICAyMjY2LCAgMjcyNiwgIDI5MTZ9LAorLyogNSUgICoveyA4OSwgICAxNjksICAzOTgsICA1MTIsICA2NTEsICA3MzgsICA5NTQsICAgMTMzNiwgIDE2ODQsICAyMjQyLCAgMjY5NiwgIDI4ODR9LAorLyogNiUgICoveyA4OCwgICAxNjcsICAzOTQsICA1MDcsICA2NDMsICA3MzEsICA5NDQsICAgMTMyMiwgIDE2NjYsICAyMjE3LCAgMjY2NSwgIDI4NTF9LAorLyogNyUgICoveyA4NywgICAxNjUsICAzODksICA1MDIsICA2MzUsICA3MjMsICA5MzUsICAgMTMwOCwgIDE2NDgsICAyMTkyLCAgMjYzNCwgIDI4MTd9LAorLyogOCUgICoveyA4NiwgICAxNjMsICAzODQsICA0OTcsICA2MjYsICA3MTYsICA5MjQsICAgMTI5NCwgIDE2MjksICAyMTY2LCAgMjYwMiwgIDI3ODJ9LAorLyogOSUgICoveyA4NSwgICAxNjEsICAzODAsICA0OTEsICA2MTgsICA3MDgsICA5MTQsICAgMTI3OSwgIDE2MTEsICAyMTQwLCAgMjU3MCwgIDI3NDd9LAorLyogMTAlICoveyA4NCwgICAxNjAsICAzNzUsICA0ODYsICA2MDksICA3MDAsICA5MDQsICAgMTI2NSwgIDE1OTEsICAyMTEzLCAgMjUzNywgIDI3MTF9LAorLyogMTElICoveyA4MywgICAxNTgsICAzNzAsICA0ODAsICA2MDAsICA2OTIsICA4OTQsICAgMTI1MCwgIDE1NzIsICAyMDg2LCAgMjUwMywgIDI2NzV9LAorLyogMTIlICoveyA4MiwgICAxNTYsICAzNjUsICA0NzUsICA1OTIsICA2ODQsICA4ODMsICAgMTIzNCwgIDE1NTIsICAyMDU5LCAgMjQ2OSwgIDI2Mzh9LAorLyogMTMlICoveyA4MSwgICAxNTQsICAzNjAsICA0NjksICA1ODMsICA2NzYsICA4NzIsICAgMTIxOSwgIDE1MzIsICAyMDMxLCAgMjQzNSwgIDI2MDB9LAorLyogMTQlICoveyA4MCwgICAxNTIsICAzNTUsICA0NjQsICA1NzQsICA2NjgsICA4NjIsICAgMTIwNCwgIDE1MTIsICAyMDAzLCAgMjQwMCwgIDI1NjJ9LAorLyogMTUlICoveyA3OSwgICAxNTAsICAzNTAsICA0NTgsICA1NjUsICA2NjAsICA4NTEsICAgMTE4OCwgIDE0OTIsICAxOTc0LCAgMjM2NSwgIDI1MjR9LAorLyogMTYlICoveyA3OCwgICAxNDgsICAzNDUsICA0NTMsICA1NTYsICA2NTIsICA4NDAsICAgMTE3MiwgIDE0NzEsICAxOTQ1LCAgMjMyOSwgIDI0ODV9LAorLyogMTclICoveyA3NywgICAxNDYsICAzNDAsICA0NDcsICA1NDcsICA2NDMsICA4MjksICAgMTE1NiwgIDE0NTAsICAxOTE2LCAgMjI5MywgIDI0NDZ9LAorLyogMTglICoveyA3NiwgICAxNDQsICAzMzUsICA0NDEsICA1MzgsICA2MzUsICA4MTgsICAgMTE0MCwgIDE0MjksICAxODg3LCAgMjI1NiwgIDI0MDZ9LAorLyogMTklICoveyA3NSwgICAxNDMsICAzMzAsICA0MzYsICA1MjksICA2MjcsICA4MDcsICAgMTEyNCwgIDE0MDgsICAxODU3LCAgMjIxOSwgIDIzNjZ9LAorLyogMjAlICoveyA3NCwgICAxNDEsICAzMjUsICA0MzAsICA1MjAsICA2MTgsICA3OTUsICAgMTEwNywgIDEzODYsICAxODI3LCAgMjE4MiwgIDIzMjZ9LAorLyogMjElICoveyA3MywgICAxMzksICAzMjAsICA0MjQsICA1MTAsICA2MTAsICA3ODQsICAgMTA5MSwgIDEzNjUsICAxNzk3LCAgMjE0NSwgIDIyODV9LAorLyogMjIlICoveyA3MiwgICAxMzcsICAzMTQsICA0MTgsICA1MDEsICA2MDEsICA3NzIsICAgMTA3NCwgIDEzNDMsICAxNzY2LCAgMjEwNywgIDIyNDR9LAorLyogMjMlICoveyA3MSwgICAxMzUsICAzMDksICA0MTIsICA0OTIsICA1OTIsICA3NjEsICAgMTA1NywgIDEzMjEsICAxNzM2LCAgMjA2OSwgIDIyMDN9LAorLyogMjQlICoveyA3MCwgICAxMzMsICAzMDQsICA0MDcsICA0ODIsICA1ODQsICA3NDksICAgMTA0MCwgIDEyOTksICAxNzA1LCAgMjAzMSwgIDIxNjF9LAorLyogMjUlICoveyA2OSwgICAxMzEsICAyOTksICA0MDEsICA0NzMsICA1NzUsICA3MzgsICAgMTAyMywgIDEyNzcsICAxNjc0LCAgMTk5MiwgIDIxMjB9LAorLyogMjYlICoveyA2OCwgICAxMjksICAyOTMsICAzOTUsICA0NjQsICA1NjYsICA3MjYsICAgMTAwNiwgIDEyNTQsICAxNjQyLCAgMTk1MywgIDIwNzh9LAorLyogMjclICoveyA2NywgICAxMjcsICAyODgsICAzODksICA0NTQsICA1NTcsICA3MTQsICAgOTg5LCAgIDEyMzIsICAxNjExLCAgMTkxNSwgIDIwMzV9LAorLyogMjglICoveyA2NiwgICAxMjUsICAyODMsICAzODMsICA0NDUsICA1NDksICA3MDMsICAgOTcyLCAgIDEyMDksICAxNTc5LCAgMTg3NiwgIDE5OTN9LAorLyogMjklICoveyA2NSwgICAxMjMsICAyNzgsICAzNzcsICA0MzYsICA1NDAsICA2OTEsICAgOTU1LCAgIDExODcsICAxNTQ4LCAgMTgzNiwgIDE5NTF9LAorLyogMzAlICoveyA2NCwgICAxMjEsICAyNzIsICAzNzEsICA0MjYsICA1MzEsICA2NzksICAgOTM3LCAgIDExNjQsICAxNTE2LCAgMTc5NywgIDE5MDh9LAorLyogMzElICoveyA2MywgICAxMTksICAyNjcsICAzNjUsICA0MTcsICA1MjIsICA2NjcsICAgOTIwLCAgIDExNDEsICAxNDg0LCAgMTc1OCwgIDE4NjZ9LAorLyogMzIlICoveyA2MiwgICAxMTcsICAyNjIsICAzNTksICA0MDcsICA1MTMsICA2NTUsICAgOTAyLCAgIDExMTgsICAxNDUzLCAgMTcxOSwgIDE4MjN9LAorLyogMzMlICoveyA2MSwgICAxMTUsICAyNTYsICAzNTMsICAzOTgsICA1MDQsICA2NDMsICAgODg1LCAgIDEwOTUsICAxNDIxLCAgMTY3OSwgIDE3ODF9LAorLyogMzQlICoveyA2MCwgICAxMTMsICAyNTEsICAzNDcsICAzODksICA0OTUsICA2MzEsICAgODY3LCAgIDEwNzIsICAxMzg5LCAgMTY0MCwgIDE3Mzh9LAorLyogMzUlICoveyA1OSwgICAxMTEsICAyNDYsICAzNDEsICAzNzksICA0ODYsICA2MTksICAgODUwLCAgIDEwNDksICAxMzU3LCAgMTYwMCwgIDE2OTV9LAorLyogMzYlICoveyA1OCwgICAxMDgsICAyNDAsICAzMzUsICAzNzAsICA0NzcsICA2MDcsICAgODMyLCAgIDEwMjcsICAxMzI1LCAgMTU2MSwgIDE2NTN9LAorLyogMzclICoveyA1NywgICAxMDYsICAyMzUsICAzMjksICAzNjEsICA0NjgsICA1OTUsICAgODE1LCAgIDEwMDQsICAxMjkzLCAgMTUyMiwgIDE2MTB9LAorLyogMzglICoveyA1NiwgICAxMDQsICAyMzAsICAzMjMsICAzNTEsICA0NTksICA1ODQsICAgNzk3LCAgIDk4MSwgICAxMjYxLCAgMTQ4MywgIDE1Njh9LAorLyogMzklICoveyA1NSwgICAxMDIsICAyMjQsICAzMTcsICAzNDIsICA0NTAsICA1NzIsICAgNzgwLCAgIDk1OCwgICAxMjMwLCAgMTQ0MywgIDE1MjZ9LAorLyogNDAlICoveyA1NCwgICAxMDAsICAyMTksICAzMTEsICAzMzMsICA0NDEsICA1NjAsICAgNzYyLCAgIDkzNSwgICAxMTk4LCAgMTQwNCwgIDE0ODR9LAorLyogNDElICoveyA1MywgICA5OCwgICAyMTQsICAzMDUsICAzMjQsICA0MzIsICA1NDgsICAgNzQ0LCAgIDkxMiwgICAxMTY2LCAgMTM2NiwgIDE0NDJ9LAorLyogNDIlICoveyA1MiwgICA5NiwgICAyMDksICAyOTksICAzMTUsICA0MjMsICA1MzYsICAgNzI3LCAgIDg4OSwgICAxMTM1LCAgMTMyNywgIDE0MDB9LAorLyogNDMlICoveyA1MSwgICA5NCwgICAyMDMsICAyOTMsICAzMDYsICA0MTQsICA1MjQsICAgNzA5LCAgIDg2NiwgICAxMTA0LCAgMTI4OSwgIDEzNTh9LAorLyogNDQlICoveyA1MCwgICA5MiwgICAxOTgsICAyODcsICAyOTcsICA0MDUsICA1MTIsICAgNjkyLCAgIDg0NCwgICAxMDcyLCAgMTI1MCwgIDEzMTd9LAorLyogNDUlICoveyA0OSwgICA5MCwgICAxOTMsICAyODEsICAyODgsICAzOTYsICA1MDAsICAgNjc1LCAgIDgyMSwgICAxMDQxLCAgMTIxMiwgIDEyNzZ9LAorLyogNDYlICoveyA0OCwgICA4OCwgICAxODgsICAyNzUsICAyNzksICAzODcsICA0ODgsICAgNjU3LCAgIDc5OSwgICAxMDExLCAgMTE3NCwgIDEyMzZ9LAorLyogNDclICoveyA0NywgICA4NiwgICAxODMsICAyNjksICAyNzEsICAzNzgsICA0NzYsICAgNjQwLCAgIDc3NywgICA5ODAsICAgMTEzNywgIDExOTV9LAorLyogNDglICoveyA0NiwgICA4NCwgICAxNzgsICAyNjIsICAyNjIsICAzNjksICA0NjQsICAgNjIzLCAgIDc1NCwgICA5NDksICAgMTEwMCwgIDExNTV9LAorLyogNDklICoveyA0NSwgICA4MiwgICAxNzMsICAyNTYsICAyNTQsICAzNjAsICA0NTIsICAgNjA2LCAgIDczMiwgICA5MTksICAgMTA2MywgIDExMTZ9LAorLyogNTAlICoveyA0NCwgICA4MCwgICAxNjgsICAyNTEsICAyNDUsICAzNTEsICA0NDEsICAgNTg5LCAgIDcxMCwgICA4ODksICAgMTAyNiwgIDEwNzZ9LAorLyogNTElICoveyA0MywgICA3OCwgICAxNjMsICAyNDUsICAyMzcsICAzNDIsICA0MjksICAgNTcyLCAgIDY4OSwgICA4NjAsICAgOTkwLCAgIDEwMzh9LAorLyogNTIlICoveyA0MiwgICA3NiwgICAxNTgsICAyMzksICAyMjgsICAzMzMsICA0MTcsICAgNTU1LCAgIDY2NywgICA4MzAsICAgOTU1LCAgIDk5OX0sCisvKiA1MyUgKi97IDQxLCAgIDc0LCAgIDE1MywgIDIzMywgIDIyMCwgIDMyNCwgIDQwNiwgICA1MzgsICAgNjQ1LCAgIDgwMSwgICA5MTksICAgOTYxfSwKKy8qIDU0JSAqL3sgNDAsICAgNzIsICAgMTQ4LCAgMjI3LCAgMjEyLCAgMzE1LCAgMzk0LCAgIDUyMiwgICA2MjQsICAgNzczLCAgIDg4NCwgICA5MjR9LAorLyogNTUlICoveyAzOSwgICA3MCwgICAxNDMsICAyMjEsICAyMDQsICAzMDcsICAzODMsICAgNTA1LCAgIDYwMywgICA3NDQsICAgODUwLCAgIDg4N30sCisvKiA1NiUgKi97IDM4LCAgIDY4LCAgIDEzOCwgIDIxNSwgIDE5NiwgIDI5OCwgIDM3MSwgICA0ODksICAgNTgyLCAgIDcxNiwgICA4MTYsICAgODUxfSwKKy8qIDU3JSAqL3sgMzcsICAgNjcsICAgMTM0LCAgMjA5LCAgMTg5LCAgMjg5LCAgMzYwLCAgIDQ3MywgICA1NjIsICAgNjg4LCAgIDc4MywgICA4MTV9LAorLyogNTglICoveyAzNiwgICA2NSwgICAxMjksICAyMDMsICAxODEsICAyODEsICAzNDksICAgNDU3LCAgIDU0MSwgICA2NjEsICAgNzUwLCAgIDc4MH0sCisvKiA1OSUgKi97IDM1LCAgIDYzLCAgIDEyNCwgIDE5NywgIDE3NCwgIDI3MiwgIDMzOCwgICA0NDEsICAgNTIxLCAgIDYzNCwgICA3MTcsICAgNzQ1fSwKKy8qIDYwJSAqL3sgMzQsICAgNjEsICAgMTIwLCAgMTkyLCAgMTY2LCAgMjY0LCAgMzI3LCAgIDQyNSwgICA1MDEsICAgNjA4LCAgIDY4NiwgICA3MTJ9LAorLyogNjElICoveyAzMywgICA1OSwgICAxMTUsICAxODYsICAxNTksICAyNTUsICAzMTYsICAgNDA5LCAgIDQ4MiwgICA1ODIsICAgNjU1LCAgIDY3OH0sCisvKiA2MiUgKi97IDMyLCAgIDU3LCAgIDExMSwgIDE4MCwgIDE1MiwgIDI0NywgIDMwNSwgICAzOTQsICAgNDYyLCAgIDU1NiwgICA2MjQsICAgNjQ2fSwKKy8qIDYzJSAqL3sgMzEsICAgNTUsICAgMTA3LCAgMTc0LCAgMTQ1LCAgMjM4LCAgMjk0LCAgIDM3OSwgICA0NDMsICAgNTMxLCAgIDU5NCwgICA2MTR9LAorLyogNjQlICoveyAzMCwgICA1MywgICAxMDIsICAxNjksICAxMzgsICAyMzAsICAyODMsICAgMzY0LCAgIDQyNSwgICA1MDYsICAgNTY1LCAgIDU4M30sCisvKiA2NSUgKi97IDI5LCAgIDUyLCAgIDk4LCAgIDE2MywgIDEzMiwgIDIyMiwgIDI3MywgICAzNDksICAgNDA2LCAgIDQ4MiwgICA1MzYsICAgNTUzfSwKKy8qIDY2JSAqL3sgMjgsICAgNTAsICAgOTQsICAgMTU4LCAgMTI1LCAgMjE0LCAgMjYyLCAgIDMzNCwgICAzODgsICAgNDU5LCAgIDUwOCwgICA1MjN9LAorLyogNjclICoveyAyNywgICA0OCwgICA5MCwgICAxNTIsICAxMTksICAyMDYsICAyNTIsICAgMzIwLCAgIDM3MCwgICA0MzYsICAgNDgxLCAgIDQ5NX0sCisvKiA2OCUgKi97IDI2LCAgIDQ2LCAgIDg2LCAgIDE0NywgIDExMywgIDE5OCwgIDI0MiwgICAzMDYsICAgMzUzLCAgIDQxMywgICA0NTUsICAgNDY3fSwKKy8qIDY5JSAqL3sgMjYsICAgNDQsICAgODIsICAgMTQxLCAgMTA3LCAgMTkwLCAgMjMxLCAgIDI5MiwgICAzMzYsICAgMzkxLCAgIDQyOSwgICA0NDB9LAorLyogNzAlICoveyAyNSwgICA0MywgICA3OCwgICAxMzYsICAxMDEsICAxODIsICAyMjEsICAgMjc4LCAgIDMxOSwgICAzNzAsICAgNDA1LCAgIDQxNH0sCisvKiA3MSUgKi97IDI0LCAgIDQxLCAgIDc0LCAgIDEzMCwgIDk1LCAgIDE3NCwgIDIxMiwgICAyNjUsICAgMzAzLCAgIDM1MCwgICAzODEsICAgMzg5fSwKKy8qIDcyJSAqL3sgMjMsICAgMzksICAgNzEsICAgMTI1LCAgOTAsICAgMTY3LCAgMjAyLCAgIDI1MiwgICAyODcsICAgMzI5LCAgIDM1OCwgICAzNjV9LAorLyogNzMlICoveyAyMiwgICAzNywgICA2NywgICAxMTksICA4NSwgICAxNTksICAxOTIsICAgMjM5LCAgIDI3MSwgICAzMTAsICAgMzM1LCAgIDM0Mn0sCisvKiA3NCUgKi97IDIxLCAgIDM2LCAgIDYzLCAgIDExNCwgIDgwLCAgIDE1MSwgIDE4MywgICAyMjYsICAgMjU2LCAgIDI5MSwgICAzMTQsICAgMzIwfSwKKy8qIDc1JSAqL3sgMjAsICAgMzQsICAgNjAsICAgMTA5LCAgNzUsICAgMTQ0LCAgMTc0LCAgIDIxNCwgICAyNDEsICAgMjczLCAgIDI5NCwgICAyOTh9LAorLyogNzYlICoveyAxOSwgICAzMiwgICA1NywgICAxMDQsICA3MCwgICAxMzcsICAxNjQsICAgMjAyLCAgIDIyNywgICAyNTYsICAgMjc0LCAgIDI3OH0sCisvKiA3NyUgKi97IDE4LCAgIDMxLCAgIDUzLCAgIDk5LCAgIDY2LCAgIDEzMCwgIDE1NSwgICAxOTAsICAgMjEzLCAgIDIzOSwgICAyNTYsICAgMjU5fSwKKy8qIDc4JSAqL3sgMTcsICAgMjksICAgNTAsICAgOTQsICAgNjIsICAgMTIyLCAgMTQ2LCAgIDE3OCwgICAyMDAsICAgMjIzLCAgIDIzOCwgICAyNDF9LAorLyogNzklICoveyAxNiwgICAyOCwgICA0NywgICA4OSwgICA1OCwgICAxMTUsICAxMzgsICAgMTY3LCAgIDE4NywgICAyMDgsICAgMjIyLCAgIDIyNX0sCisvKiA4MCUgKi97IDE2LCAgIDI2LCAgIDQ0LCAgIDg0LCAgIDU0LCAgIDEwOSwgIDEyOSwgICAxNTYsICAgMTc1LCAgIDE5NCwgICAyMDYsICAgMjA5fSwKKy8qIDgxJSAqL3sgMTUsICAgMjQsICAgNDEsICAgNzksICAgNTAsICAgMTAyLCAgMTIxLCAgIDE0NiwgICAxNjMsICAgMTgwLCAgIDE5MiwgICAxOTR9LAorLyogODIlICoveyAxNCwgICAyMywgICAzOSwgICA3NCwgICA0NywgICA5NSwgICAxMTMsICAgMTM2LCAgIDE1MSwgICAxNjcsICAgMTc4LCAgIDE4MX0sCisvKiA4MyUgKi97IDEzLCAgIDIxLCAgIDM2LCAgIDY5LCAgIDQ0LCAgIDg5LCAgIDEwNSwgICAxMjYsICAgMTQwLCAgIDE1NSwgICAxNjYsICAgMTY5fSwKKy8qIDg0JSAqL3sgMTIsICAgMjAsICAgMzMsICAgNjQsICAgNDEsICAgODIsICAgOTcsICAgIDExNiwgICAxMzAsICAgMTQ0LCAgIDE1NSwgICAxNTh9LAorLyogODUlICoveyAxMSwgICAxOSwgICAzMSwgICA2MCwgICAzOSwgICA3NiwgICA4OSwgICAgMTA3LCAgIDEyMCwgICAxMzQsICAgMTQ1LCAgIDE0OX0sCisvKiA4NiUgKi97IDExLCAgIDE3LCAgIDI5LCAgIDU1LCAgIDM2LCAgIDcwLCAgIDgyLCAgICA5OCwgICAgMTEwLCAgIDEyNSwgICAxMzYsICAgMTQwfSwKKy8qIDg3JSAqL3sgMTAsICAgMTYsICAgMjYsICAgNTEsICAgMzQsICAgNjQsICAgNzUsICAgIDkwLCAgICAxMDIsICAgMTE2LCAgIDEyOCwgICAxMzN9LAorLyogODglICoveyA5LCAgICAxNCwgICAyNCwgICA0NiwgICAzMiwgICA1OCwgICA2OCwgICAgODEsICAgIDkzLCAgICAxMDgsICAgMTIxLCAgIDEyOH0sCisvKiA4OSUgKi97IDgsICAgIDEzLCAgIDIyLCAgIDQyLCAgIDMxLCAgIDUyLCAgIDYxLCAgICA3NCwgICAgODYsICAgIDEwMiwgICAxMTYsICAgMTI0fSwKKy8qIDkwJSAqL3sgNywgICAgMTIsICAgMjEsICAgMzcsICAgMjksICAgNDYsICAgNTQsICAgIDY2LCAgICA3OSwgICAgOTYsICAgIDExMiwgICAxMjF9Cit9OworCisjZGVmaW5lIFJTU0lCVUZfTlVNIDEwCisjZGVmaW5lIFJTU0kyUkFURV9TSVpFIDkKKworc3RhdGljIFRYUkVUUllfUkVDIFR4UmF0ZVJlYz17TVRPX01BWF9EQVRBX1JBVEVfTEVWRUxTIC0gMSwgMH07ICAgLy9uZXcgcmVjb3JkPT5UeFJhdGVSZWMKK3N0YXRpYyBpbnQgVHhSZXRyeVJhdGU7CisvL3N0YXRpYyBpbnQgU1EzLCBCU1NfUEtfQ05ULCBOSURMRVNMT1QsIFNMT1RfQ05ULCBJTlRFUkZfQ05ULCBHQVBfQ05ULCBEU19FVk07CitzdGF0aWMgczMyIFJTU0lCdWZbUlNTSUJVRl9OVU1dPXstNzAsIC03MCwgLTcwLCAtNzAsIC03MCwgLTcwLCAtNzAsIC03MCwgLTcwLCAtNzB9Oworc3RhdGljIHMzMiBSU1NJU21vb3RoZWQ9LTcwMDsKK3N0YXRpYyBpbnQgUlNTSUJ1ZkluZGV4PTA7CitzdGF0aWMgdTggbWF4X3Jzc2lfcmF0ZTsKK3N0YXRpYyBpbnQgcmF0ZV90YmxbMTNdID0gezAsMSwyLDUsMTEsNiw5LDEyLDE4LDI0LDM2LDQ4LDU0fTsKKy8vW1dLQ0hFTl1zdGF0aWMgY29yZV9kYXRhX3QgKnBNVE9jb3JlX2RhdGE9TlVMTDsKKworc3RhdGljIGludCBUb3RhbFR4UGt0ID0gMDsKK3N0YXRpYyBpbnQgVG90YWxUeFBrdFJldHJ5ID0gMDsKK3N0YXRpYyBpbnQgVHhQa3RQZXJBbnRbM10gPSB7MCwwLDB9Oworc3RhdGljIGludCBSWFJTU0lBTlRbM10gPXstNzAsLTcwLC03MH07CitzdGF0aWMgaW50IFR4UGt0UmV0cnlQZXJBbnRbM10gPSB7MCwwLDB9OworLy9zdGF0aWMgaW50IFR4RG9taW5hdGVGbGFnPUZBTFNFOworc3RhdGljIHU4IG9sZF9hbnRlbm5hWzRdPXsxICwwICwxICwwfTsKK3N0YXRpYyBpbnQgcmV0cnlyYXRlX3JlY1tNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFNdOy8vdGhpcyByZWNvcmQgdGhlIHJldHJ5IHJhdGUgYXQgZGlmZmVyZW50IGRhdGEgcmF0ZQorCitzdGF0aWMgaW50IFBlcmlvZFRvdGFsVHhQa3QgPSAwOworc3RhdGljIGludCBQZXJpb2RUb3RhbFR4UGt0UmV0cnkgPSAwOworCit0eXBlZGVmIHN0cnVjdAoreworCXMzMiBSU1NJOworCXU4ICBUeFJhdGU7Cit9UlNTSTJSQVRFOworCitzdGF0aWMgUlNTSTJSQVRFIFJTU0kyUmF0ZVRibFtSU1NJMlJBVEVfU0laRV0gPQoreworCXstNzQwLCAxMDh9LCAgLy8gNTRNCisJey03NjAsIDk2fSwgIC8vIDQ4TQorCXstODIwLCA3Mn0sICAvLyAzNk0KKwl7LTg1MCwgNDh9LCAgLy8gMjRNCisJey04NzAsIDM2fSwgIC8vIDE4TQorCXstODkwLCAyNH0sICAvLyAxMk0KKwl7LTkwMCwgMTJ9LCAgLy8gNk0KKwl7LTkyMCwgMTF9LCAvLyA1LjVNCisJey05NTAsIDR9LCAvLyAyTQorfTsKK3N0YXRpYyB1OCB1bnRvZ2dsZWNvdW50Oworc3RhdGljIHU4IGxhc3RfcmF0ZV9hbnQ7IC8vdGhpcyBpcyB1c2VkIGZvciBhbnRlbm5hIGJhY2tvZmYtaGgKKwordTgJYm9TcGFyc2VUeFRyYWZmaWMgPSBGQUxTRTsKKwordm9pZCBNVE9fSW5pdChNVE9fRlVOQ19JTlBVVCk7Cit2b2lkIEFudGVubmFUb2dnbGVJbml0aWF0b3IoTVRPX0ZVTkNfSU5QVVQpOwordm9pZCBBbnRlbm5hVG9nZ2xlU3RhdGUoTVRPX0ZVTkNfSU5QVVQpOwordm9pZCBUeFB3ckNvbnRyb2woTVRPX0ZVTkNfSU5QVVQpOwordm9pZCBHZXRGcmVzaEFudGVubmFEYXRhKE1UT19GVU5DX0lOUFVUKTsKK3ZvaWQgVHhSYXRlUmVkdWN0aW9uQ3RybChNVE9fRlVOQ19JTlBVVCk7CisvKiogMS4xLjMxLjEwMDAgVHVyYm8gbW9kaWZ5ICovCisvL3ZvaWQgTVRPX1NldERUT1JhdGVSYW5nZShpbnQgdHlwZSk7Cit2b2lkIE1UT19TZXREVE9SYXRlUmFuZ2UoTVRPX0ZVTkNfSU5QVVQsIHU4ICpwUmF0ZUFycmF5LCB1OCBBcnJheVNpemUpOwordm9pZCBNVE9fU2V0VHhDb3VudChNVE9fRlVOQ19JTlBVVCwgdTggdDAsIHU4IGluZGV4KTsKK3ZvaWQgTVRPX1R4RmFpbGVkKE1UT19GVU5DX0lOUFVUKTsKK3ZvaWQgU21vb3RoUlNTSShzMzIgbmV3X3Jzc2kpOwordm9pZCBoYWxfZ2V0X2R0b19wYXJhKE1UT19GVU5DX0lOUFVULCBjaGFyICpidWZmZXIpOwordTggQ2FsY05ld1JhdGUoTVRPX0ZVTkNfSU5QVVQsIHU4IG9sZF9yYXRlLCB1MzIgcmV0cnlfY250LCB1MzIgdHhfZnJhZ19jbnQpOwordTggR2V0TWF4UmF0ZUxldmVsRnJvbVJTU0kodm9pZCk7Cit1OCBNVE9fR2V0VHhGYWxsYmFja1JhdGUoTVRPX0ZVTkNfSU5QVVQpOworaW50IERpdmlkZShpbnQgYSwgaW50IGIpOwordm9pZCBtdWx0aWFnYyhNVE9fRlVOQ19JTlBVVCwgdTggaGlnaF9nYWluX21vZGUpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gIE1UT19Jbml0IC0tCisvLworLy8gIERlc2NyaXB0aW9uOgorLy8gICAgU2V0IERUTyBUeCBSYXRlIFNjb3BlIGJlY2F1c2UgZGlmZmVyZW50IEFQIGNvdWxkIGhhdmUgZGlmZmVyZW50IFJhdGUgc2V0LgorLy8gICAgQWZ0ZXIgb3VyIHN0YWlvbiBqb2luIHdpdGggQVAsIExNIGNvcmUgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZQorLy8gICAgVHggUmF0ZSB0YWJsZS4KKy8vCisvLyAgQXJndW1lbnRzOgorLy8gICAgcFJhdGVBcnJheSAgICAgIC0gVGhlIHBvaW50ZXIgdG8gdGhlIFR4IFJhdGUgQXJyYXkgYnkgdGhlIGZvbGxvd2luZyBvcmRlcgorLy8gICAgICAgICAgICAgICAgICAgIC0gMiwgNCwgMTEsIDIyLCAxMiwgMTgsIDI0LCAzNiwgNDgsIDcyLCA5NiwgMTA4CisvLyAgICAgICAgICAgICAgICAgICAgLSBEVE8gd29uJ3QgY2hlY2sgd2hldGhlciByYXRlIG9yZGVyIGlzIGludmFsaWQgb3Igbm90CisvLyAgICBBcnJheVNpemUgICAgICAgLSBUaGUgYXJyYXkgc2l6ZSB0byBpbmRpY2F0ZSBob3cgbWFueSB0eCByYXRlIHdlIGNhbiBjaG9vc2UKKy8vCisvLyAgc2FtcGxlIGNvZGU6CisvLwl7CisvLwkJdTggUmF0ZUFycmF5WzRdID0gezIsIDQsIDExLCAyMn07CisvLwkJTVRPX1NldERUT1JhdGVSYW5nZShSYXRlQXJyYXksIDQpOworLy8JfQorLy8KKy8vICBSZXR1cm4gVmFsdWU6CisvLyAgICBOb25lCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQgTVRPX1NldERUT1JhdGVSYW5nZShNVE9fRlVOQ19JTlBVVCx1OCAqcFJhdGVBcnJheSwgdTggQXJyYXlTaXplKQoreworCXU4CWksIGo9MDsKKworCWZvcihpPTA7aTxBcnJheVNpemU7aSsrKQorCXsKKwkJaWYocFJhdGVBcnJheVtpXSA9PSAyMikKKwkJCWJyZWFrOworCX0KKwlpZihpIDwgQXJyYXlTaXplKSAvL3dlIG5lZWQgYWRqdXN0IHRoZSBvcmRlciBvZiByYXRlIGxpc3QgYmVjYXVzZSAxMU1icHMgcmF0ZSBleGlzdHMKKwl7CisJCWZvcig7aT4wO2ktLSkKKwkJeworCQkJaWYocFJhdGVBcnJheVtpLTFdIDw9IDExKQorCQkJCWJyZWFrOworCQkJcFJhdGVBcnJheVtpXSA9IHBSYXRlQXJyYXlbaS0xXTsKKwkJfQorCQlwUmF0ZUFycmF5W2ldID0gMjI7CisJCU1UT19PRkRNX1JBVEVfTEVWRUwoKSA9IGk7CisJfQorCWVsc2UKKwl7CisJCWZvcihpPTA7IGk8QXJyYXlTaXplOyBpKyspCisJCXsKKwkJCWlmIChwUmF0ZUFycmF5W2ldID49IDEyKQorCQkJCWJyZWFrOworCQl9CisJCU1UT19PRkRNX1JBVEVfTEVWRUwoKSA9IGk7CisJfQorCisJZm9yKGk9MDtpPEFycmF5U2l6ZTtpKyspCisJeworCQlNVE9fRGF0YV9SYXRlX1RibFtpXSA9IHBSYXRlQXJyYXlbaV07CisJCWZvcig7ajxNVE9fTUFYX0RBVEFfUkFURV9MRVZFTFM7aisrKQorCQl7CisJCQlpZihTdGFyZGFyZF9EYXRhX1JhdGVfVGJsW2pdID09IHBSYXRlQXJyYXlbaV0pCisJCQkJYnJlYWs7CisJCX0KKwkJTGV2ZWwyUGVyVGJsW2ldID0gajsKKwkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJV0JERUJVRygoIltNVE9dOk9wIFJhdGVbJWRdOiAlZFxuIixpLCBNVE9fRGF0YV9SYXRlX1RibFtpXSkpOworCQkjZW5kaWYKKwl9CisJTVRPX0RhdGFSYXRlQXZhaWxhYmxlTGV2ZWwgPSBBcnJheVNpemU7CisJaWYoIE1UT19EQVRBKCkuUmF0ZVBvbGljeSApIC8vIDAgbWVhbnMgdGhhdCBubyByZWdpc3RyeSBzZXR0aW5nCisJeworCQlpZiggTVRPX0RBVEEoKS5SYXRlUG9saWN5ID09IDEgKQorCQkJVHhSYXRlUmVjLnR4X3JhdGUgPSAwOwkvL2FzY2VudAorCQllbHNlCisJCQlUeFJhdGVSZWMudHhfcmF0ZSA9IE1UT19EYXRhUmF0ZUF2YWlsYWJsZUxldmVsIC0xIDsJLy9kZXNjZW50CisJfQorCWVsc2UKKwl7CisJCWlmKCBNVE9fSU5JVFRYUkFURV9NT0RFICkKKwkJCVR4UmF0ZVJlYy50eF9yYXRlID0gMDsJLy9hc2NlbnQKKwkJZWxzZQorCQkJVHhSYXRlUmVjLnR4X3JhdGUgPSBNVE9fRGF0YVJhdGVBdmFpbGFibGVMZXZlbCAtMSA7CS8vZGVzY2VudAorCX0KKwlUeFJhdGVSZWMudHhfcmV0cnlfcmF0ZSA9IDA7CisJLy9zZXQgZGVmYXVsdCByYXRlIGZvciBpbml0aWFsIHVzZQorCU1UT19SQVRFX0xFVkVMKCkgPSBUeFJhdGVSZWMudHhfcmF0ZTsKKwlNVE9fRkFMTEJBQ0tfUkFURV9MRVZFTCgpID0gTVRPX1JBVEVfTEVWRUwoKTsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBNVE9fSW5pdCAtLQorLy8KKy8vICBEZXNjcmlwdGlvbjoKKy8vICAgIEluaXRpYWxpemUgTVRPIHBhcmFtZXRlcnMuCisvLworLy8gICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgaW52b2tlZCBkdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uLgorLy8KKy8vICBBcmd1bWVudHM6CisvLyAgICBBZGFwdGVyICAgICAgLSBUaGUgcG9pbnRlciB0byB0aGUgTWluaXBvcnQgQWRhcHRlciBDb250ZXh0CisvLworLy8gIFJldHVybiBWYWx1ZToKKy8vICAgIE5vbmUKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordm9pZCBNVE9fSW5pdChNVE9fRlVOQ19JTlBVVCkKK3sKKyAgICBpbnQgaTsKKwkvL1dCREVCVUcoKCJbTVRPXSAtPiBNVE9fSW5pdCgpXG4iKSk7CisJLy9bV0tDSEVOXXBNVE9jb3JlX2RhdGEgPSBwY29yZV9kYXRhOworLy8gMjAwNDA1MTAgVHVyYm8gYWRkIGZvciBnbG9iYWwgdmFyaWFibGUKKyAgICBNVE9fVE1SX0NOVCgpICAgICAgID0gMDsKKyAgICBNVE9fVE9HR0xFX1NUQVRFKCkgID0gVE9HR0xFX1NUQVRFX0lETEU7CisgICAgTVRPX1RYX1JBVEVfUkVEVUNUSU9OX1NUQVRFKCkgPSBSQVRFX0NIR1NUQVRFX0lETEU7CisgICAgTVRPX0JBQ0tPRkZfVE1SKCkgICA9IDA7CisgICAgTVRPX0xBU1RfUkFURSgpICAgICA9IDExOworICAgIE1UT19DT19FRkZJQ0VOVCgpICAgPSAwOworCisgICAgLy9NVE9fVEhfRklYQU5UKCkgICAgID0gTVRPX0RFRkFVTFRfVEhfRklYQU5UOworICAgIE1UT19USF9DTlQoKSAgICAgICAgPSBNVE9fREVGQVVMVF9USF9DTlQ7CisgICAgTVRPX1RIX1NRMygpICAgICAgICA9IE1UT19ERUZBVUxUX1RIX1NRMzsKKyAgICBNVE9fVEhfSURMRV9TTE9UKCkgID0gTVRPX0RFRkFVTFRfVEhfSURMRV9TTE9UOworICAgIE1UT19USF9QUl9JTlRFUkYoKSAgPSBNVE9fREVGQVVMVF9USF9QUl9JTlRFUkY7CisKKyAgICBNVE9fVE1SX0FHSU5HKCkgICAgID0gTVRPX0RFRkFVTFRfVE1SX0FHSU5HOworICAgIE1UT19UTVJfUEVSSU9ESUMoKSAgPSBNVE9fREVGQVVMVF9UTVJfUEVSSU9ESUM7CisKKyAgICAvL1tXS0NIRU5dTVRPX0NDQV9NT0RFX1NFVFVQKCk9ICh1OCkgaGFsX2dldF9jY2FfbW9kZShNVE9fSEFMKCkpOworICAgIC8vW1dLQ0hFTl1NVE9fQ0NBX01PREUoKSAgICAgID0gTVRPX0NDQV9NT0RFX1NFVFVQKCk7CisKKyAgICAvL01UT19QUkVBTUJMRV9UWVBFKCkgPSBNVE9fUFJFQU1CTEVfTE9ORzsKKyAgICBNVE9fUFJFQU1CTEVfVFlQRSgpID0gTVRPX1BSRUFNQkxFX1NIT1JUOyAgIC8vIGZvciB0ZXN0CisKKyAgICBNVE9fQU5UX1NFTCgpICAgICAgID0gaGFsX2dldF9hbnRlbm5hX251bWJlcihNVE9fSEFMKCkpOworICAgIE1UT19BTlRfTUFDKCkgICAgICAgPSBNVE9fQU5UX1NFTCgpOworICAgIE1UT19DTlRfQU5UKDApICAgICAgPSAwOworICAgIE1UT19DTlRfQU5UKDEpICAgICAgPSAwOworICAgIE1UT19TUV9BTlQoMCkgICAgICAgPSAwOworICAgIE1UT19TUV9BTlQoMSkgICAgICAgPSAwOworICAgIE1UT19BTlRfRElWRVJTSVRZKCkgPSBNVE9fQU5URU5OQV9ESVZFUlNJVFlfT047CisgICAgLy9DYXJkU2V0X0FudGVubmFEaXZlcnNpdHkoQWRhcHRlciwgTVRPX0FOVF9ESVZFUlNJVFkoKSk7CisgICAgLy9QTE1FU2V0QW50ZW5uYURpdmVyc2l0eSggQWRhcHRlciwgTVRPX0FOVF9ESVZFUlNJVFkoKSk7CisKKyAgICBNVE9fQUdJTkdfVElNRU9VVCgpID0gMDsvL01UT19UTVJfQUdJTkcoKSAvIE1UT19UTVJfUEVSSU9ESUMoKTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gdGhlIHZhbHVlcyBzZXQgYnkgdXNlcgorICAgIC8vCisgICAgLy9NVE9fUkFURV9MRVZFTCgpICAgICAgICAgICAgPSAxMDsKKyAgICBNVE9fUkFURV9MRVZFTCgpICAgICAgICAgICAgPSAwOworCU1UT19GQUxMQkFDS19SQVRFX0xFVkVMKCkJPSBNVE9fUkFURV9MRVZFTCgpOworICAgIE1UT19GUkFHX1RIX0xFVkVMKCkgICAgICAgICA9IDQ7CisgICAgLyoqIDEuMS4yMy4xMDAwIFR1cmJvIG1vZGlmeSBmcm9tIC0xIHRvICsxCisJTVRPX1JUU19USFJFU0hPTEQoKSAgICAgICAgID0gTVRPX0ZSQUdfVEgoKSAtIDE7CisgICAgTVRPX1JUU19USFJFU0hPTERfU0VUVVAoKSAgID0gTVRPX0ZSQUdfVEgoKSAtIDE7CisJKi8KKwlNVE9fUlRTX1RIUkVTSE9MRCgpICAgICAgICAgPSBNVE9fRlJBR19USCgpICsgMTsKKyAgICBNVE9fUlRTX1RIUkVTSE9MRF9TRVRVUCgpICAgPSBNVE9fRlJBR19USCgpICsgMTsKKyAgICAvLyAxLjEuMjMuMTAwMCBUdXJibyBhZGQgZm9yIG10byBjaGFuZ2UgcHJlYW1ibGUgZnJvbSAwIHRvIDEKKwlNVE9fUkFURV9DSEFOR0VfRU5BQkxFKCkgICAgPSAxOworICAgIE1UT19GUkFHX0NIQU5HRV9FTkFCTEUoKSAgICA9IDA7ICAgICAgICAgIC8vIDEuMS4yOS4xMDAwIFR1cmJvIGFkZCBkb24ndCBzdXBwb3J0IGZyYWcKKwkvL1RoZSBkZWZhdWx0IHZhbHVkIG9mIEFOVERJVl9ERUZBVUxUX09OIHdpbGwgYmUgZGVjaWRlZCBieSBFRVBST00KKwkvLyNpZmRlZiBBTlRESVZfREVGQVVMVF9PTgorICAgIC8vTVRPX0FOVF9ESVZFUlNJVFlfRU5BQkxFKCkgID0gMTsKKwkvLyNlbHNlCisgICAgLy9NVE9fQU5UX0RJVkVSU0lUWV9FTkFCTEUoKSAgPSAwOworCS8vI2VuZGlmCisgICAgTVRPX1BPV0VSX0NIQU5HRV9FTkFCTEUoKSAgID0gMTsKKwlNVE9fUFJFQU1CTEVfQ0hBTkdFX0VOQUJMRSgpPSAxOworICAgIE1UT19SVFNfQ0hBTkdFX0VOQUJMRSgpICAgICA9IDA7ICAgICAgICAgIC8vIDEuMS4yOS4xMDAwIFR1cmJvIGFkZCBkb24ndCBzdXBwb3J0IGZyYWcKKyAgICAvLyAyMDA0MDUxMiBUdXJibyBhZGQKKwkvL29sZF9hbnRlbm5hWzBdID0gMTsKKwkvL29sZF9hbnRlbm5hWzFdID0gMDsKKwkvL29sZF9hbnRlbm5hWzJdID0gMTsKKwkvL29sZF9hbnRlbm5hWzNdID0gMDsKKwlmb3IgKGk9MDtpPE1UT19NQVhfREFUQV9SQVRFX0xFVkVMUztpKyspCisJCXJldHJ5cmF0ZV9yZWNbaV09NTsKKworCU1UT19UWEZMT1dDT1VOVCgpID0gMDsKKwkvLy0tLS0tLS0tLSBEVE8gdGhyZXNob2xkIHBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLQorCS8vTVRPUEFSQV9QRVJJT0RJQ19DSEVDS19DWUNMRSgpID0gNTA7CisJTVRPUEFSQV9QRVJJT0RJQ19DSEVDS19DWUNMRSgpID0gMTA7CisJTVRPUEFSQV9SU1NJX1RIX0ZPUl9BTlRESVYoKSA9IDEwOworCU1UT1BBUkFfVFhDT1VOVF9USF9GT1JfQ0FMQ19SQVRFKCkgPSA1MDsKKwlNVE9QQVJBX1RYUkFURV9JTkNfVEgoKQk9IDEwOworCU1UT1BBUkFfVFhSQVRFX0RFQ19USCgpID0gMzA7CisJTVRPUEFSQV9UWFJBVEVfRVFfVEgoKSA9IDQwOworCU1UT1BBUkFfVFhSQVRFX0JBQ0tPRkYoKSA9IDEyOworCU1UT1BBUkFfVFhSRVRSWVJBVEVfUkVEVUNFKCkgPSA2OworCWlmICggTVRPX1RYUE9XRVJfRlJPTV9FRVBST00gPT0gMHhmZikKKwl7CisJCXN3aXRjaCggTVRPX0hBTCgpLT5waHlfdHlwZSkKKwkJeworCQkJY2FzZSBSRl9BSVJPSEFfMjIzMDoKKwkJCWNhc2UgUkZfQUlST0hBXzIyMzBTOiAvLyAyMDA2MDQyMCBBZGQgdGhpcworCQkJCU1UT1BBUkFfVFhQT1dFUl9JTkRFWCgpID0gNDY7IC8vIE1BWC04IC8vIEBAIE9ubHkgZm9yIEFMIDIyMzAKKwkJCQlicmVhazsKKwkJCWNhc2UgUkZfQUlST0hBXzcyMzA6CisJCQkJTVRPUEFSQV9UWFBPV0VSX0lOREVYKCkgPSA0OTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUkZfV0JfMjQyOgorCQkJCU1UT1BBUkFfVFhQT1dFUl9JTkRFWCgpID0gMTA7CisJCQkJYnJlYWs7CisJCQljYXNlIFJGX1dCXzI0Ml8xOgorCQkJCU1UT1BBUkFfVFhQT1dFUl9JTkRFWCgpID0gMjQ7IC8vIC0+MTAgMjAwNjAzMTYuMSBtb2RpZnkKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCS8vZm9sbG93IHRoZSBzZXR0aW5nIGZyb20gRUVQUk9NCisJCU1UT1BBUkFfVFhQT1dFUl9JTkRFWCgpID0gTVRPX1RYUE9XRVJfRlJPTV9FRVBST007CisJaGFsX3NldF9yZl9wb3dlcihNVE9fSEFMKCksICh1OClNVE9QQVJBX1RYUE9XRVJfSU5ERVgoKSk7CisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8vIEZvciBSU1NJIHR1cm5pbmcgMjAwNjA4MDguNCBDYW5jZWwgbG9hZCBmcm9tIEVFUFJPTQorCU1UT19EQVRBKCkuUlNTSV9oaWdoID0gLTQxOworCU1UT19EQVRBKCkuUlNTSV9sb3cgPSAtNjA7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KK3N0YXRpYyB1MzIgRFRPX1J4X0luZm9bMTNdWzNdOworc3RhdGljIHUzMiBEVE9fUnhDUkNGYWlsX0luZm9bMTNdWzNdOworc3RhdGljIHUzMiBBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lcj01OwordHlwZWRlZiBzdHJ1Y3R7CisJaW50IFJ4UmF0ZTsKKwlpbnQgUnhSYXRlUGt0czsKKwlpbnQgaW5kZXg7Cit9UlhSQVRFX0FOVDsKK1JYUkFURV9BTlQgUnhSYXRlUGVha0FudFszXTsKKworI2RlZmluZSBBTlQwICAgIDAKKyNkZWZpbmUgQU5UMSAgICAxCisjZGVmaW5lIE9MRF9BTlQgMgorCit2b2lkIFNlYXJjaFBlYWtSeFJhdGUoaW50IGluZGV4KQoreworCWludCBpOworCVJ4UmF0ZVBlYWtBbnRbaW5kZXhdLlJ4UmF0ZVBrdHM9MDsKKwkvL0ZpbmQgb3V0IHRoZSBiZXN0IHJ4IHJhdGUgd2hpY2ggaXMgdXNlZCBvbiBkaWZmZXJlbnQgYW50ZW5uYQorCWZvcihpPTE7aTwxMztpKyspCisJeworCQlpZihEVE9fUnhfSW5mb1tpXVtpbmRleF0gPiAodTMyKSBSeFJhdGVQZWFrQW50W2luZGV4XS5SeFJhdGVQa3RzKQorCQl7CisJCQlSeFJhdGVQZWFrQW50W2luZGV4XS5SeFJhdGVQa3RzID0gRFRPX1J4X0luZm9baV1baW5kZXhdOworCQkJUnhSYXRlUGVha0FudFtpbmRleF0uUnhSYXRlID0gcmF0ZV90YmxbaV07CisJCQlSeFJhdGVQZWFrQW50W2luZGV4XS5pbmRleCA9IGk7CisJCX0KKwl9Cit9CisKK3ZvaWQgUmVzZXREVE9fUnhJbmZvKGludCBpbmRleCwgTVRPX0ZVTkNfSU5QVVQpCit7CisJaW50IGk7CisKKwkjaWZkZWYgX1BFX0RUT19EVU1QXworCVdCREVCVUcoKCJSZXNldERUT3J4XG4iKSk7CisJI2VuZGlmCisKKwlmb3IoaT0wO2k8MTM7aSsrKQorCQlEVE9fUnhfSW5mb1tpXVtpbmRleF0gPSBNVE9fSEFMKCktPnJ4X29rX2NvdW50W2ldOworCisJZm9yKGk9MDtpPDEzO2krKykKKwkJRFRPX1J4Q1JDRmFpbF9JbmZvW2ldW2luZGV4XSA9IE1UT19IQUwoKS0+cnhfZXJyX2NvdW50W2ldOworCisJVG90YWxUeFBrdCA9IDA7CisJVG90YWxUeFBrdFJldHJ5ID0gMDsKK30KKwordm9pZCBHZXREVE9fUnhJbmZvKGludCBpbmRleCwgTVRPX0ZVTkNfSU5QVVQpCit7CisJaW50IGk7CisKKwkjaWZkZWYgX1BFX0RUT19EVU1QXworCVdCREVCVUcoKCJHZXREVE9yeFxuIikpOworCSNlbmRpZgorCisJLy9QREVCVUcoKCJbTVRPXTpEVE9fUnhfSW5mb1slZF09JWQsIHJ4X29rX2NvdW50PSVkXG4iLCBpbmRleCwgRFRPX1J4X0luZm9bMF1baW5kZXhdLCBwaHdfZGF0YS0+cnhfb2tfY291bnRbMF0pKTsKKwlmb3IoaT0wO2k8MTM7aSsrKQorCQlEVE9fUnhfSW5mb1tpXVtpbmRleF0gPSBhYnMoTVRPX0hBTCgpLT5yeF9va19jb3VudFtpXSAtIERUT19SeF9JbmZvW2ldW2luZGV4XSk7CisJaWYoRFRPX1J4X0luZm9bMF1baW5kZXhdPT0wKSBEVE9fUnhfSW5mb1swXVtpbmRleF0gPSAxOworCisJZm9yKGk9MDtpPDEzO2krKykKKwkJRFRPX1J4Q1JDRmFpbF9JbmZvW2ldW2luZGV4XSA9IE1UT19IQUwoKS0+cnhfZXJyX2NvdW50W2ldIC0gRFRPX1J4Q1JDRmFpbF9JbmZvW2ldW2luZGV4XTsKKworCVR4UGt0UGVyQW50W2luZGV4XSA9IFRvdGFsVHhQa3Q7CisJVHhQa3RSZXRyeVBlckFudFtpbmRleF0gPSBUb3RhbFR4UGt0UmV0cnk7CisJVG90YWxUeFBrdCA9IDA7CisJVG90YWxUeFBrdFJldHJ5ID0gMDsKK30KKwordm9pZCBPdXRwdXREZWJ1Z0luZm8oaW50IGluZGV4MSwgaW50IGluZGV4MikKK3sKKwkjaWZkZWYgX1BFX0RUT19EVU1QXworCVdCREVCVUcoKCJbSEhEVE9dOlRvdGFsIFJ4ICglZClcdFx0KCVkKSBcbiAiLCBEVE9fUnhfSW5mb1swXVtpbmRleDFdLCBEVE9fUnhfSW5mb1swXVtpbmRleDJdKSk7CisgICAgV0JERUJVRygoIltISERUT106UkVDRUlWRSBSU1NJOiAoJWQpXHRcdCglZCkgXG4gIiwgUlhSU1NJQU5UW2luZGV4MV0sIFJYUlNTSUFOVFtpbmRleDJdKSk7CisJV0JERUJVRygoIltISERUT106VFggcGFja2V0IGNvcnJlY3QgcmF0ZTogKCVkKSUlXHRcdCglZCklJSBcbiAiLERpdmlkZShUeFBrdFBlckFudFtpbmRleDFdKjEwMCxUeFBrdFJldHJ5UGVyQW50W2luZGV4MV0pLCBEaXZpZGUoVHhQa3RQZXJBbnRbaW5kZXgyXSoxMDAsVHhQa3RSZXRyeVBlckFudFtpbmRleDJdKSkpOworCSNlbmRpZgorCXsKKwkJaW50IHRtcDEsIHRtcDI7CisJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCVdCREVCVUcoKCJbSEhEVE9dOlRvdGFsIFR4ICglZClcdFx0KCVkKSBcbiAiLCBUeFBrdFBlckFudFtpbmRleDFdLCBUeFBrdFBlckFudFtpbmRleDJdKSk7CisJCVdCREVCVUcoKCJbSEhEVE9dOlRvdGFsIFR4IHJldHJ5ICglZClcdFx0KCVkKSBcbiAiLCBUeFBrdFJldHJ5UGVyQW50W2luZGV4MV0sIFR4UGt0UmV0cnlQZXJBbnRbaW5kZXgyXSkpOworCQkjZW5kaWYKKwkJdG1wMSA9IFR4UGt0UGVyQW50W2luZGV4MV0gKyBEVE9fUnhfSW5mb1swXVtpbmRleDFdOworCQl0bXAyID0gVHhQa3RQZXJBbnRbaW5kZXgyXSArIERUT19SeF9JbmZvWzBdW2luZGV4Ml07CisJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCVdCREVCVUcoKCJbSEhEVE9dOlRvdGFsIFR4K1JYICglZClcdFx0KCVkKSBcbiAiLCB0bXAxLCB0bXAyKSk7CisJCSNlbmRpZgorCX0KK30KKwordW5zaWduZWQgY2hhciBUeERvbWluYXRlKGludCBpbmRleCkKK3sKKwlpbnQgdG1wOworCisJdG1wID0gVHhQa3RQZXJBbnRbaW5kZXhdICsgRFRPX1J4X0luZm9bMF1baW5kZXhdOworCisJaWYoRGl2aWRlKFR4UGt0UGVyQW50W2luZGV4XSoxMDAsIHRtcCkgPiA0MCkKKwkJcmV0dXJuIFRSVUU7CisJZWxzZQorCQlyZXR1cm4gRkFMU0U7Cit9CisKK3Vuc2lnbmVkIGNoYXIgQ21wVHhSZXRyeVJhdGUoaW50IGluZGV4MSwgaW50IGluZGV4MikKK3sKKwlpbnQgdHhfcmV0cnlfcmF0ZTEsIHR4X3JldHJ5X3JhdGUyOworCXR4X3JldHJ5X3JhdGUxID0gRGl2aWRlKChUeFBrdFJldHJ5UGVyQW50W2luZGV4MV0gLSBUeFBrdFBlckFudFtpbmRleDFdKSoxMDAsIFR4UGt0UmV0cnlQZXJBbnRbaW5kZXgxXSk7CisJdHhfcmV0cnlfcmF0ZTIgPSBEaXZpZGUoKFR4UGt0UmV0cnlQZXJBbnRbaW5kZXgyXSAtIFR4UGt0UGVyQW50W2luZGV4Ml0pKjEwMCwgVHhQa3RSZXRyeVBlckFudFtpbmRleDJdKTsKKwkjaWZkZWYgX1BFX0RUT19EVU1QXworCVdCREVCVUcoKCJbTVRPXTpUeFJldHJ5IEFudDA6ICglZCUlKSAgQW50MTogKCVkJSUpIFxuICIsIHR4X3JldHJ5X3JhdGUxLCB0eF9yZXRyeV9yYXRlMikpOworCSNlbmRpZgorCisJaWYodHhfcmV0cnlfcmF0ZTEgPiB0eF9yZXRyeV9yYXRlMikKKwkJcmV0dXJuIFRSVUU7CisJZWxzZQorCQlyZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgR2V0RnJlc2hBbnRlbm5hRGF0YShNVE9fRlVOQ19JTlBVVCkKK3sKKyAgICB1OCAgICAgIHg7CisKKwl4ID0gaGFsX2dldF9hbnRlbm5hX251bWJlcihNVE9fSEFMKCkpOworCS8vaGFsX2dldF9ic3NfcGtfY250KE1UT19IQUwoKSk7CisJLy9oYWxfZ2V0X2VzdF9zcTMoTVRPX0hBTCgpLCAxKTsKKwlvbGRfYW50ZW5uYVswXSA9IHg7CisJLy9pZiB0aGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgdGltZXIKKwlSZXNldERUT19SeEluZm8oeCwgTVRPX0ZVTkNfSU5QVVRfREFUQSk7CisJaWYoQW50ZW5uYVRvZ2dsZUJrb2ZmVGltZXIpCisJCQlBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lci0tOworCWlmIChhYnMobGFzdF9yYXRlX2FudC1NVE9fUkFURV9MRVZFTCgpKT4xKSAgLy9iYWNrb2ZmIHRpbWVyIHJlc2V0CisJCUFudGVubmFUb2dnbGVCa29mZlRpbWVyPTA7CisKKwlpZiAoTVRPX0FOVF9ESVZFUlNJVFkoKSAhPSBNVE9fQU5URU5OQV9ESVZFUlNJVFlfT04gfHwKKwkJTVRPX0FOVF9ESVZFUlNJVFlfRU5BQkxFKCkgIT0gMSkKKwlBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lcj0xOworCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJV0JERUJVRygoIltISERUT106KipsYXN0IGRhdGEgcmF0ZT0lZCxub3cgZGF0YSByYXRlPSVkKiphbnRlbm5hIHRvZ2dsZSB0aW1lcj0lZCIsbGFzdF9yYXRlX2FudCxNVE9fUkFURV9MRVZFTCgpLEFudGVubmFUb2dnbGVCa29mZlRpbWVyKSk7CisJI2VuZGlmCisJbGFzdF9yYXRlX2FudD1NVE9fUkFURV9MRVZFTCgpOworCWlmKEFudGVubmFUb2dnbGVCa29mZlRpbWVyPT0wKQorCXsKKwkJTVRPX1RPR0dMRV9TVEFURSgpID0gVE9HR0xFX1NUQVRFX1dBSVQwOworCQkjaWZkZWYgX1BFX0RUT19EVU1QXworCQlXQkRFQlVHKCgiW0hIRFRPXTo9PT1zdGF0ZSBpcyBzdGFydGluZz09Zm9yIGFudGVubmEgdG9nZ2xlPT09IikpOworCQkjZW5kaWYKKwl9CisJZWxzZQorCQlNVE9fVE9HR0xFX1NUQVRFKCkgPSBUT0dHTEVfU1RBVEVfSURMRTsKKworCWlmICgoTVRPX0JBQ0tPRkZfVE1SKCkhPTApJiYoTVRPX1JBVEVfTEVWRUwoKT5NVE9fRGF0YVJhdGVBdmFpbGFibGVMZXZlbCAtIDMpKQorCXsKKwkJTVRPX1RPR0dMRV9TVEFURSgpID0gVE9HR0xFX1NUQVRFX0lETEU7CisJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCVdCREVCVUcoKCJbSEhEVE9dOj09PXRoZSBkYXRhIHJhdGUgaXMgJWQgKGdvb2QpYW5kIHdpbGwgbm90IHRvb2dsZSAgPT09IixNVE9fREFUQV9SQVRFKCk+PjEpKTsKKwkJI2VuZGlmCisJfQorCisKK30KKworaW50IFdCX1BDUlsyXTsgLy9wYWNrZXQgY29ycmVjdCByYXRlCisKK3ZvaWQgQW50ZW5uYVRvZ2dsZVN0YXRlKE1UT19GVU5DX0lOUFVUKQoreworICAgIGludCBkZWNpZGVhbnRmbGFnID0gMDsKKwl1OCAgICAgIHg7CisJczMyICAgICByc3NpOworCisJaWYoTVRPX0FOVF9ESVZFUlNJVFlfRU5BQkxFKCkgIT0gMSkKKwkJcmV0dXJuOworCXggPSBoYWxfZ2V0X2FudGVubmFfbnVtYmVyKE1UT19IQUwoKSk7CisJc3dpdGNoKE1UT19UT0dHTEVfU1RBVEUoKSkKKwl7CisKKwkgICAvL01pc3NpbmcuLi4uLgorCSAgIGNhc2UgVE9HR0xFX1NUQVRFX0lETEU6CisJIGNhc2UgVE9HR0xFX1NUQVRFX0JLT0ZGOgorCSAgICAgICAgICAgICBicmVhazs7CisKKwkJY2FzZSBUT0dHTEVfU1RBVEVfV0FJVDA6Ly89PT09PT09PQorCSAgICAgICAgICAgICAgIEdldERUT19SeEluZm8oeCwgTVRPX0ZVTkNfSU5QVVRfREFUQSk7CisJCQlzbWVfZ2V0X3Jzc2koTVRPX0ZVTkNfSU5QVVRfREFUQSwgJnJzc2kpOworCQkJUlhSU1NJQU5UW3hdID0gcnNzaTsKKwkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQlXQkRFQlVHKCgiW0hIRFRPXSAqKndhaXQwPT09PSBDb2xsZWN0aW5nIEFudCVkLS1yc3NpPSVkXG4iLCB4LFJYUlNTSUFOVFt4XSkpOworCQkJI2VuZGlmCisKKwkJCS8vY2hhbmdlIGFudGVubmEgYW5kIHJlc2V0IHRoZSBkYXRhIGF0IGNoYW5nZWQgYW50ZW5uYQorCQkJeCA9ICh+eCkgJiAweDAxOworCQkJTVRPX0FOVF9TRUwoKSA9IHg7CisJCQloYWxfc2V0X2FudGVubmFfbnVtYmVyKE1UT19IQUwoKSwgTVRPX0FOVF9TRUwoKSk7CisJCQlMT0NBTF9BTlRFTk5BX05PKCkgPSB4OworCisJCQlNVE9fVE9HR0xFX1NUQVRFKCkgPSBUT0dHTEVfU1RBVEVfV0FJVDE7Ly9nbyB0byB3YWl0MQorCQkJUmVzZXREVE9fUnhJbmZvKHgsIE1UT19GVU5DX0lOUFVUX0RBVEEpOworCQkJYnJlYWs7CisJCWNhc2UgVE9HR0xFX1NUQVRFX1dBSVQxOi8vPT09PT13YWl0MQorCQkJLy9NVE9fQ05UX0FOVCh4KSA9IGhhbF9nZXRfYnNzX3BrX2NudChNVE9fSEFMKCkpOworCQkJLy9SWFJTU0lBTlRbeF0gPSBoYWxfZ2V0X3Jzc2koTVRPX0hBTCgpKTsKKwkJCXNtZV9nZXRfcnNzaShNVE9fRlVOQ19JTlBVVF9EQVRBLCAmcnNzaSk7CisJCQlSWFJTU0lBTlRbeF0gPSByc3NpOworCQkJR2V0RFRPX1J4SW5mbyh4LCBNVE9fRlVOQ19JTlBVVF9EQVRBKTsKKwkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQlXQkRFQlVHKCgiW0hIRFRPXSAqKndhaXQxPT09PSBDb2xsZWN0aW5nIEFudCVkLS1yc3NpPSVkXG4iLCB4LFJYUlNTSUFOVFt4XSkpOworCQkJI2VuZGlmCisJCQlNVE9fVE9HR0xFX1NUQVRFKCkgPSBUT0dHTEVfU1RBVEVfTUFLRURFU0lTSU9OOworCQkJYnJlYWs7CisJCWNhc2UgVE9HR0xFX1NUQVRFX01BS0VERVNJU0lPTjoKKwkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQlXQkRFQlVHKCgiW0hIRFRPXTpBbnQtLTAtLS0tLS0tLS0tLS0tLS0tLTEtLS1cbiIpKTsKKwkJCU91dHB1dERlYnVnSW5mbyhBTlQwLEFOVDEpOworCQkJI2VuZGlmCisJCQkvL1BERUJVRygoIltISERUT10gKipkZWNpc2lvbj09PT1cbiAiKSk7CisKKwkJCS8vPT09PT1mb2xsb3dpbmcgaXMgdGhlIGRlY2lzaW9uIHByb2R1cmNlCisJCQkvLworCQkJLy8gICAgZmlyc3Q6IGNvbXBhcmUgdGhlIHJzc2kgaWYgZGlmZmVyZW5jZSA+MTAKKwkJCS8vICAgICAgICAgICBzZWxlY3QgdGhlIGxhcmdlciBvbmUKKwkJCS8vICAgICAgICAgICAsb3RoZXJzIGdvIHRvIHNlY29uZAorCQkJLy8gICAgc2Vjb25kOiBjb21hcHJlIHRoZSB0eCtyeCBwYWNrZXQgY291bnQgaWYgZGlmZmVyZW5jZSA+MTAwCisJCQkvLyAgICAgICAgICAgIHVzZSBsYXJnZXIgdG90YWwgcGFja2V0cyBhbnRlbm5hCisJCQkvLyAgICB0aGlyZDo6Y29tcGFyZSB0aGUgdHggUEVSIGlmIHBhY2tldHM+MjAKKwkJCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlmZmVyZW5jZSA+NSUgdXNpbmcgdGhlIGJpZ2dlciBvbmUKKwkJCS8vCisJCQkvLyAgICBmb3VydGg6Y29tcGFyZSB0aGUgUlggUEVSIGlmIHBhY2tldHM+MjAKKwkJCS8vICAgICAgICAgICAgICAgICAgICBpZiBQRVIgZGlmZmVyZW5jZSA8NSUKKwkJCS8vICAgICAgICAgICAgICAgICAgIHVzaW5nIG9sZCBhbnRlbm5hCisJCQkvLworCQkJLy8KKwkJCWlmIChhYnMoUlhSU1NJQU5UW0FOVDBdLVJYUlNTSUFOVFtBTlQxXSkgPiBNVE9QQVJBX1JTU0lfVEhfRk9SX0FOVERJVigpKS8vPT09PXJzc2lfdGgKKwkJCXsKKwkJCQlpZiAoUlhSU1NJQU5UW0FOVDBdPlJYUlNTSUFOVFtBTlQxXSkKKwkJCQl7CisJCQkJCWRlY2lkZWFudGZsYWc9MTsKKwkJCQkJTVRPX0FOVF9NQUMoKSA9IEFOVDA7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWRlY2lkZWFudGZsYWc9MTsKKwkJCQkJTVRPX0FOVF9NQUMoKSA9IEFOVDE7CisJCQkJfQorCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJV0JERUJVRygoIlNlbGVjdCBhbnRlbm5hIGJ5IFJTU0lcbiIpKTsKKwkJCQkjZW5kaWYKKwkJCX0KKwkJCWVsc2UgaWYgIChhYnMoVHhQa3RQZXJBbnRbQU5UMF0gKyBEVE9fUnhfSW5mb1swXVtBTlQwXS1UeFBrdFBlckFudFtBTlQxXS1EVE9fUnhfSW5mb1swXVtBTlQxXSk8NTApLy89PT09PXRvdGFsIHBhY2tldF90aAorCQkJeworCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJV0JERUJVRygoIlRvdGFsIHR4L3J4IGlzIGNsb3NlXG4iKSk7CisJCQkJI2VuZGlmCisJCQkJaWYgKFR4RG9taW5hdGUoQU5UMCkgJiYgVHhEb21pbmF0ZShBTlQxKSkKKwkJCQl7CisJCQkJCWlmICgoVHhQa3RQZXJBbnRbQU5UMF0+MTApICYmIChUeFBrdFBlckFudFtBTlQxXT4xMCkpLy89PT09dHggcGFja2V0X3RoCisJCQkJCXsKKwkJCQkJCVdCX1BDUltBTlQwXT1EaXZpZGUoVHhQa3RQZXJBbnRbQU5UMF0qMTAwLFR4UGt0UmV0cnlQZXJBbnRbQU5UMF0pOworCQkJCQkJV0JfUENSW0FOVDFdPURpdmlkZShUeFBrdFBlckFudFtBTlQxXSoxMDAsVHhQa3RSZXRyeVBlckFudFtBTlQxXSk7CisJCQkJCQlpZiAoYWJzKFdCX1BDUltBTlQwXS1XQl9QQ1JbQU5UMV0pPjUpLy8gdHggUEVSX3RoCisJCQkJCQl7CisJCQkJCQkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJCQkJCQlXQkRFQlVHKCgiRGVjaWRlIGJ5IFR4IGNvcnJlY3QgcmF0ZVxuIikpOworCQkJCQkJCSNlbmRpZgorCQkJCQkJCWlmIChXQl9QQ1JbQU5UMF0+V0JfUENSW0FOVDFdKQorCQkJCQkJCXsKKwkJCQkJCQkJZGVjaWRlYW50ZmxhZz0xOworCQkJCQkJCQlNVE9fQU5UX01BQygpID0gQU5UMDsKKwkJCQkJCQl9CisJCQkJCQkJZWxzZQorCQkJCQkJCXsKKwkJCQkJCQkJZGVjaWRlYW50ZmxhZz0xOworCQkJCQkJCQlNVE9fQU5UX01BQygpID0gQU5UMTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJCQkJZGVjaWRlYW50ZmxhZz0wOworCQkJCQkJCXVudG9nZ2xlY291bnQrKzsKKwkJCQkJCQlNVE9fQU5UX01BQygpID0gb2xkX2FudGVubmFbMF07CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlkZWNpZGVhbnRmbGFnPTA7CisJCQkJCQlNVE9fQU5UX01BQygpID0gb2xkX2FudGVubmFbMF07CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoKERUT19SeF9JbmZvWzBdW0FOVDBdPjEwKSYmKERUT19SeF9JbmZvWzBdW0FOVDFdPjEwKSkvL3J4IHBhY2tldCB0aAorCQkJCXsKKwkJCQkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJCQkJV0JERUJVRygoIkRlY2lkZSBieSBSeFxuIikpOworCQkJCQkjZW5kaWYKKwkJCQkJaWYgKGFicyhEVE9fUnhfSW5mb1swXVtBTlQwXSAtIERUT19SeF9JbmZvWzBdW0FOVDFdKT41MCkKKwkJCQkJeworCQkJCQkJaWYgKERUT19SeF9JbmZvWzBdW0FOVDBdID4gRFRPX1J4X0luZm9bMF1bQU5UMV0pCisJCQkJCQl7CisJCQkJCQkJZGVjaWRlYW50ZmxhZz0xOworCQkJCQkJCU1UT19BTlRfTUFDKCkgPSBBTlQwOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCWRlY2lkZWFudGZsYWc9MTsKKwkJCQkJCQlNVE9fQU5UX01BQygpID0gQU5UMTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWRlY2lkZWFudGZsYWc9MDsKKwkJCQkJCXVudG9nZ2xlY291bnQrKzsKKwkJCQkJCU1UT19BTlRfTUFDKCkgPSBvbGRfYW50ZW5uYVswXTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlkZWNpZGVhbnRmbGFnPTA7CisJCQkJCU1UT19BTlRfTUFDKCkgPSBvbGRfYW50ZW5uYVswXTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmICgoVHhQa3RQZXJBbnRbQU5UMF0rRFRPX1J4X0luZm9bMF1bQU5UMF0pPihUeFBrdFBlckFudFtBTlQxXStEVE9fUnhfSW5mb1swXVtBTlQxXSkpLy91c2UgbW9yZSBwYWNrZWt0cworCQkJeworCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJV0JERUJVRygoImRlY2lkZSBieSB0b3RhbCB0eC9yeCA6IEFOVCAwXG4iKSk7CisJCQkJI2VuZGlmCisKKwkJCQlkZWNpZGVhbnRmbGFnPTE7CisJCQkJTVRPX0FOVF9NQUMoKSA9IEFOVDA7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJCQlXQkRFQlVHKCgiZGVjaWRlIGJ5IHRvdGFsIHR4L3J4IDogQU5UIDFcbiIpKTsKKwkJCQkjZW5kaWYKKwkJCQlkZWNpZGVhbnRmbGFnPTE7CisJCQkJTVRPX0FOVF9NQUMoKSA9IEFOVDE7CisKKwkJCX0KKwkJCS8vdGhpcyBpcyBmb3JjZSBhbnQgdG9nZ2xlCisJCQlpZiAoZGVjaWRlYW50ZmxhZz09MSkKKwkJCQl1bnRvZ2dsZWNvdW50PTA7CisKKwkJCXVudG9nZ2xlY291bnQ9dW50b2dnbGVjb3VudCU0OworCQkJaWYgKHVudG9nZ2xlY291bnQ9PTMpIC8vY2hhbmdlIGFudGVubmEKKwkJCQlNVE9fQU5UX01BQygpID0gKCh+b2xkX2FudGVubmFbMF0pICYgMHgxKTsKKwkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQlXQkRFQlVHKCgiW0hIRFRPXTo9PT09PT09PT09PT09PT09PT11bnRvZ2dsZS1jb3VudD0lZCIsdW50b2dnbGVjb3VudCkpOworCQkJI2VuZGlmCisKKworCisKKwkJCS8vUERFQlVHKCgiW0hIRFRPXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqRFRPIEVOQUJMRT0lZCIsTVRPX0FOVF9ESVZFUlNJVFlfRU5BQkxFKCkpKTsKKwkJCWlmKE1UT19BTlRfRElWRVJTSVRZX0VOQUJMRSgpID09IDEpCisJCQl7CisJCQkJCU1UT19BTlRfU0VMKCkgPSBNVE9fQU5UX01BQygpOworCQkJCQloYWxfc2V0X2FudGVubmFfbnVtYmVyKE1UT19IQUwoKSwgTVRPX0FOVF9TRUwoKSk7CisJCQkJCUxPQ0FMX0FOVEVOTkFfTk8oKSA9IE1UT19BTlRfU0VMKCk7CisJCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJCVdCREVCVUcoKCJbSEhEVE9dID09ZGVjaXNpb249PSoqKioqKiphbnRmbGFnPSVkKioqKioqKioqKioqKioqKioqc2VsZWN0ZWQgYW50ZW5uYT0lZFxuIixkZWNpZGVhbnRmbGFnLE1UT19BTlRfU0VMKCkpKTsKKwkJCQkJI2VuZGlmCisJCQl9CisJCQlpZiAoZGVjaWRlYW50ZmxhZykKKwkJCXsKKwkJCQlvbGRfYW50ZW5uYVszXT1vbGRfYW50ZW5uYVsyXTsvL3N0b3JlIGFudGVubmEgaW5mbworCQkJCW9sZF9hbnRlbm5hWzJdPW9sZF9hbnRlbm5hWzFdOworCQkJCW9sZF9hbnRlbm5hWzFdPW9sZF9hbnRlbm5hWzBdOworCQkJCW9sZF9hbnRlbm5hWzBdPSBNVE9fQU5UX01BQygpOworCQkJfQorCQkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJCVdCREVCVUcoKCJbSEhEVE9dOioqb2xkIGFudGVubmE9WyVkXVslZF1bJWRdWyVkXVxuIixvbGRfYW50ZW5uYVswXSxvbGRfYW50ZW5uYVsxXSxvbGRfYW50ZW5uYVsyXSxvbGRfYW50ZW5uYVszXSkpOworCQkJI2VuZGlmCisJCQlpZiAob2xkX2FudGVubmFbMF0hPW9sZF9hbnRlbm5hWzFdKQorCQkJCUFudGVubmFUb2dnbGVCa29mZlRpbWVyPTA7CisJCQllbHNlIGlmIChvbGRfYW50ZW5uYVsxXSE9b2xkX2FudGVubmFbMl0pCisJCQkJQW50ZW5uYVRvZ2dsZUJrb2ZmVGltZXI9MTsKKwkJCWVsc2UgaWYgKG9sZF9hbnRlbm5hWzJdIT1vbGRfYW50ZW5uYVszXSkKKwkJCQlBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lcj0yOworCQkJZWxzZQorCQkJCUFudGVubmFUb2dnbGVCa29mZlRpbWVyPTQ7CisKKwkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQlXQkRFQlVHKCgiW0hIRFRPXToqKmJhY2sgb2ZmIHRpbWVyPSVkIixBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lcikpOworCQkJI2VuZGlmCisKKwkJCVJlc2V0RFRPX1J4SW5mbyhNVE9fQU5UX01BQygpLCBNVE9fRlVOQ19JTlBVVF9EQVRBKTsKKwkJCWlmIChBbnRlbm5hVG9nZ2xlQmtvZmZUaW1lcj09MCAmJiBkZWNpZGVhbnRmbGFnKQorCQkJCU1UT19UT0dHTEVfU1RBVEUoKSA9IFRPR0dMRV9TVEFURV9XQUlUMDsKKwkJCWVsc2UKKwkJCQlNVE9fVE9HR0xFX1NUQVRFKCkgPSBUT0dHTEVfU1RBVEVfSURMRTsKKwkJCWJyZWFrOworCX0KKworfQorCit2b2lkIG11bHRpYWdjKE1UT19GVU5DX0lOUFVULCB1OCBoaWdoX2dhaW5fbW9kZSApCit7CisJczMyCQlyc3NpOworCWh3X2RhdGFfdAkqcEh3RGF0YSA9IE1UT19IQUwoKTsKKworCXNtZV9nZXRfcnNzaShNVE9fRlVOQ19JTlBVVF9EQVRBLCAmcnNzaSk7CisKKwlpZiggKFJGX1dCXzI0MiA9PSBwSHdEYXRhLT5waHlfdHlwZSkgfHwKKwkJKFJGX1dCXzI0Ml8xID09IHBId0RhdGEtPnBoeV90eXBlKSApIC8vIDIwMDYwNjE5LjUgQWRkCisJeworCQlpZiAoaGlnaF9nYWluX21vZGU9PTEpCisJCXsKKwkJCS8vaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4MEMsIDB4ZjhmNTIyMzApOworCQkJLy9od19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgyMCwgMHgwNkM0MzQ0MCk7CisJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwMEMsIDB4RjJGMzIyMzIgKTsgLy8gOTQwOTE2IDB4ZjhmNTIyMzAgKTsKKwkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTAyMCwgMHgwNGNiMzQ0MCApOyAvLyA5NDA5MTUgMHgwNkM0MzQ0MAorCQl9CisJCWVsc2UgaWYgKGhpZ2hfZ2Fpbl9tb2RlPT0wKQorCQl7CisJCQkvL2h3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDBDLCAweEVFRUUwMDBEKTsKKwkJCS8vaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4MjAsIDB4MDZjNDE0NDApOworCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDBDLCAweEVFRUUwMDBEICk7CisJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwMjAsIDB4MDRjYjE0NDAgKTsgLy8gOTQwOTE1IDB4MDZjNDE0NDAKKwkJfQorCQkjaWZkZWYgX1BFX0RUT19EVU1QXworCQlXQkRFQlVHKCgiW0hIRFRPQUdDXSAqKnJzc2k9JWQsIGhpZ2ggZ2FpbiBtb2RlPSVkIiwgcnNzaSwgaGlnaF9nYWluX21vZGUpKTsKKwkJI2VuZGlmCisJfQorfQorCit2b2lkIFR4UHdyQ29udHJvbChNVE9fRlVOQ19JTlBVVCkKK3sKKyAgICBzMzIgICAgIHJzc2k7CisJaHdfZGF0YV90CSpwSHdEYXRhID0gTVRPX0hBTCgpOworCisJc21lX2dldF9yc3NpKE1UT19GVU5DX0lOUFVUX0RBVEEsICZyc3NpKTsKKwlpZiggKFJGX1dCXzI0MiA9PSBwSHdEYXRhLT5waHlfdHlwZSkgfHwKKwkJKFJGX1dCXzI0Ml8xID09IHBId0RhdGEtPnBoeV90eXBlKSApIC8vIDIwMDYwNjE5LjUgQWRkCisJeworCQlzdGF0aWMgdTggaGlnaF9nYWluX21vZGU7IC8vdGhpcyBpcyBmb3Igd2luYm9uZCBSRiBzd2l0Y2ggTE5BCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2luZyBkaWZmZXJlbnQgcmVnaXN0ZXIgc2V0dGluZworCisJCWlmIChoaWdoX2dhaW5fbW9kZT09MSkKKwkJeworCQkJaWYoIHJzc2kgPiBNVE9fREFUQSgpLlJTU0lfaGlnaCApCisJCQl7CisJCQkJLy9od19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgwQywgMHhmOGY1MjIzMCk7CisJCQkJLy9od19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgyMCwgMHgwNTU0MTY0MCk7CisJCQkJaGlnaF9nYWluX21vZGU9MDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvL2h3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDBDLCAweGY4ZjUxODMwKTsKKwkJCQkvL2h3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDIwLCAweDA1NTQzRTQwKTsKKwkJCQloaWdoX2dhaW5fbW9kZT0xOworCQkJfQorCQl9CisJCWVsc2UgLy9pZiAoaGlnaF9nYWluX21vZGU9PTApCisJCXsKKwkJCWlmKCByc3NpIDwgTVRPX0RBVEEoKS5SU1NJX2xvdyApCisJCQl7CisJCQkJLy9od19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgwQywgMHhmOGY1MTgzMCk7CisJCQkJLy9od19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgyMCwgMHgwNTU0M0U0MCk7CisJCQkJaGlnaF9nYWluX21vZGU9MTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvL2h3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDBDLCAweGY4ZjUyMjMwKTsKKwkJCQkvL2h3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDIwLCAweDA1NTQxNjQwKTsKKwkJCQloaWdoX2dhaW5fbW9kZT0wOworCQkJfQorCQl9CisKKwkJLy8gQWx3YXlzIGhpZ2ggZ2FpbiAyMDA1MTAxNC4gVXNpbmcgdGhlIGluaXRpYWwgdmFsdWUgb25seS4KKwkJbXVsdGlhZ2MoTVRPX0ZVTkNfSU5QVVRfREFUQSwgaGlnaF9nYWluX21vZGUpOworCX0KK30KKworCit1OCBDYWxjTmV3UmF0ZShNVE9fRlVOQ19JTlBVVCwgdTggb2xkX3JhdGUsIHUzMiByZXRyeV9jbnQsIHUzMiB0eF9mcmFnX2NudCkKK3sKKwlpbnQgaTsKKwl1OCBuZXdfcmF0ZTsKKyAgICB1MzIgcmV0cnlfcmF0ZTsKKwlpbnQgVHhUaHJvdXB1dDEsIFR4VGhyb3VwdXQyLCBUeFRocm91cHV0MywgQmVzdFRocm91cGh0OworCisJaWYodHhfZnJhZ19jbnQgPCBNVE9QQVJBX1RYQ09VTlRfVEhfRk9SX0NBTENfUkFURSgpKSAvL3RvbyBmZXcgcGFja2V0cyB0cmFuc21pdAorCXsKKwkJcmV0dXJuIDB4ZmY7CisJfQorCXJldHJ5X3JhdGUgPSBEaXZpZGUocmV0cnlfY250ICogMTAwLCB0eF9mcmFnX2NudCk7CisKKwlpZihyZXRyeV9yYXRlID4gOTApIHJldHJ5X3JhdGUgPSA5MDsgLy9hbHdheXMgdHJ1bmNhdGUgdG8gOTAlIGR1ZSB0byBsb29rdXAgdGFibGUgc2l6ZQorCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJV0JERUJVRygoIiMjIyMjIEN1cnJlbnQgbGV2ZWwgPSVkLCBSZXRyeSBjb3VudCA9JWQsIEZyYWcgY291bnQgPSVkXG4iLAorCQkJCQkJb2xkX3JhdGUsIHJldHJ5X2NudCwgdHhfZnJhZ19jbnQpKTsKKwlXQkRFQlVHKCgiKiMjKiBSZXRyeSByYXRlID0lZCwgdGhyb3VnaHB1dCA9JWRcbiIsCisJCQkJCQlyZXRyeV9yYXRlLCBSYXRlX1BFUl9UQkxbcmV0cnlfcmF0ZV1bb2xkX3JhdGVdKSk7CisJV0JERUJVRygoIlR4UmF0ZVJlYy50eF9yYXRlID0lZCwgUmV0cnkgcmF0ZSA9ICVkLCB0aHJvdWdocHV0ID0gJWRcbiIsCisJCQkJCQlUeFJhdGVSZWMudHhfcmF0ZSwgVHhSYXRlUmVjLnR4X3JldHJ5X3JhdGUsCisJCQkJCQlSYXRlX1BFUl9UQkxbVHhSYXRlUmVjLnR4X3JldHJ5X3JhdGVdW0xldmVsMlBlclRibFtUeFJhdGVSZWMudHhfcmF0ZV1dKSk7CisJV0JERUJVRygoIm9sZF9yYXRlLTEgPSVkLCBSZXRyeSByYXRlID0gJWQsIHRocm91Z2hwdXQgPSAlZFxuIiwKKwkJCQkJCW9sZF9yYXRlLTEsIHJldHJ5cmF0ZV9yZWNbb2xkX3JhdGUtMV0sCisJCQkJCQlSYXRlX1BFUl9UQkxbcmV0cnlyYXRlX3JlY1tvbGRfcmF0ZS0xXV1bb2xkX3JhdGUtMV0pKTsKKwlXQkRFQlVHKCgib2xkX3JhdGUrMSA9JWQsIFJldHJ5IHJhdGUgPSAlZCwgdGhyb3VnaHB1dCA9ICVkXG4iLAorCQkJCQkJb2xkX3JhdGUrMSwgcmV0cnlyYXRlX3JlY1tvbGRfcmF0ZSsxXSwKKwkJCQkJCVJhdGVfUEVSX1RCTFtyZXRyeXJhdGVfcmVjW29sZF9yYXRlKzFdXVtvbGRfcmF0ZSsxXSkpOworCSNlbmRpZgorCisJLy9mb2xsb3dpbmcgaXMgZm9yIHJlY29yZCB0aGUgcmV0cnkgcmF0ZSBhdCB0aGUgZGlmZmVyZW50IGRhdGEgcmF0ZQorCWlmIChhYnMocmV0cnlfcmF0ZS1yZXRyeXJhdGVfcmVjW29sZF9yYXRlXSk8NTApLy8tLS10aGUgcGVyIFRICisJCXJldHJ5cmF0ZV9yZWNbb2xkX3JhdGVdID0gcmV0cnlfcmF0ZTsgLy91cGRhdGUgcmV0cnkgcmF0ZQorCWVsc2UKKwl7CisJCWZvciAoaT0wO2k8TVRPX0RhdGFSYXRlQXZhaWxhYmxlTGV2ZWw7aSsrKSAvL3Jlc2V0IGFsbCByZXRyeSByYXRlCisJCQlyZXRyeXJhdGVfcmVjW2ldPTA7CisJCXJldHJ5cmF0ZV9yZWNbb2xkX3JhdGVdID0gcmV0cnlfcmF0ZTsKKwkJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwkJV0JERUJVRygoIlJlc2V0IHJldHJ5IHJhdGUgdGFibGVcbiIpKTsKKwkJI2VuZGlmCisJfQorCisJaWYoVHhSYXRlUmVjLnR4X3JhdGUgPiBvbGRfcmF0ZSkgICAvL0RlY3JlYXNlIFR4IFJhdGUKKwl7CisJCVR4VGhyb3VwdXQxID0gUmF0ZV9QRVJfVEJMW1R4UmF0ZVJlYy50eF9yZXRyeV9yYXRlXVtMZXZlbDJQZXJUYmxbVHhSYXRlUmVjLnR4X3JhdGVdXTsKKwkJVHhUaHJvdXB1dDIgPSBSYXRlX1BFUl9UQkxbcmV0cnlfcmF0ZV1bTGV2ZWwyUGVyVGJsW29sZF9yYXRlXV07CisJCWlmKFR4VGhyb3VwdXQxID4gVHhUaHJvdXB1dDIpCisJCXsKKwkJCW5ld19yYXRlID0gVHhSYXRlUmVjLnR4X3JhdGU7CisJCQlCZXN0VGhyb3VwaHQgPSBUeFRocm91cHV0MTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW5ld19yYXRlID0gb2xkX3JhdGU7CisJCQlCZXN0VGhyb3VwaHQgPSBUeFRocm91cHV0MjsKKwkJfQorCQlpZigob2xkX3JhdGUgPiAwKSAmJihyZXRyeV9yYXRlPk1UT1BBUkFfVFhSQVRFX0RFQ19USCgpKSkgICAvL01pbiBSYXRlCisJCXsKKwkJCVR4VGhyb3VwdXQzID0gUmF0ZV9QRVJfVEJMW3JldHJ5cmF0ZV9yZWNbb2xkX3JhdGUtMV1dW0xldmVsMlBlclRibFtvbGRfcmF0ZS0xXV07CisJCQlpZihCZXN0VGhyb3VwaHQgPCBUeFRocm91cHV0MykKKwkJCXsKKwkJCQluZXdfcmF0ZSA9IG9sZF9yYXRlIC0gMTsKKwkJCQkjaWZkZWYgX1BFX0RUT19EVU1QXworCQkJCVdCREVCVUcoKCItLS0tLS0tLVxuIikpOworCQkJCSNlbmRpZgorCQkJCUJlc3RUaHJvdXBodCA9IFR4VGhyb3VwdXQzOworCQkJfQorCQl9CisJfQorCWVsc2UgaWYoVHhSYXRlUmVjLnR4X3JhdGUgPCBvbGRfcmF0ZSkgIC8vSW5jcmVhc2UgVHggUmF0ZQorCXsKKwkJVHhUaHJvdXB1dDEgPSBSYXRlX1BFUl9UQkxbVHhSYXRlUmVjLnR4X3JldHJ5X3JhdGVdW0xldmVsMlBlclRibFtUeFJhdGVSZWMudHhfcmF0ZV1dOworCQlUeFRocm91cHV0MiA9IFJhdGVfUEVSX1RCTFtyZXRyeV9yYXRlXVtMZXZlbDJQZXJUYmxbb2xkX3JhdGVdXTsKKwkJaWYoVHhUaHJvdXB1dDEgPiBUeFRocm91cHV0MikKKwkJeworCQkJbmV3X3JhdGUgPSBUeFJhdGVSZWMudHhfcmF0ZTsKKwkJCUJlc3RUaHJvdXBodCA9IFR4VGhyb3VwdXQxOworCQl9CisJCWVsc2UKKwkJeworCQkJbmV3X3JhdGUgPSBvbGRfcmF0ZTsKKwkJCUJlc3RUaHJvdXBodCA9IFR4VGhyb3VwdXQyOworCQl9CisJCWlmICgob2xkX3JhdGUgPCBNVE9fRGF0YVJhdGVBdmFpbGFibGVMZXZlbCAtIDEpJiYocmV0cnlfcmF0ZTxNVE9QQVJBX1RYUkFURV9JTkNfVEgoKSkpCisJCXsKKwkJCS8vVHhUaHJvdXB1dDMgPSBSYXRlX1BFUl9UQkxbcmV0cnlyYXRlX3JlY1tvbGRfcmF0ZSsxXV1bTGV2ZWwyUGVyVGJsW29sZF9yYXRlKzFdXTsKKwkJCWlmIChyZXRyeXJhdGVfcmVjW29sZF9yYXRlKzFdID4gTVRPUEFSQV9UWFJFVFJZUkFURV9SRURVQ0UoKSkKKwkJCQlUeFRocm91cHV0MyA9IFJhdGVfUEVSX1RCTFtyZXRyeXJhdGVfcmVjW29sZF9yYXRlKzFdLU1UT1BBUkFfVFhSRVRSWVJBVEVfUkVEVUNFKCldW0xldmVsMlBlclRibFtvbGRfcmF0ZSsxXV07CisJCQllbHNlCisJCQkJVHhUaHJvdXB1dDMgPSBSYXRlX1BFUl9UQkxbcmV0cnlyYXRlX3JlY1tvbGRfcmF0ZSsxXV1bTGV2ZWwyUGVyVGJsW29sZF9yYXRlKzFdXTsKKwkJCWlmKEJlc3RUaHJvdXBodCA8IFR4VGhyb3VwdXQzKQorCQkJeworCQkJCW5ld19yYXRlID0gb2xkX3JhdGUgKyAxOworCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJV0JERUJVRygoIisrKysrKysrKytcbiIpKTsKKwkJCQkjZW5kaWYKKwkJCQlCZXN0VGhyb3VwaHQgPSBUeFRocm91cHV0MzsKKwkJCX0KKwkJfQorCX0KKwllbHNlICAvL1R4IFJhdGUgbm8gY2hhbmdlCisJeworCQlUeFRocm91cHV0MiA9IFJhdGVfUEVSX1RCTFtyZXRyeV9yYXRlXVtMZXZlbDJQZXJUYmxbb2xkX3JhdGVdXTsKKwkJbmV3X3JhdGUgPSBvbGRfcmF0ZTsKKwkJQmVzdFRocm91cGh0ID0gVHhUaHJvdXB1dDI7CisKKwkJaWYgKHJldHJ5X3JhdGUgPE1UT1BBUkFfVFhSQVRFX0VRX1RIKCkpICAgIC8vdGggZm9yIGNoYW5nZSBoaWdoZXIgcmF0ZQorCQl7CisJCQlpZihvbGRfcmF0ZSA8IE1UT19EYXRhUmF0ZUF2YWlsYWJsZUxldmVsIC0gMSkKKwkJCXsKKwkJCQkvL1R4VGhyb3VwdXQzID0gUmF0ZV9QRVJfVEJMW3JldHJ5cmF0ZV9yZWNbb2xkX3JhdGUrMV1dW0xldmVsMlBlclRibFtvbGRfcmF0ZSsxXV07CisJCQkJaWYgKHJldHJ5cmF0ZV9yZWNbb2xkX3JhdGUrMV0gPiBNVE9QQVJBX1RYUkVUUllSQVRFX1JFRFVDRSgpKQorCQkJCQlUeFRocm91cHV0MyA9IFJhdGVfUEVSX1RCTFtyZXRyeXJhdGVfcmVjW29sZF9yYXRlKzFdLU1UT1BBUkFfVFhSRVRSWVJBVEVfUkVEVUNFKCldW0xldmVsMlBlclRibFtvbGRfcmF0ZSsxXV07CisJCQkJZWxzZQorCQkJCQlUeFRocm91cHV0MyA9IFJhdGVfUEVSX1RCTFtyZXRyeXJhdGVfcmVjW29sZF9yYXRlKzFdXVtMZXZlbDJQZXJUYmxbb2xkX3JhdGUrMV1dOworCQkJCWlmKEJlc3RUaHJvdXBodCA8IFR4VGhyb3VwdXQzKQorCQkJCXsKKwkJCQkJbmV3X3JhdGUgPSBvbGRfcmF0ZSArIDE7CisJCQkJCUJlc3RUaHJvdXBodCA9IFR4VGhyb3VwdXQzOworCQkJCQkjaWZkZWYgX1BFX0RUT19EVU1QXworCQkJCQlXQkRFQlVHKCgiPSsrKysrKysrKytcbiIpKTsKKwkJCQkJI2VuZGlmCisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UKKwkJaWYob2xkX3JhdGUgPiAwKSAgIC8vTWluIFJhdGUKKwkJeworCQkJVHhUaHJvdXB1dDMgPSBSYXRlX1BFUl9UQkxbcmV0cnlyYXRlX3JlY1tvbGRfcmF0ZS0xXV1bTGV2ZWwyUGVyVGJsW29sZF9yYXRlLTFdXTsKKwkJCWlmKEJlc3RUaHJvdXBodCA8IFR4VGhyb3VwdXQzKQorCQkJeworCQkJCW5ld19yYXRlID0gb2xkX3JhdGUgLSAxOworCQkJCSNpZmRlZiBfUEVfRFRPX0RVTVBfCisJCQkJV0JERUJVRygoIj0tLS0tLS0tLVxuIikpOworCQkJCSNlbmRpZgorCQkJCUJlc3RUaHJvdXBodCA9IFR4VGhyb3VwdXQzOworCQkJfQorCQl9CisJfQorCisJaWYgKCFMT0NBTF9JU19JQlNTX01PREUoKSkKKwl7CisJbWF4X3Jzc2lfcmF0ZSA9IEdldE1heFJhdGVMZXZlbEZyb21SU1NJKCk7CisJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwlXQkRFQlVHKCgiW01UT106UlNTSTJSYXRlPSVkXG4iLCBNVE9fRGF0YV9SYXRlX1RibFttYXhfcnNzaV9yYXRlXSkpOworCSNlbmRpZgorCWlmKG5ld19yYXRlID4gbWF4X3Jzc2lfcmF0ZSkKKwkJbmV3X3JhdGUgPSBtYXhfcnNzaV9yYXRlOworCX0KKworCS8vc2F2ZSBuZXcgcmF0ZTsKKwlUeFJhdGVSZWMudHhfcmF0ZSA9IG9sZF9yYXRlOworCVR4UmF0ZVJlYy50eF9yZXRyeV9yYXRlID0gKHU4KSByZXRyeV9yYXRlOworCVR4UmV0cnlSYXRlID0gcmV0cnlfcmF0ZTsKKwlyZXR1cm4gbmV3X3JhdGU7Cit9CisKK3ZvaWQgU21vb3RoUlNTSShzMzIgbmV3X3Jzc2kpCit7CisJUlNTSVNtb290aGVkID0gUlNTSVNtb290aGVkICsgbmV3X3Jzc2kgLSBSU1NJQnVmW1JTU0lCdWZJbmRleF07CisJUlNTSUJ1ZltSU1NJQnVmSW5kZXhdID0gbmV3X3Jzc2k7CisJUlNTSUJ1ZkluZGV4ID0gKFJTU0lCdWZJbmRleCArIDEpICUgMTA7Cit9CisKK3U4IEdldE1heFJhdGVMZXZlbEZyb21SU1NJKHZvaWQpCit7CisJdTggaTsKKwl1OCBUeFJhdGU7CisKKwlmb3IoaT0wO2k8UlNTSTJSQVRFX1NJWkU7aSsrKQorCXsKKwkJaWYoUlNTSVNtb290aGVkID4gUlNTSTJSYXRlVGJsW2ldLlJTU0kpCisJCQlicmVhazsKKwl9CisJI2lmZGVmIF9QRV9EVE9fRFVNUF8KKwlXQkRFQlVHKCgiW01UT106UlNTST0lZFxuIiwgRGl2aWRlKFJTU0lTbW9vdGhlZCwgMTApKSk7CisJI2VuZGlmCisJaWYoaSA8IFJTU0kyUkFURV9TSVpFKQorCQlUeFJhdGUgPSBSU1NJMlJhdGVUYmxbaV0uVHhSYXRlOworCWVsc2UKKwkJVHhSYXRlID0gMjsgIC8vZGl2aWRlZCBieSAyID0gMU1icHMKKworCWZvcihpPU1UT19EYXRhUmF0ZUF2YWlsYWJsZUxldmVsLTE7aT4wO2ktLSkKKwl7CisJCWlmKFR4UmF0ZSA+PU1UT19EYXRhX1JhdGVfVGJsW2ldKQorCQkJYnJlYWs7CisJfQorCXJldHVybiBpOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gIERlc2NyaXB0aW9uOgorLy8gICAgICBJZiB3ZSBlbmFibGUgRFRPLCB3ZSB3aWxsIGlnbm9yZSB0aGUgdHggY291bnQgd2l0aCBkaWZmZXJlbnQgdHggcmF0ZSBmcm9tCisvLyAgICAgIERUTyByYXRlLiBUaGlzIGlzIGJlY2F1c2Ugd2hlbiB3ZSBhZGp1c3QgRFRPIHR4IHJhdGUsIHRoZXJlIGNvdWxkIGJlIHNvbWUKKy8vICAgICAgcGFja2V0cyBpbiB0aGUgdHggcXVldWUgd2l0aCBwcmV2aW91cyB0eCByYXRlCit2b2lkIE1UT19TZXRUeENvdW50KE1UT19GVU5DX0lOUFVULCB1OCB0eF9yYXRlLCB1OCBpbmRleCkKK3sKKwlNVE9fVFhGTE9XQ09VTlQoKSsrOworCWlmICgoTVRPX0VOQUJMRT09MSkgJiYgKE1UT19SQVRFX0NIQU5HRV9FTkFCTEUoKT09MSkpCisJeworCQlpZih0eF9yYXRlID09IE1UT19EQVRBX1JBVEUoKSkKKwkJeworCQkJaWYgKGluZGV4ID09IDApCisJCQl7CisJCQkJaWYgKGJvU3BhcnNlVHhUcmFmZmljKQorCQkJCQlNVE9fSEFMKCktPmR0b190eF9mcmFnX2NvdW50ICs9IE1UT1BBUkFfUEVSSU9ESUNfQ0hFQ0tfQ1lDTEUoKTsKKwkJCQllbHNlCisJCQkJCU1UT19IQUwoKS0+ZHRvX3R4X2ZyYWdfY291bnQgKz0gMTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoaW5kZXg8OCkKKwkJCQl7CisJCQkJCU1UT19IQUwoKS0+ZHRvX3R4X3JldHJ5X2NvdW50ICs9IGluZGV4OworCQkJCQlNVE9fSEFMKCktPmR0b190eF9mcmFnX2NvdW50ICs9IChpbmRleCsxKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJTVRPX0hBTCgpLT5kdG9fdHhfcmV0cnlfY291bnQgKz0gNzsKKwkJCQkJTVRPX0hBTCgpLT5kdG9fdHhfZnJhZ19jb3VudCArPSA3OworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmKE1UT19EQVRBX1JBVEUoKT40OCAmJiB0eF9yYXRlID09NDgpCisJCXsvL0FMRlJFRAorCQkJaWYgKGluZGV4PDMpIC8vZm9yIHJlZHVjaWluZyBkYXRhIHJhdGUgc2NoZW1lICwKKwkJCQkgICAgICAgICAvL2RvIG5vdCBjYWxjdSBkaWZmZXJlbnQgZGF0YSByYXRlCisJCQkJCQkgLy8zIGlzIHRoZSByZWR1Y2luZyBkYXRhIHJhdGUgYXQgcmV0cnkKKwkJCXsKKwkJCQlNVE9fSEFMKCktPmR0b190eF9yZXRyeV9jb3VudCArPSBpbmRleDsKKwkJCQlNVE9fSEFMKCktPmR0b190eF9mcmFnX2NvdW50ICs9IChpbmRleCsxKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlNVE9fSEFMKCktPmR0b190eF9yZXRyeV9jb3VudCArPSAzOworCQkJCU1UT19IQUwoKS0+ZHRvX3R4X2ZyYWdfY291bnQgKz0gMzsKKwkJCX0KKworCQl9CisJfQorCWVsc2UKKwl7CisJCU1UT19IQUwoKS0+ZHRvX3R4X3JldHJ5X2NvdW50ICs9IGluZGV4OworCQlNVE9fSEFMKCktPmR0b190eF9mcmFnX2NvdW50ICs9IChpbmRleCsxKTsKKwl9CisJVG90YWxUeFBrdCArKzsKKwlUb3RhbFR4UGt0UmV0cnkgKz0gKGluZGV4KzEpOworCisJUGVyaW9kVG90YWxUeFBrdCArKzsKKwlQZXJpb2RUb3RhbFR4UGt0UmV0cnkgKz0gKGluZGV4KzEpOworfQorCit1OCBNVE9fR2V0VHhGYWxsYmFja1JhdGUoTVRPX0ZVTkNfSU5QVVQpCit7CisJcmV0dXJuIE1UT19EQVRBX0ZBTExCQUNLX1JBVEUoKTsKK30KKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gIE1UT19UeEZhaWxlZCAtLQorLy8KKy8vICBEZXNjcmlwdGlvbjoKKy8vICAgIEZhaWx1cmUgb2YgdHJhbnNtaXR0aW5nIGEgcGFja2V0IGluZGljYXRlcyB0aGF0IGNlcnRhaW4gTVRPIHBhcm1ldGVycworLy8gICAgbWF5IG5lZWQgdG8gYmUgYWRqdXN0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gTklDIGp1c3QgZmFpbGVkCisvLyAgICB0byB0cmFuc21pdCBhIHBhY2tldCBvciB3aGVuIE1TRFVMaWZlVGltZSBleHBpcmVkLgorLy8KKy8vICBBcmd1bWVudHM6CisvLyAgICBBZGFwdGVyICAgICAgLSBUaGUgcG9pbnRlciB0byB0aGUgTWluaXBvcnQgQWRhcHRlciBDb250ZXh0CisvLworLy8gIFJldHVybiBWYWx1ZToKKy8vICAgIE5vbmUKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordm9pZCBNVE9fVHhGYWlsZWQoTVRPX0ZVTkNfSU5QVVQpCit7CisJcmV0dXJuOworfQorCitpbnQgRGl2aWRlKGludCBhLCBpbnQgYikKK3sKKwlpZiAoYj09MCkgYj0xOworCXJldHVybiBhL2I7Cit9CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbXRvLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDc5MzZmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbXRvLmgKQEAgLTAsMCArMSwyNjUgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBNVE8uSAorLy8KKy8vIFJldmlzaW9uIGhpc3RvcnkKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgICAgICAyMDAzMDExMCAgICBVTjIwIFBldGUgQ2hhbworLy8gICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbCBSZWxlYXNlCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAzIFdpbmJvbmQgRWxlY3Ryb25pY3MgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjaWZuZGVmIF9fTVRPX0hfXworI2RlZmluZSBfX01UT19IX18KKworI2RlZmluZSBNVE9fREVGQVVMVF9USF9DTlQgICAgICAgICAgICAgIDUKKyNkZWZpbmUgTVRPX0RFRkFVTFRfVEhfU1EzICAgICAgICAgICAgICAxMTIgIC8vT0xEIElTIDEzIHJlZmVyZW5jZSBKb2huWHUKKyNkZWZpbmUgTVRPX0RFRkFVTFRfVEhfSURMRV9TTE9UICAgICAgICAxNQorI2RlZmluZSBNVE9fREVGQVVMVF9USF9QUl9JTlRFUkYgICAgICAgIDMwCisjZGVmaW5lIE1UT19ERUZBVUxUX1RNUl9BR0lORyAgICAgICAgICAgMjUgIC8vIHVuaXQ6IHNsb3QgdGltZSAgMTAgcmVmZXJlbmNlIEpvaG5YdQorI2RlZmluZSBNVE9fREVGQVVMVF9UTVJfUEVSSU9ESUMgICAgICAgIDUgICAvLyB1bml0OiBzbG90IHRpbWUKKworI2RlZmluZSBNVE9fQU5URU5OQV9ESVZFUlNJVFlfT0ZGICAgICAgIDAKKyNkZWZpbmUgTVRPX0FOVEVOTkFfRElWRVJTSVRZX09OICAgICAgICAxCisKKy8vIExBMjAwNDAyMTBfRFRPIGtldmluCisvLyNkZWZpbmUgTVRPX1BSRUFNQkxFX0xPTkcgICAgICAgICAgICAgICAwCisvLyNkZWZpbmUgTVRPX1BSRUFNQkxFX1NIT1JUICAgICAgICAgICAgICAxCisjZGVmaW5lIE1UT19QUkVBTUJMRV9MT05HICAgICAgICAgICAgICAgV0xBTl9QUkVBTUJMRV9UWVBFX0xPTkcKKyNkZWZpbmUgTVRPX1BSRUFNQkxFX1NIT1JUICAgICAgICAgICAgICBXTEFOX1BSRUFNQkxFX1RZUEVfU0hPUlQKKwordHlwZWRlZiBlbnVtIHsKKyAgICBUT0dHTEVfU1RBVEVfSURMRSAgICAgICAgICAgICA9IDAsCisgICAgVE9HR0xFX1NUQVRFX1dBSVQwICAgICAgICAgICAgPSAxLAorICAgIFRPR0dMRV9TVEFURV9XQUlUMSAgICAgICAgICAgID0gMiwKKyAgICBUT0dHTEVfU1RBVEVfTUFLRURFU0lTSU9OICAgICA9IDMsCisJVE9HR0xFX1NUQVRFX0JLT0ZGICAgICAgICAgICAgPSA0Cit9IFRPR0dMRV9TVEFURTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBSQVRFX0NIR1NUQVRFX0lETEUgICAgICAgICA9IDAsCisgICAgUkFURV9DSEdTVEFURV9DQUxDVUxBVEUgICAgPSAxLAorICAgIFJBVEVfQ0hHU1RBVEVfQkFDS09GRgkgICA9IDIKK30gVFhfUkFURV9SRURVQ1RJT05fU1RBVEU7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gc3RydWN0IF9NVE9QYXJhbWV0ZXJzIC0tCisvLworLy8gICBEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIHVzZWQgaW4gdGhlIE1BQyBUaHJvdWdocHV0IE9wdGltaXphdGlvbiBhbGdvcml0aG0KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordHlwZWRlZiBzdHJ1Y3QgX01UT19QQVJBTUVURVJTCit7CisJdTggICAgICBUaF9GaXhhbnQ7CisJdTggICAgICBUaF9DbnQ7CisJdTggICAgICBUaF9TUTM7CisJdTggICAgICBUaF9JZGxlU2xvdDsKKworCXUxNiAgICAgVG1yX0FnaW5nOworCXU4ICAgICAgVGhfUHJJbnRlcmY7CisJdTggICAgICBUbXJfUGVyaW9kaWM7CisKKwkvLy0tLS0tLS0tLSAgICAgICAgd2tjaGVuIGFkZGVkICAgICAgLS0tLS0tLS0tLS0tLQorCXUzMgkJVHhGbG93Q291bnQ7CS8vdG8ganVkZ2Ugd2hhdCBraW5kIHRoZSB0eCBmbG93KHNwYXJzZSBvciBidXN5KSBpcworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvLy0tLS0tLS0tLSBEVE8gdGhyZXNob2xkIHBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLQorCXUxNgkJRFRPX1BlcmlvZGljQ2hlY2tDeWNsZTsKKwl1MTYJCURUT19Sc3NpVGhGb3JBbnREaXY7CisKKwl1MTYJCURUT19UeENvdW50VGhGb3JDYWxjTmV3UmF0ZTsKKwl1MTYJCURUT19UeFJhdGVJbmNUaDsKKworCXUxNgkJRFRPX1R4UmF0ZURlY1RoOworCXUxNgkJRFRPX1R4UmF0ZUVxVGg7CisKKwl1MTYJCURUT19UeFJhdGVCYWNrT2ZmOworCXUxNgkJRFRPX1R4UmV0cnlSYXRlUmVkdWNlOworCisJdTE2CQlEVE9fVHhQb3dlckluZGV4OwkvLzAgfiAzMQorCXUxNgkJcmVzZXJ2ZWRfMTsKKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJdTggICAgICBQb3dlckNoYW5nZUVuYWJsZTsKKwl1OCAgICAgIEFudERpdmVyc2l0eUVuYWJsZTsKKwl1OCAgICAgIEFudF9tYWM7CisJdTggICAgICBBbnRfZGl2OworCisJdTggICAgICBDQ0FfTW9kZTsKKwl1OCAgICAgIENDQV9Nb2RlX1NldHVwOworCXU4ICAgICAgUHJlYW1ibGVfVHlwZTsKKwl1OCAgICAgIFByZWFtYmxlQ2hhbmdlRW5hYmxlOworCisJdTggICAgICBEYXRhUmF0ZUxldmVsOworCXU4ICAgICAgRGF0YVJhdGVDaGFuZ2VFbmFibGU7CisJdTggICAgICBGcmFnVGhyZXNob2xkTGV2ZWw7CisJdTggICAgICBGcmFnVGhyZXNob2xkQ2hhbmdlRW5hYmxlOworCisJdTE2ICAgICBSVFNUaHJlc2hvbGQ7CisJdTE2ICAgICBSVFNUaHJlc2hvbGRfU2V0dXA7CisKKwl1MzIgICAgIEF2Z0lkbGVTbG90OworCXUzMiAgICAgUHJfSW50ZXJmOworCXUzMiAgICAgQXZnR2FwQnR3bkludGVyZjsKKworCXU4CSAgIFJUU0NoYW5nZUVuYWJsZTsKKwl1OCAgICAgIEFudF9zZWw7CisJdTggICAgICBhZ2luZ190aW1lb3V0OworCXU4CSAgIHJlc2VydmVkXzI7CisKKwl1MzIgICAgIENudF9BbnRbMl07CisJdTMyICAgICBTUV9BbnRbMl07CisKKy8vIDIwMDQwNTEwIHJlbW92ZSBmcm9tIGdsb2JlIHZhaXJhYmxlCisJdTMyICAgICAgICAgICAgICAgICAgICAgVG1yQ250OworCXUzMiAgICAgICAgICAgICAgICAgICAgIEJhY2tvZmZUbXI7CisJVE9HR0xFX1NUQVRFICAgICAgICAgICAgVG9nZ2xlU3RhdGU7CisJVFhfUkFURV9SRURVQ1RJT05fU1RBVEUgVHhSYXRlUmVkdWN0aW9uU3RhdGU7CisKKwl1OCAgICAgICAgICAgICAgICAgICAgICBMYXN0X1JhdGU7CisJdTggICAgICAgICAgICAgICAgICAgICAgQ29fZWZmaWNlbnQ7CisJdTgJCUZhbGxiYWNrUmF0ZUxldmVsOworCXU4CQlPZmRtUmF0ZUxldmVsOworCisJdTgJCVJhdGVQb2xpY3k7CisJdTgJCXJlc2VydmVkXzNbM107CisKKwkvLyBGb3IgUlNTSSB0dXJuaW5nCisJczMyCQlSU1NJX2hpZ2g7CisJczMyCQlSU1NJX2xvdzsKKworfSBNVE9fUEFSQU1FVEVSUywgKlBNVE9fUEFSQU1FVEVSUzsKKworCisjZGVmaW5lIE1UT19GVU5DX0lOUFVUICAgICAgICAgICAgICBQV0IzMl9BREFQVEVSCUFkYXB0ZXIKKyNkZWZpbmUgTVRPX0ZVTkNfSU5QVVRfREFUQSAgICAgICAgIEFkYXB0ZXIKKyNkZWZpbmUgTVRPX0RBVEEoKSAgICAgICAgICAgICAgICAgIChBZGFwdGVyLT5zTXRvUGFyYSkKKyNkZWZpbmUgTVRPX0hBTCgpICAgICAgICAgICAgICAgICAgICgmQWRhcHRlci0+c0h3RGF0YSkKKyNkZWZpbmUgTVRPX1NFVF9QUkVBTUJMRV9UWVBFKHgpICAgIC8vIDIwMDQwNTExIFR1cmJvIG1hcmsgTE1fUFJFQU1CTEVfVFlQRSgmcGNvcmVfZGF0YS0+bG1fZGF0YSkgPSAoeCkKKyNkZWZpbmUgTVRPX0VOQUJMRQkJCQkJKEFkYXB0ZXItPnNMb2NhbFBhcmEuVHhSYXRlTW9kZSA9PSBSQVRFX0FVVE8pCisjZGVmaW5lIE1UT19UWFBPV0VSX0ZST01fRUVQUk9NCQkoQWRhcHRlci0+c0h3RGF0YS5Qb3dlckluZGV4RnJvbUVFUFJPTSkKKyNkZWZpbmUgTE9DQUxfQU5URU5OQV9OTygpCQkJKEFkYXB0ZXItPnNMb2NhbFBhcmEuYkFudGVubmFObykKKyNkZWZpbmUgTE9DQUxfSVNfQ09OTkVDVEVEKCkJCShBZGFwdGVyLT5zTG9jYWxQYXJhLndDb25uZWN0ZWRTVEFpbmRleCAhPSAwKQorI2RlZmluZSBMT0NBTF9JU19JQlNTX01PREUoKQkJKEFkYXB0ZXItPmFzQlNTRGVzY3JpcHRFbGVtZW50W0FkYXB0ZXItPnNMb2NhbFBhcmEud0Nvbm5lY3RlZFNUQWluZGV4XS5iQnNzVHlwZSA9PSBJQlNTX05FVCkKKyNkZWZpbmUgTVRPX0lOSVRUWFJBVEVfTU9ERQkJCShBZGFwdGVyLT5zSHdEYXRhLlNvZnR3YXJlU2V0JjB4MikJLy9iaXQgMQorLy8gMjAwNDA1MTAgVHVyYm8gYWRkCisjZGVmaW5lIE1UT19UTVJfQ05UKCkgICAgICAgICAgICAgICBNVE9fREFUQSgpLlRtckNudAorI2RlZmluZSBNVE9fVE9HR0xFX1NUQVRFKCkgICAgICAgICAgTVRPX0RBVEEoKS5Ub2dnbGVTdGF0ZQorI2RlZmluZSBNVE9fVFhfUkFURV9SRURVQ1RJT05fU1RBVEUoKSBNVE9fREFUQSgpLlR4UmF0ZVJlZHVjdGlvblN0YXRlCisjZGVmaW5lIE1UT19CQUNLT0ZGX1RNUigpICAgICAgICAgICBNVE9fREFUQSgpLkJhY2tvZmZUbXIKKyNkZWZpbmUgTVRPX0xBU1RfUkFURSgpICAgICAgICAgICAgIE1UT19EQVRBKCkuTGFzdF9SYXRlCisjZGVmaW5lIE1UT19DT19FRkZJQ0VOVCgpICAgICAgICAgICBNVE9fREFUQSgpLkNvX2VmZmljZW50CisKKyNkZWZpbmUgTVRPX1RIX0NOVCgpICAgICAgICAgICAgICAgIE1UT19EQVRBKCkuVGhfQ250CisjZGVmaW5lIE1UT19USF9TUTMoKSAgICAgICAgICAgICAgICBNVE9fREFUQSgpLlRoX1NRMworI2RlZmluZSBNVE9fVEhfSURMRV9TTE9UKCkgICAgICAgICAgTVRPX0RBVEEoKS5UaF9JZGxlU2xvdAorI2RlZmluZSBNVE9fVEhfUFJfSU5URVJGKCkgICAgICAgICAgTVRPX0RBVEEoKS5UaF9QckludGVyZgorCisjZGVmaW5lIE1UT19UTVJfQUdJTkcoKSAgICAgICAgICAgICBNVE9fREFUQSgpLlRtcl9BZ2luZworI2RlZmluZSBNVE9fVE1SX1BFUklPRElDKCkgICAgICAgICAgTVRPX0RBVEEoKS5UbXJfUGVyaW9kaWMKKworI2RlZmluZSBNVE9fUE9XRVJfQ0hBTkdFX0VOQUJMRSgpICAgTVRPX0RBVEEoKS5Qb3dlckNoYW5nZUVuYWJsZQorI2RlZmluZSBNVE9fQU5UX0RJVkVSU0lUWV9FTkFCTEUoKSAgQWRhcHRlci0+c0xvY2FsUGFyYS5ib0FudGVubmFEaXZlcnNpdHkKKyNkZWZpbmUgTVRPX0FOVF9NQUMoKSAgICAgICAgICAgICAgIE1UT19EQVRBKCkuQW50X21hYworI2RlZmluZSBNVE9fQU5UX0RJVkVSU0lUWSgpICAgICAgICAgTVRPX0RBVEEoKS5BbnRfZGl2CisjZGVmaW5lIE1UT19DQ0FfTU9ERSgpICAgICAgICAgICAgICBNVE9fREFUQSgpLkNDQV9Nb2RlCisjZGVmaW5lIE1UT19DQ0FfTU9ERV9TRVRVUCgpICAgICAgICBNVE9fREFUQSgpLkNDQV9Nb2RlX1NldHVwCisjZGVmaW5lIE1UT19QUkVBTUJMRV9UWVBFKCkgICAgICAgICBNVE9fREFUQSgpLlByZWFtYmxlX1R5cGUKKyNkZWZpbmUgTVRPX1BSRUFNQkxFX0NIQU5HRV9FTkFCTEUoKSAgICAgICAgIE1UT19EQVRBKCkuUHJlYW1ibGVDaGFuZ2VFbmFibGUKKworI2RlZmluZSBNVE9fUkFURV9MRVZFTCgpICAgICAgICAgICAgTVRPX0RBVEEoKS5EYXRhUmF0ZUxldmVsCisjZGVmaW5lIE1UT19GQUxMQkFDS19SQVRFX0xFVkVMKCkJTVRPX0RBVEEoKS5GYWxsYmFja1JhdGVMZXZlbAorI2RlZmluZSBNVE9fT0ZETV9SQVRFX0xFVkVMKCkJCU1UT19EQVRBKCkuT2ZkbVJhdGVMZXZlbAorI2RlZmluZSBNVE9fUkFURV9DSEFOR0VfRU5BQkxFKCkgICAgTVRPX0RBVEEoKS5EYXRhUmF0ZUNoYW5nZUVuYWJsZQorI2RlZmluZSBNVE9fRlJBR19USF9MRVZFTCgpICAgICAgICAgTVRPX0RBVEEoKS5GcmFnVGhyZXNob2xkTGV2ZWwKKyNkZWZpbmUgTVRPX0ZSQUdfQ0hBTkdFX0VOQUJMRSgpICAgIE1UT19EQVRBKCkuRnJhZ1RocmVzaG9sZENoYW5nZUVuYWJsZQorI2RlZmluZSBNVE9fUlRTX1RIUkVTSE9MRCgpICAgICAgICAgTVRPX0RBVEEoKS5SVFNUaHJlc2hvbGQKKyNkZWZpbmUgTVRPX1JUU19DSEFOR0VfRU5BQkxFKCkgICAgIE1UT19EQVRBKCkuUlRTQ2hhbmdlRW5hYmxlCisjZGVmaW5lIE1UT19SVFNfVEhSRVNIT0xEX1NFVFVQKCkgICBNVE9fREFUQSgpLlJUU1RocmVzaG9sZF9TZXR1cAorCisjZGVmaW5lIE1UT19BVkdfSURMRV9TTE9UKCkgICAgICAgICBNVE9fREFUQSgpLkF2Z0lkbGVTbG90CisjZGVmaW5lIE1UT19QUl9JTlRFUkYoKSAgICAgICAgICAgICBNVE9fREFUQSgpLlByX0ludGVyZgorI2RlZmluZSBNVE9fQVZHX0dBUF9CVFdOX0lOVEVSRigpICAgTVRPX0RBVEEoKS5BdmdHYXBCdHduSW50ZXJmCisKKyNkZWZpbmUgTVRPX0FOVF9TRUwoKSAgICAgICAgICAgICAgIE1UT19EQVRBKCkuQW50X3NlbAorI2RlZmluZSBNVE9fQ05UX0FOVCh4KSAgICAgICAgICAgICAgTVRPX0RBVEEoKS5DbnRfQW50Wyh4KV0KKyNkZWZpbmUgTVRPX1NRX0FOVCh4KSAgICAgICAgICAgICAgIE1UT19EQVRBKCkuU1FfQW50Wyh4KV0KKyNkZWZpbmUgTVRPX0FHSU5HX1RJTUVPVVQoKSAgICAgICAgIE1UT19EQVRBKCkuYWdpbmdfdGltZW91dAorCisKKyNkZWZpbmUgTVRPX1RYRkxPV0NPVU5UKCkJCQlNVE9fREFUQSgpLlR4Rmxvd0NvdW50CisvLy0tLS0tLS0tLSBEVE8gdGhyZXNob2xkIHBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLQorI2RlZmluZQlNVE9QQVJBX1BFUklPRElDX0NIRUNLX0NZQ0xFKCkJCU1UT19EQVRBKCkuRFRPX1BlcmlvZGljQ2hlY2tDeWNsZQorI2RlZmluZQlNVE9QQVJBX1JTU0lfVEhfRk9SX0FOVERJVigpCQlNVE9fREFUQSgpLkRUT19Sc3NpVGhGb3JBbnREaXYKKyNkZWZpbmUJTVRPUEFSQV9UWENPVU5UX1RIX0ZPUl9DQUxDX1JBVEUoKQlNVE9fREFUQSgpLkRUT19UeENvdW50VGhGb3JDYWxjTmV3UmF0ZQorI2RlZmluZQlNVE9QQVJBX1RYUkFURV9JTkNfVEgoKQkJCU1UT19EQVRBKCkuRFRPX1R4UmF0ZUluY1RoCisjZGVmaW5lCU1UT1BBUkFfVFhSQVRFX0RFQ19USCgpCQkJTVRPX0RBVEEoKS5EVE9fVHhSYXRlRGVjVGgKKyNkZWZpbmUgTVRPUEFSQV9UWFJBVEVfRVFfVEgoKQkJCU1UT19EQVRBKCkuRFRPX1R4UmF0ZUVxVGgKKyNkZWZpbmUJTVRPUEFSQV9UWFJBVEVfQkFDS09GRigpCQlNVE9fREFUQSgpLkRUT19UeFJhdGVCYWNrT2ZmCisjZGVmaW5lCU1UT1BBUkFfVFhSRVRSWVJBVEVfUkVEVUNFKCkJCU1UT19EQVRBKCkuRFRPX1R4UmV0cnlSYXRlUmVkdWNlCisjZGVmaW5lIE1UT1BBUkFfVFhQT1dFUl9JTkRFWCgpCQkJTVRPX0RBVEEoKS5EVE9fVHhQb3dlckluZGV4CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2V4dGVybiB1OCAgIE1UT19EYXRhX1JhdGVfVGJsW107CitleHRlcm4gdTE2ICBNVE9fRnJhZ19UaF9UYmxbXTsKKworI2RlZmluZSBNVE9fREFUQV9SQVRFKCkgICAgICAgICAgTVRPX0RhdGFfUmF0ZV9UYmxbTVRPX1JBVEVfTEVWRUwoKV0KKyNkZWZpbmUgTVRPX0RBVEFfRkFMTEJBQ0tfUkFURSgpIE1UT19EYXRhX1JhdGVfVGJsW01UT19GQUxMQkFDS19SQVRFX0xFVkVMKCldCS8vbmV4dCBsZXZlbAorI2RlZmluZSBNVE9fRlJBR19USCgpICAgICAgICAgICAgTVRPX0ZyYWdfVGhfVGJsW01UT19GUkFHX1RIX0xFVkVMKCldCisKK3R5cGVkZWYgc3RydWN0IHsKKwl1OCB0eF9yYXRlOworCXU4IHR4X3JldHJ5X3JhdGU7Cit9IFRYUkVUUllfUkVDOworCit0eXBlZGVmIHN0cnVjdCBfU1RBVElTVElDU19JTkZPIHsKKwl1MzIgICBSYXRlNTRNOworCXUzMiAgIFJhdGU0OE07CisJdTMyICAgUmF0ZTM2TTsKKwl1MzIgICBSYXRlMjRNOworCXUzMiAgIFJhdGUxOE07CisJdTMyICAgUmF0ZTEyTTsKKwl1MzIgICBSYXRlOU07CisJdTMyICAgUmF0ZTZNOworCXUzMiAgIFJhdGUxMU1TOworCXUzMiAgIFJhdGUxMU1MOworCXUzMiAgIFJhdGU1NU1TOworCXUzMiAgIFJhdGU1NU1MOworCXUzMiAgIFJhdGUyTVM7CisJdTMyICAgUmF0ZTJNTDsKKwl1MzIgICBSYXRlMU07CisJdTMyICAgUmF0ZTU0TU9LOworCXUzMiAgIFJhdGU0OE1PSzsKKwl1MzIgICBSYXRlMzZNT0s7CisJdTMyICAgUmF0ZTI0TU9LOworCXUzMiAgIFJhdGUxOE1PSzsKKwl1MzIgICBSYXRlMTJNT0s7CisJdTMyICAgUmF0ZTlNT0s7CisJdTMyICAgUmF0ZTZNT0s7CisJdTMyICAgUmF0ZTExTVNPSzsKKwl1MzIgICBSYXRlMTFNTE9LOworCXUzMiAgIFJhdGU1NU1TT0s7CisJdTMyICAgUmF0ZTU1TUxPSzsKKwl1MzIgICBSYXRlMk1TT0s7CisJdTMyICAgUmF0ZTJNTE9LOworCXUzMiAgIFJhdGUxTU9LOworCXUzMiAgIFNRMzsKKwlzMzIgICBSU1NJQVZHOworCXMzMiAgIFJTU0lNQVg7CisJczMyICAgVFhSQVRFOworCXMzMiAgIFR4UmV0cnlSYXRlOworCXMzMiAgIEJTU19QS19DTlQ7CisJczMyICAgTklETEVTTE9UOworCXMzMiAgIFNMT1RfQ05UOworCXMzMiAgIElOVEVSRl9DTlQ7CisJczMyICAgR0FQX0NOVDsKKwlzMzIgICBEU19FVk07CisJczMyICAgUmN2QmVhY29uTnVtOworCXMzMiAgIFJYUkFURTsKKwlzMzIgICBSeEJ5dGVzOworCXMzMiAgIFR4Qnl0ZXM7CisJczMyICAgQW50ZW5uYTsKK30gU1RBVElTVElDU19JTkZPLCAqUFNUQVRJU1RJQ1NfSU5GTzsKKworI2VuZGlmIC8vX19NVE9fSF9fCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbXRvX2YuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL210b19mLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBiM2RmMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL210b19mLmgKQEAgLTAsMCArMSw3IEBACitleHRlcm4gdm9pZCBNVE9fSW5pdChQV0IzMl9BREFQVEVSKTsKK2V4dGVybiB2b2lkIE1UT19QZXJpb2RpY1RpbWVyRXhwaXJlZChQV0IzMl9BREFQVEVSKTsKK2V4dGVybiB2b2lkIE1UT19TZXREVE9SYXRlUmFuZ2UoUFdCMzJfQURBUFRFUiwgdTggKiwgdTgpOworZXh0ZXJuIHU4IE1UT19HZXRUeFJhdGUoTVRPX0ZVTkNfSU5QVVQsIHUzMiBmcGR1X2xlbik7CitleHRlcm4gdTggTVRPX0dldFR4RmFsbGJhY2tSYXRlKE1UT19GVU5DX0lOUFVUKTsKK2V4dGVybiB2b2lkIE1UT19TZXRUeENvdW50KE1UT19GVU5DX0lOUFVULCB1OCB0MCwgdTggaW5kZXgpOworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9vc19jb21tb24uaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL29zX2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNGZmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9vc19jb21tb24uaApAQCAtMCwwICsxLDIgQEAKKyNpbmNsdWRlICJsaW51eC9zeXNkZWYuaCIKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvcGh5X2NhbGlicmF0aW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9waHlfY2FsaWJyYXRpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzJhNjUwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvcGh5X2NhbGlicmF0aW9uLmMKQEAgLTAsMCArMSwxNzU5IEBACisvKgorICogcGh5XzMwMl9jYWxpYnJhdGlvbi5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1ICBXaW5ib25kIEVsZWN0cm9uaWNzIENvcnAuCisgKgorICogbW9kaWZpY2F0aW9uIGhpc3RvcnkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogMC4wMS4wMDEsIDIwMDMtMDQtMTYsIEtldmluICAgICAgY3JlYXRlZAorICoKKyAqLworCisvKioqKioqKioqKioqKioqKioqIElOQ0xVREUgRklMRVMgU0VDVElPTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJvc19jb21tb24uaCIKKyNpbmNsdWRlICJwaHlfY2FsaWJyYXRpb24uaCIKKworCisvKioqKioqKioqKioqKioqKioqIERFQlVHIENPTlNUQU5UIEFORCBNQUNSTyBTRUNUSU9OICoqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiBMT0NBTCBDT05TVEFOVCBBTkQgTUFDUk8gU0VDVElPTiAqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIExPT1BfVElNRVMgICAgICAyMAorI2RlZmluZSBVUyAgICAgICAgICAgICAgMTAwMC8vTUlDUk9TRUNPTkQKKworI2RlZmluZSBBR19DT05TVCAgICAgICAgMC42MDcyNTI5MzUwCisjZGVmaW5lIEZJWEVEKFgpICAgICAgICAoKHMzMikoKFgpICogMzI3NjguMCkpCisjZGVmaW5lIERFRzJSQUQoWCkgICAgICAwLjAxNzQ1MyAqIChYKQorCisvKioqKioqKioqKioqKioqKioqIExPQ0FMIFRZUEUgREVGSU5JVElPTiBTRUNUSU9OICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgczMyICAgICAgICAgZml4ZWQ7IC8qIDE2LjE2IGZpeGVkLXBvaW50ICovCisKK3N0YXRpYyBjb25zdCBmaXhlZCBBbmdsZXNbXT0KK3sKKyAgICBGSVhFRChERUcyUkFEKDQ1LjApKSwgICAgRklYRUQoREVHMlJBRCgyNi41NjUpKSwgIEZJWEVEKERFRzJSQUQoMTQuMDM2MikpLAorICAgIEZJWEVEKERFRzJSQUQoNy4xMjUwMikpLCBGSVhFRChERUcyUkFEKDMuNTc2MzMpKSwgRklYRUQoREVHMlJBRCgxLjc4OTkxKSksCisgICAgRklYRUQoREVHMlJBRCgwLjg5NTE3NCkpLEZJWEVEKERFRzJSQUQoMC40NDc2MTQpKSxGSVhFRChERUcyUkFEKDAuMjIzODExKSksCisgICAgRklYRUQoREVHMlJBRCgwLjExMTkwNikpLEZJWEVEKERFRzJSQUQoMC4wNTU5NTMpKSxGSVhFRChERUcyUkFEKDAuMDI3OTc3KSkKK307CisKKy8qKioqKioqKioqKioqKioqKiogTE9DQUwgRlVOQ1RJT04gREVDTEFSQVRJT04gU0VDVElPTiAqKioqKioqKioqKioqKioqKioqKioqLworLy92b2lkICAgIF9waHlfcmZfd3JpdGVfZGVsYXkoaHdfZGF0YV90ICpwaHdfZGF0YSk7CisvL3ZvaWQgICAgcGh5X2luaXRfcmYoaHdfZGF0YV90ICpwaHdfZGF0YSk7CisKKy8qKioqKioqKioqKioqKioqKiogRlVOQ1RJT04gREVGSU5JVElPTiBTRUNUSU9OICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzMzIgX3MxM190b19zMzIodTMyIGRhdGEpCit7CisgICAgdTMyICAgICB2YWw7CisKKyAgICB2YWwgPSAoZGF0YSAmIDB4MEZGRik7CisKKyAgICBpZiAoKGRhdGEgJiBCSVQoMTIpKSAhPSAwKQorICAgIHsKKyAgICAgICAgdmFsIHw9IDB4RkZGRkYwMDA7CisgICAgfQorCisgICAgcmV0dXJuICgoczMyKSB2YWwpOworfQorCit1MzIgX3MzMl90b19zMTMoczMyIGRhdGEpCit7CisgICAgdTMyICAgICB2YWw7CisKKyAgICBpZiAoZGF0YSA+IDQwOTUpCisgICAgeworICAgICAgICBkYXRhID0gNDA5NTsKKyAgICB9CisgICAgZWxzZSBpZiAoZGF0YSA8IC00MDk2KQorICAgIHsKKyAgICAgICAgZGF0YSA9IC00MDk2OworICAgIH0KKworICAgIHZhbCA9IGRhdGEgJiAweDFGRkY7CisKKyAgICByZXR1cm4gdmFsOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3MzMiBfczRfdG9fczMyKHUzMiBkYXRhKQoreworICAgIHMzMiAgICAgdmFsOworCisgICAgdmFsID0gKGRhdGEgJiAweDAwMDcpOworCisgICAgaWYgKChkYXRhICYgQklUKDMpKSAhPSAwKQorICAgIHsKKyAgICAgICAgdmFsIHw9IDB4RkZGRkZGRjg7CisgICAgfQorCisgICAgcmV0dXJuIHZhbDsKK30KKwordTMyIF9zMzJfdG9fczQoczMyIGRhdGEpCit7CisgICAgdTMyICAgICB2YWw7CisKKyAgICBpZiAoZGF0YSA+IDcpCisgICAgeworICAgICAgICBkYXRhID0gNzsKKyAgICB9CisgICAgZWxzZSBpZiAoZGF0YSA8IC04KQorICAgIHsKKyAgICAgICAgZGF0YSA9IC04OworICAgIH0KKworICAgIHZhbCA9IGRhdGEgJiAweDAwMEY7CisKKyAgICByZXR1cm4gdmFsOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3MzMiBfczVfdG9fczMyKHUzMiBkYXRhKQoreworICAgIHMzMiAgICAgdmFsOworCisgICAgdmFsID0gKGRhdGEgJiAweDAwMEYpOworCisgICAgaWYgKChkYXRhICYgQklUKDQpKSAhPSAwKQorICAgIHsKKyAgICAgICAgdmFsIHw9IDB4RkZGRkZGRjA7CisgICAgfQorCisgICAgcmV0dXJuIHZhbDsKK30KKwordTMyIF9zMzJfdG9fczUoczMyIGRhdGEpCit7CisgICAgdTMyICAgICB2YWw7CisKKyAgICBpZiAoZGF0YSA+IDE1KQorICAgIHsKKyAgICAgICAgZGF0YSA9IDE1OworICAgIH0KKyAgICBlbHNlIGlmIChkYXRhIDwgLTE2KQorICAgIHsKKyAgICAgICAgZGF0YSA9IC0xNjsKKyAgICB9CisKKyAgICB2YWwgPSBkYXRhICYgMHgwMDFGOworCisgICAgcmV0dXJuIHZhbDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzMzIgX3M2X3RvX3MzMih1MzIgZGF0YSkKK3sKKyAgICBzMzIgICAgIHZhbDsKKworICAgIHZhbCA9IChkYXRhICYgMHgwMDFGKTsKKworICAgIGlmICgoZGF0YSAmIEJJVCg1KSkgIT0gMCkKKyAgICB7CisgICAgICAgIHZhbCB8PSAweEZGRkZGRkUwOworICAgIH0KKworICAgIHJldHVybiB2YWw7Cit9CisKK3UzMiBfczMyX3RvX3M2KHMzMiBkYXRhKQoreworICAgIHUzMiAgICAgdmFsOworCisgICAgaWYgKGRhdGEgPiAzMSkKKyAgICB7CisgICAgICAgIGRhdGEgPSAzMTsKKyAgICB9CisgICAgZWxzZSBpZiAoZGF0YSA8IC0zMikKKyAgICB7CisgICAgICAgIGRhdGEgPSAtMzI7CisgICAgfQorCisgICAgdmFsID0gZGF0YSAmIDB4MDAzRjsKKworICAgIHJldHVybiB2YWw7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworczMyIF9zOV90b19zMzIodTMyIGRhdGEpCit7CisgICAgczMyICAgICB2YWw7CisKKyAgICB2YWwgPSBkYXRhICYgMHgwMEZGOworCisgICAgaWYgKChkYXRhICYgQklUKDgpKSAhPSAwKQorICAgIHsKKyAgICAgICAgdmFsIHw9IDB4RkZGRkZGMDA7CisgICAgfQorCisgICAgcmV0dXJuIHZhbDsKK30KKwordTMyIF9zMzJfdG9fczkoczMyIGRhdGEpCit7CisgICAgdTMyICAgICB2YWw7CisKKyAgICBpZiAoZGF0YSA+IDI1NSkKKyAgICB7CisgICAgICAgIGRhdGEgPSAyNTU7CisgICAgfQorICAgIGVsc2UgaWYgKGRhdGEgPCAtMjU2KQorICAgIHsKKyAgICAgICAgZGF0YSA9IC0yNTY7CisgICAgfQorCisgICAgdmFsID0gZGF0YSAmIDB4MDFGRjsKKworICAgIHJldHVybiB2YWw7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworczMyIF9mbG9vcihzMzIgbikKK3sKKyAgICBpZiAobiA+IDApCisgICAgeworICAgICAgICBuICs9IDU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG4gLT0gNTsKKyAgICB9CisKKyAgICByZXR1cm4gKG4vMTApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBzcWFyZS1yb290IGZ1bmN0aW9uLgorLy8gc3FzdW0gaXMgdGhlIGlucHV0IGFuZCB0aGUgb3V0cHV0IGlzIHNxX3J0OworLy8gVGhlIG1heGltdW0gb2Ygc3FzdW0gPSAyXjI3IC0xOwordTMyIF9zcXJ0KHUzMiBzcXN1bSkKK3sKKyAgICB1MzIgICAgIHNxX3J0OworCisgICAgaW50ICAgICBnMCwgZzEsIGcyLCBnMywgZzQ7CisgICAgaW50ICAgICBzZWVkOworICAgIGludCAgICAgbmV4dDsKKyAgICBpbnQgICAgIHN0ZXA7CisKKyAgICBnNCA9ICBzcXN1bSAvIDEwMDAwMDAwMDsKKyAgICBnMyA9IChzcXN1bSAtIGc0KjEwMDAwMDAwMCkgLzEwMDAwMDA7CisgICAgZzIgPSAoc3FzdW0gLSBnNCoxMDAwMDAwMDAgLSBnMyoxMDAwMDAwKSAvMTAwMDA7CisgICAgZzEgPSAoc3FzdW0gLSBnNCoxMDAwMDAwMDAgLSBnMyoxMDAwMDAwIC0gZzIqMTAwMDApIC8xMDA7CisgICAgZzAgPSAoc3FzdW0gLSBnNCoxMDAwMDAwMDAgLSBnMyoxMDAwMDAwIC0gZzIqMTAwMDAgLSBnMSoxMDApOworCisgICAgbmV4dCA9IGc0OworICAgIHN0ZXAgPSAwOworICAgIHNlZWQgPSAwOworICAgIHdoaWxlICgoKHNlZWQrMSkqKHN0ZXArMSkpIDw9IG5leHQpCisgICAgeworICAgIAlzdGVwKys7CisgICAgCXNlZWQrKzsKKyAgICB9CisKKyAgICBzcV9ydCA9IHNlZWQgKiAxMDAwMDsKKyAgICBuZXh0ID0gKG5leHQtKHNlZWQqc3RlcCkpKjEwMCArIGczOworCisgICAgc3RlcCA9IDA7CisgICAgc2VlZCA9IDIgKiBzZWVkICogMTA7CisgICAgd2hpbGUgKCgoc2VlZCsxKSooc3RlcCsxKSkgPD0gbmV4dCkKKyAgICB7CisgICAgICAgIHN0ZXArKzsKKyAgICAJc2VlZCsrOworICAgIH0KKworICAgIHNxX3J0ID0gc3FfcnQgKyBzdGVwICogMTAwMDsKKyAgICBuZXh0ID0gKG5leHQgLSBzZWVkICogc3RlcCkgKiAxMDAgKyBnMjsKKyAgICBzZWVkID0gKHNlZWQgKyBzdGVwKSAqIDEwOworICAgIHN0ZXAgPSAwOworICAgIHdoaWxlICgoKHNlZWQrMSkqKHN0ZXArMSkpIDw9IG5leHQpCisgICAgeworICAgICAgICBzdGVwKys7CisgICAgCXNlZWQrKzsKKyAgICB9CisKKyAgICBzcV9ydCA9IHNxX3J0ICsgc3RlcCAqIDEwMDsKKyAgICBuZXh0ID0gKG5leHQgLSBzZWVkICogc3RlcCkgKiAxMDAgKyBnMTsKKyAgICBzZWVkID0gKHNlZWQgKyBzdGVwKSAqIDEwOworICAgIHN0ZXAgPSAwOworCisgICAgd2hpbGUgKCgoc2VlZCsxKSooc3RlcCsxKSkgPD0gbmV4dCkKKyAgICB7CisgICAgICAgIHN0ZXArKzsKKyAgICAJc2VlZCsrOworICAgIH0KKworICAgIHNxX3J0ID0gc3FfcnQgKyBzdGVwICogMTA7CisgICAgbmV4dCA9IChuZXh0IC0gc2VlZCogc3RlcCkgKiAxMDAgKyBnMDsKKyAgICBzZWVkID0gKHNlZWQgKyBzdGVwKSAqIDEwOworICAgIHN0ZXAgPSAwOworCisgICAgd2hpbGUgKCgoc2VlZCsxKSooc3RlcCsxKSkgPD0gbmV4dCkKKyAgICB7CisgICAgICAgIHN0ZXArKzsKKyAgICAJc2VlZCsrOworICAgIH0KKworICAgIHNxX3J0ID0gc3FfcnQgKyBzdGVwOworCisgICAgcmV0dXJuIHNxX3J0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgX3Npbl9jb3MoczMyIGFuZ2xlLCBzMzIgKnNpbiwgczMyICpjb3MpCit7CisgICAgZml4ZWQgICAgICAgWCwgWSwgVGFyZ2V0QW5nbGUsIEN1cnJBbmdsZTsKKyAgICB1bnNpZ25lZCAgICBTdGVwOworCisgICAgWD1GSVhFRChBR19DT05TVCk7ICAgICAgLy8gQUdfQ09OU1QgKiBjb3MoMCkKKyAgICBZPTA7ICAgICAgICAgICAgICAgICAgICAvLyBBR19DT05TVCAqIHNpbigwKQorICAgIFRhcmdldEFuZ2xlPWFicyhhbmdsZSk7CisgICAgQ3VyckFuZ2xlPTA7CisKKyAgICBmb3IgKFN0ZXA9MDsgU3RlcCA8IDEyOyBTdGVwKyspCisgICAgeworICAgICAgICBmaXhlZCBOZXdYOworCisgICAgICAgIGlmKFRhcmdldEFuZ2xlID4gQ3VyckFuZ2xlKQorICAgICAgICB7CisgICAgICAgICAgICBOZXdYPVggLSAoWSA+PiBTdGVwKTsKKyAgICAgICAgICAgIFk9KFggPj4gU3RlcCkgKyBZOworICAgICAgICAgICAgWD1OZXdYOworICAgICAgICAgICAgQ3VyckFuZ2xlICs9IEFuZ2xlc1tTdGVwXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIE5ld1g9WCArIChZID4+IFN0ZXApOworICAgICAgICAgICAgWT0tKFggPj4gU3RlcCkgKyBZOworICAgICAgICAgICAgWD1OZXdYOworICAgICAgICAgICAgQ3VyckFuZ2xlIC09IEFuZ2xlc1tTdGVwXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhbmdsZSA+IDApCisgICAgeworICAgICAgICAqY29zID0gWDsKKyAgICAgICAgKnNpbiA9IFk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICpjb3MgPSBYOworICAgICAgICAqc2luID0gLVk7CisgICAgfQorfQorCisKK3ZvaWQgX3Jlc2V0X3J4X2NhbChod19kYXRhX3QgKnBod19kYXRhKQoreworCXUzMiAgICAgdmFsOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsICZ2YWwpOworCisJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwl7CisJCXZhbCAmPSAweEZGRkYwMDAwOworCX0KKwllbHNlIC8vIDJuZC1jdXQKKwl7CisJCXZhbCAmPSAweDAwMDAwM0ZGOworCX0KKworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCB2YWwpOworfQorCisKKy8vICoqKioqKioqKioqKmZvciB3aW5ib25kIGNhbGlicmF0aW9uKioqKioqKioqCisvLworCisvLworLy8KKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBfcnhhZGNfZGNfb2Zmc2V0X2NhbmNlbGxhdGlvbl93aW5ib25kKGh3X2RhdGFfdCAqcGh3X2RhdGEsIHUzMiBmcmVxdWVuY3kpCit7CisgICAgdTMyICAgICByZWdfYWdjX2N0cmwzOworICAgIHUzMiAgICAgcmVnX2FfYWNxX2N0cmw7CisgICAgdTMyICAgICByZWdfYl9hY3FfY3RybDsKKyAgICB1MzIgICAgIHZhbDsKKworICAgIFBIWV9ERUJVRygoIltDQUxdIC0+IFsxXV9yeGFkY19kY19vZmZzZXRfY2FuY2VsbGF0aW9uKClcbiIpKTsKKyAgICBwaHlfaW5pdF9yZihwaHdfZGF0YSk7CisKKyAgICAvLyBzZXQgY2FsaWJyYXRpb24gY2hhbm5lbAorICAgIGlmKCAoUkZfV0JfMjQyID09IHBod19kYXRhLT5waHlfdHlwZSkgfHwKKwkJKFJGX1dCXzI0Ml8xID09IHBod19kYXRhLT5waHlfdHlwZSkgKSAvLyAyMDA2MDYxOS41IEFkZAorICAgIHsKKyAgICAgICAgaWYgKChmcmVxdWVuY3kgPj0gMjQxMikgJiYgKGZyZXF1ZW5jeSA8PSAyNDg0KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gdzg5cmYyNDIgY2hhbmdlIGZyZXF1ZW5jeSB0byAyMzkwTWh6CisgICAgICAgICAgICBQSFlfREVCVUcoKCJbQ0FMXSBXODlSRjI0Mi8xMUcvQ2hhbm5lbD0yMzkwTWh6XG4iKSk7CisJCQlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDMsICgzPDwyNCl8MHgwMjU1ODYpOworCisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorCXsKKworCX0KKworCS8vIHJlc2V0IGNhbmNlbF9kY19pWzk6NV0gYW5kIGNhbmNlbF9kY19xWzQ6MF0gaW4gcmVnaXN0ZXIgRENfQ2FuY2VsCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NUMsICZ2YWwpOworCXZhbCAmPSB+KDB4MDNGRik7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NUMsIHZhbCk7CisKKwkvLyByZXNldCB0aGUgVFggYW5kIFJYIElRIGNhbGlicmF0aW9uIGRhdGEKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgMCk7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsIDApOworCisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTgsIDB4MzAzMDMwMzApOyAvLyBJUV9BbHBoYSBDaGFuZ2VkCisKKwkvLyBhLiBEaXNhYmxlIEFHQworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkwzLCAmcmVnX2FnY19jdHJsMyk7CisJcmVnX2FnY19jdHJsMyAmPSB+QklUKDIpOworCXJlZ19hZ2NfY3RybDMgfD0gKE1BU0tfTE5BX0ZJWF9HQUlOfE1BU0tfQUdDX0ZJWCk7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDMsIHJlZ19hZ2NfY3RybDMpOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDUsICZ2YWwpOworCXZhbCB8PSBNQVNLX0FHQ19GSVhfR0FJTjsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMNSwgdmFsKTsKKworCS8vIGIuIFR1cm4gb2ZmIEJCIFJYCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BX0FDUV9DVFJMLCAmcmVnX2FfYWNxX2N0cmwpOworCXJlZ19hX2FjcV9jdHJsIHw9IE1BU0tfQU1FUl9PRkZfUkVHOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQV9BQ1FfQ1RSTCwgcmVnX2FfYWNxX2N0cmwpOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19CX0FDUV9DVFJMLCAmcmVnX2JfYWNxX2N0cmwpOworCXJlZ19iX2FjcV9jdHJsIHw9IE1BU0tfQk1FUl9PRkZfUkVHOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQl9BQ1FfQ1RSTCwgcmVnX2JfYWNxX2N0cmwpOworCisJLy8gYy4gTWFrZSBzdXJlIE1BQyBpcyBpbiByZWNlaXZpbmcgbW9kZQorCS8vIGQuIFR1cm4gT04gQURDIGNhbGlicmF0aW9uCisJLy8gICAgLSBBREMgY2FsaWJyYXRvciBpcyB0cmlnZ2VyZWQgYnkgdGhpcyBzaWduYWwgcmlzaW5nIGZyb20gMCB0byAxCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsICZ2YWwpOworCXZhbCAmPSB+TUFTS19BRENfRENfQ0FMX1NUUjsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgdmFsKTsKKworCXZhbCB8PSBNQVNLX0FEQ19EQ19DQUxfU1RSOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCB2YWwpOworCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7IC8vICpNVVNUKiB3YWl0IGZvciBhIHdoaWxlCisKKwkvLyBlLiBUaGUgcmVzdWx0IGFyZSBzaG93biBpbiAiYWRjX2RjX2NhbF9pWzg6MF0gYW5kIGFkY19kY19jYWxfcVs4OjBdIgorI2lmZGVmIF9ERUJVRworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfT0ZGU0VUX1JFQUQsICZ2YWwpOworCVBIWV9ERUJVRygoIltDQUxdICAgIFJFR19PRkZTRVRfUkVBRCA9IDB4JTA4WFxuIiwgdmFsKSk7CisKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBhZGNfZGNfY2FsX2kgPSAlZCAoMHglMDRYKVxuIiwKKwkJCSAgIF9zOV90b19zMzIodmFsJjB4MDAwMDAxRkYpLCB2YWwmMHgwMDAwMDFGRikpOworCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGFkY19kY19jYWxfcSA9ICVkICgweCUwNFgpXG4iLAorCQkJICAgX3M5X3RvX3MzMigodmFsJjB4MDAwM0ZFMDApPj45KSwgKHZhbCYweDAwMDNGRTAwKT4+OSkpOworI2VuZGlmCisKKwlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgJnZhbCk7CisJdmFsICY9IH5NQVNLX0FEQ19EQ19DQUxfU1RSOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCB2YWwpOworCisJLy8gZi4gVHVybiBvbiBCQiBSWAorCS8vaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BX0FDUV9DVFJMLCAmcmVnX2FfYWNxX2N0cmwpOworCXJlZ19hX2FjcV9jdHJsICY9IH5NQVNLX0FNRVJfT0ZGX1JFRzsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FfQUNRX0NUUkwsIHJlZ19hX2FjcV9jdHJsKTsKKworCS8vaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19CX0FDUV9DVFJMLCAmcmVnX2JfYWNxX2N0cmwpOworCXJlZ19iX2FjcV9jdHJsICY9IH5NQVNLX0JNRVJfT0ZGX1JFRzsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0JfQUNRX0NUUkwsIHJlZ19iX2FjcV9jdHJsKTsKKworCS8vIGcuIEVuYWJsZSBBR0MKKwkvL2h3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkwzLCAmdmFsKTsKKwlyZWdfYWdjX2N0cmwzIHw9IEJJVCgyKTsKKwlyZWdfYWdjX2N0cmwzICY9IH4oTUFTS19MTkFfRklYX0dBSU58TUFTS19BR0NfRklYKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMMywgcmVnX2FnY19jdHJsMyk7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit2b2lkIF90eGlkYWNfZGNfb2Zmc2V0X2NhbmNlbGxhdGlvbl93aW5ib25kKGh3X2RhdGFfdCAqcGh3X2RhdGEpCit7CisJdTMyICAgICByZWdfYWdjX2N0cmwzOworCXUzMiAgICAgcmVnX21vZGVfY3RybDsKKwl1MzIgICAgIHJlZ19kY19jYW5jZWw7CisJczMyICAgICBpcWNhbF9pbWFnZV9pOworCXMzMiAgICAgaXFjYWxfaW1hZ2VfcTsKKwl1MzIgICAgIHNxc3VtOworCXMzMiAgICAgbWFnXzA7CisJczMyICAgICBtYWdfMTsKKwlzMzIgICAgIGZpeF9jYW5jZWxfZGNfaSA9IDA7CisJdTMyICAgICB2YWw7CisJaW50ICAgICBsb29wOworCisJUEhZX0RFQlVHKCgiW0NBTF0gLT4gWzJdX3R4aWRhY19kY19vZmZzZXRfY2FuY2VsbGF0aW9uKClcbiIpKTsKKworCS8vIGEuIFNldCB0byAiVFggY2FsaWJyYXRpb24gbW9kZSIKKworCS8vMHgwMSAweEVFM0ZDMiAgOyAzQjhGRiAgOyBDYWxpYnJhdGlvbiAoNmEpLiBlbmFibGUgVFggSVEgY2FsaWJyYXRpb24gbG9vcCBjaXJjdWl0cworCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMSwgKDE8PDI0KXwweEVFM0ZDMik7CisJLy8weDBCIDB4MTkwNUQ2ICA7IDA2NDE3ICA7IENhbGlicmF0aW9uICg2YikuIGVuYWJsZSBUWCBJL1EgY2FsIGxvb3Agc3F1YXJpbmcgY2lyY3VpdAorCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMTEsICgxMTw8MjQpfDB4MTkwMUQ2KTsKKwkvLzB4MDUgMHgyNEM2MEEgIDsgMDkzMTggIDsgQ2FsaWJyYXRpb24gKDZjKS4gc2V0dGluZyBUWC1WR0EgZ2FpbjogVFhHQ0g9MiAmIEdQSz0xMTAgLS0+IHRvIGJlIG9wdGltaXplZAorCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgNSwgKDU8PDI0KXwweDI0QzQ4QSk7CisgICAgLy8weDA2IDB4MDY4ODBDICA7IDAxQTIwICA7IENhbGlicmF0aW9uICg2ZCkuIFJYR0NIPTAwOyBSWEdDTD0xMDAgMDAwIChSWFZHQT0zMikgLS0+IHRvIGJlIG9wdGltaXplZAorCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgNiwgKDY8PDI0KXwweDA2ODkwQyk7CisJLy8weDAwIDB4RkRGMUMwICA7IDNGN0M3ICA7IENhbGlicmF0aW9uICg2ZSkuIHR1cm4gb24gSVEgaW1iYWxhbmNlL1Rlc3QgbW9kZQorCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMCwgKDA8PDI0KXwweEZERjFDMCk7CisKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1OCwgMHgzMDMwMzAzMCk7IC8vIElRX0FscGhhIENoYW5nZWQKKworCS8vIGEuIERpc2FibGUgQUdDCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDMsICZyZWdfYWdjX2N0cmwzKTsKKwlyZWdfYWdjX2N0cmwzICY9IH5CSVQoMik7CisJcmVnX2FnY19jdHJsMyB8PSAoTUFTS19MTkFfRklYX0dBSU58TUFTS19BR0NfRklYKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMMywgcmVnX2FnY19jdHJsMyk7CisKKwlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMNSwgJnZhbCk7CisJdmFsIHw9IE1BU0tfQUdDX0ZJWF9HQUlOOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkw1LCB2YWwpOworCisJLy8gYi4gc2V0IGlxY2FsX21vZGVbMTowXSB0byAweDIgYW5kIHNldCBpcWNhbF90b25lWzM6Ml0gdG8gMAorCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCAmcmVnX21vZGVfY3RybCk7CisKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHJlYWQpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisJcmVnX21vZGVfY3RybCAmPSB+KE1BU0tfSVFDQUxfVE9ORV9TRUx8TUFTS19JUUNBTF9NT0RFKTsKKworCS8vIG1vZGU9MiwgdG9uZT0wCisJLy9yZWdfbW9kZV9jdHJsIHw9IChNQVNLX0NBTElCX1NUQVJUfDIpOworCisJLy8gbW9kZT0yLCB0b25lPTEKKwkvL3JlZ19tb2RlX2N0cmwgfD0gKE1BU0tfQ0FMSUJfU1RBUlR8MnwoMTw8MikpOworCisJLy8gbW9kZT0yLCB0b25lPTIKKwlyZWdfbW9kZV9jdHJsIHw9IChNQVNLX0NBTElCX1NUQVJUfDJ8KDI8PDIpKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKwlwYV9zdGFsbF9leGVjdXRpb24oVVMpOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NUMsICZyZWdfZGNfY2FuY2VsKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHJlYWQpID0gMHglMDhYXG4iLCByZWdfZGNfY2FuY2VsKSk7CisKKwlmb3IgKGxvb3AgPSAwOyBsb29wIDwgTE9PUF9USU1FUzsgbG9vcCsrKQorCXsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gWyVkLl0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiwgbG9vcCkpOworCisJCS8vIGMuCisJCS8vIHJlc2V0IGNhbmNlbF9kY19pWzk6NV0gYW5kIGNhbmNlbF9kY19xWzQ6MF0gaW4gcmVnaXN0ZXIgRENfQ2FuY2VsCisJCXJlZ19kY19jYW5jZWwgJj0gfigweDAzRkYpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX2RjX2NhbmNlbCkpOworCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19DQUxJQl9SRUFEMiwgJnZhbCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIENBTElCX1JFQUQyID0gMHglMDhYXG4iLCB2YWwpKTsKKworCQlpcWNhbF9pbWFnZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCWlxY2FsX2ltYWdlX3EgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQlzcXN1bSA9IGlxY2FsX2ltYWdlX2kqaXFjYWxfaW1hZ2VfaSArIGlxY2FsX2ltYWdlX3EqaXFjYWxfaW1hZ2VfcTsKKwkJbWFnXzAgPSAoczMyKSBfc3FydChzcXN1bSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIG1hZ18wPSVkIChpcWNhbF9pbWFnZV9pPSVkLCBpcWNhbF9pbWFnZV9xPSVkKVxuIiwKKwkJCQkgICBtYWdfMCwgaXFjYWxfaW1hZ2VfaSwgaXFjYWxfaW1hZ2VfcSkpOworCisJCS8vIGQuCisJCXJlZ19kY19jYW5jZWwgfD0gKDEgPDwgQ0FOQ0VMX0RDX0lfU0hJRlQpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX2RjX2NhbmNlbCkpOworCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19DQUxJQl9SRUFEMiwgJnZhbCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIENBTElCX1JFQUQyID0gMHglMDhYXG4iLCB2YWwpKTsKKworCQlpcWNhbF9pbWFnZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCWlxY2FsX2ltYWdlX3EgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQlzcXN1bSA9IGlxY2FsX2ltYWdlX2kqaXFjYWxfaW1hZ2VfaSArIGlxY2FsX2ltYWdlX3EqaXFjYWxfaW1hZ2VfcTsKKwkJbWFnXzEgPSAoczMyKSBfc3FydChzcXN1bSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIG1hZ18xPSVkIChpcWNhbF9pbWFnZV9pPSVkLCBpcWNhbF9pbWFnZV9xPSVkKVxuIiwKKwkJCQkgICBtYWdfMSwgaXFjYWxfaW1hZ2VfaSwgaXFjYWxfaW1hZ2VfcSkpOworCisJCS8vIGUuIENhbGN1bGF0ZSB0aGUgY29ycmVjdCBEQyBvZmZzZXQgY2FuY2VsbGF0aW9uIHZhbHVlIGZvciBJCisJCWlmIChtYWdfMCAhPSBtYWdfMSkKKwkJeworCQkJZml4X2NhbmNlbF9kY19pID0gKG1hZ18wKjEwMDAwKSAvIChtYWdfMCoxMDAwMCAtIG1hZ18xKjEwMDAwKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChtYWdfMCA9PSBtYWdfMSkKKwkJCXsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAgICoqKioqIG1hZ18wID0gbWFnXzEgISFcbiIpKTsKKwkJCX0KKworCQkJZml4X2NhbmNlbF9kY19pID0gMDsKKwkJfQorCisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGZpeF9jYW5jZWxfZGNfaSA9ICVkICgweCUwNFgpXG4iLAorCQkJCSAgIGZpeF9jYW5jZWxfZGNfaSwgX3MzMl90b19zNShmaXhfY2FuY2VsX2RjX2kpKSk7CisKKwkJaWYgKChhYnMobWFnXzEtbWFnXzApKjYpID4gbWFnXzApCisJCXsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCBsb29wID49IDE5ICkKKwkgICBmaXhfY2FuY2VsX2RjX2kgPSAwOworCisJcmVnX2RjX2NhbmNlbCAmPSB+KDB4MDNGRik7CisJcmVnX2RjX2NhbmNlbCB8PSAoX3MzMl90b19zNShmaXhfY2FuY2VsX2RjX2kpIDw8IENBTkNFTF9EQ19JX1NISUZUKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgRENfQ0FOQ0VMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19kY19jYW5jZWwpKTsKKworCS8vIGcuCisJcmVnX21vZGVfY3RybCAmPSB+TUFTS19DQUxJQl9TVEFSVDsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKwlwYV9zdGFsbF9leGVjdXRpb24oVVMpOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit2b2lkIF90eHFkYWNfZGNfb2Zmc2V0X2NhY2VsbGF0aW9uX3dpbmJvbmQoaHdfZGF0YV90ICpwaHdfZGF0YSkKK3sKKwl1MzIgICAgIHJlZ19hZ2NfY3RybDM7CisJdTMyICAgICByZWdfbW9kZV9jdHJsOworCXUzMiAgICAgcmVnX2RjX2NhbmNlbDsKKwlzMzIgICAgIGlxY2FsX2ltYWdlX2k7CisJczMyICAgICBpcWNhbF9pbWFnZV9xOworCXUzMiAgICAgc3FzdW07CisJczMyICAgICBtYWdfMDsKKwlzMzIgICAgIG1hZ18xOworCXMzMiAgICAgZml4X2NhbmNlbF9kY19xID0gMDsKKwl1MzIgICAgIHZhbDsKKwlpbnQgICAgIGxvb3A7CisKKwlQSFlfREVCVUcoKCJbQ0FMXSAtPiBbM11fdHhxZGFjX2RjX29mZnNldF9jYWNlbGxhdGlvbigpXG4iKSk7CisJLy8weDAxIDB4RUUzRkMyICA7IDNCOEZGICA7IENhbGlicmF0aW9uICg2YSkuIGVuYWJsZSBUWCBJUSBjYWxpYnJhdGlvbiBsb29wIGNpcmN1aXRzCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCAxLCAoMTw8MjQpfDB4RUUzRkMyKTsKKwkvLzB4MEIgMHgxOTA1RDYgIDsgMDY0MTcgIDsgQ2FsaWJyYXRpb24gKDZiKS4gZW5hYmxlIFRYIEkvUSBjYWwgbG9vcCBzcXVhcmluZyBjaXJjdWl0CisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCAxMSwgKDExPDwyNCl8MHgxOTAxRDYpOworCS8vMHgwNSAweDI0QzYwQSAgOyAwOTMxOCAgOyBDYWxpYnJhdGlvbiAoNmMpLiBzZXR0aW5nIFRYLVZHQSBnYWluOiBUWEdDSD0yICYgR1BLPTExMCAtLT4gdG8gYmUgb3B0aW1pemVkCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCA1LCAoNTw8MjQpfDB4MjRDNDhBKTsKKyAgICAvLzB4MDYgMHgwNjg4MEMgIDsgMDFBMjAgIDsgQ2FsaWJyYXRpb24gKDZkKS4gUlhHQ0g9MDA7IFJYR0NMPTEwMCAwMDAgKFJYVkdBPTMyKSAtLT4gdG8gYmUgb3B0aW1pemVkCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCA2LCAoNjw8MjQpfDB4MDY4OTBDKTsKKwkvLzB4MDAgMHhGREYxQzAgIDsgM0Y3QzcgIDsgQ2FsaWJyYXRpb24gKDZlKS4gdHVybiBvbiBJUSBpbWJhbGFuY2UvVGVzdCBtb2RlCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCAwLCAoMDw8MjQpfDB4RkRGMUMwKTsKKworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU4LCAweDMwMzAzMDMwKTsgLy8gSVFfQWxwaGEgQ2hhbmdlZAorCisJLy8gYS4gRGlzYWJsZSBBR0MKKwlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMMywgJnJlZ19hZ2NfY3RybDMpOworCXJlZ19hZ2NfY3RybDMgJj0gfkJJVCgyKTsKKwlyZWdfYWdjX2N0cmwzIHw9IChNQVNLX0xOQV9GSVhfR0FJTnxNQVNLX0FHQ19GSVgpOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkwzLCByZWdfYWdjX2N0cmwzKTsKKworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkw1LCAmdmFsKTsKKwl2YWwgfD0gTUFTS19BR0NfRklYX0dBSU47CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDUsIHZhbCk7CisKKwkvLyBhLiBzZXQgaXFjYWxfbW9kZVsxOjBdIHRvIDB4MyBhbmQgc2V0IGlxY2FsX3RvbmVbMzoyXSB0byAwCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsICZyZWdfbW9kZV9jdHJsKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHJlYWQpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisKKwkvL3JlZ19tb2RlX2N0cmwgJj0gfihNQVNLX0lRQ0FMX1RPTkVfU0VMfE1BU0tfSVFDQUxfTU9ERSk7CisJcmVnX21vZGVfY3RybCAmPSB+KE1BU0tfSVFDQUxfTU9ERSk7CisJcmVnX21vZGVfY3RybCB8PSAoTUFTS19DQUxJQl9TVEFSVHwzKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKwlwYV9zdGFsbF9leGVjdXRpb24oVVMpOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NUMsICZyZWdfZGNfY2FuY2VsKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHJlYWQpID0gMHglMDhYXG4iLCByZWdfZGNfY2FuY2VsKSk7CisKKwlmb3IgKGxvb3AgPSAwOyBsb29wIDwgTE9PUF9USU1FUzsgbG9vcCsrKQorCXsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gWyVkLl0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiwgbG9vcCkpOworCisJCS8vIGIuCisJCS8vIHJlc2V0IGNhbmNlbF9kY19xWzQ6MF0gaW4gcmVnaXN0ZXIgRENfQ2FuY2VsCisJCXJlZ19kY19jYW5jZWwgJj0gfigweDAwMUYpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX2RjX2NhbmNlbCkpOworCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19DQUxJQl9SRUFEMiwgJnZhbCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIENBTElCX1JFQUQyID0gMHglMDhYXG4iLCB2YWwpKTsKKwkJcGFfc3RhbGxfZXhlY3V0aW9uKFVTKTsKKworCQlpcWNhbF9pbWFnZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCWlxY2FsX2ltYWdlX3EgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQlzcXN1bSA9IGlxY2FsX2ltYWdlX2kqaXFjYWxfaW1hZ2VfaSArIGlxY2FsX2ltYWdlX3EqaXFjYWxfaW1hZ2VfcTsKKwkJbWFnXzAgPSBfc3FydChzcXN1bSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIG1hZ18wPSVkIChpcWNhbF9pbWFnZV9pPSVkLCBpcWNhbF9pbWFnZV9xPSVkKVxuIiwKKwkJCQkgICBtYWdfMCwgaXFjYWxfaW1hZ2VfaSwgaXFjYWxfaW1hZ2VfcSkpOworCisJCS8vIGMuCisJCXJlZ19kY19jYW5jZWwgfD0gKDEgPDwgQ0FOQ0VMX0RDX1FfU0hJRlQpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBEQ19DQU5DRUwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX2RjX2NhbmNlbCkpOworCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19DQUxJQl9SRUFEMiwgJnZhbCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIENBTElCX1JFQUQyID0gMHglMDhYXG4iLCB2YWwpKTsKKwkJcGFfc3RhbGxfZXhlY3V0aW9uKFVTKTsKKworCQlpcWNhbF9pbWFnZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCWlxY2FsX2ltYWdlX3EgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQlzcXN1bSA9IGlxY2FsX2ltYWdlX2kqaXFjYWxfaW1hZ2VfaSArIGlxY2FsX2ltYWdlX3EqaXFjYWxfaW1hZ2VfcTsKKwkJbWFnXzEgPSBfc3FydChzcXN1bSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIG1hZ18xPSVkIChpcWNhbF9pbWFnZV9pPSVkLCBpcWNhbF9pbWFnZV9xPSVkKVxuIiwKKwkJCQkgICBtYWdfMSwgaXFjYWxfaW1hZ2VfaSwgaXFjYWxfaW1hZ2VfcSkpOworCisJCS8vIGQuIENhbGN1bGF0ZSB0aGUgY29ycmVjdCBEQyBvZmZzZXQgY2FuY2VsbGF0aW9uIHZhbHVlIGZvciBJCisJCWlmIChtYWdfMCAhPSBtYWdfMSkKKwkJeworCQkJZml4X2NhbmNlbF9kY19xID0gKG1hZ18wKjEwMDAwKSAvIChtYWdfMCoxMDAwMCAtIG1hZ18xKjEwMDAwKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChtYWdfMCA9PSBtYWdfMSkKKwkJCXsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAgICoqKioqIG1hZ18wID0gbWFnXzEgISFcbiIpKTsKKwkJCX0KKworCQkJZml4X2NhbmNlbF9kY19xID0gMDsKKwkJfQorCisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGZpeF9jYW5jZWxfZGNfcSA9ICVkICgweCUwNFgpXG4iLAorCQkJCSAgIGZpeF9jYW5jZWxfZGNfcSwgX3MzMl90b19zNShmaXhfY2FuY2VsX2RjX3EpKSk7CisKKwkJaWYgKChhYnMobWFnXzEtbWFnXzApKjYpID4gbWFnXzApCisJCXsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCBsb29wID49IDE5ICkKKwkgICBmaXhfY2FuY2VsX2RjX3EgPSAwOworCisJcmVnX2RjX2NhbmNlbCAmPSB+KDB4MDAxRik7CisJcmVnX2RjX2NhbmNlbCB8PSAoX3MzMl90b19zNShmaXhfY2FuY2VsX2RjX3EpIDw8IENBTkNFTF9EQ19RX1NISUZUKTsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1QywgcmVnX2RjX2NhbmNlbCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgRENfQ0FOQ0VMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19kY19jYW5jZWwpKTsKKworCisJLy8gZi4KKwlyZWdfbW9kZV9jdHJsICY9IH5NQVNLX0NBTElCX1NUQVJUOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCByZWdfbW9kZV9jdHJsKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7Cit9CisKKy8vMjAwNjA2MTIuMS5hIDIwMDYwNzE4LjEgTW9kaWZ5Cit1OCBfdHhfaXFfY2FsaWJyYXRpb25fbG9vcF93aW5ib25kKGh3X2RhdGFfdCAqcGh3X2RhdGEsCisJCQkJCQkgICBzMzIgYV8yX3RocmVzaG9sZCwKKwkJCQkJCSAgIHMzMiBiXzJfdGhyZXNob2xkKQoreworCXUzMiAgICAgcmVnX21vZGVfY3RybDsKKwlzMzIgICAgIGlxX21hZ18wX3R4OworCXMzMiAgICAgaXFjYWxfdG9uZV9pMDsKKwlzMzIgICAgIGlxY2FsX3RvbmVfcTA7CisJczMyICAgICBpcWNhbF90b25lX2k7CisJczMyICAgICBpcWNhbF90b25lX3E7CisJdTMyICAgICBzcXN1bTsKKwlzMzIgICAgIHJvdF9pX2I7CisJczMyICAgICByb3RfcV9iOworCXMzMiAgICAgdHhfY2FsX2ZsdF9iWzRdOworCXMzMiAgICAgdHhfY2FsWzRdOworCXMzMiAgICAgdHhfY2FsX3JlZ1s0XTsKKwlzMzIgICAgIGFfMiwgYl8yOworCXMzMiAgICAgc2luX2IsIHNpbl8yYjsKKwlzMzIgICAgIGNvc19iLCBjb3NfMmI7CisJczMyICAgICBkaXZpc29yOworCXMzMiAgICAgdGVtcDEsIHRlbXAyOworCXUzMiAgICAgdmFsOworCXUxNiAgICAgbG9vcDsKKwlzMzIgICAgIGlxY2FsX3RvbmVfaV9hdmcsaXFjYWxfdG9uZV9xX2F2ZzsKKwl1OCAgICAgIHZlcmlmeV9jb3VudDsKKwlpbnQgY2FwdHVyZV90aW1lOworCisJUEhZX0RFQlVHKCgiW0NBTF0gLT4gX3R4X2lxX2NhbGlicmF0aW9uX2xvb3AoKVxuIikpOworCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGFfMl90aHJlc2hvbGQgPSAlZFxuIiwgYV8yX3RocmVzaG9sZCkpOworCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGJfMl90aHJlc2hvbGQgPSAlZFxuIiwgYl8yX3RocmVzaG9sZCkpOworCisJdmVyaWZ5X2NvdW50ID0gMDsKKworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCAmcmVnX21vZGVfY3RybCk7CisJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMIChyZWFkKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCisJbG9vcCA9IExPT1BfVElNRVM7CisKKwl3aGlsZSAobG9vcCA+IDApCisJeworCQlQSFlfREVCVUcoKCJbQ0FMXSBbJWQuXSA8X3R4X2lxX2NhbGlicmF0aW9uX2xvb3A+XG4iLCAoTE9PUF9USU1FUy1sb29wKzEpKSk7CisKKwkJaXFjYWxfdG9uZV9pX2F2Zz0wOworCQlpcWNhbF90b25lX3FfYXZnPTA7CisJCWlmKCAhaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4M0MsIDB4MDApICkgLy8gMjAwNjA3MTguMSBtb2RpZnkKKwkJCXJldHVybiAwOworCQlmb3IoY2FwdHVyZV90aW1lPTA7Y2FwdHVyZV90aW1lPDEwO2NhcHR1cmVfdGltZSsrKQorCQl7CisJCQkvLyBhLiBTZXQgaXFjYWxfbW9kZVsxOjBdIHRvIDB4MiBhbmQgc2V0ICJjYWxpYl9zdGFydCIgdG8gMHgxIHRvCisJCQkvLyAgICBlbmFibGUgIklRIGFsaWJyYXRpb24gTW9kZSBJSSIKKwkJCXJlZ19tb2RlX2N0cmwgJj0gfihNQVNLX0lRQ0FMX1RPTkVfU0VMfE1BU0tfSVFDQUxfTU9ERSk7CisJCQlyZWdfbW9kZV9jdHJsICY9IH5NQVNLX0lRQ0FMX01PREU7CisJCQlyZWdfbW9kZV9jdHJsIHw9IChNQVNLX0NBTElCX1NUQVJUfDB4MDIpOworCQkJcmVnX21vZGVfY3RybCB8PSAoTUFTS19DQUxJQl9TVEFSVHwweDAyfDI8PDIpOworCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsIHJlZ19tb2RlX2N0cmwpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKwkJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJCS8vIGIuCisJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0NBTElCX1JFQUQxLCAmdmFsKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICAgIENBTElCX1JFQUQxID0gMHglMDhYXG4iLCB2YWwpKTsKKwkJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisKKwkJCWlxY2FsX3RvbmVfaTAgPSBfczEzX3RvX3MzMih2YWwgJiAweDAwMDAxRkZGKTsKKwkJCWlxY2FsX3RvbmVfcTAgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogaXFjYWxfdG9uZV9pMD0lZCwgaXFjYWxfdG9uZV9xMD0lZFxuIiwKKwkJCQkgICBpcWNhbF90b25lX2kwLCBpcWNhbF90b25lX3EwKSk7CisKKwkJCXNxc3VtID0gaXFjYWxfdG9uZV9pMCppcWNhbF90b25lX2kwICsKKwkJCWlxY2FsX3RvbmVfcTAqaXFjYWxfdG9uZV9xMDsKKwkJCWlxX21hZ18wX3R4ID0gKHMzMikgX3NxcnQoc3FzdW0pOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogaXFfbWFnXzBfdHg9JWRcbiIsIGlxX21hZ18wX3R4KSk7CisKKwkJCS8vIGMuIFNldCAiY2FsaWJfc3RhcnQiIHRvIDB4MAorCQkJcmVnX21vZGVfY3RybCAmPSB+TUFTS19DQUxJQl9TVEFSVDsKKwkJCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCByZWdfbW9kZV9jdHJsKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICAgIE1PREVfQ1RSTCAod3JpdGUpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisJCQlwYV9zdGFsbF9leGVjdXRpb24oVVMpOworCisJCQkvLyBkLiBTZXQgaXFjYWxfbW9kZVsxOjBdIHRvIDB4MyBhbmQgc2V0ICJjYWxpYl9zdGFydCIgdG8gMHgxIHRvCisJCQkvLyAgICBlbmFibGUgIklRIGFsaWJyYXRpb24gTW9kZSBJSSIKKwkJCS8vaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsICZ2YWwpOworCQkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsICZyZWdfbW9kZV9jdHJsKTsKKwkJCXJlZ19tb2RlX2N0cmwgJj0gfk1BU0tfSVFDQUxfTU9ERTsKKwkJCXJlZ19tb2RlX2N0cmwgfD0gKE1BU0tfQ0FMSUJfU1RBUlR8MHgwMyk7CisJCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCk7CisJCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCQkJcGFfc3RhbGxfZXhlY3V0aW9uKFVTKTsKKworCQkJLy8gZS4KKwkJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQ0FMSUJfUkVBRDEsICZ2YWwpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgQ0FMSUJfUkVBRDEgPSAweCUwOFhcbiIsIHZhbCkpOworCQkJcGFfc3RhbGxfZXhlY3V0aW9uKFVTKTsKKworCQkJaXFjYWxfdG9uZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCQlpcWNhbF90b25lX3EgPSBfczEzX3RvX3MzMigodmFsICYgMHgwM0ZGRTAwMCkgPj4gMTMpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogaXFjYWxfdG9uZV9pID0gJWQsIGlxY2FsX3RvbmVfcSA9ICVkXG4iLAorCQkJaXFjYWxfdG9uZV9pLCBpcWNhbF90b25lX3EpKTsKKwkJCWlmKCBjYXB0dXJlX3RpbWUgPT0gMCkKKwkJCXsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpcWNhbF90b25lX2lfYXZnPSggaXFjYWxfdG9uZV9pX2F2ZyooY2FwdHVyZV90aW1lLTEpICtpcWNhbF90b25lX2kpL2NhcHR1cmVfdGltZTsKKwkJCQlpcWNhbF90b25lX3FfYXZnPSggaXFjYWxfdG9uZV9xX2F2ZyooY2FwdHVyZV90aW1lLTEpICtpcWNhbF90b25lX3EpL2NhcHR1cmVfdGltZTsKKwkJCX0KKwkJfQorCisJCWlxY2FsX3RvbmVfaSA9IGlxY2FsX3RvbmVfaV9hdmc7CisJCWlxY2FsX3RvbmVfcSA9IGlxY2FsX3RvbmVfcV9hdmc7CisKKworCQlyb3RfaV9iID0gKGlxY2FsX3RvbmVfaSAqIGlxY2FsX3RvbmVfaTAgKworCQkJCSAgIGlxY2FsX3RvbmVfcSAqIGlxY2FsX3RvbmVfcTApIC8gMTAyNDsKKwkJcm90X3FfYiA9IChpcWNhbF90b25lX2kgKiBpcWNhbF90b25lX3EwICogKC0xKSArCisJCQkJICAgaXFjYWxfdG9uZV9xICogaXFjYWxfdG9uZV9pMCkgLyAxMDI0OworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiByb3RfaV9iID0gJWQsIHJvdF9xX2IgPSAlZFxuIiwKKwkJCQkgICByb3RfaV9iLCByb3RfcV9iKSk7CisKKwkJLy8gZi4KKwkJZGl2aXNvciA9ICgoaXFfbWFnXzBfdHggKiBpcV9tYWdfMF90eCAqIDIpLzEwMjQgLSByb3RfaV9iKSAqIDI7CisKKwkJaWYgKGRpdmlzb3IgPT0gMCkKKwkJeworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogPF90eF9pcV9jYWxpYnJhdGlvbl9sb29wPiBFUlJPUiAqKioqKioqXG4iKSk7CisJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiBkaXZpc29yPTAgdG8gY2FsY3VsYXRlIEVQUyBhbmQgVEhFVEEgISFcbiIpKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJYnJlYWs7CisJCX0KKworCQlhXzIgPSAocm90X2lfYiAqIDMyNzY4KSAvIGRpdmlzb3I7CisJCWJfMiA9IChyb3RfcV9iICogKC0zMjc2OCkpIC8gZGl2aXNvcjsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKioqKiogRVBTSUxPTi8yID0gJWRcbiIsIGFfMikpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKioqKiBUSEVUQS8yICAgPSAlZFxuIiwgYl8yKSk7CisKKwkJcGh3X2RhdGEtPmlxX3JzZGxfZ2Fpbl90eF9kMiA9IGFfMjsKKwkJcGh3X2RhdGEtPmlxX3JzZGxfcGhhc2VfdHhfZDIgPSBiXzI7CisKKwkJLy9pZiAoKGFicyhhXzIpIDwgMTUwKSAmJiAoYWJzKGJfMikgPCAxMDApKQorCQkvL2lmICgoYWJzKGFfMikgPCAyMDApICYmIChhYnMoYl8yKSA8IDIwMCkpCisJCWlmICgoYWJzKGFfMikgPCBhXzJfdGhyZXNob2xkKSAmJiAoYWJzKGJfMikgPCBiXzJfdGhyZXNob2xkKSkKKwkJeworCQkJdmVyaWZ5X2NvdW50Kys7CisKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfdHhfaXFfY2FsaWJyYXRpb25fbG9vcD4gKioqKioqKioqKioqKlxuIikpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogVkVSSUZZIE9LICMgJWQgISFcbiIsIHZlcmlmeV9jb3VudCkpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKSk7CisKKwkJCWlmICh2ZXJpZnlfY291bnQgPiAyKQorCQkJeworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfdHhfaXFfY2FsaWJyYXRpb25fbG9vcD4gKioqKioqKioqXG4iKSk7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogVFhfSVFfQ0FMSUJSQVRJT04gKEVQUyxUSEVUQSkgT0sgISFcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJCXJldHVybiAwOworCQkJfQorCisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXZlcmlmeV9jb3VudCA9IDA7CisJCX0KKworCQlfc2luX2NvcyhiXzIsICZzaW5fYiwgJmNvc19iKTsKKwkJX3Npbl9jb3MoYl8yKjIsICZzaW5fMmIsICZjb3NfMmIpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBzaW4oYi8yKT0lZCwgY29zKGIvMik9JWRcbiIsIHNpbl9iLCBjb3NfYikpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBzaW4oYik9JWQsIGNvcyhiKT0lZFxuIiwgc2luXzJiLCBjb3NfMmIpKTsKKworCQlpZiAoY29zXzJiID09IDApCisJCXsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfdHhfaXFfY2FsaWJyYXRpb25fbG9vcD4gRVJST1IgKioqKioqKlxuIikpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogY29zKGIpPTAgISFcbiIpKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJYnJlYWs7CisJCX0KKworCQkvLyAxMjgwICogMzI3NjggPSA0MTk0MzA0MAorCQl0ZW1wMSA9ICg0MTk0MzA0MC9jb3NfMmIpKmNvc19iOworCisJCS8vdGVtcDIgPSAoNDE5NDMwNDAvY29zXzJiKSpzaW5fYiooLTEpOworCQlpZiAocGh3X2RhdGEtPnJldmlzaW9uID09IDB4MjAwMikgLy8gMXN0LWN1dAorCQl7CisJCQl0ZW1wMiA9ICg0MTk0MzA0MC9jb3NfMmIpKnNpbl9iKigtMSk7CisJCX0KKwkJZWxzZSAvLyAybmQtY3V0CisJCXsKKwkJCXRlbXAyID0gKDQxOTQzMDQwKjQvY29zXzJiKSpzaW5fYiooLTEpOworCQl9CisKKwkJdHhfY2FsX2ZsdF9iWzBdID0gX2Zsb29yKHRlbXAxLygzMjc2OCthXzIpKTsKKwkJdHhfY2FsX2ZsdF9iWzFdID0gX2Zsb29yKHRlbXAyLygzMjc2OCthXzIpKTsKKwkJdHhfY2FsX2ZsdF9iWzJdID0gX2Zsb29yKHRlbXAyLygzMjc2OC1hXzIpKTsKKwkJdHhfY2FsX2ZsdF9iWzNdID0gX2Zsb29yKHRlbXAxLygzMjc2OC1hXzIpKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogdHhfY2FsX2ZsdF9iWzBdID0gJWRcbiIsIHR4X2NhbF9mbHRfYlswXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICB0eF9jYWxfZmx0X2JbMV0gPSAlZFxuIiwgdHhfY2FsX2ZsdF9iWzFdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbF9mbHRfYlsyXSA9ICVkXG4iLCB0eF9jYWxfZmx0X2JbMl0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgdHhfY2FsX2ZsdF9iWzNdID0gJWRcbiIsIHR4X2NhbF9mbHRfYlszXSkpOworCisJCXR4X2NhbFsyXSA9IHR4X2NhbF9mbHRfYlsyXTsKKwkJdHhfY2FsWzJdID0gdHhfY2FsWzJdICszOworCQl0eF9jYWxbMV0gPSB0eF9jYWxbMl07CisJCXR4X2NhbFszXSA9IHR4X2NhbF9mbHRfYlszXSAtIDEyODsKKwkJdHhfY2FsWzBdID0gLXR4X2NhbFszXSsxOworCisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbFswXSA9ICVkXG4iLCB0eF9jYWxbMF0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgdHhfY2FsWzFdID0gJWRcbiIsIHR4X2NhbFsxXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICB0eF9jYWxbMl0gPSAlZFxuIiwgdHhfY2FsWzJdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbFszXSA9ICVkXG4iLCB0eF9jYWxbM10pKTsKKworCQkvL2lmICgodHhfY2FsWzBdID09IDApICYmICh0eF9jYWxbMV0gPT0gMCkgJiYKKwkJLy8gICAgKHR4X2NhbFsyXSA9PSAwKSAmJiAodHhfY2FsWzNdID09IDApKQorCQkvL3sKKwkJLy8gICAgUEhZX0RFQlVHKCgiW0NBTF0gKiogPF90eF9pcV9jYWxpYnJhdGlvbl9sb29wPiAqKioqKioqKioqKioqXG4iKSk7CisJCS8vICAgIFBIWV9ERUJVRygoIltDQUxdICoqIFRYX0lRX0NBTElCUkFUSU9OIENPTVBMRVRFICEhXG4iKSk7CisJCS8vICAgIFBIWV9ERUJVRygoIltDQUxdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkvLyAgICByZXR1cm4gMDsKKwkJLy99CisKKwkJLy8gZy4KKwkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJeworCQkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsICZ2YWwpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogMHg1NCA9IDB4JTA4WFxuIiwgdmFsKSk7CisJCQl0eF9jYWxfcmVnWzBdID0gX3M0X3RvX3MzMigodmFsICYgMHhGMDAwMDAwMCkgPj4gMjgpOworCQkJdHhfY2FsX3JlZ1sxXSA9IF9zNF90b19zMzIoKHZhbCAmIDB4MEYwMDAwMDApID4+IDI0KTsKKwkJCXR4X2NhbF9yZWdbMl0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwRjAwMDAwKSA+PiAyMCk7CisJCQl0eF9jYWxfcmVnWzNdID0gX3M0X3RvX3MzMigodmFsICYgMHgwMDBGMDAwMCkgPj4gMTYpOworCQl9CisJCWVsc2UgLy8gMm5kLWN1dAorCQl7CisJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgJnZhbCk7CisJCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiAweDNDID0gMHglMDhYXG4iLCB2YWwpKTsKKwkJCXR4X2NhbF9yZWdbMF0gPSBfczVfdG9fczMyKCh2YWwgJiAweEY4MDAwMDAwKSA+PiAyNyk7CisJCQl0eF9jYWxfcmVnWzFdID0gX3M2X3RvX3MzMigodmFsICYgMHgwN0UwMDAwMCkgPj4gMjEpOworCQkJdHhfY2FsX3JlZ1syXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDAxRjgwMDApID4+IDE1KTsKKwkJCXR4X2NhbF9yZWdbM10gPSBfczVfdG9fczMyKCh2YWwgJiAweDAwMDA3QzAwKSA+PiAxMCk7CisKKwkJfQorCisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHR4X2NhbF9yZWdbMF0gPSAlZFxuIiwgdHhfY2FsX3JlZ1swXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICB0eF9jYWxfcmVnWzFdID0gJWRcbiIsIHR4X2NhbF9yZWdbMV0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgdHhfY2FsX3JlZ1syXSA9ICVkXG4iLCB0eF9jYWxfcmVnWzJdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbF9yZWdbM10gPSAlZFxuIiwgdHhfY2FsX3JlZ1szXSkpOworCisJCWlmIChwaHdfZGF0YS0+cmV2aXNpb24gPT0gMHgyMDAyKSAvLyAxc3QtY3V0CisJCXsKKwkJCWlmICgoKHR4X2NhbF9yZWdbMF09PTcpIHx8ICh0eF9jYWxfcmVnWzBdPT0oLTgpKSkgJiYKKwkJCQkoKHR4X2NhbF9yZWdbM109PTcpIHx8ICh0eF9jYWxfcmVnWzNdPT0oLTgpKSkpCisJCQl7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogPF90eF9pcV9jYWxpYnJhdGlvbl9sb29wPiAqKioqKioqKipcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiBUWF9JUV9DQUxJQlJBVElPTiBTQVRVQVRJT04gISFcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UgLy8gMm5kLWN1dAorCQl7CisJCQlpZiAoKCh0eF9jYWxfcmVnWzBdPT0zMSkgfHwgKHR4X2NhbF9yZWdbMF09PSgtMzIpKSkgJiYKKwkJCQkoKHR4X2NhbF9yZWdbM109PTMxKSB8fCAodHhfY2FsX3JlZ1szXT09KC0zMikpKSkKKwkJCXsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiA8X3R4X2lxX2NhbGlicmF0aW9uX2xvb3A+ICoqKioqKioqKlxuIikpOworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqIFRYX0lRX0NBTElCUkFUSU9OIFNBVFVBVElPTiAhIVxuIikpOworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQl0eF9jYWxbMF0gPSB0eF9jYWxbMF0gKyB0eF9jYWxfcmVnWzBdOworCQl0eF9jYWxbMV0gPSB0eF9jYWxbMV0gKyB0eF9jYWxfcmVnWzFdOworCQl0eF9jYWxbMl0gPSB0eF9jYWxbMl0gKyB0eF9jYWxfcmVnWzJdOworCQl0eF9jYWxbM10gPSB0eF9jYWxbM10gKyB0eF9jYWxfcmVnWzNdOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBhcHBseSB0eF9jYWxbMF0gPSAlZFxuIiwgdHhfY2FsWzBdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIGFwcGx5IHR4X2NhbFsxXSA9ICVkXG4iLCB0eF9jYWxbMV0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgYXBwbHkgdHhfY2FsWzJdID0gJWRcbiIsIHR4X2NhbFsyXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICBhcHBseSB0eF9jYWxbM10gPSAlZFxuIiwgdHhfY2FsWzNdKSk7CisKKwkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJeworCQkJdmFsICY9IDB4MDAwMEZGRkY7CisJCQl2YWwgfD0gKChfczMyX3RvX3M0KHR4X2NhbFswXSkgPDwgMjgpfAorCQkJCQkoX3MzMl90b19zNCh0eF9jYWxbMV0pIDw8IDI0KXwKKwkJCQkJKF9zMzJfdG9fczQodHhfY2FsWzJdKSA8PCAyMCl8CisJCQkJCShfczMyX3RvX3M0KHR4X2NhbFszXSkgPDwgMTYpKTsKKwkJCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCB2YWwpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogQ0FMSUJfREFUQSA9IDB4JTA4WFxuIiwgdmFsKSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQllbHNlIC8vIDJuZC1jdXQKKwkJeworCQkJdmFsICY9IDB4MDAwMDAzRkY7CisJCQl2YWwgfD0gKChfczMyX3RvX3M1KHR4X2NhbFswXSkgPDwgMjcpfAorCQkJCQkoX3MzMl90b19zNih0eF9jYWxbMV0pIDw8IDIxKXwKKwkJCQkJKF9zMzJfdG9fczYodHhfY2FsWzJdKSA8PCAxNSl8CisJCQkJCShfczMyX3RvX3M1KHR4X2NhbFszXSkgPDwgMTApKTsKKwkJCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDNDLCB2YWwpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogVFhfSVFfQ0FMSUJSQVRJT04gPSAweCUwOFhcbiIsIHZhbCkpOworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvLyBpLiBTZXQgImNhbGliX3N0YXJ0IiB0byAweDAKKwkJcmVnX21vZGVfY3RybCAmPSB+TUFTS19DQUxJQl9TVEFSVDsKKwkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsIHJlZ19tb2RlX2N0cmwpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCisJCWxvb3AtLTsKKwl9CisKKwlyZXR1cm4gMTsKK30KKwordm9pZCBfdHhfaXFfY2FsaWJyYXRpb25fd2luYm9uZChod19kYXRhX3QgKnBod19kYXRhKQoreworCXUzMiAgICAgcmVnX2FnY19jdHJsMzsKKyNpZmRlZiBfREVCVUcKKwlzMzIgICAgIHR4X2NhbF9yZWdbNF07CisKKyNlbmRpZgorCXUzMiAgICAgcmVnX21vZGVfY3RybDsKKwl1MzIgICAgIHZhbDsKKwl1OCAgICAgIHJlc3VsdDsKKworCVBIWV9ERUJVRygoIltDQUxdIC0+IFs0XV90eF9pcV9jYWxpYnJhdGlvbigpXG4iKSk7CisKKwkvLzB4MDEgMHhFRTNGQzIgIDsgM0I4RkYgIDsgQ2FsaWJyYXRpb24gKDZhKS4gZW5hYmxlIFRYIElRIGNhbGlicmF0aW9uIGxvb3AgY2lyY3VpdHMKKwlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDEsICgxPDwyNCl8MHhFRTNGQzIpOworCS8vMHgwQiAweDE5MDVENiAgOyAwNjQxNyAgOyBDYWxpYnJhdGlvbiAoNmIpLiBlbmFibGUgVFggSS9RIGNhbCBsb29wIHNxdWFyaW5nIGNpcmN1aXQKKwlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDExLCAoMTE8PDI0KXwweDE5QkRENik7IC8vIDIwMDYwNjEyLjEuYSAweDE5MDVENik7CisJLy8weDA1IDB4MjRDNjBBICA7IDA5MzE4ICA7IENhbGlicmF0aW9uICg2YykuIHNldHRpbmcgVFgtVkdBIGdhaW46IFRYR0NIPTIgJiBHUEs9MTEwIC0tPiB0byBiZSBvcHRpbWl6ZWQKKwlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDUsICg1PDwyNCl8MHgyNEM2MEEpOyAvLzB4MjRDNjBBIChoaWdoIHRlbXBlcmF0dXJlKQorICAgIC8vMHgwNiAweDA2ODgwQyAgOyAwMUEyMCAgOyBDYWxpYnJhdGlvbiAoNmQpLiBSWEdDSD0wMDsgUlhHQ0w9MTAwIDAwMCAoUlhWR0E9MzIpIC0tPiB0byBiZSBvcHRpbWl6ZWQKKwlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDYsICg2PDwyNCl8MHgzNDg4MEMpOyAvLyAyMDA2MDYxMi4xLmEgMHgwNjg5MEMpOworCS8vMHgwMCAweEZERjFDMCAgOyAzRjdDNyAgOyBDYWxpYnJhdGlvbiAoNmUpLiB0dXJuIG9uIElRIGltYmFsYW5jZS9UZXN0IG1vZGUKKwlwaHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDAsICgwPDwyNCl8MHhGREYxQzApOworCS8vOyBbQkItY2hpcF06IENhbGlicmF0aW9uICg2ZikuU2VuZCB0ZXN0IHBhdHRlcm4KKwkvLzsgW0JCLWNoaXBdOiBDYWxpYnJhdGlvbiAoNmcpLiBTZWFyY2ggUlhHQ0wgb3B0aW1hbCB2YWx1ZQorCS8vOyBbQkItY2hpcF06IENhbGlicmF0aW9uICg2aCkuIENhY3VsYXRlIFRYLXBhdGggSVEgaW1iYWxhbmNlIGFuZCBzZXR0aW5nIFRYIHBhdGggSVEgY29tcGVuc2F0aW9uIHRhYmxlCisJLy9waHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDMsICgzPDwyNCl8MHgwMjU1ODYpOworCisJT1NfU0xFRVAoMzAwMDApOyAvLyAyMDA2MDYxMi4xLmEgMzBtcyBkZWxheS4gQWRkIHRoZSBmb2xsb3cgMiBsaW5lcworCS8vVG8gYWRqdXN0IFRYVkdBIHRvIGZpdCBpcV9tYWdfMCByYW5nZSBmcm9tIDEyNTAgfiAxNzUwCisJYWRqdXN0X1RYVkdBX2Zvcl9pcV9tYWcoIHBod19kYXRhICk7CisKKwkvLyBhLiBEaXNhYmxlIEFHQworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQUdDX0NUUkwzLCAmcmVnX2FnY19jdHJsMyk7CisJcmVnX2FnY19jdHJsMyAmPSB+QklUKDIpOworCXJlZ19hZ2NfY3RybDMgfD0gKE1BU0tfTE5BX0ZJWF9HQUlOfE1BU0tfQUdDX0ZJWCk7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDMsIHJlZ19hZ2NfY3RybDMpOworCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDUsICZ2YWwpOworCXZhbCB8PSBNQVNLX0FHQ19GSVhfR0FJTjsKKwlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMNSwgdmFsKTsKKworCXJlc3VsdCA9IF90eF9pcV9jYWxpYnJhdGlvbl9sb29wX3dpbmJvbmQocGh3X2RhdGEsIDE1MCwgMTAwKTsKKworCWlmIChyZXN1bHQgPiAwKQorCXsKKwkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJeworCQkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsICZ2YWwpOworCQkJdmFsICY9IDB4MDAwMEZGRkY7CisJCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1NCwgdmFsKTsKKwkJfQorCQllbHNlIC8vIDJuZC1jdXQKKwkJeworCQkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4M0MsICZ2YWwpOworCQkJdmFsICY9IDB4MDAwMDAzRkY7CisJCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgdmFsKTsKKwkJfQorCisJCXJlc3VsdCA9IF90eF9pcV9jYWxpYnJhdGlvbl9sb29wX3dpbmJvbmQocGh3X2RhdGEsIDMwMCwgMjAwKTsKKworCQlpZiAocmVzdWx0ID4gMCkKKwkJeworCQkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJCXsKKwkJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1NCwgJnZhbCk7CisJCQkJdmFsICY9IDB4MDAwMEZGRkY7CisJCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsIHZhbCk7CisJCQl9CisJCQllbHNlIC8vIDJuZC1jdXQKKwkJCXsKKwkJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgJnZhbCk7CisJCQkJdmFsICY9IDB4MDAwMDAzRkY7CisJCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4M0MsIHZhbCk7CisJCQl9CisKKwkJCXJlc3VsdCA9IF90eF9pcV9jYWxpYnJhdGlvbl9sb29wX3dpbmJvbmQocGh3X2RhdGEsIDUwMCwgNDAwKTsKKwkJCWlmIChyZXN1bHQgPiAwKQorCQkJeworCQkJCWlmIChwaHdfZGF0YS0+cmV2aXNpb24gPT0gMHgyMDAyKSAvLyAxc3QtY3V0CisJCQkJeworCQkJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1NCwgJnZhbCk7CisJCQkJCXZhbCAmPSAweDAwMDBGRkZGOworCQkJCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1NCwgdmFsKTsKKwkJCQl9CisJCQkJZWxzZSAvLyAybmQtY3V0CisJCQkJeworCQkJCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgJnZhbCk7CisJCQkJCXZhbCAmPSAweDAwMDAwM0ZGOworCQkJCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHgzQywgdmFsKTsKKwkJCQl9CisKKworCQkJCXJlc3VsdCA9IF90eF9pcV9jYWxpYnJhdGlvbl9sb29wX3dpbmJvbmQocGh3X2RhdGEsIDcwMCwgNTAwKTsKKworCQkJCWlmIChyZXN1bHQgPiAwKQorCQkJCXsKKwkJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogPF90eF9pcV9jYWxpYnJhdGlvbj4gKioqKioqKioqKioqKipcbiIpKTsKKwkJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogVFhfSVFfQ0FMSUJSQVRJT04gRkFJTFVSRSAhIVxuIikpOworCQkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCisJCQkJCWlmIChwaHdfZGF0YS0+cmV2aXNpb24gPT0gMHgyMDAyKSAvLyAxc3QtY3V0CisJCQkJCXsKKwkJCQkJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCAmdmFsKTsKKwkJCQkJCXZhbCAmPSAweDAwMDBGRkZGOworCQkJCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsIHZhbCk7CisJCQkJCX0KKwkJCQkJZWxzZSAvLyAybmQtY3V0CisJCQkJCXsKKwkJCQkJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCAweDNDLCAmdmFsKTsKKwkJCQkJCXZhbCAmPSAweDAwMDAwM0ZGOworCQkJCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4M0MsIHZhbCk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwkvLyBpLiBTZXQgImNhbGliX3N0YXJ0IiB0byAweDAKKwlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgJnJlZ19tb2RlX2N0cmwpOworCXJlZ19tb2RlX2N0cmwgJj0gfk1BU0tfQ0FMSUJfU1RBUlQ7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsIHJlZ19tb2RlX2N0cmwpOworCVBIWV9ERUJVRygoIltDQUxdICAgIE1PREVfQ1RSTCAod3JpdGUpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisKKwkvLyBnLiBFbmFibGUgQUdDCisJLy9od19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0FHQ19DVFJMMywgJnZhbCk7CisJcmVnX2FnY19jdHJsMyB8PSBCSVQoMik7CisJcmVnX2FnY19jdHJsMyAmPSB+KE1BU0tfTE5BX0ZJWF9HQUlOfE1BU0tfQUdDX0ZJWCk7CisJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19BR0NfQ1RSTDMsIHJlZ19hZ2NfY3RybDMpOworCisjaWZkZWYgX0RFQlVHCisJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwl7CisJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCAmdmFsKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogMHg1NCA9IDB4JTA4WFxuIiwgdmFsKSk7CisJCXR4X2NhbF9yZWdbMF0gPSBfczRfdG9fczMyKCh2YWwgJiAweEYwMDAwMDAwKSA+PiAyOCk7CisJCXR4X2NhbF9yZWdbMV0gPSBfczRfdG9fczMyKCh2YWwgJiAweDBGMDAwMDAwKSA+PiAyNCk7CisJCXR4X2NhbF9yZWdbMl0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwRjAwMDAwKSA+PiAyMCk7CisJCXR4X2NhbF9yZWdbM10gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMEYwMDAwKSA+PiAxNik7CisJfQorCWVsc2UgLy8gMm5kLWN1dAorCXsKKwkJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4M0MsICZ2YWwpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiAweDNDID0gMHglMDhYXG4iLCB2YWwpKTsKKwkJdHhfY2FsX3JlZ1swXSA9IF9zNV90b19zMzIoKHZhbCAmIDB4RjgwMDAwMDApID4+IDI3KTsKKwkJdHhfY2FsX3JlZ1sxXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDdFMDAwMDApID4+IDIxKTsKKwkJdHhfY2FsX3JlZ1syXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDAxRjgwMDApID4+IDE1KTsKKwkJdHhfY2FsX3JlZ1szXSA9IF9zNV90b19zMzIoKHZhbCAmIDB4MDAwMDdDMDApID4+IDEwKTsKKworCX0KKworCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHR4X2NhbF9yZWdbMF0gPSAlZFxuIiwgdHhfY2FsX3JlZ1swXSkpOworCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbF9yZWdbMV0gPSAlZFxuIiwgdHhfY2FsX3JlZ1sxXSkpOworCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbF9yZWdbMl0gPSAlZFxuIiwgdHhfY2FsX3JlZ1syXSkpOworCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHR4X2NhbF9yZWdbM10gPSAlZFxuIiwgdHhfY2FsX3JlZ1szXSkpOworI2VuZGlmCisKKworCS8vIGZvciB0ZXN0IC0gQkVOCisJLy8gUkYgQ29udHJvbCBPdmVycmlkZQorfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordTggX3J4X2lxX2NhbGlicmF0aW9uX2xvb3Bfd2luYm9uZChod19kYXRhX3QgKnBod19kYXRhLCB1MTYgZmFjdG9yLCB1MzIgZnJlcXVlbmN5KQoreworCXUzMiAgICAgcmVnX21vZGVfY3RybDsKKwlzMzIgICAgIGlxY2FsX3RvbmVfaTsKKwlzMzIgICAgIGlxY2FsX3RvbmVfcTsKKwlzMzIgICAgIGlxY2FsX2ltYWdlX2k7CisJczMyICAgICBpcWNhbF9pbWFnZV9xOworCXMzMiAgICAgcm90X3RvbmVfaV9iOworCXMzMiAgICAgcm90X3RvbmVfcV9iOworCXMzMiAgICAgcm90X2ltYWdlX2lfYjsKKwlzMzIgICAgIHJvdF9pbWFnZV9xX2I7CisJczMyICAgICByeF9jYWxfZmx0X2JbNF07CisJczMyICAgICByeF9jYWxbNF07CisJczMyICAgICByeF9jYWxfcmVnWzRdOworCXMzMiAgICAgYV8yLCBiXzI7CisJczMyICAgICBzaW5fYiwgc2luXzJiOworCXMzMiAgICAgY29zX2IsIGNvc18yYjsKKwlzMzIgICAgIHRlbXAxLCB0ZW1wMjsKKwl1MzIgICAgIHZhbDsKKwl1MTYgICAgIGxvb3A7CisKKwl1MzIgICAgIHB3cl90b25lOworCXUzMiAgICAgcHdyX2ltYWdlOworCXU4ICAgICAgdmVyaWZ5X2NvdW50OworCisJczMyICAgICBpcWNhbF90b25lX2lfYXZnLGlxY2FsX3RvbmVfcV9hdmc7CisJczMyICAgICBpcWNhbF9pbWFnZV9pX2F2ZyxpcWNhbF9pbWFnZV9xX2F2ZzsKKwl1MTYJCWNhcHR1cmVfdGltZTsKKworCVBIWV9ERUJVRygoIltDQUxdIC0+IFs1XV9yeF9pcV9jYWxpYnJhdGlvbl9sb29wKClcbiIpKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAqKiBmYWN0b3IgPSAlZFxuIiwgZmFjdG9yKSk7CisKKworLy8gUkYgQ29udHJvbCBPdmVycmlkZQorCWh3X2dldF9jeHhfcmVnKHBod19kYXRhLCAweDgwLCAmdmFsKTsKKwl2YWwgfD0gQklUKDE5KTsKKwlod19zZXRfY3h4X3JlZyhwaHdfZGF0YSwgMHg4MCwgdmFsKTsKKworLy8gUkZfQ3RybAorCWh3X2dldF9jeHhfcmVnKHBod19kYXRhLCAweEU0LCAmdmFsKTsKKwl2YWwgfD0gQklUKDApOworCWh3X3NldF9jeHhfcmVnKHBod19kYXRhLCAweEU0LCB2YWwpOworCVBIWV9ERUJVRygoIltDQUxdICoqIFJGX0NUUkwoMHhFNCkgPSAweCUwOFgiLCB2YWwpKTsKKworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU4LCAweDQ0NDQ0NDQ0KTsgLy8gSVFfQWxwaGEKKworCS8vIGIuCisKKwlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgJnJlZ19tb2RlX2N0cmwpOworCVBIWV9ERUJVRygoIltDQUxdICAgIE1PREVfQ1RSTCAocmVhZCkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKworCXZlcmlmeV9jb3VudCA9IDA7CisKKwkvL2ZvciAobG9vcCA9IDA7IGxvb3AgPCAxOyBsb29wKyspCisJLy9mb3IgKGxvb3AgPSAwOyBsb29wIDwgTE9PUF9USU1FUzsgbG9vcCsrKQorCWxvb3AgPSBMT09QX1RJTUVTOworCXdoaWxlIChsb29wID4gMCkKKwl7CisJCVBIWV9ERUJVRygoIltDQUxdIFslZC5dIDxfcnhfaXFfY2FsaWJyYXRpb25fbG9vcD5cbiIsIChMT09QX1RJTUVTLWxvb3ArMSkpKTsKKwkJaXFjYWxfdG9uZV9pX2F2Zz0wOworCQlpcWNhbF90b25lX3FfYXZnPTA7CisJCWlxY2FsX2ltYWdlX2lfYXZnPTA7CisJCWlxY2FsX2ltYWdlX3FfYXZnPTA7CisJCWNhcHR1cmVfdGltZT0wOworCisJCWZvcihjYXB0dXJlX3RpbWU9MDsgY2FwdHVyZV90aW1lPDEwOyBjYXB0dXJlX3RpbWUrKykKKwkJeworCQkvLyBpLiBTZXQgImNhbGliX3N0YXJ0IiB0byAweDAKKwkJcmVnX21vZGVfY3RybCAmPSB+TUFTS19DQUxJQl9TVEFSVDsKKwkJaWYoICFod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCkgKS8vMjAwNjA3MTguMSBtb2RpZnkKKwkJCXJldHVybiAwOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCQlwYV9zdGFsbF9leGVjdXRpb24oVVMpOworCisJCXJlZ19tb2RlX2N0cmwgJj0gfk1BU0tfSVFDQUxfTU9ERTsKKwkJcmVnX21vZGVfY3RybCB8PSAoTUFTS19DQUxJQl9TVEFSVHwweDEpOworCQlod19zZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgcmVnX21vZGVfY3RybCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgIE1PREVfQ1RSTCAod3JpdGUpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisJCXBhX3N0YWxsX2V4ZWN1dGlvbihVUyk7ICAvL1Nob3VsZCBiZSByZWFkIG91dCBhZnRlciA0NTB1cworCisJCS8vIGMuCisJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQ0FMSUJfUkVBRDEsICZ2YWwpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBDQUxJQl9SRUFEMSA9IDB4JTA4WFxuIiwgdmFsKSk7CisKKwkJaXFjYWxfdG9uZV9pID0gX3MxM190b19zMzIodmFsICYgMHgwMDAwMUZGRik7CisJCWlxY2FsX3RvbmVfcSA9IF9zMTNfdG9fczMyKCh2YWwgJiAweDAzRkZFMDAwKSA+PiAxMyk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIGlxY2FsX3RvbmVfaSA9ICVkLCBpcWNhbF90b25lX3EgPSAlZFxuIiwKKwkJCQkgICBpcWNhbF90b25lX2ksIGlxY2FsX3RvbmVfcSkpOworCisJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCBSRUdfQ0FMSUJfUkVBRDIsICZ2YWwpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBDQUxJQl9SRUFEMiA9IDB4JTA4WFxuIiwgdmFsKSk7CisKKwkJaXFjYWxfaW1hZ2VfaSA9IF9zMTNfdG9fczMyKHZhbCAmIDB4MDAwMDFGRkYpOworCQlpcWNhbF9pbWFnZV9xID0gX3MxM190b19zMzIoKHZhbCAmIDB4MDNGRkUwMDApID4+IDEzKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogaXFjYWxfaW1hZ2VfaSA9ICVkLCBpcWNhbF9pbWFnZV9xID0gJWRcbiIsCisJCQkJICAgaXFjYWxfaW1hZ2VfaSwgaXFjYWxfaW1hZ2VfcSkpOworCQkJaWYoIGNhcHR1cmVfdGltZSA9PSAwKQorCQkJeworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlxY2FsX2ltYWdlX2lfYXZnPSggaXFjYWxfaW1hZ2VfaV9hdmcqKGNhcHR1cmVfdGltZS0xKSAraXFjYWxfaW1hZ2VfaSkvY2FwdHVyZV90aW1lOworCQkJCWlxY2FsX2ltYWdlX3FfYXZnPSggaXFjYWxfaW1hZ2VfcV9hdmcqKGNhcHR1cmVfdGltZS0xKSAraXFjYWxfaW1hZ2VfcSkvY2FwdHVyZV90aW1lOworCQkJCWlxY2FsX3RvbmVfaV9hdmc9KCBpcWNhbF90b25lX2lfYXZnKihjYXB0dXJlX3RpbWUtMSkgK2lxY2FsX3RvbmVfaSkvY2FwdHVyZV90aW1lOworCQkJCWlxY2FsX3RvbmVfcV9hdmc9KCBpcWNhbF90b25lX3FfYXZnKihjYXB0dXJlX3RpbWUtMSkgK2lxY2FsX3RvbmVfcSkvY2FwdHVyZV90aW1lOworCQkJfQorCQl9CisKKworCQlpcWNhbF9pbWFnZV9pID0gaXFjYWxfaW1hZ2VfaV9hdmc7CisJCWlxY2FsX2ltYWdlX3EgPSBpcWNhbF9pbWFnZV9xX2F2ZzsKKwkJaXFjYWxfdG9uZV9pID0gaXFjYWxfdG9uZV9pX2F2ZzsKKwkJaXFjYWxfdG9uZV9xID0gaXFjYWxfdG9uZV9xX2F2ZzsKKworCQkvLyBkLgorCQlyb3RfdG9uZV9pX2IgPSAoaXFjYWxfdG9uZV9pICogaXFjYWxfdG9uZV9pICsKKwkJCQkJCWlxY2FsX3RvbmVfcSAqIGlxY2FsX3RvbmVfcSkgLyAxMDI0OworCQlyb3RfdG9uZV9xX2IgPSAoaXFjYWxfdG9uZV9pICogaXFjYWxfdG9uZV9xICogKC0xKSArCisJCQkJCQlpcWNhbF90b25lX3EgKiBpcWNhbF90b25lX2kpIC8gMTAyNDsKKwkJcm90X2ltYWdlX2lfYiA9IChpcWNhbF9pbWFnZV9pICogaXFjYWxfdG9uZV9pIC0KKwkJCQkJCSBpcWNhbF9pbWFnZV9xICogaXFjYWxfdG9uZV9xKSAvIDEwMjQ7CisJCXJvdF9pbWFnZV9xX2IgPSAoaXFjYWxfaW1hZ2VfaSAqIGlxY2FsX3RvbmVfcSArCisJCQkJCQkgaXFjYWxfaW1hZ2VfcSAqIGlxY2FsX3RvbmVfaSkgLyAxMDI0OworCisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHJvdF90b25lX2lfYiAgPSAlZFxuIiwgcm90X3RvbmVfaV9iKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHJvdF90b25lX3FfYiAgPSAlZFxuIiwgcm90X3RvbmVfcV9iKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHJvdF9pbWFnZV9pX2IgPSAlZFxuIiwgcm90X2ltYWdlX2lfYikpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiByb3RfaW1hZ2VfcV9iID0gJWRcbiIsIHJvdF9pbWFnZV9xX2IpKTsKKworCQkvLyBmLgorCQlpZiAocm90X3RvbmVfaV9iID09IDApCisJCXsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfcnhfaXFfY2FsaWJyYXRpb25fbG9vcD4gRVJST1IgKioqKioqKlxuIikpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogcm90X3RvbmVfaV9iPTAgdG8gY2FsY3VsYXRlIEVQUyBhbmQgVEhFVEEgISFcbiIpKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJYnJlYWs7CisJCX0KKworCQlhXzIgPSAocm90X2ltYWdlX2lfYiAqIDMyNzY4KSAvIHJvdF90b25lX2lfYiAtCisJCQlwaHdfZGF0YS0+aXFfcnNkbF9nYWluX3R4X2QyOworCQliXzIgPSAocm90X2ltYWdlX3FfYiAqIDMyNzY4KSAvIHJvdF90b25lX2lfYiAtCisJCQlwaHdfZGF0YS0+aXFfcnNkbF9waGFzZV90eF9kMjsKKworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBpcV9yc2RsX2dhaW5fdHhfZDIgPSAlZFxuIiwgcGh3X2RhdGEtPmlxX3JzZGxfZ2Fpbl90eF9kMikpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBpcV9yc2RsX3BoYXNlX3R4X2QyPSAlZFxuIiwgcGh3X2RhdGEtPmlxX3JzZGxfcGhhc2VfdHhfZDIpKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKioqKiogRVBTSUxPTi8yID0gJWRcbiIsIGFfMikpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKioqKiBUSEVUQS8yICAgPSAlZFxuIiwgYl8yKSk7CisKKwkJX3Npbl9jb3MoYl8yLCAmc2luX2IsICZjb3NfYik7CisJCV9zaW5fY29zKGJfMioyLCAmc2luXzJiLCAmY29zXzJiKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogc2luKGIvMik9JWQsIGNvcyhiLzIpPSVkXG4iLCBzaW5fYiwgY29zX2IpKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogc2luKGIpPSVkLCBjb3MoYik9JWRcbiIsIHNpbl8yYiwgY29zXzJiKSk7CisKKwkJaWYgKGNvc18yYiA9PSAwKQorCQl7CisJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiA8X3J4X2lxX2NhbGlicmF0aW9uX2xvb3A+IEVSUk9SICoqKioqKipcbiIpKTsKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqIGNvcyhiKT0wICEhXG4iKSk7CisJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpKTsKKwkJCWJyZWFrOworCQl9CisKKwkJLy8gMTI4MCAqIDMyNzY4ID0gNDE5NDMwNDAKKwkJdGVtcDEgPSAoNDE5NDMwNDAvY29zXzJiKSpjb3NfYjsKKworCQkvL3RlbXAyID0gKDQxOTQzMDQwL2Nvc18yYikqc2luX2IqKC0xKTsKKwkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJeworCQkJdGVtcDIgPSAoNDE5NDMwNDAvY29zXzJiKSpzaW5fYiooLTEpOworCQl9CisJCWVsc2UgLy8gMm5kLWN1dAorCQl7CisJCQl0ZW1wMiA9ICg0MTk0MzA0MCo0L2Nvc18yYikqc2luX2IqKC0xKTsKKwkJfQorCisJCXJ4X2NhbF9mbHRfYlswXSA9IF9mbG9vcih0ZW1wMS8oMzI3NjgrYV8yKSk7CisJCXJ4X2NhbF9mbHRfYlsxXSA9IF9mbG9vcih0ZW1wMi8oMzI3NjgtYV8yKSk7CisJCXJ4X2NhbF9mbHRfYlsyXSA9IF9mbG9vcih0ZW1wMi8oMzI3NjgrYV8yKSk7CisJCXJ4X2NhbF9mbHRfYlszXSA9IF9mbG9vcih0ZW1wMS8oMzI3NjgtYV8yKSk7CisKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogcnhfY2FsX2ZsdF9iWzBdID0gJWRcbiIsIHJ4X2NhbF9mbHRfYlswXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxfZmx0X2JbMV0gPSAlZFxuIiwgcnhfY2FsX2ZsdF9iWzFdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHJ4X2NhbF9mbHRfYlsyXSA9ICVkXG4iLCByeF9jYWxfZmx0X2JbMl0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgcnhfY2FsX2ZsdF9iWzNdID0gJWRcbiIsIHJ4X2NhbF9mbHRfYlszXSkpOworCisJCXJ4X2NhbFswXSA9IHJ4X2NhbF9mbHRfYlswXSAtIDEyODsKKwkJcnhfY2FsWzFdID0gcnhfY2FsX2ZsdF9iWzFdOworCQlyeF9jYWxbMl0gPSByeF9jYWxfZmx0X2JbMl07CisJCXJ4X2NhbFszXSA9IHJ4X2NhbF9mbHRfYlszXSAtIDEyODsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogcnhfY2FsWzBdID0gJWRcbiIsIHJ4X2NhbFswXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxbMV0gPSAlZFxuIiwgcnhfY2FsWzFdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHJ4X2NhbFsyXSA9ICVkXG4iLCByeF9jYWxbMl0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgcnhfY2FsWzNdID0gJWRcbiIsIHJ4X2NhbFszXSkpOworCisJCS8vIGUuCisJCXB3cl90b25lID0gKGlxY2FsX3RvbmVfaSppcWNhbF90b25lX2kgKyBpcWNhbF90b25lX3EqaXFjYWxfdG9uZV9xKTsKKwkJcHdyX2ltYWdlID0gKGlxY2FsX2ltYWdlX2kqaXFjYWxfaW1hZ2VfaSArIGlxY2FsX2ltYWdlX3EqaXFjYWxfaW1hZ2VfcSkqZmFjdG9yOworCisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIHB3cl90b25lICA9ICVkXG4iLCBwd3JfdG9uZSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBwd3JfaW1hZ2UgID0gJWRcbiIsIHB3cl9pbWFnZSkpOworCisJCWlmIChwd3JfdG9uZSA+IHB3cl9pbWFnZSkKKwkJeworCQkJdmVyaWZ5X2NvdW50Kys7CisKKwkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfcnhfaXFfY2FsaWJyYXRpb25fbG9vcD4gKioqKioqKioqKioqKlxuIikpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogVkVSSUZZIE9LICMgJWQgISFcbiIsIHZlcmlmeV9jb3VudCkpOworCQkJUEhZX0RFQlVHKCgiW0NBTF0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKSk7CisKKwkJCWlmICh2ZXJpZnlfY291bnQgPiAyKQorCQkJeworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfcnhfaXFfY2FsaWJyYXRpb25fbG9vcD4gKioqKioqKioqXG4iKSk7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogUlhfSVFfQ0FMSUJSQVRJT04gT0sgISFcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJCXJldHVybiAwOworCQkJfQorCisJCQljb250aW51ZTsKKwkJfQorCQkvLyBnLgorCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgMHg1NCwgJnZhbCk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICoqIDB4NTQgPSAweCUwOFhcbiIsIHZhbCkpOworCisJCWlmIChwaHdfZGF0YS0+cmV2aXNpb24gPT0gMHgyMDAyKSAvLyAxc3QtY3V0CisJCXsKKwkJCXJ4X2NhbF9yZWdbMF0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDBGMDAwKSA+PiAxMik7CisJCQlyeF9jYWxfcmVnWzFdID0gX3M0X3RvX3MzMigodmFsICYgMHgwMDAwMEYwMCkgPj4gIDgpOworCQkJcnhfY2FsX3JlZ1syXSA9IF9zNF90b19zMzIoKHZhbCAmIDB4MDAwMDAwRjApID4+ICA0KTsKKwkJCXJ4X2NhbF9yZWdbM10gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDAwMDBGKSk7CisJCX0KKwkJZWxzZSAvLyAybmQtY3V0CisJCXsKKwkJCXJ4X2NhbF9yZWdbMF0gPSBfczVfdG9fczMyKCh2YWwgJiAweEY4MDAwMDAwKSA+PiAyNyk7CisJCQlyeF9jYWxfcmVnWzFdID0gX3M2X3RvX3MzMigodmFsICYgMHgwN0UwMDAwMCkgPj4gMjEpOworCQkJcnhfY2FsX3JlZ1syXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDAxRjgwMDApID4+IDE1KTsKKwkJCXJ4X2NhbF9yZWdbM10gPSBfczVfdG9fczMyKCh2YWwgJiAweDAwMDA3QzAwKSA+PiAxMCk7CisJCX0KKworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiByeF9jYWxfcmVnWzBdID0gJWRcbiIsIHJ4X2NhbF9yZWdbMF0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgcnhfY2FsX3JlZ1sxXSA9ICVkXG4iLCByeF9jYWxfcmVnWzFdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIHJ4X2NhbF9yZWdbMl0gPSAlZFxuIiwgcnhfY2FsX3JlZ1syXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxfcmVnWzNdID0gJWRcbiIsIHJ4X2NhbF9yZWdbM10pKTsKKworCQlpZiAocGh3X2RhdGEtPnJldmlzaW9uID09IDB4MjAwMikgLy8gMXN0LWN1dAorCQl7CisJCQlpZiAoKChyeF9jYWxfcmVnWzBdPT03KSB8fCAocnhfY2FsX3JlZ1swXT09KC04KSkpICYmCisJCQkJKChyeF9jYWxfcmVnWzNdPT03KSB8fCAocnhfY2FsX3JlZ1szXT09KC04KSkpKQorCQkJeworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqIDxfcnhfaXFfY2FsaWJyYXRpb25fbG9vcD4gKioqKioqKioqXG4iKSk7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogUlhfSVFfQ0FMSUJSQVRJT04gU0FUVUFUSU9OICEhXG4iKSk7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlIC8vIDJuZC1jdXQKKwkJeworCQkJaWYgKCgocnhfY2FsX3JlZ1swXT09MzEpIHx8IChyeF9jYWxfcmVnWzBdPT0oLTMyKSkpICYmCisJCQkJKChyeF9jYWxfcmVnWzNdPT0zMSkgfHwgKHJ4X2NhbF9yZWdbM109PSgtMzIpKSkpCisJCQl7CisJCQkJUEhZX0RFQlVHKCgiW0NBTF0gKiogPF9yeF9pcV9jYWxpYnJhdGlvbl9sb29wPiAqKioqKioqKipcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiBSWF9JUV9DQUxJQlJBVElPTiBTQVRVQVRJT04gISFcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJcnhfY2FsWzBdID0gcnhfY2FsWzBdICsgcnhfY2FsX3JlZ1swXTsKKwkJcnhfY2FsWzFdID0gcnhfY2FsWzFdICsgcnhfY2FsX3JlZ1sxXTsKKwkJcnhfY2FsWzJdID0gcnhfY2FsWzJdICsgcnhfY2FsX3JlZ1syXTsKKwkJcnhfY2FsWzNdID0gcnhfY2FsWzNdICsgcnhfY2FsX3JlZ1szXTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogYXBwbHkgcnhfY2FsWzBdID0gJWRcbiIsIHJ4X2NhbFswXSkpOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICBhcHBseSByeF9jYWxbMV0gPSAlZFxuIiwgcnhfY2FsWzFdKSk7CisJCVBIWV9ERUJVRygoIltDQUxdICAgICAgIGFwcGx5IHJ4X2NhbFsyXSA9ICVkXG4iLCByeF9jYWxbMl0pKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgICAgYXBwbHkgcnhfY2FsWzNdID0gJWRcbiIsIHJ4X2NhbFszXSkpOworCisJCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCAmdmFsKTsKKwkJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwkJeworCQkJdmFsICY9IDB4MDAwMEZGRkY7CisJCQl2YWwgfD0gKChfczMyX3RvX3M0KHJ4X2NhbFswXSkgPDwgMTIpfAorCQkJCQkoX3MzMl90b19zNChyeF9jYWxbMV0pIDw8ICA4KXwKKwkJCQkJKF9zMzJfdG9fczQocnhfY2FsWzJdKSA8PCAgNCl8CisJCQkJCShfczMyX3RvX3M0KHJ4X2NhbFszXSkpKTsKKwkJCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU0LCB2YWwpOworCQl9CisJCWVsc2UgLy8gMm5kLWN1dAorCQl7CisJCQl2YWwgJj0gMHgwMDAwMDNGRjsKKwkJCXZhbCB8PSAoKF9zMzJfdG9fczUocnhfY2FsWzBdKSA8PCAyNyl8CisJCQkJCShfczMyX3RvX3M2KHJ4X2NhbFsxXSkgPDwgMjEpfAorCQkJCQkoX3MzMl90b19zNihyeF9jYWxbMl0pIDw8IDE1KXwKKwkJCQkJKF9zMzJfdG9fczUocnhfY2FsWzNdKSA8PCAxMCkpOworCQkJaHdfc2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsIHZhbCk7CisKKwkJCWlmKCBsb29wID09IDMgKQorCQkJcmV0dXJuIDA7CisJCX0KKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogQ0FMSUJfREFUQSA9IDB4JTA4WFxuIiwgdmFsKSk7CisKKwkJbG9vcC0tOworCX0KKworCXJldHVybiAxOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit2b2lkIF9yeF9pcV9jYWxpYnJhdGlvbl93aW5ib25kKGh3X2RhdGFfdCAqcGh3X2RhdGEsIHUzMiBmcmVxdWVuY3kpCit7CisvLyBmaWdvIDIwMDUwNTIzIG1hcmtlZCB0aHNpIGZsYWcgZm9yIGNhbid0IGNvbXBpbGUgZm9yIHJlbGVzYXNlCisjaWZkZWYgX0RFQlVHCisJczMyICAgICByeF9jYWxfcmVnWzRdOworCXUzMiAgICAgdmFsOworI2VuZGlmCisKKwl1OCAgICAgIHJlc3VsdDsKKworCVBIWV9ERUJVRygoIltDQUxdIC0+IFs1XV9yeF9pcV9jYWxpYnJhdGlvbigpXG4iKSk7CisvLyBhLiBTZXQgUkZJQyB0byAiUlggY2FsaWJyYXRpb24gbW9kZSIKKwkvLzsgLS0tLS0gQ2FsaWJyYXRpb24gKDcpLiBSWCBwYXRoIElRIGltYmFsYW5jZSBjYWxpYnJhdGlvbiBsb29wCisJLy8JMHgwMSAweEZGQkZDMiAgOyAzRkVGRiAgOyBDYWxpYnJhdGlvbiAoN2EpLiBlbmFibGUgUlggSVEgY2FsaWJyYXRpb24gbG9vcCBjaXJjdWl0cworCXBoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMSwgKDE8PDI0KXwweEVGQkZDMik7CisJLy8JMHgwQiAweDFBMDFENiAgOyAwNjgxNyAgOyBDYWxpYnJhdGlvbiAoN2IpLiBlbmFibGUgUlggSS9RIGNhbCBsb29wIFNXMSBjaXJjdWl0CisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCAxMSwgKDExPDwyNCl8MHgxQTA1RDYpOworCS8vMHgwNSAweDI0ODQ4QSAgOyAwOTIxMiAgOyBDYWxpYnJhdGlvbiAoN2MpLiBzZXR0aW5nIFRYLVZHQSBnYWluIChUWEdDSCkgdG8gMiAtLT4gdG8gYmUgb3B0aW1pemVkCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCA1LCAoNTw8MjQpfCBwaHdfZGF0YS0+dHh2Z2Ffc2V0dGluZ19mb3JfY2FsKTsKKwkvLzB4MDYgMHgwNjg0MEMgIDsgMDFBMTAgIDsgQ2FsaWJyYXRpb24gKDdkKS4gUlhHQ0g9MDA7IFJYR0NMPTAxMCAwMDAgKFJYVkdBKSAtLT4gdG8gYmUgb3B0aW1pemVkCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCA2LCAoNjw8MjQpfDB4MDY4MzRDKTsKKwkvLzB4MDAgMHhGRkYxQzAgIDsgM0Y3QzcgIDsgQ2FsaWJyYXRpb24gKDdlKS4gdHVybiBvbiBJUSBpbWJhbGFuY2UvVGVzdCBtb2RlCisJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCAwLCAoMDw8MjQpfDB4RkZGMUMwKTsKKworCS8vICA7IFtCQi1jaGlwXTogQ2FsaWJyYXRpb24gKDdmKS4gU2VuZCB0ZXN0IHBhdHRlcm4KKwkvLwk7IFtCQi1jaGlwXTogQ2FsaWJyYXRpb24gKDdnKS4gU2VhcmNoIFJYR0NMIG9wdGltYWwgdmFsdWUKKwkvLwk7IFtCQi1jaGlwXTogQ2FsaWJyYXRpb24gKDdoKS4gQ2FjdWxhdGUgUlgtcGF0aCBJUSBpbWJhbGFuY2UgYW5kIHNldHRpbmcgUlggcGF0aCBJUSBjb21wZW5zYXRpb24gdGFibGUKKworCXJlc3VsdCA9IF9yeF9pcV9jYWxpYnJhdGlvbl9sb29wX3dpbmJvbmQocGh3X2RhdGEsIDEyNTg5LCBmcmVxdWVuY3kpOworCisJaWYgKHJlc3VsdCA+IDApCisJeworCQlfcmVzZXRfcnhfY2FsKHBod19kYXRhKTsKKwkJcmVzdWx0ID0gX3J4X2lxX2NhbGlicmF0aW9uX2xvb3Bfd2luYm9uZChwaHdfZGF0YSwgNzk0MywgZnJlcXVlbmN5KTsKKworCQlpZiAocmVzdWx0ID4gMCkKKwkJeworCQkJX3Jlc2V0X3J4X2NhbChwaHdfZGF0YSk7CisJCQlyZXN1bHQgPSBfcnhfaXFfY2FsaWJyYXRpb25fbG9vcF93aW5ib25kKHBod19kYXRhLCA1MDExLCBmcmVxdWVuY3kpOworCisJCQlpZiAocmVzdWx0ID4gMCkKKwkJCXsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKiA8X3J4X2lxX2NhbGlicmF0aW9uPiAqKioqKioqKioqKioqKlxuIikpOworCQkJCVBIWV9ERUJVRygoIltDQUxdICoqIFJYX0lRX0NBTElCUkFUSU9OIEZBSUxVUkUgISFcbiIpKTsKKwkJCQlQSFlfREVCVUcoKCJbQ0FMXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIikpOworCQkJCV9yZXNldF9yeF9jYWwocGh3X2RhdGEpOworCQkJfQorCQl9CisJfQorCisjaWZkZWYgX0RFQlVHCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIDB4NTQsICZ2YWwpOworCVBIWV9ERUJVRygoIltDQUxdICAgICoqIDB4NTQgPSAweCUwOFhcbiIsIHZhbCkpOworCisJaWYgKHBod19kYXRhLT5yZXZpc2lvbiA9PSAweDIwMDIpIC8vIDFzdC1jdXQKKwl7CisJCXJ4X2NhbF9yZWdbMF0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDBGMDAwKSA+PiAxMik7CisJCXJ4X2NhbF9yZWdbMV0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDAwRjAwKSA+PiAgOCk7CisJCXJ4X2NhbF9yZWdbMl0gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDAwMEYwKSA+PiAgNCk7CisJCXJ4X2NhbF9yZWdbM10gPSBfczRfdG9fczMyKCh2YWwgJiAweDAwMDAwMDBGKSk7CisJfQorCWVsc2UgLy8gMm5kLWN1dAorCXsKKwkJcnhfY2FsX3JlZ1swXSA9IF9zNV90b19zMzIoKHZhbCAmIDB4RjgwMDAwMDApID4+IDI3KTsKKwkJcnhfY2FsX3JlZ1sxXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDdFMDAwMDApID4+IDIxKTsKKwkJcnhfY2FsX3JlZ1syXSA9IF9zNl90b19zMzIoKHZhbCAmIDB4MDAxRjgwMDApID4+IDE1KTsKKwkJcnhfY2FsX3JlZ1szXSA9IF9zNV90b19zMzIoKHZhbCAmIDB4MDAwMDdDMDApID4+IDEwKTsKKwl9CisKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiByeF9jYWxfcmVnWzBdID0gJWRcbiIsIHJ4X2NhbF9yZWdbMF0pKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxfcmVnWzFdID0gJWRcbiIsIHJ4X2NhbF9yZWdbMV0pKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxfcmVnWzJdID0gJWRcbiIsIHJ4X2NhbF9yZWdbMl0pKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICAgICByeF9jYWxfcmVnWzNdID0gJWRcbiIsIHJ4X2NhbF9yZWdbM10pKTsKKyNlbmRpZgorCit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordm9pZCBwaHlfY2FsaWJyYXRpb25fd2luYm9uZChod19kYXRhX3QgKnBod19kYXRhLCB1MzIgZnJlcXVlbmN5KQoreworCXUzMiAgICAgcmVnX21vZGVfY3RybDsKKwl1MzIgICAgIGlxX2FscGhhOworCisJUEhZX0RFQlVHKCgiW0NBTF0gLT4gcGh5X2NhbGlicmF0aW9uX3dpbmJvbmQoKVxuIikpOworCisJLy8gMjAwNDA3MDEgMS4xLjI1LjEwMDAga2V2aW4KKwlod19nZXRfY3h4X3JlZyhwaHdfZGF0YSwgMHg4MCwgJm1hY19jdHJsKTsKKwlod19nZXRfY3h4X3JlZyhwaHdfZGF0YSwgMHhFNCwgJnJmX2N0cmwpOworCWh3X2dldF9keHhfcmVnKHBod19kYXRhLCAweDU4LCAmaXFfYWxwaGEpOworCisKKworCV9yeGFkY19kY19vZmZzZXRfY2FuY2VsbGF0aW9uX3dpbmJvbmQocGh3X2RhdGEsIGZyZXF1ZW5jeSk7CisJLy9fdHhpZGFjX2RjX29mZnNldF9jYW5jZWxsYXRpb25fd2luYm9uZChwaHdfZGF0YSk7CisJLy9fdHhxZGFjX2RjX29mZnNldF9jYWNlbGxhdGlvbl93aW5ib25kKHBod19kYXRhKTsKKworCV90eF9pcV9jYWxpYnJhdGlvbl93aW5ib25kKHBod19kYXRhKTsKKwlfcnhfaXFfY2FsaWJyYXRpb25fd2luYm9uZChwaHdfZGF0YSwgZnJlcXVlbmN5KTsKKworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJaHdfZ2V0X2R4eF9yZWcocGh3X2RhdGEsIFJFR19NT0RFX0NUUkwsICZyZWdfbW9kZV9jdHJsKTsKKwlyZWdfbW9kZV9jdHJsICY9IH4oTUFTS19JUUNBTF9UT05FX1NFTHxNQVNLX0lRQ0FMX01PREV8TUFTS19DQUxJQl9TVEFSVCk7IC8vIHNldCB3aGVuIGZpbmlzaAorCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCByZWdfbW9kZV9jdHJsKTsKKwlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHdyaXRlKSA9IDB4JTA4WFxuIiwgcmVnX21vZGVfY3RybCkpOworCisJLy8gaS4gU2V0IFJGSUMgdG8gIk5vcm1hbCBtb2RlIgorCWh3X3NldF9jeHhfcmVnKHBod19kYXRhLCAweDgwLCBtYWNfY3RybCk7CisJaHdfc2V0X2N4eF9yZWcocGh3X2RhdGEsIDB4RTQsIHJmX2N0cmwpOworCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCAweDU4LCBpcV9hbHBoYSk7CisKKworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcGh5X2luaXRfcmYocGh3X2RhdGEpOworCit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIHBoeV9zZXRfcmZfZGF0YSggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUzMiBpbmRleCwgIHUzMiB2YWx1ZSApCit7CisgICB1MzIgbHRtcD0wOworCisgICAgc3dpdGNoKCBwSHdEYXRhLT5waHlfdHlwZSApCisJeworCQljYXNlIFJGX01BWElNXzI4MjU6CisJCWNhc2UgUkZfTUFYSU1fVjE6IC8vIDExZyBXaW5ib25kIDJuZCBCQih3aXRoIFBoeSBib2FyZCAodjEpICsgTWF4aW0gMzMxKQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgxOCA8PCAyNCkgfCBCaXRSZXZlcnNlKCB2YWx1ZSwgMTggKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfTUFYSU1fMjgyNzoKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggdmFsdWUsIDE4ICk7CisJCQlicmVhazsKKworCQljYXNlIFJGX01BWElNXzI4Mjg6CisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIHZhbHVlLCAxOCApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9NQVhJTV8yODI5OgorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgxOCA8PCAyNCkgfCBCaXRSZXZlcnNlKCB2YWx1ZSwgMTggKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfQUlST0hBXzIyMzA6CisJCWNhc2UgUkZfQUlST0hBXzIyMzBTOiAvLyAyMDA2MDQyMCBBZGQgdGhpcworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyMCA8PCAyNCkgfCBCaXRSZXZlcnNlKCB2YWx1ZSwgMjAgKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfQUlST0hBXzcyMzA6CisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8ICh2YWx1ZSYweGZmZmZmZik7CisJCQlicmVhazsKKworCQljYXNlIFJGX1dCXzI0MjoKKwkJY2FzZSBSRl9XQl8yNDJfMTogLy8gMjAwNjA2MTkuNSBBZGQKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggdmFsdWUsIDI0ICk7CisJCQlicmVhazsKKwl9CisKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7Cit9CisKKy8vIDIwMDYwNzE3IG1vZGlmeSBhcyBCcnVjZSdzIG1haWwKK3Vuc2lnbmVkIGNoYXIgYWRqdXN0X1RYVkdBX2Zvcl9pcV9tYWcoaHdfZGF0YV90ICpwaHdfZGF0YSkKK3sKKwlpbnQgaW5pdF90eHZnYSA9IDA7CisJdTMyICAgICByZWdfbW9kZV9jdHJsOworCXUzMiAgICAgdmFsOworCXMzMiAgICAgaXFjYWxfdG9uZV9pMDsKKwlzMzIgICAgIGlxY2FsX3RvbmVfcTA7CisJdTMyICAgICBzcXN1bTsKKwlzMzIgICAgIGlxX21hZ18wX3R4OworCXU4CQlyZWdfc3RhdGU7CisJaW50CQljdXJyZW50X3R4dmdhOworCisKKwlyZWdfc3RhdGUgPSAwOworCWZvciggaW5pdF90eHZnYT0wOyBpbml0X3R4dmdhPDEwOyBpbml0X3R4dmdhKyspCisJeworCQljdXJyZW50X3R4dmdhID0gKCAweDI0QzQwQXwoaW5pdF90eHZnYTw8NikgKTsKKwkJcGh5X3NldF9yZl9kYXRhKHBod19kYXRhLCA1LCAoKDU8PDI0KXxjdXJyZW50X3R4dmdhKSApOworCQlwaHdfZGF0YS0+dHh2Z2Ffc2V0dGluZ19mb3JfY2FsID0gY3VycmVudF90eHZnYTsKKworCQkvL3BhX3N0YWxsX2V4ZWN1dGlvbigzMDAwMCk7Ly9TbGVlcCgzMCk7CisJCU9TX1NMRUVQKDMwMDAwKTsgLy8gMjAwNjA2MTIuMS5hCisKKwkJaWYoICFod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX01PREVfQ1RSTCwgJnJlZ19tb2RlX2N0cmwpICkgLy8gMjAwNjA3MTguMSBtb2RpZnkKKwkJCXJldHVybiBGQUxTRTsKKworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBNT0RFX0NUUkwgKHJlYWQpID0gMHglMDhYXG4iLCByZWdfbW9kZV9jdHJsKSk7CisKKwkJLy8gYS4gU2V0IGlxY2FsX21vZGVbMTowXSB0byAweDIgYW5kIHNldCAiY2FsaWJfc3RhcnQiIHRvIDB4MSB0bworCQkvLyAgICBlbmFibGUgIklRIGFsaWJyYXRpb24gTW9kZSBJSSIKKwkJcmVnX21vZGVfY3RybCAmPSB+KE1BU0tfSVFDQUxfVE9ORV9TRUx8TUFTS19JUUNBTF9NT0RFKTsKKwkJcmVnX21vZGVfY3RybCAmPSB+TUFTS19JUUNBTF9NT0RFOworCQlyZWdfbW9kZV9jdHJsIHw9IChNQVNLX0NBTElCX1NUQVJUfDB4MDIpOworCQlyZWdfbW9kZV9jdHJsIHw9IChNQVNLX0NBTElCX1NUQVJUfDB4MDJ8Mjw8Mik7CisJCWh3X3NldF9keHhfcmVnKHBod19kYXRhLCBSRUdfTU9ERV9DVFJMLCByZWdfbW9kZV9jdHJsKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgTU9ERV9DVFJMICh3cml0ZSkgPSAweCUwOFhcbiIsIHJlZ19tb2RlX2N0cmwpKTsKKworCQkvL3BhX3N0YWxsX2V4ZWN1dGlvbihVUyk7CisJCU9TX1NMRUVQKDEpOyAvLyAyMDA2MDYxMi4xLmEKKworCQkvL3BhX3N0YWxsX2V4ZWN1dGlvbigzMDApOy8vU2xlZXAoMzApOworCQlPU19TTEVFUCgzMDApOyAvLyAyMDA2MDYxMi4xLmEKKworCQkvLyBiLgorCQlod19nZXRfZHh4X3JlZyhwaHdfZGF0YSwgUkVHX0NBTElCX1JFQUQxLCAmdmFsKTsKKworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICBDQUxJQl9SRUFEMSA9IDB4JTA4WFxuIiwgdmFsKSk7CisJCS8vcGFfc3RhbGxfZXhlY3V0aW9uKFVTKTsKKwkJLy9wYV9zdGFsbF9leGVjdXRpb24oMzAwKTsvL1NsZWVwKDMwKTsKKwkJT1NfU0xFRVAoMzAwKTsgLy8gMjAwNjA2MTIuMS5hCisKKwkJaXFjYWxfdG9uZV9pMCA9IF9zMTNfdG9fczMyKHZhbCAmIDB4MDAwMDFGRkYpOworCQlpcWNhbF90b25lX3EwID0gX3MxM190b19zMzIoKHZhbCAmIDB4MDNGRkUwMDApID4+IDEzKTsKKwkJUEhZX0RFQlVHKCgiW0NBTF0gICAgKiogaXFjYWxfdG9uZV9pMD0lZCwgaXFjYWxfdG9uZV9xMD0lZFxuIiwKKwkJCQkgICBpcWNhbF90b25lX2kwLCBpcWNhbF90b25lX3EwKSk7CisKKwkJc3FzdW0gPSBpcWNhbF90b25lX2kwKmlxY2FsX3RvbmVfaTAgKyBpcWNhbF90b25lX3EwKmlxY2FsX3RvbmVfcTA7CisJCWlxX21hZ18wX3R4ID0gKHMzMikgX3NxcnQoc3FzdW0pOworCQlQSFlfREVCVUcoKCJbQ0FMXSAgICAqKiBhdXRvX2FkanVzdF90eHZnYV9mb3JfaXFfbWFnXzBfdHg9JWRcbiIsIGlxX21hZ18wX3R4KSk7CisKKwkJaWYoIGlxX21hZ18wX3R4Pj03MDAgJiYgaXFfbWFnXzBfdHg8PTE3NTAgKQorCQkJYnJlYWs7CisJCWVsc2UgaWYoaXFfbWFnXzBfdHggPiAxNzUwKQorCQl7CisJCQlpbml0X3R4dmdhPS0yOworCQkJY29udGludWU7CisJCX0KKwkJZWxzZQorCQkJY29udGludWU7CisKKwl9CisKKwlpZiggaXFfbWFnXzBfdHg+PTcwMCAmJiBpcV9tYWdfMF90eDw9MTc1MCApCisJCXJldHVybiBUUlVFOworCWVsc2UKKwkJcmV0dXJuIEZBTFNFOworfQorCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvcGh5X2NhbGlicmF0aW9uLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9waHlfY2FsaWJyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmE2NWQzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvcGh5X2NhbGlicmF0aW9uLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8vIDIwMDMxMjI5IFR1cmJvIGFkZAorI2RlZmluZSBSRUdfQUdDX0NUUkwxICAgICAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIFJFR19BR0NfQ1RSTDIgICAgICAgICAgICAgICAweDEwMDQKKyNkZWZpbmUgUkVHX0FHQ19DVFJMMyAgICAgICAgICAgICAgIDB4MTAwOAorI2RlZmluZSBSRUdfQUdDX0NUUkw0ICAgICAgICAgICAgICAgMHgxMDBDCisjZGVmaW5lIFJFR19BR0NfQ1RSTDUgICAgICAgICAgICAgICAweDEwMTAKKyNkZWZpbmUgUkVHX0FHQ19DVFJMNiAgICAgICAgICAgICAgIDB4MTAxNAorI2RlZmluZSBSRUdfQUdDX0NUUkw3ICAgICAgICAgICAgICAgMHgxMDE4CisjZGVmaW5lIFJFR19BR0NfQ1RSTDggICAgICAgICAgICAgICAweDEwMUMKKyNkZWZpbmUgUkVHX0FHQ19DVFJMOSAgICAgICAgICAgICAgIDB4MTAyMAorI2RlZmluZSBSRUdfQUdDX0NUUkwxMCAgICAgICAgICAgICAgMHgxMDI0CisjZGVmaW5lIFJFR19DQ0FfQ1RSTCAgICAgICAgICAgICAgICAweDEwMjgKKyNkZWZpbmUgUkVHX0FfQUNRX0NUUkwgICAgICAgICAgICAgIDB4MTAyQworI2RlZmluZSBSRUdfQl9BQ1FfQ1RSTCAgICAgICAgICAgICAgMHgxMDMwCisjZGVmaW5lIFJFR19BX1RYUlhfQ1RSTCAgICAgICAgICAgICAweDEwMzQKKyNkZWZpbmUgUkVHX0JfVFhSWF9DVFJMICAgICAgICAgICAgIDB4MTAzOAorI2RlZmluZSBSRUdfQV9UWF9DT0VGMyAgICAgICAgICAgICAgMHgxMDNDCisjZGVmaW5lIFJFR19BX1RYX0NPRUYyICAgICAgICAgICAgICAweDEwNDAKKyNkZWZpbmUgUkVHX0FfVFhfQ09FRjEgICAgICAgICAgICAgIDB4MTA0NAorI2RlZmluZSBSRUdfQl9UWF9DT0VGMiAgICAgICAgICAgICAgMHgxMDQ4CisjZGVmaW5lIFJFR19CX1RYX0NPRUYxICAgICAgICAgICAgICAweDEwNEMKKyNkZWZpbmUgUkVHX01PREVfQ1RSTCAgICAgICAgICAgICAgIDB4MTA1MAorI2RlZmluZSBSRUdfQ0FMSUJfREFUQSAgICAgICAgICAgICAgMHgxMDU0CisjZGVmaW5lIFJFR19JUV9BTFBIQSAgICAgICAgICAgICAgICAweDEwNTgKKyNkZWZpbmUgUkVHX0RDX0NBTkNFTCAgICAgICAgICAgICAgIDB4MTA1QworI2RlZmluZSBSRUdfV1RPX1JFQUQgICAgICAgICAgICAgICAgMHgxMDYwCisjZGVmaW5lIFJFR19PRkZTRVRfUkVBRCAgICAgICAgICAgICAweDEwNjQKKyNkZWZpbmUgUkVHX0NBTElCX1JFQUQxICAgICAgICAgICAgIDB4MTA2OAorI2RlZmluZSBSRUdfQ0FMSUJfUkVBRDIgICAgICAgICAgICAgMHgxMDZDCisjZGVmaW5lIFJFR19BX0ZSRVFfRVNUICAgICAgICAgICAgICAweDEwNzAKKworCisKKworLy8gIDIwMDMxMTAxIFR1cmJvIGFkZAorI2RlZmluZSBNQVNLX0FNRVJfT0ZGX1JFRyAgICAgICAgICBCSVQoMzEpCisKKyNkZWZpbmUgTUFTS19CTUVSX09GRl9SRUcgICAgICAgICAgQklUKDMxKQorCisjZGVmaW5lIE1BU0tfTE5BX0ZJWF9HQUlOICAgICAgICAgIChCSVQoMyl8QklUKDQpKQorI2RlZmluZSBNQVNLX0FHQ19GSVggICAgICAgICAgICAgICBCSVQoMSkKKworI2RlZmluZSBNQVNLX0FHQ19GSVhfR0FJTiAgICAgICAgICAweEZGMDAKKworI2RlZmluZSBNQVNLX0FEQ19EQ19DQUxfU1RSICAgICAgICBCSVQoMTApCisjZGVmaW5lIE1BU0tfQ0FMSUJfU1RBUlQgICAgICAgICAgIEJJVCg0KQorI2RlZmluZSBNQVNLX0lRQ0FMX1RPTkVfU0VMICAgICAgICAoQklUKDMpfEJJVCgyKSkKKyNkZWZpbmUgTUFTS19JUUNBTF9NT0RFICAgICAgICAgICAgKEJJVCgxKXxCSVQoMCkpCisKKyNkZWZpbmUgTUFTS19UWF9DQUxfMCAgICAgICAgICAgICAgMHhGMDAwMDAwMAorI2RlZmluZSBUWF9DQUxfMF9TSElGVCAgICAgICAgICAgICAyOAorI2RlZmluZSBNQVNLX1RYX0NBTF8xICAgICAgICAgICAgICAweDBGMDAwMDAwCisjZGVmaW5lIFRYX0NBTF8xX1NISUZUICAgICAgICAgICAgIDI0CisjZGVmaW5lIE1BU0tfVFhfQ0FMXzIgICAgICAgICAgICAgIDB4MDBGMDAwMDAKKyNkZWZpbmUgVFhfQ0FMXzJfU0hJRlQgICAgICAgICAgICAgMjAKKyNkZWZpbmUgTUFTS19UWF9DQUxfMyAgICAgICAgICAgICAgMHgwMDBGMDAwMAorI2RlZmluZSBUWF9DQUxfM19TSElGVCAgICAgICAgICAgICAxNgorI2RlZmluZSBNQVNLX1JYX0NBTF8wICAgICAgICAgICAgICAweDAwMDBGMDAwCisjZGVmaW5lIFJYX0NBTF8wX1NISUZUICAgICAgICAgICAgIDEyCisjZGVmaW5lIE1BU0tfUlhfQ0FMXzEgICAgICAgICAgICAgIDB4MDAwMDBGMDAKKyNkZWZpbmUgUlhfQ0FMXzFfU0hJRlQgICAgICAgICAgICAgOAorI2RlZmluZSBNQVNLX1JYX0NBTF8yICAgICAgICAgICAgICAweDAwMDAwMEYwCisjZGVmaW5lIFJYX0NBTF8yX1NISUZUICAgICAgICAgICAgIDQKKyNkZWZpbmUgTUFTS19SWF9DQUxfMyAgICAgICAgICAgICAgMHgwMDAwMDAwRgorI2RlZmluZSBSWF9DQUxfM19TSElGVCAgICAgICAgICAgICAwCisKKyNkZWZpbmUgTUFTS19DQU5DRUxfRENfSSAgICAgICAgICAgMHgzRTAKKyNkZWZpbmUgQ0FOQ0VMX0RDX0lfU0hJRlQgICAgICAgICAgNQorI2RlZmluZSBNQVNLX0NBTkNFTF9EQ19RICAgICAgICAgICAweDAxRgorI2RlZmluZSBDQU5DRUxfRENfUV9TSElGVCAgICAgICAgICAwCisKKy8vIExBMjAwNDAyMTAga2V2aW4KKy8vI2RlZmluZSBNQVNLX0FEQ19EQ19DQUxfSSh4KSAgICAgICAoKCh4KSYweDFGRTAwKT4+OSkKKy8vI2RlZmluZSBNQVNLX0FEQ19EQ19DQUxfUSh4KSAgICAgICAoKHgpJjB4MUZGKQorI2RlZmluZSBNQVNLX0FEQ19EQ19DQUxfSSh4KSAgICAgICAoKCh4KSYweDAwMDNGRTAwKT4+OSkKKyNkZWZpbmUgTUFTS19BRENfRENfQ0FMX1EoeCkgICAgICAgKCh4KSYweDAwMDAwMUZGKQorCisvLyBMQTIwMDQwMjEwIGtldmluIChUdXJibyBoYXMgd3JvbmcgZGVmaW5pdGlvbikKKy8vI2RlZmluZSBNQVNLX0lRQ0FMX1RPTkVfSSAgICAgICAgICAweDdGRkMwMDAKKy8vI2RlZmluZSBTSElGVF9JUUNBTF9UT05FX0koeCkgICAgICAoKHgpPj4xMykKKy8vI2RlZmluZSBNQVNLX0lRQ0FMX1RPTkVfUSAgICAgICAgICAweDFGRkYKKy8vI2RlZmluZSBTSElGVF9JUUNBTF9UT05FX1EoeCkgICAgICAoKHgpPj4wKQorI2RlZmluZSBNQVNLX0lRQ0FMX1RPTkVfSSAgICAgICAgICAweDAwMDAxRkZGCisjZGVmaW5lIFNISUZUX0lRQ0FMX1RPTkVfSSh4KSAgICAgICgoeCk+PjApCisjZGVmaW5lIE1BU0tfSVFDQUxfVE9ORV9RICAgICAgICAgIDB4MDNGRkUwMDAKKyNkZWZpbmUgU0hJRlRfSVFDQUxfVE9ORV9RKHgpICAgICAgKCh4KT4+MTMpCisKKy8vIExBMjAwNDAyMTAga2V2aW4gKFR1cmJvIGhhcyB3cm9uZyBkZWZpbml0aW9uKQorLy8jZGVmaW5lIE1BU0tfSVFDQUxfSU1BR0VfSSAgICAgICAgIDB4N0ZGQzAwMAorLy8jZGVmaW5lIFNISUZUX0lRQ0FMX0lNQUdFX0koeCkgICAgICgoeCk+PjEzKQorLy8jZGVmaW5lIE1BU0tfSVFDQUxfSU1BR0VfUSAgICAgICAgIDB4MUZGRgorLy8jZGVmaW5lIFNISUZUX0lRQ0FMX0lNQUdFX1EoeCkgICAgICgoeCk+PjApCisKKy8vI2RlZmluZSBNQVNLX0lRQ0FMX0lNQUdFX0kgICAgICAgICAweDAwMDAxRkZGCisvLyNkZWZpbmUgU0hJRlRfSVFDQUxfSU1BR0VfSSh4KSAgICAgKCh4KT4+MCkKKy8vI2RlZmluZSBNQVNLX0lRQ0FMX0lNQUdFX1EgICAgICAgICAweDAzRkZFMDAwCisvLyNkZWZpbmUgU0hJRlRfSVFDQUxfSU1BR0VfUSh4KSAgICAgKCh4KT4+MTMpCisKK3ZvaWQgcGh5X3NldF9yZl9kYXRhKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTMyIGluZGV4LCAgdTMyIHZhbHVlICk7CisjZGVmaW5lIHBoeV9pbml0X3JmKCBfQSApCS8vUkZTeW50aGVzaXplcl9pbml0aWFsKCBfQSApCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3JlZy5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvcmVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3NWM3YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3JlZy5jCkBAIC0wLDAgKzEsMjY4MyBAQAorI2luY2x1ZGUgIm9zX2NvbW1vbi5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIE9yaWdpbmFsIFBoeS5oCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorOyBGb3IgTUFYSU0yODI1LzYvNyBWZXIuIDMzMSBvciBtb3JlCis7IEVkaXRlZCBieSBUaWdlciwgU2VwLTE3LTIwMDMKKzsgcmV2aXNlZCBieSBCZW4sIFNlcC0xOC0yMDAzCisKKzB4MDAgMHgwMDBhMgorMHgwMSAweDIxY2MwCis7MHgwMiAweDEzODAyCisweDAyIDB4MTM4M2EKKworO2NoYW5uZTEgMDEgOyAweDAzIDB4MzAxNDIgOyAweDA0IDB4MGIzMzM7Cis7Y2hhbm5lMSAwMiA7MHgwMyAweDMyMTQxIDsweDA0IDB4MDg0NDQ7Cis7Y2hhbm5lMSAwMyA7MHgwMyAweDMyMTQzIDsweDA0IDB4MGFlZWU7Cis7Y2hhbm5lMSAwNCA7MHgwMyAweDMyMTQyIDsweDA0IDB4MGIzMzM7Cis7Y2hhbm5lMSAwNSA7MHgwMyAweDMxMTQxIDsweDA0IDB4MDg0NDQ7Cis7Y2hhbm5lMSAwNiA7CisweDAzIDB4MzExNDM7CisweDA0IDB4MGFlZWU7Cis7Y2hhbm5lMSAwNyA7MHgwMyAweDMxMTQyIDsweDA0IDB4MGIzMzM7Cis7Y2hhbm5lMSAwOCA7MHgwMyAweDMzMTQxIDsweDA0IDB4MDg0NDQ7Cis7Y2hhbm5lMSAwOSA7MHgwMyAweDMzMTQzIDsweDA0IDB4MGFlZWU7Cis7Y2hhbm5lMSAxMCA7MHgwMyAweDMzMTQyIDsweDA0IDB4MGIzMzM7Cis7Y2hhbm5lMSAxMSA7MHgwMyAweDMwOTQxIDsweDA0IDB4MDg0NDQ7Cis7Y2hhbm5lMSAxMiA7MHgwMyAweDMwOTQzIDsweDA0IDB4MGFlZWU7Cis7Y2hhbm5lMSAxMyA7MHgwMyAweDMwOTQyIDsweDA0IDB4MGIzMzM7CisKKzB4MDUgMHgyODk4NgorMHgwNiAweDE4MDA4CisweDA3IDB4Mzg0MDAKKzB4MDggMHgwNTEwMDsgMTAwIEh6IERDCis7MHgwOCAweDA1OTAwOyAzMCBLSHogREMKKzB4MDkgMHgyNGYwOAorMHgwYSAweDE3ZTAwLCAweDE3ZWEwCisweDBiIDB4MzdkODAKKzB4MGMgMHgwYzkwMCAvLyAweDBjYTAwIChsYWdlciBwb3dlciA5ZGIgdGhhbiAweDBjMDAwKSwgMHgwYzAwMAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBNQVgyODI1IChwdXJlIGIvZykKK3UzMiBtYXgyODI1X3JmX2RhdGFbXSA9Cit7CisgICAgKDB4MDA8PDE4KXwweDAwMGEyLAorICAgICgweDAxPDwxOCl8MHgyMWNjMCwKKyAgICAoMHgwMjw8MTgpfDB4MTM4MDYsCisgICAgKDB4MDM8PDE4KXwweDMwMTQyLAorICAgICgweDA0PDwxOCl8MHgwYjMzMywKKyAgICAoMHgwNTw8MTgpfDB4Mjg5QTYsCisgICAgKDB4MDY8PDE4KXwweDE4MDA4LAorICAgICgweDA3PDwxOCl8MHgzODAwMCwKKyAgICAoMHgwODw8MTgpfDB4MDUxMDAsCisgICAgKDB4MDk8PDE4KXwweDI0ZjA4LAorICAgICgweDBBPDwxOCl8MHgxNDAwMCwKKyAgICAoMHgwQjw8MTgpfDB4MzdkODAsCisgICAgKDB4MEM8PDE4KXwweDBjMTAwICAgLy8gMTFhOiAweDBjMzAwLCAxMWc6IDB4MGMxMDAKK307CisKK3UzMiBtYXgyODI1X2NoYW5uZWxfZGF0YV8yNFtdWzNdID0KK3sKKyAgICB7KDB4MDM8PDE4KXwweDMwMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDEKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDIKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDMKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDQKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDUKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDYKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDcKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDgKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDkKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTAKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTEKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTIKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTMKKyAgICB7KDB4MDM8PDE4KXwweDMyOTQxLCAoMHgwNDw8MTgpfDB4MDk5OTksICgweDA1PDwxOCl8MHgyODlBNn0gLy8gMTQgKDI0ODRNSHopIGhobW9kaWZ5Cit9OworCit1MzIgbWF4MjgyNV9wb3dlcl9kYXRhXzI0W10gPSB7KDB4MEM8PDE4KXwweDBjMDAwLCAoMHgwQzw8MTgpfDB4MGMxMDB9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIE1BWDI4MjcgKGEvYi9nKQordTMyIG1heDI4MjdfcmZfZGF0YVtdID0KK3sKKyAgICAoMHgwMDw8MTgpfDB4MDAwYTIsCisgICAgKDB4MDE8PDE4KXwweDIxY2MwLAorICAgICgweDAyPDwxOCl8MHgxMzgwNiwKKyAgICAoMHgwMzw8MTgpfDB4MzAxNDIsCisgICAgKDB4MDQ8PDE4KXwweDBiMzMzLAorICAgICgweDA1PDwxOCl8MHgyODlBNiwKKyAgICAoMHgwNjw8MTgpfDB4MTgwMDgsCisgICAgKDB4MDc8PDE4KXwweDM4MDAwLAorICAgICgweDA4PDwxOCl8MHgwNTEwMCwKKyAgICAoMHgwOTw8MTgpfDB4MjRmMDgsCisgICAgKDB4MEE8PDE4KXwweDE0MDAwLAorICAgICgweDBCPDwxOCl8MHgzN2Q4MCwKKyAgICAoMHgwQzw8MTgpfDB4MGMxMDAgICAvLyAxMWE6IDB4MGMzMDAsIDExZzogMHgwYzEwMAorfTsKKwordTMyIG1heDI4MjdfY2hhbm5lbF9kYXRhXzI0W11bM10gPQoreworICAgIHsoMHgwMzw8MTgpfDB4MzAxNDIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwMQorICAgIHsoMHgwMzw8MTgpfDB4MzIxNDEsICgweDA0PDwxOCl8MHgwODQ0NCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwMgorICAgIHsoMHgwMzw8MTgpfDB4MzIxNDMsICgweDA0PDwxOCl8MHgwYWVlZSwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwMworICAgIHsoMHgwMzw8MTgpfDB4MzIxNDIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwNAorICAgIHsoMHgwMzw8MTgpfDB4MzExNDEsICgweDA0PDwxOCl8MHgwODQ0NCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwNQorICAgIHsoMHgwMzw8MTgpfDB4MzExNDMsICgweDA0PDwxOCl8MHgwYWVlZSwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwNgorICAgIHsoMHgwMzw8MTgpfDB4MzExNDIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwNworICAgIHsoMHgwMzw8MTgpfDB4MzMxNDEsICgweDA0PDwxOCl8MHgwODQ0NCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwOAorICAgIHsoMHgwMzw8MTgpfDB4MzMxNDMsICgweDA0PDwxOCl8MHgwYWVlZSwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAwOQorICAgIHsoMHgwMzw8MTgpfDB4MzMxNDIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAxMAorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDEsICgweDA0PDwxOCl8MHgwODQ0NCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAxMQorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDMsICgweDA0PDwxOCl8MHgwYWVlZSwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAxMgorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lMSAxMworICAgIHsoMHgwMzw8MTgpfDB4MzI5NDEsICgweDA0PDwxOCl8MHgwOTk5OSwgKDB4MDU8PDE4KXwweDI4OUE2fSAgLy8gMTQgKDI0ODRNSHopIGhobW9kaWZ5Cit9OworCit1MzIgbWF4MjgyN19jaGFubmVsX2RhdGFfNTBbXVszXSA9Cit7CisgICAgeygweDAzPDwxOCl8MHgzM2NjMywgKDB4MDQ8PDE4KXwweDA4Y2NjLCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDM2CisgICAgeygweDAzPDwxOCl8MHgzMDJjMCwgKDB4MDQ8PDE4KXwweDA4MDAwLCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDQwCisgICAgeygweDAzPDwxOCl8MHgzMDJjMiwgKDB4MDQ8PDE4KXwweDBiMzMzLCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDQ0CisgICAgeygweDAzPDwxOCl8MHgzMjJjMSwgKDB4MDQ8PDE4KXwweDA5OTk5LCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDQ4CisgICAgeygweDAzPDwxOCl8MHgzMTJjMSwgKDB4MDQ8PDE4KXwweDBhNjY2LCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDUyCisgICAgeygweDAzPDwxOCl8MHgzMzJjMywgKDB4MDQ8PDE4KXwweDA4Y2NjLCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDU2CisgICAgeygweDAzPDwxOCl8MHgzMGFjMCwgKDB4MDQ8PDE4KXwweDA4MDAwLCAoMHgwNTw8MTgpfDB4MkE5QTZ9LCAvLyBjaGFubmVsIDYwCisgICAgeygweDAzPDwxOCl8MHgzMGFjMiwgKDB4MDQ8PDE4KXwweDBiMzMzLCAoMHgwNTw8MTgpfDB4MkE5QTZ9IC8vIGNoYW5uZWwgNjQKK307CisKK3UzMiBtYXgyODI3X3Bvd2VyX2RhdGFfMjRbXSA9IHsoMHgwQzw8MTgpfDB4MEMwMDAsICgweDBDPDwxOCl8MHgwRDYwMCwgKDB4MEM8PDE4KXwweDBDMTAwfTsKK3UzMiBtYXgyODI3X3Bvd2VyX2RhdGFfNTBbXSA9IHsoMHgwQzw8MTgpfDB4MEM0MDAsICgweDBDPDwxOCl8MHgwRDUwMCwgKDB4MEM8PDE4KXwweDBDMzAwfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBNQVgyODI4IChhL2IvZykKK3UzMiBtYXgyODI4X3JmX2RhdGFbXSA9Cit7CisgICAgKDB4MDA8PDE4KXwweDAwMGEyLAorICAgICgweDAxPDwxOCl8MHgyMWNjMCwKKyAgICAoMHgwMjw8MTgpfDB4MTM4MDYsCisgICAgKDB4MDM8PDE4KXwweDMwMTQyLAorICAgICgweDA0PDwxOCl8MHgwYjMzMywKKyAgICAoMHgwNTw8MTgpfDB4Mjg5QTYsCisgICAgKDB4MDY8PDE4KXwweDE4MDA4LAorICAgICgweDA3PDwxOCl8MHgzODAwMCwKKyAgICAoMHgwODw8MTgpfDB4MDUxMDAsCisgICAgKDB4MDk8PDE4KXwweDI0ZjA4LAorICAgICgweDBBPDwxOCl8MHgxNDAwMCwKKyAgICAoMHgwQjw8MTgpfDB4MzdkODAsCisgICAgKDB4MEM8PDE4KXwweDBjMTAwICAgLy8gMTFhOiAweDBjMzAwLCAxMWc6IDB4MGMxMDAKK307CisKK3UzMiBtYXgyODI4X2NoYW5uZWxfZGF0YV8yNFtdWzNdID0KK3sKKyAgICB7KDB4MDM8PDE4KXwweDMwMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDEKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDIKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDMKKyAgICB7KDB4MDM8PDE4KXwweDMyMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDQKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDUKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDYKKyAgICB7KDB4MDM8PDE4KXwweDMxMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDcKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDgKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMDkKKyAgICB7KDB4MDM8PDE4KXwweDMzMTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTAKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQxLCAoMHgwNDw8MTgpfDB4MDg0NDQsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTEKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQzLCAoMHgwNDw8MTgpfDB4MGFlZWUsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTIKKyAgICB7KDB4MDM8PDE4KXwweDMwOTQyLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyODlBNn0sIC8vIGNoYW5uZTEgMTMKKyAgICB7KDB4MDM8PDE4KXwweDMyOTQxLCAoMHgwNDw8MTgpfDB4MDk5OTksICgweDA1PDwxOCl8MHgyODlBNn0gIC8vIDE0ICgyNDg0TUh6KSBoaG1vZGlmeQorfTsKKwordTMyIG1heDI4MjhfY2hhbm5lbF9kYXRhXzUwW11bM10gPQoreworICAgIHsoMHgwMzw8MTgpfDB4MzNjYzMsICgweDA0PDwxOCl8MHgwOGNjYywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCAzNgorICAgIHsoMHgwMzw8MTgpfDB4MzAyYzAsICgweDA0PDwxOCl8MHgwODAwMCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA0MAorICAgIHsoMHgwMzw8MTgpfDB4MzAyYzIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA0NAorICAgIHsoMHgwMzw8MTgpfDB4MzIyYzEsICgweDA0PDwxOCl8MHgwOTk5OSwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA0OAorICAgIHsoMHgwMzw8MTgpfDB4MzEyYzEsICgweDA0PDwxOCl8MHgwYTY2NiwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA1MgorICAgIHsoMHgwMzw8MTgpfDB4MzMyYzMsICgweDA0PDwxOCl8MHgwOGNjYywgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA1NgorICAgIHsoMHgwMzw8MTgpfDB4MzBhYzAsICgweDA0PDwxOCl8MHgwODAwMCwgKDB4MDU8PDE4KXwweDI4OUE2fSwgLy8gY2hhbm5lbCA2MAorICAgIHsoMHgwMzw8MTgpfDB4MzBhYzIsICgweDA0PDwxOCl8MHgwYjMzMywgKDB4MDU8PDE4KXwweDI4OUE2fSAvLyBjaGFubmVsIDY0Cit9OworCit1MzIgbWF4MjgyOF9wb3dlcl9kYXRhXzI0W10gPSB7KDB4MEM8PDE4KXwweDBjMDAwLCAoMHgwQzw8MTgpfDB4MGMxMDB9OwordTMyIG1heDI4MjhfcG93ZXJfZGF0YV81MFtdID0geygweDBDPDwxOCl8MHgwYzAwMCwgKDB4MEM8PDE4KXwweDBjMTAwfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBMQTIwMDQwNzI4IGtldmluCisvLyBNQVgyODI5IChhL2IvZykKK3UzMiBtYXgyODI5X3JmX2RhdGFbXSA9Cit7CisgICAgKDB4MDA8PDE4KXwweDAwMGEyLAorICAgICgweDAxPDwxOCl8MHgyMzUyMCwKKyAgICAoMHgwMjw8MTgpfDB4MTM4MDIsCisgICAgKDB4MDM8PDE4KXwweDMwMTQyLAorICAgICgweDA0PDwxOCl8MHgwYjMzMywKKyAgICAoMHgwNTw8MTgpfDB4Mjg5MDYsCisgICAgKDB4MDY8PDE4KXwweDE4MDA4LAorICAgICgweDA3PDwxOCl8MHgzQjUwMCwKKyAgICAoMHgwODw8MTgpfDB4MDUxMDAsCisgICAgKDB4MDk8PDE4KXwweDI0ZjA4LAorICAgICgweDBBPDwxOCl8MHgxNDAwMCwKKyAgICAoMHgwQjw8MTgpfDB4MzdkODAsCisgICAgKDB4MEM8PDE4KXwweDBGMzAwIC8vVFhWR0E9NTEsIChNQVgtNiBkQikKK307CisKK3UzMiBtYXgyODI5X2NoYW5uZWxfZGF0YV8yNFtdWzNdID0KK3sKKyAgICB7KDM8PDE4KXwweDMwMTQyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwMSAoMjQxMk1IeikKKyAgICB7KDM8PDE4KXwweDMyMTQxLCAoNDw8MTgpfDB4MDg0NDQsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwMiAoMjQxN01IeikKKyAgICB7KDM8PDE4KXwweDMyMTQzLCAoNDw8MTgpfDB4MGFlZWUsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwMyAoMjQyMk1IeikKKyAgICB7KDM8PDE4KXwweDMyMTQyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwNCAoMjQyN01IeikKKyAgICB7KDM8PDE4KXwweDMxMTQxLCAoNDw8MTgpfDB4MDg0NDQsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwNSAoMjQzMk1IeikKKyAgICB7KDM8PDE4KXwweDMxMTQzLCAoNDw8MTgpfDB4MGFlZWUsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwNiAoMjQzN01IeikKKyAgICB7KDM8PDE4KXwweDMxMTQyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwNyAoMjQ0Mk1IeikKKyAgICB7KDM8PDE4KXwweDMzMTQxLCAoNDw8MTgpfDB4MDg0NDQsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwOCAoMjQ0N01IeikKKyAgICB7KDM8PDE4KXwweDMzMTQzLCAoNDw8MTgpfDB4MGFlZWUsICg1PDwxOCl8MHgyODlDNn0sICAvLyAwOSAoMjQ1Mk1IeikKKyAgICB7KDM8PDE4KXwweDMzMTQyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyODlDNn0sICAvLyAxMCAoMjQ1N01IeikKKyAgICB7KDM8PDE4KXwweDMwOTQxLCAoNDw8MTgpfDB4MDg0NDQsICg1PDwxOCl8MHgyODlDNn0sICAvLyAxMSAoMjQ2Mk1IeikKKyAgICB7KDM8PDE4KXwweDMwOTQzLCAoNDw8MTgpfDB4MGFlZWUsICg1PDwxOCl8MHgyODlDNn0sICAvLyAxMiAoMjQ2N01IeikKKyAgICB7KDM8PDE4KXwweDMwOTQyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyODlDNn0sICAvLyAxMyAoMjQ3Mk1IeikKKyAgICB7KDM8PDE4KXwweDMyOTQxLCAoNDw8MTgpfDB4MDk5OTksICg1PDwxOCl8MHgyODlDNn0sICAvLyAxNCAoMjQ4NE1IeikgaGgtbW9kaWZ5Cit9OworCit1MzIgbWF4MjgyOV9jaGFubmVsX2RhdGFfNTBbXVs0XSA9Cit7CisgICAgIHszNiwgKDM8PDE4KXwweDMzY2MzLCAoNDw8MTgpfDB4MDhjY2MsICg1PDwxOCl8MHgyQTk0Nn0sIC8vIDM2ICg1LjE4MEdIeikKKyAgICAgezQwLCAoMzw8MTgpfDB4MzAyYzAsICg0PDwxOCl8MHgwODAwMCwgKDU8PDE4KXwweDJBOTQ2fSwgLy8gNDAgKDUuMjAwR0h6KQorICAgICB7NDQsICgzPDwxOCl8MHgzMDJjMiwgKDQ8PDE4KXwweDBiMzMzLCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyA0NCAoNS4yMjBHSHopCisgICAgIHs0OCwgKDM8PDE4KXwweDMyMmMxLCAoNDw8MTgpfDB4MDk5OTksICg1PDwxOCl8MHgyQTk0Nn0sIC8vIDQ4ICg1LjI0MEdIeikKKyAgICAgezUyLCAoMzw8MTgpfDB4MzEyYzEsICg0PDwxOCl8MHgwYTY2NiwgKDU8PDE4KXwweDJBOTQ2fSwgLy8gNTIgKDUuMjYwR0h6KQorICAgICB7NTYsICgzPDwxOCl8MHgzMzJjMywgKDQ8PDE4KXwweDA4Y2NjLCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyA1NiAoNS4yODBHSHopCisgICAgIHs2MCwgKDM8PDE4KXwweDMwYWMwLCAoNDw8MTgpfDB4MDgwMDAsICg1PDwxOCl8MHgyQTk0Nn0sIC8vIDYwICg1LjMwMEdIeikKKyAgICAgezY0LCAoMzw8MTgpfDB4MzBhYzIsICg0PDwxOCl8MHgwYjMzMywgKDU8PDE4KXwweDJBOTQ2fSwgLy8gNjQgKDUuMzIwR0h6KQorCisgICAgezEwMCwgKDM8PDE4KXwweDMwZWMwLCAoNDw8MTgpfDB4MDgwMDAsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEwMCAoNS41MDBHSHopCisgICAgezEwNCwgKDM8PDE4KXwweDMwZWMyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEwNCAoNS41MjBHSHopCisgICAgezEwOCwgKDM8PDE4KXwweDMyZWMxLCAoNDw8MTgpfDB4MDk5OTksICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEwOCAoNS41NDBHSHopCisgICAgezExMiwgKDM8PDE4KXwweDMxZWMxLCAoNDw8MTgpfDB4MGE2NjYsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDExMiAoNS41NjBHSHopCisgICAgezExNiwgKDM8PDE4KXwweDMzZWMzLCAoNDw8MTgpfDB4MDhjY2MsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDExNiAoNS41ODBHSHopCisgICAgezEyMCwgKDM8PDE4KXwweDMwMWMwLCAoNDw8MTgpfDB4MDgwMDAsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEyMCAoNS42MDBHSHopCisgICAgezEyNCwgKDM8PDE4KXwweDMwMWMyLCAoNDw8MTgpfDB4MGIzMzMsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEyNCAoNS42MjBHSHopCisgICAgezEyOCwgKDM8PDE4KXwweDMyMWMxLCAoNDw8MTgpfDB4MDk5OTksICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEyOCAoNS42NDBHSHopCisgICAgezEzMiwgKDM8PDE4KXwweDMxMWMxLCAoNDw8MTgpfDB4MGE2NjYsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEzMiAoNS42NjBHSHopCisgICAgezEzNiwgKDM8PDE4KXwweDMzMWMzLCAoNDw8MTgpfDB4MDhjY2MsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDEzNiAoNS42ODBHSHopCisgICAgezE0MCwgKDM8PDE4KXwweDMwOWMwLCAoNDw8MTgpfDB4MDgwMDAsICg1PDwxOCl8MHgyQTlDNn0sIC8vIDE0MCAoNS43MDBHSHopCisKKyAgICB7MTQ5LCAoMzw8MTgpfDB4MzI5YzIsICg0PDwxOCl8MHgwYjMzMywgKDU8PDE4KXwweDJBOUM2fSwgLy8gMTQ5ICg1Ljc0NUdIeikKKyAgICB7MTUzLCAoMzw8MTgpfDB4MzE5YzEsICg0PDwxOCl8MHgwOTk5OSwgKDU8PDE4KXwweDJBOUM2fSwgLy8gMTUzICg1Ljc2NUdIeikKKyAgICB7MTU3LCAoMzw8MTgpfDB4MzM5YzEsICg0PDwxOCl8MHgwYTY2NiwgKDU8PDE4KXwweDJBOUM2fSwgLy8gMTU3ICg1Ljc4NUdIeikKKyAgICB7MTYxLCAoMzw8MTgpfDB4MzA1YzMsICg0PDwxOCl8MHgwOGNjYywgKDU8PDE4KXwweDJBOUM2fSwgLy8gMTYxICg1LjgwNUdIeikKKworICAgIC8vIEphcGFuCisgICAgeyAxODQsICgzPDwxOCl8MHgzMDhjMiwgKDQ8PDE4KXwweDBiMzMzLCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyAxODQgKDQuOTIwR0h6KQorICAgIHsgMTg4LCAoMzw8MTgpfDB4MzI4YzEsICg0PDwxOCl8MHgwOTk5OSwgKDU8PDE4KXwweDJBOTQ2fSwgLy8gMTg4ICg0Ljk0MEdIeikKKyAgICB7IDE5MiwgKDM8PDE4KXwweDMxOGMxLCAoNDw8MTgpfDB4MGE2NjYsICg1PDwxOCl8MHgyQTk0Nn0sIC8vIDE5MiAoNC45NjBHSHopCisgICAgeyAxOTYsICgzPDwxOCl8MHgzMzhjMywgKDQ8PDE4KXwweDA4Y2NjLCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyAxOTYgKDQuOTgwR0h6KQorICAgIHsgICA4LCAoMzw8MTgpfDB4MzI0YzEsICg0PDwxOCl8MHgwOTk5OSwgKDU8PDE4KXwweDJBOTQ2fSwgLy8gICA4ICg1LjA0MEdIeikKKyAgICB7ICAxMiwgKDM8PDE4KXwweDMxNGMxLCAoNDw8MTgpfDB4MGE2NjYsICg1PDwxOCl8MHgyQTk0Nn0sIC8vICAxMiAoNS4wNjBHSHopCisgICAgeyAgMTYsICgzPDwxOCl8MHgzMzRjMywgKDQ8PDE4KXwweDA4Y2NjLCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyAgMTYgKDUuMDgwR0h6KQorICAgIHsgIDM0LCAoMzw8MTgpfDB4MzFjYzIsICg0PDwxOCl8MHgwYjMzMywgKDU8PDE4KXwweDJBOTQ2fSwgLy8gIDM0ICg1LjE3MEdIeikKKyAgICB7ICAzOCwgKDM8PDE4KXwweDMzY2MxLCAoNDw8MTgpfDB4MDk5OTksICg1PDwxOCl8MHgyQTk0Nn0sIC8vICAzOCAoNS4xOTBHSHopCisgICAgeyAgNDIsICgzPDwxOCl8MHgzMDJjMSwgKDQ8PDE4KXwweDBhNjY2LCAoNTw8MTgpfDB4MkE5NDZ9LCAvLyAgNDIgKDUuMjEwR0h6KQorICAgIHsgIDQ2LCAoMzw8MTgpfDB4MzIyYzMsICg0PDwxOCl8MHgwOGNjYywgKDU8PDE4KXwweDJBOTQ2fSwgLy8gIDQ2ICg1LjIzMEdIeikKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorOyBGb3IgTUFYSU0yODI1LzYvNyBWZXIuIDMxNyBvciBsZXNzCis7IEVkaXRlZCBieSBUaWdlciwgU2VwLTE3LTIwMDMgIGZvciAyLjRHaHogY2hhbm5lbHMKKzsgVXBkYXRlZCBieSBUaWdlciwgU2VwLTIyLTIwMDMgZm9yIDUuMEdoeiBjaGFubmVscworOyBDb3JyZWN0ZWQgYnkgVGlnZXIsIFNlcC0yMy0yMDAzLCBmb3IgMHgwMyBhbmQgMHgwNCBvZiA1LjBHaHogY2hhbm5lbHMKKworMHgwMCAweDAwMDgwCisweDAxIDB4MjE0YzAKKzB4MDIgMHgxMzgwMgorCis7Mi40R0h6IENoYW5uZWxzCis7Y2hhbm5lMSAwMSAoMi40MTJHSHopOyAweDAzIDB4MzAxNDMgOzB4MDQgMHgwYWNjYworO2NoYW5uZTEgMDIgKDIuNDE3R0h6KTsgMHgwMyAweDMyMTQwIDsweDA0IDB4MDkxMTEKKztjaGFubmUxIDAzICgyLjQyMkdIeik7IDB4MDMgMHgzMjE0MiA7MHgwNCAweDBiYmJiCis7Y2hhbm5lMSAwNCAoMi40MjdHSHopOyAweDAzIDB4MzIxNDMgOzB4MDQgMHgwYWNjYworO2NoYW5uZTEgMDUgKDIuNDMyR0h6KTsgMHgwMyAweDMxMTQwIDsweDA0IDB4MDkxMTEKKztjaGFubmUxIDA2ICgyLjQzN0dIeik7IDB4MDMgMHgzMTE0MiA7MHgwNCAweDBiYmJiCis7Y2hhbm5lMSAwNyAoMi40NDJHSHopOyAweDAzIDB4MzExNDMgOzB4MDQgMHgwYWNjYworO2NoYW5uZTEgMDggKDIuNDQ3R0h6KTsgMHgwMyAweDMzMTQwIDsweDA0IDB4MDkxMTEKKztjaGFubmUxIDA5ICgyLjQ1MkdIeik7IDB4MDMgMHgzMzE0MiA7MHgwNCAweDBiYmJiCis7Y2hhbm5lMSAxMCAoMi40NTdHSHopOyAweDAzIDB4MzMxNDMgOzB4MDQgMHgwYWNjYworO2NoYW5uZTEgMTEgKDIuNDYyR0h6KTsgMHgwMyAweDMwOTQwIDsweDA0IDB4MDkxMTEKKztjaGFubmUxIDEyICgyLjQ2N0dIeik7IDB4MDMgMHgzMDk0MiA7MHgwNCAweDBiYmJiCis7Y2hhbm5lMSAxMyAoMi40NzJHSHopOyAweDAzIDB4MzA5NDMgOzB4MDQgMHgwYWNjYworCis7NS4wR2h6IENoYW5uZWxzCis7Y2hhbm5lbCAzNiAoNS4xODBHSHopOyAweDAzIDB4MzNjYzAgOzB4MDQgMHgwYjMzMworO2NoYW5uZWwgNDAgKDUuMjAwR0h6KTsgMHgwMyAweDMwMmMwIDsweDA0IDB4MDgwMDAKKztjaGFubmVsIDQ0ICg1LjIyMEdIeik7IDB4MDMgMHgzMDJjMiA7MHgwNCAweDBiMzMzCis7Y2hhbm5lbCA0OCAoNS4yNDBHSHopOyAweDAzIDB4MzIyYzEgOzB4MDQgMHgwOTk5OQorO2NoYW5uZWwgNTIgKDUuMjYwR0h6KTsgMHgwMyAweDMxMmMxIDsweDA0IDB4MGE2NjYKKztjaGFubmVsIDU2ICg1LjI4MEdIeik7IDB4MDMgMHgzMzJjMyA7MHgwNCAweDA4Y2NjCis7Y2hhbm5lbCA2MCAoNS4zMDBHSHopOyAweDAzIDB4MzBhYzAgOzB4MDQgMHgwODAwMAorO2NoYW5uZWwgNjQgKDUuMzIwR0h6KTsgMHgwMyAweDMwYWMyIDsweDA0IDB4MDgzMzMKKworOzIuNEdIeiBiYW5kIDsweDA1IDB4Mjg5ODY7Cis7NS4wR0h6IGJhbmQKKzB4MDUgMHgyYTk4NgorCisweDA2IDB4MTgwMDgKKzB4MDcgMHgzODQwMAorMHgwOCAweDA1MTA4CisweDA5IDB4MjdmZjgKKzB4MGEgMHgxNDAwMAorMHgwYiAweDM3Zjk5CisweDBjIDB4MGMwMDAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordTMyIG1heGltXzMxN19yZl9kYXRhW10gICAgID0KK3sKKyAgICAoMHgwMDw8MTgpfDB4MDAwYTIsCisgICAgKDB4MDE8PDE4KXwweDIxNGMwLAorICAgICgweDAyPDwxOCl8MHgxMzgwMiwKKyAgICAoMHgwMzw8MTgpfDB4MzAxNDMsCisgICAgKDB4MDQ8PDE4KXwweDBhY2NjLAorICAgICgweDA1PDwxOCl8MHgyODk4NiwKKyAgICAoMHgwNjw8MTgpfDB4MTgwMDgsCisgICAgKDB4MDc8PDE4KXwweDM4NDAwLAorICAgICgweDA4PDwxOCl8MHgwNTEwOCwKKyAgICAoMHgwOTw8MTgpfDB4MjdmZjgsCisgICAgKDB4MEE8PDE4KXwweDE0MDAwLAorICAgICgweDBCPDwxOCl8MHgzN2Y5OSwKKyAgICAoMHgwQzw8MTgpfDB4MGMwMDAKK307CisKK3UzMiBtYXhpbV8zMTdfY2hhbm5lbF9kYXRhXzI0W11bM10gICAgPQoreworICAgIHsoMHgwMzw8MTgpfDB4MzAxNDMsICgweDA0PDwxOCl8MHgwYWNjYywgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwMQorICAgIHsoMHgwMzw8MTgpfDB4MzIxNDAsICgweDA0PDwxOCl8MHgwOTExMSwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwMgorICAgIHsoMHgwMzw8MTgpfDB4MzIxNDIsICgweDA0PDwxOCl8MHgwYmJiYiwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwMworICAgIHsoMHgwMzw8MTgpfDB4MzIxNDMsICgweDA0PDwxOCl8MHgwYWNjYywgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwNAorICAgIHsoMHgwMzw8MTgpfDB4MzExNDAsICgweDA0PDwxOCl8MHgwOTExMSwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwNQorICAgIHsoMHgwMzw8MTgpfDB4MzExNDIsICgweDA0PDwxOCl8MHgwYmJiYiwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwNgorICAgIHsoMHgwMzw8MTgpfDB4MzExNDMsICgweDA0PDwxOCl8MHgwYWNjYywgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwNworICAgIHsoMHgwMzw8MTgpfDB4MzMxNDAsICgweDA0PDwxOCl8MHgwOTExMSwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwOAorICAgIHsoMHgwMzw8MTgpfDB4MzMxNDIsICgweDA0PDwxOCl8MHgwYmJiYiwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAwOQorICAgIHsoMHgwMzw8MTgpfDB4MzMxNDMsICgweDA0PDwxOCl8MHgwYWNjYywgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAxMAorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDAsICgweDA0PDwxOCl8MHgwOTExMSwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAxMQorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDIsICgweDA0PDwxOCl8MHgwYmJiYiwgKDB4MDU8PDE4KXwweDI4OTg2fSwgLy8gY2hhbm5lMSAxMgorICAgIHsoMHgwMzw8MTgpfDB4MzA5NDMsICgweDA0PDwxOCl8MHgwYWNjYywgKDB4MDU8PDE4KXwweDI4OTg2fSAvLyBjaGFubmUxIDEzCit9OworCit1MzIgbWF4aW1fMzE3X2NoYW5uZWxfZGF0YV81MFtdWzNdICAgID0KK3sKKyAgICB7KDB4MDM8PDE4KXwweDMzY2MwLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyYTk4Nn0sIC8vIGNoYW5uZWwgMzYKKyAgICB7KDB4MDM8PDE4KXwweDMwMmMwLCAoMHgwNDw8MTgpfDB4MDgwMDAsICgweDA1PDwxOCl8MHgyYTk4Nn0sIC8vIGNoYW5uZWwgNDAKKyAgICB7KDB4MDM8PDE4KXwweDMwMmMzLCAoMHgwNDw8MTgpfDB4MGFjY2MsICgweDA1PDwxOCl8MHgyYTk4Nn0sIC8vIGNoYW5uZWwgNDQKKyAgICB7KDB4MDM8PDE4KXwweDMyMmMxLCAoMHgwNDw8MTgpfDB4MDk2NjYsICgweDA1PDwxOCl8MHgyYTk4Nn0sIC8vIGNoYW5uZWwgNDgKKyAgICB7KDB4MDM8PDE4KXwweDMxMmMyLCAoMHgwNDw8MTgpfDB4MDk5OTksICgweDA1PDwxOCl8MHgyYTk4Nn0sIC8vIGNoYW5uZWwgNTIKKyAgICB7KDB4MDM8PDE4KXwweDMzMmMwLCAoMHgwNDw8MTgpfDB4MGIzMzMsICgweDA1PDwxOCl8MHgyYTk5ZX0sIC8vIGNoYW5uZWwgNTYKKyAgICB7KDB4MDM8PDE4KXwweDMwYWMwLCAoMHgwNDw8MTgpfDB4MDgwMDAsICgweDA1PDwxOCl8MHgyYTk5ZX0sIC8vIGNoYW5uZWwgNjAKKyAgICB7KDB4MDM8PDE4KXwweDMwYWMzLCAoMHgwNDw8MTgpfDB4MGFjY2MsICgweDA1PDwxOCl8MHgyYTk5ZX0gLy8gY2hhbm5lbCA2NAorfTsKKwordTMyIG1heGltXzMxN19wb3dlcl9kYXRhXzI0W10gPSB7KDB4MEM8PDE4KXwweDBjMDAwLCAoMHgwQzw8MTgpfDB4MGMxMDB9OwordTMyIG1heGltXzMxN19wb3dlcl9kYXRhXzUwW10gPSB7KDB4MEM8PDE4KXwweDBjMDAwLCAoMHgwQzw8MTgpfDB4MGMxMDB9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKzs7QUwyMjMwIE1QIChNYXNzIFByb2R1Y3Rpb24gVmVyc2lvbikKKzs7UkYgUmVnaXN0ZXJzIFNldHRpbmcgZm9yIEFpcm9oYSBBTDIyMzAgc2lsaWNvbiBhZnRlciBKdW5lIDFzdCwgMjAwNAorOztVcGRhdGVkIGJ5IFRpZ2VyIEh1YW5nIChKdW5lIDFzdCwgMjAwNCkKKzs7MjAtYml0IGxlbmd0aCBhbmQgTFNCIGZpcnN0CisKKzs7Q2gwMSAoMjQxMk1IeikgOzB4MDAgMHgwOUVGQyA7MHgwMSAweDhDQ0NDOworOztDaDAyICgyNDE3TUh6KSA7MHgwMCAweDA5RUZDIDsweDAxIDB4OENDQ0Q7Cis7O0NoMDMgKDI0MjJNSHopIDsweDAwIDB4MDlFN0MgOzB4MDEgMHg4Q0NDQzsKKzs7Q2gwNCAoMjQyN01IeikgOzB4MDAgMHgwOUU3QyA7MHgwMSAweDhDQ0NEOworOztDaDA1ICgyNDMyTUh6KSA7MHgwMCAweDA1RUZDIDsweDAxIDB4OENDQ0M7Cis7O0NoMDYgKDI0MzdNSHopIDsweDAwIDB4MDVFRkMgOzB4MDEgMHg4Q0NDRDsKKzs7Q2gwNyAoMjQ0Mk1IeikgOzB4MDAgMHgwNUU3QyA7MHgwMSAweDhDQ0NDOworOztDaDA4ICgyNDQ3TUh6KSA7MHgwMCAweDA1RTdDIDsweDAxIDB4OENDQ0Q7Cis7O0NoMDkgKDI0NTJNSHopIDsweDAwIDB4MERFRkMgOzB4MDEgMHg4Q0NDQzsKKzs7Q2gxMCAoMjQ1N01IeikgOzB4MDAgMHgwREVGQyA7MHgwMSAweDhDQ0NEOworOztDaDExICgyNDYyTUh6KSA7MHgwMCAweDBERTdDIDsweDAxIDB4OENDQ0M7Cis7O0NoMTIgKDI0NjdNSHopIDsweDAwIDB4MERFN0MgOzB4MDEgMHg4Q0NDRDsKKzs7Q2gxMyAoMjQ3Mk1IeikgOzB4MDAgMHgwM0VGQyA7MHgwMSAweDhDQ0NDOworOztDaDE0ICgyNDg0TWh6KSA7MHgwMCAweDAzRTdDIDsweDAxIDB4ODY2NjY7CisKKzB4MDIgMHg0MDFEODsgUlhEQ09DIEJXIDEwMEh6IGZvciBSWEhQIGxvdworOzsweDAyIDB4NDgxREM7IFJYRENPQyBCVyAzMEtoeiBmb3IgUlhIUCBsb3cKKworMHgwMyAweENGRkYwCisweDA0IDB4MjM4MDAKKzB4MDUgMHhBM0I3MgorMHgwNiAweDZEQTAxCisweDA3IDB4RTE2ODgKKzB4MDggMHgxMTYwMAorMHgwOSAweDk5RTAyCisweDBBIDB4NUREQjAKKzB4MEIgMHhEOTkwMAorMHgwQyAweDNGRkJECisweDBEIDB4QjAwMDAKKzB4MEYgMHhGMDBBMAorCis7UkYgQ2FsaWJyYXRpb24gZm9yIEFpcm9oYSBBTDIyMzAKKztFZGl0IGJ5IEJlbiBDaGFuZyAoMDEvMzAvMDQpCis7VXBkYXRlZCBieSBUaWdlciBIdWFuZyAoMDMvMDMvMDQpCisweDBmIDB4ZjAwYTAgOyBJbml0aWFsIFNldHRpbmcKKzB4MGYgMHhmMDBiMCA7IEFjdGl2YXRlIFRYIERDQworMHgwZiAweGYwMmEwIDsgQWN0aXZhdGUgUGhhc2UgQ2FsaWJyYXRpb24KKzB4MGYgMHhmMDBlMCA7IEFjdGl2YXRlIEZpbHRlciBSQyBDYWxpYnJhdGlvbgorMHgwZiAweGYwMGEwIDsgUmVzdG9yZSBJbml0aWFsIFNldHRpbmcKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit1MzIgYWwyMjMwX3JmX2RhdGFbXSAgICAgPQoreworICAgICgweDAwPDwyMCl8MHgwOUVGQywKKyAgICAoMHgwMTw8MjApfDB4OENDQ0MsCisgICAgKDB4MDI8PDIwKXwweDQwMDU4LC8vIDIwMDYwNjI3IEFuc29uIDB4NDAxRDgsCisgICAgKDB4MDM8PDIwKXwweENGRkYwLAorICAgICgweDA0PDwyMCl8MHgyNDEwMCwvLyAyMDA2MDYyNyBBbnNvbiAweDIzODAwLAorICAgICgweDA1PDwyMCl8MHhBM0IyRiwvLyAyMDA2MDYyNyBBbnNvbiAweEEzQjcyCisgICAgKDB4MDY8PDIwKXwweDZEQTAxLAorICAgICgweDA3PDwyMCl8MHhFMzYyOCwvLyAyMDA2MDYyNyBBbnNvbiAweEUxNjg4LAorICAgICgweDA4PDwyMCl8MHgxMTYwMCwKKyAgICAoMHgwOTw8MjApfDB4OURDMDIsLy8gMjAwNjA2MjcgQW5vc24gMHg5NzYwMiwvLzB4OTlFMDIsIC8vMHg5QUUwMgorICAgICgweDBBPDwyMCl8MHg1ZGRiMCwgLy8gOTQxMjA2IEZvciBRQ09NIGludGVyZmVyZW5jZSAweDU4OGIwLC8vMHg1RERCMCwgOTQwNjAxIGFkaiAweDVhYTMwIGZvciBibHVldG9vdGgKKyAgICAoMHgwQjw8MjApfDB4RDk5MDAsCisgICAgKDB4MEM8PDIwKXwweDNGRkJELAorICAgICgweDBEPDwyMCl8MHhCMDAwMCwKKyAgICAoMHgwRjw8MjApfDB4RjAxQTAgLy8gMjAwNjA2MjcgQW5zb24gMHhGMDBBMAorfTsKKwordTMyIGFsMjIzMHNfcmZfZGF0YVtdICAgICA9Cit7CisgICAgKDB4MDA8PDIwKXwweDA5RUZDLAorICAgICgweDAxPDwyMCl8MHg4Q0NDQywKKyAgICAoMHgwMjw8MjApfDB4NDAwNTgsLy8gMjAwNjA0MTkgMHg0MDFEOCwKKyAgICAoMHgwMzw8MjApfDB4Q0ZGRjAsCisgICAgKDB4MDQ8PDIwKXwweDI0MTAwLC8vIDIwMDYwNDE5IDB4MjM4MDAsCisgICAgKDB4MDU8PDIwKXwweEEzQjJGLC8vIDIwMDYwNDE5IDB4QTNCNzIsCisgICAgKDB4MDY8PDIwKXwweDZEQTAxLAorICAgICgweDA3PDwyMCl8MHhFMzYyOCwvLyAyMDA2MDQxOSAweEUxNjg4LAorICAgICgweDA4PDwyMCl8MHgxMTYwMCwKKyAgICAoMHgwOTw8MjApfDB4OURDMDIsLy8gMjAwNjA0MTkgMHg5NzYwMiwvLzB4OTlFMDIsIC8vMHg5QUUwMgorICAgICgweDBBPDwyMCl8MHg1RERCMCwvLyA5NDEyMDYgRm9yIFFDT00gaW50ZXJmZXJlbmNlIDB4NTg4YjAsLy8weDVEREIwLCA5NDA2MDEgYWRqIDB4NWFhMzAgZm9yIGJsdWV0b290aAorICAgICgweDBCPDwyMCl8MHhEOTkwMCwKKyAgICAoMHgwQzw8MjApfDB4M0ZGQkQsCisgICAgKDB4MEQ8PDIwKXwweEIwMDAwLAorICAgICgweDBGPDwyMCl8MHhGMDFBMCAvLyAyMDA2MDQxOSAweEYwMEEwCit9OworCit1MzIgYWwyMjMwX2NoYW5uZWxfZGF0YV8yNFtdWzJdID0KK3sKKyAgICB7KDB4MDA8PDIwKXwweDA5RUZDLCAoMHgwMTw8MjApfDB4OENDQ0N9LCAvLyBjaGFubmUxIDAxCisgICAgeygweDAwPDwyMCl8MHgwOUVGQywgKDB4MDE8PDIwKXwweDhDQ0NEfSwgLy8gY2hhbm5lMSAwMgorICAgIHsoMHgwMDw8MjApfDB4MDlFN0MsICgweDAxPDwyMCl8MHg4Q0NDQ30sIC8vIGNoYW5uZTEgMDMKKyAgICB7KDB4MDA8PDIwKXwweDA5RTdDLCAoMHgwMTw8MjApfDB4OENDQ0R9LCAvLyBjaGFubmUxIDA0CisgICAgeygweDAwPDwyMCl8MHgwNUVGQywgKDB4MDE8PDIwKXwweDhDQ0NDfSwgLy8gY2hhbm5lMSAwNQorICAgIHsoMHgwMDw8MjApfDB4MDVFRkMsICgweDAxPDwyMCl8MHg4Q0NDRH0sIC8vIGNoYW5uZTEgMDYKKyAgICB7KDB4MDA8PDIwKXwweDA1RTdDLCAoMHgwMTw8MjApfDB4OENDQ0N9LCAvLyBjaGFubmUxIDA3CisgICAgeygweDAwPDwyMCl8MHgwNUU3QywgKDB4MDE8PDIwKXwweDhDQ0NEfSwgLy8gY2hhbm5lMSAwOAorICAgIHsoMHgwMDw8MjApfDB4MERFRkMsICgweDAxPDwyMCl8MHg4Q0NDQ30sIC8vIGNoYW5uZTEgMDkKKyAgICB7KDB4MDA8PDIwKXwweDBERUZDLCAoMHgwMTw8MjApfDB4OENDQ0R9LCAvLyBjaGFubmUxIDEwCisgICAgeygweDAwPDwyMCl8MHgwREU3QywgKDB4MDE8PDIwKXwweDhDQ0NDfSwgLy8gY2hhbm5lMSAxMQorICAgIHsoMHgwMDw8MjApfDB4MERFN0MsICgweDAxPDwyMCl8MHg4Q0NDRH0sIC8vIGNoYW5uZTEgMTIKKyAgICB7KDB4MDA8PDIwKXwweDAzRUZDLCAoMHgwMTw8MjApfDB4OENDQ0N9LCAvLyBjaGFubmUxIDEzCisgICAgeygweDAwPDwyMCl8MHgwM0U3QywgKDB4MDE8PDIwKXwweDg2NjY2fSAvLyBjaGFubmUxIDE0Cit9OworCisvLyBDdXJyZW50IHNldHRpbmcuIHUzMiBhaXJvaGFfcG93ZXJfZGF0YV8yNFtdID0geygweDA5PDwyMCl8MHg5MDIwMiwgKDB4MDk8PDIwKXwweDk2NjAyLCAoMHgwOTw8MjApfDB4OTc2MDJ9OworI2RlZmluZSBBSVJPSEFfVFhWR0FfTE9XX0lOREVYCQkzMQkJLy8gSW5kZXggZm9yIDB4OTAyMDIKKyNkZWZpbmUgQUlST0hBX1RYVkdBX01JRERMRV9JTkRFWAkxMgkJLy8gSW5kZXggZm9yIDB4OTY2MDIKKyNkZWZpbmUgQUlST0hBX1RYVkdBX0hJR0hfSU5ERVgJCTgJCS8vIEluZGV4IGZvciAweDk3NjAyIDEuMC4yNC4wIDEuMC4yOC4wCisvKgordTMyIGFpcm9oYV9wb3dlcl9kYXRhXzI0W10gPQoreworICAgIDB4OUZFMDIsICAgICAgICAgIC8vIE1heCAtIDAgZEIKKyAgICAweDlCRTAyLCAgICAgICAgICAvLyBNYXggLSAxIGRCCisgICAgMHg5REUwMiwgICAgICAgICAgLy8gTWF4IC0gMiBkQgorICAgIDB4OTlFMDIsICAgICAgICAgIC8vIE1heCAtIDMgZEIKKyAgICAweDlFRTAyLCAgICAgICAgICAvLyBNYXggLSA0IGRCCisgICAgMHg5QUUwMiwgICAgICAgICAgLy8gTWF4IC0gNSBkQgorICAgIDB4OUNFMDIsICAgICAgICAgIC8vIE1heCAtIDYgZEIKKyAgICAweDk4RTAyLCAgICAgICAgICAvLyBNYXggLSA3IGRCCisgICAgMHg5NzYwMiwgICAgICAgICAgLy8gTWF4IC0gOCBkQgorICAgIDB4OTM2MDIsICAgICAgICAgIC8vIE1heCAtIDkgZEIKKyAgICAweDk1NjAyLCAgICAgICAgICAvLyBNYXggLSAxMCBkQgorICAgIDB4OTE2MDIsICAgICAgICAgIC8vIE1heCAtIDExIGRCCisgICAgMHg5NjYwMiwgICAgICAgICAgLy8gTWF4IC0gMTIgZEIKKyAgICAweDkyNjAyLCAgICAgICAgICAvLyBNYXggLSAxMyBkQgorICAgIDB4OTQ2MDIsICAgICAgICAgIC8vIE1heCAtIDE0IGRCCisgICAgMHg5MDYwMiwgICAgICAgICAgLy8gTWF4IC0gMTUgZEIKKyAgICAweDk3QTAyLCAgICAgICAgICAvLyBNYXggLSAxNiBkQgorICAgIDB4OTNBMDIsICAgICAgICAgIC8vIE1heCAtIDE3IGRCCisgICAgMHg5NUEwMiwgICAgICAgICAgLy8gTWF4IC0gMTggZEIKKyAgICAweDkxQTAyLCAgICAgICAgICAvLyBNYXggLSAxOSBkQgorICAgIDB4OTZBMDIsICAgICAgICAgIC8vIE1heCAtIDIwIGRCCisgICAgMHg5MkEwMiwgICAgICAgICAgLy8gTWF4IC0gMjEgZEIKKyAgICAweDk0QTAyLCAgICAgICAgICAvLyBNYXggLSAyMiBkQgorICAgIDB4OTBBMDIsICAgICAgICAgIC8vIE1heCAtIDIzIGRCCisgICAgMHg5NzIwMiwgICAgICAgICAgLy8gTWF4IC0gMjQgZEIKKyAgICAweDkzMjAyLCAgICAgICAgICAvLyBNYXggLSAyNSBkQgorICAgIDB4OTUyMDIsICAgICAgICAgIC8vIE1heCAtIDI2IGRCCisgICAgMHg5MTIwMiwgICAgICAgICAgLy8gTWF4IC0gMjcgZEIKKyAgICAweDk2MjAyLCAgICAgICAgICAvLyBNYXggLSAyOCBkQgorICAgIDB4OTIyMDIsICAgICAgICAgIC8vIE1heCAtIDI5IGRCCisgICAgMHg5NDIwMiwgICAgICAgICAgLy8gTWF4IC0gMzAgZEIKKyAgICAweDkwMjAyICAgICAgICAgICAvLyBNYXggLSAzMSBkQgorfTsKKyovCisKKy8vIDIwMDQwOTI3IDEuMS42OS4xMDAwIHliamlhbmcKKy8vIGZyb20gSm9obgordTMyIGFsMjIzMF90eHZnYV9kYXRhW11bMl0gPQoreworCS8vdmFsdWUJLCBpbmRleAorCXsweDA5MDIwMiwgMH0sCisJezB4MDk0MjAyLCAyfSwKKwl7MHgwOTIyMDIsIDR9LAorCXsweDA5NjIwMiwgNn0sCisJezB4MDkxMjAyLCA4fSwKKwl7MHgwOTUyMDIsIDEwfSwKKwl7MHgwOTMyMDIsIDEyfSwKKwl7MHgwOTcyMDIsIDE0fSwKKwl7MHgwOTBBMDIsIDE2fSwKKwl7MHgwOTRBMDIsIDE4fSwKKwl7MHgwOTJBMDIsIDIwfSwKKwl7MHgwOTZBMDIsIDIyfSwKKwl7MHgwOTFBMDIsIDI0fSwKKwl7MHgwOTVBMDIsIDI2fSwKKwl7MHgwOTNBMDIsIDI4fSwKKwl7MHgwOTdBMDIsIDMwfSwKKwl7MHgwOTA2MDIsIDMyfSwKKwl7MHgwOTQ2MDIsIDM0fSwKKwl7MHgwOTI2MDIsIDM2fSwKKwl7MHgwOTY2MDIsIDM4fSwKKwl7MHgwOTE2MDIsIDQwfSwKKwl7MHgwOTU2MDIsIDQyfSwKKwl7MHgwOTM2MDIsIDQ0fSwKKwl7MHgwOTc2MDIsIDQ2fSwKKwl7MHgwOTBFMDIsIDQ4fSwKKwl7MHgwOThFMDIsIDQ5fSwKKwl7MHgwOTRFMDIsIDUwfSwKKwl7MHgwOUNFMDIsIDUxfSwKKwl7MHgwOTJFMDIsIDUyfSwKKwl7MHgwOUFFMDIsIDUzfSwKKwl7MHgwOTZFMDIsIDU0fSwKKwl7MHgwOUVFMDIsIDU1fSwKKwl7MHgwOTFFMDIsIDU2fSwKKwl7MHgwOTlFMDIsIDU3fSwKKwl7MHgwOTVFMDIsIDU4fSwKKwl7MHgwOURFMDIsIDU5fSwKKwl7MHgwOTNFMDIsIDYwfSwKKwl7MHgwOUJFMDIsIDYxfSwKKwl7MHgwOTdFMDIsIDYyfSwKKwl7MHgwOUZFMDIsIDYzfQorfTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRm9yIEFpcm9oYSBBTDcyMzAsIDIuNEdoeiBiYW5kCisvLyBFZGl0IGJ5IFRpZ2VyLCAoTWFyY2gsIDksIDIwMDUpCisvLyAyNGJpdCwgTVNCIGZpcnN0CisKKy8vY2hhbm5lbCBpbmRlcGVuZGVudCByZWdpc3RlcnM6Cit1MzIgYWw3MjMwX3JmX2RhdGFfMjRbXQk9Cit7CisJKDB4MDA8PDI0KXwweDAwMzc5MCwKKwkoMHgwMTw8MjQpfDB4MTMzMzMxLAorCSgweDAyPDwyNCl8MHg4NDFGRjIsCisJKDB4MDM8PDI0KXwweDNGREZBMywKKwkoMHgwNDw8MjQpfDB4N0ZENzg0LAorCSgweDA1PDwyNCl8MHg4MDJCNTUsCisJKDB4MDY8PDI0KXwweDU2QUYzNiwKKwkoMHgwNzw8MjQpfDB4Q0UwMjA3LAorCSgweDA4PDwyNCl8MHg2RUJDMDgsCisJKDB4MDk8PDI0KXwweDIyMUJCOSwKKwkoMHgwQTw8MjQpfDB4RTAwMDBBLAorCSgweDBCPDwyNCl8MHgwODA3MUIsCisJKDB4MEM8PDI0KXwweDAwMEEzQywKKwkoMHgwRDw8MjQpfDB4RkZGRkZELAorCSgweDBFPDwyNCl8MHgwMDAwMEUsCisJKDB4MEY8PDI0KXwweDFBQkE4RgorfTsKKwordTMyIGFsNzIzMF9jaGFubmVsX2RhdGFfMjRbXVsyXSA9Cit7CisgICAgeygweDAwPDwyNCl8MHgwMDM3OTAsICgweDAxPDwyNCl8MHgxMzMzMzF9LCAvLyBjaGFubmUxIDAxCisgICAgeygweDAwPDwyNCl8MHgwMDM3OTAsICgweDAxPDwyNCl8MHgxQjMzMzF9LCAvLyBjaGFubmUxIDAyCisgICAgeygweDAwPDwyNCl8MHgwMDM3OTAsICgweDAxPDwyNCl8MHgwMzMzMzF9LCAvLyBjaGFubmUxIDAzCisgICAgeygweDAwPDwyNCl8MHgwMDM3OTAsICgweDAxPDwyNCl8MHgwQjMzMzF9LCAvLyBjaGFubmUxIDA0CisgICAgeygweDAwPDwyNCl8MHgwMDM3QTAsICgweDAxPDwyNCl8MHgxMzMzMzF9LCAvLyBjaGFubmUxIDA1CisgICAgeygweDAwPDwyNCl8MHgwMDM3QTAsICgweDAxPDwyNCl8MHgxQjMzMzF9LCAvLyBjaGFubmUxIDA2CisgICAgeygweDAwPDwyNCl8MHgwMDM3QTAsICgweDAxPDwyNCl8MHgwMzMzMzF9LCAvLyBjaGFubmUxIDA3CisgICAgeygweDAwPDwyNCl8MHgwMDM3QTAsICgweDAxPDwyNCl8MHgwQjMzMzF9LCAvLyBjaGFubmUxIDA4CisgICAgeygweDAwPDwyNCl8MHgwMDM3QjAsICgweDAxPDwyNCl8MHgxMzMzMzF9LCAvLyBjaGFubmUxIDA5CisgICAgeygweDAwPDwyNCl8MHgwMDM3QjAsICgweDAxPDwyNCl8MHgxQjMzMzF9LCAvLyBjaGFubmUxIDEwCisgICAgeygweDAwPDwyNCl8MHgwMDM3QjAsICgweDAxPDwyNCl8MHgwMzMzMzF9LCAvLyBjaGFubmUxIDExCisgICAgeygweDAwPDwyNCl8MHgwMDM3QjAsICgweDAxPDwyNCl8MHgwQjMzMzF9LCAvLyBjaGFubmUxIDEyCisgICAgeygweDAwPDwyNCl8MHgwMDM3QzAsICgweDAxPDwyNCl8MHgxMzMzMzF9LCAvLyBjaGFubmUxIDEzCisJeygweDAwPDwyNCl8MHgwMDM3QzAsICgweDAxPDwyNCl8MHgwNjY2NjF9ICAvLyBjaGFubmVsIDE0Cit9OworCisvL2NoYW5uZWwgaW5kZXBlbmRlbnQgcmVnaXN0ZXJzOgordTMyIGFsNzIzMF9yZl9kYXRhXzUwW10JPQoreworCSgweDAwPDwyNCl8MHgwRkY1MjAsCisJKDB4MDE8PDI0KXwweDAwMDAwMSwKKwkoMHgwMjw8MjQpfDB4NDUxRkUyLAorCSgweDAzPDwyNCl8MHg1RkRGQTMsCisJKDB4MDQ8PDI0KXwweDZGRDc4NCwKKwkoMHgwNTw8MjQpfDB4ODUzRjU1LAorCSgweDA2PDwyNCl8MHg1NkFGMzYsCisJKDB4MDc8PDI0KXwweENFMDIwNywKKwkoMHgwODw8MjQpfDB4NkVCQzA4LAorCSgweDA5PDwyNCl8MHgyMjFCQjksCisJKDB4MEE8PDI0KXwweEUwNjAwQSwKKwkoMHgwQjw8MjQpfDB4MDgwNDRCLAorCSgweDBDPDwyNCl8MHgwMDE0M0MsCisJKDB4MEQ8PDI0KXwweEZGRkZGRCwKKwkoMHgwRTw8MjQpfDB4MDAwMDBFLAorCSgweDBGPDwyNCl8MHgxMkJBQ0YgLy81R2h6IGRlZmF1bHQgc3RhdGUKK307CisKK3UzMiBhbDcyMzBfY2hhbm5lbF9kYXRhXzVbXVs0XSA9Cit7CisJLy9jaGFubmVsIGRlcGVuZGVudCByZWdpc3RlcnM6IDB4MDAsIDB4MDEgYW5kIDB4MDQKKwkvLzExSiA9PT09PT09PT09PQorCXsxODQsICgweDAwPDwyNCl8MHgwRkY1MjAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDE4NAorCXsxODgsICgweDAwPDwyNCl8MHgwRkY1MjAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE4OAorCXsxOTIsICgweDAwPDwyNCl8MHgwRkY1MzAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE5MgorCXsxOTYsICgweDAwPDwyNCl8MHgwRkY1MzAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDE5NgorCXs4LCAgICgweDAwPDwyNCl8MHgwRkY1NDAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDAwOAorCXsxMiwgICgweDAwPDwyNCl8MHgwRkY1NDAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDAxMgorCXsxNiwgICgweDAwPDwyNCl8MHgwRkY1NTAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDAxNgorCXszNCwgICgweDAwPDwyNCl8MHgwRkY1NjAsICgweDAxPDwyNCl8MHgwNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDAzNAorCXszOCwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgxMDAwMDEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDAzOAorCXs0MiwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgxQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA0MgorCXs0NiwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgwNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA0NgorCS8vMTEgQS9IID09PT09PT09PQorCXszNiwgICgweDAwPDwyNCl8MHgwRkY1NjAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDAzNgorCXs0MCwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA0MAorCXs0NCwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDA0NAorCXs0OCwgICgweDAwPDwyNCl8MHgwRkY1NzAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA0OAorCXs1MiwgICgweDAwPDwyNCl8MHgwRkY1ODAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA1MgorCXs1NiwgICgweDAwPDwyNCl8MHgwRkY1ODAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDA1NgorCXs2MCwgICgweDAwPDwyNCl8MHgwRkY1ODAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA2MAorCXs2NCwgICgweDAwPDwyNCl8MHgwRkY1OTAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDA2NAorCXsxMDAsICgweDAwPDwyNCl8MHgwRkY1QzAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEwMAorCXsxMDQsICgweDAwPDwyNCl8MHgwRkY1QzAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDEwNAorCXsxMDgsICgweDAwPDwyNCl8MHgwRkY1QzAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEwOAorCXsxMTIsICgweDAwPDwyNCl8MHgwRkY1RDAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDExMgorCXsxMTYsICgweDAwPDwyNCl8MHgwRkY1RDAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDExNgorCXsxMjAsICgweDAwPDwyNCl8MHgwRkY1RDAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEyMAorCXsxMjQsICgweDAwPDwyNCl8MHgwRkY1RTAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEyNAorCXsxMjgsICgweDAwPDwyNCl8MHgwRkY1RTAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDEyOAorCXsxMzIsICgweDAwPDwyNCl8MHgwRkY1RTAsICgweDAxPDwyNCl8MHgwQUFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEzMgorCXsxMzYsICgweDAwPDwyNCl8MHgwRkY1RjAsICgweDAxPDwyNCl8MHgxNTU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDEzNgorCXsxNDAsICgweDAwPDwyNCl8MHgwRkY1RjAsICgweDAxPDwyNCl8MHgwMDAwMDEsICgweDA0PDwyNCl8MHg2N0Y3ODR9LCAvLyBjaGFubmVsIDE0MAorCXsxNDksICgweDAwPDwyNCl8MHgwRkY2MDAsICgweDAxPDwyNCl8MHgxODAwMDEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE0OQorCXsxNTMsICgweDAwPDwyNCl8MHgwRkY2MDAsICgweDAxPDwyNCl8MHgwMkFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE1MworCXsxNTcsICgweDAwPDwyNCl8MHgwRkY2MDAsICgweDAxPDwyNCl8MHgwRDU1NTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE1NworCXsxNjEsICgweDAwPDwyNCl8MHgwRkY2MTAsICgweDAxPDwyNCl8MHgxODAwMDEsICgweDA0PDwyNCl8MHg3N0Y3ODR9LCAvLyBjaGFubmVsIDE2MQorCXsxNjUsICgweDAwPDwyNCl8MHgwRkY2MTAsICgweDAxPDwyNCl8MHgwMkFBQTEsICgweDA0PDwyNCl8MHg3N0Y3ODR9ICAvLyBjaGFubmVsIDE2NQorfTsKKworLy87IFJGIENhbGlicmF0aW9uIDw9PT0gUmVnaXN0ZXIgMHgwRgorLy8weDBGIDB4MUFCQThGOyBzdGFydCBmcm9tIDIuNEdoeiBkZWZhdWx0IHN0YXRlCisvLzB4MEYgMHg5QUJBOEY7IFRYREMgY29tcGVuc2F0aW9uCisvLzB4MEYgMHgzQUJBOEY7IFJYRklMIGFkanVzdG1lbnQKKy8vMHgwRiAweDFBQkE4RjsgcmVzdG9yZSAyLjRHaHogZGVmYXVsdCBzdGF0ZQorCisvLztUWFZHQSBNYXBwaW5nIFRhYmxlIDw9PT0gUmVnaXN0ZXIgMHgwQgordTMyIGFsNzIzMF90eHZnYV9kYXRhW11bMl0gPQoreworCXsweDA4MDQwQiwgMH0sIC8vVFhWR0E9MDsKKwl7MHgwODA0MUIsIDF9LCAvL1RYVkdBPTE7CisJezB4MDgwNDJCLCAyfSwgLy9UWFZHQT0yOworCXsweDA4MDQzQiwgM30sIC8vVFhWR0E9MzsKKwl7MHgwODA0NEIsIDR9LCAvL1RYVkdBPTQ7CisJezB4MDgwNDVCLCA1fSwgLy9UWFZHQT01OworCXsweDA4MDQ2QiwgNn0sIC8vVFhWR0E9NjsKKwl7MHgwODA0N0IsIDd9LCAvL1RYVkdBPTc7CisJezB4MDgwNDhCLCA4fSwgLy9UWFZHQT04OworCXsweDA4MDQ5QiwgOX0sIC8vVFhWR0E9OTsKKwl7MHgwODA0QUIsIDEwfSwgLy9UWFZHQT0xMDsKKwl7MHgwODA0QkIsIDExfSwgLy9UWFZHQT0xMTsKKwl7MHgwODA0Q0IsIDEyfSwgLy9UWFZHQT0xMjsKKwl7MHgwODA0REIsIDEzfSwgLy9UWFZHQT0xMzsKKwl7MHgwODA0RUIsIDE0fSwgLy9UWFZHQT0xNDsKKwl7MHgwODA0RkIsIDE1fSwgLy9UWFZHQT0xNTsKKwl7MHgwODA1MEIsIDE2fSwgLy9UWFZHQT0xNjsKKwl7MHgwODA1MUIsIDE3fSwgLy9UWFZHQT0xNzsKKwl7MHgwODA1MkIsIDE4fSwgLy9UWFZHQT0xODsKKwl7MHgwODA1M0IsIDE5fSwgLy9UWFZHQT0xOTsKKwl7MHgwODA1NEIsIDIwfSwgLy9UWFZHQT0yMDsKKwl7MHgwODA1NUIsIDIxfSwgLy9UWFZHQT0yMTsKKwl7MHgwODA1NkIsIDIyfSwgLy9UWFZHQT0yMjsKKwl7MHgwODA1N0IsIDIzfSwgLy9UWFZHQT0yMzsKKwl7MHgwODA1OEIsIDI0fSwgLy9UWFZHQT0yNDsKKwl7MHgwODA1OUIsIDI1fSwgLy9UWFZHQT0yNTsKKwl7MHgwODA1QUIsIDI2fSwgLy9UWFZHQT0yNjsKKwl7MHgwODA1QkIsIDI3fSwgLy9UWFZHQT0yNzsKKwl7MHgwODA1Q0IsIDI4fSwgLy9UWFZHQT0yODsKKwl7MHgwODA1REIsIDI5fSwgLy9UWFZHQT0yOTsKKwl7MHgwODA1RUIsIDMwfSwgLy9UWFZHQT0zMDsKKwl7MHgwODA1RkIsIDMxfSwgLy9UWFZHQT0zMTsKKwl7MHgwODA2MEIsIDMyfSwgLy9UWFZHQT0zMjsKKwl7MHgwODA2MUIsIDMzfSwgLy9UWFZHQT0zMzsKKwl7MHgwODA2MkIsIDM0fSwgLy9UWFZHQT0zNDsKKwl7MHgwODA2M0IsIDM1fSwgLy9UWFZHQT0zNTsKKwl7MHgwODA2NEIsIDM2fSwgLy9UWFZHQT0zNjsKKwl7MHgwODA2NUIsIDM3fSwgLy9UWFZHQT0zNzsKKwl7MHgwODA2NkIsIDM4fSwgLy9UWFZHQT0zODsKKwl7MHgwODA2N0IsIDM5fSwgLy9UWFZHQT0zOTsKKwl7MHgwODA2OEIsIDQwfSwgLy9UWFZHQT00MDsKKwl7MHgwODA2OUIsIDQxfSwgLy9UWFZHQT00MTsKKwl7MHgwODA2QUIsIDQyfSwgLy9UWFZHQT00MjsKKwl7MHgwODA2QkIsIDQzfSwgLy9UWFZHQT00MzsKKwl7MHgwODA2Q0IsIDQ0fSwgLy9UWFZHQT00NDsKKwl7MHgwODA2REIsIDQ1fSwgLy9UWFZHQT00NTsKKwl7MHgwODA2RUIsIDQ2fSwgLy9UWFZHQT00NjsKKwl7MHgwODA2RkIsIDQ3fSwgLy9UWFZHQT00NzsKKwl7MHgwODA3MEIsIDQ4fSwgLy9UWFZHQT00ODsKKwl7MHgwODA3MUIsIDQ5fSwgLy9UWFZHQT00OTsKKwl7MHgwODA3MkIsIDUwfSwgLy9UWFZHQT01MDsKKwl7MHgwODA3M0IsIDUxfSwgLy9UWFZHQT01MTsKKwl7MHgwODA3NEIsIDUyfSwgLy9UWFZHQT01MjsKKwl7MHgwODA3NUIsIDUzfSwgLy9UWFZHQT01MzsKKwl7MHgwODA3NkIsIDU0fSwgLy9UWFZHQT01NDsKKwl7MHgwODA3N0IsIDU1fSwgLy9UWFZHQT01NTsKKwl7MHgwODA3OEIsIDU2fSwgLy9UWFZHQT01NjsKKwl7MHgwODA3OUIsIDU3fSwgLy9UWFZHQT01NzsKKwl7MHgwODA3QUIsIDU4fSwgLy9UWFZHQT01ODsKKwl7MHgwODA3QkIsIDU5fSwgLy9UWFZHQT01OTsKKwl7MHgwODA3Q0IsIDYwfSwgLy9UWFZHQT02MDsKKwl7MHgwODA3REIsIDYxfSwgLy9UWFZHQT02MTsKKwl7MHgwODA3RUIsIDYyfSwgLy9UWFZHQT02MjsKKwl7MHgwODA3RkIsIDYzfSwgLy9UWFZHQT02MzsKK307CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy87IFc4OVJGMjQyIFJGSUMgU1BJIHByb2dyYW1taW5nIGluaXRpYWwgZGF0YQorLy87IFdpbmJvbmQgV0xBTiAxMWcgUkZJQyBCQi1TUEkgcmVnaXN0ZXIgLS0gdmVyc2lvbiBGQTU5NzZBIHJldiAxLjNiCisvLzsgVXBkYXRlIERhdGU6IE9jb3RiZXIgMywgMjAwNSBieSBQUDEwIEhzaWFuZy1UZSBIbworLy87CisvLzsgVmVyc2lvbiAxLjNiIHJldmlzaW9uIGl0ZW1zOiAoT2N0LiAxLCAyMDA1IGJ5IEhUSG8pIGZvciBGQTU5NzZBCit1MzIgdzg5cmYyNDJfcmZfZGF0YVtdICAgICA9Cit7CisgICAgKDB4MDA8PDI0KXwweEY4NjEwMCwgLy8gMjAwNjA3MjEgMHhGODYxMDAsIC8vOyAzRTE4NDsgTU9EQSAgKDB4MDApIC0tIE5vcm1hbCBtb2RlIDsgY2FsaWJyYXRpb24gb2ZmCisgICAgKDB4MDE8PDI0KXwweEVGRkZDMiwgLy87IDNCRkZGOyBNT0RCICAoMHgwMSkgLS0gdHVybiBvZmYgUlNTSSwgYW5kIG90aGVyIGNpcmN1aXRzIGFyZSB0dXJuZWQgb24KKyAgICAoMHgwMjw8MjQpfDB4MTAyNTA0LCAvLzsgMDQwOTQ7IEZTRVQgICgweDAyKSAtLSBkZWZhdWx0IDIwTUh6IGNyeXN0YWwgOyBJY21wPTEuNW1BCisgICAgKDB4MDM8PDI0KXwweDAyNjI4NiwgLy87IDAwOThBOyBGQ0hOICAoMHgwMykgLS0gZGVmYXVsdCBDSDcsIDI0NDJNSHoKKyAgICAoMHgwNDw8MjQpfDB4MDAwMjA4LCAvLyAyMDA2MDYxMi4xLmEgMHgwMDAyQzgsIC8vIDIwMDUwODE4IC8vIDIwMDUwODE2IDB4MDAwMzg4CisJCQkJCQkgLy87IDAyMDA4OyBGQ0FMICAoMHgwNCkgLS0gWFRBTCBGcmVxIFRyaW09MDAxMDAwIChzb2NrZXQgYm9hcmQjMSk7IEZBNTk3NkFZR192MS4zQworICAgICgweDA1PDwyNCl8MHgyNEM2MEEsIC8vIDIwMDYwNjEyLjEuYSAweDI0QzU4QSwgLy8gOTQxMDAzIDB4MjRDNDhBLCAvLyAyMDA1MDgxOC4yIDB4MjQ4NDhBLCAvLyAyMDA1MDgxOCAvLyAyMDA1MDgxNiAweDI0QzQ4QQorCQkJCQkJIC8vOyAwOTMxNjsgR0FOQSAgKDB4MDUpIC0tIFRYIFZHQSBkZWZhdWx0IChUWFZHQT0weDE4KDEyKSkgJiBUWEdQSz0xMTAgOyBGQTU5NzZBXzEuM0QKKyAgICAoMHgwNjw8MjQpfDB4MzQzMkNDLCAvLyA5NDEwMDMgMHgyNkMzNEMsIC8vIDIwMDUwODE4IDB4MDZCNDBDCisJCQkJCQkgLy87IDBEMENCOyBHQU5CICAoMHgwNikgLS0gUlhEQyhEQyBvZmZzZXQpIG9uOyBMTkE9MTE7IFJYVkdBPTAwMTAxMSgxMSkgOyBSWEZMU1c9MTEoMDEwMDAxKTsgUlhHUEs9MDA7IFJYR0NGPTAwOyAtNTBkQm0gaW5wdXQKKyAgICAoMHgwNzw8MjQpfDB4MEM2OENFLCAvLyAyMDA1MDgxOC4yIDB4MEM2NkNFLCAvLyAyMDA1MDgxOCAvLyAyMDA1MDgxNiAweDBDNjhDRQorCQkJCQkJIC8vOyAwMzFBMzsgRklMVCAgKDB4MDcpIC0tIFRYL1JYIGZpbHRlciB3aXRoIGF1dG8tdHVuaW5nOyBURkxCVz0wMTE7IFJGTEJXPTEwMAorICAgICgweDA4PDwyNCl8MHgxMDAwMTAsIC8vOyAwNDAwMDsgVENBTCAgKDB4MDgpIC0tIC8vZm9yIExPCisgICAgKDB4MDk8PDI0KXwweDAwNDAxMiwgLy8gMjAwNjA2MTIuMS5hIDB4NkU0MDEyLCAvLyAweDAwNDAxMiwKKwkJCQkJCSAvLzsgMUI5MDA7IFJDQUxBICgweDA5KSAtLSBGQVNUUz0xMTsgSFBERT0wMSAoMTAwbnNlYyk7IFNFSFA9MSAoc2VsZWN0IEIwIHBpbj1SWEhQKTsgUlhIUD0xIChUdXJuIG9uIFJYSFAgZnVuY3Rpb24pKEZBNTk3NkFfMS4zQykKKyAgICAoMHgwQTw8MjQpfDB4NzA0MDE0LCAvLzsgMUMxMDA7IFJDQUxCICgweDBBKQorICAgICgweDBCPDwyNCl8MHgxOEJERDYsIC8vIDk0MTAwMyAweDE4MDVENiwgLy8gMjAwNTA4MTguMiAweDE4MDFENiwgLy8gMjAwNTA4MTggLy8gMjAwNTA4MTYgMHgxODA1RDYKKwkJCQkJCSAvLzsgMDYyRjc7IElRQ0FMICgweDBCKSAtLSBUdXJuIG9uIExPIHBoYXNlIHR1bmVyPTAxMTEgJiBSWC1MTyBwaGFzZSA9IDAxMTE7IEZBNTk3NkFfMS4zQiAoMjAwNS8wOS8yOSkKKyAgICAoMHgwQzw8MjQpfDB4NTc1NTU4LCAvLyAyMDA1MDgxOC4yIDB4NTU1NTU4LCAvLyAyMDA1MDgxOCAvLyAyMDA1MDgxNiAweDU3NTU1OAorCQkJCQkJIC8vOyAxNUQ1NSA7IElCU0EgICgweDBDKSAtLSBJRlByZSA9MTEgOyBUQzUzNzZBX3YxLjNBIGZvciBjb3JuZXIKKyAgICAoMHgwRDw8MjQpfDB4NTU1NDVBLCAvLyAyMDA2MDYxMi4xLmEgMHg1NTU1NUEsCisJCQkJCQkgLy87IDE1NTU1IDsgSUJTQiAgKDB4MEQpCisgICAgKDB4MEU8PDI0KXwweDU1NTdEQywgLy8gMjAwNjA2MTIuMS5hIDB4NTU1NTVDLCAvLyA5NDEwMDMgMHg1NTU3REMsCisJCQkJCQkgLy87IDE1NTVGIDsgSUJTQyAgKDB4MEUpIC0tIElSTE5BICYgSVJMTkIgKFBUQVQgJiBDb25zdCBjdXJyZW50KT0wMS8wMTsgRkE1OTc2Ql8xLjNGICgyMDA1LzExLzI1KQorCSgweDEwPDwyNCl8MHgwMDBDMjAsIC8vIDk0MTAwMyAweDAwMDAyMCwgLy8gMjAwNTA4MTgKKwkJCQkJCSAvLzsgMDAwMzAgOyBUTU9EQSAoMHgxMCkgLS0gTE5BX2dhaW5fc3RlcD0wMDExIDsgTE5BPTE1LzE2ZEIKKwkoMHgxMTw8MjQpfDB4MEMwMDIyLCAvLyA5NDEwMDMgMHgwMzAwMjIgIC8vIDIwMDUwODE4LjIgMHgwMzAwMjIgIC8vIDIwMDUwODE4IC8vIDIwMDUwODE2IDB4MEMwMDIyCisJCQkJCQkgLy87IDAzMDAwIDsgVE1PREIgKDB4MTEpIC0tIFR1cm4gT04gUlgtUSBwYXRoIFRlc3QgU3dpdGNoOyBUbyBpbXByb3ZlIElRIHBhdGggZ3JvdXAgZGVsYXkgKEZBNTk3NkFfMS4zQykKKwkoMHgxMjw8MjQpfDB4MDAwMDI0ICAvLyAyMDA2MDYxMi4xLmEgMHgwMDE4MjQgIC8vIDk0MTAwMyBhZGQKKwkJCQkJCSAvLzsgVE1PREMgKDB4MTIpIC0tIFR1cm4gT0ZGIFRlbXBlYXJ1cmUgc2Vuc29yCit9OworCit1MzIgdzg5cmYyNDJfY2hhbm5lbF9kYXRhXzI0W11bMl0gPQoreworICAgIHsoMHgwMzw8MjQpfDB4MDI1QjA2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwMQorICAgIHsoMHgwMzw8MjQpfDB4MDI1QzQ2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwMgorICAgIHsoMHgwMzw8MjQpfDB4MDI1RDg2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwMworICAgIHsoMHgwMzw8MjQpfDB4MDI1RUM2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwNAorICAgIHsoMHgwMzw8MjQpfDB4MDI2MDA2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwNQorICAgIHsoMHgwMzw8MjQpfDB4MDI2MTQ2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwNgorICAgIHsoMHgwMzw8MjQpfDB4MDI2Mjg2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwNworICAgIHsoMHgwMzw8MjQpfDB4MDI2M0M2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwOAorICAgIHsoMHgwMzw8MjQpfDB4MDI2NTA2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAwOQorICAgIHsoMHgwMzw8MjQpfDB4MDI2NjQ2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAxMAorICAgIHsoMHgwMzw8MjQpfDB4MDI2Nzg2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAxMQorICAgIHsoMHgwMzw8MjQpfDB4MDI2OEM2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAxMgorICAgIHsoMHgwMzw8MjQpfDB4MDI2QTA2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSwgLy8gY2hhbm5lMSAxMworICAgIHsoMHgwMzw8MjQpfDB4MDI2RDA2LCAoMHgwNDw8MjQpfDB4MDgwNDA4fSAgLy8gY2hhbm5lMSAxNAorfTsKKwordTMyIHc4OXJmMjQyX3Bvd2VyX2RhdGFfMjRbXSA9IHsoMHgwNTw8MjQpfDB4MjRDNDhBLCAoMHgwNTw8MjQpfDB4MjRDNDhBLCAoMHgwNTw8MjQpfDB4MjRDNDhBfTsKKworLy8gMjAwNjAzMTUuNiBFbmxhcmdlIGZvciBuZXcgc2NhbGUKKy8vIDIwMDYwMzE2LjYgMjAwNjA2MTkuMi5hIGFkZCBtYXBwaW5nIGFycmF5Cit1MzIgdzg5cmYyNDJfdHh2Z2Ffb2xkX21hcHBpbmdbXVsyXSA9Cit7CisJezAsIDB9ICwgLy8gTmV3IDwtPiBPbGQKKwl7MSwgMX0gLAorCXsyLCAyfSAsCisJezMsIDN9ICwKKwl7NCwgNH0gLAorCXs2LCA1fSAsCisJezgsIDYgfSwKKwl7MTAsIDcgfSwKKwl7MTIsIDggfSwKKwl7MTQsIDkgfSwKKwl7MTYsIDEwfSwKKwl7MTgsIDExfSwKKwl7MjAsIDEyfSwKKwl7MjIsIDEzfSwKKwl7MjQsIDE0fSwKKwl7MjYsIDE1fSwKKwl7MjgsIDE2fSwKKwl7MzAsIDE3fSwKKwl7MzIsIDE4fSwKKwl7MzQsIDE5fSwKKworCit9OworCisvLyAyMDA2MDYxOS4zIG1vZGlmeSBmcm9tIEJydWNlJ3MgbWFpbAordTMyIHc4OXJmMjQyX3R4dmdhX2RhdGFbXVs1XSA9Cit7CisJLy9sb3cgZ2FpbiBtb2RlCisJeyAoMHgwNTw8MjQpfDB4MjRDMDBBLCAwLCAweDAwMjkyMzE1LCAweDA4MDBGRUZGLCAweDUyNTIzMTMxIH0sLy8gIDsgbWluIGdhaW4KKwl7ICgweDA1PDwyNCl8MHgyNEM4MEEsIDEsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NTI1MjMxMzEgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEMwNEEsIDIsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NTI1MjMxMzEgfSwvLyAgKGRlZmF1bHQpICsxNGRCbSAoQU5UKQorCXsgKDB4MDU8PDI0KXwweDI0Qzg0QSwgMywgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg1MjUyMzEzMSB9LAorCisJLy9UWFZHQT0weDEwCisJeyAoMHgwNTw8MjQpfDB4MjRDNDBBLCA0LCAweDAwMjkyMzE1LCAweDA4MDBGRUZGLCAweDYwNjAzODM4IH0sCisJeyAoMHgwNTw8MjQpfDB4MjRDNDBBLCA1LCAweDAwMjYyMTE0LCAweDA3MDBGRUZGLCAweDY1NjUzQjNCIH0sCisKKwkvL1RYVkdBPTB4MTEKKwl7ICgweDA1PDwyNCl8MHgyNEM0NEEsIDYsIDB4MDAyNDFGMTMsIDB4MDcwMEZGRkYsIDB4NTg1ODMzMzMgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEM0NEEsIDcsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NUU1RTM3MzcgfSwKKworCS8vVFhWR0E9MHgxMgorCXsgKDB4MDU8PDI0KXwweDI0QzQ4QSwgOCwgMHgwMDI2MjExNCwgMHgwNzAwRkVGRiwgMHg1MzUzMzAzMCB9LAorCXsgKDB4MDU8PDI0KXwweDI0QzQ4QSwgOSwgMHgwMDI0MUYxMywgMHgwNzAwRkZGRiwgMHg1OTU5MzQzNCB9LAorCisJLy9UWFZHQT0weDEzCisJeyAoMHgwNTw8MjQpfDB4MjRDNENBLCAxMCwgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg1MjUyMzAzMCB9LAorCXsgKDB4MDU8PDI0KXwweDI0QzRDQSwgMTEsIDB4MDAyNjIxMTQsIDB4MDcwMEZFRkYsIDB4NTY1NjMyMzIgfSwKKworCS8vVFhWR0E9MHgxNAorCXsgKDB4MDU8PDI0KXwweDI0QzUwQSwgMTIsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NTQ1NDMxMzEgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEM1MEEsIDEzLCAweDAwMjYyMTE0LCAweDA3MDBGRUZGLCAweDU4NTgzNDM0IH0sCisKKwkvL1RYVkdBPTB4MTUKKwl7ICgweDA1PDwyNCl8MHgyNEM1NEEsIDE0LCAweDAwMjkyMzE1LCAweDA4MDBGRUZGLCAweDU0NTQzMTMxIH0sCisJeyAoMHgwNTw8MjQpfDB4MjRDNTRBLCAxNSwgMHgwMDI2MjExNCwgMHgwNzAwRkVGRiwgMHg1OTU5MzQzNCB9LAorCisJLy9UWFZHQT0weDE2CisJeyAoMHgwNTw8MjQpfDB4MjRDNThBLCAxNiwgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg1NTU1MzEzMSB9LAorCXsgKDB4MDU8PDI0KXwweDI0QzU4QSwgMTcsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NUI1QjM1MzUgfSwKKworCS8vVFhWR0E9MHgxNworCXsgKDB4MDU8PDI0KXwweDI0QzVDQSwgMTgsIDB4MDAyNjIxMTQsIDB4MDcwMEZFRkYsIDB4NTE1MTJGMkYgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEM1Q0EsIDE5LCAweDAwMjQxRjEzLCAweDA3MDBGRkZGLCAweDU1NTUzMTMxIH0sCisKKwkvL1RYVkdBPTB4MTgKKwl7ICgweDA1PDwyNCl8MHgyNEM2MEEsIDIwLCAweDAwMjkyMzE1LCAweDA4MDBGRUZGLCAweDRGNEYyRTJFIH0sCisJeyAoMHgwNTw8MjQpfDB4MjRDNjBBLCAyMSwgMHgwMDI2MjExNCwgMHgwNzAwRkVGRiwgMHg1MzUzMzAzMCB9LAorCisJLy9UWFZHQT0weDE5CisJeyAoMHgwNTw8MjQpfDB4MjRDNjRBLCAyMiwgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg0RTRFMkQyRCB9LAorCXsgKDB4MDU8PDI0KXwweDI0QzY0QSwgMjMsIDB4MDAyNjIxMTQsIDB4MDcwMEZFRkYsIDB4NTM1MzMwMzAgfSwKKworCS8vVFhWR0E9MHgxQQorCXsgKDB4MDU8PDI0KXwweDI0QzY4QSwgMjQsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NTA1MDJFMkUgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEM2OEEsIDI1LCAweDAwMjYyMTE0LCAweDA3MDBGRUZGLCAweDU1NTUzMTMxIH0sCisKKwkvL1RYVkdBPTB4MUIKKwl7ICgweDA1PDwyNCl8MHgyNEM2Q0EsIDI2LCAweDAwMjYyMTE0LCAweDA3MDBGRUZGLCAweDUzNTMzMDMwIH0sCisJeyAoMHgwNTw8MjQpfDB4MjRDNkNBLCAyNywgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg1QTVBMzQzNCB9LAorCisJLy9UWFZHQT0weDFDCisJeyAoMHgwNTw8MjQpfDB4MjRDNzBBLCAyOCwgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg1NTU1MzEzMSB9LAorCXsgKDB4MDU8PDI0KXwweDI0QzcwQSwgMjksIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NUQ1RDM2MzYgfSwKKworCS8vVFhWR0E9MHgxRAorCXsgKDB4MDU8PDI0KXwweDI0Qzc0QSwgMzAsIDB4MDAyOTIzMTUsIDB4MDgwMEZFRkYsIDB4NUY1RjM3MzcgfSwKKwl7ICgweDA1PDwyNCl8MHgyNEM3NEEsIDMxLCAweDAwMjYyMTE0LCAweDA3MDBGRUZGLCAweDY1NjUzQjNCIH0sCisKKwkvL1RYVkdBPTB4MUUKKwl7ICgweDA1PDwyNCl8MHgyNEM3OEEsIDMyLCAweDAwMjkyMzE1LCAweDA4MDBGRUZGLCAweDY2NjYzQjNCIH0sCisJeyAoMHgwNTw8MjQpfDB4MjRDNzhBLCAzMywgMHgwMDI2MjExNCwgMHgwNzAwRkVGRiwgMHg3MDcwNDE0MSB9LAorCisJLy9UWFZHQT0weDFGCisJeyAoMHgwNTw8MjQpfDB4MjRDN0NBLCAzNCwgMHgwMDI5MjMxNSwgMHgwODAwRkVGRiwgMHg3MjcyNDI0MiB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBVeHhfUmVhZEV0aGVybmV0QWRkcmVzcyAtLQorLy8KKy8vICBSb3V0aW5lIERlc2NyaXB0aW9uOgorLy8gICAgUmVhZHMgaW4gdGhlIEV0aGVybmV0IGFkZHJlc3MgZnJvbSB0aGUgSUMuCisvLworLy8gIEFyZ3VtZW50czoKKy8vICAgIHBId0RhdGEgICAgICAgIC0gVGhlIHBId0RhdGEgc3RydWN0dXJlCisvLworLy8gIFJldHVybiBWYWx1ZToKKy8vCisvLyAgICBUaGUgYWRkcmVzcyBpcyBzdG9yZWQgaW4gRXRoZXJuZXRJREFkZHIuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQKK1V4eF9SZWFkRXRoZXJuZXRBZGRyZXNzKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwl1MzIJbHRtcDsKKworCS8vIFJlYWRpbmcgRXRoZXJuZXQgYWRkcmVzcyBmcm9tIEVFUFJPTSBhbmQgc2V0IGludG8gaGFyZHdhcmUgZHVlIHRvIE1BQyBhZGRyZXNzIG1heWJlIGNoYW5nZS4KKwkvLyBPbmx5IHVucGx1ZyBhbmQgcGx1ZyBhZ2FpbiBjYW4gbWFrZSBoYXJkd2FyZSByZWFkIEVFUFJPTSBhZ2Fpbi4gMjAwNjA3MjcKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2I0LCAweDA4MDAwMDAwICk7IC8vIFN0YXJ0IEVFUFJPTSBhY2Nlc3MgKyBSZWFkICsgYWRkcmVzcygweDBkKQorCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MDNiNCwgJmx0bXAgKTsKKwkqKFBVU0hPUlQpcEh3RGF0YS0+UGVybWFuZW50TWFjQWRkcmVzcyA9IGNwdV90b19sZTE2KCh1MTYpbHRtcCk7IC8vMjAwNjA5MjYgYW5zb24ncyBlbmRpYW4KKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2I0LCAweDA4MDEwMDAwICk7IC8vIFN0YXJ0IEVFUFJPTSBhY2Nlc3MgKyBSZWFkICsgYWRkcmVzcygweDBkKQorCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MDNiNCwgJmx0bXAgKTsKKwkqKFBVU0hPUlQpKHBId0RhdGEtPlBlcm1hbmVudE1hY0FkZHJlc3MgKyAyKSA9IGNwdV90b19sZTE2KCh1MTYpbHRtcCk7IC8vMjAwNjA5MjYgYW5zb24ncyBlbmRpYW4KKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2I0LCAweDA4MDIwMDAwICk7IC8vIFN0YXJ0IEVFUFJPTSBhY2Nlc3MgKyBSZWFkICsgYWRkcmVzcygweDBkKQorCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MDNiNCwgJmx0bXAgKTsKKwkqKFBVU0hPUlQpKHBId0RhdGEtPlBlcm1hbmVudE1hY0FkZHJlc3MgKyA0KSA9IGNwdV90b19sZTE2KCh1MTYpbHRtcCk7IC8vMjAwNjA5MjYgYW5zb24ncyBlbmRpYW4KKwkqKFBVU0hPUlQpKHBId0RhdGEtPlBlcm1hbmVudE1hY0FkZHJlc3MgKyA2KSA9IDA7CisJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNlOCwgY3B1X3RvX2xlMzIoKihQVUxPTkcpcEh3RGF0YS0+UGVybWFuZW50TWFjQWRkcmVzcykgKTsgLy8yMDA2MDkyNiBhbnNvbidzIGVuZGlhbgorCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzZWMsIGNwdV90b19sZTMyKCooUFVMT05HKShwSHdEYXRhLT5QZXJtYW5lbnRNYWNBZGRyZXNzKzQpKSApOyAvLzIwMDYwOTI2IGFuc29uJ3MgZW5kaWFuCit9CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICBDYXJkR2V0TXVsdGljYXN0Qml0IC0tCisvLyAgRGVzY3JpcHRpb246CisvLyAgICBGb3IgYSBnaXZlbiBtdWx0aWNhc3QgYWRkcmVzcywgcmV0dXJucyB0aGUgYnl0ZSBhbmQgYml0IGluIHRoZSBjYXJkIG11bHRpY2FzdCByZWdpc3RlcnMgdGhhdCBpdCBoYXNoZXMgdG8uCisvLyAgICBDYWxscyBDYXJkQ29tcHV0ZUNyYygpIHRvIGRldGVybWluZSB0aGUgQ1JDIHZhbHVlLgorLy8gIEFyZ3VtZW50czoKKy8vICAgIEFkZHJlc3MgLSB0aGUgYWRkcmVzcworLy8gICAgQnl0ZSAtIHRoZSBieXRlIHRoYXQgaXQgaGFzaGVzIHRvCisvLyAgICBWYWx1ZSAtIHdpbGwgaGF2ZSBhIDEgaW4gdGhlIHJlbGV2YW50IGJpdAorLy8gIFJldHVybiBWYWx1ZToKKy8vICAgIE5vbmUuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIENhcmRHZXRNdWx0aWNhc3RCaXQoICAgdTggQWRkcmVzc1tFVEhfTEVOR1RIX09GX0FERFJFU1NdLAorCQkJCQkJICAgdTggKkJ5dGUsICB1OCAqVmFsdWUgKQoreworICAgIHUzMiBDcmM7CisgICAgdTMyIEJpdE51bWJlcjsKKworICAgIC8vIEZpcnN0IGNvbXB1dGUgdGhlIENSQy4KKyAgICBDcmMgPSBDYXJkQ29tcHV0ZUNyYyhBZGRyZXNzLCBFVEhfTEVOR1RIX09GX0FERFJFU1MpOworCisJLy8gVGhlIGNvbXB1dGVkIENSQyBpcyBiaXQwfjMxIGZyb20gbGVmdCB0byByaWdodAorCS8vQXQgZmlyc3Qgd2Ugc2hvdWxkIGRvIHJpZ2h0IHNoaWZ0IDI1Yml0cywgYW5kIHJlYWQgN2JpdHMgYnkgdXNpbmcgJyYnLCAyXjc9MTI4CisJQml0TnVtYmVyID0gKHUzMikgKChDcmMgPj4gMjYpICYgMHgzZik7CisKKwkqQnl0ZSAgPSAodTgpIChCaXROdW1iZXIgPj4gMyk7Ly8gOTAwNTE0IG9yaWdpbmFsIChCaXROdW1iZXIgLyA4KQorCSpWYWx1ZSA9ICh1OCkgKCh1OCkxIDw8IChCaXROdW1iZXIgJSA4KSk7Cit9CisKK3ZvaWQgVXh4X3Bvd2VyX29uX3Byb2NlZHVyZSggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJdTMyCWx0bXAsIGxvb3A7CisKKwlpZiggcEh3RGF0YS0+cGh5X3R5cGUgPD0gUkZfTUFYSU1fVjEgKQorCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2Q0LCAweGZmZmZmZjM4ICk7CisJZWxzZQorCXsKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNmNCwgMHhGRjU4MDdGRiApOy8vIDIwMDYwNzIxIEZvciBORVcgSUMgMHhGRjU4MDdGRgorCisJCS8vIDIwMDYwNTExLjEgRml4IHRoZSBmb2xsb3dpbmcgNCBzdGVwcyBmb3IgUnggb2YgUkYgMjIzMCBpbml0aWFsIGZhaWwKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNkNCwgMHg4MCApOy8vIHJlZ3VsYXRvciBvbiBvbmx5CisJCU9TX1NMRUVQKDEwMDAwKTsgLy8gTW9kaWZ5IDIwMDUxMjIxLjEuYgorCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2Q0LCAweGI4ICk7Ly8gUkVHX09OIFJGX1JTVE4gb24sIGFuZAorCQlPU19TTEVFUCgxMDAwMCk7IC8vIE1vZGlmeSAyMDA1MTIyMS4xLmIKKworCQlsdG1wID0gMHg0OTY4OworCQlpZiggKHBId0RhdGEtPnBoeV90eXBlID09IFJGX1dCXzI0MikgfHwKKwkJCShSRl9XQl8yNDJfMSA9PSBwSHdEYXRhLT5waHlfdHlwZSkgKSAvLyAyMDA2MDYxOS41IEFkZAorCQkJbHRtcCA9IDB4NDQ2ODsKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNkMCwgbHRtcCApOworCisJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzZDQsIDB4YTAgKTsvLyBQTExfUEQgUkVGX1BEIHNldCB0byAwCisKKwkJT1NfU0xFRVAoMjAwMDApOyAvLyBNb2RpZnkgMjAwNTEyMjEuMS5iCisJCVdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIDB4MDNkMCwgJmx0bXAgKTsKKwkJbG9vcCA9IDUwMDsgLy8gV2FpdCBmb3IgNSBzZWNvbmQgMjAwNjExMDEKKwkJd2hpbGUoICEobHRtcCAmIDB4MjApICYmIGxvb3AtLSApCisJCXsKKwkJCU9TX1NMRUVQKDEwMDAwKTsgLy8gTW9kaWZ5IDIwMDUxMjIxLjEuYgorCQkJaWYoICFXYjM1UmVnX1JlYWRTeW5jKCBwSHdEYXRhLCAweDAzZDAsICZsdG1wICkgKQorCQkJCWJyZWFrOworCQl9CisKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNkNCwgMHhlMCApOy8vIE1MS19FTgorCX0KKworCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjAsIDEgKTsvLyBSZXNldCBoYXJkd2FyZSBmaXJzdAorCU9TX1NMRUVQKDEwMDAwKTsgLy8gQWRkIHRoaXMgMjAwNTEyMjEuMS5iCisKKwkvLyBTZXQgYnVyc3Qgd3JpdGUgZGVsYXkKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2Y4LCAweDdmZiApOworfQorCit2b2lkIFNldF9DaGFuSW5kZXBfUmZEYXRhX2FsNzIzMF8yNCggIHBod19kYXRhX3QgcEh3RGF0YSwgdTMyICpwbHRtcCAsY2hhciBudW1iZXIpCit7CisJdTgJaTsKKworCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwl7CisJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gYWw3MjMwX3JmX2RhdGFfMjRbaV07CisJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IChhbDcyMzBfcmZfZGF0YV8yNFtpXSYweGZmZmZmZik7CisJfQorfQorCit2b2lkIFNldF9DaGFuSW5kZXBfUmZEYXRhX2FsNzIzMF81MCggIHBod19kYXRhX3QgcEh3RGF0YSwgdTMyICpwbHRtcCwgY2hhciBudW1iZXIpCit7CisJdTgJaTsKKworCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwl7CisJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gYWw3MjMwX3JmX2RhdGFfNTBbaV07CisJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IChhbDcyMzBfcmZfZGF0YV81MFtpXSYweGZmZmZmZik7CisJfQorfQorCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gUkZTeW50aGVzaXplcl9pbml0aWFsIC0tCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQKK1JGU3ludGhlc2l6ZXJfaW5pdGlhbChwaHdfZGF0YV90IHBId0RhdGEpCit7CisJdTMyCWFsdG1wWzMyXTsKKwlQVUxPTkcJcGx0bXAgPSBhbHRtcDsKKwl1MzIJbHRtcDsKKwl1OAludW1iZXI9MHgwMDsgLy8gVGhlIG51bWJlciBvZiByZWdpc3RlciB2YWxlCisJdTgJaTsKKworCS8vCisJLy8gYml0WzMxXSAgICAgIFNQSSBFbmFibGUuCisJLy8gICAgICAgICAgICAgIDE9cGVyZm9ybSBzeW50aGVzaXplciBwcm9ncmFtIG9wZXJhdGlvbi4gVGhpcyBiaXQgd2lsbAorCS8vICAgICAgICAgICAgICBjbGVhcmVkIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQuCisJLy8gYml0WzMwXSAgICAgIFNQSSBSL1cgQ29udHJvbAorCS8vICAgICAgICAgICAgICAwPXdyaXRlLCAgICAxPXJlYWQKKwkvLyBiaXRbMjk6MjRdICAgU1BJIERhdGEgRm9ybWF0IExlbmd0aAorCS8vIGJpdFsxNzo0IF0gICBSRiBEYXRhIGJpdHMuCisJLy8gYml0WzMgOjAgXSAgIFJGIGFkZHJlc3MuCisJc3dpdGNoKCBwSHdEYXRhLT5waHlfdHlwZSApCisJeworCWNhc2UgUkZfTUFYSU1fMjgyNToKKwljYXNlIFJGX01BWElNX1YxOiAvLyAxMWcgV2luYm9uZCAybmQgQkIod2l0aCBQaHkgYm9hcmQgKHYxKSArIE1heGltIDMzMSkKKwkJbnVtYmVyID0gc2l6ZW9mKG1heDI4MjVfcmZfZGF0YSkvc2l6ZW9mKG1heDI4MjVfcmZfZGF0YVswXSk7CisJCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwkJeworCQkJcEh3RGF0YS0+cGh5X3BhcmFbaV0gPSBtYXgyODI1X3JmX2RhdGFbaV07Ly8gQmFja3VwIFJmIHBhcmFtZXRlcgorCQkJcGx0bXBbaV0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyNV9yZl9kYXRhW2ldLCAxOCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFJGX01BWElNXzI4Mjc6CisJCW51bWJlciA9IHNpemVvZihtYXgyODI3X3JmX2RhdGEpL3NpemVvZihtYXgyODI3X3JmX2RhdGFbMF0pOworCQlmb3IoIGk9MDsgaTxudW1iZXI7IGkrKyApCisJCXsKKwkJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gbWF4MjgyN19yZl9kYXRhW2ldOworCQkJcGx0bXBbaV0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyN19yZl9kYXRhW2ldLCAxOCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFJGX01BWElNXzI4Mjg6CisJCW51bWJlciA9IHNpemVvZihtYXgyODI4X3JmX2RhdGEpL3NpemVvZihtYXgyODI4X3JmX2RhdGFbMF0pOworCQlmb3IoIGk9MDsgaTxudW1iZXI7IGkrKyApCisJCXsKKwkJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gbWF4MjgyOF9yZl9kYXRhW2ldOworCQkJcGx0bXBbaV0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyOF9yZl9kYXRhW2ldLCAxOCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFJGX01BWElNXzI4Mjk6CisJCW51bWJlciA9IHNpemVvZihtYXgyODI5X3JmX2RhdGEpL3NpemVvZihtYXgyODI5X3JmX2RhdGFbMF0pOworCQlmb3IoIGk9MDsgaTxudW1iZXI7IGkrKyApCisJCXsKKwkJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gbWF4MjgyOV9yZl9kYXRhW2ldOworCQkJcGx0bXBbaV0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyOV9yZl9kYXRhW2ldLCAxOCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFJGX0FJUk9IQV8yMjMwOgorCQludW1iZXIgPSBzaXplb2YoYWwyMjMwX3JmX2RhdGEpL3NpemVvZihhbDIyMzBfcmZfZGF0YVswXSk7CisJCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwkJeworCQkJcEh3RGF0YS0+cGh5X3BhcmFbaV0gPSBhbDIyMzBfcmZfZGF0YVtpXTsKKwkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDIwIDw8IDI0KSB8IEJpdFJldmVyc2UoIGFsMjIzMF9yZl9kYXRhW2ldLCAyMCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFJGX0FJUk9IQV8yMjMwUzoKKwkJbnVtYmVyID0gc2l6ZW9mKGFsMjIzMHNfcmZfZGF0YSkvc2l6ZW9mKGFsMjIzMHNfcmZfZGF0YVswXSk7CisJCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwkJeworCQkJcEh3RGF0YS0+cGh5X3BhcmFbaV0gPSBhbDIyMzBzX3JmX2RhdGFbaV07CisJCQlwbHRtcFtpXSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyMCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBhbDIyMzBzX3JmX2RhdGFbaV0sIDIwKTsKKwkJfQorCQlicmVhazsKKworCWNhc2UgUkZfQUlST0hBXzcyMzA6CisKKwkJLy9TdGFydCB0byBmaWxsIFJGIHBhcmFtZXRlcnMsIFBMTF9PTiBzaG91bGQgYmUgcHVsbGVkIGxvdy4KKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNkYywgMHgwMDAwMDAwMCApOworI2lmZGVmIF9QRV9TVEFURV9EVU1QXworCQlXQkRFQlVHKCgiKiBQTExfT04gICAgbG93XG4iKSk7CisjZW5kaWYKKworCQludW1iZXIgPSBzaXplb2YoYWw3MjMwX3JmX2RhdGFfMjQpL3NpemVvZihhbDcyMzBfcmZfZGF0YV8yNFswXSk7CisJCVNldF9DaGFuSW5kZXBfUmZEYXRhX2FsNzIzMF8yNChwSHdEYXRhLCBwbHRtcCwgbnVtYmVyKTsKKwkJYnJlYWs7CisKKwljYXNlIFJGX1dCXzI0MjoKKwljYXNlIFJGX1dCXzI0Ml8xOiAvLyAyMDA2MDYxOS41IEFkZAorCQludW1iZXIgPSBzaXplb2Yodzg5cmYyNDJfcmZfZGF0YSkvc2l6ZW9mKHc4OXJmMjQyX3JmX2RhdGFbMF0pOworCQlmb3IoIGk9MDsgaTxudW1iZXI7IGkrKyApCisJCXsKKwkJCWx0bXAgPSB3ODlyZjI0Ml9yZl9kYXRhW2ldOworCQkJaWYoIGkgPT0gNCApIC8vIFVwZGF0ZSB0aGUgVkNPIHRyaW0gZnJvbSBFRVBST00KKwkJCXsKKwkJCQlsdG1wICY9IH4weGZmMDsgLy8gTWFzayBiaXQ0IH5iaXQxMQorCQkJCWx0bXAgfD0gcEh3RGF0YS0+VkNPX3RyaW08PDQ7CisJCQl9CisKKwkJCXBId0RhdGEtPnBoeV9wYXJhW2ldID0gbHRtcDsKKwkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoIGx0bXAsIDI0KTsKKwkJfQorCQlicmVhazsKKwl9CisKKwlwSHdEYXRhLT5waHlfbnVtYmVyID0gbnVtYmVyOworCisJIC8vIFRoZSAxNiBpcyB0aGUgbWF4aW11bSBjYXBhYmlsaXR5IG9mIGhhcmR3YXJlLiBIZXJlIHVzZSAxMgorCWlmKCBudW1iZXIgPiAxMiApIHsKKwkJLy9XYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgcGx0bXAsIDEyLCBOT19JTkNSRU1FTlQgKTsKKwkJZm9yKCBpPTA7IGk8MTI7IGkrKyApIC8vIEZvciBBbDIyMzAKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wW2ldICk7CisKKwkJcGx0bXAgKz0gMTI7CisJCW51bWJlciAtPSAxMjsKKwl9CisKKwkvLyBXcml0ZSB0byByZWdpc3Rlci4gbnVtYmVyIG11c3QgbGVzcyBhbmQgZXF1YWwgdGhhbiAxNgorCWZvciggaT0wOyBpPG51bWJlcjsgaSsrICkKKwkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4ODY0LCBwbHRtcFtpXSApOworCisJLy8gMjAwNjA2MzAuMSBDYWxpYnJhdGlvbiBvbmx5IDEgdGltZQorCWlmKCBwSHdEYXRhLT5DYWxPbmVUaW1lICkKKwkJcmV0dXJuOworCXBId0RhdGEtPkNhbE9uZVRpbWUgPSAxOworCisJc3dpdGNoKCBwSHdEYXRhLT5waHlfdHlwZSApCisJeworCQljYXNlIFJGX0FJUk9IQV8yMjMwOgorCisJCQkvLyAyMDA2MDUxMS4xIC0tLSBNb2RpZnlpbmcgdGhlIGZvbGxvdyBzdGVwIGZvciBSeCBpc3N1ZS0tLS0tLS0tLS0tLS0tLS0tCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDIwIDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDA3PDwyMCl8MHhFMTY4RSwgMjApOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoMTAwMDApOworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyMCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBhbDIyMzBfcmZfZGF0YVs3XSwgMjApOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoMTAwMDApOworCisJCWNhc2UgUkZfQUlST0hBXzIyMzBTOiAvLyAyMDA2MDQyMCBBZGQgdGhpcworCisJCQkvLyAyMDA2MDUxMS4xIC0tLSBNb2RpZnlpbmcgdGhlIGZvbGxvdyBzdGVwIGZvciBSeCBpc3N1ZS0tLS0tLS0tLS0tLS0tLS0tCisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2Q0LCAweDgwICk7Ly8gcmVndWxhdG9yIG9uIG9ubHkKKwkJCU9TX1NMRUVQKDEwMDAwKTsgLy8gTW9kaWZ5IDIwMDUxMjIxLjEuYgorCisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2Q0LCAweGEwICk7Ly8gUExMX1BEIFJFRl9QRCBzZXQgdG8gMAorCQkJT1NfU0xFRVAoMTAwMDApOyAvLyBNb2RpZnkgMjAwNTEyMjEuMS5iCisKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzZDQsIDB4ZTAgKTsvLyBNTEtfRU4KKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjAsIDEgKTsvLyBSZXNldCBoYXJkd2FyZSBmaXJzdAorCQkJT1NfU0xFRVAoMTAwMDApOyAvLyBBZGQgdGhpcyAyMDA1MTIyMS4xLmIKKwkJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkJCS8vIFRoZSBmb2xsb3cgY29kZSBkb2Vzbid0IHVzZSB0aGUgYnVyc3Qtd3JpdGUgbW9kZQorCQkJLy9waHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDB4MEYsICgweDBGPDwyMCkgfCAweEYwMUEwKTsgLy9SYWlzZSBJbml0aWFsIFNldHRpbmcKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjAgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MEY8PDIwKSB8IDB4RjAxQTAsIDIwKTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKworCQkJbHRtcCA9IHBId0RhdGEtPldiMzVSZWcuQkI1QyAmIDB4ZmZmZmYwMDA7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgxMDVjLCBsdG1wICk7CisJCQlwSHdEYXRhLT5XYjM1UmVnLkJCNTAgfD0gMHgxMzsvLyhNQVNLX0lRQ0FMX01PREV8TUFTS19DQUxJQl9TVEFSVCk7Ly8yMDA2MDMxNS4xIG1vZGlmeQorICAgICAgICAJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MTA1MCwgcEh3RGF0YS0+V2IzNVJlZy5CQjUwKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCisJCQkvL3BoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMHgwRiwgKDB4MEY8PDIwKSB8IDB4RjAxQjApOyAvL0FjdGl2YXRlIEZpbHRlciBDYWwuCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDIwIDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDBGPDwyMCkgfCAweEYwMUIwLCAyMCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQlPU19TTEVFUCg1MDAwKTsKKworCQkJLy9waHlfc2V0X3JmX2RhdGEocGh3X2RhdGEsIDB4MEYsICgweDBGPDwyMCkgfCAweEYwMWUwKTsgLy9BY3RpdmF0ZSBUWCBEQ0MKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjAgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MEY8PDIwKSB8IDB4RjAxRTAsIDIwKTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCisJCQkvL3BoeV9zZXRfcmZfZGF0YShwaHdfZGF0YSwgMHgwRiwgKDB4MEY8PDIwKSB8IDB4RjAxQTApOyAvL1Jlc290cmUgSW5pdGlhbCBTZXR0aW5nCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDIwIDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDBGPDwyMCkgfCAweEYwMUEwLCAyMCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisKKy8vCQkJLy9Gb3JjZSBUWEkoUSlQKE4pIHRvIG5vcm1hbCBjb250cm9sCisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgxMDVjLCBwSHdEYXRhLT5XYjM1UmVnLkJCNUMgKTsKKwkJCXBId0RhdGEtPldiMzVSZWcuQkI1MCAmPSB+MHgxMzsvLyhNQVNLX0lRQ0FMX01PREV8TUFTS19DQUxJQl9TVEFSVCk7CisgICAgICAgIAlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgxMDUwLCBwSHdEYXRhLT5XYjM1UmVnLkJCNTApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9BSVJPSEFfNzIzMDoKKworCQkJLy9SRiBwYXJhbWV0ZXJzIGhhdmUgZmlsbGVkIGNvbXBsZXRlbHksIFBMTF9PTiBzaG91bGQgYmUKKwkJCS8vcHVsbGVkIGhpZ2gKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzZGMsIDB4MDAwMDAwODAgKTsKKwkJCSNpZmRlZiBfUEVfU1RBVEVfRFVNUF8KKwkJCVdCREVCVUcoKCIqIFBMTF9PTiAgICBoaWdoXG4iKSk7CisJCQkjZW5kaWYKKworCQkJLy8yLjRHSHoKKwkJCS8vbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAweDFBQkE4RjsKKwkJCS8vV2IzNVJlZ19Xcml0ZVN5bmMgcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQkvL09TX1NMRUVQKDEwMDApOyAvLyBTbGVlcCAxIG1zCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IDB4OUFCQThGOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoNTAwMCk7CisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IDB4M0FCQThGOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoNTAwMCk7CisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IDB4MUFCQThGOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoNTAwMCk7CisKKwkJCS8vNUdIegorCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNkYywgMHgwMDAwMDAwMCApOworCQkJI2lmZGVmIF9QRV9TVEFURV9EVU1QXworCQkJV0JERUJVRygoIiogUExMX09OICAgIGxvd1xuIikpOworCQkJI2VuZGlmCisKKwkJCW51bWJlciA9IHNpemVvZihhbDcyMzBfcmZfZGF0YV81MCkvc2l6ZW9mKGFsNzIzMF9yZl9kYXRhXzUwWzBdKTsKKwkJCVNldF9DaGFuSW5kZXBfUmZEYXRhX2FsNzIzMF81MChwSHdEYXRhLCBwbHRtcCwgbnVtYmVyKTsKKwkJCS8vIFdyaXRlIHRvIHJlZ2lzdGVyLiBudW1iZXIgbXVzdCBsZXNzIGFuZCBlcXVhbCB0aGFuIDE2CisJCQlmb3IoIGk9MDsgaTxudW1iZXI7IGkrKyApCisJCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgcGx0bXBbaV0gKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2RjLCAweDAwMDAwMDgwICk7CisJCQkjaWZkZWYgX1BFX1NUQVRFX0RVTVBfCisJCQlXQkRFQlVHKCgiKiBQTExfT04gICAgaGlnaFxuIikpOworCQkJI2VuZGlmCisKKwkJCS8vbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAweDEyQkFDRjsKKwkJCS8vV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAweDlBQkE4RjsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAweDNBQkE4RjsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAweDEyQkFDRjsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDUwMDApOworCisJCQkvL1diMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzZGMsIDB4MDAwMDAwODAgKTsKKwkJCS8vV0JERUJVRygoIiogUExMX09OICAgIGhpZ2hcbiIpKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfV0JfMjQyOgorCQljYXNlIFJGX1dCXzI0Ml8xOiAvLyAyMDA2MDYxOS41IEFkZAorCisJCQkvLworCQkJLy8gOyBWZXJzaW9uIDEuM0IgcmV2aXNpb24gaXRlbXM6IGZvciBGQTU5NzZBICwgT2N0b2JlciAzLCAyMDA1IGJ5IEhUSG8KKwkJCS8vCisJCQlsdG1wID0gcEh3RGF0YS0+V2IzNVJlZy5CQjVDICYgMHhmZmZmZjAwMDsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDEwNWMsIGx0bXAgKTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDEwNTgsIDAgKTsKKwkJCXBId0RhdGEtPldiMzVSZWcuQkI1MCB8PSAweDM7Ly8oTUFTS19JUUNBTF9NT0RFfE1BU0tfQ0FMSUJfU1RBUlQpOy8vMjAwNjA2MzAKKwkgICAgICAJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MTA1MCwgcEh3RGF0YS0+V2IzNVJlZy5CQjUwKTsKKworCQkJLy8tLS0tLSBDYWxpYnJhdGlvbiAoMSkuIFZDTyBmcmVxdWVuY3kgY2FsaWJyYXRpb24KKwkJCS8vQ2FsaWJyYXRpb24gKDFhLjApLiBTeW50aGVzaXplciByZXNldCAoSFRIbyBjb3JyZWN0ZWQgMjAwNS8wNS8xMCkKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MEY8PDI0KSB8IDB4MDAxMDFFLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQlPU19TTEVFUCggNTAwMCApOyAvLyBTbGVlcCA1bXMKKwkJCS8vQ2FsaWJyYXRpb24gKDFhKS4gVkNPIGZyZXF1ZW5jeSBjYWxpYnJhdGlvbiBtb2RlIDsgd2FpdGluZyAybXNlYyBWQ08gY2FsaWJyYXRpb24gdGltZQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGRTY5YzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKCAyMDAwICk7IC8vIFNsZWVwIDJtcworCisJCQkvLy0tLS0tIENhbGlicmF0aW9uICgyKS4gVFggYmFzZWJhbmQgR20tQyBmaWx0ZXIgYXV0by10dW5pbmcKKwkJCS8vQ2FsaWJyYXRpb24gKDJhKS4gdHVybiBvZmYgRU5DQUwgc2lnbmFsCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEY4RUJDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoMmIuMCkuIFRYIGZpbHRlciBhdXRvLXR1bmluZyBCVzogVEZMQlc9MTAxIChUQzUzNzZBIGRlZmF1bHQpCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDA3PDwyNCkgfCAweDBDNjhDRSwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoMmIpLiBzZW5kIFRYIHJlc2V0IHNpZ25hbCAoSFRIbyBjb3JyZWN0ZWQgTWF5IDEwLCAyMDA1KQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwRjw8MjQpIHwgMHgwMDIwMUUsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCS8vQ2FsaWJyYXRpb24gKDJjKS4gdHVybi1vbiBUWCBHbS1DIGZpbHRlciBhdXRvLXR1bmluZworCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGQ0VCQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKCAxNTAgKTsgLy8gU2xlZXAgMTUwIHVzCisJCQkvL3R1cm4gb2ZmIEVOQ0FMIHNpZ25hbAorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGOEVCQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKworCQkJLy8tLS0tLSBDYWxpYnJhdGlvbiAoMykuIFJYIGJhc2ViYW5kIEdtLUMgZmlsdGVyIGF1dG8tdHVuaW5nCisJCQkvL0NhbGlicmF0aW9uICgzYSkuIHR1cm4gb2ZmIEVOQ0FMIHNpZ25hbAorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGQUVEQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCS8vQ2FsaWJyYXRpb24gKDNiLjApLiBSWCBmaWx0ZXIgYXV0by10dW5pbmcgQlc6IFJGTEJXPTEwMCAoVEM1Mzc2QStjb3JuZXIgZGVmYXVsdDsgSnVseSAyNiwgMjAwNSkKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDc8PDI0KSB8IDB4MEM2OENFLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQkvL0NhbGlicmF0aW9uICgzYikuIHNlbmQgUlggcmVzZXQgc2lnbmFsIChIVEhvIGNvcnJlY3RlZCBNYXkgMTAsIDIwMDUpCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDBGPDwyNCkgfCAweDAwNDAxRSwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoM2MpLiB0dXJuLW9uIFJYIEdtLUMgZmlsdGVyIGF1dG8tdHVuaW5nCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZFRURDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoIDE1MCApOyAvLyBTbGVlcCAxNTAgdXMKKwkJCS8vQ2FsaWJyYXRpb24gKDNlKS4gdHVybiBvZmYgRU5DQUwgc2lnbmFsCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZBRURDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCisJCQkvLy0tLS0tIENhbGlicmF0aW9uICg0KS4gVFggTE8gbGVha2FnZSBjYWxpYnJhdGlvbgorCQkJLy9DYWxpYnJhdGlvbiAoNGEpLiBUWCBMTyBsZWFrYWdlIGNhbGlicmF0aW9uCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZENkJDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoIDE1MCApOyAvLyBTbGVlcCAxNTAgdXMKKworCQkJLy8tLS0tLSBDYWxpYnJhdGlvbiAoNSkuIFJYIERDIG9mZnNldCBjYWxpYnJhdGlvbgorCQkJLy9DYWxpYnJhdGlvbiAoNWEpLiB0dXJuIG9mZiBFTkNBTCBzaWduYWwgYW5kIHNldCB0byBSWCBTVyBEQyBjYWxpcmF0aW9uIG1vZGUKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDA8PDI0KSB8IDB4RkFFREMwLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQkvL0NhbGlicmF0aW9uICg1YikuIHR1cm4gb2ZmIEFHQyBzZXJ2by1sb29wICYgUlNTSQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMTw8MjQpIHwgMHhFQkZGQzIsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKworCQkJLy87IGZvciBMTkE9MTEgLS0tLS0tLS0KKwkJCS8vQ2FsaWJyYXRpb24gKDVjLWgpLiBSWCBEQyBvZmZzZXQgY3VycmVudCBiaWFzIE9OOyAmIExOQT0xMTsgUlhWR0E9MTExMTExCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDA2PDwyNCkgfCAweDM0M0ZDQywgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoNWQpLiB0dXJuIG9uIFJYIERDIG9mZnNldCBjYWwgZnVuY3Rpb247IGFuZCB3YWl0aW5nIDIgbXNlYyBjYWwgdGltZQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGRjZEQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDIwMDApOyAvLyBTbGVlcCAybXMKKwkJCS8vQ2FsaWJyYXRpb24gKDVmKS4gdHVybiBvZmYgRU5DQUwgc2lnbmFsCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZBRURDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCisJCQkvLzsgZm9yIExOQT0xMCAtLS0tLS0tLQorCQkJLy9DYWxpYnJhdGlvbiAoNWMtbSkuIFJYIERDIG9mZnNldCBjdXJyZW50IGJpYXMgT047ICYgTE5BPTEwOyBSWFZHQT0xMTExMTEKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDY8PDI0KSB8IDB4MzQyRkNDLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQkvL0NhbGlicmF0aW9uICg1ZCkuIHR1cm4gb24gUlggREMgb2Zmc2V0IGNhbCBmdW5jdGlvbjsgYW5kIHdhaXRpbmcgMiBtc2VjIGNhbCB0aW1lCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZGNkRDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJT1NfU0xFRVAoMjAwMCk7IC8vIFNsZWVwIDJtcworCQkJLy9DYWxpYnJhdGlvbiAoNWYpLiB0dXJuIG9mZiBFTkNBTCBzaWduYWwKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDA8PDI0KSB8IDB4RkFFREMwLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisKKwkJCS8vOyBmb3IgTE5BPTAxIC0tLS0tLS0tCisJCQkvL0NhbGlicmF0aW9uICg1Yy1tKS4gUlggREMgb2Zmc2V0IGN1cnJlbnQgYmlhcyBPTjsgJiBMTkE9MDE7IFJYVkdBPTExMTExMQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwNjw8MjQpIHwgMHgzNDFGQ0MsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCS8vQ2FsaWJyYXRpb24gKDVkKS4gdHVybiBvbiBSWCBEQyBvZmZzZXQgY2FsIGZ1bmN0aW9uOyBhbmQgd2FpdGluZyAyIG1zZWMgY2FsIHRpbWUKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDA8PDI0KSB8IDB4RkY2REMwLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQlPU19TTEVFUCgyMDAwKTsgLy8gU2xlZXAgMm1zCisJCQkvL0NhbGlicmF0aW9uICg1ZikuIHR1cm4gb2ZmIEVOQ0FMIHNpZ25hbAorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGQUVEQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKworCQkJLy87IGZvciBMTkE9MDAgLS0tLS0tLS0KKwkJCS8vQ2FsaWJyYXRpb24gKDVjLWwpLiBSWCBEQyBvZmZzZXQgY3VycmVudCBiaWFzIE9OOyAmIExOQT0wMDsgUlhWR0E9MTExMTExCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDA2PDwyNCkgfCAweDM0MEZDQywgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoNWQpLiB0dXJuIG9uIFJYIERDIG9mZnNldCBjYWwgZnVuY3Rpb247IGFuZCB3YWl0aW5nIDIgbXNlYyBjYWwgdGltZQorCQkJbHRtcCA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAoMHgwMDw8MjQpIHwgMHhGRjZEQzAsIDI0KTsKKwkJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCU9TX1NMRUVQKDIwMDApOyAvLyBTbGVlcCAybXMKKwkJCS8vQ2FsaWJyYXRpb24gKDVmKS4gdHVybiBvZmYgRU5DQUwgc2lnbmFsCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAwPDwyNCkgfCAweEZBRURDMCwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJLy9DYWxpYnJhdGlvbiAoNWcpLiB0dXJuIG9uIEFHQyBzZXJ2by1sb29wCisJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IEJpdFJldmVyc2UoICgweDAxPDwyNCkgfCAweEVGRkZDMiwgMjQpOworCQkJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCisJCQkvLzsgLS0tLS0gQ2FsaWJyYXRpb24gKDcpLiBTd2l0Y2ggUkYgY2hpcCB0byBub3JtYWwgbW9kZQorCQkJLy8weDAwIDB4Rjg2MTAwIDsgM0UxODQgICA7IFN3aXRjaCBSRiBjaGlwIHRvIG5vcm1hbCBtb2RlCisvLwkJCU9TX1NMRUVQKDEwMDAwKTsgLy8gQEAgMjAwNjA3MjEKKwkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggKDB4MDA8PDI0KSB8IDB4Rjg2MTAwLCAyNCk7CisJCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQlPU19TTEVFUCg1MDAwKTsgLy8gU2xlZXAgNSBtcworCisvLwkJCS8vd3JpdGUgYmFjaworLy8JCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgxMDVjLCBwSHdEYXRhLT5XYjM1UmVnLkJCNUMgKTsKKy8vCQkJcEh3RGF0YS0+V2IzNVJlZy5CQjUwICY9IH4weDEzOy8vKE1BU0tfSVFDQUxfTU9ERXxNQVNLX0NBTElCX1NUQVJUKTsgLy8gMjAwNjAzMTUuMSBmaXgKKy8vICAgICAgCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDEwNTAsIHBId0RhdGEtPldiMzVSZWcuQkI1MCk7CisvLwkJCU9TX1NMRUVQKDEwMDApOyAvLyBTbGVlcCAxIG1zCisJCQlicmVhazsKKwl9Cit9CisKK3ZvaWQgQkJQcm9jZXNzb3JfQUw3MjMwXzI0MDAoICBwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwl1MzIJcGx0bXBbMTJdOworCisJcGx0bXBbMF0gPSAweDE2QTgzMzdBOyAvLyAweDE2YTUyMTVmOyAvLyAweDEwMDAgQUdDX0N0cmwxCisJcGx0bXBbMV0gPSAweDlBRkY5QUE2OyAvLyAweDlhZmY5Y2E2OyAvLyAweDEwMDQgQUdDX0N0cmwyCisJcGx0bXBbMl0gPSAweDU1RDAwQTA0OyAvLyAweDU1ZDAwYTA0OyAvLyAweDEwMDggQUdDX0N0cmwzCisJcGx0bXBbM10gPSAweEZGRjcyMDMxOyAvLyAweEZmRmYyMTM4OyAvLyAweDEwMGMgQUdDX0N0cmw0CisJcFdiMzVSZWctPkJCMEMgPSAweEZGRjcyMDMxOworCXBsdG1wWzRdID0gMHgwRmFjRENDNTsgLy8gMHgxMDEwIEFHQ19DdHJsNSAvLyAyMDA1MDkyNyAweDBGYWNEQ0I3CisJcGx0bXBbNV0gPSAweDAwQ0FBMzMzOyAvLyAweDAwZWFhMzMzOyAvLyAweDEwMTQgQUdDX0N0cmw2CisJcGx0bXBbNl0gPSAweEYyMjExMTExOyAvLyAweDExMTExMTExOyAvLyAweDEwMTggQUdDX0N0cmw3CisJcGx0bXBbN10gPSAweDBGQTNGMEVEOyAvLyAweDEwMWMgQUdDX0N0cmw4CisJcGx0bXBbOF0gPSAweDA2NDQzNDQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJcGx0bXBbOV0gPSAweEE4MDAyQTc5OyAvLyAweGE5MDAyQTc5OyAvLyAweDEwMjQgQUdDX0N0cmwxMAorCXBsdG1wWzEwXSA9IDB4NDAwMDA1Mjg7IC8vIDIwMDUwOTI3IDB4NDAwMDAyMjgKKwlwbHRtcFsxMV0gPSAweDIzMkQ3RjMwOyAvLyAweDIzNDU3ZjMwOy8vIDB4MTAyYyBBX0FDUV9DdHJsCisJcFdiMzVSZWctPkJCMkMgPSAweDIzMkQ3RjMwOworCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDAwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwlwbHRtcFswXSA9IDB4MDAwMDJjNTQ7IC8vIDB4MTAzMCBCX0FDUV9DdHJsCisJcFdiMzVSZWctPkJCMzAgPSAweDAwMDAyYzU0OworCXBsdG1wWzFdID0gMHgwMEMwRDZDNTsgLy8gMHgxMDM0IEFfVFhSWF9DdHJsCisJcGx0bXBbMl0gPSAweDVCMkM4NzY5OyAvLyAweDEwMzggQl9UWFJYX0N0cmwKKwlwbHRtcFszXSA9IDB4MDAwMDAwMDA7IC8vIDB4MTAzYyAxMWEgVFggTFMgZmlsdGVyCisJcFdiMzVSZWctPkJCM0MgPSAweDAwMDAwMDAwOworCXBsdG1wWzRdID0gMHgwMDAwM0YyOTsgLy8gMHgxMDQwIDExYSBUWCBMUyBmaWx0ZXIKKwlwbHRtcFs1XSA9IDB4MEVGRUZCRkU7IC8vIDB4MTA0NCAxMWEgVFggTFMgZmlsdGVyCisJcGx0bXBbNl0gPSAweDAwMzMyQzFCOyAvLyAweDAwNDUzQjI0OyAvLyAweDEwNDggMTFiIFRYIFJDIGZpbHRlcgorCXBsdG1wWzddID0gMHgwQTAwRkVGRjsgLy8gMHgwRTAwRkVGRjsgLy8gMHgxMDRjIDExYiBUWCBSQyBmaWx0ZXIKKwlwbHRtcFs4XSA9IDB4MkIxMDYyMDg7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwlwV2IzNVJlZy0+QkI1MCA9IDB4MkIxMDYyMDg7CisJcGx0bXBbOV0gPSAwOyAvLyAweDEwNTQKKwlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJcGx0bXBbMTBdID0gMHg1MjUyNDI0MjsgLy8gMHg2NDY0NTI1MjsgLy8gMHgxMDU4IElRX0FscGhhCisJcFdiMzVSZWctPkJCNTggPSAweDUyNTI0MjQyOworCXBsdG1wWzExXSA9IDB4QUEwQUMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwlXYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MTAzMCwgcGx0bXAsIDEyLCBBVVRPX0lOQ1JFTUVOVCApOworCit9CisKK3ZvaWQgQkJQcm9jZXNzb3JfQUw3MjMwXzUwMDAoICBwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwl1MzIJcGx0bXBbMTJdOworCisJcGx0bXBbMF0gPSAweDE2QUE2Njc4OyAvLyAweDEwMDAgQUdDX0N0cmwxCisJcGx0bXBbMV0gPSAweDlBRkZBMEIyOyAvLyAweDEwMDQgQUdDX0N0cmwyCisJcGx0bXBbMl0gPSAweDU1RDAwQTA0OyAvLyAweDEwMDggQUdDX0N0cmwzCisJcGx0bXBbM10gPSAweEVGRkYyMzNFOyAvLyAweDEwMGMgQUdDX0N0cmw0CisJcFdiMzVSZWctPkJCMEMgPSAweEVGRkYyMzNFOworCXBsdG1wWzRdID0gMHgwRmFjRENDNTsgLy8gMHgxMDEwIEFHQ19DdHJsNSAvLyAyMDA1MDkyNyAweDBGYWNEQ0I3CisJcGx0bXBbNV0gPSAweDAwQ0FBMzMzOyAvLyAweDEwMTQgQUdDX0N0cmw2CisJcGx0bXBbNl0gPSAweEYyNDMyMTExOyAvLyAweDEwMTggQUdDX0N0cmw3CisJcGx0bXBbN10gPSAweDBGQTNGMEVEOyAvLyAweDEwMWMgQUdDX0N0cmw4CisJcGx0bXBbOF0gPSAweDA1QzQzNDQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJcGx0bXBbOV0gPSAweDAwMDAyQTc5OyAvLyAweDEwMjQgQUdDX0N0cmwxMAorCXBsdG1wWzEwXSA9IDB4NDAwMDA1Mjg7IC8vIDIwMDUwOTI3IDB4NDAwMDAyMjgKKwlwbHRtcFsxMV0gPSAweDIzMkZERjMwOy8vIDB4MTAyYyBBX0FDUV9DdHJsCisJcFdiMzVSZWctPkJCMkMgPSAweDIzMkZERjMwOworCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDAwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwlwbHRtcFswXSA9IDB4ODAwMDJDN0M7IC8vIDB4MTAzMCBCX0FDUV9DdHJsCisJcGx0bXBbMV0gPSAweDAwQzBENkM1OyAvLyAweDEwMzQgQV9UWFJYX0N0cmwKKwlwbHRtcFsyXSA9IDB4NUIyQzg3Njk7IC8vIDB4MTAzOCBCX1RYUlhfQ3RybAorCXBsdG1wWzNdID0gMHgwMDAwMDAwMDsgLy8gMHgxMDNjIDExYSBUWCBMUyBmaWx0ZXIKKwlwV2IzNVJlZy0+QkIzQyA9IDB4MDAwMDAwMDA7CisJcGx0bXBbNF0gPSAweDAwMDAzRjI5OyAvLyAweDEwNDAgMTFhIFRYIExTIGZpbHRlcgorCXBsdG1wWzVdID0gMHgwRUZFRkJGRTsgLy8gMHgxMDQ0IDExYSBUWCBMUyBmaWx0ZXIKKwlwbHRtcFs2XSA9IDB4MDAzMzJDMUI7IC8vIDB4MTA0OCAxMWIgVFggUkMgZmlsdGVyCisJcGx0bXBbN10gPSAweDBBMDBGRUZGOyAvLyAweDEwNGMgMTFiIFRYIFJDIGZpbHRlcgorCXBsdG1wWzhdID0gMHgyQjEwNzIwODsgLy8gMHgxMDUwIE1PREVfQ3RybAorCXBXYjM1UmVnLT5CQjUwID0gMHgyQjEwNzIwODsKKwlwbHRtcFs5XSA9IDA7IC8vIDB4MTA1NAorCXBXYjM1UmVnLT5CQjU0ID0gMHgwMDAwMDAwMDsKKwlwbHRtcFsxMF0gPSAweDUyNTI0MjQyOyAvLyAweDEwNTggSVFfQWxwaGEKKwlwV2IzNVJlZy0+QkI1OCA9IDB4NTI1MjQyNDI7CisJcGx0bXBbMTFdID0gMHhBQTBBQzAwMDsgLy8gMHgxMDVjIERDX0NhbmNlbAorCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgQkJQcm9jZXNzb3JQb3dlcnVwSW5pdCAtLQorLy8KKy8vICBEZXNjcmlwdGlvbjoKKy8vICAgIEluaXRpYWxpemUgdGhlIEJhc2ViYW5kIHByb2Nlc3Nvci4KKy8vCisvLyAgQXJndW1lbnRzOgorLy8gICAgcEh3RGF0YSAgICAtIEhhbmRsZSBvZiB0aGUgVVNCIERldmljZS4KKy8vCisvLyAgUmV0dXJuIHZhbHVlczoKKy8vICAgIE5vbmUuCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQKK0JCUHJvY2Vzc29yX2luaXRpYWwoICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJdTMyCWksIHBsdG1wWzEyXTsKKworICAgIHN3aXRjaCggcEh3RGF0YS0+cGh5X3R5cGUgKQorICAgIHsKKwkJY2FzZSBSRl9NQVhJTV9WMTogLy8gSW5pdGlhbGl6bmcgdGhlIFdpbmJvbmQgMm5kIEJCKHdpdGggUGh5IGJvYXJkICh2MSkgKyBNYXhpbSAzMzEpCisKKwkJCXBsdG1wWzBdID0gMHgxNkY0N0U3NzsgLy8gMHgxMDAwIEFHQ19DdHJsMQorCQkJcGx0bXBbMV0gPSAweDlBRkZBRUE0OyAvLyAweDEwMDQgQUdDX0N0cmwyCisJCQlwbHRtcFsyXSA9IDB4NTVEMDBBMDQ7IC8vIDB4MTAwOCBBR0NfQ3RybDMKKwkJCXBsdG1wWzNdID0gMHhFRkZGMUEzNDsgLy8gMHgxMDBjIEFHQ19DdHJsNAorCQkJcFdiMzVSZWctPkJCMEMgPSAweEVGRkYxQTM0OworCQkJcGx0bXBbNF0gPSAweDBGQUJFMEI3OyAvLyAweDEwMTAgQUdDX0N0cmw1CisJCQlwbHRtcFs1XSA9IDB4MDBDQUEzMzI7IC8vIDB4MTAxNCBBR0NfQ3RybDYKKwkJCXBsdG1wWzZdID0gMHhGNjYzMjExMTsgLy8gMHgxMDE4IEFHQ19DdHJsNworCQkJcGx0bXBbN10gPSAweDBGQTNGMEVEOyAvLyAweDEwMWMgQUdDX0N0cmw4CisJCQlwbHRtcFs4XSA9IDB4MDRDQzM2NDA7IC8vIDB4MTAyMCBBR0NfQ3RybDkKKwkJCXBsdG1wWzldID0gMHgwMDAwMkE3OTsgLy8gMHgxMDI0IEFHQ19DdHJsMTAKKwkJCXBsdG1wWzEwXSA9IChwSHdEYXRhLT5waHlfdHlwZT09MykgPyAweDQwMDAwYTI4IDogMHg0MDAwMDIyODsgLy8gMHgxMDI4IE1BWElNXzMzMShiMzE9MCkgKyBXQlJGX1YxKGIxMT0xKSA6IE1BWElNXzMzMShiMzE9MCkgKyBXQlJGX1YyKGIxMT0wKQorCQkJcGx0bXBbMTFdID0gMHgyMzJGREYzMDsgLy8gMHgxMDJjIEFfQUNRX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjJDID0gMHgyMzJGREYzMDsgLy9Nb2RpZnkgZm9yIDMzJ3MgMS4wLjk1Lnh4eCB2ZXJzaW9uLCBhbnRlbm5hIDEKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDAwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCXBsdG1wWzBdID0gMHgwMDAwMkM1NDsgLy8gMHgxMDMwIEJfQUNRX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjMwID0gMHgwMDAwMkM1NDsKKwkJCXBsdG1wWzFdID0gMHgwMEMwRDZDNTsgLy8gMHgxMDM0IEFfVFhSWF9DdHJsCisJCQlwbHRtcFsyXSA9IDB4NUI2Qzg3Njk7IC8vIDB4MTAzOCBCX1RYUlhfQ3RybAorCQkJcGx0bXBbM10gPSAweDAwMDAwMDAwOyAvLyAweDEwM2MgMTFhIFRYIExTIGZpbHRlcgorCQkJcFdiMzVSZWctPkJCM0MgPSAweDAwMDAwMDAwOworCQkJcGx0bXBbNF0gPSAweDAwMDAzRjI5OyAvLyAweDEwNDAgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNV0gPSAweDBFRkVGQkZFOyAvLyAweDEwNDQgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNl0gPSAweDAwNDUzQjI0OyAvLyAweDEwNDggMTFiIFRYIFJDIGZpbHRlcgorCQkJcGx0bXBbN10gPSAweDBFMDBGRUZGOyAvLyAweDEwNGMgMTFiIFRYIFJDIGZpbHRlcgorCQkJcGx0bXBbOF0gPSAweDI3MTA2MjA4OyAvLyAweDEwNTAgTU9ERV9DdHJsCisJCQlwV2IzNVJlZy0+QkI1MCA9IDB4MjcxMDYyMDg7CisJCQlwbHRtcFs5XSA9IDA7IC8vIDB4MTA1NAorCQkJcFdiMzVSZWctPkJCNTQgPSAweDAwMDAwMDAwOworCQkJcGx0bXBbMTBdID0gMHg2NDY0NjQ2NDsgLy8gMHgxMDU4IElRX0FscGhhCisJCQlwV2IzNVJlZy0+QkI1OCA9IDB4NjQ2NDY0NjQ7CisJCQlwbHRtcFsxMV0gPSAweEFBMEFDMDAwOyAvLyAweDEwNWMgRENfQ2FuY2VsCisJCQlXYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MTAzMCwgcGx0bXAsIDEyLCBBVVRPX0lOQ1JFTUVOVCApOworCisJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNzAsIDB4MDAwMDAwNDUgKTsKKwkJCWJyZWFrOworCisJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCS8vWzIwMDQwNzIyIFdLXQorCQkvL09ubHkgZm9yIGJhc2ViYW5kIHZlcnNpb24gMgorLy8JCWNhc2UgUkZfTUFYSU1fMzE3OgorCQljYXNlIFJGX01BWElNXzI4MjU6CisJCWNhc2UgUkZfTUFYSU1fMjgyNzoKKwkJY2FzZSBSRl9NQVhJTV8yODI4OgorCisJCQlwbHRtcFswXSA9IDB4MTZiNDdlNzc7IC8vIDB4MTAwMCBBR0NfQ3RybDEKKwkJCXBsdG1wWzFdID0gMHg5YWZmYWVhNDsgLy8gMHgxMDA0IEFHQ19DdHJsMgorCQkJcGx0bXBbMl0gPSAweDU1ZDAwYTA0OyAvLyAweDEwMDggQUdDX0N0cmwzCisJCQlwbHRtcFszXSA9IDB4ZWZmZjFhMzQ7IC8vIDB4MTAwYyBBR0NfQ3RybDQKKwkJCXBXYjM1UmVnLT5CQjBDID0gMHhlZmZmMWEzNDsKKwkJCXBsdG1wWzRdID0gMHgwZmFiZTBiNzsgLy8gMHgxMDEwIEFHQ19DdHJsNQorCQkJcGx0bXBbNV0gPSAweDAwY2FhMzMyOyAvLyAweDEwMTQgQUdDX0N0cmw2CisJCQlwbHRtcFs2XSA9IDB4ZjY2MzIxMTE7IC8vIDB4MTAxOCBBR0NfQ3RybDcKKwkJCXBsdG1wWzddID0gMHgwRkEzRjBFRDsgLy8gMHgxMDFjIEFHQ19DdHJsOAorCQkJcGx0bXBbOF0gPSAweDA0Q0MzNjQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJCQlwbHRtcFs5XSA9IDB4MDAwMDJBNzk7IC8vIDB4MTAyNCBBR0NfQ3RybDEwCisJCQlwbHRtcFsxMF0gPSAweDQwMDAwNTI4OyAvLyAweDQwMDAwMTI4OyBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1CisJCQlwbHRtcFsxMV0gPSAweDIzMmZkZjMwOyAvLyAweDEwMmMgQV9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMkMgPSAweDIzMmZkZjMwOyAvL01vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24sIGFudGVubmEgMQorCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDEwMDAsIHBsdG1wLCAxMiwgQVVUT19JTkNSRU1FTlQgKTsKKworCQkJcGx0bXBbMF0gPSAweDAwMDAyQzU0OyAvLyAweDEwMzAgQl9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMzAgPSAweDAwMDAyQzU0OworCQkJcGx0bXBbMV0gPSAweDAwQzBENkM1OyAvLyAweDEwMzQgQV9UWFJYX0N0cmwKKwkJCXBsdG1wWzJdID0gMHg1QjZDODc2OTsgLy8gMHgxMDM4IEJfVFhSWF9DdHJsCisJCQlwbHRtcFszXSA9IDB4MDAwMDAwMDA7IC8vIDB4MTAzYyAxMWEgVFggTFMgZmlsdGVyCisJCQlwV2IzNVJlZy0+QkIzQyA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFs0XSA9IDB4MDAwMDNGMjk7IC8vIDB4MTA0MCAxMWEgVFggTFMgZmlsdGVyCisJCQlwbHRtcFs1XSA9IDB4MEVGRUZCRkU7IC8vIDB4MTA0NCAxMWEgVFggTFMgZmlsdGVyCisJCQlwbHRtcFs2XSA9IDB4MDA0NTNCMjQ7IC8vIDB4MTA0OCAxMWIgVFggUkMgZmlsdGVyCisJCQlwbHRtcFs3XSA9IDB4MEQwMEZERkY7IC8vIDB4MTA0YyAxMWIgVFggUkMgZmlsdGVyCisJCQlwbHRtcFs4XSA9IDB4MjcxMDYyMDg7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjUwID0gMHgyNzEwNjIwODsKKwkJCXBsdG1wWzldID0gMDsgLy8gMHgxMDU0CisJCQlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFsxMF0gPSAweDY0NjQ2NDY0OyAvLyAweDEwNTggSVFfQWxwaGEKKwkJCXBXYjM1UmVnLT5CQjU4ID0gMHg2NDY0NjQ2NDsKKwkJCXBsdG1wWzExXSA9IDB4QUEyOEMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA3MCwgMHgwMDAwMDA0NSApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9NQVhJTV8yODI5OgorCisJCQlwbHRtcFswXSA9IDB4MTZiNDdlNzc7IC8vIDB4MTAwMCBBR0NfQ3RybDEKKwkJCXBsdG1wWzFdID0gMHg5YWZmYWVhNDsgLy8gMHgxMDA0IEFHQ19DdHJsMgorCQkJcGx0bXBbMl0gPSAweDU1ZDAwYTA0OyAvLyAweDEwMDggQUdDX0N0cmwzCisJCQlwbHRtcFszXSA9IDB4ZjRmZjE2MzI7IC8vIDB4ZWZmZjFhMzQ7IC8vIDB4MTAwYyBBR0NfQ3RybDQgTW9kaWZ5IGZvciAzMydzIDEuMC45NQorCQkJcFdiMzVSZWctPkJCMEMgPSAweGY0ZmYxNjMyOyAvLyAweGVmZmYxYTM0OyBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1CisJCQlwbHRtcFs0XSA9IDB4MGZhYmUwYjc7IC8vIDB4MTAxMCBBR0NfQ3RybDUKKwkJCXBsdG1wWzVdID0gMHgwMGNhYTMzMjsgLy8gMHgxMDE0IEFHQ19DdHJsNgorCQkJcGx0bXBbNl0gPSAweGY4NjMyMTEyOyAvLyAweGY2NjMyMTExOyAvLyAweDEwMTggQUdDX0N0cmw3IE1vZGlmeSBmb3IgMzMncyAxLjAuOTUKKwkJCXBsdG1wWzddID0gMHgwRkEzRjBFRDsgLy8gMHgxMDFjIEFHQ19DdHJsOAorCQkJcGx0bXBbOF0gPSAweDA0Q0MzNjQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJCQlwbHRtcFs5XSA9IDB4MDAwMDJBNzk7IC8vIDB4MTAyNCBBR0NfQ3RybDEwCisJCQlwbHRtcFsxMF0gPSAweDQwMDAwNTI4OyAvLyAweDQwMDAwMTI4OyBtb2RpZnkgZm9yIDMzJ3MgMS4wLjk1CisJCQlwbHRtcFsxMV0gPSAweDIzMmZkZjMwOyAvLyAweDEwMmMgQV9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMkMgPSAweDIzMmZkZjMwOyAvL01vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24sIGFudGVubmEgMQorCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDEwMDAsIHBsdG1wLCAxMiwgQVVUT19JTkNSRU1FTlQgKTsKKworCQkJcGx0bXBbMF0gPSAweDAwMDAyQzU0OyAvLyAweDEwMzAgQl9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMzAgPSAweDAwMDAyQzU0OworCQkJcGx0bXBbMV0gPSAweDAwQzBENkM1OyAvLyAweDEwMzQgQV9UWFJYX0N0cmwKKwkJCXBsdG1wWzJdID0gMHg1YjJjODc2OTsgLy8gMHg1QjZDODc2OTsgLy8gMHgxMDM4IEJfVFhSWF9DdHJsIE1vZGlmeSBmb3IgMzMncyAxLjAuOTUKKwkJCXBsdG1wWzNdID0gMHgwMDAwMDAwMDsgLy8gMHgxMDNjIDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBXYjM1UmVnLT5CQjNDID0gMHgwMDAwMDAwMDsKKwkJCXBsdG1wWzRdID0gMHgwMDAwM0YyOTsgLy8gMHgxMDQwIDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBsdG1wWzVdID0gMHgwRUZFRkJGRTsgLy8gMHgxMDQ0IDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBsdG1wWzZdID0gMHgwMDJjMjYxNzsgLy8gMHgwMDQ1M0IyNDsgLy8gMHgxMDQ4IDExYiBUWCBSQyBmaWx0ZXIgTW9kaWZ5IGZvciAzMydzIDEuMC45NQorCQkJcGx0bXBbN10gPSAweDA4MDBmZWZmOyAvLyAweDBEMDBGREZGOyAvLyAweDEwNGMgMTFiIFRYIFJDIGZpbHRlciBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1CisJCQlwbHRtcFs4XSA9IDB4MjcxMDYyMDg7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjUwID0gMHgyNzEwNjIwODsKKwkJCXBsdG1wWzldID0gMDsgLy8gMHgxMDU0CisJCQlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFsxMF0gPSAweDY0NjQ0YTRhOyAvLyAweDY0NjQ2NDY0OyAvLyAweDEwNTggSVFfQWxwaGEgTW9kaWZ5IGZvciAzMydzIDEuMC45NQorCQkJcFdiMzVSZWctPkJCNTggPSAweDY0NjQ2NDY0OworCQkJcGx0bXBbMTFdID0gMHhBQTI4QzAwMDsgLy8gMHgxMDVjIERDX0NhbmNlbAorCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDEwMzAsIHBsdG1wLCAxMiwgQVVUT19JTkNSRU1FTlQgKTsKKworCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDcwLCAweDAwMDAwMDQ1ICk7CisJCQlicmVhazsKKworCQljYXNlIFJGX0FJUk9IQV8yMjMwOgorCisJCQlwbHRtcFswXSA9IDBYMTY3NjRBNzc7IC8vIDB4MTAwMCBBR0NfQ3RybDEJCS8vMHgxNjc2NUE3NworCQkJcGx0bXBbMV0gPSAweDlhZmZhZmIyOyAvLyAweDEwMDQgQUdDX0N0cmwyCisJCQlwbHRtcFsyXSA9IDB4NTVkMDBhMDQ7IC8vIDB4MTAwOCBBR0NfQ3RybDMKKwkJCXBsdG1wWzNdID0gMHhGRkZkMjAzYzsgLy8gMHhGRkZiMjAzYTsgLy8gMHgxMDBjIEFHQ19DdHJsNCBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1Lnh4eCB2ZXJzaW9uCisJCQlwV2IzNVJlZy0+QkIwQyA9IDB4RkZGZDIwM2M7CisJCQlwbHRtcFs0XSA9IDBYMEZCRkRDYzU7IC8vIDBYMEZCRkRDQTA7IC8vIDB4MTAxMCBBR0NfQ3RybDUgLy8weDBGQjJFMEI3IE1vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24KKwkJCXBsdG1wWzVdID0gMHgwMGNhYTMzMjsgLy8gMHgwMGNhYTMzMzsgLy8gMHgxMDE0IEFHQ19DdHJsNiBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1Lnh4eCB2ZXJzaW9uCisJCQlwbHRtcFs2XSA9IDBYRjY2MzIxMTE7IC8vIDBYRjE2MzIxMTI7IC8vIDB4MTAxOCBBR0NfQ3RybDcJCS8vMHhmNjYzMjExMiBNb2RpZnkgZm9yIDMzJ3MgMS4wLjk1Lnh4eCB2ZXJzaW9uCisJCQlwbHRtcFs3XSA9IDB4MEZBM0YwRUQ7IC8vIDB4MTAxYyBBR0NfQ3RybDgKKwkJCXBsdG1wWzhdID0gMHgwNEM0MzY0MDsgLy8gMHgxMDIwIEFHQ19DdHJsOQorCQkJcGx0bXBbOV0gPSAweDAwMDAyQTc5OyAvLyAweDEwMjQgQUdDX0N0cmwxMAorCQkJcGx0bXBbMTBdID0gMFg0MDAwMDUyODsJCQkJCQkJLy8weDQwMDAwMjI4CisJCQlwbHRtcFsxMV0gPSAweDIzMmRmRjMwOyAvLyAweDIzMkE5RjMwOyAvLyAweDEwMmMgQV9BQ1FfQ3RybAkvLzB4MjMyYTk3MzAKKwkJCXBXYjM1UmVnLT5CQjJDID0gMHgyMzJkZkYzMDsgLy9Nb2RpZnkgZm9yIDMzJ3MgMS4wLjk1Lnh4eCB2ZXJzaW9uLCBhbnRlbm5hIDEKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDAwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCXBsdG1wWzBdID0gMHgwMDAwMkM1NDsgLy8gMHgxMDMwIEJfQUNRX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjMwID0gMHgwMDAwMkM1NDsKKwkJCXBsdG1wWzFdID0gMHgwMEMwRDZDNTsgLy8gMHgxMDM0IEFfVFhSWF9DdHJsCisJCQlwbHRtcFsyXSA9IDB4NUIyQzg3Njk7IC8vIDB4MTAzOCBCX1RYUlhfQ3RybAkvLzB4NUI2Qzg3NjkKKwkJCXBsdG1wWzNdID0gMHgwMDAwMDAwMDsgLy8gMHgxMDNjIDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBXYjM1UmVnLT5CQjNDID0gMHgwMDAwMDAwMDsKKwkJCXBsdG1wWzRdID0gMHgwMDAwM0YyOTsgLy8gMHgxMDQwIDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBsdG1wWzVdID0gMHgwRUZFRkJGRTsgLy8gMHgxMDQ0IDExYSBUWCBMUyBmaWx0ZXIKKwkJCXBsdG1wWzZdID0gQkI0OF9ERUZBVUxUX0FMMjIzMF8xMUc7IC8vIDB4MTA0OCAxMWIgVFggUkMgZmlsdGVyIDIwMDYwNjEzLjIKKwkJCXBXYjM1UmVnLT5CQjQ4ID0gQkI0OF9ERUZBVUxUX0FMMjIzMF8xMUc7IC8vIDIwMDUxMjIxIGNoMTQgMjAwNjA2MTMuMgorCQkJcGx0bXBbN10gPSBCQjRDX0RFRkFVTFRfQUwyMjMwXzExRzsgLy8gMHgxMDRjIDExYiBUWCBSQyBmaWx0ZXIgMjAwNjA2MTMuMgorCQkJcFdiMzVSZWctPkJCNEMgPSBCQjRDX0RFRkFVTFRfQUwyMjMwXzExRzsgLy8gMjAwNjA2MTMuMSAyMDA2MDYxMy4yCisJCQlwbHRtcFs4XSA9IDB4MjcxMDYyMDA7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjUwID0gMHgyNzEwNjIwMDsKKwkJCXBsdG1wWzldID0gMDsgLy8gMHgxMDU0CisJCQlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFsxMF0gPSAweDUyNTI0MjQyOyAvLyAweDEwNTggSVFfQWxwaGEKKwkJCXBXYjM1UmVnLT5CQjU4ID0gMHg1MjUyNDI0MjsKKwkJCXBsdG1wWzExXSA9IDB4QUEwQUMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA3MCwgMHgwMDAwMDA0NSApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9BSVJPSEFfMjIzMFM6IC8vIDIwMDYwNDIwIEFkZCB0aGlzCisKKwkJCXBsdG1wWzBdID0gMFgxNjc2NEE3NzsgLy8gMHgxMDAwIEFHQ19DdHJsMQkJLy8weDE2NzY1QTc3CisJCQlwbHRtcFsxXSA9IDB4OWFmZmFmYjI7IC8vIDB4MTAwNCBBR0NfQ3RybDIKKwkJCXBsdG1wWzJdID0gMHg1NWQwMGEwNDsgLy8gMHgxMDA4IEFHQ19DdHJsMworCQkJcGx0bXBbM10gPSAweEZGRmQyMDNjOyAvLyAweEZGRmIyMDNhOyAvLyAweDEwMGMgQUdDX0N0cmw0IE1vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24KKwkJCXBXYjM1UmVnLT5CQjBDID0gMHhGRkZkMjAzYzsKKwkJCXBsdG1wWzRdID0gMFgwRkJGRENjNTsgLy8gMFgwRkJGRENBMDsgLy8gMHgxMDEwIEFHQ19DdHJsNSAvLzB4MEZCMkUwQjcgTW9kaWZ5IGZvciAzMydzIDEuMC45NS54eHggdmVyc2lvbgorCQkJcGx0bXBbNV0gPSAweDAwY2FhMzMyOyAvLyAweDAwY2FhMzMzOyAvLyAweDEwMTQgQUdDX0N0cmw2IE1vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24KKwkJCXBsdG1wWzZdID0gMFhGNjYzMjExMTsgLy8gMFhGMTYzMjExMjsgLy8gMHgxMDE4IEFHQ19DdHJsNwkJLy8weGY2NjMyMTEyIE1vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24KKwkJCXBsdG1wWzddID0gMHgwRkEzRjBFRDsgLy8gMHgxMDFjIEFHQ19DdHJsOAorCQkJcGx0bXBbOF0gPSAweDA0QzQzNjQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJCQlwbHRtcFs5XSA9IDB4MDAwMDJBNzk7IC8vIDB4MTAyNCBBR0NfQ3RybDEwCisJCQlwbHRtcFsxMF0gPSAwWDQwMDAwNTI4OwkJCQkJCQkvLzB4NDAwMDAyMjgKKwkJCXBsdG1wWzExXSA9IDB4MjMyZGZGMzA7IC8vIDB4MjMyQTlGMzA7IC8vIDB4MTAyYyBBX0FDUV9DdHJsCS8vMHgyMzJhOTczMAorCQkJcFdiMzVSZWctPkJCMkMgPSAweDIzMmRmRjMwOyAvL01vZGlmeSBmb3IgMzMncyAxLjAuOTUueHh4IHZlcnNpb24sIGFudGVubmEgMQorCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDEwMDAsIHBsdG1wLCAxMiwgQVVUT19JTkNSRU1FTlQgKTsKKworCQkJcGx0bXBbMF0gPSAweDAwMDAyQzU0OyAvLyAweDEwMzAgQl9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMzAgPSAweDAwMDAyQzU0OworCQkJcGx0bXBbMV0gPSAweDAwQzBENkM1OyAvLyAweDEwMzQgQV9UWFJYX0N0cmwKKwkJCXBsdG1wWzJdID0gMHg1QjJDODc2OTsgLy8gMHgxMDM4IEJfVFhSWF9DdHJsCS8vMHg1QjZDODc2OQorCQkJcGx0bXBbM10gPSAweDAwMDAwMDAwOyAvLyAweDEwM2MgMTFhIFRYIExTIGZpbHRlcgorCQkJcFdiMzVSZWctPkJCM0MgPSAweDAwMDAwMDAwOworCQkJcGx0bXBbNF0gPSAweDAwMDAzRjI5OyAvLyAweDEwNDAgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNV0gPSAweDBFRkVGQkZFOyAvLyAweDEwNDQgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNl0gPSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExRzsgLy8gMHgxMDQ4IDExYiBUWCBSQyBmaWx0ZXIgMjAwNjA2MTMuMgorCQkJcFdiMzVSZWctPkJCNDggPSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExRzsgLy8gMjAwNTEyMjEgY2gxNCAyMDA2MDYxMy4yCisJCQlwbHRtcFs3XSA9IEJCNENfREVGQVVMVF9BTDIyMzBfMTFHOyAvLyAweDEwNGMgMTFiIFRYIFJDIGZpbHRlciAyMDA2MDYxMy4yCisJCQlwV2IzNVJlZy0+QkI0QyA9IEJCNENfREVGQVVMVF9BTDIyMzBfMTFHOyAvLyAyMDA2MDYxMy4xCisJCQlwbHRtcFs4XSA9IDB4MjcxMDYyMDA7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjUwID0gMHgyNzEwNjIwMDsKKwkJCXBsdG1wWzldID0gMDsgLy8gMHgxMDU0CisJCQlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFsxMF0gPSAweDUyNTIzMjMyOyAvLyAyMDA2MDQxOSAweDUyNTI0MjQyOyAvLyAweDEwNTggSVFfQWxwaGEKKwkJCXBXYjM1UmVnLT5CQjU4ID0gMHg1MjUyMzIzMjsgLy8gMjAwNjA0MTkgMHg1MjUyNDI0MjsKKwkJCXBsdG1wWzExXSA9IDB4QUEwQUMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA3MCwgMHgwMDAwMDA0NSApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9BSVJPSEFfNzIzMDoKKy8qCisJCQlwbHRtcFswXSA9IDB4MTZhODRhNzc7IC8vIDB4MTAwMCBBR0NfQ3RybDEKKwkJCXBsdG1wWzFdID0gMHg5YWZmYWZiMjsgLy8gMHgxMDA0IEFHQ19DdHJsMgorCQkJcGx0bXBbMl0gPSAweDU1ZDAwYTA0OyAvLyAweDEwMDggQUdDX0N0cmwzCisJCQlwbHRtcFszXSA9IDB4RkZGYjIwM2E7IC8vIDB4MTAwYyBBR0NfQ3RybDQKKwkJCXBXYjM1UmVnLT5CQjBjID0gMHhGRkZiMjAzYTsKKwkJCXBsdG1wWzRdID0gMHgwRkJGRENCNzsgLy8gMHgxMDEwIEFHQ19DdHJsNQorCQkJcGx0bXBbNV0gPSAweDAwY2FhMzMzOyAvLyAweDEwMTQgQUdDX0N0cmw2CisJCQlwbHRtcFs2XSA9IDB4ZjY2MzIxMTI7IC8vIDB4MTAxOCBBR0NfQ3RybDcKKwkJCXBsdG1wWzddID0gMHgwRkEzRjBFRDsgLy8gMHgxMDFjIEFHQ19DdHJsOAorCQkJcGx0bXBbOF0gPSAweDA0QzQzNjQwOyAvLyAweDEwMjAgQUdDX0N0cmw5CisJCQlwbHRtcFs5XSA9IDB4MDAwMDJBNzk7IC8vIDB4MTAyNCBBR0NfQ3RybDEwCisJCQlwbHRtcFsxMF0gPSAweDQwMDAwMjI4OworCQkJcGx0bXBbMTFdID0gMHgyMzJBOUYzMDsvLyAweDEwMmMgQV9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMmMgPSAweDIzMkE5RjMwOworCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDEwMDAsIHBsdG1wLCAxMiwgQVVUT19JTkNSRU1FTlQgKTsKKworCQkJcGx0bXBbMF0gPSAweDAwMDAyQzU0OyAvLyAweDEwMzAgQl9BQ1FfQ3RybAorCQkJcFdiMzVSZWctPkJCMzAgPSAweDAwMDAyQzU0OworCQkJcGx0bXBbMV0gPSAweDAwQzBENkM1OyAvLyAweDEwMzQgQV9UWFJYX0N0cmwKKwkJCXBsdG1wWzJdID0gMHg1QjJDODc2OTsgLy8gMHgxMDM4IEJfVFhSWF9DdHJsCisJCQlwbHRtcFszXSA9IDB4MDAwMDAwMDA7IC8vIDB4MTAzYyAxMWEgVFggTFMgZmlsdGVyCisJCQlwV2IzNVJlZy0+QkIzYyA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFs0XSA9IDB4MDAwMDNGMjk7IC8vIDB4MTA0MCAxMWEgVFggTFMgZmlsdGVyCisJCQlwbHRtcFs1XSA9IDB4MEVGRUZCRkU7IC8vIDB4MTA0NCAxMWEgVFggTFMgZmlsdGVyCisJCQlwbHRtcFs2XSA9IDB4MDA0NTNCMjQ7IC8vIDB4MTA0OCAxMWIgVFggUkMgZmlsdGVyCisJCQlwbHRtcFs3XSA9IDB4MEUwMEZFRkY7IC8vIDB4MTA0YyAxMWIgVFggUkMgZmlsdGVyCisJCQlwbHRtcFs4XSA9IDB4MjcxMDYyMDA7IC8vIDB4MTA1MCBNT0RFX0N0cmwKKwkJCXBXYjM1UmVnLT5CQjUwID0gMHgyNzEwNjIwMDsKKwkJCXBsdG1wWzldID0gMDsgLy8gMHgxMDU0CisJCQlwV2IzNVJlZy0+QkI1NCA9IDB4MDAwMDAwMDA7CisJCQlwbHRtcFsxMF0gPSAweDY0NjQ1MjUyOyAvLyAweDEwNTggSVFfQWxwaGEKKwkJCXBXYjM1UmVnLT5CQjU4ID0gMHg2NDY0NTI1MjsKKwkJCXBsdG1wWzExXSA9IDB4QUEwQUMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisqLworCQkJQkJQcm9jZXNzb3JfQUw3MjMwXzI0MDAoIHBId0RhdGEgKTsKKworCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDcwLCAweDAwMDAwMDQ1ICk7CisJCQlicmVhazsKKworCQljYXNlIFJGX1dCXzI0MjoKKwkJY2FzZSBSRl9XQl8yNDJfMTogLy8gMjAwNjA2MTkuNSBBZGQKKworCQkJcGx0bXBbMF0gPSAweDE2QTg1MjVEOyAvLyAweDEwMDAgQUdDX0N0cmwxCisJCQlwbHRtcFsxXSA9IDB4OUFGRjlBQkE7IC8vIDB4MTAwNCBBR0NfQ3RybDIKKwkJCXBsdG1wWzJdID0gMHg1NUQwMEEwNDsgLy8gMHgxMDA4IEFHQ19DdHJsMworCQkJcGx0bXBbM10gPSAweEVFRTkxQzMyOyAvLyAweDEwMGMgQUdDX0N0cmw0CisJCQlwV2IzNVJlZy0+QkIwQyA9IDB4RUVFOTFDMzI7CisJCQlwbHRtcFs0XSA9IDB4MEZBQ0RDQzU7IC8vIDB4MTAxMCBBR0NfQ3RybDUKKwkJCXBsdG1wWzVdID0gMHgwMDBBQTM0NDsgLy8gMHgxMDE0IEFHQ19DdHJsNgorCQkJcGx0bXBbNl0gPSAweDIyMjIyMjIxOyAvLyAweDEwMTggQUdDX0N0cmw3CisJCQlwbHRtcFs3XSA9IDB4MEZBM0YwRUQ7IC8vIDB4MTAxYyBBR0NfQ3RybDgKKwkJCXBsdG1wWzhdID0gMHgwNENDMzQ0MDsgLy8gMjAwNTEwMTggMHgwM0NCMzQ0MDsgLy8gMHgxMDIwIEFHQ19DdHJsOSAyMDA1MTAxNCAweDAzQzMzNDQwCisJCQlwbHRtcFs5XSA9IDB4QTkwMDJBNzk7IC8vIDB4MTAyNCBBR0NfQ3RybDEwCisJCQlwbHRtcFsxMF0gPSAweDQwMDAwNTI4OyAvLyAweDEwMjgKKwkJCXBsdG1wWzExXSA9IDB4MjM0NTdGMzA7IC8vIDB4MTAyYyBBX0FDUV9DdHJsCisJCQlwV2IzNVJlZy0+QkIyQyA9IDB4MjM0NTdGMzA7CisJCQlXYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MTAwMCwgcGx0bXAsIDEyLCBBVVRPX0lOQ1JFTUVOVCApOworCisJCQlwbHRtcFswXSA9IDB4MDAwMDJDNTQ7IC8vIDB4MTAzMCBCX0FDUV9DdHJsCisJCQlwV2IzNVJlZy0+QkIzMCA9IDB4MDAwMDJDNTQ7CisJCQlwbHRtcFsxXSA9IDB4MDBDMEQ2QzU7IC8vIDB4MTAzNCBBX1RYUlhfQ3RybAorCQkJcGx0bXBbMl0gPSAweDVCMkM4NzY5OyAvLyAweDEwMzggQl9UWFJYX0N0cmwKKwkJCXBsdG1wWzNdID0gcEh3RGF0YS0+QkIzY19jYWw7IC8vIDB4MTAzYyAxMWEgVFggTFMgZmlsdGVyCisJCQlwV2IzNVJlZy0+QkIzQyA9IHBId0RhdGEtPkJCM2NfY2FsOworCQkJcGx0bXBbNF0gPSAweDAwMDAzRjI5OyAvLyAweDEwNDAgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNV0gPSAweDBFRkVGQkZFOyAvLyAweDEwNDQgMTFhIFRYIExTIGZpbHRlcgorCQkJcGx0bXBbNl0gPSBCQjQ4X0RFRkFVTFRfV0IyNDJfMTFHOyAvLyAweDEwNDggMTFiIFRYIFJDIGZpbHRlciAyMDA2MDYxMy4yCisJCQlwV2IzNVJlZy0+QkI0OCA9IEJCNDhfREVGQVVMVF9XQjI0Ml8xMUc7IC8vIDIwMDYwNjEzLjEgMjAwNjA2MTMuMgorCQkJcGx0bXBbN10gPSBCQjRDX0RFRkFVTFRfV0IyNDJfMTFHOyAvLyAweDEwNGMgMTFiIFRYIFJDIGZpbHRlciAyMDA2MDYxMy4yCisJCQlwV2IzNVJlZy0+QkI0QyA9IEJCNENfREVGQVVMVF9XQjI0Ml8xMUc7IC8vIDIwMDYwNjEzLjEgMjAwNjA2MTMuMgorCQkJcGx0bXBbOF0gPSAweDI3MTA2MjA4OyAvLyAweDEwNTAgTU9ERV9DdHJsCisJCQlwV2IzNVJlZy0+QkI1MCA9IDB4MjcxMDYyMDg7CisJCQlwbHRtcFs5XSA9IHBId0RhdGEtPkJCNTRfY2FsOyAvLyAweDEwNTQKKwkJCXBXYjM1UmVnLT5CQjU0ID0gcEh3RGF0YS0+QkI1NF9jYWw7CisJCQlwbHRtcFsxMF0gPSAweDUyNTIzMTMxOyAvLyAweDEwNTggSVFfQWxwaGEKKwkJCXBXYjM1UmVnLT5CQjU4ID0gMHg1MjUyMzEzMTsKKwkJCXBsdG1wWzExXSA9IDB4QUEwQUMwMDA7IC8vIDIwMDYwODI1IDB4QUEyQUMwMDA7IC8vIDB4MTA1YyBEQ19DYW5jZWwKKwkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwbHRtcCwgMTIsIEFVVE9fSU5DUkVNRU5UICk7CisKKwkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA3MCwgMHgwMDAwMDA0NSApOworCQkJYnJlYWs7CisgICAgfQorCisJLy8gRmlsbCB0aGUgTE5BIHRhYmxlCisJcFdiMzVSZWctPkxOQVZhbHVlWzBdID0gKHU4KShwV2IzNVJlZy0+QkIwQyAmIDB4ZmYpOworCXBXYjM1UmVnLT5MTkFWYWx1ZVsxXSA9IDA7CisJcFdiMzVSZWctPkxOQVZhbHVlWzJdID0gKHU4KSgocFdiMzVSZWctPkJCMEMgJiAweGZmMDApPj44KTsKKwlwV2IzNVJlZy0+TE5BVmFsdWVbM10gPSAwOworCisJLy8gRmlsbCBTUTMgdGFibGUKKwlmb3IoIGk9MDsgaTxNQVhfU1EzX0ZJTFRFUl9TSVpFOyBpKysgKQorCQlwV2IzNVJlZy0+U1EzX2ZpbHRlcltpXSA9IDB4MmY7IC8vIGhhbGYgb2YgQml0IDAgfiA2Cit9CisKK3ZvaWQgc2V0X3R4X3Bvd2VyX3Blcl9jaGFubmVsX21heDI4MjkoICBwaHdfZGF0YV90IHBId0RhdGEsICBDaGFuSW5mbyBDaGFubmVsKQoreworCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgMTAwICk7IC8vIDIwMDYwNjIwLjEgTW9kaWZ5Cit9CisKK3ZvaWQgc2V0X3R4X3Bvd2VyX3Blcl9jaGFubmVsX2FsMjIzMCggIHBod19kYXRhX3QgcEh3RGF0YSwgIENoYW5JbmZvIENoYW5uZWwgKQoreworCXU4CWluZGV4ID0gMTAwOworCisJaWYgKHBId0RhdGEtPlR4VmdhRm9yMjRbQ2hhbm5lbC5DaGFuTm8gLSAxXSAhPSAweGZmKSAvLyAyMDA2MDYyMC4xIEFkZAorCQlpbmRleCA9IHBId0RhdGEtPlR4VmdhRm9yMjRbQ2hhbm5lbC5DaGFuTm8gLSAxXTsKKworCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgaW5kZXggKTsKK30KKwordm9pZCBzZXRfdHhfcG93ZXJfcGVyX2NoYW5uZWxfYWw3MjMwKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgQ2hhbkluZm8gQ2hhbm5lbCkKK3sKKwl1OAlpLCBpbmRleCA9IDEwMDsKKworCXN3aXRjaCAoIENoYW5uZWwuYmFuZCApCisJeworCQljYXNlIEJBTkRfVFlQRV9EU1NTOgorCQljYXNlIEJBTkRfVFlQRV9PRkRNXzI0OgorCQkJeworCQkJCWlmIChwSHdEYXRhLT5UeFZnYUZvcjI0W0NoYW5uZWwuQ2hhbk5vIC0gMV0gIT0gMHhmZikKKwkJCQkJaW5kZXggPSBwSHdEYXRhLT5UeFZnYUZvcjI0W0NoYW5uZWwuQ2hhbk5vIC0gMV07CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBCQU5EX1RZUEVfT0ZETV81OgorCQkJeworCQkJCWZvciAoaSA9MDsgaTwzNTsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKENoYW5uZWwuQ2hhbk5vID09IHBId0RhdGEtPlR4VmdhRm9yNTBbaV0uQ2hhbk5vKQorCQkJCQl7CisJCQkJCQlpZiAocEh3RGF0YS0+VHhWZ2FGb3I1MFtpXS5UeFZnYVZhbHVlICE9IDB4ZmYpCisJCQkJCQkJaW5kZXggPSBwSHdEYXRhLT5UeFZnYUZvcjUwW2ldLlR4VmdhVmFsdWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCX0KKwlSRlN5bnRoZXNpemVyX1NldFBvd2VySW5kZXgoIHBId0RhdGEsIGluZGV4ICk7Cit9CisKK3ZvaWQgc2V0X3R4X3Bvd2VyX3Blcl9jaGFubmVsX3diMjQyKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgQ2hhbkluZm8gQ2hhbm5lbCkKK3sKKwl1OAlpbmRleCA9IDEwMDsKKworCXN3aXRjaCAoIENoYW5uZWwuYmFuZCApCisJeworCQljYXNlIEJBTkRfVFlQRV9EU1NTOgorCQljYXNlIEJBTkRfVFlQRV9PRkRNXzI0OgorCQkJeworCQkJCWlmIChwSHdEYXRhLT5UeFZnYUZvcjI0W0NoYW5uZWwuQ2hhbk5vIC0gMV0gIT0gMHhmZikKKwkJCQkJaW5kZXggPSBwSHdEYXRhLT5UeFZnYUZvcjI0W0NoYW5uZWwuQ2hhbk5vIC0gMV07CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBCQU5EX1RZUEVfT0ZETV81OgorCQkJYnJlYWs7CisJfQorCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgaW5kZXggKTsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBSRlN5bnRoZXNpemVyX1N3aXRjaGluZ0NoYW5uZWwgLS0KKy8vCisvLyBEZXNjcmlwdGlvbjoKKy8vICAgU3dpdGhjaCB0aGUgUkYgY2hhbm5lbC4KKy8vCisvLyBBcmd1bWVudHM6CisvLyAgIHBId0RhdGEgICAgLSBIYW5kbGUgb2YgdGhlIFVTQiBEZXZpY2UuCisvLyAgIENoYW5uZWwgICAgLSBUaGUgY2hhbm5lbCBuby4KKy8vCisvLyBSZXR1cm4gdmFsdWVzOgorLy8gICBOb25lLgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkCitSRlN5bnRoZXNpemVyX1N3aXRjaGluZ0NoYW5uZWwoICBwaHdfZGF0YV90IHBId0RhdGEsICBDaGFuSW5mbyBDaGFubmVsICkKK3sKKwlQV0IzNVJFRyBwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCXUzMglwbHRtcFsxNl07IC8vIFRoZSAxNiBpcyB0aGUgbWF4aW11bSBjYXBhYmlsaXR5IG9mIGhhcmR3YXJlCisJdTMyCWNvdW50LCBsdG1wOworCXU4CWksIGosIG51bWJlcjsKKwl1OAlDaG5sVG1wOworCisJc3dpdGNoKCBwSHdEYXRhLT5waHlfdHlwZSApCisJeworCQljYXNlIFJGX01BWElNXzI4MjU6CisJCWNhc2UgUkZfTUFYSU1fVjE6IC8vIDExZyBXaW5ib25kIDJuZCBCQih3aXRoIFBoeSBib2FyZCAodjEpICsgTWF4aW0gMzMxKQorCisJCQlpZiggQ2hhbm5lbC5iYW5kIDw9IEJBTkRfVFlQRV9PRkRNXzI0ICkgLy8gY2hhbm5lbCAxIH4gMTMKKwkJCXsKKwkJCQlmb3IoIGk9MDsgaTwzOyBpKysgKQorCQkJCQlwbHRtcFtpXSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgxOCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBtYXgyODI1X2NoYW5uZWxfZGF0YV8yNFtDaGFubmVsLkNoYW5Oby0xXVtpXSwgMTgpOworCQkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgwODY0LCBwbHRtcCwgMywgTk9fSU5DUkVNRU5UICk7CisJCQl9CisJCQlSRlN5bnRoZXNpemVyX1NldFBvd2VySW5kZXgoIHBId0RhdGEsIDEwMCApOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9NQVhJTV8yODI3OgorCisJCQlpZiggQ2hhbm5lbC5iYW5kIDw9IEJBTkRfVFlQRV9PRkRNXzI0ICkgLy8gY2hhbm5lbCAxIH4gMTMKKwkJCXsKKwkJCQlmb3IoIGk9MDsgaTwzOyBpKysgKQorCQkJCQlwbHRtcFtpXSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgxOCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBtYXgyODI3X2NoYW5uZWxfZGF0YV8yNFtDaGFubmVsLkNoYW5Oby0xXVtpXSwgMTgpOworCQkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgwODY0LCBwbHRtcCwgMywgTk9fSU5DUkVNRU5UICk7CisJCQl9CisJCQllbHNlIGlmKCBDaGFubmVsLmJhbmQgPT0gQkFORF9UWVBFX09GRE1fNSApIC8vIGNoYW5uZWwgMzYgfiA2NAorCQkJeworCQkJCUNobmxUbXAgPSAoQ2hhbm5lbC5DaGFuTm8gLSAzNikgLyA0OworCQkJCWZvciggaT0wOyBpPDM7IGkrKyApCisJCQkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIG1heDI4MjdfY2hhbm5lbF9kYXRhXzUwW0NobmxUbXBdW2ldLCAxOCk7CisJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCAzLCBOT19JTkNSRU1FTlQgKTsKKwkJCX0KKwkJCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgMTAwICk7CisJCQlicmVhazsKKworCQljYXNlIFJGX01BWElNXzI4Mjg6CisKKwkJCWlmKCBDaGFubmVsLmJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQgKSAvLyBjaGFubmVsIDEgfiAxMworCQkJeworCQkJCWZvciggaT0wOyBpPDM7IGkrKyApCisJCQkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIG1heDI4MjhfY2hhbm5lbF9kYXRhXzI0W0NoYW5uZWwuQ2hhbk5vLTFdW2ldLCAxOCk7CisJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCAzLCBOT19JTkNSRU1FTlQgKTsKKwkJCX0KKwkJCWVsc2UgaWYoIENoYW5uZWwuYmFuZCA9PSBCQU5EX1RZUEVfT0ZETV81ICkgLy8gY2hhbm5lbCAzNiB+IDY0CisJCQl7CisJCQkJQ2hubFRtcCA9IChDaGFubmVsLkNoYW5ObyAtIDM2KSAvIDQ7CisJCQkJZm9yICggaSA9IDA7IGkgPCAzOyBpKyspCisJCQkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIG1heDI4MjhfY2hhbm5lbF9kYXRhXzUwW0NobmxUbXBdW2ldLCAxOCk7CisJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCAzLCBOT19JTkNSRU1FTlQgKTsKKwkJCX0KKwkJCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgMTAwICk7CisJCQlicmVhazsKKworCQljYXNlIFJGX01BWElNXzI4Mjk6CisKKwkJCWlmKCBDaGFubmVsLmJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQpCisJCQl7CisJCQkJZm9yKCBpPTA7IGk8MzsgaSsrICkKKwkJCQkJcGx0bXBbaV0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyOV9jaGFubmVsX2RhdGFfMjRbQ2hhbm5lbC5DaGFuTm8tMV1baV0sIDE4KTsKKwkJCQlXYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgcGx0bXAsIDMsIE5PX0lOQ1JFTUVOVCApOworCQkJfQorCQkJZWxzZSBpZiggQ2hhbm5lbC5iYW5kID09IEJBTkRfVFlQRV9PRkRNXzUgKQorCQkJeworCQkJCWNvdW50ID0gc2l6ZW9mKG1heDI4MjlfY2hhbm5lbF9kYXRhXzUwKSAvIHNpemVvZihtYXgyODI5X2NoYW5uZWxfZGF0YV81MFswXSk7CisKKwkJCQlmb3IoIGk9MDsgaTxjb3VudDsgaSsrICkKKwkJCQl7CisJCQkJCWlmKCBtYXgyODI5X2NoYW5uZWxfZGF0YV81MFtpXVswXSA9PSBDaGFubmVsLkNoYW5ObyApCisJCQkJCXsKKwkJCQkJCWZvciggaj0wOyBqPDM7IGorKyApCisJCQkJCQkJcGx0bXBbal0gPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyOV9jaGFubmVsX2RhdGFfNTBbaV1baisxXSwgMTgpOworCQkJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCAzLCBOT19JTkNSRU1FTlQgKTsKKworCQkJCQkJaWYoIChtYXgyODI5X2NoYW5uZWxfZGF0YV81MFtpXVszXSAmIDB4M0ZGRkYpID09IDB4MkE5NDYgKQorCQkJCQkJeworCQkJCQkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggKDU8PDE4KXwweDJBOTA2LCAxOCk7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODY0LCBsdG1wICk7CisJCQkJCQl9CisJCQkJCQllbHNlICAgIC8vIDB4MkE5QzYKKwkJCQkJCXsKKwkJCQkJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoICg1PDwxOCl8MHgyQTk4NiwgMTgpOworCQkJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQkJc2V0X3R4X3Bvd2VyX3Blcl9jaGFubmVsX21heDI4MjkoIHBId0RhdGEsIENoYW5uZWwgKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfQUlST0hBXzIyMzA6CisJCWNhc2UgUkZfQUlST0hBXzIyMzBTOiAvLyAyMDA2MDQyMCBBZGQgdGhpcworCisJCQlpZiggQ2hhbm5lbC5iYW5kIDw9IEJBTkRfVFlQRV9PRkRNXzI0ICkgLy8gY2hhbm5lbCAxIH4gMTQKKwkJCXsKKwkJCQlmb3IoIGk9MDsgaTwyOyBpKysgKQorCQkJCQlwbHRtcFtpXSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyMCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBhbDIyMzBfY2hhbm5lbF9kYXRhXzI0W0NoYW5uZWwuQ2hhbk5vLTFdW2ldLCAyMCk7CisJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCAyLCBOT19JTkNSRU1FTlQgKTsKKwkJCX0KKwkJCXNldF90eF9wb3dlcl9wZXJfY2hhbm5lbF9hbDIyMzAoIHBId0RhdGEsIENoYW5uZWwgKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUkZfQUlST0hBXzcyMzA6CisKKwkJCS8vU3RhcnQgdG8gZmlsbCBSRiBwYXJhbWV0ZXJzLCBQTExfT04gc2hvdWxkIGJlIHB1bGxlZCBsb3cuCisJCQkvL1diMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNkYywgMHgwMDAwMDAwMCApOworCQkJLy9XQkRFQlVHKCgiKiBQTExfT04gICAgbG93XG4iKSk7CisKKwkJCS8vQ2hhbm5lbCBpbmRlcGVuZGVudCByZWdpc3RlcnMKKwkJCWlmKCBDaGFubmVsLmJhbmQgIT0gcEh3RGF0YS0+YmFuZCkKKwkJCXsKKwkJCQlpZiAoQ2hhbm5lbC5iYW5kIDw9IEJBTkRfVFlQRV9PRkRNXzI0KQorCQkJCXsKKwkJCQkJLy9VcGRhdGUgQkIgcmVnaXN0ZXIKKwkJCQkJQkJQcm9jZXNzb3JfQUw3MjMwXzI0MDAocEh3RGF0YSk7CisKKwkJCQkJbnVtYmVyID0gc2l6ZW9mKGFsNzIzMF9yZl9kYXRhXzI0KS9zaXplb2YoYWw3MjMwX3JmX2RhdGFfMjRbMF0pOworCQkJCQlTZXRfQ2hhbkluZGVwX1JmRGF0YV9hbDcyMzBfMjQocEh3RGF0YSwgcGx0bXAsIG51bWJlcik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8vVXBkYXRlIEJCIHJlZ2lzdGVyCisJCQkJCUJCUHJvY2Vzc29yX0FMNzIzMF81MDAwKHBId0RhdGEpOworCisJCQkJCW51bWJlciA9IHNpemVvZihhbDcyMzBfcmZfZGF0YV81MCkvc2l6ZW9mKGFsNzIzMF9yZl9kYXRhXzUwWzBdKTsKKwkJCQkJU2V0X0NoYW5JbmRlcF9SZkRhdGFfYWw3MjMwXzUwKHBId0RhdGEsIHBsdG1wLCBudW1iZXIpOworCQkJCX0KKworCQkJCS8vIFdyaXRlIHRvIHJlZ2lzdGVyLiBudW1iZXIgbXVzdCBsZXNzIGFuZCBlcXVhbCB0aGFuIDE2CisJCQkJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4NjQsIHBsdG1wLCBudW1iZXIsIE5PX0lOQ1JFTUVOVCApOworCQkJCSNpZmRlZiBfUEVfU1RBVEVfRFVNUF8KKwkJCQlXQkRFQlVHKCgiQmFuZCBjaGFuZ2VkXG4iKSk7CisJCQkJI2VuZGlmCisJCQl9CisKKwkJCWlmKCBDaGFubmVsLmJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQgKSAvLyBjaGFubmVsIDEgfiAxNAorCQkJeworCQkJCWZvciggaT0wOyBpPDI7IGkrKyApCisJCQkJCXBsdG1wW2ldID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IChhbDcyMzBfY2hhbm5lbF9kYXRhXzI0W0NoYW5uZWwuQ2hhbk5vLTFdW2ldJjB4ZmZmZmZmKTsKKwkJCQlXYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgcGx0bXAsIDIsIE5PX0lOQ1JFTUVOVCApOworCQkJfQorCQkJZWxzZSBpZiggQ2hhbm5lbC5iYW5kID09IEJBTkRfVFlQRV9PRkRNXzUgKQorCQkJeworCQkJCS8vVXBkYXRlIFJlZzEyCisJCQkJaWYgKChDaGFubmVsLkNoYW5ObyA+IDY0KSAmJiAoQ2hhbm5lbC5DaGFuTm8gPD0gMTY1KSkKKwkJCQl7CisJCQkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgMHgwMDE0M2M7CisJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgbHRtcCApOworCQkJCX0KKwkJCQllbHNlCS8vcmVnMTIgPSAweDAwMTQ3YyBhdCBDaGFubmVsIDQ5MjAgfiA1MzIwCisJCQkJeworCQkJCQlsdG1wID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IDB4MDAxNDdjOworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NjQsIGx0bXAgKTsKKwkJCQl9CisKKwkJCQljb3VudCA9IHNpemVvZihhbDcyMzBfY2hhbm5lbF9kYXRhXzUpIC8gc2l6ZW9mKGFsNzIzMF9jaGFubmVsX2RhdGFfNVswXSk7CisKKwkJCQlmb3IgKGk9MDsgaTxjb3VudDsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKGFsNzIzMF9jaGFubmVsX2RhdGFfNVtpXVswXSA9PSBDaGFubmVsLkNoYW5ObykKKwkJCQkJeworCQkJCQkJZm9yKCBqPTA7IGo8MzsgaisrICkKKwkJCQkJCQlwbHRtcFtqXSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCAoIGFsNzIzMF9jaGFubmVsX2RhdGFfNVtpXVtqKzFdJjB4ZmZmZmZmKTsKKwkJCQkJCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwgMHgwODY0LCBwbHRtcCwgMywgTk9fSU5DUkVNRU5UICk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlzZXRfdHhfcG93ZXJfcGVyX2NoYW5uZWxfYWw3MjMwKHBId0RhdGEsIENoYW5uZWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9XQl8yNDI6CisJCWNhc2UgUkZfV0JfMjQyXzE6IC8vIDIwMDYwNjE5LjUgQWRkCisKKwkJCWlmKCBDaGFubmVsLmJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQgKSAvLyBjaGFubmVsIDEgfiAxNAorCQkJeworCQkJCWx0bXAgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggdzg5cmYyNDJfY2hhbm5lbF9kYXRhXzI0W0NoYW5uZWwuQ2hhbk5vLTFdWzBdLCAyNCk7CisJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHg4NjQsIGx0bXAgKTsKKwkJCX0KKwkJCXNldF90eF9wb3dlcl9wZXJfY2hhbm5lbF93YjI0MihwSHdEYXRhLCBDaGFubmVsKTsKKwkJCWJyZWFrOworCX0KKworCWlmKCBDaGFubmVsLmJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQgKQorCXsKKyAgICAgICAgLy8gQkI6IHNlbGVjdCAyLjQgR0h6LCBiaXRbMTItMTFdPTAwCisJCXBXYjM1UmVnLT5CQjUwICY9IH4oQklUKDExKXxCSVQoMTIpKTsKKwkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDUwLCBwV2IzNVJlZy0+QkI1MCApOyAvLyBNT0RFX0N0cmwKKyAgICAgICAgLy8gTUFDOiBzZWxlY3QgMi40IEdIeiwgYml0WzVdPTAKKwkJcFdiMzVSZWctPk03OF9FUlBJbmZvcm1hdGlvbiAmPSB+QklUKDUpOworCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NzgsIHBXYjM1UmVnLT5NNzhfRVJQSW5mb3JtYXRpb24gKTsKKyAgICAgICAgLy8gZW5hYmxlIDExYiBCYXNlYmFuZAorCQlwV2IzNVJlZy0+QkIzMCAmPSB+QklUKDMxKTsKKwkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDMwLCBwV2IzNVJlZy0+QkIzMCApOworCX0KKwllbHNlIGlmKCAoQ2hhbm5lbC5iYW5kID09IEJBTkRfVFlQRV9PRkRNXzUpICkKKwl7CisgICAgICAgIC8vIEJCOiBzZWxlY3QgNSBHSHoKKwkJcFdiMzVSZWctPkJCNTAgJj0gfihCSVQoMTEpfEJJVCgxMikpOworCQlpZiAoQ2hhbm5lbC5DaGFuTm8gPD02NCApCisJCQlwV2IzNVJlZy0+QkI1MCB8PSBCSVQoMTIpOwkJCQkvLyAxMC01LjI1R0h6CisJCWVsc2UgaWYgKChDaGFubmVsLkNoYW5ObyA+PSAxMDApICYmIChDaGFubmVsLkNoYW5ObyA8PSAxMjQpKQorCQkJcFdiMzVSZWctPkJCNTAgfD0gQklUKDExKTsJCQkJLy8gMDEtNS40OEdIegorCQllbHNlIGlmICgoQ2hhbm5lbC5DaGFuTm8gPj0xMjgpICYmIChDaGFubmVsLkNoYW5ObyA8PSAxNjEpKQorCQkJcFdiMzVSZWctPkJCNTAgfD0gKEJJVCgxMil8QklUKDExKSk7CS8vIDExLTUuNzc1R0h6CisJCWVsc2UJLy9DaGFuIDE4NCB+IDE5NiB3aWxsIHVzZSBiaXRbMTItMTFdID0gMTAgaW4gdmVyc2lvbiBzaC1zcmMtMS4yLjI1CisJCQlwV2IzNVJlZy0+QkI1MCB8PSBCSVQoMTIpOworCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNTAsIHBXYjM1UmVnLT5CQjUwICk7IC8vIE1PREVfQ3RybAorCisJCS8vKDEpIE03OCBzaG91bGQgYWx3YXkgdXNlIDIuNEcgc2V0dGluZyB3aGVuIHVzaW5nIFJGX0FJUk9IQV83MjMwCisJCS8vKDIpIEJCMzAgaGFzIGJlZW4gdXBkYXRlZCBwcmV2aW91c2x5LgorCQlpZiAocEh3RGF0YS0+cGh5X3R5cGUgIT0gUkZfQUlST0hBXzcyMzApCisJCXsKKyAgICAJICAgIC8vIE1BQzogc2VsZWN0IDUgR0h6LCBiaXRbNV09MQorCQkJcFdiMzVSZWctPk03OF9FUlBJbmZvcm1hdGlvbiB8PSBCSVQoNSk7CisJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NzgsIHBXYjM1UmVnLT5NNzhfRVJQSW5mb3JtYXRpb24gKTsKKworICAgIAkgICAgLy8gZGlzYWJsZSAxMWIgQmFzZWJhbmQKKwkJCXBXYjM1UmVnLT5CQjMwIHw9IEJJVCgzMSk7CisJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwMzAsIHBXYjM1UmVnLT5CQjMwICk7CisJCX0KKwl9Cit9CisKKy8vU2V0IHRoZSB0eCBwb3dlciBkaXJlY3RseSBmcm9tIERVVCBHVUksIG5vdCBmcm9tIHRoZSBFRVBST00uIFJldHVybiB0aGUgY3VycmVudCBzZXR0aW5nCit1OCBSRlN5bnRoZXNpemVyX1NldFBvd2VySW5kZXgoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCBQb3dlckluZGV4ICkKK3sKKwl1MzIJQmFuZCA9IHBId0RhdGEtPmJhbmQ7CisJdTgJaW5kZXg9MDsKKworCWlmKCBwSHdEYXRhLT5wb3dlcl9pbmRleCA9PSBQb3dlckluZGV4ICkgLy8gMjAwNjA2MjAuMSBBZGQKKwkJcmV0dXJuIFBvd2VySW5kZXg7CisKKwlpZiAoUkZfTUFYSU1fMjgyNSA9PSBwSHdEYXRhLT5waHlfdHlwZSkKKwl7CisJCS8vIENoYW5uZWwgMSAtIDEzCisJCWluZGV4ID0gUkZTeW50aGVzaXplcl9TZXRNYXhpbTI4MjVQb3dlciggcEh3RGF0YSwgUG93ZXJJbmRleCApOworCX0KKwllbHNlIGlmIChSRl9NQVhJTV8yODI3ID09IHBId0RhdGEtPnBoeV90eXBlKQorCXsKKwkJaWYoIEJhbmQgPD0gQkFORF9UWVBFX09GRE1fMjQgKSAgICAvLyBDaGFubmVsIDEgLSAxMworCQkJaW5kZXggPSBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyN18yNFBvd2VyKCBwSHdEYXRhLCBQb3dlckluZGV4ICk7CisJCWVsc2UvLyBpZiggQmFuZCA9PSBCQU5EX1RZUEVfT0ZETV81ICkgIC8vIENoYW5uZWwgMzYgLSA2NAorCQkJaW5kZXggPSBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyN181MFBvd2VyKCBwSHdEYXRhLCBQb3dlckluZGV4ICk7CisJfQorCWVsc2UgaWYgKFJGX01BWElNXzI4MjggPT0gcEh3RGF0YS0+cGh5X3R5cGUpCisJeworCQlpZiggQmFuZCA8PSBCQU5EX1RZUEVfT0ZETV8yNCApICAgIC8vIENoYW5uZWwgMSAtIDEzCisJCQlpbmRleCA9IFJGU3ludGhlc2l6ZXJfU2V0TWF4aW0yODI4XzI0UG93ZXIoIHBId0RhdGEsIFBvd2VySW5kZXggKTsKKwkJZWxzZS8vIGlmKCBCYW5kID09IEJBTkRfVFlQRV9PRkRNXzUgKSAgLy8gQ2hhbm5lbCAzNiAtIDY0CisJCQlpbmRleCA9IFJGU3ludGhlc2l6ZXJfU2V0TWF4aW0yODI4XzUwUG93ZXIoIHBId0RhdGEsIFBvd2VySW5kZXggKTsKKwl9CisJZWxzZSBpZiggUkZfQUlST0hBXzIyMzAgPT0gcEh3RGF0YS0+cGh5X3R5cGUgKQorCXsKKwkJLy9Qb3dlciBpbmRleDogMCB+IDYzIC8vIENoYW5uZWwgMSAtIDE0CisJCWluZGV4ID0gUkZTeW50aGVzaXplcl9TZXRBaXJvaGEyMjMwUG93ZXIoIHBId0RhdGEsIFBvd2VySW5kZXggKTsKKwkJaW5kZXggPSAodTgpYWwyMjMwX3R4dmdhX2RhdGFbaW5kZXhdWzFdOworCX0KKwllbHNlIGlmKCBSRl9BSVJPSEFfMjIzMFMgPT0gcEh3RGF0YS0+cGh5X3R5cGUgKSAvLyAyMDA2MDQyMCBBZGQgdGhpcworCXsKKwkJLy9Qb3dlciBpbmRleDogMCB+IDYzIC8vIENoYW5uZWwgMSAtIDE0CisJCWluZGV4ID0gUkZTeW50aGVzaXplcl9TZXRBaXJvaGEyMjMwUG93ZXIoIHBId0RhdGEsIFBvd2VySW5kZXggKTsKKwkJaW5kZXggPSAodTgpYWwyMjMwX3R4dmdhX2RhdGFbaW5kZXhdWzFdOworCX0KKwllbHNlIGlmKCBSRl9BSVJPSEFfNzIzMCA9PSBwSHdEYXRhLT5waHlfdHlwZSApCisJeworCQkvL1Bvd2VyIGluZGV4OiAwIH4gNjMKKwkJaW5kZXggPSBSRlN5bnRoZXNpemVyX1NldEFpcm9oYTcyMzBQb3dlciggcEh3RGF0YSwgUG93ZXJJbmRleCApOworCQlpbmRleCA9ICh1OClhbDcyMzBfdHh2Z2FfZGF0YVtpbmRleF1bMV07CisJfQorCWVsc2UgaWYoIChSRl9XQl8yNDIgPT0gcEh3RGF0YS0+cGh5X3R5cGUpIHx8CisJCSAoUkZfV0JfMjQyXzEgPT0gcEh3RGF0YS0+cGh5X3R5cGUpICkgLy8gMjAwNjA2MTkuNSBBZGQKKwl7CisJCS8vUG93ZXIgaW5kZXg6IDAgfiAxOSBmb3Igb3JpZ2luYWwuIE5ldyByYW5nZSBpcyAwIH4gMzMKKwkJaW5kZXggPSBSRlN5bnRoZXNpemVyX1NldFdpbmJvbmQyNDJQb3dlciggcEh3RGF0YSwgUG93ZXJJbmRleCApOworCQlpbmRleCA9ICh1OCl3ODlyZjI0Ml90eHZnYV9kYXRhW2luZGV4XVsxXTsKKwl9CisKKwlwSHdEYXRhLT5wb3dlcl9pbmRleCA9IGluZGV4OyAgLy8gQmFja3VwIGN1cnJlbnQKKwlyZXR1cm4gaW5kZXg7Cit9CisKKy8vLS0gU3ViIGZ1bmN0aW9uCit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyOF8yNFBvd2VyKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCB1OCBpbmRleCApCit7CisJdTMyCQlQb3dlckRhdGE7CisJaWYoIGluZGV4ID4gMSApIGluZGV4ID0gMTsKKwlQb3dlckRhdGEgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyOF9wb3dlcl9kYXRhXzI0W2luZGV4XSwgMTgpOworCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgUG93ZXJEYXRhICk7CisJcmV0dXJuIGluZGV4OworfQorLy8tLQordTggUkZTeW50aGVzaXplcl9TZXRNYXhpbTI4MjhfNTBQb3dlciggIHBod19kYXRhX3QgcEh3RGF0YSwgdTggaW5kZXggKQoreworCXUzMgkJUG93ZXJEYXRhOworCWlmKCBpbmRleCA+IDEgKSBpbmRleCA9IDE7CisJUG93ZXJEYXRhID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIG1heDI4MjhfcG93ZXJfZGF0YV81MFtpbmRleF0sIDE4KTsKKwlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NjQsIFBvd2VyRGF0YSApOworCXJldHVybiBpbmRleDsKK30KKy8vLS0KK3U4IFJGU3ludGhlc2l6ZXJfU2V0TWF4aW0yODI3XzI0UG93ZXIoICBwaHdfZGF0YV90IHBId0RhdGEsIHU4IGluZGV4ICkKK3sKKwl1MzIJCVBvd2VyRGF0YTsKKwlpZiggaW5kZXggPiAxICkgaW5kZXggPSAxOworCVBvd2VyRGF0YSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgxOCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBtYXgyODI3X3Bvd2VyX2RhdGFfMjRbaW5kZXhdLCAxOCk7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODY0LCBQb3dlckRhdGEgKTsKKwlyZXR1cm4gaW5kZXg7Cit9CisvLy0tCit1OCBSRlN5bnRoZXNpemVyX1NldE1heGltMjgyN181MFBvd2VyKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCB1OCBpbmRleCApCit7CisJdTMyCQlQb3dlckRhdGE7CisJaWYoIGluZGV4ID4gMSApIGluZGV4ID0gMTsKKwlQb3dlckRhdGEgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMTggPDwgMjQpIHwgQml0UmV2ZXJzZSggbWF4MjgyN19wb3dlcl9kYXRhXzUwW2luZGV4XSwgMTgpOworCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgUG93ZXJEYXRhICk7CisJcmV0dXJuIGluZGV4OworfQorLy8tLQordTggUkZTeW50aGVzaXplcl9TZXRNYXhpbTI4MjVQb3dlciggIHBod19kYXRhX3QgcEh3RGF0YSwgdTggaW5kZXggKQoreworCXUzMgkJUG93ZXJEYXRhOworCWlmKCBpbmRleCA+IDEgKSBpbmRleCA9IDE7CisJUG93ZXJEYXRhID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDE4IDw8IDI0KSB8IEJpdFJldmVyc2UoIG1heDI4MjVfcG93ZXJfZGF0YV8yNFtpbmRleF0sIDE4KTsKKwlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NjQsIFBvd2VyRGF0YSApOworCXJldHVybiBpbmRleDsKK30KKy8vLS0KK3U4IFJGU3ludGhlc2l6ZXJfU2V0QWlyb2hhMjIzMFBvd2VyKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCB1OCBpbmRleCApCit7CisJdTMyCQlQb3dlckRhdGE7CisJdTgJCWksY291bnQ7CisKKwljb3VudCA9IHNpemVvZihhbDIyMzBfdHh2Z2FfZGF0YSkgLyBzaXplb2YoYWwyMjMwX3R4dmdhX2RhdGFbMF0pOworCWZvciAoaT0wOyBpPGNvdW50OyBpKyspCisJeworCQlpZiAoYWwyMjMwX3R4dmdhX2RhdGFbaV1bMV0gPj0gaW5kZXgpCisJCQlicmVhazsKKwl9CisJaWYgKGkgPT0gY291bnQpCisJCWktLTsKKworCVBvd2VyRGF0YSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyMCA8PCAyNCkgfCBCaXRSZXZlcnNlKCBhbDIyMzBfdHh2Z2FfZGF0YVtpXVswXSwgMjApOworCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgUG93ZXJEYXRhICk7CisJcmV0dXJuIGk7Cit9CisvLy0tCit1OCBSRlN5bnRoZXNpemVyX1NldEFpcm9oYTcyMzBQb3dlciggIHBod19kYXRhX3QgcEh3RGF0YSwgdTggaW5kZXggKQoreworCXUzMgkJUG93ZXJEYXRhOworCXU4CQlpLGNvdW50OworCisJLy9Qb3dlckRhdGEgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjAgPDwgMjQpIHwgQml0UmV2ZXJzZSggYWlyb2hhX3Bvd2VyX2RhdGFfMjRbaW5kZXhdLCAyMCk7CisJY291bnQgPSBzaXplb2YoYWw3MjMwX3R4dmdhX2RhdGEpIC8gc2l6ZW9mKGFsNzIzMF90eHZnYV9kYXRhWzBdKTsKKwlmb3IgKGk9MDsgaTxjb3VudDsgaSsrKQorCXsKKwkJaWYgKGFsNzIzMF90eHZnYV9kYXRhW2ldWzFdID49IGluZGV4KQorCQkJYnJlYWs7CisJfQorCWlmIChpID09IGNvdW50KQorCQlpLS07CisJUG93ZXJEYXRhID0gKDEgPDwgMzEpIHwgKDAgPDwgMzApIHwgKDI0IDw8IDI0KSB8IChhbDcyMzBfdHh2Z2FfZGF0YVtpXVswXSYweGZmZmZmZik7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODY0LCBQb3dlckRhdGEgKTsKKwlyZXR1cm4gaTsKK30KKwordTggUkZTeW50aGVzaXplcl9TZXRXaW5ib25kMjQyUG93ZXIoICBwaHdfZGF0YV90IHBId0RhdGEsIHU4IGluZGV4ICkKK3sKKwl1MzIJCVBvd2VyRGF0YTsKKwl1OAkJaSxjb3VudDsKKworCWNvdW50ID0gc2l6ZW9mKHc4OXJmMjQyX3R4dmdhX2RhdGEpIC8gc2l6ZW9mKHc4OXJmMjQyX3R4dmdhX2RhdGFbMF0pOworCWZvciAoaT0wOyBpPGNvdW50OyBpKyspCisJeworCQlpZiAodzg5cmYyNDJfdHh2Z2FfZGF0YVtpXVsxXSA+PSBpbmRleCkKKwkJCWJyZWFrOworCX0KKwlpZiAoaSA9PSBjb3VudCkKKwkJaS0tOworCisJLy8gU2V0IFR4VmdhIGludG8gUkYKKwlQb3dlckRhdGEgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggdzg5cmYyNDJfdHh2Z2FfZGF0YVtpXVswXSwgMjQpOworCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg2NCwgUG93ZXJEYXRhICk7CisKKwkvLyBVcGRhdGUgQkI0OCBCQjRDIEJCNTggZm9yIGhpZ2ggcHJlY2lzaW9uIHR4dmdhCisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDQ4LCB3ODlyZjI0Ml90eHZnYV9kYXRhW2ldWzJdICk7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDRjLCB3ODlyZjI0Ml90eHZnYV9kYXRhW2ldWzNdICk7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgxMDU4LCB3ODlyZjI0Ml90eHZnYV9kYXRhW2ldWzRdICk7CisKKy8vIFJmIHZnYSAwIH4gMyBmb3IgdGVtcGVyYXR1cmUgY29tcGVuc2F0ZS4gSXQgd2lsbCBhZmZlY3QgdGhlIHNjYW4gQnNzLgorLy8gVGhlIGkgdmFsdWUgZXF1YWxzIHRvIDggb3IgNyB1c3VhbGx5LiBTbyBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gc2V0dXAgdGhpcyBSRiByZWdpc3Rlci4KKy8vCWlmKCBpIDw9IDMgKQorLy8JCVBvd2VyRGF0YSA9ICgxIDw8IDMxKSB8ICgwIDw8IDMwKSB8ICgyNCA8PCAyNCkgfCBCaXRSZXZlcnNlKCAweDAwMDAyNCwgMjQgKTsKKy8vCWVsc2UKKy8vCQlQb3dlckRhdGEgPSAoMSA8PCAzMSkgfCAoMCA8PCAzMCkgfCAoMjQgPDwgMjQpIHwgQml0UmV2ZXJzZSggMHgwMDE4MjQsIDI0ICk7CisvLwlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NjQsIFBvd2VyRGF0YSApOworCXJldHVybiBpOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEeHhfaW5pdGlhbCAtLQorLy8gTXh4X2luaXRpYWwgLS0KKwkvLworLy8gIFJvdXRpbmUgRGVzY3JpcHRpb246CisvLwkJSW5pdGlhbCB0aGUgaGFyZHdhcmUgc2V0dGluZyBhbmQgbW9kdWxlIHZhcmlhYmxlCisJLy8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQgRHh4X2luaXRpYWwoICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisKKwkvLyBPbGQgSUM6U2luZ2xlIG1vZGUgb25seS4KKwkvLyBOZXcgSUM6IG9wZXJhdGlvbiBkZWNpZGUgYnkgU29mdHdhcmUgc2V0IGJpdFs0XS4gMTptdWx0aXBsZSAwOiBzaW5nbGUKKwlwV2IzNVJlZy0+RDAwX0RtYUNvbnRyb2wgPSAweGMwMDAwMDA0OwkvL1R4b24sIFJ4b24sIG11bHRpcGxlIFJ4IGZvciBuZXcgNGsgRE1BCisJCQkJCQkJCQkJCS8vVHhvbiwgUnhvbiwgc2luZ2xlIFJ4IGZvciBvbGQgOGsgQVNJQworCWlmKCAhSEFMX1VTQl9NT0RFX0JVUlNUKCBwSHdEYXRhICkgKQorCQlwV2IzNVJlZy0+RDAwX0RtYUNvbnRyb2wgPSAweGMwMDAwMDAwOy8vVHhvbiwgUnhvbiwgc2luZ2xlIFJ4IGZvciBuZXcgNGsgRE1BCisKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwNDAwLCBwV2IzNVJlZy0+RDAwX0RtYUNvbnRyb2wgKTsKK30KKwordm9pZCBNeHhfaW5pdGlhbCggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwl1MzIJCXRtcDsKKwl1MzIJCXBsdG1wWzExXTsKKwl1MTYJaTsKKworCisJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkvLyBJbml0aWFsIE14eCByZWdpc3RlcgorCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwkvLyBNMDAgYml0IHNldAorI2lmZGVmIF9JQlNTX0JFQUNPTl9TRVFfU1RJQ0tfCisJcFdiMzVSZWctPk0wMF9NYWNDb250cm9sID0gMDsgLy8gU29sdmUgYmVhY29uIHNlcXVlbmNlIG51bWJlciBzdG9wIGJ5IHNvZnR3YXJlCisjZWxzZQorCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCA9IDB4ODAwMDAwMDA7IC8vIFNvbHZlIGJlYWNvbiBzZXF1ZW5jZSBudW1iZXIgc3RvcCBieSBoYXJkd2FyZQorI2VuZGlmCisKKwkvLyBNMjQgZGlzYWJsZSBlbnRlciBwb3dlciBzYXZlLCBCQiBSeE9uIGFuZCBlbmFibGUgTkFWIGF0dGFjaworCXBXYjM1UmVnLT5NMjRfTWFjQ29udHJvbCA9IDB4MDgwNDAwNDI7CisJcGx0bXBbMF0gPSBwV2IzNVJlZy0+TTI0X01hY0NvbnRyb2w7CisKKwlwbHRtcFsxXSA9IDA7IC8vIFNraXAgTTI4LCBiZWNhdXNlIG5vIGluaXRpYWxpemUgdmFsdWUgaXMgcmVxdWlyZWQuCisKKwkvLyBNMkMgQ1dtaW4gYW5kIENXbWF4IHNldHRpbmcKKwlwSHdEYXRhLT5jd21pbiA9IERFRkFVTFRfQ1dNSU47CisJcEh3RGF0YS0+Y3dtYXggPSBERUZBVUxUX0NXTUFYOworCXBXYjM1UmVnLT5NMkNfTWFjQ29udHJvbCA9IERFRkFVTFRfQ1dNSU4gPDwgMTA7CisJcFdiMzVSZWctPk0yQ19NYWNDb250cm9sIHw9IERFRkFVTFRfQ1dNQVg7CisJcGx0bXBbMl0gPSBwV2IzNVJlZy0+TTJDX01hY0NvbnRyb2w7CisKKwkvLyBNMzAgQlNTSUQKKwlwbHRtcFszXSA9ICooUFVMT05HKXBId0RhdGEtPmJzc2lkOworCisJLy8gTTM0CisJcEh3RGF0YS0+QUlEID0gREVGQVVMVF9BSUQ7CisJdG1wID0gKihQVVNIT1JUKShwSHdEYXRhLT5ic3NpZCs0KTsKKwl0bXAgfD0gREVGQVVMVF9BSUQgPDwgMTY7CisJcGx0bXBbNF0gPSB0bXA7CisKKwkvLyBNMzgKKwlwV2IzNVJlZy0+TTM4X01hY0NvbnRyb2wgPSAoREVGQVVMVF9SQVRFX1JFVFJZX0xJTUlUPDw4KSB8IChERUZBVUxUX0xPTkdfUkVUUllfTElNSVQgPDwgNCkgfCBERUZBVUxUX1NIT1JUX1JFVFJZX0xJTUlUOworCXBsdG1wWzVdID0gcFdiMzVSZWctPk0zOF9NYWNDb250cm9sOworCisJLy8gTTNDCisJdG1wID0gKERFRkFVTFRfUElGU1QgPDwgMjYpIHwgKERFRkFVTFRfRUlGU1QgPDwgMTYpIHwgKERFRkFVTFRfRElGU1QgPDwgOCkgfCAoREVGQVVMVF9TSUZTVCA8PCA0KSB8IERFRkFVTFRfT1NJRlNUIDsKKwlwV2IzNVJlZy0+TTNDX01hY0NvbnRyb2wgPSB0bXA7CisJcGx0bXBbNl0gPSB0bXA7CisKKwkvLyBNNDAKKwlwSHdEYXRhLT5zbG90X3RpbWVfc2VsZWN0ID0gREVGQVVMVF9TTE9UX1RJTUU7CisJdG1wID0gKERFRkFVTFRfQVRJTVdEIDw8IDE2KSB8IERFRkFVTFRfU0xPVF9USU1FOworCXBXYjM1UmVnLT5NNDBfTWFjQ29udHJvbCA9IHRtcDsKKwlwbHRtcFs3XSA9IHRtcDsKKworCS8vIE00NAorCXRtcCA9IERFRkFVTFRfTUFYX1RYX01TRFVfTElGRV9USU1FIDw8IDEwOyAvLyAqMTAyNAorCXBXYjM1UmVnLT5NNDRfTWFjQ29udHJvbCA9IHRtcDsKKwlwbHRtcFs4XSA9IHRtcDsKKworCS8vIE00OAorCXBId0RhdGEtPkJlYWNvblBlcmlvZCA9IERFRkFVTFRfQkVBQ09OX0lOVEVSVkFMOworCXBId0RhdGEtPlByb2JlRGVsYXkgPSBERUZBVUxUX1BST0JFX0RFTEFZX1RJTUU7CisJdG1wID0gKERFRkFVTFRfQkVBQ09OX0lOVEVSVkFMIDw8IDE2KSB8IERFRkFVTFRfUFJPQkVfREVMQVlfVElNRTsKKwlwV2IzNVJlZy0+TTQ4X01hY0NvbnRyb2wgPSB0bXA7CisJcGx0bXBbOV0gPSB0bXA7CisKKwkvL000QworCXBXYjM1UmVnLT5NNENfTWFjU3RhdHVzID0gKERFRkFVTFRfUFJPVE9DT0xfVkVSU0lPTiA8PCAzMCkgfCAoREVGQVVMVF9NQUNfUE9XRVJfU1RBVEUgPDwgMjgpIHwgKERFRkFVTFRfRFRJTV9BTEVSVF9USU1FIDw8IDI0KTsKKwlwbHRtcFsxMF0gPSBwV2IzNVJlZy0+TTRDX01hY1N0YXR1czsKKworCS8vIEJ1cnN0IHdyaXRlCisJLy9XYjM1UmVnX0J1cnN0V3JpdGUoIHBId0RhdGEsIDB4MDgyNCwgcGx0bXAsIDExLCBBVVRPX0lOQ1JFTUVOVCApOworCWZvciggaT0wOyBpPDExOyBpKysgKQorCQlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODI0ICsgaSo0LCBwbHRtcFtpXSApOworCisJLy8gTTYwCisJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg2MCwgMHgxMjQ4MTI0OCApOworCXBXYjM1UmVnLT5NNjBfTWFjQ29udHJvbCA9IDB4MTI0ODEyNDg7CisKKwkvLyBNNjgKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwODY4LCAweDAwMDUwOTAwICk7IC8vIDIwMDUxMDE4IDB4MDAwRjBGMDAgKTsgLy8gOTQwOTMwIDB4MDAxMzEzMDAKKwlwV2IzNVJlZy0+TTY4X01hY0NvbnRyb2wgPSAweDAwMDUwOTAwOworCisJLy8gTTk4CisJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDg5OCwgMHhmZmZmODg4OCApOworCXBXYjM1UmVnLT5NOThfTWFjQ29udHJvbCA9IDB4ZmZmZjg4ODg7Cit9CisKKwordm9pZCBVeHhfcG93ZXJfb2ZmX3Byb2NlZHVyZSggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJLy8gU1csIFBNVSByZXNldCBhbmQgdHVybiBvZmYgY2xvY2sKKwlXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgMHgwM2IwLCAzICk7CisJV2IzNVJlZ19Xcml0ZVN5bmMoIHBId0RhdGEsIDB4MDNmMCwgMHhmOSApOworfQorCisvL0RlY2lkZSB0aGUgVHhWZ2Egb2YgZXZlcnkgY2hhbm5lbAordm9pZCBHZXRUeFZnYUZyb21FRVBST00oICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCXUzMgkJaSwgaiwgbHRtcDsKKwl1MTYJCVZhbHVlW01BWF9UWFZHQV9FRVBST01dOworCVBVQ0hBUgkJcGN0bXA7CisJdTgJCWN0bXA9MDsKKworCS8vIEdldCB0aGUgZW50aXJlIFR4VmdhIHNldHRpbmcgaW4gRUVQUk9NCisJZm9yKCBpPTA7IGk8TUFYX1RYVkdBX0VFUFJPTTsgaSsrICkKKwl7CisJCVdiMzVSZWdfV3JpdGVTeW5jKCBwSHdEYXRhLCAweDAzYjQsIDB4MDgxMDAwMDAgKyAweDAwMDEwMDAwKmkgKTsKKwkJV2IzNVJlZ19SZWFkU3luYyggcEh3RGF0YSwgMHgwM2I0LCAmbHRtcCApOworCQlWYWx1ZVtpXSA9ICh1MTYpKCBsdG1wICYgMHhmZmZmICk7IC8vIEdldCAxNiBiaXQgYXZhaWxhYmxlCisJCVZhbHVlW2ldID0gY3B1X3RvX2xlMTYoIFZhbHVlW2ldICk7IC8vIFs3OjBdMjQxMiBbNzowXTI0MTcgLi4uLgorCX0KKworCS8vIEFkanVzdCB0aGUgZmlsZWQgd2hpY2ggZmlsbHMgd2l0aCByZXNlcnZlZCB2YWx1ZS4KKwlwY3RtcCA9IChQVUNIQVIpVmFsdWU7CisJZm9yKCBpPTA7IGk8KE1BWF9UWFZHQV9FRVBST00qMik7IGkrKyApCisJeworCQlpZiggcGN0bXBbaV0gIT0gMHhmZiApCisJCQljdG1wID0gcGN0bXBbaV07CisJCWVsc2UKKwkJCXBjdG1wW2ldID0gY3RtcDsKKwl9CisKKwkvLyBBZGp1c3QgV0JfMjQyIHRvIFdCXzI0Ml8xIFR4VmdhIHNjYWxlCisJaWYoIHBId0RhdGEtPnBoeV90eXBlID09IFJGX1dCXzI0MiApCisJeworCQlmb3IoIGk9MDsgaTw0OyBpKysgKSAvLyBPbmx5IDI0MTIgMjQzNyAyNDYyIDI0ODQgY2FzZSBtdXN0IGJlIG1vZGlmaWVkCisJCXsKKwkJCWZvciggaj0wOyBqPChzaXplb2Yodzg5cmYyNDJfdHh2Z2Ffb2xkX21hcHBpbmcpL3NpemVvZih3ODlyZjI0Ml90eHZnYV9vbGRfbWFwcGluZ1swXSkpOyBqKysgKQorCQkJeworCQkJCWlmKCBwY3RtcFtpXSA8ICh1OCl3ODlyZjI0Ml90eHZnYV9vbGRfbWFwcGluZ1tqXVsxXSApCisJCQkJeworCQkJCQlwY3RtcFtpXSA9ICh1OCl3ODlyZjI0Ml90eHZnYV9vbGRfbWFwcGluZ1tqXVswXTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlpZiggaiA9PSAoc2l6ZW9mKHc4OXJmMjQyX3R4dmdhX29sZF9tYXBwaW5nKS9zaXplb2Yodzg5cmYyNDJfdHh2Z2Ffb2xkX21hcHBpbmdbMF0pKSApCisJCQkJcGN0bXBbaV0gPSAodTgpdzg5cmYyNDJfdHh2Z2Ffb2xkX21hcHBpbmdbai0xXVswXTsKKwkJfQorCX0KKworCS8vIDIwMDYwNjIxIEFkZAorCW1lbWNweSggcEh3RGF0YS0+VHhWZ2FTZXR0aW5nSW5FRVBST00sIHBjdG1wLCBNQVhfVFhWR0FfRUVQUk9NKjIgKTsgLy9NQVhfVFhWR0FfRUVQUk9NIGlzIHUxNiBjb3VudAorCUVFUFJPTVR4VmdhQWRqdXN0KCBwSHdEYXRhICk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gd2lsbCBhZmZlY3QgdGhlIFR4VmdhIHBhcmFtZXRlciBpbiBIQUwuIElmIGhhbF9zZXRfY3VycmVudF9jaGFubmVsCisvLyBvciBSRlN5bnRoZXNpemVyX1NldFBvd2VySW5kZXggYmUgY2FsbGVkLCBuZXcgVHhWZ2Egd2lsbCB0YWtlIGVmZmVjdC4KKy8vIFR4VmdhU2V0dGluZ0luRUVQUk9NIG9mIHNId0RhdGEgaXMgYW4gdTggYXJyYXkgcG9pbnQgdG8gRUVQUk9NIGNvbnRhaW4gZm9yIElTODlDMzUKKy8vIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2UgZGVmYXVsdCBUeFZnYVNldHRpbmdJbkVFUFJPTSBkYXRhIHRvIGNhbGN1bGF0ZSBuZXcgVHhWZ2EuCit2b2lkIEVFUFJPTVR4VmdhQWRqdXN0KCAgcGh3X2RhdGFfdCBwSHdEYXRhICkgLy8gMjAwNjA2MTkuNSBBZGQKK3sKKwlQVUNIQVIJCXBUeFZnYSA9IHBId0RhdGEtPlR4VmdhU2V0dGluZ0luRUVQUk9NOworCXMxNgkJaSwgc3RtcDsKKworCS8vLS0gMi40RyAtLSAyMDA2MDcwNC4yIFJlcXVlc3QgZnJvbSBUaWdlcgorCS8vY2hhbm5lbCAxIH4gNQorCXN0bXAgPSBwVHhWZ2FbMV0gLSBwVHhWZ2FbMF07CisJZm9yKCBpPTA7IGk8NTsgaSsrICkKKwkJcEh3RGF0YS0+VHhWZ2FGb3IyNFtpXSA9IHBUeFZnYVswXSArIHN0bXAqaS80OworCS8vY2hhbm5lbCA2IH4gMTAKKwlzdG1wID0gcFR4VmdhWzJdIC0gcFR4VmdhWzFdOworCWZvciggaT01OyBpPDEwOyBpKysgKQorCQlwSHdEYXRhLT5UeFZnYUZvcjI0W2ldID0gcFR4VmdhWzFdICsgc3RtcCooaS01KS80OworCS8vY2hhbm5lbCAxMSB+IDEzCisJc3RtcCA9IHBUeFZnYVszXSAtIHBUeFZnYVsyXTsKKwlmb3IoIGk9MTA7IGk8MTM7IGkrKyApCisJCXBId0RhdGEtPlR4VmdhRm9yMjRbaV0gPSBwVHhWZ2FbMl0gKyBzdG1wKihpLTEwKS8yOworCS8vY2hhbm5lbCAxNAorCXBId0RhdGEtPlR4VmdhRm9yMjRbMTNdID0gcFR4VmdhWzNdOworCisJLy8tLSA1RyAtLQorCWlmKCBwSHdEYXRhLT5waHlfdHlwZSA9PSBSRl9BSVJPSEFfNzIzMCApCisJeworCQkvL2NoYW5uZWwgMTg0CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMF0uQ2hhbk5vID0gMTg0OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzBdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbNF07CisJCS8vY2hhbm5lbCAxOTYKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFszXS5DaGFuTm8gPSAxOTY7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbM10uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs1XTsKKwkJLy9pbnRlcnBvbGF0ZQorCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzFdLkNoYW5ObyA9IDE4ODsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyXS5DaGFuTm8gPSAxOTI7CisJCXN0bXAgPSBwVHhWZ2FbNV0gLSBwVHhWZ2FbNF07CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMl0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs1XSAtIHN0bXAvMzsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxXS5UeFZnYVZhbHVlID0gcFR4VmdhWzVdIC0gc3RtcCoyLzM7CisKKwkJLy9jaGFubmVsIDE2CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbNl0uQ2hhbk5vID0gMTY7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbNl0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs2XTsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFs0XS5DaGFuTm8gPSA4OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzRdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbNl07CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbNV0uQ2hhbk5vID0gMTI7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbNV0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs2XTsKKworCQkvL2NoYW5uZWwgMzYKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFs4XS5DaGFuTm8gPSAzNjsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFs4XS5UeFZnYVZhbHVlID0gcFR4VmdhWzddOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzddLkNoYW5ObyA9IDM0OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzddLlR4VmdhVmFsdWUgPSBwVHhWZ2FbN107CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbOV0uQ2hhbk5vID0gMzg7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbOV0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs3XTsKKworCQkvL2NoYW5uZWwgNDAKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxMF0uQ2hhbk5vID0gNDA7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTBdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbOF07CisJCS8vY2hhbm5lbCA0OAorCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzE0XS5DaGFuTm8gPSA0ODsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxNF0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVs5XTsKKwkJLy9pbnRlcnBvbGF0ZQorCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzExXS5DaGFuTm8gPSA0MjsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxMl0uQ2hhbk5vID0gNDQ7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTNdLkNoYW5ObyA9IDQ2OworCQlzdG1wID0gcFR4VmdhWzldIC0gcFR4VmdhWzhdOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzEzXS5UeFZnYVZhbHVlID0gcFR4VmdhWzldIC0gc3RtcC80OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzEyXS5UeFZnYVZhbHVlID0gcFR4VmdhWzldIC0gc3RtcCoyLzQ7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTFdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbOV0gLSBzdG1wKjMvNDsKKworCQkvL2NoYW5uZWwgNTIKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxNV0uQ2hhbk5vID0gNTI7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTVdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbMTBdOworCQkvL2NoYW5uZWwgNjQKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxOF0uQ2hhbk5vID0gNjQ7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMThdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbMTFdOworCQkvL2ludGVycG9sYXRlCisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTZdLkNoYW5ObyA9IDU2OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzE3XS5DaGFuTm8gPSA2MDsKKwkJc3RtcCA9IHBUeFZnYVsxMV0gLSBwVHhWZ2FbMTBdOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzE3XS5UeFZnYVZhbHVlID0gcFR4VmdhWzExXSAtIHN0bXAvMzsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxNl0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxMV0gLSBzdG1wKjIvMzsKKworCQkvL2NoYW5uZWwgMTAwCisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMTldLkNoYW5ObyA9IDEwMDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsxOV0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxMl07CisJCS8vY2hhbm5lbCAxMTIKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyMl0uQ2hhbk5vID0gMTEyOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzIyXS5UeFZnYVZhbHVlID0gcFR4VmdhWzEzXTsKKwkJLy9pbnRlcnBvbGF0ZQorCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzIwXS5DaGFuTm8gPSAxMDQ7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMjFdLkNoYW5ObyA9IDEwODsKKwkJc3RtcCA9IHBUeFZnYVsxM10gLSBwVHhWZ2FbMTJdOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzIxXS5UeFZnYVZhbHVlID0gcFR4VmdhWzEzXSAtIHN0bXAvMzsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyMF0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxM10gLSBzdG1wKjIvMzsKKworCQkvL2NoYW5uZWwgMTI4CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMjZdLkNoYW5ObyA9IDEyODsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyNl0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxNF07CisJCS8vaW50ZXJwb2xhdGUKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyM10uQ2hhbk5vID0gMTE2OworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzI0XS5DaGFuTm8gPSAxMjA7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMjVdLkNoYW5ObyA9IDEyNDsKKwkJc3RtcCA9IHBUeFZnYVsxNF0gLSBwVHhWZ2FbMTNdOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzI1XS5UeFZnYVZhbHVlID0gcFR4VmdhWzE0XSAtIHN0bXAvNDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyNF0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxNF0gLSBzdG1wKjIvNDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyM10uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxNF0gLSBzdG1wKjMvNDsKKworCQkvL2NoYW5uZWwgMTQwCisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMjldLkNoYW5ObyA9IDE0MDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyOV0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxNV07CisJCS8vaW50ZXJwb2xhdGUKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyN10uQ2hhbk5vID0gMTMyOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzI4XS5DaGFuTm8gPSAxMzY7CisJCXN0bXAgPSBwVHhWZ2FbMTVdIC0gcFR4VmdhWzE0XTsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFsyOF0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxNV0gLSBzdG1wLzM7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMjddLlR4VmdhVmFsdWUgPSBwVHhWZ2FbMTVdIC0gc3RtcCoyLzM7CisKKwkJLy9jaGFubmVsIDE0OQorCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzMwXS5DaGFuTm8gPSAxNDk7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMzBdLlR4VmdhVmFsdWUgPSBwVHhWZ2FbMTZdOworCQkvL2NoYW5uZWwgMTY1CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMzRdLkNoYW5ObyA9IDE2NTsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFszNF0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxN107CisJCS8vaW50ZXJwb2xhdGUKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFszMV0uQ2hhbk5vID0gMTUzOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzMyXS5DaGFuTm8gPSAxNTc7CisJCXBId0RhdGEtPlR4VmdhRm9yNTBbMzNdLkNoYW5ObyA9IDE2MTsKKwkJc3RtcCA9IHBUeFZnYVsxN10gLSBwVHhWZ2FbMTZdOworCQlwSHdEYXRhLT5UeFZnYUZvcjUwWzMzXS5UeFZnYVZhbHVlID0gcFR4VmdhWzE3XSAtIHN0bXAvNDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFszMl0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxN10gLSBzdG1wKjIvNDsKKwkJcEh3RGF0YS0+VHhWZ2FGb3I1MFszMV0uVHhWZ2FWYWx1ZSA9IHBUeFZnYVsxN10gLSBzdG1wKjMvNDsKKwl9CisKKwkjaWZkZWYgX1BFX1NUQVRFX0RVTVBfCisJV0JERUJVRygoIiBUeFZnYUZvcjI0IDogXG4iKSk7CisJRGF0YURtcCgodTggKilwSHdEYXRhLT5UeFZnYUZvcjI0LCAxNCAsMCk7CisJV0JERUJVRygoIiBUeFZnYUZvcjUwIDogXG4iKSk7CisJRGF0YURtcCgodTggKilwSHdEYXRhLT5UeFZnYUZvcjUwLCA3MCAsMCk7CisJI2VuZGlmCit9CisKK3ZvaWQgQkJQcm9jZXNzb3JfUmF0ZUNoYW5naW5nKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggcmF0ZSApIC8vIDIwMDYwNjEzLjEKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCXVuc2lnbmVkIGNoYXIJCUlzMTFiUmF0ZTsKKworCUlzMTFiUmF0ZSA9IChyYXRlICUgNikgPyAxIDogMDsKKwlzd2l0Y2goIHBId0RhdGEtPnBoeV90eXBlICkKKwl7CisJCWNhc2UgUkZfQUlST0hBXzIyMzA6CisJCWNhc2UgUkZfQUlST0hBXzIyMzBTOiAvLyAyMDA2MDQyMCBBZGQgdGhpcworCQkJaWYoIElzMTFiUmF0ZSApCisJCQl7CisJCQkJaWYoIChwV2IzNVJlZy0+QkI0OCAhPSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExQikgJiYKKwkJCQkJKHBXYjM1UmVnLT5CQjRDICE9IEJCNENfREVGQVVMVF9BTDIyMzBfMTFCKSApCisJCQkJeworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNDgsIEJCNDhfREVGQVVMVF9BTDIyMzBfMTFCICk7CisJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA0YywgQkI0Q19ERUZBVUxUX0FMMjIzMF8xMUIgKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYoIChwV2IzNVJlZy0+QkI0OCAhPSBCQjQ4X0RFRkFVTFRfQUwyMjMwXzExRykgJiYKKwkJCQkJKHBXYjM1UmVnLT5CQjRDICE9IEJCNENfREVGQVVMVF9BTDIyMzBfMTFHKSApCisJCQkJeworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNDgsIEJCNDhfREVGQVVMVF9BTDIyMzBfMTFHICk7CisJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA0YywgQkI0Q19ERUZBVUxUX0FMMjIzMF8xMUcgKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJGX1dCXzI0MjogLy8gMjAwNjA2MjMgVGhlIGZpeCBvbmx5IGZvciBvbGQgVHhWR0Egc2V0dGluZworCQkJaWYoIElzMTFiUmF0ZSApCisJCQl7CisJCQkJaWYoIChwV2IzNVJlZy0+QkI0OCAhPSBCQjQ4X0RFRkFVTFRfV0IyNDJfMTFCKSAmJgorCQkJCQkocFdiMzVSZWctPkJCNEMgIT0gQkI0Q19ERUZBVUxUX1dCMjQyXzExQikgKQorCQkJCXsKKwkJCQkJcFdiMzVSZWctPkJCNDggPSBCQjQ4X0RFRkFVTFRfV0IyNDJfMTFCOworCQkJCQlwV2IzNVJlZy0+QkI0QyA9IEJCNENfREVGQVVMVF9XQjI0Ml8xMUI7CisJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA0OCwgQkI0OF9ERUZBVUxUX1dCMjQyXzExQiApOworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNGMsIEJCNENfREVGQVVMVF9XQjI0Ml8xMUIgKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYoIChwV2IzNVJlZy0+QkI0OCAhPSBCQjQ4X0RFRkFVTFRfV0IyNDJfMTFHKSAmJgorCQkJCQkocFdiMzVSZWctPkJCNEMgIT0gQkI0Q19ERUZBVUxUX1dCMjQyXzExRykgKQorCQkJCXsKKwkJCQkJcFdiMzVSZWctPkJCNDggPSBCQjQ4X0RFRkFVTFRfV0IyNDJfMTFHOworCQkJCQlwV2IzNVJlZy0+QkI0QyA9IEJCNENfREVGQVVMVF9XQjI0Ml8xMUc7CisJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTA0OCwgQkI0OF9ERUZBVUxUX1dCMjQyXzExRyApOworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDEwNGMsIEJCNENfREVGQVVMVF9XQjI0Ml8xMUcgKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwl9Cit9CisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3J4aXNyLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9yeGlzci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZTk0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9yeGlzci5jCkBAIC0wLDAgKzEsMzAgQEAKKyNpbmNsdWRlICJvc19jb21tb24uaCIKKwordm9pZCB2UnhUaW1lckluaXQoUFdCMzJfQURBUFRFUiBBZGFwdGVyKQoreworCU9TX1RJTUVSX0lOSVRJQUwoJihBZGFwdGVyLT5NZHMublRpbWVyKSwgKHZvaWQqKSBSeFRpbWVySGFuZGxlciwgKHZvaWQqKSBBZGFwdGVyKTsKK30KKwordm9pZCB2UnhUaW1lclN0YXJ0KFBXQjMyX0FEQVBURVIgQWRhcHRlciwgaW50IHRpbWVvdXRfdmFsdWUpCit7CisJaWYgKHRpbWVvdXRfdmFsdWU8TUlOX1RJTUVPVVRfVkFMKQorCQl0aW1lb3V0X3ZhbHVlPU1JTl9USU1FT1VUX1ZBTDsKKworCU9TX1RJTUVSX1NFVCggJihBZGFwdGVyLT5NZHMublRpbWVyKSwgdGltZW91dF92YWx1ZSApOworfQorCit2b2lkIHZSeFRpbWVyU3RvcChQV0IzMl9BREFQVEVSIEFkYXB0ZXIpCit7CisJT1NfVElNRVJfQ0FOQ0VMKCAmKEFkYXB0ZXItPk1kcy5uVGltZXIpLCAwICk7Cit9CisKK3ZvaWQgUnhUaW1lckhhbmRsZXJfMWEoIFBBREFQVEVSIEFkYXB0ZXIpCit7CisJUnhUaW1lckhhbmRsZXIoTlVMTCwgQWRhcHRlciwgTlVMTCwgTlVMTCk7Cit9CisKK3ZvaWQgUnhUaW1lckhhbmRsZXIodm9pZCogU3lzdGVtU3BlY2lmaWMxLCBQV0IzMl9BREFQVEVSIEFkYXB0ZXIsCisJCSAgICB2b2lkKiBTeXN0ZW1TcGVjaWZpYzIsIHZvaWQqIFN5c3RlbVNwZWNpZmljMykKK3sKKwlXQVJOX09OKDEpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvc2Nhbl9zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9zY2FuX3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDFiMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvc2Nhbl9zLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8vCisvLyBTQ0FOIHRhc2sgZ2xvYmFsIENPTlNUQU5UUywgU1RSVUNUVVJFUywgdmFyaWFibGVzCisvLworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9kZWZpbmUgdGhlIG1zZyB0eXBlIG9mIFNDQU4gbW9kdWxlCisjZGVmaW5lIFNDQU5NU0dfU0NBTl9SRVEJCQkweDAxCisjZGVmaW5lIFNDQU5NU0dfQkVBQ09OCQkJCTB4MDIKKyNkZWZpbmUgU0NBTk1TR19QUk9CRV9SRVNQT05TRQkJMHgwMworI2RlZmluZSBTQ0FOTVNHX1RJTUVPVVQJCQkJMHgwNAorI2RlZmluZSBTQ0FOTVNHX1RYUFJPQkVfRkFJTAkJMHgwNQorI2RlZmluZSBTQ0FOTVNHX0VOQUJMRV9CR1NDQU4JCTB4MDYKKyNkZWZpbmUgU0NBTk1TR19TVE9QX1NDQU4JCQkweDA3CisKKy8vIEJTUyBUeXBlID0+Y29uZm9ybSB0bworLy8gSUJTUyAgICAgICAgICAgICA6IFRvRFMvRnJvbURTID0gMDAKKy8vIEluZnJhc3RydWN0dXJlICAgOiBUb0RTL0Zyb21EUyA9IDAxCisjZGVmaW5lIElCU1NfTkVUCQkJMAorI2RlZmluZSBFU1NfTkVUCQkJCTEKKyNkZWZpbmUgQU5ZQlNTX05FVAkJCTIKKworLy8gU2NhbiBUeXBlCisjZGVmaW5lIEFDVElWRV9TQ0FOCQkJMAorI2RlZmluZSBQQVNTSVZFX1NDQU4JCTEKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL0dsb2JhbCBkYXRhIHN0cnVjdHVyZXMsIEluaXRpYWwgU2NhbiAmIEJhY2tncm91bmQgU2NhbgordHlwZWRlZiBzdHJ1Y3QgX1NDQU5fUkVRX1BBUkEJLy9tYW5kYXRvcnkgcGFyYW1ldGVycyBmb3IgU0NBTiByZXF1ZXN0Cit7CisJdTMyCQkJCVNjYW5UeXBlOwkJCS8vcGFzc2l2ZS9hY3RpdmUgc2NhbgorCisJQ0hBTl9MSVNUCQlzQ2hhbm5lbExpc3Q7CS8vIDg2QgorCXU4CQkJcmVzZXJ2ZWRfMVsyXTsKKworCXN0cnVjdCBTU0lEX0VsZW1lbnQJc1NTSUQ7IC8vIDM0Qi4gc2NhbiBvbmx5IGZvciB0aGlzIFNTSUQKKwl1OAkJCXJlc2VydmVkXzJbMl07CisKK30gU0NBTl9SRVFfUEFSQSwgKnBzU0NBTl9SRVFfUEFSQTsKKwordHlwZWRlZiBzdHJ1Y3QgX1NDQU5fUEFSQU1FVEVSUworeworCXUxNgkJCQl3U3RhdGU7CisJdTE2CQkJCWlDdXJyZW50Q2hhbm5lbEluZGV4OworCisJU0NBTl9SRVFfUEFSQQlzU2NhblJlcTsKKworCXU4CQkJCUJTU0lEW01BQ19BRERSX0xFTkdUSCArIDJdOwkJLy9zY2FuIG9ubHkgZm9yIHRoaXMgQlNTSUQKKworCXUzMgkJCQlCc3NUeXBlOwkJCQkJCS8vc2NhbiBvbmx5IGZvciB0aGlzIEJTUyB0eXBlCisKKwkvL3N0cnVjdCBTU0lEX0VsZW1lbnQJc1NTSUQ7CQkJCQkJLy9zY2FuIG9ubHkgZm9yIHRoaXMgU1NJRAorCXUxNgkJCQlQcm9iZURlbGF5OworCXUxNgkJCQlNaW5DaGFubmVsVGltZTsKKworCXUxNgkJCQlNYXhDaGFubmVsVGltZTsKKwl1MTYJCQkJcmVzZXJ2ZWRfMTsKKworICAgIHMzMgkJCQlpQmdTY2FuUGVyaW9kOwkJCQkvLyBYUDogNSBzZWMKKworICAgIHU4CQkJCWJvQmdTY2FuOwkJCQkJLy8gV2I6IGVuYWJsZSBCRyBzY2FuLCBGb3IgWFAsIHRoaXMgdmFsdWUgbXVzdCBiZSBGQUxTRQorICAgIHU4CQkJCWJvRmFzdFNjYW47CQkJCQkvLyBXYjogcmVzZXJ2ZWQKKwl1OAkJCQlib0NDQWJ1c3k7CQkJCQkvLyBXYjogSFdNQUMgQ0NBIGJ1c3kgc3RhdHVzCisJdTgJCQkJcmVzZXJ2ZWRfMjsKKworCS8vTkRJU19NSU5JUE9SVF9USU1FUgluVGltZXI7CisJT1NfVElNRVIJCQluVGltZXI7CisKKwl1MzIJCQkJU2NhblRpbWVTdGFtcDsJCQkvL0luY3JlYXNlIDEgcGVyIGJhY2tncm91bmQgc2NhbigxIG1pbnV0ZSkKKwl1MzIJCQkJQnNzVGltZVN0YW1wOwkJCS8vSW5jcmVhc2UgMSBwZXIgY29ubmVjdCBzdGF0dXMgY2hlY2sKKwl1MzIJCQkJUnhOdW1QZXJBbnRlbm5hWzJdOwkJLy8KKworCXU4CQkJCUFudGVubmFUb2dnbGU7CQkJLy8KKwl1OAkJCQlib0luVGltZXJIYW5kbGVyOworCXU4IAkJCQlib1RpbWVyQWN0aXZlOwkJCQkvLyBXYjogcmVzZXJ2ZWQKKwl1OAkJCQlib1NhdmU7CisKKwl1MzIJCQkJQlNjYW5FbmFibGU7IC8vIEJhY2tncm91bmQgc2NhbiBlbmFibGUuIERlZmF1bHQgaXMgT24KKworfSBTQ0FOX1BBUkFNRVRFUlMsICpwc1NDQU5fUEFSQU1FVEVSUzsKKworLy8gRW5jYXBzdWxhdGUgJ0FkYXB0ZXInIGRhdGEgc3RydWN0dXJlCisjZGVmaW5lIHBzU0NBTgkJCSgmKEFkYXB0ZXItPnNTY2FuUGFyYSkpCisjZGVmaW5lIHBzU0NBTlJFUQkJCSgmKEFkYXB0ZXItPnNTY2FuUGFyYS5zU2NhblJlcSkpCisKKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKy8vCXNjYW4uaAorLy8JCURlZmluZSB0aGUgcmVsYXRlZCBkZWZpbml0aW9ucyBvZiBzY2FuIG1vZHVsZQorLy8JaGlzdG9yeSAtLSAwMS8xNC8wMycgY3JlYXRlZAorLy8KKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKworLy9EZWZpbmUgdGhlIHN0YXRlIG9mIHNjYW4gbW9kdWxlCisjZGVmaW5lIFNDQU5fSU5BQ1RJVkUJCQkJCQkwCisjZGVmaW5lIFdBSVRfUFJPQkVfREVMQVkJCQkJCTEKKyNkZWZpbmUgV0FJVF9SRVNQT05TRV9NSU4JCQkJCTIKKyNkZWZpbmUgV0FJVF9SRVNQT05TRV9NQVhfQUNUSVZFCQkJMworI2RlZmluZSBXQUlUX0JFQUNPTl9NQVhfUEFTU0lWRQkJCQk0CisjZGVmaW5lIFNDQU5fQ09NUExFVEUJCQkJCQk1CisjZGVmaW5lIEJHX1NDQU4JCQkJCQkJCTYKKyNkZWZpbmUgQkdfU0NBTk5JTkcJCQkJCQkJNworCisKKy8vIFRoZSB2YWx1ZSB3aWxsIGxvYWQgZnJvbSBFRVBST00KKy8vIElmIDB4ZmYgaXMgc2V0IGluIEVFUE9NLCB0aGUgZHJpdmVyIHdpbGwgdXNlIFNDQU5fTUFYX0NITkxfVElNRSBpbnN0ZWFkLgorLy8gVGhlIGRlZmluaXRpb24gaXMgaW4gV2JIYWwuaAorLy8JI2RlZmluZSBTQ0FOX01BWF9DSE5MX1RJTUUJCQkJKDUwKQorCisKKworLy8gc3RhdGljIGZ1bmN0aW9ucworCisvL3N0YXRpYyB2b2lkIFNjYW5UaW1lckhhbmRsZXIoUFdCMzJfQURBUFRFUiBBZGFwdGVyKTsKKy8vc3RhdGljIHZvaWQgdlNjYW5UaW1lclN0YXJ0KFBXQjMyX0FEQVBURVIJQWRhcHRlciwgaW50IHRpbWVvdXRfdmFsdWUpOworLy9zdGF0aWMgdm9pZCB2U2NhblRpbWVyU3RvcChQV0IzMl9BREFQVEVSIEFkYXB0ZXIpOworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9zbWVfYXBpLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9zbWVfYXBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBlOTNiNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3NtZV9hcGkuYwpAQCAtMCwwICsxLDEzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gc21lX2FwaS5jCisvLworLy8gQ29weXJpZ2h0KEMpIDIwMDIgV2luYm9uZCBFbGVjdHJvbmljcyBDb3JwLgorLy8KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2luY2x1ZGUgIm9zX2NvbW1vbi5oIgorCitzOCBzbWVfZ2V0X3Jzc2kodm9pZCAqcGNvcmVfZGF0YSwgczMyICpwcnNzaSkKK3sKKyAgICAgICBCVUcoKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3NtZV9hcGkuaCBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3NtZV9hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTZiMjI1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvc21lX2FwaS5oCkBAIC0wLDAgKzEsMjY1IEBACisvKgorICogc21lX2FwaS5oCisgKgorICogQ29weXJpZ2h0KEMpIDIwMDIgV2luYm9uZCBFbGVjdHJvbmljcyBDb3JwLgorICoKKyAqIG1vZGlmaWNhdGlvbiBoaXN0b3J5CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIDEuMDAuMDAxLCAyMDAzLTA0LTIxLCBLZXZpbiAgICAgICBjcmVhdGVkCisgKiAxLjAwLjAwMiwgMjAwMy0wNS0xNCwgUEQ0MyAmIFBFMjAgbW9kaWZpZWQKKyAqCisgKi8KKworI2lmbmRlZiBfX1NNRV9BUElfSF9fCisjZGVmaW5lIF9fU01FX0FQSV9IX18KKworLyoqKioqKioqKioqKioqKioqKiBJTkNMVURFIEZJTEVTIFNFQ1RJT04gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyNpbmNsdWRlICJHTFxnbF9jb3JlLmgiCisKKy8qKioqKioqKioqKioqKioqKiogQ09OU1RBTlQgQU5EIE1BQ1JPIFNFQ1RJT04gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBfSU5MSU5FICAgICAgX19pbmxpbmUKKworI2RlZmluZSBNRURJQV9TVEFURV9ESVNDT05ORUNURUQgICAgMAorI2RlZmluZSBNRURJQV9TVEFURV9DT05ORUNURUQgICAgICAgMQorCisvL0FSUkFZIENIRUNLCisjZGVmaW5lIE1BWF9QT1dFUl9UT19EQiAzMgorCisvKioqKioqKioqKioqKioqKioqIFRZUEUgREVGSU5JVElPTiBTRUNUSU9OICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiBFWFBPUlRFRCBGVU5DVElPTiBERUNMQVJBVElPTiBTRUNUSU9OICoqKioqKioqKioqKioqKioqKiovCisKKy8vIE9JRF84MDJfMTFfQlNTSUQKK3M4IHNtZV9nZXRfYnNzaWQodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBic3NpZCk7CitzOCBzbWVfZ2V0X2Rlc2lyZWRfYnNzaWQodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBic3NpZCk7Ly9Ob3QgdXNlCitzOCBzbWVfc2V0X2Rlc2lyZWRfYnNzaWQodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBic3NpZCk7CisKKy8vIE9JRF84MDJfMTFfU1NJRAorczggc21lX2dldF9zc2lkKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICpwc3NpZCwgdTggKnBzc2lkX2xlbik7CitzOCBzbWVfZ2V0X2Rlc2lyZWRfc3NpZCh2b2lkICpwY29yZV9kYXRhLCB1OCAqcHNzaWQsIHU4ICpwc3NpZF9sZW4pOy8vIE5vdCB1c2UKK3M4IHNtZV9zZXRfZGVzaXJlZF9zc2lkKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICpwc3NpZCwgdTggc3NpZF9sZW4pOworCisvLyBPSURfODAyXzExX0lORlJBU1RSVUNUVVJFX01PREUKK3M4IHNtZV9nZXRfYnNzX3R5cGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBic3NfdHlwZSk7CitzOCBzbWVfZ2V0X2Rlc2lyZWRfYnNzX3R5cGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBic3NfdHlwZSk7Ly9Ob3QgdXNlCitzOCBzbWVfc2V0X2Rlc2lyZWRfYnNzX3R5cGUodm9pZCAqcGNvcmVfZGF0YSwgdTggYnNzX3R5cGUpOworCisvLyBPSURfODAyXzExX0ZSQUdNRU5UQVRJT05fVEhSRVNIT0xECitzOCBzbWVfZ2V0X2ZyYWdtZW50X3RocmVzaG9sZCh2b2lkICpwY29yZV9kYXRhLCB1MzIgKnB0aHJlc2hvbGQpOworczggc21lX3NldF9mcmFnbWVudF90aHJlc2hvbGQodm9pZCAqcGNvcmVfZGF0YSwgdTMyIHRocmVzaG9sZCk7CisKKy8vIE9JRF84MDJfMTFfUlRTX1RIUkVTSE9MRAorczggc21lX2dldF9ydHNfdGhyZXNob2xkKHZvaWQgKnBjb3JlX2RhdGEsIHUzMiAqcHRocmVzaG9sZCk7CitzOCBzbWVfc2V0X3J0c190aHJlc2hvbGQodm9pZCAqcGNvcmVfZGF0YSwgdTMyIHRocmVzaG9sZCk7CisKKy8vIE9JRF84MDJfMTFfUlNTSQorczggc21lX2dldF9yc3NpKHZvaWQgKnBjb3JlX2RhdGEsIHMzMiAqcHJzc2kpOworCisvLyBPSURfODAyXzExX0NPTkZJR1VSQVRJT04KK3M4IHNtZV9nZXRfYmVhY29uX3BlcmlvZCh2b2lkICpwY29yZV9kYXRhLCB1MTYgKnBiZWFjb25fcGVyaW9kKTsKK3M4IHNtZV9zZXRfYmVhY29uX3BlcmlvZCh2b2lkICpwY29yZV9kYXRhLCB1MTYgYmVhY29uX3BlcmlvZCk7CisKK3M4IHNtZV9nZXRfYXRpbV93aW5kb3codm9pZCAqcGNvcmVfZGF0YSwgdTE2ICpwYXRpbV93aW5kb3cpOworczggc21lX3NldF9hdGltX3dpbmRvdyh2b2lkICpwY29yZV9kYXRhLCB1MTYgYXRpbV93aW5kb3cpOworCitzOCBzbWVfZ2V0X2N1cnJlbnRfY2hhbm5lbCh2b2lkICpwY29yZV9kYXRhLCB1OCAqcGN1cnJlbnRfY2hhbm5lbCk7CitzOCBzbWVfZ2V0X2N1cnJlbnRfYmFuZCh2b2lkICpwY29yZV9kYXRhLCB1OCAqcGN1cnJlbnRfYmFuZCk7CitzOCBzbWVfc2V0X2N1cnJlbnRfY2hhbm5lbCh2b2lkICpwY29yZV9kYXRhLCB1OCBjdXJyZW50X2NoYW5uZWwpOworCisvLyBPSURfODAyXzExX0JTU0lEX0xJU1QKK3M4IHNtZV9nZXRfc2Nhbl9ic3NfY291bnQodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBjb3VudCk7CitzOCBzbWVfZ2V0X3NjYW5fYnNzKHZvaWQgKnBjb3JlX2RhdGEsIHU4IGluZGV4LCB2b2lkICoqcHBic3MpOworCitzOCBzbWVfZ2V0X2Nvbm5lY3RlZF9ic3Modm9pZCAqcGNvcmVfZGF0YSwgdm9pZCAqKnBwYnNzX25vdyk7CisKKy8vIE9JRF84MDJfMTFfQVVUSEVOVElDQVRJT05fTU9ERQorczggc21lX2dldF9hdXRoX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBhdXRoX21vZGUpOworczggc21lX3NldF9hdXRoX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggYXV0aF9tb2RlKTsKKworLy8gT0lEXzgwMl8xMV9XRVBfU1RBVFVTIC8gT0lEXzgwMl8xMV9FTkNSWVBUSU9OX1NUQVRVUworczggc21lX2dldF93ZXBfbW9kZSh2b2lkICpwY29yZV9kYXRhLCB1OCAqcHdlcF9tb2RlKTsKK3M4IHNtZV9zZXRfd2VwX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggd2VwX21vZGUpOworLy9zOCBzbWVfZ2V0X2VuY3J5cHRpb25fc3RhdHVzKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICpwc3RhdHVzKTsKKy8vczggc21lX3NldF9lbmNyeXB0aW9uX3N0YXR1cyh2b2lkICpwY29yZV9kYXRhLCB1OCBzdGF0dXMpOworCisvLyA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8KKworLy8gT0lEX0dFTl9WRU5ET1JfSUQKKy8vIE9JRF84MDJfM19QRVJNQU5FTlRfQUREUkVTUworczggc21lX2dldF9wZXJtYW5lbnRfbWFjX2FkZHIodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBtYWNfYWRkcik7CisKKy8vIE9JRF84MDJfM19DVVJSRU5UX0FERFJFU1MKK3M4IHNtZV9nZXRfY3VycmVudF9tYWNfYWRkcih2b2lkICpwY29yZV9kYXRhLCB1OCAqcG1hY19hZGRyKTsKKworLy8gT0lEXzgwMl8xMV9ORVRXT1JLX1RZUEVfSU5fVVNFCitzOCBzbWVfZ2V0X25ldHdvcmtfdHlwZV9pbl91c2Uodm9pZCAqcGNvcmVfZGF0YSwgdTggKnB0eXBlKTsKK3M4IHNtZV9zZXRfbmV0d29ya190eXBlX2luX3VzZSh2b2lkICpwY29yZV9kYXRhLCB1OCB0eXBlKTsKKworLy8gT0lEXzgwMl8xMV9TVVBQT1JURURfUkFURVMKK3M4IHNtZV9nZXRfc3VwcG9ydGVkX3JhdGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnByYXRlcyk7CisKKy8vIE9JRF84MDJfMTFfQUREX1dFUAorLy8xMi8yOS8wMycgd2tjaGVuCitzOCBzbWVfc2V0X2FkZF93ZXAodm9pZCAqcGNvcmVfZGF0YSwgdTMyIGtleV9pbmRleCwgdTMyIGtleV9sZW4sCisJCQkJCSB1OCAqQWRkcmVzcywgdTggKmtleSk7CisKKy8vIE9JRF84MDJfMTFfUkVNT1ZFX1dFUAorczggc21lX3NldF9yZW1vdmVfd2VwKHZvaWQgKnBjcmVfZGF0YSwgdTMyIGtleV9pbmRleCk7CisKKy8vIE9JRF84MDJfMTFfRElTQVNTT0NJQVRFCitzOCBzbWVfc2V0X2Rpc2Fzc29jaWF0ZSh2b2lkICpwY29yZV9kYXRhKTsKKworLy8gT0lEXzgwMl8xMV9QT1dFUl9NT0RFCitzOCBzbWVfZ2V0X3Bvd2VyX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBtb2RlKTsKK3M4IHNtZV9zZXRfcG93ZXJfbW9kZSh2b2lkICpwY29yZV9kYXRhLCB1OCBtb2RlKTsKKworLy8gT0lEXzgwMl8xMV9CU1NJRF9MSVNUX1NDQU4KK3M4IHNtZV9zZXRfYnNzaWRfbGlzdF9zY2FuKHZvaWQgKnBjb3JlX2RhdGEsIHZvaWQgKnBzY2FuX3BhcmEpOworCisvLyBPSURfODAyXzExX1JFTE9BRF9ERUZBVUxUUworczggc21lX3NldF9yZWxvYWRfZGVmYXVsdHModm9pZCAqcGNvcmVfZGF0YSwgdTggcmVsb2FkX3R5cGUpOworCisKKy8vIFRoZSBmb2xsb3dpbmcgU01FIEFQSSBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIFdQQQorLy8KKy8vIE1hbmRhdG9yeSBPSURzIGZvciBXUEEKKy8vCisKKy8vIE9JRF84MDJfMTFfQUREX0tFWQorLy9zOCBzbWVfc2V0X2FkZF9rZXkodm9pZCAqcGNvcmVfZGF0YSwgTkRJU184MDJfMTFfS0VZICpwa2V5KTsKKworLy8gT0lEXzgwMl8xMV9SRU1PVkVfS0VZCisvL3M4IHNtZV9zZXRfcmVtb3ZlX2tleSh2b2lkICpwY29yZV9kYXRhLCBORElTXzgwMl8xMV9SRU1PVkVfS0VZICpwa2V5KTsKKworLy8gT0lEXzgwMl8xMV9BU1NPQ0lBVElPTl9JTkZPUk1BVElPTgorLy9zOCBzbWVfc2V0X2Fzc29jaWF0aW9uX2luZm9ybWF0aW9uKHZvaWQgKnBjb3JlX2RhdGEsCisvLyAgICAgICAgICAgICAgICAgICAgTkRJU184MDJfMTFfQVNTT0NJQVRJT05fSU5GT1JNQVRJT04gKnBpbmZvKTsKKworLy8gT0lEXzgwMl8xMV9URVNUCisvL3M4IHNtZV9zZXRfdGVzdCh2b2lkICpwY29yZV9kYXRhLCBORElTXzgwMl8xMV9URVNUICpwdGVzdF9kYXRhKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCisvKgorLy8gVGhlIGxlZnQgT0lEcworCisvLyBPSURfODAyXzExX05FVFdPUktfVFlQRVNfU1VQUE9SVEVECisvLyBPSURfODAyXzExX1RYX1BPV0VSX0xFVkVMCisvLyBPSURfODAyXzExX1JTU0lfVFJJR0dFUgorLy8gT0lEXzgwMl8xMV9OVU1CRVJfT0ZfQU5URU5OQVMKKy8vIE9JRF84MDJfMTFfUlhfQU5URU5OQV9TRUxFQ1RFRAorLy8gT0lEXzgwMl8xMV9UWF9BTlRFTk5BX1NFTEVDVEVECisvLyBPSURfODAyXzExX1NUQVRJU1RJQ1MKKy8vIE9JRF84MDJfMTFfREVTSVJFRF9SQVRFUworLy8gT0lEXzgwMl8xMV9QUklWQUNZX0ZJTFRFUgorCisqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbm9uZS1zdGFuZGFyZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3M4IHNtZV9nZXRfY29ubmVjdF9zdGF0dXModm9pZCAqcGNvcmVfZGF0YSwgdTggKnBzdGF0dXMpOworCisvKisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKi8KKy8vczggc21lX2dldF9zY2FuX3R5cGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBzY2FuX3R5cGUpOworLy9zOCBzbWVfc2V0X3NjYW5fdHlwZSh2b2lkICpwY29yZV9kYXRhLCB1OCBzY2FuX3R5cGUpOworCisvL3M4IHNtZV9nZXRfc2Nhbl9jaGFubmVsX2xpc3Qodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBzY2FuX3R5cGUpOworLy9zOCBzbWVfc2V0X3NjYW5fY2hhbm5lbF9saXN0KHZvaWQgKnBjb3JlX2RhdGEsIHU4IHNjYW5fdHlwZSk7CisKKwordm9pZCBzbWVfZ2V0X2VuY3J5cHRpb25fc3RhdHVzKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICpFbmNyeXB0U3RhdHVzKTsKK3ZvaWQgc21lX3NldF9lbmNyeXB0aW9uX3N0YXR1cyh2b2lkICpwY29yZV9kYXRhLCB1OCBFbmNyeXB0U3RhdHVzKTsKK3M4IHNtZV9hZGRfa2V5KHZvaWQJCSpwY29yZV9kYXRhLAorCQkJCQl1MzIJCWtleV9pbmRleCwKKwkJCQkJdTgJCWtleV9sZW4sCisJCQkJCXU4CQlrZXlfdHlwZSwKKwkJCQkJdTgJCSprZXlfYnNzaWQsCisJCQkJCS8vdTgJCSprZXlfcnNjLAorCQkJCQl1OAkJKnB0eF90c2MsCisJCQkJCXU4CQkqcHJ4X3RzYywKKwkJCQkJdTgJCSprZXlfbWF0ZXJpYWwpOwordm9pZCBzbWVfcmVtb3ZlX2RlZmF1bHRfa2V5KHZvaWQgKnBjb3JlX2RhdGEsIGludCBpbmRleCk7Cit2b2lkIHNtZV9yZW1vdmVfbWFwcGluZ19rZXkodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBtYWNfYWRkcik7Cit2b2lkIHNtZV9jbGVhcl9hbGxfbWFwcGluZ19rZXkodm9pZCAqcGNvcmVfZGF0YSk7Cit2b2lkIHNtZV9jbGVhcl9hbGxfZGVmYXVsdF9rZXkodm9pZCAqcGNvcmVfZGF0YSk7CisKKworCitzOCBzbWVfc2V0X3ByZWFtYmxlX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggbW9kZSk7CitzOCBzbWVfZ2V0X3ByZWFtYmxlX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKm1vZGUpOworczggc21lX2dldF9wcmVhbWJsZV90eXBlKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICp0eXBlKTsKK3M4IHNtZV9zZXRfc2xvdHRpbWVfbW9kZSh2b2lkICpwY29yZV9kYXRhLCB1OCBtb2RlKTsKK3M4IHNtZV9nZXRfc2xvdHRpbWVfbW9kZSh2b2lkICpwY29yZV9kYXRhLCB1OCAqbW9kZSk7CitzOCBzbWVfZ2V0X3Nsb3R0aW1lX3R5cGUodm9pZCAqcGNvcmVfZGF0YSwgdTggKnR5cGUpOworczggc21lX3NldF90eHJhdGVfcG9saWN5KHZvaWQgKnBjb3JlX2RhdGEsIHU4IHBvbGljeSk7CitzOCBzbWVfZ2V0X3R4cmF0ZV9wb2xpY3kodm9pZCAqcGNvcmVfZGF0YSwgdTggKnBvbGljeSk7CitzOCBzbWVfZ2V0X2N3bWluX3ZhbHVlKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICpjd21pbik7CitzOCBzbWVfZ2V0X2N3bWF4X3ZhbHVlKHZvaWQgKnBjb3JlX2RhdGEsIHUxNiAqY3dtYXgpOworczggc21lX2dldF9tc19yYWRpb19tb2RlKHZvaWQgKnBjb3JlX2RhdGEsIHU4ICogcE1zUmFkaW9PZmYpOworczggc21lX3NldF9tc19yYWRpb19tb2RlKHZvaWQgKnBjb3JlX2RhdGEsIHU4IGJvTXNSYWRpb09mZik7CitzOCBzbWVfZ2V0X3JhZGlvX21vZGUodm9pZCAqcGNvcmVfZGF0YSwgcHNSYWRpb09mZiBwUmFkaW9PZmZEYXRhKTsKK3M4IHNtZV9zZXRfcmFkaW9fbW9kZSh2b2lkICpwY29yZV9kYXRhLCBSYWRpb09mZiBSYWRpb09mZkRhdGEpOworCit2b2lkIHNtZV9nZXRfdHhfcG93ZXJfbGV2ZWwodm9pZCAqcGNvcmVfZGF0YSwgdTMyICpUeFBvd2VyKTsKK3U4IHNtZV9zZXRfdHhfcG93ZXJfbGV2ZWwodm9pZCAqcGNvcmVfZGF0YSwgdTMyIFR4UG93ZXIpOwordm9pZCBzbWVfZ2V0X2FudGVubmFfY291bnQodm9pZCAqcGNvcmVfZGF0YSwgdTMyICpBbnRlbm5hQ291bnQpOwordm9pZCBzbWVfZ2V0X3J4X2FudGVubmEodm9pZCAqcGNvcmVfZGF0YSwgdTMyICpSeEFudGVubmEpOwordTggc21lX3NldF9yeF9hbnRlbm5hKHZvaWQgKnBjb3JlX2RhdGEsIHUzMiBSeEFudGVubmEpOwordm9pZCBzbWVfZ2V0X3R4X2FudGVubmEodm9pZCAqcGNvcmVfZGF0YSwgdTMyICpUeEFudGVubmEpOworczggc21lX3NldF90eF9hbnRlbm5hKHZvaWQgKnBjb3JlX2RhdGEsIHUzMiBUeEFudGVubmEpOworczggc21lX3NldF9JQlNTX2NoYW4odm9pZCAqcGNvcmVfZGF0YSwgQ2hhbkluZm8gY2hhbik7CisKKy8vMjAwNjExMDggV1BTCitzOCBzbWVfc2V0X0lFX2FwcGVuZCh2b2lkICpwY29yZV9kYXRhLCBQVUNIQVIgYnVmZmVyLCB1MTYgYnVmX2xlbik7CisKKworCisKKy8vPT09PT09PT09PT09PT09PT09IExvY2FsIGZ1bmN0aW9ucyA9PT09PT09PT09PT09PT09PT09PT09CisvLyNpZmRlZiBfSFNJTkNIVQorLy92b2lkIGRydl90cmFuc2xhdGVfcnNzaSgpOyAgIC8vIEhXIFJTU0kgYml0IC0+IE5ESVMgUlNTSSByZXByZXNlbnRhdGlvbgorLy92b2lkIGRydl90cmFuc2xhdGVfYnNzX2Rlc2NyaXB0aW9uKCk7IC8vIExvY2FsIGJzcyBkZXNjIC0+IE5ESVMgYnNzIGRlc2MKKy8vdm9pZCBkcnZfdHJhbnNsYXRlX2NoYW5uZWwodTggTmV0d29ya1R5cGUsIHU4IENoYW5uZWxOdW1iZXIsIHUzMiAqZnJlcSk7IC8vIGNoYW5uZWwgbnVtYmVyIC0+IGNoYW5uZWwgL2ZyZXEuCisvLyNlbmRpZiBfSFNJTkNIVQorLy8KK3N0YXRpYyBjb25zdCB1MzIgUG93ZXJEYlRvTXdbXSA9Cit7CisJNTYsCS8vbVcsIE1BWCAtIDAsCTE3LjUgZGJtCisJNDAsCS8vbVcsIE1BWCAtIDEsCTE2LjAgZGJtCisJMzAsCS8vbVcsIE1BWCAtIDIsCTE0LjggZGJtCisJMjAsCS8vbVcsIE1BWCAtIDMsCTEzLjAgZGJtCisJMTUsCS8vbVcsIE1BWCAtIDQsCTExLjggZGJtCisJMTIsCS8vbVcsIE1BWCAtIDUsCTEwLjYgZGJtCisJOSwJLy9tVywgTUFYIC0gNiwJIDkuNCBkYm0KKwk3LAkvL21XLCBNQVggLSA3LAkgOC4zIGRibQorCTUsCS8vbVcsIE1BWCAtIDgsCSA2LjQgZGJtCisJNCwJLy9tVywgTUFYIC0gOSwJIDUuMyBkYm0KKwkzLAkvL21XLCBNQVggLSAxMCwgIDQuMCBkYm0KKwkyLAkvL21XLCBNQVggLSAxMSwgID8gZGJtCisJMiwJLy9tVywgTUFYIC0gMTIsICA/IGRibQorCTIsCS8vbVcsIE1BWCAtIDEzLCAgPyBkYm0KKwkyLAkvL21XLCBNQVggLSAxNCwgID8gZGJtCisJMiwJLy9tVywgTUFYIC0gMTUsICA/IGRibQorCTIsCS8vbVcsIE1BWCAtIDE2LCAgPyBkYm0KKwkyLAkvL21XLCBNQVggLSAxNywgID8gZGJtCisJMiwJLy9tVywgTUFYIC0gMTgsICA/IGRibQorCTEsCS8vbVcsIE1BWCAtIDE5LCAgPyBkYm0KKwkxLAkvL21XLCBNQVggLSAyMCwgID8gZGJtCisJMSwJLy9tVywgTUFYIC0gMjEsICA/IGRibQorCTEsCS8vbVcsIE1BWCAtIDIyLCAgPyBkYm0KKwkxLAkvL21XLCBNQVggLSAyMywgID8gZGJtCisJMSwJLy9tVywgTUFYIC0gMjQsICA/IGRibQorCTEsCS8vbVcsIE1BWCAtIDI1LCAgPyBkYm0KKwkxLAkvL21XLCBNQVggLSAyNiwgID8gZGJtCisJMSwJLy9tVywgTUFYIC0gMjcsICA/IGRibQorCTEsCS8vbVcsIE1BWCAtIDI4LCAgPyBkYm0KKwkxLAkvL21XLCBNQVggLSAyOSwgID8gZGJtCisJMSwJLy9tVywgTUFYIC0gMzAsICA/IGRibQorCTEJLy9tVywgTUFYIC0gMzEsICA/IGRibQorfTsKKworCisKKworCisjZW5kaWYgLyogX19TTUVfQVBJX0hfXyAqLworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3NtZV9zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9zbWVfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZDJmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9zbWVfcy5oCkBAIC0wLDAgKzEsMjI4IEBACisvLworLy8gU01FX1MuSCAtCisvLyBTTUUgdGFzayBnbG9iYWwgQ09OU1RBTlRTLCBTVFJVQ1RVUkVTLCB2YXJpYWJsZXMKKy8vCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL2RlZmluZSB0aGUgbXNnIHR5cGUgb2YgU01FIG1vZHVsZQorLy8gMHgwMH4weDFGIDogTVNHIGZyb20gR1VJIGRpc3BhdGNoCisvLyAweDIwfjB4M0YgOiBNU0cgZnJvbSBNTE1FCisvLyAweDQwfjB4NUYgOiBNU0cgZnJvbSBTQ0FOCisvLyAweDYwfjB4NkYgOiBNU0cgZnJvbSBUWC9SWAorLy8gMHg3MH4weDdGIDogTVNHIGZyb20gUk9BTUlORworLy8gMHg4MH4weDhGIDogTVNHIGZyb20gSVNSCisvLyAweDkwCQkgOiBNU0cgVGltZU91dAorCisvLyBmcm9tIEdVSQorI2RlZmluZSBTTUVNU0dfU0NBTl9SRVEJCQkJCTB4MDEKKy8vI2RlZmluZSBTTUVNU0dfUEFTU0lWRV9TQ0FOX1JFUQkJCTB4MDIKKyNkZWZpbmUgU01FTVNHX0pPSU5fUkVRCQkJCQkweDAzCisjZGVmaW5lIFNNRU1TR19TVEFSVF9JQlNTCQkJCTB4MDQKKyNkZWZpbmUgU01FTVNHX0RJU0NPTk5FQ1RfUkVRCQkJMHgwNQorI2RlZmluZSBTTUVNU0dfQVVUSEVOX1JFUQkJCQkweDA2CisjZGVmaW5lIFNNRU1TR19ERUFVVEhFTl9SRVEJCQkJMHgwNworI2RlZmluZSBTTUVNU0dfQVNTT0NfUkVRCQkJCTB4MDgKKyNkZWZpbmUgU01FTVNHX1JFQVNTT0NfUkVRCQkJCTB4MDkKKyNkZWZpbmUgU01FTVNHX0RJU0FTU09DX1JFUQkJCQkweDBhCisjZGVmaW5lIFNNRU1TR19QT1dFUlNBVkVfUkVRCQkJMHgwYgorCisKKy8vIGZyb20gTUxNRQorI2RlZmluZSBTTUVNU0dfQVVUSEVOX0NGTQkJCQkweDIxCisjZGVmaW5lIFNNRU1TR19BVVRIRU5fSU5ECQkJCTB4MjIKKyNkZWZpbmUgU01FTVNHX0FTU09DX0NGTQkJCQkweDIzCisjZGVmaW5lIFNNRU1TR19ERUFVVEhFTl9JTkQJCQkJMHgyNAorI2RlZmluZSBTTUVNU0dfRElTQVNTT0NfSU5ECQkJCTB4MjUKKy8vIGZyb20gU0NBTgorI2RlZmluZSBTTUVNU0dfU0NBTl9DRk0JCQkJCTB4NDEKKyNkZWZpbmUgU01FTVNHX1NUQVJUX0lCU1NfQ0ZNCQkJMHg0MgorLy8gZnJvbSBNVE8sIGZ1bmN0aW9uIGNhbGwgdG8gc2V0IFNNRSBwYXJhbWV0ZXJzCisKKy8vIDB4NjB+MHg2RiA6IE1TRyBmcm9tIFRYL1JYCisvLyNkZWZpbmUgU01FTVNHX0lCU1NfSk9JTl9VUERBVEVfQlNTSUQJMHg2MQorI2RlZmluZSBTTUVNU0dfQ09VTlRFUk1FQVNVUkVfTUlDRkFJTF9USU1FT1VUCQkweDYyCisjZGVmaW5lIFNNRU1TR19DT1VOVEVSTUVBU1VSRV9CTE9DS19USU1FT1VUCTB4NjMKKy8vIGZyb20gUk9BTUlORworI2RlZmluZSBTTUVNU0dfSEFORE9WRVJfSk9JTl9SRVEJCTB4NzEKKyNkZWZpbmUgU01FTVNHX0VORF9ST0FNSU5HCQkJCTB4NzIKKyNkZWZpbmUgU01FTVNHX1NDQU5fSk9JTl9SRVEJCQkweDczCisvLyBmcm9tIElTUgorI2RlZmluZSBTTUVNU0dfVFNGX1NZTkNfSU5ECQkJCTB4ODEKKy8vIGZyb20gVGltZU91dAorI2RlZmluZSBTTUVNU0dfVElNRU9VVAkJCQkJMHg5MQorCisKKworI2RlZmluZSBNQVhfUE1LSURfQWNjdW50ICAgICAgICAgICAgICAgIDE2CisvL0BhZGRlZCBieSB3cyAwNC8yMi8wNQorI2RlZmluZSBDaXBoZXJfRGlzYWJsZWQgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgQ2lwaGVyX1dlcCAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIENpcGhlcl9Ua2lwICAgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBDaXBoZXJfQ2NtcCAgICAgICAgICAgICAgICAgICAgIDQKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vQ29uc3RhbnRzCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9HbG9iYWwgZGF0YSBzdHJ1Y3R1cmVzCisKKyNkZWZpbmUgTlVNT0ZXRVBFTlRSSUVTICAgICA2NAorCit0eXBlZGVmIGVudW0gX1dFUEtleU1vZGUKK3sKKyAgICBXRVBLRVlfRElTQUJMRUQgPSAwLAorICAgIFdFUEtFWV82NCAgICAgICA9IDEsCisgICAgV0VQS0VZXzEyOCAgICAgID0gMgorCit9IFdFUEtFWU1PREUsICpwV0VQS0VZTU9ERTsKKworI2lmZGVmIF9XUEEyXworCit0eXBlZGVmIHN0cnVjdCBfQlNTSW5mbworeworICB1OCAgICAgICAgUHJlQXV0aEJzc0lEWzZdOworICBQTUtJRCAgICAgICAgcG1raWRfdmFsdWU7Cit9QlNTSURfSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgX1BNS0lEX1RhYmxlIC8vYWRkZWQgYnkgd3MgMDUvMDUvMDQKK3sKKyAgIHUzMiAgTGVuZ3RoOworICAgdTMyICBCU1NJREluZm9Db3VudDsKKyAgIEJTU0lEX0luZm8gQlNTSURJbmZvWzE2XTsKKworfSBQTUtJRF9UYWJsZTsKKworI2VuZGlmIC8vZW5kIGRlZiBfV1BBMl8KKworI2RlZmluZSBNQVhfQkFTSUNfUkFURV9TRVQgICAgICAgICAgMTUKKyNkZWZpbmUgTUFYX09QVF9SQVRFX1NFVCAgICAgICAgICAgIE1BWF9CQVNJQ19SQVRFX1NFVAorCisKK3R5cGVkZWYgc3RydWN0IF9TTUVfUEFSQU1FVEVSUworeworICAgIHUxNgkJCQl3U3RhdGU7CisJdTgJCQkJYm9EVVRtb2RlOworCXU4CQkJCWJEZXNpcmVkUG93ZXJTYXZlOworCisJLy8gU01FIHRpbWVyIGFuZCB0aW1lb3V0IHZhbHVlCisJLy9ORElTX01JTklQT1JUX1RJTUVSCW5UaW1lcjsKKwlPU19USU1FUgkJCW5UaW1lcjsKKworCXU4CQkJCWJvSW5UaW1lckhhbmRsZXI7CisJdTggCQkJCWJvQXV0aFJldHJ5QWN0aXZlOworCXU4CQkJCXJlc2VydmVkXzBbMl07CisKKwl1MzIJCQkJQXV0aGVuUmV0cnlUaW1lclZhbDsJLy8gTk9URTogQXNzb2MgZG9uJ3QgZmFpbCB0aW1lb3V0CisJdTMyCQkJCUpvaW5GYWlsVGltZXJWYWw7CQkvLyAxMCpCZWFjb24tSW50ZXJ2YWwKKworCS8vUmF0ZXMKKwl1OAkJCQlCU1NCYXNpY1JhdGVTZXRbKE1BWF9CQVNJQ19SQVRFX1NFVCArIDMpICYgfjB4MDMgXTsgICAgLy8gQlNTIGJhc2ljIHJhdGUgc2V0CisJdTgJCQkJT3BlcmF0aW9uYWxSYXRlU2V0WyhNQVhfT1BUX1JBVEVfU0VUICsgMykgJiB+MHgwMyBdOyAvLyBPcGVyYXRpb25hbCByYXRlIHNldAorCisJdTgJCQkJTnVtT2ZCU1NCYXNpY1JhdGU7CisJdTgJCQkJTnVtT2ZPcGVyYXRpb25hbFJhdGU7CisJdTgJCQkJcmVzZXJ2ZWRfMVsyXTsKKworCXUzMgkJCQlCYXNpY1JhdGVCaXRtYXA7CisJdTMyCQkJCU9wUmF0ZUJpdG1hcDsKKworCS8vIFN5c3RlbSBwYXJhbWV0ZXJzIFNldCBieSBHVUkKKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0YXJ0IElCU1MgcGFyYW1ldGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCisJdTMyCQkJCWJvU3RhcnRJQlNTOwkJCS8vU3RhcnQgSUJTUyB0b2dnbGUKKworCXUxNgkJCQl3QmVhY29uUGVyaW9kOworCXUxNgkJCQl3QVRJTV9XaW5kb3c7CisKKwlDaGFuSW5mbwkJCUlic3NDaGFuOyAvLyAyQgkvL2NoYW5uZWwgc2V0dGluZyB3aGVuIHN0YXJ0IElCU1MKKwl1OAkJCQlyZXNlcnZlZF8yWzJdOworCisgICAgLy8gSm9pbiByZWxhdGVkCisJdTE2CQkJCXdEZXNpcmVkSm9pbkJTUzsJCS8vIEJTUyBpbmRleCB3aGljaCBkZXNpcmUgdG8gam9pbgorCXU4CQkJCWJvSm9pblJlcTsJCQkJLy9Kb2luIHJlcXVlc3QgdG9nZ2xlCisJdTgJCQkJYkRlc2lyZWRCU1NUeXBlOwkJLy9mb3IgSm9pbiByZXF1ZXN0CisKKyAgICB1MTYJCQkJd0NhcGFiaWxpdHlJbmZvOyAgICAgICAgLy8gVXNlZCB3aGVuIGludm9raW5nIHRoZSBNTE1FX0Fzc29jaWF0ZV9yZXF1ZXN0KCkuCisJdTE2CQkJCXdOb25FUlBjYXBhYmlsaXR5SW5mbzsKKworICAgIHN0cnVjdCBTU0lEX0VsZW1lbnQgc0Rlc2lyZWRTU0lEOyAvLyAzNCBCCisJdTgJCQkJcmVzZXJ2ZWRfM1syXTsKKworCXU4ICAgIAkJCWFiRGVzaXJlZEJTU0lEW01BQ19BRERSX0xFTkdUSCArIDJdOworCisJdTgJCQkJYkpvaW5TY2FuQ291bnQ7CQkJLy8gdGhlIHRpbWUgb2Ygc2Nhbi1qb2luIGFjdGlvbiBuZWVkIHRvIGRvCisJdTgJCQkJYkRlc2lyZWRBdXRoTW9kZTsgICAgICAgLy8gQVVUSF9PUEVOX1NZU1RFTSBvciBBVVRIX1NIQVJFRF9LRVkKKwl1OAkJCQlyZXNlcnZlZF80WzJdOworCisgICAgLy8gRW5jcnlwdGlvbiBwYXJhbWV0ZXJzCisJdTggICAgIAkJCV9kb3QxMVByaXZhY3lJbnZva2VkOworICAgIHU4ICAgICAgICAgICAgIAlfZG90MTFQcml2YWN5T3B0aW9uSW1wbGVtZW50ZWQ7CisJdTgJCQkJcmVzZXJ2ZWRfNVsyXTsKKworICAgIC8vQCB3cyBhZGRlZAorICAgIHU4CQkJCURlc2lyZWRFbmNyeXB0OworCXU4CQkJCWVuY3J5cHRfc3RhdHVzOwkvL0VOQ1JZUFRfRElTQUJMRSwgRU5DUllQVF9XRVAsIEVOQ1JZUFRfV0VQX05PS0VZLCBFTkNSWVBUX1RLSVAsIC4uLgorCXU4CQkJCWtleV9sZW5ndGg7CisJdTgJCQkJcGFpcndpc2Vfa2V5X29rOworCisJdTgJCQkJZ3JvdXBfa2V5X29rOworICAgIHU4CQkJCXdwYV9vazsgICAgICAgICAgICAgLy8gaW5kaWNhdGUgdGhlIGNvbnRyb2wgcG9ydCBvZiA4MDIuMXggaXMgb3BlbiBvciBjbG9zZQorCXU4CQkJCXBhaXJ3aXNlX2tleV90eXBlOworCXU4CQkJCWdyb3VwX2tleV90eXBlOworCisgICAgdTMyICAgICAgICAgICAgICAgX2RvdDExV0VQRGVmYXVsdEtleUlEOworCisJdTggICAgICAgICAgICAgIAl0eF9taWNfa2V5WzhdOyAgICAgIC8vIFRPRE86IDA2Mjcga2V2aW4tVEtJUAorCXU4ICAgICAgICAgICAgICAJcnhfbWljX2tleVs4XTsgICAgICAvLyBUT0RPOiAwNjI3IGtldmluLVRLSVAKKwl1OAkJCQlncm91cF90eF9taWNfa2V5WzhdOworCXU4CQkJCWdyb3VwX3J4X21pY19rZXlbOF07CisKKy8vCSNpZmRlZiBfV1BBXworCXU4CQkJCUFzc29jUmVxVmFySUVbMjAwXTsKKwl1OAkJCQlBc3NvY1Jlc3BWYXJJRVsyMDBdOworCisJdTE2CQkJCUFzc29jUmVxVmFyTGVuOworCXUxNgkJCQlBc3NvY1Jlc3BWYXJMZW47CisJdTgJCQkJYm9SZWFzc29jOwkJCQkvL3VzZSBhc3NvYy4gb3IgcmVhc3NvYy4KKwl1OAkJCQlyZXNlcnZlZF82WzNdOworCXUxNgkJCQlBc3NvY1Jlc3BDYXBhYmlsaXR5OworCXUxNgkJCQlBc3NvY1Jlc3BTdGF0dXM7CisvLwkjZW5kaWYKKworCSNpZmRlZiBfV1BBMl8KKyAgICB1OCAgICAgICAgICAgICAgIFBta0lkVGFibGVbMjU2XTsKKyAgICB1MzIgICAgICAgICAgICAgICBQbWtpZFRhYmxlSW5kZXg7CisJI2VuZGlmIC8vZW5kIGRlZiBfV1BBMl8KKworfSBTTUVfUEFSQU1FVEVSUywgKlBTTUVfUEFSQU1FVEVSUzsKKworI2RlZmluZSBwc1NNRQkJCSgmKEFkYXB0ZXItPnNTbWVQYXJhKSkKKworI2RlZmluZSB3U01FR2V0Q3VycmVudFNUQVN0YXRlKEFkYXB0ZXIpCQkoKHUxNikoQWRhcHRlciktPnNTbWVQYXJhLndTdGF0ZSkKKworCisKKy8vKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKy8vCVNtZU1vZHVsZS5oCisvLwkJRGVmaW5lIHRoZSByZWxhdGVkIGRlZmluaXRpb25zIG9mIFNNRSBtb2R1bGUKKy8vCWhpc3RvcnkgLS0gMDEvMTQvMDMnIGNyZWF0ZWQKKy8vCisvLysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKKy8vRGVmaW5lIHRoZSBzdGF0ZSBvZiBTTUUgbW9kdWxlCisjZGVmaW5lIERJU0FCTEVECQkJCQkJMAorI2RlZmluZSBJTklUX1NDQU4JCQkJCQkxCisjZGVmaW5lIFNDQU5fUkVBRFkJCQkJCQkyCisjZGVmaW5lIFNUQVJUX0lCU1MJCQkJCQkzCisjZGVmaW5lIEpPSU5fUEVORElORwkJCQkJNAorI2RlZmluZSBKT0lOX0NGTQkJCQkJCTUKKyNkZWZpbmUgQVVUSEVOVElDQVRFX1BFTkRJTkcJCQk2CisjZGVmaW5lIEFVVEhFTlRJQ0FURUQJCQkJCTcKKyNkZWZpbmUgQ09OTkVDVEVECQkJCQkJOAorLy8jZGVmaW5lIEVBUF9TVEFSVElORwkJCQkJOQorLy8jZGVmaW5lIEVBUE9MX0FVVEhFTl9QRU5ESU5HCQkJMTAKKy8vI2RlZmluZSBTRUNVUkVfQ09OTkVDVEVECQkJCTExCisKKworLy8gU3RhdGljIGZ1bmN0aW9uCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3diMzVfdmVyLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YjM1X3Zlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MzNiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YjM1X3Zlci5oCkBAIC0wLDAgKzEsMzAgQEAKKy8vCisvLyBPbmx5IGRlZmluZSBvbmUgb2YgZm9sbG93CisvLworCisjaWZkZWYgV0JfV0lOCisJI2RlZmluZSBWRVJfRklMRVZFUlNJT04gICAgICAgICAgICAgMSwwMCw0NywwMAorCSNkZWZpbmUgVkVSX0ZJTEVWRVJTSU9OX1NUUiAgICAgICAgICIxLjAwLjQ3LjAwIgorCSNkZWZpbmUgV0IzMl9EUklWRVJfTUFKT1JfVkVSU0lPTiAgIDB4MDEwMAorCSNkZWZpbmUgV0IzMl9EUklWRVJfTUlOT1JfVkVSU0lPTiAgIDB4NDcwMAorI2VuZGlmCisKKyNpZmRlZiBXQl9DRQorCSNkZWZpbmUgVkVSX0ZJTEVWRVJTSU9OICAgICAgICAgICAgIDIsMDAsNDcsMDAKKwkjZGVmaW5lIFZFUl9GSUxFVkVSU0lPTl9TVFIgICAgICAgICAiMi4wMC40Ny4wMCIKKwkjZGVmaW5lIFdCMzJfRFJJVkVSX01BSk9SX1ZFUlNJT04gICAweDAyMDAKKwkjZGVmaW5lIFdCMzJfRFJJVkVSX01JTk9SX1ZFUlNJT04gICAweDQ3MDAKKyNlbmRpZgorCisjaWZkZWYgV0JfTElOVVgKKwkjZGVmaW5lIFZFUl9GSUxFVkVSU0lPTiAgICAgICAgICAgICAzLDAwLDQ3LDAwCisJI2RlZmluZSBWRVJfRklMRVZFUlNJT05fU1RSICAgICAgICAgIjMuMDAuNDcuMDAiCisJI2RlZmluZSBXQjMyX0RSSVZFUl9NQUpPUl9WRVJTSU9OICAgMHgwMzAwCisJI2RlZmluZSBXQjMyX0RSSVZFUl9NSU5PUl9WRVJTSU9OICAgMHg0NzAwCisjZW5kaWYKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3diaGFsLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmhhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZjQ0MjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmhhbC5jCkBAIC0wLDAgKzEsODc4IEBACisjaW5jbHVkZSAib3NfY29tbW9uLmgiCisKK3ZvaWQgaGFsX2dldF9ldGhlcm5ldF9hZGRyZXNzKCBwaHdfZGF0YV90IHBId0RhdGEsIFBVQ0hBUiBjdXJyZW50X2FkZHJlc3MgKQoreworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybjsKKworCW1lbWNweSggY3VycmVudF9hZGRyZXNzLCBwSHdEYXRhLT5DdXJyZW50TWFjQWRkcmVzcywgRVRIX0xFTkdUSF9PRl9BRERSRVNTICk7Cit9CisKK3ZvaWQgaGFsX3NldF9ldGhlcm5ldF9hZGRyZXNzKCBwaHdfZGF0YV90IHBId0RhdGEsIFBVQ0hBUiBjdXJyZW50X2FkZHJlc3MgKQoreworCXUzMiBsdG1wWzJdOworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCisJbWVtY3B5KCBwSHdEYXRhLT5DdXJyZW50TWFjQWRkcmVzcywgY3VycmVudF9hZGRyZXNzLCBFVEhfTEVOR1RIX09GX0FERFJFU1MgKTsKKworCWx0bXBbMF09IGNwdV90b19sZTMyKCAqKFBVTE9ORylwSHdEYXRhLT5DdXJyZW50TWFjQWRkcmVzcyApOworCWx0bXBbMV09IGNwdV90b19sZTMyKCAqKFBVTE9ORykocEh3RGF0YS0+Q3VycmVudE1hY0FkZHJlc3MgKyA0KSApICYgMHhmZmZmOworCisJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDAzZTgsIGx0bXAsIDIsIEFVVE9fSU5DUkVNRU5UICk7Cit9CisKK3ZvaWQgaGFsX2dldF9wZXJtYW5lbnRfYWRkcmVzcyggcGh3X2RhdGFfdCBwSHdEYXRhLCBQVUNIQVIgcGV0aGVybmV0X2FkZHJlc3MgKQoreworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybjsKKworCW1lbWNweSggcGV0aGVybmV0X2FkZHJlc3MsIHBId0RhdGEtPlBlcm1hbmVudE1hY0FkZHJlc3MsIDYgKTsKK30KKwordTggaGFsX2luaXRfaGFyZHdhcmUocGh3X2RhdGFfdCBwSHdEYXRhLCBQV0IzMl9BREFQVEVSIEFkYXB0ZXIpCit7CisJdTE2IFNvZnR3YXJlU2V0OworCXBId0RhdGEtPkFkYXB0ZXIgPSBBZGFwdGVyOworCisJLy8gSW5pdGlhbCB0aGUgdmFyaWFibGUKKwlwSHdEYXRhLT5NYXhSZWNlaXZlTGlmZVRpbWUgPSBERUZBVUxUX01TRFVfTElGRV9USU1FOyAvLyBTZXR0aW5nIFJ4IG1heGltdW0gTVNEVSBsaWZlIHRpbWUKKwlwSHdEYXRhLT5GcmFnbWVudFRocmVzaG9sZCA9IERFRkFVTFRfRlJBR01FTlRfVEhSRVNIT0xEOyAvLyBTZXR0aW5nIGRlZmF1bHQgZnJhZ21lbnQgdGhyZXNob2xkCisKKwlpZiAoV2JVc2JfaW5pdGlhbChwSHdEYXRhKSkgeworCQlwSHdEYXRhLT5Jbml0aWFsUmVzb3VyY2UgPSAxOworCQlpZiggV2IzNVJlZ19pbml0aWFsKHBId0RhdGEpKSB7CisJCQlwSHdEYXRhLT5Jbml0aWFsUmVzb3VyY2UgPSAyOworCQkJaWYgKFdiMzVUeF9pbml0aWFsKHBId0RhdGEpKSB7CisJCQkJcEh3RGF0YS0+SW5pdGlhbFJlc291cmNlID0gMzsKKwkJCQlpZiAoV2IzNVJ4X2luaXRpYWwocEh3RGF0YSkpIHsKKwkJCQkJcEh3RGF0YS0+SW5pdGlhbFJlc291cmNlID0gNDsKKwkJCQkJT1NfVElNRVJfSU5JVElBTCggJnBId0RhdGEtPkxFRFRpbWVyLCBoYWxfbGVkX2NvbnRyb2wsIHBId0RhdGEgKTsKKwkJCQkJT1NfVElNRVJfU0VUKCAmcEh3RGF0YS0+TEVEVGltZXIsIDEwMDAgKTsgLy8gMjAwNjA2MjMKKworCQkJCQkvLworCQkJCQkvLyBGb3IgcmVzdHJpY3QgdG8gdmVuZG9yJ3MgaGFyZHdhcmUKKwkJCQkJLy8KKwkJCQkJU29mdHdhcmVTZXQgPSBoYWxfc29mdHdhcmVfc2V0KCBwSHdEYXRhICk7CisKKwkJCQkJI2lmZGVmIFZlbmRvcjIKKwkJCQkJLy8gVHJ5IHRvIG1ha2Ugc3VyZSB0aGUgRUVQUk9NIGNvbnRhaW4KKwkJCQkJU29mdHdhcmVTZXQgPj49IDg7CisJCQkJCWlmKCBTb2Z0d2FyZVNldCAhPSAweDgyICkKKwkJCQkJCXJldHVybiBGQUxTRTsKKwkJCQkJI2VuZGlmCisKKwkJCQkJV2IzNVJ4X3N0YXJ0KCBwSHdEYXRhICk7CisJCQkJCVdiMzVUeF9FUDJWTV9zdGFydCggcEh3RGF0YSApOworCisJCQkJCXJldHVybiBUUlVFOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXBId0RhdGEtPlN1cnByaXNlUmVtb3ZlID0gMTsKKwlyZXR1cm4gRkFMU0U7Cit9CisKKwordm9pZCBoYWxfaGFsdChwaHdfZGF0YV90IHBId0RhdGEsIHZvaWQgKnBwYV9kYXRhKQoreworCXN3aXRjaCggcEh3RGF0YS0+SW5pdGlhbFJlc291cmNlICkKKwl7CisJCWNhc2UgNDoKKwkJY2FzZSAzOiBPU19USU1FUl9DQU5DRUwoICZwSHdEYXRhLT5MRURUaW1lciwgJmNhbmNlbCApOworCQkJT1NfU0xFRVAoMTAwMDAwKTsgLy8gV2FpdCBmb3IgVGltZXIgRFBDIGV4aXQgOTQwNjIzLjIKKwkJCVdiMzVSeF9kZXN0cm95KCBwSHdEYXRhICk7IC8vIFJlbGVhc2UgdGhlIFJ4CisJCWNhc2UgMjogV2IzNVR4X2Rlc3Ryb3koIHBId0RhdGEgKTsgLy8gUmVsZWFzZSB0aGUgVHgKKwkJY2FzZSAxOiBXYjM1UmVnX2Rlc3Ryb3koIHBId0RhdGEgKTsgLy8gUmVsZWFzZSB0aGUgV2IzNSBSZWdpc3N0ZXIgcmVzb3VyY2VzCisJCQkJV2JVc2JfZGVzdHJveSggcEh3RGF0YSApOy8vIFJlbGVhc2UgdGhlIFdiVXNiCisJfQorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBoYWxfc2V0X3JhdGVzKHBod19kYXRhX3QgcEh3RGF0YSwgUFVDSEFSIHBic3NfcmF0ZXMsCisJCSAgIHU4IGxlbmd0aCwgdW5zaWduZWQgY2hhciBiYXNpY19yYXRlX3NldCkKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCXUzMgkJdG1wLCB0bXAxOworCXU4CQlSYXRlWzEyXT17IDIsIDQsIDExLCAyMiwgMTIsIDE4LCAyNCwgMzYsIDQ4LCA3MiwgOTYsIDEwOCB9OworCXU4CQlTdXBwb3J0ZWRSYXRlWzE2XTsKKwl1OAkJaSwgaiwgaywgQ291bnQxLCBDb3VudDIsIEJ5dGU7CisKKwlpZiggcEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgKSByZXR1cm47CisKKwlpZiAoYmFzaWNfcmF0ZV9zZXQpIHsKKwkJcFdiMzVSZWctPk0yOF9NYWNDb250cm9sICY9IH4weDAwMGZmZjAwOworCQl0bXAxID0gMHgwMDAwMDEwMDsKKwl9IGVsc2UgeworCQlwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wgJj0gfjB4ZmZmMDAwMDA7CisJCXRtcDEgPSAweDAwMTAwMDAwOworCX0KKworCXRtcCA9IDA7CisJZm9yIChpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKwkJQnl0ZSA9IHBic3NfcmF0ZXNbaV0gJiAweDdmOworCQlmb3IgKGo9MDsgajwxMjsgaisrKSB7CisJCQlpZiggQnl0ZSA9PSBSYXRlW2pdICkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChqIDwgMTIpCisJCQl0bXAgfD0gKHRtcDE8PGopOworCX0KKworCXBXYjM1UmVnLT5NMjhfTWFjQ29udHJvbCB8PSB0bXA7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODI4LCBwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wgKTsKKworCS8vIDkzMDIwNi4yLmMgTTc4IHNldHRpbmcKKwlqID0gayA9IENvdW50MSA9IENvdW50MiA9IDA7CisJbWVtc2V0KCBTdXBwb3J0ZWRSYXRlLCAwLCAxNiApOworCXRtcCA9IDB4MDAxMDAwMDA7CisJdG1wMSA9IDB4MDAwMDAxMDA7CisJZm9yIChpPTA7IGk8MTI7IGkrKykgeyAvLyBHZXQgdGhlIHN1cHBvcnRlZCByYXRlCisJCWlmICh0bXAgJiBwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wpIHsKKwkJCVN1cHBvcnRlZFJhdGVbal0gPSBSYXRlW2ldOworCisJCQlpZiAodG1wMSAmIHBXYjM1UmVnLT5NMjhfTWFjQ29udHJvbCkKKwkJCQlTdXBwb3J0ZWRSYXRlW2pdIHw9IDB4ODA7CisKKwkJCWlmIChrKQorCQkJCUNvdW50MisrOworCQkJZWxzZQorCQkJCUNvdW50MSsrOworCisJCQlqKys7CisJCX0KKworCQlpZiAoaT09NCAmJiBrPT0wKSB7CisJCQlpZiggIShwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wgJiAweDAwMGZmMDAwKSApIC8vIGlmIGJhc2ljIHJhdGUgaW4gMTFnIGRvbWFpbikKKwkJCXsKKwkJCQlrID0gMTsKKwkJCQlqID0gODsKKwkJCX0KKwkJfQorCisJCXRtcCA8PD0gMTsKKwkJdG1wMSA8PD0gMTsKKwl9CisKKwkvLyBGaWxsIGRhdGEgaW50byBzdXBwb3J0IHJhdGUgdW50aWwgYnVmZmVyIGZ1bGwKKwkvLy0tLTIwMDYwOTI2IGFkZCBieSBhbnNvbidzIGVuZGlhbgorCWZvciAoaT0wOyBpPDQ7IGkrKykKKwkJKihQVUxPTkcpKFN1cHBvcnRlZFJhdGUrKGk8PDIpKSA9IGNwdV90b19sZTMyKCAqKFBVTE9ORykoU3VwcG9ydGVkUmF0ZSsoaTw8MikpICk7CisJLy8tLS0gZW5kIDIwMDYwOTI2IGFkZCBieSBhbnNvbidzIGVuZGlhbgorCVdiMzVSZWdfQnVyc3RXcml0ZSggcEh3RGF0YSwweDA4N2MsIChQVUxPTkcpU3VwcG9ydGVkUmF0ZSwgNCwgQVVUT19JTkNSRU1FTlQgKTsKKwlwV2IzNVJlZy0+TTdDX01hY0NvbnRyb2wgPSAoKFBVTE9ORylTdXBwb3J0ZWRSYXRlKVswXTsKKwlwV2IzNVJlZy0+TTgwX01hY0NvbnRyb2wgPSAoKFBVTE9ORylTdXBwb3J0ZWRSYXRlKVsxXTsKKwlwV2IzNVJlZy0+TTg0X01hY0NvbnRyb2wgPSAoKFBVTE9ORylTdXBwb3J0ZWRSYXRlKVsyXTsKKwlwV2IzNVJlZy0+TTg4X01hY0NvbnRyb2wgPSAoKFBVTE9ORylTdXBwb3J0ZWRSYXRlKVszXTsKKworCS8vIEZpbGwgbGVuZ3RoCisJdG1wID0gQ291bnQxPDwyOCB8IENvdW50Mjw8MjQ7CisJcFdiMzVSZWctPk03OF9FUlBJbmZvcm1hdGlvbiAmPSB+MHhmZjAwMDAwMDsKKwlwV2IzNVJlZy0+TTc4X0VSUEluZm9ybWF0aW9uIHw9IHRtcDsKKwlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4NzgsIHBXYjM1UmVnLT5NNzhfRVJQSW5mb3JtYXRpb24gKTsKK30KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBoYWxfc2V0X2JlYWNvbl9wZXJpb2QoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgYmVhY29uX3BlcmlvZCApCit7CisJdTMyCXRtcDsKKworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybjsKKworCXBId0RhdGEtPkJlYWNvblBlcmlvZCA9IGJlYWNvbl9wZXJpb2Q7CisJdG1wID0gcEh3RGF0YS0+QmVhY29uUGVyaW9kIDw8IDE2OworCXRtcCB8PSBwSHdEYXRhLT5Qcm9iZURlbGF5OworCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDg0OCwgdG1wICk7Cit9CisKKwordm9pZCBoYWxfc2V0X2N1cnJlbnRfY2hhbm5lbF9leCggIHBod19kYXRhX3QgcEh3RGF0YSwgIENoYW5JbmZvIGNoYW5uZWwgKQoreworCVBXQjM1UkVHIHBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisKKwlpZiggcEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgKQorCQlyZXR1cm47CisKKwlwcmludGsoIkdvaW5nIHRvIGNoYW5uZWw6ICVkLyVkXG4iLCBjaGFubmVsLmJhbmQsIGNoYW5uZWwuQ2hhbk5vKTsKKworCVJGU3ludGhlc2l6ZXJfU3dpdGNoaW5nQ2hhbm5lbCggcEh3RGF0YSwgY2hhbm5lbCApOy8vIFN3aXRjaCBjaGFubmVsCisJcEh3RGF0YS0+Q2hhbm5lbCA9IGNoYW5uZWwuQ2hhbk5vOworCXBId0RhdGEtPmJhbmQgPSBjaGFubmVsLmJhbmQ7CisJI2lmZGVmIF9QRV9TVEFURV9EVU1QXworCVdCREVCVUcoKCJTZXQgY2hhbm5lbCBpcyAlZCwgYmFuZCA9JWRcbiIsIHBId0RhdGEtPkNoYW5uZWwsIHBId0RhdGEtPmJhbmQpKTsKKwkjZW5kaWYKKwlwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wgJj0gfjB4ZmY7IC8vIENsZWFuIGNoYW5uZWwgaW5mb3JtYXRpb24gZmllbGQKKwlwV2IzNVJlZy0+TTI4X01hY0NvbnRyb2wgfD0gY2hhbm5lbC5DaGFuTm87CisJV2IzNVJlZ19Xcml0ZVdpdGhDYWxsYmFja1ZhbHVlKCBwSHdEYXRhLCAweDA4MjgsIHBXYjM1UmVnLT5NMjhfTWFjQ29udHJvbCwKKwkJCQkJKFBDSEFSKSZjaGFubmVsLCBzaXplb2YoQ2hhbkluZm8pKTsKK30KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIGhhbF9zZXRfY3VycmVudF9jaGFubmVsKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgQ2hhbkluZm8gY2hhbm5lbCApCit7CisJaGFsX3NldF9jdXJyZW50X2NoYW5uZWxfZXgoIHBId0RhdGEsIGNoYW5uZWwgKTsKK30KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIGhhbF9nZXRfY3VycmVudF9jaGFubmVsKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgQ2hhbkluZm8gKmNoYW5uZWwgKQoreworCWNoYW5uZWwtPkNoYW5ObyA9IHBId0RhdGEtPkNoYW5uZWw7CisJY2hhbm5lbC0+YmFuZCA9IHBId0RhdGEtPmJhbmQ7Cit9CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBoYWxfc2V0X2FjY2VwdF9icm9hZGNhc3QoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCBlbmFibGUgKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisKKwlpZiggcEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgKSByZXR1cm47CisKKwlwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgJj0gfjB4MDIwMDAwMDA7Ly9UaGUgSFcgdmFsdWUKKworCWlmIChlbmFibGUpCisJCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCB8PSAweDAyMDAwMDAwOy8vVGhlIEhXIHZhbHVlCisKKwlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4MDAsIHBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCApOworfQorCisvL2ZvciB3ZXAga2V5IGVycm9yIGRldGVjdGlvbiwgd2UgbmVlZCB0byBhY2NlcHQgYnJvYWRjYXN0IHBhY2tldHMgdG8gYmUgcmVjZWl2ZWQgdGVtcG9yYXJ5Lgordm9pZCBoYWxfc2V0X2FjY2VwdF9wcm9taXNjdW91cyggcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggZW5hYmxlKQoreworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisKKwlpZiAocEh3RGF0YS0+U3VycHJpc2VSZW1vdmUpIHJldHVybjsKKwlpZiAoZW5hYmxlKSB7CisJCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCB8PSAweDAwNDAwMDAwOworCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDA4MDAsIHBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCApOworCX0gZWxzZSB7CisJCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCY9fjB4MDA0MDAwMDA7CisJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDgwMCwgcFdiMzVSZWctPk0wMF9NYWNDb250cm9sICk7CisJfQorfQorCit2b2lkIGhhbF9zZXRfYWNjZXB0X211bHRpY2FzdCggIHBod19kYXRhX3QgcEh3RGF0YSwgIHU4IGVuYWJsZSApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybjsKKworCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCAmPSB+MHgwMTAwMDAwMDsvL1RoZSBIVyB2YWx1ZQorCWlmIChlbmFibGUpICBwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgfD0gMHgwMTAwMDAwMDsvL1RoZSBIVyB2YWx1ZQorCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDgwMCwgcFdiMzVSZWctPk0wMF9NYWNDb250cm9sICk7Cit9CisKK3ZvaWQgaGFsX3NldF9hY2NlcHRfYmVhY29uKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggZW5hYmxlICkKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCisJLy8gMjAwNDAxMDggZGVidWcKKwlpZiggIWVuYWJsZSApLy9EdWUgdG8gU01FIGFuZCBNTE1FIGFyZSBub3Qgc3VpdGFibGUgZm9yIDM1CisJCXJldHVybjsKKworCXBXYjM1UmVnLT5NMDBfTWFjQ29udHJvbCAmPSB+MHgwNDAwMDAwMDsvL1RoZSBIVyB2YWx1ZQorCWlmKCBlbmFibGUgKQorCQlwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgfD0gMHgwNDAwMDAwMDsvL1RoZSBIVyB2YWx1ZQorCisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODAwLCBwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgKTsKK30KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIGhhbF9zZXRfbXVsdGljYXN0X2FkZHJlc3MoIHBod19kYXRhX3QgcEh3RGF0YSwgUFVDSEFSIGFkZHJlc3MsIHU4IG51bWJlciApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwl1OAkJQnl0ZSwgQml0OworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCisJLy9FcmFzZXMgYW5kIHJlZmlsbHMgdGhlIGNhcmQgbXVsdGljYXN0IHJlZ2lzdGVycy4gVXNlZCB3aGVuIGFuIGFkZHJlc3MKKwkvLyAgICBoYXMgYmVlbiBkZWxldGVkIGFuZCBhbGwgYml0cyBtdXN0IGJlIHJlY29tcHV0ZWQuCisJcFdiMzVSZWctPk0wNF9NdWx0aWNhc3RBZGRyZXNzMSA9IDA7CisJcFdiMzVSZWctPk0wOF9NdWx0aWNhc3RBZGRyZXNzMiA9IDA7CisKKwl3aGlsZSggbnVtYmVyICkKKwl7CisJCW51bWJlci0tOworCQlDYXJkR2V0TXVsdGljYXN0Qml0KCAoYWRkcmVzcysobnVtYmVyKkVUSF9MRU5HVEhfT0ZfQUREUkVTUykpLCAmQnl0ZSwgJkJpdCk7CisJCXBXYjM1UmVnLT5NdWx0aWNhc3RbQnl0ZV0gfD0gQml0OworCX0KKworCS8vIFVwZGF0aW5nIHJlZ2lzdGVyCisJV2IzNVJlZ19CdXJzdFdyaXRlKCBwSHdEYXRhLCAweDA4MDQsIChQVUxPTkcpcFdiMzVSZWctPk11bHRpY2FzdCwgMiwgQVVUT19JTkNSRU1FTlQgKTsKK30KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit1OCBoYWxfZ2V0X2FjY2VwdF9iZWFjb24oICBwaHdfZGF0YV90IHBId0RhdGEgKQoreworCVBXQjM1UkVHIHBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisKKwlpZiggcEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgKSByZXR1cm4gMDsKKworCWlmKCBwV2IzNVJlZy0+TTAwX01hY0NvbnRyb2wgJiAweDA0MDAwMDAwICkKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKwordW5zaWduZWQgY2hhciBoYWxfcmVzZXRfaGFyZHdhcmUoIHBod19kYXRhX3QgcEh3RGF0YSwgdm9pZCogcHBhICkKK3sKKwkvLyBOb3QgaW1wbGVtZW50IHlldAorCXJldHVybiBUUlVFOworfQorCit2b2lkIGhhbF9zdG9wKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCisJcEh3RGF0YS0+V2IzNVJ4LnJ4X2hhbHQgPSAxOworCVdiMzVSeF9zdG9wKCBwSHdEYXRhICk7CisKKwlwSHdEYXRhLT5XYjM1VHgudHhfaGFsdCA9IDE7CisJV2IzNVR4X3N0b3AoIHBId0RhdGEgKTsKKworCXBXYjM1UmVnLT5EMDBfRG1hQ29udHJvbCAmPSB+MHhjMDAwMDAwMDsvL1R4IE9mZiwgUnggT2ZmCisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwNDAwLCBwV2IzNVJlZy0+RDAwX0RtYUNvbnRyb2wgKTsKKworCVdiVXNiX1N0b3AoIHBId0RhdGEgKTsgLy8gMjAwNTEyMzAgQWRkLjQKK30KKwordW5zaWduZWQgY2hhciBoYWxfaWRsZShwaHdfZGF0YV90IHBId0RhdGEpCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwlQV0JVU0IJcFdiVXNiID0gJnBId0RhdGEtPldiVXNiOworCisJaWYoICFwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSAmJiAoIHBXYlVzYi0+RGV0ZWN0Q291bnQgfHwgcFdiMzVSZWctPkVQMHZtX3N0YXRlIT1WTV9TVE9QICkgKQorCQlyZXR1cm4gRkFMU0U7CisKKwlyZXR1cm4gVFJVRTsKK30KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIGhhbF9zZXRfY3dtaW4oICBwaHdfZGF0YV90IHBId0RhdGEsICB1OAljd2luX21pbiApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybjsKKworCXBId0RhdGEtPmN3bWluID0gY3dpbl9taW47CisJcFdiMzVSZWctPk0yQ19NYWNDb250cm9sICY9IH4weDdjMDA7CS8vYml0IDEwIH4gMTQKKwlwV2IzNVJlZy0+TTJDX01hY0NvbnRyb2wgfD0gKHBId0RhdGEtPmN3bWluPDwxMCk7CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODJjLCBwV2IzNVJlZy0+TTJDX01hY0NvbnRyb2wgKTsKK30KKworczMyIGhhbF9nZXRfcnNzaSggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUzMiAqSGFsUnNzaUFycnksICB1OCBDb3VudCApCit7CisJUFdCMzVSRUcgcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKwlSMDFfREVTQ1JJUFRPUglyMDE7CisJczMyIGx0bXAgPSAwLCB0bXA7CisJdTgJaTsKKworCWlmKCBwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSApIHJldHVybiAtMjAwOworCWlmKCBDb3VudCA+IE1BWF9BQ0NfUlNTSV9DT1VOVCApIC8vIEJlY2F1c2UgdGhlIFRTIG1heSB1c2UgdGhpcyBmdW50aW9uCisJCUNvdW50ID0gTUFYX0FDQ19SU1NJX0NPVU5UOworCisJLy8gUlNTSSA9IEMxICsgQzIgKiAoYWdjX3N0YXRlWzc6MF0gKyBvZmZzZXRfbWFwKGxuYV9zdGF0ZVsxOjBdKSkKKwkvLyBDMSA9IC0xOTUsIEMyID0gMC42NiA9IDg1LzEyOAorCWZvciAoaT0wOyBpPENvdW50OyBpKyspCisJeworCQlyMDEudmFsdWUgPSBIYWxSc3NpQXJyeVtpXTsKKwkJdG1wID0gKCgoIHIwMS5SMDFfQUdDX3N0YXRlICsgcFdiMzVSZWctPkxOQVZhbHVlW3IwMS5SMDFfTE5BX3N0YXRlXSkgKiA4NSApID4+NyApIC0gMTk1OworCQlsdG1wICs9IHRtcDsKKwl9CisJbHRtcCAvPSBDb3VudDsKKwlpZiggcEh3RGF0YS0+cGh5X3R5cGUgPT0gUkZfQUlST0hBXzIyMzAgKSBsdG1wIC09IDU7IC8vIDEwOworCWlmKCBwSHdEYXRhLT5waHlfdHlwZSA9PSBSRl9BSVJPSEFfMjIzMFMgKSBsdG1wIC09IDU7IC8vIDEwOyAyMDA2MDQyMCBBZGQgdGhpcworCisJLy9pZiggbHRtcCA8IC0yMDAgKSBsdG1wID0gLTIwMDsKKwlpZiggbHRtcCA8IC0xMTAgKSBsdG1wID0gLTExMDsvLyAxLjAuMjQuMCBGb3IgTkpSQworCisJcmV0dXJuIGx0bXA7Cit9CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3MzMiBoYWxfZ2V0X3Jzc2lfYnNzKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IGlkeCwgIHU4IENvdW50ICkKK3sKKwlQV0IzNVJFRyBwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCVIwMV9ERVNDUklQVE9SCXIwMTsKKwlzMzIgbHRtcCA9IDAsIHRtcDsKKwl1OAlpLCBqOworCVBBREFQVEVSCUFkYXB0ZXIgPSBwSHdEYXRhLT5BZGFwdGVyOworLy8JdTMyICpIYWxSc3NpQXJyeSA9IHBzQlNTKGlkeCktPkhhbFJzc2k7CisKKwlpZiggcEh3RGF0YS0+U3VycHJpc2VSZW1vdmUgKSByZXR1cm4gLTIwMDsKKwlpZiggQ291bnQgPiBNQVhfQUNDX1JTU0lfQ09VTlQgKSAvLyBCZWNhdXNlIHRoZSBUUyBtYXkgdXNlIHRoaXMgZnVudGlvbgorCQlDb3VudCA9IE1BWF9BQ0NfUlNTSV9DT1VOVDsKKworCS8vIFJTU0kgPSBDMSArIEMyICogKGFnY19zdGF0ZVs3OjBdICsgb2Zmc2V0X21hcChsbmFfc3RhdGVbMTowXSkpCisJLy8gQzEgPSAtMTk1LCBDMiA9IDAuNjYgPSA4NS8xMjgKKyNpZiAwCisJZm9yIChpPTA7IGk8Q291bnQ7IGkrKykKKwl7CisJCXIwMS52YWx1ZSA9IEhhbFJzc2lBcnJ5W2ldOworCQl0bXAgPSAoKCggcjAxLlIwMV9BR0Nfc3RhdGUgKyBwV2IzNVJlZy0+TE5BVmFsdWVbcjAxLlIwMV9MTkFfc3RhdGVdKSAqIDg1ICkgPj43ICkgLSAxOTU7CisJCWx0bXAgKz0gdG1wOworCX0KKyNlbHNlCisJaWYgKHBzQlNTKGlkeCktPkhhbFJzc2lJbmRleCA9PSAwKQorCQlwc0JTUyhpZHgpLT5IYWxSc3NpSW5kZXggPSBNQVhfQUNDX1JTU0lfQ09VTlQ7CisJaiA9ICh1OClwc0JTUyhpZHgpLT5IYWxSc3NpSW5kZXgtMTsKKworCWZvciAoaT0wOyBpPENvdW50OyBpKyspCisJeworCQlyMDEudmFsdWUgPSBwc0JTUyhpZHgpLT5IYWxSc3NpW2pdOworCQl0bXAgPSAoKCggcjAxLlIwMV9BR0Nfc3RhdGUgKyBwV2IzNVJlZy0+TE5BVmFsdWVbcjAxLlIwMV9MTkFfc3RhdGVdKSAqIDg1ICkgPj43ICkgLSAxOTU7CisJCWx0bXAgKz0gdG1wOworCQlpZiAoaiA9PSAwKQorCQl7CisJCQlqID0gTUFYX0FDQ19SU1NJX0NPVU5UOworCQl9CisJCWotLTsKKwl9CisjZW5kaWYKKwlsdG1wIC89IENvdW50OworCWlmKCBwSHdEYXRhLT5waHlfdHlwZSA9PSBSRl9BSVJPSEFfMjIzMCApIGx0bXAgLT0gNTsgLy8gMTA7CisJaWYoIHBId0RhdGEtPnBoeV90eXBlID09IFJGX0FJUk9IQV8yMjMwUyApIGx0bXAgLT0gNTsgLy8gMTA7IDIwMDYwNDIwIEFkZCB0aGlzCisKKwkvL2lmKCBsdG1wIDwgLTIwMCApIGx0bXAgPSAtMjAwOworCWlmKCBsdG1wIDwgLTExMCApIGx0bXAgPSAtMTEwOy8vIDEuMC4yNC4wIEZvciBOSlJDCisKKwlyZXR1cm4gbHRtcDsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgaGFsX2xlZF9jb250cm9sXzFhKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwloYWxfbGVkX2NvbnRyb2woIE5VTEwsIHBId0RhdGEsIE5VTEwsIE5VTEwgKTsKK30KKwordm9pZCBoYWxfbGVkX2NvbnRyb2woICB2b2lkKiBTMSwgIHBod19kYXRhX3QgcEh3RGF0YSwgIHZvaWQqIFMzLCAgdm9pZCogUzQgKQoreworCVBBREFQVEVSCUFkYXB0ZXIgPSBwSHdEYXRhLT5BZGFwdGVyOworCVBXQjM1UkVHCXBXYjM1UmVnID0gJnBId0RhdGEtPldiMzVSZWc7CisJdTMyCUxFRFNldCA9IChwSHdEYXRhLT5Tb2Z0d2FyZVNldCAmIEhBTF9MRURfU0VUX01BU0spID4+IEhBTF9MRURfU0VUX1NISUZUOworCXU4CUxFRGdyYXlbMjBdID0geyAwLDMsNCw2LDgsMTAsMTEsMTIsMTMsMTQsMTUsMTQsMTMsMTIsMTEsMTAsOCw2LDQsMiB9OworCXU4CUxFRGdyYXkyWzMwXSA9IHsgNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNSwxNCwxMywxMiwxMSwxMCw5LDggfTsKKwl1MzIJVGltZUludGVydmFsID0gNTAwLCBsdG1wLCBsdG1wMjsKKyAgICAgICAgbHRtcD0wOworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCisJaWYoIHBId0RhdGEtPkxFRF9jb250cm9sICkgeworCQlsdG1wMiA9IHBId0RhdGEtPkxFRF9jb250cm9sICYgMHhmZjsKKwkJaWYoIGx0bXAyID09IDUgKSAvLyA1IGlzIFdQUyBtb2RlCisJCXsKKwkJCVRpbWVJbnRlcnZhbCA9IDEwMDsKKwkJCWx0bXAyID0gKHBId0RhdGEtPkxFRF9jb250cm9sPj44KSAmIDB4ZmY7CisJCQlzd2l0Y2goIGx0bXAyICkKKwkJCXsKKwkJCQljYXNlIDE6IC8vIFswLjIgT25dWzAuMSBPZmZdLi4uCisJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZyAlPSAzOworCQkJCQlsdG1wID0gMHgxMDEwOyAvLyBMZWQgMSAmIDAgR3JlZW4gYW5kIFJlZAorCQkJCQlpZiggcEh3RGF0YS0+TEVEX0JsaW5raW5nID09IDIgKSAvLyBUdXJuIG9mZgorCQkJCQkJbHRtcCA9IDA7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgMjogLy8gWzAuMSBPbl1bMC4xIE9mZl0uLi4KKwkJCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nICU9IDI7CisJCQkJCWx0bXAgPSAweDAwMTA7IC8vIExlZCAwIHJlZCBjb2xvcgorCQkJCQlpZiggcEh3RGF0YS0+TEVEX0JsaW5raW5nICkgLy8gVHVybiBvZmYKKwkJCQkJCWx0bXAgPSAwOworCQkJCQlicmVhazsKKwkJCQljYXNlIDM6IC8vIFswLjEgT25dWzAuMSBPZmZdWzAuMSBPbl1bMC4xIE9mZl1bMC4xIE9uXVswLjEgT2ZmXVswLjEgT25dWzAuMSBPZmZdWzAuMSBPbl1bMC4xIE9mZl1bMC41IE9mZl0uLi4KKwkJCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nICU9IDE1OworCQkJCQlsdG1wID0gMHgwMDEwOyAvLyBMZWQgMCByZWQgY29sb3IKKwkJCQkJaWYoIChwSHdEYXRhLT5MRURfQmxpbmtpbmcgPj0gOSkgfHwgKHBId0RhdGEtPkxFRF9CbGlua2luZyUyKSApIC8vIFR1cm4gb2ZmIDAuNiBzZWMKKwkJCQkJCWx0bXAgPSAwOworCQkJCQlicmVhazsKKwkJCQljYXNlIDQ6IC8vIFszMDAgT25dWyBvZmYgXQorCQkJCQlsdG1wID0gMHgxMDAwOyAvLyBMZWQgMSBHcmVlbiBjb2xvcgorCQkJCQlpZiggcEh3RGF0YS0+TEVEX0JsaW5raW5nID49IDMwMDAgKQorCQkJCQkJbHRtcCA9IDA7IC8vIGxlZCBtYXliZSBvbiBhZnRlciAzMDBzZWMgKiAzMmJpdCBjb3VudGVyIG92ZXJsYXAuCisJCQkJCWJyZWFrOworCQkJfQorCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nKys7CisKKwkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSA9IGx0bXA7CisJCQlpZiggTEVEU2V0ICE9IDcgKSAvLyBPbmx5IDExMSBtb2RlIGhhcyAyIExFRHMgb24gUENCLgorCQkJeworCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAobHRtcCAmMHhmZik8PDg7IC8vIENvcHkgTEVEIHJlc3VsdCB0byBlYWNoIExFRCBjb250cm9sIHJlZ2lzdGVyCisJCQkJcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlIHw9IChsdG1wICYweGZmMDApPj44OworCQkJfQorCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsKKwkJfQorCX0KKwllbHNlIGlmKCBwSHdEYXRhLT5DdXJyZW50UmFkaW9TdyB8fCBwSHdEYXRhLT5DdXJyZW50UmFkaW9IdyApIC8vIElmIHJhZGlvIG9mZgorCXsKKwkJaWYoIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmIDB4MTAxMCApCisJCXsKKwkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmPSB+MHgxMDEwOworCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2goIExFRFNldCApCisJCXsKKwkJCWNhc2UgNDogLy8gWzEwMF0gT25seSAxIExlZCBiZSBwbGFjZWQgb24gUENCIGFuZCB1c2UgcGluIDIxIG9mIElDLiBVc2UgTEVEXzAgZm9yIHNob3dpbmcKKwkJCQlpZiggIXBId0RhdGEtPkxFRF9MaW5rT24gKSAvLyBCbGluayBvbmx5IGlmIG5vdCBMaW5rIE9uCisJCQkJeworCQkJCQkvLyBCbGlua2luZyBpZiBzY2FubmluZyBpcyBvbiBwcm9ncmVzcworCQkJCQlpZiggcEh3RGF0YS0+TEVEX1NjYW5uaW5nICkKKwkJCQkJeworCQkJCQkJaWYoIHBId0RhdGEtPkxFRF9CbGlua2luZyA9PSAwICkKKwkJCQkJCXsKKwkJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgfD0gMHgxMDsKKwkJCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOyAvLyBMRURfMCBPbgorCQkJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZyA9IDE7CisJCQkJCQkJVGltZUludGVydmFsID0gMzAwOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmPSB+MHgxMDsKKwkJCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOyAvLyBMRURfMCBPZmYKKwkJCQkJCQlwSHdEYXRhLT5MRURfQmxpbmtpbmcgPSAwOworCQkJCQkJCVRpbWVJbnRlcnZhbCA9IDMwMDsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8vVHVybiBPZmYgTEVEXzAKKwkJCQkJCWlmKCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJiAweDEwICkKKwkJCQkJCXsKKwkJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJj0gfjB4MTA7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzAgT2ZmCisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLy8gVHVybiBPbiBMRURfMAorCQkJCQlpZiggKHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmIDB4MTApID09IDAgKQorCQkJCQl7CisJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgfD0gMHgxMDsKKwkJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNiYywgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICk7IC8vIExFRF8wIE9mZgorCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIDY6IC8vIFsxMTBdIE9ubHkgMSBMZWQgYmUgcGxhY2VkIG9uIFBDQiBhbmQgdXNlIHBpbiAyMSBvZiBJQy4gVXNlIExFRF8wIGZvciBzaG93aW5nCisJCQkJaWYoICFwSHdEYXRhLT5MRURfTGlua09uICkgLy8gQmxpbmsgb25seSBpZiBub3QgTGluayBPbgorCQkJCXsKKwkJCQkJLy8gQmxpbmtpbmcgaWYgc2Nhbm5pbmcgaXMgb24gcHJvZ3Jlc3MKKwkJCQkJaWYoIHBId0RhdGEtPkxFRF9TY2FubmluZyApCisJCQkJCXsKKwkJCQkJCWlmKCBwSHdEYXRhLT5MRURfQmxpbmtpbmcgPT0gMCApCisJCQkJCQl7CisJCQkJCQkJcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICY9IH4weGY7CisJCQkJCQkJcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlIHw9IDB4MTA7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzAgT24KKwkJCQkJCQlwSHdEYXRhLT5MRURfQmxpbmtpbmcgPSAxOworCQkJCQkJCVRpbWVJbnRlcnZhbCA9IDMwMDsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJCQkJCXsKKwkJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJj0gfjB4MWY7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzAgT2ZmCisJCQkJCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nID0gMDsKKwkJCQkJCQlUaW1lSW50ZXJ2YWwgPSAzMDA7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvLyAyMDA2MDkwMSBHcmF5IGJsaW5raW5nIGlmIGluIGRpc2Nvbm5lY3Qgc3RhdGUgYW5kIG5vdCBzY2FubmluZworCQkJCQkJbHRtcCA9IHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZTsKKwkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmPSB+MHgxZjsKKwkJCQkJCWlmKCBMRURncmF5MlsocEh3RGF0YS0+TEVEX0JsaW5raW5nJTMwKV0gKQorCQkJCQkJeworCQkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAweDEwOworCQkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSBMRURncmF5MlsgKHBId0RhdGEtPkxFRF9CbGlua2luZyUzMCkgXTsKKwkJCQkJCX0KKwkJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZysrOworCQkJCQkJaWYoIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAhPSBsdG1wICkKKwkJCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOyAvLyBMRURfMCBPZmYKKwkJCQkJCVRpbWVJbnRlcnZhbCA9IDEwMDsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvLyBUdXJuIE9uIExFRF8wCisJCQkJCWlmKCAocFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgxMCkgPT0gMCApCisJCQkJCXsKKwkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAweDEwOworCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzAgT2ZmCisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgNTogLy8gWzEwMV0gT25seSAxIExlZCBiZSBwbGFjZWQgb24gUENCIGFuZCB1c2UgTEVEXzEgZm9yIHNob3dpbmcKKwkJCQlpZiggIXBId0RhdGEtPkxFRF9MaW5rT24gKSAvLyBCbGluayBvbmx5IGlmIG5vdCBMaW5rIE9uCisJCQkJeworCQkJCQkvLyBCbGlua2luZyBpZiBzY2FubmluZyBpcyBvbiBwcm9ncmVzcworCQkJCQlpZiggcEh3RGF0YS0+TEVEX1NjYW5uaW5nICkKKwkJCQkJeworCQkJCQkJaWYoIHBId0RhdGEtPkxFRF9CbGlua2luZyA9PSAwICkKKwkJCQkJCXsKKwkJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgfD0gMHgxMDAwOworCQkJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNiYywgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICk7IC8vIExFRF8xIE9uCisJCQkJCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nID0gMTsKKwkJCQkJCQlUaW1lSW50ZXJ2YWwgPSAzMDA7CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJCQkJcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICY9IH4weDEwMDA7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzEgT2ZmCisJCQkJCQkJcEh3RGF0YS0+TEVEX0JsaW5raW5nID0gMDsKKwkJCQkJCQlUaW1lSW50ZXJ2YWwgPSAzMDA7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvL1R1cm4gT2ZmIExFRF8xCisJCQkJCQlpZiggcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgxMDAwICkKKwkJCQkJCXsKKwkJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJj0gfjB4MTAwMDsKKwkJCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOyAvLyBMRURfMSBPZmYKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvLyBJcyB0cmFuc21pdHRpbmcvcmVjZWl2aW5nID8/CisJCQkJCWlmKCAoT1NfQ1VSUkVOVF9SWF9CWVRFKCBBZGFwdGVyICkgIT0gcEh3RGF0YS0+UnhCeXRlQ291bnRMYXN0ICkgfHwKKwkJCQkJCShPU19DVVJSRU5UX1RYX0JZVEUoIEFkYXB0ZXIgKSAhPSBwSHdEYXRhLT5UeEJ5dGVDb3VudExhc3QgKSApCisJCQkJCXsKKwkJCQkJCWlmKCAocFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgzMDAwKSAhPSAweDMwMDAgKQorCQkJCQkJeworCQkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAweDMwMDA7CisJCQkJCQkJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwM2JjLCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgKTsgLy8gTEVEXzEgT24KKwkJCQkJCX0KKworCQkJCQkJLy8gVXBkYXRlIHZhcmlhYmxlCisJCQkJCQlwSHdEYXRhLT5SeEJ5dGVDb3VudExhc3QgPSBPU19DVVJSRU5UX1JYX0JZVEUoIEFkYXB0ZXIgKTsKKwkJCQkJCXBId0RhdGEtPlR4Qnl0ZUNvdW50TGFzdCA9IE9TX0NVUlJFTlRfVFhfQllURSggQWRhcHRlciApOworCQkJCQkJVGltZUludGVydmFsID0gMjAwOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLy8gVHVybiBPbiBMRURfMSBhbmQgYmxpbmtpbmcgaWYgdHJhbnNtaXR0aW5nL3JlY2VpdmluZworCQkJCQkJIGlmKCAocFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgzMDAwKSAhPSAweDEwMDAgKQorCQkJCQkJIHsKKwkJCQkJCQkgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICY9IH4weDMwMDA7CisJCQkJCQkJIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAweDEwMDA7CisJCQkJCQkJIFdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNiYywgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICk7IC8vIExFRF8xIE9uCisJCQkJCQkgfQorCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OiAvLyBEZWZhdWx0IHNldHRpbmcuIDIgTEVEIGJlIHBsYWNlZCBvbiBQQ0IuIExFRF8wOiBMaW5rIE9uIExFRF8xIEFjdGl2ZQorCQkJCWlmKCAocFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgzMDAwKSAhPSAweDMwMDAgKQorCQkJCXsKKwkJCQkJcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlIHw9IDB4MzAwMDsvLyBMRURfMSBpcyBhbHdheXMgb24gYW5kIGV2ZW50IGVuYWJsZQorCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOworCQkJCX0KKworCQkJCWlmKCBwSHdEYXRhLT5MRURfQmxpbmtpbmcgKQorCQkJCXsKKwkJCQkJLy8gR3JheSBibGlua2luZworCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJj0gfjB4MGY7CisJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSB8PSAweDEwOworCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgfD0gTEVEZ3JheVsgKHBId0RhdGEtPkxFRF9CbGlua2luZy0xKSUyMCBdOworCQkJCQlXYjM1UmVnX1dyaXRlKCBwSHdEYXRhLCAweDAzYmMsIHBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSApOworCisJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZyArPSAyOworCQkJCQlpZiggcEh3RGF0YS0+TEVEX0JsaW5raW5nIDwgNDAgKQorCQkJCQkJVGltZUludGVydmFsID0gMTAwOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZyA9IDA7IC8vIFN0b3AgYmxpbmtpbmcKKwkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmPSB+MHgwZjsKKwkJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNiYywgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICk7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYoIHBId0RhdGEtPkxFRF9MaW5rT24gKQorCQkJCXsKKwkJCQkJaWYoICEocFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICYgMHgxMCkgKSAvLyBDaGVjayB0aGUgTEVEXzAKKwkJCQkJeworCQkJCQkJLy9UcnkgdG8gdHVybiBPTiBMRURfMCBhZnRlciBncmF5IGJsaW5raW5nCisJCQkJCQlwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgfD0gMHgxMDsKKwkJCQkJCXBId0RhdGEtPkxFRF9CbGlua2luZyA9IDE7IC8vU3RhcnQgYmxpbmtpbmcKKwkJCQkJCVRpbWVJbnRlcnZhbCA9IDUwOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlmKCBwV2IzNVJlZy0+VTFCQ19MRURDb25maWd1cmUgJiAweDEwICkgLy8gQ2hlY2sgdGhlIExFRF8wCisJCQkJCXsKKwkJCQkJCXBXYjM1UmVnLT5VMUJDX0xFRENvbmZpZ3VyZSAmPSB+MHgxMDsKKwkJCQkJCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MDNiYywgcFdiMzVSZWctPlUxQkNfTEVEQ29uZmlndXJlICk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCX0KKworCQkvLzIwMDYwODI4LjEgQWN0aXZlIHNlbmQgbnVsbCBwYWNrZXQgdG8gYXZvaWQgQVAgZGlzY29ubmVjdAorCQlpZiggcEh3RGF0YS0+TEVEX0xpbmtPbiApCisJCXsKKwkJCXBId0RhdGEtPk51bGxQYWNrZXRDb3VudCArPSBUaW1lSW50ZXJ2YWw7CisJCQlpZiggcEh3RGF0YS0+TnVsbFBhY2tldENvdW50ID49IERFRkFVTFRfTlVMTF9QQUNLRVRfQ09VTlQgKQorCQkJeworCQkJCXBId0RhdGEtPk51bGxQYWNrZXRDb3VudCA9IDA7CisJCQl9CisJCX0KKwl9CisKKwlwSHdEYXRhLT50aW1lX2NvdW50ICs9IFRpbWVJbnRlcnZhbDsKKwlXYjM1VHhfQ3VycmVudFRpbWUoIHBId0RhdGEsIHBId0RhdGEtPnRpbWVfY291bnQgKTsgLy8gMjAwNjA5MjggYWRkCisJT1NfVElNRVJfU0VUKCAmcEh3RGF0YS0+TEVEVGltZXIsIFRpbWVJbnRlcnZhbCApOyAvLyAyMDA2MDYyMy4xCit9CisKKwordm9pZCBoYWxfc2V0X3BoeV90eXBlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggUGh5VHlwZSApCit7CisJcEh3RGF0YS0+cGh5X3R5cGUgPSBQaHlUeXBlOworfQorCit2b2lkIGhhbF9nZXRfcGh5X3R5cGUoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCAqUGh5VHlwZSApCit7CisJKlBoeVR5cGUgPSBwSHdEYXRhLT5waHlfdHlwZTsKK30KKwordm9pZCBoYWxfcmVzZXRfY291bnRlciggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJcEh3RGF0YS0+ZHRvX3R4X3JldHJ5X2NvdW50ID0gMDsKKwlwSHdEYXRhLT5kdG9fdHhfZnJhZ19jb3VudCA9IDA7CisJbWVtc2V0KCBwSHdEYXRhLT50eF9yZXRyeV9jb3VudCwgMCwgOCk7Cit9CisKK3ZvaWQgaGFsX3NldF9yYWRpb19tb2RlKCBwaHdfZGF0YV90IHBId0RhdGEsICB1bnNpZ25lZCBjaGFyIHJhZGlvX29mZikKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCisJaWYgKHJhZGlvX29mZikJLy9kaXNhYmxlIEJhc2ViYW5kIHJlY2VpdmUgb2ZmCisJeworCQlwSHdEYXRhLT5DdXJyZW50UmFkaW9TdyA9IDE7IC8vIG9mZgorCQlwV2IzNVJlZy0+TTI0X01hY0NvbnRyb2wgJj0gMHhmZmZmZmZiZjsKKwl9CisJZWxzZQorCXsKKwkJcEh3RGF0YS0+Q3VycmVudFJhZGlvU3cgPSAwOyAvLyBvbgorCQlwV2IzNVJlZy0+TTI0X01hY0NvbnRyb2wgfD0gMHgwMDAwMDA0MDsKKwl9CisJV2IzNVJlZ19Xcml0ZSggcEh3RGF0YSwgMHgwODI0LCBwV2IzNVJlZy0+TTI0X01hY0NvbnRyb2wgKTsKK30KKwordTggaGFsX2dldF9hbnRlbm5hX251bWJlciggIHBod19kYXRhX3QgcEh3RGF0YSApCit7CisJUFdCMzVSRUcJcFdiMzVSZWcgPSAmcEh3RGF0YS0+V2IzNVJlZzsKKworCWlmICgocFdiMzVSZWctPkJCMkMgJiBCSVQoMTEpKSA9PSAwKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiAxOworfQorCit2b2lkIGhhbF9zZXRfYW50ZW5uYV9udW1iZXIoICBwaHdfZGF0YV90IHBId0RhdGEsIHU4IG51bWJlciApCit7CisKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCisJaWYgKG51bWJlciA9PSAxKSB7CisJCXBXYjM1UmVnLT5CQjJDIHw9IEJJVCgxMSk7CisJfSBlbHNlIHsKKwkJcFdiMzVSZWctPkJCMkMgJj0gfkJJVCgxMSk7CisJfQorCVdiMzVSZWdfV3JpdGUoIHBId0RhdGEsIDB4MTAyYywgcFdiMzVSZWctPkJCMkMgKTsKKyNpZmRlZiBfUEVfU1RBVEVfRFVNUF8KKwlXQkRFQlVHKCgiQ3VycmVudCBhbnRlbm5hIG51bWJlciA6ICVkXG4iLCBudW1iZXIpKTsKKyNlbmRpZgorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vMCA6IHJhZGlvIG9uOyAxOiByYWRpbyBvZmYKK3U4IGhhbF9nZXRfaHdfcmFkaW9fb2ZmKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwlQV0IzNVJFRwlwV2IzNVJlZyA9ICZwSHdEYXRhLT5XYjM1UmVnOworCisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuIDE7CisKKwkvL3JlYWQgdGhlIGJpdDE2IG9mIHJlZ2lzdGVyIFUxQjAKKwlXYjM1UmVnX1JlYWQoIHBId0RhdGEsIDB4M2IwLCAmcFdiMzVSZWctPlUxQjAgKTsKKwlpZiAoKHBXYjM1UmVnLT5VMUIwICYgMHgwMDAxMDAwMCkpIHsKKwkJcEh3RGF0YS0+Q3VycmVudFJhZGlvSHcgPSAxOworCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQlwSHdEYXRhLT5DdXJyZW50UmFkaW9IdyA9IDA7CisJCXJldHVybiAwOworCX0KK30KKwordW5zaWduZWQgY2hhciBoYWxfZ2V0X2R4eF9yZWcoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgbnVtYmVyLCAgUFVMT05HIHBWYWx1ZSApCit7CisJaWYoIG51bWJlciA8IDB4MTAwMCApCisJCW51bWJlciArPSAweDEwMDA7CisJcmV0dXJuIFdiMzVSZWdfUmVhZFN5bmMoIHBId0RhdGEsIG51bWJlciwgcFZhbHVlICk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgaGFsX3NldF9keHhfcmVnKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IG51bWJlciwgIHUzMiB2YWx1ZSApCit7CisJdW5zaWduZWQgY2hhcglyZXQ7CisKKwlpZiggbnVtYmVyIDwgMHgxMDAwICkKKwkJbnVtYmVyICs9IDB4MTAwMDsKKwlyZXQgPSBXYjM1UmVnX1dyaXRlU3luYyggcEh3RGF0YSwgbnVtYmVyLCB2YWx1ZSApOworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgaGFsX3NjYW5fc3RhdHVzX2luZGljYXRlKHBod19kYXRhX3QgcEh3RGF0YSwgdW5zaWduZWQgY2hhciBJc09uUHJvZ3Jlc3MpCit7CisJaWYoIHBId0RhdGEtPlN1cnByaXNlUmVtb3ZlICkgcmV0dXJuOworCXBId0RhdGEtPkxFRF9TY2FubmluZyA9IElzT25Qcm9ncmVzcyA/IDEgOiAwOworfQorCit2b2lkIGhhbF9zeXN0ZW1fcG93ZXJfY2hhbmdlKHBod19kYXRhX3QgcEh3RGF0YSwgdTMyIFBvd2VyU3RhdGUpCit7CisJaWYoIFBvd2VyU3RhdGUgIT0gMCApCisJeworCQlwSHdEYXRhLT5TdXJwcmlzZVJlbW92ZSA9IDE7CisJCWlmKCBwSHdEYXRhLT5XYlVzYi5Jc1VzYjIwICkKKwkJCWhhbF9zdG9wKCBwSHdEYXRhICk7CisJfQorCWVsc2UKKwl7CisJCWlmKCAhcEh3RGF0YS0+V2JVc2IuSXNVc2IyMCApCisJCQloYWxfc3RvcCggcEh3RGF0YSApOworCX0KK30KKwordm9pZCBoYWxfc3VycHJpc2VfcmVtb3ZlKCAgcGh3X2RhdGFfdCBwSHdEYXRhICkKK3sKKwlQQURBUFRFUiBBZGFwdGVyID0gcEh3RGF0YS0+QWRhcHRlcjsKKwlpZiAoT1NfQVRPTUlDX0lOQyggQWRhcHRlciwgJnBId0RhdGEtPlN1cnByaXNlUmVtb3ZlQ291bnQgKSA9PSAxKSB7CisJCSNpZmRlZiBfUEVfU1RBVEVfRFVNUF8KKwkJV0JERUJVRygoIkNhbGxpbmcgaGFsX3N1cnByaXNlX3JlbW92ZVxuIikpOworCQkjZW5kaWYKKwkJT1NfU1RPUCggQWRhcHRlciApOworCX0KK30KKwordm9pZCBoYWxfcmF0ZV9jaGFuZ2UoICBwaHdfZGF0YV90IHBId0RhdGEgKSAvLyBOb3RpZnkgdGhlIEhBTCByYXRlIGlzIGNoYW5naW5nIDIwMDYwNjEzLjEKK3sKKwlQQURBUFRFUglBZGFwdGVyID0gcEh3RGF0YS0+QWRhcHRlcjsKKwl1OAkJcmF0ZSA9IENVUlJFTlRfVFhfUkFURTsKKworCUJCUHJvY2Vzc29yX1JhdGVDaGFuZ2luZyggcEh3RGF0YSwgcmF0ZSApOworfQorCit2b2lkIGhhbF9zZXRfcmZfcG93ZXIocGh3X2RhdGFfdCBwSHdEYXRhLCB1OCBQb3dlckluZGV4KQoreworCVJGU3ludGhlc2l6ZXJfU2V0UG93ZXJJbmRleCggcEh3RGF0YSwgUG93ZXJJbmRleCApOworfQorCit1bnNpZ25lZCBjaGFyIGhhbF9zZXRfTEVEKHBod19kYXRhX3QgcEh3RGF0YSwgdTMyIE1vZGUpIC8vIDIwMDYxMTA4IGZvciBXUFMgbGVkIGNvbnRyb2wKK3sKKwlwSHdEYXRhLT5MRURfQmxpbmtpbmcgPSAwOworCXBId0RhdGEtPkxFRF9jb250cm9sID0gTW9kZTsKKwlPU19USU1FUl9TRVQoICZwSHdEYXRhLT5MRURUaW1lciwgMTAgKTsgLy8gMjAwNjA2MjMKKwlyZXR1cm4gVFJVRTsKK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JoYWxfZi5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JoYWxfZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMjVmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmhhbF9mLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEZXZpY2UgcmVsYXRlZCBpbmNsdWRlCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2lmZGVmIFdCX0xJTlVYCisJI2luY2x1ZGUgImxpbnV4L3didXNiX2YuaCIKKwkjaW5jbHVkZSAibGludXgvd2IzNXJlZ19mLmgiCisJI2luY2x1ZGUgImxpbnV4L3diMzV0eF9mLmgiCisJI2luY2x1ZGUgImxpbnV4L3diMzVyeF9mLmgiCisjZWxzZQorCSNpbmNsdWRlICJ3YnVzYl9mLmgiCisJI2luY2x1ZGUgIndiMzVyZWdfZi5oIgorCSNpbmNsdWRlICJ3YjM1dHhfZi5oIgorCSNpbmNsdWRlICJ3YjM1cnhfZi5oIgorI2VuZGlmCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3ZvaWQgaGFsX3JlbW92ZV9tYXBwaW5nX2tleSggIHBod19kYXRhX3QgcEh3RGF0YSwgIFBVQ0hBUiBwbWFjX2FkZHIgKTsKK3ZvaWQgaGFsX3JlbW92ZV9kZWZhdWx0X2tleSggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUzMiBpbmRleCApOwordW5zaWduZWQgY2hhciBoYWxfc2V0X21hcHBpbmdfa2V5KCAgcGh3X2RhdGFfdCBBZGFwdGVyLCAgUFVDSEFSIHBtYWNfYWRkciwgIHU4IG51bGxfa2V5LCAgdTggd2VwX29uLCAgUFVDSEFSIHB0eF90c2MsICBQVUNIQVIgcHJ4X3RzYywgIHU4IGtleV90eXBlLCAgdTgga2V5X2xlbiwgIFBVQ0hBUiBwa2V5X2RhdGEgKTsKK3Vuc2lnbmVkIGNoYXIgaGFsX3NldF9kZWZhdWx0X2tleSggIHBod19kYXRhX3QgQWRhcHRlciwgIHU4IGluZGV4LCAgdTggbnVsbF9rZXksICB1OCB3ZXBfb24sICBQVUNIQVIgcHR4X3RzYywgIFBVQ0hBUiBwcnhfdHNjLCAgdTgga2V5X3R5cGUsICB1OCBrZXlfbGVuLCAgUFVDSEFSIHBrZXlfZGF0YSApOwordm9pZCBoYWxfY2xlYXJfYWxsX2RlZmF1bHRfa2V5KCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9jbGVhcl9hbGxfZ3JvdXBfa2V5KCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9jbGVhcl9hbGxfbWFwcGluZ19rZXkoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgaGFsX2NsZWFyX2FsbF9rZXkoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgaGFsX2dldF9ldGhlcm5ldF9hZGRyZXNzKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgUFVDSEFSIGN1cnJlbnRfYWRkcmVzcyApOwordm9pZCBoYWxfc2V0X2V0aGVybmV0X2FkZHJlc3MoICBwaHdfZGF0YV90IHBId0RhdGEsICBQVUNIQVIgY3VycmVudF9hZGRyZXNzICk7Cit2b2lkIGhhbF9nZXRfcGVybWFuZW50X2FkZHJlc3MoICBwaHdfZGF0YV90IHBId0RhdGEsICBQVUNIQVIgcGV0aGVybmV0X2FkZHJlc3MgKTsKK3Vuc2lnbmVkIGNoYXIgaGFsX2luaXRfaGFyZHdhcmUoICBwaHdfZGF0YV90IHBId0RhdGEsICBQQURBUFRFUiBBZGFwdGVyICk7Cit2b2lkIGhhbF9zZXRfcG93ZXJfc2F2ZV9tb2RlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdW5zaWduZWQgY2hhciBwb3dlcl9zYXZlLCAgdW5zaWduZWQgY2hhciB3YWtldXAsICB1bnNpZ25lZCBjaGFyIGR0aW0gKTsKK3ZvaWQgaGFsX2dldF9wb3dlcl9zYXZlX21vZGUoICBwaHdfZGF0YV90IHBId0RhdGEsICAgUEJPT0xFQU4gcGluX3B3cl9zYXZlICk7Cit2b2lkIGhhbF9zZXRfc2xvdF90aW1lKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggdHlwZSApOworI2RlZmluZSBoYWxfc2V0X2F0aW1fd2luZG93KCBfQSwgX0FUTSApCit2b2lkIGhhbF9zZXRfcmF0ZXMoICBwaHdfZGF0YV90IHBId0RhdGEsICBQVUNIQVIgcGJzc19yYXRlcywgIHU4IGxlbmd0aCwgIHVuc2lnbmVkIGNoYXIgYmFzaWNfcmF0ZV9zZXQgKTsKKyNkZWZpbmUgaGFsX3NldF9iYXNpY19yYXRlcyggX0EsIF9SLCBfTCApIGhhbF9zZXRfcmF0ZXMoIF9BLCBfUiwgX0wsIFRSVUUgKQorI2RlZmluZSBoYWxfc2V0X29wX3JhdGVzKCBfQSwgX1IsIF9MICkgaGFsX3NldF9yYXRlcyggX0EsIF9SLCBfTCwgRkFMU0UgKQordm9pZCBoYWxfc3RhcnRfYnNzKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggbWFjX29wX21vZGUgKTsKK3ZvaWQgaGFsX2pvaW5fcmVxdWVzdCggIHBod19kYXRhX3QgcEh3RGF0YSwgIHU4IGJzc190eXBlICk7IC8vIDA6QlNTIFNUQSAxOklCU1MgU1RBLy8KK3ZvaWQgaGFsX3N0b3Bfc3luY19ic3MoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgaGFsX3Jlc3VtZV9zeW5jX2JzcyggIHBod19kYXRhX3QgcEh3RGF0YSk7Cit2b2lkIGhhbF9zZXRfYWlkKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTE2IGFpZCApOwordm9pZCBoYWxfc2V0X2Jzc2lkKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgUFVDSEFSIHBic3NpZCApOwordm9pZCBoYWxfZ2V0X2Jzc2lkKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgUFVDSEFSIHBic3NpZCApOwordm9pZCBoYWxfc2V0X2JlYWNvbl9wZXJpb2QoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgYmVhY29uX3BlcmlvZCApOwordm9pZCBoYWxfc2V0X2xpc3Rlbl9pbnRlcnZhbCggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUxNiBsaXN0ZW5faW50ZXJ2YWwgKTsKK3ZvaWQgaGFsX3NldF9jYXBfaW5mbyggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUxNiBjYXBhYmlsaXR5X2luZm8gKTsKK3ZvaWQgaGFsX3NldF9zc2lkKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgUFVDSEFSIHBzc2lkLCAgdTggc3NpZF9sZW4gKTsKK3ZvaWQgaGFsX3NldF9jdXJyZW50X2NoYW5uZWwoICBwaHdfZGF0YV90IHBId0RhdGEsICBDaGFuSW5mbyBjaGFubmVsICk7Cit2b2lkIGhhbF9zZXRfY3VycmVudF9jaGFubmVsX2V4KCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgQ2hhbkluZm8gY2hhbm5lbCApOwordm9pZCBoYWxfZ2V0X2N1cnJlbnRfY2hhbm5lbCggIHBod19kYXRhX3QgcEh3RGF0YSwgIENoYW5JbmZvICpjaGFubmVsICk7Cit2b2lkIGhhbF9zZXRfYWNjZXB0X2Jyb2FkY2FzdCggIHBod19kYXRhX3QgcEh3RGF0YSwgIHU4IGVuYWJsZSApOwordm9pZCBoYWxfc2V0X2FjY2VwdF9tdWx0aWNhc3QoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCBlbmFibGUgKTsKK3ZvaWQgaGFsX3NldF9hY2NlcHRfYmVhY29uKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggZW5hYmxlICk7Cit2b2lkIGhhbF9zZXRfbXVsdGljYXN0X2FkZHJlc3MoICBwaHdfZGF0YV90IHBId0RhdGEsICBQVUNIQVIgYWRkcmVzcywgIHU4IG51bWJlciApOwordTggaGFsX2dldF9hY2NlcHRfYmVhY29uKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9zdG9wKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9oYWx0KCAgcGh3X2RhdGFfdCBwSHdEYXRhLCB2b2lkICpwcGFfZGF0YSApOwordm9pZCBoYWxfc3RhcnRfdHgwKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9zZXRfcGh5X3R5cGUoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCBQaHlUeXBlICk7Cit2b2lkIGhhbF9nZXRfcGh5X3R5cGUoICBwaHdfZGF0YV90IHBId0RhdGEsICB1OCAqUGh5VHlwZSApOwordW5zaWduZWQgY2hhciBoYWxfcmVzZXRfaGFyZHdhcmUoICBwaHdfZGF0YV90IHBId0RhdGEsICB2b2lkKiBwcGEgKTsKK3ZvaWQgaGFsX3NldF9jd21pbiggIHBod19kYXRhX3QgcEh3RGF0YSwgIHU4CWN3aW5fbWluICk7CisjZGVmaW5lIGhhbF9nZXRfY3dtaW4oIF9BICkgKCAoX0EpLT5jd21pbiApCit2b2lkIGhhbF9zZXRfY3dtYXgoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgY3dpbl9tYXggKTsKKyNkZWZpbmUgaGFsX2dldF9jd21heCggX0EgKSAoIChfQSktPmN3bWF4ICkKK3ZvaWQgaGFsX3NldF9yc25fd3BhKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTMyICogUlNOX0lFX0JpdG1hcCAsIHUzMiAqIFJTTl9PVUlfdHlwZSAsIHVuc2lnbmVkIGNoYXIgYkRlc2lyZWRBdXRoTW9kZSk7CisvL3MzMiBoYWxfZ2V0X3Jzc2koICBwaHdfZGF0YV90IHBId0RhdGEsICB1MzIgSGFsUnNzaSApOworczMyIGhhbF9nZXRfcnNzaSggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUzMiAqSGFsUnNzaUFycnksICB1OCBDb3VudCApOworczMyIGhhbF9nZXRfcnNzaV9ic3MoICBwaHdfZGF0YV90IHBId0RhdGEsICB1MTYgaWR4LCAgdTggQ291bnQgKTsKK3ZvaWQgaGFsX3NldF9jb25uZWN0X2luZm8oICBwaHdfZGF0YV90IHBId0RhdGEsICB1bnNpZ25lZCBjaGFyIGJvQ29ubmVjdCApOwordTggaGFsX2dldF9lc3Rfc3EzKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggQ291bnQgKTsKK3ZvaWQgaGFsX2xlZF9jb250cm9sXzFhKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9sZWRfY29udHJvbCggIHZvaWQqIFMxLCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdm9pZCogUzMsICB2b2lkKiBTNCApOwordm9pZCBoYWxfc2V0X3JmX3Bvd2VyKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTggUG93ZXJJbmRleCApOyAvLyAyMDA2MDYyMSBNb2RpZnkKK3ZvaWQgaGFsX3Jlc2V0X2NvdW50ZXIoICBwaHdfZGF0YV90IHBId0RhdGEgKTsKK3ZvaWQgaGFsX3NldF9yYWRpb19tb2RlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdW5zaWduZWQgY2hhciBib1ZhbHVlKTsKK3ZvaWQgaGFsX2Rlc2NyaXB0b3JfaW5kaWNhdGUoICBwaHdfZGF0YV90IHBId0RhdGEsICBQREVTQ1JJUFRPUiBwRGVzICk7Cit1OCBoYWxfZ2V0X2FudGVubmFfbnVtYmVyKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7Cit2b2lkIGhhbF9zZXRfYW50ZW5uYV9udW1iZXIoICBwaHdfZGF0YV90IHBId0RhdGEsIHU4IG51bWJlciApOwordTMyIGhhbF9nZXRfYnNzX3BrX2NudCggIHBod19kYXRhX3QgcEh3RGF0YSApOworI2RlZmluZSBoYWxfZ2V0X3JlZ2lvbl9mcm9tX0VFUFJPTSggX0EgKSAoIChfQSktPldiMzVSZWcuRUVQUk9NUmVnaW9uICkKK3ZvaWQgaGFsX3NldF9hY2NlcHRfcHJvbWlzY3VvdXMJCSggIHBod19kYXRhX3QgcEh3RGF0YSwgIHU4IGVuYWJsZSk7CisjZGVmaW5lIGhhbF9nZXRfdHhfYnVmZmVyKCBfQSwgX0IgKSBXYjM1VHhfZ2V0X3R4X2J1ZmZlciggX0EsIF9CICkKK3U4IGhhbF9nZXRfaHdfcmFkaW9fb2ZmCQkJKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisjZGVmaW5lIGhhbF9zb2Z0d2FyZV9zZXQoIF9BICkJCShfQS0+U29mdHdhcmVTZXQpCisjZGVmaW5lIGhhbF9kcml2ZXJfaW5pdF9PSyggX0EgKQkoX0EtPklzSW5pdE9LKQorI2RlZmluZSBoYWxfcnNzaV9ib3VuZGFyeV9oaWdoKCBfQSApIChfQS0+UlNTSV9oaWdoKQorI2RlZmluZSBoYWxfcnNzaV9ib3VuZGFyeV9sb3coIF9BICkgKF9BLT5SU1NJX2xvdykKKyNkZWZpbmUgaGFsX3NjYW5faW50ZXJ2YWwoIF9BICkJCShfQS0+U2Nhbl9JbnRlcnZhbCkKK3ZvaWQgaGFsX3NjYW5fc3RhdHVzX2luZGljYXRlKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCB1OCBzdGF0dXMpOwkvLyAwOiBjb21wbGV0ZSwgMTogaW4gcHJvZ3Jlc3MKK3ZvaWQgaGFsX3N5c3RlbV9wb3dlcl9jaGFuZ2UoICBwaHdfZGF0YV90IHBId0RhdGEsIHUzMiBQb3dlclN0YXRlICk7IC8vIDIwMDUxMjMwIC09RDAgMT1EMSAuLgordm9pZCBoYWxfc3VycHJpc2VfcmVtb3ZlKCAgcGh3X2RhdGFfdCBwSHdEYXRhICk7CisKKyNkZWZpbmUgUEhZX0RFQlVHKCBtc2csIGFyZ3MuLi4gKQorCisKKwordm9pZCBoYWxfcmF0ZV9jaGFuZ2UoICBwaHdfZGF0YV90IHBId0RhdGEgKTsgLy8gTm90aWZ5IHRoZSBIQUwgcmF0ZSBpcyBjaGFuZ2luZyAyMDA2MDYxMy4xCit1bnNpZ25lZCBjaGFyIGhhbF9nZXRfZHh4X3JlZyggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUxNiBudW1iZXIsICBQVUxPTkcgcFZhbHVlICk7Cit1bnNpZ25lZCBjaGFyIGhhbF9zZXRfZHh4X3JlZyggIHBod19kYXRhX3QgcEh3RGF0YSwgIHUxNiBudW1iZXIsICB1MzIgdmFsdWUgKTsKKyNkZWZpbmUgaGFsX2dldF90aW1lX2NvdW50KCBfUCApCShfUC0+dGltZV9jb3VudC8xMCkJLy8gcmV0dXJuIDEwMG1zIGNvdW50CisjZGVmaW5lIGhhbF9kZXRlY3RfZXJyb3IoIF9QICkJCShfUC0+V2JVc2IuRGV0ZWN0Q291bnQpCit1bnNpZ25lZCBjaGFyIGhhbF9zZXRfTEVEKCAgcGh3X2RhdGFfdCBwSHdEYXRhLCAgdTMyIE1vZGUgKTsgLy8gMjAwNjExMDggZm9yIFdQUyBsZWQgY29udHJvbAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoZSBmb2xsb3cgZnVuY3Rpb24gaXMgdW51c2VkIGZvciBJUzg5QzM1CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgaGFsX2Rpc2FibGVfaW50ZXJydXB0KF9BKQorI2RlZmluZSBoYWxfZW5hYmxlX2ludGVycnVwdChfQSkKKyNkZWZpbmUgaGFsX2dldF9pbnRlcnJ1cHRfdHlwZSggX0EpCisjZGVmaW5lIGhhbF9nZXRfY2xlYXJfaW50ZXJydXB0KF9BKQorI2RlZmluZSBoYWxfaWJzc19kaXNjb25uZWN0KF9BKSBoYWxfc3RvcF9zeW5jX2JzcyhfQSkKKyNkZWZpbmUgaGFsX2pvaW5fcmVxdWVzdF9zdG9wKF9BKQordW5zaWduZWQgY2hhcgloYWxfaWRsZSggIHBod19kYXRhX3QgcEh3RGF0YSApOworI2RlZmluZSBwYV9zdGFsbF9leGVjdXRpb24oIF9BICkJLy9PU19TTEVFUCggMSApCisjZGVmaW5lIGh3X2dldF9jeHhfcmVnKCBfQSwgX0IsIF9DICkKKyNkZWZpbmUgaHdfc2V0X2N4eF9yZWcoIF9BLCBfQiwgX0MgKQorI2RlZmluZSBod19nZXRfZHh4X3JlZyggX0EsIF9CLCBfQyApCWhhbF9nZXRfZHh4X3JlZyggX0EsIF9CLCAoUFVMT05HKV9DICkKKyNkZWZpbmUgaHdfc2V0X2R4eF9yZWcoIF9BLCBfQiwgX0MgKQloYWxfc2V0X2R4eF9yZWcoIF9BLCBfQiwgKHUzMilfQyApCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JoYWxfcy5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JoYWxfcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViODYyZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmhhbF9zLmgKQEAgLTAsMCArMSw2MTUgQEAKKy8vWzIwMDQwNzIyIFdLXQorI2RlZmluZSBIQUxfTEVEX1NFVF9NQVNLCQkweDAwMWMJLy8yMDA2MDkwMSBFeHRlbmQKKyNkZWZpbmUgSEFMX0xFRF9TRVRfU0hJRlQJCTIKKworLy9zdXBwb3J0ZWQgUkYgdHlwZQorI2RlZmluZSBSRl9NQVhJTV8yODI1CQkwCisjZGVmaW5lIFJGX01BWElNXzI4MjcJCTEKKyNkZWZpbmUgUkZfTUFYSU1fMjgyOAkJMgorI2RlZmluZSBSRl9NQVhJTV8yODI5CQkzCisjZGVmaW5lIFJGX01BWElNX1YxCQkJMTUKKyNkZWZpbmUgUkZfQUlST0hBXzIyMzAJCTE2CisjZGVmaW5lIFJGX0FJUk9IQV83MjMwCQkxNworI2RlZmluZSBSRl9BSVJPSEFfMjIzMFMJCTE4CS8vIDIwMDYwNDIwIEFkZCB0aGlzCisvLyAjZGVmaW5lIFJGX1JGTURfMjk1OQkJMzIJLy8gMjAwNjA2MjYgUmVtb3ZlIGFsbCBhYm91dCBSRk1ECisjZGVmaW5lIFJGX1dCXzI0MgkJCTMzCisjZGVmaW5lIFJGX1dCXzI0Ml8xCQkJMzQJLy8gMjAwNjA2MTkuNSBBZGQKKyNkZWZpbmUgUkZfREVDSURFX0JZX0lORgkyNTUKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGUgZm9sbG93IGRlZmluZSBjb25uZWN0IHRvIHVwcGVyIGxheWVyCisvLwlVc2VyIG11c3QgbW9kaWZ5IGZvciBjb25uZWN0aW9uIGJldHdlZW4gSEFMIGFuZCB1cHBlciBsYXllcgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ29tbW9uIGRlZmluZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgSEFMX1VTQl9NT0RFX0JVUlNUKCBfSCApCShfSC0+U29mdHdhcmVTZXQgJiAweDIwICkgLy8gQml0IDUgMjAwNjA5MDEgTW9kaWZ5CisKKy8vIFNjYW4gaW50ZXJ2YWwKKyNkZWZpbmUgU0NBTl9NQVhfQ0hOTF9USU1FCQkJCSg1MCkKKworLy8gRm9yIFR4TDIgRnJhbWUgdHlwciByZWNvZ25pc2UKKyNkZWZpbmUgRlJBTUVfVFlQRV84MDJfM19EQVRBCQkJMAorI2RlZmluZSBGUkFNRV9UWVBFXzgwMl8xMV9NQU5BR0VNRU5UCQkxCisjZGVmaW5lIEZSQU1FX1RZUEVfODAyXzExX01BTkFHRU1FTlRfQ0hBTExFTkdFICAyCisjZGVmaW5lIEZSQU1FX1RZUEVfODAyXzExX0NPTlRST0wJCTMKKyNkZWZpbmUgRlJBTUVfVFlQRV84MDJfMTFfREFUQQkJCTQKKyNkZWZpbmUgRlJBTUVfVFlQRV9QUk9NSVNDVU9VUwkJCTUKKworLy8gVGhlIGZvbGxvdyBkZWZpbml0aW9uIGlzIHVzZWQgZm9yIGNvbnZlcnQgdGhlIGZyYW1lLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRE9UXzExX1NFUVVFTkNFX09GRlNFVAkJMjIgLy9TZXF1ZW5jZSBjb250cm9sIG9mZnNldAorI2RlZmluZSBET1RfM19UWVBFX09GRlNFVAkJCTEyCisjZGVmaW5lIERPVF8xMV9NQUNfSEVBREVSX1NJWkUJCTI0CisjZGVmaW5lIERPVF8xMV9TTkFQX1NJWkUJCQk2CisjZGVmaW5lIERPVF8xMV9UWVBFX09GRlNFVAkJCTMwIC8vVGhlIHN0YXJ0IG9mZnNldCBvZiA4MDIuMTEgRnJhbWUuIFR5cGUgZW5jYXBzdWxhdHVpbi4KKyNkZWZpbmUgREVGQVVMVF9TSUZTVElNRQkJCTEwCisjZGVmaW5lIERFRkFVTFRfRlJBR01FTlRfVEhSRVNIT0xECQkyMzQ2IC8vIE5vIGZyYWdtZW50CisjZGVmaW5lIERFRkFVTFRfTVNEVV9MSUZFX1RJTUUJCQkweGZmZmYKKworI2RlZmluZSBMT05HX1BSRUFNQkxFX1BMVVNfUExDUEhFQURFUl9USU1FCQkJCQkJKDE0NCs0OCkKKyNkZWZpbmUgU0hPUlRfUFJFQU1CTEVfUExVU19QTENQSEVBREVSX1RJTUUgCQkJCQkoNzIrMjQpCisjZGVmaW5lIFBSRUFNQkxFX1BMVVNfU0lHTkFMX1BMVVNfU0lHTkFMRVhURU5TSU9OCQkJCSgxNis0KzYpCisjZGVmaW5lIFRzeW0gNAorCisvLyAgRnJhbWUgVHlwZSBvZiBCaXRzICgyLCAzKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBNQUNfVFlQRV9NQU5BR0VNRU5UCQkJMHgwMAorI2RlZmluZSBNQUNfVFlQRV9DT05UUk9MCQkJMHgwNAorI2RlZmluZSBNQUNfVFlQRV9EQVRBCQkJCTB4MDgKKyNkZWZpbmUgTUFTS19GUkFHTUVOVF9OVU1CRVIJCTB4MDAwRgorI2RlZmluZSBTRVFVRU5DRV9OVU1CRVJfU0hJRlQJCTQKKworI2RlZmluZSAgSEFMX1dPTF9UWVBFX1dBS0VVUF9GUkFNRQkJMHgwMQorI2RlZmluZSAgSEFMX1dPTF9UWVBFX01BR0lDX1BBQ0tFVAkJMHgwMgorCisvLyAyMDA0MDEwNiBBRERFRAorI2RlZmluZSBIQUxfS0VZVFlQRV9XRVA0MCAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBIQUxfS0VZVFlQRV9XRVAxMDQgICAgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBIQUxfS0VZVFlQRV9US0lQICAgICAgICAgICAgICAgICAgICAgICAgMiAvLyAxMjggYml0IGtleQorI2RlZmluZSBIQUxfS0VZVFlQRV9BRVNfQ0NNUCAgICAgICAgICAgICAgICAgICAgMyAvLyAxMjggYml0IGtleQorCisvLyBGb3IgVk0gc3RhdGUKK2VudW0geworCVZNX1NUT1AgPSAwLAorCVZNX1JVTk5JTkcsCisJVk1fQ09NUExFVEVECit9OworCisvLyBCZSB1c2VkIGZvciA4MDIuMTEgbWFjIGhlYWRlcgordHlwZWRlZiBzdHJ1Y3QgX01BQ19GUkFNRV9DT05UUk9MIHsKKwl1OAltYWNfZnJhbWVfaW5mbzsgLy8gdGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBwcm90b3ZsIHZlcnNpb24sIHR5cGUgYW5kIHN1YnR5cGUKKwl1OAl0b19kczoxOworCXU4CWZyb21fZHM6MTsKKwl1OAltb3JlX2ZyYWc6MTsKKwl1OAlyZXRyeToxOworCXU4CXB3cl9tZ3Q6MTsKKwl1OAltb3JlX2RhdGE6MTsKKwl1OAlXRVA6MTsKKwl1OAlvcmRlcjoxOworfSBNQUNfRlJBTUVfQ09OVFJPTCwgKlBNQUNfRlJBTUVfQ09OVFJPTDsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTm9ybWFsIEtleSB0YWJsZSBmb3JtYXQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoZSBvcmRlciBvZiBLRVkgaW5kZXggaXMgTUFQUElOR19LRVlfU1RBUlRfSU5ERVggPiBHUk9VUF9LRVlfU1RBUlRfSU5ERVgKKyNkZWZpbmUgTUFYX0tFWV9UQUJMRQkJCQkyNAkvLyAyNCBlbnRyeSBmb3Igc3RvcmluZyBrZXkgZGF0YQorI2RlZmluZSBHUk9VUF9LRVlfU1RBUlRfSU5ERVgJCTQKKyNkZWZpbmUgTUFQUElOR19LRVlfU1RBUlRfSU5ERVgJCTgKK3R5cGVkZWYgc3RydWN0IF9LRVlfVEFCTEUKK3sKKwl1MzIJRFcwX1ZhbGlkOjE7CisJdTMyCURXMF9OdWxsS2V5OjE7CisJdTMyCURXMF9TZWN1cml0eV9Nb2RlOjI7Ly8wOldFUCA0MCBiaXQgMTpXRVAgMTA0IGJpdCAyOlRLSVAgMTI4IGJpdCAzOkNDTVAgMTI4IGJpdAorCXUzMglEVzBfV0VQT046MTsKKwl1MzIJRFcwX1JFU0VSVkVEOjExOworCXUzMglEVzBfQWRkcmVzczE6MTY7CisKKwl1MzIJRFcxX0FkZHJlc3MyOworCisJdTMyCURXMl9SeFNlcXVlbmNlQ291bnQxOworCisJdTMyCURXM19SeFNlcXVlbmNlQ291bnQyOjE2OworCXUzMglEVzNfUkVTRVJWRUQ6MTY7CisKKwl1MzIJRFc0X1R4U2VxdWVuY2VDb3VudDE7CisKKwl1MzIJRFc1X1R4U2VxdWVuY2VDb3VudDI6MTY7CisJdTMyCURXNV9SRVNFUlZFRDoxNjsKKworfSBLRVlfVEFCTEUsICpQS0VZX1RBQkxFOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAJCQkgRGVzY3JpcHRvcgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBNQVhfREVTQ1JJUFRPUl9CVUZGRVJfSU5ERVgJOAkvLyBIYXZlIHRvIG11bHRpcGxlIG9mIDIKKy8vI2RlZmluZSBGTEFHX0VSUk9SX1RYX01BU0sJCQljcHVfdG9fbGUzMigweDAwMDAwMGJmKSAvLzIwMDYxMDA5IG1hcmtlZCBieSBhbnNvbidzIGVuZGlhbgorI2RlZmluZSBGTEFHX0VSUk9SX1RYX01BU0sJCQkweDAwMDAwMGJmICAvLzIwMDYxMDA5IGFuc29uJ3MgZW5kaWFuCisvLyNkZWZpbmUgRkxBR19FUlJPUl9SWF9NQVNLCQkJMHgwMDAwMGMzZgorLy8jZGVmaW5lIEZMQUdfRVJST1JfUlhfTUFTSwkJCWNwdV90b19sZTMyKDB4MDAwMDA4M2YpCS8vMjAwNjEwMDkgbWFya2VkIGJ5IGFuc29uJ3MgZW5kaWFuCisJCQkJCQkJCQkvL0Rvbid0IGNhcmUgcmVwbGF5IGVycm9yLAorCQkJCQkJCQkJCQkJLy9pdCBpcyBoYW5kbGVkIGJ5IFMvVworI2RlZmluZSBGTEFHX0VSUk9SX1JYX01BU0sJCQkweDAwMDAwODNmCS8vMjAwNjA5MjYgYW5zb24ncyBlbmRpYW4KKworI2RlZmluZSBGTEFHX0JBTkRfUlhfTUFTSwkJCTB4MTAwMDAwMDAJLy9CaXQgMjgKKwordHlwZWRlZiBzdHJ1Y3QgX1IwMF9ERVNDUklQVE9SCit7CisJdW5pb24KKwl7CisJCXUzMgl2YWx1ZTsKKwkJI2lmZGVmIF9CSUdfRU5ESUFOXyAgLy8yMDA2MDkyNiBhbnNvbidzIGVuZGlhbgorCQlzdHJ1Y3QKKwkJeworCQkJdTMyCVIwMF9wYWNrZXRfb3JfYnVmZmVyX3N0YXR1czoxOworCQkJdTMyCVIwMF9wYWNrZXRfaW5fZmlmbzoxOworCQkJdTMyCVIwMF9SRVNFUlZFRDoyOworCQkJdTMyCVIwMF9yZWNlaXZlX2J5dGVfY291bnQ6MTI7CisJCQl1MzIJUjAwX3JlY2VpdmVfdGltZV9pbmRleDoxNjsKKwkJfTsKKwkJI2Vsc2UKKwkJc3RydWN0CisJCXsKKwkJCXUzMglSMDBfcmVjZWl2ZV90aW1lX2luZGV4OjE2OworCQkJdTMyCVIwMF9yZWNlaXZlX2J5dGVfY291bnQ6MTI7CisJCQl1MzIJUjAwX1JFU0VSVkVEOjI7CisJCQl1MzIJUjAwX3BhY2tldF9pbl9maWZvOjE7CisJCQl1MzIJUjAwX3BhY2tldF9vcl9idWZmZXJfc3RhdHVzOjE7CisJCX07CisJCSNlbmRpZgorCX07Cit9IFIwMF9ERVNDUklQVE9SLCAqUFIwMF9ERVNDUklQVE9SOworCit0eXBlZGVmIHN0cnVjdCBfVDAwX0RFU0NSSVBUT1IKK3sKKwl1bmlvbgorCXsKKwkJdTMyCXZhbHVlOworCQkjaWZkZWYgX0JJR19FTkRJQU5fICAvLzIwMDYxMDA5IGFuc29uJ3MgZW5kaWFuCisJCXN0cnVjdAorCQl7CisJCQl1MzIJVDAwX2ZpcnN0X21wZHU6MTsgLy8gZm9yIGhhcmR3YXJlIHVzZQorCQkJdTMyCVQwMF9sYXN0X21wZHU6MTsgLy8gZm9yIGhhcmR3YXJlIHVzZQorCQkJdTMyCVQwMF9Jc0xhc3RNcGR1OjE7Ly8gMDogbm90ICAgMTpZZXMgZm9yIHNvZnR3YXJlIHVzZWQKKwkJCXUzMglUMDBfSWdub3JlUmVzdWx0OjE7Ly8gVGhlIHNhbWUgbWVjaGFuaXNtIHdpdGggVDAwIHNldHRpbmcuIDA1MDExMSBNb2RpZnkgZm9yIFRTCisJCQl1MzIJVDAwX1JFU0VSVkVEX0lEOjI7Ly8zIGJpdCBJRCByZXNlcnZlZAorCQkJdTMyCVQwMF90eF9wYWNrZXRfaWQ6NDsvLzkzMDUxOS40LmUgOTMwODEwLjMuYworCQkJdTMyCVQwMF9SRVNFUlZFRDo0OworCQkJdTMyCVQwMF9oZWFkZXJfbGVuZ3RoOjY7CisJCQl1MzIJVDAwX2ZyYW1lX2xlbmd0aDoxMjsKKwkJfTsKKwkJI2Vsc2UKKwkJc3RydWN0CisJCXsKKwkJCXUzMglUMDBfZnJhbWVfbGVuZ3RoOjEyOworCQkJdTMyCVQwMF9oZWFkZXJfbGVuZ3RoOjY7CisJCQl1MzIJVDAwX1JFU0VSVkVEOjQ7CisJCQl1MzIJVDAwX3R4X3BhY2tldF9pZDo0Oy8vOTMwNTE5LjQuZSA5MzA4MTAuMy5jCisJCQl1MzIJVDAwX1JFU0VSVkVEX0lEOjI7Ly8zIGJpdCBJRCByZXNlcnZlZAorCQkJdTMyCVQwMF9JZ25vcmVSZXN1bHQ6MTsvLyBUaGUgc2FtZSBtZWNoYW5pc20gd2l0aCBUMDAgc2V0dGluZy4gMDUwMTExIE1vZGlmeSBmb3IgVFMKKwkJCXUzMglUMDBfSXNMYXN0TXBkdToxOy8vIDA6IG5vdCAgIDE6WWVzIGZvciBzb2Z0d2FyZSB1c2VkCisJCQl1MzIJVDAwX2xhc3RfbXBkdToxOyAvLyBmb3IgaGFyZHdhcmUgdXNlCisJCQl1MzIJVDAwX2ZpcnN0X21wZHU6MTsgLy8gZm9yIGhhcmR3YXJlIHVzZQorCQl9OworCQkjZW5kaWYKKwl9OworfSBUMDBfREVTQ1JJUFRPUiwgKlBUMDBfREVTQ1JJUFRPUjsKKwordHlwZWRlZiBzdHJ1Y3QgX1IwMV9ERVNDUklQVE9SCit7CisJdW5pb24KKwl7CisJCXUzMgl2YWx1ZTsKKwkJI2lmZGVmIF9CSUdfRU5ESUFOXyAvLzIwMDYwOTI2IGFkZCBieSBhbnNvbidzIGVuZGlhbgorCQlzdHJ1Y3QKKwkJeworCQkJdTMyCVIwMV9SRVNFUlZFRDozOworCQkJdTMyCVIwMV9tb2RfdHlwZToxOworCQkJdTMyCVIwMV9wcmVfdHlwZToxOworCQkJdTMyCVIwMV9kYXRhX3JhdGU6MzsKKwkJCXUzMglSMDFfQUdDX3N0YXRlOjg7CisJCQl1MzIJUjAxX0xOQV9zdGF0ZToyOworCQkJdTMyCVIwMV9kZWNyeXB0aW9uX21ldGhvZDoyOworCQkJdTMyCVIwMV9taWNfZXJyb3I6MTsKKwkJCXUzMglSMDFfcmVwbGF5OjE7CisJCQl1MzIJUjAxX2Jyb2FkY2FzdF9mcmFtZToxOworCQkJdTMyCVIwMV9tdWx0aWNhc3RfZnJhbWU6MTsKKwkJCXUzMglSMDFfZGlyZWN0ZWRfZnJhbWU6MTsKKwkJCXUzMglSMDFfcmVjZWl2ZV9mcmFtZV9hbnRlbm5hX3NlbGVjdGlvbjoxOworCQkJdTMyCVIwMV9mcmFtZV9yZWNlaXZlX2R1cmluZ19hdGltX3dpbmRvdzoxOworCQkJdTMyCVIwMV9wcm90b2NvbF92ZXJzaW9uX2Vycm9yOjE7CisJCQl1MzIJUjAxX2F1dGhlbnRpY2F0aW9uX2ZyYW1lX2ljdl9lcnJvcjoxOworCQkJdTMyCVIwMV9udWxsX2tleV90b19hdXRoZW50aWNhdGlvbl9mcmFtZToxOworCQkJdTMyCVIwMV9pY3ZfZXJyb3I6MTsKKwkJCXUzMglSMDFfY3JjX2Vycm9yOjE7CisJCX07CisJCSNlbHNlCisJCXN0cnVjdAorCQl7CisJCQl1MzIJUjAxX2NyY19lcnJvcjoxOworCQkJdTMyCVIwMV9pY3ZfZXJyb3I6MTsKKwkJCXUzMglSMDFfbnVsbF9rZXlfdG9fYXV0aGVudGljYXRpb25fZnJhbWU6MTsKKwkJCXUzMglSMDFfYXV0aGVudGljYXRpb25fZnJhbWVfaWN2X2Vycm9yOjE7CisJCQl1MzIJUjAxX3Byb3RvY29sX3ZlcnNpb25fZXJyb3I6MTsKKwkJCXUzMglSMDFfZnJhbWVfcmVjZWl2ZV9kdXJpbmdfYXRpbV93aW5kb3c6MTsKKwkJCXUzMglSMDFfcmVjZWl2ZV9mcmFtZV9hbnRlbm5hX3NlbGVjdGlvbjoxOworCQkJdTMyCVIwMV9kaXJlY3RlZF9mcmFtZToxOworCQkJdTMyCVIwMV9tdWx0aWNhc3RfZnJhbWU6MTsKKwkJCXUzMglSMDFfYnJvYWRjYXN0X2ZyYW1lOjE7CisJCQl1MzIJUjAxX3JlcGxheToxOworCQkJdTMyCVIwMV9taWNfZXJyb3I6MTsKKwkJCXUzMglSMDFfZGVjcnlwdGlvbl9tZXRob2Q6MjsKKwkJCXUzMglSMDFfTE5BX3N0YXRlOjI7CisJCQl1MzIJUjAxX0FHQ19zdGF0ZTo4OworCQkJdTMyCVIwMV9kYXRhX3JhdGU6MzsKKwkJCXUzMglSMDFfcHJlX3R5cGU6MTsKKwkJCXUzMglSMDFfbW9kX3R5cGU6MTsKKwkJCXUzMglSMDFfUkVTRVJWRUQ6MzsKKwkJfTsKKwkJI2VuZGlmCisJfTsKK30gUjAxX0RFU0NSSVBUT1IsICpQUjAxX0RFU0NSSVBUT1I7CisKK3R5cGVkZWYgc3RydWN0IF9UMDFfREVTQ1JJUFRPUgoreworCXVuaW9uCisJeworCQl1MzIJdmFsdWU7CisJCSNpZmRlZiBfQklHX0VORElBTl8gLy8yMDA2MTAwOSBhbnNvbidzIGVuZGlhbgorCQlzdHJ1Y3QKKwkJeworCQkJdTMyCVQwMV9ydHNfY3RzX2R1cmF0aW9uOjE2OworCQkJdTMyCVQwMV9mYWxsX2JhY2tfcmF0ZTozOworCQkJdTMyCVQwMV9hZGRfcnRzOjE7CisJCQl1MzIJVDAxX2FkZF9jdHM6MTsKKwkJCXUzMglUMDFfbW9kdWxhdGlvbl90eXBlOjE7CisJCQl1MzIJVDAxX3BsY3BfaGVhZGVyX2xlbmd0aDoxOworCQkJdTMyCVQwMV90cmFuc21pdF9yYXRlOjM7CisJCQl1MzIJVDAxX3dlcF9pZDoyOworCQkJdTMyCVQwMV9hZGRfY2hhbGxlbmdlX3RleHQ6MTsKKwkJCXUzMglUMDFfaW5oaWJpdF9jcmM6MTsKKwkJCXUzMglUMDFfbG9vcF9iYWNrX3dlcF9tb2RlOjE7CisJCQl1MzIJVDAxX3JldHJ5X2Fib3J0X2ViYWJsZToxOworCQl9OworCQkjZWxzZQorCQlzdHJ1Y3QKKwkJeworCQkJdTMyCVQwMV9yZXRyeV9hYm9ydF9lYmFibGU6MTsKKwkJCXUzMglUMDFfbG9vcF9iYWNrX3dlcF9tb2RlOjE7CisJCQl1MzIJVDAxX2luaGliaXRfY3JjOjE7CisJCQl1MzIJVDAxX2FkZF9jaGFsbGVuZ2VfdGV4dDoxOworCQkJdTMyCVQwMV93ZXBfaWQ6MjsKKwkJCXUzMglUMDFfdHJhbnNtaXRfcmF0ZTozOworCQkJdTMyCVQwMV9wbGNwX2hlYWRlcl9sZW5ndGg6MTsKKwkJCXUzMglUMDFfbW9kdWxhdGlvbl90eXBlOjE7CisJCQl1MzIJVDAxX2FkZF9jdHM6MTsKKwkJCXUzMglUMDFfYWRkX3J0czoxOworCQkJdTMyCVQwMV9mYWxsX2JhY2tfcmF0ZTozOworCQkJdTMyCVQwMV9ydHNfY3RzX2R1cmF0aW9uOjE2OworCQl9OworCQkjZW5kaWYKKwl9OworfSBUMDFfREVTQ1JJUFRPUiwgKlBUMDFfREVTQ1JJUFRPUjsKKwordHlwZWRlZiBzdHJ1Y3QgX1QwMl9ERVNDUklQVE9SCit7CisJdW5pb24KKwl7CisJCXUzMgl2YWx1ZTsKKwkJI2lmZGVmIF9CSUdfRU5ESUFOXyAgLy8yMDA2MTAwOSBhZGQgYnkgYW5zb24ncyBlbmRpYW4KKwkJc3RydWN0CisJCXsKKwkJCXUzMglUMDJfSXNMYXN0TXBkdToxOy8vIFRoZSBzYW1lIG1lY2hhbmlzbSB3aXRoIFQwMCBzZXR0aW5nCisJCQl1MzIJVDAyX0lnbm9yZVJlc3VsdDoxOy8vIFRoZSBzYW1lIG1lY2hhbmlzbSB3aXRoIFQwMCBzZXR0aW5nLiAwNTAxMTEgTW9kaWZ5IGZvciBUUworCQkJdTMyCVQwMl9SRVNFUlZFRF9JRDoyOy8vIFRoZSBzYW1lIG1lY2hhbmlzbSB3aXRoIFQwMCBzZXR0aW5nCisJCQl1MzIJVDAyX1R4X1BrdElEOjQ7CisJCQl1MzIJVDAyX01QRFVfQ250OjQ7CisJCQl1MzIJVDAyX1JUU19DbnQ6NDsKKwkJCXUzMglUMDJfUkVTRVJWRUQ6NzsKKwkJCXUzMglUMDJfdHJhbnNtaXRfY29tcGxldGU6MTsKKwkJCXUzMglUMDJfdHJhbnNtaXRfYWJvcnRfZHVlX3RvX1RCVFQ6MTsKKwkJCXUzMglUMDJfZWZmZWN0aXZlX3RyYW5zbWlzc2lvbl9yYXRlOjE7CisJCQl1MzIJVDAyX3RyYW5zbWl0X3dpdGhvdXRfZW5jcnlwdGlvbl9kdWVfdG9fd2VwX29uX2ZhbHNlOjE7CisJCQl1MzIJVDAyX2Rpc2NhcmRfZHVlX3RvX251bGxfd2VwX2tleToxOworCQkJdTMyCVQwMl9SRVNFUlZFRF8xOjE7CisJCQl1MzIJVDAyX291dF9vZl9NYXhUeE1TRFVMaWZ0VGltZToxOworCQkJdTMyCVQwMl90cmFuc21pdF9hYm9ydDoxOworCQkJdTMyCVQwMl90cmFuc21pdF9mYWlsOjE7CisJCX07CisJCSNlbHNlCisJCXN0cnVjdAorCQl7CisJCQl1MzIJVDAyX3RyYW5zbWl0X2ZhaWw6MTsKKwkJCXUzMglUMDJfdHJhbnNtaXRfYWJvcnQ6MTsKKwkJCXUzMglUMDJfb3V0X29mX01heFR4TVNEVUxpZnRUaW1lOjE7CisJCQl1MzIJVDAyX1JFU0VSVkVEXzE6MTsKKwkJCXUzMglUMDJfZGlzY2FyZF9kdWVfdG9fbnVsbF93ZXBfa2V5OjE7CisJCQl1MzIJVDAyX3RyYW5zbWl0X3dpdGhvdXRfZW5jcnlwdGlvbl9kdWVfdG9fd2VwX29uX2ZhbHNlOjE7CisJCQl1MzIJVDAyX2VmZmVjdGl2ZV90cmFuc21pc3Npb25fcmF0ZToxOworCQkJdTMyCVQwMl90cmFuc21pdF9hYm9ydF9kdWVfdG9fVEJUVDoxOworCQkJdTMyCVQwMl90cmFuc21pdF9jb21wbGV0ZToxOworCQkJdTMyCVQwMl9SRVNFUlZFRDo3OworCQkJdTMyCVQwMl9SVFNfQ250OjQ7CisJCQl1MzIJVDAyX01QRFVfQ250OjQ7CisJCQl1MzIJVDAyX1R4X1BrdElEOjQ7CisJCQl1MzIJVDAyX1JFU0VSVkVEX0lEOjI7Ly8gVGhlIHNhbWUgbWVjaGFuaXNtIHdpdGggVDAwIHNldHRpbmcKKwkJCXUzMglUMDJfSWdub3JlUmVzdWx0OjE7Ly8gVGhlIHNhbWUgbWVjaGFuaXNtIHdpdGggVDAwIHNldHRpbmcuIDA1MDExMSBNb2RpZnkgZm9yIFRTCisJCQl1MzIJVDAyX0lzTGFzdE1wZHU6MTsvLyBUaGUgc2FtZSBtZWNoYW5pc20gd2l0aCBUMDAgc2V0dGluZworCQl9OworCQkjZW5kaWYKKwl9OworfSBUMDJfREVTQ1JJUFRPUiwgKlBUMDJfREVTQ1JJUFRPUjsKKwordHlwZWRlZiBzdHJ1Y3QgX0RFU0NSSVBUT1IgewkJLy8gU2tpcCBsZW5ndGggPSA4IERXT1JECisJLy8gSUQgZm9yIGRlc2NyaXB0b3IgLS0tLCBUaGUgZmllbGQgZG9lc24ndCBiZSBjbGVhcmQgaW4gdGhlIG9wZXJhdGlvbiBvZiBEZXNjcmlwdG9yIGRlZmluaXRpb24KKwl1OAlEZXNjcmlwdG9yX0lEOworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVRoZSBhYm92ZSByZWdpb24gZG9lc24ndCBiZSBjbGVhcmVkIGJ5IERFU0NSSVBUT1JfUkVTRVQtLS0tLS0KKwl1OAlSRVNFUlZFRFszXTsKKworCXUxNglGcmFnbWVudFRocmVzaG9sZDsKKwl1OAlJbnRlcm5hbFVzZWQ7Ly9Pbmx5IGNhbiBiZSB1c2VkIGJ5IG9wZXJhdGlvbiBvZiBkZXNjcmlwdG9yIGRlZmluaXRpb24KKwl1OAlUeXBlOy8vIDA6IDgwMi4zCTE6ODAyLjExIGRhdGEgZnJhbWUJMjo4MDIuMTEgbWFuYWdlbWVudCBmcmFtZQorCisJdTgJUHJlYW1ibGVNb2RlOy8vIDA6IHNob3J0IDE6bG9uZworCXU4CVR4UmF0ZTsKKwl1OAlGcmFnbWVudENvdW50OworCXU4CUVhcEZpeDsgLy8gRm9yIHNwZWVkIHVwIGtleSBpbnN0YWxsCisKKwkvLyBGb3IgUjAwIGFuZCBUMDAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXVuaW9uCisJeworCQlSMDBfREVTQ1JJUFRPUglSMDA7CisJCVQwMF9ERVNDUklQVE9SCVQwMDsKKwl9OworCisJLy8gRm9yIFIwMSBhbmQgVDAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwl1bmlvbgorCXsKKwkJUjAxX0RFU0NSSVBUT1IJUjAxOworCQlUMDFfREVTQ1JJUFRPUglUMDE7CisJfTsKKworCS8vIEZvciBSMDIgYW5kIFQwMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJdW5pb24KKwl7CisJCXUzMgkJCVIwMjsKKwkJVDAyX0RFU0NSSVBUT1IJVDAyOworCX07CisKKwkvLyBGb3IgUjAzIGFuZCBUMDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vIEZvciBzb2Z0d2FyZSB1c2VkCisJdW5pb24KKwl7CisJCXUzMglSMDM7CisJCXUzMglUMDM7CisJCXN0cnVjdAorCQl7CisJCQl1OAlidWZmZXJfbnVtYmVyOworCQkJdTgJYnVmZmVyX3N0YXJ0X2luZGV4OworCQkJdTE2CWJ1ZmZlcl90b3RhbF9zaXplOworCQl9OworCX07CisKKwkvLyBGb3Igc3RvcmluZyB0aGUgYnVmZmVyCisJdTE2CWJ1ZmZlcl9zaXplWyBNQVhfREVTQ1JJUFRPUl9CVUZGRVJfSU5ERVggXTsKKwl2b2lkKglidWZmZXJfYWRkcmVzc1sgTUFYX0RFU0NSSVBUT1JfQlVGRkVSX0lOREVYIF07Ly85MzExMzAuNC5xCisKK30gREVTQ1JJUFRPUiwgKlBERVNDUklQVE9SOworCisKKyNkZWZpbmUgREVGQVVMVF9OVUxMX1BBQ0tFVF9DT1VOVAkJMTgwMDAwCS8vMjAwNjA4MjguMSBBZGQuIDE4MCBzZWNvbmRzCisKKyNkZWZpbmUgTUFYX1RYVkdBX0VFUFJPTQk5CS8vSG93IG1hbnkgd29yZCh1MTYpIG9mIEVFUFJPTSB3aWxsIGJlIHVzZWQgZm9yIFR4VkdBCisjZGVmaW5lIE1BWF9SRl9QQVJBTUVURVIJMzIKKwordHlwZWRlZiBzdHJ1Y3QgX1RYVkdBX0ZPUl81MCB7CisJdTgJQ2hhbk5vOworCXU4CVR4VmdhVmFsdWU7Cit9IFRYVkdBX0ZPUl81MDsKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRGV2aWNlIHJlbGF0ZWQgaW5jbHVkZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworI2luY2x1ZGUgImxpbnV4L3didXNiX3MuaCIKKyNpbmNsdWRlICJsaW51eC93YjM1cmVnX3MuaCIKKyNpbmNsdWRlICJsaW51eC93YjM1dHhfcy5oIgorI2luY2x1ZGUgImxpbnV4L3diMzVyeF9zLmgiCisKKworLy8gRm9yIEhhbCB1c2luZyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3R5cGVkZWYgc3RydWN0IF9IV19EQVRBX1QKK3sKKwkvLyBGb3IgY29tcGF0aWJsZSB3aXRoIDMzCisJdTMyCXJldmlzaW9uOworCXUzMglCQjNjX2NhbDsgLy8gVGhlIHZhbHVlIGZvciBUeCBjYWxpYnJhdGlvbiBjb21lcyBmcm9tIEVFUFJPTQorCXUzMglCQjU0X2NhbDsgLy8gVGhlIHZhbHVlIGZvciBSeCBjYWxpYnJhdGlvbiBjb21lcyBmcm9tIEVFUFJPTQorCisKKwkvLyBGb3Igc3VycHJpc2UgcmVtb3ZlCisJdTMyCVN1cnByaXNlUmVtb3ZlOyAvLyAwOiBOb3JtYWwgMTogU3VycHJpc2UgcmVtb3ZlCisJdTgJSW5pdGlhbFJlc291cmNlOworCXU4CUlzS2V5UHJlU2V0OworCXU4CUNhbE9uZVRpbWU7IC8vIDIwMDYwNjMwLjEKKworCXU4CVZDT190cmltOworCisJLy8gRm9yIEZpeCAxJ3N0IERNQSBidWcKKwl1MzIJRnJhZ0NvdW50OworCXUzMglETUFGaXg7IC8vVjFfRE1BX0ZJWCBUaGUgdmFyaWFibGUgY2FuIGJlIHJlbW92ZWQgaWYgZHJpdmVyIHdhbnQgdG8gc2F2ZSBtZW0gc3BhY2UgZm9yIFYyLgorCisJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkvLyBGb3IgVVNCIGRyaXZlciwgaGFsIG5lZWQgbW9yZSB2YXJpYWJsZXMuIER1ZSB0bworCS8vCTEuIE5ESVMtV0RNIG9wZXJhdGlvbgorCS8vCTIuIFRoZSBTTUUsIE1MTUUgYW5kIE9MRCBNRFMgbmVlZCBBZGFwdGVyIHN0cnVjdHVyZSwgYnV0IHRoZSBkcml2ZXIgdW5kZXIgSEFMIGRvZXNuJ3QKKwkvLwkJaGF2ZSB0aGF0IHBhcmFtZXRlciB3aGVuIHJlY2VpdmluZyBhbmQgaW5kaWNhdGluZyBwYWNrZXQuCisJLy8JCVRoZSBNRFMgbXVzdCBpbnB1dCB0aGUgQWRhcHRlciBwb2ludGVyIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIGhhbF9pbml0X2hhcmR3YXJlLgorCS8vCQlUaGUgZnVuY3Rpb24gdXNhZ2UgaXMgZGlmZmVyZW50IHRoYW4gUENJIGRyaXZlci4KKwkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCXZvaWQqIEFkYXB0ZXI7CisKKwkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJLy8gRGVmaW5pdGlvbiBmb3IgTUFDIGFkZHJlc3MKKwkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJdTgJCVBlcm1hbmVudE1hY0FkZHJlc3NbRVRIX0xFTkdUSF9PRl9BRERSRVNTICsgMl07IC8vIFRoZSBFbnRoZXJuZXQgYWRkciB0aGF0IGFyZSBzdG9yZWQgaW4gRUVQUk9NLiAgKyAyIHRvIDgtYnl0ZSBhbGlnbm1lbnQKKwl1OAkJQ3VycmVudE1hY0FkZHJlc3NbRVRIX0xFTkdUSF9PRl9BRERSRVNTICsgMl07IC8vIFRoZSBFbnRoZXJuZXQgYWRkciB0aGF0IGFyZSBpbiB1c2VkLiAgKyAyIHRvIDgtYnl0ZSBhbGlnbm1lbnQKKworCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJLy8gRGVmaW5pdGlvbiBmb3IgODAyLjExCisJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlQVUNIQVIJYnNzaWRfcG9pbnRlcjsgLy8gVXNlZCBieSBoYWxfZ2V0X2Jzc2lkIGZvciByZXR1cm4gdmFsdWUKKwl1OAlic3NpZFs4XTsvLyBPbmx5IDYgYnl0ZSB3aWxsIGJlIHVzZWQuIDggYnl0ZSBpcyByZXF1aXJlZCBmb3IgcmVhZCBidWZmZXIKKwl1OAlzc2lkWzMyXTsvLyBtYXhpbXVtIHNzaWQgbGVuZ3RoIGlzIDMyIGJ5dGUKKworCXUxNglBSUQ7CisJdTgJc3NpZF9sZW5ndGg7CisJdTgJQ2hhbm5lbDsKKworCXUxNglMaXN0ZW5JbnRlcnZhbDsKKwl1MTYJQ2FwYWJpbGl0eUluZm9ybWF0aW9uOworCisJdTE2CUJlYWNvblBlcmlvZDsKKwl1MTYJUHJvYmVEZWxheTsKKworCXU4CWJzc190eXBlOy8vIDA6IElCU1NfTkVUIG9yIDE6RVNTX05FVAorCXU4CXByZWFtYmxlOy8vIDA6IHNob3J0IHByZWFtYmxlLCAxOiBsb25nIHByZWFtYmxlCisJdTgJc2xvdF90aW1lX3NlbGVjdDsvLyA5IG9yIDIwIHZhbHVlCisJdTgJcGh5X3R5cGU7Ly8gUGh5IHNlbGVjdAorCisJdTMyCXBoeV9wYXJhW01BWF9SRl9QQVJBTUVURVJdOworCXUzMglwaHlfbnVtYmVyOworCisJdTMyCUN1cnJlbnRSYWRpb1N3OyAvLyAyMDA2MDMyMC4yIDA6T24gMTpPZmYKKwl1MzIJQ3VycmVudFJhZGlvSHc7IC8vIDIwMDYwODI1IDA6T24gMTpPZmYKKworCVBVQ0hBUglwb3dlcl9zYXZlX3BvaW50OyAgLy8gVXNlZCBieSBoYWxfZ2V0X3Bvd2VyX3NhdmVfbW9kZSBmb3IgcmV0dXJuIHZhbHVlCisJdTgJY3dtaW47CisJdTgJZGVzaXJlZF9wb3dlcl9zYXZlOworCXU4CWR0aW07Ly8gSXMgcnVubmluZyBkdGltCisJdTgJbWFwcGluZ19rZXlfcmVwbGFjZV9pbmRleDsvL0luIEtleSB0YWJsZSwgdGhlIG5leHQgaW5kZXggYmUgcmVwbGFjZWQgOTMxMTMwLjQucgorCisJdTE2CU1heFJlY2VpdmVMaWZlVGltZTsKKwl1MTYJRnJhZ21lbnRUaHJlc2hvbGQ7CisJdTE2CUZyYWdtZW50VGhyZXNob2xkX3RtcDsKKwl1MTYJY3dtYXg7CisKKwl1OAlLZXlfc2xvdFtNQVhfS0VZX1RBQkxFXVs4XTsgLy9Pd25lcnNoaXAgcmVjb3JkIGZvciBrZXkgc2xvdC4gRm9yIEFsaWdubWVudAorCXUzMglLZXlfY29udGVudFtNQVhfS0VZX1RBQkxFXVsxMl07IC8vIDEwRFcgZm9yIGVhY2ggZW50cnkgKyAyIGZvciBidXJzdCBjb21tYW5kKCBPZmYgYW5kIE9uIHZhbGlkIGJpdCkKKwl1OAlDdXJyZW50RGVmYXVsdEtleUluZGV4OworCXUzMglDdXJyZW50RGVmYXVsdEtleUxlbmd0aDsKKworCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJLy8gVmFyaWFibGUgZm9yIGVhY2ggbW9kdWxlCisJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlXQlVTQgkJV2JVc2I7IC8vIE5lZWQgV2JVc2IuaAorCVdCMzVSRUcJCVdiMzVSZWc7IC8vIE5lZWQgV2IzNVJlZy5oCisJV0IzNVRYCQlXYjM1VHg7IC8vIE5lZWQgV2IzNVR4LmgKKwlXQjM1UlgJCVdiMzVSeDsgLy8gTmVlZCBXYjM1UnguaAorCisJT1NfVElNRVIJTEVEVGltZXI7Ly8gRm9yIExFRAorCisJdTMyCQlMRURwb2ludDsvLyBGb3IgTEVECisKKyAgICB1MzIgICAgICAgICBkdG9fdHhfcmV0cnlfY291bnQ7ICAgICAgICAgLy8gTEEyMDA0MDIxMF9EVE8ga2V2aW4KKyAgICB1MzIgICAgICAgICBkdG9fdHhfZnJhZ19jb3VudDsgICAgICAgICAgLy8gTEEyMDA0MDIxMF9EVE8ga2V2aW4KKyAgICB1MzIgICAgICAgICByeF9va19jb3VudFsxM107ICAgIC8vIGluZGV4PTA6IHRvdGFsIHJ4IG9rCisgICAgLy91MzIgICAgICAgICByeF9va19ieXRlc1sxM107ICAgIC8vIGluZGV4PTAsIHRvdGFsIHJ4IG9rIGJ5dGVzCisgICAgdTMyICAgICAgICAgcnhfZXJyX2NvdW50WzEzXTsgICAvLyBpbmRleD0wOiB0b3RhbCByeCBlcnIKKworCS8vZm9yIFR4IGRlYnVnCisJdTMyCQkJdHhfVEJUVF9zdGFydF9jb3VudDsKKwl1MzIJCQl0eF9FVFJfY291bnQ7CisJdTMyCQkJdHhfV2VwT25fZmFsc2VfY291bnQ7CisJdTMyCQkJdHhfTnVsbF9rZXlfY291bnQ7CisJdTMyCQkJdHhfcmV0cnlfY291bnRbOF07CisKKwl1OAkJUG93ZXJJbmRleEZyb21FRVBST007IC8vIEZvciAyNDEyTUh6CisJdTgJCXBvd2VyX2luZGV4OworCXU4CQlJc1dhaXRKb2luQ29tcGxldGU7CS8vIFRSVUU6IHNldCBqb2luIHJlcXVlc3QKKwl1OAkJYmFuZDsKKworCXUxNgkJU29mdHdhcmVTZXQ7CisJdTE2CQlSZXNlcnZlZF9zOworCisJdTMyCQlJc0luaXRPSzsgLy8gMDogRHJpdmVyIHN0YXJ0aW5nICAgMTogRHJpdmVyIGluaXQgT0sKKworCS8vIEZvciBQaHkgY2FsaWJyYXRpb24KKyAgICBzMzIJCWlxX3JzZGxfZ2Fpbl90eF9kMjsKKyAgICBzMzIJCWlxX3JzZGxfcGhhc2VfdHhfZDI7CisJdTMyCQl0eHZnYV9zZXR0aW5nX2Zvcl9jYWw7IC8vIDIwMDYwNzAzLjEgQWRkCisKKwl1OAkJVHhWZ2FTZXR0aW5nSW5FRVBST01bICgoKE1BWF9UWFZHQV9FRVBST00qMikrMykgJiB+MHgwMykgXTsgLy8gMjAwNjA2MjEgRm9yIGJhY2t1cCBFRVBST00gdmFsdWUKKwl1OAkJVHhWZ2FGb3IyNFsxNl07IC8vIE1heCBpcyAxNCwgMiBmb3IgYWxpZ25tZW50CisJVFhWR0FfRk9SXzUwCVR4VmdhRm9yNTBbMzZdOwkvLyAzNSBjaGFubmVscyBpbiA1Ry4gMzV4MiA9IDcwIGJ5dGUuIDIgZm9yIGFsaWdubWVudHMKKworCXUxNgkJU2Nhbl9JbnRlcnZhbDsKKwl1MTYJCVJFU0VSVkVENjsKKworCS8vIExFRCBjb250cm9sCisJdTMyCQlMRURfY29udHJvbDsKKwkJLy8gTEVEX2NvbnRyb2wgNCBieXRlOiBHcmF5X0xlZF8xWzNdCQlHcmF5X0xlZF8wWzJdCQlMZWRbMV0JCQlMZWRbMF0KKwkJLy8gR3JheV9MZWQKKwkJLy8JCUZvciBMZWQgZ3JheSBzZXR0aW5nCisJCS8vIExlZAorCQkvLwkJMDogbm9ybWFsIGNvbnRyb2wsIExFRCBiZWhhdmlvciB3aWxsIGRlY2lkZSBieSBFRVBST00gc2V0dGluZworCQkvLwkJMTogVHVybiBvZmYgc3BlY2lmaWMgTEVECisJCS8vCQkyOiBBbHdheXMgb24gc3BlY2lmaWMgTEVECisJCS8vCQkzOiBzbG93IGJsaW5raW5nIHNwZWNpZmljIExFRAorCQkvLwkJNDogZmFzdCBibGlua2luZyBzcGVjaWZpYyBMRUQKKwkJLy8JCTU6IFdQUyBsZWQgY29udHJvbCBpcyBzZXQuIExlZDAgaXMgUmVkLCBMZWQxIGlkIEdyZWVuCisJCS8vCQkJTGVkWzFdIGlzIHBhcmFtZXRlciBmb3IgV1BTIExFRCBtb2RlCisJCS8vCQkJCSAvLyAxOkluUHJvZ3Jlc3MgIDI6IEVycm9yIDM6IFNlc3Npb24gb3ZlcmxhcCA0OiBTdWNjZXNzIDIwMDYxMTA4IGNvbnRyb2wKKworCXUzMgkJTEVEX0xpbmtPbjsJCS8vVHVybiBMRUQgb24gY29udHJvbAorCXUzMgkJTEVEX1NjYW5uaW5nOwkvLyBMZXQgTEVEIGluIHNjYW4gcHJvY2VzcyBjb250cm9sCisJdTMyCQlMRURfQmxpbmtpbmc7IC8vIFRlbXAgdmFyaWFibGUgZm9yIHNoaW5pbmcKKwl1MzIJCVJ4Qnl0ZUNvdW50TGFzdDsKKwl1MzIJCVR4Qnl0ZUNvdW50TGFzdDsKKworCXMzMgkJU3VycHJpc2VSZW1vdmVDb3VudDsKKworCS8vIEZvciBnbG9iYWwgdGltZXIKKwl1MzIJCXRpbWVfY291bnQ7Ly9USUNLX1RJTUVfMTAwbXMgMSA9IDEwMG1zCisKKwkvLyBGb3IgZXJyb3IgcmVjb3ZlcgorCXUzMgkJSHdTdG9wOworCisJLy8gMjAwNjA4MjguMSBmb3IgYXZvaWQgQVAgZGlzY29ubmVjdAorCXUzMgkJTnVsbFBhY2tldENvdW50OworCit9IGh3X2RhdGFfdCwgKnBod19kYXRhX3Q7CisKKy8vIFRoZSBtYXBwaW5nIG9mIFJ4IGFuZCBUeCBkZXNjcmlwdG9yIGZpZWxkCit0eXBlZGVmIHN0cnVjdCBfSEFMX1JBVEUKK3sKKwkvLyBEU1NTCisJdTMyCVJFU0VSVkVEXzA7CisJdTMyICAgTnVtUmF0ZTJNUzsKKwl1MzIgICBOdW1SYXRlNTVNUzsKKwl1MzIgICBOdW1SYXRlMTFNUzsKKworCXUzMglSRVNFUlZFRF8xWzRdOworCisJdTMyICAgTnVtUmF0ZTFNOworCXUzMiAgIE51bVJhdGUyTUw7CisJdTMyICAgTnVtUmF0ZTU1TUw7CisJdTMyICAgTnVtUmF0ZTExTUw7CisKKwl1MzIJUkVTRVJWRURfMls0XTsKKworCS8vIE9GRE0KKwl1MzIgICBOdW1SYXRlNk07CisJdTMyICAgTnVtUmF0ZTlNOworCXUzMiAgIE51bVJhdGUxMk07CisJdTMyICAgTnVtUmF0ZTE4TTsKKwl1MzIgICBOdW1SYXRlMjRNOworCXUzMiAgIE51bVJhdGUzNk07CisJdTMyICAgTnVtUmF0ZTQ4TTsKKwl1MzIgICBOdW1SYXRlNTRNOworfSBIQUxfUkFURSwgKlBIQUxfUkFURTsKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmxpbnV4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmxpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhZGU1YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3dibGludXguYwpAQCAtMCwwICsxLDI3NyBAQAorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDUgV2luYm9uZCBFbGVjdHJvbmljIENvcnBvcmF0aW9uCisvLworLy8gIE1vZHVsZSBOYW1lOgorLy8gICAgd2JsaW51eC5jCisvLworLy8gIEFic3RyYWN0OgorLy8gICAgTGludXggcmVsZWF0ZWQgcm91dGluZXMKKy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNpbmNsdWRlICJvc19jb21tb24uaCIKKwordTMyCitXQkxJTlVYX01lbW9yeUFsbG9jKHZvaWQqICpWaXJ0dWFsQWRkcmVzcywgdTMyIExlbmd0aCkKK3sKKwkqVmlydHVhbEFkZHJlc3MgPSBremFsbG9jKCBMZW5ndGgsIEdGUF9BVE9NSUMgKTsgLy9HRlBfS0VSTkVMIGlzIG5vdCBzdWl0YWJsZQorCisJaWYgKCpWaXJ0dWFsQWRkcmVzcyA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKworczMyCitFbmNhcEF0b21pY0luYyhQQURBUFRFUiBBZGFwdGVyLCB2b2lkKiBwQXRvbWljKQoreworCVBXQkxJTlVYIHBXYkxpbnV4ID0gJkFkYXB0ZXItPldiTGludXg7CisJdTMyCWx0bXA7CisJUFVMT05HCXBsdG1wID0gKFBVTE9ORylwQXRvbWljOworCU9TX1NQSU5fTE9DS19BQ1FVSVJFRCggJnBXYkxpbnV4LT5BdG9taWNTcGluTG9jayApOworCSgqcGx0bXApKys7CisJbHRtcCA9ICgqcGx0bXApOworCU9TX1NQSU5fTE9DS19SRUxFQVNFRCggJnBXYkxpbnV4LT5BdG9taWNTcGluTG9jayApOworCXJldHVybiBsdG1wOworfQorCitzMzIKK0VuY2FwQXRvbWljRGVjKFBBREFQVEVSIEFkYXB0ZXIsIHZvaWQqIHBBdG9taWMpCit7CisJUFdCTElOVVggcFdiTGludXggPSAmQWRhcHRlci0+V2JMaW51eDsKKwl1MzIJbHRtcDsKKwlQVUxPTkcJcGx0bXAgPSAoUFVMT05HKXBBdG9taWM7CisJT1NfU1BJTl9MT0NLX0FDUVVJUkVEKCAmcFdiTGludXgtPkF0b21pY1NwaW5Mb2NrICk7CisJKCpwbHRtcCktLTsKKwlsdG1wID0gKCpwbHRtcCk7CisJT1NfU1BJTl9MT0NLX1JFTEVBU0VEKCAmcFdiTGludXgtPkF0b21pY1NwaW5Mb2NrICk7CisJcmV0dXJuIGx0bXA7Cit9CisKK3Vuc2lnbmVkIGNoYXIKK1dCTElOVVhfSW5pdGlhbChQQURBUFRFUiBBZGFwdGVyKQoreworCVBXQkxJTlVYIHBXYkxpbnV4ID0gJkFkYXB0ZXItPldiTGludXg7CisKKwlPU19TUElOX0xPQ0tfQUxMT0NBVEUoICZwV2JMaW51eC0+U3BpbkxvY2sgKTsKKwlPU19TUElOX0xPQ0tfQUxMT0NBVEUoICZwV2JMaW51eC0+QXRvbWljU3BpbkxvY2sgKTsKKwlyZXR1cm4gVFJVRTsKK30KKwordm9pZAorV0JMaW51eF9SZWNlaXZlUGFja2V0KFBBREFQVEVSIEFkYXB0ZXIsIFBSWExBWUVSMSBwUnhMYXllcjEpCit7CisJQlVHKCk7Cit9CisKKwordm9pZAorV0JMSU5VWF9HZXROZXh0UGFja2V0KFBBREFQVEVSIEFkYXB0ZXIsICBQREVTQ1JJUFRPUiBwRGVzKQoreworCUJVRygpOworfQorCit2b2lkCitXQkxJTlVYX0dldE5leHRQYWNrZXRDb21wbGV0ZWQoUEFEQVBURVIgQWRhcHRlciwgUERFU0NSSVBUT1IgcERlcykKK3sKKwlCVUcoKTsKK30KKwordm9pZAorV0JMSU5VWF9EZXN0cm95KFBBREFQVEVSIEFkYXB0ZXIpCit7CisJV0JMSU5VWF9zdG9wKCBBZGFwdGVyICk7CisJT1NfU1BJTl9MT0NLX0ZSRUUoICZwV2JOZGlzLT5TcGluTG9jayApOworI2lmZGVmIF9QRV9VU0JfSU5JX0RVTVBfCisJV0JERUJVRygoIlt3MzV1bmRdIHVucmVnaXN0ZXJfbmV0ZGV2IVxuIikpOworI2VuZGlmCit9CisKK3ZvaWQKK1dCTElOVVhfc3RvcCggIFBBREFQVEVSIEFkYXB0ZXIgKQoreworCVBXQkxJTlVYCXBXYkxpbnV4ID0gJkFkYXB0ZXItPldiTGludXg7CisJc3RydWN0IHNrX2J1ZmYgKnBTa2I7CisKKwlpZiAoT1NfQVRPTUlDX0lOQyggQWRhcHRlciwgJnBXYkxpbnV4LT5UaHJlYWRDb3VudCApID09IDEpIHsKKwkJLy8gU2h1dGRvd24gbW9kdWxlIGltbWVkaWF0ZWx5CisJCXBXYkxpbnV4LT5zaHV0ZG93biA9IDE7CisKKwkJd2hpbGUgKHBXYkxpbnV4LT5za2JfYXJyYXlbIHBXYkxpbnV4LT5za2JfR2V0SW5kZXggXSkgeworCQkJLy8gVHJ5aW5nIHRvIGZyZWUgdGhlIHVuLXNlbmRpbmcgcGFja2V0CisJCQlwU2tiID0gcFdiTGludXgtPnNrYl9hcnJheVsgcFdiTGludXgtPnNrYl9HZXRJbmRleCBdOworCQkJcFdiTGludXgtPnNrYl9hcnJheVsgcFdiTGludXgtPnNrYl9HZXRJbmRleCBdID0gTlVMTDsKKwkJCWlmKCBpbl9pcnEoKSApCisJCQkJZGV2X2tmcmVlX3NrYl9pcnEoIHBTa2IgKTsKKwkJCWVsc2UKKwkJCQlkZXZfa2ZyZWVfc2tiKCBwU2tiICk7CisKKwkJCXBXYkxpbnV4LT5za2JfR2V0SW5kZXgrKzsKKwkJCXBXYkxpbnV4LT5za2JfR2V0SW5kZXggJT0gV0JMSU5VWF9QQUNLRVRfQVJSQVlfU0laRTsKKwkJfQorCisjaWZkZWYgX1BFX1NUQVRFX0RVTVBfCisJCVdCREVCVUcoKCAiW3czNXVuZF0gU0tCX1JFTEVBU0UgT0tcbiIgKSk7CisjZW5kaWYKKwl9CisKKwlPU19BVE9NSUNfREVDKCBBZGFwdGVyLCAmcFdiTGludXgtPlRocmVhZENvdW50ICk7Cit9CisKK3ZvaWQKK1diV2xhbkhhbHQoICBQQURBUFRFUiBBZGFwdGVyICkKK3sKKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUFkYXB0ZXItPnNMb2NhbFBhcmEuU2h1dERvd25lZCA9IFRSVUU7CisKKwlNZHNfRGVzdHJveSggQWRhcHRlciApOworCisJLy8gVHVybiBvZmYgUnggYW5kIFR4IGhhcmR3YXJlIGFiaWxpdHkKKwloYWxfc3RvcCggJkFkYXB0ZXItPnNId0RhdGEgKTsKKyNpZmRlZiBfUEVfVVNCX0lOSV9EVU1QXworCVdCREVCVUcoKCJbdzM1dW5kXSBIYWxfc3RvcCBPLksuXG4iKSk7CisjZW5kaWYKKwlPU19TTEVFUCgxMDAwMDApOy8vIFdhaXRpbmcgSXJwIGNvbXBsZXRlZAorCisJLy8gRGVzdHJveSB0aGUgTkRJUyBtb2R1bGUKKwlXQkxJTlVYX0Rlc3Ryb3koIEFkYXB0ZXIgKTsKKworCS8vIEhhbHQgdGhlIEhBTAorCWhhbF9oYWx0KCZBZGFwdGVyLT5zSHdEYXRhLCBOVUxMKTsKK30KKwordW5zaWduZWQgY2hhcgorV2JXTGFuSW5pdGlhbGl6ZShQQURBUFRFUiBBZGFwdGVyKQoreworCXBod19kYXRhX3QJcEh3RGF0YTsKKwlQVUNIQVIJCXBNYWNBZGRyLCBwTWFjQWRkcjI7CisJdTMyCQlJbml0U3RlcCA9IDA7CisJdTgJCUVFUFJPTV9yZWdpb247CisJdTgJCUh3UmFkaW9PZmY7CisKKwlkbyB7CisJCS8vCisJCS8vIFNldHRpbmcgZGVmYXVsdCB2YWx1ZSBmb3IgTGludXgKKwkJLy8KKwkJQWRhcHRlci0+c0xvY2FsUGFyYS5yZWdpb25fSU5GID0gUkVHSU9OX0FVVE87CisJCUFkYXB0ZXItPnNMb2NhbFBhcmEuVHhSYXRlTW9kZSA9IFJBVEVfQVVUTzsKKwkJcHNMT0NBTC0+Yk1hY09wZXJhdGlvbk1vZGUgPSBNT0RFXzgwMl8xMV9CRzsJLy8gQi9HIG1vZGUKKwkJQWRhcHRlci0+TWRzLlR4UlRTVGhyZXNob2xkID0gREVGQVVMVF9SVFNUaHJlc2hvbGQ7CisJCUFkYXB0ZXItPk1kcy5UeEZyYWdtZW50VGhyZXNob2xkID0gREVGQVVMVF9GUkFHTUVOVF9USFJFU0hPTEQ7CisJCWhhbF9zZXRfcGh5X3R5cGUoICZBZGFwdGVyLT5zSHdEYXRhLCBSRl9XQl8yNDJfMSApOworCQlBZGFwdGVyLT5zTG9jYWxQYXJhLk1UVXNpemUgPSBNQVhfRVRIRVJORVRfUEFDS0VUX1NJWkU7CisJCXBzTE9DQUwtPmJQcmVhbWJsZU1vZGUgPSBBVVRPX01PREU7CisJCUFkYXB0ZXItPnNMb2NhbFBhcmEuUmFkaW9PZmZTdGF0dXMuYm9Td1JhZGlvT2ZmID0gRkFMU0U7CisJCXBId0RhdGEgPSAmQWRhcHRlci0+c0h3RGF0YTsKKwkJaGFsX3NldF9waHlfdHlwZSggcEh3RGF0YSwgUkZfREVDSURFX0JZX0lORiApOworCisJCS8vCisJCS8vIEluaXRpYWwgZWFjaCBtb2R1bGUgYW5kIHZhcmlhYmxlCisJCS8vCisJCWlmICghV0JMSU5VWF9Jbml0aWFsKEFkYXB0ZXIpKSB7CisjaWZkZWYgX1BFX1VTQl9JTklfRFVNUF8KKwkJCVdCREVCVUcoKCJbdzM1dW5kXVdCTkRJUyBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCX0KKworCQkvLyBJbml0aWFsIFNvZnR3YXJlIHZhcmlhYmxlCisJCUFkYXB0ZXItPnNMb2NhbFBhcmEuU2h1dERvd25lZCA9IEZBTFNFOworCisJCS8vYWRkZWQgYnkgd3MgZm9yIHdlcCBrZXkgZXJyb3IgZGV0ZWN0aW9uCisJCUFkYXB0ZXItPnNMb2NhbFBhcmEuYldlcEtleUVycm9yPSBGQUxTRTsKKwkJQWRhcHRlci0+c0xvY2FsUGFyYS5iVG9TZWxmUGFja2V0UmVjZWl2ZWQgPSBGQUxTRTsKKwkJQWRhcHRlci0+c0xvY2FsUGFyYS5XZXBLZXlEZXRlY3RUaW1lckNvdW50PSAyICogMTAwOyAvLy8gMiBzZWNvbmRzCisKKwkJLy8gSW5pdGlhbCBVU0IgaGFsCisJCUluaXRTdGVwID0gMTsKKwkJcEh3RGF0YSA9ICZBZGFwdGVyLT5zSHdEYXRhOworCQlpZiAoIWhhbF9pbml0X2hhcmR3YXJlKHBId0RhdGEsIEFkYXB0ZXIpKQorCQkJYnJlYWs7CisKKwkJRUVQUk9NX3JlZ2lvbiA9IGhhbF9nZXRfcmVnaW9uX2Zyb21fRUVQUk9NKCBwSHdEYXRhICk7CisJCWlmIChFRVBST01fcmVnaW9uICE9IFJFR0lPTl9BVVRPKQorCQkJcHNMT0NBTC0+cmVnaW9uID0gRUVQUk9NX3JlZ2lvbjsKKwkJZWxzZSB7CisJCQlpZiAocHNMT0NBTC0+cmVnaW9uX0lORiAhPSBSRUdJT05fQVVUTykKKwkJCQlwc0xPQ0FMLT5yZWdpb24gPSBwc0xPQ0FMLT5yZWdpb25fSU5GOworCQkJZWxzZQorCQkJCXBzTE9DQUwtPnJlZ2lvbiA9IFJFR0lPTl9VU0E7CS8vZGVmYXVsdCBzZXR0aW5nCisJCX0KKworCQkvLyBHZXQgU29mdHdhcmUgc2V0dGluZyBmbGFnIGZyb20gaGFsCisJCUFkYXB0ZXItPnNMb2NhbFBhcmEuYm9BbnRlbm5hRGl2ZXJzaXR5ID0gRkFMU0U7CisJCWlmIChoYWxfc29mdHdhcmVfc2V0KHBId0RhdGEpICYgMHgwMDAwMDAwMSkKKwkJCUFkYXB0ZXItPnNMb2NhbFBhcmEuYm9BbnRlbm5hRGl2ZXJzaXR5ID0gVFJVRTsKKworCQkvLworCQkvLyBGb3IgVFMgbW9kdWxlCisJCS8vCisJCUluaXRTdGVwID0gMjsKKworCQkvLyBGb3IgTURTIG1vZHVsZQorCQlJbml0U3RlcCA9IDM7CisJCU1kc19pbml0aWFsKEFkYXB0ZXIpOworCisJCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCS8vIEluaXRpYWxpemUgdGhlIFNNRSwgU0NBTiwgTUxNRSwgUk9BTQorCQkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlJbml0U3RlcCA9IDQ7CisJCUluaXRTdGVwID0gNTsKKwkJSW5pdFN0ZXAgPSA2OworCisJCS8vIElmIG5vIHVzZXItZGVmaW5lZCBhZGRyZXNzIGluIHRoZSByZWdpc3RyeSwgdXNlIHRoZSBhZGRyZXNzcyAiYnVybmVkIiBvbiB0aGUgTklDIGluc3RlYWQuCisJCXBNYWNBZGRyID0gQWRhcHRlci0+c0xvY2FsUGFyYS5UaGlzTWFjQWRkcmVzczsKKwkJcE1hY0FkZHIyID0gQWRhcHRlci0+c0xvY2FsUGFyYS5QZXJtYW5lbnRBZGRyZXNzOworCQloYWxfZ2V0X3Blcm1hbmVudF9hZGRyZXNzKCBwSHdEYXRhLCBBZGFwdGVyLT5zTG9jYWxQYXJhLlBlcm1hbmVudEFkZHJlc3MgKTsvLyBSZWFkaW5nIGV0aGVybmV0IGFkZHJlc3MgZnJvbSBFRVBST00KKwkJaWYgKE9TX01FTU9SWV9DT01QQVJFKHBNYWNBZGRyLCAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIiwgTUFDX0FERFJfTEVOR1RIICkpIC8vIElzIGVxdWFsCisJCXsKKwkJCW1lbWNweSggcE1hY0FkZHIsIHBNYWNBZGRyMiwgTUFDX0FERFJfTEVOR1RIICk7CisJCX0gZWxzZSB7CisJCQkvLyBTZXQgdGhlIHVzZXIgZGVmaW5lIE1BQyBhZGRyZXNzCisJCQloYWxfc2V0X2V0aGVybmV0X2FkZHJlc3MoIHBId0RhdGEsIEFkYXB0ZXItPnNMb2NhbFBhcmEuVGhpc01hY0FkZHJlc3MgKTsKKwkJfQorCisJCS8vZ2V0IGN1cnJlbnQgYW50ZW5uYQorCQlwc0xPQ0FMLT5iQW50ZW5uYU5vID0gaGFsX2dldF9hbnRlbm5hX251bWJlcihwSHdEYXRhKTsKKyNpZmRlZiBfUEVfU1RBVEVfRFVNUF8KKwkJV0JERUJVRygoIkRyaXZlciBpbml0LCBhbnRlbm5hIG5vID0gJWRcbiIsIHBzTE9DQUwtPmJBbnRlbm5hTm8pKTsKKyNlbmRpZgorCQloYWxfZ2V0X2h3X3JhZGlvX29mZiggcEh3RGF0YSApOworCisJCS8vIFdhaXRpbmcgZm9yIEhBTCBzZXR0aW5nIE9LCisJCXdoaWxlICghaGFsX2lkbGUocEh3RGF0YSkpCisJCQlPU19TTEVFUCgxMDAwMCk7CisKKwkJTVRPX0luaXQoQWRhcHRlcik7CisKKwkJSHdSYWRpb09mZiA9IGhhbF9nZXRfaHdfcmFkaW9fb2ZmKCBwSHdEYXRhICk7CisJCXBzTE9DQUwtPlJhZGlvT2ZmU3RhdHVzLmJvSHdSYWRpb09mZiA9ICEhSHdSYWRpb09mZjsKKworCQloYWxfc2V0X3JhZGlvX21vZGUoIHBId0RhdGEsICh1bnNpZ25lZCBjaGFyKShwc0xPQ0FMLT5SYWRpb09mZlN0YXR1cy5ib1N3UmFkaW9PZmYgfHwgcHNMT0NBTC0+UmFkaW9PZmZTdGF0dXMuYm9Id1JhZGlvT2ZmKSApOworCisJCWhhbF9kcml2ZXJfaW5pdF9PSyhwSHdEYXRhKSA9IDE7IC8vIE5vdGlmeSBoYWwgdGhhdCB0aGUgZHJpdmVyIGlzIHJlYWR5IG5vdy4KKwkJLy9zZXQgYSB0eCBwb3dlciBmb3IgcmVmZXJlbmNlLi4uLi4KKy8vCQlzbWVfc2V0X3R4X3Bvd2VyX2xldmVsKEFkYXB0ZXIsIDEyKTsJRklYTUU/CisJCXJldHVybiBUUlVFOworCX0KKwl3aGlsZShGQUxTRSk7CisKKwlzd2l0Y2ggKEluaXRTdGVwKSB7CisJY2FzZSA1OgorCWNhc2UgNDoKKwljYXNlIDM6IE1kc19EZXN0cm95KCBBZGFwdGVyICk7CisJY2FzZSAyOgorCWNhc2UgMTogV0JMSU5VWF9EZXN0cm95KCBBZGFwdGVyICk7CisJCWhhbF9oYWx0KCBwSHdEYXRhLCBOVUxMICk7CisJY2FzZSAwOiBicmVhazsKKwl9CisKKwlyZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgV0JMSU5VWF9Db25uZWN0U3RhdHVzKFBBREFQVEVSIEFkYXB0ZXIsIHUzMiBmbGFnKQoreworCVBXQkxJTlVYCXBXYkxpbnV4ID0gJkFkYXB0ZXItPldiTGludXg7CisKKwlwV2JMaW51eC0+TGlua1N0YXR1cyA9IGZsYWc7IC8vIE9TX0RJU0NPTk5FQ1RFRAlvciAgT1NfQ09OTkVDVEVECit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3dibGludXhfZi5oIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JsaW51eF9mLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNDBjNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL3dibGludXhfZi5oCkBAIC0wLDAgKzEsMjMgQEAKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgV2luYm9uZCBFbGVjdHJvbmljIENvcnBvcmF0aW9uCisvLworLy8gd2JsaW51eF9mLmgKKy8vCit1MzIgV0JMSU5VWF9NZW1vcnlBbGxvYyggIHZvaWQqICpWaXJ0dWFsQWRkcmVzcywgIHUzMiBMZW5ndGggKTsKK3MzMiBFbmNhcEF0b21pY0luYyggIFBBREFQVEVSIEFkYXB0ZXIsICB2b2lkKiBwQXRvbWljICk7CitzMzIgRW5jYXBBdG9taWNEZWMoICBQQURBUFRFUiBBZGFwdGVyLCAgdm9pZCogcEF0b21pYyApOwordm9pZCBXQkxpbnV4X1JlY2VpdmVQYWNrZXQoICBQQURBUFRFUiBBZGFwdGVyLCAgUFJYTEFZRVIxIHBSeExheWVyMSApOwordW5zaWduZWQgY2hhciBXQkxJTlVYX0luaXRpYWwoICBQQURBUFRFUiBBZGFwdGVyICk7CitpbnQgd2IzNV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgKTsKK3ZvaWQgV0JMSU5VWF9HZXROZXh0UGFja2V0KCAgUEFEQVBURVIgQWRhcHRlciwgIFBERVNDUklQVE9SIHBEZXMgKTsKK3ZvaWQgV0JMSU5VWF9HZXROZXh0UGFja2V0Q29tcGxldGVkKCAgUEFEQVBURVIgQWRhcHRlciwgIFBERVNDUklQVE9SIHBEZXMgKTsKK3ZvaWQgV0JMSU5VWF9zdG9wKCAgUEFEQVBURVIgQWRhcHRlciApOwordm9pZCBXQkxJTlVYX0Rlc3Ryb3koICBQQURBUFRFUiBBZGFwdGVyICk7Cit2b2lkIHdiMzVfc2V0X211bHRpY2FzdCggc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiApOworc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKiB3YjM1X25ldGRldl9zdGF0cyggc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiApOwordm9pZCBXQkxJTlVYX3N0b3AoICBQQURBUFRFUiBBZGFwdGVyICk7Cit2b2lkIFdiV2xhbkhhbHQoICBQQURBUFRFUiBBZGFwdGVyICk7Cit2b2lkIFdCTElOVVhfQ29ubmVjdFN0YXR1cyggIFBBREFQVEVSIEFkYXB0ZXIsICB1MzIgZmxhZyApOworCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JsaW51eF9zLmggYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC93YmxpbnV4X3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U5MTY3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvd2JsaW51eF9zLmgKQEAgLTAsMCArMSw0NSBAQAorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIHdibGludXhfcy5oCisvLworI2RlZmluZSBPU19NRU1PUllfQUxMT0MoIF9WLCBfUyApCVdCTElOVVhfTWVtb3J5QWxsb2MoIF9WLCBfUyApCisjZGVmaW5lIE9TX0xJTktfU1RBVFVTCQkJKEFkYXB0ZXItPldiTGludXguTGlua1N0YXR1cyA9PSBPU19DT05ORUNURUQpCisjZGVmaW5lIE9TX1NFVF9TSFVURE9XTiggX0EgKQkJX0EtPldiTGludXguc2h1dGRvd249MQorI2RlZmluZSBPU19TRVRfUkVTVU1FKCBfQSApCQlfQS0+V2JMaW51eC5zaHV0ZG93bj0wCisjZGVmaW5lIE9TX0NPTk5FQ1RfU1RBVFVTX0lORElDQVRFKCBfQSwgX0YgKQkJV0JMSU5VWF9Db25uZWN0U3RhdHVzKCBfQSwgX0YgKQorI2RlZmluZSBPU19ESVNDT05ORUNURUQJMAorI2RlZmluZSBPU19DT05ORUNURUQJMQorI2RlZmluZSBPU19TVE9QKCBfQSApCVdCTElOVVhfc3RvcCggX0EgKQorCisjZGVmaW5lIE9TX0NVUlJFTlRfUlhfQllURSggX0EgKQkJX0EtPldiTGludXguUnhCeXRlQ291bnQKKyNkZWZpbmUgT1NfQ1VSUkVOVF9UWF9CWVRFKCBfQSApCQlfQS0+V2JMaW51eC5UeEJ5dGVDb3VudAorI2RlZmluZSBPU19FVkVOVF9JTkRJQ0FURSggX0EsIF9CLCBfRiApCisjZGVmaW5lIE9TX1BNS0lEX1NUQVRVU19FVkVOVCggX0EgKQorI2RlZmluZSBPU19SRUNFSVZFX1BBQ0tFVF9JTkRJQ0FURSggX0EsIF9EICkJCVdCTGludXhfUmVjZWl2ZVBhY2tldCggX0EsIF9EICkKKyNkZWZpbmUgT1NfUkVDRUlWRV84MDJfMVhfUEFDS0VUX0lORElDQVRFKCBfQSwgX0QgKQlFQVBfUmVjZWl2ZVBhY2tldCggX0EsIF9EICkKKyNkZWZpbmUgT1NfR0VUX1BBQ0tFVCggX0EsIF9EICkJCQkJV0JMSU5VWF9HZXROZXh0UGFja2V0KCBfQSwgX0QgKQorI2RlZmluZSBPU19HRVRfUEFDS0VUX0NPTVBMRVRFKCBfQSwgX0QgKQlXQkxJTlVYX0dldE5leHRQYWNrZXRDb21wbGV0ZWQoIF9BLCBfRCApCisjZGVmaW5lIE9TX1NFTkRfUkVTVUxUKCBfQSwgX0lELCBfUiApCisKKyNkZWZpbmUgV0JMSU5VWF9QQUNLRVRfQVJSQVlfU0laRQkoRVRIRVJORVRfVFhfREVTQ1JJUFRPUlMqNCkKKwordHlwZWRlZiBzdHJ1Y3QgX1dCTElOVVgKK3sKKwlPU19TUElOX0xPQ0sJQXRvbWljU3BpbkxvY2s7CisJT1NfU1BJTl9MT0NLCVNwaW5Mb2NrOworCXUzMglzaHV0ZG93bjsKKworCU9TX0FUT01JQwlUaHJlYWRDb3VudDsKKworCXUzMglMaW5rU3RhdHVzOwkJLy8gT1NfRElTQ09OTkVDVEVEIG9yIE9TX0NPTk5FQ1RFRAorCisJdTMyCVJ4Qnl0ZUNvdW50OworCXUzMglUeEJ5dGVDb3VudDsKKworCXN0cnVjdCBza19idWZmICpza2JfYXJyYXlbIFdCTElOVVhfUEFDS0VUX0FSUkFZX1NJWkUgXTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqcGFja2V0X3JldHVybjsKKwlzMzIJc2tiX1NldEluZGV4OworCXMzMglza2JfR2V0SW5kZXg7CisJczMyCW5ldGlmX3N0YXRlX3N0b3A7IC8vIDE6IHN0b3AgIDA6IG5vcm1hbAorfSBXQkxJTlVYLCAqUFdCTElOVVg7CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiMWYwZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL0tjb25maWcKQEAgLTAsMCArMSwxMCBAQAorY29uZmlnIFBSSVNNMl9VU0IKKwl0cmlzdGF0ZSAiUHJpc20yLjUgVVNCIGRyaXZlciIKKwlkZXBlbmRzIG9uIFVTQgorCWRlZmF1bHQgbgorCS0tLWhlbHAtLS0KKwkgIFRoaXMgaXMgdGhlIHdsYW4tbmcgcHJpc20gMi41IFVTQiBkcml2ZXIgZm9yIGEgd2lkZSByYW5nZSBvZgorCSAgb2xkIFVTQiB3aXJlbGVzcyBkZXZpY2VzLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCisJICB3aWxsIGJlIGNhbGxlZCBwcmlzbTJfdXNiLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzdiNTExCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvTWFrZWZpbGUKQEAgLTAsMCArMSw5IEBACitvYmotJChDT05GSUdfUFJJU00yX1VTQikgKz0gcHJpc20yX3VzYi5vCitvYmotJChDT05GSUdfUFJJU00yX1VTQikgKz0gcDgwMjExLm8KKworcDgwMjExLW9ianMgOj0gcDgwMjExbW9kLm8gXAorCQlwODAyMTFjb252Lm8gXAorCQlwODAyMTFyZXEubyBcCisJCXA4MDIxMXdlcC5vIFwKKwkJcDgwMjExd2V4dC5vIFwKKwkJcDgwMjExbmV0ZGV2Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTBlNGViCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvUkVBRE1FCkBAIC0wLDAgKzEsOCBAQAorVE9ETzoKKwktIGNoZWNrcGF0Y2gucGwgY2xlYW51cHMKKwktIHNwYXJzZSB3YXJuaW5ncworCS0gTGluZGVudCBjbGVhbnVwcworCS0gbW92ZSB0byB1c2UgdGhlIGluLWtlcm5lbCB3aXJlbGVzcyBzdGFjaworCS0gcG9zc2libGUgZW5hYmxlIHRoZSBwY21jaWEgYW5kIHBjaSBwb3J0aW9ucyBvZiB0aGUgZHJpdmVyCisKK1BsZWFzZSBzZW5kIGFsbCBwYXRjaGVzIHRvIEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9oZmEzODR4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9oZmEzODR4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRkZjNmZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL2hmYTM4NHguYwpAQCAtMCwwICsxLDQwMTggQEAKKy8qIHNyYy9wcmlzbTIvZHJpdmVyL2hmYTM4NHguYworKgorKiBJbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgb2YgdGhlIEludGVyc2lsIGhmYTM4NHggTUFDCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHByaXNtMi9oZmEzODR4CisqIDgwMi4xMSBNQUMgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGhvc3QgaW50ZXJmYWNlLgorKgorKiBUaGUgZnVuY3Rpb25zIGNhbiBiZSBjb25zaWRlcmVkIHRvIHJlcHJlc2VudCBzZXZlcmFsIGxldmVscyBvZgorKiBhYnN0cmFjdGlvbi4gIFRoZSBsb3dlc3QgbGV2ZWwgZnVuY3Rpb25zIGFyZSBzaW1wbHkgQy1jYWxsYWJsZSB3cmFwcGVycworKiBhcm91bmQgdGhlIHJlZ2lzdGVyIGFjY2Vzc2VzLiAgVGhlIG5leHQgaGlnaGVyIGxldmVsIHJlcHJlc2VudHMgQy1jYWxsYWJsZQorKiBwcmlzbTIgQVBJIGZ1bmN0aW9ucyB0aGF0IG1hdGNoIHRoZSBJbnRlcnNpbCBkb2N1bWVudGF0aW9uIGFzIGNsb3NlbHkKKyogYXMgaXMgcmVhc29uYWJsZS4gIFRoZSBuZXh0IGhpZ2hlciBsYXllciBpbXBsZW1lbnRzIGNvbW1vbiBzZXF1ZW5jZXMKKyogb2YgaW52b2thdGlvbnMgb2YgdGhlIEFQSSBsYXllciAoZS5nLiB3cml0ZSB0byBiYXAsIGZvbGxvd2VkIGJ5IGNtZCkuCisqCisqIENvbW1vbiBzZXF1ZW5jZXM6CisqIGhmYTM4NHhfZHJ2cl94eHgJSGlnaGVzdCBsZXZlbCBhYnN0cmFjdGlvbnMgcHJvdmlkZWQgYnkgdGhlCisqCQkJaGZhMzg0eCBjb2RlLiAgVGhleSBhcmUgZHJpdmVyIGRlZmluZWQgd3JhcHBlcnMKKyoJCQlmb3IgY29tbW9uIHNlcXVlbmNlcy4gIFRoZXNlIGZ1bmN0aW9ucyBnZW5lcmFsbHkKKyoJCQl1c2UgdGhlIHNlcnZpY2VzIG9mIHRoZSBsb3dlciBsZXZlbHMuCisqCisqIGhmYTM4NHhfZHJ2cl94eHhjb25maWcgIEFuIGV4YW1wbGUgb2YgdGhlIGRydnIgbGV2ZWwgYWJzdHJhY3Rpb24uIFRoZXNlCisqCQkJZnVuY3Rpb25zIGFyZSB3cmFwcGVycyBmb3IgdGhlIFJJRCBnZXQvc2V0CisqCQkJc2VxdWVuY2UuIFRoZXkgCWNhbGwgY29weV9bdG98ZnJvbV1fYmFwKCkgYW5kCisqCQkJY21kX2FjY2VzcygpLglUaGVzZSBmdW5jdGlvbnMgb3BlcmF0ZSBvbiB0aGUKKyoJCQlSSURzIGFuZCBidWZmZXJzIHdpdGhvdXQgdmFsaWRhdGlvbi4gIFRoZSBjYWxsZXIKKyoJCQlpcyByZXNwb25zaWJsZSBmb3IgdGhhdC4KKyoKKyogQVBJIHdyYXBwZXIgZnVuY3Rpb25zOgorKiBoZmEzODR4X2NtZF94eHgJZnVuY3Rpb25zIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGYvdyBjb21tYW5kcy4KKyoJCQlUaGUgZnVuY3Rpb24gYXJndW1lbnRzIGNvcnJlc3BvbmQgdG8gZWFjaCBjb21tYW5kCisqCQkJYXJndW1lbnQsIGV2ZW4gY29tbWFuZCBhcmd1bWVudHMgdGhhdCBnZXQgcGFja2VkCisqCQkJaW50byBzaW5nbGUgcmVnaXN0ZXJzLiAgVGhlc2UgZnVuY3Rpb25zIF9qdXN0XworKgkJCWlzc3VlIHRoZSBjb21tYW5kIGJ5IHNldHRpbmcgdGhlIGNtZC9wYXJtIHJlZ3MKKyoJCQkmIHJlYWRpbmcgdGhlIHN0YXR1cy9yZXNwIHJlZ3MuICBBZGRpdGlvbmFsCisqCQkJYWN0aXZpdGllcyByZXF1aXJlZCB0byBmdWxseSB1c2UgYSBjb21tYW5kCisqCQkJKHJlYWQvd3JpdGUgZnJvbS90byBiYXAsIGdldC9zZXQgaW50IHN0YXR1cyBldGMuKQorKgkJCWFyZSBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5LiAgVGhpbmsgb2YgdGhlc2UgYXMKKyoJCQlDLWNhbGxhYmxlIHByaXNtMiBjb21tYW5kcy4KKyoKKyogTG93ZXN0IExheWVyIEZ1bmN0aW9uczoKKyogaGZhMzg0eF9kb2NtZF94eHgJVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgc2VxdWVuY2UgcmVxdWlyZWQKKyoJCQl0byBpc3N1ZSBhbnkgcHJpc20yIGNvbW1hbmQuICBQcmltYXJpbHkgdXNlZCBieSB0aGUKKyoJCQloZmEzODR4X2NtZF94eHggZnVuY3Rpb25zLgorKgorKiBoZmEzODR4X2JhcF94eHgJQkFQIHJlYWQvd3JpdGUgYWNjZXNzIGZ1bmN0aW9ucy4KKyoJCQlOb3RlOiB3ZSB1c3VhbGx5IHVzZSBCQVAwIGZvciBub24taW50ZXJydXB0IGNvbnRleHQKKyoJCQkgYW5kIEJBUDEgZm9yIGludGVycnVwdCBjb250ZXh0LgorKgorKiBoZmEzODR4X2RsX3h4eAlkb3dubG9hZCByZWxhdGVkIGZ1bmN0aW9ucy4KKyoKKyogRHJpdmVyIFN0YXRlIElzc3VlczoKKyogTm90ZSB0aGF0IHRoZXJlIGFyZSB0d28gcGFpcnMgb2YgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIHRoZQorKiAnaW5pdGlhbGl6ZWQnIGFuZCAncnVubmluZycgc3RhdGVzIG9mIHRoZSBody9NQUMgY29tYm8uICBUaGUgZm91cgorKiBmdW5jdGlvbnMgYXJlIGNyZWF0ZSgpLCBkZXN0cm95KCksIHN0YXJ0KCksIGFuZCBzdG9wKCkuICBjcmVhdGUoKQorKiBzZXRzIHVwIHRoZSBkYXRhIHN0cnVjdHVyZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgaGZhMzg0eF8qCisqIGZ1bmN0aW9ucyBhbmQgZGVzdHJveSgpIGNsZWFucyB0aGVtIHVwLiAgVGhlIHN0YXJ0KCkgZnVuY3Rpb24gZ2V0cworKiB0aGUgYWN0dWFsIGhhcmR3YXJlIHJ1bm5pbmcgYW5kIGVuYWJsZXMgdGhlIGludGVycnVwdHMuICBUaGUgc3RvcCgpCisqIGZ1bmN0aW9uIHNodXRzIHRoZSBoYXJkd2FyZSBkb3duLiAgVGhlIHNlcXVlbmNlIHNob3VsZCBiZToKKyogY3JlYXRlKCkKKyogIC4KKyogIC4gIFNlbGYgY29udGFpbmVkIHRlc3Qgcm91dGluZXMgY2FuIHJ1biBoZXJlLCBwYXJ0aWN1bGFybHkKKyogIC4gIGNvcmVyZXNldCgpIGFuZCB0ZXN0X2hvc3RpZigpLgorKiAgLgorKiBzdGFydCgpCisqICAuCisqICAuICBEbyBpbnRlcmVzdGluZyB0aGluZ3Mgdy8gdGhlIGhhcmR3YXJlCisqICAuCisqIHN0b3AoKQorKiBkZXN0cm95KCkKKyoKKyogTm90ZSB0aGF0IGRlc3Ryb3koKSBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgY2FsbGluZyBzdG9wKCkgZmlyc3QuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKyNkZWZpbmUgV0xBTl9EQlZBUglwcmlzbTJfZGVidWcKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDApKQorI2luY2x1ZGUgPGxpbnV4L3RxdWV1ZS5oPgorI2Vsc2UKKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KKyNlbmRpZgorCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKQorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTMpICkKKyNpbmNsdWRlIDxwY21jaWEvdmVyc2lvbi5oPgorI2VuZGlmCisjaW5jbHVkZSA8cGNtY2lhL2NzX3R5cGVzLmg+CisjaW5jbHVkZSA8cGNtY2lhL2NzLmg+CisjaW5jbHVkZSA8cGNtY2lhL2Npc3RwbC5oPgorI2luY2x1ZGUgPHBjbWNpYS9kcy5oPgorI2luY2x1ZGUgPHBjbWNpYS9jaXNyZWcuaD4KKyNlbmRpZgorCisjaWYgKChXTEFOX0hPU1RJRiA9PSBXTEFOX1BMWCkgfHwgKFdMQU5fSE9TVElGID09IFdMQU5fUENJKSkKKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKworLy8gWFhYWCAjZGVmaW5lIENNRF9JUlEKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFByb2plY3QgSW5jbHVkZXMgKi8KKworI2luY2x1ZGUgInA4MDIxMXR5cGVzLmgiCisjaW5jbHVkZSAicDgwMjExaGRyLmgiCisjaW5jbHVkZSAicDgwMjExbWdtdC5oIgorI2luY2x1ZGUgInA4MDIxMWNvbnYuaCIKKyNpbmNsdWRlICJwODAyMTFtc2cuaCIKKyNpbmNsdWRlICJwODAyMTFuZXRkZXYuaCIKKyNpbmNsdWRlICJwODAyMTFyZXEuaCIKKyNpbmNsdWRlICJwODAyMTFtZXRhZGVmLmgiCisjaW5jbHVkZSAicDgwMjExbWV0YXN0cnVjdC5oIgorI2luY2x1ZGUgImhmYTM4NHguaCIKKyNpbmNsdWRlICJwcmlzbTJtZ210LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBDb25zdGFudHMgKi8KKworc3RhdGljIGNvbnN0IFVJTlQxNiBjcmMxNnRhYlsyNTZdID0KK3sKKwkweDAwMDAsIDB4YzBjMSwgMHhjMTgxLCAweDAxNDAsIDB4YzMwMSwgMHgwM2MwLCAweDAyODAsIDB4YzI0MSwKKwkweGM2MDEsIDB4MDZjMCwgMHgwNzgwLCAweGM3NDEsIDB4MDUwMCwgMHhjNWMxLCAweGM0ODEsIDB4MDQ0MCwKKwkweGNjMDEsIDB4MGNjMCwgMHgwZDgwLCAweGNkNDEsIDB4MGYwMCwgMHhjZmMxLCAweGNlODEsIDB4MGU0MCwKKwkweDBhMDAsIDB4Y2FjMSwgMHhjYjgxLCAweDBiNDAsIDB4YzkwMSwgMHgwOWMwLCAweDA4ODAsIDB4Yzg0MSwKKwkweGQ4MDEsIDB4MThjMCwgMHgxOTgwLCAweGQ5NDEsIDB4MWIwMCwgMHhkYmMxLCAweGRhODEsIDB4MWE0MCwKKwkweDFlMDAsIDB4ZGVjMSwgMHhkZjgxLCAweDFmNDAsIDB4ZGQwMSwgMHgxZGMwLCAweDFjODAsIDB4ZGM0MSwKKwkweDE0MDAsIDB4ZDRjMSwgMHhkNTgxLCAweDE1NDAsIDB4ZDcwMSwgMHgxN2MwLCAweDE2ODAsIDB4ZDY0MSwKKwkweGQyMDEsIDB4MTJjMCwgMHgxMzgwLCAweGQzNDEsIDB4MTEwMCwgMHhkMWMxLCAweGQwODEsIDB4MTA0MCwKKwkweGYwMDEsIDB4MzBjMCwgMHgzMTgwLCAweGYxNDEsIDB4MzMwMCwgMHhmM2MxLCAweGYyODEsIDB4MzI0MCwKKwkweDM2MDAsIDB4ZjZjMSwgMHhmNzgxLCAweDM3NDAsIDB4ZjUwMSwgMHgzNWMwLCAweDM0ODAsIDB4ZjQ0MSwKKwkweDNjMDAsIDB4ZmNjMSwgMHhmZDgxLCAweDNkNDAsIDB4ZmYwMSwgMHgzZmMwLCAweDNlODAsIDB4ZmU0MSwKKwkweGZhMDEsIDB4M2FjMCwgMHgzYjgwLCAweGZiNDEsIDB4MzkwMCwgMHhmOWMxLCAweGY4ODEsIDB4Mzg0MCwKKwkweDI4MDAsIDB4ZThjMSwgMHhlOTgxLCAweDI5NDAsIDB4ZWIwMSwgMHgyYmMwLCAweDJhODAsIDB4ZWE0MSwKKwkweGVlMDEsIDB4MmVjMCwgMHgyZjgwLCAweGVmNDEsIDB4MmQwMCwgMHhlZGMxLCAweGVjODEsIDB4MmM0MCwKKwkweGU0MDEsIDB4MjRjMCwgMHgyNTgwLCAweGU1NDEsIDB4MjcwMCwgMHhlN2MxLCAweGU2ODEsIDB4MjY0MCwKKwkweDIyMDAsIDB4ZTJjMSwgMHhlMzgxLCAweDIzNDAsIDB4ZTEwMSwgMHgyMWMwLCAweDIwODAsIDB4ZTA0MSwKKwkweGEwMDEsIDB4NjBjMCwgMHg2MTgwLCAweGExNDEsIDB4NjMwMCwgMHhhM2MxLCAweGEyODEsIDB4NjI0MCwKKwkweDY2MDAsIDB4YTZjMSwgMHhhNzgxLCAweDY3NDAsIDB4YTUwMSwgMHg2NWMwLCAweDY0ODAsIDB4YTQ0MSwKKwkweDZjMDAsIDB4YWNjMSwgMHhhZDgxLCAweDZkNDAsIDB4YWYwMSwgMHg2ZmMwLCAweDZlODAsIDB4YWU0MSwKKwkweGFhMDEsIDB4NmFjMCwgMHg2YjgwLCAweGFiNDEsIDB4NjkwMCwgMHhhOWMxLCAweGE4ODEsIDB4Njg0MCwKKwkweDc4MDAsIDB4YjhjMSwgMHhiOTgxLCAweDc5NDAsIDB4YmIwMSwgMHg3YmMwLCAweDdhODAsIDB4YmE0MSwKKwkweGJlMDEsIDB4N2VjMCwgMHg3ZjgwLCAweGJmNDEsIDB4N2QwMCwgMHhiZGMxLCAweGJjODEsIDB4N2M0MCwKKwkweGI0MDEsIDB4NzRjMCwgMHg3NTgwLCAweGI1NDEsIDB4NzcwMCwgMHhiN2MxLCAweGI2ODEsIDB4NzY0MCwKKwkweDcyMDAsIDB4YjJjMSwgMHhiMzgxLCAweDczNDAsIDB4YjEwMSwgMHg3MWMwLCAweDcwODAsIDB4YjA0MSwKKwkweDUwMDAsIDB4OTBjMSwgMHg5MTgxLCAweDUxNDAsIDB4OTMwMSwgMHg1M2MwLCAweDUyODAsIDB4OTI0MSwKKwkweDk2MDEsIDB4NTZjMCwgMHg1NzgwLCAweDk3NDEsIDB4NTUwMCwgMHg5NWMxLCAweDk0ODEsIDB4NTQ0MCwKKwkweDljMDEsIDB4NWNjMCwgMHg1ZDgwLCAweDlkNDEsIDB4NWYwMCwgMHg5ZmMxLCAweDllODEsIDB4NWU0MCwKKwkweDVhMDAsIDB4OWFjMSwgMHg5YjgxLCAweDViNDAsIDB4OTkwMSwgMHg1OWMwLCAweDU4ODAsIDB4OTg0MSwKKwkweDg4MDEsIDB4NDhjMCwgMHg0OTgwLCAweDg5NDEsIDB4NGIwMCwgMHg4YmMxLCAweDhhODEsIDB4NGE0MCwKKwkweDRlMDAsIDB4OGVjMSwgMHg4ZjgxLCAweDRmNDAsIDB4OGQwMSwgMHg0ZGMwLCAweDRjODAsIDB4OGM0MSwKKwkweDQ0MDAsIDB4ODRjMSwgMHg4NTgxLCAweDQ1NDAsIDB4ODcwMSwgMHg0N2MwLCAweDQ2ODAsIDB4ODY0MSwKKwkweDgyMDEsIDB4NDJjMCwgMHg0MzgwLCAweDgzNDEsIDB4NDEwMCwgMHg4MWMxLCAweDgwODEsIDB4NDA0MAorfTsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIE1hY3JvcyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgVHlwZXMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFN0YXRpYyBEZWZpbml0aW9ucyAqLworZXh0ZXJuIGludCBwcmlzbTJfZGVidWc7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworc3RhdGljIHZvaWQJaGZhMzg0eF9pbnRfZHRpbSh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworc3RhdGljIHZvaWQJaGZhMzg0eF9pbnRfaW5mZHJvcCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworCitzdGF0aWMgdm9pZCAgICAgaGZhMzg0eF9iYXBfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOworCitzdGF0aWMgdm9pZAloZmEzODR4X2ludF9pbmZvKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CitzdGF0aWMgdm9pZAloZmEzODR4X2ludF90eGV4Yyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworc3RhdGljIHZvaWQJaGZhMzg0eF9pbnRfdHgod2xhbmRldmljZV90ICp3bGFuZGV2KTsKK3N0YXRpYyB2b2lkCWhmYTM4NHhfaW50X3J4KHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CisKKyNpZmRlZiBDTURfSVJRCitzdGF0aWMgdm9pZAloZmEzODR4X2ludF9jbWQod2xhbmRldmljZV90ICp3bGFuZGV2KTsKKyNlbmRpZgorc3RhdGljIHZvaWQJaGZhMzg0eF9pbnRfcnhtb25pdG9yKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQlVSU5UMTYgcnhmaWQsIGhmYTM4NHhfcnhfZnJhbWVfdCAqcnhkZXNjKTsKK3N0YXRpYyB2b2lkCWhmYTM4NHhfaW50X2FsbG9jKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CisKK3N0YXRpYyBpbnQgaGZhMzg0eF9kb2NtZF93YWl0KCBoZmEzODR4X3QgKmh3LCBoZmEzODR4X21ldGFjbWRfdCAqY21kKTsKKworc3RhdGljIGludCBoZmEzODR4X2RsX2RvY21kX3dhaXQoIGhmYTM4NHhfdCAqaHcsIGhmYTM4NHhfbWV0YWNtZF90ICpjbWQpOworCitzdGF0aWMgVUlOVDE2CitoZmEzODR4X21rY3JjMTYoVUlOVDggKnAsIGludCBsZW4pOworCitpbnQgaGZhMzg0eF9jb3B5X3RvX2JhcDQoaGZhMzg0eF90ICpodywgVUlOVDE2IGJhcCwgVUlOVDE2IGlkLCBVSU5UMTYgb2Zmc2V0LAorCQkJIHZvaWQgKmJ1ZiwgVUlOVCBsZW4sIHZvaWQqIGJ1ZjIsIFVJTlQgbGVuMiwKKwkJCSB2b2lkICpidWYzLCBVSU5UIGxlbjMsIHZvaWQqIGJ1ZjQsIFVJTlQgbGVuNCk7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWZpbml0aW9ucyAqLworCitzdGF0aWMgVUlOVDE2Cit0eGZpZF9xdWV1ZV9lbXB0eShoZmEzODR4X3QgKmh3KQoreworCXJldHVybiAoaHctPnR4ZmlkX2hlYWQgPT0gaHctPnR4ZmlkX3RhaWwpID8gMSA6IDA7Cit9CisKK3N0YXRpYyBVSU5UMTYKK3R4ZmlkX3F1ZXVlX3JlbW92ZShoZmEzODR4X3QgKmh3KQoreworCVVJTlQxNiByZXN1bHQ9IDA7CisKKwlpZiAodHhmaWRfcXVldWVfZW1wdHkoaHcpKSB7CisJCVdMQU5fTE9HX0RFQlVHKDMsInF1ZXVlIGVtcHR5LlxuIik7CisJfSBlbHNlIHsKKwkJcmVzdWx0ID0gaHctPnR4ZmlkX3F1ZXVlW2h3LT50eGZpZF9oZWFkXTsKKwkJaHctPnR4ZmlkX2hlYWQgPSAoaHctPnR4ZmlkX2hlYWQgKyAxKSAlIGh3LT50eGZpZF9OOworCX0KKworCXJldHVybiAoVUlOVDE2KXJlc3VsdDsKK30KKworc3RhdGljIElOVDE2Cit0eGZpZF9xdWV1ZV9hZGQoaGZhMzg0eF90ICpodywgVUlOVDE2IHZhbCkKK3sKKwlJTlQxNiByZXN1bHQgPSAwOworCisJaWYgKGh3LT50eGZpZF9oZWFkID09ICgoaHctPnR4ZmlkX3RhaWwgKyAxKSAlIGh3LT50eGZpZF9OKSkgeworCQlyZXN1bHQgPSAtMTsKKwkJV0xBTl9MT0dfREVCVUcoMywicXVldWUgZnVsbC5cbiIpOworCX0gZWxzZSB7CisJCWh3LT50eGZpZF9xdWV1ZVtody0+dHhmaWRfdGFpbF0gPSB2YWw7CisJCXJlc3VsdCA9IGh3LT50eGZpZF90YWlsOworCQlody0+dHhmaWRfdGFpbCA9IChody0+dHhmaWRfdGFpbCArIDEpICUgaHctPnR4ZmlkX047CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY3JlYXRlCisqCisqIEluaXRpYWxpemVzIHRoZSBoZmEzODR4X3QgZGF0YSBzdHJ1Y3R1cmUgZm9yIHVzZS4gIE5vdGUgdGhpcworKiBkb2VzIF9ub3RfIGludGlhbGl6ZSB0aGUgYWN0dWFsIGhhcmR3YXJlLCBqdXN0IHRoZSBkYXRhIHN0cnVjdHVyZXMKKyogd2UgdXNlIHRvIGtlZXAgdHJhY2sgb2YgaXRzIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWlycQkJZGV2aWNlIGlycSBudW1iZXIKKyoJaW9iYXNlCQlbcGNtY2lhXSBpL28gYmFzZSBhZGRyZXNzIGZvciByZWdpc3RlciBhY2Nlc3MKKyoJCQlbcGNpXSB6ZXJvCisqCQkJW3BseF0gaS9vIGJhc2UgYWRkcmVzcyBmb3IgcmVnaXN0ZXIgYWNjZXNzCisqCW1lbWJhc2UJCVtwY21jaWFdIHBjbWNpYV9jcyAibGluayIgcG9pbnRlcgorKgkJCVtwY2ldIG1lbW9yeSBiYXNlIGFkZHJlc3MgZm9yIHJlZ2lzdGVyIGFjY2VzcworKgkJCVtwbHhdIG1lbW9yeSBiYXNlIGFkZHJlc3MgZm9yIGNhcmQgYXR0cmlidXRlIG1lbW9yeQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIGhmYTM4NHhfY3JlYXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQgaXJxLCBVSU5UMzIgaW9iYXNlLAorCQkgICAgVUlOVDggX19pb21lbSAqbWVtYmFzZSkKK3sKKwlEQkZFTlRFUjsKKwltZW1zZXQoaHcsIDAsIHNpemVvZihoZmEzODR4X3QpKTsKKwlody0+aXJxID0gaXJxOworCWh3LT5pb2Jhc2UgPSBpb2Jhc2U7CisJaHctPm1lbWJhc2UgPSBtZW1iYXNlOworCXNwaW5fbG9ja19pbml0KCYoaHctPmNtZGxvY2spKTsKKworCS8qIEJBUCBzZXR1cCAqLworIAlzcGluX2xvY2tfaW5pdCgmKGh3LT5iYXBsb2NrKSk7CisJdGFza2xldF9pbml0KCZody0+YmFwX3Rhc2tsZXQsCisJCSAgICAgaGZhMzg0eF9iYXBfdGFza2xldCwKKwkJICAgICAodW5zaWduZWQgbG9uZykgaHcpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmaHctPmNtZHEpOworCXNlbWFfaW5pdCgmaHctPmluZm9maWRfc2VtLCAxKTsKKworICAgICAgICBody0+dHhmaWRfaGVhZCA9IDA7CisgICAgICAgIGh3LT50eGZpZF90YWlsID0gMDsKKyAgICAgICAgaHctPnR4ZmlkX04gPSBIRkEzODR4X0RSVlJfRklEU1RBQ0tMRU5fTUFYOworICAgICAgICBtZW1zZXQoaHctPnR4ZmlkX3F1ZXVlLCAwLCBzaXplb2YoaHctPnR4ZmlkX3F1ZXVlKSk7CisKKwlody0+aXNyYW0xNiA9IDE7CisKKwkvKiBJbml0IHRoZSBhdXRoIHF1ZXVlIGhlYWQgKi8KKwlza2JfcXVldWVfaGVhZF9pbml0KCZody0+YXV0aHEpOworCisJSU5JVF9XT1JLMigmaHctPmxpbmtfYmgsIHByaXNtMnN0YV9wcm9jZXNzaW5nX2RlZmVyKTsKKworICAgICAgICBJTklUX1dPUksyKCZody0+Y29tbXNxdWFsX2JoLCBwcmlzbTJzdGFfY29tbXNxdWFsX2RlZmVyKTsKKworCWluaXRfdGltZXIoJmh3LT5jb21tc3F1YWxfdGltZXIpOworCWh3LT5jb21tc3F1YWxfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBodzsKKwlody0+Y29tbXNxdWFsX3RpbWVyLmZ1bmN0aW9uID0gcHJpc20yc3RhX2NvbW1zcXVhbF90aW1lcjsKKworCWh3LT5saW5rX3N0YXR1cyA9IEhGQTM4NHhfTElOS19OT1RDT05ORUNURUQ7CisJaHctPnN0YXRlID0gSEZBMzg0eF9TVEFURV9JTklUOworCisJREJGRVhJVDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZGVzdHJveQorKgorKiBQYXJ0bmVyIHRvIGhmYTM4NHhfY3JlYXRlKCkuICBUaGlzIGZ1bmN0aW9uIGNsZWFucyB1cCB0aGUgaHcKKyogc3RydWN0dXJlIHNvIHRoYXQgaXQgY2FuIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgdXNpbmcgYSBzaW1wbGUKKyoga2ZyZWUuICBDdXJyZW50bHksIHRoaXMgZnVuY3Rpb24gaXMganVzdCBhIHBsYWNlaG9sZGVyLiAgSWYsIGF0IHNvbWUKKyogcG9pbnQgaW4gdGhlIGZ1dHVyZSwgYW4gaHcgaW4gdGhlICdzaHV0ZG93bicgc3RhdGUgcmVxdWlyZXMgYSAnZGVlcCcKKyoga2ZyZWUsIHRoaXMgaXMgd2hlcmUgaXQgc2hvdWxkIGJlIGRvbmUuICBOb3RlIHRoYXQgaWYgdGhpcyBmdW5jdGlvbgorKiBpcyBjYWxsZWQgb24gYSBfcnVubmluZ18gaHcgc3RydWN0dXJlLCB0aGUgZHJ2cl9zdG9wKCkgZnVuY3Rpb24gaXMKKyogY2FsbGVkLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcsIHRoaXMgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gZmFpbC4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZAoraGZhMzg0eF9kZXN0cm95KCBoZmEzODR4X3QgKmh3KQoreworCXN0cnVjdCBza19idWZmICpza2I7CisKKwlEQkZFTlRFUjsKKworCWlmICggaHctPnN0YXRlID09IEhGQTM4NHhfU1RBVEVfUlVOTklORyApIHsKKwkJaGZhMzg0eF9kcnZyX3N0b3AoaHcpOworCX0KKwlody0+c3RhdGUgPSBIRkEzODR4X1NUQVRFX1BSRUlOSVQ7CisKKwlpZiAoaHctPnNjYW5yZXN1bHRzKSB7CisJCWtmcmVlKGh3LT5zY2FucmVzdWx0cyk7CisJCWh3LT5zY2FucmVzdWx0cyA9IE5VTEw7CisJfQorCisgICAgICAgIC8qIE5vdyB0byBjbGVhbiBvdXQgdGhlIGF1dGggcXVldWUgKi8KKyAgICAgICAgd2hpbGUgKCAoc2tiID0gc2tiX2RlcXVldWUoJmh3LT5hdXRocSkpICkgeworICAgICAgICAgICAgICAgIGRldl9rZnJlZV9za2Ioc2tiKTsKKyAgICAgICAgfQorCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZ2V0Y29uZmlnCisqCisqIFBlcmZvcm1zIHRoZSBzZXF1ZW5jZSBuZWNlc3NhcnkgdG8gcmVhZCBhIGNvbmZpZy9pbmZvIGl0ZW0uCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJcmlkCQljb25maWcvaW5mbyByZWNvcmQgaWQgKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJaG9zdCBzaWRlIHJlY29yZCBidWZmZXIuICBVcG9uIHJldHVybiBpdCB3aWxsCisqCQkJY29udGFpbiB0aGUgYm9keSBwb3J0aW9uIG9mIHRoZSByZWNvcmQgKG1pbnVzIHRoZQorKgkJCVJJRCBhbmQgbGVuKS4KKyoJbGVuCQlidWZmZXIgbGVuZ3RoIChpbiBieXRlcywgc2hvdWxkIG1hdGNoIHJlY29yZCBsZW5ndGgpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCS1FTk9EQVRBIAlsZW5ndGggbWlzbWF0Y2ggYmV0d2VlbiBhcmd1bWVudCBhbmQgcmV0cmlldmVkCisqCQkJcmVjb3JkLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKQoreworCWludCAJCXJlc3VsdCA9IDA7CisJREJGRU5URVI7CisKKwlyZXN1bHQgPSBoZmEzODR4X2NtZF9hY2Nlc3MoIGh3LCAwLCByaWQsIGJ1ZiwgbGVuKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3NldGNvbmZpZworKgorKiBQZXJmb3JtcyB0aGUgc2VxdWVuY2UgbmVjZXNzYXJ5IHRvIHdyaXRlIGEgY29uZmlnL2luZm8gaXRlbS4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglyaWQJCWNvbmZpZy9pbmZvIHJlY29yZCBpZCAoaW4gaG9zdCBvcmRlcikKKyoJYnVmCQlob3N0IHNpZGUgcmVjb3JkIGJ1ZmZlcgorKglsZW4JCWJ1ZmZlciBsZW5ndGggKGluIGJ5dGVzKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKQoreworCWludAkJcmVzdWx0ID0gMDsKKwlEQkZFTlRFUjsKKworCXJlc3VsdCA9IGhmYTM4NHhfY21kX2FjY2VzcyggaHcsIDEsIHJpZCwgYnVmLCBsZW4pOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfcmVhZHBkYQorKgorKiBQZXJmb3JtcyB0aGUgc2VxdWVuY2UgdG8gcmVhZCB0aGUgUERBIHNwYWNlLiAgTm90ZSB0aGVyZSBpcyBubworKiBkcnZyX3dyaXRlcGRhKCkgZnVuY3Rpb24uICBXcml0aW5nIGEgUERBIGlzCisqIGdlbmVyYWxseSBpbXBsZW1lbnRlZCBieSBhIGNhbGxpbmcgY29tcG9uZW50IHZpYSBjYWxscyB0bworKiBjbWRfZG93bmxvYWQgYW5kIHdyaXRpbmcgdG8gdGhlIGZsYXNoIGRvd25sb2FkIGJ1ZmZlciB2aWEgdGhlCisqIGF1eCByZWdzLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWJ1ZgkJYnVmZmVyIHRvIHN0b3JlIFBEQSBpbgorKglsZW4JCWJ1ZmZlciBsZW5ndGgKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoJLUVUSU1FT1VUCXRpbW91dCB3YWl0aW5nIGZvciB0aGUgY21kIHJlZ3MgdG8gYmVjb21lCisqCQkJYXZhaWxhYmxlLCBvciB3YWl0aW5nIGZvciB0aGUgY29udHJvbCByZWcKKyoJCQl0byBpbmRpY2F0ZSB0aGUgQXV4IHBvcnQgaXMgZW5hYmxlZC4KKyoJLUVOT0RBVEEJdGhlIGJ1ZmZlciBkb2VzIE5PVCBjb250YWluIGEgdmFsaWQgUERBLgorKgkJCUVpdGhlciB0aGUgY2FyZCBQREEgaXMgYmFkLCBvciB0aGUgYXV4ZGF0YQorKgkJCXJlYWRzIGFyZSBnaXZpbmcgdXMgZ2FyYmFnZS4KKworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgb3Igbm9uLWNhcmQgaW50ZXJydXB0LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3JlYWRwZGEoaGZhMzg0eF90ICpodywgdm9pZCAqYnVmLCBVSU5UIGxlbikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJVUlOVDE2CQkqcGRhID0gYnVmOworCWludAkJcGRhb2sgPSAwOworCWludAkJbW9yZXBkcnMgPSAxOworCWludAkJY3VycnBkciA9IDA7CS8qIHdvcmQgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHBkciAqLworCWludAkJaTsKKwlVSU5UMTYJCXBkcmxlbjsJCS8qIHBkciBsZW5ndGggaW4gYnl0ZXMsIGhvc3Qgb3JkZXIgKi8KKwlVSU5UMTYJCXBkcmNvZGU7CS8qIHBkciBjb2RlLCBob3N0IG9yZGVyICovCisJVUlOVDE2CQljcmM7CisJVUlOVDE2CQlwZGFjcmM7CisJc3RydWN0IHBkYWxvYyB7CisJCVVJTlQzMgljYXJkYWRkcjsKKwkJVUlOVDE2CWF1eGN0bDsKKwl9IHBkYWxvY1tdID0KKwl7CisJCXsgSEZBMzg0Ml9QREFfQkFTRSwJCUhGQTM4NHhfQVVYX0NUTF9OVn0sCisJCXsgSEZBMzg0Ml9QREFfQkFTRSwJCUhGQTM4NHhfQVVYX0NUTF9FWFREU30sCisJCXsgSEZBMzg0MV9QREFfQkFTRSwJCUhGQTM4NHhfQVVYX0NUTF9OVn0sCisJCXsgSEZBMzg0MV9QREFfQkFTRSwJCUhGQTM4NHhfQVVYX0NUTF9FWFREU30sCisJCXsgSEZBMzg0MV9QREFfQk9HVVNfQkFTRSwJSEZBMzg0eF9BVVhfQ1RMX05WfQorCX07CisKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayBmb3IgYXV4IGF2YWlsYWJsZSAqLworCXJlc3VsdCA9IGhmYTM4NHhfY21kX2F1eF9lbmFibGUoaHcsIDApOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19ERUJVRygxLCJhdXhfZW5hYmxlKCkgZmFpbGVkLiByZXN1bHQ9JWRcbiIsIHJlc3VsdCk7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIFJlYWQgdGhlIHBkYSBmcm9tIGVhY2gga25vd24gYWRkcmVzcy4gICovCisJZm9yICggaSA9IDA7IGkgPCAoc2l6ZW9mKHBkYWxvYykvc2l6ZW9mKHBkYWxvY1swXSkpOyBpKyspIHsKKwkJV0xBTl9MT0dfREVCVUcoIDMsICJDaGVja2luZyBQREFAKDB4JTA4eCwlcylcbiIsCisJCQlwZGFsb2NbaV0uY2FyZGFkZHIsCisJCQlwZGFsb2NbaV0uYXV4Y3RsID09IEhGQTM4NHhfQVVYX0NUTF9OViA/CisJCQkiQ1RMX05WIiA6ICJDVExfRVhURFMiKTsKKworCQkvKiBDb3B5IGJ1ZnNpemUgYnl0ZXMgZnJvbSBvdXIgY3VycmVudCBwZGFsb2MgKi8KKwkJaGZhMzg0eF9jb3B5X2Zyb21fYXV4KGh3LAorCQkJcGRhbG9jW2ldLmNhcmRhZGRyLAorCQkJcGRhbG9jW2ldLmF1eGN0bCwKKwkJCWJ1ZiwKKwkJCWxlbik7CisKKwkJLyogVGVzdCBmb3IgZ2FyYmFnZSAqLworCQkvKiBUcmF2ZXJzZSB0aGUgUERSIGxpc3QgTG9va2luZyBmb3IgUERBLUVORCAqLworCQlwZGFvayA9IDE7CS8qIGludGlhbGx5IGFzc3VtZSBnb29kICovCisJCW1vcmVwZHJzID0gMTsKKwkJY3VycnBkciA9IDA7CisJCXdoaWxlICggcGRhb2sgJiYgbW9yZXBkcnMgKSB7CisJCQlwZHJsZW4gPSBoZmEzODR4Mmhvc3RfMTYocGRhW2N1cnJwZHJdKSAqIDI7CisJCQlwZHJjb2RlID0gaGZhMzg0eDJob3N0XzE2KHBkYVtjdXJycGRyKzFdKTsKKworCQkJLyogVGVzdCBmb3IgY29tcGxldGlvbiBhdCBFTkQgcmVjb3JkICovCisJCQlpZiAoIHBkcmNvZGUgPT0gSEZBMzg0eF9QRFJfRU5EX09GX1BEQSApIHsKKwkJCQlpZiAoIHBkcmxlbiA9PSA0ICkgeworCQkJCQltb3JlcGRycyA9IDA7CisJCQkJCS8qIENhbGN1bGF0ZSBDUkMtMTYgYW5kIGNvbXBhcmUgdG8gUERBCisJCQkJCSAqIHZhbHVlLiAgTm90ZSB0aGUgYWRkaXRpb24gb2YgMiB3b3JkcworCQkJCQkgKiBmb3IgRU5EUkVDLmxlbiBhbmQgRU5EUkVDLmNvZGUKKwkJCQkJICogZmllbGRzLgorCQkJCQkgKi8KKwkJCQkJY3JjID0gaGZhMzg0eF9ta2NyYzE2KCAoVUlOVDgqKXBkYSwKKwkJCQkJCShjdXJycGRyICsgMikgKiBzaXplb2YoVUlOVDE2KSk7CisJCQkJCXBkYWNyYyA9aGZhMzg0eDJob3N0XzE2KHBkYVtjdXJycGRyKzJdKTsKKwkJCQkJaWYgKCBjcmMgIT0gcGRhY3JjICkgeworCQkJCQkJV0xBTl9MT0dfREVCVUcoMywKKwkJCQkJCSJQREEgY3JjIGZhaWxlZDoiCisJCQkJCQkiY2FsY19jcmM9MHglMDR4LCIKKwkJCQkJCSJwZHJfY3JjPTB4JTA0eC5cbiIsCisJCQkJCQljcmMsIHBkYWNyYyk7CisJCQkJCQlwZGFvayA9IDA7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlXTEFOX0xPR19ERUJVRygzLAorCQkJCQkiRU5EIHJlY29yZCBkZXRlY3RlZCB3LyAiCisJCQkJCSJsZW4oJWQpICE9IDIsIGFzc3VtaW5nIGJhZCBQREFcbiIsCisJCQkJCXBkcmxlbik7CisJCQkJCXBkYW9rID0gMDsKKworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyogVGVzdCB0aGUgcmVjb3JkIGxlbmd0aCAqLworCQkJaWYgKCBwZHJsZW4gPiBIRkEzODR4X1BEUl9MRU5fTUFYIHx8IHBkcmxlbiA9PSAwKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMywKKwkJCQkJInBkcmxlbiBmb3IgYWRkcmVzcyAjJWQgIgorCQkJCQkiYXQgJSN4OiUjeDolZFxuIiwKKwkJCQkJaSwgcGRhbG9jW2ldLmNhcmRhZGRyLAorCQkJCQlwZGFsb2NbaV0uYXV4Y3RsLCBwZHJsZW4pOworCQkJCVdMQU5fTE9HX0RFQlVHKDMsInBkcmxlbiBpbnZhbGlkPSVkXG4iLAorCQkJCQlwZHJsZW4pOworCQkJCXBkYW9rID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyogTW92ZSB0byB0aGUgbmV4dCBwZHIgKi8KKwkJCWlmICggbW9yZXBkcnMgKSB7CisJCQkJLyogbm90ZSB0aGUgYWNjZXNzIHRvIHBkYVtdLCB3ZSBuZWVkIHdvcmRzICovCisJCQkJY3VycnBkciArPSBoZmEzODR4Mmhvc3RfMTYocGRhW2N1cnJwZHJdKSArIDE7CisJCQkJaWYgKGN1cnJwZHIqc2l6ZW9mKFVJTlQxNikgPiBsZW4pIHsKKwkJCQkJV0xBTl9MT0dfREVCVUcoMywKKwkJCQkJIkRpZG4ndCBmaW5kIFBEQV9FTkQgaW4gYnVmZmVyLCAiCisJCQkJCSJ0cnlpbmcgbmV4dCBsb2NhdGlvbi5cbiIpOworCQkJCQlwZGFvayA9IDA7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQlpZiAoIHBkYW9rICkgeworCQkJV0xBTl9MT0dfSU5GTygKKwkJCQkiUERBIFJlYWQgZnJvbSAweCUwOHggaW4gJXMgc3BhY2UuXG4iLAorCQkJCXBkYWxvY1tpXS5jYXJkYWRkciwKKwkJCQlwZGFsb2NbaV0uYXV4Y3RsID09IDAgPyAiRVhURFMiIDoKKwkJCQlwZGFsb2NbaV0uYXV4Y3RsID09IDEgPyAiTlYiIDoKKwkJCQlwZGFsb2NbaV0uYXV4Y3RsID09IDIgPyAiUEhZIiA6CisJCQkJcGRhbG9jW2ldLmF1eGN0bCA9PSAzID8gIklDU1JBTSIgOgorCQkJCSI8Ym9ndXMgYXV4Y3RsPiIpOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmVzdWx0ID0gcGRhb2sgPyAwIDogLUVOT0RBVEE7CisKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfREVCVUcoMywiRmFpbHVyZTogcGRhIGlzIG5vdCBva2F5XG4iKTsKKwl9CisKKwloZmEzODR4X2NtZF9hdXhfZGlzYWJsZShodyk7CitmYWlsZWQ6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIG1rcGRhX2NyYworKgorKiBDYWxjdWxhdGVzIHRoZSBDUkMxNiBmb3IgdGhlIGdpdmVuIFBEQSBhbmQgaW5zZXJ0cyB0aGUgdmFsdWUKKyogaW50byB0aGUgZW5kIHJlY29yZC4KKyoKKyogQXJndW1lbnRzOgorKglwZGEJcHRyIHRvIHRoZSBQREEgZGF0YSBzdHJ1Y3R1cmUuCisqCisqIFJldHVybnM6CisqCTAJLSBzdWNjZXNzCisqCX4wCS0gZmFpbHVyZSAocHJvYmFibHkgYW4gZXJybm8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBVSU5UMTYKK2hmYTM4NHhfbWtjcmMxNihVSU5UOCAqcCwgaW50IGxlbikKK3sKKwlVSU5UMTYJY3JjID0gMDsKKwlVSU5UOAkqbGltID0gcCArIGxlbjsKKworCXdoaWxlIChwIDwgbGltKSB7CisJCWNyYyA9IChjcmMgPj4gOCApIF4gY3JjMTZ0YWJbKGNyYyAmIDB4ZmYpIF4gKnArK107CisJfQorCisJcmV0dXJuIGNyYzsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3JhbWRsX2VuYWJsZQorKgorKiBCZWdpbnMgdGhlIHJhbSBkb3dubG9hZCBzdGF0ZS4gIENoZWNrcyB0byBzZWUgdGhhdCB3ZSdyZSBub3QKKyogYWxyZWFkeSBpbiBhIGRvd25sb2FkIHN0YXRlIGFuZCB0aGF0IGEgcG9ydCBpc24ndCBlbmFibGVkLgorKiBTZXRzIHRoZSBkb3dubG9hZCBzdGF0ZSBhbmQgY2FsbHMgY21kX2Rvd25sb2FkIHdpdGggdGhlCisqIEVOQUJMRV9WT0xBVElMRSBzdWJjb21tYW5kIGFuZCB0aGUgZXhlYWRkciBhcmd1bWVudC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglleGVhZGRyCQl0aGUgY2FyZCBleGVjdXRpb24gYWRkcmVzcyB0aGF0IHdpbGwgYmUKKyogICAgICAgICAgICAgICAgICAgICAgIGp1bXBlZCB0byB3aGVuIHJhbWRsX2Rpc2FibGUoKSBpcyBjYWxsZWQKKyoJCQkoaG9zdCBvcmRlcikuCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3JhbWRsX2VuYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMzIgZXhlYWRkcikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJVUlOVDE2CQlsb3dhZGRyOworCVVJTlQxNgkJaGlhZGRyOworCWludAkJaTsKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IGEgcG9ydCBpc24ndCBhY3RpdmUgKi8KKwlmb3IgKCBpID0gMDsgaSA8IEhGQTM4NHhfUE9SVElEX01BWDsgaSsrKSB7CisJCWlmICggaHctPnBvcnRfZW5hYmxlZFtpXSApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsIkNhbid0IGRvd25sb2FkIHdpdGggYSBwb3J0IGVuYWJsZWQuXG4iKTsKKwkJCXJlc3VsdCA9IC1FSU5WQUw7CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIG5vdCBhbHJlYWR5IGluIGEgZG93bmxvYWQgc3RhdGUgKi8KKwlpZiAoIGh3LT5kbHN0YXRlICE9IEhGQTM4NHhfRExTVEFURV9ESVNBQkxFRCApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwiRG93bmxvYWQgc3RhdGUgbm90IGRpc2FibGVkLlxuIik7CisJCXJlc3VsdCA9IC1FSU5WQUw7CisJCWdvdG8gZG9uZTsKKwl9CisKKwkvKiBBcmUgd2Ugc3VwcG9zZWQgdG8gZ28gaW50byBnZW5lc2lzIG1vZGU/ICovCisJaWYgKGV4ZWFkZHIgPT0gMHgzZjAwMDApIHsKKwkJVUlOVDE2IGluaXRzZXFbMl0gPSB7IDB4ZTEwMCwgMHhmZmExIH07CisJCVVJTlQxNiByZWFkYnVmWzJdOworCQlVSU5UOCBoY3IgPSAweDBmOyAvKiBEZWZhdWx0IHRvIHgxNiBTUkFNICovCisJCWh3LT5pc3JhbTE2ID0gMTsKKworCQlXTEFOX0xPR19ERUJVRygxLCAiRHJvcHBpbmcgaW50byBHZW5lc2lzIG1vZGVcbiIpOworCisJCS8qIElzc3VlIGNhcmQgcmVzZXQgYW5kIGVuYWJsZSBhdXggcG9ydCAqLworCQloZmEzODR4X2NvcmVyZXNldChodywgcHJpc20yX3Jlc2V0X2hvbGR0aW1lLAorCQkJCSAgcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIDApOworCQloZmEzODR4X2NtZF9hdXhfZW5hYmxlKGh3LCAxKTsKKworCQkvKiBHZW5lc2lzIHNldCAqLworCQloZmEzODR4X2NvcHlfdG9fYXV4KGh3LCAweDdFMDAzOCwgSEZBMzg0eF9BVVhfQ1RMX0VYVERTLAorCQkJCSAgICBpbml0c2VxLCBzaXplb2YoaW5pdHNlcSkpOworCisJCWhmYTM4NHhfY29yZXJlc2V0KGh3LCBwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJICBwcmlzbTJfcmVzZXRfc2V0dGxldGltZSwgaGNyKTsKKworCQkvKiBWYWxpZGF0ZSBtZW1vcnkgY29uZmlnICovCisJCWhmYTM4NHhfY29weV90b19hdXgoaHcsIDB4N0UwMDM4LCBIRkEzODR4X0FVWF9DVExfRVhURFMsCisJCQkJICAgIGluaXRzZXEsIHNpemVvZihpbml0c2VxKSk7CisJCWhmYTM4NHhfY29weV9mcm9tX2F1eChodywgMHg3RTAwMzgsIEhGQTM4NHhfQVVYX0NUTF9FWFREUywKKwkJCQkgICAgcmVhZGJ1Ziwgc2l6ZW9mKGluaXRzZXEpKTsKKwkJV0xBTl9IRVhfRFVNUCgzLCAicmVhZGJhY2siLCByZWFkYnVmLCBzaXplb2YocmVhZGJ1ZikpOworCisJCWlmIChtZW1jbXAoaW5pdHNlcSwgcmVhZGJ1Ziwgc2l6ZW9mKHJlYWRidWYpKSkgeworCQkJaGNyID0gMHgxZjsgLyogeDggU1JBTSAqLworCQkJaHctPmlzcmFtMTYgPSAwOworCisJCQloZmEzODR4X2NvcHlfdG9fYXV4KGh3LCAweDdFMDAzOCwgSEZBMzg0eF9BVVhfQ1RMX0VYVERTLAorCQkJCQkgICAgaW5pdHNlcSwgc2l6ZW9mKGluaXRzZXEpKTsKKwkJCWhmYTM4NHhfY29yZXJlc2V0KGh3LCBwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJCSAgcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIGhjcik7CisKKwkJCWhmYTM4NHhfY29weV90b19hdXgoaHcsIDB4N0UwMDM4LCBIRkEzODR4X0FVWF9DVExfRVhURFMsCisJCQkJCSAgICBpbml0c2VxLCBzaXplb2YoaW5pdHNlcSkpOworCQkJaGZhMzg0eF9jb3B5X2Zyb21fYXV4KGh3LCAweDdFMDAzOCwgSEZBMzg0eF9BVVhfQ1RMX0VYVERTLAorCQkJCQkgICAgcmVhZGJ1Ziwgc2l6ZW9mKGluaXRzZXEpKTsKKwkJCVdMQU5fSEVYX0RVTVAoMiwgInJlYWRiYWNrIiwgcmVhZGJ1Ziwgc2l6ZW9mKHJlYWRidWYpKTsKKworCQkJaWYgKG1lbWNtcChpbml0c2VxLCByZWFkYnVmLCBzaXplb2YocmVhZGJ1ZikpKSB7CisJCQkJV0xBTl9MT0dfRVJST1IoIkdlbmVzaXMgbW9kZSBmYWlsZWRcbiIpOworCQkJCXJlc3VsdCA9IC0xOworCQkJCWdvdG8gZG9uZTsKKwkJCX0KKwkJfQorCisJCS8qIE5vdyB3ZSdyZSBpbiBnZW5lc2lzIG1vZGUgKi8KKwkJaHctPmRsc3RhdGUgPSBIRkEzODR4X0RMU1RBVEVfR0VORVNJUzsKKwkJZ290byBkb25lOworCX0KKworCS8qIFJldHJpZXZlIHRoZSBidWZmZXIgbG9jJnNpemUgYW5kIHRpbWVvdXQgKi8KKwlpZiAoIChyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9ET1dOTE9BREJVRkZFUiwKKwkJCQkmKGh3LT5idWZpbmZvKSwgc2l6ZW9mKGh3LT5idWZpbmZvKSkpICkgeworCQlnb3RvIGRvbmU7CisJfQorCWh3LT5idWZpbmZvLnBhZ2UgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmJ1ZmluZm8ucGFnZSk7CisJaHctPmJ1ZmluZm8ub2Zmc2V0ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5idWZpbmZvLm9mZnNldCk7CisJaHctPmJ1ZmluZm8ubGVuID0gaGZhMzg0eDJob3N0XzE2KGh3LT5idWZpbmZvLmxlbik7CisJaWYgKCAocmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9NQVhMT0FEVElNRSwKKwkJCQkmKGh3LT5kbHRpbWVvdXQpKSkgKSB7CisJCWdvdG8gZG9uZTsKKwl9CisJaHctPmRsdGltZW91dCA9IGhmYTM4NHgyaG9zdF8xNihody0+ZGx0aW1lb3V0KTsKKworCS8qIEVuYWJsZSB0aGUgYXV4IHBvcnQgKi8KKwlpZiAoIChyZXN1bHQgPSBoZmEzODR4X2NtZF9hdXhfZW5hYmxlKGh3LCAwKSkgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsIkF1eCBlbmFibGUgZmFpbGVkLCByZXN1bHQ9JWQuXG4iLCByZXN1bHQpOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogQ2FsbCB0aGUgZG93bmxvYWQoMSxhZGRyKSBmdW5jdGlvbiAqLworCWxvd2FkZHIgPSBIRkEzODR4X0FERFJfQ01EX01LT0ZGKGV4ZWFkZHIpOworCWhpYWRkciA9ICBIRkEzODR4X0FERFJfQ01EX01LUEFHRShleGVhZGRyKTsKKworCXJlc3VsdCA9IGhmYTM4NHhfY21kX2Rvd25sb2FkKGh3LCBIRkEzODR4X1BST0dNT0RFX1JBTSwKKwkJCWxvd2FkZHIsIGhpYWRkciwgMCk7CisJaWYgKCByZXN1bHQgPT0gMCkgeworCQkvKiBTZXQgdGhlIGRvd25sb2FkIHN0YXRlICovCisJCWh3LT5kbHN0YXRlID0gSEZBMzg0eF9ETFNUQVRFX1JBTUVOQUJMRUQ7CisJfSBlbHNlIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwiY21kX2Rvd25sb2FkKDB4JTA0eCwgMHglMDR4KSBmYWlsZWQsIHJlc3VsdD0lZC5cbiIsCisJCQkJbG93YWRkcixoaWFkZHIsIHJlc3VsdCk7CisJCS8qIERpc2FibGUgIHRoZSBhdXggcG9ydCAqLworCQloZmEzODR4X2NtZF9hdXhfZGlzYWJsZShodyk7CisJfQorCisgZG9uZToKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9yYW1kbF9kaXNhYmxlCisqCisqIEVuZHMgdGhlIHJhbSBkb3dubG9hZCBzdGF0ZS4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9yYW1kbF9kaXNhYmxlKGhmYTM4NHhfdCAqaHcpCit7CisJREJGRU5URVI7CisJLyogQ2hlY2sgdGhhdCB3ZSdyZSBhbHJlYWR5IGluIHRoZSBkb3dubG9hZCBzdGF0ZSAqLworCWlmICggKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfUkFNRU5BQkxFRCApICYmCisJICAgICAoIGh3LT5kbHN0YXRlICE9IEhGQTM4NHhfRExTVEFURV9HRU5FU0lTICkgKSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChody0+ZGxzdGF0ZSA9PSBIRkEzODR4X0RMU1RBVEVfR0VORVNJUykgeworCQloZmEzODR4X2NvcmVyZXNldChodywgcHJpc20yX3Jlc2V0X2hvbGR0aW1lLAorCQkJCSAgcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsCisJCQkJICBody0+aXNyYW0xNiA/IDB4MDc6IDB4MTcpOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogRGlzYWJsZSB0aGUgYXV4IHBvcnQgKi8KKwloZmEzODR4X2NtZF9kb3dubG9hZChodywgSEZBMzg0eF9QUk9HTU9ERV9ESVNBQkxFLCAwLCAwICwgMCk7CisKKyBkb25lOgorCWh3LT5kbHN0YXRlID0gSEZBMzg0eF9ETFNUQVRFX0RJU0FCTEVEOworCWhmYTM4NHhfY21kX2F1eF9kaXNhYmxlKGh3KTsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9yYW1kbF93cml0ZQorKgorKiBQZXJmb3JtcyBhIFJBTSBkb3dubG9hZCBvZiBhIGNodW5rIG9mIGRhdGEuIEZpcnN0IGNoZWNrcyB0byBzZWUKKyogdGhhdCB3ZSdyZSBpbiB0aGUgUkFNIGRvd25sb2FkIHN0YXRlLCB0aGVuIHVzZXMgdGhlIGF1eCBmdW5jdGlvbnMKKyogdG8gMSkgY29weSB0aGUgZGF0YSwgMikgcmVhZGJhY2sgYW5kIGNvbXBhcmUuICBUaGUgZG93bmxvYWQKKyogc3RhdGUgaXMgdW5hZmZlY3RlZC4gIFdoZW4gYWxsIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiB1c2luZworKiB0aGlzIGZ1bmN0aW9uLCBjYWxsIGRydnJfcmFtZGxfZGlzYWJsZSgpIHRvIGVuZCB0aGUgZG93bmxvYWQgc3RhdGUKKyogYW5kIHJlc3RhcnQgdGhlIE1BQy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglkYWRkcgkJQ2FyZCBhZGRyZXNzIHRvIHdyaXRlIHRvLiAoaG9zdCBvcmRlcikKKyoJYnVmCQlQdHIgdG8gZGF0YSB0byB3cml0ZS4KKyoJbGVuCQlMZW5ndGggb2YgZGF0YSAoaG9zdCBvcmRlcikuCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3JhbWRsX3dyaXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQzMiBkYWRkciwgdm9pZCogYnVmLCBVSU5UMzIgbGVuKQoreworCWludAkJcmVzdWx0ID0gMDsKKwlVSU5UOAkJKnZlcmJ1ZjsKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSByYW0gZG93bmxvYWQgc3RhdGUgKi8KKwlpZiAoICggaHctPmRsc3RhdGUgIT0gSEZBMzg0eF9ETFNUQVRFX1JBTUVOQUJMRUQgKSAmJgorCSAgICAgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfR0VORVNJUyApICkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXTEFOX0xPR19JTkZPKCJXcml0aW5nICVkIGJ5dGVzIHRvIHJhbSBAMHglMDZ4XG4iLCBsZW4sIGRhZGRyKTsKKyNpZiAwCitXTEFOX0hFWF9EVU1QKDEsICJkbGRhdGEiLCBidWYsIGxlbik7CisjZW5kaWYKKwkvKiBDb3B5IHRoZSBkYXRhIHZpYSB0aGUgYXV4IHBvcnQgKi8KKwloZmEzODR4X2NvcHlfdG9fYXV4KGh3LCBkYWRkciwgSEZBMzg0eF9BVVhfQ1RMX0VYVERTLCBidWYsIGxlbik7CisKKwkvKiBDcmVhdGUgYSBidWZmZXIgZm9yIHRoZSB2ZXJpZnkgKi8KKwl2ZXJidWYgPSBrbWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CisJaWYgKHZlcmJ1ZiA9PSBOVUxMICkgcmV0dXJuIDE7CisKKwkvKiBSZWFkIGJhY2sgYW5kIGNvbXBhcmUgKi8KKwloZmEzODR4X2NvcHlfZnJvbV9hdXgoaHcsIGRhZGRyLCBIRkEzODR4X0FVWF9DVExfRVhURFMsIHZlcmJ1ZiwgbGVuKTsKKworCWlmICggbWVtY21wKGJ1ZiwgdmVyYnVmLCBsZW4pICkgeworCQlXTEFOX0xPR19ERUJVRygxLCJyYW1kbCB2ZXJpZnkgZmFpbGVkIVxuIik7CisJCXJlc3VsdCA9IC1FSU5WQUw7CisJfQorCisJa2ZyZWVfcyh2ZXJidWYsIGxlbik7CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZmxhc2hkbF9lbmFibGUKKyoKKyogQmVnaW5zIHRoZSBmbGFzaCBkb3dubG9hZCBzdGF0ZS4gIENoZWNrcyB0byBzZWUgdGhhdCB3ZSdyZSBub3QKKyogYWxyZWFkeSBpbiBhIGRvd25sb2FkIHN0YXRlIGFuZCB0aGF0IGEgcG9ydCBpc24ndCBlbmFibGVkLgorKiBTZXRzIHRoZSBkb3dubG9hZCBzdGF0ZSBhbmQgcmV0cmlldmVzIHRoZSBmbGFzaCBkb3dubG9hZAorKiBidWZmZXIgbG9jYXRpb24sIGJ1ZmZlciBzaXplLCBhbmQgdGltZW91dCBsZW5ndGguCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfZmxhc2hkbF9lbmFibGUoaGZhMzg0eF90ICpodykKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJaW50CQlpOworCisJREJGRU5URVI7CisJLyogQ2hlY2sgdGhhdCBhIHBvcnQgaXNuJ3QgYWN0aXZlICovCisJZm9yICggaSA9IDA7IGkgPCBIRkEzODR4X1BPUlRJRF9NQVg7IGkrKykgeworCQlpZiAoIGh3LT5wb3J0X2VuYWJsZWRbaV0gKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLCJjYWxsZWQgd2hlbiBwb3J0IGVuYWJsZWQuXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCisJLyogQ2hlY2sgdGhhdCB3ZSdyZSBub3QgYWxyZWFkeSBpbiBhIGRvd25sb2FkIHN0YXRlICovCisJaWYgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfRElTQUJMRUQgKSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFJldHJpZXZlIHRoZSBidWZmZXIgbG9jJnNpemUgYW5kIHRpbWVvdXQgKi8KKwlpZiAoIChyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9ET1dOTE9BREJVRkZFUiwKKwkJCQkmKGh3LT5idWZpbmZvKSwgc2l6ZW9mKGh3LT5idWZpbmZvKSkpICkgeworCQlyZXR1cm4gcmVzdWx0OworCX0KKwlody0+YnVmaW5mby5wYWdlID0gaGZhMzg0eDJob3N0XzE2KGh3LT5idWZpbmZvLnBhZ2UpOworCWh3LT5idWZpbmZvLm9mZnNldCA9IGhmYTM4NHgyaG9zdF8xNihody0+YnVmaW5mby5vZmZzZXQpOworCWh3LT5idWZpbmZvLmxlbiA9IGhmYTM4NHgyaG9zdF8xNihody0+YnVmaW5mby5sZW4pOworCWlmICggKHJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfTUFYTE9BRFRJTUUsCisJCQkJJihody0+ZGx0aW1lb3V0KSkpICkgeworCQlyZXR1cm4gcmVzdWx0OworCX0KKwlody0+ZGx0aW1lb3V0ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5kbHRpbWVvdXQpOworCisJLyogRW5hYmxlIHRoZSBhdXggcG9ydCAqLworCWlmICggKHJlc3VsdCA9IGhmYTM4NHhfY21kX2F1eF9lbmFibGUoaHcsIDApKSApIHsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlody0+ZGxzdGF0ZSA9IEhGQTM4NHhfRExTVEFURV9GTEFTSEVOQUJMRUQ7CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZmxhc2hkbF9kaXNhYmxlCisqCisqIEVuZHMgdGhlIGZsYXNoIGRvd25sb2FkIHN0YXRlLiAgTm90ZSB0aGF0IHRoaXMgd2lsbCBjYXVzZSB0aGUgTUFDCisqIGZpcm13YXJlIHRvIHJlc3RhcnQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfZmxhc2hkbF9kaXNhYmxlKGhmYTM4NHhfdCAqaHcpCit7CisJREJGRU5URVI7CisJLyogQ2hlY2sgdGhhdCB3ZSdyZSBhbHJlYWR5IGluIHRoZSBkb3dubG9hZCBzdGF0ZSAqLworCWlmICggaHctPmRsc3RhdGUgIT0gSEZBMzg0eF9ETFNUQVRFX0ZMQVNIRU5BQkxFRCApIHsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogVGhlcmUgaXNuJ3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCwgc28gSSBkb24ndCAqLworCS8qICBib3RoZXIgIHcvIHRoZSByZXR1cm4gdmFsdWUgKi8KKwloZmEzODR4X2NtZF9kb3dubG9hZChodywgSEZBMzg0eF9QUk9HTU9ERV9ESVNBQkxFLCAwLCAwICwgMCk7CisJaHctPmRsc3RhdGUgPSBIRkEzODR4X0RMU1RBVEVfRElTQUJMRUQ7CisKKwkvKiBEaXNhYmxlIHRoZSBhdXggcG9ydCAqLworCWhmYTM4NHhfY21kX2F1eF9kaXNhYmxlKGh3KTsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9mbGFzaGRsX3dyaXRlCisqCisqIFBlcmZvcm1zIGEgRkxBU0ggZG93bmxvYWQgb2YgYSBjaHVuayBvZiBkYXRhLiBGaXJzdCBjaGVja3MgdG8gc2VlCisqIHRoYXQgd2UncmUgaW4gdGhlIEZMQVNIIGRvd25sb2FkIHN0YXRlLCB0aGVuIHNldHMgdGhlIGRvd25sb2FkCisqIG1vZGUsIHVzZXMgdGhlIGF1eCBmdW5jdGlvbnMgdG8gMSkgY29weSB0aGUgZGF0YSB0byB0aGUgZmxhc2gKKyogYnVmZmVyLCAyKSBzZXRzIHRoZSBkb3dubG9hZCAnd3JpdGUgZmxhc2gnIG1vZGUsIDMpIHJlYWRiYWNrIGFuZAorKiBjb21wYXJlLiAgTGF0aGVyIHJpbnNlLCByZXBlYXQgYXMgbWFueSB0aW1lcyBhbiBuZWNlc3NhcnkgdG8gZ2V0CisqIGFsbCB0aGUgZ2l2ZW4gZGF0YSBpbnRvIGZsYXNoLgorKiBXaGVuIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiAocG9zc2libHkKKyogcmVwZWF0ZWRseSksIGNhbGwgZHJ2cl9mbGFzaGRsX2Rpc2FibGUoKSB0byBlbmQgdGhlIGRvd25sb2FkIHN0YXRlCisqIGFuZCByZXN0YXJ0IHRoZSBNQUMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJZGFkZHIJCUNhcmQgYWRkcmVzcyB0byB3cml0ZSB0by4gKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJUHRyIHRvIGRhdGEgdG8gd3JpdGUuCisqCWxlbgkJTGVuZ3RoIG9mIGRhdGEgKGhvc3Qgb3JkZXIpLgorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9mbGFzaGRsX3dyaXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQzMiBkYWRkciwgdm9pZCogYnVmLCBVSU5UMzIgbGVuKQoreworCWludAkJcmVzdWx0ID0gMDsKKwlVSU5UOAkJKnZlcmJ1ZjsKKwlVSU5UMzIJCWRsYnVmYWRkcjsKKwlVSU5UMzIJCWN1cnJsZW47CisJVUlOVDMyCQljdXJyZGFkZHI7CisJVUlOVDE2CQlkZXN0bG87CisJVUlOVDE2CQlkZXN0aGk7CisJaW50CQlud3JpdGVzOworCWludAkJaTsKKworCURCRkVOVEVSOworCS8qIENoZWNrIHRoYXQgd2UncmUgaW4gdGhlIGZsYXNoIGRvd25sb2FkIHN0YXRlICovCisJaWYgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfRkxBU0hFTkFCTEVEICkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXTEFOX0xPR19JTkZPKCJEb3dubG9hZCAlZCBieXRlcyB0byBmbGFzaCBAMHglMDZ4XG4iLCBsZW4sIGRhZGRyKTsKKworCS8qIE5lZWQgYSBmbGF0IGFkZHJlc3MgZm9yIGFyaXRobWV0aWMgKi8KKwlkbGJ1ZmFkZHIgPSBIRkEzODR4X0FERFJfQVVYX01LRkxBVCgKKwkJCWh3LT5idWZpbmZvLnBhZ2UsCisJCQlody0+YnVmaW5mby5vZmZzZXQpOworCXZlcmJ1ZiA9IGttYWxsb2MoaHctPmJ1ZmluZm8ubGVuLCBHRlBfS0VSTkVMKTsKKworI2lmIDAKK1dMQU5fTE9HX1dBUk5JTkcoImRsYnVmQDB4JTA2bHggbGVuPSVkIHRvPSVkXG4iLCBkbGJ1ZmFkZHIsIGh3LT5idWZpbmZvLmxlbiwgaHctPmRsdGltZW91dCk7CisjZW5kaWYKKwkvKiBGaWd1cmUgb3V0IGhvdyBtYW55IHRpbWVzIHRvIHRvIHRoZSBmbGFzaCBwcm9nICovCisJbndyaXRlcyA9IGxlbiAvIGh3LT5idWZpbmZvLmxlbjsKKwlud3JpdGVzICs9IChsZW4gJSBody0+YnVmaW5mby5sZW4pID8gMSA6IDA7CisKKwlpZiAoIHZlcmJ1ZiA9PSBOVUxMICkgeworCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIGZsYXNoIHZlcmlmeSBidWZmZXJcbiIpOworCQlyZXR1cm4gMTsKKwl9CisJLyogRm9yIGVhY2ggKi8KKwlmb3IgKCBpID0gMDsgaSA8IG53cml0ZXM7IGkrKykgeworCQkvKiBHZXQgdGhlIGRlc3QgYWRkcmVzcyBhbmQgbGVuICovCisJCWN1cnJsZW4gPSAobGVuIC0gKGh3LT5idWZpbmZvLmxlbiAqIGkpKSA+IGh3LT5idWZpbmZvLmxlbiA/CisJCQkJaHctPmJ1ZmluZm8ubGVuIDoKKwkJCQkobGVuIC0gKGh3LT5idWZpbmZvLmxlbiAqIGkpKTsKKwkJY3VycmRhZGRyID0gZGFkZHIgKyAoaHctPmJ1ZmluZm8ubGVuICogaSk7CisJCWRlc3RsbyA9IEhGQTM4NHhfQUREUl9DTURfTUtPRkYoY3VycmRhZGRyKTsKKwkJZGVzdGhpID0gSEZBMzg0eF9BRERSX0NNRF9NS1BBR0UoY3VycmRhZGRyKTsKKwkJV0xBTl9MT0dfSU5GTygiV3JpdGluZyAlZCBieXRlcyB0byBmbGFzaCBAMHglMDZ4XG4iLCBjdXJybGVuLCBjdXJyZGFkZHIpOworI2lmIDAKK1dMQU5fSEVYX0RVTVAoMSwgImRsZGF0YSIsIGJ1ZisoaHctPmJ1ZmluZm8ubGVuKmkpLCBjdXJybGVuKTsKKyNlbmRpZgorCQkvKiBTZXQgdGhlIGRvd25sb2FkIG1vZGUgKi8KKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfZG93bmxvYWQoaHcsIEhGQTM4NHhfUFJPR01PREVfTlYsCisJCQkJZGVzdGxvLCBkZXN0aGksIGN1cnJsZW4pOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJkb3dubG9hZChOVixsbz0leCxoaT0leCxsZW49JXgpICIKKwkJCQkiY21kIGZhaWxlZCwgcmVzdWx0PSVkLiBBYm9ydGluZyBkL2xcbiIsCisJCQkJZGVzdGxvLCBkZXN0aGksIGN1cnJsZW4sIHJlc3VsdCk7CisJCQlnb3RvIGV4aXRfcHJvYzsKKwkJfQorCQkvKiBjb3B5IHRoZSBkYXRhIHRvIHRoZSBmbGFzaCBidWZmZXIgKi8KKwkJaGZhMzg0eF9jb3B5X3RvX2F1eChodywgZGxidWZhZGRyLCBIRkEzODR4X0FVWF9DVExfRVhURFMsCisJCQkJCWJ1ZisoaHctPmJ1ZmluZm8ubGVuKmkpLCBjdXJybGVuKTsKKwkJLyogc2V0IHRoZSBkb3dubG9hZCAnd3JpdGUgZmxhc2gnIG1vZGUgKi8KKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfZG93bmxvYWQoaHcsIEhGQTM4NHhfUFJPR01PREVfTlZXUklURSwgMCwwLDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCSJkb3dubG9hZChOVldSSVRFLGxvPSV4LGhpPSV4LGxlbj0leCkgIgorCQkJCSJjbWQgZmFpbGVkLCByZXN1bHQ9JWQuIEFib3J0aW5nIGQvbFxuIiwKKwkJCQlkZXN0bG8sIGRlc3RoaSwgY3VycmxlbiwgcmVzdWx0KTsKKwkJCWdvdG8gZXhpdF9wcm9jOworCQl9CisJCS8qIHJlYWRiYWNrIGFuZCBjb21wYXJlLCBpZiBmYWlsLi4uYmFpbCAqLworCQloZmEzODR4X2NvcHlfZnJvbV9hdXgoaHcsCisJCQkJY3VycmRhZGRyLCBIRkEzODR4X0FVWF9DVExfTlYsCisJCQkJdmVyYnVmLCBjdXJybGVuKTsKKworCQlpZiAoIG1lbWNtcChidWYrKGh3LT5idWZpbmZvLmxlbippKSwgdmVyYnVmLCBjdXJybGVuKSApIHsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCitleGl0X3Byb2M6CisgICAgICAgICAvKiBET0ghIFRoaXMga2ZyZWUncyBmb3IgeW91IE1hcmsgOi0pIE15IGZvcmVoZWFkIGh1cnRzLi4uICovCisgICAgICAgICBrZnJlZSh2ZXJidWYpOworCisJLyogTGVhdmUgdGhlIGZpcm13YXJlIGluIHRoZSAncG9zdC1wcm9nJyBtb2RlLiAgZmxhc2hkbF9kaXNhYmxlIHdpbGwgKi8KKwkvKiAgYWN0dWFsbHkgZGlzYWJsZSBwcm9ncmFtbWluZyBtb2RlLiAgUmVtZW1iZXIsIHRoYXQgd2lsbCBjYXVzZSB0aGUgKi8KKwkvKiAgdGhlIGZpcm13YXJlIHRvIGVmZmVjdGl2ZWx5IHJlc2V0IGl0c2VsZi4gKi8KKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfaW5pdGlhbGl6ZQorKgorKiBJc3N1ZXMgdGhlIGluaXRpYWxpemUgY29tbWFuZCBhbmQgc2V0cyB0aGUgaHctPnN0YXRlIGJhc2VkCisqIG9uIHRoZSByZXN1bHQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9pbml0aWFsaXplKGhmYTM4NHhfdCAqaHcpCit7CisJaW50IHJlc3VsdCA9IDA7CisJaW50IGk7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwkvKiB3ZSBkb24ndCB3YW50IHRvIGJlIGludGVycnVwdGVkIGR1cmluZyB0aGUgcmVzZXQgKi8KKwloZmEzODR4X3NldHJlZyhodywgMCwgSEZBMzg0eF9JTlRFTik7CisJaGZhMzg0eF9zZXRyZWcoaHcsIDB4ZmZmZiwgSEZBMzg0eF9FVkFDSyk7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURDT0RFX0lOSVQ7CisJY21kLnBhcm0wID0gMDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlpZiAoIHJlc3VsdCA9PSAwICkgeworCQlmb3IgKCBpID0gMDsgaSA8IEhGQTM4NHhfTlVNUE9SVFNfTUFYOyBpKyspIHsKKwkJCWh3LT5wb3J0X2VuYWJsZWRbaV0gPSAwOworCQl9CisJfQorCisgICAgICAgIGh3LT5saW5rX3N0YXR1cyA9IEhGQTM4NHhfTElOS19OT1RDT05ORUNURUQ7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9jb21tdGFsbGllcworKgorKiBTZW5kIGEgY29tbXRhbGxpZXMgaW5xdWlyeSB0byB0aGUgTUFDLiAgTm90ZSB0aGF0IHRoaXMgaXMgYW4gYXN5bmMKKyogY2FsbCB0aGF0IHdpbGwgcmVzdWx0IGluIGFuIGluZm8gZnJhbWUgYXJyaXZpbmcgc29tZXRpbWUgbGF0ZXIuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJemVybwkJc3VjY2Vzcy4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9jb21tdGFsbGllcyggaGZhMzg0eF90ICpodyApCit7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCWludCByZXN1bHQ7CisKKwlEQkZFTlRFUjsKKworCWNtZC5jbWQgPSBIRkEzODR4X0NNRENPREVfSU5ROworCWNtZC5wYXJtMCA9IEhGQTM4NHhfSVRfQ09NTVRBTExJRVM7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJc3Bpbl9sb2NrX2JoKCZody0+Y21kbG9jayk7CisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKwlzcGluX3VubG9ja19iaCgmaHctPmNtZGxvY2spOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZW5hYmxlCisqCisqIElzc3VlcyB0aGUgZW5hYmxlIGNvbW1hbmQgdG8gZW5hYmxlIGNvbW11bmljYXRpb25zIG9uIG9uZSBvZgorKiB0aGUgTUFDcyAncG9ydHMnLiAgT25seSBtYWNwb3J0IDAgaXMgdmFsaWQgIGZvciBzdGF0aW9ucy4KKyogQVBzIG1heSBhbHNvIGVuYWJsZSBtYWNwb3J0cyAxLTYuICBPbmx5IHBvcnRzIHRoYXQgYXJlIGN1cnJlbnRseQorKiBkaXNhYmxlZCBtYXkgYmUgZW5hYmxlZC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltYWNwb3J0CQlNQUMgcG9ydCBudW1iZXIKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9lbmFibGUoaGZhMzg0eF90ICpodywgVUlOVDE2IG1hY3BvcnQpCit7CisJaW50CXJlc3VsdCA9IDA7CisKKwlEQkZFTlRFUjsKKwlpZiAoKCFody0+aXNhcCAmJiBtYWNwb3J0ICE9IDApIHx8CisJICAgIChody0+aXNhcCAmJiAhKG1hY3BvcnQgPD0gSEZBMzg0eF9QT1JUSURfTUFYKSkgfHwKKwkgICAgKGh3LT5wb3J0X2VuYWJsZWRbbWFjcG9ydF0pICl7CisJCXJlc3VsdCA9IC1FSU5WQUw7CisJfSBlbHNlIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfZW5hYmxlKGh3LCBtYWNwb3J0KTsKKwkJaWYgKCByZXN1bHQgPT0gMCApIHsKKwkJCWh3LT5wb3J0X2VuYWJsZWRbbWFjcG9ydF0gPSAxOworCQl9CisJfQorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfZW5hYmxlCisqCisqIElzc3VlcyB0aGUgdGhlIGVuYWJsZSBjb21tYW5kIHRvIGVuYWJsZSBjb21tdW5pY2F0aW9ucyBvbiBvbmUgb2YgdGhlCisqIE1BQ3MgJ3BvcnRzJy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltYWNwb3J0CQlNQUMgcG9ydCBudW1iZXIKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfY21kX2VuYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgbWFjcG9ydCkKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKwlEQkZFTlRFUjsKKworCWNtZC5jbWQgPSBIRkEzODR4X0NNRF9DTURDT0RFX1NFVChIRkEzODR4X0NNRENPREVfRU5BQkxFKSB8CisJCSAgSEZBMzg0eF9DTURfTUFDUE9SVF9TRVQobWFjcG9ydCk7CisJY21kLnBhcm0wID0gMDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9kaXNhYmxlCisqCisqIElzc3VlcyB0aGUgZGlzYWJsZSBjb21tYW5kIHRvIHN0b3AgY29tbXVuaWNhdGlvbnMgb24gb25lIG9mCisqIHRoZSBNQUNzICdwb3J0cycuICBPbmx5IG1hY3BvcnQgMCBpcyB2YWxpZCAgZm9yIHN0YXRpb25zLgorKiBBUHMgbWF5IGFsc28gZGlzYWJsZSBtYWNwb3J0cyAxLTYuICBPbmx5IHBvcnRzIHRoYXQgaGF2ZSBiZWVuCisqIHByZXZpb3VzbHkgZW5hYmxlZCBtYXkgYmUgZGlzYWJsZWQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJbWFjcG9ydAkJTUFDIHBvcnQgbnVtYmVyIChob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX2Rpc2FibGUoaGZhMzg0eF90ICpodywgVUlOVDE2IG1hY3BvcnQpCit7CisJaW50CXJlc3VsdCA9IDA7CisKKwlEQkZFTlRFUjsKKwlpZiAoKCFody0+aXNhcCAmJiBtYWNwb3J0ICE9IDApIHx8CisJICAgIChody0+aXNhcCAmJiAhKG1hY3BvcnQgPD0gSEZBMzg0eF9QT1JUSURfTUFYKSkgfHwKKwkgICAgIShody0+cG9ydF9lbmFibGVkW21hY3BvcnRdKSApeworCQlyZXN1bHQgPSAtRUlOVkFMOworCX0gZWxzZSB7CisJCXJlc3VsdCA9IGhmYTM4NHhfY21kX2Rpc2FibGUoaHcsIG1hY3BvcnQpOworCQlpZiAoIHJlc3VsdCA9PSAwICkgeworCQkJaHctPnBvcnRfZW5hYmxlZFttYWNwb3J0XSA9IDA7CisJCX0KKwl9CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9kaXNhYmxlCisqCisqIElzc3VlcyB0aGUgY29tbWFuZCB0byBkaXNhYmxlIGEgcG9ydC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltYWNwb3J0CQlNQUMgcG9ydCBudW1iZXIgKGhvc3Qgb3JkZXIpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9kaXNhYmxlKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBtYWNwb3J0KQoreworCWludAlyZXN1bHQgPSAwOworCWhmYTM4NHhfbWV0YWNtZF90IGNtZDsKKworCURCRkVOVEVSOworCisJY21kLmNtZCA9IEhGQTM4NHhfQ01EX0NNRENPREVfU0VUKEhGQTM4NHhfQ01EQ09ERV9ESVNBQkxFKSB8CisJCSAgSEZBMzg0eF9DTURfTUFDUE9SVF9TRVQobWFjcG9ydCk7CisJY21kLnBhcm0wID0gMDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY21kX2RpYWdub3NlCisqCisqIElzc3VlcyB0aGUgZGlhZ25vc2UgY29tbWFuZCB0byB0ZXN0IHRoZTogcmVnaXN0ZXIgaW50ZXJmYWNlLAorKiBNQUMgY29udHJvbGxlciAoaW5jbHVkaW5nIGxvb3BiYWNrKSwgRXh0ZXJuYWwgUkFNLCBOb24tdm9sYXRpbGUKKyogbWVtb3J5IGludGVncml0eSwgYW5kIHN5bnRoZXNpemVycy4gIEZvbGxvd2luZyBleGVjdXRpb24gb2YgdGhpcworKiBjb21tYW5kLCBNQUMvZmlybXdhcmUgYXJlIGluIHRoZSAnaW5pdGlhbCBzdGF0ZScuICBUaGVyZWZvcmUsCisqIHRoZSBJbml0aWFsaXplIGNvbW1hbmQgc2hvdWxkIGJlIGlzc3VlZCBhZnRlciBzdWNjZXNzZnVsCisqIGNvbXBsZXRpb24gb2YgdGhpcyBjb21tYW5kLiAgVGhpcyBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQKKyogd2hlbiB0aGUgTUFDIGlzIGluIHRoZSAnY29tbXVuaWNhdGlvbiBkaXNhYmxlZCcgc3RhdGUuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBESUFHX1BBVFRFUk5BICgoVUlOVDE2KTB4YWFhYSkKKyNkZWZpbmUgRElBR19QQVRURVJOQiAoKFVJTlQxNikweDU1NTUpCisKK2ludCBoZmEzODR4X2NtZF9kaWFnbm9zZShoZmEzODR4X3QgKmh3KQoreworCWludAlyZXN1bHQgPSAwOworCWhmYTM4NHhfbWV0YWNtZF90IGNtZDsKKworCURCRkVOVEVSOworCisJY21kLmNtZCA9IEhGQTM4NHhfQ01EX0NNRENPREVfU0VUKEhGQTM4NHhfQ01EQ09ERV9ESUFHKTsKKwljbWQucGFybTAgPSBESUFHX1BBVFRFUk5BOworCWNtZC5wYXJtMSA9IERJQUdfUEFUVEVSTkI7CisJY21kLnBhcm0yID0gMDsKKworCXNwaW5fbG9ja19iaCgmaHctPmNtZGxvY2spOworCXJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgJmNtZCk7CisJc3Bpbl91bmxvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfYWxsb2NhdGUKKyoKKyogSXNzdWVzIHRoZSBhbGxvY2F0ZSBjb21tYW5kIGluc3RydWN0aW5nIHRoZSBmaXJtd2FyZSB0byBhbGxvY2F0ZQorKiBhICdmcmFtZSBzdHJ1Y3R1cmUgYnVmZmVyJyBpbiBNQUMgY29udHJvbGxlciBSQU0uICBUaGlzIGNvbW1hbmQKKyogZG9lcyBub3QgcHJvdmlkZSB0aGUgcmVzdWx0LCBpdCBvbmx5IGluaXRpYXRlcyBvbmUgb2YgdGhlIGYvdydzCisqIGFzeW5jaHJvbm91cyBwcm9jZXNzZXMgdG8gY29uc3RydWN0IHRoZSBidWZmZXIuICBXaGVuIHRoZQorKiBhbGxvY2F0aW9uIGlzIGNvbXBsZXRlLCBpdCB3aWxsIGJlIGluZGljYXRlZCB2aWEgdGhlIEFsbG9jCisqIGJpdCBpbiB0aGUgRXZTdGF0IHJlZ2lzdGVyIGFuZCB0aGUgRklEIGlkZW50aWZ5aW5nIHRoZSBhbGxvY2F0ZWQKKyogc3BhY2Ugd2lsbCBiZSBhdmFpbGFibGUgZnJvbSB0aGUgQWxsb2NGSUQgcmVnaXN0ZXIuICBTb21lIGNhcmUKKyogc2hvdWxkIGJlIHRha2VuIHdoZW4gd2FpdGluZyBmb3IgdGhlIEFsbG9jIGV2ZW50LiAgSWYgYSBUeCBvcgorKiBOb3RpZnkgY29tbWFuZCB3LyBSZWNsYWltIGhhcyBiZWVuIHByZXZpb3VzbHkgZXhlY3V0ZWQsIGl0J3MKKyogcG9zc2libGUgdGhlIGZpcnN0IEFsbG9jIGV2ZW50IGFmdGVyIGV4ZWN1dGlvbiBvZiB0aGlzIGNvbW1hbmQKKyogd2lsbCBiZSBmb3IgdGhlIHJlY2xhaW1lZCBidWZmZXIgYW5kIG5vdCB0aGUgb25lIHlvdSBhc2tlZCBmb3IuCisqIFRoaXMgY2FzZSBtdXN0IGJlIGhhbmRsZWQgaW4gdGhlIEFsbG9jIGV2ZW50IGhhbmRsZXIuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJbGVuCQlhbGxvY2F0aW9uIGxlbmd0aCwgbXVzdCBiZSBhbiBldmVuIHZhbHVlCisqCQkJaW4gdGhlIHJhbmdlIFs0LTI0MDBdLiAoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfY21kX2FsbG9jYXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBsZW4pCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwlpZiAoIChsZW4gJSAyKSB8fAorCSAgICAgbGVuIDwgSEZBMzg0eF9DTURfQUxMT0NfTEVOX01JTiB8fAorCSAgICAgbGVuID4gSEZBMzg0eF9DTURfQUxMT0NfTEVOX01BWCApIHsKKwkJcmVzdWx0ID0gLUVJTlZBTDsKKwl9IGVsc2UgeworCQljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0FMTE9DKTsKKwkJY21kLnBhcm0wID0gbGVuOworCQljbWQucGFybTEgPSAwOworCQljbWQucGFybTIgPSAwOworCisJCXNwaW5fbG9ja19iaCgmaHctPmNtZGxvY2spOworCQlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCQlzcGluX3VubG9ja19iaCgmaHctPmNtZGxvY2spOworCX0KKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY21kX3RyYW5zbWl0CisqCisqIEluc3RydWN0cyB0aGUgZmlybXdhcmUgdG8gdHJhbnNtaXQgYSBmcmFtZSBwcmV2aW91c2x5IGNvcGllZAorKiB0byBhIGdpdmVuIGJ1ZmZlci4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBpbW1lZGlhdGVseSwgdGhlIFR4CisqIHJlc3VsdHMgYXJlIGF2YWlsYWJsZSB2aWEgdGhlIFR4IG9yIFR4RXhjIGV2ZW50cyAoaWYgdGhlIGZyYW1lCisqIGNvbnRyb2wgYml0cyBhcmUgc2V0KS4gIFRoZSByZWNsYWltIGFyZ3VtZW50IHNwZWNpZmllcyBpZiB0aGUKKyogRklEIHBhc3NlZCB3aWxsIGJlIHVzZWQgYnkgdGhlIGYvdyB0eCBwcm9jZXNzIG9yIHJldHVybmVkIGZvcgorKiB1c2Ugdy8gYW5vdGhlciB0cmFuc21pdCBjb21tYW5kLiAgSWYgcmVjbGFpbSBpcyBzZXQsIGV4cGVjdCBhbgorKiBBbGxvYyBldmVudCBzaWduYWxsaW5nIHRoZSBhdmFpbGliaWxpdHkgb2YgdGhlIEZJRCBmb3IgcmV1c2UuCisqCisqIE5PVEU6IGh3LT5jbWRsb2NrIE1VU1QgQkUgSEVMRCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIQorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCXJlY2xhaW0JCVswfDFdIGluZGljYXRlcyB3aGV0aGVyIHRoZSBnaXZlbiBGSUQgd2lsbAorKgkJCWJlIGhhbmRlZCBiYWNrICh2aWEgQWxsb2MgZXZlbnQpIGZvciByZXVzZS4KKyoJCQkoaG9zdCBvcmRlcikKKyoJcW9zCQlbMC0zXSBWYWx1ZSB0byBwdXQgaW4gdGhlIFFvUyBmaWVsZCBvZiB0aGUKKyoJCQl0eCBjb21tYW5kLCBpZGVudGlmaWVzIGEgcXVldWUgdG8gcGxhY2UgdGhlCisqCQkJb3V0Z29pbmcgZnJhbWUgaW4uCisqCQkJKGhvc3Qgb3JkZXIpCisqCWZpZAkJRklEIG9mIGJ1ZmZlciBjb250YWluaW5nIHRoZSBmcmFtZSB0aGF0IHdhcworKgkJCXByZXZpb3VzbHkgY29waWVkIHRvIE1BQyBtZW1vcnkgdmlhIHRoZSBiYXAuCisqCQkJKGhvc3Qgb3JkZXIpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKglody0+cmVzcDAgd2lsbCBjb250YWluIHRoZSBGSUQgYmVpbmcgdXNlZCBieSBhc3luYyB0eAorKglwcm9jZXNzLiAgSWYgcmVjbGFpbT09MCwgcmVzcDAgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlkCisqCWFyZ3VtZW50LiAgSWYgcmVjbGFpbT09MSwgcmVzcDAgd2lsbCBiZSB0aGUgZGlmZmVyZW50IGFuZAorKglpcyB0aGUgdmFsdWUgdG8gd2F0Y2ggZm9yIGluIHRoZSBUeHxUeEV4YyB0byBpbmRpY2F0ZSBjb21wbGV0aW9uCisqCW9mIHRoZSBmcmFtZSBwYXNzZWQgaW4gZmlkLgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF90cmFuc21pdChoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmVjbGFpbSwgVUlOVDE2IHFvcywgVUlOVDE2IGZpZCkKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKwlEQkZFTlRFUjsKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX1RYKSB8CisJCUhGQTM4NHhfQ01EX1JFQ0xfU0VUKHJlY2xhaW0pIHwKKwkJSEZBMzg0eF9DTURfUU9TX1NFVChxb3MpOworCWNtZC5wYXJtMCA9IGZpZDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9jbGVhcnBlcnNpc3QKKyoKKyogSW5zdHJ1Y3RzIHRoZSBmaXJtd2FyZSB0byBjbGVhciB0aGUgcGVyc2lzdGVuY2UgYml0IGluIGEgZ2l2ZW4KKyogRklELiAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiB0ZWxsaW5nIHRoZSBmaXJtd2FyZSB0byBkcm9wIHRoZQorKiBwZXJzaXN0ZW50IGZyYW1lLiAgVGhlIEZJRCBtdXN0IGJlIG9uZSB0aGF0IHdhcyBwcmV2aW91c2x5IHVzZWQKKyogdG8gdHJhbnNtaXQgYSBQUlNUIGZyYW1lLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWZpZAkJRklEIG9mIHRoZSBwZXJzaXN0ZW50IGZyYW1lIChob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfY2xlYXJwZXJzaXN0KGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBmaWQpCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0NMUlBSU1QpOworCWNtZC5wYXJtMCA9IGZpZDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9ub3RpZnkKKyoKKyogU2VuZHMgYW4gaW5mbyBmcmFtZSB0byB0aGUgZmlybXdhcmUgdG8gYWx0ZXIgdGhlIGJlaGF2aW9yCisqIG9mIHRoZSBmL3cgYXN5bmNoIHByb2Nlc3Nlcy4gIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBNQUMKKyogaXMgaW4gdGhlIGVuYWJsZWQgc3RhdGUuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJcmVjbGFpbQkJWzB8MV0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdpdmVuIEZJRCB3aWxsCisqCQkJYmUgaGFuZGVkIGJhY2sgKHZpYSBBbGxvYyBldmVudCkgZm9yIHJldXNlLgorKgkJCShob3N0IG9yZGVyKQorKglmaWQJCUZJRCBvZiBidWZmZXIgY29udGFpbmluZyB0aGUgZnJhbWUgdGhhdCB3YXMKKyoJCQlwcmV2aW91c2x5IGNvcGllZCB0byBNQUMgbWVtb3J5IHZpYSB0aGUgYmFwLgorKgkJCShob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoJaHctPnJlc3AwIHdpbGwgY29udGFpbiB0aGUgRklEIGJlaW5nIHVzZWQgYnkgYXN5bmMgbm90aWZ5CisqCXByb2Nlc3MuICBJZiByZWNsYWltPT0wLCByZXNwMCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBmaWQKKyoJYXJndW1lbnQuICBJZiByZWNsYWltPT0xLCByZXNwMCB3aWxsIGJlIHRoZSBkaWZmZXJlbnQuCisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfY21kX25vdGlmeShoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmVjbGFpbSwgVUlOVDE2IGZpZCwKKwkJICAgICAgIHZvaWQgKmJ1ZiwgVUlOVDE2IGxlbikKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKwlEQkZFTlRFUjsKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX05PVElGWSkgfAorCQlIRkEzODR4X0NNRF9SRUNMX1NFVChyZWNsYWltKTsKKwljbWQucGFybTAgPSBmaWQ7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJc3Bpbl9sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKyAgICAgICAgLyogQ29weSB0aGUgcmVjb3JkIHRvIEZJRCAqLworICAgICAgICByZXN1bHQgPSBoZmEzODR4X2NvcHlfdG9fYmFwKGh3LCBIRkEzODR4X0JBUF9QUk9DLCBody0+aW5mb2ZpZCwgMCwgYnVmLCBsZW4pOworICAgICAgICBpZiAoIHJlc3VsdCApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygxLAorCQkJImNvcHlfdG9fYmFwKCUwNHgsIDAsICVkKSBmYWlsZWQsIHJlc3VsdD0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaHctPmluZm9maWQsIGxlbiwgcmVzdWx0KTsKKwkJcmVzdWx0ID0gLUVJTzsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgfQorCisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKworIGZhaWxlZDoKKwlzcGluX3VubG9ja19iaCgmaHctPmNtZGxvY2spOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKyNpZiAwCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfaW5xdWlyeQorKgorKiBSZXF1ZXN0cyBhbiBpbmZvIGZyYW1lIGZyb20gdGhlIGZpcm13YXJlLiAgVGhlIGluZm8gZnJhbWUgd2lsbAorKiBiZSBkZWxpdmVyZWQgYXN5bmNocm9ub3VzbHkgdmlhIHRoZSBJbmZvIGV2ZW50LgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWZpZAkJRklEIG9mIHRoZSBpbmZvIGZyYW1lIHJlcXVlc3RlZC4gKGhvc3Qgb3JkZXIpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgaGZhMzg0eF9jbWRfaW5xdWlyeShoZmEzODR4X3QgKmh3LCBVSU5UMTYgZmlkKQoreworCWludAlyZXN1bHQgPSAwOworCWhmYTM4NHhfbWV0YWNtZF90IGNtZDsKKworCURCRkVOVEVSOworCisJY21kLmNtZCA9IEhGQTM4NHhfQ01EX0NNRENPREVfU0VUKEhGQTM4NHhfQ01EQ09ERV9JTlEpOworCWNtZC5wYXJtMCA9IGZpZDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfYWNjZXNzCisqCisqIFJlcXVlc3RzIHRoYXQgYSBnaXZlbiByZWNvcmQgYmUgY29waWVkIHRvL2Zyb20gdGhlIHJlY29yZAorKiBidWZmZXIuICBJZiB3ZSdyZSB3cml0aW5nIGZyb20gdGhlIHJlY29yZCBidWZmZXIsIHRoZSBjb250ZW50cworKiBtdXN0IHByZXZpb3VzbHkgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhlIHJlY29yZCBidWZmZXIgdmlhIHRoZQorKiBiYXAuICBJZiB3ZSdyZSByZWFkaW5nIGludG8gdGhlIHJlY29yZCBidWZmZXIsIHRoZSByZWNvcmQgY2FuCisqIGJlIHJlYWQgb3V0IG9mIHRoZSByZWNvcmQgYnVmZmVyIGFmdGVyIHRoaXMgY2FsbC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgl3cml0ZQkJWzB8MV0gY29weSB0aGUgcmVjb3JkIGJ1ZmZlciB0byB0aGUgZ2l2ZW4KKyoJCQljb25maWd1cmF0aW9uIHJlY29yZC4gKGhvc3Qgb3JkZXIpCisqCXJpZAkJUklEIG9mIHRoZSByZWNvcmQgdG8gcmVhZC93cml0ZS4gKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJaG9zdCBzaWRlIHJlY29yZCBidWZmZXIuICBVcG9uIHJldHVybiBpdCB3aWxsCisqCQkJY29udGFpbiB0aGUgYm9keSBwb3J0aW9uIG9mIHRoZSByZWNvcmQgKG1pbnVzIHRoZQorKgkJCVJJRCBhbmQgbGVuKS4KKyoJbGVuCQlidWZmZXIgbGVuZ3RoIChpbiBieXRlcywgc2hvdWxkIG1hdGNoIHJlY29yZCBsZW5ndGgpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9hY2Nlc3MoaGZhMzg0eF90ICpodywgVUlOVDE2IHdyaXRlLCBVSU5UMTYgcmlkLAorCQkgICAgICAgdm9pZCogYnVmLCBVSU5UMTYgbGVuKQoreworCWludAlyZXN1bHQgPSAwOworCWhmYTM4NHhfbWV0YWNtZF90IGNtZDsKKwloZmEzODR4X3JlY190CXJlYzsKKworCURCRkVOVEVSOworCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMCkpCisJLyogVGhpcyBzaG91bGQgTk9UIGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4dCEgKi8KKwlpZiAoaW5faXJxKCkpIHsKKwkJV0xBTl9MT0dfRVJST1IoIktyYXAsIGluIEludGVycnVwdCBjb250ZXh0ISIpOworI2lmZGVmIFdMQU5fSU5DTFVERV9ERUJVRworCQlCVUcoKTsKKyNlbmRpZgorCX0KKyNlbmRpZgorCXNwaW5fbG9ja19iaCgmaHctPmNtZGxvY2spOworCisJaWYgKHdyaXRlKSB7CisJCXJlYy5yaWQgPSBob3N0MmhmYTM4NHhfMTYocmlkKTsKKwkJcmVjLnJlY2xlbiA9IGhvc3QyaGZhMzg0eF8xNigobGVuLzIpICsgMSk7IC8qIG5vdGUgY29udmVyc2lvbiB0byB3b3JkcywgKzEgZm9yIHJpZCBmaWVsZCAqLworCQkvKiB3cml0ZSB0aGUgcmVjb3JkICovCisJCXJlc3VsdCA9IGhmYTM4NHhfY29weV90b19iYXA0KCBodywgSEZBMzg0eF9CQVBfUFJPQywgcmlkLCAwLAorCQkJCQkgICAgICAgJnJlYywgc2l6ZW9mKHJlYyksCisJCQkJCSAgICAgICBidWYsIGxlbiwKKwkJCQkJICAgICAgIE5VTEwsIDAsIE5VTEwsIDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDMsIkZhaWx1cmUgd3JpdGluZyByZWNvcmQgaGVhZGVyK2RhdGFcbiIpOworCQkJZ290byBmYWlsOworCQl9CisKKwl9CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0FDQ0VTUykgfAorCQlIRkEzODR4X0NNRF9XUklURV9TRVQod3JpdGUpOworCWNtZC5wYXJtMCA9IHJpZDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiQ2FsbCB0byBoZmEzODR4X2RvY21kX3dhaXQgZmFpbGVkICglZCAlZClcbiIsCisJCQkJcmVzdWx0LCBjbWQucmVzdWx0LnJlc3AwKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghd3JpdGUpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X2Zyb21fYmFwKCBodywgSEZBMzg0eF9CQVBfUFJPQywgcmlkLCAwLCAmcmVjLCBzaXplb2YocmVjKSk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfREVCVUcoMywiQ2FsbCB0byBoZmEzODR4X2NvcHlfZnJvbV9iYXAgZmFpbGVkXG4iKTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCS8qIFZhbGlkYXRlIHRoZSByZWNvcmQgbGVuZ3RoICovCisJCWlmICggKChoZmEzODR4Mmhvc3RfMTYocmVjLnJlY2xlbiktMSkqMikgIT0gbGVuICkgeyAgLyogbm90ZSBib2R5IGxlbiBjYWxjdWxhdGlvbiBpbiBieXRlcyAqLworCQkJV0xBTl9MT0dfREVCVUcoMSwgIlJJRCBsZW4gbWlzbWF0Y2gsIHJpZD0weCUwNHggaGxlbj0lZCBmd2xlbj0lZFxuIiwKKwkJCQkJcmlkLCBsZW4sIChoZmEzODR4Mmhvc3RfMTYocmVjLnJlY2xlbiktMSkqMik7CisJCQlyZXN1bHQgPSAtRU5PREFUQTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCXJlc3VsdCA9IGhmYTM4NHhfY29weV9mcm9tX2JhcCggaHcsIEhGQTM4NHhfQkFQX1BST0MsIHJpZCwgc2l6ZW9mKHJlYyksIGJ1ZiwgbGVuKTsKKworCX0KKworIGZhaWw6CisJc3Bpbl91bmxvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY21kX21vbml0b3IKKyoKKyogRW5hYmxlcyB0aGUgJ21vbml0b3IgbW9kZScgb2YgdGhlIE1BQy4gIEhlcmUncyB0aGUgZGVzY3JpcHRpb24gb2YKKyogbW9uaXRvciBtb2RlIHRoYXQgSSd2ZSByZWNlaXZlZCB0aHVzIGZhcjoKKyoKKyogICJUaGUgIm1vbml0b3IgbW9kZSIgb2Ygb3BlcmF0aW9uIGlzIHRoYXQgdGhlIE1BQyBwYXNzZXMgYWxsCisqICBmcmFtZXMgZm9yIHdoaWNoIHRoZSBQTENQIGNoZWNrcyBhcmUgY29ycmVjdC4gQWxsIHJlY2VpdmVkCisqICBNUERVcyBhcmUgcGFzc2VkIHRvIHRoZSBob3N0IHdpdGggTUFDIFBvcnQgPSA3LCB3aXRoIGEKKyogIHJlY2VpdmUgc3RhdHVzIG9mIGdvb2QsIEZDUyBlcnJvciwgb3IgdW5kZWNyeXB0YWJsZS4gUGFzc2luZworKiAgY2VydGFpbiBNUERVcyBpcyBhIHZpb2xhdGlvbiBvZiB0aGUgODAyLjExIHN0YW5kYXJkLCBidXQgdXNlZnVsCisqICBmb3IgYSBkZWJ1Z2dpbmcgdG9vbC4iICBOb3JtYWwgY29tbXVuaWNhdGlvbiBpcyBub3QgcG9zc2libGUKKyogIHdoaWxlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWVuYWJsZQkJYSBjb2RlICgweDBifDB4MGYpIHRoYXQgZW5hYmxlcy9kaXNhYmxlcworKgkJCW1vbml0b3IgbW9kZS4gKGhvc3Qgb3JkZXIpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9tb25pdG9yKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBlbmFibGUpCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX01PTklUT1IpIHwKKwkJSEZBMzg0eF9DTURfQUlORk9fU0VUKGVuYWJsZSk7CisJY21kLnBhcm0wID0gMDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY21kX2Rvd25sb2FkCisqCisqIFNldHMgdGhlIGNvbnRyb2xzIGZvciB0aGUgTUFDIGNvbnRyb2xsZXIgY29kZS9kYXRhIGRvd25sb2FkCisqIHByb2Nlc3MuICBUaGUgYXJndW1lbnRzIHNldCB0aGUgbW9kZSBhbmQgYWRkcmVzcyBhc3NvY2lhdGVkCisqIHdpdGggYSBkb3dubG9hZC4gIE5vdGUgdGhhdCB0aGUgYXV4IHJlZ2lzdGVycyBzaG91bGQgYmUgZW5hYmxlZAorKiBwcmlvciB0byBzZXR0aW5nIG9uZSBvZiB0aGUgZG93bmxvYWQgZW5hYmxlIG1vZGVzLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1vZGUJCTAgLSBEaXNhYmxlIHByb2dyYW1taW5nIGFuZCBiZWdpbiBjb2RlIGV4ZWMKKyoJCQkxIC0gRW5hYmxlIHZvbGF0aWxlIG1lbSBwcm9ncmFtbWluZworKgkJCTIgLSBFbmFibGUgbm9uLXZvbGF0aWxlIG1lbSBwcm9ncmFtbWluZworKgkJCTMgLSBQcm9ncmFtIG5vbi12b2xhdGlsZSBzZWN0aW9uIGZyb20gTlYgZG93bmxvYWQKKyoJCQkgICAgYnVmZmVyLgorKgkJCShob3N0IG9yZGVyKQorKglsb3dhZGRyCisqCWhpZ2hhZGRyCUZvciBtb2RlIDEsIHNldHMgdGhlIGhpZ2ggJiBsb3cgb3JkZXIgYml0cyBvZgorKgkJCXRoZSAiZGVzdGluYXRpb24gYWRkcmVzcyIuICBUaGlzIGFkZHJlc3Mgd2lsbCBiZQorKgkJCXRoZSBleGVjdXRpb24gc3RhcnQgYWRkcmVzcyB3aGVuIGRvd25sb2FkIGlzCisqCQkJc3Vic2VxdWVudGx5IGRpc2FibGVkLgorKgkJCUZvciBtb2RlIDIsIHNldHMgdGhlIGhpZ2ggJiBsb3cgb3JkZXIgYml0cyBvZgorKgkJCXRoZSBkZXN0aW5hdGlvbiBpbiBOViByYW0uCisqCQkJRm9yIG1vZGVzIDAgJiAzLCBzaG91bGQgYmUgemVyby4gKGhvc3Qgb3JkZXIpCisqCQkJTk9URTogdGhlc2UgYWRkcmVzcyBhcmdzIGFyZSBpbiBDTUQgZm9ybWF0CisqCWNvZGVsZW4JCUxlbmd0aCBvZiB0aGUgZGF0YSB0byB3cml0ZSBpbiBtb2RlIDIsCisqCQkJemVybyBvdGhlcndpc2UuIChob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfZG93bmxvYWQoaGZhMzg0eF90ICpodywgVUlOVDE2IG1vZGUsIFVJTlQxNiBsb3dhZGRyLAorCQkJCVVJTlQxNiBoaWdoYWRkciwgVUlOVDE2IGNvZGVsZW4pCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0RPV05MRCkgfAorCQlIRkEzODR4X0NNRF9QUk9HTU9ERV9TRVQobW9kZSk7CisJY21kLnBhcm0wID0gbG93YWRkcjsKKwljbWQucGFybTEgPSBoaWdoYWRkcjsKKwljbWQucGFybTIgPSBjb2RlbGVuOworCisJc3Bpbl9sb2NrX2JoKCZody0+Y21kbG9jayk7CisJcmVzdWx0ID0gaGZhMzg0eF9kbF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKwlzcGluX3VubG9ja19iaCgmaHctPmNtZGxvY2spOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9hdXhfZW5hYmxlCisqCisqIEdvZXMgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBlbmFibGluZyB0aGUgYXV4aWxhcnkgcG9ydC4gIFRoaXMKKyogaXMgbmVjZXNzYXJ5IHByaW9yIHRvIHJhdyByZWFkcy93cml0ZXMgdG8gY2FyZCBkYXRhIHNwYWNlLgorKiBEaXJlY3QgYWNjZXNzIHRvIHRoZSBjYXJkIGRhdGEgc3BhY2UgaXMgb25seSB1c2VkIGZvciBkb3dubG9hZGluZworKiBjb2RlIGFuZCBkZWJ1Z2dpbmcuCisqIE5vdGUgdGhhdCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBiZWZvcmUgYXR0ZW1wdGluZworKiBhIGRvd25sb2FkLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBmYWlsdXJlIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXQpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfYXV4X2VuYWJsZShoZmEzODR4X3QgKmh3LCBpbnQgZm9yY2UpCit7CisJaW50CQlyZXN1bHQgPSAtRVRJTUVET1VUOworCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CisJVUlOVDMyCQlyZXRyaWVzX3JlbWFpbmluZzsKKwlVSU5UMTYJCXJlZzsKKwlVSU5UCQlhdXhlbl9taXJyb3IgPSBody0+YXV4ZW47CisKKwlEQkZFTlRFUjsKKworCS8qIENoZWNrIGZvciBleGlzdGluZyBlbmFibGUgKi8KKwlpZiAoIGh3LT5hdXhlbiApIHsKKwkJaHctPmF1eGVuKys7CisJCXJldHVybiAwOworCX0KKworCS8qIGFjcXVpcmUgdGhlIGxvY2sgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSggJihody0+Y21kbG9jayksIGZsYWdzKTsKKwkvKiB3YWl0IGZvciBjbWQgcmVnaXN0ZXIgYnVzeSBiaXQgdG8gY2xlYXIgKi8KKwlyZXRyaWVzX3JlbWFpbmluZyA9IDEwMDAwMDsKKwlkbyB7CisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NNRCk7CisJCXVkZWxheSgxMCk7CisJfQorCXdoaWxlIChIRkEzODR4X0NNRF9JU0JVU1kocmVnKSAmJiAtLXJldHJpZXNfcmVtYWluaW5nKTsKKwlpZiAocmV0cmllc19yZW1haW5pbmcgIT0gMCkgeworCQkvKiBidXN5IGJpdCBjbGVhciwgaXQncyBPSyB0byB3cml0ZSB0byBQYXJhbVggcmVncyAqLworCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9BVVhQVzAsCisJCQlIRkEzODR4X1BBUkFNMCk7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCBIRkEzODR4X0FVWFBXMSwKKwkJCUhGQTM4NHhfUEFSQU0xKTsKKwkJaGZhMzg0eF9zZXRyZWcoaHcsIEhGQTM4NHhfQVVYUFcyLAorCQkJSEZBMzg0eF9QQVJBTTIpOworCisJCS8qIFNldCB0aGUgYXV4IGVuYWJsZSBpbiB0aGUgQ29udHJvbCByZWdpc3RlciAqLworCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9DT05UUk9MX0FVWF9ET0VOQUJMRSwKKwkJCUhGQTM4NHhfQ09OVFJPTCk7CisKKwkJLyogTm93IHdhaXQgZm9yIGNvbXBsZXRpb24gKi8KKwkJcmV0cmllc19yZW1haW5pbmcgPSAxMDAwMDA7CisJCWRvIHsKKwkJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NPTlRST0wpOworCQkJdWRlbGF5KDEwKTsKKwkJfQorCQl3aGlsZSAoICgocmVnICYgKEJJVDE0fEJJVDE1KSkgIT0gSEZBMzg0eF9DT05UUk9MX0FVWF9JU0VOQUJMRUQpICYmCisJCQktLXJldHJpZXNfcmVtYWluaW5nICk7CisJCWlmIChyZXRyaWVzX3JlbWFpbmluZyAhPSAwKSB7CisJCQlyZXN1bHQgPSAwOworCQkJaHctPmF1eGVuKys7CisJCX0KKwl9CisKKwkvKiBGb3JjZSBpdCBlbmFibGVkIGV2ZW4gaWYgdGhlIGNvbW1hbmQgZmFpbGVkLCBpZiB0b2xkLi4gKi8KKwlpZiAoKGh3LT5hdXhlbiA9PSBhdXhlbl9taXJyb3IpICYmIGZvcmNlKQorCQlody0+YXV4ZW4rKzsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoICYoaHctPmNtZGxvY2spLCBmbGFncyk7CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9hdXhfZGlzYWJsZQorKgorKiBHb2VzIHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgZGlzYWJsaW5nIHRoZSBhdXhpbGFyeSBwb3J0CisqIGVuYWJsZWQgd2l0aCBhdXhfZW5hYmxlKCkuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dCkKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9hdXhfZGlzYWJsZShoZmEzODR4X3QgKmh3KQoreworCWludAkJcmVzdWx0ID0gLUVUSU1FRE9VVDsKKwl1bnNpZ25lZCBsb25nICAgdGltZW91dDsKKwlVSU5UMTYJCXJlZyA9IDA7CisKKwlEQkZFTlRFUjsKKworCS8qIFNlZSBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgZW5hYmxlICovCisJaWYgKGh3LT5hdXhlbikgaHctPmF1eGVuLS07CisJaWYgKGh3LT5hdXhlbikgcmV0dXJuIDA7CisKKwkvKiBDbGVhciB0aGUgYXV4IGVuYWJsZSBpbiB0aGUgQ29udHJvbCByZWdpc3RlciAqLworCWhmYTM4NHhfc2V0cmVnKGh3LCAwLCBIRkEzODR4X1BBUkFNMCk7CisJaGZhMzg0eF9zZXRyZWcoaHcsIDAsIEhGQTM4NHhfUEFSQU0xKTsKKwloZmEzODR4X3NldHJlZyhodywgMCwgSEZBMzg0eF9QQVJBTTIpOworCWhmYTM4NHhfc2V0cmVnKGh3LCBIRkEzODR4X0NPTlRST0xfQVVYX0RPRElTQUJMRSwKKwkJSEZBMzg0eF9DT05UUk9MKTsKKworCS8qIE5vdyB3YWl0IGZvciBjb21wbGV0aW9uICovCisJdGltZW91dCA9IGppZmZpZXMgKyAxKkhaOworCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NPTlRST0wpOworCXdoaWxlICggKChyZWcgJiAoQklUMTR8QklUMTUpKSAhPSBIRkEzODR4X0NPTlRST0xfQVVYX0lTRElTQUJMRUQpICYmCisJCXRpbWVfYmVmb3JlKGppZmZpZXMsdGltZW91dCkgKXsKKwkJdWRlbGF5KDEwKTsKKwkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfQ09OVFJPTCk7CisJfQorCWlmICgocmVnICYgKEJJVDE0fEJJVDE1KSkgPT0gSEZBMzg0eF9DT05UUk9MX0FVWF9JU0RJU0FCTEVEICkgeworCQlyZXN1bHQgPSAwOworCX0KKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfbG93X2xldmVsCisqCisqIFdyaXRlIHRlc3QgY29tbWFuZHMgdG8gdGhlIGNhcmQuICBTb21lIHRlc3QgY29tbWFuZHMgZG9uJ3QgbWFrZQorKiBzZW5zZSB3aXRob3V0IHByaW9yIHNldC11cC4gIEZvciBleGFtcGxlLCBjb250aW5vdXMgVFggaXNuJ3QgdmVyeQorKiB1c2VmdWwgdW50aWwgeW91IHNldCB0aGUgY2hhbm5lbC4gIFRoYXQgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgcHJvY2VzcyB0aHJlYWQKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9sb3dfbGV2ZWwoaGZhMzg0eF90ICpodywgaGZhMzg0eF9tZXRhY21kX3QgKmNtZCkKK3sKKwlpbnQgICAgICAgICAgICAgcmVzdWx0ID0gMDsKKwlEQkZFTlRFUjsKKworCS8qIERvIGkgbmVlZCBhIGhvc3QyaGZhLi4uIGNvbnZlcnNpb24gPyAqLworI2lmIDAKKwlwcmludGsoS0VSTl9JTkZPICIlI3ggJSN4ICUjeCAlI3hcbiIsIGNtZC0+Y21kLCBjbWQtPnBhcm0wLCBjbWQtPnBhcm0xLCBjbWQtPnBhcm0yKTsKKyNlbmRpZgorCXNwaW5fbG9ja19iaCgmaHctPmNtZGxvY2spOworCXJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgY21kKTsKKwlzcGluX3VubG9ja19iaCgmaHctPmNtZGxvY2spOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qIFRPRE86IGRldGVybWluZSBpZiB0aGVzZSB3aWxsIGV2ZXIgYmUgbmVlZGVkICovCisjaWYgMAoraW50IGhmYTM4NHhfY21kX3JlYWRtaWYoaGZhMzg0eF90ICpodykKK3sKKwlEQkZFTlRFUjsKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKK2ludCBoZmEzODR4X2NtZF93cml0ZW1pZihoZmEzODR4X3QgKmh3KQoreworCURCRkVOVEVSOworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9tbWlfcmVhZAorKgorKiBSZWFkIG1taSByZWdpc3RlcnMuICBtbWkgaXMgaW50ZXJzaWwtc3BlYWsgZm9yIHRoZSBiYXNlYmFuZAorKiBwcm9jZXNzb3IgcmVnaXN0ZXJzLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIGh3ICAgICAgICAgICAgICBkZXZpY2Ugc3RydWN0dXJlCisqICAgICAgIHJlZ2lzdGVyICAgICAgICBUaGUgdGVzdCByZWdpc3RlciB0byBiZSBhY2Nlc3NlZCAobXVzdCBiZSBldmVuICMpLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgICAgICAgICAgICAgc3VjY2VzcworKiAgICAgICA+MCAgICAgICAgICAgICAgZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqICAgICAgIDwwICAgICAgICAgICAgICBkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgIHByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfbW1pX3JlYWQoaGZhMzg0eF90ICpodywgVUlOVDMyIGFkZHIsIFVJTlQzMiAqcmVzcCkKK3sKKyAgICAgICAgaW50ICAgICAgICAgICAgIHJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisgICAgICAgIERCRkVOVEVSOworCWNtZC5jbWQgPSAoVUlOVDE2KSAweDMwOworCWNtZC5wYXJtMCA9IChVSU5UMTYpIGFkZHI7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisgICAgICAgIC8qIERvIGkgbmVlZCBhIGhvc3QyaGZhLi4uIGNvbnZlcnNpb24gPyAqLworCXNwaW5fbG9ja19iaCgmaHctPmNtZGxvY2spOworCXJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgJmNtZCk7CisJc3Bpbl91bmxvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKworCSpyZXNwID0gKFVJTlQzMikgY21kLnJlc3VsdC5yZXNwMDsKKworICAgICAgICBEQkZFWElUOworICAgICAgICByZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX21taV93cml0ZQorKgorKiBSZWFkIG1taSByZWdpc3RlcnMuICBtbWkgaXMgaW50ZXJzaWwtc3BlYWsgZm9yIHRoZSBiYXNlYmFuZAorKiBwcm9jZXNzb3IgcmVnaXN0ZXJzLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIGh3ICAgICAgICAgICAgICBkZXZpY2Ugc3RydWN0dXJlCisqICAgICAgIGFkZHIgICAgICAgICAgICBUaGUgdGVzdCByZWdpc3RlciB0byBiZSBhY2Nlc3NlZCAobXVzdCBiZSBldmVuICMpLgorKiAgICAgICBkYXRhICAgICAgICAgICAgVGhlIGRhdGEgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlZ2lzdGVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgICAgICAgICAgICAgc3VjY2VzcworKiAgICAgICA+MCAgICAgICAgICAgICAgZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqICAgICAgIDwwICAgICAgICAgICAgICBkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgIHByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworaW50CitoZmEzODR4X2RydnJfbW1pX3dyaXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQzMiBhZGRyLCBVSU5UMzIgZGF0YSkKK3sKKyAgICAgICAgaW50ICAgICAgICAgICAgIHJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisgICAgICAgIERCRkVOVEVSOworCWNtZC5jbWQgPSAoVUlOVDE2KSAweDMxOworCWNtZC5wYXJtMCA9IChVSU5UMTYpIGFkZHI7CisJY21kLnBhcm0xID0gKFVJTlQxNikgZGF0YTsKKwljbWQucGFybTIgPSAwOworCisgICAgICAgIFdMQU5fTE9HX0RFQlVHKDEsIm1taSB3cml0ZSA6IGFkZHIgPSAweCUwOHhcbiIsIGFkZHIpOworICAgICAgICBXTEFOX0xPR19ERUJVRygxLCJtbWkgd3JpdGUgOiBkYXRhID0gMHglMDh4XG4iLCBkYXRhKTsKKworICAgICAgICAvKiBEbyBpIG5lZWQgYSBob3N0MmhmYS4uLiBjb252ZXJzaW9uID8gKi8KKwlzcGluX2xvY2tfYmgoJmh3LT5jbWRsb2NrKTsKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCXNwaW5fdW5sb2NrX2JoKCZody0+Y21kbG9jayk7CisKKyAgICAgICAgREJGRVhJVDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBUT0RPOiBkZXRlcm1pbmUgaWYgdGhlc2Ugd2lsbCBldmVyIGJlIG5lZWRlZCAqLworI2lmIDAKK2ludCBoZmEzODR4X2NtZF9yZWFkbWlmKGhmYTM4NHhfdCAqaHcpCit7CisgICAgICAgIERCRkVOVEVSOworICAgICAgICBEQkZFWElUOworICAgICAgICByZXR1cm4gMDsKK30KKworCitpbnQgaGZhMzg0eF9jbWRfd3JpdGVtaWYoaGZhMzg0eF90ICpodykKK3sKKyAgICAgICAgREJGRU5URVI7CisgICAgICAgIERCRkVYSVQ7CisgICAgICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jb3B5X2Zyb21fYmFwCisqCisqIENvcGllcyBhIGNvbGxlY3Rpb24gb2YgYnl0ZXMgZnJvbSB0aGUgTUFDIGNvbnRyb2xsZXIgbWVtb3J5IHZpYQorKiBvbmUgc2V0IG9mIEJBUCByZWdpc3RlcnMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJYmFwCQlbMHwxXSB3aGljaCBCQVAgdG8gdXNlCisqCWlkCQlGSUQgb3IgUklELCBkZXN0aW5lZCBmb3IgdGhlIHNlbGVjdCByZWdpc3RlciAoaG9zdCBvcmRlcikKKyoJb2Zmc2V0CQlBbiBfZXZlbl8gb2Zmc2V0IGludG8gdGhlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuCisqCQkJRklEL1JJRC4gIFdlIGhhdmVuJ3QgdGhlIG1lYW5zIHRvIHZhbGlkYXRlIHRoaXMsCisqCQkJc28gYmUgY2FyZWZ1bC4gKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJcHRyIHRvIGFycmF5IG9mIGJ5dGVzCisqCWxlbgkJbGVuZ3RoIG9mIGRhdGEgdG8gdHJhbnNmZXIgaW4gYnl0ZXMKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSB2YWx1ZSBvZiBvZmZzZXQgcmVnLgorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfY29weV9mcm9tX2JhcChoZmEzODR4X3QgKmh3LCBVSU5UMTYgYmFwLCBVSU5UMTYgaWQsIFVJTlQxNiBvZmZzZXQsCisJCQkJdm9pZCAqYnVmLCBVSU5UIGxlbikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJdW5zaWduZWQgbG9uZwlmbGFncyA9IDA7CisJVUlOVDgJCSpkID0gKFVJTlQ4KilidWY7CisJVUlOVAkJc2VsZWN0cmVnOworCVVJTlQJCW9mZnNldHJlZzsKKwlVSU5UCQlkYXRhcmVnOworCVVJTlQJCWk7CisJVUlOVDE2CQlyZWcgPSAwOworCisJREJGRU5URVI7CisKKwkvKiBWYWxpZGF0ZSBiYXAsIG9mZnNldCwgYnVmLCBhbmQgbGVuICovCisJaWYgKCAoYmFwID4gMSkgfHwKKwkgICAgIChvZmZzZXQgPiBIRkEzODR4X0JBUF9PRkZTRVRfTUFYKSB8fAorCSAgICAgKG9mZnNldCAlIDIpIHx8CisJICAgICAoYnVmID09IE5VTEwpIHx8CisJICAgICAobGVuID4gSEZBMzg0eF9CQVBfREFUQUxFTl9NQVgpICl7CisJICAgICAJcmVzdWx0ID0gLUVJTlZBTDsKKwl9IGVsc2UgeworCQlzZWxlY3RyZWcgPSAoYmFwID09IDEpID8gIEhGQTM4NHhfU0VMRUNUMSA6IEhGQTM4NHhfU0VMRUNUMCA7CisJCW9mZnNldHJlZyA9IChiYXAgPT0gMSkgPyAgSEZBMzg0eF9PRkZTRVQxIDogSEZBMzg0eF9PRkZTRVQwIDsKKwkJZGF0YXJlZyA9ICAgKGJhcCA9PSAxKSA/ICBIRkEzODR4X0RBVEExIDogSEZBMzg0eF9EQVRBMCA7CisKKwkJLyogT2J0YWluIGxvY2sgKi8KKwkJc3Bpbl9sb2NrX2lycXNhdmUoICYoaHctPmJhcGxvY2spLCBmbGFncyk7CisKKwkJLyogV3JpdGUgaWQgdG8gc2VsZWN0IHJlZyAqLworCQloZmEzODR4X3NldHJlZyhodywgaWQsIHNlbGVjdHJlZyk7CisJCS8qIFdyaXRlIG9mZnNldCB0byBvZmZzZXQgcmVnICovCisJCWhmYTM4NHhfc2V0cmVnKGh3LCBvZmZzZXQsIG9mZnNldHJlZyk7CisJCS8qIFdhaXQgZm9yIG9mZnNldFtidXN5XSB0byBjbGVhciAoc2VlIEJBUF9USU1FT1VUKSAqLworCQlpID0gMDsKKwkJZG8geworCQkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIG9mZnNldHJlZyk7CisJCQlpZiAoIGkgPiAwICkgdWRlbGF5KDEwKTsKKwkJCWkrKzsKKwkJfSB3aGlsZSAoIGkgPCBwcmlzbTJfYmFwX3RpbWVvdXQgJiYgSEZBMzg0eF9PRkZTRVRfSVNCVVNZKHJlZykpOworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1BDSSkKKwkJLyogUmVsZWFzZSBsb2NrICovCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoICYoaHctPmJhcGxvY2spLCBmbGFncyk7CisjZW5kaWYKKworCQlpZiAoIEhGQTM4NHhfT0ZGU0VUX0lTQlVTWShyZWcpICl7CisJCQkvKiBJZiB0aW1lb3V0LCByZXR1cm4gLUVUSU1FRE9VVCAqLworCQkJcmVzdWx0ID0gcmVnOworCQl9IGVsc2UgaWYgKCBIRkEzODR4X09GRlNFVF9JU0VSUihyZWcpICl7CisJCQkvKiBJZiBvZmZzZXRbZXJyXSA9PSAxLCByZXR1cm4gLUVJTlZBTCAqLworCQkJcmVzdWx0ID0gcmVnOworCQl9IGVsc2UgeworCQkJLyogUmVhZCBldmVuKGxlbikgYnVmIGNvbnRlbnRzIGZyb20gZGF0YSByZWcgKi8KKwkJCWZvciAoIGkgPSAwOyBpIDwgKGxlbiAmIDB4ZmZmZSk7IGkrPTIgKSB7CisJCQkJKihVSU5UMTYqKSgmKGRbaV0pKSA9CisJCQkJCWhmYTM4NHhfZ2V0cmVnX25vc3dhcChodywgZGF0YXJlZyk7CisJCQl9CisJCQkvKiBJZiBsZW4gb2RkLCBoYW5kbGUgbGFzdCBieXRlICovCisJCQlpZiAoIGxlbiAlIDIgKXsKKwkJCQlyZWcgPSBoZmEzODR4X2dldHJlZ19ub3N3YXAoaHcsIGRhdGFyZWcpOworCQkJCWRbbGVuLTFdID0gKChVSU5UOCopKCZyZWcpKVswXTsKKwkJCX0KKwkJfQorCisJCS8qIEFjY29yZGluZyB0byBJbnRlcnNpbCBlcnJhdGEgZGF0ZWQgOS8xNi8wMjoKKworCQkiSW4gUFJJU00gUENJIE1BQyBob3N0IGludGVyZmFjZSwgaWYgYm90aCBCQVBzIGFyZSBjb25jdXJyZW50bHkKKwkJIHJlcXVlc2luZyBtZW1vcnkgYWNjZXNzLCBib3RoIHdpbGwgYWNjZXB0IHRoZSBBY2suICAgVGhlcmUgaXMgbm8KKwkJIGZpcm13YXJlIHdvcmthcm91bmQgcG9zc2libGUuICBUbyBwcmV2ZW50IEJBUCBhY2Nlc3MgZmFpbHVyZXMgb3IKKwkJIGhhbmcgY29uZGl0aW9ucyB0aGUgaG9zdCBNVVNUIE5PVCBhY2Nlc3MgYm90aCBCQVBzIGluIHN1Y2Vzc2lvbgorCQkgdW5sZXNzIGF0IGxlYXN0IDV1cyBlbGFwc2VzIGJldHdlZW4gYWNjZXNzZXMuICBUaGUgc2FmZXN0IGNob2ljZQorCQkgaXMgdG8gVVNFIE9OTFkgT05FIEJBUCBmb3IgYWxsIGRhdGEgbW92ZW1lbnQgb3BlcmF0aW9ucy4iCisKKwkJIFdoYXQgdGhpcyBtZWFuczoKKworCQkgV2UgaGF2ZSB0byBzZXJpYWxpemUgQUxMIEJBUCBhY2Nlc3NlcywgYW5kIGZ1cnRoZXJtb3JlLCBhZGQgYSA1dXMKKwkJIGRlbGF5IGFmdGVyIGFjY2VzcyBpZiB3ZSdyZSB1c2luZyBhIFBDSSBwbGF0Zm9ybS4KKworCQkgVW5mb3J0dW5hdGVseSwgdGhpcyBtZWFucyB3ZSBoYXZlIHRvIGxvY2sgb3V0IGludGVycnVwdHMgdGhyb3Vnb3V0CisJCSB0aGUgZW50aXJlIEJBUCBjb3B5LgorCisJCSBJdCByZW1haW5zIHRvIGJlIHNlZW4gaWYgIkJBUCBhY2Nlc3MiIG1lYW5zICJCQVAgc2V0dXAiIG9yIHRoZSBtb3JlCisJCSBsaXRlcmFsIGRlZmluaXRpb24gb2YgImNvcHlpbmcgZGF0YSBiYWNrIGFuZCBmb3J0aCIgIEknbSBlcnJpbmcgZm9yCisJCSB0aGUgbGF0dGVyLCBzYWZlciBkZWZpbml0aW9uLiAgLS0gU0xQLgorCisJCSovCisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisJCXVkZWxheSg1KTsKKwkJLyogUmVsZWFzZSBsb2NrICovCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoICYoaHctPmJhcGxvY2spLCBmbGFncyk7CisjZW5kaWYKKworCX0KKworCWlmIChyZXN1bHQpIHsKKwkgIFdMQU5fTE9HX0RFQlVHKDEsCisJCQkgICJjb3B5X2Zyb21fYmFwKDB4JTA0eCwgMCwgJWQpIGZhaWxlZCwgcmVzdWx0PTB4JXhcbiIsCisJCQkgIHJlZywgbGVuLCByZXN1bHQpOworCX0KKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY29weV90b19iYXAKKyoKKyogQ29waWVzIGEgY29sbGVjdGlvbiBvZiBieXRlcyB0byB0aGUgTUFDIGNvbnRyb2xsZXIgbWVtb3J5IHZpYQorKiBvbmUgc2V0IG9mIEJBUCByZWdpc3RlcnMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJYmFwCQlbMHwxXSB3aGljaCBCQVAgdG8gdXNlCisqCWlkCQlGSUQgb3IgUklELCBkZXN0aW5lZCBmb3IgdGhlIHNlbGVjdCByZWdpc3RlciAoaG9zdCBvcmRlcikKKyoJb2Zmc2V0CQlBbiBfZXZlbl8gb2Zmc2V0IGludG8gdGhlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuCisqCQkJRklEL1JJRC4gIFdlIGhhdmVuJ3QgdGhlIG1lYW5zIHRvIHZhbGlkYXRlIHRoaXMsCisqCQkJc28gYmUgY2FyZWZ1bC4gKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJcHRyIHRvIGFycmF5IG9mIGJ5dGVzCisqCWxlbgkJbGVuZ3RoIG9mIGRhdGEgdG8gdHJhbnNmZXIgKGluIGJ5dGVzKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIHZhbHVlIG9mIG9mZnNldCByZWcuCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IgKHRpbWVvdXR8YmFkIGFyZykKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jb3B5X3RvX2JhcChoZmEzODR4X3QgKmh3LCBVSU5UMTYgYmFwLCBVSU5UMTYgaWQsIFVJTlQxNiBvZmZzZXQsCisJCQkJdm9pZCAqYnVmLCBVSU5UIGxlbikKK3sKKwlyZXR1cm4gaGZhMzg0eF9jb3B5X3RvX2JhcDQoaHcsIGJhcCwgaWQsIG9mZnNldCwgYnVmLCBsZW4sIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsIDApOworfQorCitpbnQgaGZhMzg0eF9jb3B5X3RvX2JhcDQoaGZhMzg0eF90ICpodywgVUlOVDE2IGJhcCwgVUlOVDE2IGlkLCBVSU5UMTYgb2Zmc2V0LAorCQkJIHZvaWQgKmJ1ZiwgVUlOVCBsZW4xLCB2b2lkKiBidWYyLCBVSU5UIGxlbjIsCisJCQkgdm9pZCAqYnVmMywgVUlOVCBsZW4zLCB2b2lkICpidWY0LCBVSU5UIGxlbjQpCit7CisJaW50CQlyZXN1bHQgPSAwOworCXVuc2lnbmVkIGxvbmcJZmxhZ3MgPSAwOworCVVJTlQ4CQkqZDsKKwlVSU5UCQlzZWxlY3RyZWc7CisJVUlOVAkJb2Zmc2V0cmVnOworCVVJTlQJCWRhdGFyZWc7CisJVUlOVAkJaTsKKwlVSU5UMTYJCXJlZzsKKworCURCRkVOVEVSOworCisvLwlwcmludGsoS0VSTl9ERUJVRyAiY3RiMSAlZCBpZCAlMDR4IG8gJWQgJWQgJWQgJWQgJWRcbiIsIGJhcCwgaWQsIG9mZnNldCwgbGVuMSwgbGVuMiwgbGVuMywgbGVuNCk7CisKKwkvKiBWYWxpZGF0ZSBiYXAsIG9mZnNldCwgYnVmLCBhbmQgbGVuICovCisJaWYgKCAoYmFwID4gMSkgfHwKKwkgICAgIChvZmZzZXQgPiBIRkEzODR4X0JBUF9PRkZTRVRfTUFYKSB8fAorCSAgICAgKG9mZnNldCAlIDIpIHx8CisJICAgICAoYnVmID09IE5VTEwpIHx8CisJICAgICAobGVuMStsZW4yK2xlbjMrbGVuNCA+IEhGQTM4NHhfQkFQX0RBVEFMRU5fTUFYKSApeworCSAgICAgCXJlc3VsdCA9IC1FSU5WQUw7CisJfSBlbHNlIHsKKwkJc2VsZWN0cmVnID0gKGJhcCA9PSAxKSA/IEhGQTM4NHhfU0VMRUNUMSA6IEhGQTM4NHhfU0VMRUNUMDsKKwkJb2Zmc2V0cmVnID0gKGJhcCA9PSAxKSA/IEhGQTM4NHhfT0ZGU0VUMSA6IEhGQTM4NHhfT0ZGU0VUMDsKKwkJZGF0YXJlZyA9ICAgKGJhcCA9PSAxKSA/IEhGQTM4NHhfREFUQTEgICA6IEhGQTM4NHhfREFUQTA7CisJCS8qIE9idGFpbiBsb2NrICovCisJCXNwaW5fbG9ja19pcnFzYXZlKCAmKGh3LT5iYXBsb2NrKSwgZmxhZ3MpOworCisJCS8qIFdyaXRlIGlkIHRvIHNlbGVjdCByZWcgKi8KKwkJaGZhMzg0eF9zZXRyZWcoaHcsIGlkLCBzZWxlY3RyZWcpOworCQl1ZGVsYXkoMTApOworCQkvKiBXcml0ZSBvZmZzZXQgdG8gb2Zmc2V0IHJlZyAqLworCQloZmEzODR4X3NldHJlZyhodywgb2Zmc2V0LCBvZmZzZXRyZWcpOworCQkvKiBXYWl0IGZvciBvZmZzZXRbYnVzeV0gdG8gY2xlYXIgKHNlZSBCQVBfVElNRU9VVCkgKi8KKwkJaSA9IDA7CisJCWRvIHsKKwkJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBvZmZzZXRyZWcpOworCQkJaWYgKCBpID4gMCApIHVkZWxheSgxMCk7CisJCQlpKys7CisJCX0gd2hpbGUgKCBpIDwgcHJpc20yX2JhcF90aW1lb3V0ICYmIEhGQTM4NHhfT0ZGU0VUX0lTQlVTWShyZWcpKTsKKworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1BDSSkKKwkJLyogUmVsZWFzZSBsb2NrICovCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoICYoaHctPmJhcGxvY2spLCBmbGFncyk7CisjZW5kaWYKKworCQlpZiAoIEhGQTM4NHhfT0ZGU0VUX0lTQlVTWShyZWcpICl7CisJCQkvKiBJZiB0aW1lb3V0LCByZXR1cm4gcmVnICovCisJCQlyZXN1bHQgPSByZWc7CisJCX0gZWxzZSBpZiAoIEhGQTM4NHhfT0ZGU0VUX0lTRVJSKHJlZykgKXsKKwkJCS8qIElmIG9mZnNldFtlcnJdID09IDEsIHJldHVybiByZWcgKi8KKwkJCXJlc3VsdCA9IHJlZzsKKwkJfSBlbHNlIHsKKwkJCWQgPSAoVUlOVDgqKWJ1ZjsKKwkJCS8qIFdyaXRlIGV2ZW4obGVuMSkgYnVmIGNvbnRlbnRzIHRvIGRhdGEgcmVnICovCisJCQlmb3IgKCBpID0gMDsgaSA8IChsZW4xICYgMHhmZmZlKTsgaSs9MiApIHsKKwkJCQloZmEzODR4X3NldHJlZ19ub3N3YXAoaHcsCisJCQkJCSooVUlOVDE2KikoJihkW2ldKSksIGRhdGFyZWcpOworCQkJfQorCQkJaWYgKGxlbjEgJiAxKSB7CisJCQkJVUlOVDE2IGRhdGE7CisJCQkJVUlOVDggKmIgPSAoVUlOVDggKikgJmRhdGE7CisJCQkJYlswXSA9IGRbbGVuMS0xXTsKKwkJCQlpZiAoYnVmMiAhPSBOVUxMKSB7CisJCQkJCWQgPSAoVUlOVDgqKWJ1ZjI7CisJCQkJCWJbMV0gPSBkWzBdOworCQkJCQlsZW4yLS07CisJCQkJCWJ1ZjIrKzsKKwkJCQl9CisJCQkJaGZhMzg0eF9zZXRyZWdfbm9zd2FwKGh3LCBkYXRhLCBkYXRhcmVnKTsKKwkJCX0KKwkJCWlmICgoYnVmMiAhPSBOVUxMKSAmJiAobGVuMiA+IDApKSB7CisJCQkJLyogV3JpdGUgZXZlbihsZW4yKSBidWYgY29udGVudHMgdG8gZGF0YSByZWcgKi8KKwkJCQlkID0gKFVJTlQ4KilidWYyOworCQkJCWZvciAoIGkgPSAwOyBpIDwgKGxlbjIgJiAweGZmZmUpOyBpKz0yICkgeworCQkJCQloZmEzODR4X3NldHJlZ19ub3N3YXAoaHcsICooVUlOVDE2KikoJihkW2ldKSksIGRhdGFyZWcpOworCQkJCX0KKwkJCQlpZiAobGVuMiAmIDEpIHsKKwkJCQkJVUlOVDE2IGRhdGE7CisJCQkJCVVJTlQ4ICpiID0gKFVJTlQ4ICopICZkYXRhOworCQkJCQliWzBdID0gZFtsZW4yLTFdOworCQkJCQlpZiAoYnVmMyAhPSBOVUxMKSB7CisJCQkJCQlkID0gKFVJTlQ4KilidWYzOworCQkJCQkJYlsxXSA9IGRbMF07CisJCQkJCQlsZW4zLS07CisJCQkJCQlidWYzKys7CisJCQkJCX0KKwkJCQkJaGZhMzg0eF9zZXRyZWdfbm9zd2FwKGh3LCBkYXRhLCBkYXRhcmVnKTsKKwkJCQl9CisJCQl9CisKKwkJCWlmICgoYnVmMyAhPSBOVUxMKSAmJiAobGVuMyA+IDApKSB7CisJCQkJLyogV3JpdGUgZXZlbihsZW4zKSBidWYgY29udGVudHMgdG8gZGF0YSByZWcgKi8KKwkJCQlkID0gKFVJTlQ4KilidWYzOworCQkJCWZvciAoIGkgPSAwOyBpIDwgKGxlbjMgJiAweGZmZmUpOyBpKz0yICkgeworCQkJCQloZmEzODR4X3NldHJlZ19ub3N3YXAoaHcsICooVUlOVDE2KikoJihkW2ldKSksIGRhdGFyZWcpOworCQkJCX0KKwkJCQlpZiAobGVuMyAmIDEpIHsKKwkJCQkJVUlOVDE2IGRhdGE7CisJCQkJCVVJTlQ4ICpiID0gKFVJTlQ4ICopICZkYXRhOworCQkJCQliWzBdID0gZFtsZW4zLTFdOworCQkJCQlpZiAoYnVmNCAhPSBOVUxMKSB7CisJCQkJCQlkID0gKFVJTlQ4KilidWY0OworCQkJCQkJYlsxXSA9IGRbMF07CisJCQkJCQlsZW40LS07CisJCQkJCQlidWY0Kys7CisJCQkJCX0KKwkJCQkJaGZhMzg0eF9zZXRyZWdfbm9zd2FwKGh3LCBkYXRhLCBkYXRhcmVnKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoKGJ1ZjQgIT0gTlVMTCkgJiYgKGxlbjQgPiAwKSkgeworCQkJCS8qIFdyaXRlIGV2ZW4obGVuNCkgYnVmIGNvbnRlbnRzIHRvIGRhdGEgcmVnICovCisJCQkJZCA9IChVSU5UOCopYnVmNDsKKwkJCQlmb3IgKCBpID0gMDsgaSA8IChsZW40ICYgMHhmZmZlKTsgaSs9MiApIHsKKwkJCQkJaGZhMzg0eF9zZXRyZWdfbm9zd2FwKGh3LCAqKFVJTlQxNiopKCYoZFtpXSkpLCBkYXRhcmVnKTsKKwkJCQl9CisJCQkJaWYgKGxlbjQgJiAxKSB7CisJCQkJCVVJTlQxNiBkYXRhOworCQkJCQlVSU5UOCAqYiA9IChVSU5UOCAqKSAmZGF0YTsKKwkJCQkJYlswXSA9IGRbbGVuNC0xXTsKKwkJCQkJYlsxXSA9IDA7CisKKwkJCQkJaGZhMzg0eF9zZXRyZWdfbm9zd2FwKGh3LCBkYXRhLCBkYXRhcmVnKTsKKwkJCQl9CisJCQl9CisvLwkJCXByaW50ayhLRVJOX0RFQlVHICJjdGIyICVkIGlkICUwNHggbyAlZCAlZCAlZCAlZCAlZFxuIiwgYmFwLCBpZCwgb2Zmc2V0LCBsZW4xLCBsZW4yLCBsZW4zLCBsZW40KTsKKworCQl9CisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisJCXVkZWxheSg1KTsKKwkJLyogUmVsZWFzZSBsb2NrICovCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoICYoaHctPmJhcGxvY2spLCBmbGFncyk7CisjZW5kaWYKKworCX0KKworCWlmIChyZXN1bHQpCisJCVdMQU5fTE9HX0VSUk9SKCJjb3B5X3RvX2JhcCgpIGZhaWxlZC5cbiIpOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NvcHlfZnJvbV9hdXgKKyoKKyogQ29waWVzIGEgY29sbGVjdGlvbiBvZiBieXRlcyBmcm9tIHRoZSBjb250cm9sbGVyIG1lbW9yeS4gIFRoZQorKiBBdXhpbGlhcnkgcG9ydCBNVVNUIGJlIGVuYWJsZWQgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorKiBXZSBfbWlnaHRfIGJlIGluIGEgZG93bmxvYWQgc3RhdGUuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJY2FyZGFkZHIJYWRkcmVzcyBpbiBoZmEzODR4IGRhdGEgc3BhY2UgdG8gcmVhZAorKglhdXhjdGwJCWFkZHJlc3Mgc3BhY2Ugc2VsZWN0CisqCWJ1ZgkJcHRyIHRvIGRlc3RpbmF0aW9uIGhvc3QgYnVmZmVyCisqCWxlbgkJbGVuZ3RoIG9mIGRhdGEgdG8gdHJhbnNmZXIgKGluIGJ5dGVzKQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoJYnVmIGNvbnRhaW5zIHRoZSBkYXRhIGNvcGllZAorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkCitoZmEzODR4X2NvcHlfZnJvbV9hdXgoCisJaGZhMzg0eF90ICpodywgVUlOVDMyIGNhcmRhZGRyLCBVSU5UMzIgYXV4Y3RsLCB2b2lkICpidWYsIFVJTlQgbGVuKQoreworCVVJTlQxNgkJY3VycnBhZ2U7CisJVUlOVDE2CQljdXJyb2Zmc2V0OworCVVJTlQJCWkgPSAwOworCisJREJGRU5URVI7CisKKwlpZiAoICEoaHctPmF1eGVuKSApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSJBdHRlbXB0IHRvIHJlYWQgMHglMDR4IHdoZW4gYXV4IG5vdCBlbmFibGVkXG4iLAorCQkJY2FyZGFkZHIpOworCQlyZXR1cm47CisKKwl9CisJLyogQnVpbGQgYXBwcm9wcmlhdGUgYXV4IHBhZ2UgYW5kIG9mZnNldCAqLworCWN1cnJwYWdlID0gSEZBMzg0eF9BVVhfTUtQQUdFKGNhcmRhZGRyKTsKKwljdXJyb2Zmc2V0ID0gSEZBMzg0eF9BVVhfTUtPRkYoY2FyZGFkZHIsIGF1eGN0bCk7CisJaGZhMzg0eF9zZXRyZWcoaHcsIGN1cnJwYWdlLCBIRkEzODR4X0FVWFBBR0UpOworCWhmYTM4NHhfc2V0cmVnKGh3LCBjdXJyb2Zmc2V0LCBIRkEzODR4X0FVWE9GRlNFVCk7CisJdWRlbGF5KDUpOwkvKiBiZWF0ICovCisKKwkvKiByZWFkIHRoZSBkYXRhICovCisJd2hpbGUgKCBpIDwgbGVuKSB7CisJCSooKFVJTlQxNiopKGJ1ZitpKSkgPSBoZmEzODR4X2dldHJlZ19ub3N3YXAoaHcsIEhGQTM4NHhfQVVYREFUQSk7CisJCWkrPTI7CisJCWN1cnJvZmZzZXQrPTI7CisJCWlmICggKGN1cnJvZmZzZXQmSEZBMzg0eF9BRERSX0FVWF9PRkZfTUFTSykgPgorCQkJSEZBMzg0eF9BRERSX0FVWF9PRkZfTUFYICkgeworCQkJY3VycnBhZ2UrKzsKKwkJCWN1cnJvZmZzZXQgPSAwOworCQkJY3Vycm9mZnNldCA9IEhGQTM4NHhfQVVYX01LT0ZGKGN1cnJvZmZzZXQsIGF1eGN0bCk7CisJCQloZmEzODR4X3NldHJlZyhodywgY3VycnBhZ2UsIEhGQTM4NHhfQVVYUEFHRSk7CisJCQloZmEzODR4X3NldHJlZyhodywgY3Vycm9mZnNldCwgSEZBMzg0eF9BVVhPRkZTRVQpOworCQkJdWRlbGF5KDUpOwkvKiBiZWF0ICovCisJCX0KKwl9CisJLyogTWFrZSBzdXJlIHRoZSBhdXhjdGwgYml0cyBhcmUgY2xlYXIgKi8KKwloZmEzODR4X3NldHJlZyhodywgMCwgSEZBMzg0eF9BVVhPRkZTRVQpOworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfY29weV90b19hdXgKKyoKKyogQ29waWVzIGEgY29sbGVjdGlvbiBvZiBieXRlcyB0byB0aGUgY29udHJvbGxlciBtZW1vcnkuICBUaGUKKyogQXV4aWxpYXJ5IHBvcnQgTVVTVCBiZSBlbmFibGVkIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyogV2UgX21pZ2h0XyBiZSBpbiBhIGRvd25sb2FkIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWNhcmRhZGRyCWFkZHJlc3MgaW4gaGZhMzg0eCBkYXRhIHNwYWNlIHRvIHJlYWQKKyoJYXV4Y3RsCQlhZGRyZXNzIHNwYWNlIHNlbGVjdAorKglidWYJCXB0ciB0byBkZXN0aW5hdGlvbiBob3N0IGJ1ZmZlcgorKglsZW4JCWxlbmd0aCBvZiBkYXRhIHRvIHRyYW5zZmVyIChpbiBieXRlcykKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCUNvbnRyb2xsZXIgbWVtb3J5IG5vdyBjb250YWlucyBhIGNvcHkgb2YgYnVmCisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQKK2hmYTM4NHhfY29weV90b19hdXgoCisJaGZhMzg0eF90ICpodywgVUlOVDMyIGNhcmRhZGRyLCBVSU5UMzIgYXV4Y3RsLCB2b2lkICpidWYsIFVJTlQgbGVuKQoreworCVVJTlQxNgkJY3VycnBhZ2U7CisJVUlOVDE2CQljdXJyb2Zmc2V0OworCVVJTlQJCWkgPSAwOworCisJREJGRU5URVI7CisKKwlpZiAoICEoaHctPmF1eGVuKSApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSJBdHRlbXB0IHRvIHJlYWQgMHglMDR4IHdoZW4gYXV4IG5vdCBlbmFibGVkXG4iLAorCQkJY2FyZGFkZHIpOworCQlyZXR1cm47CisKKwl9CisJLyogQnVpbGQgYXBwcm9wcmlhdGUgYXV4IHBhZ2UgYW5kIG9mZnNldCAqLworCWN1cnJwYWdlID0gSEZBMzg0eF9BVVhfTUtQQUdFKGNhcmRhZGRyKTsKKwljdXJyb2Zmc2V0ID0gSEZBMzg0eF9BVVhfTUtPRkYoY2FyZGFkZHIsIGF1eGN0bCk7CisJaGZhMzg0eF9zZXRyZWcoaHcsIGN1cnJwYWdlLCBIRkEzODR4X0FVWFBBR0UpOworCWhmYTM4NHhfc2V0cmVnKGh3LCBjdXJyb2Zmc2V0LCBIRkEzODR4X0FVWE9GRlNFVCk7CisJdWRlbGF5KDUpOwkvKiBiZWF0ICovCisKKwkvKiB3cml0ZSB0aGUgZGF0YSAqLworCXdoaWxlICggaSA8IGxlbikgeworCQloZmEzODR4X3NldHJlZ19ub3N3YXAoaHcsCisJCQkqKChVSU5UMTYqKShidWYraSkpLCBIRkEzODR4X0FVWERBVEEpOworCQlpKz0yOworCQljdXJyb2Zmc2V0Kz0yOworCQlpZiAoIGN1cnJvZmZzZXQgPiBIRkEzODR4X0FERFJfQVVYX09GRl9NQVggKSB7CisJCQljdXJycGFnZSsrOworCQkJY3Vycm9mZnNldCA9IDA7CisJCQloZmEzODR4X3NldHJlZyhodywgY3VycnBhZ2UsIEhGQTM4NHhfQVVYUEFHRSk7CisJCQloZmEzODR4X3NldHJlZyhodywgY3Vycm9mZnNldCwgSEZBMzg0eF9BVVhPRkZTRVQpOworCQkJdWRlbGF5KDUpOwkvKiBiZWF0ICovCisJCX0KKwl9CisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfd2FpdAorKgorKiBXYWl0cyBmb3IgYXZhaWxhYmlsaXR5IG9mIHRoZSBDb21tYW5kIHJlZ2lzdGVyLCB0aGVuCisqIGlzc3VlcyB0aGUgZ2l2ZW4gY29tbWFuZC4gIFRoZW4gcG9sbHMgdGhlIEV2c3RhdCByZWdpc3RlcgorKiB3YWl0aW5nIGZvciBjb21tYW5kIGNvbXBsZXRpb24uICBUaW1lb3V0cyBzaG91bGRuJ3QgYmUKKyogcG9zc2libGUgc2luY2Ugd2UncmUgcHJldmVudGluZyBvdmVybGFwcGluZyBjb21tYW5kcyBhbmQgYWxsCisqIGNvbW1hbmRzIHNob3VsZCBiZSBjbGVhcmVkIGFuZCBhY2tub3dsZWRnZWQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJZGV2aWNlIHN0cnVjdHVyZQorKiAgICAgICBjbWQgICAgICAgICAgICAgY21kIHN0cnVjdHVyZS4gIEluY2x1ZGVzIGFsbCBhcmd1bWVudHMgYW5kIHJlc3VsdAorKiAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBwb2ludHMuICBBbGwgaW4gaG9zdCBvcmRlci4KKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgktRVRJTUVET1VUCXRpbWVkIG91dCB3YWl0aW5nIGZvciByZWdpc3RlciByZWFkeSBvcgorKgkJCWNvbW1hbmQgY29tcGxldGlvbgorKgk+MAkJY29tbWFuZCBpbmRpY2F0ZWQgZXJyb3IsIFN0YXR1cyBhbmQgUmVzcDAtMiBhcmUKKyoJCQlpbiBodyBzdHJ1Y3R1cmUuCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IGhmYTM4NHhfZG9jbWRfd2FpdCggaGZhMzg0eF90ICpodywgaGZhMzg0eF9tZXRhY21kX3QgKmNtZCkKK3sKKwlpbnQJCXJlc3VsdCA9IC1FVElNRURPVVQ7CisJVUlOVDE2CQlyZWcgPSAwOworCVVJTlQxNiAgICAgICAgICBjb3VudGVyOworCisJREJGRU5URVI7CisKKwlody0+Y21kZmxhZyA9IDA7CisJaHctPmNtZGRhdGEgPSBjbWQ7CisKKwkvKiB3YWl0IGZvciB0aGUgYnVzeSBiaXQgdG8gY2xlYXIgKi8KKwljb3VudGVyID0gMDsKKwlyZWcgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9DTUQpOworCXdoaWxlICggSEZBMzg0eF9DTURfSVNCVVNZKHJlZykgJiYKKwkJKGNvdW50ZXIgPCAxMCkpIHsKKwkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfQ01EKTsKKwkJY291bnRlcisrOworCQl1ZGVsYXkoMTApOworCX0KKworCWlmIChIRkEzODR4X0NNRF9JU0JVU1kocmVnKSkgeworCQlXTEFOX0xPR19FUlJPUigiaGZhMzg0eF9jbWQgdGltZW91dCgxKSwgcmVnPTB4JTBoeC5cbiIsIHJlZyk7CisJCWdvdG8gZmFpbGVkOworCX0KKwlpZiAoIUhGQTM4NHhfQ01EX0lTQlVTWShyZWcpKSB7CisJCS8qIGJ1c3kgYml0IGNsZWFyLCB3cml0ZSBjb21tYW5kICovCisJCWhmYTM4NHhfc2V0cmVnKGh3LCBjbWQtPnBhcm0wLCBIRkEzODR4X1BBUkFNMCk7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCBjbWQtPnBhcm0xLCBIRkEzODR4X1BBUkFNMSk7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCBjbWQtPnBhcm0yLCBIRkEzODR4X1BBUkFNMik7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCBjbWQtPmNtZCwgSEZBMzg0eF9DTUQpOworCisjaWZkZWYgQ01EX0lSUQorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMiwwKSkKKwkJd2hpbGUgKCEgaHctPmNtZGZsYWcpCisJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKCZody0+Y21kcSk7CisjZWxzZQorCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoaHctPmNtZHEsIGh3LT5jbWRmbGFnKTsKKyNlbmRpZgorCQlyZXN1bHQgPSBIRkEzODR4X1NUQVRVU19SRVNVTFRfR0VUKGNtZC0+c3RhdHVzKTsKKyNlbHNlIC8vIENNRF9JUlEKKwkJLyogTm93IHdhaXQgZm9yIGNvbXBsZXRpb24gKi8KKwkJY291bnRlciA9IDA7CisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0VWU1RBVCk7CisJCS8qIEluaXRpYWxpemF0aW9uIGlzIHRoZSBwcm9ibGVtLiAgSXQgdGFrZXMgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAxMDBtcy4gIm5vcm1hbCIgY29tbWFuZHMgYXJlIHR5cGljYWxseSBpcyBhYm91dAorICAgICAgICAgICAgICAgICAgIDIwMC00MDAgdXMgKEkndmUgbmV2ZXIgc2VlbiBsZXNzIHRoYW4gMjAwKS4gIExvbmdlcgorICAgICAgICAgICAgICAgICAgIGlzIGJldHRlciBzbyB0aGF0IHdlJ3JlIG5vdCBoYW1tZXJpbmcgdGhlIGJ1cy4gKi8KKwkJd2hpbGUgKCAhSEZBMzg0eF9FVlNUQVRfSVNDTUQocmVnKSAmJgorCQkJKGNvdW50ZXIgPCA1MDAwKSkgeworCQkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfRVZTVEFUKTsKKwkJCWNvdW50ZXIrKzsKKwkJCXVkZWxheSgyMDApOworCQl9CisKKwkJaWYgKCBIRkEzODR4X0VWU1RBVF9JU0NNRChyZWcpICkgeworCQkJcmVzdWx0ID0gMDsKKwkJCWNtZC0+cmVzdWx0LnN0YXR1cyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1NUQVRVUyk7CisJCQljbWQtPnJlc3VsdC5yZXNwMCA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1JFU1AwKTsKKwkJCWNtZC0+cmVzdWx0LnJlc3AxID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfUkVTUDEpOworCQkJY21kLT5yZXN1bHQucmVzcDIgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9SRVNQMik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19DTUQsCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCQlyZXN1bHQgPSBIRkEzODR4X1NUQVRVU19SRVNVTFRfR0VUKGNtZC0+cmVzdWx0LnN0YXR1cyk7CisJCX0gZWxzZSB7CisJCQlXTEFOX0xPR19FUlJPUigiaGZhMzg0eF9jbWQgdGltZW91dCgyKSwgcmVnPTB4JTBoeC5cbiIsIHJlZyk7CisJCX0KKyNlbmRpZiAgLyogQ01EX0lSUSAqLworCX0KKworIGZhaWxlZDoKKwlody0+Y21kZmxhZyA9IDA7CisJaHctPmNtZGRhdGEgPSBOVUxMOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RsX2RvY21kX3dhaXQKKyoKKyogV2FpdHMgZm9yIGF2YWlsYWJpbGl0eSBvZiB0aGUgQ29tbWFuZCByZWdpc3RlciwgdGhlbgorKiBpc3N1ZXMgdGhlIGdpdmVuIGNvbW1hbmQuICBUaGVuIHBvbGxzIHRoZSBFdnN0YXQgcmVnaXN0ZXIKKyogd2FpdGluZyBmb3IgY29tbWFuZCBjb21wbGV0aW9uLiAgVGltZW91dHMgc2hvdWxkbid0IGJlCisqIHBvc3NpYmxlIHNpbmNlIHdlJ3JlIHByZXZlbnRpbmcgb3ZlcmxhcHBpbmcgY29tbWFuZHMgYW5kIGFsbAorKiBjb21tYW5kcyBzaG91bGQgYmUgY2xlYXJlZCBhbmQgYWNrbm93bGVkZ2VkLgorKgorKiBUaGlzIHJvdXRpbmUgaXMgb25seSB1c2VkIGZvciBkb3dubG9hZHMuICBTaW5jZSBpdCBkb2Vzbid0IGxvY2sgb3V0CisqIGludGVycnVwdHMgdGhlIHN5c3RlbSByZXNwb25zZSBpcyBtdWNoIGJldHRlci4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQlkZXZpY2Ugc3RydWN0dXJlCisqICAgICAgIGNtZCAgICAgICAgICAgICBjbWQgc3RydWN0dXJlLiAgSW5jbHVkZXMgYWxsIGFyZ3VtZW50cyBhbmQgcmVzdWx0CisqICAgICAgICAgICAgICAgICAgICAgICBkYXRhIHBvaW50cy4gIEFsbCBpbiBob3N0IG9yZGVyLgorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCS1FVElNRURPVVQJdGltZWQgb3V0IHdhaXRpbmcgZm9yIHJlZ2lzdGVyIHJlYWR5IG9yCisqCQkJY29tbWFuZCBjb21wbGV0aW9uCisqCT4wCQljb21tYW5kIGluZGljYXRlZCBlcnJvciwgU3RhdHVzIGFuZCBSZXNwMC0yIGFyZQorKgkJCWluIGh3IHN0cnVjdHVyZS4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgaGZhMzg0eF9kbF9kb2NtZF93YWl0KCBoZmEzODR4X3QgKmh3LCBoZmEzODR4X21ldGFjbWRfdCAqY21kKQoreworCWludAkJcmVzdWx0ID0gLUVUSU1FRE9VVDsKKwl1bnNpZ25lZCBsb25nCXRpbWVvdXQ7CisJVUlOVDE2CQlyZWcgPSAwOworCisJREJGRU5URVI7CisJLyogd2FpdCBmb3IgdGhlIGJ1c3kgYml0IHRvIGNsZWFyICovCisJdGltZW91dCA9IGppZmZpZXMgKyAxKkhaOworCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NNRCk7CisJd2hpbGUgKCBIRkEzODR4X0NNRF9JU0JVU1kocmVnKSAmJiB0aW1lX2JlZm9yZSggamlmZmllcywgdGltZW91dCkgKSB7CisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NNRCk7CisJCXVkZWxheSgxMCk7CisJfQorCWlmIChIRkEzODR4X0NNRF9JU0JVU1kocmVnKSkgeworCQlXTEFOX0xPR19XQVJOSU5HKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgY21kIHJlZ2lzdGVyLlxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCWlmICghSEZBMzg0eF9DTURfSVNCVVNZKHJlZykpIHsKKwkJLyogYnVzeSBiaXQgY2xlYXIsIHdyaXRlIGNvbW1hbmQgKi8KKwkJaGZhMzg0eF9zZXRyZWcoaHcsIGNtZC0+cGFybTAsIEhGQTM4NHhfUEFSQU0wKTsKKwkJaGZhMzg0eF9zZXRyZWcoaHcsIGNtZC0+cGFybTEsIEhGQTM4NHhfUEFSQU0xKTsKKwkJaGZhMzg0eF9zZXRyZWcoaHcsIGNtZC0+cGFybTIsIEhGQTM4NHhfUEFSQU0yKTsKKwkJaGZhMzg0eF9zZXRyZWcoaHcsIGNtZC0+Y21kLCBIRkEzODR4X0NNRCk7CisKKwkJLyogTm93IHdhaXQgZm9yIGNvbXBsZXRpb24gKi8KKwkJaWYgKCAoSEZBMzg0eF9DTURfQ01EQ09ERV9HRVQoY21kLT5jbWQpID09IEhGQTM4NHhfQ01EQ09ERV9ET1dOTEQpICkgeworCQkJLyogZGx0aW1lb3V0IGlzIGluIG1zICovCisJCQl0aW1lb3V0ID0gKCgoVUlOVDMyKWh3LT5kbHRpbWVvdXQpIC8gMTAwMFVMKSAqIEhaOworCQkJaWYgKCB0aW1lb3V0ID4gMCApIHsKKwkJCQl0aW1lb3V0ICs9IGppZmZpZXM7CisJCQl9IGVsc2UgeworCQkJCXRpbWVvdXQgPSBqaWZmaWVzICsgMSpIWjsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXRpbWVvdXQgPSBqaWZmaWVzICsgMSpIWjsKKwkJfQorCQlyZWcgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9FVlNUQVQpOworCQl3aGlsZSAoICFIRkEzODR4X0VWU1RBVF9JU0NNRChyZWcpICYmIHRpbWVfYmVmb3JlKGppZmZpZXMsdGltZW91dCkgKSB7CisJCQl1ZGVsYXkoMTAwKTsKKwkJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0VWU1RBVCk7CisJCX0KKwkJaWYgKCBIRkEzODR4X0VWU1RBVF9JU0NNRChyZWcpICkgeworCQkJcmVzdWx0ID0gMDsKKwkJCWNtZC0+cmVzdWx0LnN0YXR1cyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1NUQVRVUyk7CisJCQljbWQtPnJlc3VsdC5yZXNwMCA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1JFU1AwKTsKKwkJCWNtZC0+cmVzdWx0LnJlc3AxID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfUkVTUDEpOworCQkJY21kLT5yZXN1bHQucmVzcDIgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9SRVNQMik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19DTUQsIEhGQTM4NHhfRVZBQ0spOworCQkJcmVzdWx0ID0gSEZBMzg0eF9TVEFUVVNfUkVTVUxUX0dFVChjbWQtPnJlc3VsdC5zdGF0dXMpOworCQl9CisJfQorCitmYWlsZWQ6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3N0YXJ0CisqCisqIElzc3VlcyB0aGUgTUFDIGluaXRpYWxpemUgY29tbWFuZCwgc2V0cyB1cCBzb21lIGRhdGEgc3RydWN0dXJlcywKKyogYW5kIGVuYWJsZXMgdGhlIGludGVycnVwdHMuICBBZnRlciB0aGlzIGZ1bmN0aW9uIGNvbXBsZXRlcywgdGhlCisqIGxvdy1sZXZlbCBzdHVmZiBzaG91bGQgYmUgcmVhZHkgZm9yIGFueS9hbGwgY29tbWFuZHMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfc3RhcnQoaGZhMzg0eF90ICpodykKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwlVSU5UMTYJCQlyZWc7CisJaW50CQkJaTsKKwlpbnQJCQlqOworCURCRkVOVEVSOworCisJLyogY2FsbCBpbml0aWFsaXplICovCisJcmVzdWx0ID0gaGZhMzg0eF9jbWRfaW5pdGlhbGl6ZShodyk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJJbml0aWFsaXplIGNvbW1hbmQgZmFpbGVkLlxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIG1ha2Ugc3VyZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBhbmQgYW55IGxheWFib3V0IGV2ZW50cyBjbGVhcmVkICovCisJaGZhMzg0eF9zZXRyZWcoaHcsIDAsIEhGQTM4NHhfSU5URU4pOworCWhmYTM4NHhfc2V0cmVnKGh3LCAweGZmZmYsIEhGQTM4NHhfRVZBQ0spOworCisgICAgICAgIGh3LT50eGZpZF9oZWFkID0gMDsKKyAgICAgICAgaHctPnR4ZmlkX3RhaWwgPSAwOworICAgICAgICBody0+dHhmaWRfTiA9IEhGQTM4NHhfRFJWUl9GSURTVEFDS0xFTl9NQVg7CisgICAgICAgIG1lbXNldChody0+dHhmaWRfcXVldWUsIDAsIHNpemVvZihody0+dHhmaWRfcXVldWUpKTsKKworCS8qIEFsbG9jYXRlIHR4IGFuZCBub3RpZnkgRklEcyAqLworCS8qIEZpcnN0LCB0eCAqLworCWZvciAoIGkgPSAwOyBpIDwgSEZBMzg0eF9EUlZSX0ZJRFNUQUNLTEVOX01BWC0xOyBpKyspIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfYWxsb2NhdGUoaHcsIEhGQTM4NHhfRFJWUl9UWEJVRl9NQVgpOworCQlpZiAocmVzdWx0ICE9IDApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJBbGxvY2F0ZSh0eCkgY29tbWFuZCBmYWlsZWQuXG4iKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisJCWogPSAwOworCQlkbyB7CisJCQlyZWcgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9FVlNUQVQpOworCQkJdWRlbGF5KDEwKTsKKwkJCWorKzsKKwkJfSB3aGlsZSAoICFIRkEzODR4X0VWU1RBVF9JU0FMTE9DKHJlZykgJiYgaiA8IDUwKTsgLyogNTAgaXMgdGltZW91dCAqLworCQlpZiAoIGogPj0gNTAgKSB7CisJCQlXTEFOX0xPR19FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGV2YWxsb2ModHgpLlxuIik7CisJCQlyZXN1bHQgPSAtRVRJTUVET1VUOworCQkJZ290byBmYWlsZWQ7CisJCX0KKwkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfQUxMT0NGSUQpOworCisJCXR4ZmlkX3F1ZXVlX2FkZChodywgcmVnKTsKKworCQlXTEFOX0xPR19ERUJVRyg0LCJody0+dHhmaWRfcXVldWVbJWRdPTB4JTA0eFxuIixpLHJlZyk7CisKKwkJcmVnID0gSEZBMzg0eF9FVkFDS19BTExPQ19TRVQoMSk7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCByZWcsIEhGQTM4NHhfRVZBQ0spOworCisJfQorCisJLyogTm93LCB0aGUgaW5mbyBmcmFtZSBmaWQgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2NtZF9hbGxvY2F0ZShodywgSEZBMzg0eF9JTkZPRlJNX01BWExFTik7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJBbGxvY2F0ZSh0eCkgY29tbWFuZCBmYWlsZWQuXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCWkgPSAwOworCWRvIHsKKwkJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfRVZTVEFUKTsKKwkJdWRlbGF5KDEwKTsKKwkJaSsrOworCX0gd2hpbGUgKCAhSEZBMzg0eF9FVlNUQVRfSVNBTExPQyhyZWcpICYmIGkgPCA1MCk7IC8qIDUwIGlzIHRpbWVvdXQgKi8KKwlpZiAoIGkgPj0gNTAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZXZhbGxvYyhpbmZvKS5cbiIpOworCQlyZXN1bHQgPSAtRVRJTUVET1VUOworCQlnb3RvIGZhaWxlZDsKKwl9CisJaHctPmluZm9maWQgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9BTExPQ0ZJRCk7CisJcmVnID0gSEZBMzg0eF9FVkFDS19BTExPQ19TRVQoMSk7CisJaGZhMzg0eF9zZXRyZWcoaHcsIHJlZywgSEZBMzg0eF9FVkFDSyk7CisJV0xBTl9MT0dfREVCVUcoNCwiaHctPmluZm9maWQ9MHglMDR4XG4iLCBody0+aW5mb2ZpZCk7CisKKwkvKiBTZXQgc3dzdXBwb3J0IHJlZ3MgdG8gbWFnaWMgIyBmb3IgY2FyZCBwcmVzZW5jZSBkZXRlY3Rpb24gKi8KKwloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9EUlZSX01BR0lDLCBIRkEzODR4X1NXU1VQUE9SVDApOworCisJLyogTm93IGVuYWJsZSB0aGUgaW50ZXJydXB0cyBhbmQgc2V0IHRoZSBydW5uaW5nIHN0YXRlICovCisJaGZhMzg0eF9zZXRyZWcoaHcsIDB4ZmZmZiwgSEZBMzg0eF9FVlNUQVQpOworCWhmYTM4NHhfZXZlbnRzX2FsbChodyk7CisKKwlody0+c3RhdGUgPSBIRkEzODR4X1NUQVRFX1JVTk5JTkc7CisKKwlnb3RvIGRvbmU7CitmYWlsZWQ6CisJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCwgcmVzdWx0PSVkXG4iLCByZXN1bHQpOworZG9uZToKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9zdG9wCisqCisqIElzc3VlcyB0aGUgaW5pdGlhbGl6ZSBjb21tYW5kIHRvIGxlYXZlIHVzIGluIHRoZSAncmVzZXQnIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3N0b3AoaGZhMzg0eF90ICpodykKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwlpbnQgaTsKKwlEQkZFTlRFUjsKKworCWRlbF90aW1lcl9zeW5jKCZody0+Y29tbXNxdWFsX3RpbWVyKTsKKworCWlmICggaHctPndsYW5kZXYtPmh3cmVtb3ZlZCApIHsKKwkJLyogb25seSBmbHVzaCB3aGVuIHdlJ3JlIHNodXR0aW5nIGRvd24gZm9yIGdvb2QgKi8KKwkJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKKwl9CisKKwlpZiAoaHctPnN0YXRlID09IEhGQTM4NHhfU1RBVEVfUlVOTklORykgeworCQkvKgorCQkgKiBTZW5kIHRoZSBNQUMgaW5pdGlhbGl6ZSBjbWQuCisJCSAqLworCQloZmEzODR4X2NtZF9pbml0aWFsaXplKGh3KTsKKworCQkvKgorCQkgKiBNYWtlIGFic29sdXRlbHkgc3VyZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBhbmQgYW55CisJCSAqIGxheWFib3V0IGV2ZW50cyBjbGVhcmVkCisJCSAqLworCQloZmEzODR4X3NldHJlZyhodywgMCwgSEZBMzg0eF9JTlRFTik7CisJCWhmYTM4NHhfc2V0cmVnKGh3LCAweGZmZmYsIEhGQTM4NHhfRVZBQ0spOworCX0KKworCXRhc2tsZXRfa2lsbCgmaHctPmJhcF90YXNrbGV0KTsKKworCWh3LT5saW5rX3N0YXR1cyA9IEhGQTM4NHhfTElOS19OT1RDT05ORUNURUQ7CisJaHctPnN0YXRlID0gSEZBMzg0eF9TVEFURV9JTklUOworCisJLyogQ2xlYXIgYWxsIHRoZSBwb3J0IHN0YXR1cyAqLworCWZvciAoIGkgPSAwOyBpIDwgSEZBMzg0eF9OVU1QT1JUU19NQVg7IGkrKykgeworCQlody0+cG9ydF9lbmFibGVkW2ldID0gMDsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl90eGZyYW1lCisqCisqIFRha2VzIGEgZnJhbWUgZnJvbSBwcmlzbTJzdGEgYW5kIHF1ZXVlcyBpdCBmb3IgdHJhbnNtaXNzaW9uLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCXNrYgkJcGFja2V0IGJ1ZmZlciBzdHJ1Y3QuICBDb250YWlucyBhbiA4MDIuMTEKKyoJCQlkYXRhIGZyYW1lLgorKiAgICAgICBwODAyMTFfaGRyICAgICAgcG9pbnRzIHRvIHRoZSA4MDIuMTEgaGVhZGVyIGZvciB0aGUgcGFja2V0LgorKiBSZXR1cm5zOgorKgkwCQlTdWNjZXNzIGFuZCBtb3JlIGJ1ZmZzIGF2YWlsYWJsZQorKgkxCQlTdWNjZXNzIGJ1dCBubyBtb3JlIGJ1ZmZzCisqCTIJCUFsbG9jYXRpb24gZmFpbHVyZQorKgkzCQlNQUMgVHggY29tbWFuZCBmYWlsZWQKKyoJNAkJQnVmZmVyIGZ1bGwgb3IgcXVldWUgYnVzeQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl90eGZyYW1lKGhmYTM4NHhfdCAqaHcsIHN0cnVjdCBza19idWZmICpza2IsIHA4MDIxMV9oZHJfdCAqcDgwMjExX2hkciwgcDgwMjExX21ldGF3ZXBfdCAqcDgwMjExX3dlcCkKK3sKKwloZmEzODR4X3R4X2ZyYW1lX3QJdHhkZXNjOworCVVJTlQxNgkJCW1hY3EgPSAwOworCVVJTlQxNgkJCWZpZDsKKwlpbnQJCQlyZXN1bHQ7CisKKwlEQkZFTlRFUjsKKworCS8qIEJ1aWxkIFR4IGZyYW1lIHN0cnVjdHVyZSAqLworCS8qIFNldCB1cCB0aGUgY29udHJvbCBmaWVsZCAqLworCW1lbXNldCgmdHhkZXNjLCAwLCBzaXplb2YodHhkZXNjKSk7CisKKy8qIFR4IGNvbXBsZXRlIGFuZCBUeCBleGNlcHRpb24gZGlzYWJsZSBwZXIgZGxlYWNoLiAgTWlnaHQgYmUgY2F1c2luZworICogYnVmIGRlcGxldGlvbgorICovCisjZGVmaW5lIERPQk9USCAxCisjaWYgRE9CT1RICisJdHhkZXNjLnR4X2NvbnRyb2wgPQorCQlIRkEzODR4X1RYX01BQ1BPUlRfU0VUKDApIHwgSEZBMzg0eF9UWF9TVFJVQ1RZUEVfU0VUKDEpIHwKKwkJSEZBMzg0eF9UWF9UWEVYX1NFVCgxKSB8IEhGQTM4NHhfVFhfVFhPS19TRVQoMSk7CisjZWxpZiBET0VYQworCXR4ZGVzYy50eF9jb250cm9sID0KKwkJSEZBMzg0eF9UWF9NQUNQT1JUX1NFVCgwKSB8IEhGQTM4NHhfVFhfU1RSVUNUWVBFX1NFVCgxKSB8CisJCUhGQTM4NHhfVFhfVFhFWF9TRVQoMSkgfCBIRkEzODR4X1RYX1RYT0tfU0VUKDApOworI2Vsc2UKKwl0eGRlc2MudHhfY29udHJvbCA9CisJCUhGQTM4NHhfVFhfTUFDUE9SVF9TRVQoMCkgfCBIRkEzODR4X1RYX1NUUlVDVFlQRV9TRVQoMSkgfAorCQlIRkEzODR4X1RYX1RYRVhfU0VUKDApIHwgSEZBMzg0eF9UWF9UWE9LX1NFVCgwKTsKKyNlbmRpZgorCisJLyogaWYgd2UncmUgdXNpbmcgaG9zdCBXRVAsIGluY3JlYXNlIHNpemUgYnkgSVYrSUNWICovCisJaWYgKHA4MDIxMV93ZXAtPmRhdGEpIHsKKwkJdHhkZXNjLmRhdGFfbGVuID0gaG9zdDJoZmEzODR4XzE2KHNrYi0+bGVuKzgpOworCQkvLwkJdHhkZXNjLnR4X2NvbnRyb2wgfD0gSEZBMzg0eF9UWF9OT0VOQ1JZUFRfU0VUKDEpOworCX0gZWxzZSB7CisJCXR4ZGVzYy5kYXRhX2xlbiA9ICBob3N0MmhmYTM4NHhfMTYoc2tiLT5sZW4pOworCX0KKworCXR4ZGVzYy50eF9jb250cm9sID0gaG9zdDJoZmEzODR4XzE2KHR4ZGVzYy50eF9jb250cm9sKTsKKwkvKiBjb3B5IHRoZSBoZWFkZXIgb3ZlciB0byB0aGUgdHhkZXNjICovCisJbWVtY3B5KCYodHhkZXNjLmZyYW1lX2NvbnRyb2wpLCBwODAyMTFfaGRyLCBzaXplb2YocDgwMjExX2hkcl90KSk7CisKKwkvKiBTaW5jZSB0YnVzeSBpcyBzZXQgd2hlbmV2ZXIgdGhlIHN0YWNrIGlzIGVtcHR5LCB0aGVyZSBzaG91bGQKKwkgKiBhbHdheXMgYmUgc29tZXRoaW5nIG9uIHRoZSBzdGFjayBpZiB3ZSBnZXQgdG8gdGhpcyBwb2ludC4KKwkgKiBbTVNNXTogTk9UIFRSVUUhISEhISBzbyBJIGFkZGVkIHRoZSB0ZXN0IG9mIGZpZCBiZWxvdy4KKwkgKi8KKworCS8qIEFsbG9jYXRlIEZJRCAqLworCisJZmlkID0gdHhmaWRfcXVldWVfcmVtb3ZlKGh3KTsKKworCWlmICggZmlkID09IDAgKSB7IC8qIHN0YWNrIG9yIHF1ZXVlIHdhcyBlbXB0eSAqLworCQlyZXR1cm4gNDsKKwl9CisKKwkvKiBub3cgbGV0J3MgZ2V0IHRoZSBjbWRsb2NrICovCisJc3Bpbl9sb2NrKCZody0+Y21kbG9jayk7CisKKwkvKiBDb3B5IGRlc2NyaXB0b3IrcGF5bG9hZCB0byBGSUQgKi8KKyAgICAgICAgaWYgKHA4MDIxMV93ZXAtPmRhdGEpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X3RvX2JhcDQoaHcsIEhGQTM4NHhfQkFQX1BST0MsIGZpZCwgMCwKKwkJCQkJICAgICAgJnR4ZGVzYywgc2l6ZW9mKHR4ZGVzYyksCisJCQkJCSAgICAgIHA4MDIxMV93ZXAtPml2LCBzaXplb2YocDgwMjExX3dlcC0+aXYpLAorCQkJCQkgICAgICBwODAyMTFfd2VwLT5kYXRhLCBza2ItPmxlbiwKKwkJCQkJICAgICAgcDgwMjExX3dlcC0+aWN2LCBzaXplb2YocDgwMjExX3dlcC0+aWN2KSk7CisJfSBlbHNlIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X3RvX2JhcDQoaHcsIEhGQTM4NHhfQkFQX1BST0MsIGZpZCwgMCwKKwkJCQkJICAgICAgJnR4ZGVzYywgc2l6ZW9mKHR4ZGVzYyksCisJCQkJCSAgICAgIHNrYi0+ZGF0YSwgc2tiLT5sZW4sCisJCQkJCSAgICAgIE5VTEwsIDAsIE5VTEwsIDApOworCX0KKworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19ERUJVRygxLAorCQkJImNvcHlfdG9fYmFwKCUwNHgsICVkLCAlZCkgZmFpbGVkLCByZXN1bHQ9MHgleFxuIiwKKwkJCWZpZCwKKwkJIAlzaXplb2YodHhkZXNjKSwKKwkgCQlza2ItPmxlbiwKKwkJCXJlc3VsdCk7CisKKwkJLyogcHV0IHRoZSBmaWQgYmFjayBpbiB0aGUgcXVldWUgKi8KKwkJdHhmaWRfcXVldWVfYWRkKGh3LCBmaWQpOworCisJCXJlc3VsdCA9IDM7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIElzc3VlIFR4IGNvbW1hbmQgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2NtZF90cmFuc21pdChodywgSEZBMzg0eF9UWENNRF9SRUNMLCBtYWNxLCBmaWQpOworCisJaWYgKCByZXN1bHQgIT0gMCApIHsKKwkJdHhmaWRfcXVldWVfYWRkKGh3LCBmaWQpOworCisJCVdMQU5fTE9HX0RFQlVHKDEsImNtZF90eCglMDR4KSBmYWlsZWQsIHJlc3VsdD0lZFxuIiwKKwkJCWZpZCwgcmVzdWx0KTsKKwkJcmVzdWx0ID0gMzsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogaW5kaWNhdGUgd2UgaGF2ZW4ndCBhbnkgYnVmZmVycywgaW50X2FsbG9jIHdpbGwgY2xlYXIgKi8KKwlyZXN1bHQgPSB0eGZpZF9xdWV1ZV9lbXB0eShodyk7CitmYWlsZWQ6CisKKwlzcGluX3VubG9jaygmaHctPmNtZGxvY2spOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9pbnRlcnJ1cHQKKyoKKyogRHJpdmVyIGludGVycnVwdCBoYW5kbGVyLgorKgorKiBBcmd1bWVudHM6CisqCWlycQkJaXJxIG51bWJlcgorKglkZXZfaWQJCXBvaW50ZXIgdG8gdGhlIGRldmljZQorKglyZWdzCQlyZWdpc3RlcnMKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCU1heSByZXN1bHQgaW4gYSBmcmFtZSBiZWluZyBwYXNzZWQgdXAgdGhlIHN0YWNrIG9yIGFuIGluZm8KKyoJZnJhbWUgYmVpbmcgaGFuZGxlZC4KKyoKKyogQ2FsbCBjb250ZXh0OgorKglVbW1tLCBjb3VsZCBpdCBiZSBpbnRlcnJ1cHQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2lycXJldHVybl90IGhmYTM4NHhfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCBQVF9SRUdTKQoreworCWludAkJCXJlZzsKKwl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2X2lkOworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlpbnQJCQlldl9yZWFkID0gMDsKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbmRldiB8fCB3bGFuZGV2LT5od3JlbW92ZWQpCisJCXJldHVybiBJUlFfTk9ORTsgIC8qIE5vdCBtdWNoIHdlIGNhbiBkbyB3L28gaGFyZHdhcmUgKi8KKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ01DSUEpCisJaWYgKGh3LT5pb2Jhc2UgPT0gMCkgIC8qIFhYWCBGSVhNRSBQcm9wZXJseSAqLworCQlyZXR1cm4gSVJRX05PTkU7CisjZW5kaWYKKworCWZvciAoOztldl9yZWFkKyspIHsKKwkJaWYgKGV2X3JlYWQgPj0gcHJpc20yX2lycV9ldnJlYWRfbWF4KQorCQkJYnJlYWs7CisKKwkJLyogQ2hlY2sgc3dzdXBwb3J0IHJlZyBtYWdpYyAjIGZvciBjYXJkIHByZXNlbmNlICovCisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1NXU1VQUE9SVDApOworCQlpZiAoIHJlZyAhPSBIRkEzODR4X0RSVlJfTUFHSUMpIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDIsICJpcnE9JWQsIG5vIG1hZ2ljLiAgQ2FyZCByZW1vdmVkPy5cbiIsIGlycSk7CisJCQlicmVhazsKKwkJfQorCisJCS8qIHJlYWQgdGhlIEV2U3RhdCByZWdpc3RlciBmb3IgaW50ZXJydXB0IGVuYWJsZWQgZXZlbnRzICovCisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0VWU1RBVCk7CisKKwkJLyogQU5EIHdpdGggdGhlIGVuYWJsZWQgaW50ZXJydXB0cyAqLworCQlyZWcgJj0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfSU5URU4pOworCisJCS8qIEhhbmRsZSB0aGUgZXZlbnRzICovCisJCWlmICggSEZBMzg0eF9FVlNUQVRfSVNXVEVSUihyZWcpICl7CisJCQlXTEFOX0xPR19FUlJPUigKKwkJCSJFcnJvcjogV1RFUlIgaW50ZXJydXB0IHJlY2VpdmVkICh1bmhhbmRsZWQpLlxuIik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19XVEVSUl9TRVQoMSksCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCX0KKworCQlpZiAoIEhGQTM4NHhfRVZTVEFUX0lTSU5GRFJPUChyZWcpICl7CisJCQloZmEzODR4X2ludF9pbmZkcm9wKHdsYW5kZXYpOworCQkJaGZhMzg0eF9zZXRyZWcoaHcsIEhGQTM4NHhfRVZBQ0tfSU5GRFJPUF9TRVQoMSksCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCX0KKworCQlpZiAoSEZBMzg0eF9FVlNUQVRfSVNCQVBfT1AocmVnKSkgeworCQkJLyogRGlzYWJsZSB0aGUgQkFQIGludGVycnVwdHMgKi8KKwkJCWhmYTM4NHhfZXZlbnRzX25vYmFwKGh3KTsKKwkJCXRhc2tsZXRfc2NoZWR1bGUoJmh3LT5iYXBfdGFza2xldCk7CisJCX0KKworCQlpZiAoIEhGQTM4NHhfRVZTVEFUX0lTQUxMT0MocmVnKSApeworCQkJaGZhMzg0eF9pbnRfYWxsb2Mod2xhbmRldik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19BTExPQ19TRVQoMSksCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCX0KKworCQlpZiAoIEhGQTM4NHhfRVZTVEFUX0lTRFRJTShyZWcpICl7CisJCQloZmEzODR4X2ludF9kdGltKHdsYW5kZXYpOworCQkJaGZhMzg0eF9zZXRyZWcoaHcsIEhGQTM4NHhfRVZBQ0tfRFRJTV9TRVQoMSksCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCX0KKyNpZmRlZiBDTURfSVJRCisJCWlmICggSEZBMzg0eF9FVlNUQVRfSVNDTUQocmVnKSApeworCQkJaGZhMzg0eF9pbnRfY21kKHdsYW5kZXYpOworCQkJaGZhMzg0eF9zZXRyZWcoaHcsIEhGQTM4NHhfRVZBQ0tfQ01EX1NFVCgxKSwKKwkJCQkgICAgICAgSEZBMzg0eF9FVkFDSyk7CisJCX0KKyNlbmRpZgorCisJCS8qIGFsbG93IHRoZSBldnN0YXQgdG8gYmUgdXBkYXRlZCBhZnRlciB0aGUgZXZhY2sgKi8KKwkJdWRlbGF5KDIwKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworI2lmZGVmIENNRF9JUlEKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2ludF9jbWQKKyoKKyogSGFuZGxlcyBjb21tYW5kIGNvbXBsZXRpb24gZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIGhmYTM4NHhfaW50X2NtZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCURCRkVOVEVSOworCisJLy8gY2hlY2sgdG8gbWFrZSBzdXJlIGl0J3MgdGhlIHJpZ2h0IGNvbW1hbmQ/CisJaWYgKGh3LT5jbWRkYXRhKSB7CisJCWh3LT5jbWRkYXRhLT5zdGF0dXMgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9TVEFUVVMpOworCQlody0+Y21kZGF0YS0+cmVzcDAgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9SRVNQMCk7CisJCWh3LT5jbWRkYXRhLT5yZXNwMSA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1JFU1AxKTsKKwkJaHctPmNtZGRhdGEtPnJlc3AyID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfUkVTUDIpOworCX0KKwlody0+Y21kZmxhZyA9IDE7CisKKwlwcmludGsoS0VSTl9JTkZPICJ1bS4gaW50X2NtZFxuIik7CisKKwl3YWtlX3VwX2ludGVycnVwdGlibGUoJmh3LT5jbWRxKTsKKworCS8vIFhYWFggcGVyZm9ybSBhIGJhcCBjb3B5IHRvbz8KKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2ludF9kdGltCisqCisqIEhhbmRsZXMgdGhlIERUSU0gZWFybHkgd2FybmluZyBldmVudC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIGhmYTM4NHhfaW50X2R0aW0od2xhbmRldmljZV90ICp3bGFuZGV2KQoreworI2lmIDAKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisjZW5kaWYKKwlEQkZFTlRFUjsKKwlwcmlzbTJzdGFfZXZfZHRpbSh3bGFuZGV2KTsKKwlEQkZFWElUOworCXJldHVybjsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9pbnRfaW5mZHJvcAorKgorKiBIYW5kbGVzIHRoZSBJbmZEcm9wIGV2ZW50LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF9pbnRfaW5mZHJvcCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisjaWYgMAorCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKyNlbmRpZgorCURCRkVOVEVSOworCXByaXNtMnN0YV9ldl9pbmZkcm9wKHdsYW5kZXYpOworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2ludF9pbmZvCisqCisqIEhhbmRsZXMgdGhlIEluZm8gZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXRhc2tsZXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF9pbnRfaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCVVJTlQxNgkJCXJlZzsKKwloZmEzODR4X0luZkZyYW1lX3QJaW5mOworCWludAkJCXJlc3VsdDsKKwlEQkZFTlRFUjsKKwkvKiBSZXRyaWV2ZSB0aGUgRklEICovCisJcmVnID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfSU5GT0ZJRCk7CisKKwkvKiBSZXRyaWV2ZSB0aGUgbGVuZ3RoICovCisJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X2Zyb21fYmFwKCBodywKKwkJSEZBMzg0eF9CQVBfSU5ULCByZWcsIDAsICZpbmYuZnJhbWVsZW4sIHNpemVvZihVSU5UMTYpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSJjb3B5X2Zyb21fYmFwKDB4JTA0eCwgMCwgJWQpIGZhaWxlZCwgcmVzdWx0PTB4JXhcbiIsCisJCQlyZWcsIHNpemVvZihpbmYpLCByZXN1bHQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisJaW5mLmZyYW1lbGVuID0gaGZhMzg0eDJob3N0XzE2KGluZi5mcmFtZWxlbik7CisKKwkvKiBSZXRyaWV2ZSB0aGUgcmVzdCAqLworCXJlc3VsdCA9IGhmYTM4NHhfY29weV9mcm9tX2JhcCggaHcsCisJCUhGQTM4NHhfQkFQX0lOVCwgcmVnLCBzaXplb2YoVUlOVDE2KSwKKwkJJihpbmYuaW5mb3R5cGUpLCBpbmYuZnJhbWVsZW4gKiBzaXplb2YoVUlOVDE2KSk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkiY29weV9mcm9tX2JhcCgweCUwNHgsIDAsICVkKSBmYWlsZWQsIHJlc3VsdD0weCV4XG4iLAorCQkJcmVnLCBzaXplb2YoaW5mKSwgcmVzdWx0KTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJcHJpc20yc3RhX2V2X2luZm8od2xhbmRldiwgJmluZik7CitmYWlsZWQ6CisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfaW50X3R4ZXhjCisqCisqIEhhbmRsZXMgdGhlIFR4RXhjIGV2ZW50LiAgQSBUcmFuc21pdCBFeGNlcHRpb24gZXZlbnQgaW5kaWNhdGVzCisqIHRoYXQgdGhlIE1BQydzIFRYIHByb2Nlc3Mgd2FzIHVuc3VjY2Vzc2Z1bCAtIHNvIHRoZSBwYWNrZXQgZGlkCisqIG5vdCBnZXQgdHJhbnNtaXR0ZWQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXRhc2tsZXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF9pbnRfdHhleGMod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlVSU5UMTYJCQlzdGF0dXM7CisJVUlOVDE2CQkJZmlkOworCWludAkJCXJlc3VsdCA9IDA7CisJREJGRU5URVI7CisJLyogQ29sbGVjdCB0aGUgc3RhdHVzIGFuZCBkaXNwbGF5ICovCisJZmlkID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfVFhDT01QTEZJRCk7CisJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X2Zyb21fYmFwKGh3LCBIRkEzODR4X0JBUF9JTlQsIGZpZCwgMCwgJnN0YXR1cywgc2l6ZW9mKHN0YXR1cykpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19ERUJVRygxLAorCQkJImNvcHlfZnJvbV9iYXAoMHglMDR4LCAwLCAlZCkgZmFpbGVkLCByZXN1bHQ9MHgleFxuIiwKKwkJCWZpZCwgc2l6ZW9mKHN0YXR1cyksIHJlc3VsdCk7CisJCWdvdG8gZmFpbGVkOworCX0KKwlzdGF0dXMgPSBoZmEzODR4Mmhvc3RfMTYoc3RhdHVzKTsKKwlwcmlzbTJzdGFfZXZfdHhleGMod2xhbmRldiwgc3RhdHVzKTsKK2ZhaWxlZDoKKwlEQkZFWElUOworCXJldHVybjsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9pbnRfdHgKKyoKKyogSGFuZGxlcyB0aGUgVHggZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXRhc2tsZXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF9pbnRfdHgod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlVSU5UMTYJCQlmaWQ7CisJVUlOVDE2CQkJc3RhdHVzOworCWludAkJCXJlc3VsdCA9IDA7CisJREJGRU5URVI7CisJZmlkID0gaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfVFhDT01QTEZJRCk7CisJcmVzdWx0ID0gaGZhMzg0eF9jb3B5X2Zyb21fYmFwKGh3LCBIRkEzODR4X0JBUF9JTlQsIGZpZCwgMCwgJnN0YXR1cywgc2l6ZW9mKHN0YXR1cykpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19ERUJVRygxLAorCQkJImNvcHlfZnJvbV9iYXAoMHglMDR4LCAwLCAlZCkgZmFpbGVkLCByZXN1bHQ9MHgleFxuIiwKKwkJCWZpZCwgc2l6ZW9mKHN0YXR1cyksIHJlc3VsdCk7CisJCWdvdG8gZmFpbGVkOworCX0KKwlzdGF0dXMgPSBoZmEzODR4Mmhvc3RfMTYoc3RhdHVzKTsKKwlwcmlzbTJzdGFfZXZfdHgod2xhbmRldiwgc3RhdHVzKTsKK2ZhaWxlZDoKKwlEQkZFWElUOworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfaW50X3J4CisqCisqIEhhbmRsZXMgdGhlIFJ4IGV2ZW50LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKgl0YXNrbGV0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIGhmYTM4NHhfaW50X3J4KHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisJVUlOVDE2CQkJcnhmaWQ7CisJaGZhMzg0eF9yeF9mcmFtZV90CXJ4ZGVzYzsKKwlpbnQJCQlyZXN1bHQ7CisJaW50ICAgICAgICAgICAgICAgICAgICAgaGRybGVuOworCVVJTlQxNiAgICAgICAgICAgICAgICAgIGZjOworCXA4MDIxMV9yeG1ldGFfdAkqcnhtZXRhOworCXN0cnVjdCBza19idWZmICAgICAgICAgICpza2IgPSBOVUxMOworCVVJTlQ4ICpkYXRhcDsKKworCURCRkVOVEVSOworCisJLyogR2V0IHRoZSBGSUQgKi8KKwlyeGZpZCA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X1JYRklEKTsKKwkvKiBHZXQgdGhlIGRlc2NyaXB0b3IgKGluY2x1ZGluZyBoZWFkZXJzKSAqLworCXJlc3VsdCA9IGhmYTM4NHhfY29weV9mcm9tX2JhcChodywKKwkJCUhGQTM4NHhfQkFQX0lOVCwKKwkJCXJ4ZmlkLAorCQkJMCwKKwkJCSZyeGRlc2MsCisJCQlzaXplb2YocnhkZXNjKSk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkiY29weV9mcm9tX2JhcCgweCUwNHgsICVkLCAlZCkgZmFpbGVkLCByZXN1bHQ9MHgleFxuIiwKKwkJCXJ4ZmlkLAorCQkJMCwKKwkJCXNpemVvZihyeGRlc2MpLAorCQkJcmVzdWx0KTsKKwkJZ290byBkb25lOworCX0KKworCS8qIEJ5dGUgb3JkZXIgY29udmVydCBvbmNlIHVwIGZyb250LiAqLworCXJ4ZGVzYy5zdGF0dXMgPQloZmEzODR4Mmhvc3RfMTYocnhkZXNjLnN0YXR1cyk7CisJcnhkZXNjLnRpbWUgPQloZmEzODR4Mmhvc3RfMzIocnhkZXNjLnRpbWUpOworCisJLyogZHJvcCBlcnJvcnMgYW5kIHdoYXRub3QgaW4gcHJvbWlzYyBtb2RlICovCisJaWYgKCggd2xhbmRldi0+bmV0ZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDICkgJiYKKwkgICAgKEhGQTM4NHhfUlhTVEFUVVNfSVNGQ1NFUlIocnhkZXNjLnN0YXR1cykgfHwKKwkgICAgIEhGQTM4NHhfUlhTVEFUVVNfSVNVTkRFQ1IocnhkZXNjLnN0YXR1cykpKQorCSAgZ290byBkb25lOworCisJLyogTm93IGhhbmRsZSBmcmFtZSBiYXNlZCBvbiBwb3J0IyAqLworCXN3aXRjaCggSEZBMzg0eF9SWFNUQVRVU19NQUNQT1JUX0dFVChyeGRlc2Muc3RhdHVzKSApCisJeworCWNhc2UgMDoKKworCQlmYyA9IGllZWUyaG9zdDE2KHJ4ZGVzYy5mcmFtZV9jb250cm9sKTsKKworCQkvKiBJZiBleGNsdWRlIGFuZCB3ZSByZWNlaXZlIGFuIHVuZW5jcnlwdGVkLCBkcm9wIGl0ICovCisJCWlmICggKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0VYQ0xVREVVTkVOQ1JZUFRFRCkgJiYKKwkJICAgICAhV0xBTl9HRVRfRkNfSVNXRVAoZmMpKSB7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQloZHJsZW4gPSBwODAyMTFfaGVhZGVybGVuKGZjKTsKKworCQkvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyLCBub3RlIENSQyAoYWthIEZDUykuIHBiYWxsb2MgKi8KKwkJLyogYXNzdW1lcyB0aGVyZSBuZWVkcyB0byBiZSBzcGFjZSBmb3Igb25lICovCisJCXNrYiA9IGRldl9hbGxvY19za2IoaGZhMzg0eDJob3N0XzE2KHJ4ZGVzYy5kYXRhX2xlbikgKyBoZHJsZW4gKyBXTEFOX0NSQ19MRU4gKyAyKTsgLyogYSBsaXR0bGUgZXh0cmEgKi8KKworCQlpZiAoICEgc2tiICkgeworCQkJV0xBTl9MT0dfRVJST1IoImFsbG9jX3NrYiBmYWlsZWQuXG4iKTsKKwkJCWdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisKKwkJc2tiLT5kZXYgPSB3bGFuZGV2LT5uZXRkZXY7CisKKwkJLyogdGhlb3JldGljYWxseSBhbGlnbiB0aGUgSVAgaGVhZGVyIG9uIGEgMzItYml0IHdvcmQuICovCisJCWlmICggaGRybGVuID09IFdMQU5fSERSX0E0X0xFTiApCisJCQlza2JfcmVzZXJ2ZShza2IsIDIpOworCisJCS8qIENvcHkgdGhlIDgwMi4xMSBoZHIgdG8gdGhlIGJ1ZmZlciAqLworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBXTEFOX0hEUl9BM19MRU4pOworCQltZW1jcHkoZGF0YXAsICZyeGRlc2MuZnJhbWVfY29udHJvbCwgV0xBTl9IRFJfQTNfTEVOKTsKKworCQkvKiBTbmFnIHRoZSBBNCBhZGRyZXNzIGlmIHByZXNlbnQgKi8KKwkJaWYgKGhkcmxlbiA9PSBXTEFOX0hEUl9BNF9MRU4pIHsKKwkJCWRhdGFwID0gc2tiX3B1dChza2IsIFdMQU5fQUREUl9MRU4pOworCQkJbWVtY3B5KGRhdGFwLCAmcnhkZXNjLmFkZHJlc3M0LCBXTEFOX0hEUl9BM19MRU4pOworCQl9CisKKwkJLyogd2UgY2FuIGNvbnZlcnQgdGhlIGRhdGFfbGVuIGFzIHdlIHBhc3NlZCB0aGUgb3JpZ2luYWwgb24gKi8KKwkJcnhkZXNjLmRhdGFfbGVuID0gaGZhMzg0eDJob3N0XzE2KHJ4ZGVzYy5kYXRhX2xlbik7CisKKwkJLyogQ29weSB0aGUgcGF5bG9hZCBkYXRhIHRvIHRoZSBidWZmZXIgKi8KKwkJaWYgKCByeGRlc2MuZGF0YV9sZW4gPiAwICkgeworCQkJZGF0YXAgPSBza2JfcHV0KHNrYiwgcnhkZXNjLmRhdGFfbGVuKTsKKwkJCXJlc3VsdCA9IGhmYTM4NHhfY29weV9mcm9tX2JhcChodywKKwkJCQlIRkEzODR4X0JBUF9JTlQsIHJ4ZmlkLCBIRkEzODR4X1JYX0RBVEFfT0ZGLAorCQkJCWRhdGFwLCByeGRlc2MuZGF0YV9sZW4pOworCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCQkJImNvcHlfZnJvbV9iYXAoMHglMDR4LCAlZCwgJWQpIGZhaWxlZCwgcmVzdWx0PTB4JXhcbiIsCisJCQkJCXJ4ZmlkLAorCQkJCQlIRkEzODR4X1JYX0RBVEFfT0ZGLAorCQkJCQlyeGRlc2MuZGF0YV9sZW4sCisJCQkJCXJlc3VsdCk7CisJCQkJZ290byBmYWlsZWQ7CisJCQl9CisJCX0KKwkJLyogdGhlIHByaXNtMiBjYXJkcyBkb24ndCByZXR1cm4gdGhlIEZDUyAqLworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBXTEFOX0NSQ19MRU4pOworCQltZW1zZXQgKGRhdGFwLCAweGZmLCBXTEFOX0NSQ19MRU4pOworCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOworCisJCS8qIEF0dGFjaCB0aGUgcnhtZXRhLCBzZXQgc29tZSBzdHVmZiAqLworCQlwODAyMTFza2JfcnhtZXRhX2F0dGFjaCh3bGFuZGV2LCBza2IpOworCQlyeG1ldGEgPSBQODAyMTFTS0JfUlhNRVRBKHNrYik7CisJCXJ4bWV0YS0+bWFjdGltZSA9IHJ4ZGVzYy50aW1lOworCQlyeG1ldGEtPnJ4cmF0ZSA9IHJ4ZGVzYy5yYXRlOworCQlyeG1ldGEtPnNpZ25hbCA9IHJ4ZGVzYy5zaWduYWwgLSBody0+ZGJtYWRqdXN0OworCQlyeG1ldGEtPm5vaXNlID0gcnhkZXNjLnNpbGVuY2UgLSBody0+ZGJtYWRqdXN0OworCisJCXByaXNtMnN0YV9ldl9yeCh3bGFuZGV2LCBza2IpOworCQlnb3RvIGRvbmU7CisJY2FzZSA3OgorCisgICAgICAgIAlpZiAoICEgSEZBMzg0eF9SWFNUQVRVU19JU0ZDU0VSUihyeGRlc2Muc3RhdHVzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfaW50X3J4bW9uaXRvciggd2xhbmRldiwgcnhmaWQsICZyeGRlc2MpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygzLCJSZWNlaXZlZCBtb25pdG9yIGZyYW1lOiBGQ1NlcnIgc2V0XG4iKTsKKyAgICAgICAgICAgICAgICB9CisJCWdvdG8gZG9uZTsKKworCWRlZmF1bHQ6CisKKwkJV0xBTl9MT0dfV0FSTklORygiUmVjZWl2ZWQgZnJhbWUgb24gdW5zdXBwb3J0ZWQgcG9ydD0lZFxuIiwKKwkJCUhGQTM4NHhfUlhTVEFUVVNfTUFDUE9SVF9HRVQocnhkZXNjLnN0YXR1cykgKTsKKwkJZ290byBkb25lOworCX0KKworIGZhaWxlZDoKKwlkZXZfa2ZyZWVfc2tiKHNrYik7CisKKyBkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2ludF9yeG1vbml0b3IKKyoKKyogSGVscGVyIGZ1bmN0aW9uIGZvciBpbnRfcnguICBIYW5kbGVzIG1vbml0b3IgZnJhbWVzLgorKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBGQ1MgYW5kIHNldHMgaXQKKyogdG8gMHhmZmZmZmZmZi4gIFRoZSBoZmEzODR4IGRvZXNuJ3QgZ2l2ZSB1cyB0aGUgRkNTIHZhbHVlIGJ1dCB0aGUKKyogaGlnaGVyIGxheWVycyBleHBlY3QgaXQuICAweGZmZmZmZmZmIGlzIHVzZWQgYXMgYSBmbGFnIHRvIGluZGljYXRlCisqIHRoZSBGQ1MgaXMgYm9ndXMuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCXJ4ZmlkCQlyZWNlaXZlZCBGSUQKKyoJcnhkZXNjCQlyeCBkZXNjcmlwdG9yIHJlYWQgZnJvbSBjYXJkIGluIGludF9yeAorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoJQWxsb2NhdGVzIGFuIHNrYiBhbmQgcGFzc2VzIGl0IHVwIHZpYSB0aGUgUEZfUEFDS0VUIGludGVyZmFjZS4KKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF9pbnRfcnhtb25pdG9yKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQxNiByeGZpZCwKKwkJCQkgICBoZmEzODR4X3J4X2ZyYW1lX3QgKnJ4ZGVzYykKK3sKKwloZmEzODR4X3QJCQkqaHcgPSB3bGFuZGV2LT5wcml2OworCVVJTlQJCQkJaGRybGVuID0gMDsKKwlVSU5UCQkJCWRhdGFsZW4gPSAwOworCVVJTlQJCQkJc2tibGVuID0gMDsKKwlVSU5UCQkJCXRydW5jYXRlZCA9IDA7CisJVUlOVDgJCQkJKmRhdGFwOworCVVJTlQxNgkJCQlmYzsKKwlzdHJ1Y3Qgc2tfYnVmZgkJCSpza2I7CisKKwlEQkZFTlRFUjsKKwkvKiBEb24ndCBmb3JnZXQgdGhlIHN0YXR1cywgdGltZSwgYW5kIGRhdGFfbGVuIGZpZWxkcyBhcmUgaW4gaG9zdCBvcmRlciAqLworCS8qIEZpZ3VyZSBvdXQgaG93IGJpZyB0aGUgZnJhbWUgaXMgKi8KKwlmYyA9IGllZWUyaG9zdDE2KHJ4ZGVzYy0+ZnJhbWVfY29udHJvbCk7CisJaGRybGVuID0gcDgwMjExX2hlYWRlcmxlbihmYyk7CisJZGF0YWxlbiA9IGhmYTM4NHgyaG9zdF8xNihyeGRlc2MtPmRhdGFfbGVuKTsKKworCS8qIEFsbG9jYXRlIGFuIGluZCBtZXNzYWdlK2ZyYW1lc2l6ZSBza2IgKi8KKwlza2JsZW4gPSBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KSArCisJCWhkcmxlbiArIGRhdGFsZW4gKyBXTEFOX0NSQ19MRU47CisKKwkvKiBzYW5pdHkgY2hlY2sgdGhlIGxlbmd0aCAqLworCWlmICggc2tibGVuID4KKwkJKHNpemVvZihwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3QpICsKKwkJV0xBTl9IRFJfQTRfTEVOICsgV0xBTl9EQVRBX01BWExFTiArIFdMQU5fQ1JDX0xFTikgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsICJvdmVybGVuIGZybTogbGVuPSVkXG4iLAorCQkJc2tibGVuIC0gc2l6ZW9mKHA4MDIxMW1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fdCkpOworCX0KKworCWlmICggKHNrYiA9IGRldl9hbGxvY19za2Ioc2tibGVuKSkgPT0gTlVMTCApIHsKKwkJV0xBTl9MT0dfRVJST1IoImFsbG9jX3NrYiBmYWlsZWQgdHJ5aW5nIHRvIGFsbG9jYXRlICVkIGJ5dGVzXG4iLCBza2JsZW4pOworCQlyZXR1cm47CisJfQorCisJLyogb25seSBwcmVwZW5kIHRoZSBwcmlzbSBoZWFkZXIgaWYgaW4gdGhlIHJpZ2h0IG1vZGUgKi8KKwlpZiAoKHdsYW5kZXYtPm5ldGRldi0+dHlwZSA9PSBBUlBIUkRfSUVFRTgwMjExX1BSSVNNKSAmJgorCSAgICAoaHctPnNuaWZmaGRyID09IDApKSB7CisJCXA4MDIxMW1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fdAkqbXNnOworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KSk7CisJCW1zZyA9IChwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3QqKSBkYXRhcDsKKworCQkvKiBJbml0aWFsaXplIHRoZSBtZXNzYWdlIG1lbWJlcnMgKi8KKwkJbXNnLT5tc2djb2RlID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybTsKKwkJbXNnLT5tc2dsZW4gPSBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KTsKKwkJc3RyY3B5KG1zZy0+ZGV2bmFtZSwgd2xhbmRldi0+bmFtZSk7CisKKwkJbXNnLT5ob3N0dGltZS5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX2hvc3R0aW1lOworCQltc2ctPmhvc3R0aW1lLnN0YXR1cyA9IDA7CisJCW1zZy0+aG9zdHRpbWUubGVuID0gNDsKKwkJbXNnLT5ob3N0dGltZS5kYXRhID0gamlmZmllczsKKworCQltc2ctPm1hY3RpbWUuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9tYWN0aW1lOworCQltc2ctPm1hY3RpbWUuc3RhdHVzID0gMDsKKwkJbXNnLT5tYWN0aW1lLmxlbiA9IDQ7CisJCW1zZy0+bWFjdGltZS5kYXRhID0gcnhkZXNjLT50aW1lICogMTAwMDsKKworCQltc2ctPmNoYW5uZWwuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9jaGFubmVsOworCQltc2ctPmNoYW5uZWwuc3RhdHVzID0gMDsKKwkJbXNnLT5jaGFubmVsLmxlbiA9IDQ7CisJCW1zZy0+Y2hhbm5lbC5kYXRhID0gaHctPnNuaWZmX2NoYW5uZWw7CisKKwkJbXNnLT5yc3NpLmRpZCA9IERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fcnNzaTsKKwkJbXNnLT5yc3NpLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfbm9fdmFsdWU7CisJCW1zZy0+cnNzaS5sZW4gPSA0OworCQltc2ctPnJzc2kuZGF0YSA9IDA7CisKKwkJbXNnLT5zcS5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3NxOworCQltc2ctPnNxLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfbm9fdmFsdWU7CisJCW1zZy0+c3EubGVuID0gNDsKKwkJbXNnLT5zcS5kYXRhID0gMDsKKworCQltc2ctPnNpZ25hbC5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3NpZ25hbDsKKwkJbXNnLT5zaWduYWwuc3RhdHVzID0gMDsKKwkJbXNnLT5zaWduYWwubGVuID0gNDsKKwkJbXNnLT5zaWduYWwuZGF0YSA9IHJ4ZGVzYy0+c2lnbmFsOworCisJCW1zZy0+bm9pc2UuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9ub2lzZTsKKwkJbXNnLT5ub2lzZS5zdGF0dXMgPSAwOworCQltc2ctPm5vaXNlLmxlbiA9IDQ7CisJCW1zZy0+bm9pc2UuZGF0YSA9IHJ4ZGVzYy0+c2lsZW5jZTsKKworCQltc2ctPnJhdGUuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9yYXRlOworCQltc2ctPnJhdGUuc3RhdHVzID0gMDsKKwkJbXNnLT5yYXRlLmxlbiA9IDQ7CisJCW1zZy0+cmF0ZS5kYXRhID0gcnhkZXNjLT5yYXRlIC8gNTsgLyogc2V0IHRvIDgwMi4xMSB1bml0cyAqLworCisJCW1zZy0+aXN0eC5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX2lzdHg7CisJCW1zZy0+aXN0eC5zdGF0dXMgPSAwOworCQltc2ctPmlzdHgubGVuID0gNDsKKwkJbXNnLT5pc3R4LmRhdGEgPSBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOworCisJCW1zZy0+ZnJtbGVuLmRpZCA9IERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fZnJtbGVuOworCQltc2ctPmZybWxlbi5zdGF0dXMgPSAwOworCQltc2ctPmZybWxlbi5sZW4gPSA0OworCQltc2ctPmZybWxlbi5kYXRhID0gaGRybGVuICsgZGF0YWxlbiArIFdMQU5fQ1JDX0xFTjsKKwl9IGVsc2UgaWYgKCh3bGFuZGV2LT5uZXRkZXYtPnR5cGUgPT0gQVJQSFJEX0lFRUU4MDIxMV9QUklTTSkgJiYKKwkJICAgKGh3LT5zbmlmZmhkciAhPSAwKSkgeworCQlwODAyMTFfY2FwaGRyX3QJCSpjYXBoZHI7CisJCS8qIFRoZSBORVcgaGVhZGVyIGZvcm1hdCEgKi8KKwkJZGF0YXAgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKHA4MDIxMV9jYXBoZHJfdCkpOworCQljYXBoZHIgPSAocDgwMjExX2NhcGhkcl90KikgZGF0YXA7CisKKwkJY2FwaGRyLT52ZXJzaW9uID0JaHRvbmwoUDgwMjExQ0FQVFVSRV9WRVJTSU9OKTsKKwkJY2FwaGRyLT5sZW5ndGggPQlodG9ubChzaXplb2YocDgwMjExX2NhcGhkcl90KSk7CisJCWNhcGhkci0+bWFjdGltZSA9CV9fY3B1X3RvX2JlNjQocnhkZXNjLT50aW1lKTsKKwkJY2FwaGRyLT5ob3N0dGltZSA9CV9fY3B1X3RvX2JlNjQoamlmZmllcyk7CisJCWNhcGhkci0+cGh5dHlwZSA9CWh0b25sKDQpOyAvKiBkc3NfZG90MTFfYiAqLworCQljYXBoZHItPmNoYW5uZWwgPQlodG9ubChody0+c25pZmZfY2hhbm5lbCk7CisJCWNhcGhkci0+ZGF0YXJhdGUgPQlodG9ubChyeGRlc2MtPnJhdGUpOworCQljYXBoZHItPmFudGVubmEgPQlodG9ubCgwKTsgLyogdW5rbm93biAqLworCQljYXBoZHItPnByaW9yaXR5ID0JaHRvbmwoMCk7IC8qIHVua25vd24gKi8KKwkJY2FwaGRyLT5zc2lfdHlwZSA9CWh0b25sKDMpOyAvKiByc3NpX3JhdyAqLworCQljYXBoZHItPnNzaV9zaWduYWwgPQlodG9ubChyeGRlc2MtPnNpZ25hbCk7CisJCWNhcGhkci0+c3NpX25vaXNlID0JaHRvbmwocnhkZXNjLT5zaWxlbmNlKTsKKwkJY2FwaGRyLT5wcmVhbWJsZSA9CWh0b25sKDApOyAvKiB1bmtub3duICovCisJCWNhcGhkci0+ZW5jb2RpbmcgPQlodG9ubCgxKTsgLyogY2NrICovCisJfQorCS8qIENvcHkgdGhlIDgwMi4xMSBoZWFkZXIgdG8gdGhlIHNrYiAoY3RsIGZyYW1lcyBtYXkgYmUgbGVzcyB0aGFuIGEgZnVsbCBoZWFkZXIpICovCisJZGF0YXAgPSBza2JfcHV0KHNrYiwgaGRybGVuKTsKKwltZW1jcHkoIGRhdGFwLCAmKHJ4ZGVzYy0+ZnJhbWVfY29udHJvbCksIGhkcmxlbik7CisKKwkvKiBJZiBhbnksIGNvcHkgdGhlIGRhdGEgZnJvbSB0aGUgY2FyZCB0byB0aGUgc2tiICovCisJaWYgKCBkYXRhbGVuID4gMCApCisJeworCQkvKiBUcnVuY2F0ZSB0aGUgcGFja2V0IGlmIHRoZSB1c2VyIHdhbnRzIHVzIHRvICovCisJCVVJTlQJZGF0YXJlYWQgPSBkYXRhbGVuOworCQlpZihody0+c25pZmZfdHJ1bmNhdGUgPiAwICYmIGRhdGFyZWFkID4gaHctPnNuaWZmX3RydW5jYXRlKSB7CisJCQlkYXRhcmVhZCA9IGh3LT5zbmlmZl90cnVuY2F0ZTsKKwkJCXRydW5jYXRlZCA9IDE7CisJCX0KKworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBkYXRhcmVhZCk7CisJCWhmYTM4NHhfY29weV9mcm9tX2JhcChodywKKwkJCUhGQTM4NHhfQkFQX0lOVCwgcnhmaWQsIEhGQTM4NHhfUlhfREFUQV9PRkYsCisJCQlkYXRhcCwgZGF0YXJlYWQpOworCisJCS8qIGNoZWNrIGZvciB1bmVuY3J5cHRlZCBzdHVmZiBpZiBXRVAgYml0IHNldC4gKi8KKwkJaWYgKCooZGF0YXAgLSBoZHJsZW4gKyAxKSAmIDB4NDApIC8vIHdlcCBzZXQKKwkJICBpZiAoKCooZGF0YXApID09IDB4YWEpICYmICgqKGRhdGFwKzEpID09IDB4YWEpKQorCQkgICAgKihkYXRhcCAtIGhkcmxlbiArIDEpICY9IDB4YmY7IC8vIGNsZWFyIHdlcDsgaXQncyB0aGUgODAyLjIgaGVhZGVyIQorCX0KKworCWlmICghdHJ1bmNhdGVkICYmIGh3LT5zbmlmZl9mY3MpIHsKKwkJLyogU2V0IHRoZSBGQ1MgKi8KKwkJZGF0YXAgPSBza2JfcHV0KHNrYiwgV0xBTl9DUkNfTEVOKTsKKwkJbWVtc2V0KCBkYXRhcCwgMHhmZiwgV0xBTl9DUkNfTEVOKTsKKwl9CisKKwkvKiBwYXNzIGl0IGJhY2sgdXAgKi8KKwlwcmlzbTJzdGFfZXZfcngod2xhbmRldiwgc2tiKTsKKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9pbnRfYWxsb2MKKyoKKyogSGFuZGxlcyB0aGUgQWxsb2MgZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBoZmEzODR4X2ludF9hbGxvYyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCVVJTlQxNgkJCWZpZDsKKwlJTlQxNgkJCXJlc3VsdDsKKworCURCRkVOVEVSOworCisJLyogSGFuZGxlIHRoZSByZWNsYWltZWQgRklEICovCisJLyogICBjb2xsZWN0IHRoZSBGSUQgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sgKi8KKwlmaWQgPSBoZmEzODR4X2dldHJlZyhodywgSEZBMzg0eF9BTExPQ0ZJRCk7CisKKwlpZiAoIGZpZCAhPSBody0+aW5mb2ZpZCApIHsgLyogSXQncyBhIHRyYW5zbWl0IGZpZCAqLworCQlXTEFOX0xPR19ERUJVRyg1LCAiaW50X2FsbG9jKCUjeClcbiIsIGZpZCk7CisJCXJlc3VsdCA9IHR4ZmlkX3F1ZXVlX2FkZChodywgZmlkKTsKKwkJaWYgKHJlc3VsdCAhPSAtMSkgeworCQkJcHJpc20yc3RhX2V2X2FsbG9jKHdsYW5kZXYpOworCQkJV0xBTl9MT0dfREVCVUcoNSwgInFfYWRkLlxuIik7CisJCX0gZWxzZSB7CisJCQlXTEFOX0xPR19ERUJVRyg1LCAicV9mdWxsLlxuIik7CisJCX0KKwl9IGVsc2UgeworCQkvKiB1bmxvY2sgdGhlIGluZm8gZmlkICovCisJCXVwKCZody0+aW5mb2ZpZF9zZW0pOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfaGFuZG92ZXIKKyoKKyogU2VuZHMgYSBoYW5kb3ZlciBub3RpZmljYXRpb24gdG8gdGhlIE1BQy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglhZGRyCQlhZGRyZXNzIG9mIHN0YXRpb24gdGhhdCdzIGxlZnQKKyoKKyogUmV0dXJuczoKKyoJemVybwkJc3VjY2Vzcy4KKyoJLUVSRVNUQVJUU1lTCXJlY2VpdmVkIHNpZ25hbCB3aGlsZSB3YWl0aW5nIGZvciBzZW1hcGhvcmUuCisqCS1FSU8JCWZhaWxlZCB0byB3cml0ZSB0byBiYXAsIG9yIGZhaWxlZCBpbiBjbWQuCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCwgTk9URTogdGhpcyBjYWxsIG1heSBibG9jayBvbiBhIHNlbWFwaG9yZSEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9oYW5kb3ZlciggaGZhMzg0eF90ICpodywgVUlOVDggKmFkZHIpCit7CisJaW50CQkJcmVzdWx0ID0gMDsKKyAgICAgICAgaGZhMzg0eF9IYW5kb3ZlckFkZHJfdCAgcmVjOworICAgICAgICBVSU5UICAgICAgICAgICAgICAgICAgICBsZW47CisgICAgICAgIERCRkVOVEVSOworCisJLyogQWNxdWlyZSB0aGUgaW5mb2ZpZCAqLworCWlmICggZG93bl9pbnRlcnJ1cHRpYmxlKCZody0+aW5mb2ZpZF9zZW0pICkgeworCQlyZXN1bHQgPSAtRVJFU1RBUlRTWVM7CisJCWdvdG8gZmFpbGVkOworCX0KKworICAgICAgICAvKiBTZXQgdXAgdGhlIHJlY29yZCAqLworICAgICAgICBsZW4gPSBzaXplb2YoaGZhMzg0eF9IYW5kb3ZlckFkZHJfdCk7CisgICAgICAgIHJlYy5mcmFtZWxlbiA9IGhvc3QyaGZhMzg0eF8xNihsZW4vMiAtIDEpOworICAgICAgICByZWMuaW5mb3R5cGUgPSBob3N0MmhmYTM4NHhfMTYoSEZBMzg0eF9JVF9IQU5ET1ZFUkFERFIpOworICAgICAgICBtZW1jcHkocmVjLmhhbmRvdmVyX2FkZHIsIGFkZHIsIHNpemVvZihyZWMuaGFuZG92ZXJfYWRkcikpOworCisgICAgICAgIC8qIElzc3VlIHRoZSBjb21tYW5kICovCisgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfY21kX25vdGlmeShodywgMSwgaHctPmluZm9maWQsICZyZWMsIGxlbik7CisKKyAgICAgICAgaWYgKCByZXN1bHQgIT0gMCApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygxLCJjbWRfbm90aWZ5KCUwNHgpIGZhaWxlZCwgcmVzdWx0PSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5pbmZvZmlkLCByZXN1bHQpOworCQlyZXN1bHQgPSAtRUlPOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICB9CisKK2ZhaWxlZDoKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgaGZhMzg0eF90eF90aW1lb3V0KHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwlEQkZFTlRFUjsKKworCVdMQU5fTE9HX1dBUk5JTkcoIkltcGxlbWVudCBtZS5cbiIpOworCisJREJGRVhJVDsKK30KKworLyogSGFuZGxlcyBhbGwgInJ4IiBCQVAgb3BlcmF0aW9ucyAqLworc3RhdGljIHZvaWQgICAgIGhmYTM4NHhfYmFwX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQoreworCWhmYTM4NHhfdCAqaHcgPSAoaGZhMzg0eF90ICopIGRhdGE7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gaHctPndsYW5kZXY7CisJaW50IGNvdW50ZXIgPSBwcmlzbTJfaXJxX2V2cmVhZF9tYXg7CisJaW50CQkJcmVnOworCisJREJGRU5URVI7CisKKwl3aGlsZSAoY291bnRlci0tID4gMCkgeworCQkvKiBHZXQgaW50ZXJydXB0IHJlZ2lzdGVyICovCisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0VWU1RBVCk7CisKKwkJaWYgKChyZWcgPT0gMHhmZmZmKSB8fAorCQkgICAgIShyZWcgJiBIRkEzODR4X0lOVF9CQVBfT1ApKSB7CisJCQlicmVhazsKKwkJfQorCisJCWlmICggSEZBMzg0eF9FVlNUQVRfSVNJTkZPKHJlZykgKXsKKwkJCWhmYTM4NHhfaW50X2luZm8od2xhbmRldik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19JTkZPX1NFVCgxKSwKKwkJCQlIRkEzODR4X0VWQUNLKTsKKwkJfQorCQlpZiAoIEhGQTM4NHhfRVZTVEFUX0lTVFhFWEMocmVnKSApeworCQkJaGZhMzg0eF9pbnRfdHhleGMod2xhbmRldik7CisJCQloZmEzODR4X3NldHJlZyhodywgSEZBMzg0eF9FVkFDS19UWEVYQ19TRVQoMSksCisJCQkJSEZBMzg0eF9FVkFDSyk7CisJCX0KKwkJaWYgKCBIRkEzODR4X0VWU1RBVF9JU1RYKHJlZykgKXsKKwkJCWhmYTM4NHhfaW50X3R4KHdsYW5kZXYpOworCQkJaGZhMzg0eF9zZXRyZWcoaHcsIEhGQTM4NHhfRVZBQ0tfVFhfU0VUKDEpLAorCQkJCUhGQTM4NHhfRVZBQ0spOworCQl9CisJCWlmICggSEZBMzg0eF9FVlNUQVRfSVNSWChyZWcpICl7CisJCQloZmEzODR4X2ludF9yeCh3bGFuZGV2KTsKKwkJCWhmYTM4NHhfc2V0cmVnKGh3LCBIRkEzODR4X0VWQUNLX1JYX1NFVCgxKSwKKwkJCQlIRkEzODR4X0VWQUNLKTsKKwkJfQorCX0KKworCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzICovCisJaGZhMzg0eF9ldmVudHNfYWxsKGh3KTsKKworCURCRkVYSVQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9oZmEzODR4LmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9oZmEzODR4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIwNTQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL2hmYTM4NHguaApAQCAtMCwwICsxLDMwNjcgQEAKKy8qIGhmYTM4NHguaAorKgorKiBEZWZpbmVzIHRoZSBjb25zdGFudHMgYW5kIGRhdGEgc3RydWN0dXJlcyBmb3IgdGhlIGhmYTM4NHgKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogICBbSW1wbGVtZW50YXRpb24gYW5kIHVzYWdlIG5vdGVzXQorKgorKiAgIFtSZWZlcmVuY2VzXQorKglDVzEwIFByb2dyYW1tZXIncyBNYW51YWwgdjEuNQorKglJRUVFIDgwMi4xMSBEMTAuMAorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworI2lmbmRlZiBfSEZBMzg0eF9ICisjZGVmaW5lIF9IRkEzODR4X0gKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKyNkZWZpbmUgSEZBMzg0eF9GSVJNV0FSRV9WRVJTSU9OKGEsYixjKSAoKChhKSA8PCAxNikgKyAoKGIpIDw8IDgpICsgKGMpKQorCisjZGVmaW5lIEhGQTM4NHhfTEVWRUxfVE9fZEJtKHYpICAgKDB4MTAwICsgKHYpICogMTAwIC8gMjU1IC0gMTAwKQorCisvKi0tLS0tLSBDb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyotLS0gTWlucyAmIE1heHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9DTURfQUxMT0NfTEVOX01JTgkoKFVJTlQxNik0KQorI2RlZmluZQkJSEZBMzg0eF9DTURfQUxMT0NfTEVOX01BWAkoKFVJTlQxNikyNDAwKQorI2RlZmluZQkJSEZBMzg0eF9CQVBfREFUQUxFTl9NQVgJCSgoVUlOVDE2KTQwOTYpCisjZGVmaW5lCQlIRkEzODR4X0JBUF9PRkZTRVRfTUFYCQkoKFVJTlQxNik0MDk2KQorI2RlZmluZQkJSEZBMzg0eF9QT1JUSURfTUFYCQkoKFVJTlQxNik3KQorI2RlZmluZQkJSEZBMzg0eF9OVU1QT1JUU19NQVgJCSgoVUlOVDE2KShIRkEzODR4X1BPUlRJRF9NQVgrMSkpCisjZGVmaW5lCQlIRkEzODR4X1BEUl9MRU5fTUFYCQkoKFVJTlQxNik1MTIpCS8qIGluIGJ5dGVzLCBmcm9tIEVLICovCisjZGVmaW5lCQlIRkEzODR4X1BEQV9SRUNTX01BWAkJKChVSU5UMTYpMjAwKQkvKiBhIGd1ZXNzICovCisjZGVmaW5lCQlIRkEzODR4X1BEQV9MRU5fTUFYCQkoKFVJTlQxNikxMDI0KQkvKiBpbiBieXRlcywgZnJvbSBFSyAqLworI2RlZmluZQkJSEZBMzg0eF9TQ0FOUkVTVUxUX01BWAkJKChVSU5UMTYpMzEpCisjZGVmaW5lCQlIRkEzODR4X0hTQ0FOUkVTVUxUX01BWAkJKChVSU5UMTYpMzEpCisjZGVmaW5lCQlIRkEzODR4X0NISU5GT1JFU1VMVF9NQVgJKChVSU5UMTYpMTYpCisjZGVmaW5lCQlIRkEzODR4X0RSVlJfRklEU1RBQ0tMRU5fTUFYCSgxMCkKKyNkZWZpbmUJCUhGQTM4NHhfRFJWUl9UWEJVRl9NQVgJCShzaXplb2YoaGZhMzg0eF90eF9mcmFtZV90KSArIFwKKwkJCQkJCVdMQU5fREFUQV9NQVhMRU4gLSBcCisJCQkJCQlXTEFOX1dFUF9JVl9MRU4gLSBcCisJCQkJCQlXTEFOX1dFUF9JQ1ZfTEVOICsgMikKKyNkZWZpbmUJCUhGQTM4NHhfRFJWUl9NQUdJQwkJKDB4NGEyZCkKKyNkZWZpbmUJCUhGQTM4NHhfSU5GT0RBVEFfTUFYTEVOCQkoc2l6ZW9mKGhmYTM4NHhfaW5mb2RhdGFfdCkpCisjZGVmaW5lCQlIRkEzODR4X0lORk9GUk1fTUFYTEVOCQkoc2l6ZW9mKGhmYTM4NHhfSW5mRnJhbWVfdCkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9HVUVTU0lOR19NQVhMRU4JMjA0OCAgLyogSSdtIG5vdCByZWFsbHkgc3VyZSAqLworI2RlZmluZQkJSEZBMzg0eF9SSUREQVRBX01BWExFTgkJSEZBMzg0eF9SSURfR1VFU1NJTkdfTUFYTEVOCisjZGVmaW5lCQlIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4JMjA0OAorCisvKi0tLSBTdXBwb3J0IENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X0JBUF9QUk9DCQkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfQkFQX0lOVAkJCQkoKFVJTlQxNikxKQorI2RlZmluZQkJSEZBMzg0eF9QT1JUVFlQRV9JQlNTCQkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUE9SVFRZUEVfQlNTCQkJKChVSU5UMTYpMSkKKyNkZWZpbmUJCUhGQTM4NHhfUE9SVFRZUEVfV0RTCQkJKChVSU5UMTYpMikKKyNkZWZpbmUJCUhGQTM4NHhfUE9SVFRZUEVfUFNVRURPSUJTUwkJKChVSU5UMTYpMykKKyNkZWZpbmUJCUhGQTM4NHhfUE9SVFRZUEVfSE9TVEFQICAgIAkJKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfV0VQRkxBR1NfUFJJVklOVk9LRUQJCSgoVUlOVDE2KUJJVDApCisjZGVmaW5lCQlIRkEzODR4X1dFUEZMQUdTX0VYQ0xVREUJCSgoVUlOVDE2KUJJVDEpCisjZGVmaW5lCQlIRkEzODR4X1dFUEZMQUdTX0RJU0FCTEVfVFhDUllQVAkoKFVJTlQxNilCSVQ0KQorI2RlZmluZQkJSEZBMzg0eF9XRVBGTEFHU19ESVNBQkxFX1JYQ1JZUFQJKChVSU5UMTYpQklUNykKKyNkZWZpbmUJCUhGQTM4NHhfV0VQRkxBR1NfRElTQUxMT1dfTUlYRUQgCSgoVUlOVDE2KUJJVDExKQorI2RlZmluZQkJSEZBMzg0eF9XRVBGTEFHU19JVl9JTlRFUlZBTDEJCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1dFUEZMQUdTX0lWX0lOVEVSVkFMMTAJCSgoVUlOVDE2KUJJVDUpCisjZGVmaW5lCQlIRkEzODR4X1dFUEZMQUdTX0lWX0lOVEVSVkFMNTAJCSgoVUlOVDE2KUJJVDYpCisjZGVmaW5lCQlIRkEzODR4X1dFUEZMQUdTX0lWX0lOVEVSVkFMMTAwCQkoKFVJTlQxNikoQklUNSB8IEJJVDYpKQorI2RlZmluZQkJSEZBMzg0eF9XRVBGTEFHU19GSVJNV0FSRV9XUEEgIAkJKChVSU5UMTYpQklUOCkKKyNkZWZpbmUJCUhGQTM4NHhfV0VQRkxBR1NfSE9TVF9NSUMgICAgICAJCSgoVUlOVDE2KUJJVDkpCisjZGVmaW5lIAlIRkEzODR4X1JPQU1NT0RFX0ZXU0NBTl9GV1JPQU0JCSgoVUlOVDE2KTEpCisjZGVmaW5lIAlIRkEzODR4X1JPQU1NT0RFX0ZXU0NBTl9IT1NUUk9BTQkoKFVJTlQxNikyKQorI2RlZmluZSAJSEZBMzg0eF9ST0FNTU9ERV9IT1NUU0NBTl9IT1NUUk9BTQkoKFVJTlQxNikzKQorI2RlZmluZSAJSEZBMzg0eF9QT1JUU1RBVFVTX0RJU0FCTEVECQkoKFVJTlQxNikxKQorI2RlZmluZSAJSEZBMzg0eF9QT1JUU1RBVFVTX0lOSVRTUkNICQkoKFVJTlQxNikyKQorI2RlZmluZSAJSEZBMzg0eF9QT1JUU1RBVFVTX0NPTk5fSUJTUwkJKChVSU5UMTYpMykKKyNkZWZpbmUgCUhGQTM4NHhfUE9SVFNUQVRVU19DT05OX0VTUwkJKChVSU5UMTYpNCkKKyNkZWZpbmUgCUhGQTM4NHhfUE9SVFNUQVRVU19PT1JfRVNTCQkoKFVJTlQxNik1KQorI2RlZmluZSAJSEZBMzg0eF9QT1JUU1RBVFVTX0NPTk5fV0RTCQkoKFVJTlQxNik2KQorI2RlZmluZSAJSEZBMzg0eF9QT1JUU1RBVFVTX0hPU1RBUAkJKChVSU5UMTYpOCkKKyNkZWZpbmUJCUhGQTM4NHhfUkFURUJJVF8xCQkJKChVSU5UMTYpMSkKKyNkZWZpbmUJCUhGQTM4NHhfUkFURUJJVF8yCQkJKChVSU5UMTYpMikKKyNkZWZpbmUJCUhGQTM4NHhfUkFURUJJVF81ZG90NQkJCSgoVUlOVDE2KTQpCisjZGVmaW5lCQlIRkEzODR4X1JBVEVCSVRfMTEJCQkoKFVJTlQxNik4KQorCisvKi0tLSBKdXN0IHNvbWUgc3ltYm9saWMgbmFtZXMgZm9yIGxlZ2liaWxpdHkgLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1RYQ01EX05PUkVDTAkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfVFhDTURfUkVDTAkJKChVSU5UMTYpMSkKKworLyotLS0gTUFDIEludGVybmFsIG1lbW9yeSBjb25zdGFudHMgYW5kIG1hY3JvcyAtLS0tLS0qLworLyogbWFza3MgYW5kIG1hY3JvcyB1c2VkIHRvIG1hbmlwdWxhdGUgTUFDIGludGVybmFsIG1lbW9yeSBhZGRyZXNzZXMuICovCisvKiBNQUMgaW50ZXJuYWwgbWVtb3J5IGFkZHJlc3NlcyBhcmUgMjMgYml0IHF1YW50aXRpZXMuICBUaGUgTUFDIHVzZXMKKyAqIGEgcGFnZWQgYWRkcmVzcyBzcGFjZSB3aGVyZSB0aGUgdXBwZXIgMTYgYml0cyBhcmUgdGhlIHBhZ2UgbnVtYmVyCisgKiBhbmQgdGhlIGxvd2VyIDcgYml0cyBhcmUgdGhlIG9mZnNldC4gIFRoZXJlIGFyZSB2YXJpb3VzIEhvc3QgQVBJCisgKiBlbGVtZW50cyB0aGF0IHJlcXVpcmUgdHdvIDE2LWJpdCBxdWFudGl0aWVzIHRvIHNwZWNpZnkgYSBNQUMKKyAqIGludGVybmFsIG1lbW9yeSBhZGRyZXNzLiAgVW5mb3J0dW5hdGVseSwgc29tZSBvZiB0aGUgQVBJJ3MgdXNlIGEKKyAqIHBhZ2Uvb2Zmc2V0IGZvcm1hdCB3aGVyZSB0aGUgb2Zmc2V0IHZhbHVlIGlzIEpVU1QgdGhlIGxvd2VyIHNldmVuCisgKiBiaXRzIGFuZCB0aGUgcGFnZSBpcyAgdGhlIHJlbWFpbmluZyAxNiBiaXRzLiAgU29tZSBvZiB0aGUgQVBJJ3MKKyAqIGFzc3VtZSB0aGF0IHRoZSAyMyBiaXQgYWRkcmVzcyBoYXMgYmVlbiBzcGxpdCBhdCB0aGUgMTZ0aCBiaXQuICBXZQorICogcmVmZXIgdG8gdGhlc2UgdHdvIGZvcm1hdHMgYXMgQVVYIGZvcm1hdCBhbmQgQ01EIGZvcm1hdC4gIFRoZQorICogbWFjcm9zIGJlbG93IGhlbHAgaGFuZGxlIHNvbWUgb2YgdGhpcy4KKyAqLworCisvKiBIYW5keSBjb25zdGFudCAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0FVWF9PRkZfTUFYCSgoVUlOVDE2KTB4MDA3ZikKKworLyogTWFzayBiaXRzIGZvciBkaXNjYXJkaW5nIHVud2FudGVkIHBpZWNlcyBpbiBhIGZsYXQgYWRkcmVzcyAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0ZMQVRfQVVYX1BBR0VfTUFTSwkoMHgwMDdmZmY4MCkKKyNkZWZpbmUJCUhGQTM4NHhfQUREUl9GTEFUX0FVWF9PRkZfTUFTSwkoMHgwMDAwMDA3ZikKKyNkZWZpbmUJCUhGQTM4NHhfQUREUl9GTEFUX0NNRF9QQUdFX01BU0sJKDB4ZmZmZjAwMDApCisjZGVmaW5lCQlIRkEzODR4X0FERFJfRkxBVF9DTURfT0ZGX01BU0sJKDB4MDAwMGZmZmYpCisKKy8qIE1hc2sgYml0cyBmb3IgZGlzY2FyZGluZyB1bndhbnRlZCBwaWVjZXMgaW4gQVVYIGZvcm1hdCAxNi1iaXQgYWRkcmVzcyBwYXJ0cyAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0FVWF9QQUdFX01BU0sJKDB4ZmZmZikKKyNkZWZpbmUJCUhGQTM4NHhfQUREUl9BVVhfT0ZGX01BU0sJKDB4MDA3ZikKKworLyogTWFzayBiaXRzIGZvciBkaXNjYXJkaW5nIHVud2FudGVkIHBpZWNlcyBpbiBDTUQgZm9ybWF0IDE2LWJpdCBhZGRyZXNzIHBhcnRzICovCisjZGVmaW5lCQlIRkEzODR4X0FERFJfQ01EX1BBR0VfTUFTSwkoMHgwMDdmKQorI2RlZmluZQkJSEZBMzg0eF9BRERSX0NNRF9PRkZfTUFTSwkoMHhmZmZmKQorCisvKiBNYWtlIGEgMzItYml0IGZsYXQgYWRkcmVzcyBmcm9tIEFVWCBmb3JtYXQgMTYtYml0IHBhZ2UgYW5kIG9mZnNldCAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0FVWF9NS0ZMQVQocCxvKQlcCisJCSgoKFVJTlQzMikoKChVSU5UMTYpKHApKSZIRkEzODR4X0FERFJfQVVYX1BBR0VfTUFTSykpIDw8NykgfCBcCisJCSgoVUlOVDMyKSgoKFVJTlQxNikobykpJkhGQTM4NHhfQUREUl9BVVhfT0ZGX01BU0spKQorCisvKiBNYWtlIGEgMzItYml0IGZsYXQgYWRkcmVzcyBmcm9tIENNRCBmb3JtYXQgMTYtYml0IHBhZ2UgYW5kIG9mZnNldCAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0NNRF9NS0ZMQVQocCxvKQlcCisJCSgoKFVJTlQzMikoKChVSU5UMTYpKHApKSZIRkEzODR4X0FERFJfQ01EX1BBR0VfTUFTSykpIDw8MTYpIHwgXAorCQkoKFVJTlQzMikoKChVSU5UMTYpKG8pKSZIRkEzODR4X0FERFJfQ01EX09GRl9NQVNLKSkKKworLyogTWFrZSBBVVggZm9ybWF0IG9mZnNldCBhbmQgcGFnZSBmcm9tIGEgMzItYml0IGZsYXQgYWRkcmVzcyAqLworI2RlZmluZQkJSEZBMzg0eF9BRERSX0FVWF9NS1BBR0UoZikgXAorCQkoKFVJTlQxNikoKCgoVUlOVDMyKShmKSkmSEZBMzg0eF9BRERSX0ZMQVRfQVVYX1BBR0VfTUFTSyk+PjcpKQorI2RlZmluZQkJSEZBMzg0eF9BRERSX0FVWF9NS09GRihmKSBcCisJCSgoVUlOVDE2KSgoKFVJTlQzMikoZikpJkhGQTM4NHhfQUREUl9GTEFUX0FVWF9PRkZfTUFTSykpCisKKy8qIE1ha2UgQ01EIGZvcm1hdCBvZmZzZXQgYW5kIHBhZ2UgZnJvbSBhIDMyLWJpdCBmbGF0IGFkZHJlc3MgKi8KKyNkZWZpbmUJCUhGQTM4NHhfQUREUl9DTURfTUtQQUdFKGYpIFwKKwkJKChVSU5UMTYpKCgoKFVJTlQzMikoZikpJkhGQTM4NHhfQUREUl9GTEFUX0NNRF9QQUdFX01BU0spPj4xNikpCisjZGVmaW5lCQlIRkEzODR4X0FERFJfQ01EX01LT0ZGKGYpIFwKKwkJKChVSU5UMTYpKCgoVUlOVDMyKShmKSkmSEZBMzg0eF9BRERSX0ZMQVRfQ01EX09GRl9NQVNLKSkKKworLyotLS0gQXV4IHJlZ2lzdGVyIG1hc2tzL3Rlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogU29tZSBvZiB0aGUgdXBwZXIgYml0cyBvZiB0aGUgQVVYIG9mZnNldCByZWdpc3RlciBhcmUgdXNlZCB0byAqLworLyogIHNlbGVjdCBhZGRyZXNzIHNwYWNlLiAqLworI2RlZmluZQkJSEZBMzg0eF9BVVhfQ1RMX0VYVERTCSgweDAwKQorI2RlZmluZQkJSEZBMzg0eF9BVVhfQ1RMX05WCSgweDAxKQorI2RlZmluZQkJSEZBMzg0eF9BVVhfQ1RMX1BIWQkoMHgwMikKKyNkZWZpbmUJCUhGQTM4NHhfQVVYX0NUTF9JQ1NSQU0JKDB4MDMpCisKKy8qIE1ha2UgQVVYIHJlZ2lzdGVyIG9mZnNldCBhbmQgcGFnZSB2YWx1ZXMgZnJvbSBhIGZsYXQgYWRkcmVzcyAqLworI2RlZmluZQkJSEZBMzg0eF9BVVhfTUtPRkYoZiwgYykgXAorCShIRkEzODR4X0FERFJfQVVYX01LT0ZGKGYpIHwgKCgoVUlOVDE2KShjKSk8PDEyKSkKKyNkZWZpbmUJCUhGQTM4NHhfQVVYX01LUEFHRShmKQlIRkEzODR4X0FERFJfQVVYX01LUEFHRShmKQorCisKKy8qLS0tIENvbnRyb2xsZXIgTWVtb3J5IGFkZHJlc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NDJfUERBX0JBU0UJKDB4MDA3ZjAwMDBVTCkKKyNkZWZpbmUJCUhGQTM4NDFfUERBX0JBU0UJKDB4MDAzZjAwMDBVTCkKKyNkZWZpbmUJCUhGQTM4NDFfUERBX0JPR1VTX0JBU0UJKDB4MDAzOTAwMDBVTCkKKworLyotLS0gRHJpdmVyIERvd25sb2FkIHN0YXRlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9ETFNUQVRFX0RJU0FCTEVECQkwCisjZGVmaW5lCQlIRkEzODR4X0RMU1RBVEVfUkFNRU5BQkxFRAkJMQorI2RlZmluZQkJSEZBMzg0eF9ETFNUQVRFX0ZMQVNIRU5BQkxFRAkJMgorI2RlZmluZQkJSEZBMzg0eF9ETFNUQVRFX0ZMQVNIV1JJVFRFTgkJMworI2RlZmluZQkJSEZBMzg0eF9ETFNUQVRFX0ZMQVNIV1JJVEVQRU5ESU5HCTQKKyNkZWZpbmUJCUhGQTM4NHhfRExTVEFURV9HRU5FU0lTIAkJNQorCisvKi0tLSBSZWdpc3RlciBJL08gb2Zmc2V0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWYgKChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDTUNJQSkgfHwgKFdMQU5fSE9TVElGID09IFdMQU5fUExYKSkKKworI2RlZmluZQkJSEZBMzg0eF9DTURfT0ZGCQkJKDB4MDApCisjZGVmaW5lCQlIRkEzODR4X1BBUkFNMF9PRkYJCSgweDAyKQorI2RlZmluZQkJSEZBMzg0eF9QQVJBTTFfT0ZGCQkoMHgwNCkKKyNkZWZpbmUJCUhGQTM4NHhfUEFSQU0yX09GRgkJKDB4MDYpCisjZGVmaW5lCQlIRkEzODR4X1NUQVRVU19PRkYJCSgweDA4KQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMF9PRkYJCSgweDBBKQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMV9PRkYJCSgweDBDKQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMl9PRkYJCSgweDBFKQorI2RlZmluZQkJSEZBMzg0eF9JTkZPRklEX09GRgkJKDB4MTApCisjZGVmaW5lCQlIRkEzODR4X1JYRklEX09GRgkJKDB4MjApCisjZGVmaW5lCQlIRkEzODR4X0FMTE9DRklEX09GRgkJKDB4MjIpCisjZGVmaW5lCQlIRkEzODR4X1RYQ09NUExGSURfT0ZGCQkoMHgyNCkKKyNkZWZpbmUJCUhGQTM4NHhfU0VMRUNUMF9PRkYJCSgweDE4KQorI2RlZmluZQkJSEZBMzg0eF9PRkZTRVQwX09GRgkJKDB4MUMpCisjZGVmaW5lCQlIRkEzODR4X0RBVEEwX09GRgkJKDB4MzYpCisjZGVmaW5lCQlIRkEzODR4X1NFTEVDVDFfT0ZGCQkoMHgxQSkKKyNkZWZpbmUJCUhGQTM4NHhfT0ZGU0VUMV9PRkYJCSgweDFFKQorI2RlZmluZQkJSEZBMzg0eF9EQVRBMV9PRkYJCSgweDM4KQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfT0ZGCQkoMHgzMCkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fT0ZGCQkoMHgzMikKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfT0ZGCQkoMHgzNCkKKyNkZWZpbmUJCUhGQTM4NHhfQ09OVFJPTF9PRkYJCSgweDE0KQorI2RlZmluZQkJSEZBMzg0eF9TV1NVUFBPUlQwX09GRgkJKDB4MjgpCisjZGVmaW5lCQlIRkEzODR4X1NXU1VQUE9SVDFfT0ZGCQkoMHgyQSkKKyNkZWZpbmUJCUhGQTM4NHhfU1dTVVBQT1JUMl9PRkYJCSgweDJDKQorI2RlZmluZQkJSEZBMzg0eF9BVVhQQUdFX09GRgkJKDB4M0EpCisjZGVmaW5lCQlIRkEzODR4X0FVWE9GRlNFVF9PRkYJCSgweDNDKQorI2RlZmluZQkJSEZBMzg0eF9BVVhEQVRBX09GRgkJKDB4M0UpCisKKyNlbGlmIChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDSSB8fCBXTEFOX0hPU1RJRiA9PSBXTEFOX1VTQikKKworI2RlZmluZQkJSEZBMzg0eF9DTURfT0ZGCQkJKDB4MDApCisjZGVmaW5lCQlIRkEzODR4X1BBUkFNMF9PRkYJCSgweDA0KQorI2RlZmluZQkJSEZBMzg0eF9QQVJBTTFfT0ZGCQkoMHgwOCkKKyNkZWZpbmUJCUhGQTM4NHhfUEFSQU0yX09GRgkJKDB4MGMpCisjZGVmaW5lCQlIRkEzODR4X1NUQVRVU19PRkYJCSgweDEwKQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMF9PRkYJCSgweDE0KQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMV9PRkYJCSgweDE4KQorI2RlZmluZQkJSEZBMzg0eF9SRVNQMl9PRkYJCSgweDFjKQorI2RlZmluZQkJSEZBMzg0eF9JTkZPRklEX09GRgkJKDB4MjApCisjZGVmaW5lCQlIRkEzODR4X1JYRklEX09GRgkJKDB4NDApCisjZGVmaW5lCQlIRkEzODR4X0FMTE9DRklEX09GRgkJKDB4NDQpCisjZGVmaW5lCQlIRkEzODR4X1RYQ09NUExGSURfT0ZGCQkoMHg0OCkKKyNkZWZpbmUJCUhGQTM4NHhfU0VMRUNUMF9PRkYJCSgweDMwKQorI2RlZmluZQkJSEZBMzg0eF9PRkZTRVQwX09GRgkJKDB4MzgpCisjZGVmaW5lCQlIRkEzODR4X0RBVEEwX09GRgkJKDB4NmMpCisjZGVmaW5lCQlIRkEzODR4X1NFTEVDVDFfT0ZGCQkoMHgzNCkKKyNkZWZpbmUJCUhGQTM4NHhfT0ZGU0VUMV9PRkYJCSgweDNjKQorI2RlZmluZQkJSEZBMzg0eF9EQVRBMV9PRkYJCSgweDcwKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfT0ZGCQkoMHg2MCkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fT0ZGCQkoMHg2NCkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfT0ZGCQkoMHg2OCkKKyNkZWZpbmUJCUhGQTM4NHhfQ09OVFJPTF9PRkYJCSgweDI4KQorI2RlZmluZQkJSEZBMzg0eF9TV1NVUFBPUlQwX09GRgkJKDB4NTApCisjZGVmaW5lCQlIRkEzODR4X1NXU1VQUE9SVDFfT0ZGCQkoMHg1NCkKKyNkZWZpbmUJCUhGQTM4NHhfU1dTVVBQT1JUMl9PRkYJCSgweDU4KQorI2RlZmluZQkJSEZBMzg0eF9BVVhQQUdFX09GRgkJKDB4NzQpCisjZGVmaW5lCQlIRkEzODR4X0FVWE9GRlNFVF9PRkYJCSgweDc4KQorI2RlZmluZQkJSEZBMzg0eF9BVVhEQVRBX09GRgkJKDB4N2MpCisjZGVmaW5lCQlIRkEzODR4X1BDSUNPUl9PRkYJCSgweDRjKQorI2RlZmluZQkJSEZBMzg0eF9QQ0lIQ1JfT0ZGCQkoMHg1YykKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00wX0FERFJIX09GRgkoMHg4MCkKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00wX0FERFJMX09GRgkoMHg4NCkKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00wX0xFTl9PRkYJCSgweDg4KQorI2RlZmluZQkJSEZBMzg0eF9QQ0lfTTBfQ1RMX09GRgkJKDB4OGMpCisjZGVmaW5lCQlIRkEzODR4X1BDSV9TVEFUVVNfT0ZGCQkoMHg5OCkKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00xX0FERFJIX09GRgkoMHhhMCkKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00xX0FERFJMX09GRgkoMHhhNCkKKyNkZWZpbmUJCUhGQTM4NHhfUENJX00xX0xFTl9PRkYJCSgweGE4KQorI2RlZmluZQkJSEZBMzg0eF9QQ0lfTTFfQ1RMX09GRgkJKDB4YWMpCisKKyNlbmRpZgorCisvKi0tLSBSZWdpc3RlciBGaWVsZCBNYXNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X0NNRF9CVVNZCQkoKFVJTlQxNilCSVQxNSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX0FJTkZPCQkoKFVJTlQxNikoQklUMTQgfCBCSVQxMyB8IEJJVDEyIHwgQklUMTEgfCBCSVQxMCB8IEJJVDkgfCBCSVQ4KSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX01BQ1BPUlQJCSgoVUlOVDE2KShCSVQxMCB8IEJJVDkgfCBCSVQ4KSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX1JFQ0wJCSgoVUlOVDE2KUJJVDgpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9XUklURQkJKChVSU5UMTYpQklUOCkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX1BST0dNT0RFCQkoKFVJTlQxNikoQklUOSB8IEJJVDgpKQorI2RlZmluZQkJSEZBMzg0eF9DTURfQ01EQ09ERQkJKChVSU5UMTYpKEJJVDUgfCBCSVQ0IHwgQklUMyB8IEJJVDIgfCBCSVQxIHwgQklUMCkpCisKKyNkZWZpbmUJCUhGQTM4NHhfU1RBVFVTX1JFU1VMVAkJKChVSU5UMTYpKEJJVDE0IHwgQklUMTMgfCBCSVQxMiB8IEJJVDExIHwgQklUMTAgfCBCSVQ5IHwgQklUOCkpCisjZGVmaW5lCQlIRkEzODR4X1NUQVRVU19DTURDT0RFCQkoKFVJTlQxNikoQklUNSB8IEJJVDQgfCBCSVQzIHwgQklUMiB8IEJJVDEgfCBCSVQwKSkKKworI2RlZmluZQkJSEZBMzg0eF9PRkZTRVRfQlVTWQkJKChVSU5UMTYpQklUMTUpCisjZGVmaW5lCQlIRkEzODR4X09GRlNFVF9FUlIJCSgoVUlOVDE2KUJJVDE0KQorI2RlZmluZQkJSEZBMzg0eF9PRkZTRVRfREFUQU9GRgkJKChVSU5UMTYpKEJJVDExIHwgQklUMTAgfCBCSVQ5IHwgQklUOCB8IEJJVDcgfCBCSVQ2IHwgQklUNSB8IEJJVDQgfCBCSVQzIHwgQklUMiB8IEJJVDEpKQorCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9USUNLCQkoKFVJTlQxNilCSVQxNSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX1dURVJSCQkoKFVJTlQxNilCSVQxNCkKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX0lORkRST1AJCSgoVUlOVDE2KUJJVDEzKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSU5GTwkJKChVSU5UMTYpQklUNykKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX0RUSU0JCSgoVUlOVDE2KUJJVDUpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9DTUQJCSgoVUlOVDE2KUJJVDQpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9BTExPQwkJKChVSU5UMTYpQklUMykKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX1RYRVhDCQkoKFVJTlQxNilCSVQyKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfVFgJCSgoVUlOVDE2KUJJVDEpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9SWAkJKChVSU5UMTYpQklUMCkKKworI2RlZmluZSAgICAgICAgIEhGQTM4NHhfSU5UX0JBUF9PUCAgICAgICAgICAgKEhGQTM4NHhfRVZTVEFUX0lORk98SEZBMzg0eF9FVlNUQVRfUlh8SEZBMzg0eF9FVlNUQVRfVFh8SEZBMzg0eF9FVlNUQVRfVFhFWEMpCisKKyNkZWZpbmUgICAgICAgICBIRkEzODR4X0lOVF9OT1JNQUwgICAgICAgICAgIChIRkEzODR4X0VWU1RBVF9JTkZPfEhGQTM4NHhfRVZTVEFUX1JYfEhGQTM4NHhfRVZTVEFUX1RYfEhGQTM4NHhfRVZTVEFUX1RYRVhDfEhGQTM4NHhfRVZTVEFUX0lORkRST1B8SEZBMzg0eF9FVlNUQVRfQUxMT0N8SEZBMzg0eF9FVlNUQVRfRFRJTSkKKworI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9USUNLCQkoKFVJTlQxNilCSVQxNSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fV1RFUlIJCSgoVUlOVDE2KUJJVDE0KQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9JTkZEUk9QCQkoKFVJTlQxNilCSVQxMykKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSU5GTwkJKChVSU5UMTYpQklUNykKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fRFRJTQkJKChVSU5UMTYpQklUNSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fQ01ECQkoKFVJTlQxNilCSVQ0KQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9BTExPQwkJKChVSU5UMTYpQklUMykKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fVFhFWEMJCSgoVUlOVDE2KUJJVDIpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX1RYCQkoKFVJTlQxNilCSVQxKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9SWAkJKChVSU5UMTYpQklUMCkKKworI2RlZmluZQkJSEZBMzg0eF9FVkFDS19USUNLCQkoKFVJTlQxNilCSVQxNSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfV1RFUlIJCSgoVUlOVDE2KUJJVDE0KQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JTkZEUk9QCQkoKFVJTlQxNilCSVQxMykKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfSU5GTwkJKChVSU5UMTYpQklUNykKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfRFRJTQkJKChVSU5UMTYpQklUNSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfQ01ECQkoKFVJTlQxNilCSVQ0KQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19BTExPQwkJKChVSU5UMTYpQklUMykKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfVFhFWEMJCSgoVUlOVDE2KUJJVDIpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX1RYCQkoKFVJTlQxNilCSVQxKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19SWAkJKChVSU5UMTYpQklUMCkKKworI2RlZmluZQkJSEZBMzg0eF9DT05UUk9MX0FVWEVOCQkoKFVJTlQxNikoQklUMTUgfCBCSVQxNCkpCisKKworLyotLS0gQ29tbWFuZCBDb2RlIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKi0tLSBDb250cm9sbGVyIENvbW1hbmRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9JTklUCQkoKFVJTlQxNikweDAwKQorI2RlZmluZQkJSEZBMzg0eF9DTURDT0RFX0VOQUJMRQkJKChVSU5UMTYpMHgwMSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9ESVNBQkxFCQkoKFVJTlQxNikweDAyKQorI2RlZmluZQkJSEZBMzg0eF9DTURDT0RFX0RJQUcJCSgoVUlOVDE2KTB4MDMpCisKKy8qLS0tIEJ1ZmZlciBNZ210IENvbW1hbmRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9BTExPQwkJKChVSU5UMTYpMHgwQSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9UWAkJKChVSU5UMTYpMHgwQikKKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9DTFJQUlNUCQkoKFVJTlQxNikweDEyKQorCisvKi0tLSBSZWd1bGF0ZSBDb21tYW5kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X0NNRENPREVfTk9USUZZCQkoKFVJTlQxNikweDEwKQorI2RlZmluZQkJSEZBMzg0eF9DTURDT0RFX0lOUQkJKChVSU5UMTYpMHgxMSkKKworLyotLS0gQ29uZmlndXJlIENvbW1hbmRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfQ01EQ09ERV9BQ0NFU1MJCSgoVUlOVDE2KTB4MjEpCisjZGVmaW5lCQlIRkEzODR4X0NNRENPREVfRE9XTkxECQkoKFVJTlQxNikweDIyKQorCisvKi0tLSBEZWJ1Z2dpbmcgQ29tbWFuZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSAJSEZBMzg0eF9DTURDT0RFX01PTklUT1IJCSgoVUlOVDE2KSgweDM4KSkKKyNkZWZpbmUJCUhGQTM4NHhfTU9OSVRPUl9FTkFCTEUJCSgoVUlOVDE2KSgweDBiKSkKKyNkZWZpbmUJCUhGQTM4NHhfTU9OSVRPUl9ESVNBQkxFCQkoKFVJTlQxNikoMHgwZikpCisKKy8qLS0tIFJlc3VsdCBDb2RlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1NVQ0NFU1MJCQkoKFVJTlQxNikoMHgwMCkpCisjZGVmaW5lCQlIRkEzODR4X0NBUkRfRkFJTAkJKChVSU5UMTYpKDB4MDEpKQorI2RlZmluZQkJSEZBMzg0eF9OT19CVUZGCQkJKChVSU5UMTYpKDB4MDUpKQorI2RlZmluZQkJSEZBMzg0eF9DTURfRVJSCQkJKChVSU5UMTYpKDB4N0YpKQorCisvKi0tLSBQcm9ncmFtbWluZyBNb2RlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCU1PREUgMDogRGlzYWJsZSBwcm9ncmFtbWluZworCU1PREUgMTogRW5hYmxlIHZvbGF0aWxlIG1lbW9yeSBwcm9ncmFtbWluZworCU1PREUgMjogRW5hYmxlIG5vbi12b2xhdGlsZSBtZW1vcnkgcHJvZ3JhbW1pbmcKKwlNT0RFIDM6IFByb2dyYW0gbm9uLXZvbGF0aWxlIG1lbW9yeSBzZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1BST0dNT0RFX0RJU0FCTEUJKChVSU5UMTYpMHgwMCkKKyNkZWZpbmUJCUhGQTM4NHhfUFJPR01PREVfUkFNCQkoKFVJTlQxNikweDAxKQorI2RlZmluZQkJSEZBMzg0eF9QUk9HTU9ERV9OVgkJKChVSU5UMTYpMHgwMikKKyNkZWZpbmUJCUhGQTM4NHhfUFJPR01PREVfTlZXUklURQkoKFVJTlQxNikweDAzKQorCisvKi0tLSBBVVggcmVnaXN0ZXIgZW5hYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfQVVYUFcwCQkJKChVSU5UMTYpMHhmZTAxKQorI2RlZmluZQkJSEZBMzg0eF9BVVhQVzEJCQkoKFVJTlQxNikweGRjMjMpCisjZGVmaW5lCQlIRkEzODR4X0FVWFBXMgkJCSgoVUlOVDE2KTB4YmE0NSkKKworI2RlZmluZQkJSEZBMzg0eF9DT05UUk9MX0FVWF9JU0RJU0FCTEVECSgoVUlOVDE2KTB4MDAwMCkKKyNkZWZpbmUJCUhGQTM4NHhfQ09OVFJPTF9BVVhfSVNFTkFCTEVECSgoVUlOVDE2KTB4YzAwMCkKKyNkZWZpbmUJCUhGQTM4NHhfQ09OVFJPTF9BVVhfRE9FTkFCTEUJKChVSU5UMTYpMHg4MDAwKQorI2RlZmluZQkJSEZBMzg0eF9DT05UUk9MX0FVWF9ET0RJU0FCTEUJKChVSU5UMTYpMHg0MDAwKQorCisvKi0tLSBSZWNvcmQgSUQgQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbmZpZ3VyYXRpb24gUklEczogTmV0d29yayBQYXJhbWV0ZXJzLCBTdGF0aWMgQ29uZmlndXJhdGlvbiBFbnRpdGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUE9SVFRZUEUJCSgoVUlOVDE2KTB4RkMwMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFIJKChVSU5UMTYpMHhGQzAxKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GREVTSVJFRFNTSUQJKChVSU5UMTYpMHhGQzAyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GT1dOQ0hBTk5FTAkoKFVJTlQxNikweEZDMDMpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZPV05TU0lECQkoKFVJTlQxNikweEZDMDQpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZPV05BVElNV0lOCSgoVUlOVDE2KTB4RkMwNSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlNZU1NDQUxFCQkoKFVJTlQxNikweEZDMDYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZNQVhEQVRBTEVOCSgoVUlOVDE2KTB4RkMwNykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldEU0FERFIJCSgoVUlOVDE2KTB4RkMwOCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlBNRU5BQkxFRAkoKFVJTlQxNikweEZDMDkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZQTUVQUwkJKChVSU5UMTYpMHhGQzBBKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GTVVMVElDQVNUUlgJKChVSU5UMTYpMHhGQzBCKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GTUFYU0xFRVBEVVIJKChVSU5UMTYpMHhGQzBDKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUE1IT0xERFVSCSgoVUlOVDE2KTB4RkMwRCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk9XTk5BTUUJCSgoVUlOVDE2KTB4RkMwRSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk9XTkRUSU1QRVIJKChVSU5UMTYpMHhGQzEwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0RTQUREUjEJCSgoVUlOVDE2KTB4RkMxMSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldEU0FERFIyCQkoKFVJTlQxNikweEZDMTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRFNBRERSMwkJKChVSU5UMTYpMHhGQzEzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0RTQUREUjQJCSgoVUlOVDE2KTB4RkMxNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldEU0FERFI1CQkoKFVJTlQxNikweEZDMTUpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRFNBRERSNgkJKChVSU5UMTYpMHhGQzE2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GTUNBU1RQTUJVRkYJKChVSU5UMTYpMHhGQzE3KQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb25maWd1cmF0aW9uIFJJRCBsZW5ndGhzOiBOZXR3b3JrIFBhcmFtcywgU3RhdGljIENvbmZpZyBFbnRpdGllcworICBUaGlzIGlzIHRoZSBsZW5ndGggb2YgSlVTVCB0aGUgREFUQSBwYXJ0IG9mIHRoZSBSSUQgKGRvZXMgbm90CisgIGluY2x1ZGUgdGhlIGxlbiBvciBjb2RlIGZpZWxkcykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRPRE86IGZpbGwgaW4gdGhlIHJlc3Qgb2YgdGhlc2UgKi8KKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlBPUlRUWVBFX0xFTgkoKFVJTlQxNikyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GT1dOTUFDQUREUl9MRU4JKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lEX0xFTgkoKFVJTlQxNikzNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk9XTkNIQU5ORUxfTEVOCSgoVUlOVDE2KTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZPV05TU0lEX0xFTgkoKFVJTlQxNikzNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk9XTkFUSU1XSU5fTEVOCSgoVUlOVDE2KTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZTWVNTQ0FMRV9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk1BWERBVEFMRU5fTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRFNBRERSX0xFTgkoKFVJTlQxNik2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUE1FTkFCTEVEX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUE1FUFNfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZNVUxUSUNBU1RSWF9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk1BWFNMRUVQRFVSX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUE1IT0xERFVSX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GT1dOTkFNRV9MRU4JKChVSU5UMTYpMzQpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZPV05EVElNUEVSX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0RTQUREUjFfTEVOCSgoVUlOVDE2KTYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRFNBRERSMl9MRU4JKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldEU0FERFIzX0xFTgkoKFVJTlQxNik2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0RTQUREUjRfTEVOCSgoVUlOVDE2KTYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRFNBRERSNV9MRU4JKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldEU0FERFI2X0xFTgkoKFVJTlQxNik2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GTUNBU1RQTUJVRkZfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZBVVRIRU5USUNBVElPTl9MRU4gKChVSU5UMTYpc2l6ZW9mKFVJTlQxNikpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZNQVhTTEVFUERVUl9MRU4JKChVSU5UMTYpMCkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29uZmlndXJhdGlvbiBSSURzOiBOZXR3b3JrIFBhcmFtZXRlcnMsIER5bmFtaWMgQ29uZmlndXJhdGlvbiBFbnRpdGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9SSURfR1JPVVBBRERSCQkoKFVJTlQxNikweEZDODApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DUkVBVEVJQlNTCQkoKFVJTlQxNikweEZDODEpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNICQkoKFVJTlQxNikweEZDODIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9SVFNUSFJFU0gJCSgoVUlOVDE2KTB4RkM4MykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUkFURUNOVEwJCSgoVUlOVDE2KTB4RkM4NCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BST01JU0NNT0RFCQkoKFVJTlQxNikweEZDODUpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNIMAkJKChVSU5UMTYpMHhGQzkwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRlJBR1RIUkVTSDEJCSgoVUlOVDE2KTB4RkM5MSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0ZSQUdUSFJFU0gyCQkoKFVJTlQxNikweEZDOTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNIMwkJKChVSU5UMTYpMHhGQzkzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRlJBR1RIUkVTSDQJCSgoVUlOVDE2KTB4RkM5NCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0ZSQUdUSFJFU0g1CQkoKFVJTlQxNikweEZDOTUpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNINgkJKChVSU5UMTYpMHhGQzk2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIMAkJKChVSU5UMTYpMHhGQzk3KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIMQkJKChVSU5UMTYpMHhGQzk4KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIMgkJKChVSU5UMTYpMHhGQzk5KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIMwkJKChVSU5UMTYpMHhGQzlBKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNINAkJKChVSU5UMTYpMHhGQzlCKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNINQkJKChVSU5UMTYpMHhGQzlDKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNINgkJKChVSU5UMTYpMHhGQzlEKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDAJCSgoVUlOVDE2KTB4RkM5RSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUkFURUNOVEwxCQkoKFVJTlQxNikweEZDOUYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9UWFJBVEVDTlRMMgkJKChVSU5UMTYpMHhGQ0EwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDMJCSgoVUlOVDE2KTB4RkNBMSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUkFURUNOVEw0CQkoKFVJTlQxNikweEZDQTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9UWFJBVEVDTlRMNQkJKChVSU5UMTYpMHhGQ0EzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDYJCSgoVUlOVDE2KTB4RkNBNCkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29uZmlndXJhdGlvbiBSSUQgTGVuZ3RoczogTmV0d29yayBQYXJhbSwgRHluYW1pYyBDb25maWcgRW50aXRpZXMKKyAgVGhpcyBpcyB0aGUgbGVuZ3RoIG9mIEpVU1QgdGhlIERBVEEgcGFydCBvZiB0aGUgUklEIChkb2VzIG5vdAorICBpbmNsdWRlIHRoZSBsZW4gb3IgY29kZSBmaWVsZHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUT0RPOiBmaWxsIGluIHRoZSByZXN0IG9mIHRoZXNlICovCisjZGVmaW5lCQlIRkEzODR4X1JJRF9HUk9VUEFERFJfTEVOCSgoVUlOVDE2KTE2ICogV0xBTl9BRERSX0xFTikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NSRUFURUlCU1NfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNIX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTF9MRU4JKChVSU5UMTYpNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BST01JU0NNT0RFX0xFTgkoKFVJTlQxNikyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRlJBR1RIUkVTSDBfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNIMV9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0ZSQUdUSFJFU0gyX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRlJBR1RIUkVTSDNfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GUkFHVEhSRVNINF9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0ZSQUdUSFJFU0g1X0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRlJBR1RIUkVTSDZfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9SVFNUSFJFU0gwX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNIMV9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1JUU1RIUkVTSDJfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9SVFNUSFJFU0gzX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUlRTVEhSRVNINF9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1JUU1RIUkVTSDVfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9SVFNUSFJFU0g2X0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDBfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9UWFJBVEVDTlRMMV9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUkFURUNOVEwyX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDNfTEVOCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9UWFJBVEVDTlRMNF9MRU4JKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUkFURUNOVEw1X0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVFhSQVRFQ05UTDZfTEVOCSgoVUlOVDE2KTApCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbmZpZ3VyYXRpb24gUklEczogQmVoYXZpb3IgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9SSURfSVRJQ0tUSU1FCQkoKFVJTlQxNikweEZDRTApCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbmZpZ3VyYXRpb24gUklEIExlbmd0aHM6IEJlaGF2aW9yIFBhcmFtZXRlcnMKKyAgVGhpcyBpcyB0aGUgbGVuZ3RoIG9mIEpVU1QgdGhlIERBVEEgcGFydCBvZiB0aGUgUklEIChkb2VzIG5vdAorICBpbmNsdWRlIHRoZSBsZW4gb3IgY29kZSBmaWVsZHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1JJRF9JVElDS1RJTUVfTEVOCSgoVUlOVDE2KTIpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gUklEczogTklDIEluZm9ybWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1JJRF9NQVhMT0FEVElNRQkJKChVSU5UMTYpMHhGRDAwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfRE9XTkxPQURCVUZGRVIJKChVSU5UMTYpMHhGRDAxKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUFJJSURFTlRJVFkJCSgoVUlOVDE2KTB4RkQwMikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BSSVNVUFJBTkdFCQkoKFVJTlQxNikweEZEMDMpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9QUklfQ0ZJQUNUUkFOR0VTCSgoVUlOVDE2KTB4RkQwNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX05JQ1NFUklBTE5VTUJFUgkoKFVJTlQxNikweEZEMEEpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9OSUNJREVOVElUWQkJKChVSU5UMTYpMHhGRDBCKQorI2RlZmluZQkJSEZBMzg0eF9SSURfTUZJU1VQUkFOR0UJCSgoVUlOVDE2KTB4RkQwQykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NGSVNVUFJBTkdFCQkoKFVJTlQxNikweEZEMEQpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DSEFOTkVMTElTVAkJKChVSU5UMTYpMHhGRDEwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUkVHVUxBVE9SWURPTUFJTlMJKChVSU5UMTYpMHhGRDExKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVEVNUFRZUEUJCSgoVUlOVDE2KTB4RkQxMikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NJUwkJCSgoVUlOVDE2KTB4RkQxMykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NUQUlERU5USVRZCQkoKFVJTlQxNikweEZEMjApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9TVEFTVVBSQU5HRQkJKChVSU5UMTYpMHhGRDIxKQorI2RlZmluZQkJSEZBMzg0eF9SSURfU1RBX01GSUFDVFJBTkdFUwkoKFVJTlQxNikweEZEMjIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9TVEFfQ0ZJQUNUUkFOR0VTCSgoVUlOVDE2KTB4RkQyMykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0JVSUxEU0VRCQkoKFVJTlQxNikweEZGRkUpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GV0lECQkoKFVJTlQxNikweEZGRkYpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gUklEIExlbmd0aHM6IE5JQyBJbmZvcm1hdGlvbgorICBUaGlzIGlzIHRoZSBsZW5ndGggb2YgSlVTVCB0aGUgREFUQSBwYXJ0IG9mIHRoZSBSSUQgKGRvZXMgbm90CisgIGluY2x1ZGUgdGhlIGxlbiBvciBjb2RlIGZpZWxkcykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfUklEX01BWExPQURUSU1FX0xFTgkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0RPV05MT0FEQlVGRkVSX0xFTgkJKChVSU5UMTYpc2l6ZW9mKGhmYTM4NHhfZG93bmxvYWRidWZmZXJfdCkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9QUklJREVOVElUWV9MRU4JCSgoVUlOVDE2KTgpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9QUklTVVBSQU5HRV9MRU4JCSgoVUlOVDE2KTEwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0ZJQUNUUkFOR0VTX0xFTgkJKChVSU5UMTYpMTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9OSUNTRVJJQUxOVU1CRVJfTEVOCQkoKFVJTlQxNikxMikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX05JQ0lERU5USVRZX0xFTgkJKChVSU5UMTYpOCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX01GSVNVUFJBTkdFX0xFTgkJKChVSU5UMTYpMTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DRklTVVBSQU5HRV9MRU4JCSgoVUlOVDE2KTEwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0hBTk5FTExJU1RfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUkVHVUxBVE9SWURPTUFJTlNfTEVOCSgoVUlOVDE2KTEyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfVEVNUFRZUEVfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0lTX0xFTgkJCSgoVUlOVDE2KTQ4MCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NUQUlERU5USVRZX0xFTgkJKChVSU5UMTYpOCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NUQVNVUFJBTkdFX0xFTgkJKChVSU5UMTYpMTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9NRklBQ1RSQU5HRVNfTEVOCQkoKFVJTlQxNikxMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NGSUFDVFJBTkdFUzJfTEVOCQkoKFVJTlQxNikxMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0JVSUxEU0VRX0xFTgkJKChVSU5UMTYpc2l6ZW9mKGhmYTM4NHhfQnVpbGRTZXFfdCkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9GV0lEX0xFTgkJCSgoVUlOVDE2KXNpemVvZihoZmEzODR4X0ZXSURfdCkpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZm9ybWF0aW9uIFJJRHM6ICBNQUMgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BPUlRTVEFUVVMJCSgoVUlOVDE2KTB4RkQ0MCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRTU0lECQkoKFVJTlQxNikweEZENDEpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UQlNTSUQJKChVSU5UMTYpMHhGRDQyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZCSgoVUlOVDE2KTB4RkQ0MykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRUWFJBVEUJKChVSU5UMTYpMHhGRDQ0KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVEJDTklOVAkoKFVJTlQxNikweEZENDUpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UU0NBTEVUSFJFU0gJKChVSU5UMTYpMHhGRDQ2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUFJPVE9DT0xSU1BUSU1FCSgoVUlOVDE2KTB4RkQ0NykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NIT1JUUkVUUllMSU1JVAkoKFVJTlQxNikweEZENDgpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9MT05HUkVUUllMSU1JVAkoKFVJTlQxNikweEZENDkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9NQVhUWExJRkVUSU1FCSgoVUlOVDE2KTB4RkQ0QSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX01BWFJYTElGRVRJTUUJKChVSU5UMTYpMHhGRDRCKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0ZQT0xMQUJMRQkJKChVSU5UMTYpMHhGRDRDKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQVVUSEFMR09SSVRITVMJKChVSU5UMTYpMHhGRDREKQorI2RlZmluZQkJSEZBMzg0eF9SSURfUFJJVkFDWU9QVElNUAkoKFVJTlQxNikweEZENEYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9EQk1DT01NU1FVQUxJVFkJKChVSU5UMTYpMHhGRDUxKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTEJKChVSU5UMTYpMHhGRDgwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTIJKChVSU5UMTYpMHhGRDgxKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTMJKChVSU5UMTYpMHhGRDgyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTQJKChVSU5UMTYpMHhGRDgzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTUJKChVSU5UMTYpMHhGRDg0KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTYJKChVSU5UMTYpMHhGRDg1KQorI2RlZmluZQkJSEZBMzg0eF9SSURfT1dOTUFDQUREUkVTUwkoKFVJTlQxNikweEZEODYpCisvLyAjZGVmaW5lCUhGQTM4NHhfUklEX1BDRklORk8JCSgoVUlOVDE2KTB4RkQ4NykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NDQU5SRVNVTFRTICAgICAgIAkoKFVJTlQxNikweEZEODgpIC8vIE5FVworI2RlZmluZQkJSEZBMzg0eF9SSURfSE9TVFNDQU5SRVNVTFRTICAgCSgoVUlOVDE2KTB4RkQ4OSkgLy8gTkVXCisjZGVmaW5lCQlIRkEzODR4X1JJRF9BVVRIRU5USUNBVElPTlVTRUQJKChVSU5UMTYpMHhGRDhBKSAvLyBORVcKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0FTU09DSUFURUZBSUxVUkUgIAkoKFVJTlQxNikweEZEOEQpIC8vIDEuOC4wCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZm9ybWF0aW9uIFJJRCBMZW5ndGhzOiAgTUFDIEluZm9ybWF0aW9uCisgIFRoaXMgaXMgdGhlIGxlbmd0aCBvZiBKVVNUIHRoZSBEQVRBIHBhcnQgb2YgdGhlIFJJRCAoZG9lcyBub3QKKyAgaW5jbHVkZSB0aGUgbGVuIG9yIGNvZGUgZmllbGRzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9SSURfUE9SVFNUQVRVU19MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UU1NJRF9MRU4JCSgoVUlOVDE2KTM0KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ1VSUkVOVEJTU0lEX0xFTgkJKChVSU5UMTYpV0xBTl9CU1NJRF9MRU4pCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DT01NU1FVQUxJVFlfTEVOCQkoKFVJTlQxNilzaXplb2YoaGZhMzg0eF9jb21tc3F1YWxpdHlfdCkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9EQk1DT01NU1FVQUxJVFlfTEVOCQkoKFVJTlQxNilzaXplb2YoaGZhMzg0eF9kYm1jb21tc3F1YWxpdHlfdCkpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFX0xFTgkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRCQ05JTlRfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfU1RBQ1VSU0NBTEVUSFJFU0hfTEVOCSgoVUlOVDE2KTEyKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQVBDVVJTQ0FMRVRIUkVTSF9MRU4JKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BST1RPQ09MUlNQVElNRV9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9TSE9SVFJFVFJZTElNSVRfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfTE9OR1JFVFJZTElNSVRfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfTUFYVFhMSUZFVElNRV9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9NQVhSWExJRkVUSU1FX0xFTgkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NGUE9MTEFCTEVfTEVOCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQVVUSEFMR09SSVRITVNfTEVOCQkoKFVJTlQxNik0KQorI2RlZmluZQkJSEZBMzg0eF9SSURfUFJJVkFDWU9QVElNUF9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFMV9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFMl9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFM19MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFNF9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFNV9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFNl9MRU4JCSgoVUlOVDE2KTApCisjZGVmaW5lCQlIRkEzODR4X1JJRF9PV05NQUNBRERSRVNTX0xFTgkJKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BDRklORk9fTEVOCQkJKChVSU5UMTYpNikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkFQUENGSU5GT19MRU4JCSgoVUlOVDE2KXNpemVvZihoZmEzODR4X1BDRkluZm9fZGF0YV90KSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NDQU5SRVFVRVNUX0xFTgkJKChVSU5UMTYpc2l6ZW9mKGhmYTM4NHhfU2NhblJlcXVlc3RfZGF0YV90KSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0pPSU5SRVFVRVNUX0xFTgkJKChVSU5UMTYpc2l6ZW9mKGhmYTM4NHhfSm9pblJlcXVlc3RfZGF0YV90KSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0FVVEhFTlRJQ0FURVNUQV9MRU4JCSgoVUlOVDE2KXNpemVvZihoZmEzODR4X2F1dGhlbnRpY2F0ZVN0YXRpb25fZGF0YV90KSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NIQU5ORUxJTkZPUkVRVUVTVF9MRU4JKChVSU5UMTYpc2l6ZW9mKGhmYTM4NHhfQ2hhbm5lbEluZm9SZXF1ZXN0X2RhdGFfdCkpCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmZvcm1hdGlvbiBSSURzOiAgTW9kZW0gSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BIWVRZUEUJCSgoVUlOVDE2KTB4RkRDMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRDSEFOTkVMCSgoVUlOVDE2KTB4RkRDMSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRQT1dFUlNUQVRFCSgoVUlOVDE2KTB4RkRDMikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NDQU1PREUJCSgoVUlOVDE2KTB4RkRDMykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1NVUFBPUlRFRERBVEFSQVRFUwkoKFVJTlQxNikweEZEQzYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9MRk9TVEFUVVMgICAgICAgICAgICgoVUlOVDE2KTB4RkRDNykgLy8gMS43LjEKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gUklEIExlbmd0aHM6ICBNb2RlbSBJbmZvcm1hdGlvbgorICBUaGlzIGlzIHRoZSBsZW5ndGggb2YgSlVTVCB0aGUgREFUQSBwYXJ0IG9mIHRoZSBSSUQgKGRvZXMgbm90CisgIGluY2x1ZGUgdGhlIGxlbiBvciBjb2RlIGZpZWxkcykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfUklEX1BIWVRZUEVfTEVOCQkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRDSEFOTkVMX0xFTgkJKChVSU5UMTYpMCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NVUlJFTlRQT1dFUlNUQVRFX0xFTgkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0NBTU9ERV9MRU4JCQkoKFVJTlQxNikwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfU1VQUE9SVEVEREFUQVJBVEVTX0xFTgkoKFVJTlQxNikxMCkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQVBJIEVOSEFOQ0VNRU5UUyAoTk9UIEFMUkVBRFkgSU1QTEVNRU5URUQpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRVBERUZBVUxUS0VZSUQJKChVSU5UMTYpMHhGQzIzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTAJKChVSU5UMTYpMHhGQzI0KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTEJKChVSU5UMTYpMHhGQzI1KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTIJKChVSU5UMTYpMHhGQzI2KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTMJKChVSU5UMTYpMHhGQzI3KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MJCSgoVUlOVDE2KTB4RkMyOCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldFUEtFWU1BUFRBQkxFCSgoVUlOVDE2KTB4RkMyOSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkFVVEhFTlRJQ0FUSU9OCSgoVUlOVDE2KTB4RkMyQSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORk1BWEFTU09DU1RBVElPTlMJKChVSU5UMTYpMHhGQzJCKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GVFhDT05UUk9MCSgoVUlOVDE2KTB4RkMyQykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlJPQU1JTkdNT0RFCSgoVUlOVDE2KTB4RkMyRCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkhPU1RBVVRIQVNTT0MJKChVSU5UMTYpMHhGQzJFKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUkNWQ1JDRVJST1IJKChVSU5UMTYpMHhGQzMwKQorLy8gI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GTU1MSUZFCQkoKFVJTlQxNikweEZDMzEpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZBTFRSRVRSWUNOVAkoKFVJTlQxNikweEZDMzIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZBUEJDTklOVAkJKChVSU5UMTYpMHhGQzMzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPCSgoVUlOVDE2KTB4RkMzNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlNUQVBDRklORk8JKChVSU5UMTYpMHhGQzM1KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GUFJJT1JJVFlRVVNBR0UJKChVSU5UMTYpMHhGQzM3KQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GVElNQ1RSTAkJKChVSU5UMTYpMHhGQzQwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GVEhJUlRZMlRBTExZCSgoVUlOVDE2KTB4RkM0MikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkVOSFNFQ1VSSVRZCSgoVUlOVDE2KTB4RkM0MykKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkRCTUFESlVTVCAgCSgoVUlOVDE2KTB4RkM0NikgLy8gTkVXCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXUEFEQVRBICAgICAgIAkoKFVJTlQxNikweEZDNDgpIC8vIDEuNy4wCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZQUk9QT0dBVElPTkRFTEFZCSgoVUlOVDE2KTB4RkM0OSkgLy8gMS43LjYKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlNIT1JUUFJFQU1CTEUJKChVSU5UMTYpMHhGQ0IwKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GRVhDTE9OR1BSRUFNQkxFCSgoVUlOVDE2KTB4RkNCMSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkFVVEhSU1BUSU1FT1VUCSgoVUlOVDE2KTB4RkNCMikKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkJBU0lDUkFURVMJKChVSU5UMTYpMHhGQ0IzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ05GU1VQUFJBVEVTCSgoVUlOVDE2KTB4RkNCNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORkZBTExCQUNLQ1RSTAkoKFVJTlQxNikweEZDQjUpIC8vIE5FVworI2RlZmluZQkJSEZBMzg0eF9SSURfV0VQS0VZU1RBVFVTICAgCSgoVUlOVDE2KTB4RkNCNikgLy8gTkVXCisjZGVmaW5lCQlIRkEzODR4X1JJRF9XRVBLRVlNQVBJTkRFWCAJKChVSU5UMTYpMHhGQ0I3KSAvLyBORVcKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0JST0FEQ0FTVEtFWUlEIAkoKFVJTlQxNikweEZDQjgpIC8vIE5FVworI2RlZmluZQkJSEZBMzg0eF9SSURfRU5UU0VDRkxBR0VZSUQgCSgoVUlOVDE2KTB4RkNCOSkgLy8gTkVXCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZQQVNTSVZFU0NBTkNUUkwJKChVSU5UMTYpMHhGQ0JBKSAvLyBORVcgU1RBCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXUEFIQU5ETElORwkoKFVJTlQxNikweEZDQkIpIC8vIDEuNy4wCisjZGVmaW5lCQlIRkEzODR4X1JJRF9NRENDT05UUk9MICAgICAgICAJKChVSU5UMTYpMHhGQ0JDKSAvLyAxLjcuMC8xLjQuMAorI2RlZmluZQkJSEZBMzg0eF9SSURfTURDQ09VTlRSWSAgICAgICAgCSgoVUlOVDE2KTB4RkNCRCkgLy8gMS43LjAvMS40LjAKKyNkZWZpbmUJCUhGQTM4NHhfUklEX1RYUE9XRVJNQVggICAgICAgIAkoKFVJTlQxNikweEZDQkUpIC8vIDEuNy4wLzEuNC4wCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZMRk9FTkJMRUQgICAgICAJKChVSU5UMTYpMHhGQ0JGKSAvLyAxLjYuMworI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0NBUElORk8gICAgICAgICAgICAgKChVSU5UMTYpMHhGQ0MwKSAvLyAxLjcuMC8xLjMuNworI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0xJU1RFTklOVEVSVkFMICAgICAgKChVSU5UMTYpMHhGQ0MxKSAvLyAxLjcuMC8xLjMuNworI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0RJVkVSU0lUWUVOQUJMRUQgICAgKChVSU5UMTYpMHhGQ0MyKSAvLyAxLjcuMC8xLjMuNworI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0xFRF9DT05UUk9MICAgICAgICAgKChVSU5UMTYpMHhGQ0M0KSAvLyAxLjcuNgorI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0hGT19ERUxBWSAgICAgICAgICAgKChVSU5UMTYpMHhGQ0M1KSAvLyAxLjcuNgorI2RlZmluZSAgICAgICAgIEhGQTM4NHhfUklEX0RJU1NBTE9XRURCU1NJRCAgICAgKChVSU5UMTYpMHhGQ0M2KSAvLyAxLjguMAorI2RlZmluZQkJSEZBMzg0eF9SSURfU0NBTlJFUVVFU1QJCSgoVUlOVDE2KTB4RkNFMSkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0pPSU5SRVFVRVNUCQkoKFVJTlQxNikweEZDRTIpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9BVVRIRU5USUNBVEVTVEEJKChVSU5UMTYpMHhGQ0UzKQorI2RlZmluZQkJSEZBMzg0eF9SSURfQ0hBTk5FTElORk9SRVFVRVNUCSgoVUlOVDE2KTB4RkNFNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0hPU1RTQ0FOICAgICAgICAgIAkoKFVJTlQxNikweEZDRTUpIC8vIE5FVyBTVEEKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0FTU09DSUFURVNUQQkoKFVJTlQxNikweEZDRTYpCisKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORldFUERFRkFVTFRLRVlfTEVOCSgoVUlOVDE2KTYpCisjZGVmaW5lCQlIRkEzODR4X1JJRF9DTkZXRVAxMjhERUZBVUxUS0VZX0xFTgkoKFVJTlQxNikxNCkKKyNkZWZpbmUJCUhGQTM4NHhfUklEX0NORlBSSU9RVVNBR0VfTEVOCQkoKFVJTlQxNik0KQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUEQgUmVjb3JkIGNvZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIEhGQTM4NHhfUERSX1BDQl9QQVJUTlVNCQkoKFVJTlQxNikweDAwMDEpCisjZGVmaW5lIEhGQTM4NHhfUERSX1BEQVZFUgkJKChVSU5UMTYpMHgwMDAyKQorI2RlZmluZSBIRkEzODR4X1BEUl9OSUNfU0VSSUFMCQkoKFVJTlQxNikweDAwMDMpCisjZGVmaW5lIEhGQTM4NHhfUERSX01LS19NRUFTVVJFTUVOVFMJKChVSU5UMTYpMHgwMDA0KQorI2RlZmluZSBIRkEzODR4X1BEUl9OSUNfUkFNU0laRQkJKChVSU5UMTYpMHgwMDA1KQorI2RlZmluZSBIRkEzODR4X1BEUl9NRklTVVBSQU5HRQkJKChVSU5UMTYpMHgwMDA2KQorI2RlZmluZSBIRkEzODR4X1BEUl9DRklTVVBSQU5HRQkJKChVSU5UMTYpMHgwMDA3KQorI2RlZmluZSBIRkEzODR4X1BEUl9OSUNJRAkJKChVSU5UMTYpMHgwMDA4KQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX1JFRkRBQ19NRUFTVVJFTUVOVFMJKChVSU5UMTYpMHgwMDEwKQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX1ZHREFDX01FQVNVUkVNRU5UUwkoKFVJTlQxNikweDAwMjApCisvLyNkZWZpbmUgSEZBMzg0eF9QRFJfTEVWRUxfQ09NUF9NRUFTVVJFTUVOVFMJKChVSU5UMTYpMHgwMDMwKQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX01PREVNX1RSSU1EQUNfTUVBU1VSRU1FTlRTCSgoVUlOVDE2KTB4MDA0MCkKKy8vI2RlZmluZSBIRkEzODR4X1BEUl9DT1JFR0FfSEFDSwkJKChVSU5UMTYpMHgwMGZmKQorI2RlZmluZSBIRkEzODR4X1BEUl9NQUNfQUREUkVTUwkJKChVSU5UMTYpMHgwMTAxKQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX01LS19DQUxMTkFNRQkoKFVJTlQxNikweDAxMDIpCisjZGVmaW5lIEhGQTM4NHhfUERSX1JFR0RPTUFJTgkJKChVSU5UMTYpMHgwMTAzKQorI2RlZmluZSBIRkEzODR4X1BEUl9BTExPV0VEX0NIQU5ORUwJKChVSU5UMTYpMHgwMTA0KQorI2RlZmluZSBIRkEzODR4X1BEUl9ERUZBVUxUX0NIQU5ORUwJKChVSU5UMTYpMHgwMTA1KQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX1BSSVZBQ1lfT1BUSU9OCSgoVUlOVDE2KTB4MDEwNikKKyNkZWZpbmUgSEZBMzg0eF9QRFJfVEVNUFRZUEUJCSgoVUlOVDE2KTB4MDEwNykKKy8vI2RlZmluZSBIRkEzODR4X1BEUl9SRUZEQUNfU0VUVVAJKChVSU5UMTYpMHgwMTEwKQorLy8jZGVmaW5lIEhGQTM4NHhfUERSX1ZHREFDX1NFVFVQCQkoKFVJTlQxNikweDAxMjApCisvLyNkZWZpbmUgSEZBMzg0eF9QRFJfTEVWRUxfQ09NUF9TRVRVUAkoKFVJTlQxNikweDAxMzApCisvLyNkZWZpbmUgSEZBMzg0eF9QRFJfVFJJTURBQ19TRVRVUAkoKFVJTlQxNikweDAxNDApCisjZGVmaW5lIEhGQTM4NHhfUERSX0lGUl9TRVRUSU5HCQkoKFVJTlQxNikweDAyMDApCisjZGVmaW5lIEhGQTM4NHhfUERSX1JGUl9TRVRUSU5HCQkoKFVJTlQxNikweDAyMDEpCisjZGVmaW5lIEhGQTM4NHhfUERSX0hGQTM4NjFfQkFTRUxJTkUJKChVSU5UMTYpMHgwMjAyKQorI2RlZmluZSBIRkEzODR4X1BEUl9IRkEzODYxX1NIQURPVwkoKFVJTlQxNikweDAyMDMpCisjZGVmaW5lIEhGQTM4NHhfUERSX0hGQTM4NjFfSUZSRgkoKFVJTlQxNikweDAyMDQpCisjZGVmaW5lIEhGQTM4NHhfUERSX0hGQTM4NjFfQ0hDQUxTUAkoKFVJTlQxNikweDAzMDApCisjZGVmaW5lIEhGQTM4NHhfUERSX0hGQTM4NjFfQ0hDQUxJCSgoVUlOVDE2KTB4MDMwMSkKKyNkZWZpbmUgSEZBMzg0eF9QRFJfTUFYX1RYX1BPV0VSICAJKChVSU5UMTYpMHgwMzAyKQorI2RlZmluZSBIRkEzODR4X1BEUl9NQVNURVJfQ0hBTl9MSVNUCSgoVUlOVDE2KTB4MDMwMykKKyNkZWZpbmUgSEZBMzg0eF9QRFJfMzg0Ml9OSUNfQ09ORklHCSgoVUlOVDE2KTB4MDQwMCkKKyNkZWZpbmUgSEZBMzg0eF9QRFJfVVNCX0lECQkoKFVJTlQxNikweDA0MDEpCisjZGVmaW5lIEhGQTM4NHhfUERSX1BDSV9JRAkJKChVSU5UMTYpMHgwNDAyKQorI2RlZmluZSBIRkEzODR4X1BEUl9QQ0lfSUZDT05GCQkoKFVJTlQxNikweDA0MDMpCisjZGVmaW5lIEhGQTM4NHhfUERSX1BDSV9QTUNPTkYJCSgoVUlOVDE2KTB4MDQwNCkKKyNkZWZpbmUgSEZBMzg0eF9QRFJfUkZFTlJHWQkJKChVSU5UMTYpMHgwNDA2KQorI2RlZmluZSBIRkEzODR4X1BEUl9VU0JfUE9XRVJfVFlQRSAgICAgICgoVUlOVDE2KTB4MDQwNykKKy8vI2RlZmluZSBIRkEzODR4X1BEUl9VTktOT1dONDA4CQkoKFVJTlQxNikweDA0MDgpCisjZGVmaW5lIEhGQTM4NHhfUERSX1VTQl9NQVhfUE9XRVIJKChVSU5UMTYpMHgwNDA5KQorI2RlZmluZSBIRkEzODR4X1BEUl9VU0JfTUFOVUZBQ1RVUkVSCSgoVUlOVDE2KTB4MDQxMCkKKyNkZWZpbmUgSEZBMzg0eF9QRFJfVVNCX1BST0RVQ1QgIAkoKFVJTlQxNikweDA0MTEpCisjZGVmaW5lIEhGQTM4NHhfUERSX0FOVF9ESVZFUlNJVFkgICAJKChVSU5UMTYpMHgwNDEyKQorI2RlZmluZSBIRkEzODR4X1BEUl9IRk9fREVMQVkgICAgICAgCSgoVUlOVDE2KTB4MDQxMykKKyNkZWZpbmUgSEZBMzg0eF9QRFJfU0NBTEVfVEhSRVNIIAkoKFVJTlQxNikweDA0MTQpCisKKyNkZWZpbmUgSEZBMzg0eF9QRFJfSEZBMzg2MV9NQU5GX1RFU1RTUAkoKFVJTlQxNikweDA5MDApCisjZGVmaW5lIEhGQTM4NHhfUERSX0hGQTM4NjFfTUFORl9URVNUSQkoKFVJTlQxNikweDA5MDEpCisjZGVmaW5lIEhGQTM4NHhfUERSX0VORF9PRl9QREEJCSgoVUlOVDE2KTB4MDAwMCkKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0tLS0gTWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLS0gUmVnaXN0ZXIgSUQgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNkZWZpbmUJCUhGQTM4NHhfQ01ECQlIRkEzODR4X0NNRF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUEFSQU0wCQlIRkEzODR4X1BBUkFNMF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUEFSQU0xCQlIRkEzODR4X1BBUkFNMV9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUEFSQU0yCQlIRkEzODR4X1BBUkFNMl9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfU1RBVFVTCQlIRkEzODR4X1NUQVRVU19PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUkVTUDAJCUhGQTM4NHhfUkVTUDBfT0ZGCisjZGVmaW5lCQlIRkEzODR4X1JFU1AxCQlIRkEzODR4X1JFU1AxX09GRgorI2RlZmluZQkJSEZBMzg0eF9SRVNQMgkJSEZBMzg0eF9SRVNQMl9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfSU5GT0ZJRAkJSEZBMzg0eF9JTkZPRklEX09GRgorI2RlZmluZQkJSEZBMzg0eF9SWEZJRAkJSEZBMzg0eF9SWEZJRF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfQUxMT0NGSUQJSEZBMzg0eF9BTExPQ0ZJRF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfVFhDT01QTEZJRAlIRkEzODR4X1RYQ09NUExGSURfT0ZGCisjZGVmaW5lCQlIRkEzODR4X1NFTEVDVDAJCUhGQTM4NHhfU0VMRUNUMF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfT0ZGU0VUMAkJSEZBMzg0eF9PRkZTRVQwX09GRgorI2RlZmluZQkJSEZBMzg0eF9EQVRBMAkJSEZBMzg0eF9EQVRBMF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfU0VMRUNUMQkJSEZBMzg0eF9TRUxFQ1QxX09GRgorI2RlZmluZQkJSEZBMzg0eF9PRkZTRVQxCQlIRkEzODR4X09GRlNFVDFfT0ZGCisjZGVmaW5lCQlIRkEzODR4X0RBVEExCQlIRkEzODR4X0RBVEExX09GRgorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVQJCUhGQTM4NHhfRVZTVEFUX09GRgorI2RlZmluZQkJSEZBMzg0eF9JTlRFTgkJSEZBMzg0eF9JTlRFTl9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0sJCUhGQTM4NHhfRVZBQ0tfT0ZGCisjZGVmaW5lCQlIRkEzODR4X0NPTlRST0wJCUhGQTM4NHhfQ09OVFJPTF9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfU1dTVVBQT1JUMAlIRkEzODR4X1NXU1VQUE9SVDBfT0ZGCisjZGVmaW5lCQlIRkEzODR4X1NXU1VQUE9SVDEJSEZBMzg0eF9TV1NVUFBPUlQxX09GRgorI2RlZmluZQkJSEZBMzg0eF9TV1NVUFBPUlQyCUhGQTM4NHhfU1dTVVBQT1JUMl9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfQVVYUEFHRQkJSEZBMzg0eF9BVVhQQUdFX09GRgorI2RlZmluZQkJSEZBMzg0eF9BVVhPRkZTRVQJSEZBMzg0eF9BVVhPRkZTRVRfT0ZGCisjZGVmaW5lCQlIRkEzODR4X0FVWERBVEEJCUhGQTM4NHhfQVVYREFUQV9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUENJQ09SCQlIRkEzODR4X1BDSUNPUl9PRkYKKyNkZWZpbmUJCUhGQTM4NHhfUENJSENSCQlIRkEzODR4X1BDSUhDUl9PRkYKKworCisvKi0tLSBSZWdpc3RlciBUZXN0L0dldC9TZXQgRmllbGQgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX0lTQlVTWSh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNil2YWx1ZSkgJiBIRkEzODR4X0NNRF9CVVNZKSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX0FJTkZPX0dFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpICYgSEZBMzg0eF9DTURfQUlORk8pID4+IDgpKQorI2RlZmluZQkJSEZBMzg0eF9DTURfQUlORk9fU0VUKHZhbHVlKQkJKChVSU5UMTYpKChVSU5UMTYpKHZhbHVlKSA8PCA4KSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX01BQ1BPUlRfR0VUKHZhbHVlKQkJKChVSU5UMTYpKEhGQTM4NHhfQ01EX0FJTkZPX0dFVCgoVUlOVDE2KSh2YWx1ZSkgJiBIRkEzODR4X0NNRF9NQUNQT1JUKSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9NQUNQT1JUX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KUhGQTM4NHhfQ01EX0FJTkZPX1NFVCh2YWx1ZSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9JU1JFQ0wodmFsdWUpCQkoKFVJTlQxNikoSEZBMzg0eF9DTURfQUlORk9fR0VUKChVSU5UMTYpKHZhbHVlKSAmIEhGQTM4NHhfQ01EX1JFQ0wpKSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX1JFQ0xfU0VUKHZhbHVlKQkJKChVSU5UMTYpSEZBMzg0eF9DTURfQUlORk9fU0VUKHZhbHVlKSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX1FPU19HRVQodmFsdWUpCQkoKFVJTlQxNigoKChVSU5UMTYpKHZhbHVlKSkmKChVSU5UMTYpMHgzMDAwKSkgPj4gMTIpKQorI2RlZmluZQkJSEZBMzg0eF9DTURfUU9TX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKChVSU5UMTYpKHZhbHVlKSkgPDwgMTIpICYgMHgzMDAwKSkKKyNkZWZpbmUJCUhGQTM4NHhfQ01EX0lTV1JJVEUodmFsdWUpCQkoKFVJTlQxNikoSEZBMzg0eF9DTURfQUlORk9fR0VUKChVSU5UMTYpKHZhbHVlKSAmIEhGQTM4NHhfQ01EX1dSSVRFKSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9XUklURV9TRVQodmFsdWUpCQkoKFVJTlQxNilIRkEzODR4X0NNRF9BSU5GT19TRVQoKFVJTlQxNil2YWx1ZSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9QUk9HTU9ERV9HRVQodmFsdWUpCQkoKFVJTlQxNikoSEZBMzg0eF9DTURfQUlORk9fR0VUKChVSU5UMTYpKHZhbHVlKSAmIEhGQTM4NHhfQ01EX1BST0dNT0RFKSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9QUk9HTU9ERV9TRVQodmFsdWUpCQkoKFVJTlQxNilIRkEzODR4X0NNRF9BSU5GT19TRVQoKFVJTlQxNil2YWx1ZSkpCisjZGVmaW5lCQlIRkEzODR4X0NNRF9DTURDT0RFX0dFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfQ01EX0NNRENPREUpKQorI2RlZmluZQkJSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQodmFsdWUpCQkoKFVJTlQxNikodmFsdWUpKQorCisjZGVmaW5lCQlIRkEzODR4X1NUQVRVU19SRVNVTFRfR0VUKHZhbHVlKQkoKFVJTlQxNikoKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9TVEFUVVNfUkVTVUxUKSA+PiA4KSkKKyNkZWZpbmUJCUhGQTM4NHhfU1RBVFVTX1JFU1VMVF9TRVQodmFsdWUpCSgoKFVJTlQxNikodmFsdWUpKSA8PCA4KQorI2RlZmluZQkJSEZBMzg0eF9TVEFUVVNfQ01EQ09ERV9HRVQodmFsdWUpCSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfU1RBVFVTX0NNRENPREUpCisjZGVmaW5lCQlIRkEzODR4X1NUQVRVU19DTURDT0RFX1NFVCh2YWx1ZSkJKChVSU5UMTYpKHZhbHVlKSkKKworI2RlZmluZQkJSEZBMzg0eF9PRkZTRVRfSVNCVVNZKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9PRkZTRVRfQlVTWSkpCisjZGVmaW5lCQlIRkEzODR4X09GRlNFVF9JU0VSUih2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfT0ZGU0VUX0VSUikpCisjZGVmaW5lCQlIRkEzODR4X09GRlNFVF9EQVRBT0ZGX0dFVCh2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9PRkZTRVRfREFUQU9GRikpCisjZGVmaW5lCQlIRkEzODR4X09GRlNFVF9EQVRBT0ZGX1NFVCh2YWx1ZSkJKChVSU5UMTYpKHZhbHVlKSkKKworI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNUSUNLKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVlNUQVRfVElDSykpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9JU1dURVJSKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVlNUQVRfV1RFUlIpKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNJTkZEUk9QKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVlNUQVRfSU5GRFJPUCkpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9JU0lORk8odmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0VWU1RBVF9JTkZPKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX0lTRFRJTSh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfRVZTVEFUX0RUSU0pKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNDTUQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0VWU1RBVF9DTUQpKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNBTExPQyh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfRVZTVEFUX0FMTE9DKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZTVEFUX0lTVFhFWEModmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0VWU1RBVF9UWEVYQykpCisjZGVmaW5lCQlIRkEzODR4X0VWU1RBVF9JU1RYKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVlNUQVRfVFgpKQorI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNSWCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfRVZTVEFUX1JYKSkKKworI2RlZmluZQkJSEZBMzg0eF9FVlNUQVRfSVNCQVBfT1AodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0lOVF9CQVBfT1ApKQorCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX0lTVElDSyh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fVElDSykpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX1RJQ0tfU0VUKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDE1KSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSVNXVEVSUih2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fV1RFUlIpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9XVEVSUl9TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMTQpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9JU0lORkRST1AodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0lOVEVOX0lORkRST1ApKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9JTkZEUk9QX1NFVCh2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDEzKSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSVNJTkZPKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9JTlRFTl9JTkZPKSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSU5GT19TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgNykpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX0lTRFRJTSh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fRFRJTSkpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX0RUSU1fU0VUKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDUpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9JU0NNRCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fQ01EKSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fQ01EX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCA0KSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSVNBTExPQyh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fQUxMT0MpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9BTExPQ19TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMykpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX0lTVFhFWEModmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0lOVEVOX1RYRVhDKSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fVFhFWENfU0VUKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDIpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9JU1RYKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9JTlRFTl9UWCkpCisjZGVmaW5lCQlIRkEzODR4X0lOVEVOX1RYX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCAxKSkKKyNkZWZpbmUJCUhGQTM4NHhfSU5URU5fSVNSWCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfSU5URU5fUlgpKQorI2RlZmluZQkJSEZBMzg0eF9JTlRFTl9SWF9TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMCkpCisKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfSVNUSUNLKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19USUNLKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfVElDS19TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMTUpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JU1dURVJSKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19XVEVSUikpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX1dURVJSX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCAxNCkpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX0lTSU5GRFJPUCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfRVZBQ0tfSU5GRFJPUCkpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX0lORkRST1BfU0VUKHZhbHVlKQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMTMpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JU0lORk8odmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0VWQUNLX0lORk8pKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JTkZPX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCA3KSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfSVNEVElNKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19EVElNKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfRFRJTV9TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgNSkpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX0lTQ01EKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19DTUQpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19DTURfU0VUKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDQpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JU0FMTE9DKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19BTExPQykpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX0FMTE9DX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCAzKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfSVNUWEVYQyh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfRVZBQ0tfVFhFWEMpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19UWEVYQ19TRVQodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgPDwgMikpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX0lTVFgodmFsdWUpCQkoKFVJTlQxNikoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X0VWQUNLX1RYKSkKKyNkZWZpbmUJCUhGQTM4NHhfRVZBQ0tfVFhfU0VUKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDEpKQorI2RlZmluZQkJSEZBMzg0eF9FVkFDS19JU1JYKHZhbHVlKQkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9FVkFDS19SWCkpCisjZGVmaW5lCQlIRkEzODR4X0VWQUNLX1JYX1NFVCh2YWx1ZSkJCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA8PCAwKSkKKworI2RlZmluZQkJSEZBMzg0eF9DT05UUk9MX0FVWEVOX1NFVCh2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDE0KSkKKyNkZWZpbmUJCUhGQTM4NHhfQ09OVFJPTF9BVVhFTl9HRVQodmFsdWUpCSgoVUlOVDE2KSgoKFVJTlQxNikodmFsdWUpKSA+PiAxNCkpCisKKy8qIEJ5dGUgT3JkZXIgKi8KKyNpZmRlZiBfX0tFUk5FTF9fCisjZGVmaW5lIGhmYTM4NHgyaG9zdF8xNihuKQkoX19sZTE2X3RvX2NwdSgoVUlOVDE2KShuKSkpCisjZGVmaW5lIGhmYTM4NHgyaG9zdF8zMihuKQkoX19sZTMyX3RvX2NwdSgoVUlOVDMyKShuKSkpCisjZGVmaW5lIGhvc3QyaGZhMzg0eF8xNihuKQkoX19jcHVfdG9fbGUxNigoVUlOVDE2KShuKSkpCisjZGVmaW5lIGhvc3QyaGZhMzg0eF8zMihuKQkoX19jcHVfdG9fbGUzMigoVUlOVDMyKShuKSkpCisjZW5kaWYKKworLyogSG9zdCBNYWludGFpbmVkIFN0YXRlIEluZm8gKi8KKyNkZWZpbmUgSEZBMzg0eF9TVEFURV9QUkVJTklUCTAKKyNkZWZpbmUgSEZBMzg0eF9TVEFURV9JTklUCTEKKyNkZWZpbmUgSEZBMzg0eF9TVEFURV9SVU5OSU5HCTIKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qLS0tLS0tIFR5cGVzIGFuZCB0aGVpciByZWxhdGVkIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNkZWZpbmUgSEZBMzg0eF9IT1NUQVVUSEFTU09DX0hPU1RBVVRIICAgQklUMAorI2RlZmluZSBIRkEzODR4X0hPU1RBVVRIQVNTT0NfSE9TVEFTU09DICBCSVQxCisKKyNkZWZpbmUgSEZBMzg0eF9XSEFIQU5ETElOR19ESVNBQkxFRCAgICAgMAorI2RlZmluZSBIRkEzODR4X1dIQUhBTkRMSU5HX1BBU1NUSFJPVUdIICBCSVQxCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBDb21tb25seSB1c2VkIGJhc2ljIHR5cGVzICovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2J5dGVzdHIKK3sKKwlVSU5UMTYJbGVuOworCVVJTlQ4CWRhdGFbMF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfYnl0ZXN0cl90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2J5dGVzdHIzMgoreworCVVJTlQxNglsZW47CisJVUlOVDgJZGF0YVszMl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfYnl0ZXN0cjMyX3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbmZpZ3VyYXRpb24gUmVjb3JkIFN0cnVjdHVyZXM6CisJTmV0d29yayBQYXJhbWV0ZXJzLCBTdGF0aWMgQ29uZmlndXJhdGlvbiBFbnRpdGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogUHJvdG90eXBlIHN0cnVjdHVyZTogYWxsIGNvbmZpZ3VyYXRpb24gcmVjb3JkIHN0cnVjdHVyZXMgc3RhcnQgd2l0aAordGhlc2UgbWVtYmVycyAqLworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3JlY29yZAoreworCVVJTlQxNglyZWNsZW47CisJVUlOVDE2CXJpZDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9yZWNfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9yZWNvcmQxNgoreworCVVJTlQxNglyZWNsZW47CisJVUlOVDE2CXJpZDsKKwlVSU5UMTYJdmFsOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3JlYzE2X3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcmVjb3JkMzIKK3sKKwlVSU5UMTYJcmVjbGVuOworCVVJTlQxNglyaWQ7CisJVUlOVDMyCXZhbDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9yZWMzMjsKKworLyotLSBIYXJkd2FyZS9GaXJtd2FyZSBDb21wb25lbnQgSW5mb3JtYXRpb24gLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NvbXBpZGVudAoreworCVVJTlQxNglpZDsKKwlVSU5UMTYJdmFyaWFudDsKKwlVSU5UMTYJbWFqb3I7CisJVUlOVDE2CW1pbm9yOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NvbXBpZGVudF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NhcGxldmVsCit7CisJVUlOVDE2CXJvbGU7CisJVUlOVDE2CWlkOworCVVJTlQxNgl2YXJpYW50OworCVVJTlQxNglib3R0b207CisJVUlOVDE2CXRvcDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jYXBsZXZlbF90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZQb3J0VHlwZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZlBvcnRUeXBlCit7CisJVUlOVDE2CWNuZlBvcnRUeXBlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZlBvcnRUeXBlX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IGNuZk93bk1BQ0FkZHJlc3MgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jbmZPd25NQUNBZGRyZXNzCit7CisJVUlOVDgJY25mT3duTUFDQWRkcmVzc1s2XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZPd25NQUNBZGRyZXNzX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IGNuZkRlc2lyZWRTU0lEIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mRGVzaXJlZFNTSUQKK3sKKwlVSU5UOAljbmZEZXNpcmVkU1NJRFszNF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfY25mRGVzaXJlZFNTSURfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mT3duQ2hhbm5lbCAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZk93bkNoYW5uZWwKK3sKKwlVSU5UMTYJY25mT3duQ2hhbm5lbDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZPd25DaGFubmVsX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IGNuZk93blNTSUQgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jbmZPd25TU0lECit7CisJVUlOVDgJY25mT3duU1NJRFszNF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfY25mT3duU1NJRF90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZPd25BVElNV2luZG93IC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mT3duQVRJTVdpbmRvdworeworCVVJTlQxNgljbmZPd25BVElNV2luZG93OworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZk93bkFUSU1XaW5kb3dfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mU3lzdGVtU2NhbGUgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jbmZTeXN0ZW1TY2FsZQoreworCVVJTlQxNgljbmZTeXN0ZW1TY2FsZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZTeXN0ZW1TY2FsZV90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZNYXhEYXRhTGVuZ3RoIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mTWF4RGF0YUxlbmd0aAoreworCVVJTlQxNgljbmZNYXhEYXRhTGVuZ3RoOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZk1heERhdGFMZW5ndGhfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mV0RTQWRkcmVzcyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZldEU0FkZHJlc3MKK3sKKwlVSU5UOAljbmZXRFNBZGRyZXNzWzZdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZldEU0FkZHJlc3NfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mUE1FbmFibGVkIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mUE1FbmFibGVkCit7CisJVUlOVDE2CWNuZlBNRW5hYmxlZDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZQTUVuYWJsZWRfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mUE1FUFMgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jbmZQTUVQUworeworCVVJTlQxNgljbmZQTUVQUzsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZQTUVQU190OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZNdWx0aWNhc3RSZWNlaXZlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mTXVsdGljYXN0UmVjZWl2ZQoreworCVVJTlQxNgljbmZNdWx0aWNhc3RSZWNlaXZlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZk11bHRpY2FzdFJlY2VpdmVfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mQXV0aGVudGljYXRpb24gLS0qLworI2RlZmluZSBIRkEzODR4X0NORkFVVEhFTlRJQ0FUSU9OX09QRU5TWVNURU0JMHgwMDAxCisjZGVmaW5lIEhGQTM4NHhfQ05GQVVUSEVOVElDQVRJT05fU0hBUkVES0VZCTB4MDAwMgorI2RlZmluZSBIRkEzODR4X0NORkFVVEhFTlRJQ0FUSU9OX0xFQVAgICAgIAkweDAwMDQKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mTWF4U2xlZXBEdXJhdGlvbiAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZk1heFNsZWVwRHVyYXRpb24KK3sKKwlVSU5UMTYJY25mTWF4U2xlZXBEdXJhdGlvbjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZNYXhTbGVlcER1cmF0aW9uX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IGNuZlBNSG9sZG92ZXJEdXJhdGlvbiAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZlBNSG9sZG92ZXJEdXJhdGlvbgoreworCVVJTlQxNgljbmZQTUhvbGRvdmVyRHVyYXRpb247Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfY25mUE1Ib2xkb3ZlckR1cmF0aW9uX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IGNuZk93bk5hbWUgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jbmZPd25OYW1lCit7CisJVUlOVDgJY25mT3duTmFtZVszNF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfY25mT3duTmFtZV90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZPd25EVElNUGVyaW9kIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfY25mT3duRFRJTVBlcmlvZAoreworCVVJTlQxNgljbmZPd25EVElNUGVyaW9kOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZk93bkRUSU1QZXJpb2RfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogY25mV0RTQWRkcmVzcyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZldEU0FkZHJlc3NOCit7CisJVUlOVDgJY25mV0RTQWRkcmVzc1s2XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9jbmZXRFNBZGRyZXNzTl90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBjbmZNdWx0aWNhc3RQTUJ1ZmZlcmluZyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2NuZk11bHRpY2FzdFBNQnVmZmVyaW5nCit7CisJVUlOVDE2CWNuZk11bHRpY2FzdFBNQnVmZmVyaW5nOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2NuZk11bHRpY2FzdFBNQnVmZmVyaW5nX3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbmZpZ3VyYXRpb24gUmVjb3JkIFN0cnVjdHVyZXM6CisJTmV0d29yayBQYXJhbWV0ZXJzLCBEeW5hbWljIENvbmZpZ3VyYXRpb24gRW50aXRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogR3JvdXBBZGRyZXNzZXMgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Hcm91cEFkZHJlc3NlcworeworCVVJTlQ4CU1BQ0FkZHJlc3NbMTZdWzZdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0dyb3VwQWRkcmVzc2VzX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IENyZWF0ZUlCU1MgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DcmVhdGVJQlNTCit7CisJVUlOVDE2CUNyZWF0ZUlCU1M7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ3JlYXRlSUJTU190OworCisjZGVmaW5lIEhGQTM4NHhfQ1JFQVRFSUJTU19KT0lOQ1JFQVRFSUJTUyAgICAgICAgICAwCisjZGVmaW5lIEhGQTM4NHhfQ1JFQVRFSUJTU19KT0lORVNTX0pPSU5DUkVBVEVJQlNTICAxCisjZGVmaW5lIEhGQTM4NHhfQ1JFQVRFSUJTU19KT0lOSUJTUyAgICAgICAgICAgICAgICAyCisjZGVmaW5lIEhGQTM4NHhfQ1JFQVRFSUJTU19KT0lORVNTX0pPSU5JQlNTICAgICAgICAzCisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IEZyYWdtZW50YXRpb25UaHJlc2hvbGQgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9GcmFnbWVudGF0aW9uVGhyZXNob2xkCit7CisJVUlOVDE2CUZyYWdtZW50YXRpb25UaHJlc2hvbGQ7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfRnJhZ21lbnRhdGlvblRocmVzaG9sZF90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBSVFNUaHJlc2hvbGQgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9SVFNUaHJlc2hvbGQKK3sKKwlVSU5UMTYJUlRTVGhyZXNob2xkOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1JUU1RocmVzaG9sZF90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBUeFJhdGVDb250cm9sIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfVHhSYXRlQ29udHJvbAoreworCVVJTlQxNglUeFJhdGVDb250cm9sOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1R4UmF0ZUNvbnRyb2xfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogUHJvbWlzY3VvdXNNb2RlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUHJvbWlzY3VvdXNNb2RlCit7CisJVUlOVDE2CVByb21pc2N1b3VzTW9kZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Qcm9taXNjdW91c01vZGVfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogU2NhblJlcXVlc3QgKGRhdGEgcG9ydGlvbiBvbmx5KSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1NjYW5SZXF1ZXN0X2RhdGEKK3sKKwlVSU5UMTYJY2hhbm5lbExpc3Q7CisJVUlOVDE2CXR4UmF0ZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9TY2FuUmVxdWVzdF9kYXRhX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IEhvc3RTY2FuUmVxdWVzdCAoZGF0YSBwb3J0aW9uIG9ubHkpIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfSG9zdFNjYW5SZXF1ZXN0X2RhdGEKK3sKKwlVSU5UMTYJY2hhbm5lbExpc3Q7CisJVUlOVDE2CXR4UmF0ZTsKKwloZmEzODR4X2J5dGVzdHIzMl90IHNzaWQ7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfSG9zdFNjYW5SZXF1ZXN0X2RhdGFfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogSm9pblJlcXVlc3QgKGRhdGEgcG9ydGlvbiBvbmx5KSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0pvaW5SZXF1ZXN0X2RhdGEKK3sKKwlVSU5UOAlic3NpZFtXTEFOX0JTU0lEX0xFTl07CisJVUlOVDE2CWNoYW5uZWw7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfSm9pblJlcXVlc3RfZGF0YV90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBhdXRoZW50aWNhdGVTdGF0aW9uIChkYXRhIHBvcnRpb24gb25seSkgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9hdXRoZW50aWNhdGVTdGF0aW9uX2RhdGEKK3sKKwlVSU5UOAlhZGRyZXNzW1dMQU5fQUREUl9MRU5dOworCVVJTlQxNglzdGF0dXM7CisJVUlOVDE2CWFsZ29yaXRobTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9hdXRoZW50aWNhdGVTdGF0aW9uX2RhdGFfdDsKKworLyotLSBDb25maWd1cmF0aW9uIFJlY29yZDogYXNzb2NpYXRlU3RhdGlvbiAoZGF0YSBwb3J0aW9uIG9ubHkpIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfYXNzb2NpYXRlU3RhdGlvbl9kYXRhCit7CisJVUlOVDgJYWRkcmVzc1tXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJc3RhdHVzOworCVVJTlQxNgl0eXBlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2Fzc29jaWF0ZVN0YXRpb25fZGF0YV90OworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBDaGFubmVsSW5mb1JlcXVlc3QgKGRhdGEgcG9ydGlvbiBvbmx5KSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0NoYW5uZWxJbmZvUmVxdWVzdF9kYXRhCit7CisJVUlOVDE2CWNoYW5uZWxMaXN0OworCVVJTlQxNgljaGFubmVsRHdlbGxUaW1lOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0NoYW5uZWxJbmZvUmVxdWVzdF9kYXRhX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IFdFUEtleU1hcHBpbmcgKGRhdGEgcG9ydGlvbiBvbmx5KSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1dFUEtleU1hcHBpbmcKK3sKKwlVSU5UOAlhZGRyZXNzW1dMQU5fQUREUl9MRU5dOworCVVJTlQxNglrZXlfaW5kZXg7CisJVUlOVDggCWtleVsxNl07CisJVUlOVDggCW1pY190cmFuc21pdF9rZXlbNF07CisJVUlOVDggCW1pY19yZWNlaXZlX2tleVs0XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9XRVBLZXlNYXBwaW5nX3Q7CisKKy8qLS0gQ29uZmlndXJhdGlvbiBSZWNvcmQ6IFdQQURhdGEgICAgICAgKGRhdGEgcG9ydGlvbiBvbmx5KSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1dQQURhdGEKK3sKKwlVSU5UMTYJZGF0YWxlbjsKKyAgICAgICAgVUlOVDggCWRhdGFbMF07IC8vIG1heCA4MAorfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1dQQURhdGFfdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29uZmlndXJhdGlvbiBSZWNvcmQgU3RydWN0dXJlczogQmVoYXZpb3IgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tIENvbmZpZ3VyYXRpb24gUmVjb3JkOiBUaWNrVGltZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1RpY2tUaW1lCit7CisJVUlOVDE2CVRpY2tUaW1lOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1RpY2tUaW1lX3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZm9ybWF0aW9uIFJlY29yZCBTdHJ1Y3R1cmVzOiBOSUMgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IE1heExvYWRUaW1lIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfTWF4TG9hZFRpbWUKK3sKKwlVSU5UMTYJTWF4TG9hZFRpbWU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfTWF4TG9hZFRpbWVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IERvd25Mb2FkQnVmZmVyIC0tKi8KKy8qIE5PVEU6IFRoZSBwYWdlIGFuZCBvZmZzZXQgYXJlIGluIEFVWCBmb3JtYXQgKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfZG93bmxvYWRidWZmZXIKK3sKKwlVSU5UMTYJcGFnZTsKKwlVSU5UMTYJb2Zmc2V0OworCVVJTlQxNglsZW47Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfZG93bmxvYWRidWZmZXJfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IFBSSUlkZW50aXR5IC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUFJJSWRlbnRpdHkKK3sKKwlVSU5UMTYJUFJJQ29tcElEOworCVVJTlQxNglQUklWYXJpYW50OworCVVJTlQxNglQUklNYWpvclZlcnNpb247CisJVUlOVDE2CVBSSU1pbm9yVmVyc2lvbjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9QUklJZGVudGl0eV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogUFJJU3VwUmFuZ2UgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9QUklTdXBSYW5nZQoreworCVVJTlQxNglQUklSb2xlOworCVVJTlQxNglQUklJRDsKKwlVSU5UMTYJUFJJVmFyaWFudDsKKwlVSU5UMTYJUFJJQm90dG9tOworCVVJTlQxNglQUklUb3A7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfUFJJU3VwUmFuZ2VfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IENGSUFjdFJhbmdlcyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0NGSUFjdFJhbmdlcworeworCVVJTlQxNglDRklSb2xlOworCVVJTlQxNglDRklJRDsKKwlVSU5UMTYJQ0ZJVmFyaWFudDsKKwlVSU5UMTYJQ0ZJQm90dG9tOworCVVJTlQxNglDRklUb3A7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ0ZJQWN0UmFuZ2VzX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBOSUNTZXJpYWxOdW1iZXIgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9OSUNTZXJpYWxOdW1iZXIKK3sKKwlVSU5UOAlOSUNTZXJpYWxOdW1iZXJbMTJdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X05JQ1NlcmlhbE51bWJlcl90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogTklDSWRlbnRpdHkgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9OSUNJZGVudGl0eQoreworCVVJTlQxNglOSUNDb21wSUQ7CisJVUlOVDE2CU5JQ1ZhcmlhbnQ7CisJVUlOVDE2CU5JQ01ham9yVmVyc2lvbjsKKwlVSU5UMTYJTklDTWlub3JWZXJzaW9uOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X05JQ0lkZW50aXR5X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBNRklTdXBSYW5nZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X01GSVN1cFJhbmdlCit7CisJVUlOVDE2CU1GSVJvbGU7CisJVUlOVDE2CU1GSUlEOworCVVJTlQxNglNRklWYXJpYW50OworCVVJTlQxNglNRklCb3R0b207CisJVUlOVDE2CU1GSVRvcDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9NRklTdXBSYW5nZV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogQ0ZJU3VwUmFuZ2UgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DRklTdXBSYW5nZQoreworCVVJTlQxNglDRklSb2xlOworCVVJTlQxNglDRklJRDsKKwlVSU5UMTYJQ0ZJVmFyaWFudDsKKwlVSU5UMTYJQ0ZJQm90dG9tOworCVVJTlQxNglDRklUb3A7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ0ZJU3VwUmFuZ2VfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IEJVSUxEU0VROkJ1aWxkU2VxIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQnVpbGRTZXEgeworCVVJTlQxNglwcmltYXJ5OworCVVJTlQxNglzZWNvbmRhcnk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQnVpbGRTZXFfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IEZXSUQgLS0qLworI2RlZmluZSBIRkEzODR4X0ZXSURfTEVOCTE0Cit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0ZXSUQgeworCVVJTlQ4CXByaW1hcnlbSEZBMzg0eF9GV0lEX0xFTl07CisJVUlOVDgJc2Vjb25kYXJ5W0hGQTM4NHhfRldJRF9MRU5dOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0ZXSURfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IENoYW5uZWxMaXN0IC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQ2hhbm5lbExpc3QKK3sKKwlVSU5UMTYJQ2hhbm5lbExpc3Q7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ2hhbm5lbExpc3RfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IFJlZ3VsYXRvcnlEb21haW5zIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUmVndWxhdG9yeURvbWFpbnMKK3sKKwlVSU5UOAlSZWd1bGF0b3J5RG9tYWluc1sxMl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfUmVndWxhdG9yeURvbWFpbnNfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IFRlbXBUeXBlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfVGVtcFR5cGUKK3sKKwlVSU5UMTYJVGVtcFR5cGU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfVGVtcFR5cGVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IENJUyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0NJUworeworCVVJTlQ4CUNJU1s0ODBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0NJU190OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogU1RBSWRlbnRpdHkgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9TVEFJZGVudGl0eQoreworCVVJTlQxNglTVEFDb21wSUQ7CisJVUlOVDE2CVNUQVZhcmlhbnQ7CisJVUlOVDE2CVNUQU1ham9yVmVyc2lvbjsKKwlVSU5UMTYJU1RBTWlub3JWZXJzaW9uOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1NUQUlkZW50aXR5X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBTVEFTdXBSYW5nZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1NUQVN1cFJhbmdlCit7CisJVUlOVDE2CVNUQVJvbGU7CisJVUlOVDE2CVNUQUlEOworCVVJTlQxNglTVEFWYXJpYW50OworCVVJTlQxNglTVEFCb3R0b207CisJVUlOVDE2CVNUQVRvcDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9TVEFTdXBSYW5nZV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogTUZJQWN0UmFuZ2VzIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfTUZJQWN0UmFuZ2VzCit7CisJVUlOVDE2CU1GSVJvbGU7CisJVUlOVDE2CU1GSUlEOworCVVJTlQxNglNRklWYXJpYW50OworCVVJTlQxNglNRklCb3R0b207CisJVUlOVDE2CU1GSVRvcDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9NRklBY3RSYW5nZXNfdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gUmVjb3JkIFN0cnVjdHVyZXM6IE5JQyBJbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogUG9ydFN0YXR1cyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1BvcnRTdGF0dXMKK3sKKwlVSU5UMTYJUG9ydFN0YXR1czsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Qb3J0U3RhdHVzX3Q7CisKKyNkZWZpbmUgSEZBMzg0eF9QU1RBVFVTX0RJU0FCTEVECSgoVUlOVDE2KTEpCisjZGVmaW5lIEhGQTM4NHhfUFNUQVRVU19TRUFSQ0hJTkcJKChVSU5UMTYpMikKKyNkZWZpbmUgSEZBMzg0eF9QU1RBVFVTX0NPTk5fSUJTUwkoKFVJTlQxNikzKQorI2RlZmluZSBIRkEzODR4X1BTVEFUVVNfQ09OTl9FU1MJKChVSU5UMTYpNCkKKyNkZWZpbmUgSEZBMzg0eF9QU1RBVFVTX09VVE9GUkFOR0UJKChVSU5UMTYpNSkKKyNkZWZpbmUgSEZBMzg0eF9QU1RBVFVTX0NPTk5fV0RTCSgoVUlOVDE2KTYpCisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBDdXJyZW50U1NJRCAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0N1cnJlbnRTU0lECit7CisJVUlOVDgJQ3VycmVudFNTSURbMzRdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0N1cnJlbnRTU0lEX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBDdXJyZW50QlNTSUQgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DdXJyZW50QlNTSUQKK3sKKwlVSU5UOAlDdXJyZW50QlNTSURbNl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ3VycmVudEJTU0lEX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBjb21tc3F1YWxpdHkgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9jb21tc3F1YWxpdHkKK3sKKwlVSU5UMTYJQ1FfY3VyckJTUzsKKwlVSU5UMTYJQVNMX2N1cnJCU1M7CisJVUlOVDE2CUFOTF9jdXJyRkM7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfY29tbXNxdWFsaXR5X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBkbWJjb21tc3F1YWxpdHkgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9kYm1jb21tc3F1YWxpdHkKK3sKKwlVSU5UMTYJQ1FkYm1fY3VyckJTUzsKKwlVSU5UMTYJQVNMZGJtX2N1cnJCU1M7CisJVUlOVDE2CUFOTGRibV9jdXJyRkM7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfZGJtY29tbXNxdWFsaXR5X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBDdXJyZW50VHhSYXRlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQ3VycmVudFR4UmF0ZQoreworCVVJTlQxNglDdXJyZW50VHhSYXRlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0N1cnJlbnRUeFJhdGVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IEN1cnJlbnRCZWFjb25JbnRlcnZhbCAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0N1cnJlbnRCZWFjb25JbnRlcnZhbAoreworCVVJTlQxNglDdXJyZW50QmVhY29uSW50ZXJ2YWw7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ3VycmVudEJlYWNvbkludGVydmFsX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBDdXJyZW50U2NhbGVUaHJlc2hvbGRzIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQ3VycmVudFNjYWxlVGhyZXNob2xkcworeworCVVJTlQxNglFbmVyZ3lEZXRlY3RUaHJlc2hvbGQ7CisJVUlOVDE2CUNhcnJpZXJEZXRlY3RUaHJlc2hvbGQ7CisJVUlOVDE2CURlZmVyRGV0ZWN0VGhyZXNob2xkOworCVVJTlQxNglDZWxsU2VhcmNoVGhyZXNob2xkOyAvKiBTdGF0aW9ucyBvbmx5ICovCisJVUlOVDE2CURlYWRTcG90VGhyZXNob2xkOyAvKiBTdGF0aW9ucyBvbmx5ICovCit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfQ3VycmVudFNjYWxlVGhyZXNob2xkc190OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogUHJvdG9jb2xSc3BUaW1lIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUHJvdG9jb2xSc3BUaW1lCit7CisJVUlOVDE2CVByb3RvY29sUnNwVGltZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Qcm90b2NvbFJzcFRpbWVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IFNob3J0UmV0cnlMaW1pdCAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X1Nob3J0UmV0cnlMaW1pdAoreworCVVJTlQxNglTaG9ydFJldHJ5TGltaXQ7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfU2hvcnRSZXRyeUxpbWl0X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBMb25nUmV0cnlMaW1pdCAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0xvbmdSZXRyeUxpbWl0Cit7CisJVUlOVDE2CUxvbmdSZXRyeUxpbWl0OworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0xvbmdSZXRyeUxpbWl0X3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBNYXhUcmFuc21pdExpZmV0aW1lIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfTWF4VHJhbnNtaXRMaWZldGltZQoreworCVVJTlQxNglNYXhUcmFuc21pdExpZmV0aW1lOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X01heFRyYW5zbWl0TGlmZXRpbWVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IE1heFJlY2VpdmVMaWZldGltZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X01heFJlY2VpdmVMaWZldGltZQoreworCVVJTlQxNglNYXhSZWNlaXZlTGlmZXRpbWU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfTWF4UmVjZWl2ZUxpZmV0aW1lX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBDRlBvbGxhYmxlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQ0ZQb2xsYWJsZQoreworCVVJTlQxNglDRlBvbGxhYmxlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0NGUG9sbGFibGVfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IEF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0F1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcworeworCVVJTlQxNglBdXRoZW50aWNhdGlvblR5cGU7CisJVUlOVDE2CVR5cGVFbmFibGVkOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0F1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc190OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogQXV0aGVudGljYXRpb25BbGdvcml0aG1zCisoZGF0YSBvbmx5IC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQXV0aGVudGljYXRpb25BbGdvcml0aG1zX2RhdGEKK3sKKwlVSU5UMTYJQXV0aGVudGljYXRpb25UeXBlOworCVVJTlQxNglUeXBlRW5hYmxlZDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9BdXRoZW50aWNhdGlvbkFsZ29yaXRobXNfZGF0YV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogUHJpdmFjeU9wdGlvbkltcGxlbWVudGVkIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUHJpdmFjeU9wdGlvbkltcGxlbWVudGVkCit7CisJVUlOVDE2CVByaXZhY3lPcHRpb25JbXBsZW1lbnRlZDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Qcml2YWN5T3B0aW9uSW1wbGVtZW50ZWRfdDsKKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IE93bk1BQ0FkZHJlc3MgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Pd25NQUNBZGRyZXNzCit7CisJVUlOVDgJT3duTUFDQWRkcmVzc1s2XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Pd25NQUNBZGRyZXNzX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBQQ0ZJbmZvIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUENGSW5mbworeworCVVJTlQxNglNZWRpdW1PY2N1cGFuY3lMaW1pdDsKKwlVSU5UMTYJQ0ZQUGVyaW9kOworCVVJTlQxNglDRlBNYXhEdXJhdGlvbjsKKwlVSU5UMTYJQ0ZQRmxhZ3M7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfUENGSW5mb190OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogUENGSW5mbyAoZGF0YSBwb3J0aW9uIG9ubHkpIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfUENGSW5mb19kYXRhCit7CisJVUlOVDE2CU1lZGl1bU9jY3VwYW5jeUxpbWl0OworCVVJTlQxNglDRlBQZXJpb2Q7CisJVUlOVDE2CUNGUE1heER1cmF0aW9uOworCVVJTlQxNglDRlBGbGFnczsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9QQ0ZJbmZvX2RhdGFfdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gUmVjb3JkIFN0cnVjdHVyZXM6IE1vZGVtIEluZm9ybWF0aW9uIFJlY29yZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLSBJbmZvcm1hdGlvbiBSZWNvcmQ6IFBIWVR5cGUgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9QSFlUeXBlCit7CisJVUlOVDE2CVBIWVR5cGU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfUEhZVHlwZV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogQ3VycmVudENoYW5uZWwgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DdXJyZW50Q2hhbm5lbAoreworCVVJTlQxNglDdXJyZW50Q2hhbm5lbDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9DdXJyZW50Q2hhbm5lbF90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogQ3VycmVudFBvd2VyU3RhdGUgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DdXJyZW50UG93ZXJTdGF0ZQoreworCVVJTlQxNglDdXJyZW50UG93ZXJTdGF0ZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9DdXJyZW50UG93ZXJTdGF0ZV90OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogQ0NBTW9kZSAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0NDQU1vZGUKK3sKKwlVSU5UMTYJQ0NBTW9kZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9DQ0FNb2RlX3Q7CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBTdXBwb3J0ZWREYXRhUmF0ZXMgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9TdXBwb3J0ZWREYXRhUmF0ZXMKK3sKKwlVSU5UOAlTdXBwb3J0ZWREYXRhUmF0ZXNbMTBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1N1cHBvcnRlZERhdGFSYXRlc190OworCisvKi0tIEluZm9ybWF0aW9uIFJlY29yZDogTEZPU3RhdHVzIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfTEZPU3RhdHVzCit7CisJVUlOVDE2ICBUZXN0UmVzdWx0czsKKwlVSU5UMTYgIExGT1Jlc3VsdDsKKwlVSU5UMTYgIFZSSEZPUmVzdWx0OworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0xGT1N0YXR1c190OworCisjZGVmaW5lIEhGQTM4NHhfVEVTVFJFU1VMVF9BTExQQVNTRUQgICAgQklUMAorI2RlZmluZSBIRkEzODR4X1RFU1RSRVNVTFRfTEZPX0ZBSUwgICAgIEJJVDEKKyNkZWZpbmUgSEZBMzg0eF9URVNUUkVTVUxUX1ZSX0hGMF9GQUlMICBCSVQyCisjZGVmaW5lIEhGQTM4NHhfSE9TVF9GSVJNX0NPT1JESU5BVEUgICAgQklUNworI2RlZmluZSBIRkEzODR4X1RFU1RSRVNVTFRfQ09PUkRJTkFURSAgIEJJVDE1CisKKy8qLS0gSW5mb3JtYXRpb24gUmVjb3JkOiBMRURDb250cm9sIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfTEVEQ29udHJvbAoreworCVVJTlQxNiAgc2VhcmNoaW5nX29uOworCVVJTlQxNiAgc2VhcmNoaW5nX29mZjsKKwlVSU5UMTYgIGFzc29jX29uOworCVVJTlQxNiAgYXNzb2Nfb2ZmOworCVVJTlQxNiAgYWN0aXZpdHk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfTEVEQ29udHJvbF90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIEZSQU1FIERFU0NSSVBUT1JTIEFORCBGUkFNRSBTVFJVQ1RVUkVTCisKK0ZSQU1FIERFU0NSSVBUT1JTOiBPZmZzZXRzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbnRyb2wgSW5mbyAob2Zmc2V0IDQ0LTUxKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9GRF9TVEFUVVNfT0ZGCQkJKChVSU5UMTYpMHg0NCkKKyNkZWZpbmUJCUhGQTM4NHhfRkRfVElNRV9PRkYJCQkoKFVJTlQxNikweDQ2KQorI2RlZmluZQkJSEZBMzg0eF9GRF9TV1NVUFBPUlRfT0ZGCQkoKFVJTlQxNikweDRBKQorI2RlZmluZQkJSEZBMzg0eF9GRF9TSUxFTkNFX09GRgkJCSgoVUlOVDE2KTB4NEEpCisjZGVmaW5lCQlIRkEzODR4X0ZEX1NJR05BTF9PRkYJCQkoKFVJTlQxNikweDRCKQorI2RlZmluZQkJSEZBMzg0eF9GRF9SQVRFX09GRgkJCSgoVUlOVDE2KTB4NEMpCisjZGVmaW5lCQlIRkEzODR4X0ZEX1JYRkxPV19PRkYJCQkoKFVJTlQxNikweDREKQorI2RlZmluZQkJSEZBMzg0eF9GRF9SRVNFUlZFRF9PRkYJCQkoKFVJTlQxNikweDRFKQorI2RlZmluZQkJSEZBMzg0eF9GRF9UWENPTlRST0xfT0ZGCQkoKFVJTlQxNikweDUwKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorODAyLjExIEhlYWRlciAob2Zmc2V0IDUyLTZCKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9GRF9GUkFNRUNPTlRST0xfT0ZGCQkoKFVJTlQxNikweDUyKQorI2RlZmluZQkJSEZBMzg0eF9GRF9EVVJBVElPTklEX09GRgkJKChVSU5UMTYpMHg1NCkKKyNkZWZpbmUJCUhGQTM4NHhfRkRfQUREUkVTUzFfT0ZGCQkJKChVSU5UMTYpMHg1NikKKyNkZWZpbmUJCUhGQTM4NHhfRkRfQUREUkVTUzJfT0ZGCQkJKChVSU5UMTYpMHg1QykKKyNkZWZpbmUJCUhGQTM4NHhfRkRfQUREUkVTUzNfT0ZGCQkJKChVSU5UMTYpMHg2MikKKyNkZWZpbmUJCUhGQTM4NHhfRkRfU0VRQ09OVFJPTF9PRkYJCSgoVUlOVDE2KTB4NjgpCisjZGVmaW5lCQlIRkEzODR4X0ZEX0FERFJFU1M0X09GRgkJCSgoVUlOVDE2KTB4NkEpCisjZGVmaW5lCQlIRkEzODR4X0ZEX0RBVEFMRU5fT0ZGCQkJKChVSU5UMTYpMHg3MCkKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzgwMi4zIEhlYWRlciAob2Zmc2V0IDcyLTdGKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9GRF9ERVNUQUREUkVTU19PRkYJCSgoVUlOVDE2KTB4NzIpCisjZGVmaW5lCQlIRkEzODR4X0ZEX1NSQ0FERFJFU1NfT0ZGCQkoKFVJTlQxNikweDc4KQorI2RlZmluZQkJSEZBMzg0eF9GRF9EQVRBTEVOR1RIX09GRgkJKChVSU5UMTYpMHg3RSkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRlJBTUUgU1RSVUNUVVJFUzogQ29tbXVuaWNhdGlvbiBGcmFtZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbW11bmljYXRpb24gRnJhbWVzOiBUcmFuc21pdCBGcmFtZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0gQ29tbXVuaWNhdGlvbiBGcmFtZTogVHJhbnNtaXQgRnJhbWUgU3RydWN0dXJlIC0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdHhfZnJhbWUKK3sKKwlVSU5UMTYJc3RhdHVzOworCVVJTlQxNglyZXNlcnZlZDE7CisJVUlOVDE2CXJlc2VydmVkMjsKKwlVSU5UMzIJc3dfc3VwcG9ydDsKKwlVSU5UOAl0eF9yZXRyeWNvdW50OworCVVJTlQ4ICAgdHhfcmF0ZTsKKwlVSU5UMTYJdHhfY29udHJvbDsKKworCS8qLS0gODAyLjExIEhlYWRlciBJbmZvcm1hdGlvbiAtLSovCisKKwlVSU5UMTYJZnJhbWVfY29udHJvbDsKKwlVSU5UMTYJZHVyYXRpb25faWQ7CisJVUlOVDgJYWRkcmVzczFbNl07CisJVUlOVDgJYWRkcmVzczJbNl07CisJVUlOVDgJYWRkcmVzczNbNl07CisJVUlOVDE2CXNlcXVlbmNlX2NvbnRyb2w7CisJVUlOVDgJYWRkcmVzczRbNl07CisJVUlOVDE2CWRhdGFfbGVuOyAvKiBsaXR0bGUgZW5kaWFuIGZvcm1hdCAqLworCisJLyotLSA4MDIuMyBIZWFkZXIgSW5mb3JtYXRpb24gLS0qLworCisJVUlOVDgJZGVzdF9hZGRyWzZdOworCVVJTlQ4CXNyY19hZGRyWzZdOworCVVJTlQxNglkYXRhX2xlbmd0aDsgLyogYmlnIGVuZGlhbiBmb3JtYXQgKi8KK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF90eF9mcmFtZV90OworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29tbXVuaWNhdGlvbiBGcmFtZXM6IEZpZWxkIE1hc2tzIGZvciBUcmFuc21pdCBGcmFtZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0gU3RhdHVzIEZpZWxkIC0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfVFhTVEFUVVNfQUNLRVJSCQkJKChVSU5UMTYpQklUNSkKKyNkZWZpbmUJCUhGQTM4NHhfVFhTVEFUVVNfRk9STUVSUgkJKChVSU5UMTYpQklUMykKKyNkZWZpbmUJCUhGQTM4NHhfVFhTVEFUVVNfRElTQ09OCQkJKChVSU5UMTYpQklUMikKKyNkZWZpbmUJCUhGQTM4NHhfVFhTVEFUVVNfQUdFREVSUgkJKChVSU5UMTYpQklUMSkKKyNkZWZpbmUJCUhGQTM4NHhfVFhTVEFUVVNfUkVUUllFUlIJCSgoVUlOVDE2KUJJVDApCisvKi0tIFRyYW5zbWl0IENvbnRyb2wgRmllbGQgLS0qLworI2RlZmluZQkJSEZBMzg0eF9UWF9DRlBPTEwJCQkoKFVJTlQxNilCSVQxMikKKyNkZWZpbmUJCUhGQTM4NHhfVFhfUFJTVAkJCQkoKFVJTlQxNilCSVQxMSkKKyNkZWZpbmUJCUhGQTM4NHhfVFhfTUFDUE9SVAkJCSgoVUlOVDE2KShCSVQxMCB8IEJJVDkgfCBCSVQ4KSkKKyNkZWZpbmUJCUhGQTM4NHhfVFhfTk9FTkNSWVBUCQkJKChVSU5UMTYpQklUNykKKyNkZWZpbmUJCUhGQTM4NHhfVFhfUkVUUllTVFJBVAkJCSgoVUlOVDE2KShCSVQ2IHwgQklUNSkpCisjZGVmaW5lCQlIRkEzODR4X1RYX1NUUlVDVFlQRQkJCSgoVUlOVDE2KShCSVQ0IHwgQklUMykpCisjZGVmaW5lCQlIRkEzODR4X1RYX1RYRVgJCQkJKChVSU5UMTYpQklUMikKKyNkZWZpbmUJCUhGQTM4NHhfVFhfVFhPSwkJCQkoKFVJTlQxNilCSVQxKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29tbXVuaWNhdGlvbiBGcmFtZXM6IFRlc3QvR2V0L1NldCBGaWVsZCBWYWx1ZXMgZm9yIFRyYW5zbWl0IEZyYW1lcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyotLSBTdGF0dXMgRmllbGQgLS0qLworI2RlZmluZSBIRkEzODR4X1RYU1RBVFVTX0lTRVJST1IodikJXAorCSgoKFVJTlQxNikodikpJlwKKwkoSEZBMzg0eF9UWFNUQVRVU19BQ0tFUlJ8SEZBMzg0eF9UWFNUQVRVU19GT1JNRVJSfFwKKwlIRkEzODR4X1RYU1RBVFVTX0RJU0NPTnxIRkEzODR4X1RYU1RBVFVTX0FHRURFUlJ8XAorCUhGQTM4NHhfVFhTVEFUVVNfUkVUUllFUlIpKQorCisjZGVmaW5lCUhGQTM4NHhfVFhTVEFUVVNfSVNBQ0tFUlIodikJKChVSU5UMTYpKCgoVUlOVDE2KSh2KSkgJiBIRkEzODR4X1RYU1RBVFVTX0FDS0VSUikpCisjZGVmaW5lCUhGQTM4NHhfVFhTVEFUVVNfSVNGT1JNRVJSKHYpCSgoVUlOVDE2KSgoKFVJTlQxNikodikpICYgSEZBMzg0eF9UWFNUQVRVU19GT1JNRVJSKSkKKyNkZWZpbmUJSEZBMzg0eF9UWFNUQVRVU19JU0RJU0NPTih2KQkoKFVJTlQxNikoKChVSU5UMTYpKHYpKSAmIEhGQTM4NHhfVFhTVEFUVVNfRElTQ09OKSkKKyNkZWZpbmUJSEZBMzg0eF9UWFNUQVRVU19JU0FHRURFUlIodikJKChVSU5UMTYpKCgoVUlOVDE2KSh2KSkgJiBIRkEzODR4X1RYU1RBVFVTX0FHRURFUlIpKQorI2RlZmluZQlIRkEzODR4X1RYU1RBVFVTX0lTUkVUUllFUlIodikJKChVSU5UMTYpKCgoVUlOVDE2KSh2KSkgJiBIRkEzODR4X1RYU1RBVFVTX1JFVFJZRVJSKSkKKworI2RlZmluZQlIRkEzODR4X1RYX0dFVCh2LG0scykJCSgoKChVSU5UMTYpKHYpKSYoKFVJTlQxNikobSkpKT4+KChVSU5UMTYpKHMpKSkKKyNkZWZpbmUJSEZBMzg0eF9UWF9TRVQodixtLHMpCQkoKCgoVUlOVDE2KSh2KSk8PCgoVUlOVDE2KShzKSkpJigoVUlOVDE2KShtKSkpCisKKyNkZWZpbmUJSEZBMzg0eF9UWF9DRlBPTExfR0VUKHYpCUhGQTM4NHhfVFhfR0VUKHYsIEhGQTM4NHhfVFhfQ0ZQT0xMLDEyKQorI2RlZmluZQlIRkEzODR4X1RYX0NGUE9MTF9TRVQodikJSEZBMzg0eF9UWF9TRVQodiwgSEZBMzg0eF9UWF9DRlBPTEwsMTIpCisjZGVmaW5lCUhGQTM4NHhfVFhfUFJTVF9HRVQodikJCUhGQTM4NHhfVFhfR0VUKHYsIEhGQTM4NHhfVFhfUFJTVCwxMSkKKyNkZWZpbmUJSEZBMzg0eF9UWF9QUlNUX1NFVCh2KQkJSEZBMzg0eF9UWF9TRVQodiwgSEZBMzg0eF9UWF9QUlNULDExKQorI2RlZmluZQlIRkEzODR4X1RYX01BQ1BPUlRfR0VUKHYpCUhGQTM4NHhfVFhfR0VUKHYsIEhGQTM4NHhfVFhfTUFDUE9SVCwgOCkKKyNkZWZpbmUJSEZBMzg0eF9UWF9NQUNQT1JUX1NFVCh2KQlIRkEzODR4X1RYX1NFVCh2LCBIRkEzODR4X1RYX01BQ1BPUlQsIDgpCisjZGVmaW5lCUhGQTM4NHhfVFhfTk9FTkNSWVBUX0dFVCh2KQlIRkEzODR4X1RYX0dFVCh2LCBIRkEzODR4X1RYX05PRU5DUllQVCwgNykKKyNkZWZpbmUJSEZBMzg0eF9UWF9OT0VOQ1JZUFRfU0VUKHYpCUhGQTM4NHhfVFhfU0VUKHYsIEhGQTM4NHhfVFhfTk9FTkNSWVBULCA3KQorI2RlZmluZQlIRkEzODR4X1RYX1JFVFJZU1RSQVRfR0VUKHYpCUhGQTM4NHhfVFhfR0VUKHYsIEhGQTM4NHhfVFhfUkVUUllTVFJBVCwgNSkKKyNkZWZpbmUJSEZBMzg0eF9UWF9SRVRSWVNUUkFUX1NFVCh2KQlIRkEzODR4X1RYX1NFVCh2LCBIRkEzODR4X1RYX1JFVFJZU1RSQVQsIDUpCisjZGVmaW5lCUhGQTM4NHhfVFhfU1RSVUNUWVBFX0dFVCh2KQlIRkEzODR4X1RYX0dFVCh2LCBIRkEzODR4X1RYX1NUUlVDVFlQRSwgMykKKyNkZWZpbmUJSEZBMzg0eF9UWF9TVFJVQ1RZUEVfU0VUKHYpCUhGQTM4NHhfVFhfU0VUKHYsIEhGQTM4NHhfVFhfU1RSVUNUWVBFLCAzKQorI2RlZmluZQlIRkEzODR4X1RYX1RYRVhfR0VUKHYpCQlIRkEzODR4X1RYX0dFVCh2LCBIRkEzODR4X1RYX1RYRVgsIDIpCisjZGVmaW5lCUhGQTM4NHhfVFhfVFhFWF9TRVQodikJCUhGQTM4NHhfVFhfU0VUKHYsIEhGQTM4NHhfVFhfVFhFWCwgMikKKyNkZWZpbmUJSEZBMzg0eF9UWF9UWE9LX0dFVCh2KQkJSEZBMzg0eF9UWF9HRVQodiwgSEZBMzg0eF9UWF9UWE9LLCAxKQorI2RlZmluZQlIRkEzODR4X1RYX1RYT0tfU0VUKHYpCQlIRkEzODR4X1RYX1NFVCh2LCBIRkEzODR4X1RYX1RYT0ssIDEpCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb21tdW5pY2F0aW9uIEZyYW1lczogUmVjZWl2ZSBGcmFtZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0gQ29tbXVuaWNhdGlvbiBGcmFtZTogUmVjZWl2ZSBGcmFtZSBTdHJ1Y3R1cmUgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9yeF9mcmFtZQoreworCS8qLS0gTUFDIHJ4IGRlc2NyaXB0b3IgKGhmYTM4NHggYnl0ZSBvcmRlcikgLS0qLworCVVJTlQxNglzdGF0dXM7CisJVUlOVDMyCXRpbWU7CisJVUlOVDgJc2lsZW5jZTsKKwlVSU5UOAlzaWduYWw7CisJVUlOVDgJcmF0ZTsKKwlVSU5UOAlyeF9mbG93OworCVVJTlQxNglyZXNlcnZlZDE7CisJVUlOVDE2CXJlc2VydmVkMjsKKworCS8qLS0gODAyLjExIEhlYWRlciBJbmZvcm1hdGlvbiAoODAyLjExIGJ5dGUgb3JkZXIpIC0tKi8KKwlVSU5UMTYJZnJhbWVfY29udHJvbDsKKwlVSU5UMTYJZHVyYXRpb25faWQ7CisJVUlOVDgJYWRkcmVzczFbNl07CisJVUlOVDgJYWRkcmVzczJbNl07CisJVUlOVDgJYWRkcmVzczNbNl07CisJVUlOVDE2CXNlcXVlbmNlX2NvbnRyb2w7CisJVUlOVDgJYWRkcmVzczRbNl07CisJVUlOVDE2CWRhdGFfbGVuOyAvKiBoZmEzODR4IChsaXR0bGUgZW5kaWFuKSBmb3JtYXQgKi8KKworCS8qLS0gODAyLjMgSGVhZGVyIEluZm9ybWF0aW9uIC0tKi8KKwlVSU5UOAlkZXN0X2FkZHJbNl07CisJVUlOVDgJc3JjX2FkZHJbNl07CisJVUlOVDE2CWRhdGFfbGVuZ3RoOyAvKiBJRUVFPyAoYmlnIGVuZGlhbikgZm9ybWF0ICovCit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcnhfZnJhbWVfdDsKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbW11bmljYXRpb24gRnJhbWVzOiBGaWVsZCBNYXNrcyBmb3IgUmVjZWl2ZSBGcmFtZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0gT2Zmc2V0cyAtLS0tLS0tLSovCisjZGVmaW5lCQlIRkEzODR4X1JYX0RBVEFfTEVOX09GRgkJCSgoVUlOVDE2KTQ0KQorI2RlZmluZQkJSEZBMzg0eF9SWF84MDIxMUhEUl9PRkYJCQkoKFVJTlQxNikxNCkKKyNkZWZpbmUJCUhGQTM4NHhfUlhfREFUQV9PRkYJCQkoKFVJTlQxNik2MCkKKworLyotLSBTdGF0dXMgRmllbGRzIC0tKi8KKyNkZWZpbmUJCUhGQTM4NHhfUlhTVEFUVVNfTVNHVFlQRQkJKChVSU5UMTYpKEJJVDE1IHwgQklUMTQgfCBCSVQxMykpCisjZGVmaW5lCQlIRkEzODR4X1JYU1RBVFVTX01BQ1BPUlQJCSgoVUlOVDE2KShCSVQxMCB8IEJJVDkgfCBCSVQ4KSkKKyNkZWZpbmUJCUhGQTM4NHhfUlhTVEFUVVNfVU5ERUNSCQkJKChVSU5UMTYpQklUMSkKKyNkZWZpbmUJCUhGQTM4NHhfUlhTVEFUVVNfRkNTRVJSCQkJKChVSU5UMTYpQklUMCkKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbW11bmljYXRpb24gRnJhbWVzOiBUZXN0L0dldC9TZXQgRmllbGQgVmFsdWVzIGZvciBSZWNlaXZlIEZyYW1lcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9SWFNUQVRVU19NU0dUWVBFX0dFVCh2YWx1ZSkJKChVSU5UMTYpKCgoKFVJTlQxNikodmFsdWUpKSAmIEhGQTM4NHhfUlhTVEFUVVNfTVNHVFlQRSkgPj4gMTMpKQorI2RlZmluZQkJSEZBMzg0eF9SWFNUQVRVU19NU0dUWVBFX1NFVCh2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDEzKSkKKyNkZWZpbmUJCUhGQTM4NHhfUlhTVEFUVVNfTUFDUE9SVF9HRVQodmFsdWUpCSgoVUlOVDE2KSgoKChVSU5UMTYpKHZhbHVlKSkgJiBIRkEzODR4X1JYU1RBVFVTX01BQ1BPUlQpID4+IDgpKQorI2RlZmluZQkJSEZBMzg0eF9SWFNUQVRVU19NQUNQT1JUX1NFVCh2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpIDw8IDgpKQorI2RlZmluZQkJSEZBMzg0eF9SWFNUQVRVU19JU1VOREVDUih2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9SWFNUQVRVU19VTkRFQ1IpKQorI2RlZmluZQkJSEZBMzg0eF9SWFNUQVRVU19JU0ZDU0VSUih2YWx1ZSkJKChVSU5UMTYpKCgoVUlOVDE2KSh2YWx1ZSkpICYgSEZBMzg0eF9SWFNUQVRVU19GQ1NFUlIpKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZSQU1FIFNUUlVDVFVSRVM6IEluZm9ybWF0aW9uIFR5cGVzIGFuZCBJbmZvcm1hdGlvbiBGcmFtZSBTdHJ1Y3R1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmZvcm1hdGlvbiBUeXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZQkJSEZBMzg0eF9JVF9IQU5ET1ZFUkFERFIJCQkoKFVJTlQxNikweEYwMDBVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfSEFORE9WRVJERUFVVEhBRERSRVNTCSgoVUlOVDE2KTB4RjAwMVVMKS8vQVAgMS4zLjcKKyNkZWZpbmUJCUhGQTM4NHhfSVRfQ09NTVRBTExJRVMJCQkoKFVJTlQxNikweEYxMDBVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfU0NBTlJFU1VMVFMJCQkoKFVJTlQxNikweEYxMDFVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfQ0hJTkZPUkVTVUxUUwkJKChVSU5UMTYpMHhGMTAyVUwpCisjZGVmaW5lCQlIRkEzODR4X0lUX0hPU1RTQ0FOUkVTVUxUUwkJKChVSU5UMTYpMHhGMTAzVUwpCisjZGVmaW5lCQlIRkEzODR4X0lUX0xJTktTVEFUVVMJCQkoKFVJTlQxNikweEYyMDBVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfQVNTT0NTVEFUVVMJCQkoKFVJTlQxNikweEYyMDFVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfQVVUSFJFUQkJCSgoVUlOVDE2KTB4RjIwMlVMKQorI2RlZmluZQkJSEZBMzg0eF9JVF9QU1VTRVJDTlQJCQkoKFVJTlQxNikweEYyMDNVTCkKKyNkZWZpbmUJCUhGQTM4NHhfSVRfS0VZSURDSEFOR0VECQkJKChVSU5UMTYpMHhGMjA0VUwpCisjZGVmaW5lCQlIRkEzODR4X0lUX0FTU09DUkVRICAgIAkJCSgoVUlOVDE2KTB4RjIwNVVMKQorI2RlZmluZQkJSEZBMzg0eF9JVF9NSUNGQUlMVVJFICAJCQkoKFVJTlQxNikweEYyMDZVTCkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5mb3JtYXRpb24gRnJhbWVzIFN0cnVjdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZm9ybWF0aW9uIEZyYW1lczogTm90aWZpY2F0aW9uIEZyYW1lIFN0cnVjdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0gIE5vdGlmaWNhdGlvbiBGcmFtZSxNQUMgTWdtdDogSGFuZG92ZXIgQWRkcmVzcyAtLSovCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0hhbmRvdmVyQWRkcgoreworCVVJTlQxNglmcmFtZWxlbjsKKwlVSU5UMTYJaW5mb3R5cGU7CisJVUlOVDgJaGFuZG92ZXJfYWRkcltXTEFOX0JTU0lEX0xFTl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfSGFuZG92ZXJBZGRyX3Q7CisKKy8qLS0gIElucXVpcnkgRnJhbWUsIERpYWdub3NlOiBDb21tdW5pY2F0aW9uIFRhbGxpZXMgLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Db21tVGFsbGllczE2Cit7CisJVUlOVDE2CXR4dW5pY2FzdGZyYW1lczsKKwlVSU5UMTYJdHhtdWx0aWNhc3RmcmFtZXM7CisJVUlOVDE2CXR4ZnJhZ21lbnRzOworCVVJTlQxNgl0eHVuaWNhc3RvY3RldHM7CisJVUlOVDE2CXR4bXVsdGljYXN0b2N0ZXRzOworCVVJTlQxNgl0eGRlZmVycmVkdHJhbnM7CisJVUlOVDE2CXR4c2luZ2xlcmV0cnlmcmFtZXM7CisJVUlOVDE2CXR4bXVsdGlwbGVyZXRyeWZyYW1lczsKKwlVSU5UMTYJdHhyZXRyeWxpbWl0ZXhjZWVkZWQ7CisJVUlOVDE2CXR4ZGlzY2FyZHM7CisJVUlOVDE2CXJ4dW5pY2FzdGZyYW1lczsKKwlVSU5UMTYJcnhtdWx0aWNhc3RmcmFtZXM7CisJVUlOVDE2CXJ4ZnJhZ21lbnRzOworCVVJTlQxNglyeHVuaWNhc3RvY3RldHM7CisJVUlOVDE2CXJ4bXVsdGljYXN0b2N0ZXRzOworCVVJTlQxNglyeGZjc2Vycm9yczsKKwlVSU5UMTYJcnhkaXNjYXJkc25vYnVmZmVyOworCVVJTlQxNgl0eGRpc2NhcmRzd3JvbmdzYTsKKwlVSU5UMTYJcnhkaXNjYXJkc3dlcHVuZGVjcjsKKwlVSU5UMTYJcnhtc2dpbm1zZ2ZyYWc7CisJVUlOVDE2CXJ4bXNnaW5iYWRtc2dmcmFnOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0NvbW1UYWxsaWVzMTZfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Db21tVGFsbGllczMyCit7CisJVUlOVDMyCXR4dW5pY2FzdGZyYW1lczsKKwlVSU5UMzIJdHhtdWx0aWNhc3RmcmFtZXM7CisJVUlOVDMyCXR4ZnJhZ21lbnRzOworCVVJTlQzMgl0eHVuaWNhc3RvY3RldHM7CisJVUlOVDMyCXR4bXVsdGljYXN0b2N0ZXRzOworCVVJTlQzMgl0eGRlZmVycmVkdHJhbnM7CisJVUlOVDMyCXR4c2luZ2xlcmV0cnlmcmFtZXM7CisJVUlOVDMyCXR4bXVsdGlwbGVyZXRyeWZyYW1lczsKKwlVSU5UMzIJdHhyZXRyeWxpbWl0ZXhjZWVkZWQ7CisJVUlOVDMyCXR4ZGlzY2FyZHM7CisJVUlOVDMyCXJ4dW5pY2FzdGZyYW1lczsKKwlVSU5UMzIJcnhtdWx0aWNhc3RmcmFtZXM7CisJVUlOVDMyCXJ4ZnJhZ21lbnRzOworCVVJTlQzMglyeHVuaWNhc3RvY3RldHM7CisJVUlOVDMyCXJ4bXVsdGljYXN0b2N0ZXRzOworCVVJTlQzMglyeGZjc2Vycm9yczsKKwlVSU5UMzIJcnhkaXNjYXJkc25vYnVmZmVyOworCVVJTlQzMgl0eGRpc2NhcmRzd3JvbmdzYTsKKwlVSU5UMzIJcnhkaXNjYXJkc3dlcHVuZGVjcjsKKwlVSU5UMzIJcnhtc2dpbm1zZ2ZyYWc7CisJVUlOVDMyCXJ4bXNnaW5iYWRtc2dmcmFnOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0NvbW1UYWxsaWVzMzJfdDsKKworLyotLSAgSW5xdWlyeSBGcmFtZSwgRGlhZ25vc2U6IFNjYW4gUmVzdWx0cyAmIFN1YmZpZWxkcy0tKi8KK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfU2NhblJlc3VsdFN1YgoreworCVVJTlQxNgljaGlkOworCVVJTlQxNglhbmw7CisJVUlOVDE2CXNsOworCVVJTlQ4CWJzc2lkW1dMQU5fQlNTSURfTEVOXTsKKwlVSU5UMTYJYmNuaW50OworCVVJTlQxNgljYXBpbmZvOworCWhmYTM4NHhfYnl0ZXN0cjMyX3QJc3NpZDsKKwlVSU5UOAlzdXBwcmF0ZXNbMTBdOyAvKiA4MDIuMTEgaW5mbyBlbGVtZW50ICovCisJVUlOVDE2CXByb2JlcmVzcF9yYXRlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1NjYW5SZXN1bHRTdWJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9TY2FuUmVzdWx0Cit7CisJVUlOVDE2CXJzdmQ7CisJVUlOVDE2CXNjYW5yZWFzb247CisJaGZhMzg0eF9TY2FuUmVzdWx0U3ViX3QKKwkJcmVzdWx0W0hGQTM4NHhfU0NBTlJFU1VMVF9NQVhdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1NjYW5SZXN1bHRfdDsKKworLyotLSAgSW5xdWlyeSBGcmFtZSwgRGlhZ25vc2U6IENoSW5mbyBSZXN1bHRzICYgU3ViZmllbGRzLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9DaEluZm9SZXN1bHRTdWIKK3sKKwlVSU5UMTYJY2hpZDsKKwlVSU5UMTYJYW5sOworCVVJTlQxNglwbmw7CisJVUlOVDE2CWFjdGl2ZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9DaEluZm9SZXN1bHRTdWJfdDsKKworI2RlZmluZSBIRkEzODR4X0NISU5GT1JFU1VMVF9CU1NBQ1RJVkUJQklUMAorI2RlZmluZSBIRkEzODR4X0NISU5GT1JFU1VMVF9QQ0ZBQ1RJVkUJQklUMQorCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X0NoSW5mb1Jlc3VsdAoreworCVVJTlQxNglzY2FuY2hhbm5lbHM7CisJaGZhMzg0eF9DaEluZm9SZXN1bHRTdWJfdAorCQlyZXN1bHRbSEZBMzg0eF9DSElORk9SRVNVTFRfTUFYXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9DaEluZm9SZXN1bHRfdDsKKworLyotLSAgSW5xdWlyeSBGcmFtZSwgRGlhZ25vc2U6IEhvc3QgU2NhbiBSZXN1bHRzICYgU3ViZmllbGRzLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9IU2NhblJlc3VsdFN1YgoreworCVVJTlQxNgljaGlkOworCVVJTlQxNglhbmw7CisJVUlOVDE2CXNsOworCVVJTlQ4CWJzc2lkW1dMQU5fQlNTSURfTEVOXTsKKwlVSU5UMTYJYmNuaW50OworCVVJTlQxNgljYXBpbmZvOworCWhmYTM4NHhfYnl0ZXN0cjMyX3QJc3NpZDsKKwlVSU5UOAlzdXBwcmF0ZXNbMTBdOyAvKiA4MDIuMTEgaW5mbyBlbGVtZW50ICovCisJVUlOVDE2CXByb2JlcmVzcF9yYXRlOworCVVJTlQxNglhdGltOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0hTY2FuUmVzdWx0U3ViX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfSFNjYW5SZXN1bHQKK3sKKwlVSU5UMTYJbnJlc3VsdDsKKwlVSU5UMTYJcnN2ZDsKKwloZmEzODR4X0hTY2FuUmVzdWx0U3ViX3QKKwkJcmVzdWx0W0hGQTM4NHhfSFNDQU5SRVNVTFRfTUFYXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9IU2NhblJlc3VsdF90OworCisvKi0tICBVbnNvbGljaXRlZCBGcmFtZSwgTUFDIE1nbXQ6IExpbmtTdGF0dXMgLS0qLworCisjZGVmaW5lIEhGQTM4NHhfTElOS19OT1RDT05ORUNURUQJKChVSU5UMTYpMCkKKyNkZWZpbmUgSEZBMzg0eF9MSU5LX0NPTk5FQ1RFRAkJKChVSU5UMTYpMSkKKyNkZWZpbmUgSEZBMzg0eF9MSU5LX0RJU0NPTk5FQ1RFRAkoKFVJTlQxNikyKQorI2RlZmluZSBIRkEzODR4X0xJTktfQVBfQ0hBTkdFCQkoKFVJTlQxNikzKQorI2RlZmluZSBIRkEzODR4X0xJTktfQVBfT1VUT0ZSQU5HRQkoKFVJTlQxNik0KQorI2RlZmluZSBIRkEzODR4X0xJTktfQVBfSU5SQU5HRQkJKChVSU5UMTYpNSkKKyNkZWZpbmUgSEZBMzg0eF9MSU5LX0FTU09DRkFJTAkJKChVSU5UMTYpNikKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9MaW5rU3RhdHVzCit7CisJVUlOVDE2CWxpbmtzdGF0dXM7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfTGlua1N0YXR1c190OworCisKKy8qLS0gIFVuc29saWNpdGVkIEZyYW1lLCBNQUMgTWdtdDogQXNzb2NpYXRpb25TdGF0dXMgKC0tKi8KKworI2RlZmluZSBIRkEzODR4X0FTU09DU1RBVFVTX1NUQUFTU09DCSgoVUlOVDE2KTEpCisjZGVmaW5lIEhGQTM4NHhfQVNTT0NTVEFUVVNfUkVBU1NPQwkoKFVJTlQxNikyKQorI2RlZmluZSBIRkEzODR4X0FTU09DU1RBVFVTX0RJU0FTU09DCSgoVUlOVDE2KTMpCisjZGVmaW5lIEhGQTM4NHhfQVNTT0NTVEFUVVNfQVNTT0NGQUlMCSgoVUlOVDE2KTQpCisjZGVmaW5lIEhGQTM4NHhfQVNTT0NTVEFUVVNfQVVUSEZBSUwJKChVSU5UMTYpNSkKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Bc3NvY1N0YXR1cworeworCVVJTlQxNglhc3NvY3N0YXR1czsKKwlVSU5UOAlzdGFfYWRkcltXTEFOX0FERFJfTEVOXTsKKwkvKiBvbGRfYXBfYWRkciBpcyBvbmx5IHZhbGlkIGlmIGFzc29jc3RhdHVzID09IDIgKi8KKwlVSU5UOAlvbGRfYXBfYWRkcltXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJcmVhc29uOworCVVJTlQxNglyZXNlcnZlZDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Bc3NvY1N0YXR1c190OworCisvKi0tICBVbnNvbGljaXRlZCBGcmFtZSwgTUFDIE1nbXQ6IEF1dGhSZXF1ZXN0IChBUCBPbmx5KSAtLSovCisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfQXV0aFJlcXVlc3QKK3sKKwlVSU5UOAlzdGFfYWRkcltXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJYWxnb3JpdGhtOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0F1dGhSZXFfdDsKKworLyotLSAgVW5zb2xpY2l0ZWQgRnJhbWUsIE1BQyBNZ210OiBBc3NvY1JlcXVlc3QgKEFQIE9ubHkpIC0tKi8KKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9Bc3NvY1JlcXVlc3QKK3sKKwlVSU5UOAlzdGFfYWRkcltXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJdHlwZTsKKwlVSU5UOCAgIHdwYV9kYXRhWzgwXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9Bc3NvY1JlcV90OworCisKKyNkZWZpbmUgSEZBMzg0eF9BU1NPQ1JFUV9UWVBFX0FTU09DICAgICAwCisjZGVmaW5lIEhGQTM4NHhfQVNTT0NSRVFfVFlQRV9SRUFTU09DICAgMQorCisvKi0tICBVbnNvbGljaXRlZCBGcmFtZSwgTUFDIE1nbXQ6IE1JQyBGYWlsdXJlICAoQVAgT25seSkgLS0qLworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X01pY0ZhaWx1cmUKK3sKKwlVSU5UOAlzZW5kZXJbV0xBTl9BRERSX0xFTl07CisJVUlOVDgJZGVzdFtXTEFOX0FERFJfTEVOXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9NaWNGYWlsdXJlX3Q7CisKKy8qLS0gIFVuc29saWNpdGVkIEZyYW1lLCBNQUMgTWdtdDogUFNVc2VyQ291bnQgKEFQIE9ubHkpIC0tKi8KKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9QU1VzZXJDb3VudAoreworCVVJTlQxNgl1c2VyY250OworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X1BTVXNlckNvdW50X3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfS2V5SURDaGFuZ2VkCit7CisJVUlOVDgJc3RhX2FkZHJbV0xBTl9BRERSX0xFTl07CisJVUlOVDE2CWtleWlkOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X0tleUlEQ2hhbmdlZF90OworCisvKi0tICBDb2xsZWN0aW9uIG9mIGFsbCBJbmYgZnJhbWVzIC0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHVuaW9uIGhmYTM4NHhfaW5mb2RhdGEgeworCWhmYTM4NHhfQ29tbVRhbGxpZXMxNl90CWNvbW10YWxsaWVzMTY7CisJaGZhMzg0eF9Db21tVGFsbGllczMyX3QJY29tbXRhbGxpZXMzMjsKKwloZmEzODR4X1NjYW5SZXN1bHRfdAlzY2FucmVzdWx0OworCWhmYTM4NHhfQ2hJbmZvUmVzdWx0X3QJY2hpbmZvcmVzdWx0OworCWhmYTM4NHhfSFNjYW5SZXN1bHRfdAloc2NhbnJlc3VsdDsKKwloZmEzODR4X0xpbmtTdGF0dXNfdAlsaW5rc3RhdHVzOworCWhmYTM4NHhfQXNzb2NTdGF0dXNfdAlhc3NvY3N0YXR1czsKKwloZmEzODR4X0F1dGhSZXFfdAlhdXRocmVxOworCWhmYTM4NHhfUFNVc2VyQ291bnRfdAlwc3VzZXJjbnQ7CisJaGZhMzg0eF9LZXlJRENoYW5nZWRfdCAga2V5aWRjaGFuZ2VkOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X2luZm9kYXRhX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfSW5mRnJhbWUKK3sKKwlVSU5UMTYJCQlmcmFtZWxlbjsKKwlVSU5UMTYJCQlpbmZvdHlwZTsKKwloZmEzODR4X2luZm9kYXRhX3QJaW5mbzsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9JbmZGcmFtZV90OworCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVVNCIFBhY2tldCBzdHJ1Y3R1cmVzIGFuZCBjb25zdGFudHMuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIFNob3VsZCBiZSBzZW50IHRvIHRoZSBjdHJsb3V0IGVuZHBvaW50ICovCisjZGVmaW5lIEhGQTM4NHhfVVNCX0VOQlVMS0lOCTYKKworLyogU2hvdWxkIGJlIHNlbnQgdG8gdGhlIGJ1bGtvdXQgZW5kcG9pbnQgKi8KKyNkZWZpbmUgSEZBMzg0eF9VU0JfVFhGUk0JMAorI2RlZmluZSBIRkEzODR4X1VTQl9DTURSRVEJMQorI2RlZmluZSBIRkEzODR4X1VTQl9XUklEUkVRCTIKKyNkZWZpbmUgSEZBMzg0eF9VU0JfUlJJRFJFUQkzCisjZGVmaW5lIEhGQTM4NHhfVVNCX1dNRU1SRVEJNAorI2RlZmluZSBIRkEzODR4X1VTQl9STUVNUkVRCTUKKworLyogUmVjZWl2ZWQgZnJvbSB0aGUgYnVsa2luIGVuZHBvaW50ICovCisjZGVmaW5lIEhGQTM4NHhfVVNCX0lTRlJNKGEpCSghKChhKSAmIDB4ODAwMCkpCisjZGVmaW5lIEhGQTM4NHhfVVNCX0lTVFhGUk0oYSkJKCgoYSkgJiAweDkwMDApID09IDB4MTAwMCkKKyNkZWZpbmUgSEZBMzg0eF9VU0JfSVNSWEZSTShhKQkoISgoYSkgJiAweDkwMDApKQorI2RlZmluZSBIRkEzODR4X1VTQl9JTkZPRlJNCTB4ODAwMAorI2RlZmluZSBIRkEzODR4X1VTQl9DTURSRVNQCTB4ODAwMQorI2RlZmluZSBIRkEzODR4X1VTQl9XUklEUkVTUAkweDgwMDIKKyNkZWZpbmUgSEZBMzg0eF9VU0JfUlJJRFJFU1AJMHg4MDAzCisjZGVmaW5lIEhGQTM4NHhfVVNCX1dNRU1SRVNQCTB4ODAwNAorI2RlZmluZSBIRkEzODR4X1VTQl9STUVNUkVTUAkweDgwMDUKKyNkZWZpbmUgSEZBMzg0eF9VU0JfQlVGQVZBSUwJMHg4MDA2CisjZGVmaW5lIEhGQTM4NHhfVVNCX0VSUk9SCTB4ODAwNworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBSZXF1ZXN0IChidWxrIE9VVCkgcGFja2V0IGNvbnRlbnRzICovCisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX3R4ZnJtIHsKKwloZmEzODR4X3R4X2ZyYW1lX3QJZGVzYzsKKwlVSU5UOAkJCWRhdGFbV0xBTl9EQVRBX01BWExFTl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNiX3R4ZnJtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX2NtZHJlcSB7CisJVUlOVDE2CQl0eXBlOworCVVJTlQxNgkJY21kOworCVVJTlQxNgkJcGFybTA7CisJVUlOVDE2CQlwYXJtMTsKKwlVSU5UMTYJCXBhcm0yOworCVVJTlQ4CQlwYWRbNTRdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3VzYl9jbWRyZXFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF91c2Jfd3JpZHJlcSB7CisJVUlOVDE2CQl0eXBlOworCVVJTlQxNgkJZnJtbGVuOworCVVJTlQxNgkJcmlkOworCVVJTlQ4CQlkYXRhW0hGQTM4NHhfUklEREFUQV9NQVhMRU5dOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3VzYl93cmlkcmVxX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX3JyaWRyZXEgeworCVVJTlQxNgkJdHlwZTsKKwlVSU5UMTYJCWZybWxlbjsKKwlVSU5UMTYJCXJpZDsKKwlVSU5UOAkJcGFkWzU4XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2JfcnJpZHJlcV90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3VzYl93bWVtcmVxIHsKKwlVSU5UMTYJCXR5cGU7CisJVUlOVDE2CQlmcm1sZW47CisJVUlOVDE2CQlvZmZzZXQ7CisJVUlOVDE2CQlwYWdlOworCVVJTlQ4CQlkYXRhW0hGQTM4NHhfVVNCX1JXTUVNX01BWExFTl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNiX3dtZW1yZXFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF91c2Jfcm1lbXJlcSB7CisJVUlOVDE2CQl0eXBlOworCVVJTlQxNgkJZnJtbGVuOworCVVJTlQxNgkJb2Zmc2V0OworCVVJTlQxNgkJcGFnZTsKKwlVSU5UOAkJcGFkWzU2XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2Jfcm1lbXJlcV90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBSZXNwb25zZSAoYnVsayBJTikgcGFja2V0IGNvbnRlbnRzICovCisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX3J4ZnJtIHsKKwloZmEzODR4X3J4X2ZyYW1lX3QJZGVzYzsKKwlVSU5UOAkJCWRhdGFbV0xBTl9EQVRBX01BWExFTl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNiX3J4ZnJtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX2luZm9mcm0geworCVVJTlQxNgkJCXR5cGU7CisJaGZhMzg0eF9JbmZGcmFtZV90CWluZm87Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNiX2luZm9mcm1fdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF91c2Jfc3RhdHVzcmVzcCB7CisJVUlOVDE2CQl0eXBlOworCVVJTlQxNgkJc3RhdHVzOworCVVJTlQxNgkJcmVzcDA7CisJVUlOVDE2CQlyZXNwMTsKKwlVSU5UMTYJCXJlc3AyOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3VzYl9jbWRyZXNwX3Q7CisKK3R5cGVkZWYgaGZhMzg0eF91c2JfY21kcmVzcF90IGhmYTM4NHhfdXNiX3dyaWRyZXNwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX3JyaWRyZXNwIHsKKwlVSU5UMTYJCXR5cGU7CisJVUlOVDE2CQlmcm1sZW47CisJVUlOVDE2CQlyaWQ7CisJVUlOVDgJCWRhdGFbSEZBMzg0eF9SSUREQVRBX01BWExFTl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNiX3JyaWRyZXNwX3Q7CisKK3R5cGVkZWYgaGZhMzg0eF91c2JfY21kcmVzcF90IGhmYTM4NHhfdXNiX3dtZW1yZXNwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiX3JtZW1yZXNwIHsKKwlVSU5UMTYJCXR5cGU7CisJVUlOVDE2CQlmcm1sZW47CisJVUlOVDgJCWRhdGFbSEZBMzg0eF9VU0JfUldNRU1fTUFYTEVOXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2Jfcm1lbXJlc3BfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF91c2JfYnVmYXZhaWwgeworCVVJTlQxNgkJdHlwZTsKKwlVSU5UMTYJCWZybWxlbjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2JfYnVmYXZhaWxfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF91c2JfZXJyb3IgeworCVVJTlQxNgkJdHlwZTsKKwlVSU5UMTYJCWVycm9ydHlwZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2JfZXJyb3JfdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFVuaW9ucyBmb3IgcGFja2FnaW5nIGFsbCB0aGUga25vd24gcGFja2V0IHR5cGVzIHRvZ2V0aGVyICovCisKK3R5cGVkZWYgdW5pb24gaGZhMzg0eF91c2JvdXQgeworCVVJTlQxNgkJCXR5cGU7CisJaGZhMzg0eF91c2JfdHhmcm1fdAl0eGZybTsKKwloZmEzODR4X3VzYl9jbWRyZXFfdAljbWRyZXE7CisJaGZhMzg0eF91c2Jfd3JpZHJlcV90CXdyaWRyZXE7CisJaGZhMzg0eF91c2JfcnJpZHJlcV90CXJyaWRyZXE7CisJaGZhMzg0eF91c2Jfd21lbXJlcV90CXdtZW1yZXE7CisJaGZhMzg0eF91c2Jfcm1lbXJlcV90CXJtZW1yZXE7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfdXNib3V0X3Q7CisKK3R5cGVkZWYgdW5pb24gaGZhMzg0eF91c2JpbiB7CisJVUlOVDE2CQkJdHlwZTsKKwloZmEzODR4X3VzYl9yeGZybV90CXJ4ZnJtOworCWhmYTM4NHhfdXNiX3R4ZnJtX3QJdHhmcm07CisJaGZhMzg0eF91c2JfaW5mb2ZybV90CWluZm9mcm07CisJaGZhMzg0eF91c2JfY21kcmVzcF90CWNtZHJlc3A7CisJaGZhMzg0eF91c2Jfd3JpZHJlc3BfdAl3cmlkcmVzcDsKKwloZmEzODR4X3VzYl9ycmlkcmVzcF90CXJyaWRyZXNwOworCWhmYTM4NHhfdXNiX3dtZW1yZXNwX3QJd21lbXJlc3A7CisJaGZhMzg0eF91c2Jfcm1lbXJlc3BfdAlybWVtcmVzcDsKKwloZmEzODR4X3VzYl9idWZhdmFpbF90CWJ1ZmF2YWlsOworCWhmYTM4NHhfdXNiX2Vycm9yX3QJdXNiZXJyb3I7CisJVUlOVDgJCQlib2d1c3BhZFszMDAwXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF91c2Jpbl90OworCisjZW5kaWYgLyogV0xBTl9VU0IgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUEQgcmVjb3JkIHN0cnVjdHVyZXMuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3BjYl9wYXJ0bnVtCit7CisJVUlOVDgJbnVtWzhdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9wY2JfcGFydG51bV90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9wY2JfdHJhY2VudW0KK3sKKwlVSU5UOAludW1bOF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3BjYl90cmFjZW51bV90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9uaWNfc2VyaWFsCit7CisJVUlOVDgJbnVtWzEyXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfbmljX3NlcmlhbF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9ta2tfbWVhc3VyZW1lbnRzCit7CisJZG91YmxlCWNhcnJpZXJfZnJlcTsKKwlkb3VibGUJb2NjdXBpZWRfYmFuZDsKKwlkb3VibGUJcG93ZXJfZGVuc2l0eTsKKwlkb3VibGUJdHhfc3B1cl9mMTsKKwlkb3VibGUJdHhfc3B1cl9mMjsKKwlkb3VibGUJdHhfc3B1cl9mMzsKKwlkb3VibGUJdHhfc3B1cl9mNDsKKwlkb3VibGUJdHhfc3B1cl9sMTsKKwlkb3VibGUJdHhfc3B1cl9sMjsKKwlkb3VibGUJdHhfc3B1cl9sMzsKKwlkb3VibGUJdHhfc3B1cl9sNDsKKwlkb3VibGUJcnhfc3B1cl9mMTsKKwlkb3VibGUJcnhfc3B1cl9mMjsKKwlkb3VibGUJcnhfc3B1cl9sMTsKKwlkb3VibGUJcnhfc3B1cl9sMjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfbWtrX21lYXN1cmVtZW50c190OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9uaWNfcmFtc2l6ZQoreworCVVJTlQ4CXNpemVbMTJdOyAvKiB1bml0cyBvZiBLQiAqLworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9uaWNfcmFtc2l6ZV90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9tZmlzdXByYW5nZQoreworCVVJTlQxNglpZDsKKwlVSU5UMTYJdmFyaWFudDsKKwlVSU5UMTYJYm90dG9tOworCVVJTlQxNgl0b3A7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX21maXN1cHJhbmdlX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2NmaXN1cHJhbmdlCit7CisJVUlOVDE2CWlkOworCVVJTlQxNgl2YXJpYW50OworCVVJTlQxNglib3R0b207CisJVUlOVDE2CXRvcDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfY2Zpc3VwcmFuZ2VfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfbmljaWQKK3sKKwlVSU5UMTYJaWQ7CisJVUlOVDE2CXZhcmlhbnQ7CisJVUlOVDE2CW1ham9yOworCVVJTlQxNgltaW5vcjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfbmljaWRfdDsKKworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9yZWZkYWNfbWVhc3VyZW1lbnRzCit7CisJVUlOVDE2CXZhbHVlWzBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9yZWZkYWNfbWVhc3VyZW1lbnRzX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3ZnZGFjX21lYXN1cmVtZW50cworeworCVVJTlQxNgl2YWx1ZVswXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfdmdkYWNfbWVhc3VyZW1lbnRzX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2xldmVsX2NvbXBfbWVhc3VyZW1lbnRzCit7CisJVUlOVDE2CXZhbHVlWzBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9sZXZlbF9jb21wY19tZWFzdXJlbWVudHNfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfbWFjX2FkZHJlc3MKK3sKKwlVSU5UOAlhZGRyWzZdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9tYWNfYWRkcmVzc190OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9ta2tfY2FsbG5hbWUKK3sKKwlVSU5UOAljYWxsbmFtZVs4XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfbWtrX2NhbGxuYW1lX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3JlZ2RvbWFpbgoreworCVVJTlQxNgludW1kb21haW5zOworCVVJTlQxNglkb21haW5bNV07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3JlZ2RvbWFpbl90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9hbGxvd2VkX2NoYW5uZWwKK3sKKwlVSU5UMTYJY2hfYml0bWFwOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9hbGxvd2VkX2NoYW5uZWxfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfZGVmYXVsdF9jaGFubmVsCit7CisJVUlOVDE2CWNoYW5uZWw7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX2RlZmF1bHRfY2hhbm5lbF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9wcml2YWN5X29wdGlvbgoreworCVVJTlQxNglhdmFpbGFibGU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3ByaXZhY3lfb3B0aW9uX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3RlbXB0eXBlCit7CisJVUlOVDE2CXR5cGU7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3RlbXB0eXBlX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3JlZmRhY19zZXR1cAoreworCVVJTlQxNgljaF92YWx1ZVsxNF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3JlZmRhY19zZXR1cF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl92Z2RhY19zZXR1cAoreworCVVJTlQxNgljaF92YWx1ZVsxNF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX3ZnZGFjX3NldHVwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2xldmVsX2NvbXBfc2V0dXAKK3sKKwlVSU5UMTYJY2hfdmFsdWVbMTRdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9sZXZlbF9jb21wX3NldHVwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX3RyaW1kYWNfc2V0dXAKK3sKKwlVSU5UMTYJdHJpbWlkYWM7CisJVUlOVDE2CXRyaW1xZGFjOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl90cmltZGFjX3NldHVwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2lmcl9zZXR0aW5nCit7CisJVUlOVDE2CXZhbHVlWzNdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9pZnJfc2V0dGluZ190OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9yZnJfc2V0dGluZworeworCVVJTlQxNgl2YWx1ZVszXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfcmZyX3NldHRpbmdfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfaGZhMzg2MV9iYXNlbGluZQoreworCVVJTlQxNgl2YWx1ZVs1MF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX2hmYTM4NjFfYmFzZWxpbmVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfaGZhMzg2MV9zaGFkb3cKK3sKKwlVSU5UMzIJdmFsdWVbMzJdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9oZmEzODYxX3NoYWRvd190OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3Bkcl9oZmEzODYxX2lmcmYKK3sKKwlVSU5UMzIJdmFsdWVbMjBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9oZmEzODYxX2lmcmZfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfaGZhMzg2MV9jaGNhbHNwCit7CisJVUlOVDE2CXZhbHVlWzE0XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfaGZhMzg2MV9jaGNhbHNwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2hmYTM4NjFfY2hjYWxpCit7CisJVUlOVDE2CXZhbHVlWzE3XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gaGZhMzg0eF9wZHJfaGZhMzg2MV9jaGNhbGlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfaGZhMzg2MV9uaWNfY29uZmlnCit7CisJVUlOVDE2CWNvbmZpZ19iaXRtYXA7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX25pY19jb25maWdfdDsKKwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9wZHJfaGZvX2RlbGF5Cit7CisJVUlOVDggICBoZm9fZGVsYXk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfaGZvX2RlbGF5X3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2hmYTM4NjFfbWFuZl90ZXN0c3AKK3sKKwlVSU5UMTYJdmFsdWVbMzBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9oZmEzODYxX21hbmZfdGVzdHNwX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyX2hmYTM4NjFfbWFuZl90ZXN0aQoreworCVVJTlQxNgl2YWx1ZVszMF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIGhmYTM4NHhfcGRyX2hmYTM4NjFfbWFuZl90ZXN0aV90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X2VuZF9vZl9wZGEKK3sKKwlVSU5UMTYJY3JjOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3Bkcl9lbmRfb2ZfcGRhX3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfcGRyZWMKK3sKKwlVSU5UMTYJbGVuOyAvKiBpbiB3b3JkcyAqLworCVVJTlQxNgljb2RlOworCXVuaW9uIHBkciB7CisJaGZhMzg0eF9wZHJfcGNiX3BhcnRudW1fdAlwY2JfcGFydG51bTsKKwloZmEzODR4X3Bkcl9wY2JfdHJhY2VudW1fdAlwY2JfdHJhY2VudW07CisJaGZhMzg0eF9wZHJfbmljX3NlcmlhbF90CW5pY19zZXJpYWw7CisJaGZhMzg0eF9wZHJfbWtrX21lYXN1cmVtZW50c190CW1ra19tZWFzdXJlbWVudHM7CisJaGZhMzg0eF9wZHJfbmljX3JhbXNpemVfdAluaWNfcmFtc2l6ZTsKKwloZmEzODR4X3Bkcl9tZmlzdXByYW5nZV90CW1maXN1cHJhbmdlOworCWhmYTM4NHhfcGRyX2NmaXN1cHJhbmdlX3QJY2Zpc3VwcmFuZ2U7CisJaGZhMzg0eF9wZHJfbmljaWRfdAkJbmljaWQ7CisJaGZhMzg0eF9wZHJfcmVmZGFjX21lYXN1cmVtZW50c190CXJlZmRhY19tZWFzdXJlbWVudHM7CisJaGZhMzg0eF9wZHJfdmdkYWNfbWVhc3VyZW1lbnRzX3QJdmdkYWNfbWVhc3VyZW1lbnRzOworCWhmYTM4NHhfcGRyX2xldmVsX2NvbXBjX21lYXN1cmVtZW50c190CWxldmVsX2NvbXBjX21lYXN1cmVtZW50czsKKwloZmEzODR4X3Bkcl9tYWNfYWRkcmVzc190CW1hY19hZGRyZXNzOworCWhmYTM4NHhfcGRyX21ra19jYWxsbmFtZV90CW1ra19jYWxsbmFtZTsKKwloZmEzODR4X3Bkcl9yZWdkb21haW5fdAkJcmVnZG9tYWluOworCWhmYTM4NHhfcGRyX2FsbG93ZWRfY2hhbm5lbF90CWFsbG93ZWRfY2hhbm5lbDsKKwloZmEzODR4X3Bkcl9kZWZhdWx0X2NoYW5uZWxfdAlkZWZhdWx0X2NoYW5uZWw7CisJaGZhMzg0eF9wZHJfcHJpdmFjeV9vcHRpb25fdAlwcml2YWN5X29wdGlvbjsKKwloZmEzODR4X3Bkcl90ZW1wdHlwZV90CQl0ZW1wdHlwZTsKKwloZmEzODR4X3Bkcl9yZWZkYWNfc2V0dXBfdAlyZWZkYWNfc2V0dXA7CisJaGZhMzg0eF9wZHJfdmdkYWNfc2V0dXBfdAl2Z2RhY19zZXR1cDsKKwloZmEzODR4X3Bkcl9sZXZlbF9jb21wX3NldHVwX3QJbGV2ZWxfY29tcF9zZXR1cDsKKwloZmEzODR4X3Bkcl90cmltZGFjX3NldHVwX3QJdHJpbWRhY19zZXR1cDsKKwloZmEzODR4X3Bkcl9pZnJfc2V0dGluZ190CWlmcl9zZXR0aW5nOworCWhmYTM4NHhfcGRyX3Jmcl9zZXR0aW5nX3QJcmZyX3NldHRpbmc7CisJaGZhMzg0eF9wZHJfaGZhMzg2MV9iYXNlbGluZV90CWhmYTM4NjFfYmFzZWxpbmU7CisJaGZhMzg0eF9wZHJfaGZhMzg2MV9zaGFkb3dfdAloZmEzODYxX3NoYWRvdzsKKwloZmEzODR4X3Bkcl9oZmEzODYxX2lmcmZfdAloZmEzODYxX2lmcmY7CisJaGZhMzg0eF9wZHJfaGZhMzg2MV9jaGNhbHNwX3QJaGZhMzg2MV9jaGNhbHNwOworCWhmYTM4NHhfcGRyX2hmYTM4NjFfY2hjYWxpX3QJaGZhMzg2MV9jaGNhbGk7CisJaGZhMzg0eF9wZHJfbmljX2NvbmZpZ190CW5pY19jb25maWc7CisJaGZhMzg0eF9oZm9fZGVsYXlfdCAgICAgICAgICAgICBoZm9fZGVsYXk7CisJaGZhMzg0eF9wZHJfaGZhMzg2MV9tYW5mX3Rlc3RzcF90CWhmYTM4NjFfbWFuZl90ZXN0c3A7CisJaGZhMzg0eF9wZHJfaGZhMzg2MV9tYW5mX3Rlc3RpX3QJaGZhMzg2MV9tYW5mX3Rlc3RpOworCWhmYTM4NHhfcGRyX2VuZF9vZl9wZGFfdAllbmRfb2ZfcGRhOworCisJfSBkYXRhOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBoZmEzODR4X3BkcmVjX3Q7CisKKworI2lmZGVmIF9fS0VSTkVMX18KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLSAgTUFDIHN0YXRlIHN0cnVjdHVyZSwgYXJndW1lbnQgdG8gYWxsIGZ1bmN0aW9ucyAtLQorLS0tICBBbHNvLCBhIGNvbGxlY3Rpb24gb2Ygc3VwcG9ydCB0eXBlcyAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3QgaGZhMzg0eF9zdGF0dXNyZXN1bHQKK3sKKwlVSU5UMTYJc3RhdHVzOworCVVJTlQxNglyZXNwMDsKKwlVSU5UMTYJcmVzcDE7CisJVUlOVDE2CXJlc3AyOworfSBoZmEzODR4X2NtZHJlc3VsdF90OworCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQorCisvKiBVU0IgQ29udHJvbCBFeGNoYW5nZSAoQ1RMWCk6CisgKiAgQSBxdWV1ZSBvZiB0aGUgc3RydWN0dXJlIGJlbG93IGlzIG1haW50YWluZWQgZm9yIGFsbCBvZiB0aGUKKyAqICBSZXF1ZXN0L1Jlc3BvbnNlIHR5cGUgVVNCIHBhY2tldHMgc3VwcG9ydGVkIGJ5IFByaXNtMi4KKyAqLworLyogVGhlIGZvbGxvd2luZyBoZmEzODR4Xyogc3RydWN0dXJlcyBhcmUgYXJndW1lbnRzIHRvCisgKiB0aGUgdXNlcmNiKCkgZm9yIHRoZSBkaWZmZXJlbnQgQ1RMWCB0eXBlcy4KKyAqLwordHlwZWRlZiBoZmEzODR4X2NtZHJlc3VsdF90IGhmYTM4NHhfd3JpZHJlc3VsdF90OwordHlwZWRlZiBoZmEzODR4X2NtZHJlc3VsdF90IGhmYTM4NHhfd21lbXJlc3VsdF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3JyaWRyZXN1bHQKK3sKKwlVSU5UMTYJCXJpZDsKKwljb25zdCB2b2lkCSpyaWRkYXRhOworCVVJTlQJCXJpZGRhdGFfbGVuOworfSBoZmEzODR4X3JyaWRyZXN1bHRfdDsKKworZW51bSBjdGx4X3N0YXRlIHsKKwlDVExYX1NUQVJUID0gMCwJLyogU3RhcnQgc3RhdGUsIG5vdCBxdWV1ZWQgKi8KKworCUNUTFhfQ09NUExFVEUsCS8qIENUTFggc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCAqLworCUNUTFhfUkVRX0ZBSUxFRCwJLyogT1VUIFVSQiBjb21wbGV0ZWQgdy8gZXJyb3IgKi8KKworCUNUTFhfUEVORElORywJCS8qIFF1ZXVlZCwgZGF0YSB2YWxpZCAqLworCUNUTFhfUkVRX1NVQk1JVFRFRCwJLyogT1VUIFVSQiBzdWJtaXR0ZWQgKi8KKwlDVExYX1JFUV9DT01QTEVURSwJLyogT1VUIFVSQiBjb21wbGV0ZSAqLworCUNUTFhfUkVTUF9DT01QTEVURQkvKiBJTiBVUkIgcmVjZWl2ZWQgKi8KK307Cit0eXBlZGVmIGVudW0gY3RseF9zdGF0ZSAgQ1RMWF9TVEFURTsKKworc3RydWN0IGhmYTM4NHhfdXNiY3RseDsKK3N0cnVjdCBoZmEzODR4OworCit0eXBlZGVmIHZvaWQgKCpjdGx4X2NtZGNiX3QpKCBzdHJ1Y3QgaGZhMzg0eCosIGNvbnN0IHN0cnVjdCBoZmEzODR4X3VzYmN0bHgqICk7CisKK3R5cGVkZWYgdm9pZCAoKmN0bHhfdXNlcmNiX3QpKAorCXN0cnVjdCBoZmEzODR4CSpodywKKwl2b2lkCQkqY3RseHJlc3VsdCwKKwl2b2lkCQkqdXNlcmNiX2RhdGEpOworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4X3VzYmN0bHgKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkCWxpc3Q7CisKKwlzaXplX3QJCQlvdXRidWZzaXplOworCWhmYTM4NHhfdXNib3V0X3QJb3V0YnVmOwkJLyogcGt0IGJ1ZiBmb3IgT1VUICovCisJaGZhMzg0eF91c2Jpbl90CQlpbmJ1ZjsJCS8qIHBrdCBidWYgZm9yIElOKGEgY29weSkgKi8KKworCUNUTFhfU1RBVEUJCXN0YXRlOwkJLyogVHJhY2tzIHJ1bm5pbmcgc3RhdGUgKi8KKworCXN0cnVjdCBjb21wbGV0aW9uCWRvbmU7CisJdm9sYXRpbGUgaW50CQlyZWFwYWJsZTsJLyogRm9vZCBmb3IgdGhlIHJlYXBlciB0YXNrICovCisKKwljdGx4X2NtZGNiX3QJCWNtZGNiOwkJLyogQXN5bmMgY29tbWFuZCBjYWxsYmFjayAqLworCWN0bHhfdXNlcmNiX3QJCXVzZXJjYjsJCS8qIEFzeW5jIHVzZXIgY2FsbGJhY2ssICovCisJdm9pZAkJCSp1c2VyY2JfZGF0YTsJLyogIGF0IENUTFggY29tcGxldGlvbiAgKi8KKworCWludAkJCXZhcmlhbnQ7CS8qIElkZW50aWZpZXMgY21kIHZhcmlhbnQgKi8KK30gaGZhMzg0eF91c2JjdGx4X3Q7CisKK3R5cGVkZWYgc3RydWN0IGhmYTM4NHhfdXNiY3RseHEKK3sKKwlzcGlubG9ja190CQlsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQJcGVuZGluZzsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWFjdGl2ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWNvbXBsZXRpbmc7CisJc3RydWN0IGxpc3RfaGVhZAlyZWFwYWJsZTsKK30gaGZhMzg0eF91c2JjdGx4cV90OworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IGhmYTQ4NHhfbWV0YWNtZAoreworCVVJTlQxNgkJY21kOworCisJVUlOVDE2ICAgICAgICAgIHBhcm0wOworCVVJTlQxNiAgICAgICAgICBwYXJtMTsKKwlVSU5UMTYgICAgICAgICAgcGFybTI7CisKKyNpZiAwIC8vWFhYIGNtZCBpcnEgc3R1ZmYKKwlVSU5UMTYgICAgICAgICAgYnVsa2lkOyAgICAgICAgIC8qIHdoYXQgUklEL0ZJRCB0byBjb3B5IGRvd24uICovCisJaW50ICAgICAgICAgICAgIGJ1bGtsZW47ICAgICAgICAvKiBob3cgbXVjaCB0byBjb3B5IGZyb20gQkFQICovCisgICAgICAgIGNoYXIgICAgICAgICAgICAqYnVsa2RhdGE7ICAgICAgLyogQW5kIHRvIHdoZXJlPyAqLworI2VuZGlmCisKKwloZmEzODR4X2NtZHJlc3VsdF90IHJlc3VsdDsKK30gaGZhMzg0eF9tZXRhY21kX3Q7CisKKyNkZWZpbmUJTUFYX1BSSVNNMl9HUlBfQUREUgkxNgorI2RlZmluZQlNQVhfR1JQX0FERFIJCTMyCisjZGVmaW5lIFdMQU5fQ09NTUVOVF9NQVgJODAgIC8qIE1heC4gbGVuZ3RoIG9mIHVzZXIgY29tbWVudCBzdHJpbmcuICovCisKKyNkZWZpbmUgTU1fU0FUX1BDRgkJKEJJVDE0KQorI2RlZmluZSBNTV9HQ1NEX1BDRgkJKEJJVDE1KQorI2RlZmluZSBNTV9HQ1NEX1BDRl9FQgkJKEJJVDE0IHwgQklUMTUpCisKKyNkZWZpbmUgV0xBTl9TVEFURV9TVE9QUEVECTAgICAvKiBOZXR3b3JrIGlzIG5vdCBhY3RpdmUuICovCisjZGVmaW5lIFdMQU5fU1RBVEVfU1RBUlRFRAkxICAgLyogTmV0d29yayBoYXMgYmVlbiBzdGFydGVkLiAqLworCisjZGVmaW5lIFdMQU5fQVVUSF9NQVggICAgICAgICAgIDYwICAvKiBNYXguICMgb2YgYXV0aGVudGljYXRlZCBzdGF0aW9ucy4gKi8KKyNkZWZpbmUgV0xBTl9BQ0NFU1NfTUFYCQk2MCAgLyogTWF4LiAjIG9mIHN0YXRpb25zIGluIGFuIGFjY2VzcyBsaXN0LiAqLworI2RlZmluZSBXTEFOX0FDQ0VTU19OT05FCTAgICAvKiBObyBzdGF0aW9ucyBtYXkgYmUgYXV0aGVudGljYXRlZC4gKi8KKyNkZWZpbmUgV0xBTl9BQ0NFU1NfQUxMCQkxICAgLyogQWxsIHN0YXRpb25zIG1heSBiZSBhdXRoZW50aWNhdGVkLiAqLworI2RlZmluZSBXTEFOX0FDQ0VTU19BTExPVwkyICAgLyogQXV0aGVudGljYXRlIG9ubHkgImFsbG93ZWQiIHN0YXRpb25zLiAqLworI2RlZmluZSBXTEFOX0FDQ0VTU19ERU5ZCTMgICAvKiBEbyBub3QgYXV0aGVudGljYXRlICJkZW5pZWQiIHN0YXRpb25zLiAqLworCisvKiBYWFggVGhlc2UgYXJlIGdvaW5nIGF3YXkgQVNBUCAqLwordHlwZWRlZiBzdHJ1Y3QgcHJpc20yc3RhX2F1dGhsaXN0Cit7CisJVUlOVAljbnQ7CisJVUlOVDgJYWRkcltXTEFOX0FVVEhfTUFYXVtXTEFOX0FERFJfTEVOXTsKKwlVSU5UOAlhc3NvY1tXTEFOX0FVVEhfTUFYXTsKK30gcHJpc20yc3RhX2F1dGhsaXN0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHByaXNtMnN0YV9hY2Nlc3NsaXN0Cit7CisJVUlOVAltb2RpZnk7CisJVUlOVAljbnQ7CisJVUlOVDgJYWRkcltXTEFOX0FDQ0VTU19NQVhdW1dMQU5fQUREUl9MRU5dOworCVVJTlQJY250MTsKKwlVSU5UOAlhZGRyMVtXTEFOX0FDQ0VTU19NQVhdW1dMQU5fQUREUl9MRU5dOworfSBwcmlzbTJzdGFfYWNjZXNzbGlzdF90OworCit0eXBlZGVmIHN0cnVjdCBoZmEzODR4Cit7CisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCS8qIFJlc291cmNlIGNvbmZpZyAqLworCVVJTlQzMgkJCWlvYmFzZTsKKwljaGFyCQkJX19pb21lbSAqbWVtYmFzZTsKKwlVSU5UMzIJCQlpcnE7CisjZWxzZQorCS8qIFVTQiBzdXBwb3J0IGRhdGEgKi8KKwlzdHJ1Y3QgdXNiX2RldmljZQkqdXNiOworCXN0cnVjdCB1cmIJCXJ4X3VyYjsKKwlzdHJ1Y3Qgc2tfYnVmZgkJKnJ4X3VyYl9za2I7CisJc3RydWN0IHVyYgkJdHhfdXJiOworCXN0cnVjdCB1cmIJCWN0bHhfdXJiOworCWhmYTM4NHhfdXNib3V0X3QJdHhidWZmOworCWhmYTM4NHhfdXNiY3RseHFfdAljdGx4cTsKKwlzdHJ1Y3QgdGltZXJfbGlzdAlyZXF0aW1lcjsKKwlzdHJ1Y3QgdGltZXJfbGlzdAlyZXNwdGltZXI7CisKKwlzdHJ1Y3QgdGltZXJfbGlzdAl0aHJvdHRsZTsKKworCXN0cnVjdCB0YXNrbGV0X3N0cnVjdAlyZWFwZXJfYmg7CisJc3RydWN0IHRhc2tsZXRfc3RydWN0CWNvbXBsZXRpb25fYmg7CisKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QJdXNiX3dvcms7CisKKwl1bnNpZ25lZCBsb25nCQl1c2JfZmxhZ3M7CisjZGVmaW5lIFRIUk9UVExFX1JYCTAKKyNkZWZpbmUgVEhST1RUTEVfVFgJMQorI2RlZmluZSBXT1JLX1JYX0hBTFQJMgorI2RlZmluZSBXT1JLX1RYX0hBTFQJMworI2RlZmluZSBXT1JLX1JYX1JFU1VNRQk0CisjZGVmaW5lIFdPUktfVFhfUkVTVU1FCTUKKworCXVuc2lnbmVkIHNob3J0CQlyZXFfdGltZXJfZG9uZToxOworCXVuc2lnbmVkIHNob3J0CQlyZXNwX3RpbWVyX2RvbmU6MTsKKworCWludCAgICAgICAgICAgICAgICAgICAgIGVuZHBfaW47CisJaW50ICAgICAgICAgICAgICAgICAgICAgZW5kcF9vdXQ7CisjZW5kaWYgLyogIVVTQiAqLworCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKwlzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldjsKKyNlbHNlCisJZGV2X2xpbmtfdAkqbGluazsKKyNlbmRpZgorCWRldl9ub2RlX3QJbm9kZTsKKyNlbmRpZgorCisJaW50ICAgICAgICAgICAgICAgICAgICAgc25pZmZfZmNzOworCWludCAgICAgICAgICAgICAgICAgICAgIHNuaWZmX2NoYW5uZWw7CisJaW50ICAgICAgICAgICAgICAgICAgICAgc25pZmZfdHJ1bmNhdGU7CisJaW50ICAgICAgICAgICAgICAgICAgICAgc25pZmZoZHI7CisKKwl3YWl0X3F1ZXVlX2hlYWRfdCBjbWRxOwkgICAgICAgIC8qIHdhaXQgcXVldWUgaXRzZWxmICovCisKKwkvKiBDb250cm9sbGVyIHN0YXRlICovCisJVUlOVDMyCQlzdGF0ZTsKKwlVSU5UMzIJCWlzYXA7CisJVUlOVDgJCXBvcnRfZW5hYmxlZFtIRkEzODR4X05VTVBPUlRTX01BWF07CisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCVVJTlQJCWF1eGVuOworCVVJTlQgICAgICAgICAgICBpc3JhbTE2OworI2VuZGlmIC8qICFVU0IgKi8KKworCS8qIERvd25sb2FkIHN1cHBvcnQgKi8KKwlVSU5UCQkJCWRsc3RhdGU7CisJaGZhMzg0eF9kb3dubG9hZGJ1ZmZlcl90CWJ1ZmluZm87CisJVUlOVDE2CQkJCWRsdGltZW91dDsKKworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1VTQikKKwlzcGlubG9ja190CWNtZGxvY2s7CisJdm9sYXRpbGUgaW50ICAgIGNtZGZsYWc7ICAgICAgICAvKiB3YWl0IHF1ZXVlIGZsYWcgKi8KKwloZmEzODR4X21ldGFjbWRfdCAqY21kZGF0YTsgICAgICAvKiBmb3Igb3VyIGFzeW5jIGNhbGxiYWNrICovCisKKwkvKiBCQVAgc3VwcG9ydCAqLworCXNwaW5sb2NrX3QJYmFwbG9jazsKKwlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgICBiYXBfdGFza2xldDsKKworCS8qIE1BQyBidWZmZXIgaWRzICovCisgICAgICAgIFVJTlQxNiAgICAgICAgICB0eGZpZF9oZWFkOworICAgICAgICBVSU5UMTYgICAgICAgICAgdHhmaWRfdGFpbDsKKyAgICAgICAgVUlOVCAgICAgICAgICAgIHR4ZmlkX047CisgICAgICAgIFVJTlQxNiAgICAgICAgICB0eGZpZF9xdWV1ZVtIRkEzODR4X0RSVlJfRklEU1RBQ0tMRU5fTUFYXTsKKwlVSU5UMTYJCQlpbmZvZmlkOworCXN0cnVjdCBzZW1hcGhvcmUJaW5mb2ZpZF9zZW07CisjZW5kaWYgLyogIVVTQiAqLworCisJaW50ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZmxhZzsgICAgLyogdG8gc2lnbmFsIHNjYW4gY29tbGV0ZSAqLworCWludCAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9hcDsgICAgICAgIC8qIGFyZSB3ZSBqb2luZWQgdG8gYSBzcGVjaWZpYyBhcCAqLworCWludCAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9yZXRyaWVzOyAgIC8qIG51bWJlciBvZiBqb2luIHJldHJpZXMgdGlsbCB3ZSBmYWlsICovCisJaGZhMzg0eF9Kb2luUmVxdWVzdF9kYXRhX3QgICBqb2lucmVxOyAgICAgICAgLyogam9pbiByZXF1ZXN0IHNhdmVkIGRhdGEgKi8KKworCXdsYW5kZXZpY2VfdCAgICAgICAgICAgICp3bGFuZGV2OworCS8qIFRpbWVyIHRvIGFsbG93IGZvciB0aGUgZGVmZXJyZWQgcHJvY2Vzc2luZyBvZiBsaW5rc3RhdHVzIG1lc3NhZ2VzICovCisJc3RydWN0IHdvcmtfc3RydWN0IAlsaW5rX2JoOworCisgICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgIGNvbW1zcXVhbF9iaDsKKwloZmEzODR4X2NvbW1zcXVhbGl0eV90ICBxdWFsOworCXN0cnVjdCB0aW1lcl9saXN0CWNvbW1zcXVhbF90aW1lcjsKKworCVVJTlQxNiBsaW5rX3N0YXR1czsKKwlVSU5UMTYgbGlua19zdGF0dXNfbmV3OworCXN0cnVjdCBza19idWZmX2hlYWQgICAgICAgIGF1dGhxOworCisJLyogQW5kIGhlcmUgd2UgaGF2ZSBzdHVmZiB0aGF0IHVzZWQgdG8gYmUgaW4gcHJpdiAqLworCisJLyogU3RhdGUgdmFyaWFibGVzICovCisJVUlOVAkJcHJlc25pZmZfcG9ydF90eXBlOworCVVJTlQxNgkJcHJlc25pZmZfd2VwZmxhZ3M7CisJVUlOVDMyCQlkb3QxMV9kZXNpcmVkX2Jzc190eXBlOworCWludAkJYXA7CS8qIEFQIGZsYWc6IDAgLSBTdGF0aW9uLCAxIC0gQWNjZXNzIFBvaW50LiAqLworCisJaW50ICAgICAgICAgICAgIGRibWFkanVzdDsKKworCS8qIEdyb3VwIEFkZHJlc3NlcyAtIHJpZ2h0IG5vdywgdGhlcmUgYXJlIHVwIHRvIGEgdG90YWwKKwlvZiBNQVhfR1JQX0FERFIgZ3JvdXAgYWRkcmVzc2VzICovCisJVUlOVDgJCWRvdDExX2dycF9hZGRyW01BWF9HUlBfQUREUl1bV0xBTl9BRERSX0xFTl07CisJVUlOVAkJZG90MTFfZ3JwY250OworCisJLyogQ29tcG9uZW50IElkZW50aXRpZXMgKi8KKwloZmEzODR4X2NvbXBpZGVudF90CWlkZW50X25pYzsKKwloZmEzODR4X2NvbXBpZGVudF90CWlkZW50X3ByaV9mdzsKKwloZmEzODR4X2NvbXBpZGVudF90CWlkZW50X3N0YV9mdzsKKwloZmEzODR4X2NvbXBpZGVudF90CWlkZW50X2FwX2Z3OworCVVJTlQxNgkJCW1tX21vZHM7CisKKwkvKiBTdXBwbGllciBjb21wYXRpYmlsaXR5IHJhbmdlcyAqLworCWhmYTM4NHhfY2FwbGV2ZWxfdAljYXBfc3VwX21maTsKKwloZmEzODR4X2NhcGxldmVsX3QJY2FwX3N1cF9jZmk7CisJaGZhMzg0eF9jYXBsZXZlbF90CWNhcF9zdXBfcHJpOworCWhmYTM4NHhfY2FwbGV2ZWxfdAljYXBfc3VwX3N0YTsKKwloZmEzODR4X2NhcGxldmVsX3QJY2FwX3N1cF9hcDsKKworCS8qIEFjdG9yIGNvbXBhdGliaWxpdHkgcmFuZ2VzICovCisJaGZhMzg0eF9jYXBsZXZlbF90CWNhcF9hY3RfcHJpX2NmaTsgLyogcHJpIGYvdyB0byBjb250cm9sbGVyIGludGVyZmFjZSAqLworCWhmYTM4NHhfY2FwbGV2ZWxfdAljYXBfYWN0X3N0YV9jZmk7IC8qIHN0YSBmL3cgdG8gY29udHJvbGxlciBpbnRlcmZhY2UgKi8KKwloZmEzODR4X2NhcGxldmVsX3QJY2FwX2FjdF9zdGFfbWZpOyAvKiBzdGEgZi93IHRvIG1vZGVtIGludGVyZmFjZSAqLworCWhmYTM4NHhfY2FwbGV2ZWxfdAljYXBfYWN0X2FwX2NmaTsgIC8qIGFwIGYvdyB0byBjb250cm9sbGVyIGludGVyZmFjZSAqLworCWhmYTM4NHhfY2FwbGV2ZWxfdAljYXBfYWN0X2FwX21maTsgIC8qIGFwIGYvdyB0byBtb2RlbSBpbnRlcmZhY2UgKi8KKworCVVJTlQzMgkJCXBzdXNlcmNvdW50OyAgLyogUG93ZXIgc2F2ZSB1c2VyIGNvdW50LiAqLworCWhmYTM4NHhfQ29tbVRhbGxpZXMzMl90CXRhbGxpZXM7ICAgICAgLyogQ29tbXVuaWNhdGlvbiB0YWxsaWVzLiAqLworCVVJTlQ4CQkJY29tbWVudFtXTEFOX0NPTU1FTlRfTUFYKzFdOyAvKiBVc2VyIGNvbW1lbnQgKi8KKworCS8qIENoYW5uZWwgSW5mbyByZXF1ZXN0IHJlc3VsdHMgKEFQIG9ubHkpICovCisJc3RydWN0IHsKKwkJYXRvbWljX3QJCWRvbmU7CisJCVVJTlQ4CQkJY291bnQ7CisJCWhmYTM4NHhfQ2hJbmZvUmVzdWx0X3QJcmVzdWx0czsKKwl9IGNoYW5uZWxfaW5mbzsKKworCWhmYTM4NHhfSW5mRnJhbWVfdCAgICAgICpzY2FucmVzdWx0czsKKworCisgICAgICAgIHByaXNtMnN0YV9hdXRobGlzdF90CWF1dGhsaXN0OyAgICAgLyogQXV0aGVudGljYXRlZCBzdGF0aW9uIGxpc3QuICovCisJVUlOVAkJCWFjY2Vzc21vZGU7ICAgLyogQWNjZXNzIG1vZGUuICovCisgICAgICAgIHByaXNtMnN0YV9hY2Nlc3NsaXN0X3QJYWxsb3c7ICAgICAgICAvKiBBbGxvd2VkIHN0YXRpb24gbGlzdC4gKi8KKyAgICAgICAgcHJpc20yc3RhX2FjY2Vzc2xpc3RfdAlkZW55OyAgICAgICAgIC8qIERlbmllZCBzdGF0aW9uIGxpc3QuICovCisKK30gaGZhMzg0eF90OworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0gRnVuY3Rpb24gRGVjbGFyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQordm9pZAoraGZhMzg0eF9jcmVhdGUoCisJaGZhMzg0eF90ICpodywKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiKTsKKyNlbHNlCit2b2lkCitoZmEzODR4X2NyZWF0ZSgKKwloZmEzODR4X3QgKmh3LAorCVVJTlQgaXJxLAorCVVJTlQzMiBpb2Jhc2UsCisJVUlOVDggX19pb21lbSAqbWVtYmFzZSk7CisjZW5kaWYKKwordm9pZCBoZmEzODR4X2Rlc3Ryb3koaGZhMzg0eF90ICpodyk7CisKK2lycXJldHVybl90CitoZmEzODR4X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQgUFRfUkVHUyk7CitpbnQKK2hmYTM4NHhfY29yZXJlc2V0KCBoZmEzODR4X3QgKmh3LCBpbnQgaG9sZHRpbWUsIGludCBzZXR0bGV0aW1lLCBpbnQgZ2VuZXNpcyk7CitpbnQKK2hmYTM4NHhfZHJ2cl9jaGluZm9yZXN1bHRzKCBoZmEzODR4X3QgKmh3KTsKK2ludAoraGZhMzg0eF9kcnZyX2NvbW10YWxsaWVzKCBoZmEzODR4X3QgKmh3KTsKK2ludAoraGZhMzg0eF9kcnZyX2Rpc2FibGUoaGZhMzg0eF90ICpodywgVUlOVDE2IG1hY3BvcnQpOworaW50CitoZmEzODR4X2RydnJfZW5hYmxlKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBtYWNwb3J0KTsKK2ludAoraGZhMzg0eF9kcnZyX2ZsYXNoZGxfZW5hYmxlKGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2RydnJfZmxhc2hkbF9kaXNhYmxlKGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2RydnJfZmxhc2hkbF93cml0ZShoZmEzODR4X3QgKmh3LCBVSU5UMzIgZGFkZHIsIHZvaWQqIGJ1ZiwgVUlOVDMyIGxlbik7CitpbnQKK2hmYTM4NHhfZHJ2cl9nZXRjb25maWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKTsKK2ludAoraGZhMzg0eF9kcnZyX2hhbmRvdmVyKCBoZmEzODR4X3QgKmh3LCBVSU5UOCAqYWRkcik7CitpbnQKK2hmYTM4NHhfZHJ2cl9ob3N0c2NhbnJlc3VsdHMoIGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2RydnJfbG93X2xldmVsKGhmYTM4NHhfdCAqaHcsIGhmYTM4NHhfbWV0YWNtZF90ICpjbWQpOworaW50CitoZmEzODR4X2RydnJfbW1pX3JlYWQoaGZhMzg0eF90ICpodywgVUlOVDMyIGFkZHJlc3MsIFVJTlQzMiAqcmVzdWx0KTsKK2ludAoraGZhMzg0eF9kcnZyX21taV93cml0ZShoZmEzODR4X3QgKmh3LCBVSU5UMzIgYWRkcmVzcywgVUlOVDMyIGRhdGEpOworaW50CitoZmEzODR4X2RydnJfcmFtZGxfZW5hYmxlKGhmYTM4NHhfdCAqaHcsIFVJTlQzMiBleGVhZGRyKTsKK2ludAoraGZhMzg0eF9kcnZyX3JhbWRsX2Rpc2FibGUoaGZhMzg0eF90ICpodyk7CitpbnQKK2hmYTM4NHhfZHJ2cl9yYW1kbF93cml0ZShoZmEzODR4X3QgKmh3LCBVSU5UMzIgZGFkZHIsIHZvaWQqIGJ1ZiwgVUlOVDMyIGxlbik7CitpbnQKK2hmYTM4NHhfZHJ2cl9yZWFkcGRhKGhmYTM4NHhfdCAqaHcsIHZvaWQgKmJ1ZiwgVUlOVCBsZW4pOworaW50CitoZmEzODR4X2RydnJfc2NhbnJlc3VsdHMoIGhmYTM4NHhfdCAqaHcpOworCitpbnQKK2hmYTM4NHhfZHJ2cl9zZXRjb25maWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKTsKKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmlkLCB2b2lkICp2YWwpCit7CisJaW50CQlyZXN1bHQgPSAwOworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIHJpZCwgdmFsLCBzaXplb2YoVUlOVDE2KSk7CisJaWYgKCByZXN1bHQgPT0gMCApIHsKKwkJKigoVUlOVDE2Kil2YWwpID0gaGZhMzg0eDJob3N0XzE2KCooKFVJTlQxNiopdmFsKSk7CisJfQorCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RydnJfZ2V0Y29uZmlnMzIoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqdmFsKQoreworCWludAkJcmVzdWx0ID0gMDsKKworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIHJpZCwgdmFsLCBzaXplb2YoVUlOVDMyKSk7CisJaWYgKCByZXN1bHQgPT0gMCApIHsKKwkJKigoVUlOVDMyKil2YWwpID0gaGZhMzg0eDJob3N0XzMyKCooKFVJTlQzMiopdmFsKSk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmlkLCBVSU5UMTYgdmFsKQoreworCVVJTlQxNiB2YWx1ZSA9IGhvc3QyaGZhMzg0eF8xNih2YWwpOworCXJldHVybiBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCByaWQsICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RydnJfc2V0Y29uZmlnMzIoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgVUlOVDMyIHZhbCkKK3sKKwlVSU5UMzIgdmFsdWUgPSBob3N0MmhmYTM4NHhfMzIodmFsKTsKKwlyZXR1cm4gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyhodywgcmlkLCAmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworfQorCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQoraW50CitoZmEzODR4X2RydnJfZ2V0Y29uZmlnX2FzeW5jKGhmYTM4NHhfdCAgICAgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDE2ICAgICAgICByaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGx4X3VzZXJjYl90IHVzZXJjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAgKnVzZXJjYl9kYXRhKTsKKworaW50CitoZmEzODR4X2RydnJfc2V0Y29uZmlnX2FzeW5jKGhmYTM4NHhfdCAqaHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMTYgcmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDE2IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0bHhfdXNlcmNiX3QgdXNlcmNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcmNiX2RhdGEpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RydnJfc2V0Y29uZmlnX2FzeW5jKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiByaWQsIHZvaWQgKmJ1ZiwgVUlOVDE2IGxlbiwKKwkJCSAgICAgdm9pZCAqcHRyMSwgdm9pZCAqcHRyMikKK3sKKyAgICAgICAgICh2b2lkKXB0cjE7CisgICAgICAgICAodm9pZClwdHIyOworICAgICAgICAgcmV0dXJuIGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoaHcsIHJpZCwgYnVmLCBsZW4pOworfQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RydnJfc2V0Y29uZmlnMTZfYXN5bmMoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgVUlOVDE2IHZhbCkKK3sKKwlVSU5UMTYgdmFsdWUgPSBob3N0MmhmYTM4NHhfMTYodmFsKTsKKwlyZXR1cm4gaGZhMzg0eF9kcnZyX3NldGNvbmZpZ19hc3luYyhodywgcmlkLCAmdmFsdWUsIHNpemVvZih2YWx1ZSksCisJCQkJCSAgICBOVUxMICwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RydnJfc2V0Y29uZmlnMzJfYXN5bmMoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgVUlOVDMyIHZhbCkKK3sKKwlVSU5UMzIgdmFsdWUgPSBob3N0MmhmYTM4NHhfMzIodmFsKTsKKwlyZXR1cm4gaGZhMzg0eF9kcnZyX3NldGNvbmZpZ19hc3luYyhodywgcmlkLCAmdmFsdWUsIHNpemVvZih2YWx1ZSksCisJCQkJCSAgICBOVUxMICwgTlVMTCk7Cit9CisKKworaW50CitoZmEzODR4X2RydnJfc3RhcnQoaGZhMzg0eF90ICpodyk7CitpbnQKK2hmYTM4NHhfZHJ2cl9zdG9wKGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2RydnJfdHhmcmFtZShoZmEzODR4X3QgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBwODAyMTFfaGRyX3QgKnA4MDIxMV9oZHIsIHA4MDIxMV9tZXRhd2VwX3QgKnA4MDIxMV93ZXApOwordm9pZAoraGZhMzg0eF90eF90aW1lb3V0KHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CisKK2ludAoraGZhMzg0eF9jbWRfaW5pdGlhbGl6ZShoZmEzODR4X3QgKmh3KTsKK2ludAoraGZhMzg0eF9jbWRfZW5hYmxlKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBtYWNwb3J0KTsKK2ludAoraGZhMzg0eF9jbWRfZGlzYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgbWFjcG9ydCk7CitpbnQKK2hmYTM4NHhfY21kX2RpYWdub3NlKGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2NtZF9hbGxvY2F0ZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgbGVuKTsKK2ludAoraGZhMzg0eF9jbWRfdHJhbnNtaXQoaGZhMzg0eF90ICpodywgVUlOVDE2IHJlY2xhaW0sIFVJTlQxNiBxb3MsIFVJTlQxNiBmaWQpOworaW50CitoZmEzODR4X2NtZF9jbGVhcnBlcnNpc3QoaGZhMzg0eF90ICpodywgVUlOVDE2IGZpZCk7CitpbnQKK2hmYTM4NHhfY21kX25vdGlmeShoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmVjbGFpbSwgVUlOVDE2IGZpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKTsKK2ludAoraGZhMzg0eF9jbWRfaW5xdWlyZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgZmlkKTsKK2ludAoraGZhMzg0eF9jbWRfYWNjZXNzKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiB3cml0ZSwgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKTsKK2ludAoraGZhMzg0eF9jbWRfbW9uaXRvcihoZmEzODR4X3QgKmh3LCBVSU5UMTYgZW5hYmxlKTsKK2ludAoraGZhMzg0eF9jbWRfZG93bmxvYWQoCisJaGZhMzg0eF90ICpodywKKwlVSU5UMTYgbW9kZSwKKwlVSU5UMTYgbG93YWRkciwKKwlVSU5UMTYgaGlnaGFkZHIsCisJVUlOVDE2IGNvZGVsZW4pOworaW50CitoZmEzODR4X2NtZF9hdXhfZW5hYmxlKGhmYTM4NHhfdCAqaHcsIGludCBmb3JjZSk7CitpbnQKK2hmYTM4NHhfY21kX2F1eF9kaXNhYmxlKGhmYTM4NHhfdCAqaHcpOworaW50CitoZmEzODR4X2NvcHlfZnJvbV9iYXAoCisJaGZhMzg0eF90ICpodywKKwlVSU5UMTYJYmFwLAorCVVJTlQxNglpZCwKKwlVSU5UMTYJb2Zmc2V0LAorCXZvaWQJKmJ1ZiwKKwlVSU5UCWxlbik7CitpbnQKK2hmYTM4NHhfY29weV90b19iYXAoCisJaGZhMzg0eF90ICpodywKKwlVSU5UMTYJYmFwLAorCVVJTlQxNglpZCwKKwlVSU5UMTYJb2Zmc2V0LAorCXZvaWQJKmJ1ZiwKKwlVSU5UCWxlbik7Cit2b2lkCitoZmEzODR4X2NvcHlfZnJvbV9hdXgoCisJaGZhMzg0eF90ICpodywKKwlVSU5UMzIJY2FyZGFkZHIsCisJVUlOVDMyCWF1eGN0bCwKKwl2b2lkCSpidWYsCisJVUlOVAlsZW4pOwordm9pZAoraGZhMzg0eF9jb3B5X3RvX2F1eCgKKwloZmEzODR4X3QgKmh3LAorCVVJTlQzMgljYXJkYWRkciwKKwlVSU5UMzIJYXV4Y3RsLAorCXZvaWQJKmJ1ZiwKKwlVSU5UCWxlbik7CisKKyNpZiAoV0xBTl9IT1NUSUYgIT0gV0xBTl9VU0IpCisKKy8qCisgICBIRkEzODR4IGlzIGEgTElUVExFIEVORElBTiBwYXJ0LgorCisgICB0aGUgZ2V0L3NldHJlZyBmdW5jdGlvbnMgaW1wbGljaXRseSBieXRlLXN3YXAgdGhlIGRhdGEgdG8gTEUuCisgICB0aGUgX25vc3dhcCB2YXJpYW50cyBkbyBub3QgcGVyZm9ybSBhIGJ5dGUtc3dhcCBvbiB0aGUgZGF0YS4KKyovCisKK3N0YXRpYyBpbmxpbmUgVUlOVDE2CitfX2hmYTM4NHhfZ2V0cmVnKGhmYTM4NHhfdCAqaHcsIFVJTlQgcmVnKTsKKworc3RhdGljIGlubGluZSB2b2lkCitfX2hmYTM4NHhfc2V0cmVnKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiB2YWwsIFVJTlQgcmVnKTsKKworc3RhdGljIGlubGluZSBVSU5UMTYKK19faGZhMzg0eF9nZXRyZWdfbm9zd2FwKGhmYTM4NHhfdCAqaHcsIFVJTlQgcmVnKTsKKworc3RhdGljIGlubGluZSB2b2lkCitfX2hmYTM4NHhfc2V0cmVnX25vc3dhcChoZmEzODR4X3QgKmh3LCBVSU5UMTYgdmFsLCBVSU5UIHJlZyk7CisKKyNpZmRlZiBSRVZFUlNFX0VORElBTgorI2RlZmluZSBoZmEzODR4X2dldHJlZyBfX2hmYTM4NHhfZ2V0cmVnX25vc3dhcAorI2RlZmluZSBoZmEzODR4X3NldHJlZyBfX2hmYTM4NHhfc2V0cmVnX25vc3dhcAorI2RlZmluZSBoZmEzODR4X2dldHJlZ19ub3N3YXAgX19oZmEzODR4X2dldHJlZworI2RlZmluZSBoZmEzODR4X3NldHJlZ19ub3N3YXAgX19oZmEzODR4X3NldHJlZworI2Vsc2UKKyNkZWZpbmUgaGZhMzg0eF9nZXRyZWcgX19oZmEzODR4X2dldHJlZworI2RlZmluZSBoZmEzODR4X3NldHJlZyBfX2hmYTM4NHhfc2V0cmVnCisjZGVmaW5lIGhmYTM4NHhfZ2V0cmVnX25vc3dhcCBfX2hmYTM4NHhfZ2V0cmVnX25vc3dhcAorI2RlZmluZSBoZmEzODR4X3NldHJlZ19ub3N3YXAgX19oZmEzODR4X3NldHJlZ19ub3N3YXAKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9nZXRyZWcKKyoKKyogUmV0cmlldmUgdGhlIHZhbHVlIG9mIG9uZSBvZiB0aGUgTUFDIHJlZ2lzdGVycy4gIERvbmUgaGVyZQorKiBiZWNhdXNlIGRpZmZlcmVudCBQUklTTTIgTUFDIHBhcnRzIHVzZSBkaWZmZXJlbnQgYnVzZXMgYW5kIHN1Y2guCisqIE5PVEU6IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgaW4gSE9TVCBPUkRFUiEhISEhIQorKgorKiBBcmd1bWVudHM6CisqICAgICAgIGh3ICAgICAgICAgTUFDIHBhcnQgc3RydWN0dXJlCisqICAgICAgIHJlZyAgICAgICAgUmVnaXN0ZXIgaWRlbnRpZmllciAob2Zmc2V0IGZvciBJL08gYmFzZWQgaS9mKQorKgorKiBSZXR1cm5zOgorKiAgICAgICBWYWx1ZSBmcm9tIHRoZSByZWdpc3RlciBpbiBIT1NUIE9SREVSISEhIQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW5saW5lIFVJTlQxNgorX19oZmEzODR4X2dldHJlZyhoZmEzODR4X3QgKmh3LCBVSU5UIHJlZykKK3sKKy8qCXByaW50ayhLRVJOX0RFQlVHICJSZWFkaW5nIGZyb20gMHglMHhcbiIsIGh3LT5tZW1iYXNlICsgcmVnKTsgKi8KKyNpZiAoKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKSB8fCAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QTFgpKQorCXJldHVybiB3bGFuX2lud19sZTE2X3RvX2NwdShody0+aW9iYXNlK3JlZyk7CisjZWxpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisJcmV0dXJuIF9fbGUxNl90b19jcHUocmVhZHcoaHctPm1lbWJhc2UgKyByZWcpKTsKKyNlbmRpZgorfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9zZXRyZWcKKyoKKyogU2V0IHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlIE1BQyByZWdpc3RlcnMuICBEb25lIGhlcmUKKyogYmVjYXVzZSBkaWZmZXJlbnQgUFJJU00yIE1BQyBwYXJ0cyB1c2UgZGlmZmVyZW50IGJ1c2VzIGFuZCBzdWNoLgorKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIHZhbHVlIGlzIGluIEhPU1QgT1JERVIhISEhISEKKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBodwlNQUMgcGFydCBzdHJ1Y3R1cmUKKyoJdmFsCVZhbHVlLCBpbiBIT1NUIE9SREVSISEsIHRvIHB1dCBpbiB0aGUgcmVnaXN0ZXIKKyogICAgICAgcmVnCVJlZ2lzdGVyIGlkZW50aWZpZXIgKG9mZnNldCBmb3IgSS9PIGJhc2VkIGkvZikKKyoKKyogUmV0dXJuczoKKyogICAgICAgTm90aGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW5saW5lIHZvaWQKK19faGZhMzg0eF9zZXRyZWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHZhbCwgVUlOVCByZWcpCit7CisjaWYgKChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDTUNJQSkgfHwgKFdMQU5fSE9TVElGID09IFdMQU5fUExYKSkKKwl3bGFuX291dHdfY3B1X3RvX2xlMTYoIHZhbCwgaHctPmlvYmFzZSArIHJlZyk7CisJcmV0dXJuOworI2VsaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUENJKQorCXdyaXRldyhfX2NwdV90b19sZTE2KHZhbCksIGh3LT5tZW1iYXNlICsgcmVnKTsKKwlyZXR1cm47CisjZW5kaWYKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9nZXRyZWdfbm9zd2FwCisqCisqIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlIE1BQyByZWdpc3RlcnMuICBEb25lIGhlcmUKKyogYmVjYXVzZSBkaWZmZXJlbnQgUFJJU00yIE1BQyBwYXJ0cyB1c2UgZGlmZmVyZW50IGJ1c2VzIGFuZCBzdWNoLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIGh3ICAgICAgICAgTUFDIHBhcnQgc3RydWN0dXJlCisqICAgICAgIHJlZyAgICAgICAgUmVnaXN0ZXIgaWRlbnRpZmllciAob2Zmc2V0IGZvciBJL08gYmFzZWQgaS9mKQorKgorKiBSZXR1cm5zOgorKiAgICAgICBWYWx1ZSBmcm9tIHRoZSByZWdpc3Rlci4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGlubGluZSBVSU5UMTYKK19faGZhMzg0eF9nZXRyZWdfbm9zd2FwKGhmYTM4NHhfdCAqaHcsIFVJTlQgcmVnKQoreworI2lmICgoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ01DSUEpIHx8IChXTEFOX0hPU1RJRiA9PSBXTEFOX1BMWCkpCisJcmV0dXJuIHdsYW5faW53KGh3LT5pb2Jhc2UrcmVnKTsKKyNlbGlmIChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDSSkKKwlyZXR1cm4gcmVhZHcoaHctPm1lbWJhc2UgKyByZWcpOworI2VuZGlmCit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfc2V0cmVnX25vc3dhcAorKgorKiBTZXQgdGhlIHZhbHVlIG9mIG9uZSBvZiB0aGUgTUFDIHJlZ2lzdGVycy4gIERvbmUgaGVyZQorKiBiZWNhdXNlIGRpZmZlcmVudCBQUklTTTIgTUFDIHBhcnRzIHVzZSBkaWZmZXJlbnQgYnVzZXMgYW5kIHN1Y2guCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgaHcJTUFDIHBhcnQgc3RydWN0dXJlCisqCXZhbAlWYWx1ZSB0byBwdXQgaW4gdGhlIHJlZ2lzdGVyCisqICAgICAgIHJlZwlSZWdpc3RlciBpZGVudGlmaWVyIChvZmZzZXQgZm9yIEkvTyBiYXNlZCBpL2YpCisqCisqIFJldHVybnM6CisqICAgICAgIE5vdGhpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGlubGluZSB2b2lkCitfX2hmYTM4NHhfc2V0cmVnX25vc3dhcChoZmEzODR4X3QgKmh3LCBVSU5UMTYgdmFsLCBVSU5UIHJlZykKK3sKKyNpZiAoKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKSB8fCAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QTFgpKQorCXdsYW5fb3V0dyggdmFsLCBody0+aW9iYXNlICsgcmVnKTsKKwlyZXR1cm47CisjZWxpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisJd3JpdGV3KHZhbCwgaHctPm1lbWJhc2UgKyByZWcpOworCXJldHVybjsKKyNlbmRpZgorfQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoZmEzODR4X2V2ZW50c19hbGwoaGZhMzg0eF90ICpodykKK3sKKwloZmEzODR4X3NldHJlZyhodywKKwkJICAgICAgIEhGQTM4NHhfSU5UX05PUk1BTAorI2lmZGVmIENNRF9JUlEKKwkJICAgICAgIHwgSEZBMzg0eF9JTlRFTl9DTURfU0VUKDEpCisjZW5kaWYKKwkJICAgICAgICwKKwkJICAgICAgIEhGQTM4NHhfSU5URU4pOworCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoZmEzODR4X2V2ZW50c19ub2JhcChoZmEzODR4X3QgKmh3KQoreworCWhmYTM4NHhfc2V0cmVnKGh3LAorCQkgICAgICAgIChIRkEzODR4X0lOVF9OT1JNQUwgJiB+SEZBMzg0eF9JTlRfQkFQX09QKQorI2lmZGVmIENNRF9JUlEKKwkJICAgICAgIHwgSEZBMzg0eF9JTlRFTl9DTURfU0VUKDEpCisjZW5kaWYKKwkJICAgICAgICwKKwkJICAgICAgIEhGQTM4NHhfSU5URU4pOworCit9CisKKyNlbmRpZiAvKiBXTEFOX0hPU1RJRiAhPSBXTEFOX1VTQiAqLworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2VuZGlmICAvKiBfSEZBMzg0eF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9oZmEzODR4X3VzYi5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvaGZhMzg0eF91c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjBjNTAyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvaGZhMzg0eF91c2IuYwpAQCAtMCwwICsxLDUwMjcgQEAKKy8qIHNyYy9wcmlzbTIvZHJpdmVyL2hmYTM4NHhfdXNiLmMKKyoKKyogRnVuY3Rpb25zIHRoYXQgdGFsayB0byB0aGUgVVNCIHZhcmlhbnRvZiB0aGUgSW50ZXJzaWwgaGZhMzg0eCBNQUMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhpcyBmaWxlIGltcGxlbWVudHMgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcHJpc20yL2hmYTM4NHgKKyogODAyLjExIE1BQyBoYXJkd2FyZSBhbmQgZmlybXdhcmUgaG9zdCBpbnRlcmZhY2UuCisqCisqIFRoZSBmdW5jdGlvbnMgY2FuIGJlIGNvbnNpZGVyZWQgdG8gcmVwcmVzZW50IHNldmVyYWwgbGV2ZWxzIG9mCisqIGFic3RyYWN0aW9uLiAgVGhlIGxvd2VzdCBsZXZlbCBmdW5jdGlvbnMgYXJlIHNpbXBseSBDLWNhbGxhYmxlIHdyYXBwZXJzCisqIGFyb3VuZCB0aGUgcmVnaXN0ZXIgYWNjZXNzZXMuICBUaGUgbmV4dCBoaWdoZXIgbGV2ZWwgcmVwcmVzZW50cyBDLWNhbGxhYmxlCisqIHByaXNtMiBBUEkgZnVuY3Rpb25zIHRoYXQgbWF0Y2ggdGhlIEludGVyc2lsIGRvY3VtZW50YXRpb24gYXMgY2xvc2VseQorKiBhcyBpcyByZWFzb25hYmxlLiAgVGhlIG5leHQgaGlnaGVyIGxheWVyIGltcGxlbWVudHMgY29tbW9uIHNlcXVlbmNlcworKiBvZiBpbnZva2F0aW9ucyBvZiB0aGUgQVBJIGxheWVyIChlLmcuIHdyaXRlIHRvIGJhcCwgZm9sbG93ZWQgYnkgY21kKS4KKyoKKyogQ29tbW9uIHNlcXVlbmNlczoKKyogaGZhMzg0eF9kcnZyX3h4eAlIaWdoZXN0IGxldmVsIGFic3RyYWN0aW9ucyBwcm92aWRlZCBieSB0aGUKKyoJCQloZmEzODR4IGNvZGUuICBUaGV5IGFyZSBkcml2ZXIgZGVmaW5lZCB3cmFwcGVycworKgkJCWZvciBjb21tb24gc2VxdWVuY2VzLiAgVGhlc2UgZnVuY3Rpb25zIGdlbmVyYWxseQorKgkJCXVzZSB0aGUgc2VydmljZXMgb2YgdGhlIGxvd2VyIGxldmVscy4KKyoKKyogaGZhMzg0eF9kcnZyX3h4eGNvbmZpZyAgQW4gZXhhbXBsZSBvZiB0aGUgZHJ2ciBsZXZlbCBhYnN0cmFjdGlvbi4gVGhlc2UKKyoJCQlmdW5jdGlvbnMgYXJlIHdyYXBwZXJzIGZvciB0aGUgUklEIGdldC9zZXQKKyoJCQlzZXF1ZW5jZS4gVGhleSAJY2FsbCBjb3B5X1t0b3xmcm9tXV9iYXAoKSBhbmQKKyoJCQljbWRfYWNjZXNzKCkuCVRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIG9uIHRoZQorKgkJCVJJRHMgYW5kIGJ1ZmZlcnMgd2l0aG91dCB2YWxpZGF0aW9uLiAgVGhlIGNhbGxlcgorKgkJCWlzIHJlc3BvbnNpYmxlIGZvciB0aGF0LgorKgorKiBBUEkgd3JhcHBlciBmdW5jdGlvbnM6CisqIGhmYTM4NHhfY21kX3h4eAlmdW5jdGlvbnMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGUgZi93IGNvbW1hbmRzLgorKgkJCVRoZSBmdW5jdGlvbiBhcmd1bWVudHMgY29ycmVzcG9uZCB0byBlYWNoIGNvbW1hbmQKKyoJCQlhcmd1bWVudCwgZXZlbiBjb21tYW5kIGFyZ3VtZW50cyB0aGF0IGdldCBwYWNrZWQKKyoJCQlpbnRvIHNpbmdsZSByZWdpc3RlcnMuICBUaGVzZSBmdW5jdGlvbnMgX2p1c3RfCisqCQkJaXNzdWUgdGhlIGNvbW1hbmQgYnkgc2V0dGluZyB0aGUgY21kL3Bhcm0gcmVncworKgkJCSYgcmVhZGluZyB0aGUgc3RhdHVzL3Jlc3AgcmVncy4gIEFkZGl0aW9uYWwKKyoJCQlhY3Rpdml0aWVzIHJlcXVpcmVkIHRvIGZ1bGx5IHVzZSBhIGNvbW1hbmQKKyoJCQkocmVhZC93cml0ZSBmcm9tL3RvIGJhcCwgZ2V0L3NldCBpbnQgc3RhdHVzIGV0Yy4pCisqCQkJYXJlIGltcGxlbWVudGVkIHNlcGFyYXRlbHkuICBUaGluayBvZiB0aGVzZSBhcworKgkJCUMtY2FsbGFibGUgcHJpc20yIGNvbW1hbmRzLgorKgorKiBMb3dlc3QgTGF5ZXIgRnVuY3Rpb25zOgorKiBoZmEzODR4X2RvY21kX3h4eAlUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBzZXF1ZW5jZSByZXF1aXJlZAorKgkJCXRvIGlzc3VlIGFueSBwcmlzbTIgY29tbWFuZC4gIFByaW1hcmlseSB1c2VkIGJ5IHRoZQorKgkJCWhmYTM4NHhfY21kX3h4eCBmdW5jdGlvbnMuCisqCisqIGhmYTM4NHhfYmFwX3h4eAlCQVAgcmVhZC93cml0ZSBhY2Nlc3MgZnVuY3Rpb25zLgorKgkJCU5vdGU6IHdlIHVzdWFsbHkgdXNlIEJBUDAgZm9yIG5vbi1pbnRlcnJ1cHQgY29udGV4dAorKgkJCSBhbmQgQkFQMSBmb3IgaW50ZXJydXB0IGNvbnRleHQuCisqCisqIGhmYTM4NHhfZGxfeHh4CWRvd25sb2FkIHJlbGF0ZWQgZnVuY3Rpb25zLgorKgorKiBEcml2ZXIgU3RhdGUgSXNzdWVzOgorKiBOb3RlIHRoYXQgdGhlcmUgYXJlIHR3byBwYWlycyBvZiBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgdGhlCisqICdpbml0aWFsaXplZCcgYW5kICdydW5uaW5nJyBzdGF0ZXMgb2YgdGhlIGh3L01BQyBjb21iby4gIFRoZSBmb3VyCisqIGZ1bmN0aW9ucyBhcmUgY3JlYXRlKCksIGRlc3Ryb3koKSwgc3RhcnQoKSwgYW5kIHN0b3AoKS4gIGNyZWF0ZSgpCisqIHNldHMgdXAgdGhlIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZCB0byBzdXBwb3J0IHRoZSBoZmEzODR4XyoKKyogZnVuY3Rpb25zIGFuZCBkZXN0cm95KCkgY2xlYW5zIHRoZW0gdXAuICBUaGUgc3RhcnQoKSBmdW5jdGlvbiBnZXRzCisqIHRoZSBhY3R1YWwgaGFyZHdhcmUgcnVubmluZyBhbmQgZW5hYmxlcyB0aGUgaW50ZXJydXB0cy4gIFRoZSBzdG9wKCkKKyogZnVuY3Rpb24gc2h1dHMgdGhlIGhhcmR3YXJlIGRvd24uICBUaGUgc2VxdWVuY2Ugc2hvdWxkIGJlOgorKiBjcmVhdGUoKQorKiBzdGFydCgpCisqICAuCisqICAuICBEbyBpbnRlcmVzdGluZyB0aGluZ3Mgdy8gdGhlIGhhcmR3YXJlCisqICAuCisqIHN0b3AoKQorKiBkZXN0cm95KCkKKyoKKyogTm90ZSB0aGF0IGRlc3Ryb3koKSBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgY2FsbGluZyBzdG9wKCkgZmlyc3QuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisjZGVmaW5lIFdMQU5fREJWQVIJcHJpc20yX2RlYnVnCisKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisKKyNpbmNsdWRlICJ3bGFuX2NvbXBhdC5oIgorCisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorI2Vycm9yICJUaGlzIGZpbGUgaXMgc3BlY2lmaWMgdG8gVVNCIgorI2VuZGlmCisKKworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwxMCkKK3N0YXRpYyBpbnQKK3dhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShzdHJ1Y3QgY29tcGxldGlvbiAqeCkKK3sKKyAgaW50IHJldCA9IDA7CisKKyAgbWlnaHRfc2xlZXAoKTsKKworICBzcGluX2xvY2tfaXJxKCZ4LT53YWl0LmxvY2spOworICBpZiAoIXgtPmRvbmUpIHsKKyAgICBERUNMQVJFX1dBSVRRVUVVRSh3YWl0LCBjdXJyZW50KTsKKworICAgIHdhaXQuZmxhZ3MgfD0gV1FfRkxBR19FWENMVVNJVkU7CisgICAgX19hZGRfd2FpdF9xdWV1ZV90YWlsKCZ4LT53YWl0LCAmd2FpdCk7CisgICAgZG8geworICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisgICAgICAgIHJldCA9IC1FUkVTVEFSVFNZUzsKKyAgICAgICAgX19yZW1vdmVfd2FpdF9xdWV1ZSgmeC0+d2FpdCwgJndhaXQpOworICAgICAgICBnb3RvIG91dDsKKyAgICAgIH0KKyAgICAgIF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKKyAgICAgIHNwaW5fdW5sb2NrX2lycSgmeC0+d2FpdC5sb2NrKTsKKyAgICAgIHNjaGVkdWxlKCk7CisgICAgICBzcGluX2xvY2tfaXJxKCZ4LT53YWl0LmxvY2spOworICAgIH0gd2hpbGUgKCF4LT5kb25lKTsKKyAgICBfX3JlbW92ZV93YWl0X3F1ZXVlKCZ4LT53YWl0LCAmd2FpdCk7CisgIH0KKyAgeC0+ZG9uZS0tOworb3V0OgorICBzcGluX3VubG9ja19pcnEoJngtPndhaXQubG9jayk7CisKKyAgcmV0dXJuIHJldDsKK30KKyNlbmRpZgorCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDY5KQorc3RhdGljIHZvaWQKK3VzYl9pbml0X3VyYihzdHJ1Y3QgdXJiICp1cmIpCit7CisJbWVtc2V0KHVyYiwgMCwgc2l6ZW9mKCp1cmIpKTsKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw1LDApIC8qIHR1bmUgbWUhICovCisJdXJiLT5jb3VudCA9IChhdG9taWNfdClBVE9NSUNfSU5JVCgxKTsKKyNlbmRpZgorCXNwaW5fbG9ja19pbml0KCZ1cmItPmxvY2spOworfQorI2VuZGlmCisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw1LDApIC8qIHR1bmUgbWUhICovCisjICBkZWZpbmUgU1VCTUlUX1VSQih1LGYpICB1c2Jfc3VibWl0X3VyYih1LGYpCisjZWxzZQorIyAgZGVmaW5lIFNVQk1JVF9VUkIodSxmKSAgdXNiX3N1Ym1pdF91cmIodSkKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaW5jbHVkZSAicDgwMjExdHlwZXMuaCIKKyNpbmNsdWRlICJwODAyMTFoZHIuaCIKKyNpbmNsdWRlICJwODAyMTFtZ210LmgiCisjaW5jbHVkZSAicDgwMjExY29udi5oIgorI2luY2x1ZGUgInA4MDIxMW1zZy5oIgorI2luY2x1ZGUgInA4MDIxMW5ldGRldi5oIgorI2luY2x1ZGUgInA4MDIxMXJlcS5oIgorI2luY2x1ZGUgInA4MDIxMW1ldGFkZWYuaCIKKyNpbmNsdWRlICJwODAyMTFtZXRhc3RydWN0LmgiCisjaW5jbHVkZSAiaGZhMzg0eC5oIgorI2luY2x1ZGUgInByaXNtMm1nbXQuaCIKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIENvbnN0YW50cyAqLworCitlbnVtIGNtZF9tb2RlCit7CisgIERPV0FJVCA9IDAsCisgIERPQVNZTkMKK307Cit0eXBlZGVmIGVudW0gY21kX21vZGUgQ01EX01PREU7CisKKyNkZWZpbmUgVEhST1RUTEVfSklGRklFUwkoSFovOCkKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIE1hY3JvcyAqLworCisjZGVmaW5lIFJPVU5EVVA2NChhKSAoKChhKSs2MykmfjYzKQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgVHlwZXMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFN0YXRpYyBEZWZpbml0aW9ucyAqLworZXh0ZXJuIGludCBwcmlzbTJfZGVidWc7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworI2lmZGVmIERFQlVHX1VTQgorc3RhdGljIHZvaWQKK2RicHJpbnRfdXJiKHN0cnVjdCB1cmIqIHVyYik7CisjZW5kaWYKKworc3RhdGljIHZvaWQKK2hmYTM4NHhfaW50X3J4bW9uaXRvcigKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJaGZhMzg0eF91c2Jfcnhmcm1fdCAqcnhmcm0pOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JfZGVmZXIoc3RydWN0IHdvcmtfc3RydWN0ICpkYXRhKTsKKworc3RhdGljIGludAorc3VibWl0X3J4X3VyYihoZmEzODR4X3QgKmh3LCBnZnBfdCBmbGFncyk7CisKK3N0YXRpYyBpbnQKK3N1Ym1pdF90eF91cmIoaGZhMzg0eF90ICpodywgc3RydWN0IHVyYiAqdHhfdXJiLCBnZnBfdCBmbGFncyk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIENhbGxiYWNrcyAqLworI2lmZGVmIFVSQl9PTkxZX0NBTExCQUNLCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JvdXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsKK3N0YXRpYyB2b2lkCitoZmEzODR4X2N0bHhvdXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsKK3N0YXRpYyB2b2lkCitoZmEzODR4X3VzYmluX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYik7CisjZWxzZQorc3RhdGljIHZvaWQKK2hmYTM4NHhfdXNib3V0X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworc3RhdGljIHZvaWQKK2hmYTM4NHhfY3RseG91dF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK3N0YXRpYyB2b2lkCitoZmEzODR4X3VzYmluX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworI2VuZGlmCisKK3N0YXRpYyB2b2lkCitoZmEzODR4X3VzYmluX3R4Y29tcGwod2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X3VzYmluX3QgKnVzYmluKTsKKworc3RhdGljIHZvaWQKK2hmYTM4NHhfdXNiaW5fcngod2xhbmRldmljZV90ICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworc3RhdGljIHZvaWQKK2hmYTM4NHhfdXNiaW5faW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfdXNiaW5fdCAqdXNiaW4pOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JvdXRfdHgod2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X3VzYm91dF90ICp1c2JvdXQpOworCitzdGF0aWMgdm9pZCBoZmEzODR4X3VzYmluX2N0bHgoaGZhMzg0eF90ICpodywgaGZhMzg0eF91c2Jpbl90ICp1c2JpbiwKKwkJCSAgICAgICBpbnQgdXJiX3N0YXR1cyk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEZ1bmN0aW9ucyB0byBzdXBwb3J0IHRoZSBwcmlzbTIgdXNiIGNvbW1hbmQgcXVldWUgKi8KKworc3RhdGljIHZvaWQKK2hmYTM4NHhfdXNiY3RseHFfcnVuKGhmYTM4NHhfdCAqaHcpOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4X3JlcXRpbWVyZm4odW5zaWduZWQgbG9uZyBkYXRhKTsKKworc3RhdGljIHZvaWQKK2hmYTM4NHhfdXNiY3RseF9yZXNwdGltZXJmbih1bnNpZ25lZCBsb25nIGRhdGEpOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JfdGhyb3R0bGVmbih1bnNpZ25lZCBsb25nIGRhdGEpOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4X2NvbXBsZXRpb25fdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpOworCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4X3JlYXBlcl90YXNrKHVuc2lnbmVkIGxvbmcgZGF0YSk7CisKK3N0YXRpYyBpbnQKK2hmYTM4NHhfdXNiY3RseF9zdWJtaXQoaGZhMzg0eF90ICpodywgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpOworCitzdGF0aWMgdm9pZAordW5sb2NrZWRfdXNiY3RseF9jb21wbGV0ZShoZmEzODR4X3QgKmh3LCBoZmEzODR4X3VzYmN0bHhfdCAqY3RseCk7CisKK3N0cnVjdCB1c2JjdGx4X2NvbXBsZXRvcgoreworCWludCAoKmNvbXBsZXRlKShzdHJ1Y3QgdXNiY3RseF9jb21wbGV0b3IqKTsKK307Cit0eXBlZGVmIHN0cnVjdCB1c2JjdGx4X2NvbXBsZXRvciB1c2JjdGx4X2NvbXBsZXRvcl90OworCitzdGF0aWMgaW50CitoZmEzODR4X3VzYmN0bHhfY29tcGxldGVfc3luYyhoZmEzODR4X3QgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JjdGx4X2NvbXBsZXRvcl90ICpjb21wbGV0b3IpOworCitzdGF0aWMgaW50Cit1bmxvY2tlZF91c2JjdGx4X2NhbmNlbF9hc3luYyhoZmEzODR4X3QgKmh3LCBoZmEzODR4X3VzYmN0bHhfdCAqY3RseCk7CisKK3N0YXRpYyB2b2lkCitoZmEzODR4X2NiX3N0YXR1cyhoZmEzODR4X3QgKmh3LCBjb25zdCBoZmEzODR4X3VzYmN0bHhfdCAqY3RseCk7CisKK3N0YXRpYyB2b2lkCitoZmEzODR4X2NiX3JyaWQoaGZhMzg0eF90ICpodywgY29uc3QgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpOworCitzdGF0aWMgaW50Cit1c2JjdGx4X2dldF9zdGF0dXMoY29uc3QgaGZhMzg0eF91c2JfY21kcmVzcF90ICpjbWRyZXNwLAorICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfY21kcmVzdWx0X3QgKnJlc3VsdCk7CisKK3N0YXRpYyB2b2lkCit1c2JjdGx4X2dldF9ycmlkcmVzdWx0KGNvbnN0IGhmYTM4NHhfdXNiX3JyaWRyZXNwX3QgKnJyaWRyZXNwLAorICAgICAgICAgICAgICAgICAgICAgICBoZmEzODR4X3JyaWRyZXN1bHRfdCAqcmVzdWx0KTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogTG93IGxldmVsIHJlcS9yZXNwIENUTFggZm9ybWF0dGVycyBhbmQgc3VibWl0dGVycyAqLworc3RhdGljIGludAoraGZhMzg0eF9kb2NtZCgKKwloZmEzODR4X3QgKmh3LAorCUNNRF9NT0RFIG1vZGUsCisJaGZhMzg0eF9tZXRhY21kX3QgKmNtZCwKKwljdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpOworCitzdGF0aWMgaW50CitoZmEzODR4X2RvcnJpZCgKKwloZmEzODR4X3QgKmh3LAorCUNNRF9NT0RFIG1vZGUsCisJVUlOVDE2CXJpZCwKKwl2b2lkCSpyaWRkYXRhLAorCVVJTlQJcmlkZGF0YWxlbiwKKwljdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpOworCitzdGF0aWMgaW50CitoZmEzODR4X2Rvd3JpZCgKKwloZmEzODR4X3QgKmh3LAorCUNNRF9NT0RFIG1vZGUsCisJVUlOVDE2CXJpZCwKKwl2b2lkCSpyaWRkYXRhLAorCVVJTlQJcmlkZGF0YWxlbiwKKwljdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpOworCitzdGF0aWMgaW50CitoZmEzODR4X2Rvcm1lbSgKKwloZmEzODR4X3QgKmh3LAorCUNNRF9NT0RFIG1vZGUsCisJVUlOVDE2CXBhZ2UsCisJVUlOVDE2CW9mZnNldCwKKwl2b2lkCSpkYXRhLAorCVVJTlQJbGVuLAorCWN0bHhfY21kY2JfdCBjbWRjYiwKKwljdGx4X3VzZXJjYl90IHVzZXJjYiwKKwl2b2lkCSp1c2VyY2JfZGF0YSk7CisKK3N0YXRpYyBpbnQKK2hmYTM4NHhfZG93bWVtKAorCWhmYTM4NHhfdCAqaHcsCisJQ01EX01PREUgbW9kZSwKKwlVSU5UMTYJcGFnZSwKKwlVSU5UMTYJb2Zmc2V0LAorCXZvaWQJKmRhdGEsCisJVUlOVAlsZW4sCisJY3RseF9jbWRjYl90IGNtZGNiLAorCWN0bHhfdXNlcmNiX3QgdXNlcmNiLAorCXZvaWQJKnVzZXJjYl9kYXRhKTsKKworc3RhdGljIGludAoraGZhMzg0eF9pc2dvb2RfcGRyY29kZShVSU5UMTYgcGRyY29kZSk7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWZpbml0aW9ucyAqLworc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBjdGx4c3RyKENUTFhfU1RBVEUgcykKK3sKKwlzdGF0aWMgY29uc3QgY2hhciogY3RseF9zdHJbXSA9IHsKKwkJIkluaXRpYWwgc3RhdGUiLAorCQkiQ29tcGxldGUiLAorCQkiUmVxdWVzdCBmYWlsZWQiLAorCQkiUmVxdWVzdCBwZW5kaW5nIiwKKwkJIlJlcXVlc3QgcGFja2V0IHN1Ym1pdHRlZCIsCisJCSJSZXF1ZXN0IHBhY2tldCBjb21wbGV0ZWQiLAorCQkiUmVzcG9uc2UgcGFja2V0IGNvbXBsZXRlZCIKKwl9OworCisJcmV0dXJuIGN0bHhfc3RyW3NdOworfTsKKworCitzdGF0aWMgaW5saW5lIGhmYTM4NHhfdXNiY3RseF90KgorZ2V0X2FjdGl2ZV9jdGx4KGhmYTM4NHhfdCAqaHcpCit7CisJcmV0dXJuIGxpc3RfZW50cnkoaHctPmN0bHhxLmFjdGl2ZS5uZXh0LCBoZmEzODR4X3VzYmN0bHhfdCwgbGlzdCk7Cit9CisKKworI2lmZGVmIERFQlVHX1VTQgordm9pZAorZGJwcmludF91cmIoc3RydWN0IHVyYiogdXJiKQoreworCVdMQU5fTE9HX0RFQlVHKDMsInVyYi0+cGlwZT0weCUwOHhcbiIsIHVyYi0+cGlwZSk7CisJV0xBTl9MT0dfREVCVUcoMywidXJiLT5zdGF0dXM9MHglMDh4XG4iLCB1cmItPnN0YXR1cyk7CisJV0xBTl9MT0dfREVCVUcoMywidXJiLT50cmFuc2Zlcl9mbGFncz0weCUwOHhcbiIsIHVyYi0+dHJhbnNmZXJfZmxhZ3MpOworCVdMQU5fTE9HX0RFQlVHKDMsInVyYi0+dHJhbnNmZXJfYnVmZmVyPTB4JTA4eFxuIiwgKFVJTlQpdXJiLT50cmFuc2Zlcl9idWZmZXIpOworCVdMQU5fTE9HX0RFQlVHKDMsInVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aD0weCUwOHhcbiIsIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCk7CisJV0xBTl9MT0dfREVCVUcoMywidXJiLT5hY3R1YWxfbGVuZ3RoPTB4JTA4eFxuIiwgdXJiLT5hY3R1YWxfbGVuZ3RoKTsKKwlXTEFOX0xPR19ERUJVRygzLCJ1cmItPmJhbmR3aWR0aD0weCUwOHhcbiIsIHVyYi0+YmFuZHdpZHRoKTsKKwlXTEFOX0xPR19ERUJVRygzLCJ1cmItPnNldHVwX3BhY2tldChjdGwpPTB4JTA4eFxuIiwgKFVJTlQpdXJiLT5zZXR1cF9wYWNrZXQpOworCVdMQU5fTE9HX0RFQlVHKDMsInVyYi0+c3RhcnRfZnJhbWUoaXNvL2lycSk9MHglMDh4XG4iLCB1cmItPnN0YXJ0X2ZyYW1lKTsKKwlXTEFOX0xPR19ERUJVRygzLCJ1cmItPmludGVydmFsKGlycSk9MHglMDh4XG4iLCB1cmItPmludGVydmFsKTsKKwlXTEFOX0xPR19ERUJVRygzLCJ1cmItPmVycm9yX2NvdW50KGlzbyk9MHglMDh4XG4iLCB1cmItPmVycm9yX2NvdW50KTsKKwlXTEFOX0xPR19ERUJVRygzLCJ1cmItPnRpbWVvdXQ9MHglMDh4XG4iLCB1cmItPnRpbWVvdXQpOworCVdMQU5fTE9HX0RFQlVHKDMsInVyYi0+Y29udGV4dD0weCUwOHhcbiIsIChVSU5UKXVyYi0+Y29udGV4dCk7CisJV0xBTl9MT0dfREVCVUcoMywidXJiLT5jb21wbGV0ZT0weCUwOHhcbiIsIChVSU5UKXVyYi0+Y29tcGxldGUpOworfQorI2VuZGlmCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHN1Ym1pdF9yeF91cmIKKyoKKyogTGlzdGVuIGZvciBpbnB1dCBkYXRhIG9uIHRoZSBCVUxLLUlOIHBpcGUuIElmIHRoZSBwaXBlIGhhcworKiBzdGFsbGVkIHRoZW4gc2NoZWR1bGUgaXQgdG8gYmUgcmVzZXQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3QKKyoJbWVtZmxhZ3MJbWVtb3J5IGFsbG9jYXRpb24gZmxhZ3MKKyoKKyogUmV0dXJuczoKKyoJZXJyb3IgY29kZSBmcm9tIHN1Ym1pc3Npb24KKyoKKyogQ2FsbCBjb250ZXh0OgorKglBbnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAorc3VibWl0X3J4X3VyYihoZmEzODR4X3QgKmh3LCBnZnBfdCBtZW1mbGFncykKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCWludCByZXN1bHQ7CisKKwlEQkZFTlRFUjsKKworCXNrYiA9IGRldl9hbGxvY19za2Ioc2l6ZW9mKGhmYTM4NHhfdXNiaW5fdCkpOworCWlmIChza2IgPT0gTlVMTCkgeworCQlyZXN1bHQgPSAtRU5PTUVNOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogUG9zdCB0aGUgSU4gdXJiICovCisJdXNiX2ZpbGxfYnVsa191cmIoJmh3LT5yeF91cmIsIGh3LT51c2IsCisJICAgICAgICAgICAgICBody0+ZW5kcF9pbiwKKwkgICAgICAgICAgICAgIHNrYi0+ZGF0YSwgc2l6ZW9mKGhmYTM4NHhfdXNiaW5fdCksCisJICAgICAgICAgICAgICBoZmEzODR4X3VzYmluX2NhbGxiYWNrLCBody0+d2xhbmRldik7CisKKwlody0+cnhfdXJiX3NrYiA9IHNrYjsKKworCXJlc3VsdCA9IC1FTk9MSU5LOworCWlmICggIWh3LT53bGFuZGV2LT5od3JlbW92ZWQgJiYgIXRlc3RfYml0KFdPUktfUlhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpKSB7CisJCXJlc3VsdCA9IFNVQk1JVF9VUkIoJmh3LT5yeF91cmIsIG1lbWZsYWdzKTsKKworCQkvKiBDaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gcmVzZXQgdGhlIFJYIHBpcGUgKi8KKwkJaWYgKHJlc3VsdCA9PSAtRVBJUEUpIHsKKwkJCVdMQU5fTE9HX1dBUk5JTkcoIiVzIHJ4IHBpcGUgc3RhbGxlZDogcmVxdWVzdGluZyByZXNldFxuIiwKKwkJCSAgICAgICAgICAgICAgICAgaHctPndsYW5kZXYtPm5ldGRldi0+bmFtZSk7CisJCQlpZiAoICF0ZXN0X2FuZF9zZXRfYml0KFdPUktfUlhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpICkKKwkJCQlzY2hlZHVsZV93b3JrKCZody0+dXNiX3dvcmspOworCQl9CisJfQorCisJLyogRG9uJ3QgbGVhayBtZW1vcnkgaWYgYW55dGhpbmcgc2hvdWxkIGdvIHdyb25nICovCisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwkJaHctPnJ4X3VyYl9za2IgPSBOVUxMOworCX0KKworIGRvbmU6CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBzdWJtaXRfdHhfdXJiCisqCisqIFByZXBhcmVzIGFuZCBzdWJtaXRzIHRoZSBVUkIgb2YgdHJhbnNtaXR0ZWQgZGF0YS4gSWYgdGhlCisqIHN1Ym1pc3Npb24gZmFpbHMgdGhlbiBpdCB3aWxsIHNjaGVkdWxlIHRoZSBvdXRwdXQgcGlwZSB0bworKiBiZSByZXNldC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdAorKgl0eF91cmIJCVVSQiBvZiBkYXRhIGZvciB0cmFubWlzc2lvbgorKgltZW1mbGFncwltZW1vcnkgYWxsb2NhdGlvbiBmbGFncworKgorKiBSZXR1cm5zOgorKgllcnJvciBjb2RlIGZyb20gc3VibWlzc2lvbgorKgorKiBDYWxsIGNvbnRleHQ6CisqCUFueQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50CitzdWJtaXRfdHhfdXJiKGhmYTM4NHhfdCAqaHcsIHN0cnVjdCB1cmIgKnR4X3VyYiwgZ2ZwX3QgbWVtZmxhZ3MpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGh3LT53bGFuZGV2LT5uZXRkZXY7CisJaW50IHJlc3VsdDsKKworCURCRkVOVEVSOworCisJcmVzdWx0ID0gLUVOT0xJTks7CisJaWYgKCBuZXRpZl9ydW5uaW5nKG5ldGRldikgKSB7CisKKwkJaWYgKCAhaHctPndsYW5kZXYtPmh3cmVtb3ZlZCAmJiAhdGVzdF9iaXQoV09SS19UWF9IQUxULCAmaHctPnVzYl9mbGFncykgKSB7CisJCQlyZXN1bHQgPSBTVUJNSVRfVVJCKHR4X3VyYiwgbWVtZmxhZ3MpOworCisJCQkvKiBUZXN0IHdoZXRoZXIgd2UgbmVlZCB0byByZXNldCB0aGUgVFggcGlwZSAqLworCQkJaWYgKHJlc3VsdCA9PSAtRVBJUEUpIHsKKwkJCQlXTEFOX0xPR19XQVJOSU5HKCIlcyB0eCBwaXBlIHN0YWxsZWQ6IHJlcXVlc3RpbmcgcmVzZXRcbiIsCisJCQkJICAgICAgICAgICAgICAgICBuZXRkZXYtPm5hbWUpOworCQkJCXNldF9iaXQoV09SS19UWF9IQUxULCAmaHctPnVzYl9mbGFncyk7CisJCQkJc2NoZWR1bGVfd29yaygmaHctPnVzYl93b3JrKTsKKwkJCX0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsKKwkJCQluZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7CisJCQl9CisJCX0KKwl9CisKKwlEQkZFWElUOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM5NHhfdXNiX2RlZmVyCisqCisqIFRoZXJlIGFyZSBzb21lIHRoaW5ncyB0aGF0IHRoZSBVU0Igc3RhY2sgY2Fubm90IGRvIHdoaWxlCisqIGluIGludGVycnVwdCBjb250ZXh0LCBzbyB3ZSBhcnJhbmdlIHRoaXMgZnVuY3Rpb24gdG8gcnVuCisqIGluIHByb2Nlc3MgY29udGV4dC4KKyoKKyogQXJndW1lbnRzOgorKglodwlkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIChieSBkZXNpZ24pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkCitoZmEzODR4X3VzYl9kZWZlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmRhdGEpCit7CisJaGZhMzg0eF90ICpodyA9IGNvbnRhaW5lcl9vZihkYXRhLCBzdHJ1Y3QgaGZhMzg0eCwgdXNiX3dvcmspOworCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBody0+d2xhbmRldi0+bmV0ZGV2OworCisJREJGRU5URVI7CisKKwkvKiBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIHJlc2V0IGFueXRoaW5nIGlmIHRoZSBwbHVnCisJICogaGFzIGJlZW4gcHVsbGVkIC4uLgorCSAqLworCWlmICggaHctPndsYW5kZXYtPmh3cmVtb3ZlZCApIHsKKwkJREJGRVhJVDsKKwkJcmV0dXJuOworCX0KKworCS8qIFJlY2VwdGlvbiBoYXMgc3RvcHBlZDogdHJ5IHRvIHJlc2V0IHRoZSBpbnB1dCBwaXBlICovCisJaWYgKHRlc3RfYml0KFdPUktfUlhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpKSB7CisJCWludCByZXQ7CisKKwkJdXNiX2tpbGxfdXJiKCZody0+cnhfdXJiKTsgIC8qIENhbm5vdCBiZSBob2xkaW5nIHNwaW5sb2NrISAqLworCisJCXJldCA9IHVzYl9jbGVhcl9oYWx0KGh3LT51c2IsIGh3LT5lbmRwX2luKTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiRmFpbGVkIHRvIGNsZWFyIHJ4IHBpcGUgZm9yICVzOiBlcnI9JWRcbiIsCisJCQkgICAgICAgbmV0ZGV2LT5uYW1lLCByZXQpOworCQl9IGVsc2UgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAiJXMgcnggcGlwZSByZXNldCBjb21wbGV0ZS5cbiIsCisJCQkgICAgICAgICAgICAgICAgIG5ldGRldi0+bmFtZSk7CisJCQljbGVhcl9iaXQoV09SS19SWF9IQUxULCAmaHctPnVzYl9mbGFncyk7CisJCQlzZXRfYml0KFdPUktfUlhfUkVTVU1FLCAmaHctPnVzYl9mbGFncyk7CisJCX0KKwl9CisKKwkvKiBSZXN1bWUgcmVjZWl2aW5nIGRhdGEgYmFjayBmcm9tIHRoZSBkZXZpY2UuICovCisJaWYgKCB0ZXN0X2JpdChXT1JLX1JYX1JFU1VNRSwgJmh3LT51c2JfZmxhZ3MpICkgeworCQlpbnQgcmV0OworCisJCXJldCA9IHN1Ym1pdF9yeF91cmIoaHcsIEdGUF9LRVJORUwpOworCQlpZiAocmV0ICE9IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJGYWlsZWQgdG8gcmVzdW1lICVzIHJ4IHBpcGUuXG4iLCBuZXRkZXYtPm5hbWUpOworCQl9IGVsc2UgeworCQkJY2xlYXJfYml0KFdPUktfUlhfUkVTVU1FLCAmaHctPnVzYl9mbGFncyk7CisJCX0KKwl9CisKKwkvKiBUcmFuc21pc3Npb24gaGFzIHN0b3BwZWQ6IHRyeSB0byByZXNldCB0aGUgb3V0cHV0IHBpcGUgKi8KKwlpZiAodGVzdF9iaXQoV09SS19UWF9IQUxULCAmaHctPnVzYl9mbGFncykpIHsKKwkJaW50IHJldDsKKworCQl1c2Jfa2lsbF91cmIoJmh3LT50eF91cmIpOworCQlyZXQgPSB1c2JfY2xlYXJfaGFsdChody0+dXNiLCBody0+ZW5kcF9vdXQpOworCQlpZiAocmV0ICE9IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJGYWlsZWQgdG8gY2xlYXIgdHggcGlwZSBmb3IgJXM6IGVycj0lZFxuIiwKKwkJCSAgICAgICBuZXRkZXYtPm5hbWUsIHJldCk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoS0VSTl9JTkZPICIlcyB0eCBwaXBlIHJlc2V0IGNvbXBsZXRlLlxuIiwKKwkJCSAgICAgICAgICAgICAgICAgbmV0ZGV2LT5uYW1lKTsKKwkJCWNsZWFyX2JpdChXT1JLX1RYX0hBTFQsICZody0+dXNiX2ZsYWdzKTsKKwkJCXNldF9iaXQoV09SS19UWF9SRVNVTUUsICZody0+dXNiX2ZsYWdzKTsKKworCQkJLyogU3RvcHBpbmcgdGhlIEJVTEstT1VUIHBpcGUgYWxzbyBibG9ja2VkCisJCQkgKiB1cyBmcm9tIHNlbmRpbmcgYW55IG1vcmUgQ1RMWCBVUkJzLCBzbworCQkJICogd2UgbmVlZCB0byByZS1ydW4gb3VyIHF1ZXVlIC4uLgorCQkJICovCisJCQloZmEzODR4X3VzYmN0bHhxX3J1bihodyk7CisJCX0KKwl9CisKKwkvKiBSZXN1bWUgdHJhbnNtaXR0aW5nLiAqLworCWlmICggdGVzdF9hbmRfY2xlYXJfYml0KFdPUktfVFhfUkVTVU1FLCAmaHctPnVzYl9mbGFncykgKSB7CisJCXA4MDIxMW5ldGRldl93YWtlX3F1ZXVlKGh3LT53bGFuZGV2KTsKKwl9CisKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NyZWF0ZQorKgorKiBTZXRzIHVwIHRoZSBoZmEzODR4X3QgZGF0YSBzdHJ1Y3R1cmUgZm9yIHVzZS4gIE5vdGUgdGhpcworKiBkb2VzIF9ub3RfIGludGlhbGl6ZSB0aGUgYWN0dWFsIGhhcmR3YXJlLCBqdXN0IHRoZSBkYXRhIHN0cnVjdHVyZXMKKyogd2UgdXNlIHRvIGtlZXAgdHJhY2sgb2YgaXRzIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWlycQkJZGV2aWNlIGlycSBudW1iZXIKKyoJaW9iYXNlCQlpL28gYmFzZSBhZGRyZXNzIGZvciByZWdpc3RlciBhY2Nlc3MKKyoJbWVtYmFzZQkJbWVtb3J5IGJhc2UgYWRkcmVzcyBmb3IgcmVnaXN0ZXIgYWNjZXNzCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZAoraGZhMzg0eF9jcmVhdGUoIGhmYTM4NHhfdCAqaHcsIHN0cnVjdCB1c2JfZGV2aWNlICp1c2IpCit7CisJREJGRU5URVI7CisKKwltZW1zZXQoaHcsIDAsIHNpemVvZihoZmEzODR4X3QpKTsKKwlody0+dXNiID0gdXNiOworCisJLyogc2V0IHVwIHRoZSBlbmRwb2ludHMgKi8KKwlody0+ZW5kcF9pbiA9IHVzYl9yY3ZidWxrcGlwZSh1c2IsIDEpOworCWh3LT5lbmRwX291dCA9IHVzYl9zbmRidWxrcGlwZSh1c2IsIDIpOworCisJLyogU2V0IHVwIHRoZSB3YWl0cSAqLworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmh3LT5jbWRxKTsKKworCS8qIEluaXRpYWxpemUgdGhlIGNvbW1hbmQgcXVldWUgKi8KKwlzcGluX2xvY2tfaW5pdCgmaHctPmN0bHhxLmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZody0+Y3RseHEucGVuZGluZyk7CisJSU5JVF9MSVNUX0hFQUQoJmh3LT5jdGx4cS5hY3RpdmUpOworCUlOSVRfTElTVF9IRUFEKCZody0+Y3RseHEuY29tcGxldGluZyk7CisJSU5JVF9MSVNUX0hFQUQoJmh3LT5jdGx4cS5yZWFwYWJsZSk7CisKKwkvKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBxdWV1ZSAqLworCXNrYl9xdWV1ZV9oZWFkX2luaXQoJmh3LT5hdXRocSk7CisKKwl0YXNrbGV0X2luaXQoJmh3LT5yZWFwZXJfYmgsCisJICAgICAgICAgICAgIGhmYTM4NHhfdXNiY3RseF9yZWFwZXJfdGFzaywKKwkgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpaHcpOworCXRhc2tsZXRfaW5pdCgmaHctPmNvbXBsZXRpb25fYmgsCisJICAgICAgICAgICAgIGhmYTM4NHhfdXNiY3RseF9jb21wbGV0aW9uX3Rhc2ssCisJICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWh3KTsKKwlJTklUX1dPUksyKCZody0+bGlua19iaCwgcHJpc20yc3RhX3Byb2Nlc3NpbmdfZGVmZXIpOworCUlOSVRfV09SSzIoJmh3LT51c2Jfd29yaywgaGZhMzg0eF91c2JfZGVmZXIpOworCisJaW5pdF90aW1lcigmaHctPnRocm90dGxlKTsKKwlody0+dGhyb3R0bGUuZnVuY3Rpb24gPSBoZmEzODR4X3VzYl90aHJvdHRsZWZuOworCWh3LT50aHJvdHRsZS5kYXRhID0gKHVuc2lnbmVkIGxvbmcpaHc7CisKKwlpbml0X3RpbWVyKCZody0+cmVzcHRpbWVyKTsKKwlody0+cmVzcHRpbWVyLmZ1bmN0aW9uID0gaGZhMzg0eF91c2JjdGx4X3Jlc3B0aW1lcmZuOworCWh3LT5yZXNwdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKWh3OworCisJaW5pdF90aW1lcigmaHctPnJlcXRpbWVyKTsKKwlody0+cmVxdGltZXIuZnVuY3Rpb24gPSBoZmEzODR4X3VzYmN0bHhfcmVxdGltZXJmbjsKKwlody0+cmVxdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKWh3OworCisJdXNiX2luaXRfdXJiKCZody0+cnhfdXJiKTsKKwl1c2JfaW5pdF91cmIoJmh3LT50eF91cmIpOworCXVzYl9pbml0X3VyYigmaHctPmN0bHhfdXJiKTsKKworCWh3LT5saW5rX3N0YXR1cyA9IEhGQTM4NHhfTElOS19OT1RDT05ORUNURUQ7CisJaHctPnN0YXRlID0gSEZBMzg0eF9TVEFURV9JTklUOworCisgICAgICAgIElOSVRfV09SSzIoJmh3LT5jb21tc3F1YWxfYmgsIHByaXNtMnN0YV9jb21tc3F1YWxfZGVmZXIpOworCWluaXRfdGltZXIoJmh3LT5jb21tc3F1YWxfdGltZXIpOworCWh3LT5jb21tc3F1YWxfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBodzsKKwlody0+Y29tbXNxdWFsX3RpbWVyLmZ1bmN0aW9uID0gcHJpc20yc3RhX2NvbW1zcXVhbF90aW1lcjsKKworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZGVzdHJveQorKgorKiBQYXJ0bmVyIHRvIGhmYTM4NHhfY3JlYXRlKCkuICBUaGlzIGZ1bmN0aW9uIGNsZWFucyB1cCB0aGUgaHcKKyogc3RydWN0dXJlIHNvIHRoYXQgaXQgY2FuIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgdXNpbmcgYSBzaW1wbGUKKyoga2ZyZWUuICBDdXJyZW50bHksIHRoaXMgZnVuY3Rpb24gaXMganVzdCBhIHBsYWNlaG9sZGVyLiAgSWYsIGF0IHNvbWUKKyogcG9pbnQgaW4gdGhlIGZ1dHVyZSwgYW4gaHcgaW4gdGhlICdzaHV0ZG93bicgc3RhdGUgcmVxdWlyZXMgYSAnZGVlcCcKKyoga2ZyZWUsIHRoaXMgaXMgd2hlcmUgaXQgc2hvdWxkIGJlIGRvbmUuICBOb3RlIHRoYXQgaWYgdGhpcyBmdW5jdGlvbgorKiBpcyBjYWxsZWQgb24gYSBfcnVubmluZ18gaHcgc3RydWN0dXJlLCB0aGUgZHJ2cl9zdG9wKCkgZnVuY3Rpb24gaXMKKyogY2FsbGVkLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcsIHRoaXMgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gZmFpbC4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZAoraGZhMzg0eF9kZXN0cm95KCBoZmEzODR4X3QgKmh3KQoreworCXN0cnVjdCBza19idWZmICpza2I7CisKKwlEQkZFTlRFUjsKKworCWlmICggaHctPnN0YXRlID09IEhGQTM4NHhfU1RBVEVfUlVOTklORyApIHsKKwkJaGZhMzg0eF9kcnZyX3N0b3AoaHcpOworCX0KKwlody0+c3RhdGUgPSBIRkEzODR4X1NUQVRFX1BSRUlOSVQ7CisKKwlpZiAoaHctPnNjYW5yZXN1bHRzKSB7CisJCWtmcmVlKGh3LT5zY2FucmVzdWx0cyk7CisJCWh3LT5zY2FucmVzdWx0cyA9IE5VTEw7CisJfQorCisJLyogTm93IHRvIGNsZWFuIG91dCB0aGUgYXV0aCBxdWV1ZSAqLworICAgICAgICB3aGlsZSAoIChza2IgPSBza2JfZGVxdWV1ZSgmaHctPmF1dGhxKSkgKSB7CisgICAgICAgICAgICAgICAgZGV2X2tmcmVlX3NrYihza2IpOworICAgICAgICB9CisKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgaGZhMzg0eF91c2JjdGx4X3QqIHVzYmN0bHhfYWxsb2Modm9pZCkKK3sKKwloZmEzODR4X3VzYmN0bHhfdCAqY3RseDsKKworCWN0bHggPSBrbWFsbG9jKHNpemVvZigqY3RseCksIGluX2ludGVycnVwdCgpID8gR0ZQX0FUT01JQyA6IEdGUF9LRVJORUwpOworCWlmIChjdGx4ICE9IE5VTEwpCisJeworCQltZW1zZXQoY3RseCwgMCwgc2l6ZW9mKCpjdGx4KSk7CisJCWluaXRfY29tcGxldGlvbigmY3RseC0+ZG9uZSk7CisJfQorCisJcmV0dXJuIGN0bHg7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50Cit1c2JjdGx4X2dldF9zdGF0dXMoY29uc3QgaGZhMzg0eF91c2JfY21kcmVzcF90ICpjbWRyZXNwLAorICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfY21kcmVzdWx0X3QgKnJlc3VsdCkKK3sKKwlEQkZFTlRFUjsKKworCXJlc3VsdC0+c3RhdHVzID0gaGZhMzg0eDJob3N0XzE2KGNtZHJlc3AtPnN0YXR1cyk7CisJcmVzdWx0LT5yZXNwMCA9IGhmYTM4NHgyaG9zdF8xNihjbWRyZXNwLT5yZXNwMCk7CisJcmVzdWx0LT5yZXNwMSA9IGhmYTM4NHgyaG9zdF8xNihjbWRyZXNwLT5yZXNwMSk7CisJcmVzdWx0LT5yZXNwMiA9IGhmYTM4NHgyaG9zdF8xNihjbWRyZXNwLT5yZXNwMik7CisKKwlXTEFOX0xPR19ERUJVRyg0LCAiY21kcmVzdWx0OnN0YXR1cz0weCUwNHggIgorCSAgICAgICAgICAgICAgICAgICJyZXNwMD0weCUwNHggcmVzcDE9MHglMDR4IHJlc3AyPTB4JTA0eFxuIiwKKwkgICAgICAgICAgICAgICAgcmVzdWx0LT5zdGF0dXMsCisJICAgICAgICAgICAgICAgIHJlc3VsdC0+cmVzcDAsCisJICAgICAgICAgICAgICAgIHJlc3VsdC0+cmVzcDEsCisJICAgICAgICAgICAgICAgIHJlc3VsdC0+cmVzcDIpOworCisJREJGRVhJVDsKKwlyZXR1cm4gKHJlc3VsdC0+c3RhdHVzICYgSEZBMzg0eF9TVEFUVVNfUkVTVUxUKTsKK30KKworc3RhdGljIHZvaWQKK3VzYmN0bHhfZ2V0X3JyaWRyZXN1bHQoY29uc3QgaGZhMzg0eF91c2JfcnJpZHJlc3BfdCAqcnJpZHJlc3AsCisgICAgICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfcnJpZHJlc3VsdF90ICpyZXN1bHQpCit7CisJREJGRU5URVI7CisKKwlyZXN1bHQtPnJpZCA9IGhmYTM4NHgyaG9zdF8xNihycmlkcmVzcC0+cmlkKTsKKwlyZXN1bHQtPnJpZGRhdGEgPSBycmlkcmVzcC0+ZGF0YTsKKwlyZXN1bHQtPnJpZGRhdGFfbGVuID0gKChoZmEzODR4Mmhvc3RfMTYocnJpZHJlc3AtPmZybWxlbikgLSAxKSAqIDIpOworCisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogQ29tcGxldG9yIG9iamVjdDoKKyogVGhpcyBjb21wbGV0b3IgbXVzdCBiZSBwYXNzZWQgdG8gaGZhMzg0eF91c2JjdGx4X2NvbXBsZXRlX3N5bmMoKQorKiB3aGVuIHByb2Nlc3NpbmcgYSBDVExYIHRoYXQgcmV0dXJucyBhIGhmYTM4NHhfY21kcmVzdWx0X3Qgc3RydWN0dXJlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdHJ1Y3QgdXNiY3RseF9jbWRfY29tcGxldG9yCit7CisJdXNiY3RseF9jb21wbGV0b3JfdAloZWFkOworCisJY29uc3QgaGZhMzg0eF91c2JfY21kcmVzcF90CSpjbWRyZXNwOworCWhmYTM4NHhfY21kcmVzdWx0X3QJKnJlc3VsdDsKK307Cit0eXBlZGVmIHN0cnVjdCB1c2JjdGx4X2NtZF9jb21wbGV0b3IgdXNiY3RseF9jbWRfY29tcGxldG9yX3Q7CisKK3N0YXRpYyBpbnQgdXNiY3RseF9jbWRfY29tcGxldG9yX2ZuKHVzYmN0bHhfY29tcGxldG9yX3QgKmhlYWQpCit7CisJdXNiY3RseF9jbWRfY29tcGxldG9yX3QgKmNvbXBsZXRlID0gKHVzYmN0bHhfY21kX2NvbXBsZXRvcl90KiloZWFkOworCXJldHVybiB1c2JjdGx4X2dldF9zdGF0dXMoY29tcGxldGUtPmNtZHJlc3AsIGNvbXBsZXRlLT5yZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIHVzYmN0bHhfY29tcGxldG9yX3QqCitpbml0X2NtZF9jb21wbGV0b3IodXNiY3RseF9jbWRfY29tcGxldG9yX3QgKmNvbXBsZXRvciwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBoZmEzODR4X3VzYl9jbWRyZXNwX3QgKmNtZHJlc3AsCisgICAgICAgICAgICAgICAgICAgaGZhMzg0eF9jbWRyZXN1bHRfdCAqcmVzdWx0KQoreworCWNvbXBsZXRvci0+aGVhZC5jb21wbGV0ZSA9IHVzYmN0bHhfY21kX2NvbXBsZXRvcl9mbjsKKwljb21wbGV0b3ItPmNtZHJlc3AgPSBjbWRyZXNwOworCWNvbXBsZXRvci0+cmVzdWx0ID0gcmVzdWx0OworCXJldHVybiAmKGNvbXBsZXRvci0+aGVhZCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBDb21wbGV0b3Igb2JqZWN0OgorKiBUaGlzIGNvbXBsZXRvciBtdXN0IGJlIHBhc3NlZCB0byBoZmEzODR4X3VzYmN0bHhfY29tcGxldGVfc3luYygpCisqIHdoZW4gcHJvY2Vzc2luZyBhIENUTFggdGhhdCByZWFkcyBhIFJJRC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RydWN0IHVzYmN0bHhfcnJpZF9jb21wbGV0b3IKK3sKKwl1c2JjdGx4X2NvbXBsZXRvcl90CWhlYWQ7CisKKwljb25zdCBoZmEzODR4X3VzYl9ycmlkcmVzcF90CSpycmlkcmVzcDsKKwl2b2lkCQkJKnJpZGRhdGE7CisJVUlOVAkJCXJpZGRhdGFsZW47Cit9OwordHlwZWRlZiBzdHJ1Y3QgdXNiY3RseF9ycmlkX2NvbXBsZXRvciB1c2JjdGx4X3JyaWRfY29tcGxldG9yX3Q7CisKK3N0YXRpYyBpbnQgdXNiY3RseF9ycmlkX2NvbXBsZXRvcl9mbih1c2JjdGx4X2NvbXBsZXRvcl90ICpoZWFkKQoreworCXVzYmN0bHhfcnJpZF9jb21wbGV0b3JfdCAqY29tcGxldGUgPSAodXNiY3RseF9ycmlkX2NvbXBsZXRvcl90KiloZWFkOworCWhmYTM4NHhfcnJpZHJlc3VsdF90IHJyaWRyZXN1bHQ7CisKKwl1c2JjdGx4X2dldF9ycmlkcmVzdWx0KGNvbXBsZXRlLT5ycmlkcmVzcCwgJnJyaWRyZXN1bHQpOworCisJLyogVmFsaWRhdGUgdGhlIGxlbmd0aCwgbm90ZSBib2R5IGxlbiBjYWxjdWxhdGlvbiBpbiBieXRlcyAqLworCWlmICggcnJpZHJlc3VsdC5yaWRkYXRhX2xlbiAhPSBjb21wbGV0ZS0+cmlkZGF0YWxlbiApIHsKKwkJV0xBTl9MT0dfV0FSTklORygKKwkJCSJSSUQgbGVuIG1pc21hdGNoLCByaWQ9MHglMDR4IGhsZW49JWQgZndsZW49JWRcbiIsCisJCSAgICAgICAgcnJpZHJlc3VsdC5yaWQsCisJCSAgICAgICAgY29tcGxldGUtPnJpZGRhdGFsZW4sCisJCSAgICAgICAgcnJpZHJlc3VsdC5yaWRkYXRhX2xlbik7CisJCXJldHVybiAtRU5PREFUQTsKKwl9CisKKwltZW1jcHkoY29tcGxldGUtPnJpZGRhdGEsCisJICAgICAgIHJyaWRyZXN1bHQucmlkZGF0YSwKKwkgICAgICAgY29tcGxldGUtPnJpZGRhdGFsZW4pOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIHVzYmN0bHhfY29tcGxldG9yX3QqCitpbml0X3JyaWRfY29tcGxldG9yKHVzYmN0bHhfcnJpZF9jb21wbGV0b3JfdCAqY29tcGxldG9yLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBoZmEzODR4X3VzYl9ycmlkcmVzcF90ICpycmlkcmVzcCwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmlkZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgVUlOVCByaWRkYXRhbGVuKQoreworCWNvbXBsZXRvci0+aGVhZC5jb21wbGV0ZSA9IHVzYmN0bHhfcnJpZF9jb21wbGV0b3JfZm47CisJY29tcGxldG9yLT5ycmlkcmVzcCA9IHJyaWRyZXNwOworCWNvbXBsZXRvci0+cmlkZGF0YSA9IHJpZGRhdGE7CisJY29tcGxldG9yLT5yaWRkYXRhbGVuID0gcmlkZGF0YWxlbjsKKwlyZXR1cm4gJihjb21wbGV0b3ItPmhlYWQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogQ29tcGxldG9yIG9iamVjdDoKKyogSW50ZXJwcmV0cyB0aGUgcmVzdWx0cyBvZiBhIHN5bmNocm9ub3VzIFJJRC13cml0ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHVzYmN0bHhfY21kX2NvbXBsZXRvcl90IHVzYmN0bHhfd3JpZF9jb21wbGV0b3JfdDsKKyNkZWZpbmUgaW5pdF93cmlkX2NvbXBsZXRvciAgaW5pdF9jbWRfY29tcGxldG9yCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBDb21wbGV0b3Igb2JqZWN0OgorKiBJbnRlcnByZXRzIHRoZSByZXN1bHRzIG9mIGEgc3luY2hyb25vdXMgbWVtb3J5LXdyaXRlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgdXNiY3RseF9jbWRfY29tcGxldG9yX3QgdXNiY3RseF93bWVtX2NvbXBsZXRvcl90OworI2RlZmluZSBpbml0X3dtZW1fY29tcGxldG9yICBpbml0X2NtZF9jb21wbGV0b3IKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIENvbXBsZXRvciBvYmplY3Q6CisqIEludGVycHJldHMgdGhlIHJlc3VsdHMgb2YgYSBzeW5jaHJvbm91cyBtZW1vcnktcmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdHJ1Y3QgdXNiY3RseF9ybWVtX2NvbXBsZXRvcgoreworICAgICAgICB1c2JjdGx4X2NvbXBsZXRvcl90ICAgICAgICAgICBoZWFkOworCisgICAgICAgIGNvbnN0IGhmYTM4NHhfdXNiX3JtZW1yZXNwX3QgICpybWVtcmVzcDsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGE7CisgICAgICAgIFVJTlQgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbjsKK307Cit0eXBlZGVmIHN0cnVjdCB1c2JjdGx4X3JtZW1fY29tcGxldG9yIHVzYmN0bHhfcm1lbV9jb21wbGV0b3JfdDsKKworc3RhdGljIGludCB1c2JjdGx4X3JtZW1fY29tcGxldG9yX2ZuKHVzYmN0bHhfY29tcGxldG9yX3QgKmhlYWQpCit7CisJdXNiY3RseF9ybWVtX2NvbXBsZXRvcl90ICpjb21wbGV0ZSA9ICh1c2JjdGx4X3JtZW1fY29tcGxldG9yX3QqKWhlYWQ7CisKKwlXTEFOX0xPR19ERUJVRyg0LCJybWVtcmVzcDpsZW49JWRcbiIsIGNvbXBsZXRlLT5ybWVtcmVzcC0+ZnJtbGVuKTsKKwltZW1jcHkoY29tcGxldGUtPmRhdGEsIGNvbXBsZXRlLT5ybWVtcmVzcC0+ZGF0YSwgY29tcGxldGUtPmxlbik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdXNiY3RseF9jb21wbGV0b3JfdCoKK2luaXRfcm1lbV9jb21wbGV0b3IodXNiY3RseF9ybWVtX2NvbXBsZXRvcl90ICpjb21wbGV0b3IsCisgICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfdXNiX3JtZW1yZXNwX3QgKnJtZW1yZXNwLAorICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICBVSU5UIGxlbikKK3sKKwljb21wbGV0b3ItPmhlYWQuY29tcGxldGUgPSB1c2JjdGx4X3JtZW1fY29tcGxldG9yX2ZuOworCWNvbXBsZXRvci0+cm1lbXJlc3AgPSBybWVtcmVzcDsKKwljb21wbGV0b3ItPmRhdGEgPSBkYXRhOworCWNvbXBsZXRvci0+bGVuID0gbGVuOworCXJldHVybiAmKGNvbXBsZXRvci0+aGVhZCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NiX3N0YXR1cworKgorKiBDdGx4X2NvbXBsZXRlIGhhbmRsZXIgZm9yIGFzeW5jIENNRCB0eXBlIGNvbnRyb2wgZXhjaGFuZ2VzLgorKiBtYXJrIHRoZSBodyBzdHJ1Y3QgYXMgc3VjaC4KKyoKKyogTm90ZTogSWYgdGhlIGhhbmRsaW5nIGlzIGNoYW5nZWQgaGVyZSwgaXQgc2hvdWxkIHByb2JhYmx5IGJlCisqICAgICAgIGNoYW5nZWQgaW4gZG9jbWQgYXMgd2VsbC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJaHcgc3RydWN0CisqCWN0bHgJCWNvbXBsZXRlZCBDVExYCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAoraGZhMzg0eF9jYl9zdGF0dXMoaGZhMzg0eF90ICpodywgY29uc3QgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpCit7CisJREJGRU5URVI7CisKKwlpZiAoIGN0bHgtPnVzZXJjYiAhPSBOVUxMICkgeworCQloZmEzODR4X2NtZHJlc3VsdF90IGNtZHJlc3VsdDsKKworCQlpZiAoY3RseC0+c3RhdGUgIT0gQ1RMWF9DT01QTEVURSkgeworCQkJbWVtc2V0KCZjbWRyZXN1bHQsIDAsIHNpemVvZihjbWRyZXN1bHQpKTsKKwkJCWNtZHJlc3VsdC5zdGF0dXMgPSBIRkEzODR4X1NUQVRVU19SRVNVTFRfU0VUKEhGQTM4NHhfQ01EX0VSUik7CisJCX0gZWxzZSB7CisJCQl1c2JjdGx4X2dldF9zdGF0dXMoJmN0bHgtPmluYnVmLmNtZHJlc3AsICZjbWRyZXN1bHQpOworCQl9CisKKwkJY3RseC0+dXNlcmNiKGh3LCAmY21kcmVzdWx0LCBjdGx4LT51c2VyY2JfZGF0YSk7CisJfQorCisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jYl9ycmlkCisqCisqIENUTFggY29tcGxldGlvbiBoYW5kbGVyIGZvciBhc3luYyBSUklEIHR5cGUgY29udHJvbCBleGNoYW5nZXMuCisqCisqIE5vdGU6IElmIHRoZSBoYW5kbGluZyBpcyBjaGFuZ2VkIGhlcmUsIGl0IHNob3VsZCBwcm9iYWJseSBiZQorKiAgICAgICBjaGFuZ2VkIGluIGRvcnJpZCBhcyB3ZWxsLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlodyBzdHJ1Y3QKKyoJY3RseAkJY29tcGxldGVkIENUTFgKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkCitoZmEzODR4X2NiX3JyaWQoaGZhMzg0eF90ICpodywgY29uc3QgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpCit7CisJREJGRU5URVI7CisKKwlpZiAoIGN0bHgtPnVzZXJjYiAhPSBOVUxMICkgeworCQloZmEzODR4X3JyaWRyZXN1bHRfdCBycmlkcmVzdWx0OworCisJCWlmIChjdGx4LT5zdGF0ZSAhPSBDVExYX0NPTVBMRVRFKSB7CisJCQltZW1zZXQoJnJyaWRyZXN1bHQsIDAsIHNpemVvZihycmlkcmVzdWx0KSk7CisJCQlycmlkcmVzdWx0LnJpZCA9IGhmYTM4NHgyaG9zdF8xNihjdGx4LT5vdXRidWYucnJpZHJlcS5yaWQpOworCQl9IGVsc2UgeworCQkJdXNiY3RseF9nZXRfcnJpZHJlc3VsdCgmY3RseC0+aW5idWYucnJpZHJlc3AsICZycmlkcmVzdWx0KTsKKwkJfQorCisJCWN0bHgtPnVzZXJjYihodywgJnJyaWRyZXN1bHQsIGN0bHgtPnVzZXJjYl9kYXRhKTsKKwl9CisKKwlEQkZFWElUOworfQorCitzdGF0aWMgaW5saW5lIGludAoraGZhMzg0eF9kb2NtZF93YWl0KGhmYTM4NHhfdCAqaHcsIGhmYTM4NHhfbWV0YWNtZF90ICpjbWQpCit7CisJcmV0dXJuIGhmYTM4NHhfZG9jbWQoaHcsIERPV0FJVCwgY21kLCBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZG9jbWRfYXN5bmMoaGZhMzg0eF90ICpodywKKyAgICAgICAgICAgICAgICAgICAgaGZhMzg0eF9tZXRhY21kX3QgKmNtZCwKKyAgICAgICAgICAgICAgICAgICAgY3RseF9jbWRjYl90IGNtZGNiLAorICAgICAgICAgICAgICAgICAgICBjdGx4X3VzZXJjYl90IHVzZXJjYiwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcmNiX2RhdGEpCit7CisJcmV0dXJuIGhmYTM4NHhfZG9jbWQoaHcsIERPQVNZTkMsIGNtZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICBjbWRjYiwgdXNlcmNiLCB1c2VyY2JfZGF0YSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2RvcnJpZF93YWl0KGhmYTM4NHhfdCAqaHcsIFVJTlQxNiByaWQsIHZvaWQgKnJpZGRhdGEsIFVJTlQgcmlkZGF0YWxlbikKK3sKKwlyZXR1cm4gaGZhMzg0eF9kb3JyaWQoaHcsIERPV0FJVCwKKwkgICAgICAgICAgICAgICAgICAgICAgcmlkLCByaWRkYXRhLCByaWRkYXRhbGVuLAorCSAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZG9ycmlkX2FzeW5jKGhmYTM4NHhfdCAqaHcsCisgICAgICAgICAgICAgICAgICAgICBVSU5UMTYgcmlkLCB2b2lkICpyaWRkYXRhLCBVSU5UIHJpZGRhdGFsZW4sCisgICAgICAgICAgICAgICAgICAgICBjdGx4X2NtZGNiX3QgY21kY2IsCisgICAgICAgICAgICAgICAgICAgICBjdGx4X3VzZXJjYl90IHVzZXJjYiwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJjYl9kYXRhKQoreworCXJldHVybiBoZmEzODR4X2RvcnJpZChodywgRE9BU1lOQywKKwkgICAgICAgICAgICAgICAgICAgICAgcmlkLCByaWRkYXRhLCByaWRkYXRhbGVuLAorCSAgICAgICAgICAgICAgICAgICAgICBjbWRjYiwgdXNlcmNiLCB1c2VyY2JfZGF0YSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2Rvd3JpZF93YWl0KGhmYTM4NHhfdCAqaHcsIFVJTlQxNiByaWQsIHZvaWQgKnJpZGRhdGEsIFVJTlQgcmlkZGF0YWxlbikKK3sKKwlyZXR1cm4gaGZhMzg0eF9kb3dyaWQoaHcsIERPV0FJVCwKKwkgICAgICAgICAgICAgICAgICAgICAgcmlkLCByaWRkYXRhLCByaWRkYXRhbGVuLAorCSAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZG93cmlkX2FzeW5jKGhmYTM4NHhfdCAqaHcsCisgICAgICAgICAgICAgICAgICAgICBVSU5UMTYgcmlkLCB2b2lkICpyaWRkYXRhLCBVSU5UIHJpZGRhdGFsZW4sCisgICAgICAgICAgICAgICAgICAgICBjdGx4X2NtZGNiX3QgY21kY2IsCisgICAgICAgICAgICAgICAgICAgICBjdGx4X3VzZXJjYl90IHVzZXJjYiwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJjYl9kYXRhKQoreworCXJldHVybiBoZmEzODR4X2Rvd3JpZChodywgRE9BU1lOQywKKwkgICAgICAgICAgICAgICAgICAgICAgcmlkLCByaWRkYXRhLCByaWRkYXRhbGVuLAorCSAgICAgICAgICAgICAgICAgICAgICBjbWRjYiwgdXNlcmNiLCB1c2VyY2JfZGF0YSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitoZmEzODR4X2Rvcm1lbV93YWl0KGhmYTM4NHhfdCAqaHcsCisgICAgICAgICAgICAgICAgICAgIFVJTlQxNiBwYWdlLCBVSU5UMTYgb2Zmc2V0LCB2b2lkICpkYXRhLCBVSU5UIGxlbikKK3sKKwlyZXR1cm4gaGZhMzg0eF9kb3JtZW0oaHcsIERPV0FJVCwKKwkgICAgICAgICAgICAgICAgICAgICAgcGFnZSwgb2Zmc2V0LCBkYXRhLCBsZW4sCisJICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOworfQorCitzdGF0aWMgaW5saW5lIGludAoraGZhMzg0eF9kb3JtZW1fYXN5bmMoaGZhMzg0eF90ICpodywKKyAgICAgICAgICAgICAgICAgICAgIFVJTlQxNiBwYWdlLCBVSU5UMTYgb2Zmc2V0LCB2b2lkICpkYXRhLCBVSU5UIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIGN0bHhfY21kY2JfdCBjbWRjYiwKKyAgICAgICAgICAgICAgICAgICAgIGN0bHhfdXNlcmNiX3QgdXNlcmNiLAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcmNiX2RhdGEpCit7CisJcmV0dXJuIGhmYTM4NHhfZG9ybWVtKGh3LCBET0FTWU5DLAorCSAgICAgICAgICAgICAgICAgICAgICBwYWdlLCBvZmZzZXQsIGRhdGEsIGxlbiwKKwkgICAgICAgICAgICAgICAgICAgICAgY21kY2IsIHVzZXJjYiwgdXNlcmNiX2RhdGEpOworfQorCitzdGF0aWMgaW5saW5lIGludAoraGZhMzg0eF9kb3dtZW1fd2FpdCgKKyAgICAgICAgaGZhMzg0eF90ICpodywKKyAgICAgICAgVUlOVDE2ICBwYWdlLAorICAgICAgICBVSU5UMTYgIG9mZnNldCwKKyAgICAgICAgdm9pZCAgICAqZGF0YSwKKyAgICAgICAgVUlOVCAgICBsZW4pCit7CisJcmV0dXJuIGhmYTM4NHhfZG93bWVtKGh3LCBET1dBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSwgb2Zmc2V0LCBkYXRhLCBsZW4sCisJICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK2hmYTM4NHhfZG93bWVtX2FzeW5jKAorICAgICAgICBoZmEzODR4X3QgKmh3LAorICAgICAgICBVSU5UMTYgIHBhZ2UsCisgICAgICAgIFVJTlQxNiAgb2Zmc2V0LAorICAgICAgICB2b2lkICAgICpkYXRhLAorICAgICAgICBVSU5UICAgIGxlbiwKKyAgICAgICAgY3RseF9jbWRjYl90IGNtZGNiLAorICAgICAgICBjdGx4X3VzZXJjYl90IHVzZXJjYiwKKyAgICAgICAgdm9pZCAgICAqdXNlcmNiX2RhdGEpCit7CisJcmV0dXJuIGhmYTM4NHhfZG93bWVtKGh3LCBET0FTWU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UsIG9mZnNldCwgZGF0YSwgbGVuLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgY21kY2IsIHVzZXJjYiwgdXNlcmNiX2RhdGEpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfaW5pdGlhbGl6ZQorKgorKiBJc3N1ZXMgdGhlIGluaXRpYWxpemUgY29tbWFuZCBhbmQgc2V0cyB0aGUgaHctPnN0YXRlIGJhc2VkCisqIG9uIHRoZSByZXN1bHQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50CitoZmEzODR4X2NtZF9pbml0aWFsaXplKGhmYTM4NHhfdCAqaHcpCit7CisJaW50CXJlc3VsdCA9IDA7CisJaW50CWk7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKworCWNtZC5jbWQgPSBIRkEzODR4X0NNRENPREVfSU5JVDsKKwljbWQucGFybTAgPSAwOworCWNtZC5wYXJtMSA9IDA7CisJY21kLnBhcm0yID0gMDsKKworCXJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgJmNtZCk7CisKKworCVdMQU5fTE9HX0RFQlVHKDMsImNtZHJlc3AuaW5pdDogIgorCQkic3RhdHVzPTB4JTA0eCwgcmVzcDA9MHglMDR4LCAiCisJCSJyZXNwMT0weCUwNHgsIHJlc3AyPTB4JTA0eFxuIiwKKwkJY21kLnJlc3VsdC5zdGF0dXMsCisJCWNtZC5yZXN1bHQucmVzcDAsCisJCWNtZC5yZXN1bHQucmVzcDEsCisJCWNtZC5yZXN1bHQucmVzcDIpOworCWlmICggcmVzdWx0ID09IDAgKSB7CisJCWZvciAoIGkgPSAwOyBpIDwgSEZBMzg0eF9OVU1QT1JUU19NQVg7IGkrKykgeworCQkJaHctPnBvcnRfZW5hYmxlZFtpXSA9IDA7CisJCX0KKwl9CisKKyAgICAgICAgaHctPmxpbmtfc3RhdHVzID0gSEZBMzg0eF9MSU5LX05PVENPTk5FQ1RFRDsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfZGlzYWJsZQorKgorKiBJc3N1ZXMgdGhlIGRpc2FibGUgY29tbWFuZCB0byBzdG9wIGNvbW11bmljYXRpb25zIG9uIG9uZSBvZgorKiB0aGUgTUFDcyAncG9ydHMnLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1hY3BvcnQJCU1BQyBwb3J0IG51bWJlciAoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfZGlzYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgbWFjcG9ydCkKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKwlEQkZFTlRFUjsKKworCWNtZC5jbWQgPSBIRkEzODR4X0NNRF9DTURDT0RFX1NFVChIRkEzODR4X0NNRENPREVfRElTQUJMRSkgfAorCQkgIEhGQTM4NHhfQ01EX01BQ1BPUlRfU0VUKG1hY3BvcnQpOworCWNtZC5wYXJtMCA9IDA7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfZW5hYmxlCisqCisqIElzc3VlcyB0aGUgZW5hYmxlIGNvbW1hbmQgdG8gZW5hYmxlIGNvbW11bmljYXRpb25zIG9uIG9uZSBvZgorKiB0aGUgTUFDcyAncG9ydHMnLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1hY3BvcnQJCU1BQyBwb3J0IG51bWJlcgorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9lbmFibGUoaGZhMzg0eF90ICpodywgVUlOVDE2IG1hY3BvcnQpCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0VOQUJMRSkgfAorCQkgIEhGQTM4NHhfQ01EX01BQ1BPUlRfU0VUKG1hY3BvcnQpOworCWNtZC5wYXJtMCA9IDA7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jbWRfbm90aWZ5CisqCisqIFNlbmRzIGFuIGluZm8gZnJhbWUgdG8gdGhlIGZpcm13YXJlIHRvIGFsdGVyIHRoZSBiZWhhdmlvcgorKiBvZiB0aGUgZi93IGFzeW5jaCBwcm9jZXNzZXMuICBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgTUFDCisqIGlzIGluIHRoZSBlbmFibGVkIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCXJlY2xhaW0JCVswfDFdIGluZGljYXRlcyB3aGV0aGVyIHRoZSBnaXZlbiBGSUQgd2lsbAorKgkJCWJlIGhhbmRlZCBiYWNrICh2aWEgQWxsb2MgZXZlbnQpIGZvciByZXVzZS4KKyoJCQkoaG9zdCBvcmRlcikKKyoJZmlkCQlGSUQgb2YgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGZyYW1lIHRoYXQgd2FzCisqCQkJcHJldmlvdXNseSBjb3BpZWQgdG8gTUFDIG1lbW9yeSB2aWEgdGhlIGJhcC4KKyoJCQkoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCWh3LT5yZXNwMCB3aWxsIGNvbnRhaW4gdGhlIEZJRCBiZWluZyB1c2VkIGJ5IGFzeW5jIG5vdGlmeQorKglwcm9jZXNzLiAgSWYgcmVjbGFpbT09MCwgcmVzcDAgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlkCisqCWFyZ3VtZW50LiAgSWYgcmVjbGFpbT09MSwgcmVzcDAgd2lsbCBiZSB0aGUgZGlmZmVyZW50LgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfY21kX25vdGlmeShoZmEzODR4X3QgKmh3LCBVSU5UMTYgcmVjbGFpbSwgVUlOVDE2IGZpZCwKKwkJICAgICAgIHZvaWQgKmJ1ZiwgVUlOVDE2IGxlbikKK3sKKyNpZiAwCisJaW50CXJlc3VsdCA9IDA7CisJVUlOVDE2CWNtZDsKKwlEQkZFTlRFUjsKKwljbWQgPQlIRkEzODR4X0NNRF9DTURDT0RFX1NFVChIRkEzODR4X0NNRENPREVfTk9USUZZKSB8CisJCUhGQTM4NHhfQ01EX1JFQ0xfU0VUKHJlY2xhaW0pOworCXJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgY21kKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorcmV0dXJuIDA7Cit9CisKKworI2lmIDAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9pbnF1aXJ5CisqCisqIFJlcXVlc3RzIGFuIGluZm8gZnJhbWUgZnJvbSB0aGUgZmlybXdhcmUuICBUaGUgaW5mbyBmcmFtZSB3aWxsCisqIGJlIGRlbGl2ZXJlZCBhc3luY2hyb25vdXNseSB2aWEgdGhlIEluZm8gZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJZmlkCQlGSUQgb2YgdGhlIGluZm8gZnJhbWUgcmVxdWVzdGVkLiAoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfaW5xdWlyeShoZmEzODR4X3QgKmh3LCBVSU5UMTYgZmlkKQoreworCWludAlyZXN1bHQgPSAwOworCWhmYTM4NHhfbWV0YWNtZF90IGNtZDsKKworCURCRkVOVEVSOworCisJY21kLmNtZCA9IEhGQTM4NHhfQ01EX0NNRENPREVfU0VUKEhGQTM4NHhfQ01EQ09ERV9JTlEpOworCWNtZC5wYXJtMCA9IDA7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9tb25pdG9yCisqCisqIEVuYWJsZXMgdGhlICdtb25pdG9yIG1vZGUnIG9mIHRoZSBNQUMuICBIZXJlJ3MgdGhlIGRlc2NyaXB0aW9uIG9mCisqIG1vbml0b3IgbW9kZSB0aGF0IEkndmUgcmVjZWl2ZWQgdGh1cyBmYXI6CisqCisqICAiVGhlICJtb25pdG9yIG1vZGUiIG9mIG9wZXJhdGlvbiBpcyB0aGF0IHRoZSBNQUMgcGFzc2VzIGFsbAorKiAgZnJhbWVzIGZvciB3aGljaCB0aGUgUExDUCBjaGVja3MgYXJlIGNvcnJlY3QuIEFsbCByZWNlaXZlZAorKiAgTVBEVXMgYXJlIHBhc3NlZCB0byB0aGUgaG9zdCB3aXRoIE1BQyBQb3J0ID0gNywgd2l0aCBhCisqICByZWNlaXZlIHN0YXR1cyBvZiBnb29kLCBGQ1MgZXJyb3IsIG9yIHVuZGVjcnlwdGFibGUuIFBhc3NpbmcKKyogIGNlcnRhaW4gTVBEVXMgaXMgYSB2aW9sYXRpb24gb2YgdGhlIDgwMi4xMSBzdGFuZGFyZCwgYnV0IHVzZWZ1bAorKiAgZm9yIGEgZGVidWdnaW5nIHRvb2wuIiAgTm9ybWFsIGNvbW11bmljYXRpb24gaXMgbm90IHBvc3NpYmxlCisqICB3aGlsZSBtb25pdG9yIG1vZGUgaXMgZW5hYmxlZC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgllbmFibGUJCWEgY29kZSAoMHgwYnwweDBmKSB0aGF0IGVuYWJsZXMvZGlzYWJsZXMKKyoJCQltb25pdG9yIG1vZGUuIChob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZmFpbHVyZSAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yICh0aW1lb3V0fGJhZCBhcmcpCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2NtZF9tb25pdG9yKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiBlbmFibGUpCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisKKwljbWQuY21kID0gSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX01PTklUT1IpIHwKKwkJSEZBMzg0eF9DTURfQUlORk9fU0VUKGVuYWJsZSk7CisJY21kLnBhcm0wID0gMDsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsICZjbWQpOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NtZF9kb3dubG9hZAorKgorKiBTZXRzIHRoZSBjb250cm9scyBmb3IgdGhlIE1BQyBjb250cm9sbGVyIGNvZGUvZGF0YSBkb3dubG9hZAorKiBwcm9jZXNzLiAgVGhlIGFyZ3VtZW50cyBzZXQgdGhlIG1vZGUgYW5kIGFkZHJlc3MgYXNzb2NpYXRlZAorKiB3aXRoIGEgZG93bmxvYWQuICBOb3RlIHRoYXQgdGhlIGF1eCByZWdpc3RlcnMgc2hvdWxkIGJlIGVuYWJsZWQKKyogcHJpb3IgdG8gc2V0dGluZyBvbmUgb2YgdGhlIGRvd25sb2FkIGVuYWJsZSBtb2Rlcy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltb2RlCQkwIC0gRGlzYWJsZSBwcm9ncmFtbWluZyBhbmQgYmVnaW4gY29kZSBleGVjCisqCQkJMSAtIEVuYWJsZSB2b2xhdGlsZSBtZW0gcHJvZ3JhbW1pbmcKKyoJCQkyIC0gRW5hYmxlIG5vbi12b2xhdGlsZSBtZW0gcHJvZ3JhbW1pbmcKKyoJCQkzIC0gUHJvZ3JhbSBub24tdm9sYXRpbGUgc2VjdGlvbiBmcm9tIE5WIGRvd25sb2FkCisqCQkJICAgIGJ1ZmZlci4KKyoJCQkoaG9zdCBvcmRlcikKKyoJbG93YWRkcgorKgloaWdoYWRkcglGb3IgbW9kZSAxLCBzZXRzIHRoZSBoaWdoICYgbG93IG9yZGVyIGJpdHMgb2YKKyoJCQl0aGUgImRlc3RpbmF0aW9uIGFkZHJlc3MiLiAgVGhpcyBhZGRyZXNzIHdpbGwgYmUKKyoJCQl0aGUgZXhlY3V0aW9uIHN0YXJ0IGFkZHJlc3Mgd2hlbiBkb3dubG9hZCBpcworKgkJCXN1YnNlcXVlbnRseSBkaXNhYmxlZC4KKyoJCQlGb3IgbW9kZSAyLCBzZXRzIHRoZSBoaWdoICYgbG93IG9yZGVyIGJpdHMgb2YKKyoJCQl0aGUgZGVzdGluYXRpb24gaW4gTlYgcmFtLgorKgkJCUZvciBtb2RlcyAwICYgMywgc2hvdWxkIGJlIHplcm8uIChob3N0IG9yZGVyKQorKgkJCU5PVEU6IHRoZXNlIGFyZSBDTUQgZm9ybWF0LgorKgljb2RlbGVuCQlMZW5ndGggb2YgdGhlIGRhdGEgdG8gd3JpdGUgaW4gbW9kZSAyLAorKgkJCXplcm8gb3RoZXJ3aXNlLiAoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jbWRfZG93bmxvYWQoaGZhMzg0eF90ICpodywgVUlOVDE2IG1vZGUsIFVJTlQxNiBsb3dhZGRyLAorCQkJCVVJTlQxNiBoaWdoYWRkciwgVUlOVDE2IGNvZGVsZW4pCit7CisJaW50CXJlc3VsdCA9IDA7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworCisJREJGRU5URVI7CisJV0xBTl9MT0dfREVCVUcoNSwKKwkJIm1vZGU9JWQsIGxvd2FkZHI9MHglMDR4LCBoaWdoYWRkcj0weCUwNHgsIGNvZGVsZW49JWRcbiIsCisJCW1vZGUsIGxvd2FkZHIsIGhpZ2hhZGRyLCBjb2RlbGVuKTsKKworCWNtZC5jbWQgPSAoSEZBMzg0eF9DTURfQ01EQ09ERV9TRVQoSEZBMzg0eF9DTURDT0RFX0RPV05MRCkgfAorCQkgICBIRkEzODR4X0NNRF9QUk9HTU9ERV9TRVQobW9kZSkpOworCisJY21kLnBhcm0wID0gbG93YWRkcjsKKwljbWQucGFybTEgPSBoaWdoYWRkcjsKKwljbWQucGFybTIgPSBjb2RlbGVuOworCisJcmVzdWx0ID0gaGZhMzg0eF9kb2NtZF93YWl0KGh3LCAmY21kKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9jb3B5X2Zyb21fYXV4CisqCisqIENvcGllcyBhIGNvbGxlY3Rpb24gb2YgYnl0ZXMgZnJvbSB0aGUgY29udHJvbGxlciBtZW1vcnkuICBUaGUKKyogQXV4aWxpYXJ5IHBvcnQgTVVTVCBiZSBlbmFibGVkIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyogV2UgX21pZ2h0XyBiZSBpbiBhIGRvd25sb2FkIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCWNhcmRhZGRyCWFkZHJlc3MgaW4gaGZhMzg0eCBkYXRhIHNwYWNlIHRvIHJlYWQKKyoJYXV4Y3RsCQlhZGRyZXNzIHNwYWNlIHNlbGVjdAorKglidWYJCXB0ciB0byBkZXN0aW5hdGlvbiBob3N0IGJ1ZmZlcgorKglsZW4JCWxlbmd0aCBvZiBkYXRhIHRvIHRyYW5zZmVyIChpbiBieXRlcykKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCWJ1ZiBjb250YWlucyB0aGUgZGF0YSBjb3BpZWQKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkCitoZmEzODR4X2NvcHlfZnJvbV9hdXgoCisJaGZhMzg0eF90ICpodywgVUlOVDMyIGNhcmRhZGRyLCBVSU5UMzIgYXV4Y3RsLCB2b2lkICpidWYsIFVJTlQgbGVuKQoreworCURCRkVOVEVSOworCVdMQU5fTE9HX0VSUk9SKCJub3QgdXNlZCBpbiBVU0IuXG4iKTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NvcHlfdG9fYXV4CisqCisqIENvcGllcyBhIGNvbGxlY3Rpb24gb2YgYnl0ZXMgdG8gdGhlIGNvbnRyb2xsZXIgbWVtb3J5LiAgVGhlCisqIEF1eGlsaWFyeSBwb3J0IE1VU1QgYmUgZW5hYmxlZCBwcmlvciB0byBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisqIFdlIF9taWdodF8gYmUgaW4gYSBkb3dubG9hZCBzdGF0ZS4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgljYXJkYWRkcglhZGRyZXNzIGluIGhmYTM4NHggZGF0YSBzcGFjZSB0byByZWFkCisqCWF1eGN0bAkJYWRkcmVzcyBzcGFjZSBzZWxlY3QKKyoJYnVmCQlwdHIgdG8gZGVzdGluYXRpb24gaG9zdCBidWZmZXIKKyoJbGVuCQlsZW5ndGggb2YgZGF0YSB0byB0cmFuc2ZlciAoaW4gYnl0ZXMpCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKglDb250cm9sbGVyIG1lbW9yeSBub3cgY29udGFpbnMgYSBjb3B5IG9mIGJ1ZgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQKK2hmYTM4NHhfY29weV90b19hdXgoCisJaGZhMzg0eF90ICpodywgVUlOVDMyIGNhcmRhZGRyLCBVSU5UMzIgYXV4Y3RsLCB2b2lkICpidWYsIFVJTlQgbGVuKQoreworCURCRkVOVEVSOworCVdMQU5fTE9HX0VSUk9SKCJub3QgdXNlZCBpbiBVU0IuXG4iKTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2NvcmVyZXNldAorKgorKiBQZXJmb3JtIGEgcmVzZXQgb2YgdGhlIGhmYTM4eHggTUFDIGNvcmUuICBXZSBhc3N1bWUgdGhhdCB0aGUgaHcKKyogc3RydWN0dXJlIGlzIGluIGl0cyAiY3JlYXRlZCIgc3RhdGUuICBUaGF0IGlzLCBpdCBpcyBpbml0aWFsaXplZAorKiB3aXRoIHByb3BlciB2YWx1ZXMuICBOb3RlIHRoYXQgaWYgYSByZXNldCBpcyBkb25lIGFmdGVyIHRoZQorKiBkZXZpY2UgaGFzIGJlZW4gYWN0aXZlIGZvciBhd2hpbGUsIHRoZSBjYWxsZXIgbWlnaHQgaGF2ZSB0byBjbGVhbgorKiB1cCBzb21lIGxlZnRvdmVyIGNydWZ0IGluIHRoZSBodyBzdHJ1Y3R1cmUuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJaG9sZHRpbWUJaG93IGxvbmcgKGluIG1zKSB0byBob2xkIHRoZSByZXNldAorKglzZXR0bGV0aW1lCWhvdyBsb25nIChpbiBtcykgdG8gd2FpdCBhZnRlciByZWxlYXNpbmcKKyoJCQl0aGUgcmVzZXQKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9jb3JlcmVzZXQoaGZhMzg0eF90ICpodywgaW50IGhvbGR0aW1lLCBpbnQgc2V0dGxldGltZSwgaW50IGdlbmVzaXMpCit7CisjaWYgMAorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDUsMCkpCisJc3RydWN0IHVzYl9kZXZpY2UJKnBhcmVudCA9IGh3LT51c2ItPnBhcmVudDsKKwlpbnQJCQlpOworCWludAkJCXBvcnQgPSAtMTsKKyNlbmRpZgorI2VuZGlmCisJaW50IAkJCXJlc3VsdCA9IDA7CisKKworI2RlZmluZSBQMl9VU0JfUlRfUE9SVAkJKFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX09USEVSKQorI2RlZmluZSBQMl9VU0JfRkVBVF9SRVNFVAk0CisjZGVmaW5lIFAyX1VTQl9GRUFUX0NfUkVTRVQJMjAKKworCURCRkVOVEVSOworCisjaWYgMAorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDUsMCkpCisJLyogRmluZCB0aGUgaHViIHBvcnQgKi8KKwlmb3IgKCBpID0gMDsgaSA8IHBhcmVudC0+bWF4Y2hpbGQ7IGkrKykgeworCQlpZiAocGFyZW50LT5jaGlsZHJlbltpXSA9PSBody0+dXNiKSB7CisJCQlwb3J0ID0gaTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChwb3J0IDwgMCkgcmV0dXJuIC1FTk9FTlQ7CisKKwkvKiBTZXQgYW5kIGNsZWFyIHRoZSByZXNldCAqLworCXVzYl9jb250cm9sX21zZyhwYXJlbnQsIHVzYl9zbmRjdHJscGlwZShwYXJlbnQsIDApLAorCQlVU0JfUkVRX1NFVF9GRUFUVVJFLCBQMl9VU0JfUlRfUE9SVCwgUDJfVVNCX0ZFQVRfUkVTRVQsCisJCXBvcnQrMSwgTlVMTCwgMCwgMSpIWik7CisJd2FpdF9tcyhob2xkdGltZSk7CisJdXNiX2NvbnRyb2xfbXNnKHBhcmVudCwgdXNiX3NuZGN0cmxwaXBlKHBhcmVudCwgMCksCisJCVVTQl9SRVFfQ0xFQVJfRkVBVFVSRSwgUDJfVVNCX1JUX1BPUlQsIFAyX1VTQl9GRUFUX0NfUkVTRVQsCisJCXBvcnQrMSwgTlVMTCwgMCwgMSpIWik7CisJd2FpdF9tcyhzZXR0bGV0aW1lKTsKKworCS8qIFNldCB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KKwlyZXN1bHQ9dXNiX3NldF9hZGRyZXNzKGh3LT51c2IpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJyZXNldF91c2JkZXY6IERldiBub3QgYWNjZXB0aW5nIGFkZHJlc3MsICIKKwkJCSJyZXN1bHQ9JWRcbiIsIHJlc3VsdCk7CisJCWNsZWFyX2JpdChody0+dXNiLT5kZXZudW0sICZody0+dXNiLT5idXMtPmRldm1hcC5kZXZpY2VtYXApOworCQlody0+dXNiLT5kZXZudW0gPSAtMTsKKwkJZ290byBkb25lOworCX0KKwkvKiBMZXQgdGhlIGFkZHJlc3Mgc2V0dGxlICovCisJd2FpdF9tcygyMCk7CisKKwkvKiBBc3N1bWUgd2UncmUgcmV1c2luZyB0aGUgb3JpZ2luYWwgZGVzY3JpcHRvciBkYXRhICovCisKKwkvKiBTZXQgdGhlIGNvbmZpZ3VyYXRpb24uICovCisJV0xBTl9MT0dfREVCVUcoMywgIlNldHRpbmcgQ29uZmlndXJhdGlvbiAlZFxuIiwKKwkJaHctPnVzYi0+Y29uZmlnWzBdLmJDb25maWd1cmF0aW9uVmFsdWUpOworCXJlc3VsdD11c2Jfc2V0X2NvbmZpZ3VyYXRpb24oaHctPnVzYiwgaHctPnVzYi0+Y29uZmlnWzBdLmJDb25maWd1cmF0aW9uVmFsdWUpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigidXNiX3NldF9jb25maWd1cmF0aW9uKCkgZmFpbGVkLCByZXN1bHQ9JWQuXG4iLAorCQkJCXJlc3VsdCk7CisJCWdvdG8gZG9uZTsKKwl9CisJLyogTGV0IHRoZSBjb25maWd1cmF0aW9uIHNldHRsZSAqLworCXdhaXRfbXMoMjApOworCisgZG9uZToKKyNlbHNlCisJcmVzdWx0PXVzYl9yZXNldF9kZXZpY2UoaHctPnVzYik7CisJaWYocmVzdWx0PDApIHsKKwkJV0xBTl9MT0dfRVJST1IoInVzYl9yZXNldF9kZXZpY2UoKSBmYWlsZWQsIHJlc3VsdD0lZC5cbiIscmVzdWx0KTsKKwl9CisjZW5kaWYKKyNlbmRpZgorCisJcmVzdWx0PXVzYl9yZXNldF9kZXZpY2UoaHctPnVzYik7CisJaWYocmVzdWx0PDApIHsKKwkJV0xBTl9MT0dfRVJST1IoInVzYl9yZXNldF9kZXZpY2UoKSBmYWlsZWQsIHJlc3VsdD0lZC5cbiIscmVzdWx0KTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jCisqCisqIFdhaXRzIGZvciBhIHN5bmNocm9ub3VzIENUTFggb2JqZWN0IHRvIGNvbXBsZXRlLAorKiBhbmQgdGhlbiBoYW5kbGVzIHRoZSByZXNwb25zZS4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgljdGx4CSAJQ1RMWCBwdHIKKyoJY29tcGxldG9yCWZ1bmN0b3Igb2JqZWN0IHRvIGRlY2lkZSB3aGF0IHRvCisqCQkJZG8gd2l0aCB0aGUgQ1RMWCdzIHJlc3VsdC4KKyoKKyogUmV0dXJuczoKKyoJMAkJU3VjY2VzcworKgktRVJFU1RBUlRTWVMJSW50ZXJydXB0ZWQgYnkgYSBzaWduYWwKKyoJLUVJTwkJQ1RMWCBmYWlsZWQKKyoJLUVOT0RFVgkJQWRhcHRlciB3YXMgdW5wbHVnZ2VkCisqCT8/PwkJUmVzdWx0IGZyb20gY29tcGxldG9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgaGZhMzg0eF91c2JjdGx4X2NvbXBsZXRlX3N5bmMoaGZhMzg0eF90ICpodywKKwkJCQkJIGhmYTM4NHhfdXNiY3RseF90ICpjdGx4LAorCQkJCQkgdXNiY3RseF9jb21wbGV0b3JfdCAqY29tcGxldG9yKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJlc3VsdDsKKworCURCRkVOVEVSOworCisJcmVzdWx0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjdGx4LT5kb25lKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJLyoKKwkgKiBXZSBjYW4gb25seSBoYW5kbGUgdGhlIENUTFggaWYgdGhlIFVTQiBkaXNjb25uZWN0CisJICogZnVuY3Rpb24gaGFzIG5vdCBydW4geWV0IC4uLgorCSAqLworCWNsZWFudXA6CisJaWYgKCBody0+d2xhbmRldi0+aHdyZW1vdmVkICkKKwl7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCXJlc3VsdCA9IC1FTk9ERVY7CisJfQorCWVsc2UgaWYgKCByZXN1bHQgIT0gMCApCisJeworCQlpbnQgcnVucXVldWUgPSAwOworCisJCS8qCisJCSAqIFdlIHdlcmUgcHJvYmFibHkgaW50ZXJydXB0ZWQsIHNvIGRlbGV0ZQorCQkgKiB0aGlzIENUTFggYXN5bmNocm9ub3VzbHksIGtpbGwgdGhlIHRpbWVycworCQkgKiBhbmQgdGhlIFVSQiwgYW5kIHRoZW4gc3RhcnQgdGhlIG5leHQKKwkJICogcGVuZGluZyBDVExYLgorCQkgKgorCQkgKiBOT1RFOiBXZSBjYW4gb25seSBkZWxldGUgdGhlIHRpbWVycyBhbmQKKwkJICogICAgICAgdGhlIFVSQiBpZiB0aGlzIENUTFggaXMgYWN0aXZlLgorCQkgKi8KKwkJaWYgKGN0bHggPT0gZ2V0X2FjdGl2ZV9jdGx4KGh3KSkKKwkJeworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCQkJZGVsX3NpbmdsZXNob3RfdGltZXJfc3luYygmaHctPnJlcXRpbWVyKTsKKwkJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJmh3LT5yZXNwdGltZXIpOworCQkJaHctPnJlcV90aW1lcl9kb25lID0gMTsKKwkJCWh3LT5yZXNwX3RpbWVyX2RvbmUgPSAxOworCQkJdXNiX2tpbGxfdXJiKCZody0+Y3RseF91cmIpOworCisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCQkJcnVucXVldWUgPSAxOworCisJCQkvKgorCQkJICogVGhpcyBzY2VuYXJpbyBpcyBzbyB1bmxpa2VseSB0aGF0IEknbQorCQkJICogaGFwcHkgd2l0aCBhIGdydWJieSAiZ290byIgc29sdXRpb24gLi4uCisJCQkgKi8KKwkJCWlmICggaHctPndsYW5kZXYtPmh3cmVtb3ZlZCApCisJCQkJZ290byBjbGVhbnVwOworCQl9CisKKwkJLyoKKwkJICogVGhlIGNvbXBsZXRpb24gdGFzayB3aWxsIHNlbmQgdGhpcyBDVExYCisJCSAqIHRvIHRoZSByZWFwZXIgdGhlIG5leHQgdGltZSBpdCBydW5zLiBXZQorCQkgKiBhcmUgbm8gbG9uZ2VyIGluIGEgaHVycnkuCisJCSAqLworCQljdGx4LT5yZWFwYWJsZSA9IDE7CisJCWN0bHgtPnN0YXRlID0gQ1RMWF9SRVFfRkFJTEVEOworCQlsaXN0X21vdmVfdGFpbCgmY3RseC0+bGlzdCwgJmh3LT5jdGx4cS5jb21wbGV0aW5nKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJCWlmIChydW5xdWV1ZSkKKwkJCWhmYTM4NHhfdXNiY3RseHFfcnVuKGh3KTsKKwl9IGVsc2UgeworCQlpZiAoY3RseC0+c3RhdGUgPT0gQ1RMWF9DT01QTEVURSkgeworCQkJcmVzdWx0ID0gY29tcGxldG9yLT5jb21wbGV0ZShjb21wbGV0b3IpOworCQl9IGVsc2UgeworCQkJV0xBTl9MT0dfV0FSTklORygiQ1RMWFslZF0gZXJyb3I6IHN0YXRlKCVzKVxuIiwKKwkJCSAgICAgICAgICAgICAgICAgaGZhMzg0eDJob3N0XzE2KGN0bHgtPm91dGJ1Zi50eXBlKSwKKwkJCSAgICAgICAgICAgICAgICAgY3RseHN0cihjdGx4LT5zdGF0ZSkpOworCQkJcmVzdWx0ID0gLUVJTzsKKwkJfQorCisJCWxpc3RfZGVsKCZjdGx4LT5saXN0KTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKwkJa2ZyZWUoY3RseCk7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kb2NtZAorKgorKiBDb25zdHJ1Y3RzIGEgY29tbWFuZCBDVExYIGFuZCBzdWJtaXRzIGl0LgorKgorKiBOT1RFOiBBbnkgY2hhbmdlcyB0byB0aGUgJ3Bvc3Qtc3VibWl0JyBjb2RlIGluIHRoaXMgZnVuY3Rpb24KKyogICAgICAgbmVlZCB0byBiZSBjYXJyaWVkIG92ZXIgdG8gaGZhMzg0eF9jYmNtZCgpIHNpbmNlIHRoZSBoYW5kbGluZworKiAgICAgICBpcyB2aXJ0dWFsbHkgaWRlbnRpY2FsLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1vZGUJCURPV0FJVCBvciBET0FTWU5DCisqICAgICAgIGNtZCAgICAgICAgICAgICBjbWQgc3RydWN0dXJlLiAgSW5jbHVkZXMgYWxsIGFyZ3VtZW50cyBhbmQgcmVzdWx0CisqICAgICAgICAgICAgICAgICAgICAgICBkYXRhIHBvaW50cy4gIEFsbCBpbiBob3N0IG9yZGVyLiBpbiBob3N0IG9yZGVyCisqCWNtZGNiCQljb21tYW5kLXNwZWNpZmljIGNhbGxiYWNrCisqCXVzZXJjYgkJdXNlciBjYWxsYmFjayBmb3IgYXN5bmMgY2FsbHMsIE5VTEwgZm9yIERPV0FJVCBjYWxscworKgl1c2VyY2JfZGF0YQl1c2VyIHN1cHBsaWVkIGRhdGEgcG9pbnRlciBmb3IgYXN5bmMgY2FsbHMsIE5VTEwKKyoJCQlmb3IgRE9BU1lOQyBjYWxscworKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCS1FSU8JCUNUTFggZmFpbHVyZQorKgktRVJFU1RBUlRTWVMJQXdha2VuZWQgb24gc2lnbmFsCisqCT4wCQljb21tYW5kIGluZGljYXRlZCBlcnJvciwgU3RhdHVzIGFuZCBSZXNwMC0yIGFyZQorKgkJCWluIGh3IHN0cnVjdHVyZS4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAoraGZhMzg0eF9kb2NtZCgKKwloZmEzODR4X3QgKmh3LAorCUNNRF9NT0RFIG1vZGUsCisJaGZhMzg0eF9tZXRhY21kX3QgKmNtZCwKKwljdGx4X2NtZGNiX3QJY21kY2IsCisJY3RseF91c2VyY2JfdAl1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpCit7CisJaW50CQkJcmVzdWx0OworCWhmYTM4NHhfdXNiY3RseF90CSpjdGx4OworCisJREJGRU5URVI7CisJY3RseCA9IHVzYmN0bHhfYWxsb2MoKTsKKwlpZiAoIGN0bHggPT0gTlVMTCApIHsKKwkJcmVzdWx0ID0gLUVOT01FTTsKKwkJZ290byBkb25lOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGNvbW1hbmQgKi8KKwljdGx4LT5vdXRidWYuY21kcmVxLnR5cGUgPSAJaG9zdDJoZmEzODR4XzE2KEhGQTM4NHhfVVNCX0NNRFJFUSk7CisJY3RseC0+b3V0YnVmLmNtZHJlcS5jbWQgPQlob3N0MmhmYTM4NHhfMTYoY21kLT5jbWQpOworCWN0bHgtPm91dGJ1Zi5jbWRyZXEucGFybTAgPQlob3N0MmhmYTM4NHhfMTYoY21kLT5wYXJtMCk7CisJY3RseC0+b3V0YnVmLmNtZHJlcS5wYXJtMSA9CWhvc3QyaGZhMzg0eF8xNihjbWQtPnBhcm0xKTsKKwljdGx4LT5vdXRidWYuY21kcmVxLnBhcm0yID0JaG9zdDJoZmEzODR4XzE2KGNtZC0+cGFybTIpOworCisJY3RseC0+b3V0YnVmc2l6ZSA9IHNpemVvZihjdGx4LT5vdXRidWYuY21kcmVxKTsKKworCVdMQU5fTE9HX0RFQlVHKDQsICJjbWRyZXE6IGNtZD0weCUwNHggIgorCQkicGFybTA9MHglMDR4IHBhcm0xPTB4JTA0eCBwYXJtMj0weCUwNHhcbiIsCisJCWNtZC0+Y21kLAorCQljbWQtPnBhcm0wLAorCQljbWQtPnBhcm0xLAorCQljbWQtPnBhcm0yKTsKKworCWN0bHgtPnJlYXBhYmxlID0gbW9kZTsKKwljdGx4LT5jbWRjYiA9IGNtZGNiOworCWN0bHgtPnVzZXJjYiA9IHVzZXJjYjsKKwljdGx4LT51c2VyY2JfZGF0YSA9IHVzZXJjYl9kYXRhOworCisJcmVzdWx0ID0gaGZhMzg0eF91c2JjdGx4X3N1Ym1pdChodywgY3RseCk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWtmcmVlKGN0bHgpOworCX0gZWxzZSBpZiAobW9kZSA9PSBET1dBSVQpIHsKKwkJdXNiY3RseF9jbWRfY29tcGxldG9yX3QgY29tcGxldG9yOworCisJCXJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jKAorCQkgICAgICAgICAgICAgaHcsIGN0bHgsIGluaXRfY21kX2NvbXBsZXRvcigmY29tcGxldG9yLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3RseC0+aW5idWYuY21kcmVzcCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtZC0+cmVzdWx0KSApOworCX0KKworZG9uZToKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZG9ycmlkCisqCisqIENvbnN0cnVjdHMgYSByZWFkIHJpZCBDVExYIGFuZCBpc3N1ZXMgaXQuCisqCisqIE5PVEU6IEFueSBjaGFuZ2VzIHRvIHRoZSAncG9zdC1zdWJtaXQnIGNvZGUgaW4gdGhpcyBmdW5jdGlvbgorKiAgICAgICBuZWVkIHRvIGJlIGNhcnJpZWQgb3ZlciB0byBoZmEzODR4X2NicnJpZCgpIHNpbmNlIHRoZSBoYW5kbGluZworKiAgICAgICBpcyB2aXJ0dWFsbHkgaWRlbnRpY2FsLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1vZGUJCURPV0FJVCBvciBET0FTWU5DCisqCXJpZAkJUmVhZCBSSUQgbnVtYmVyIChob3N0IG9yZGVyKQorKglyaWRkYXRhCQlDYWxsZXIgc3VwcGxpZWQgYnVmZmVyIHRoYXQgTUFDIGZvcm1hdHRlZCBSSUQuZGF0YQorKgkJCXJlY29yZCB3aWxsIGJlIHdyaXR0ZW4gdG8gZm9yIERPV0FJVCBjYWxscy4gU2hvdWxkCisqCQkJYmUgTlVMTCBmb3IgRE9BU1lOQyBjYWxscy4KKyoJcmlkZGF0YWxlbglCdWZmZXIgbGVuZ3RoIGZvciBET1dBSVQgY2FsbHMuIFplcm8gZm9yIERPQVNZTkMgY2FsbHMuCisqCWNtZGNiCQljb21tYW5kIGNhbGxiYWNrIGZvciBhc3luYyBjYWxscywgTlVMTCBmb3IgRE9XQUlUIGNhbGxzCisqCXVzZXJjYgkJdXNlciBjYWxsYmFjayBmb3IgYXN5bmMgY2FsbHMsIE5VTEwgZm9yIERPV0FJVCBjYWxscworKgl1c2VyY2JfZGF0YQl1c2VyIHN1cHBsaWVkIGRhdGEgcG9pbnRlciBmb3IgYXN5bmMgY2FsbHMsIE5VTEwKKyoJCQlmb3IgRE9XQUlUIGNhbGxzCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJLUVJTwkJQ1RMWCBmYWlsdXJlCisqCS1FUkVTVEFSVFNZUwlBd2FrZW5lZCBvbiBzaWduYWwKKyoJLUVOT0RBVEEJcmlkZGF0YWxlbiAhPSBtYWNkYXRhbGVuCisqCT4wCQljb21tYW5kIGluZGljYXRlZCBlcnJvciwgU3RhdHVzIGFuZCBSZXNwMC0yIGFyZQorKgkJCWluIGh3IHN0cnVjdHVyZS4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdCAoRE9BU1lOQykKKyoJcHJvY2VzcyAoRE9XQUlUIG9yIERPQVNZTkMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK2hmYTM4NHhfZG9ycmlkKAorCWhmYTM4NHhfdCAqaHcsCisJQ01EX01PREUgbW9kZSwKKwlVSU5UMTYJcmlkLAorCXZvaWQJKnJpZGRhdGEsCisJVUlOVAlyaWRkYXRhbGVuLAorICAgICAgICBjdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpCit7CisJaW50CQkJcmVzdWx0OworCWhmYTM4NHhfdXNiY3RseF90CSpjdGx4OworCisJREJGRU5URVI7CisJY3RseCA9IHVzYmN0bHhfYWxsb2MoKTsKKwlpZiAoIGN0bHggPT0gTlVMTCApIHsKKwkJcmVzdWx0ID0gLUVOT01FTTsKKwkJZ290byBkb25lOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGNvbW1hbmQgKi8KKwljdGx4LT5vdXRidWYucnJpZHJlcS50eXBlID0gICBob3N0MmhmYTM4NHhfMTYoSEZBMzg0eF9VU0JfUlJJRFJFUSk7CisJY3RseC0+b3V0YnVmLnJyaWRyZXEuZnJtbGVuID0KKwkJaG9zdDJoZmEzODR4XzE2KHNpemVvZihjdGx4LT5vdXRidWYucnJpZHJlcS5yaWQpKTsKKwljdGx4LT5vdXRidWYucnJpZHJlcS5yaWQgPSAgICBob3N0MmhmYTM4NHhfMTYocmlkKTsKKworCWN0bHgtPm91dGJ1ZnNpemUgPSBzaXplb2YoY3RseC0+b3V0YnVmLnJyaWRyZXEpOworCisJY3RseC0+cmVhcGFibGUgPSBtb2RlOworCWN0bHgtPmNtZGNiID0gY21kY2I7CisJY3RseC0+dXNlcmNiID0gdXNlcmNiOworCWN0bHgtPnVzZXJjYl9kYXRhID0gdXNlcmNiX2RhdGE7CisKKwkvKiBTdWJtaXQgdGhlIENUTFggKi8KKwlyZXN1bHQgPSBoZmEzODR4X3VzYmN0bHhfc3VibWl0KGh3LCBjdGx4KTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJa2ZyZWUoY3RseCk7CisJfSBlbHNlIGlmIChtb2RlID09IERPV0FJVCkgeworCQl1c2JjdGx4X3JyaWRfY29tcGxldG9yX3QgY29tcGxldG9yOworCisJCXJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jKAorCQkgICAgICAgICAgIGh3LCBjdGx4LCBpbml0X3JyaWRfY29tcGxldG9yKCZjb21wbGV0b3IsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0bHgtPmluYnVmLnJyaWRyZXNwLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZGRhdGEsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlkZGF0YWxlbikgKTsKKwl9CisKK2RvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2Rvd3JpZAorKgorKiBDb25zdHJ1Y3RzIGEgd3JpdGUgcmlkIENUTFggYW5kIGlzc3VlcyBpdC4KKyoKKyogTk9URTogQW55IGNoYW5nZXMgdG8gdGhlICdwb3N0LXN1Ym1pdCcgY29kZSBpbiB0aGlzIGZ1bmN0aW9uCisqICAgICAgIG5lZWQgdG8gYmUgY2FycmllZCBvdmVyIHRvIGhmYTM4NHhfY2J3cmlkKCkgc2luY2UgdGhlIGhhbmRsaW5nCisqICAgICAgIGlzIHZpcnR1YWxseSBpZGVudGljYWwuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJQ01EX01PREUJRE9XQUlUIG9yIERPQVNZTkMKKyoJcmlkCQlSSUQgY29kZQorKglyaWRkYXRhCQlEYXRhIHBvcnRpb24gb2YgUklEIGZvcm1hdHRlZCBmb3IgTUFDCisqCXJpZGRhdGFsZW4JTGVuZ3RoIG9mIHRoZSBkYXRhIHBvcnRpb24gaW4gYnl0ZXMKKyogICAgICAgY21kY2IgICAgICAgICAgIGNvbW1hbmQgY2FsbGJhY2sgZm9yIGFzeW5jIGNhbGxzLCBOVUxMIGZvciBET1dBSVQgY2FsbHMKKyoJdXNlcmNiCQl1c2VyIGNhbGxiYWNrIGZvciBhc3luYyBjYWxscywgTlVMTCBmb3IgRE9XQUlUIGNhbGxzCisqCXVzZXJjYl9kYXRhCXVzZXIgc3VwcGxpZWQgZGF0YSBwb2ludGVyIGZvciBhc3luYyBjYWxscworKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCS1FVElNRURPVVQJdGltZWQgb3V0IHdhaXRpbmcgZm9yIHJlZ2lzdGVyIHJlYWR5IG9yCisqCQkJY29tbWFuZCBjb21wbGV0aW9uCisqCT4wCQljb21tYW5kIGluZGljYXRlZCBlcnJvciwgU3RhdHVzIGFuZCBSZXNwMC0yIGFyZQorKgkJCWluIGh3IHN0cnVjdHVyZS4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdCAoRE9BU1lOQykKKyoJcHJvY2VzcyAoRE9XQUlUIG9yIERPQVNZTkMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK2hmYTM4NHhfZG93cmlkKAorCWhmYTM4NHhfdCAqaHcsCisJQ01EX01PREUgbW9kZSwKKwlVSU5UMTYJcmlkLAorCXZvaWQJKnJpZGRhdGEsCisJVUlOVAlyaWRkYXRhbGVuLAorCWN0bHhfY21kY2JfdCBjbWRjYiwKKwljdGx4X3VzZXJjYl90IHVzZXJjYiwKKwl2b2lkCSp1c2VyY2JfZGF0YSkKK3sKKwlpbnQJCQlyZXN1bHQ7CisJaGZhMzg0eF91c2JjdGx4X3QJKmN0bHg7CisKKwlEQkZFTlRFUjsKKwljdGx4ID0gdXNiY3RseF9hbGxvYygpOworCWlmICggY3RseCA9PSBOVUxMICkgeworCQlyZXN1bHQgPSAtRU5PTUVNOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogSW5pdGlhbGl6ZSB0aGUgY29tbWFuZCAqLworCWN0bHgtPm91dGJ1Zi53cmlkcmVxLnR5cGUgPSAgIGhvc3QyaGZhMzg0eF8xNihIRkEzODR4X1VTQl9XUklEUkVRKTsKKwljdGx4LT5vdXRidWYud3JpZHJlcS5mcm1sZW4gPSBob3N0MmhmYTM4NHhfMTYoCisJCQkJCShzaXplb2YoY3RseC0+b3V0YnVmLndyaWRyZXEucmlkKSArCisJCQkJCXJpZGRhdGFsZW4gKyAxKSAvIDIpOworCWN0bHgtPm91dGJ1Zi53cmlkcmVxLnJpZCA9ICAgIGhvc3QyaGZhMzg0eF8xNihyaWQpOworCW1lbWNweShjdGx4LT5vdXRidWYud3JpZHJlcS5kYXRhLCByaWRkYXRhLCByaWRkYXRhbGVuKTsKKworCWN0bHgtPm91dGJ1ZnNpemUgPSBzaXplb2YoY3RseC0+b3V0YnVmLndyaWRyZXEudHlwZSkgKworCSAgICAgICAgICAgICAgICAgICBzaXplb2YoY3RseC0+b3V0YnVmLndyaWRyZXEuZnJtbGVuKSArCisJICAgICAgICAgICAgICAgICAgIHNpemVvZihjdGx4LT5vdXRidWYud3JpZHJlcS5yaWQpICsKKwkgICAgICAgICAgICAgICAgICAgcmlkZGF0YWxlbjsKKworCWN0bHgtPnJlYXBhYmxlID0gbW9kZTsKKwljdGx4LT5jbWRjYiA9IGNtZGNiOworCWN0bHgtPnVzZXJjYiA9IHVzZXJjYjsKKwljdGx4LT51c2VyY2JfZGF0YSA9IHVzZXJjYl9kYXRhOworCisJLyogU3VibWl0IHRoZSBDVExYICovCisJcmVzdWx0ID0gaGZhMzg0eF91c2JjdGx4X3N1Ym1pdChodywgY3RseCk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWtmcmVlKGN0bHgpOworCX0gZWxzZSBpZiAobW9kZSA9PSBET1dBSVQpIHsKKwkJdXNiY3RseF93cmlkX2NvbXBsZXRvcl90IGNvbXBsZXRvcjsKKwkJaGZhMzg0eF9jbWRyZXN1bHRfdCB3cmlkcmVzdWx0OworCisJCXJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jKAorCQkgICAgICAgICAgICAgICBodywKKwkJICAgICAgICAgICAgICAgY3RseCwKKwkJICAgICAgICAgICAgICAgaW5pdF93cmlkX2NvbXBsZXRvcigmY29tcGxldG9yLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdGx4LT5pbmJ1Zi53cmlkcmVzcCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpZHJlc3VsdCkgKTsKKwl9CisKK2RvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kb3JtZW0KKyoKKyogQ29uc3RydWN0cyBhIHJlYWRtZW0gQ1RMWCBhbmQgaXNzdWVzIGl0LgorKgorKiBOT1RFOiBBbnkgY2hhbmdlcyB0byB0aGUgJ3Bvc3Qtc3VibWl0JyBjb2RlIGluIHRoaXMgZnVuY3Rpb24KKyogICAgICAgbmVlZCB0byBiZSBjYXJyaWVkIG92ZXIgdG8gaGZhMzg0eF9jYnJtZW0oKSBzaW5jZSB0aGUgaGFuZGxpbmcKKyogICAgICAgaXMgdmlydHVhbGx5IGlkZW50aWNhbC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltb2RlCQlET1dBSVQgb3IgRE9BU1lOQworKglwYWdlCQlNQUMgYWRkcmVzcyBzcGFjZSBwYWdlIChDTUQgZm9ybWF0KQorKglvZmZzZXQJCU1BQyBhZGRyZXNzIHNwYWNlIG9mZnNldAorKglkYXRhCQlQdHIgdG8gZGF0YSBidWZmZXIgdG8gcmVjZWl2ZSByZWFkCisqCWxlbgkJTGVuZ3RoIG9mIHRoZSBkYXRhIHRvIHJlYWQgKG1heCA9PSAyMDQ4KQorKgljbWRjYgkJY29tbWFuZCBjYWxsYmFjayBmb3IgYXN5bmMgY2FsbHMsIE5VTEwgZm9yIERPV0FJVCBjYWxscworKgl1c2VyY2IJCXVzZXIgY2FsbGJhY2sgZm9yIGFzeW5jIGNhbGxzLCBOVUxMIGZvciBET1dBSVQgY2FsbHMKKyoJdXNlcmNiX2RhdGEJdXNlciBzdXBwbGllZCBkYXRhIHBvaW50ZXIgZm9yIGFzeW5jIGNhbGxzCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJLUVUSU1FRE9VVAl0aW1lZCBvdXQgd2FpdGluZyBmb3IgcmVnaXN0ZXIgcmVhZHkgb3IKKyoJCQljb21tYW5kIGNvbXBsZXRpb24KKyoJPjAJCWNvbW1hbmQgaW5kaWNhdGVkIGVycm9yLCBTdGF0dXMgYW5kIFJlc3AwLTIgYXJlCisqCQkJaW4gaHcgc3RydWN0dXJlLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0IChET0FTWU5DKQorKglwcm9jZXNzIChET1dBSVQgb3IgRE9BU1lOQykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAoraGZhMzg0eF9kb3JtZW0oCisJaGZhMzg0eF90ICpodywKKwlDTURfTU9ERSBtb2RlLAorCVVJTlQxNglwYWdlLAorCVVJTlQxNglvZmZzZXQsCisJdm9pZAkqZGF0YSwKKwlVSU5UCWxlbiwKKwljdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpCit7CisJaW50CQkJcmVzdWx0OworCWhmYTM4NHhfdXNiY3RseF90CSpjdGx4OworCisJREJGRU5URVI7CisJY3RseCA9IHVzYmN0bHhfYWxsb2MoKTsKKwlpZiAoIGN0bHggPT0gTlVMTCApIHsKKwkJcmVzdWx0ID0gLUVOT01FTTsKKwkJZ290byBkb25lOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGNvbW1hbmQgKi8KKwljdGx4LT5vdXRidWYucm1lbXJlcS50eXBlID0gICAgaG9zdDJoZmEzODR4XzE2KEhGQTM4NHhfVVNCX1JNRU1SRVEpOworCWN0bHgtPm91dGJ1Zi5ybWVtcmVxLmZybWxlbiA9ICBob3N0MmhmYTM4NHhfMTYoCisJCQkJCXNpemVvZihjdGx4LT5vdXRidWYucm1lbXJlcS5vZmZzZXQpICsKKwkJCQkJc2l6ZW9mKGN0bHgtPm91dGJ1Zi5ybWVtcmVxLnBhZ2UpICsKKwkJCQkJbGVuKTsKKwljdGx4LT5vdXRidWYucm1lbXJlcS5vZmZzZXQgPQlob3N0MmhmYTM4NHhfMTYob2Zmc2V0KTsKKwljdGx4LT5vdXRidWYucm1lbXJlcS5wYWdlID0JaG9zdDJoZmEzODR4XzE2KHBhZ2UpOworCisJY3RseC0+b3V0YnVmc2l6ZSA9IHNpemVvZihjdGx4LT5vdXRidWYucm1lbXJlcSk7CisKKwlXTEFOX0xPR19ERUJVRyg0LAorCQkidHlwZT0weCUwNHggZnJtbGVuPSVkIG9mZnNldD0weCUwNHggcGFnZT0weCUwNHhcbiIsCisJCWN0bHgtPm91dGJ1Zi5ybWVtcmVxLnR5cGUsCisJCWN0bHgtPm91dGJ1Zi5ybWVtcmVxLmZybWxlbiwKKwkJY3RseC0+b3V0YnVmLnJtZW1yZXEub2Zmc2V0LAorCQljdGx4LT5vdXRidWYucm1lbXJlcS5wYWdlKTsKKworCVdMQU5fTE9HX0RFQlVHKDQsInBrdHNpemU9JXpkXG4iLAorCQlST1VORFVQNjQoc2l6ZW9mKGN0bHgtPm91dGJ1Zi5ybWVtcmVxKSkpOworCisJY3RseC0+cmVhcGFibGUgPSBtb2RlOworCWN0bHgtPmNtZGNiID0gY21kY2I7CisJY3RseC0+dXNlcmNiID0gdXNlcmNiOworCWN0bHgtPnVzZXJjYl9kYXRhID0gdXNlcmNiX2RhdGE7CisKKwlyZXN1bHQgPSBoZmEzODR4X3VzYmN0bHhfc3VibWl0KGh3LCBjdGx4KTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJa2ZyZWUoY3RseCk7CisJfSBlbHNlIGlmICggbW9kZSA9PSBET1dBSVQgKSB7CisgICAgICAgICAgICAgICAgdXNiY3RseF9ybWVtX2NvbXBsZXRvcl90IGNvbXBsZXRvcjsKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaHcsIGN0bHgsIGluaXRfcm1lbV9jb21wbGV0b3IoJmNvbXBsZXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdGx4LT5pbmJ1Zi5ybWVtcmVzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pICk7CisJfQorCitkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2Rvd21lbQorKgorKiBDb25zdHJ1Y3RzIGEgd3JpdGVtZW0gQ1RMWCBhbmQgaXNzdWVzIGl0LgorKgorKiBOT1RFOiBBbnkgY2hhbmdlcyB0byB0aGUgJ3Bvc3Qtc3VibWl0JyBjb2RlIGluIHRoaXMgZnVuY3Rpb24KKyogICAgICAgbmVlZCB0byBiZSBjYXJyaWVkIG92ZXIgdG8gaGZhMzg0eF9jYndtZW0oKSBzaW5jZSB0aGUgaGFuZGxpbmcKKyogICAgICAgaXMgdmlydHVhbGx5IGlkZW50aWNhbC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltb2RlCQlET1dBSVQgb3IgRE9BU1lOQworKglwYWdlCQlNQUMgYWRkcmVzcyBzcGFjZSBwYWdlIChDTUQgZm9ybWF0KQorKglvZmZzZXQJCU1BQyBhZGRyZXNzIHNwYWNlIG9mZnNldAorKglkYXRhCQlQdHIgdG8gZGF0YSBidWZmZXIgY29udGFpbmluZyB3cml0ZSBkYXRhCisqCWxlbgkJTGVuZ3RoIG9mIHRoZSBkYXRhIHRvIHJlYWQgKG1heCA9PSAyMDQ4KQorKgljbWRjYgkJY29tbWFuZCBjYWxsYmFjayBmb3IgYXN5bmMgY2FsbHMsIE5VTEwgZm9yIERPV0FJVCBjYWxscworKgl1c2VyY2IJCXVzZXIgY2FsbGJhY2sgZm9yIGFzeW5jIGNhbGxzLCBOVUxMIGZvciBET1dBSVQgY2FsbHMKKyoJdXNlcmNiX2RhdGEJdXNlciBzdXBwbGllZCBkYXRhIHBvaW50ZXIgZm9yIGFzeW5jIGNhbGxzLgorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCS1FVElNRURPVVQJdGltZWQgb3V0IHdhaXRpbmcgZm9yIHJlZ2lzdGVyIHJlYWR5IG9yCisqCQkJY29tbWFuZCBjb21wbGV0aW9uCisqCT4wCQljb21tYW5kIGluZGljYXRlZCBlcnJvciwgU3RhdHVzIGFuZCBSZXNwMC0yIGFyZQorKgkJCWluIGh3IHN0cnVjdHVyZS4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdCAoRE9XQUlUKQorKglwcm9jZXNzIChET1dBSVQgb3IgRE9BU1lOQykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAoraGZhMzg0eF9kb3dtZW0oCisJaGZhMzg0eF90ICpodywKKwlDTURfTU9ERSBtb2RlLAorCVVJTlQxNglwYWdlLAorCVVJTlQxNglvZmZzZXQsCisJdm9pZAkqZGF0YSwKKwlVSU5UCWxlbiwKKwljdGx4X2NtZGNiX3QgY21kY2IsCisJY3RseF91c2VyY2JfdCB1c2VyY2IsCisJdm9pZAkqdXNlcmNiX2RhdGEpCit7CisJaW50CQkJcmVzdWx0OworCWhmYTM4NHhfdXNiY3RseF90CSpjdGx4OworCisJREJGRU5URVI7CisJV0xBTl9MT0dfREVCVUcoNSwgInBhZ2U9MHglMDR4IG9mZnNldD0weCUwNHggbGVuPSVkXG4iLAorCQlwYWdlLG9mZnNldCxsZW4pOworCisJY3RseCA9IHVzYmN0bHhfYWxsb2MoKTsKKwlpZiAoIGN0bHggPT0gTlVMTCApIHsKKwkJcmVzdWx0ID0gLUVOT01FTTsKKwkJZ290byBkb25lOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGNvbW1hbmQgKi8KKwljdGx4LT5vdXRidWYud21lbXJlcS50eXBlID0gICBob3N0MmhmYTM4NHhfMTYoSEZBMzg0eF9VU0JfV01FTVJFUSk7CisJY3RseC0+b3V0YnVmLndtZW1yZXEuZnJtbGVuID0gaG9zdDJoZmEzODR4XzE2KAorCQkJCQlzaXplb2YoY3RseC0+b3V0YnVmLndtZW1yZXEub2Zmc2V0KSArCisJCQkJCXNpemVvZihjdGx4LT5vdXRidWYud21lbXJlcS5wYWdlKSArCisJCQkJCWxlbik7CisJY3RseC0+b3V0YnVmLndtZW1yZXEub2Zmc2V0ID0gaG9zdDJoZmEzODR4XzE2KG9mZnNldCk7CisJY3RseC0+b3V0YnVmLndtZW1yZXEucGFnZSA9ICAgaG9zdDJoZmEzODR4XzE2KHBhZ2UpOworCW1lbWNweShjdGx4LT5vdXRidWYud21lbXJlcS5kYXRhLCBkYXRhLCBsZW4pOworCisJY3RseC0+b3V0YnVmc2l6ZSA9IHNpemVvZihjdGx4LT5vdXRidWYud21lbXJlcS50eXBlKSArCisJICAgICAgICAgICAgICAgICAgIHNpemVvZihjdGx4LT5vdXRidWYud21lbXJlcS5mcm1sZW4pICsKKwkgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0bHgtPm91dGJ1Zi53bWVtcmVxLm9mZnNldCkgKworCSAgICAgICAgICAgICAgICAgICBzaXplb2YoY3RseC0+b3V0YnVmLndtZW1yZXEucGFnZSkgKworCSAgICAgICAgICAgICAgICAgICBsZW47CisKKwljdGx4LT5yZWFwYWJsZSA9IG1vZGU7CisJY3RseC0+Y21kY2IgPSBjbWRjYjsKKwljdGx4LT51c2VyY2IgPSB1c2VyY2I7CisJY3RseC0+dXNlcmNiX2RhdGEgPSB1c2VyY2JfZGF0YTsKKworCXJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9zdWJtaXQoaHcsIGN0bHgpOworCWlmIChyZXN1bHQgIT0gMCkgeworCQlrZnJlZShjdGx4KTsKKwl9IGVsc2UgaWYgKCBtb2RlID09IERPV0FJVCApIHsKKyAgICAgICAgICAgICAgICB1c2JjdGx4X3dtZW1fY29tcGxldG9yX3QgY29tcGxldG9yOworICAgICAgICAgICAgICAgIGhmYTM4NHhfY21kcmVzdWx0X3Qgd21lbXJlc3VsdDsKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfdXNiY3RseF9jb21wbGV0ZV9zeW5jKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0bHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF93bWVtX2NvbXBsZXRvcigmY29tcGxldG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0bHgtPmluYnVmLndtZW1yZXNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndtZW1yZXN1bHQpICk7CisJfQorCitkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX2NvbW10YWxsaWVzCisqCisqIFNlbmQgYSBjb21tdGFsbGllcyBpbnF1aXJ5IHRvIHRoZSBNQUMuICBOb3RlIHRoYXQgdGhpcyBpcyBhbiBhc3luYworKiBjYWxsIHRoYXQgd2lsbCByZXN1bHQgaW4gYW4gaW5mbyBmcmFtZSBhcnJpdmluZyBzb21ldGltZSBsYXRlci4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgl6ZXJvCQlzdWNjZXNzLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX2NvbW10YWxsaWVzKCBoZmEzODR4X3QgKmh3ICkKK3sKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKwlEQkZFTlRFUjsKKworCWNtZC5jbWQgPSBIRkEzODR4X0NNRENPREVfSU5ROworCWNtZC5wYXJtMCA9IEhGQTM4NHhfSVRfQ09NTVRBTExJRVM7CisJY21kLnBhcm0xID0gMDsKKwljbWQucGFybTIgPSAwOworCisJaGZhMzg0eF9kb2NtZF9hc3luYyhodywgJmNtZCwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZGlzYWJsZQorKgorKiBJc3N1ZXMgdGhlIGRpc2FibGUgY29tbWFuZCB0byBzdG9wIGNvbW11bmljYXRpb25zIG9uIG9uZSBvZgorKiB0aGUgTUFDcyAncG9ydHMnLiAgT25seSBtYWNwb3J0IDAgaXMgdmFsaWQgIGZvciBzdGF0aW9ucy4KKyogQVBzIG1heSBhbHNvIGRpc2FibGUgbWFjcG9ydHMgMS02LiAgT25seSBwb3J0cyB0aGF0IGhhdmUgYmVlbgorKiBwcmV2aW91c2x5IGVuYWJsZWQgbWF5IGJlIGRpc2FibGVkLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCW1hY3BvcnQJCU1BQyBwb3J0IG51bWJlciAoaG9zdCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX2Rpc2FibGUoaGZhMzg0eF90ICpodywgVUlOVDE2IG1hY3BvcnQpCit7CisJaW50CXJlc3VsdCA9IDA7CisKKwlEQkZFTlRFUjsKKwlpZiAoKCFody0+aXNhcCAmJiBtYWNwb3J0ICE9IDApIHx8CisJICAgIChody0+aXNhcCAmJiAhKG1hY3BvcnQgPD0gSEZBMzg0eF9QT1JUSURfTUFYKSkgfHwKKwkgICAgIShody0+cG9ydF9lbmFibGVkW21hY3BvcnRdKSApeworCQlyZXN1bHQgPSAtRUlOVkFMOworCX0gZWxzZSB7CisJCXJlc3VsdCA9IGhmYTM4NHhfY21kX2Rpc2FibGUoaHcsIG1hY3BvcnQpOworCQlpZiAoIHJlc3VsdCA9PSAwICkgeworCQkJaHctPnBvcnRfZW5hYmxlZFttYWNwb3J0XSA9IDA7CisJCX0KKwl9CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZW5hYmxlCisqCisqIElzc3VlcyB0aGUgZW5hYmxlIGNvbW1hbmQgdG8gZW5hYmxlIGNvbW11bmljYXRpb25zIG9uIG9uZSBvZgorKiB0aGUgTUFDcyAncG9ydHMnLiAgT25seSBtYWNwb3J0IDAgaXMgdmFsaWQgIGZvciBzdGF0aW9ucy4KKyogQVBzIG1heSBhbHNvIGVuYWJsZSBtYWNwb3J0cyAxLTYuICBPbmx5IHBvcnRzIHRoYXQgYXJlIGN1cnJlbnRseQorKiBkaXNhYmxlZCBtYXkgYmUgZW5hYmxlZC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKgltYWNwb3J0CQlNQUMgcG9ydCBudW1iZXIKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGZhaWx1cmUgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvciAodGltZW91dHxiYWQgYXJnKQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX2VuYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMTYgbWFjcG9ydCkKK3sKKwlpbnQJcmVzdWx0ID0gMDsKKworCURCRkVOVEVSOworCWlmICgoIWh3LT5pc2FwICYmIG1hY3BvcnQgIT0gMCkgfHwKKwkgICAgKGh3LT5pc2FwICYmICEobWFjcG9ydCA8PSBIRkEzODR4X1BPUlRJRF9NQVgpKSB8fAorCSAgICAoaHctPnBvcnRfZW5hYmxlZFttYWNwb3J0XSkgKXsKKwkJcmVzdWx0ID0gLUVJTlZBTDsKKwl9IGVsc2UgeworCQlyZXN1bHQgPSBoZmEzODR4X2NtZF9lbmFibGUoaHcsIG1hY3BvcnQpOworCQlpZiAoIHJlc3VsdCA9PSAwICkgeworCQkJaHctPnBvcnRfZW5hYmxlZFttYWNwb3J0XSA9IDE7CisJCX0KKwl9CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZmxhc2hkbF9lbmFibGUKKyoKKyogQmVnaW5zIHRoZSBmbGFzaCBkb3dubG9hZCBzdGF0ZS4gIENoZWNrcyB0byBzZWUgdGhhdCB3ZSdyZSBub3QKKyogYWxyZWFkeSBpbiBhIGRvd25sb2FkIHN0YXRlIGFuZCB0aGF0IGEgcG9ydCBpc24ndCBlbmFibGVkLgorKiBTZXRzIHRoZSBkb3dubG9hZCBzdGF0ZSBhbmQgcmV0cmlldmVzIHRoZSBmbGFzaCBkb3dubG9hZAorKiBidWZmZXIgbG9jYXRpb24sIGJ1ZmZlciBzaXplLCBhbmQgdGltZW91dCBsZW5ndGguCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9mbGFzaGRsX2VuYWJsZShoZmEzODR4X3QgKmh3KQoreworCWludAkJcmVzdWx0ID0gMDsKKwlpbnQJCWk7CisKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IGEgcG9ydCBpc24ndCBhY3RpdmUgKi8KKwlmb3IgKCBpID0gMDsgaSA8IEhGQTM4NHhfUE9SVElEX01BWDsgaSsrKSB7CisJCWlmICggaHctPnBvcnRfZW5hYmxlZFtpXSApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsImNhbGxlZCB3aGVuIHBvcnQgZW5hYmxlZC5cbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIG5vdCBhbHJlYWR5IGluIGEgZG93bmxvYWQgc3RhdGUgKi8KKwlpZiAoIGh3LT5kbHN0YXRlICE9IEhGQTM4NHhfRExTVEFURV9ESVNBQkxFRCApIHsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogUmV0cmlldmUgdGhlIGJ1ZmZlciBsb2Mmc2l6ZSBhbmQgdGltZW91dCAqLworCWlmICggKHJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0RPV05MT0FEQlVGRkVSLAorCQkJCSYoaHctPmJ1ZmluZm8pLCBzaXplb2YoaHctPmJ1ZmluZm8pKSkgKSB7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWh3LT5idWZpbmZvLnBhZ2UgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmJ1ZmluZm8ucGFnZSk7CisJaHctPmJ1ZmluZm8ub2Zmc2V0ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5idWZpbmZvLm9mZnNldCk7CisJaHctPmJ1ZmluZm8ubGVuID0gaGZhMzg0eDJob3N0XzE2KGh3LT5idWZpbmZvLmxlbik7CisJaWYgKCAocmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9NQVhMT0FEVElNRSwKKwkJCQkmKGh3LT5kbHRpbWVvdXQpKSkgKSB7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWh3LT5kbHRpbWVvdXQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmRsdGltZW91dCk7CisKKwlXTEFOX0xPR19ERUJVRygxLCJmbGFzaGRsX2VuYWJsZVxuIik7CisKKwlody0+ZGxzdGF0ZSA9IEhGQTM4NHhfRExTVEFURV9GTEFTSEVOQUJMRUQ7CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfZmxhc2hkbF9kaXNhYmxlCisqCisqIEVuZHMgdGhlIGZsYXNoIGRvd25sb2FkIHN0YXRlLiAgTm90ZSB0aGF0IHRoaXMgd2lsbCBjYXVzZSB0aGUgTUFDCisqIGZpcm13YXJlIHRvIHJlc3RhcnQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9mbGFzaGRsX2Rpc2FibGUoaGZhMzg0eF90ICpodykKK3sKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIGFscmVhZHkgaW4gdGhlIGRvd25sb2FkIHN0YXRlICovCisJaWYgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfRkxBU0hFTkFCTEVEICkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXTEFOX0xPR19ERUJVRygxLCJmbGFzaGRsX2VuYWJsZVxuIik7CisKKwkvKiBUaGVyZSBpc24ndCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50LCBzbyBJIGRvbid0ICovCisJLyogIGJvdGhlciAgdy8gdGhlIHJldHVybiB2YWx1ZSAqLworCWhmYTM4NHhfY21kX2Rvd25sb2FkKGh3LCBIRkEzODR4X1BST0dNT0RFX0RJU0FCTEUsIDAsIDAgLCAwKTsKKwlody0+ZGxzdGF0ZSA9IEhGQTM4NHhfRExTVEFURV9ESVNBQkxFRDsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9mbGFzaGRsX3dyaXRlCisqCisqIFBlcmZvcm1zIGEgRkxBU0ggZG93bmxvYWQgb2YgYSBjaHVuayBvZiBkYXRhLiBGaXJzdCBjaGVja3MgdG8gc2VlCisqIHRoYXQgd2UncmUgaW4gdGhlIEZMQVNIIGRvd25sb2FkIHN0YXRlLCB0aGVuIHNldHMgdGhlIGRvd25sb2FkCisqIG1vZGUsIHVzZXMgdGhlIGF1eCBmdW5jdGlvbnMgdG8gMSkgY29weSB0aGUgZGF0YSB0byB0aGUgZmxhc2gKKyogYnVmZmVyLCAyKSBzZXRzIHRoZSBkb3dubG9hZCAnd3JpdGUgZmxhc2gnIG1vZGUsIDMpIHJlYWRiYWNrIGFuZAorKiBjb21wYXJlLiAgTGF0aGVyIHJpbnNlLCByZXBlYXQgYXMgbWFueSB0aW1lcyBhbiBuZWNlc3NhcnkgdG8gZ2V0CisqIGFsbCB0aGUgZ2l2ZW4gZGF0YSBpbnRvIGZsYXNoLgorKiBXaGVuIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiAocG9zc2libHkKKyogcmVwZWF0ZWRseSksIGNhbGwgZHJ2cl9mbGFzaGRsX2Rpc2FibGUoKSB0byBlbmQgdGhlIGRvd25sb2FkIHN0YXRlCisqIGFuZCByZXN0YXJ0IHRoZSBNQUMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJZGFkZHIJCUNhcmQgYWRkcmVzcyB0byB3cml0ZSB0by4gKGhvc3Qgb3JkZXIpCisqCWJ1ZgkJUHRyIHRvIGRhdGEgdG8gd3JpdGUuCisqCWxlbgkJTGVuZ3RoIG9mIGRhdGEgKGhvc3Qgb3JkZXIpLgorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQKK2hmYTM4NHhfZHJ2cl9mbGFzaGRsX3dyaXRlKAorCWhmYTM4NHhfdAkqaHcsCisJVUlOVDMyCQlkYWRkciwKKwl2b2lkCQkqYnVmLAorCVVJTlQzMgkJbGVuKQoreworCWludAkJcmVzdWx0ID0gMDsKKwlVSU5UMzIJCWRsYnVmYWRkcjsKKwlpbnQJCW5idXJuczsKKwlVSU5UMzIJCWJ1cm5sZW47CisJVUlOVDMyCQlidXJuZGFkZHI7CisJVUlOVDE2CQlidXJubG87CisJVUlOVDE2CQlidXJuaGk7CisJaW50CQlud3JpdGVzOworCVVJTlQ4CQkqd3JpdGVidWY7CisJVUlOVDE2CQl3cml0ZXBhZ2U7CisJVUlOVDE2CQl3cml0ZW9mZnNldDsKKwlVSU5UMzIJCXdyaXRlbGVuOworCWludAkJaTsKKwlpbnQJCWo7CisKKwlEQkZFTlRFUjsKKwlXTEFOX0xPR19ERUJVRyg1LCJkYWRkcj0weCUwOHggbGVuPSVkXG4iLCBkYWRkciwgbGVuKTsKKworCS8qIENoZWNrIHRoYXQgd2UncmUgaW4gdGhlIGZsYXNoIGRvd25sb2FkIHN0YXRlICovCisJaWYgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfRkxBU0hFTkFCTEVEICkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXTEFOX0xPR19JTkZPKCJEb3dubG9hZCAlZCBieXRlcyB0byBmbGFzaCBAMHglMDZ4XG4iLCBsZW4sIGRhZGRyKTsKKworCS8qIENvbnZlcnQgdG8gZmxhdCBhZGRyZXNzIGZvciBhcml0aG1ldGljICovCisJLyogTk9URTogZGxidWZmZXIgUklEIHN0b3JlcyB0aGUgYWRkcmVzcyBpbiBBVVggZm9ybWF0ICovCisJZGxidWZhZGRyID0gSEZBMzg0eF9BRERSX0FVWF9NS0ZMQVQoCisJCQlody0+YnVmaW5mby5wYWdlLCBody0+YnVmaW5mby5vZmZzZXQpOworCVdMQU5fTE9HX0RFQlVHKDUsCisJCSJkbGJ1Zi5wYWdlPTB4JTA0eCBkbGJ1Zi5vZmZzZXQ9MHglMDR4IGRsYnVmYWRkcj0weCUwOHhcbiIsCisJCWh3LT5idWZpbmZvLnBhZ2UsIGh3LT5idWZpbmZvLm9mZnNldCwgZGxidWZhZGRyKTsKKworI2lmIDAKK1dMQU5fTE9HX1dBUk5JTkcoImRsYnVmQDB4JTA2bHggbGVuPSVkIHRvPSVkXG4iLCBkbGJ1ZmFkZHIsIGh3LT5idWZpbmZvLmxlbiwgaHctPmRsdGltZW91dCk7CisjZW5kaWYKKwkvKiBDYWxjdWxhdGlvbnMgdG8gZGV0ZXJtaW5lIGhvdyBtYW55IGZpbGxzIG9mIHRoZSBkbGJ1ZmZlciB0byBkbworCSAqIGFuZCBob3cgbWFueSBVU0Igd21lbXJlcSdzIHRvIGRvIGZvciBlYWNoIGZpbGwuICBBdCB0aGlzIHBvaW50CisJICogaW4gdGltZSwgdGhlIGRsYnVmZmVyIHNpemUgYW5kIHRoZSB3bWVtcmVxIHNpemUgYXJlIHRoZSBzYW1lLgorCSAqIFRoZXJlZm9yZSwgbndyaXRlcyBzaG91bGQgYWx3YXlzIGJlIDEuICBUaGUgZXh0cmEgY29tcGxleGl0eQorCSAqIGhlcmUgaXMgYSBoZWRnZSBhZ2FpbnN0IGZ1dHVyZSBjaGFuZ2VzLgorCSAqLworCisJLyogRmlndXJlIG91dCBob3cgbWFueSB0aW1lcyB0byBkbyB0aGUgZmxhc2ggcHJvZ3JhbW1pbmcgKi8KKwluYnVybnMgPSBsZW4gLyBody0+YnVmaW5mby5sZW47CisJbmJ1cm5zICs9IChsZW4gJSBody0+YnVmaW5mby5sZW4pID8gMSA6IDA7CisKKwkvKiBGb3IgZWFjaCBmbGFzaCBwcm9ncmFtIGN5Y2xlLCBob3cgbWFueSBVU0Igd21lbXJlcSdzIGFyZSBuZWVkZWQ/ICovCisJbndyaXRlcyA9IGh3LT5idWZpbmZvLmxlbiAvIEhGQTM4NHhfVVNCX1JXTUVNX01BWExFTjsKKwlud3JpdGVzICs9IChody0+YnVmaW5mby5sZW4gJSBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pID8gMSA6IDA7CisKKwkvKiBGb3IgZWFjaCBidXJuICovCisJZm9yICggaSA9IDA7IGkgPCBuYnVybnM7IGkrKykgeworCQkvKiBHZXQgdGhlIGRlc3QgYWRkcmVzcyBhbmQgbGVuICovCisJCWJ1cm5sZW4gPSAobGVuIC0gKGh3LT5idWZpbmZvLmxlbiAqIGkpKSA+IGh3LT5idWZpbmZvLmxlbiA/CisJCQkJaHctPmJ1ZmluZm8ubGVuIDoKKwkJCQkobGVuIC0gKGh3LT5idWZpbmZvLmxlbiAqIGkpKTsKKwkJYnVybmRhZGRyID0gZGFkZHIgKyAoaHctPmJ1ZmluZm8ubGVuICogaSk7CisJCWJ1cm5sbyA9IEhGQTM4NHhfQUREUl9DTURfTUtPRkYoYnVybmRhZGRyKTsKKwkJYnVybmhpID0gSEZBMzg0eF9BRERSX0NNRF9NS1BBR0UoYnVybmRhZGRyKTsKKworCQlXTEFOX0xPR19JTkZPKCJXcml0aW5nICVkIGJ5dGVzIHRvIGZsYXNoIEAweCUwNnhcbiIsCisJCQlidXJubGVuLCBidXJuZGFkZHIpOworCisJCS8qIFNldCB0aGUgZG93bmxvYWQgbW9kZSAqLworCQlyZXN1bHQgPSBoZmEzODR4X2NtZF9kb3dubG9hZChodywgSEZBMzg0eF9QUk9HTU9ERV9OViwKKwkJCQlidXJubG8sIGJ1cm5oaSwgYnVybmxlbik7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoImRvd25sb2FkKE5WLGxvPSV4LGhpPSV4LGxlbj0leCkgIgorCQkJCSJjbWQgZmFpbGVkLCByZXN1bHQ9JWQuIEFib3J0aW5nIGQvbFxuIiwKKwkJCQlidXJubG8sIGJ1cm5oaSwgYnVybmxlbiwgcmVzdWx0KTsKKwkJCWdvdG8gZXhpdF9wcm9jOworCQl9CisKKwkJLyogY29weSB0aGUgZGF0YSB0byB0aGUgZmxhc2ggZG93bmxvYWQgYnVmZmVyICovCisJCWZvciAoIGo9MDsgaiA8IG53cml0ZXM7IGorKykgeworCQkJd3JpdGVidWYgPSBidWYgKworCQkJCShpKmh3LT5idWZpbmZvLmxlbikgKworCQkJCShqKkhGQTM4NHhfVVNCX1JXTUVNX01BWExFTik7CisKKwkJCXdyaXRlcGFnZSA9IEhGQTM4NHhfQUREUl9DTURfTUtQQUdFKAorCQkJCQlkbGJ1ZmFkZHIgKworCQkJCQkoaipIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pKTsKKwkJCXdyaXRlb2Zmc2V0ID0gSEZBMzg0eF9BRERSX0NNRF9NS09GRigKKwkJCQkJZGxidWZhZGRyICsKKwkJCQkJKGoqSEZBMzg0eF9VU0JfUldNRU1fTUFYTEVOKSk7CisKKwkJCXdyaXRlbGVuID0gYnVybmxlbi0oaipIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pOworCQkJd3JpdGVsZW4gPSB3cml0ZWxlbiAgPiBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4gPworCQkJCQlIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4gOgorCQkJCQl3cml0ZWxlbjsKKworCQkJcmVzdWx0ID0gaGZhMzg0eF9kb3dtZW1fd2FpdCggaHcsCisJCQkJCXdyaXRlcGFnZSwKKwkJCQkJd3JpdGVvZmZzZXQsCisJCQkJCXdyaXRlYnVmLAorCQkJCQl3cml0ZWxlbiApOworI2lmIDAKKworQ29tbWVudCBvdXQgZm9yIGRlYnVnZ2luZywgYXNzdW1lIHRoZSB3cml0ZSB3YXMgc3VjY2Vzc2Z1bC4KKwkJCWlmIChyZXN1bHQpIHsKKwkJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkJIldyaXRlIHRvIGRsIGJ1ZmZlciBmYWlsZWQsICIKKwkJCQkJInJlc3VsdD0weCUwNHguIEFib3J0aW5nLlxuIiwKKwkJCQkJcmVzdWx0KTsKKwkJCQlnb3RvIGV4aXRfcHJvYzsKKwkJCX0KKyNlbmRpZgorCisJCX0KKworCQkvKiBzZXQgdGhlIGRvd25sb2FkICd3cml0ZSBmbGFzaCcgbW9kZSAqLworCQlyZXN1bHQgPSBoZmEzODR4X2NtZF9kb3dubG9hZChodywKKwkJCQlIRkEzODR4X1BST0dNT0RFX05WV1JJVEUsCisJCQkJMCwwLDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCSJkb3dubG9hZChOVldSSVRFLGxvPSV4LGhpPSV4LGxlbj0leCkgIgorCQkJCSJjbWQgZmFpbGVkLCByZXN1bHQ9JWQuIEFib3J0aW5nIGQvbFxuIiwKKwkJCQlidXJubG8sIGJ1cm5oaSwgYnVybmxlbiwgcmVzdWx0KTsKKwkJCWdvdG8gZXhpdF9wcm9jOworCQl9CisKKwkJLyogVE9ETzogV2UgcmVhbGx5IHNob3VsZCBkbyBhIHJlYWRiYWNrIGFuZCBjb21wYXJlLiAqLworCX0KKworZXhpdF9wcm9jOgorCisJLyogTGVhdmUgdGhlIGZpcm13YXJlIGluIHRoZSAncG9zdC1wcm9nJyBtb2RlLiAgZmxhc2hkbF9kaXNhYmxlIHdpbGwgKi8KKwkvKiAgYWN0dWFsbHkgZGlzYWJsZSBwcm9ncmFtbWluZyBtb2RlLiAgUmVtZW1iZXIsIHRoYXQgd2lsbCBjYXVzZSB0aGUgKi8KKwkvKiAgdGhlIGZpcm13YXJlIHRvIGVmZmVjdGl2ZWx5IHJlc2V0IGl0c2VsZi4gKi8KKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX2dldGNvbmZpZworKgorKiBQZXJmb3JtcyB0aGUgc2VxdWVuY2UgbmVjZXNzYXJ5IHRvIHJlYWQgYSBjb25maWcvaW5mbyBpdGVtLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCXJpZAkJY29uZmlnL2luZm8gcmVjb3JkIGlkIChob3N0IG9yZGVyKQorKglidWYJCWhvc3Qgc2lkZSByZWNvcmQgYnVmZmVyLiAgVXBvbiByZXR1cm4gaXQgd2lsbAorKgkJCWNvbnRhaW4gdGhlIGJvZHkgcG9ydGlvbiBvZiB0aGUgcmVjb3JkIChtaW51cyB0aGUKKyoJCQlSSUQgYW5kIGxlbikuCisqCWxlbgkJYnVmZmVyIGxlbmd0aCAoaW4gYnl0ZXMsIHNob3VsZCBtYXRjaCByZWNvcmQgbGVuZ3RoKQorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgktRU5PREFUQSAJbGVuZ3RoIG1pc21hdGNoIGJldHdlZW4gYXJndW1lbnQgYW5kIHJldHJpZXZlZAorKgkJCXJlY29yZC4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaGZhMzg0eF90ICpodywgVUlOVDE2IHJpZCwgdm9pZCAqYnVmLCBVSU5UMTYgbGVuKQoreworCWludCAJCQlyZXN1bHQ7CisJREJGRU5URVI7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RvcnJpZF93YWl0KGh3LCByaWQsIGJ1ZiwgbGVuKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBoZmEzODR4X2RydnJfZ2V0Y29uZmlnX2FzeW5jCisgKgorICogUGVyZm9ybXMgdGhlIHNlcXVlbmNlIG5lY2Vzc2FyeSB0byBwZXJmb3JtIGFuIGFzeW5jIHJlYWQgb2YKKyAqIG9mIGEgY29uZmlnL2luZm8gaXRlbS4KKyAqCisgKiBBcmd1bWVudHM6CisgKiAgICAgICBodyAgICAgICAgICAgICAgZGV2aWNlIHN0cnVjdHVyZQorICogICAgICAgcmlkICAgICAgICAgICAgIGNvbmZpZy9pbmZvIHJlY29yZCBpZCAoaG9zdCBvcmRlcikKKyAqICAgICAgIGJ1ZiAgICAgICAgICAgICBob3N0IHNpZGUgcmVjb3JkIGJ1ZmZlci4gIFVwb24gcmV0dXJuIGl0IHdpbGwKKyAqICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSBib2R5IHBvcnRpb24gb2YgdGhlIHJlY29yZCAobWludXMgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgUklEIGFuZCBsZW4pLgorICogICAgICAgbGVuICAgICAgICAgICAgIGJ1ZmZlciBsZW5ndGggKGluIGJ5dGVzLCBzaG91bGQgbWF0Y2ggcmVjb3JkIGxlbmd0aCkKKyAqICAgICAgIGNiZm4gICAgICAgICAgICBjYWxsZXIgc3VwcGxpZWQgY2FsbGJhY2ssIGNhbGxlZCB3aGVuIHRoZSBjb21tYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgaXMgZG9uZSAoc3VjY2Vzc2Z1bCBvciBub3QpLgorICogICAgICAgY2JmbmRhdGEgICAgICAgIHBvaW50ZXIgdG8gc29tZSBjYWxsZXIgc3VwcGxpZWQgZGF0YSB0aGF0IHdpbGwgYmUKKyAqICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgaW4gYXMgYW4gYXJndW1lbnQgdG8gdGhlIGNiZm4uCisgKgorICogUmV0dXJuczoKKyAqICAgICAgIG5vdGhpbmcgICAgICAgICB0aGUgY2JmbiBnZXRzIGEgc3RhdHVzIGFyZ3VtZW50IGlkZW50aWZ5aW5nIGlmCisgKiAgICAgICAgICAgICAgICAgICAgICAgYW55IGVycm9ycyBvY2N1ci4KKyAqIFNpZGUgZWZmZWN0czoKKyAqICAgICAgIFF1ZXVlcyBhbiBoZmEzODR4X3VzYmNtZF90IGZvciBzdWJzZXF1ZW50IGV4ZWN1dGlvbi4KKyAqCisgKiBDYWxsIGNvbnRleHQ6CisgKiAgICAgICBBbnkKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludAoraGZhMzg0eF9kcnZyX2dldGNvbmZpZ19hc3luYygKKyAgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodywKKyAgICAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgIHJpZCwKKyAgICAgICAgIGN0bHhfdXNlcmNiX3QgICAgICAgICAgIHVzZXJjYiwKKyAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICp1c2VyY2JfZGF0YSkKK3sKKyAgICAgICAgIHJldHVybiBoZmEzODR4X2RvcnJpZF9hc3luYyhodywgcmlkLCBOVUxMLCAwLAorCQkJCSAgICAgaGZhMzg0eF9jYl9ycmlkLCB1c2VyY2IsIHVzZXJjYl9kYXRhKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBoZmEzODR4X2RydnJfc2V0Y29uZmlnX2FzeW5jCisgKgorICogUGVyZm9ybXMgdGhlIHNlcXVlbmNlIG5lY2Vzc2FyeSB0byB3cml0ZSBhIGNvbmZpZy9pbmZvIGl0ZW0uCisgKgorICogQXJndW1lbnRzOgorICogICAgICAgaHcgICAgICAgICAgICAgIGRldmljZSBzdHJ1Y3R1cmUKKyAqICAgICAgIHJpZCAgICAgICAgICAgICBjb25maWcvaW5mbyByZWNvcmQgaWQgKGluIGhvc3Qgb3JkZXIpCisgKiAgICAgICBidWYgICAgICAgICAgICAgaG9zdCBzaWRlIHJlY29yZCBidWZmZXIKKyAqICAgICAgIGxlbiAgICAgICAgICAgICBidWZmZXIgbGVuZ3RoIChpbiBieXRlcykKKyAqICAgICAgIHVzZXJjYiAgICAgICAgICBjb21wbGV0aW9uIGNhbGxiYWNrCisgKiAgICAgICB1c2VyY2JfZGF0YSAgICAgY29tcGxldGlvbiBjYWxsYmFjayBhcmd1bWVudAorICoKKyAqIFJldHVybnM6CisgKiAgICAgICAwICAgICAgICAgICAgICAgc3VjY2VzcworICogICAgICAgPjAgICAgICAgICAgICAgIGYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorICogICAgICAgPDAgICAgICAgICAgICAgIGRyaXZlciByZXBvcnRlZCBlcnJvcgorICoKKyAqIFNpZGUgZWZmZWN0czoKKyAqCisgKiBDYWxsIGNvbnRleHQ6CisgKiAgICAgICBwcm9jZXNzCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQKK2hmYTM4NHhfZHJ2cl9zZXRjb25maWdfYXN5bmMoCisgICAgICAgICBoZmEzODR4X3QgICAgICAgKmh3LAorICAgICAgICAgVUlOVDE2ICAgICAgICAgIHJpZCwKKyAgICAgICAgIHZvaWQgICAgICAgICAgICAqYnVmLAorICAgICAgICAgVUlOVDE2ICAgICAgICAgIGxlbiwKKyAgICAgICAgIGN0bHhfdXNlcmNiX3QgICB1c2VyY2IsCisgICAgICAgICB2b2lkICAgICAgICAgICAgKnVzZXJjYl9kYXRhKQoreworCXJldHVybiBoZmEzODR4X2Rvd3JpZF9hc3luYyhodywgcmlkLCBidWYsIGxlbiwKKwkJCQkgICAgaGZhMzg0eF9jYl9zdGF0dXMsIHVzZXJjYiwgdXNlcmNiX2RhdGEpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX2hhbmRvdmVyCisqCisqIFNlbmRzIGEgaGFuZG92ZXIgbm90aWZpY2F0aW9uIHRvIHRoZSBNQUMuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJYWRkcgkJYWRkcmVzcyBvZiBzdGF0aW9uIHRoYXQncyBsZWZ0CisqCisqIFJldHVybnM6CisqCXplcm8JCXN1Y2Nlc3MuCisqCS1FUkVTVEFSVFNZUwlyZWNlaXZlZCBzaWduYWwgd2hpbGUgd2FpdGluZyBmb3Igc2VtYXBob3JlLgorKgktRUlPCQlmYWlsZWQgdG8gd3JpdGUgdG8gYmFwLCBvciBmYWlsZWQgaW4gY21kLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX2hhbmRvdmVyKCBoZmEzODR4X3QgKmh3LCBVSU5UOCAqYWRkcikKK3sKKyAgICAgICAgREJGRU5URVI7CisJV0xBTl9MT0dfRVJST1IoIk5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIFVTQiFcbiIpOworCURCRkVYSVQ7CisJcmV0dXJuIC1FSU87Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfbG93X2xldmVsCisqCisqIFdyaXRlIHRlc3QgY29tbWFuZHMgdG8gdGhlIGNhcmQuICBTb21lIHRlc3QgY29tbWFuZHMgZG9uJ3QgbWFrZQorKiBzZW5zZSB3aXRob3V0IHByaW9yIHNldC11cC4gIEZvciBleGFtcGxlLCBjb250aW5vdXMgVFggaXNuJ3QgdmVyeQorKiB1c2VmdWwgdW50aWwgeW91IHNldCB0aGUgY2hhbm5lbC4gIFRoYXQgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgcHJvY2VzcyB0aHJlYWQKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9sb3dfbGV2ZWwoaGZhMzg0eF90ICpodywgaGZhMzg0eF9tZXRhY21kX3QgKmNtZCkKK3sKKwlpbnQgICAgICAgICAgICAgcmVzdWx0OworCURCRkVOVEVSOworCisJLyogRG8gaSBuZWVkIGEgaG9zdDJoZmEuLi4gY29udmVyc2lvbiA/ICovCisKKwlyZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsIGNtZCk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfbW1pX3JlYWQKKyoKKyogUmVhZCBtbWkgcmVnaXN0ZXJzLiAgbW1pIGlzIGludGVyc2lsLXNwZWFrIGZvciB0aGUgYmFzZWJhbmQKKyogcHJvY2Vzc29yIHJlZ2lzdGVycy4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBodyAgICAgICAgICAgICAgZGV2aWNlIHN0cnVjdHVyZQorKiAgICAgICByZWdpc3RlciAgICAgICAgVGhlIHRlc3QgcmVnaXN0ZXIgdG8gYmUgYWNjZXNzZWQgKG11c3QgYmUgZXZlbiAjKS4KKyoKKyogUmV0dXJuczoKKyogICAgICAgMCAgICAgICAgICAgICAgIHN1Y2Nlc3MKKyogICAgICAgPjAgICAgICAgICAgICAgIGYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKiAgICAgICA8MCAgICAgICAgICAgICAgZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKiAgICAgICBwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfbW1pX3JlYWQoaGZhMzg0eF90ICpodywgVUlOVDMyIGFkZHIsIFVJTlQzMiAqcmVzcCkKK3sKKyNpZiAwCisgICAgICAgIGludCAgICAgICAgICAgICByZXN1bHQgPSAwOworICAgICAgICBVSU5UMTYgIGNtZF9jb2RlID0gKFVJTlQxNikgMHgzMDsKKyAgICAgICAgVUlOVDE2IHBhcmFtID0gKFVJTlQxNikgYWRkcjsKKyAgICAgICAgREJGRU5URVI7CisKKyAgICAgICAgLyogRG8gaSBuZWVkIGEgaG9zdDJoZmEuLi4gY29udmVyc2lvbiA/ICovCisgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfZG9jbWRfd2FpdChodywgY21kX2NvZGUpOworCisgICAgICAgIERCRkVYSVQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisjZW5kaWYKK3JldHVybiAwOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX21taV93cml0ZQorKgorKiBSZWFkIG1taSByZWdpc3RlcnMuICBtbWkgaXMgaW50ZXJzaWwtc3BlYWsgZm9yIHRoZSBiYXNlYmFuZAorKiBwcm9jZXNzb3IgcmVnaXN0ZXJzLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIGh3ICAgICAgICAgICAgICBkZXZpY2Ugc3RydWN0dXJlCisqICAgICAgIGFkZHIgICAgICAgICAgICBUaGUgdGVzdCByZWdpc3RlciB0byBiZSBhY2Nlc3NlZCAobXVzdCBiZSBldmVuICMpLgorKiAgICAgICBkYXRhICAgICAgICAgICAgVGhlIGRhdGEgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlZ2lzdGVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgICAgICAgICAgICAgc3VjY2VzcworKiAgICAgICA+MCAgICAgICAgICAgICAgZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqICAgICAgIDwwICAgICAgICAgICAgICBkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgIHByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitpbnQKK2hmYTM4NHhfZHJ2cl9tbWlfd3JpdGUoaGZhMzg0eF90ICpodywgVUlOVDMyIGFkZHIsIFVJTlQzMiBkYXRhKQoreworI2lmIDAKKyAgICAgICAgaW50ICAgICAgICAgICAgIHJlc3VsdCA9IDA7CisgICAgICAgIFVJTlQxNiAgY21kX2NvZGUgPSAoVUlOVDE2KSAweDMxOworICAgICAgICBVSU5UMTYgcGFyYW0wID0gKFVJTlQxNikgYWRkcjsKKyAgICAgICAgVUlOVDE2IHBhcmFtMSA9IChVSU5UMTYpIGRhdGE7CisgICAgICAgIERCRkVOVEVSOworCisgICAgICAgIFdMQU5fTE9HX0RFQlVHKDEsIm1taSB3cml0ZSA6IGFkZHIgPSAweCUwOGx4XG4iLCBhZGRyKTsKKyAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwibW1pIHdyaXRlIDogZGF0YSA9IDB4JTA4bHhcbiIsIGRhdGEpOworCisgICAgICAgIC8qIERvIGkgbmVlZCBhIGhvc3QyaGZhLi4uIGNvbnZlcnNpb24gPyAqLworICAgICAgICByZXN1bHQgPSBoZmEzODR4X2RvY21kX3dhaXQoaHcsIGNtZF9jb2RlKTsKKworICAgICAgICBEQkZFWElUOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCityZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3JhbWRsX2Rpc2FibGUKKyoKKyogRW5kcyB0aGUgcmFtIGRvd25sb2FkIHN0YXRlLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludAoraGZhMzg0eF9kcnZyX3JhbWRsX2Rpc2FibGUoaGZhMzg0eF90ICpodykKK3sKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIGFscmVhZHkgaW4gdGhlIGRvd25sb2FkIHN0YXRlICovCisJaWYgKCBody0+ZGxzdGF0ZSAhPSBIRkEzODR4X0RMU1RBVEVfUkFNRU5BQkxFRCApIHsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJV0xBTl9MT0dfREVCVUcoMywicmFtZGxfZGlzYWJsZSgpXG4iKTsKKworCS8qIFRoZXJlIGlzbid0IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQsIHNvIEkgZG9uJ3QgKi8KKwkvKiAgYm90aGVyICB3LyB0aGUgcmV0dXJuIHZhbHVlICovCisJaGZhMzg0eF9jbWRfZG93bmxvYWQoaHcsIEhGQTM4NHhfUFJPR01PREVfRElTQUJMRSwgMCwgMCAsIDApOworCWh3LT5kbHN0YXRlID0gSEZBMzg0eF9ETFNUQVRFX0RJU0FCTEVEOworCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3JhbWRsX2VuYWJsZQorKgorKiBCZWdpbnMgdGhlIHJhbSBkb3dubG9hZCBzdGF0ZS4gIENoZWNrcyB0byBzZWUgdGhhdCB3ZSdyZSBub3QKKyogYWxyZWFkeSBpbiBhIGRvd25sb2FkIHN0YXRlIGFuZCB0aGF0IGEgcG9ydCBpc24ndCBlbmFibGVkLgorKiBTZXRzIHRoZSBkb3dubG9hZCBzdGF0ZSBhbmQgY2FsbHMgY21kX2Rvd25sb2FkIHdpdGggdGhlCisqIEVOQUJMRV9WT0xBVElMRSBzdWJjb21tYW5kIGFuZCB0aGUgZXhlYWRkciBhcmd1bWVudC4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglleGVhZGRyCQl0aGUgY2FyZCBleGVjdXRpb24gYWRkcmVzcyB0aGF0IHdpbGwgYmUKKyogICAgICAgICAgICAgICAgICAgICAgIGp1bXBlZCB0byB3aGVuIHJhbWRsX2Rpc2FibGUoKSBpcyBjYWxsZWQKKyoJCQkoaG9zdCBvcmRlcikuCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludAoraGZhMzg0eF9kcnZyX3JhbWRsX2VuYWJsZShoZmEzODR4X3QgKmh3LCBVSU5UMzIgZXhlYWRkcikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJVUlOVDE2CQlsb3dhZGRyOworCVVJTlQxNgkJaGlhZGRyOworCWludAkJaTsKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IGEgcG9ydCBpc24ndCBhY3RpdmUgKi8KKwlmb3IgKCBpID0gMDsgaSA8IEhGQTM4NHhfUE9SVElEX01BWDsgaSsrKSB7CisJCWlmICggaHctPnBvcnRfZW5hYmxlZFtpXSApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCSJDYW4ndCBkb3dubG9hZCB3aXRoIGEgbWFjcG9ydCBlbmFibGVkLlxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCS8qIENoZWNrIHRoYXQgd2UncmUgbm90IGFscmVhZHkgaW4gYSBkb3dubG9hZCBzdGF0ZSAqLworCWlmICggaHctPmRsc3RhdGUgIT0gSEZBMzg0eF9ETFNUQVRFX0RJU0FCTEVEICkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJEb3dubG9hZCBzdGF0ZSBub3QgZGlzYWJsZWQuXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJV0xBTl9MT0dfREVCVUcoMywicmFtZGxfZW5hYmxlLCBleGVhZGRyPTB4JTA4eFxuIiwgZXhlYWRkcik7CisKKwkvKiBDYWxsIHRoZSBkb3dubG9hZCgxLGFkZHIpIGZ1bmN0aW9uICovCisJbG93YWRkciA9IEhGQTM4NHhfQUREUl9DTURfTUtPRkYoZXhlYWRkcik7CisJaGlhZGRyID0gIEhGQTM4NHhfQUREUl9DTURfTUtQQUdFKGV4ZWFkZHIpOworCisJcmVzdWx0ID0gaGZhMzg0eF9jbWRfZG93bmxvYWQoaHcsIEhGQTM4NHhfUFJPR01PREVfUkFNLAorCQkJbG93YWRkciwgaGlhZGRyLCAwKTsKKworCWlmICggcmVzdWx0ID09IDApIHsKKwkJLyogU2V0IHRoZSBkb3dubG9hZCBzdGF0ZSAqLworCQlody0+ZGxzdGF0ZSA9IEhGQTM4NHhfRExTVEFURV9SQU1FTkFCTEVEOworCX0gZWxzZSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkiY21kX2Rvd25sb2FkKDB4JTA0eCwgMHglMDR4KSBmYWlsZWQsIHJlc3VsdD0lZC5cbiIsCisJCQlsb3dhZGRyLAorCQkJaGlhZGRyLAorCQkJcmVzdWx0KTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9yYW1kbF93cml0ZQorKgorKiBQZXJmb3JtcyBhIFJBTSBkb3dubG9hZCBvZiBhIGNodW5rIG9mIGRhdGEuIEZpcnN0IGNoZWNrcyB0byBzZWUKKyogdGhhdCB3ZSdyZSBpbiB0aGUgUkFNIGRvd25sb2FkIHN0YXRlLCB0aGVuIHVzZXMgdGhlIFtyZWFkfHdyaXRlXW1lbSBVU0IKKyogY29tbWFuZHMgdG8gMSkgY29weSB0aGUgZGF0YSwgMikgcmVhZGJhY2sgYW5kIGNvbXBhcmUuICBUaGUgZG93bmxvYWQKKyogc3RhdGUgaXMgdW5hZmZlY3RlZC4gIFdoZW4gYWxsIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiB1c2luZworKiB0aGlzIGZ1bmN0aW9uLCBjYWxsIGRydnJfcmFtZGxfZGlzYWJsZSgpIHRvIGVuZCB0aGUgZG93bmxvYWQgc3RhdGUKKyogYW5kIHJlc3RhcnQgdGhlIE1BQy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKglkYWRkcgkJQ2FyZCBhZGRyZXNzIHRvIHdyaXRlIHRvLiAoaG9zdCBvcmRlcikKKyoJYnVmCQlQdHIgdG8gZGF0YSB0byB3cml0ZS4KKyoJbGVuCQlMZW5ndGggb2YgZGF0YSAoaG9zdCBvcmRlcikuCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludAoraGZhMzg0eF9kcnZyX3JhbWRsX3dyaXRlKGhmYTM4NHhfdCAqaHcsIFVJTlQzMiBkYWRkciwgdm9pZCogYnVmLCBVSU5UMzIgbGVuKQoreworCWludAkJcmVzdWx0ID0gMDsKKwlpbnQJCW53cml0ZXM7CisJVUlOVDgJCSpkYXRhID0gYnVmOworCWludAkJaTsKKwlVSU5UMzIJCWN1cnJhZGRyOworCVVJTlQxNgkJY3VycnBhZ2U7CisJVUlOVDE2CQljdXJyb2Zmc2V0OworCVVJTlQxNgkJY3VycmxlbjsKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSByYW0gZG93bmxvYWQgc3RhdGUgKi8KKwlpZiAoIGh3LT5kbHN0YXRlICE9IEhGQTM4NHhfRExTVEFURV9SQU1FTkFCTEVEICkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXTEFOX0xPR19JTkZPKCJXcml0aW5nICVkIGJ5dGVzIHRvIHJhbSBAMHglMDZ4XG4iLCBsZW4sIGRhZGRyKTsKKworCS8qIEhvdyBtYW55IGRvd21lbSBjYWxscz8gICovCisJbndyaXRlcyA9IGxlbiAvIEhGQTM4NHhfVVNCX1JXTUVNX01BWExFTjsKKwlud3JpdGVzICs9IGxlbiAlIEhGQTM4NHhfVVNCX1JXTUVNX01BWExFTiA/IDEgOiAwOworCisJLyogRG8gYmxvY2tpbmcgd21lbSdzICovCisJZm9yKGk9MDsgaSA8IG53cml0ZXM7IGkrKykgeworCQkvKiBtYWtlIGFkZHJlc3MgYXJncyAqLworCQljdXJyYWRkciA9IGRhZGRyICsgKGkgKiBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pOworCQljdXJycGFnZSA9IEhGQTM4NHhfQUREUl9DTURfTUtQQUdFKGN1cnJhZGRyKTsKKwkJY3Vycm9mZnNldCA9IEhGQTM4NHhfQUREUl9DTURfTUtPRkYoY3VycmFkZHIpOworCQljdXJybGVuID0gbGVuIC0gKGkgKiBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pOworCQlpZiAoIGN1cnJsZW4gPiBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pIHsKKwkJCWN1cnJsZW4gPSBIRkEzODR4X1VTQl9SV01FTV9NQVhMRU47CisJCX0KKworCSAJLyogRG8gYmxvY2tpbmcgY3RseCAqLworCQlyZXN1bHQgPSBoZmEzODR4X2Rvd21lbV93YWl0KCBodywKKwkJCQljdXJycGFnZSwKKwkJCQljdXJyb2Zmc2V0LAorCQkJCWRhdGEgKyAoaSpIRkEzODR4X1VTQl9SV01FTV9NQVhMRU4pLAorCQkJCWN1cnJsZW4gKTsKKworCQlpZiAocmVzdWx0KSBicmVhazsKKworCQkvKiBUT0RPOiBXZSByZWFsbHkgc2hvdWxkIGhhdmUgYSByZWFkYmFjay4gKi8KKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfZHJ2cl9yZWFkcGRhCisqCisqIFBlcmZvcm1zIHRoZSBzZXF1ZW5jZSB0byByZWFkIHRoZSBQREEgc3BhY2UuICBOb3RlIHRoZXJlIGlzIG5vCisqIGRydnJfd3JpdGVwZGEoKSBmdW5jdGlvbi4gIFdyaXRpbmcgYSBQREEgaXMKKyogZ2VuZXJhbGx5IGltcGxlbWVudGVkIGJ5IGEgY2FsbGluZyBjb21wb25lbnQgdmlhIGNhbGxzIHRvCisqIGNtZF9kb3dubG9hZCBhbmQgd3JpdGluZyB0byB0aGUgZmxhc2ggZG93bmxvYWQgYnVmZmVyIHZpYSB0aGUKKyogYXV4IHJlZ3MuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJYnVmCQlidWZmZXIgdG8gc3RvcmUgUERBIGluCisqCWxlbgkJYnVmZmVyIGxlbmd0aAorKgorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgktRVRJTUVPVVQJdGltb3V0IHdhaXRpbmcgZm9yIHRoZSBjbWQgcmVncyB0byBiZWNvbWUKKyoJCQlhdmFpbGFibGUsIG9yIHdhaXRpbmcgZm9yIHRoZSBjb250cm9sIHJlZworKgkJCXRvIGluZGljYXRlIHRoZSBBdXggcG9ydCBpcyBlbmFibGVkLgorKgktRU5PREFUQQl0aGUgYnVmZmVyIGRvZXMgTk9UIGNvbnRhaW4gYSB2YWxpZCBQREEuCisqCQkJRWl0aGVyIHRoZSBjYXJkIFBEQSBpcyBiYWQsIG9yIHRoZSBhdXhkYXRhCisqCQkJcmVhZHMgYXJlIGdpdmluZyB1cyBnYXJiYWdlLgorCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIG9yIG5vbi1jYXJkIGludGVycnVwdC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IGhmYTM4NHhfZHJ2cl9yZWFkcGRhKGhmYTM4NHhfdCAqaHcsIHZvaWQgKmJ1ZiwgVUlOVCBsZW4pCit7CisJaW50CQlyZXN1bHQgPSAwOworCVVJTlQxNgkJKnBkYSA9IGJ1ZjsKKwlpbnQJCXBkYW9rID0gMDsKKwlpbnQJCW1vcmVwZHJzID0gMTsKKwlpbnQJCWN1cnJwZHIgPSAwOwkvKiB3b3JkIG9mZnNldCBvZiB0aGUgY3VycmVudCBwZHIgKi8KKwlzaXplX3QJCWk7CisJVUlOVDE2CQlwZHJsZW47CQkvKiBwZHIgbGVuZ3RoIGluIGJ5dGVzLCBob3N0IG9yZGVyICovCisJVUlOVDE2CQlwZHJjb2RlOwkvKiBwZHIgY29kZSwgaG9zdCBvcmRlciAqLworCVVJTlQxNgkJY3VycnBhZ2U7CisJVUlOVDE2CQljdXJyb2Zmc2V0OworCXN0cnVjdCBwZGFsb2MgeworCQlVSU5UMzIJY2FyZGFkZHI7CisJCVVJTlQxNglhdXhjdGw7CisJfSBwZGFsb2NbXSA9CisJeworCQl7IEhGQTM4NDJfUERBX0JBU0UsCQkwfSwKKwkJeyBIRkEzODQxX1BEQV9CQVNFLAkJMH0sCisJCXsgSEZBMzg0MV9QREFfQk9HVVNfQkFTRSwJMH0KKwl9OworCisJREJGRU5URVI7CisKKwkvKiBSZWFkIHRoZSBwZGEgZnJvbSBlYWNoIGtub3duIGFkZHJlc3MuICAqLworCWZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShwZGFsb2MpOyBpKyspIHsKKwkJLyogTWFrZSBhZGRyZXNzICovCisJCWN1cnJwYWdlID0gSEZBMzg0eF9BRERSX0NNRF9NS1BBR0UocGRhbG9jW2ldLmNhcmRhZGRyKTsKKwkJY3Vycm9mZnNldCA9IEhGQTM4NHhfQUREUl9DTURfTUtPRkYocGRhbG9jW2ldLmNhcmRhZGRyKTsKKworCQlyZXN1bHQgPSBoZmEzODR4X2Rvcm1lbV93YWl0KGh3LAorCQkJY3VycnBhZ2UsCisJCQljdXJyb2Zmc2V0LAorCQkJYnVmLAorCQkJbGVuKTsJCS8qIHVuaXRzIG9mIGJ5dGVzICovCisKKwkJaWYgKHJlc3VsdCkgeworCQkJV0xBTl9MT0dfV0FSTklORygKKwkJCQkJICAiUmVhZCBmcm9tIGluZGV4ICV6ZCBmYWlsZWQsIGNvbnRpbnVpbmdcbiIsCisJCQkJaSApOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUZXN0IGZvciBnYXJiYWdlICovCisJCXBkYW9rID0gMTsJLyogaW5pdGlhbGx5IGFzc3VtZSBnb29kICovCisJCW1vcmVwZHJzID0gMTsKKwkJd2hpbGUgKCBwZGFvayAmJiBtb3JlcGRycyApIHsKKwkJCXBkcmxlbiA9IGhmYTM4NHgyaG9zdF8xNihwZGFbY3VycnBkcl0pICogMjsKKwkJCXBkcmNvZGUgPSBoZmEzODR4Mmhvc3RfMTYocGRhW2N1cnJwZHIrMV0pOworCQkJLyogVGVzdCB0aGUgcmVjb3JkIGxlbmd0aCAqLworCQkJaWYgKCBwZHJsZW4gPiBIRkEzODR4X1BEUl9MRU5fTUFYIHx8IHBkcmxlbiA9PSAwKSB7CisJCQkJV0xBTl9MT0dfRVJST1IoInBkcmxlbiBpbnZhbGlkPSVkXG4iLAorCQkJCQlwZHJsZW4pOworCQkJCXBkYW9rID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCS8qIFRlc3QgdGhlIGNvZGUgKi8KKwkJCWlmICggIWhmYTM4NHhfaXNnb29kX3BkcmNvZGUocGRyY29kZSkgKSB7CisJCQkJV0xBTl9MT0dfRVJST1IoInBkcmNvZGUgaW52YWxpZD0lZFxuIiwKKwkJCQkJcGRyY29kZSk7CisJCQkJcGRhb2sgPSAwOworCQkJCWJyZWFrOworCQkJfQorCQkJLyogVGVzdCBmb3IgY29tcGxldGlvbiAqLworCQkJaWYgKCBwZHJjb2RlID09IEhGQTM4NHhfUERSX0VORF9PRl9QREEpIHsKKwkJCQltb3JlcGRycyA9IDA7CisJCQl9CisKKwkJCS8qIE1vdmUgdG8gdGhlIG5leHQgcGRyIChpZiBuZWNlc3NhcnkpICovCisJCQlpZiAoIG1vcmVwZHJzICkgeworCQkJCS8qIG5vdGUgdGhlIGFjY2VzcyB0byBwZGFbXSwgbmVlZCB3b3JkcyBoZXJlICovCisJCQkJY3VycnBkciArPSBoZmEzODR4Mmhvc3RfMTYocGRhW2N1cnJwZHJdKSArIDE7CisJCQl9CisJCX0KKwkJaWYgKCBwZGFvayApIHsKKwkJCVdMQU5fTE9HX0lORk8oCisJCQkJIlBEQSBSZWFkIGZyb20gMHglMDh4IGluICVzIHNwYWNlLlxuIiwKKwkJCQlwZGFsb2NbaV0uY2FyZGFkZHIsCisJCQkJcGRhbG9jW2ldLmF1eGN0bCA9PSAwID8gIkVYVERTIiA6CisJCQkJcGRhbG9jW2ldLmF1eGN0bCA9PSAxID8gIk5WIiA6CisJCQkJcGRhbG9jW2ldLmF1eGN0bCA9PSAyID8gIlBIWSIgOgorCQkJCXBkYWxvY1tpXS5hdXhjdGwgPT0gMyA/ICJJQ1NSQU0iIDoKKwkJCQkiPGJvZ3VzIGF1eGN0bD4iKTsKKwkJCWJyZWFrOworCQl9CisJfQorCXJlc3VsdCA9IHBkYW9rID8gMCA6IC1FTk9EQVRBOworCisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDMsIkZhaWx1cmU6IHBkYSBpcyBub3Qgb2theVxuIik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfc2V0Y29uZmlnCisqCisqIFBlcmZvcm1zIHRoZSBzZXF1ZW5jZSBuZWNlc3NhcnkgdG8gd3JpdGUgYSBjb25maWcvaW5mbyBpdGVtLgorKgorKiBBcmd1bWVudHM6CisqCWh3CQlkZXZpY2Ugc3RydWN0dXJlCisqCXJpZAkJY29uZmlnL2luZm8gcmVjb3JkIGlkIChpbiBob3N0IG9yZGVyKQorKglidWYJCWhvc3Qgc2lkZSByZWNvcmQgYnVmZmVyCisqCWxlbgkJYnVmZmVyIGxlbmd0aCAoaW4gYnl0ZXMpCisqCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPjAJCWYvdyByZXBvcnRlZCBlcnJvciAtIGYvdyBzdGF0dXMgY29kZQorKgk8MAkJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGhmYTM4NHhfdCAqaHcsIFVJTlQxNiByaWQsIHZvaWQgKmJ1ZiwgVUlOVDE2IGxlbikKK3sKKwlyZXR1cm4gaGZhMzg0eF9kb3dyaWRfd2FpdChodywgcmlkLCBidWYsIGxlbik7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfc3RhcnQKKyoKKyogSXNzdWVzIHRoZSBNQUMgaW5pdGlhbGl6ZSBjb21tYW5kLCBzZXRzIHVwIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzLAorKiBhbmQgZW5hYmxlcyB0aGUgaW50ZXJydXB0cy4gIEFmdGVyIHRoaXMgZnVuY3Rpb24gY29tcGxldGVzLCB0aGUKKyogbG93LWxldmVsIHN0dWZmIHNob3VsZCBiZSByZWFkeSBmb3IgYW55L2FsbCBjb21tYW5kcy4KKyoKKyogQXJndW1lbnRzOgorKglodwkJZGV2aWNlIHN0cnVjdHVyZQorKiBSZXR1cm5zOgorKgkwCQlzdWNjZXNzCisqCT4wCQlmL3cgcmVwb3J0ZWQgZXJyb3IgLSBmL3cgc3RhdHVzIGNvZGUKKyoJPDAJCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3N0YXJ0KGhmYTM4NHhfdCAqaHcpCit7CisJaW50CQlyZXN1bHQ7CisJREJGRU5URVI7CisKKwltaWdodF9zbGVlcCgpOworCisJaWYgKHVzYl9jbGVhcl9oYWx0KGh3LT51c2IsIGh3LT5lbmRwX2luKSkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJGYWlsZWQgdG8gcmVzZXQgYnVsayBpbiBlbmRwb2ludC5cbiIpOworCX0KKworCWlmICh1c2JfY2xlYXJfaGFsdChody0+dXNiLCBody0+ZW5kcF9vdXQpKSB7CisJCVdMQU5fTE9HX0VSUk9SKAorCQkJIkZhaWxlZCB0byByZXNldCBidWxrIG91dCBlbmRwb2ludC5cbiIpOworCX0KKworCS8qIFN5bmNocm9ub3VzIHVubGluaywgaW4gY2FzZSB3ZSdyZSB0cnlpbmcgdG8gcmVzdGFydCB0aGUgZHJpdmVyICovCisJdXNiX2tpbGxfdXJiKCZody0+cnhfdXJiKTsKKworCS8qIFBvc3QgdGhlIElOIHVyYiAqLworCXJlc3VsdCA9IHN1Ym1pdF9yeF91cmIoaHcsIEdGUF9LRVJORUwpOworCWlmIChyZXN1bHQgIT0gMCkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJGYXRhbCwgZmFpbGVkIHRvIHN1Ym1pdCBSWCBVUkIsIHJlc3VsdD0lZFxuIiwKKwkJCXJlc3VsdCk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwkvKiBjYWxsIGluaXRpYWxpemUgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2NtZF9pbml0aWFsaXplKGh3KTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkJdXNiX2tpbGxfdXJiKCZody0+cnhfdXJiKTsKKwkJV0xBTl9MT0dfRVJST1IoCisJCQkiY21kX2luaXRpYWxpemUoKSBmYWlsZWQsIHJlc3VsdD0lZFxuIiwKKwkJCXJlc3VsdCk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwlody0+c3RhdGUgPSBIRkEzODR4X1NUQVRFX1JVTk5JTkc7CisKK2RvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2RydnJfc3RvcAorKgorKiBTaHV0cyBkb3duIHRoZSBNQUMgdG8gdGhlIHBvaW50IHdoZXJlIGl0IGlzIHNhZmUgdG8gdW5sb2FkIHRoZQorKiBkcml2ZXIuICBBbnkgc3Vic3lzdGVtIHRoYXQgbWF5IGJlIGhvbGRpbmcgYSBkYXRhIG9yIGZ1bmN0aW9uCisqIHB0ciBpbnRvIHRoZSBkcml2ZXIgbXVzdCBiZSBjbGVhcmVkL2RlaW5pdGlhbGl6ZWQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyogUmV0dXJuczoKKyoJMAkJc3VjY2VzcworKgk+MAkJZi93IHJlcG9ydGVkIGVycm9yIC0gZi93IHN0YXR1cyBjb2RlCisqCTwwCQlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50CitoZmEzODR4X2RydnJfc3RvcChoZmEzODR4X3QgKmh3KQoreworCWludAlyZXN1bHQgPSAwOworCWludAlpOworCURCRkVOVEVSOworCisJbWlnaHRfc2xlZXAoKTsKKworCS8qIFRoZXJlJ3Mgbm8gbmVlZCBmb3Igc3BpbmxvY2tzIGhlcmUuIFRoZSBVU0IgImRpc2Nvbm5lY3QiCisJICogZnVuY3Rpb24gc2V0cyB0aGlzICJyZW1vdmVkIiBmbGFnIGFuZCB0aGVuIGNhbGxzIHVzLgorCSAqLworCWlmICggIWh3LT53bGFuZGV2LT5od3JlbW92ZWQgKSB7CisJCS8qIENhbGwgaW5pdGlhbGl6ZSB0byBsZWF2ZSB0aGUgTUFDIGluIGl0cyAncmVzZXQnIHN0YXRlICovCisJCWhmYTM4NHhfY21kX2luaXRpYWxpemUoaHcpOworCisJCS8qIENhbmNlbCB0aGUgcnh1cmIgKi8KKwkJdXNiX2tpbGxfdXJiKCZody0+cnhfdXJiKTsKKwl9CisKKwlody0+bGlua19zdGF0dXMgPSBIRkEzODR4X0xJTktfTk9UQ09OTkVDVEVEOworCWh3LT5zdGF0ZSA9IEhGQTM4NHhfU1RBVEVfSU5JVDsKKworCWRlbF90aW1lcl9zeW5jKCZody0+Y29tbXNxdWFsX3RpbWVyKTsKKworCS8qIENsZWFyIGFsbCB0aGUgcG9ydCBzdGF0dXMgKi8KKwlmb3IgKCBpID0gMDsgaSA8IEhGQTM4NHhfTlVNUE9SVFNfTUFYOyBpKyspIHsKKwkJaHctPnBvcnRfZW5hYmxlZFtpXSA9IDA7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9kcnZyX3R4ZnJhbWUKKyoKKyogVGFrZXMgYSBmcmFtZSBmcm9tIHByaXNtMnN0YSBhbmQgcXVldWVzIGl0IGZvciB0cmFuc21pc3Npb24uCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCWRldmljZSBzdHJ1Y3R1cmUKKyoJc2tiCQlwYWNrZXQgYnVmZmVyIHN0cnVjdC4gIENvbnRhaW5zIGFuIDgwMi4xMQorKgkJCWRhdGEgZnJhbWUuCisqICAgICAgIHA4MDIxMV9oZHIgICAgICBwb2ludHMgdG8gdGhlIDgwMi4xMSBoZWFkZXIgZm9yIHRoZSBwYWNrZXQuCisqIFJldHVybnM6CisqCTAJCVN1Y2Nlc3MgYW5kIG1vcmUgYnVmZnMgYXZhaWxhYmxlCisqCTEJCVN1Y2Nlc3MgYnV0IG5vIG1vcmUgYnVmZnMKKyoJMgkJQWxsb2NhdGlvbiBmYWlsdXJlCisqCTQJCUJ1ZmZlciBmdWxsIG9yIHF1ZXVlIGJ1c3kKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgaGZhMzg0eF9kcnZyX3R4ZnJhbWUoaGZhMzg0eF90ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgcDgwMjExX2hkcl90ICpwODAyMTFfaGRyLCBwODAyMTFfbWV0YXdlcF90ICpwODAyMTFfd2VwKQorCit7CisJaW50CQl1c2Jwa3RsZW4gPSBzaXplb2YoaGZhMzg0eF90eF9mcmFtZV90KTsKKwlpbnQJCXJlc3VsdDsKKwlpbnQJCXJldDsKKwljaGFyCQkqcHRyOworCisJREJGRU5URVI7CisKKwlpZiAoaHctPnR4X3VyYi5zdGF0dXMgPT0gLUVJTlBST0dSRVNTKSB7CisJCVdMQU5fTE9HX1dBUk5JTkcoIlRYIFVSQiBhbHJlYWR5IGluIHVzZVxuIik7CisJCXJlc3VsdCA9IDM7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBCdWlsZCBUeCBmcmFtZSBzdHJ1Y3R1cmUgKi8KKwkvKiBTZXQgdXAgdGhlIGNvbnRyb2wgZmllbGQgKi8KKwltZW1zZXQoJmh3LT50eGJ1ZmYudHhmcm0uZGVzYywgMCwgc2l6ZW9mKGh3LT50eGJ1ZmYudHhmcm0uZGVzYykpOworCisJLyogU2V0dXAgdGhlIHVzYiB0eXBlIGZpZWxkICovCisJaHctPnR4YnVmZi50eXBlID0gaG9zdDJoZmEzODR4XzE2KEhGQTM4NHhfVVNCX1RYRlJNKTsKKworCS8qIFNldCB1cCB0aGUgc3dfc3VwcG9ydCBmaWVsZCB0byBpZGVudGlmeSB0aGlzIGZyYW1lICovCisJaHctPnR4YnVmZi50eGZybS5kZXNjLnN3X3N1cHBvcnQgPSAweDAxMjM7CisKKy8qIFR4IGNvbXBsZXRlIGFuZCBUeCBleGNlcHRpb24gZGlzYWJsZSBwZXIgZGxlYWNoLiAgTWlnaHQgYmUgY2F1c2luZworICogYnVmIGRlcGxldGlvbgorICovCisvLyNkZWZpbmUgRE9FWEMgIFNMUCAtLSBkb2JvdGggYnJlYWtzIGhvcnJpYmx5IHVuZGVyIGxvYWQsIGRvZXhjIGxlc3Mgc28uCisjaWYgZGVmaW5lZChET0JPVEgpCisJaHctPnR4YnVmZi50eGZybS5kZXNjLnR4X2NvbnRyb2wgPQorCQlIRkEzODR4X1RYX01BQ1BPUlRfU0VUKDApIHwgSEZBMzg0eF9UWF9TVFJVQ1RZUEVfU0VUKDEpIHwKKwkJSEZBMzg0eF9UWF9UWEVYX1NFVCgxKSB8IEhGQTM4NHhfVFhfVFhPS19TRVQoMSk7CisjZWxpZiBkZWZpbmVkKERPRVhDKQorCWh3LT50eGJ1ZmYudHhmcm0uZGVzYy50eF9jb250cm9sID0KKwkJSEZBMzg0eF9UWF9NQUNQT1JUX1NFVCgwKSB8IEhGQTM4NHhfVFhfU1RSVUNUWVBFX1NFVCgxKSB8CisJCUhGQTM4NHhfVFhfVFhFWF9TRVQoMSkgfCBIRkEzODR4X1RYX1RYT0tfU0VUKDApOworI2Vsc2UKKwlody0+dHhidWZmLnR4ZnJtLmRlc2MudHhfY29udHJvbCA9CisJCUhGQTM4NHhfVFhfTUFDUE9SVF9TRVQoMCkgfCBIRkEzODR4X1RYX1NUUlVDVFlQRV9TRVQoMSkgfAorCQlIRkEzODR4X1RYX1RYRVhfU0VUKDApIHwgSEZBMzg0eF9UWF9UWE9LX1NFVCgwKTsKKyNlbmRpZgorCWh3LT50eGJ1ZmYudHhmcm0uZGVzYy50eF9jb250cm9sID0KKwkJaG9zdDJoZmEzODR4XzE2KGh3LT50eGJ1ZmYudHhmcm0uZGVzYy50eF9jb250cm9sKTsKKworCS8qIGNvcHkgdGhlIGhlYWRlciBvdmVyIHRvIHRoZSB0eGRlc2MgKi8KKwltZW1jcHkoJihody0+dHhidWZmLnR4ZnJtLmRlc2MuZnJhbWVfY29udHJvbCksIHA4MDIxMV9oZHIsIHNpemVvZihwODAyMTFfaGRyX3QpKTsKKworCS8qIGlmIHdlJ3JlIHVzaW5nIGhvc3QgV0VQLCBpbmNyZWFzZSBzaXplIGJ5IElWK0lDViAqLworCWlmIChwODAyMTFfd2VwLT5kYXRhKSB7CisJCWh3LT50eGJ1ZmYudHhmcm0uZGVzYy5kYXRhX2xlbiA9IGhvc3QyaGZhMzg0eF8xNihza2ItPmxlbis4KTsKKwkJLy8gaHctPnR4YnVmZi50eGZybS5kZXNjLnR4X2NvbnRyb2wgfD0gSEZBMzg0eF9UWF9OT0VOQ1JZUFRfU0VUKDEpOworCQl1c2Jwa3RsZW4rPTg7CisJfSBlbHNlIHsKKwkJaHctPnR4YnVmZi50eGZybS5kZXNjLmRhdGFfbGVuID0gaG9zdDJoZmEzODR4XzE2KHNrYi0+bGVuKTsKKwl9CisKKwl1c2Jwa3RsZW4gKz0gc2tiLT5sZW47CisKKwkvKiBjb3B5IG92ZXIgdGhlIFdFUCBJViBpZiB3ZSBhcmUgdXNpbmcgaG9zdCBXRVAgKi8KKwlwdHIgPSBody0+dHhidWZmLnR4ZnJtLmRhdGE7CisJaWYgKHA4MDIxMV93ZXAtPmRhdGEpIHsKKwkJbWVtY3B5KHB0ciwgcDgwMjExX3dlcC0+aXYsIHNpemVvZihwODAyMTFfd2VwLT5pdikpOworCQlwdHIrPSBzaXplb2YocDgwMjExX3dlcC0+aXYpOworCQltZW1jcHkocHRyLCBwODAyMTFfd2VwLT5kYXRhLCBza2ItPmxlbik7CisJfSBlbHNlIHsKKwkJbWVtY3B5KHB0ciwgc2tiLT5kYXRhLCBza2ItPmxlbik7CisJfQorCS8qIGNvcHkgb3ZlciB0aGUgcGFja2V0IGRhdGEgKi8KKwlwdHIrPSBza2ItPmxlbjsKKworCS8qIGNvcHkgb3ZlciB0aGUgV0VQIElDViBpZiB3ZSBhcmUgdXNpbmcgaG9zdCBXRVAgKi8KKwlpZiAocDgwMjExX3dlcC0+ZGF0YSkgeworCQltZW1jcHkocHRyLCBwODAyMTFfd2VwLT5pY3YsIHNpemVvZihwODAyMTFfd2VwLT5pY3YpKTsKKwl9CisKKwkvKiBTZW5kIHRoZSBVU0IgcGFja2V0ICovCisJdXNiX2ZpbGxfYnVsa191cmIoICYoaHctPnR4X3VyYiksIGh3LT51c2IsCisJICAgICAgICAgICAgICAgaHctPmVuZHBfb3V0LAorCSAgICAgICAgICAgICAgICYoaHctPnR4YnVmZiksIFJPVU5EVVA2NCh1c2Jwa3RsZW4pLAorCSAgICAgICAgICAgICAgIGhmYTM4NHhfdXNib3V0X2NhbGxiYWNrLCBody0+d2xhbmRldiApOworCWh3LT50eF91cmIudHJhbnNmZXJfZmxhZ3MgfD0gVVNCX1FVRVVFX0JVTEs7CisKKwlyZXN1bHQgPSAxOworCXJldCA9IHN1Ym1pdF90eF91cmIoaHcsICZody0+dHhfdXJiLCBHRlBfQVRPTUlDKTsKKwlpZiAoIHJldCAhPSAwICkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJzdWJtaXRfdHhfdXJiKCkgZmFpbGVkLCBlcnJvcj0lZFxuIiwgcmV0KTsKKwkJcmVzdWx0ID0gMzsKKwl9CisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBoZmEzODR4X3R4X3RpbWVvdXQod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCWhmYTM4NHhfdAkqaHcgPSB3bGFuZGV2LT5wcml2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlEQkZFTlRFUjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJaWYgKCAhaHctPndsYW5kZXYtPmh3cmVtb3ZlZCAmJgorCSAgICAgLyogTm90ZSB0aGUgYml0d2lzZSBPUiwgbm90IHRoZSBsb2dpY2FsIE9SLiAqLworCSAgICAgKCAhdGVzdF9hbmRfc2V0X2JpdChXT1JLX1RYX0hBTFQsICZody0+dXNiX2ZsYWdzKSB8CisJICAgICAgICF0ZXN0X2FuZF9zZXRfYml0KFdPUktfUlhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpICkgKQorCXsKKwkJc2NoZWR1bGVfd29yaygmaHctPnVzYl93b3JrKTsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJREJGRVhJVDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfdXNiY3RseF9yZWFwZXJfdGFzaworKgorKiBUYXNrbGV0IHRvIGRlbGV0ZSBkZWFkIENUTFggb2JqZWN0cworKgorKiBBcmd1bWVudHM6CisqCWRhdGEJcHRyIHRvIGEgaGZhMzg0eF90CisqCisqIFJldHVybnM6CisqCisqIENhbGwgY29udGV4dDoKKyoJSW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIGhmYTM4NHhfdXNiY3RseF9yZWFwZXJfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJaGZhMzg0eF90CSpodyA9IChoZmEzODR4X3QqKWRhdGE7CisJc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7CisJc3RydWN0IGxpc3RfaGVhZCAqdGVtcDsKKwl1bnNpZ25lZCBsb25nCWZsYWdzOworCisJREJGRU5URVI7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCS8qIFRoaXMgbGlzdCBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5IGlmIHNvbWVvbmUKKwkgKiBoYXMgdW5wbHVnZ2VkIHRoZSBhZGFwdGVyLgorCSAqLworCWxpc3RfZm9yX2VhY2hfc2FmZShlbnRyeSwgdGVtcCwgJmh3LT5jdGx4cS5yZWFwYWJsZSkgeworCQloZmEzODR4X3VzYmN0bHhfdAkqY3RseDsKKworCQljdGx4ID0gbGlzdF9lbnRyeShlbnRyeSwgaGZhMzg0eF91c2JjdGx4X3QsIGxpc3QpOworCQlsaXN0X2RlbCgmY3RseC0+bGlzdCk7CisJCWtmcmVlKGN0bHgpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisKKwlEQkZFWElUOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2JjdGx4X2NvbXBsZXRpb25fdGFzaworKgorKiBUYXNrbGV0IHRvIGNhbGwgY29tcGxldGlvbiBoYW5kbGVycyBmb3IgcmV0dXJuZWQgQ1RMWHMKKyoKKyogQXJndW1lbnRzOgorKglkYXRhCXB0ciB0byBoZmEzODR4X3QKKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorKiBDYWxsIGNvbnRleHQ6CisqCUludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBoZmEzODR4X3VzYmN0bHhfY29tcGxldGlvbl90YXNrKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwloZmEzODR4X3QgKmh3ID0gKGhmYTM4NHhfdCopZGF0YTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICp0ZW1wOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpbnQgcmVhcCA9IDA7CisKKwlEQkZFTlRFUjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJLyogVGhpcyBsaXN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgZW1wdHkgaWYgc29tZW9uZQorCSAqIGhhcyB1bnBsdWdnZWQgdGhlIGFkYXB0ZXIgLi4uCisJICovCisJbGlzdF9mb3JfZWFjaF9zYWZlKGVudHJ5LCB0ZW1wLCAmaHctPmN0bHhxLmNvbXBsZXRpbmcpIHsKKwkJaGZhMzg0eF91c2JjdGx4X3QgKmN0bHg7CisKKwkJY3RseCA9IGxpc3RfZW50cnkoZW50cnksIGhmYTM4NHhfdXNiY3RseF90LCBsaXN0KTsKKworCQkvKiBDYWxsIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9uIHRoYXQgdGhpcworCQkgKiBjb21tYW5kIHdhcyBhc3NpZ25lZCwgYXNzdW1pbmcgaXQgaGFzIG9uZS4KKwkJICovCisJCWlmICggY3RseC0+Y21kY2IgIT0gTlVMTCApIHsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCQljdGx4LT5jbWRjYihodywgY3RseCk7CisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCQkJLyogTWFrZSBzdXJlIHdlIGRvbid0IHRyeSBhbmQgY29tcGxldGUKKwkJCSAqIHRoaXMgQ1RMWCBtb3JlIHRoYW4gb25jZSEKKwkJCSAqLworCQkJY3RseC0+Y21kY2IgPSBOVUxMOworCisJCQkvKiBEaWQgc29tZW9uZSB5YW5rIHRoZSBhZGFwdGVyIG91dAorCQkJICogd2hpbGUgb3VyIGxpc3Qgd2FzIChicmllZmx5KSB1bmxvY2tlZD8KKwkJCSAqLworCQkJaWYgKCBody0+d2xhbmRldi0+aHdyZW1vdmVkICkKKwkJCXsKKwkJCQlyZWFwID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqICJSZWFwYWJsZSIgQ1RMWHMgYXJlIG9uZXMgd2hpY2ggZG9uJ3QgaGF2ZSBhbnkKKwkJICogdGhyZWFkcyB3YWl0aW5nIGZvciB0aGVtIHRvIGRpZS4gSGVuY2UgdGhleSBtdXN0CisJCSAqIGJlIGRlbGl2ZXJlZCB0byBUaGUgUmVhcGVyIQorCQkgKi8KKwkJaWYgKCBjdGx4LT5yZWFwYWJsZSApIHsKKwkJCS8qIE1vdmUgdGhlIENUTFggb2ZmIHRoZSAiY29tcGxldGluZyIgbGlzdCAoaG9wZWZ1bGx5KQorCQkJICogb24gdG8gdGhlICJyZWFwYWJsZSIgbGlzdCB3aGVyZSB0aGUgcmVhcGVyIHRhc2sKKwkJCSAqIGNhbiBmaW5kIGl0LiBBbmQgInJlYXBhYmxlIiBtZWFucyB0aGF0IHRoaXMgQ1RMWAorCQkJICogaXNuJ3Qgc2l0dGluZyBvbiBhIHdhaXQtcXVldWUgc29tZXdoZXJlLgorCQkJICovCisJCQlsaXN0X21vdmVfdGFpbCgmY3RseC0+bGlzdCwgJmh3LT5jdGx4cS5yZWFwYWJsZSk7CisJCQlyZWFwID0gMTsKKwkJfQorCisJCWNvbXBsZXRlKCZjdGx4LT5kb25lKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCWlmIChyZWFwKQorCQl0YXNrbGV0X3NjaGVkdWxlKCZody0+cmVhcGVyX2JoKTsKKworCURCRkVYSVQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiB1bmxvY2tlZF91c2JjdGx4X2NhbmNlbF9hc3luYworKgorKiBNYXJrIHRoZSBDVExYIGRlYWQgYXN5bmNocm9ub3VzbHksIGFuZCBlbnN1cmUgdGhhdCB0aGUKKyogbmV4dCBjb21tYW5kIG9uIHRoZSBxdWV1ZSBpcyBydW4gYWZ0ZXJ3YXJkcy4KKyoKKyogQXJndW1lbnRzOgorKglodwlwdHIgdG8gdGhlIGhmYTM4NHhfdCBzdHJ1Y3R1cmUKKyoJY3RseAlwdHIgdG8gYSBDVExYIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgkwCXRoZSBDVExYJ3MgVVJCIGlzIGluYWN0aXZlCisqIC1FSU5QUk9HUkVTUwl0aGUgVVJCIGlzIGN1cnJlbnRseSBiZWluZyB1bmxpbmtlZAorKgorKiBDYWxsIGNvbnRleHQ6CisqCUVpdGhlciBwcm9jZXNzIG9yIGludGVycnVwdCwgYnV0IHByZXN1bWFibHkgaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgdW5sb2NrZWRfdXNiY3RseF9jYW5jZWxfYXN5bmMoaGZhMzg0eF90ICpodywgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpCit7CisJaW50IHJldDsKKworCURCRkVOVEVSOworCisJLyoKKwkgKiBUcnkgdG8gZGVsZXRlIHRoZSBVUkIgY29udGFpbmluZyBvdXIgcmVxdWVzdCBwYWNrZXQuCisJICogSWYgd2Ugc3VjY2VlZCwgdGhlbiBpdHMgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUKKwkgKiBjYWxsZWQgd2l0aCBhIHN0YXR1cyBvZiAtRUNPTk5SRVNFVC4KKwkgKi8KKwlody0+Y3RseF91cmIudHJhbnNmZXJfZmxhZ3MgfD0gVVJCX0FTWU5DX1VOTElOSzsKKwlyZXQgPSB1c2JfdW5saW5rX3VyYigmaHctPmN0bHhfdXJiKTsKKworCWlmIChyZXQgIT0gLUVJTlBST0dSRVNTKSB7CisJCS8qCisJCSAqIFRoZSBPVVQgVVJCIGhhZCBlaXRoZXIgYWxyZWFkeSBjb21wbGV0ZWQKKwkJICogb3Igd2FzIHN0aWxsIGluIHRoZSBwZW5kaW5nIHF1ZXVlLCBzbyB0aGUKKwkJICogVVJCJ3MgY29tcGxldGlvbiBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQuCisJCSAqIFdlIHdpbGwgaGF2ZSB0byBjb21wbGV0ZSB0aGUgQ1RMWCBvdXJzZWx2ZXMuCisJCSAqLworCQljdGx4LT5zdGF0ZSA9IENUTFhfUkVRX0ZBSUxFRDsKKwkJdW5sb2NrZWRfdXNiY3RseF9jb21wbGV0ZShodywgY3RseCk7CisJCXJldCA9IDA7CisJfQorCisJREJGRVhJVDsKKworCXJldHVybiByZXQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiB1bmxvY2tlZF91c2JjdGx4X2NvbXBsZXRlCisqCisqIEEgQ1RMWCBoYXMgY29tcGxldGVkLiAgSXQgbWF5IGhhdmUgYmVlbiBzdWNjZXNzZnVsLCBpdCBtYXkgbm90CisqIGhhdmUgYmVlbi4gQXQgdGhpcyBwb2ludCwgdGhlIENUTFggc2hvdWxkIGJlIHF1aWVzY2VudC4gIFRoZSBVUkJzCisqIGFyZW4ndCBhY3RpdmUgYW5kIHRoZSB0aW1lcnMgc2hvdWxkIGhhdmUgYmVlbiBzdG9wcGVkLgorKgorKiBUaGUgQ1RMWCBpcyBtaWdyYXRlZCB0byB0aGUgImNvbXBsZXRpbmciIHF1ZXVlLCBhbmQgdGhlIGNvbXBsZXRpbmcKKyogdGFza2xldCBpcyBzY2hlZHVsZWQuCisqCisqIEFyZ3VtZW50czoKKyoJaHcJCXB0ciB0byBhIGhmYTM4NHhfdCBzdHJ1Y3R1cmUKKyoJY3RseAkJcHRyIHRvIGEgY3RseCBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJRWl0aGVyLCBhc3N1bWUgaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHVubG9ja2VkX3VzYmN0bHhfY29tcGxldGUoaGZhMzg0eF90ICpodywgaGZhMzg0eF91c2JjdGx4X3QgKmN0bHgpCit7CisJREJGRU5URVI7CisKKwkvKiBUaW1lcnMgaGF2ZSBiZWVuIHN0b3BwZWQsIGFuZCBjdGx4IHNob3VsZCBiZSBpbgorCSAqIGEgdGVybWluYWwgc3RhdGUuIFJldGlyZSBpdCBmcm9tIHRoZSAiYWN0aXZlIgorCSAqIHF1ZXVlLgorCSAqLworCWxpc3RfbW92ZV90YWlsKCZjdGx4LT5saXN0LCAmaHctPmN0bHhxLmNvbXBsZXRpbmcpOworCXRhc2tsZXRfc2NoZWR1bGUoJmh3LT5jb21wbGV0aW9uX2JoKTsKKworCXN3aXRjaCAoY3RseC0+c3RhdGUpIHsKKwljYXNlIENUTFhfQ09NUExFVEU6CisJY2FzZSBDVExYX1JFUV9GQUlMRUQ6CisJCS8qIFRoaXMgYXJlIHRoZSBjb3JyZWN0IHRlcm1pbmF0aW5nIHN0YXRlcy4gKi8KKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlXTEFOX0xPR19FUlJPUigiQ1RMWFslZF0gbm90IGluIGEgdGVybWluYXRpbmcgc3RhdGUoJXMpXG4iLAorCQkgICAgICAgICAgICAgICBoZmEzODR4Mmhvc3RfMTYoY3RseC0+b3V0YnVmLnR5cGUpLAorCQkgICAgICAgICAgICAgICBjdGx4c3RyKGN0bHgtPnN0YXRlKSk7CisJCWJyZWFrOworCX0gLyogc3dpdGNoICovCisKKwlEQkZFWElUOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2JjdGx4cV9ydW4KKyoKKyogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaGVhZCBpdGVtIGlzIHJ1bm5pbmcuICBJZiBub3QsIHN0YXJ0cyBpdC4KKyoKKyogQXJndW1lbnRzOgorKglodwlwdHIgdG8gaGZhMzg0eF90CisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWFueQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4cV9ydW4oaGZhMzg0eF90CSpodykKK3sKKwl1bnNpZ25lZCBsb25nCQlmbGFnczsKKwlEQkZFTlRFUjsKKworCS8qIGFjcXVpcmUgbG9jayAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJLyogT25seSBvbmUgYWN0aXZlIENUTFggYXQgYW55IG9uZSB0aW1lLCBiZWNhdXNlIHRoZXJlJ3Mgbm8KKwkgKiBvdGhlciAocmVsaWFibGUpIHdheSB0byBtYXRjaCB0aGUgcmVzcG9uc2UgVVJCIHRvIHRoZQorCSAqIGNvcnJlY3QgQ1RMWC4KKwkgKgorCSAqIERvbid0IHRvdWNoIGFueSBvZiB0aGVzZSBDVExYcyBpZiB0aGUgaGFyZHdhcmUKKwkgKiBoYXMgYmVlbiByZW1vdmVkIG9yIHRoZSBVU0Igc3Vic3lzdGVtIGlzIHN0YWxsZWQuCisJICovCisJaWYgKCAhbGlzdF9lbXB0eSgmaHctPmN0bHhxLmFjdGl2ZSkgfHwKKwkgICAgIHRlc3RfYml0KFdPUktfVFhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpIHx8CisJICAgICBody0+d2xhbmRldi0+aHdyZW1vdmVkICkKKwkJZ290byB1bmxvY2s7CisKKwl3aGlsZSAoICFsaXN0X2VtcHR5KCZody0+Y3RseHEucGVuZGluZykgKSB7CisJCWhmYTM4NHhfdXNiY3RseF90CSpoZWFkOworCQlpbnQJCQlyZXN1bHQ7CisKKwkJLyogVGhpcyBpcyB0aGUgZmlyc3QgcGVuZGluZyBjb21tYW5kICovCisJCWhlYWQgPSBsaXN0X2VudHJ5KGh3LT5jdGx4cS5wZW5kaW5nLm5leHQsCisJCSAgICAgICAgICAgICAgICAgIGhmYTM4NHhfdXNiY3RseF90LAorCQkgICAgICAgICAgICAgICAgICBsaXN0KTsKKworCQkvKiBXZSBuZWVkIHRvIHNwbGl0IHRoaXMgb2ZmIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24gKi8KKwkJbGlzdF9tb3ZlX3RhaWwoJmhlYWQtPmxpc3QsICZody0+Y3RseHEuYWN0aXZlKTsKKworCQkvKiBGaWxsIHRoZSBvdXQgcGFja2V0ICovCisJCXVzYl9maWxsX2J1bGtfdXJiKCAmKGh3LT5jdGx4X3VyYiksIGh3LT51c2IsCisJCSAgICAgICAgICAgICAgICAgICBody0+ZW5kcF9vdXQsCisJCSAgICAgICAgICAgICAgICAgICAmKGhlYWQtPm91dGJ1ZiksIFJPVU5EVVA2NChoZWFkLT5vdXRidWZzaXplKSwKKwkJICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfY3RseG91dF9jYWxsYmFjaywgaHcpOworCQlody0+Y3RseF91cmIudHJhbnNmZXJfZmxhZ3MgfD0gVVNCX1FVRVVFX0JVTEs7CisKKwkJLyogTm93IHN1Ym1pdCB0aGUgVVJCIGFuZCB1cGRhdGUgdGhlIENUTFgncyBzdGF0ZQorCQkgKi8KKwkJaWYgKChyZXN1bHQgPSBTVUJNSVRfVVJCKCZody0+Y3RseF91cmIsIEdGUF9BVE9NSUMpKSA9PSAwKSB7CisJCQkvKiBUaGlzIENUTFggaXMgbm93IHJ1bm5pbmcgb24gdGhlIGFjdGl2ZSBxdWV1ZSAqLworCQkJaGVhZC0+c3RhdGUgPSBDVExYX1JFUV9TVUJNSVRURUQ7CisKKwkJCS8qIFN0YXJ0IHRoZSBPVVQgd2FpdCB0aW1lciAqLworCQkJaHctPnJlcV90aW1lcl9kb25lID0gMDsKKwkJCWh3LT5yZXF0aW1lci5leHBpcmVzID0gamlmZmllcyArIEhaOworCQkJYWRkX3RpbWVyKCZody0+cmVxdGltZXIpOworCisJCQkvKiBTdGFydCB0aGUgSU4gd2FpdCB0aW1lciAqLworCQkJaHctPnJlc3BfdGltZXJfZG9uZSA9IDA7CisJCQlody0+cmVzcHRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgMipIWjsKKwkJCWFkZF90aW1lcigmaHctPnJlc3B0aW1lcik7CisKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKHJlc3VsdCA9PSAtRVBJUEUpIHsKKwkJCS8qIFRoZSBPVVQgcGlwZSBuZWVkcyByZXNldHRpbmcsIHNvIHB1dAorCQkJICogdGhpcyBDVExYIGJhY2sgaW4gdGhlICJwZW5kaW5nIiBxdWV1ZQorCQkJICogYW5kIHNjaGVkdWxlIGEgcmVzZXQgLi4uCisJCQkgKi8KKwkJCVdMQU5fTE9HX1dBUk5JTkcoIiVzIHR4IHBpcGUgc3RhbGxlZDogcmVxdWVzdGluZyByZXNldFxuIiwKKwkJCSAgICAgICAgICAgICAgICAgaHctPndsYW5kZXYtPm5ldGRldi0+bmFtZSk7CisJCQlsaXN0X21vdmUoJmhlYWQtPmxpc3QsICZody0+Y3RseHEucGVuZGluZyk7CisJCQlzZXRfYml0KFdPUktfVFhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpOworCQkJc2NoZWR1bGVfd29yaygmaHctPnVzYl93b3JrKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKHJlc3VsdCA9PSAtRVNIVVRET1dOKSB7CisJCQlXTEFOX0xPR19XQVJOSU5HKCIlcyB1cmIgc2h1dGRvd24hXG4iLAorCQkJCQkgaHctPndsYW5kZXYtPm5ldGRldi0+bmFtZSk7CisJCQlicmVhazsKKwkJfQorCisJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3VibWl0IENUTFhbJWRdOiBlcnJvcj0lZFxuIiwKKwkJICAgICAgICAgICAgICAgaGZhMzg0eDJob3N0XzE2KGhlYWQtPm91dGJ1Zi50eXBlKSwgcmVzdWx0KTsKKwkJdW5sb2NrZWRfdXNiY3RseF9jb21wbGV0ZShodywgaGVhZCk7CisJfSAvKiB3aGlsZSAqLworCisJdW5sb2NrOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X3VzYmluX2NhbGxiYWNrCisqCisqIENhbGxiYWNrIGZvciBVUkJzIG9uIHRoZSBCVUxLSU4gZW5kcG9pbnQuCisqCisqIEFyZ3VtZW50czoKKyoJdXJiCQlwdHIgdG8gdGhlIGNvbXBsZXRlZCB1cmIKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZmRlZiBVUkJfT05MWV9DQUxMQkFDSworc3RhdGljIHZvaWQgaGZhMzg0eF91c2Jpbl9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCisjZWxzZQorc3RhdGljIHZvaWQgaGZhMzg0eF91c2Jpbl9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorI2VuZGlmCit7CisJd2xhbmRldmljZV90CQkqd2xhbmRldiA9IHVyYi0+Y29udGV4dDsKKwloZmEzODR4X3QJCSpodzsKKwloZmEzODR4X3VzYmluX3QJCSp1c2JpbiA9IChoZmEzODR4X3VzYmluX3QgKikgdXJiLT50cmFuc2Zlcl9idWZmZXI7CisJc3RydWN0IHNrX2J1ZmYgICAgICAgICAgKnNrYiA9IE5VTEw7CisJaW50CQkJcmVzdWx0OworCWludCAgICAgICAgICAgICAgICAgICAgIHVyYl9zdGF0dXM7CisJVUlOVDE2CQkJdHlwZTsKKworCWVudW0gVVNCSU5fQUNUSU9OIHsKKwkJSEFORExFLAorCQlSRVNVQk1JVCwKKwkJQUJPUlQKKwl9IGFjdGlvbjsKKworCURCRkVOVEVSOworCisJaWYgKCAhd2xhbmRldiB8fAorCSAgICAgIXdsYW5kZXYtPm5ldGRldiB8fAorCSAgICAgIW5ldGlmX2RldmljZV9wcmVzZW50KHdsYW5kZXYtPm5ldGRldikgKQorCQlnb3RvIGV4aXQ7CisKKwlodyA9IHdsYW5kZXYtPnByaXY7CisJaWYgKCFodykKKwkJZ290byBleGl0OworCisJc2tiID0gaHctPnJ4X3VyYl9za2I7CisJaWYgKCFza2IgfHwgKHNrYi0+ZGF0YSAhPSB1cmItPnRyYW5zZmVyX2J1ZmZlcikpIHsKKwkJQlVHKCk7CisJfQorCWh3LT5yeF91cmJfc2tiID0gTlVMTDsKKworCS8qIENoZWNrIGZvciBlcnJvciBjb25kaXRpb25zIHdpdGhpbiB0aGUgVVJCICovCisJc3dpdGNoICh1cmItPnN0YXR1cykgeworCWNhc2UgMDoKKwkJYWN0aW9uID0gSEFORExFOworCisJCS8qIENoZWNrIGZvciBzaG9ydCBwYWNrZXQgKi8KKwkJaWYgKCB1cmItPmFjdHVhbF9sZW5ndGggPT0gMCApIHsKKwkJCSsrKHdsYW5kZXYtPmxpbnV4X3N0YXRzLnJ4X2Vycm9ycyk7CisJCQkrKyh3bGFuZGV2LT5saW51eF9zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKTsKKwkJCWFjdGlvbiA9IFJFU1VCTUlUOworCQl9CisJCWJyZWFrOworCisJY2FzZSAtRVBJUEU6CisJCVdMQU5fTE9HX1dBUk5JTkcoIiVzIHJ4IHBpcGUgc3RhbGxlZDogcmVxdWVzdGluZyByZXNldFxuIiwKKwkJICAgICAgICAgICAgICAgICB3bGFuZGV2LT5uZXRkZXYtPm5hbWUpOworCQlpZiAoICF0ZXN0X2FuZF9zZXRfYml0KFdPUktfUlhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpICkKKwkJCXNjaGVkdWxlX3dvcmsoJmh3LT51c2Jfd29yayk7CisJCSsrKHdsYW5kZXYtPmxpbnV4X3N0YXRzLnJ4X2Vycm9ycyk7CisJCWFjdGlvbiA9IEFCT1JUOworCQlicmVhazsKKworCWNhc2UgLUVJTFNFUToKKwljYXNlIC1FVElNRURPVVQ6CisJY2FzZSAtRVBST1RPOgorCQlpZiAoICF0ZXN0X2FuZF9zZXRfYml0KFRIUk9UVExFX1JYLCAmaHctPnVzYl9mbGFncykgJiYKKwkJICAgICAhdGltZXJfcGVuZGluZygmaHctPnRocm90dGxlKSApIHsKKwkJCW1vZF90aW1lcigmaHctPnRocm90dGxlLCBqaWZmaWVzICsgVEhST1RUTEVfSklGRklFUyk7CisJCX0KKwkJKysod2xhbmRldi0+bGludXhfc3RhdHMucnhfZXJyb3JzKTsKKwkJYWN0aW9uID0gQUJPUlQ7CisJCWJyZWFrOworCisJY2FzZSAtRU9WRVJGTE9XOgorCQkrKyh3bGFuZGV2LT5saW51eF9zdGF0cy5yeF9vdmVyX2Vycm9ycyk7CisJCWFjdGlvbiA9IFJFU1VCTUlUOworCQlicmVhazsKKworCWNhc2UgLUVOT0RFVjoKKwljYXNlIC1FU0hVVERPV046CisJCVdMQU5fTE9HX0RFQlVHKDMsInN0YXR1cz0lZCwgZGV2aWNlIHJlbW92ZWQuXG4iLCB1cmItPnN0YXR1cyk7CisJCWFjdGlvbiA9IEFCT1JUOworCQlicmVhazsKKworCWNhc2UgLUVOT0VOVDoKKwljYXNlIC1FQ09OTlJFU0VUOgorCQlXTEFOX0xPR19ERUJVRygzLCJzdGF0dXM9JWQsIHVyYiBleHBsaWNpdGx5IHVubGlua2VkLlxuIiwgdXJiLT5zdGF0dXMpOworCQlhY3Rpb24gPSBBQk9SVDsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlXTEFOX0xPR19ERUJVRygzLCJ1cmIgc3RhdHVzPSVkLCB0cmFuc2ZlciBmbGFncz0weCV4XG4iLAorCQkgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzLCB1cmItPnRyYW5zZmVyX2ZsYWdzKTsKKwkJKysod2xhbmRldi0+bGludXhfc3RhdHMucnhfZXJyb3JzKTsKKwkJYWN0aW9uID0gUkVTVUJNSVQ7CisJCWJyZWFrOworCX0KKworCXVyYl9zdGF0dXMgPSB1cmItPnN0YXR1czsKKworCWlmIChhY3Rpb24gIT0gQUJPUlQpIHsKKwkJLyogUmVwb3N0IHRoZSBSWCBVUkIgKi8KKwkJcmVzdWx0ID0gc3VibWl0X3J4X3VyYihodywgR0ZQX0FUT01JQyk7CisKKwkJaWYgKHJlc3VsdCAhPSAwKSB7CisJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkiRmF0YWwsIGZhaWxlZCB0byByZXN1Ym1pdCByeF91cmIuIGVycm9yPSVkXG4iLAorCQkJCXJlc3VsdCk7CisJCX0KKwl9CisKKwkvKiBIYW5kbGUgYW55IFVTQi1JTiBwYWNrZXQgKi8KKwkvKiBOb3RlOiB0aGUgY2hlY2sgb2YgdGhlIHN3X3N1cHBvcnQgZmllbGQsIHRoZSB0eXBlIGZpZWxkIGRvZXNuJ3QKKwkgKiAgICAgICBoYXZlIGJpdCAxMiBzZXQgbGlrZSB0aGUgZG9jcyBzdWdnZXN0LgorCSAqLworCXR5cGUgPSBoZmEzODR4Mmhvc3RfMTYodXNiaW4tPnR5cGUpOworCWlmIChIRkEzODR4X1VTQl9JU1JYRlJNKHR5cGUpKSB7CisJCWlmIChhY3Rpb24gPT0gSEFORExFKSB7CisJCQlpZiAodXNiaW4tPnR4ZnJtLmRlc2Muc3dfc3VwcG9ydCA9PSAweDAxMjMpIHsKKwkJCQloZmEzODR4X3VzYmluX3R4Y29tcGwod2xhbmRldiwgdXNiaW4pOworCQkJfSBlbHNlIHsKKwkJCQlza2JfcHV0KHNrYiwgc2l6ZW9mKCp1c2JpbikpOworCQkJCWhmYTM4NHhfdXNiaW5fcngod2xhbmRldiwgc2tiKTsKKwkJCQlza2IgPSBOVUxMOworCQkJfQorCQl9CisJCWdvdG8gZXhpdDsKKwl9CisJaWYgKEhGQTM4NHhfVVNCX0lTVFhGUk0odHlwZSkpIHsKKwkJaWYgKGFjdGlvbiA9PSBIQU5ETEUpCisJCQloZmEzODR4X3VzYmluX3R4Y29tcGwod2xhbmRldiwgdXNiaW4pOworCQlnb3RvIGV4aXQ7CisJfQorCXN3aXRjaCAodHlwZSkgeworCWNhc2UgSEZBMzg0eF9VU0JfSU5GT0ZSTToKKwkJaWYgKGFjdGlvbiA9PSBBQk9SVCkKKwkJCWdvdG8gZXhpdDsKKwkJaWYgKGFjdGlvbiA9PSBIQU5ETEUpCisJCQloZmEzODR4X3VzYmluX2luZm8od2xhbmRldiwgdXNiaW4pOworCQlicmVhazsKKworCWNhc2UgSEZBMzg0eF9VU0JfQ01EUkVTUDoKKwljYXNlIEhGQTM4NHhfVVNCX1dSSURSRVNQOgorCWNhc2UgSEZBMzg0eF9VU0JfUlJJRFJFU1A6CisJY2FzZSBIRkEzODR4X1VTQl9XTUVNUkVTUDoKKwljYXNlIEhGQTM4NHhfVVNCX1JNRU1SRVNQOgorCQkvKiBBTFdBWVMsIEFMV0FZUywgQUxXQVlTIGhhbmRsZSB0aGlzIENUTFghISEhICovCisJCWhmYTM4NHhfdXNiaW5fY3RseChodywgdXNiaW4sIHVyYl9zdGF0dXMpOworCQlicmVhazsKKworCWNhc2UgSEZBMzg0eF9VU0JfQlVGQVZBSUw6CisJCVdMQU5fTE9HX0RFQlVHKDMsIlJlY2VpdmVkIEJVRkFWQUlMIHBhY2tldCwgZnJtbGVuPSVkXG4iLAorCQkJdXNiaW4tPmJ1ZmF2YWlsLmZybWxlbik7CisJCWJyZWFrOworCisJY2FzZSBIRkEzODR4X1VTQl9FUlJPUjoKKwkJV0xBTl9MT0dfREVCVUcoMywiUmVjZWl2ZWQgVVNCX0VSUk9SIHBhY2tldCwgZXJyb3J0eXBlPSVkXG4iLAorCQkJdXNiaW4tPnVzYmVycm9yLmVycm9ydHlwZSk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJV0xBTl9MT0dfREVCVUcoMywiVW5yZWNvZ25pemVkIFVTQklOIHBhY2tldCwgdHlwZT0leCwgc3RhdHVzPSVkXG4iLAorCQkJdXNiaW4tPnR5cGUsIHVyYl9zdGF0dXMpOworCQlicmVhazsKKwl9IC8qIHN3aXRjaCAqLworCitleGl0OgorCisJaWYgKHNrYikKKwkJZGV2X2tmcmVlX3NrYihza2IpOworCisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2Jpbl9jdGx4CisqCisqIFdlJ3ZlIHJlY2VpdmVkIGEgVVJCIGNvbnRhaW5pbmcgYSBQcmlzbTIgInJlc3BvbnNlIiBtZXNzYWdlLgorKiBUaGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgbWF0Y2hlZCB1cCB3aXRoIGEgQ1RMWCBvbiB0aGUgYWN0aXZlCisqIHF1ZXVlIGFuZCBvdXIgc3RhdGUgdXBkYXRlZCBhY2NvcmRpbmdseS4KKyoKKyogQXJndW1lbnRzOgorKglodwkJcHRyIHRvIGhmYTM4NHhfdAorKgl1c2JpbgkJcHRyIHRvIFVTQiBJTiBwYWNrZXQKKyoJdXJiX3N0YXR1cwlzdGF0dXMgb2YgdGhpcyBCdWxrLUluIFVSQgorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF91c2Jpbl9jdGx4KGhmYTM4NHhfdCAqaHcsIGhmYTM4NHhfdXNiaW5fdCAqdXNiaW4sCisJCQkgICAgICAgaW50IHVyYl9zdGF0dXMpCit7CisJaGZhMzg0eF91c2JjdGx4X3QJKmN0bHg7CisJaW50CQkJcnVuX3F1ZXVlID0gMDsKKwl1bnNpZ25lZCBsb25nCQlmbGFnczsKKworCURCRkVOVEVSOworCityZXRyeToKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCS8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBDVExYIG9uIHRoZSBhY3RpdmUgcXVldWUKKwkgKiBhdCBhbnkgb25lIHRpbWUsIGFuZCB0aGlzIGlzIHRoZSBDVExYIHRoYXQgdGhlCisJICogdGltZXJzIGFyZSB3YWl0aW5nIGZvci4KKwkgKi8KKwlpZiAoIGxpc3RfZW1wdHkoJmh3LT5jdGx4cS5hY3RpdmUpICkgeworCQlnb3RvIHVubG9jazsKKwl9CisKKwkvKiBSZW1vdmUgdGhlICJyZXNwb25zZSB0aW1lb3V0Ii4gSXQncyBwb3NzaWJsZSB0aGF0CisJICogd2UgYXJlIGFscmVhZHkgdG9vIGxhdGUsIGFuZCB0aGF0IHRoZSB0aW1lb3V0IGlzCisJICogYWxyZWFkeSBydW5uaW5nLiBBbmQgdGhhdCdzIGp1c3QgdG9vIGJhZCBmb3IgdXMsCisJICogYmVjYXVzZSB3ZSBjb3VsZCBsb3NlIG91ciBDVExYIGZyb20gdGhlIGFjdGl2ZQorCSAqIHF1ZXVlIGhlcmUgLi4uCisJICovCisJaWYgKGRlbF90aW1lcigmaHctPnJlc3B0aW1lcikgPT0gMCkgeworCQlpZiAoaHctPnJlc3BfdGltZXJfZG9uZSA9PSAwKSB7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCQkJZ290byByZXRyeTsKKwkJfQorCX0KKwllbHNlIHsKKwkJaHctPnJlc3BfdGltZXJfZG9uZSA9IDE7CisJfQorCisJY3RseCA9IGdldF9hY3RpdmVfY3RseChodyk7CisKKwlpZiAodXJiX3N0YXR1cyAhPSAwKSB7CisJCS8qCisJCSAqIEJhZCBDVExYLCBzbyBnZXQgcmlkIG9mIGl0LiBCdXQgd2Ugb25seQorCQkgKiByZW1vdmUgaXQgZnJvbSB0aGUgYWN0aXZlIHF1ZXVlIGlmIHdlJ3JlIG5vCisJCSAqIGxvbmdlciBleHBlY3RpbmcgdGhlIE9VVCBVUkIgdG8gY29tcGxldGUuCisJCSAqLworCQlpZiAodW5sb2NrZWRfdXNiY3RseF9jYW5jZWxfYXN5bmMoaHcsIGN0bHgpID09IDApCisJCQlydW5fcXVldWUgPSAxOworCX0gZWxzZSB7CisJCWNvbnN0IFVJTlQxNiBpbnR5cGUgPSAodXNiaW4tPnR5cGUmfmhvc3QyaGZhMzg0eF8xNigweDgwMDApKTsKKworCQkvKgorCQkgKiBDaGVjayB0aGF0IG91ciBtZXNzYWdlIGlzIHdoYXQgd2UncmUgZXhwZWN0aW5nIC4uLgorCQkgKi8KKwkJaWYgKGN0bHgtPm91dGJ1Zi50eXBlICE9IGludHlwZSkgeworCQkJV0xBTl9MT0dfV0FSTklORygiRXhwZWN0ZWQgSU5bJWRdLCByZWNlaXZlZCBJTlslZF0gLSBpZ25vcmVkLlxuIiwKKwkJCSAgICAgICAgICAgICAgICAgaGZhMzg0eDJob3N0XzE2KGN0bHgtPm91dGJ1Zi50eXBlKSwKKwkJCSAgICAgICAgICAgICAgICAgaGZhMzg0eDJob3N0XzE2KGludHlwZSkpOworCQkJZ290byB1bmxvY2s7CisJCX0KKworCQkvKiBUaGlzIFVSQiBoYXMgc3VjY2VlZGVkLCBzbyBncmFiIHRoZSBkYXRhIC4uLiAqLworCQltZW1jcHkoJmN0bHgtPmluYnVmLCB1c2Jpbiwgc2l6ZW9mKGN0bHgtPmluYnVmKSk7CisKKwkJc3dpdGNoIChjdGx4LT5zdGF0ZSkgeworCQljYXNlIENUTFhfUkVRX1NVQk1JVFRFRDoKKwkJCS8qCisJCQkgKiBXZSBoYXZlIHJlY2VpdmVkIG91ciByZXNwb25zZSBVUkIgYmVmb3JlCisJCQkgKiBvdXIgcmVxdWVzdCBoYXMgYmVlbiBhY2tub3dsZWRnZWQuIE9kZCwKKwkJCSAqIGJ1dCBvdXIgT1VUIFVSQiBpcyBzdGlsbCBhbGl2ZS4uLgorCQkJICovCisJCQlXTEFOX0xPR19ERUJVRygwLCAiQ2F1c2FsaXR5IHZpb2xhdGlvbjogcGxlYXNlIHJlYm9vdCBVbml2ZXJzZSwgb3IgZW1haWwgbGludXgtd2xhbi1kZXZlbEBsaXN0cy5saW51eC13bGFuLmNvbVxuIik7CisJCQljdGx4LT5zdGF0ZSA9IENUTFhfUkVTUF9DT01QTEVURTsKKwkJCWJyZWFrOworCisJCWNhc2UgQ1RMWF9SRVFfQ09NUExFVEU6CisJCQkvKgorCQkJICogVGhpcyBpcyB0aGUgdXN1YWwgcGF0aDogb3VyIHJlcXVlc3QKKwkJCSAqIGhhcyBhbHJlYWR5IGJlZW4gYWNrbm93bGVkZ2VkLCBhbmQKKwkJCSAqIG5vdyB3ZSBoYXZlIHJlY2VpdmVkIHRoZSByZXBseSB0b28uCisJCQkgKi8KKwkJCWN0bHgtPnN0YXRlID0gQ1RMWF9DT01QTEVURTsKKwkJCXVubG9ja2VkX3VzYmN0bHhfY29tcGxldGUoaHcsIGN0bHgpOworCQkJcnVuX3F1ZXVlID0gMTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQkvKgorCQkJICogVGhyb3cgdGhpcyBDVExYIGF3YXkgLi4uCisJCQkgKi8KKwkJCVdMQU5fTE9HX0VSUk9SKCJNYXRjaGVkIElOIFVSQiwgQ1RMWFslZF0gaW4gaW52YWxpZCBzdGF0ZSglcykuIgorCQkJICAgICAgICAgICAgICAgIiBEaXNjYXJkZWQuXG4iLAorCQkJICAgICAgICAgICAgICAgaGZhMzg0eDJob3N0XzE2KGN0bHgtPm91dGJ1Zi50eXBlKSwKKwkJCSAgICAgICAgICAgICAgIGN0bHhzdHIoY3RseC0+c3RhdGUpKTsKKwkJCWlmICh1bmxvY2tlZF91c2JjdGx4X2NhbmNlbF9hc3luYyhodywgY3RseCkgPT0gMCkKKwkJCQlydW5fcXVldWUgPSAxOworCQkJYnJlYWs7CisJCX0gLyogc3dpdGNoICovCisJfQorCit1bmxvY2s6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCWlmIChydW5fcXVldWUpCisJCWhmYTM4NHhfdXNiY3RseHFfcnVuKGh3KTsKKworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfdXNiaW5fdHhjb21wbAorKgorKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgdGhlIHJlc3VsdHMgb2YgYSBwcmV2aW91cyB0cmFuc21pdC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZQorKgl1c2JpbgkJcHRyIHRvIHRoZSB1c2IgdHJhbnNmZXIgYnVmZmVyCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBoZmEzODR4X3VzYmluX3R4Y29tcGwod2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X3VzYmluX3QgKnVzYmluKQoreworCVVJTlQxNgkJCXN0YXR1czsKKwlEQkZFTlRFUjsKKworCXN0YXR1cyA9IGhmYTM4NHgyaG9zdF8xNih1c2Jpbi0+dHlwZSk7IC8qIHllYWggSSBrbm93IGl0IHNheXMgdHlwZS4uLiovCisKKwkvKiBXYXMgdGhlcmUgYW4gZXJyb3I/ICovCisJaWYgKEhGQTM4NHhfVFhTVEFUVVNfSVNFUlJPUihzdGF0dXMpKSB7CisJCXByaXNtMnN0YV9ldl90eGV4Yyh3bGFuZGV2LCBzdGF0dXMpOworCX0gZWxzZSB7CisJCXByaXNtMnN0YV9ldl90eCh3bGFuZGV2LCBzdGF0dXMpOworCX0KKwkvLyBwcmlzbTJzdGFfZXZfYWxsb2Mod2xhbmRldik7CisKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X3VzYmluX3J4CisqCisqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgcmVjZWl2ZWQgYSByeCBmcmFtZSBwYWNrZXQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2UKKyoJdXNiaW4JCXB0ciB0byB0aGUgdXNiIHRyYW5zZmVyIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF91c2Jpbl9yeCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHN0cnVjdCBza19idWZmICpza2IpCit7CisJaGZhMzg0eF91c2Jpbl90ICAgICAgICAgKnVzYmluID0gKGhmYTM4NHhfdXNiaW5fdCAqKSBza2ItPmRhdGE7CisJaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlpbnQgICAgICAgICAgICAgICAgICAgICBoZHJsZW47CisJcDgwMjExX3J4bWV0YV90ICAgICAgICAgKnJ4bWV0YTsKKwlVSU5UMTYgICAgICAgICAgICAgICAgICBkYXRhX2xlbjsKKwlVSU5UMTYgICAgICAgICAgICAgICAgICBmYzsKKworCURCRkVOVEVSOworCisJLyogQnl0ZSBvcmRlciBjb252ZXJ0IG9uY2UgdXAgZnJvbnQuICovCisJdXNiaW4tPnJ4ZnJtLmRlc2Muc3RhdHVzID0KKwkJaGZhMzg0eDJob3N0XzE2KHVzYmluLT5yeGZybS5kZXNjLnN0YXR1cyk7CisJdXNiaW4tPnJ4ZnJtLmRlc2MudGltZSA9CisJCWhmYTM4NHgyaG9zdF8zMih1c2Jpbi0+cnhmcm0uZGVzYy50aW1lKTsKKworCS8qIE5vdyBoYW5kbGUgZnJhbWUgYmFzZWQgb24gcG9ydCMgKi8KKwlzd2l0Y2goIEhGQTM4NHhfUlhTVEFUVVNfTUFDUE9SVF9HRVQodXNiaW4tPnJ4ZnJtLmRlc2Muc3RhdHVzKSApCisJeworCWNhc2UgMDoKKwkJZmMgPSBpZWVlMmhvc3QxNih1c2Jpbi0+cnhmcm0uZGVzYy5mcmFtZV9jb250cm9sKTsKKworCQkvKiBJZiBleGNsdWRlIGFuZCB3ZSByZWNlaXZlIGFuIHVuZW5jcnlwdGVkLCBkcm9wIGl0ICovCisJCWlmICggKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0VYQ0xVREVVTkVOQ1JZUFRFRCkgJiYKKwkJICAgICAhV0xBTl9HRVRfRkNfSVNXRVAoZmMpKXsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWRhdGFfbGVuID0gaGZhMzg0eDJob3N0XzE2KHVzYmluLT5yeGZybS5kZXNjLmRhdGFfbGVuKTsKKworCQkvKiBIb3cgbXVjaCBoZWFkZXIgZGF0YSBkbyB3ZSBoYXZlPyAqLworCQloZHJsZW4gPSBwODAyMTFfaGVhZGVybGVuKGZjKTsKKworCQkvKiBQdWxsIG9mZiB0aGUgZGVzY3JpcHRvciAqLworCQlza2JfcHVsbChza2IsIHNpemVvZihoZmEzODR4X3J4X2ZyYW1lX3QpKTsKKworCQkvKiBOb3cgc2h1bnQgdGhlIGhlYWRlciBibG9jayB1cCBhZ2FpbnN0IHRoZSBkYXRhIGJsb2NrCisJCSAqIHdpdGggYW4gIm92ZXJsYXBwaW5nIiBjb3B5CisJCSAqLworCQltZW1tb3ZlKHNrYl9wdXNoKHNrYiwgaGRybGVuKSwKKwkJICAgICAgICAmdXNiaW4tPnJ4ZnJtLmRlc2MuZnJhbWVfY29udHJvbCwKKwkJICAgICAgICBoZHJsZW4pOworCisJCXNrYi0+ZGV2ID0gd2xhbmRldi0+bmV0ZGV2OworCQlza2ItPmRldi0+bGFzdF9yeCA9IGppZmZpZXM7CisKKwkJLyogQW5kIHNldCB0aGUgZnJhbWUgbGVuZ3RoIHByb3Blcmx5ICovCisJCXNrYl90cmltKHNrYiwgZGF0YV9sZW4gKyBoZHJsZW4pOworCisJCS8qIFRoZSBwcmlzbTIgc2VyaWVzIGRvZXMgbm90IHJldHVybiB0aGUgQ1JDICovCisJCW1lbXNldChza2JfcHV0KHNrYiwgV0xBTl9DUkNfTEVOKSwgMHhmZiwgV0xBTl9DUkNfTEVOKTsKKworCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOworCisJCS8qIEF0dGFjaCB0aGUgcnhtZXRhLCBzZXQgc29tZSBzdHVmZiAqLworCQlwODAyMTFza2JfcnhtZXRhX2F0dGFjaCh3bGFuZGV2LCBza2IpOworCQlyeG1ldGEgPSBQODAyMTFTS0JfUlhNRVRBKHNrYik7CisJCXJ4bWV0YS0+bWFjdGltZSA9IHVzYmluLT5yeGZybS5kZXNjLnRpbWU7CisJCXJ4bWV0YS0+cnhyYXRlID0gdXNiaW4tPnJ4ZnJtLmRlc2MucmF0ZTsKKwkJcnhtZXRhLT5zaWduYWwgPSB1c2Jpbi0+cnhmcm0uZGVzYy5zaWduYWwgLSBody0+ZGJtYWRqdXN0OworCQlyeG1ldGEtPm5vaXNlID0gdXNiaW4tPnJ4ZnJtLmRlc2Muc2lsZW5jZSAtIGh3LT5kYm1hZGp1c3Q7CisKKwkJcHJpc20yc3RhX2V2X3J4KHdsYW5kZXYsIHNrYik7CisKKwkJYnJlYWs7CisKKwljYXNlIDc6CisJCWlmICggISBIRkEzODR4X1JYU1RBVFVTX0lTRkNTRVJSKHVzYmluLT5yeGZybS5kZXNjLnN0YXR1cykgKSB7CisJCQkvKiBDb3B5IHRvIHdsYW5zbmlmIHNrYiAqLworCQkJaGZhMzg0eF9pbnRfcnhtb25pdG9yKCB3bGFuZGV2LCAmdXNiaW4tPnJ4ZnJtKTsKKwkJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwkJfSBlbHNlIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDMsIlJlY2VpdmVkIG1vbml0b3IgZnJhbWU6IEZDU2VyciBzZXRcbiIpOworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJV0xBTl9MT0dfV0FSTklORygiUmVjZWl2ZWQgZnJhbWUgb24gdW5zdXBwb3J0ZWQgcG9ydD0lZFxuIiwKKwkJCUhGQTM4NHhfUlhTVEFUVVNfTUFDUE9SVF9HRVQodXNiaW4tPnJ4ZnJtLmRlc2Muc3RhdHVzKSApOworCQlnb3RvIGRvbmU7CisJCWJyZWFrOworCX0KKworZG9uZToKKwlEQkZFWElUOworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfaW50X3J4bW9uaXRvcgorKgorKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGludF9yeC4gIEhhbmRsZXMgbW9uaXRvciBmcmFtZXMuCisqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBzcGFjZSBmb3IgdGhlIEZDUyBhbmQgc2V0cyBpdAorKiB0byAweGZmZmZmZmZmLiAgVGhlIGhmYTM4NHggZG9lc24ndCBnaXZlIHVzIHRoZSBGQ1MgdmFsdWUgYnV0IHRoZQorKiBoaWdoZXIgbGF5ZXJzIGV4cGVjdCBpdC4gIDB4ZmZmZmZmZmYgaXMgdXNlZCBhcyBhIGZsYWcgdG8gaW5kaWNhdGUKKyogdGhlIEZDUyBpcyBib2d1cy4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJcnhmcm0JCXJ4IGRlc2NyaXB0b3IgcmVhZCBmcm9tIGNhcmQgaW4gaW50X3J4CisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKglBbGxvY2F0ZXMgYW4gc2tiIGFuZCBwYXNzZXMgaXQgdXAgdmlhIHRoZSBQRl9QQUNLRVQgaW50ZXJmYWNlLgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBoZmEzODR4X2ludF9yeG1vbml0b3IoIHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgaGZhMzg0eF91c2Jfcnhmcm1fdCAqcnhmcm0pCit7CisJaGZhMzg0eF9yeF9mcmFtZV90ICAgICAgICAgICAgICAqcnhkZXNjID0gJihyeGZybS0+ZGVzYyk7CisJVUlOVAkJCQloZHJsZW4gPSAwOworCVVJTlQJCQkJZGF0YWxlbiA9IDA7CisJVUlOVAkJCQlza2JsZW4gPSAwOworCXA4MDIxMW1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fdAkqbXNnOworCVVJTlQ4CQkJCSpkYXRhcDsKKwlVSU5UMTYJCQkJZmM7CisJc3RydWN0IHNrX2J1ZmYJCQkqc2tiOworCWhmYTM4NHhfdAkJICAgICAgICAqaHcgPSB3bGFuZGV2LT5wcml2OworCisKKwlEQkZFTlRFUjsKKwkvKiBEb24ndCBmb3JnZXQgdGhlIHN0YXR1cywgdGltZSwgYW5kIGRhdGFfbGVuIGZpZWxkcyBhcmUgaW4gaG9zdCBvcmRlciAqLworCS8qIEZpZ3VyZSBvdXQgaG93IGJpZyB0aGUgZnJhbWUgaXMgKi8KKwlmYyA9IGllZWUyaG9zdDE2KHJ4ZGVzYy0+ZnJhbWVfY29udHJvbCk7CisJaGRybGVuID0gcDgwMjExX2hlYWRlcmxlbihmYyk7CisJZGF0YWxlbiA9IGhmYTM4NHgyaG9zdF8xNihyeGRlc2MtPmRhdGFfbGVuKTsKKworCS8qIEFsbG9jYXRlIGFuIGluZCBtZXNzYWdlK2ZyYW1lc2l6ZSBza2IgKi8KKwlza2JsZW4gPSBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KSArCisJCWhkcmxlbiArIGRhdGFsZW4gKyBXTEFOX0NSQ19MRU47CisKKwkvKiBzYW5pdHkgY2hlY2sgdGhlIGxlbmd0aCAqLworCWlmICggc2tibGVuID4KKwkJKHNpemVvZihwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3QpICsKKwkJV0xBTl9IRFJfQTRfTEVOICsgV0xBTl9EQVRBX01BWExFTiArIFdMQU5fQ1JDX0xFTikgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsICJvdmVybGVuIGZybTogbGVuPSV6ZFxuIiwKKwkJCXNrYmxlbiAtIHNpemVvZihwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3QpKTsKKwl9CisKKwlpZiAoIChza2IgPSBkZXZfYWxsb2Nfc2tiKHNrYmxlbikpID09IE5VTEwgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJhbGxvY19za2IgZmFpbGVkIHRyeWluZyB0byBhbGxvY2F0ZSAlZCBieXRlc1xuIiwgc2tibGVuKTsKKwkJcmV0dXJuOworCX0KKworCS8qIG9ubHkgcHJlcGVuZCB0aGUgcHJpc20gaGVhZGVyIGlmIGluIHRoZSByaWdodCBtb2RlICovCisJaWYgKCh3bGFuZGV2LT5uZXRkZXYtPnR5cGUgPT0gQVJQSFJEX0lFRUU4MDIxMV9QUklTTSkgJiYKKwkgICAgKGh3LT5zbmlmZmhkciA9PSAwKSkgeworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KSk7CisJCW1zZyA9IChwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3QqKSBkYXRhcDsKKworCQkvKiBJbml0aWFsaXplIHRoZSBtZXNzYWdlIG1lbWJlcnMgKi8KKwkJbXNnLT5tc2djb2RlID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybTsKKwkJbXNnLT5tc2dsZW4gPSBzaXplb2YocDgwMjExbXNnX2xueGluZF93bGFuc25pZmZybV90KTsKKwkJc3RyY3B5KG1zZy0+ZGV2bmFtZSwgd2xhbmRldi0+bmFtZSk7CisKKwkJbXNnLT5ob3N0dGltZS5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX2hvc3R0aW1lOworCQltc2ctPmhvc3R0aW1lLnN0YXR1cyA9IDA7CisJCW1zZy0+aG9zdHRpbWUubGVuID0gNDsKKwkJbXNnLT5ob3N0dGltZS5kYXRhID0gamlmZmllczsKKworCQltc2ctPm1hY3RpbWUuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9tYWN0aW1lOworCQltc2ctPm1hY3RpbWUuc3RhdHVzID0gMDsKKwkJbXNnLT5tYWN0aW1lLmxlbiA9IDQ7CisJCW1zZy0+bWFjdGltZS5kYXRhID0gcnhkZXNjLT50aW1lOworCisJCW1zZy0+Y2hhbm5lbC5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX2NoYW5uZWw7CisJCW1zZy0+Y2hhbm5lbC5zdGF0dXMgPSAwOworCQltc2ctPmNoYW5uZWwubGVuID0gNDsKKwkJbXNnLT5jaGFubmVsLmRhdGEgPSBody0+c25pZmZfY2hhbm5lbDsKKworCQltc2ctPnJzc2kuZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9yc3NpOworCQltc2ctPnJzc2kuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19ub192YWx1ZTsKKwkJbXNnLT5yc3NpLmxlbiA9IDQ7CisJCW1zZy0+cnNzaS5kYXRhID0gMDsKKworCQltc2ctPnNxLmRpZCA9IERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fc3E7CisJCW1zZy0+c3Euc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19ub192YWx1ZTsKKwkJbXNnLT5zcS5sZW4gPSA0OworCQltc2ctPnNxLmRhdGEgPSAwOworCisJCW1zZy0+c2lnbmFsLmRpZCA9IERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fc2lnbmFsOworCQltc2ctPnNpZ25hbC5zdGF0dXMgPSAwOworCQltc2ctPnNpZ25hbC5sZW4gPSA0OworCQltc2ctPnNpZ25hbC5kYXRhID0gcnhkZXNjLT5zaWduYWw7CisKKwkJbXNnLT5ub2lzZS5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX25vaXNlOworCQltc2ctPm5vaXNlLnN0YXR1cyA9IDA7CisJCW1zZy0+bm9pc2UubGVuID0gNDsKKwkJbXNnLT5ub2lzZS5kYXRhID0gcnhkZXNjLT5zaWxlbmNlOworCisJCW1zZy0+cmF0ZS5kaWQgPSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3JhdGU7CisJCW1zZy0+cmF0ZS5zdGF0dXMgPSAwOworCQltc2ctPnJhdGUubGVuID0gNDsKKwkJbXNnLT5yYXRlLmRhdGEgPSByeGRlc2MtPnJhdGUgLyA1OyAvKiBzZXQgdG8gODAyLjExIHVuaXRzICovCisKKwkJbXNnLT5pc3R4LmRpZCA9IERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1faXN0eDsKKwkJbXNnLT5pc3R4LnN0YXR1cyA9IDA7CisJCW1zZy0+aXN0eC5sZW4gPSA0OworCQltc2ctPmlzdHguZGF0YSA9IFA4MDIxMUVOVU1fdHJ1dGhfZmFsc2U7CisKKwkJbXNnLT5mcm1sZW4uZGlkID0gRElEbXNnX2xueGluZF93bGFuc25pZmZybV9mcm1sZW47CisJCW1zZy0+ZnJtbGVuLnN0YXR1cyA9IDA7CisJCW1zZy0+ZnJtbGVuLmxlbiA9IDQ7CisJCW1zZy0+ZnJtbGVuLmRhdGEgPSBoZHJsZW4gKyBkYXRhbGVuICsgV0xBTl9DUkNfTEVOOworCX0gZWxzZSBpZiAoKHdsYW5kZXYtPm5ldGRldi0+dHlwZSA9PSBBUlBIUkRfSUVFRTgwMjExX1BSSVNNKSAmJgorCQkgICAoaHctPnNuaWZmaGRyICE9IDApKSB7CisJCXA4MDIxMV9jYXBoZHJfdAkJKmNhcGhkcjsKKwkJLyogVGhlIE5FVyBoZWFkZXIgZm9ybWF0ISAqLworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBzaXplb2YocDgwMjExX2NhcGhkcl90KSk7CisJCWNhcGhkciA9IChwODAyMTFfY2FwaGRyX3QqKSBkYXRhcDsKKworCQljYXBoZHItPnZlcnNpb24gPQlodG9ubChQODAyMTFDQVBUVVJFX1ZFUlNJT04pOworCQljYXBoZHItPmxlbmd0aCA9CWh0b25sKHNpemVvZihwODAyMTFfY2FwaGRyX3QpKTsKKwkJY2FwaGRyLT5tYWN0aW1lID0JX19jcHVfdG9fYmU2NChyeGRlc2MtPnRpbWUpICogMTAwMDsKKwkJY2FwaGRyLT5ob3N0dGltZSA9CV9fY3B1X3RvX2JlNjQoamlmZmllcyk7CisJCWNhcGhkci0+cGh5dHlwZSA9CWh0b25sKDQpOyAvKiBkc3NfZG90MTFfYiAqLworCQljYXBoZHItPmNoYW5uZWwgPQlodG9ubChody0+c25pZmZfY2hhbm5lbCk7CisJCWNhcGhkci0+ZGF0YXJhdGUgPQlodG9ubChyeGRlc2MtPnJhdGUpOworCQljYXBoZHItPmFudGVubmEgPQlodG9ubCgwKTsgLyogdW5rbm93biAqLworCQljYXBoZHItPnByaW9yaXR5ID0JaHRvbmwoMCk7IC8qIHVua25vd24gKi8KKwkJY2FwaGRyLT5zc2lfdHlwZSA9CWh0b25sKDMpOyAvKiByc3NpX3JhdyAqLworCQljYXBoZHItPnNzaV9zaWduYWwgPQlodG9ubChyeGRlc2MtPnNpZ25hbCk7CisJCWNhcGhkci0+c3NpX25vaXNlID0JaHRvbmwocnhkZXNjLT5zaWxlbmNlKTsKKwkJY2FwaGRyLT5wcmVhbWJsZSA9CWh0b25sKDApOyAvKiB1bmtub3duICovCisJCWNhcGhkci0+ZW5jb2RpbmcgPQlodG9ubCgxKTsgLyogY2NrICovCisJfQorCisJLyogQ29weSB0aGUgODAyLjExIGhlYWRlciB0byB0aGUgc2tiIChjdGwgZnJhbWVzIG1heSBiZSBsZXNzIHRoYW4gYSBmdWxsIGhlYWRlcikgKi8KKwlkYXRhcCA9IHNrYl9wdXQoc2tiLCBoZHJsZW4pOworCW1lbWNweSggZGF0YXAsICYocnhkZXNjLT5mcmFtZV9jb250cm9sKSwgaGRybGVuKTsKKworCS8qIElmIGFueSwgY29weSB0aGUgZGF0YSBmcm9tIHRoZSBjYXJkIHRvIHRoZSBza2IgKi8KKwlpZiAoIGRhdGFsZW4gPiAwICkKKwl7CisJCWRhdGFwID0gc2tiX3B1dChza2IsIGRhdGFsZW4pOworCQltZW1jcHkoZGF0YXAsIHJ4ZnJtLT5kYXRhLCBkYXRhbGVuKTsKKworCQkvKiBjaGVjayBmb3IgdW5lbmNyeXB0ZWQgc3R1ZmYgaWYgV0VQIGJpdCBzZXQuICovCisJCWlmICgqKGRhdGFwIC0gaGRybGVuICsgMSkgJiAweDQwKSAvLyB3ZXAgc2V0CisJCSAgaWYgKCgqKGRhdGFwKSA9PSAweGFhKSAmJiAoKihkYXRhcCsxKSA9PSAweGFhKSkKKwkJICAgICooZGF0YXAgLSBoZHJsZW4gKyAxKSAmPSAweGJmOyAvLyBjbGVhciB3ZXA7IGl0J3MgdGhlIDgwMi4yIGhlYWRlciEKKwl9CisKKwlpZiAoaHctPnNuaWZmX2ZjcykgeworCQkvKiBTZXQgdGhlIEZDUyAqLworCQlkYXRhcCA9IHNrYl9wdXQoc2tiLCBXTEFOX0NSQ19MRU4pOworCQltZW1zZXQoIGRhdGFwLCAweGZmLCBXTEFOX0NSQ19MRU4pOworCX0KKworCS8qIHBhc3MgaXQgYmFjayB1cCAqLworCXByaXNtMnN0YV9ldl9yeCh3bGFuZGV2LCBza2IpOworCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2Jpbl9pbmZvCisqCisqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgcmVjZWl2ZWQgYSBQcmlzbTIgaW5mbyBmcmFtZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZQorKgl1c2JpbgkJcHRyIHRvIHRoZSB1c2IgdHJhbnNmZXIgYnVmZmVyCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBoZmEzODR4X3VzYmluX2luZm8od2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X3VzYmluX3QgKnVzYmluKQoreworCURCRkVOVEVSOworCisJdXNiaW4tPmluZm9mcm0uaW5mby5mcmFtZWxlbiA9IGhmYTM4NHgyaG9zdF8xNih1c2Jpbi0+aW5mb2ZybS5pbmZvLmZyYW1lbGVuKTsKKwlwcmlzbTJzdGFfZXZfaW5mbyh3bGFuZGV2LCAmdXNiaW4tPmluZm9mcm0uaW5mbyk7CisKKwlEQkZFWElUOworfQorCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfdXNib3V0X2NhbGxiYWNrCisqCisqIENhbGxiYWNrIGZvciBVUkJzIG9uIHRoZSBCVUxLT1VUIGVuZHBvaW50LgorKgorKiBBcmd1bWVudHM6CisqCXVyYgkJcHRyIHRvIHRoZSBjb21wbGV0ZWQgdXJiCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZkZWYgVVJCX09OTFlfQ0FMTEJBQ0sKK3N0YXRpYyB2b2lkIGhmYTM4NHhfdXNib3V0X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKKyNlbHNlCitzdGF0aWMgdm9pZCBoZmEzODR4X3VzYm91dF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorI2VuZGlmCit7CisJd2xhbmRldmljZV90CQkqd2xhbmRldiA9IHVyYi0+Y29udGV4dDsKKwloZmEzODR4X3VzYm91dF90CSp1c2JvdXQgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKKwlEQkZFTlRFUjsKKworI2lmZGVmIERFQlVHX1VTQgorCWRicHJpbnRfdXJiKHVyYik7CisjZW5kaWYKKworCWlmICggd2xhbmRldiAmJgorCSAgICAgd2xhbmRldi0+bmV0ZGV2ICkgeworCisJCXN3aXRjaCh1cmItPnN0YXR1cykgeworCQljYXNlIDA6CisJCQloZmEzODR4X3VzYm91dF90eCh3bGFuZGV2LCB1c2JvdXQpOworCQkJYnJlYWs7CisKKwkJY2FzZSAtRVBJUEU6CisJCXsKKwkJCWhmYTM4NHhfdCAqaHcgPSB3bGFuZGV2LT5wcml2OworCQkJV0xBTl9MT0dfV0FSTklORygiJXMgdHggcGlwZSBzdGFsbGVkOiByZXF1ZXN0aW5nIHJlc2V0XG4iLAorCQkJICAgICAgICAgICAgICAgICB3bGFuZGV2LT5uZXRkZXYtPm5hbWUpOworCQkJaWYgKCAhdGVzdF9hbmRfc2V0X2JpdChXT1JLX1RYX0hBTFQsICZody0+dXNiX2ZsYWdzKSApCisJCQkJc2NoZWR1bGVfd29yaygmaHctPnVzYl93b3JrKTsKKwkJCSsrKHdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X2Vycm9ycyk7CisJCQlicmVhazsKKwkJfQorCisJCWNhc2UgLUVQUk9UTzoKKwkJY2FzZSAtRVRJTUVET1VUOgorCQljYXNlIC1FSUxTRVE6CisJCXsKKwkJCWhmYTM4NHhfdCAqaHcgPSB3bGFuZGV2LT5wcml2OworCisJCQlpZiAoICF0ZXN0X2FuZF9zZXRfYml0KFRIUk9UVExFX1RYLCAmaHctPnVzYl9mbGFncykKKwkJCSAgICAgJiYgIXRpbWVyX3BlbmRpbmcoJmh3LT50aHJvdHRsZSkgKSB7CisJCQkJbW9kX3RpbWVyKCZody0+dGhyb3R0bGUsCisJCQkJICAgICAgICAgIGppZmZpZXMgKyBUSFJPVFRMRV9KSUZGSUVTKTsKKwkJCX0KKwkJCSsrKHdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X2Vycm9ycyk7CisJCQluZXRpZl9zdG9wX3F1ZXVlKHdsYW5kZXYtPm5ldGRldik7CisJCQlicmVhazsKKwkJfQorCisJCWNhc2UgLUVOT0VOVDoKKwkJY2FzZSAtRVNIVVRET1dOOgorCQkJLyogSWdub3JhYmxlIGVycm9ycyAqLworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCVdMQU5fTE9HX0lORk8oInVua25vd24gdXJiLT5zdGF0dXM9JWRcbiIsIHVyYi0+c3RhdHVzKTsKKwkJCSsrKHdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X2Vycm9ycyk7CisJCQlicmVhazsKKwkJfSAvKiBzd2l0Y2ggKi8KKwl9CisKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X2N0bHhvdXRfY2FsbGJhY2sKKyoKKyogQ2FsbGJhY2sgZm9yIGNvbnRyb2wgZGF0YSBvbiB0aGUgQlVMS09VVCBlbmRwb2ludC4KKyoKKyogQXJndW1lbnRzOgorKgl1cmIJCXB0ciB0byB0aGUgY29tcGxldGVkIHVyYgorKgorKiBSZXR1cm5zOgorKiBub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKiBpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmZGVmIFVSQl9PTkxZX0NBTExCQUNLCitzdGF0aWMgdm9pZCBoZmEzODR4X2N0bHhvdXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKQorI2Vsc2UKK3N0YXRpYyB2b2lkIGhmYTM4NHhfY3RseG91dF9jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorI2VuZGlmCit7CisJaGZhMzg0eF90CSpodyA9IHVyYi0+Y29udGV4dDsKKwlpbnQgICAgICAgICAgICAgZGVsZXRlX3Jlc3B0aW1lciA9IDA7CisJaW50ICAgICAgICAgICAgIHRpbWVyX29rID0gMTsKKwlpbnQJCXJ1bl9xdWV1ZSA9IDA7CisJaGZhMzg0eF91c2JjdGx4X3QJKmN0bHg7CisJdW5zaWduZWQgbG9uZwlmbGFnczsKKworCURCRkVOVEVSOworCisJV0xBTl9MT0dfREVCVUcoMywidXJiLT5zdGF0dXM9JWRcbiIsIHVyYi0+c3RhdHVzKTsKKyNpZmRlZiBERUJVR19VU0IKKwlkYnByaW50X3VyYih1cmIpOworI2VuZGlmCisJaWYgKCAodXJiLT5zdGF0dXMgPT0gLUVTSFVURE9XTikgfHwKKwkgICAgICh1cmItPnN0YXR1cyA9PSAtRU5PREVWKSB8fAorCSAgICAgKGh3ID09IE5VTEwpICkKKwkJZ290byBkb25lOworCityZXRyeToKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCS8qCisJICogT25seSBvbmUgQ1RMWCBhdCBhIHRpbWUgb24gdGhlICJhY3RpdmUiIGxpc3QsIGFuZAorCSAqIG5vbmUgYXQgYWxsIGlmIHdlIGFyZSB1bnBsdWdnZWQuIEhvd2V2ZXIsIHdlIGNhbgorCSAqIHJlbHkgb24gdGhlIGRpc2Nvbm5lY3QgZnVuY3Rpb24gdG8gY2xlYW4gZXZlcnl0aGluZworCSAqIHVwIGlmIHNvbWVvbmUgdW5wbHVnZ2VkIHRoZSBhZGFwdGVyLgorCSAqLworCWlmICggbGlzdF9lbXB0eSgmaHctPmN0bHhxLmFjdGl2ZSkgKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwkvKgorCSAqIEhhdmluZyBzb21ldGhpbmcgb24gdGhlICJhY3RpdmUiIHF1ZXVlIG1lYW5zCisJICogdGhhdCB3ZSBoYXZlIHRpbWVycyB0byB3b3JyeSBhYm91dCAuLi4KKwkgKi8KKwlpZiAoZGVsX3RpbWVyKCZody0+cmVxdGltZXIpID09IDApIHsKKwkJaWYgKGh3LT5yZXFfdGltZXJfZG9uZSA9PSAwKSB7CisJCQkvKgorCQkJICogVGhpcyB0aW1lciB3YXMgYWN0dWFsbHkgcnVubmluZyB3aGlsZSB3ZQorCQkJICogd2VyZSB0cnlpbmcgdG8gZGVsZXRlIGl0LiBMZXQgaXQgdGVybWluYXRlCisJCQkgKiBncmFjZWZ1bGx5IGluc3RlYWQuCisJCQkgKi8KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCQlnb3RvIHJldHJ5OworCQl9CisJfQorCWVsc2UgeworCQlody0+cmVxX3RpbWVyX2RvbmUgPSAxOworCX0KKworCWN0bHggPSBnZXRfYWN0aXZlX2N0bHgoaHcpOworCisJaWYgKCB1cmItPnN0YXR1cyA9PSAwICkgeworCQkvKiBSZXF1ZXN0IHBvcnRpb24gb2YgYSBDVExYIGlzIHN1Y2Nlc3NmdWwgKi8KKwkJc3dpdGNoICggY3RseC0+c3RhdGUgKSB7CisJCWNhc2UgQ1RMWF9SRVFfU1VCTUlUVEVEOgorCQkJLyogVGhpcyBPVVQtQUNLIHJlY2VpdmVkIGJlZm9yZSBJTiAqLworCQkJY3RseC0+c3RhdGUgPSBDVExYX1JFUV9DT01QTEVURTsKKwkJCWJyZWFrOworCisJCWNhc2UgQ1RMWF9SRVNQX0NPTVBMRVRFOgorCQkJLyogSU4gYWxyZWFkeSByZWNlaXZlZCBiZWZvcmUgdGhpcyBPVVQtQUNLLAorCQkJICogc28gdGhpcyBjb21tYW5kIG11c3Qgbm93IGJlIGNvbXBsZXRlLgorCQkJICovCisJCQljdGx4LT5zdGF0ZSA9IENUTFhfQ09NUExFVEU7CisJCQl1bmxvY2tlZF91c2JjdGx4X2NvbXBsZXRlKGh3LCBjdGx4KTsKKwkJCXJ1bl9xdWV1ZSA9IDE7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJLyogVGhpcyBpcyBOT1QgYSB2YWxpZCBDVExYICJzdWNjZXNzIiBzdGF0ZSEgKi8KKwkJCVdMQU5fTE9HX0VSUk9SKAorCQkJICAgICJJbGxlZ2FsIENUTFhbJWRdIHN1Y2Nlc3Mgc3RhdGUoJXMsICVkKSBpbiBPVVQgVVJCXG4iLAorCQkJICAgIGhmYTM4NHgyaG9zdF8xNihjdGx4LT5vdXRidWYudHlwZSksCisJCQkgICAgY3RseHN0cihjdGx4LT5zdGF0ZSksIHVyYi0+c3RhdHVzKTsKKwkJCWJyZWFrOworCQl9IC8qIHN3aXRjaCAqLworCX0gZWxzZSB7CisJCS8qIElmIHRoZSBwaXBlIGhhcyBzdGFsbGVkIHRoZW4gd2UgbmVlZCB0byByZXNldCBpdCAqLworCQlpZiAoICh1cmItPnN0YXR1cyA9PSAtRVBJUEUpICYmCisJCSAgICAgICF0ZXN0X2FuZF9zZXRfYml0KFdPUktfVFhfSEFMVCwgJmh3LT51c2JfZmxhZ3MpICkgeworCQkJV0xBTl9MT0dfV0FSTklORygiJXMgdHggcGlwZSBzdGFsbGVkOiByZXF1ZXN0aW5nIHJlc2V0XG4iLAorCQkJICAgICAgICAgICAgICAgICBody0+d2xhbmRldi0+bmV0ZGV2LT5uYW1lKTsKKwkJCXNjaGVkdWxlX3dvcmsoJmh3LT51c2Jfd29yayk7CisJCX0KKworCQkvKiBJZiBzb21lb25lIGNhbmNlbHMgdGhlIE9VVCBVUkIgdGhlbiBpdHMgc3RhdHVzCisJCSAqIHNob3VsZCBiZSBlaXRoZXIgLUVDT05OUkVTRVQgb3IgLUVOT0VOVC4KKwkJICovCisJCWN0bHgtPnN0YXRlID0gQ1RMWF9SRVFfRkFJTEVEOworCQl1bmxvY2tlZF91c2JjdGx4X2NvbXBsZXRlKGh3LCBjdGx4KTsKKwkJZGVsZXRlX3Jlc3B0aW1lciA9IDE7CisJCXJ1bl9xdWV1ZSA9IDE7CisJfQorCisgZGVscmVzcDoKKwlpZiAoZGVsZXRlX3Jlc3B0aW1lcikgeworCQlpZiAoKHRpbWVyX29rID0gZGVsX3RpbWVyKCZody0+cmVzcHRpbWVyKSkgIT0gMCkgeworCQkJaHctPnJlc3BfdGltZXJfZG9uZSA9IDE7CisJCX0KKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJaWYgKCAhdGltZXJfb2sgJiYgKGh3LT5yZXNwX3RpbWVyX2RvbmUgPT0gMCkgKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCQlnb3RvIGRlbHJlc3A7CisJfQorCisJaWYgKHJ1bl9xdWV1ZSkKKwkJaGZhMzg0eF91c2JjdGx4cV9ydW4oaHcpOworCisgZG9uZToKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBoZmEzODR4X3VzYmN0bHhfcmVxdGltZXJmbgorKgorKiBUaW1lciByZXNwb25zZSBmdW5jdGlvbiBmb3IgQ1RMWCByZXF1ZXN0IHRpbWVvdXRzLiAgSWYgdGhpcworKiBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IG1lYW5zIHRoYXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgT1VUCisqIFVSQiBjb250YWluaW5nIGEgUHJpc20yLnggWFhYX1JlcXVlc3Qgd2FzIG5ldmVyIGNhbGxlZC4KKyoKKyogQXJndW1lbnRzOgorKglkYXRhCQlhIHB0ciB0byB0aGUgaGZhMzg0eF90CisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4X3JlcXRpbWVyZm4odW5zaWduZWQgbG9uZyBkYXRhKQoreworCWhmYTM4NHhfdAkqaHcgPSAoaGZhMzg0eF90KilkYXRhOworCXVuc2lnbmVkIGxvbmcgICBmbGFnczsKKwlEQkZFTlRFUjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJaHctPnJlcV90aW1lcl9kb25lID0gMTsKKworCS8qIFJlbW92aW5nIHRoZSBoYXJkd2FyZSBhdXRvbWF0aWNhbGx5IGVtcHRpZXMKKwkgKiB0aGUgYWN0aXZlIGxpc3QgLi4uCisJICovCisJaWYgKCAhbGlzdF9lbXB0eSgmaHctPmN0bHhxLmFjdGl2ZSkgKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBlbnN1cmUgdGhhdCBvdXIgVVJCIGlzIHJlbW92ZWQgZnJvbQorCQkgKiB0aGUgc3lzdGVtLCBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBleHBpcmVkLgorCQkgKi8KKwkJaHctPmN0bHhfdXJiLnRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9BU1lOQ19VTkxJTks7CisJCWlmICh1c2JfdW5saW5rX3VyYigmaHctPmN0bHhfdXJiKSA9PSAtRUlOUFJPR1JFU1MpCisJCXsKKwkJCWhmYTM4NHhfdXNiY3RseF90ICpjdGx4ID0gZ2V0X2FjdGl2ZV9jdGx4KGh3KTsKKworCQkJY3RseC0+c3RhdGUgPSBDVExYX1JFUV9GQUlMRUQ7CisKKwkJCS8qIFRoaXMgVVJCIHdhcyBhY3RpdmUsIGJ1dCBoYXMgbm93IGJlZW4KKwkJCSAqIGNhbmNlbGxlZC4gSXQgd2lsbCBub3cgaGF2ZSBhIHN0YXR1cyBvZgorCQkJICogLUVDT05OUkVTRVQgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgorCQkJICoKKwkJCSAqIFdlIGFyZSBjYW5jZWxsaW5nIHRoaXMgQ1RMWCwgc28gd2UncmUKKwkJCSAqIG5vdCBnb2luZyB0byBuZWVkIHRvIHdhaXQgZm9yIGEgcmVzcG9uc2UuCisJCQkgKiBUaGUgVVJCJ3MgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBjaGVjaworCQkJICogdGhhdCB0aGlzIHRpbWVyIGlzIHRydWx5IGRlYWQuCisJCQkgKi8KKwkJCWlmIChkZWxfdGltZXIoJmh3LT5yZXNwdGltZXIpICE9IDApCisJCQkJaHctPnJlc3BfdGltZXJfZG9uZSA9IDE7CisJCX0KKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2JjdGx4X3Jlc3B0aW1lcmZuCisqCisqIFRpbWVyIHJlc3BvbnNlIGZ1bmN0aW9uIGZvciBDVExYIHJlc3BvbnNlIHRpbWVvdXRzLiAgSWYgdGhpcworKiBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IG1lYW5zIHRoYXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgSU4KKyogVVJCIGNvbnRhaW5pbmcgYSBQcmlzbTIueCBYWFhfUmVzcG9uc2Ugd2FzIG5ldmVyIGNhbGxlZC4KKyoKKyogQXJndW1lbnRzOgorKglkYXRhCQlhIHB0ciB0byB0aGUgaGZhMzg0eF90CisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JjdGx4X3Jlc3B0aW1lcmZuKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwloZmEzODR4X3QgKmh3ID0gKGhmYTM4NHhfdCopZGF0YTsKKwl1bnNpZ25lZCBsb25nICAgZmxhZ3M7CisKKwlEQkZFTlRFUjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJaHctPnJlc3BfdGltZXJfZG9uZSA9IDE7CisKKwkvKiBUaGUgYWN0aXZlIGxpc3Qgd2lsbCBiZSBlbXB0eSBpZiB0aGUKKwkgKiBhZGFwdGVyIGhhcyBiZWVuIHVucGx1Z2dlZCAuLi4KKwkgKi8KKwlpZiAoICFsaXN0X2VtcHR5KCZody0+Y3RseHEuYWN0aXZlKSApCisJeworCQloZmEzODR4X3VzYmN0bHhfdCAqY3RseCA9IGdldF9hY3RpdmVfY3RseChodyk7CisKKwkJaWYgKCB1bmxvY2tlZF91c2JjdGx4X2NhbmNlbF9hc3luYyhodywgY3RseCkgPT0gMCApCisJCXsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCQloZmEzODR4X3VzYmN0bHhxX3J1bihodyk7CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisgZG9uZToKKwlEQkZFWElUOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2JfdGhyb3R0bGVmbgorKgorKgorKiBBcmd1bWVudHM6CisqCWRhdGEJcHRyIHRvIGh3CisqCisqIFJldHVybnM6CisqCU5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCUludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAoraGZhMzg0eF91c2JfdGhyb3R0bGVmbih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJaGZhMzg0eF90ICpodyA9IChoZmEzODR4X3QqKWRhdGE7CisJdW5zaWduZWQgbG9uZyAgIGZsYWdzOworCisJREJGRU5URVI7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCS8qCisJICogV2UgbmVlZCB0byBjaGVjayBCT1RIIHRoZSBSWCBhbmQgdGhlIFRYIHRocm90dGxlIGNvbnRyb2xzLAorCSAqIHNvIHdlIHVzZSB0aGUgYml0d2lzZSBPUiBpbnN0ZWFkIG9mIHRoZSBsb2dpY2FsIE9SLgorCSAqLworCVdMQU5fTE9HX0RFQlVHKDMsICJmbGFncz0weCVseFxuIiwgaHctPnVzYl9mbGFncyk7CisJaWYgKCAhaHctPndsYW5kZXYtPmh3cmVtb3ZlZCAmJgorCSAgICAgKAorCSAgICAgICAodGVzdF9hbmRfY2xlYXJfYml0KFRIUk9UVExFX1JYLCAmaHctPnVzYl9mbGFncykgJiYKKwkgICAgICAgIXRlc3RfYW5kX3NldF9iaXQoV09SS19SWF9SRVNVTUUsICZody0+dXNiX2ZsYWdzKSkKKwkgICAgICAgfAorCSAgICAgICAodGVzdF9hbmRfY2xlYXJfYml0KFRIUk9UVExFX1RYLCAmaHctPnVzYl9mbGFncykgJiYKKwkgICAgICAgICF0ZXN0X2FuZF9zZXRfYml0KFdPUktfVFhfUkVTVU1FLCAmaHctPnVzYl9mbGFncykpCisJICAgICApICkKKwl7CisJCXNjaGVkdWxlX3dvcmsoJmh3LT51c2Jfd29yayk7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGhmYTM4NHhfdXNiY3RseF9zdWJtaXQKKyoKKyogQ2FsbGVkIGZyb20gdGhlIGRveHh4IGZ1bmN0aW9ucyB0byBzdWJtaXQgYSBDVExYIHRvIHRoZSBxdWV1ZQorKgorKiBBcmd1bWVudHM6CisqCWh3CQlwdHIgdG8gdGhlIGh3IHN0cnVjdAorKgljdGx4CQljdGx4IHN0cnVjdHVyZSB0byBlbnF1ZXVlCisqCisqIFJldHVybnM6CisqCS1FTk9ERVYgaWYgdGhlIGFkYXB0ZXIgaXMgdW5wbHVnZ2VkCisqCTAKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3Mgb3IgaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK2hmYTM4NHhfdXNiY3RseF9zdWJtaXQoCisJaGZhMzg0eF90CQkqaHcsCisJaGZhMzg0eF91c2JjdGx4X3QJKmN0bHgpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0OworCisJREJGRU5URVI7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKworCWlmIChody0+d2xhbmRldi0+aHdyZW1vdmVkKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5jdGx4cS5sb2NrLCBmbGFncyk7CisJCXJldCA9IC1FTk9ERVY7CisJfSBlbHNlIHsKKwkJY3RseC0+c3RhdGUgPSBDVExYX1BFTkRJTkc7CisJCWxpc3RfYWRkX3RhaWwoJmN0bHgtPmxpc3QsICZody0+Y3RseHEucGVuZGluZyk7CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmN0bHhxLmxvY2ssIGZsYWdzKTsKKwkJaGZhMzg0eF91c2JjdGx4cV9ydW4oaHcpOworCQlyZXQgPSAwOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIHJldDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF91c2JvdXRfdHgKKyoKKyogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGZpbmlzaGVkIGEgc2VuZCBvZiBhIGZyYW1lLiAgTWFyayB0aGUgVVJCCisqIGFzIGF2YWlsYWJsZSBhbmQgY2FsbCBldl9hbGxvYyB0byBub3RpZnkgaGlnaGVyIGxheWVycyB3ZSdyZQorKiByZWFkeSBmb3IgbW9yZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZQorKgl1c2JvdXQJCXB0ciB0byB0aGUgdXNiIHRyYW5zZmVyIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgaGZhMzg0eF91c2JvdXRfdHgod2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X3VzYm91dF90ICp1c2JvdXQpCit7CisJREJGRU5URVI7CisKKwlwcmlzbTJzdGFfZXZfYWxsb2Mod2xhbmRldik7CisKKwlEQkZFWElUOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogaGZhMzg0eF9pc2dvb2RfcGRyY29yZQorKgorKiBRdWljayBjaGVjayBvZiBQRFIgY29kZXMuCisqCisqIEFyZ3VtZW50czoKKyoJcGRyY29kZQkJUERSIGNvZGUgbnVtYmVyIChob3N0IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKgl6ZXJvCQlub3QgZ29vZC4KKyoJb25lCQlpcyBnb29kLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAoraGZhMzg0eF9pc2dvb2RfcGRyY29kZShVSU5UMTYgcGRyY29kZSkKK3sKKwlzd2l0Y2gocGRyY29kZSkgeworCWNhc2UgSEZBMzg0eF9QRFJfRU5EX09GX1BEQToKKwljYXNlIEhGQTM4NHhfUERSX1BDQl9QQVJUTlVNOgorCWNhc2UgSEZBMzg0eF9QRFJfUERBVkVSOgorCWNhc2UgSEZBMzg0eF9QRFJfTklDX1NFUklBTDoKKwljYXNlIEhGQTM4NHhfUERSX01LS19NRUFTVVJFTUVOVFM6CisJY2FzZSBIRkEzODR4X1BEUl9OSUNfUkFNU0laRToKKwljYXNlIEhGQTM4NHhfUERSX01GSVNVUFJBTkdFOgorCWNhc2UgSEZBMzg0eF9QRFJfQ0ZJU1VQUkFOR0U6CisJY2FzZSBIRkEzODR4X1BEUl9OSUNJRDoKKwljYXNlIEhGQTM4NHhfUERSX01BQ19BRERSRVNTOgorCWNhc2UgSEZBMzg0eF9QRFJfUkVHRE9NQUlOOgorCWNhc2UgSEZBMzg0eF9QRFJfQUxMT1dFRF9DSEFOTkVMOgorCWNhc2UgSEZBMzg0eF9QRFJfREVGQVVMVF9DSEFOTkVMOgorCWNhc2UgSEZBMzg0eF9QRFJfVEVNUFRZUEU6CisJY2FzZSBIRkEzODR4X1BEUl9JRlJfU0VUVElORzoKKwljYXNlIEhGQTM4NHhfUERSX1JGUl9TRVRUSU5HOgorCWNhc2UgSEZBMzg0eF9QRFJfSEZBMzg2MV9CQVNFTElORToKKwljYXNlIEhGQTM4NHhfUERSX0hGQTM4NjFfU0hBRE9XOgorCWNhc2UgSEZBMzg0eF9QRFJfSEZBMzg2MV9JRlJGOgorCWNhc2UgSEZBMzg0eF9QRFJfSEZBMzg2MV9DSENBTFNQOgorCWNhc2UgSEZBMzg0eF9QRFJfSEZBMzg2MV9DSENBTEk6CisJY2FzZSBIRkEzODR4X1BEUl8zODQyX05JQ19DT05GSUc6CisJY2FzZSBIRkEzODR4X1BEUl9VU0JfSUQ6CisJY2FzZSBIRkEzODR4X1BEUl9QQ0lfSUQ6CisJY2FzZSBIRkEzODR4X1BEUl9QQ0lfSUZDT05GOgorCWNhc2UgSEZBMzg0eF9QRFJfUENJX1BNQ09ORjoKKwljYXNlIEhGQTM4NHhfUERSX1JGRU5SR1k6CisJY2FzZSBIRkEzODR4X1BEUl9IRkEzODYxX01BTkZfVEVTVFNQOgorCWNhc2UgSEZBMzg0eF9QRFJfSEZBMzg2MV9NQU5GX1RFU1RJOgorCQkvKiBjb2RlIGlzIE9LICovCisJCXJldHVybiAxOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZiAoIHBkcmNvZGUgPCAweDEwMDAgKSB7CisJCQkvKiBjb2RlIGlzIE9LLCBidXQgd2UgZG9uJ3Qga25vdyBleGFjdGx5IHdoYXQgaXQgaXMgKi8KKwkJCVdMQU5fTE9HX0RFQlVHKDMsCisJCQkJIkVuY291bnRlcmVkIHVua25vd24gUERSIz0weCUwNHgsICIKKwkJCQkiYXNzdW1pbmcgaXQncyBvay5cbiIsCisJCQkJcGRyY29kZSk7CisJCQlyZXR1cm4gMTsKKwkJfSBlbHNlIHsKKwkJCS8qIGJhZCBjb2RlICovCisJCQlXTEFOX0xPR19ERUJVRygzLAorCQkJCSJFbmNvdW50ZXJlZCB1bmtub3duIFBEUiM9MHglMDR4LCAiCisJCQkJIig+PTB4MTAwMCksIGFzc3VtaW5nIGl0J3MgYmFkLlxuIiwKKwkJCQlwZHJjb2RlKTsKKwkJCXJldHVybiAwOworCQl9CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMDsgLyogYXZvaWQgY29tcGlsZXIgd2FybmluZ3MgKi8KK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExY29udi5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExY29udi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MTIxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFjb252LmMKQEAgLTAsMCArMSw2ODMgQEAKKy8qIHNyYy9wODAyMTEvcDgwMjExY29udi5jCisqCisqIEV0aGVyLzgwMi4xMSBjb252ZXJzaW9ucyBhbmQgcGFja2V0IGJ1ZmZlciByb3V0aW5lcworKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgZnVuY3Rpb25zIHRoYXQgcGVyZm9ybSBFdGhlcm5ldCB0by9mcm9tCisqIDgwMi4xMSBmcmFtZSBjb252ZXJzaW9ucy4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisKKyNkZWZpbmUgX19OT19WRVJTSU9OX18JCS8qIHByZXZlbnQgdGhlIHN0YXRpYyBkZWZpbml0aW9uICovCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisKKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFByb2plY3QgSW5jbHVkZXMgKi8KKworI2luY2x1ZGUgInA4MDIxMXR5cGVzLmgiCisjaW5jbHVkZSAicDgwMjExaGRyLmgiCisjaW5jbHVkZSAicDgwMjExY29udi5oIgorI2luY2x1ZGUgInA4MDIxMW1nbXQuaCIKKyNpbmNsdWRlICJwODAyMTFtc2cuaCIKKyNpbmNsdWRlICJwODAyMTFuZXRkZXYuaCIKKyNpbmNsdWRlICJwODAyMTFpb2N0bC5oIgorI2luY2x1ZGUgInA4MDIxMXJlcS5oIgorCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBDb25zdGFudHMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIE1hY3JvcyAqLworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBUeXBlcyAqLworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBTdGF0aWMgRGVmaW5pdGlvbnMgKi8KKworc3RhdGljIFVJTlQ4CW91aV9yZmMxMDQyW10gPSB7MHgwMCwgMHgwMCwgMHgwMH07CitzdGF0aWMgVUlOVDgJb3VpXzgwMjFoW10gPSB7MHgwMCwgMHgwMCwgMHhmOH07CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVmaW5pdGlvbnMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMXBiX2V0aGVyX3RvXzgwMjExCisqCisqIFVzZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBldGhlciBmcmFtZSBhbmQgdGhlIGV0aGVyY29udiBzZXR0aW5nCisqIHRvIGJ1aWxkIHRoZSBlbGVtZW50cyBvZiB0aGUgODAyLjExIGZyYW1lLgorKgorKiBXZSBkb24ndCBhY3R1YWxseSBzZXQKKyogdXAgdGhlIGZyYW1lIGhlYWRlciBoZXJlLiAgVGhhdCdzIHRoZSBNQUMncyBqb2IuICBXZSdyZSBvbmx5IGhhbmRsaW5nCisqIGNvbnZlcnNpb24gb2YgRElYSUkgb3IgODAyLjMrTExDIGZyYW1lcyB0byBzb21ldGhpbmcgdGhhdCB3b3JrcworKiB3aXRoIDgwMi4xMS4KKyoKKyogTm90ZSAtLSA4MDIuMTEgaGVhZGVyIGlzIE5PVCBwYXJ0IG9mIHRoZSBza2IuICBMaWtld2lzZSwgdGhlIDgwMi4xMQorKiAgICAgICAgIEZDUyBpcyBhbHNvIG5vdCBwcmVzZW50IGFuZCB3aWxsIG5lZWQgdG8gYmUgYWRkZWQgZWxzZXdoZXJlLgorKgorKiBBcmd1bWVudHM6CisqCWV0aGNvbnYJCUNvbnZlcnNpb24gdHlwZSB0byBwZXJmb3JtCisqCXNrYgkJc2tidWZmIGNvbnRhaW5pbmcgdGhlIGV0aGVyIGZyYW1lCisqICAgICAgIHA4MDIxMV9oZHIgICAgICA4MDIuMTEgaGVhZGVyCisqCisqIFJldHVybnM6CisqCTAgb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlCisqCisqIENhbGwgY29udGV4dDoKKyoJTWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgb3Igbm9uLWludGVycnVwdCBjb250ZXh0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBza2JfZXRoZXJfdG9fcDgwMjExKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQzMiBldGhjb252LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBwODAyMTFfaGRyX3QgKnA4MDIxMV9oZHIsIHA4MDIxMV9tZXRhd2VwX3QgKnA4MDIxMV93ZXApCit7CisKKwlVSU5UMTYgICAgICAgICAgZmM7CisJVUlOVDE2ICAgICAgICAgIHByb3RvOworCXdsYW5fZXRoaGRyX3QgICBlX2hkcjsKKwl3bGFuX2xsY190ICAgICAgKmVfbGxjOworCXdsYW5fc25hcF90ICAgICAqZV9zbmFwOworCWludCBmb287CisKKwlEQkZFTlRFUjsKKwltZW1jcHkoJmVfaGRyLCBza2ItPmRhdGEsIHNpemVvZihlX2hkcikpOworCisJaWYgKHNrYi0+bGVuIDw9IDApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwgInplcm8tbGVuZ3RoIHNrYiFcbiIpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoIGV0aGNvbnYgPT0gV0xBTl9FVEhDT05WX0VOQ0FQICkgeyAvKiBzaW1wbGVzdCBjYXNlICovCisJICAgICAgICBXTEFOX0xPR19ERUJVRygzLCAiRU5DQVAgbGVuOiAlZFxuIiwgc2tiLT5sZW4pOworCQkvKiBoZXJlLCB3ZSBkb24ndCBjYXJlIHdoYXQga2luZCBvZiBldGhlciBmcm0uIEp1c3Qgc3RpY2sgaXQgKi8KKwkJLyogIGluIHRoZSA4MDIxMSBwYXlsb2FkICovCisJCS8qIHdoaWNoIGlzIHRvIHNheSwgbGVhdmUgdGhlIHNrYiBhbG9uZS4gKi8KKwl9IGVsc2UgeworCQkvKiBzdGVwIDE6IGNsYXNzaWZ5IGV0aGVyIGZyYW1lLCBESVggb3IgODAyLjM/ICovCisJCXByb3RvID0gbnRvaHMoZV9oZHIudHlwZSk7CisJCWlmICggcHJvdG8gPD0gMTUwMCApIHsKKwkJICAgICAgICBXTEFOX0xPR19ERUJVRygzLCAiODAyLjMgbGVuOiAlZFxuIiwgc2tiLT5sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgLyogY29kZXMgPD0gMTUwMCByZXNlcnZlZCBmb3IgODAyLjMgbGVuZ3RocyAqLworCQkJLyogaXQncyA4MDIuMywgcGFzcyBldGhlciBwYXlsb2FkIHVuY2hhbmdlZCwgICovCisKKwkJCS8qIHRyaW0gb2ZmIGV0aGVybmV0IGhlYWRlciAqLworCQkJc2tiX3B1bGwoc2tiLCBXTEFOX0VUSEhEUl9MRU4pOworCisJCQkvKiAgIGxlYXZlIG9mZiBhbnkgUEFEIG9jdGV0cy4gICovCisJCQlza2JfdHJpbShza2IsIHByb3RvKTsKKwkJfSBlbHNlIHsKKwkJICAgICAgICBXTEFOX0xPR19ERUJVRygzLCAiRElYSUkgbGVuOiAlZFxuIiwgc2tiLT5sZW4pOworCQkJLyogaXQncyBESVhJSSwgdGltZSBmb3Igc29tZSBjb252ZXJzaW9uICovCisKKwkJCS8qIHRyaW0gb2ZmIGV0aGVybmV0IGhlYWRlciAqLworCQkJc2tiX3B1bGwoc2tiLCBXTEFOX0VUSEhEUl9MRU4pOworCisJCQkvKiB0YWNrIG9uIFNOQVAgKi8KKwkJCWVfc25hcCA9ICh3bGFuX3NuYXBfdCAqKSBza2JfcHVzaChza2IsIHNpemVvZih3bGFuX3NuYXBfdCkpOworCQkJZV9zbmFwLT50eXBlID0gaHRvbnMocHJvdG8pOworCQkJaWYgKCBldGhjb252ID09IFdMQU5fRVRIQ09OVl84MDIxaCAmJiBwODAyMTFfc3R0X2ZpbmRwcm90byhwcm90bykgKSB7CisJCQkJbWVtY3B5KCBlX3NuYXAtPm91aSwgb3VpXzgwMjFoLCBXTEFOX0lFRUVfT1VJX0xFTik7CisJCQl9IGVsc2UgeworCQkJCW1lbWNweSggZV9zbmFwLT5vdWksIG91aV9yZmMxMDQyLCBXTEFOX0lFRUVfT1VJX0xFTik7CisJCQl9CisKKwkJCS8qIHRhY2sgb24gbGxjICovCisJCQllX2xsYyA9ICh3bGFuX2xsY190ICopIHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHdsYW5fbGxjX3QpKTsKKwkJCWVfbGxjLT5kc2FwID0gMHhBQTsJLyogU05BUCwgc2VlIElFRUUgODAyICovCisJCQllX2xsYy0+c3NhcCA9IDB4QUE7CisJCQllX2xsYy0+Y3RsID0gMHgwMzsKKworCQl9CisJfQorCisJLyogU2V0IHVwIHRoZSA4MDIuMTEgaGVhZGVyICovCisJLyogSXQncyBhIGRhdGEgZnJhbWUgKi8KKwlmYyA9IGhvc3QyaWVlZTE2KCBXTEFOX1NFVF9GQ19GVFlQRShXTEFOX0ZUWVBFX0RBVEEpIHwKKwkJCSAgV0xBTl9TRVRfRkNfRlNUWVBFKFdMQU5fRlNUWVBFX0RBVEFPTkxZKSk7CisKKwlzd2l0Y2ggKCB3bGFuZGV2LT5tYWNtb2RlICkgeworCWNhc2UgV0xBTl9NQUNNT0RFX0lCU1NfU1RBOgorCQltZW1jcHkocDgwMjExX2hkci0+YTMuYTEsICZlX2hkci5kYWRkciwgV0xBTl9BRERSX0xFTik7CisJCW1lbWNweShwODAyMTFfaGRyLT5hMy5hMiwgd2xhbmRldi0+bmV0ZGV2LT5kZXZfYWRkciwgV0xBTl9BRERSX0xFTik7CisJCW1lbWNweShwODAyMTFfaGRyLT5hMy5hMywgd2xhbmRldi0+YnNzaWQsIFdMQU5fQUREUl9MRU4pOworCQlicmVhazsKKwljYXNlIFdMQU5fTUFDTU9ERV9FU1NfU1RBOgorCQlmYyB8PSBob3N0MmllZWUxNihXTEFOX1NFVF9GQ19UT0RTKDEpKTsKKwkJbWVtY3B5KHA4MDIxMV9oZHItPmEzLmExLCB3bGFuZGV2LT5ic3NpZCwgV0xBTl9BRERSX0xFTik7CisJCW1lbWNweShwODAyMTFfaGRyLT5hMy5hMiwgd2xhbmRldi0+bmV0ZGV2LT5kZXZfYWRkciwgV0xBTl9BRERSX0xFTik7CisJCW1lbWNweShwODAyMTFfaGRyLT5hMy5hMywgJmVfaGRyLmRhZGRyLCBXTEFOX0FERFJfTEVOKTsKKwkJYnJlYWs7CisJY2FzZSBXTEFOX01BQ01PREVfRVNTX0FQOgorCQlmYyB8PSBob3N0MmllZWUxNihXTEFOX1NFVF9GQ19GUk9NRFMoMSkpOworCQltZW1jcHkocDgwMjExX2hkci0+YTMuYTEsICZlX2hkci5kYWRkciwgV0xBTl9BRERSX0xFTik7CisJCW1lbWNweShwODAyMTFfaGRyLT5hMy5hMiwgd2xhbmRldi0+YnNzaWQsIFdMQU5fQUREUl9MRU4pOworCQltZW1jcHkocDgwMjExX2hkci0+YTMuYTMsICZlX2hkci5zYWRkciwgV0xBTl9BRERSX0xFTik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCVdMQU5fTE9HX0VSUk9SKCJFcnJvcjogQ29udmVydGluZyBldGggdG8gd2xhbiBpbiB1bmtub3duIG1vZGUuXG4iKTsKKwkJcmV0dXJuIDE7CisJCWJyZWFrOworCX0KKworCXA4MDIxMV93ZXAtPmRhdGEgPSBOVUxMOworCisJaWYgKCh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9QUklWQUNZSU5WT0tFRCkgJiYgKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0VOQ1JZUFQpKSB7CisJCS8vIFhYWFggbmVlZCB0byBwaWNrIGtleW51bSBvdGhlciB0aGFuIGRlZmF1bHQ/CisKKyNpZiAxCisJCXA4MDIxMV93ZXAtPmRhdGEgPSBrbWFsbG9jKHNrYi0+bGVuLCBHRlBfQVRPTUlDKTsKKyNlbHNlCisJCXA4MDIxMV93ZXAtPmRhdGEgPSBza2ItPmRhdGE7CisjZW5kaWYKKworCQlpZiAoKGZvbyA9IHdlcF9lbmNyeXB0KHdsYW5kZXYsIHNrYi0+ZGF0YSwgcDgwMjExX3dlcC0+ZGF0YSwKKwkJCQkgICAgICAgc2tiLT5sZW4sCisJCQkJKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0RFRkFVTFRLRVlfTUFTSyksCisJCQkJcDgwMjExX3dlcC0+aXYsIHA4MDIxMV93ZXAtPmljdikpKSB7CisJCQlXTEFOX0xPR19XQVJOSU5HKCJIb3N0IGVuLVdFUCBmYWlsZWQsIGRyb3BwaW5nIGZyYW1lICglZCkuXG4iLCBmb28pOworCQkJcmV0dXJuIDI7CisJCX0KKwkJZmMgfD0gaG9zdDJpZWVlMTYoV0xBTl9TRVRfRkNfSVNXRVAoMSkpOworCX0KKworCisJLy8Jc2tiLT5uaC5yYXcgPSBza2ItPmRhdGE7CisKKwlwODAyMTFfaGRyLT5hMy5mYyA9IGZjOworCXA4MDIxMV9oZHItPmEzLmR1ciA9IDA7CisJcDgwMjExX2hkci0+YTMuc2VxID0gMDsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qIGprcmllZ2w6IGZyb20gb3Jpbm9jbywgbW9kaWZpZWQgKi8KK3N0YXRpYyB2b2lkIG9yaW5vY29fc3B5X2dhdGhlcih3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGNoYXIgKm1hYywKKwkJCSAgICAgICBwODAyMTFfcnhtZXRhX3QgKnJ4bWV0YSkKK3sKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgLyogR2F0aGVyIHdpcmVsZXNzIHNweSBzdGF0aXN0aWNzOiBmb3IgZWFjaCBwYWNrZXQsIGNvbXBhcmUgdGhlCisgICAgICAgICAqIHNvdXJjZSBhZGRyZXNzIHdpdGggb3V0IGxpc3QsIGFuZCBpZiBtYXRjaCwgZ2V0IHRoZSBzdGF0cy4uLiAqLworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB3bGFuZGV2LT5zcHlfbnVtYmVyOyBpKyspIHsKKworICAgICAgICAgICAgICAgIGlmICghbWVtY21wKHdsYW5kZXYtPnNweV9hZGRyZXNzW2ldLCBtYWMsIEVUSF9BTEVOKSkgeworCQkJbWVtY3B5KHdsYW5kZXYtPnNweV9hZGRyZXNzW2ldLCBtYWMsIEVUSF9BTEVOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdsYW5kZXYtPnNweV9zdGF0W2ldLmxldmVsID0gcnhtZXRhLT5zaWduYWw7CisgICAgICAgICAgICAgICAgICAgICAgICB3bGFuZGV2LT5zcHlfc3RhdFtpXS5ub2lzZSA9IHJ4bWV0YS0+bm9pc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB3bGFuZGV2LT5zcHlfc3RhdFtpXS5xdWFsID0gKHJ4bWV0YS0+c2lnbmFsID4gcnhtZXRhLT5ub2lzZSkgPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyeG1ldGEtPnNpZ25hbCAtIHJ4bWV0YS0+bm9pc2UpIDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdsYW5kZXYtPnNweV9zdGF0W2ldLnVwZGF0ZWQgPSAweDc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFwYl84MDIxMV90b19ldGhlcgorKgorKiBVc2VzIHRoZSBjb250ZW50cyBvZiBhIHJlY2VpdmVkIDgwMi4xMSBmcmFtZSBhbmQgdGhlIGV0aGVyY29udgorKiBzZXR0aW5nIHRvIGJ1aWxkIGFuIGV0aGVyIGZyYW1lLgorKgorKiBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBzcmMgYW5kIGRlc3QgYWRkcmVzcyBmcm9tIHRoZSA4MDIuMTEKKyogZnJhbWUgdG8gdXNlIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGV0aCBmcmFtZS4KKyoKKyogQXJndW1lbnRzOgorKglldGhjb252CQlDb252ZXJzaW9uIHR5cGUgdG8gcGVyZm9ybQorKglza2IJCVBhY2tldCBidWZmZXIgY29udGFpbmluZyB0aGUgODAyLjExIGZyYW1lCisqCisqIFJldHVybnM6CisqCTAgb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlCisqCisqIENhbGwgY29udGV4dDoKKyoJTWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgb3Igbm9uLWludGVycnVwdCBjb250ZXh0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBza2JfcDgwMjExX3RvX2V0aGVyKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQzMiBldGhjb252LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCW5ldGRldmljZV90ICAgICAqbmV0ZGV2ID0gd2xhbmRldi0+bmV0ZGV2OworCVVJTlQxNiAgICAgICAgICBmYzsKKwlVSU5UICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGg7CisJVUlOVCAgICAgICAgICAgIHBheWxvYWRfb2Zmc2V0OworCVVJTlQ4CQlkYWRkcltXTEFOX0VUSEFERFJfTEVOXTsKKwlVSU5UOAkJc2FkZHJbV0xBTl9FVEhBRERSX0xFTl07CisJcDgwMjExX2hkcl90ICAgICp3X2hkcjsKKwl3bGFuX2V0aGhkcl90ICAgKmVfaGRyOworCXdsYW5fbGxjX3QgICAgICAqZV9sbGM7CisJd2xhbl9zbmFwX3QgICAgICplX3NuYXA7CisKKwlpbnQgZm9vOworCisJREJGRU5URVI7CisKKwlwYXlsb2FkX2xlbmd0aCA9IHNrYi0+bGVuIC0gV0xBTl9IRFJfQTNfTEVOIC0gV0xBTl9DUkNfTEVOOworCXBheWxvYWRfb2Zmc2V0ID0gV0xBTl9IRFJfQTNfTEVOOworCisJd19oZHIgPSAocDgwMjExX2hkcl90ICopIHNrYi0+ZGF0YTsKKworICAgICAgICAvKiBzZXR1cCBzb21lIHZhcnMgZm9yIGNvbnZlbmllbmNlICovCisJZmMgPSBpZWVlMmhvc3QxNih3X2hkci0+YTMuZmMpOworCWlmICggKFdMQU5fR0VUX0ZDX1RPRFMoZmMpID09IDApICYmIChXTEFOX0dFVF9GQ19GUk9NRFMoZmMpID09IDApICkgeworCQltZW1jcHkoZGFkZHIsIHdfaGRyLT5hMy5hMSwgV0xBTl9FVEhBRERSX0xFTik7CisJCW1lbWNweShzYWRkciwgd19oZHItPmEzLmEyLCBXTEFOX0VUSEFERFJfTEVOKTsKKwl9IGVsc2UgaWYoIChXTEFOX0dFVF9GQ19UT0RTKGZjKSA9PSAwKSAmJiAoV0xBTl9HRVRfRkNfRlJPTURTKGZjKSA9PSAxKSApIHsKKwkJbWVtY3B5KGRhZGRyLCB3X2hkci0+YTMuYTEsIFdMQU5fRVRIQUREUl9MRU4pOworCQltZW1jcHkoc2FkZHIsIHdfaGRyLT5hMy5hMywgV0xBTl9FVEhBRERSX0xFTik7CisJfSBlbHNlIGlmKCAoV0xBTl9HRVRfRkNfVE9EUyhmYykgPT0gMSkgJiYgKFdMQU5fR0VUX0ZDX0ZST01EUyhmYykgPT0gMCkgKSB7CisJCW1lbWNweShkYWRkciwgd19oZHItPmEzLmEzLCBXTEFOX0VUSEFERFJfTEVOKTsKKwkJbWVtY3B5KHNhZGRyLCB3X2hkci0+YTMuYTIsIFdMQU5fRVRIQUREUl9MRU4pOworCX0gZWxzZSB7CisJCXBheWxvYWRfb2Zmc2V0ID0gV0xBTl9IRFJfQTRfTEVOOworCQlwYXlsb2FkX2xlbmd0aCAtPSAoIFdMQU5fSERSX0E0X0xFTiAtIFdMQU5fSERSX0EzX0xFTiApOworCQlpZiAocGF5bG9hZF9sZW5ndGggPCAwICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkE0IGZyYW1lIHRvbyBzaG9ydCFcbiIpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJbWVtY3B5KGRhZGRyLCB3X2hkci0+YTQuYTMsIFdMQU5fRVRIQUREUl9MRU4pOworCQltZW1jcHkoc2FkZHIsIHdfaGRyLT5hNC5hNCwgV0xBTl9FVEhBRERSX0xFTik7CisJfQorCisJLyogcGVyZm9ybSBkZS13ZXAgaWYgbmVjZXNzYXJ5Li4gKi8KKwlpZiAoKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX1BSSVZBQ1lJTlZPS0VEKSAmJiBXTEFOX0dFVF9GQ19JU1dFUChmYykgJiYgKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0RFQ1JZUFQpKSB7CisJCWlmIChwYXlsb2FkX2xlbmd0aCA8PSA4KSB7CisJCQlXTEFOX0xPR19FUlJPUigiV0VQIGZyYW1lIHRvbyBzaG9ydCAoJXUpLlxuIiwKKwkJCQkJc2tiLT5sZW4pOworCQkJcmV0dXJuIDE7CisJCX0KKwkJaWYgKChmb28gPSB3ZXBfZGVjcnlwdCh3bGFuZGV2LCBza2ItPmRhdGEgKyBwYXlsb2FkX29mZnNldCArIDQsCisJCQkJICAgICAgIHBheWxvYWRfbGVuZ3RoIC0gOCwgLTEsCisJCQkJICAgICAgIHNrYi0+ZGF0YSArIHBheWxvYWRfb2Zmc2V0LAorCQkJCSAgICAgICBza2ItPmRhdGEgKyBwYXlsb2FkX29mZnNldCArIHBheWxvYWRfbGVuZ3RoIC0gNCkpKSB7CisJCQkvKiBkZS13ZXAgZmFpbGVkLCBkcm9wIHNrYi4gKi8KKwkJCVdMQU5fTE9HX0RFQlVHKDEsICJIb3N0IGRlLVdFUCBmYWlsZWQsIGRyb3BwaW5nIGZyYW1lICglZCkuXG4iLCBmb28pOworCQkJd2xhbmRldi0+cnguZGVjcnlwdF9lcnIrKzsKKwkJCXJldHVybiAyOworCQl9CisKKwkJLyogc3VidHJhY3QgdGhlIElWK0lDViBsZW5ndGggb2ZmIHRoZSBwYXlsb2FkICovCisJCXBheWxvYWRfbGVuZ3RoIC09IDg7CisJCS8qIGNob3Agb2ZmIHRoZSBJViAqLworCQlza2JfcHVsbChza2IsIDQpOworCQkvKiBjaG9wIG9mZiB0aGUgSUNWLiAqLworCQlza2JfdHJpbShza2IsIHNrYi0+bGVuIC0gNCk7CisKKwkJd2xhbmRldi0+cnguZGVjcnlwdCsrOworCX0KKworCWVfaGRyID0gKHdsYW5fZXRoaGRyX3QgKikgKHNrYi0+ZGF0YSArIHBheWxvYWRfb2Zmc2V0KTsKKworCWVfbGxjID0gKHdsYW5fbGxjX3QgKikgKHNrYi0+ZGF0YSArIHBheWxvYWRfb2Zmc2V0KTsKKwllX3NuYXAgPSAod2xhbl9zbmFwX3QgKikgKHNrYi0+ZGF0YSArIHBheWxvYWRfb2Zmc2V0ICsgc2l6ZW9mKHdsYW5fbGxjX3QpKTsKKworCS8qIFRlc3QgZm9yIHRoZSB2YXJpb3VzIGVuY29kaW5ncyAqLworCWlmICggKHBheWxvYWRfbGVuZ3RoID49IHNpemVvZih3bGFuX2V0aGhkcl90KSkgJiYKKwkgICAgICggZV9sbGMtPmRzYXAgIT0gMHhhYSB8fCBlX2xsYy0+c3NhcCAhPSAweGFhICkgJiYKKwkgICAgICgobWVtY21wKGRhZGRyLCBlX2hkci0+ZGFkZHIsIFdMQU5fRVRIQUREUl9MRU4pID09IDApIHx8CisJICAgICAobWVtY21wKHNhZGRyLCBlX2hkci0+c2FkZHIsIFdMQU5fRVRIQUREUl9MRU4pID09IDApKSkgeworCQlXTEFOX0xPR19ERUJVRygzLCAiODAyLjMgRU5DQVAgbGVuOiAlZFxuIiwgcGF5bG9hZF9sZW5ndGgpOworCQkvKiA4MDIuMyBFbmNhcHN1bGF0ZWQgKi8KKwkJLyogVGVzdCBmb3IgYW4gb3Zlcmxlbmd0aCBmcmFtZSAqLworCQlpZiAoIHBheWxvYWRfbGVuZ3RoID4gKG5ldGRldi0+bXR1ICsgV0xBTl9FVEhIRFJfTEVOKSkgeworCQkJLyogQSBib2d1cyBsZW5ndGggZXRoZnJtIGhhcyBiZWVuIGVuY2FwJ2QuICovCisJCQkvKiBJcyBzb21lb25lIHRyeWluZyBhbiBvZmxvdyBhdHRhY2s/ICovCisJCQlXTEFOX0xPR19FUlJPUigiRU5DQVAgZnJhbWUgdG9vIGxhcmdlICglZCA+ICVkKVxuIiwKKwkJCQlwYXlsb2FkX2xlbmd0aCwgbmV0ZGV2LT5tdHUgKyBXTEFOX0VUSEhEUl9MRU4pOworCQkJcmV0dXJuIDE7CisJCX0KKworCQkvKiBDaG9wIG9mZiB0aGUgODAyLjExIGhlYWRlci4gIGl0J3MgYWxyZWFkeSBzYW5lLiAqLworCQlza2JfcHVsbChza2IsIHBheWxvYWRfb2Zmc2V0KTsKKwkJLyogY2hvcCBvZmYgdGhlIDgwMi4xMSBDUkMgKi8KKwkJc2tiX3RyaW0oc2tiLCBza2ItPmxlbiAtIFdMQU5fQ1JDX0xFTik7CisKKwl9IGVsc2UgaWYgKChwYXlsb2FkX2xlbmd0aCA+PSBzaXplb2Yod2xhbl9sbGNfdCkgKyBzaXplb2Yod2xhbl9zbmFwX3QpKSAmJgorCQkgICAoZV9sbGMtPmRzYXAgPT0gMHhhYSkgJiYKKwkJICAgKGVfbGxjLT5zc2FwID09IDB4YWEpICYmCisJCSAgIChlX2xsYy0+Y3RsID09IDB4MDMpICYmCisJCSAgICgoKG1lbWNtcCggZV9zbmFwLT5vdWksIG91aV9yZmMxMDQyLCBXTEFOX0lFRUVfT1VJX0xFTik9PTApICYmCisJCSAgICAoZXRoY29udiA9PSBXTEFOX0VUSENPTlZfODAyMWgpICYmCisJCSAgICAocDgwMjExX3N0dF9maW5kcHJvdG8oaWVlZTJob3N0MTYoZV9zbmFwLT50eXBlKSkpKSB8fAorCQkgICAgKG1lbWNtcCggZV9zbmFwLT5vdWksIG91aV9yZmMxMDQyLCBXTEFOX0lFRUVfT1VJX0xFTikhPTApKSkKKwl7CisJCVdMQU5fTE9HX0RFQlVHKDMsICJTTkFQK1JGQzEwNDIgbGVuOiAlZFxuIiwgcGF5bG9hZF9sZW5ndGgpOworCQkvKiBpdCdzIGEgU05BUCArIFJGQzEwNDIgZnJhbWUgJiYgcHJvdG9jb2wgaXMgaW4gU1RUICovCisJCS8qIGJ1aWxkIDgwMi4zICsgUkZDMTA0MiAqLworCisJCS8qIFRlc3QgZm9yIGFuIG92ZXJsZW5ndGggZnJhbWUgKi8KKwkJaWYgKCBwYXlsb2FkX2xlbmd0aCA+IG5ldGRldi0+bXR1ICkgeworCQkJLyogQSBib2d1cyBsZW5ndGggZXRoZnJtIGhhcyBiZWVuIHNlbnQuICovCisJCQkvKiBJcyBzb21lb25lIHRyeWluZyBhbiBvZmxvdyBhdHRhY2s/ICovCisJCQlXTEFOX0xPR19FUlJPUigiU05BUCBmcmFtZSB0b28gbGFyZ2UgKCVkID4gJWQpXG4iLAorCQkJCXBheWxvYWRfbGVuZ3RoLCBuZXRkZXYtPm10dSk7CisJCQlyZXR1cm4gMTsKKwkJfQorCisJCS8qIGNob3AgODAyLjExIGhlYWRlciBmcm9tIHNrYi4gKi8KKwkJc2tiX3B1bGwoc2tiLCBwYXlsb2FkX29mZnNldCk7CisKKwkJLyogY3JlYXRlIDgwMi4zIGhlYWRlciBhdCBiZWdpbm5pbmcgb2Ygc2tiLiAqLworCQllX2hkciA9ICh3bGFuX2V0aGhkcl90ICopIHNrYl9wdXNoKHNrYiwgV0xBTl9FVEhIRFJfTEVOKTsKKwkJbWVtY3B5KGVfaGRyLT5kYWRkciwgZGFkZHIsIFdMQU5fRVRIQUREUl9MRU4pOworCQltZW1jcHkoZV9oZHItPnNhZGRyLCBzYWRkciwgV0xBTl9FVEhBRERSX0xFTik7CisJCWVfaGRyLT50eXBlID0gaHRvbnMocGF5bG9hZF9sZW5ndGgpOworCisJCS8qIGNob3Agb2ZmIHRoZSA4MDIuMTEgQ1JDICovCisJCXNrYl90cmltKHNrYiwgc2tiLT5sZW4gLSBXTEFOX0NSQ19MRU4pOworCisJfSAgZWxzZSBpZiAoKHBheWxvYWRfbGVuZ3RoID49IHNpemVvZih3bGFuX2xsY190KSArIHNpemVvZih3bGFuX3NuYXBfdCkpICYmCisJCSAgICAoZV9sbGMtPmRzYXAgPT0gMHhhYSkgJiYKKwkJICAgIChlX2xsYy0+c3NhcCA9PSAweGFhKSAmJgorCQkgICAgKGVfbGxjLT5jdGwgPT0gMHgwMykgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDMsICI4MDIuMWgvUkZDMTA0MiBsZW46ICVkXG4iLCBwYXlsb2FkX2xlbmd0aCk7CisJCS8qIGl0J3MgYW4gODAyLjFoIGZyYW1lIHx8IChhbiBSRkMxMDQyICYmIHByb3RvY29sIGlzIG5vdCBpbiBTVFQpICovCisJCS8qIGJ1aWxkIGEgRElYSUkgKyBSRkM4OTQgKi8KKworCQkvKiBUZXN0IGZvciBhbiBvdmVybGVuZ3RoIGZyYW1lICovCisJCWlmICgocGF5bG9hZF9sZW5ndGggLSBzaXplb2Yod2xhbl9sbGNfdCkgLSBzaXplb2Yod2xhbl9zbmFwX3QpKQorCQkgICAgPiBuZXRkZXYtPm10dSkgeworCQkJLyogQSBib2d1cyBsZW5ndGggZXRoZnJtIGhhcyBiZWVuIHNlbnQuICovCisJCQkvKiBJcyBzb21lb25lIHRyeWluZyBhbiBvZmxvdyBhdHRhY2s/ICovCisJCQlXTEFOX0xPR19FUlJPUigiRElYSUkgZnJhbWUgdG9vIGxhcmdlICglbGQgPiAlZClcbiIsCisJCQkJCShsb25nIGludCkgKHBheWxvYWRfbGVuZ3RoIC0gc2l6ZW9mKHdsYW5fbGxjX3QpIC0KKwkJCQkJCSAgICBzaXplb2Yod2xhbl9zbmFwX3QpKSwKKwkJCQkJbmV0ZGV2LT5tdHUpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQkvKiBjaG9wIDgwMi4xMSBoZWFkZXIgZnJvbSBza2IuICovCisJCXNrYl9wdWxsKHNrYiwgcGF5bG9hZF9vZmZzZXQpOworCisJCS8qIGNob3AgbGxjIGhlYWRlciBmcm9tIHNrYi4gKi8KKwkJc2tiX3B1bGwoc2tiLCBzaXplb2Yod2xhbl9sbGNfdCkpOworCisJCS8qIGNob3Agc25hcCBoZWFkZXIgZnJvbSBza2IuICovCisJCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHdsYW5fc25hcF90KSk7CisKKwkJLyogY3JlYXRlIDgwMi4zIGhlYWRlciBhdCBiZWdpbm5pbmcgb2Ygc2tiLiAqLworCQllX2hkciA9ICh3bGFuX2V0aGhkcl90ICopIHNrYl9wdXNoKHNrYiwgV0xBTl9FVEhIRFJfTEVOKTsKKwkJZV9oZHItPnR5cGUgPSBlX3NuYXAtPnR5cGU7CisJCW1lbWNweShlX2hkci0+ZGFkZHIsIGRhZGRyLCBXTEFOX0VUSEFERFJfTEVOKTsKKwkJbWVtY3B5KGVfaGRyLT5zYWRkciwgc2FkZHIsIFdMQU5fRVRIQUREUl9MRU4pOworCisJCS8qIGNob3Agb2ZmIHRoZSA4MDIuMTEgQ1JDICovCisJCXNrYl90cmltKHNrYiwgc2tiLT5sZW4gLSBXTEFOX0NSQ19MRU4pOworCX0gZWxzZSB7CisJCVdMQU5fTE9HX0RFQlVHKDMsICJOT04tRU5DQVAgbGVuOiAlZFxuIiwgcGF5bG9hZF9sZW5ndGgpOworCQkvKiBhbnkgTk9OLUVOQ0FQICovCisJCS8qIGl0J3MgYSBnZW5lcmljIDgwMjExK0xMQyBvciBJUFggJ1JhdyA4MDIuMycgKi8KKwkJLyogIGJ1aWxkIGFuIDgwMi4zIGZyYW1lICovCisJCS8qIGFsbG9jYXRlIHNwYWNlIGFuZCBzZXR1cCBob3N0YnVmICovCisKKwkJLyogVGVzdCBmb3IgYW4gb3Zlcmxlbmd0aCBmcmFtZSAqLworCQlpZiAoIHBheWxvYWRfbGVuZ3RoID4gbmV0ZGV2LT5tdHUgKSB7CisJCQkvKiBBIGJvZ3VzIGxlbmd0aCBldGhmcm0gaGFzIGJlZW4gc2VudC4gKi8KKwkJCS8qIElzIHNvbWVvbmUgdHJ5aW5nIGFuIG9mbG93IGF0dGFjaz8gKi8KKwkJCVdMQU5fTE9HX0VSUk9SKCJPVEhFUiBmcmFtZSB0b28gbGFyZ2UgKCVkID4gJWQpXG4iLAorCQkJCXBheWxvYWRfbGVuZ3RoLAorCQkJCW5ldGRldi0+bXR1KTsKKwkJCXJldHVybiAxOworCQl9CisKKwkJLyogQ2hvcCBvZmYgdGhlIDgwMi4xMSBoZWFkZXIuICovCisJCXNrYl9wdWxsKHNrYiwgcGF5bG9hZF9vZmZzZXQpOworCisJCS8qIGNyZWF0ZSA4MDIuMyBoZWFkZXIgYXQgYmVnaW5uaW5nIG9mIHNrYi4gKi8KKwkJZV9oZHIgPSAod2xhbl9ldGhoZHJfdCAqKSBza2JfcHVzaChza2IsIFdMQU5fRVRISERSX0xFTik7CisJCW1lbWNweShlX2hkci0+ZGFkZHIsIGRhZGRyLCBXTEFOX0VUSEFERFJfTEVOKTsKKwkJbWVtY3B5KGVfaGRyLT5zYWRkciwgc2FkZHIsIFdMQU5fRVRIQUREUl9MRU4pOworCQllX2hkci0+dHlwZSA9IGh0b25zKHBheWxvYWRfbGVuZ3RoKTsKKworCQkvKiBjaG9wIG9mZiB0aGUgODAyLjExIENSQyAqLworCQlza2JfdHJpbShza2IsIHNrYi0+bGVuIC0gV0xBTl9DUkNfTEVOKTsKKworCX0KKworCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIG5ldGRldik7CisJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKworICAgICAgICAvKiBqa3JpZWdsOiBwcm9jZXNzIHNpZ25hbCBhbmQgbm9pc2UgYXMgc2V0IGluIGhmYTM4NHhfaW50X3J4KCkgKi8KKwkvKiBqa3JpZWdsOiBvbmx5IHByb2Nlc3Mgc2lnbmFsL25vaXNlIGlmIHJlcXVlc3RlZCBieSBpd3NweSAqLworICAgICAgICBpZiAod2xhbmRldi0+c3B5X251bWJlcikKKyAgICAgICAgICAgICAgICBvcmlub2NvX3NweV9nYXRoZXIod2xhbmRldiwgZXRoX2hkcihza2IpLT5oX3NvdXJjZSwgUDgwMjExU0tCX1JYTUVUQShza2IpKTsKKworCS8qIEZyZWUgdGhlIG1ldGFkYXRhICovCisJcDgwMjExc2tiX3J4bWV0YV9kZXRhY2goc2tiKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFfc3R0X2ZpbmRwcm90bworKgorKiBTZWFyY2hlcyB0aGUgODAyLjFoIFNlbGVjdGl2ZSBUcmFuc2xhdGlvbiBUYWJsZSBmb3IgYSBnaXZlbgorKiBwcm90b2NvbC4KKyoKKyogQXJndW1lbnRzOgorKglwcm90bwlwcm90b2NsIG51bWJlciAoaW4gaG9zdCBvcmRlcikgdG8gc2VhcmNoIGZvci4KKyoKKyogUmV0dXJuczoKKyoJMSAtIGlmIHRoZSB0YWJsZSBpcyBlbXB0eSBvciBhIG1hdGNoIGlzIGZvdW5kLgorKgkwIC0gaWYgdGhlIHRhYmxlIGlzIG5vbi1lbXB0eSBhbmQgYSBtYXRjaCBpcyBub3QgZm91bmQuCisqCisqIENhbGwgY29udGV4dDoKKyoJTWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgb3Igbm9uLWludGVycnVwdCBjb250ZXh0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwODAyMTFfc3R0X2ZpbmRwcm90byhVSU5UMTYgcHJvdG8pCit7CisJLyogQWx3YXlzIHJldHVybiBmb3VuZCBmb3Igbm93LiAgVGhpcyBpcyB0aGUgYmVoYXZpb3IgdXNlZCBieSB0aGUgKi8KKwkvKiAgWm9vbSBXaW45NSBkcml2ZXIgd2hlbiA4MDIuMWggbW9kZSBpcyBzZWxlY3RlZCAqLworCS8qIFRPRE86IElmIG5lY2Vzc2FyeSwgYWRkIGFuIGFjdHVhbCBzZWFyY2ggd2UnbGwgcHJvYmFibHkKKwkJIG5lZWQgdGhpcyB0byBtYXRjaCB0aGUgQ01BQydzIHdheSBvZiBkb2luZyB0aGluZ3MuCisJCSBOZWVkIHRvIGRvIHNvbWUgdGVzdGluZyB0byBjb25maXJtLgorCSovCisKKwlpZiAocHJvdG8gPT0gMHg4MGYzKSAgLyogQVBQTEVUQUxLICovCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFza2JfcnhtZXRhX2RldGFjaAorKgorKiBEaXNjb25uZWN0cyB0aGUgZnJtbWV0YSBhbmQgcnhtZXRhIGZyb20gYW4gc2tiLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCVRoZSB3bGFuZGV2IHRoaXMgc2tiIGJlbG9uZ3MgdG8uCisqCXNrYgkJVGhlIHNrYiB3ZSdyZSBhdHRhY2hpbmcgdG8uCisqCisqIFJldHVybnM6CisqCTAgb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlCisqCisqIENhbGwgY29udGV4dDoKKyoJTWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgb3Igbm9uLWludGVycnVwdCBjb250ZXh0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQKK3A4MDIxMXNrYl9yeG1ldGFfZGV0YWNoKHN0cnVjdCBza19idWZmICpza2IpCit7CisJcDgwMjExX3J4bWV0YV90CQkqcnhtZXRhOworCXA4MDIxMV9mcm1tZXRhX3QJKmZybW1ldGE7CisKKwlEQkZFTlRFUjsKKwkvKiBTYW5pdHkgY2hlY2tzICovCisJaWYgKCBza2I9PU5VTEwgKSB7CQkJLyogYmFkIHNrYiAqLworCQlXTEFOX0xPR19ERUJVRygxLCAiQ2FsbGVkIHcvIG51bGwgc2tiLlxuIik7CisJCWdvdG8gZXhpdDsKKwl9CisJZnJtbWV0YSA9IFA4MDIxMVNLQl9GUk1NRVRBKHNrYik7CisJaWYgKCBmcm1tZXRhID09IE5VTEwgKSB7IAkJLyogbm8gbWFnaWMgKi8KKwkJV0xBTl9MT0dfREVCVUcoMSwgIkNhbGxlZCB3LyBiYWQgZnJtbWV0YSBtYWdpYy5cbiIpOworCQlnb3RvIGV4aXQ7CisJfQorCXJ4bWV0YSA9IGZybW1ldGEtPnJ4OworCWlmICggcnhtZXRhID09IE5VTEwgKSB7CQkJLyogYmFkIG1ldGEgcHRyICovCisJCVdMQU5fTE9HX0RFQlVHKDEsICJDYWxsZWQgdy8gYmFkIHJ4bWV0YSBwdHIuXG4iKTsKKwkJZ290byBleGl0OworCX0KKworCS8qIEZyZWUgcnhtZXRhICovCisJa2ZyZWUocnhtZXRhKTsKKworCS8qIENsZWFyIHNrYi0+Y2IgKi8KKwltZW1zZXQoc2tiLT5jYiwgMCwgc2l6ZW9mKHNrYi0+Y2IpKTsKK2V4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFza2JfcnhtZXRhX2F0dGFjaAorKgorKiBBbGxvY2F0ZXMgYSBwODAyMTFyeG1ldGEgc3RydWN0dXJlLCBpbml0aWFsaXplcyBpdCwgYW5kIGF0dGFjaGVzCisqIGl0IHRvIGFuIHNrYi4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQlUaGUgd2xhbmRldiB0aGlzIHNrYiBiZWxvbmdzIHRvLgorKglza2IJCVRoZSBza2Igd2UncmUgYXR0YWNoaW5nIHRvLgorKgorKiBSZXR1cm5zOgorKgkwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZQorKgorKiBDYWxsIGNvbnRleHQ6CisqCU1heSBiZSBjYWxsZWQgaW4gaW50ZXJydXB0IG9yIG5vbi1pbnRlcnJ1cHQgY29udGV4dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQKK3A4MDIxMXNrYl9yeG1ldGFfYXR0YWNoKHN0cnVjdCB3bGFuZGV2aWNlICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCWludAkJCXJlc3VsdCA9IDA7CisJcDgwMjExX3J4bWV0YV90CQkqcnhtZXRhOworCXA4MDIxMV9mcm1tZXRhX3QJKmZybW1ldGE7CisKKwlEQkZFTlRFUjsKKworCS8qIElmIHRoZXNlIGFscmVhZHkgaGF2ZSBtZXRhZGF0YSwgd2UgZXJyb3Igb3V0ISAqLworCWlmIChQODAyMTFTS0JfUlhNRVRBKHNrYikgIT0gTlVMTCkgeworCQlXTEFOX0xPR19FUlJPUigiJXM6IFJYbWV0YSBhbHJlYWR5IGF0dGFjaGVkIVxuIiwKKwkJCQl3bGFuZGV2LT5uYW1lKTsKKwkJcmVzdWx0ID0gMDsKKwkJZ290byBleGl0OworCX0KKworCS8qIEFsbG9jYXRlIHRoZSByeG1ldGEgKi8KKwlyeG1ldGEgPSBrbWFsbG9jKHNpemVvZihwODAyMTFfcnhtZXRhX3QpLCBHRlBfQVRPTUlDKTsKKworCWlmICggcnhtZXRhID09IE5VTEwgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlIHJ4bWV0YS5cbiIsCisJCQkJd2xhbmRldi0+bmFtZSk7CisJCXJlc3VsdCA9IDE7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBJbml0aWFsaXplIHRoZSByeG1ldGEgKi8KKwltZW1zZXQocnhtZXRhLCAwLCBzaXplb2YocDgwMjExX3J4bWV0YV90KSk7CisJcnhtZXRhLT53bGFuZGV2ID0gd2xhbmRldjsKKwlyeG1ldGEtPmhvc3R0aW1lID0gamlmZmllczsKKworCS8qIE92ZXJsYXkgYSBmcm1tZXRhX3Qgb250byBza2ItPmNiICovCisJbWVtc2V0KHNrYi0+Y2IsIDAsIHNpemVvZihwODAyMTFfZnJtbWV0YV90KSk7CisJZnJtbWV0YSA9IChwODAyMTFfZnJtbWV0YV90Kikoc2tiLT5jYik7CisJZnJtbWV0YS0+bWFnaWMgPSBQODAyMTFfRlJNTUVUQV9NQUdJQzsKKwlmcm1tZXRhLT5yeCA9IHJ4bWV0YTsKK2V4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExc2tiX2ZyZWUKKyoKKyogRnJlZXMgYW4gZW50aXJlIHA4MDIxMXNrYiBieSBjaGVja2luZyBhbmQgZnJlZWluZyB0aGUgbWV0YSBzdHJ1Y3QKKyogYW5kIHRoZW4gZnJlZWluZyB0aGUgc2tiLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCVRoZSB3bGFuZGV2IHRoaXMgc2tiIGJlbG9uZ3MgdG8uCisqCXNrYgkJVGhlIHNrYiB3ZSdyZSBhdHRhY2hpbmcgdG8uCisqCisqIFJldHVybnM6CisqCTAgb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlCisqCisqIENhbGwgY29udGV4dDoKKyoJTWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgb3Igbm9uLWludGVycnVwdCBjb250ZXh0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQKK3A4MDIxMXNrYl9mcmVlKHN0cnVjdCB3bGFuZGV2aWNlICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXA4MDIxMV9mcm1tZXRhX3QJKm1ldGE7CisJREJGRU5URVI7CisJbWV0YSA9IFA4MDIxMVNLQl9GUk1NRVRBKHNrYik7CisJaWYgKCBtZXRhICYmIG1ldGEtPnJ4KSB7CisJCXA4MDIxMXNrYl9yeG1ldGFfZGV0YWNoKHNrYik7CisJfSBlbHNlIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZyZWVpbmcgYW4gc2tiICglcCkgdy8gbm8gZnJtbWV0YS5cbiIsIHNrYik7CisJfQorCisJZGV2X2tmcmVlX3NrYihza2IpOworCURCRkVYSVQ7CisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExY29udi5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExY29udi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNWFiNTdjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExY29udi5oCkBAIC0wLDAgKzEsMTg2IEBACisvKiBwODAyMTFjb252LmgKKyoKKyogRXRoZXIvODAyLjExIGNvbnZlcnNpb25zIGFuZCBwYWNrZXQgYnVmZmVyIHJvdXRpbmVzCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBkZWNsYXJlcyB0aGUgZnVuY3Rpb25zLCB0eXBlcyBhbmQgbWFjcm9zIHRoYXQgcGVyZm9ybQorKiBFdGhlcm5ldCB0by9mcm9tIDgwMi4xMSBmcmFtZSBjb252ZXJzaW9ucy4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX0xJTlVYX1A4MDIxMUNPTlZfSAorI2RlZmluZSBfTElOVVhfUDgwMjExQ09OVl9ICisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDb25zdGFudHMgKi8KKworI2RlZmluZSBXTEFOX0VUSEFERFJfTEVOCTYKKyNkZWZpbmUgV0xBTl9JRUVFX09VSV9MRU4JMworCisjZGVmaW5lIFdMQU5fRVRIQ09OVl9FTkNBUAkxCisjZGVmaW5lIFdMQU5fRVRIQ09OVl9SRkMxMDQyCTIKKyNkZWZpbmUgV0xBTl9FVEhDT05WXzgwMjFoCTMKKworI2RlZmluZSBXTEFOX01JTl9FVEhGUk1fTEVOCTYwCisjZGVmaW5lIFdMQU5fTUFYX0VUSEZSTV9MRU4JMTUxNAorI2RlZmluZSBXTEFOX0VUSEhEUl9MRU4JCTE0CisKKyNkZWZpbmUgUDgwMjExQ0FQVFVSRV9WRVJTSU9OCTB4ODAyMTEwMDEKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIE1hY3JvcyAqLworCisjZGVmaW5lCVA4MDIxMV9GUk1NRVRBX01BR0lDCQkweDgwMjExMAorCisjZGVmaW5lIFA4MDIxMVNLQl9GUk1NRVRBKHMpIFwKKwkoKCgoKHA4MDIxMV9mcm1tZXRhX3QqKSgocyktPmNiKSktPm1hZ2ljKT09UDgwMjExX0ZSTU1FVEFfTUFHSUMpID8gXAorCQkoKHA4MDIxMV9mcm1tZXRhX3QqKSgocyktPmNiKSkgOiBcCisJCShOVUxMKSkKKworI2RlZmluZSBQODAyMTFTS0JfUlhNRVRBKHMpIFwKKwkoUDgwMjExU0tCX0ZSTU1FVEEoKHMpKSA/ICBQODAyMTFTS0JfRlJNTUVUQSgocykpLT5yeCA6ICgocDgwMjExX3J4bWV0YV90KikoTlVMTCkpKQorCit0eXBlZGVmIHN0cnVjdCBwODAyMTFfcnhtZXRhCit7CisJc3RydWN0IHdsYW5kZXZpY2UJKndsYW5kZXY7CisKKwlVSU5UNjQJbWFjdGltZTsJLyogSGktcmV6IE1BQy1zdXBwbGllZCB0aW1lIHZhbHVlICovCisJVUlOVDY0CWhvc3R0aW1lOwkvKiBCZXN0LXJleiBob3N0IHN1cHBsaWVkIHRpbWUgdmFsdWUgKi8KKworCVVJTlQJcnhyYXRlOwkJLyogUmVjZWl2ZSBkYXRhIHJhdGUgaW4gMTAwa2JwcyAqLworCVVJTlQJcHJpb3JpdHk7CS8qIDAtMTUsIDA9Y29udGVudGlvbiwgNj1DRiAqLworCUlOVAlzaWduYWw7CQkvKiBBbiBTU0ksIHNlZSBwODAyMTFuZXRkZXYuaCAqLworCUlOVAlub2lzZTsJCS8qIEFuIFNTSSwgc2VlIHA4MDIxMW5ldGRldi5oICovCisJVUlOVAljaGFubmVsOwkvKiBSZWNlaXZlIGNoYW5uZWwgKG1vc3RseSBmb3Igc25pZnMpICovCisJVUlOVAlwcmVhbWJsZTsJLyogUDgwMjExRU5VTV9wcmVhbWJsZXR5cGVfKiAqLworCVVJTlQJZW5jb2Rpbmc7CS8qIFA4MDIxMUVOVU1fZW5jb2RpbmdfKiAqLworCit9IHA4MDIxMV9yeG1ldGFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExX2ZybW1ldGEKK3sKKwlVSU5UCQkJbWFnaWM7CisJcDgwMjExX3J4bWV0YV90CQkqcng7Cit9IHA4MDIxMV9mcm1tZXRhX3Q7CisKK3ZvaWQgcDgwMjExc2tiX2ZyZWUoc3RydWN0IHdsYW5kZXZpY2UgKndsYW5kZXYsIHN0cnVjdCBza19idWZmICpza2IpOworaW50IHA4MDIxMXNrYl9yeG1ldGFfYXR0YWNoKHN0cnVjdCB3bGFuZGV2aWNlICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK3ZvaWQgcDgwMjExc2tiX3J4bWV0YV9kZXRhY2goc3RydWN0IHNrX2J1ZmYgKnNrYik7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBUeXBlcyAqLworCisvKgorICogRnJhbWUgY2FwdHVyZSBoZWFkZXIuICAoU2VlIGRvYy9jYXB0dXJlZnJtLnR4dCkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExX2NhcGhkcgoreworCVVJTlQzMgkJdmVyc2lvbjsKKwlVSU5UMzIJCWxlbmd0aDsKKwlVSU5UNjQJCW1hY3RpbWU7CisJVUlOVDY0CQlob3N0dGltZTsKKwlVSU5UMzIJCXBoeXR5cGU7CisJVUlOVDMyCQljaGFubmVsOworCVVJTlQzMgkJZGF0YXJhdGU7CisJVUlOVDMyCQlhbnRlbm5hOworCVVJTlQzMgkJcHJpb3JpdHk7CisJVUlOVDMyCQlzc2lfdHlwZTsKKwlJTlQzMgkJc3NpX3NpZ25hbDsKKwlJTlQzMgkJc3NpX25vaXNlOworCVVJTlQzMgkJcHJlYW1ibGU7CisJVUlOVDMyCQllbmNvZGluZzsKK30gcDgwMjExX2NhcGhkcl90OworCisvKiBidWZmZXIgZnJlZSBtZXRob2QgcG9pbnRlciB0eXBlICovCit0eXBlZGVmIHZvaWQgKCogZnJlZWJ1Zl9tZXRob2RfdCkodm9pZCAqYnVmLCBpbnQgc2l6ZSk7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMV9tZXRhd2VwIHsKKwl2b2lkICAqZGF0YTsKKwlVSU5UOCBpdls0XTsKKwlVSU5UOCBpY3ZbNF07Cit9IHA4MDIxMV9tZXRhd2VwX3Q7CisKKy8qIGxvY2FsIGV0aGVyIGhlYWRlciB0eXBlICovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2V0aGhkcgoreworCVVJTlQ4CWRhZGRyW1dMQU5fRVRIQUREUl9MRU5dOworCVVJTlQ4CXNhZGRyW1dMQU5fRVRIQUREUl9MRU5dOworCVVJTlQxNgl0eXBlOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyB3bGFuX2V0aGhkcl90OworCisvKiBsb2NhbCBsbGMgaGVhZGVyIHR5cGUgKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5fbGxjCit7CisJVUlOVDgJZHNhcDsKKwlVSU5UOAlzc2FwOworCVVJTlQ4CWN0bDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gd2xhbl9sbGNfdDsKKworLyogbG9jYWwgc25hcCBoZWFkZXIgdHlwZSAqLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9zbmFwCit7CisJVUlOVDgJb3VpW1dMQU5fSUVFRV9PVUlfTEVOXTsKKwlVSU5UMTYJdHlwZTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gd2xhbl9zbmFwX3Q7CisKKy8qIENpcmN1bGFyIGluY2x1ZGUgdHJpY2sgKi8KK3N0cnVjdCB3bGFuZGV2aWNlOworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRXh0ZXJucyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLypGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworaW50IHNrYl9wODAyMTFfdG9fZXRoZXIoIHN0cnVjdCB3bGFuZGV2aWNlICp3bGFuZGV2LCBVSU5UMzIgZXRoY29udiwKKwkJCSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK2ludCBza2JfZXRoZXJfdG9fcDgwMjExKCBzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldiwgVUlOVDMyIGV0aGNvbnYsCisJCQkgc3RydWN0IHNrX2J1ZmYgKnNrYiwgcDgwMjExX2hkcl90ICpwODAyMTFfaGRyLAorCQkJIHA4MDIxMV9tZXRhd2VwX3QgKnA4MDIxMV93ZXAgKTsKKworaW50IHA4MDIxMV9zdHRfZmluZHByb3RvKFVJTlQxNiBwcm90byk7CitpbnQgcDgwMjExX3N0dF9hZGRwcm90byhVSU5UMTYgcHJvdG8pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMWhkci5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExaGRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdiMDg3MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMWhkci5oCkBAIC0wLDAgKzEsMjk5IEBACisvKiBwODAyMTFoZHIuaAorKgorKiBNYWNyb3MsIHR5cGVzLCBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyA4MDIuMTEgTUFDIGhlYWRlcnMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhpcyBmaWxlIGRlY2xhcmVzIHRoZSBjb25zdGFudHMgYW5kIHR5cGVzIHVzZWQgaW4gdGhlIGludGVyZmFjZQorKiBiZXR3ZWVuIGEgd2xhbiBkcml2ZXIgYW5kIHRoZSB1c2VyIG1vZGUgdXRpbGl0aWVzLgorKgorKiBOb3RlOgorKiAgLSBDb25zdGFudCB2YWx1ZXMgYXJlIGFsd2F5cyBpbiBIT1NUIGJ5dGUgb3JkZXIuICBUbyBhc3NpZ24KKyogICAgdmFsdWVzIHRvIG11bHRpLWJ5dGUgZmllbGRzIHRoZXkgX211c3RfIGJlIGNvbnZlcnRlZCB0bworKiAgICBpZWVlIGJ5dGUgb3JkZXIuICBUbyByZXRyaWV2ZSBtdWx0aS1ieXRlIHZhbHVlcyBmcm9tIGluY29taW5nCisqICAgIGZyYW1lcywgdGhleSBtdXN0IGJlIGNvbnZlcnRlZCB0byBob3N0IG9yZGVyLgorKgorKiBBbGwgZnVuY3Rpb25zIGRlY2xhcmVkIGhlcmUgYXJlIGltcGxlbWVudGVkIGluIHA4MDIxMS5jCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisjaWZuZGVmIF9QODAyMTFIRFJfSAorI2RlZmluZSBfUDgwMjExSERSX0gKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFN5c3RlbSBJbmNsdWRlcyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaWZuZGVmICBfV0xBTl9DT01QQVRfSAorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisjZW5kaWYKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29uc3RhbnRzICovCisKKy8qLS0tIFNpemVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUgV0xBTl9BRERSX0xFTgkJCTYKKyNkZWZpbmUgV0xBTl9DUkNfTEVOCQkJNAorI2RlZmluZSBXTEFOX0JTU0lEX0xFTgkJCTYKKyNkZWZpbmUgV0xBTl9CU1NfVFNfTEVOCQkJOAorI2RlZmluZSBXTEFOX0hEUl9BM19MRU4JCQkyNAorI2RlZmluZSBXTEFOX0hEUl9BNF9MRU4JCQkzMAorI2RlZmluZSBXTEFOX1NTSURfTUFYTEVOCQkzMgorI2RlZmluZSBXTEFOX0RBVEFfTUFYTEVOCQkyMzEyCisjZGVmaW5lIFdMQU5fQTNGUl9NQVhMRU4JCShXTEFOX0hEUl9BM19MRU4gKyBXTEFOX0RBVEFfTUFYTEVOICsgV0xBTl9DUkNfTEVOKQorI2RlZmluZSBXTEFOX0E0RlJfTUFYTEVOCQkoV0xBTl9IRFJfQTRfTEVOICsgV0xBTl9EQVRBX01BWExFTiArIFdMQU5fQ1JDX0xFTikKKyNkZWZpbmUgV0xBTl9CRUFDT05fRlJfTUFYTEVOCQkoV0xBTl9IRFJfQTNfTEVOICsgMzM0KQorI2RlZmluZSBXTEFOX0FUSU1fRlJfTUFYTEVOCQkoV0xBTl9IRFJfQTNfTEVOICsgMCkKKyNkZWZpbmUgV0xBTl9ESVNBU1NPQ19GUl9NQVhMRU4JCShXTEFOX0hEUl9BM19MRU4gKyAyKQorI2RlZmluZSBXTEFOX0FTU09DUkVRX0ZSX01BWExFTgkJKFdMQU5fSERSX0EzX0xFTiArIDQ4KQorI2RlZmluZSBXTEFOX0FTU09DUkVTUF9GUl9NQVhMRU4JKFdMQU5fSERSX0EzX0xFTiArIDE2KQorI2RlZmluZSBXTEFOX1JFQVNTT0NSRVFfRlJfTUFYTEVOCShXTEFOX0hEUl9BM19MRU4gKyA1NCkKKyNkZWZpbmUgV0xBTl9SRUFTU09DUkVTUF9GUl9NQVhMRU4JKFdMQU5fSERSX0EzX0xFTiArIDE2KQorI2RlZmluZSBXTEFOX1BST0JFUkVRX0ZSX01BWExFTgkJKFdMQU5fSERSX0EzX0xFTiArIDQ0KQorI2RlZmluZSBXTEFOX1BST0JFUkVTUF9GUl9NQVhMRU4JKFdMQU5fSERSX0EzX0xFTiArIDc4KQorI2RlZmluZSBXTEFOX0FVVEhFTl9GUl9NQVhMRU4JCShXTEFOX0hEUl9BM19MRU4gKyAyNjEpCisjZGVmaW5lIFdMQU5fREVBVVRIRU5fRlJfTUFYTEVOCQkoV0xBTl9IRFJfQTNfTEVOICsgMikKKyNkZWZpbmUgV0xBTl9XRVBfTktFWVMJCQk0CisjZGVmaW5lIFdMQU5fV0VQX01BWEtFWUxFTgkJMTMKKyNkZWZpbmUgV0xBTl9DSEFMTEVOR0VfSUVfTEVOCQkxMzAKKyNkZWZpbmUgV0xBTl9DSEFMTEVOR0VfTEVOCQkxMjgKKyNkZWZpbmUgV0xBTl9XRVBfSVZfTEVOCQkJNAorI2RlZmluZSBXTEFOX1dFUF9JQ1ZfTEVOCQk0CisKKy8qLS0tIEZyYW1lIENvbnRyb2wgRmllbGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBGcmFtZSBUeXBlcyAqLworI2RlZmluZSBXTEFOX0ZUWVBFX01HTVQJCQkweDAwCisjZGVmaW5lIFdMQU5fRlRZUEVfQ1RMCQkJMHgwMQorI2RlZmluZSBXTEFOX0ZUWVBFX0RBVEEJCQkweDAyCisKKy8qIEZyYW1lIHN1YnR5cGVzICovCisvKiBNYW5hZ2VtZW50ICovCisjZGVmaW5lIFdMQU5fRlNUWVBFX0FTU09DUkVRCQkweDAwCisjZGVmaW5lIFdMQU5fRlNUWVBFX0FTU09DUkVTUAkJMHgwMQorI2RlZmluZSBXTEFOX0ZTVFlQRV9SRUFTU09DUkVRCQkweDAyCisjZGVmaW5lIFdMQU5fRlNUWVBFX1JFQVNTT0NSRVNQCQkweDAzCisjZGVmaW5lIFdMQU5fRlNUWVBFX1BST0JFUkVRCQkweDA0CisjZGVmaW5lIFdMQU5fRlNUWVBFX1BST0JFUkVTUAkJMHgwNQorI2RlZmluZSBXTEFOX0ZTVFlQRV9CRUFDT04JCTB4MDgKKyNkZWZpbmUgV0xBTl9GU1RZUEVfQVRJTQkJMHgwOQorI2RlZmluZSBXTEFOX0ZTVFlQRV9ESVNBU1NPQwkJMHgwYQorI2RlZmluZSBXTEFOX0ZTVFlQRV9BVVRIRU4JCTB4MGIKKyNkZWZpbmUgV0xBTl9GU1RZUEVfREVBVVRIRU4JCTB4MGMKKworLyogQ29udHJvbCAqLworI2RlZmluZSBXTEFOX0ZTVFlQRV9CTE9DS0FDS1JFUQkJMHg4CisjZGVmaW5lIFdMQU5fRlNUWVBFX0JMT0NLQUNLICAJCTB4OQorI2RlZmluZSBXTEFOX0ZTVFlQRV9QU1BPTEwJCTB4MGEKKyNkZWZpbmUgV0xBTl9GU1RZUEVfUlRTCQkJMHgwYgorI2RlZmluZSBXTEFOX0ZTVFlQRV9DVFMJCQkweDBjCisjZGVmaW5lIFdMQU5fRlNUWVBFX0FDSwkJCTB4MGQKKyNkZWZpbmUgV0xBTl9GU1RZUEVfQ0ZFTkQJCTB4MGUKKyNkZWZpbmUgV0xBTl9GU1RZUEVfQ0ZFTkRDRkFDSwkJMHgwZgorCisvKiBEYXRhICovCisjZGVmaW5lIFdMQU5fRlNUWVBFX0RBVEFPTkxZCQkweDAwCisjZGVmaW5lIFdMQU5fRlNUWVBFX0RBVEFfQ0ZBQ0sJCTB4MDEKKyNkZWZpbmUgV0xBTl9GU1RZUEVfREFUQV9DRlBPTEwJCTB4MDIKKyNkZWZpbmUgV0xBTl9GU1RZUEVfREFUQV9DRkFDS19DRlBPTEwJMHgwMworI2RlZmluZSBXTEFOX0ZTVFlQRV9OVUxMCQkweDA0CisjZGVmaW5lIFdMQU5fRlNUWVBFX0NGQUNLCQkweDA1CisjZGVmaW5lIFdMQU5fRlNUWVBFX0NGUE9MTAkJMHgwNgorI2RlZmluZSBXTEFOX0ZTVFlQRV9DRkFDS19DRlBPTEwJMHgwNworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBNYWNyb3MgKi8KKworLyotLS0gRkMgTWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogTWFjcm9zIHRvIGdldC9zZXQgdGhlIGJpdGZpZWxkcyBvZiB0aGUgRnJhbWUgQ29udHJvbCBGaWVsZCAqLworLyogIEdFVF9GQ18/Pz8gLSB0YWtlcyB0aGUgaG9zdCBieXRlLW9yZGVyIHZhbHVlIG9mIGFuIEZDICAgICAqLworLyogICAgICAgICAgICAgICBhbmQgcmV0cmlldmVzIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlICAgICAgICAqLworLyogICAgICAgICAgICAgICBiaXRmaWVsZHMgYW5kIG1vdmVzIHRoYXQgdmFsdWUgc28gaXRzIGxzYiBpcyAqLworLyogICAgICAgICAgICAgICBpbiBiaXQgMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFNFVF9GQ18/Pz8gLSB0YWtlcyBhIGhvc3Qgb3JkZXIgdmFsdWUgZm9yIG9uZSBvZiB0aGUgRkMgICAqLworLyogICAgICAgICAgICAgICBiaXRmaWVsZHMgYW5kIG1vdmVzIGl0IHRvIHRoZSBwcm9wZXIgYml0ICAgICAqLworLyogICAgICAgICAgICAgICBsb2NhdGlvbiBmb3IgT1JpbmcgaW50byBhIGhvc3Qgb3JkZXIgRkMuICAgICAqLworLyogICAgICAgICAgICAgICBUbyBzZW5kIHRoZSBGQyBwcm9kdWNlZCBmcm9tIFNFVF9GQ18/Pz8sICAgICAqLworLyogICAgICAgICAgICAgICBvbmUgbXVzdCBwdXQgdGhlIGJ5dGVzIGluIElFRUUgb3JkZXIuICAgICAgICAqLworLyogIGUuZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgIHByaW50ZigidGhlIGZyYW1lIHN1YnR5cGUgaXMgJXgiLCAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgIEdFVF9GQ19GVFlQRSggaWVlZTJob3N0KCByeC5mYyApKSkgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgIHR4LmZjID0gaG9zdDJpZWVlKCBTRVRfRkNfRlRZUEUoV0xBTl9GVFlQX0NUTCkgfCAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBTRVRfRkNfRlNUWVBFKFdMQU5fRlNUWVBFX1JUUykgKTsgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIFdMQU5fR0VUX0ZDX1BWRVIobikJICgoKFVJTlQxNikobikpICYgKEJJVDAgfCBCSVQxKSkKKyNkZWZpbmUgV0xBTl9HRVRfRkNfRlRZUEUobikJKCgoKFVJTlQxNikobikpICYgKEJJVDIgfCBCSVQzKSkgPj4gMikKKyNkZWZpbmUgV0xBTl9HRVRfRkNfRlNUWVBFKG4pCSgoKChVSU5UMTYpKG4pKSAmIChCSVQ0fEJJVDV8QklUNnxCSVQ3KSkgPj4gNCkKKyNkZWZpbmUgV0xBTl9HRVRfRkNfVE9EUyhuKSAJKCgoKFVJTlQxNikobikpICYgKEJJVDgpKSA+PiA4KQorI2RlZmluZSBXTEFOX0dFVF9GQ19GUk9NRFMobikJKCgoKFVJTlQxNikobikpICYgKEJJVDkpKSA+PiA5KQorI2RlZmluZSBXTEFOX0dFVF9GQ19NT1JFRlJBRyhuKSAoKCgoVUlOVDE2KShuKSkgJiAoQklUMTApKSA+PiAxMCkKKyNkZWZpbmUgV0xBTl9HRVRfRkNfUkVUUlkobikJKCgoKFVJTlQxNikobikpICYgKEJJVDExKSkgPj4gMTEpCisjZGVmaW5lIFdMQU5fR0VUX0ZDX1BXUk1HVChuKQkoKCgoVUlOVDE2KShuKSkgJiAoQklUMTIpKSA+PiAxMikKKyNkZWZpbmUgV0xBTl9HRVRfRkNfTU9SRURBVEEobikgKCgoKFVJTlQxNikobikpICYgKEJJVDEzKSkgPj4gMTMpCisjZGVmaW5lIFdMQU5fR0VUX0ZDX0lTV0VQKG4pCSgoKChVSU5UMTYpKG4pKSAmIChCSVQxNCkpID4+IDE0KQorI2RlZmluZSBXTEFOX0dFVF9GQ19PUkRFUihuKQkoKCgoVUlOVDE2KShuKSkgJiAoQklUMTUpKSA+PiAxNSkKKworI2RlZmluZSBXTEFOX1NFVF9GQ19QVkVSKG4pCSgoVUlOVDE2KShuKSkKKyNkZWZpbmUgV0xBTl9TRVRfRkNfRlRZUEUobikJKCgoVUlOVDE2KShuKSkgPDwgMikKKyNkZWZpbmUgV0xBTl9TRVRfRkNfRlNUWVBFKG4pCSgoKFVJTlQxNikobikpIDw8IDQpCisjZGVmaW5lIFdMQU5fU0VUX0ZDX1RPRFMobikgCSgoKFVJTlQxNikobikpIDw8IDgpCisjZGVmaW5lIFdMQU5fU0VUX0ZDX0ZST01EUyhuKQkoKChVSU5UMTYpKG4pKSA8PCA5KQorI2RlZmluZSBXTEFOX1NFVF9GQ19NT1JFRlJBRyhuKSAoKChVSU5UMTYpKG4pKSA8PCAxMCkKKyNkZWZpbmUgV0xBTl9TRVRfRkNfUkVUUlkobikJKCgoVUlOVDE2KShuKSkgPDwgMTEpCisjZGVmaW5lIFdMQU5fU0VUX0ZDX1BXUk1HVChuKQkoKChVSU5UMTYpKG4pKSA8PCAxMikKKyNkZWZpbmUgV0xBTl9TRVRfRkNfTU9SRURBVEEobikgKCgoVUlOVDE2KShuKSkgPDwgMTMpCisjZGVmaW5lIFdMQU5fU0VUX0ZDX0lTV0VQKG4pCSgoKFVJTlQxNikobikpIDw8IDE0KQorI2RlZmluZSBXTEFOX1NFVF9GQ19PUkRFUihuKQkoKChVSU5UMTYpKG4pKSA8PCAxNSkKKworLyotLS0gRHVyYXRpb24gTWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogTWFjcm9zIHRvIGdldC9zZXQgdGhlIGJpdGZpZWxkcyBvZiB0aGUgRHVyYXRpb24gRmllbGQgICAgICAqLworLyogIC0gdGhlIGR1cmF0aW9uIHZhbHVlIGlzIG9ubHkgdmFsaWQgd2hlbiBiaXQxNSBpcyB6ZXJvICAgICAqLworLyogIC0gdGhlIGZpcm13YXJlIGhhbmRsZXMgdGhlc2UgdmFsdWVzLCBzbyBJJ20gbm90IGdvaW5nICAgICAqLworLyogICAgdGhlc2UgbWFjcm9zIHJpZ2h0IG5vdy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tLSBTZXF1ZW5jZSBDb250cm9sICBNYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBNYWNyb3MgdG8gZ2V0L3NldCB0aGUgYml0ZmllbGRzIG9mIHRoZSBTZXF1ZW5jZSBDb250cm9sICAgICovCisvKiBGaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIFdMQU5fR0VUX1NFUV9GUkdOVU0obikgKCgoVUlOVDE2KShuKSkgJiAoQklUMHxCSVQxfEJJVDJ8QklUMykpCisjZGVmaW5lIFdMQU5fR0VUX1NFUV9TRVFOVU0obikgKCgoKFVJTlQxNikobikpICYgKH4oQklUMHxCSVQxfEJJVDJ8QklUMykpKSA+PiA0KQorCisvKi0tLSBEYXRhIHB0ciBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBDcmVhdGVzIGEgVUlOVDgqIHRvIHRoZSBkYXRhIHBvcnRpb24gb2YgYSBmcmFtZSAgICAgICAgICAgICovCisvKiBBc3N1bWVzIHlvdSdyZSBwYXNzaW5nIGluIGEgcHRyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhkciovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIFdMQU5fSERSX0EzX0RBVEFQKHApICgoKFVJTlQ4KikocCkpICsgV0xBTl9IRFJfQTNfTEVOKQorI2RlZmluZSBXTEFOX0hEUl9BNF9EQVRBUChwKSAoKChVSU5UOCopKHApKSArIFdMQU5fSERSX0E0X0xFTikKKworI2RlZmluZSBET1QxMV9SQVRFNV9JU0JBU0lDX0dFVChyKSAgICAgKCgoVUlOVDgpKHIpKSAmIEJJVDcpCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBUeXBlcyAqLworCisvKiBCU1MgVGltZXN0YW1wICovCit0eXBlZGVmIFVJTlQ4IHdsYW5fYnNzX3RzX3RbV0xBTl9CU1NfVFNfTEVOXTsKKworLyogR2VuZXJpYyA4MDIuMTEgSGVhZGVyIHR5cGVzICovCisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMV9oZHJfYTMKK3sKKwlVSU5UMTYJZmM7CisJVUlOVDE2CWR1cjsKKwlVSU5UOAlhMVtXTEFOX0FERFJfTEVOXTsKKwlVSU5UOAlhMltXTEFOX0FERFJfTEVOXTsKKwlVSU5UOAlhM1tXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJc2VxOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFfaGRyX2EzX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMV9oZHJfYTQKK3sKKwlVSU5UMTYJZmM7CisJVUlOVDE2CWR1cjsKKwlVSU5UOAlhMVtXTEFOX0FERFJfTEVOXTsKKwlVSU5UOAlhMltXTEFOX0FERFJfTEVOXTsKKwlVSU5UOAlhM1tXTEFOX0FERFJfTEVOXTsKKwlVSU5UMTYJc2VxOworCVVJTlQ4CWE0W1dMQU5fQUREUl9MRU5dOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFfaGRyX2E0X3Q7CisKK3R5cGVkZWYgdW5pb24gcDgwMjExX2hkcgoreworCXA4MDIxMV9oZHJfYTNfdAkJYTM7CisJcDgwMjExX2hkcl9hNF90CQlhNDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExX2hkcl90OworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBFeHRlcm4gRGVjbGFyYXRpb25zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyAqLworCisvKiBGcmFtZSBhbmQgaGVhZGVyIGxlbmdodCBtYWNyb3MgKi8KKworI2RlZmluZSBXTEFOX0NUTF9GUkFNRUxFTihmc3R5cGUpIChcCisJKGZzdHlwZSkgPT0gV0xBTl9GU1RZUEVfQkxPQ0tBQ0tSRVEJPyAyNCA6IFwKKwkoZnN0eXBlKSA9PSBXTEFOX0ZTVFlQRV9CTE9DS0FDSyAgIAk/IDE1MiA6IFwKKwkoZnN0eXBlKSA9PSBXTEFOX0ZTVFlQRV9QU1BPTEwJCT8gMjAgOiBcCisJKGZzdHlwZSkgPT0gV0xBTl9GU1RZUEVfUlRTCQk/IDIwIDogXAorCShmc3R5cGUpID09IFdMQU5fRlNUWVBFX0NUUwkJPyAxNCA6IFwKKwkoZnN0eXBlKSA9PSBXTEFOX0ZTVFlQRV9BQ0sJCT8gMTQgOiBcCisJKGZzdHlwZSkgPT0gV0xBTl9GU1RZUEVfQ0ZFTkQJCT8gMjAgOiBcCisJKGZzdHlwZSkgPT0gV0xBTl9GU1RZUEVfQ0ZFTkRDRkFDSwk/IDIwIDogNCkKKworI2RlZmluZSBXTEFOX0ZDU19MRU4JCQk0CisKKy8qIGZ0Y2wgaW4gSE9TVCBvcmRlciAqLworaW5saW5lIHN0YXRpYyBVSU5UMTYgcDgwMjExX2hlYWRlcmxlbihVSU5UMTYgZmN0bCkKK3sKKwlVSU5UMTYgaGRybGVuID0gMDsKKworCXN3aXRjaCAoIFdMQU5fR0VUX0ZDX0ZUWVBFKGZjdGwpICkgeworCWNhc2UgV0xBTl9GVFlQRV9NR01UOgorCQloZHJsZW4gPSBXTEFOX0hEUl9BM19MRU47CisJCWJyZWFrOworCWNhc2UgV0xBTl9GVFlQRV9EQVRBOgorCQloZHJsZW4gPSBXTEFOX0hEUl9BM19MRU47CisJCWlmICggV0xBTl9HRVRfRkNfVE9EUyhmY3RsKSAmJiBXTEFOX0dFVF9GQ19GUk9NRFMoZmN0bCkgKSB7CisJCQloZHJsZW4gKz0gV0xBTl9BRERSX0xFTjsKKwkJfQorCQlicmVhazsKKwljYXNlIFdMQU5fRlRZUEVfQ1RMOgorCQloZHJsZW4gPSBXTEFOX0NUTF9GUkFNRUxFTihXTEFOX0dFVF9GQ19GU1RZUEUoZmN0bCkpIC0KKwkJCVdMQU5fRkNTX0xFTjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaGRybGVuID0gV0xBTl9IRFJfQTNfTEVOOworCX0KKworCXJldHVybiBoZHJsZW47Cit9CisKKyNlbmRpZiAvKiBfUDgwMjExSERSX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMWlvY3RsLmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFpb2N0bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YjJlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFpb2N0bC5oCkBAIC0wLDAgKzEsMTIzIEBACisvKiBwODAyMTFpb2N0bC5oCisqCisqIERlY2xhcmVzIGNvbnN0YW50cyBhbmQgdHlwZXMgZm9yIHRoZSBwODAyMTEgaW9jdGxzCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBXaGlsZSB0aGlzIGZpbGUgaXMgY2FsbGVkICdpb2N0bCcgaXMgcHVycG9zZSBnb2VzIGEgbGl0dGxlIGJleW9uZAorKiAgdGhhdC4gIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSB0eXBlcyBhbmQgY29udGFudHMgdXNlZCB0byBpbXBsZW1lbnQKKyogIHRoZSBwODAyMTEgcmVxdWVzdC9jb25maXJtL2luZGljYXRlIGludGVyZmFjZXMgb24gTGludXguICBUaGUKKyogIHJlcXVlc3QvY29uZmlybSBpbnRlcmZhY2UgaXMsIGluIGZhY3QsIG5vcm1hbGx5IGltcGxlbWVudGVkIGFzIGFuCisqICBpb2N0bC4gIFRoZSBpbmRpY2F0ZSBpbnRlcmZhY2Ugb24gdGhlIG90aGVyIGhhbmQsIGlzIGltcGxlbWVudGVkCisqICB1c2luZyB0aGUgTGludXggJ25ldGxpbmsnIGludGVyZmFjZS4KKyoKKyogIFRoZSByZWFzb24gSSBzYXkgdGhhdCByZXF1ZXN0L2NvbmZpcm0gaXMgJ25vcm1hbGx5JyBpbXBsZW1lbnRlZAorKiAgdmlhIGlvY3RsIGlzIHRoYXQgd2UncmUgcmVzZXJ2aW5nIHRoZSByaWdodCB0byBiZSBhYmxlIHRvIHNlbmQKKyogIHJlcXVlc3QgY29tbWFuZHMgdmlhIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkKKyogIGlmIHdlIGV2ZXIgbmVlZCB0byBzZW5kIHJlcXVlc3QgbWVzc2FnZXMgd2hlbiB0aGVyZSBhcmVuJ3QgYW55CisqICB3bGFuIG5ldHdvcmsgZGV2aWNlcyBwcmVzZW50IChpLmUuIHNlbmRpbmcgYSBtZXNzYWdlIHRoYXQgb25seSBwODAyMTEKKyogIGNhcmVzIGFib3V0LgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworCisjaWZuZGVmIF9QODAyMTFJT0NUTF9ICisjZGVmaW5lIF9QODAyMTFJT0NUTF9ICisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDb25zdGFudHMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHA4MDIxMSBpb2N0bCAicmVxdWVzdCIgY29kZXMuICBTZWUgYXJndW1lbnQgMiBvZiBpb2N0bCgyKS4gKi8KKworI2RlZmluZSBQODAyMTFfSUZURVNUCQkoU0lPQ0RFVlBSSVZBVEUgKyAwKQorI2RlZmluZSBQODAyMTFfSUZSRVEJCShTSU9DREVWUFJJVkFURSArIDEpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBNYWdpYyBudW1iZXIsIGEgcXVpY2sgdGVzdCB0byBzZWUgd2UncmUgZ2V0dGluZyB0aGUgZGVzaXJlZCBzdHJ1Y3QgKi8KKworI2RlZmluZSBQODAyMTFfSU9DVExfTUFHSUMJKDB4NGEyZDQ2NGRVTCkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIE5ldGxpbmsgcHJvdG9jb2wgbnVtYmVycyBmb3IgdGhlIGluZGljYXRpb24gaW50ZXJmYWNlICovCisKKyNkZWZpbmUgUDgwMjExX05MX1NPQ0tfSU5ECU5FVExJTktfVVNFUlNPQ0sKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIE5ldGxpbmsgbXVsdGljYXN0IGJpdHMgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBtZXNzYWdlcyAqLworCisjZGVmaW5lIFA4MDIxMV9OTF9NQ0FTVF9HUlBfTUxNRQlCSVQwCS8qIExvY2FsIHN0YXRpb24gbWVzc2FnZXMgKi8KKyNkZWZpbmUgUDgwMjExX05MX01DQVNUX0dSUF9TTklGRglCSVQxCS8qIFNuaWZmZXIgbWVzc2FnZXMgKi8KKyNkZWZpbmUgUDgwMjExX05MX01DQVNUX0dSUF9ESVNUCUJJVDIJLyogRGlzdHJpYnV0aW9uIHN5c3RlbSBtZXNzYWdlcyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTWFjcm9zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFR5cGVzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBBIHB0ciB0byB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSB0eXBlIGlzIHBhc3NlZCBhcyB0aGUgdGhpcmQgKi8KKy8qICBhcmd1bWVudCB0byB0aGUgaW9jdGwgc3lzdGVtIGNhbGwgd2hlbiBpc3N1aW5nIGEgcmVxdWVzdCB0byAqLworLyogIHRoZSBwODAyMTEgbW9kdWxlLiAqLworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFpb2N0bF9yZXEKK3sKKwljaGFyIAluYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdOworCWNhZGRyX3QgZGF0YTsKKwlVSU5UMzIJbWFnaWM7CisJVUlOVDE2CWxlbjsKKwlVSU5UMzIJcmVzdWx0OworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFpb2N0bF9yZXFfdDsKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRXh0ZXJuIERlY2xhcmF0aW9ucyAqLworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworCisjZW5kaWYgLyogX1A4MDIxMUlPQ1RMX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1ldGEuaCBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1ldGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2IzZjVhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YS5oCkBAIC0wLDAgKzEsMTY5IEBACisvKiBwODAyMTFtZXRhLmgKKyoKKyogTWFjcm9zLCBjb25zdGFudHMsIHR5cGVzLCBhbmQgZnVuY3MgZm9yIHA4MDIxMSBtZXRhZGF0YQorKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBUaGlzIGZpbGUgZGVjbGFyZXMgc29tZSBvZiB0aGUgY29uc3RhbnRzIGFuZCB0eXBlcyB1c2VkIGluIHZhcmlvdXMKKyogcGFydHMgb2YgdGhlIGxpbnV4LXdsYW4gc3lzdGVtLgorKgorKiBOb3RlczoKKyogICAtIENvbnN0YW50IHZhbHVlcyBhcmUgYWx3YXlzIGluIEhPU1QgYnl0ZSBvcmRlci4KKyoKKyogQWxsIGZ1bmN0aW9ucyBhbmQgc3RhdGljcyBkZWNsYXJlZCBoZXJlIGFyZSBpbXBsZW1lbnRlZCBpbiBwODAyMTF0eXBlcy5jCisqICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1A4MDIxMU1FVEFfSAorI2RlZmluZSBfUDgwMjExTUVUQV9ICisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFByb2plY3QgSW5jbHVkZXMgKi8KKworI2lmbmRlZiBfV0xBTl9DT01QQVRfSAorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIENvbnN0YW50cyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIE1hY3JvcyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIHVzZWQgdG8gZW5zdXJlIGNvbnNpc3RlbnQgbmFtaW5nICovCisvKiAgY29udmVudGlvbnMgZm9yIGFsbCB0aGUgZGlmZmVyZW50IG1ldGFkYXRhIGxpc3RzLiAqLworCisjZGVmaW5lIE1LUkVRTUVUQU5BTUUobmFtZSkJCXA4MDIxMW1ldGFfICMjIHJlcSAjIyBfICMjIG5hbWUKKyNkZWZpbmUgTUtJTkRNRVRBTkFNRShuYW1lKQkJcDgwMjExbWV0YV8gIyMgaW5kICMjIF8gIyMgbmFtZQorI2RlZmluZSBNS01JQk1FVEFOQU1FKG5hbWUpCQlwODAyMTFtZXRhXyAjIyBtaWIgIyMgXyAjIyBuYW1lCisjZGVmaW5lIE1LR1JQTUVUQU5BTUUobmFtZSkJCXA4MDIxMW1ldGFfICMjIGdycCAjIyBfICMjIG5hbWUKKworI2RlZmluZSBNS1JFUU1FVEFTSVpFKG5hbWUpCQlwODAyMTFtZXRhXyAjIyByZXEgIyMgXyAjIyBuYW1lICMjIF8gIyMgc2l6ZQorI2RlZmluZSBNS0lORE1FVEFTSVpFKG5hbWUpCQlwODAyMTFtZXRhXyAjIyBpbmQgIyMgXyAjIyBuYW1lICMjIF8gIyMgc2l6ZQorI2RlZmluZSBNS01JQk1FVEFTSVpFKG5hbWUpCQlwODAyMTFtZXRhXyAjIyBtaWIgIyMgXyAjIyBuYW1lICMjIF8gIyMgc2l6ZQorI2RlZmluZSBNS0dSUE1FVEFTSVpFKG5hbWUpCQlwODAyMTFtZXRhXyAjIyBncnAgIyMgXyAjIyBuYW1lICMjIF8gIyMgc2l6ZQorCisjZGVmaW5lIEdFVE1FVEFTSVpFKGFwdHIpCQkoKiooKFVJTlQzMioqKShhcHRyKSkpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUaGUgZm9sbG93aW5nIGlmZGVmIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBkZWZpbmVzOiAqLworLyogIFA4MDIxMV9OT0lOQ0xVREVTVFJJTkdTIC0gaWYgZGVmaW5lZCwgYWxsIG1ldGFkYXRhIG5hbWUgZmllbGRzICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgZW1wdHkgc3RyaW5ncyAqLworCisjaWZkZWYgUDgwMjExX05PSU5DTFVERVNUUklOR1MKKwkjZGVmaW5lCU1LSVRFTU5BTUUocykJKCIiKQorI2Vsc2UKKwkjZGVmaW5lCU1LSVRFTU5BTUUocykJKHMpCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFR5cGVzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIG1ldGFkYXRhICovCisvKiByZXByZXNlbnRhdGlvbiBvZiBjYXRlZ29yeSBsaXN0IG1ldGFkYXRhLCBncm91cCBsaXN0IG1ldGFkYXRhLCAqLworLyogYW5kIGRhdGEgaXRlbSBtZXRhZGF0YSBmb3IgYm90aCBNaWIgYW5kIE1lc3NhZ2VzLiAqLworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtZXRhCit7CisJY2hhcgkJCSpuYW1lOwkJLyogZGF0YSBpdGVtIG5hbWUgKi8KKwlVSU5UMzIJCQlkaWQ7CQkvKiBwYXJ0aWFsIGRpZCAqLworCVVJTlQzMgkJCWZsYWdzOwkJLyogc2V0IG9mIHZhcmlvdXMgZmxhZyBiaXRzICovCisJVUlOVDMyCQkJbWluOwkJLyogbWluIHZhbHVlIG9mIGEgQk9VTkRFRElOVCAqLworCVVJTlQzMgkJCW1heDsJCS8qIG1heCB2YWx1ZSBvZiBhIEJPVU5ERURJTlQgKi8KKworCVVJTlQzMgkJCW1heGxlbjsJCS8qIG1heGxlbiBvZiBhIE9DVEVUU1RSIG9yIERJU1BMQVlTVFIgKi8KKwlVSU5UMzIJCQltaW5sZW47CQkvKiBtaW5sZW4gb2YgYSBPQ1RFVFNUUiBvciBESVNQTEFZU1RSICovCisJcDgwMjExZW51bV90CQkqZW51bXB0cjsJLyogcHRyIHRvIHRoZSBlbnVtIHR5cGUgZm9yIEVOVU1JTlQgKi8KKwlwODAyMTFfdG90ZXh0X3QJCXRvdGV4dHB0cjsJLyogcHRyIHRvIHRvdGV4dCBjb252ZXJzaW9uIGZ1bmN0aW9uICovCisJcDgwMjExX2Zyb210ZXh0X3QJZnJvbXRleHRwdHI7CS8qIHB0ciB0byB0b3RleHQgY29udmVyc2lvbiBmdW5jdGlvbiAqLworCXA4MDIxMV92YWxpZF90CQl2YWxpZGZ1bnB0cjsJLyogcHRyIHRvIHRvdGV4dCBjb252ZXJzaW9uIGZ1bmN0aW9uICovCit9IHA4MDIxMW1ldGFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZ3JwbGlzdGl0ZW0KK3sKKwljaGFyCQkqbmFtZTsKKwlwODAyMTFtZXRhX3QJKml0ZW1saXN0OworfSBncnBsaXN0aXRlbV90OworCit0eXBlZGVmIHN0cnVjdCBjYXRsaXN0aXRlbQoreworCWNoYXIJCSpuYW1lOworCWdycGxpc3RpdGVtX3QJKmdycGxpc3Q7Cit9IGNhdGxpc3RpdGVtX3Q7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBFeHRlcm4gRGVjbGFyYXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworVUlOVDMyIHA4MDIxMV90ZXh0MmRpZChjYXRsaXN0aXRlbV90ICpjYXRsaXN0LCBjaGFyICpjYXRuYW1lLCBjaGFyICpncnBuYW1lLCBjaGFyICppdGVtbmFtZSk7CitVSU5UMzIgcDgwMjExX3RleHQyY2F0ZGlkKGNhdGxpc3RpdGVtX3QgKmxpc3QsIGNoYXIgKm5hbWUgKTsKK1VJTlQzMiBwODAyMTFfdGV4dDJncnBkaWQoZ3JwbGlzdGl0ZW1fdCAqbGlzdCwgY2hhciAqbmFtZSApOworVUlOVDMyIHA4MDIxMV90ZXh0Mml0ZW1kaWQocDgwMjExbWV0YV90ICpsaXN0LCBjaGFyICpuYW1lICk7CitVSU5UMzIgcDgwMjExX2lzdmFsaWRfZGlkKCBjYXRsaXN0aXRlbV90ICpjYXRsaXN0LCBVSU5UMzIgZGlkICk7CitVSU5UMzIgcDgwMjExX2lzdmFsaWRfY2F0ZGlkKCBjYXRsaXN0aXRlbV90ICpjYXRsaXN0LCBVSU5UMzIgZGlkICk7CitVSU5UMzIgcDgwMjExX2lzdmFsaWRfZ3JwZGlkKCBjYXRsaXN0aXRlbV90ICpjYXRsaXN0LCBVSU5UMzIgZGlkICk7CitVSU5UMzIgcDgwMjExX2lzdmFsaWRfaXRlbWRpZCggY2F0bGlzdGl0ZW1fdCAqY2F0bGlzdCwgVUlOVDMyIGRpZCApOworY2F0bGlzdGl0ZW1fdCAqcDgwMjExX2RpZDJjYXQoIGNhdGxpc3RpdGVtX3QgKmNhdGxpc3QsIFVJTlQzMiBkaWQgKTsKK2dycGxpc3RpdGVtX3QgKnA4MDIxMV9kaWQyZ3JwKCBjYXRsaXN0aXRlbV90ICpjYXRsaXN0LCBVSU5UMzIgZGlkICk7CitwODAyMTFtZXRhX3QgKnA4MDIxMV9kaWQyaXRlbSggY2F0bGlzdGl0ZW1fdCAqY2F0bGlzdCwgVUlOVDMyIGRpZCApOworVUlOVDMyIHA4MDIxMWl0ZW1fbWF4ZGF0YWxlbiggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCApOworVUlOVDMyIHA4MDIxMV9tZXRhbmFtZTJkaWQoc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgY2hhciAqaXRlbW5hbWUpOworVUlOVDMyIHA4MDIxMWl0ZW1fZ2V0b2Zmc2V0KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkICk7CitpbnQgcDgwMjExaXRlbV9nZXR0eXBlKHA4MDIxMW1ldGFfdCAqbWV0YSk7CisKKyNlbmRpZiAvKiBfUDgwMjExTUVUQV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtZXRhZGVmLmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtZXRhZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3ZjQzNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1ldGFkZWYuaApAQCAtMCwwICsxLDI1MjQgQEAKKy8qIFRoaXMgZmlsZSBpcyBHRU5FUkFURUQgQVVUT01BVElDQUxMWS4gIERPIE5PVCBFRElUIE9SIE1PRElGWS4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1A4MDIxMU1LTUVUQURFRl9ICisjZGVmaW5lIF9QODAyMTFNS01FVEFERUZfSAorCisKKyNkZWZpbmUgRElEbXNnX2NhdF9kb3QxMXJlcSBcCisJCQlQODAyMTFESURfTUtTRUNUSU9OKDEpCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9taWJnZXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX21pYmdldF9taWJhdHRyaWJ1dGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfbWliZ2V0X3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfbWlic2V0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikpCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9taWJzZXRfbWliYXR0cmlidXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX21pYnNldF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3Bvd2VybWdtdCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfcG93ZXJtZ210X3Bvd2VybWdtdG1vZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfcG93ZXJtZ210X3dha2V1cCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9wb3dlcm1nbXRfcmVjZWl2ZWR0aW1zIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3Bvd2VybWdtdF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW4gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fYnNzdHlwZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX2Jzc2lkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fc3NpZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3NjYW50eXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcHJvYmVkZWxheSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX2NoYW5uZWxsaXN0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fbWluY2hhbm5lbHRpbWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9tYXhjaGFubmVsdGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9udW1ic3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTApIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fYXBwZW5kIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19ic3NpbmRleCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc2lnbmFsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19ub2lzZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfYnNzaWQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX3NzaWQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2Jzc3R5cGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2JlYWNvbnBlcmlvZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfZHRpbXBlcmlvZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfdGltZXN0YW1wIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfbG9jYWx0aW1lIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfZmhkd2VsbHRpbWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19maGhvcHNldCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2ZoaG9wcGF0dGVybiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2ZoaG9waW5kZXggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19kc2NoYW5uZWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19jZnBjb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2NmcHBlcmlvZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2NmcG1heGR1cmF0aW9uIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfY2ZwZHVycmVtYWluaW5nIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfaWJzc2F0aW13aW5kb3cgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19jZnBvbGxhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfY2Zwb2xscmVxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfcHJpdmFjeSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2Jhc2ljcmF0ZTEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19iYXNpY3JhdGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI2KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfYmFzaWNyYXRlMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2Jhc2ljcmF0ZTQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjgpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19iYXNpY3JhdGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfYmFzaWNyYXRlNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzMCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzX2Jhc2ljcmF0ZTcgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c19iYXNpY3JhdGU4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGUxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGUzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGU0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM2KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM3KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGU2IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGU3IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDM5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfc3VwcHJhdGU4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikpCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX2Jzc2lkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fam9pbmZhaWx1cmV0aW1lb3V0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fYmFzaWNyYXRlMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX2Jhc2ljcmF0ZTIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfam9pbl9iYXNpY3JhdGUzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fYmFzaWNyYXRlNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX2Jhc2ljcmF0ZTUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfam9pbl9iYXNpY3JhdGU2IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fYmFzaWNyYXRlNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX2Jhc2ljcmF0ZTggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTApIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fb3BlcmF0aW9uYWxyYXRlMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfam9pbl9vcGVyYXRpb25hbHJhdGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX29wZXJhdGlvbmFscmF0ZTMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fb3BlcmF0aW9uYWxyYXRlNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfam9pbl9vcGVyYXRpb25hbHJhdGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX29wZXJhdGlvbmFscmF0ZTYgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2pvaW5fb3BlcmF0aW9uYWxyYXRlNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfam9pbl9vcGVyYXRpb25hbHJhdGU4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9qb2luX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTkpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2F1dGhlbnRpY2F0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXV0aGVudGljYXRlX3BlZXJzdGFhZGRyZXNzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2F1dGhlbnRpY2F0ZV9hdXRoZW50aWNhdGlvbnR5cGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXV0aGVudGljYXRlX2F1dGhlbnRpY2F0aW9uZmFpbHVyZXRpbWVvdXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXV0aGVudGljYXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfZGVhdXRoZW50aWNhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2RlYXV0aGVudGljYXRlX3BlZXJzdGFhZGRyZXNzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2RlYXV0aGVudGljYXRlX3JlYXNvbmNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfZGVhdXRoZW50aWNhdGVfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDgpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9hc3NvY2lhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg5KSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2Fzc29jaWF0ZV9wZWVyc3RhYWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9hc3NvY2lhdGVfYXNzb2NpYXRlZmFpbHVyZXRpbWVvdXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg5KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXNzb2NpYXRlX2NmcG9sbGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg5KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXNzb2NpYXRlX2NmcG9sbHJlcSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9hc3NvY2lhdGVfcHJpdmFjeSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9hc3NvY2lhdGVfbGlzdGVuaW50ZXJ2YWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg5KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfYXNzb2NpYXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg5KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfcmVhc3NvY2lhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkpCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9yZWFzc29jaWF0ZV9uZXdhcGFkZHJlc3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlX3JlYXNzb2NpYXRlZmFpbHVyZXRpbWVvdXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlX2NmcG9sbGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlX2NmcG9sbHJlcSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEwKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfcmVhc3NvY2lhdGVfcHJpdmFjeSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEwKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfcmVhc3NvY2lhdGVfbGlzdGVuaW50ZXJ2YWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2Rpc2Fzc29jaWF0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDExKSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2Rpc2Fzc29jaWF0ZV9wZWVyc3RhYWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDExKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfZGlzYXNzb2NpYXRlX3JlYXNvbmNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX2Rpc2Fzc29jaWF0ZV9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9yZXNldCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEyKSkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3Jlc2V0X3NldGRlZmF1bHRtaWIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3Jlc2V0X21hY2FkZHJlc3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3Jlc2V0X3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfc3NpZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfYnNzdHlwZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfYmVhY29ucGVyaW9kIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9kdGltcGVyaW9kIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9jZnBwZXJpb2QgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2NmcG1heGR1cmF0aW9uIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9maGR3ZWxsdGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfZmhob3BzZXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2ZoaG9wcGF0dGVybiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfZHNjaGFubmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfaWJzc2F0aW13aW5kb3cgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9wcm9iZWRlbGF5IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfY2Zwb2xsYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2NmcG9sbHJlcSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2Jhc2ljcmF0ZTEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9iYXNpY3JhdGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfYmFzaWNyYXRlMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTcpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2Jhc2ljcmF0ZTQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9iYXNpY3JhdGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfYmFzaWNyYXRlNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjApIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X2Jhc2ljcmF0ZTcgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9iYXNpY3JhdGU4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfb3BlcmF0aW9uYWxyYXRlMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X29wZXJhdGlvbmFscmF0ZTIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9vcGVyYXRpb25hbHJhdGUzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyNSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfb3BlcmF0aW9uYWxyYXRlNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X29wZXJhdGlvbmFscmF0ZTUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI3KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9vcGVyYXRpb25hbHJhdGU2IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyOCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFyZXFfc3RhcnRfb3BlcmF0aW9uYWxyYXRlNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjkpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExcmVxX3N0YXJ0X29wZXJhdGlvbmFscmF0ZTggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMXJlcV9zdGFydF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfY2F0X2RvdDExaW5kIFwKKwkJCVA4MDIxMURJRF9NS1NFQ1RJT04oMikKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX2F1dGhlbnRpY2F0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfYXV0aGVudGljYXRlX3BlZXJzdGFhZGRyZXNzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX2F1dGhlbnRpY2F0ZV9hdXRoZW50aWNhdGlvbnR5cGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfZGVhdXRoZW50aWNhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSkKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX2RlYXV0aGVudGljYXRlX3BlZXJzdGFhZGRyZXNzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX2RlYXV0aGVudGljYXRlX3JlYXNvbmNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfYXNzb2NpYXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykpCisjZGVmaW5lIERJRG1zZ19kb3QxMWluZF9hc3NvY2lhdGVfcGVlcnN0YWFkZHJlc3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfYXNzb2NpYXRlX2FpZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMWluZF9yZWFzc29jaWF0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfcmVhc3NvY2lhdGVfcGVlcnN0YWFkZHJlc3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfZG90MTFpbmRfcmVhc3NvY2lhdGVfYWlkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX3JlYXNzb2NpYXRlX29sZGFwYWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMWluZF9kaXNhc3NvY2lhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSkKKyNkZWZpbmUgRElEbXNnX2RvdDExaW5kX2Rpc2Fzc29jaWF0ZV9wZWVyc3RhYWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19kb3QxMWluZF9kaXNhc3NvY2lhdGVfcmVhc29uY29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19jYXRfbG54cmVxIFwKKwkJCVA4MDIxMURJRF9NS1NFQ1RJT04oMykKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9pZnN0YXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkpCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfaWZzdGF0ZV9pZnN0YXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9pZnN0YXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZl9lbmFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZl9jaGFubmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV93bGFuc25pZmZfcHJpc21oZWFkZXIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZl93bGFuaGVhZGVyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV93bGFuc25pZmZfa2VlcHdlcGZsYWdzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV93bGFuc25pZmZfc3RyaXBmY3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZl9wYWNrZXRfdHJ1bmMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX3dsYW5zbmlmZl9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9ob3N0d2VwIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykpCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfaG9zdHdlcF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9ob3N0d2VwX2RlY3J5cHQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX2hvc3R3ZXBfZW5jcnlwdCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfY29tbXNxdWFsaXR5IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkpCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfY29tbXNxdWFsaXR5X3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX2NvbW1zcXVhbGl0eV9kYm0gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX2NvbW1zcXVhbGl0eV9saW5rIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9jb21tc3F1YWxpdHlfbGV2ZWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfbG54cmVxX2NvbW1zcXVhbGl0eV9ub2lzZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfYXV0b2pvaW4gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9hdXRvam9pbl9zc2lkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueHJlcV9hdXRvam9pbl9hdXRodHlwZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhyZXFfYXV0b2pvaW5fcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19jYXRfbG54aW5kIFwKKwkJCVA4MDIxMURJRF9NS1NFQ1RJT04oNCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpKQorI2RlZmluZSBESURtc2dfbG54aW5kX3dsYW5zbmlmZnJtX2hvc3R0aW1lIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybV9tYWN0aW1lIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybV9jaGFubmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybV9yc3NpIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybV9zcSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fc2lnbmFsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2xueGluZF93bGFuc25pZmZybV9ub2lzZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fcmF0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1faXN0eCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhpbmRfd2xhbnNuaWZmcm1fZnJtbGVuIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19sbnhpbmRfcm9hbSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpKQorI2RlZmluZSBESURtc2dfbG54aW5kX3JvYW1fcmVhc29uIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX2NhdF9wMnJlcSBcCisJCQlQODAyMTFESURfTUtTRUNUSU9OKDUpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX2Jzc2lkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fYmFzaWNyYXRlMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX2Jhc2ljcmF0ZTIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9iYXNpY3JhdGUzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fYmFzaWNyYXRlNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX2Jhc2ljcmF0ZTUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9iYXNpY3JhdGU2IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fYmFzaWNyYXRlNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX2Jhc2ljcmF0ZTggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9vcGVyYXRpb25hbHJhdGUxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX29wZXJhdGlvbmFscmF0ZTIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fb3BlcmF0aW9uYWxyYXRlMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9vcGVyYXRpb25hbHJhdGU0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX29wZXJhdGlvbmFscmF0ZTUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fb3BlcmF0aW9uYWxyYXRlNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9vcGVyYXRpb25hbHJhdGU3IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE2KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX29wZXJhdGlvbmFscmF0ZTggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTcpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2pvaW5fc3NpZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfam9pbl9jaGFubmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE5KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX2F1dGh0eXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIwKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9qb2luX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JlYWRwZGEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JlYWRwZGFfcGRhIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JlYWRwZGFfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yZWFkY2lzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yZWFkY2lzX2NpcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yZWFkY2lzX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZV9lbmFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZV9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2F1eHBvcnRfcmVhZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF9yZWFkX2FkZHIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF9yZWFkX2xlbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9hdXhwb3J0X3JlYWRfZGF0YSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9hdXhwb3J0X3JlYWRfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9hdXhwb3J0X3dyaXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9hdXhwb3J0X3dyaXRlX2FkZHIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF93cml0ZV9sZW4gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfYXV4cG9ydF93cml0ZV9kYXRhIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2F1eHBvcnRfd3JpdGVfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9sb3dfbGV2ZWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2xvd19sZXZlbF9jb21tYW5kIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2xvd19sZXZlbF9wYXJhbTAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfbG93X2xldmVsX3BhcmFtMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9sb3dfbGV2ZWxfcGFyYW0yIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2xvd19sZXZlbF9yZXNwMCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9sb3dfbGV2ZWxfcmVzcDEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfbG93X2xldmVsX3Jlc3AyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2xvd19sZXZlbF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3Rlc3RfY29tbWFuZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDgpKQorI2RlZmluZSBESURtc2dfcDJyZXFfdGVzdF9jb21tYW5kX3Rlc3Rjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3Rlc3RfY29tbWFuZF90ZXN0cGFyYW0gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfdGVzdF9jb21tYW5kX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfdGVzdF9jb21tYW5kX3N0YXR1cyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDgpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV90ZXN0X2NvbW1hbmRfcmVzcDAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfdGVzdF9jb21tYW5kX3Jlc3AxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3Rlc3RfY29tbWFuZF9yZXNwMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDgpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9tbWlfcmVhZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpKQorI2RlZmluZSBESURtc2dfcDJyZXFfbW1pX3JlYWRfYWRkciBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9tbWlfcmVhZF92YWx1ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9tbWlfcmVhZF9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX21taV93cml0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEwKSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX21taV93cml0ZV9hZGRyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTApIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9tbWlfd3JpdGVfZGF0YSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEwKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfbW1pX3dyaXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JhbWRsX3N0YXRlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTEpKQorI2RlZmluZSBESURtc2dfcDJyZXFfcmFtZGxfc3RhdGVfZW5hYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yYW1kbF9zdGF0ZV9leGVhZGRyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yYW1kbF9zdGF0ZV9yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9yYW1kbF93cml0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEyKSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JhbWRsX3dyaXRlX2FkZHIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX3JhbWRsX3dyaXRlX2xlbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfcmFtZGxfd3JpdGVfZGF0YSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfcmFtZGxfd3JpdGVfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfZmxhc2hkbF9zdGF0ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEzKSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2ZsYXNoZGxfc3RhdGVfZW5hYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9mbGFzaGRsX3N0YXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNCkpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9mbGFzaGRsX3dyaXRlX2FkZHIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGVfbGVuIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9mbGFzaGRsX3dyaXRlX2RhdGEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGVfcmVzdWx0Y29kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDE0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfbW1fc3RhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNSkpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9tbV9zdGF0ZV9lbmFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX21tX3N0YXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2R1bXBfc3RhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNikpCisjZGVmaW5lIERJRG1zZ19wMnJlcV9kdW1wX3N0YXRlX2xldmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9kdW1wX3N0YXRlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mbyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDE3KSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19jaGFubmVsbGlzdCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDE3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfY2hhbm5lbF9pbmZvX2NoYW5uZWxkd2VsbHRpbWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRjb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9jaGFubmVsX2luZm9fbnVtY2hpbmZvIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9jaGFubmVsX2luZm9fcmVzdWx0cyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDE4KSkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzX2NoYW5uZWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzX2F2Z25vaXNlbGV2ZWwgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzX3BlYWtub2lzZWxldmVsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTgpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MDAwMDAwMDApCisjZGVmaW5lIERJRG1zZ19wMnJlcV9jaGFubmVsX2luZm9fcmVzdWx0c19ic3NhY3RpdmUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzX3BjZmFjdGl2ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDE4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDAwMDAwMDAwKQorI2RlZmluZSBESURtc2dfcDJyZXFfZW5hYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMTkpKQorI2RlZmluZSBESURtc2dfcDJyZXFfZW5hYmxlX3Jlc3VsdGNvZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxOSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgwMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2NhdF9kb3QxMXNtdCBcCisJCQlQODAyMTFESURfTUtTRUNUSU9OKDEpCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9wODAyMTFUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfcDgwMjExVGFibGVfcDgwMjExX2lmc3RhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExU3RhdGlvbklEIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExTWVkaXVtT2NjdXBhbmN5TGltaXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFDRlBvbGxhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQ0ZQUGVyaW9kIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQ0ZQTWF4RHVyYXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFBdXRoZW50aWNhdGlvblJlc3BvbnNlVGltZU91dCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMVByaXZhY3lPcHRpb25JbXBsZW1lbnRlZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMVBvd2VyTWFuYWdlbWVudE1vZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFEZXNpcmVkU1NJRCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMURlc2lyZWRCU1NUeXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEwKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMU9wZXJhdGlvbmFsUmF0ZVNldCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFCZWFjb25QZXJpb2QgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExRFRJTVBlcmlvZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFBc3NvY2lhdGlvblJlc3BvbnNlVGltZU91dCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFEaXNhc3NvY2lhdGVSZWFzb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTUpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExRGlzYXNzb2NpYXRlU3RhdGlvbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFEZWF1dGhlbnRpY2F0ZVJlYXNvbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFEZWF1dGhlbnRpY2F0ZVN0YXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTgpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQXV0aGVudGljYXRlRmFpbFN0YXR1cyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFBdXRoZW50aWNhdGVGYWlsU3RhdGlvbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZV9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTQwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zRW5hYmxlMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG0yIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxNDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobTMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDE0MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZV9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc0VuYWJsZTMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZV9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MTQwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zRW5hYmxlNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG01IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDkpIHwgMHgxNDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEwKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG02IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MTQwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zRW5hYmxlNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMikgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFXRVBEZWZhdWx0S2V5c1RhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkpCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MGMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MGMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MGMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MGMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUEtleU1hcHBpbmdzVGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExV0VQS2V5TWFwcGluZ3NUYWJsZV9kb3QxMVdFUEtleU1hcHBpbmdJbmRleCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUEtleU1hcHBpbmdzVGFibGVfZG90MTFXRVBLZXlNYXBwaW5nQWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUEtleU1hcHBpbmdzVGFibGVfZG90MTFXRVBLZXlNYXBwaW5nV0VQT24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFXRVBLZXlNYXBwaW5nc1RhYmxlX2RvdDExV0VQS2V5TWFwcGluZ1ZhbHVlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExUHJpdmFjeVRhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikpCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVByaXZhY3lJbnZva2VkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExUHJpdmFjeVRhYmxlX2RvdDExV0VQRGVmYXVsdEtleUlEIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExc210X2RvdDExUHJpdmFjeVRhYmxlX2RvdDExV0VQS2V5TWFwcGluZ0xlbmd0aCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMUV4Y2x1ZGVVbmVuY3J5cHRlZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVdFUElDVkVycm9yQ291bnQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFXRVBFeGNsdWRlZENvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDEpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2NhdF9kb3QxMW1hYyBcCisJCQlQODAyMTFESURfTUtTRUNUSU9OKDIpCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkpCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExTUFDQWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExUlRTVGhyZXNob2xkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFTaG9ydFJldHJ5TGltaXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMUxvbmdSZXRyeUxpbWl0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFGcmFnbWVudGF0aW9uVGhyZXNob2xkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFNYXhUcmFuc21pdE1TRFVMaWZldGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExTWF4UmVjZWl2ZUxpZmV0aW1lIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFNYW51ZmFjdHVyZXJJRCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExUHJvZHVjdElEIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDkpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExVHJhbnNtaXR0ZWRGcmFnbWVudENvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMU11bHRpY2FzdFRyYW5zbWl0dGVkRnJhbWVDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFGYWlsZWRDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFSZXRyeUNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMU11bHRpcGxlUmV0cnlDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFGcmFtZUR1cGxpY2F0ZUNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVJUU1N1Y2Nlc3NDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFSVFNGYWlsdXJlQ291bnQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExQUNLRmFpbHVyZUNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDkpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVJlY2VpdmVkRnJhZ21lbnRDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExTXVsdGljYXN0UmVjZWl2ZWRGcmFtZUNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFGQ1NFcnJvckNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEyKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFUcmFuc21pdHRlZEZyYW1lQ291bnQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVdFUFVuZGVjcnlwdGFibGVDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykpCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzNSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzOCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg4KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzOSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTApIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMSkgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEyKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTMpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE1KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTYgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTYpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxNyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE4KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTkgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTkpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyMCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMCkgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczIxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIxKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjIpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMykgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI0KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjUpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyNikgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI3IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI3KSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjgpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyOSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyOSkgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczMwIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDIpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMwKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMzEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMikgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzEpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MzMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzMikgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfY2F0X2RvdDExcGh5IFwKKwkJCVA4MDIxMURJRF9NS1NFQ1RJT04oMykKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGVfZG90MTFQSFlUeXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGVfZG90MTFDdXJyZW50UmVnRG9tYWluIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGVfZG90MTFUZW1wVHlwZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeU9wZXJhdGlvblRhYmxlX2RvdDExQ2hhbm5lbEFnaWxpdHlQcmVzZW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGVfZG90MTFDaGFubmVsQWdpbGl0eUVuYWJsZWQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlPcGVyYXRpb25UYWJsZV9kb3QxMVNob3J0UHJlYW1ibGVFbmFibGVkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5QW50ZW5uYVRhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikpCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUFudGVubmFUYWJsZV9kb3QxMUN1cnJlbnRUeEFudGVubmEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlBbnRlbm5hVGFibGVfZG90MTFEaXZlcnNpdHlTdXBwb3J0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5QW50ZW5uYVRhYmxlX2RvdDExQ3VycmVudFJ4QW50ZW5uYSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFOdW1iZXJTdXBwb3J0ZWRQb3dlckxldmVscyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWwyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWw1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDcgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWw4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDkpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExQ3VycmVudFR4UG93ZXJMZXZlbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlGSFNTVGFibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5RkhTU1RhYmxlX2RvdDExSG9wVGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRDaGFubmVsTnVtYmVyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5RkhTU1RhYmxlX2RvdDExTWF4RHdlbGxUaW1lIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5RkhTU1RhYmxlX2RvdDExQ3VycmVudER3ZWxsVGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRTZXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlGSFNTVGFibGVfZG90MTFDdXJyZW50UGF0dGVybiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRJbmRleCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg3KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlEU1NTVGFibGVfZG90MTFDdXJyZW50Q2hhbm5lbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUNDQU1vZGVTdXBwb3J0ZWQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlEU1NTVGFibGVfZG90MTFDdXJyZW50Q0NBTW9kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUVEVGhyZXNob2xkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5RFNTU1RhYmxlX2RvdDExU2hvcnRQcmVhbWJsZU9wdGlvbkltcGxlbWVudGVkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5RFNTU1RhYmxlX2RvdDExUEJDQ09wdGlvbkltcGxlbWVudGVkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5SVJUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlJUlRhYmxlX2RvdDExQ0NBV2F0Y2hkb2dUaW1lck1heCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUlSVGFibGVfZG90MTFDQ0FXYXRjaGRvZ0NvdW50TWF4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUGh5SVJUYWJsZV9kb3QxMUNDQVdhdGNoZG9nVGltZXJNaW4gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlJUlRhYmxlX2RvdDExQ0NBV2F0Y2hkb2dDb3VudE1pbiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVJlZ0RvbWFpbnNTdXBwb3J0ZWRUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFSZWdEb21haW5zU3VwcG9ydGVkVGFibGVfZG90MTFSZWdEb21haW5zU3VwcG9ydEluZGV4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExUmVnRG9tYWluc1N1cHBvcnRlZFRhYmxlX2RvdDExUmVnRG9tYWluc1N1cHBvcnRWYWx1ZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTQwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMUFudGVubmFzTGlzdFRhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkpCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMUFudGVubmFzTGlzdFRhYmxlX2RvdDExQW50ZW5uYUxpc3RJbmRleCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDgpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMUFudGVubmFzTGlzdFRhYmxlX2RvdDExU3VwcG9ydGVkVHhBbnRlbm5hIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExQW50ZW5uYXNMaXN0VGFibGVfZG90MTFTdXBwb3J0ZWRSeEFudGVubmEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg4KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDFjMDAwMDAwKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFBbnRlbm5hc0xpc3RUYWJsZV9kb3QxMURpdmVyc2l0eVNlbGVjdGlvblJ4IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzVHhUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpKQorI2RlZmluZSBESURtaWJfZG90MTFwaHlfZG90MTFTdXBwb3J0ZWREYXRhUmF0ZXNUeFRhYmxlX2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzVHhJbmRleCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDkpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MWMwMDAwMDApCisjZGVmaW5lIERJRG1pYl9kb3QxMXBoeV9kb3QxMVN1cHBvcnRlZERhdGFSYXRlc1R4VGFibGVfZG90MTFTdXBwb3J0ZWREYXRhUmF0ZXNUeFZhbHVlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDMpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoOSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxNDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzUnhUYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTigzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEwKSkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzUnhUYWJsZV9kb3QxMVN1cHBvcnRlZERhdGFSYXRlc1J4SW5kZXggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxYzAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2RvdDExcGh5X2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzUnhUYWJsZV9kb3QxMVN1cHBvcnRlZERhdGFSYXRlc1J4VmFsdWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oMykgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxMCkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIpIHwgMHgxNDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2NhdF9sbnggXAorCQkJUDgwMjExRElEX01LU0VDVElPTig0KQorI2RlZmluZSBESURtaWJfbG54X2xueENvbmZpZ1RhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkpCisjZGVmaW5lIERJRG1pYl9sbnhfbG54Q29uZmlnVGFibGVfbG54UlNOQUlFIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDQpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX2NhdF9wMiBcCisJCQlQODAyMTFESURfTUtTRUNUSU9OKDUpCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkpCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlX3AyTU1UeCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlX3AyRWFybHlCZWFjb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJUYWJsZV9wMlJlY2VpdmVkRnJhbWVTdGF0aXN0aWNzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyVGFibGVfcDJDb21tdW5pY2F0aW9uVGFsbGllcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlX3AyQXV0aGVudGljYXRlZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlX3AyQXNzb2NpYXRlZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlRhYmxlX3AyUG93ZXJTYXZlVXNlckNvdW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyVGFibGVfcDJDb21tZW50IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyVGFibGVfcDJBY2Nlc3NNb2RlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDkpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyVGFibGVfcDJBY2Nlc3NBbGxvdyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDEpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJUYWJsZV9wMkFjY2Vzc0RlbnkgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyVGFibGVfcDJDaGFubmVsSW5mb1Jlc3VsdHMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgxKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTIpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikpCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlBvcnRUeXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duTUFDQWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkRlc2lyZWRTU0lEIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duQ2hhbm5lbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk93blNTSUQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZPd25BVElNV2luZG93IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mU3lzdGVtU2NhbGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZNYXhEYXRhTGVuZ3RoIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0RTQWRkcmVzcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg5KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlBNRW5hYmxlZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZQTUVQUyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZNdWx0aWNhc3RSZWNlaXZlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEyKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk1heFNsZWVwRHVyYXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTMpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUE1Ib2xkb3ZlckR1cmF0aW9uIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk93bk5hbWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTUpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duRFRJTVBlcmlvZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzNSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRFNBZGRyZXNzNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZNdWx0aWNhc3RQTUJ1ZmZlcmluZyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZXRVBEZWZhdWx0S2V5SUQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjQpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRGVmYXVsdEtleTAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjUpIHwgMHgwODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRGVmYXVsdEtleTEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjYpIHwgMHgwODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRGVmYXVsdEtleTIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjcpIHwgMHgwODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRGVmYXVsdEtleTMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjgpIHwgMHgwODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRmxhZ3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjkpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQXV0aGVudGljYXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzApIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mTWF4QXNzb2NpYXRlZFN0YXRpb25zIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlR4Q29udHJvbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZSb2FtaW5nTW9kZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZIb3N0QXV0aGVudGljYXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzQpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUmN2Q3JjRXJyb3IgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzUpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQWx0UmV0cnlDb3VudCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzNikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZCZWFjb25JbnRlcnZhbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzNykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZNZWRpdW1PY2N1cGFuY3lMaW1pdCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzOCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZDRlBQZXJpb2QgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzkpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQ0ZQTWF4RHVyYXRpb24gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNDApIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQ0ZQRmxhZ3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNDEpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mU1RBUENGSW5mbyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0MikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZQcmlvcml0eVFVc2FnZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0MykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZUSU1DdHJsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQ0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlRoaXJ0eTJUYWxseSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0NSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZFbmhTZWN1cml0eSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0NikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZTaG9ydFByZWFtYmxlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDQ3KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkV4Y2x1ZGVMb25nUHJlYW1ibGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgyKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNDgpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQXV0aGVudGljYXRpb25Sc3BUTyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDIpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0OSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZCYXNpY1JhdGVzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUwKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlN1cHBvcnRlZFJhdGVzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSkKKyNkZWZpbmUgRElEbWliX3AyX3AyRHluYW1pY19wMkNyZWF0ZUlCU1MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWNfcDJSVFNUaHJlc2hvbGQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWNfcDJQcm9taXNjdW91c01vZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDEgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDIgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTApIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyRHluYW1pY19wMkZyYWdtZW50YXRpb25UaHJlc2hvbGQ1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWNfcDJGcmFnbWVudGF0aW9uVGhyZXNob2xkNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkMCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkMSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkMyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkNCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNykgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkNSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOCkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkNiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbDAgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjApIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2wxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWNfcDJUeFJhdGVDb250cm9sMiBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMikgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbDMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjMpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2w0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoMykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI0KSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMkR5bmFtaWNfcDJUeFJhdGVDb250cm9sNSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDMpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyNSkgfCAweDE4MDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbDYgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCgzKSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjYpIHwgMHgxODAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyQmVoYXZpb3IgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg0KSkKKyNkZWZpbmUgRElEbWliX3AyX3AyQmVoYXZpb3JfcDJUaWNrVGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDQpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTgwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk5JQyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJNYXhMb2FkVGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk5JQ19wMkRMQnVmZmVyUGFnZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk5JQ19wMkRMQnVmZmVyT2Zmc2V0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDMpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyRExCdWZmZXJMZW5ndGggXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJQUklJZGVudGl0eSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk5JQ19wMlBSSVN1cFJhbmdlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyQ0ZJQWN0UmFuZ2VzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyTklDU2VyaWFsTnVtYmVyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyTklDSWRlbnRpdHkgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJNRklTdXBSYW5nZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJDRklTdXBSYW5nZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJDaGFubmVsTGlzdCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJSZWd1bGF0b3J5RG9tYWlucyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxMykgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJUZW1wVHlwZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJTVEFJZGVudGl0eSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJTVEFTdXBSYW5nZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJNRklBY3RSYW5nZXMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyU1RBQ0ZJQWN0UmFuZ2VzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNSkgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE4KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk5JQ19wMkJ1aWxkU2VxdWVuY2UgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTkpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyUHJpbWFyeUZXSUQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjApIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTklDX3AyU2Vjb25kYXJ5RldJRCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDUpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJOSUNfcDJUZXJ0aWFyeUZXSUQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjIpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikpCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMlBvcnRTdGF0dXMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNQUNfcDJDdXJyZW50U1NJRCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRCU1NJRCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkNvbW1zUXVhbGl0eSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg0KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkNvbW1zUXVhbGl0eUNRIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDUpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyQ29tbXNRdWFsaXR5QVNMIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDYpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyQ29tbXNRdWFsaXR5QU5MIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyZGJtQ29tbXNRdWFsaXR5IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDgpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyZGJtQ29tbXNRdWFsaXR5Q1EgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oOSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNQUNfcDJkYm1Db21tc1F1YWxpdHlBU0wgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTApIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyZGJtQ29tbXNRdWFsaXR5QU5MIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDExKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTIpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudEJlYWNvbkludGVydmFsIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMlN0YUN1cnJlbnRTY2FsZVRocmVzaG9sZHMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTQpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyQVBDdXJyZW50U2NhbGVUaHJlc2hvbGRzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDE1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMlByb3RvY29sUnNwVGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxNikgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNQUNfcDJTaG9ydFJldHJ5TGltaXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTcpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyTG9uZ1JldHJ5TGltaXQgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMTgpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyTWF4VHJhbnNtaXRMaWZldGltZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgxOSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNQUNfcDJNYXhSZWNlaXZlTGlmZXRpbWUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjApIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyQ0ZQb2xsYWJsZSBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDYpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyMSkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNQUNfcDJBdXRoZW50aWNhdGlvbkFsZ29yaXRobXMgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMjIpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTUFDX3AyUHJpdmFjeU9wdGlvbkltcGxlbWVudGVkIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDIzKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGUxIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI0KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGUyIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGUzIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI2KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGU0IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI3KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGU1IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI4KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGU2IFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNikgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDI5KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1BQ19wMk93bk1BQ0FkZHJlc3MgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg2KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMzApIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTW9kZW0gXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSkKKyNkZWZpbmUgRElEbWliX3AyX3AyTW9kZW1fcDJQSFlUeXBlIFwKKwkJCShQODAyMTFESURfTUtTRUNUSU9OKDUpIHwgXAorCQkJUDgwMjExRElEX01LR1JPVVAoNykgfCBcCisJCQlQODAyMTFESURfTUtJVEVNKDEpIHwgMHgxMDAwMDAwMCkKKyNkZWZpbmUgRElEbWliX3AyX3AyTW9kZW1fcDJDdXJyZW50Q2hhbm5lbCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSgyKSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1vZGVtX3AyQ3VycmVudFBvd2VyU3RhdGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oMykgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNb2RlbV9wMkNDQU1vZGUgXAorCQkJKFA4MDIxMURJRF9NS1NFQ1RJT04oNSkgfCBcCisJCQlQODAyMTFESURfTUtHUk9VUCg3KSB8IFwKKwkJCVA4MDIxMURJRF9NS0lURU0oNCkgfCAweDEwMDAwMDAwKQorI2RlZmluZSBESURtaWJfcDJfcDJNb2RlbV9wMlN1cHBvcnRlZERhdGFSYXRlcyBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg1KSB8IDB4MTAwMDAwMDApCisjZGVmaW5lIERJRG1pYl9wMl9wMk1vZGVtX3AyVHhQb3dlck1heCBcCisJCQkoUDgwMjExRElEX01LU0VDVElPTig1KSB8IFwKKwkJCVA4MDIxMURJRF9NS0dST1VQKDcpIHwgXAorCQkJUDgwMjExRElEX01LSVRFTSg2KSB8IDB4MTgwMDAwMDApCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1ldGFtaWIuaCBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1ldGFtaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTg2N2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YW1pYi5oCkBAIC0wLDAgKzEsMTA1IEBACisvKiBwODAyMTFtZXRhbWliLmgKKyoKKyogTWFjcm9zLCBjb25zdCwgdHlwZXMsIGFuZCBmdW5jcyBmb3IgcDgwMjExIG1pYiBtZXRhZGF0YQorKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBUaGlzIGZpbGUgZGVjbGFyZXMgc29tZSBvZiB0aGUgY29uc3RhbnRzIGFuZCB0eXBlcyB1c2VkIGluIHZhcmlvdXMKKyogcGFydHMgb2YgdGhlIGxpbnV4LXdsYW4gc3lzdGVtLgorKgorKiBOb3RlczoKKyogICAtIENvbnN0YW50IHZhbHVlcyBhcmUgYWx3YXlzIGluIEhPU1QgYnl0ZSBvcmRlci4KKyoKKyogQWxsIGZ1bmN0aW9ucyBhbmQgc3RhdGljcyBkZWNsYXJlZCBoZXJlIGFyZSBpbXBsZW1lbnRlZCBpbiBwODAyMTF0eXBlcy5jCisqICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1A4MDIxMU1FVEFNSUJfSAorI2RlZmluZSBfUDgwMjExTUVUQU1JQl9ICisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFByb2plY3QgSW5jbHVkZXMgKi8KKworI2lmbmRlZiBfV0xBTl9DT01QQVRfSAorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIENvbnN0YW50cyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIE1hY3JvcyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFR5cGVzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRXh0ZXJuIERlY2xhcmF0aW9ucyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogVGhlIGZvbGxvd2luZyBpcyB0aGUgZXh0ZXJuYWwgZGVjbGFyYXRpb24gZm9yIHRoZSBtaWIgKi8KKy8qIGNhdGVnb3J5IG1ldGFkYXRhIGxpc3QgKi8KKworZXh0ZXJuIGNhdGxpc3RpdGVtX3QgbWliX2NhdGxpc3RbXTsKK2V4dGVybiBVSU5UMzIgbWliX2NhdGxpc3Rfc2l6ZTsKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisjZW5kaWYgLyogX1A4MDIxMU1FVEFNSUJfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YW1zZy5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YW1zZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNmRmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtZXRhbXNnLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qIHA4MDIxMW1ldGFtc2cuaAorKgorKiBNYWNyb3MsIGNvbnN0LCB0eXBlcywgYW5kIGZ1bmNzIGZvciBwODAyMTEgbXNnIG1ldGFkYXRhCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBkZWNsYXJlcyBzb21lIG9mIHRoZSBjb25zdGFudHMgYW5kIHR5cGVzIHVzZWQgaW4gdmFyaW91cworKiBwYXJ0cyBvZiB0aGUgbGludXgtd2xhbiBzeXN0ZW0uCisqCisqIE5vdGVzOgorKiAgIC0gQ29uc3RhbnQgdmFsdWVzIGFyZSBhbHdheXMgaW4gSE9TVCBieXRlIG9yZGVyLgorKgorKiBBbGwgZnVuY3Rpb25zIGFuZCBzdGF0aWNzIGRlY2xhcmVkIGhlcmUgYXJlIGltcGxlbWVudGVkIGluIHA4MDIxMXR5cGVzLmMKKyogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworI2lmbmRlZiBfUDgwMjExTUVUQU1TR19ICisjZGVmaW5lIF9QODAyMTFNRVRBTVNHX0gKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFN5c3RlbSBJbmNsdWRlcyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaWZuZGVmIF9XTEFOX0NPTVBBVF9ICisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29uc3RhbnRzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTWFjcm9zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVHlwZXMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBFeHRlcm4gRGVjbGFyYXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBleHRlcm5hbCBkZWNsYXJhdGlvbiBmb3IgdGhlIG1lc3NhZ2UgKi8KKy8qIGNhdGVnb3J5IG1ldGFkYXRhIGxpc3QgKi8KKworZXh0ZXJuIGNhdGxpc3RpdGVtX3QgbXNnX2NhdGxpc3RbXTsKK2V4dGVybiBVSU5UMzIgbXNnX2NhdGxpc3Rfc2l6ZTsKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAqLworCisjZW5kaWYgLyogX1A4MDIxMU1FVEFNU0dfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YXN0cnVjdC5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWV0YXN0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNWY0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtZXRhc3RydWN0LmgKQEAgLTAsMCArMSw2NDQgQEAKKy8qIFRoaXMgZmlsZSBpcyBHRU5FUkFURUQgQVVUT01BVElDQUxMWS4gIERPIE5PVCBFRElUIE9SIE1PRElGWS4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1A4MDIxMU1LTUVUQVNUUlVDVF9ICisjZGVmaW5lIF9QODAyMTFNS01FVEFTVFJVQ1RfSAorCisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMXJlcV9taWJnZXQKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91bmszOTJfdAltaWJhdHRyaWJ1dGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9taWJnZXRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExcmVxX21pYnNldAoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VuazM5Ml90CW1pYmF0dHJpYnV0ZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfZG90MTFyZXFfcG93ZXJtZ210Cit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcG93ZXJtZ210bW9kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAl3YWtldXAJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVjZWl2ZWR0aW1zCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfZG90MTFyZXFfcG93ZXJtZ210X3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMXJlcV9zY2FuCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYnNzdHlwZQk7CisJcDgwMjExaXRlbV9wc3RyNl90CWJzc2lkCTsKKwlVSU5UOAlwYWRfMENbMV0JOworCXA4MDIxMWl0ZW1fcHN0cjMyX3QJc3NpZAk7CisJVUlOVDgJcGFkXzFEWzNdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXNjYW50eXBlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXByb2JlZGVsYXkJOworCXA4MDIxMWl0ZW1fcHN0cjE0X3QJY2hhbm5lbGxpc3QJOworCVVJTlQ4CXBhZF8yQ1sxXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAltaW5jaGFubmVsdGltZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAltYXhjaGFubmVsdGltZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW51bWJzcwk7CisJcDgwMjExaXRlbV91aW50MzJfdAlhcHBlbmQJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfZG90MTFyZXFfc2Nhbl90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfZG90MTFyZXFfc2Nhbl9yZXN1bHRzCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYnNzaW5kZXgJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlzaWduYWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbm9pc2UJOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlic3NpZAk7CisJVUlOVDgJcGFkXzNDWzFdCTsKKwlwODAyMTFpdGVtX3BzdHIzMl90CXNzaWQJOworCVVJTlQ4CXBhZF80RFszXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlic3N0eXBlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJlYWNvbnBlcmlvZAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlkdGltcGVyaW9kCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXRpbWVzdGFtcAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlsb2NhbHRpbWUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZmhkd2VsbHRpbWUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZmhob3BzZXQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZmhob3BwYXR0ZXJuCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWZoaG9waW5kZXgJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZHNjaGFubmVsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNmcGNvdW50CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNmcHBlcmlvZAk7CisJcDgwMjExaXRlbV91aW50MzJfdAljZnBtYXhkdXJhdGlvbgk7CisJcDgwMjExaXRlbV91aW50MzJfdAljZnBkdXJyZW1haW5pbmcJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJaWJzc2F0aW13aW5kb3cJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJY2Zwb2xsYWJsZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAljZnBvbGxyZXEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcHJpdmFjeQk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGUxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTIJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlMwk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNgk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU3CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTgJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc3VwcHJhdGUxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXN1cHByYXRlMgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlzdXBwcmF0ZTMJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc3VwcHJhdGU0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXN1cHByYXRlNQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlzdXBwcmF0ZTYJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc3VwcHJhdGU3CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXN1cHByYXRlOAk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExcmVxX2pvaW4KK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV9wc3RyNl90CWJzc2lkCTsKKwlVSU5UOAlwYWRfNUNbMV0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJam9pbmZhaWx1cmV0aW1lb3V0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlMgk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGUzCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNQk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU2CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTcJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlOAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGUxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTIJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlMwk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGU0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlNgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGU3CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTgJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9qb2luX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMXJlcV9hdXRoZW50aWNhdGUKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV9wc3RyNl90CXBlZXJzdGFhZGRyZXNzCTsKKwlVSU5UOAlwYWRfNkNbMV0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYXV0aGVudGljYXRpb250eXBlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWF1dGhlbnRpY2F0aW9uZmFpbHVyZXRpbWVvdXQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9hdXRoZW50aWNhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExcmVxX2RlYXV0aGVudGljYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlwZWVyc3RhYWRkcmVzcwk7CisJVUlOVDgJcGFkXzdDWzFdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlYXNvbmNvZGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9kZWF1dGhlbnRpY2F0ZV90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfZG90MTFyZXFfYXNzb2NpYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlwZWVyc3RhYWRkcmVzcwk7CisJVUlOVDgJcGFkXzhDWzFdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWFzc29jaWF0ZWZhaWx1cmV0aW1lb3V0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNmcG9sbGFibGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJY2Zwb2xscmVxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXByaXZhY3kJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbGlzdGVuaW50ZXJ2YWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9hc3NvY2lhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAluZXdhcGFkZHJlc3MJOworCVVJTlQ4CXBhZF85Q1sxXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZWFzc29jaWF0ZWZhaWx1cmV0aW1lb3V0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNmcG9sbGFibGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJY2Zwb2xscmVxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXByaXZhY3kJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbGlzdGVuaW50ZXJ2YWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMXJlcV9yZWFzc29jaWF0ZV90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfZG90MTFyZXFfZGlzYXNzb2NpYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlwZWVyc3RhYWRkcmVzcwk7CisJVUlOVDgJcGFkXzEwQ1sxXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZWFzb25jb2RlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfZG90MTFyZXFfZGlzYXNzb2NpYXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMXJlcV9yZXNldAoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXNldGRlZmF1bHRtaWIJOworCXA4MDIxMWl0ZW1fcHN0cjZfdAltYWNhZGRyZXNzCTsKKwlVSU5UOAlwYWRfMTFDWzFdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfZG90MTFyZXFfcmVzZXRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExcmVxX3N0YXJ0Cit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjMyX3QJc3NpZAk7CisJVUlOVDgJcGFkXzEyRFszXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlic3N0eXBlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJlYWNvbnBlcmlvZAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlkdGltcGVyaW9kCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNmcHBlcmlvZAk7CisJcDgwMjExaXRlbV91aW50MzJfdAljZnBtYXhkdXJhdGlvbgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlmaGR3ZWxsdGltZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlmaGhvcHNldAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlmaGhvcHBhdHRlcm4JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZHNjaGFubmVsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWlic3NhdGltd2luZG93CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXByb2JlZGVsYXkJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJY2Zwb2xsYWJsZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAljZnBvbGxyZXEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlMQk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGUyCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTMJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNAk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU1CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTYJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNwk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU4CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlMgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGUzCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlNQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGU2CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTcJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlOAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX2RvdDExcmVxX3N0YXJ0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMWluZF9hdXRoZW50aWNhdGUKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV9wc3RyNl90CXBlZXJzdGFhZGRyZXNzCTsKKwlVSU5UOAlwYWRfMTNDWzFdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWF1dGhlbnRpY2F0aW9udHlwZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMWluZF9hdXRoZW50aWNhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExaW5kX2RlYXV0aGVudGljYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlwZWVyc3RhYWRkcmVzcwk7CisJVUlOVDgJcGFkXzE0Q1sxXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZWFzb25jb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX2RvdDExaW5kX2RlYXV0aGVudGljYXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19kb3QxMWluZF9hc3NvY2lhdGUKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV9wc3RyNl90CXBlZXJzdGFhZGRyZXNzCTsKKwlVSU5UOAlwYWRfMTVDWzFdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWFpZAk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMWluZF9hc3NvY2lhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExaW5kX3JlYXNzb2NpYXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlwZWVyc3RhYWRkcmVzcwk7CisJVUlOVDgJcGFkXzE2Q1sxXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlhaWQJOworCXA4MDIxMWl0ZW1fcHN0cjZfdAlvbGRhcGFkZHJlc3MJOworCVVJTlQ4CXBhZF8xN0NbMV0JOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfZG90MTFpbmRfcmVhc3NvY2lhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2RvdDExaW5kX2Rpc2Fzc29jaWF0ZQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3BzdHI2X3QJcGVlcnN0YWFkZHJlc3MJOworCVVJTlQ4CXBhZF8xOENbMV0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVhc29uY29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19kb3QxMWluZF9kaXNhc3NvY2lhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX2xueHJlcV9pZnN0YXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJaWZzdGF0ZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX2xueHJlcV9pZnN0YXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19sbnhyZXFfd2xhbnNuaWZmCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZW5hYmxlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNoYW5uZWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcHJpc21oZWFkZXIJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJd2xhbmhlYWRlcgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlrZWVwd2VwZmxhZ3MJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc3RyaXBmY3MJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcGFja2V0X3RydW5jCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfbG54cmVxX3dsYW5zbmlmZl90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfbG54cmVxX2hvc3R3ZXAKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWRlY3J5cHQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZW5jcnlwdAk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19sbnhyZXFfaG9zdHdlcF90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfbG54cmVxX2NvbW1zcXVhbGl0eQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZGJtCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWxpbmsJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbGV2ZWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbm9pc2UJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfbG54cmVxX2NvbW1zcXVhbGl0eV90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfbG54cmVxX2F1dG9qb2luCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fcHN0cjMyX3QJc3NpZAk7CisJVUlOVDgJcGFkXzE5RFszXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlhdXRodHlwZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX2xueHJlcV9hdXRvam9pbl90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJaG9zdHRpbWUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbWFjdGltZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAljaGFubmVsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJzc2kJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc3EJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJc2lnbmFsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW5vaXNlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJhdGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJaXN0eAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlmcm1sZW4JOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfbG54aW5kX3dsYW5zbmlmZnJtX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19sbnhpbmRfcm9hbQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlYXNvbgk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19sbnhpbmRfcm9hbV90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfcDJyZXFfam9pbgoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3BzdHI2X3QJYnNzaWQJOworCVVJTlQ4CXBhZF8yMENbMV0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlMQk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGUyCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTMJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNAk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU1CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJhc2ljcmF0ZTYJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYmFzaWNyYXRlNwk7CisJcDgwMjExaXRlbV91aW50MzJfdAliYXNpY3JhdGU4CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlMgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGUzCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTQJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlNQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlvcGVyYXRpb25hbHJhdGU2CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CW9wZXJhdGlvbmFscmF0ZTcJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJb3BlcmF0aW9uYWxyYXRlOAk7CisJcDgwMjExaXRlbV9wc3RyMzJfdAlzc2lkCTsKKwlVSU5UOAlwYWRfMjFEWzNdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNoYW5uZWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYXV0aHR5cGUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19wMnJlcV9qb2luX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9yZWFkcGRhCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdW5rMTAyNF90CXBkYQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX3AycmVxX3JlYWRwZGFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX3JlYWRjaXMKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91bmsxMDI0X3QJY2lzCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfcmVhZGNpc190OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWVuYWJsZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX3AycmVxX2F1eHBvcnRfc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX2F1eHBvcnRfcmVhZAoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWFkZHIJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJbGVuCTsKKwlwODAyMTFpdGVtX3VuazEwMjRfdAlkYXRhCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfYXV4cG9ydF9yZWFkX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9hdXhwb3J0X3dyaXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYWRkcgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlsZW4JOworCXA4MDIxMWl0ZW1fdW5rMTAyNF90CWRhdGEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19wMnJlcV9hdXhwb3J0X3dyaXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9sb3dfbGV2ZWwKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAljb21tYW5kCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXBhcmFtMAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlwYXJhbTEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcGFyYW0yCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3AwCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3AxCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3AyCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfbG93X2xldmVsX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV90ZXN0X2NvbW1hbmQKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAl0ZXN0Y29kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAl0ZXN0cGFyYW0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlzdGF0dXMJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzcDAJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzcDEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzcDIJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfdGVzdF9jb21tYW5kX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9tbWlfcmVhZAoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWFkZHIJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJdmFsdWUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19wMnJlcV9tbWlfcmVhZF90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfcDJyZXFfbW1pX3dyaXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYWRkcgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlkYXRhCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfbW1pX3dyaXRlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9yYW1kbF9zdGF0ZQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWVuYWJsZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlleGVhZGRyCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfcmFtZGxfc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX3JhbWRsX3dyaXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJYWRkcgk7CisJcDgwMjExaXRlbV91aW50MzJfdAlsZW4JOworCXA4MDIxMWl0ZW1fdW5rNDA5Nl90CWRhdGEJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ19wMnJlcV9yYW1kbF93cml0ZV90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dfcDJyZXFfZmxhc2hkbF9zdGF0ZQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWVuYWJsZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX3AycmVxX2ZsYXNoZGxfc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGUKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlhZGRyCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWxlbgk7CisJcDgwMjExaXRlbV91bms0MDk2X3QJZGF0YQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX21tX3N0YXRlCit7CisJVUlOVDMyCQltc2djb2RlCTsKKwlVSU5UMzIJCW1zZ2xlbgk7CisJVUlOVDgJCWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF0JOworCXA4MDIxMWl0ZW1fdWludDMyX3QJZW5hYmxlCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfbW1fc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX2R1bXBfc3RhdGUKK3sKKwlVSU5UMzIJCW1zZ2NvZGUJOworCVVJTlQzMgkJbXNnbGVuCTsKKwlVSU5UOAkJZGV2bmFtZVtXTEFOX0RFVk5BTUVMRU5fTUFYXQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlsZXZlbAk7CisJcDgwMjExaXRlbV91aW50MzJfdAlyZXN1bHRjb2RlCTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExbXNnX3AycmVxX2R1bXBfc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX2NoYW5uZWxfaW5mbworeworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNoYW5uZWxsaXN0CTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNoYW5uZWxkd2VsbHRpbWUJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAludW1jaGluZm8JOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfY2hhbm5lbF9pbmZvX3Q7CisKK3R5cGVkZWYgc3RydWN0IHA4MDIxMW1zZ19wMnJlcV9jaGFubmVsX2luZm9fcmVzdWx0cworeworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWNoYW5uZWwJOworCXA4MDIxMWl0ZW1fdWludDMyX3QJcmVzdWx0Y29kZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlhdmdub2lzZWxldmVsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXBlYWtub2lzZWxldmVsCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CWJzc2FjdGl2ZQk7CisJcDgwMjExaXRlbV91aW50MzJfdAlwY2ZhY3RpdmUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfY2hhbm5lbF9pbmZvX3Jlc3VsdHNfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbXNnX3AycmVxX2VuYWJsZQoreworCVVJTlQzMgkJbXNnY29kZQk7CisJVUlOVDMyCQltc2dsZW4JOworCVVJTlQ4CQlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdCTsKKwlwODAyMTFpdGVtX3VpbnQzMl90CXJlc3VsdGNvZGUJOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtc2dfcDJyZXFfZW5hYmxlX3Q7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWdtdC5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWdtdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNGMxNjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbWdtdC5oCkBAIC0wLDAgKzEsNTc1IEBACisvKiBwODAyMTFtZ210LmgKKyoKKyogTWFjcm9zLCB0eXBlcywgYW5kIGZ1bmN0aW9ucyB0byBoYW5kbGUgODAyLjExIG1nbXQgZnJhbWVzCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBkZWNsYXJlcyB0aGUgY29uc3RhbnRzIGFuZCB0eXBlcyB1c2VkIGluIHRoZSBpbnRlcmZhY2UKKyogYmV0d2VlbiBhIHdsYW4gZHJpdmVyIGFuZCB0aGUgdXNlciBtb2RlIHV0aWxpdGllcy4KKyoKKyogTm90ZXM6CisqICAtIENvbnN0YW50IHZhbHVlcyBhcmUgYWx3YXlzIGluIEhPU1QgYnl0ZSBvcmRlci4gIFRvIGFzc2lnbgorKiAgICB2YWx1ZXMgdG8gbXVsdGktYnl0ZSBmaWVsZHMgdGhleSBfbXVzdF8gYmUgY29udmVydGVkIHRvCisqICAgIGllZWUgYnl0ZSBvcmRlci4gIFRvIHJldHJpZXZlIG11bHRpLWJ5dGUgdmFsdWVzIGZyb20gaW5jb21pbmcKKyogICAgZnJhbWVzLCB0aGV5IG11c3QgYmUgY29udmVydGVkIHRvIGhvc3Qgb3JkZXIuCisqCisqICAtIFRoZSBsZW4gbWVtYmVyIG9mIHRoZSBmcmFtZSBzdHJ1Y3R1cmUgZG9lcyBOT1QhISEgaW5jbHVkZQorKiAgICB0aGUgTUFDIENSQy4gIFRoZXJlZm9yZSwgdGhlIGxlbiBmaWVsZCBvbiByeCdkIGZyYW1lcyBzaG91bGQKKyogICAgaGF2ZSA0IHN1YnRyYWN0ZWQgZnJvbSBpdC4KKyoKKyogQWxsIGZ1bmN0aW9ucyBkZWNsYXJlZCBoZXJlIGFyZSBpbXBsZW1lbnRlZCBpbiBwODAyMTEuYworKgorKiBUaGUgdHlwZXMsIG1hY3JvcywgYW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUgYXJlIHByaW1hcmlseQorKiB1c2VkIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgbWFuYWdlbWVudCBmcmFtZXMuICBUaGV5IGFyZQorKiBkZXNpZ25lZCB0byBmb2xsb3cgdGhlc2UgcGF0dGVybnMgb2YgdXNlOgorKgorKiBERUNPREU6CisqIDEpIGEgZnJhbWUgb2YgbGVuZ3RoIGxlbiBpcyByZWNlaXZlZCBpbnRvIGJ1ZmZlciBiCisqIDIpIHVzaW5nIHRoZSBoZHIgc3RydWN0dXJlIGFuZCBtYWNyb3MsIHdlIGRldGVybWluZSB0aGUgdHlwZQorKiAzKSBhbiBhcHByb3ByaWF0ZSBtZ210IGZyYW1lIHN0cnVjdHVyZSwgbWYsIGlzIGFsbG9jYXRlZCBhbmQgemVyb2VkCisqIDQpIG1mLmhkciA9IGIKKyogICAgbWYuYnVmID0gYgorKiAgICBtZi5sZW4gPSBsZW4KKyogNSkgY2FsbCBtZ210X2RlY29kZSggbWYgKQorKiA2KSB0aGUgZnJhbWUgZmllbGQgcG9pbnRlcnMgaW4gbWYgYXJlIG5vdyBzZXQuICBOb3RlIHRoYXQgYW55CisqICAgIG11bHRpLWJ5dGUgZnJhbWUgZmllbGQgdmFsdWVzIGFjY2Vzc2VkIHVzaW5nIHRoZSBmcmFtZSBmaWVsZAorKiAgICBwb2ludGVycyBhcmUgaW4gaWVlZSBieXRlIG9yZGVyIGFuZCB3aWxsIGhhdmUgdG8gYmUgY29udmVydGVkCisqICAgIHRvIGhvc3Qgb3JkZXIuCisqCisqIEVOQ09ERToKKyogMSkgTGlicmFyeSBjbGllbnQgYWxsb2NhdGVzIGJ1ZmZlciBzcGFjZSBmb3IgbWF4aW11bSBsZW5ndGgKKyogICAgZnJhbWUgb2YgdGhlIGRlc2lyZWQgdHlwZQorKiAyKSBMaWJyYXJ5IGNsaWVudCBhbGxvY2F0ZXMgYSBtZ210IGZyYW1lIHN0cnVjdHVyZSwgY2FsbGVkIG1mLAorKiAgICBvZiB0aGUgZGVzaXJlZCB0eXBlCisqIDMpIFNldCB0aGUgZm9sbG93aW5nOgorKiAgICBtZi50eXBlID0gPGRlc2lyZWQgdHlwZT4KKyogICAgbWYuYnVmID0gPGFsbG9jYXRlZCBidWZmZXIgYWRkcmVzcz4KKyogNCkgY2FsbCBtZ210X2VuY29kZSggbWYgKQorKiA1KSBhbGwgb2YgdGhlIGZpeGVkIGZpZWxkIHBvaW50ZXJzIGFuZCBmaXhlZCBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudAorKiAgICBwb2ludGVycyBpbiBtZiBhcmUgbm93IHNldCB0byB0aGVpciByZXNwZWN0aXZlIGxvY2F0aW9ucyBpbiB0aGUKKyogICAgYWxsb2NhdGVkIHNwYWNlIChmb3J0dW5hdGVseSwgYWxsIHZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cworKiAgICBmYWxsIGF0IHRoZSBlbmQgb2YgdGhlaXIgcmVzcGVjdGl2ZSBmcmFtZXMpLgorKiA1YSkgVGhlIGxlbmd0aCBmaWVsZCBpcyBzZXQgdG8gaW5jbHVkZSB0aGUgbGFzdCBvZiB0aGUgZml4ZWQgYW5kIGZpeGVkCisqICAgICBsZW5ndGggZmllbGRzLiAgSXQgbWF5IGhhdmUgdG8gYmUgdXBkYXRlZCBmb3Igb3B0aW9uYWwgb3IgdmFyaWFibGUKKyogCWxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy4KKyogNikgT3B0aW9uYWwgYW5kIHZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cyBhcmUgc3BlY2lhbCBjYXNlcworKiAgICBhbmQgbXVzdCBiZSBoYW5kbGVkIGluZGl2aWR1YWxseSBieSB0aGUgY2xpZW50IGNvZGUuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisjaWZuZGVmIF9QODAyMTFNR01UX0gKKyNkZWZpbmUgX1A4MDIxMU1HTVRfSAorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpZm5kZWYgIF9XTEFOX0NPTVBBVF9ICisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKyNlbmRpZgorCisjaWZuZGVmICBfUDgwMjExSERSX0gKKyNpbmNsdWRlICJwODAyMTFoZHIuaCIKKyNlbmRpZgorCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDb25zdGFudHMgKi8KKworLyotLSBJbmZvcm1hdGlvbiBFbGVtZW50IElEcyAtLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIFdMQU5fRUlEX1NTSUQJCTAKKyNkZWZpbmUgV0xBTl9FSURfU1VQUF9SQVRFUwkxCisjZGVmaW5lIFdMQU5fRUlEX0ZIX1BBUk1TCTIKKyNkZWZpbmUgV0xBTl9FSURfRFNfUEFSTVMJMworI2RlZmluZSBXTEFOX0VJRF9DRl9QQVJNUwk0CisjZGVmaW5lIFdMQU5fRUlEX1RJTQkJNQorI2RlZmluZSBXTEFOX0VJRF9JQlNTX1BBUk1TCTYKKy8qLS0gdmFsdWVzIDctMTUgcmVzZXJ2ZWQgLS0qLworI2RlZmluZSBXTEFOX0VJRF9DSEFMTEVOR0UJMTYKKy8qLS0gdmFsdWVzIDE3LTMxIHJlc2VydmVkIGZvciBjaGFsbGVuZ2UgdGV4dCBleHRlbnNpb24gLS0qLworLyotLSB2YWx1ZXMgMzItMjU1IHJlc2VydmVkIC0tKi8KKworLyotLSBSZWFzb24gQ29kZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIFdMQU5fTUdNVF9SRUFTT05fUlNWRAkJCTAKKyNkZWZpbmUgV0xBTl9NR01UX1JFQVNPTl9VTlNQRUMJCQkxCisjZGVmaW5lIFdMQU5fTUdNVF9SRUFTT05fUFJJT1JfQVVUSF9JTlZBTElECTIKKyNkZWZpbmUgV0xBTl9NR01UX1JFQVNPTl9ERUFVVEhfTEVBVklORwkJMworI2RlZmluZSBXTEFOX01HTVRfUkVBU09OX0RJU0FTU09DX0lOQUNUSVZFCTQKKyNkZWZpbmUgV0xBTl9NR01UX1JFQVNPTl9ESVNBU1NPQ19BUF9CVVNZCTUKKyNkZWZpbmUgV0xBTl9NR01UX1JFQVNPTl9DTEFTUzJfTk9OQVVUSAkJNgorI2RlZmluZSBXTEFOX01HTVRfUkVBU09OX0NMQVNTM19OT05BU1NPQwk3CisjZGVmaW5lIFdMQU5fTUdNVF9SRUFTT05fRElTQVNTT0NfU1RBX0hBU0xFRlQJOAorI2RlZmluZSBXTEFOX01HTVRfUkVBU09OX0NBTlRfQVNTT0NfTk9OQVVUSAk5CisKKy8qLS0gU3RhdHVzIENvZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX1NVQ0NFU1MJCTAKKyNkZWZpbmUgV0xBTl9NR01UX1NUQVRVU19VTlNQRUNfRkFJTFVSRQkJMQorI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0NBUFNfVU5TVVBQT1JURUQJMTAKKyNkZWZpbmUgV0xBTl9NR01UX1NUQVRVU19SRUFTU09DX05PX0FTU09DCTExCisjZGVmaW5lIFdMQU5fTUdNVF9TVEFUVVNfQVNTT0NfREVOSUVEX1VOU1BFQwkxMgorI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX1VOU1VQUE9SVEVEX0FVVEhBTEcJMTMKKyNkZWZpbmUgV0xBTl9NR01UX1NUQVRVU19SWF9BVVRIX05PU0VRCQkxNAorI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0NIQUxMRU5HRV9GQUlMCQkxNQorI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0FVVEhfVElNRU9VVAkJMTYKKyNkZWZpbmUgV0xBTl9NR01UX1NUQVRVU19BU1NPQ19ERU5JRURfQlVTWQkxNworI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0FTU09DX0RFTklFRF9SQVRFUwkxOAorICAvKiBwODAyMTFiIGFkZGl0aW9ucyAqLworI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0FTU09DX0RFTklFRF9OT1NIT1JUCTE5CisjZGVmaW5lIFdMQU5fTUdNVF9TVEFUVVNfQVNTT0NfREVOSUVEX05PUEJDQwkyMAorI2RlZmluZSBXTEFOX01HTVRfU1RBVFVTX0FTU09DX0RFTklFRF9OT0FHSUxJVFkJMjEKKworCisKKy8qLS0gQXV0aCBBbGdvcml0aG0gRmllbGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUgV0xBTl9BVVRIX0FMR19PUEVOU1lTVEVNCQkwCisjZGVmaW5lIFdMQU5fQVVUSF9BTEdfU0hBUkVES0VZCQkJMQorCisvKi0tIE1hbmFnZW1lbnQgRnJhbWUgRmllbGQgT2Zmc2V0cyAtLS0tLS0tLS0tLS0tKi8KKy8qIE5vdGU6IE5vdCBhbGwgZmllbGRzIGFyZSBsaXN0ZWQgYmVjYXVzZSBvZiB2YXJpYWJsZSBsZW5ndGhzLCAgICovCisvKiAgICAgICBzZWUgdGhlIGNvZGUgaW4gcDgwMjExLmMgdG8gc2VlIGhvdyB3ZSBzZWFyY2ggZm9yIGZpZWxkcyAqLworLyogTm90ZTogVGhlc2Ugb2Zmc2V0cyBhcmUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lIGRhdGEgICAgICAgKi8KKworI2RlZmluZSBXTEFOX0JFQUNPTl9PRkZfVFMJCQkwCisjZGVmaW5lIFdMQU5fQkVBQ09OX09GRl9CQ05fSU5UCQkJOAorI2RlZmluZSBXTEFOX0JFQUNPTl9PRkZfQ0FQSU5GTwkJCTEwCisjZGVmaW5lIFdMQU5fQkVBQ09OX09GRl9TU0lECQkJMTIKKworI2RlZmluZSBXTEFOX0RJU0FTU09DX09GRl9SRUFTT04JCTAKKworI2RlZmluZSBXTEFOX0FTU09DUkVRX09GRl9DQVBfSU5GTwkJMAorI2RlZmluZSBXTEFOX0FTU09DUkVRX09GRl9MSVNURU5fSU5UCQkyCisjZGVmaW5lIFdMQU5fQVNTT0NSRVFfT0ZGX1NTSUQJCQk0CisKKyNkZWZpbmUgV0xBTl9BU1NPQ1JFU1BfT0ZGX0NBUF9JTkZPCQkwCisjZGVmaW5lIFdMQU5fQVNTT0NSRVNQX09GRl9TVEFUVVMJCTIKKyNkZWZpbmUgV0xBTl9BU1NPQ1JFU1BfT0ZGX0FJRAkJCTQKKyNkZWZpbmUgV0xBTl9BU1NPQ1JFU1BfT0ZGX1NVUFBfUkFURVMJCTYKKworI2RlZmluZSBXTEFOX1JFQVNTT0NSRVFfT0ZGX0NBUF9JTkZPCQkwCisjZGVmaW5lIFdMQU5fUkVBU1NPQ1JFUV9PRkZfTElTVEVOX0lOVAkJMgorI2RlZmluZSBXTEFOX1JFQVNTT0NSRVFfT0ZGX0NVUlJfQVAJCTQKKyNkZWZpbmUgV0xBTl9SRUFTU09DUkVRX09GRl9TU0lECQkxMAorCisjZGVmaW5lIFdMQU5fUkVBU1NPQ1JFU1BfT0ZGX0NBUF9JTkZPCQkwCisjZGVmaW5lIFdMQU5fUkVBU1NPQ1JFU1BfT0ZGX1NUQVRVUwkJMgorI2RlZmluZSBXTEFOX1JFQVNTT0NSRVNQX09GRl9BSUQJCTQKKyNkZWZpbmUgV0xBTl9SRUFTU09DUkVTUF9PRkZfU1VQUF9SQVRFUwkJNgorCisjZGVmaW5lIFdMQU5fUFJPQkVSRVFfT0ZGX1NTSUQJCQkwCisKKyNkZWZpbmUgV0xBTl9QUk9CRVJFU1BfT0ZGX1RTCQkJMAorI2RlZmluZSBXTEFOX1BST0JFUkVTUF9PRkZfQkNOX0lOVAkJOAorI2RlZmluZSBXTEFOX1BST0JFUkVTUF9PRkZfQ0FQX0lORk8JCTEwCisjZGVmaW5lIFdMQU5fUFJPQkVSRVNQX09GRl9TU0lECQkJMTIKKworI2RlZmluZSBXTEFOX0FVVEhFTl9PRkZfQVVUSF9BTEcJCTAKKyNkZWZpbmUgV0xBTl9BVVRIRU5fT0ZGX0FVVEhfU0VRCQkyCisjZGVmaW5lIFdMQU5fQVVUSEVOX09GRl9TVEFUVVMJCQk0CisjZGVmaW5lIFdMQU5fQVVUSEVOX09GRl9DSEFMTEVOR0UJCTYKKworI2RlZmluZSBXTEFOX0RFQVVUSEVOX09GRl9SRUFTT04JCTAKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTWFjcm9zICovCisKKy8qLS0gQ2FwYWJpbGl0eSBGaWVsZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBXTEFOX0dFVF9NR01UX0NBUF9JTkZPX0VTUyhuKQkJKChuKSAmIEJJVDApCisjZGVmaW5lIFdMQU5fR0VUX01HTVRfQ0FQX0lORk9fSUJTUyhuKQkJKCgobikgJiBCSVQxKSA+PiAxKQorI2RlZmluZSBXTEFOX0dFVF9NR01UX0NBUF9JTkZPX0NGUE9MTEFCTEUobikJKCgobikgJiBCSVQyKSA+PiAyKQorI2RlZmluZSBXTEFOX0dFVF9NR01UX0NBUF9JTkZPX0NGUE9MTFJFUShuKQkoKChuKSAmIEJJVDMpID4+IDMpCisjZGVmaW5lIFdMQU5fR0VUX01HTVRfQ0FQX0lORk9fUFJJVkFDWShuKQkoKChuKSAmIEJJVDQpID4+IDQpCisgIC8qIHA4MDIxMWIgYWRkaXRpb25zICovCisjZGVmaW5lIFdMQU5fR0VUX01HTVRfQ0FQX0lORk9fU0hPUlQobikJCSgoKG4pICYgQklUNSkgPj4gNSkKKyNkZWZpbmUgV0xBTl9HRVRfTUdNVF9DQVBfSU5GT19QQkNDKG4pCQkoKChuKSAmIEJJVDYpID4+IDYpCisjZGVmaW5lIFdMQU5fR0VUX01HTVRfQ0FQX0lORk9fQUdJTElUWShuKQkoKChuKSAmIEJJVDcpID4+IDcpCisKKyNkZWZpbmUgV0xBTl9TRVRfTUdNVF9DQVBfSU5GT19FU1MobikJCShuKQorI2RlZmluZSBXTEFOX1NFVF9NR01UX0NBUF9JTkZPX0lCU1MobikJCSgobikgPDwgMSkKKyNkZWZpbmUgV0xBTl9TRVRfTUdNVF9DQVBfSU5GT19DRlBPTExBQkxFKG4pCSgobikgPDwgMikKKyNkZWZpbmUgV0xBTl9TRVRfTUdNVF9DQVBfSU5GT19DRlBPTExSRVEobikJKChuKSA8PCAzKQorI2RlZmluZSBXTEFOX1NFVF9NR01UX0NBUF9JTkZPX1BSSVZBQ1kobikJKChuKSA8PCA0KQorICAvKiBwODAyMTFiIGFkZGl0aW9ucyAqLworI2RlZmluZSBXTEFOX1NFVF9NR01UX0NBUF9JTkZPX1NIT1JUKG4pCQkoKG4pIDw8IDUpCisjZGVmaW5lIFdMQU5fU0VUX01HTVRfQ0FQX0lORk9fUEJDQyhuKQkJKChuKSA8PCA2KQorI2RlZmluZSBXTEFOX1NFVF9NR01UX0NBUF9JTkZPX0FHSUxJVFkobikJKChuKSA8PCA3KQorCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBUeXBlcyAqLworCisvKi0tIEluZm9ybWF0aW9uIEVsZW1lbnQgVHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogcHJvdG90eXBlIHN0cnVjdHVyZSwgYWxsIElFcyBzdGFydCB3aXRoIHRoZXNlIG1lbWJlcnMgKi8KKwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9pZQoreworCVVJTlQ4CWVpZDsKKwlVSU5UOAlsZW47Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHdsYW5faWVfdDsKKworLyotLSBTZXJ2aWNlIFNldCBJZGVudGl0eSAoU1NJRCkgIC0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5faWVfc3NpZAoreworCVVJTlQ4CWVpZDsKKwlVSU5UOAlsZW47CisJVUlOVDgJc3NpZFsxXTsgIC8qIG1heSBiZSB6ZXJvLCBwdHJzIG1heSBvdmVybGFwICovCit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHdsYW5faWVfc3NpZF90OworCisvKi0tIFN1cHBvcnRlZCBSYXRlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9pZV9zdXBwX3JhdGVzCit7CisJVUlOVDgJZWlkOworCVVJTlQ4CWxlbjsKKwlVSU5UOAlyYXRlc1sxXTsgIC8qIGhhZCBiZXR0ZXIgYmUgYXQgTEVBU1Qgb25lISAqLworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyB3bGFuX2llX3N1cHBfcmF0ZXNfdDsKKworLyotLSBGSCBQYXJhbWV0ZXIgU2V0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5faWVfZmhfcGFybXMKK3sKKwlVSU5UOAllaWQ7CisJVUlOVDgJbGVuOworCVVJTlQxNglkd2VsbDsKKwlVSU5UOAlob3BzZXQ7CisJVUlOVDgJaG9wcGF0dGVybjsKKwlVSU5UOAlob3BpbmRleDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gd2xhbl9pZV9maF9wYXJtc190OworCisvKi0tIERTIFBhcmFtZXRlciBTZXQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9pZV9kc19wYXJtcworeworCVVJTlQ4CWVpZDsKKwlVSU5UOAlsZW47CisJVUlOVDgJY3Vycl9jaDsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gd2xhbl9pZV9kc19wYXJtc190OworCisvKi0tIENGIFBhcmFtZXRlciBTZXQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit0eXBlZGVmIHN0cnVjdCB3bGFuX2llX2NmX3Bhcm1zCit7CisJVUlOVDgJZWlkOworCVVJTlQ4CWxlbjsKKwlVSU5UOAljZnBfY250OworCVVJTlQ4CWNmcF9wZXJpb2Q7CisJVUlOVDE2CWNmcF9tYXhkdXI7CisJVUlOVDE2CWNmcF9kdXJyZW1haW5pbmc7Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHdsYW5faWVfY2ZfcGFybXNfdDsKKworLyotLSBUSU0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5faWVfdGltCit7CisJVUlOVDgJZWlkOworCVVJTlQ4CWxlbjsKKwlVSU5UOAlkdGltX2NudDsKKwlVSU5UOAlkdGltX3BlcmlvZDsKKwlVSU5UOAliaXRtYXBfY3RsOworCVVJTlQ4CXZpcnRfYm1bMV07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHdsYW5faWVfdGltX3Q7CisKKy8qLS0gSUJTUyBQYXJhbWV0ZXIgU2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2llX2lic3NfcGFybXMKK3sKKwlVSU5UOAllaWQ7CisJVUlOVDgJbGVuOworCVVJTlQxNglhdGltX3dpbjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gd2xhbl9pZV9pYnNzX3Bhcm1zX3Q7CisKKy8qLS0gQ2hhbGxlbmdlIFRleHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2llX2NoYWxsZW5nZQoreworCVVJTlQ4CWVpZDsKKwlVSU5UOAlsZW47CisJVUlOVDgJY2hhbGxlbmdlWzFdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyB3bGFuX2llX2NoYWxsZW5nZV90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogIEZyYW1lIFR5cGVzICAqLworCisvKiBwcm90b3R5cGUgc3RydWN0dXJlLCBhbGwgbWdtdCBmcmFtZSB0eXBlcyB3aWxsIHN0YXJ0IHdpdGggdGhlc2UgbWVtYmVycyAqLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9mcl9tZ210Cit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CS8qIERPRVMgTk9UIGluY2x1ZGUgQ1JDICEhISEqLworCVVJTlQ4CQkJKmJ1ZjsKKwlwODAyMTFfaGRyX3QJCSpoZHI7CisJLyogdXNlZCBmb3IgdGFyZ2V0IHNwZWNpZmljIGRhdGEsIHNrYiBpbiBMaW51eCAqLworCXZvaWQJCQkqcHJpdjsKKwkvKi0tIGZpeGVkIGZpZWxkcyAtLS0tLS0tLS0tLSovCisJLyotLSBpbmZvIGVsZW1lbnRzIC0tLS0tLS0tLS0qLworfSB3bGFuX2ZyX21nbXRfdDsKKworLyotLSBCZWFjb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5fZnJfYmVhY29uCit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CisJVUlOVDgJCQkqYnVmOworCXA4MDIxMV9oZHJfdAkJKmhkcjsKKwkvKiB1c2VkIGZvciB0YXJnZXQgc3BlY2lmaWMgZGF0YSwgc2tiIGluIExpbnV4ICovCisJdm9pZAkJCSpwcml2OworCS8qLS0gZml4ZWQgZmllbGRzIC0tLS0tLS0tLS0tKi8KKwlVSU5UNjQJCQkqdHM7CisJVUlOVDE2CQkJKmJjbl9pbnQ7CisJVUlOVDE2CQkJKmNhcF9pbmZvOworCS8qLS0gaW5mbyBlbGVtZW50cyAtLS0tLS0tLS0tKi8KKwl3bGFuX2llX3NzaWRfdAkJKnNzaWQ7CisJd2xhbl9pZV9zdXBwX3JhdGVzX3QJKnN1cHBfcmF0ZXM7CisJd2xhbl9pZV9maF9wYXJtc190CSpmaF9wYXJtczsKKwl3bGFuX2llX2RzX3Bhcm1zX3QJKmRzX3Bhcm1zOworCXdsYW5faWVfY2ZfcGFybXNfdAkqY2ZfcGFybXM7CisJd2xhbl9pZV9pYnNzX3Bhcm1zX3QJKmlic3NfcGFybXM7CisJd2xhbl9pZV90aW1fdAkJKnRpbTsKKworfSB3bGFuX2ZyX2JlYWNvbl90OworCisKKy8qLS0gSUJTUyBBVElNIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2ZyX2lic3NhdGltCit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CisJVUlOVDgqCQkJYnVmOworCXA4MDIxMV9oZHJfdAkJKmhkcjsKKwkvKiB1c2VkIGZvciB0YXJnZXQgc3BlY2lmaWMgZGF0YSwgc2tiIGluIExpbnV4ICovCisJdm9pZAkJCSpwcml2OworCisJLyotLSBmaXhlZCBmaWVsZHMgLS0tLS0tLS0tLS0qLworCS8qLS0gaW5mbyBlbGVtZW50cyAtLS0tLS0tLS0tKi8KKworCS8qIHRoaXMgZnJhbWUgdHlwZSBoYXMgYSBudWxsIGJvZHkgKi8KKworfSB3bGFuX2ZyX2lic3NhdGltX3Q7CisKKy8qLS0gRGlzYXNzb2NpYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2ZyX2Rpc2Fzc29jCit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CisJVUlOVDgJCQkqYnVmOworCXA4MDIxMV9oZHJfdAkJKmhkcjsKKwkvKiB1c2VkIGZvciB0YXJnZXQgc3BlY2lmaWMgZGF0YSwgc2tiIGluIExpbnV4ICovCisJdm9pZAkJCSpwcml2OworCS8qLS0gZml4ZWQgZmllbGRzIC0tLS0tLS0tLS0tKi8KKwlVSU5UMTYJCQkqcmVhc29uOworCisJLyotLSBpbmZvIGVsZW1lbnRzIC0tLS0tLS0tLS0qLworCit9IHdsYW5fZnJfZGlzYXNzb2NfdDsKKworLyotLSBBc3NvY2lhdGlvbiBSZXF1ZXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5fZnJfYXNzb2NyZXEKK3sKKwlVSU5UMTYJCQl0eXBlOworCVVJTlQxNgkJCWxlbjsKKwlVSU5UOCoJCQlidWY7CisJcDgwMjExX2hkcl90CQkqaGRyOworCS8qIHVzZWQgZm9yIHRhcmdldCBzcGVjaWZpYyBkYXRhLCBza2IgaW4gTGludXggKi8KKwl2b2lkCQkJKnByaXY7CisJLyotLSBmaXhlZCBmaWVsZHMgLS0tLS0tLS0tLS0qLworCVVJTlQxNgkJCSpjYXBfaW5mbzsKKwlVSU5UMTYJCQkqbGlzdGVuX2ludDsKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisJd2xhbl9pZV9zc2lkX3QJCSpzc2lkOworCXdsYW5faWVfc3VwcF9yYXRlc190CSpzdXBwX3JhdGVzOworCit9IHdsYW5fZnJfYXNzb2NyZXFfdDsKKworLyotLSBBc3NvY2lhdGlvbiBSZXNwb25zZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5fZnJfYXNzb2NyZXNwCit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CisJVUlOVDgJCQkqYnVmOworCXA4MDIxMV9oZHJfdAkJKmhkcjsKKwkvKiB1c2VkIGZvciB0YXJnZXQgc3BlY2lmaWMgZGF0YSwgc2tiIGluIExpbnV4ICovCisJdm9pZAkJCSpwcml2OworCS8qLS0gZml4ZWQgZmllbGRzIC0tLS0tLS0tLS0tKi8KKwlVSU5UMTYJCQkqY2FwX2luZm87CisJVUlOVDE2CQkJKnN0YXR1czsKKwlVSU5UMTYJCQkqYWlkOworCS8qLS0gaW5mbyBlbGVtZW50cyAtLS0tLS0tLS0tKi8KKwl3bGFuX2llX3N1cHBfcmF0ZXNfdAkqc3VwcF9yYXRlczsKKworfSB3bGFuX2ZyX2Fzc29jcmVzcF90OworCisvKi0tIFJlYXNzb2NpYXRpb24gUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9mcl9yZWFzc29jcmVxCit7CisJVUlOVDE2CQkJdHlwZTsKKwlVSU5UMTYJCQlsZW47CisJVUlOVDgJCQkqYnVmOworCXA4MDIxMV9oZHJfdAkJKmhkcjsKKwkvKiB1c2VkIGZvciB0YXJnZXQgc3BlY2lmaWMgZGF0YSwgc2tiIGluIExpbnV4ICovCisJdm9pZAkJCSpwcml2OworCS8qLS0gZml4ZWQgZmllbGRzIC0tLS0tLS0tLS0tKi8KKwlVSU5UMTYJCQkqY2FwX2luZm87CisJVUlOVDE2CQkJKmxpc3Rlbl9pbnQ7CisJVUlOVDgJCQkqY3Vycl9hcDsKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisJd2xhbl9pZV9zc2lkX3QJCSpzc2lkOworCXdsYW5faWVfc3VwcF9yYXRlc190CSpzdXBwX3JhdGVzOworCit9IHdsYW5fZnJfcmVhc3NvY3JlcV90OworCisvKi0tIFJlYXNzb2NpYXRpb24gUmVzcG9uc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9mcl9yZWFzc29jcmVzcAoreworCVVJTlQxNgkJCXR5cGU7CisJVUlOVDE2CQkJbGVuOworCVVJTlQ4CQkJKmJ1ZjsKKwlwODAyMTFfaGRyX3QJCSpoZHI7CisJLyogdXNlZCBmb3IgdGFyZ2V0IHNwZWNpZmljIGRhdGEsIHNrYiBpbiBMaW51eCAqLworCXZvaWQJCQkqcHJpdjsKKwkvKi0tIGZpeGVkIGZpZWxkcyAtLS0tLS0tLS0tLSovCisJVUlOVDE2CQkJKmNhcF9pbmZvOworCVVJTlQxNgkJCSpzdGF0dXM7CisJVUlOVDE2CQkJKmFpZDsKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisJd2xhbl9pZV9zdXBwX3JhdGVzX3QJKnN1cHBfcmF0ZXM7CisKK30gd2xhbl9mcl9yZWFzc29jcmVzcF90OworCisvKi0tIFByb2JlIFJlcXVlc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9mcl9wcm9iZXJlcQoreworCVVJTlQxNgkJCXR5cGU7CisJVUlOVDE2CQkJbGVuOworCVVJTlQ4CQkJKmJ1ZjsKKwlwODAyMTFfaGRyX3QJCSpoZHI7CisJLyogdXNlZCBmb3IgdGFyZ2V0IHNwZWNpZmljIGRhdGEsIHNrYiBpbiBMaW51eCAqLworCXZvaWQJCQkqcHJpdjsKKwkvKi0tIGZpeGVkIGZpZWxkcyAtLS0tLS0tLS0tLSovCisJLyotLSBpbmZvIGVsZW1lbnRzIC0tLS0tLS0tLS0qLworCXdsYW5faWVfc3NpZF90CQkqc3NpZDsKKwl3bGFuX2llX3N1cHBfcmF0ZXNfdAkqc3VwcF9yYXRlczsKKworfSB3bGFuX2ZyX3Byb2JlcmVxX3Q7CisKKy8qLS0gUHJvYmUgUmVzcG9uc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdCB3bGFuX2ZyX3Byb2JlcmVzcAoreworCVVJTlQxNgkJCXR5cGU7CisJVUlOVDE2CQkJbGVuOworCVVJTlQ4CQkJKmJ1ZjsKKwlwODAyMTFfaGRyX3QJCSpoZHI7CisJLyogdXNlZCBmb3IgdGFyZ2V0IHNwZWNpZmljIGRhdGEsIHNrYiBpbiBMaW51eCAqLworCXZvaWQJCQkqcHJpdjsKKwkvKi0tIGZpeGVkIGZpZWxkcyAtLS0tLS0tLS0tLSovCisJVUlOVDY0CQkJKnRzOworCVVJTlQxNgkJCSpiY25faW50OworCVVJTlQxNgkJCSpjYXBfaW5mbzsKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisJd2xhbl9pZV9zc2lkX3QJCSpzc2lkOworCXdsYW5faWVfc3VwcF9yYXRlc190CSpzdXBwX3JhdGVzOworCXdsYW5faWVfZmhfcGFybXNfdAkqZmhfcGFybXM7CisJd2xhbl9pZV9kc19wYXJtc190CSpkc19wYXJtczsKKwl3bGFuX2llX2NmX3Bhcm1zX3QJKmNmX3Bhcm1zOworCXdsYW5faWVfaWJzc19wYXJtc190CSppYnNzX3Bhcm1zOworfSB3bGFuX2ZyX3Byb2JlcmVzcF90OworCisvKi0tIEF1dGhlbnRpY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbl9mcl9hdXRoZW4KK3sKKwlVSU5UMTYJCQl0eXBlOworCVVJTlQxNgkJCWxlbjsKKwlVSU5UOAkJCSpidWY7CisJcDgwMjExX2hkcl90CQkqaGRyOworCS8qIHVzZWQgZm9yIHRhcmdldCBzcGVjaWZpYyBkYXRhLCBza2IgaW4gTGludXggKi8KKwl2b2lkCQkJKnByaXY7CisJLyotLSBmaXhlZCBmaWVsZHMgLS0tLS0tLS0tLS0qLworCVVJTlQxNgkJCSphdXRoX2FsZzsKKwlVSU5UMTYJCQkqYXV0aF9zZXE7CisJVUlOVDE2CQkJKnN0YXR1czsKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisJd2xhbl9pZV9jaGFsbGVuZ2VfdAkqY2hhbGxlbmdlOworCit9IHdsYW5fZnJfYXV0aGVuX3Q7CisKKy8qLS0gRGVhdXRoZW5pY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0IHdsYW5fZnJfZGVhdXRoZW4KK3sKKwlVSU5UMTYJCQl0eXBlOworCVVJTlQxNgkJCWxlbjsKKwlVSU5UOAkJCSpidWY7CisJcDgwMjExX2hkcl90CQkqaGRyOworCS8qIHVzZWQgZm9yIHRhcmdldCBzcGVjaWZpYyBkYXRhLCBza2IgaW4gTGludXggKi8KKwl2b2lkCQkJKnByaXY7CisJLyotLSBmaXhlZCBmaWVsZHMgLS0tLS0tLS0tLS0qLworCVVJTlQxNgkJCSpyZWFzb247CisKKwkvKi0tIGluZm8gZWxlbWVudHMgLS0tLS0tLS0tLSovCisKK30gd2xhbl9mcl9kZWF1dGhlbl90OworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBFeHRlcm4gRGVjbGFyYXRpb25zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyAqLworCit2b2lkIHdsYW5fbWdtdF9lbmNvZGVfYmVhY29uKCB3bGFuX2ZyX2JlYWNvbl90ICAqZiApOwordm9pZCB3bGFuX21nbXRfZGVjb2RlX2JlYWNvbiggd2xhbl9mcl9iZWFjb25fdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2VuY29kZV9kaXNhc3NvYyggd2xhbl9mcl9kaXNhc3NvY190ICAqZiApOwordm9pZCB3bGFuX21nbXRfZGVjb2RlX2Rpc2Fzc29jKCB3bGFuX2ZyX2Rpc2Fzc29jX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9lbmNvZGVfYXNzb2NyZXEoIHdsYW5fZnJfYXNzb2NyZXFfdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2RlY29kZV9hc3NvY3JlcSggd2xhbl9mcl9hc3NvY3JlcV90ICAqZiApOwordm9pZCB3bGFuX21nbXRfZW5jb2RlX2Fzc29jcmVzcCggd2xhbl9mcl9hc3NvY3Jlc3BfdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2RlY29kZV9hc3NvY3Jlc3AoIHdsYW5fZnJfYXNzb2NyZXNwX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9lbmNvZGVfcmVhc3NvY3JlcSggd2xhbl9mcl9yZWFzc29jcmVxX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9kZWNvZGVfcmVhc3NvY3JlcSggd2xhbl9mcl9yZWFzc29jcmVxX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9lbmNvZGVfcmVhc3NvY3Jlc3AoIHdsYW5fZnJfcmVhc3NvY3Jlc3BfdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2RlY29kZV9yZWFzc29jcmVzcCggd2xhbl9mcl9yZWFzc29jcmVzcF90ICAqZiApOwordm9pZCB3bGFuX21nbXRfZW5jb2RlX3Byb2JlcmVxKCB3bGFuX2ZyX3Byb2JlcmVxX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9kZWNvZGVfcHJvYmVyZXEoIHdsYW5fZnJfcHJvYmVyZXFfdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2VuY29kZV9wcm9iZXJlc3AoIHdsYW5fZnJfcHJvYmVyZXNwX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9kZWNvZGVfcHJvYmVyZXNwKCB3bGFuX2ZyX3Byb2JlcmVzcF90ICAqZiApOwordm9pZCB3bGFuX21nbXRfZW5jb2RlX2F1dGhlbiggd2xhbl9mcl9hdXRoZW5fdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2RlY29kZV9hdXRoZW4oIHdsYW5fZnJfYXV0aGVuX3QgICpmICk7Cit2b2lkIHdsYW5fbWdtdF9lbmNvZGVfZGVhdXRoZW4oIHdsYW5fZnJfZGVhdXRoZW5fdCAgKmYgKTsKK3ZvaWQgd2xhbl9tZ210X2RlY29kZV9kZWF1dGhlbiggd2xhbl9mcl9kZWF1dGhlbl90ICAqZiApOworCisKKyNlbmRpZiAvKiBfUDgwMjExTUdNVF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtb2QuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1vZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYzNmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFtb2QuYwpAQCAtMCwwICsxLDIxNiBAQAorLyogc3JjL3A4MDIxMS9wODAyMTFtb2QuYworKgorKiBNb2R1bGUgZW50cnkgYW5kIGV4aXQgZm9yIHA4MDIxMQorKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHA4MDIxMS5vIGVudHJ5IGFuZCBleGl0IHBvaW50cyBkZWZpbmVkIGZvciBsaW51eAorKiBrZXJuZWwgbW9kdWxlcy4KKyoKKyogTm90ZXM6CisqIC0gYWxsIG1vZHVsZSBwYXJhbWV0ZXJzIGZvciAgcDgwMjExLm8gc2hvdWxkIGJlIGRlZmluZWQgaGVyZS4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKworCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMjUpKQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpbmNsdWRlICJwODAyMTF0eXBlcy5oIgorI2luY2x1ZGUgInA4MDIxMWhkci5oIgorI2luY2x1ZGUgInA4MDIxMW1nbXQuaCIKKyNpbmNsdWRlICJwODAyMTFjb252LmgiCisjaW5jbHVkZSAicDgwMjExbXNnLmgiCisjaW5jbHVkZSAicDgwMjExbmV0ZGV2LmgiCisjaW5jbHVkZSAicDgwMjExcmVxLmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBDb25zdGFudHMgKi8KKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgTWFjcm9zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFR5cGVzICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFN0YXRpYyBEZWZpbml0aW9ucyAqLworCitzdGF0aWMgY2hhciAqdmVyc2lvbiA9ICJwODAyMTEubzogIiBXTEFOX1JFTEVBU0U7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIC0tTW9kdWxlIFBhcmFtZXRlcnMgKi8KKworaW50IHdsYW5fd2F0Y2hkb2cgPSA1MDAwOworbW9kdWxlX3BhcmFtKHdsYW5fd2F0Y2hkb2csIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKHdsYW5fd2F0Y2hkb2csICJ0cmFuc21pdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyIpOworCitpbnQgd2xhbl93ZXh0X3dyaXRlID0gMDsKKyNpZiBXSVJFTEVTU19FWFQgPiAxMgorbW9kdWxlX3BhcmFtKHdsYW5fd2V4dF93cml0ZSwgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0Mod2xhbl93ZXh0X3dyaXRlLCAiZW5hYmxlIHdyaXRlIHdpcmVsZXNzIGV4dGVuc2lvbnMiKTsKKyNlbmRpZgorCisjaWZkZWYgV0xBTl9JTkNMVURFX0RFQlVHCitpbnQgd2xhbl9kZWJ1Zz0wOworbW9kdWxlX3BhcmFtKHdsYW5fZGVidWcsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKHdsYW5fZGVidWcsICJwODAyMTEgZGVidWcgbGV2ZWwiKTsKKyNlbmRpZgorCitNT0RVTEVfTElDRU5TRSgiRHVhbCBNUEwvR1BMIik7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworaW50CWluaXRfbW9kdWxlKHZvaWQpOwordm9pZAljbGVhbnVwX21vZHVsZSh2b2lkKTsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEZ1bmN0aW9uIERlZmluaXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBpbml0X21vZHVsZQorKgorKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgY2FsbGVkIG9uY2UgYXQgbW9kdWxlIGxvYWQgdGltZS4KKyoKKyogQXJndW1lbnRzOgorKglub25lCisqCisqIFJldHVybnM6CisqCTAJLSBzdWNjZXNzCisqCX4wCS0gZmFpbHVyZSwgbW9kdWxlIGlzIHVubG9hZGVkLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCVRPRE86IGRlZmluZQorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkIChpbnNtb2Qgb3IgbW9kcHJvYmUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBpbml0X21vZHVsZSh2b2lkKQoreworICAgICAgICBEQkZFTlRFUjsKKworI2lmIDAKKyAgICAgICAgcHJpbnRrKEtFUk5fTk9USUNFICIlcyAoJXMpIExvYWRlZFxuIiwgdmVyc2lvbiwgV0xBTl9CVUlMRF9EQVRFKTsKKyNlbmRpZgorCisJcDgwMjExbmV0ZGV2X3N0YXJ0dXAoKTsKKyNpZmRlZiBDT05GSUdfSE9UUExVRworCXA4MDIxMV9ydW5fc2Jpbl9ob3RwbHVnKE5VTEwsIFdMQU5fSE9UUExVR19TVEFSVFVQKTsKKyNlbmRpZgorCisgICAgICAgIERCRkVYSVQ7CisgICAgICAgIHJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBjbGVhbnVwX21vZHVsZQorKgorKiBDYWxsZWQgYXQgbW9kdWxlIHVubG9hZCB0aW1lLiAgVGhpcyBpcyBvdXIgbGFzdCBjaGFuY2UgdG8KKyogY2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzLgorKgorKiBBcmd1bWVudHM6CisqCW5vbmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCVRPRE86IGRlZmluZQorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgY2xlYW51cF9tb2R1bGUodm9pZCkKK3sKKyAgICAgICAgREJGRU5URVI7CisKKyNpZmRlZiBDT05GSUdfSE9UUExVRworCXA4MDIxMV9ydW5fc2Jpbl9ob3RwbHVnKE5VTEwsIFdMQU5fSE9UUExVR19TSFVURE9XTik7CisjZW5kaWYKKwlwODAyMTFuZXRkZXZfc2h1dGRvd24oKTsKKyAgICAgICAgcHJpbnRrKEtFUk5fTk9USUNFICIlcyBVbmxvYWRlZFxuIiwgdmVyc2lvbik7CisKKyAgICAgICAgREJGRVhJVDsKKyAgICAgICAgcmV0dXJuOworfQorCitFWFBPUlRfU1lNQk9MKHA4MDIxMW5ldGRldl9od3JlbW92ZWQpOworRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl93bGFuZGV2KTsKK0VYUE9SVF9TWU1CT0wocDgwMjExbmV0ZGV2X3J4KTsKK0VYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl93bGFuZGV2KTsKK0VYUE9SVF9TWU1CT0wod2xhbl9zZXR1cCk7CitFWFBPUlRfU1lNQk9MKHdsYW5fdW5zZXR1cCk7CitFWFBPUlRfU1lNQk9MKHA4MDIxMV9zdXNwZW5kKTsKK0VYUE9SVF9TWU1CT0wocDgwMjExX3Jlc3VtZSk7CisKK0VYUE9SVF9TWU1CT0wocDgwMjExc2tiX2ZyZWUpOworRVhQT1JUX1NZTUJPTChwODAyMTFza2JfcnhtZXRhX2F0dGFjaCk7CisKK0VYUE9SVF9TWU1CT0wocDgwMjExd2V4dF9ldmVudF9hc3NvY2lhdGVkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1zZy5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbXNnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0ZTlmYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW1zZy5oCkBAIC0wLDAgKzEsMTAyIEBACisvKiBwODAyMTFtc2cuaAorKgorKiBNYWNyb3MsIGNvbnN0YW50cywgdHlwZXMsIGFuZCBmdW5jcyBmb3IgcmVxIGFuZCBpbmQgbWVzc2FnZXMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1A4MDIxMU1TR19ICisjZGVmaW5lIF9QODAyMTFNU0dfSAorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpZm5kZWYgX1dMQU5fQ09NUEFUX0gKKyNpbmNsdWRlICJ3bGFuX2NvbXBhdC5oIgorI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDb25zdGFudHMgKi8KKworI2RlZmluZSBNU0dfQlVGRl9MRU4JCTQwMDAKKyNkZWZpbmUgV0xBTl9ERVZOQU1FTEVOX01BWAkxNgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTWFjcm9zICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBUeXBlcyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0gTWVzc2FnZSBTdHJ1Y3R1cmUgVHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFByb3RvdHlwZSBtc2cgdHlwZSAqLworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2cKK3sKKwlVSU5UMzIJbXNnY29kZTsKKwlVSU5UMzIJbXNnbGVuOworCVVJTlQ4CWRldm5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ190OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFtc2dkCit7CisJVUlOVDMyCW1zZ2NvZGU7CisJVUlOVDMyCW1zZ2xlbjsKKwlVSU5UOAlkZXZuYW1lW1dMQU5fREVWTkFNRUxFTl9NQVhdOworCVVJTlQ4CWFyZ3NbMF07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMW1zZ2RfdDsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEV4dGVybiBEZWNsYXJhdGlvbnMgKi8KKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKKyNlbmRpZiAgLyogX1A4MDIxMU1TR19IICovCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW5ldGRldi5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbmV0ZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmODRhOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMW5ldGRldi5jCkBAIC0wLDAgKzEsMTUwMiBAQAorLyogc3JjL3A4MDIxMS9wODAyMTFrbmV0ZGV2LmMKKyoKKyogTGludXggS2VybmVsIG5ldCBkZXZpY2UgaW50ZXJmYWNlCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoZSBmdW5jdGlvbnMgcmVxdWlyZWQgZm9yIGEgTGludXggbmV0d29yayBkZXZpY2UgYXJlIGRlZmluZWQgaGVyZS4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFN5c3RlbSBJbmNsdWRlcyAqLworCisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKworI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKworI2lmZGVmIFNJT0NFVEhUT09MCisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorI2VuZGlmCisKKyNpZiBXSVJFTEVTU19FWFQgPiAxMgorI2luY2x1ZGUgPG5ldC9pd19oYW5kbGVyLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxuZXQvbmV0X25hbWVzcGFjZS5oPgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisjaW5jbHVkZSAicDgwMjExdHlwZXMuaCIKKyNpbmNsdWRlICJwODAyMTFoZHIuaCIKKyNpbmNsdWRlICJwODAyMTFjb252LmgiCisjaW5jbHVkZSAicDgwMjExbWdtdC5oIgorI2luY2x1ZGUgInA4MDIxMW1zZy5oIgorI2luY2x1ZGUgInA4MDIxMW5ldGRldi5oIgorI2luY2x1ZGUgInA4MDIxMWlvY3RsLmgiCisjaW5jbHVkZSAicDgwMjExcmVxLmgiCisjaW5jbHVkZSAicDgwMjExbWV0YXN0cnVjdC5oIgorI2luY2x1ZGUgInA4MDIxMW1ldGFkZWYuaCIKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIENvbnN0YW50cyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgTWFjcm9zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFR5cGVzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBTdGF0aWMgRGVmaW5pdGlvbnMgKi8KKworI2RlZmluZSBfX05PX1ZFUlNJT05fXwkJLyogcHJldmVudCB0aGUgc3RhdGljIGRlZmluaXRpb24gKi8KKworI2lmZGVmIENPTkZJR19QUk9DX0ZTCitzdGF0aWMgc3RydWN0IHByb2NfZGlyX2VudHJ5CSpwcm9jX3A4MDIxMTsKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKKy8qIFN1cHBvcnQgZnVuY3Rpb25zICovCitzdGF0aWMgdm9pZCBwODAyMTFuZXRkZXZfcnhfYmgodW5zaWduZWQgbG9uZyBhcmcpOworCisvKiBuZXRkZXZpY2UgbWV0aG9kIGZ1bmN0aW9ucyAqLworc3RhdGljIGludCBwODAyMTFrbmV0ZGV2X2luaXQoIG5ldGRldmljZV90ICpuZXRkZXYpOworc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKiBwODAyMTFrbmV0ZGV2X2dldF9zdGF0cyhuZXRkZXZpY2VfdCAqbmV0ZGV2KTsKK3N0YXRpYyBpbnQgcDgwMjExa25ldGRldl9vcGVuKCBuZXRkZXZpY2VfdCAqbmV0ZGV2KTsKK3N0YXRpYyBpbnQgcDgwMjExa25ldGRldl9zdG9wKCBuZXRkZXZpY2VfdCAqbmV0ZGV2ICk7CitzdGF0aWMgaW50IHA4MDIxMWtuZXRkZXZfaGFyZF9zdGFydF94bWl0KCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZpY2VfdCAqbmV0ZGV2KTsKK3N0YXRpYyB2b2lkIHA4MDIxMWtuZXRkZXZfc2V0X211bHRpY2FzdF9saXN0KG5ldGRldmljZV90ICpkZXYpOworc3RhdGljIGludCBwODAyMTFrbmV0ZGV2X2RvX2lvY3RsKG5ldGRldmljZV90ICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKTsKK3N0YXRpYyBpbnQgcDgwMjExa25ldGRldl9zZXRfbWFjX2FkZHJlc3MobmV0ZGV2aWNlX3QgKmRldiwgdm9pZCAqYWRkcik7CitzdGF0aWMgdm9pZCBwODAyMTFrbmV0ZGV2X3R4X3RpbWVvdXQobmV0ZGV2aWNlX3QgKm5ldGRldik7CitzdGF0aWMgaW50IHA4MDIxMV9yeF90eXBlZHJvcCggd2xhbmRldmljZV90ICp3bGFuZGV2LCBVSU5UMTYgZmMpOworCisjaWZkZWYgQ09ORklHX1BST0NfRlMKK3N0YXRpYyBpbnQKK3A4MDIxMW5ldGRldl9wcm9jX3JlYWQoCisJY2hhcgkqcGFnZSwKKwljaGFyCSoqc3RhcnQsCisJb2ZmX3QJb2Zmc2V0LAorCWludAljb3VudCwKKwlpbnQJKmVvZiwKKwl2b2lkCSpkYXRhKTsKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVmaW5pdGlvbnMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfc3RhcnR1cAorKgorKiBJbml0aWFsaXplIHRoZSB3bGFuZGV2aWNlL25ldGRldmljZSBwYXJ0IG9mIDgwMi4xMSBzZXJ2aWNlcyBhdAorKiBsb2FkIHRpbWUuCisqCisqIEFyZ3VtZW50czoKKyoJbm9uZQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcDgwMjExbmV0ZGV2X3N0YXJ0dXAodm9pZCkKK3sKKwlEQkZFTlRFUjsKKworI2lmZGVmIENPTkZJR19QUk9DX0ZTCisJaWYgKGluaXRfbmV0LnByb2NfbmV0ICE9IE5VTEwpIHsKKwkJcHJvY19wODAyMTEgPSBjcmVhdGVfcHJvY19lbnRyeSgKKwkJCQkicDgwMjExIiwKKwkJCQkoU19JRkRJUnxTX0lSVUdPfFNfSVhVR08pLAorCQkJCWluaXRfbmV0LnByb2NfbmV0KTsKKwl9CisjZW5kaWYKKwlEQkZFWElUOworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfc2h1dGRvd24KKyoKKyogU2h1dGRvd24gdGhlIHdsYW5kZXZpY2UvbmV0ZGV2aWNlIHBhcnQgb2YgODAyLjExIHNlcnZpY2VzIGF0CisqIHVubG9hZCB0aW1lLgorKgorKiBBcmd1bWVudHM6CisqCW5vbmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkCitwODAyMTFuZXRkZXZfc2h1dGRvd24odm9pZCkKK3sKKwlEQkZFTlRFUjsKKyNpZmRlZiBDT05GSUdfUFJPQ19GUworCWlmIChwcm9jX3A4MDIxMSAhPSBOVUxMKSB7CisJCXJlbW92ZV9wcm9jX2VudHJ5KCJwODAyMTEiLCBpbml0X25ldC5wcm9jX25ldCk7CisJfQorI2VuZGlmCisJREJGRVhJVDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfaW5pdAorKgorKiBJbml0IG1ldGhvZCBmb3IgYSBMaW51eCBuZXRkZXZpY2UuICBDYWxsZWQgaW4gcmVzcG9uc2UgdG8KKyogcmVnaXN0ZXJfbmV0ZGV2LgorKgorKiBBcmd1bWVudHM6CisqCW5vbmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHA4MDIxMWtuZXRkZXZfaW5pdCggbmV0ZGV2aWNlX3QgKm5ldGRldikKK3sKKwlEQkZFTlRFUjsKKwkvKiBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gcmVnaXN0ZXJfbmV0ZGV2ICovCisJLyogVGhpcyBpcyB1c3VhbGx5IHRoZSBwcm9iZSBmdW5jdGlvbiwgYnV0IHRoZSBwcm9iZSBoYXMgKi8KKwkvKiBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgTVNEIGFuZCB0aGUgY3JlYXRlX2tkZXYgKi8KKwkvKiBmdW5jdGlvbi4gIEFsbCB3ZSBkbyBoZXJlIGlzIHJldHVybiBzdWNjZXNzICovCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExa25ldGRldl9nZXRfc3RhdHMKKyoKKyogU3RhdGlzdGljcyByZXRyaWV2YWwgZm9yIGxpbnV4IG5ldGRldmljZXMuICBIZXJlIHdlJ3JlIHJlcG9ydGluZworKiB0aGUgTGludXggaS9mIGxldmVsIHN0YXRpc3RpY3MuICBIZW5jZSwgZm9yIHRoZSBwcmltYXJ5IG51bWJlcnMsCisqIHdlIGRvbid0IHdhbnQgdG8gcmVwb3J0IHRoZSBudW1iZXJzIGZyb20gdGhlIE1JQi4gIEV2ZW50dWFsbHksCisqIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBjb2xsZWN0IHNvbWUgb2YgdGhlIGVycm9yIGNvdW50ZXJzIHRob3VnaC4KKyoKKyogQXJndW1lbnRzOgorKgluZXRkZXYJCUxpbnV4IG5ldGRldmljZQorKgorKiBSZXR1cm5zOgorKgl0aGUgYWRkcmVzcyBvZiB0aGUgc3RhdGlzdGljcyBzdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKgorcDgwMjExa25ldGRldl9nZXRfc3RhdHMobmV0ZGV2aWNlX3QgKm5ldGRldikKK3sKKwl3bGFuZGV2aWNlX3QJKndsYW5kZXYgPSAod2xhbmRldmljZV90KiluZXRkZXYtPnByaXY7CisJREJGRU5URVI7CisKKwkvKiBUT0RPOiByZXZpZXcgdGhlIE1JQiBzdGF0cyBmb3IgaXRlbXMgdGhhdCBjb3JyZXNwb25kIHRvCisJCWxpbnV4IHN0YXRzICovCisKKwlEQkZFWElUOworCXJldHVybiAmKHdsYW5kZXYtPmxpbnV4X3N0YXRzKTsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExa25ldGRldl9vcGVuCisqCisqIExpbnV4IG5ldGRldmljZSBvcGVuIG1ldGhvZC4gIEZvbGxvd2luZyBhIHN1Y2Nlc3NmdWwgY2FsbCBoZXJlLAorKiB0aGUgZGV2aWNlIGlzIHN1cHBvc2VkIHRvIGJlIHJlYWR5IGZvciB0eCBhbmQgcnguICBJbiBvdXIKKyogc2l0dWF0aW9uIHRoYXQgbWF5IG5vdCBiZSBlbnRpcmVseSB0cnVlIGR1ZSB0byB0aGUgc3RhdGUgb2YgdGhlCisqIE1BQyBiZWxvdy4KKyoKKyogQXJndW1lbnRzOgorKgluZXRkZXYJCUxpbnV4IG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgl6ZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHA4MDIxMWtuZXRkZXZfb3BlbiggbmV0ZGV2aWNlX3QgKm5ldGRldiApCit7CisJaW50IAkJcmVzdWx0ID0gMDsgLyogc3VjY2VzcyAqLworCXdsYW5kZXZpY2VfdAkqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKShuZXRkZXYtPnByaXYpOworCisJREJGRU5URVI7CisKKwkvKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIE1TRCBpcyBydW5uaW5nICovCisJaWYgKCB3bGFuZGV2LT5tc2RzdGF0ZSAhPSBXTEFOX01TRF9SVU5OSU5HICkgeworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBUZWxsIHRoZSBNU0QgdG8gb3BlbiAqLworCWlmICggd2xhbmRldi0+b3BlbiAhPSBOVUxMKSB7CisJCXJlc3VsdCA9IHdsYW5kZXYtPm9wZW4od2xhbmRldik7CisJCWlmICggcmVzdWx0ID09IDAgKSB7CisjaWYgKCBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsNDMpICkKKwkJCW5ldGRldi0+aW50ZXJydXB0ID0gMDsKKyNlbmRpZgorCQkJcDgwMjExbmV0ZGV2X3N0YXJ0X3F1ZXVlKHdsYW5kZXYpOworCQkJd2xhbmRldi0+c3RhdGUgPSBXTEFOX0RFVklDRV9PUEVOOworCQl9CisJfSBlbHNlIHsKKwkJcmVzdWx0ID0gLUVBR0FJTjsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfc3RvcAorKgorKiBMaW51eCBuZXRkZXZpY2Ugc3RvcCAoY2xvc2UpIG1ldGhvZC4gIEZvbGxvd2luZyB0aGlzIGNhbGwsCisqIG5vIGZyYW1lcyBzaG91bGQgZ28gdXAgb3IgZG93biB0aHJvdWdoIHRoaXMgaW50ZXJmYWNlLgorKgorKiBBcmd1bWVudHM6CisqCW5ldGRldgkJTGludXggbmV0d29yayBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCXplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgcDgwMjExa25ldGRldl9zdG9wKCBuZXRkZXZpY2VfdCAqbmV0ZGV2ICkKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJd2xhbmRldmljZV90CSp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopKG5ldGRldi0+cHJpdik7CisKKwlEQkZFTlRFUjsKKworCWlmICggd2xhbmRldi0+Y2xvc2UgIT0gTlVMTCApIHsKKwkJcmVzdWx0ID0gd2xhbmRldi0+Y2xvc2Uod2xhbmRldik7CisJfQorCisJcDgwMjExbmV0ZGV2X3N0b3BfcXVldWUod2xhbmRldik7CisJd2xhbmRldi0+c3RhdGUgPSBXTEFOX0RFVklDRV9DTE9TRUQ7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFuZXRkZXZfcngKKyoKKyogRnJhbWUgcmVjZWl2ZSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIG1hYyBzcGVjaWZpYyBkcml2ZXIuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJV0xBTiBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKKyoJc2tiCQlza2J1ZmYgY29udGFpbmluZyBhIGZ1bGwgODAyLjExIGZyYW1lLgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqIFNpZGUgZWZmZWN0czoKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZAorcDgwMjExbmV0ZGV2X3J4KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiApCit7CisJREJGRU5URVI7CisKKwkvKiBFbnF1ZXVlIGZvciBwb3N0LWlycSBwcm9jZXNzaW5nICovCisJc2tiX3F1ZXVlX3RhaWwoJndsYW5kZXYtPm5zZF9yeHEsIHNrYik7CisKKwl0YXNrbGV0X3NjaGVkdWxlKCZ3bGFuZGV2LT5yeF9iaCk7CisKKyAgICAgICAgREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFuZXRkZXZfcnhfYmgKKyoKKyogRGVmZXJyZWQgcHJvY2Vzc2luZyBvZiBhbGwgcmVjZWl2ZWQgZnJhbWVzLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCVdMQU4gbmV0d29yayBkZXZpY2Ugc3RydWN0dXJlCisqCXNrYgkJc2tidWZmIGNvbnRhaW5pbmcgYSBmdWxsIDgwMi4xMSBmcmFtZS4KKyogUmV0dXJuczoKKyoJbm90aGluZworKiBTaWRlIGVmZmVjdHM6CisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHA4MDIxMW5ldGRldl9yeF9iaCh1bnNpZ25lZCBsb25nIGFyZykKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90ICopIGFyZzsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKKwluZXRkZXZpY2VfdCAgICAgKmRldiA9IHdsYW5kZXYtPm5ldGRldjsKKwlwODAyMTFfaGRyX2EzX3QgKmhkcjsKKwlVSU5UMTYgZmM7CisKKyAgICAgICAgREJGRU5URVI7CisKKwkvKiBMZXQncyBlbXB0eSBvdXIgb3VyIHF1ZXVlICovCisJd2hpbGUgKCAoc2tiID0gc2tiX2RlcXVldWUoJndsYW5kZXYtPm5zZF9yeHEpKSApIHsKKwkJaWYgKHdsYW5kZXYtPnN0YXRlID09IFdMQU5fREVWSUNFX09QRU4pIHsKKworCQkJaWYgKGRldi0+dHlwZSAhPSBBUlBIUkRfRVRIRVIpIHsKKwkJCQkvKiBSQVcgZnJhbWU7IHdlIHNob3VsZG4ndCBjb252ZXJ0IGl0ICovCisJCQkJLy8gWFhYIEFwcGVuZCB0aGUgUHJpc20gSGVhZGVyIGhlcmUgaW5zdGVhZC4KKworCQkJCS8qIHNldCB1cCB2YXJpb3VzIGRhdGEgZmllbGRzICovCisJCQkJc2tiLT5kZXYgPSBkZXY7CisJCQkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKwkJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7CisJCQkJc2tiLT5wa3RfdHlwZSA9IFBBQ0tFVF9PVEhFUkhPU1Q7CisJCQkJc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QXzgwMjExX1JBVyk7CisJCQkJZGV2LT5sYXN0X3J4ID0gamlmZmllczsKKworCQkJCXdsYW5kZXYtPmxpbnV4X3N0YXRzLnJ4X3BhY2tldHMrKzsKKwkJCQl3bGFuZGV2LT5saW51eF9zdGF0cy5yeF9ieXRlcyArPSBza2ItPmxlbjsKKwkJCQluZXRpZl9yeF9uaShza2IpOworCQkJCWNvbnRpbnVlOworCQkJfSBlbHNlIHsKKwkJCQloZHIgPSAocDgwMjExX2hkcl9hM190ICopc2tiLT5kYXRhOworCQkJCWZjID0gaWVlZTJob3N0MTYoaGRyLT5mYyk7CisJCQkJaWYgKHA4MDIxMV9yeF90eXBlZHJvcCh3bGFuZGV2LCBmYykpIHsKKwkJCQkJZGV2X2tmcmVlX3NrYihza2IpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisKKwkJCQkvKiBwZXJmb3JtIG1jYXN0IGZpbHRlcmluZyAqLworCQkJCWlmICh3bGFuZGV2LT5uZXRkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSB7CisJCQkJCS8qIGFsbG93IG15IGxvY2FsIGFkZHJlc3MgdGhyb3VnaCAqLworCQkJCQlpZiAobWVtY21wKGhkci0+YTEsIHdsYW5kZXYtPm5ldGRldi0+ZGV2X2FkZHIsIFdMQU5fQUREUl9MRU4pICE9IDApIHsKKwkJCQkJCS8qIGJ1dCByZWplY3QgYW55dGhpbmcgZWxzZSB0aGF0IGlzbid0IG11bHRpY2FzdCAqLworCQkJCQkJaWYgKCEoaGRyLT5hMVswXSAmIDB4MDEpKSB7CisJCQkJCQkJZGV2X2tmcmVlX3NrYihza2IpOworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCisJCQkJaWYgKCBza2JfcDgwMjExX3RvX2V0aGVyKHdsYW5kZXYsIHdsYW5kZXYtPmV0aGNvbnYsIHNrYikgPT0gMCApIHsKKwkJCQkJc2tiLT5kZXYtPmxhc3RfcnggPSBqaWZmaWVzOworCQkJCQl3bGFuZGV2LT5saW51eF9zdGF0cy5yeF9wYWNrZXRzKys7CisJCQkJCXdsYW5kZXYtPmxpbnV4X3N0YXRzLnJ4X2J5dGVzICs9IHNrYi0+bGVuOworCQkJCQluZXRpZl9yeF9uaShza2IpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJV0xBTl9MT0dfREVCVUcoMSwgInA4MDIxMV90b19ldGhlciBmYWlsZWQuXG4iKTsKKwkJCX0KKwkJfQorCQlkZXZfa2ZyZWVfc2tiKHNrYik7CisJfQorCisgICAgICAgIERCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfaGFyZF9zdGFydF94bWl0CisqCisqIExpbnV4IG5ldGRldmljZSBtZXRob2QgZm9yIHRyYW5zbWl0dGluZyBhIGZyYW1lLgorKgorKiBBcmd1bWVudHM6CisqCXNrYglMaW51eCBza19idWZmIGNvbnRhaW5pbmcgdGhlIGZyYW1lLgorKgluZXRkZXYJTGludXggbmV0ZGV2aWNlLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCUlmIHRoZSBsb3dlciBsYXllcnMgcmVwb3J0IHRoYXQgYnVmZmVycyBhcmUgZnVsbC4gbmV0ZGV2LT50YnVzeQorKgl3aWxsIGJlIHNldCB0byBwcmV2ZW50IGhpZ2hlciBsYXllcnMgZnJvbSBzZW5kaW5nIG1vcmUgdHJhZmZpYy4KKyoKKyoJTm90ZTogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vbi16ZXJvLCBoaWdoZXIgbGF5ZXJzIHJldGFpbgorKgkgICAgICBvd25lcnNoaXAgb2YgdGhlIHNrYi4KKyoKKyogUmV0dXJuczoKKyoJemVybyBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHA4MDIxMWtuZXRkZXZfaGFyZF9zdGFydF94bWl0KCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZpY2VfdCAqbmV0ZGV2KQoreworCWludAkJcmVzdWx0ID0gMDsKKwlpbnQJCXR4cmVzdWx0ID0gLTE7CisJd2xhbmRldmljZV90CSp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopbmV0ZGV2LT5wcml2OworCXA4MDIxMV9oZHJfdCAgICBwODAyMTFfaGRyOworCXA4MDIxMV9tZXRhd2VwX3QgcDgwMjExX3dlcDsKKworCURCRkVOVEVSOworCisJaWYgKHNrYiA9PSBOVUxMKSB7CisJCXJldHVybiAwOworCX0KKworICAgICAgICBpZiAod2xhbmRldi0+c3RhdGUgIT0gV0xBTl9ERVZJQ0VfT1BFTikgeworCQlyZXN1bHQgPSAxOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwltZW1zZXQoJnA4MDIxMV9oZHIsIDAsIHNpemVvZihwODAyMTFfaGRyX3QpKTsKKwltZW1zZXQoJnA4MDIxMV93ZXAsIDAsIHNpemVvZihwODAyMTFfbWV0YXdlcF90KSk7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwzLDM4KSApCisJaWYgKCB0ZXN0X2FuZF9zZXRfYml0KDAsICh2b2lkKikmKG5ldGRldi0+dGJ1c3kpKSAhPSAwICkgeworCQkvKiBXZSd2ZSBiZWVuIGNhbGxlZCB3LyB0YnVzeSBzZXQsIGhhcyB0aGUgdHggKi8KKwkJLyogcGF0aCBzdGFsbGVkPyAgICovCisJCVdMQU5fTE9HX0RFQlVHKDEsICJjYWxsZWQgd2hlbiB0YnVzeSBzZXRcbiIpOworCQlyZXN1bHQgPSAxOworCQlnb3RvIGZhaWxlZDsKKwl9CisjZWxzZQorCWlmICggbmV0aWZfcXVldWVfc3RvcHBlZChuZXRkZXYpICkgeworCQlXTEFOX0xPR19ERUJVRygxLCAiY2FsbGVkIHdoZW4gcXVldWUgc3RvcHBlZC5cbiIpOworCQlyZXN1bHQgPSAxOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwluZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7CisKKwkvKiBObyB0aW1lb3V0IGhhbmRsaW5nIGhlcmUsIDIuMy4zOCsga2VybmVscyBjYWxsIHRoZQorCSAqIHRpbWVvdXQgZnVuY3Rpb24gZGlyZWN0bHkuCisJICogVE9ETzogQWRkIHRpbWVvdXQgaGFuZGxpbmcuCisJKi8KKyNlbmRpZgorCisJLyogQ2hlY2sgdG8gc2VlIHRoYXQgYSB2YWxpZCBtb2RlIGlzIHNldCAqLworCXN3aXRjaCggd2xhbmRldi0+bWFjbW9kZSApIHsKKwljYXNlIFdMQU5fTUFDTU9ERV9JQlNTX1NUQToKKwljYXNlIFdMQU5fTUFDTU9ERV9FU1NfU1RBOgorCWNhc2UgV0xBTl9NQUNNT0RFX0VTU19BUDoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJLyogTW9kZSBpc24ndCBzZXQgeWV0LCBqdXN0IGRyb3AgdGhlIGZyYW1lCisJCSAqIGFuZCByZXR1cm4gc3VjY2VzcyAuCisJCSAqIFRPRE86IHdlIG5lZWQgYSBzYW5lciB3YXkgdG8gaGFuZGxlIHRoaXMKKwkJICovCisJCWlmKHNrYi0+cHJvdG9jb2wgIT0gRVRIX1BfODAyMTFfUkFXKSB7CisJCQlwODAyMTFuZXRkZXZfc3RhcnRfcXVldWUod2xhbmRldik7CisJCQlXTEFOX0xPR19OT1RJQ0UoCisJCQkJIlR4IGF0dGVtcHQgcHJpb3IgdG8gYXNzb2NpYXRpb24sIGZyYW1lIGRyb3BwZWQuXG4iKTsKKwkJCXdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X2Ryb3BwZWQrKzsKKwkJCXJlc3VsdCA9IDA7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCQlicmVhazsKKwl9CisKKwkvKiBDaGVjayBmb3IgcmF3IHRyYW5zbWl0cyAqLworCWlmKHNrYi0+cHJvdG9jb2wgPT0gRVRIX1BfODAyMTFfUkFXKSB7CisJCWlmICghY2FwYWJsZShDQVBfTkVUX0FETUlOKSkgeworCQkJcmVzdWx0ID0gMTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisJCS8qIG1vdmUgdGhlIGhlYWRlciBvdmVyICovCisJCW1lbWNweSgmcDgwMjExX2hkciwgc2tiLT5kYXRhLCBzaXplb2YocDgwMjExX2hkcl90KSk7CisJCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHA4MDIxMV9oZHJfdCkpOworCX0gZWxzZSB7CisJCWlmICggc2tiX2V0aGVyX3RvX3A4MDIxMSh3bGFuZGV2LCB3bGFuZGV2LT5ldGhjb252LCBza2IsICZwODAyMTFfaGRyLCAmcDgwMjExX3dlcCkgIT0gMCApIHsKKwkJCS8qIGNvbnZlcnQgZmFpbGVkICovCisJCQlXTEFOX0xPR19ERUJVRygxLCAiZXRoZXJfdG9fODAyMTEoJWQpIGZhaWxlZC5cbiIsCisJCQkJCXdsYW5kZXYtPmV0aGNvbnYpOworCQkJcmVzdWx0ID0gMTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisJfQorCWlmICggd2xhbmRldi0+dHhmcmFtZSA9PSBOVUxMICkgeworCQlyZXN1bHQgPSAxOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwluZXRkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmllczsKKworCXdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X3BhY2tldHMrKzsKKwkvKiBjb3VudCBvbmx5IHRoZSBwYWNrZXQgcGF5bG9hZCAqLworCXdsYW5kZXYtPmxpbnV4X3N0YXRzLnR4X2J5dGVzICs9IHNrYi0+bGVuOworCisJdHhyZXN1bHQgPSB3bGFuZGV2LT50eGZyYW1lKHdsYW5kZXYsIHNrYiwgJnA4MDIxMV9oZHIsICZwODAyMTFfd2VwKTsKKworCWlmICggdHhyZXN1bHQgPT0gMCkgeworCQkvKiBzdWNjZXNzIGFuZCBtb3JlIGJ1ZiAqLworCQkvKiBhdmFpbCwgcmU6IGh3X3R4ZGF0YSAqLworCQlwODAyMTFuZXRkZXZfd2FrZV9xdWV1ZSh3bGFuZGV2KTsKKwkJcmVzdWx0ID0gMDsKKwl9IGVsc2UgaWYgKCB0eHJlc3VsdCA9PSAxICkgeworCQkvKiBzdWNjZXNzLCBubyBtb3JlIGF2YWlsICovCisJCVdMQU5fTE9HX0RFQlVHKDMsICJ0eGZyYW1lIHN1Y2Nlc3MsIG5vIG1vcmUgYnVmc1xuIik7CisJCS8qIG5ldGRldi0+dGJ1c3kgPSAxOyAgZG9uJ3Qgc2V0IGhlcmUsIGlycWhkbHIgKi8KKwkJLyogICBtYXkgaGF2ZSBhbHJlYWR5IGNsZWFyZWQgaXQgKi8KKwkJcmVzdWx0ID0gMDsKKwl9IGVsc2UgaWYgKCB0eHJlc3VsdCA9PSAyICkgeworCQkvKiBhbGxvYyBmYWlsdXJlLCBkcm9wIGZyYW1lICovCisJCVdMQU5fTE9HX0RFQlVHKDMsICJ0eGZyYW1lIHJldHVybmVkIGFsbG9jX2ZhaWxcbiIpOworCQlyZXN1bHQgPSAxOworCX0gZWxzZSB7CisJCS8qIGJ1ZmZlciBmdWxsIG9yIHF1ZXVlIGJ1c3ksIGRyb3AgZnJhbWUuICovCisJCVdMQU5fTE9HX0RFQlVHKDMsICJ0eGZyYW1lIHJldHVybmVkIGZ1bGwgb3IgYnVzeVxuIik7CisJCXJlc3VsdCA9IDE7CisJfQorCisgZmFpbGVkOgorCS8qIEZyZWUgdXAgdGhlIFdFUCBidWZmZXIgaWYgaXQncyBub3QgdGhlIHNhbWUgYXMgdGhlIHNrYiAqLworCWlmICgocDgwMjExX3dlcC5kYXRhKSAmJiAocDgwMjExX3dlcC5kYXRhICE9IHNrYi0+ZGF0YSkpCisJCWtmcmVlKHA4MDIxMV93ZXAuZGF0YSk7CisKKwkvKiB3ZSBhbHdheXMgZnJlZSB0aGUgc2tiIGhlcmUsIG5ldmVyIGluIGEgbG93ZXIgbGV2ZWwuICovCisJaWYgKCFyZXN1bHQpCisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExa25ldGRldl9zZXRfbXVsdGljYXN0X2xpc3QKKyoKKyogQ2FsbGVkIGZyb20gaGlnaGVyIGxhdmVycyB3aGVuZXZlciB0aGVyZSdzIGEgbmVlZCB0byBzZXQvY2xlYXIKKyogcHJvbWlzY3VvdXMgbW9kZSBvciByZXdyaXRlIHRoZSBtdWx0aWNhc3QgbGlzdC4KKyoKKyogQXJndW1lbnRzOgorKglub25lCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcDgwMjExa25ldGRldl9zZXRfbXVsdGljYXN0X2xpc3QobmV0ZGV2aWNlX3QgKmRldikKK3sKKwl3bGFuZGV2aWNlX3QJKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisKKwlEQkZFTlRFUjsKKworCS8qIFRPRE86ICByZWFsIG11bHRpY2FzdCBzdXBwb3J0IGFzIHdlbGwgKi8KKworCWlmICh3bGFuZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QpCisJCXdsYW5kZXYtPnNldF9tdWx0aWNhc3RfbGlzdCh3bGFuZGV2LCBkZXYpOworCisJREJGRVhJVDsKK30KKworI2lmZGVmIFNJT0NFVEhUT09MCisKK3N0YXRpYyBpbnQgcDgwMjExbmV0ZGV2X2V0aHRvb2wod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkIF9fdXNlciAqdXNlcmFkZHIpCit7CisJVUlOVDMyIGV0aGNtZDsKKwlzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvIGluZm87CisJc3RydWN0IGV0aHRvb2xfdmFsdWUgZWRhdGE7CisKKwltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJbWVtc2V0KCZlZGF0YSwgMCwgc2l6ZW9mKGVkYXRhKSk7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJmV0aGNtZCwgdXNlcmFkZHIsIHNpemVvZihldGhjbWQpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlzd2l0Y2ggKGV0aGNtZCkgeworCWNhc2UgRVRIVE9PTF9HRFJWSU5GTzoKKwkJaW5mby5jbWQgPSBldGhjbWQ7CisJCXNucHJpbnRmKGluZm8uZHJpdmVyLCBzaXplb2YoaW5mby5kcml2ZXIpLCAicDgwMjExXyVzIiwKKwkJCSB3bGFuZGV2LT5uc2RuYW1lKTsKKwkJc25wcmludGYoaW5mby52ZXJzaW9uLCBzaXplb2YoaW5mby52ZXJzaW9uKSwgIiVzIiwKKwkJCSBXTEFOX1JFTEVBU0UpOworCisJCS8vIGluZm8uZndfdmVyc2lvbgorCQkvLyBpbmZvLmJ1c19pbmZvCisKKwkJaWYgKGNvcHlfdG9fdXNlcih1c2VyYWRkciwgJmluZm8sIHNpemVvZihpbmZvKSkpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJcmV0dXJuIDA7CisjaWZkZWYgRVRIVE9PTF9HTElOSworCWNhc2UgRVRIVE9PTF9HTElOSzoKKwkJZWRhdGEuY21kID0gZXRoY21kOworCisJCWlmICh3bGFuZGV2LT5saW5rc3RhdHVzICYmCisJCSAgICAod2xhbmRldi0+bWFjbW9kZSAhPSBXTEFOX01BQ01PREVfTk9ORSkpIHsKKwkJCWVkYXRhLmRhdGEgPSAxOworCQl9IGVsc2UgeworCQkJZWRhdGEuZGF0YSA9IDA7CisJCX0KKworCQlpZiAoY29weV90b191c2VyKHVzZXJhZGRyLCAmZWRhdGEsIHNpemVvZihlZGF0YSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgorCisJcmV0dXJuIC1FT1BOT1RTVVBQOworfQorCisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMWtuZXRkZXZfZG9faW9jdGwKKyoKKyogSGFuZGxlIGFuIGlvY3RsIGNhbGwgb24gb25lIG9mIG91ciBkZXZpY2VzLiAgRXZlcnl0aGluZyBMaW51eAorKiBpb2N0bCBzcGVjaWZpYyBpcyBkb25lIGhlcmUuICBUaGVuIHdlIHBhc3MgdGhlIGNvbnRlbnRzIG9mIHRoZQorKiBpZnItPmRhdGEgdG8gdGhlIHJlcXVlc3QgbWVzc2FnZSBoYW5kbGVyLgorKgorKiBBcmd1bWVudHM6CisqCWRldglMaW51eCBrZXJuZWwgbmV0ZGV2aWNlCisqCWlmcglPdXIgcHJpdmF0ZSBpb2N0bCByZXF1ZXN0IHN0cnVjdHVyZSwgdHlwZWQgZm9yIHRoZQorKgkJZ2VuZXJpYyBzdHJ1Y3QgaWZyZXEgc28gd2UgY2FuIHVzZSBwdHIgdG8gZnVuYworKgkJdy9vIGNhc3QuCisqCisqIFJldHVybnM6CisqCXplcm8gb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLiAgUG9zc2libGUgdmFsdWVzOgorKgkJLUVORVRET1dOIERldmljZSBpc24ndCB1cC4KKyoJCS1FQlVTWQljbWQgYWxyZWFkeSBpbiBwcm9ncmVzcworKgkJLUVUSU1FCXA4MDIxMSBjbWQgdGltZWQgb3V0IChNU0QgbWF5IGhhdmUgaXRzIG93biB0aW1lcnMpCisqCQktRUZBVUxUIG1lbW9yeSBmYXVsdCBjb3B5aW5nIG1zZyBmcm9tIHVzZXIgYnVmZmVyCisqCQktRU5PTUVNIHVuYWJsZSB0byBhbGxvY2F0ZSBrZXJuZWwgbXNnIGJ1ZmZlcgorKgkJLUVOT1NZUwliYWQgbWFnaWMsIGl0IHRoZSBjbWQgcmVhbGx5IGZvciB1cz8KKyoJCS1FSU5UUglzbGVlcGluZyBvbiBjbWQsIGF3YWtlbmVkIGJ5IHNpZ25hbCwgY21kIGNhbmNlbGxlZC4KKyoKKyogQ2FsbCBDb250ZXh0OgorKglQcm9jZXNzIHRocmVhZCAoaW9jdGwgY2FsbGVyKS4gIFRPRE86IFNNUCBzdXBwb3J0IG1heSByZXF1aXJlCisqCWxvY2tzLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHA4MDIxMWtuZXRkZXZfZG9faW9jdGwobmV0ZGV2aWNlX3QgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpCit7CisJaW50CQkJcmVzdWx0ID0gMDsKKwlwODAyMTFpb2N0bF9yZXFfdAkqcmVxID0gKHA4MDIxMWlvY3RsX3JlcV90KilpZnI7CisJd2xhbmRldmljZV90CQkqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlVSU5UOAkJCSptc2didWY7CisJREJGRU5URVI7CisKKwlXTEFOX0xPR19ERUJVRygyLCAicngnZCBpb2N0bCwgY21kPSVkLCBsZW49JWRcbiIsIGNtZCwgcmVxLT5sZW4pOworCisjaWYgV0lSRUxFU1NfRVhUIDwgMTMKKwkvKiBJcyB0aGlzIGEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBpb2N0bD8gKi8KKwlpZiAoKGNtZCA+PSBTSU9DSVdGSVJTVCkgJiYgKGNtZCA8PSBTSU9DSVdMQVNUKSkgeworCQlpZiAoKHJlc3VsdCA9IHA4MDIxMXdleHRfc3VwcG9ydF9pb2N0bChkZXYsIGlmciwgY21kKSkKKwkJICAgICE9ICgtRU9QTk9UU1VQUCkpIHsKKwkJCWdvdG8gYmFpbDsKKwkJfQorCX0KKyNlbmRpZgorCisjaWZkZWYgU0lPQ0VUSFRPT0wKKwlpZiAoY21kID09IFNJT0NFVEhUT09MKSB7CisJCXJlc3VsdCA9IHA4MDIxMW5ldGRldl9ldGh0b29sKHdsYW5kZXYsICh2b2lkIF9fdXNlciAqKSBpZnItPmlmcl9kYXRhKTsKKwkJZ290byBiYWlsOworCX0KKyNlbmRpZgorCisJLyogVGVzdCB0aGUgbWFnaWMsIGFzc3VtZSBpZnIgaXMgZ29vZCBpZiBpdCdzIHRoZXJlICovCisJaWYgKCByZXEtPm1hZ2ljICE9IFA4MDIxMV9JT0NUTF9NQUdJQyApIHsKKwkJcmVzdWx0ID0gLUVOT1NZUzsKKwkJZ290byBiYWlsOworCX0KKworCWlmICggY21kID09IFA4MDIxMV9JRlRFU1QgKSB7CisJCXJlc3VsdCA9IDA7CisJCWdvdG8gYmFpbDsKKwl9IGVsc2UgaWYgKCBjbWQgIT0gUDgwMjExX0lGUkVRICkgeworCQlyZXN1bHQgPSAtRU5PU1lTOworCQlnb3RvIGJhaWw7CisJfQorCisJLyogQWxsb2NhdGUgYSBidWYgb2Ygc2l6ZSByZXEtPmxlbiAqLworCWlmICgobXNnYnVmID0ga21hbGxvYyggcmVxLT5sZW4sIEdGUF9LRVJORUwpKSkgeworCQlpZiAoIGNvcHlfZnJvbV91c2VyKCBtc2didWYsICh2b2lkIF9fdXNlciAqKSByZXEtPmRhdGEsIHJlcS0+bGVuKSApIHsKKwkJCXJlc3VsdCA9IC1FRkFVTFQ7CisJCX0gZWxzZSB7CisJCQlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KCB3bGFuZGV2LCBtc2didWYpOworCQl9CisKKwkJaWYgKCByZXN1bHQgPT0gMCApIHsKKwkJCWlmICggY29weV90b191c2VyKCAodm9pZCBfX3VzZXIgKikgcmVxLT5kYXRhLCBtc2didWYsIHJlcS0+bGVuKSkgeworCQkJCXJlc3VsdCA9IC1FRkFVTFQ7CisJCQl9CisJCX0KKwkJa2ZyZWUobXNnYnVmKTsKKwl9IGVsc2UgeworCQlyZXN1bHQgPSAtRU5PTUVNOworCX0KK2JhaWw6CisJREJGRVhJVDsKKworCXJldHVybiByZXN1bHQ7IC8qIElmIGFsbG9jYXRlLGNvcHlmcm9tIG9yIGNvcHl0byBmYWlscywgcmV0dXJuIGVycm5vICovCit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwODAyMTFrbmV0ZGV2X3NldF9tYWNfYWRkcmVzcworKgorKiBIYW5kbGVzIHRoZSBpb2N0bCBmb3IgY2hhbmdpbmcgdGhlIE1BQ0FkZHJlc3Mgb2YgYSBuZXRkZXZpY2UKKyoKKyogcmVmZXJlbmNlczogbGludXgvbmV0ZGV2aWNlLmggYW5kIGRyaXZlcnMvbmV0L25ldF9pbml0LmMKKyoKKyogTk9URTogW01TTV0gV2Ugb25seSBwcmV2ZW50IGFkZHJlc3MgY2hhbmdlcyB3aGVuIHRoZSBuZXRkZXYgaXMKKyogdXAuICBXZSBkb24ndCBjb250cm9sIGFueXRoaW5nIGJhc2VkIG9uIGRvdDExIHN0YXRlLiAgSWYgdGhlCisqIGFkZHJlc3MgaXMgY2hhbmdlZCBvbiBhIFNUQSB0aGF0J3MgY3VycmVudGx5IGFzc29jaWF0ZWQsIHlvdQorKiB3aWxsIHByb2JhYmx5IGxvc2UgdGhlIGFiaWxpdHkgdG8gc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIGZyYW1lcy4KKyogSnVzdCBiZSBhd2FyZS4gIFRoZXJlZm9yZSwgdGhpcyBzaG91bGQgdXN1YWxseSBvbmx5IGJlIGRvbmUKKyogcHJpb3IgdG8gc2Nhbi9qb2luL2F1dGgvYXNzb2MuCisqCisqIEFyZ3VtZW50czoKKyoJZGV2CW5ldGRldmljZSBzdHJ1Y3QKKyoJYWRkcgl0aGUgbmV3IE1BQ0FkZHJlc3MgKGEgc3RydWN0KQorKgorKiBSZXR1cm5zOgorKgl6ZXJvIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4gIFBvc3NpYmxlIHZhbHVlczoKKyoJCS1FQlVTWQlkZXZpY2UgaXMgYnVzc3kgKGNtZCBub3QgcG9zc2libGUpCisqCQktYW5kIGVycm9ycyByZXR1cm5lZCBieTogcDgwMjExcmVxX2RvcmVxdWVzdCguLikKKyoKKyogYnk6IENvbGxpbiBSLiBNdWxsaW5lciA8Y29sbGluQG11bGxpbmVyLm9yZz4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBwODAyMTFrbmV0ZGV2X3NldF9tYWNfYWRkcmVzcyhuZXRkZXZpY2VfdCAqZGV2LCB2b2lkICphZGRyKQoreworCXN0cnVjdCBzb2NrYWRkcgkJCSpuZXdfYWRkciA9IGFkZHI7CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90CWRvdDExcmVxOworCXA4MDIxMWl0ZW1fdW5rMzkyX3QJCSptaWJhdHRyOworCXA4MDIxMWl0ZW1fcHN0cjZfdAkJKm1hY2FkZHI7CisJcDgwMjExaXRlbV91aW50MzJfdAkJKnJlc3VsdGNvZGU7CisJaW50IHJlc3VsdCA9IDA7CisKKwlEQkZFTlRFUjsKKwkvKiBJZiB3ZSdyZSBydW5uaW5nLCB3ZSBkb24ndCBhbGxvdyBNQUMgYWRkcmVzcyBjaGFuZ2VzICovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMywzOCkgKQorCWlmICggZGV2LT5zdGFydCkgeworCQlyZXR1cm4gLUVCVVNZOworCX0KKyNlbHNlCisJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgeworCQlyZXR1cm4gLUVCVVNZOworCX0KKyNlbmRpZgorCisJLyogU2V0IHVwIHNvbWUgY29udmVuaWVuY2UgcG9pbnRlcnMuICovCisJbWliYXR0ciA9ICZkb3QxMXJlcS5taWJhdHRyaWJ1dGU7CisJbWFjYWRkciA9IChwODAyMTFpdGVtX3BzdHI2X3QqKSZtaWJhdHRyLT5kYXRhOworCXJlc3VsdGNvZGUgPSAmZG90MTFyZXEucmVzdWx0Y29kZTsKKworCS8qIFNldCB1cCBhIGRvdDExcmVxX21pYnNldCAqLworCW1lbXNldCgmZG90MTFyZXEsIDAsIHNpemVvZihwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QpKTsKKwlkb3QxMXJlcS5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX21pYnNldDsKKwlkb3QxMXJlcS5tc2dsZW4gPSBzaXplb2YocDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90KTsKKwltZW1jcHkoZG90MTFyZXEuZGV2bmFtZSwKKwkJKCh3bGFuZGV2aWNlX3QqKShkZXYtPnByaXYpKS0+bmFtZSwKKwkJV0xBTl9ERVZOQU1FTEVOX01BWCAtIDEpOworCisJLyogU2V0IHVwIHRoZSBtaWJhdHRyaWJ1dGUgYXJndW1lbnQgKi8KKwltaWJhdHRyLT5kaWQgPSBESURtc2dfZG90MTFyZXFfbWlic2V0X21pYmF0dHJpYnV0ZTsKKwltaWJhdHRyLT5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJbWliYXR0ci0+bGVuID0gc2l6ZW9mKG1pYmF0dHItPmRhdGEpOworCisJbWFjYWRkci0+ZGlkID0gRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFNQUNBZGRyZXNzOworCW1hY2FkZHItPnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwltYWNhZGRyLT5sZW4gPSBzaXplb2YobWFjYWRkci0+ZGF0YSk7CisJbWFjYWRkci0+ZGF0YS5sZW4gPSBXTEFOX0FERFJfTEVOOworCW1lbWNweSgmbWFjYWRkci0+ZGF0YS5kYXRhLCBuZXdfYWRkci0+c2FfZGF0YSwgV0xBTl9BRERSX0xFTik7CisKKwkvKiBTZXQgdXAgdGhlIHJlc3VsdGNvZGUgYXJndW1lbnQgKi8KKwlyZXN1bHRjb2RlLT5kaWQgPSBESURtc2dfZG90MTFyZXFfbWlic2V0X3Jlc3VsdGNvZGU7CisJcmVzdWx0Y29kZS0+c3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19ub192YWx1ZTsKKwlyZXN1bHRjb2RlLT5sZW4gPSBzaXplb2YocmVzdWx0Y29kZS0+ZGF0YSk7CisJcmVzdWx0Y29kZS0+ZGF0YSA9IDA7CisKKwkvKiBub3cgZmlyZSB0aGUgcmVxdWVzdCAqLworCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3QoZGV2LT5wcml2LCAoVUlOVDgqKSZkb3QxMXJlcSk7CisKKwkvKiBJZiB0aGUgcmVxdWVzdCB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgcmVwb3J0IGFuIGVycm9yIGFuZCBkb24ndAorCSAqIGNoYW5nZSB0aGUgbmV0ZGV2IGFkZHJlc3MKKwkgKi8KKwlpZiAoIHJlc3VsdCAhPSAwIHx8IHJlc3VsdGNvZGUtPmRhdGEgIT0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3MpIHsKKwkJV0xBTl9MT0dfRVJST1IoCisJCSJMb3ctbGV2ZWwgZHJpdmVyIGZhaWxlZCBkb3QxMXJlcV9taWJzZXQoZG90MTFNQUNBZGRyZXNzKS5cbiIpOworCQlyZXN1bHQgPSAtRUFERFJOT1RBVkFJTDsKKwl9IGVsc2UgeworCQkvKiBldmVyeXRoaW5nJ3Mgb2ssIGNoYW5nZSB0aGUgYWRkciBpbiBuZXRkZXYgKi8KKwkJbWVtY3B5KGRldi0+ZGV2X2FkZHIsIG5ld19hZGRyLT5zYV9kYXRhLCBkZXYtPmFkZHJfbGVuKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQgd2xhbl9jaGFuZ2VfbXR1KG5ldGRldmljZV90ICpkZXYsIGludCBuZXdfbXR1KQoreworCURCRkVOVEVSOworCS8vIDIzMTIgaXMgbWF4IDgwMi4xMSBwYXlsb2FkLCAyMCBpcyBvdmVyaGVhZCwgKGV0aGVyICsgbGxjICtzbmFwKQorCS8vIGFuZCBhbm90aGVyIDggZm9yIHdlcC4KKyAgICAgICAgaWYgKCAobmV3X210dSA8IDY4KSB8fCAobmV3X210dSA+ICgyMzEyIC0gMjAgLSA4KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgZGV2LT5tdHUgPSBuZXdfbXR1OworCisJREJGRVhJVDsKKworICAgICAgICByZXR1cm4gMDsKK30KKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiB3bGFuX3NldHVwCisqCisqIFJvdWdobHkgbWF0Y2hlcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBldGhlcl9zZXR1cC4gIEhlcmUKKyogd2Ugc2V0IHVwIGFueSBtZW1iZXJzIG9mIHRoZSB3bGFuZGV2aWNlIHN0cnVjdHVyZSB0aGF0IGFyZSBjb21tb24KKyogdG8gYWxsIGRldmljZXMuICBBZGRpdGlvbmFsbHksIHdlIGFsbG9jYXRlIGEgbGludXggJ3N0cnVjdCBkZXZpY2UnCisqIGFuZCBwZXJmb3JtIHRoZSBzYW1lIHNldHVwIGFzIGV0aGVyX3NldHVwLgorKgorKiBOb3RlOiBJdCdzIGltcG9ydGFudCB0aGF0IHRoZSBjYWxsZXIgaGF2ZSBzZXR1cCB0aGUgd2xhbmRldi0+bmFtZQorKglwdHIgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXB0ciB0byB0aGUgd2xhbmRldiBzdHJ1Y3R1cmUgZm9yIHRoZQorKgkJCWludGVyZmFjZS4KKyogUmV0dXJuczoKKyoJemVybyBvbiBzdWNjZXNzLCBub24temVybyBvdGhlcndpc2UuCisqIENhbGwgQ29udGV4dDoKKyoJU2hvdWxkIGJlIHByb2Nlc3MgdGhyZWFkLiAgV2UnbGwgYXNzdW1lIGl0IG1pZ2h0IGJlCisqCWludGVycnVwdCB0aG91Z2guICBXaGVuIHdlIGFkZCBzdXBwb3J0IGZvciBzdGF0aWNhbGx5CisqCWNvbXBpbGVkIGRyaXZlcnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisqCWNvbnRleHQgb2YgdGhlIGtlcm5lbCBzdGFydHVwIGNvZGUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCB3bGFuX3NldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisJbmV0ZGV2aWNlX3QJKmRldjsKKworCURCRkVOVEVSOworCisJLyogU2V0IHVwIHRoZSB3bGFuZGV2ICovCisJd2xhbmRldi0+c3RhdGUgPSBXTEFOX0RFVklDRV9DTE9TRUQ7CisJd2xhbmRldi0+ZXRoY29udiA9IFdMQU5fRVRIQ09OVl84MDIxaDsKKwl3bGFuZGV2LT5tYWNtb2RlID0gV0xBTl9NQUNNT0RFX05PTkU7CisKKwkvKiBTZXQgdXAgdGhlIHJ4IHF1ZXVlICovCisJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmd2xhbmRldi0+bnNkX3J4cSk7CisJdGFza2xldF9pbml0KCZ3bGFuZGV2LT5yeF9iaCwKKwkJICAgICBwODAyMTFuZXRkZXZfcnhfYmgsCisJCSAgICAgKHVuc2lnbmVkIGxvbmcpd2xhbmRldik7CisKKwkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgc3RydWN0IGRldmljZSAqLworCWRldiA9IGttYWxsb2Moc2l6ZW9mKG5ldGRldmljZV90KSwgR0ZQX0FUT01JQyk7CisJaWYgKCBkZXYgPT0gTlVMTCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBhbGxvYyBuZXRkZXYuXG4iKTsKKwkJcmVzdWx0ID0gMTsKKwl9IGVsc2UgeworCQltZW1zZXQoIGRldiwgMCwgc2l6ZW9mKG5ldGRldmljZV90KSk7CisJCWV0aGVyX3NldHVwKGRldik7CisJCXdsYW5kZXYtPm5ldGRldiA9IGRldjsKKwkJZGV2LT5wcml2ID0gd2xhbmRldjsKKwkJZGV2LT5oYXJkX3N0YXJ0X3htaXQgPQlwODAyMTFrbmV0ZGV2X2hhcmRfc3RhcnRfeG1pdDsKKwkJZGV2LT5nZXRfc3RhdHMgPQlwODAyMTFrbmV0ZGV2X2dldF9zdGF0czsKKyNpZmRlZiBIQVZFX1BSSVZBVEVfSU9DVEwKKwkJZGV2LT5kb19pb2N0bCA9IAlwODAyMTFrbmV0ZGV2X2RvX2lvY3RsOworI2VuZGlmCisjaWZkZWYgSEFWRV9NVUxUSUNBU1QKKwkJZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBwODAyMTFrbmV0ZGV2X3NldF9tdWx0aWNhc3RfbGlzdDsKKyNlbmRpZgorCQlkZXYtPmluaXQgPQkJcDgwMjExa25ldGRldl9pbml0OworCQlkZXYtPm9wZW4gPQkJcDgwMjExa25ldGRldl9vcGVuOworCQlkZXYtPnN0b3AgPQkJcDgwMjExa25ldGRldl9zdG9wOworCisjaWZkZWYgQ09ORklHX05FVF9XSVJFTEVTUworI2lmICgoV0lSRUxFU1NfRVhUIDwgMTcpICYmIChXSVJFTEVTU19FWFQgPCAyMSkpCisJCWRldi0+Z2V0X3dpcmVsZXNzX3N0YXRzID0gcDgwMjExd2V4dF9nZXRfd2lyZWxlc3Nfc3RhdHM7CisjZW5kaWYKKyNpZiBXSVJFTEVTU19FWFQgPiAxMgorCQlkZXYtPndpcmVsZXNzX2hhbmRsZXJzID0gJnA4MDIxMXdleHRfaGFuZGxlcl9kZWY7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMywzOCkgKQorCQlkZXYtPnRidXN5ID0gMTsKKwkJZGV2LT5zdGFydCA9IDA7CisjZWxzZQorCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0NIQU5HRV9NVFUKKwkJZGV2LT5jaGFuZ2VfbXR1ID0gd2xhbl9jaGFuZ2VfbXR1OworI2VuZGlmCisjaWZkZWYgSEFWRV9TRVRfTUFDX0FERFIKKwkJZGV2LT5zZXRfbWFjX2FkZHJlc3MgPQlwODAyMTFrbmV0ZGV2X3NldF9tYWNfYWRkcmVzczsKKyNlbmRpZgorI2lmZGVmIEhBVkVfVFhfVElNRU9VVAorCQlkZXYtPnR4X3RpbWVvdXQgICAgICA9ICAmcDgwMjExa25ldGRldl90eF90aW1lb3V0OworCQlkZXYtPndhdGNoZG9nX3RpbWVvICA9ICAod2xhbl93YXRjaGRvZyAqIEhaKSAvIDEwMDA7CisjZW5kaWYKKwkJbmV0aWZfY2Fycmllcl9vZmYoZGV2KTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiB3bGFuX3Vuc2V0dXAKKyoKKyogVGhpcyBmdW5jdGlvbiBpcyBwYWlyZWQgd2l0aCB0aGUgd2xhbl9zZXR1cCByb3V0aW5lLiAgSXQgc2hvdWxkCisqIGJlIGNhbGxlZCBhZnRlciB1bnJlZ2lzdGVyX3dsYW5kZXYuICBCYXNpY2FsbHksIGFsbCBpdCBkb2VzIGlzCisqIGZyZWUgdGhlICdzdHJ1Y3QgZGV2aWNlJyB0aGF0J3MgYXNzb2NpYXRlZCB3aXRoIHRoZSB3bGFuZGV2LgorKiBXZSBkbyBpdCBoZXJlIGJlY2F1c2UgdGhlICdzdHJ1Y3QgZGV2aWNlJyBpc24ndCBhbGxvY2F0ZWQKKyogZXhwbGljaXRseSBpbiB0aGUgZHJpdmVyIGNvZGUsIGl0J3MgZG9uZSBpbiB3bGFuX3NldHVwLiAgVG8KKyogZG8gdGhlIGZyZWUgaW4gdGhlIGRyaXZlciBtaWdodCBzZWVtIGxpa2UgJ21hZ2ljJy4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQlwdHIgdG8gdGhlIHdsYW5kZXYgc3RydWN0dXJlIGZvciB0aGUKKyoJCQlpbnRlcmZhY2UuCisqIFJldHVybnM6CisqCXplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlLgorKiBDYWxsIENvbnRleHQ6CisqCVNob3VsZCBiZSBwcm9jZXNzIHRocmVhZC4gIFdlJ2xsIGFzc3VtZSBpdCBtaWdodCBiZQorKglpbnRlcnJ1cHQgdGhvdWdoLiAgV2hlbiB3ZSBhZGQgc3VwcG9ydCBmb3Igc3RhdGljYWxseQorKgljb21waWxlZCBkcml2ZXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGluIHRoZQorKgljb250ZXh0IG9mIHRoZSBrZXJuZWwgc3RhcnR1cCBjb2RlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgd2xhbl91bnNldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwlpbnQJCXJlc3VsdCA9IDA7CisKKwlEQkZFTlRFUjsKKworCXRhc2tsZXRfa2lsbCgmd2xhbmRldi0+cnhfYmgpOworCisJaWYgKHdsYW5kZXYtPm5ldGRldiA9PSBOVUxMICkgeworCQlXTEFOX0xPR19FUlJPUigiY2FsbGVkIHdpdGhvdXQgd2xhbmRldi0+bmV0ZGV2IHNldC5cbiIpOworCQlyZXN1bHQgPSAxOworCX0gZWxzZSB7CisJCWZyZWVfbmV0ZGV2KHdsYW5kZXYtPm5ldGRldik7CisJCXdsYW5kZXYtPm5ldGRldiA9IE5VTEw7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiByZWdpc3Rlcl93bGFuZGV2CisqCisqIFJvdWdobHkgbWF0Y2hlcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiByZWdpc3Rlcl9uZXRkZXYuICBUaGlzIGZ1bmN0aW9uCisqIGlzIGNhbGxlZCBhZnRlciB0aGUgZHJpdmVyIGhhcyBzdWNjZXNzZnVsbHkgcHJvYmVkIGFuZCBzZXQgdXAgdGhlCisqIHJlc291cmNlcyBmb3IgdGhlIGRldmljZS4gIEl0J3Mgbm93IHJlYWR5IHRvIGJlY29tZSBhIG5hbWVkIGRldmljZQorKiBpbiB0aGUgTGludXggc3lzdGVtLgorKgorKiBGaXJzdCB3ZSBhbGxvY2F0ZSBhIG5hbWUgZm9yIHRoZSBkZXZpY2UgKGlmIG5vdCBhbHJlYWR5IHNldCksIHRoZW4KKyogd2UgY2FsbCB0aGUgTGludXggZnVuY3Rpb24gcmVnaXN0ZXJfbmV0ZGV2aWNlLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXB0ciB0byB0aGUgd2xhbmRldiBzdHJ1Y3R1cmUgZm9yIHRoZQorKgkJCWludGVyZmFjZS4KKyogUmV0dXJuczoKKyoJemVybyBvbiBzdWNjZXNzLCBub24temVybyBvdGhlcndpc2UuCisqIENhbGwgQ29udGV4dDoKKyoJQ2FuIGJlIGVpdGhlciBpbnRlcnJ1cHQgb3Igbm90LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaW50CQlpID0gMDsKKwluZXRkZXZpY2VfdAkqZGV2ID0gd2xhbmRldi0+bmV0ZGV2OworCisJREJGRU5URVI7CisKKwlpID0gZGV2X2FsbG9jX25hbWUod2xhbmRldi0+bmV0ZGV2LCAid2xhbiVkIik7CisJaWYgKGkgPj0gMCkgeworCQlpID0gcmVnaXN0ZXJfbmV0ZGV2KHdsYW5kZXYtPm5ldGRldik7CisJfQorCWlmIChpICE9IDApIHsKKwkJcmV0dXJuIC1FSU87CisJfQorCisjaWYgKCBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDQsMCkgKQorCWRldi0+bmFtZSA9IHdsYW5kZXYtPm5hbWU7CisjZWxzZQorCXN0cmNweSh3bGFuZGV2LT5uYW1lLCBkZXYtPm5hbWUpOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUFJPQ19GUworCWlmIChwcm9jX3A4MDIxMSkgeworCQl3bGFuZGV2LT5wcm9jZGlyID0gcHJvY19ta2Rpcih3bGFuZGV2LT5uYW1lLCBwcm9jX3A4MDIxMSk7CisJCWlmICggd2xhbmRldi0+cHJvY2RpciApCisJCQl3bGFuZGV2LT5wcm9jd2xhbmRldiA9CisJCQkJY3JlYXRlX3Byb2NfcmVhZF9lbnRyeSgid2xhbmRldiIsIDAsCisJCQkJCQkgICAgICAgd2xhbmRldi0+cHJvY2RpciwKKwkJCQkJCSAgICAgICBwODAyMTFuZXRkZXZfcHJvY19yZWFkLAorCQkJCQkJICAgICAgIHdsYW5kZXYpOworCQlpZiAod2xhbmRldi0+bnNkX3Byb2NfcmVhZCkKKwkJCWNyZWF0ZV9wcm9jX3JlYWRfZW50cnkoIm5zZCIsIDAsCisJCQkJCSAgICAgICB3bGFuZGV2LT5wcm9jZGlyLAorCQkJCQkgICAgICAgd2xhbmRldi0+bnNkX3Byb2NfcmVhZCwKKwkJCQkJICAgICAgIHdsYW5kZXYpOworCX0KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0hPVFBMVUcKKwlwODAyMTFfcnVuX3NiaW5faG90cGx1Zyh3bGFuZGV2LCBXTEFOX0hPVFBMVUdfUkVHSVNURVIpOworI2VuZGlmCisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiB1bnJlZ2lzdGVyX3dsYW5kZXYKKyoKKyogUm91Z2hseSBtYXRjaGVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHVucmVnaXN0ZXJfbmV0ZGV2LiAgVGhpcworKiBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcmVtb3ZlIGEgbmFtZWQgZGV2aWNlIGZyb20gdGhlIHN5c3RlbS4KKyoKKyogRmlyc3Qgd2UgdGVsbCBsaW51eCB0aGF0IHRoZSBkZXZpY2Ugc2hvdWxkIG5vIGxvbmdlciBleGlzdC4KKyogVGhlbiB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiBrbm93biB3bGFuIGRldmljZXMuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJcHRyIHRvIHRoZSB3bGFuZGV2IHN0cnVjdHVyZSBmb3IgdGhlCisqCQkJaW50ZXJmYWNlLgorKiBSZXR1cm5zOgorKgl6ZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZS4KKyogQ2FsbCBDb250ZXh0OgorKglDYW4gYmUgZWl0aGVyIGludGVycnVwdCBvciBub3QuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCB1bnJlZ2lzdGVyX3dsYW5kZXYod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCXN0cnVjdCBza19idWZmICpza2I7CisKKwlEQkZFTlRFUjsKKworI2lmZGVmIENPTkZJR19IT1RQTFVHCisJcDgwMjExX3J1bl9zYmluX2hvdHBsdWcod2xhbmRldiwgV0xBTl9IT1RQTFVHX1JFTU9WRSk7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QUk9DX0ZTCisJaWYgKCB3bGFuZGV2LT5wcm9jd2xhbmRldiApIHsKKwkJcmVtb3ZlX3Byb2NfZW50cnkoIndsYW5kZXYiLCB3bGFuZGV2LT5wcm9jZGlyKTsKKwl9CisJaWYgKCB3bGFuZGV2LT5uc2RfcHJvY19yZWFkICkgeworCQlyZW1vdmVfcHJvY19lbnRyeSgibnNkIiwgd2xhbmRldi0+cHJvY2Rpcik7CisJfQorCWlmICh3bGFuZGV2LT5wcm9jZGlyKSB7CisJCXJlbW92ZV9wcm9jX2VudHJ5KHdsYW5kZXYtPm5hbWUsIHByb2NfcDgwMjExKTsKKwl9CisjZW5kaWYKKworCXVucmVnaXN0ZXJfbmV0ZGV2KHdsYW5kZXYtPm5ldGRldik7CisKKwkvKiBOb3cgdG8gY2xlYW4gb3V0IHRoZSByeCBxdWV1ZSAqLworCXdoaWxlICggKHNrYiA9IHNrYl9kZXF1ZXVlKCZ3bGFuZGV2LT5uc2RfcnhxKSkgKSB7CisJCWRldl9rZnJlZV9za2Ioc2tiKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisjaWZkZWYgQ09ORklHX1BST0NfRlMKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcm9jX3JlYWQKKyoKKyogUmVhZCBmdW5jdGlvbiBmb3IgL3Byb2MvbmV0L3A4MDIxMS88ZGV2aWNlPi93bGFuZGV2CisqCisqIEFyZ3VtZW50czoKKyoJYnVmCisqCXN0YXJ0CisqCW9mZnNldAorKgljb3VudAorKgllb2YKKyoJZGF0YQorKiBSZXR1cm5zOgorKgl6ZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZS4KKyogQ2FsbCBDb250ZXh0OgorKglDYW4gYmUgZWl0aGVyIGludGVycnVwdCBvciBub3QuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK3A4MDIxMW5ldGRldl9wcm9jX3JlYWQoCisJY2hhcgkqcGFnZSwKKwljaGFyCSoqc3RhcnQsCisJb2ZmX3QJb2Zmc2V0LAorCWludAljb3VudCwKKwlpbnQJKmVvZiwKKwl2b2lkCSpkYXRhKQoreworCWNoYXIJICpwID0gcGFnZTsKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90ICopIGRhdGE7CisKKwlEQkZFTlRFUjsKKwlpZiAob2Zmc2V0ICE9IDApIHsKKwkJKmVvZiA9IDE7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlwICs9IHNwcmludGYocCwgInA4MDIxMSB2ZXJzaW9uOiAlcyAoJXMpXG5cbiIsCisJCSAgICAgV0xBTl9SRUxFQVNFLCBXTEFOX0JVSUxEX0RBVEUpOworCXAgKz0gc3ByaW50ZihwLCAibmFtZSAgICAgICA6ICVzXG4iLCB3bGFuZGV2LT5uYW1lKTsKKwlwICs9IHNwcmludGYocCwgIm5zZCBuYW1lICAgOiAlc1xuIiwgd2xhbmRldi0+bnNkbmFtZSk7CisJcCArPSBzcHJpbnRmKHAsICJhZGRyZXNzICAgIDogJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsCisJCSAgICAgd2xhbmRldi0+bmV0ZGV2LT5kZXZfYWRkclswXSwgd2xhbmRldi0+bmV0ZGV2LT5kZXZfYWRkclsxXSwgd2xhbmRldi0+bmV0ZGV2LT5kZXZfYWRkclsyXSwKKwkJICAgICB3bGFuZGV2LT5uZXRkZXYtPmRldl9hZGRyWzNdLCB3bGFuZGV2LT5uZXRkZXYtPmRldl9hZGRyWzRdLCB3bGFuZGV2LT5uZXRkZXYtPmRldl9hZGRyWzVdKTsKKwlwICs9IHNwcmludGYocCwgIm5zZCBjYXBzICAgOiAlcyVzJXMlcyVzJXMlcyVzJXMlc1xuIiwKKwkJICAgICAod2xhbmRldi0+bnNkY2FwcyAmIFA4MDIxMV9OU0RDQVBfSEFSRFdBUkVXRVApID8gIndlcF9odyAiIDogIiIsCisJCSAgICAgKHdsYW5kZXYtPm5zZGNhcHMgJiBQODAyMTFfTlNEQ0FQX1RJRURXRVApID8gIndlcF90aWVkICIgOiAiIiwKKwkJICAgICAod2xhbmRldi0+bnNkY2FwcyAmIFA4MDIxMV9OU0RDQVBfTk9IT1NUV0VQKSA/ICJ3ZXBfaHdfb25seSAiIDogIiIsCisJCSAgICAgKHdsYW5kZXYtPm5zZGNhcHMgJiBQODAyMTFfTlNEQ0FQX1BCQ0MpID8gInBiY2MgIiA6ICIiLAorCQkgICAgICh3bGFuZGV2LT5uc2RjYXBzICYgUDgwMjExX05TRENBUF9TSE9SVF9QUkVBTUJMRSkgPyAic2hvcnRfcHJlYW1ibGUgIiA6ICIiLAorCQkgICAgICh3bGFuZGV2LT5uc2RjYXBzICYgUDgwMjExX05TRENBUF9BR0lMSVRZKSA/ICJhZ2lsaXR5ICIgOiAiIiwKKwkJICAgICAod2xhbmRldi0+bnNkY2FwcyAmIFA4MDIxMV9OU0RDQVBfQVBfUkVUUkFOU01JVCkgPyAiYXBfcmV0cmFuc21pdCAiIDogIiIsCisJCSAgICAgKHdsYW5kZXYtPm5zZGNhcHMgJiBQODAyMTFfTlNEQ0FQX0hXRlJBR01FTlQpID8gImh3X2ZyYWcgIiA6ICIiLAorCQkgICAgICh3bGFuZGV2LT5uc2RjYXBzICYgUDgwMjExX05TRENBUF9BVVRPSk9JTikgPyAiYXV0b2pvaW4gIiA6ICIiLAorCQkgICAgICh3bGFuZGV2LT5uc2RjYXBzICYgUDgwMjExX05TRENBUF9OT1NDQU4pID8gIiIgOiAic2NhbiAiKTsKKworCisJcCArPSBzcHJpbnRmKHAsICJic3NpZCAgICAgIDogJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsCisJCSAgICAgd2xhbmRldi0+YnNzaWRbMF0sIHdsYW5kZXYtPmJzc2lkWzFdLCB3bGFuZGV2LT5ic3NpZFsyXSwKKwkJICAgICB3bGFuZGV2LT5ic3NpZFszXSwgd2xhbmRldi0+YnNzaWRbNF0sIHdsYW5kZXYtPmJzc2lkWzVdKTsKKworCXAgKz0gc3ByaW50ZihwLCAiRW5hYmxlZCAgICA6ICVzJXNcbiIsCisJCSAgICAgKHdsYW5kZXYtPnNob3J0cHJlYW1ibGUpID8gInNob3J0X3ByZWFtYmxlICIgOiAiIiwKKwkJICAgICAod2xhbmRldi0+aG9zdHdlcCAmIEhPU1RXRVBfUFJJVkFDWUlOVk9LRUQpID8gInByaXZhY3kiIDogIiIpOworCisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIChwIC0gcGFnZSk7Cit9CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMW5ldGRldl9od3JlbW92ZWQKKyoKKyogSGFyZHdhcmUgcmVtb3ZlZCBub3RpZmljYXRpb24uIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZAorKiBpbW1lZGlhdGVseSBhZnRlciBhbiBNU0QgaGFzIGRldGVjdGVkIHRoYXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUKKyogaGFzIGJlZW4geWFua2VkIG91dCBmcm9tIHVuZGVyIHVzLiAgVGhlIHByaW1hcnkgdGhpbmdzIHdlIG5lZWQKKyogdG8gZG8gYXJlOgorKiAgIC0gTWFyayB0aGUgd2xhbmRldgorKiAgIC0gUHJldmVudCBhbnkgZnVydGhlciB0cmFmZmljIGZyb20gdGhlIGtuZXRkZXYgaS9mCisqICAgLSBQcmV2ZW50IGFueSBmdXJ0aGVyIHJlcXVlc3RzIGZyb20gbWdtdCBpL2YKKyogICAtIElmIHRoZXJlIGFyZSBhbnkgd2FpdHEnZCBtZ210IHJlcXVlc3RzIG9yIG1nbXQtZnJhbWUgZXhjaGFuZ2VzLAorKiAgICAgc2h1dCB0aGVtIGRvd24uCisqICAgLSBDYWxsIHRoZSBNU0QgaHdyZW1vdmVkIGZ1bmN0aW9uLgorKgorKiBUaGUgcmVtYWluZGVyIG9mIHRoZSBjbGVhbnVwIHdpbGwgYmUgaGFuZGxlZCBieSB1bnJlZ2lzdGVyKCkuCisqIE91ciBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBwcmV2ZW50IGFzIG11Y2ggdGlja2xpbmcgb2YgdGhlIE1TRAorKiBhcyBwb3NzaWJsZSBzaW5jZSB0aGUgTVNEIGlzIGFscmVhZHkgaW4gYSAnd291bmRlZCcgc3RhdGUuCisqCisqIFRPRE86IEFzIG5ldyBmZWF0dXJlcyBhcmUgYWRkZWQsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlCisqICAgICAgIHVwZGF0ZWQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJV0xBTiBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKKyogUmV0dXJuczoKKyoJbm90aGluZworKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJVXN1YWxseSBpbnRlcnJ1cHQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcDgwMjExbmV0ZGV2X2h3cmVtb3ZlZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJREJGRU5URVI7CisJd2xhbmRldi0+aHdyZW1vdmVkID0gMTsKKwlpZiAoIHdsYW5kZXYtPnN0YXRlID09IFdMQU5fREVWSUNFX09QRU4pIHsKKwkJcDgwMjExbmV0ZGV2X3N0b3BfcXVldWUod2xhbmRldik7CisJfQorCisJbmV0aWZfZGV2aWNlX2RldGFjaCh3bGFuZGV2LT5uZXRkZXYpOworCisJREJGRVhJVDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExX3J4X3R5cGVkcm9wCisqCisqIENsYXNzaWZpZXMgdGhlIGZyYW1lLCBpbmNyZW1lbnRzIHRoZSBhcHByb3ByaWF0ZSBjb3VudGVyLCBhbmQKKyogcmV0dXJucyAwfDF8MiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGRyaXZlciBzaG91bGQgaGFuZGxlLCBpZ25vcmUsIG9yCisqIGRyb3AgdGhlIGZyYW1lCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCWZjCQlmcmFtZSBjb250cm9sIGZpZWxkCisqCisqIFJldHVybnM6CisqCXplcm8gaWYgdGhlIGZyYW1lIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIsCisqICAgICAgIG9uZSBpZiB0aGUgZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQKKyogICAgICAgYW55dGhpbmcgZWxzZSBtZWFucyB3ZSBkcm9wIGl0LgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgcDgwMjExX3J4X3R5cGVkcm9wKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQxNiBmYykKK3sKKwlVSU5UMTYJZnR5cGU7CisJVUlOVDE2CWZzdHlwZTsKKwlpbnQJZHJvcCA9IDA7CisJLyogQ2xhc3NpZnkgZnJhbWUsIGluY3JlbWVudCBjb3VudGVyICovCisJZnR5cGUgPSBXTEFOX0dFVF9GQ19GVFlQRShmYyk7CisJZnN0eXBlID0gV0xBTl9HRVRfRkNfRlNUWVBFKGZjKTsKKyNpZiAwCisJV0xBTl9MT0dfREVCVUcoNCwKKwkJInJ4X3R5cGVkcm9wIDogZnR5cGU9JWQgZnN0eXBlPSVkLlxuIiwgZnR5cGUsIGZzdHlwZSk7CisjZW5kaWYKKwlzd2l0Y2ggKCBmdHlwZSApIHsKKwljYXNlIFdMQU5fRlRZUEVfTUdNVDoKKwkJaWYgKCh3bGFuZGV2LT5uZXRkZXYtPmZsYWdzICYgSUZGX1BST01JU0MpIHx8CisJCQkod2xhbmRldi0+bmV0ZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkpIHsKKwkJCWRyb3AgPSAxOworCQkJYnJlYWs7CisJCX0KKwkJV0xBTl9MT0dfREVCVUcoMywgInJ4J2QgbWdtdDpcbiIpOworCQl3bGFuZGV2LT5yeC5tZ210Kys7CisJCXN3aXRjaCggZnN0eXBlICkgeworCQljYXNlIFdMQU5fRlNUWVBFX0FTU09DUkVROgorCQkJLyogcHJpbnRrKCJhc3NvY3JlcSIpOyAqLworCQkJd2xhbmRldi0+cnguYXNzb2NyZXErKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0FTU09DUkVTUDoKKwkJCS8qIHByaW50aygiYXNzb2NyZXNwIik7ICovCisJCQl3bGFuZGV2LT5yeC5hc3NvY3Jlc3ArKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX1JFQVNTT0NSRVE6CisJCQkvKiBwcmludGsoInJlYXNzb2NyZXEiKTsgKi8KKwkJCXdsYW5kZXYtPnJ4LnJlYXNzb2NyZXErKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX1JFQVNTT0NSRVNQOgorCQkJLyogcHJpbnRrKCJyZWFzc29jcmVzcCIpOyAqLworCQkJd2xhbmRldi0+cngucmVhc3NvY3Jlc3ArKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX1BST0JFUkVROgorCQkJLyogcHJpbnRrKCJwcm9iZXJlcSIpOyAqLworCQkJd2xhbmRldi0+cngucHJvYmVyZXErKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX1BST0JFUkVTUDoKKwkJCS8qIHByaW50aygicHJvYmVyZXNwIik7ICovCisJCQl3bGFuZGV2LT5yeC5wcm9iZXJlc3ArKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0JFQUNPTjoKKwkJCS8qIHByaW50aygiYmVhY29uIik7ICovCisJCQl3bGFuZGV2LT5yeC5iZWFjb24rKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0FUSU06CisJCQkvKiBwcmludGsoImF0aW0iKTsgKi8KKwkJCXdsYW5kZXYtPnJ4LmF0aW0rKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0RJU0FTU09DOgorCQkJLyogcHJpbnRrKCJkaXNhc3NvYyIpOyAqLworCQkJd2xhbmRldi0+cnguZGlzYXNzb2MrKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0FVVEhFTjoKKwkJCS8qIHByaW50aygiYXV0aGVuIik7ICovCisJCQl3bGFuZGV2LT5yeC5hdXRoZW4rKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0RFQVVUSEVOOgorCQkJLyogcHJpbnRrKCJkZWF1dGhlbiIpOyAqLworCQkJd2xhbmRldi0+cnguZGVhdXRoZW4rKzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJLyogcHJpbnRrKCJ1bmtub3duIik7ICovCisJCQl3bGFuZGV2LT5yeC5tZ210X3Vua25vd24rKzsKKwkJCWJyZWFrOworCQl9CisJCS8qIHByaW50aygiXG4iKTsgKi8KKwkJZHJvcCA9IDI7CisJCWJyZWFrOworCisJY2FzZSBXTEFOX0ZUWVBFX0NUTDoKKwkJaWYgKCh3bGFuZGV2LT5uZXRkZXYtPmZsYWdzICYgSUZGX1BST01JU0MpIHx8CisJCQkod2xhbmRldi0+bmV0ZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkpIHsKKwkJCWRyb3AgPSAxOworCQkJYnJlYWs7CisJCX0KKwkJV0xBTl9MT0dfREVCVUcoMywgInJ4J2QgY3RsOlxuIik7CisJCXdsYW5kZXYtPnJ4LmN0bCsrOworCQlzd2l0Y2goIGZzdHlwZSApIHsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9QU1BPTEw6CisJCQkvKiBwcmludGsoInBzcG9sbCIpOyAqLworCQkJd2xhbmRldi0+cngucHNwb2xsKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9SVFM6CisJCQkvKiBwcmludGsoInJ0cyIpOyAqLworCQkJd2xhbmRldi0+cngucnRzKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9DVFM6CisJCQkvKiBwcmludGsoImN0cyIpOyAqLworCQkJd2xhbmRldi0+cnguY3RzKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9BQ0s6CisJCQkvKiBwcmludGsoImFjayIpOyAqLworCQkJd2xhbmRldi0+cnguYWNrKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9DRkVORDoKKwkJCS8qIHByaW50aygiY2ZlbmQiKTsgKi8KKwkJCXdsYW5kZXYtPnJ4LmNmZW5kKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9DRkVORENGQUNLOgorCQkJLyogcHJpbnRrKCJjZmVuZGNmYWNrIik7ICovCisJCQl3bGFuZGV2LT5yeC5jZmVuZGNmYWNrKys7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCS8qIHByaW50aygidW5rbm93biIpOyAqLworCQkJd2xhbmRldi0+cnguY3RsX3Vua25vd24rKzsKKwkJCWJyZWFrOworCQl9CisJCS8qIHByaW50aygiXG4iKTsgKi8KKwkJZHJvcCA9IDI7CisJCWJyZWFrOworCisJY2FzZSBXTEFOX0ZUWVBFX0RBVEE6CisJCXdsYW5kZXYtPnJ4LmRhdGErKzsKKwkJc3dpdGNoKCBmc3R5cGUgKSB7CisJCWNhc2UgV0xBTl9GU1RZUEVfREFUQU9OTFk6CisJCQl3bGFuZGV2LT5yeC5kYXRhb25seSsrOworCQkJYnJlYWs7CisJCWNhc2UgV0xBTl9GU1RZUEVfREFUQV9DRkFDSzoKKwkJCXdsYW5kZXYtPnJ4LmRhdGFfY2ZhY2srKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0RBVEFfQ0ZQT0xMOgorCQkJd2xhbmRldi0+cnguZGF0YV9jZnBvbGwrKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0RBVEFfQ0ZBQ0tfQ0ZQT0xMOgorCQkJd2xhbmRldi0+cnguZGF0YV9fY2ZhY2tfY2Zwb2xsKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9OVUxMOgorCQkJV0xBTl9MT0dfREVCVUcoMywgInJ4J2QgZGF0YTpudWxsXG4iKTsKKwkJCXdsYW5kZXYtPnJ4Lm51bGwrKzsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fRlNUWVBFX0NGQUNLOgorCQkJV0xBTl9MT0dfREVCVUcoMywgInJ4J2QgZGF0YTpjZmFja1xuIik7CisJCQl3bGFuZGV2LT5yeC5jZmFjaysrOworCQkJYnJlYWs7CisJCWNhc2UgV0xBTl9GU1RZUEVfQ0ZQT0xMOgorCQkJV0xBTl9MT0dfREVCVUcoMywgInJ4J2QgZGF0YTpjZnBvbGxcbiIpOworCQkJd2xhbmRldi0+cnguY2Zwb2xsKys7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX0ZTVFlQRV9DRkFDS19DRlBPTEw6CisJCQlXTEFOX0xPR19ERUJVRygzLCAicngnZCBkYXRhOmNmYWNrX2NmcG9sbFxuIik7CisJCQl3bGFuZGV2LT5yeC5jZmFja19jZnBvbGwrKzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJLyogcHJpbnRrKCJ1bmtub3duIik7ICovCisJCQl3bGFuZGV2LT5yeC5kYXRhX3Vua25vd24rKzsKKwkJCWJyZWFrOworCQl9CisKKwkJYnJlYWs7CisJfQorCXJldHVybiBkcm9wOworfQorCisjaWZkZWYgQ09ORklHX0hPVFBMVUcKKy8qIE5vdGlmeSB1c2Vyc3BhY2Ugd2hlbiBhIG5ldGRldmljZSBldmVudCBvY2N1cnMsCisgKiBieSBydW5uaW5nICcvc2Jpbi9ob3RwbHVnIG5ldCcgd2l0aCBjZXJ0YWluCisgKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0LgorICovCitpbnQgcDgwMjExX3J1bl9zYmluX2hvdHBsdWcod2xhbmRldmljZV90ICp3bGFuZGV2LCBjaGFyICphY3Rpb24pCit7CisgICAgICAgIGNoYXIgKmFyZ3ZbM10sICplbnZwWzddLCBpZm5hbWVbMTIgKyBJRk5BTVNJWl0sIGFjdGlvbl9zdHJbMzJdOworCWNoYXIgbnNkbmFtZVszMl0sIHdsYW5fd2V4dFszMl07CisgICAgICAgIGludCBpOworCisJaWYgKHdsYW5kZXYpIHsKKwkJc3ByaW50ZihpZm5hbWUsICJJTlRFUkZBQ0U9JXMiLCB3bGFuZGV2LT5uYW1lKTsKKwkJc3ByaW50Zihuc2RuYW1lLCAiTlNETkFNRT0lcyIsIHdsYW5kZXYtPm5zZG5hbWUpOworCX0gZWxzZSB7CisJCXNwcmludGYoaWZuYW1lLCAiSU5URVJGQUNFPW51bGwiKTsKKwkJc3ByaW50Zihuc2RuYW1lLCAiTlNETkFNRT1udWxsIik7CisJfQorCisJc3ByaW50Zih3bGFuX3dleHQsICJXTEFOX1dFWFQ9JXMiLCB3bGFuX3dleHRfd3JpdGUgPyAieSIgOiAiIik7CisgICAgICAgIHNwcmludGYoYWN0aW9uX3N0ciwgIkFDVElPTj0lcyIsIGFjdGlvbik7CisKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGFyZ3ZbaSsrXSA9IGhvdHBsdWdfcGF0aDsKKyAgICAgICAgYXJndltpKytdID0gIndsYW4iOworICAgICAgICBhcmd2W2ldID0gTlVMTDsKKworICAgICAgICBpID0gMDsKKyAgICAgICAgLyogbWluaW1hbCBjb21tYW5kIGVudmlyb25tZW50ICovCisgICAgICAgIGVudnAgW2krK10gPSAiSE9NRT0vIjsKKyAgICAgICAgZW52cCBbaSsrXSA9ICJQQVRIPS9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIjsKKyAgICAgICAgZW52cCBbaSsrXSA9IGlmbmFtZTsKKyAgICAgICAgZW52cCBbaSsrXSA9IGFjdGlvbl9zdHI7CisgICAgICAgIGVudnAgW2krK10gPSBuc2RuYW1lOworICAgICAgICBlbnZwIFtpKytdID0gd2xhbl93ZXh0OworICAgICAgICBlbnZwIFtpXSA9IE5VTEw7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDYyKSkKKyAgICAgICAgcmV0dXJuIGNhbGxfdXNlcm1vZGVoZWxwZXIoYXJndiBbMF0sIGFyZ3YsIGVudnApOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGNhbGxfdXNlcm1vZGVoZWxwZXIoYXJndiBbMF0sIGFyZ3YsIGVudnAsIDApOworI2VuZGlmCit9CisKKyNlbmRpZgorCisKK3ZvaWQgICAgcDgwMjExX3N1c3BlbmQod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCURCRkVOVEVSOworCisjaWZkZWYgQ09ORklHX0hPVFBMVUcKKwlwODAyMTFfcnVuX3NiaW5faG90cGx1Zyh3bGFuZGV2LCBXTEFOX0hPVFBMVUdfU1VTUEVORCk7CisjZW5kaWYKKworCURCRkVYSVQ7Cit9CisKK3ZvaWQgICAgcDgwMjExX3Jlc3VtZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJREJGRU5URVI7CisKKyNpZmRlZiBDT05GSUdfSE9UUExVRworCXA4MDIxMV9ydW5fc2Jpbl9ob3RwbHVnKHdsYW5kZXYsIFdMQU5fSE9UUExVR19SRVNVTUUpOworI2VuZGlmCisKKwlEQkZFWElUOworfQorCitzdGF0aWMgdm9pZCBwODAyMTFrbmV0ZGV2X3R4X3RpbWVvdXQoIG5ldGRldmljZV90ICpuZXRkZXYpCit7CisJd2xhbmRldmljZV90CSp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopbmV0ZGV2LT5wcml2OworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYtPnR4X3RpbWVvdXQpIHsKKwkJd2xhbmRldi0+dHhfdGltZW91dCh3bGFuZGV2KTsKKwl9IGVsc2UgeworCQlXTEFOX0xPR19XQVJOSU5HKCJJbXBsZW1lbnQgdHhfdGltZW91dCBmb3IgJXNcbiIsCisJCQkJIHdsYW5kZXYtPm5zZG5hbWUpOworCQlwODAyMTFuZXRkZXZfd2FrZV9xdWV1ZSh3bGFuZGV2KTsKKwl9CisKKwlEQkZFWElUOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbmV0ZGV2LmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFuZXRkZXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjJlMGNkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExbmV0ZGV2LmgKQEAgLTAsMCArMSwzMzYgQEAKKy8qIHA4MDIxMW5ldGRldi5oCisqCisqIFdMQU4gbmV0IGRldmljZSBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucworKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBUaGlzIGZpbGUgZGVjbGFyZXMgdGhlIHN0cnVjdHVyZSB0eXBlIHRoYXQgcmVwcmVzZW50cyBlYWNoIHdsYW4KKyogaW50ZXJmYWNlLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworI2lmbmRlZiBfTElOVVhfUDgwMjExTkVUREVWX0gKKyNkZWZpbmUgX0xJTlVYX1A4MDIxMU5FVERFVl9ICisKKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29uc3RhbnRzICovCisKKyNkZWZpbmUgV0xBTl9ERVZJQ0VfQ0xPU0VECTAKKyNkZWZpbmUgV0xBTl9ERVZJQ0VfT1BFTgkxCisKKyNkZWZpbmUgV0xBTl9NQUNNT0RFX05PTkUJMAorI2RlZmluZSBXTEFOX01BQ01PREVfSUJTU19TVEEJMQorI2RlZmluZSBXTEFOX01BQ01PREVfRVNTX1NUQQkyCisjZGVmaW5lIFdMQU5fTUFDTU9ERV9FU1NfQVAJMworCisvKiBNU0QgU3RhdGVzICovCisjZGVmaW5lIFdMQU5fTVNEX1NUQVJUCQkJLTEKKyNkZWZpbmUgV0xBTl9NU0RfRFJJVkVSTE9BREVECQkwCisjZGVmaW5lIFdMQU5fTVNEX0hXUFJFU0VOVF9QRU5ESU5HCTEKKyNkZWZpbmUgV0xBTl9NU0RfSFdGQUlMCQkJMgorI2RlZmluZSBXTEFOX01TRF9IV1BSRVNFTlQJCTMKKyNkZWZpbmUgV0xBTl9NU0RfRldMT0FEX1BFTkRJTkcJCTQKKyNkZWZpbmUgV0xBTl9NU0RfRldMT0FECQkJNQorI2RlZmluZSBXTEFOX01TRF9SVU5OSU5HX1BFTkRJTkcJNgorI2RlZmluZSBXTEFOX01TRF9SVU5OSU5HCQk3CisKKyNpZm5kZWYgRVRIX1BfRUNPTkVUCisjZGVmaW5lIEVUSF9QX0VDT05FVCAgIDB4MDAxOCAgICAvKiBuZWVkZWQgZm9yIDIuMi54IGtlcm5lbHMgKi8KKyNlbmRpZgorCisjZGVmaW5lIEVUSF9QXzgwMjExX1JBVyAgICAgICAgKEVUSF9QX0VDT05FVCArIDEpCisKKyNpZm5kZWYgQVJQSFJEX0lFRUU4MDIxMQorI2RlZmluZSBBUlBIUkRfSUVFRTgwMjExIDgwMSAgICAgLyoga2VybmVsIDIuNC42ICovCisjZW5kaWYKKworI2lmbmRlZiBBUlBIUkRfSUVFRTgwMjExX1BSSVNNICAvKiBrZXJuZWwgMi40LjE4ICovCisjZGVmaW5lIEFSUEhSRF9JRUVFODAyMTFfUFJJU00gODAyCisjZW5kaWYKKworLyotLS0gTlNEIENhcGFiaWxpdGllcyBGbGFncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBQODAyMTFfTlNEQ0FQX0hBUkRXQVJFV0VQICAgICAgICAgICAweDAxICAvKiBoYXJkd2FyZSB3ZXAgZW5naW5lICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfVElFRFdFUCAgICAgICAgICAgICAgIDB4MDIgIC8qIGNhbid0IGRlY291cGxlIGVuL2RlICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfTk9IT1NUV0VQICAgICAgICAgICAgIDB4MDQgIC8qIG11c3QgdXNlIGhhcmR3YXJlIHdlcCAqLworI2RlZmluZSBQODAyMTFfTlNEQ0FQX1BCQ0MgICAgICAgICAgICAgICAgICAweDA4ICAvKiBoYXJkd2FyZSBzdXBwb3J0cyBQQkNDICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfU0hPUlRfUFJFQU1CTEUgICAgICAgIDB4MTAgIC8qIGhhcmR3YXJlIHN1cHBvcnRzICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfQUdJTElUWSAgICAgICAgICAgICAgIDB4MjAgIC8qIGhhcmR3YXJlIHN1cHBvcnRzICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfQVBfUkVUUkFOU01JVCAgICAgICAgIDB4NDAgIC8qIG5zZCBoYW5kbGVzIHJldHJhbnNtaXRzICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfSFdGUkFHTUVOVCAgICAgICAgICAgIDB4ODAgIC8qIG5zZCBoYW5kbGVzIGZyYWcvZGVmcmFnICovCisjZGVmaW5lIFA4MDIxMV9OU0RDQVBfQVVUT0pPSU4gICAgICAgICAgICAgIDB4MTAwICAvKiBuc2QgZG9lcyBhdXRvam9pbiAqLworI2RlZmluZSBQODAyMTFfTlNEQ0FQX05PU0NBTiAgICAgICAgICAgICAgICAweDIwMCAgLyogbnNkIGNhbiBzY2FuICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBNYWNyb3MgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFR5cGVzICovCisKKy8qIFJlY2VpdmVkIGZyYW1lIHN0YXRpc3RpY3MgKi8KK3R5cGVkZWYgc3RydWN0IHA4MDIxMV9mcm1yeF90Cit7CisJVUlOVDMyCW1nbXQ7CisJVUlOVDMyCWFzc29jcmVxOworCVVJTlQzMglhc3NvY3Jlc3A7CisJVUlOVDMyCXJlYXNzb2NyZXE7CisJVUlOVDMyCXJlYXNzb2NyZXNwOworCVVJTlQzMglwcm9iZXJlcTsKKwlVSU5UMzIJcHJvYmVyZXNwOworCVVJTlQzMgliZWFjb247CisJVUlOVDMyCWF0aW07CisJVUlOVDMyCWRpc2Fzc29jOworCVVJTlQzMglhdXRoZW47CisJVUlOVDMyCWRlYXV0aGVuOworCVVJTlQzMgltZ210X3Vua25vd247CisJVUlOVDMyCWN0bDsKKwlVSU5UMzIJcHNwb2xsOworCVVJTlQzMglydHM7CisJVUlOVDMyCWN0czsKKwlVSU5UMzIJYWNrOworCVVJTlQzMgljZmVuZDsKKwlVSU5UMzIJY2ZlbmRjZmFjazsKKwlVSU5UMzIJY3RsX3Vua25vd247CisJVUlOVDMyCWRhdGE7CisJVUlOVDMyCWRhdGFvbmx5OworCVVJTlQzMglkYXRhX2NmYWNrOworCVVJTlQzMglkYXRhX2NmcG9sbDsKKwlVSU5UMzIJZGF0YV9fY2ZhY2tfY2Zwb2xsOworCVVJTlQzMgludWxsOworCVVJTlQzMgljZmFjazsKKwlVSU5UMzIJY2Zwb2xsOworCVVJTlQzMgljZmFja19jZnBvbGw7CisJVUlOVDMyCWRhdGFfdW5rbm93bjsKKwlVSU5UMzIgIGRlY3J5cHQ7CisJVUlOVDMyICBkZWNyeXB0X2VycjsKK30gcDgwMjExX2ZybXJ4X3Q7CisKKyNpZmRlZiBXSVJFTEVTU19FWFQKKy8qIGNhbGxlZCBieSAvcHJvYy9uZXQvd2lyZWxlc3MgKi8KK3N0cnVjdCBpd19zdGF0aXN0aWNzKiBwODAyMTF3ZXh0X2dldF93aXJlbGVzc19zdGF0cyhuZXRkZXZpY2VfdCAqZGV2KTsKKy8qIHdpcmVsZXNzIGV4dGVuc2lvbnMnIGlvY3RscyAqLworaW50IHA4MDIxMXdleHRfc3VwcG9ydF9pb2N0bChuZXRkZXZpY2VfdCAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCk7CisjaWYgV0lSRUxFU1NfRVhUID4gMTIKK2V4dGVybiBzdHJ1Y3QgaXdfaGFuZGxlcl9kZWYgcDgwMjExd2V4dF9oYW5kbGVyX2RlZjsKKyNlbmRpZgorCitpbnQgcDgwMjExd2V4dF9ldmVudF9hc3NvY2lhdGVkKHN0cnVjdCB3bGFuZGV2aWNlICp3bGFuZGV2LCBpbnQgYXNzb2MpOworCisjZW5kaWYgLyogd2lyZWxlc3MgZXh0ZW5zaW9ucyAqLworCisvKiBXRVAgc3R1ZmYgKi8KKyNkZWZpbmUgTlVNX1dFUEtFWVMgNAorI2RlZmluZSBNQVhfS0VZTEVOIDMyCisKKyNkZWZpbmUgSE9TVFdFUF9ERUZBVUxUS0VZX01BU0sgKEJJVDF8QklUMCkKKyNkZWZpbmUgSE9TVFdFUF9ERUNSWVBUICBCSVQ0CisjZGVmaW5lIEhPU1RXRVBfRU5DUllQVCAgQklUNQorI2RlZmluZSBIT1NUV0VQX1BSSVZBQ1lJTlZPS0VEIEJJVDYKKyNkZWZpbmUgSE9TVFdFUF9FWENMVURFVU5FTkNSWVBURUQgQklUNworCitleHRlcm4gaW50IHdsYW5fd2F0Y2hkb2c7CitleHRlcm4gaW50IHdsYW5fd2V4dF93cml0ZTsKKworLyogV0xBTiBkZXZpY2UgdHlwZSAqLwordHlwZWRlZiBzdHJ1Y3Qgd2xhbmRldmljZQoreworCXN0cnVjdCB3bGFuZGV2aWNlCSpuZXh0OwkJLyogbGluayBmb3IgbGlzdCBvZiBkZXZpY2VzICovCisJdm9pZAkJCSpwcml2OwkJLyogcHJpdmF0ZSBkYXRhIGZvciBNU0QgKi8KKworCS8qIFN1YnN5c3RlbSBTdGF0ZSAqLworCWNoYXIJCW5hbWVbV0xBTl9ERVZOQU1FTEVOX01BWF07IC8qIERldiBuYW1lLCBmcm9tIHJlZ2lzdGVyX3dsYW5kZXYoKSovCisJY2hhcgkJKm5zZG5hbWU7CisKKwlVSU5UMzIgICAgICAgICAgc3RhdGU7ICAgICAgICAgIC8qIERldmljZSBJL0Ygc3RhdGUgKG9wZW4vY2xvc2VkKSAqLworCVVJTlQzMgkJbXNkc3RhdGU7CS8qIHN0YXRlIG9mIHVuZGVybHlpbmcgZHJpdmVyICovCisJVUlOVDMyCQlod3JlbW92ZWQ7CS8qIEhhcyB0aGUgaHcgYmVlbiB5YW5rZWQgb3V0PyAqLworCisJLyogSGFyZHdhcmUgY29uZmlnICovCisJVUlOVAkJaXJxOworCVVJTlQJCWlvYmFzZTsKKwlVSU5UCQltZW1iYXNlOworCVVJTlQzMiAgICAgICAgICBuc2RjYXBzOyAgLyogTlNEIENhcGFiaWxpdGllcyBmbGFncyAqLworCisJLyogQ29uZmlnIHZhcnMgKi8KKwlVSU5UCQlldGhjb252OworCisJLyogZGV2aWNlIG1ldGhvZHMgKGluaXQgYnkgTVNELCB1c2VkIGJ5IHA4MDIxMSAqLworCWludAkJKCpvcGVuKShzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldik7CisJaW50CQkoKmNsb3NlKShzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldik7CisJdm9pZAkJKCpyZXNldCkoc3RydWN0IHdsYW5kZXZpY2UgKndsYW5kZXYgKTsKKwlpbnQJCSgqdHhmcmFtZSkoc3RydWN0IHdsYW5kZXZpY2UgKndsYW5kZXYsIHN0cnVjdCBza19idWZmICpza2IsIHA4MDIxMV9oZHJfdCAqcDgwMjExX2hkciwgcDgwMjExX21ldGF3ZXBfdCAqcDgwMjExX3dlcCk7CisJaW50CQkoKm1sbWVyZXF1ZXN0KShzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldiwgcDgwMjExbXNnX3QgKm1zZyk7CisJaW50ICAgICAgICAgICAgICgqc2V0X211bHRpY2FzdF9saXN0KShzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldiwKKwkJCQkJICAgICAgbmV0ZGV2aWNlX3QgKmRldik7CisJdm9pZAkJKCp0eF90aW1lb3V0KShzdHJ1Y3Qgd2xhbmRldmljZSAqd2xhbmRldik7CisKKyNpZmRlZiBDT05GSUdfUFJPQ19GUworCWludCAgICAgICAgICAgICAoKm5zZF9wcm9jX3JlYWQpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgY291bnQsIGludAkqZW9mLCB2b2lkICpkYXRhKTsKKyNlbmRpZgorCisJLyogODAyLjExIFN0YXRlICovCisJVUlOVDgJCWJzc2lkW1dMQU5fQlNTSURfTEVOXTsKKwlwODAyMTFwc3RyMzJfdAlzc2lkOworCVVJTlQzMgkJbWFjbW9kZTsKKwlpbnQgICAgICAgICAgICAgbGlua3N0YXR1czsKKwlpbnQgICAgICAgICAgICAgc2hvcnRwcmVhbWJsZTsgIC8qIEMgYm9vbCAqLworCisJLyogV0VQIFN0YXRlICovCisJVUlOVDggd2VwX2tleXNbTlVNX1dFUEtFWVNdW01BWF9LRVlMRU5dOworCVVJTlQ4IHdlcF9rZXlsZW5zW05VTV9XRVBLRVlTXTsKKwlpbnQgICBob3N0d2VwOworCisJLyogUmVxdWVzdC9Db25maXJtIGkvZiBzdGF0ZSAodXNlZCBieSBwODAyMTEpICovCisJdW5zaWduZWQgbG9uZwkJcmVxdWVzdF9wZW5kaW5nOyAvKiBmbGFnLCBhY2Nlc3MgYXRvbWljYWxseSAqLworCisJLyogbmV0bGluayBzb2NrZXQgKi8KKwkvKiBxdWV1ZSBmb3IgaW5kaWNhdGlvbnMgd2FpdGluZyBmb3IgY21kIGNvbXBsZXRpb24gKi8KKwkvKiBMaW51eCBuZXRkZXZpY2UgYW5kIHN1cHBvcnQgKi8KKwluZXRkZXZpY2VfdAkJKm5ldGRldjsJLyogcHRyIHRvIGxpbnV4IG5ldGRldmljZSAqLworCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIGxpbnV4X3N0YXRzOworCisjaWZkZWYgQ09ORklHX1BST0NfRlMKKwkvKiBQcm9jZnMgc3VwcG9ydCAqLworCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeQkqcHJvY2RpcjsKKwlzdHJ1Y3QgcHJvY19kaXJfZW50cnkJKnByb2N3bGFuZGV2OworI2VuZGlmCisKKwkvKiBSeCBib3R0b20gaGFsZiAqLworCXN0cnVjdCB0YXNrbGV0X3N0cnVjdAlyeF9iaDsKKworCXN0cnVjdCBza19idWZmX2hlYWQJbnNkX3J4cTsKKworCS8qIDgwMi4xMSBkZXZpY2Ugc3RhdGlzdGljcyAqLworCXN0cnVjdCBwODAyMTFfZnJtcnhfdAlyeDsKKworLyogY29tcGF0aWJpbGl0eSB0byB3aXJlbGVzcyBleHRlbnNpb25zICovCisjaWZkZWYgV0lSRUxFU1NfRVhUCisJc3RydWN0IGl3X3N0YXRpc3RpY3MJd3N0YXRzOworCisJLyogamtyaWVnbDogaXdzcHkgZmllbGRzICovCisgICAgICAgIFVJTlQ4CQkJc3B5X251bWJlcjsKKyAgICAgICAgY2hhcgkJCXNweV9hZGRyZXNzW0lXX01BWF9TUFldW0VUSF9BTEVOXTsKKyAgICAgICAgc3RydWN0IGl3X3F1YWxpdHkgICAgICAgc3B5X3N0YXRbSVdfTUFYX1NQWV07CisKKyNlbmRpZgorCit9IHdsYW5kZXZpY2VfdDsKKworLyogV0VQIHN0dWZmICovCitpbnQgd2VwX2NoYW5nZV9rZXkod2xhbmRldmljZV90ICp3bGFuZGV2LCBpbnQga2V5bnVtLCBVSU5UOCoga2V5LCBpbnQga2V5bGVuKTsKK2ludCB3ZXBfZGVjcnlwdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQ4ICpidWYsIFVJTlQzMiBsZW4sIGludCBrZXlfb3ZlcnJpZGUsIFVJTlQ4ICppdiwgVUlOVDggKmljdik7CitpbnQgd2VwX2VuY3J5cHQod2xhbmRldmljZV90ICp3bGFuZGV2LCBVSU5UOCAqYnVmLCBVSU5UOCAqZHN0LCBVSU5UMzIgbGVuLCBpbnQga2V5bnVtLCBVSU5UOCAqaXYsIFVJTlQ4ICppY3YpOworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRXh0ZXJucyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKK3ZvaWQJcDgwMjExbmV0ZGV2X3N0YXJ0dXAodm9pZCk7Cit2b2lkCXA4MDIxMW5ldGRldl9zaHV0ZG93bih2b2lkKTsKK2ludAl3bGFuX3NldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CitpbnQJd2xhbl91bnNldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CitpbnQJcmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworaW50CXVucmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2aWNlX3QgKndsYW5kZXYpOwordm9pZAlwODAyMTFuZXRkZXZfcngod2xhbmRldmljZV90ICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK3ZvaWQJcDgwMjExbmV0ZGV2X2h3cmVtb3ZlZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOwordm9pZCAgICBwODAyMTFfc3VzcGVuZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOwordm9pZCAgICBwODAyMTFfcmVzdW1lKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWZpbml0aW9ucyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQKK3A4MDIxMW5ldGRldl9zdG9wX3F1ZXVlKHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwlpZiAoICF3bGFuZGV2ICkgcmV0dXJuOworCWlmICggIXdsYW5kZXYtPm5ldGRldiApIHJldHVybjsKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwzLDM4KSApCisJd2xhbmRldi0+bmV0ZGV2LT50YnVzeSA9IDE7CisJd2xhbmRldi0+bmV0ZGV2LT5zdGFydCA9IDA7CisjZWxzZQorCW5ldGlmX3N0b3BfcXVldWUod2xhbmRldi0+bmV0ZGV2KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3A4MDIxMW5ldGRldl9zdGFydF9xdWV1ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaWYgKCAhd2xhbmRldiApIHJldHVybjsKKwlpZiAoICF3bGFuZGV2LT5uZXRkZXYgKSByZXR1cm47CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMywzOCkgKQorCXdsYW5kZXYtPm5ldGRldi0+dGJ1c3kgPSAwOworCXdsYW5kZXYtPm5ldGRldi0+c3RhcnQgPSAxOworI2Vsc2UKKwluZXRpZl9zdGFydF9xdWV1ZSh3bGFuZGV2LT5uZXRkZXYpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorcDgwMjExbmV0ZGV2X3dha2VfcXVldWUod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCWlmICggIXdsYW5kZXYgKSByZXR1cm47CisJaWYgKCAhd2xhbmRldi0+bmV0ZGV2ICkgcmV0dXJuOworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsMzgpICkKKwl3bGFuZGV2LT5uZXRkZXYtPnRidXN5ID0gMDsKKwltYXJrX2JoKE5FVF9CSCk7CisjZWxzZQorCW5ldGlmX3dha2VfcXVldWUod2xhbmRldi0+bmV0ZGV2KTsKKyNlbmRpZgorfQorCisjaWZkZWYgQ09ORklHX0hPVFBMVUcKKyNkZWZpbmUgV0xBTl9IT1RQTFVHX1JFR0lTVEVSICJyZWdpc3RlciIKKyNkZWZpbmUgV0xBTl9IT1RQTFVHX1JFTU9WRSAgICJyZW1vdmUiCisjZGVmaW5lIFdMQU5fSE9UUExVR19TVEFSVFVQICAic3RhcnR1cCIKKyNkZWZpbmUgV0xBTl9IT1RQTFVHX1NIVVRET1dOICJzaHV0ZG93biIKKyNkZWZpbmUgV0xBTl9IT1RQTFVHX1NVU1BFTkQgInN1c3BlbmQiCisjZGVmaW5lIFdMQU5fSE9UUExVR19SRVNVTUUgInJlc3VtZSIKK2ludCBwODAyMTFfcnVuX3NiaW5faG90cGx1Zyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGNoYXIgKmFjdGlvbik7CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFyZXEuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMXJlcS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMzNhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFyZXEuYwpAQCAtMCwwICsxLDMyOSBAQAorLyogc3JjL3A4MDIxMS9wODAyMTFyZXEuYworKgorKiBSZXF1ZXN0L0luZGljYXRpb24vTWFjTWdtdCBpbnRlcmZhY2UgaGFuZGxpbmcgZnVuY3Rpb25zCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZnVuY3Rpb25zLCB0eXBlcywgYW5kIG1hY3JvcyB0byBzdXBwb3J0IHRoZQorKiBNTE1FIHJlcXVlc3QgaW50ZXJmYWNlIHRoYXQncyBpbXBsZW1lbnRlZCB2aWEgdGhlIGRldmljZSBpb2N0bHMuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPG5ldC9zb2NrLmg+CisjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpbmNsdWRlICJwODAyMTF0eXBlcy5oIgorI2luY2x1ZGUgInA4MDIxMWhkci5oIgorI2luY2x1ZGUgInA4MDIxMW1nbXQuaCIKKyNpbmNsdWRlICJwODAyMTFjb252LmgiCisjaW5jbHVkZSAicDgwMjExbXNnLmgiCisjaW5jbHVkZSAicDgwMjExbmV0ZGV2LmgiCisjaW5jbHVkZSAicDgwMjExaW9jdGwuaCIKKyNpbmNsdWRlICJwODAyMTFtZXRhZGVmLmgiCisjaW5jbHVkZSAicDgwMjExbWV0YXN0cnVjdC5oIgorI2luY2x1ZGUgInA4MDIxMXJlcS5oIgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgQ29uc3RhbnRzICovCisKKy8qIE1heGltdW0gYW1vdW50IG9mIHRpbWUgd2UnbGwgd2FpdCBmb3IgYSByZXF1ZXN0IHRvIGNvbXBsZXRlICovCisjZGVmaW5lIFA4MDIxMVJFUV9NQVhUSU1FCTMqSFoJLyogMyBzZWNvbmRzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBNYWNyb3MgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFR5cGVzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBTdGF0aWMgRGVmaW5pdGlvbnMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyAqLworCitzdGF0aWMgdm9pZCBwODAyMTFyZXFfaGFuZGxlbXNnKCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHA4MDIxMW1zZ190ICptc2cpOworc3RhdGljIGludCBwODAyMTFyZXFfbWlic2V0X21pYmdldCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHA4MDIxMW1zZ19kb3QxMXJlcV9taWJnZXRfdCAqbWliX21zZywgaW50IGlzZ2V0KTsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEZ1bmN0aW9uIERlZmluaXRpb25zICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHA4MDIxMXJlcV9kb3JlcXVlc3QKKyoKKyogSGFuZGxlcyBhbiBNTE1FIHJlcWVzdC9jb25maXJtIG1lc3NhZ2UuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJV0xBTiBkZXZpY2Ugc3RydWN0CisqCW1zZ2J1ZgkJQnVmZmVyIGNvbnRhaW5pbmcgYSByZXF1ZXN0IG1lc3NhZ2UKKyoKKyogUmV0dXJuczoKKyoJMCBvbiBzdWNjZXNzLCBhbiBlcnJubyBvdGhlcndpc2UKKyoKKyogQ2FsbCBjb250ZXh0OgorKglQb3RlbnRpYWxseSBibG9ja3MgdGhlIGNhbGxlciwgc28gaXQncyBhIGdvb2QgaWRlYSB0bworKglub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW4gaW50ZXJydXB0IGNvbnRleHQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwODAyMTFyZXFfZG9yZXF1ZXN0KCB3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQ4ICptc2didWYpCit7CisJaW50CQlyZXN1bHQgPSAwOworCXA4MDIxMW1zZ190CSptc2cgPSAocDgwMjExbXNnX3QqKW1zZ2J1ZjsKKworCURCRkVOVEVSOworCisJLyogQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBNU0QgaXMgcnVubmluZyAqLworCWlmICgKKwkhKCh3bGFuZGV2LT5tc2RzdGF0ZSA9PSBXTEFOX01TRF9IV1BSRVNFTlQgJiYKKwltc2ctPm1zZ2NvZGUgPT0gRElEbXNnX2xueHJlcV9pZnN0YXRlKSB8fAorCXdsYW5kZXYtPm1zZHN0YXRlID09IFdMQU5fTVNEX1JVTk5JTkcgfHwKKwl3bGFuZGV2LT5tc2RzdGF0ZSA9PSBXTEFOX01TRF9GV0xPQUQpICkgeworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBDaGVjayBQZXJtaXNzaW9ucyAqLworCWlmICghY2FwYWJsZShDQVBfTkVUX0FETUlOKSAmJgorCSAgICAobXNnLT5tc2djb2RlICE9IERJRG1zZ19kb3QxMXJlcV9taWJnZXQpKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogb25seSBkb3QxMXJlcV9taWJnZXQgYWxsb3dlZCBmb3Igbm9uLXJvb3QuXG4iLCB3bGFuZGV2LT5uYW1lKTsKKwkJcmV0dXJuIC1FUEVSTTsKKwl9CisKKwkvKiBDaGVjayBmb3IgYnVzeSBzdGF0dXMgKi8KKwlpZiAoIHRlc3RfYW5kX3NldF9iaXQoMSwgJih3bGFuZGV2LT5yZXF1ZXN0X3BlbmRpbmcpKSkgeworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCS8qIEFsbG93IHA4MDIxMSB0byBsb29rIGF0IG1zZyBhbmQgaGFuZGxlIGlmIGRlc2lyZWQuICovCisJLyogU28gZmFyLCBhbGwgcDgwMjExIG1zZ3MgYXJlIGltbWVkaWF0ZSwgbm8gd2FpdHEvdGltZXIgbmVjZXNzYXJ5ICovCisJLyogVGhpcyBtYXkgY2hhbmdlLiAqLworCXA4MDIxMXJlcV9oYW5kbGVtc2cod2xhbmRldiwgbXNnKTsKKworCS8qIFBhc3MgaXQgZG93biB0byB3bGFuZGV2IHZpYSB3bGFuZGV2LT5tbG1lcmVxdWVzdCAqLworCWlmICggd2xhbmRldi0+bWxtZXJlcXVlc3QgIT0gTlVMTCApCisJCXdsYW5kZXYtPm1sbWVyZXF1ZXN0KHdsYW5kZXYsIG1zZyk7CisKKwljbGVhcl9iaXQoIDEsICYod2xhbmRldi0+cmVxdWVzdF9wZW5kaW5nKSk7CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OwkvKiBpZiByZXN1bHQ9PTAsIG1zZy0+c3RhdHVzIHN0aWxsIG1heSBjb250YWluIGFuIGVyciAqLworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcDgwMjExcmVxX2hhbmRsZW1zZworKgorKiBwODAyMTEgbWVzc2FnZSBoYW5kbGVyLiAgUHJpbWFyaWx5IGxvb2tzIGZvciBtZXNzYWdlcyB0aGF0CisqIGJlbG9uZyB0byBwODAyMTEgYW5kIHRoZW4gZGlzcGF0Y2hlcyB0aGUgYXBwcm9wcmlhdGUgcmVzcG9uc2UuCisqIFRPRE86IHdlIGRvbid0IGRvIGFueXRoaW5nIHlldC4gIE9uY2UgdGhlIGxpbnV4TUlCIGlzIGJldHRlcgorKglkZWZpbmVkIHdlJ2xsIG5lZWQgYSBnZXQvc2V0IGhhbmRsZXIuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJV0xBTiBkZXZpY2Ugc3RydWN0CisqCW1zZwkJbWVzc2FnZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZyAoYW55IHJlc3VsdHMgYXJlIHNldCBpbiB0aGUgc3RhdHVzIGZpZWxkIG9mIHRoZSBtc2cpCisqCisqIENhbGwgY29udGV4dDoKKyoJUHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcDgwMjExcmVxX2hhbmRsZW1zZyggd2xhbmRldmljZV90ICp3bGFuZGV2LCBwODAyMTFtc2dfdCAqbXNnKQoreworICAgICAgICBEQkZFTlRFUjsKKworCXN3aXRjaCAobXNnLT5tc2djb2RlKSB7CisKKwljYXNlIERJRG1zZ19sbnhyZXFfaG9zdHdlcDogeworCQlwODAyMTFtc2dfbG54cmVxX2hvc3R3ZXBfdCAqcmVxID0gKHA4MDIxMW1zZ19sbnhyZXFfaG9zdHdlcF90KikgbXNnOworCQl3bGFuZGV2LT5ob3N0d2VwICY9IH4oSE9TVFdFUF9ERUNSWVBUfEhPU1RXRVBfRU5DUllQVCk7CisJCWlmIChyZXEtPmRlY3J5cHQuZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpCisJCQl3bGFuZGV2LT5ob3N0d2VwIHw9IEhPU1RXRVBfREVDUllQVDsKKwkJaWYgKHJlcS0+ZW5jcnlwdC5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSkKKwkJCXdsYW5kZXYtPmhvc3R3ZXAgfD0gSE9TVFdFUF9FTkNSWVBUOworCisJCWJyZWFrOworCX0KKwljYXNlIERJRG1zZ19kb3QxMXJlcV9taWJnZXQ6CisJY2FzZSBESURtc2dfZG90MTFyZXFfbWlic2V0OiB7CisJCWludCBpc2dldCA9IChtc2ctPm1zZ2NvZGUgPT0gRElEbXNnX2RvdDExcmVxX21pYmdldCk7CisJCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJnZXRfdCAgKm1pYl9tc2cgPSAocDgwMjExbXNnX2RvdDExcmVxX21pYmdldF90ICopIG1zZzsKKwkJcDgwMjExcmVxX21pYnNldF9taWJnZXQgKHdsYW5kZXYsIG1pYl9tc2csIGlzZ2V0KTsKKwl9CisJZGVmYXVsdDoKKwkJLy8gWFhYIGRvIG5vdGhpbmchCisJCTsKKwl9IC8qIHN3aXRjaCBtc2ctPm1zZ2NvZGUgKi8KKworCURCRkVYSVQ7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExcmVxX21pYnNldF9taWJnZXQod2xhbmRldmljZV90ICp3bGFuZGV2LAorCQkJCSAgIHA4MDIxMW1zZ19kb3QxMXJlcV9taWJnZXRfdCAqbWliX21zZywKKwkJCQkgICBpbnQgaXNnZXQpCit7CisJcDgwMjExaXRlbWRfdCAgICptaWJpdGVtID0gKHA4MDIxMWl0ZW1kX3QgKikgbWliX21zZy0+bWliYXR0cmlidXRlLmRhdGE7CisJcDgwMjExcHN0cmRfdCAgKnBzdHIgPSAocDgwMjExcHN0cmRfdCopIG1pYml0ZW0tPmRhdGE7CisJVUlOVDggKmtleSA9IG1pYml0ZW0tPmRhdGEgKyBzaXplb2YocDgwMjExcHN0cmRfdCk7CisKKwlEQkZFTlRFUjsKKworCXN3aXRjaCAobWliaXRlbS0+ZGlkKSB7CisJY2FzZSBESURtaWJfZG90MTFzbXRfcDgwMjExVGFibGVfcDgwMjExX2lmc3RhdGU6IHsKKwkJVUlOVDMyICpkYXRhID0gKFVJTlQzMiAqKSBtaWJpdGVtLT5kYXRhOworCQlpZiAoaXNnZXQpCisJCQlzd2l0Y2ggKHdsYW5kZXYtPm1zZHN0YXRlKSB7CisJCQljYXNlIFdMQU5fTVNEX0hXUFJFU0VOVDoKKwkJCQkqZGF0YSA9IFA4MDIxMUVOVU1faWZzdGF0ZV9kaXNhYmxlOworCQkJCWJyZWFrOworCQkJY2FzZSBXTEFOX01TRF9GV0xPQUQ6CisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX2lmc3RhdGVfZndsb2FkOworCQkJCWJyZWFrOworCQkJY2FzZSBXTEFOX01TRF9SVU5OSU5HOgorCQkJCSpkYXRhID0gUDgwMjExRU5VTV9pZnN0YXRlX2VuYWJsZTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX2lmc3RhdGVfZW5hYmxlOworCQkJfQorCQlicmVhazsKKwl9CisJY2FzZSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlPcGVyYXRpb25UYWJsZV9kb3QxMVNob3J0UHJlYW1ibGVFbmFibGVkOiB7CisJCVVJTlQzMiAqZGF0YSA9IChVSU5UMzIgKikgbWliaXRlbS0+ZGF0YTsKKworCQlpZiAoaXNnZXQpCisJCQkqZGF0YSA9IHdsYW5kZXYtPnNob3J0cHJlYW1ibGU7CisJCWVsc2UKKwkJCXdsYW5kZXYtPnNob3J0cHJlYW1ibGUgPSAqZGF0YTsKKwkJYnJlYWs7CisJfQorCWNhc2UgRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkwOiB7CisJCWlmICghaXNnZXQpCisJCQl3ZXBfY2hhbmdlX2tleSh3bGFuZGV2LCAwLCBrZXksIHBzdHItPmxlbik7CisJCWJyZWFrOworCX0KKwljYXNlIERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MTogeworCQlpZiAoIWlzZ2V0KQorCQkJd2VwX2NoYW5nZV9rZXkod2xhbmRldiwgMSwga2V5LCBwc3RyLT5sZW4pOworCQlicmVhazsKKwl9CisJY2FzZSBESURtaWJfZG90MTFzbXRfZG90MTFXRVBEZWZhdWx0S2V5c1RhYmxlX2RvdDExV0VQRGVmYXVsdEtleTI6IHsKKwkJaWYgKCFpc2dldCkKKwkJCXdlcF9jaGFuZ2Vfa2V5KHdsYW5kZXYsIDIsIGtleSwgcHN0ci0+bGVuKTsKKwkJYnJlYWs7CisJfQorCWNhc2UgRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkzOiB7CisJCWlmICghaXNnZXQpCisJCQl3ZXBfY2hhbmdlX2tleSh3bGFuZGV2LCAzLCBrZXksIHBzdHItPmxlbik7CisJCWJyZWFrOworCX0KKwljYXNlIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXlJRDogeworCQlVSU5UMzIgKmRhdGEgPSAoVUlOVDMyICopIG1pYml0ZW0tPmRhdGE7CisKKwkJaWYgKGlzZ2V0KSB7CisJCQkqZGF0YSA9IHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0RFRkFVTFRLRVlfTUFTSzsKKwkJCX0gZWxzZSB7CisJCQkJd2xhbmRldi0+aG9zdHdlcCAmPSB+KEhPU1RXRVBfREVGQVVMVEtFWV9NQVNLKTsKKworCQkJCXdsYW5kZXYtPmhvc3R3ZXAgfD0gKCpkYXRhICYgSE9TVFdFUF9ERUZBVUxUS0VZX01BU0spOworCQkJfQorCQlicmVhazsKKwl9CisJY2FzZSBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFQcml2YWN5SW52b2tlZDogeworCQlVSU5UMzIgKmRhdGEgPSAoVUlOVDMyICopIG1pYml0ZW0tPmRhdGE7CisKKwkJaWYgKGlzZ2V0KSB7CisJCQlpZiAod2xhbmRldi0+aG9zdHdlcCAmIEhPU1RXRVBfUFJJVkFDWUlOVk9LRUQpCisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX3RydXRoX3RydWU7CisJCQllbHNlCisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOworCQl9IGVsc2UgeworCQkJCXdsYW5kZXYtPmhvc3R3ZXAgJj0gfihIT1NUV0VQX1BSSVZBQ1lJTlZPS0VEKTsKKwkJCQlpZiAoKmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlKQorCQkJCQl3bGFuZGV2LT5ob3N0d2VwIHw9IEhPU1RXRVBfUFJJVkFDWUlOVk9LRUQ7CisJCX0KKwkJYnJlYWs7CisJfQorCWNhc2UgRElEbWliX2RvdDExc210X2RvdDExUHJpdmFjeVRhYmxlX2RvdDExRXhjbHVkZVVuZW5jcnlwdGVkOiB7CisJCVVJTlQzMiAqZGF0YSA9IChVSU5UMzIgKikgbWliaXRlbS0+ZGF0YTsKKworCQlpZiAoaXNnZXQpIHsKKwkJCWlmICh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9FWENMVURFVU5FTkNSWVBURUQpCisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX3RydXRoX3RydWU7CisJCQllbHNlCisJCQkJKmRhdGEgPSBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOworCQl9IGVsc2UgeworCQkJd2xhbmRldi0+aG9zdHdlcCAmPSB+KEhPU1RXRVBfRVhDTFVERVVORU5DUllQVEVEKTsKKwkJCWlmICgqZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpCisJCQkJd2xhbmRldi0+aG9zdHdlcCB8PSBIT1NUV0VQX0VYQ0xVREVVTkVOQ1JZUFRFRDsKKwkJfQorCQlicmVhazsKKwl9CisJZGVmYXVsdDoKKwkJLy8gWFhYWCBkbyBub3RoaW5nIQorCQk7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExcmVxLmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTFyZXEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGFiZGNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExcmVxLmgKQEAgLTAsMCArMSw2OCBAQAorLyogcDgwMjExcmVxLmgKKyoKKyogUmVxdWVzdCBoYW5kbGluZyBmdW5jdGlvbnMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX0xJTlVYX1A4MDIxMVJFUV9ICisjZGVmaW5lIF9MSU5VWF9QODAyMTFSRVFfSAorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29uc3RhbnRzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBNYWNyb3MgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFR5cGVzICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBFeHRlcm5zICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworaW50CXA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldmljZV90ICp3bGFuZGV2LCBVSU5UOCAqbXNnYnVmKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTF0eXBlcy5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTFiMGNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExdHlwZXMuaApAQCAtMCwwICsxLDY3NSBAQAorLyogcDgwMjExdHlwZXMuaAorKgorKiBNYWNyb3MsIGNvbnN0YW50cywgdHlwZXMsIGFuZCBmdW5jcyBmb3IgcDgwMjExIGRhdGEgdHlwZXMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhpcyBmaWxlIGRlY2xhcmVzIHNvbWUgb2YgdGhlIGNvbnN0YW50cyBhbmQgdHlwZXMgdXNlZCBpbiB2YXJpb3VzCisqIHBhcnRzIG9mIHRoZSBsaW51eC13bGFuIHN5c3RlbS4KKyoKKyogTm90ZXM6CisqICAgLSBDb25zdGFudCB2YWx1ZXMgYXJlIGFsd2F5cyBpbiBIT1NUIGJ5dGUgb3JkZXIuCisqCisqIEFsbCBmdW5jdGlvbnMgYW5kIHN0YXRpY3MgZGVjbGFyZWQgaGVyZSBhcmUgaW1wbGVtZW50ZWQgaW4gcDgwMjExdHlwZXMuYworKiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisjaWZuZGVmIF9QODAyMTFUWVBFU19ICisjZGVmaW5lIF9QODAyMTFUWVBFU19ICisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjaWZuZGVmIF9XTEFOX0NPTVBBVF9ICisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29uc3RhbnRzICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogcDgwMjExIGRhdGEgdHlwZSBjb2RlcyB1c2VkIGZvciBNSUIgaXRlbXMgYW5kIG1lc3NhZ2UgKi8KKy8qIGFyZ3VtZW50cy4gVGhlIHZhcmlvdXMgbWV0YWRhdGEgc3RydWN0dXJlcyBwcm92aWRlIGFkZGl0aW9uYWwgKi8KKy8qIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIHR5cGVzLiAqLworCisjZGVmaW5lIFA4MDIxMV9UWVBFX09DVEVUU1RSCQkxCS8qIHBhc2NhbCBhcnJheSBvZiBieXRlcyAqLworI2RlZmluZSBQODAyMTFfVFlQRV9ESVNQTEFZU1RSCQkyCS8qIHBhc2NhbCBhcnJheSBvZiBieXRlcyBjb250YWluaW5nIGFzY2lpICovCisjZGVmaW5lIFA4MDIxMV9UWVBFX0lOVAkJCTQJLyogVUlOVDMyIG1pbiBhbmQgbWF4IGxpbWl0ZWQgYnkgMzIgYml0cyAqLworI2RlZmluZSBQODAyMTFfVFlQRV9FTlVNSU5UCQk1CS8qIFVJTlQzMiBob2xkaW5nIGEgbnVtZXJpYworCQkJCQkJICAgY29kZSB0aGF0IGNhbiBiZSBtYXBwZWQKKwkJCQkJCSAgIHRvIGEgdGV4dHVhbCBuYW1lICovCisjZGVmaW5lIFA4MDIxMV9UWVBFX1VOS0RBVEEJCTYJLyogRGF0YSBpdGVtIGNvbnRhaW5pbmcgYW4KKwkJCQkJCSAgIHVua25vd24gZGF0YSB0eXBlICovCisjZGVmaW5lIFA4MDIxMV9UWVBFX0lOVEFSUkFZCQk3CS8qIEFycmF5IG9mIDMyLWJpdCBpbnRlZ2Vycy4gKi8KKyNkZWZpbmUgUDgwMjExX1RZUEVfQklUQVJSQVkJCTgJLyogQXJyYXkgb2YgYml0cy4gKi8KKyNkZWZpbmUgUDgwMjExX1RZUEVfTUFDQVJSQVkJCTkJLyogQXJyYXkgb2YgTUFDIGFkZHJlc3Nlcy4gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBpbmRleGVzIGludG8gdGhlIE1pYiBDYXRlZ29yeSBMaXN0ICovCisvKiBhbmQgdGhlIE1lc3NhZ2UgQ2F0ZWdvcnkgTGlzdCAqLworCisvKiBNaWIgQ2F0ZWdvcnkgTGlzdCAqLworI2RlZmluZSBQODAyMTFfTUlCX0NBVF9ET1QxMVNNVAkJMQorI2RlZmluZSBQODAyMTFfTUlCX0NBVF9ET1QxMU1BQwkJMgorI2RlZmluZSBQODAyMTFfTUlCX0NBVF9ET1QxMVBIWQkJMworCisjZGVmaW5lIFA4MDIxMVNFQ19ET1QxMVNNVAkJUDgwMjExX01JQl9DQVRfRE9UMTFTTVQKKyNkZWZpbmUgUDgwMjExU0VDX0RPVDExTUFDCQlQODAyMTFfTUlCX0NBVF9ET1QxMU1BQworI2RlZmluZSBQODAyMTFTRUNfRE9UMTFQSFkJCVA4MDIxMV9NSUJfQ0FUX0RPVDExUEhZCisKKy8qIE1lc3NhZ2UgQ2F0ZWdvcnkgTGlzdCAqLworI2RlZmluZSBQODAyMTFfTVNHX0NBVF9ET1QxMVJFUQkJMQorI2RlZmluZSBQODAyMTFfTVNHX0NBVF9ET1QxMUlORAkJMgorLyogI2RlZmluZSBQODAyMTFfTVNHX0NBVF9ET1QxMUNGTQkJMyAoZG9lc24ndCBleGlzdCBhdCB0aGlzIHRpbWUpICovCisKKyNkZWZpbmUgUDgwMjExU0VDX0RPVDExUkVRCQlQODAyMTFfTVNHX0NBVF9ET1QxMVJFUQorI2RlZmluZSBQODAyMTFTRUNfRE9UMTFJTkQJCVA4MDIxMV9NU0dfQ0FUX0RPVDExSU5ECisvKiAjZGVmaW5lIFA4MDIxMVNFQ19ET1QxMUNGTQkJUDgwMjExX01TR19DQVRfRE9UMTFDRk0gIChkb2Vzbid0IGV4aXN0IGF0IHRoaXMgdGltZSAqLworCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHA4MDIxMSBESUQgZmllbGQgY29kZXMgdGhhdCByZXByZXNlbnQgYWNjZXNzIHR5cGUgYW5kICovCisvKiBpc190YWJsZSBzdGF0dXMuICovCisKKyNkZWZpbmUgUDgwMjExRElEX0FDQ0VTU19SRUFECQkweDEwMDAwMDAwCisjZGVmaW5lIFA4MDIxMURJRF9BQ0NFU1NfV1JJVEUJCTB4MDgwMDAwMDAKKyNkZWZpbmUgUDgwMjExRElEX1dSSVRFT05MWQkJMHgwMDAwMDAwMQorI2RlZmluZSBQODAyMTFESURfUkVBRE9OTFkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgUDgwMjExRElEX1JFQURXUklURQkJMHgwMDAwMDAwMworI2RlZmluZSBQODAyMTFESURfSVNUQUJMRV9GQUxTRQkJMAorI2RlZmluZSBQODAyMTFESURfSVNUQUJMRV9UUlVFCQkxCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBwODAyMTEgZW51bWVyYXRpb24gY29uc3RhbnRzLiAgVGhlIHZhbHVlIHRvIHRleHQgbWFwcGluZ3MgZm9yICovCisvKiAgdGhlc2UgaXMgaW4gcDgwMjExdHlwZXMuYy4gIFRoZXNlIGRlZmluZXMgd2VyZSBnZW5lcmF0ZWQgKi8KKy8qICBmcm9tIHRoZSBtYXBwaW5ncy4gKi8KKworLyogZXJyb3IgY29kZXMgZm9yIGxvb2t1cHMgKi8KKyNkZWZpbmUgUDgwMjExRU5VTV9CQUQJCQkJMHhmZmZmZmZmZlVMCisjZGVmaW5lIFA4MDIxMUVOVU1fQkFEU1RSCQkJIlA4MDIxMUVOVU1fQkFEIgorCisjZGVmaW5lIFA4MDIxMUVOVU1fdHJ1dGhfZmFsc2UJCQkwCisjZGVmaW5lIFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZQkJCTEKKyNkZWZpbmUgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUJCTAKKyNkZWZpbmUgUDgwMjExRU5VTV9pZnN0YXRlX2Z3bG9hZAkJMQorI2RlZmluZSBQODAyMTFFTlVNX2lmc3RhdGVfZW5hYmxlCQkyCisjZGVmaW5lIFA4MDIxMUVOVU1fcG93ZXJtZ210X2FjdGl2ZQkJMQorI2RlZmluZSBQODAyMTFFTlVNX3Bvd2VybWdtdF9wb3dlcnNhdmUJCTIKKyNkZWZpbmUgUDgwMjExRU5VTV9ic3N0eXBlX2luZnJhc3RydWN0dXJlCTEKKyNkZWZpbmUgUDgwMjExRU5VTV9ic3N0eXBlX2luZGVwZW5kZW50CQkyCisjZGVmaW5lIFA4MDIxMUVOVU1fYnNzdHlwZV9hbnkJCQkzCisjZGVmaW5lIFA4MDIxMUVOVU1fYXV0aGFsZ19vcGVuc3lzdGVtCQkxCisjZGVmaW5lIFA4MDIxMUVOVU1fYXV0aGFsZ19zaGFyZWRrZXkJCTIKKyNkZWZpbmUgUDgwMjExRU5VTV9waHl0eXBlX2Zoc3MJCQkxCisjZGVmaW5lIFA4MDIxMUVOVU1fcGh5dHlwZV9kc3NzCQkJMgorI2RlZmluZSBQODAyMTFFTlVNX3BoeXR5cGVfaXJiYXNlYmFuZAkJMworI2RlZmluZSBQODAyMTFFTlVNX3RlbXB0eXBlX2NvbW1lcmNpYWwJCTEKKyNkZWZpbmUgUDgwMjExRU5VTV90ZW1wdHlwZV9pbmR1c3RyaWFsCQkyCisjZGVmaW5lIFA4MDIxMUVOVU1fcmVnZG9tYWluX2ZjYwkJMTYKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWdkb21haW5fZG9jCQkzMgorI2RlZmluZSBQODAyMTFFTlVNX3JlZ2RvbWFpbl9ldHNpCQk0OAorI2RlZmluZSBQODAyMTFFTlVNX3JlZ2RvbWFpbl9zcGFpbgkJNDkKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWdkb21haW5fZnJhbmNlCQk1MAorI2RlZmluZSBQODAyMTFFTlVNX3JlZ2RvbWFpbl9ta2sJCTY0CisjZGVmaW5lIFA4MDIxMUVOVU1fY2NhbW9kZV9lZG9ubHkJCTEKKyNkZWZpbmUgUDgwMjExRU5VTV9jY2Ftb2RlX2Nzb25seQkJMgorI2RlZmluZSBQODAyMTFFTlVNX2NjYW1vZGVfZWRhbmRjcwkJNAorI2RlZmluZSBQODAyMTFFTlVNX2NjYW1vZGVfY3N3aXRodGltZXIJCTgKKyNkZWZpbmUgUDgwMjExRU5VTV9jY2Ftb2RlX2hyY3NhbmRlZAkJMTYKKyNkZWZpbmUgUDgwMjExRU5VTV9kaXZlcnNpdHlfZml4ZWRsaXN0CQkxCisjZGVmaW5lIFA4MDIxMUVOVU1fZGl2ZXJzaXR5X25vdHN1cHBvcnRlZAkyCisjZGVmaW5lIFA4MDIxMUVOVU1fZGl2ZXJzaXR5X2R5bmFtaWMJCTMKKyNkZWZpbmUgUDgwMjExRU5VTV9zY2FudHlwZV9hY3RpdmUJCTEKKyNkZWZpbmUgUDgwMjExRU5VTV9zY2FudHlwZV9wYXNzaXZlCQkyCisjZGVmaW5lIFA4MDIxMUVOVU1fc2NhbnR5cGVfYm90aAkJMworI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzcwkJMQorI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW52YWxpZF9wYXJhbWV0ZXJzCTIKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQJMworI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfdGltZW91dAkJNAorI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfdG9vX21hbnlfcmVxCTUKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX3JlZnVzZWQJCTYKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2Jzc19hbHJlYWR5CTcKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfYWNjZXNzCTgKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfbWliYXR0cmlidXRlCTkKKyNkZWZpbmUgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2NhbnRfc2V0X3JlYWRvbmx5X21pYgkxMAorI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZQkxMQorI2RlZmluZSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfY2FudF9nZXRfd3JpdGVvbmx5X21pYgkxMgorI2RlZmluZSBQODAyMTFFTlVNX3JlYXNvbl91bnNwZWNfcmVhc29uCQkxCisjZGVmaW5lIFA4MDIxMUVOVU1fcmVhc29uX2F1dGhfbm90X3ZhbGlkCTIKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWFzb25fZGVhdXRoX2x2X3NzCQkzCisjZGVmaW5lIFA4MDIxMUVOVU1fcmVhc29uX2luYWN0aXZpdHkJCTQKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWFzb25fYXBfb3ZlcmxvYWQJCTUKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWFzb25fY2xhc3MyM19lcnIJCTYKKyNkZWZpbmUgUDgwMjExRU5VTV9yZWFzb25fY2xhc3MzX2VycgkJNworI2RlZmluZSBQODAyMTFFTlVNX3JlYXNvbl9kaXNhc19sdl9zcwkJOAorI2RlZmluZSBQODAyMTFFTlVNX3JlYXNvbl9hc29jX25vdF9hdXRoCQk5CisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX3N1Y2Nlc3NmdWwJCTAKKyNkZWZpbmUgUDgwMjExRU5VTV9zdGF0dXNfdW5zcGVjX2ZhaWx1cmUJMQorI2RlZmluZSBQODAyMTFFTlVNX3N0YXR1c191bnN1cF9jYXAJCTEwCisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX3JlYXNvY19ub19hc29jCTExCisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX2ZhaWxfb3RoZXIJCTEyCisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX3Vuc3B0X2FsZwkJMTMKKyNkZWZpbmUgUDgwMjExRU5VTV9zdGF0dXNfYXV0aF9zZXFfZmFpbAkJMTQKKyNkZWZpbmUgUDgwMjExRU5VTV9zdGF0dXNfY2hsbmdfZmFpbAkJMTUKKyNkZWZpbmUgUDgwMjExRU5VTV9zdGF0dXNfYXV0aF90aW1lb3V0CQkxNgorI2RlZmluZSBQODAyMTFFTlVNX3N0YXR1c19hcF9mdWxsCQkxNworI2RlZmluZSBQODAyMTFFTlVNX3N0YXR1c191bnN1cF9yYXRlCQkxOAorI2RlZmluZSBQODAyMTFFTlVNX3N0YXR1c191bnN1cF9zaG9ydHByZWFtYmxlCTE5CisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX3Vuc3VwX3BiY2MJCTIwCisjZGVmaW5lIFA4MDIxMUVOVU1fc3RhdHVzX3Vuc3VwX2FnaWxpdHkJCTIxCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vawkJMAorI2RlZmluZSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX25vX3ZhbHVlCQkxCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfaW52YWxpZF9pdGVtbmFtZQkyCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfaW52YWxpZF9pdGVtZGF0YQkzCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfbWlzc2luZ19pdGVtZGF0YQk0CisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfaW5jb21wbGV0ZV9pdGVtZGF0YQk1CisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfaW52YWxpZF9tc2dfZGlkCTYKKyNkZWZpbmUgUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19pbnZhbGlkX21pYl9kaWQJNworI2RlZmluZSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX21pc3NpbmdfY29udl9mdW5jCTgKKyNkZWZpbmUgUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19zdHJpbmdfdG9vX2xvbmcJOQorI2RlZmluZSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb3V0X29mX3JhbmdlCTEwCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfc3RyaW5nX3Rvb19zaG9ydAkxMQorI2RlZmluZSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX21pc3NpbmdfdmFsaWRfZnVuYwkxMgorI2RlZmluZSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX3Vua25vd24JCTEzCisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfaW52YWxpZF9kaWQJCTE0CisjZGVmaW5lIFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfbWlzc2luZ19wcmludF9mdW5jCTE1CisKKyNkZWZpbmUgUDgwMjExRU5VTV9sbnhyb2FtX3JlYXNvbl91bmtub3duICAgICAgICAwCisjZGVmaW5lIFA4MDIxMUVOVU1fbG54cm9hbV9yZWFzb25fYmVhY29uICAgICAgICAgMQorI2RlZmluZSBQODAyMTFFTlVNX2xueHJvYW1fcmVhc29uX3NpZ25hbCAgICAgICAgIDIKKyNkZWZpbmUgUDgwMjExRU5VTV9sbnhyb2FtX3JlYXNvbl90eHJldHJ5ICAgICAgICAzCisjZGVmaW5lIFA4MDIxMUVOVU1fbG54cm9hbV9yZWFzb25fbm90am9pbmVkICAgICAgNAorCisjZGVmaW5lIFA4MDIxMUVOVU1fcDJwcmVhbWJsZV9sb25nICAgICAgICAgICAgICAgMAorI2RlZmluZSBQODAyMTFFTlVNX3AycHJlYW1ibGVfc2hvcnQgICAgICAgICAgICAgIDIKKyNkZWZpbmUgUDgwMjExRU5VTV9wMnByZWFtYmxlX21peGVkICAgICAgICAgICAgICAzCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBwODAyMTEgbWF4IGxlbmd0aCBjb25zdGFudHMgZm9yIHRoZSBkaWZmZXJlbnQgcGFzY2FsIHN0cmluZ3MuICovCisKKyNkZWZpbmUgTUFYTEVOX1BTVFI2CQkoNikJLyogcGFzY2FsIGFycmF5IG9mIDYgYnl0ZXMgKi8KKyNkZWZpbmUgTUFYTEVOX1BTVFIxNAkJKDE0KQkvKiBwYXNjYWwgYXJyYXkgb2YgMTQgYnl0ZXMgKi8KKyNkZWZpbmUgTUFYTEVOX1BTVFIzMgkJKDMyKQkvKiBwYXNjYWwgYXJyYXkgb2YgMzIgYnl0ZXMgKi8KKyNkZWZpbmUgTUFYTEVOX1BTVFIyNTUJCSgyNTUpCS8qIHBhc2NhbCBhcnJheSBvZiAyNTUgYnl0ZXMgKi8KKyNkZWZpbmUgTUFYTEVOX01JQkFUVFJJQlVURQkoMzkyKQkvKiBtYXhpbXVtIG1pYmF0dHJpYnV0ZSAqLworCQkJCQkvKiB3aGVyZSB0aGUgc2l6ZSBvZiB0aGUgREFUQSBpdHNlbGYgKi8KKwkJCQkJLyogaXMgYSBESUQtTEVOLURBVEEgdHJpcGxlICovCisJCQkJCS8qIHdpdGggYSBtYXggc2l6ZSBvZiA0KzQrMzg0ICovCisKKyNkZWZpbmUgUDgwMjExX1NFVF9JTlQoaXRlbSwgdmFsdWUpIGRvIHsgXAorCShpdGVtKS5kYXRhICAgPSAodmFsdWUpOyBcCisJKGl0ZW0pLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsgXAorCX0gd2hpbGUoMCkKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBzdHJpbmcgY29uc3RhbnRzICovCisKKyNkZWZpbmUgTk9UX1NFVAkJCSJOT1RfU0VUIgorI2RlZmluZSBOT1RfU1VQUE9SVEVECQkiTk9UX1NVUFBPUlRFRCIKKyNkZWZpbmUgVU5LTk9XTl9EQVRBCQkiVU5LTk9XTl9EQVRBIgorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogIE1ldGFkYXRhIGZsYWdzICAqLworCisvKiBNU006IERvIHRoZXNlIGJlbG9uZyBpbiBwODAyMTFtZXRhLmg/IEknbSBub3Qgc3VyZS4gKi8KKworI2RlZmluZSBJU1JFUVVJUkVECQkoMHg4MDAwMDAwMFVMKQorI2RlZmluZSBJU1JFUVVFU1QJCSgweDQwMDAwMDAwVUwpCisjZGVmaW5lIElTQ09ORklSTQkJKDB4MjAwMDAwMDBVTCkKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTWFjcm9zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgJ2ZsYWdzJyBmaWVsZCBpbiAgICovCisvKiAgdGhlIG1ldGFkYXRhLiAgVGhlc2UgYXJlIG9ubHkgdXNlZCB3aGVuIHRoZSBtZXRhZGF0YSBpcyBmb3IgICAgICAgKi8KKy8qICBjb21tYW5kIGFyZ3VtZW50cyB0byBkZXRlcm1pbmUgaWYgdGhlIGRhdGEgaXRlbSBpcyByZXF1aXJlZCwgYW5kICAqLworLyogIHdoZXRoZXIgdGhlIG1ldGFkYXRhIGl0ZW0gaXMgZm9yIGEgcmVxdWVzdCBjb21tYW5kLCBjb25maXJtICAgICAgICovCisvKiAgY29tbWFuZCBvciBib3RoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogTVNNOiBEbyB0aGVzZSBiZWxvbmcgaW4gcDgwMjExbWV0YS5oPyAgSSdtIG5vdCBzdXJlICovCisKKyNkZWZpbmUgUDgwMjExSVRFTV9TRVRGTEFHUyhxLCByLCBjKQkoIHEgfCByIHwgYyApCisKKyNkZWZpbmUgUDgwMjExSVRFTV9JU1JFUVVJUkVEKGZsYWdzKQkoKChVSU5UMzIpKGZsYWdzICYgSVNSRVFVSVJFRCkpID4+IDMxICkKKyNkZWZpbmUgUDgwMjExSVRFTV9JU1JFUVVFU1QoZmxhZ3MpCSgoKFVJTlQzMikoZmxhZ3MgJiBJU1JFUVVFU1QpKSA+PiAzMCApCisjZGVmaW5lIFA4MDIxMUlURU1fSVNDT05GSVJNKGZsYWdzKQkoKChVSU5UMzIpKGZsYWdzICYgSVNDT05GSVJNKSkgPj4gMjkgKQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogVGhlIGZvbGxvd2luZyBtYWNybyBjcmVhdGVzIGEgbmFtZSBmb3IgYW4gZW51bSAqLworCisjZGVmaW5lIE1LRU5VTU5BTUUobmFtZSkgcDgwMjExZW51bV8gIyMgbmFtZQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYW5kIG1hY3JvcyBhcmUgdXNlZCB0byBjb25zdHJ1Y3QgYW5kCisqIGRlY29uc3RydWN0IHRoZSBEYXRhIElEIGNvZGVzLiAgVGhlIGNvZGluZyBpcyBhcyBmb2xsb3dzOgorKgorKiAgICAgLi4ucnd0bm5ubm5ubm5paWlpaWlnZ2dnZ2dzc3Nzc3MgICAgICBzIC0gU2VjdGlvbgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnIC0gR3JvdXAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAtIEl0ZW0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAtIEluZGV4CisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgLSBUYWJsZSBmbGFnCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgLSBXcml0ZSBmbGFnCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgLSBSZWFkIGZsYWcKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAtIFVudXNlZAorKi8KKworI2RlZmluZSBQODAyMTFESURfSU5WQUxJRAkJMHhmZmZmZmZmZlVMCisjZGVmaW5lIFA4MDIxMURJRF9WQUxJRAkJCTB4MDAwMDAwMDBVTAorCisjZGVmaW5lIFA4MDIxMURJRF9MU0JfU0VDVElPTgkJKDApCisjZGVmaW5lIFA4MDIxMURJRF9MU0JfR1JPVVAJCSg2KQorI2RlZmluZSBQODAyMTFESURfTFNCX0lURU0JCSgxMikKKyNkZWZpbmUgUDgwMjExRElEX0xTQl9JTkRFWAkJKDE4KQorI2RlZmluZSBQODAyMTFESURfTFNCX0lTVEFCTEUJCSgyNikKKyNkZWZpbmUgUDgwMjExRElEX0xTQl9BQ0NFU1MgCQkoMjcpCisKKyNkZWZpbmUgUDgwMjExRElEX01BU0tfU0VDVElPTgkJKDB4MDAwMDAwM2ZVTCkKKyNkZWZpbmUgUDgwMjExRElEX01BU0tfR1JPVVAJCSgweDAwMDAwMDNmVUwpCisjZGVmaW5lIFA4MDIxMURJRF9NQVNLX0lURU0JCSgweDAwMDAwMDNmVUwpCisjZGVmaW5lIFA4MDIxMURJRF9NQVNLX0lOREVYCQkoMHgwMDAwMDBmZlVMKQorI2RlZmluZSBQODAyMTFESURfTUFTS19JU1RBQkxFCQkoMHgwMDAwMDAwMVVMKQorI2RlZmluZSBQODAyMTFESURfTUFTS19BQ0NFU1MgCQkoMHgwMDAwMDAwM1VMKQorCisKKyNkZWZpbmUgUDgwMjExRElEX01LKGEsbSxsKQkoKCgoVUlOVDMyKShhKSkgJiAobSkpIDw8IChsKSkKKworI2RlZmluZSBQODAyMTFESURfTUtTRUNUSU9OKGEpCVA4MDIxMURJRF9NSyhhLCBcCisJCQkJCVA4MDIxMURJRF9NQVNLX1NFQ1RJT04sIFwKKwkJCQkJUDgwMjExRElEX0xTQl9TRUNUSU9OICkKKyNkZWZpbmUgUDgwMjExRElEX01LR1JPVVAoYSkJUDgwMjExRElEX01LKGEsIFwKKwkJCQkJUDgwMjExRElEX01BU0tfR1JPVVAsIFwKKwkJCQkJUDgwMjExRElEX0xTQl9HUk9VUCApCisjZGVmaW5lIFA4MDIxMURJRF9NS0lURU0oYSkJUDgwMjExRElEX01LKGEsIFwKKwkJCQkJUDgwMjExRElEX01BU0tfSVRFTSwgXAorCQkJCQlQODAyMTFESURfTFNCX0lURU0gKQorI2RlZmluZSBQODAyMTFESURfTUtJTkRFWChhKQlQODAyMTFESURfTUsoYSwgXAorCQkJCQlQODAyMTFESURfTUFTS19JTkRFWCwgXAorCQkJCQlQODAyMTFESURfTFNCX0lOREVYICkKKyNkZWZpbmUgUDgwMjExRElEX01LSVNUQUJMRShhKQlQODAyMTFESURfTUsoYSwgXAorCQkJCQlQODAyMTFESURfTUFTS19JU1RBQkxFLCBcCisJCQkJCVA4MDIxMURJRF9MU0JfSVNUQUJMRSApCisKKworI2RlZmluZSBQODAyMTFESURfTUtJRChzLGcsaSxuLHQsYSkJKFA4MDIxMURJRF9NS1NFQ1RJT04ocykgfCBcCisJCQkJCQlQODAyMTFESURfTUtHUk9VUChnKSB8IFwKKwkJCQkgCQlQODAyMTFESURfTUtJVEVNKGkpIHwgXAorCQkJCSAJCVA4MDIxMURJRF9NS0lOREVYKG4pIHwgXAorCQkJCQkJUDgwMjExRElEX01LSVNUQUJMRSh0KSB8IFwKKwkJCQkJCShhKSApCisKKworI2RlZmluZSBQODAyMTFESURfR0VUKGEsbSxsKQkoKCgoVUlOVDMyKShhKSkgPj4gKGwpKSAmIChtKSkKKworI2RlZmluZSBQODAyMTFESURfU0VDVElPTihhKQlQODAyMTFESURfR0VUKGEsIFwKKwkJCQkJUDgwMjExRElEX01BU0tfU0VDVElPTiwgXAorCQkJCQlQODAyMTFESURfTFNCX1NFQ1RJT04pCisjZGVmaW5lIFA4MDIxMURJRF9HUk9VUChhKQlQODAyMTFESURfR0VUKGEsIFwKKwkJCQkJUDgwMjExRElEX01BU0tfR1JPVVAsIFwKKwkJCQkJUDgwMjExRElEX0xTQl9HUk9VUCkKKyNkZWZpbmUgUDgwMjExRElEX0lURU0oYSkJUDgwMjExRElEX0dFVChhLCBcCisJCQkJCVA4MDIxMURJRF9NQVNLX0lURU0sIFwKKwkJCQkJUDgwMjExRElEX0xTQl9JVEVNKQorI2RlZmluZSBQODAyMTFESURfSU5ERVgoYSkJUDgwMjExRElEX0dFVChhLCBcCisJCQkJCVA4MDIxMURJRF9NQVNLX0lOREVYLCBcCisJCQkJCVA4MDIxMURJRF9MU0JfSU5ERVgpCisjZGVmaW5lIFA4MDIxMURJRF9JU1RBQkxFKGEpCVA4MDIxMURJRF9HRVQoYSwgXAorCQkJCQlQODAyMTFESURfTUFTS19JU1RBQkxFLCBcCisJCQkJCVA4MDIxMURJRF9MU0JfSVNUQUJMRSkKKyNkZWZpbmUgUDgwMjExRElEX0FDQ0VTUyhhKQlQODAyMTFESURfR0VUKGEsIFwKKwkJCQkJUDgwMjExRElEX01BU0tfQUNDRVNTLCBcCisJCQkJCVA4MDIxMURJRF9MU0JfQUNDRVNTKQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVHlwZXMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgcmVwcmVzZW5hdGlvbiAqLworLyogIG9mIEVOVU1JTlQgdHlwZSBtZXRhZGF0YS4gKi8KKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExZW51bXBhaXIKK3sKKwlVSU5UMzIJCQl2YWw7CisJY2hhcgkJCSpuYW1lOworfSBwODAyMTFlbnVtcGFpcl90OworCit0eXBlZGVmIHN0cnVjdCBwODAyMTFlbnVtCit7CisJSU5UCQkJbml0ZW1zOworCXA4MDIxMWVudW1wYWlyX3QJKmxpc3Q7Cit9IHA4MDIxMWVudW1fdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHR5cGVzIGFyZSB1c2VkIHRvIHN0b3JlIGRhdGEgaXRlbXMgaW4gKi8KKy8qICBtZXNzYWdlcy4gKi8KKworLyogVGVtcGxhdGUgcGFzY2FsIHN0cmluZyAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExcHN0cgoreworCVVJTlQ4CQlsZW47Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMXBzdHJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExcHN0cmQKK3sKKwlVSU5UOAkJbGVuOworCVVJTlQ4CQlkYXRhWzBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFwc3RyZF90OworCisvKiBNYXhpbXVtIHBhc2NhbCBzdHJpbmcgKi8KK3R5cGVkZWYgc3RydWN0IHA4MDIxMXBzdHIyNTUKK3sKKwlVSU5UOAkJbGVuOworCVVJTlQ4CQlkYXRhW01BWExFTl9QU1RSMjU1XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExcHN0cjI1NV90OworCisvKiBwYXNjYWwgc3RyaW5nIGZvciBtYWNhZGRyZXNzIGFuZCBic3NpZCAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExcHN0cjYKK3sKKwlVSU5UOAkJbGVuOworCVVJTlQ4CQlkYXRhW01BWExFTl9QU1RSNl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMXBzdHI2X3Q7CisKKy8qIHBhc2NhbCBzdHJpbmcgZm9yIGNoYW5uZWwgbGlzdCAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExcHN0cjE0Cit7CisJVUlOVDgJCWxlbjsKKwlVSU5UOAkJZGF0YVtNQVhMRU5fUFNUUjE0XTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExcHN0cjE0X3Q7CisKKy8qIHBhc2NhbCBzdHJpbmcgZm9yIHNzaWQgKi8KK3R5cGVkZWYgc3RydWN0IHA4MDIxMXBzdHIzMgoreworCVVJTlQ4CQlsZW47CisJVUlOVDgJCWRhdGFbTUFYTEVOX1BTVFIzMl07Cit9IF9fV0xBTl9BVFRSSUJfUEFDS19fIHA4MDIxMXBzdHIzMl90OworCisvKiBNQUMgYWRkcmVzcyBhcnJheSAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExbWFjYXJyYXkKK3sKKwlVSU5UMzIJCWNudDsKKwlVSU5UOAkJZGF0YVsxXVtNQVhMRU5fUFNUUjZdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFtYWNhcnJheV90OworCisvKiBwcm90b3R5cGUgdGVtcGxhdGUgKi8KK3R5cGVkZWYgc3RydWN0IHA4MDIxMWl0ZW0KK3sKKwlVSU5UMzIJCWRpZDsKKwlVSU5UMTYJCXN0YXR1czsKKwlVSU5UMTYJCWxlbjsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV90OworCisvKiBwcm90b3R5cGUgdGVtcGxhdGUgdy8gZGF0YSBpdGVtICovCit0eXBlZGVmIHN0cnVjdCBwODAyMTFpdGVtZAoreworCVVJTlQzMgkJZGlkOworCVVJTlQxNgkJc3RhdHVzOworCVVJTlQxNgkJbGVuOworCVVJTlQ4CQlkYXRhWzBdOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFpdGVtZF90OworCisvKiBtZXNzYWdlIGRhdGEgaXRlbSBmb3IgSU5ULCBCT1VOREVESU5ULCBFTlVNSU5UICovCit0eXBlZGVmIHN0cnVjdCBwODAyMTFpdGVtX3VpbnQzMgoreworCVVJTlQzMgkJZGlkOworCVVJTlQxNgkJc3RhdHVzOworCVVJTlQxNgkJbGVuOworCVVJTlQzMgkJZGF0YTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV91aW50MzJfdDsKKworLyogbWVzc2FnZSBkYXRhIGl0ZW0gZm9yIE9DVEVUU1RSLCBESVNQTEFZU1RSICovCit0eXBlZGVmIHN0cnVjdCBwODAyMTFpdGVtX3BzdHI2Cit7CisJVUlOVDMyCQlkaWQ7CisJVUlOVDE2CQlzdGF0dXM7CisJVUlOVDE2CQlsZW47CisJcDgwMjExcHN0cjZfdAlkYXRhOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFpdGVtX3BzdHI2X3Q7CisKKy8qIG1lc3NhZ2UgZGF0YSBpdGVtIGZvciBPQ1RFVFNUUiwgRElTUExBWVNUUiAqLwordHlwZWRlZiBzdHJ1Y3QgcDgwMjExaXRlbV9wc3RyMTQKK3sKKwlVSU5UMzIJCQlkaWQ7CisJVUlOVDE2CQkJc3RhdHVzOworCVVJTlQxNgkJCWxlbjsKKwlwODAyMTFwc3RyMTRfdAkJZGF0YTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV9wc3RyMTRfdDsKKworLyogbWVzc2FnZSBkYXRhIGl0ZW0gZm9yIE9DVEVUU1RSLCBESVNQTEFZU1RSICovCit0eXBlZGVmIHN0cnVjdCBwODAyMTFpdGVtX3BzdHIzMgoreworCVVJTlQzMgkJCWRpZDsKKwlVSU5UMTYJCQlzdGF0dXM7CisJVUlOVDE2CQkJbGVuOworCXA4MDIxMXBzdHIzMl90CQlkYXRhOworfSBfX1dMQU5fQVRUUklCX1BBQ0tfXyBwODAyMTFpdGVtX3BzdHIzMl90OworCisvKiBtZXNzYWdlIGRhdGEgaXRlbSBmb3IgT0NURVRTVFIsIERJU1BMQVlTVFIgKi8KK3R5cGVkZWYgc3RydWN0IHA4MDIxMWl0ZW1fcHN0cjI1NQoreworCVVJTlQzMgkJCWRpZDsKKwlVSU5UMTYJCQlzdGF0dXM7CisJVUlOVDE2CQkJbGVuOworCXA4MDIxMXBzdHIyNTVfdAkJZGF0YTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV9wc3RyMjU1X3Q7CisKKy8qIG1lc3NhZ2UgZGF0YSBpdGVtIGZvciBVTksgMzkyLCBuYW1lbHkgbWliIGl0ZW1zICovCit0eXBlZGVmIHN0cnVjdCAgcDgwMjExaXRlbV91bmszOTIKK3sKKwlVSU5UMzIJCWRpZDsKKwlVSU5UMTYJCXN0YXR1czsKKwlVSU5UMTYJCWxlbjsKKwlVSU5UOAkJZGF0YVtNQVhMRU5fTUlCQVRUUklCVVRFXTsKK30gX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV91bmszOTJfdDsKKworLyogbWVzc2FnZSBkYXRhIGl0ZW0gZm9yIFVOSyAxMDI1LCBuYW1lbHkgcDIgcGRhcyAqLwordHlwZWRlZiBzdHJ1Y3QgIHA4MDIxMWl0ZW1fdW5rMTAyNAoreworCVVJTlQzMgkJZGlkOworCVVJTlQxNgkJc3RhdHVzOworCVVJTlQxNgkJbGVuOworCVVJTlQ4CQlkYXRhWzEwMjRdOworfSAgX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV91bmsxMDI0X3Q7CisKKy8qIG1lc3NhZ2UgZGF0YSBpdGVtIGZvciBVTksgNDA5NiwgbmFtZWx5IHAyIGRvd25sb2FkIGNodW5rcyAqLwordHlwZWRlZiBzdHJ1Y3QgIHA4MDIxMWl0ZW1fdW5rNDA5NgoreworCVVJTlQzMgkJZGlkOworCVVJTlQxNgkJc3RhdHVzOworCVVJTlQxNgkJbGVuOworCVVJTlQ4CQlkYXRhWzQwOTZdOworfSAgX19XTEFOX0FUVFJJQl9QQUNLX18gcDgwMjExaXRlbV91bms0MDk2X3Q7CisKK3N0cnVjdCBjYXRsaXN0aXRlbTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHR5cGUgaXMgdXNlZCB0byByZXByZXNlbnQgYWxsIG9mIHRoZSAqLworLyogIG1ldGFkYXRhIGl0ZW1zLiAgU29tZSBjb21wb25lbnRzIG1heSBjaG9vc2UgdG8gdXNlIG1vcmUsICovCisvKiAgbGVzcyBvciBkaWZmZXJlbnQgbWV0YWRhdGEgaXRlbXMuICovCisKK3R5cGVkZWYgdm9pZCAoKnA4MDIxMV90b3RleHRfdCkoIHN0cnVjdCBjYXRsaXN0aXRlbSAqLCBVSU5UMzIgZGlkLCBVSU5UOCogaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1Zik7Cit0eXBlZGVmIHZvaWQgKCpwODAyMTFfZnJvbXRleHRfdCkoIHN0cnVjdCBjYXRsaXN0aXRlbSAqLCBVSU5UMzIgZGlkLCBVSU5UOCogaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1Zik7Cit0eXBlZGVmIFVJTlQzMiAoKnA4MDIxMV92YWxpZF90KSggc3RydWN0IGNhdGxpc3RpdGVtICosIFVJTlQzMiBkaWQsIFVJTlQ4KiBpdGVtYnVmKTsKKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRXh0ZXJuIERlY2xhcmF0aW9ucyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogRW51bWVyYXRpb24gTGlzdHMgKi8KKy8qICBUaGUgZm9sbG93aW5nIGFyZSB0aGUgZXh0ZXJuYWwgZGVjbGFyYXRpb25zICovCisvKiAgZm9yIGFsbCBlbnVtZXJhdGlvbnMgICovCisKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRSh0cnV0aCk7CitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUoaWZzdGF0ZSk7CitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUocG93ZXJtZ210KTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShic3N0eXBlKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShhdXRoYWxnKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShwaHl0eXBlKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRSh0ZW1wdHlwZSk7CitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUocmVnZG9tYWluKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShjY2Ftb2RlKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShkaXZlcnNpdHkpOworZXh0ZXJuIHA4MDIxMWVudW1fdCBNS0VOVU1OQU1FKHNjYW50eXBlKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShyZXN1bHRjb2RlKTsKK2V4dGVybiBwODAyMTFlbnVtX3QgTUtFTlVNTkFNRShyZWFzb24pOworZXh0ZXJuIHA4MDIxMWVudW1fdCBNS0VOVU1OQU1FKHN0YXR1cyk7CitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUobXNnY29kZSk7CitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUobXNnaXRlbV9zdGF0dXMpOworCitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUobG54cm9hbV9yZWFzb24pOworCitleHRlcm4gcDgwMjExZW51bV90IE1LRU5VTU5BTUUocDJwcmVhbWJsZSk7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgZGVjbGFyZSBzb21lIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2Ugd2l0aCB0aGUgKi8KKy8qICBwODAyMTFlbnVtX3QgdHlwZS4gKi8KKworVUlOVDMyIHA4MDIxMWVudW1fdGV4dDJpbnQocDgwMjExZW51bV90ICplcCwgY2hhciAqdGV4dCk7CitVSU5UMzIgcDgwMjExZW51bV9pbnQydGV4dChwODAyMTFlbnVtX3QgKmVwLCBVSU5UMzIgdmFsLCBjaGFyICp0ZXh0KTsKK3ZvaWQgcDgwMjExX2Vycm9yMnRleHQoaW50IGVycl9jb2RlLCBjaGFyICplcnJfc3RyKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgZGVjbGFyZSBzb21lIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2Ugd2l0aCB0aGUgKi8KKy8qICBwODAyMTFpdGVtX3QgYW5kIHA4MDIxMW1ldGFfdCB0eXBlcy4gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFRoZSBmb2xsb3dpbmcgZGVjbGFyZSBmdW5jdGlvbnMgdGhhdCBwZXJmb3JtIHZhbGlkYXRpb24gYW5kICAgICovCisvKiB0ZXh0IHRvIGJpbmFyeSBjb252ZXJzaW9ucyBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgZm9yIGludGVyZmFjZSAqLworLyogYW5kIE1JQiBkYXRhIGl0ZW1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qLS0gRElTUExBWVNUUiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogcHN0ciA9PT4gY3N0ciAqLwordm9pZCBwODAyMTFfdG90ZXh0X2Rpc3BsYXlzdHIoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qIGNzdHIgPT0+IHBzdHIgKi8KK3ZvaWQgcDgwMjExX2Zyb210ZXh0X2Rpc3BsYXlzdHIoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGEgZGlzcGxheXN0ciBiaW5hcnkgdmFsdWUgKi8KK1VJTlQzMiBwODAyMTFfaXN2YWxpZF9kaXNwbGF5c3RyKCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworCisvKi0tIE9DVEVUU1RSIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIHBzdHIgPT0+ICJ4eDp4eDouLi4uIiAqLwordm9pZCBwODAyMTFfdG90ZXh0X29jdGV0c3RyKCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOworCisvKiAieHg6eHg6Li4uLiIgPT0+IHBzdHIgKi8KK3ZvaWQgcDgwMjExX2Zyb210ZXh0X29jdGV0c3RyKCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOworCisvKiBmdW5jdGlvbiB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBhbiBvY3RldHN0ciBiaW5hcnkgdmFsdWUgKi8KK1VJTlQzMiBwODAyMTFfaXN2YWxpZF9vY3RldHN0ciggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYgKTsKKworLyotLSBJTlQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBVSU5UMzIgPT0+ICVkICovCit2b2lkIHA4MDIxMV90b3RleHRfaW50KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOworCisvKiAlZCA9PT4gVUlOVDMyICovCit2b2lkIHA4MDIxMV9mcm9tdGV4dF9pbnQoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGFuIGludCdzIGJpbmFyeSB2YWx1ZSAoYWx3YXlzIHN1Y2Nlc3NmdWwpICovCitVSU5UMzIgcDgwMjExX2lzdmFsaWRfaW50KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworCisvKi0tIEVOVU1JTlQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFVJTlQzMiA9PT4gPHZhbHVlbmFtZT4gKi8KK3ZvaWQgcDgwMjExX3RvdGV4dF9lbnVtaW50KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOworCisvKiA8dmFsdWVuYW1lPiA9PT4gVUlOVDMyICovCit2b2lkIHA4MDIxMV9mcm9tdGV4dF9lbnVtaW50KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOworCisvKiBmdW5jdGlvbiB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBhbiBlbnVtJ3MgYmluYXJ5IHZhbHVlICovCitVSU5UMzIgcDgwMjExX2lzdmFsaWRfZW51bWludCggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYgKTsKKworLyotLSBJTlRBUlJBWSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBVSU5UMzJbXSA9PiAlZCwlZCwlZCwuLi4gKi8KK3ZvaWQgcDgwMjExX3RvdGV4dF9pbnRhcnJheSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKKworLyogJWQsJWQsJWQsLi4uID09PiBVSU5UMzJbXSAqLwordm9pZCBwODAyMTFfZnJvbXRleHRfaW50YXJyYXkoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGFuIGludGVnZXIgYXJyYXkncyB2YWx1ZSAqLworVUlOVDMyIHA4MDIxMV9pc3ZhbGlkX2ludGFycmF5KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworCisvKi0tIEJJVEFSUkFZIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFVJTlQzMiA9PT4gJWQsJWQsJWQsLi4uICovCit2b2lkIHA4MDIxMV90b3RleHRfYml0YXJyYXkoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qICVkLCVkLCVkLC4uLiA9PT4gVUlOVDMyICovCit2b2lkIHA4MDIxMV9mcm9tdGV4dF9iaXRhcnJheSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKKworLyogZnVuY3Rpb24gdGhhdCBjaGVja3MgdmFsaWRpdHkgb2YgYSBiaXQgYXJyYXkncyB2YWx1ZSAqLworVUlOVDMyIHA4MDIxMV9pc3ZhbGlkX2JpdGFycmF5KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworCisvKi0tIE1BQ0FSUkFZIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcDgwMjExX3RvdGV4dF9tYWNhcnJheSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKKwordm9pZCBwODAyMTFfZnJvbXRleHRfbWFjYXJyYXkoIHN0cnVjdCBjYXRsaXN0aXRlbSAqbWV0YWxpc3QsIFVJTlQzMiBkaWQsIFVJTlQ4ICppdGVtYnVmLCBjaGFyICp0ZXh0YnVmICk7CisKKy8qIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGEgTUFDIGFkZHJlc3MgYXJyYXkncyB2YWx1ZSAqLworVUlOVDMyIHA4MDIxMV9pc3ZhbGlkX21hY2FycmF5KCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworCisvKi0tIE1JQkFUVFJJVUJURSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogPG1pYnZhbHVlPiA9PT4gPHRleHR1YWwgcmVwcmVzZW50YXRpb24gaWRlbnRpZmllZCBpbiBNSUIgbWV0YWRhdGE+ICovCit2b2lkIHA4MDIxMV90b3RleHRfZ2V0bWliYXR0cmlidXRlKCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiwgY2hhciAqdGV4dGJ1ZiApOwordm9pZCBwODAyMTFfdG90ZXh0X3NldG1pYmF0dHJpYnV0ZSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKKworCisvKiA8dGV4dHVhbCByZXByZXNlbnRhdGlvbiBpZGVudGlmaWVkIGluIE1JQiBtZXRhZGF0YT4gPT0+IDxtaWJ2YWx1ZT4gKi8KK3ZvaWQgcDgwMjExX2Zyb210ZXh0X2dldG1pYmF0dHJpYnV0ZSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKK3ZvaWQgcDgwMjExX2Zyb210ZXh0X3NldG1pYmF0dHJpYnV0ZSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYsIGNoYXIgKnRleHRidWYgKTsKKworLyogZnVuY3Rpb24gdGhhdCBjaGVja3MgdmFsaWRpdHkgb2YgYSBtaWJpdGVtJ3MgYmluYXJ5IHZhbHVlICovCitVSU5UMzIgcDgwMjExX2lzdmFsaWRfZ2V0bWliYXR0cmlidXRlKCBzdHJ1Y3QgY2F0bGlzdGl0ZW0gKm1ldGFsaXN0LCBVSU5UMzIgZGlkLCBVSU5UOCAqaXRlbWJ1ZiApOworVUlOVDMyIHA4MDIxMV9pc3ZhbGlkX3NldG1pYmF0dHJpYnV0ZSggc3RydWN0IGNhdGxpc3RpdGVtICptZXRhbGlzdCwgVUlOVDMyIGRpZCwgVUlOVDggKml0ZW1idWYgKTsKKworI2VuZGlmIC8qIF9QODAyMTFUWVBFU19IICovCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMXdlcC5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcDgwMjExd2VwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNmZTI5OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMXdlcC5jCkBAIC0wLDAgKzEsMzE3IEBACisvKiBzcmMvcDgwMjExL3A4MDIxMXdlcC5jCisqCisqIFdFUCBlbmNvZGUvZGVjb2RlIGZvciBQODAyMTEuCisqCisqIENvcHlyaWdodCAoQykgMjAwMiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisKKy8vICNkZWZpbmUgV0VQX0RFQlVHCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAicDgwMjExaGRyLmgiCisjaW5jbHVkZSAicDgwMjExdHlwZXMuaCIKKyNpbmNsdWRlICJwODAyMTFtc2cuaCIKKyNpbmNsdWRlICJwODAyMTFjb252LmgiCisjaW5jbHVkZSAicDgwMjExbmV0ZGV2LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBDb25zdGFudHMgKi8KKworI2RlZmluZSBTU1dBUChhLGIpIHtVSU5UOCB0bXAgPSBzW2FdOyBzW2FdID0gc1tiXTsgc1tiXSA9IHRtcDt9CisjZGVmaW5lIFdFUF9LRVkoeCkgICAgICAgKCgoeCkgJiAweEMwKSA+PiA2KQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgTWFjcm9zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFR5cGVzICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFN0YXRpYyBEZWZpbml0aW9ucyAqLworCitzdGF0aWMgY29uc3QgVUlOVDMyIHdlcF9jcmMzMl90YWJsZVsyNTZdID0geworICAgICAgICAweDAwMDAwMDAwTCwgMHg3NzA3MzA5NkwsIDB4ZWUwZTYxMmNMLCAweDk5MDk1MWJhTCwgMHgwNzZkYzQxOUwsCisgICAgICAgIDB4NzA2YWY0OGZMLCAweGU5NjNhNTM1TCwgMHg5ZTY0OTVhM0wsIDB4MGVkYjg4MzJMLCAweDc5ZGNiOGE0TCwKKyAgICAgICAgMHhlMGQ1ZTkxZUwsIDB4OTdkMmQ5ODhMLCAweDA5YjY0YzJiTCwgMHg3ZWIxN2NiZEwsIDB4ZTdiODJkMDdMLAorICAgICAgICAweDkwYmYxZDkxTCwgMHgxZGI3MTA2NEwsIDB4NmFiMDIwZjJMLCAweGYzYjk3MTQ4TCwgMHg4NGJlNDFkZUwsCisgICAgICAgIDB4MWFkYWQ0N2RMLCAweDZkZGRlNGViTCwgMHhmNGQ0YjU1MUwsIDB4ODNkMzg1YzdMLCAweDEzNmM5ODU2TCwKKyAgICAgICAgMHg2NDZiYThjMEwsIDB4ZmQ2MmY5N2FMLCAweDhhNjVjOWVjTCwgMHgxNDAxNWM0ZkwsIDB4NjMwNjZjZDlMLAorICAgICAgICAweGZhMGYzZDYzTCwgMHg4ZDA4MGRmNUwsIDB4M2I2ZTIwYzhMLCAweDRjNjkxMDVlTCwgMHhkNTYwNDFlNEwsCisgICAgICAgIDB4YTI2NzcxNzJMLCAweDNjMDNlNGQxTCwgMHg0YjA0ZDQ0N0wsIDB4ZDIwZDg1ZmRMLCAweGE1MGFiNTZiTCwKKyAgICAgICAgMHgzNWI1YThmYUwsIDB4NDJiMjk4NmNMLCAweGRiYmJjOWQ2TCwgMHhhY2JjZjk0MEwsIDB4MzJkODZjZTNMLAorICAgICAgICAweDQ1ZGY1Yzc1TCwgMHhkY2Q2MGRjZkwsIDB4YWJkMTNkNTlMLCAweDI2ZDkzMGFjTCwgMHg1MWRlMDAzYUwsCisgICAgICAgIDB4YzhkNzUxODBMLCAweGJmZDA2MTE2TCwgMHgyMWI0ZjRiNUwsIDB4NTZiM2M0MjNMLCAweGNmYmE5NTk5TCwKKyAgICAgICAgMHhiOGJkYTUwZkwsIDB4MjgwMmI4OWVMLCAweDVmMDU4ODA4TCwgMHhjNjBjZDliMkwsIDB4YjEwYmU5MjRMLAorICAgICAgICAweDJmNmY3Yzg3TCwgMHg1ODY4NGMxMUwsIDB4YzE2MTFkYWJMLCAweGI2NjYyZDNkTCwgMHg3NmRjNDE5MEwsCisgICAgICAgIDB4MDFkYjcxMDZMLCAweDk4ZDIyMGJjTCwgMHhlZmQ1MTAyYUwsIDB4NzFiMTg1ODlMLCAweDA2YjZiNTFmTCwKKyAgICAgICAgMHg5ZmJmZTRhNUwsIDB4ZThiOGQ0MzNMLCAweDc4MDdjOWEyTCwgMHgwZjAwZjkzNEwsIDB4OTYwOWE4OGVMLAorICAgICAgICAweGUxMGU5ODE4TCwgMHg3ZjZhMGRiYkwsIDB4MDg2ZDNkMmRMLCAweDkxNjQ2Yzk3TCwgMHhlNjYzNWMwMUwsCisgICAgICAgIDB4NmI2YjUxZjRMLCAweDFjNmM2MTYyTCwgMHg4NTY1MzBkOEwsIDB4ZjI2MjAwNGVMLCAweDZjMDY5NWVkTCwKKyAgICAgICAgMHgxYjAxYTU3YkwsIDB4ODIwOGY0YzFMLCAweGY1MGZjNDU3TCwgMHg2NWIwZDljNkwsIDB4MTJiN2U5NTBMLAorICAgICAgICAweDhiYmViOGVhTCwgMHhmY2I5ODg3Y0wsIDB4NjJkZDFkZGZMLCAweDE1ZGEyZDQ5TCwgMHg4Y2QzN2NmM0wsCisgICAgICAgIDB4ZmJkNDRjNjVMLCAweDRkYjI2MTU4TCwgMHgzYWI1NTFjZUwsIDB4YTNiYzAwNzRMLCAweGQ0YmIzMGUyTCwKKyAgICAgICAgMHg0YWRmYTU0MUwsIDB4M2RkODk1ZDdMLCAweGE0ZDFjNDZkTCwgMHhkM2Q2ZjRmYkwsIDB4NDM2OWU5NmFMLAorICAgICAgICAweDM0NmVkOWZjTCwgMHhhZDY3ODg0NkwsIDB4ZGE2MGI4ZDBMLCAweDQ0MDQyZDczTCwgMHgzMzAzMWRlNUwsCisgICAgICAgIDB4YWEwYTRjNWZMLCAweGRkMGQ3Y2M5TCwgMHg1MDA1NzEzY0wsIDB4MjcwMjQxYWFMLCAweGJlMGIxMDEwTCwKKyAgICAgICAgMHhjOTBjMjA4NkwsIDB4NTc2OGI1MjVMLCAweDIwNmY4NWIzTCwgMHhiOTY2ZDQwOUwsIDB4Y2U2MWU0OWZMLAorICAgICAgICAweDVlZGVmOTBlTCwgMHgyOWQ5Yzk5OEwsIDB4YjBkMDk4MjJMLCAweGM3ZDdhOGI0TCwgMHg1OWIzM2QxN0wsCisgICAgICAgIDB4MmViNDBkODFMLCAweGI3YmQ1YzNiTCwgMHhjMGJhNmNhZEwsIDB4ZWRiODgzMjBMLCAweDlhYmZiM2I2TCwKKyAgICAgICAgMHgwM2I2ZTIwY0wsIDB4NzRiMWQyOWFMLCAweGVhZDU0NzM5TCwgMHg5ZGQyNzdhZkwsIDB4MDRkYjI2MTVMLAorICAgICAgICAweDczZGMxNjgzTCwgMHhlMzYzMGIxMkwsIDB4OTQ2NDNiODRMLCAweDBkNmQ2YTNlTCwgMHg3YTZhNWFhOEwsCisgICAgICAgIDB4ZTQwZWNmMGJMLCAweDkzMDlmZjlkTCwgMHgwYTAwYWUyN0wsIDB4N2QwNzllYjFMLCAweGYwMGY5MzQ0TCwKKyAgICAgICAgMHg4NzA4YTNkMkwsIDB4MWUwMWYyNjhMLCAweDY5MDZjMmZlTCwgMHhmNzYyNTc1ZEwsIDB4ODA2NTY3Y2JMLAorICAgICAgICAweDE5NmMzNjcxTCwgMHg2ZTZiMDZlN0wsIDB4ZmVkNDFiNzZMLCAweDg5ZDMyYmUwTCwgMHgxMGRhN2E1YUwsCisgICAgICAgIDB4NjdkZDRhY2NMLCAweGY5YjlkZjZmTCwgMHg4ZWJlZWZmOUwsIDB4MTdiN2JlNDNMLCAweDYwYjA4ZWQ1TCwKKyAgICAgICAgMHhkNmQ2YTNlOEwsIDB4YTFkMTkzN2VMLCAweDM4ZDhjMmM0TCwgMHg0ZmRmZjI1MkwsIDB4ZDFiYjY3ZjFMLAorICAgICAgICAweGE2YmM1NzY3TCwgMHgzZmI1MDZkZEwsIDB4NDhiMjM2NGJMLCAweGQ4MGQyYmRhTCwgMHhhZjBhMWI0Y0wsCisgICAgICAgIDB4MzYwMzRhZjZMLCAweDQxMDQ3YTYwTCwgMHhkZjYwZWZjM0wsIDB4YTg2N2RmNTVMLCAweDMxNmU4ZWVmTCwKKyAgICAgICAgMHg0NjY5YmU3OUwsIDB4Y2I2MWIzOGNMLCAweGJjNjY4MzFhTCwgMHgyNTZmZDJhMEwsIDB4NTI2OGUyMzZMLAorICAgICAgICAweGNjMGM3Nzk1TCwgMHhiYjBiNDcwM0wsIDB4MjIwMjE2YjlMLCAweDU1MDUyNjJmTCwgMHhjNWJhM2JiZUwsCisgICAgICAgIDB4YjJiZDBiMjhMLCAweDJiYjQ1YTkyTCwgMHg1Y2IzNmEwNEwsIDB4YzJkN2ZmYTdMLCAweGI1ZDBjZjMxTCwKKyAgICAgICAgMHgyY2Q5OWU4YkwsIDB4NWJkZWFlMWRMLCAweDliNjRjMmIwTCwgMHhlYzYzZjIyNkwsIDB4NzU2YWEzOWNMLAorICAgICAgICAweDAyNmQ5MzBhTCwgMHg5YzA5MDZhOUwsIDB4ZWIwZTM2M2ZMLCAweDcyMDc2Nzg1TCwgMHgwNTAwNTcxM0wsCisgICAgICAgIDB4OTViZjRhODJMLCAweGUyYjg3YTE0TCwgMHg3YmIxMmJhZUwsIDB4MGNiNjFiMzhMLCAweDkyZDI4ZTliTCwKKyAgICAgICAgMHhlNWQ1YmUwZEwsIDB4N2NkY2VmYjdMLCAweDBiZGJkZjIxTCwgMHg4NmQzZDJkNEwsIDB4ZjFkNGUyNDJMLAorICAgICAgICAweDY4ZGRiM2Y4TCwgMHgxZmRhODM2ZUwsIDB4ODFiZTE2Y2RMLCAweGY2YjkyNjViTCwgMHg2ZmIwNzdlMUwsCisgICAgICAgIDB4MThiNzQ3NzdMLCAweDg4MDg1YWU2TCwgMHhmZjBmNmE3MEwsIDB4NjYwNjNiY2FMLCAweDExMDEwYjVjTCwKKyAgICAgICAgMHg4ZjY1OWVmZkwsIDB4Zjg2MmFlNjlMLCAweDYxNmJmZmQzTCwgMHgxNjZjY2Y0NUwsIDB4YTAwYWUyNzhMLAorICAgICAgICAweGQ3MGRkMmVlTCwgMHg0ZTA0ODM1NEwsIDB4MzkwM2IzYzJMLCAweGE3NjcyNjYxTCwgMHhkMDYwMTZmN0wsCisgICAgICAgIDB4NDk2OTQ3NGRMLCAweDNlNmU3N2RiTCwgMHhhZWQxNmE0YUwsIDB4ZDlkNjVhZGNMLCAweDQwZGYwYjY2TCwKKyAgICAgICAgMHgzN2Q4M2JmMEwsIDB4YTliY2FlNTNMLCAweGRlYmI5ZWM1TCwgMHg0N2IyY2Y3ZkwsIDB4MzBiNWZmZTlMLAorICAgICAgICAweGJkYmRmMjFjTCwgMHhjYWJhYzI4YUwsIDB4NTNiMzkzMzBMLCAweDI0YjRhM2E2TCwgMHhiYWQwMzYwNUwsCisgICAgICAgIDB4Y2RkNzA2OTNMLCAweDU0ZGU1NzI5TCwgMHgyM2Q5NjdiZkwsIDB4YjM2NjdhMmVMLCAweGM0NjE0YWI4TCwKKyAgICAgICAgMHg1ZDY4MWIwMkwsIDB4MmE2ZjJiOTRMLCAweGI0MGJiZTM3TCwgMHhjMzBjOGVhMUwsIDB4NWEwNWRmMWJMLAorICAgICAgICAweDJkMDJlZjhkTAorfTsKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVmaW5pdGlvbnMgKi8KKworLyoga2V5bGVuIGluIGJ5dGVzISAqLworCitpbnQgd2VwX2NoYW5nZV9rZXkod2xhbmRldmljZV90ICp3bGFuZGV2LCBpbnQga2V5bnVtLCBVSU5UOCoga2V5LCBpbnQga2V5bGVuKQoreworCWlmIChrZXlsZW4gPCAwKSAgcmV0dXJuIC0xOworCWlmIChrZXlsZW4gPj0gTUFYX0tFWUxFTikgcmV0dXJuIC0xOworCWlmIChrZXkgPT0gTlVMTCkgcmV0dXJuIC0xOworCWlmIChrZXludW0gPCAwKSAgcmV0dXJuIC0xOworCWlmIChrZXludW0gPj0gTlVNX1dFUEtFWVMpIHJldHVybiAtMTsKKworCisjaWZkZWYgV0VQX0RFQlVHCisJcHJpbnRrKEtFUk5fREVCVUcgIldFUCBrZXkgJWQgbGVuICVkID0gJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4XG4iLCBrZXludW0sIGtleWxlbiwga2V5WzBdLCBrZXlbMV0sIGtleVsyXSwga2V5WzNdLCBrZXlbNF0sIGtleVs1XSwga2V5WzZdLCBrZXlbN10pOworI2VuZGlmCisKKwl3bGFuZGV2LT53ZXBfa2V5bGVuc1trZXludW1dID0ga2V5bGVuOworCW1lbWNweSh3bGFuZGV2LT53ZXBfa2V5c1trZXludW1dLCBrZXksIGtleWxlbik7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAgNC1ieXRlIElWIGF0IHN0YXJ0IG9mIGJ1ZmZlciwgNC1ieXRlIElDViBhdCBlbmQgb2YgYnVmZmVyLgorICBpZiBzdWNjZXNzZnVsLCBidWYgc3RhcnQgaXMgcGF5bG9hZCBiZWdpbiwgbGVuZ3RoIC09IDg7CisgKi8KK2ludCB3ZXBfZGVjcnlwdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQ4ICpidWYsIFVJTlQzMiBsZW4sIGludCBrZXlfb3ZlcnJpZGUsIFVJTlQ4ICppdiwgVUlOVDggKmljdikKK3sKKwlVSU5UMzIgaSwgaiwgaywgY3JjLCBrZXlsZW47CisJVUlOVDggc1syNTZdLCBrZXlbNjRdLCBjX2NyY1s0XTsKKwlVSU5UOCBrZXlpZHg7CisKKwkvKiBOZWVkcyB0byBiZSBhdCBsZWFzdCA4IGJ5dGVzIG9mIHBheWxvYWQgKi8KKwlpZiAobGVuIDw9IDApIHJldHVybiAtMTsKKworCS8qIGluaXRpYWxpemUgdGhlIGZpcnN0IGJ5dGVzIG9mIHRoZSBrZXkgZnJvbSB0aGUgSVYgKi8KKwlrZXlbMF0gPSBpdlswXTsKKwlrZXlbMV0gPSBpdlsxXTsKKwlrZXlbMl0gPSBpdlsyXTsKKwlrZXlpZHggPSBXRVBfS0VZKGl2WzNdKTsKKworCWlmIChrZXlfb3ZlcnJpZGUgPj0gMCkKKwkJa2V5aWR4ID0ga2V5X292ZXJyaWRlOworCisJaWYgKGtleWlkeCA+PSBOVU1fV0VQS0VZUykgcmV0dXJuIC0yOworCisJa2V5bGVuID0gd2xhbmRldi0+d2VwX2tleWxlbnNba2V5aWR4XTsKKworCWlmIChrZXlsZW4gPT0gMCkgcmV0dXJuIC0zOworCisJLyogY29weSB0aGUgcmVzdCBvZiB0aGUga2V5IG92ZXIgZnJvbSB0aGUgZGVzaWduYXRlZCBrZXkgKi8KKwltZW1jcHkoa2V5KzMsIHdsYW5kZXYtPndlcF9rZXlzW2tleWlkeF0sIGtleWxlbik7CisKKwlrZXlsZW4rPTM7ICAvKiBhZGQgaW4gSVYgYnl0ZXMgKi8KKworI2lmZGVmIFdFUF9ERUJVRworCXByaW50ayhLRVJOX0RFQlVHICJEICVkOiAlMDJ4ICUwMnggJTAyeCAoJWQgJWQpICUwMng6JTAyeDolMDJ4OiUwMng6JTAyeFxuIiwgbGVuLCBrZXlbMF0sIGtleVsxXSwga2V5WzJdLCBrZXlpZHgsIGtleWxlbiwga2V5WzNdLCBrZXlbNF0sIGtleVs1XSwga2V5WzZdLCBrZXlbN10pOworI2VuZGlmCisKKwkvKiBzZXQgdXAgdGhlIFJDNCBzdGF0ZSAqLworCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKwkJc1tpXSA9IGk7CisJaiA9IDA7CisJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJCWogPSAoaiArIHNbaV0gKyBrZXlbaSAlIGtleWxlbl0pICYgMHhmZjsKKwkJU1NXQVAoaSxqKTsKKwl9CisKKwkvKiBBcHBseSB0aGUgUkM0IHRvIHRoZSBkYXRhLCB1cGRhdGUgdGhlIENSQzMyICovCisJY3JjID0gfjA7CisJaSA9IGogPSAwOworCWZvciAoayA9IDA7IGsgPCBsZW47IGsrKykgeworCQlpID0gKGkrMSkgJiAweGZmOworCQlqID0gKGorc1tpXSkgJiAweGZmOworCQlTU1dBUChpLGopOworCQlidWZba10gXj0gc1soc1tpXSArIHNbal0pICYgMHhmZl07CisJCWNyYyA9IHdlcF9jcmMzMl90YWJsZVsoY3JjIF4gYnVmW2tdKSAmIDB4ZmZdIF4gKGNyYyA+PiA4KTsKKwl9CisJY3JjID0gfmNyYzsKKworCS8qIG5vdyBsZXQncyBjaGVjayB0aGUgY3JjICovCisJY19jcmNbMF0gPSBjcmM7CisJY19jcmNbMV0gPSBjcmMgPj4gODsKKwljX2NyY1syXSA9IGNyYyA+PiAxNjsKKwljX2NyY1szXSA9IGNyYyA+PiAyNDsKKworCWZvciAoayA9IDA7IGsgPCA0OyBrKyspIHsKKwkJaSA9IChpICsgMSkgJiAweGZmOworCQlqID0gKGorc1tpXSkgJiAweGZmOworCQlTU1dBUChpLGopOworCQlpZiAoKGNfY3JjW2tdIF4gc1soc1tpXSArIHNbal0pICYgMHhmZl0pICE9IGljdltrXSkKKwkJCXJldHVybiAtKDQgfCAoayA8PCA0KSkgOyAvKiBJQ1YgbWlzbWF0Y2ggKi8KKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyogZW5jcnlwdHMgaW4tcGxhY2UuICovCitpbnQgd2VwX2VuY3J5cHQod2xhbmRldmljZV90ICp3bGFuZGV2LCBVSU5UOCAqYnVmLCBVSU5UOCAqZHN0LCBVSU5UMzIgbGVuLCBpbnQga2V5bnVtLCBVSU5UOCAqaXYsIFVJTlQ4ICppY3YpCit7CisJVUlOVDMyIGksIGosIGssIGNyYywga2V5bGVuOworCVVJTlQ4IHNbMjU2XSwga2V5WzY0XTsKKworCS8qIG5vIHBvaW50IGluIFdFUHBpbmcgYW4gZW1wdHkgZnJhbWUgKi8KKwlpZiAobGVuIDw9IDApIHJldHVybiAtMTsKKworCS8qIHdlIG5lZWQgdG8gaGF2ZSBhIHJlYWwga2V5Li4gKi8KKwlpZiAoa2V5bnVtID49IE5VTV9XRVBLRVlTKSByZXR1cm4gLTI7CisJa2V5bGVuID0gd2xhbmRldi0+d2VwX2tleWxlbnNba2V5bnVtXTsKKwlpZiAoa2V5bGVuIDw9IDApIHJldHVybiAtMzsKKworCS8qIHVzZSBhIHJhbmRvbSBJVi4gIEFuZCBza2lwIGtub3duIHdlYWsgb25lcy4gKi8KKwlnZXRfcmFuZG9tX2J5dGVzKGl2LCAzKTsKKwl3aGlsZSAoKGl2WzFdID09IDB4ZmYpICYmIChpdlswXSA+PSAzKSAmJiAoaXZbMF0gPCBrZXlsZW4pKQorCQlnZXRfcmFuZG9tX2J5dGVzKGl2LCAzKTsKKworCWl2WzNdID0gKGtleW51bSAmIDB4MDMpIDw8IDY7CisKKwlrZXlbMF0gPSBpdlswXTsKKwlrZXlbMV0gPSBpdlsxXTsKKwlrZXlbMl0gPSBpdlsyXTsKKworCS8qIGNvcHkgdGhlIHJlc3Qgb2YgdGhlIGtleSBvdmVyIGZyb20gdGhlIGRlc2lnbmF0ZWQga2V5ICovCisJbWVtY3B5KGtleSszLCB3bGFuZGV2LT53ZXBfa2V5c1trZXludW1dLCBrZXlsZW4pOworCisJa2V5bGVuKz0zOyAgLyogYWRkIGluIElWIGJ5dGVzICovCisKKyNpZmRlZiBXRVBfREVCVUcKKwlwcmludGsoS0VSTl9ERUJVRyAiRSAlZCAoJWQvJWQgJWQpICUwMnggJTAyeCAlMDJ4ICUwMng6JTAyeDolMDJ4OiUwMng6JTAyeFxuIiwgbGVuLCAgaXZbM10sIGtleW51bSwga2V5bGVuLCBrZXlbMF0sIGtleVsxXSwga2V5WzJdLCBrZXlbM10sIGtleVs0XSwga2V5WzVdLCBrZXlbNl0sIGtleVs3XSk7CisjZW5kaWYKKworCS8qIHNldCB1cCB0aGUgUkM0IHN0YXRlICovCisJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorCQlzW2ldID0gaTsKKwlqID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwkJaiA9IChqICsgc1tpXSArIGtleVtpICUga2V5bGVuXSkgJiAweGZmOworCQlTU1dBUChpLGopOworCX0KKworCS8qIFVwZGF0ZSBDUkMzMiB0aGVuIGFwcGx5IFJDNCB0byB0aGUgZGF0YSAqLworCWNyYyA9IH4wOworCWkgPSBqID0gMDsKKwlmb3IgKGsgPSAwOyBrIDwgbGVuOyBrKyspIHsKKwkJY3JjID0gd2VwX2NyYzMyX3RhYmxlWyhjcmMgXiBidWZba10pICYgMHhmZl0gXiAoY3JjID4+IDgpOworCQlpID0gKGkrMSkgJiAweGZmOworCQlqID0gKGorc1tpXSkgJiAweGZmOworCQlTU1dBUChpLGopOworCQlkc3Rba10gPSBidWZba10gXiBzWyhzW2ldICsgc1tqXSkgJiAweGZmXTsKKwl9CisJY3JjID0gfmNyYzsKKworCS8qIG5vdyBsZXQncyBlbmNyeXB0IHRoZSBjcmMgKi8KKwlpY3ZbMF0gPSBjcmM7CisJaWN2WzFdID0gY3JjID4+IDg7CisJaWN2WzJdID0gY3JjID4+IDE2OworCWljdlszXSA9IGNyYyA+PiAyNDsKKworCWZvciAoayA9IDA7IGsgPCA0OyBrKyspIHsKKwkJaSA9IChpICsgMSkgJiAweGZmOworCQlqID0gKGorc1tpXSkgJiAweGZmOworCQlTU1dBUChpLGopOworCQlpY3Zba10gXj0gc1soc1tpXSArIHNbal0pICYgMHhmZl07CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTF3ZXh0LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wODAyMTF3ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2YmE0MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3A4MDIxMXdleHQuYwpAQCAtMCwwICsxLDIwNDggQEAKKy8qIHNyYy9wODAyMTEvcDgwMjExd2V4dC5jCisqCisqIEdsdWUgY29kZSB0byBtYWtlIGxpbnV4LXdsYW4tbmcgYSBoYXBweSB3aXJlbGVzcyBleHRlbnNpb24gY2FtcGVyLgorKgorKiBvcmlnaW5hbCBhdXRob3I6ICBSZXlrIEZsb2V0ZXIgPHJleWtAc3luYWNrLmRlPgorKiBDb21wbGV0ZWx5IHJlLXdyaXR0ZW4gYnkgU29sb21vbiBQZWFjaHkgPHNvbG9tb25AbGludXgtd2xhbi5jb20+CisqCisqIENvcHlyaWdodCAoQykgMjAwMiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBTeXN0ZW0gSW5jbHVkZXMgKi8KKworCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+CisjaWYgV0lSRUxFU1NfRVhUID4gMTIKKyNpbmNsdWRlIDxuZXQvaXdfaGFuZGxlci5oPgorI2VuZGlmCisjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisKKyNpbmNsdWRlICJwODAyMTF0eXBlcy5oIgorI2luY2x1ZGUgInA4MDIxMWhkci5oIgorI2luY2x1ZGUgInA4MDIxMWNvbnYuaCIKKyNpbmNsdWRlICJwODAyMTFtZ210LmgiCisjaW5jbHVkZSAicDgwMjExbXNnLmgiCisjaW5jbHVkZSAicDgwMjExbWV0YXN0cnVjdC5oIgorI2luY2x1ZGUgInA4MDIxMW1ldGFkZWYuaCIKKyNpbmNsdWRlICJwODAyMTFuZXRkZXYuaCIKKyNpbmNsdWRlICJwODAyMTFpb2N0bC5oIgorI2luY2x1ZGUgInA4MDIxMXJlcS5oIgorCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2l3cmF0ZShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgIHN0cnVjdCBpd19wYXJhbSAqcnJxLCBjaGFyICpleHRyYSk7CitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2l3ZXNzaWQobmV0ZGV2aWNlX3QgKmRldiwKKwkJCSAgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICAgIHN0cnVjdCBpd19wb2ludCAqZGF0YSwgY2hhciAqZXNzaWQpOworLyogY29tcGF0aWJpbGl0eSB0byB3aXJlbGVzcyBleHRlbnNpb25zICovCisjaWZkZWYgV0lSRUxFU1NfRVhUCisKK3N0YXRpYyBVSU5UOCBwODAyMTFfbWh6X3RvX2NoYW5uZWwoVUlOVDE2IG1oeikKK3sKKwlpZiAobWh6ID49IDUwMDApIHsKKwkJcmV0dXJuICgobWh6IC0gNTAwMCkgLyA1KTsKKwl9CisKKwlpZiAobWh6ID09IDI0ODIpCisJCXJldHVybiAxNDsKKworCWlmIChtaHogPj0gMjQwNykgeworCQlyZXR1cm4gKChtaHogLSAyNDA3KSAvIDUpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgVUlOVDE2IHA4MDIxMV9jaGFubmVsX3RvX21oeihVSU5UOCBjaCwgaW50IGRvdDExYSkKK3sKKworCWlmIChjaCA9PSAwKQorCQlyZXR1cm4gMDsKKwlpZiAoY2ggPiAyMDApCisJCXJldHVybiAwOworCisJLyogNUcgKi8KKworCWlmIChkb3QxMWEpIHsKKwkJcmV0dXJuICg1MDAwICsgKDUgKiBjaCkpOworCX0KKworCS8qIDIuNEcgKi8KKworCWlmIChjaCA9PSAxNCkKKwkJcmV0dXJuIDI0ODQ7CisKKwlpZiAoKGNoIDwgMTQpICYmIChjaCA+IDApKSB7CisJCXJldHVybiAoMjQwNyArICg1ICogY2gpKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyogdGFrZW4gZnJvbSBvcmlub2NvLmMgOy0pICovCitzdGF0aWMgY29uc3QgbG9uZyBwODAyMTF3ZXh0X2NoYW5uZWxfZnJlcVtdID0geworCTI0MTIsIDI0MTcsIDI0MjIsIDI0MjcsIDI0MzIsIDI0MzcsIDI0NDIsCisJMjQ0NywgMjQ1MiwgMjQ1NywgMjQ2MiwgMjQ2NywgMjQ3MiwgMjQ4NAorfTsKKyNkZWZpbmUgTlVNX0NIQU5ORUxTIChzaXplb2YocDgwMjExd2V4dF9jaGFubmVsX2ZyZXEpIC8gc2l6ZW9mKHA4MDIxMXdleHRfY2hhbm5lbF9mcmVxWzBdKSkKKworLyogc3RlYWwgYSBzcGFyZSBiaXQgdG8gc3RvcmUgdGhlIHNoYXJlZC9vcGVuc3lzdGVtcyBzdGF0ZS4gc2hvdWxkIGRlZmF1bHQgdG8gb3BlbiBpZiBub3Qgc2V0ICovCisjZGVmaW5lIEhPU1RXRVBfU0hBUkVES0VZIEJJVDMKKworCisvKiogZnVuY3Rpb24gZGVjbGFyYXRpb25zID09PT09PT09PT09PT09PSAqLworCitzdGF0aWMgaW50IHF1YWxfYXNfcGVyY2VudChpbnQgc25yICkgeworICBpZiAoIHNuciA8PSAwICkKKyAgICByZXR1cm4gMDsKKyAgaWYgKCBzbnIgPD0gNDAgKQorICAgIHJldHVybiBzbnIqNS8yOworICByZXR1cm4gMTAwOworfQorCisKKworCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgVUlOVDMyIGRpZCwgVUlOVDMyIGRhdGEpCit7CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90CW1zZzsKKwlwODAyMTFpdGVtX3VpbnQzMl90CQltaWJpdGVtOworCWludAlyZXN1bHQ7CisKKwlEQkZFTlRFUjsKKworCW1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX21pYnNldDsKKwltaWJpdGVtLmRpZCA9IGRpZDsKKwltaWJpdGVtLmRhdGEgPSBkYXRhOworCW1lbWNweSgmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCAmbWliaXRlbSwgc2l6ZW9mKG1pYml0ZW0pKTsKKwlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9hdXRvam9pbih3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJcDgwMjExbXNnX2xueHJlcV9hdXRvam9pbl90ICAgICBtc2c7CisJc3RydWN0IGl3X3BvaW50CQkJZGF0YTsKKwljaGFyIHNzaWRbSVdfRVNTSURfTUFYX1NJWkVdOworCisJaW50IHJlc3VsdDsKKwlpbnQgZXJyID0gMDsKKworCURCRkVOVEVSOworCisJLyogR2V0IEVTU0lEICovCisJcmVzdWx0ID0gcDgwMjExd2V4dF9naXdlc3NpZCh3bGFuZGV2LT5uZXRkZXYsIE5VTEwsICZkYXRhLCBzc2lkKTsKKworCWlmIChyZXN1bHQpIHsKKwkJZXJyID0gLUVGQVVMVDsKKwkJZ290byBleGl0OworCX0KKworCWlmICggd2xhbmRldi0+aG9zdHdlcCAmIEhPU1RXRVBfU0hBUkVES0VZICkKKwkgIG1zZy5hdXRodHlwZS5kYXRhID0gUDgwMjExRU5VTV9hdXRoYWxnX3NoYXJlZGtleTsKKwllbHNlCisJICBtc2cuYXV0aHR5cGUuZGF0YSA9IFA4MDIxMUVOVU1fYXV0aGFsZ19vcGVuc3lzdGVtOworCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfbG54cmVxX2F1dG9qb2luOworCisJLyogVHJpbSB0aGUgbGFzdCAnXDAnIHRvIGZpdCB0aGUgU1NJRCBmb3JtYXQgKi8KKworCWlmIChkYXRhLmxlbmd0aCAmJiBzc2lkW2RhdGEubGVuZ3RoLTFdID09ICdcMCcpIHsKKwkJZGF0YS5sZW5ndGggPSBkYXRhLmxlbmd0aCAtIDE7CisJfQorCisJbWVtY3B5KG1zZy5zc2lkLmRhdGEuZGF0YSwgc3NpZCwgZGF0YS5sZW5ndGgpOworCW1zZy5zc2lkLmRhdGEubGVuID0gZGF0YS5sZW5ndGg7CisKKwlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwlpZiAocmVzdWx0KSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gZXhpdDsKKwl9CisKK2V4aXQ6CisKKwlEQkZFWElUOworCXJldHVybiBlcnI7CisKK30KKworLyogY2FsbGVkIGJ5IC9wcm9jL25ldC93aXJlbGVzcyAqLworc3RydWN0IGl3X3N0YXRpc3RpY3MqIHA4MDIxMXdleHRfZ2V0X3dpcmVsZXNzX3N0YXRzIChuZXRkZXZpY2VfdCAqZGV2KQoreworCXA4MDIxMW1zZ19sbnhyZXFfY29tbXNxdWFsaXR5X3QgIHF1YWxpdHk7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCXN0cnVjdCBpd19zdGF0aXN0aWNzKiB3c3RhdHMgPSAmd2xhbmRldi0+d3N0YXRzOworCWludCByZXR2YWw7CisKKwlEQkZFTlRFUjsKKwkvKiBDaGVjayAqLworCWlmICggKHdsYW5kZXYgPT0gTlVMTCkgfHwgKHdsYW5kZXYtPm1zZHN0YXRlICE9IFdMQU5fTVNEX1JVTk5JTkcpICkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBYWFggT25seSB2YWxpZCBpbiBzdGF0aW9uIG1vZGUgKi8KKwl3c3RhdHMtPnN0YXR1cyA9IDA7CisKKwkvKiBidWlsZCByZXF1ZXN0IG1lc3NhZ2UgKi8KKwlxdWFsaXR5Lm1zZ2NvZGUgPSBESURtc2dfbG54cmVxX2NvbW1zcXVhbGl0eTsKKwlxdWFsaXR5LmRibS5kYXRhID0gUDgwMjExRU5VTV90cnV0aF90cnVlOworCXF1YWxpdHkuZGJtLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKworCS8qIHNlbmQgbWVzc2FnZSB0byBuc2QgKi8KKwlpZiAoIHdsYW5kZXYtPm1sbWVyZXF1ZXN0ID09IE5VTEwgKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHZhbCA9IHdsYW5kZXYtPm1sbWVyZXF1ZXN0KHdsYW5kZXYsIChwODAyMTFtc2dfdCopICZxdWFsaXR5KTsKKworCXdzdGF0cy0+cXVhbC5xdWFsID0gcXVhbF9hc19wZXJjZW50KHF1YWxpdHkubGluay5kYXRhKTsgICAgLyogb3ZlcmFsbCBsaW5rIHF1YWxpdHkgKi8KKwl3c3RhdHMtPnF1YWwubGV2ZWwgPSBxdWFsaXR5LmxldmVsLmRhdGE7ICAvKiBpbnN0YW50IHNpZ25hbCBsZXZlbCAqLworCXdzdGF0cy0+cXVhbC5ub2lzZSA9IHF1YWxpdHkubm9pc2UuZGF0YTsgIC8qIGluc3RhbnQgbm9pc2UgbGV2ZWwgKi8KKworI2lmIFdJUkVMRVNTX0VYVCA+IDE4CisJd3N0YXRzLT5xdWFsLnVwZGF0ZWQgPSBJV19RVUFMX0FMTF9VUERBVEVEIHwgSVdfUVVBTF9EQk07CisjZWxzZQorCXdzdGF0cy0+cXVhbC51cGRhdGVkID0gNzsKKyNlbmRpZgorCXdzdGF0cy0+ZGlzY2FyZC5jb2RlID0gd2xhbmRldi0+cnguZGVjcnlwdF9lcnI7CisJd3N0YXRzLT5kaXNjYXJkLm53aWQgPSAwOworCXdzdGF0cy0+ZGlzY2FyZC5taXNjID0gMDsKKworI2lmIFdJUkVMRVNTX0VYVCA+IDExCisJd3N0YXRzLT5kaXNjYXJkLmZyYWdtZW50ID0gMDsgIC8vIGluY29tcGxldGUgZnJhZ21lbnRzCisJd3N0YXRzLT5kaXNjYXJkLnJldHJpZXMgPSAwOyAgIC8vIHR4IHJldHJpZXMuCisJd3N0YXRzLT5taXNzLmJlYWNvbiA9IDA7CisjZW5kaWYKKworCURCRkVYSVQ7CisKKwlyZXR1cm4gd3N0YXRzOworfQorCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2l3bmFtZShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgIGNoYXIgKm5hbWUsIGNoYXIgKmV4dHJhKQoreworCXN0cnVjdCBpd19wYXJhbSByYXRlOworCWludCByZXN1bHQ7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCXJlc3VsdCA9IHA4MDIxMXdleHRfZ2l3cmF0ZShkZXYsIE5VTEwsICZyYXRlLCBOVUxMKTsKKworCWlmIChyZXN1bHQpIHsKKwkJZXJyID0gLUVGQVVMVDsKKwkJZ290byBleGl0OworCX0KKworCXN3aXRjaCAocmF0ZS52YWx1ZSkgeworCWNhc2UgMTAwMDAwMDoKKwljYXNlIDIwMDAwMDA6CisJCXN0cmNweShuYW1lLCAiSUVFRSA4MDIuMTEtRFMiKTsKKwkJYnJlYWs7CisJY2FzZSA1NTAwMDAwOgorCWNhc2UgMTEwMDAwMDA6CisJCXN0cmNweShuYW1lLCAiSUVFRSA4MDIuMTEtYiIpOworCQlicmVhazsKKwl9CitleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwODAyMTF3ZXh0X2dpd2ZyZXEobmV0ZGV2aWNlX3QgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICBzdHJ1Y3QgaXdfZnJlcSAqZnJlcSwgY2hhciAqZXh0cmEpCit7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCXA4MDIxMWl0ZW1fdWludDMyX3QgICAgICAgICAgICAgbWliaXRlbTsKKwlwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICAgIG1zZzsKKwlpbnQgcmVzdWx0OworCWludCBlcnIgPSAwOworCisJREJGRU5URVI7CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJnZXQ7CisJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlEU1NTVGFibGVfZG90MTFDdXJyZW50Q2hhbm5lbDsKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJaWYgKG1pYml0ZW0uZGF0YSA+IE5VTV9DSEFOTkVMUykgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJLyogY29udmVydCBpbnRvIGZyZXF1ZW5jeSBpbnN0ZWFkIG9mIGEgY2hhbm5lbCAqLworCWZyZXEtPmUgPSAxOworCWZyZXEtPm0gPSBwODAyMTFfY2hhbm5lbF90b19taHoobWliaXRlbS5kYXRhLCAwKSAqIDEwMDAwMDsKKworIGV4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHA4MDIxMXdleHRfc2l3ZnJlcShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgIHN0cnVjdCBpd19mcmVxICpmcmVxLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExaXRlbV91aW50MzJfdCAgICAgICAgICAgICBtaWJpdGVtOworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgICAgbXNnOworCWludCByZXN1bHQ7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJzZXQ7CisJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlEU1NTVGFibGVfZG90MTFDdXJyZW50Q2hhbm5lbDsKKwltaWJpdGVtLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKworCWlmICggKGZyZXEtPmUgPT0gMCkgJiYgKGZyZXEtPm0gPD0gMTAwMCkgKQorCQltaWJpdGVtLmRhdGEgPSBmcmVxLT5tOworCWVsc2UKKwkJbWliaXRlbS5kYXRhID0gcDgwMjExX21oel90b19jaGFubmVsKGZyZXEtPm0pOworCisJbWVtY3B5KCZtc2cubWliYXR0cmlidXRlLmRhdGEsICZtaWJpdGVtLCBzaXplb2YobWliaXRlbSkpOworCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKworCWlmIChyZXN1bHQpIHsKKwkJZXJyID0gLUVGQVVMVDsKKwkJZ290byBleGl0OworCX0KKworIGV4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworfQorCisjaWYgV0lSRUxFU1NfRVhUID4gOAorCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2l3bW9kZShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgIF9fdTMyICptb2RlLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisKKwlEQkZFTlRFUjsKKworCXN3aXRjaCAod2xhbmRldi0+bWFjbW9kZSkgeworCWNhc2UgV0xBTl9NQUNNT0RFX0lCU1NfU1RBOgorCQkqbW9kZSA9IElXX01PREVfQURIT0M7CisJCWJyZWFrOworCWNhc2UgV0xBTl9NQUNNT0RFX0VTU19TVEE6CisJCSptb2RlID0gSVdfTU9ERV9JTkZSQTsKKwkJYnJlYWs7CisJY2FzZSBXTEFOX01BQ01PREVfRVNTX0FQOgorCQkqbW9kZSA9IElXX01PREVfTUFTVEVSOworCQlicmVhazsKKwlkZWZhdWx0OgorCQkvKiBOb3Qgc2V0IHlldC4gKi8KKwkJKm1vZGUgPSBJV19NT0RFX0FVVE87CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwODAyMTF3ZXh0X3Npd21vZGUobmV0ZGV2aWNlX3QgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICBfX3UzMiAqbW9kZSwgY2hhciAqZXh0cmEpCit7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCXA4MDIxMWl0ZW1fdWludDMyX3QgICAgICAgICAgICAgbWliaXRlbTsKKwlwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICAgIG1zZzsKKwlpbnQgCXJlc3VsdDsKKwlpbnQgICAgIGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlpZiAoKm1vZGUgIT0gSVdfTU9ERV9BREhPQyAmJiAqbW9kZSAhPSBJV19NT0RFX0lORlJBICYmCisJICAgICptb2RlICE9IElXX01PREVfTUFTVEVSKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBPcGVyYXRpb24gbW9kZSBpcyB0aGUgc2FtZSB3aXRoIGN1cnJlbnQgbW9kZSAqLworCWlmICgqbW9kZSA9PSB3bGFuZGV2LT5tYWNtb2RlKQorCQlnb3RvIGV4aXQ7CisKKwlzd2l0Y2ggKCptb2RlKSB7CisJY2FzZSBJV19NT0RFX0FESE9DOgorCQl3bGFuZGV2LT5tYWNtb2RlID0gV0xBTl9NQUNNT0RFX0lCU1NfU1RBOworCQlicmVhazsKKwljYXNlIElXX01PREVfSU5GUkE6CisJCXdsYW5kZXYtPm1hY21vZGUgPSBXTEFOX01BQ01PREVfRVNTX1NUQTsKKwkJYnJlYWs7CisJY2FzZSBJV19NT0RFX01BU1RFUjoKKwkJd2xhbmRldi0+bWFjbW9kZSA9IFdMQU5fTUFDTU9ERV9FU1NfQVA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCS8qIE5vdCBzZXQgeWV0LiAqLworCQlXTEFOX0xPR19JTkZPKCJPcGVyYXRpb24gbW9kZTogJWQgbm90IHN1cHBvcnRcbiIsICptb2RlKTsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCX0KKworCS8qIFNldCBPcGVyYXRpb24gbW9kZSB0byB0aGUgUE9SVCBUWVBFIFJJRCAqLworCisjd2FybmluZyAiZ2V0IHJpZCBvZiBwMm1pYiBoZXJlIgorCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfZG90MTFyZXFfbWlic2V0OworCW1pYml0ZW0uZGlkID0gRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUG9ydFR5cGU7CisJbWliaXRlbS5kYXRhID0gKCptb2RlID09IElXX01PREVfQURIT0MpID8gMCA6IDE7CisJbWVtY3B5KCZtc2cubWliYXR0cmlidXRlLmRhdGEsICZtaWJpdGVtLCBzaXplb2YobWliaXRlbSkpOworCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKworCWlmIChyZXN1bHQpCisJCWVyciA9IC1FRkFVTFQ7CisKKyBleGl0OgorCURCRkVYSVQ7CisKKwlyZXR1cm4gZXJyOworfQorCisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXdyYW5nZShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICAgc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICpleHRyYSkKK3sKKyAgICAgICAgc3RydWN0IGl3X3JhbmdlICpyYW5nZSA9IChzdHJ1Y3QgaXdfcmFuZ2UgKikgZXh0cmE7CisJaW50IGksIHZhbDsKKworCURCRkVOVEVSOworCisJLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkgc2V0IHNpemUgJiB6ZXJvIGV2ZXJ5dGhpbmcgd2UgZG9uJ3QgdW5kZXJzdGFuZAorCWRhdGEtPmxlbmd0aCA9IHNpemVvZigqcmFuZ2UpOworCW1lbXNldChyYW5nZSwwLHNpemVvZigqcmFuZ2UpKTsKKworI2lmIFdJUkVMRVNTX0VYVCA+IDkKKwlyYW5nZS0+dHhwb3dlcl9jYXBhID0gSVdfVFhQT1dfREJNOworCS8vIFhYWCB3aGF0IGFib3V0IG1pbi9tYXhfcG1wLCBtaW4vbWF4X3BtdCwgZXRjLgorI2VuZGlmCisKKyNpZiBXSVJFTEVTU19FWFQgPiAxMAorCXJhbmdlLT53ZV92ZXJzaW9uX2NvbXBpbGVkID0gV0lSRUxFU1NfRVhUOworCXJhbmdlLT53ZV92ZXJzaW9uX3NvdXJjZSA9IDEzOworCisJcmFuZ2UtPnJldHJ5X2NhcGEgPSBJV19SRVRSWV9MSU1JVDsKKwlyYW5nZS0+cmV0cnlfZmxhZ3MgPSBJV19SRVRSWV9MSU1JVDsKKwlyYW5nZS0+bWluX3JldHJ5ID0gMDsKKwlyYW5nZS0+bWF4X3JldHJ5ID0gMjU1OworI2VuZGlmIC8qIFdJUkVMRVNTX0VYVCA+IDEwICovCisKKyNpZiBXSVJFTEVTU19FWFQgPiAxNgorICAgICAgICByYW5nZS0+ZXZlbnRfY2FwYVswXSA9IChJV19FVkVOVF9DQVBBX0tfMCB8ICAvL21vZGUvZnJlcS9zc2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElXX0VWRU5UX0NBUEFfTUFTSyhTSU9DR0lXQVApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVdfRVZFTlRfQ0FQQV9NQVNLKFNJT0NHSVdTQ0FOKSk7CisgICAgICAgIHJhbmdlLT5ldmVudF9jYXBhWzFdID0gSVdfRVZFTlRfQ0FQQV9LXzE7ICAvL2VuY29kZQorICAgICAgICByYW5nZS0+ZXZlbnRfY2FwYVs0XSA9IChJV19FVkVOVF9DQVBBX01BU0soSVdFVlFVQUwpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVdfRVZFTlRfQ0FQQV9NQVNLKElXRVZDVVNUT00pICk7CisjZW5kaWYKKworCXJhbmdlLT5udW1fY2hhbm5lbHMgPSBOVU1fQ0hBTk5FTFM7CisKKwkvKiBYWFggbmVlZCB0byBmaWx0ZXIgYWdhaW5zdCB0aGUgcmVndWxhdG9yeSBkb21haW4gJnwgYWN0aXZlIHNldCAqLworCXZhbCA9IDA7CisJZm9yIChpID0gMDsgaSA8IE5VTV9DSEFOTkVMUyA7IGkrKykgeworCQlyYW5nZS0+ZnJlcVt2YWxdLmkgPSBpICsgMTsKKwkJcmFuZ2UtPmZyZXFbdmFsXS5tID0gcDgwMjExd2V4dF9jaGFubmVsX2ZyZXFbaV0gKiAxMDAwMDA7CisJCXJhbmdlLT5mcmVxW3ZhbF0uZSA9IDE7CisJCXZhbCsrOworCX0KKworCXJhbmdlLT5udW1fZnJlcXVlbmN5ID0gdmFsOworCisJLyogTWF4IG9mIC9wcm9jL25ldC93aXJlbGVzcyAqLworCXJhbmdlLT5tYXhfcXVhbC5xdWFsID0gMTAwOworCXJhbmdlLT5tYXhfcXVhbC5sZXZlbCA9IDA7CisJcmFuZ2UtPm1heF9xdWFsLm5vaXNlID0gMDsKKwlyYW5nZS0+c2Vuc2l0aXZpdHkgPSAzOworCS8vIFhYWCB0aGVzZSBuZWVkIHRvIGJlIG5zZC1zcGVjaWZpYyEKKworCXJhbmdlLT5taW5fcnRzID0gMDsKKwlyYW5nZS0+bWF4X3J0cyA9IDIzNDc7CisJcmFuZ2UtPm1pbl9mcmFnID0gMjU2OworCXJhbmdlLT5tYXhfZnJhZyA9IDIzNDY7CisKKwlyYW5nZS0+bWF4X2VuY29kaW5nX3Rva2VucyA9IE5VTV9XRVBLRVlTOworCXJhbmdlLT5udW1fZW5jb2Rpbmdfc2l6ZXMgPSAyOworCXJhbmdlLT5lbmNvZGluZ19zaXplWzBdID0gNTsKKwlyYW5nZS0+ZW5jb2Rpbmdfc2l6ZVsxXSA9IDEzOworCisJLy8gWFhYIHdoYXQgYWJvdXQgbnVtX2JpdHJhdGVzL3Rocm91Z2hwdXQ/CisJcmFuZ2UtPm51bV9iaXRyYXRlcyA9IDA7CisKKwkvKiBlc3RpbWF0ZWQgbWF4IHRocm91Z2hwdXQgKi8KKwkvLyBYWFggbmVlZCB0byBjYXAgaXQgaWYgd2UncmUgcnVubmluZyBhdCB+Mk1icHMuLgorCXJhbmdlLT50aHJvdWdocHV0ID0gNTUwMDAwMDsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGludCBwODAyMTF3ZXh0X2dpd2FwKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFwX2FkZHIsIGNoYXIgKmV4dHJhKQoreworCisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCisJREJGRU5URVI7CisKKwltZW1jcHkoYXBfYWRkci0+c2FfZGF0YSwgd2xhbmRldi0+YnNzaWQsIFdMQU5fQlNTSURfTEVOKTsKKwlhcF9hZGRyLT5zYV9mYW1pbHkgPSBBUlBIUkRfRVRIRVI7CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisjaWYgV0lSRUxFU1NfRVhUID4gOAorc3RhdGljIGludCBwODAyMTF3ZXh0X2dpd2VuY29kZShuZXRkZXZpY2VfdCAqZGV2LAorCQkJCXN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJc3RydWN0IGl3X3BvaW50ICplcnEsIGNoYXIgKmtleSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJaW50IGVyciA9IDA7CisJaW50IGk7CisKKwlEQkZFTlRFUjsKKworCWlmICh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9QUklWQUNZSU5WT0tFRCkKKwkJZXJxLT5mbGFncyA9IElXX0VOQ09ERV9FTkFCTEVEOworCWVsc2UKKwkJZXJxLT5mbGFncyA9IElXX0VOQ09ERV9ESVNBQkxFRDsKKworCWlmICh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9FWENMVURFVU5FTkNSWVBURUQpCisJCWVycS0+ZmxhZ3MgfD0gSVdfRU5DT0RFX1JFU1RSSUNURUQ7CisJZWxzZQorCQllcnEtPmZsYWdzIHw9IElXX0VOQ09ERV9PUEVOOworCisJaSA9IChlcnEtPmZsYWdzICYgSVdfRU5DT0RFX0lOREVYKSAtIDE7CisKKwlpZiAoaSA9PSAtMSkKKwkJaSA9IHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0RFRkFVTFRLRVlfTUFTSzsKKworCWlmICgoaSA8IDApIHx8IChpID49IE5VTV9XRVBLRVlTKSkgeworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIGV4aXQ7CisJfQorCisJZXJxLT5mbGFncyB8PSBpICsgMTsKKworCS8qIGNvcHkgdGhlIGtleSBmcm9tIHRoZSBkcml2ZXIgY2FjaGUgYXMgdGhlIGtleXMgYXJlIHJlYWQtb25seSBNSUJzICovCisJZXJxLT5sZW5ndGggPSB3bGFuZGV2LT53ZXBfa2V5bGVuc1tpXTsKKwltZW1jcHkoa2V5LCB3bGFuZGV2LT53ZXBfa2V5c1tpXSwgZXJxLT5sZW5ndGgpOworCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9zaXdlbmNvZGUobmV0ZGV2aWNlX3QgKmRldiwKKwkJCQlzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCXN0cnVjdCBpd19wb2ludCAqZXJxLCBjaGFyICprZXkpCit7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdAltc2c7CisJcDgwMjExaXRlbV9wc3RyMzJfdAkJcHN0cjsKKworCWludCBlcnIgPSAwOworCWludCByZXN1bHQgPSAwOworCWludCBlbmFibGUgPSAwOworCWludCBpOworCisJREJGRU5URVI7CisJaWYgKCF3bGFuX3dleHRfd3JpdGUpIHsKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJZ290byBleGl0OworCX0KKworCS8qIENoZWNrIHRoZSBLZXkgaW5kZXggZmlyc3QuICovCisJaWYoKGkgPSAoZXJxLT5mbGFncyAmIElXX0VOQ09ERV9JTkRFWCkpKSB7CisKKwkJaWYgKChpIDwgMSkgfHwgKGkgPiBOVU1fV0VQS0VZUykpIHsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJZWxzZQorCQkJaS0tOworCisJCXJlc3VsdCA9IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXYsIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXlJRCwgaSk7CisKKwkJaWYgKHJlc3VsdCkgeworCQkJZXJyID0gLUVGQVVMVDsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCQllbHNlIHsKKwkJCWVuYWJsZSA9IDE7CisJCX0KKworCX0KKwllbHNlIHsKKwkJLy8gRG8gbm90IHRoaW5nIHdoZW4gbm8gS2V5IEluZGV4CisJfQorCisJLyogQ2hlY2sgaWYgdGhlcmUgaXMgbm8ga2V5IGluZm9ybWF0aW9uIGluIHRoZSBpd2NvbmZpZyByZXF1ZXN0ICovCisJaWYoKGVycS0+ZmxhZ3MgJiBJV19FTkNPREVfTk9LRVkpID09IDAgJiYgZW5hYmxlID09IDEpIHsKKworCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkgKiBJZiB0aGVyZSBpcyBXRVAgS2V5IGZvciBzZXR0aW5nLCBjaGVjayB0aGUgS2V5IEluZm9ybWF0aW9uCisJCSAqIGFuZCB0aGVuIHNldCBpdCB0byB0aGUgZmlybXdhcmUuCisJCSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworCQlpZiAoZXJxLT5sZW5ndGggPiAwKSB7CisKKwkJCS8qIGNvcHkgdGhlIGtleSBmcm9tIHRoZSBkcml2ZXIgY2FjaGUgYXMgdGhlIGtleXMgYXJlIHJlYWQtb25seSBNSUJzICovCisJCQl3bGFuZGV2LT53ZXBfa2V5bGVuc1tpXSA9IGVycS0+bGVuZ3RoOworCQkJbWVtY3B5KHdsYW5kZXYtPndlcF9rZXlzW2ldLCBrZXksIGVycS0+bGVuZ3RoKTsKKworCQkJLyogUHJlcGFyZSBkYXRhIHN0cnV0dXJlIGZvciBwODAyMTFyZXFfZG9yZXF1ZXN0LiAqLworCQkJbWVtY3B5KHBzdHIuZGF0YS5kYXRhLCBrZXksIGVycS0+bGVuZ3RoKTsKKwkJCXBzdHIuZGF0YS5sZW4gPSBlcnEtPmxlbmd0aDsKKworCQkJc3dpdGNoKGkpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlwc3RyLmRpZCA9IERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MDsKKwkJCQkJYnJlYWs7CisKKwkJCQljYXNlIDE6CisJCQkJCXBzdHIuZGlkID0gRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkxOworCQkJCQlicmVhazsKKworCQkJCWNhc2UgMjoKKwkJCQkJcHN0ci5kaWQgPSBESURtaWJfZG90MTFzbXRfZG90MTFXRVBEZWZhdWx0S2V5c1RhYmxlX2RvdDExV0VQRGVmYXVsdEtleTI7CisJCQkJCWJyZWFrOworCisJCQkJY2FzZSAzOgorCQkJCQlwc3RyLmRpZCA9IERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MzsKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0OgorCQkJCQllcnIgPSAtRUlOVkFMOworCQkJCQlnb3RvIGV4aXQ7CisJCQl9CisKKwkJCW1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX21pYnNldDsKKwkJCW1lbWNweSgmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCAmcHN0ciwgc2l6ZW9mKHBzdHIpKTsKKwkJCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKworCQkJaWYgKHJlc3VsdCkgeworCQkJCWVyciA9IC1FRkFVTFQ7CisJCQkJZ290byBleGl0OworCQkJfQorCQl9CisKKwl9CisKKwkvKiBDaGVjayB0aGUgUHJpdmFjeUludm9rZWQgZmxhZyAqLworCWlmIChlcnEtPmZsYWdzICYgSVdfRU5DT0RFX0RJU0FCTEVEKSB7CisJCXJlc3VsdCA9IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXYsIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVByaXZhY3lJbnZva2VkLCBQODAyMTFFTlVNX3RydXRoX2ZhbHNlKTsKKwl9CisJZWxzZSBpZigoZXJxLT5mbGFncyAmIElXX0VOQ09ERV9FTkFCTEVEKSB8fCBlbmFibGUgPT0gMSkgeworCQlyZXN1bHQgPSBwODAyMTF3ZXh0X2RvcmVxdWVzdCh3bGFuZGV2LCBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFQcml2YWN5SW52b2tlZCwgUDgwMjExRU5VTV90cnV0aF90cnVlKTsKKwl9CisKKwlpZiAocmVzdWx0KSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBDaGVjayB0aGUgRXhjbHVkZVVuZW5jcnlwdGVkIGZsYWcgKi8KKwlpZiAoZXJxLT5mbGFncyAmIElXX0VOQ09ERV9SRVNUUklDVEVEKSB7CisJCXJlc3VsdCA9IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXYsIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMUV4Y2x1ZGVVbmVuY3J5cHRlZCwgUDgwMjExRU5VTV90cnV0aF90cnVlKTsKKwl9CisJZWxzZSBpZiAoZXJxLT5mbGFncyAmIElXX0VOQ09ERV9PUEVOKSB7CisJCXJlc3VsdCA9IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXYsIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMUV4Y2x1ZGVVbmVuY3J5cHRlZCwgUDgwMjExRU5VTV90cnV0aF9mYWxzZSk7CisJfQorCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisgZXhpdDoKKworCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwODAyMTF3ZXh0X2dpd2Vzc2lkKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgICBzdHJ1Y3QgaXdfcG9pbnQgKmRhdGEsIGNoYXIgKmVzc2lkKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYtPnNzaWQubGVuKSB7CisJCWRhdGEtPmxlbmd0aCA9IHdsYW5kZXYtPnNzaWQubGVuOworCQlkYXRhLT5mbGFncyA9IDE7CisJCW1lbWNweShlc3NpZCwgd2xhbmRldi0+c3NpZC5kYXRhLCBkYXRhLT5sZW5ndGgpOworCQllc3NpZFtkYXRhLT5sZW5ndGhdID0gMDsKKyNpZiAoV0lSRUxFU1NfRVhUIDwgMjEpCisJCWRhdGEtPmxlbmd0aCsrOworI2VuZGlmCisJfSBlbHNlIHsKKwkgIAltZW1zZXQoZXNzaWQsIDAsIHNpemVvZih3bGFuZGV2LT5zc2lkLmRhdGEpKTsKKwkJZGF0YS0+bGVuZ3RoID0gMDsKKwkJZGF0YS0+ZmxhZ3MgPSAwOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9zaXdlc3NpZChuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICAgc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICplc3NpZCkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExbXNnX2xueHJlcV9hdXRvam9pbl90ICAgICBtc2c7CisKKwlpbnQgcmVzdWx0OworCWludCBlcnIgPSAwOworCWludCBsZW5ndGggPSBkYXRhLT5sZW5ndGg7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKworCWlmICggd2xhbmRldi0+aG9zdHdlcCAmIEhPU1RXRVBfU0hBUkVES0VZICkKKwkgIG1zZy5hdXRodHlwZS5kYXRhID0gUDgwMjExRU5VTV9hdXRoYWxnX3NoYXJlZGtleTsKKwllbHNlCisJICBtc2cuYXV0aHR5cGUuZGF0YSA9IFA4MDIxMUVOVU1fYXV0aGFsZ19vcGVuc3lzdGVtOworCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfbG54cmVxX2F1dG9qb2luOworCisjaWYgKFdJUkVMRVNTX0VYVCA8IDIxKQorCWlmIChsZW5ndGgpIGxlbmd0aC0tOworI2VuZGlmCisKKwkvKiBUcmltIHRoZSBsYXN0ICdcMCcgdG8gZml0IHRoZSBTU0lEIGZvcm1hdCAqLworCisJaWYgKGxlbmd0aCAmJiBlc3NpZFtsZW5ndGgtMV0gPT0gJ1wwJykgeworCSAgbGVuZ3RoLS07CisJfQorCisJbWVtY3B5KG1zZy5zc2lkLmRhdGEuZGF0YSwgZXNzaWQsIGxlbmd0aCk7CisJbXNnLnNzaWQuZGF0YS5sZW4gPSBsZW5ndGg7CisKKwlXTEFOX0xPR19ERUJVRygxLCJhdXRvam9pbl9zc2lkIGZvciAlcyBcbiIsZXNzaWQpOworCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKyAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwiYXV0b2pvaW5fc3NpZCAlZFxuIixyZXN1bHQpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiBlcnI7Cit9CisKKworc3RhdGljIGludCBwODAyMTF3ZXh0X3Npd2NvbW1pdChuZXRkZXZpY2VfdCAqZGV2LAorCQkJCXN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJc3RydWN0IGl3X3BvaW50ICpkYXRhLCBjaGFyICplc3NpZCkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBBdXRvIEpvaW4gKi8KKwllcnIgPSBwODAyMTF3ZXh0X2F1dG9qb2luKHdsYW5kZXYpOworCisgZXhpdDoKKyAJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworfQorCisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXdyYXRlKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICAgc3RydWN0IGl3X3BhcmFtICpycnEsIGNoYXIgKmV4dHJhKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlwODAyMTFpdGVtX3VpbnQzMl90ICAgICAgICAgICAgIG1pYml0ZW07CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAgICBtc2c7CisJaW50IHJlc3VsdDsKKwlpbnQgZXJyID0gMDsKKworCURCRkVOVEVSOworCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfZG90MTFyZXFfbWliZ2V0OworCW1pYml0ZW0uZGlkID0gRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudFR4UmF0ZTsKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJcnJxLT5maXhlZCA9IDA7ICAgLyogY2FuIGl0IGNoYW5nZT8gKi8KKwlycnEtPmRpc2FibGVkID0gMDsKKwlycnEtPnZhbHVlID0gMDsKKworI2RlZmluZQkJSEZBMzg0eF9SQVRFQklUXzEJCQkoKFVJTlQxNikxKQorI2RlZmluZQkJSEZBMzg0eF9SQVRFQklUXzIJCQkoKFVJTlQxNikyKQorI2RlZmluZQkJSEZBMzg0eF9SQVRFQklUXzVkb3Q1CQkJKChVSU5UMTYpNCkKKyNkZWZpbmUJCUhGQTM4NHhfUkFURUJJVF8xMQkJCSgoVUlOVDE2KTgpCisKKwlzd2l0Y2ggKG1pYml0ZW0uZGF0YSkgeworCWNhc2UgSEZBMzg0eF9SQVRFQklUXzE6CisJCXJycS0+dmFsdWUgPSAxMDAwMDAwOworCQlicmVhazsKKwljYXNlIEhGQTM4NHhfUkFURUJJVF8yOgorCQlycnEtPnZhbHVlID0gMjAwMDAwMDsKKwkJYnJlYWs7CisJY2FzZSBIRkEzODR4X1JBVEVCSVRfNWRvdDU6CisJCXJycS0+dmFsdWUgPSA1NTAwMDAwOworCQlicmVhazsKKwljYXNlIEhGQTM4NHhfUkFURUJJVF8xMToKKwkJcnJxLT52YWx1ZSA9IDExMDAwMDAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQllcnIgPSAtRUlOVkFMOworCX0KKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwODAyMTF3ZXh0X2dpd3J0cyhuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICBzdHJ1Y3QgaXdfcGFyYW0gKnJ0cywgY2hhciAqZXh0cmEpCit7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworCXA4MDIxMWl0ZW1fdWludDMyX3QgICAgICAgICAgICAgbWliaXRlbTsKKwlwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICAgIG1zZzsKKwlpbnQgcmVzdWx0OworCWludCBlcnIgPSAwOworCisJREJGRU5URVI7CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJnZXQ7CisJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMVJUU1RocmVzaG9sZDsKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJcnRzLT52YWx1ZSA9IG1pYml0ZW0uZGF0YTsKKwlydHMtPmRpc2FibGVkID0gKHJ0cy0+dmFsdWUgPT0gMjM0Nyk7CisJcnRzLT5maXhlZCA9IDE7CisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworCitzdGF0aWMgaW50IHA4MDIxMXdleHRfc2l3cnRzKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgIHN0cnVjdCBpd19wYXJhbSAqcnRzLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExaXRlbV91aW50MzJfdCAgICAgICAgICAgICBtaWJpdGVtOworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgICAgbXNnOworCWludCByZXN1bHQ7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJnZXQ7CisJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMVJUU1RocmVzaG9sZDsKKwlpZiAocnRzLT5kaXNhYmxlZCkKKwkJbWliaXRlbS5kYXRhID0gMjM0NzsKKwllbHNlCisJCW1pYml0ZW0uZGF0YSA9IHJ0cy0+dmFsdWU7CisKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXdmcmFnKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICAgc3RydWN0IGl3X3BhcmFtICpmcmFnLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExaXRlbV91aW50MzJfdCAgICAgICAgICAgICBtaWJpdGVtOworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgICAgbXNnOworCWludCByZXN1bHQ7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCW1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX21pYmdldDsKKwltaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExRnJhZ21lbnRhdGlvblRocmVzaG9sZDsKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJZnJhZy0+dmFsdWUgPSBtaWJpdGVtLmRhdGE7CisJZnJhZy0+ZGlzYWJsZWQgPSAoZnJhZy0+dmFsdWUgPT0gMjM0Nik7CisJZnJhZy0+Zml4ZWQgPSAxOworCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9zaXdmcmFnKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICAgc3RydWN0IGl3X3BhcmFtICpmcmFnLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExaXRlbV91aW50MzJfdCAgICAgICAgICAgICBtaWJpdGVtOworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgICAgbXNnOworCWludCByZXN1bHQ7CisJaW50IGVyciA9IDA7CisKKwlEQkZFTlRFUjsKKworCWlmICghd2xhbl93ZXh0X3dyaXRlKSB7CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJzZXQ7CisJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMUZyYWdtZW50YXRpb25UaHJlc2hvbGQ7CisKKwlpZiAoZnJhZy0+ZGlzYWJsZWQpCisJCW1pYml0ZW0uZGF0YSA9IDIzNDY7CisJZWxzZQorCQltaWJpdGVtLmRhdGEgPSBmcmFnLT52YWx1ZTsKKworCW1lbWNweSgmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCAmbWliaXRlbSwgc2l6ZW9mKG1pYml0ZW0pKTsKKwlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwlpZiAocmVzdWx0KSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gZXhpdDsKKwl9CisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworI2VuZGlmICAvKiBXSVJFTEVTU19FWFQgPiA4ICovCisKKyNpZiBXSVJFTEVTU19FWFQgPiAxMAorCisjaWZuZGVmIElXX1JFVFJZX0xPTkcKKyNkZWZpbmUgSVdfUkVUUllfTE9ORyBJV19SRVRSWV9NQVgKKyNlbmRpZgorCisjaWZuZGVmIElXX1JFVFJZX1NIT1JUCisjZGVmaW5lIElXX1JFVFJZX1NIT1JUIElXX1JFVFJZX01JTgorI2VuZGlmCisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXdyZXRyeShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICAgc3RydWN0IGl3X3BhcmFtICpycnEsIGNoYXIgKmV4dHJhKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlwODAyMTFpdGVtX3VpbnQzMl90ICAgICAgICAgICAgIG1pYml0ZW07CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAgICBtc2c7CisJaW50IHJlc3VsdDsKKwlpbnQgZXJyID0gMDsKKwlVSU5UMTYgc2hvcnRyZXRyeSwgbG9uZ3JldHJ5LCBsaWZldGltZTsKKworCURCRkVOVEVSOworCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfZG90MTFyZXFfbWliZ2V0OworCW1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFTaG9ydFJldHJ5TGltaXQ7CisKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJc2hvcnRyZXRyeSA9IG1pYml0ZW0uZGF0YTsKKworCW1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFMb25nUmV0cnlMaW1pdDsKKworCW1lbWNweSgmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCAmbWliaXRlbSwgc2l6ZW9mKG1pYml0ZW0pKTsKKwlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwlpZiAocmVzdWx0KSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltZW1jcHkoJm1pYml0ZW0sICZtc2cubWliYXR0cmlidXRlLmRhdGEsIHNpemVvZihtaWJpdGVtKSk7CisKKwlsb25ncmV0cnkgPSBtaWJpdGVtLmRhdGE7CisKKwltaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExTWF4VHJhbnNtaXRNU0RVTGlmZXRpbWU7CisKKwltZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJaWYgKHJlc3VsdCkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWVtY3B5KCZtaWJpdGVtLCAmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCBzaXplb2YobWliaXRlbSkpOworCisJbGlmZXRpbWUgPSBtaWJpdGVtLmRhdGE7CisKKwlycnEtPmRpc2FibGVkID0gMDsKKworCWlmICgocnJxLT5mbGFncyAmIElXX1JFVFJZX1RZUEUpID09IElXX1JFVFJZX0xJRkVUSU1FKSB7CisJCXJycS0+ZmxhZ3MgPSBJV19SRVRSWV9MSUZFVElNRTsKKwkJcnJxLT52YWx1ZSA9IGxpZmV0aW1lICogMTAyNDsKKwl9IGVsc2UgeworCQlpZiAocnJxLT5mbGFncyAmIElXX1JFVFJZX0xPTkcpIHsKKwkJCXJycS0+ZmxhZ3MgPSBJV19SRVRSWV9MSU1JVCB8IElXX1JFVFJZX0xPTkc7CisJCQlycnEtPnZhbHVlID0gbG9uZ3JldHJ5OworCQl9IGVsc2UgeworCQkJcnJxLT5mbGFncyA9IElXX1JFVFJZX0xJTUlUOworCQkJcnJxLT52YWx1ZSA9IHNob3J0cmV0cnk7CisJCQlpZiAoc2hvcnRyZXRyeSAhPSBsb25ncmV0cnkpCisJCQkJcnJxLT5mbGFncyB8PSBJV19SRVRSWV9TSE9SVDsKKwkJfQorCX0KKworIGV4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworCit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9zaXdyZXRyeShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICAgc3RydWN0IGl3X3BhcmFtICpycnEsIGNoYXIgKmV4dHJhKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlwODAyMTFpdGVtX3VpbnQzMl90ICAgICAgICAgICAgIG1pYml0ZW07CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAgICBtc2c7CisJaW50IHJlc3VsdDsKKwlpbnQgZXJyID0gMDsKKworCURCRkVOVEVSOworCisJaWYgKCF3bGFuX3dleHRfd3JpdGUpIHsKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJZ290byBleGl0OworCX0KKworCWlmIChycnEtPmRpc2FibGVkKSB7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJzZXQ7CisKKwlpZiAoKHJycS0+ZmxhZ3MgJiBJV19SRVRSWV9UWVBFKSA9PSBJV19SRVRSWV9MSUZFVElNRSkgeworCQltaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExTWF4VHJhbnNtaXRNU0RVTGlmZXRpbWU7CisJCW1pYml0ZW0uZGF0YSA9ICBycnEtPnZhbHVlIC89IDEwMjQ7CisKKwkJbWVtY3B5KCZtc2cubWliYXR0cmlidXRlLmRhdGEsICZtaWJpdGVtLCBzaXplb2YobWliaXRlbSkpOworCQlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwkJaWYgKHJlc3VsdCkgeworCQkJZXJyID0gLUVGQVVMVDsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChycnEtPmZsYWdzICYgSVdfUkVUUllfTE9ORykgeworCQkJbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMUxvbmdSZXRyeUxpbWl0OworCQkJbWliaXRlbS5kYXRhID0gcnJxLT52YWx1ZTsKKworCQkJbWVtY3B5KCZtc2cubWliYXR0cmlidXRlLmRhdGEsICZtaWJpdGVtLCBzaXplb2YobWliaXRlbSkpOworCQkJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJCQlpZiAocmVzdWx0KSB7CisJCQkJZXJyID0gLUVGQVVMVDsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCX0KKworCQlpZiAocnJxLT5mbGFncyAmIElXX1JFVFJZX1NIT1JUKSB7CisJCQltaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExU2hvcnRSZXRyeUxpbWl0OworCQkJbWliaXRlbS5kYXRhID0gcnJxLT52YWx1ZTsKKworCQkJbWVtY3B5KCZtc2cubWliYXR0cmlidXRlLmRhdGEsICZtaWJpdGVtLCBzaXplb2YobWliaXRlbSkpOworCQkJcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LCAoVUlOVDgqKSZtc2cpOworCisJCQlpZiAocmVzdWx0KSB7CisJCQkJZXJyID0gLUVGQVVMVDsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCX0KKwl9CisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKKworfQorCisjZW5kaWYgLyogV0lSRUxFU1NfRVhUID4gMTAgKi8KKworI2lmIFdJUkVMRVNTX0VYVCA+IDkKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9zaXd0eHBvdyhuZXRkZXZpY2VfdCAqZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl3X3BhcmFtICpycnEsIGNoYXIgKmV4dHJhKQoreworICAgICAgICB3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisgICAgICAgIHA4MDIxMWl0ZW1fdWludDMyX3QgICAgICAgICAgICAgbWliaXRlbTsKKyAgICAgICAgcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAgICBtc2c7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgIGludCBlcnIgPSAwOworCisgICAgICAgIERCRkVOVEVSOworCisgICAgICAgaWYgKCF3bGFuX3dleHRfd3JpdGUpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSAoLUVPUE5PVFNVUFApOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIG1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX21pYnNldDsKKworICAgICAgICBzd2l0Y2ggKHJycS0+dmFsdWUpIHsKKworICAgICAgICAgIGNhc2UgMSA6IG1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsMTsgYnJlYWs7CisgICAgICAgICAgY2FzZSAyIDogbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWwyOyBicmVhazsKKyAgICAgICAgICBjYXNlIDMgOiBtaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDM7IGJyZWFrOworICAgICAgICAgIGNhc2UgNCA6IG1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNDsgYnJlYWs7CisgICAgICAgICAgY2FzZSA1IDogbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWw1OyBicmVhazsKKyAgICAgICAgICBjYXNlIDYgOiBtaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDY7IGJyZWFrOworICAgICAgICAgIGNhc2UgNyA6IG1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNzsgYnJlYWs7CisgICAgICAgICAgY2FzZSA4IDogbWliaXRlbS5kaWQgPSBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFUeFBvd2VyTGV2ZWw4OyBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBtaWJpdGVtLmRpZCA9IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeVR4UG93ZXJUYWJsZV9kb3QxMVR4UG93ZXJMZXZlbDg7IGJyZWFrOworCX0KKworICAgICAgICBtZW1jcHkoJm1zZy5taWJhdHRyaWJ1dGUuZGF0YSwgJm1pYml0ZW0sIHNpemVvZihtaWJpdGVtKSk7CisgICAgICAgIHJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZXJyID0gLUVGQVVMVDsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworIGV4aXQ6CisgICAgICAgIERCRkVYSVQ7CisgICAgICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXd0eHBvdyhuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgICAgc3RydWN0IGl3X3BhcmFtICpycnEsIGNoYXIgKmV4dHJhKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlwODAyMTFpdGVtX3VpbnQzMl90ICAgICAgICAgICAgIG1pYml0ZW07CisJcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAgICBtc2c7CisJaW50IHJlc3VsdDsKKwlpbnQgZXJyID0gMDsKKworCURCRkVOVEVSOworCisJbXNnLm1zZ2NvZGUgPSBESURtc2dfZG90MTFyZXFfbWliZ2V0OworCW1pYml0ZW0uZGlkID0gRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExQ3VycmVudFR4UG93ZXJMZXZlbDsKKworCW1lbWNweSgmbXNnLm1pYmF0dHJpYnV0ZS5kYXRhLCAmbWliaXRlbSwgc2l6ZW9mKG1pYml0ZW0pKTsKKwlyZXN1bHQgPSBwODAyMTFyZXFfZG9yZXF1ZXN0KHdsYW5kZXYsIChVSU5UOCopJm1zZyk7CisKKwlpZiAocmVzdWx0KSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gZXhpdDsKKwl9CisKKwltZW1jcHkoJm1pYml0ZW0sICZtc2cubWliYXR0cmlidXRlLmRhdGEsIHNpemVvZihtaWJpdGVtKSk7CisKKwkvLyBYWFggaGFuZGxlIE9GRiBieSBzZXR0aW5nIGRpc2FibGVkID0gMTsKKworCXJycS0+ZmxhZ3MgPSAwOyAvLyBJV19UWFBPV19EQk07CisJcnJxLT5kaXNhYmxlZCA9IDA7CisJcnJxLT5maXhlZCA9IDA7CisJcnJxLT52YWx1ZSA9IG1pYml0ZW0uZGF0YTsKKworIGV4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworfQorI2VuZGlmIC8qIFdJUkVMRVNTX0VYVCA+IDkgKi8KKworc3RhdGljIGludCBwODAyMTF3ZXh0X3Npd3NweShuZXRkZXZpY2VfdCAqZGV2LAorCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJICAgICBzdHJ1Y3QgaXdfcG9pbnQgKnNycSwgY2hhciAqZXh0cmEpCit7CisJd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgYWRkcmVzc1tJV19NQVhfU1BZXTsKKyAgICAgICAgaW50IG51bWJlciA9IHNycS0+bGVuZ3RoOworICAgICAgICBpbnQgaTsKKworCURCRkVOVEVSOworCisJLyogQ29weSB0aGUgZGF0YSBmcm9tIHRoZSBpbnB1dCBidWZmZXIgKi8KKwltZW1jcHkoYWRkcmVzcywgZXh0cmEsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKm51bWJlcik7CisKKyAgICAgICAgd2xhbmRldi0+c3B5X251bWJlciA9IDA7CisKKyAgICAgICAgaWYgKG51bWJlciA+IDApIHsKKworICAgICAgICAgICAgICAgIC8qIGV4dHJhY3QgdGhlIGFkZHJlc3NlcyAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXI7IGkrKykgeworCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkod2xhbmRldi0+c3B5X2FkZHJlc3NbaV0sIGFkZHJlc3NbaV0uc2FfZGF0YSwgRVRIX0FMRU4pOworCQl9CisKKyAgICAgICAgICAgICAgICAvKiByZXNldCBzdGF0cyAqLworICAgICAgICAgICAgICAgIG1lbXNldCh3bGFuZGV2LT5zcHlfc3RhdCwgMCwgc2l6ZW9mKHN0cnVjdCBpd19xdWFsaXR5KSAqIElXX01BWF9TUFkpOworCisgICAgICAgICAgICAgICAgLyogc2V0IG51bWJlciBvZiBhZGRyZXNzZXMgKi8KKyAgICAgICAgICAgICAgICB3bGFuZGV2LT5zcHlfbnVtYmVyID0gbnVtYmVyOworICAgICAgICB9CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisvKiBqa3JpZWdsOiBmcm9tIG9yaW5vY28sIG1vZGlmaWVkICovCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2l3c3B5KG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgIHN0cnVjdCBpd19wb2ludCAqc3JxLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisKKyAgICAgICAgc3RydWN0IHNvY2thZGRyIGFkZHJlc3NbSVdfTUFYX1NQWV07CisgICAgICAgIHN0cnVjdCBpd19xdWFsaXR5IHNweV9zdGF0W0lXX01BWF9TUFldOworICAgICAgICBpbnQgbnVtYmVyOworICAgICAgICBpbnQgaTsKKworCURCRkVOVEVSOworCisgICAgICAgIG51bWJlciA9IHdsYW5kZXYtPnNweV9udW1iZXI7CisKKyAgICAgICAgaWYgKG51bWJlciA+IDApIHsKKworICAgICAgICAgICAgICAgIC8qIHBvcHVsYXRlIGFkZHJlc3MgYW5kIHNweSBzdHJ1Y3QncyAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGFkZHJlc3NbaV0uc2FfZGF0YSwgd2xhbmRldi0+c3B5X2FkZHJlc3NbaV0sIEVUSF9BTEVOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NbaV0uc2FfZmFtaWx5ID0gQUZfVU5JWDsKKyAgICAgICAgICAgICAgICAJbWVtY3B5KCZzcHlfc3RhdFtpXSwgJndsYW5kZXYtPnNweV9zdGF0W2ldLCBzaXplb2Yoc3RydWN0IGl3X3F1YWxpdHkpKTsKKyAgICAgICAgICAgICAgICB9CisKKwkJLyogcmVzZXQgdXBkYXRlIGZsYWcgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IG51bWJlcjsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgd2xhbmRldi0+c3B5X3N0YXRbaV0udXBkYXRlZCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBwdXNoIHN0dWZmIHRvIHVzZXIgc3BhY2UgKi8KKyAgICAgICAgc3JxLT5sZW5ndGggPSBudW1iZXI7CisJbWVtY3B5KGV4dHJhLCBhZGRyZXNzLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSpudW1iZXIpOworCW1lbWNweShleHRyYStzaXplb2Yoc3RydWN0IHNvY2thZGRyKSpudW1iZXIsIHNweV9zdGF0LCBzaXplb2Yoc3RydWN0IGl3X3F1YWxpdHkpKm51bWJlcik7CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByaXNtMl9yZXN1bHQyZXJyIChpbnQgcHJpc20yX3Jlc3VsdCkKK3sKKwlpbnQgZXJyID0gMDsKKworCXN3aXRjaCAocHJpc20yX3Jlc3VsdCkgeworCQljYXNlIFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbnZhbGlkX3BhcmFtZXRlcnM6CisJCQllcnIgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCWNhc2UgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU6CisJCQllcnIgPSAtRUlPOworCQkJYnJlYWs7CisJCWNhc2UgUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ6CisJCQllcnIgPSAtRU9QTk9UU1VQUDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZXJyID0gMDsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiBlcnI7Cit9CisKKyNpZiBXSVJFTEVTU19FWFQgPiAxMworc3RhdGljIGludCBwODAyMTF3ZXh0X3Npd3NjYW4obmV0ZGV2aWNlX3QgKmRldiwKKwkJCSAgICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCSAgICAgc3RydWN0IGl3X3BvaW50ICpzcnEsIGNoYXIgKmV4dHJhKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKwlwODAyMTFtc2dfZG90MTFyZXFfc2Nhbl90CW1zZzsKKwlpbnQgcmVzdWx0OworCWludCBlcnIgPSAwOworCWludCBpID0gMDsKKworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYtPm1hY21vZGUgPT0gV0xBTl9NQUNNT0RFX0VTU19BUCkgeworCQlXTEFOX0xPR19FUlJPUigiQ2FuJ3Qgc2NhbiBpbiBBUCBtb2RlXG4iKTsKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJZ290byBleGl0OworCX0KKworCW1lbXNldCgmbXNnLCAweDAwLCBzaXplb2YocDgwMjExbXNnX2RvdDExcmVxX3NjYW5fdCkpOworCW1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX3NjYW47CisJbXNnLmJzc3R5cGUuZGF0YSA9IFA4MDIxMUVOVU1fYnNzdHlwZV9hbnk7CisKKwltZW1zZXQoJihtc2cuYnNzaWQuZGF0YSksIDB4RkYsIHNpemVvZiAocDgwMjExaXRlbV9wc3RyNl90KSk7CisJbXNnLmJzc2lkLmRhdGEubGVuID0gNjsKKworCW1zZy5zY2FudHlwZS5kYXRhID0gUDgwMjExRU5VTV9zY2FudHlwZV9hY3RpdmU7CisJbXNnLnByb2JlZGVsYXkuZGF0YSA9IDA7CisKKwlmb3IgKGkgPSAxOyBpIDw9IDE0OyBpKyspCisJCW1zZy5jaGFubmVsbGlzdC5kYXRhLmRhdGFbaS0xXSA9IGk7CisJbXNnLmNoYW5uZWxsaXN0LmRhdGEubGVuID0gMTQ7CisKKwltc2cubWF4Y2hhbm5lbHRpbWUuZGF0YSA9IDI1MDsKKwltc2cubWluY2hhbm5lbHRpbWUuZGF0YSA9IDIwMDsKKworCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKwlpZiAocmVzdWx0KQorCQllcnIgPSBwcmlzbTJfcmVzdWx0MmVyciAobXNnLnJlc3VsdGNvZGUuZGF0YSk7CisKKyBleGl0OgorCURCRkVYSVQ7CisJcmV0dXJuIGVycjsKK30KKworCisvKiBIZWxwZXIgdG8gdHJhbnNsYXRlIHNjYW4gaW50byBXaXJlbGVzcyBFeHRlbnNpb25zIHNjYW4gcmVzdWx0cy4KKyAqIEluc3BpcmVkIGJ5IHRoZSBwcmlzbTU0IGNvZGUsIHdoaWNoIHdhcyBpbiB0dXJuIGluc3BpcmVkIGJ5IHRoZQorICogYWlybyBkcml2ZXIgY29kZS4KKyAqLworc3RhdGljIGNoYXIgKgord2V4dF90cmFuc2xhdGVfYnNzKHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sIGNoYXIgKmN1cnJlbnRfZXYsCisJCSAgIGNoYXIgKmVuZF9idWYsIHA4MDIxMW1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHNfdCAqYnNzKQoreworCXN0cnVjdCBpd19ldmVudCBpd2U7CS8qIFRlbXBvcmFyeSBidWZmZXIgKi8KKworCS8qIFRoZSBmaXJzdCBlbnRyeSBtdXN0IGJlIHRoZSBNQUMgYWRkcmVzcyAqLworCW1lbWNweShpd2UudS5hcF9hZGRyLnNhX2RhdGEsIGJzcy0+YnNzaWQuZGF0YS5kYXRhLCBXTEFOX0JTU0lEX0xFTik7CisJaXdlLnUuYXBfYWRkci5zYV9mYW1pbHkgPSBBUlBIUkRfRVRIRVI7CisJaXdlLmNtZCA9IFNJT0NHSVdBUDsKKwljdXJyZW50X2V2ID0gaXdlX3N0cmVhbV9hZGRfZXZlbnQoaW5mbywgY3VycmVudF9ldiwgZW5kX2J1ZiwgJml3ZSwgSVdfRVZfQUREUl9MRU4pOworCisJLyogVGhlIGZvbGxvd2luZyBlbnRyaWVzIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBzYW1lIG9yZGVyIHdlIGdpdmUgdGhlbSAqLworCisJLyogVGhlIEVTU0lELiAqLworCWlmIChic3MtPnNzaWQuZGF0YS5sZW4gPiAwKSB7CisJCWNoYXIgZXNzaWRbSVdfRVNTSURfTUFYX1NJWkUgKyAxXTsKKwkJaW50IHNpemU7CisKKwkJc2l6ZSA9IHdsYW5fbWluKElXX0VTU0lEX01BWF9TSVpFLCBic3MtPnNzaWQuZGF0YS5sZW4pOworCQltZW1zZXQoJmVzc2lkLCAwLCBzaXplb2YgKGVzc2lkKSk7CisJCW1lbWNweSgmZXNzaWQsIGJzcy0+c3NpZC5kYXRhLmRhdGEsIHNpemUpOworCQlXTEFOX0xPR19ERUJVRygxLCAiIGVzc2lkIHNpemUgPSAlZFxuIiwgc2l6ZSk7CisJCWl3ZS51LmRhdGEubGVuZ3RoID0gc2l6ZTsKKwkJaXdlLnUuZGF0YS5mbGFncyA9IDE7CisJCWl3ZS5jbWQgPSBTSU9DR0lXRVNTSUQ7CisJCWN1cnJlbnRfZXYgPSBpd2Vfc3RyZWFtX2FkZF9wb2ludChpbmZvLCBjdXJyZW50X2V2LCBlbmRfYnVmLCAmaXdlLCAmZXNzaWRbMF0pOworCQlXTEFOX0xPR19ERUJVRygxLCAiIGVzc2lkIHNpemUgT0suXG4iKTsKKwl9CisKKwlzd2l0Y2ggKGJzcy0+YnNzdHlwZS5kYXRhKSB7CisJCWNhc2UgUDgwMjExRU5VTV9ic3N0eXBlX2luZnJhc3RydWN0dXJlOgorCQkJaXdlLnUubW9kZSA9IElXX01PREVfTUFTVEVSOworCQkJYnJlYWs7CisKKwkJY2FzZSBQODAyMTFFTlVNX2Jzc3R5cGVfaW5kZXBlbmRlbnQ6CisJCQlpd2UudS5tb2RlID0gSVdfTU9ERV9BREhPQzsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlpd2UudS5tb2RlID0gMDsKKwkJCWJyZWFrOworCX0KKwlpd2UuY21kID0gU0lPQ0dJV01PREU7CisJaWYgKGl3ZS51Lm1vZGUpCisJCWN1cnJlbnRfZXYgPSBpd2Vfc3RyZWFtX2FkZF9ldmVudChpbmZvLCBjdXJyZW50X2V2LCBlbmRfYnVmLCAmaXdlLCBJV19FVl9VSU5UX0xFTik7CisKKwkvKiBFbmNyeXB0aW9uIGNhcGFiaWxpdHkgKi8KKwlpZiAoYnNzLT5wcml2YWN5LmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlKQorCQlpd2UudS5kYXRhLmZsYWdzID0gSVdfRU5DT0RFX0VOQUJMRUQgfCBJV19FTkNPREVfTk9LRVk7CisJZWxzZQorCQlpd2UudS5kYXRhLmZsYWdzID0gSVdfRU5DT0RFX0RJU0FCTEVEOworCWl3ZS51LmRhdGEubGVuZ3RoID0gMDsKKwlpd2UuY21kID0gU0lPQ0dJV0VOQ09ERTsKKwljdXJyZW50X2V2ID0gaXdlX3N0cmVhbV9hZGRfcG9pbnQoaW5mbywgY3VycmVudF9ldiwgZW5kX2J1ZiwgJml3ZSwgTlVMTCk7CisKKwkvKiBBZGQgZnJlcXVlbmN5LiAoc2hvcnQpIGJzcy0+Y2hhbm5lbCBpcyB0aGUgZnJlcXVlbmN5IGluIE1IeiAqLworCWl3ZS51LmZyZXEubSA9IGJzcy0+ZHNjaGFubmVsLmRhdGE7CisJaXdlLnUuZnJlcS5lID0gMDsKKwlpd2UuY21kID0gU0lPQ0dJV0ZSRVE7CisJY3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX2V2ZW50KGluZm8sIGN1cnJlbnRfZXYsIGVuZF9idWYsICZpd2UsIElXX0VWX0ZSRVFfTEVOKTsKKworCS8qIEFkZCBxdWFsaXR5IHN0YXRpc3RpY3MgKi8KKwlpd2UudS5xdWFsLmxldmVsID0gYnNzLT5zaWduYWwuZGF0YTsKKwlpd2UudS5xdWFsLm5vaXNlID0gYnNzLT5ub2lzZS5kYXRhOworCS8qIGRvIGEgc2ltcGxlIFNOUiBmb3IgcXVhbGl0eSAqLworCWl3ZS51LnF1YWwucXVhbCA9IHF1YWxfYXNfcGVyY2VudChic3MtPnNpZ25hbC5kYXRhIC0gYnNzLT5ub2lzZS5kYXRhKTsKKwlpd2UuY21kID0gSVdFVlFVQUw7CisJY3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX2V2ZW50KGluZm8sIGN1cnJlbnRfZXYsIGVuZF9idWYsICZpd2UsIElXX0VWX1FVQUxfTEVOKTsKKworCXJldHVybiBjdXJyZW50X2V2OworfQorCisKK3N0YXRpYyBpbnQgcDgwMjExd2V4dF9naXdzY2FuKG5ldGRldmljZV90ICpkZXYsCisJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkgICAgIHN0cnVjdCBpd19wb2ludCAqc3JxLCBjaGFyICpleHRyYSkKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJcDgwMjExbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c190CW1zZzsKKwlpbnQgcmVzdWx0ID0gMDsKKwlpbnQgZXJyID0gMDsKKwlpbnQgaSA9IDA7CisJaW50IHNjYW5fZ29vZCA9IDA7CisJY2hhciAqY3VycmVudF9ldiA9IGV4dHJhOworCisJREJGRU5URVI7CisKKwkvKiBTaW5jZSB3aXJlbGVzcyB0b29scyBkb2Vzbid0IHJlYWxseSBoYXZlIGEgd2F5IG9mIHBhc3NpbmcgaG93CisJICogbWFueSBzY2FuIHJlc3VsdHMgcmVzdWx0cyB0aGVyZSB3ZXJlIGJhY2sgaGVyZSwga2VlcCBncmFiYmluZyB0aGVtCisJICogdW50aWwgd2UgZmFpbC4KKwkgKi8KKwlkbyB7CisJCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJCW1zZy5tc2djb2RlID0gRElEbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0czsKKwkJbXNnLmJzc2luZGV4LmRhdGEgPSBpOworCisJCXJlc3VsdCA9IHA4MDIxMXJlcV9kb3JlcXVlc3Qod2xhbmRldiwgKFVJTlQ4KikmbXNnKTsKKwkJaWYgKChyZXN1bHQgIT0gMCkgfHwKKwkJICAgIChtc2cucmVzdWx0Y29kZS5kYXRhICE9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzKSkgeworCQkJYnJlYWs7CisJCX0KKworCQljdXJyZW50X2V2ID0gd2V4dF90cmFuc2xhdGVfYnNzKGluZm8sIGN1cnJlbnRfZXYsIGV4dHJhICsgSVdfU0NBTl9NQVhfREFUQSwgJm1zZyk7CisJCXNjYW5fZ29vZCA9IDE7CisJCWkrKzsKKwl9IHdoaWxlIChpIDwgSVdfTUFYX0FQKTsKKworCXNycS0+bGVuZ3RoID0gKGN1cnJlbnRfZXYgLSBleHRyYSk7CisJc3JxLT5mbGFncyA9IDA7CS8qIHRvZG8gKi8KKworCWlmIChyZXN1bHQgJiYgIXNjYW5fZ29vZCkKKwkJZXJyID0gcHJpc20yX3Jlc3VsdDJlcnIgKG1zZy5yZXN1bHRjb2RlLmRhdGEpOworCisJREJGRVhJVDsKKwlyZXR1cm4gZXJyOworfQorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vZXh0cmEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBzdHVmZiB0byBzdXBwb3J0IE5ldHdvcmtNYW5hZ2VyIChJIGhvcGUpCisKKyNpZiBXSVJFTEVTU19FWFQgPiAxNworLyogU0lPQ1NJV0VOQ09ERUVYVCAqLworc3RhdGljIGludCBwODAyMTF3ZXh0X3NldF9lbmNvZGVleHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCQlzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorCQkJCXVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKQoreworICB3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisgIHN0cnVjdCBpd19lbmNvZGVfZXh0ICpleHQgPSAoc3RydWN0IGl3X2VuY29kZV9leHQgKilleHRyYTsKKwlwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QJbXNnOworCXA4MDIxMWl0ZW1fcHN0cjMyX3QJCSpwc3RyOworCisgIGludCByZXN1bHQgPSAwOworICBzdHJ1Y3QgaXdfcG9pbnQgKmVuY29kaW5nID0gJndycXUtPmVuY29kaW5nOworICBpbnQgaWR4ID0gZW5jb2RpbmctPmZsYWdzICYgSVdfRU5DT0RFX0lOREVYOworCisgIFdMQU5fTE9HX0RFQlVHKDEsInNldF9lbmNvZGVfZXh0IGZsYWdzWyVkXSBhbGdbJWRdIGtleWxlblslZF1cbiIsZXh0LT5leHRfZmxhZ3MsKGludClleHQtPmFsZywoaW50KWV4dC0+a2V5X2xlbik7CisKKworICBpZiAoIGV4dC0+ZXh0X2ZsYWdzICYgSVdfRU5DT0RFX0VYVF9HUk9VUF9LRVkgKSB7CisgICAgLy8gc2V0IGRlZmF1bHQga2V5ID8gSSdtIG5vdCBzdXJlIGlmIHRoaXMgdGhlIHRoZSBjb3JyZWN0IHRoaW5nIHRvIGRvIGhlcmUKKworICAgIGlmICggaWR4ICkgeworICAgICAgaWYgKGlkeCA8IDEgfHwgaWR4ID4gTlVNX1dFUEtFWVMpIHsKKwlyZXR1cm4gLUVJTlZBTDsKKyAgICAgIH0gZWxzZQorCWlkeC0tOworICAgIH0KKyAgICBXTEFOX0xPR19ERUJVRygxLCJzZXR0aW5nIGRlZmF1bHQga2V5ICglZClcbiIsaWR4KTsKKyAgICByZXN1bHQgPSBwODAyMTF3ZXh0X2RvcmVxdWVzdCh3bGFuZGV2LCBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFXRVBEZWZhdWx0S2V5SUQsIGlkeCk7CisgICAgaWYgKCByZXN1bHQgKQorICAgICAgcmV0dXJuIC1FRkFVTFQ7CisgIH0KKworCisgIGlmICggZXh0LT5leHRfZmxhZ3MgJiBJV19FTkNPREVfRVhUX1NFVF9UWF9LRVkgKSB7CisgICAgaWYgKCAhIGV4dC0+YWxnICYgSVdfRU5DT0RFX0FMR19XRVApIHsKKyAgICAgIFdMQU5fTE9HX0RFQlVHKDEsImFza2VkIHRvIHNldCBhIG5vbiB3ZXAga2V5IDooIik7CisgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgaWYgKGlkeCkgeworICAgICAgaWYgKGlkeCA8MSB8fCBpZHggPiBOVU1fV0VQS0VZUykKKwlyZXR1cm4gLUVJTlZBTDsKKyAgICAgIGVsc2UKKwlpZHgtLTsKKyAgICB9CisgICAgV0xBTl9MT0dfREVCVUcoMSwiU2V0IFdFUCBrZXkgKCVkKVxuIixpZHgpOworICAgIHdsYW5kZXYtPndlcF9rZXlsZW5zW2lkeF0gPSBleHQtPmtleV9sZW47CisgICAgbWVtY3B5KHdsYW5kZXYtPndlcF9rZXlzW2lkeF0sIGV4dC0+a2V5LCBleHQtPmtleV9sZW4pOworCisgICAgbWVtc2V0KCAmbXNnLDAsc2l6ZW9mKG1zZykpOworICAgIHBzdHIgPSAocDgwMjExaXRlbV9wc3RyMzJfdCopJm1zZy5taWJhdHRyaWJ1dGUuZGF0YTsKKyAgICBtZW1jcHkocHN0ci0+ZGF0YS5kYXRhLCBleHQtPmtleSxleHQtPmtleV9sZW4pOworICAgIHBzdHItPmRhdGEubGVuID0gZXh0LT5rZXlfbGVuOworICAgIHN3aXRjaCAoaWR4KSB7CisgICAgY2FzZSAwOgorICAgICAgcHN0ci0+ZGlkID0gRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkwOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgcHN0ci0+ZGlkID0gRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgcHN0ci0+ZGlkID0gRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkyOworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgcHN0ci0+ZGlkID0gRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkzOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBtc2cubXNnY29kZSA9IERJRG1zZ19kb3QxMXJlcV9taWJzZXQ7CisgICAgcmVzdWx0ID0gcDgwMjExcmVxX2RvcmVxdWVzdCh3bGFuZGV2LChVSU5UOCopJm1zZyk7CisgICAgV0xBTl9MT0dfREVCVUcoMSwicmVzdWx0ICglZClcbiIscmVzdWx0KTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCisvKiBTSU9DR0lXRU5DT0RFRVhUICovCitzdGF0aWMgaW50IHA4MDIxMXdleHRfZ2V0X2VuY29kZWV4dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCXN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCisJCQkJdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpCisKK3sKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90KilkZXYtPnByaXY7CisJc3RydWN0IGl3X2VuY29kZV9leHQgKmV4dCA9IChzdHJ1Y3QgaXdfZW5jb2RlX2V4dCAqKWV4dHJhOworCisJc3RydWN0IGl3X3BvaW50ICplbmNvZGluZyA9ICZ3cnF1LT5lbmNvZGluZzsKKwlpbnQgcmVzdWx0ID0gMDsKKwlpbnQgbWF4X2xlbjsKKwlpbnQgaWR4OworCisJREJGRU5URVI7CisKKwlXTEFOX0xPR19ERUJVRygxLCJnZXRfZW5jb2RlX2V4dCBmbGFnc1slZF0gYWxnWyVkXSBrZXlsZW5bJWRdXG4iLGV4dC0+ZXh0X2ZsYWdzLChpbnQpZXh0LT5hbGcsKGludClleHQtPmtleV9sZW4pOworCisKKwltYXhfbGVuID0gZW5jb2RpbmctPmxlbmd0aCAtIHNpemVvZigqZXh0KTsKKwlpZiAoIG1heF9sZW4gPD0gMCkgeworCQlXTEFOX0xPR19ERUJVRygxLCJnZXRfZW5jb2RlZXh0IG1heF9sZW4gWyVkXSBpbnZhbGlkXG4iLG1heF9sZW4pOworCQlyZXN1bHQgPSAtRUlOVkFMOworCQlnb3RvIGV4aXQ7CisJfQorCWlkeCA9IGVuY29kaW5nLT5mbGFncyAmIElXX0VOQ09ERV9JTkRFWDsKKworCVdMQU5fTE9HX0RFQlVHKDEsImdldF9lbmNvZGVfZXh0IGluZGV4IFslZF1cbiIsaWR4KTsKKworCWlmIChpZHgpIHsKKwkJaWYgKGlkeCA8IDEgfHwgaWR4ID4gTlVNX1dFUEtFWVMgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLCJnZXRfZW5jb2RlX2V4dCBpbnZhbGlkIGtleSBpbmRleCBbJWRdXG4iLGlkeCk7CisJCQlyZXN1bHQgPSAtRUlOVkFMOworCQkJZ290byBleGl0OworCQl9CisJCWlkeC0tOworCX0gZWxzZSB7CisJCS8qIGRlZmF1bHQga2V5ID8gbm90IHN1cmUgd2hhdCB0byBkbyAqLworCQkvKiB3aWxsIGp1c3QgdXNlIGtleVswXSBmb3Igbm93ICEgRklYIE1FICovCisJfQorCisJZW5jb2RpbmctPmZsYWdzID0gaWR4ICsgMTsKKwltZW1zZXQoZXh0LDAsc2l6ZW9mKCpleHQpKTsKKworCWV4dC0+YWxnID0gSVdfRU5DT0RFX0FMR19XRVA7CisJZXh0LT5rZXlfbGVuID0gd2xhbmRldi0+d2VwX2tleWxlbnNbaWR4XTsKKwltZW1jcHkoIGV4dC0+a2V5LCB3bGFuZGV2LT53ZXBfa2V5c1tpZHhdICwgZXh0LT5rZXlfbGVuICk7CisKKwllbmNvZGluZy0+ZmxhZ3MgfD0gSVdfRU5DT0RFX0VOQUJMRUQ7CitleGl0OgorCURCRkVYSVQ7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qIFNJT0NTSVdBVVRIICovCitzdGF0aWMgaW50IHA4MDIxMV93ZXh0X3NldF9pd2F1dGggKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSkKK3sKKyAgd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworICBzdHJ1Y3QgaXdfcGFyYW0gKnBhcmFtID0gJndycXUtPnBhcmFtOworICBpbnQgcmVzdWx0ID0wOworCisgIFdMQU5fTE9HX0RFQlVHKDEsInNldF9pd2F1dGggZmxhZ3NbJWRdXG4iLChpbnQpcGFyYW0tPmZsYWdzICYgSVdfQVVUSF9JTkRFWCApOworCisgIHN3aXRjaCAocGFyYW0tPmZsYWdzICYgSVdfQVVUSF9JTkRFWCkgeworICBjYXNlIElXX0FVVEhfRFJPUF9VTkVOQ1JZUFRFRDoKKyAgICBXTEFOX0xPR19ERUJVRygxLCJkcm9wX3VuZW5jcnlwdGVkICVkXG4iLHBhcmFtLT52YWx1ZSk7CisgICAgaWYgKHBhcmFtLT52YWx1ZSkKKyAgICAgIHJlc3VsdCA9IHA4MDIxMXdleHRfZG9yZXF1ZXN0KHdsYW5kZXYsIERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMUV4Y2x1ZGVVbmVuY3J5cHRlZCwgUDgwMjExRU5VTV90cnV0aF90cnVlKTsKKyAgICBlbHNlCisgICAgICByZXN1bHQgPSBwODAyMTF3ZXh0X2RvcmVxdWVzdCh3bGFuZGV2LCBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFFeGNsdWRlVW5lbmNyeXB0ZWQsIFA4MDIxMUVOVU1fdHJ1dGhfZmFsc2UpOworICAgIGJyZWFrOworCisgIGNhc2UgSVdfQVVUSF9QUklWQUNZX0lOVk9LRUQ6CisgICAgV0xBTl9MT0dfREVCVUcoMSwicHJpdmFjeSBpbnZva2VkICVkXG4iLHBhcmFtLT52YWx1ZSk7CisgICAgaWYgKCBwYXJhbS0+dmFsdWUpCisgICAgICByZXN1bHQgPSBwODAyMTF3ZXh0X2RvcmVxdWVzdCh3bGFuZGV2LCBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFQcml2YWN5SW52b2tlZCwgUDgwMjExRU5VTV90cnV0aF90cnVlKTsKKyAgICBlbHNlCisgICAgICByZXN1bHQgPSBwODAyMTF3ZXh0X2RvcmVxdWVzdCh3bGFuZGV2LCBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFQcml2YWN5SW52b2tlZCwgUDgwMjExRU5VTV90cnV0aF9mYWxzZSk7CisKKyAgICBicmVhazsKKworICBjYXNlIElXX0FVVEhfODAyMTFfQVVUSF9BTEc6CisgICAgaWYgKCBwYXJhbS0+dmFsdWUgJiBJV19BVVRIX0FMR19PUEVOX1NZU1RFTSApIHsKKyAgICAgIFdMQU5fTE9HX0RFQlVHKDEsInNldCBvcGVuX3N5c3RlbVxuIik7CisgICAgICB3bGFuZGV2LT5ob3N0d2VwICY9IH5IT1NUV0VQX1NIQVJFREtFWTsKKyAgICB9IGVsc2UgaWYgKCBwYXJhbS0+dmFsdWUgJiBJV19BVVRIX0FMR19TSEFSRURfS0VZKSB7CisgICAgICBXTEFOX0xPR19ERUJVRygxLCJzZXQgc2hhcmVkIGtleVxuIik7CisgICAgICB3bGFuZGV2LT5ob3N0d2VwIHw9IEhPU1RXRVBfU0hBUkVES0VZOworICAgIH0gZWxzZSB7CisgICAgICAvKiBkb24ndCBrbm93IHdoYXQgdG8gZG8ga25vdyA6KCAqLworICAgICAgV0xBTl9MT0dfREVCVUcoMSwidW5rbm93biBBVVRIX0FMRyAoJWQpXG4iLHBhcmFtLT52YWx1ZSk7CisgICAgICByZXN1bHQgPSAtRUlOVkFMOworICAgIH0KKyAgICBicmVhazsKKworICBkZWZhdWx0OgorICAgIGJyZWFrOworICB9CisKKworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFNJT0NTSVdBVVRIICovCitzdGF0aWMgaW50IHA4MDIxMV93ZXh0X2dldF9pd2F1dGggKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbywKKwkJCQkgICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSkKK3sKKyAgd2xhbmRldmljZV90ICp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopZGV2LT5wcml2OworICBzdHJ1Y3QgaXdfcGFyYW0gKnBhcmFtID0gJndycXUtPnBhcmFtOworICBpbnQgcmVzdWx0ID0wOworCisgIFdMQU5fTE9HX0RFQlVHKDEsImdldF9pd2F1dGggZmxhZ3NbJWRdXG4iLChpbnQpcGFyYW0tPmZsYWdzICYgSVdfQVVUSF9JTkRFWCApOworCisgIHN3aXRjaCAocGFyYW0tPmZsYWdzICYgSVdfQVVUSF9JTkRFWCkgeworICBjYXNlIElXX0FVVEhfRFJPUF9VTkVOQ1JZUFRFRDoKKyAgICBwYXJhbS0+dmFsdWUgPSB3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9FWENMVURFVU5FTkNSWVBURUQ/MTowOworICAgIGJyZWFrOworCisgIGNhc2UgSVdfQVVUSF9QUklWQUNZX0lOVk9LRUQ6CisgICAgcGFyYW0tPnZhbHVlID0gd2xhbmRldi0+aG9zdHdlcCAmIEhPU1RXRVBfUFJJVkFDWUlOVk9LRUQ/MTowOworICAgIGJyZWFrOworCisgIGNhc2UgSVdfQVVUSF84MDIxMV9BVVRIX0FMRzoKKyAgICBwYXJhbS0+dmFsdWUgPSB3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9TSEFSRURLRVk/SVdfQVVUSF9BTEdfU0hBUkVEX0tFWTpJV19BVVRIX0FMR19PUEVOX1NZU1RFTTsKKyAgICBicmVhazsKKworCisgIGRlZmF1bHQ6CisgICAgYnJlYWs7CisgIH0KKworCisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworCisjZW5kaWYKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKworCisvKgordHlwZWRlZiBpbnQgKCppd19oYW5kbGVyKShuZXRkZXZpY2VfdCAqZGV2LCBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSk7CisqLworCisjaWYgV0lSRUxFU1NfRVhUID4gMTIKK3N0YXRpYyBpd19oYW5kbGVyIHA4MDIxMXdleHRfaGFuZGxlcnNbXSA9ICB7CisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3Y29tbWl0LAkJLyogU0lPQ1NJV0NPTU1JVCAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dpd25hbWUsCQkvKiBTSU9DR0lXTkFNRSAqLworCShpd19oYW5kbGVyKSBOVUxMLAkJCQkvKiBTSU9DU0lXTldJRCAqLworCShpd19oYW5kbGVyKSBOVUxMLAkJCQkvKiBTSU9DR0lXTldJRCAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X3Npd2ZyZXEsICAJCS8qIFNJT0NTSVdGUkVRICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3ZnJlcSwgIAkJLyogU0lPQ0dJV0ZSRVEgKi8KKwkoaXdfaGFuZGxlcikgcDgwMjExd2V4dF9zaXdtb2RlLCAgICAgICAJCS8qIFNJT0NTSVdNT0RFICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3bW9kZSwgICAgICAgCQkvKiBTSU9DR0lXTU9ERSAqLworCShpd19oYW5kbGVyKSBOVUxMLCAgICAgICAgICAgICAgICAgCQkvKiBTSU9DU0lXU0VOUyAqLworCShpd19oYW5kbGVyKSBOVUxMLCAgICAgICAgICAgICAgICAJCS8qIFNJT0NHSVdTRU5TICovCisJKGl3X2hhbmRsZXIpIE5VTEwsIC8qIG5vdCB1c2VkICovICAgICAJCS8qIFNJT0NTSVdSQU5HRSAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dpd3JhbmdlLCAgICAgIAkJLyogU0lPQ0dJV1JBTkdFICovCisJKGl3X2hhbmRsZXIpIE5VTEwsIC8qIG5vdCB1c2VkICovICAgICAJCS8qIFNJT0NTSVdQUklWICovCisJKGl3X2hhbmRsZXIpIE5VTEwsIC8qIGtlcm5lbCBjb2RlICovICAgCQkvKiBTSU9DR0lXUFJJViAqLworCShpd19oYW5kbGVyKSBOVUxMLCAvKiBub3QgdXNlZCAqLyAgICAgCQkvKiBTSU9DU0lXU1RBVFMgKi8KKwkoaXdfaGFuZGxlcikgTlVMTCwgLyoga2VybmVsIGNvZGUgKi8gICAJCS8qIFNJT0NHSVdTVEFUUyAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X3Npd3NweSwJCQkvKiBTSU9DU0lXU1BZICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3c3B5LAkJCS8qIFNJT0NHSVdTUFkgKi8KKwkoaXdfaGFuZGxlcikgTlVMTCwJCQkJLyogLS0gaG9sZSAtLSAqLworCShpd19oYW5kbGVyKSBOVUxMLAkJCQkvKiAtLSBob2xlIC0tICovCisJKGl3X2hhbmRsZXIpIE5VTEwsICAgICAgICAgICAgICAJCS8qIFNJT0NTSVdBUCAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dpd2FwLCAgICAgICAgIAkJLyogU0lPQ0dJV0FQICovCisJKGl3X2hhbmRsZXIpIE5VTEwsCQkJCS8qIC0tIGhvbGUgLS0gKi8KKwkoaXdfaGFuZGxlcikgTlVMTCwgICAgICAgICAgICAgICAgICAJCS8qIFNJT0NHSVdBUExJU1QgKi8KKyNpZiBXSVJFTEVTU19FWFQgPiAxMworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X3Npd3NjYW4sCQkJLyogU0lPQ1NJV1NDQU4gKi8KKwkoaXdfaGFuZGxlcikgcDgwMjExd2V4dF9naXdzY2FuLAkJCS8qIFNJT0NHSVdTQ0FOICovCisjZWxzZSAvKiBXSVJFTEVTU19FWFQgPiAxMyAqLworCShpd19oYW5kbGVyKSBOVUxMLAkvKiBudWxsICovCQkvKiBTSU9DU0lXU0NBTiAqLworCShpd19oYW5kbGVyKSBOVUxMLAkvKiBudWxsICovCQkvKiBTSU9DR0lXU0NBTiAqLworI2VuZGlmIC8qIFdJUkVMRVNTX0VYVCA+IDEzICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3ZXNzaWQsICAJCS8qIFNJT0NTSVdFU1NJRCAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dpd2Vzc2lkLCAgICAgIAkJLyogU0lPQ0dJV0VTU0lEICovCisJKGl3X2hhbmRsZXIpIE5VTEwsICAgICAgICAgICAgICAgICAJCS8qIFNJT0NTSVdOSUNLTiAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dpd2Vzc2lkLCAgICAgIAkJLyogU0lPQ0dJV05JQ0tOICovCisJKGl3X2hhbmRsZXIpIE5VTEwsCQkJCS8qIC0tIGhvbGUgLS0gKi8KKwkoaXdfaGFuZGxlcikgTlVMTCwJCQkJLyogLS0gaG9sZSAtLSAqLworCShpd19oYW5kbGVyKSBOVUxMLCAgICAgICAgICAgICAgICAJCS8qIFNJT0NTSVdSQVRFICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3cmF0ZSwgICAgICAJCS8qIFNJT0NHSVdSQVRFICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3cnRzLCAgCQkvKiBTSU9DU0lXUlRTICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3cnRzLCAgICAgICAgCQkvKiBTSU9DR0lXUlRTICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3ZnJhZywgICAgICAJCS8qIFNJT0NTSVdGUkFHICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3ZnJhZywgICAJCS8qIFNJT0NHSVdGUkFHICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3dHhwb3csICAgICAgICAgICAJLyogU0lPQ1NJV1RYUE9XICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3dHhwb3csICAJCS8qIFNJT0NHSVdUWFBPVyAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X3Npd3JldHJ5LCAgICAgCQkvKiBTSU9DU0lXUkVUUlkgKi8KKwkoaXdfaGFuZGxlcikgcDgwMjExd2V4dF9naXdyZXRyeSwgIAkJLyogU0lPQ0dJV1JFVFJZICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2l3ZW5jb2RlLCAgICAgCQkvKiBTSU9DU0lXRU5DT0RFICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfZ2l3ZW5jb2RlLCAgCQkvKiBTSU9DR0lXRU5DT0RFICovCisJKGl3X2hhbmRsZXIpIE5VTEwsICAgICAgICAgICAgICAgICAJCS8qIFNJT0NTSVdQT1dFUiAqLworCShpd19oYW5kbGVyKSBOVUxMLCAgICAgICAgICAgICAgICAgIAkJLyogU0lPQ0dJV1BPV0VSICovCisjaWYgV0lSRUxFU1NfRVhUID4gMTcKKy8qIFdQQSBvcGVyYXRpb25zICovCisKKwkoaXdfaGFuZGxlcikgTlVMTCwJCQkJLyogLS0gaG9sZSAtLSAqLworCShpd19oYW5kbGVyKSBOVUxMLAkJCQkvKiAtLSBob2xlIC0tICovCisJKGl3X2hhbmRsZXIpIE5VTEwsIC8qIFNJT0NTSVdHRU5JRQlzZXQgZ2VuZXJpYyBJRSAqLworCShpd19oYW5kbGVyKSBOVUxMLCAvKiBTSU9DR0lXR0VOSUUJZ2V0IGdlbmVyaWMgSUUgKi8KKwkoaXdfaGFuZGxlcikgcDgwMjExX3dleHRfc2V0X2l3YXV0aCwgLyogU0lPQ1NJV0FVVEgJc2V0IGF1dGhlbnRpY2F0aW9uIG1vZGUgcGFyYW1zICovCisJKGl3X2hhbmRsZXIpIHA4MDIxMV93ZXh0X2dldF9pd2F1dGgsIC8qIFNJT0NHSVdBVVRICWdldCBhdXRoZW50aWNhdGlvbiBtb2RlIHBhcmFtcyAqLworCisJKGl3X2hhbmRsZXIpIHA4MDIxMXdleHRfc2V0X2VuY29kZWV4dCwgLyogU0lPQ1NJV0VOQ09ERUVYVCAgc2V0IGVuY29kaW5nIHRva2VuICYgbW9kZSAqLworCShpd19oYW5kbGVyKSBwODAyMTF3ZXh0X2dldF9lbmNvZGVleHQsIC8qIFNJT0NHSVdFTkNPREVFWFQgIGdldCBlbmNvZGluZyB0b2tlbiAmIG1vZGUgKi8KKwkoaXdfaGFuZGxlcikgTlVMTCwgLyogU0lPQ1NJV1BNS1NBCVBNS1NBIGNhY2hlIG9wZXJhdGlvbiAqLworI2VuZGlmCit9OworCitzdHJ1Y3QgaXdfaGFuZGxlcl9kZWYgcDgwMjExd2V4dF9oYW5kbGVyX2RlZiA9IHsKKwkubnVtX3N0YW5kYXJkID0gc2l6ZW9mKHA4MDIxMXdleHRfaGFuZGxlcnMpIC8gc2l6ZW9mKGl3X2hhbmRsZXIpLAorCS5udW1fcHJpdmF0ZSA9IDAsCisJLm51bV9wcml2YXRlX2FyZ3MgPSAwLAorICAgICAgICAuc3RhbmRhcmQgPSBwODAyMTF3ZXh0X2hhbmRsZXJzLAorCS5wcml2YXRlID0gTlVMTCwKKwkucHJpdmF0ZV9hcmdzID0gTlVMTCwKKyNpZiBXSVJFTEVTU19FWFQgPiAxNgorCS5nZXRfd2lyZWxlc3Nfc3RhdHMgPSBwODAyMTF3ZXh0X2dldF93aXJlbGVzc19zdGF0cworI2VuZGlmCit9OworCisjZW5kaWYKKworLyogd2lyZWxlc3MgZXh0ZW5zaW9ucycgaW9jdGxzICovCitpbnQgcDgwMjExd2V4dF9zdXBwb3J0X2lvY3RsKG5ldGRldmljZV90ICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKQoreworCXdsYW5kZXZpY2VfdCAqd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWRldi0+cHJpdjsKKworI2lmIFdJUkVMRVNTX0VYVCA8IDEzCisJc3RydWN0IGl3cmVxICppd3IgPSAoc3RydWN0IGl3cmVxKilpZnI7CisjZW5kaWYKKworCXA4MDIxMWl0ZW1fdWludDMyX3QgICAgICAgICAgICAgbWliaXRlbTsKKwlpbnQgZXJyID0gMDsKKworCURCRkVOVEVSOworCisJbWliaXRlbS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKwlpZiAoIHdsYW5kZXYtPm1zZHN0YXRlICE9IFdMQU5fTVNEX1JVTk5JTkcgKSB7CisJCWVyciA9IC1FTk9ERVY7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlXTEFOX0xPR19ERUJVRygxLCAiUmVjZWl2ZWQgd2lyZWxlc3MgZXh0ZW5zaW9uIGlvY3RsICMlZC5cbiIsIGNtZCk7CisKKwlzd2l0Y2ggKGNtZCkgeworI2lmIFdJUkVMRVNTX0VYVCA8IDEzCisJY2FzZSBTSU9DU0lXTkFNRTogIC8qIHVudXNlZCAgKi8KKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJYnJlYWs7CisJY2FzZSBTSU9DR0lXTkFNRTogLyogZ2V0IG5hbWUgPT0gd2lyZWxlc3MgcHJvdG9jb2wgKi8KKyAgICAgICAgICAgICAgICBlcnIgPSBwODAyMTF3ZXh0X2dpd25hbWUoZGV2LCBOVUxMLCAoY2hhciAqKSAmaXdyLT51LCBOVUxMKTsKKwkJYnJlYWs7CisJY2FzZSBTSU9DU0lXTldJRDoKKwljYXNlIFNJT0NHSVdOV0lEOgorCQllcnIgPSAoLUVPUE5PVFNVUFApOworCQlicmVhazsKKwljYXNlIFNJT0NTSVdGUkVROiAvKiBzZXQgY2hhbm5lbCAqLworICAgICAgICAgICAgICAgIGVyciA9IHA4MDIxMXdleHRfc2l3ZnJlcShkZXYsIE5VTEwsICYoaXdyLT51LmZyZXEpLCBOVUxMKTsKKwkJYnJlYWs7CisJY2FzZSBTSU9DR0lXRlJFUTogLyogZ2V0IGNoYW5uZWwgKi8KKyAgICAgICAgICAgICAgICBlcnIgPSBwODAyMTF3ZXh0X2dpd2ZyZXEoZGV2LCBOVUxMLCAmKGl3ci0+dS5mcmVxKSwgTlVMTCk7CisJCWJyZWFrOworCWNhc2UgU0lPQ1NJV1JBTkdFOgorCWNhc2UgU0lPQ1NJV1BSSVY6CisJY2FzZSBTSU9DU0lXQVA6IC8qIHNldCBhY2Nlc3MgcG9pbnQgTUFDIGFkZHJlc3NlcyAoQlNTSUQpICovCisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWJyZWFrOworCisJY2FzZSBTSU9DR0lXQVA6CS8qIGdldCBhY2Nlc3MgcG9pbnQgTUFDIGFkZHJlc3NlcyAoQlNTSUQpICovCisgICAgICAgICAgICAgICAgZXJyID0gcDgwMjExd2V4dF9naXdhcChkZXYsIE5VTEwsICYoaXdyLT51LmFwX2FkZHIpLCBOVUxMKTsKKwkJYnJlYWs7CisKKyNpZiBXSVJFTEVTU19FWFQgPiA4CisJY2FzZSBTSU9DU0lXTU9ERTogLyogc2V0IG9wZXJhdGlvbiBtb2RlICovCisJY2FzZSBTSU9DU0lXRVNTSUQ6IC8qIHNldCBTU0lEIChuZXR3b3JrIG5hbWUpICovCisJY2FzZSBTSU9DU0lXUkFURTogLyogc2V0IGRlZmF1bHQgYml0IHJhdGUgKGJwcykgKi8KKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJYnJlYWs7CisKKwljYXNlIFNJT0NHSVdNT0RFOiAvKiBnZXQgb3BlcmF0aW9uIG1vZGUgKi8KKwkJZXJyID0gcDgwMjExd2V4dF9naXdtb2RlKGRldiwgTlVMTCwgJml3ci0+dS5tb2RlLCBOVUxMKTsKKworCQlicmVhazsKKwljYXNlIFNJT0NHSVdOSUNLTjogLyogZ2V0IG5vZGUgbmFtZS9uaWNrbmFtZSAqLworCWNhc2UgU0lPQ0dJV0VTU0lEOiAvKiBnZXQgU1NJRCAqLworCQlpZihpd3ItPnUuZXNzaWQucG9pbnRlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBzc2lkW0lXX0VTU0lEX01BWF9TSVpFKzFdOworCQkJbWVtc2V0KHNzaWQsIDAsIHNpemVvZihzc2lkKSk7CisKKwkJCWVyciA9IHA4MDIxMXdleHRfZ2l3ZXNzaWQoZGV2LCBOVUxMLCAmaXdyLT51LmVzc2lkLCBzc2lkKTsKKwkJCWlmKGNvcHlfdG9fdXNlcihpd3ItPnUuZXNzaWQucG9pbnRlciwgc3NpZCwgc2l6ZW9mKHNzaWQpKSkKKwkJCQllcnIgPSAoLUVGQVVMVCk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBTSU9DR0lXUkFURToKKyAgICAgICAgICAgICAgICBlcnIgPSBwODAyMTF3ZXh0X2dpd3JhdGUoZGV2LCBOVUxMLCAmaXdyLT51LmJpdHJhdGUsIE5VTEwpOworCQlicmVhazsKKwljYXNlIFNJT0NHSVdSVFM6CisJCWVyciA9IHA4MDIxMXdleHRfZ2l3cnRzKGRldiwgTlVMTCwgJml3ci0+dS5ydHMsIE5VTEwpOworCQlicmVhazsKKwljYXNlIFNJT0NHSVdGUkFHOgorCQllcnIgPSBwODAyMTF3ZXh0X2dpd2ZyYWcoZGV2LCBOVUxMLCAmaXdyLT51LnJ0cywgTlVMTCk7CisJCWJyZWFrOworCWNhc2UgU0lPQ0dJV0VOQ09ERToKKwkJaWYgKCFjYXBhYmxlKENBUF9ORVRfQURNSU4pKQorCQkJZXJyID0gLUVQRVJNOworCQllbHNlIGlmIChpd3ItPnUuZW5jb2RpbmcucG9pbnRlcikgeworCQkJY2hhciBrZXlidWZbTUFYX0tFWUxFTl07CisJCQllcnIgPSBwODAyMTF3ZXh0X2dpd2VuY29kZShkZXYsIE5VTEwsCisJCQkJCQkgICAgICZpd3ItPnUuZW5jb2RpbmcsIGtleWJ1Zik7CisJCQlpZiAoY29weV90b191c2VyKGl3ci0+dS5lbmNvZGluZy5wb2ludGVyLCBrZXlidWYsCisJCQkJCSBpd3ItPnUuZW5jb2RpbmcubGVuZ3RoKSkKKwkJCQllcnIgPSAtRUZBVUxUOworCQl9CisJCWJyZWFrOworCWNhc2UgU0lPQ0dJV0FQTElTVDoKKwljYXNlIFNJT0NTSVdSVFM6CisJY2FzZSBTSU9DU0lXRlJBRzoKKwljYXNlIFNJT0NTSVdTRU5TOgorCWNhc2UgU0lPQ0dJV1NFTlM6CisJY2FzZSBTSU9DU0lXTklDS046IC8qIHNldCBub2RlIG5hbWUvbmlja25hbWUgKi8KKwljYXNlIFNJT0NTSVdFTkNPREU6IC8qIHNldCBlbmNvZGluZyB0b2tlbiAmIG1vZGUgKi8KKwljYXNlIFNJT0NTSVdTUFk6CisJY2FzZSBTSU9DR0lXU1BZOgorCWNhc2UgU0lPQ1NJV1BPV0VSOgorCWNhc2UgU0lPQ0dJV1BPV0VSOgorCWNhc2UgU0lPQ0dJV1BSSVY6CisJCWVyciA9ICgtRU9QTk9UU1VQUCk7CisJCWJyZWFrOworCWNhc2UgU0lPQ0dJV1JBTkdFOgorCQlpZihpd3ItPnUuZGF0YS5wb2ludGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpd19yYW5nZSByYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHA4MDIxMXdleHRfZ2l3cmFuZ2UoZGV2LCBOVUxMLCAmaXdyLT51LmRhdGEsCisJCQkJCQkgIChjaGFyICopICZyYW5nZSk7CisJCQkvKiBQdXNoIHRoYXQgdXAgdG8gdGhlIGNhbGxlciAqLworCQkJaWYgKGNvcHlfdG9fdXNlcihpd3ItPnUuZGF0YS5wb2ludGVyLCAmcmFuZ2UsIHNpemVvZihyYW5nZSkpKQorCQkJCWVyciA9IC1FRkFVTFQ7CisJCX0KKwkJYnJlYWs7CisjZW5kaWYgLyogV0lSRUxFU1NfRVhUID4gOCAqLworI2lmIFdJUkVMRVNTX0VYVCA+IDkKKwljYXNlIFNJT0NTSVdUWFBPVzoKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJYnJlYWs7CisJY2FzZSBTSU9DR0lXVFhQT1c6CisJCWVyciA9IHA4MDIxMXdleHRfZ2l3dHhwb3coZGV2LCBOVUxMLCAmaXdyLT51LnR4cG93ZXIsIE5VTEwpOworCQlicmVhazsKKyNlbmRpZiAvKiBXSVJFTEVTU19FWFQgPiA5ICovCisjaWYgV0lSRUxFU1NfRVhUID4gMTAKKwljYXNlIFNJT0NTSVdSRVRSWToKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJYnJlYWs7CisJY2FzZSBTSU9DR0lXUkVUUlk6CisJCWVyciA9IHA4MDIxMXdleHRfZ2l3cmV0cnkoZGV2LCBOVUxMLCAmaXdyLT51LnJldHJ5LCBOVUxMKTsKKwkJYnJlYWs7CisjZW5kaWYgLyogV0lSRUxFU1NfRVhUID4gMTAgKi8KKworI2VuZGlmIC8qIFdJUkVMRVNTX0VYVCA8PSAxMiAqLworCisJZGVmYXVsdDoKKwkJZXJyID0gKC1FT1BOT1RTVVBQKTsKKwkJYnJlYWs7CisJfQorCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiAoZXJyKTsKK30KKworaW50IHA4MDIxMXdleHRfZXZlbnRfYXNzb2NpYXRlZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGludCBhc3NvYykKK3sKKyAgICAgICAgdW5pb24gaXdyZXFfZGF0YSBkYXRhOworCisgICAgICAgIERCRkVOVEVSOworCisjaWYgV0lSRUxFU1NfRVhUID4gMTMKKyAgICAgICAgLyogU2VuZCB0aGUgYXNzb2NpYXRpb24gc3RhdGUgZmlyc3QgKi8KKyAgICAgICAgZGF0YS5hcF9hZGRyLnNhX2ZhbWlseSA9IEFSUEhSRF9FVEhFUjsKKyAgICAgICAgaWYgKGFzc29jKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KGRhdGEuYXBfYWRkci5zYV9kYXRhLCB3bGFuZGV2LT5ic3NpZCwgV0xBTl9BRERSX0xFTik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KGRhdGEuYXBfYWRkci5zYV9kYXRhLCAwLCBXTEFOX0FERFJfTEVOKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3bGFuX3dleHRfd3JpdGUpCisgICAgICAgICAgICAgICAgd2lyZWxlc3Nfc2VuZF9ldmVudCh3bGFuZGV2LT5uZXRkZXYsIFNJT0NHSVdBUCwgJmRhdGEsIE5VTEwpOworCisgICAgICAgIGlmICghYXNzb2MpIGdvdG8gZG9uZTsKKworICAgICAgICAvLyBYWFggc2VuZCBhc3NvY2lhdGlvbiBkYXRhLCBsaWtlIElFcywgZXRjIGV0Yy4KKyNlbmRpZgorIGRvbmU6CisgICAgICAgIERCRkVYSVQ7CisgICAgICAgIHJldHVybiAwOworfQorCisKKyNlbmRpZiAvKiBjb21wYXRpYmlsaXR5IHRvIHdpcmVsZXNzIGV4dGVuc2lvbnMgKi8KKworCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX2NzLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJfY3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2NlNTY1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX2NzLmMKQEAgLTAsMCArMSwxNDg3IEBACisjZGVmaW5lIFdMQU5fSE9TVElGIFdMQU5fUENNQ0lBCisjaW5jbHVkZSAiaGZhMzg0eC5jIgorI2luY2x1ZGUgInByaXNtMm1nbXQuYyIKKyNpbmNsdWRlICJwcmlzbTJtaWIuYyIKKyNpbmNsdWRlICJwcmlzbTJzdGEuYyIKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw0LDIxKSApCisjaWYgKFdMQU5fQ1BVX0ZBTUlMWSA9PSBXTEFOX0l4ODYpCisjaWZuZGVmIENPTkZJR19JU0EKKyN3YXJuaW5nICJZb3UgbWF5IG5lZWQgdG8gZW5hYmxlIElTQSBzdXBwb3J0IGluIHlvdXIga2VybmVsLiIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTEpICkKK3N0YXRpYyB1X2ludAlpcnFfbWFzayA9IDB4ZGViODsJCS8qIEludGVycnVwdCBtYXNrICovCitzdGF0aWMgaW50CWlycV9saXN0WzRdID0geyAtMSB9OwkJLyogSW50ZXJydXB0IGxpc3QgKi8KKyNlbmRpZgorc3RhdGljIHVfaW50CXByaXNtMl9pZ25vcmV2Y2M9MTsJCS8qIEJvb2xlYW4sIGlmIHNldCwgd2UKKwkJCQkJCSAqIGlnbm9yZSB3aGF0IHRoZSBWY2MKKwkJCQkJCSAqIGlzIHNldCB0byBhbmQgd2hhdCB0aGUgQ0lTCisJCQkJCQkgKiBzYXlzLgorCQkJCQkJICovCittb2R1bGVfcGFyYW0oIHByaXNtMl9pZ25vcmV2Y2MsIGludCwgMDY0NCk7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDExKSApCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsOSkpCitzdGF0aWMgaW50IG51bWxpc3QgPSA0OworbW9kdWxlX3BhcmFtX2FycmF5KGlycV9saXN0LCBpbnQsIG51bWxpc3QsIDA0NDQpOworI2Vsc2UKK21vZHVsZV9wYXJhbV9hcnJheShpcnFfbGlzdCwgaW50LCBOVUxMLCAwNDQ0KTsKKyNlbmRpZgorbW9kdWxlX3BhcmFtKCBpcnFfbWFzaywgaW50LCAwNjQ0KTsKKyNlbmRpZgorCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE1KQorc3RhdGljIGludCBwcmlzbTJfY3Nfc3VzcGVuZChzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldik7CitzdGF0aWMgaW50IHByaXNtMl9jc19yZXN1bWUoc3RydWN0IHBjbWNpYV9kZXZpY2UgKnBkZXYpOworc3RhdGljIHZvaWQgcHJpc20yX2NzX3JlbW92ZShzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldik7CitzdGF0aWMgaW50IHByaXNtMl9jc19wcm9iZShzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldik7CisjZWxzZQorZGV2X2xpbmtfdAkqcHJpc20yc3RhX2F0dGFjaCh2b2lkKTsKK3N0YXRpYyB2b2lkCXByaXNtMnN0YV9kZXRhY2goZGV2X2xpbmtfdCAqbGluayk7CitzdGF0aWMgdm9pZAlwcmlzbTJzdGFfY29uZmlnKGRldl9saW5rX3QgKmxpbmspOworc3RhdGljIHZvaWQJcHJpc20yc3RhX3JlbGVhc2UodV9sb25nIGFyZyk7CitzdGF0aWMgaW50IAlwcmlzbTJzdGFfZXZlbnQgKGV2ZW50X3QgZXZlbnQsIGludCBwcmlvcml0eSwgZXZlbnRfY2FsbGJhY2tfYXJnc190ICphcmdzKTsKKworc3RhdGljIGRldl9saW5rX3QJKmRldl9saXN0ID0gTlVMTDsJLyogaGVhZCBvZiBpbnN0YW5jZSBsaXN0ICovCisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDUsNjgpKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGNzX2Vycm9yCisqCisqIFV0aWxpdHkgZnVuY3Rpb24gdG8gcHJpbnQgY2FyZCBzZXJ2aWNlcyBlcnJvciBtZXNzYWdlcy4KKyoKKyogQXJndW1lbnRzOgorKgloYW5kbGUJY2xpZW50IGhhbmRsZSBpZGVudGlmeWluZyB0aGlzIENTIGNsaWVudAorKglmdW5jCUNTIGZ1bmN0aW9uIG51bWJlciB0aGF0IGdlbmVyYXRlZCB0aGUgZXJyb3IKKyoJcmV0CUNTIGZ1bmN0aW9uIHJldHVybiBjb2RlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBjc19lcnJvcihjbGllbnRfaGFuZGxlX3QgaGFuZGxlLCBpbnQgZnVuYywgaW50IHJldCkKK3sKKyNpZiAoZGVmaW5lZChDU19SRUxFQVNFX0NPREUpICYmIChDU19SRUxFQVNFX0NPREUgPCAweDI5MTEpKQorCUNhcmRTZXJ2aWNlcyhSZXBvcnRFcnJvciwgZGV2X2luZm8sICh2b2lkICopZnVuYywgKHZvaWQgKilyZXQpOworI2Vsc2UKKwllcnJvcl9pbmZvX3QgZXJyID0geyBmdW5jLCByZXQgfTsKKwlwY21jaWFfcmVwb3J0X2Vycm9yKGhhbmRsZSwgJmVycik7CisjZW5kaWYKK30KKyNlbHNlIC8vIGtlcm5lbF92ZXJzaW9uCisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTIpCitzdGF0aWMgc3RydWN0IHBjbWNpYV9kZXZpY2VfaWQgcHJpc20yX2NzX2lkc1tdID0geworCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyKCJJTlRFUlNJTCIsICAiSEZBMzg0eC9JRUVFIiwgMHg3NGM1ZTQwZCwgMHhkYjQ3MmExOCksIC8vIEludGVyc2lsIFBSSVNNMiBSZWZlcmVuY2UgRGVzaWduIDExTWIvcyA4MDIuMTFiIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfTUFORl9DQVJEKDB4MDEzOCwgMHgwMDAyKSwgLy8gQ29tcGFxIFdMMTAwLzIwMCAxMU1iL3MgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX01BTkZfQ0FSRCgweDAyOGEsIDB4MDAwMiksIC8vIENvbXBhcSBpUGFxIEhOVy0xMDAgMTFNYi9zIDgwMi4xMWIgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHgwMjUwLCAweDAwMDIpLCAvLyBTYW1zdW5nIFNXTDIwMDAtTiAxMU1iL3MgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX01BTkZfQ0FSRCgweGQ2MDEsIDB4MDAwMiksIC8vIFotQ29tIFhJMzAwIDExTWIvcyA4MDIuMTFiIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyKCJab29tQWlyIDExTWJwcyBIaWdoIiwgICJSYXRlIHdpcmVsZXNzIE5ldHdvcmtpbmciLCAweDI3M2ZlM2RiLCAweDMyYTFlYWVlKSwgLy8gWm9vbUFpciA0MTAwIDExTWIvcyA4MDIuMTFiIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMygiSW5zdGFudCBXaXJlbGVzcyAiLCAgIiBOZXR3b3JrIFBDIENBUkQiLCAgIlZlcnNpb24gMDEuMDIiLCAweDExZDkwMWFmLCAweDZlOWJkOTI2LCAweDRiNzRiYWEwKSwgLy8gTGlua3N5cyBXUEMxMSAxMU1icHMgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjMoIkFkZHRyb24iLCAgIkFXUC0xMDAgV2lyZWxlc3MgUENNQ0lBIiwgICJWZXJzaW9uIDAxLjAyIiwgMHhlNmVjNTJjZSwgMHg4NjQ5YWYyLCAweDRiNzRiYWEwKSwgLy8gQWRkdHJvbiBBV1AtMTAwIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMygiRCIsICAiTGluayBEV0wtNjUwIDExTWJwcyBXTEFOIENhcmQiLCAgIlZlcnNpb24gMDEuMDIiLCAweDcxYjE4NTg5LCAweGI2ZjFiMGFiLCAweDRiNzRiYWEwKSwgLy8gRC1MaW5rIERXTC02NTAgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzKCJTTUMiLCAgIlNNQzI2MzJXIiwgICJWZXJzaW9uIDAxLjAyIiwgMHhjNGY4YjE4YiwgMHg0NzRhMWYyYSwgMHg0Yjc0YmFhMCksIC8vIFNNQyAyNjMyVyAxMU1icHMgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjM0KCJJbnRlcnNpbCIsICAiUFJJU00gMl81IFBDTUNJQSBBREFQVEVSIiwgICJJU0wzNzMwMFAiLCAgIkV2YWwtUmV2QSIsIDB4NGI4MDFhMTcsIDB4NjM0NWEwYmYsIDB4YzkwNDlhMzksIDB4YzIzYWRjMGUpLCAvLyBCcm9NYXggRnJlZXBvcnQgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkIChQcmlzbSAyLjUpCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzKCJVLlMuIFJvYm90aWNzIiwgICJJRUVFIDgwMi4xMWIgUEMtQ0FSRCIsICAiVmVyc2lvbiAwMS4wMiIsIDB4YzdiOGRmOWQsIDB4MTcwMGQwODcsIDB4NGI3NGJhYTApLCAvLyBVLlMuIFJvYm90aWNzIElFRUUgODAyLjExYiBQQy1DQVJECisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIoIkRpZ2l0YWwgRGF0YSBDb21tdW5pY2F0aW9ucyIsICAiV1BDLTAxMDAiLCAweGZkZDczNDcwLCAweGUwYjZmMTQ2KSwgLy8gTGV2ZWwtT25lIFdQQy0wMTAwCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHgwMjc0LCAweDE2MTIpLCAvLyBCcm9tYXggT0VNIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZCAoUHJpc20gMi41KQorCVBDTUNJQV9ERVZJQ0VfTUFORl9DQVJEKDB4MDI3NCwgMHgxNjEzKSwgLy8gQnJvbWF4IE9FTSAxMU1icHMgODAyLjExYiBXTEFOIENhcmQgKFByaXNtIDMpCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIoImNvcmVnYSBLLksuIiwgICJXaXJlbGVzcyBMQU4gUENDLTExIiwgMHg1MjYxNDQwZiwgMHhhNjQwNTU4NCksIC8vIGNvcmVnYSBLLksuIFdpcmVsZXNzIExBTiBQQ0MtMTEKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMigiY29yZWdhIEsuSy4iLCAgIldpcmVsZXNzIExBTiBQQ0NBLTExIiwgMHg1MjYxNDQwZiwgMHhkZjYxMTVmOSksIC8vIGNvcmVnYSBLLksuIFdpcmVsZXNzIExBTiBQQ0NBLTExCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHhjMDAxLCAweDAwMDgpLCAvLyBDT05URUMgRkxFWFNDQU4vRlgtRERTMTEwLVBDQworCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyKCJQTEFORVgiLCAgIkdlb1dhdmUvR1ctTlMxMTAiLCAweDIwOWY0MGFiLCAweDQ2MjYzMTc4KSwgLy8gUExBTkVYIEdlb1dhdmUvR1ctTlMxMTAKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjMoIk9FTSIsICAiUFJJU00yIElFRUUgODAyLjExIFBDLUNhcmQiLCAgIlZlcnNpb24gMDEuMDIiLCAweGZlYTU0YzkwLCAweDQ4ZjJiZGQ2LCAweDRiNzRiYWEwKSwgLy8gQW1iaWNvbSBXTDExMDAgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzKCJMZUFydGVyeSIsICAiU1lOQ0JZQUlSIDExTWJwcyBXaXJlbGVzcyBMQU4gUEMgQ2FyZCIsICAiVmVyc2lvbiAwMS4wMiIsIDB4N2UzYjMyNmEsIDB4NDk4OTNlOTIsIDB4NGI3NGJhYTApLCAvLyBMZUFydGVyeSBTWU5DQllBSVIgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkCitQQ01DSUFfREVWSUNFX01BTkZfQ0FSRCgweDAxZmYsIDB4MDAwOCksIC8vIEludGVybWVjIE1vYmlsZUxBTiAxMU1icHMgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjMoIk5FVEdFQVIgTUE0MDEgV2lyZWxlc3MgUEMiLCAgIkNhcmQiLCAgIlZlcnNpb24gMDEuMDAiLCAweGEzNzQzNGU5LCAweDk3NjJlOGYxLCAweGE1N2FkYjhjKSwgLy8gTkVUR0VBUiBNQTQwMSAxMU1icHMgODAyLjExIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMzQoIkludGVyc2lsIiwgICJQUklTTSBGcmVlZG9tIFBDTUNJQSBBZGFwdGVyIiwgICJJU0wzNzEwMFAiLCAgIkV2YWwtUmV2QSIsIDB4NGI4MDFhMTcsIDB4ZjIyMmVjMmQsIDB4NjMwZDUyYjIsIDB4YzIzYWRjMGUpLCAvLyBJbnRlcnNpbCBQUklTTSBGcmVlZG9tIDExbWJwcyA4MDIuMTEgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzKCJPVEMiLCAgIldpcmVsZXNzIEFpckVaWSAyNDExLVBDQyBXTEFOIENhcmQiLCAgIlZlcnNpb24gMDEuMDIiLCAweDRhYzQ0Mjg3LCAweDIzNWE2YmVkLCAweDRiNzRiYWEwKSwgLy8gT1RDIFdpcmVsZXNzIEFpckVaWSAyNDExLVBDQyAxMU1icHMgODAyLjExIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMzQoIjgwMi4xMSIsICAiMTFNYnBzIFdpcmVsZXNzIExBTiBDYXJkIiwgICJ2MDhDMSIsICAiIiAgICwgMHhiNjdhNjEwZSwgMHg2NTVhYTdiNywgMHgyNjRiNDUxYSwgMHgwKSwgLy8gRHluYWxpbmsgTDExSERUIDExTWJwcyA4MDIuMTEgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHhjMjUwLCAweDAwMDIpLCAvLyBEeW5hbGluayBMMTFIRFQgMTFNYnBzIDgwMi4xMSBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMigiUFJPWElNIiwgICJSYW5nZUxBTi1EUy9MQU4gUEMgQ0FSRCIsIDB4YzY1MzZhNWUsIDB4M2YzNTc5N2QpLCAvLyBQUk9YSU0gUmFuZ2VMQU4tRFMvTEFOIFBDIENBUkQKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjM0KCJBQ1RJT05URUMiLCAgIlBSSVNNIFdpcmVsZXNzIExBTiBQQyBDYXJkIiwgICIwMzgxIiwgICJSZXZBIiwgMHgzOTMwODlkYSwgMHhhNzFlNjlkNSwgMHg5MDQ3MWZhOSwgMHg1N2E2NjE5NCksIC8vIEFDVElPTlRFQyBQUklTTSBXaXJlbGVzcyBMQU4gUEMgQ2FyZAorCVBDTUNJQV9ERVZJQ0VfTUFORl9DQVJEKDB4MTY2OCwgMHgwMTAxKSwgLy8gQUNUSU9OVEVDIFBSSVNNIFdpcmVsZXNzIExBTiBQQyBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIoIjNDb20iLCAgIjNDUldFNzM3QSBBaXJDb25uZWN0IFdpcmVsZXNzIExBTiBQQyBDYXJkIiwgMHg0MTI0MGU1YiwgMHg1NjAxMGFmMyksIC8vIDNDb20gQWlyQ29ubmVjdCAzQ1JXRTczN0EKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMigiM0NvbSIsICAiM0NSV0U3NzdBIEFpckNvbm5lY3QgV2lyZWxlc3MgTEFOIFBDSSBDYXJkIiAgLCAweDQxMjQwZTViLCAweGFmYzdjMzNlKSwgLy8gM0NvbSBBaXJDb25uZWN0IDNDUldFNzc3QQorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyKCJBU1VTIiwgICI4MDJfMTFiX1BDX0NBUkRfMjUiLCAweDc4ZmMwNmVlLCAweGRiOWFhODQyKSwgLy8gQVNVUyBXTC0xMDAgODAyLjExYiBXTEFOICBQQyBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIoIkFTVVMiLCAgIjgwMl8xMUJfQ0ZfQ0FSRF8yNSIsIDB4NzhmYzA2ZWUsIDB4NDVhNTBjMWUpLCAvLyBBU1VTIFdMLTExMCA4MDIuMTFiIFdMQU4gQ0YgQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyKCJCVUZGQUxPIiwgICJXTEktQ0YtUzExRyIsIDB4MmRlY2VjZTMsIDB4ODIwNjdjMTgpLCAvLyBCVUZGQUxPIFdMSS1DRi1TMTFHIDgwMi4xMWIgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzNCgiVGhlIExpbmtzeXMgR3JvdXAsIEluYy4iLCAiV2lyZWxlc3MgTmV0d29yayBDRiBDYXJkIiwgIklTTDM3MzAwUCIsICJSZXZBIiwgMHhhNWY0NzJjMiwgMHg5YzA1NTk4ZCwgMHhjOTA0OWEzOSwgMHg1N2E2NjE5NCksIC8vIExpbmtzeXMgV0NGMTEgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkIChQcmlzbSAyLjUpCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzNCgiTGlua3N5cyIsICAiV2lyZWxlc3MgQ29tcGFjdEZsYXNoIENhcmQiLCAgIiIsICAiIiwgMHg3MzNjYzgxLCAweGM1MmYzOTUsIDB4MCwgMHgwKSwgLy8gTGlua3N5cyBXQ0YxMiAxMU1icHMgODAyLjExYiBXTEFOIENhcmQgKFByaXNtIDMpCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHgwMjhhLCAweDA2NzMpLCAvLyBMaW5rc3lzIFdDRjEyIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZCAoUHJpc20gMykKKwlQQ01DSUFfREVWSUNFX1BST0RfSUQxMjM0KCJORVRHRUFSIE1BNDAxUkEgV2lyZWxlc3MgUEMiLCAgIkNhcmQiLCAgIklTTDM3MzAwUCIsICAiRXZhbC1SZXZBIiwgMHgzMDY0NjdmLCAweDk3NjJlOGYxLCAweGM5MDQ5YTM5LCAweGMyM2FkYzBlKSwgLy8gTkVUR0VBUiBNQTQwMVJBIDExTWJwcyA4MDIuMTEgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHhkNjAxLCAweDAwMDUpLCAvLyBELUxpbmsgRENGLTY2MFcgIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZAorCVBDTUNJQV9ERVZJQ0VfTUFORl9DQVJEKDB4MDJkMiwgMHgwMDAxKSwgLy8gTWljcm9zb2Z0IFdpcmVsZXNzIE5vdGVib29rIEFkYXB0ZXIgTU4tNTIwCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHgwMDg5LCAweDAwMDIpLCAvLyBBbnlQb2ludChUTSkgV2lyZWxlc3MgSUkgUEMgQ2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMzQoIkQiLCAgIkxpbmsgRFJDLTY1MCAxMU1icHMgV0xBTiBDYXJkIiwgICJWZXJzaW9uIDAxLjAyIiwgICIiICwgMHg3MWIxODU4OSwgMHhmMTQ0ZTNhYywgMHg0Yjc0YmFhMCwgMHgwKSwgLy8gRC1MaW5rIERSQy02NTAgODAyLjExYiBXTEFOIENhcmQKKwlQQ01DSUFfREVWSUNFX01BTkZfQ0FSRCgweDkwMDUsIDB4MDAyMSksIC8vIEFkYXB0ZWMgQVdOLTgwMzAKKwlQQ01DSUFfREVWSUNFX01BTkZfQ0FSRCgweDAwMGIsIDB4NzExMCksIC8vIEQtTGluayBEV0wtNjUwIHJldiBQIDgwMi4xMWIgV0xBTiBjYXJkCisJLy8gUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzNCgiRC1MaW5rIiwgICJEV0wtNjUwIFdpcmVsZXNzIFBDIENhcmQgUmV2UCIsICAiSVNMMzcxMDFQLTEwIiwgICJBMyIsIDB4MWE0MjRhMWMsIDB4NmVhNTc2MzIsIDB4ZGQ5N2EyNmIsIDB4NTZiMjFmNTIpLCAvLyBELUxpbmsgRFdMLTY1MCByZXYgUCA4MDIuMTFiIFdMQU4gY2FyZAorCVBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEyMygiSU5URVJTSUwiLCAgICJJLUdBVEUgMTFNIFBDIENhcmQgLyBQQyBDYXJkIHBsdXMiLCAgIlZlcnNpb24gMDEuMDIiLCAweDc0YzVlNDBkLCAweDgzMDRmZjc3LCAweDRiNzRiYWEwKSwgLy8gSS1HYXRlIDExTSBQQyBDYXJkCisJUENNQ0lBX0RFVklDRV9QUk9EX0lEMTIzNCgiQkVOUSIsICAiQVdMMTAwIFBDTUNJQSBBREFQVEVSIiwgICJJU0wzNzMwMFAiLCAgIkV2YWwtUmV2QSIsIDB4MzVkYWRjNzQsIDB4MWY3ZmVkYiwgMHhjOTA0OWEzOSwgMHhjMjNhZGMwZSksIC8vIGJlblEgQVdMMTAwIDgwMi4xMWIgV0xBTiBDYXJkCisJUENNQ0lBX0RFVklDRV9NQU5GX0NBUkQoMHgwMDBiLCAweDczMDApLCAvLyBiZW5RIEFXTDEwMCA4MDIuMTFiIFdMQU4gQ2FyZAorCS8vIFBDTUNJQV9ERVZJQ0VfUFJPRF9JRDEoIklOVEVSU0lMIiwgMHg3NGM1ZTQwZCksIC8vIEludGVyc2lsIFByaXNtIDIgY2FyZAorCS8vIFBDTUNJQV9ERVZJQ0VfTUFORl9DQVJEKDB4MDE1NiwgMHgwMDAyKSwgLy8gSW50ZXJzaWwgUHJpc20gMiBjYXJkCisKKwlQQ01DSUFfREVWSUNFX05VTEwKK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUocGNtY2lhLCBwcmlzbTJfY3NfaWRzKTsKKyNlbmRpZgorCitzdGF0aWMgc3RydWN0IHBjbWNpYV9kcml2ZXIgcHJpc20yX2NzX2RyaXZlciA9IHsKKwkuZHJ2ID0geworCQkubmFtZSA9ICJwcmlzbTJfY3MiLAorCX0sCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE1KQorCS5zdXNwZW5kID0gcHJpc20yX2NzX3N1c3BlbmQsCisJLnJlc3VtZSA9IHByaXNtMl9jc19yZXN1bWUsCisJLnJlbW92ZSA9IHByaXNtMl9jc19yZW1vdmUsCisJLnByb2JlID0gcHJpc20yX2NzX3Byb2JlLAorCS5pZF90YWJsZSA9IHByaXNtMl9jc19pZHMsCisjZWxzZQorCS5hdHRhY2ggPSBwcmlzbTJzdGFfYXR0YWNoLAorCS5kZXRhY2ggPSBwcmlzbTJzdGFfZGV0YWNoLAorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxMikKKwkuaWRfdGFibGUgPSBwcmlzbTJfY3NfaWRzLAorCS5ldmVudCA9ICBwcmlzbTJzdGFfZXZlbnQsCisjZW5kaWYgLy8gPiAyLjYuMTIKKyNlbmRpZiAvLyA8PSAyLjYuMTUKK307CisjZW5kaWYgLyoga2VybmVsX3ZlcnNpb24gKi8KKworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNSkKKyNkZWZpbmUgQ1NfQ0hFQ0soZm4sIHJldCkgXAorZG8geyBsYXN0X2ZuID0gKGZuKTsgaWYgKChsYXN0X3JldCA9IChyZXQpKSAhPSAwKSBnb3RvIGNzX2ZhaWxlZDsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBDRkdfQ0hFQ0soZm4sIHJldGYpIFwKK2RvIHsgaW50IHJldCA9IChyZXRmKTsgXAoraWYgKHJldCAhPSAwKSB7IFwKKyAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwgIkNhcmRTZXJ2aWNlcygiICNmbiAiKSByZXR1cm5lZCAlZFxuIiwgcmV0KTsgXAorICAgICAgICBjc19lcnJvcihwZGV2LCBmbiwgcmV0KTsgXAorICAgICAgICBnb3RvIG5leHRfZW50cnk7IFwKK30gXAorfSB3aGlsZSAoMCkKKworc3RhdGljIHZvaWQgcHJpc20yX2NzX3JlbW92ZShzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgd2xhbmRldmljZSAgKndsYW5kZXY7CisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTcpCisgICAgICAgIGRldl9saW5rX3QgKmxpbmsgPSBkZXZfdG9faW5zdGFuY2UocGRldik7CisjZW5kaWYKKworCURCRkVOVEVSOworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXdsYW5kZXYgPSBwZGV2LT5wcml2OworI2Vsc2UKKwl3bGFuZGV2ID0gbGluay0+cHJpdjsKKyNlbmRpZgorCisJaWYgKHdsYW5kZXYpIHsKKwkJcDgwMjExbmV0ZGV2X2h3cmVtb3ZlZCh3bGFuZGV2KTsKKwkJdW5yZWdpc3Rlcl93bGFuZGV2KHdsYW5kZXYpOworCQl3bGFuX3Vuc2V0dXAod2xhbmRldik7CisJCWlmICh3bGFuZGV2LT5wcml2KSB7CisJCQloZmEzODR4X3QgKmh3ID0gd2xhbmRldi0+cHJpdjsKKwkJCXdsYW5kZXYtPnByaXYgPSBOVUxMOworCQkJaWYgKGh3KSB7CisJCQkJaGZhMzg0eF9kZXN0cm95KGh3KTsKKwkJCQlrZnJlZShodyk7CisJCQl9CisJCX0KKwkJa2ZyZWUod2xhbmRldik7CisJfQorCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXBkZXYtPnByaXYgPSBOVUxMOworICAgICAgICBwY21jaWFfZGlzYWJsZV9kZXZpY2UocGRldik7CisjZWxzZQorICAgICAgICBpZiAobGluay0+c3RhdGUgJiBERVZfQ09ORklHKSB7CisJICAgICAgICBpZiAobGluay0+d2luKQorCQkJcGNtY2lhX3JlbGVhc2Vfd2luZG93KGxpbmstPndpbik7CisJCXBjbWNpYV9yZWxlYXNlX2NvbmZpZ3VyYXRpb24obGluay0+aGFuZGxlKTsKKwkJaWYgKGxpbmstPmlvLk51bVBvcnRzMSkKKwkJCXBjbWNpYV9yZWxlYXNlX2lvKGxpbmstPmhhbmRsZSwgJmxpbmstPmlvKTsKKwkJaWYgKGxpbmstPmlycS5Bc3NpZ25lZElSUSkKKwkJCXBjbWNpYV9yZWxlYXNlX2lycShsaW5rLT5oYW5kbGUsICZsaW5rLT5pcnEpOworCisJCWxpbmstPnN0YXRlICY9IH5ERVZfQ09ORklHOworCX0KKworCWxpbmstPnByaXYgPSBOVUxMOworCWtmcmVlKGxpbmspOworI2VuZGlmCisKKwlEQkZFWElUOworCXJldHVybjsKK30KKworc3RhdGljIGludCBwcmlzbTJfY3Nfc3VzcGVuZChzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgd2xhbmRldmljZSAgKndsYW5kZXY7CisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTcpCisgICAgICAgIGRldl9saW5rX3QgKmxpbmsgPSBkZXZfdG9faW5zdGFuY2UocGRldik7CisjZW5kaWYKKworCURCRkVOVEVSOworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXdsYW5kZXYgPSBwZGV2LT5wcml2OworCXByaXNtMnN0YV9pZnN0YXRlKHdsYW5kZXYsIFA4MDIxMUVOVU1faWZzdGF0ZV9kaXNhYmxlKTsKKyNlbHNlCisJd2xhbmRldiA9IGxpbmstPnByaXY7CisKKyAgICAgICAgbGluay0+c3RhdGUgfD0gREVWX1NVU1BFTkQ7CisgICAgICAgIGlmIChsaW5rLT5zdGF0ZSAmIERFVl9DT05GSUcpIHsKKwkJcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCQlwY21jaWFfcmVsZWFzZV9jb25maWd1cmF0aW9uKGxpbmstPmhhbmRsZSk7CisJfQorI2VuZGlmCisKKwlEQkZFWElUOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJpc20yX2NzX3Jlc3VtZShzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgd2xhbmRldmljZSAgKndsYW5kZXY7CisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTcpCisgICAgICAgIGRldl9saW5rX3QgKmxpbmsgPSBkZXZfdG9faW5zdGFuY2UocGRldik7CisjZW5kaWYKKworCURCRkVOVEVSOworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXdsYW5kZXYgPSBwZGV2LT5wcml2OworCS8vIFhYWCBkbyBzb21ldGhpbmcgaGVyZT8KKyNlbHNlCisJd2xhbmRldiA9IGxpbmstPnByaXY7CisgICAgICAgIGxpbmstPnN0YXRlICY9IH5ERVZfU1VTUEVORDsKKyAgICAgICAgaWYgKGxpbmstPnN0YXRlICYgREVWX0NPTkZJRykgeworICAgICAgICAgICAgICAgIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24obGluay0+aGFuZGxlLCAmbGluay0+Y29uZik7CisJCS8vIFhYWCBkbyBzb21ldGhpbmcgaGVyZT8KKwl9CisjZW5kaWYKKworCisJREJGRVhJVDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByaXNtMl9jc19wcm9iZShzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcGRldikKK3sKKwlpbnQgcnZhbCA9IDA7CisJc3RydWN0IHdsYW5kZXZpY2UgKndsYW5kZXYgPSBOVUxMOworCWhmYTM4NHhfdCAqaHcgPSBOVUxMOworCisgICAgICAgIGNvbmZpZ19pbmZvX3Qgc29ja2V0Y29uZjsKKyAgICAgICAgY2lzcGFyc2VfdCAqcGFyc2UgPSBOVUxMOworCXR1cGxlX3QgdHVwbGU7CisJdWludDhfdAlidWZbNjRdOworICAgICAgICBpbnQgbGFzdF9mbiwgbGFzdF9yZXQ7CisgICAgICAgIGNpc3RwbF9jZnRhYmxlX2VudHJ5X3QgZGZsdCA9IHsgMCB9OworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDE3KQorCWRldl9saW5rX3QgKmxpbms7CisjZW5kaWYKKworCURCRkVOVEVSOworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCS8qIFNldCB1cCBpbnRlcnJ1cHQgdHlwZSAqLworICAgICAgICBwZGV2LT5jb25mLkludFR5cGUgPSBJTlRfTUVNT1JZX0FORF9JTzsKKyNlbHNlCisgICAgICAgIGxpbmsgPSBrbWFsbG9jKHNpemVvZihkZXZfbGlua190KSwgR0ZQX0tFUk5FTCk7CisgICAgICAgIGlmIChsaW5rID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIG1lbXNldChsaW5rLCAwLCBzaXplb2YoZGV2X2xpbmtfdCkpOworCisgICAgICAgIGxpbmstPmNvbmYuVmNjID0gMzM7CisgICAgICAgIGxpbmstPmNvbmYuSW50VHlwZSA9IElOVF9NRU1PUllfQU5EX0lPOworCisgICAgICAgIGxpbmstPmhhbmRsZSA9IHBkZXY7CisgICAgICAgIHBkZXYtPmluc3RhbmNlID0gbGluazsKKyAgICAgICAgbGluay0+c3RhdGUgfD0gREVWX1BSRVNFTlQgfCBERVZfQ09ORklHX1BFTkRJTkc7CisKKyNlbmRpZgorCisJLy8gVkNDIGNyYXA/CisgICAgICAgIHBhcnNlID0ga21hbGxvYyhzaXplb2YoY2lzcGFyc2VfdCksIEdGUF9LRVJORUwpOworCisJd2xhbmRldiA9IGNyZWF0ZV93bGFuKCk7CisJaWYgKCF3bGFuZGV2IHx8ICFwYXJzZSkgeworCQlXTEFOX0xPR19FUlJPUigiJXM6IE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4iLCBkZXZfaW5mbyk7CisJCXJ2YWwgPSAtRUlPOworCQlnb3RvIGZhaWxlZDsKKwl9CisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJaWYgKCB3bGFuX3NldHVwKHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogd2xhbl9zZXR1cCgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcnZhbCA9IC1FSU87CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGh3IHN0cnVjdCBmb3Igbm93ICovCisJaGZhMzg0eF9jcmVhdGUoaHcsIDAsIDAsIE5VTEwpOworCWh3LT53bGFuZGV2ID0gd2xhbmRldjsKKworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKwlody0+cGRldiA9IHBkZXY7CisJcGRldi0+cHJpdiA9IHdsYW5kZXY7CisjZWxzZQorCWh3LT5saW5rID0gbGluazsKKwlsaW5rLT5wcml2ID0gd2xhbmRldjsKKyNlbmRpZgorCisgICAgICAgIHR1cGxlLkRlc2lyZWRUdXBsZSA9IENJU1RQTF9DT05GSUc7CisgICAgICAgIHR1cGxlLkF0dHJpYnV0ZXMgPSAwOworICAgICAgICB0dXBsZS5UdXBsZURhdGEgPSBidWY7CisgICAgICAgIHR1cGxlLlR1cGxlRGF0YU1heCA9IHNpemVvZihidWYpOworICAgICAgICB0dXBsZS5UdXBsZU9mZnNldCA9IDA7CisgICAgICAgIENTX0NIRUNLKEdldEZpcnN0VHVwbGUsIHBjbWNpYV9nZXRfZmlyc3RfdHVwbGUocGRldiwgJnR1cGxlKSk7CisgICAgICAgIENTX0NIRUNLKEdldFR1cGxlRGF0YSwgcGNtY2lhX2dldF90dXBsZV9kYXRhKHBkZXYsICZ0dXBsZSkpOworICAgICAgICBDU19DSEVDSyhQYXJzZVR1cGxlLCBwY21jaWFfcGFyc2VfdHVwbGUocGRldiwgJnR1cGxlLCBwYXJzZSkpOworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKyAgICAgICAgcGRldi0+Y29uZi5Db25maWdCYXNlID0gcGFyc2UtPmNvbmZpZy5iYXNlOworICAgICAgICBwZGV2LT5jb25mLlByZXNlbnQgPSBwYXJzZS0+Y29uZmlnLnJtYXNrWzBdOworI2Vsc2UKKyAgICAgICAgbGluay0+Y29uZi5Db25maWdCYXNlID0gcGFyc2UtPmNvbmZpZy5iYXNlOworICAgICAgICBsaW5rLT5jb25mLlByZXNlbnQgPSBwYXJzZS0+Y29uZmlnLnJtYXNrWzBdOworCisJbGluay0+Y29uZi5WY2MgPSBzb2NrZXRjb25mLlZjYzsKKyNlbmRpZgorICAgICAgICBDU19DSEVDSyhHZXRDb25maWd1cmF0aW9uSW5mbywKKyAgICAgICAgICAgICAgICAgcGNtY2lhX2dldF9jb25maWd1cmF0aW9uX2luZm8ocGRldiwgJnNvY2tldGNvbmYpKTsKKworCXR1cGxlLkRlc2lyZWRUdXBsZSA9IENJU1RQTF9DRlRBQkxFX0VOVFJZOworCUNTX0NIRUNLKEdldEZpcnN0VHVwbGUsIHBjbWNpYV9nZXRfZmlyc3RfdHVwbGUocGRldiwgJnR1cGxlKSk7CisgICAgICAgIGZvciAoOzspIHsKKwkJY2lzdHBsX2NmdGFibGVfZW50cnlfdCAqY2ZnID0gJihwYXJzZS0+Y2Z0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgQ0ZHX0NIRUNLKEdldFR1cGxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbWNpYV9nZXRfdHVwbGVfZGF0YShwZGV2LCAmdHVwbGUpKTsKKyAgICAgICAgICAgICAgICBDRkdfQ0hFQ0soUGFyc2VUdXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbWNpYV9wYXJzZV90dXBsZShwZGV2LCAmdHVwbGUsIHBhcnNlKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY2ZnLT5mbGFncyAmIENJU1RQTF9DRlRBQkxFX0RFRkFVTFQpCisgICAgICAgICAgICAgICAgICAgICAgICBkZmx0ID0gKmNmZzsKKyAgICAgICAgICAgICAgICBpZiAoY2ZnLT5pbmRleCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2VudHJ5OworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKyAgICAgICAgICAgICAgICBwZGV2LT5jb25mLkNvbmZpZ0luZGV4ID0gY2ZnLT5pbmRleDsKKyNlbHNlCisgICAgICAgICAgICAgICAgbGluay0+Y29uZi5Db25maWdJbmRleCA9IGNmZy0+aW5kZXg7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIC8qIERvZXMgdGhpcyBjYXJkIG5lZWQgYXVkaW8gb3V0cHV0PyAqLworICAgICAgICAgICAgICAgIGlmIChjZmctPmZsYWdzICYgQ0lTVFBMX0NGVEFCTEVfQVVESU8pIHsKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisgICAgICAgICAgICAgICAgICAgICAgICBwZGV2LT5jb25mLkF0dHJpYnV0ZXMgfD0gQ09ORl9FTkFCTEVfU1BLUjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBkZXYtPmNvbmYuU3RhdHVzID0gQ0NTUl9BVURJT19FTkE7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbGluay0+Y29uZi5BdHRyaWJ1dGVzIHw9IENPTkZfRU5BQkxFX1NQS1I7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLT5jb25mLlN0YXR1cyA9IENDU1JfQVVESU9fRU5BOworI2VuZGlmCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogVXNlIHBvd2VyIHNldHRpbmdzIGZvciBWY2MgYW5kIFZwcCBpZiBwcmVzZW50ICovCisgICAgICAgICAgICAgICAgLyogIE5vdGUgdGhhdCB0aGUgQ0lTIHZhbHVlcyBuZWVkIHRvIGJlIHJlc2NhbGVkICovCisgICAgICAgICAgICAgICAgaWYgKGNmZy0+dmNjLnByZXNlbnQgJiAoMSA8PCBDSVNUUExfUE9XRVJfVk5PTSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb2NrZXRjb25mLlZjYyAhPSBjZmctPnZjYy5wYXJhbVtDSVNUUExfUE9XRVJfVk5PTV0gLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwICYmICFwcmlzbTJfaWdub3JldmNjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdMQU5fTE9HX0RFQlVHKDEsICIgIFZjYyBtaXNtYXRjaCAtIHNraXBwaW5nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0aGlzIGVudHJ5XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2VudHJ5OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGZsdC52Y2MucHJlc2VudCAmICgxIDw8IENJU1RQTF9QT1dFUl9WTk9NKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvY2tldGNvbmYuVmNjICE9IGRmbHQudmNjLnBhcmFtW0NJU1RQTF9QT1dFUl9WTk9NXSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAgJiYgIXByaXNtMl9pZ25vcmV2Y2MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwgIiAgVmNjIChkZWZhdWx0KSBtaXNtYXRjaCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSBza2lwcGluZyB0aGlzIGVudHJ5XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2VudHJ5OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjZmctPnZwcDEucHJlc2VudCAmICgxIDw8IENJU1RQTF9QT1dFUl9WTk9NKSkgeworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKyAgICAgICAgICAgICAgICAgICAgICAgIHBkZXYtPmNvbmYuVnBwID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLT52cHAxLnBhcmFtW0NJU1RQTF9QT1dFUl9WTk9NXSAvIDEwMDAwOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmstPmNvbmYuVnBwMSA9IGxpbmstPmNvbmYuVnBwMiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZy0+dnBwMS5wYXJhbVtDSVNUUExfUE9XRVJfVk5PTV0gLyAxMDAwMDsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGZsdC52cHAxLnByZXNlbnQgJiAoMSA8PCBDSVNUUExfUE9XRVJfVk5PTSkpIHsKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisgICAgICAgICAgICAgICAgICAgICAgICBwZGV2LT5jb25mLlZwcCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbHQudnBwMS5wYXJhbVtDSVNUUExfUE9XRVJfVk5PTV0gLyAxMDAwMDsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLT5jb25mLlZwcDEgPSBsaW5rLT5jb25mLlZwcDIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmx0LnZwcDEucGFyYW1bQ0lTVFBMX1BPV0VSX1ZOT01dIC8gMTAwMDA7CisjZW5kaWYKKwkJfQorCisJCS8qIERvIHdlIG5lZWQgdG8gYWxsb2NhdGUgYW4gaW50ZXJydXB0PyAqLworCQkvKiBIQUNLOiBkdWUgdG8gYSBiYWQgQ0lTLi4uLndlIEFMV0FZUyBuZWVkIGFuIGludGVycnVwdCAqLworCQkvKiBpZiAoY2ZnLT5pcnEuSVJRSW5mbzEgfHwgZGZsdC5pcnEuSVJRSW5mbzEpICovCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCQlwZGV2LT5jb25mLkF0dHJpYnV0ZXMgfD0gQ09ORl9FTkFCTEVfSVJROworI2Vsc2UKKwkJbGluay0+Y29uZi5BdHRyaWJ1dGVzIHw9IENPTkZfRU5BQkxFX0lSUTsKKyNlbmRpZgorCisJCS8qIElPIHdpbmRvdyBzZXR0aW5ncyAqLworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKwkJcGRldi0+aW8uTnVtUG9ydHMxID0gcGRldi0+aW8uTnVtUG9ydHMyID0gMDsKKwkJaWYgKChjZmctPmlvLm53aW4gPiAwKSB8fCAoZGZsdC5pby5ud2luID4gMCkpIHsKKwkJCWNpc3RwbF9pb190ICppbyA9IChjZmctPmlvLm53aW4pID8gJmNmZy0+aW8gOiAmZGZsdC5pbzsKKwkJCXBkZXYtPmlvLkF0dHJpYnV0ZXMxID0gSU9fREFUQV9QQVRIX1dJRFRIX0FVVE87CisJCQlpZiAoIShpby0+ZmxhZ3MgJiBDSVNUUExfSU9fOEJJVCkpCisJCQkJcGRldi0+aW8uQXR0cmlidXRlczEgPSBJT19EQVRBX1BBVEhfV0lEVEhfMTY7CisJCQlpZiAoIShpby0+ZmxhZ3MgJiBDSVNUUExfSU9fMTZCSVQpKQorCQkJCXBkZXYtPmlvLkF0dHJpYnV0ZXMxID0gSU9fREFUQV9QQVRIX1dJRFRIXzg7CisJCQlwZGV2LT5pby5CYXNlUG9ydDEgPSBpby0+d2luWzBdLmJhc2U7CisJCQlpZiAgKCBwZGV2LT5pby5CYXNlUG9ydDEgIT0gMCApIHsKKwkJCQlXTEFOX0xPR19XQVJOSU5HKAorCQkJCSJCcmFpbiBkYW1hZ2VkIENJUzogaGFyZCBjb2RlZCBpb2Jhc2U9IgorCQkJCSIweCV4LCB0cnkgbGV0dGluZyBwY21jaWFfY3MgZGVjaWRlLi4uXG4iLAorCQkJCXBkZXYtPmlvLkJhc2VQb3J0MSApOworCQkJCXBkZXYtPmlvLkJhc2VQb3J0MSA9IDA7CisJCQl9CisJCQlwZGV2LT5pby5OdW1Qb3J0czEgPSBpby0+d2luWzBdLmxlbjsKKwkJCWlmIChpby0+bndpbiA+IDEpIHsKKwkJCQlwZGV2LT5pby5BdHRyaWJ1dGVzMiA9IHBkZXYtPmlvLkF0dHJpYnV0ZXMxOworCQkJCXBkZXYtPmlvLkJhc2VQb3J0MiA9IGlvLT53aW5bMV0uYmFzZTsKKwkJCQlwZGV2LT5pby5OdW1Qb3J0czIgPSBpby0+d2luWzFdLmxlbjsKKwkJCX0KKwkJfQorCQkvKiBUaGlzIHJlc2VydmVzIElPIHNwYWNlIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGVuYWJsZSBpdCAqLworCQlDRkdfQ0hFQ0soUmVxdWVzdElPLCBwY21jaWFfcmVxdWVzdF9pbyhwZGV2LCAmcGRldi0+aW8pKTsKKyNlbHNlCisJCWxpbmstPmlvLk51bVBvcnRzMSA9IGxpbmstPmlvLk51bVBvcnRzMiA9IDA7CisJCWlmICgoY2ZnLT5pby5ud2luID4gMCkgfHwgKGRmbHQuaW8ubndpbiA+IDApKSB7CisJCQljaXN0cGxfaW9fdCAqaW8gPSAoY2ZnLT5pby5ud2luKSA/ICZjZmctPmlvIDogJmRmbHQuaW87CisJCQlsaW5rLT5pby5BdHRyaWJ1dGVzMSA9IElPX0RBVEFfUEFUSF9XSURUSF9BVVRPOworCQkJaWYgKCEoaW8tPmZsYWdzICYgQ0lTVFBMX0lPXzhCSVQpKQorCQkJCWxpbmstPmlvLkF0dHJpYnV0ZXMxID0gSU9fREFUQV9QQVRIX1dJRFRIXzE2OworCQkJaWYgKCEoaW8tPmZsYWdzICYgQ0lTVFBMX0lPXzE2QklUKSkKKwkJCQlsaW5rLT5pby5BdHRyaWJ1dGVzMSA9IElPX0RBVEFfUEFUSF9XSURUSF84OworCQkJbGluay0+aW8uQmFzZVBvcnQxID0gaW8tPndpblswXS5iYXNlOworCQkJaWYgICggbGluay0+aW8uQmFzZVBvcnQxICE9IDAgKSB7CisJCQkJV0xBTl9MT0dfV0FSTklORygKKwkJCQkiQnJhaW4gZGFtYWdlZCBDSVM6IGhhcmQgY29kZWQgaW9iYXNlPSIKKwkJCQkiMHgleCwgdHJ5IGxldHRpbmcgcGNtY2lhX2NzIGRlY2lkZS4uLlxuIiwKKwkJCQlsaW5rLT5pby5CYXNlUG9ydDEgKTsKKwkJCQlsaW5rLT5pby5CYXNlUG9ydDEgPSAwOworCQkJfQorCQkJbGluay0+aW8uTnVtUG9ydHMxID0gaW8tPndpblswXS5sZW47CisJCQlpZiAoaW8tPm53aW4gPiAxKSB7CisJCQkJbGluay0+aW8uQXR0cmlidXRlczIgPSBsaW5rLT5pby5BdHRyaWJ1dGVzMTsKKwkJCQlsaW5rLT5pby5CYXNlUG9ydDIgPSBpby0+d2luWzFdLmJhc2U7CisJCQkJbGluay0+aW8uTnVtUG9ydHMyID0gaW8tPndpblsxXS5sZW47CisJCQl9CisJCX0KKwkJLyogVGhpcyByZXNlcnZlcyBJTyBzcGFjZSBidXQgZG9lc24ndCBhY3R1YWxseSBlbmFibGUgaXQgKi8KKwkJQ0ZHX0NIRUNLKFJlcXVlc3RJTywgcGNtY2lhX3JlcXVlc3RfaW8ocGRldiwgJmxpbmstPmlvKSk7CisjZW5kaWYKKwkJLyogSWYgd2UgZ290IHRoaXMgZmFyLCB3ZSdyZSBjb29sISAqLworCQlicmVhazsKKworCW5leHRfZW50cnk6CisJCWlmIChjZmctPmZsYWdzICYgQ0lTVFBMX0NGVEFCTEVfREVGQVVMVCkKKwkJCWRmbHQgPSAqY2ZnOworCQlDU19DSEVDSyhHZXROZXh0VHVwbGUsIHBjbWNpYV9nZXRfbmV4dF90dXBsZShwZGV2LCAmdHVwbGUpKTsKKworCX0KKworCS8qIExldCBwY21jaWEga25vdyB0aGUgZGV2aWNlIG5hbWUgKi8KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisJcGRldi0+ZGV2X25vZGUgPSAmaHctPm5vZGU7CisjZWxzZQorCWxpbmstPmRldiA9ICZody0+bm9kZTsKKyNlbmRpZgorCisJLyogUmVnaXN0ZXIgdGhlIG5ldHdvcmsgZGV2aWNlIGFuZCBnZXQgYXNzaWduZWQgYSBuYW1lICovCisJU0VUX01PRFVMRV9PV05FUih3bGFuZGV2LT5uZXRkZXYpOworCVNFVF9ORVRERVZfREVWKHdsYW5kZXYtPm5ldGRldiwgICZoYW5kbGVfdG9fZGV2KHBkZXYpKTsKKwlpZiAocmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KSAhPSAwKSB7CisJCVdMQU5fTE9HX05PVElDRSgicHJpc20yc3RhX2NzOiByZWdpc3Rlcl93bGFuZGV2KCkgZmFpbGVkLlxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCXN0cmNweShody0+bm9kZS5kZXZfbmFtZSwgd2xhbmRldi0+bmFtZSk7CisKKwkvKiBBbGxvY2F0ZSBhbiBpbnRlcnJ1cHQgbGluZS4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFzc2lnbiBhICovCisJLyogaGFuZGxlciB0byB0aGUgaW50ZXJydXB0LCB1bmxlc3MgdGhlICdIYW5kbGVyJyBtZW1iZXIgb2YgdGhlICovCisJLyogaXJxIHN0cnVjdHVyZSBpcyBpbml0aWFsaXplZC4gKi8KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisJaWYgKHBkZXYtPmNvbmYuQXR0cmlidXRlcyAmIENPTkZfRU5BQkxFX0lSUSkgeworCQlwZGV2LT5pcnEuSVJRSW5mbzEgPSBJUlFfTEVWRUxfSUQ7CisJCXBkZXYtPmlycS5BdHRyaWJ1dGVzID0gSVJRX1RZUEVfRVhDTFVTSVZFIHwgSVJRX0hBTkRMRV9QUkVTRU5UOworCQlwZGV2LT5pcnEuSGFuZGxlciA9IGhmYTM4NHhfaW50ZXJydXB0OworCQlwZGV2LT5pcnEuSW5zdGFuY2UgPSB3bGFuZGV2OworCQlDU19DSEVDSyhSZXF1ZXN0SVJRLCBwY21jaWFfcmVxdWVzdF9pcnEocGRldiwgJnBkZXYtPmlycSkpOworCX0KKyNlbHNlCisJaWYgKGxpbmstPmNvbmYuQXR0cmlidXRlcyAmIENPTkZfRU5BQkxFX0lSUSkgeworCQlsaW5rLT5pcnEuSVJRSW5mbzEgPSBJUlFfTEVWRUxfSUQ7CisJCWxpbmstPmlycS5BdHRyaWJ1dGVzID0gSVJRX1RZUEVfRVhDTFVTSVZFIHwgSVJRX0hBTkRMRV9QUkVTRU5UOworCQlsaW5rLT5pcnEuSGFuZGxlciA9IGhmYTM4NHhfaW50ZXJydXB0OworCQlsaW5rLT5pcnEuSW5zdGFuY2UgPSB3bGFuZGV2OworCQlDU19DSEVDSyhSZXF1ZXN0SVJRLCBwY21jaWFfcmVxdWVzdF9pcnEocGRldiwgJmxpbmstPmlycSkpOworCX0KKyNlbmRpZgorCisJLyogVGhpcyBhY3R1YWxseSBjb25maWd1cmVzIHRoZSBQQ01DSUEgc29ja2V0IC0tIHNldHRpbmcgdXAgKi8KKwkvKiB0aGUgSS9PIHdpbmRvd3MgYW5kIHRoZSBpbnRlcnJ1cHQgbWFwcGluZywgYW5kIHB1dHRpbmcgdGhlICovCisJLyogY2FyZCBhbmQgaG9zdCBpbnRlcmZhY2UgaW50byAiTWVtb3J5IGFuZCBJTyIgbW9kZS4gKi8KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisJQ1NfQ0hFQ0soUmVxdWVzdENvbmZpZ3VyYXRpb24sIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24ocGRldiwgJnBkZXYtPmNvbmYpKTsKKyNlbHNlCisJQ1NfQ0hFQ0soUmVxdWVzdENvbmZpZ3VyYXRpb24sIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24ocGRldiwgJmxpbmstPmNvbmYpKTsKKyNlbmRpZgorCisJLyogRmlsbCB0aGUgbmV0ZGV2aWNlIHdpdGggdGhpcyBpbmZvICovCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXdsYW5kZXYtPm5ldGRldi0+aXJxID0gcGRldi0+aXJxLkFzc2lnbmVkSVJROworCXdsYW5kZXYtPm5ldGRldi0+YmFzZV9hZGRyID0gcGRldi0+aW8uQmFzZVBvcnQxOworI2Vsc2UKKwl3bGFuZGV2LT5uZXRkZXYtPmlycSA9IGxpbmstPmlycS5Bc3NpZ25lZElSUTsKKwl3bGFuZGV2LT5uZXRkZXYtPmJhc2VfYWRkciA9IGxpbmstPmlvLkJhc2VQb3J0MTsKKyNlbmRpZgorCisJLyogQW5kIHRoZSByZXN0IG9mIHRoZSBodyBzdHJ1Y3R1cmUgKi8KKwlody0+aXJxID0gd2xhbmRldi0+bmV0ZGV2LT5pcnE7CisJaHctPmlvYmFzZSA9IHdsYW5kZXYtPm5ldGRldi0+YmFzZV9hZGRyOworCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDE3KQorCWxpbmstPnN0YXRlIHw9IERFVl9DT05GSUc7CisJbGluay0+c3RhdGUgJj0gfkRFVl9DT05GSUdfUEVORElORzsKKyNlbmRpZgorCisJLyogQW5kIG5vdyB3ZSdyZSBkb25lISAqLworCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdQUkVTRU5UOworCisJZ290byBkb25lOworCisgY3NfZmFpbGVkOgorICAgICAgICBjc19lcnJvcihwZGV2LCBsYXN0X2ZuLCBsYXN0X3JldCk7CisKK2ZhaWxlZDoKKwkvLyB3bGFuZGV2LCBodywgZXRjIGV0Yy4uCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCXBkZXYtPnByaXYgPSBOVUxMOworI2Vsc2UKKwlwZGV2LT5pbnN0YW5jZSA9IE5VTEw7CisJaWYgKGxpbmspIHsKKwkJbGluay0+cHJpdiA9IE5VTEw7CisJCWtmcmVlKGxpbmspOworCX0KKyNlbmRpZgorCWlmICh3bGFuZGV2KSB7CisJCXdsYW5fdW5zZXR1cCh3bGFuZGV2KTsKKwkJaWYgKHdsYW5kZXYtPnByaXYpIHsKKwkJCWh3ID0gd2xhbmRldi0+cHJpdjsKKwkJCXdsYW5kZXYtPnByaXYgPSBOVUxMOworCQkJaWYgKGh3KSB7CisJCQkJaGZhMzg0eF9kZXN0cm95KGh3KTsKKwkJCQlrZnJlZShodyk7CisJCQl9CisJCX0KKwkJa2ZyZWUod2xhbmRldik7CisJfQorCitkb25lOgorCWlmIChwYXJzZSkga2ZyZWUocGFyc2UpOworCisJREJGRVhJVDsKKwlyZXR1cm4gcnZhbDsKK30KKyNlbHNlICAvLyA8PSAyLjYuMTUKKyNkZWZpbmUgQ1NfQ0hFQ0soZm4sIHJldCkgXAorZG8geyBsYXN0X2ZuID0gKGZuKTsgaWYgKChsYXN0X3JldCA9IChyZXQpKSAhPSAwKSBnb3RvIGNzX2ZhaWxlZDsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBDRkdfQ0hFQ0soZm4sIHJldGYpIFwKK2RvIHsgaW50IHJldCA9IChyZXRmKTsgXAoraWYgKHJldCAhPSAwKSB7IFwKKyAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwgIkNhcmRTZXJ2aWNlcygiICNmbiAiKSByZXR1cm5lZCAlZFxuIiwgcmV0KTsgXAorICAgICAgICBjc19lcnJvcihsaW5rLT5oYW5kbGUsIGZuLCByZXQpOyBcCisgICAgICAgIGdvdG8gbmV4dF9lbnRyeTsgXAorfSBcCit9IHdoaWxlICgwKQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2F0dGFjaAorKgorKiBIYWxmIG9mIHRoZSBhdHRhY2gvZGV0YWNoIHBhaXIuICBDcmVhdGVzIGFuZCByZWdpc3RlcnMgYSBkZXZpY2UKKyogaW5zdGFuY2Ugd2l0aCBDYXJkIFNlcnZpY2VzLiAgSW4gdGhpcyBjYXNlLCBpdCBhbHNvIGNyZWF0ZXMgdGhlCisqIHdsYW5kZXYgc3RydWN0dXJlIGFuZCBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3R1cmUuICBUaGVzZSBhcmUKKyogbGlua2VkIHRvIHRoZSBkZXZpY2UgaW5zdGFuY2UgdmlhIGl0cyBwcml2IG1lbWJlci4KKyoKKyogQXJndW1lbnRzOgorKglub25lCisqCisqIFJldHVybnM6CisqCUEgdmFsaWQgcHRyIHRvIGRldl9saW5rX3Qgb24gc3VjY2VzcywgTlVMTCBvdGhlcndpc2UKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkIChpbnNtb2QvaW5pdF9tb2R1bGUvcmVnaXN0ZXJfcGNjYXJkX2RyaXZlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworZGV2X2xpbmtfdCAqcHJpc20yc3RhX2F0dGFjaCh2b2lkKQoreworCWNsaWVudF9yZWdfdAkJY2xpZW50X3JlZzsKKwlpbnQJCQlyZXN1bHQ7CisJZGV2X2xpbmtfdAkJKmxpbmsgPSBOVUxMOworCXdsYW5kZXZpY2VfdAkJKndsYW5kZXYgPSBOVUxMOworCWhmYTM4NHhfdAkJKmh3ID0gTlVMTDsKKworCURCRkVOVEVSOworCisJLyogQWxsb2Mgb3VyIHN0cnVjdHVyZXMgKi8KKwlsaW5rID0JCWttYWxsb2Moc2l6ZW9mKHN0cnVjdCBkZXZfbGlua190KSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIWxpbmsgfHwgKCh3bGFuZGV2ID0gY3JlYXRlX3dsYW4oKSkgPT0gTlVMTCkpIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxuIiwgZGV2X2luZm8pOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWxlZDsKKwl9CisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJLyogQ2xlYXIgYWxsIHRoZSBzdHJ1Y3RzICovCisJbWVtc2V0KGxpbmssIDAsIHNpemVvZihzdHJ1Y3QgZGV2X2xpbmtfdCkpOworCisJaWYgKCB3bGFuX3NldHVwKHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogd2xhbl9zZXR1cCgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogSW5pdGlhbGl6ZSB0aGUgaHcgc3RydWN0IGZvciBub3cgKi8KKwloZmEzODR4X2NyZWF0ZShodywgMCwgMCwgTlVMTCk7CisJaHctPndsYW5kZXYgPSB3bGFuZGV2OworCisJLyogSW5pdGlhbGl6ZSB0aGUgUEMgY2FyZCBkZXZpY2Ugb2JqZWN0LiAqLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMCkpCisJaW5pdF90aW1lcigmbGluay0+cmVsZWFzZSk7CisJbGluay0+cmVsZWFzZS5mdW5jdGlvbiA9ICZwcmlzbTJzdGFfcmVsZWFzZTsKKwlsaW5rLT5yZWxlYXNlLmRhdGEgPSAodV9sb25nKWxpbms7CisjZW5kaWYKKwlsaW5rLT5jb25mLkludFR5cGUgPSBJTlRfTUVNT1JZX0FORF9JTzsKKwlsaW5rLT5wcml2ID0gd2xhbmRldjsKKyNpZiAoZGVmaW5lZChDU19SRUxFQVNFX0NPREUpICYmIChDU19SRUxFQVNFX0NPREUgPCAweDI5MTEpKQorCWxpbmstPmlycS5JbnN0YW5jZSA9IHdsYW5kZXY7CisjZW5kaWYKKworCS8qIExpbmsgaW4gdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyBtYW5hZ2VkIGJ5IHRoaXMgZHJpdmVyICovCisJbGluay0+bmV4dCA9IGRldl9saXN0OworCWRldl9saXN0ID0gbGluazsKKworCS8qIFJlZ2lzdGVyIHdpdGggQ2FyZCBTZXJ2aWNlcyAqLworCWNsaWVudF9yZWcuZGV2X2luZm8gPSAmZGV2X2luZm87CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwxMSkgKQorCWNsaWVudF9yZWcuQXR0cmlidXRlcyA9IElORk9fSU9fQ0xJRU5UIHwgSU5GT19DQVJEX1NIQVJFOworI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDEzKSApCisJY2xpZW50X3JlZy5FdmVudE1hc2sgPQorCQlDU19FVkVOVF9DQVJEX0lOU0VSVElPTiB8IENTX0VWRU5UX0NBUkRfUkVNT1ZBTCB8CisJCUNTX0VWRU5UX1JFU0VUX1JFUVVFU1QgfAorCQlDU19FVkVOVF9SRVNFVF9QSFlTSUNBTCB8IENTX0VWRU5UX0NBUkRfUkVTRVQgfAorCQlDU19FVkVOVF9QTV9TVVNQRU5EIHwgQ1NfRVZFTlRfUE1fUkVTVU1FOworCWNsaWVudF9yZWcuZXZlbnRfaGFuZGxlciA9ICZwcmlzbTJzdGFfZXZlbnQ7CisjZW5kaWYKKworCWNsaWVudF9yZWcuVmVyc2lvbiA9IDB4MDIxMDsKKwljbGllbnRfcmVnLmV2ZW50X2NhbGxiYWNrX2FyZ3MuY2xpZW50X2RhdGEgPSBsaW5rOworCisJcmVzdWx0ID0gcGNtY2lhX3JlZ2lzdGVyX2NsaWVudCgmbGluay0+aGFuZGxlLCAmY2xpZW50X3JlZyk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWNzX2Vycm9yKGxpbmstPmhhbmRsZSwgUmVnaXN0ZXJDbGllbnQsIHJlc3VsdCk7CisJCXByaXNtMnN0YV9kZXRhY2gobGluayk7CisJCXJldHVybiBOVUxMOworCX0KKworCWdvdG8gZG9uZTsKKworIGZhaWxlZDoKKwlpZiAobGluaykJa2ZyZWUobGluayk7CisJaWYgKHdsYW5kZXYpCWtmcmVlKHdsYW5kZXYpOworCWlmIChodykJCWtmcmVlKGh3KTsKKwlsaW5rID0gTlVMTDsKKworIGRvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gbGluazsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2RldGFjaAorKgorKiBSZW1vdmUgb25lIG9mIHRoZSBkZXZpY2UgaW5zdGFuY2VzIG1hbmFnZWQgYnkgdGhpcyBkcml2ZXIuCisqICAgU2VhcmNoIHRoZSBsaXN0IGZvciB0aGUgZ2l2ZW4gaW5zdGFuY2UsCisqICAgY2hlY2sgb3VyIGZsYWdzIGZvciBhIHdhaXRpbmcgdGltZXInZCByZWxlYXNlIGNhbGwKKyogICBjYWxsIHJlbGVhc2UKKyogICBEZXJlZ2lzdGVyIHRoZSBpbnN0YW5jZSB3aXRoIENhcmQgU2VydmljZXMKKyogICAobmV0ZGV2aWNlKSB1bnJlZ2lzdGVyIHRoZSBuZXR3b3JrIGRldmljZS4KKyogICB1bmxpbmsgdGhlIGluc3RhbmNlIGZyb20gdGhlIGxpc3QKKyogICBmcmVlIHRoZSBsaW5rLCBwcml2LCBhbmQgcHJpdi0+cHJpdiBtZW1vcnkKKyogTm90ZTogdGhlIGRldl9saXN0IHZhcmlhYmxlIGlzIGEgZHJpdmVyIHNjb3BlZCBzdGF0aWMgdXNlZCB0bworKgltYWludGFpbiBhIGxpc3Qgb2YgZGV2aWNlIGluc3RhbmNlcyBtYW5hZ2VkIGJ5IHRoaXMKKyoJZHJpdmVyLgorKgorKiBBcmd1bWVudHM6CisqCWxpbmsJcHRyIHRvIHRoZSBpbnN0YW5jZSB0byBkZXRhY2gKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCXRoZSBsaW5rIHN0cnVjdHVyZSBpcyBnb25lLCB0aGUgbmV0ZGV2aWNlIGlzIGdvbmUKKyoKKyogQ2FsbCBjb250ZXh0OgorKglNaWdodCBiZSBpbnRlcnJ1cHQsIGRvbid0IGJsb2NrLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIHByaXNtMnN0YV9kZXRhY2goZGV2X2xpbmtfdCAqbGluaykKK3sKKwlkZXZfbGlua190CQkqKmxpbmtwOworCXdsYW5kZXZpY2VfdAkJKndsYW5kZXY7CisJaGZhMzg0eF90CQkqaHc7CisKKwlEQkZFTlRFUjsKKworCS8qIExvY2F0ZSBwcmV2IGRldmljZSBzdHJ1Y3R1cmUgKi8KKwlmb3IgKGxpbmtwID0gJmRldl9saXN0OyAqbGlua3A7IGxpbmtwID0gJigqbGlua3ApLT5uZXh0KSB7CisJCWlmICgqbGlua3AgPT0gbGluaykgYnJlYWs7CisJfQorCisJaWYgKCpsaW5rcCAhPSBOVUxMKSB7CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCwwKSkKKwkJdW5zaWduZWQgbG9uZwlmbGFnczsKKwkJLyogR2V0IHJpZCBvZiBhbnkgdGltZXInZCByZWxlYXNlIGNhbGwgKi8KKwkJc2F2ZV9mbGFncyhmbGFncyk7CisJCWNsaSgpOworI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDApKQorCQlpZiAobGluay0+c3RhdGUgJiBERVZfUkVMRUFTRV9QRU5ESU5HKSB7CisJCQlkZWxfdGltZXJfc3luYygmbGluay0+cmVsZWFzZSk7CisJCQlsaW5rLT5zdGF0ZSAmPSB+REVWX1JFTEVBU0VfUEVORElORzsKKwkJfQorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw0LDApKQorCQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsKKyNlbmRpZgorCisJCS8qIElmIGxpbmsgc2F5cyB3ZSdyZSBzdGlsbCBjb25maWcnZCwgY2FsbCByZWxlYXNlICovCisJCWlmIChsaW5rLT5zdGF0ZSAmIERFVl9DT05GSUcpIHsKKwkJCXByaXNtMnN0YV9yZWxlYXNlKCh1X2xvbmcpbGluayk7CisJCQlpZiAobGluay0+c3RhdGUgJiBERVZfU1RBTEVfQ09ORklHKSB7CisJCQkJbGluay0+c3RhdGUgfD0gREVWX1NUQUxFX0xJTks7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyogVGVsbCBDYXJkIFNlcnZpY2VzIHdlJ3JlIG5vdCBhcm91bmQgYW55IG1vcmUgKi8KKwkJaWYgKGxpbmstPmhhbmRsZSkgeworCQkJcGNtY2lhX2RlcmVnaXN0ZXJfY2xpZW50KGxpbmstPmhhbmRsZSk7CisJCX0KKworCQkvKiBVbmxpbmsgZGV2aWNlIHN0cnVjdHVyZSwgZnJlZSBiaXRzICovCisJCSpsaW5rcCA9IGxpbmstPm5leHQ7CisJCWlmICggbGluay0+cHJpdiAhPSBOVUxMICkgeworCQkJd2xhbmRldiA9ICh3bGFuZGV2aWNlX3QqKWxpbmstPnByaXY7CisJCQlwODAyMTFuZXRkZXZfaHdyZW1vdmVkKHdsYW5kZXYpOworCQkJaWYgKGxpbmstPmRldiAhPSBOVUxMKSB7CisJCQkJdW5yZWdpc3Rlcl93bGFuZGV2KHdsYW5kZXYpOworCQkJfQorCQkJd2xhbl91bnNldHVwKHdsYW5kZXYpOworCQkJaWYgKHdsYW5kZXYtPnByaXYpIHsKKwkJCQlodyA9IHdsYW5kZXYtPnByaXY7CisJCQkJd2xhbmRldi0+cHJpdiA9IE5VTEw7CisJCQkJaWYgKGh3KSB7CisJCQkJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCQkJCWtmcmVlKGh3KTsKKwkJCQl9CisJCQl9CisJCQlsaW5rLT5wcml2ID0gTlVMTDsKKwkJCWtmcmVlKHdsYW5kZXYpOworCQl9CisJCWtmcmVlKGxpbmspOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2NvbmZpZworKgorKiBIYWxmIG9mIHRoZSBjb25maWcvcmVsZWFzZSBwYWlyLiAgVXN1YWxseSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8KKyogYSBjYXJkIGluc2VydGlvbiBldmVudC4gIEF0IHRoaXMgcG9pbnQsIHdlIF9rbm93XyB0aGVyZSdzIHNvbWUKKyogcGh5c2ljYWwgZGV2aWNlIHByZXNlbnQuICBUaGF0IG1lYW5zIHdlIGNhbiBzdGFydCBwb2tpbmcgYXJvdW5kCisqIGF0IHRoZSBDSVMgYW5kIGF0IGFueSBkZXZpY2Ugc3BlY2lmaWMgY29uZmlnIGRhdGEgd2Ugd2FudC4KKyoKKyogTm90ZSB0aGUgZ290b3MgYW5kIHRoZSBtYWNyb3MuICBJIHJlY29kZWQgdGhpcyBvbmNlIHdpdGhvdXQKKyogdGhlbSwgYW5kIGl0IGdvdCBpbmNyZWRpYmx5IHVnbHkuICBJdCdzIGFjdHVhbGx5IHNpbXBsZXIgd2l0aAorKiB0aGVtLgorKgorKiBBcmd1bWVudHM6CisqCWxpbmsJdGhlIGRldl9saW5rX3Qgc3RydWN0dXJlIGNyZWF0ZWQgaW4gYXR0YWNoIHRoYXQKKyoJCXJlcHJlc2VudHMgdGhpcyBkZXZpY2UgaW5zdGFuY2UuCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKglSZXNvdXJjZXMgKGlycSwgaW8sIG1lbSkgYXJlIGFsbG9jYXRlZAorKglUaGUgcGNtY2lhIGRldl9saW5rLT5ub2RlLT5uYW1lIGlzIHNldAorKgkoRm9yIG5ldGNhcmRzKSBUaGUgZGV2aWNlIHN0cnVjdHVyZSBpcyBmaW5pc2hlZCBhbmQsCisqCSAgbW9zdCBpbXBvcnRhbnRseSwgcmVnaXN0ZXJlZC4gIFRoaXMgbWVhbnMgdGhhdCB0aGVyZQorKgkgIGlzIG5vdyBhIF9uYW1lZF8gZGV2aWNlIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgZnJvbQorKgkgIHVzZXJsYW5kLgorKgorKiBDYWxsIGNvbnRleHQ6CisqCU1heSBiZSBjYWxsZWQgZnJvbSBhIHRpbWVyLiAgRG9uJ3QgYmxvY2shCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUgQ1NfQ0hFQ0soZm4sIHJldCkgXAorZG8geyBsYXN0X2ZuID0gKGZuKTsgaWYgKChsYXN0X3JldCA9IChyZXQpKSAhPSAwKSBnb3RvIGNzX2ZhaWxlZDsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBDRkdfQ0hFQ0soZm4sIHJldGYpIFwKK2RvIHsgaW50IHJldCA9IChyZXRmKTsgXAoraWYgKHJldCAhPSAwKSB7IFwKKyAgICAgICAgV0xBTl9MT0dfREVCVUcoMSwgIkNhcmRTZXJ2aWNlcygiICNmbiAiKSByZXR1cm5lZCAlZFxuIiwgcmV0KTsgXAorICAgICAgICBjc19lcnJvcihsaW5rLT5oYW5kbGUsIGZuLCByZXQpOyBcCisgICAgICAgIGdvdG8gbmV4dF9lbnRyeTsgXAorfSBcCit9IHdoaWxlICgwKQorCit2b2lkIHByaXNtMnN0YV9jb25maWcoZGV2X2xpbmtfdCAqbGluaykKK3sKKwljbGllbnRfaGFuZGxlX3QJCWhhbmRsZTsKKwl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2OworCWhmYTM4NHhfdCAgICAgICAgICAgICAgICpodzsKKwlpbnQJCQlsYXN0X2ZuOworCWludAkJCWxhc3RfcmV0OworCXR1cGxlX3QJCQl0dXBsZTsKKwljaXNwYXJzZV90CQlwYXJzZTsKKwljb25maWdfaW5mb190CQlzb2NrZXRjb25mOworCVVJTlQ4CQkJYnVmWzY0XTsKKwlpbnQJCQltaW5WY2MgPSAwOworCWludAkJCW1heFZjYyA9IDA7CisJY2lzdHBsX2NmdGFibGVfZW50cnlfdAlkZmx0ID0geyAwIH07CisKKwlEQkZFTlRFUjsKKworCWhhbmRsZSA9IGxpbmstPmhhbmRsZTsKKwl3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopbGluay0+cHJpdjsKKwlodyA9IHdsYW5kZXYtPnByaXY7CisKKwkvKiBDb2xsZWN0IHRoZSBjb25maWcgcmVnaXN0ZXIgaW5mbyAqLworCXR1cGxlLkRlc2lyZWRUdXBsZSA9IENJU1RQTF9DT05GSUc7CisJdHVwbGUuQXR0cmlidXRlcyA9IDA7CisJdHVwbGUuVHVwbGVEYXRhID0gYnVmOworCXR1cGxlLlR1cGxlRGF0YU1heCA9IHNpemVvZihidWYpOworCXR1cGxlLlR1cGxlT2Zmc2V0ID0gMDsKKwlDU19DSEVDSyhHZXRGaXJzdFR1cGxlLCBwY21jaWFfZ2V0X2ZpcnN0X3R1cGxlKGhhbmRsZSwgJnR1cGxlKSk7CisJQ1NfQ0hFQ0soR2V0VHVwbGVEYXRhLCBwY21jaWFfZ2V0X3R1cGxlX2RhdGEoaGFuZGxlLCAmdHVwbGUpKTsKKwlDU19DSEVDSyhQYXJzZVR1cGxlLCBwY21jaWFfcGFyc2VfdHVwbGUoaGFuZGxlLCAmdHVwbGUsICZwYXJzZSkpOworCisJbGluay0+Y29uZi5Db25maWdCYXNlID0gcGFyc2UuY29uZmlnLmJhc2U7CisJbGluay0+Y29uZi5QcmVzZW50ID0gcGFyc2UuY29uZmlnLnJtYXNrWzBdOworCisJLyogQ29uZmlndXJlIGNhcmQgKi8KKwlsaW5rLT5zdGF0ZSB8PSBERVZfQ09ORklHOworCisJLyogQWNxdWlyZSB0aGUgY3VycmVudCBzb2NrZXQgY29uZmlnIChuZWVkIFZjYyBzZXR0aW5nKSAqLworCUNTX0NIRUNLKEdldENvbmZpZ3VyYXRpb25JbmZvLCBwY21jaWFfZ2V0X2NvbmZpZ3VyYXRpb25faW5mbyhoYW5kbGUsICZzb2NrZXRjb25mKSk7CisKKwkvKiBMb29wIHRocm91Z2ggdGhlIGNvbmZpZyB0YWJsZSBlbnRyaWVzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgd29ya3MgKi8KKwkvKiBBc3N1bWVzIGEgY29tcGxldGUgYW5kIHZhbGlkIENJUyAqLworCXR1cGxlLkRlc2lyZWRUdXBsZSA9IENJU1RQTF9DRlRBQkxFX0VOVFJZOworCUNTX0NIRUNLKEdldEZpcnN0VHVwbGUsIHBjbWNpYV9nZXRfZmlyc3RfdHVwbGUoaGFuZGxlLCAmdHVwbGUpKTsKKwl3aGlsZSAoMSkgeworCQljaXN0cGxfY2Z0YWJsZV9lbnRyeV90ICpjZmcgPSAmKHBhcnNlLmNmdGFibGVfZW50cnkpOworCQlDRkdfQ0hFQ0soR2V0VHVwbGVEYXRhLCBwY21jaWFfZ2V0X3R1cGxlX2RhdGEoaGFuZGxlLCAmdHVwbGUpKTsKKwkJQ0ZHX0NIRUNLKFBhcnNlVHVwbGUsIHBjbWNpYV9wYXJzZV90dXBsZShoYW5kbGUsICZ0dXBsZSwgJnBhcnNlKSk7CisKKwkJaWYgKGNmZy0+aW5kZXggPT0gMCkgZ290byBuZXh0X2VudHJ5OworCQlsaW5rLT5jb25mLkNvbmZpZ0luZGV4ID0gY2ZnLT5pbmRleDsKKworCQkvKiBMZXRzIHByaW50IG91dCB0aGUgVmNjIHRoYXQgdGhlIGNvbnRyb2xsZXIrcGNtY2lhLWNzIHNldAorCQkgKiBmb3IgdXMsIGNhdXNlIHRoYXQncyB3aGF0IHdlJ3JlIGdvaW5nIHRvIHVzZS4KKwkJICovCisJCVdMQU5fTE9HX0RFQlVHKDEsIkluaXRpYWwgVmNjPSVkLzEwdlxuIiwgc29ja2V0Y29uZi5WY2MpOworCQlpZiAocHJpc20yX2lnbm9yZXZjYykgeworCQkJbGluay0+Y29uZi5WY2MgPSBzb2NrZXRjb25mLlZjYzsKKwkJCWdvdG8gc2tpcHZjYzsKKwkJfQorCisJCS8qIFVzZSBwb3dlciBzZXR0aW5ncyBmb3IgVmNjIGFuZCBWcHAgaWYgcHJlc2VudCAqLworCQkvKiBOb3RlIHRoYXQgdGhlIENJUyB2YWx1ZXMgbmVlZCB0byBiZSByZXNjYWxlZCAqLworCQlpZiAoY2ZnLT52Y2MucHJlc2VudCAmICgxPDxDSVNUUExfUE9XRVJfVk5PTSkpIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsICJWY2Mgb2J0YWluZWQgZnJvbSBjdXJ0dXBsLlZOT01cbiIpOworCQkJbWluVmNjID0gbWF4VmNjID0KKwkJCQljZmctPnZjYy5wYXJhbVtDSVNUUExfUE9XRVJfVk5PTV0vMTAwMDA7CisJCX0gZWxzZSBpZiAoZGZsdC52Y2MucHJlc2VudCAmICgxPDxDSVNUUExfUE9XRVJfVk5PTSkpIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsICJWY2Mgc2V0IGZyb20gZGZsdC5WTk9NXG4iKTsKKwkJCW1pblZjYyA9IG1heFZjYyA9CisJCQkJZGZsdC52Y2MucGFyYW1bQ0lTVFBMX1BPV0VSX1ZOT01dLzEwMDAwOworCQl9IGVsc2UgaWYgKChjZmctPnZjYy5wcmVzZW50ICYgKDE8PENJU1RQTF9QT1dFUl9WTUFYKSkgJiYKKwkJCSAgIChjZmctPnZjYy5wcmVzZW50ICYgKDE8PENJU1RQTF9QT1dFUl9WTUlOKSkgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLCAiVmNjIHNldCBmcm9tIGN1cnR1cGwoVk1JTixWTUFYKVxuIik7CQkJbWluVmNjID0gY2ZnLT52Y2MucGFyYW1bQ0lTVFBMX1BPV0VSX1ZNSU5dLzEwMDAwOworCQkJbWF4VmNjID0gY2ZnLT52Y2MucGFyYW1bQ0lTVFBMX1BPV0VSX1ZNQVhdLzEwMDAwOworCQl9IGVsc2UgaWYgKChkZmx0LnZjYy5wcmVzZW50ICYgKDE8PENJU1RQTF9QT1dFUl9WTUFYKSkgJiYKKwkJCSAgIChkZmx0LnZjYy5wcmVzZW50ICYgKDE8PENJU1RQTF9QT1dFUl9WTUlOKSkgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLCAiVmNjIHNldCBmcm9tIGRmbHQoVk1JTixWTUFYKVxuIik7CisJCQltaW5WY2MgPSBkZmx0LnZjYy5wYXJhbVtDSVNUUExfUE9XRVJfVk1JTl0vMTAwMDA7CisJCQltYXhWY2MgPSBkZmx0LnZjYy5wYXJhbVtDSVNUUExfUE9XRVJfVk1BWF0vMTAwMDA7CisJCX0KKworCQlpZiAoIHNvY2tldGNvbmYuVmNjID49IG1pblZjYyAmJiBzb2NrZXRjb25mLlZjYyA8PSBtYXhWY2MpIHsKKwkJCWxpbmstPmNvbmYuVmNjID0gc29ja2V0Y29uZi5WY2M7CisJCX0gZWxzZSB7CisJCQkvKiBbTVNNXTogTm90ZSB0aGF0IEkndmUgZ2l2ZW4gdXAgdHJ5aW5nIHRvIGNoYW5nZQorCQkJICogdGhlIFZjYyBpZiBhIGNoYW5nZSBpcyBpbmRpY2F0ZWQuICBJdCBzZWVtcyB0aGUKKwkJCSAqIHN5c3RlbSZzb2NrZXRjb250cm9sbGVyJmNhcmQgdmVuZG9ycyBjYW4ndCBzZWVtCisJCQkgKiB0byBnZXQgaXQgcmlnaHQsIHNvIEknbSB0aXJlZCBvZiB0cnlpbmcgdG8gaGFjaworCQkJICogbXkgd2F5IGFyb3VuZCBpdC4gIHBjbWNpYS1jcyBkb2VzIGl0cyBiZXN0IHVzaW5nCisJCQkgKiB0aGUgdm9sdGFnZSBzZW5zZSBwaW5zIGJ1dCBzb21ldGltZXMgdGhlIGNvbnRyb2xsZXIKKwkJCSAqIGxpZXMuICBUaGVuLCBldmVuIGlmIHdlIGhhdmUgYSBnb29kIHJlYWQgb24gdGhlIFZTCisJCQkgKiBwaW5zLCBzb21lIHN5c3RlbSBkZXNpZ25zIHdpbGwgc2lsZW50bHkgaWdub3JlIG91cgorCQkJICogcmVxdWVzdHMgdG8gc2V0IHRoZSB2b2x0YWdlLiAgQWRkaXRpb25hbGx5LCBzb21lCisJCQkgKiB2ZW5kb3JzIGhhdmUgMy4zdiBpbmRpY2F0ZWQgb24gdGhlaXIgc2Vuc2UgcGlucywKKwkJCSAqIGJ1dCA1diBzcGVjaWZpZWQgaW4gdGhlIENJUyBvciB2aWNlLXZlcnNhLiAgSSd2ZQorCQkJICogaGFkIGl0LiAgTXkgb25seSByZWNvbW1lbmRhdGlvbiBpcyAibGV0IHRoZSBidXllcgorCQkJICogYmV3YXJlIi4gIFlvdXIgc3lzdGVtIG1pZ2h0IHN1cHBseSA1diB0byBhIDN2IGNhcmQKKwkJCSAqIChwb3NzaWJseSBjYXVzaW5nIGRhbWFnZSkgb3IgYSAzdiBjYXBhYmxlIHN5c3RlbQorCQkJICogbWlnaHQgc3VwcGx5IDV2IHRvIGEgM3YgY2FwYWJsZSBjYXJkICh3YXN0aW5nCisJCQkgKiBwcmVjaW91cyBiYXR0ZXJ5IGxpZmUpLgorCQkJICogTXkgb25seSByZWNvbW1lbmRhdGlvbiAoaWYgeW91IGNhcmUpIGlzIHRvIGdldAorCQkJICogeW91cnNlbGYgYW4gZXh0ZW5kZXIgY2FyZCAoSSBkb24ndCBrbm93IHdoZXJlLCBJCisJCQkgKiBoYXZlIG9ubHkgb25lIG15c2VsZikgYW5kIGEgbWV0ZXIgYW5kIHRlc3QgaXQgZm9yCisJCQkgKiB5b3Vyc2VsZi4KKwkJCSAqLworCQkJZ290byBuZXh0X2VudHJ5OworCQl9Citza2lwdmNjOgorCQlXTEFOX0xPR19ERUJVRygxLCAibGluay0+Y29uZi5WY2M9JWRcbiIsIGxpbmstPmNvbmYuVmNjKTsKKworCQkvKiBEbyB3ZSBuZWVkIHRvIGFsbG9jYXRlIGFuIGludGVycnVwdD8gKi8KKwkJLyogSEFDSzogZHVlIHRvIGEgYmFkIENJUy4uLi53ZSBBTFdBWVMgbmVlZCBhbiBpbnRlcnJ1cHQgKi8KKwkJLyogaWYgKGNmZy0+aXJxLklSUUluZm8xIHx8IGRmbHQuaXJxLklSUUluZm8xKSAqLworCQkJbGluay0+Y29uZi5BdHRyaWJ1dGVzIHw9IENPTkZfRU5BQkxFX0lSUTsKKworCQkvKiBJTyB3aW5kb3cgc2V0dGluZ3MgKi8KKwkJbGluay0+aW8uTnVtUG9ydHMxID0gbGluay0+aW8uTnVtUG9ydHMyID0gMDsKKwkJaWYgKChjZmctPmlvLm53aW4gPiAwKSB8fCAoZGZsdC5pby5ud2luID4gMCkpIHsKKwkJCWNpc3RwbF9pb190ICppbyA9IChjZmctPmlvLm53aW4pID8gJmNmZy0+aW8gOiAmZGZsdC5pbzsKKwkJCWxpbmstPmlvLkF0dHJpYnV0ZXMxID0gSU9fREFUQV9QQVRIX1dJRFRIX0FVVE87CisJCQlpZiAoIShpby0+ZmxhZ3MgJiBDSVNUUExfSU9fOEJJVCkpCisJCQkJbGluay0+aW8uQXR0cmlidXRlczEgPSBJT19EQVRBX1BBVEhfV0lEVEhfMTY7CisJCQlpZiAoIShpby0+ZmxhZ3MgJiBDSVNUUExfSU9fMTZCSVQpKQorCQkJCWxpbmstPmlvLkF0dHJpYnV0ZXMxID0gSU9fREFUQV9QQVRIX1dJRFRIXzg7CisJCQlsaW5rLT5pby5CYXNlUG9ydDEgPSBpby0+d2luWzBdLmJhc2U7CisJCQlpZiAgKCBsaW5rLT5pby5CYXNlUG9ydDEgIT0gMCApIHsKKwkJCQlXTEFOX0xPR19XQVJOSU5HKAorCQkJCSJCcmFpbiBkYW1hZ2VkIENJUzogaGFyZCBjb2RlZCBpb2Jhc2U9IgorCQkJCSIweCV4LCB0cnkgbGV0dGluZyBwY21jaWFfY3MgZGVjaWRlLi4uXG4iLAorCQkJCWxpbmstPmlvLkJhc2VQb3J0MSApOworCQkJCWxpbmstPmlvLkJhc2VQb3J0MSA9IDA7CisJCQl9CisJCQlsaW5rLT5pby5OdW1Qb3J0czEgPSBpby0+d2luWzBdLmxlbjsKKwkJCWlmIChpby0+bndpbiA+IDEpIHsKKwkJCQlsaW5rLT5pby5BdHRyaWJ1dGVzMiA9IGxpbmstPmlvLkF0dHJpYnV0ZXMxOworCQkJCWxpbmstPmlvLkJhc2VQb3J0MiA9IGlvLT53aW5bMV0uYmFzZTsKKwkJCQlsaW5rLT5pby5OdW1Qb3J0czIgPSBpby0+d2luWzFdLmxlbjsKKwkJCX0KKwkJfQorCisJCS8qIFRoaXMgcmVzZXJ2ZXMgSU8gc3BhY2UgYnV0IGRvZXNuJ3QgYWN0dWFsbHkgZW5hYmxlIGl0ICovCisJCUNGR19DSEVDSyhSZXF1ZXN0SU8sIHBjbWNpYV9yZXF1ZXN0X2lvKGxpbmstPmhhbmRsZSwgJmxpbmstPmlvKSk7CisKKwkJLyogSWYgd2UgZ290IHRoaXMgZmFyLCB3ZSdyZSBjb29sISAqLworCQlicmVhazsKKworbmV4dF9lbnRyeToKKwkJaWYgKGNmZy0+ZmxhZ3MgJiBDSVNUUExfQ0ZUQUJMRV9ERUZBVUxUKQorCQkJZGZsdCA9ICpjZmc7CisJCUNTX0NIRUNLKEdldE5leHRUdXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwY21jaWFfZ2V0X25leHRfdHVwbGUoaGFuZGxlLCAmdHVwbGUpKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhbiBpbnRlcnJ1cHQgbGluZS4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFzc2lnbiBhICovCisJLyogaGFuZGxlciB0byB0aGUgaW50ZXJydXB0LCB1bmxlc3MgdGhlICdIYW5kbGVyJyBtZW1iZXIgb2YgdGhlICovCisJLyogaXJxIHN0cnVjdHVyZSBpcyBpbml0aWFsaXplZC4gKi8KKwlpZiAobGluay0+Y29uZi5BdHRyaWJ1dGVzICYgQ09ORl9FTkFCTEVfSVJRKQorCXsKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDExKSApCisJCWludAkJCWk7CisJCWxpbmstPmlycS5JUlFJbmZvMSA9IElSUV9JTkZPMl9WQUxJRCB8IElSUV9MRVZFTF9JRDsKKwkJaWYgKGlycV9saXN0WzBdID09IC0xKQorCQkJbGluay0+aXJxLklSUUluZm8yID0gaXJxX21hc2s7CisJCWVsc2UKKwkJCWZvciAoaT0wOyBpPDQ7IGkrKykKKwkJCQlsaW5rLT5pcnEuSVJRSW5mbzIgfD0gMSA8PCBpcnFfbGlzdFtpXTsKKyNlbHNlCisJCWxpbmstPmlycS5JUlFJbmZvMSA9IElSUV9MRVZFTF9JRDsKKyNlbmRpZgorCQlsaW5rLT5pcnEuQXR0cmlidXRlcyA9IElSUV9UWVBFX0VYQ0xVU0lWRSB8IElSUV9IQU5ETEVfUFJFU0VOVDsKKwkJbGluay0+aXJxLkhhbmRsZXIgPSBoZmEzODR4X2ludGVycnVwdDsKKwkJbGluay0+aXJxLkluc3RhbmNlID0gd2xhbmRldjsKKwkJQ1NfQ0hFQ0soUmVxdWVzdElSUSwgcGNtY2lhX3JlcXVlc3RfaXJxKGxpbmstPmhhbmRsZSwgJmxpbmstPmlycSkpOworCX0KKworCS8qIFRoaXMgYWN0dWFsbHkgY29uZmlndXJlcyB0aGUgUENNQ0lBIHNvY2tldCAtLSBzZXR0aW5nIHVwICovCisJLyogdGhlIEkvTyB3aW5kb3dzIGFuZCB0aGUgaW50ZXJydXB0IG1hcHBpbmcsIGFuZCBwdXR0aW5nIHRoZSAqLworCS8qIGNhcmQgYW5kIGhvc3QgaW50ZXJmYWNlIGludG8gIk1lbW9yeSBhbmQgSU8iIG1vZGUuICovCisJQ1NfQ0hFQ0soUmVxdWVzdENvbmZpZ3VyYXRpb24sIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24obGluay0+aGFuZGxlLCAmbGluay0+Y29uZikpOworCisJLyogRmlsbCB0aGUgbmV0ZGV2aWNlIHdpdGggdGhpcyBpbmZvICovCisJd2xhbmRldi0+bmV0ZGV2LT5pcnEgPSBsaW5rLT5pcnEuQXNzaWduZWRJUlE7CisJd2xhbmRldi0+bmV0ZGV2LT5iYXNlX2FkZHIgPSBsaW5rLT5pby5CYXNlUG9ydDE7CisKKwkvKiBSZXBvcnQgd2hhdCB3ZSd2ZSBkb25lICovCisJV0xBTl9MT0dfSU5GTygiJXM6IGluZGV4IDB4JTAyeDogVmNjICVkLiVkIiwKKwkJZGV2X2luZm8sIGxpbmstPmNvbmYuQ29uZmlnSW5kZXgsCisJCWxpbmstPmNvbmYuVmNjLzEwLCBsaW5rLT5jb25mLlZjYyUxMCk7CisJaWYgKGxpbmstPmNvbmYuVnBwMSkKKwkJcHJpbnRrKCIsIFZwcCAlZC4lZCIsIGxpbmstPmNvbmYuVnBwMS8xMCwgbGluay0+Y29uZi5WcHAxJTEwKTsKKwlpZiAobGluay0+Y29uZi5BdHRyaWJ1dGVzICYgQ09ORl9FTkFCTEVfSVJRKQorCQlwcmludGsoIiwgaXJxICVkIiwgbGluay0+aXJxLkFzc2lnbmVkSVJRKTsKKwlpZiAobGluay0+aW8uTnVtUG9ydHMxKQorCQlwcmludGsoIiwgaW8gMHglMDR4LTB4JTA0eCIsIGxpbmstPmlvLkJhc2VQb3J0MSwgbGluay0+aW8uQmFzZVBvcnQxK2xpbmstPmlvLk51bVBvcnRzMS0xKTsKKwlpZiAobGluay0+aW8uTnVtUG9ydHMyKQorCQlwcmludGsoIiAmIDB4JTA0eC0weCUwNHgiLCBsaW5rLT5pby5CYXNlUG9ydDIsIGxpbmstPmlvLkJhc2VQb3J0MitsaW5rLT5pby5OdW1Qb3J0czItMSk7CisJcHJpbnRrKCJcbiIpOworCisJbGluay0+c3RhdGUgJj0gfkRFVl9DT05GSUdfUEVORElORzsKKworCS8qIExldCBwY21jaWEga25vdyB0aGUgZGV2aWNlIG5hbWUgKi8KKwlsaW5rLT5kZXYgPSAmaHctPm5vZGU7CisKKwkvKiBSZWdpc3RlciB0aGUgbmV0d29yayBkZXZpY2UgYW5kIGdldCBhc3NpZ25lZCBhIG5hbWUgKi8KKwlTRVRfTU9EVUxFX09XTkVSKHdsYW5kZXYtPm5ldGRldik7CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTEpICkKKwlTRVRfTkVUREVWX0RFVih3bGFuZGV2LT5uZXRkZXYsICAmaGFuZGxlX3RvX2RldihsaW5rLT5oYW5kbGUpKTsKKyNlbmRpZgorCWlmIChyZWdpc3Rlcl93bGFuZGV2KHdsYW5kZXYpICE9IDApIHsKKwkJV0xBTl9MT0dfTk9USUNFKCJwcmlzbTJzdGFfY3M6IHJlZ2lzdGVyX3dsYW5kZXYoKSBmYWlsZWQuXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJc3RyY3B5KGh3LT5ub2RlLmRldl9uYW1lLCB3bGFuZGV2LT5uYW1lKTsKKworCS8qIEFueSBkZXZpY2UgY3VzdG9tIGNvbmZpZy9xdWVyeSBzdHVmZiBzaG91bGQgYmUgZG9uZSBoZXJlICovCisJLyogRm9yIGEgbmV0ZGV2aWNlLCB3ZSBzaG91bGQgYXQgbGVhc3QgZ3JhYiB0aGUgbWFjIGFkZHJlc3MgKi8KKworCXJldHVybjsKK2NzX2ZhaWxlZDoKKwljc19lcnJvcihsaW5rLT5oYW5kbGUsIGxhc3RfZm4sIGxhc3RfcmV0KTsKKwlXTEFOX0xPR19FUlJPUigiTmV4dFR1cGxlIGZhaWx1cmU/IEl0J3MgcHJvYmFibHkgYSBWY2MgbWlzbWF0Y2guXG4iKTsKKworZmFpbGVkOgorCXByaXNtMnN0YV9yZWxlYXNlKCh1X2xvbmcpbGluayk7CisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX3JlbGVhc2UKKyoKKyogSGFsZiBvZiB0aGUgY29uZmlnL3JlbGVhc2UgcGFpci4gIFVzdWFsbHkgY2FsbGVkIGluIHJlc3BvbnNlIHRvCisqIGEgY2FyZCBlamVjdGlvbiBldmVudC4gIENoZWNrcyB0byBtYWtlIHN1cmUgbm8gaGlnaGVyIGxheWVycworKiBhcmUgc3RpbGwgKG9yIHRoaW5rIHRoZXkgYXJlKSB1c2luZyB0aGUgY2FyZCB2aWEgdGhlIGxpbmstPm9wZW4KKyogZmllbGQuCisqCisqIE5PVEU6IERvbid0IGZvcmdldCB0byBpbmNyZW1lbnQgdGhlIGxpbmstPm9wZW4gdmFyaWFibGUgaW4gdGhlCisqICBkZXZpY2Vfb3BlbiBtZXRob2QsIGFuZCBkZWNyZW1lbnQgaXQgaW4gdGhlIGRldmljZV9jbG9zZQorKiAgbWV0aG9kLgorKgorKiBBcmd1bWVudHM6CisqCWFyZwlhIGdlbmVyaWMgMzIgYml0IHZhcmlhYmxlLiAgSXQncyB0aGUgdmFsdWUgdGhhdAorKgkJd2UgYXNzaWduZWQgdG8gbGluay0+cmVsZWFzZS5kYXRhIGluIHN0YV9hdHRhY2goKS4KKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCUFsbCByZXNvdXJjZXMgc2hvdWxkIGJlIHJlbGVhc2VkIGFmdGVyIHRoaXMgZnVuY3Rpb24KKyoJZXhlY3V0ZXMgYW5kIGZpbmRzIHRoZSBkZXZpY2UgIW9wZW4uCisqCisqIENhbGwgY29udGV4dDoKKyoJUG9zc2libHkgaW4gYSB0aW1lciBjb250ZXh0LiAgRG9uJ3QgZG8gYW55dGhpbmcgdGhhdCdsbAorKglibG9jay4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJzdGFfcmVsZWFzZSh1X2xvbmcgYXJnKQoreworICAgICAgICBkZXZfbGlua190CSpsaW5rID0gKGRldl9saW5rX3QgKilhcmc7CisKKwlEQkZFTlRFUjsKKworCS8qIEZpcnN0IHRoaW5nIHdlIHNob3VsZCBkbyBpcyBnZXQgdGhlIE1TRCBiYWNrIHRvIHRoZQorCSAqIEhXUFJFU0VOVCBzdGF0ZS4gIEkuZS4gZXZlcnl0aGluZyBxdWllc2NlbnQuCisJICovCisJcHJpc20yc3RhX2lmc3RhdGUobGluay0+cHJpdiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCisgICAgICAgIGlmIChsaW5rLT5vcGVuKSB7CisJCS8qIFRPRE86IEkgZG9uJ3QgdGhpbmsgd2UncmUgZXZlbiB1c2luZyB0aGlzIGJpdCBvZiBjb2RlCisJCSAqIGFuZCBJIGRvbid0IHRoaW5rIGl0J3MgaHVydGluZyB1cyBhdCB0aGUgbW9tZW50LgorCQkgKi8KKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygxLAorCQkJInByaXNtMnN0YV9jczogcmVsZWFzZSBwb3N0cG9uZWQsICclcycgc3RpbGwgb3BlblxuIiwKKwkJCWxpbmstPmRldi0+ZGV2X25hbWUpOworICAgICAgICAgICAgICAgIGxpbmstPnN0YXRlIHw9IERFVl9TVEFMRV9DT05GSUc7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcGNtY2lhX3JlbGVhc2VfY29uZmlndXJhdGlvbihsaW5rLT5oYW5kbGUpOworICAgICAgICBwY21jaWFfcmVsZWFzZV9pbyhsaW5rLT5oYW5kbGUsICZsaW5rLT5pbyk7CisgICAgICAgIHBjbWNpYV9yZWxlYXNlX2lycShsaW5rLT5oYW5kbGUsICZsaW5rLT5pcnEpOworCisgICAgICAgIGxpbmstPnN0YXRlICY9IH4oREVWX0NPTkZJRyB8IERFVl9SRUxFQVNFX1BFTkRJTkcpOworCisJREJGRVhJVDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9ldmVudAorKgorKiBIYW5kbGVyIGZvciBjYXJkIHNlcnZpY2VzIGV2ZW50cy4KKyoKKyogQXJndW1lbnRzOgorKglldmVudAkJVGhlIGV2ZW50IGNvZGUKKyoJcHJpb3JpdHkJaGkvbG93IC0gUkVNT1ZBTCBpcyB0aGUgb25seSBoaQorKglhcmdzCQlwdHIgdG8gY2FyZCBzZXJ2aWNlcyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvIGFib3V0CisqCQkJcGNtY2lhIHN0YXR1cworKgorKiBSZXR1cm5zOgorKglaZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqCisqIENhbGwgY29udGV4dDoKKyoJQm90aCBpbnRlcnJ1cHQgYW5kIHByb2Nlc3MgdGhyZWFkLCBkZXBlbmRzIG9uIHRoZSBldmVudC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludAorcHJpc20yc3RhX2V2ZW50ICgKKwlldmVudF90IGV2ZW50LAorCWludCBwcmlvcml0eSwKKwlldmVudF9jYWxsYmFja19hcmdzX3QgKmFyZ3MpCit7CisJaW50CQkJcmVzdWx0ID0gMDsKKwlkZXZfbGlua190CQkqbGluayA9IChkZXZfbGlua190ICopIGFyZ3MtPmNsaWVudF9kYXRhOworCXdsYW5kZXZpY2VfdAkJKndsYW5kZXYgPSAod2xhbmRldmljZV90KilsaW5rLT5wcml2OworCWhmYTM4NHhfdAkJKmh3ID0gTlVMTDsKKworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYpIGh3ID0gd2xhbmRldi0+cHJpdjsKKworCXN3aXRjaCAoZXZlbnQpCisJeworCWNhc2UgQ1NfRVZFTlRfQ0FSRF9JTlNFUlRJT046CisJCVdMQU5fTE9HX0RFQlVHKDUsImV2ZW50IGlzIElOU0VSVElPTlxuIik7CisJCWxpbmstPnN0YXRlIHw9IERFVl9QUkVTRU5UIHwgREVWX0NPTkZJR19QRU5ESU5HOworCQlwcmlzbTJzdGFfY29uZmlnKGxpbmspOworCQlpZiAoIShsaW5rLT5zdGF0ZSAmIERFVl9DT05GSUcpKSB7CisJCQl3bGFuZGV2LT5uZXRkZXYtPmlycSA9IDA7CisJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkiJXM6IEluaXRpYWxpemF0aW9uIGZhaWxlZCFcbiIsIGRldl9pbmZvKTsKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdGQUlMOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBGaWxsIGluIHRoZSByZXN0IG9mIHRoZSBodyBzdHJ1Y3QgKi8KKwkJaHctPmlycSA9IHdsYW5kZXYtPm5ldGRldi0+aXJxOworCQlody0+aW9iYXNlID0gd2xhbmRldi0+bmV0ZGV2LT5iYXNlX2FkZHI7CisJCWh3LT5saW5rID0gbGluazsKKworCQlpZiAocHJpc20yX2RvcmVzZXQpIHsKKwkJCXJlc3VsdCA9IGhmYTM4NHhfY29yZXJlc2V0KGh3LAorCQkJCQlwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJCXByaXNtMl9yZXNldF9zZXR0bGV0aW1lLCAwKTsKKwkJCWlmICggcmVzdWx0ICkgeworCQkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCQkiY29yZXJlc2V0KCkgZmFpbGVkLCByZXN1bHQ9JWQuXG4iLAorCQkJCQlyZXN1bHQpOworCQkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdGQUlMOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKyNpZiAwCisJCS8qCisJCSAqIFRPRE86IHRlc3RfaG9zdGlmKCkgbm90IGltcGxlbWVudGVkIHlldC4KKwkJICovCisJCXJlc3VsdCA9IGhmYTM4NHhfdGVzdF9ob3N0aWYoaHcpOworCQlpZiAocmVzdWx0KSB7CisJCQlXTEFOX0xPR19FUlJPUigKKwkJCSJ0ZXN0X2hvc3RpZigpIGZhaWxlZCwgcmVzdWx0PSVkLlxuIiwgcmVzdWx0KTsKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdGQUlMOworCQkJYnJlYWs7CisJCX0KKyNlbmRpZgorCQl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKwkJYnJlYWs7CisKKwljYXNlIENTX0VWRU5UX0NBUkRfUkVNT1ZBTDoKKwkJV0xBTl9MT0dfREVCVUcoNSwiZXZlbnQgaXMgUkVNT1ZBTFxuIik7CisJCWxpbmstPnN0YXRlICY9IH5ERVZfUFJFU0VOVDsKKworCQlpZiAod2xhbmRldikgeworCQkJcDgwMjExbmV0ZGV2X2h3cmVtb3ZlZCh3bGFuZGV2KTsKKwkJfQorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwwKSkKKwkJaWYgKGxpbmstPnN0YXRlICYgREVWX0NPTkZJRykKKwkJeworCQkJbGluay0+cmVsZWFzZS5leHBpcmVzID0gamlmZmllcyArIChIWi8yMCk7CisJCQlhZGRfdGltZXIoJmxpbmstPnJlbGVhc2UpOworCQl9CisjZW5kaWYKKwkJYnJlYWs7CisJY2FzZSBDU19FVkVOVF9SRVNFVF9SRVFVRVNUOgorCQlXTEFOX0xPR19ERUJVRyg1LCJldmVudCBpcyBSRVNFVF9SRVFVRVNUXG4iKTsKKwkJV0xBTl9MT0dfTk9USUNFKAorCQkJInByaXNtMiBjYXJkIHJlc2V0IG5vdCBzdXBwb3J0ZWQgIgorCQkJImR1ZSB0byBwb3N0LXJlc2V0IHVzZXIgbW9kZSBjb25maWd1cmF0aW9uICIKKwkJCSJyZXF1aXJlbWVudHMuXG4iKTsKKwkJV0xBTl9MT0dfTk9USUNFKAorCQkJIiAgRnJvbSB1c2VyIG1vZGUsIHVzZSAiCisJCQkiJ2NhcmRjdGwgc3VzcGVuZDtjYXJkY3RsIHJlc3VtZScgIgorCQkJImluc3RlYWQuXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBDU19FVkVOVF9SRVNFVF9QSFlTSUNBTDoKKwljYXNlIENTX0VWRU5UX0NBUkRfUkVTRVQ6CisJCVdMQU5fTE9HX1dBUk5JTkcoIlJ4J2QgQ1NfRVZFTlRfUkVTRVRfeHh4LCBzaG91bGQgbm90ICIKKwkJCSJiZSBwb3NzaWJsZSBzaW5jZSBSRVNFVF9SRVFVRVNUIHdhcyBkZW5pZWQuXG4iKTsKKwkJYnJlYWs7CisKKwljYXNlIENTX0VWRU5UX1BNX1NVU1BFTkQ6CisJCVdMQU5fTE9HX0RFQlVHKDUsImV2ZW50IGlzIFNVU1BFTkRcbiIpOworCQlsaW5rLT5zdGF0ZSB8PSBERVZfU1VTUEVORDsKKwkJaWYgKGxpbmstPnN0YXRlICYgREVWX0NPTkZJRykKKwkJeworCQkJcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCQkJcGNtY2lhX3JlbGVhc2VfY29uZmlndXJhdGlvbihsaW5rLT5oYW5kbGUpOworCQl9CisJCWJyZWFrOworCisJY2FzZSBDU19FVkVOVF9QTV9SRVNVTUU6CisJCVdMQU5fTE9HX0RFQlVHKDUsImV2ZW50IGlzIFJFU1VNRVxuIik7CisJCWxpbmstPnN0YXRlICY9IH5ERVZfU1VTUEVORDsKKwkJaWYgKGxpbmstPnN0YXRlICYgREVWX0NPTkZJRykgeworCQkJcGNtY2lhX3JlcXVlc3RfY29uZmlndXJhdGlvbihsaW5rLT5oYW5kbGUsICZsaW5rLT5jb25mKTsKKwkJfQorCQlicmVhazsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiAwOyAgLyogbm9vbmUgZWxzZSBkb2VzIGFudGhpbmcgd2l0aCB0aGUgcmV0dXJuIHZhbHVlICovCit9CisjZW5kaWYgLy8gPD0gMi42LjE1CisKKworCitpbnQgaGZhMzg0eF9jb3JlcmVzZXQoaGZhMzg0eF90ICpodywgaW50IGhvbGR0aW1lLCBpbnQgc2V0dGxldGltZSwgaW50IGdlbmVzaXMpCit7CisJaW50CQlyZXN1bHQgPSAwOworCWNvbmZfcmVnX3QJcmVnOworCVVJTlQ4CQljb3JzYXZlOworCURCRkVOVEVSOworCisJV0xBTl9MT0dfREVCVUcoMywgIkRvaW5nIHJlc2V0IHZpYSBDYXJkU2VydmljZXMoKS5cbiIpOworCisJLyogQ29sbGVjdCBDT1IgKi8KKwlyZWcuRnVuY3Rpb24gPSAwOworCXJlZy5BY3Rpb24gPSBDU19SRUFEOworCXJlZy5PZmZzZXQgPSBDSVNSRUdfQ09SOworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKwlyZXN1bHQgPSBwY21jaWFfYWNjZXNzX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXIoaHctPnBkZXYsICZyZWcpOworI2Vsc2UKKwlyZXN1bHQgPSBwY21jaWFfYWNjZXNzX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXIoCisJCQlody0+bGluay0+aGFuZGxlLAorCQkJJnJlZyk7CisjZW5kaWYKKwlpZiAocmVzdWx0ICE9IENTX1NVQ0NFU1MgKSB7CisJCVdMQU5fTE9HX0VSUk9SKAorCQkJIjowOiBBY2Nlc3NDb25maWd1cmF0aW9uUmVnaXN0ZXIoQ1NfUkVBRCkgZmFpbGVkLCIKKwkJCSJyZXN1bHQ9JWQuXG4iLCByZXN1bHQpOworCQlyZXN1bHQgPSAtRUlPOworCX0KKwljb3JzYXZlID0gcmVnLlZhbHVlOworCisJLyogV3JpdGUgcmVzZXQgYml0IChCSVQ3KSAqLworCXJlZy5WYWx1ZSB8PSBCSVQ3OworCXJlZy5BY3Rpb24gPSBDU19XUklURTsKKwlyZWcuT2Zmc2V0ID0gQ0lTUkVHX0NPUjsKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisJcmVzdWx0ID0gcGNtY2lhX2FjY2Vzc19jb25maWd1cmF0aW9uX3JlZ2lzdGVyKGh3LT5wZGV2LCAmcmVnKTsKKyNlbHNlCisJcmVzdWx0ID0gcGNtY2lhX2FjY2Vzc19jb25maWd1cmF0aW9uX3JlZ2lzdGVyKAorCQkJaHctPmxpbmstPmhhbmRsZSwKKwkJCSZyZWcpOworI2VuZGlmCisJaWYgKHJlc3VsdCAhPSBDU19TVUNDRVNTICkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSI6MTogQWNjZXNzQ29uZmlndXJhdGlvblJlZ2lzdGVyKENTX1dSSVRFKSBmYWlsZWQsIgorCQkJInJlc3VsdD0lZC5cbiIsIHJlc3VsdCk7CisJCXJlc3VsdCA9IC1FSU87CisJfQorCisJLyogSG9sZCBmb3IgaG9sZHRpbWUgKi8KKwltZGVsYXkoaG9sZHRpbWUpOworCisJaWYgKGdlbmVzaXMpIHsKKwkJcmVnLlZhbHVlID0gZ2VuZXNpczsKKwkJcmVnLkFjdGlvbiA9IENTX1dSSVRFOworCQlyZWcuT2Zmc2V0ID0gQ0lTUkVHX0NDU1I7CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE2KQorCQlyZXN1bHQgPSBwY21jaWFfYWNjZXNzX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXIoaHctPnBkZXYsICZyZWcpOworI2Vsc2UKKwkJcmVzdWx0ID0gcGNtY2lhX2FjY2Vzc19jb25maWd1cmF0aW9uX3JlZ2lzdGVyKAorCQkJCSAgICAgIGh3LT5saW5rLT5oYW5kbGUsCisJCQkJICAgICAgJnJlZyk7CisjZW5kaWYKKwkJaWYgKHJlc3VsdCAhPSBDU19TVUNDRVNTICkgeworCQkJV0xBTl9MT0dfRVJST1IoCisJCQkJIjoxOiBBY2Nlc3NDb25maWd1cmF0aW9uUmVnaXN0ZXIoQ1NfV1JJVEUpIGZhaWxlZCwiCisJCQkJInJlc3VsdD0lZC5cbiIsIHJlc3VsdCk7CisJCQlyZXN1bHQgPSAtRUlPOworCQl9CisJfQorCisJLyogSG9sZCBmb3IgaG9sZHRpbWUgKi8KKwltZGVsYXkoaG9sZHRpbWUpOworCisJLyogQ2xlYXIgcmVzZXQgYml0ICovCisJcmVnLlZhbHVlICY9IH5CSVQ3OworCXJlZy5BY3Rpb24gPSBDU19XUklURTsKKwlyZWcuT2Zmc2V0ID0gQ0lTUkVHX0NPUjsKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTYpCisJcmVzdWx0ID0gcGNtY2lhX2FjY2Vzc19jb25maWd1cmF0aW9uX3JlZ2lzdGVyKGh3LT5wZGV2LCAmcmVnKTsKKyNlbHNlCisJcmVzdWx0ID0gcGNtY2lhX2FjY2Vzc19jb25maWd1cmF0aW9uX3JlZ2lzdGVyKAorCQkJCSAgICAgIGh3LT5saW5rLT5oYW5kbGUsCisJCQkJICAgICAgJnJlZyk7CisjZW5kaWYKKwlpZiAocmVzdWx0ICE9IENTX1NVQ0NFU1MgKSB7CisJCVdMQU5fTE9HX0VSUk9SKAorCQkJIjoyOiBBY2Nlc3NDb25maWd1cmF0aW9uUmVnaXN0ZXIoQ1NfV1JJVEUpIGZhaWxlZCwiCisJCQkicmVzdWx0PSVkLlxuIiwgcmVzdWx0KTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBkb25lOworCX0KKworCS8qIFdhaXQgZm9yIHNldHRsZXRpbWUgKi8KKwltZGVsYXkoc2V0dGxldGltZSk7CisKKwkvKiBTZXQgbm9uLXJlc2V0IGJpdHMgYmFjayB3aGF0IHRoZXkgd2VyZSAqLworCXJlZy5WYWx1ZSA9IGNvcnNhdmU7CisJcmVnLkFjdGlvbiA9IENTX1dSSVRFOworCXJlZy5PZmZzZXQgPSBDSVNSRUdfQ09SOworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxNikKKwlyZXN1bHQgPSBwY21jaWFfYWNjZXNzX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXIoaHctPnBkZXYsICZyZWcpOworI2Vsc2UKKwlyZXN1bHQgPSBwY21jaWFfYWNjZXNzX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXIoCisJCQkJICAgICAgaHctPmxpbmstPmhhbmRsZSwKKwkJCQkgICAgICAmcmVnKTsKKyNlbmRpZgorCWlmIChyZXN1bHQgIT0gQ1NfU1VDQ0VTUyApIHsKKwkJV0xBTl9MT0dfRVJST1IoCisJCQkiOjI6IEFjY2Vzc0NvbmZpZ3VyYXRpb25SZWdpc3RlcihDU19XUklURSkgZmFpbGVkLCIKKwkJCSJyZXN1bHQ9JWQuXG4iLCByZXN1bHQpOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGRvbmU7CisJfQorCitkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworI2lmZGVmIE1PRFVMRQorCitzdGF0aWMgaW50IF9faW5pdCBwcmlzbTJjc19pbml0KHZvaWQpCit7CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSw2OCkpCisJc2VydmluZm9fdAlzZXJ2OworI2VuZGlmCisKKwlEQkZFTlRFUjsKKworICAgICAgICBXTEFOX0xPR19OT1RJQ0UoIiVzIExvYWRlZFxuIiwgdmVyc2lvbik7CisgICAgICAgIFdMQU5fTE9HX05PVElDRSgiZGV2X2luZm8gaXM6ICVzXG4iLCBkZXZfaW5mbyk7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDY4KSkKKwlwY21jaWFfZ2V0X2NhcmRfc2VydmljZXNfaW5mbygmc2Vydik7CisJaWYgKCBzZXJ2LlJldmlzaW9uICE9IENTX1JFTEVBU0VfQ09ERSApCisJeworCQlwcmludGsoS0VSTl9OT1RJQ0UiJXM6IENhcmRTZXJ2aWNlcyByZWxlYXNlIGRvZXMgbm90IG1hdGNoIVxuIiwgZGV2X2luZm8pOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogVGhpcyBjYWxsIHdpbGwgcmVzdWx0IGluIGEgY2FsbCB0byBwcmlzbTJzdGFfYXR0YWNoICovCisJLyogICBhbmQgZXZlbnR1YWxseSBwcmlzbTJzdGFfZGV0YWNoICovCisJcmVnaXN0ZXJfcGNjYXJkX2RyaXZlciggJmRldl9pbmZvLCAmcHJpc20yc3RhX2F0dGFjaCwgJnByaXNtMnN0YV9kZXRhY2gpOworI2Vsc2UKKwlwY21jaWFfcmVnaXN0ZXJfZHJpdmVyKCZwcmlzbTJfY3NfZHJpdmVyKTsKKyNlbmRpZgorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHByaXNtMmNzX2NsZWFudXAodm9pZCkKK3sKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDY4KSkKKyAgICAgICAgZGV2X2xpbmtfdCAqbGluayA9IGRldl9saXN0OworICAgICAgICBkZXZfbGlua190ICpubGluazsKKyAgICAgICAgREJGRU5URVI7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDEwKSApCisJZm9yIChsaW5rPWRldl9saXN0OyBsaW5rICE9IE5VTEw7IGxpbmsgPSBubGluaykgeworCQlubGluayA9IGxpbmstPm5leHQ7CisJCWlmICggbGluay0+c3RhdGUgJiBERVZfQ09ORklHICkgeworCQkJcHJpc20yc3RhX3JlbGVhc2UoKHVfbG9uZylsaW5rKTsKKwkJfQorCQlwcmlzbTJzdGFfZGV0YWNoKGxpbmspOyAvKiByZW1lbWJlciBkZXRhY2goKSBmcmVlcyBsaW5rICovCisJfQorI2VuZGlmCisKKwl1bnJlZ2lzdGVyX3BjY2FyZF9kcml2ZXIoICZkZXZfaW5mbyk7CisjZWxzZQorCXBjbWNpYV91bnJlZ2lzdGVyX2RyaXZlcigmcHJpc20yX2NzX2RyaXZlcik7CisjZW5kaWYKKworICAgICAgICBwcmludGsoS0VSTl9OT1RJQ0UgIiVzIFVubG9hZGVkXG4iLCB2ZXJzaW9uKTsKKworICAgICAgICBEQkZFWElUOworICAgICAgICByZXR1cm47Cit9CisKK21vZHVsZV9pbml0KHByaXNtMmNzX2luaXQpOworbW9kdWxlX2V4aXQocHJpc20yY3NfY2xlYW51cCk7CisKKyNlbmRpZiAvLyBNT0RVTEUKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX3BjaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZTMyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJfcGNpLmMKQEAgLTAsMCArMSwzMzIgQEAKKyNkZWZpbmUgV0xBTl9IT1NUSUYgV0xBTl9QQ0kKKyNpbmNsdWRlICJoZmEzODR4LmMiCisjaW5jbHVkZSAicHJpc20ybWdtdC5jIgorI2luY2x1ZGUgInByaXNtMm1pYi5jIgorI2luY2x1ZGUgInByaXNtMnN0YS5jIgorCisjZGVmaW5lIFBDSV9TSVpFCQkweDEwMDAJCS8qIE1lbW9yeSBzaXplIC0gNEsgYnl0ZXMgKi8KKworLyogSVNMMzg3NEEgMTFNYi9zIFdMQU4gY29udHJvbGxlciAqLworI2RlZmluZSBQQ0lWRU5ET1JfSU5URVJTSUwJMHgxMjYwVUwKKyNkZWZpbmUgUENJREVWSUNFX0lTTDM4NzQJMHgzODczVUwgLyogW01TTV0geWVhaCBJIGtub3cuLi50aGUgSUQgc2F5cworCQkJCQkgICAgMzg3My4gVHJ1c3QgbWUsIGl0J3MgYSAzODc0LiAqLworCisvKiBTYW1zdW5nIFNXTC0yMjEwUCAxMU1iL3MgV0xBTiBjb250cm9sbGVyICh1c2VzIElTTDM4NzRBKSAqLworI2RlZmluZSBQQ0lWRU5ET1JfU0FNU1VORyAgICAgIDB4MTY3ZFVMCisjZGVmaW5lIFBDSURFVklDRV9TV0xfMjIxMFAgICAgMHhhMDAwVUwKKworI2RlZmluZSBQQ0lWRU5ET1JfTkVUR0VBUiAgICAgIDB4MTM4NVVMIC8qIGZvciBNQTMxMSAqLworCisvKiBQQ0kgQ2xhc3MgJiBTdWItQ2xhc3MgY29kZSwgTmV0d29yay0nT3RoZXIgY29udHJvbGxlcicgKi8KKyNkZWZpbmUgUENJX0NMQVNTX05FVFdPUktfT1RIRVJTIDB4MjgwCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9wcm9iZV9wY2kKKyoKKyogUHJvYmUgcm91dGluZSBjYWxsZWQgd2hlbiBhIFBDSSBkZXZpY2Ugdy8gbWF0Y2hpbmcgSUQgaXMgZm91bmQuCisqIFRoZSBJU0wzODc0IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIGZvbGxvd2luZyBtYXA6CisqICAgQkFSMDogUHJpc20yLnggcmVnaXN0ZXJzIG1lbW9yeSBtYXBwZWQsIHNpemU9NGsKKyogSGVyZSdzIHRoZSBzZXF1ZW5jZToKKyogICAtIEFsbG9jYXRlIHRoZSBQQ0kgcmVzb3VyY2VzLgorKiAgIC0gUmVhZCB0aGUgUENNQ0lBIGF0dHJpYnV0ZSBtZW1vcnkgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBXTEFOIGNhcmQKKyogICAtIFJlc2V0IHRoZSBNQUMKKyogICAtIEluaXRpYWxpemUgdGhlIG5ldGRldiBhbmQgd2xhbiBkYXRhCisqICAgLSBJbml0aWFsaXplIHRoZSBNQUMKKyoKKyogQXJndW1lbnRzOgorKglwZGV2CQlwdHIgdG8gcGNpIGRldmljZSBzdHJ1Y3R1cmUgY29udGFpbmluZyBpbmZvIGFib3V0CisqCQkJcGNpIGNvbmZpZ3VyYXRpb24uCisqCWlkCQlwdHIgdG8gdGhlIGRldmljZSBpZCBlbnRyeSB0aGF0IG1hdGNoZWQgdGhpcyBkZXZpY2UuCisqCisqIFJldHVybnM6CisqCXplcm8JCS0gc3VjY2VzcworKgluZWdhdGl2ZQktIGZhaWxlZAorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBfX2RldmluaXQKK3ByaXNtMnN0YV9wcm9iZV9wY2koCisJc3RydWN0IHBjaV9kZXYgKnBkZXYsCisJY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQoreworCWludAkJcmVzdWx0OworCXBoeXNfdAkJcGh5bWVtID0gMDsKKwl2b2lkCQlfX2lvbWVtICptZW0gPSBOVUxMOworICAgICAgICB3bGFuZGV2aWNlX3QgICAgKndsYW5kZXYgPSBOVUxMOworCWhmYTM4NHhfdAkqaHcgPSBOVUxMOworCisJREJGRU5URVI7CisKKwkvKiBFbmFibGUgdGhlIHBjaSBkZXZpY2UgKi8KKwlpZiAocGNpX2VuYWJsZV9kZXZpY2UocGRldikpIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiBwY2lfZW5hYmxlX2RldmljZSgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsOworCX0KKworCS8qIEZpZ3VyZSBvdXQgb3VyIHJlc291cmNlcyAqLworCXBoeW1lbSA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKTsKKworICAgICAgICBpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihwaHltZW0sIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCksICJQcmlzbTIiKSkgeworCQlwcmludGsoS0VSTl9FUlIgInByaXNtMjogQ2Fubm90IHJlc2VydmUgUENJIG1lbW9yeSByZWdpb25cbiIpOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWw7CisgICAgICAgIH0KKworCW1lbSA9IGlvcmVtYXAocGh5bWVtLCBQQ0lfU0laRSk7CisJaWYgKCBtZW0gPT0gMCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiBpb3JlbWFwKCkgZmFpbGVkLlxuIiwgZGV2X2luZm8pOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogTG9nIHRoZSBkZXZpY2UgKi8KKyAgICAgICAgV0xBTl9MT0dfSU5GTygiQSBQcmlzbTIuNSBQQ0kgZGV2aWNlIGZvdW5kLCAiCisJCSJwaHltZW06MHglbGx4LCBpcnE6JWQsIG1lbToweCVwXG4iLAorCQkodW5zaWduZWQgbG9uZyBsb25nKXBoeW1lbSwgcGRldi0+aXJxLCBtZW0pOworCisJaWYgKCh3bGFuZGV2ID0gY3JlYXRlX3dsYW4oKSkgPT0gTlVMTCkgeworCQlXTEFOX0xPR19FUlJPUigiJXM6IE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4iLCBkZXZfaW5mbyk7CisJCXJlc3VsdCA9IC1FSU87CisJCWdvdG8gZmFpbDsKKwl9CisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJaWYgKCB3bGFuX3NldHVwKHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogd2xhbl9zZXR1cCgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsOworCX0KKworCS8qIFNldHVwIG5ldGRldmljZSdzIGFiaWxpdHkgdG8gcmVwb3J0IHJlc291cmNlcworCSAqIE5vdGU6IHRoZSBuZXRkZXZpY2Ugd2FzIGFsbG9jYXRlZCBieSB3bGFuX3NldHVwKCkKKwkgKi8KKyAgICAgICAgd2xhbmRldi0+bmV0ZGV2LT5pcnEgPSBwZGV2LT5pcnE7CisgICAgICAgIHdsYW5kZXYtPm5ldGRldi0+bWVtX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpIG1lbTsKKyAgICAgICAgd2xhbmRldi0+bmV0ZGV2LT5tZW1fZW5kID0gd2xhbmRldi0+bmV0ZGV2LT5tZW1fc3RhcnQgKworCQlwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApOworCisJLyogSW5pdGlhbGl6ZSB0aGUgaHcgZGF0YSAqLworICAgICAgICBoZmEzODR4X2NyZWF0ZShodywgd2xhbmRldi0+bmV0ZGV2LT5pcnEsIDAsIG1lbSk7CisJaHctPndsYW5kZXYgPSB3bGFuZGV2OworCisJLyogUmVnaXN0ZXIgdGhlIHdsYW5kZXYsIHRoaXMgZ2V0cyB1cyBhIG5hbWUgYW5kIHJlZ2lzdGVycyB0aGUKKwkgKiBsaW51eCBuZXRkZXZpY2UuCisJICovCisJU0VUX01PRFVMRV9PV05FUih3bGFuZGV2LT5uZXRkZXYpOworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApKQorICAgICAgIFNFVF9ORVRERVZfREVWKHdsYW5kZXYtPm5ldGRldiwgJihwZGV2LT5kZXYpKTsKKyNlbmRpZgorICAgICAgICBpZiAoIHJlZ2lzdGVyX3dsYW5kZXYod2xhbmRldikgIT0gMCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiByZWdpc3Rlcl93bGFuZGV2KCkgZmFpbGVkLlxuIiwgZGV2X2luZm8pOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWw7CisgICAgICAgIH0KKworI2lmIDAKKwkvKiBUT0RPOiBNb3ZlIHRoaXMgYW5kIGFuIGlycSB0ZXN0IGludG8gYW4gaGZhMzg0eF90ZXN0aWYoKSByb3V0aW5lLgorCSAqLworCW91dHcoUFJJU00yU1RBX01BR0lDLCBIRkEzODR4X1NXU1VQUE9SVCh3bGFuZGV2LT5uZXRkZXYtPmJhc2VfYWRkcikpOworCXJlZz1pbncoIEhGQTM4NHhfU1dTVVBQT1JUKHdsYW5kZXYtPm5ldGRldi0+YmFzZV9hZGRyKSk7CisJaWYgKCByZWcgIT0gUFJJU00yU1RBX01BR0lDICkgeworCQlXTEFOX0xPR19FUlJPUigiTUFDIHJlZ2lzdGVyIGFjY2VzcyB0ZXN0IGZhaWxlZCFcbiIpOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWw7CisJfQorI2VuZGlmCisKKwkvKiBEbyBhIGNoaXAtbGV2ZWwgcmVzZXQgb24gdGhlIE1BQyAqLworCWlmIChwcmlzbTJfZG9yZXNldCkgeworCQlyZXN1bHQgPSBoZmEzODR4X2NvcmVyZXNldChodywKKwkJCQlwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIDApOworCQlpZiAocmVzdWx0ICE9IDApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCSIlczogaGZhMzg0eF9jb3JlcmVzZXQoKSBmYWlsZWQuXG4iLAorCQkJCWRldl9pbmZvKTsKKwkJCXVucmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KTsKKwkJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCQlyZXN1bHQgPSAtRUlPOworCQkJZ290byBmYWlsOworCQl9CisJfQorCisgICAgICAgIHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB3bGFuZGV2KTsKKworCS8qIFNob3VsZG4ndCBhY3R1YWxseSBob29rIHVwIHRoZSBJUlEgdW50aWwgd2UKKwkgKiBfa25vd18gdGhpbmdzIGFyZSBhbHJpZ2h0LiAgQSB0ZXN0IHJvdXRpbmUgd291bGQgaGVscC4KKwkgKi8KKyAgICAgICAJcmVxdWVzdF9pcnEod2xhbmRldi0+bmV0ZGV2LT5pcnEsIGhmYTM4NHhfaW50ZXJydXB0LAorCQlTQV9TSElSUSwgd2xhbmRldi0+bmFtZSwgd2xhbmRldik7CisKKwl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKworCXJlc3VsdCA9IDA7CisJZ290byBkb25lOworCisgZmFpbDoKKwlwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisJaWYgKHdsYW5kZXYpCWtmcmVlKHdsYW5kZXYpOworCWlmIChodykJCWtmcmVlKGh3KTsKKyAgICAgICAgaWYgKG1lbSkgICAgICAgIGlvdW5tYXAobWVtKTsKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOworICAgICAgICBwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CisKKyBkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgX19kZXZleGl0IHByaXNtMnN0YV9yZW1vdmVfcGNpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworICAgICAgIAl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2OworCWhmYTM4NHhfdAkqaHc7CisKKwl3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCAqKSBwY2lfZ2V0X2RydmRhdGEocGRldik7CisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJcDgwMjExbmV0ZGV2X2h3cmVtb3ZlZCh3bGFuZGV2KTsKKworCS8qIHJlc2V0IGhhcmR3YXJlICovCisJcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCisgICAgICAgIGlmIChwZGV2LT5pcnEpCisJCWZyZWVfaXJxKHBkZXYtPmlycSwgd2xhbmRldik7CisKKwl1bnJlZ2lzdGVyX3dsYW5kZXYod2xhbmRldik7CisKKwkvKiBmcmVlIGxvY2FsIHN0dWZmICovCisJaWYgKGh3KSB7CisJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCWtmcmVlKGh3KTsKKwl9CisKKwlpb3VubWFwKCh2b2lkIF9faW9tZW0gKil3bGFuZGV2LT5uZXRkZXYtPm1lbV9zdGFydCk7CisJd2xhbl91bnNldHVwKHdsYW5kZXYpOworCisJcGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTsKKyAgICAgICAgcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOworCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKKworCWtmcmVlKHdsYW5kZXYpOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lfaWRfdGJsW10gPSB7CisJeworCQlQQ0lWRU5ET1JfSU5URVJTSUwsIFBDSURFVklDRV9JU0wzODc0LAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiSW50ZXJzaWwgUHJpc20yLjUgSVNMMzg3NCAxMU1iL3MgV0xBTiBDb250cm9sbGVyIgorCX0sCisJeworCQlQQ0lWRU5ET1JfSU5URVJTSUwsIDB4Mzg3MiwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKKwkJMCwgMCwKKwkJLyogRHJpdmVyIGRhdGEsIHdlIGp1c3QgcHV0IHRoZSBuYW1lIGhlcmUgKi8KKwkJKHVuc2lnbmVkIGxvbmcpIkludGVyc2lsIFByaXNtMi41IElTTDM4NzIgMTFNYi9zIFdMQU4gQ29udHJvbGxlciIKKwl9LAorICAgICAgICB7CisgICAgICAgICAgICAgICBQQ0lWRU5ET1JfU0FNU1VORywgUENJREVWSUNFX1NXTF8yMjEwUCwKKyAgICAgICAgICAgICAgIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsCisgICAgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgICAgLyogRHJpdmVyIGRhdGEsIHdlIGp1c3QgcHV0IHRoZSBuYW1lIGhlcmUgKi8KKyAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSJTYW1zdW5nIE1hZ2ljTEFOIFNXTC0yMjEwUCAxMU1iL3MgV0xBTiBDb250cm9sbGVyIgorCX0sCisJeyAvKiBmb3IgTmV0R2VhciBNQTMxMSAqLworCQlQQ0lWRU5ET1JfTkVUR0VBUiwgMHgzODcyLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiTmV0Z2VhciBNQTMxMSBXTEFOIENvbnRyb2xsZXIiCisJfSwKKwl7CisJCTAsIDAsIDAsIDAsIDAsIDAsIDAKKwl9Cit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcGNpX2lkX3RibCk7CisKKy8qIEZ1bmN0aW9uIGRlY2xhcmVkIGhlcmUgYmVjYXVzZSBvZiBwdHIgcmVmZXJlbmNlIGJlbG93ICovCitzdGF0aWMgaW50ICBfX2RldmluaXQgcHJpc20yc3RhX3Byb2JlX3BjaShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKKwkJCQljb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpOworc3RhdGljIHZvaWQgIF9fZGV2ZXhpdCBwcmlzbTJzdGFfcmVtb3ZlX3BjaShzdHJ1Y3QgcGNpX2RldiAqcGRldik7CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBwcmlzbTJfcGNpX2Rydl9pZCA9IHsKKyAgICAgICAgLm5hbWUgPSAicHJpc20yX3BjaSIsCisgICAgICAgIC5pZF90YWJsZSA9IHBjaV9pZF90YmwsCisgICAgICAgIC5wcm9iZSA9IHByaXNtMnN0YV9wcm9iZV9wY2ksCisgICAgICAgIC5yZW1vdmUgPSBwcmlzbTJzdGFfcmVtb3ZlX3BjaSwKKyNpZmRlZiBDT05GSUdfUE0KKyAgICAgICAgLnN1c3BlbmQgPSBwcmlzbTJzdGFfc3VzcGVuZF9wY2ksCisgICAgICAgIC5yZXN1bWUgPSBwcmlzbTJzdGFfcmVzdW1lX3BjaSwKKyNlbmRpZgorfTsKKworI2lmZGVmIE1PRFVMRQorCitzdGF0aWMgaW50IF9faW5pdCBwcmlzbTJwY2lfaW5pdCh2b2lkKQoreworICAgICAgICBXTEFOX0xPR19OT1RJQ0UoIiVzIExvYWRlZFxuIiwgdmVyc2lvbik7CisJcmV0dXJuIHBjaV9tb2R1bGVfaW5pdCgmcHJpc20yX3BjaV9kcnZfaWQpOworfTsKKworc3RhdGljIHZvaWQgX19leGl0IHByaXNtMnBjaV9jbGVhbnVwKHZvaWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZwcmlzbTJfcGNpX2Rydl9pZCk7Cit9OworCittb2R1bGVfaW5pdChwcmlzbTJwY2lfaW5pdCk7Cittb2R1bGVfZXhpdChwcmlzbTJwY2lfY2xlYW51cCk7CisKKyNlbmRpZgorCitpbnQgaGZhMzg0eF9jb3JlcmVzZXQoaGZhMzg0eF90ICpodywgaW50IGhvbGR0aW1lLCBpbnQgc2V0dGxldGltZSwgaW50IGdlbmVzaXMpCit7CisJaW50CQlyZXN1bHQgPSAwOworCXVuc2lnbmVkIGxvbmcJdGltZW91dDsKKwlVSU5UMTYJcmVnOworCURCRkVOVEVSOworCisJLyogQXNzZXJ0IHJlc2V0IGFuZCB3YWl0IGF3aGlsZQorCSAqIChub3RlOiB0aGVzZSBkZWxheXMgYXJlIF9yZWFsbHlfIGxvbmcsIGJ1dCB0aGV5IGFwcGVhciB0byBiZQorCSAqICAgICAgICBuZWNlc3NhcnkuKQorCSAqLworCWhmYTM4NHhfc2V0cmVnKGh3LCAweGM1LCBIRkEzODR4X1BDSUNPUik7CisJdGltZW91dCA9IGppZmZpZXMgKyBIWi80OworCXdoaWxlKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKSB1ZGVsYXkoNSk7CisKKwlpZiAoZ2VuZXNpcykgeworCQloZmEzODR4X3NldHJlZyhodywgZ2VuZXNpcywgSEZBMzg0eF9QQ0lIQ1IpOworCQl0aW1lb3V0ID0gamlmZmllcyArIEhaLzQ7CisJCXdoaWxlKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKSB1ZGVsYXkoNSk7CisJfQorCisJLyogQ2xlYXIgdGhlIHJlc2V0IGFuZCB3YWl0IHNvbWUgbW9yZQorCSAqLworCWhmYTM4NHhfc2V0cmVnKGh3LCAweDQ1LCBIRkEzODR4X1BDSUNPUik7CisJdGltZW91dCA9IGppZmZpZXMgKyBIWi8yOworCXdoaWxlKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKSB1ZGVsYXkoNSk7CisKKwkvKiBXYWl0IGZvciBmL3cgdG8gY29tcGxldGUgaW5pdGlhbGl6YXRpb24gKENNRDpCVVNZID09IDApCisJICovCisJdGltZW91dCA9IGppZmZpZXMgKyAyKkhaOworCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NNRCk7CisJd2hpbGUgKCBIRkEzODR4X0NNRF9JU0JVU1kocmVnKSAmJiB0aW1lX2JlZm9yZSggamlmZmllcywgdGltZW91dCkgKSB7CisJCXJlZyA9IGhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0NNRCk7CisJCXVkZWxheSgxMCk7CisJfQorCWlmIChIRkEzODR4X0NNRF9JU0JVU1kocmVnKSkgeworCQlXTEFOX0xPR19XQVJOSU5HKCJjb3JlcmVzZXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBjbWQgcmVnaXN0ZXIuXG4iKTsKKwkJcmVzdWx0PTE7CisJfQorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMl9wbHguYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMl9wbHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjA0NDNmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX3BseC5jCkBAIC0wLDAgKzEsNDcyIEBACisjZGVmaW5lIFdMQU5fSE9TVElGIFdMQU5fUExYCisjaW5jbHVkZSAiaGZhMzg0eC5jIgorI2luY2x1ZGUgInByaXNtMm1nbXQuYyIKKyNpbmNsdWRlICJwcmlzbTJtaWIuYyIKKyNpbmNsdWRlICJwcmlzbTJzdGEuYyIKKworI2RlZmluZSBQTFhfQVRUUl9TSVpFCTB4MTAwMAkvKiBBdHRyaWJ1dGUgbWVtb3J5IHNpemUgLSA0SyBieXRlcyAqLworI2RlZmluZSBDT1JfT0ZGU0VUCTB4M2UwCS8qIENPUiBhdHRyaWJ1dGUgb2Zmc2V0IG9mIFByaXNtMiBQQyBjYXJkICovCisjZGVmaW5lIENPUl9WQUxVRQkweDQxCS8qIEVuYWJsZSBQQyBjYXJkIHdpdGggaXJxIGluIGxldmVsIHRyaWdnZXIgKi8KKyNkZWZpbmUgUExYX0lOVENTUgkweDRjCS8qIEludGVycnVwdCBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUExYX0lOVENTUl9JTlRFTiAoMTw8NikgLyogSW50ZXJydXB0IEVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgUExYX01JTl9BVFRSX0xFTiA1MTIgICAgLyogYXQgbGVhc3QgMiB4IDI1NiBpcyBuZWVkZWQgZm9yIENJUyAqLworCisvKiAzQ29tIDNDUlc3NzdBIChQTFgpIGJvYXJkIElEICovCisjZGVmaW5lIFBDSVZFTkRPUl8zQ09NICAgICAgIDB4MTBCNworI2RlZmluZSBQQ0lERVZJQ0VfQUlSQ09OTkVDVCAweDc3NzAKKworLyogRXVtaXRjb20gUENJIFdMMTEwMDAgUENJIEFkYXB0ZXIgKFBMWCkgYm9hcmQgZGV2aWNlK3ZlbmRvciBJRCAqLworI2RlZmluZSBQQ0lWRU5ET1JfRVVNSVRDT00JMHgxNjM4VUwKKyNkZWZpbmUgUENJREVWSUNFX1dMMTEwMDAJMHgxMTAwVUwKKworLyogR2xvYmFsIFN1biBUZWNoIEdMMjQxMTBQIFBDSSBBZGFwdGVyIChQTFgpIGJvYXJkIGRldmljZSt2ZW5kb3IgSUQgKi8KKyNkZWZpbmUgUENJVkVORE9SX0dMT0JBTFNVTgkweDE2YWJVTAorI2RlZmluZSBQQ0lERVZJQ0VfR0wyNDExMFAJMHgxMTAxVUwKKyNkZWZpbmUgUENJREVWSUNFX0dMMjQxMTBQX0FMVAkweDExMDJVTAorCisvKiBOZXRnZWFyIE1BMzAxIFBDSSBBZGFwdGVyIChQTFgpIGJvYXJkIGRldmljZSt2ZW5kb3IgSUQgKi8KKyNkZWZpbmUgUENJVkVORE9SX05FVEdFQVIJMHgxMzg1VUwKKyNkZWZpbmUgUENJREVWSUNFX01BMzAxCQkweDQxMDBVTAorCisvKiBVUyBSb2JvdGljcyBVU1IyNDEwIFBDSSBBZGFwdGVyIChQTFgpIGJvYXJkIGRldmljZSt2ZW5kb3IgSUQgKi8KKyNkZWZpbmUJUENJVkVORE9SX1VTUk9CT1RJQ1MgICAgMHgxNmVjVUwKKyNkZWZpbmUgUENJREVWSUNFX1VTUjI0MTAgICAgICAgMHgzNjg1VUwKKworLyogTGlua3N5cyBXUEMxMSBjYXJkIHdpdGggdGhlIFdEVDExIGFkYXB0ZXIgKFBMWCkgYm9hcmQgZGV2aWNlK3ZlbmRvciBJRCAqLworI2RlZmluZQlQQ0lWRU5ET1JfTGlua3N5cyAgICAgICAweDE2YWJVTAorI2RlZmluZSBQQ0lERVZJQ0VfV3BjMTFXZHQxMSAgICAweDExMDJVTAorCisvKiBOYXRpb25hbCBEYXRhY29tbSBDb3JwIFNPSE93YXJlIE5ldGJsYXN0ZXIgSUkgUENJICovCisjZGVmaW5lIFBDSVZFTkRPUl9OREMJICAgICAgICAweDE1ZThVTAorI2RlZmluZSBQQ0lERVZJQ0VfTkNQMTMwX1BMWCAJMHgwMTMwVUwKKyNkZWZpbmUgUENJREVWSUNFX05DUDEzMF9BU0lDCTB4MDEzMVVMCisKKy8qIE5EQyBOQ1AxMzBfUExYIGlzIGFsc28gc29sZCBieSBDb3JlZ2EuIFRoZWlyIG5hbWUgaXMgQ0dXTFBDSUExMSAqLworI2RlZmluZSBQQ0lWRU5ET1JfQ09SRUdBICAgICAgIFBDSVZFTkRPUl9OREMKKyNkZWZpbmUgUENJREVWSUNFX0NHV0xQQ0lBMTEgICBQQ0lERVZJQ0VfTkNQMTMwX1BMWAorCisvKiBQQ0kgQ2xhc3MgJiBTdWItQ2xhc3MgY29kZSwgTmV0d29yay0nT3RoZXIgY29udHJvbGxlcicgKi8KKyNkZWZpbmUgUENJX0NMQVNTX05FVFdPUktfT1RIRVJTIDB4MjgwCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfcHJvYmVfcGx4CisqCisqIFByb2JlIHJvdXRpbmUgY2FsbGVkIHdoZW4gYSBQQ0kgZGV2aWNlIHcvIG1hdGNoaW5nIElEIGlzIGZvdW5kLgorKiBUaGlzIFBMWCBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBmb2xsb3dpbmcgbWFwOgorKiAgIEJBUjA6IFVudXNlZAorKiAgIEJBUjE6ID8/Pz8KKyogICBCQVIyOiBQQ01DSUEgYXR0cmlidXRlIG1lbW9yeQorKiAgIEJBUjM6IFBDTUNJQSBpL28gc3BhY2UKKyogSGVyZSdzIHRoZSBzZXF1ZW5jZToKKyogICAtIEFsbG9jYXRlIHRoZSBQQ0kgcmVzb3VyY2VzLgorKiAgIC0gUmVhZCB0aGUgUENNQ0lBIGF0dHJpYnV0ZSBtZW1vcnkgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBXTEFOIGNhcmQKKyogICAtIFJlc2V0IHRoZSBNQUMgdXNpbmcgdGhlIFBDTUNJQSBDT1IKKyogICAtIEluaXRpYWxpemUgdGhlIG5ldGRldiBhbmQgd2xhbiBkYXRhCisqICAgLSBJbml0aWFsaXplIHRoZSBNQUMKKyoKKyogQXJndW1lbnRzOgorKglwZGV2CQlwdHIgdG8gcGNpIGRldmljZSBzdHJ1Y3R1cmUgY29udGFpbmluZyBpbmZvIGFib3V0CisqCQkJcGNpIGNvbmZpZ3VyYXRpb24uCisqCWlkCQlwdHIgdG8gdGhlIGRldmljZSBpZCBlbnRyeSB0aGF0IG1hdGNoZWQgdGhpcyBkZXZpY2UuCisqCisqIFJldHVybnM6CisqCXplcm8JCS0gc3VjY2VzcworKgluZWdhdGl2ZQktIGZhaWxlZAorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBfX2RldmluaXQKK3ByaXNtMnN0YV9wcm9iZV9wbHgoCisJc3RydWN0IHBjaV9kZXYJCQkqcGRldiwKKwljb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZAkqaWQpCit7CisJaW50CQlyZXN1bHQ7CisgICAgICAgIHBoeXNfdAlwY2NhcmRfaW9hZGRyOworCXBoeXNfdCAgcGNjYXJkX2F0dHJfbWVtOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgcGNjYXJkX2F0dHJfbGVuOworCXZvaWQgX19pb21lbSAqYXR0cl9tZW0gPSBOVUxMOworCVVJTlQzMgkJcGx4X2FkZHI7CisgICAgICAgIHdsYW5kZXZpY2VfdCAgICAqd2xhbmRldiA9IE5VTEw7CisJaGZhMzg0eF90CSpodyA9IE5VTEw7CisJaW50CQlyZWc7CisgICAgICAgIHUzMgkJcmVnaWM7CisKKwlpZiAocGNpX2VuYWJsZV9kZXZpY2UocGRldikpCisJCXJldHVybiAtRUlPOworCisJLyogVE1DNzE2MCBib2FyZHMgYXJlIHNwZWNpYWwgKi8KKwlpZiAoKHBkZXYtPnZlbmRvciA9PSBQQ0lWRU5ET1JfTkRDKSAmJgorCSAgICAocGRldi0+ZGV2aWNlID09IFBDSURFVklDRV9OQ1AxMzBfQVNJQykpIHsKKwkJdW5zaWduZWQgbG9uZyBkZWxheTsKKworCQlwY2NhcmRfYXR0cl9tZW0gPSAwOworCQlwY2NhcmRfaW9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDEpOworCisJCW91dGIoMHg0NSwgcGNjYXJkX2lvYWRkcik7CisJCWRlbGF5ID0gamlmZmllcyArIDEqSFo7CisJCXdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBkZWxheSkpOworCisJCWlmIChpbmIocGNjYXJkX2lvYWRkcikgIT0gMHg0NSkgeworCQkJV0xBTl9MT0dfRVJST1IoIkluaXRpYWxpemUgdGhlIFRNQzcxNjAgZmFpbGVkLiAoMHgleClcbiIsIGluYihwY2NhcmRfaW9hZGRyKSk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCisJCXBjY2FyZF9pb2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMik7CisJCXByaXNtMl9kb3Jlc2V0ID0gMDsKKworCQlXTEFOX0xPR19JTkZPKCJOREMgTkNQMTMwIHdpdGggVE1DNzE2KEFTSUMpIFBDSSBpbnRlcmZhY2UgZGV2aWNlIGZvdW5kIGF0IGlvOjB4JXgsIGlycTolZFxuIiwgcGNjYXJkX2lvYWRkciwgcGRldi0+aXJxKTsKKwkJZ290byBpbml0OworCX0KKworCS8qIENvbGxlY3QgdGhlIHJlc291cmNlIHJlcXVpcmVtZW50cyAqLworCXBjY2FyZF9hdHRyX21lbSA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAyKTsKKwlwY2NhcmRfYXR0cl9sZW4gPSBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDIpOworICAgICAgICBpZiAocGNjYXJkX2F0dHJfbGVuIDwgUExYX01JTl9BVFRSX0xFTikKKwkJcmV0dXJuIC1FSU87CisKKwlwY2NhcmRfaW9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDMpOworCisJLyogYmpvZXJuOiBXZSBuZWVkIHRvIHRlbGwgdGhlIGNhcmQgdG8gZW5hYmxlIGludGVycnVwdHMsIGluCisJICogY2FzZSB0aGUgc2VyaWFsIGVwcm9tIGRpZG4ndCBkbyB0aGlzIGFscmVhZHkuIFNlZSB0aGUKKwkgKiBQTFg5MDUyIGRhdGEgYm9vaywgcDgtMSBhbmQgOC0yNCBmb3IgcmVmZXJlbmNlLgorCSAqIFtNU01dOiBUaGlzIGJpdCBvZiBjb2RlIGNhbWUgZnJvbSB0aGUgb3Jpbm9jb19jcyBkcml2ZXIuCisJICovCisJcGx4X2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMSk7CisKKwlyZWdpYyA9IDA7CisJcmVnaWMgPSBpbmwocGx4X2FkZHIrUExYX0lOVENTUik7CisJaWYocmVnaWMgJiBQTFhfSU5UQ1NSX0lOVEVOKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkiJXM6IExvY2FsIEludGVycnVwdCBhbHJlYWR5IGVuYWJsZWRcbiIsIGRldl9pbmZvKTsKKwl9IGVsc2UgeworCQlyZWdpYyB8PSBQTFhfSU5UQ1NSX0lOVEVOOworCQlvdXRsKHJlZ2ljLCBwbHhfYWRkcitQTFhfSU5UQ1NSKTsKKwkJcmVnaWMgPSBpbmwocGx4X2FkZHIrUExYX0lOVENTUik7CisJCWlmKCEocmVnaWMgJiBQTFhfSU5UQ1NSX0lOVEVOKSkgeworCQkJV0xBTl9MT0dfRVJST1IoCisJCQkJIiVzOiBDb3VsZG4ndCBlbmFibGUgTG9jYWwgSW50ZXJydXB0c1xuIiwKKwkJCQlkZXZfaW5mbyk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCS8qIFRoZXNlIGFzc2lnbm1lbnRzIGFyZSBoZXJlIGluIGNhc2Ugb2YgZnV0dXJlIG1hcHBpbmdzIGZvcgorCSAqIGlvIHNwYWNlIGFuZCBpcnEgdGhhdCBtaWdodCBiZSBzaW1pbGFyIHRvIGlvcmVtYXAKKwkgKi8KKyAgICAgICAgaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24ocGNjYXJkX2F0dHJfbWVtLCBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDIpLCAiUHJpc20yIikpIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiBDb3VsZG4ndCByZXNlcnZlIFBDSSBtZW1vcnkgcmVnaW9uXG4iLCBkZXZfaW5mbyk7CisJCXJldHVybiAtRUlPOworICAgICAgICB9CisKKwlhdHRyX21lbSA9IGlvcmVtYXAocGNjYXJkX2F0dHJfbWVtLCBwY2NhcmRfYXR0cl9sZW4pOworCisJV0xBTl9MT0dfSU5GTygiQSBQTFggUENJL1BDTUNJQSBpbnRlcmZhY2UgZGV2aWNlIGZvdW5kLCAiCisJCSJwaHltZW06MHglbGx4LCBwaHlpbz0weCV4LCBpcnE6JWQsICIKKwkJIm1lbTogMHglbHhcbiIsCisJCSh1bnNpZ25lZCBsb25nIGxvbmcpcGNjYXJkX2F0dHJfbWVtLCBwY2NhcmRfaW9hZGRyLCBwZGV2LT5pcnEsCisJCSh1bnNpZ25lZCBsb25nKWF0dHJfbWVtKTsKKworCS8qIFZlcmlmeSB3aGV0aGVyIFBDIGNhcmQgaXMgcHJlc2VudC4KKwkgKiBbTVNNXSBUaGlzIG5lZWRzIGltcHJvdmVtZW50LCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaXMKKwkgKiBwcm9iYWJseSB0byB3YWxrIHRoZSBDSVMgbG9va2luZyBmb3IgdGhlIHZlbmRvciBhbmQgcHJvZHVjdAorCSAqIElEcy4gIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhpcyBjb3VsZCBiZSB0aWVkIGluIHdpdGggdGhlCisJICogZXRjL3BjbWNpYS93bGFuLW5nLmNvbmYgZmlsZS4gIEFueSB2b2x1bnRlZXJzPyAgOy0pCisJICovCisJaWYgKAorCXJlYWRiKGF0dHJfbWVtICsgMCkgIT0gMHgwMSB8fCByZWFkYihhdHRyX21lbSArIDIpICE9IDB4MDMgfHwKKwlyZWFkYihhdHRyX21lbSArIDQpICE9IDB4MDAgfHwgcmVhZGIoYXR0cl9tZW0gKyA2KSAhPSAweDAwIHx8CisJcmVhZGIoYXR0cl9tZW0gKyA4KSAhPSAweEZGIHx8IHJlYWRiKGF0dHJfbWVtICsgMTApICE9IDB4MTcgfHwKKwlyZWFkYihhdHRyX21lbSArIDEyKSAhPSAweDA0IHx8IHJlYWRiKGF0dHJfbWVtICsgMTQpICE9IDB4NjcpIHsKKwkJV0xBTl9MT0dfRVJST1IoIlByaXNtMiBQQyBjYXJkIENJUyBpcyBpbnZhbGlkLlxuIik7CisJCXJldHVybiAtRUlPOworICAgICAgICB9CisgICAgICAgIFdMQU5fTE9HX0lORk8oIkEgUENNQ0lBIFdMQU4gYWRhcHRlciB3YXMgZm91bmQuXG4iKTsKKworICAgICAgICAvKiBXcml0ZSBDT1IgdG8gZW5hYmxlIFBDIGNhcmQgKi8KKwl3cml0ZWIoQ09SX1ZBTFVFLCBhdHRyX21lbSArIENPUl9PRkZTRVQpOworCXJlZyA9IHJlYWRiKGF0dHJfbWVtICsgQ09SX09GRlNFVCk7CisKKyBpbml0OgorCisJLyoKKwkgKiBOb3cgZG8gZXZlcnl0aGluZyB0aGUgc2FtZSBhcyBhIFBDSSBkZXZpY2UKKwkgKiBbTVNNXSBUT0RPOiBXZSBjb3VsZCBwcm9iYWJseSBmYWN0b3IgdGhpcyBvdXQgb2YgcGNtY2lhL3BjaS9wbHgKKwkgKiBhbmQgcGVyaGFwcyB1c2IuICBQZXJoYXBzIGEgdGFzayBmb3IgYW5vdGhlciBkYXkuLi4uLi4uCisJICovCisKKwlpZiAoKHdsYW5kZXYgPSBjcmVhdGVfd2xhbigpKSA9PSBOVUxMKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogTWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJaWYgKCB3bGFuX3NldHVwKHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogd2xhbl9zZXR1cCgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogU2V0dXAgbmV0ZGV2aWNlJ3MgYWJpbGl0eSB0byByZXBvcnQgcmVzb3VyY2VzCisJICogTm90ZTogdGhlIG5ldGRldmljZSB3YXMgYWxsb2NhdGVkIGJ5IHdsYW5fc2V0dXAoKQorCSAqLworICAgICAgICB3bGFuZGV2LT5uZXRkZXYtPmlycSA9IHBkZXYtPmlycTsKKyAgICAgICAgd2xhbmRldi0+bmV0ZGV2LT5iYXNlX2FkZHIgPSBwY2NhcmRfaW9hZGRyOworICAgICAgICB3bGFuZGV2LT5uZXRkZXYtPm1lbV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKWF0dHJfbWVtOworICAgICAgICB3bGFuZGV2LT5uZXRkZXYtPm1lbV9lbmQgPSAodW5zaWduZWQgbG9uZylhdHRyX21lbSArIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCk7CisKKwkvKiBJbml0aWFsaXplIHRoZSBodyBkYXRhICovCisgICAgICAgIGhmYTM4NHhfY3JlYXRlKGh3LCB3bGFuZGV2LT5uZXRkZXYtPmlycSwgcGNjYXJkX2lvYWRkciwgYXR0cl9tZW0pOworCWh3LT53bGFuZGV2ID0gd2xhbmRldjsKKworCS8qIFJlZ2lzdGVyIHRoZSB3bGFuZGV2LCB0aGlzIGdldHMgdXMgYSBuYW1lIGFuZCByZWdpc3RlcnMgdGhlCisJICogbGludXggbmV0ZGV2aWNlLgorCSAqLworCVNFVF9NT0RVTEVfT1dORVIod2xhbmRldi0+bmV0ZGV2KTsKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKSkKKyAgICAgICBTRVRfTkVUREVWX0RFVih3bGFuZGV2LT5uZXRkZXYsICYocGRldi0+ZGV2KSk7CisjZW5kaWYKKyAgICAgICAgaWYgKCByZWdpc3Rlcl93bGFuZGV2KHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogcmVnaXN0ZXJfd2xhbmRldigpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisgICAgICAgIH0KKworI2lmIDAKKwkvKiBUT0RPOiBNb3ZlIHRoaXMgYW5kIGFuIGlycSB0ZXN0IGludG8gYW4gaGZhMzg0eF90ZXN0aWYoKSByb3V0aW5lLgorCSAqLworCW91dHcoUFJJU00yU1RBX01BR0lDLCBIRkEzODR4X1NXU1VQUE9SVCh3bGFuZGV2LT5uZXRkZXYtPmJhc2VfYWRkcikpOworCXJlZz1pbncoIEhGQTM4NHhfU1dTVVBQT1JUKHdsYW5kZXYtPm5ldGRldi0+YmFzZV9hZGRyKSk7CisJaWYgKCByZWcgIT0gUFJJU00yU1RBX01BR0lDICkgeworCQlXTEFOX0xPR19FUlJPUigiTUFDIHJlZ2lzdGVyIGFjY2VzcyB0ZXN0IGZhaWxlZCFcbiIpOworIAkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisJfQorI2VuZGlmCisKKwkvKiBEbyBhIGNoaXAtbGV2ZWwgcmVzZXQgb24gdGhlIE1BQyAqLworCWlmIChwcmlzbTJfZG9yZXNldCkgeworCQlyZXN1bHQgPSBoZmEzODR4X2NvcmVyZXNldChodywKKwkJCQlwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIDApOworCQlpZiAocmVzdWx0ICE9IDApIHsKKwkJCXVucmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KTsKKwkJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkiJXM6IGhmYTM4NHhfY29yZXJlc2V0KCkgZmFpbGVkLlxuIiwKKwkJCQlkZXZfaW5mbyk7CisJCQlyZXN1bHQgPSAtRUlPOworCQkJZ290byBmYWlsZWQ7CisJCX0KKwl9CisKKwlwY2lfc2V0X2RydmRhdGEocGRldiwgd2xhbmRldik7CisKKwkvKiBTaG91bGRuJ3QgYWN0dWFsbHkgaG9vayB1cCB0aGUgSVJRIHVudGlsIHdlCisJICogX2tub3dfIHRoaW5ncyBhcmUgYWxyaWdodC4gIEEgdGVzdCByb3V0aW5lIHdvdWxkIGhlbHAuCisJICovCisgICAgICAgCXJlcXVlc3RfaXJxKHdsYW5kZXYtPm5ldGRldi0+aXJxLCBoZmEzODR4X2ludGVycnVwdCwKKwkJU0FfU0hJUlEsIHdsYW5kZXYtPm5hbWUsIHdsYW5kZXYpOworCisJd2xhbmRldi0+bXNkc3RhdGUgPSBXTEFOX01TRF9IV1BSRVNFTlQ7CisKKwlyZXN1bHQgPSAwOworCisJZ290byBkb25lOworCisgZmFpbGVkOgorCisJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOworCWlmICh3bGFuZGV2KQlrZnJlZSh3bGFuZGV2KTsKKwlpZiAoaHcpCQlrZnJlZShodyk7CisgICAgICAgIGlmIChhdHRyX21lbSkgICAgICAgIGlvdW5tYXAoYXR0cl9tZW0pOworCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7CisgICAgICAgIHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKKworIGRvbmU6CisJREJGRVhJVDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgX19kZXZleGl0IHByaXNtMnN0YV9yZW1vdmVfcGx4KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworICAgICAgIAl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2OworCWhmYTM4NHhfdCAgICAgICAgICAgICAgICpodzsKKworCXdsYW5kZXYgPSAod2xhbmRldmljZV90ICopIHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlodyA9IHdsYW5kZXYtPnByaXY7CisKKwlwODAyMTFuZXRkZXZfaHdyZW1vdmVkKHdsYW5kZXYpOworCisJLyogcmVzZXQgaGFyZHdhcmUgKi8KKwlwcmlzbTJzdGFfaWZzdGF0ZSh3bGFuZGV2LCBQODAyMTFFTlVNX2lmc3RhdGVfZGlzYWJsZSk7CisKKyAgICAgICAgaWYgKHBkZXYtPmlycSkKKwkJZnJlZV9pcnEocGRldi0+aXJxLCB3bGFuZGV2KTsKKworCXVucmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KTsKKworCS8qIGZyZWUgbG9jYWwgc3R1ZmYgKi8KKwlpZiAoaHcpIHsKKwkJaGZhMzg0eF9kZXN0cm95KGh3KTsKKwkJa2ZyZWUoaHcpOworCX0KKworCWlvdW5tYXAoKHZvaWQgX19pb21lbSAqKXdsYW5kZXYtPm5ldGRldi0+bWVtX3N0YXJ0KTsKKwl3bGFuX3Vuc2V0dXAod2xhbmRldik7CisKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOworICAgICAgICBwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CisJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOworCisJa2ZyZWUod2xhbmRldik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwbHhfaWRfdGJsW10gPSB7CisJeworCQlQQ0lWRU5ET1JfRVVNSVRDT00sIFBDSURFVklDRV9XTDExMDAwLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiRXVtaXRjb20gV0wxMTAwMCBQQ0koUExYKSBjYXJkIgorCX0sCisJeworCQlQQ0lWRU5ET1JfR0xPQkFMU1VOLCBQQ0lERVZJQ0VfR0wyNDExMFAsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsCisJCTAsIDAsCisJCS8qIERyaXZlciBkYXRhLCB3ZSBqdXN0IHB1dCB0aGUgbmFtZSBoZXJlICovCisJCSh1bnNpZ25lZCBsb25nKSJHbG9iYWwgU3VuIFRlY2ggR0wyNDExMFAgUENJKFBMWCkgY2FyZCIKKwl9LAorCXsKKwkJUENJVkVORE9SX0dMT0JBTFNVTiwgUENJREVWSUNFX0dMMjQxMTBQX0FMVCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKKwkJMCwgMCwKKwkJLyogRHJpdmVyIGRhdGEsIHdlIGp1c3QgcHV0IHRoZSBuYW1lIGhlcmUgKi8KKwkJKHVuc2lnbmVkIGxvbmcpIkdsb2JhbCBTdW4gVGVjaCBHTDI0MTEwUCBQQ0koUExYKSBjYXJkIgorCX0sCisJeworCQlQQ0lWRU5ET1JfTkVUR0VBUiwgUENJREVWSUNFX01BMzAxLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiR2xvYmFsIFN1biBUZWNoIEdMMjQxMTBQIFBDSShQTFgpIGNhcmQiCisJfSwKKwl7CisJCVBDSVZFTkRPUl9VU1JPQk9USUNTLCBQQ0lERVZJQ0VfVVNSMjQxMCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKKwkJMCwgMCwKKwkJLyogRHJpdmVyIGRhdGEsIHdlIGp1c3QgcHV0IHRoZSBuYW1lIGhlcmUgKi8KKwkJKHVuc2lnbmVkIGxvbmcpIlVTIFJvYm90aWNzIFVTUjI0MTAgUENJKFBMWCkgY2FyZCIKKwl9LAorCXsKKwkJUENJVkVORE9SX0xpbmtzeXMsIFBDSURFVklDRV9XcGMxMVdkdDExLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiTGlua3N5cyBXUEMxMSB3aXRoIFdEVDExIFBDSShQTFgpIGFkYXB0ZXIiCisJfSwKKwl7CisJICAgICAgICBQQ0lWRU5ET1JfTkRDLCBQQ0lERVZJQ0VfTkNQMTMwX1BMWCwKKwkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKKwkJMCwgMCwKKwkJLyogRHJpdmVyIGRhdGEsIHdlIGp1c3QgcHV0IHRoZSBuYW1lIGhlcmUgKi8KKwkJKHVuc2lnbmVkIGxvbmcpIk5EQyBOZXRibGFzdGVyIElJIFBDSShQTFgpIgorCX0sCisJeworCSAgICAgICAgUENJVkVORE9SX05EQywgUENJREVWSUNFX05DUDEzMF9BU0lDLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAorCQkwLCAwLAorCQkvKiBEcml2ZXIgZGF0YSwgd2UganVzdCBwdXQgdGhlIG5hbWUgaGVyZSAqLworCQkodW5zaWduZWQgbG9uZykiTkRDIE5ldGJsYXN0ZXIgSUkgUENJKFRNQzcxNjApIgorCX0sCisJeworCQlQQ0lWRU5ET1JfM0NPTSwgUENJREVWSUNFX0FJUkNPTk5FQ1QsCisJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsCisJCTAsIDAsCisJCS8qIERyaXZlciBkYXRhLCB3ZSBqdXN0IHB1dCB0aGUgbmFtZSBoZXJlICovCisJCSh1bnNpZ25lZCBsb25nKSIzQ29tIEFpckNvbm5lY3QgUENJIDgwMi4xMWIgMTFNYi9zIFdMQU4gQ29udHJvbGxlciIKKwl9LAorCXsKKwkJMCwgMCwgMCwgMCwgMCwgMCwgMAorCX0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBwbHhfaWRfdGJsKTsKKworLyogRnVuY3Rpb24gZGVjbGFyZWQgaGVyZSBiZWNhdXNlIG9mIHB0ciByZWZlcmVuY2UgYmVsb3cgKi8KK3N0YXRpYyBpbnQgX19kZXZpbml0IHByaXNtMnN0YV9wcm9iZV9wbHgoc3RydWN0IHBjaV9kZXYgKnBkZXYsCisJCQkJCSBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqKTsKK3N0YXRpYyB2b2lkIF9fZGV2ZXhpdCBwcmlzbTJzdGFfcmVtb3ZlX3BseChzdHJ1Y3QgcGNpX2RldiAqcGRldik7CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBwcmlzbTJfcGx4X2Rydl9pZCA9IHsKKyAgICAgICAgLm5hbWUgPSAicHJpc20yX3BseCIsCisgICAgICAgIC5pZF90YWJsZSA9IHBseF9pZF90YmwsCisgICAgICAgIC5wcm9iZSA9IHByaXNtMnN0YV9wcm9iZV9wbHgsCisgICAgICAgIC5yZW1vdmUgPSBwcmlzbTJzdGFfcmVtb3ZlX3BseCwKKyNpZmRlZiBDT05GSUdfUE0KKyAgICAgICAgLnN1c3BlbmQgPSBwcmlzbTJzdGFfc3VzcGVuZF9wY2ksCisgICAgICAgIC5yZXN1bWUgPSBwcmlzbTJzdGFfcmVzdW1lX3BjaSwKKyNlbmRpZgorfTsKKworI2lmZGVmIE1PRFVMRQorCitzdGF0aWMgaW50IF9faW5pdCBwcmlzbTJwbHhfaW5pdCh2b2lkKQoreworICAgICAgICBXTEFOX0xPR19OT1RJQ0UoIiVzIExvYWRlZFxuIiwgdmVyc2lvbik7CisJcmV0dXJuIHBjaV9tb2R1bGVfaW5pdCgmcHJpc20yX3BseF9kcnZfaWQpOworfTsKKworc3RhdGljIHZvaWQgX19leGl0IHByaXNtMnBseF9jbGVhbnVwKHZvaWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZwcmlzbTJfcGx4X2Rydl9pZCk7Cit9OworCittb2R1bGVfaW5pdChwcmlzbTJwbHhfaW5pdCk7Cittb2R1bGVfZXhpdChwcmlzbTJwbHhfY2xlYW51cCk7CisKKyNlbmRpZiAvLyBNT0RVTEUKKworCitpbnQgaGZhMzg0eF9jb3JlcmVzZXQoaGZhMzg0eF90ICpodywgaW50IGhvbGR0aW1lLCBpbnQgc2V0dGxldGltZSwgaW50IGdlbmVzaXMpCit7CisJaW50CQlyZXN1bHQgPSAwOworCisjZGVmaW5lIENPUl9PRkZTRVQJMHgzZTAJLyogQ09SIGF0dHJpYnV0ZSBvZmZzZXQgb2YgUHJpc20yIFBDIGNhcmQgKi8KKyNkZWZpbmUgQ09SX1ZBTFVFCTB4NDEJLyogRW5hYmxlIFBDIGNhcmQgd2l0aCBpcnEgaW4gbGV2ZWwgdHJpZ2dlciAqLworCisjZGVmaW5lIEhDUl9PRkZTRVQJMHgzZTIJLyogSENSIGF0dHJpYnV0ZSBvZmZzZXQgb2YgUHJpc20yIFBDIGNhcmQgKi8KKworCVVJTlQ4CQljb3JzYXZlOworCURCRkVOVEVSOworCisJV0xBTl9MT0dfREVCVUcoMywgIkRvaW5nIHJlc2V0IHZpYSBkaXJlY3QgQ09SIGFjY2Vzcy5cbiIpOworCisJLyogQ29sbGVjdCBDT1IgKi8KKwljb3JzYXZlID0gcmVhZGIoaHctPm1lbWJhc2UgKyBDT1JfT0ZGU0VUKTsKKwkvKiBXcml0ZSByZXNldCBiaXQgKEJJVDcpICovCisJd3JpdGViKGNvcnNhdmUgfCBCSVQ3LCBody0+bWVtYmFzZSArIENPUl9PRkZTRVQpOworCS8qIEhvbGQgZm9yIGhvbGR0aW1lICovCisJbWRlbGF5KGhvbGR0aW1lKTsKKworCWlmIChnZW5lc2lzKSB7CisJCXdyaXRlYihnZW5lc2lzLCBody0+bWVtYmFzZSArIEhDUl9PRkZTRVQpOworCQkvKiBIb2xkIGZvciBob2xkdGltZSAqLworCQltZGVsYXkoaG9sZHRpbWUpOworCX0KKworCS8qIENsZWFyIHJlc2V0IGJpdCAqLworCXdyaXRlYihjb3JzYXZlICYgfkJJVDcsIGh3LT5tZW1iYXNlICsgQ09SX09GRlNFVCk7CisJLyogV2FpdCBmb3Igc2V0dGxldGltZSAqLworCW1kZWxheShzZXR0bGV0aW1lKTsKKwkvKiBTZXQgbm9uLXJlc2V0IGJpdHMgYmFjayB3aGF0IHRoZXkgd2VyZSAqLworCXdyaXRlYihjb3JzYXZlLCBody0+bWVtYmFzZSArIENPUl9PRkZTRVQpOworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMl91c2IuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMl91c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDViZTIzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yX3VzYi5jCkBAIC0wLDAgKzEsMzYxIEBACisjZGVmaW5lIFdMQU5fSE9TVElGIFdMQU5fVVNCCisjaW5jbHVkZSAiaGZhMzg0eF91c2IuYyIKKyNpbmNsdWRlICJwcmlzbTJtZ210LmMiCisjaW5jbHVkZSAicHJpc20ybWliLmMiCisjaW5jbHVkZSAicHJpc20yc3RhLmMiCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw0LDApKQorI2Vycm9yICJwcmlzbTJfdXNiIHJlcXVpcmVzIGF0IGxlYXN0IGEgMi40Lngga2VybmVsISIKKyNlbmRpZgorCisjZGVmaW5lIFBSSVNNX1VTQl9ERVZJQ0UodmlkLCBwaWQsIG5hbWUpIFwKKyAgICAgICAgICAgVVNCX0RFVklDRSh2aWQsIHBpZCksICBcCisgICAgICAgICAgIC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBuYW1lCisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCB1c2JfcHJpc21fdGJsW10gPSB7CisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNGJiLCAweDA5MjIsICJJT0RhdGEgQWlyUG9ydCBXTi1CMTEvVVNCUyIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDA3YWEsIDB4MDAxMiwgIkNvcmVnYSBXaXJlbGVzcyBMQU4gVVNCIFN0aWNrLTExIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MDlhYSwgMHgzNjQyLCAiUHJpc20yLnggMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxNjY4LCAweDA0MDgsICJBY3Rpb250ZWMgUHJpc20yLjUgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxNjY4LCAweDA0MjEsICJBY3Rpb250ZWMgUHJpc20yLjUgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxOTE1LCAweDIyMzYsICJMaW5rc3lzIFdVU0IxMXYzLjAgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNjZiLCAweDIyMTIsICJMaW5rc3lzIFdVU0IxMXYyLjUgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNjZiLCAweDIyMTMsICJMaW5rc3lzIFdVU0IxMnYxLjEgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNjdjLCAweDEwMjIsICJTaWVtZW5zIFNwZWVkU3RyZWFtIDEwMjIgMTFNYnBzIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNDlmLCAweDAwMzMsICJDb21wYXEvSW50ZWwgVzEwMCBQUk8vV2lyZWxlc3MgMTFNYnBzIG11bHRpcG9ydCBXTEFOIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwNDExLCAweDAwMTYsICJNZWxjbyBXTEktVVNCLVMxMSAxMU1icHMgV0xBTiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MDhkZSwgMHg3YTAxLCAiUFJJU00yNSBJRUVFIDgwMi4xMSBNaW5pIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4ODA4NiwgMHgxMTExLCAiSW50ZWwgUFJPL1dpcmVsZXNzIDIwMTFCIExBTiBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDBkOGUsIDB4N2EwMSwgIlBSSVNNMjUgSUVFRSA4MDIuMTEgTWluaSBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDA0NWUsIDB4MDA2ZSwgIk1pY3Jvc29mdCBNTjUxMCBXaXJlbGVzcyBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDA5NjcsIDB4MDIwNCwgIkFjZXIgV2FycGxpbmsgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwY2RlLCAweDAwMDIsICJaLUNvbSA3MjUvNzI2IFByaXNtMi41IFVTQi9VU0IgSW50ZWdyYXRlZCIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDBjZGUsIDB4MDAwNSwgIlotQ29tIFhsNzM1IFdpcmVsZXNzIDgwMi4xMWIgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHg0MTNjLCAweDgxMDAsICJEZWxsIFRydWVNb2JpbGUgMTE4MCBXaXJlbGVzcyBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDBiM2IsIDB4MTYwMSwgIkFMTE5FVCAwMTkzIDExTWJwcyBXTEFOIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MGIzYiwgMHgxNjAyLCAiWnlYRUwgWnlBSVIgQjIwMCBXaXJlbGVzcyBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDBiYWYsIDB4MDBlYiwgIlVTUm9ib3RpY3MgVVNSMTEyMCBXaXJlbGVzcyBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDA0MTEsIDB4MDAyNywgIk1lbGNvIFdMSS1VU0ItS1MxMUcgMTFNYnBzIFdMQU4gQWRhcHRlciIpfSwKKyAgICAgICAge1BSSVNNX1VTQl9ERVZJQ0UoMHgwNGYxLCAweDMwMDksICJKVkMgTVAtWFA3MjUwIEJ1aWx0aW4gVVNCIFdMQU4gQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDA4NDYsIDB4NDExMCwgIk5ldEdlYXIgTUExMTEiKX0sCisgICAgICAgIHtQUklTTV9VU0JfREVWSUNFKDB4MDNmMywgMHgwMDIwLCAiQWRhcHRlYyBBV04tODAyMCBVU0IgV0xBTiBBZGFwdGVyIil9LAorLy8Je1BSSVNNX1VTQl9ERVZJQ0UoMHgwYWNlLCAweDEyMDEsICJaeURBUyBaRDEyMDEgV2lyZWxlc3MgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgyODIxLCAweDMzMDAsICJBU1VTLVdMMTQwIFdpcmVsZXNzIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MjAwMSwgMHgzNzAwLCAiRFdMLTEyMiBXaXJlbGVzcyBVU0IgQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDIwMDEsIDB4MzcwMiwgIkRXTC0xMjAgUmV2IEYgV2lyZWxlc3MgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHg1MGMyLCAweDQwMTMsICJBdmVyYXRlYyBVU0IgV0xBTiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MmMwMiwgMHgxNGVhLCAiUGxhbmV4IEdXLVVTMTFIIFdMQU4gVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxMjRhLCAweDE2OGIsICJBaXJ2YXN0IFBSSVNNMyBXTEFOIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MDgzYSwgMHgzNTAzLCAiVC1TaW51cyAxMTEgVVNCIFdMQU4gQWRhcHRlciIpfSwKKwl7UFJJU01fVVNCX0RFVklDRSgweDI4MjEsIDB4MzMwMCwgIkhhd2tpbmcgSGlnaERCIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MDQxMSwgMHgwMDQ0LCAiTWVsY28gV0xJLVVTQi1LQjExIDExTWJwcyBXTEFOIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxNjY4LCAweDYxMDYsICJST1BFWCBGcmVlTGFuIDgwMi4xMWIgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgxMjRhLCAweDQwMTcsICJQaGVlbmV0IFdMLTUwM0lBIDgwMi4xMWIgVVNCIEFkYXB0ZXIiKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHgwYmIyLCAweDAzMDIsICJBbWJpdCBNaWNyb3N5c3RlbXMgQ29ycC4iKX0sCisJe1BSSVNNX1VTQl9ERVZJQ0UoMHg5MDE2LCAweDE4MmQsICJTaXRlY29tIFdMLTAyMiA4MDIuMTFiIFVTQiBBZGFwdGVyIil9LAorCXtQUklTTV9VU0JfREVWSUNFKDB4MDU0MywgMHgwZjAxLCAiVmlld1NvbmljIEFpcnN5bmMgVVNCIEFkYXB0ZXIgMTFNYnBzIChQcmlzbTIuNSkiKX0sCisJeyAvKiB0ZXJtaW5hdG9yICovIH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCB1c2JfcHJpc21fdGJsKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9wcm9iZV91c2IKKyoKKyogUHJvYmUgcm91dGluZSBjYWxsZWQgYnkgdGhlIFVTQiBzdWJzeXN0ZW0uCisqCisqIEFyZ3VtZW50czoKKyoJZGV2CQlwdHIgdG8gdGhlIHVzYl9kZXZpY2Ugc3RydWN0CisqCWlmbnVtCQlpbnRlcmZhY2UgbnVtYmVyIGJlaW5nIG9mZmVyZWQKKyoKKyogUmV0dXJuczoKKyoJTlVMTAkJLSB3ZSdyZSBub3QgY2xhaW1pbmcgdGhlIGRldmljZStpbnRlcmZhY2UKKyoJbm9uLU5VTEwJLSB3ZSBhcmUgY2xhaW1pbmcgdGhlIGRldmljZStpbnRlcmZhY2UgYW5kCisqCQkJICB0aGlzIGlzIGEgcHRyIHRvIHRoZSBkYXRhIHdlIHdhbnQgYmFjaworKgkJCSAgd2hlbiBkaXNjb25uZWN0IGlzIGNhbGxlZC4KKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCUknbSBub3Qgc3VyZSwgYXNzdW1lIGl0J3MgaW50ZXJydXB0LgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdCAqcHJpc20yc3RhX3Byb2JlX3VzYigKKwlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LAorCXVuc2lnbmVkIGludCBpZm51bSwKKwljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCisjZWxzZQorc3RhdGljIGludCBwcmlzbTJzdGFfcHJvYmVfdXNiKAorCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCisJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQorI2VuZGlmCit7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDApKQorCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7CisjZWxzZQorCXN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CisjZW5kaWYKKworCXdsYW5kZXZpY2VfdAkqd2xhbmRldiA9IE5VTEw7CisJaGZhMzg0eF90CSpodyA9IE5VTEw7CisJaW50ICAgICAgICAgICAgICByZXN1bHQgPSAwOworCisJREJGRU5URVI7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw1LDApKQorCWludGVyZmFjZSA9ICZkZXYtPmFjdGNvbmZpZy0+aW50ZXJmYWNlW2lmbnVtXTsKKyNlbHNlCisJZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpOworI2VuZGlmCisKKworCWlmICgod2xhbmRldiA9IGNyZWF0ZV93bGFuKCkpID09IE5VTEwpIHsKKwkJV0xBTl9MT0dfRVJST1IoIiVzOiBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLlxuIiwgZGV2X2luZm8pOworCQlyZXN1bHQgPSAtRUlPOworCQlnb3RvIGZhaWxlZDsKKwl9CisJaHcgPSB3bGFuZGV2LT5wcml2OworCisJaWYgKCB3bGFuX3NldHVwKHdsYW5kZXYpICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCIlczogd2xhbl9zZXR1cCgpIGZhaWxlZC5cbiIsIGRldl9pbmZvKTsKKwkJcmVzdWx0ID0gLUVJTzsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogSW5pdGlhbGl6ZSB0aGUgaHcgZGF0YSAqLworCWhmYTM4NHhfY3JlYXRlKGh3LCBkZXYpOworCWh3LT53bGFuZGV2ID0gd2xhbmRldjsKKworCS8qIFJlZ2lzdGVyIHRoZSB3bGFuZGV2LCB0aGlzIGdldHMgdXMgYSBuYW1lIGFuZCByZWdpc3RlcnMgdGhlCisJICogbGludXggbmV0ZGV2aWNlLgorCSAqLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApKQorCVNFVF9ORVRERVZfREVWKHdsYW5kZXYtPm5ldGRldiwgJihpbnRlcmZhY2UtPmRldikpOworI2VuZGlmCisgICAgICAgIGlmICggcmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KSAhPSAwICkgeworCQlXTEFOX0xPR19FUlJPUigiJXM6IHJlZ2lzdGVyX3dsYW5kZXYoKSBmYWlsZWQuXG4iLCBkZXZfaW5mbyk7CisJCXJlc3VsdCA9IC1FSU87CisJCWdvdG8gZmFpbGVkOworICAgICAgICB9CisKKwkvKiBEbyBhIGNoaXAtbGV2ZWwgcmVzZXQgb24gdGhlIE1BQyAqLworCWlmIChwcmlzbTJfZG9yZXNldCkgeworCQlyZXN1bHQgPSBoZmEzODR4X2NvcmVyZXNldChodywKKwkJCQlwcmlzbTJfcmVzZXRfaG9sZHRpbWUsCisJCQkJcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIDApOworCQlpZiAocmVzdWx0ICE9IDApIHsKKwkJCXVucmVnaXN0ZXJfd2xhbmRldih3bGFuZGV2KTsKKwkJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCQlyZXN1bHQgPSAtRUlPOworCQkJV0xBTl9MT0dfRVJST1IoCisJCQkJIiVzOiBoZmEzODR4X2NvcmVyZXNldCgpIGZhaWxlZC5cbiIsCisJCQkJZGV2X2luZm8pOworCQkJZ290byBmYWlsZWQ7CisJCX0KKwl9CisKKyNpZm5kZWYgTkVXX01PRFVMRV9DT0RFCisJdXNiX2luY19kZXZfdXNlKGRldik7CisjZW5kaWYKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxNSkpCisJdXNiX2dldF9kZXYoZGV2KTsKKyNlbmRpZgorCisJd2xhbmRldi0+bXNkc3RhdGUgPSBXTEFOX01TRF9IV1BSRVNFTlQ7CisKKwlnb3RvIGRvbmU7CisKKyBmYWlsZWQ6CisJaWYgKHdsYW5kZXYpCWtmcmVlKHdsYW5kZXYpOworCWlmIChodykJCWtmcmVlKGh3KTsKKwl3bGFuZGV2ID0gTlVMTDsKKworIGRvbmU6CisJREJGRVhJVDsKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDUsMCkpCisJcmV0dXJuIHdsYW5kZXY7CisjZWxzZQorCXVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCB3bGFuZGV2KTsKKwlyZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9kaXNjb25uZWN0X3VzYgorKgorKiBDYWxsZWQgd2hlbiBhIGRldmljZSBwcmV2aW91c2x5IGNsYWltZWQgYnkgcHJvYmUgaXMgcmVtb3ZlZAorKiBmcm9tIHRoZSBVU0IuCisqCisqIEFyZ3VtZW50czoKKyoJZGV2CQlwdHIgdG8gdGhlIHVzYl9kZXZpY2Ugc3RydWN0CisqCXB0cgkJcHRyIHJldHVybmVkIGJ5IHByb2JlKCkgd2hlbiB0aGUgZGV2aWNlCisqICAgICAgICAgICAgICAgICAgICAgICB3YXMgY2xhaW1lZC4KKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKK3N0YXRpYyB2b2lkIF9fZGV2ZXhpdAorcHJpc20yc3RhX2Rpc2Nvbm5lY3RfdXNiKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHZvaWQgKnB0cikKKyNlbHNlCitzdGF0aWMgdm9pZAorcHJpc20yc3RhX2Rpc2Nvbm5lY3RfdXNiKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpCisjZW5kaWYKK3sKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKKwl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2OworI2Vsc2UKKwl3bGFuZGV2aWNlX3QJCSp3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCopcHRyOworI2VuZGlmCisKKyAgICAgICAgREJGRU5URVI7CisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKKwl3bGFuZGV2ID0gKHdsYW5kZXZpY2VfdCAqKSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7CisjZW5kaWYKKworCWlmICggd2xhbmRldiAhPSBOVUxMICkgeworCQlMSVNUX0hFQUQoY2xlYW5saXN0KTsKKwkJc3RydWN0IGxpc3RfaGVhZAkqZW50cnk7CisJCXN0cnVjdCBsaXN0X2hlYWQJKnRlbXA7CisJCXVuc2lnbmVkIGxvbmcJCWZsYWdzOworCisJCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKworCQlpZiAoIWh3KQorCQkJZ290byBleGl0OworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJCXA4MDIxMW5ldGRldl9od3JlbW92ZWQod2xhbmRldik7CisJCWxpc3Rfc3BsaWNlX2luaXQoJmh3LT5jdGx4cS5yZWFwYWJsZSwgJmNsZWFubGlzdCk7CisJCWxpc3Rfc3BsaWNlX2luaXQoJmh3LT5jdGx4cS5jb21wbGV0aW5nLCAmY2xlYW5saXN0KTsKKwkJbGlzdF9zcGxpY2VfaW5pdCgmaHctPmN0bHhxLnBlbmRpbmcsICZjbGVhbmxpc3QpOworCQlsaXN0X3NwbGljZV9pbml0KCZody0+Y3RseHEuYWN0aXZlLCAmY2xlYW5saXN0KTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+Y3RseHEubG9jaywgZmxhZ3MpOworCisJCS8qIFRoZXJlJ3Mgbm8gaGFyZHdhcmUgdG8gc2h1dGRvd24sIGJ1dCB0aGUgZHJpdmVyCisJCSAqIG1pZ2h0IGhhdmUgc29tZSB0YXNrcyBvciB0YXNrbGV0cyB0aGF0IG11c3QgYmUKKwkJICogc3RvcHBlZCBiZWZvcmUgd2UgY2FuIHRlYXIgZXZlcnl0aGluZyBkb3duLgorCQkgKi8KKwkJcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCisJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJmh3LT50aHJvdHRsZSk7CisJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJmh3LT5yZXF0aW1lcik7CisJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJmh3LT5yZXNwdGltZXIpOworCisJCS8qIFVubGluayBhbGwgdGhlIFVSQnMuIFRoaXMgInJlbW92ZXMgdGhlIHdoZWVscyIKKwkJICogZnJvbSB0aGUgZW50aXJlIENUTFggaGFuZGxpbmcgbWVjaGFuaXNtLgorCQkgKi8KKwkJdXNiX2tpbGxfdXJiKCZody0+cnhfdXJiKTsKKwkJdXNiX2tpbGxfdXJiKCZody0+dHhfdXJiKTsKKwkJdXNiX2tpbGxfdXJiKCZody0+Y3RseF91cmIpOworCisJCXRhc2tsZXRfa2lsbCgmaHctPmNvbXBsZXRpb25fYmgpOworCQl0YXNrbGV0X2tpbGwoJmh3LT5yZWFwZXJfYmgpOworCisJCWZsdXNoX3NjaGVkdWxlZF93b3JrKCk7CisKKwkJLyogTm93IHdlIGNvbXBsZXRlIGFueSBvdXRzdGFuZGluZyBjb21tYW5kcworCQkgKiBhbmQgdGVsbCBldmVyeW9uZSB3aG8gaXMgd2FpdGluZyBmb3IgdGhlaXIKKwkJICogcmVzcG9uc2VzIHRoYXQgd2UgaGF2ZSBzaHV0IGRvd24uCisJCSAqLworCQlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmY2xlYW5saXN0KSB7CisJCQloZmEzODR4X3VzYmN0bHhfdAkqY3RseDsKKworCQkJY3RseCA9IGxpc3RfZW50cnkoZW50cnksIGhmYTM4NHhfdXNiY3RseF90LCBsaXN0KTsKKwkJCWNvbXBsZXRlKCZjdGx4LT5kb25lKTsKKwkJfQorCisJCS8qIEdpdmUgYW55IG91dHN0YW5kaW5nIHN5bmNocm9ub3VzIGNvbW1hbmRzCisJCSAqIGEgY2hhbmNlIHRvIGNvbXBsZXRlLiBBbGwgdGhleSBuZWVkIHRvIGRvCisJCSAqIGlzICJ3YWtlIHVwIiwgc28gdGhhdCdzIGVhc3kuCisJCSAqIChJJ2QgbGlrZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcywgcmVhbGx5LikKKwkJICovCisJCW1zbGVlcCgxMDApOworCisJCS8qIE5vdyBkZWxldGUgdGhlIENUTFhzLCBiZWNhdXNlIG5vLW9uZSBlbHNlIGNhbiBub3cuICovCisJCWxpc3RfZm9yX2VhY2hfc2FmZShlbnRyeSwgdGVtcCwgJmNsZWFubGlzdCkgeworCQkJaGZhMzg0eF91c2JjdGx4X3QgKmN0bHg7CisKKwkJCWN0bHggPSBsaXN0X2VudHJ5KGVudHJ5LCBoZmEzODR4X3VzYmN0bHhfdCwgbGlzdCk7CisJCQlrZnJlZShjdGx4KTsKKwkJfQorCisJCS8qIFVuaG9vayB0aGUgd2xhbmRldiAqLworCQl1bnJlZ2lzdGVyX3dsYW5kZXYod2xhbmRldik7CisJCXdsYW5fdW5zZXR1cCh3bGFuZGV2KTsKKworI2lmbmRlZiBORVdfTU9EVUxFX0NPREUKKwkJdXNiX2RlY19kZXZfdXNlKGh3LT51c2IpOworI2VuZGlmCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTUpKQorCQl1c2JfcHV0X2Rldihody0+dXNiKTsKKyNlbmRpZgorCisJCWhmYTM4NHhfZGVzdHJveShodyk7CisJCWtmcmVlKGh3KTsKKworCQlrZnJlZSh3bGFuZGV2KTsKKwl9CisKKyBleGl0OgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDUsMCkpCisJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpOworI2VuZGlmCisJREJGRVhJVDsKK30KKworCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcHJpc20yX3VzYl9kcml2ZXIgPSB7CisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNCwxOSkpICYmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMTYpKQorCS5vd25lciA9IFRISVNfTU9EVUxFLAorI2VuZGlmCisJLm5hbWUgPSAicHJpc20yX3VzYiIsCisJLnByb2JlID0gcHJpc20yc3RhX3Byb2JlX3VzYiwKKwkuZGlzY29ubmVjdCA9IHByaXNtMnN0YV9kaXNjb25uZWN0X3VzYiwKKwkuaWRfdGFibGUgPSB1c2JfcHJpc21fdGJsLAorCS8qIGZvcHMsIG1pbm9yPyAqLworfTsKKworI2lmZGVmIE1PRFVMRQorCitzdGF0aWMgaW50IF9faW5pdCBwcmlzbTJ1c2JfaW5pdCh2b2lkKQoreworICAgICAgICBEQkZFTlRFUjsKKworICAgICAgICBXTEFOX0xPR19OT1RJQ0UoIiVzIExvYWRlZFxuIiwgdmVyc2lvbik7CisgICAgICAgIFdMQU5fTE9HX05PVElDRSgiZGV2X2luZm8gaXM6ICVzXG4iLCBkZXZfaW5mbyk7CisKKwkvKiBUaGlzIGNhbGwgd2lsbCByZXN1bHQgaW4gY2FsbHMgdG8gcHJpc20yc3RhX3Byb2JlX3VzYi4gKi8KKwlyZXR1cm4gdXNiX3JlZ2lzdGVyKCZwcmlzbTJfdXNiX2RyaXZlcik7CisKKwlEQkZFWElUOworfTsKKworc3RhdGljIHZvaWQgX19leGl0IHByaXNtMnVzYl9jbGVhbnVwKHZvaWQpCit7CisgICAgICAgIERCRkVOVEVSOworCisJdXNiX2RlcmVnaXN0ZXIoJnByaXNtMl91c2JfZHJpdmVyKTsKKworICAgICAgICBwcmludGsoS0VSTl9OT1RJQ0UgIiVzIFVubG9hZGVkXG4iLCB2ZXJzaW9uKTsKKworCURCRkVYSVQ7Cit9OworCittb2R1bGVfaW5pdChwcmlzbTJ1c2JfaW5pdCk7Cittb2R1bGVfZXhpdChwcmlzbTJ1c2JfY2xlYW51cCk7CisKKyNlbmRpZiAvLyBtb2R1bGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMm1nbXQuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMm1nbXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTc1MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20ybWdtdC5jCkBAIC0wLDAgKzEsMjk1NiBAQAorLyogc3JjL3ByaXNtMi9kcml2ZXIvcHJpc20ybWdtdC5jCisqCisqIE1hbmFnZW1lbnQgcmVxdWVzdCBoYW5kbGVyIGZ1bmN0aW9ucy4KKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgaGFuZGxlIG1hbmFnZW1lbnQgcmVxdWVzdHMgc2VudCBmcm9tCisqIHVzZXIgbW9kZS4KKyoKKyogTW9zdCBvZiB0aGVzZSBmdW5jdGlvbnMgaGF2ZSB0d28gc2VwYXJhdGUgYmxvY2tzIG9mIGNvZGUgdGhhdCBhcmUKKyogY29uZGl0aW9uYWwgb24gd2hldGhlciB0aGlzIGlzIGEgc3RhdGlvbiBvciBhbiBBUC4gIFRoaXMgaXMgdXNlZAorKiB0byBzZXBhcmF0ZSBvdXQgdGhlIFNUQSBhbmQgQVAgcmVzcG9uc2VzIHRvIHRoZXNlIG1hbmFnZW1lbnQgcHJpbWl0aXZlcy4KKyogSXQncyBhIGNob2ljZSAoZ29vZCwgYmFkLCBpbmRpZmZlcmVudD8pIHRvIGhhdmUgdGhlIGNvZGUgaW4gdGhlIHNhbWUKKyogcGxhY2Ugc28gaXQncyBjbGVhciB0aGF0IHRoZSBzYW1lIHByaW1pdGl2ZSBpcyBpbXBsZW1lbnRlZCBpbiBib3RoCisqIGNhc2VzIGJ1dCBoYXMgZGlmZmVyZW50IGJlaGF2aW9yLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFN5c3RlbSBJbmNsdWRlcyAqLworI2RlZmluZSBXTEFOX0RCVkFSCXByaXNtMl9kZWJ1ZworCisjaW5jbHVkZSAidmVyc2lvbi5oIgorCisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorI2VuZGlmCisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ01DSUEpCisjaW5jbHVkZSA8cGNtY2lhL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxwY21jaWEvY3NfdHlwZXMuaD4KKyNpbmNsdWRlIDxwY21jaWEvY3MuaD4KKyNpbmNsdWRlIDxwY21jaWEvY2lzdHBsLmg+CisjaW5jbHVkZSA8cGNtY2lhL2RzLmg+CisjaW5jbHVkZSA8cGNtY2lhL2Npc3JlZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJ3bGFuX2NvbXBhdC5oIgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogUHJvamVjdCBJbmNsdWRlcyAqLworCisjaW5jbHVkZSAicDgwMjExdHlwZXMuaCIKKyNpbmNsdWRlICJwODAyMTFoZHIuaCIKKyNpbmNsdWRlICJwODAyMTFtZ210LmgiCisjaW5jbHVkZSAicDgwMjExY29udi5oIgorI2luY2x1ZGUgInA4MDIxMW1zZy5oIgorI2luY2x1ZGUgInA4MDIxMW5ldGRldi5oIgorI2luY2x1ZGUgInA4MDIxMW1ldGFkZWYuaCIKKyNpbmNsdWRlICJwODAyMTFtZXRhc3RydWN0LmgiCisjaW5jbHVkZSAiaGZhMzg0eC5oIgorI2luY2x1ZGUgInByaXNtMm1nbXQuaCIKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIENvbnN0YW50cyAqLworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBNYWNyb3MgKi8KKworLyogQ29udmVydHMgODAyLjExIGZvcm1hdCByYXRlIHNwZWNpZmljYXRpb25zIHRvIHByaXNtMiAqLworI2RlZmluZSBwODAyMTFyYXRlX3RvX3AyYml0KG4pCSgoKChuKSZ+QklUNykgPT0gMikgPyBCSVQwIDogXAorCQkJCSAoKChuKSZ+QklUNykgPT0gNCkgPyBCSVQxIDogXAorCQkJCSAoKChuKSZ+QklUNykgPT0gMTEpID8gQklUMiA6IFwKKwkJCQkgKCgobikmfkJJVDcpID09IDIyKSA/IEJJVDMgOiAwKQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgVHlwZXMgKi8KKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgU3RhdGljIERlZmluaXRpb25zICovCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyAqLworCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBGdW5jdGlvbiBEZWZpbml0aW9ucyAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3Bvd2VybWdtdAorKgorKiBTZXQgdGhlIHBvd2VyIG1hbmFnZW1lbnQgc3RhdGUgb2YgdGhpcyBzdGF0aW9uJ3MgTUFDLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfcG93ZXJtZ210KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlpbnQgCQkJcmVzdWx0ID0gMDsKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisJcDgwMjExbXNnX2RvdDExcmVxX3Bvd2VybWdtdF90CSptc2cgPSBtc2dwOworCisJREJGRU5URVI7CisKKwlpZiAoIWh3LT5hcCkgeworCisJCS8qKiogU1RBVElPTiAqKiovCisKKwkJLyoKKwkJICogU2V0IENORlBNRU5BQkxFRCAob24gb3Igb2ZmKQorCQkgKiBTZXQgQ05GTVVMVElDQVNUUlggKGlmIFBNIG9uLCBvdGhlcndpc2UgY2xlYXIpCisJCSAqIFNwb3V0IGEgbm90aWNlIHN0YXRpbmcgdGhhdCBTbGVlcER1cmF0aW9uIGFuZAorCQkgKiBIb2xkb3ZlckR1cmF0aW9uIGFuZCBQTUVQUyBhbHNvIGhhdmUgYW4gaW1wYWN0LgorCQkgKi8KKwkJLyogUG93ZXJtZ210IGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBmb3IgU1RBICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfSBlbHNlIHsKKworCQkvKioqIEFDQ0VTUyBQT0lOVCAqKiovCisKKwkJLyogUG93ZXJtZ210IGlzIG5ldmVyIHN1cHBvcnRlZCBmb3IgQVAgKi8KKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfc2NhbgorKgorKiBJbml0aWF0ZSBhIHNjYW4gZm9yIEJTU3MuCisqCisqIFRoaXMgZnVuY3Rpb24gY29ycmVzcG9uZHMgdG8gTUxNRS1zY2FuLnJlcXVlc3QgYW5kIHBhcnQgb2YKKyogTUxNRS1zY2FuLmNvbmZpcm0uICBBcyBmYXIgYXMgSSBjYW4gdGVsbCBpbiB0aGUgc3RhbmRhcmQsIHRoZXJlCisqIGFyZSBubyByZXN0cmljdGlvbnMgb24gd2hlbiBhIHNjYW4ucmVxdWVzdCBtYXkgYmUgaXNzdWVkLiAgV2UgaGF2ZQorKiB0byBoYW5kbGUgaW4gd2hhdGV2ZXIgc3RhdGUgdGhlIGRyaXZlci9NQUMgaGFwcGVuIHRvIGJlLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfc2Nhbih3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9zY2FuX3QJKm1zZyA9IG1zZ3A7CisgICAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgIHJvYW1pbmdtb2RlLCB3b3JkOworCWludCAgICAgICAgICAgICAgICAgICAgIGksIHRpbWVvdXQ7CisJaW50ICAgICAgICAgICAgICAgICAgICAgaXN0bXBlbmFibGUgPSAwOworCisgICAgICAgIGhmYTM4NHhfSG9zdFNjYW5SZXF1ZXN0X2RhdGFfdCAgc2NhbnJlcTsKKworCURCRkVOVEVSOworCisgICAgICAgIGlmIChody0+YXApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19FUlJPUigiUHJpc20yIGluIEFQIG1vZGUgY2Fubm90IHBlcmZvcm0gc2NhbnMuXG4iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgIG1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgLyogZ2F0ZWtlZXBlciBjaGVjayAqLworICAgICAgICBpZiAoSEZBMzg0eF9GSVJNV0FSRV9WRVJTSU9OKGh3LT5pZGVudF9zdGFfZncubWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHctPmlkZW50X3N0YV9mdy5taW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBody0+aWRlbnRfc3RhX2Z3LnZhcmlhbnQpIDwKKyAgICAgICAgICAgIEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTigxLDMsMikpIHsKKwkJV0xBTl9MT0dfRVJST1IoIkhvc3RTY2FuIG5vdCBzdXBwb3J0ZWQgd2l0aCBjdXJyZW50IGZpcm13YXJlICg8MS4zLjIpLlxuIik7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICBtc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQlnb3RvIGV4aXQ7CisJfQorCisgICAgICAgIG1lbXNldCgmc2NhbnJlcSwgMCwgc2l6ZW9mKHNjYW5yZXEpKTsKKworICAgICAgICAvKiBzYXZlIGN1cnJlbnQgcm9hbWluZyBtb2RlICovCisgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywKKyAgICAgICAgICAgICAgICAgICAgICAgIEhGQTM4NHhfUklEX0NORlJPQU1JTkdNT0RFLCAmcm9hbWluZ21vZGUpOworICAgICAgICBpZiAoIHJlc3VsdCApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19FUlJPUigiZ2V0Y29uZmlnKFJPQU1NT0RFKSBmYWlsZWQuIHJlc3VsdD0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisgICAgICAgICAgICAgICAgICAgICAgICBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBkcm9wIGludG8gbW9kZSAzIGZvciB0aGUgc2NhbiAqLworICAgICAgICByZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsCisgICAgICAgICAgICAgICAgICAgICAgICBIRkEzODR4X1JJRF9DTkZST0FNSU5HTU9ERSwKKwkJCUhGQTM4NHhfUk9BTU1PREVfSE9TVFNDQU5fSE9TVFJPQU0pOworICAgICAgICBpZiAoIHJlc3VsdCApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19FUlJPUigic2V0Y29uZmlnKFJPQU1JTkdNT0RFKSBmYWlsZWQuIHJlc3VsdD0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisgICAgICAgICAgICAgICAgICAgICAgICBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBhY3RpdmUgb3IgcGFzc2l2ZT8gKi8KKyAgICAgICAgaWYgKEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTihody0+aWRlbnRfc3RhX2Z3Lm1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5pZGVudF9zdGFfZncubWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHctPmlkZW50X3N0YV9mdy52YXJpYW50KSA+CisgICAgICAgICAgICBIRkEzODR4X0ZJUk1XQVJFX1ZFUlNJT04oMSw1LDApKSB7CisgICAgICAgICAgICAgICAgaWYgKG1zZy0+c2NhbnR5cGUuZGF0YSAhPSBQODAyMTFFTlVNX3NjYW50eXBlX2FjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgd29yZCA9IGhvc3QyaGZhMzg0eF8xNihtc2ctPm1heGNoYW5uZWx0aW1lLmRhdGEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3b3JkID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZQQVNTSVZFU0NBTkNUUkwsIHdvcmQpOworICAgICAgICAgICAgICAgIGlmICggcmVzdWx0ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgV0xBTl9MT0dfV0FSTklORygiUGFzc2l2ZSBzY2FuIG5vdCBzdXBwb3J0ZWQgd2l0aCAiCisJCQkJCSAgImN1cnJlbnQgZmlybXdhcmUuICAoPDEuNS4xKVxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKwkvKiBzZXQgdXAgdGhlIHR4cmF0ZSB0byBiZSAyTUJQUy4gU2hvdWxkIGJlIGZhc3Rlc3QgYmFzaWNyYXRlLi4uICovCisJd29yZCA9IEhGQTM4NHhfUkFURUJJVF8yOworCXNjYW5yZXEudHhSYXRlID0gaG9zdDJoZmEzODR4XzE2KHdvcmQpOworCisgICAgICAgIC8qIHNldCB1cCB0aGUgY2hhbm5lbCBsaXN0ICovCisgICAgICAgIHdvcmQgPSAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbXNnLT5jaGFubmVsbGlzdC5kYXRhLmxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgVUlOVDggY2hhbm5lbCA9IG1zZy0+Y2hhbm5lbGxpc3QuZGF0YS5kYXRhW2ldOworICAgICAgICAgICAgICAgIGlmIChjaGFubmVsID4gMTQpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8qIGNoYW5uZWwgMSBpcyBCSVQwIC4uLiBjaGFubmVsIDE0IGlzIEJJVDEzICovCisgICAgICAgICAgICAgICAgd29yZCB8PSAoMSA8PCAoY2hhbm5lbC0xKSk7CisgICAgICAgIH0KKyAgICAgICAgc2NhbnJlcS5jaGFubmVsTGlzdCA9IGhvc3QyaGZhMzg0eF8xNih3b3JkKTsKKworICAgICAgICAvKiBzZXQgdXAgdGhlIHNzaWQsIGlmIHByZXNlbnQuICovCisgICAgICAgIHNjYW5yZXEuc3NpZC5sZW4gPSBob3N0MmhmYTM4NHhfMTYobXNnLT5zc2lkLmRhdGEubGVuKTsKKyAgICAgICAgbWVtY3B5KHNjYW5yZXEuc3NpZC5kYXRhLCBtc2ctPnNzaWQuZGF0YS5kYXRhLCBtc2ctPnNzaWQuZGF0YS5sZW4pOworCisJLyogRW5hYmxlIHRoZSBNQUMgcG9ydCBpZiBpdCdzIG5vdCBhbHJlYWR5IGVuYWJsZWQgICovCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9QT1JUU1RBVFVTLCAmd29yZCk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJnZXRjb25maWcoUE9SVFNUQVRVUykgZmFpbGVkLiAiCisJCQkJInJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCWdvdG8gZXhpdDsKKwl9CisJaWYgKHdvcmQgPT0gSEZBMzg0eF9QT1JUU1RBVFVTX0RJU0FCTEVEKSB7CisJCVVJTlQxNiB3b3JkYnVmWzE3XTsKKworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsCisJCQlIRkEzODR4X1JJRF9DTkZST0FNSU5HTU9ERSwKKwkJCUhGQTM4NHhfUk9BTU1PREVfSE9TVFNDQU5fSE9TVFJPQU0pOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJzZXRjb25maWcoUk9BTUlOR01PREUpIGZhaWxlZC4gcmVzdWx0PSVkXG4iLCByZXN1bHQpOworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJZ290byBleGl0OworCQl9CisJCS8qIENvbnN0cnVjdCBhIGJvZ3VzIFNTSUQgYW5kIGFzc2lnbiBpdCB0byBPd25TU0lEIGFuZAorCQkgKiBEZXNpcmVkU1NJRAorCQkgKi8KKwkJd29yZGJ1ZlswXSA9IGhvc3QyaGZhMzg0eF8xNihXTEFOX1NTSURfTUFYTEVOKTsKKwkJZ2V0X3JhbmRvbV9ieXRlcygmd29yZGJ1ZlsxXSwgV0xBTl9TU0lEX01BWExFTik7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoIGh3LCBIRkEzODR4X1JJRF9DTkZPV05TU0lELAorCQkJCXdvcmRidWYsIEhGQTM4NHhfUklEX0NORk9XTlNTSURfTEVOKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCBPd25TU0lELlxuIik7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyggaHcsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lELAorCQkJCXdvcmRidWYsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lEX0xFTik7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgRGVzaXJlZFNTSUQuXG4iKTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0KKwkJCQlQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCQkvKiBic3N0eXBlICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywKKwkJCQlIRkEzODR4X1JJRF9DTkZQT1JUVFlQRSwKKwkJCQlIRkEzODR4X1BPUlRUWVBFX0lCU1MpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IENORlBPUlRUWVBFLlxuIik7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJLyogaWJzcyBvcHRpb25zICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywKKwkJCQlIRkEzODR4X1JJRF9DUkVBVEVJQlNTLAorCQkJCUhGQTM4NHhfQ1JFQVRFSUJTU19KT0lOQ1JFQVRFSUJTUyk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgQ1JFQVRFSUJTUy5cbiIpOworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJZ290byBleGl0OworCQl9CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9lbmFibGUoaHcsIDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJkcnZyX2VuYWJsZSgwKSBmYWlsZWQuICIKKwkJCQkJInJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0KKwkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJZ290byBleGl0OworCQl9CisJCWlzdG1wZW5hYmxlID0gMTsKKwl9CisKKyAgICAgICAgLyogRmlndXJlIG91dCBvdXIgdGltZW91dCBmaXJzdCBLdXMsIHRoZW4gSFogKi8KKyAgICAgICAgdGltZW91dCA9IG1zZy0+Y2hhbm5lbGxpc3QuZGF0YS5sZW4gKiBtc2ctPm1heGNoYW5uZWx0aW1lLmRhdGE7CisJdGltZW91dCA9ICh0aW1lb3V0ICogSFopLzEwMDA7CisKKyAgICAgICAgLyogSXNzdWUgdGhlIHNjYW4gcmVxdWVzdCAqLworICAgICAgICBody0+c2NhbmZsYWcgPSAwOworCisJV0xBTl9IRVhfRFVNUCg1LCJoc2NhbnJlcSIsICZzY2FucmVxLCBzaXplb2Yoc2NhbnJlcSkpOworCisgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoIGh3LAorICAgICAgICAgICAgICAgICAgICAgICAgSEZBMzg0eF9SSURfSE9TVFNDQU4sICZzY2FucmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGhmYTM4NHhfSG9zdFNjYW5SZXF1ZXN0X2RhdGFfdCkpOworICAgICAgICBpZiAoIHJlc3VsdCApIHsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19FUlJPUigic2V0Y29uZmlnKFNDQU5SRVFVRVNUKSBmYWlsZWQuIHJlc3VsdD0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisgICAgICAgICAgICAgICAgICAgICAgICBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBzbGVlcCB1bnRpbCBpbmZvIGZyYW1lIGFycml2ZXMgKi8KKyAgICAgICAgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaHctPmNtZHEsIGh3LT5zY2FuZmxhZywgdGltZW91dCk7CisKKwltc2ctPm51bWJzcy5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJaWYgKGh3LT5zY2FuZmxhZyA9PSAtMSkKKwkJaHctPnNjYW5mbGFnID0gMDsKKworCW1zZy0+bnVtYnNzLmRhdGEgPSBody0+c2NhbmZsYWc7CisKKyAgICAgICAgaHctPnNjYW5mbGFnID0gMDsKKworCS8qIERpc2FibGUgcG9ydCBpZiB3ZSB0ZW1wb3JhcmlseSBlbmFibGVkIGl0LiAqLworCWlmIChpc3RtcGVuYWJsZSkgeworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZGlzYWJsZShodywgMCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoImRydnJfZGlzYWJsZSgwKSBmYWlsZWQuICIKKwkJCQkJInJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0KKwkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJZ290byBleGl0OworCQl9CisJfQorCisJLyogcmVzdG9yZSBvcmlnaW5hbCByb2FtaW5nIG1vZGUgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORlJPQU1JTkdNT0RFLAorCQkJCQkgIHJvYW1pbmdtb2RlKTsKKyAgICAgICAgaWYgKCByZXN1bHQgKSB7CisgICAgICAgICAgICAgICAgV0xBTl9MT0dfRVJST1IoInNldGNvbmZpZyhST0FNTU9ERSkgZmFpbGVkLiByZXN1bHQ9JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgICAgbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworIGV4aXQ6CisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9zY2FuX3Jlc3VsdHMKKyoKKyogUmV0cmlldmUgdGhlIEJTUyBkZXNjcmlwdGlvbiBmb3Igb25lIG9mIHRoZSBCU1NzIGlkZW50aWZpZWQgaW4KKyogYSBzY2FuLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfc2Nhbl9yZXN1bHRzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlpbnQgCQkJcmVzdWx0ID0gMDsKKyAgICAgICAgcDgwMjExbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c190ICAgICAgICpyZXE7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCWhmYTM4NHhfSFNjYW5SZXN1bHRTdWJfdCAqaXRlbSA9IE5VTEw7CisKKwlpbnQgY291bnQ7CisKKwlEQkZFTlRFUjsKKworICAgICAgICByZXEgPSAocDgwMjExbXNnX2RvdDExcmVxX3NjYW5fcmVzdWx0c190ICopIG1zZ3A7CisKKwlyZXEtPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCisJaWYgKGh3LT5hcCkgeworCQlyZXN1bHQgPSAxOworCQlyZXEtPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQlnb3RvIGV4aXQ7CisJfQorCisJaWYgKCEgaHctPnNjYW5yZXN1bHRzKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJkb3QxMXJlcV9zY2FuX3Jlc3VsdHMgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgZG90MTFyZXFfc2Nhbi5cbiIpOworCQlyZXN1bHQgPSAyOworCQlyZXEtPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbnZhbGlkX3BhcmFtZXRlcnM7CisJCWdvdG8gZXhpdDsKKwl9CisKKyAgICAgICAgY291bnQgPSAoaHctPnNjYW5yZXN1bHRzLT5mcmFtZWxlbiAtIDMpIC8gMzI7CisJaWYgKGNvdW50ID4gMzIpICBjb3VudCA9IDMyOworCisJaWYgKHJlcS0+YnNzaW5kZXguZGF0YSA+PSBjb3VudCkgeworCQlXTEFOX0xPR19ERUJVRygwLCAicmVxdWVzdGVkIGluZGV4ICglZCkgb3V0IG9mIHJhbmdlICglZClcbiIsCisJCQkJcmVxLT5ic3NpbmRleC5kYXRhLCBjb3VudCk7CisJCXJlc3VsdCA9IDI7CisJCXJlcS0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfcGFyYW1ldGVyczsKKwkJZ290byBleGl0OworCX0KKworCWl0ZW0gPSAmKGh3LT5zY2FucmVzdWx0cy0+aW5mby5oc2NhbnJlc3VsdC5yZXN1bHRbcmVxLT5ic3NpbmRleC5kYXRhXSk7CisJLyogc2lnbmFsIGFuZCBub2lzZSAqLworCXJlcS0+c2lnbmFsLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPm5vaXNlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPnNpZ25hbC5kYXRhID0gaGZhMzg0eDJob3N0XzE2KGl0ZW0tPnNsKTsKKwlyZXEtPm5vaXNlLmRhdGEgPSBoZmEzODR4Mmhvc3RfMTYoaXRlbS0+YW5sKTsKKworCS8qIEJTU0lEICovCisJcmVxLT5ic3NpZC5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJcmVxLT5ic3NpZC5kYXRhLmxlbiA9IFdMQU5fQlNTSURfTEVOOworCW1lbWNweShyZXEtPmJzc2lkLmRhdGEuZGF0YSwgaXRlbS0+YnNzaWQsIFdMQU5fQlNTSURfTEVOKTsKKworCS8qIFNTSUQgKi8KKwlyZXEtPnNzaWQuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXJlcS0+c3NpZC5kYXRhLmxlbiA9IGhmYTM4NHgyaG9zdF8xNihpdGVtLT5zc2lkLmxlbik7CisJbWVtY3B5KHJlcS0+c3NpZC5kYXRhLmRhdGEsIGl0ZW0tPnNzaWQuZGF0YSwgcmVxLT5zc2lkLmRhdGEubGVuKTsKKworCS8qIHN1cHBvcnRlZCByYXRlcyAqLworICAgICAgICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCAxMCA7IGNvdW50KyspCisgICAgICAgICAgICAgICAgaWYgKGl0ZW0tPnN1cHByYXRlc1tjb3VudF0gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisjZGVmaW5lIFJFUUJBU0lDUkFURShOKSBcCisJaWYgKChjb3VudCA+PSBOKSAmJiBET1QxMV9SQVRFNV9JU0JBU0lDX0dFVChpdGVtLT5zdXBwcmF0ZXNbKE4pLTFdKSkgeyBcCisJCXJlcS0+YmFzaWNyYXRlICMjIE4gLmRhdGEgPSBpdGVtLT5zdXBwcmF0ZXNbKE4pLTFdOyBcCisJCXJlcS0+YmFzaWNyYXRlICMjIE4gLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsgXAorCX0KKworCVJFUUJBU0lDUkFURSgxKTsKKwlSRVFCQVNJQ1JBVEUoMik7CisJUkVRQkFTSUNSQVRFKDMpOworCVJFUUJBU0lDUkFURSg0KTsKKwlSRVFCQVNJQ1JBVEUoNSk7CisJUkVRQkFTSUNSQVRFKDYpOworCVJFUUJBU0lDUkFURSg3KTsKKwlSRVFCQVNJQ1JBVEUoOCk7CisKKyNkZWZpbmUgUkVRU1VQUFJBVEUoTikgXAorCWlmIChjb3VudCA+PSBOKSB7IFwKKwkJcmVxLT5zdXBwcmF0ZSAjIyBOIC5kYXRhID0gaXRlbS0+c3VwcHJhdGVzWyhOKS0xXTsgXAorCQlyZXEtPnN1cHByYXRlICMjIE4gLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsgXAorCX0KKworCVJFUVNVUFBSQVRFKDEpOworCVJFUVNVUFBSQVRFKDIpOworCVJFUVNVUFBSQVRFKDMpOworCVJFUVNVUFBSQVRFKDQpOworCVJFUVNVUFBSQVRFKDUpOworCVJFUVNVUFBSQVRFKDYpOworCVJFUVNVUFBSQVRFKDcpOworCVJFUVNVUFBSQVRFKDgpOworCisJLyogYmVhY29uIHBlcmlvZCAqLworCXJlcS0+YmVhY29ucGVyaW9kLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPmJlYWNvbnBlcmlvZC5kYXRhID0gaGZhMzg0eDJob3N0XzE2KGl0ZW0tPmJjbmludCk7CisKKwkvKiB0aW1lc3RhbXBzICovCisJcmVxLT50aW1lc3RhbXAuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXJlcS0+dGltZXN0YW1wLmRhdGEgPSBqaWZmaWVzOworCXJlcS0+bG9jYWx0aW1lLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPmxvY2FsdGltZS5kYXRhID0gamlmZmllczsKKworCS8qIGF0aW0gd2luZG93ICovCisJcmVxLT5pYnNzYXRpbXdpbmRvdy5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJcmVxLT5pYnNzYXRpbXdpbmRvdy5kYXRhID0gaGZhMzg0eDJob3N0XzE2KGl0ZW0tPmF0aW0pOworCisJLyogQ2hhbm5lbCAqLworCXJlcS0+ZHNjaGFubmVsLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPmRzY2hhbm5lbC5kYXRhID0gaGZhMzg0eDJob3N0XzE2KGl0ZW0tPmNoaWQpOworCisJLyogY2FwaW5mbyBiaXRzICovCisJY291bnQgPSBoZmEzODR4Mmhvc3RfMTYoaXRlbS0+Y2FwaW5mbyk7CisKKwkvKiBwcml2YWN5IGZsYWcgKi8KKwlyZXEtPnByaXZhY3kuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXJlcS0+cHJpdmFjeS5kYXRhID0gV0xBTl9HRVRfTUdNVF9DQVBfSU5GT19QUklWQUNZKGNvdW50KTsKKworCS8qIGNmcG9sbGFibGUgKi8KKwlyZXEtPmNmcG9sbGFibGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXJlcS0+Y2Zwb2xsYWJsZS5kYXRhID0gV0xBTl9HRVRfTUdNVF9DQVBfSU5GT19DRlBPTExBQkxFKGNvdW50KTsKKworCS8qIGNmcG9sbHJlcSAqLworCXJlcS0+Y2Zwb2xscmVxLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlyZXEtPmNmcG9sbHJlcS5kYXRhID0gV0xBTl9HRVRfTUdNVF9DQVBfSU5GT19DRlBPTExSRVEoY291bnQpOworCisJLyogYnNzdHlwZSAqLworCXJlcS0+YnNzdHlwZS5zdGF0dXMgPSAgUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXJlcS0+YnNzdHlwZS5kYXRhID0gKFdMQU5fR0VUX01HTVRfQ0FQX0lORk9fRVNTKGNvdW50KSkgPworCQlQODAyMTFFTlVNX2Jzc3R5cGVfaW5mcmFzdHJ1Y3R1cmUgOgorCQlQODAyMTFFTlVNX2Jzc3R5cGVfaW5kZXBlbmRlbnQ7CisKKwkvLyBpdGVtLT5wcm9iZXJlc3BfcmF0ZQorLyoKKwlyZXEtPmZoZHdlbGx0aW1lCisJcmVxLT5maGhvcHNldAorCXJlcS0+Zmhob3BwYXR0ZXJuCisJcmVxLT5maGhvcGluZGV4CisgICAgICAgIHJlcS0+Y2ZwZHVycmVtYWluaW5nCisqLworCisJcmVzdWx0ID0gMDsKKwlyZXEtPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfam9pbgorKgorKiBKb2luIGEgQlNTIHdob3NlIEJTUyBkZXNjcmlwdGlvbiB3YXMgcHJldmlvdXNseSBvYnRhaW5lZCB3aXRoCisqIGEgc2Nhbi4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2pvaW4od2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWludCAJCQlyZXN1bHQgPSAwOworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfZG90MTFyZXFfam9pbl90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIFRPRE86IEltcGxlbWVudCBhZnRlciBzY2FuICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfSBlbHNlIHsKKworCQkvKioqIEFDQ0VTUyBQT0lOVCAqKiovCisKKwkJLyogTmV2ZXIgc3VwcG9ydGVkIGJ5IEFQcyAqLworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9wMl9qb2luCisqCisqIEpvaW4gYSBzcGVjaWZpYyBCU1MKKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X3AyX2pvaW4od2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWludCAJCQlyZXN1bHQgPSAwOworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfam9pbl90CSptc2cgPSBtc2dwOworCVVJTlQxNgkJCXJlZzsKKwlwODAyMTFwc3RyZF90CQkqcHN0cjsKKwlVSU5UOAkJCWJ5dGVidWZbMjU2XTsKKwloZmEzODR4X2J5dGVzdHJfdAkqcDJieXRlc3RyID0gKGhmYTM4NHhfYnl0ZXN0cl90KilieXRlYnVmOworICAgICAgICBoZmEzODR4X0pvaW5SZXF1ZXN0X2RhdGFfdAlqb2lucmVxOworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQl3bGFuZGV2LT5tYWNtb2RlID0gV0xBTl9NQUNNT0RFX05PTkU7CisKKwkJLyoqKiBTVEFUSU9OICoqKi8KKwkJLyogU2V0IHRoZSBQb3J0VHlwZSAqLworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCisJCS8qIGVzcyBwb3J0ICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GUE9SVFRZUEUsIDEpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IFBvcnQgVHlwZVxuIik7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCisJCS8qIFNldCB0aGUgYXV0aCB0eXBlICovCisJCWlmICggbXNnLT5hdXRodHlwZS5kYXRhID09IFA4MDIxMUVOVU1fYXV0aGFsZ19zaGFyZWRrZXkgKSB7CisJCQlyZWcgPSBIRkEzODR4X0NORkFVVEhFTlRJQ0FUSU9OX1NIQVJFREtFWTsKKwkJfSBlbHNlIHsKKwkJCXJlZyA9IEhGQTM4NHhfQ05GQVVUSEVOVElDQVRJT05fT1BFTlNZU1RFTTsKKwkJfQorCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORkFVVEhFTlRJQ0FUSU9OLCByZWcpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IEF1dGhlbnRpY2F0aW9uXG4iKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogVHVybiBvZmYgYWxsIHJvYW1pbmcgKi8KKwkJaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZST0FNSU5HTU9ERSwgMyk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBUdXJuIG9mZiBSb2FtaW5nXG4iKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogQmFzaWMgcmF0ZXMgKi8KKyAgICAgICAgICAgICAgICByZWcgPSAwOworCQlpZiAoIG1zZy0+YmFzaWNyYXRlMS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnID0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPmJhc2ljcmF0ZTEuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPmJhc2ljcmF0ZTIuc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlMi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlMy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGUzLmRhdGEpOworCQl9CisJCWlmICggbXNnLT5iYXNpY3JhdGU0LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCQlyZWcgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPmJhc2ljcmF0ZTQuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPmJhc2ljcmF0ZTUuc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlNS5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlNi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU2LmRhdGEpOworCQl9CisJCWlmICggbXNnLT5iYXNpY3JhdGU3LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCQlyZWcgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPmJhc2ljcmF0ZTcuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPmJhc2ljcmF0ZTguc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlOC5kYXRhKTsKKwkJfQorCQlpZiggcmVnID09IDApCisJCQkgcmVnID0gMHgwMzsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZCQVNJQ1JBVEVTLCByZWcpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IGJhc2ljcmF0ZXM9JWQuXG4iLCByZWcpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQkvKiBPcGVyYXRpb25hbCByYXRlcyAoc3VwcHJhdGVzIGFuZCB0eHJhdGVjb250cm9sKSAqLworCQlyZWcgPSAwOworCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlMS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnID0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTEuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPm9wZXJhdGlvbmFscmF0ZTIuc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlMi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlMy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5vcGVyYXRpb25hbHJhdGUzLmRhdGEpOworCQl9CisJCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU0LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCQlyZWcgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTQuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPm9wZXJhdGlvbmFscmF0ZTUuc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlNS5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlNi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJcmVnIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5vcGVyYXRpb25hbHJhdGU2LmRhdGEpOworCQl9CisJCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU3LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCQlyZWcgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTcuZGF0YSk7CisJCX0KKwkJaWYgKCBtc2ctPm9wZXJhdGlvbmFscmF0ZTguc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vayApIHsKKwkJCXJlZyB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlOC5kYXRhKTsKKwkJfQorCQlpZiggcmVnID09IDApCisJCQkgcmVnID0gMHgwZjsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZTVVBQUkFURVMsIHJlZyk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgc3VwcHJhdGVzPSVkLlxuIiwgcmVnKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKyAJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfVFhSQVRFQ05UTCwgcmVnKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCB0eHJhdGVzPSVkLlxuIiwgcmVnKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogU2V0IHRoZSBzc2lkICovCisJCW1lbXNldChieXRlYnVmLCAwLCAyNTYpOworCQlwc3RyID0gKHA4MDIxMXBzdHJkX3QqKSYobXNnLT5zc2lkLmRhdGEpOworCQlwcmlzbTJtZ210X3BzdHIyYnl0ZXN0cihwMmJ5dGVzdHIsIHBzdHIpOworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKAorCQkJaHcsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lELAorCQkJYnl0ZWJ1ZiwgSEZBMzg0eF9SSURfQ05GREVTSVJFRFNTSURfTEVOKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCBTU0lEXG4iKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogRW5hYmxlIHRoZSBQb3J0ICovCisJCXJlc3VsdCA9IGhmYTM4NHhfY21kX2VuYWJsZShodywgMCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkVuYWJsZSBtYWNwb3J0IGZhaWxlZCwgcmVzdWx0PSVkLlxuIiwgcmVzdWx0KTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogRmlsbCBpbiB0aGUgam9pbiByZXF1ZXN0ICovCisJCWpvaW5yZXEuY2hhbm5lbCA9IG1zZy0+Y2hhbm5lbC5kYXRhOworCQltZW1jcHkoIGpvaW5yZXEuYnNzaWQsICgodW5zaWduZWQgY2hhciAqKSAmbXNnLT5ic3NpZC5kYXRhKSArIDEsIFdMQU5fQlNTSURfTEVOKTsKKwkJaHctPmpvaW5yZXEgPSBqb2lucmVxOworCQlody0+am9pbl9hcCA9IDE7CisKKwkJLyogU2VuZCB0aGUgam9pbiByZXF1ZXN0ICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoIGh3LAorCQkJSEZBMzg0eF9SSURfSk9JTlJFUVVFU1QsCisJCQkmam9pbnJlcSwgSEZBMzg0eF9SSURfSk9JTlJFUVVFU1RfTEVOKTsKKyAgICAgICAgICAgICAgICBpZihyZXN1bHQgIT0gMCkgeworCQkJV0xBTl9MT0dfRVJST1IoIkpvaW4gcmVxdWVzdCBmYWlsZWQsIHJlc3VsdD0lZC5cbiIsIHJlc3VsdCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCisJfSBlbHNlIHsKKworCQkvKioqIEFDQ0VTUyBQT0lOVCAqKiovCisKKwkJLyogTmV2ZXIgc3VwcG9ydGVkIGJ5IEFQcyAqLworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCX0KKworICAgICAgICBnb3RvIGRvbmU7CitmYWlsZWQ6CisJV0xBTl9MT0dfREVCVUcoMSwgIkZhaWxlZCB0byBzZXQgYSBjb25maWcgb3B0aW9uLCByZXN1bHQ9JWRcbiIsIHJlc3VsdCk7CisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW52YWxpZF9wYXJhbWV0ZXJzOworCitkb25lOgorICAgICAgICByZXN1bHQgPSAwOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2F1dGhlbnRpY2F0ZQorKgorKiBTdGF0aW9uIHNob3VsZCBiZSBiZWdpbiBhbiBhdXRoZW50aWNhdGlvbiBleGNoYW5nZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2F1dGhlbnRpY2F0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9hdXRoZW50aWNhdGVfdAkqbXNnID0gbXNncDsKKwlEQkZFTlRFUjsKKworCWlmICghaHctPmFwKSB7CisKKwkJLyoqKiBTVEFUSU9OICoqKi8KKworCQkvKiBUT0RPOiBEZWNpZGUgaG93IHdlJ3JlIGdvaW5nIHRvIGhhbmRsZSB0aGlzIG9uZSB3LyBQcmlzbTIgKi8KKwkJLyogICAgICAgSXQgY291bGQgYmUgZW50ZXJ0YWluaW5nIHNpbmNlIFByaXNtMiBkb2Vzbid0IGhhdmUgICovCisJCS8qICAgICAgIGFuIGV4cGxpY2l0IHdheSB0byBjb250cm9sIHRoaXMgKi8KKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKwl9IGVsc2UgeworCisJCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworCQkvKiBOZXZlciBzdXBwb3J0ZWQgYnkgQVBzICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2RlYXV0aGVudGljYXRlCisqCisqIFNlbmQgYSBkZWF1dGhlbnRpY2F0ZSBub3RpZmljYXRpb24uCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9kZWF1dGhlbnRpY2F0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9kZWF1dGhlbnRpY2F0ZV90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIFRPRE86IERlY2lkZSBob3cgd2UncmUgZ29pbmcgdG8gaGFuZGxlIHRoaXMgb25lIHcvIFByaXNtMiAqLworCQkvKiAgICAgICBJdCBjb3VsZCBiZSBlbnRlcnRhaW5pbmcgc2luY2UgUHJpc20yIGRvZXNuJ3QgaGF2ZSAgKi8KKwkJLyogICAgICAgYW4gZXhwbGljaXQgd2F5IHRvIGNvbnRyb2wgdGhpcyAqLworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCX0gZWxzZSB7CisKKwkJLyoqKiBBQ0NFU1MgUE9JTlQgKioqLworCQloZmEzODR4X2RydnJfaGFuZG92ZXIoaHcsIG1zZy0+cGVlcnN0YWFkZHJlc3MuZGF0YS5kYXRhKTsKKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfYXNzb2NpYXRlCisqCisqIEFzc29jaWF0ZSB3aXRoIGFuIEVTUy4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2Fzc29jaWF0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCWludCAJCQlyZXN1bHQgPSAwOworCXA4MDIxMW1zZ19kb3QxMXJlcV9hc3NvY2lhdGVfdAkqbXNnID0gbXNncDsKKwlEQkZFTlRFUjsKKworCWlmICghaHctPmFwKSB7CisKKwkJLyoqKiBTVEFUSU9OICoqKi8KKworI2lmIDAKKwkJLyogU2V0IHRoZSBUeFJhdGVzICovCisJCXJlZyA9IDB4MDAwZjsKKwkJaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9UWFJBVEVDTlRMLCByZWcpOworI2VuZGlmCisKKwkJLyogU2V0IHRoZSBQb3J0VHlwZSAqLworCQkvKiBlc3MgcG9ydCAqLworCQloZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORlBPUlRUWVBFLCAxKTsKKworCQkvKiBFbmFibGUgdGhlIFBvcnQgKi8KKwkJaGZhMzg0eF9kcnZyX2VuYWJsZShodywgMCk7CisKKwkJLyogU2V0IHRoZSByZXN1bHRjb2RlICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisKKwl9IGVsc2UgeworCisJCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworCQkvKiBOZXZlciBzdXBwb3J0ZWQgb24gQVAgKi8KKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfcmVhc3NvY2lhdGUKKyoKKyogUmVuZXcgYXNzb2NpYXRpb24gYmVjYXVzZSBvZiBhIEJTUyBjaGFuZ2UuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9yZWFzc29jaWF0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9yZWFzc29jaWF0ZV90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIFRPRE86IE5vdCBzdXBwb3J0ZWQgeWV0Li4ubm90IHN1cmUgaG93IHdlJ3JlIGdvaW5nIHRvIGRvIGl0ICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfSBlbHNlIHsKKworCQkvKioqIEFDQ0VTUyBQT0lOVCAqKiovCisKKwkJLyogTmV2ZXIgc3VwcG9ydGVkIG9uIEFQICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2Rpc2Fzc29jaWF0ZQorKgorKiBTZW5kIGEgZGlzYXNzb2NpYXRpb24gbm90aWZpY2F0aW9uLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfZGlzYXNzb2NpYXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlpbnQgCQkJcmVzdWx0ID0gMDsKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisJcDgwMjExbXNnX2RvdDExcmVxX2Rpc2Fzc29jaWF0ZV90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIFRPRE86IE5vdCBzdXBwb3J0ZWQgeWV0Li4ubm90IHN1cmUgaG93IHRvIGRvIGl0ICovCisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJfSBlbHNlIHsKKworCQkvKioqIEFDQ0VTUyBQT0lOVCAqKiovCisJCWhmYTM4NHhfZHJ2cl9oYW5kb3ZlcihodywgbXNnLT5wZWVyc3RhYWRkcmVzcy5kYXRhLmRhdGEpOworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9yZXNldAorKgorKiBSZXNldCB0aGUgTUFDIGFuZCBNU0QuICBUaGUgcDgwMjExIGxheWVyIGhhcyBpdCdzIG93biBoYW5kbGluZworKiB0aGF0IHNob3VsZCBiZSBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBmdW5jdGlvbi4KKyogUHJvY2VkdXJlOgorKiAgIC0gZGlzYWJsZSBzeXN0ZW0gaW50ZXJydXB0cyA/PworKiAgIC0gZGlzYWJsZSBNQUMgaW50ZXJydXB0cworKiAgIC0gcmVzdG9yZSBzeXN0ZW0gaW50ZXJydXB0cworKiAgIC0gaXNzdWUgdGhlIE1BQyBpbml0aWFsaXplIGNvbW1hbmQKKyogICAtIGNsZWFyIGFueSBNU0QgbGV2ZWwgc3RhdGUgKGluY2x1ZGluZyB0aW1lcnMsIHF1ZXVlZCBldmVudHMsCisqICAgICBldGMuKS4gIE5vdGUgdGhhdCBpZiB3ZSdyZSByZW1vdmluZyB0aW1lcidkL3F1ZXVlIGV2ZW50cywgd2UgbWF5CisqICAgICBuZWVkIHRvIGhhdmUgcmVtYWluZWQgaW4gdGhlIHN5c3RlbSBpbnRlcnJ1cHQgZGlzYWJsZWQgc3RhdGUuCisqICAgICBXZSBzaG91bGQgYmUgbGVmdCBpbiB0aGUgc2FtZSBzdGF0ZSB0aGF0IHdlJ3JlIGluIGZvbGxvd2luZworKiAgICAgZHJpdmVyIGluaXRpYWxpemF0aW9uLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlciwgTUFZIEJFIE5VTEwhIGZvciBhIGRyaXZlciBsb2NhbAorKgkJCWNhbGwuCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCwgY29tbW9ubHkgd2xhbmN0bCwgYnV0IG1pZ2h0IGJlIHJtbW9kL3BjaV9jbG9zZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfcmVzZXQod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWludCAJCQlyZXN1bHQgPSAwOworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfZG90MTFyZXFfcmVzZXRfdAkqbXNnID0gbXNncDsKKwlEQkZFTlRFUjsKKworCS8qCisJICogVGhpcyBpcyBzdXBwb3J0ZWQgb24gYm90aCBBUCBhbmQgU1RBIGFuZCBpdCdzIG5vdCBhbGxvd2VkCisJICogdG8gZmFpbC4KKwkgKi8KKwlpZiAoIG1zZ3AgKSB7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCVdMQU5fTE9HX0lORk8oImRvdDExcmVxX3Jlc2V0OiB0aGUgbWFjYWRkcmVzcyBhbmQgIgorCQkJInNldGRlZmF1bHRtaWIgYXJndW1lbnRzIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuXG4iKTsKKwl9CisKKwkvKgorCSAqIElmIHdlIGdvdCB0aGlzIGZhciwgdGhlIE1TRCBtdXN0IGJlIGluIHRoZSBNU0RSVU5OSU5HIHN0YXRlCisJICogdGhlcmVmb3JlLCB3ZSBtdXN0IHN0b3AgYW5kIHRoZW4gcmVzdGFydCB0aGUgaHcvTUFDIGNvbWJvLgorCSAqLworCWhmYTM4NHhfZHJ2cl9zdG9wKGh3KTsKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc3RhcnQoaHcpOworCWlmIChyZXN1bHQgIT0gMCkgeworCQlXTEFOX0xPR19FUlJPUigiZG90MTFyZXFfcmVzZXQ6IEluaXRpYWxpemUgY29tbWFuZCBmYWlsZWQsIgorCQkJCSIgYmFkIHRoaW5ncyB3aWxsIGhhcHBlbiBmcm9tIGhlcmUuXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9zdGFydAorKgorKiBTdGFydCBhIEJTUy4gIEFueSBzdGF0aW9uIGNhbiBkbyB0aGlzIGZvciBJQlNTLCBvbmx5IEFQIGZvciBFU1MuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9zdGFydCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19kb3QxMXJlcV9zdGFydF90CSptc2cgPSBtc2dwOworCisJcDgwMjExcHN0cmRfdAkJKnBzdHI7CisJVUlOVDgJCQlieXRlYnVmWzgwXTsKKwloZmEzODR4X2J5dGVzdHJfdAkqcDJieXRlc3RyID0gKGhmYTM4NHhfYnl0ZXN0cl90KilieXRlYnVmOworCWhmYTM4NHhfUENGSW5mb19kYXRhX3QJKnBjZmluZm8gPSAoaGZhMzg0eF9QQ0ZJbmZvX2RhdGFfdCopYnl0ZWJ1ZjsKKwlVSU5UMTYJCQl3b3JkOworCURCRkVOVEVSOworCisJd2xhbmRldi0+bWFjbW9kZSA9IFdMQU5fTUFDTU9ERV9OT05FOworCisJLyogU2V0IHRoZSBTU0lEICovCisJbWVtY3B5KCZ3bGFuZGV2LT5zc2lkLCAmbXNnLT5zc2lkLmRhdGEsIHNpemVvZihtc2ctPnNzaWQuZGF0YSkpOworCisJaWYgKCFody0+YXApIHsKKwkJLyoqKiBBREhPQyBJQlNTICoqKi8KKwkJLyogc2VlIGlmIGN1cnJlbnQgZi93IGlzIGxlc3MgdGhhbiA4YzMgKi8KKwkJaWYgKEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTihody0+aWRlbnRfc3RhX2Z3Lm1ham9yLAorCQkJCQkgICAgIGh3LT5pZGVudF9zdGFfZncubWlub3IsCisJCQkJCSAgICAgaHctPmlkZW50X3N0YV9mdy52YXJpYW50KSA8CisJCSAgICBIRkEzODR4X0ZJUk1XQVJFX1ZFUlNJT04oMCw4LDMpKSB7CisJCQkvKiBBZC1Ib2Mgbm90IHF1aXRlIHN1cHBvcnRlZCBvbiBQcmlzbTIgKi8KKwkJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQkJZ290byBkb25lOworCQl9CisKKyAgCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCisJCS8qKiogU1RBVElPTiAqKiovCisJCS8qIFNldCB0aGUgUkVRVUlSRUQgY29uZmlnIGl0ZW1zICovCisJCS8qIFNTSUQgKi8KKwkJcHN0ciA9IChwODAyMTFwc3RyZF90KikmKG1zZy0+c3NpZC5kYXRhKTsKKwkJcHJpc20ybWdtdF9wc3RyMmJ5dGVzdHIocDJieXRlc3RyLCBwc3RyKTsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyggaHcsIEhGQTM4NHhfUklEX0NORk9XTlNTSUQsCisJCQkJYnl0ZWJ1ZiwgSEZBMzg0eF9SSURfQ05GT1dOU1NJRF9MRU4pOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IENuZk93blNTSURcbiIpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyggaHcsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lELAorCQkJCWJ5dGVidWYsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lEX0xFTik7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgQ25mRGVzaXJlZFNTSURcbiIpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQkvKiBic3N0eXBlIC0gd2UgdXNlIHRoZSBkZWZhdWx0IGluIHRoZSBhcCBmaXJtd2FyZSAqLworCQkvKiBJQlNTIHBvcnQgKi8KKwkJaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZQT1JUVFlQRSwgMCk7CisKKwkJLyogYmVhY29uIHBlcmlvZCAqLworCQl3b3JkID0gbXNnLT5iZWFjb25wZXJpb2QuZGF0YTsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9DTkZBUEJDTklOVCwgd29yZCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgYmVhY29uIHBlcmlvZD0lZC5cbiIsIHdvcmQpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQkvKiBkc2NoYW5uZWwgKi8KKwkJd29yZCA9IG1zZy0+ZHNjaGFubmVsLmRhdGE7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GT1dOQ0hBTk5FTCwgd29yZCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgY2hhbm5lbD0lZC5cbiIsIHdvcmQpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKwkJLyogQmFzaWMgcmF0ZXMgKi8KKwkJd29yZCA9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGUxLmRhdGEpOworCQlpZiAoIG1zZy0+YmFzaWNyYXRlMi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlMi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlMy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlMy5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlNC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlNC5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlNS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlNS5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlNi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlNi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlNy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlNy5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+YmFzaWNyYXRlOC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlOC5kYXRhKTsKKwkJfQorCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORkJBU0lDUkFURVMsIHdvcmQpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IGJhc2ljcmF0ZXM9JWQuXG4iLCB3b3JkKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogT3BlcmF0aW9uYWwgcmF0ZXMgKHN1cHByYXRlcyBhbmQgdHhyYXRlY29udHJvbCkgKi8KKwkJd29yZCA9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5vcGVyYXRpb25hbHJhdGUxLmRhdGEpOworCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlMi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlMi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlMy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlMy5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlNC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlNC5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlNS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlNS5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlNi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlNi5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlNy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlNy5kYXRhKTsKKwkJfQorCQlpZiAoIG1zZy0+b3BlcmF0aW9uYWxyYXRlOC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQkJd29yZCB8PSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+b3BlcmF0aW9uYWxyYXRlOC5kYXRhKTsKKwkJfQorCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORlNVUFBSQVRFUywgd29yZCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgc3VwcHJhdGVzPSVkLlxuIiwgd29yZCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCisgCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX1RYUkFURUNOVEwsIHdvcmQpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHR4cmF0ZXM9JWQuXG4iLCB3b3JkKTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogU2V0IHRoZSBtYWNtb2RlIHNvIHRoZSBmcmFtZSBzZXR1cCBjb2RlIGtub3dzIHdoYXQgdG8gZG8gKi8KKwkJaWYgKCBtc2ctPmJzc3R5cGUuZGF0YSA9PSBQODAyMTFFTlVNX2Jzc3R5cGVfaW5kZXBlbmRlbnQgKSB7CisJCQl3bGFuZGV2LT5tYWNtb2RlID0gV0xBTl9NQUNNT0RFX0lCU1NfU1RBOworCQkJLyogbGV0cyBleHRlbmQgdGhlIGRhdGEgbGVuZ3RoIGEgYml0ICovCisJCQloZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORk1BWERBVEFMRU4sIDIzMDQpOworCQl9CisKKwkJLyogRW5hYmxlIHRoZSBQb3J0ICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9lbmFibGUoaHcsIDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJFbmFibGUgbWFjcG9ydCBmYWlsZWQsIHJlc3VsdD0lZC5cbiIsIHJlc3VsdCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisKKwkJZ290byBkb25lOworCX0KKworCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKwkvKiBWYWxpZGF0ZSB0aGUgY29tbWFuZCwgaWYgQlNTdHlwZT1pbmZyYSBpcyB0aGUgdGVydGlhcnkgbG9hZGVkPyAqLworCWlmICggbXNnLT5ic3N0eXBlLmRhdGEgPT0gUDgwMjExRU5VTV9ic3N0eXBlX2luZGVwZW5kZW50ICkgeworCQlXTEFOX0xPR19FUlJPUigiQVAgZHJpdmVyIGNhbm5vdCBjcmVhdGUgSUJTUy5cbiIpOworCQlnb3RvIGZhaWxlZDsKKwl9IGVsc2UgaWYgKCBody0+Y2FwX3N1cF9zdGEuaWQgIT0gNSkgeworCQlXTEFOX0xPR19FUlJPUigiQVAgZHJpdmVyIGZhaWxlZCB0byBkZXRlY3QgQVAgZmlybXdhcmUuXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogU2V0IHRoZSBSRVFVSVJFRCBjb25maWcgaXRlbXMgKi8KKwkvKiBTU0lEICovCisJcHN0ciA9IChwODAyMTFwc3RyZF90KikmKG1zZy0+c3NpZC5kYXRhKTsKKwlwcmlzbTJtZ210X3BzdHIyYnl0ZXN0cihwMmJ5dGVzdHIsIHBzdHIpOworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoIGh3LCBIRkEzODR4X1JJRF9DTkZPV05TU0lELAorCQkJCWJ5dGVidWYsIEhGQTM4NHhfUklEX0NORk9XTlNTSURfTEVOKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgU1NJRCwgcmVzdWx0PTB4JTA0eFxuIiwgcmVzdWx0KTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogYnNzdHlwZSAtIHdlIHVzZSB0aGUgZGVmYXVsdCBpbiB0aGUgYXAgZmlybXdhcmUgKi8KKworCS8qIGJlYWNvbiBwZXJpb2QgKi8KKwl3b3JkID0gbXNnLT5iZWFjb25wZXJpb2QuZGF0YTsKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORkFQQkNOSU5ULCB3b3JkKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgYmVhY29uIHBlcmlvZD0lZC5cbiIsIHdvcmQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBkc2NoYW5uZWwgKi8KKwl3b3JkID0gbXNnLT5kc2NoYW5uZWwuZGF0YTsKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORk9XTkNIQU5ORUwsIHdvcmQpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCBjaGFubmVsPSVkLlxuIiwgd29yZCk7CisJCWdvdG8gZmFpbGVkOworCX0KKwkvKiBCYXNpYyByYXRlcyAqLworCXdvcmQgPSBwODAyMTFyYXRlX3RvX3AyYml0KG1zZy0+YmFzaWNyYXRlMS5kYXRhKTsKKwlpZiAoIG1zZy0+YmFzaWNyYXRlMi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGUyLmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlMy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGUzLmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlNC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU0LmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlNS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU1LmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlNi5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU2LmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlNy5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU3LmRhdGEpOworCX0KKwlpZiAoIG1zZy0+YmFzaWNyYXRlOC5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rICkgeworCQl3b3JkIHw9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5iYXNpY3JhdGU4LmRhdGEpOworCX0KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORkJBU0lDUkFURVMsIHdvcmQpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCBiYXNpY3JhdGVzPSVkLlxuIiwgd29yZCk7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIE9wZXJhdGlvbmFsIHJhdGVzIChzdXBwcmF0ZXMgYW5kIHR4cmF0ZWNvbnRyb2wpICovCisJd29yZCA9IHA4MDIxMXJhdGVfdG9fcDJiaXQobXNnLT5vcGVyYXRpb25hbHJhdGUxLmRhdGEpOworCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGUyLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTIuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGUzLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTMuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU0LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTQuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU1LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTUuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU2LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTYuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU3LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTcuZGF0YSk7CisJfQorCWlmICggbXNnLT5vcGVyYXRpb25hbHJhdGU4LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCXdvcmQgfD0gcDgwMjExcmF0ZV90b19wMmJpdChtc2ctPm9wZXJhdGlvbmFscmF0ZTguZGF0YSk7CisJfQorCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GU1VQUFJBVEVTLCB3b3JkKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgc3VwcHJhdGVzPSVkLlxuIiwgd29yZCk7CisJCWdvdG8gZmFpbGVkOworCX0KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX1RYUkFURUNOVEwwLCB3b3JkKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgdHhyYXRlcz0lZC5cbiIsIHdvcmQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBpYnNzYXRpbXdpbmRvdyAqLworCWlmIChtc2ctPmlic3NhdGltd2luZG93LnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2spIHsKKwkJV0xBTl9MT0dfSU5GTygicHJpc20ybWdtdF9zdGFydDogYXRpbXdpbmRvdyBub3QgdXNlZCBpbiAiCisJCQkgICAgICAgIkluZnJhc3RydWN0dXJlIG1vZGUsIGlnbm9yZWQuXG4iKTsKKwl9CisKKwkvKiBEVElNIHBlcmlvZCAqLworCXdvcmQgPSBtc2ctPmR0aW1wZXJpb2QuZGF0YTsKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORk9XTkRUSU1QRVIsIHdvcmQpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHNldCBkdGltIHBlcmlvZD0lZC5cbiIsIHdvcmQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBwcm9iZWRlbGF5ICovCisJaWYgKG1zZy0+cHJvYmVkZWxheS5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rKSB7CisJCVdMQU5fTE9HX0lORk8oInByaXNtMm1nbXRfc3RhcnQ6IHByb2JlZGVsYXkgbm90ICIKKwkJCSAgICAgICAic3VwcG9ydGVkIGluIHByaXNtMiwgaWdub3JlZC5cbiIpOworCX0KKworCS8qIGNmcG9sbGFibGUsIGNmcG9sbHJlcSwgY2ZwcGVyaW9kLCBjZnBtYXhkdXJhdGlvbiAqLworCWlmIChtc2ctPmNmcG9sbGFibGUuZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUgJiYKKwkgICAgbXNnLT5jZnBvbGxyZXEuZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJjZnBvbGxhYmxlPWNmcG9sbHJlcT10cnVlIGlzIGlsbGVnYWwuXG4iKTsKKwkJcmVzdWx0ID0gLTE7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIHJlYWQgdGhlIFBDRkluZm8gYW5kIHVwZGF0ZSAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0NORkFQUENGSU5GTywKKwkJCQkJcGNmaW5mbywgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPX0xFTik7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0lORk8oInByaXNtMm1nbXRfc3RhcnQ6IHJlYWQocGNmaW5mbykgZmFpbGVkLCAiCisJCQkJImFzc3VtZSBpdCdzICIKKwkJCQkibm90IHN1cHBvcnRlZCwgcGNmIHNldHRpbmdzIGlnbm9yZWQuXG4iKTsKKwkJZ290byBwY2Zfc2tpcDsKKwl9CisJaWYgKChtc2ctPmNmcG9sbGFibGUuZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX2ZhbHNlICYmCisJICAgICBtc2ctPmNmcG9sbHJlcS5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfZmFsc2UpICkgeworCSAgICAJcGNmaW5mby0+TWVkaXVtT2NjdXBhbmN5TGltaXQgPSAwOworCQlwY2ZpbmZvLT5DRlBQZXJpb2QgPSAwOworCQlwY2ZpbmZvLT5DRlBNYXhEdXJhdGlvbiA9IDA7CisJCXBjZmluZm8tPkNGUEZsYWdzICY9IGhvc3QyaGZhMzg0eF8xNigoVUlOVDE2KX5CSVQwKTsKKworCQlpZiAoIG1zZy0+Y2ZwcGVyaW9kLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgfHwKKwkJICAgICBtc2ctPmNmcG1heGR1cmF0aW9uLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2sgKSB7CisJCQlXTEFOX0xPR19XQVJOSU5HKAorCQkJCSJTZXR0aW5nIGNmcHBlcmlvZCBvciBjZnBtYXhkdXJhdGlvbiB3aGVuICIKKwkJCQkiY2Zwb2xsYWJsZSBhbmQgY2ZyZXEgYXJlIGZhbHNlIGlzIHBvaW50bGVzcy5cbiIpOworCQl9CisJfQorCWlmICgobXNnLT5jZnBvbGxhYmxlLmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlIHx8CisJICAgICBtc2ctPmNmcG9sbHJlcS5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSkgKSB7CisJCWlmICggbXNnLT5jZnBvbGxhYmxlLmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlKSB7CisJCQlwY2ZpbmZvLT5DRlBGbGFncyB8PSBob3N0MmhmYTM4NHhfMTYoKFVJTlQxNilCSVQwKTsKKwkJfQorCisJCWlmICggbXNnLT5jZnBwZXJpb2Quc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vaykgeworCQkJcGNmaW5mby0+Q0ZQUGVyaW9kID0gbXNnLT5jZnBwZXJpb2QuZGF0YTsKKwkJCXBjZmluZm8tPkNGUFBlcmlvZCA9IGhvc3QyaGZhMzg0eF8xNihwY2ZpbmZvLT5DRlBQZXJpb2QpOworCQl9CisKKwkJaWYgKCBtc2ctPmNmcG1heGR1cmF0aW9uLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2spIHsKKwkJCXBjZmluZm8tPkNGUE1heER1cmF0aW9uID0gbXNnLT5jZnBtYXhkdXJhdGlvbi5kYXRhOworCQkJcGNmaW5mby0+Q0ZQTWF4RHVyYXRpb24gPSBob3N0MmhmYTM4NHhfMTYocGNmaW5mby0+Q0ZQTWF4RHVyYXRpb24pOworCQkJcGNmaW5mby0+TWVkaXVtT2NjdXBhbmN5TGltaXQgPSBwY2ZpbmZvLT5DRlBNYXhEdXJhdGlvbjsKKwkJfQorCX0KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9DTkZBUFBDRklORk8sCisJCQkJCXBjZmluZm8sIEhGQTM4NHhfUklEX0NORkFQUENGSU5GT19MRU4pOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigid3JpdGUocGNmaW5mbykgZmFpbGVkLlxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworcGNmX3NraXA6CisJLyogU2V0IHRoZSBtYWNtb2RlIHNvIHRoZSBmcmFtZSBzZXR1cCBjb2RlIGtub3dzIHdoYXQgdG8gZG8gKi8KKwlpZiAoIG1zZy0+YnNzdHlwZS5kYXRhID09IFA4MDIxMUVOVU1fYnNzdHlwZV9pbmZyYXN0cnVjdHVyZSApIHsKKwkJd2xhbmRldi0+bWFjbW9kZSA9IFdMQU5fTUFDTU9ERV9FU1NfQVA7CisJCS8qIGxldHMgZXh0ZW5kIHRoZSBkYXRhIGxlbmd0aCBhIGJpdCAqLworCQloZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORk1BWERBVEFMRU4sIDIzMDQpOworCX0KKworCS8qIFNldCB0aGUgQlNTSUQgdG8gdGhlIHNhbWUgYXMgb3VyIE1BQyAqLworCW1lbWNweSggd2xhbmRldi0+YnNzaWQsIHdsYW5kZXYtPm5ldGRldi0+ZGV2X2FkZHIsIFdMQU5fQlNTSURfTEVOKTsKKworCS8qIEVuYWJsZSB0aGUgUG9ydCAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9lbmFibGUoaHcsIDApOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiRW5hYmxlIG1hY3BvcnQgZmFpbGVkLCByZXN1bHQ9JWQuXG4iLCByZXN1bHQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCisJZ290byBkb25lOworZmFpbGVkOgorCVdMQU5fTE9HX0RFQlVHKDEsICJGYWlsZWQgdG8gc2V0IGEgY29uZmlnIG9wdGlvbiwgcmVzdWx0PSVkXG4iLCByZXN1bHQpOworCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfcGFyYW1ldGVyczsKKworZG9uZToKKwlyZXN1bHQgPSAwOworCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2VuYWJsZQorKgorKiBTdGFydCBhIEJTUy4gIEFueSBzdGF0aW9uIGNhbiBkbyB0aGlzIGZvciBJQlNTLCBvbmx5IEFQIGZvciBFU1MuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9lbmFibGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWludAkJCXJlc3VsdCA9IDA7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19wMnJlcV9lbmFibGVfdAkqbXNnID0gbXNncDsKKwlEQkZFTlRFUjsKKworCWlmICghaHctPmFwKSB7CisKKwkJLyoqKiBTVEFUSU9OICoqKi8KKworCQkvKiBBZC1Ib2Mgbm90IHF1aXRlIHN1cHBvcnRlZCBvbiBQcmlzbTIgKi8KKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKwkJZ290byBkb25lOworCX0KKworCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKwkvKiBJcyB0aGUgdGVydGlhcnkgbG9hZGVkPyAqLworCWlmICggaHctPmNhcF9zdXBfc3RhLmlkICE9IDUpIHsKKwkJV0xBTl9MT0dfRVJST1IoIkFQIGRyaXZlciBmYWlsZWQgdG8gZGV0ZWN0IEFQIGZpcm13YXJlLlxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIFNldCB0aGUgbWFjbW9kZSBzbyB0aGUgZnJhbWUgc2V0dXAgY29kZSBrbm93cyB3aGF0IHRvIGRvICovCisJd2xhbmRldi0+bWFjbW9kZSA9IFdMQU5fTUFDTU9ERV9FU1NfQVA7CisKKwkvKiBTZXQgdGhlIEJTU0lEIHRvIHRoZSBzYW1lIGFzIG91ciBNQUMgKi8KKwltZW1jcHkoIHdsYW5kZXYtPmJzc2lkLCB3bGFuZGV2LT5uZXRkZXYtPmRldl9hZGRyLCBXTEFOX0JTU0lEX0xFTik7CisKKwkvKiBFbmFibGUgdGhlIFBvcnQgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZW5hYmxlKGh3LCAwKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkVuYWJsZSBtYWNwb3J0IGZhaWxlZCwgcmVzdWx0PSVkLlxuIiwgcmVzdWx0KTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworCWdvdG8gZG9uZTsKK2ZhaWxlZDoKKwltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbnZhbGlkX3BhcmFtZXRlcnM7CisKK2RvbmU6CisJcmVzdWx0ID0gMDsKKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9yZWFkcGRhCisqCisqIENvbGxlY3QgdGhlIFBEQSBkYXRhIGFuZCBwdXQgaXQgaW4gdGhlIG1lc3NhZ2UuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X3JlYWRwZGEod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfcmVhZHBkYV90CSptc2cgPSBtc2dwOworCWludAkJCQlyZXN1bHQ7CisJREJGRU5URVI7CisKKwkvKiBXZSBvbmx5IHN1cHBvcnQgY29sbGVjdGluZyB0aGUgUERBIHdoZW4gaW4gdGhlIEZXTE9BRAorCSAqIHN0YXRlLgorCSAqLworCWlmICh3bGFuZGV2LT5tc2RzdGF0ZSAhPSBXTEFOX01TRF9GV0xPQUQpIHsKKwkJV0xBTl9MT0dfRVJST1IoCisJCQkiUERBIG1heSBvbmx5IGJlIHJlYWQgIgorCQkJImluIHRoZSBmd2xvYWQgc3RhdGUuXG4iKTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJfSBlbHNlIHsKKwkJLyogIENhbGwgZHJ2cl9yZWFkcGRhKCksIGl0IGhhbmRsZXMgdGhlIGF1eHBvcnQgZW5hYmxlCisJCSAqICBhbmQgdmFsaWRhdGluZyB0aGUgcmV0dXJuZWQgUERBLgorCQkgKi8KKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3JlYWRwZGEoCisJCQlodywKKwkJCW1zZy0+cGRhLmRhdGEsCisJCQlIRkEzODR4X1BEQV9MRU5fTUFYKTsKKwkJaWYgKHJlc3VsdCkgeworCQkJV0xBTl9MT0dfRVJST1IoCisJCQkJImhmYTM4NHhfZHJ2cl9yZWFkcGRhKCkgZmFpbGVkLCAiCisJCQkJInJlc3VsdD0lZFxuIiwKKwkJCQlyZXN1bHQpOworCisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0KKwkJCQlQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCQlEQkZFWElUOworCQkJcmV0dXJuIDA7CisJCX0KKwkJbXNnLT5wZGEuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3JlYWRjaXMKKyoKKyogQ29sbGVjdCB0aGUgQ0lTIGRhdGEgYW5kIHB1dCBpdCBpbiB0aGUgbWVzc2FnZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfcmVhZGNpcyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaW50CQkJcmVzdWx0OworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfcmVhZGNpc190CSptc2cgPSBtc2dwOworCisJREJGRU5URVI7CisKKyAgICAgICAgbWVtc2V0KG1zZy0+Y2lzLmRhdGEsIDAsIHNpemVvZihtc2ctPmNpcy5kYXRhKSk7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9DSVMsCisJCQkJCW1zZy0+Y2lzLmRhdGEsIEhGQTM4NHhfUklEX0NJU19MRU4pOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19JTkZPKCJwcmlzbTJtZ210X3JlYWRjaXM6IHJlYWQoY2lzKSBmYWlsZWQuXG4iKTsKKwkJbXNnLT5jaXMuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19ub192YWx1ZTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKworCQl9CisJZWxzZSB7CisJCW1zZy0+Y2lzLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwkJfQorCisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2F1eHBvcnRfc3RhdGUKKyoKKyogRW5hYmxlcy9EaXNhYmxlcyB0aGUgY2FyZCdzIGF1eGlsaWFyeSBwb3J0LiAgU2hvdWxkIGJlIGNhbGxlZAorKiBiZWZvcmUgYW5kIGFmdGVyIGEgc2VxdWVuY2Ugb2YgYXV4cG9ydF9yZWFkKCkvYXV4cG9ydF93cml0ZSgpCisqIGNhbGxzLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9hdXhwb3J0X3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlwODAyMTFtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZV90CSptc2cgPSBtc2dwOworCisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlEQkZFTlRFUjsKKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJaWYgKG1zZy0+ZW5hYmxlLmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlKSB7CisJCWlmICggaGZhMzg0eF9jbWRfYXV4X2VuYWJsZShodywgMCkgKSB7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQl9IGVsc2UgeworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwkJfQorCX0gZWxzZSB7CisJCWhmYTM4NHhfY21kX2F1eF9kaXNhYmxlKGh3KTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwl9CisKKyNlbHNlIC8qICFVU0IgKi8KKwlEQkZFTlRFUjsKKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKworI2VuZGlmIC8qIFdMQU5fSE9TVElGICE9IFdMQU5fVVNCICovCisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2F1eHBvcnRfcmVhZAorKgorKiBDb3BpZXMgZGF0YSBmcm9tIHRoZSBjYXJkIHVzaW5nIHRoZSBhdXhwb3J0LiAgVGhlIGF1eHBvcnQgbXVzdAorKiBoYXZlIHByZXZpb3VzbHkgYmVlbiBlbmFibGVkLiAgTm90ZTogdGhpcyBpcyBub3QgdGhlIHdheSB0bworKiBkbyBkb3dubG9hZHMsIHNlZSB0aGUgW3JhbXxmbGFzaF1kbCBmdW5jdGlvbnMuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2F1eHBvcnRfcmVhZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfYXV4cG9ydF9yZWFkX3QJKm1zZyA9IG1zZ3A7CisJVUlOVDMyCQkJYWRkcjsKKwlVSU5UMzIJCQlsZW47CisJVUlOVDgqCQkJYnVmOworCVVJTlQzMgkJCW1heGxlbiA9IHNpemVvZihtc2ctPmRhdGEuZGF0YSk7CisJREJGRU5URVI7CisKKwlpZiAoIGh3LT5hdXhlbiApIHsKKwkJYWRkciA9IG1zZy0+YWRkci5kYXRhOworCQlsZW4gPSBtc2ctPmxlbi5kYXRhOworCQlidWYgPSBtc2ctPmRhdGEuZGF0YTsKKwkJaWYgKCBsZW4gPD0gbWF4bGVuICkgeyAgLyogbWF4IHJlYWQvd3JpdGUgc2l6ZSAqLworCQkJaGZhMzg0eF9jb3B5X2Zyb21fYXV4KGh3LCBhZGRyLCBIRkEzODR4X0FVWF9DVExfRVhURFMsIGJ1ZiwgbGVuKTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCX0gZWxzZSB7CisJCQlXTEFOX0xPR19ERUJVRygxLCJBdHRlbXB0IHRvIHJlYWQgPiBtYXhsZW4gZnJvbSBhdXhwb3J0LlxuIik7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCQl9CisKKwl9IGVsc2UgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCX0KKwltc2ctPmRhdGEuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKwlEQkZFWElUOworCXJldHVybiAwOworI2Vsc2UKKwlEQkZFTlRFUjsKKworCVdMQU5fTE9HX0VSUk9SKCJwcmlzbTJtZ210X2F1eHBvcnRfcmVhZDogTm90IHN1cHBvcnRlZCBvbiBVU0IuXG4iKTsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7CisjZW5kaWYKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9hdXhwb3J0X3dyaXRlCisqCisqIENvcGllcyBkYXRhIHRvIHRoZSBjYXJkIHVzaW5nIHRoZSBhdXhwb3J0LiAgVGhlIGF1eHBvcnQgbXVzdAorKiBoYXZlIHByZXZpb3VzbHkgYmVlbiBlbmFibGVkLiAgTm90ZTogdGhpcyBpcyBub3QgdGhlIHdheSB0bworKiBkbyBkb3dubG9hZHMsIHNlZSB0aGUgW3JhbXxmbGFzaF1kbCBmdW5jdGlvbnMuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2F1eHBvcnRfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1VTQikKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisJcDgwMjExbXNnX3AycmVxX2F1eHBvcnRfd3JpdGVfdAkqbXNnID0gbXNncDsKKwlVSU5UMzIJCQlhZGRyOworCVVJTlQzMgkJCWxlbjsKKwlVSU5UOCoJCQlidWY7CisJVUlOVDMyCQkJbWF4bGVuID0gc2l6ZW9mKG1zZy0+ZGF0YS5kYXRhKTsKKwlEQkZFTlRFUjsKKworCWlmICggaHctPmF1eGVuICkgeworCQlhZGRyID0gbXNnLT5hZGRyLmRhdGE7CisJCWxlbiA9IG1zZy0+bGVuLmRhdGE7CisJCWJ1ZiA9IG1zZy0+ZGF0YS5kYXRhOworCQlpZiAoIGxlbiA8PSBtYXhsZW4gKSB7ICAvKiBtYXggcmVhZC93cml0ZSBzaXplICovCisJCQloZmEzODR4X2NvcHlfdG9fYXV4KGh3LCBhZGRyLCBIRkEzODR4X0FVWF9DVExfRVhURFMsIGJ1ZiwgbGVuKTsKKwkJfSBlbHNlIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsIkF0dGVtcHQgdG8gd3JpdGUgPiBtYXhsZW4gZnJvbSBhdXhwb3J0LlxuIik7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCQl9CisKKwl9IGVsc2UgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCX0KKwltc2ctPmRhdGEuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKwlEQkZFWElUOworCXJldHVybiAwOworI2Vsc2UKKwlEQkZFTlRFUjsKKwlXTEFOX0xPR19FUlJPUigicHJpc20ybWdtdF9hdXhwb3J0X3JlYWQ6IE5vdCBzdXBwb3J0ZWQgb24gVVNCLlxuIik7CisJREJGRVhJVDsKKwlyZXR1cm4gMDsKKyNlbmRpZgorfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9sb3dfbGV2ZWwKKyoKKyogUHV0cyB0aGUgY2FyZCBpbnRvIHRoZSBkZXNpcmVkIHRlc3QgbW9kZS4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICB3bGFuZGV2ICAgICAgICAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqICAgICAgIG1zZ3AgICAgICAgICAgICBwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgICAgIHN1Y2Nlc3MgYW5kIGRvbmUKKyogICAgICAgPDAgICAgICBzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyogICAgICAgPjAgICAgICBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqICAgICAgIHByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfbG93X2xldmVsKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisgICAgICAgIHA4MDIxMW1zZ19wMnJlcV9sb3dfbGV2ZWxfdCAgICAgKm1zZyA9IG1zZ3A7CisJaGZhMzg0eF9tZXRhY21kX3QgY21kOworICAgICAgICBEQkZFTlRFUjsKKworICAgICAgICBtc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCisgICAgICAgIC8qIGNhbGwgc29tZSByb3V0aW5lIHRvIGV4ZWN1dGUgdGhlIHRlc3QgY29tbWFuZCAqLworCWNtZC5jbWQgPSAoVUlOVDE2KSBtc2ctPmNvbW1hbmQuZGF0YTsKKwljbWQucGFybTAgPSAoVUlOVDE2KSBtc2ctPnBhcmFtMC5kYXRhOworCWNtZC5wYXJtMSA9IChVSU5UMTYpIG1zZy0+cGFyYW0xLmRhdGE7CisJY21kLnBhcm0yID0gKFVJTlQxNikgbXNnLT5wYXJhbTIuZGF0YTsKKworICAgICAgICBoZmEzODR4X2RydnJfbG93X2xldmVsKGh3LCZjbWQpOworCisgICAgICAgIG1zZy0+cmVzcDAuZGF0YSA9IChVSU5UMzIpIGNtZC5yZXN1bHQucmVzcDA7CisgICAgICAgIG1zZy0+cmVzcDEuZGF0YSA9IChVSU5UMzIpIGNtZC5yZXN1bHQucmVzcDE7CisgICAgICAgIG1zZy0+cmVzcDIuZGF0YSA9IChVSU5UMzIpIGNtZC5yZXN1bHQucmVzcDI7CisKKyAgICAgICAgbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworICAgICAgICBEQkZFWElUOworICAgICAgICByZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfdGVzdF9jb21tYW5kCisqCisqIFB1dHMgdGhlIGNhcmQgaW50byB0aGUgZGVzaXJlZCB0ZXN0IG1vZGUuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X3Rlc3RfY29tbWFuZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19wMnJlcV90ZXN0X2NvbW1hbmRfdAkqbXNnID0gbXNncDsKKwloZmEzODR4X21ldGFjbWRfdCBjbWQ7CisKKyAgICAgICAgREJGRU5URVI7CisKKwljbWQuY21kID0gKChVSU5UMTYpIG1zZy0+dGVzdGNvZGUuZGF0YSkgPDwgOCB8IDB4Mzg7CisJY21kLnBhcm0wID0gKFVJTlQxNikgbXNnLT50ZXN0cGFyYW0uZGF0YTsKKwljbWQucGFybTEgPSAwOworCWNtZC5wYXJtMiA9IDA7CisKKyAgICAgICAgLyogY2FsbCBzb21lIHJvdXRpbmUgdG8gZXhlY3V0ZSB0aGUgdGVzdCBjb21tYW5kICovCisKKyAgICAgICAgaGZhMzg0eF9kcnZyX2xvd19sZXZlbChodywmY21kKTsKKworICAgICAgICBtc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworICAgICAgICBtc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCisgICAgICAgIG1zZy0+c3RhdHVzLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKyAgICAgICAgbXNnLT5zdGF0dXMuZGF0YSA9IGNtZC5yZXN1bHQuc3RhdHVzOworICAgICAgICBtc2ctPnJlc3AwLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKyAgICAgICAgbXNnLT5yZXNwMC5kYXRhID0gY21kLnJlc3VsdC5yZXNwMDsKKyAgICAgICAgbXNnLT5yZXNwMS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisgICAgICAgIG1zZy0+cmVzcDEuZGF0YSA9IGNtZC5yZXN1bHQucmVzcDE7CisgICAgICAgIG1zZy0+cmVzcDIuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworICAgICAgICBtc2ctPnJlc3AyLmRhdGEgPSBjbWQucmVzdWx0LnJlc3AyOworCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9tbWlfcmVhZAorKgorKiBSZWFkIGZyb20gb25lIG9mIHRoZSBNTUkgcmVnaXN0ZXJzLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9tbWlfcmVhZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19wMnJlcV9tbWlfcmVhZF90CSptc2cgPSBtc2dwOworCVVJTlQzMiByZXNwID0gMDsKKworCURCRkVOVEVSOworCisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKworCS8qIGNhbGwgc29tZSByb3V0aW5lIHRvIGV4ZWN1dGUgdGhlIHRlc3QgY29tbWFuZCAqLworCisJaGZhMzg0eF9kcnZyX21taV9yZWFkKGh3LCBtc2ctPmFkZHIuZGF0YSwgJnJlc3ApOworCisJLyogSSdtIG5vdCBzdXJlIGlmIHRoaXMgaXMgImFyY2hpdGVjdHVyYWxseSIgY29ycmVjdCwgYnV0IGl0CisgICAgICAgICAgIGlzIGV4cGVkaWVudC4gKi8KKworCW1zZy0+dmFsdWUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCW1zZy0+dmFsdWUuZGF0YSA9IHJlc3A7CisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X21taV93cml0ZQorKgorKiBXcml0ZSBhIGRhdGEgdmFsdWUgdG8gb25lIG9mIHRoZSBNTUkgcmVnaXN0ZXJzLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9tbWlfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfbW1pX3dyaXRlX3QJKm1zZyA9IG1zZ3A7CisJREJGRU5URVI7CisKKwltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCisJLyogY2FsbCBzb21lIHJvdXRpbmUgdG8gZXhlY3V0ZSB0aGUgdGVzdCBjb21tYW5kICovCisKKwloZmEzODR4X2RydnJfbW1pX3dyaXRlKGh3LCBtc2ctPmFkZHIuZGF0YSwgbXNnLT5kYXRhLmRhdGEpOworCisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworCURCRkVYSVQ7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3JhbWRsX3N0YXRlCisqCisqIEVzdGFibGlzaGVzIHRoZSBiZWdpbm5pbmcvZW5kIG9mIGEgY2FyZCBSQU0gZG93bmxvYWQgc2Vzc2lvbi4KKyoKKyogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgcmFtZGxfd3JpdGUoKSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorKiBvbmUgb3IgbW9yZSB0aW1lcyBiZXR3ZWVuIHRoZSAnZW5hYmxlJyBhbmQgJ2Rpc2FibGUnIGNhbGxzIHRvCisqIHRoaXMgZnVuY3Rpb24uCisqCisqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBhIG1hYyBjb21tIHBvcnQKKyogICAgICAgaXMgYWN0aXZlLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9yYW1kbF9zdGF0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJaGZhMzg0eF90CQkqaHcgPSB3bGFuZGV2LT5wcml2OworCXA4MDIxMW1zZ19wMnJlcV9yYW1kbF9zdGF0ZV90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYtPm1zZHN0YXRlICE9IFdMQU5fTVNEX0ZXTE9BRCkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJyYW1kbF9zdGF0ZSgpOiBtYXkgb25seSBiZSBjYWxsZWQgIgorCQkJImluIHRoZSBmd2xvYWQgc3RhdGUuXG4iKTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCURCRkVYSVQ7CisJCXJldHVybiAwOworCX0KKworCS8qCisJKiogTm90ZTogSW50ZXJydXB0cyBhcmUgbG9ja2VkIG91dCBpZiB0aGlzIGlzIGFuIEFQIGFuZCBhcmUgTk9UCisJKiogbG9ja2VkIG91dCBpZiB0aGlzIGlzIGEgc3RhdGlvbi4KKwkqLworCisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwlpZiAgKCBtc2ctPmVuYWJsZS5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSApIHsKKwkJaWYgKCBoZmEzODR4X2RydnJfcmFtZGxfZW5hYmxlKGh3LCBtc2ctPmV4ZWFkZHIuZGF0YSkgKSB7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQl9IGVsc2UgeworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwkJfQorCX0gZWxzZSB7CisJCWhmYTM4NHhfZHJ2cl9yYW1kbF9kaXNhYmxlKGh3KTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwl9CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3JhbWRsX3dyaXRlCisqCisqIFdyaXRlcyBhIGJ1ZmZlciB0byB0aGUgY2FyZCBSQU0gdXNpbmcgdGhlIGRvd25sb2FkIHN0YXRlLiAgVGhpcworKiBpcyBmb3Igd3JpdGluZyBjb2RlIHRvIGNhcmQgUkFNLiAgVG8ganVzdCByZWFkIG9yIHdyaXRlIHJhdyBkYXRhCisqIHVzZSB0aGUgYXV4IGZ1bmN0aW9ucy4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfcmFtZGxfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfcmFtZGxfd3JpdGVfdAkqbXNnID0gbXNncDsKKwlVSU5UMzIJCQlhZGRyOworCVVJTlQzMgkJCWxlbjsKKwlVSU5UOAkJCSpidWY7CisJREJGRU5URVI7CisKKwlpZiAod2xhbmRldi0+bXNkc3RhdGUgIT0gV0xBTl9NU0RfRldMT0FEKSB7CisJCVdMQU5fTE9HX0VSUk9SKAorCQkJInJhbWRsX3dyaXRlKCk6IG1heSBvbmx5IGJlIGNhbGxlZCAiCisJCQkiaW4gdGhlIGZ3bG9hZCBzdGF0ZS5cbiIpOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQlQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJREJGRVhJVDsKKwkJcmV0dXJuIDA7CisJfQorCisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkvKiBmaXJzdCB2YWxpZGF0ZSB0aGUgbGVuZ3RoICovCisJaWYgICggbXNnLT5sZW4uZGF0YSA+IHNpemVvZihtc2ctPmRhdGEuZGF0YSkgKSB7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW52YWxpZF9wYXJhbWV0ZXJzOworCQlyZXR1cm4gMDsKKwl9CisJLyogY2FsbCB0aGUgaGZhMzg0eCBmdW5jdGlvbiB0byBkbyB0aGUgd3JpdGUgKi8KKwlhZGRyID0gbXNnLT5hZGRyLmRhdGE7CisJbGVuID0gbXNnLT5sZW4uZGF0YTsKKwlidWYgPSBtc2ctPmRhdGEuZGF0YTsKKwlpZiAoIGhmYTM4NHhfZHJ2cl9yYW1kbF93cml0ZShodywgYWRkciwgYnVmLCBsZW4pICkgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCisJfQorCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2ZsYXNoZGxfc3RhdGUKKyoKKyogRXN0YWJsaXNoZXMgdGhlIGJlZ2lubmluZy9lbmQgb2YgYSBjYXJkIEZsYXNoIGRvd25sb2FkIHNlc3Npb24uCisqCisqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGZsYXNoZGxfd3JpdGUoKSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorKiBvbmUgb3IgbW9yZSB0aW1lcyBiZXR3ZWVuIHRoZSAnZW5hYmxlJyBhbmQgJ2Rpc2FibGUnIGNhbGxzIHRvCisqIHRoaXMgZnVuY3Rpb24uCisqCisqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBhIG1hYyBjb21tIHBvcnQKKyogICAgICAgaXMgYWN0aXZlLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9mbGFzaGRsX3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlpbnQJCQlyZXN1bHQgPSAwOworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfZmxhc2hkbF9zdGF0ZV90CSptc2cgPSBtc2dwOworCURCRkVOVEVSOworCisJaWYgKHdsYW5kZXYtPm1zZHN0YXRlICE9IFdMQU5fTVNEX0ZXTE9BRCkgeworCQlXTEFOX0xPR19FUlJPUigKKwkJCSJmbGFzaGRsX3N0YXRlKCk6IG1heSBvbmx5IGJlIGNhbGxlZCAiCisJCQkiaW4gdGhlIGZ3bG9hZCBzdGF0ZS5cbiIpOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQlQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKwkJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJREJGRVhJVDsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkqKiBOb3RlOiBJbnRlcnJ1cHRzIGFyZSBsb2NrZWQgb3V0IGlmIHRoaXMgaXMgYW4gQVAgYW5kIGFyZSBOT1QKKwkqKiBsb2NrZWQgb3V0IGlmIHRoaXMgaXMgYSBzdGF0aW9uLgorCSovCisKKwltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCWlmICAoIG1zZy0+ZW5hYmxlLmRhdGEgPT0gUDgwMjExRU5VTV90cnV0aF90cnVlICkgeworCQlpZiAoIGhmYTM4NHhfZHJ2cl9mbGFzaGRsX2VuYWJsZShodykgKSB7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQl9IGVsc2UgeworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwkJfQorCX0gZWxzZSB7CisJCWhmYTM4NHhfZHJ2cl9mbGFzaGRsX2Rpc2FibGUoaHcpOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCQkvKiBOT1RFOiBBdCB0aGlzIHBvaW50LCB0aGUgTUFDIGlzIGluIHRoZSBwb3N0LXJlc2V0CisJCSAqIHN0YXRlIGFuZCB0aGUgZHJpdmVyIGlzIGluIHRoZSBmd2xvYWQgc3RhdGUuCisJCSAqIFdlIG5lZWQgdG8gZ2V0IHRoZSBNQUMgYmFjayBpbnRvIHRoZSBmd2xvYWQKKwkJICogc3RhdGUuICBUbyBkbyB0aGlzLCB3ZSBzZXQgdGhlIG5zZHN0YXRlIHRvIEhXUFJFU0VOVAorCQkgKiBhbmQgdGhlbiBjYWxsIHRoZSBpZnN0YXRlIGZ1bmN0aW9uIHRvIHJlZG8gZXZlcnl0aGluZworCQkgKiB0aGF0IGdvdCB1cyBpbnRvIHRoZSBmd2xvYWQgc3RhdGUuCisJCSAqLworCQl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKwkJcmVzdWx0ID0gcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Z3bG9hZCk7CisJCWlmIChyZXN1bHQgIT0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3MpIHsKKwkJCVdMQU5fTE9HX0VSUk9SKCJwcmlzbTJzdGFfaWZzdGF0ZShmd2xvYWQpIGZhaWxlZCwiCisJCQkJIlA4MDIxMUVOVU1fcmVzdWx0Y29kZT0lZFxuIiwgcmVzdWx0KTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0KKwkJCQlQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKwkJCXJlc3VsdCA9IC0xOworCQl9CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9mbGFzaGRsX3dyaXRlCisqCisqCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2ZsYXNoZGxfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlwODAyMTFtc2dfcDJyZXFfZmxhc2hkbF93cml0ZV90CSptc2cgPSBtc2dwOworCVVJTlQzMgkJCWFkZHI7CisJVUlOVDMyCQkJbGVuOworCVVJTlQ4CQkJKmJ1ZjsKKwlEQkZFTlRFUjsKKworCWlmICh3bGFuZGV2LT5tc2RzdGF0ZSAhPSBXTEFOX01TRF9GV0xPQUQpIHsKKwkJV0xBTl9MT0dfRVJST1IoCisJCQkiZmxhc2hkbF93cml0ZSgpOiBtYXkgb25seSBiZSBjYWxsZWQgIgorCQkJImluIHRoZSBmd2xvYWQgc3RhdGUuXG4iKTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCURCRkVYSVQ7CisJCXJldHVybiAwOworCX0KKworCS8qCisJKiogTm90ZTogSW50ZXJydXB0cyBhcmUgbG9ja2VkIG91dCBpZiB0aGlzIGlzIGFuIEFQIGFuZCBhcmUgTk9UCisJKiogbG9ja2VkIG91dCBpZiB0aGlzIGlzIGEgc3RhdGlvbi4KKwkqLworCisJbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkvKiBmaXJzdCB2YWxpZGF0ZSB0aGUgbGVuZ3RoICovCisJaWYgICggbXNnLT5sZW4uZGF0YSA+IHNpemVvZihtc2ctPmRhdGEuZGF0YSkgKSB7CisJCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPQorCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfcGFyYW1ldGVyczsKKwkJcmV0dXJuIDA7CisJfQorCS8qIGNhbGwgdGhlIGhmYTM4NHggZnVuY3Rpb24gdG8gZG8gdGhlIHdyaXRlICovCisJYWRkciA9IG1zZy0+YWRkci5kYXRhOworCWxlbiA9IG1zZy0+bGVuLmRhdGE7CisJYnVmID0gbXNnLT5kYXRhLmRhdGE7CisJaWYgKCBoZmEzODR4X2RydnJfZmxhc2hkbF93cml0ZShodywgYWRkciwgYnVmLCBsZW4pICkgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9yZWZ1c2VkOworCisJfQorCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2R1bXBfc3RhdGUKKyoKKyogRHVtcHMgdGhlIGRyaXZlcidzIGFuZCBoYXJkd2FyZSdzIGN1cnJlbnQgc3RhdGUgdmlhIHRoZSBrZXJuZWwKKyogbG9nIGF0IEtFUk5fTk9USUNFIGxldmVsLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9kdW1wX3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlwODAyMTFtc2dfcDJyZXFfZHVtcF9zdGF0ZV90CSptc2cgPSBtc2dwOworCWludAkJCQlyZXN1bHQgPSAwOworCisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCWhmYTM4NHhfdAkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlVSU5UMTYJCQkJYXV4YnVmWzE1XTsKKwlEQkZFTlRFUjsKKworCVdMQU5fTE9HX05PVElDRSgicHJpc20yIGRyaXZlciBhbmQgaGFyZHdhcmUgc3RhdGU6XG4iKTsKKwlpZiAgKCAocmVzdWx0ID0gaGZhMzg0eF9jbWRfYXV4X2VuYWJsZShodywgMCkpICkgeworCQlXTEFOX0xPR19FUlJPUigiYXV4X2VuYWJsZSBmYWlsZWQsIHJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwkJZ290byBmYWlsZWQ7CisJfQorCWhmYTM4NHhfY29weV9mcm9tX2F1eChodywKKwkJMHgwMWUyLAorCQlIRkEzODR4X0FVWF9DVExfRVhURFMsCisJCWF1eGJ1ZiwKKwkJc2l6ZW9mKGF1eGJ1ZikpOworCWhmYTM4NHhfY21kX2F1eF9kaXNhYmxlKGh3KTsKKwlXTEFOX0xPR19OT1RJQ0UoIiAgY21hYzogRnJlZUJsb2Nrcz0lZFxuIiwgYXV4YnVmWzVdKTsKKwlXTEFOX0xPR19OT1RJQ0UoIiAgY21hYzogSW50RW49MHglMDJ4IEV2U3RhdD0weCUwMnhcbiIsCisJCWhmYTM4NHhfZ2V0cmVnKGh3LCBIRkEzODR4X0lOVEVOKSwKKwkJaGZhMzg0eF9nZXRyZWcoaHcsIEhGQTM4NHhfRVZTVEFUKSk7CisKKwkjaWZkZWYgVVNFX0ZJRF9TVEFDSworCVdMQU5fTE9HX05PVElDRSgiICBkcnZyOiB0eGZpZF90b3A9JWQgc3RhY2tzaXplPSVkXG4iLAorCQlody0+dHhmaWRfdG9wLEhGQTM4NHhfRFJWUl9GSURTVEFDS0xFTl9NQVgpOworCSNlbHNlCisJV0xBTl9MT0dfTk9USUNFKCIgIGRydnI6IHR4ZmlkX2hlYWQ9JWQgdHhmaWRfdGFpbD0lZCB0eGZpZF9OPSVkXG4iLAorCQlody0+dHhmaWRfaGVhZCwgaHctPnR4ZmlkX3RhaWwsIGh3LT50eGZpZF9OKTsKKwkjZW5kaWYKKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworI2Vsc2UgLyogKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKSAqLworCisJREJGRU5URVI7CisKKwltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJZ290byBmYWlsZWQ7CisKKyNlbmRpZiAvKiAoV0xBTl9IT1NUSUYgIT0gV0xBTl9VU0IpICovCisKK2ZhaWxlZDoKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2NoYW5uZWxfaW5mbworKgorKiBJc3N1ZXMgYSBDaGFubmVsSW5mb1JlcXVlc3QuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCW1zZ3AJCXB0ciB0byBtc2cgYnVmZmVyCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcyBhbmQgZG9uZQorKgk8MAlzdWNjZXNzLCBidXQgd2UncmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGZpbmlzaC4KKyoJPjAJYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZCAgKHVzdWFsbHkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2NoYW5uZWxfaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApCit7CisJcDgwMjExbXNnX3AycmVxX2NoYW5uZWxfaW5mb190CSptc2c9bXNncDsKKwloZmEzODR4X3QJCQkqaHcgPSB3bGFuZGV2LT5wcml2OworCWludAkJCQlyZXN1bHQsIGksIG49MDsKKwlVSU5UMTYJCQkJY2hhbm5lbF9tYXNrPTA7CisJaGZhMzg0eF9DaGFubmVsSW5mb1JlcXVlc3RfZGF0YV90CWNoaW5mb3JlcTsKKwkvLyB1bnNpZ25lZCBsb25nIAkJCW5vdzsKKworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIE5vdCBzdXBwb3J0ZWQgaW4gU1RBIGYvdyAqLworCQlQODAyMTFfU0VUX0lOVChtc2ctPnJlc3VsdGNvZGUsIFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkKTsKKwkJZ290byBkb25lOworCX0KKworCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworI2RlZmluZSBDSElORk9fVElNRU9VVCAyCisKKwlQODAyMTFfU0VUX0lOVChtc2ctPnJlc3VsdGNvZGUsIFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzKTsKKworCS8qIHNldHRpbmcgZGVmYXVsdCB2YWx1ZSBmb3IgY2hhbm5lbGxpc3QgPSBhbGwgY2hhbm5lbHMgKi8KKwlpZiAoIW1zZy0+Y2hhbm5lbGxpc3QuZGF0YSkgeworCQlQODAyMTFfU0VUX0lOVChtc2ctPmNoYW5uZWxsaXN0LCAweDAwMDA3RkZFKTsKKwl9CisJLyogc2V0dGluZyBkZWZhdWx0IHZhbHVlIGZvciBjaGFubmVsZHdlbGx0aW1lID0gMTAwIG1zICovCisJaWYgKCFtc2ctPmNoYW5uZWxkd2VsbHRpbWUuZGF0YSkgeworCQlQODAyMTFfU0VUX0lOVChtc2ctPmNoYW5uZWxkd2VsbHRpbWUsIDEwMCk7CisJfQorCWNoYW5uZWxfbWFzayA9IChVSU5UMTYpIChtc2ctPmNoYW5uZWxsaXN0LmRhdGEgPj4gMSk7CisJZm9yIChpPTAsIG49MDsgaSA8IDE0OyBpKyspIHsKKwkJaWYgKGNoYW5uZWxfbWFzayAmICgxPDxpKSkgeworCQkJbisrOworCQl9CisJfQorCVA4MDIxMV9TRVRfSU5UKG1zZy0+bnVtY2hpbmZvLCBuKTsKKwljaGluZm9yZXEuY2hhbm5lbExpc3QgPSBob3N0MmhmYTM4NHhfMTYoY2hhbm5lbF9tYXNrKTsKKwljaGluZm9yZXEuY2hhbm5lbER3ZWxsVGltZSA9IGhvc3QyaGZhMzg0eF8xNihtc2ctPmNoYW5uZWxkd2VsbHRpbWUuZGF0YSk7CisKKwlhdG9taWNfc2V0KCZody0+Y2hhbm5lbF9pbmZvLmRvbmUsIDEpOworCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyggaHcsIEhGQTM4NHhfUklEX0NIQU5ORUxJTkZPUkVRVUVTVCwKKwkJCQkJICZjaGluZm9yZXEsIEhGQTM4NHhfUklEX0NIQU5ORUxJTkZPUkVRVUVTVF9MRU4pOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigic2V0Y29uZmlnKENIQU5ORUxJTkZPUkVRVUVTVCkgZmFpbGVkLiByZXN1bHQ9JWRcbiIsCisJCQkJcmVzdWx0KTsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfbm90X3N1cHBvcnRlZDsKKwkJZ290byBkb25lOworCX0KKwkvKgorCW5vdyA9IGppZmZpZXM7CisJd2hpbGUgKGF0b21pY19yZWFkKCZody0+Y2hhbm5lbF9pbmZvLmRvbmUpICE9IDEpIHsKKwkJaWYgKChqaWZmaWVzIC0gbm93KSA+IENISU5GT19USU1FT1VUKkhaKSB7CisJCQlXTEFOX0xPR19OT1RJQ0UoIkNoYW5uZWxJbmZvIHJlc3VsdHMgbm90IHJlY2VpdmVkIGluICVkIHNlY29uZHMsIGFib3J0aW5nLlxuIiwKKwkJCQkJQ0hJTkZPX1RJTUVPVVQpOworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfdGltZW91dDsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCQljdXJyZW50LT5zdGF0ZSA9IFRBU0tfSU5URVJSVVBUSUJMRTsKKwkJc2NoZWR1bGVfdGltZW91dChIWi80KTsKKwkJY3VycmVudC0+c3RhdGUgPSBUQVNLX1JVTk5JTkc7CisJfQorCSovCisKK2RvbmU6CisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9jaGFubmVsX2luZm9fcmVzdWx0cworKgorKiBSZXR1cm5zIHJlcXVpcmVkIENoYW5uZWxJbmZvIHJlc3VsdC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfY2hhbm5lbF9pbmZvX3Jlc3VsdHMod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKQoreworCWhmYTM4NHhfdAkJCSpodyA9IHdsYW5kZXYtPnByaXY7CisKKwlwODAyMTFtc2dfcDJyZXFfY2hhbm5lbF9pbmZvX3Jlc3VsdHNfdAkqbXNnPW1zZ3A7CisJaW50CQkJCXJlc3VsdD0wOworCWludAkJY2hhbm5lbDsKKworCURCRkVOVEVSOworCisJaWYgKCFody0+YXApIHsKKworCQkvKioqIFNUQVRJT04gKioqLworCisJCS8qIE5vdCBzdXBwb3J0ZWQgaW4gU1RBIGYvdyAqLworCQlQODAyMTFfU0VUX0lOVChtc2ctPnJlc3VsdGNvZGUsIFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkKTsKKwkJZ290byBkb25lOworCX0KKworCS8qKiogQUNDRVNTIFBPSU5UICoqKi8KKworCXN3aXRjaCAoYXRvbWljX3JlYWQoJmh3LT5jaGFubmVsX2luZm8uZG9uZSkpIHsKKwljYXNlIDA6IG1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX25vX3ZhbHVlOworCQlnb3RvIGRvbmU7CisJY2FzZSAxOiBtc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19pbmNvbXBsZXRlX2l0ZW1kYXRhOworCQlnb3RvIGRvbmU7CisJfQorCisJUDgwMjExX1NFVF9JTlQobXNnLT5yZXN1bHRjb2RlLCBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2Vzcyk7CisJY2hhbm5lbD1tc2ctPmNoYW5uZWwuZGF0YS0xOworCisJaWYgKGNoYW5uZWwgPCAwIHx8ICEgKGh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5zY2FuY2hhbm5lbHMgJiAxPDxjaGFubmVsKSApIHsKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW52YWxpZF9wYXJhbWV0ZXJzOworCQlnb3RvIGRvbmU7CisJfQorCVdMQU5fTE9HX0RFQlVHKDIsICJjaGluZm9fcmVzdWx0czogY2hhbm5lbCAlZCwgYXZnL3BlYWsgbGV2ZWw9JWQvJWQgZEIsIGFjdGl2ZT0lZFxuIiwKKwkJCWNoYW5uZWwrMSwKKwkJCWh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5yZXN1bHRbY2hhbm5lbF0uYW5sLAorCQkJaHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtjaGFubmVsXS5wbmwsCisJCQlody0+Y2hhbm5lbF9pbmZvLnJlc3VsdHMucmVzdWx0W2NoYW5uZWxdLmFjdGl2ZQorCQkpOworCVA4MDIxMV9TRVRfSU5UKG1zZy0+YXZnbm9pc2VsZXZlbCwgaHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtjaGFubmVsXS5hbmwpOworCVA4MDIxMV9TRVRfSU5UKG1zZy0+cGVha25vaXNlbGV2ZWwsIGh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5yZXN1bHRbY2hhbm5lbF0ucG5sKTsKKwlQODAyMTFfU0VUX0lOVChtc2ctPmJzc2FjdGl2ZSwgaHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtjaGFubmVsXS5hY3RpdmUgJgorCQlIRkEzODR4X0NISU5GT1JFU1VMVF9CU1NBQ1RJVkUKKyAgICAgICAgICAgICAgICA/IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZQorICAgICAgICAgICAgICAgIDogUDgwMjExRU5VTV90cnV0aF9mYWxzZSkgOworCVA4MDIxMV9TRVRfSU5UKG1zZy0+cGNmYWN0aXZlLCBody0+Y2hhbm5lbF9pbmZvLnJlc3VsdHMucmVzdWx0W2NoYW5uZWxdLmFjdGl2ZSAmCisJCUhGQTM4NHhfQ0hJTkZPUkVTVUxUX1BDRkFDVElWRQorICAgICAgICAgICAgICAgID8gUDgwMjExRU5VTV90cnV0aF90cnVlCisgICAgICAgICAgICAgICAgOiBQODAyMTFFTlVNX3RydXRoX2ZhbHNlKSA7CisKK2RvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2F1dG9qb2luCisqCisqIEFzc29jaWF0ZSB3aXRoIGFuIEVTUy4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJbXNncAkJcHRyIHRvIG1zZyBidWZmZXIKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzIGFuZCBkb25lCisqCTwwCXN1Y2Nlc3MsIGJ1dCB3ZSdyZSB3YWl0aW5nIGZvciBzb21ldGhpbmcgdG8gZmluaXNoLgorKgk+MAlhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZS4KKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkICAodXN1YWxseSkKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCBwcmlzbTJtZ210X2F1dG9qb2luKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwloZmEzODR4X3QJCQkqaHcgPSB3bGFuZGV2LT5wcml2OworCWludCAJCQlyZXN1bHQgPSAwOworCVVJTlQxNgkJCXJlZzsKKwlVSU5UMTYJCQlwb3J0X3R5cGU7CisJcDgwMjExbXNnX2xueHJlcV9hdXRvam9pbl90CSptc2cgPSBtc2dwOworCXA4MDIxMXBzdHJkX3QJCSpwc3RyOworCVVJTlQ4CQkJYnl0ZWJ1ZlsyNTZdOworCWhmYTM4NHhfYnl0ZXN0cl90CSpwMmJ5dGVzdHIgPSAoaGZhMzg0eF9ieXRlc3RyX3QqKWJ5dGVidWY7CisJREJGRU5URVI7CisKKwl3bGFuZGV2LT5tYWNtb2RlID0gV0xBTl9NQUNNT0RFX05PTkU7CisKKwkvKiBTZXQgdGhlIFNTSUQgKi8KKwltZW1jcHkoJndsYW5kZXYtPnNzaWQsICZtc2ctPnNzaWQuZGF0YSwgc2l6ZW9mKG1zZy0+c3NpZC5kYXRhKSk7CisKKwlpZiAoaHctPmFwKSB7CisKKwkJLyoqKiBBQ0NFU1MgUE9JTlQgKioqLworCisJCS8qIE5ldmVyIHN1cHBvcnRlZCBvbiBBUCAqLworCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogRGlzYWJsZSB0aGUgUG9ydCAqLworCWhmYTM4NHhfZHJ2cl9kaXNhYmxlKGh3LCAwKTsKKworCS8qKiogU1RBVElPTiAqKiovCisJLyogU2V0IHRoZSBUeFJhdGVzICovCisJaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBIRkEzODR4X1JJRF9UWFJBVEVDTlRMLCAweDAwMGYpOworCisJLyogU2V0IHRoZSBhdXRoIHR5cGUgKi8KKwlpZiAoIG1zZy0+YXV0aHR5cGUuZGF0YSA9PSBQODAyMTFFTlVNX2F1dGhhbGdfc2hhcmVka2V5ICkgeworCQlyZWcgPSBIRkEzODR4X0NORkFVVEhFTlRJQ0FUSU9OX1NIQVJFREtFWTsKKwl9IGVsc2UgeworCQlyZWcgPSBIRkEzODR4X0NORkFVVEhFTlRJQ0FUSU9OX09QRU5TWVNURU07CisJfQorCWhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GQVVUSEVOVElDQVRJT04sIHJlZyk7CisKKwkvKiBTZXQgdGhlIHNzaWQgKi8KKwltZW1zZXQoYnl0ZWJ1ZiwgMCwgMjU2KTsKKwlwc3RyID0gKHA4MDIxMXBzdHJkX3QqKSYobXNnLT5zc2lkLmRhdGEpOworCXByaXNtMm1nbXRfcHN0cjJieXRlc3RyKHAyYnl0ZXN0ciwgcHN0cik7CisgICAgICAgIHJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoCisJCQlodywgSEZBMzg0eF9SSURfQ05GREVTSVJFRFNTSUQsCisJCQlieXRlYnVmLCBIRkEzODR4X1JJRF9DTkZERVNJUkVEU1NJRF9MRU4pOworI2lmIDAKKwkvKiB3ZSBjYW4gdXNlIHRoZSBuZXctZmFuZ2xlZCBhdXRvLXVua25vd24gbW9kZSBpZiB0aGUgZmlybXdhcmUKKwkgICBpcyAxLjMuMyBvciBuZXdlciAqLworCWlmIChIRkEzODR4X0ZJUk1BUkVfVkVSU0lPTihody0+aWRlbnRfc3RhX2Z3Lm1ham9yLAorCQkJCSAgICBody0+aWRlbnRfc3RhX2Z3Lm1pbm9yLAorCQkJCSAgICBody0+aWRlbnRfc3RhX2Z3LnZhcmlhbnQpID49CisJICAgIEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTigxLDMsMykpIHsKKwkJLyogU2V0IHVwIHRoZSBJQlNTIG9wdGlvbnMgKi8KKwkJcmVnID0gIEhGQTM4NHhfQ1JFQVRFSUJTU19KT0lORVNTX0pPSU5DUkVBVEVJQlNTOworCQloZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NSRUFURUlCU1MsIHJlZyk7CisKKwkJLyogU2V0IHRoZSBQb3J0VHlwZSAqLworCQlwb3J0X3R5cGUgPSBIRkEzODR4X1BPUlRUWVBFX0lCU1M7CisJfSBlbHNlIHsKKwkJcG9ydF90eXBlID0gSEZBMzg0eF9QT1JUVFlQRV9CU1M7CisJfQorI2Vsc2UKKwlwb3J0X3R5cGUgPSBIRkEzODR4X1BPUlRUWVBFX0JTUzsKKyNlbmRpZgorCS8qIFNldCB0aGUgUG9ydFR5cGUgKi8KKwloZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORlBPUlRUWVBFLCBwb3J0X3R5cGUpOworCisJLyogRW5hYmxlIHRoZSBQb3J0ICovCisJaGZhMzg0eF9kcnZyX2VuYWJsZShodywgMCk7CisKKwkvKiBTZXQgdGhlIHJlc3VsdGNvZGUgKi8KKwltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisKK2RvbmU6CisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3dsYW5zbmlmZgorKgorKiBTdGFydCBvciBzdG9wIHNuaWZmaW5nLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfd2xhbnNuaWZmKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwlpbnQgCQkJcmVzdWx0ID0gMDsKKwlwODAyMTFtc2dfbG54cmVxX3dsYW5zbmlmZl90CSptc2cgPSBtc2dwOworCisJaGZhMzg0eF90CQkJKmh3ID0gd2xhbmRldi0+cHJpdjsKKwlVSU5UMTYJCQl3b3JkOworCisJREJGRU5URVI7CisKKwltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCXN3aXRjaCAobXNnLT5lbmFibGUuZGF0YSkKKwl7CisJY2FzZSBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOgorCQkvKiBDb25maXJtIHRoYXQgd2UncmUgaW4gbW9uaXRvciBtb2RlICovCisJCWlmICggd2xhbmRldi0+bmV0ZGV2LT50eXBlID09IEFSUEhSRF9FVEhFUiApIHsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfcGFyYW1ldGVyczsKKwkJCXJlc3VsdCA9IDA7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwkJLyogRGlzYWJsZSBtb25pdG9yIG1vZGUgKi8KKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfbW9uaXRvcihodywgSEZBMzg0eF9NT05JVE9SX0RJU0FCTEUpOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkJImZhaWxlZCB0byBkaXNhYmxlIG1vbml0b3IgbW9kZSwgcmVzdWx0PSVkXG4iLAorCQkJCXJlc3VsdCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCQkvKiBEaXNhYmxlIHBvcnQgMCAqLworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZGlzYWJsZShodywgMCk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSJmYWlsZWQgdG8gZGlzYWJsZSBwb3J0IDAgYWZ0ZXIgc25pZmZpbmcsIHJlc3VsdD0lZFxuIiwKKwkJCXJlc3VsdCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCQkvKiBDbGVhciB0aGUgZHJpdmVyIHN0YXRlICovCisJCXdsYW5kZXYtPm5ldGRldi0+dHlwZSA9IEFSUEhSRF9FVEhFUjsKKworCQkvKiBSZXN0b3JlIHRoZSB3ZXBmbGFncyAqLworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsCisJCQkJSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MsCisJCQkJaHctPnByZXNuaWZmX3dlcGZsYWdzKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLAorCQkJImZhaWxlZCB0byByZXN0b3JlIHdlcGZsYWdzPTB4JTA0eCwgcmVzdWx0PSVkXG4iLAorCQkJaHctPnByZXNuaWZmX3dlcGZsYWdzLAorCQkJcmVzdWx0KTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJLyogU2V0IHRoZSBwb3J0IHRvIGl0cyBwcmlvciB0eXBlIGFuZCBlbmFibGUgKGlmIG5lY2Vzc2FyeSkgKi8KKwkJaWYgKGh3LT5wcmVzbmlmZl9wb3J0X3R5cGUgIT0gMCApIHsKKwkJCXdvcmQgPSBody0+cHJlc25pZmZfcG9ydF90eXBlOworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LAorCQkJCUhGQTM4NHhfUklEX0NORlBPUlRUWVBFLCB3b3JkKTsKKwkJCWlmICggcmVzdWx0ICkgeworCQkJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkJImZhaWxlZCB0byByZXN0b3JlIHBvcnR0eXBlLCByZXN1bHQ9JWRcbiIsCisJCQkJcmVzdWx0KTsKKwkJCQlnb3RvIGZhaWxlZDsKKwkJCX0KKworCQkJLyogRW5hYmxlIHRoZSBwb3J0ICovCisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZW5hYmxlKGh3LCAwKTsKKwkJCWlmICggcmVzdWx0ICkgeworCQkJCVdMQU5fTE9HX0RFQlVHKDEsICJmYWlsZWQgdG8gZW5hYmxlIHBvcnQgdG8gcHJlc25pZmYgc2V0dGluZywgcmVzdWx0PSVkXG4iLCByZXN1bHQpOworCQkJCWdvdG8gZmFpbGVkOworCQkJfQorCQl9IGVsc2UgeworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2Rpc2FibGUoaHcsIDApOworCisJCX0KKworCQlXTEFOX0xPR19JTkZPKCJtb25pdG9yIG1vZGUgZGlzYWJsZWRcbiIpOworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCQlyZXN1bHQgPSAwOworCQlnb3RvIGV4aXQ7CisJCWJyZWFrOworCWNhc2UgUDgwMjExRU5VTV90cnV0aF90cnVlOgorCQkvKiBEaXNhYmxlIHRoZSBwb3J0IChpZiBlbmFibGVkKSwgb25seSBjaGVjayBQb3J0IDAgKi8KKwkJaWYgKCBody0+cG9ydF9lbmFibGVkWzBdKSB7CisJCQlpZiAod2xhbmRldi0+bmV0ZGV2LT50eXBlID09IEFSUEhSRF9FVEhFUikgeworCQkJCS8qIFNhdmUgbWFjcG9ydCAwIHN0YXRlICovCisJCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LAorCQkJCQkJCQkgIEhGQTM4NHhfUklEX0NORlBPUlRUWVBFLAorCQkJCQkJCQkgICYoaHctPnByZXNuaWZmX3BvcnRfdHlwZSkpOworCQkJCWlmICggcmVzdWx0ICkgeworCQkJCQlXTEFOX0xPR19ERUJVRygxLCJmYWlsZWQgdG8gcmVhZCBwb3J0dHlwZSwgcmVzdWx0PSVkXG4iLCByZXN1bHQpOworCQkJCQlnb3RvIGZhaWxlZDsKKwkJCQl9CisJCQkJLyogU2F2ZSB0aGUgd2VwZmxhZ3Mgc3RhdGUgKi8KKwkJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnMTYoaHcsCisJCQkJCQkJCSAgSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MsCisJCQkJCQkJCSAgJihody0+cHJlc25pZmZfd2VwZmxhZ3MpKTsKKwkJCQlpZiAoIHJlc3VsdCApIHsKKwkJCQkJV0xBTl9MT0dfREVCVUcoMSwiZmFpbGVkIHRvIHJlYWQgd2VwZmxhZ3MsIHJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwkJCQkJZ290byBmYWlsZWQ7CisJCQkJfQorCQkJCWhmYTM4NHhfZHJ2cl9zdG9wKGh3KTsKKwkJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc3RhcnQoaHcpOworCQkJCWlmICggcmVzdWx0ICkgeworCQkJCQlXTEFOX0xPR19ERUJVRygxLAorCQkJCQkJICAgICAgICJmYWlsZWQgdG8gcmVzdGFydCB0aGUgY2FyZCBmb3Igc25pZmZpbmcsIHJlc3VsdD0lZFxuIiwKKwkJCQkJCSAgICAgICByZXN1bHQpOworCQkJCQlnb3RvIGZhaWxlZDsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCS8qIERpc2FibGUgdGhlIHBvcnQgKi8KKwkJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZGlzYWJsZShodywgMCk7CisJCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkJCQkgICAgICAgImZhaWxlZCB0byBlbmFibGUgcG9ydCBmb3Igc25pZmZpbmcsIHJlc3VsdD0lZFxuIiwKKwkJCQkJCSAgICAgICByZXN1bHQpOworCQkJCQlnb3RvIGZhaWxlZDsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSB7CisJCQlody0+cHJlc25pZmZfcG9ydF90eXBlID0gMDsKKwkJfQorCisJCS8qIFNldCB0aGUgY2hhbm5lbCB3ZSB3aXNoIHRvIHNuaWZmICAqLworCQl3b3JkID0gbXNnLT5jaGFubmVsLmRhdGE7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywKKwkJCQkJCSAgSEZBMzg0eF9SSURfQ05GT1dOQ0hBTk5FTCwgd29yZCk7CisJCWh3LT5zbmlmZl9jaGFubmVsPXdvcmQ7CisKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLAorCQkJCSAgICAgICAiZmFpbGVkIHRvIHNldCBjaGFubmVsICVkLCByZXN1bHQ9JWRcbiIsCisJCQkJCSAgICAgICB3b3JkLAorCQkJCSAgICAgICByZXN1bHQpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQkvKiBOb3cgaWYgd2UncmUgYWxyZWFkeSBzbmlmZmluZywgd2UgY2FuIHNraXAgdGhlIHJlc3QgKi8KKwkJaWYgKHdsYW5kZXYtPm5ldGRldi0+dHlwZSAhPSBBUlBIUkRfRVRIRVIpIHsKKwkJCS8qIFNldCB0aGUgcG9ydCB0eXBlIHRvIHBJYnNzICovCisJCQl3b3JkID0gSEZBMzg0eF9QT1JUVFlQRV9QU1VFRE9JQlNTOworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LAorCQkJCQkJCSAgSEZBMzg0eF9SSURfQ05GUE9SVFRZUEUsIHdvcmQpOworCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCQkJICAgICAgICJmYWlsZWQgdG8gc2V0IHBvcnR0eXBlICVkLCByZXN1bHQ9JWRcbiIsCisJCQkJCSAgICAgICB3b3JkLAorCQkJCQkgICAgICAgcmVzdWx0KTsKKwkJCQlnb3RvIGZhaWxlZDsKKwkJCX0KKwkJCWlmICgobXNnLT5rZWVwd2VwZmxhZ3Muc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vaykgJiYgKG1zZy0+a2VlcHdlcGZsYWdzLmRhdGEgIT0gUDgwMjExRU5VTV90cnV0aF90cnVlKSkgeworCQkJCS8qIFNldCB0aGUgd2VwZmxhZ3MgZm9yIG5vIGRlY3J5cHRpb24gKi8KKwkJCQl3b3JkID0gSEZBMzg0eF9XRVBGTEFHU19ESVNBQkxFX1RYQ1JZUFQgfAorCQkJCQlIRkEzODR4X1dFUEZMQUdTX0RJU0FCTEVfUlhDUllQVDsKKwkJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORldFUEZMQUdTLCB3b3JkKTsKKwkJCX0KKworCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCQkJICAgICAgICJmYWlsZWQgdG8gc2V0IHdlcGZsYWdzPTB4JTA0eCwgcmVzdWx0PSVkXG4iLAorCQkJCQkgICAgICAgd29yZCwKKwkJCQkJICAgICAgIHJlc3VsdCk7CisJCQkJZ290byBmYWlsZWQ7CisJCQl9CisJCX0KKworCQkvKiBEbyB3ZSB3YW50IHRvIHN0cmlwIHRoZSBGQ1MgaW4gbW9uaXRvciBtb2RlPyAqLworCQlpZiAoKG1zZy0+c3RyaXBmY3Muc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vaykgJiYgKG1zZy0+c3RyaXBmY3MuZGF0YSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpKSB7CisJCQlody0+c25pZmZfZmNzID0gMDsKKwkJfSBlbHNlIHsKKwkJCWh3LT5zbmlmZl9mY3MgPSAxOworCQl9CisKKwkJLyogRG8gd2Ugd2FudCB0byB0cnVuY2F0ZSB0aGUgcGFja2V0cz8gKi8KKwkJaWYgKG1zZy0+cGFja2V0X3RydW5jLnN0YXR1cyA9PSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2spIHsKKwkJCWh3LT5zbmlmZl90cnVuY2F0ZSA9IG1zZy0+cGFja2V0X3RydW5jLmRhdGE7CisJCX0gZWxzZSB7CisJCQlody0+c25pZmZfdHJ1bmNhdGUgPSAwOworCQl9CisKKwkJLyogRW5hYmxlIHRoZSBwb3J0ICovCisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9lbmFibGUoaHcsIDApOworCQlpZiAoIHJlc3VsdCApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkiZmFpbGVkIHRvIGVuYWJsZSBwb3J0IGZvciBzbmlmZmluZywgcmVzdWx0PSVkXG4iLAorCQkJcmVzdWx0KTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisJCS8qIEVuYWJsZSBtb25pdG9yIG1vZGUgKi8KKwkJcmVzdWx0ID0gaGZhMzg0eF9jbWRfbW9uaXRvcihodywgSEZBMzg0eF9NT05JVE9SX0VOQUJMRSk7CisJCWlmICggcmVzdWx0ICkgeworCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSJmYWlsZWQgdG8gZW5hYmxlIG1vbml0b3IgbW9kZSwgcmVzdWx0PSVkXG4iLAorCQkJcmVzdWx0KTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJaWYgKHdsYW5kZXYtPm5ldGRldi0+dHlwZSA9PSBBUlBIUkRfRVRIRVIpIHsKKwkJCVdMQU5fTE9HX0lORk8oIm1vbml0b3IgbW9kZSBlbmFibGVkXG4iKTsKKwkJfQorCisJCS8qIFNldCB0aGUgZHJpdmVyIHN0YXRlICovCisJCS8qIERvIHdlIHdhbnQgdGhlIHByaXNtMiBoZWFkZXI/ICovCisJCWlmICgobXNnLT5wcmlzbWhlYWRlci5zdGF0dXMgPT0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rKSAmJiAobXNnLT5wcmlzbWhlYWRlci5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSkpIHsKKwkJCWh3LT5zbmlmZmhkciA9IDA7CisJCQl3bGFuZGV2LT5uZXRkZXYtPnR5cGUgPSBBUlBIUkRfSUVFRTgwMjExX1BSSVNNOworCQl9IGVsc2UgaWYgKChtc2ctPndsYW5oZWFkZXIuc3RhdHVzID09IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vaykgJiYgKG1zZy0+d2xhbmhlYWRlci5kYXRhID09IFA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSkpIHsKKwkJCWh3LT5zbmlmZmhkciA9IDE7CisJCQl3bGFuZGV2LT5uZXRkZXYtPnR5cGUgPSBBUlBIUkRfSUVFRTgwMjExX1BSSVNNOworCQl9IGVsc2UgeworCQkJd2xhbmRldi0+bmV0ZGV2LT50eXBlID0gQVJQSFJEX0lFRUU4MDIxMTsKKwkJfQorCisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCXJlc3VsdCA9IDA7CisJCWdvdG8gZXhpdDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW52YWxpZF9wYXJhbWV0ZXJzOworCQlyZXN1bHQgPSAwOworCQlnb3RvIGV4aXQ7CisJCWJyZWFrOworCX0KKworZmFpbGVkOgorCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3JlZnVzZWQ7CisJcmVzdWx0ID0gMDsKK2V4aXQ6CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJtZ210LmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJtZ210LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMzZmQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMm1nbXQuaApAQCAtMCwwICsxLDE4MiBAQAorLyogcHJpc20ybWdtdC5oCisqCisqIERlY2xhcmVzIHRoZSBtZ210IGNvbW1hbmQgaGFuZGxlciBmdW5jdGlvbnMKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb25zdGFudHMgYW5kIGRhdGEgc3RydWN0dXJlcyBmb3IgaW50ZXJhY3Rpb24KKyogd2l0aCB0aGUgaGZhMzg0eCBXaXJlbGVzcyBMQU4gKFdMQU4pIE1lZGlhIEFjY2VzcyBDb250b2xsZXIgKE1BQykuCisqIFRoZSBoZmEzODR4IGlzIGEgcG9ydGlvbiBvZiB0aGUgSGFycmlzIFBSSVNNKHRtKSBXTEFOIGNoaXBzZXQuCisqCisqIFtJbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2Ugbm90ZXNdCisqCisqIFtSZWZlcmVuY2VzXQorKiAgIENXMTAgUHJvZ3JhbW1lcidzIE1hbnVhbCB2MS41CisqICAgSUVFRSA4MDIuMTEgRDEwLjAKKyoKKyogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1BSSVNNMk1HTVRfSAorI2RlZmluZSBfUFJJU00yTUdNVF9ICisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qLS0tLS0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLS0tLSBNYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0tLS0gVHlwZXMgYW5kIHRoZWlyIHJlbGF0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qLS0tLS0tIFN0YXRpYyB2YXJpYWJsZSBleHRlcm5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZiAoV0xBTl9IT1NUSUYgIT0gV0xBTl9VU0IpCitleHRlcm4gaW50ICAgICAgcHJpc20yX2JhcF90aW1lb3V0OworZXh0ZXJuIGludAlwcmlzbTJfaXJxX2V2cmVhZF9tYXg7CisjZW5kaWYKK2V4dGVybiBpbnQJcHJpc20yX2RlYnVnOworZXh0ZXJuIGludCAgICAgIHByaXNtMl9yZXNldF9ob2xkdGltZTsKK2V4dGVybiBpbnQgICAgICBwcmlzbTJfcmVzZXRfc2V0dGxldGltZTsKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLSBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworVUlOVDMyCitwcmlzbTJzdGFfaWZzdGF0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQzMiBpZnN0YXRlKTsKKwordm9pZAorcHJpc20yc3RhX2V2X2R0aW0od2xhbmRldmljZV90ICp3bGFuZGV2KTsKK3ZvaWQKK3ByaXNtMnN0YV9ldl9pbmZkcm9wKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7Cit2b2lkCitwcmlzbTJzdGFfZXZfaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKTsKK3ZvaWQKK3ByaXNtMnN0YV9ldl90eGV4Yyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIFVJTlQxNiBzdGF0dXMpOwordm9pZAorcHJpc20yc3RhX2V2X3R4KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgVUlOVDE2IHN0YXR1cyk7Cit2b2lkCitwcmlzbTJzdGFfZXZfcngod2xhbmRldmljZV90ICp3bGFuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK3ZvaWQKK3ByaXNtMnN0YV9ldl9hbGxvYyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworCisKK2ludCBwcmlzbTJtZ210X21pYnNldF9taWJnZXQod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X3Bvd2VybWdtdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfc2Nhbih3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfc2Nhbl9yZXN1bHRzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9qb2luKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9wMl9qb2luKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9hdXRoZW50aWNhdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2RlYXV0aGVudGljYXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9hc3NvY2lhdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X3JlYXNzb2NpYXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9kaXNhc3NvY2lhdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X3Jlc2V0KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9zdGFydCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfd2xhbnNuaWZmKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9yZWFkcGRhKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9yZWFkY2lzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9hdXhwb3J0X3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9hdXhwb3J0X3JlYWQod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2F1eHBvcnRfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2xvd19sZXZlbCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfdGVzdF9jb21tYW5kKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9tbWlfcmVhZCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfbW1pX3dyaXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9yYW1kbF9zdGF0ZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfcmFtZGxfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2ZsYXNoZGxfc3RhdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2ZsYXNoZGxfd3JpdGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X21tX3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9kdW1wX3N0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CitpbnQgcHJpc20ybWdtdF9lbmFibGUod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2NoYW5uZWxfaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHZvaWQgKm1zZ3ApOworaW50IHByaXNtMm1nbXRfY2hhbm5lbF9pbmZvX3Jlc3VsdHMod2xhbmRldmljZV90ICp3bGFuZGV2LCB2b2lkICptc2dwKTsKK2ludCBwcmlzbTJtZ210X2F1dG9qb2luKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGNvbnZlcnNpb24gZnVuY3Rpb25zIGdvaW5nIGJldHdlZW4gd2xhbiBtZXNzYWdlIGRhdGEgdHlwZXMgYW5kCisqIFByaXNtMiBkYXRhIHR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogYnl0ZSBhcmVhIGNvbnZlcnNpb24gZnVuY3Rpb25zKi8KK3ZvaWQgcHJpc20ybWdtdF9wc3RyMmJ5dGVhcmVhKFVJTlQ4ICpieXRlYXJlYSwgcDgwMjExcHN0cmRfdCAqcHN0cik7Cit2b2lkIHByaXNtMm1nbXRfYnl0ZWFyZWEycHN0cihVSU5UOCAqYnl0ZWFyZWEsIHA4MDIxMXBzdHJkX3QgKnBzdHIsIGludCBsZW4pOworCisvKiBieXRlIHN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyovCit2b2lkIHByaXNtMm1nbXRfcHN0cjJieXRlc3RyKGhmYTM4NHhfYnl0ZXN0cl90ICpieXRlc3RyLCBwODAyMTFwc3RyZF90ICpwc3RyKTsKK3ZvaWQgcHJpc20ybWdtdF9ieXRlc3RyMnBzdHIoaGZhMzg0eF9ieXRlc3RyX3QgKmJ5dGVzdHIsIHA4MDIxMXBzdHJkX3QgKnBzdHIpOworCisvKiBpbnRlZ2VyIGNvbnZlcnNpb24gZnVuY3Rpb25zICovCit2b2lkIHByaXNtMm1nbXRfcHJpc20yaW50MnA4MDIxMWludChVSU5UMTYgKnByaXNtMmludCwgVUlOVDMyICp3bGFuaW50KTsKK3ZvaWQgcHJpc20ybWdtdF9wODAyMTFpbnQycHJpc20yaW50KFVJTlQxNiAqcHJpc20yaW50LCBVSU5UMzIgKndsYW5pbnQpOworCisvKiBlbnVtZXJhdGVkIGludGVnZXIgY29udmVyc2lvbiBmdW5jdGlvbnMgKi8KK3ZvaWQgcHJpc20ybWdtdF9wcmlzbTJlbnVtMnA4MDIxMWVudW0oVUlOVDE2ICpwcmlzbTJlbnVtLCBVSU5UMzIgKndsYW5lbnVtLCBVSU5UMTYgcmlkKTsKK3ZvaWQgcHJpc20ybWdtdF9wODAyMTFlbnVtMnByaXNtMmVudW0oVUlOVDE2ICpwcmlzbTJlbnVtLCBVSU5UMzIgKndsYW5lbnVtLCBVSU5UMTYgcmlkKTsKKworLyogZnVuY3Rpb25zIHRvIGNvbnZlcnQgYSBiaXQgYXJlYSB0by9mcm9tIGFuIE9wZXJhdGlvbmFsIFJhdGUgU2V0ICovCit2b2lkIHByaXNtMm1nbXRfZ2V0X29wcmF0ZXNldChVSU5UMTYgKnJhdGUsIHA4MDIxMXBzdHJkX3QgKnBzdHIpOwordm9pZCBwcmlzbTJtZ210X3NldF9vcHJhdGVzZXQoVUlOVDE2ICpyYXRlLCBwODAyMTFwc3RyZF90ICpwc3RyKTsKKworLyogZnVuY3Rpb25zIHRvIGNvbnZlcnQgR3JvdXAgQWRkcmVzc2VzICovCit2b2lkIHByaXNtMm1nbXRfZ2V0X2dycGFkZHIoVUlOVDMyIGRpZCwKKwlwODAyMTFwc3RyZF90ICpwc3RyLCBoZmEzODR4X3QgKnByaXYgKTsKK2ludCBwcmlzbTJtZ210X3NldF9ncnBhZGRyKFVJTlQzMiBkaWQsCisJVUlOVDggKnByaXNtMmJ1ZiwgcDgwMjExcHN0cmRfdCAqcHN0ciwgaGZhMzg0eF90ICpwcml2ICk7CitpbnQgcHJpc20ybWdtdF9nZXRfZ3JwYWRkcl9pbmRleCggVUlOVDMyIGRpZCApOworCit2b2lkIHByaXNtMnN0YV9wcm9jZXNzaW5nX2RlZmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqZGF0YSk7CisKK3ZvaWQgcHJpc20yc3RhX2NvbW1zcXVhbF9kZWZlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmRhdGEpOwordm9pZCBwcmlzbTJzdGFfY29tbXNxdWFsX3RpbWVyKHVuc2lnbmVkIGxvbmcgZGF0YSk7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLSBJbmxpbmUgRnVuY3Rpb24gRGVmaW5pdGlvbnMgKGlmIHN1cHBvcnRlZCkgLS0tLS0tLS0tLS0tLS0qLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20ybWliLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJtaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjhmZDliCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20ybWliLmMKQEAgLTAsMCArMSwzNzk5IEBACisvKiBzcmMvcHJpc20yL2RyaXZlci9wcmlzbTJtaWIuYworKgorKiBNYW5hZ2VtZW50IHJlcXVlc3QgZm9yIG1pYnNldC9taWJnZXQKKyoKKyogQ29weXJpZ2h0IChDKSAxOTk5IEFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogbGludXgtd2xhbgorKgorKiAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljCisqICAgTGljZW5zZSBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKKyogICBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyogICB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KKyoKKyogICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKKyogICBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisqICAgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCisqICAgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyoKKyogICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorKiAgIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCIpLCBpbiB3aGljaAorKiAgIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRoZQorKiAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdGhlIHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlCisqICAgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UKKyogICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24KKyogICBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorKiAgIGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwuICBJZiB5b3UgZG8gbm90IGRlbGV0ZQorKiAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzCisqICAgZmlsZSB1bmRlciBlaXRoZXIgdGhlIE1QTCBvciB0aGUgR1BMLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBJbnF1aXJpZXMgcmVnYXJkaW5nIHRoZSBsaW51eC13bGFuIE9wZW4gU291cmNlIHByb2plY3QgY2FuIGJlCisqIG1hZGUgZGlyZWN0bHkgdG86CisqCisqIEFic29sdXRlVmFsdWUgU3lzdGVtcyBJbmMuCisqIGluZm9AbGludXgtd2xhbi5jb20KKyogaHR0cDovL3d3dy5saW51eC13bGFuLmNvbQorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBQb3J0aW9ucyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGZ1bmRlZCBieQorKiBJbnRlcnNpbCBDb3Jwb3JhdGlvbiBhcyBwYXJ0IG9mIFBSSVNNKFIpIGNoaXBzZXQgcHJvZHVjdCBkZXZlbG9wbWVudC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgaGFuZGxlIHRoZSBtaWJzZXQvbWliZ2V0IG1hbmFnZW1lbnQKKyogZnVuY3Rpb25zLgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFN5c3RlbSBJbmNsdWRlcyAqLworI2RlZmluZSBXTEFOX0RCVkFSCXByaXNtMl9kZWJ1ZworCisjaW5jbHVkZSAidmVyc2lvbi5oIgorCisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNpbmNsdWRlICJ3bGFuX2NvbXBhdC5oIgorCisvLyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ01DSUEpCisvLyNpbmNsdWRlIDxwY21jaWEvdmVyc2lvbi5oPgorLy8jaW5jbHVkZSA8cGNtY2lhL2NzX3R5cGVzLmg+CisvLyNpbmNsdWRlIDxwY21jaWEvY3MuaD4KKy8vI2luY2x1ZGUgPHBjbWNpYS9jaXN0cGwuaD4KKy8vI2luY2x1ZGUgPHBjbWNpYS9kcy5oPgorLy8jaW5jbHVkZSA8cGNtY2lhL2Npc3JlZy5oPgorLy8jZW5kaWYKKy8vCisvLyNpZiAoKFdMQU5fSE9TVElGID09IFdMQU5fUExYKSB8fCAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpKQorLy8jaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisvLyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKy8vZW5kaWYKKworLy8jaWYgKFdMQU5fSE9TVElGID09IFdMQU5fVVNCKQorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorLy8jZW5kaWYKKworI2luY2x1ZGUgIndsYW5fY29tcGF0LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBQcm9qZWN0IEluY2x1ZGVzICovCisKKyNpbmNsdWRlICJwODAyMTF0eXBlcy5oIgorI2luY2x1ZGUgInA4MDIxMWhkci5oIgorI2luY2x1ZGUgInA4MDIxMW1nbXQuaCIKKyNpbmNsdWRlICJwODAyMTFjb252LmgiCisjaW5jbHVkZSAicDgwMjExbXNnLmgiCisjaW5jbHVkZSAicDgwMjExbmV0ZGV2LmgiCisjaW5jbHVkZSAicDgwMjExbWV0YWRlZi5oIgorI2luY2x1ZGUgInA4MDIxMW1ldGFzdHJ1Y3QuaCIKKyNpbmNsdWRlICJoZmEzODR4LmgiCisjaW5jbHVkZSAicHJpc20ybWdtdC5oIgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgQ29uc3RhbnRzICovCisKKyNkZWZpbmUgTUlCX1RNUF9NQVhMRU4gICAgMjAwICAgIC8qIE1heCBsZW5ndGggb2YgUklEIHJlY29yZCAoaW4gYnl0ZXMpLiAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgVHlwZXMgKi8KKworI2RlZmluZSAgRl9BUCAgICAgICAgIDB4MSAgICAgICAgLyogTUlCIGlzIHN1cHBvcnRlZCBvbiBBY2Nlc3MgUG9pbnRzLiAqLworI2RlZmluZSAgRl9TVEEgICAgICAgIDB4MiAgICAgICAgLyogTUlCIGlzIHN1cHBvcnRlZCBvbiBzdGF0aW9ucy4gKi8KKyNkZWZpbmUgIEZfUkVBRCAgICAgICAweDQgICAgICAgIC8qIE1JQiBtYXkgYmUgcmVhZC4gKi8KKyNkZWZpbmUgIEZfV1JJVEUgICAgICAweDggICAgICAgIC8qIE1JQiBtYXkgYmUgd3JpdHRlbi4gKi8KKwordHlwZWRlZiBzdHJ1Y3QgbWlicmVjCit7CisgICAgVUlOVDMyICAgZGlkOworICAgIFVJTlQxNiAgIGZsYWc7CisgICAgVUlOVDE2ICAgcGFybTE7CisgICAgVUlOVDE2ICAgcGFybTI7CisgICAgVUlOVDE2ICAgcGFybTM7CisgICAgaW50ICAgICAgKCpmdW5jKShzdHJ1Y3QgbWlicmVjICAgICAgICAgICAgICAgICptaWIsCisgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAorICAgICAgICAgICAgICAgICAgICAgd2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKKyAgICAgICAgICAgICAgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorICAgICAgICAgICAgICAgICAgICAgcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7Cit9IG1pYnJlY190OworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgRnVuY3Rpb24gRGVjbGFyYXRpb25zICovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2J5dGVzdHIycHN0cigKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKTsKKworc3RhdGljIGludCBwcmlzbTJtaWJfYnl0ZWFyZWEycHN0cigKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKTsKKworc3RhdGljIGludCBwcmlzbTJtaWJfdWludDMyKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl91aW50MzJhcnJheSgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKTsKKworc3RhdGljIGludCBwcmlzbTJtaWJfdWludDMyb2Zmc2V0KAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl90cnV0aCgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKTsKKworc3RhdGljIGludCBwcmlzbTJtaWJfcHJlYW1ibGUoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2ZsYWcoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2FwcGNmaW5mb2ZsYWcoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3JlZ3VsYXRvcnlkb21haW5zKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl93ZXBkZWZhdWx0a2V5KAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9wb3dlcm1hbmFnZW1lbnQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3ByaXZhY3lpbnZva2VkKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9leGNsdWRldW5lbmNyeXB0ZWQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcHJpc20ybWliX29wZXJhdGlvbmFscmF0ZXNldCgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKTsKKworc3RhdGljIGludCBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9md2lkKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9hdXRoYWxnKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9hdXRoYWxnZW5hYmxlKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgaW50IHByaXNtMm1pYl9wcml2KAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpOworCitzdGF0aWMgdm9pZCBwcmlzbTJtaWJfcHJpdl9hdXRobGlzdCgKK2hmYTM4NHhfdCAgICAgICpodywKK3ByaXNtMnN0YV9hdXRobGlzdF90ICAqbGlzdCk7CisKK3N0YXRpYyB2b2lkIHByaXNtMm1pYl9wcml2X2FjY2Vzc21vZGUoCitoZmEzODR4X3QgICAgICAgICAqaHcsCitVSU5UMzIgICAgICAgICAgICBtb2RlKTsKKworc3RhdGljIHZvaWQgcHJpc20ybWliX3ByaXZfYWNjZXNzYWxsb3coCitoZmEzODR4X3QgICAgICAgICAqaHcsCitwODAyMTFtYWNhcnJheV90ICAqbWFjYXJyYXkpOworCitzdGF0aWMgdm9pZCBwcmlzbTJtaWJfcHJpdl9hY2Nlc3NkZW55KAoraGZhMzg0eF90ICAgICAgICAgKmh3LAorcDgwMjExbWFjYXJyYXlfdCAgKm1hY2FycmF5KTsKKworc3RhdGljIHZvaWQgcHJpc20ybWliX3ByaXZfZGVhdXRoZW50aWNhdGUoCitoZmEzODR4X3QgICAgICAgICAqaHcsCitVSU5UOCAgICAgICAgICAgICAqYWRkcik7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBTdGF0aWMgRGVmaW5pdGlvbnMgKi8KKworc3RhdGljIG1pYnJlY190IG1pYnRhYltdID0geworCisgICAgLyogZG90MTFzbXQgTUlCJ3MgKi8KKworICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExU3RhdGlvbklELAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GT1dOTUFDQUREUiwgSEZBMzg0eF9SSURfQ05GT1dOTUFDQUREUl9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMU1lZGl1bU9jY3VwYW5jeUxpbWl0LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFQUENGSU5GTywgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyb2Zmc2V0IH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFDRlBvbGxhYmxlLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NGUE9MTEFCTEUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQ0ZQUGVyaW9kLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFQUENGSU5GTywgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPX0xFTiwgMSwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyb2Zmc2V0IH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFDRlBNYXhEdXJhdGlvbiwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZBUFBDRklORk8sIEhGQTM4NHhfUklEX0NORkFQUENGSU5GT19MRU4sIDIsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMm9mZnNldCB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25SZXNwb25zZVRpbWVPdXQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFVVEhSU1BUSU1FT1VULCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMVByaXZhY3lPcHRpb25JbXBsZW1lbnRlZCwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfUFJJVkFDWU9QVElNUCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFQb3dlck1hbmFnZW1lbnRNb2RlLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZQTUVOQUJMRUQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3Bvd2VybWFuYWdlbWVudCB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExRGVzaXJlZFNTSUQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lELCBIRkEzODR4X1JJRF9DTkZERVNJUkVEU1NJRF9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVzdHIycHN0ciB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExRGVzaXJlZEJTU1R5cGUsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3ByaXYgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMU9wZXJhdGlvbmFsUmF0ZVNldCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhSQVRFQ05UTCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfb3BlcmF0aW9uYWxyYXRlc2V0IH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFPcGVyYXRpb25hbFJhdGVTZXQsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhSQVRFQ05UTDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX29wZXJhdGlvbmFscmF0ZXNldCB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExU3RhdGlvbkNvbmZpZ1RhYmxlX2RvdDExQmVhY29uUGVyaW9kLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFQQkNOSU5ULCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMURUSU1QZXJpb2QsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZPV05EVElNUEVSLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVN0YXRpb25Db25maWdUYWJsZV9kb3QxMUFzc29jaWF0aW9uUmVzcG9uc2VUaW1lT3V0LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9QUk9UT0NPTFJTUFRJTUUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobTEsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIDEsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2F1dGhhbGcgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG0yLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICAyLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9hdXRoYWxnIH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZV9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtMywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgMywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZyB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobTQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIDQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2F1dGhhbGcgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlX2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG01LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICA1LCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9hdXRoYWxnIH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNUYWJsZV9kb3QxMUF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtNiwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgNiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZyB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGUxLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGUyLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGUzLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGU0LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgNCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGU1LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgNSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExQXV0aGVudGljYXRpb25BbGdvcml0aG1zVGFibGVfZG90MTFBdXRoZW50aWNhdGlvbkFsZ29yaXRobXNFbmFibGU2LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgNiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkwLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVdFUERlZmF1bHRLZXlzVGFibGVfZG90MTFXRVBEZWZhdWx0S2V5MSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldFUERFRkFVTFRLRVkxLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl93ZXBkZWZhdWx0a2V5IH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFXRVBEZWZhdWx0S2V5c1RhYmxlX2RvdDExV0VQRGVmYXVsdEtleTIsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZXRVBERUZBVUxUS0VZMiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfd2VwZGVmYXVsdGtleSB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExV0VQRGVmYXVsdEtleXNUYWJsZV9kb3QxMVdFUERlZmF1bHRLZXkzLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVByaXZhY3lJbnZva2VkLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MsIEhGQTM4NHhfV0VQRkxBR1NfUFJJVklOVk9LRUQsIDAsCisgICAgICAgICAgcHJpc20ybWliX3ByaXZhY3lpbnZva2VkIH0sCisgICAgeyBESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFXRVBEZWZhdWx0S2V5SUQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZXRVBERUZBVUxUS0VZSUQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX2RvdDExc210X2RvdDExUHJpdmFjeVRhYmxlX2RvdDExRXhjbHVkZVVuZW5jcnlwdGVkLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MsIEhGQTM4NHhfV0VQRkxBR1NfRVhDTFVERSwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZXhjbHVkZXVuZW5jcnlwdGVkIH0sCisgICAgeyBESURtaWJfZG90MTFwaHlfZG90MTFQaHlPcGVyYXRpb25UYWJsZV9kb3QxMVNob3J0UHJlYW1ibGVFbmFibGVkLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GU0hPUlRQUkVBTUJMRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJlYW1ibGUgfSwKKworICAgIC8qIGRvdDExbWFjIE1JQidzICovCisKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExTUFDQWRkcmVzcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFIsIEhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFJfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMVJUU1RocmVzaG9sZCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfUlRTVEhSRVNILCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExUlRTVGhyZXNob2xkLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1JUU1RIUkVTSDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFTaG9ydFJldHJ5TGltaXQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1NIT1JUUkVUUllMSU1JVCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMUxvbmdSZXRyeUxpbWl0LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9MT05HUkVUUllMSU1JVCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMUZyYWdtZW50YXRpb25UaHJlc2hvbGQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0ZSQUdUSFJFU0gsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMU9wZXJhdGlvblRhYmxlX2RvdDExRnJhZ21lbnRhdGlvblRocmVzaG9sZCwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9GUkFHVEhSRVNIMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZnJhZ21lbnRhdGlvbnRocmVzaG9sZCB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFNYXhUcmFuc21pdE1TRFVMaWZldGltZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfTUFYVFhMSUZFVElNRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFPcGVyYXRpb25UYWJsZV9kb3QxMU1heFJlY2VpdmVMaWZldGltZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfTUFYUlhMSUZFVElNRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMywKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3M1LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzNiwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczcsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3M4LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzOSwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEwLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTEsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxMiwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEzLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxNSwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE2LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTcsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxOCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE5LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjAsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyMSwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczIyLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjMsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyNCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI1LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjYsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyNywKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI4LAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjksCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorICAgIHsgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MzMCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzIH0sCisgICAgeyBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczMxLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ncm91cGFkZHJlc3MgfSwKKyAgICB7IERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMzIsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2dyb3VwYWRkcmVzcyB9LAorCisgICAgLyogZG90MTFwaHkgTUlCJ3MgKi8KKworICAgIHsgRElEbWliX2RvdDExcGh5X2RvdDExUGh5T3BlcmF0aW9uVGFibGVfZG90MTFQSFlUeXBlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9QSFlUWVBFLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeU9wZXJhdGlvblRhYmxlX2RvdDExVGVtcFR5cGUsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1RFTVBUWVBFLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUN1cnJlbnRDaGFubmVsLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NVUlJFTlRDSEFOTkVMLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUN1cnJlbnRDaGFubmVsLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GT1dOQ0hBTk5FTCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFwaHlfZG90MTFQaHlEU1NTVGFibGVfZG90MTFDdXJyZW50Q0NBTW9kZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ0NBTU9ERSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisKKyAgICAvKiBwMlRhYmxlIE1JQidzICovCisKKyAgICB7IERJRG1pYl9wMl9wMlRhYmxlX3AyTU1UeCwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3ByaXYgfSwKKyAgICB7IERJRG1pYl9wMl9wMlRhYmxlX3AyRWFybHlCZWFjb24sCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgQklUNywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYXBwY2ZpbmZvZmxhZyB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJSZWNlaXZlZEZyYW1lU3RhdGlzdGljcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJDb21tdW5pY2F0aW9uVGFsbGllcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJBdXRoZW50aWNhdGVkLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJBc3NvY2lhdGVkLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJQb3dlclNhdmVVc2VyQ291bnQsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9wcml2IH0sCisgICAgeyBESURtaWJfcDJfcDJUYWJsZV9wMkNvbW1lbnQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9wcml2IH0sCisgICAgeyBESURtaWJfcDJfcDJUYWJsZV9wMkFjY2Vzc01vZGUsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJBY2Nlc3NBbGxvdywKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9wcml2IH0sCisgICAgeyBESURtaWJfcDJfcDJUYWJsZV9wMkFjY2Vzc0RlbnksCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfcHJpdiB9LAorICAgIHsgRElEbWliX3AyX3AyVGFibGVfcDJDaGFubmVsSW5mb1Jlc3VsdHMsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCwKKyAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9wcml2IH0sCisKKyAgICAvKiBwMlN0YXRpYyBNSUIncyAqLworCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZQb3J0VHlwZSwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GUE9SVFRZUEUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duTUFDQWRkcmVzcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFIsIEhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFJfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZEZXNpcmVkU1NJRCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GREVTSVJFRFNTSUQsIEhGQTM4NHhfUklEX0NORkRFU0lSRURTU0lEX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYnl0ZXN0cjJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZPd25DaGFubmVsLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GT1dOQ0hBTk5FTCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZPd25TU0lELAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GT1dOU1NJRCwgSEZBMzg0eF9SSURfQ05GT1dOU1NJRF9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVzdHIycHN0ciB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duQVRJTVdpbmRvdywKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GT1dOQVRJTVdJTiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZTeXN0ZW1TY2FsZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORlNZU1NDQUxFLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk1heERhdGFMZW5ndGgsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZNQVhEQVRBTEVOLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3MsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFIsIEhGQTM4NHhfUklEX0NORldEU0FERFJfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZQTUVuYWJsZWQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORlBNRU5BQkxFRCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdHJ1dGggfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlBNRVBTLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZQTUVQUywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdHJ1dGggfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk11bHRpY2FzdFJlY2VpdmUsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORk1VTFRJQ0FTVFJYLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl90cnV0aCB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mTWF4U2xlZXBEdXJhdGlvbiwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GTUFYU0xFRVBEVVIsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUE1Ib2xkb3ZlckR1cmF0aW9uLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZQTUhPTEREVVIsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mT3duTmFtZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORk9XTk5BTUUsIEhGQTM4NHhfUklEX0NORk9XTk5BTUVfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlc3RyMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk93bkRUSU1QZXJpb2QsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZPV05EVElNUEVSLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3MxLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFIxLCBIRkEzODR4X1JJRF9DTkZXRFNBRERSMV9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3MyLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFIyLCBIRkEzODR4X1JJRF9DTkZXRFNBRERSMl9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3MzLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFIzLCBIRkEzODR4X1JJRF9DTkZXRFNBRERSM19MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3M0LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFI0LCBIRkEzODR4X1JJRF9DTkZXRFNBRERSNF9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3M1LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFI1LCBIRkEzODR4X1JJRF9DTkZXRFNBRERSNV9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldEU0FkZHJlc3M2LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldEU0FERFI2LCBIRkEzODR4X1JJRF9DTkZXRFNBRERSNl9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX2J5dGVhcmVhMnBzdHIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZk11bHRpY2FzdFBNQnVmZmVyaW5nLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORk1DQVNUUE1CVUZGLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl90cnV0aCB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mV0VQRGVmYXVsdEtleUlELAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWUlELCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldFUERlZmF1bHRLZXkwLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldFUERlZmF1bHRLZXkxLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTEsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldFUERlZmF1bHRLZXkyLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTIsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldFUERlZmF1bHRLZXkzLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQREVGQVVMVEtFWTMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZldFUEZsYWdzLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GV0VQRkxBR1MsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQXV0aGVudGljYXRpb24sCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZBVVRIRU5USUNBVElPTiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZNYXhBc3NvY2lhdGVkU3RhdGlvbnMsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GTUFYQVNTT0NTVEFUSU9OUywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZUeENvbnRyb2wsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZUWENPTlRST0wsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUm9hbWluZ01vZGUsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORlJPQU1JTkdNT0RFLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkhvc3RBdXRoZW50aWNhdGlvbiwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZIT1NUQVVUSEFTU09DLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl90cnV0aCB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mUmN2Q3JjRXJyb3IsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZSQ1ZDUkNFUlJPUiwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZBbHRSZXRyeUNvdW50LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GQUxUUkVUUllDTlQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQmVhY29uSW50ZXJ2YWwsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GQVBCQ05JTlQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mTWVkaXVtT2NjdXBhbmN5TGltaXQsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPLCBIRkEzODR4X1JJRF9DTkZBUFBDRklORk9fTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkNGUFBlcmlvZCwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZBUFBDRklORk8sIEhGQTM4NHhfUklEX0NORkFQUENGSU5GT19MRU4sIDEsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMm9mZnNldCB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mQ0ZQTWF4RHVyYXRpb24sCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPLCBIRkEzODR4X1JJRF9DTkZBUFBDRklORk9fTEVOLCAyLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkNGUEZsYWdzLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFQUENGSU5GTywgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPX0xFTiwgMywKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyb2Zmc2V0IH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZTVEFQQ0ZJbmZvLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZTVEFQQ0ZJTkZPLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlByaW9yaXR5UVVzYWdlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GUFJJT1JJVFlRVVNBR0UsIEhGQTM4NHhfUklEX0NORlBSSU9RVVNBR0VfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mVElNQ3RybCwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORlRJTUNUUkwsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mVGhpcnR5MlRhbGx5LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GVEhJUlRZMlRBTExZLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl90cnV0aCB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mRW5oU2VjdXJpdHksCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GRU5IU0VDVVJJVFksIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyU3RhdGljX3AyQ25mU2hvcnRQcmVhbWJsZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORlNIT1JUUFJFQU1CTEUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3ByZWFtYmxlIH0sCisgICAgeyBESURtaWJfcDJfcDJTdGF0aWNfcDJDbmZFeGNsdWRlTG9uZ1ByZWFtYmxlLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkVYQ0xPTkdQUkVBTUJMRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdHJ1dGggfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkF1dGhlbnRpY2F0aW9uUnNwVE8sCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORkFVVEhSU1BUSU1FT1VULCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZkJhc2ljUmF0ZXMsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DTkZCQVNJQ1JBVEVTLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMlN0YXRpY19wMkNuZlN1cHBvcnRlZFJhdGVzLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ05GU1VQUFJBVEVTLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKworICAgIC8qIHAyRHluYW1pYyBNSUIncyAqLworCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyQ3JlYXRlSUJTUywKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1JFQVRFSUJTUywgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdHJ1dGggfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJGcmFnbWVudGF0aW9uVGhyZXNob2xkLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9GUkFHVEhSRVNILCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9mcmFnbWVudGF0aW9udGhyZXNob2xkIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9SVFNUSFJFU0gsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2wsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1RYUkFURUNOVEwsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlByb21pc2N1b3VzTW9kZSwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfUFJPTUlTQ01PREUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3RydXRoIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDAsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfRlJBR1RIUkVTSDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJGcmFnbWVudGF0aW9uVGhyZXNob2xkMSwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9GUkFHVEhSRVNIMSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZnJhZ21lbnRhdGlvbnRocmVzaG9sZCB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMkZyYWdtZW50YXRpb25UaHJlc2hvbGQyLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0ZSQUdUSFJFU0gyLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9mcmFnbWVudGF0aW9udGhyZXNob2xkIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDMsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfRlJBR1RIUkVTSDMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJGcmFnbWVudGF0aW9uVGhyZXNob2xkNCwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9GUkFHVEhSRVNINCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfZnJhZ21lbnRhdGlvbnRocmVzaG9sZCB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMkZyYWdtZW50YXRpb25UaHJlc2hvbGQ1LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0ZSQUdUSFJFU0g1LCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9mcmFnbWVudGF0aW9udGhyZXNob2xkIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyRnJhZ21lbnRhdGlvblRocmVzaG9sZDYsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfRlJBR1RIUkVTSDYsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJSVFNUaHJlc2hvbGQwLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1JUU1RIUkVTSDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlJUU1RocmVzaG9sZDEsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfUlRTVEhSRVNIMSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkMiwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9SVFNUSFJFU0gyLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJSVFNUaHJlc2hvbGQzLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1JUU1RIUkVTSDMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlJUU1RocmVzaG9sZDQsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfUlRTVEhSRVNINCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyUlRTVGhyZXNob2xkNSwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9SVFNUSFJFU0g1LCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJSVFNUaHJlc2hvbGQ2LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1JUU1RIUkVTSDYsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2wwLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1RYUkFURUNOVEwwLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJUeFJhdGVDb250cm9sMSwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9UWFJBVEVDTlRMMSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbDIsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhSQVRFQ05UTDIsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2wzLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1RYUkFURUNOVEwzLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMkR5bmFtaWNfcDJUeFJhdGVDb250cm9sNCwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFEIHwgRl9XUklURSwKKyAgICAgICAgICBIRkEzODR4X1JJRF9UWFJBVEVDTlRMNCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJEeW5hbWljX3AyVHhSYXRlQ29udHJvbDUsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhSQVRFQ05UTDUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyRHluYW1pY19wMlR4UmF0ZUNvbnRyb2w2LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX1RYUkFURUNOVEw2LCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKworICAgIC8qIHAyQmVoYXZpb3IgTUlCJ3MgKi8KKworICAgIHsgRElEbWliX3AyX3AyQmVoYXZpb3JfcDJUaWNrVGltZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0lUSUNLVElNRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisKKyAgICAvKiBwMk5JQyBNSUIncyAqLworCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJNYXhMb2FkVGltZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfTUFYTE9BRFRJTUUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyRExCdWZmZXJQYWdlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9ET1dOTE9BREJVRkZFUiwgSEZBMzg0eF9SSURfRE9XTkxPQURCVUZGRVJfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMkRMQnVmZmVyT2Zmc2V0LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9ET1dOTE9BREJVRkZFUiwgSEZBMzg0eF9SSURfRE9XTkxPQURCVUZGRVJfTEVOLCAxLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMkRMQnVmZmVyTGVuZ3RoLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9ET1dOTE9BREJVRkZFUiwgSEZBMzg0eF9SSURfRE9XTkxPQURCVUZGRVJfTEVOLCAyLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMlBSSUlkZW50aXR5LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9QUklJREVOVElUWSwgSEZBMzg0eF9SSURfUFJJSURFTlRJVFlfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyUFJJU3VwUmFuZ2UsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1BSSVNVUFJBTkdFLCBIRkEzODR4X1JJRF9QUklTVVBSQU5HRV9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJDRklBY3RSYW5nZXMsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1BSSV9DRklBQ1RSQU5HRVMsIEhGQTM4NHhfUklEX0NGSUFDVFJBTkdFU19MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJCdWlsZFNlcXVlbmNlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9CVUlMRFNFUSwgSEZBMzg0eF9SSURfQlVJTERTRVFfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyUHJpbWFyeUZXSUQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2Z3aWQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMlNlY29uZGFyeUZXSUQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2Z3aWQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMlRlcnRpYXJ5RldJRCwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFELAorICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX2Z3aWQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMk5JQ1NlcmlhbE51bWJlciwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfTklDU0VSSUFMTlVNQkVSLCBIRkEzODR4X1JJRF9OSUNTRVJJQUxOVU1CRVJfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJOSUNJZGVudGl0eSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfTklDSURFTlRJVFksIEhGQTM4NHhfUklEX05JQ0lERU5USVRZX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyYXJyYXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMk1GSVN1cFJhbmdlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9NRklTVVBSQU5HRSwgSEZBMzg0eF9SSURfTUZJU1VQUkFOR0VfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyQ0ZJU3VwUmFuZ2UsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NGSVNVUFJBTkdFLCBIRkEzODR4X1JJRF9DRklTVVBSQU5HRV9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJDaGFubmVsTGlzdCwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ0hBTk5FTExJU1QsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyUmVndWxhdG9yeURvbWFpbnMsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1JFR1VMQVRPUllET01BSU5TLCBIRkEzODR4X1JJRF9SRUdVTEFUT1JZRE9NQUlOU19MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3JlZ3VsYXRvcnlkb21haW5zIH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJUZW1wVHlwZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfVEVNUFRZUEUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTklDX3AyU1RBSWRlbnRpdHksCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1NUQUlERU5USVRZLCBIRkEzODR4X1JJRF9TVEFJREVOVElUWV9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJOSUNfcDJTVEFTdXBSYW5nZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfU1RBU1VQUkFOR0UsIEhGQTM4NHhfUklEX1NUQVNVUFJBTkdFX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyYXJyYXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMk1GSUFjdFJhbmdlcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfU1RBX01GSUFDVFJBTkdFUywgSEZBMzg0eF9SSURfTUZJQUNUUkFOR0VTX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyYXJyYXkgfSwKKyAgICB7IERJRG1pYl9wMl9wMk5JQ19wMlNUQUNGSUFjdFJhbmdlcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfU1RBX0NGSUFDVFJBTkdFUywgSEZBMzg0eF9SSURfQ0ZJQUNUUkFOR0VTMl9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisKKyAgICAvKiBwMk1BQyBNSUIncyAqLworCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJQb3J0U3RhdHVzLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1BPUlRTVEFUVVMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudFNTSUQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFNTSUQsIEhGQTM4NHhfUklEX0NVUlJFTlRTU0lEX0xFTiwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfYnl0ZXN0cjJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJDdXJyZW50QlNTSUQsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVEJTU0lELCBIRkEzODR4X1JJRF9DVVJSRU5UQlNTSURfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJDb21tc1F1YWxpdHksCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZLCBIRkEzODR4X1JJRF9DT01NU1FVQUxJVFlfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ29tbXNRdWFsaXR5Q1EsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZLCBIRkEzODR4X1JJRF9DT01NU1FVQUxJVFlfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMkNvbW1zUXVhbGl0eUFTTCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DT01NU1FVQUxJVFksIEhGQTM4NHhfUklEX0NPTU1TUVVBTElUWV9MRU4sIDEsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMm9mZnNldCB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ29tbXNRdWFsaXR5QU5MLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NPTU1TUVVBTElUWSwgSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZX0xFTiwgMiwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyb2Zmc2V0IH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJkYm1Db21tc1F1YWxpdHksCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfREJNQ09NTVNRVUFMSVRZLCBIRkEzODR4X1JJRF9EQk1DT01NU1FVQUxJVFlfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyZGJtQ29tbXNRdWFsaXR5Q1EsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZLCBIRkEzODR4X1JJRF9DT01NU1FVQUxJVFlfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJvZmZzZXQgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMmRibUNvbW1zUXVhbGl0eUFTTCwKKyAgICAgICAgICBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DT01NU1FVQUxJVFksIEhGQTM4NHhfUklEX0NPTU1TUVVBTElUWV9MRU4sIDEsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMm9mZnNldCB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyZGJtQ29tbXNRdWFsaXR5QU5MLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NPTU1TUVVBTElUWSwgSEZBMzg0eF9SSURfQ09NTVNRVUFMSVRZX0xFTiwgMiwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyb2Zmc2V0IH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJDdXJyZW50VHhSYXRlLAorICAgICAgICAgIEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NVUlJFTlRUWFJBVEUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudEJlYWNvbkludGVydmFsLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UQkNOSU5ULCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMlN0YUN1cnJlbnRTY2FsZVRocmVzaG9sZHMsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFNDQUxFVEhSRVNILCBIRkEzODR4X1JJRF9TVEFDVVJTQ0FMRVRIUkVTSF9MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJBUEN1cnJlbnRTY2FsZVRocmVzaG9sZHMsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UU0NBTEVUSFJFU0gsIEhGQTM4NHhfUklEX0FQQ1VSU0NBTEVUSFJFU0hfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzJhcnJheSB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyUHJvdG9jb2xSc3BUaW1lLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9QUk9UT0NPTFJTUFRJTUUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyU2hvcnRSZXRyeUxpbWl0LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9TSE9SVFJFVFJZTElNSVQsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyTG9uZ1JldHJ5TGltaXQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0xPTkdSRVRSWUxJTUlULCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMk1heFRyYW5zbWl0TGlmZXRpbWUsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX01BWFRYTElGRVRJTUUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyTWF4UmVjZWl2ZUxpZmV0aW1lLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9NQVhSWExJRkVUSU1FLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMkNGUG9sbGFibGUsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ0ZQT0xMQUJMRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJBdXRoZW50aWNhdGlvbkFsZ29yaXRobXMsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0FVVEhBTEdPUklUSE1TLCBIRkEzODR4X1JJRF9BVVRIQUxHT1JJVEhNU19MRU4sIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMmFycmF5IH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJQcml2YWN5T3B0aW9uSW1wbGVtZW50ZWQsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX1BSSVZBQ1lPUFRJTVAsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudFR4UmF0ZTEsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFMSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJDdXJyZW50VHhSYXRlMiwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NVUlJFTlRUWFJBVEUyLCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGUzLAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTMsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyQ3VycmVudFR4UmF0ZTQsCisgICAgICAgICAgRl9BUCB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UVFhSQVRFNCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNQUNfcDJDdXJyZW50VHhSYXRlNSwKKyAgICAgICAgICBGX0FQIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NVUlJFTlRUWFJBVEU1LCAwLCAwLAorICAgICAgICAgIHByaXNtMm1pYl91aW50MzIgfSwKKyAgICB7IERJRG1pYl9wMl9wMk1BQ19wMkN1cnJlbnRUeFJhdGU2LAorICAgICAgICAgIEZfQVAgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFRYUkFURTYsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTUFDX3AyT3duTUFDQWRkcmVzcywKKyAgICAgICAgICBGX0FQIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX09XTk1BQ0FERFJFU1MsIEhGQTM4NHhfUklEX09XTk1BQ0FERFJFU1NfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyIH0sCisKKyAgICAvKiBwMk1vZGVtIE1JQidzICovCisKKyAgICB7IERJRG1pYl9wMl9wMk1vZGVtX3AyUEhZVHlwZSwKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfUEhZVFlQRSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNb2RlbV9wMkN1cnJlbnRDaGFubmVsLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UQ0hBTk5FTCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNb2RlbV9wMkN1cnJlbnRQb3dlclN0YXRlLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCwKKyAgICAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UUE9XRVJTVEFURSwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNb2RlbV9wMkNDQU1vZGUsCisgICAgICAgICAgRl9BUCB8IEZfU1RBIHwgRl9SRUFELAorICAgICAgICAgIEhGQTM4NHhfUklEX0NDQU1PREUsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3VpbnQzMiB9LAorICAgIHsgRElEbWliX3AyX3AyTW9kZW1fcDJUeFBvd2VyTWF4LAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhQT1dFUk1BWCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFDdXJyZW50VHhQb3dlckxldmVsLAorICAgICAgICAgIEZfQVAgfCBGX1NUQSB8IEZfUkVBRCB8IEZfV1JJVEUsCisgICAgICAgICAgSEZBMzg0eF9SSURfVFhQT1dFUk1BWCwgMCwgMCwKKyAgICAgICAgICBwcmlzbTJtaWJfdWludDMyIH0sCisgICAgeyBESURtaWJfcDJfcDJNb2RlbV9wMlN1cHBvcnRlZERhdGFSYXRlcywKKyAgICAgICAgICBGX0FQIHwgRl9TVEEgfCBGX1JFQUQsCisgICAgICAgICAgSEZBMzg0eF9SSURfU1VQUE9SVEVEREFUQVJBVEVTLCBIRkEzODR4X1JJRF9TVVBQT1JURUREQVRBUkFURVNfTEVOLCAwLAorICAgICAgICAgIHByaXNtMm1pYl9ieXRlc3RyMnBzdHIgfSwKKworICAgIC8qIEFuZCBmaW5hbGx5LCBsbnggbWlicyAqLworICAgIHsgRElEbWliX2xueF9sbnhDb25maWdUYWJsZV9sbnhSU05BSUUsCisgICAgICAgICAgRl9TVEEgfCBGX1JFQUQgfCBGX1dSSVRFLAorICAgICAgICAgIEhGQTM4NHhfUklEX0NORldQQURBVEEsIDAsIDAsCisgICAgICAgICAgcHJpc20ybWliX3ByaXYgfSwKKyAgICB7IDAsIDAsIDAsIDAsIDAsIE5VTEx9fTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGVzZSBNSUIncyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWU6CisKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeU9wZXJhdGlvblRhYmxlX2RvdDExQ2hhbm5lbEFnaWxpdHlQcmVzZW50CitESURtaWJfZG90MTFwaHlfZG90MTFQaHlPcGVyYXRpb25UYWJsZV9kb3QxMUNoYW5uZWxBZ2lsaXR5RW5hYmxlZAorRElEbWliX2RvdDExcGh5X2RvdDExUGh5RFNTU1RhYmxlX2RvdDExUEJDQ09wdGlvbkltcGxlbWVudGVkCitESURtaWJfZG90MTFwaHlfZG90MTFSZWdEb21haW5zU3VwcG9ydGVkVGFibGVfZG90MTFSZWdEb21haW5zU3VwcG9ydEluZGV4CitESURtaWJfZG90MTFwaHlfZG90MTFTdXBwb3J0ZWREYXRhUmF0ZXNUeFRhYmxlX2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzVHhJbmRleAorRElEbWliX2RvdDExcGh5X2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzVHhUYWJsZV9kb3QxMVN1cHBvcnRlZERhdGFSYXRlc1R4VmFsdWUKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVN1cHBvcnRlZERhdGFSYXRlc1J4VGFibGVfZG90MTFTdXBwb3J0ZWREYXRhUmF0ZXNSeEluZGV4CitESURtaWJfZG90MTFwaHlfZG90MTFTdXBwb3J0ZWREYXRhUmF0ZXNSeFRhYmxlX2RvdDExU3VwcG9ydGVkRGF0YVJhdGVzUnhWYWx1ZQorCitESURtaWJfZG90MTFwaHlfZG90MTFSZWdEb21haW5zU3VwcG9ydGVkVGFibGVfZG90MTFSZWdEb21haW5zU3VwcG9ydFZhbHVlCitUT0RPOiBuZWVkIHRvIGludmVzdGlnYXRlIHdoeSB3bGFuIGhhcyB0aGlzIGFzIGVudW1lcmF0ZWQgYW5kIFByaXNtMiBoYXMgdGhpcworICAgICAgYXMgYnR5ZSBzdHIuCisKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMVNob3J0UHJlYW1ibGVPcHRpb25JbXBsZW1lbnRlZAorVE9ETzogRmluZCBvdXQgdGhlIGZpcm13YXJlIHZlcnNpb24gbnVtYmVyKHMpIGZvciBpZGVudGlmeWluZworICAgICAgd2hldGhlciB0aGUgZmlybXdhcmUgaXMgY2FwYWJsZSBvZiBzaG9ydCBwcmVhbWJsZS4gVFJVRSBvciBGQUxTRQorICAgICAgd2lsbCBiZSByZXR1cm5lZCBiYXNlZCBvbiB0aGUgdmVyc2lvbiBvZiB0aGUgZmlybXdhcmUuCisKK1dFUCBLZXkgbWFwcGluZ3MgYXJlbid0IHN1cHBvcnRlZCBpbiB0aGUgZi93LgorRElEbWliX2RvdDExc210X2RvdDExV0VQS2V5TWFwcGluZ3NUYWJsZV9kb3QxMVdFUEtleU1hcHBpbmdJbmRleAorRElEbWliX2RvdDExc210X2RvdDExV0VQS2V5TWFwcGluZ3NUYWJsZV9kb3QxMVdFUEtleU1hcHBpbmdBZGRyZXNzCitESURtaWJfZG90MTFzbXRfZG90MTFXRVBLZXlNYXBwaW5nc1RhYmxlX2RvdDExV0VQS2V5TWFwcGluZ1dFUE9uCitESURtaWJfZG90MTFzbXRfZG90MTFXRVBLZXlNYXBwaW5nc1RhYmxlX2RvdDExV0VQS2V5TWFwcGluZ1ZhbHVlCitESURtaWJfZG90MTFzbXRfZG90MTFQcml2YWN5VGFibGVfZG90MTFXRVBLZXlNYXBwaW5nTGVuZ3RoCisKK1RPRE86IGltcGxlbWVudCBjb3VudGVycy4KK0RJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVdFUElDVkVycm9yQ291bnQKK0RJRG1pYl9kb3QxMXNtdF9kb3QxMVByaXZhY3lUYWJsZV9kb3QxMVdFUEV4Y2x1ZGVkQ291bnQKK0RJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFUcmFuc21pdHRlZEZyYWdtZW50Q291bnQKK0RJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFNdWx0aWNhc3RUcmFuc21pdHRlZEZyYW1lQ291bnQKK0RJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFGYWlsZWRDb3VudAorRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVJldHJ5Q291bnQKK0RJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFNdWx0aXBsZVJldHJ5Q291bnQKK0RJRG1pYl9kb3QxMW1hY19kb3QxMUNvdW50ZXJzVGFibGVfZG90MTFGcmFtZUR1cGxpY2F0ZUNvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExUlRTU3VjY2Vzc0NvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExUlRTRmFpbHVyZUNvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExQUNLRmFpbHVyZUNvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExUmVjZWl2ZWRGcmFnbWVudENvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExTXVsdGljYXN0UmVjZWl2ZWRGcmFtZUNvdW50CitESURtaWJfZG90MTFtYWNfZG90MTFDb3VudGVyc1RhYmxlX2RvdDExRkNTRXJyb3JDb3VudAorRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVRyYW5zbWl0dGVkRnJhbWVDb3VudAorRElEbWliX2RvdDExbWFjX2RvdDExQ291bnRlcnNUYWJsZV9kb3QxMVdFUFVuZGVjcnlwdGFibGVDb3VudAorCitUT0RPOiBpbXBsZW1lbnQgc2FuZSB2YWx1ZXMgZm9yIHRoZXNlLgorRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFNYW51ZmFjdHVyZXJJRAorRElEbWliX2RvdDExbWFjX2RvdDExT3BlcmF0aW9uVGFibGVfZG90MTFQcm9kdWN0SUQKKworTm90IHRvbyB3b3JyaWVkIGFib3V0IHRoZXNlIGF0IHRoZSBtb21lbnQuCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlBbnRlbm5hVGFibGVfZG90MTFDdXJyZW50VHhBbnRlbm5hCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlBbnRlbm5hVGFibGVfZG90MTFEaXZlcnNpdHlTdXBwb3J0CitESURtaWJfZG90MTFwaHlfZG90MTFQaHlBbnRlbm5hVGFibGVfZG90MTFDdXJyZW50UnhBbnRlbm5hCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlUeFBvd2VyVGFibGVfZG90MTFOdW1iZXJTdXBwb3J0ZWRQb3dlckxldmVscworRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsMQorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsMgorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsMworRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNAorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNQorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNgorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsNworRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExVHhQb3dlckxldmVsOAorRElEbWliX2RvdDExcGh5X2RvdDExUGh5VHhQb3dlclRhYmxlX2RvdDExQ3VycmVudFR4UG93ZXJMZXZlbAorCitVbW1tLCBGSCBhbmQgSVIgZG9uJ3QgYXBwbHkKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUhvcFRpbWUKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRDaGFubmVsTnVtYmVyCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlGSFNTVGFibGVfZG90MTFNYXhEd2VsbFRpbWUKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnREd2VsbFRpbWUKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRTZXQKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUZIU1NUYWJsZV9kb3QxMUN1cnJlbnRQYXR0ZXJuCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlGSFNTVGFibGVfZG90MTFDdXJyZW50SW5kZXgKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUNDQU1vZGVTdXBwb3J0ZWQKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeURTU1NUYWJsZV9kb3QxMUVEVGhyZXNob2xkCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlJUlRhYmxlX2RvdDExQ0NBV2F0Y2hkb2dUaW1lck1heAorRElEbWliX2RvdDExcGh5X2RvdDExUGh5SVJUYWJsZV9kb3QxMUNDQVdhdGNoZG9nQ291bnRNYXgKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMVBoeUlSVGFibGVfZG90MTFDQ0FXYXRjaGRvZ1RpbWVyTWluCitESURtaWJfZG90MTFwaHlfZG90MTFQaHlJUlRhYmxlX2RvdDExQ0NBV2F0Y2hkb2dDb3VudE1pbgorCitXZSBqdXN0IGRvbid0IGhhdmUgZW5vdWdoIGFudGVubmFzIHJpZ2h0IG5vdyB0byB3b3JyeSBhYm91dCB0aGlzLgorRElEbWliX2RvdDExcGh5X2RvdDExQW50ZW5uYXNMaXN0VGFibGVfZG90MTFBbnRlbm5hTGlzdEluZGV4CitESURtaWJfZG90MTFwaHlfZG90MTFBbnRlbm5hc0xpc3RUYWJsZV9kb3QxMVN1cHBvcnRlZFR4QW50ZW5uYQorRElEbWliX2RvdDExcGh5X2RvdDExQW50ZW5uYXNMaXN0VGFibGVfZG90MTFTdXBwb3J0ZWRSeEFudGVubmEKK0RJRG1pYl9kb3QxMXBoeV9kb3QxMUFudGVubmFzTGlzdFRhYmxlX2RvdDExRGl2ZXJzaXR5U2VsZWN0aW9uUngKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEZ1bmN0aW9uIERlZmluaXRpb25zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X21pYnNldF9taWJnZXQKKyoKKyogU2V0IHRoZSB2YWx1ZSBvZiBhIG1pYiBpdGVtLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MgYW5kIGRvbmUKKyoJPDAJc3VjY2VzcywgYnV0IHdlJ3JlIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0byBmaW5pc2guCisqCT4wCWFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGhhbmRsaW5nIHRoZSBtZXNzYWdlLgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitpbnQgcHJpc20ybWdtdF9taWJzZXRfbWliZ2V0KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgdm9pZCAqbXNncCkKK3sKKwloZmEzODR4X3QJCSpodyA9IHdsYW5kZXYtPnByaXY7CisJaW50CQkJcmVzdWx0LCBpc2dldDsKKwltaWJyZWNfdAkJKm1pYjsKKwlVSU5UMTYJCQl3aGljaDsKKworCXA4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdAkqbXNnID0gbXNncDsKKwlwODAyMTFpdGVtZF90CQkJKm1pYml0ZW07CisKKwlEQkZFTlRFUjsKKworCW1zZy0+cmVzdWx0Y29kZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKworCS8qCisJKiogRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gQWNjZXNzIFBvaW50IG9yIGEgc3RhdGlvbi4KKwkqLworCisJd2hpY2ggPSBody0+YXAgPyBGX0FQIDogRl9TVEE7CisKKwkvKgorCSoqIEZpbmQgdGhlIE1JQiBpbiB0aGUgTUlCIHRhYmxlLiAgTm90ZSB0aGF0IGEgTUlCIG1heSBiZSBpbiB0aGUKKwkqKiB0YWJsZSB0d2ljZS4uLm9uY2UgZm9yIGFuIEFQIGFuZCBvbmNlIGZvciBhIHN0YXRpb24uICBNYWtlIHN1cmUKKwkqKiB0byBnZXQgdGhlIGNvcnJlY3Qgb25lLiAgTm90ZSB0aGF0IERJRD0wIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisJKiogTUlCIHRhYmxlLgorCSovCisKKwltaWJpdGVtID0gKHA4MDIxMWl0ZW1kX3QgKikgbXNnLT5taWJhdHRyaWJ1dGUuZGF0YTsKKworCWZvciAobWliID0gbWlidGFiOyBtaWItPmRpZCAhPSAwOyBtaWIrKykKKwkJaWYgKG1pYi0+ZGlkID09IG1pYml0ZW0tPmRpZCAmJiAobWliLT5mbGFnICYgd2hpY2gpKQorCQkJYnJlYWs7CisKKwlpZiAobWliLT5kaWQgPT0gMCkgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQlnb3RvIGRvbmU7CisJfQorCisJLyoKKwkqKiBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhICJtaWJnZXQiIG9yIGEgIm1pYnNldCIuICBJZiB0aGlzIGlzIGEKKwkqKiAibWliZ2V0IiwgdGhlbiBtYWtlIHN1cmUgdGhhdCB0aGUgTUlCIG1heSBiZSByZWFkLiAgT3RoZXJ3aXNlLAorCSoqIHRoaXMgaXMgYSAibWlic2V0IiBzbyBtYWtlIG1ha2Ugc3VyZSB0aGF0IHRoZSBNSUIgbWF5IGJlIHdyaXR0ZW4uCisJKi8KKworCWlzZ2V0ID0gKG1zZy0+bXNnY29kZSA9PSBESURtc2dfZG90MTFyZXFfbWliZ2V0KTsKKworCWlmIChpc2dldCkgeworCQlpZiAoIShtaWItPmZsYWcgJiBGX1JFQUQpKSB7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9CisJCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2NhbnRfZ2V0X3dyaXRlb25seV9taWI7CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIShtaWItPmZsYWcgJiBGX1dSSVRFKSkgeworCQkJbXNnLT5yZXN1bHRjb2RlLmRhdGEgPQorCQkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9jYW50X3NldF9yZWFkb25seV9taWI7CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9CisKKwkvKgorCSoqIEV4ZWN1dGUgdGhlIE1JQiBmdW5jdGlvbi4gIElmIHRoaW5ncyB3b3JrZWQgb2theSwgdGhlbiBtYWtlCisJKiogc3VyZSB0aGF0IHRoZSBNSUIgZnVuY3Rpb24gYWxzbyB3b3JrZWQgb2theS4gIElmIHNvLCBhbmQgdGhpcworCSoqIGlzIGEgIm1pYmdldCIsIHRoZW4gdGhlIHN0YXR1cyB2YWx1ZSBtdXN0IGJlIHNldCBmb3IgYm90aCB0aGUKKwkqKiAibWliYXR0cmlidXRlIiBwYXJhbWV0ZXIgYW5kIHRoZSBtaWIgaXRlbSB3aXRoaW4gdGhlIGRhdGEKKwkqKiBwb3J0aW9uIG9mIHRoZSAibWliYXR0cmlidXRlIi4KKwkqLworCisJcmVzdWx0ID0gbWliLT5mdW5jKG1pYiwgaXNnZXQsIHdsYW5kZXYsIGh3LCBtc2csCisJCQkgICAodm9pZCAqKSBtaWJpdGVtLT5kYXRhKTsKKworCWlmIChtc2ctPnJlc3VsdGNvZGUuZGF0YSA9PSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzcykgeworCQlpZiAocmVzdWx0ICE9IDApIHsKKwkJCVdMQU5fTE9HX0RFQlVHKDEsICJnZXQvc2V0IGZhaWx1cmUsIHJlc3VsdD0lZFxuIiwKKwkJCQkJcmVzdWx0KTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0KKwkJCQkgUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCX0gZWxzZSB7CisJCQlpZiAoaXNnZXQpIHsKKwkJCQltc2ctPm1pYmF0dHJpYnV0ZS5zdGF0dXMgPQorCQkJCQlQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCQkJbWliaXRlbS0+c3RhdHVzID0KKwkJCQkJUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQkJfQorCQl9CisJfQorCitkb25lOgorCURCRkVYSVQ7CisKKwlyZXR1cm4oMCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfYnl0ZXN0cjJwc3RyCisqCisqIEdldC9zZXQgcHN0ciBkYXRhIHRvL2Zyb20gYSBieXRlIHN0cmluZy4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBOdW1iZXIgb2YgYnl0ZXMgb2YgUklEIGRhdGEuCisqICAgICAgIHBhcm0zICAgIE5vdCB1c2VkLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl9ieXRlc3RyMnBzdHIoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgICAgICAgICAgICAgcmVzdWx0OworCXA4MDIxMXBzdHJkX3QgICAgICAqcHN0ciA9IChwODAyMTFwc3RyZF90KikgZGF0YTsKKwlVSU5UOCAgICAgICAgICAgICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJaGZhMzg0eF9ieXRlc3RyX3QgICpwMmJ5dGVzdHIgPSAoaGZhMzg0eF9ieXRlc3RyX3QqKSBieXRlYnVmOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgbWliLT5wYXJtMSwgYnl0ZWJ1ZiwgbWliLT5wYXJtMik7CisJCXByaXNtMm1nbXRfYnl0ZXN0cjJwc3RyKHAyYnl0ZXN0ciwgcHN0cik7CisJfSBlbHNlIHsKKwkJbWVtc2V0KGJ5dGVidWYsIDAsIG1pYi0+cGFybTIpOworCQlwcmlzbTJtZ210X3BzdHIyYnl0ZXN0cihwMmJ5dGVzdHIsIHBzdHIpOworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBtaWItPnBhcm0xLCBieXRlYnVmLCBtaWItPnBhcm0yKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX2J5dGVhcmVhMnBzdHIKKyoKKyogR2V0L3NldCBwc3RyIGRhdGEgdG8vZnJvbSBhIGJ5dGUgYXJlYS4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBOdW1iZXIgb2YgYnl0ZXMgb2YgUklEIGRhdGEuCisqICAgICAgIHBhcm0zICAgIE5vdCB1c2VkLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl9ieXRlYXJlYTJwc3RyKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpCit7CisJaW50ICAgICAgICAgICAgcmVzdWx0OworCXA4MDIxMXBzdHJkX3QgICpwc3RyID0gKHA4MDIxMXBzdHJkX3QqKSBkYXRhOworCVVJTlQ4ICAgICAgICAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgbWliLT5wYXJtMSwgYnl0ZWJ1ZiwgbWliLT5wYXJtMik7CisJCXByaXNtMm1nbXRfYnl0ZWFyZWEycHN0cihieXRlYnVmLCBwc3RyLAltaWItPnBhcm0yKTsKKwl9IGVsc2UgeworCQltZW1zZXQoYnl0ZWJ1ZiwgMCwgbWliLT5wYXJtMik7CisJCXByaXNtMm1nbXRfcHN0cjJieXRlYXJlYShieXRlYnVmLCBwc3RyKTsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyhodywgbWliLT5wYXJtMSwgYnl0ZWJ1ZiwgbWliLT5wYXJtMik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl91aW50MzIKKyoKKyogR2V0L3NldCB1aW50MzIgZGF0YS4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3VpbnQzMigKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCWludCAgICAgcmVzdWx0OworCVVJTlQzMiAgKnVpbnQzMiA9IChVSU5UMzIqKSBkYXRhOworCVVJTlQ4ICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJVUlOVDE2ICAqd29yZGJ1ZiA9IChVSU5UMTYqKSBieXRlYnVmOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LCBtaWItPnBhcm0xLCB3b3JkYnVmKTsKKwkJKnVpbnQzMiA9ICp3b3JkYnVmOworCQkvKiBbTVNNXSBSZW1vdmVkLCBnZXRjb25maWcxNiByZXR1cm5zIHRoZSB2YWx1ZSBpbiBob3N0IG9yZGVyLgorCQkgKiBwcmlzbTJtZ210X3ByaXNtMmludDJwODAyMTFpbnQod29yZGJ1ZiwgdWludDMyKTsKKwkJICovCisJfSBlbHNlIHsKKwkJLyogW01TTV0gUmVtb3ZlZCwgc2V0Y29uZmlnMTYgZXhwZWN0cyBob3N0IG9yZGVyLgorCQkgKiBwcmlzbTJtZ210X3A4MDIxMWludDJwcmlzbTJpbnQod29yZGJ1ZiwgdWludDMyKTsKKwkJICovCisJCSp3b3JkYnVmID0gKnVpbnQzMjsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBtaWItPnBhcm0xLCAqd29yZGJ1Zik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl91aW50MzJhcnJheQorKgorKiBHZXQvc2V0IGFuIGFycmF5IG9mIHVpbnQzMiBkYXRhLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIFByaXNtMiBSSUQgdmFsdWUuCisqICAgICAgIHBhcm0yICAgIE51bWJlciBvZiBieXRlcyBvZiBSSUQgZGF0YS4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3VpbnQzMmFycmF5KAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpCit7CisJaW50ICAgICByZXN1bHQ7CisJVUlOVDMyICAqdWludDMyID0gKFVJTlQzMiAqKSBkYXRhOworCVVJTlQ4ICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJVUlOVDE2ICAqd29yZGJ1ZiA9IChVSU5UMTYqKSBieXRlYnVmOworCWludCAgICAgaSwgY250OworCisJREJGRU5URVI7CisKKwljbnQgPSBtaWItPnBhcm0yIC8gc2l6ZW9mKFVJTlQxNik7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgbWliLT5wYXJtMSwgd29yZGJ1ZiwgbWliLT5wYXJtMik7CisJCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKKwkJCXByaXNtMm1nbXRfcHJpc20yaW50MnA4MDIxMWludCh3b3JkYnVmK2ksIHVpbnQzMitpKTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspCisJCQlwcmlzbTJtZ210X3A4MDIxMWludDJwcmlzbTJpbnQod29yZGJ1ZitpLCB1aW50MzIraSk7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoaHcsIG1pYi0+cGFybTEsIHdvcmRidWYsIG1pYi0+cGFybTIpOworCQl9CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX3VpbnQzMm9mZnNldAorKgorKiBHZXQvc2V0IGEgc2luZ2xlIGVsZW1lbnQgaW4gYW4gYXJyYXkgb2YgdWludDMyIGRhdGEuCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgUHJpc20yIFJJRCB2YWx1ZS4KKyogICAgICAgcGFybTIgICAgTnVtYmVyIG9mIGJ5dGVzIG9mIFJJRCBkYXRhLgorKiAgICAgICBwYXJtMyAgICBFbGVtZW50IGluZGV4LgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl91aW50MzJvZmZzZXQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlVSU5UOCAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgKndvcmRidWYgPSAoVUlOVDE2KikgYnl0ZWJ1ZjsKKwlVSU5UMTYgIGNudDsKKworCURCRkVOVEVSOworCisJY250ID0gbWliLT5wYXJtMiAvIHNpemVvZihVSU5UMTYpOworCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgbWliLT5wYXJtMSwgd29yZGJ1ZiwgbWliLT5wYXJtMik7CisJaWYgKHJlc3VsdCA9PSAwKSB7CisJCWlmIChpc2dldCkgeworCQkJaWYgKG1pYi0+cGFybTMgPCBjbnQpCisJCQkJcHJpc20ybWdtdF9wcmlzbTJpbnQycDgwMjExaW50KHdvcmRidWYrbWliLT5wYXJtMywgdWludDMyKTsKKwkJCWVsc2UKKwkJCQkqdWludDMyID0gMDsKKwkJfSBlbHNlIHsKKwkJCWlmIChtaWItPnBhcm0zIDwgY250KSB7CisJCQkJcHJpc20ybWdtdF9wODAyMTFpbnQycHJpc20yaW50KHdvcmRidWYrbWliLT5wYXJtMywgdWludDMyKTsKKwkJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBtaWItPnBhcm0xLCB3b3JkYnVmLCBtaWItPnBhcm0yKTsKKwkJCX0KKwkJfQorCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfdHJ1dGgKKyoKKyogR2V0L3NldCB0cnV0aCBkYXRhLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIFByaXNtMiBSSUQgdmFsdWUuCisqICAgICAgIHBhcm0yICAgIE5vdCB1c2VkLgorKiAgICAgICBwYXJtMyAgICBOb3QgdXNlZC4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBtaWIgICAgICBNSUIgcmVjb3JkLgorKiAgICAgICBpc2dldCAgICBNSUJHRVQvTUlCU0VUIGZsYWcuCisqICAgICAgIHdsYW5kZXYgIHdsYW4gZGV2aWNlIHN0cnVjdHVyZS4KKyogICAgICAgcHJpdiAgICAgInByaXYiIHN0cnVjdHVyZS4KKyogICAgICAgaHcgICAgICAgImh3IiBzdHJ1Y3R1cmUuCisqICAgICAgIG1zZyAgICAgIE1lc3NhZ2Ugc3RydWN0dXJlLgorKiAgICAgICBkYXRhICAgICBEYXRhIGJ1ZmZlci4KKyoKKyogUmV0dXJuczoKKyogICAgICAgMCAgIC0gU3VjY2Vzcy4KKyogICAgICAgfjAgIC0gRXJyb3IuCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBwcmlzbTJtaWJfdHJ1dGgoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlVSU5UOCAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgKndvcmRidWYgPSAoVUlOVDE2KikgYnl0ZWJ1ZjsKKworCURCRkVOVEVSOworCisJaWYgKGlzZ2V0KSB7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywgbWliLT5wYXJtMSwgd29yZGJ1Zik7CisJCSp1aW50MzIgPSAoKndvcmRidWYpID8KKwkJCQlQODAyMTFFTlVNX3RydXRoX3RydWUgOiBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOworCX0gZWxzZSB7CisJCSp3b3JkYnVmID0gKCgqdWludDMyKSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpID8gMSA6IDA7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgbWliLT5wYXJtMSwgKndvcmRidWYpOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfZmxhZworKgorKiBHZXQvc2V0IGEgZmxhZy4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBCaXQgdG8gZ2V0L3NldC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2ZsYWcoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlVSU5UOCAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgKndvcmRidWYgPSAoVUlOVDE2KikgYnl0ZWJ1ZjsKKwlVSU5UMzIgIGZsYWdzOworCisJREJGRU5URVI7CisKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnMTYoaHcsIG1pYi0+cGFybTEsIHdvcmRidWYpOworCWlmIChyZXN1bHQgPT0gMCkgeworCQkvKiBbTVNNXSBSZW1vdmVkLCBnZXRjb25maWcxNiByZXR1cm5zIHRoZSB2YWx1ZSBpbiBob3N0IG9yZGVyLgorCQkgKiBwcmlzbTJtZ210X3ByaXNtMmludDJwODAyMTFpbnQod29yZGJ1ZiwgJmZsYWdzKTsKKwkJICovCisJCWZsYWdzID0gKndvcmRidWY7CisJCWlmIChpc2dldCkgeworCQkJKnVpbnQzMiA9IChmbGFncyAmIG1pYi0+cGFybTIpID8KKwkJCQlQODAyMTFFTlVNX3RydXRoX3RydWUgOiBQODAyMTFFTlVNX3RydXRoX2ZhbHNlOworCQl9IGVsc2UgeworCQkJaWYgKCgqdWludDMyKSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpCisJCQkJZmxhZ3MgfD0gbWliLT5wYXJtMjsKKwkJCWVsc2UKKwkJCQlmbGFncyAmPSB+bWliLT5wYXJtMjsKKwkJCS8qIFtNU01dIFJlbW92ZWQsIHNldGNvbmZpZzE2IGV4cGVjdHMgaG9zdCBvcmRlci4KKwkJCSAqIHByaXNtMm1nbXRfcDgwMjExaW50MnByaXNtMmludCh3b3JkYnVmLCAmZmxhZ3MpOworCQkJICovCisJCQkqd29yZGJ1ZiA9IGZsYWdzOworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBtaWItPnBhcm0xLCAqd29yZGJ1Zik7CisJCX0KKwl9CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX2FwcGNmaW5mb2ZsYWcKKyoKKyogR2V0L3NldCBhIHNpbmdsZSBmbGFnIGluIHRoZSBBUFBDRklORk8gcmVjb3JkLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIEJpdCB0byBnZXQvc2V0LgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2FwcGNmaW5mb2ZsYWcoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlVSU5UOCAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgKndvcmRidWYgPSAoVUlOVDE2KikgYnl0ZWJ1ZjsKKwlVSU5UMTYgIHdvcmQ7CisKKwlEQkZFTlRFUjsKKworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0NORkFQUENGSU5GTywKKwkJCQkJYnl0ZWJ1ZiwgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPX0xFTik7CisJaWYgKHJlc3VsdCA9PSAwKSB7CisJCWlmIChpc2dldCkgeworCQkJKnVpbnQzMiA9IChoZmEzODR4Mmhvc3RfMTYod29yZGJ1ZlszXSkgJiBtaWItPnBhcm0xKSA/CisJCQkJUDgwMjExRU5VTV90cnV0aF90cnVlIDogUDgwMjExRU5VTV90cnV0aF9mYWxzZTsKKwkJfSBlbHNlIHsKKwkJCXdvcmQgPSBoZmEzODR4Mmhvc3RfMTYod29yZGJ1ZlszXSk7CisJCQl3b3JkID0gKCgqdWludDMyKSA9PSBQODAyMTFFTlVNX3RydXRoX3RydWUpID8KKwkJCQkod29yZCB8IG1pYi0+cGFybTEpIDogKHdvcmQgJiB+bWliLT5wYXJtMSk7CisJCQl3b3JkYnVmWzNdID0gaG9zdDJoZmEzODR4XzE2KHdvcmQpOworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZyhodywgSEZBMzg0eF9SSURfQ05GQVBQQ0ZJTkZPLAorCQkJCQlieXRlYnVmLCBIRkEzODR4X1JJRF9DTkZBUFBDRklORk9fTEVOKTsKKwkJfQorCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfcmVndWxhdG9yeWRvbWFpbnMKKyoKKyogR2V0IHJlZ3VsYXRvcnkgZG9tYWluIGRhdGEuCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgUHJpc20yIFJJRCB2YWx1ZS4KKyogICAgICAgcGFybTIgICAgTnVtYmVyIG9mIGJ5dGVzIG9mIFJJRCBkYXRhLgorKiAgICAgICBwYXJtMyAgICBOb3QgdXNlZC4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBtaWIgICAgICBNSUIgcmVjb3JkLgorKiAgICAgICBpc2dldCAgICBNSUJHRVQvTUlCU0VUIGZsYWcuCisqICAgICAgIHdsYW5kZXYgIHdsYW4gZGV2aWNlIHN0cnVjdHVyZS4KKyogICAgICAgcHJpdiAgICAgInByaXYiIHN0cnVjdHVyZS4KKyogICAgICAgaHcgICAgICAgImh3IiBzdHJ1Y3R1cmUuCisqICAgICAgIG1zZyAgICAgIE1lc3NhZ2Ugc3RydWN0dXJlLgorKiAgICAgICBkYXRhICAgICBEYXRhIGJ1ZmZlci4KKyoKKyogUmV0dXJuczoKKyogICAgICAgMCAgIC0gU3VjY2Vzcy4KKyogICAgICAgfjAgIC0gRXJyb3IuCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBwcmlzbTJtaWJfcmVndWxhdG9yeWRvbWFpbnMoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgICAgICAgICByZXN1bHQ7CisJVUlOVDMyICAgICAgICAgY250OworCXA4MDIxMXBzdHJkX3QgICpwc3RyID0gKHA4MDIxMXBzdHJkX3QqKSBkYXRhOworCVVJTlQ4ICAgICAgICAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgICAgICAgICp3b3JkYnVmID0gKFVJTlQxNiopIGJ5dGVidWY7CisKKwlEQkZFTlRFUjsKKworCXJlc3VsdCA9IDA7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgbWliLT5wYXJtMSwgd29yZGJ1ZiwgbWliLT5wYXJtMik7CisJCXByaXNtMm1nbXRfcHJpc20yaW50MnA4MDIxMWludCh3b3JkYnVmLCAmY250KTsKKwkJcHN0ci0+bGVuID0gKFVJTlQ4KSBjbnQ7CisJCW1lbWNweShwc3RyLT5kYXRhLCAmd29yZGJ1ZlsxXSwgcHN0ci0+bGVuKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX3dlcGRlZmF1bHRrZXkKKyoKKyogR2V0L3NldCBXRVAgZGVmYXVsdCBrZXlzLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIFByaXNtMiBSSUQgdmFsdWUuCisqICAgICAgIHBhcm0yICAgIE51bWJlciBvZiBieXRlcyBvZiBSSUQgZGF0YS4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3dlcGRlZmF1bHRrZXkoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgICAgICAgICByZXN1bHQ7CisJcDgwMjExcHN0cmRfdCAgKnBzdHIgPSAocDgwMjExcHN0cmRfdCopIGRhdGE7CisJVUlOVDggICAgICAgICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJVUlOVDE2ICAgICAgICAgbGVuOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gMDsgICAgLyogU2hvdWxkIG5ldmVyIGhhcHBlbi4gKi8KKwl9IGVsc2UgeworCQlsZW4gPSAocHN0ci0+bGVuID4gNSkgPyBIRkEzODR4X1JJRF9DTkZXRVAxMjhERUZBVUxUS0VZX0xFTiA6CisJCQkJCUhGQTM4NHhfUklEX0NORldFUERFRkFVTFRLRVlfTEVOOworCQltZW1zZXQoYnl0ZWJ1ZiwgMCwgbGVuKTsKKwkJcHJpc20ybWdtdF9wc3RyMmJ5dGVhcmVhKGJ5dGVidWYsIHBzdHIpOworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBtaWItPnBhcm0xLCBieXRlYnVmLCBsZW4pOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfcG93ZXJtYW5hZ2VtZW50CisqCisqIEdldC9zZXQgODAyLjExIHBvd2VyIG1hbmFnZW1lbnQgdmFsdWUuICBOb3RlIHRoYXQgdGhpcyBpcyBkZWZpbmVkIGRpZmZlcmVudGx5CisqIGJ5IDgwMi4xMSBhbmQgUHJpc20yOgorKgorKiAgICAgICBNZWFuaW5nICAgICA4MDIuMTEgICAgICAgUHJpc20yCisqICAgICAgICBhY3RpdmUgICAgICAgMSAgICAgICAgICAgZmFsc2UKKyogICAgICBwb3dlcnNhdmUgICAgICAyICAgICAgICAgICB0cnVlCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgUHJpc20yIFJJRCB2YWx1ZS4KKyogICAgICAgcGFybTIgICAgTm90IHVzZWQuCisqICAgICAgIHBhcm0zICAgIE5vdCB1c2VkLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl9wb3dlcm1hbmFnZW1lbnQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlVSU5UMzIgIHZhbHVlOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gcHJpc20ybWliX3VpbnQzMihtaWIsIGlzZ2V0LCB3bGFuZGV2LCBodywgbXNnLCAmdmFsdWUpOworCQkqdWludDMyID0gKHZhbHVlID09IDApID8gMSA6IDI7CisJfSBlbHNlIHsKKwkJdmFsdWUgPSAoKCp1aW50MzIpID09IDEpID8gMCA6IDE7CisJCXJlc3VsdCA9IHByaXNtMm1pYl91aW50MzIobWliLCBpc2dldCwgd2xhbmRldiwgaHcsIG1zZywgJnZhbHVlKTsKKwl9CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX3ByZWFtYmxlCisqCisqIEdldC9zZXQgUHJpc20yIHNob3J0IHByZWFtYmxlCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgUHJpc20yIFJJRCB2YWx1ZS4KKyogICAgICAgcGFybTIgICAgTm90IHVzZWQuCisqICAgICAgIHBhcm0zICAgIE5vdCB1c2VkLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl9wcmVhbWJsZSgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCWludCAgICAgcmVzdWx0OworCVVJTlQzMiAgKnVpbnQzMiA9IChVSU5UMzIqKSBkYXRhOworCVVJTlQ4ICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJVUlOVDE2ICAqd29yZGJ1ZiA9IChVSU5UMTYqKSBieXRlYnVmOworCisJREJGRU5URVI7CisKKwlpZiAoaXNnZXQpIHsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZzE2KGh3LCBtaWItPnBhcm0xLCB3b3JkYnVmKTsKKwkJKnVpbnQzMiA9ICp3b3JkYnVmOworCX0gZWxzZSB7CisJCSp3b3JkYnVmID0gKnVpbnQzMjsKKwkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LCBtaWItPnBhcm0xLCAqd29yZGJ1Zik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl9wcml2YWN5aW52b2tlZAorKgorKiBHZXQvc2V0IHRoZSBkb3QxMVByaXZhY3lJbnZva2VkIHZhbHVlLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIFByaXNtMiBSSUQgdmFsdWUuCisqICAgICAgIHBhcm0yICAgIEJpdCB2YWx1ZSBmb3IgUHJpdmFjeUludm9rZWQgZmxhZy4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX3ByaXZhY3lpbnZva2VkKAorbWlicmVjX3QgICAgICAgICAgICAgICAgICAgICAqbWliLAoraW50ICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dldCwKK3dsYW5kZXZpY2VfdCAgICAgICAgICAgICAgICAgKndsYW5kZXYsCitoZmEzODR4X3QgICAgICAgICAgICAgICAgICAgICpodywKK3A4MDIxMW1zZ19kb3QxMXJlcV9taWJzZXRfdCAgKm1zZywKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEpCit7CisJaW50ICAgICByZXN1bHQ7CisKKwlEQkZFTlRFUjsKKworCWlmICh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9ERUNSWVBUKSB7CisJCWlmICh3bGFuZGV2LT5ob3N0d2VwICYgSE9TVFdFUF9ERUNSWVBUKQorCQkJbWliLT5wYXJtMiB8PSBIRkEzODR4X1dFUEZMQUdTX0RJU0FCTEVfUlhDUllQVDsKKwkJaWYgKHdsYW5kZXYtPmhvc3R3ZXAgJiBIT1NUV0VQX0VOQ1JZUFQpCisJCQltaWItPnBhcm0yIHw9IEhGQTM4NHhfV0VQRkxBR1NfRElTQUJMRV9UWENSWVBUOworCX0KKworCXJlc3VsdCA9IHByaXNtMm1pYl9mbGFnKG1pYiwgaXNnZXQsIHdsYW5kZXYsIGh3LCBtc2csIGRhdGEpOworCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl9leGNsdWRldW5lbmNyeXB0ZWQKKyoKKyogR2V0L3NldCB0aGUgZG90MTFFeGNsdWRlVW5lbmNyeXB0ZWQgdmFsdWUuCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgUHJpc20yIFJJRCB2YWx1ZS4KKyogICAgICAgcGFybTIgICAgQml0IHZhbHVlIGZvciBFeGNsdWRlVW5lbmNyeXB0ZWQgZmxhZy4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2V4Y2x1ZGV1bmVuY3J5cHRlZCgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCWludCAgICAgcmVzdWx0OworCisJREJGRU5URVI7CisKKwlyZXN1bHQgPSBwcmlzbTJtaWJfZmxhZyhtaWIsIGlzZ2V0LCB3bGFuZGV2LCBodywgbXNnLCBkYXRhKTsKKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfZnJhZ21lbnRhdGlvbnRocmVzaG9sZAorKgorKiBHZXQvc2V0IHRoZSBmcmFnbWVudGF0aW9uIHRocmVzaG9sZC4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2ZyYWdtZW50YXRpb250aHJlc2hvbGQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKworCURCRkVOVEVSOworCisJaWYgKCFpc2dldCkKKwkJaWYgKCgqdWludDMyKSAlIDIpIHsKKwkJCVdMQU5fTE9HX1dBUk5JTkcoIkF0dGVtcHQgdG8gc2V0IG9kZCBudW1iZXIgIgorCQkJCQkgICJGcmFnbWVudGF0aW9uVGhyZXNob2xkXG4iKTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJCQlyZXR1cm4oMCk7CisJCX0KKworCXJlc3VsdCA9IHByaXNtMm1pYl91aW50MzIobWliLCBpc2dldCwgd2xhbmRldiwgaHcsIG1zZywgZGF0YSk7CisKKwlEQkZFWElUOworCXJldHVybihyZXN1bHQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX29wZXJhdGlvbmFscmF0ZXNldAorKgorKiBHZXQvc2V0IHRoZSBvcGVyYXRpb25hbCByYXRlIHNldC4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBQcmlzbTIgUklEIHZhbHVlLgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX29wZXJhdGlvbmFscmF0ZXNldCgKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCWludCAgICAgICAgICAgIHJlc3VsdDsKKwlwODAyMTFwc3RyZF90ICAqcHN0ciA9IChwODAyMTFwc3RyZF90ICopIGRhdGE7CisJVUlOVDggICAgICAgICAgYnl0ZWJ1ZltNSUJfVE1QX01BWExFTl07CisJVUlOVDE2ICAgICAgICAgKndvcmRidWYgPSAoVUlOVDE2KikgYnl0ZWJ1ZjsKKworCURCRkVOVEVSOworCisJaWYgKGlzZ2V0KSB7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywgbWliLT5wYXJtMSwgd29yZGJ1Zik7CisJCXByaXNtMm1nbXRfZ2V0X29wcmF0ZXNldCh3b3JkYnVmLCBwc3RyKTsKKwl9IGVsc2UgeworCQlwcmlzbTJtZ210X3NldF9vcHJhdGVzZXQod29yZGJ1ZiwgcHN0cik7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgbWliLT5wYXJtMSwgKndvcmRidWYpOworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX0NORlNVUFBSQVRFUywgKndvcmRidWYpOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfZ3JvdXBhZGRyZXNzCisqCisqIEdldC9zZXQgdGhlIGRvdDExR3JvdXBBZGRyZXNzZXNUYWJsZS4KKyoKKyogTUlCIHJlY29yZCBwYXJhbWV0ZXJzOgorKiAgICAgICBwYXJtMSAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTIgICAgTm90IHVzZWQuCisqICAgICAgIHBhcm0zICAgIE5vdCB1c2VkLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIG1pYiAgICAgIE1JQiByZWNvcmQuCisqICAgICAgIGlzZ2V0ICAgIE1JQkdFVC9NSUJTRVQgZmxhZy4KKyogICAgICAgd2xhbmRldiAgd2xhbiBkZXZpY2Ugc3RydWN0dXJlLgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbXNnICAgICAgTWVzc2FnZSBzdHJ1Y3R1cmUuCisqICAgICAgIGRhdGEgICAgIERhdGEgYnVmZmVyLgorKgorKiBSZXR1cm5zOgorKiAgICAgICAwICAgLSBTdWNjZXNzLgorKiAgICAgICB+MCAgLSBFcnJvci4KKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgaW50IHByaXNtMm1pYl9ncm91cGFkZHJlc3MoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgICAgICAgICByZXN1bHQ7CisJcDgwMjExcHN0cmRfdCAgKnBzdHIgPSAocDgwMjExcHN0cmRfdCAqKSBkYXRhOworCVVJTlQ4ICAgICAgICAgIGJ5dGVidWZbTUlCX1RNUF9NQVhMRU5dOworCVVJTlQxNiAgICAgICAgIGxlbjsKKworCURCRkVOVEVSOworCisJLyogVE9ETzogZml4IHRoaXMuICBmL3cgZG9lc24ndCBzdXBwb3J0IG1jYXN0IGZpbHRlcnMgKi8KKworCWlmIChpc2dldCkgeworCQlwcmlzbTJtZ210X2dldF9ncnBhZGRyKG1pYi0+ZGlkLCBwc3RyLCBodyk7CisJCXJldHVybigwKTsKKwl9CisKKwlyZXN1bHQgPSBwcmlzbTJtZ210X3NldF9ncnBhZGRyKG1pYi0+ZGlkLCBieXRlYnVmLCBwc3RyLCBodyk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJCXJldHVybihyZXN1bHQpOworCX0KKworCWlmIChody0+ZG90MTFfZ3JwY250IDw9IE1BWF9QUklTTTJfR1JQX0FERFIpIHsKKwkJbGVuID0gaHctPmRvdDExX2dycGNudCAqIFdMQU5fQUREUl9MRU47CisJCW1lbWNweShieXRlYnVmLCBody0+ZG90MTFfZ3JwX2FkZHJbMF0sIGxlbik7CisJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0dST1VQQUREUiwgYnl0ZWJ1ZiwgbGVuKTsKKworCQkvKgorCQkqKiBUdXJuIG9mZiBwcm9taXNjdW91cyBtb2RlIGlmIGNvdW50IGlzIGVxdWFsIHRvIE1BWC4gIFdlIG1heQorCQkqKiBoYXZlIGJlZW4gYXQgYSBoaWdoZXIgY291bnQgaW4gcHJvbWlzY3VvdXMgbW9kZSBhbmQgbmVlZCB0bworCQkqKiB0dXJuIGl0IG9mZi4KKwkJKi8KKworCQkvKiBidXQgb25seSBpZiB3ZSdyZSBub3QgYWxyZWFkeSBpbiBwcm9taXNjIG1vZGUuIDopICovCisJCWlmICgoaHctPmRvdDExX2dycGNudCA9PSBNQVhfUFJJU00yX0dSUF9BRERSKSAmJgorCQkgICAgISggd2xhbmRldi0+bmV0ZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSkgeworCQkJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3NldGNvbmZpZzE2KGh3LAorCQkJCQkgICAgIEhGQTM4NHhfUklEX1BST01JU0NNT0RFLCAwKTsKKwkJfQorCX0gZWxzZSB7CisKKwkJLyoKKwkJKiogQ2xlYXIgZ3JvdXAgYWRkcmVzc2VzIGluIGNhcmQgYW5kIHNldCB0byBwcm9taXNjdW91cyBtb2RlLgorCQkqLworCisJCW1lbXNldChieXRlYnVmLCAwLCBzaXplb2YoYnl0ZWJ1ZikpOworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9HUk9VUEFERFIsCisJCQkJCQlieXRlYnVmLCAwKTsKKwkJaWYgKHJlc3VsdCA9PSAwKSB7CisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnMTYoaHcsCisJCQkJCUhGQTM4NHhfUklEX1BST01JU0NNT0RFLCAxKTsKKwkJfQorCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfZndpZAorKgorKiBHZXQgdGhlIGZpcm13YXJlIElELgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIE5vdCB1c2VkLgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2Z3aWQoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgICAgICAgICAgcmVzdWx0OworCXA4MDIxMXBzdHJkX3QgICAqcHN0ciA9IChwODAyMTFwc3RyZF90ICopIGRhdGE7CisJaGZhMzg0eF9GV0lEX3QgIGZ3aWQ7CisKKwlEQkZFTlRFUjsKKworCWlmIChpc2dldCkgeworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9GV0lELAorCQkJCQkJJmZ3aWQsIEhGQTM4NHhfUklEX0ZXSURfTEVOKTsKKwkJaWYgKG1pYi0+ZGlkID09IERJRG1pYl9wMl9wMk5JQ19wMlByaW1hcnlGV0lEKSB7CisJCQlmd2lkLnByaW1hcnlbSEZBMzg0eF9GV0lEX0xFTiAtIDFdID0gJ1wwJzsKKwkJCXBzdHItPmxlbiA9IHN0cmxlbihmd2lkLnByaW1hcnkpOworCQkJbWVtY3B5KHBzdHItPmRhdGEsIGZ3aWQucHJpbWFyeSwgcHN0ci0+bGVuKTsKKwkJfSBlbHNlIHsKKwkJCWZ3aWQuc2Vjb25kYXJ5W0hGQTM4NHhfRldJRF9MRU4gLSAxXSA9ICdcMCc7CisJCQlwc3RyLT5sZW4gPSBzdHJsZW4oZndpZC5zZWNvbmRhcnkpOworCQkJbWVtY3B5KHBzdHItPmRhdGEsIGZ3aWQuc2Vjb25kYXJ5LCBwc3RyLT5sZW4pOworCQl9CisJfSBlbHNlCisJCXJlc3VsdCA9IDA7ICAgICAvKiBTaG91bGQgbmV2ZXIgaGFwcGVuLiAqLworCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl9hdXRoYWxnCisqCisqIEdldCB2YWx1ZXMgZnJvbSB0aGUgQXVodGVudGljYXRpb25BbGdvcml0aG1zVGFibGUuCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgVGFibGUgaW5kZXggKDEtNikuCisqICAgICAgIHBhcm0yICAgIE5vdCB1c2VkLgorKiAgICAgICBwYXJtMyAgICBOb3QgdXNlZC4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBtaWIgICAgICBNSUIgcmVjb3JkLgorKiAgICAgICBpc2dldCAgICBNSUJHRVQvTUlCU0VUIGZsYWcuCisqICAgICAgIHdsYW5kZXYgIHdsYW4gZGV2aWNlIHN0cnVjdHVyZS4KKyogICAgICAgcHJpdiAgICAgInByaXYiIHN0cnVjdHVyZS4KKyogICAgICAgaHcgICAgICAgImh3IiBzdHJ1Y3R1cmUuCisqICAgICAgIG1zZyAgICAgIE1lc3NhZ2Ugc3RydWN0dXJlLgorKiAgICAgICBkYXRhICAgICBEYXRhIGJ1ZmZlci4KKyoKKyogUmV0dXJuczoKKyogICAgICAgMCAgIC0gU3VjY2Vzcy4KKyogICAgICAgfjAgIC0gRXJyb3IuCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBwcmlzbTJtaWJfYXV0aGFsZygKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCVVJTlQzMiAgKnVpbnQzMiA9IChVSU5UMzIqKSBkYXRhOworCisJREJGRU5URVI7CisKKwkvKiBNU006IHBreCBzdXBwbGllZCBjb2RlIHRoYXQgIGNvZGUgcXVlcmllcyBSSUQgRkQ0RC4uLi5idXQgdGhlIGYvdydzCisgICAgICAgICAqICByZXN1bHRzIGFyZSBib2d1cy4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvIHNpbXVsYXRlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgKiAgcmVzdWx0cyBoZXJlIGluIHRoZSBkcml2ZXIgYmFzZWQgb24gb3VyIGtub3dsZWRnZSBvZiBleGlzdGluZyBNQUMKKyAgICAgICAgICogIGZlYXR1cmVzLiAgVGhhdCdzIHRoZSB3aG9sZSBwb2ludCBiZWhpbmQgdGhpcyB1Z2x5IGZ1bmN0aW9uLgorICAgICAgICAgKi8KKworCWlmIChpc2dldCkgeworCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCQlzd2l0Y2ggKG1pYi0+cGFybTEpIHsKKwkJCWNhc2UgMTogLyogT3BlbiBTeXN0ZW0gKi8KKwkJCQkqdWludDMyID0gUDgwMjExRU5VTV9hdXRoYWxnX29wZW5zeXN0ZW07CisJCQkJYnJlYWs7CisJCQljYXNlIDI6IC8qIFNoYXJlZEtleSAqLworCQkJCSp1aW50MzIgPSBQODAyMTFFTlVNX2F1dGhhbGdfc2hhcmVka2V5OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQkqdWludDMyID0gMDsKKwkJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQkJCWJyZWFrOworCQl9CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4oMCk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfYXV0aGFsZ2VuYWJsZQorKgorKiBHZXQvc2V0IHRoZSBlbmFibGUgdmFsdWVzIGZyb20gdGhlIEF1aHRlbnRpY2F0aW9uQWxnb3JpdGhtc1RhYmxlLgorKgorKiBNSUIgcmVjb3JkIHBhcmFtZXRlcnM6CisqICAgICAgIHBhcm0xICAgIFRhYmxlIGluZGV4ICgxLTYpLgorKiAgICAgICBwYXJtMiAgICBOb3QgdXNlZC4KKyogICAgICAgcGFybTMgICAgTm90IHVzZWQuCisqCisqIEFyZ3VtZW50czoKKyogICAgICAgbWliICAgICAgTUlCIHJlY29yZC4KKyogICAgICAgaXNnZXQgICAgTUlCR0VUL01JQlNFVCBmbGFnLgorKiAgICAgICB3bGFuZGV2ICB3bGFuIGRldmljZSBzdHJ1Y3R1cmUuCisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGh3ICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtc2cgICAgICBNZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgZGF0YSAgICAgRGF0YSBidWZmZXIuCisqCisqIFJldHVybnM6CisqICAgICAgIDAgICAtIFN1Y2Nlc3MuCisqICAgICAgIH4wICAtIEVycm9yLgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgcHJpc20ybWliX2F1dGhhbGdlbmFibGUoCittaWJyZWNfdCAgICAgICAgICAgICAgICAgICAgICptaWIsCitpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ2V0LAord2xhbmRldmljZV90ICAgICAgICAgICAgICAgICAqd2xhbmRldiwKK2hmYTM4NHhfdCAgICAgICAgICAgICAgICAgICAgKmh3LAorcDgwMjExbXNnX2RvdDExcmVxX21pYnNldF90ICAqbXNnLAordm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSkKK3sKKwlpbnQgICAgIHJlc3VsdDsKKwlVSU5UMzIgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKworCWludCAgICAgaW5kZXg7CisJVUlOVDE2ICBjbmZfYXV0aDsKKwlVSU5UMTYJbWFzazsKKworCURCRkVOVEVSOworCisJaW5kZXggPSBtaWItPnBhcm0xIC0gMTsKKworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNiggaHcsCisJCQlIRkEzODR4X1JJRF9DTkZBVVRIRU5USUNBVElPTiwgJmNuZl9hdXRoKTsKKwlXTEFOX0xPR19ERUJVRygyLCJjbmZBdXRoZW50aWNhdGlvbjA9JWQsIGluZGV4PSVkXG4iLCBjbmZfYXV0aCwgaW5kZXgpOworCisJaWYgKGlzZ2V0KSB7CisJCWlmICggaW5kZXggPT0gMCB8fCBpbmRleCA9PSAxICkgeworCQkJKnVpbnQzMiA9IChjbmZfYXV0aCAmICgxPDxpbmRleCkpID8KKwkJCQlQODAyMTFFTlVNX3RydXRoX3RydWU6IFA4MDIxMUVOVU1fdHJ1dGhfZmFsc2U7CisJCX0gZWxzZSB7CisJCQkqdWludDMyID0gUDgwMjExRU5VTV90cnV0aF9mYWxzZTsKKwkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX25vdF9zdXBwb3J0ZWQ7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIGluZGV4ID09IDAgfHwgaW5kZXggPT0gMSApIHsKKwkJCW1hc2sgPSAxIDw8IGluZGV4OworCQkJaWYgKCp1aW50MzI9PVA4MDIxMUVOVU1fdHJ1dGhfdHJ1ZSApIHsKKwkJCQljbmZfYXV0aCB8PSBtYXNrOworCQkJfSBlbHNlIHsKKwkJCQljbmZfYXV0aCAmPSB+bWFzazsKKwkJCX0KKwkJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNiggaHcsCisJCQkJCUhGQTM4NHhfUklEX0NORkFVVEhFTlRJQ0FUSU9OLCBjbmZfYXV0aCk7CisJCQlXTEFOX0xPR19ERUJVRygyLCJjbmZBdXRoZW50aWNhdGlvbjo9JWRcbiIsIGNuZl9hdXRoKTsKKwkJCWlmICggcmVzdWx0ICkgeworCQkJCVdMQU5fTE9HX0RFQlVHKDEsIlVuYWJsZSB0byBzZXQgcDJjbmZBdXRoZW50aWNhdGlvbiB0byAlZFxuIiwgY25mX2F1dGgpOworCQkJCW1zZy0+cmVzdWx0Y29kZS5kYXRhID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCQl9CisJCX0gZWxzZSB7CisJCQltc2ctPnJlc3VsdGNvZGUuZGF0YSA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9ub3Rfc3VwcG9ydGVkOworCQl9CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4ocmVzdWx0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl9wcml2CisqCisqIEdldC9zZXQgdmFsdWVzIGluIHRoZSAicHJpdiIgZGF0YSBzdHJ1Y3R1cmUuCisqCisqIE1JQiByZWNvcmQgcGFyYW1ldGVyczoKKyogICAgICAgcGFybTEgICAgTm90IHVzZWQuCisqICAgICAgIHBhcm0yICAgIE5vdCB1c2VkLgorKiAgICAgICBwYXJtMyAgICBOb3QgdXNlZC4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBtaWIgICAgICBNSUIgcmVjb3JkLgorKiAgICAgICBpc2dldCAgICBNSUJHRVQvTUlCU0VUIGZsYWcuCisqICAgICAgIHdsYW5kZXYgIHdsYW4gZGV2aWNlIHN0cnVjdHVyZS4KKyogICAgICAgcHJpdiAgICAgInByaXYiIHN0cnVjdHVyZS4KKyogICAgICAgaHcgICAgICAgImh3IiBzdHJ1Y3R1cmUuCisqICAgICAgIG1zZyAgICAgIE1lc3NhZ2Ugc3RydWN0dXJlLgorKiAgICAgICBkYXRhICAgICBEYXRhIGJ1ZmZlci4KKyoKKyogUmV0dXJuczoKKyogICAgICAgMCAgIC0gU3VjY2Vzcy4KKyogICAgICAgfjAgIC0gRXJyb3IuCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIGludCBwcmlzbTJtaWJfcHJpdigKK21pYnJlY190ICAgICAgICAgICAgICAgICAgICAgKm1pYiwKK2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgaXNnZXQsCit3bGFuZGV2aWNlX3QgICAgICAgICAgICAgICAgICp3bGFuZGV2LAoraGZhMzg0eF90ICAgICAgICAgICAgICAgICAgICAqaHcsCitwODAyMTFtc2dfZG90MTFyZXFfbWlic2V0X3QgICptc2csCit2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhKQoreworCVVJTlQzMiAgICAgICAgICAgICp1aW50MzIgPSAoVUlOVDMyKikgZGF0YTsKKwlwODAyMTFwc3RyZF90ICAgICAqcHN0ciA9IChwODAyMTFwc3RyZF90KikgZGF0YTsKKwlwODAyMTFtYWNhcnJheV90ICAqbWFjYXJyYXkgPSAocDgwMjExbWFjYXJyYXlfdCAqKSBkYXRhOworCisJaW50ICBpLCBjbnQsIHJlc3VsdCwgZG9uZTsKKworCXByaXNtMnN0YV9hdXRobGlzdF90ICBvbGQ7CisKKwkvKgorCSoqICJ0ZXN0IiBpcyBhIGxvdCBsb25nZXIgdGhhbiBuZWNlc3NhcnkgYnV0IHdobyBjYXJlcz8gIC4uLmFzIGxvbmcgYXMKKwkqKiBpdCBpcyBsb25nIGVub3VnaCEKKwkqLworCisJVUlOVDggIHRlc3Rbc2l6ZW9mKHdsYW5kZXYtPnJ4KSArIHNpemVvZihody0+dGFsbGllcyldOworCisJREJGRU5URVI7CisKKwlzd2l0Y2ggKG1pYi0+ZGlkKSB7CisJY2FzZSBESURtaWJfcDJfcDJUYWJsZV9wMlJlY2VpdmVkRnJhbWVTdGF0aXN0aWNzOgorCisJCS8qCisJCSoqIE5vdGU6IFRoZSB2YWx1ZXMgaW4gdGhpcyByZWNvcmQgYXJlIGNoYW5nZWQgYnkgdGhlCisJCSoqIGludGVycnVwdCBoYW5kbGVyIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIGd1YXJhbnRlZWQKKwkJKiogdG8gYmUgc3RhYmxlIHdoaWxlIHRoZXkgYXJlIGJlaW5nIGNvcGllZC4gIEhvd2V2ZXIsCisJCSoqIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3aWxsIHRha2UgcHJpb3JpdHkgb3ZlciB0aGlzCisJCSoqIGNvZGUuICBIZW5jZSwgaWYgdGhlIHNhbWUgdmFsdWVzIGFyZSBjb3BpZWQgdHdpY2UsCisJCSoqIHRoZW4gd2UgYXJlIGVuc3VyZWQgdGhhdCB0aGUgdmFsdWVzIGhhdmUgbm90IGJlZW4KKwkJKiogY2hhbmdlZC4gIElmIHRoZXkgaGF2ZSwgdGhlbiBqdXN0IHRyeSBhZ2Fpbi4gIERvbid0CisJCSoqIHRyeSBtb3JlIHRoYW4gMTAgdGltZXMuLi5pZiB3ZSBzdGlsbCBoYXZlbid0IGdvdCBpdCwKKwkJKiogdGhlbiB0aGUgdmFsdWVzIHdlIGRvIGhhdmUgYXJlIHByb2JhYmx5IGdvb2QgZW5vdWdoLgorCQkqKiBUaGlzIHNjaGVtZSBmb3IgY29weWluZyB2YWx1ZXMgaXMgdXNlZCBpbiBvcmRlciB0bworCQkqKiBwcmV2ZW50IGhhdmluZyB0byBibG9jayB0aGUgaW50ZXJydXB0IGhhbmRsZXIgd2hpbGUKKwkJKiogd2UgY29weSB0aGUgdmFsdWVzLgorCQkqLworCisJCWlmIChpc2dldCkKKwkJCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCQkJbWVtY3B5KGRhdGEsICZ3bGFuZGV2LT5yeCwgc2l6ZW9mKHdsYW5kZXYtPnJ4KSk7CisJCQkJbWVtY3B5KHRlc3QsICZ3bGFuZGV2LT5yeCwgc2l6ZW9mKHdsYW5kZXYtPnJ4KSk7CisJCQkJaWYgKG1lbWNtcChkYXRhLCB0ZXN0LCBzaXplb2Yod2xhbmRldi0+cngpKSA9PSAwKSBicmVhazsKKwkJCX0KKworCQlicmVhazsKKworCWNhc2UgRElEbWliX3AyX3AyVGFibGVfcDJDb21tdW5pY2F0aW9uVGFsbGllczoKKworCQkvKgorCQkqKiBOb3RlOiBUaGUgdmFsdWVzIGluIHRoaXMgcmVjb3JkIGFyZSBjaGFuZ2VkIGJ5IHRoZQorCQkqKiBpbnRlcnJ1cHQgaGFuZGxlciBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBndWFyYW50ZWVkCisJCSoqIHRvIGJlIHN0YWJsZSB3aGlsZSB0aGV5IGFyZSBiZWluZyBjb3BpZWQuICBTZWUgdGhlCisJCSoqIG5vdGUgYWJvdmUgYWJvdXQgY29weWluZyB2YWx1ZXMuCisJCSovCisKKwkJaWYgKGlzZ2V0KSB7CisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfY29tbXRhbGxpZXMoaHcpOworCisJCQkvKiA/Pz8/Pz8gV2UgbmVlZCB0byB3YWl0IGEgYml0IGhlcmUgZm9yIHRoZSAqLworCQkJLyogICB0YWxsaWVzIHRvIGdldCB1cGRhdGVkLiA/Pz8/Pz8gKi8KKwkJCS8qIE1TTTogVE9ETzogVGhlIHJpZ2h0IHdheSB0byBkbyB0aGlzIGlzIHRvCisJCQkgKiAgICAgIGFkZCBhICJjb21tdGFsbGllIiB3YWl0IHF1ZXVlIHRvIHRoZQorCQkJICogICAgICBwcml2IHN0cnVjdHVyZSB0aGF0IGdldHMgcnVuIGV2ZXJ5IHRpbWUKKwkJCSAqICAgICAgd2UgcmVjZWl2ZSBhIGNvbW10YWxseSBpbmZvIGZyYW1lLgorCQkJICogICAgICBUaGlzIHByb2Nlc3Mgd291bGQgc2xlZXAgb24gdGhhdAorCQkJICogICAgICBxdWV1ZSBhbmQgZ2V0IGF3YWtlbmVkIHdoZW4gdGhlCisJCQkgKiAgICAgIHRoZSByZXF1ZXN0ZWQgaW5mbyBmcmFtZSBhcnJpdmVzLgorCQkJICogICAgICBEb24ndCBoYXZlIHRpbWUgdG8gZG8gYW5kIHRlc3QgdGhpcworCQkJICogICAgICByaWdodCBub3cuCisJCQkgKi8KKworCQkJLyogVWdoLCB0aGlzIGlzIG5hc3R5LiAqLworCQkJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJCQltZW1jcHkoZGF0YSwKKwkJCQkgICAgICAgJmh3LT50YWxsaWVzLAorCQkJCSAgICAgICBzaXplb2YoaHctPnRhbGxpZXMpKTsKKwkJCQltZW1jcHkodGVzdCwKKwkJCQkgICAgICAgJmh3LT50YWxsaWVzLAorCQkJCSAgICAgICBzaXplb2YoaHctPnRhbGxpZXMpKTsKKwkJCQlpZiAoIG1lbWNtcChkYXRhLAorCQkJCQkgICAgdGVzdCwKKwkJCQkJICAgIHNpemVvZihody0+dGFsbGllcykpID09IDApCisJCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIERJRG1pYl9wMl9wMlRhYmxlX3AyQXV0aGVudGljYXRlZDoKKworCQlpZiAoaXNnZXQpIHsKKwkJCXByaXNtMm1pYl9wcml2X2F1dGhsaXN0KGh3LCAmb2xkKTsKKworCQkJbWFjYXJyYXktPmNudCA9IDA7CisJCQlmb3IgKGkgPSAwOyBpIDwgb2xkLmNudDsgaSsrKSB7CisJCQkJaWYgKCFvbGQuYXNzb2NbaV0pIHsKKwkJCQkJbWVtY3B5KG1hY2FycmF5LT5kYXRhW21hY2FycmF5LT5jbnRdLCBvbGQuYWRkcltpXSwgV0xBTl9BRERSX0xFTik7CisJCQkJCW1hY2FycmF5LT5jbnQrKzsKKwkJCQl9CisJCQl9CisJCX0KKworCQlicmVhazsKKworCWNhc2UgRElEbWliX3AyX3AyVGFibGVfcDJBc3NvY2lhdGVkOgorCisJCWlmIChpc2dldCkgeworCQkJcHJpc20ybWliX3ByaXZfYXV0aGxpc3QoaHcsICZvbGQpOworCisJCQltYWNhcnJheS0+Y250ID0gMDsKKwkJCWZvciAoaSA9IDA7IGkgPCBvbGQuY250OyBpKyspIHsKKwkJCQlpZiAob2xkLmFzc29jW2ldKSB7CisJCQkJCW1lbWNweShtYWNhcnJheS0+ZGF0YVttYWNhcnJheS0+Y250XSwgb2xkLmFkZHJbaV0sIFdMQU5fQUREUl9MRU4pOworCQkJCQltYWNhcnJheS0+Y250Kys7CisJCQkJfQorCQkJfQorCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIERJRG1pYl9wMl9wMlRhYmxlX3AyUG93ZXJTYXZlVXNlckNvdW50OgorCisJCWlmIChpc2dldCkKKwkJCSp1aW50MzIgPSBody0+cHN1c2VyY291bnQ7CisKKwkJYnJlYWs7CisKKwljYXNlIERJRG1pYl9wMl9wMlRhYmxlX3AyQ29tbWVudDoKKworCQlpZiAoaXNnZXQpIHsKKwkJCXBzdHItPmxlbiA9IHN0cmxlbihody0+Y29tbWVudCk7CisJCQltZW1jcHkocHN0ci0+ZGF0YSwgaHctPmNvbW1lbnQsIHBzdHItPmxlbik7CisJCX0gZWxzZSB7CisJCQljbnQgPSBwc3RyLT5sZW47CisJCQlpZiAoY250IDwgMCkgY250ID0gMDsKKwkJCWlmIChjbnQgPj0gc2l6ZW9mKGh3LT5jb21tZW50KSkKKwkJCQljbnQgPSBzaXplb2YoaHctPmNvbW1lbnQpLTE7CisJCQltZW1jcHkoaHctPmNvbW1lbnQsIHBzdHItPmRhdGEsIGNudCk7CisJCQlwc3RyLT5kYXRhW2NudF0gPSAnXDAnOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIERJRG1pYl9wMl9wMlRhYmxlX3AyQWNjZXNzTW9kZToKKworCQlpZiAoaXNnZXQpCisJCQkqdWludDMyID0gaHctPmFjY2Vzc21vZGU7CisJCWVsc2UKKwkJCXByaXNtMm1pYl9wcml2X2FjY2Vzc21vZGUoaHcsICp1aW50MzIpOworCisJCWJyZWFrOworCisJY2FzZSBESURtaWJfcDJfcDJUYWJsZV9wMkFjY2Vzc0FsbG93OgorCisJCWlmIChpc2dldCkgeworCQkJbWFjYXJyYXktPmNudCA9IGh3LT5hbGxvdy5jbnQ7CisJCQltZW1jcHkobWFjYXJyYXktPmRhdGEsIGh3LT5hbGxvdy5hZGRyLAorCQkJICAgICAgIG1hY2FycmF5LT5jbnQqV0xBTl9BRERSX0xFTik7CisJCX0gZWxzZSB7CisJCQlwcmlzbTJtaWJfcHJpdl9hY2Nlc3NhbGxvdyhodywgbWFjYXJyYXkpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIERJRG1pYl9wMl9wMlRhYmxlX3AyQWNjZXNzRGVueToKKworCQlpZiAoaXNnZXQpIHsKKwkJCW1hY2FycmF5LT5jbnQgPSBody0+ZGVueS5jbnQ7CisJCQltZW1jcHkobWFjYXJyYXktPmRhdGEsIGh3LT5kZW55LmFkZHIsCisJCQkgICAgICAgbWFjYXJyYXktPmNudCpXTEFOX0FERFJfTEVOKTsKKwkJfSBlbHNlIHsKKwkJCXByaXNtMm1pYl9wcml2X2FjY2Vzc2RlbnkoaHcsIG1hY2FycmF5KTsKKwkJfQorCisJCWJyZWFrOworCisJY2FzZSBESURtaWJfcDJfcDJUYWJsZV9wMkNoYW5uZWxJbmZvUmVzdWx0czoKKworCQlpZiAoaXNnZXQpIHsKKwkJCWRvbmUgPSBhdG9taWNfcmVhZCgmaHctPmNoYW5uZWxfaW5mby5kb25lKTsKKwkJCWlmIChkb25lID09IDApIHsKKwkJCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19ub192YWx1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChkb25lID09IDEpIHsKKwkJCQltc2ctPnJlc3VsdGNvZGUuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19pbmNvbXBsZXRlX2l0ZW1kYXRhOworCQkJCWJyZWFrOworCQkJfQorCisJCQlmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKywgdWludDMyICs9IDUpIHsKKwkJCQl1aW50MzJbMF0gPSBpKzE7CisJCQkJdWludDMyWzFdID0gaHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtpXS5hbmw7CisJCQkJdWludDMyWzJdID0gaHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtpXS5wbmw7CisJCQkJdWludDMyWzNdID0gKGh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5yZXN1bHRbaV0uYWN0aXZlICYgSEZBMzg0eF9DSElORk9SRVNVTFRfQlNTQUNUSVZFKSA/IDEgOiAwOworCQkJCXVpbnQzMls0XSA9IChody0+Y2hhbm5lbF9pbmZvLnJlc3VsdHMucmVzdWx0W2ldLmFjdGl2ZSAmIEhGQTM4NHhfQ0hJTkZPUkVTVUxUX1BDRkFDVElWRSkgPyAxIDogMDsKKwkJCX0KKwkJfQorCisJCWJyZWFrOworCisJY2FzZSBESURtaWJfZG90MTFzbXRfZG90MTFTdGF0aW9uQ29uZmlnVGFibGVfZG90MTFEZXNpcmVkQlNTVHlwZToKKworCQlpZiAoaXNnZXQpCisJCQkqdWludDMyID0gaHctPmRvdDExX2Rlc2lyZWRfYnNzX3R5cGU7CisJCWVsc2UKKwkJCWh3LT5kb3QxMV9kZXNpcmVkX2Jzc190eXBlID0gKnVpbnQzMjsKKworCQlicmVhazsKKworCWNhc2UgRElEbWliX2xueF9sbnhDb25maWdUYWJsZV9sbnhSU05BSUU6IHsKKwkJaGZhMzg0eF9XUEFEYXRhX3Qgd3BhOworCQlpZiAoaXNnZXQpIHsKKwkJCWhmYTM4NHhfZHJ2cl9nZXRjb25maWcoIGh3LCBIRkEzODR4X1JJRF9DTkZXUEFEQVRBLAorCQkJCQkJKFVJTlQ4ICopICZ3cGEsIHNpemVvZih3cGEpKTsKKwkJCXBzdHItPmxlbiA9IGhmYTM4NHgyaG9zdF8xNih3cGEuZGF0YWxlbik7CisJCQltZW1jcHkocHN0ci0+ZGF0YSwgd3BhLmRhdGEsIHBzdHItPmxlbik7CisJCX0gZWxzZSB7CisJCQl3cGEuZGF0YWxlbiA9IGhvc3QyaGZhMzg0eF8xNihwc3RyLT5sZW4pOworCQkJbWVtY3B5KHdwYS5kYXRhLCBwc3RyLT5kYXRhLCBwc3RyLT5sZW4pOworCisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfc2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9DTkZXUEFEQVRBLAorCQkJCShVSU5UOCAqKSAmd3BhLCBzaXplb2Yod3BhKSk7CisJCX0KKwkJYnJlYWs7CisJfQorCWRlZmF1bHQ6CisJCVdMQU5fTE9HX0VSUk9SKCJVbmhhbmRsZWQgRElEIDB4JTA4eFxuIiwgbWliLT5kaWQpOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuKDApOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX3ByaXZfYXV0aGxpc3QKKyoKKyogR2V0IGEgY29weSBvZiB0aGUgbGlzdCBvZiBhdXRoZW50aWNhdGVkIHN0YXRpb25zLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIHByaXYgICAgICJwcml2IiBzdHJ1Y3R1cmUuCisqICAgICAgIGxpc3QgICAgIExpc3Qgb2YgYXV0aGVudGljYXRlZCBzdGF0aW9ucy4KKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyB2b2lkIHByaXNtMm1pYl9wcml2X2F1dGhsaXN0KAoraGZhMzg0eF90ICAgICAgICAgICAgICpodywKK3ByaXNtMnN0YV9hdXRobGlzdF90ICAqbGlzdCkKK3sKKwlwcmlzbTJzdGFfYXV0aGxpc3RfdCAgdGVzdDsKKwlpbnQgICAgICAgICAgICAgICAgICAgaTsKKworCURCRkVOVEVSOworCisJLyoKKwkqKiBOb3RlOiBUaGUgdmFsdWVzIGluIHRoaXMgcmVjb3JkIGFyZSBjaGFuZ2VkIGJ5IHRoZSBpbnRlcnJ1cHQKKwkqKiBoYW5kbGVyIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlIHdoaWxlCisJKiogdGhleSBhcmUgYmVpbmcgY29waWVkLiAgSG93ZXZlciwgdGhlIGludGVycnVwdCBoYW5kbGVyIHdpbGwKKwkqKiB0YWtlIHByaW9yaXR5IG92ZXIgdGhpcyBjb2RlLiAgSGVuY2UsIGlmIHRoZSBzYW1lIHZhbHVlcyBhcmUKKwkqKiBjb3BpZWQgdHdpY2UsIHRoZW4gd2UgYXJlIGVuc3VyZWQgdGhhdCB0aGUgdmFsdWVzIGhhdmUgbm90CisJKiogYmVlbiBjaGFuZ2VkLiAgSWYgdGhleSBoYXZlLCB0aGVuIGp1c3QgdHJ5IGFnYWluLiAgRG9uJ3QgdHJ5CisJKiogbW9yZSB0aGFuIDEwIHRpbWVzLi4udGhlIGxpc3Qgb2YgYXV0aGVudGljYXRlZCBzdGF0aW9ucyBpcworCSoqIHVubGlrZWx5IHRvIGJlIGNoYW5naW5nIGZyZXF1ZW50bHkgZW5vdWdoIHRoYXQgd2UgY2FuJ3QgZ2V0CisJKiogYSBzbmFwc2hvdCBpbiAxMCB0cmllcy4gIERvbid0IHRyeSBtb3JlIHRoYW4gdGhpcyBzbyB0aGF0IHdlCisJKiogZG9uJ3QgcmlzayBsb2NraW5nLXVwIGZvciBsb25nIHBlcmlvZHMgb2YgdGltZS4gIElmIHdlIHN0aWxsCisJKiogaGF2ZW4ndCBnb3QgdGhlIHNuYXBzaG90LCB0aGVuIGdlbmVyYXRlIGFuIGVycm9yIG1lc3NhZ2UgYW5kCisJKiogcmV0dXJuIGFuIGVtcHR5IGxpc3QgKHNpbmNlIHRoaXMgaXMgdGhlIG9ubHkgdmFsaWQgbGlzdCB0aGF0CisJKiogd2UgY2FuIGd1YXJlbnRlZSkuICBUaGlzIHNjaGVtZSBmb3IgY29weWluZyB2YWx1ZXMgaXMgdXNlZCBpbgorCSoqIG9yZGVyIHRvIHByZXZlbnQgaGF2aW5nIHRvIGJsb2NrIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3aGlsZQorCSoqIHdlIGNvcHkgdGhlIHZhbHVlcy4KKwkqLworCisJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJbWVtY3B5KGxpc3QsICZody0+YXV0aGxpc3QsIHNpemVvZihwcmlzbTJzdGFfYXV0aGxpc3RfdCkpOworCQltZW1jcHkoJnRlc3QsICZody0+YXV0aGxpc3QsIHNpemVvZihwcmlzbTJzdGFfYXV0aGxpc3RfdCkpOworCQlpZiAobWVtY21wKGxpc3QsICZ0ZXN0LCBzaXplb2YocHJpc20yc3RhX2F1dGhsaXN0X3QpKSA9PSAwKQorCQkJYnJlYWs7CisJfQorCisJaWYgKGkgPj0gMTApIHsKKwkJbGlzdC0+Y250ID0gMDsKKwkJV0xBTl9MT0dfRVJST1IoIkNvdWxkIG5vdCBvYnRhaW4gc25hcHNob3Qgb2YgYXV0aGVudGljYXRlZCBzdGF0aW9ucy5cbiIpOworCQl9CisKKwlEQkZFWElUOworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1pYl9wcml2X2FjY2Vzc21vZGUKKyoKKyogU2V0IHRoZSBBY2Nlc3MgTW9kZS4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgbW9kZSAgICAgTmV3IGFjY2VzcyBtb2RlLgorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIHZvaWQgcHJpc20ybWliX3ByaXZfYWNjZXNzbW9kZSgKK2hmYTM4NHhfdCAgICAgICAgICpodywKK1VJTlQzMiAgICAgICAgICAgIG1vZGUpCit7CisJcHJpc20yc3RhX2F1dGhsaXN0X3QgIG9sZDsKKwlpbnQgICAgICAgICAgICAgICAgICAgaSwgaiwgZGVhdXRoOworCVVJTlQ4ICAgICAgICAgICAgICAgICAqYWRkcjsKKworCURCRkVOVEVSOworCisJLyoKKwkqKiBJZiB0aGUgbW9kZSBpcyBub3QgY2hhbmdpbmcgb3IgaXQgaXMgY2hhbmdpbmcgdG8gIkFsbCIsIHRoZW4gaXQncworCSoqIG9rYXkgdG8gZ28gYWhlYWQgd2l0aG91dCBhIGxvdCBvZiBtZXNzaW5nIGFyb3VuZC4gIE90aGVyd2lzZSwgdGhlCisJKiogYWNjZXNzIG1vZGUgaXMgY2hhbmdpbmcgaW4gYSB3YXkgdGhhdCBtYXkgbGVhdmUgc29tZSBzdGF0aW9ucworCSoqIGF1dGhlbnRpY2F0ZWQgd2hpY2ggc2hvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkLiAgSXQgd2lsbCBiZQorCSoqIG5lY2Vzc2FyeSB0byBkZS1hdXRoZW50aWNhdGUgdGhlc2Ugc3RhdGlvbnMuCisJKi8KKworCWlmIChtb2RlID09IFdMQU5fQUNDRVNTX0FMTCB8fCBtb2RlID09IGh3LT5hY2Nlc3Ntb2RlKSB7CisJCWh3LT5hY2Nlc3Ntb2RlID0gbW9kZTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJKiogU3dpdGNoIHRvIHRoZSBuZXcgYWNjZXNzIG1vZGUuICBPbmNlIHRoaXMgaXMgZG9uZSwgdGhlbiB0aGUgaW50ZXJydXB0CisJKiogaGFuZGxlciAod2hpY2ggdXNlcyB0aGlzIHZhbHVlKSB3aWxsIGJlIHByZXZlbnRlZCBmcm9tIGF1dGhlbnRpY2F0aW5nCisJKiogQURESVRJT05BTCBzdGF0aW9ucyB3aGljaCBzaG91bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQuICBUaGVuIGdldCBhCisJKiogY29weSBvZiB0aGUgY3VycmVudCBsaXN0IG9mIGF1dGhlbnRpY2F0ZWQgc3RhdGlvbnMuCisJKi8KKworCWh3LT5hY2Nlc3Ntb2RlID0gbW9kZTsKKworCXByaXNtMm1pYl9wcml2X2F1dGhsaXN0KGh3LCAmb2xkKTsKKworCS8qCisJKiogTm93IGdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgcHJldmlvdXNseSBhdXRoZW50aWNhdGVkIHN0YXRpb25zIChzb21lCisJKiogb2Ygd2hpY2ggbWlnaHQgZGUtYXV0aGVudGljYXRlIHRoZW1zZWx2ZXMgd2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgaXQKKwkqKiBidXQgdGhhdCBpcyBva2F5KS4gIEFueSBzdGF0aW9uIHdoaWNoIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBhY2Nlc3MKKwkqKiBtb2RlLCBtdXN0IGJlIGRlLWF1dGhlbnRpY2F0ZWQuCisJKi8KKworCWZvciAoaSA9IDA7IGkgPCBvbGQuY250OyBpKyspIHsKKwkJYWRkciA9IG9sZC5hZGRyW2ldOworCisJCWlmIChtb2RlID09IFdMQU5fQUNDRVNTX05PTkUpCisJCQlkZWF1dGggPSAxOworCQllbHNlIHsKKwkJCWlmIChtb2RlID09IFdMQU5fQUNDRVNTX0FMTE9XKSB7CisJCQkJZm9yIChqID0gMDsgaiA8IGh3LT5hbGxvdy5jbnQ7IGorKykKKwkJCQkJaWYgKG1lbWNtcChhZGRyLCBody0+YWxsb3cuYWRkcltqXSwKKwkJCQkJCQlXTEFOX0FERFJfTEVOKSA9PSAwKQorCQkJCQkJYnJlYWs7CisJCQkJZGVhdXRoID0gKGogPj0gaHctPmFsbG93LmNudCk7CisJCQl9IGVsc2UgeworCQkJCWZvciAoaiA9IDA7IGogPCBody0+ZGVueS5jbnQ7IGorKykKKwkJCQkJaWYgKG1lbWNtcChhZGRyLCBody0+ZGVueS5hZGRyW2pdLAorCQkJCQkJCVdMQU5fQUREUl9MRU4pID09IDApCisJCQkJCQlicmVhazsKKwkJCQlkZWF1dGggPSAoaiA8IGh3LT5kZW55LmNudCk7CisJCQl9CisJCX0KKworCQlpZiAoZGVhdXRoKSBwcmlzbTJtaWJfcHJpdl9kZWF1dGhlbnRpY2F0ZShodywgYWRkcik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfcHJpdl9hY2Nlc3NhbGxvdworKgorKiBDaGFuZ2UgdGhlIGxpc3Qgb2YgYWxsb3dlZCBNQUMgYWRkcmVzc2VzLgorKgorKiBBcmd1bWVudHM6CisqICAgICAgIHByaXYgICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAgImh3IiBzdHJ1Y3R1cmUuCisqICAgICAgIG1hY2FycmF5ICBOZXcgYXJyYXkgb2YgTUFDIGFkZHJlc3Nlcy4KKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyB2b2lkIHByaXNtMm1pYl9wcml2X2FjY2Vzc2FsbG93KAoraGZhMzg0eF90ICAgICAgICAgKmh3LAorcDgwMjExbWFjYXJyYXlfdCAgKm1hY2FycmF5KQoreworCXByaXNtMnN0YV9hdXRobGlzdF90ICBvbGQ7CisJaW50ICAgICAgICAgICAgICAgICAgIGksIGo7CisKKwlEQkZFTlRFUjsKKworCS8qCisJKiogQ2hhbmdlIHRoZSBhY2Nlc3MgbGlzdC4gIE5vdGUgdGhhdCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgbWF5IGJlIGluCisJKiogdGhlIG1pZGRsZSBvZiB1c2luZyB0aGUgYWNjZXNzIGxpc3QhISEgIFNpbmNlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcgorCSoqIHdpbGwJYWx3YXlzIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGlzIHByb2Nlc3MgYW5kIHRoaXMgaXMgdGhlIG9ubHkKKwkqKiBwcm9jZXNzIHRoYXQgd2lsbCBtb2RpZnkgdGhlIGxpc3QsIHRoaXMgcHJvYmxlbSBjYW4gYmUgaGFuZGxlZCBhcworCSoqIGZvbGxvd3M6CisJKioKKwkqKiAgICAxLiBTZXQgdGhlICJtb2RpZnkiIGZsYWcuCisJKiogICAgMi4gQ2hhbmdlIHRoZSBmaXJzdCBjb3B5IG9mIHRoZSBsaXN0LgorCSoqICAgIDMuIENsZWFyIHRoZSAibW9kaWZ5IiBmbGFnLgorCSoqICAgIDQuIENoYW5nZSB0aGUgYmFja3VwIGNvcHkgb2YgdGhlIGxpc3QuCisJKioKKwkqKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgd2lsbCBjaGVjayB0aGUgIm1vZGlmeSIgZmxhZy4gIElmIE5PVCBzZXQsIHRoZW4KKwkqKiB0aGUgZmlyc3QgY29weSBvZiB0aGUgbGlzdCBpcyB2YWxpZCBhbmQgbWF5IGJlIHVzZWQuICBPdGhlcndpc2UsIHRoZQorCSoqIGZpcnN0IGNvcHkgaXMgYmVpbmcgY2hhbmdlZCBidXQgdGhlIGJhY2t1cCBjb3B5IGlzIHZhbGlkIGFuZCBtYXkgYmUKKwkqKiB1c2VkLiAgRG9pbmcgdGhpbmdzIHRoaXMgd2F5IHByZXZlbnRzIGhhdmluZyB0byBoYXZlIHRoZSBpbnRlcnJ1cHQKKwkqKiBoYW5kbGVyIGJsb2NrIHdoaWxlIHRoZSBsaXN0IGlzIGJlaW5nIHVwZGF0ZWQuCisJKi8KKworCWh3LT5hbGxvdy5tb2RpZnkgPSAxOworCisJaHctPmFsbG93LmNudCA9IG1hY2FycmF5LT5jbnQ7CisJbWVtY3B5KGh3LT5hbGxvdy5hZGRyLCBtYWNhcnJheS0+ZGF0YSwgbWFjYXJyYXktPmNudCpXTEFOX0FERFJfTEVOKTsKKworCWh3LT5hbGxvdy5tb2RpZnkgPSAwOworCisJaHctPmFsbG93LmNudDEgPSBtYWNhcnJheS0+Y250OworCW1lbWNweShody0+YWxsb3cuYWRkcjEsIG1hY2FycmF5LT5kYXRhLCBtYWNhcnJheS0+Y250KldMQU5fQUREUl9MRU4pOworCisJLyoKKwkqKiBJZiB0aGUgY3VycmVudCBhY2Nlc3MgbW9kZSBpcyAiQWxsb3ciLCB0aGVuIGNoYW5naW5nIHRoZSBhY2Nlc3MKKwkqKiBsaXN0IG1heSBsZWF2ZSBzb21lIHN0YXRpb25zIGF1dGhlbnRpY2F0ZWQgd2hpY2ggc2hvdWxkIG5vdCBiZQorCSoqIGF1dGhlbnRpY2F0ZWQuICBJdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byBkZS1hdXRoZW50aWNhdGUgdGhlc2UKKwkqKiBzdGF0aW9ucy4gIE90aGVyd2lzZSwgdGhlIGxpc3QgY2FuIGJlIGNoYW5nZWQgd2l0aG91dCBhIGxvdCBvZiBmdXNzLgorCSovCisKKwlpZiAoaHctPmFjY2Vzc21vZGUgPT0gV0xBTl9BQ0NFU1NfQUxMT1cpIHsKKworCQkvKgorCQkqKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGF1dGhlbnRpY2F0ZWQgc3RhdGlvbnMgKHNvbWUgb2YKKwkJKiogd2hpY2ggbWlnaHQgZGUtYXV0aGVudGljYXRlIHRoZW1zZWx2ZXMgd2hpbGUgd2UgYXJlCisJCSoqIHByb2Nlc3NpbmcgaXQgYnV0IHRoYXQgaXMgb2theSkuICBBbnkgc3RhdGlvbiB3aGljaCBpcworCQkqKiBubyBsb25nZXIgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCBzdGF0aW9ucywgbXVzdCBiZQorCQkqKiBkZS1hdXRoZW50aWNhdGVkLgorCQkqLworCisJCXByaXNtMm1pYl9wcml2X2F1dGhsaXN0KGh3LCAmb2xkKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgb2xkLmNudDsgaSsrKSB7CisJCQlmb3IgKGogPSAwOyBqIDwgaHctPmFsbG93LmNudDsgaisrKQorCQkJCWlmIChtZW1jbXAob2xkLmFkZHJbaV0sIGh3LT5hbGxvdy5hZGRyW2pdLAorCQkJCQkJCVdMQU5fQUREUl9MRU4pID09IDApCisJCQkJCWJyZWFrOworCQkJaWYgKGogPj0gaHctPmFsbG93LmNudCkKKwkJCQlwcmlzbTJtaWJfcHJpdl9kZWF1dGhlbnRpY2F0ZShodywgb2xkLmFkZHJbaV0pOworCQl9CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtaWJfcHJpdl9hY2Nlc3NkZW55CisqCisqIENoYW5nZSB0aGUgbGlzdCBvZiBkZW5pZWQgTUFDIGFkZHJlc3Nlcy4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBwcml2ICAgICAgInByaXYiIHN0cnVjdHVyZS4KKyogICAgICAgaHcgICAgICAgICJodyIgc3RydWN0dXJlLgorKiAgICAgICBtYWNhcnJheSAgTmV3IGFycmF5IG9mIE1BQyBhZGRyZXNzZXMuCisqCisqIFJldHVybnM6CisqCU5vdGhpbmcKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgdm9pZCBwcmlzbTJtaWJfcHJpdl9hY2Nlc3NkZW55KAoraGZhMzg0eF90ICAgICAgICAgKmh3LAorcDgwMjExbWFjYXJyYXlfdCAgKm1hY2FycmF5KQoreworCXByaXNtMnN0YV9hdXRobGlzdF90ICBvbGQ7CisJaW50ICAgICAgICAgICAgICAgICAgIGksIGo7CisKKwlEQkZFTlRFUjsKKworCS8qCisJKiogQ2hhbmdlIHRoZSBhY2Nlc3MgbGlzdC4gIE5vdGUgdGhhdCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgbWF5IGJlIGluCisJKiogdGhlIG1pZGRsZSBvZiB1c2luZyB0aGUgYWNjZXNzIGxpc3QhISEgIFNpbmNlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcgorCSoqIHdpbGwgYWx3YXlzIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGlzIHByb2Nlc3MgYW5kIHRoaXMgaXMgdGhlIG9ubHkKKwkqKiBwcm9jZXNzIHRoYXQgd2lsbCBtb2RpZnkgdGhlIGxpc3QsIHRoaXMgcHJvYmxlbSBjYW4gYmUgaGFuZGxlZCBhcworCSoqIGZvbGxvd3M6CisJKioKKwkqKiAgICAxLiBTZXQgdGhlICJtb2RpZnkiIGZsYWcuCisJKiogICAgMi4gQ2hhbmdlIHRoZSBmaXJzdCBjb3B5IG9mIHRoZSBsaXN0LgorCSoqICAgIDMuIENsZWFyIHRoZSAibW9kaWZ5IiBmbGFnLgorCSoqICAgIDQuIENoYW5nZSB0aGUgYmFja3VwIGNvcHkgb2YgdGhlIGxpc3QuCisJKioKKwkqKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgd2lsbCBjaGVjayB0aGUgIm1vZGlmeSIgZmxhZy4gIElmIE5PVCBzZXQsIHRoZW4KKwkqKiB0aGUgZmlyc3QgY29weSBvZiB0aGUgbGlzdCBpcyB2YWxpZCBhbmQgbWF5IGJlIHVzZWQuICBPdGhlcndpc2UsIHRoZQorCSoqIGZpcnN0IGNvcHkgaXMgYmVpbmcgY2hhbmdlZCBidXQgdGhlIGJhY2t1cCBjb3B5IGlzIHZhbGlkIGFuZCBtYXkgYmUKKwkqKiB1c2VkLiAgRG9pbmcgdGhpbmdzIHRoaXMgd2F5IHByZXZlbnRzIGhhdmluZyB0byBoYXZlIHRoZSBpbnRlcnJ1cHQKKwkqKiBoYW5kbGVyIGJsb2NrIHdoaWxlIHRoZSBsaXN0IGlzIGJlaW5nIHVwZGF0ZWQuCisJKi8KKworCWh3LT5kZW55Lm1vZGlmeSA9IDE7CisKKwlody0+ZGVueS5jbnQgPSBtYWNhcnJheS0+Y250OworCW1lbWNweShody0+ZGVueS5hZGRyLCBtYWNhcnJheS0+ZGF0YSwgbWFjYXJyYXktPmNudCpXTEFOX0FERFJfTEVOKTsKKworCWh3LT5kZW55Lm1vZGlmeSA9IDA7CisKKwlody0+ZGVueS5jbnQxID0gbWFjYXJyYXktPmNudDsKKwltZW1jcHkoaHctPmRlbnkuYWRkcjEsIG1hY2FycmF5LT5kYXRhLCBtYWNhcnJheS0+Y250KldMQU5fQUREUl9MRU4pOworCisJLyoKKwkqKiBJZiB0aGUgY3VycmVudCBhY2Nlc3MgbW9kZSBpcyAiRGVueSIsIHRoZW4gY2hhbmdpbmcgdGhlIGFjY2VzcworCSoqIGxpc3QgbWF5IGxlYXZlIHNvbWUgc3RhdGlvbnMgYXV0aGVudGljYXRlZCB3aGljaCBzaG91bGQgbm90IGJlCisJKiogYXV0aGVudGljYXRlZC4gIEl0IHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGRlLWF1dGhlbnRpY2F0ZSB0aGVzZQorCSoqIHN0YXRpb25zLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBjYW4gYmUgY2hhbmdlZCB3aXRob3V0IGEgbG90IG9mIGZ1c3MuCisJKi8KKworCWlmIChody0+YWNjZXNzbW9kZSA9PSBXTEFOX0FDQ0VTU19ERU5ZKSB7CisKKwkJLyoKKwkJKiogR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBhdXRoZW50aWNhdGVkIHN0YXRpb25zIChzb21lIG9mCisJCSoqIHdoaWNoIG1pZ2h0IGRlLWF1dGhlbnRpY2F0ZSB0aGVtc2VsdmVzIHdoaWxlIHdlIGFyZQorCQkqKiBwcm9jZXNzaW5nIGl0IGJ1dCB0aGF0IGlzIG9rYXkpLiAgQW55IHN0YXRpb24gd2hpY2ggaXMKKwkJKiogbm93IGluIHRoZSBsaXN0IG9mIGRlbmllZCBzdGF0aW9ucywgbXVzdCBiZSBkZS1hdXRoZW50aWNhdGVkLgorCQkqLworCisJCXByaXNtMm1pYl9wcml2X2F1dGhsaXN0KGh3LCAmb2xkKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgb2xkLmNudDsgaSsrKQorCQkJZm9yIChqID0gMDsgaiA8IGh3LT5kZW55LmNudDsgaisrKQorCQkJCWlmIChtZW1jbXAob2xkLmFkZHJbaV0sIGh3LT5kZW55LmFkZHJbal0sCisJCQkJCQkJIFdMQU5fQUREUl9MRU4pID09IDApIHsKKwkJCQkJcHJpc20ybWliX3ByaXZfZGVhdXRoZW50aWNhdGUoaHcsIG9sZC5hZGRyW2ldKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCX0KKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWliX3ByaXZfZGVhdXRoZW50aWNhdGUKKyoKKyogRGUtYXV0aGVudGljYXRlIGEgc3RhdGlvbi4gIFRoaXMgaXMgZG9uZSBieSBzZW5kaW5nIGEgSGFuZG92ZXJBZGRyZXNzCisqIGluZm9ybWF0aW9uIGZyYW1lIHRvIHRoZSBmaXJtd2FyZS4gIFRoaXMgc2hvdWxkIHdvcmssIGFjY29yZGluZyB0bworKiBJbnRlcnNpbC4KKyoKKyogQXJndW1lbnRzOgorKiAgICAgICBwcml2ICAgICAicHJpdiIgc3RydWN0dXJlLgorKiAgICAgICBodyAgICAgICAiaHciIHN0cnVjdHVyZS4KKyogICAgICAgYWRkciAgICAgTUFDIGFkZHJlc3Mgb2Ygc3RhdGlvbiB0byBiZSBkZS1hdXRoZW50aWNhdGVkLgorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIHZvaWQgcHJpc20ybWliX3ByaXZfZGVhdXRoZW50aWNhdGUoCitoZmEzODR4X3QgICAgICAgICAqaHcsCitVSU5UOCAgICAgICAgICAgICAqYWRkcikKK3sKKwlEQkZFTlRFUjsKKwloZmEzODR4X2RydnJfaGFuZG92ZXIoaHcsIGFkZHIpOworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3BzdHIyYnl0ZXN0cgorKgorKiBDb252ZXJ0IHRoZSBwc3RyIGRhdGEgaW4gdGhlIFdMQU4gbWVzc2FnZSBzdHJ1Y3R1cmUgaW50byBhbiBoZmEzODR4CisqIGJ5dGUgc3RyaW5nIGZvcm1hdC4KKyoKKyogQXJndW1lbnRzOgorKglieXRlc3RyCQloZmEzODR4IGJ5dGUgc3RyaW5nIGRhdGEgdHlwZQorKglwc3RyCQl3bGFuIG1lc3NhZ2UgZGF0YQorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBwcmlzbTJtZ210X3BzdHIyYnl0ZXN0cihoZmEzODR4X2J5dGVzdHJfdCAqYnl0ZXN0ciwgcDgwMjExcHN0cmRfdCAqcHN0cikKK3sKKwlEQkZFTlRFUjsKKworCWJ5dGVzdHItPmxlbiA9IGhvc3QyaGZhMzg0eF8xNigoVUlOVDE2KShwc3RyLT5sZW4pKTsKKwltZW1jcHkoYnl0ZXN0ci0+ZGF0YSwgcHN0ci0+ZGF0YSwgcHN0ci0+bGVuKTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3BzdHIyYnl0ZWFyZWEKKyoKKyogQ29udmVydCB0aGUgcHN0ciBkYXRhIGluIHRoZSBXTEFOIG1lc3NhZ2Ugc3RydWN0dXJlIGludG8gYW4gaGZhMzg0eAorKiBieXRlIGFyZWEgZm9ybWF0LgorKgorKiBBcmd1bWVudHM6CisqCWJ5dGVhcmVhCWhmYTM4NHggYnl0ZSBhcmVhIGRhdGEgdHlwZQorKglwc3RyCQl3bGFuIG1lc3NhZ2UgZGF0YQorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBwcmlzbTJtZ210X3BzdHIyYnl0ZWFyZWEoVUlOVDggKmJ5dGVhcmVhLCBwODAyMTFwc3RyZF90ICpwc3RyKQoreworCURCRkVOVEVSOworCisJbWVtY3B5KGJ5dGVhcmVhLCBwc3RyLT5kYXRhLCBwc3RyLT5sZW4pOworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfYnl0ZXN0cjJwc3RyCisqCisqIENvbnZlcnQgdGhlIGRhdGEgaW4gYW4gaGZhMzg0eCBieXRlIHN0cmluZyBmb3JtYXQgaW50byBhCisqIHBzdHIgaW4gdGhlIFdMQU4gbWVzc2FnZS4KKyoKKyogQXJndW1lbnRzOgorKglieXRlc3RyCQloZmEzODR4IGJ5dGUgc3RyaW5nIGRhdGEgdHlwZQorKgltc2cJCXdsYW4gbWVzc2FnZQorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBwcmlzbTJtZ210X2J5dGVzdHIycHN0cihoZmEzODR4X2J5dGVzdHJfdCAqYnl0ZXN0ciwgcDgwMjExcHN0cmRfdCAqcHN0cikKK3sKKwlEQkZFTlRFUjsKKworCXBzdHItPmxlbiA9IChVSU5UOCkoaGZhMzg0eDJob3N0XzE2KChVSU5UMTYpKGJ5dGVzdHItPmxlbikpKTsKKwltZW1jcHkocHN0ci0+ZGF0YSwgYnl0ZXN0ci0+ZGF0YSwgcHN0ci0+bGVuKTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2J5dGVhcmVhMnBzdHIKKyoKKyogQ29udmVydCB0aGUgZGF0YSBpbiBhbiBoZmEzODR4IGJ5dGUgYXJlYSBmb3JtYXQgaW50byBhIHBzdHIKKyogaW4gdGhlIFdMQU4gbWVzc2FnZS4KKyoKKyogQXJndW1lbnRzOgorKglieXRlYXJlYQloZmEzODR4IGJ5dGUgYXJlYSBkYXRhIHR5cGUKKyoJbXNnCQl3bGFuIG1lc3NhZ2UKKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3ZvaWQgcHJpc20ybWdtdF9ieXRlYXJlYTJwc3RyKFVJTlQ4ICpieXRlYXJlYSwgcDgwMjExcHN0cmRfdCAqcHN0ciwgaW50IGxlbikKK3sKKwlEQkZFTlRFUjsKKworCXBzdHItPmxlbiA9IChVSU5UOClsZW47CisJbWVtY3B5KHBzdHItPmRhdGEsIGJ5dGVhcmVhLCBsZW4pOworCURCRkVYSVQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfcHJpc20yaW50MnA4MDIxMWludAorKgorKiBDb252ZXJ0IGFuIGhmYTM4NHggaW50ZWdlciBpbnRvIGEgd2xhbiBpbnRlZ2VyCisqCisqIEFyZ3VtZW50czoKKyoJcHJpc20yZW51bQlwb2ludGVyIHRvIGhmYTM4NHggaW50ZWdlcgorKgl3bGFuZW51bQlwb2ludGVyIHRvIHA4MDIxMSBpbnRlZ2VyCisqCisqIFJldHVybnM6CisqCU5vdGhpbmcKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCit2b2lkIHByaXNtMm1nbXRfcHJpc20yaW50MnA4MDIxMWludChVSU5UMTYgKnByaXNtMmludCwgVUlOVDMyICp3bGFuaW50KQoreworCURCRkVOVEVSOworCisJKndsYW5pbnQgPSAoVUlOVDMyKWhmYTM4NHgyaG9zdF8xNigqcHJpc20yaW50KTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3A4MDIxMWludDJwcmlzbTJpbnQKKyoKKyogQ29udmVydCBhIHdsYW4gaW50ZWdlciBpbnRvIGFuIGhmYTM4NHggaW50ZWdlcgorKgorKiBBcmd1bWVudHM6CisqCXByaXNtMmVudW0JcG9pbnRlciB0byBoZmEzODR4IGludGVnZXIKKyoJd2xhbmVudW0JcG9pbnRlciB0byBwODAyMTEgaW50ZWdlcgorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordm9pZCBwcmlzbTJtZ210X3A4MDIxMWludDJwcmlzbTJpbnQoVUlOVDE2ICpwcmlzbTJpbnQsIFVJTlQzMiAqd2xhbmludCkKK3sKKwlEQkZFTlRFUjsKKworCSpwcmlzbTJpbnQgPSBob3N0MmhmYTM4NHhfMTYoKFVJTlQxNikoKndsYW5pbnQpKTsKKwlEQkZFWElUOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X3ByaXNtMmVudW0ycDgwMjExZW51bQorKgorKiBDb252ZXJ0IHRoZSBoZmEzODR4IGVudW1lcmF0ZWQgaW50IGludG8gYSBwODAyMTEgZW51bWVyYXRlZCBpbnQKKyoKKyogQXJndW1lbnRzOgorKglwcmlzbTJlbnVtCXBvaW50ZXIgdG8gaGZhMzg0eCBpbnRlZ2VyCisqCXdsYW5lbnVtCXBvaW50ZXIgdG8gcDgwMjExIGludGVnZXIKKyoJcmlkCQloZmEzODR4IHJlY29yZCBpZAorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcHJpc20ybWdtdF9wcmlzbTJlbnVtMnA4MDIxMWVudW0oVUlOVDE2ICpwcmlzbTJlbnVtLCBVSU5UMzIgKndsYW5lbnVtLCBVSU5UMTYgcmlkKQoreworCURCRkVOVEVSOworCisJLyogQXQgdGhlIG1vbWVudCwgdGhlIG5lZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBoYXNuJ3QKKwlwcmVzZW50ZWQgaXRzZWxmLiBBbGwgdGhlIHdsYW4gZW51bWVyYXRlZCB2YWx1ZXMgYXJlCisJYSAxLXRvLTEgbWF0Y2ggYWdhaW5zdCB0aGUgUHJpc20yIGVudW1lcmF0ZWQgdmFsdWVzKi8KKwlEQkZFWElUOworCXJldHVybjsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9wODAyMTFlbnVtMnByaXNtMmVudW0KKyoKKyogQ29udmVydCB0aGUgcDgwMjExIGVudW1lcmF0ZWQgaW50IGludG8gYW4gaGZhMzg0eCBlbnVtZXJhdGVkIGludAorKgorKiBBcmd1bWVudHM6CisqCXByaXNtMmVudW0JcG9pbnRlciB0byBoZmEzODR4IGludGVnZXIKKyoJd2xhbmVudW0JcG9pbnRlciB0byBwODAyMTEgaW50ZWdlcgorKglyaWQJCWhmYTM4NHggcmVjb3JkIGlkCisqCisqIFJldHVybnM6CisqCU5vdGhpbmcKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJtZ210X3A4MDIxMWVudW0ycHJpc20yZW51bShVSU5UMTYgKnByaXNtMmVudW0sIFVJTlQzMiAqd2xhbmVudW0sIFVJTlQxNiByaWQpCit7CisJREJGRU5URVI7CisKKwkvKiBBdCB0aGUgbW9tZW50LCB0aGUgbmVlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IGhhc24ndAorCXByZXNlbnRlZCBpdHNlbGYuIEFsbCB0aGUgd2xhbiBlbnVtZXJhdGVkIHZhbHVlcyBhcmUKKwlhIDEtdG8tMSBtYXRjaCBhZ2FpbnN0IHRoZSBQcmlzbTIgZW51bWVyYXRlZCB2YWx1ZXMqLworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfZ2V0X29wcmF0ZXNldAorKgorKiBDb252ZXJ0IHRoZSBoZmEzODR4IGJpdCBhcmVhIGludG8gYSB3bGFuIG9jdGV0IHN0cmluZy4KKyoKKyogQXJndW1lbnRzOgorKglyYXRlCQlQcmlzbTIgYml0IGFyZWEKKyoJcHN0cgkJd2xhbiBvY3RldCBzdHJpbmcKKyoKKyogUmV0dXJuczoKKyoJTm90aGluZworKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIHByaXNtMm1nbXRfZ2V0X29wcmF0ZXNldChVSU5UMTYgKnJhdGUsIHA4MDIxMXBzdHJkX3QgKnBzdHIpCit7CisJVUlOVDgJbGVuOworCVVJTlQ4CSpkYXRhcmF0ZTsKKworCURCRkVOVEVSOworCisJbGVuID0gMDsKKwlkYXRhcmF0ZSA9IHBzdHItPmRhdGE7CisKKyAJLyogMSBNYnBzICovCisJaWYgKCBCSVQwICYgKCpyYXRlKSApIHsKKwkJbGVuICs9IChVSU5UOCkxOworCQkqZGF0YXJhdGUgPSAoVUlOVDgpMjsKKwkJZGF0YXJhdGUrKzsKKwl9CisKKyAJLyogMiBNYnBzICovCisJaWYgKCBCSVQxICYgKCpyYXRlKSApIHsKKwkJbGVuICs9IChVSU5UOCkxOworCQkqZGF0YXJhdGUgPSAoVUlOVDgpNDsKKwkJZGF0YXJhdGUrKzsKKwl9CisKKyAJLyogNS41IE1icHMgKi8KKwlpZiAoIEJJVDIgJiAoKnJhdGUpICkgeworCQlsZW4gKz0gKFVJTlQ4KTE7CisJCSpkYXRhcmF0ZSA9IChVSU5UOCkxMTsKKwkJZGF0YXJhdGUrKzsKKwl9CisKKyAJLyogMTEgTWJwcyAqLworCWlmICggQklUMyAmICgqcmF0ZSkgKSB7CisJCWxlbiArPSAoVUlOVDgpMTsKKwkJKmRhdGFyYXRlID0gKFVJTlQ4KTIyOworCQlkYXRhcmF0ZSsrOworCX0KKworCXBzdHItPmxlbiA9IGxlbjsKKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfc2V0X29wcmF0ZXNldAorKgorKiBDb252ZXJ0IHRoZSB3bGFuIG9jdGV0IHN0cmluZyBpbnRvIGFuIGhmYTM4NHggYml0IGFyZWEuCisqCisqIEFyZ3VtZW50czoKKyoJcmF0ZQkJUHJpc20yIGJpdCBhcmVhCisqCXBzdHIJCXdsYW4gb2N0ZXQgc3RyaW5nCisqCisqIFJldHVybnM6CisqCU5vdGhpbmcKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJtZ210X3NldF9vcHJhdGVzZXQoVUlOVDE2ICpyYXRlLCBwODAyMTFwc3RyZF90ICpwc3RyKQoreworCVVJTlQ4CSpkYXRhcmF0ZTsKKwlpbnQJaTsKKworCURCRkVOVEVSOworCisJKnJhdGUgPSAwOworCisJZGF0YXJhdGUgPSBwc3RyLT5kYXRhOworCisJZm9yICggaT0wOyBpIDwgcHN0ci0+bGVuOyBpKyssIGRhdGFyYXRlKysgKSB7CisJCXN3aXRjaCAoKmRhdGFyYXRlKSB7CisJCWNhc2UgMjogLyogMSBNYnBzICovCisJCQkqcmF0ZSB8PSBCSVQwOworCQkJYnJlYWs7CisJCWNhc2UgNDogLyogMiBNYnBzICovCisJCQkqcmF0ZSB8PSBCSVQxOworCQkJYnJlYWs7CisJCWNhc2UgMTE6IC8qIDUuNSBNYnBzICovCisJCQkqcmF0ZSB8PSBCSVQyOworCQkJYnJlYWs7CisJCWNhc2UgMjI6IC8qIDExIE1icHMgKi8KKwkJCSpyYXRlIHw9IEJJVDM7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCVdMQU5fTE9HX0RFQlVHKDEsICJVbnJlY29naW56ZWQgUmF0ZSBvZiAlZFxuIiwKKwkJCQkqZGF0YXJhdGUpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlEQkZFWElUOworCXJldHVybjsKK30KKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJtZ210X2dldF9ncnBhZGRyCisqCisqIFJldHJpZXZlcyBhIHBhcnRpY3VsYXIgZ3JvdXAgYWRkcmVzcyBmcm9tIHRoZSBsaXN0IG9mCisqIGdyb3VwIGFkZHJlc3Nlcy4KKyoKKyogQXJndW1lbnRzOgorKglkaWQJCW1pYml0ZW0gZGlkCisqCXBzdHIJCXdsYW4gb2N0ZXQgc3RyaW5nCisqCXByaXYJCXByaXNtMiBkcml2ZXIgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKglOb3RoaW5nCisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcHJpc20ybWdtdF9nZXRfZ3JwYWRkcihVSU5UMzIgZGlkLCBwODAyMTFwc3RyZF90ICpwc3RyLAorCWhmYTM4NHhfdCAqaHcgKQoreworCWludAlpbmRleDsKKworCURCRkVOVEVSOworCisJaW5kZXggPSBwcmlzbTJtZ210X2dldF9ncnBhZGRyX2luZGV4KGRpZCk7CisKKwlpZiAoIGluZGV4ID49IDAgKSB7CisJCXBzdHItPmxlbiA9IFdMQU5fQUREUl9MRU47CisJCW1lbWNweShwc3RyLT5kYXRhLCBody0+ZG90MTFfZ3JwX2FkZHJbaW5kZXhdLAorCQkJV0xBTl9BRERSX0xFTik7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20ybWdtdF9zZXRfZ3JwYWRkcgorKgorKiBDb252ZXJ0IHRoZSB3bGFuIG9jdGV0IHN0cmluZyBpbnRvIGFuIGhmYTM4NHggYml0IGFyZWEuCisqCisqIEFyZ3VtZW50czoKKyoJZGlkCQltaWJpdGVtIGRpZAorKglidWYKKyoJZ3JvdXBzCisqCisqIFJldHVybnM6CisqCTAJU3VjY2VzcworKgkhMAlFcnJvcgorKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitpbnQgcHJpc20ybWdtdF9zZXRfZ3JwYWRkcihVSU5UMzIgZGlkLCBVSU5UOCAqcHJpc20yYnVmLAorCXA4MDIxMXBzdHJkX3QgKnBzdHIsIGhmYTM4NHhfdCAqaHcgKQoreworCVVJTlQ4CW5vX2FkZHJbV0xBTl9BRERSX0xFTl07CisJaW50CWluZGV4OworCisJREJGRU5URVI7CisKKwltZW1zZXQobm9fYWRkciwgMCwgV0xBTl9BRERSX0xFTik7CisJaWYgKG1lbWNtcChub19hZGRyLCBwc3RyLT5kYXRhLCBXTEFOX0FERFJfTEVOKSAhPSAwKSB7CisKKwkJLyoKKwkJKiogVGhlIGFkZHJlc3MgaXMgTk9UIDAgc28gd2UgYXJlICJhZGRpbmciIGFuIGFkZHJlc3MgdG8gdGhlCisJCSoqIGdyb3VwIGFkZHJlc3MgbGlzdC4gIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBhcmVuJ3QgdHJ5aW5nCisJCSoqIHRvIGFkZCBtb3JlIHRoYW4gdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgZ3JvdXAKKwkJKiogYWRkcmVzc2VzIGluIHRoZSBsaXN0LiAgVGhlIG5ldyBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZQorCQkqKiBlbmQgb2YgdGhlIGxpc3QgcmVnYXJkbGVzcyBvZiB0aGUgRElEIHVzZWQgdG8gYWRkIHRoZQorCQkqKiBhZGRyZXNzLgorCQkqLworCisJCWlmIChody0+ZG90MTFfZ3JwY250ID49IE1BWF9HUlBfQUREUikgcmV0dXJuKC0xKTsKKworCQltZW1jcHkoaHctPmRvdDExX2dycF9hZGRyW2h3LT5kb3QxMV9ncnBjbnRdLCBwc3RyLT5kYXRhLAorCQkJCQkJCQkgV0xBTl9BRERSX0xFTik7CisJCWh3LT5kb3QxMV9ncnBjbnQgKz0gMTsKKwl9IGVsc2UgeworCisJCS8qCisJCSoqIFRoZSBhZGRyZXNzIGlzIDAuICBJbnRlcnByZXQgdGhpcyBhcyAiZGVsZXRpbmciIGFuIGFkZHJlc3MKKwkJKiogZnJvbSB0aGUgZ3JvdXAgYWRkcmVzcyBsaXN0LiAgR2V0IHRoZSBhZGRyZXNzIGluZGV4IGZyb20KKwkJKiogdGhlIERJRC4gIElmIHRoaXMgaXMgd2l0aGluIHRoZSByYW5nZSBvZiB1c2VkIGFkZHJlc3NlcywKKwkJKiogdGhlbiBkZWxldGUgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGJ5IHNoaWZ0aW5nIGFsbCBmb2xsb3dpbmcKKwkJKiogYWRkcmVzc2VzIGRvd24uICBUaGVuIGNsZWFyIHRoZSBsYXN0IGFkZHJlc3MgKHdoaWNoIHNob3VsZAorCQkqKiBub3cgYmUgdW51c2VkKS4gIElmIHRoZSBhZGRyZXNzIGluZGV4IGlzIE5PVCB3aXRoaW4gdGhlCisJCSoqIHJhbmdlIG9mIHVzZWQgYWRkcmVzc2VzLCB0aGVuIGp1c3QgaWdub3JlIHRoZSBhZGRyZXNzLgorCQkqLworCisJCWluZGV4ID0gcHJpc20ybWdtdF9nZXRfZ3JwYWRkcl9pbmRleChkaWQpOworCQlpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGh3LT5kb3QxMV9ncnBjbnQpIHsKKwkJCWh3LT5kb3QxMV9ncnBjbnQgLT0gMTsKKwkJCW1lbW1vdmUoaHctPmRvdDExX2dycF9hZGRyW2luZGV4XSwKKwkJCQlody0+ZG90MTFfZ3JwX2FkZHJbaW5kZXggKyAxXSwKKwkJCQkoKGh3LT5kb3QxMV9ncnBjbnQpLWluZGV4KSAqIFdMQU5fQUREUl9MRU4pOworCQkJbWVtc2V0KGh3LT5kb3QxMV9ncnBfYWRkcltody0+ZG90MTFfZ3JwY250XSwgMCwKKwkJCQkJCQkJIFdMQU5fQUREUl9MRU4pOworCQl9CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4oMCk7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMm1nbXRfZ2V0X2dycGFkZHJfaW5kZXgKKyoKKyogR2V0cyB0aGUgaW5kZXggaW4gdGhlIGdyb3VwIGFkZHJlc3MgbGlzdCBiYXNlZCBvbiB0aGUgZGlkLgorKgorKiBBcmd1bWVudHM6CisqCWRpZAkJbWliaXRlbSBkaWQKKyoKKyogUmV0dXJuczoKKyoJPj0gMAlJZiB2YWxpZCBkaWQKKyoJPCAwCUlmIG5vdCB2YWxpZCBkaWQKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworaW50IHByaXNtMm1nbXRfZ2V0X2dycGFkZHJfaW5kZXgoIFVJTlQzMiBkaWQgKQoreworCWludAlpbmRleDsKKworCURCRkVOVEVSOworCisJaW5kZXggPSAtMTsKKworCXN3aXRjaCAoZGlkKSB7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE6CisJCWluZGV4ID0gMDsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI6CisJCWluZGV4ID0gMTsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczM6CisJCWluZGV4ID0gMjsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczQ6CisJCWluZGV4ID0gMzsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczU6CisJCWluZGV4ID0gNDsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczY6CisJCWluZGV4ID0gNTsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczc6CisJCWluZGV4ID0gNjsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczg6CisJCWluZGV4ID0gNzsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczk6CisJCWluZGV4ID0gODsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEwOgorCQlpbmRleCA9IDk7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxMToKKwkJaW5kZXggPSAxMDsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczEyOgorCQlpbmRleCA9IDExOworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTM6CisJCWluZGV4ID0gMTI7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxNDoKKwkJaW5kZXggPSAxMzsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE1OgorCQlpbmRleCA9IDE0OworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTY6CisJCWluZGV4ID0gMTU7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MxNzoKKwkJaW5kZXggPSAxNjsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczE4OgorCQlpbmRleCA9IDE3OworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMTk6CisJCWluZGV4ID0gMTg7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyMDoKKwkJaW5kZXggPSAxOTsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczIxOgorCQlpbmRleCA9IDIwOworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjI6CisJCWluZGV4ID0gMjE7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyMzoKKwkJaW5kZXggPSAyMjsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI0OgorCQlpbmRleCA9IDIzOworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjU6CisJCWluZGV4ID0gMjQ7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyNjoKKwkJaW5kZXggPSAyNTsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczI3OgorCQlpbmRleCA9IDI2OworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMjg6CisJCWluZGV4ID0gMjc7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MyOToKKwkJaW5kZXggPSAyODsKKwkJYnJlYWs7CisJY2FzZSBESURtaWJfZG90MTFtYWNfZG90MTFHcm91cEFkZHJlc3Nlc1RhYmxlX2RvdDExQWRkcmVzczMwOgorCQlpbmRleCA9IDI5OworCQlicmVhazsKKwljYXNlIERJRG1pYl9kb3QxMW1hY19kb3QxMUdyb3VwQWRkcmVzc2VzVGFibGVfZG90MTFBZGRyZXNzMzE6CisJCWluZGV4ID0gMzA7CisJCWJyZWFrOworCWNhc2UgRElEbWliX2RvdDExbWFjX2RvdDExR3JvdXBBZGRyZXNzZXNUYWJsZV9kb3QxMUFkZHJlc3MzMjoKKwkJaW5kZXggPSAzMTsKKwkJYnJlYWs7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gaW5kZXg7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMnN0YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YWExNWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYwpAQCAtMCwwICsxLDI1MDIgQEAKKy8qIHNyYy9wcmlzbTIvZHJpdmVyL3ByaXNtMnN0YS5jCisqCisqIEltcGxlbWVudHMgdGhlIHN0YXRpb24gZnVuY3Rpb25hbGl0eSBmb3IgcHJpc20yCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBtb2R1bGUgYW5kIGxpbnV4IHBjbWNpYSByb3V0aW5lcyBmb3IgdGhlCisqIHByaXNtMiBkcml2ZXIuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogU3lzdGVtIEluY2x1ZGVzICovCisjZGVmaW5lIFdMQU5fREJWQVIJcHJpc20yX2RlYnVnCisKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisKKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw0LDI1KSkKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKKyNpbmNsdWRlIDxsaW51eC90cXVldWUuaD4KKyNlbHNlCisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgorCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKQorI2luY2x1ZGUgPHBjbWNpYS92ZXJzaW9uLmg+CisjaW5jbHVkZSA8cGNtY2lhL2NzX3R5cGVzLmg+CisjaW5jbHVkZSA8cGNtY2lhL2NzLmg+CisjaW5jbHVkZSA8cGNtY2lhL2Npc3RwbC5oPgorI2luY2x1ZGUgPHBjbWNpYS9kcy5oPgorI2luY2x1ZGUgPHBjbWNpYS9jaXNyZWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2xhbl9jb21wYXQuaCIKKworI2lmICgoV0xBTl9IT1NUSUYgPT0gV0xBTl9QTFgpIHx8IChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDSSkpCisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFByb2plY3QgSW5jbHVkZXMgKi8KKworI2luY2x1ZGUgInA4MDIxMXR5cGVzLmgiCisjaW5jbHVkZSAicDgwMjExaGRyLmgiCisjaW5jbHVkZSAicDgwMjExbWdtdC5oIgorI2luY2x1ZGUgInA4MDIxMWNvbnYuaCIKKyNpbmNsdWRlICJwODAyMTFtc2cuaCIKKyNpbmNsdWRlICJwODAyMTFuZXRkZXYuaCIKKyNpbmNsdWRlICJwODAyMTFyZXEuaCIKKyNpbmNsdWRlICJwODAyMTFtZXRhZGVmLmgiCisjaW5jbHVkZSAicDgwMjExbWV0YXN0cnVjdC5oIgorI2luY2x1ZGUgImhmYTM4NHguaCIKKyNpbmNsdWRlICJwcmlzbTJtZ210LmgiCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBDb25zdGFudHMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIE1hY3JvcyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogTG9jYWwgVHlwZXMgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIExvY2FsIFN0YXRpYyBEZWZpbml0aW9ucyAqLworCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUENNQ0lBKQorI2RlZmluZSBEUklWRVJfU1VGRklYCSJfY3MiCisjZWxpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QTFgpCisjZGVmaW5lIERSSVZFUl9TVUZGSVgJIl9wbHgiCit0eXBlZGVmIGNoYXIqIGRldl9pbmZvX3Q7CisjZWxpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisjZGVmaW5lIERSSVZFUl9TVUZGSVgJIl9wY2kiCit0eXBlZGVmIGNoYXIqIGRldl9pbmZvX3Q7CisjZWxpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9VU0IpCisjZGVmaW5lIERSSVZFUl9TVUZGSVgJIl91c2IiCit0eXBlZGVmIGNoYXIqIGRldl9pbmZvX3Q7CisjZWxzZQorI2Vycm9yICJIT1NUSUYgdW5zdXBwb3J0ZWQgb3IgdW5kZWZpbmVkISIKKyNlbmRpZgorCitzdGF0aWMgY2hhcgkJKnZlcnNpb24gPSAicHJpc20yIiBEUklWRVJfU1VGRklYICIubzogIiBXTEFOX1JFTEVBU0U7CitzdGF0aWMgZGV2X2luZm9fdAlkZXZfaW5mbyA9ICJwcmlzbTIiIERSSVZFUl9TVUZGSVg7CisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QTFggfHwgV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgaW50IHByaXNtMnN0YV9zdXNwZW5kX3BjaShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKK3N0YXRpYyBpbnQgcHJpc20yc3RhX3Jlc3VtZV9wY2koc3RydWN0IHBjaV9kZXYgKnBkZXYpOworI2VuZGlmCisjZW5kaWYKKworI2lmIChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDSSkKKworI2VuZGlmIC8qIFdMQU5fUENJICovCisKK3N0YXRpYyB3bGFuZGV2aWNlX3QgKmNyZWF0ZV93bGFuKHZvaWQpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogLS1Nb2R1bGUgUGFyYW1ldGVycyAqLworCitpbnQgICAgICBwcmlzbTJfcmVzZXRfaG9sZHRpbWU9MzA7CS8qIFJlc2V0IGhvbGQgdGltZSBpbiBtcyAqLworaW50CSBwcmlzbTJfcmVzZXRfc2V0dGxldGltZT0xMDA7CS8qIFJlc2V0IHNldHRsZSB0aW1lIGluIG1zICovCisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9VU0IpCitzdGF0aWMgaW50CXByaXNtMl9kb3Jlc2V0PTA7CQkvKiBEbyBhIHJlc2V0IGF0IGluaXQ/ICovCisjZWxzZQorc3RhdGljIGludCAgICAgIHByaXNtMl9kb3Jlc2V0PTE7CQkvKiBEbyBhIHJlc2V0IGF0IGluaXQ/ICovCitpbnQgICAgICAgICAgICAgcHJpc20yX2JhcF90aW1lb3V0PTEwMDA7ICAgICAgICAvKiBCQVAgdGltZW91dCAqLworaW50CQlwcmlzbTJfaXJxX2V2cmVhZF9tYXg9MjA7CS8qIE1heGltdW0gbnVtYmVyIG9mCisJCQkJCQkgKiBldl9yZWFkcyAobG9vcHMpCisJCQkJCQkgKiBpbiBpcnEgaGFuZGxlcgorCQkJCQkJICovCisjZW5kaWYKKworI2lmZGVmIFdMQU5fSU5DTFVERV9ERUJVRworaW50IHByaXNtMl9kZWJ1Zz0wOworbW9kdWxlX3BhcmFtKCBwcmlzbTJfZGVidWcsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKHByaXNtMl9kZWJ1ZywgInByaXNtMiBkZWJ1Z2dpbmciKTsKKyNlbmRpZgorCittb2R1bGVfcGFyYW0oIHByaXNtMl9kb3Jlc2V0LCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyhwcmlzbTJfZG9yZXNldCwgIklzc3VlIGEgcmVzZXQgb24gaW5pdGlhbGl6YXRpb24iKTsKKworbW9kdWxlX3BhcmFtKCBwcmlzbTJfcmVzZXRfaG9sZHRpbWUsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKCBwcmlzbTJfcmVzZXRfaG9sZHRpbWUsICJyZXNldCBob2xkIHRpbWUgaW4gbXMiKTsKK21vZHVsZV9wYXJhbSggcHJpc20yX3Jlc2V0X3NldHRsZXRpbWUsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKCBwcmlzbTJfcmVzZXRfc2V0dGxldGltZSwgInJlc2V0IHNldHRsZSB0aW1lIGluIG1zIik7CisKKyNpZiAoV0xBTl9IT1NUSUYgIT0gV0xBTl9VU0IpCittb2R1bGVfcGFyYW0oIHByaXNtMl9iYXBfdGltZW91dCwgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0MocHJpc20yX2JhcF90aW1lb3V0LCAiQnVmZmVyQWNjZXNzUGF0aCBUaW1lb3V0IGluIDEwKm4gdXMiKTsKK21vZHVsZV9wYXJhbSggcHJpc20yX2lycV9ldnJlYWRfbWF4LCBpbnQsIDA2NDQpOworTU9EVUxFX1BBUk1fREVTQyggcHJpc20yX2lycV9ldnJlYWRfbWF4LCAiTWF4aW1pbSBudW1iZXIgb2YgZXZlbnQgcmVhZHMgaW4gaW50ZXJydXB0IGhhbmRsZXIiKTsKKyNlbmRpZgorCitNT0RVTEVfTElDRU5TRSgiRHVhbCBNUEwvR1BMIik7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBMb2NhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnMgKi8KKworc3RhdGljIGludAlwcmlzbTJzdGFfb3Blbih3bGFuZGV2aWNlX3QgKndsYW5kZXYpOworc3RhdGljIGludAlwcmlzbTJzdGFfY2xvc2Uod2xhbmRldmljZV90ICp3bGFuZGV2KTsKK3N0YXRpYyB2b2lkCXByaXNtMnN0YV9yZXNldCh3bGFuZGV2aWNlX3QgKndsYW5kZXYgKTsKK3N0YXRpYyBpbnQgICAgICBwcmlzbTJzdGFfdHhmcmFtZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHN0cnVjdCBza19idWZmICpza2IsIHA4MDIxMV9oZHJfdCAqcDgwMjExX2hkciwgcDgwMjExX21ldGF3ZXBfdCAqcDgwMjExX3dlcCk7CitzdGF0aWMgaW50CXByaXNtMnN0YV9tbG1lcmVxdWVzdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHA4MDIxMW1zZ190ICptc2cpOworc3RhdGljIGludAlwcmlzbTJzdGFfZ2V0Y2FyZGluZm8od2xhbmRldmljZV90ICp3bGFuZGV2KTsKK3N0YXRpYyBpbnQJcHJpc20yc3RhX2dsb2JhbHNldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldik7CitzdGF0aWMgaW50ICAgICAgcHJpc20yc3RhX3NldG11bHRpY2FzdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQkJICAgICAgIG5ldGRldmljZV90ICpkZXYpOworCitzdGF0aWMgdm9pZAlwcmlzbTJzdGFfaW5mX2hhbmRvdmVyKAorCQkJd2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X0luZkZyYW1lX3QgKmluZik7CitzdGF0aWMgdm9pZAlwcmlzbTJzdGFfaW5mX3RhbGxpZXMoCisJCQl3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKTsKK3N0YXRpYyB2b2lkICAgICBwcmlzbTJzdGFfaW5mX2hvc3RzY2FucmVzdWx0cygKKwkJCXdsYW5kZXZpY2VfdCAqd2xhbmRldiwgaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpOworc3RhdGljIHZvaWQJcHJpc20yc3RhX2luZl9zY2FucmVzdWx0cygKKwkJCXdsYW5kZXZpY2VfdCAqd2xhbmRldiwgaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpOworc3RhdGljIHZvaWQJcHJpc20yc3RhX2luZl9jaGluZm9yZXN1bHRzKAorCQkJd2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X0luZkZyYW1lX3QgKmluZik7CitzdGF0aWMgdm9pZAlwcmlzbTJzdGFfaW5mX2xpbmtzdGF0dXMoCisJCQl3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKTsKK3N0YXRpYyB2b2lkCXByaXNtMnN0YV9pbmZfYXNzb2NzdGF0dXMoCisJCQl3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKTsKK3N0YXRpYyB2b2lkCXByaXNtMnN0YV9pbmZfYXV0aHJlcSgKKwkJCXdsYW5kZXZpY2VfdCAqd2xhbmRldiwgaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpOworc3RhdGljIHZvaWQJcHJpc20yc3RhX2luZl9hdXRocmVxX2RlZmVyKAorCQkJd2xhbmRldmljZV90ICp3bGFuZGV2LCBoZmEzODR4X0luZkZyYW1lX3QgKmluZik7CitzdGF0aWMgdm9pZAlwcmlzbTJzdGFfaW5mX3BzdXNlcmNudCgKKwkJCXdsYW5kZXZpY2VfdCAqd2xhbmRldiwgaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpOworCisjaWZkZWYgQ09ORklHX1BST0NfRlMKK3N0YXRpYyBpbnQKK3ByaXNtMnN0YV9wcm9jX3JlYWQoCisJY2hhcgkqcGFnZSwKKwljaGFyCSoqc3RhcnQsCisJb2ZmX3QJb2Zmc2V0LAorCWludAljb3VudCwKKwlpbnQJKmVvZiwKKwl2b2lkCSpkYXRhKTsKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRnVuY3Rpb24gRGVmaW5pdGlvbnMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIGRtcG1lbQorKgorKiBEZWJ1ZyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGR1bXAgbWVtb3J5IHRvIHRoZSBrZXJuZWwgZGVidWcgbG9nLgorKgorKiBBcmd1bWVudHM6CisqCWJ1ZglwdHIgZGF0YSB3ZSB3YW50IGR1bXBlZAorKglsZW4JbGVuZ3RoIG9mIGRhdGEKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2lubGluZSB2b2lkIGRtcG1lbSh2b2lkICpidWYsIGludCBuKQoreworCWludCBjOworCWZvciAoIGM9IDA7IGMgPCBuOyBjKyspIHsKKwkJaWYgKCAoYyAlIDE2KSA9PSAwICkgcHJpbnRrKEtFUk5fREVCVUciZG1wWyVkXTogIiwgYyk7CisJCXByaW50aygiJTAyeCAiLCAoKFVJTlQ4KilidWYpW2NdKTsKKwkJaWYgKCAoYyAlIDE2KSA9PSAxNSApIHByaW50aygiXG4iKTsKKwl9CisJaWYgKCAoYyAlIDE2KSAhPSAwICkgcHJpbnRrKCJcbiIpOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfb3BlbgorKgorKiBXTEFOIGRldmljZSBvcGVuIG1ldGhvZC4gIENhbGxlZCBmcm9tIHA4MDIxMW5ldGRldiB3aGVuIGtlcm5lbAorKiBkZXZpY2Ugb3BlbiAoc3RhcnQpIG1ldGhvZCBpcyBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gdGhlCisqIFNJT0NTSUlGRkxBR1MgaW9jdGwgY2hhbmdpbmcgdGhlIGZsYWdzIGJpdCBJRkZfVVAKKyogZnJvbSBjbGVhciB0byBzZXQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCTAJc3VjY2VzcworKgk+MAlmL3cgcmVwb3J0ZWQgZXJyb3IKKyoJPDAJZHJpdmVyIHJlcG9ydGVkIGVycm9yCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHByaXNtMnN0YV9vcGVuKHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwlEQkZFTlRFUjsKKworI2lmZGVmIEFOQ0lFTlRfTU9EVUxFX0NPREUKKwlNT0RfSU5DX1VTRV9DT1VOVDsKKyNlbmRpZgorCisJLyogV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgdG8gZG8gYW55dGhpbmcgZWxzZS4KKwkgKiBUaGUgc2V0dXAgb2YgdGhlIE1BQyBzaG91bGQgYmUgc3Vic2VxdWVudGx5IGNvbXBsZXRlZCB2aWEKKwkgKiB0aGUgbWxtZSBjb21tYW5kcy4KKwkgKiBIaWdoZXIgbGF5ZXJzIGtub3cgd2UncmUgcmVhZHkgZnJvbSBkZXYtPnN0YXJ0PT0xIGFuZAorCSAqIGRldi0+dGJ1c3k9PTAuICBPdXIgcnggcGF0aCBrbm93cyB0byBwYXNzIHVwIHJlY2VpdmVkLworCSAqIGZyYW1lcyBiZWNhdXNlIG9mIGRldi0+ZmxhZ3MmSUZGX1VQIGlzIHRydWUuCisJICovCisKKwlEQkZFWElUOworCXJldHVybiAwOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfY2xvc2UKKyoKKyogV0xBTiBkZXZpY2UgY2xvc2UgbWV0aG9kLiAgQ2FsbGVkIGZyb20gcDgwMjExbmV0ZGV2IHdoZW4ga2VybmVsCisqIGRldmljZSBjbG9zZSBtZXRob2QgaXMgY2FsbGVkIGluIHJlc3BvbnNlIHRvIHRoZQorKiBTSU9DU0lJRkZMQUdTIGlvY3RsIGNoYW5naW5nIHRoZSBmbGFncyBiaXQgSUZGX1VQCisqIGZyb20gc2V0IHRvIGNsZWFyLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MKKyoJPjAJZi93IHJlcG9ydGVkIGVycm9yCisqCTwwCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBwcmlzbTJzdGFfY2xvc2Uod2xhbmRldmljZV90ICp3bGFuZGV2KQoreworCURCRkVOVEVSOworCisjaWZkZWYgQU5DSUVOVF9NT0RVTEVfQ09ERQorCU1PRF9ERUNfVVNFX0NPVU5UOworI2VuZGlmCisKKwkvKiBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSB0byBkbyBhbnl0aGluZyBlbHNlLgorCSAqIEhpZ2hlciBsYXllcnMga25vdyB3ZSdyZSBub3QgcmVhZHkgZnJvbSBkZXYtPnN0YXJ0PT0wIGFuZAorCSAqIGRldi0+dGJ1c3k9PTEuICBPdXIgcnggcGF0aCBrbm93cyB0byBub3QgcGFzcyB1cCByZWNlaXZlZAorCSAqIGZyYW1lcyBiZWNhdXNlIG9mIGRldi0+ZmxhZ3MmSUZGX1VQIGlzIGZhbHNlLgorCSAqLworCisJREJGRVhJVDsKKwlyZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX3Jlc2V0CisqCisqIE5vdCBjdXJyZW50bHkgaW1wbGVudGVkLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKglub25lCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHByaXNtMnN0YV9yZXNldCh3bGFuZGV2aWNlX3QgKndsYW5kZXYgKQoreworCURCRkVOVEVSOworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfdHhmcmFtZQorKgorKiBUYWtlcyBhIGZyYW1lIGZyb20gcDgwMjExIGFuZCBxdWV1ZXMgaXQgZm9yIHRyYW5zbWlzc2lvbi4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJcGIJCXBhY2tldCBidWZmZXIgc3RydWN0LiAgQ29udGFpbnMgYW4gODAyLjExCisqCQkJZGF0YSBmcmFtZS4KKyogICAgICAgcDgwMjExX2hkciAgICAgIHBvaW50cyB0byB0aGUgODAyLjExIGhlYWRlciBmb3IgdGhlIHBhY2tldC4KKyogUmV0dXJuczoKKyoJMAkJU3VjY2VzcyBhbmQgbW9yZSBidWZmcyBhdmFpbGFibGUKKyoJMQkJU3VjY2VzcyBidXQgbm8gbW9yZSBidWZmcworKgkyCQlBbGxvY2F0aW9uIGZhaWx1cmUKKyoJNAkJQnVmZmVyIGZ1bGwgb3IgcXVldWUgYnVzeQorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIGludCBwcmlzbTJzdGFfdHhmcmFtZSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHN0cnVjdCBza19idWZmICpza2IsCisJCQkgICAgIHA4MDIxMV9oZHJfdCAqcDgwMjExX2hkciwKKwkJCSAgICAgcDgwMjExX21ldGF3ZXBfdCAqcDgwMjExX3dlcCkKK3sKKwloZmEzODR4X3QJCSpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCWludAkJCXJlc3VsdDsKKwlEQkZFTlRFUjsKKworCS8qIElmIG5lY2Vzc2FyeSwgc2V0IHRoZSA4MDIuMTEgV0VQIGJpdCAqLworCWlmICgod2xhbmRldi0+aG9zdHdlcCAmIChIT1NUV0VQX1BSSVZBQ1lJTlZPS0VEIHwgSE9TVFdFUF9FTkNSWVBUKSkgPT0gSE9TVFdFUF9QUklWQUNZSU5WT0tFRCkgeworCQlwODAyMTFfaGRyLT5hMy5mYyB8PSBob3N0MmllZWUxNihXTEFOX1NFVF9GQ19JU1dFUCgxKSk7CisJfQorCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX3R4ZnJhbWUoaHcsIHNrYiwgcDgwMjExX2hkciwgcDgwMjExX3dlcCk7CisKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9tbG1lcmVxdWVzdAorKgorKiB3bGFuIGNvbW1hbmQgbWVzc2FnZSBoYW5kbGVyLiAgQWxsIHdlIGRvIGhlcmUgaXMgcGFzcyB0aGUgbWVzc2FnZQorKiBvdmVyIHRvIHRoZSBwcmlzbTJzdGFfbWdtdF9oYW5kbGVyLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2cJCXdsYW4gY29tbWFuZCBtZXNzYWdlCisqIFJldHVybnM6CisqCTAJCXN1Y2Nlc3MKKyoJPDAJCXN1Y2Nlc3NmdWwgYWNjZXB0YW5jZSBvZiBtZXNzYWdlLCBidXQgd2UncmUKKyoJCQl3YWl0aW5nIGZvciBhbiBhc3luYyBwcm9jZXNzIHRvIGZpbmlzaCBiZWZvcmUKKyoJCQl3ZSdyZSBkb25lIHdpdGggdGhlIG1zZy4gIFdoZW4gdGhlIGFzeW5jaAorKgkJCXByb2Nlc3MgaXMgZG9uZSwgd2UnbGwgY2FsbCB0aGUgcDgwMjExCisqCQkJZnVuY3Rpb24gcDgwMjExcmVxX2NvbmZpcm0oKSAuCisqCT4wCQlBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIGhhbmRsaW5nCisqCQkJdGhlIG1lc3NhZ2UuCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglwcm9jZXNzIHRocmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHByaXNtMnN0YV9tbG1lcmVxdWVzdCh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIHA4MDIxMW1zZ190ICptc2cpCit7CisgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCisJaW50IHJlc3VsdCA9IDA7CisJREJGRU5URVI7CisKKwlzd2l0Y2goIG1zZy0+bXNnY29kZSApCisJeworCWNhc2UgRElEbXNnX2RvdDExcmVxX21pYmdldCA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1pYmdldCByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9taWJzZXRfbWliZ2V0KHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2RvdDExcmVxX21pYnNldCA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1pYnNldCByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9taWJzZXRfbWliZ2V0KHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2RvdDExcmVxX3Bvd2VybWdtdCA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIHBvd2VybWdtdCByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9wb3dlcm1nbXQod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfZG90MTFyZXFfc2NhbiA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIHNjYW4gcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfc2Nhbih3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19kb3QxMXJlcV9zY2FuX3Jlc3VsdHMgOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBzY2FuX3Jlc3VsdHMgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfc2Nhbl9yZXN1bHRzKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2RvdDExcmVxX2pvaW4gOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBqb2luIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X2pvaW4od2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfZG90MTFyZXFfYXV0aGVudGljYXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgYXV0aGVudGljYXRlIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X2F1dGhlbnRpY2F0ZSh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19kb3QxMXJlcV9kZWF1dGhlbnRpY2F0ZSA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgZGVhdXRoZW50aWNhdGUgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfZGVhdXRoZW50aWNhdGUod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfZG90MTFyZXFfYXNzb2NpYXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBhc3NvY2lhdGUgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfYXNzb2NpYXRlKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2RvdDExcmVxX3JlYXNzb2NpYXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSByZWFzc29jaWF0ZSByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9yZWFzc29jaWF0ZSh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19kb3QxMXJlcV9kaXNhc3NvY2lhdGUgOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIGRpc2Fzc29jaWF0ZSByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9kaXNhc3NvY2lhdGUod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfZG90MTFyZXFfcmVzZXQgOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIHJlc2V0IHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X3Jlc2V0KHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2RvdDExcmVxX3N0YXJ0IDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBzdGFydCByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9zdGFydCh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwkvKgorCSAqIFByaXNtMiBzcGVjaWZpYyBtZXNzYWdlcworCSAqLworCWNhc2UgRElEbXNnX3AycmVxX2pvaW4gOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBwMiBqb2luIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X3AyX2pvaW4od2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisgICAgICAgCWNhc2UgRElEbXNnX3AycmVxX3JlYWRwZGEgOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIHJlYWRwZGEgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfcmVhZHBkYSh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19wMnJlcV9yZWFkY2lzIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSByZWFkY2lzIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X3JlYWRjaXMod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfcDJyZXFfYXV4cG9ydF9zdGF0ZSA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgYXV4cG9ydF9zdGF0ZSByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9hdXhwb3J0X3N0YXRlKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX3AycmVxX2F1eHBvcnRfcmVhZCA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgYXV4cG9ydF9yZWFkIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X2F1eHBvcnRfcmVhZCh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19wMnJlcV9hdXhwb3J0X3dyaXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBhdXhwb3J0X3dyaXRlIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X2F1eHBvcnRfd3JpdGUod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfcDJyZXFfbG93X2xldmVsIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBsb3dfbGV2ZWwgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfbG93X2xldmVsKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworICAgICAgICBjYXNlIERJRG1zZ19wMnJlcV90ZXN0X2NvbW1hbmQgOgorICAgICAgICAgICAgICAgIFdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgdGVzdF9jb21tYW5kIHJlcXVlc3RcbiIpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByaXNtMm1nbXRfdGVzdF9jb21tYW5kKHdsYW5kZXYsIG1zZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRElEbXNnX3AycmVxX21taV9yZWFkIDoKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIG1taV9yZWFkIHJlcXVlc3RcbiIpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByaXNtMm1nbXRfbW1pX3JlYWQod2xhbmRldiwgbXNnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESURtc2dfcDJyZXFfbW1pX3dyaXRlIDoKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIG1taV93cml0ZSByZXF1ZXN0XG4iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwcmlzbTJtZ210X21taV93cml0ZSh3bGFuZGV2LCBtc2cpOworICAgICAgICAgICAgICAgIGJyZWFrOworCWNhc2UgRElEbXNnX3AycmVxX3JhbWRsX3N0YXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSByYW1kbF9zdGF0ZSByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9yYW1kbF9zdGF0ZSh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19wMnJlcV9yYW1kbF93cml0ZSA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgcmFtZGxfd3JpdGUgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfcmFtZGxfd3JpdGUod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfcDJyZXFfZmxhc2hkbF9zdGF0ZSA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgZmxhc2hkbF9zdGF0ZSByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9mbGFzaGRsX3N0YXRlKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX3AycmVxX2ZsYXNoZGxfd3JpdGUgOgorCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIGZsYXNoZGxfd3JpdGUgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfZmxhc2hkbF93cml0ZSh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwljYXNlIERJRG1zZ19wMnJlcV9kdW1wX3N0YXRlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBkdW1wX3N0YXRlIHJlcXVlc3RcbiIpOworCQlyZXN1bHQgPSBwcmlzbTJtZ210X2R1bXBfc3RhdGUod2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfcDJyZXFfY2hhbm5lbF9pbmZvIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBjaGFubmVsX2luZm8gcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfY2hhbm5lbF9pbmZvKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX3AycmVxX2NoYW5uZWxfaW5mb19yZXN1bHRzIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBjaGFubmVsX2luZm9fcmVzdWx0cyByZXF1ZXN0XG4iKTsKKwkJcmVzdWx0ID0gcHJpc20ybWdtdF9jaGFubmVsX2luZm9fcmVzdWx0cyh3bGFuZGV2LCBtc2cpOworCQlicmVhazsKKwkvKgorCSAqIExpbnV4IHNwZWNpZmljIG1lc3NhZ2VzCisJICovCisJY2FzZSBESURtc2dfbG54cmVxX2hvc3R3ZXAgOgorCQlicmVhazsgICAvLyBpZ25vcmUgbWUuCisgICAgICAgIGNhc2UgRElEbXNnX2xueHJlcV9pZnN0YXRlIDoKKwkJeworCQlwODAyMTFtc2dfbG54cmVxX2lmc3RhdGVfdAkqaWZzdGF0ZW1zZzsKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIGlmc3RhdGUgcmVxdWVzdFxuIik7CisJCWlmc3RhdGVtc2cgPSAocDgwMjExbXNnX2xueHJlcV9pZnN0YXRlX3QqKW1zZzsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwcmlzbTJzdGFfaWZzdGF0ZSh3bGFuZGV2LCBpZnN0YXRlbXNnLT5pZnN0YXRlLmRhdGEpOworCQlpZnN0YXRlbXNnLT5yZXN1bHRjb2RlLnN0YXR1cyA9CisJCQlQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisJCWlmc3RhdGVtc2ctPnJlc3VsdGNvZGUuZGF0YSA9IHJlc3VsdDsKKwkJcmVzdWx0ID0gMDsKKwkJfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJRG1zZ19sbnhyZXFfd2xhbnNuaWZmIDoKKyAgICAgICAgICAgICAgICBXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBtbG1lIHdsYW5zbmlmZiByZXF1ZXN0XG4iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwcmlzbTJtZ210X3dsYW5zbmlmZih3bGFuZGV2LCBtc2cpOworICAgICAgICAgICAgICAgIGJyZWFrOworCWNhc2UgRElEbXNnX2xueHJlcV9hdXRvam9pbiA6CisJCVdMQU5fTE9HX0RFQlVHKDIsIlJlY2VpdmVkIG1sbWUgYXV0b2pvaW4gcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfYXV0b2pvaW4od2xhbmRldiwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBESURtc2dfcDJyZXFfZW5hYmxlIDoKKwkJV0xBTl9MT0dfREVCVUcoMiwiUmVjZWl2ZWQgbWxtZSBlbmFibGUgcmVxdWVzdFxuIik7CisJCXJlc3VsdCA9IHByaXNtMm1nbXRfZW5hYmxlKHdsYW5kZXYsIG1zZyk7CisJCWJyZWFrOworCWNhc2UgRElEbXNnX2xueHJlcV9jb21tc3F1YWxpdHk6IHsKKwkJcDgwMjExbXNnX2xueHJlcV9jb21tc3F1YWxpdHlfdCAqcXVhbG1zZzsKKworCQlXTEFOX0xPR19ERUJVRygyLCJSZWNlaXZlZCBjb21tc3F1YWxpdHkgcmVxdWVzdFxuIik7CisKKwkJaWYgKGh3LT5hcCkKKwkJCWJyZWFrOworCisJCXF1YWxtc2cgPSAocDgwMjExbXNnX2xueHJlcV9jb21tc3F1YWxpdHlfdCopIG1zZzsKKworCQlxdWFsbXNnLT5saW5rLnN0YXR1cyA9IFA4MDIxMUVOVU1fbXNnaXRlbV9zdGF0dXNfZGF0YV9vazsKKwkJcXVhbG1zZy0+bGV2ZWwuc3RhdHVzID0gUDgwMjExRU5VTV9tc2dpdGVtX3N0YXR1c19kYXRhX29rOworCQlxdWFsbXNnLT5ub2lzZS5zdGF0dXMgPSBQODAyMTFFTlVNX21zZ2l0ZW1fc3RhdHVzX2RhdGFfb2s7CisKKworCQlxdWFsbXNnLT5saW5rLmRhdGEgPSBoZmEzODR4Mmhvc3RfMTYoaHctPnF1YWwuQ1FfY3VyckJTUyk7CisJCXF1YWxtc2ctPmxldmVsLmRhdGEgPSBoZmEzODR4Mmhvc3RfMTYoaHctPnF1YWwuQVNMX2N1cnJCU1MpOworCQlxdWFsbXNnLT5ub2lzZS5kYXRhID0gaGZhMzg0eDJob3N0XzE2KGh3LT5xdWFsLkFOTF9jdXJyRkMpOworCisJCWJyZWFrOworCX0KKwlkZWZhdWx0OgorCQlXTEFOX0xPR19XQVJOSU5HKCJVbmtub3duIG1nbXQgcmVxdWVzdCBtZXNzYWdlIDB4JTA4eCIsIG1zZy0+bXNnY29kZSk7CisJCWJyZWFrOworCX0KKworCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2lmc3RhdGUKKyoKKyogSW50ZXJmYWNlIHN0YXRlLiAgVGhpcyBpcyB0aGUgcHJpbWFyeSBXTEFOIGludGVyZmFjZSBlbmFibGUvZGlzYWJsZQorKiBoYW5kbGVyLiAgRm9sbG93aW5nIHRoZSBkcml2ZXIvbG9hZC9kZXZpY2Vwcm9iZSBzZXF1ZW5jZSwgdGhpcworKiBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RhdGUgb2YgImVuYWJsZSIgYmVmb3JlIGFueSBvdGhlcgorKiBjb21tYW5kcyB3aWxsIGJlIGFjY2VwdGVkLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgltc2dwCQlwdHIgdG8gbXNnIGJ1ZmZlcgorKgorKiBSZXR1cm5zOgorKiAJQSBwODAyMTEgbWVzc2FnZSByZXN1bHRjb2RlIHZhbHVlLgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQgICh1c3VhbGx5KQorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworVUlOVDMyIHByaXNtMnN0YV9pZnN0YXRlKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgVUlOVDMyIGlmc3RhdGUpCit7CisgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCVVJTlQzMiAJCQlyZXN1bHQ7CisJREJGRU5URVI7CisKKwlyZXN1bHQgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKworCVdMQU5fTE9HX0RFQlVHKDIsICJDdXJyZW50IE1TRCBzdGF0ZSglZCksIHJlcXVlc3RpbmcoJWQpXG4iLAorCSAgICAgICAgICAgICAgICAgIHdsYW5kZXYtPm1zZHN0YXRlLCBpZnN0YXRlKTsKKwlzd2l0Y2ggKGlmc3RhdGUpCisJeworCWNhc2UgUDgwMjExRU5VTV9pZnN0YXRlX2Z3bG9hZDoKKwkJc3dpdGNoICh3bGFuZGV2LT5tc2RzdGF0ZSkgeworCQljYXNlIFdMQU5fTVNEX0hXUFJFU0VOVDoKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfRldMT0FEX1BFTkRJTkc7CisJCQkvKgorCQkJICogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlK2RyaXZlciBzdWZmaWNpZW50bHkKKwkJCSAqIGZvciBmaXJtd2FyZSBsb2FkaW5nLgorCQkJICovCisjaWYgKFdMQU5fSE9TVElGICE9IFdMQU5fVVNCKQorCQkJcmVzdWx0PWhmYTM4NHhfY21kX2luaXRpYWxpemUoaHcpOworI2Vsc2UKKwkJCWlmICgocmVzdWx0PWhmYTM4NHhfZHJ2cl9zdGFydChodykpKSB7CisJCQkJV0xBTl9MT0dfRVJST1IoCisJCQkJCSJoZmEzODR4X2RydnJfc3RhcnQoKSBmYWlsZWQsIgorCQkJCQkicmVzdWx0PSVkXG4iLCAoaW50KXJlc3VsdCk7CisJCQkJcmVzdWx0ID0KKwkJCQlQODAyMTFFTlVNX3Jlc3VsdGNvZGVfaW1wbGVtZW50YXRpb25fZmFpbHVyZTsKKwkJCQl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKwkJCQlicmVhazsKKwkJCX0KKyNlbmRpZgorCQkJd2xhbmRldi0+bXNkc3RhdGUgPSBXTEFOX01TRF9GV0xPQUQ7CisJCQlyZXN1bHQgPSBQODAyMTFFTlVNX3Jlc3VsdGNvZGVfc3VjY2VzczsKKwkJCWJyZWFrOworCQljYXNlIFdMQU5fTVNEX0ZXTE9BRDoKKwkJCWhmYTM4NHhfY21kX2luaXRpYWxpemUoaHcpOworCQkJcmVzdWx0ID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX01TRF9SVU5OSU5HOgorCQkJV0xBTl9MT0dfV0FSTklORygKKwkJCQkiQ2Fubm90IGVudGVyIGZ3bG9hZCBzdGF0ZSBmcm9tIGVuYWJsZSBzdGF0ZSwiCisJCQkJInlvdSBtdXN0IGRpc2FibGUgZmlyc3QuXG4iKTsKKwkJCXJlc3VsdCA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbnZhbGlkX3BhcmFtZXRlcnM7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX01TRF9IV0ZBSUw6CisJCWRlZmF1bHQ6CisJCQkvKiBwcm9iZSgpIGhhZCBhIHByb2JsZW0gb3IgdGhlIG1zZHN0YXRlIGNvbnRhaW5zCisJCQkgKiBhbiB1bnJlY29nbml6ZWQgdmFsdWUsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8uCisJCQkgKi8KKwkJCXJlc3VsdCA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBQODAyMTFFTlVNX2lmc3RhdGVfZW5hYmxlOgorCQlzd2l0Y2ggKHdsYW5kZXYtPm1zZHN0YXRlKSB7CisJCWNhc2UgV0xBTl9NU0RfSFdQUkVTRU5UOgorCQljYXNlIFdMQU5fTVNEX0ZXTE9BRDoKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfUlVOTklOR19QRU5ESU5HOworCQkJLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlK2RyaXZlciBmb3IgZnVsbAorCQkJICogb3BlcmF0aW9uLiBOb3RlIHRoYXQgdGhpcyBtaWdodCBtZSBhbiBGV0xPQUQgdG8KKwkJCSAqIHRvIFJVTk5JTkcgdHJhbnNpdGlvbiBzbyB3ZSBtdXN0IG5vdCBkbyBhIGNoaXAKKwkJCSAqIG9yIGJvYXJkIGxldmVsIHJlc2V0LiAgTm90ZSB0aGF0IG9uIGZhaWx1cmUsCisJCQkgKiB0aGUgTVNEIHN0YXRlIGlzIHNldCB0byBIV1BSRVNFTlQgYmVjYXVzZSB3ZQorCQkJICogY2FuJ3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHN0YXRlCisJCQkgKiBvZiB0aGUgaGFyZHdhcmUgb3IgYSBwcmV2aW91cyBmaXJtd2FyZSBsb2FkLgorCQkJICovCisJCQlpZiAoKHJlc3VsdD1oZmEzODR4X2RydnJfc3RhcnQoaHcpKSkgeworCQkJCVdMQU5fTE9HX0VSUk9SKAorCQkJCQkiaGZhMzg0eF9kcnZyX3N0YXJ0KCkgZmFpbGVkLCIKKwkJCQkJInJlc3VsdD0lZFxuIiwgKGludClyZXN1bHQpOworCQkJCXJlc3VsdCA9CisJCQkJUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ltcGxlbWVudGF0aW9uX2ZhaWx1cmU7CisJCQkJd2xhbmRldi0+bXNkc3RhdGUgPSBXTEFOX01TRF9IV1BSRVNFTlQ7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICgocmVzdWx0PXByaXNtMnN0YV9nZXRjYXJkaW5mbyh3bGFuZGV2KSkpIHsKKwkJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkJInByaXNtMnN0YV9nZXRjYXJkaW5mbygpIGZhaWxlZCwiCisJCQkJCSJyZXN1bHQ9JWRcbiIsIChpbnQpcmVzdWx0KTsKKwkJCQlyZXN1bHQgPQorCQkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJCWhmYTM4NHhfZHJ2cl9zdG9wKGh3KTsKKwkJCQl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmICgocmVzdWx0PXByaXNtMnN0YV9nbG9iYWxzZXR1cCh3bGFuZGV2KSkpIHsKKwkJCQlXTEFOX0xPR19FUlJPUigKKwkJCQkJInByaXNtMnN0YV9nbG9iYWxzZXR1cCgpIGZhaWxlZCwiCisJCQkJCSJyZXN1bHQ9JWRcbiIsIChpbnQpcmVzdWx0KTsKKwkJCQlyZXN1bHQgPQorCQkJCVA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJCWhmYTM4NHhfZHJ2cl9zdG9wKGh3KTsKKwkJCQl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfUlVOTklORzsKKwkJCWh3LT5qb2luX2FwID0gMDsKKwkJCWh3LT5qb2luX3JldHJpZXMgPSA2MDsKKwkJCXJlc3VsdCA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9zdWNjZXNzOworCQkJYnJlYWs7CisJCWNhc2UgV0xBTl9NU0RfUlVOTklORzoKKwkJCS8qIERvIG5vdGhpbmcsIHdlJ3JlIGFscmVhZHkgaW4gdGhpcyBzdGF0ZS4qLworCQkJcmVzdWx0ID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX01TRF9IV0ZBSUw6CisJCWRlZmF1bHQ6CisJCQkvKiBwcm9iZSgpIGhhZCBhIHByb2JsZW0gb3IgdGhlIG1zZHN0YXRlIGNvbnRhaW5zCisJCQkgKiBhbiB1bnJlY29nbml6ZWQgdmFsdWUsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8uCisJCQkgKi8KKwkJCXJlc3VsdCA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBQODAyMTFFTlVNX2lmc3RhdGVfZGlzYWJsZToKKwkJc3dpdGNoICh3bGFuZGV2LT5tc2RzdGF0ZSkgeworCQljYXNlIFdMQU5fTVNEX0hXUFJFU0VOVDoKKwkJCS8qIERvIG5vdGhpbmcsIHdlJ3JlIGFscmVhZHkgaW4gdGhpcyBzdGF0ZS4qLworCQkJcmVzdWx0ID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX01TRF9GV0xPQUQ6CisJCWNhc2UgV0xBTl9NU0RfUlVOTklORzoKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdQUkVTRU5UX1BFTkRJTkc7CisJCQkvKgorCQkJICogVE9ETzogU2h1dCBkb3duIHRoZSBNQUMgY29tcGxldGVseS4gSGVyZSBhIGNoaXAKKwkJCSAqIG9yIGJvYXJkIGxldmVsIHJlc2V0IGlzIHByb2JhYmx5IGNhbGxlZCBmb3IuCisJCQkgKiBBZnRlciBhICJkaXNhYmxlIiBfYWxsXyByZXN1bHRzIGFyZSBsb3N0LCBldmVuCisJCQkgKiB0aG9zZSBmcm9tIGEgZndsb2FkLgorCQkJICovCisJCQlpZiAoIXdsYW5kZXYtPmh3cmVtb3ZlZCkKKwkJCQluZXRpZl9jYXJyaWVyX29mZih3bGFuZGV2LT5uZXRkZXYpOworCisJCQloZmEzODR4X2RydnJfc3RvcChodyk7CisKKwkJCXdsYW5kZXYtPm1hY21vZGUgPSBXTEFOX01BQ01PREVfTk9ORTsKKwkJCXdsYW5kZXYtPm1zZHN0YXRlID0gV0xBTl9NU0RfSFdQUkVTRU5UOworCQkJcmVzdWx0ID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX3N1Y2Nlc3M7CisJCQlicmVhazsKKwkJY2FzZSBXTEFOX01TRF9IV0ZBSUw6CisJCWRlZmF1bHQ6CisJCQkvKiBwcm9iZSgpIGhhZCBhIHByb2JsZW0gb3IgdGhlIG1zZHN0YXRlIGNvbnRhaW5zCisJCQkgKiBhbiB1bnJlY29nbml6ZWQgdmFsdWUsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8uCisJCQkgKi8KKwkJCXJlc3VsdCA9IFA4MDIxMUVOVU1fcmVzdWx0Y29kZV9pbXBsZW1lbnRhdGlvbl9mYWlsdXJlOworCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmVzdWx0ID0gUDgwMjExRU5VTV9yZXN1bHRjb2RlX2ludmFsaWRfcGFyYW1ldGVyczsKKwkJYnJlYWs7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm4gcmVzdWx0OworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZ2V0Y2FyZGluZm8KKyoKKyogQ29sbGVjdCB0aGUgTklDSUQsIGZpcm13YXJlIHZlcnNpb24gYW5kIGFueSBvdGhlciBpZGVudGlmaWVycworKiB3ZSdkIGxpa2UgdG8gaGF2ZSBpbiBob3N0LXNpZGUgZGF0YSBzdHJ1Y3R1cmVzLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKgkwCXN1Y2Nlc3MKKyoJPjAJZi93IHJlcG9ydGVkIGVycm9yCisqCTwwCWRyaXZlciByZXBvcnRlZCBlcnJvcgorKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJRWl0aGVyLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHByaXNtMnN0YV9nZXRjYXJkaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJaW50IAkJCXJlc3VsdCA9IDA7CisgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCVVJTlQxNiAgICAgICAgICAgICAgICAgIHRlbXA7CisJVUlOVDgJCQlzbnVtW0hGQTM4NHhfUklEX05JQ1NFUklBTE5VTUJFUl9MRU5dOworCWNoYXIJCQlwc3RyWyhIRkEzODR4X1JJRF9OSUNTRVJJQUxOVU1CRVJfTEVOICogNCkgKyAxXTsKKworCURCRkVOVEVSOworCisJLyogQ29sbGVjdCB2ZXJzaW9uIGFuZCBjb21wYXRpYmlsaXR5IGluZm8gKi8KKwkvKiAgU29tZSBhcmUgY3JpdGljYWwsIHNvbWUgYXJlIG5vdCAqLworCS8qIE5JQyBpZGVudGl0eSAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX05JQ0lERU5USVRZLAorCQkJJmh3LT5pZGVudF9uaWMsIHNpemVvZihoZmEzODR4X2NvbXBpZGVudF90KSk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgTklDSURFTlRJVFlcbiIpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBnZXQgYWxsIHRoZSBuaWMgaWQgZmllbGRzIGluIGhvc3QgYnl0ZSBvcmRlciAqLworCWh3LT5pZGVudF9uaWMuaWQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmlkZW50X25pYy5pZCk7CisJaHctPmlkZW50X25pYy52YXJpYW50ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5pZGVudF9uaWMudmFyaWFudCk7CisJaHctPmlkZW50X25pYy5tYWpvciA9IGhmYTM4NHgyaG9zdF8xNihody0+aWRlbnRfbmljLm1ham9yKTsKKwlody0+aWRlbnRfbmljLm1pbm9yID0gaGZhMzg0eDJob3N0XzE2KGh3LT5pZGVudF9uaWMubWlub3IpOworCisJV0xBTl9MT0dfSU5GTyggImlkZW50OiBuaWMgaC93OiBpZD0weCUwMnggJWQuJWQuJWRcbiIsCisJCQlody0+aWRlbnRfbmljLmlkLCBody0+aWRlbnRfbmljLm1ham9yLAorCQkJaHctPmlkZW50X25pYy5taW5vciwgaHctPmlkZW50X25pYy52YXJpYW50KTsKKworCS8qIFByaW1hcnkgZi93IGlkZW50aXR5ICovCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgSEZBMzg0eF9SSURfUFJJSURFTlRJVFksCisJCQkmaHctPmlkZW50X3ByaV9mdywgc2l6ZW9mKGhmYTM4NHhfY29tcGlkZW50X3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBQUklJREVOVElUWVxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIGdldCBhbGwgdGhlIHByaXZhdGUgZncgaWQgZmllbGRzIGluIGhvc3QgYnl0ZSBvcmRlciAqLworCWh3LT5pZGVudF9wcmlfZncuaWQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmlkZW50X3ByaV9mdy5pZCk7CisJaHctPmlkZW50X3ByaV9mdy52YXJpYW50ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5pZGVudF9wcmlfZncudmFyaWFudCk7CisJaHctPmlkZW50X3ByaV9mdy5tYWpvciA9IGhmYTM4NHgyaG9zdF8xNihody0+aWRlbnRfcHJpX2Z3Lm1ham9yKTsKKwlody0+aWRlbnRfcHJpX2Z3Lm1pbm9yID0gaGZhMzg0eDJob3N0XzE2KGh3LT5pZGVudF9wcmlfZncubWlub3IpOworCisJV0xBTl9MT0dfSU5GTyggImlkZW50OiBwcmkgZi93OiBpZD0weCUwMnggJWQuJWQuJWRcbiIsCisJCQlody0+aWRlbnRfcHJpX2Z3LmlkLCBody0+aWRlbnRfcHJpX2Z3Lm1ham9yLAorCQkJaHctPmlkZW50X3ByaV9mdy5taW5vciwgaHctPmlkZW50X3ByaV9mdy52YXJpYW50KTsKKworCS8qIFN0YXRpb24gKFNlY29uZGFyeT8pIGYvdyBpZGVudGl0eSAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX1NUQUlERU5USVRZLAorCQkJJmh3LT5pZGVudF9zdGFfZncsIHNpemVvZihoZmEzODR4X2NvbXBpZGVudF90KSk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgU1RBSURFTlRJVFlcbiIpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwlpZiAoaHctPmlkZW50X25pYy5pZCA8IDB4ODAwMCkgeworCQlXTEFOX0xPR19FUlJPUigiRkFUQUw6IENhcmQgaXMgbm90IGFuIEludGVyc2lsIFByaXNtMi8yLjUvM1xuIik7CisJCXJlc3VsdCA9IC0xOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBnZXQgYWxsIHRoZSBzdGF0aW9uIGZ3IGlkIGZpZWxkcyBpbiBob3N0IGJ5dGUgb3JkZXIgKi8KKwlody0+aWRlbnRfc3RhX2Z3LmlkID0gaGZhMzg0eDJob3N0XzE2KGh3LT5pZGVudF9zdGFfZncuaWQpOworCWh3LT5pZGVudF9zdGFfZncudmFyaWFudCA9IGhmYTM4NHgyaG9zdF8xNihody0+aWRlbnRfc3RhX2Z3LnZhcmlhbnQpOworCWh3LT5pZGVudF9zdGFfZncubWFqb3IgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmlkZW50X3N0YV9mdy5tYWpvcik7CisJaHctPmlkZW50X3N0YV9mdy5taW5vciA9IGhmYTM4NHgyaG9zdF8xNihody0+aWRlbnRfc3RhX2Z3Lm1pbm9yKTsKKworCS8qIHN0cmlwIG91dCB0aGUgJ3NwZWNpYWwnIHZhcmlhbnQgYml0cyAqLworCWh3LT5tbV9tb2RzID0gaHctPmlkZW50X3N0YV9mdy52YXJpYW50ICYgKEJJVDE0IHwgQklUMTUpOworCWh3LT5pZGVudF9zdGFfZncudmFyaWFudCAmPSB+KChVSU5UMTYpKEJJVDE0IHwgQklUMTUpKTsKKworCWlmICAoIGh3LT5pZGVudF9zdGFfZncuaWQgPT0gMHgxZiApIHsKKwkJaHctPmFwID0gMDsKKwkJV0xBTl9MT0dfSU5GTygKKwkJCSJpZGVudDogc3RhIGYvdzogaWQ9MHglMDJ4ICVkLiVkLiVkXG4iLAorCQkJaHctPmlkZW50X3N0YV9mdy5pZCwgaHctPmlkZW50X3N0YV9mdy5tYWpvciwKKwkJCWh3LT5pZGVudF9zdGFfZncubWlub3IsIGh3LT5pZGVudF9zdGFfZncudmFyaWFudCk7CisJfSBlbHNlIHsKKwkJaHctPmFwID0gMTsKKwkJV0xBTl9MT0dfSU5GTygKKwkJCSJpZGVudDogIGFwIGYvdzogaWQ9MHglMDJ4ICVkLiVkLiVkXG4iLAorCQkJaHctPmlkZW50X3N0YV9mdy5pZCwgaHctPmlkZW50X3N0YV9mdy5tYWpvciwKKwkJCWh3LT5pZGVudF9zdGFfZncubWlub3IsIGh3LT5pZGVudF9zdGFfZncudmFyaWFudCk7CisJfQorCisJLyogQ29tcGF0aWJpbGl0eSByYW5nZSwgTW9kZW0gc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9NRklTVVBSQU5HRSwKKwkJCSZody0+Y2FwX3N1cF9tZmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBNRklTVVBSQU5HRVxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIGdldCBhbGwgdGhlIENvbXBhdGliaWxpdHkgcmFuZ2UsIG1vZGVtIGludGVyZmFjZSBzdXBwbGllcgorCWZpZWxkcyBpbiBieXRlIG9yZGVyICovCisJaHctPmNhcF9zdXBfbWZpLnJvbGUgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfbWZpLnJvbGUpOworCWh3LT5jYXBfc3VwX21maS5pZCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9tZmkuaWQpOworCWh3LT5jYXBfc3VwX21maS52YXJpYW50ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX21maS52YXJpYW50KTsKKwlody0+Y2FwX3N1cF9tZmkuYm90dG9tID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX21maS5ib3R0b20pOworCWh3LT5jYXBfc3VwX21maS50b3AgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfbWZpLnRvcCk7CisKKwlXTEFOX0xPR19JTkZPKAorCQkiTUZJOlNVUDpyb2xlPTB4JTAyeDppZD0weCUwMng6dmFyPTB4JTAyeDpiL3Q9JWQvJWRcbiIsCisJCWh3LT5jYXBfc3VwX21maS5yb2xlLCBody0+Y2FwX3N1cF9tZmkuaWQsCisJCWh3LT5jYXBfc3VwX21maS52YXJpYW50LCBody0+Y2FwX3N1cF9tZmkuYm90dG9tLAorCQlody0+Y2FwX3N1cF9tZmkudG9wKTsKKworCS8qIENvbXBhdGliaWxpdHkgcmFuZ2UsIENvbnRyb2xsZXIgc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9DRklTVVBSQU5HRSwKKwkJCSZody0+Y2FwX3N1cF9jZmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBDRklTVVBSQU5HRVxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIGdldCBhbGwgdGhlIENvbXBhdGliaWxpdHkgcmFuZ2UsIGNvbnRyb2xsZXIgaW50ZXJmYWNlIHN1cHBsaWVyCisJZmllbGRzIGluIGJ5dGUgb3JkZXIgKi8KKwlody0+Y2FwX3N1cF9jZmkucm9sZSA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9jZmkucm9sZSk7CisJaHctPmNhcF9zdXBfY2ZpLmlkID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX2NmaS5pZCk7CisJaHctPmNhcF9zdXBfY2ZpLnZhcmlhbnQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfY2ZpLnZhcmlhbnQpOworCWh3LT5jYXBfc3VwX2NmaS5ib3R0b20gPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfY2ZpLmJvdHRvbSk7CisJaHctPmNhcF9zdXBfY2ZpLnRvcCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9jZmkudG9wKTsKKworCVdMQU5fTE9HX0lORk8oCisJCSJDRkk6U1VQOnJvbGU9MHglMDJ4OmlkPTB4JTAyeDp2YXI9MHglMDJ4OmIvdD0lZC8lZFxuIiwKKwkJaHctPmNhcF9zdXBfY2ZpLnJvbGUsIGh3LT5jYXBfc3VwX2NmaS5pZCwKKwkJaHctPmNhcF9zdXBfY2ZpLnZhcmlhbnQsIGh3LT5jYXBfc3VwX2NmaS5ib3R0b20sCisJCWh3LT5jYXBfc3VwX2NmaS50b3ApOworCisJLyogQ29tcGF0aWJpbGl0eSByYW5nZSwgUHJpbWFyeSBmL3cgc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9QUklTVVBSQU5HRSwKKwkJCSZody0+Y2FwX3N1cF9wcmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBQUklTVVBSQU5HRVxuIik7CisJCWdvdG8gZmFpbGVkOworCX0KKworCS8qIGdldCBhbGwgdGhlIENvbXBhdGliaWxpdHkgcmFuZ2UsIHByaW1hcnkgZmlybXdhcmUgc3VwcGxpZXIKKwlmaWVsZHMgaW4gYnl0ZSBvcmRlciAqLworCWh3LT5jYXBfc3VwX3ByaS5yb2xlID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX3ByaS5yb2xlKTsKKwlody0+Y2FwX3N1cF9wcmkuaWQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfcHJpLmlkKTsKKwlody0+Y2FwX3N1cF9wcmkudmFyaWFudCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9wcmkudmFyaWFudCk7CisJaHctPmNhcF9zdXBfcHJpLmJvdHRvbSA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9wcmkuYm90dG9tKTsKKwlody0+Y2FwX3N1cF9wcmkudG9wID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX3ByaS50b3ApOworCisJV0xBTl9MT0dfSU5GTygKKwkJIlBSSTpTVVA6cm9sZT0weCUwMng6aWQ9MHglMDJ4OnZhcj0weCUwMng6Yi90PSVkLyVkXG4iLAorCQlody0+Y2FwX3N1cF9wcmkucm9sZSwgaHctPmNhcF9zdXBfcHJpLmlkLAorCQlody0+Y2FwX3N1cF9wcmkudmFyaWFudCwgaHctPmNhcF9zdXBfcHJpLmJvdHRvbSwKKwkJaHctPmNhcF9zdXBfcHJpLnRvcCk7CisKKwkvKiBDb21wYXRpYmlsaXR5IHJhbmdlLCBTdGF0aW9uIGYvdyBzdXBwbGllciAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX1NUQVNVUFJBTkdFLAorCQkJJmh3LT5jYXBfc3VwX3N0YSwgc2l6ZW9mKGhmYTM4NHhfY2FwbGV2ZWxfdCkpOworCWlmICggcmVzdWx0ICkgeworCQlXTEFOX0xPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIFNUQVNVUFJBTkdFXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogZ2V0IGFsbCB0aGUgQ29tcGF0aWJpbGl0eSByYW5nZSwgc3RhdGlvbiBmaXJtd2FyZSBzdXBwbGllcgorCWZpZWxkcyBpbiBieXRlIG9yZGVyICovCisJaHctPmNhcF9zdXBfc3RhLnJvbGUgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfc3RhLnJvbGUpOworCWh3LT5jYXBfc3VwX3N0YS5pZCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX3N1cF9zdGEuaWQpOworCWh3LT5jYXBfc3VwX3N0YS52YXJpYW50ID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX3N0YS52YXJpYW50KTsKKwlody0+Y2FwX3N1cF9zdGEuYm90dG9tID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfc3VwX3N0YS5ib3R0b20pOworCWh3LT5jYXBfc3VwX3N0YS50b3AgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9zdXBfc3RhLnRvcCk7CisKKwlpZiAoIGh3LT5jYXBfc3VwX3N0YS5pZCA9PSAweDA0ICkgeworCQlXTEFOX0xPR19JTkZPKAorCQkiU1RBOlNVUDpyb2xlPTB4JTAyeDppZD0weCUwMng6dmFyPTB4JTAyeDpiL3Q9JWQvJWRcbiIsCisJCWh3LT5jYXBfc3VwX3N0YS5yb2xlLCBody0+Y2FwX3N1cF9zdGEuaWQsCisJCWh3LT5jYXBfc3VwX3N0YS52YXJpYW50LCBody0+Y2FwX3N1cF9zdGEuYm90dG9tLAorCQlody0+Y2FwX3N1cF9zdGEudG9wKTsKKwl9IGVsc2UgeworCQlXTEFOX0xPR19JTkZPKAorCQkiQVA6U1VQOnJvbGU9MHglMDJ4OmlkPTB4JTAyeDp2YXI9MHglMDJ4OmIvdD0lZC8lZFxuIiwKKwkJaHctPmNhcF9zdXBfc3RhLnJvbGUsIGh3LT5jYXBfc3VwX3N0YS5pZCwKKwkJaHctPmNhcF9zdXBfc3RhLnZhcmlhbnQsIGh3LT5jYXBfc3VwX3N0YS5ib3R0b20sCisJCWh3LT5jYXBfc3VwX3N0YS50b3ApOworCX0KKworCS8qIENvbXBhdGliaWxpdHkgcmFuZ2UsIHByaW1hcnkgZi93IGFjdG9yLCBDRkkgc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9QUklfQ0ZJQUNUUkFOR0VTLAorCQkJJmh3LT5jYXBfYWN0X3ByaV9jZmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBQUklfQ0ZJQUNUUkFOR0VTXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogZ2V0IGFsbCB0aGUgQ29tcGF0aWJpbGl0eSByYW5nZSwgcHJpbWFyeSBmL3cgYWN0b3IsIENGSSBzdXBwbGllcgorCWZpZWxkcyBpbiBieXRlIG9yZGVyICovCisJaHctPmNhcF9hY3RfcHJpX2NmaS5yb2xlID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfYWN0X3ByaV9jZmkucm9sZSk7CisJaHctPmNhcF9hY3RfcHJpX2NmaS5pZCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9wcmlfY2ZpLmlkKTsKKwlody0+Y2FwX2FjdF9wcmlfY2ZpLnZhcmlhbnQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3RfcHJpX2NmaS52YXJpYW50KTsKKwlody0+Y2FwX2FjdF9wcmlfY2ZpLmJvdHRvbSA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9wcmlfY2ZpLmJvdHRvbSk7CisJaHctPmNhcF9hY3RfcHJpX2NmaS50b3AgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3RfcHJpX2NmaS50b3ApOworCisJV0xBTl9MT0dfSU5GTygKKwkJIlBSSS1DRkk6QUNUOnJvbGU9MHglMDJ4OmlkPTB4JTAyeDp2YXI9MHglMDJ4OmIvdD0lZC8lZFxuIiwKKwkJaHctPmNhcF9hY3RfcHJpX2NmaS5yb2xlLCBody0+Y2FwX2FjdF9wcmlfY2ZpLmlkLAorCQlody0+Y2FwX2FjdF9wcmlfY2ZpLnZhcmlhbnQsIGh3LT5jYXBfYWN0X3ByaV9jZmkuYm90dG9tLAorCQlody0+Y2FwX2FjdF9wcmlfY2ZpLnRvcCk7CisKKwkvKiBDb21wYXRpYmlsaXR5IHJhbmdlLCBzdGEgZi93IGFjdG9yLCBDRkkgc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9TVEFfQ0ZJQUNUUkFOR0VTLAorCQkJJmh3LT5jYXBfYWN0X3N0YV9jZmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBTVEFfQ0ZJQUNUUkFOR0VTXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogZ2V0IGFsbCB0aGUgQ29tcGF0aWJpbGl0eSByYW5nZSwgc3RhdGlvbiBmL3cgYWN0b3IsIENGSSBzdXBwbGllcgorCWZpZWxkcyBpbiBieXRlIG9yZGVyICovCisJaHctPmNhcF9hY3Rfc3RhX2NmaS5yb2xlID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfYWN0X3N0YV9jZmkucm9sZSk7CisJaHctPmNhcF9hY3Rfc3RhX2NmaS5pZCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9zdGFfY2ZpLmlkKTsKKwlody0+Y2FwX2FjdF9zdGFfY2ZpLnZhcmlhbnQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3Rfc3RhX2NmaS52YXJpYW50KTsKKwlody0+Y2FwX2FjdF9zdGFfY2ZpLmJvdHRvbSA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9zdGFfY2ZpLmJvdHRvbSk7CisJaHctPmNhcF9hY3Rfc3RhX2NmaS50b3AgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3Rfc3RhX2NmaS50b3ApOworCisJV0xBTl9MT0dfSU5GTygKKwkJIlNUQS1DRkk6QUNUOnJvbGU9MHglMDJ4OmlkPTB4JTAyeDp2YXI9MHglMDJ4OmIvdD0lZC8lZFxuIiwKKwkJaHctPmNhcF9hY3Rfc3RhX2NmaS5yb2xlLCBody0+Y2FwX2FjdF9zdGFfY2ZpLmlkLAorCQlody0+Y2FwX2FjdF9zdGFfY2ZpLnZhcmlhbnQsIGh3LT5jYXBfYWN0X3N0YV9jZmkuYm90dG9tLAorCQlody0+Y2FwX2FjdF9zdGFfY2ZpLnRvcCk7CisKKwkvKiBDb21wYXRpYmlsaXR5IHJhbmdlLCBzdGEgZi93IGFjdG9yLCBNRkkgc3VwcGxpZXIgKi8KKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9TVEFfTUZJQUNUUkFOR0VTLAorCQkJJmh3LT5jYXBfYWN0X3N0YV9tZmksIHNpemVvZihoZmEzODR4X2NhcGxldmVsX3QpKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBTVEFfTUZJQUNUUkFOR0VTXG4iKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCisJLyogZ2V0IGFsbCB0aGUgQ29tcGF0aWJpbGl0eSByYW5nZSwgc3RhdGlvbiBmL3cgYWN0b3IsIE1GSSBzdXBwbGllcgorCWZpZWxkcyBpbiBieXRlIG9yZGVyICovCisJaHctPmNhcF9hY3Rfc3RhX21maS5yb2xlID0gaGZhMzg0eDJob3N0XzE2KGh3LT5jYXBfYWN0X3N0YV9tZmkucm9sZSk7CisJaHctPmNhcF9hY3Rfc3RhX21maS5pZCA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9zdGFfbWZpLmlkKTsKKwlody0+Y2FwX2FjdF9zdGFfbWZpLnZhcmlhbnQgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3Rfc3RhX21maS52YXJpYW50KTsKKwlody0+Y2FwX2FjdF9zdGFfbWZpLmJvdHRvbSA9IGhmYTM4NHgyaG9zdF8xNihody0+Y2FwX2FjdF9zdGFfbWZpLmJvdHRvbSk7CisJaHctPmNhcF9hY3Rfc3RhX21maS50b3AgPSBoZmEzODR4Mmhvc3RfMTYoaHctPmNhcF9hY3Rfc3RhX21maS50b3ApOworCisJV0xBTl9MT0dfSU5GTygKKwkJIlNUQS1NRkk6QUNUOnJvbGU9MHglMDJ4OmlkPTB4JTAyeDp2YXI9MHglMDJ4OmIvdD0lZC8lZFxuIiwKKwkJaHctPmNhcF9hY3Rfc3RhX21maS5yb2xlLCBody0+Y2FwX2FjdF9zdGFfbWZpLmlkLAorCQlody0+Y2FwX2FjdF9zdGFfbWZpLnZhcmlhbnQsIGh3LT5jYXBfYWN0X3N0YV9tZmkuYm90dG9tLAorCQlody0+Y2FwX2FjdF9zdGFfbWZpLnRvcCk7CisKKwkvKiBTZXJpYWwgTnVtYmVyICovCisJcmVzdWx0ID0gaGZhMzg0eF9kcnZyX2dldGNvbmZpZyhodywgSEZBMzg0eF9SSURfTklDU0VSSUFMTlVNQkVSLAorCQkJc251bSwgSEZBMzg0eF9SSURfTklDU0VSSUFMTlVNQkVSX0xFTik7CisJaWYgKCAhcmVzdWx0ICkgeworCQl3bGFuX21rcHJpbnRzdHIoc251bSwgSEZBMzg0eF9SSURfTklDU0VSSUFMTlVNQkVSX0xFTiwKKwkJCQlwc3RyLCBzaXplb2YocHN0cikpOworCQlXTEFOX0xPR19JTkZPKCJQcmlzbTIgY2FyZCBTTjogJXNcbiIsIHBzdHIpOworCX0gZWxzZSB7CisJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgUHJpc20yIENhcmQgU05cbiIpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBDb2xsZWN0IHRoZSBNQUMgYWRkcmVzcyAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0NORk9XTk1BQ0FERFIsCisJCXdsYW5kZXYtPm5ldGRldi0+ZGV2X2FkZHIsIFdMQU5fQUREUl9MRU4pOworCWlmICggcmVzdWx0ICE9IDAgKSB7CisJCVdMQU5fTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgbWFjIGFkZHJlc3NcbiIpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBzaG9ydCBwcmVhbWJsZSBpcyBhbHdheXMgaW1wbGVtZW50ZWQgKi8KKwl3bGFuZGV2LT5uc2RjYXBzIHw9IFA4MDIxMV9OU0RDQVBfU0hPUlRfUFJFQU1CTEU7CisKKwkvKiBmaW5kIG91dCBpZiBoYXJkd2FyZSB3ZXAgaXMgaW1wbGVtZW50ZWQgKi8KKwloZmEzODR4X2RydnJfZ2V0Y29uZmlnMTYoaHcsIEhGQTM4NHhfUklEX1BSSVZBQ1lPUFRJTVAsICZ0ZW1wKTsKKwlpZiAodGVtcCkKKwkJd2xhbmRldi0+bnNkY2FwcyB8PSBQODAyMTFfTlNEQ0FQX0hBUkRXQVJFV0VQOworCisJLyogZ2V0IHRoZSBkQm0gU2NhbGluZyBjb25zdGFudCAqLworCWhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GREJNQURKVVNULCAmdGVtcCk7CisJaHctPmRibWFkanVzdCA9IHRlbXA7CisKKwkvKiBPbmx5IGVuYWJsZSBzY2FuIGJ5IGRlZmF1bHQgb24gbmV3ZXIgZmlybXdhcmUgKi8KKyAgICAgICAgaWYgKEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTihody0+aWRlbnRfc3RhX2Z3Lm1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5pZGVudF9zdGFfZncubWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHctPmlkZW50X3N0YV9mdy52YXJpYW50KSA8CisJICAgIEhGQTM4NHhfRklSTVdBUkVfVkVSU0lPTigxLDUsNSkpIHsKKwkJd2xhbmRldi0+bnNkY2FwcyB8PSBQODAyMTFfTlNEQ0FQX05PU0NBTjsKKwl9CisKKwkvKiBUT0RPOiBTZXQgYW55IGludGVybmFsbHkgbWFuYWdlZCBjb25maWcgaXRlbXMgKi8KKworCWdvdG8gZG9uZTsKK2ZhaWxlZDoKKwlXTEFOX0xPR19FUlJPUigiRmFpbGVkLCByZXN1bHQ9JWRcbiIsIHJlc3VsdCk7Citkb25lOgorCURCRkVYSVQ7CisJcmV0dXJuIHJlc3VsdDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2dsb2JhbHNldHVwCisqCisqIFNldCBhbnkgZ2xvYmFsIFJJRHMgdGhhdCB3ZSB3YW50IHRvIHNldCBhdCBkZXZpY2UgYWN0aXZhdGlvbi4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJMAlzdWNjZXNzCisqCT4wCWYvdyByZXBvcnRlZCBlcnJvcgorKgk8MAlkcml2ZXIgcmVwb3J0ZWQgZXJyb3IKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCXByb2Nlc3MgdGhyZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgcHJpc20yc3RhX2dsb2JhbHNldHVwKHdsYW5kZXZpY2VfdCAqd2xhbmRldikKK3sKKwloZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKworCS8qIFNldCB0aGUgbWF4aW11bSBmcmFtZSBzaXplICovCisJcmV0dXJuIGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNihodywgSEZBMzg0eF9SSURfQ05GTUFYREFUQUxFTiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXTEFOX0RBVEFfTUFYTEVOKTsKK30KKworc3RhdGljIGludCBwcmlzbTJzdGFfc2V0bXVsdGljYXN0KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgbmV0ZGV2aWNlX3QgKmRldikKK3sKKwlpbnQgcmVzdWx0ID0gMDsKKwloZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKworCVVJTlQxNiAgcHJvbWlzYzsKKworCURCRkVOVEVSOworCisJLyogSWYgd2UncmUgbm90IHJlYWR5LCB3aGF0J3MgdGhlIHBvaW50PyAqLworCWlmICggaHctPnN0YXRlICE9IEhGQTM4NHhfU1RBVEVfUlVOTklORyApCisJCWdvdG8gZXhpdDsKKworCS8qIElmIHdlJ3JlIGFuIEFQLCBkbyBub3RoaW5nIGhlcmUgKi8KKwlpZiAoaHctPmFwKQorCQlnb3RvIGV4aXQ7CisKKwlpZiAoIChkZXYtPmZsYWdzICYgKElGRl9QUk9NSVNDIHwgSUZGX0FMTE1VTFRJKSkgIT0gMCApCisJCXByb21pc2MgPSBQODAyMTFFTlVNX3RydXRoX3RydWU7CisJZWxzZQorCQlwcm9taXNjID0gUDgwMjExRU5VTV90cnV0aF9mYWxzZTsKKworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcxNl9hc3luYyhodywgSEZBMzg0eF9SSURfUFJPTUlTQ01PREUsIHByb21pc2MpOworCisJLyogWFhYIFRPRE86IGNvbmZpZ3VyZSB0aGUgbXVsdGljYXN0IGxpc3QgKi8KKwkvLyBDTEVBUl9IV19NVUxUSUNBU1RfTElTVAorCS8vIHN0cnVjdCBkZXZfbWNfbGlzdCBlbGVtZW50ID0gZGV2LT5tY19saXN0OworCS8vIHdoaWxlIChlbGVtZW50ICE9IG51bGwpIHsKKwkvLyAgSFdfQUREX01VTFRJQ0FTVF9BRERSKGVsZW1lbnQtPmRtaV9hZGRyLCBkbWlfYWRkcmxlbikKKwkvLyAgZWxlbWVudCA9IGVsZW1lbnQtPm5leHQ7CisJLy8gfQorCisgZXhpdDoKKwlEQkZFWElUOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfaW5mX2hhbmRvdmVyCisqCisqIEhhbmRsZXMgdGhlIHJlY2VpcHQgb2YgYSBIYW5kb3ZlciBpbmZvIGZyYW1lLiBTaG91bGQgb25seSBiZSBwcmVzZW50CisqIGluIEFQcyBvbmx5LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKglpbmYJCXB0ciB0byBpbmZvIGZyYW1lIChjb250ZW50cyBpbiBoZmEzODR4IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcHJpc20yc3RhX2luZl9oYW5kb3Zlcih3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKQoreworCURCRkVOVEVSOworCVdMQU5fTE9HX0RFQlVHKDIsInJlY2VpdmVkIGluZm9mcmFtZTpIQU5ET1ZFUiAodW5oYW5kbGVkKVxuIik7CisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9pbmZfdGFsbGllcworKgorKiBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIGEgQ29tbVRhbGxpZXMgaW5mbyBmcmFtZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJaW5mCQlwdHIgdG8gaW5mbyBmcmFtZSAoY29udGVudHMgaW4gaGZhMzg0eCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHByaXNtMnN0YV9pbmZfdGFsbGllcyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKQoreworICAgICAgICBoZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKwlVSU5UMTYJCQkqc3JjMTY7CisJVUlOVDMyCQkJKmRzdDsKKwlVSU5UMzIJCQkqc3JjMzI7CisJaW50CQkJaTsKKwlpbnQJCQljbnQ7CisKKwlEQkZFTlRFUjsKKworCS8qCisJKiogRGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSAxNi1iaXQgb3IgMzItYml0IHRhbGxpZXMsIGJhc2VkIG9uIHRoZQorCSoqIHJlY29yZCBsZW5ndGggb2YgdGhlIGluZm8gcmVjb3JkLgorCSovCisKKwljbnQgPSBzaXplb2YoaGZhMzg0eF9Db21tVGFsbGllczMyX3QpIC8gc2l6ZW9mKFVJTlQzMik7CisJaWYgKGluZi0+ZnJhbWVsZW4gPiAyMikgeworCQlkc3QgICA9IChVSU5UMzIgKikgJmh3LT50YWxsaWVzOworCQlzcmMzMiA9IChVSU5UMzIgKikgJmluZi0+aW5mby5jb21tdGFsbGllczMyOworCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyssIGRzdCsrLCBzcmMzMisrKQorCQkJKmRzdCArPSBoZmEzODR4Mmhvc3RfMzIoKnNyYzMyKTsKKwl9IGVsc2UgeworCQlkc3QgICA9IChVSU5UMzIgKikgJmh3LT50YWxsaWVzOworCQlzcmMxNiA9IChVSU5UMTYgKikgJmluZi0+aW5mby5jb21tdGFsbGllczE2OworCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyssIGRzdCsrLCBzcmMxNisrKQorCQkJKmRzdCArPSBoZmEzODR4Mmhvc3RfMTYoKnNyYzE2KTsKKwl9CisKKwlEQkZFWElUOworCisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2luZl9zY2FucmVzdWx0cworKgorKiBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIGEgU2NhbiBSZXN1bHRzIGluZm8gZnJhbWUuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCWluZgkJcHRyIHRvIGluZm8gZnJhbWUgKGNvbnRlbnRzIGluIGhmYTM4NHggb3JkZXIpCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBwcmlzbTJzdGFfaW5mX3NjYW5yZXN1bHRzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwKKwkJCQkgICAgICBoZmEzODR4X0luZkZyYW1lX3QgKmluZikKK3sKKworICAgICAgICBoZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKwlpbnQJCQluYnNzOworCWhmYTM4NHhfU2NhblJlc3VsdF90CSpzciA9ICYoaW5mLT5pbmZvLnNjYW5yZXN1bHQpOworCWludAkJCWk7CisJaGZhMzg0eF9Kb2luUmVxdWVzdF9kYXRhX3QJam9pbnJlcTsKKwlpbnQJCQlyZXN1bHQ7CisJREJGRU5URVI7CisKKwkvKiBHZXQgdGhlIG51bWJlciBvZiByZXN1bHRzLCBmaXJzdCBpbiBieXRlcywgdGhlbiBpbiByZXN1bHRzICovCisJbmJzcyA9IChpbmYtPmZyYW1lbGVuICogc2l6ZW9mKFVJTlQxNikpIC0KKwkJc2l6ZW9mKGluZi0+aW5mb3R5cGUpIC0KKwkJc2l6ZW9mKGluZi0+aW5mby5zY2FucmVzdWx0LnNjYW5yZWFzb24pOworCW5ic3MgLz0gc2l6ZW9mKGhmYTM4NHhfU2NhblJlc3VsdFN1Yl90KTsKKworCS8qIFByaW50IGVtICovCisJV0xBTl9MT0dfREVCVUcoMSwicnggc2NhbnJlc3VsdHMsIHJlYXNvbj0lZCwgbmJzcz0lZDpcbiIsCisJCWluZi0+aW5mby5zY2FucmVzdWx0LnNjYW5yZWFzb24sIG5ic3MpOworCWZvciAoIGkgPSAwOyBpIDwgbmJzczsgaSsrKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsICJjaGlkPSVkIGFubD0lZCBzbD0lZCBiY25pbnQ9JWRcbiIsCisJCQlzci0+cmVzdWx0W2ldLmNoaWQsCisJCQlzci0+cmVzdWx0W2ldLmFubCwKKwkJCXNyLT5yZXN1bHRbaV0uc2wsCisJCQlzci0+cmVzdWx0W2ldLmJjbmludCk7CisJCVdMQU5fTE9HX0RFQlVHKDEsICIgIGNhcGluZm89MHglMDR4IHByb2JlcmVzcF9yYXRlPSVkXG4iLAorCQkJc3ItPnJlc3VsdFtpXS5jYXBpbmZvLAorCQkJc3ItPnJlc3VsdFtpXS5wcm9iZXJlc3BfcmF0ZSk7CisJfQorCS8qIGlzc3VlIGEgam9pbiByZXF1ZXN0ICovCisJam9pbnJlcS5jaGFubmVsID0gc3ItPnJlc3VsdFswXS5jaGlkOworCW1lbWNweSggam9pbnJlcS5ic3NpZCwgc3ItPnJlc3VsdFswXS5ic3NpZCwgV0xBTl9CU1NJRF9MRU4pOworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoIGh3LAorCQkJSEZBMzg0eF9SSURfSk9JTlJFUVVFU1QsCisJCQkmam9pbnJlcSwgSEZBMzg0eF9SSURfSk9JTlJFUVVFU1RfTEVOKTsKKwlpZiAocmVzdWx0KSB7CisJCVdMQU5fTE9HX0VSUk9SKCJzZXRjb25maWcoam9pbnJlcSkgZmFpbGVkLCByZXN1bHQ9JWRcbiIsIHJlc3VsdCk7CisJfQorCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfaW5mX2hvc3RzY2FucmVzdWx0cworKgorKiBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIGEgU2NhbiBSZXN1bHRzIGluZm8gZnJhbWUuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCWluZgkJcHRyIHRvIGluZm8gZnJhbWUgKGNvbnRlbnRzIGluIGhmYTM4NHggb3JkZXIpCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBwcmlzbTJzdGFfaW5mX2hvc3RzY2FucmVzdWx0cyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQkJCSAgaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpCit7CisgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCWludAkJCW5ic3M7CisJREJGRU5URVI7CisKKwluYnNzID0gKGluZi0+ZnJhbWVsZW4gLSAzKSAvIDMyOworCVdMQU5fTE9HX0RFQlVHKDEsICJSZWNlaXZlZCAlZCBob3N0c2NhbiByZXN1bHRzXG4iLCBuYnNzKTsKKworCWlmIChuYnNzID4gMzIpCisJCW5ic3MgPSAzMjsKKworCWlmIChody0+c2NhbnJlc3VsdHMpCisJCWtmcmVlKGh3LT5zY2FucmVzdWx0cyk7CisKKwlody0+c2NhbnJlc3VsdHMgPSBrbWFsbG9jKHNpemVvZihoZmEzODR4X0luZkZyYW1lX3QpLCBHRlBfQVRPTUlDKTsKKwltZW1jcHkoaHctPnNjYW5yZXN1bHRzLCBpbmYsIHNpemVvZihoZmEzODR4X0luZkZyYW1lX3QpKTsKKworCWlmIChuYnNzID09IDApCisJCW5ic3MgPSAtMTsKKworICAgICAgICAvKiBOb3RpZnkvd2FrZSB0aGUgc2xlZXBpbmcgY2FsbGVyLiAqLworICAgICAgICBody0+c2NhbmZsYWcgPSBuYnNzOworICAgICAgICB3YWtlX3VwX2ludGVycnVwdGlibGUoJmh3LT5jbWRxKTsKKworCURCRkVYSVQ7Cit9OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2luZl9jaGluZm9yZXN1bHRzCisqCisqIEhhbmRsZXMgdGhlIHJlY2VpcHQgb2YgYSBDaGFubmVsIEluZm8gUmVzdWx0cyBpbmZvIGZyYW1lLgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKglpbmYJCXB0ciB0byBpbmZvIGZyYW1lIChjb250ZW50cyBpbiBoZmEzODR4IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcHJpc20yc3RhX2luZl9jaGluZm9yZXN1bHRzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwKKwkJCQkJaGZhMzg0eF9JbmZGcmFtZV90ICppbmYpCit7CisgICAgICAgIGhmYTM4NHhfdCAgICAgICAgICAgICAgICpodyA9IChoZmEzODR4X3QgKil3bGFuZGV2LT5wcml2OworCXVuc2lnbmVkIGludAkJaSwgbjsKKworCURCRkVOVEVSOworCWh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5zY2FuY2hhbm5lbHMgPQorCQloZmEzODR4Mmhvc3RfMTYoaW5mLT5pbmZvLmNoaW5mb3Jlc3VsdC5zY2FuY2hhbm5lbHMpOworI2lmIDAKKwltZW1jcHkoJmluZi0+aW5mby5jaGluZm9yZXN1bHQsICZody0+Y2hhbm5lbF9pbmZvLnJlc3VsdHMsIHNpemVvZihoZmEzODR4X0NoSW5mb1Jlc3VsdF90KSk7CisjZW5kaWYKKworCWZvciAoaT0wLCBuPTA7IGk8SEZBMzg0eF9DSElORk9SRVNVTFRfTUFYOyBpKyspIHsKKwkJaWYgKGh3LT5jaGFubmVsX2luZm8ucmVzdWx0cy5zY2FuY2hhbm5lbHMgJiAoMTw8aSkpIHsKKwkJCWludCAJY2hhbm5lbD1oZmEzODR4Mmhvc3RfMTYoaW5mLT5pbmZvLmNoaW5mb3Jlc3VsdC5yZXN1bHRbbl0uY2hpZCktMTsKKwkJCWhmYTM4NHhfQ2hJbmZvUmVzdWx0U3ViX3QgKmNoaW5mb3Jlc3VsdD0maHctPmNoYW5uZWxfaW5mby5yZXN1bHRzLnJlc3VsdFtjaGFubmVsXTsKKwkJCWNoaW5mb3Jlc3VsdC0+Y2hpZCAgID0gY2hhbm5lbDsKKwkJCWNoaW5mb3Jlc3VsdC0+YW5sICAgID0gaGZhMzg0eDJob3N0XzE2KGluZi0+aW5mby5jaGluZm9yZXN1bHQucmVzdWx0W25dLmFubCk7CisJCQljaGluZm9yZXN1bHQtPnBubCAgICA9IGhmYTM4NHgyaG9zdF8xNihpbmYtPmluZm8uY2hpbmZvcmVzdWx0LnJlc3VsdFtuXS5wbmwpOworCQkJY2hpbmZvcmVzdWx0LT5hY3RpdmUgPSBoZmEzODR4Mmhvc3RfMTYoaW5mLT5pbmZvLmNoaW5mb3Jlc3VsdC5yZXN1bHRbbl0uYWN0aXZlKTsKKwkJCVdMQU5fTE9HX0RFQlVHKDIsICJjaGluZm86IGNoYW5uZWwgJWQsICVzIGxldmVsIChhdmcvcGVhayk9JWQvJWQgZEIsIHBjZiAlZFxuIiwKKwkJCQkJY2hhbm5lbCsxLAorCQkJCQljaGluZm9yZXN1bHQtPmFjdGl2ZSAmCisJCQkJCUhGQTM4NHhfQ0hJTkZPUkVTVUxUX0JTU0FDVElWRSA/ICJzaWduYWwiIDogIm5vaXNlIiwKKwkJCQkJY2hpbmZvcmVzdWx0LT5hbmwsIGNoaW5mb3Jlc3VsdC0+cG5sLAorCQkJCQljaGluZm9yZXN1bHQtPmFjdGl2ZSAmIEhGQTM4NHhfQ0hJTkZPUkVTVUxUX1BDRkFDVElWRSA/IDEgOiAwCisJCQkpOworCQkJbisrOworCQl9CisJfQorCWF0b21pY19zZXQoJmh3LT5jaGFubmVsX2luZm8uZG9uZSwgMik7CisKKwlody0+Y2hhbm5lbF9pbmZvLmNvdW50ID0gbjsKKwlEQkZFWElUOworCXJldHVybjsKK30KKwordm9pZCBwcmlzbTJzdGFfcHJvY2Vzc2luZ19kZWZlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmRhdGEpCit7CisJaGZhMzg0eF90CQkqaHcgPSBjb250YWluZXJfb2YoZGF0YSwgc3RydWN0IGhmYTM4NHgsIGxpbmtfYmgpOworCXdsYW5kZXZpY2VfdCAgICAgICAgICAgICp3bGFuZGV2ID0gaHctPndsYW5kZXY7CisJaGZhMzg0eF9ieXRlc3RyMzJfdCBzc2lkOworCWludAkJCXJlc3VsdDsKKworCURCRkVOVEVSOworCS8qIEZpcnN0IGxldCdzIHByb2Nlc3MgdGhlIGF1dGggZnJhbWVzICovCisJeworCQlzdHJ1Y3Qgc2tfYnVmZiAgICAgICAgICAqc2tiOworCQloZmEzODR4X0luZkZyYW1lX3QgKmluZjsKKworCQl3aGlsZSAoIChza2IgPSBza2JfZGVxdWV1ZSgmaHctPmF1dGhxKSkgKSB7CisJCQlpbmYgPSAoaGZhMzg0eF9JbmZGcmFtZV90ICopIHNrYi0+ZGF0YTsKKwkJCXByaXNtMnN0YV9pbmZfYXV0aHJlcV9kZWZlcih3bGFuZGV2LCBpbmYpOworCQl9CisKKwl9CisKKwkvKiBOb3cgbGV0J3MgaGFuZGxlIHRoZSBsaW5rc3RhdHVzIHN0dWZmICovCisJaWYgKGh3LT5saW5rX3N0YXR1cyA9PSBody0+bGlua19zdGF0dXNfbmV3KQorCQlnb3RvIGZhaWxlZDsKKworCWh3LT5saW5rX3N0YXR1cyA9IGh3LT5saW5rX3N0YXR1c19uZXc7CisKKwlzd2l0Y2goaHctPmxpbmtfc3RhdHVzKSB7CisJY2FzZSBIRkEzODR4X0xJTktfTk9UQ09OTkVDVEVEOgorCQkvKiBJJ20gY3VycmVudGx5IGFzc3VtaW5nIHRoYXQgdGhpcyBpcyB0aGUgaW5pdGlhbCBsaW5rCisJCSAqIHN0YXRlLiAgSXQgc2hvdWxkIG9ubHkgYmUgcG9zc2libGUgaW1tZWRpYXRlbHkKKwkJICogZm9sbG93aW5nIGFuIEVuYWJsZSBjb21tYW5kLgorCQkgKiBSZXNwb25zZToKKwkJICogQmxvY2sgVHJhbnNtaXRzLCBJZ25vcmUgcmVjZWl2ZXMgb2YgZGF0YSBmcmFtZXMKKwkJICovCisJCW5ldGlmX2NhcnJpZXJfb2ZmKHdsYW5kZXYtPm5ldGRldik7CisKKwkJV0xBTl9MT0dfSU5GTygibGlua3N0YXR1cz1OT1RDT05ORUNURUQgKHVuaGFuZGxlZClcbiIpOworCQlicmVhazsKKworCWNhc2UgSEZBMzg0eF9MSU5LX0NPTk5FQ1RFRDoKKwkJLyogVGhpcyBvbmUgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCBzY2FuL2pvaW4vYXV0aC9hc3NvYy4KKwkJICogV2hlbiB3ZSBoYXZlIHRoZSBmdWxsIE1MTUUgY29tcGxlbWVudCwgdGhpcyBldmVudCB3aWxsCisJCSAqIHNpZ25pZnkgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIGJvdGggbWxtZV9hdXRoZW50aWNhdGUKKwkJICogYW5kIG1sbWVfYXNzb2NpYXRlLiAgU3RhdGUgbWFuYWdlbWVudCB3aWxsIGdldCBhIGxpdHRsZQorCQkgKiB1Z2x5IGhlcmUuCisJCSAqIFJlc3BvbnNlOgorCQkgKiBJbmRpY2F0ZSBhdXRoZW50aWNhdGlvbiBhbmQvb3IgYXNzb2NpYXRpb24KKwkJICogRW5hYmxlIFRyYW5zbWl0cywgUmVjZWl2ZXMgYW5kIHBhc3MgdXAgZGF0YSBmcmFtZXMKKwkJICovCisKKwkJbmV0aWZfY2Fycmllcl9vbih3bGFuZGV2LT5uZXRkZXYpOworCisJCS8qIElmIHdlIGFyZSBqb2luaW5nIGEgc3BlY2lmaWMgQVAsIHNldCBvdXIgc3RhdGUgYW5kIHJlc2V0IHJldHJpZXMgKi8KKwkJaWYoaHctPmpvaW5fYXAgPT0gMSkKKwkJCWh3LT5qb2luX2FwID0gMjsKKwkJaHctPmpvaW5fcmV0cmllcyA9IDYwOworCisJCS8qIERvbid0IGNhbGwgdGhpcyBpbiBtb25pdG9yIG1vZGUgKi8KKwkJaWYgKCB3bGFuZGV2LT5uZXRkZXYtPnR5cGUgPT0gQVJQSFJEX0VUSEVSICkgeworCQkJVUlOVDE2CQkJcG9ydHN0YXR1czsKKworCQkJV0xBTl9MT0dfSU5GTygibGlua3N0YXR1cz1DT05ORUNURURcbiIpOworCisJCQkvKiBGb3Igbm9uLXVzYiBkZXZpY2VzLCB3ZSBjYW4gdXNlIHRoZSBzeW5jIHZlcnNpb25zICovCisJCQkvKiBDb2xsZWN0IHRoZSBCU1NJRCwgYW5kIHNldCBzdGF0ZSB0byBhbGxvdyB0eCAqLworCisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LAorCQkJCQkJCUhGQTM4NHhfUklEX0NVUlJFTlRCU1NJRCwKKwkJCQkJCQl3bGFuZGV2LT5ic3NpZCwgV0xBTl9CU1NJRF9MRU4pOworCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCQkJICAgICAgICJnZXRjb25maWcoMHglMDJ4KSBmYWlsZWQsIHJlc3VsdCA9ICVkXG4iLAorCQkJCQkgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVEJTU0lELCByZXN1bHQpOworCQkJCWdvdG8gZmFpbGVkOworCQkJfQorCisJCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LAorCQkJCQkJCUhGQTM4NHhfUklEX0NVUlJFTlRTU0lELAorCQkJCQkJCSZzc2lkLCBzaXplb2Yoc3NpZCkpOworCQkJaWYgKCByZXN1bHQgKSB7CisJCQkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCQkJICAgICAgICJnZXRjb25maWcoMHglMDJ4KSBmYWlsZWQsIHJlc3VsdCA9ICVkXG4iLAorCQkJCQkgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFNTSUQsIHJlc3VsdCk7CisJCQkJZ290byBmYWlsZWQ7CisJCQl9CisJCQlwcmlzbTJtZ210X2J5dGVzdHIycHN0cigoaGZhMzg0eF9ieXRlc3RyX3QgKikmc3NpZCwKKwkJCQkJCShwODAyMTFwc3RyZF90ICopICZ3bGFuZGV2LT5zc2lkKTsKKworCQkJLyogQ29sbGVjdCB0aGUgcG9ydCBzdGF0dXMgKi8KKwkJCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcxNihodywKKwkJCQkJCQkgIEhGQTM4NHhfUklEX1BPUlRTVEFUVVMsICZwb3J0c3RhdHVzKTsKKwkJCWlmICggcmVzdWx0ICkgeworCQkJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkJCSAgICAgICAiZ2V0Y29uZmlnKDB4JTAyeCkgZmFpbGVkLCByZXN1bHQgPSAlZFxuIiwKKwkJCQkJICAgICAgIEhGQTM4NHhfUklEX1BPUlRTVEFUVVMsIHJlc3VsdCk7CisJCQkJZ290byBmYWlsZWQ7CisJCQl9CisJCQl3bGFuZGV2LT5tYWNtb2RlID0KKwkJCQkocG9ydHN0YXR1cyA9PSBIRkEzODR4X1BTVEFUVVNfQ09OTl9JQlNTKSA/CisJCQkJV0xBTl9NQUNNT0RFX0lCU1NfU1RBIDogV0xBTl9NQUNNT0RFX0VTU19TVEE7CisKKwkJCS8qIEdldCB0aGUgYmFsbCByb2xsaW5nIG9uIHRoZSBjb21tcyBxdWFsaXR5IHN0dWZmICovCisJCQlwcmlzbTJzdGFfY29tbXNxdWFsX2RlZmVyKCZody0+Y29tbXNxdWFsX2JoKTsKKwkJfQorCQlicmVhazsKKworCWNhc2UgSEZBMzg0eF9MSU5LX0RJU0NPTk5FQ1RFRDoKKwkJLyogVGhpcyBvbmUgaW5kaWNhdGVzIHRoYXQgb3VyIGFzc29jaWF0aW9uIGlzIGdvbmUuICBXZSd2ZQorCQkgKiBsb3N0IGNvbm5lY3Rpb24gd2l0aCB0aGUgQVAgYW5kL29yIGJlZW4gZGlzYXNzb2NpYXRlZC4KKwkJICogVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgTUFDIGhhcyBjb21wbGV0ZWx5IGNsZWFyZWQgaXQncworCQkgKiBhc3NvY2lhdGVkIHN0YXRlLiAgV2UgKiBzaG91bGQgc2VuZCBhIGRlYXV0aCBpbmRpY2F0aW9uCisJCSAqIChpbXBseWluZyBkaXNhc3NvYykgdXAgKiB0byB0aGUgTUxNRS4KKwkJICogUmVzcG9uc2U6CisJCSAqIEluZGljYXRlIERlYXV0aGVudGljYXRpb24KKwkJICogQmxvY2sgVHJhbnNtaXRzLCBJZ25vcmUgcmVjZWl2ZXMgb2YgZGF0YSBmcmFtZXMKKwkJICovCisJCWlmKGh3LT5qb2luX2FwID09IDIpCisJCXsKKwkJCWhmYTM4NHhfSm9pblJlcXVlc3RfZGF0YV90ICAgICAgam9pbnJlcTsKKwkJCWpvaW5yZXEgPSBody0+am9pbnJlcTsKKwkJCS8qIFNlbmQgdGhlIGpvaW4gcmVxdWVzdCAqLworCQkJaGZhMzg0eF9kcnZyX3NldGNvbmZpZyggaHcsCisJCQkJSEZBMzg0eF9SSURfSk9JTlJFUVVFU1QsCisJCQkJJmpvaW5yZXEsIEhGQTM4NHhfUklEX0pPSU5SRVFVRVNUX0xFTik7CisJCQlXTEFOX0xPR19JTkZPKCJsaW5rc3RhdHVzPURJU0NPTk5FQ1RFRCAocmUtc3VibWl0dGluZyBqb2luKVxuIik7CisJCX0gZWxzZSB7CisJCQlpZiAod2xhbmRldi0+bmV0ZGV2LT50eXBlID09IEFSUEhSRF9FVEhFUikKKwkJCQlXTEFOX0xPR19JTkZPKCJsaW5rc3RhdHVzPURJU0NPTk5FQ1RFRCAodW5oYW5kbGVkKVxuIik7CisJCX0KKwkJd2xhbmRldi0+bWFjbW9kZSA9IFdMQU5fTUFDTU9ERV9OT05FOworCisJCW5ldGlmX2NhcnJpZXJfb2ZmKHdsYW5kZXYtPm5ldGRldik7CisKKwkJYnJlYWs7CisKKwljYXNlIEhGQTM4NHhfTElOS19BUF9DSEFOR0U6CisJCS8qIFRoaXMgb25lIGluZGljYXRlcyB0aGF0IHRoZSBNQUMgaGFzIGRlY2lkZWQgdG8gYW5kCisJCSAqIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgYSBjaGFuZ2UgdG8gYW5vdGhlciBBUC4gIFdlCisJCSAqIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQgYSByZWFzc29jaWF0aW9uIGluZGljYXRpb24KKwkJICogaW4gcmVzcG9uc2UgdG8gdGhpcyBvbmUuICBJJ20gdGhpbmtpbmcgdGhhdCB0aGUgdGhlCisJCSAqIHA4MDIxMSBsYXllciBuZWVkcyB0byBiZSBub3RpZmllZCBpbiBjYXNlIG9mCisJCSAqIGJ1ZmZlcmluZy9xdWV1ZWluZyBpc3N1ZXMuICBVc2VyIG1vZGUgYWxzbyBuZWVkcyB0byBiZQorCQkgKiBub3RpZmllZCBzbyB0aGF0IGFueSBCU1MgZGVwZW5kZW50IGVsZW1lbnRzIGNhbiBiZQorCQkgKiB1cGRhdGVkLgorCQkgKiBhc3NvY2lhdGVkIHN0YXRlLiAgV2UgKiBzaG91bGQgc2VuZCBhIGRlYXV0aCBpbmRpY2F0aW9uCisJCSAqIChpbXBseWluZyBkaXNhc3NvYykgdXAgKiB0byB0aGUgTUxNRS4KKwkJICogUmVzcG9uc2U6CisJCSAqIEluZGljYXRlIFJlYXNzb2NpYXRpb24KKwkJICogRW5hYmxlIFRyYW5zbWl0cywgUmVjZWl2ZXMgYW5kIHBhc3MgdXAgZGF0YSBmcmFtZXMKKwkJICovCisJCVdMQU5fTE9HX0lORk8oImxpbmtzdGF0dXM9QVBfQ0hBTkdFXG4iKTsKKworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LAorCQkJCQkJSEZBMzg0eF9SSURfQ1VSUkVOVEJTU0lELAorCQkJCQkJd2xhbmRldi0+YnNzaWQsIFdMQU5fQlNTSURfTEVOKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLAorCQkJCSAgICAgICAiZ2V0Y29uZmlnKDB4JTAyeCkgZmFpbGVkLCByZXN1bHQgPSAlZFxuIiwKKwkJCQkgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVEJTU0lELCByZXN1bHQpOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LAorCQkJCQkJSEZBMzg0eF9SSURfQ1VSUkVOVFNTSUQsCisJCQkJCQkmc3NpZCwgc2l6ZW9mKHNzaWQpKTsKKwkJaWYgKCByZXN1bHQgKSB7CisJCQlXTEFOX0xPR19ERUJVRygxLAorCQkJCSAgICAgICAiZ2V0Y29uZmlnKDB4JTAyeCkgZmFpbGVkLCByZXN1bHQgPSAlZFxuIiwKKwkJCQkgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFNTSUQsIHJlc3VsdCk7CisJCQlnb3RvIGZhaWxlZDsKKwkJfQorCQlwcmlzbTJtZ210X2J5dGVzdHIycHN0cigoaGZhMzg0eF9ieXRlc3RyX3QgKikmc3NpZCwKKwkJCQkJKHA4MDIxMXBzdHJkX3QgKikgJndsYW5kZXYtPnNzaWQpOworCisKKwkJaHctPmxpbmtfc3RhdHVzID0gSEZBMzg0eF9MSU5LX0NPTk5FQ1RFRDsKKwkJbmV0aWZfY2Fycmllcl9vbih3bGFuZGV2LT5uZXRkZXYpOworCisJCWJyZWFrOworCisJY2FzZSBIRkEzODR4X0xJTktfQVBfT1VUT0ZSQU5HRToKKwkJLyogVGhpcyBvbmUgaW5kaWNhdGVzIHRoYXQgdGhlIE1BQyBoYXMgZGVjaWRlZCB0aGF0IHRoZQorCQkgKiBBUCBpcyBvdXQgb2YgcmFuZ2UsIGJ1dCBoYXNuJ3QgZm91bmQgYSBiZXR0ZXIgY2FuZGlkYXRlCisJCSAqIHNvIHRoZSBNQUMgbWFpbnRhaW5zIGl0cyAiYXNzb2NpYXRlZCIgc3RhdGUgaW4gY2FzZQorCQkgKiB3ZSBnZXQgYmFjayBpbiByYW5nZS4gIFdlIHNob3VsZCBibG9jayB0cmFuc21pdHMgYW5kCisJCSAqIHJlY2VpdmVzIGluIHRoaXMgc3RhdGUuICBEbyB3ZSBuZWVkIGFuIGluZGljYXRpb24gaGVyZT8KKwkJICogUHJvYmFibHkgbm90IHNpbmNlIGEgcG9sbGluZyB1c2VyLW1vZGUgZWxlbWVudCB3b3VsZAorCQkgKiBnZXQgdGhpcyBzdGF0dXMgZnJvbSBmcm9tIHAyUG9ydFN0YXR1cyhGRDQwKS4gV2hhdCBhYm91dAorCQkgKiBwODAyMTE/CisJCSAqIFJlc3BvbnNlOgorCQkgKiBCbG9jayBUcmFuc21pdHMsIElnbm9yZSByZWNlaXZlcyBvZiBkYXRhIGZyYW1lcworCQkgKi8KKwkJV0xBTl9MT0dfSU5GTygibGlua3N0YXR1cz1BUF9PVVRPRlJBTkdFICh1bmhhbmRsZWQpXG4iKTsKKworCQluZXRpZl9jYXJyaWVyX29mZih3bGFuZGV2LT5uZXRkZXYpOworCisJCWJyZWFrOworCisJY2FzZSBIRkEzODR4X0xJTktfQVBfSU5SQU5HRToKKwkJLyogVGhpcyBvbmUgaW5kaWNhdGVzIHRoYXQgdGhlIE1BQyBoYXMgZGVjaWRlZCB0aGF0IHRoZQorCQkgKiBBUCBpcyBiYWNrIGluIHJhbmdlLiAgV2UgY29udGludWUgd29ya2luZyB3aXRoIG91cgorCQkgKiBleGlzdGluZyBhc3NvY2lhdGlvbi4KKwkJICogUmVzcG9uc2U6CisJCSAqIEVuYWJsZSBUcmFuc21pdHMsIFJlY2VpdmVzIGFuZCBwYXNzIHVwIGRhdGEgZnJhbWVzCisJCSAqLworCQlXTEFOX0xPR19JTkZPKCJsaW5rc3RhdHVzPUFQX0lOUkFOR0VcbiIpOworCisJCWh3LT5saW5rX3N0YXR1cyA9IEhGQTM4NHhfTElOS19DT05ORUNURUQ7CisJCW5ldGlmX2NhcnJpZXJfb24od2xhbmRldi0+bmV0ZGV2KTsKKworCQlicmVhazsKKworCWNhc2UgSEZBMzg0eF9MSU5LX0FTU09DRkFJTDoKKwkJLyogVGhpcyBvbmUgaXMgYWN0dWFsbHkgYSBwZWVyIHRvIENPTk5FQ1RFRC4gIFdlJ3ZlCisJCSAqIHJlcXVlc3RlZCBhIGpvaW4gZm9yIGEgZ2l2ZW4gU1NJRCBhbmQgb3B0aW9uYWxseSBCU1NJRC4KKwkJICogV2UgY2FuIHVzZSB0aGlzIG9uZSB0byBpbmRpY2F0ZSBhdXRoZW50aWNhdGlvbiBhbmQKKwkJICogYXNzb2NpYXRpb24gZmFpbHVyZXMuICBUaGUgdHJpY2sgaXMgZ29pbmcgdG8gYmUKKwkJICogMSkgaWRlbnRpZnlpbmcgdGhlIGZhaWx1cmUsIGFuZCAyKSBzdGF0ZSBtYW5hZ2VtZW50LgorCQkgKiBSZXNwb25zZToKKwkJICogRGlzYWJsZSBUcmFuc21pdHMsIElnbm9yZSByZWNlaXZlcyBvZiBkYXRhIGZyYW1lcworCQkgKi8KKwkJaWYoaHctPmpvaW5fYXAgJiYgLS1ody0+am9pbl9yZXRyaWVzID4gMCkKKwkJeworCQkJaGZhMzg0eF9Kb2luUmVxdWVzdF9kYXRhX3QgICAgICBqb2lucmVxOworCQkJam9pbnJlcSA9IGh3LT5qb2lucmVxOworCQkJLyogU2VuZCB0aGUgam9pbiByZXF1ZXN0ICovCisJCQloZmEzODR4X2RydnJfc2V0Y29uZmlnKCBodywKKwkJCQlIRkEzODR4X1JJRF9KT0lOUkVRVUVTVCwKKwkJCQkmam9pbnJlcSwgSEZBMzg0eF9SSURfSk9JTlJFUVVFU1RfTEVOKTsKKwkJCVdMQU5fTE9HX0lORk8oImxpbmtzdGF0dXM9QVNTT0NGQUlMIChyZS1zdWJtaXR0aW5nIGpvaW4pXG4iKTsKKwkJfSBlbHNlIHsKKwkJCVdMQU5fTE9HX0lORk8oImxpbmtzdGF0dXM9QVNTT0NGQUlMICh1bmhhbmRsZWQpXG4iKTsKKwkJfQorCisJCW5ldGlmX2NhcnJpZXJfb2ZmKHdsYW5kZXYtPm5ldGRldik7CisKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQkvKiBUaGlzIGlzIGJhZCwgSU8gcG9ydCBwcm9ibGVtcz8gKi8KKwkJV0xBTl9MT0dfV0FSTklORygKKwkJCSJ1bmtub3duIGxpbmtzdGF0dXM9MHglMDJ4XG4iLCBody0+bGlua19zdGF0dXMpOworCQlnb3RvIGZhaWxlZDsKKwkJYnJlYWs7CisJfQorCisJd2xhbmRldi0+bGlua3N0YXR1cyA9IChody0+bGlua19zdGF0dXMgPT0gSEZBMzg0eF9MSU5LX0NPTk5FQ1RFRCk7CisjaWZkZWYgV0lSRUxFU1NfRVhUCisJcDgwMjExd2V4dF9ldmVudF9hc3NvY2lhdGVkKHdsYW5kZXYsIHdsYW5kZXYtPmxpbmtzdGF0dXMpOworI2VuZGlmCisKKyBmYWlsZWQ6CisJREJGRVhJVDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9pbmZfbGlua3N0YXR1cworKgorKiBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIGEgTGluayBTdGF0dXMgaW5mbyBmcmFtZS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJaW5mCQlwdHIgdG8gaW5mbyBmcmFtZSAoY29udGVudHMgaW4gaGZhMzg0eCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHByaXNtMnN0YV9pbmZfbGlua3N0YXR1cyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQkJICAgICBoZmEzODR4X0luZkZyYW1lX3QgKmluZikKK3sKKyAgICAgICAgaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gKGhmYTM4NHhfdCAqKXdsYW5kZXYtPnByaXY7CisKKwlEQkZFTlRFUjsKKworCWh3LT5saW5rX3N0YXR1c19uZXcgPSBoZmEzODR4Mmhvc3RfMTYoaW5mLT5pbmZvLmxpbmtzdGF0dXMubGlua3N0YXR1cyk7CisKKwlzY2hlZHVsZV93b3JrKCZody0+bGlua19iaCk7CisKKwlEQkZFWElUOworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9pbmZfYXNzb2NzdGF0dXMKKyoKKyogSGFuZGxlcyB0aGUgcmVjZWlwdCBvZiBhbiBBc3NvY2lhdGlvbiBTdGF0dXMgaW5mbyBmcmFtZS4gU2hvdWxkCisqIGJlIHByZXNlbnQgaW4gQVBzIG9ubHkuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCWluZgkJcHRyIHRvIGluZm8gZnJhbWUgKGNvbnRlbnRzIGluIGhmYTM4NHggb3JkZXIpCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBwcmlzbTJzdGFfaW5mX2Fzc29jc3RhdHVzKHdsYW5kZXZpY2VfdCAqd2xhbmRldiwKKwkJCQkgICAgICBoZmEzODR4X0luZkZyYW1lX3QgKmluZikKK3sKKyAgICAgICAgaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gKGhmYTM4NHhfdCAqKXdsYW5kZXYtPnByaXY7CisJaGZhMzg0eF9Bc3NvY1N0YXR1c190CXJlYzsKKwlpbnQJCQlpOworCisJREJGRU5URVI7CisKKwltZW1jcHkoJnJlYywgJmluZi0+aW5mby5hc3NvY3N0YXR1cywgc2l6ZW9mKHJlYykpOworCXJlYy5hc3NvY3N0YXR1cyA9IGhmYTM4NHgyaG9zdF8xNihyZWMuYXNzb2NzdGF0dXMpOworCXJlYy5yZWFzb24gICAgICA9IGhmYTM4NHgyaG9zdF8xNihyZWMucmVhc29uKTsKKworCS8qCisJKiogRmluZCB0aGUgYWRkcmVzcyBpbiB0aGUgbGlzdCBvZiBhdXRoZW50aWNhdGVkIHN0YXRpb25zLiAgSWYgaXQgd2Fzbid0CisJKiogZm91bmQsIHRoZW4gdGhpcyBhZGRyZXNzIGhhcyBub3QgYmVlbiBwcmV2aW91c2x5IGF1dGhlbnRpY2F0ZWQgYW5kCisJKiogc29tZXRoaW5nIHdlaXJkIGhhcyBoYXBwZW5lZCBpZiB0aGlzIGlzIGFueXRoaW5nIG90aGVyIHRoYW4gYW4KKwkqKiAiYXV0aGVudGljYXRpb24gZmFpbGVkIiBtZXNzYWdlLiAgSWYgdGhlIGFkZHJlc3Mgd2FzIGZvdW5kLCB0aGVuCisJKiogc2V0IHRoZSAiYXNzb2NpYXRlZCIgZmxhZyBmb3IgdGhhdCBzdGF0aW9uLCBiYXNlZCBvbiB3aGV0aGVyIHRoZQorCSoqIHN0YXRpb24gaXMgYXNzb2NpYXRpbmcgb3IgbG9zaW5nIGl0cyBhc3NvY2lhdGlvbi4gIFNvbWV0aGluZyB3ZWlyZAorCSoqIGhhcyBhbHNvIGhhcHBlbmVkIGlmIHdlIGZpbmQgdGhlIGFkZHJlc3MgaW4gdGhlIGxpc3Qgb2YgYXV0aGVudGljYXRlZAorCSoqIHN0YXRpb25zIGJ1dCB3ZSBhcmUgZ2V0dGluZyBhbiAiYXV0aGVudGljYXRpb24gZmFpbGVkIiBtZXNzYWdlLgorCSovCisKKwlmb3IgKGkgPSAwOyBpIDwgaHctPmF1dGhsaXN0LmNudDsgaSsrKQorCQlpZiAobWVtY21wKHJlYy5zdGFfYWRkciwgaHctPmF1dGhsaXN0LmFkZHJbaV0sIFdMQU5fQUREUl9MRU4pID09IDApCisJCQlicmVhazsKKworCWlmIChpID49IGh3LT5hdXRobGlzdC5jbnQpIHsKKwkJaWYgKHJlYy5hc3NvY3N0YXR1cyAhPSBIRkEzODR4X0FTU09DU1RBVFVTX0FVVEhGQUlMKQorCQkJV0xBTl9MT0dfV0FSTklORygiYXNzb2NzdGF0dXMgaW5mbyBmcmFtZSByZWNlaXZlZCBmb3Igbm9uLWF1dGhlbnRpY2F0ZWQgc3RhdGlvbi5cbiIpOworCX0gZWxzZSB7CisJCWh3LT5hdXRobGlzdC5hc3NvY1tpXSA9CisJCQkocmVjLmFzc29jc3RhdHVzID09IEhGQTM4NHhfQVNTT0NTVEFUVVNfU1RBQVNTT0MgfHwKKwkJCSByZWMuYXNzb2NzdGF0dXMgPT0gSEZBMzg0eF9BU1NPQ1NUQVRVU19SRUFTU09DKTsKKworCQlpZiAocmVjLmFzc29jc3RhdHVzID09IEhGQTM4NHhfQVNTT0NTVEFUVVNfQVVUSEZBSUwpCisJCQlXTEFOX0xPR19XQVJOSU5HKCJhdXRoZmFpbCBhc3NvY3N0YXR1cyBpbmZvIGZyYW1lIHJlY2VpdmVkIGZvciBhdXRoZW50aWNhdGVkIHN0YXRpb24uXG4iKTsKKwl9CisKKwlEQkZFWElUOworCisJcmV0dXJuOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogcHJpc20yc3RhX2luZl9hdXRocmVxCisqCisqIEhhbmRsZXMgdGhlIHJlY2VpcHQgb2YgYW4gQXV0aGVudGljYXRpb24gUmVxdWVzdCBpbmZvIGZyYW1lLiBTaG91bGQKKyogYmUgcHJlc2VudCBpbiBBUHMgb25seS4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJaW5mCQlwdHIgdG8gaW5mbyBmcmFtZSAoY29udGVudHMgaW4gaGZhMzg0eCBvcmRlcikKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CisqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIHByaXNtMnN0YV9pbmZfYXV0aHJlcSh3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQkJICBoZmEzODR4X0luZkZyYW1lX3QgKmluZikKK3sKKyAgICAgICAgaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gKGhmYTM4NHhfdCAqKXdsYW5kZXYtPnByaXY7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCURCRkVOVEVSOworCisJc2tiID0gZGV2X2FsbG9jX3NrYihzaXplb2YoKmluZikpOworCWlmIChza2IpIHsKKwkJc2tiX3B1dChza2IsIHNpemVvZigqaW5mKSk7CisJCW1lbWNweShza2ItPmRhdGEsIGluZiwgc2l6ZW9mKCppbmYpKTsKKwkJc2tiX3F1ZXVlX3RhaWwoJmh3LT5hdXRocSwgc2tiKTsKKwkJc2NoZWR1bGVfd29yaygmaHctPmxpbmtfYmgpOworCX0KKworCURCRkVYSVQ7Cit9CisKK3N0YXRpYyB2b2lkIHByaXNtMnN0YV9pbmZfYXV0aHJlcV9kZWZlcih3bGFuZGV2aWNlX3QgKndsYW5kZXYsCisJCQkJCWhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKQoreworICAgICAgICBoZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKwloZmEzODR4X2F1dGhlbnRpY2F0ZVN0YXRpb25fZGF0YV90ICByZWM7CisKKwlpbnQgICAgaSwgYWRkZWQsIHJlc3VsdCwgY250OworCVVJTlQ4ICAqYWRkcjsKKworCURCRkVOVEVSOworCisJLyoKKwkqKiBCdWlsZCB0aGUgQXV0aGVudGljYXRlU3RhdGlvbiByZWNvcmQuICBJbml0aWFsaXplIGl0IGZvciBkZW55aW5nCisJKiogYXV0aGVudGljYXRpb24uCisJKi8KKworCW1lbWNweShyZWMuYWRkcmVzcywgaW5mLT5pbmZvLmF1dGhyZXEuc3RhX2FkZHIsIFdMQU5fQUREUl9MRU4pOworCXJlYy5zdGF0dXMgPSBQODAyMTFFTlVNX3N0YXR1c191bnNwZWNfZmFpbHVyZTsKKworCS8qCisJKiogQXV0aGVudGljYXRlIGJhc2VkIG9uIHRoZSBhY2Nlc3MgbW9kZS4KKwkqLworCisJc3dpdGNoIChody0+YWNjZXNzbW9kZSkgeworCQljYXNlIFdMQU5fQUNDRVNTX05PTkU6CisKKwkJCS8qCisJCQkqKiBEZW55IGFsbCBuZXcgYXV0aGVudGljYXRpb25zLiAgSG93ZXZlciwgaWYgYSBzdGF0aW9uCisJCQkqKiBpcyBBTFJFQURZIGF1dGhlbnRpY2F0ZWQsIHRoZW4gYWNjZXB0IGl0LgorCQkJKi8KKworCQkJZm9yIChpID0gMDsgaSA8IGh3LT5hdXRobGlzdC5jbnQ7IGkrKykKKwkJCQlpZiAobWVtY21wKHJlYy5hZGRyZXNzLCBody0+YXV0aGxpc3QuYWRkcltpXSwKKwkJCQkJCVdMQU5fQUREUl9MRU4pID09IDApIHsKKwkJCQkJcmVjLnN0YXR1cyA9IFA4MDIxMUVOVU1fc3RhdHVzX3N1Y2Nlc3NmdWw7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJYnJlYWs7CisKKwkJY2FzZSBXTEFOX0FDQ0VTU19BTEw6CisKKwkJCS8qCisJCQkqKiBBbGxvdyBhbGwgYXV0aGVudGljYXRpb25zLgorCQkJKi8KKworCQkJcmVjLnN0YXR1cyA9IFA4MDIxMUVOVU1fc3RhdHVzX3N1Y2Nlc3NmdWw7CisJCQlicmVhazsKKworCQljYXNlIFdMQU5fQUNDRVNTX0FMTE9XOgorCisJCQkvKgorCQkJKiogT25seSBhbGxvdyB0aGUgYXV0aGVudGljYXRpb24gaWYgdGhlIE1BQyBhZGRyZXNzCisJCQkqKiBpcyBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkIGFkZHJlc3Nlcy4KKwkJCSoqCisJCQkqKiBTaW5jZSB0aGlzIGlzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgd2UgbWF5IGJlIGhlcmUKKwkJCSoqIHdoaWxlIHRoZSBhY2Nlc3MgbGlzdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nCisJCQkqKiB1cGRhdGVkLiAgQ2hvb3NlIHRoZSBsaXN0IHdoaWNoIGlzIGN1cnJlbnRseSBva2F5LgorCQkJKiogU2VlICJwcmlzbTJtaWJfcHJpdl9hY2Nlc3NhbGxvdygpIiBmb3IgZGV0YWlscy4KKwkJCSovCisKKwkJCWlmIChody0+YWxsb3cubW9kaWZ5ID09IDApIHsKKwkJCQljbnQgID0gaHctPmFsbG93LmNudDsKKwkJCQlhZGRyID0gaHctPmFsbG93LmFkZHJbMF07CisJCQl9IGVsc2UgeworCQkJCWNudCAgPSBody0+YWxsb3cuY250MTsKKwkJCQlhZGRyID0gaHctPmFsbG93LmFkZHIxWzBdOworCQkJfQorCisJCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyssIGFkZHIgKz0gV0xBTl9BRERSX0xFTikKKwkJCQlpZiAobWVtY21wKHJlYy5hZGRyZXNzLCBhZGRyLCBXTEFOX0FERFJfTEVOKSA9PSAwKSB7CisJCQkJCXJlYy5zdGF0dXMgPSBQODAyMTFFTlVNX3N0YXR1c19zdWNjZXNzZnVsOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWJyZWFrOworCisJCWNhc2UgV0xBTl9BQ0NFU1NfREVOWToKKworCQkJLyoKKwkJCSoqIEFsbG93IHRoZSBhdXRoZW50aWNhdGlvbiBVTkxFU1MgdGhlIE1BQyBhZGRyZXNzIGlzCisJCQkqKiBpbiB0aGUgbGlzdCBvZiBkZW5pZWQgYWRkcmVzc2VzLgorCQkJKioKKwkJCSoqIFNpbmNlIHRoaXMgaXMgdGhlIGludGVycnVwdCBoYW5kbGVyLCB3ZSBtYXkgYmUgaGVyZQorCQkJKiogd2hpbGUgdGhlIGFjY2VzcyBsaXN0IGlzIGluIHRoZSBtaWRkbGUgb2YgYmVpbmcKKwkJCSoqIHVwZGF0ZWQuICBDaG9vc2UgdGhlIGxpc3Qgd2hpY2ggaXMgY3VycmVudGx5IG9rYXkuCisJCQkqKiBTZWUgInByaXNtMm1pYl9wcml2X2FjY2Vzc2RlbnkoKSIgZm9yIGRldGFpbHMuCisJCQkqLworCisJCQlpZiAoaHctPmRlbnkubW9kaWZ5ID09IDApIHsKKwkJCQljbnQgID0gaHctPmRlbnkuY250OworCQkJCWFkZHIgPSBody0+ZGVueS5hZGRyWzBdOworCQkJfSBlbHNlIHsKKwkJCQljbnQgID0gaHctPmRlbnkuY250MTsKKwkJCQlhZGRyID0gaHctPmRlbnkuYWRkcjFbMF07CisJCQl9CisKKwkJCXJlYy5zdGF0dXMgPSBQODAyMTFFTlVNX3N0YXR1c19zdWNjZXNzZnVsOworCisJCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyssIGFkZHIgKz0gV0xBTl9BRERSX0xFTikKKwkJCQlpZiAobWVtY21wKHJlYy5hZGRyZXNzLCBhZGRyLCBXTEFOX0FERFJfTEVOKSA9PSAwKSB7CisJCQkJCXJlYy5zdGF0dXMgPSBQODAyMTFFTlVNX3N0YXR1c191bnNwZWNfZmFpbHVyZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQlicmVhazsKKwl9CisKKwkvKgorCSoqIElmIHRoZSBhdXRoZW50aWNhdGlvbiBpcyBva2F5LCB0aGVuIGFkZCB0aGUgTUFDIGFkZHJlc3MgdG8gdGhlIGxpc3QKKwkqKiBvZiBhdXRoZW50aWNhdGVkIHN0YXRpb25zLiAgRG9uJ3QgYWRkIHRoZSBhZGRyZXNzIGlmIGl0IGlzIGFscmVhZHkgaW4KKwkqKiB0aGUgbGlzdC4gICg4MDIuMTFiIGRvZXMgbm90IHNlZW0gdG8gZGlzYWxsb3cgYSBzdGF0aW9uIGZyb20gaXNzdWluZworCSoqIGFuIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qgd2hlbiB0aGUgc3RhdGlvbiBpcyBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQuCisJKiogRG9lcyB0aGlzIHNvcnQgb2YgdGhpbmcgZXZlciBoYXBwZW4/ICBXZSBtaWdodCBhcyB3ZWxsIGRvIHRoZSBjaGVjaworCSoqIGp1c3QgaW4gY2FzZS4pCisJKi8KKworCWFkZGVkID0gMDsKKworCWlmIChyZWMuc3RhdHVzID09IFA4MDIxMUVOVU1fc3RhdHVzX3N1Y2Nlc3NmdWwpIHsKKwkJZm9yIChpID0gMDsgaSA8IGh3LT5hdXRobGlzdC5jbnQ7IGkrKykKKwkJCWlmIChtZW1jbXAocmVjLmFkZHJlc3MsIGh3LT5hdXRobGlzdC5hZGRyW2ldLCBXTEFOX0FERFJfTEVOKSA9PSAwKQorCQkJCWJyZWFrOworCisJCWlmIChpID49IGh3LT5hdXRobGlzdC5jbnQpIHsKKwkJCWlmIChody0+YXV0aGxpc3QuY250ID49IFdMQU5fQVVUSF9NQVgpIHsKKwkJCQlyZWMuc3RhdHVzID0gUDgwMjExRU5VTV9zdGF0dXNfYXBfZnVsbDsKKwkJCX0gZWxzZSB7CisJCQkJbWVtY3B5KGh3LT5hdXRobGlzdC5hZGRyW2h3LT5hdXRobGlzdC5jbnRdLAorCQkJCQlyZWMuYWRkcmVzcywgV0xBTl9BRERSX0xFTik7CisJCQkJaHctPmF1dGhsaXN0LmNudCsrOworCQkJCWFkZGVkID0gMTsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJKiogU2VuZCBiYWNrIHRoZSByZXN1bHRzIG9mIHRoZSBhdXRoZW50aWNhdGlvbi4gIElmIHRoaXMgZG9lc24ndCB3b3JrLAorCSoqIHRoZW4gbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGUgYWRkcmVzcyBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIGxpc3QgaWYKKwkqKiBpdCB3YXMgYWRkZWQuCisJKi8KKworCXJlYy5zdGF0dXMgPSBob3N0MmhmYTM4NHhfMTYocmVjLnN0YXR1cyk7CisJcmVjLmFsZ29yaXRobSA9IGluZi0+aW5mby5hdXRocmVxLmFsZ29yaXRobTsKKworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9zZXRjb25maWcoaHcsIEhGQTM4NHhfUklEX0FVVEhFTlRJQ0FURVNUQSwKKwkJCQkJCQkmcmVjLCBzaXplb2YocmVjKSk7CisJaWYgKHJlc3VsdCkgeworCQlpZiAoYWRkZWQpIGh3LT5hdXRobGlzdC5jbnQtLTsKKwkJV0xBTl9MT0dfRVJST1IoInNldGNvbmZpZyhhdXRoZW50aWNhdGVzdGF0aW9uKSBmYWlsZWQsIHJlc3VsdD0lZFxuIiwgcmVzdWx0KTsKKwl9CisKKwlEQkZFWElUOworCisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfaW5mX3BzdXNlcmNudAorKgorKiBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIGEgUG93ZXJTYXZlVXNlckNvdW50IGluZm8gZnJhbWUuIFNob3VsZAorKiBiZSBwcmVzZW50IGluIEFQcyBvbmx5LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKglpbmYJCXB0ciB0byBpbmZvIGZyYW1lIChjb250ZW50cyBpbiBoZmEzODR4IG9yZGVyKQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcHJpc20yc3RhX2luZl9wc3VzZXJjbnQod2xhbmRldmljZV90ICp3bGFuZGV2LAorCQkJCSAgICBoZmEzODR4X0luZkZyYW1lX3QgKmluZikKK3sKKyAgICAgICAgaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gKGhmYTM4NHhfdCAqKXdsYW5kZXYtPnByaXY7CisKKwlEQkZFTlRFUjsKKworCWh3LT5wc3VzZXJjb3VudCA9IGhmYTM4NHgyaG9zdF8xNihpbmYtPmluZm8ucHN1c2VyY250LnVzZXJjbnQpOworCisJREJGRVhJVDsKKworCXJldHVybjsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9ldl9kdGltCisqCisqIEhhbmRsZXMgdGhlIERUSU0gZWFybHkgd2FybmluZyBldmVudC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcHJpc20yc3RhX2V2X2R0aW0od2xhbmRldmljZV90ICp3bGFuZGV2KQoreworI2lmIDAKKyAgICAgICAgaGZhMzg0eF90ICAgICAgICAgICAgICAgKmh3ID0gKGhmYTM4NHhfdCAqKXdsYW5kZXYtPnByaXY7CisjZW5kaWYKKwlEQkZFTlRFUjsKKwlXTEFOX0xPR19ERUJVRygzLCAiRFRJTSBldmVudCwgY3VycmVudGx5IHVuaGFuZGxlZC5cbiIpOworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZXZfaW5mZHJvcAorKgorKiBIYW5kbGVzIHRoZSBJbmZEcm9wIGV2ZW50LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJzdGFfZXZfaW5mZHJvcCh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisjaWYgMAorICAgICAgICBoZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopd2xhbmRldi0+cHJpdjsKKyNlbmRpZgorCURCRkVOVEVSOworCVdMQU5fTE9HX0RFQlVHKDMsICJJbmZvIGZyYW1lIGRyb3BwZWQgZHVlIHRvIGNhcmQgbWVtIGxvdy5cbiIpOworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZXZfaW5mbworKgorKiBIYW5kbGVzIHRoZSBJbmZvIGV2ZW50LgorKgorKiBBcmd1bWVudHM6CisqCXdsYW5kZXYJCXdsYW4gZGV2aWNlIHN0cnVjdHVyZQorKglpbmYJCXB0ciB0byBhIGdlbmVyaWMgaW5mbyBmcmFtZQorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJzdGFfZXZfaW5mbyh3bGFuZGV2aWNlX3QgKndsYW5kZXYsIGhmYTM4NHhfSW5mRnJhbWVfdCAqaW5mKQoreworCURCRkVOVEVSOworCWluZi0+aW5mb3R5cGUgPSBoZmEzODR4Mmhvc3RfMTYoaW5mLT5pbmZvdHlwZSk7CisJLyogRGlzcGF0Y2ggKi8KKwlzd2l0Y2ggKCBpbmYtPmluZm90eXBlICkgeworCQljYXNlIEhGQTM4NHhfSVRfSEFORE9WRVJBRERSOgorCQkJcHJpc20yc3RhX2luZl9oYW5kb3Zlcih3bGFuZGV2LCBpbmYpOworCQkJYnJlYWs7CisJCWNhc2UgSEZBMzg0eF9JVF9DT01NVEFMTElFUzoKKwkJCXByaXNtMnN0YV9pbmZfdGFsbGllcyh3bGFuZGV2LCBpbmYpOworCQkJYnJlYWs7CisgICAgICAgICAgICAgICBjYXNlIEhGQTM4NHhfSVRfSE9TVFNDQU5SRVNVTFRTOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpc20yc3RhX2luZl9ob3N0c2NhbnJlc3VsdHMod2xhbmRldiwgaW5mKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCQljYXNlIEhGQTM4NHhfSVRfU0NBTlJFU1VMVFM6CisJCQlwcmlzbTJzdGFfaW5mX3NjYW5yZXN1bHRzKHdsYW5kZXYsIGluZik7CisJCQlicmVhazsKKwkJY2FzZSBIRkEzODR4X0lUX0NISU5GT1JFU1VMVFM6CisJCQlwcmlzbTJzdGFfaW5mX2NoaW5mb3Jlc3VsdHMod2xhbmRldiwgaW5mKTsKKwkJCWJyZWFrOworCQljYXNlIEhGQTM4NHhfSVRfTElOS1NUQVRVUzoKKwkJCXByaXNtMnN0YV9pbmZfbGlua3N0YXR1cyh3bGFuZGV2LCBpbmYpOworCQkJYnJlYWs7CisJCWNhc2UgSEZBMzg0eF9JVF9BU1NPQ1NUQVRVUzoKKwkJCXByaXNtMnN0YV9pbmZfYXNzb2NzdGF0dXMod2xhbmRldiwgaW5mKTsKKwkJCWJyZWFrOworCQljYXNlIEhGQTM4NHhfSVRfQVVUSFJFUToKKwkJCXByaXNtMnN0YV9pbmZfYXV0aHJlcSh3bGFuZGV2LCBpbmYpOworCQkJYnJlYWs7CisJCWNhc2UgSEZBMzg0eF9JVF9QU1VTRVJDTlQ6CisJCQlwcmlzbTJzdGFfaW5mX3BzdXNlcmNudCh3bGFuZGV2LCBpbmYpOworCQkJYnJlYWs7CisJICAgICAgICBjYXNlIEhGQTM4NHhfSVRfS0VZSURDSEFOR0VEOgorCQkJV0xBTl9MT0dfV0FSTklORygiVW5oYW5kbGVkIElUX0tFWUlEQ0hBTkdFRFxuIik7CisJCQlicmVhazsKKwkgICAgICAgIGNhc2UgSEZBMzg0eF9JVF9BU1NPQ1JFUToKKwkJCVdMQU5fTE9HX1dBUk5JTkcoIlVuaGFuZGxlZCBJVF9BU1NPQ1JFUVxuIik7CisJCQlicmVhazsKKwkgICAgICAgIGNhc2UgSEZBMzg0eF9JVF9NSUNGQUlMVVJFOgorCQkJV0xBTl9MT0dfV0FSTklORygiVW5oYW5kbGVkIElUX01JQ0ZBSUxVUkVcbiIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlXTEFOX0xPR19XQVJOSU5HKAorCQkJCSJVbmtub3duIGluZm8gdHlwZT0weCUwMnhcbiIsIGluZi0+aW5mb3R5cGUpOworCQkJYnJlYWs7CisJfQorCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZXZfdHhleGMKKyoKKyogSGFuZGxlcyB0aGUgVHhFeGMgZXZlbnQuICBBIFRyYW5zbWl0IEV4Y2VwdGlvbiBldmVudCBpbmRpY2F0ZXMKKyogdGhhdCB0aGUgTUFDJ3MgVFggcHJvY2VzcyB3YXMgdW5zdWNjZXNzZnVsIC0gc28gdGhlIHBhY2tldCBkaWQKKyogbm90IGdldCB0cmFuc21pdHRlZC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoJc3RhdHVzCQl0eCBmcmFtZSBzdGF0dXMgd29yZAorKgorKiBSZXR1cm5zOgorKglub3RoaW5nCisqCisqIFNpZGUgZWZmZWN0czoKKyoKKyogQ2FsbCBjb250ZXh0OgorKglpbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordm9pZCBwcmlzbTJzdGFfZXZfdHhleGMod2xhbmRldmljZV90ICp3bGFuZGV2LCBVSU5UMTYgc3RhdHVzKQoreworCURCRkVOVEVSOworCisJV0xBTl9MT0dfREVCVUcoMywgIlR4RXhjIHN0YXR1cz0weCV4LlxuIiwgc3RhdHVzKTsKKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZXZfdHgKKyoKKyogSGFuZGxlcyB0aGUgVHggZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCXN0YXR1cwkJdHggZnJhbWUgc3RhdHVzIHdvcmQKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcHJpc20yc3RhX2V2X3R4KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgVUlOVDE2IHN0YXR1cykKK3sKKwlEQkZFTlRFUjsKKwlXTEFOX0xPR19ERUJVRyg0LCAiVHggQ29tcGxldGUsIHN0YXR1cz0weCUwNHhcbiIsIHN0YXR1cyk7CisJLyogdXBkYXRlIGxpbnV4IG5ldHdvcmsgc3RhdHMgKi8KKwl3bGFuZGV2LT5saW51eF9zdGF0cy50eF9wYWNrZXRzKys7CisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHByaXNtMnN0YV9ldl9yeAorKgorKiBIYW5kbGVzIHRoZSBSeCBldmVudC4KKyoKKyogQXJndW1lbnRzOgorKgl3bGFuZGV2CQl3bGFuIGRldmljZSBzdHJ1Y3R1cmUKKyoKKyogUmV0dXJuczoKKyoJbm90aGluZworKgorKiBTaWRlIGVmZmVjdHM6CisqCisqIENhbGwgY29udGV4dDoKKyoJaW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgcHJpc20yc3RhX2V2X3J4KHdsYW5kZXZpY2VfdCAqd2xhbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlEQkZFTlRFUjsKKworCXA4MDIxMW5ldGRldl9yeCh3bGFuZGV2LCBza2IpOworCisJREJGRVhJVDsKKwlyZXR1cm47Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBwcmlzbTJzdGFfZXZfYWxsb2MKKyoKKyogSGFuZGxlcyB0aGUgQWxsb2MgZXZlbnQuCisqCisqIEFyZ3VtZW50czoKKyoJd2xhbmRldgkJd2xhbiBkZXZpY2Ugc3RydWN0dXJlCisqCisqIFJldHVybnM6CisqCW5vdGhpbmcKKyoKKyogU2lkZSBlZmZlY3RzOgorKgorKiBDYWxsIGNvbnRleHQ6CisqCWludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit2b2lkIHByaXNtMnN0YV9ldl9hbGxvYyh3bGFuZGV2aWNlX3QgKndsYW5kZXYpCit7CisJREJGRU5URVI7CisKKwlwODAyMTFuZXRkZXZfd2FrZV9xdWV1ZSh3bGFuZGV2KTsKKworCURCRkVYSVQ7CisJcmV0dXJuOworfQorCisjaWYgKFdMQU5fSE9TVElGID09IFdMQU5fUExYIHx8IFdMQU5fSE9TVElGID09IFdMQU5fUENJKQorI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBwcmlzbTJzdGFfc3VzcGVuZF9wY2koc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKyAgICAgICAJd2xhbmRldmljZV90CQkqd2xhbmRldjsKKworCXdsYW5kZXYgPSAod2xhbmRldmljZV90ICopIHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCS8qIHJlc2V0IGhhcmR3YXJlICovCisJaWYgKHdsYW5kZXYpIHsKKwkJcHJpc20yc3RhX2lmc3RhdGUod2xhbmRldiwgUDgwMjExRU5VTV9pZnN0YXRlX2Rpc2FibGUpOworCQlwODAyMTFfc3VzcGVuZCh3bGFuZGV2KTsKKwl9CisKKwkvLyBjYWxsIGEgbmV0aWZfZGV2aWNlX2RldGFjaCh3bGFuZGV2LT5uZXRkZXYpID8KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByaXNtMnN0YV9yZXN1bWVfcGNpIChzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKyAgICAgICAJd2xhbmRldmljZV90CQkqd2xhbmRldjsKKworCXdsYW5kZXYgPSAod2xhbmRldmljZV90ICopIHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmICh3bGFuZGV2KSB7CisJCXByaXNtMnN0YV9pZnN0YXRlKHdsYW5kZXYsIFA4MDIxMUVOVU1faWZzdGF0ZV9kaXNhYmxlKTsKKwkJcDgwMjExX3Jlc3VtZSh3bGFuZGV2KTsKKwl9CisKKyAgICAgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogY3JlYXRlX3dsYW4KKyoKKyogQ2FsbGVkIGF0IG1vZHVsZSBpbml0IHRpbWUuICBUaGlzIGNyZWF0ZXMgdGhlIHdsYW5kZXZpY2VfdCBzdHJ1Y3R1cmUKKyogYW5kIGluaXRpYWxpemVzIGl0IHdpdGggcmVsZXZhbnQgYml0cy4KKyoKKyogQXJndW1lbnRzOgorKglub25lCisqCisqIFJldHVybnM6CisqCXRoZSBjcmVhdGVkIHdsYW5kZXZpY2VfdCBzdHJ1Y3R1cmUuCisqCisqIFNpZGUgZWZmZWN0czoKKyogCWFsc28gYWxsb2NhdGVzIHRoZSBwcml2L2h3IHN0cnVjdHVyZXMuCisqCisqIENhbGwgY29udGV4dDoKKyoJcHJvY2VzcyB0aHJlYWQKKyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHdsYW5kZXZpY2VfdCAqY3JlYXRlX3dsYW4odm9pZCkKK3sKKyAgICAgICAgd2xhbmRldmljZV90ICAgICp3bGFuZGV2ID0gTlVMTDsKKwloZmEzODR4X3QJKmh3ID0gTlVMTDsKKworICAgICAgCS8qIEFsbG9jIG91ciBzdHJ1Y3R1cmVzICovCisJd2xhbmRldiA9CWttYWxsb2Moc2l6ZW9mKHdsYW5kZXZpY2VfdCksIEdGUF9LRVJORUwpOworCWh3ID0JCWttYWxsb2Moc2l6ZW9mKGhmYTM4NHhfdCksIEdGUF9LRVJORUwpOworCisJaWYgKCF3bGFuZGV2IHx8ICFodykgeworCQlXTEFOX0xPR19FUlJPUigiJXM6IE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuXG4iLCBkZXZfaW5mbyk7CisJCWlmICh3bGFuZGV2KQlrZnJlZSh3bGFuZGV2KTsKKwkJaWYgKGh3KQkJa2ZyZWUoaHcpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBDbGVhciBhbGwgdGhlIHN0cnVjdHMgKi8KKwltZW1zZXQod2xhbmRldiwgMCwgc2l6ZW9mKHdsYW5kZXZpY2VfdCkpOworCW1lbXNldChodywgMCwgc2l6ZW9mKGhmYTM4NHhfdCkpOworCisJLyogSW5pdGlhbGl6ZSB0aGUgbmV0d29yayBkZXZpY2Ugb2JqZWN0LiAqLworCXdsYW5kZXYtPm5zZG5hbWUgPSBkZXZfaW5mbzsKKwl3bGFuZGV2LT5tc2RzdGF0ZSA9IFdMQU5fTVNEX0hXUFJFU0VOVF9QRU5ESU5HOworCXdsYW5kZXYtPnByaXYgPSBodzsKKwl3bGFuZGV2LT5vcGVuID0gcHJpc20yc3RhX29wZW47CisJd2xhbmRldi0+Y2xvc2UgPSBwcmlzbTJzdGFfY2xvc2U7CisJd2xhbmRldi0+cmVzZXQgPSBwcmlzbTJzdGFfcmVzZXQ7CisjaWZkZWYgQ09ORklHX1BST0NfRlMKKwl3bGFuZGV2LT5uc2RfcHJvY19yZWFkID0gcHJpc20yc3RhX3Byb2NfcmVhZDsKKyNlbmRpZgorCXdsYW5kZXYtPnR4ZnJhbWUgPSBwcmlzbTJzdGFfdHhmcmFtZTsKKwl3bGFuZGV2LT5tbG1lcmVxdWVzdCA9IHByaXNtMnN0YV9tbG1lcmVxdWVzdDsKKwl3bGFuZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBwcmlzbTJzdGFfc2V0bXVsdGljYXN0OworCXdsYW5kZXYtPnR4X3RpbWVvdXQgPSBoZmEzODR4X3R4X3RpbWVvdXQ7CisKKwl3bGFuZGV2LT5uc2RjYXBzID0gUDgwMjExX05TRENBUF9IV0ZSQUdNRU5UIHwKKwkgICAgICAgICAgICAgICAgICAgUDgwMjExX05TRENBUF9BVVRPSk9JTjsKKworCS8qIEluaXRpYWxpemUgdGhlIGRldmljZSBwcml2YXRlIGRhdGEgc3R1Y3R1cmUuICovCisgICAgICAgIGh3LT5kb3QxMV9kZXNpcmVkX2Jzc190eXBlID0gMTsKKworCXJldHVybiB3bGFuZGV2OworfQorCisjaWZkZWYgQ09ORklHX1BST0NfRlMKK3N0YXRpYyBpbnQKK3ByaXNtMnN0YV9wcm9jX3JlYWQoCisJY2hhcgkqcGFnZSwKKwljaGFyCSoqc3RhcnQsCisJb2ZmX3QJb2Zmc2V0LAorCWludAljb3VudCwKKwlpbnQJKmVvZiwKKwl2b2lkCSpkYXRhKQoreworCWNoYXIJICpwID0gcGFnZTsKKwl3bGFuZGV2aWNlX3QgKndsYW5kZXYgPSAod2xhbmRldmljZV90ICopIGRhdGE7CisJaGZhMzg0eF90ICpodyA9IChoZmEzODR4X3QgKikgd2xhbmRldi0+cHJpdjsKKworCVVJTlQxNiBod3R5cGUgPSAwOworCisJREJGRU5URVI7CisJaWYgKG9mZnNldCAhPSAwKSB7CisJCSplb2YgPSAxOworCQlnb3RvIGV4aXQ7CisJfQorCisJLy8gWFhYIDB4MDAwMSBmb3IgcHJpc20yLjUvMywgMHgwMDAwIGZvciBwcmlzbTIuCisJaHd0eXBlID0gQklUMDsKKworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1VTQikKKwlpZiAoaHctPmlzcmFtMTYpCisJCWh3dHlwZSB8PSBCSVQxOworI2VuZGlmCisKKyNpZiAoV0xBTl9IT1NUSUYgPT0gV0xBTl9QQ0kpCisJaHd0eXBlIHw9IEJJVDI7CisjZW5kaWYKKworI2RlZmluZSBQUklTTTJfQ1ZTX0lEICIkSWQ6IHByaXNtMnN0YS5jIDE4MjYgMjAwNy0wMy0xOSAxNTozNzowMFogcGl6emEgJCIKKworCXAgKz0gc3ByaW50ZihwLCAiIyAlcyB2ZXJzaW9uICVzICglcykgJyVzJ1xuXG4iLAorCQkgICAgIGRldl9pbmZvLAorCQkgICAgIFdMQU5fUkVMRUFTRSwgV0xBTl9CVUlMRF9EQVRFLCBQUklTTTJfQ1ZTX0lEKTsKKworCXAgKz0gc3ByaW50ZihwLCAiIyBuaWMgaC93OiBpZD0weCUwMnggJWQuJWQuJWRcbiIsCisJCSAgICAgaHctPmlkZW50X25pYy5pZCwgaHctPmlkZW50X25pYy5tYWpvciwKKwkJICAgICBody0+aWRlbnRfbmljLm1pbm9yLCBody0+aWRlbnRfbmljLnZhcmlhbnQpOworCisJcCArPSBzcHJpbnRmKHAsICIjIHByaSBmL3c6IGlkPTB4JTAyeCAlZC4lZC4lZFxuIiwKKwkJICAgICBody0+aWRlbnRfcHJpX2Z3LmlkLCBody0+aWRlbnRfcHJpX2Z3Lm1ham9yLAorCQkgICAgIGh3LT5pZGVudF9wcmlfZncubWlub3IsIGh3LT5pZGVudF9wcmlfZncudmFyaWFudCk7CisKKwlpZiAoaHctPmlkZW50X3N0YV9mdy5pZCA9PSAweDFmKSB7CisJCXAgKz0gc3ByaW50ZihwLCAiIyBzdGEgZi93OiBpZD0weCUwMnggJWQuJWQuJWRcbiIsCisJCQkgICAgIGh3LT5pZGVudF9zdGFfZncuaWQsIGh3LT5pZGVudF9zdGFfZncubWFqb3IsCisJCQkgICAgIGh3LT5pZGVudF9zdGFfZncubWlub3IsIGh3LT5pZGVudF9zdGFfZncudmFyaWFudCk7CisJfSBlbHNlIHsKKwkJcCArPSBzcHJpbnRmKHAsICIjIGFwIGYvdzogaWQ9MHglMDJ4ICVkLiVkLiVkXG4iLAorCQkJICAgICBody0+aWRlbnRfc3RhX2Z3LmlkLCBody0+aWRlbnRfc3RhX2Z3Lm1ham9yLAorCQkJICAgICBody0+aWRlbnRfc3RhX2Z3Lm1pbm9yLCBody0+aWRlbnRfc3RhX2Z3LnZhcmlhbnQpOworCX0KKworI2lmIChXTEFOX0hPU1RJRiAhPSBXTEFOX1VTQikKKwlwICs9IHNwcmludGYocCwgIiMgaW5pdGlhbCBuaWMgaHcgdHlwZSwgbmVlZGVkIGZvciBTU0YgcmFtZGxcbiIpOworCXAgKz0gc3ByaW50ZihwLCAiaW5pdG5pY2h3PSUwNHhcbiIsIGh3dHlwZSk7CisjZW5kaWYKKworIGV4aXQ6CisJREJGRVhJVDsKKwlyZXR1cm4gKHAgLSBwYWdlKTsKK30KKyNlbmRpZgorCit2b2lkIHByaXNtMnN0YV9jb21tc3F1YWxfZGVmZXIoc3RydWN0IHdvcmtfc3RydWN0ICpkYXRhKQoreworCWhmYTM4NHhfdAkJKmh3ID0gY29udGFpbmVyX29mKGRhdGEsIHN0cnVjdCBoZmEzODR4LCBjb21tc3F1YWxfYmgpOworICAgICAgICB3bGFuZGV2aWNlX3QgICAgICAgICAgICAqd2xhbmRldiA9IGh3LT53bGFuZGV2OworCWhmYTM4NHhfYnl0ZXN0cjMyX3Qgc3NpZDsKKwlpbnQgcmVzdWx0ID0gMDsKKworCURCRkVOVEVSOworCisJaWYgKGh3LT53bGFuZGV2LT5od3JlbW92ZWQpCisJCWdvdG8gZG9uZTsKKworCS8qIHdlIGRvbid0IGNhcmUgaWYgd2UncmUgaW4gQVAgbW9kZSAqLworCWlmICgod2xhbmRldi0+bWFjbW9kZSA9PSBXTEFOX01BQ01PREVfTk9ORSkgfHwKKwkgICAgKHdsYW5kZXYtPm1hY21vZGUgPT0gV0xBTl9NQUNNT0RFX0VTU19BUCkpIHsKKwkJZ290byBkb25lOworCX0KKworCS8qIEl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8gcG9sbCB0aGVzZSBpbiBub24tSUJTUyAqLworCWlmICh3bGFuZGV2LT5tYWNtb2RlICE9IFdMQU5fTUFDTU9ERV9JQlNTX1NUQSkgeworCQlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LCBIRkEzODR4X1JJRF9EQk1DT01NU1FVQUxJVFksCisJCQkJCQkmaHctPnF1YWwsCisJCQkJCQlIRkEzODR4X1JJRF9EQk1DT01NU1FVQUxJVFlfTEVOKTsKKworCQlpZiAocmVzdWx0KSB7CisJCQlXTEFOX0xPR19FUlJPUigiZXJyb3IgZmV0Y2hpbmcgY29tbXNxdWFsXG4iKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCS8vIHF1YWwuQ1FfY3VyckJTUzsgLy8gbGluaworCQkvLyBBU0xfY3VyckJTUzsgIC8vIGxldmVsCisJCS8vIHF1YWwuQU5MX2N1cnJGQzsgLy8gbm9pc2UKKworCQlXTEFOX0xPR19ERUJVRygzLCAiY29tbXNxdWFsICVkICVkICVkXG4iLAorCQkJICAgICAgIGhmYTM4NHgyaG9zdF8xNihody0+cXVhbC5DUV9jdXJyQlNTKSwKKwkJCSAgICAgICBoZmEzODR4Mmhvc3RfMTYoaHctPnF1YWwuQVNMX2N1cnJCU1MpLAorCQkJICAgICAgIGhmYTM4NHgyaG9zdF8xNihody0+cXVhbC5BTkxfY3VyckZDKSk7CisJfQorCisJLyogTGFzdGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgQlNTSUQgZGlkbid0IGNoYW5nZSBvbiB1cyAqLworCXJlc3VsdCA9IGhmYTM4NHhfZHJ2cl9nZXRjb25maWcoaHcsCisJCQkJCUhGQTM4NHhfUklEX0NVUlJFTlRCU1NJRCwKKwkJCQkJd2xhbmRldi0+YnNzaWQsIFdMQU5fQlNTSURfTEVOKTsKKwlpZiAoIHJlc3VsdCApIHsKKwkJV0xBTl9MT0dfREVCVUcoMSwKKwkJCSAgICAgICAiZ2V0Y29uZmlnKDB4JTAyeCkgZmFpbGVkLCByZXN1bHQgPSAlZFxuIiwKKwkJCSAgICAgICBIRkEzODR4X1JJRF9DVVJSRU5UQlNTSUQsIHJlc3VsdCk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwlyZXN1bHQgPSBoZmEzODR4X2RydnJfZ2V0Y29uZmlnKGh3LAorCQkJCQlIRkEzODR4X1JJRF9DVVJSRU5UU1NJRCwKKwkJCQkJJnNzaWQsIHNpemVvZihzc2lkKSk7CisJaWYgKCByZXN1bHQgKSB7CisJCVdMQU5fTE9HX0RFQlVHKDEsCisJCQkgICAgICAgImdldGNvbmZpZygweCUwMngpIGZhaWxlZCwgcmVzdWx0ID0gJWRcbiIsCisJCQkgICAgICAgSEZBMzg0eF9SSURfQ1VSUkVOVFNTSUQsIHJlc3VsdCk7CisJCWdvdG8gZG9uZTsKKwl9CisJcHJpc20ybWdtdF9ieXRlc3RyMnBzdHIoKGhmYTM4NHhfYnl0ZXN0cl90ICopJnNzaWQsCisJCQkJKHA4MDIxMXBzdHJkX3QgKikgJndsYW5kZXYtPnNzaWQpOworCisKKwkvKiBSZXNjaGVkdWxlIHRpbWVyICovCisJbW9kX3RpbWVyKCZody0+Y29tbXNxdWFsX3RpbWVyLCBqaWZmaWVzICsgSFopOworCisgZG9uZToKKwlEQkZFWElUOworfQorCit2b2lkIHByaXNtMnN0YV9jb21tc3F1YWxfdGltZXIodW5zaWduZWQgbG9uZyBkYXRhKQoreworICAgICAgICBoZmEzODR4X3QgICAgICAgICAgICAgICAqaHcgPSAoaGZhMzg0eF90ICopIGRhdGE7CisKKwlEQkZFTlRFUjsKKworCXNjaGVkdWxlX3dvcmsoJmh3LT5jb21tc3F1YWxfYmgpOworCisJREJGRVhJVDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ZlcnNpb24uaCBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ZlcnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDVmODgyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvdmVyc2lvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qIHNyYy9pbmNsdWRlL3dsYW4vdmVyc2lvbi5oCisqCisqCisqIENvcHlyaWdodCAoQykgMTk5OSBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIGxpbnV4LXdsYW4KKyoKKyogICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYworKiAgIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlCisqICAgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCisqICAgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisqCisqICAgU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTCisqICAgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorKiAgIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZworKiAgIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqCisqICAgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUKKyogICB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSwgaW4gd2hpY2gKKyogICBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aGUKKyogICBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZQorKiAgIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlCisqICAgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uCisqICAgYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyogICBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMLiAgSWYgeW91IGRvIG5vdCBkZWxldGUKKyogICB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcworKiAgIGZpbGUgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogSW5xdWlyaWVzIHJlZ2FyZGluZyB0aGUgbGludXgtd2xhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNhbiBiZQorKiBtYWRlIGRpcmVjdGx5IHRvOgorKgorKiBBYnNvbHV0ZVZhbHVlIFN5c3RlbXMgSW5jLgorKiBpbmZvQGxpbnV4LXdsYW4uY29tCisqIGh0dHA6Ly93d3cubGludXgtd2xhbi5jb20KKyoKKyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogUG9ydGlvbnMgb2YgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBmdW5kZWQgYnkKKyogSW50ZXJzaWwgQ29ycG9yYXRpb24gYXMgcGFydCBvZiBQUklTTShSKSBjaGlwc2V0IHByb2R1Y3QgZGV2ZWxvcG1lbnQuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworI2lmbmRlZiBfV0xBTl9WRVJTSU9OX0gKKyNkZWZpbmUgX1dMQU5fVkVSU0lPTl9ICisjaWZuZGVmIEtFUk5FTF9WRVJTSU9OCisjZGVmaW5lIEtFUk5FTF9WRVJTSU9OKGEsYixjKSAoKChhKSA8PCAxNikgKyAoKGIpIDw8IDgpICsgKGMpKQorI2VuZGlmCisKKy8qIFdMQU5fSE9TVElGIChnZW5lcmFsbHkgc2V0IG9uIHRoZSBjb21tYW5kIGxpbmUsIG5vdCBkZXRlY3RlZCkgKi8KKyNkZWZpbmUgV0xBTl9OT05FICAgICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFdMQU5fUENNQ0lBICAgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBXTEFOX0lTQSAgICAgICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgV0xBTl9QQ0kgICAgICAgICAgICAgICAgICAgICAgICAzCisjZGVmaW5lIFdMQU5fVVNCICAgICAgICAgICAgICAgICAgICAgICAgNAorI2RlZmluZSBXTEFOX1BMWCAgICAgICAgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgV0xBTl9TTEFWRSAgICAgICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIFdMQU5fUkVMRUFTRQkiMC4yLjgiCisjZGVmaW5lIFdMQU5fUkVMRUFTRV9DT0RFIDB4MDAwMjA4CisjZGVmaW5lIFdMQU5fQlVJTERfREFURSAiVGh1IE9jdCAgMiAxMTowNDo0MiBQRFQgMjAwOCIKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy93bGFuX2NvbXBhdC5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvd2xhbl9jb21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzAyNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvd2xhbl9jb21wYXQuaApAQCAtMCwwICsxLDc1NyBAQAorLyogd2xhbl9jb21wYXQuaAorKgorKiBUeXBlcyBhbmQgbWFjcm9zIHRvIGFpZCBpbiBwb3J0YWJpbGl0eQorKgorKiBDb3B5cmlnaHQgKEMpIDE5OTkgQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiBsaW51eC13bGFuCisqCisqICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMKKyogICBMaWNlbnNlIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZQorKiAgIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorKiAgIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworKgorKiAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUworKiAgIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyogICBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKKyogICByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKgorKiAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisqICAgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgKHRoZSAiR1BMIiksIGluIHdoaWNoCisqICAgY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlCisqICAgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB0aGUgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyogICBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorKiAgIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIE1QTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbgorKiAgIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCisqICAgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisqICAgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMKKyogICBmaWxlIHVuZGVyIGVpdGhlciB0aGUgTVBMIG9yIHRoZSBHUEwuCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIElucXVpcmllcyByZWdhcmRpbmcgdGhlIGxpbnV4LXdsYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjYW4gYmUKKyogbWFkZSBkaXJlY3RseSB0bzoKKyoKKyogQWJzb2x1dGVWYWx1ZSBTeXN0ZW1zIEluYy4KKyogaW5mb0BsaW51eC13bGFuLmNvbQorKiBodHRwOi8vd3d3LmxpbnV4LXdsYW4uY29tCisqCisqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqIFBvcnRpb25zIG9mIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZnVuZGVkIGJ5CisqIEludGVyc2lsIENvcnBvcmF0aW9uIGFzIHBhcnQgb2YgUFJJU00oUikgY2hpcHNldCBwcm9kdWN0IGRldmVsb3BtZW50LgorKgorKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworI2lmbmRlZiBfV0xBTl9DT01QQVRfSAorI2RlZmluZSBfV0xBTl9DT01QQVRfSAorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0tLS0gRXN0YWJsaXNoIFBsYXRmb3JtIElkZW50aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBLZXkgbWFjcm9zOiAqLworLyogV0xBTl9DUFVfRkFNSUxZICovCisJI2RlZmluZSBXTEFOX0l4ODYJCQkxCisJI2RlZmluZSBXTEFOX1BQQwkJCTIKKwkjZGVmaW5lIFdMQU5fSXg5NgkJCTMKKwkjZGVmaW5lIFdMQU5fQVJNCQkJNAorCSNkZWZpbmUgV0xBTl9BTFBIQQkJCTUKKwkjZGVmaW5lIFdMQU5fTUlQUwkJCTYKKwkjZGVmaW5lIFdMQU5fSFBQQQkJCTcKKwkjZGVmaW5lIFdMQU5fU1BBUkMJCQk4CisJI2RlZmluZSBXTEFOX1NIICAgIAkJCTkKKwkjZGVmaW5lIFdMQU5feDg2XzY0ICAgICAgICAgICAgICAgICAgICAgMTAKKy8qIFdMQU5fU1lTQVJDSCAqLworCSNkZWZpbmUgV0xBTl9QQ0FUCQkJMQorCSNkZWZpbmUgV0xBTl9NQlgJCQkyCisJI2RlZmluZSBXTEFOX1JQWAkJCTMKKwkjZGVmaW5lIFdMQU5fTFdBUkNICQkJNAorCSNkZWZpbmUgV0xBTl9QTUFDCQkJNQorCSNkZWZpbmUgV0xBTl9TS0lGRgkJCTYKKwkjZGVmaW5lIFdMQU5fQklUU1kJCQk3CisJI2RlZmluZSBXTEFOX0FMUEhBQVJDSAkJCTcKKwkjZGVmaW5lIFdMQU5fTUlQU0FSQ0gJCQk5CisJI2RlZmluZSBXTEFOX0hQUEFBUkNICQkJMTAKKwkjZGVmaW5lIFdMQU5fU1BBUkNBUkNICQkJMTEKKwkjZGVmaW5lIFdMQU5fU0hBUkNIICAgCQkJMTIKKworLyogTm90ZTogdGhlIFBMWCBIT1NUSUYgYWJvdmUgcmVmZXJzIHRvIHNvbWUgdmVuZG9ycyBpbXBsZW1lbnRhdGlvbnMgZm9yICovCisvKiAgICAgICBQQ0kuICBJdCdzIGEgUExYIGNoaXAgdGhhdCBpcyBhIFBDSSB0byBQQ01DSUEgYWRhcHRlciwgYnV0IGl0ICAgKi8KKy8qICAgICAgIGlzbid0IGEgcmVhbCBQQ01DSUEgaG9zdCBpbnRlcmZhY2UgYWRhcHRlciBwcm92aWRpbmcgYWxsIHRoZSAgICAqLworLyogICAgICAgY2FyZCZzb2NrZXQgc2VydmljZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZiAoZGVmaW5lZChDT05GSUdfUFBDKSB8fCBkZWZpbmVkKENPTkZJR184eHgpIHx8IGRlZmluZWQoX19wb3dlcnBjX18pKQorI2lmbmRlZiBfX3BwY19fCisjZGVmaW5lIF9fcHBjX18KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18pCisKKyNpZm5kZWYgQVVUT0NPTkZfSU5DTFVERUQKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorCSNkZWZpbmUgV0xBTl9DUFVfRkFNSUxZCQlXTEFOX3g4Nl82NAorCSNkZWZpbmUgV0xBTl9TWVNBUkNICQlXTEFOX1BDQVQKKyNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pNDg2X18pIHx8IGRlZmluZWQoX19pNTg2X18pIHx8IGRlZmluZWQoX19pNjg2X18pCisJI2RlZmluZSBXTEFOX0NQVV9GQU1JTFkJCVdMQU5fSXg4NgorCSNkZWZpbmUgV0xBTl9TWVNBUkNICQlXTEFOX1BDQVQKKyNlbGlmIGRlZmluZWQoX19wcGNfXykKKwkjZGVmaW5lIFdMQU5fQ1BVX0ZBTUlMWQkJV0xBTl9QUEMKKwkjaWYgZGVmaW5lZChDT05GSUdfTUJYKQorCQkjZGVmaW5lIFdMQU5fU1lTQVJDSAlXTEFOX01CWAorCSNlbGlmIGRlZmluZWQoQ09ORklHX1JQWExJVEUpCisJCSNkZWZpbmUgV0xBTl9TWVNBUkNICVdMQU5fUlBYCisJI2VsaWYgZGVmaW5lZChDT05GSUdfUlBYQ0xBU1NJQykKKwkJI2RlZmluZSBXTEFOX1NZU0FSQ0gJV0xBTl9SUFgKKwkjZWxzZQorCQkjZGVmaW5lIFdMQU5fU1lTQVJDSAlXTEFOX1BNQUMKKwkjZW5kaWYKKyNlbGlmIGRlZmluZWQoX19hcm1fXykKKwkjZGVmaW5lIFdMQU5fQ1BVX0ZBTUlMWQkJV0xBTl9BUk0KKwkjZGVmaW5lIFdMQU5fU1lTQVJDSAkJV0xBTl9TS0lGRgorI2VsaWYgZGVmaW5lZChfX2FscGhhX18pCisJI2RlZmluZSBXTEFOX0NQVV9GQU1JTFkJCVdMQU5fQUxQSEEKKwkjZGVmaW5lIFdMQU5fU1lTQVJDSAkJV0xBTl9BTFBIQUFSQ0gKKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisJI2RlZmluZSBXTEFOX0NQVV9GQU1JTFkJCVdMQU5fTUlQUworCSNkZWZpbmUgV0xBTl9TWVNBUkNICQlXTEFOX01JUFNBUkNICisjZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorCSNkZWZpbmUgV0xBTl9DUFVfRkFNSUxZCQlXTEFOX0hQUEEKKwkjZGVmaW5lIFdMQU5fU1lTQVJDSAkJV0xBTl9IUFBBQVJDSAorI2VsaWYgZGVmaW5lZChfX3NwYXJjX18pCisgICAgICAgICNkZWZpbmUgV0xBTl9DUFVfRkFNSUxZICAgICAgICAgV0xBTl9TUEFSQworICAgICAgICAjZGVmaW5lIFdMQU5fU1lTQVJDSCAgICAgICAgICAgIFdMQU5fU1BBUkMKKyNlbGlmIGRlZmluZWQoX19zaF9fKQorICAgICAgICAjZGVmaW5lIFdMQU5fQ1BVX0ZBTUlMWSAgICAgICAgIFdMQU5fU0gKKyAgICAgICAgI2RlZmluZSBXTEFOX1NZU0FSQ0ggICAgICAgICAgICBXTEFOX1NIQVJDSAorICAgICAgICAjaWZuZGVmIF9fTElUVExFX0VORElBTl9fCisgICAgICAgICNkZWZpbmUgX19MSVRUTEVfRU5ESUFOX18KKyAgICAgICAgI2VuZGlmCisjZWxzZQorCSNlcnJvciAiTm8gQ1BVIGlkZW50aWZpZWQhIgorI2VuZGlmCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworCisvKgorICAgU29tZSBiaWcgZW5kaWFuIG1hY2hpbmVzIGltcGxpY2l0bHkgZG8gYWxsIEkvTyBpbiBsaXR0bGUgZW5kaWFuIG1vZGUuCisKKyAgIEluIHBhcnRpY3VsYXI6CisgICAgICAgICAgTGludXgvUFBDIG9uIFBvd2VyTWFjcyAoUENJKQorCSAgQXJtL0ludGVsIFhzY2FsZSAoUENJKQorCisgICBUaGlzIG1heSBhbHNvIGFmZmVjdCBQTFggYm9hcmRzIGFuZCBvdGhlciBCRSAmfCBQUEMgcGxhdGZvcm1zOworICAgYXMgbmV3IG9uZXMgYXJlIGRpc2NvdmVyZWQsIGFkZCB0aGVtIGJlbG93LgorKi8KKworI2lmIGRlZmluZWQoV0xBTl9IT1NUSUYpCisjaWYgKChXTEFOX0hPU1RJRiA9PSBXTEFOX1BDSSkgfHwgKFdMQU5fSE9TVElGID09IFdMQU5fUExYKSkKKyNpZiAoKFdMQU5fU1lTQVJDSCA9PSBXTEFOX1NLSUZGKSB8fCAoV0xBTl9TWVNBUkNIID09IFdMQU5fUE1BQykgfHwgKFdMQU5fU1lTQVJDSCA9PSBXTEFOX1NQQVJDKSkKKyNkZWZpbmUgUkVWRVJTRV9FTkRJQU4KKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qLS0tLS0tIEJpdCBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjZGVmaW5lIEJJVDAJMHgwMDAwMDAwMQorI2RlZmluZSBCSVQxCTB4MDAwMDAwMDIKKyNkZWZpbmUgQklUMgkweDAwMDAwMDA0CisjZGVmaW5lIEJJVDMJMHgwMDAwMDAwOAorI2RlZmluZSBCSVQ0CTB4MDAwMDAwMTAKKyNkZWZpbmUgQklUNQkweDAwMDAwMDIwCisjZGVmaW5lIEJJVDYJMHgwMDAwMDA0MAorI2RlZmluZSBCSVQ3CTB4MDAwMDAwODAKKyNkZWZpbmUgQklUOAkweDAwMDAwMTAwCisjZGVmaW5lIEJJVDkJMHgwMDAwMDIwMAorI2RlZmluZSBCSVQxMAkweDAwMDAwNDAwCisjZGVmaW5lIEJJVDExCTB4MDAwMDA4MDAKKyNkZWZpbmUgQklUMTIJMHgwMDAwMTAwMAorI2RlZmluZSBCSVQxMwkweDAwMDAyMDAwCisjZGVmaW5lIEJJVDE0CTB4MDAwMDQwMDAKKyNkZWZpbmUgQklUMTUJMHgwMDAwODAwMAorI2RlZmluZSBCSVQxNgkweDAwMDEwMDAwCisjZGVmaW5lIEJJVDE3CTB4MDAwMjAwMDAKKyNkZWZpbmUgQklUMTgJMHgwMDA0MDAwMAorI2RlZmluZSBCSVQxOQkweDAwMDgwMDAwCisjZGVmaW5lIEJJVDIwCTB4MDAxMDAwMDAKKyNkZWZpbmUgQklUMjEJMHgwMDIwMDAwMAorI2RlZmluZSBCSVQyMgkweDAwNDAwMDAwCisjZGVmaW5lIEJJVDIzCTB4MDA4MDAwMDAKKyNkZWZpbmUgQklUMjQJMHgwMTAwMDAwMAorI2RlZmluZSBCSVQyNQkweDAyMDAwMDAwCisjZGVmaW5lIEJJVDI2CTB4MDQwMDAwMDAKKyNkZWZpbmUgQklUMjcJMHgwODAwMDAwMAorI2RlZmluZSBCSVQyOAkweDEwMDAwMDAwCisjZGVmaW5lIEJJVDI5CTB4MjAwMDAwMDAKKyNkZWZpbmUgQklUMzAJMHg0MDAwMDAwMAorI2RlZmluZSBCSVQzMQkweDgwMDAwMDAwCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCit0eXBlZGVmIHVfaW50OF90CVVJTlQ4OwordHlwZWRlZiB1X2ludDE2X3QJVUlOVDE2OwordHlwZWRlZiB1X2ludDMyX3QJVUlOVDMyOworCit0eXBlZGVmIGludDhfdAkJSU5UODsKK3R5cGVkZWYgaW50MTZfdAkJSU5UMTY7Cit0eXBlZGVmIGludDMyX3QJCUlOVDMyOworCit0eXBlZGVmIHVuc2lnbmVkIGludCAgICBVSU5UOwordHlwZWRlZiBzaWduZWQgaW50ICAgICAgSU5UOworCit0eXBlZGVmIHVfaW50NjRfdAlVSU5UNjQ7Cit0eXBlZGVmIGludDY0X3QJCUlOVDY0OworCisjZGVmaW5lIFVJTlQ4X01BWAkoMHhmZlVMKQorI2RlZmluZSBVSU5UMTZfTUFYCSgweGZmZmZVTCkKKyNkZWZpbmUgVUlOVDMyX01BWAkoMHhmZmZmZmZmZlVMKQorCisjZGVmaW5lIElOVDhfTUFYCSgweDdmTCkKKyNkZWZpbmUgSU5UMTZfTUFYCSgweDdmZmZMKQorI2RlZmluZSBJTlQzMl9NQVgJKDB4N2ZmZmZmZmZMKQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0tLS0gQ29tcGlsZXIgUG9ydGFiaWxpdHkgTWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjZGVmaW5lIF9fV0xBTl9BVFRSSUJfUEFDS19fCQlfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qLS0tLS0tIE9TIFBvcnRhYmlsaXR5IE1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjaWZuZGVmIFdMQU5fREJWQVIKKyNkZWZpbmUgV0xBTl9EQlZBUgl3bGFuX2RlYnVnCisjZW5kaWYKKworI2lmbmRlZiBLRVJORUxfVkVSU0lPTgorI2RlZmluZSBLRVJORUxfVkVSU0lPTihhLGIsYykgKCgoYSkgPDwgMTYpICsgKChiKSA8PCA4KSArIChjKSkKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkpCisjICBpZiAoTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDgpKQorIyAgICBpbmNsdWRlIDxsaW51eC9oYXJkaXJxLmg+CisjICBlbHNlCisjICAgIGluY2x1ZGUgPGFzbS9oYXJkaXJxLmg+CisjICBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0tFUk5FTF9fKQorIyAgZGVmaW5lIFBSRUVNUFRfTUFTSyAgKDB4MDAwMDAwRkZVTCkKKyMgIGRlZmluZSBwcmVlbXB0X2NvdW50KCkgKDBVTCkKKyNlbmRpZgorCisjZGVmaW5lIFdMQU5fTE9HX0VSUk9SKHgsYXJncy4uLikgcHJpbnRrKEtFUk5fRVJSICIlczogIiB4ICwgX19GVU5DVElPTl9fICwgIyNhcmdzKTsKKworI2RlZmluZSBXTEFOX0xPR19XQVJOSU5HKHgsYXJncy4uLikgcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6ICIgeCAsIF9fRlVOQ1RJT05fXyAsICMjYXJncyk7CisKKyNkZWZpbmUgV0xBTl9MT0dfTk9USUNFKHgsYXJncy4uLikgcHJpbnRrKEtFUk5fTk9USUNFICIlczogIiB4ICwgX19GVU5DVElPTl9fICwgIyNhcmdzKTsKKworI2RlZmluZSBXTEFOX0xPR19JTkZPKGFyZ3MuLi4gKSBwcmludGsoS0VSTl9JTkZPIGFyZ3MpCisKKyNpZiBkZWZpbmVkKFdMQU5fSU5DTFVERV9ERUJVRykKKwkjZGVmaW5lIFdMQU5fQVNTRVJUKGMpIGlmICgoIShjKSkgJiYgV0xBTl9EQlZBUiA+PSAxKSB7IFwKKwkJV0xBTl9MT0dfREVCVUcoMSwgIkFzc2VydGlvbiBmYWlsdXJlIVxuIik7IH0KKwkjZGVmaW5lIFdMQU5fSEVYX0RVTVAoIGwsIHgsIHAsIG4pCWlmKCBXTEFOX0RCVkFSID49IChsKSApeyBcCisJCWludCBfX2lfXzsgXAorCQlwcmludGsoS0VSTl9ERUJVRyB4ICI6Iik7IFwKKwkJZm9yKCBfX2lfXz0wOyBfX2lfXyA8IChuKTsgX19pX18rKykgXAorCQkJcHJpbnRrKCAiICUwMngiLCAoKFVJTlQ4KikocCkpW19faV9fXSk7IFwKKwkJcHJpbnRrKCJcbiIpOyB9CisJI2RlZmluZSBEQkZFTlRFUiB7IGlmICggV0xBTl9EQlZBUiA+PSA1ICl7IFdMQU5fTE9HX0RFQlVHKDMsIi0tLS0+XG4iKTsgfSB9CisJI2RlZmluZSBEQkZFWElUICB7IGlmICggV0xBTl9EQlZBUiA+PSA1ICl7IFdMQU5fTE9HX0RFQlVHKDMsIjwtLS0tXG4iKTsgfSB9CisKKwkjZGVmaW5lIFdMQU5fTE9HX0RFQlVHKGwseCxhcmdzLi4uKSBpZiAoIFdMQU5fREJWQVIgPj0gKGwpKSBwcmludGsoS0VSTl9ERUJVRyAiJXMoJWx1KTogIiB4ICwgIF9fRlVOQ1RJT05fXywgKHByZWVtcHRfY291bnQoKSAmIFBSRUVNUFRfTUFTSyksICMjYXJncyApOworI2Vsc2UKKwkjZGVmaW5lIFdMQU5fQVNTRVJUKGMpCisJI2RlZmluZSBXTEFOX0hFWF9EVU1QKCBsLCBzLCBwLCBuKQorCSNkZWZpbmUgREJGRU5URVIKKwkjZGVmaW5lIERCRkVYSVQKKworCSNkZWZpbmUgV0xBTl9MT0dfREVCVUcobCwgcywgYXJncy4uLikKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NNUAorI2RlZmluZSBfX1NNUF9fCQkJMQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18pCisKKyNpZiAoKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkgfHwgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpKSkKKyNkZWZpbmUgVVJCX09OTFlfQ0FMTEJBQ0sKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkpCisjZGVmaW5lIFBUX1JFR1MgICAgLCBzdHJ1Y3QgcHRfcmVncyAqcmVncworI2Vsc2UKKyNkZWZpbmUgUFRfUkVHUworI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDcpKQorIyAgZGVmaW5lIGRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoYSkgIGRlbF90aW1lcl9zeW5jKGEpCisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw0LDE3KSkKKyNkZWZpbmUgQ09ORklHX05FVExJTksJCTEKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMCkpCisjZGVmaW5lIGtmcmVlX3MoYSwgYikJa2ZyZWUoKGEpKQorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwyLDE4KSkKKyNpZm5kZWYgaW5pdF93YWl0cXVldWVfaGVhZAorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDAsMTYpKQorI2RlZmluZSBpbml0X3dhaXRxdWV1ZV9oZWFkKHApICAoKihwKSA9IE5VTEwpCisjZWxzZQorI2RlZmluZSBpbml0X3dhaXRxdWV1ZV9oZWFkKHApICBpbml0X3dhaXRxdWV1ZShwKQorI2VuZGlmCit0eXBlZGVmIHN0cnVjdCB3YWl0X3F1ZXVlICp3YWl0X3F1ZXVlX2hlYWRfdDsKK3R5cGVkZWYgc3RydWN0IHdhaXRfcXVldWUgd2FpdF9xdWV1ZV90OworI2RlZmluZSBzZXRfY3VycmVudF9zdGF0ZShiKSAgeyBjdXJyZW50LT5zdGF0ZSA9IChiKTsgbWIoKTsgfQorI2RlZmluZSBpbml0X3dhaXRxdWV1ZV9lbnRyeShhLCBiKSB7IChhKS0+dGFzayA9IGN1cnJlbnQ7IH0KKyNlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQKKy8vIHJldHZhbCA9PSAwOyBzaWduYWwgbWV0OyB3ZSdyZSBnb29kLgorLy8gcmV0dmFsIDwgMDsgaW50ZXJydXB0ZWQgYnkgc2lnbmFsLgorLy8gcmV0dmFsID4gMDsgdGltZWQgb3V0LgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMCkpICAvLyBmaXhtZT8KKworI2RlZmluZSBfX3dhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0KHdxLCBjb25kaXRpb24sIHJldCkgICAgICAgICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB3YWl0X3F1ZXVlX3QgX193YWl0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfd2FpdHF1ZXVlX2VudHJ5KCZfX3dhaXQsIGN1cnJlbnQpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGFkZF93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZm9yICg7OykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIGlmICghc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzY2hlZHVsZV90aW1lb3V0KHJldCkgICAgOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHJldCA9IC1FUkVTVEFSVFNZUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJlbW92ZV93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCisjZWxzZSAvLyAyLjIKKworCisjZGVmaW5lIF9fd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQod3EsIGNvbmRpdGlvbiwgcmV0KSAgICAgICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCB3YWl0X3F1ZXVlIF9fd2FpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fd2FpdC50YXNrID0gY3VycmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGFkZF93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoOzspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgY3VycmVudC0+c3RhdGUgPSBUQVNLX0lOVEVSUlVQVElCTEU7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzY2hlZHVsZV90aW1lb3V0KHJldCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmV0ID0gLUVSRVNUQVJUU1lTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGN1cnJlbnQtPnN0YXRlID0gVEFTS19SVU5OSU5HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJlbW92ZV93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCisjZW5kaWYgIC8vIHZlcnNpb24gPj0gMi40CisKKyNkZWZpbmUgd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQod3EsIGNvbmRpdGlvbiwgdGltZW91dCkJICBcCisoewkJCQkJCQkJCSAgXAorCWxvbmcgX19yZXQgPSB0aW1lb3V0OwkJCQkJCSAgXAorCWlmICghKGNvbmRpdGlvbikpCQkJCQkJICBcCisJCV9fd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQod3EsIGNvbmRpdGlvbiwgX19yZXQpOyBcCisJX19yZXQ7CQkJCQkJCQkgIFwKK30pCisKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCwyMCkpCisjaWZkZWYgX0xJTlVYX0xJU1RfSAorCitzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKKyAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQpOworICAgICAgICBsaXN0X2FkZF90YWlsKGxpc3QsIGhlYWQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAorCQkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0OworICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CisgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICphdCA9IGhlYWQtPm5leHQ7CisKKyAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKKyAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKKworICAgICAgbGFzdC0+bmV4dCA9IGF0OworICAgICAgYXQtPnByZXYgPSBsYXN0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQpOworICAgICAgbGlzdF9hZGQobGlzdCwgaGVhZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCWlmICghbGlzdF9lbXB0eShsaXN0KSkgeworCQlfX2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQpOworCQlJTklUX0xJU1RfSEVBRChsaXN0KTsKKwl9Cit9CisKKworI2VuZGlmICAvLyBMSVNUX0gKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMSw5MCkpCisjZGVmaW5lIHNwaW5fbG9jayhsKSAgICAgICAgICAgIGRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgc3Bpbl91bmxvY2sobCkgICAgICAgICAgZG8geyB9IHdoaWxlICgwKQorI2RlZmluZSBzcGluX2xvY2tfaXJxc2F2ZShsLGYpICBkbyB7IHNhdmVfZmxhZ3MoZik7IGNsaSgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBzcGluX3VubG9ja19pcnFyZXN0b3JlKGwsZikgZG8geyByZXN0b3JlX2ZsYWdzKGYpOyB9IHdoaWxlICgwKQorI2RlZmluZSBzcGluX2xvY2tfaW5pdChzKSAgICAgICBkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNwaW5fdHJ5bG9jayhsKSAgICAgICAgICgxKQordHlwZWRlZiBpbnQgc3BpbmxvY2tfdDsKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCwwKSkgLy8gWFhYID8/PworI2RlZmluZSBzcGluX2xvY2tfYmggICAgICAgICBzcGluX2xvY2sKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCwwKSkKKyNpZmRlZiBDT05GSUdfU01QCisjZGVmaW5lIHNwaW5faXNfbG9ja2VkKHgpICAgICAgICgqKHZvbGF0aWxlIGNoYXIgKikoJih4KS0+bG9jaykgPD0gMCkKKyNlbHNlCisjZGVmaW5lIHNwaW5faXNfbG9ja2VkKGwpICAgICAgICgwKQorI2VuZGlmCisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDQsMjgpKQorI2RlZmluZSBfX3VzZXIKKyNkZWZpbmUgX19pb21lbQorI2VuZGlmCisKKyNpZmRlZiBfTElOVVhfUFJPQ19GU19ICisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMywyNSkpCisKK2V4dGVybiBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2VudHJ5ICoKK2NyZWF0ZV9wcm9jX3JlYWRfZW50cnkoY29uc3QgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9wcm9jX3QgKnJlYWRfcHJvYywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnJlcyA9IGNyZWF0ZV9wcm9jX2VudHJ5KG5hbWUsIG1vZGUsIGJhc2UpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgcmVzLT5yZWFkX3Byb2MgPSByZWFkX3Byb2M7CisgICAgICAgIHJlcy0+ZGF0YSA9IGRhdGE7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsMjkpKQorI2lmbmRlZiBwcm9jX21rZGlyCisjZGVmaW5lIHByb2NfbWtkaXIobmFtZSwgcm9vdCkgY3JlYXRlX3Byb2NfZW50cnkobmFtZSwgU19JRkRJUiwgcm9vdCkKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYgLyogX0xJTlVYX1BST0NfRlNfSCAqLworCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNSwwKSkKKyNpZm5kZWYgSU5JVF9UUVVFVUUKKyNkZWZpbmUgUFJFUEFSRV9UUVVFVUUoX3RxLCBfcm91dGluZSwgX2RhdGEpICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChfdHEpLT5yb3V0aW5lID0gX3JvdXRpbmU7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoX3RxKS0+ZGF0YSA9IF9kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIElOSVRfVFFVRVVFKF90cSwgX3JvdXRpbmUsIF9kYXRhKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBJTklUX0xJU1RfSEVBRCgmKF90cSktPmxpc3QpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF90cSktPnN5bmMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFBSRVBBUkVfVFFVRVVFKChfdHEpLCAoX3JvdXRpbmUpLCAoX2RhdGEpKTsgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjaWZuZGVmIGNvbnRhaW5lcl9vZgorI2RlZmluZSBjb250YWluZXJfb2YocHRyLCB0eXBlLCBtZW1iZXIpICh7CQkJXAorICAgICAgICBjb25zdCB0eXBlb2YoICgodHlwZSAqKTApLT5tZW1iZXIgKSAqX19tcHRyID0gKHB0cik7CVwKKyAgICAgICAgKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKKyNlbmRpZgorCisjaWZuZGVmIElOSVRfV09SSworI2RlZmluZSB3b3JrX3N0cnVjdCB0cV9zdHJ1Y3QKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDQsMCkpCisjZGVmaW5lIHNjaGVkdWxlX3dvcmsoYSkgICBxdWV1ZV90YXNrKGEsICZ0cV9zY2hlZHVsZXIpCisjZWxzZQorI2RlZmluZSBzY2hlZHVsZV93b3JrKGEpICBzY2hlZHVsZV90YXNrKGEpCisjZW5kaWYKKworI2RlZmluZSBmbHVzaF9zY2hlZHVsZWRfd29yayAgZmx1c2hfc2NoZWR1bGVkX3Rhc2tzCisjZGVmaW5lIElOSVRfV09SSzIoX3dxLCBfcm91dGluZSkgIElOSVRfVFFVRVVFKF93cSwgKHZvaWQgKCopKHZvaWQgKikpX3JvdXRpbmUsIF93cSkKKyNlbmRpZgorCisjZWxzZSAvLyA+PSAyLjUga2VybmVsCisKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjApCisjZGVmaW5lIElOSVRfV09SSzIoX3dxLCBfcm91dGluZSkJSU5JVF9XT1JLKF93cSwgKHZvaWQgKCopKHZvaWQgKikpX3JvdXRpbmUsIF93cSkKKyNlbHNlCisjZGVmaW5lIElOSVRfV09SSzIoX3dxLCBfcm91dGluZSkJSU5JVF9XT1JLKF93cSwgX3JvdXRpbmUpCisjZW5kaWYKKworI2VuZGlmIC8vID49IDIuNSBrZXJuZWwKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsMzgpKQordHlwZWRlZiBzdHJ1Y3QgZGV2aWNlIG5ldGRldmljZV90OworI2VsaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCw0KSkKK3R5cGVkZWYgc3RydWN0IG5ldF9kZXZpY2UgbmV0ZGV2aWNlX3Q7CisjZWxzZQorI3VuZGVmIG5ldGRldmljZV90Cit0eXBlZGVmIHN0cnVjdCBuZXRfZGV2aWNlIG5ldGRldmljZV90OworI2VuZGlmCisKKyNpZmRlZiBXSVJFTEVTU19FWFQKKyNpZiAoV0lSRUxFU1NfRVhUIDwgMTMpCitzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvCit7CisgICAgICAgIF9fdTE2ICAgICAgICAgICBjbWQ7ICAgICAgICAgICAgLyogV2lyZWxlc3MgRXh0ZW5zaW9uIGNvbW1hbmQgKi8KKyAgICAgICAgX191MTYgICAgICAgICAgIGZsYWdzOyAgICAgICAgICAvKiBNb3JlIHRvIGNvbWUgOy0pICovCit9OworI2VuZGlmCisjZW5kaWYKKworCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMSwxOCkpCisjZGVmaW5lIE1PRFVMRV9QQVJNKGEsYikgICAgICAgIGV4dGVybiBpbnQgX19ib2d1c19kZWNsCisjZGVmaW5lIE1PRFVMRV9BVVRIT1IoYSkgICAgICAgIGV4dGVybiBpbnQgX19ib2d1c19kZWNsCisjZGVmaW5lIE1PRFVMRV9ERVNDUklQVElPTihhKSAgIGV4dGVybiBpbnQgX19ib2d1c19kZWNsCisjZGVmaW5lIE1PRFVMRV9TVVBQT1JURURfREVWSUNFKGEpIGV4dGVybiBpbnQgX19ib2d1c19kZWNsCisjdW5kZWYgIEdFVF9VU0VfQ09VTlQKKyNkZWZpbmUgR0VUX1VTRV9DT1VOVChtKSAgICAgICAgbW9kX3VzZV9jb3VudF8KKyNlbmRpZgorCisjaWZuZGVmIE1PRFVMRV9PV05FUgorI2RlZmluZSBNT0RVTEVfT1dORVIoYSkgICAgICAgICBleHRlcm4gaW50IF9fYm9ndXNfZGVjbAorI2RlZmluZSBBTkNJRU5UX01PRFVMRV9DT0RFCisjZW5kaWYKKworI2lmbmRlZiBNT0RVTEVfTElDRU5TRQorI2RlZmluZSBNT0RVTEVfTElDRU5TRShtKSAgICAgICBleHRlcm4gaW50IF9fYm9ndXNfZGVjbAorI2VuZGlmCisKKy8qIFRPRE86ICBEbyB3ZSBjYXJlIGFib3V0IHRoaXM/ICovCisjaWZuZGVmIE1PRFVMRV9ERVZJQ0VfVEFCTEUKKyNkZWZpbmUgTU9EVUxFX0RFVklDRV9UQUJMRShmb28sYmFyKQorI2VuZGlmCisKKyNkZWZpbmUgd2xhbl9taW51dGVzMnRpY2tzKGEpICgoYSkqKHdsYW5fdGlja3NfcGVyX3NlYyAqICA2MCkpCisjZGVmaW5lIHdsYW5fc2Vjb25kczJ0aWNrcyhhKSAoKGEpKih3bGFuX3RpY2tzX3Blcl9zZWMpKQorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNSw0NykpCisjZGVmaW5lIE5FV19NT0RVTEVfQ09ERQorI2lmZGVmIEFOQ0lFTlRfTU9EVUxFX0NPREUKKyN1bmRlZiBBTkNJRU5UX01PRFVMRV9DT0RFCisjZW5kaWYKKyNlbGlmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDQsMjUpKQorI2RlZmluZSBtb2R1bGVfcGFyYW0obmFtZSwgdHlwZSwgcGVybSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCAqX19jaGVja19leGlzdGVuY2VfIyNuYW1lKHZvaWQpIHsgcmV0dXJuICZuYW1lOyB9IFwKKyAgICAgICAgTU9EVUxFX1BBUk0obmFtZSwgX01PRFVMRV9QQVJNX1NUUklOR18gIyMgdHlwZSkKKworI2RlZmluZSBfTU9EVUxFX1BBUk1fU1RSSU5HX2J5dGUgImIiCisjZGVmaW5lIF9NT0RVTEVfUEFSTV9TVFJJTkdfc2hvcnQgImgiCisjZGVmaW5lIF9NT0RVTEVfUEFSTV9TVFJJTkdfdXNob3J0ICJoIgorI2RlZmluZSBfTU9EVUxFX1BBUk1fU1RSSU5HX2ludCAiaSIKKyNkZWZpbmUgX01PRFVMRV9QQVJNX1NUUklOR191aW50ICJpIgorI2RlZmluZSBfTU9EVUxFX1BBUk1fU1RSSU5HX2xvbmcgImwiCisjZGVmaW5lIF9NT0RVTEVfUEFSTV9TVFJJTkdfdWxvbmcgImwiCisjZGVmaW5lIF9NT0RVTEVfUEFSTV9TVFJJTkdfYm9vbCAiaSIKKyNlbmRpZgorCisvKiBsaW51eCA8IDIuNS42OSAqLworI2lmbmRlZiBJUlFfTk9ORQordHlwZWRlZiB2b2lkIGlycXJldHVybl90OworI2RlZmluZSBJUlFfTk9ORQorI2RlZmluZSBJUlFfSEFORExFRAorI2RlZmluZSBJUlFfUkVUVkFMKHgpCisjZW5kaWYKKworI2lmbmRlZiBpbl9hdG9taWMKKyNkZWZpbmUgaW5fYXRvbWljKCkgIDAKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwxMykpCisjZGVmaW5lIFVSQl9BU1lOQ19VTkxJTksgMAorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDcpKQorI2RlZmluZSBVUkJfQVNZTkNfVU5MSU5LICBVU0JfQVNZTkNfVU5MSU5LCisjZGVmaW5lIHVzYl9maWxsX2J1bGtfdXJiICBGSUxMX0JVTEtfVVJCCisjZGVmaW5lIHVzYl9raWxsX3VyYiAgdXNiX3VubGlua191cmIKKyNlbHNlCisjZGVmaW5lIFVTQl9RVUVVRV9CVUxLIDAKKyNlbmRpZgorCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwxMSkpCit0eXBlZGVmIHUzMiBwbV9tZXNzYWdlX3Q7CisjZW5kaWYKKworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsOSkpCisjZGVmaW5lIGhvdHBsdWdfcGF0aCAgIi9ldGMvaG90cGx1Zy93bGFuLmFnZW50IgorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDApKQorI2RlZmluZSBmcmVlX25ldGRldih4KSAgICAgICBrZnJlZSh4KQorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDkpKQorI2RlZmluZSBldGhfaGRyKHgpICAgICAgICAgICAoeCktPm1hYy5ldGhlcm5ldAorI2VuZGlmCisKKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw0LDApKQorI2RlZmluZSBkZWxfdGltZXJfc3luYyhhKSAgICAgICBkZWxfdGltZXIoYSkKKyNlbmRpZgorCisjaWZuZGVmIG1pZ2h0X3NsZWVwCisjZGVmaW5lIG1pZ2h0X3NsZWVwKGEpICAgZG8geyB9IHdoaWxlICgwKQorI2VuZGlmCisKKy8qIEFwcGFyZW50bHkgMi40LjIgZXRodG9vbCBpcyBxdWl0ZSBkaWZmZXJlbnQsIG1heWJlIG5ld2VyIHRvbz8gKi8KKyNpZiAoZGVmaW5lZChTSU9FVEhUT09MKSAmJiAhZGVmaW5lZChFVEhUT09MX0dEUlZJTkZPKSkKKyN1bmRlZiBTSU9FVEhUT09MCisjZW5kaWYKKworLy8gcGNtY2lhLWNzIHN0dWZmCisjaWYgKChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDUsNjgpKSAmJiBcCisgICAgICFkZWZpbmVkKHBjbWNpYV9hY2Nlc3NfY29uZmlndXJhdGlvbl9yZWdpc3RlcikpCisjZGVmaW5lIHBjbWNpYV9hY2Nlc3NfY29uZmlndXJhdGlvbl9yZWdpc3RlcihoYW5kbGUsIHJlZykgXAorICAgICAgICBDYXJkU2VydmljZXMoQWNjZXNzQ29uZmlndXJhdGlvblJlZ2lzdGVyLCBoYW5kbGUsIHJlZykKKyNkZWZpbmUgcGNtY2lhX3JlZ2lzdGVyX2NsaWVudChoYW5kbGUsIHJlZykgXAorICAgICAgICBDYXJkU2VydmljZXMoUmVnaXN0ZXJDbGllbnQsIGhhbmRsZSwgcmVnKQorI2RlZmluZSBwY21jaWFfZGVyZWdpc3Rlcl9jbGllbnQoaGFuZGxlKSBcCisgICAgICAgIENhcmRTZXJ2aWNlcyhEZXJlZ2lzdGVyQ2xpZW50LCBoYW5kbGUpCisjZGVmaW5lIHBjbWNpYV9nZXRfZmlyc3RfdHVwbGUoaGFuZGxlLCB0dXBsZSkgXAorICAgICAgICBDYXJkU2VydmljZXMoR2V0Rmlyc3RUdXBsZSwgaGFuZGxlLCB0dXBsZSkKKyNkZWZpbmUgcGNtY2lhX2dldF9uZXh0X3R1cGxlKGhhbmRsZSwgdHVwbGUpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKEdldE5leHRUdXBsZSwgaGFuZGxlLCB0dXBsZSkKKyNkZWZpbmUgcGNtY2lhX2dldF90dXBsZV9kYXRhKGhhbmRsZSwgdHVwbGUpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKEdldFR1cGxlRGF0YSwgaGFuZGxlLCB0dXBsZSkKKyNkZWZpbmUgcGNtY2lhX3BhcnNlX3R1cGxlKGhhbmRsZSwgdHVwbGUsIHBhcnNlKSBcCisgICAgICAgIENhcmRTZXJ2aWNlcyhQYXJzZVR1cGxlLCBoYW5kbGUsIHR1cGxlLCBwYXJzZSkKKyNkZWZpbmUgcGNtY2lhX2dldF9jb25maWd1cmF0aW9uX2luZm8oaGFuZGxlLCBjb25maWcpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKEdldENvbmZpZ3VyYXRpb25JbmZvLCBoYW5kbGUsIGNvbmZpZykKKyNkZWZpbmUgcGNtY2lhX3JlcXVlc3RfaW8oaGFuZGxlLCByZXEpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKFJlcXVlc3RJTywgaGFuZGxlLCByZXEpCisjZGVmaW5lIHBjbWNpYV9yZXF1ZXN0X2lycShoYW5kbGUsIHJlcSkgXAorICAgICAgICBDYXJkU2VydmljZXMoUmVxdWVzdElSUSwgaGFuZGxlLCByZXEpCisjZGVmaW5lIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24oaGFuZGxlLCByZXEpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKFJlcXVlc3RDb25maWd1cmF0aW9uLCBoYW5kbGUsIHJlcSkKKyNkZWZpbmUgcGNtY2lhX3JlbGVhc2VfY29uZmlndXJhdGlvbihoYW5kbGUpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKFJlbGVhc2VDb25maWd1cmF0aW9uLCBoYW5kbGUpCisjZGVmaW5lIHBjbWNpYV9yZWxlYXNlX2lvKGhhbmRsZSwgcmVxKSBcCisgICAgICAgIENhcmRTZXJ2aWNlcyhSZWxlYXNlSU8sIGhhbmRsZSwgcmVxKQorI2RlZmluZSBwY21jaWFfcmVsZWFzZV9pcnEoaGFuZGxlLCByZXEpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKFJlbGVhc2VJUlEsIGhhbmRsZSwgcmVxKQorI2RlZmluZSBwY21jaWFfcmVsZWFzZV93aW5kb3cod2luKSBcCisgICAgICAgIENhcmRTZXJ2aWNlcyhSZWxlYXNlV2luZG93LCB3aW4pCisjZGVmaW5lIHBjbWNpYV9nZXRfY2FyZF9zZXJ2aWNlc19pbmZvKGluZm8pIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKEdldENhcmRTZXJ2aWNlc0luZm8sIGluZm8pCisjZGVmaW5lIHBjbWNpYV9yZXBvcnRfZXJyb3IoaGFuZGxlLCBlcnIpIFwKKyAgICAgICAgQ2FyZFNlcnZpY2VzKFJlcG9ydEVycm9yLCBoYW5kbGUsIGVycikKKyNlbmRpZgorCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyotLS0tLS0gSGFyZHdhcmUgUG9ydGFiaWxpdHkgTWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgaWVlZTJob3N0MTYobikJX19sZTE2X3RvX2NwdShuKQorI2RlZmluZSBpZWVlMmhvc3QzMihuKQlfX2xlMzJfdG9fY3B1KG4pCisjZGVmaW5lIGhvc3QyaWVlZTE2KG4pCV9fY3B1X3RvX2xlMTYobikKKyNkZWZpbmUgaG9zdDJpZWVlMzIobikJX19jcHVfdG9fbGUzMihuKQorCisjaWYgKFdMQU5fQ1BVX0ZBTUlMWSAhPSBXTEFOX01JUFMpCit0eXBlZGVmIFVJTlQzMiBwaHlzX3Q7CisjZW5kaWYKKworI2lmIChXTEFOX0NQVV9GQU1JTFkgPT0gV0xBTl9QUEMpCisgICAgICAgI2RlZmluZSB3bGFuX2ludyhhKSAgICAgICAgICAgICAgICAgICAgIGluX2JlMTYoKHVuc2lnbmVkIHNob3J0ICopKChhKStfSU9fQkFTRSkpCisgICAgICAgI2RlZmluZSB3bGFuX2lud19sZTE2X3RvX2NwdShhKSAgICAgICAgIGludygoYSkpCisgICAgICAgI2RlZmluZSB3bGFuX291dHcodixhKSAgICAgICAgICAgICAgICAgIG91dF9iZTE2KCh1bnNpZ25lZCBzaG9ydCAqKSgoYSkrX0lPX0JBU0UpLCAodikpCisgICAgICAgI2RlZmluZSB3bGFuX291dHdfY3B1X3RvX2xlMTYodixhKSAgICAgIG91dHcoKHYpLChhKSkKKyNlbHNlCisgICAgICAgI2RlZmluZSB3bGFuX2ludyhhKSAgICAgICAgICAgICAgICAgICAgIGludygoYSkpCisgICAgICAgI2RlZmluZSB3bGFuX2lud19sZTE2X3RvX2NwdShhKSAgICAgICAgIF9fY3B1X3RvX2xlMTYoaW53KChhKSkpCisgICAgICAgI2RlZmluZSB3bGFuX291dHcodixhKSAgICAgICAgICAgICAgICAgIG91dHcoKHYpLChhKSkKKyAgICAgICAjZGVmaW5lIHdsYW5fb3V0d19jcHVfdG9fbGUxNih2LGEpICAgICAgb3V0dyhfX2NwdV90b19sZTE2KCh2KSksKGEpKQorI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLSBHZW5lcmFsIE1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSB3bGFuX21heChhLCBiKSAoKChhKSA+IChiKSkgPyAoYSkgOiAoYikpCisjZGVmaW5lIHdsYW5fbWluKGEsIGIpICgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkKKworI2RlZmluZSB3bGFuX2lzcHJpbnQoYykJKCgoYykgPiAoMHgxOSkpICYmICgoYykgPCAoMHg3ZikpKQorCisjZGVmaW5lIHdsYW5faGV4Y2hhcih4KSAoKCh4KSA8IDB4MGEpID8gKCcwJyArICh4KSkgOiAoJ2EnICsgKCh4KSAtIDB4MGEpKSkKKworLyogQ3JlYXRlIGEgc3RyaW5nIG9mIHByaW50YWJsZSBjaGFycyBmcm9tIHNvbWV0aGluZyB0aGF0IG1pZ2h0IG5vdCBiZSAqLworLyogSXQncyByZWNvbW1lbmRlZCB0aGF0IHRoZSBzdHIgYmUgNCpsZW4gKyAxIGJ5dGVzIGxvbmcgKi8KKyNkZWZpbmUgd2xhbl9ta3ByaW50c3RyKGJ1ZiwgYnVmbGVuLCBzdHIsIHN0cmxlbikgXAoreyBcCisJaW50IGkgPSAwOyBcCisJaW50IGogPSAwOyBcCisJbWVtc2V0KHN0ciwgMCwgKHN0cmxlbikpOyBcCisJZm9yIChpID0gMDsgaSA8IChidWZsZW4pOyBpKyspIHsgXAorCQlpZiAoIHdsYW5faXNwcmludCgoYnVmKVtpXSkgKSB7IFwKKwkJCShzdHIpW2pdID0gKGJ1ZilbaV07IFwKKwkJCWorKzsgXAorCQl9IGVsc2UgeyBcCisJCQkoc3RyKVtqXSA9ICdcXCc7IFwKKwkJCShzdHIpW2orMV0gPSAneCc7IFwKKwkJCShzdHIpW2orMl0gPSB3bGFuX2hleGNoYXIoKChidWYpW2ldICYgMHhmMCkgPj4gNCk7IFwKKwkJCShzdHIpW2orM10gPSB3bGFuX2hleGNoYXIoKChidWYpW2ldICYgMHgwZikpOyBcCisJCQlqICs9IDQ7IFwKKwkJfSBcCisJfSBcCit9CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLSBWYXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2lmZGVmIFdMQU5fSU5DTFVERV9ERUJVRworZXh0ZXJuIGludCB3bGFuX2RlYnVnOworI2VuZGlmCisKK2V4dGVybiBpbnQgd2xhbl9ldGhjb252OwkJLyogV2hhdCdzIHRoZSBkZWZhdWx0IGV0aGNvbnY/ICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKi0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKyNlbmRpZiAvKiBfV0xBTl9DT01QQVRfSCAqLworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMKaW5kZXggMGRhMmMyNS4uMDZkZDExNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCisrKyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwpAQCAtMzQ0LDcgKzM0NCw3IEBACiAJCQkJX19mdW5jX18sIHNhcmItPmxlbiwgdmNjKTsKIAkJLyogZGlzY2FyZCBjZWxscyBhbHJlYWR5IHJlY2VpdmVkICovCiAJCXNrYl90cmltKHNhcmIsIDApOwotCQlVRFNMX0FTU0VSVChzYXJiLT50YWlsICsgQVRNX0NFTExfUEFZTE9BRCA8PSBzYXJiLT5lbmQpOworCQlVRFNMX0FTU0VSVChpbnN0YW5jZSwgc2FyYi0+dGFpbCArIEFUTV9DRUxMX1BBWUxPQUQgPD0gc2FyYi0+ZW5kKTsKIAl9CiAKIAltZW1jcHkoc2tiX3RhaWxfcG9pbnRlcihzYXJiKSwgc291cmNlICsgQVRNX0NFTExfSEVBREVSLCBBVE1fQ0VMTF9QQVlMT0FEKTsKQEAgLTQzMiw3ICs0MzIsNyBAQAogCQl1bnNpZ25lZCBjaGFyICpjZWxsX2J1ZiA9IGluc3RhbmNlLT5jZWxsX2J1ZjsKIAkJdW5zaWduZWQgaW50IHNwYWNlX2xlZnQgPSBzdHJpZGUgLSBidWZfdXNhZ2U7CiAKLQkJVURTTF9BU1NFUlQoYnVmX3VzYWdlIDw9IHN0cmlkZSk7CisJCVVEU0xfQVNTRVJUKGluc3RhbmNlLCBidWZfdXNhZ2UgPD0gc3RyaWRlKTsKIAogCQlpZiAoYXZhaWxfZGF0YSA+PSBzcGFjZV9sZWZ0KSB7CiAJCQkvKiBhZGQgbmV3IGRhdGEgYW5kIHByb2Nlc3MgY2VsbCAqLwpAQCAtNDc1LDcgKzQ3NSw3IEBACiAJdW5zaWduZWQgaW50IHN0cmlkZSA9IGluc3RhbmNlLT50eF9jaGFubmVsLnN0cmlkZTsKIAogCXZkYmcoIiVzOiBza2ItPmxlbj0lZCwgYXZhaWxfc3BhY2U9JXUiLCBfX2Z1bmNfXywgc2tiLT5sZW4sIGF2YWlsX3NwYWNlKTsKLQlVRFNMX0FTU0VSVCghKGF2YWlsX3NwYWNlICUgc3RyaWRlKSk7CisJVURTTF9BU1NFUlQoaW5zdGFuY2UsICEoYXZhaWxfc3BhY2UgJSBzdHJpZGUpKTsKIAogCWZvciAoYnl0ZXNfd3JpdHRlbiA9IDA7IGJ5dGVzX3dyaXR0ZW4gPCBhdmFpbF9zcGFjZSAmJiBjdHJsLT5sZW47CiAJICAgICBieXRlc193cml0dGVuICs9IHN0cmlkZSwgdGFyZ2V0ICs9IHN0cmlkZSkgewpAQCAtNTQ3LDcgKzU0Nyw3IEBACiAJCQkJaWYgKCF1cmItPmlzb19mcmFtZV9kZXNjW2ldLnN0YXR1cykgewogCQkJCQl1bnNpZ25lZCBpbnQgYWN0dWFsX2xlbmd0aCA9IHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0uYWN0dWFsX2xlbmd0aDsKIAotCQkJCQlVRFNMX0FTU0VSVChhY3R1YWxfbGVuZ3RoIDw9IHBhY2tldF9zaXplKTsKKwkJCQkJVURTTF9BU1NFUlQoaW5zdGFuY2UsIGFjdHVhbF9sZW5ndGggPD0gcGFja2V0X3NpemUpOwogCiAJCQkJCWlmICghbWVyZ2VfbGVuZ3RoKQogCQkJCQkJbWVyZ2Vfc3RhcnQgPSAodW5zaWduZWQgY2hhciAqKXVyYi0+dHJhbnNmZXJfYnVmZmVyICsgdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5vZmZzZXQ7CkBAIC0xMTg4LDcgKzExODgsNyBAQAogCQlzdHJ1Y3QgdXJiICp1cmI7CiAJCXVuc2lnbmVkIGludCBpc29fcGFja2V0cyA9IHVzYl9waXBlaXNvYyhjaGFubmVsLT5lbmRwb2ludCkgPyBjaGFubmVsLT5idWZfc2l6ZSAvIGNoYW5uZWwtPnBhY2tldF9zaXplIDogMDsKIAotCQlVRFNMX0FTU0VSVCghdXNiX3BpcGVpc29jKGNoYW5uZWwtPmVuZHBvaW50KSB8fCB1c2JfcGlwZWluKGNoYW5uZWwtPmVuZHBvaW50KSk7CisJCVVEU0xfQVNTRVJUKGluc3RhbmNlLCAhdXNiX3BpcGVpc29jKGNoYW5uZWwtPmVuZHBvaW50KSB8fCB1c2JfcGlwZWluKGNoYW5uZWwtPmVuZHBvaW50KSk7CiAKIAkJdXJiID0gdXNiX2FsbG9jX3VyYihpc29fcGFja2V0cywgR0ZQX0tFUk5FTCk7CiAJCWlmICghdXJiKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmggYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmgKaW5kZXggZTY4ODdjNi4uZjZmNDUwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5oCisrKyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uaApAQCAtNDAsOSArNDAsMTUgQEAKICovCiAKICNpZmRlZiBERUJVRwotI2RlZmluZSBVRFNMX0FTU0VSVCh4KQlCVUdfT04oISh4KSkKKyNkZWZpbmUgVURTTF9BU1NFUlQoaW5zdGFuY2UsIHgpCUJVR19PTighKHgpKQogI2Vsc2UKLSNkZWZpbmUgVURTTF9BU1NFUlQoeCkJZG8geyBpZiAoISh4KSkgd2FybigiZmFpbGVkIGFzc2VydGlvbiAnJXMnIGF0IGxpbmUgJWQiLCBfX3N0cmluZ2lmeSh4KSwgX19MSU5FX18pOyB9IHdoaWxlKDApCisjZGVmaW5lIFVEU0xfQVNTRVJUKGluc3RhbmNlLCB4KQkJCQkJXAorCWRvIHsJXAorCQlpZiAoISh4KSkJCQkJCQlcCisJCQlkZXZfd2FybigmKGluc3RhbmNlKS0+dXNiX2ludGYtPmRldiwJCVwKKwkJCQkgImZhaWxlZCBhc3NlcnRpb24gJyVzJyBhdCBsaW5lICVkIiwJXAorCQkJCSBfX3N0cmluZ2lmeSh4KSwgX19MSU5FX18pOwkJXAorCX0gd2hpbGUoMCkKICNlbmRpZgogCiAjZGVmaW5lIHVzYl9lcnIoaW5zdGFuY2UsIGZvcm1hdCwgYXJnLi4uKQlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0veHVzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3h1c2JhdG0uYwppbmRleCA4NDcyNTQzLi4xN2QxNjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9hdG0veHVzYmF0bS5jCisrKyBiL2RyaXZlcnMvdXNiL2F0bS94dXNiYXRtLmMKQEAgLTE5Myw3ICsxOTMsNyBAQAogCSAgICBudW1fdmVuZG9yICE9IG51bV9wcm9kdWN0IHx8CiAJICAgIG51bV92ZW5kb3IgIT0gbnVtX3J4X2VuZHBvaW50IHx8CiAJICAgIG51bV92ZW5kb3IgIT0gbnVtX3R4X2VuZHBvaW50KSB7Ci0JCXdhcm4oIm1hbGZvcm1lZCBtb2R1bGUgcGFyYW1ldGVycyIpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICJ4dXNiYXRtOiBtYWxmb3JtZWQgbW9kdWxlIHBhcmFtZXRlcnNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL0tjb25maWcgYi9kcml2ZXJzL3VzYi9jbGFzcy9LY29uZmlnCmluZGV4IDY2ZjE3ZWQuLjI1MTllMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZwpAQCAtNDAsMyArNDAsMTMgQEAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQogCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNkYy13ZG0uCiAKK2NvbmZpZyBVU0JfVE1DCisJdHJpc3RhdGUgIlVTQiBUZXN0IGFuZCBNZWFzdXJlbWVudCBDbGFzcyBzdXBwb3J0IgorCWRlcGVuZHMgb24gVVNCCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBjb25uZWN0IGEgVVNCIGRldmljZSB0aGF0IGZvbGxvd3MKKwkgIHRoZSBVU0Iub3JnIHNwZWNpZmljYXRpb24gZm9yIFVTQiBUZXN0IGFuZCBNZWFzdXJlbWVudCBkZXZpY2VzCisJICB0byB5b3VyIGNvbXB1dGVyJ3MgVVNCIHBvcnQuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVzYnRtYy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL01ha2VmaWxlIGIvZHJpdmVycy91c2IvY2xhc3MvTWFrZWZpbGUKaW5kZXggNTM1ZDU5YS4uMzJlODUyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvTWFrZWZpbGUKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvTWFrZWZpbGUKQEAgLTYsMyArNiw0IEBACiBvYmotJChDT05GSUdfVVNCX0FDTSkJCSs9IGNkYy1hY20ubwogb2JqLSQoQ09ORklHX1VTQl9QUklOVEVSKQkrPSB1c2JscC5vCiBvYmotJChDT05GSUdfVVNCX1dETSkJCSs9IGNkYy13ZG0ubworb2JqLSQoQ09ORklHX1VTQl9UTUMpCQkrPSB1c2J0bWMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCmluZGV4IGMyNTc0NTMuLmZhYjIzZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMKQEAgLTMyNiw4ICszMjYsOCBAQAogCXVzYl9tYXJrX2xhc3RfYnVzeShhY20tPmRldik7CiAJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIgKHVyYiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJldHZhbCkKLQkJZXJyICgiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWQiLAotCQkgICAgIF9fZnVuY19fLCByZXR2YWwpOworCQlkZXZfZXJyKCZ1cmItPmRldi0+ZGV2LCAiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCAiCisJCQkicmVzdWx0ICVkIiwgX19mdW5jX18sIHJldHZhbCk7CiB9CiAKIC8qIGRhdGEgaW50ZXJmYWNlIHJldHVybnMgaW5jb21pbmcgYnl0ZXMsIG9yIHdlIGdvdCB1bnRocm90dGxlZCAqLwpAQCAtNTE0LDcgKzUxNCw3IEBACiAKIAlydiA9IHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShhY20tPmNvbnRyb2wpOwogCWlmIChydiA8IDApIHsKLQkJZXJyKCJBdXRvcG0gZmFpbHVyZSBpbiAlcyIsIF9fZnVuY19fKTsKKwkJZGV2X2VycigmYWNtLT5kZXYtPmRldiwgIkF1dG9wbSBmYWlsdXJlIGluICVzXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9CiAJaWYgKGFjbS0+ZGVsYXllZF93YikgewpAQCAtOTI0LDcgKzkyNCw3IEBACiAJCiAJLyogbm9ybWFsIHByb2JpbmcqLwogCWlmICghYnVmZmVyKSB7Ci0JCWVycigiV2VpcmQgZGVzY3JpcHRvciByZWZlcmVuY2VzXG4iKTsKKwkJZGV2X2VycigmaW50Zi0+ZGV2LCAiV2VpcmQgZGVzY3JpcHRvciByZWZlcmVuY2VzXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC05MzQsMjEgKzkzNCwyNCBAQAogCQkJYnVmbGVuID0gaW50Zi0+Y3VyX2FsdHNldHRpbmctPmVuZHBvaW50LT5leHRyYWxlbjsKIAkJCWJ1ZmZlciA9IGludGYtPmN1cl9hbHRzZXR0aW5nLT5lbmRwb2ludC0+ZXh0cmE7CiAJCX0gZWxzZSB7Ci0JCQllcnIoIlplcm8gbGVuZ3RoIGRlc2NyaXB0b3IgcmVmZXJlbmNlc1xuIik7CisJCQlkZXZfZXJyKCZpbnRmLT5kZXYsCisJCQkJIlplcm8gbGVuZ3RoIGRlc2NyaXB0b3IgcmVmZXJlbmNlc1xuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCX0KIAogCXdoaWxlIChidWZsZW4gPiAwKSB7CiAJCWlmIChidWZmZXIgWzFdICE9IFVTQl9EVF9DU19JTlRFUkZBQ0UpIHsKLQkJCWVycigic2tpcHBpbmcgZ2FyYmFnZVxuIik7CisJCQlkZXZfZXJyKCZpbnRmLT5kZXYsICJza2lwcGluZyBnYXJiYWdlXG4iKTsKIAkJCWdvdG8gbmV4dF9kZXNjOwogCQl9CiAKIAkJc3dpdGNoIChidWZmZXIgWzJdKSB7CiAJCQljYXNlIFVTQl9DRENfVU5JT05fVFlQRTogLyogd2UndmUgZm91bmQgaXQgKi8KIAkJCQlpZiAodW5pb25faGVhZGVyKSB7Ci0JCQkJCWVycigiTW9yZSB0aGFuIG9uZSB1bmlvbiBkZXNjcmlwdG9yLCBza2lwcGluZyAuLi4iKTsKKwkJCQkJZGV2X2VycigmaW50Zi0+ZGV2LCAiTW9yZSB0aGFuIG9uZSAiCisJCQkJCQkidW5pb24gZGVzY3JpcHRvciwgIgorCQkJCQkJInNraXBwaW5nIC4uLlxuIik7CiAJCQkJCWdvdG8gbmV4dF9kZXNjOwogCQkJCX0KIAkJCQl1bmlvbl9oZWFkZXIgPSAoc3RydWN0IHVzYl9jZGNfdW5pb25fZGVzYyAqKQpAQCAtOTY2LDcgKzk2OSw5IEBACiAJCQkJY2FsbF9tYW5hZ2VtZW50X2Z1bmN0aW9uID0gYnVmZmVyWzNdOwogCQkJCWNhbGxfaW50ZXJmYWNlX251bSA9IGJ1ZmZlcls0XTsKIAkJCQlpZiAoKGNhbGxfbWFuYWdlbWVudF9mdW5jdGlvbiAmIDMpICE9IDMpCi0JCQkJCWVycigiVGhpcyBkZXZpY2UgY2Fubm90IGRvIGNhbGxzIG9uIGl0cyBvd24uIEl0IGlzIG5vIG1vZGVtLiIpOworCQkJCQlkZXZfZXJyKCZpbnRmLT5kZXYsICJUaGlzIGRldmljZSAiCisJCQkJCQkiY2Fubm90IGRvIGNhbGxzIG9uIGl0cyBvd24uICIKKwkJCQkJCSJJdCBpcyBubyBtb2RlbS5cbiIpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiB0aGVyZSBhcmUgTE9UUyBtb3JlIENEQyBkZXNjcmlwdG9ycyB0aGF0CkBAIC0xMDUxLDcgKzEwNTYsNyBAQAogCWZvciAobWlub3IgPSAwOyBtaW5vciA8IEFDTV9UVFlfTUlOT1JTICYmIGFjbV90YWJsZVttaW5vcl07IG1pbm9yKyspOwogCiAJaWYgKG1pbm9yID09IEFDTV9UVFlfTUlOT1JTKSB7Ci0JCWVycigibm8gbW9yZSBmcmVlIGFjbSBkZXZpY2VzIik7CisJCWRldl9lcnIoJmludGYtPmRldiwgIm5vIG1vcmUgZnJlZSBhY20gZGV2aWNlc1xuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApAQCAtMTQ1NCw3ICsxNDU5LDggQEAKIAkJcmV0dXJuIHJldHZhbDsKIAl9CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLXdkbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLXdkbS5jCmluZGV4IDdlOGUxMjMuLjc0MjlmNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0uYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtd2RtLmMKQEAgLTEzMiwxMCArMTMyLDEyIEBACiAJCQkJIm5vbnplcm8gdXJiIHN0YXR1cyByZWNlaXZlZDogLUVTSFVURE9XTiIpOwogCQkJYnJlYWs7CiAJCWNhc2UgLUVQSVBFOgotCQkJZXJyKCJub256ZXJvIHVyYiBzdGF0dXMgcmVjZWl2ZWQ6IC1FUElQRSIpOworCQkJZGV2X2VycigmZGVzYy0+aW50Zi0+ZGV2LAorCQkJCSJub256ZXJvIHVyYiBzdGF0dXMgcmVjZWl2ZWQ6IC1FUElQRVxuIik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWVycigiVW5leHBlY3RlZCBlcnJvciAlZCIsIHN0YXR1cyk7CisJCQlkZXZfZXJyKCZkZXNjLT5pbnRmLT5kZXYsCisJCQkJIlVuZXhwZWN0ZWQgZXJyb3IgJWRcbiIsIHN0YXR1cyk7CiAJCQlicmVhazsKIAkJfQogCX0KQEAgLTE3MCwxNiArMTcyLDE4IEBACiAJCQlyZXR1cm47IC8qIHVucGx1ZyAqLwogCQljYXNlIC1FUElQRToKIAkJCXNldF9iaXQoV0RNX0lOVF9TVEFMTCwgJmRlc2MtPmZsYWdzKTsKLQkJCWVycigiU3RhbGwgb24gaW50IGVuZHBvaW50Iik7CisJCQlkZXZfZXJyKCZkZXNjLT5pbnRmLT5kZXYsICJTdGFsbCBvbiBpbnQgZW5kcG9pbnRcbiIpOwogCQkJZ290byBzdzsgLyogaGFsdCBpcyBjbGVhcmVkIGluIHdvcmsgKi8KIAkJZGVmYXVsdDoKLQkJCWVycigibm9uemVybyB1cmIgc3RhdHVzIHJlY2VpdmVkOiAlZCIsIHN0YXR1cyk7CisJCQlkZXZfZXJyKCZkZXNjLT5pbnRmLT5kZXYsCisJCQkJIm5vbnplcm8gdXJiIHN0YXR1cyByZWNlaXZlZDogJWRcbiIsIHN0YXR1cyk7CiAJCQlicmVhazsKIAkJfQogCX0KIAogCWlmICh1cmItPmFjdHVhbF9sZW5ndGggPCBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uKSkgewotCQllcnIoIndkbV9pbnRfY2FsbGJhY2sgLSAlZCBieXRlcyIsIHVyYi0+YWN0dWFsX2xlbmd0aCk7CisJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwgIndkbV9pbnRfY2FsbGJhY2sgLSAlZCBieXRlc1xuIiwKKwkJCXVyYi0+YWN0dWFsX2xlbmd0aCk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKQEAgLTE5OCw3ICsyMDIsOCBAQAogCQlnb3RvIGV4aXQ7CiAJZGVmYXVsdDoKIAkJY2xlYXJfYml0KFdETV9QT0xMX1JVTk5JTkcsICZkZXNjLT5mbGFncyk7Ci0JCWVycigidW5rbm93biBub3RpZmljYXRpb24gJWQgcmVjZWl2ZWQ6IGluZGV4ICVkIGxlbiAlZCIsCisJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwKKwkJCSJ1bmtub3duIG5vdGlmaWNhdGlvbiAlZCByZWNlaXZlZDogaW5kZXggJWQgbGVuICVkXG4iLAogCQkJZHItPmJOb3RpZmljYXRpb25UeXBlLCBkci0+d0luZGV4LCBkci0+d0xlbmd0aCk7CiAJCWdvdG8gZXhpdDsKIAl9CkBAIC0yMzYsMTQgKzI0MSwxNiBAQAogc3c6CiAJCQlydiA9IHNjaGVkdWxlX3dvcmsoJmRlc2MtPnJ4d29yayk7CiAJCQlpZiAocnYpCi0JCQkJZXJyKCJDYW5ub3Qgc2NoZWR1bGUgd29yayIpOworCQkJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwKKwkJCQkJIkNhbm5vdCBzY2hlZHVsZSB3b3JrXG4iKTsKIAkJfQogCX0KIGV4aXQ6CiAJcnYgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCWlmIChydikKLQkJZXJyKCIlcyAtIHVzYl9zdWJtaXRfdXJiIGZhaWxlZCB3aXRoIHJlc3VsdCAlZCIsCi0JCSAgICAgX19mdW5jX18sIHJ2KTsKKwkJZGV2X2VycigmZGVzYy0+aW50Zi0+ZGV2LAorCQkJIiVzIC0gdXNiX3N1Ym1pdF91cmIgZmFpbGVkIHdpdGggcmVzdWx0ICVkXG4iLAorCQkJX19mdW5jX18sIHJ2KTsKIAogfQogCkBAIC0zNTMsNyArMzYwLDcgQEAKIAlpZiAocnYgPCAwKSB7CiAJCWtmcmVlKGJ1Zik7CiAJCWNsZWFyX2JpdChXRE1fSU5fVVNFLCAmZGVzYy0+ZmxhZ3MpOwotCQllcnIoIlR4IFVSQiBlcnJvcjogJWQiLCBydik7CisJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwgIlR4IFVSQiBlcnJvcjogJWRcbiIsIHJ2KTsKIAl9IGVsc2UgewogCQlkZXZfZGJnKCZkZXNjLT5pbnRmLT5kZXYsICJUeCBVUkIgaGFzIGJlZW4gc3VibWl0dGVkIGluZGV4PSVkIiwKIAkJCXJlcS0+d0luZGV4KTsKQEAgLTQwMSw3ICs0MDgsOCBAQAogCQkJaW50IHQgPSBkZXNjLT5yZXJyOwogCQkJZGVzYy0+cmVyciA9IDA7CiAJCQlzcGluX3VubG9ja19pcnEoJmRlc2MtPml1c3Bpbik7Ci0JCQllcnIoInJlYWRpbmcgaGFkIHJlc3VsdGVkIGluICVkIiwgdCk7CisJCQlkZXZfZXJyKCZkZXNjLT5pbnRmLT5kZXYsCisJCQkJInJlYWRpbmcgaGFkIHJlc3VsdGVkIGluICVkXG4iLCB0KTsKIAkJCXJ2ID0gLUVJTzsKIAkJCWdvdG8gZXJyOwogCQl9CkBAIC00NDAsNyArNDQ4LDcgQEAKIGVycjoKIAltdXRleF91bmxvY2soJmRlc2MtPnJsb2NrKTsKIAlpZiAocnYgPCAwKQotCQllcnIoIndkbV9yZWFkOiBleGl0IGVycm9yIik7CisJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwgIndkbV9yZWFkOiBleGl0IGVycm9yXG4iKTsKIAlyZXR1cm4gcnY7CiB9CiAKQEAgLTQ1MCw3ICs0NTgsOCBAQAogCiAJd2FpdF9ldmVudChkZXNjLT53YWl0LCAhdGVzdF9iaXQoV0RNX0lOX1VTRSwgJmRlc2MtPmZsYWdzKSk7CiAJaWYgKGRlc2MtPndlcnIgPCAwKQotCQllcnIoIkVycm9yIGluIGZsdXNoIHBhdGg6ICVkIiwgZGVzYy0+d2Vycik7CisJCWRldl9lcnIoJmRlc2MtPmludGYtPmRldiwgIkVycm9yIGluIGZsdXNoIHBhdGg6ICVkXG4iLAorCQkJZGVzYy0+d2Vycik7CiAKIAlyZXR1cm4gZGVzYy0+d2VycjsKIH0KQEAgLTUwMiw3ICs1MTEsNyBAQAogCiAJcnYgPSB1c2JfYXV0b3BtX2dldF9pbnRlcmZhY2UoZGVzYy0+aW50Zik7CiAJaWYgKHJ2IDwgMCkgewotCQllcnIoIkVycm9yIGF1dG9wbSAtICVkIiwgcnYpOworCQlkZXZfZXJyKCZkZXNjLT5pbnRmLT5kZXYsICJFcnJvciBhdXRvcG0gLSAlZFxuIiwgcnYpOwogCQlnb3RvIG91dDsKIAl9CiAJaW50Zi0+bmVlZHNfcmVtb3RlX3dha2V1cCA9IDE7CkBAIC01MTIsNyArNTIxLDggQEAKIAkJcnYgPSB1c2Jfc3VibWl0X3VyYihkZXNjLT52YWxpZGl0eSwgR0ZQX0tFUk5FTCk7CiAJCWlmIChydiA8IDApIHsKIAkJCWRlc2MtPmNvdW50LS07Ci0JCQllcnIoIkVycm9yIHN1Ym1pdHRpbmcgaW50IHVyYiAtICVkIiwgcnYpOworCQkJZGV2X2VycigmZGVzYy0+aW50Zi0+ZGV2LAorCQkJCSJFcnJvciBzdWJtaXR0aW5nIGludCB1cmIgLSAlZFxuIiwgcnYpOwogCQl9CiAJfSBlbHNlIHsKIAkJcnYgPSAwOwpAQCAtNjAwLDcgKzYxMCw3IEBACiAKIAl3aGlsZSAoYnVmbGVuID4gMCkgewogCQlpZiAoYnVmZmVyIFsxXSAhPSBVU0JfRFRfQ1NfSU5URVJGQUNFKSB7Ci0JCQllcnIoInNraXBwaW5nIGdhcmJhZ2UiKTsKKwkJCWRldl9lcnIoJmludGYtPmRldiwgInNraXBwaW5nIGdhcmJhZ2VcbiIpOwogCQkJZ290byBuZXh0X2Rlc2M7CiAJCX0KIApAQCAtNjE0LDcgKzYyNCw4IEBACiAJCQkJIkZpbmRpbmcgbWF4aW11bSBidWZmZXIgbGVuZ3RoOiAlZCIsIG1heGNvbSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWVycigiSWdub3JpbmcgZXh0cmEgaGVhZGVyLCB0eXBlICVkLCBsZW5ndGggJWQiLAorCQkJZGV2X2VycigmaW50Zi0+ZGV2LAorCQkJCSJJZ25vcmluZyBleHRyYSBoZWFkZXIsIHR5cGUgJWQsIGxlbmd0aCAlZFxuIiwKIAkJCQlidWZmZXJbMl0sIGJ1ZmZlclswXSk7CiAJCQlicmVhazsKIAkJfQpAQCAtNzcyLDcgKzc4Myw4IEBACiAJaWYgKGRlc2MtPmNvdW50KSB7CiAJCXJ2ID0gdXNiX3N1Ym1pdF91cmIoZGVzYy0+dmFsaWRpdHksIEdGUF9OT0lPKTsKIAkJaWYgKHJ2IDwgMCkKLQkJCWVycigiRXJyb3IgcmVzdW1lIHN1Ym1pdHRpbmcgaW50IHVyYiAtICVkIiwgcnYpOworCQkJZGV2X2VycigmZGVzYy0+aW50Zi0+ZGV2LAorCQkJCSJFcnJvciByZXN1bWUgc3VibWl0dGluZyBpbnQgdXJiIC0gJWRcbiIsIHJ2KTsKIAl9CiAJcmV0dXJuIHJ2OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNibHAuYyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYmxwLmMKaW5kZXggMDY0NzE2NC4uYjU3NzVhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvdXNibHAuYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2JscC5jCkBAIC01OTMsOCArNTkzLDkgQEAKIAkJCQllcnIgPSB1c2JscF9ocF9jaGFubmVsX2NoYW5nZV9yZXF1ZXN0KHVzYmxwLAogCQkJCQlhcmcsICZuZXdDaGFubmVsKTsKIAkJCQlpZiAoZXJyIDwgMCkgewotCQkJCQllcnIoInVzYmxwJWQ6IGVycm9yID0gJWQgc2V0dGluZyAiCi0JCQkJCQkiSFAgY2hhbm5lbCIsCisJCQkJCWRldl9lcnIoJnVzYmxwLT5kZXYtPmRldiwKKwkJCQkJCSJ1c2JscCVkOiBlcnJvciA9ICVkIHNldHRpbmcgIgorCQkJCQkJIkhQIGNoYW5uZWxcbiIsCiAJCQkJCQl1c2JscC0+bWlub3IsIGVycik7CiAJCQkJCXJldHZhbCA9IC1FSU87CiAJCQkJCWdvdG8gZG9uZTsKQEAgLTEwNzYsMTUgKzEwNzcsMTYgQEAKIAkJICAgICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKIHsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldiAoaW50Zik7Ci0Jc3RydWN0IHVzYmxwICp1c2JscCA9IE5VTEw7CisJc3RydWN0IHVzYmxwICp1c2JscDsKIAlpbnQgcHJvdG9jb2w7CiAJaW50IHJldHZhbDsKIAogCS8qIE1hbGxvYyBhbmQgc3RhcnQgaW5pdGlhbGl6aW5nIHVzYmxwIHN0cnVjdHVyZSBzbyB3ZSBjYW4gdXNlIGl0CiAJICogZGlyZWN0bHkuICovCi0JaWYgKCEodXNibHAgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdXNibHApLCBHRlBfS0VSTkVMKSkpIHsKKwl1c2JscCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB1c2JscCksIEdGUF9LRVJORUwpOworCWlmICghdXNibHApIHsKIAkJcmV0dmFsID0gLUVOT01FTTsKLQkJZ290byBhYm9ydDsKKwkJZ290byBhYm9ydF9yZXQ7CiAJfQogCXVzYmxwLT5kZXYgPSBkZXY7CiAJbXV0ZXhfaW5pdCgmdXNibHAtPndtdXQpOwpAQCAtMTE3OSwxMiArMTE4MSwxMSBAQAogCXVzYl9zZXRfaW50ZmRhdGEgKGludGYsIE5VTEwpOwogCWRldmljZV9yZW1vdmVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfaWVlZTEyODRfaWQpOwogYWJvcnQ6Ci0JaWYgKHVzYmxwKSB7Ci0JCWtmcmVlKHVzYmxwLT5yZWFkYnVmKTsKLQkJa2ZyZWUodXNibHAtPnN0YXR1c2J1Zik7Ci0JCWtmcmVlKHVzYmxwLT5kZXZpY2VfaWRfc3RyaW5nKTsKLQkJa2ZyZWUodXNibHApOwotCX0KKwlrZnJlZSh1c2JscC0+cmVhZGJ1Zik7CisJa2ZyZWUodXNibHAtPnN0YXR1c2J1Zik7CisJa2ZyZWUodXNibHAtPmRldmljZV9pZF9zdHJpbmcpOworCWtmcmVlKHVzYmxwKTsKK2Fib3J0X3JldDoKIAlyZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xMzQ1LDcgKzEzNDYsNyBAQAogCXVzYl9kZXJlZ2lzdGVyX2RldihpbnRmLCAmdXNibHBfY2xhc3MpOwogCiAJaWYgKCF1c2JscCB8fCAhdXNibHAtPmRldikgewotCQllcnIoImJvZ3VzIGRpc2Nvbm5lY3QiKTsKKwkJZGV2X2VycigmaW50Zi0+ZGV2LCAiYm9ndXMgZGlzY29ubmVjdFxuIik7CiAJCUJVRyAoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQzODExZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCkBAIC0wLDAgKzEsMTA4NyBAQAorLyoqCisgKiBkcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYyAtIFVTQiBUZXN0ICYgTWVhc3VybWVudCBjbGFzcyBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU3RlZmFuIEtvcHAsIEdlY2hpbmdlbiwgR2VybWFueQorICogQ29weXJpZ2h0IChDKSAyMDA4IE5vdmVsbCwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQHN1c2UuZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCisgKiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXQKKyAqIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbC4KKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi90bWMuaD4KKworCisjZGVmaW5lIFVTQlRNQ19NSU5PUl9CQVNFCTE3NgorCisvKgorICogU2l6ZSBvZiBkcml2ZXIgaW50ZXJuYWwgSU8gYnVmZmVyLiBNdXN0IGJlIG11bHRpcGxlIG9mIDQgYW5kIGF0IGxlYXN0IGFzCisgKiBsYXJnZSBhcyB3TWF4UGFja2V0U2l6ZSAod2hpY2ggaXMgdXN1YWxseSA1MTIgYnl0ZXMpLgorICovCisjZGVmaW5lIFVTQlRNQ19TSVpFX0lPQlVGRkVSCTIwNDgKKworLyogRGVmYXVsdCBVU0IgdGltZW91dCAoaW4gbWlsbGlzZWNvbmRzKSAqLworI2RlZmluZSBVU0JUTUNfVElNRU9VVAkJMTAKKworLyoKKyAqIE1heGltdW0gbnVtYmVyIG9mIHJlYWQgY3ljbGVzIHRvIGVtcHR5IGJ1bGsgaW4gZW5kcG9pbnQgZHVyaW5nIENMRUFSIGFuZAorICogQUJPUlRfQlVMS19JTiByZXF1ZXN0cy4gRW5kcyB0aGUgbG9vcCBpZiAoZm9yIHdoYXRldmVyIHJlYXNvbikgYSBzaG9ydAorICogcGFja2V0IGlzIG5ldmVyIHJlYWQuCisgKi8KKyNkZWZpbmUgVVNCVE1DX01BWF9SRUFEU19UT19DTEVBUl9CVUxLX0lOCTEwMAorCitzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgdXNidG1jX2RldmljZXNbXSA9IHsKKwl7IFVTQl9JTlRFUkZBQ0VfSU5GTyhVU0JfQ0xBU1NfQVBQX1NQRUMsIDMsIDApLCB9LAorCXsgMCwgfSAvKiB0ZXJtaW5hdGluZyBlbnRyeSAqLworfTsKKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIHRoZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBkZXZpY2UKKyAqIFNlZSBzZWN0aW9uIDQuMi4xLjggb2YgdGhlIFVTQlRNQyBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLgorICovCitzdHJ1Y3QgdXNidG1jX2Rldl9jYXBhYmlsaXRpZXMgeworCV9fdTggaW50ZXJmYWNlX2NhcGFiaWxpdGllczsKKwlfX3U4IGRldmljZV9jYXBhYmlsaXRpZXM7CisJX191OCB1c2I0ODhfaW50ZXJmYWNlX2NhcGFiaWxpdGllczsKKwlfX3U4IHVzYjQ4OF9kZXZpY2VfY2FwYWJpbGl0aWVzOworfTsKKworLyogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcHJpdmF0ZSBkYXRhIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UuIE9uZSBjb3B5IGlzCisgKiBhbGxvY2F0ZWQgZm9yIGVhY2ggVVNCVE1DIGRldmljZSBpbiB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24uCisgKi8KK3N0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgeworCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjsKKworCXVuc2lnbmVkIGludCBidWxrX2luOworCXVuc2lnbmVkIGludCBidWxrX291dDsKKworCXU4IGJUYWc7CisJdTggYlRhZ19sYXN0X3dyaXRlOwkvKiBuZWVkZWQgZm9yIGFib3J0ICovCisJdTggYlRhZ19sYXN0X3JlYWQ7CS8qIG5lZWRlZCBmb3IgYWJvcnQgKi8KKworCS8qIGF0dHJpYnV0ZXMgZnJvbSB0aGUgVVNCIFRNQyBzcGVjIGZvciB0aGlzIGRldmljZSAqLworCXU4IFRlcm1DaGFyOworCWJvb2wgVGVybUNoYXJFbmFibGVkOworCWJvb2wgYXV0b19hYm9ydDsKKworCXN0cnVjdCB1c2J0bWNfZGV2X2NhcGFiaWxpdGllcwljYXBhYmlsaXRpZXM7CisJc3RydWN0IGtyZWYga3JlZjsKKwlzdHJ1Y3QgbXV0ZXggaW9fbXV0ZXg7CS8qIG9ubHkgb25lIGkvbyBmdW5jdGlvbiBydW5uaW5nIGF0IGEgdGltZSAqLworfTsKKyNkZWZpbmUgdG9fdXNidG1jX2RhdGEoZCkgY29udGFpbmVyX29mKGQsIHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEsIGtyZWYpCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNidG1jX2RyaXZlcjsKKworc3RhdGljIHZvaWQgdXNidG1jX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhID0gdG9fdXNidG1jX2RhdGEoa3JlZik7CisKKwl1c2JfcHV0X2RldihkYXRhLT51c2JfZGV2KTsKKwlrZnJlZShkYXRhKTsKK30KKworc3RhdGljIGludCB1c2J0bWNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKK3sKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjsKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhOworCWludCByZXR2YWwgPSAtRU5PREVWOworCisJaW50ZiA9IHVzYl9maW5kX2ludGVyZmFjZSgmdXNidG1jX2RyaXZlciwgaW1pbm9yKGlub2RlKSk7CisJaWYgKCFpbnRmKSB7CisJCXByaW50ayhLRVJOX0VSUiBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogY2FuIG5vdCBmaW5kIGRldmljZSBmb3IgbWlub3IgJWQiLCBpbWlub3IoaW5vZGUpKTsKKwkJZ290byBleGl0OworCX0KKworCWRhdGEgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCWtyZWZfZ2V0KCZkYXRhLT5rcmVmKTsKKworCS8qIFN0b3JlIHBvaW50ZXIgaW4gZmlsZSBzdHJ1Y3R1cmUncyBwcml2YXRlIGRhdGEgZmllbGQgKi8KKwlmaWxwLT5wcml2YXRlX2RhdGEgPSBkYXRhOworCitleGl0OgorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgdXNidG1jX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKworCWtyZWZfcHV0KCZkYXRhLT5rcmVmLCB1c2J0bWNfZGVsZXRlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1c2J0bWNfaW9jdGxfYWJvcnRfYnVsa19pbihzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhKQoreworCWNoYXIgKmJ1ZmZlcjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJaW50IHJ2OworCWludCBuOworCWludCBhY3R1YWw7CisJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqY3VycmVudF9zZXR0aW5nOworCWludCBtYXhfc2l6ZTsKKworCWRldiA9ICZkYXRhLT5pbnRmLT5kZXY7CisJYnVmZmVyID0ga21hbGxvYyhVU0JUTUNfU0laRV9JT0JVRkZFUiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3JjdmN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JUTUNfUkVRVUVTVF9JTklUSUFURV9BQk9SVF9CVUxLX0lOLAorCQkJICAgICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfRU5EUE9JTlQsCisJCQkgICAgIGRhdGEtPmJUYWdfbGFzdF9yZWFkLCBkYXRhLT5idWxrX2luLAorCQkJICAgICBidWZmZXIsIDIsIFVTQlRNQ19USU1FT1VUKTsKKworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAiSU5JVElBVEVfQUJPUlRfQlVMS19JTiByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKworCWlmIChidWZmZXJbMF0gPT0gVVNCVE1DX1NUQVRVU19GQUlMRUQpIHsKKwkJcnYgPSAwOworCQlnb3RvIGV4aXQ7CisJfQorCisJaWYgKGJ1ZmZlclswXSAhPSBVU0JUTUNfU1RBVFVTX1NVQ0NFU1MpIHsKKwkJZGV2X2VycihkZXYsICJJTklUSUFURV9BQk9SVF9CVUxLX0lOIHJldHVybmVkICV4XG4iLAorCQkJYnVmZmVyWzBdKTsKKwkJcnYgPSAtRVBFUk07CisJCWdvdG8gZXhpdDsKKwl9CisKKwltYXhfc2l6ZSA9IDA7CisJY3VycmVudF9zZXR0aW5nID0gZGF0YS0+aW50Zi0+Y3VyX2FsdHNldHRpbmc7CisJZm9yIChuID0gMDsgbiA8IGN1cnJlbnRfc2V0dGluZy0+ZGVzYy5iTnVtRW5kcG9pbnRzOyBuKyspCisJCWlmIChjdXJyZW50X3NldHRpbmctPmVuZHBvaW50W25dLmRlc2MuYkVuZHBvaW50QWRkcmVzcyA9PQorCQkJZGF0YS0+YnVsa19pbikKKwkJCW1heF9zaXplID0gbGUxNl90b19jcHUoY3VycmVudF9zZXR0aW5nLT5lbmRwb2ludFtuXS4KKwkJCQkJCWRlc2Mud01heFBhY2tldFNpemUpOworCisJaWYgKG1heF9zaXplID09IDApIHsKKwkJZGV2X2VycihkZXYsICJDb3VsZG4ndCBnZXQgd01heFBhY2tldFNpemVcbiIpOworCQlydiA9IC1FUEVSTTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoJmRhdGEtPmludGYtPmRldiwgIndNYXhQYWNrZXRTaXplIGlzICVkXG4iLCBtYXhfc2l6ZSk7CisKKwluID0gMDsKKworCWRvIHsKKwkJZGV2X2RiZyhkZXYsICJSZWFkaW5nIGZyb20gYnVsayBpbiBFUFxuIik7CisKKwkJcnYgPSB1c2JfYnVsa19tc2coZGF0YS0+dXNiX2RldiwKKwkJCQkgIHVzYl9yY3ZidWxrcGlwZShkYXRhLT51c2JfZGV2LAorCQkJCQkJICBkYXRhLT5idWxrX2luKSwKKwkJCQkgIGJ1ZmZlciwgVVNCVE1DX1NJWkVfSU9CVUZGRVIsCisJCQkJICAmYWN0dWFsLCBVU0JUTUNfVElNRU9VVCk7CisKKwkJbisrOworCisJCWlmIChydiA8IDApIHsKKwkJCWRldl9lcnIoZGV2LCAidXNiX2J1bGtfbXNnIHJldHVybmVkICVkXG4iLCBydik7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9IHdoaWxlICgoYWN0dWFsID09IG1heF9zaXplKSAmJgorCQkgKG4gPCBVU0JUTUNfTUFYX1JFQURTX1RPX0NMRUFSX0JVTEtfSU4pKTsKKworCWlmIChhY3R1YWwgPT0gbWF4X3NpemUpIHsKKwkJZGV2X2VycihkZXYsICJDb3VsZG4ndCBjbGVhciBkZXZpY2UgYnVmZmVyIHdpdGhpbiAlZCBjeWNsZXNcbiIsCisJCQlVU0JUTUNfTUFYX1JFQURTX1RPX0NMRUFSX0JVTEtfSU4pOworCQlydiA9IC1FUEVSTTsKKwkJZ290byBleGl0OworCX0KKworCW4gPSAwOworCit1c2J0bWNfYWJvcnRfYnVsa19pbl9zdGF0dXM6CisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3JjdmN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JUTUNfUkVRVUVTVF9DSEVDS19BQk9SVF9CVUxLX0lOX1NUQVRVUywKKwkJCSAgICAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0VORFBPSU5ULAorCQkJICAgICAwLCBkYXRhLT5idWxrX2luLCBidWZmZXIsIDB4MDgsCisJCQkgICAgIFVTQlRNQ19USU1FT1VUKTsKKworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAiSU5JVElBVEVfQUJPUlRfQlVMS19JTiByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKworCWlmIChidWZmZXJbMF0gPT0gVVNCVE1DX1NUQVRVU19TVUNDRVNTKSB7CisJCXJ2ID0gMDsKKwkJZ290byBleGl0OworCX0KKworCWlmIChidWZmZXJbMF0gIT0gVVNCVE1DX1NUQVRVU19QRU5ESU5HKSB7CisJCWRldl9lcnIoZGV2LCAiSU5JVElBVEVfQUJPUlRfQlVMS19JTiByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKwkJcnYgPSAtRVBFUk07CisJCWdvdG8gZXhpdDsKKwl9CisKKwlpZiAoYnVmZmVyWzFdID09IDEpCisJCWRvIHsKKwkJCWRldl9kYmcoZGV2LCAiUmVhZGluZyBmcm9tIGJ1bGsgaW4gRVBcbiIpOworCisJCQlydiA9IHVzYl9idWxrX21zZyhkYXRhLT51c2JfZGV2LAorCQkJCQkgIHVzYl9yY3ZidWxrcGlwZShkYXRhLT51c2JfZGV2LAorCQkJCQkJCSAgZGF0YS0+YnVsa19pbiksCisJCQkJCSAgYnVmZmVyLCBVU0JUTUNfU0laRV9JT0JVRkZFUiwKKwkJCQkJICAmYWN0dWFsLCBVU0JUTUNfVElNRU9VVCk7CisKKwkJCW4rKzsKKworCQkJaWYgKHJ2IDwgMCkgeworCQkJCWRldl9lcnIoZGV2LCAidXNiX2J1bGtfbXNnIHJldHVybmVkICVkXG4iLCBydik7CisJCQkJZ290byBleGl0OworCQkJfQorCQl9IHdoaWxlICgoYWN0dWFsID0gbWF4X3NpemUpICYmCisJCQkgKG4gPCBVU0JUTUNfTUFYX1JFQURTX1RPX0NMRUFSX0JVTEtfSU4pKTsKKworCWlmIChhY3R1YWwgPT0gbWF4X3NpemUpIHsKKwkJZGV2X2VycihkZXYsICJDb3VsZG4ndCBjbGVhciBkZXZpY2UgYnVmZmVyIHdpdGhpbiAlZCBjeWNsZXNcbiIsCisJCQlVU0JUTUNfTUFYX1JFQURTX1RPX0NMRUFSX0JVTEtfSU4pOworCQlydiA9IC1FUEVSTTsKKwkJZ290byBleGl0OworCX0KKworCWdvdG8gdXNidG1jX2Fib3J0X2J1bGtfaW5fc3RhdHVzOworCitleGl0OgorCWtmcmVlKGJ1ZmZlcik7CisJcmV0dXJuIHJ2OworCit9CisKK3N0YXRpYyBpbnQgdXNidG1jX2lvY3RsX2Fib3J0X2J1bGtfb3V0KHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IGRldmljZSAqZGV2OworCXU4ICpidWZmZXI7CisJaW50IHJ2OworCWludCBuOworCisJZGV2ID0gJmRhdGEtPmludGYtPmRldjsKKworCWJ1ZmZlciA9IGttYWxsb2MoOCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3JjdmN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JUTUNfUkVRVUVTVF9JTklUSUFURV9BQk9SVF9CVUxLX09VVCwKKwkJCSAgICAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0VORFBPSU5ULAorCQkJICAgICBkYXRhLT5iVGFnX2xhc3Rfd3JpdGUsIGRhdGEtPmJ1bGtfb3V0LAorCQkJICAgICBidWZmZXIsIDIsIFVTQlRNQ19USU1FT1VUKTsKKworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAiSU5JVElBVEVfQUJPUlRfQlVMS19PVVQgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisKKwlpZiAoYnVmZmVyWzBdICE9IFVTQlRNQ19TVEFUVVNfU1VDQ0VTUykgeworCQlkZXZfZXJyKGRldiwgIklOSVRJQVRFX0FCT1JUX0JVTEtfT1VUIHJldHVybmVkICV4XG4iLAorCQkJYnVmZmVyWzBdKTsKKwkJcnYgPSAtRVBFUk07CisJCWdvdG8gZXhpdDsKKwl9CisKKwluID0gMDsKKwordXNidG1jX2Fib3J0X2J1bGtfb3V0X2NoZWNrX3N0YXR1czoKKwlydiA9IHVzYl9jb250cm9sX21zZyhkYXRhLT51c2JfZGV2LAorCQkJICAgICB1c2JfcmN2Y3RybHBpcGUoZGF0YS0+dXNiX2RldiwgMCksCisJCQkgICAgIFVTQlRNQ19SRVFVRVNUX0NIRUNLX0FCT1JUX0JVTEtfT1VUX1NUQVRVUywKKwkJCSAgICAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0VORFBPSU5ULAorCQkJICAgICAwLCBkYXRhLT5idWxrX291dCwgYnVmZmVyLCAweDA4LAorCQkJICAgICBVU0JUTUNfVElNRU9VVCk7CisJbisrOworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAiQ0hFQ0tfQUJPUlRfQlVMS19PVVQgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisKKwlpZiAoYnVmZmVyWzBdID09IFVTQlRNQ19TVEFUVVNfU1VDQ0VTUykKKwkJZ290byB1c2J0bWNfYWJvcnRfYnVsa19vdXRfY2xlYXJfaGFsdDsKKworCWlmICgoYnVmZmVyWzBdID09IFVTQlRNQ19TVEFUVVNfUEVORElORykgJiYKKwkgICAgKG4gPCBVU0JUTUNfTUFYX1JFQURTX1RPX0NMRUFSX0JVTEtfSU4pKQorCQlnb3RvIHVzYnRtY19hYm9ydF9idWxrX291dF9jaGVja19zdGF0dXM7CisKKwlydiA9IC1FUEVSTTsKKwlnb3RvIGV4aXQ7CisKK3VzYnRtY19hYm9ydF9idWxrX291dF9jbGVhcl9oYWx0OgorCXJ2ID0gdXNiX2NvbnRyb2xfbXNnKGRhdGEtPnVzYl9kZXYsCisJCQkgICAgIHVzYl9zbmRjdHJscGlwZShkYXRhLT51c2JfZGV2LCAwKSwKKwkJCSAgICAgVVNCX1JFUV9DTEVBUl9GRUFUVVJFLAorCQkJICAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1NUQU5EQVJEIHwKKwkJCSAgICAgVVNCX1JFQ0lQX0VORFBPSU5ULAorCQkJICAgICBVU0JfRU5EUE9JTlRfSEFMVCwgZGF0YS0+YnVsa19vdXQsIGJ1ZmZlciwKKwkJCSAgICAgMCwgVVNCVE1DX1RJTUVPVVQpOworCisJaWYgKHJ2IDwgMCkgeworCQlkZXZfZXJyKGRldiwgInVzYl9jb250cm9sX21zZyByZXR1cm5lZCAlZFxuIiwgcnYpOworCQlnb3RvIGV4aXQ7CisJfQorCXJ2ID0gMDsKKworZXhpdDoKKwlrZnJlZShidWZmZXIpOworCXJldHVybiBydjsKK30KKworc3RhdGljIHNzaXplX3QgdXNidG1jX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWYsCisJCQkgICBzaXplX3QgY291bnQsIGxvZmZfdCAqZl9wb3MpCit7CisJc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJdW5zaWduZWQgbG9uZyBpbnQgbl9jaGFyYWN0ZXJzOworCXU4ICpidWZmZXI7CisJaW50IGFjdHVhbDsKKwlpbnQgZG9uZTsKKwlpbnQgcmVtYWluaW5nOworCWludCByZXR2YWw7CisJaW50IHRoaXNfcGFydDsKKworCS8qIEdldCBwb2ludGVyIHRvIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi8KKwlkYXRhID0gZmlscC0+cHJpdmF0ZV9kYXRhOworCWRldiA9ICZkYXRhLT5pbnRmLT5kZXY7CisKKwlidWZmZXIgPSBrbWFsbG9jKFVTQlRNQ19TSVpFX0lPQlVGRkVSLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltdXRleF9sb2NrKCZkYXRhLT5pb19tdXRleCk7CisKKwlyZW1haW5pbmcgPSBjb3VudDsKKwlkb25lID0gMDsKKworCXdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisJCWlmIChyZW1haW5pbmcgPiBVU0JUTUNfU0laRV9JT0JVRkZFUiAtIDEyIC0gMykKKwkJCXRoaXNfcGFydCA9IFVTQlRNQ19TSVpFX0lPQlVGRkVSIC0gMTIgLSAzOworCQllbHNlCisJCQl0aGlzX3BhcnQgPSByZW1haW5pbmc7CisKKwkJLyogU2V0dXAgSU8gYnVmZmVyIGZvciBERVZfREVQX01TR19JTiBtZXNzYWdlCisJCSAqIFJlZmVyIHRvIGNsYXNzIHNwZWNzIGZvciBkZXRhaWxzCisJCSAqLworCQlidWZmZXJbMF0gPSAyOworCQlidWZmZXJbMV0gPSBkYXRhLT5iVGFnOworCQlidWZmZXJbMl0gPSB+KGRhdGEtPmJUYWcpOworCQlidWZmZXJbM10gPSAwOyAvKiBSZXNlcnZlZCAqLworCQlidWZmZXJbNF0gPSAodGhpc19wYXJ0IC0gMTIgLSAzKSAmIDI1NTsKKwkJYnVmZmVyWzVdID0gKCh0aGlzX3BhcnQgLSAxMiAtIDMpID4+IDgpICYgMjU1OworCQlidWZmZXJbNl0gPSAoKHRoaXNfcGFydCAtIDEyIC0gMykgPj4gMTYpICYgMjU1OworCQlidWZmZXJbN10gPSAoKHRoaXNfcGFydCAtIDEyIC0gMykgPj4gMjQpICYgMjU1OworCQlidWZmZXJbOF0gPSBkYXRhLT5UZXJtQ2hhckVuYWJsZWQgKiAyOworCQkvKiBVc2UgdGVybSBjaGFyYWN0ZXI/ICovCisJCWJ1ZmZlcls5XSA9IGRhdGEtPlRlcm1DaGFyOworCQlidWZmZXJbMTBdID0gMDsgLyogUmVzZXJ2ZWQgKi8KKwkJYnVmZmVyWzExXSA9IDA7IC8qIFJlc2VydmVkICovCisKKwkJLyogU2VuZCBidWxrIFVSQiAqLworCQlyZXR2YWwgPSB1c2JfYnVsa19tc2coZGF0YS0+dXNiX2RldiwKKwkJCQkgICAgICB1c2Jfc25kYnVsa3BpcGUoZGF0YS0+dXNiX2RldiwKKwkJCQkJCSAgICAgIGRhdGEtPmJ1bGtfb3V0KSwKKwkJCQkgICAgICBidWZmZXIsIDEyLCAmYWN0dWFsLCBVU0JUTUNfVElNRU9VVCk7CisKKwkJLyogU3RvcmUgYlRhZyAoaW4gY2FzZSB3ZSBuZWVkIHRvIGFib3J0KSAqLworCQlkYXRhLT5iVGFnX2xhc3Rfd3JpdGUgPSBkYXRhLT5iVGFnOworCisJCS8qIEluY3JlbWVudCBiVGFnIC0tIGFuZCBpbmNyZW1lbnQgYWdhaW4gaWYgemVybyAqLworCQlkYXRhLT5iVGFnKys7CisJCWlmICghZGF0YS0+YlRhZykKKwkJCShkYXRhLT5iVGFnKSsrOworCisJCWlmIChyZXR2YWwgPCAwKSB7CisJCQlkZXZfZXJyKGRldiwgInVzYl9idWxrX21zZyByZXR1cm5lZCAlZFxuIiwgcmV0dmFsKTsKKwkJCWlmIChkYXRhLT5hdXRvX2Fib3J0KQorCQkJCXVzYnRtY19pb2N0bF9hYm9ydF9idWxrX291dChkYXRhKTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCS8qIFNlbmQgYnVsayBVUkIgKi8KKwkJcmV0dmFsID0gdXNiX2J1bGtfbXNnKGRhdGEtPnVzYl9kZXYsCisJCQkJICAgICAgdXNiX3JjdmJ1bGtwaXBlKGRhdGEtPnVzYl9kZXYsCisJCQkJCQkgICAgICBkYXRhLT5idWxrX2luKSwKKwkJCQkgICAgICBidWZmZXIsIFVTQlRNQ19TSVpFX0lPQlVGRkVSLCAmYWN0dWFsLAorCQkJCSAgICAgIFVTQlRNQ19USU1FT1VUKTsKKworCQkvKiBTdG9yZSBiVGFnIChpbiBjYXNlIHdlIG5lZWQgdG8gYWJvcnQpICovCisJCWRhdGEtPmJUYWdfbGFzdF9yZWFkID0gZGF0YS0+YlRhZzsKKworCQlpZiAocmV0dmFsIDwgMCkgeworCQkJZGV2X2VycihkZXYsICJVbmFibGUgdG8gcmVhZCBkYXRhLCBlcnJvciAlZFxuIiwgcmV0dmFsKTsKKwkJCWlmIChkYXRhLT5hdXRvX2Fib3J0KQorCQkJCXVzYnRtY19pb2N0bF9hYm9ydF9idWxrX2luKGRhdGEpOworCQkJZ290byBleGl0OworCQl9CisKKwkJLyogSG93IG1hbnkgY2hhcmFjdGVycyBkaWQgdGhlIGluc3RydW1lbnQgc2VuZD8gKi8KKwkJbl9jaGFyYWN0ZXJzID0gYnVmZmVyWzRdICsKKwkJCSAgICAgICAoYnVmZmVyWzVdIDw8IDgpICsKKwkJCSAgICAgICAoYnVmZmVyWzZdIDw8IDE2KSArCisJCQkgICAgICAgKGJ1ZmZlcls3XSA8PCAyNCk7CisKKwkJLyogQ29weSBidWZmZXIgdG8gdXNlciBzcGFjZSAqLworCQlpZiAoY29weV90b191c2VyKGJ1ZiArIGRvbmUsICZidWZmZXJbMTJdLCBuX2NoYXJhY3RlcnMpKSB7CisJCQkvKiBUaGVyZSBtdXN0IGhhdmUgYmVlbiBhbiBhZGRyZXNzaW5nIHByb2JsZW0gKi8KKwkJCXJldHZhbCA9IC1FRkFVTFQ7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQlkb25lICs9IG5fY2hhcmFjdGVyczsKKwkJaWYgKG5fY2hhcmFjdGVycyA8IFVTQlRNQ19TSVpFX0lPQlVGRkVSKQorCQkJcmVtYWluaW5nID0gMDsKKwl9CisKKwkvKiBVcGRhdGUgZmlsZSBwb3NpdGlvbiB2YWx1ZSAqLworCSpmX3BvcyA9ICpmX3BvcyArIGRvbmU7CisJcmV0dmFsID0gZG9uZTsKKworZXhpdDoKKwltdXRleF91bmxvY2soJmRhdGEtPmlvX211dGV4KTsKKwlrZnJlZShidWZmZXIpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHVzYnRtY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKKwkJCSAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqZl9wb3MpCit7CisJc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YTsKKwl1OCAqYnVmZmVyOworCWludCByZXR2YWw7CisJaW50IGFjdHVhbDsKKwl1bnNpZ25lZCBsb25nIGludCBuX2J5dGVzOworCWludCBuOworCWludCByZW1haW5pbmc7CisJaW50IGRvbmU7CisJaW50IHRoaXNfcGFydDsKKworCWRhdGEgPSBmaWxwLT5wcml2YXRlX2RhdGE7CisKKwlidWZmZXIgPSBrbWFsbG9jKFVTQlRNQ19TSVpFX0lPQlVGRkVSLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltdXRleF9sb2NrKCZkYXRhLT5pb19tdXRleCk7CisKKwlyZW1haW5pbmcgPSBjb3VudDsKKwlkb25lID0gMDsKKworCXdoaWxlIChyZW1haW5pbmcgPiAwKSB7CisJCWlmIChyZW1haW5pbmcgPiBVU0JUTUNfU0laRV9JT0JVRkZFUiAtIDEyKSB7CisJCQl0aGlzX3BhcnQgPSBVU0JUTUNfU0laRV9JT0JVRkZFUiAtIDEyOworCQkJYnVmZmVyWzhdID0gMDsKKwkJfSBlbHNlIHsKKwkJCXRoaXNfcGFydCA9IHJlbWFpbmluZzsKKwkJCWJ1ZmZlcls4XSA9IDE7CisJCX0KKworCQkvKiBTZXR1cCBJTyBidWZmZXIgZm9yIERFVl9ERVBfTVNHX09VVCBtZXNzYWdlICovCisJCWJ1ZmZlclswXSA9IDE7CisJCWJ1ZmZlclsxXSA9IGRhdGEtPmJUYWc7CisJCWJ1ZmZlclsyXSA9IH4oZGF0YS0+YlRhZyk7CisJCWJ1ZmZlclszXSA9IDA7IC8qIFJlc2VydmVkICovCisJCWJ1ZmZlcls0XSA9IHRoaXNfcGFydCAmIDI1NTsKKwkJYnVmZmVyWzVdID0gKHRoaXNfcGFydCA+PiA4KSAmIDI1NTsKKwkJYnVmZmVyWzZdID0gKHRoaXNfcGFydCA+PiAxNikgJiAyNTU7CisJCWJ1ZmZlcls3XSA9ICh0aGlzX3BhcnQgPj4gMjQpICYgMjU1OworCQkvKiBidWZmZXJbOF0gaXMgc2V0IGFib3ZlLi4uICovCisJCWJ1ZmZlcls5XSA9IDA7IC8qIFJlc2VydmVkICovCisJCWJ1ZmZlclsxMF0gPSAwOyAvKiBSZXNlcnZlZCAqLworCQlidWZmZXJbMTFdID0gMDsgLyogUmVzZXJ2ZWQgKi8KKworCQlpZiAoY29weV9mcm9tX3VzZXIoJmJ1ZmZlclsxMl0sIGJ1ZiArIGRvbmUsIHRoaXNfcGFydCkpIHsKKwkJCXJldHZhbCA9IC1FRkFVTFQ7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQluX2J5dGVzID0gMTIgKyB0aGlzX3BhcnQ7CisJCWlmICh0aGlzX3BhcnQgJSA0KQorCQkJbl9ieXRlcyArPSA0IC0gdGhpc19wYXJ0ICUgNDsKKwkJCWZvciAobiA9IDEyICsgdGhpc19wYXJ0OyBuIDwgbl9ieXRlczsgbisrKQorCQkJCWJ1ZmZlcltuXSA9IDA7CisKKwkJcmV0dmFsID0gdXNiX2J1bGtfbXNnKGRhdGEtPnVzYl9kZXYsCisJCQkJICAgICAgdXNiX3NuZGJ1bGtwaXBlKGRhdGEtPnVzYl9kZXYsCisJCQkJCQkgICAgICBkYXRhLT5idWxrX291dCksCisJCQkJICAgICAgYnVmZmVyLCBuX2J5dGVzLCAmYWN0dWFsLCBVU0JUTUNfVElNRU9VVCk7CisKKwkJZGF0YS0+YlRhZ19sYXN0X3dyaXRlID0gZGF0YS0+YlRhZzsKKwkJZGF0YS0+YlRhZysrOworCisJCWlmICghZGF0YS0+YlRhZykKKwkJCWRhdGEtPmJUYWcrKzsKKworCQlpZiAocmV0dmFsIDwgMCkgeworCQkJZGV2X2VycigmZGF0YS0+aW50Zi0+ZGV2LAorCQkJCSJVbmFibGUgdG8gc2VuZCBkYXRhLCBlcnJvciAlZFxuIiwgcmV0dmFsKTsKKwkJCWlmIChkYXRhLT5hdXRvX2Fib3J0KQorCQkJCXVzYnRtY19pb2N0bF9hYm9ydF9idWxrX291dChkYXRhKTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCXJlbWFpbmluZyAtPSB0aGlzX3BhcnQ7CisJCWRvbmUgKz0gdGhpc19wYXJ0OworCX0KKworCXJldHZhbCA9IGNvdW50OworZXhpdDoKKwltdXRleF91bmxvY2soJmRhdGEtPmlvX211dGV4KTsKKwlrZnJlZShidWZmZXIpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgdXNidG1jX2lvY3RsX2NsZWFyKHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqY3VycmVudF9zZXR0aW5nOworCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVzYzsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJdTggKmJ1ZmZlcjsKKwlpbnQgcnY7CisJaW50IG47CisJaW50IGFjdHVhbDsKKwlpbnQgbWF4X3NpemU7CisKKwlkZXYgPSAmZGF0YS0+aW50Zi0+ZGV2OworCisJZGV2X2RiZyhkZXYsICJTZW5kaW5nIElOSVRJQVRFX0NMRUFSIHJlcXVlc3RcbiIpOworCisJYnVmZmVyID0ga21hbGxvYyhVU0JUTUNfU0laRV9JT0JVRkZFUiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3JjdmN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JUTUNfUkVRVUVTVF9JTklUSUFURV9DTEVBUiwKKwkJCSAgICAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKKwkJCSAgICAgMCwgMCwgYnVmZmVyLCAxLCBVU0JUTUNfVElNRU9VVCk7CisJaWYgKHJ2IDwgMCkgeworCQlkZXZfZXJyKGRldiwgInVzYl9jb250cm9sX21zZyByZXR1cm5lZCAlZFxuIiwgcnYpOworCQlnb3RvIGV4aXQ7CisJfQorCisJZGV2X2RiZyhkZXYsICJJTklUSUFURV9DTEVBUiByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKworCWlmIChidWZmZXJbMF0gIT0gVVNCVE1DX1NUQVRVU19TVUNDRVNTKSB7CisJCWRldl9lcnIoZGV2LCAiSU5JVElBVEVfQ0xFQVIgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisJCXJ2ID0gLUVQRVJNOworCQlnb3RvIGV4aXQ7CisJfQorCisJbWF4X3NpemUgPSAwOworCWN1cnJlbnRfc2V0dGluZyA9IGRhdGEtPmludGYtPmN1cl9hbHRzZXR0aW5nOworCWZvciAobiA9IDA7IG4gPCBjdXJyZW50X3NldHRpbmctPmRlc2MuYk51bUVuZHBvaW50czsgbisrKSB7CisJCWRlc2MgPSAmY3VycmVudF9zZXR0aW5nLT5lbmRwb2ludFtuXS5kZXNjOworCQlpZiAoZGVzYy0+YkVuZHBvaW50QWRkcmVzcyA9PSBkYXRhLT5idWxrX2luKQorCQkJbWF4X3NpemUgPSBsZTE2X3RvX2NwdShkZXNjLT53TWF4UGFja2V0U2l6ZSk7CisJfQorCisJaWYgKG1heF9zaXplID09IDApIHsKKwkJZGV2X2VycihkZXYsICJDb3VsZG4ndCBnZXQgd01heFBhY2tldFNpemVcbiIpOworCQlydiA9IC1FUEVSTTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAid01heFBhY2tldFNpemUgaXMgJWRcbiIsIG1heF9zaXplKTsKKworCW4gPSAwOworCit1c2J0bWNfY2xlYXJfY2hlY2tfc3RhdHVzOgorCisJZGV2X2RiZyhkZXYsICJTZW5kaW5nIENIRUNLX0NMRUFSX1NUQVRVUyByZXF1ZXN0XG4iKTsKKworCXJ2ID0gdXNiX2NvbnRyb2xfbXNnKGRhdGEtPnVzYl9kZXYsCisJCQkgICAgIHVzYl9yY3ZjdHJscGlwZShkYXRhLT51c2JfZGV2LCAwKSwKKwkJCSAgICAgVVNCVE1DX1JFUVVFU1RfQ0hFQ0tfQ0xFQVJfU1RBVFVTLAorCQkJICAgICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLAorCQkJICAgICAwLCAwLCBidWZmZXIsIDIsIFVTQlRNQ19USU1FT1VUKTsKKwlpZiAocnYgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAidXNiX2NvbnRyb2xfbXNnIHJldHVybmVkICVkXG4iLCBydik7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlkZXZfZGJnKGRldiwgIkNIRUNLX0NMRUFSX1NUQVRVUyByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKworCWlmIChidWZmZXJbMF0gPT0gVVNCVE1DX1NUQVRVU19TVUNDRVNTKQorCQlnb3RvIHVzYnRtY19jbGVhcl9idWxrX291dF9oYWx0OworCisJaWYgKGJ1ZmZlclswXSAhPSBVU0JUTUNfU1RBVFVTX1BFTkRJTkcpIHsKKwkJZGV2X2VycihkZXYsICJDSEVDS19DTEVBUl9TVEFUVVMgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisJCXJ2ID0gLUVQRVJNOworCQlnb3RvIGV4aXQ7CisJfQorCisJaWYgKGJ1ZmZlclsxXSA9PSAxKQorCQlkbyB7CisJCQlkZXZfZGJnKGRldiwgIlJlYWRpbmcgZnJvbSBidWxrIGluIEVQXG4iKTsKKworCQkJcnYgPSB1c2JfYnVsa19tc2coZGF0YS0+dXNiX2RldiwKKwkJCQkJICB1c2JfcmN2YnVsa3BpcGUoZGF0YS0+dXNiX2RldiwKKwkJCQkJCQkgIGRhdGEtPmJ1bGtfaW4pLAorCQkJCQkgIGJ1ZmZlciwgVVNCVE1DX1NJWkVfSU9CVUZGRVIsCisJCQkJCSAgJmFjdHVhbCwgVVNCVE1DX1RJTUVPVVQpOworCQkJbisrOworCisJCQlpZiAocnYgPCAwKSB7CisJCQkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsCisJCQkJCXJ2KTsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCX0gd2hpbGUgKChhY3R1YWwgPT0gbWF4X3NpemUpICYmCisJCQkgIChuIDwgVVNCVE1DX01BWF9SRUFEU19UT19DTEVBUl9CVUxLX0lOKSk7CisKKwlpZiAoYWN0dWFsID09IG1heF9zaXplKSB7CisJCWRldl9lcnIoZGV2LCAiQ291bGRuJ3QgY2xlYXIgZGV2aWNlIGJ1ZmZlciB3aXRoaW4gJWQgY3ljbGVzXG4iLAorCQkJVVNCVE1DX01BWF9SRUFEU19UT19DTEVBUl9CVUxLX0lOKTsKKwkJcnYgPSAtRVBFUk07CisJCWdvdG8gZXhpdDsKKwl9CisKKwlnb3RvIHVzYnRtY19jbGVhcl9jaGVja19zdGF0dXM7CisKK3VzYnRtY19jbGVhcl9idWxrX291dF9oYWx0OgorCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3NuZGN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JfUkVRX0NMRUFSX0ZFQVRVUkUsCisJCQkgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfAorCQkJICAgICBVU0JfUkVDSVBfRU5EUE9JTlQsCisJCQkgICAgIFVTQl9FTkRQT0lOVF9IQUxULAorCQkJICAgICBkYXRhLT5idWxrX291dCwgYnVmZmVyLCAwLAorCQkJICAgICBVU0JUTUNfVElNRU9VVCk7CisJaWYgKHJ2IDwgMCkgeworCQlkZXZfZXJyKGRldiwgInVzYl9jb250cm9sX21zZyByZXR1cm5lZCAlZFxuIiwgcnYpOworCQlnb3RvIGV4aXQ7CisJfQorCXJ2ID0gMDsKKworZXhpdDoKKwlrZnJlZShidWZmZXIpOworCXJldHVybiBydjsKK30KKworc3RhdGljIGludCB1c2J0bWNfaW9jdGxfY2xlYXJfb3V0X2hhbHQoc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSkKK3sKKwl1OCAqYnVmZmVyOworCWludCBydjsKKworCWJ1ZmZlciA9IGttYWxsb2MoMiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwKKwkJCSAgICAgdXNiX3NuZGN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JfUkVRX0NMRUFSX0ZFQVRVUkUsCisJCQkgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfAorCQkJICAgICBVU0JfUkVDSVBfRU5EUE9JTlQsCisJCQkgICAgIFVTQl9FTkRQT0lOVF9IQUxULCBkYXRhLT5idWxrX291dCwKKwkJCSAgICAgYnVmZmVyLCAwLCBVU0JUTUNfVElNRU9VVCk7CisKKwlpZiAocnYgPCAwKSB7CisJCWRldl9lcnIoJmRhdGEtPnVzYl9kZXYtPmRldiwgInVzYl9jb250cm9sX21zZyByZXR1cm5lZCAlZFxuIiwKKwkJCXJ2KTsKKwkJZ290byBleGl0OworCX0KKwlydiA9IDA7CisKK2V4aXQ6CisJa2ZyZWUoYnVmZmVyKTsKKwlyZXR1cm4gcnY7Cit9CisKK3N0YXRpYyBpbnQgdXNidG1jX2lvY3RsX2NsZWFyX2luX2hhbHQoc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSkKK3sKKwl1OCAqYnVmZmVyOworCWludCBydjsKKworCWJ1ZmZlciA9IGttYWxsb2MoMiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcnYgPSB1c2JfY29udHJvbF9tc2coZGF0YS0+dXNiX2RldiwgdXNiX3NuZGN0cmxwaXBlKGRhdGEtPnVzYl9kZXYsIDApLAorCQkJICAgICBVU0JfUkVRX0NMRUFSX0ZFQVRVUkUsCisJCQkgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfAorCQkJICAgICBVU0JfUkVDSVBfRU5EUE9JTlQsCisJCQkgICAgIFVTQl9FTkRQT0lOVF9IQUxULCBkYXRhLT5idWxrX2luLCBidWZmZXIsIDAsCisJCQkgICAgIFVTQlRNQ19USU1FT1VUKTsKKworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycigmZGF0YS0+dXNiX2Rldi0+ZGV2LCAidXNiX2NvbnRyb2xfbXNnIHJldHVybmVkICVkXG4iLAorCQkJcnYpOworCQlnb3RvIGV4aXQ7CisJfQorCXJ2ID0gMDsKKworZXhpdDoKKwlrZnJlZShidWZmZXIpOworCXJldHVybiBydjsKK30KKworc3RhdGljIGludCBnZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmRhdGEtPnVzYl9kZXYtPmRldjsKKwljaGFyICpidWZmZXI7CisJaW50IHJ2OworCisJYnVmZmVyID0ga21hbGxvYygweDE4LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlydiA9IHVzYl9jb250cm9sX21zZyhkYXRhLT51c2JfZGV2LCB1c2JfcmN2Y3RybHBpcGUoZGF0YS0+dXNiX2RldiwgMCksCisJCQkgICAgIFVTQlRNQ19SRVFVRVNUX0dFVF9DQVBBQklMSVRJRVMsCisJCQkgICAgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCQkgICAgIDAsIDAsIGJ1ZmZlciwgMHgxOCwgVVNCVE1DX1RJTUVPVVQpOworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJcmV0dXJuIHJ2OworCX0KKworCWRldl9kYmcoZGV2LCAiR0VUX0NBUEFCSUxJVElFUyByZXR1cm5lZCAleFxuIiwgYnVmZmVyWzBdKTsKKwlkZXZfZGJnKGRldiwgIkludGVyZmFjZSBjYXBhYmlsaXRpZXMgYXJlICV4XG4iLCBidWZmZXJbNF0pOworCWRldl9kYmcoZGV2LCAiRGV2aWNlIGNhcGFiaWxpdGllcyBhcmUgJXhcbiIsIGJ1ZmZlcls1XSk7CisJZGV2X2RiZyhkZXYsICJVU0I0ODggaW50ZXJmYWNlIGNhcGFiaWxpdGllcyBhcmUgJXhcbiIsIGJ1ZmZlclsxNF0pOworCWRldl9kYmcoZGV2LCAiVVNCNDg4IGRldmljZSBjYXBhYmlsaXRpZXMgYXJlICV4XG4iLCBidWZmZXJbMTVdKTsKKwlpZiAoYnVmZmVyWzBdICE9IFVTQlRNQ19TVEFUVVNfU1VDQ0VTUykgeworCQlkZXZfZXJyKGRldiwgIkdFVF9DQVBBQklMSVRJRVMgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisJCXJldHVybiAtRVBFUk07CisJfQorCisJZGF0YS0+Y2FwYWJpbGl0aWVzLmludGVyZmFjZV9jYXBhYmlsaXRpZXMgPSBidWZmZXJbNF07CisJZGF0YS0+Y2FwYWJpbGl0aWVzLmRldmljZV9jYXBhYmlsaXRpZXMgPSBidWZmZXJbNV07CisJZGF0YS0+Y2FwYWJpbGl0aWVzLnVzYjQ4OF9pbnRlcmZhY2VfY2FwYWJpbGl0aWVzID0gYnVmZmVyWzE0XTsKKwlkYXRhLT5jYXBhYmlsaXRpZXMudXNiNDg4X2RldmljZV9jYXBhYmlsaXRpZXMgPSBidWZmZXJbMTVdOworCisJa2ZyZWUoYnVmZmVyKTsKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBjYXBhYmlsaXR5X2F0dHJpYnV0ZShuYW1lKQkJCQkJXAorc3RhdGljIHNzaXplX3Qgc2hvd18jI25hbWUoc3RydWN0IGRldmljZSAqZGV2LAkJCQlcCisJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQlcCit7CQkJCQkJCQkJXAorCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwkJXAorCXN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwlcCisJCQkJCQkJCQlcCisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGRhdGEtPmNhcGFiaWxpdGllcy5uYW1lKTsJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgREVWSUNFX0FUVFIobmFtZSwgU19JUlVHTywgc2hvd18jI25hbWUsIE5VTEwpCisKK2NhcGFiaWxpdHlfYXR0cmlidXRlKGludGVyZmFjZV9jYXBhYmlsaXRpZXMpOworY2FwYWJpbGl0eV9hdHRyaWJ1dGUoZGV2aWNlX2NhcGFiaWxpdGllcyk7CitjYXBhYmlsaXR5X2F0dHJpYnV0ZSh1c2I0ODhfaW50ZXJmYWNlX2NhcGFiaWxpdGllcyk7CitjYXBhYmlsaXR5X2F0dHJpYnV0ZSh1c2I0ODhfZGV2aWNlX2NhcGFiaWxpdGllcyk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjYXBhYmlsaXR5X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX2ludGVyZmFjZV9jYXBhYmlsaXRpZXMuYXR0ciwKKwkmZGV2X2F0dHJfZGV2aWNlX2NhcGFiaWxpdGllcy5hdHRyLAorCSZkZXZfYXR0cl91c2I0ODhfaW50ZXJmYWNlX2NhcGFiaWxpdGllcy5hdHRyLAorCSZkZXZfYXR0cl91c2I0ODhfZGV2aWNlX2NhcGFiaWxpdGllcy5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjYXBhYmlsaXR5X2F0dHJfZ3JwID0geworCS5hdHRycyA9IGNhcGFiaWxpdHlfYXR0cnMsCit9OworCitzdGF0aWMgc3NpemVfdCBzaG93X1Rlcm1DaGFyKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVjXG4iLCBkYXRhLT5UZXJtQ2hhcik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX1Rlcm1DaGFyKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CisJc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CisKKwlpZiAoY291bnQgPCAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlkYXRhLT5UZXJtQ2hhciA9IGJ1ZlswXTsKKwlyZXR1cm4gY291bnQ7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIoVGVybUNoYXIsIFNfSVJVR08sIHNob3dfVGVybUNoYXIsIHN0b3JlX1Rlcm1DaGFyKTsKKworI2RlZmluZSBkYXRhX2F0dHJpYnV0ZShuYW1lKQkJCQkJCVwKK3N0YXRpYyBzc2l6ZV90IHNob3dfIyNuYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwJCQkJXAorCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikJXAorewkJCQkJCQkJCVwKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsJCVwKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJXAorCQkJCQkJCQkJXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBkYXRhLT5uYW1lKTsJCQlcCit9CQkJCQkJCQkJXAorc3RhdGljIHNzaXplX3Qgc3RvcmVfIyNuYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwJCQkJXAorCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAkJXAorCQkJICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQkJXAorewkJCQkJCQkJCVwKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsJCVwKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJXAorCXNzaXplX3QgcmVzdWx0OwkJCQkJCQlcCisJdW5zaWduZWQgdmFsOwkJCQkJCQlcCisJCQkJCQkJCQlcCisJcmVzdWx0ID0gc3NjYW5mKGJ1ZiwgIiV1XG4iLCAmdmFsKTsJCQkJXAorCWlmIChyZXN1bHQgIT0gMSkJCQkJCQlcCisJCXJlc3VsdCA9IC1FSU5WQUw7CQkJCQlcCisJZGF0YS0+bmFtZSA9IHZhbDsJCQkJCQlcCisJaWYgKHJlc3VsdCA8IDApCQkJCQkJCVwKKwkJcmV0dXJuIHJlc3VsdDsJCQkJCQlcCisJZWxzZQkJCQkJCQkJXAorCQlyZXR1cm4gY291bnQ7CQkJCQkJXAorfQkJCQkJCQkJCVwKK3N0YXRpYyBERVZJQ0VfQVRUUihuYW1lLCBTX0lSVUdPLCBzaG93XyMjbmFtZSwgc3RvcmVfIyNuYW1lKQorCitkYXRhX2F0dHJpYnV0ZShUZXJtQ2hhckVuYWJsZWQpOworZGF0YV9hdHRyaWJ1dGUoYXV0b19hYm9ydCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYXRhX2F0dHJzW10gPSB7CisJJmRldl9hdHRyX1Rlcm1DaGFyLmF0dHIsCisJJmRldl9hdHRyX1Rlcm1DaGFyRW5hYmxlZC5hdHRyLAorCSZkZXZfYXR0cl9hdXRvX2Fib3J0LmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRhdGFfYXR0cl9ncnAgPSB7CisJLmF0dHJzID0gZGF0YV9hdHRycywKK307CisKK3N0YXRpYyBpbnQgdXNidG1jX2lvY3RsX2luZGljYXRvcl9wdWxzZShzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhKQoreworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwl1OCAqYnVmZmVyOworCWludCBydjsKKworCWRldiA9ICZkYXRhLT5pbnRmLT5kZXY7CisKKwlidWZmZXIgPSBrbWFsbG9jKDIsIEdGUF9LRVJORUwpOworCWlmICghYnVmZmVyKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJ2ID0gdXNiX2NvbnRyb2xfbXNnKGRhdGEtPnVzYl9kZXYsCisJCQkgICAgIHVzYl9yY3ZjdHJscGlwZShkYXRhLT51c2JfZGV2LCAwKSwKKwkJCSAgICAgVVNCVE1DX1JFUVVFU1RfSU5ESUNBVE9SX1BVTFNFLAorCQkJICAgICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLAorCQkJICAgICAwLCAwLCBidWZmZXIsIDB4MDEsIFVTQlRNQ19USU1FT1VUKTsKKworCWlmIChydiA8IDApIHsKKwkJZGV2X2VycihkZXYsICJ1c2JfY29udHJvbF9tc2cgcmV0dXJuZWQgJWRcbiIsIHJ2KTsKKwkJZ290byBleGl0OworCX0KKworCWRldl9kYmcoZGV2LCAiSU5ESUNBVE9SX1BVTFNFIHJldHVybmVkICV4XG4iLCBidWZmZXJbMF0pOworCisJaWYgKGJ1ZmZlclswXSAhPSBVU0JUTUNfU1RBVFVTX1NVQ0NFU1MpIHsKKwkJZGV2X2VycihkZXYsICJJTkRJQ0FUT1JfUFVMU0UgcmV0dXJuZWQgJXhcbiIsIGJ1ZmZlclswXSk7CisJCXJ2ID0gLUVQRVJNOworCQlnb3RvIGV4aXQ7CisJfQorCXJ2ID0gMDsKKworZXhpdDoKKwlrZnJlZShidWZmZXIpOworCXJldHVybiBydjsKK30KKworc3RhdGljIGxvbmcgdXNidG1jX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhICpkYXRhOworCWludCByZXR2YWwgPSAtRUJBRFJRQzsKKworCWRhdGEgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJbXV0ZXhfbG9jaygmZGF0YS0+aW9fbXV0ZXgpOworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFVTQlRNQ19JT0NUTF9DTEVBUl9PVVRfSEFMVDoKKwkJcmV0dmFsID0gdXNidG1jX2lvY3RsX2NsZWFyX291dF9oYWx0KGRhdGEpOworCisJY2FzZSBVU0JUTUNfSU9DVExfQ0xFQVJfSU5fSEFMVDoKKwkJcmV0dmFsID0gdXNidG1jX2lvY3RsX2NsZWFyX2luX2hhbHQoZGF0YSk7CisKKwljYXNlIFVTQlRNQ19JT0NUTF9JTkRJQ0FUT1JfUFVMU0U6CisJCXJldHZhbCA9IHVzYnRtY19pb2N0bF9pbmRpY2F0b3JfcHVsc2UoZGF0YSk7CisKKwljYXNlIFVTQlRNQ19JT0NUTF9DTEVBUjoKKwkJcmV0dmFsID0gdXNidG1jX2lvY3RsX2NsZWFyKGRhdGEpOworCisJY2FzZSBVU0JUTUNfSU9DVExfQUJPUlRfQlVMS19PVVQ6CisJCXJldHZhbCA9IHVzYnRtY19pb2N0bF9hYm9ydF9idWxrX291dChkYXRhKTsKKworCWNhc2UgVVNCVE1DX0lPQ1RMX0FCT1JUX0JVTEtfSU46CisJCXJldHZhbCA9IHVzYnRtY19pb2N0bF9hYm9ydF9idWxrX2luKGRhdGEpOworCX0KKworCW11dGV4X3VubG9jaygmZGF0YS0+aW9fbXV0ZXgpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5yZWFkCQk9IHVzYnRtY19yZWFkLAorCS53cml0ZQkJPSB1c2J0bWNfd3JpdGUsCisJLm9wZW4JCT0gdXNidG1jX29wZW4sCisJLnJlbGVhc2UJPSB1c2J0bWNfcmVsZWFzZSwKKwkudW5sb2NrZWRfaW9jdGwJPSB1c2J0bWNfaW9jdGwsCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9jbGFzc19kcml2ZXIgdXNidG1jX2NsYXNzID0geworCS5uYW1lID0JCSJ1c2J0bWMlZCIsCisJLmZvcHMgPQkJJmZvcHMsCisJLm1pbm9yX2Jhc2UgPQlVU0JUTUNfTUlOT1JfQkFTRSwKK307CisKKworc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCisJCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjOworCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7CisJaW50IG47CisJaW50IHJldGNvZGU7CisKKwlkZXZfZGJnKCZpbnRmLT5kZXYsICIlcyBjYWxsZWRcbiIsIF9fZnVuY19fKTsKKworCWRhdGEgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYXRhKSB7CisJCWRldl9lcnIoJmludGYtPmRldiwgIlVuYWJsZSB0byBhbGxvY2F0ZSBrZXJuZWwgbWVtb3J5XG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZGF0YS0+aW50ZiA9IGludGY7CisJZGF0YS0+aWQgPSBpZDsKKwlkYXRhLT51c2JfZGV2ID0gdXNiX2dldF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKSk7CisJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBkYXRhKTsKKwlrcmVmX2luaXQoJmRhdGEtPmtyZWYpOworCW11dGV4X2luaXQoJmRhdGEtPmlvX211dGV4KTsKKworCS8qIEluaXRpYWxpemUgVVNCVE1DIGJUYWcgYW5kIG90aGVyIGZpZWxkcyAqLworCWRhdGEtPmJUYWcJPSAxOworCWRhdGEtPlRlcm1DaGFyRW5hYmxlZCA9IDA7CisJZGF0YS0+VGVybUNoYXIgPSAnXG4nOworCisJLyogVVNCVE1DIGRldmljZXMgaGF2ZSBvbmx5IG9uZSBzZXR0aW5nLCBzbyB1c2UgdGhhdCAqLworCWlmYWNlX2Rlc2MgPSBkYXRhLT5pbnRmLT5jdXJfYWx0c2V0dGluZzsKKworCS8qIEZpbmQgYnVsayBpbiBlbmRwb2ludCAqLworCWZvciAobiA9IDA7IG4gPCBpZmFjZV9kZXNjLT5kZXNjLmJOdW1FbmRwb2ludHM7IG4rKykgeworCQllbmRwb2ludCA9ICZpZmFjZV9kZXNjLT5lbmRwb2ludFtuXS5kZXNjOworCisJCWlmICh1c2JfZW5kcG9pbnRfaXNfYnVsa19pbihlbmRwb2ludCkpIHsKKwkJCWRhdGEtPmJ1bGtfaW4gPSBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzczsKKwkJCWRldl9kYmcoJmludGYtPmRldiwgIkZvdW5kIGJ1bGsgaW4gZW5kcG9pbnQgYXQgJXVcbiIsCisJCQkJZGF0YS0+YnVsa19pbik7CisJCQlicmVhazsKKwkJfQorCX0KKworCS8qIEZpbmQgYnVsayBvdXQgZW5kcG9pbnQgKi8KKwlmb3IgKG4gPSAwOyBuIDwgaWZhY2VfZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzOyBuKyspIHsKKwkJZW5kcG9pbnQgPSAmaWZhY2VfZGVzYy0+ZW5kcG9pbnRbbl0uZGVzYzsKKworCQlpZiAodXNiX2VuZHBvaW50X2lzX2J1bGtfb3V0KGVuZHBvaW50KSkgeworCQkJZGF0YS0+YnVsa19vdXQgPSBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzczsKKwkJCWRldl9kYmcoJmludGYtPmRldiwgIkZvdW5kIEJ1bGsgb3V0IGVuZHBvaW50IGF0ICV1XG4iLAorCQkJCWRhdGEtPmJ1bGtfb3V0KTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0Y29kZSA9IGdldF9jYXBhYmlsaXRpZXMoZGF0YSk7CisJaWYgKHJldGNvZGUpCisJCWRldl9lcnIoJmludGYtPmRldiwgImNhbid0IHJlYWQgY2FwYWJpbGl0aWVzXG4iKTsKKwllbHNlCisJCXJldGNvZGUgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJmludGYtPmRldi5rb2JqLAorCQkJCQkgICAgICZjYXBhYmlsaXR5X2F0dHJfZ3JwKTsKKworCXJldGNvZGUgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJmludGYtPmRldi5rb2JqLCAmZGF0YV9hdHRyX2dycCk7CisKKwlyZXRjb2RlID0gdXNiX3JlZ2lzdGVyX2RldihpbnRmLCAmdXNidG1jX2NsYXNzKTsKKwlpZiAocmV0Y29kZSkgeworCQlkZXZfZXJyKCZpbnRmLT5kZXYsICJOb3QgYWJsZSB0byBnZXQgYSBtaW5vciIKKwkJCSIgKGJhc2UgJXUsIHNsaWNlIGRlZmF1bHQpOiAlZFxuIiwgVVNCVE1DX01JTk9SX0JBU0UsCisJCQlyZXRjb2RlKTsKKwkJZ290byBlcnJvcl9yZWdpc3RlcjsKKwl9CisJZGV2X2RiZygmaW50Zi0+ZGV2LCAiVXNpbmcgbWlub3IgbnVtYmVyICVkXG4iLCBpbnRmLT5taW5vcik7CisKKwlyZXR1cm4gMDsKKworZXJyb3JfcmVnaXN0ZXI6CisJc3lzZnNfcmVtb3ZlX2dyb3VwKCZpbnRmLT5kZXYua29iaiwgJmNhcGFiaWxpdHlfYXR0cl9ncnApOworCXN5c2ZzX3JlbW92ZV9ncm91cCgmaW50Zi0+ZGV2LmtvYmosICZkYXRhX2F0dHJfZ3JwKTsKKwlrcmVmX3B1dCgmZGF0YS0+a3JlZiwgdXNidG1jX2RlbGV0ZSk7CisJcmV0dXJuIHJldGNvZGU7Cit9CisKK3N0YXRpYyB2b2lkIHVzYnRtY19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQoreworCXN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGE7CisKKwlkZXZfZGJnKCZpbnRmLT5kZXYsICJ1c2J0bWNfZGlzY29ubmVjdCBjYWxsZWRcbiIpOworCisJZGF0YSA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CisJdXNiX2RlcmVnaXN0ZXJfZGV2KGludGYsICZ1c2J0bWNfY2xhc3MpOworCXN5c2ZzX3JlbW92ZV9ncm91cCgmaW50Zi0+ZGV2LmtvYmosICZjYXBhYmlsaXR5X2F0dHJfZ3JwKTsKKwlzeXNmc19yZW1vdmVfZ3JvdXAoJmludGYtPmRldi5rb2JqLCAmZGF0YV9hdHRyX2dycCk7CisJa3JlZl9wdXQoJmRhdGEtPmtyZWYsIHVzYnRtY19kZWxldGUpOworfQorCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNidG1jX2RyaXZlciA9IHsKKwkubmFtZQkJPSAidXNidG1jIiwKKwkuaWRfdGFibGUJPSB1c2J0bWNfZGV2aWNlcywKKwkucHJvYmUJCT0gdXNidG1jX3Byb2JlLAorCS5kaXNjb25uZWN0CT0gdXNidG1jX2Rpc2Nvbm5lY3QKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHVzYnRtY19pbml0KHZvaWQpCit7CisJaW50IHJldGNvZGU7CisKKwlyZXRjb2RlID0gdXNiX3JlZ2lzdGVyKCZ1c2J0bWNfZHJpdmVyKTsKKwlpZiAocmV0Y29kZSkKKwkJcHJpbnRrKEtFUk5fRVJSIEtCVUlMRF9NT0ROQU1FIjogVW5hYmxlIHRvIHJlZ2lzdGVyIGRyaXZlclxuIik7CisJcmV0dXJuIHJldGNvZGU7Cit9Cittb2R1bGVfaW5pdCh1c2J0bWNfaW5pdCk7CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2J0bWNfZXhpdCh2b2lkKQoreworCXVzYl9kZXJlZ2lzdGVyKCZ1c2J0bWNfZHJpdmVyKTsKK30KK21vZHVsZV9leGl0KHVzYnRtY19leGl0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9LY29uZmlnIGIvZHJpdmVycy91c2IvY29yZS9LY29uZmlnCmluZGV4IGNjOWYzOTcuLmUxNzU5ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvS2NvbmZpZworKysgYi9kcml2ZXJzL3VzYi9jb3JlL0tjb25maWcKQEAgLTEzNCw1ICsxMzQsNSBAQAogCSAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gTGludXggd2lsbCByZWZ1c2UgdG8gZW51bWVyYXRlCiAJICBleHRlcm5hbCBodWJzLiAgT1RHIGhvc3RzIGFyZSBhbGxvd2VkIHRvIHJlZHVjZSBoYXJkd2FyZQogCSAgYW5kIHNvZnR3YXJlIGNvc3RzIGJ5IG5vdCBzdXBwb3J0aW5nIGV4dGVybmFsIGh1YnMuICBTbwotCSAgYXJlICJFbWVkZGVkIEhvc3RzIiB0aGF0IGRvbid0IG9mZmVyIE9URyBzdXBwb3J0LgorCSAgYXJlICJFbWJlZGRlZCBIb3N0cyIgdGhhdCBkb24ndCBvZmZlciBPVEcgc3VwcG9ydC4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kZXZpby5jIGIvZHJpdmVycy91c2IvY29yZS9kZXZpby5jCmluZGV4IDdhNGZhNzkuLjJiY2NlZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvZGV2aW8uYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2RldmlvLmMKQEAgLTQxMyw3ICs0MTMsOCBAQAogCWlmIChsaWtlbHkoaWZudW0gPCA4KnNpemVvZihwcy0+aWZjbGFpbWVkKSkpCiAJCWNsZWFyX2JpdChpZm51bSwgJnBzLT5pZmNsYWltZWQpOwogCWVsc2UKLQkJd2FybigiaW50ZXJmYWNlIG51bWJlciAldSBvdXQgb2YgcmFuZ2UiLCBpZm51bSk7CisJCWRldl93YXJuKCZpbnRmLT5kZXYsICJpbnRlcmZhY2UgbnVtYmVyICV1IG91dCBvZiByYW5nZVxuIiwKKwkJCSBpZm51bSk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpOwogCkBAIC02MjQsNiArNjI1LDggQEAKIAlzbXBfd21iKCk7CiAJbGlzdF9hZGRfdGFpbCgmcHMtPmxpc3QsICZkZXYtPmZpbGVsaXN0KTsKIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBwczsKKwlzbm9vcCgmZGV2LT5kZXYsICJvcGVuZWQgYnkgcHJvY2VzcyAlZDogJXNcbiIsIHRhc2tfcGlkX25yKGN1cnJlbnQpLAorCQkJY3VycmVudC0+Y29tbSk7CiAgb3V0OgogCWlmIChyZXQpIHsKIAkJa2ZyZWUocHMpOwpAQCAtMTc3NCwxOSArMTc3NywyMCBAQAogCXJldHZhbCA9IHJlZ2lzdGVyX2NocmRldl9yZWdpb24oVVNCX0RFVklDRV9ERVYsIFVTQl9ERVZJQ0VfTUFYLAogCQkJCQkidXNiX2RldmljZSIpOwogCWlmIChyZXR2YWwpIHsKLQkJZXJyKCJ1bmFibGUgdG8gcmVnaXN0ZXIgbWlub3JzIGZvciB1c2JfZGV2aWNlIik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIHJlZ2lzdGVyIG1pbm9ycyBmb3IgdXNiX2RldmljZVxuIik7CiAJCWdvdG8gb3V0OwogCX0KIAljZGV2X2luaXQoJnVzYl9kZXZpY2VfY2RldiwgJnVzYmRldl9maWxlX29wZXJhdGlvbnMpOwogCXJldHZhbCA9IGNkZXZfYWRkKCZ1c2JfZGV2aWNlX2NkZXYsIFVTQl9ERVZJQ0VfREVWLCBVU0JfREVWSUNFX01BWCk7CiAJaWYgKHJldHZhbCkgewotCQllcnIoInVuYWJsZSB0byBnZXQgdXNiX2RldmljZSBtYWpvciAlZCIsIFVTQl9ERVZJQ0VfTUFKT1IpOworCQlwcmludGsoS0VSTl9FUlIgIlVuYWJsZSB0byBnZXQgdXNiX2RldmljZSBtYWpvciAlZFxuIiwKKwkJICAgICAgIFVTQl9ERVZJQ0VfTUFKT1IpOwogCQlnb3RvIGVycm9yX2NkZXY7CiAJfQogI2lmZGVmIENPTkZJR19VU0JfREVWSUNFX0NMQVNTCiAJdXNiX2NsYXNzZGV2X2NsYXNzID0gY2xhc3NfY3JlYXRlKFRISVNfTU9EVUxFLCAidXNiX2RldmljZSIpOwogCWlmIChJU19FUlIodXNiX2NsYXNzZGV2X2NsYXNzKSkgewotCQllcnIoInVuYWJsZSB0byByZWdpc3RlciB1c2JfZGV2aWNlIGNsYXNzIik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIHJlZ2lzdGVyIHVzYl9kZXZpY2UgY2xhc3NcbiIpOwogCQlyZXR2YWwgPSBQVFJfRVJSKHVzYl9jbGFzc2Rldl9jbGFzcyk7CiAJCWNkZXZfZGVsKCZ1c2JfZGV2aWNlX2NkZXYpOwogCQl1c2JfY2xhc3NkZXZfY2xhc3MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKaW5kZXggNWE3ZmE2Zi4uZTkzNWJlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCkBAIC0xMDcwLDcgKzEwNzAsOCBAQAogCQkJCXN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXI7CiAKIAkJCQlkcml2ZXIgPSB0b191c2JfZHJpdmVyKGludGYtPmRldi5kcml2ZXIpOwotCQkJCWlmICghZHJpdmVyLT5yZXNldF9yZXN1bWUpCisJCQkJaWYgKCFkcml2ZXItPnJlc2V0X3Jlc3VtZSB8fAorCQkJCSAgICBpbnRmLT5uZWVkc19yZW1vdGVfd2FrZXVwKQogCQkJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZW5kcG9pbnQuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZW5kcG9pbnQuYwppbmRleCAyMjkxMjEzLi45NDZmYWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2VuZHBvaW50LmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9lbmRwb2ludC5jCkBAIC0xNjksNyArMTY5LDggQEAKIAllcnJvciA9IGFsbG9jX2NocmRldl9yZWdpb24oJmRldiwgMCwgTUFYX0VORFBPSU5UX01JTk9SUywKIAkJCQkgICAgInVzYl9lbmRwb2ludCIpOwogCWlmIChlcnJvcikgewotCQllcnIoInVuYWJsZSB0byBnZXQgYSBkeW5hbWljIG1ham9yIGZvciB1c2IgZW5kcG9pbnRzIik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIGdldCBhIGR5bmFtaWMgbWFqb3IgZm9yICIKKwkJICAgICAgICJ1c2IgZW5kcG9pbnRzLlxuIik7CiAJCXJldHVybiBlcnJvcjsKIAl9CiAJdXNiX2VuZHBvaW50X21ham9yID0gTUFKT1IoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZmlsZS5jIGIvZHJpdmVycy91c2IvY29yZS9maWxlLmMKaW5kZXggNTVmN2YzMS4uOTk3ZTY1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9maWxlLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9maWxlLmMKQEAgLTg2LDcgKzg2LDcgQEAKIAl1c2JfY2xhc3MtPmNsYXNzID0gY2xhc3NfY3JlYXRlKFRISVNfTU9EVUxFLCAidXNiIik7CiAJaWYgKElTX0VSUih1c2JfY2xhc3MtPmNsYXNzKSkgewogCQlyZXN1bHQgPSBJU19FUlIodXNiX2NsYXNzLT5jbGFzcyk7Ci0JCWVycigiY2xhc3NfY3JlYXRlIGZhaWxlZCBmb3IgdXNiIGRldmljZXMiKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJjbGFzc19jcmVhdGUgZmFpbGVkIGZvciB1c2IgZGV2aWNlc1xuIik7CiAJCWtmcmVlKHVzYl9jbGFzcyk7CiAJCXVzYl9jbGFzcyA9IE5VTEw7CiAJfQpAQCAtMTE1LDcgKzExNSw4IEBACiAKIAllcnJvciA9IHJlZ2lzdGVyX2NocmRldihVU0JfTUFKT1IsICJ1c2IiLCAmdXNiX2ZvcHMpOwogCWlmIChlcnJvcikKLQkJZXJyKCJ1bmFibGUgdG8gZ2V0IG1ham9yICVkIGZvciB1c2IgZGV2aWNlcyIsIFVTQl9NQUpPUik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIGdldCBtYWpvciAlZCBmb3IgdXNiIGRldmljZXNcbiIsCisJCSAgICAgICBVU0JfTUFKT1IpOwogCiAJcmV0dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9oY2QuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKaW5kZXggYzgwMzVhOC4uZmM5MDE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9oY2QuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCkBAIC04MSw2ICs4MSwxMCBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBLZWVwIHRyYWNrIG9mIHdoaWNoIGhvc3QgY29udHJvbGxlciBkcml2ZXJzIGFyZSBsb2FkZWQgKi8KK3Vuc2lnbmVkIGxvbmcgdXNiX2hjZHNfbG9hZGVkOworRVhQT1JUX1NZTUJPTF9HUEwodXNiX2hjZHNfbG9hZGVkKTsKKwogLyogaG9zdCBjb250cm9sbGVycyB3ZSBtYW5hZ2UgKi8KIExJU1RfSEVBRCAodXNiX2J1c19saXN0KTsKIEVYUE9SVF9TWU1CT0xfR1BMICh1c2JfYnVzX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9oY2QuaCBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmgKaW5kZXggZTcxMGNlMC4uMmRjZGU2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9oY2QuaAorKysgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5oCkBAIC00ODIsNCArNDgyLDEwIEBACiAgKi8KIGV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlIGVoY2lfY2ZfcG9ydF9yZXNldF9yd3NlbTsKIAorLyogS2VlcCB0cmFjayBvZiB3aGljaCBob3N0IGNvbnRyb2xsZXIgZHJpdmVycyBhcmUgbG9hZGVkICovCisjZGVmaW5lIFVTQl9VSENJX0xPQURFRAkJMAorI2RlZmluZSBVU0JfT0hDSV9MT0FERUQJCTEKKyNkZWZpbmUgVVNCX0VIQ0lfTE9BREVECQkyCitleHRlcm4gdW5zaWduZWQgbG9uZyB1c2JfaGNkc19sb2FkZWQ7CisKICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCBkOTk5NjM4Li5kNzNjZTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKQEAgLTc3LDYgKzc3LDcgQEAKIAl1bnNpZ25lZAkJaGFzX2luZGljYXRvcnM6MTsKIAl1OAkJCWluZGljYXRvcltVU0JfTUFYQ0hJTERSRU5dOwogCXN0cnVjdCBkZWxheWVkX3dvcmsJbGVkczsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrCWluaXRfd29yazsKIH07CiAKIApAQCAtMTAwLDYgKzEwMSwxNSBAQAogTU9EVUxFX1BBUk1fREVTQyAoYmxpbmtlbmxpZ2h0cywgInRydWUgdG8gY3ljbGUgbGVkcyBvbiBodWJzIik7CiAKIC8qCisgKiBEZXZpY2UgU0FUQTgwMDAgRlcxLjAgZnJvbSBEQVRBU1QwUiBUZWNobm9sb2d5IENvcnAgcmVxdWlyZXMgYWJvdXQKKyAqIDEwIHNlY29uZHMgdG8gc2VuZCByZXBseSBmb3IgdGhlIGluaXRpYWwgNjQtYnl0ZSBkZXNjcmlwdG9yIHJlcXVlc3QuCisgKi8KKy8qIGRlZmluZSBpbml0aWFsIDY0LWJ5dGUgZGVzY3JpcHRvciByZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCitzdGF0aWMgaW50IGluaXRpYWxfZGVzY3JpcHRvcl90aW1lb3V0ID0gVVNCX0NUUkxfR0VUX1RJTUVPVVQ7Cittb2R1bGVfcGFyYW0oaW5pdGlhbF9kZXNjcmlwdG9yX3RpbWVvdXQsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKK01PRFVMRV9QQVJNX0RFU0MoaW5pdGlhbF9kZXNjcmlwdG9yX3RpbWVvdXQsICJpbml0aWFsIDY0LWJ5dGUgZGVzY3JpcHRvciByZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0IDUwMDAgLSA1LjAgc2Vjb25kcykiKTsKKworLyoKICAqIEFzIG9mIDIuNi4xMCB3ZSBpbnRyb2R1Y2UgYSBuZXcgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBzY2hlbWUgd2hpY2gKICAqIGNsb3NlbHkgcmVzZW1ibGVzIHRoZSB3YXkgV2luZG93cyB3b3Jrcy4gIEhvcGVmdWxseSBpdCB3aWxsIGJlIGNvbXBhdGlibGUKICAqIHdpdGggYSB3aWRlciByYW5nZSBvZiBkZXZpY2VzIHRoYW4gdGhlIG9sZCBzY2hlbWUuICBIb3dldmVyIHNvbWUgcHJldmlvdXNseQpAQCAtNTE1LDEwICs1MjUsMTQgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHVzYl9odWJfdHRfY2xlYXJfYnVmZmVyKTsKIAotc3RhdGljIHZvaWQgaHViX3Bvd2VyX29uKHN0cnVjdCB1c2JfaHViICpodWIpCisvKiBJZiBkb19kZWxheSBpcyBmYWxzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSBjYWxsZXIKKyAqIG5lZWRzIHRvIGRlbGF5LgorICovCitzdGF0aWMgdW5zaWduZWQgaHViX3Bvd2VyX29uKHN0cnVjdCB1c2JfaHViICpodWIsIGJvb2wgZG9fZGVsYXkpCiB7CiAJaW50IHBvcnQxOwogCXVuc2lnbmVkIHBnb29kX2RlbGF5ID0gaHViLT5kZXNjcmlwdG9yLT5iUHdyT24yUHdyR29vZCAqIDI7CisJdW5zaWduZWQgZGVsYXk7CiAJdTE2IHdIdWJDaGFyYWN0ZXJpc3RpY3MgPQogCQkJbGUxNl90b19jcHUoaHViLT5kZXNjcmlwdG9yLT53SHViQ2hhcmFjdGVyaXN0aWNzKTsKIApAQCAtNTM3LDcgKzU1MSwxMCBAQAogCQlzZXRfcG9ydF9mZWF0dXJlKGh1Yi0+aGRldiwgcG9ydDEsIFVTQl9QT1JUX0ZFQVRfUE9XRVIpOwogCiAJLyogV2FpdCBhdCBsZWFzdCAxMDAgbXNlYyBmb3IgcG93ZXIgdG8gYmVjb21lIHN0YWJsZSAqLwotCW1zbGVlcChtYXgocGdvb2RfZGVsYXksICh1bnNpZ25lZCkgMTAwKSk7CisJZGVsYXkgPSBtYXgocGdvb2RfZGVsYXksICh1bnNpZ25lZCkgMTAwKTsKKwlpZiAoZG9fZGVsYXkpCisJCW1zbGVlcChkZWxheSk7CisJcmV0dXJuIGRlbGF5OwogfQogCiBzdGF0aWMgaW50IGh1Yl9odWJfc3RhdHVzKHN0cnVjdCB1c2JfaHViICpodWIsCkBAIC01OTksMjEgKzYxNiw1NSBAQAogfQogCiBlbnVtIGh1Yl9hY3RpdmF0aW9uX3R5cGUgewotCUhVQl9JTklULCBIVUJfUE9TVF9SRVNFVCwgSFVCX1JFU1VNRSwgSFVCX1JFU0VUX1JFU1VNRQorCUhVQl9JTklULCBIVUJfSU5JVDIsIEhVQl9JTklUMywKKwlIVUJfUE9TVF9SRVNFVCwgSFVCX1JFU1VNRSwgSFVCX1JFU0VUX1JFU1VNRSwKIH07CiAKK3N0YXRpYyB2b2lkIGh1Yl9pbml0X2Z1bmMyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpOworc3RhdGljIHZvaWQgaHViX2luaXRfZnVuYzMoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7CisKIHN0YXRpYyB2b2lkIGh1Yl9hY3RpdmF0ZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBlbnVtIGh1Yl9hY3RpdmF0aW9uX3R5cGUgdHlwZSkKIHsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqaGRldiA9IGh1Yi0+aGRldjsKIAlpbnQgcG9ydDE7CiAJaW50IHN0YXR1czsKIAlib29sIG5lZWRfZGVib3VuY2VfZGVsYXkgPSBmYWxzZTsKKwl1bnNpZ25lZCBkZWxheTsKKworCS8qIENvbnRpbnVlIGEgcGFydGlhbCBpbml0aWFsaXphdGlvbiAqLworCWlmICh0eXBlID09IEhVQl9JTklUMikKKwkJZ290byBpbml0MjsKKwlpZiAodHlwZSA9PSBIVUJfSU5JVDMpCisJCWdvdG8gaW5pdDM7CiAKIAkvKiBBZnRlciBhIHJlc3VtZSwgcG9ydCBwb3dlciBzaG91bGQgc3RpbGwgYmUgb24uCiAJICogRm9yIGFueSBvdGhlciB0eXBlIG9mIGFjdGl2YXRpb24sIHR1cm4gaXQgb24uCiAJICovCi0JaWYgKHR5cGUgIT0gSFVCX1JFU1VNRSkKLQkJaHViX3Bvd2VyX29uKGh1Yik7CisJaWYgKHR5cGUgIT0gSFVCX1JFU1VNRSkgeworCisJCS8qIFNwZWVkIHVwIHN5c3RlbSBib290IGJ5IHVzaW5nIGEgZGVsYXllZF93b3JrIGZvciB0aGUKKwkJICogaHViJ3MgaW5pdGlhbCBwb3dlci11cCBkZWxheXMuICBUaGlzIGlzIHByZXR0eSBhd2t3YXJkCisJCSAqIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gbG9va3MgbGlrZSBhIGhvbWUtYnJld2VkIHNvcnQgb2YKKwkJICogc2V0am1wL2xvbmdqbXAsIGJ1dCBpdCBzYXZlcyBhdCBsZWFzdCAxMDAgbXMgZm9yIGVhY2gKKwkJICogcm9vdCBodWIgKGFzc3VtaW5nIHVzYmNvcmUgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsCisJCSAqIHJhdGhlciB0aGFuIGFzIGEgbW9kdWxlKS4gIEl0IGFkZHMgdXAuCisJCSAqCisJCSAqIFRoaXMgY2FuJ3QgYmUgZG9uZSBmb3IgSFVCX1JFU1VNRSBvciBIVUJfUkVTRVRfUkVTVU1FCisJCSAqIGJlY2F1c2UgZm9yIHRob3NlIGFjdGl2YXRpb24gdHlwZXMgdGhlIHBvcnRzIGhhdmUgdG8gYmUKKwkJICogb3BlcmF0aW9uYWwgd2hlbiB3ZSByZXR1cm4uICBJbiB0aGVvcnkgdGhpcyBjb3VsZCBiZSBkb25lCisJCSAqIGZvciBIVUJfUE9TVF9SRVNFVCwgYnV0IGl0J3MgZWFzaWVyIG5vdCB0by4KKwkJICovCisJCWlmICh0eXBlID09IEhVQl9JTklUKSB7CisJCQlkZWxheSA9IGh1Yl9wb3dlcl9vbihodWIsIGZhbHNlKTsKKwkJCVBSRVBBUkVfREVMQVlFRF9XT1JLKCZodWItPmluaXRfd29yaywgaHViX2luaXRfZnVuYzIpOworCQkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZodWItPmluaXRfd29yaywKKwkJCQkJbXNlY3NfdG9famlmZmllcyhkZWxheSkpOworCQkJcmV0dXJuOwkJLyogQ29udGludWVzIGF0IGluaXQyOiBiZWxvdyAqLworCQl9IGVsc2UgeworCQkJaHViX3Bvd2VyX29uKGh1YiwgdHJ1ZSk7CisJCX0KKwl9CisgaW5pdDI6CiAKIAkvKiBDaGVjayBlYWNoIHBvcnQgYW5kIHNldCBodWItPmNoYW5nZV9iaXRzIHRvIGxldCBraHViZCBrbm93CiAJICogd2hpY2ggcG9ydHMgbmVlZCBhdHRlbnRpb24uCkBAIC02OTIsOSArNzQzLDIwIEBACiAJICogSWYgYW55IHBvcnQtc3RhdHVzIGNoYW5nZXMgZG8gb2NjdXIgZHVyaW5nIHRoaXMgZGVsYXksIGtodWJkCiAJICogd2lsbCBzZWUgdGhlbSBsYXRlciBhbmQgaGFuZGxlIHRoZW0gbm9ybWFsbHkuCiAJICovCi0JaWYgKG5lZWRfZGVib3VuY2VfZGVsYXkpCi0JCW1zbGVlcChIVUJfREVCT1VOQ0VfU1RBQkxFKTsKKwlpZiAobmVlZF9kZWJvdW5jZV9kZWxheSkgeworCQlkZWxheSA9IEhVQl9ERUJPVU5DRV9TVEFCTEU7CiAKKwkJLyogRG9uJ3QgZG8gYSBsb25nIHNsZWVwIGluc2lkZSBhIHdvcmtxdWV1ZSByb3V0aW5lICovCisJCWlmICh0eXBlID09IEhVQl9JTklUMikgeworCQkJUFJFUEFSRV9ERUxBWUVEX1dPUksoJmh1Yi0+aW5pdF93b3JrLCBodWJfaW5pdF9mdW5jMyk7CisJCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmh1Yi0+aW5pdF93b3JrLAorCQkJCQltc2Vjc190b19qaWZmaWVzKGRlbGF5KSk7CisJCQlyZXR1cm47CQkvKiBDb250aW51ZXMgYXQgaW5pdDM6IGJlbG93ICovCisJCX0gZWxzZSB7CisJCQltc2xlZXAoZGVsYXkpOworCQl9CisJfQorIGluaXQzOgogCWh1Yi0+cXVpZXNjaW5nID0gMDsKIAogCXN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKGh1Yi0+dXJiLCBHRlBfTk9JTyk7CkBAIC03MDcsNiArNzY5LDIxIEBACiAJa2lja19raHViZChodWIpOwogfQogCisvKiBJbXBsZW1lbnQgdGhlIGNvbnRpbnVhdGlvbnMgZm9yIHRoZSBkZWxheXMgYWJvdmUgKi8KK3N0YXRpYyB2b2lkIGh1Yl9pbml0X2Z1bmMyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpCit7CisJc3RydWN0IHVzYl9odWIgKmh1YiA9IGNvbnRhaW5lcl9vZih3cywgc3RydWN0IHVzYl9odWIsIGluaXRfd29yay53b3JrKTsKKworCWh1Yl9hY3RpdmF0ZShodWIsIEhVQl9JTklUMik7Cit9CisKK3N0YXRpYyB2b2lkIGh1Yl9pbml0X2Z1bmMzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpCit7CisJc3RydWN0IHVzYl9odWIgKmh1YiA9IGNvbnRhaW5lcl9vZih3cywgc3RydWN0IHVzYl9odWIsIGluaXRfd29yay53b3JrKTsKKworCWh1Yl9hY3RpdmF0ZShodWIsIEhVQl9JTklUMyk7Cit9CisKIGVudW0gaHViX3F1aWVzY2luZ190eXBlIHsKIAlIVUJfRElTQ09OTkVDVCwgSFVCX1BSRV9SRVNFVCwgSFVCX1NVU1BFTkQKIH07CkBAIC03MTYsNiArNzkzLDggQEAKIAlzdHJ1Y3QgdXNiX2RldmljZSAqaGRldiA9IGh1Yi0+aGRldjsKIAlpbnQgaTsKIAorCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaHViLT5pbml0X3dvcmspOworCiAJLyoga2h1YmQgYW5kIHJlbGF0ZWQgYWN0aXZpdHkgd29uJ3QgcmUtdHJpZ2dlciAqLwogCWh1Yi0+cXVpZXNjaW5nID0gMTsKIApAQCAtMTA5OSw2ICsxMTc4LDcgQEAKIAlodWItPmludGZkZXYgPSAmaW50Zi0+ZGV2OwogCWh1Yi0+aGRldiA9IGhkZXY7CiAJSU5JVF9ERUxBWUVEX1dPUksoJmh1Yi0+bGVkcywgbGVkX3dvcmspOworCUlOSVRfREVMQVlFRF9XT1JLKCZodWItPmluaXRfd29yaywgTlVMTCk7CiAJdXNiX2dldF9pbnRmKGludGYpOwogCiAJdXNiX3NldF9pbnRmZGF0YSAoaW50ZiwgaHViKTsKQEAgLTI0NjcsNyArMjU0Nyw3IEBACiAJCQkJCVVTQl9SRVFfR0VUX0RFU0NSSVBUT1IsIFVTQl9ESVJfSU4sCiAJCQkJCVVTQl9EVF9ERVZJQ0UgPDwgOCwgMCwKIAkJCQkJYnVmLCBHRVRfREVTQ1JJUFRPUl9CVUZTSVpFLAotCQkJCQlVU0JfQ1RSTF9HRVRfVElNRU9VVCk7CisJCQkJCWluaXRpYWxfZGVzY3JpcHRvcl90aW1lb3V0KTsKIAkJCQlzd2l0Y2ggKGJ1Zi0+Yk1heFBhY2tldFNpemUwKSB7CiAJCQkJY2FzZSA4OiBjYXNlIDE2OiBjYXNlIDMyOiBjYXNlIDY0OiBjYXNlIDI1NToKIAkJCQkJaWYgKGJ1Zi0+YkRlc2NyaXB0b3JUeXBlID09CkBAIC0zMDM1LDcgKzMxMTUsNyBAQAogCQkJCQlpKTsKIAkJCQljbGVhcl9wb3J0X2ZlYXR1cmUoaGRldiwgaSwKIAkJCQkJVVNCX1BPUlRfRkVBVF9DX09WRVJfQ1VSUkVOVCk7Ci0JCQkJaHViX3Bvd2VyX29uKGh1Yik7CisJCQkJaHViX3Bvd2VyX29uKGh1YiwgdHJ1ZSk7CiAJCQl9CiAKIAkJCWlmIChwb3J0Y2hhbmdlICYgVVNCX1BPUlRfU1RBVF9DX1JFU0VUKSB7CkBAIC0zMDcwLDcgKzMxNTAsNyBAQAogCQkJCWRldl9kYmcgKGh1Yl9kZXYsICJvdmVyY3VycmVudCBjaGFuZ2VcbiIpOwogCQkJCW1zbGVlcCg1MDApOwkvKiBDb29sIGRvd24gKi8KIAkJCQljbGVhcl9odWJfZmVhdHVyZShoZGV2LCBDX0hVQl9PVkVSX0NVUlJFTlQpOwotICAgICAgICAgICAgICAgICAgICAgICAgCWh1Yl9wb3dlcl9vbihodWIpOworICAgICAgICAgICAgICAgICAgICAgICAgCWh1Yl9wb3dlcl9vbihodWIsIHRydWUpOwogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaW5vZGUuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaW5vZGUuYwppbmRleCA3N2ZhN2EwLi45NDYzMjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2lub2RlLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9pbm9kZS5jCkBAIC0xODAsOCArMTgwLDggQEAKIAkJCWxpc3Rtb2RlID0gb3B0aW9uICYgU19JUldYVUdPOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcnIoInVzYmZzOiB1bnJlY29nbmlzZWQgbW91bnQgb3B0aW9uIFwiJXNcIiAiCi0JCQkgICAgIm9yIG1pc3NpbmcgdmFsdWVcbiIsIHApOworCQkJcHJpbnRrKEtFUk5fRVJSICJ1c2JmczogdW5yZWNvZ25pc2VkIG1vdW50IG9wdGlvbiAiCisJCQkgICAgICAgIlwiJXNcIiBvciBtaXNzaW5nIHZhbHVlXG4iLCBwKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQpAQCAtMjQwLDcgKzI0MCw5IEBACiAJCQkJdXBkYXRlX3NwZWNpYWwoYnVzKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJd2FybigiVW5rbm93biBub2RlICVzIG1vZGUgJXggZm91bmQgb24gcmVtb3VudCFcbiIsYnVzLT5kX25hbWUubmFtZSxidXMtPmRfaW5vZGUtPmlfbW9kZSk7CisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAidXNiZnM6IFVua25vd24gbm9kZSAlcyAiCisJCQkJICAgICAgICJtb2RlICV4IGZvdW5kIG9uIHJlbW91bnQhXG4iLAorCQkJCSAgICAgICBidXMtPmRfbmFtZS5uYW1lLCBidXMtPmRfaW5vZGUtPmlfbW9kZSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTI1OSw3ICsyNjEsNyBAQAogCQlyZXR1cm4gMDsKIAogCWlmIChwYXJzZV9vcHRpb25zKHNiLCBkYXRhKSkgewotCQl3YXJuKCJ1c2JmczogbW91bnQgcGFyYW1ldGVyIGVycm9yOiIpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICJ1c2JmczogbW91bnQgcGFyYW1ldGVyIGVycm9yLlxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNTk5LDcgKzYwMSw3IEBACiAJLyogY3JlYXRlIHRoZSBkZXZpY2VzIHNwZWNpYWwgZmlsZSAqLwogCXJldHZhbCA9IHNpbXBsZV9waW5fZnMoJnVzYl9mc190eXBlLCAmdXNiZnNfbW91bnQsICZ1c2Jmc19tb3VudF9jb3VudCk7CiAJaWYgKHJldHZhbCkgewotCQllcnIgKCJVbmFibGUgdG8gZ2V0IHVzYmZzIG1vdW50Iik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIGdldCB1c2JmcyBtb3VudFxuIik7CiAJCWdvdG8gZXhpdDsKIAl9CiAKQEAgLTYxMSw3ICs2MTMsNyBAQAogCQkJCQkgICAgICAgTlVMTCwgJnVzYmZzX2RldmljZXNfZm9wcywKIAkJCQkJICAgICAgIGxpc3R1aWQsIGxpc3RnaWQpOwogCWlmIChkZXZpY2VzX3VzYmZzX2RlbnRyeSA9PSBOVUxMKSB7Ci0JCWVyciAoIlVuYWJsZSB0byBjcmVhdGUgZGV2aWNlcyB1c2JmcyBmaWxlIik7CisJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIGNyZWF0ZSBkZXZpY2VzIHVzYmZzIGZpbGVcbiIpOwogCQlyZXR2YWwgPSAtRU5PREVWOwogCQlnb3RvIGVycm9yX2NsZWFuX21vdW50czsKIAl9CkBAIC02NjMsNyArNjY1LDcgQEAKIAlidXMtPnVzYmZzX2RlbnRyeSA9IGZzX2NyZWF0ZV9maWxlIChuYW1lLCBidXNtb2RlIHwgU19JRkRJUiwgcGFyZW50LAogCQkJCQkgICAgYnVzLCBOVUxMLCBidXN1aWQsIGJ1c2dpZCk7CiAJaWYgKGJ1cy0+dXNiZnNfZGVudHJ5ID09IE5VTEwpIHsKLQkJZXJyICgiZXJyb3IgY3JlYXRpbmcgdXNiZnMgYnVzIGVudHJ5Iik7CisJCXByaW50ayhLRVJOX0VSUiAiRXJyb3IgY3JlYXRpbmcgdXNiZnMgYnVzIGVudHJ5XG4iKTsKIAkJcmV0dXJuOwogCX0KIH0KQEAgLTY5NCw3ICs2OTYsNyBAQAogCQkJCQkgICAgJnVzYmRldl9maWxlX29wZXJhdGlvbnMsCiAJCQkJCSAgICBkZXZ1aWQsIGRldmdpZCk7CiAJaWYgKGRldi0+dXNiZnNfZGVudHJ5ID09IE5VTEwpIHsKLQkJZXJyICgiZXJyb3IgY3JlYXRpbmcgdXNiZnMgZGV2aWNlIGVudHJ5Iik7CisJCXByaW50ayhLRVJOX0VSUiAiRXJyb3IgY3JlYXRpbmcgdXNiZnMgZGV2aWNlIGVudHJ5XG4iKTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMgYi9kcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYwppbmRleCAyODZiNDQzLi44ODc3Mzg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYwpAQCAtMTIwNCw3ICsxMjA0LDggQEAKIAogCWFsdCA9IHVzYl9hbHRudW1fdG9fYWx0c2V0dGluZyhpZmFjZSwgYWx0ZXJuYXRlKTsKIAlpZiAoIWFsdCkgewotCQl3YXJuKCJzZWxlY3RpbmcgaW52YWxpZCBhbHRzZXR0aW5nICVkIiwgYWx0ZXJuYXRlKTsKKwkJZGV2X3dhcm4oJmRldi0+ZGV2LCAic2VsZWN0aW5nIGludmFsaWQgYWx0c2V0dGluZyAlZCIsCisJCQkgYWx0ZXJuYXRlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3N5c2ZzLmMgYi9kcml2ZXJzL3VzYi9jb3JlL3N5c2ZzLmMKaW5kZXggNWUxZjVkNS4uZjY2ZmJhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9zeXNmcy5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvc3lzZnMuYwpAQCAtNzQzLDYgKzc0MywyOSBAQAogfQogc3RhdGljIERFVklDRV9BVFRSKG1vZGFsaWFzLCBTX0lSVUdPLCBzaG93X21vZGFsaWFzLCBOVUxMKTsKIAorc3RhdGljIHNzaXplX3Qgc2hvd19zdXBwb3J0c19hdXRvc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7CisJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7CisJaW50IHJldDsKKworCWludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CisJdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7CisKKwl1c2JfbG9ja19kZXZpY2UodWRldik7CisJLyogRGV2aWNlcyB3aWxsIGJlIGF1dG9zdXNwZW5kZWQgZXZlbiB3aGVuIGFuIGludGVyZmFjZSBpc24ndCBjbGFpbWVkICovCisJaWYgKCFpbnRmLT5kZXYuZHJpdmVyIHx8CisJCQl0b191c2JfZHJpdmVyKGludGYtPmRldi5kcml2ZXIpLT5zdXBwb3J0c19hdXRvc3VzcGVuZCkKKwkJcmV0ID0gc3ByaW50ZihidWYsICIldVxuIiwgMSk7CisJZWxzZQorCQlyZXQgPSBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCAwKTsKKwl1c2JfdW5sb2NrX2RldmljZSh1ZGV2KTsKKworCXJldHVybiByZXQ7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIoc3VwcG9ydHNfYXV0b3N1c3BlbmQsIFNfSVJVR08sIHNob3dfc3VwcG9ydHNfYXV0b3N1c3BlbmQsIE5VTEwpOworCiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaW50Zl9hdHRyc1tdID0gewogCSZkZXZfYXR0cl9iSW50ZXJmYWNlTnVtYmVyLmF0dHIsCiAJJmRldl9hdHRyX2JBbHRlcm5hdGVTZXR0aW5nLmF0dHIsCkBAIC03NTEsNiArNzc0LDcgQEAKIAkmZGV2X2F0dHJfYkludGVyZmFjZVN1YkNsYXNzLmF0dHIsCiAJJmRldl9hdHRyX2JJbnRlcmZhY2VQcm90b2NvbC5hdHRyLAogCSZkZXZfYXR0cl9tb2RhbGlhcy5hdHRyLAorCSZkZXZfYXR0cl9zdXBwb3J0c19hdXRvc3VzcGVuZC5hdHRyLAogCU5VTEwsCiB9Owogc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaW50Zl9hdHRyX2dycCA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvdXJiLmMgYi9kcml2ZXJzL3VzYi9jb3JlL3VyYi5jCmluZGV4IDQ3MTExZTguLmYyNjM4MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvdXJiLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS91cmIuYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjZGVmaW5lIHRvX3VyYihkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IHVyYiwga3JlZikKIAorc3RhdGljIERFRklORV9TUElOTE9DSyh1c2JfcmVqZWN0X2xvY2spOworCiBzdGF0aWMgdm9pZCB1cmJfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKIAlzdHJ1Y3QgdXJiICp1cmIgPSB0b191cmIoa3JlZik7CkBAIC02OCw3ICs3MCw3IEBACiAJCWlzb19wYWNrZXRzICogc2l6ZW9mKHN0cnVjdCB1c2JfaXNvX3BhY2tldF9kZXNjcmlwdG9yKSwKIAkJbWVtX2ZsYWdzKTsKIAlpZiAoIXVyYikgewotCQllcnIoImFsbG9jX3VyYjoga21hbGxvYyBmYWlsZWQiKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJhbGxvY191cmI6IGttYWxsb2MgZmFpbGVkXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCXVzYl9pbml0X3VyYih1cmIpOwpAQCAtMTI3LDYgKzEyOSwxMyBAQAogCXVzYl9nZXRfdXJiKHVyYik7CiAJbGlzdF9hZGRfdGFpbCgmdXJiLT5hbmNob3JfbGlzdCwgJmFuY2hvci0+dXJiX2xpc3QpOwogCXVyYi0+YW5jaG9yID0gYW5jaG9yOworCisJaWYgKHVubGlrZWx5KGFuY2hvci0+cG9pc29uZWQpKSB7CisJCXNwaW5fbG9jaygmdXNiX3JlamVjdF9sb2NrKTsKKwkJdXJiLT5yZWplY3QrKzsKKwkJc3Bpbl91bmxvY2soJnVzYl9yZWplY3RfbG9jayk7CisJfQorCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW5jaG9yLT5sb2NrLCBmbGFncyk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1c2JfYW5jaG9yX3VyYik7CkBAIC0zOTgsNyArNDA3LDcgQEAKIAogCS8qIGZhaWwgaWYgc3VibWl0dGVyIGdhdmUgYm9ndXMgZmxhZ3MgKi8KIAlpZiAodXJiLT50cmFuc2Zlcl9mbGFncyAhPSBvcmlnX2ZsYWdzKSB7Ci0JCWVycigiQk9HVVMgdXJiIGZsYWdzLCAleCAtLT4gJXgiLAorCQlkZXZfZXJyKCZkZXYtPmRldiwgIkJPR1VTIHVyYiBmbGFncywgJXggLS0+ICV4XG4iLAogCQkJb3JpZ19mbGFncywgdXJiLT50cmFuc2Zlcl9mbGFncyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTU0NCwyNSArNTUzLDcwIEBACiAgKi8KIHZvaWQgdXNiX2tpbGxfdXJiKHN0cnVjdCB1cmIgKnVyYikKIHsKLQlzdGF0aWMgREVGSU5FX01VVEVYKHJlamVjdF9tdXRleCk7Ci0KIAltaWdodF9zbGVlcCgpOwogCWlmICghKHVyYiAmJiB1cmItPmRldiAmJiB1cmItPmVwKSkKIAkJcmV0dXJuOwotCW11dGV4X2xvY2soJnJlamVjdF9tdXRleCk7CisJc3Bpbl9sb2NrX2lycSgmdXNiX3JlamVjdF9sb2NrKTsKIAkrK3VyYi0+cmVqZWN0OwotCW11dGV4X3VubG9jaygmcmVqZWN0X211dGV4KTsKKwlzcGluX3VubG9ja19pcnEoJnVzYl9yZWplY3RfbG9jayk7CiAKIAl1c2JfaGNkX3VubGlua191cmIodXJiLCAtRU5PRU5UKTsKIAl3YWl0X2V2ZW50KHVzYl9raWxsX3VyYl9xdWV1ZSwgYXRvbWljX3JlYWQoJnVyYi0+dXNlX2NvdW50KSA9PSAwKTsKIAotCW11dGV4X2xvY2soJnJlamVjdF9tdXRleCk7CisJc3Bpbl9sb2NrX2lycSgmdXNiX3JlamVjdF9sb2NrKTsKIAktLXVyYi0+cmVqZWN0OwotCW11dGV4X3VubG9jaygmcmVqZWN0X211dGV4KTsKKwlzcGluX3VubG9ja19pcnEoJnVzYl9yZWplY3RfbG9jayk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1c2Jfa2lsbF91cmIpOwogCiAvKioKKyAqIHVzYl9wb2lzb25fdXJiIC0gcmVsaWFibHkga2lsbCBhIHRyYW5zZmVyIGFuZCBwcmV2ZW50IGZ1cnRoZXIgdXNlIG9mIGFuIFVSQgorICogQHVyYjogcG9pbnRlciB0byBVUkIgZGVzY3JpYmluZyBhIHByZXZpb3VzbHkgc3VibWl0dGVkIHJlcXVlc3QsCisgKgltYXkgYmUgTlVMTAorICoKKyAqIFRoaXMgcm91dGluZSBjYW5jZWxzIGFuIGluLXByb2dyZXNzIHJlcXVlc3QuICBJdCBpcyBndWFyYW50ZWVkIHRoYXQKKyAqIHVwb24gcmV0dXJuIGFsbCBjb21wbGV0aW9uIGhhbmRsZXJzIHdpbGwgaGF2ZSBmaW5pc2hlZCBhbmQgdGhlIFVSQgorICogd2lsbCBiZSB0b3RhbGx5IGlkbGUgYW5kIGNhbm5vdCBiZSByZXVzZWQuICBUaGVzZSBmZWF0dXJlcyBtYWtlCisgKiB0aGlzIGFuIGlkZWFsIHdheSB0byBzdG9wIEkvTyBpbiBhIGRpc2Nvbm5lY3QoKSBjYWxsYmFjay4KKyAqIElmIHRoZSByZXF1ZXN0IGhhcyBub3QgYWxyZWFkeSBmaW5pc2hlZCBvciBiZWVuIHVubGlua2VkCisgKiB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgc2VlIHVyYi0+c3RhdHVzID09IC1FTk9FTlQuCisgKgorICogQWZ0ZXIgYW5kIHdoaWxlIHRoZSByb3V0aW5lIHJ1bnMsIGF0dGVtcHRzIHRvIHJlc3VibWl0IHRoZSBVUkIgd2lsbCBmYWlsCisgKiB3aXRoIGVycm9yIC1FUEVSTS4gIFRodXMgZXZlbiBpZiB0aGUgVVJCJ3MgY29tcGxldGlvbiBoYW5kbGVyIGFsd2F5cworICogdHJpZXMgdG8gcmVzdWJtaXQsIGl0IHdpbGwgbm90IHN1Y2NlZWQgYW5kIHRoZSBVUkIgd2lsbCBiZWNvbWUgaWRsZS4KKyAqCisgKiBUaGlzIHJvdXRpbmUgbWF5IG5vdCBiZSB1c2VkIGluIGFuIGludGVycnVwdCBjb250ZXh0IChzdWNoIGFzIGEgYm90dG9tCisgKiBoYWxmIG9yIGEgY29tcGxldGlvbiBoYW5kbGVyKSwgb3Igd2hlbiBob2xkaW5nIGEgc3BpbmxvY2ssIG9yIGluIG90aGVyCisgKiBzaXR1YXRpb25zIHdoZXJlIHRoZSBjYWxsZXIgY2FuJ3Qgc2NoZWR1bGUoKS4KKyAqLwordm9pZCB1c2JfcG9pc29uX3VyYihzdHJ1Y3QgdXJiICp1cmIpCit7CisJbWlnaHRfc2xlZXAoKTsKKwlpZiAoISh1cmIgJiYgdXJiLT5kZXYgJiYgdXJiLT5lcCkpCisJCXJldHVybjsKKwlzcGluX2xvY2tfaXJxKCZ1c2JfcmVqZWN0X2xvY2spOworCSsrdXJiLT5yZWplY3Q7CisJc3Bpbl91bmxvY2tfaXJxKCZ1c2JfcmVqZWN0X2xvY2spOworCisJdXNiX2hjZF91bmxpbmtfdXJiKHVyYiwgLUVOT0VOVCk7CisJd2FpdF9ldmVudCh1c2Jfa2lsbF91cmJfcXVldWUsIGF0b21pY19yZWFkKCZ1cmItPnVzZV9jb3VudCkgPT0gMCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcG9pc29uX3VyYik7CisKK3ZvaWQgdXNiX3VucG9pc29uX3VyYihzdHJ1Y3QgdXJiICp1cmIpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICghdXJiKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdXNiX3JlamVjdF9sb2NrLCBmbGFncyk7CisJLS11cmItPnJlamVjdDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1c2JfcmVqZWN0X2xvY2ssIGZsYWdzKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl91bnBvaXNvbl91cmIpOworCisvKioKICAqIHVzYl9raWxsX2FuY2hvcmVkX3VyYnMgLSBjYW5jZWwgdHJhbnNmZXIgcmVxdWVzdHMgZW4gbWFzc2UKICAqIEBhbmNob3I6IGFuY2hvciB0aGUgcmVxdWVzdHMgYXJlIGJvdW5kIHRvCiAgKgpAQCAtNTg5LDYgKzY0MywzNSBAQAogfQogRVhQT1JUX1NZTUJPTF9HUEwodXNiX2tpbGxfYW5jaG9yZWRfdXJicyk7CiAKKworLyoqCisgKiB1c2JfcG9pc29uX2FuY2hvcmVkX3VyYnMgLSBjZWFzZSBhbGwgdHJhZmZpYyBmcm9tIGFuIGFuY2hvcgorICogQGFuY2hvcjogYW5jaG9yIHRoZSByZXF1ZXN0cyBhcmUgYm91bmQgdG8KKyAqCisgKiB0aGlzIGFsbG93cyBhbGwgb3V0c3RhbmRpbmcgVVJCcyB0byBiZSBwb2lzb25lZCBzdGFydGluZworICogZnJvbSB0aGUgYmFjayBvZiB0aGUgcXVldWUuIE5ld2x5IGFkZGVkIFVSQnMgd2lsbCBhbHNvIGJlCisgKiBwb2lzb25lZAorICovCit2b2lkIHVzYl9wb2lzb25fYW5jaG9yZWRfdXJicyhzdHJ1Y3QgdXNiX2FuY2hvciAqYW5jaG9yKQoreworCXN0cnVjdCB1cmIgKnZpY3RpbTsKKworCXNwaW5fbG9ja19pcnEoJmFuY2hvci0+bG9jayk7CisJYW5jaG9yLT5wb2lzb25lZCA9IDE7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbmNob3ItPnVyYl9saXN0KSkgeworCQl2aWN0aW0gPSBsaXN0X2VudHJ5KGFuY2hvci0+dXJiX2xpc3QucHJldiwgc3RydWN0IHVyYiwKKwkJCQkgICAgYW5jaG9yX2xpc3QpOworCQkvKiB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGUgVVJCIGlzbid0IGZyZWVkIGJlZm9yZSB3ZSBraWxsIGl0Ki8KKwkJdXNiX2dldF91cmIodmljdGltKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZhbmNob3ItPmxvY2spOworCQkvKiB0aGlzIHdpbGwgdW5hbmNob3IgdGhlIFVSQiAqLworCQl1c2JfcG9pc29uX3VyYih2aWN0aW0pOworCQl1c2JfcHV0X3VyYih2aWN0aW0pOworCQlzcGluX2xvY2tfaXJxKCZhbmNob3ItPmxvY2spOworCX0KKwlzcGluX3VubG9ja19pcnEoJmFuY2hvci0+bG9jayk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcG9pc29uX2FuY2hvcmVkX3VyYnMpOwogLyoqCiAgKiB1c2JfdW5saW5rX2FuY2hvcmVkX3VyYnMgLSBhc3luY2hyb25vdXNseSBjYW5jZWwgdHJhbnNmZXIgcmVxdWVzdHMgZW4gbWFzc2UKICAqIEBhbmNob3I6IGFuY2hvciB0aGUgcmVxdWVzdHMgYXJlIGJvdW5kIHRvCkBAIC02MzMsMyArNzE2LDczIEBACiAJCQkJICBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXQpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHVzYl93YWl0X2FuY2hvcl9lbXB0eV90aW1lb3V0KTsKKworLyoqCisgKiB1c2JfZ2V0X2Zyb21fYW5jaG9yIC0gZ2V0IGFuIGFuY2hvcidzIG9sZGVzdCB1cmIKKyAqIEBhbmNob3I6IHRoZSBhbmNob3Igd2hvc2UgdXJiIHlvdSB3YW50CisgKgorICogdGhpcyB3aWxsIHRha2UgdGhlIG9sZGVzdCB1cmIgZnJvbSBhbiBhbmNob3IsCisgKiB1bmFuY2hvciBhbmQgcmV0dXJuIGl0CisgKi8KK3N0cnVjdCB1cmIgKnVzYl9nZXRfZnJvbV9hbmNob3Ioc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcikKK3sKKwlzdHJ1Y3QgdXJiICp2aWN0aW07CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhbmNob3ItPmxvY2ssIGZsYWdzKTsKKwlpZiAoIWxpc3RfZW1wdHkoJmFuY2hvci0+dXJiX2xpc3QpKSB7CisJCXZpY3RpbSA9IGxpc3RfZW50cnkoYW5jaG9yLT51cmJfbGlzdC5uZXh0LCBzdHJ1Y3QgdXJiLAorCQkJCSAgICBhbmNob3JfbGlzdCk7CisJCXVzYl9nZXRfdXJiKHZpY3RpbSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFuY2hvci0+bG9jaywgZmxhZ3MpOworCQl1c2JfdW5hbmNob3JfdXJiKHZpY3RpbSk7CisJfSBlbHNlIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW5jaG9yLT5sb2NrLCBmbGFncyk7CisJCXZpY3RpbSA9IE5VTEw7CisJfQorCisJcmV0dXJuIHZpY3RpbTsKK30KKworRVhQT1JUX1NZTUJPTF9HUEwodXNiX2dldF9mcm9tX2FuY2hvcik7CisKKy8qKgorICogdXNiX3NjdXR0bGVfYW5jaG9yZWRfdXJicyAtIHVuYW5jaG9yIGFsbCBhbiBhbmNob3IncyB1cmJzCisgKiBAYW5jaG9yOiB0aGUgYW5jaG9yIHdob3NlIHVyYnMgeW91IHdhbnQgdG8gdW5hbmNob3IKKyAqCisgKiB1c2UgdGhpcyB0byBnZXQgcmlkIG9mIGFsbCBhbiBhbmNob3IncyB1cmJzCisgKi8KK3ZvaWQgdXNiX3NjdXR0bGVfYW5jaG9yZWRfdXJicyhzdHJ1Y3QgdXNiX2FuY2hvciAqYW5jaG9yKQoreworCXN0cnVjdCB1cmIgKnZpY3RpbTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFuY2hvci0+bG9jaywgZmxhZ3MpOworCXdoaWxlICghbGlzdF9lbXB0eSgmYW5jaG9yLT51cmJfbGlzdCkpIHsKKwkJdmljdGltID0gbGlzdF9lbnRyeShhbmNob3ItPnVyYl9saXN0LnByZXYsIHN0cnVjdCB1cmIsCisJCQkJICAgIGFuY2hvcl9saXN0KTsKKwkJdXNiX2dldF91cmIodmljdGltKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW5jaG9yLT5sb2NrLCBmbGFncyk7CisJCS8qIHRoaXMgbWF5IGZyZWUgdGhlIFVSQiAqLworCQl1c2JfdW5hbmNob3JfdXJiKHZpY3RpbSk7CisJCXVzYl9wdXRfdXJiKHZpY3RpbSk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZhbmNob3ItPmxvY2ssIGZsYWdzKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW5jaG9yLT5sb2NrLCBmbGFncyk7Cit9CisKK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl9zY3V0dGxlX2FuY2hvcmVkX3VyYnMpOworCisvKioKKyAqIHVzYl9hbmNob3JfZW1wdHkgLSBpcyBhbiBhbmNob3IgZW1wdHkKKyAqIEBhbmNob3I6IHRoZSBhbmNob3IgeW91IHdhbnQgdG8gcXVlcnkKKyAqCisgKiByZXR1cm5zIDEgaWYgdGhlIGFuY2hvciBoYXMgbm8gdXJicyBhc3NvY2lhdGVkIHdpdGggaXQKKyAqLworaW50IHVzYl9hbmNob3JfZW1wdHkoc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcikKK3sKKwlyZXR1cm4gbGlzdF9lbXB0eSgmYW5jaG9yLT51cmJfbGlzdCk7Cit9CisKK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl9hbmNob3JfZW1wdHkpOworCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnCmluZGV4IGFjYzk1YjIuLmRkNGNkNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnCkBAIC00NSw3ICs0NSw3IEBACiAKIGNvbmZpZyBVU0JfR0FER0VUX0RFQlVHCiAJYm9vbGVhbiAiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVCkiCi0JZGVwZW5kcyBvbiBVU0JfR0FER0VUICYmIERFQlVHX0tFUk5FTAorCWRlcGVuZHMgb24gREVCVUdfS0VSTkVMCiAJaGVscAogCSAgIE1hbnkgY29udHJvbGxlciBhbmQgZ2FkZ2V0IGRyaXZlcnMgd2lsbCBwcmludCBzb21lIGRlYnVnZ2luZwogCSAgIG1lc3NhZ2VzIGlmIHlvdSB1c2UgdGhpcyBvcHRpb24gdG8gYXNrIGZvciB0aG9zZSBtZXNzYWdlcy4KQEAgLTU5LDcgKzU5LDcgQEAKIAogY29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVMKIAlib29sZWFuICJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKSIKLQlkZXBlbmRzIG9uIFVTQl9HQURHRVQgJiYgUFJPQ19GUworCWRlcGVuZHMgb24gUFJPQ19GUwogCWhlbHAKIAkgICBTb21lIG9mIHRoZSBkcml2ZXJzIGluIHRoZSAiZ2FkZ2V0IiBmcmFtZXdvcmsgY2FuIGV4cG9zZQogCSAgIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpbiBmaWxlcyBzdWNoIGFzIC9wcm9jL2RyaXZlci91ZGMKQEAgLTcwLDcgKzcwLDcgQEAKIAogY29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlMKIAlib29sZWFuICJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpIgotCWRlcGVuZHMgb24gVVNCX0dBREdFVCAmJiBERUJVR19GUworCWRlcGVuZHMgb24gREVCVUdfRlMKIAloZWxwCiAJICAgU29tZSBvZiB0aGUgZHJpdmVycyBpbiB0aGUgImdhZGdldCIgZnJhbWV3b3JrIGNhbiBleHBvc2UKIAkgICBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gZmlsZXMgdW5kZXIgL3N5cy9rZXJuZWwvZGVidWcvLgpAQCAtNzksMTIgKzc5LDM2IEBACiAJICAgRW5hYmxlIHRoZXNlIGZpbGVzIGJ5IGNob29zaW5nICJZIiBoZXJlLiAgSWYgaW4gZG91YnQsIG9yCiAJICAgdG8gY29uc2VydmUga2VybmVsIG1lbW9yeSwgc2F5ICJOIi4KIAorY29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXCisJaW50ICJNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKSIKKwlyYW5nZSAyIDUwMAorCWRlZmF1bHQgMgorCWhlbHAKKwkgICBTb21lIGRldmljZXMgbmVlZCB0byBkcmF3IHBvd2VyIGZyb20gVVNCIHdoZW4gdGhleSBhcmUKKwkgICBjb25maWd1cmVkLCBwZXJoYXBzIHRvIG9wZXJhdGUgY2lyY3VpdHJ5IG9yIHRvIHJlY2hhcmdlCisJICAgYmF0dGVyaWVzLiAgVGhpcyBpcyBpbiBhZGRpdGlvbiB0byBhbnkgbG9jYWwgcG93ZXIgc3VwcGx5LAorCSAgIHN1Y2ggYXMgYW4gQUMgYWRhcHRlciBvciBiYXR0ZXJpZXMuCisKKwkgICBFbnRlciB0aGUgbWF4aW11bSBwb3dlciB5b3VyIGRldmljZSBkcmF3cyB0aHJvdWdoIFVTQiwgaW4KKwkgICBtaWxsaUFtcGVyZXMuICBUaGUgcGVybWl0dGVkIHJhbmdlIG9mIHZhbHVlcyBpcyAyIC0gNTAwIG1BOworCSAgIDAgbUEgd291bGQgYmUgbGVnYWwsIGJ1dCBjYW4gbWFrZSBzb21lIGhvc3RzIG1pc2JlaGF2ZS4KKworCSAgIFRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGV4Y2VwdCBmb3Igc3lzdGVtLXNwZWNpZmljIGdhZGdldAorCSAgIGRyaXZlcnMgdGhhdCBoYXZlIG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24uCisKIGNvbmZpZwlVU0JfR0FER0VUX1NFTEVDVEVECiAJYm9vbGVhbgogCiAjCiAjIFVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXIgU3VwcG9ydAogIworIyBUaGUgb3JkZXIgaGVyZSBpcyBhbHBoYWJldGljYWwsIGV4Y2VwdCB0aGF0IGludGVncmF0ZWQgY29udHJvbGxlcnMgZ28KKyMgYmVmb3JlIGRpc2NyZXRlIG9uZXMgc28gdGhleSB3aWxsIGJlIHRoZSBpbml0aWFsL2RlZmF1bHQgdmFsdWU6CisjICAgLSBpbnRlZ3JhdGVkL1NPQyBjb250cm9sbGVycyBmaXJzdAorIyAgIC0gbGljZW5zZWQgSVAgdXNlZCBpbiBib3RoIFNPQyBhbmQgZGlzY3JldGUgdmVyc2lvbnMKKyMgICAtIGRpc2NyZXRlIG9uZXMgKGluY2x1ZGluZyBhbGwgUENJLW9ubHkgY29udHJvbGxlcnMpCisjICAgLSBkZWJ1Zy9kdW1teSBnYWRnZXQraGNkIGlzIGxhc3QuCisjCiBjaG9pY2UKIAlwcm9tcHQgIlVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXIiCiAJZGVwZW5kcyBvbiBVU0JfR0FER0VUCkBAIC05NCwyNiArMTE4LDI3IEBACiAJICAgTWFueSBjb250cm9sbGVyIGRyaXZlcnMgYXJlIHBsYXRmb3JtLXNwZWNpZmljOyB0aGVzZQogCSAgIG9mdGVuIG5lZWQgYm9hcmQtc3BlY2lmaWMgaG9va3MuCiAKLWNvbmZpZyBVU0JfR0FER0VUX0FNRDU1MzZVREMKLQlib29sZWFuICJBTUQ1NTM2IFVEQyIKLQlkZXBlbmRzIG9uIFBDSQotCXNlbGVjdCBVU0JfR0FER0VUX0RVQUxTUEVFRAorIworIyBJbnRlZ3JhdGVkIGNvbnRyb2xsZXJzCisjCisKK2NvbmZpZyBVU0JfR0FER0VUX0FUOTEKKwlib29sZWFuICJBdG1lbCBBVDkxIFVTQiBEZXZpY2UgUG9ydCIKKwlkZXBlbmRzIG9uIEFSQ0hfQVQ5MSAmJiAhQVJDSF9BVDkxU0FNOVJMICYmICFBUkNIX0FUOTFDQVA5CisJc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKIAloZWxwCi0JICAgVGhlIEFNRDU1MzYgVURDIGlzIHBhcnQgb2YgdGhlIEFNRCBHZW9kZSBDUzU1MzYsIGFuIHg4NiBzb3V0aGJyaWRnZS4KLQkgICBJdCBpcyBhIFVTQiBIaWdoc3BlZWQgRE1BIGNhcGFibGUgVVNCIGRldmljZSBjb250cm9sbGVyLiBCZXNpZGUgZXAwCi0JICAgaXQgcHJvdmlkZXMgNCBJTiBhbmQgNCBPVVQgZW5kcG9pbnRzIChidWxrIG9yIGludGVycnVwdCB0eXBlKS4KLQkgICBUaGUgVURDIHBvcnQgc3VwcG9ydHMgT1RHIG9wZXJhdGlvbiwgYW5kIG1heSBiZSB1c2VkIGFzIGEgaG9zdCBwb3J0Ci0JICAgaWYgaXQncyBub3QgYmVpbmcgdXNlZCB0byBpbXBsZW1lbnQgcGVyaXBoZXJhbCBvciBPVEcgcm9sZXMuCisJICAgTWFueSBBdG1lbCBBVDkxIHByb2Nlc3NvcnMgKHN1Y2ggYXMgdGhlIEFUOTFSTTIwMDApIGhhdmUgYQorCSAgIGZ1bGwgc3BlZWQgVVNCIERldmljZSBQb3J0IHdpdGggc3VwcG9ydCBmb3IgZml2ZSBjb25maWd1cmFibGUKKwkgICBlbmRwb2ludHMgKHBsdXMgZW5kcG9pbnQgemVybykuCiAKIAkgICBTYXkgInkiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciAibSIgdG8gYnVpbGQgYQotCSAgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkICJhbWQ1NTM2dWRjIiBhbmQgZm9yY2UgYWxsCisJICAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgImF0OTFfdWRjIiBhbmQgZm9yY2UgYWxsCiAJICAgZ2FkZ2V0IGRyaXZlcnMgdG8gYWxzbyBiZSBkeW5hbWljYWxseSBsaW5rZWQuCiAKLWNvbmZpZyBVU0JfQU1ENTUzNlVEQworY29uZmlnIFVTQl9BVDkxCiAJdHJpc3RhdGUKLQlkZXBlbmRzIG9uIFVTQl9HQURHRVRfQU1ENTUzNlVEQworCWRlcGVuZHMgb24gVVNCX0dBREdFVF9BVDkxCiAJZGVmYXVsdCBVU0JfR0FER0VUCi0Jc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKIAogY29uZmlnIFVTQl9HQURHRVRfQVRNRUxfVVNCQQogCWJvb2xlYW4gIkF0bWVsIFVTQkEiCkBAIC0xNTAsMjggKzE3NSw1MCBAQAogCWRlZmF1bHQgVVNCX0dBREdFVAogCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECiAKLWNvbmZpZyBVU0JfR0FER0VUX05FVDIyODAKLQlib29sZWFuICJOZXRDaGlwIDIyOHgiCi0JZGVwZW5kcyBvbiBQQ0kKLQlzZWxlY3QgVVNCX0dBREdFVF9EVUFMU1BFRUQKK2NvbmZpZyBVU0JfR0FER0VUX0xIN0E0MFgKKwlib29sZWFuICJMSDdBNDBYIgorCWRlcGVuZHMgb24gQVJDSF9MSDdBNDBYCiAJaGVscAotCSAgIE5ldENoaXAgMjI4MCAvIDIyODIgaXMgYSBQQ0kgYmFzZWQgVVNCIHBlcmlwaGVyYWwgY29udHJvbGxlciB3aGljaAotCSAgIHN1cHBvcnRzIGJvdGggZnVsbCBhbmQgaGlnaCBzcGVlZCBVU0IgMi4wIGRhdGEgdHJhbnNmZXJzLiAgCi0JICAgCi0JICAgSXQgaGFzIHNpeCBjb25maWd1cmFibGUgZW5kcG9pbnRzLCBhcyB3ZWxsIGFzIGVuZHBvaW50IHplcm8KLQkgICAoZm9yIGNvbnRyb2wgdHJhbnNmZXJzKSBhbmQgc2V2ZXJhbCBlbmRwb2ludHMgd2l0aCBkZWRpY2F0ZWQKLQkgICBmdW5jdGlvbnMuCisJICAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgVVNCIERldmljZSBDb250cm9sbGVyIGRyaXZlciBmb3IgTEg3QTQweAogCi0JICAgU2F5ICJ5IiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgIm0iIHRvIGJ1aWxkIGEKLQkgICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCAibmV0MjI4MCIgYW5kIGZvcmNlIGFsbAotCSAgIGdhZGdldCBkcml2ZXJzIHRvIGFsc28gYmUgZHluYW1pY2FsbHkgbGlua2VkLgotCi1jb25maWcgVVNCX05FVDIyODAKK2NvbmZpZyBVU0JfTEg3QTQwWAogCXRyaXN0YXRlCi0JZGVwZW5kcyBvbiBVU0JfR0FER0VUX05FVDIyODAKKwlkZXBlbmRzIG9uIFVTQl9HQURHRVRfTEg3QTQwWAogCWRlZmF1bHQgVVNCX0dBREdFVAogCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECiAKK2NvbmZpZyBVU0JfR0FER0VUX09NQVAKKwlib29sZWFuICJPTUFQIFVTQiBEZXZpY2UgQ29udHJvbGxlciIKKwlkZXBlbmRzIG9uIEFSQ0hfT01BUAorCXNlbGVjdCBJU1AxMzAxX09NQVAgaWYgTUFDSF9PTUFQX0gyIHx8IE1BQ0hfT01BUF9IMyB8fCBNQUNIX09NQVBfSDRfT1RHCisJaGVscAorCSAgIE1hbnkgVGV4YXMgSW5zdHJ1bWVudHMgT01BUCBwcm9jZXNzb3JzIGhhdmUgZmxleGlibGUgZnVsbAorCSAgIHNwZWVkIFVTQiBkZXZpY2UgY29udHJvbGxlcnMsIHdpdGggc3VwcG9ydCBmb3IgdXAgdG8gMzAKKwkgICBlbmRwb2ludHMgKHBsdXMgZW5kcG9pbnQgemVybykuICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUKKwkgICBjb250cm9sbGVyIGluIHRoZSBPTUFQIDE2MTEsIGFuZCBzaG91bGQgd29yayB3aXRoIGNvbnRyb2xsZXJzCisJICAgaW4gb3RoZXIgT01BUCBwcm9jZXNzb3JzIHRvbywgZ2l2ZW4gbWlub3IgdHdlYWtzLgorCisJICAgU2F5ICJ5IiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgIm0iIHRvIGJ1aWxkIGEKKwkgICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCAib21hcF91ZGMiIGFuZCBmb3JjZSBhbGwKKwkgICBnYWRnZXQgZHJpdmVycyB0byBhbHNvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZC4KKworY29uZmlnIFVTQl9PTUFQCisJdHJpc3RhdGUKKwlkZXBlbmRzIG9uIFVTQl9HQURHRVRfT01BUAorCWRlZmF1bHQgVVNCX0dBREdFVAorCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECisKK2NvbmZpZyBVU0JfT1RHCisJYm9vbGVhbiAiT1RHIFN1cHBvcnQiCisJZGVwZW5kcyBvbiBVU0JfR0FER0VUX09NQVAgJiYgQVJDSF9PTUFQX09URyAmJiBVU0JfT0hDSV9IQ0QKKwloZWxwCisJICAgVGhlIG1vc3Qgbm90YWJsZSBmZWF0dXJlIG9mIFVTQiBPVEcgaXMgc3VwcG9ydCBmb3IgYQorCSAgICJEdWFsLVJvbGUiIGRldmljZSwgd2hpY2ggY2FuIGFjdCBhcyBlaXRoZXIgYSBkZXZpY2UKKwkgICBvciBhIGhvc3QuICBUaGUgaW5pdGlhbCByb2xlIGNob2ljZSBjYW4gYmUgY2hhbmdlZAorCSAgIGxhdGVyLCB3aGVuIHR3byBkdWFsLXJvbGUgZGV2aWNlcyB0YWxrIHRvIGVhY2ggb3RoZXIuCisKKwkgICBTZWxlY3QgdGhpcyBvbmx5IGlmIHlvdXIgT01BUCBib2FyZCBoYXMgYSBNaW5pLUFCIGNvbm5lY3Rvci4KKwogY29uZmlnIFVTQl9HQURHRVRfUFhBMjVYCiAJYm9vbGVhbiAiUFhBIDI1eCBvciBJWFAgNHh4IgogCWRlcGVuZHMgb24gKEFSQ0hfUFhBICYmIFBYQTI1eCkgfHwgQVJDSF9JWFA0WFgKQEAgLTIwMyw2ICsyNTAsNjEgQEAKIAlkZWZhdWx0IHkgaWYgVVNCX0VUSAogCWRlZmF1bHQgeSBpZiBVU0JfR19TRVJJQUwKIAorY29uZmlnIFVTQl9HQURHRVRfUFhBMjdYCisJYm9vbGVhbiAiUFhBIDI3eCIKKwlkZXBlbmRzIG9uIEFSQ0hfUFhBICYmIFBYQTI3eAorCWhlbHAKKwkgICBJbnRlbCdzIFBYQSAyN3ggc2VyaWVzIFhTY2FsZSBBUk0gdjVURSBwcm9jZXNzb3JzIGluY2x1ZGUKKwkgICBhbiBpbnRlZ3JhdGVkIGZ1bGwgc3BlZWQgVVNCIDEuMSBkZXZpY2UgY29udHJvbGxlci4KKworCSAgIEl0IGhhcyB1cCB0byAyMyBlbmRwb2ludHMsIGFzIHdlbGwgYXMgZW5kcG9pbnQgemVybyAoZm9yCisJICAgY29udHJvbCB0cmFuc2ZlcnMpLgorCisJICAgU2F5ICJ5IiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgIm0iIHRvIGJ1aWxkIGEKKwkgICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCAicHhhMjd4X3VkYyIgYW5kIGZvcmNlIGFsbAorCSAgIGdhZGdldCBkcml2ZXJzIHRvIGFsc28gYmUgZHluYW1pY2FsbHkgbGlua2VkLgorCitjb25maWcgVVNCX1BYQTI3WAorCXRyaXN0YXRlCisJZGVwZW5kcyBvbiBVU0JfR0FER0VUX1BYQTI3WAorCWRlZmF1bHQgVVNCX0dBREdFVAorCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECisKK2NvbmZpZyBVU0JfR0FER0VUX1MzQzI0MTAKKwlib29sZWFuICJTM0MyNDEwIFVTQiBEZXZpY2UgQ29udHJvbGxlciIKKwlkZXBlbmRzIG9uIEFSQ0hfUzNDMjQxMAorCWhlbHAKKwkgIFNhbXN1bmcncyBTM0MyNDEwIGlzIGFuIEFSTS00IHByb2Nlc3NvciB3aXRoIGFuIGludGVncmF0ZWQKKwkgIGZ1bGwgc3BlZWQgVVNCIDEuMSBkZXZpY2UgY29udHJvbGxlci4gIEl0IGhhcyA0IGNvbmZpZ3VyYWJsZQorCSAgZW5kcG9pbnRzLCBhcyB3ZWxsIGFzIGVuZHBvaW50IHplcm8gKGZvciBjb250cm9sIHRyYW5zZmVycykuCisKKwkgIFRoaXMgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCBvbiB0aGUgUzNDMjQxMCwgUzNDMjQxMiwgYW5kCisJICBTM0MyNDQwIHByb2Nlc3NvcnMuCisKK2NvbmZpZyBVU0JfUzNDMjQxMAorCXRyaXN0YXRlCisJZGVwZW5kcyBvbiBVU0JfR0FER0VUX1MzQzI0MTAKKwlkZWZhdWx0IFVTQl9HQURHRVQKKwlzZWxlY3QgVVNCX0dBREdFVF9TRUxFQ1RFRAorCitjb25maWcgVVNCX1MzQzI0MTBfREVCVUcKKwlib29sZWFuICJTM0MyNDEwIHVkYyBkZWJ1ZyBtZXNzYWdlcyIKKwlkZXBlbmRzIG9uIFVTQl9HQURHRVRfUzNDMjQxMAorCisjCisjIENvbnRyb2xsZXJzIGF2YWlsYWJsZSBpbiBib3RoIGludGVncmF0ZWQgYW5kIGRpc2NyZXRlIHZlcnNpb25zCisjCisKKyMgbXVzYiBidWlsZHMgaW4gLi4vbXVzYiBhbG9uZyB3aXRoIGhvc3Qgc3VwcG9ydAorY29uZmlnIFVTQl9HQURHRVRfTVVTQl9IRFJDCisJYm9vbGVhbiAiSW52ZW50cmEgSERSQyBVU0IgUGVyaXBoZXJhbCAoVEksIC4uLikiCisJZGVwZW5kcyBvbiBVU0JfTVVTQl9IRFJDICYmIChVU0JfTVVTQl9QRVJJUEhFUkFMIHx8IFVTQl9NVVNCX09URykKKwlzZWxlY3QgVVNCX0dBREdFVF9EVUFMU1BFRUQKKwlzZWxlY3QgVVNCX0dBREdFVF9TRUxFQ1RFRAorCWhlbHAKKwkgIFRoaXMgT1RHLWNhcGFibGUgc2lsaWNvbiBJUCBpcyB1c2VkIGluIGR1YWwgZGVzaWducyBpbmNsdWRpbmcKKwkgIHRoZSBUSSBEYVZpbmNpLCBPTUFQIDI0M3gsIE9NQVAgMzQzeCwgYW5kIFRVU0IgNjAxMC4KKwogY29uZmlnIFVTQl9HQURHRVRfTTY2NTkyCiAJYm9vbGVhbiAiUmVuZXNhcyBNNjY1OTIgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlciIKIAlzZWxlY3QgVVNCX0dBREdFVF9EVUFMU1BFRUQKQEAgLTIzMSwyMyArMzMzLDY5IEBACiAJICAgSG93ZXZlciwgdGhpcyBwcm9ibGVtIGlzIGltcHJvdmVkIGlmIGNoYW5nZSBhIHZhbHVlIG9mCiAJICAgTkVUX0lQX0FMSUdOIHRvIDQuCiAKLWNvbmZpZyBVU0JfR0FER0VUX1BYQTI3WAotCWJvb2xlYW4gIlBYQSAyN3giCi0JZGVwZW5kcyBvbiBBUkNIX1BYQSAmJiBQWEEyN3gKLQloZWxwCi0JICAgSW50ZWwncyBQWEEgMjd4IHNlcmllcyBYU2NhbGUgQVJNIHY1VEUgcHJvY2Vzc29ycyBpbmNsdWRlCi0JICAgYW4gaW50ZWdyYXRlZCBmdWxsIHNwZWVkIFVTQiAxLjEgZGV2aWNlIGNvbnRyb2xsZXIuCisjCisjIENvbnRyb2xsZXJzIGF2YWlsYWJsZSBvbmx5IGluIGRpc2NyZXRlIGZvcm0gKGFuZCBhbGwgUENJIGNvbnRyb2xsZXJzKQorIwogCi0JICAgSXQgaGFzIHVwIHRvIDIzIGVuZHBvaW50cywgYXMgd2VsbCBhcyBlbmRwb2ludCB6ZXJvIChmb3IKLQkgICBjb250cm9sIHRyYW5zZmVycykuCitjb25maWcgVVNCX0dBREdFVF9BTUQ1NTM2VURDCisJYm9vbGVhbiAiQU1ENTUzNiBVREMiCisJZGVwZW5kcyBvbiBQQ0kKKwlzZWxlY3QgVVNCX0dBREdFVF9EVUFMU1BFRUQKKwloZWxwCisJICAgVGhlIEFNRDU1MzYgVURDIGlzIHBhcnQgb2YgdGhlIEFNRCBHZW9kZSBDUzU1MzYsIGFuIHg4NiBzb3V0aGJyaWRnZS4KKwkgICBJdCBpcyBhIFVTQiBIaWdoc3BlZWQgRE1BIGNhcGFibGUgVVNCIGRldmljZSBjb250cm9sbGVyLiBCZXNpZGUgZXAwCisJICAgaXQgcHJvdmlkZXMgNCBJTiBhbmQgNCBPVVQgZW5kcG9pbnRzIChidWxrIG9yIGludGVycnVwdCB0eXBlKS4KKwkgICBUaGUgVURDIHBvcnQgc3VwcG9ydHMgT1RHIG9wZXJhdGlvbiwgYW5kIG1heSBiZSB1c2VkIGFzIGEgaG9zdCBwb3J0CisJICAgaWYgaXQncyBub3QgYmVpbmcgdXNlZCB0byBpbXBsZW1lbnQgcGVyaXBoZXJhbCBvciBPVEcgcm9sZXMuCiAKIAkgICBTYXkgInkiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciAibSIgdG8gYnVpbGQgYQotCSAgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkICJweGEyN3hfdWRjIiBhbmQgZm9yY2UgYWxsCisJICAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgImFtZDU1MzZ1ZGMiIGFuZCBmb3JjZSBhbGwKIAkgICBnYWRnZXQgZHJpdmVycyB0byBhbHNvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZC4KIAotY29uZmlnIFVTQl9QWEEyN1gKK2NvbmZpZyBVU0JfQU1ENTUzNlVEQwogCXRyaXN0YXRlCi0JZGVwZW5kcyBvbiBVU0JfR0FER0VUX1BYQTI3WAorCWRlcGVuZHMgb24gVVNCX0dBREdFVF9BTUQ1NTM2VURDCisJZGVmYXVsdCBVU0JfR0FER0VUCisJc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKKworY29uZmlnIFVTQl9HQURHRVRfRlNMX1FFCisJYm9vbGVhbiAiRnJlZXNjYWxlIFFFL0NQTSBVU0IgRGV2aWNlIENvbnRyb2xsZXIiCisJZGVwZW5kcyBvbiBGU0xfU09DICYmIChRVUlDQ19FTkdJTkUgfHwgQ1BNKQorCWhlbHAKKwkgICBTb21lIG9mIEZyZWVzY2FsZSBQb3dlclBDIHByb2Nlc3NvcnMgaGF2ZSBhIEZ1bGwgU3BlZWQKKwkgICBRRS9DUE0yIFVTQiBjb250cm9sbGVyLCB3aGljaCBzdXBwb3J0IGRldmljZSBtb2RlIHdpdGggNAorCSAgIHByb2dyYW1tYWJsZSBlbmRwb2ludHMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZQorCSAgIGNvbnRyb2xsZXIgaW4gdGhlIE1QQzgzNjAgYW5kIE1QQzgyNzIsIGFuZCBzaG91bGQgd29yayB3aXRoCisJICAgY29udHJvbGxlcnMgaGF2aW5nIFFFIG9yIENQTTIsIGdpdmVuIG1pbm9yIHR3ZWFrcy4KKworCSAgIFNldCBDT05GSUdfVVNCX0dBREdFVCB0byAibSIgdG8gYnVpbGQgdGhpcyBkcml2ZXIgYXMgYQorCSAgIGR5bm1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgImZzbF9xZV91ZGMiLgorCitjb25maWcgVVNCX0ZTTF9RRQorCXRyaXN0YXRlCisJZGVwZW5kcyBvbiBVU0JfR0FER0VUX0ZTTF9RRQorCWRlZmF1bHQgVVNCX0dBREdFVAorCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECisKK2NvbmZpZyBVU0JfR0FER0VUX05FVDIyODAKKwlib29sZWFuICJOZXRDaGlwIDIyOHgiCisJZGVwZW5kcyBvbiBQQ0kKKwlzZWxlY3QgVVNCX0dBREdFVF9EVUFMU1BFRUQKKwloZWxwCisJICAgTmV0Q2hpcCAyMjgwIC8gMjI4MiBpcyBhIFBDSSBiYXNlZCBVU0IgcGVyaXBoZXJhbCBjb250cm9sbGVyIHdoaWNoCisJICAgc3VwcG9ydHMgYm90aCBmdWxsIGFuZCBoaWdoIHNwZWVkIFVTQiAyLjAgZGF0YSB0cmFuc2ZlcnMuCisKKwkgICBJdCBoYXMgc2l4IGNvbmZpZ3VyYWJsZSBlbmRwb2ludHMsIGFzIHdlbGwgYXMgZW5kcG9pbnQgemVybworCSAgIChmb3IgY29udHJvbCB0cmFuc2ZlcnMpIGFuZCBzZXZlcmFsIGVuZHBvaW50cyB3aXRoIGRlZGljYXRlZAorCSAgIGZ1bmN0aW9ucy4KKworCSAgIFNheSAieSIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yICJtIiB0byBidWlsZCBhCisJICAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgIm5ldDIyODAiIGFuZCBmb3JjZSBhbGwKKwkgICBnYWRnZXQgZHJpdmVycyB0byBhbHNvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZC4KKworY29uZmlnIFVTQl9ORVQyMjgwCisJdHJpc3RhdGUKKwlkZXBlbmRzIG9uIFVTQl9HQURHRVRfTkVUMjI4MAogCWRlZmF1bHQgVVNCX0dBREdFVAogCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECiAKQEAgLTI1Nyw3ICs0MDUsNyBAQAogCWhlbHAKIAkgICBUaGUgVG9zaGliYSBUQzg2QzAwMSBpcyBhIFBDSSBkZXZpY2Ugd2hpY2ggaW5jbHVkZXMgY29udHJvbGxlcnMKIAkgICBmb3IgZnVsbCBzcGVlZCBVU0IgZGV2aWNlcywgSURFLCBJMkMsIFNJTywgcGx1cyBhIFVTQiBob3N0IChPSENJKS4KLQkgICAKKwogCSAgIFRoZSBkZXZpY2UgY29udHJvbGxlciBoYXMgdGhyZWUgY29uZmlndXJhYmxlIChidWxrIG9yIGludGVycnVwdCkKIAkgICBlbmRwb2ludHMsIHBsdXMgZW5kcG9pbnQgemVybyAoZm9yIGNvbnRyb2wgdHJhbnNmZXJzKS4KIApAQCAtMjcyLDk4ICs0MjAsOSBAQAogCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECiAKIAotY29uZmlnIFVTQl9HQURHRVRfTEg3QTQwWAotCWJvb2xlYW4gIkxIN0E0MFgiCi0JZGVwZW5kcyBvbiBBUkNIX0xIN0E0MFgKLQloZWxwCi0gICAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgVVNCIERldmljZSBDb250cm9sbGVyIGRyaXZlciBmb3IgTEg3QTQweAotCi1jb25maWcgVVNCX0xIN0E0MFgKLQl0cmlzdGF0ZQotCWRlcGVuZHMgb24gVVNCX0dBREdFVF9MSDdBNDBYCi0JZGVmYXVsdCBVU0JfR0FER0VUCi0Jc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKLQotIyBidWlsdCBpbiAuLi9tdXNiIGFsb25nIHdpdGggaG9zdCBzdXBwb3J0Ci1jb25maWcgVVNCX0dBREdFVF9NVVNCX0hEUkMKLQlib29sZWFuICJJbnZlbnRyYSBIRFJDIFVTQiBQZXJpcGhlcmFsIChUSSwgLi4uKSIKLQlkZXBlbmRzIG9uIFVTQl9NVVNCX0hEUkMgJiYgKFVTQl9NVVNCX1BFUklQSEVSQUwgfHwgVVNCX01VU0JfT1RHKQotCXNlbGVjdCBVU0JfR0FER0VUX0RVQUxTUEVFRAotCXNlbGVjdCBVU0JfR0FER0VUX1NFTEVDVEVECi0JaGVscAotCSAgVGhpcyBPVEctY2FwYWJsZSBzaWxpY29uIElQIGlzIHVzZWQgaW4gZHVhbCBkZXNpZ25zIGluY2x1ZGluZwotCSAgdGhlIFRJIERhVmluY2ksIE9NQVAgMjQzeCwgT01BUCAzNDN4LCBhbmQgVFVTQiA2MDEwLgotCi1jb25maWcgVVNCX0dBREdFVF9PTUFQCi0JYm9vbGVhbiAiT01BUCBVU0IgRGV2aWNlIENvbnRyb2xsZXIiCi0JZGVwZW5kcyBvbiBBUkNIX09NQVAKLQlzZWxlY3QgSVNQMTMwMV9PTUFQIGlmIE1BQ0hfT01BUF9IMiB8fCBNQUNIX09NQVBfSDMKLQloZWxwCi0JICAgTWFueSBUZXhhcyBJbnN0cnVtZW50cyBPTUFQIHByb2Nlc3NvcnMgaGF2ZSBmbGV4aWJsZSBmdWxsCi0JICAgc3BlZWQgVVNCIGRldmljZSBjb250cm9sbGVycywgd2l0aCBzdXBwb3J0IGZvciB1cCB0byAzMAotCSAgIGVuZHBvaW50cyAocGx1cyBlbmRwb2ludCB6ZXJvKS4gIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZQotCSAgIGNvbnRyb2xsZXIgaW4gdGhlIE9NQVAgMTYxMSwgYW5kIHNob3VsZCB3b3JrIHdpdGggY29udHJvbGxlcnMKLQkgICBpbiBvdGhlciBPTUFQIHByb2Nlc3NvcnMgdG9vLCBnaXZlbiBtaW5vciB0d2Vha3MuCi0KLQkgICBTYXkgInkiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciAibSIgdG8gYnVpbGQgYQotCSAgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkICJvbWFwX3VkYyIgYW5kIGZvcmNlIGFsbAotCSAgIGdhZGdldCBkcml2ZXJzIHRvIGFsc28gYmUgZHluYW1pY2FsbHkgbGlua2VkLgotCi1jb25maWcgVVNCX09NQVAKLQl0cmlzdGF0ZQotCWRlcGVuZHMgb24gVVNCX0dBREdFVF9PTUFQCi0JZGVmYXVsdCBVU0JfR0FER0VUCi0Jc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKLQotY29uZmlnIFVTQl9PVEcKLQlib29sZWFuICJPVEcgU3VwcG9ydCIKLQlkZXBlbmRzIG9uIFVTQl9HQURHRVRfT01BUCAmJiBBUkNIX09NQVBfT1RHICYmIFVTQl9PSENJX0hDRAotCWhlbHAKLQkgICBUaGUgbW9zdCBub3RhYmxlIGZlYXR1cmUgb2YgVVNCIE9URyBpcyBzdXBwb3J0IGZvciBhCi0JICAgIkR1YWwtUm9sZSIgZGV2aWNlLCB3aGljaCBjYW4gYWN0IGFzIGVpdGhlciBhIGRldmljZQotCSAgIG9yIGEgaG9zdC4gIFRoZSBpbml0aWFsIHJvbGUgY2hvaWNlIGNhbiBiZSBjaGFuZ2VkCi0JICAgbGF0ZXIsIHdoZW4gdHdvIGR1YWwtcm9sZSBkZXZpY2VzIHRhbGsgdG8gZWFjaCBvdGhlci4KLQotCSAgIFNlbGVjdCB0aGlzIG9ubHkgaWYgeW91ciBPTUFQIGJvYXJkIGhhcyBhIE1pbmktQUIgY29ubmVjdG9yLgotCi1jb25maWcgVVNCX0dBREdFVF9TM0MyNDEwCi0JYm9vbGVhbiAiUzNDMjQxMCBVU0IgRGV2aWNlIENvbnRyb2xsZXIiCi0JZGVwZW5kcyBvbiBBUkNIX1MzQzI0MTAKLQloZWxwCi0JICBTYW1zdW5nJ3MgUzNDMjQxMCBpcyBhbiBBUk0tNCBwcm9jZXNzb3Igd2l0aCBhbiBpbnRlZ3JhdGVkCi0JICBmdWxsIHNwZWVkIFVTQiAxLjEgZGV2aWNlIGNvbnRyb2xsZXIuICBJdCBoYXMgNCBjb25maWd1cmFibGUKLQkgIGVuZHBvaW50cywgYXMgd2VsbCBhcyBlbmRwb2ludCB6ZXJvIChmb3IgY29udHJvbCB0cmFuc2ZlcnMpLgotCi0JICBUaGlzIGRyaXZlciBoYXMgYmVlbiB0ZXN0ZWQgb24gdGhlIFMzQzI0MTAsIFMzQzI0MTIsIGFuZAotCSAgUzNDMjQ0MCBwcm9jZXNzb3JzLgotCi1jb25maWcgVVNCX1MzQzI0MTAKLQl0cmlzdGF0ZQotCWRlcGVuZHMgb24gVVNCX0dBREdFVF9TM0MyNDEwCi0JZGVmYXVsdCBVU0JfR0FER0VUCi0Jc2VsZWN0IFVTQl9HQURHRVRfU0VMRUNURUQKLQotY29uZmlnIFVTQl9TM0MyNDEwX0RFQlVHCi0JYm9vbGVhbiAiUzNDMjQxMCB1ZGMgZGVidWcgbWVzc2FnZXMiCi0JZGVwZW5kcyBvbiBVU0JfR0FER0VUX1MzQzI0MTAKLQotY29uZmlnIFVTQl9HQURHRVRfQVQ5MQotCWJvb2xlYW4gIkFUOTEgVVNCIERldmljZSBQb3J0IgotCWRlcGVuZHMgb24gQVJDSF9BVDkxICYmICFBUkNIX0FUOTFTQU05UkwgJiYgIUFSQ0hfQVQ5MUNBUDkKLQlzZWxlY3QgVVNCX0dBREdFVF9TRUxFQ1RFRAotCWhlbHAKLQkgICBNYW55IEF0bWVsIEFUOTEgcHJvY2Vzc29ycyAoc3VjaCBhcyB0aGUgQVQ5MVJNMjAwMCkgaGF2ZSBhCi0JICAgZnVsbCBzcGVlZCBVU0IgRGV2aWNlIFBvcnQgd2l0aCBzdXBwb3J0IGZvciBmaXZlIGNvbmZpZ3VyYWJsZQotCSAgIGVuZHBvaW50cyAocGx1cyBlbmRwb2ludCB6ZXJvKS4KLQotCSAgIFNheSAieSIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yICJtIiB0byBidWlsZCBhCi0JICAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgImF0OTFfdWRjIiBhbmQgZm9yY2UgYWxsCi0JICAgZ2FkZ2V0IGRyaXZlcnMgdG8gYWxzbyBiZSBkeW5hbWljYWxseSBsaW5rZWQuCi0KLWNvbmZpZyBVU0JfQVQ5MQotCXRyaXN0YXRlCi0JZGVwZW5kcyBvbiBVU0JfR0FER0VUX0FUOTEKLQlkZWZhdWx0IFVTQl9HQURHRVQKKyMKKyMgTEFTVCAtLSBkdW1teS9lbXVsYXRlZCBjb250cm9sbGVyCisjCiAKIGNvbmZpZyBVU0JfR0FER0VUX0RVTU1ZX0hDRAogCWJvb2xlYW4gIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpIgpAQCAtNTUzLDE5ICs2MTIsMjMgQEAKIAkgIG5vcm1hbCBvcGVyYXRpb24uCiAKIGNvbmZpZyBVU0JfR19TRVJJQUwKLQl0cmlzdGF0ZSAiU2VyaWFsIEdhZGdldCAod2l0aCBDREMgQUNNIHN1cHBvcnQpIgorCXRyaXN0YXRlICJTZXJpYWwgR2FkZ2V0ICh3aXRoIENEQyBBQ00gYW5kIENEQyBPQkVYIHN1cHBvcnQpIgogCWhlbHAKIAkgIFRoZSBTZXJpYWwgR2FkZ2V0IHRhbGtzIHRvIHRoZSBMaW51eC1VU0IgZ2VuZXJpYyBzZXJpYWwgZHJpdmVyLgogCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBDREMtQUNNIG1vZHVsZSBvcHRpb24sIHdoaWNoIGNhbiBiZSB1c2VkCiAJICB0byBpbnRlcm9wZXJhdGUgd2l0aCBNUy1XaW5kb3dzIGhvc3RzIG9yIHdpdGggdGhlIExpbnV4LVVTQgogCSAgImNkYy1hY20iIGRyaXZlci4KIAorCSAgVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyBhIENEQy1PQkVYIG9wdGlvbi4gIFlvdSB3aWxsIG5lZWQgYQorCSAgdXNlciBzcGFjZSBPQkVYIHNlcnZlciB0YWxraW5nIHRvIC9kZXYvdHR5R1MqLCBzaW5jZSB0aGUga2VybmVsCisJICBpdHNlbGYgZG9lc24ndCBpbXBsZW1lbnQgdGhlIE9CRVggcHJvdG9jb2wuCisKIAkgIFNheSAieSIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yICJtIiB0byBidWlsZCBhCiAJICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCAiZ19zZXJpYWwiLgogCiAJICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9zZXJpYWwudHh0CiAJICB3aGljaCBpbmNsdWRlcyBpbnN0cnVjdGlvbnMgYW5kIGEgImRyaXZlciBpbmZvIGZpbGUiIG5lZWRlZCB0bwotCSAgbWFrZSBNUy1XaW5kb3dzIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4KKwkgIG1ha2UgTVMtV2luZG93cyB3b3JrIHdpdGggQ0RDIEFDTS4KIAogY29uZmlnIFVTQl9NSURJX0dBREdFVAogCXRyaXN0YXRlICJNSURJIEdhZGdldCAoRVhQRVJJTUVOVEFMKSIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZQppbmRleCAyMjY3ZmEwLi5iZDQwNDFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlCkBAIC0xOCw2ICsxOCw3IEBACiBvYmotJChDT05GSUdfVVNCX0FUTUVMX1VTQkEpCSs9IGF0bWVsX3VzYmFfdWRjLm8KIG9iai0kKENPTkZJR19VU0JfRlNMX1VTQjIpCSs9IGZzbF91c2IyX3VkYy5vCiBvYmotJChDT05GSUdfVVNCX002NjU5MikJKz0gbTY2NTkyLXVkYy5vCitvYmotJChDT05GSUdfVVNCX0ZTTF9RRSkJKz0gZnNsX3FlX3VkYy5vCiAKICMKICMgVVNCIGdhZGdldCBkcml2ZXJzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY2RjMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NkYzIuYwppbmRleCBhNzI0ZmMxLi41NDk1YjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvY2RjMi5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jZGMyLmMKQEAgLTE1NSw3ICsxNTUsNiBAQAogCS5iQ29uZmlndXJhdGlvblZhbHVlCT0gMSwKIAkvKiAuaUNvbmZpZ3VyYXRpb24gPSBEWU5BTUlDICovCiAJLmJtQXR0cmlidXRlcwkJPSBVU0JfQ09ORklHX0FUVF9TRUxGUE9XRVIsCi0JLmJNYXhQb3dlcgkJPSAxLAkvKiAyIG1BLCBtaW5pbWFsICovCiB9OwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jCmluZGV4IDg1Yzg3NmMuLmYyZGEwMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKQEAgLTEyOCw2ICsxMjgsNzAgQEAKIH0KIAogLyoqCisgKiB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZSAtIHByZXZlbnQgZnVuY3Rpb24gYW5kIGdhZGdldCBlbnVtZXJhdGlvbgorICogQGZ1bmN0aW9uOiB0aGUgZnVuY3Rpb24gdGhhdCBpc24ndCB5ZXQgcmVhZHkgdG8gcmVzcG9uZAorICoKKyAqIEJsb2NrcyByZXNwb25zZSBvZiB0aGUgZ2FkZ2V0IGRyaXZlciB0byBob3N0IGVudW1lcmF0aW9uIGJ5CisgKiBwcmV2ZW50aW5nIHRoZSBkYXRhIGxpbmUgcHVsbHVwIGZyb20gYmVpbmcgYWN0aXZhdGVkLiAgVGhpcyBpcworICogbm9ybWFsbHkgY2FsbGVkIGR1cmluZyBAYmluZCgpIHByb2Nlc3NpbmcgdG8gY2hhbmdlIGZyb20gdGhlCisgKiBpbml0aWFsICJyZWFkeSB0byByZXNwb25kIiBzdGF0ZSwgb3Igd2hlbiBhIHJlcXVpcmVkIHJlc291cmNlCisgKiBiZWNvbWVzIGF2YWlsYWJsZS4KKyAqCisgKiBGb3IgZXhhbXBsZSwgZHJpdmVycyB0aGF0IHNlcnZlIGFzIGEgcGFzc3Rocm91Z2ggdG8gYSB1c2Vyc3BhY2UKKyAqIGRhZW1vbiBjYW4gYmxvY2sgZW51bWVyYXRpb24gdW5sZXNzIHRoYXQgZGFlbW9uIChzdWNoIGFzIGFuIE9CRVgsCisgKiBNVFAsIG9yIHByaW50IHNlcnZlcikgaXMgcmVhZHkgdG8gaGFuZGxlIGhvc3QgcmVxdWVzdHMuCisgKgorICogTm90IGFsbCBzeXN0ZW1zIHN1cHBvcnQgc29mdHdhcmUgY29udHJvbCBvZiB0aGVpciBVU0IgcGVyaXBoZXJhbAorICogZGF0YSBwdWxsdXBzLgorICoKKyAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzLCBlbHNlIG5lZ2F0aXZlIGVycm5vLgorICovCitpbnQgdXNiX2Z1bmN0aW9uX2RlYWN0aXZhdGUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZnVuY3Rpb24pCit7CisJc3RydWN0IHVzYl9jb21wb3NpdGVfZGV2CSpjZGV2ID0gZnVuY3Rpb24tPmNvbmZpZy0+Y2RldjsKKwlpbnQJCQkJc3RhdHVzID0gMDsKKworCXNwaW5fbG9jaygmY2Rldi0+bG9jayk7CisKKwlpZiAoY2Rldi0+ZGVhY3RpdmF0aW9ucyA9PSAwKQorCQlzdGF0dXMgPSB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3QoY2Rldi0+Z2FkZ2V0KTsKKwlpZiAoc3RhdHVzID09IDApCisJCWNkZXYtPmRlYWN0aXZhdGlvbnMrKzsKKworCXNwaW5fdW5sb2NrKCZjZGV2LT5sb2NrKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIHVzYl9mdW5jdGlvbl9hY3RpdmF0ZSAtIGFsbG93IGZ1bmN0aW9uIGFuZCBnYWRnZXQgZW51bWVyYXRpb24KKyAqIEBmdW5jdGlvbjogZnVuY3Rpb24gb24gd2hpY2ggdXNiX2Z1bmN0aW9uX2FjdGl2YXRlKCkgd2FzIGNhbGxlZAorICoKKyAqIFJldmVyc2VzIGVmZmVjdCBvZiB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZSgpLiAgSWYgbm8gbW9yZSBmdW5jdGlvbnMKKyAqIGFyZSBkZWxheWluZyB0aGVpciBhY3RpdmF0aW9uLCB0aGUgZ2FkZ2V0IGRyaXZlciB3aWxsIHJlc3BvbmQgdG8KKyAqIGhvc3QgZW51bWVyYXRpb24gcHJvY2VkdXJlcy4KKyAqCisgKiBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgZWxzZSBuZWdhdGl2ZSBlcnJuby4KKyAqLworaW50IHVzYl9mdW5jdGlvbl9hY3RpdmF0ZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmdW5jdGlvbikKK3sKKwlzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYJKmNkZXYgPSBmdW5jdGlvbi0+Y29uZmlnLT5jZGV2OworCWludAkJCQlzdGF0dXMgPSAwOworCisJc3Bpbl9sb2NrKCZjZGV2LT5sb2NrKTsKKworCWlmIChXQVJOX09OKGNkZXYtPmRlYWN0aXZhdGlvbnMgPT0gMCkpCisJCXN0YXR1cyA9IC1FSU5WQUw7CisJZWxzZSB7CisJCWNkZXYtPmRlYWN0aXZhdGlvbnMtLTsKKwkJaWYgKGNkZXYtPmRlYWN0aXZhdGlvbnMgPT0gMCkKKwkJCXN0YXR1cyA9IHVzYl9nYWRnZXRfY29ubmVjdChjZGV2LT5nYWRnZXQpOworCX0KKworCXNwaW5fdW5sb2NrKCZjZGV2LT5sb2NrKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKioKICAqIHVzYl9pbnRlcmZhY2VfaWQoKSAtIGFsbG9jYXRlIGFuIHVudXNlZCBpbnRlcmZhY2UgSUQKICAqIEBjb25maWc6IGNvbmZpZ3VyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcmZhY2UKICAqIEBmdW5jdGlvbjogZnVuY3Rpb24gaGFuZGxpbmcgdGhlIGludGVyZmFjZQpAQCAtMTgxLDcgKzI0NSw3IEBACiAJYy0+YkNvbmZpZ3VyYXRpb25WYWx1ZSA9IGNvbmZpZy0+YkNvbmZpZ3VyYXRpb25WYWx1ZTsKIAljLT5pQ29uZmlndXJhdGlvbiA9IGNvbmZpZy0+aUNvbmZpZ3VyYXRpb247CiAJYy0+Ym1BdHRyaWJ1dGVzID0gVVNCX0NPTkZJR19BVFRfT05FIHwgY29uZmlnLT5ibUF0dHJpYnV0ZXM7Ci0JYy0+Yk1heFBvd2VyID0gY29uZmlnLT5iTWF4UG93ZXI7CisJYy0+Yk1heFBvd2VyID0gY29uZmlnLT5iTWF4UG93ZXIgPyA6IChDT05GSUdfVVNCX0dBREdFVF9WQlVTX0RSQVcgLyAyKTsKIAogCS8qIFRoZXJlIG1heSBiZSBlLmcuIE9URyBkZXNjcmlwdG9ycyAqLwogCWlmIChjb25maWctPmRlc2NyaXB0b3JzKSB7CkBAIC0zNjgsNyArNDMyLDcgQEAKIAl9CiAKIAkvKiB3aGVuIHdlIHJldHVybiwgYmUgc3VyZSBvdXIgcG93ZXIgdXNhZ2UgaXMgdmFsaWQgKi8KLQlwb3dlciA9IDIgKiBjLT5iTWF4UG93ZXI7CisJcG93ZXIgPSBjLT5iTWF4UG93ZXIgPyAoMiAqIGMtPmJNYXhQb3dlcikgOiBDT05GSUdfVVNCX0dBREdFVF9WQlVTX0RSQVc7CiBkb25lOgogCXVzYl9nYWRnZXRfdmJ1c19kcmF3KGdhZGdldCwgcG93ZXIpOwogCXJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZHVtbXlfaGNkLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZHVtbXlfaGNkLmMKaW5kZXggNzYwMGEwYy4uOTA2NDY5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2R1bW15X2hjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9kdW1teV9oY2QuYwpAQCAtODIsNiArODIsNyBAQAogCWNvbnN0IHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVzYzsKIAlzdHJ1Y3QgdXNiX2VwCQkJZXA7CiAJdW5zaWduZWQJCQloYWx0ZWQgOiAxOworCXVuc2lnbmVkCQkJd2VkZ2VkIDogMTsKIAl1bnNpZ25lZAkJCWFscmVhZHlfc2VlbiA6IDE7CiAJdW5zaWduZWQJCQlzZXR1cF9zdGFnZSA6IDE7CiB9OwpAQCAtNDM2LDYgKzQzNyw3IEBACiAJLyogYXQgdGhpcyBwb2ludCByZWFsIGhhcmR3YXJlIHNob3VsZCBiZSBOQUtpbmcgdHJhbnNmZXJzCiAJICogdG8gdGhhdCBlbmRwb2ludCwgdW50aWwgYSBidWZmZXIgaXMgcXVldWVkIHRvIGl0LgogCSAqLworCWVwLT5oYWx0ZWQgPSBlcC0+d2VkZ2VkID0gMDsKIAlyZXR2YWwgPSAwOwogZG9uZToKIAlyZXR1cm4gcmV0dmFsOwpAQCAtNTk3LDcgKzU5OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWR1bW15X3NldF9oYWx0IChzdHJ1Y3QgdXNiX2VwICpfZXAsIGludCB2YWx1ZSkKK2R1bW15X3NldF9oYWx0X2FuZF93ZWRnZShzdHJ1Y3QgdXNiX2VwICpfZXAsIGludCB2YWx1ZSwgaW50IHdlZGdlZCkKIHsKIAlzdHJ1Y3QgZHVtbXlfZXAJCSplcDsKIAlzdHJ1Y3QgZHVtbXkJCSpkdW07CkBAIC02MDksMTYgKzYxMSwzMiBAQAogCWlmICghZHVtLT5kcml2ZXIpCiAJCXJldHVybiAtRVNIVVRET1dOOwogCWlmICghdmFsdWUpCi0JCWVwLT5oYWx0ZWQgPSAwOworCQllcC0+aGFsdGVkID0gZXAtPndlZGdlZCA9IDA7CiAJZWxzZSBpZiAoZXAtPmRlc2MgJiYgKGVwLT5kZXNjLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTikgJiYKIAkJCSFsaXN0X2VtcHR5ICgmZXAtPnF1ZXVlKSkKIAkJcmV0dXJuIC1FQUdBSU47Ci0JZWxzZQorCWVsc2UgewogCQllcC0+aGFsdGVkID0gMTsKKwkJaWYgKHdlZGdlZCkKKwkJCWVwLT53ZWRnZWQgPSAxOworCX0KIAkvKiBGSVhNRSBjbGVhciBlbXVsYXRlZCBkYXRhIHRvZ2dsZSB0b28gKi8KIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorZHVtbXlfc2V0X2hhbHQoc3RydWN0IHVzYl9lcCAqX2VwLCBpbnQgdmFsdWUpCit7CisJcmV0dXJuIGR1bW15X3NldF9oYWx0X2FuZF93ZWRnZShfZXAsIHZhbHVlLCAwKTsKK30KKworc3RhdGljIGludCBkdW1teV9zZXRfd2VkZ2Uoc3RydWN0IHVzYl9lcCAqX2VwKQoreworCWlmICghX2VwIHx8IF9lcC0+bmFtZSA9PSBlcDBuYW1lKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gZHVtbXlfc2V0X2hhbHRfYW5kX3dlZGdlKF9lcCwgMSwgMSk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2VwX29wcyBkdW1teV9lcF9vcHMgPSB7CiAJLmVuYWJsZQkJPSBkdW1teV9lbmFibGUsCiAJLmRpc2FibGUJPSBkdW1teV9kaXNhYmxlLApAQCAtNjMwLDYgKzY0OCw3IEBACiAJLmRlcXVldWUJPSBkdW1teV9kZXF1ZXVlLAogCiAJLnNldF9oYWx0CT0gZHVtbXlfc2V0X2hhbHQsCisJLnNldF93ZWRnZQk9IGR1bW15X3NldF93ZWRnZSwKIH07CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC03NjAsNyArNzc5LDggQEAKIAkJZXAtPmVwLm5hbWUgPSBlcF9uYW1lIFtpXTsKIAkJZXAtPmVwLm9wcyA9ICZkdW1teV9lcF9vcHM7CiAJCWxpc3RfYWRkX3RhaWwgKCZlcC0+ZXAuZXBfbGlzdCwgJmR1bS0+Z2FkZ2V0LmVwX2xpc3QpOwotCQllcC0+aGFsdGVkID0gZXAtPmFscmVhZHlfc2VlbiA9IGVwLT5zZXR1cF9zdGFnZSA9IDA7CisJCWVwLT5oYWx0ZWQgPSBlcC0+d2VkZ2VkID0gZXAtPmFscmVhZHlfc2VlbiA9CisJCQkJZXAtPnNldHVwX3N0YWdlID0gMDsKIAkJZXAtPmVwLm1heHBhY2tldCA9IH4wOwogCQllcC0+bGFzdF9pbyA9IGppZmZpZXM7CiAJCWVwLT5nYWRnZXQgPSAmZHVtLT5nYWRnZXQ7CkBAIC0xMzUxLDcgKzEzNzEsNyBAQAogCQkJCX0gZWxzZSBpZiAoc2V0dXAuYlJlcXVlc3RUeXBlID09IEVwX1JlcXVlc3QpIHsKIAkJCQkJLy8gZW5kcG9pbnQgaGFsdAogCQkJCQllcDIgPSBmaW5kX2VuZHBvaW50IChkdW0sIHdfaW5kZXgpOwotCQkJCQlpZiAoIWVwMikgeworCQkJCQlpZiAoIWVwMiB8fCBlcDItPmVwLm5hbWUgPT0gZXAwbmFtZSkgewogCQkJCQkJdmFsdWUgPSAtRU9QTk9UU1VQUDsKIAkJCQkJCWJyZWFrOwogCQkJCQl9CkBAIC0xMzgwLDcgKzE0MDAsOCBAQAogCQkJCQkJdmFsdWUgPSAtRU9QTk9UU1VQUDsKIAkJCQkJCWJyZWFrOwogCQkJCQl9Ci0JCQkJCWVwMi0+aGFsdGVkID0gMDsKKwkJCQkJaWYgKCFlcDItPndlZGdlZCkKKwkJCQkJCWVwMi0+aGFsdGVkID0gMDsKIAkJCQkJdmFsdWUgPSAwOwogCQkJCQlzdGF0dXMgPSAwOwogCQkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9ldGhlci5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKaW5kZXggOTQ0YzhlOC4uMzcyNTJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKQEAgLTI0Miw3ICsyNDIsNiBAQAogCS5iQ29uZmlndXJhdGlvblZhbHVlCT0gMiwKIAkvKiAuaUNvbmZpZ3VyYXRpb24gPSBEWU5BTUlDICovCiAJLmJtQXR0cmlidXRlcwkJPSBVU0JfQ09ORklHX0FUVF9TRUxGUE9XRVIsCi0JLmJNYXhQb3dlcgkJPSAxLAkvKiAyIG1BLCBtaW5pbWFsICovCiB9OwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjcxLDcgKzI3MCw2IEBACiAJLmJDb25maWd1cmF0aW9uVmFsdWUJPSAxLAogCS8qIC5pQ29uZmlndXJhdGlvbiA9IERZTkFNSUMgKi8KIAkuYm1BdHRyaWJ1dGVzCQk9IFVTQl9DT05GSUdfQVRUX1NFTEZQT1dFUiwKLQkuYk1heFBvd2VyCQk9IDEsCS8qIDIgbUEsIG1pbmltYWwgKi8KIH07CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9sb29wYmFjay5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbG9vcGJhY2suYwppbmRleCA4N2RkZTAxLi44YWZmZTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9sb29wYmFjay5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2xvb3BiYWNrLmMKQEAgLTM1Miw3ICszNTIsNiBAQAogCS5iaW5kCQk9IGxvb3BiYWNrX2JpbmRfY29uZmlnLAogCS5iQ29uZmlndXJhdGlvblZhbHVlID0gMiwKIAkuYm1BdHRyaWJ1dGVzCT0gVVNCX0NPTkZJR19BVFRfU0VMRlBPV0VSLAotCS5iTWF4UG93ZXIJPSAxLAkvKiAyIG1BLCBtaW5pbWFsICovCiAJLyogLmlDb25maWd1cmF0aW9uID0gRFlOQU1JQyAqLwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Zfb2JleC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Zfb2JleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYzJlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9vYmV4LmMKQEAgLTAsMCArMSw0OTMgQEAKKy8qCisgKiBmX29iZXguYyAtLSBVU0IgQ0RDIE9CRVggZnVuY3Rpb24gZHJpdmVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uCisgKiBDb250YWN0OiBGZWxpcGUgQmFsYmkgPGZlbGlwZS5iYWxiaUBub2tpYS5jb20+CisgKgorICogQmFzZWQgb24gZl9hY20uYyBieSBBbCBCb3JjaGVycyBhbmQgRGF2aWQgQnJvd25lbGwuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKiAjZGVmaW5lIFZFUkJPU0VfREVCVUcgKi8KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3V0c25hbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKworI2luY2x1ZGUgInVfc2VyaWFsLmgiCisjaW5jbHVkZSAiZ2FkZ2V0X2NoaXBzLmgiCisKKworLyoKKyAqIFRoaXMgQ0RDIE9CRVggZnVuY3Rpb24gc3VwcG9ydCBqdXN0IHBhY2thZ2VzIGEgVFRZLWlzaCBieXRlIHN0cmVhbS4KKyAqIEEgdXNlciBtb2RlIHNlcnZlciB3aWxsIHB1dCBpdCBpbnRvICJyYXciIG1vZGUgYW5kIGhhbmRsZSBhbGwgdGhlCisgKiByZWxldmFudCBwcm90b2NvbCBkZXRhaWxzIC4uLiB0aGlzIGlzIGp1c3QgYSBrZXJuZWwgcGFzc3Rocm91Z2guCisgKiBXaGVuIHBvc3NpYmxlLCB3ZSBwcmV2ZW50IGdhZGdldCBlbnVtZXJhdGlvbiB1bnRpbCB0aGF0IHNlcnZlciBpcworICogcmVhZHkgdG8gaGFuZGxlIHRoZSBjb21tYW5kcy4KKyAqLworCitzdHJ1Y3Qgb2JleF9lcF9kZXNjcyB7CisJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yCSpvYmV4X2luOworCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvcgkqb2JleF9vdXQ7Cit9OworCitzdHJ1Y3QgZl9vYmV4IHsKKwlzdHJ1Y3QgZ3NlcmlhbAkJCXBvcnQ7CisJdTgJCQkJY3RybF9pZDsKKwl1OAkJCQlkYXRhX2lkOworCXU4CQkJCXBvcnRfbnVtOworCXU4CQkJCWNhbl9hY3RpdmF0ZTsKKworCXN0cnVjdCBvYmV4X2VwX2Rlc2NzCQlmczsKKwlzdHJ1Y3Qgb2JleF9lcF9kZXNjcwkJaHM7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBmX29iZXggKmZ1bmNfdG9fb2JleChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKQoreworCXJldHVybiBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfb2JleCwgcG9ydC5mdW5jKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZl9vYmV4ICpwb3J0X3RvX29iZXgoc3RydWN0IGdzZXJpYWwgKnApCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihwLCBzdHJ1Y3QgZl9vYmV4LCBwb3J0KTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSBPQkVYX0NUUkxfSURYCTAKKyNkZWZpbmUgT0JFWF9EQVRBX0lEWAkxCisKK3N0YXRpYyBzdHJ1Y3QgdXNiX3N0cmluZyBvYmV4X3N0cmluZ19kZWZzW10gPSB7CisJW09CRVhfQ1RSTF9JRFhdLnMJPSAiQ0RDIE9iamVjdCBFeGNoYW5nZSAoT0JFWCkiLAorCVtPQkVYX0RBVEFfSURYXS5zCT0gIkNEQyBPQkVYIERhdGEiLAorCXsgIH0sCS8qIGVuZCBvZiBsaXN0ICovCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfc3RyaW5ncyBvYmV4X3N0cmluZ190YWJsZSA9IHsKKwkubGFuZ3VhZ2UJCT0gMHgwNDA5LAkvKiBlbi1VUyAqLworCS5zdHJpbmdzCQk9IG9iZXhfc3RyaW5nX2RlZnMsCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfc3RyaW5ncyAqb2JleF9zdHJpbmdzW10gPSB7CisJJm9iZXhfc3RyaW5nX3RhYmxlLAorCU5VTEwsCit9OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciBvYmV4X2NvbnRyb2xfaW50ZiBfX2luaXRkYXRhID0geworCS5iTGVuZ3RoCQk9IHNpemVvZihvYmV4X2NvbnRyb2xfaW50ZiksCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9JTlRFUkZBQ0UsCisJLmJJbnRlcmZhY2VOdW1iZXIJPSAwLAorCisJLmJBbHRlcm5hdGVTZXR0aW5nCT0gMCwKKwkuYk51bUVuZHBvaW50cwkJPSAwLAorCS5iSW50ZXJmYWNlQ2xhc3MJPSBVU0JfQ0xBU1NfQ09NTSwKKwkuYkludGVyZmFjZVN1YkNsYXNzCT0gVVNCX0NEQ19TVUJDTEFTU19PQkVYLAorfTsKKworc3RhdGljIHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3Igb2JleF9kYXRhX25vcF9pbnRmIF9faW5pdGRhdGEgPSB7CisJLmJMZW5ndGgJCT0gc2l6ZW9mKG9iZXhfZGF0YV9ub3BfaW50ZiksCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9JTlRFUkZBQ0UsCisJLmJJbnRlcmZhY2VOdW1iZXIJPSAxLAorCisJLmJBbHRlcm5hdGVTZXR0aW5nCT0gMCwKKwkuYk51bUVuZHBvaW50cwkJPSAwLAorCS5iSW50ZXJmYWNlQ2xhc3MJPSBVU0JfQ0xBU1NfQ0RDX0RBVEEsCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciBvYmV4X2RhdGFfaW50ZiBfX2luaXRkYXRhID0geworCS5iTGVuZ3RoCQk9IHNpemVvZihvYmV4X2RhdGFfaW50ZiksCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9JTlRFUkZBQ0UsCisJLmJJbnRlcmZhY2VOdW1iZXIJPSAyLAorCisJLmJBbHRlcm5hdGVTZXR0aW5nCT0gMSwKKwkuYk51bUVuZHBvaW50cwkJPSAyLAorCS5iSW50ZXJmYWNlQ2xhc3MJPSBVU0JfQ0xBU1NfQ0RDX0RBVEEsCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2Mgb2JleF9jZGNfaGVhZGVyX2Rlc2MgX19pbml0ZGF0YSA9IHsKKwkuYkxlbmd0aAkJPSBzaXplb2Yob2JleF9jZGNfaGVhZGVyX2Rlc2MpLAorCS5iRGVzY3JpcHRvclR5cGUJPSBVU0JfRFRfQ1NfSU5URVJGQUNFLAorCS5iRGVzY3JpcHRvclN1YlR5cGUJPSBVU0JfQ0RDX0hFQURFUl9UWVBFLAorCS5iY2RDREMJCQk9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoMHgwMTIwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjIG9iZXhfY2RjX3VuaW9uX2Rlc2MgX19pbml0ZGF0YSA9IHsKKwkuYkxlbmd0aAkJPSBzaXplb2Yob2JleF9jZGNfdW5pb25fZGVzYyksCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9DU19JTlRFUkZBQ0UsCisJLmJEZXNjcmlwdG9yU3ViVHlwZQk9IFVTQl9DRENfVU5JT05fVFlQRSwKKwkuYk1hc3RlckludGVyZmFjZTAJPSAxLAorCS5iU2xhdmVJbnRlcmZhY2UwCT0gMiwKK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2NkY19vYmV4X2Rlc2Mgb2JleF9kZXNjIF9faW5pdGRhdGEgPSB7CisJLmJMZW5ndGgJCT0gc2l6ZW9mKG9iZXhfZGVzYyksCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9DU19JTlRFUkZBQ0UsCisJLmJEZXNjcmlwdG9yU3ViVHlwZQk9IFVTQl9DRENfT0JFWF9UWVBFLAorCS5iY2RWZXJzaW9uCQk9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoMHgwMTAwKSwKK307CisKKy8qIEhpZ2gtU3BlZWQgU3VwcG9ydCAqLworCitzdGF0aWMgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIG9iZXhfaHNfZXBfb3V0X2Rlc2MgX19pbml0ZGF0YSA9IHsKKwkuYkxlbmd0aAkJPSBVU0JfRFRfRU5EUE9JTlRfU0laRSwKKwkuYkRlc2NyaXB0b3JUeXBlCT0gVVNCX0RUX0VORFBPSU5ULAorCisJLmJFbmRwb2ludEFkZHJlc3MJPSBVU0JfRElSX09VVCwKKwkuYm1BdHRyaWJ1dGVzCQk9IFVTQl9FTkRQT0lOVF9YRkVSX0JVTEssCisJLndNYXhQYWNrZXRTaXplCQk9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoNTEyKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3Igb2JleF9oc19lcF9pbl9kZXNjIF9faW5pdGRhdGEgPSB7CisJLmJMZW5ndGgJCT0gVVNCX0RUX0VORFBPSU5UX1NJWkUsCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9FTkRQT0lOVCwKKworCS5iRW5kcG9pbnRBZGRyZXNzCT0gVVNCX0RJUl9JTiwKKwkuYm1BdHRyaWJ1dGVzCQk9IFVTQl9FTkRQT0lOVF9YRkVSX0JVTEssCisJLndNYXhQYWNrZXRTaXplCQk9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoNTEyKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICpoc19mdW5jdGlvbltdIF9faW5pdGRhdGEgPSB7CisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfY29udHJvbF9pbnRmLAorCShzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICopICZvYmV4X2NkY19oZWFkZXJfZGVzYywKKwkoc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqKSAmb2JleF9kZXNjLAorCShzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICopICZvYmV4X2NkY191bmlvbl9kZXNjLAorCisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfZGF0YV9ub3BfaW50ZiwKKwkoc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqKSAmb2JleF9kYXRhX2ludGYsCisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfaHNfZXBfaW5fZGVzYywKKwkoc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqKSAmb2JleF9oc19lcF9vdXRfZGVzYywKKwlOVUxMLAorfTsKKworLyogRnVsbC1TcGVlZCBTdXBwb3J0ICovCisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3Igb2JleF9mc19lcF9pbl9kZXNjIF9faW5pdGRhdGEgPSB7CisJLmJMZW5ndGgJCT0gVVNCX0RUX0VORFBPSU5UX1NJWkUsCisJLmJEZXNjcmlwdG9yVHlwZQk9IFVTQl9EVF9FTkRQT0lOVCwKKworCS5iRW5kcG9pbnRBZGRyZXNzCT0gVVNCX0RJUl9JTiwKKwkuYm1BdHRyaWJ1dGVzCQk9IFVTQl9FTkRQT0lOVF9YRkVSX0JVTEssCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIG9iZXhfZnNfZXBfb3V0X2Rlc2MgX19pbml0ZGF0YSA9IHsKKwkuYkxlbmd0aAkJPSBVU0JfRFRfRU5EUE9JTlRfU0laRSwKKwkuYkRlc2NyaXB0b3JUeXBlCT0gVVNCX0RUX0VORFBPSU5ULAorCisJLmJFbmRwb2ludEFkZHJlc3MJPSBVU0JfRElSX09VVCwKKwkuYm1BdHRyaWJ1dGVzCQk9IFVTQl9FTkRQT0lOVF9YRkVSX0JVTEssCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqZnNfZnVuY3Rpb25bXSBfX2luaXRkYXRhID0geworCShzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICopICZvYmV4X2NvbnRyb2xfaW50ZiwKKwkoc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqKSAmb2JleF9jZGNfaGVhZGVyX2Rlc2MsCisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfZGVzYywKKwkoc3RydWN0IHVzYl9kZXNjcmlwdG9yX2hlYWRlciAqKSAmb2JleF9jZGNfdW5pb25fZGVzYywKKworCShzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICopICZvYmV4X2RhdGFfbm9wX2ludGYsCisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfZGF0YV9pbnRmLAorCShzdHJ1Y3QgdXNiX2Rlc2NyaXB0b3JfaGVhZGVyICopICZvYmV4X2ZzX2VwX2luX2Rlc2MsCisJKHN0cnVjdCB1c2JfZGVzY3JpcHRvcl9oZWFkZXIgKikgJm9iZXhfZnNfZXBfb3V0X2Rlc2MsCisJTlVMTCwKK307CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgb2JleF9zZXRfYWx0KHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsIHVuc2lnbmVkIGludGYsIHVuc2lnbmVkIGFsdCkKK3sKKwlzdHJ1Y3QgZl9vYmV4CQkqb2JleCA9IGZ1bmNfdG9fb2JleChmKTsKKwlzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYgPSBmLT5jb25maWctPmNkZXY7CisKKwlpZiAoaW50ZiA9PSBvYmV4LT5jdHJsX2lkKSB7CisJCWlmIChhbHQgIT0gMCkKKwkJCWdvdG8gZmFpbDsKKwkJLyogTk9QICovCisJCURCRyhjZGV2LCAicmVzZXQgb2JleCB0dHlHUyVkIGNvbnRyb2xcbiIsIG9iZXgtPnBvcnRfbnVtKTsKKworCX0gZWxzZSBpZiAoaW50ZiA9PSBvYmV4LT5kYXRhX2lkKSB7CisJCWlmIChhbHQgPiAxKQorCQkJZ290byBmYWlsOworCisJCWlmIChvYmV4LT5wb3J0LmluLT5kcml2ZXJfZGF0YSkgeworCQkJREJHKGNkZXYsICJyZXNldCBvYmV4IHR0eUdTJWRcbiIsIG9iZXgtPnBvcnRfbnVtKTsKKwkJCWdzZXJpYWxfZGlzY29ubmVjdCgmb2JleC0+cG9ydCk7CisJCX0KKworCQlpZiAoIW9iZXgtPnBvcnQuaW5fZGVzYykgeworCQkJREJHKGNkZXYsICJpbml0IG9iZXggdHR5R1MlZFxuIiwgb2JleC0+cG9ydF9udW0pOworCQkJb2JleC0+cG9ydC5pbl9kZXNjID0gZXBfY2hvb3NlKGNkZXYtPmdhZGdldCwKKwkJCQkJb2JleC0+aHMub2JleF9pbiwgb2JleC0+ZnMub2JleF9pbik7CisJCQlvYmV4LT5wb3J0Lm91dF9kZXNjID0gZXBfY2hvb3NlKGNkZXYtPmdhZGdldCwKKwkJCQkJb2JleC0+aHMub2JleF9vdXQsIG9iZXgtPmZzLm9iZXhfb3V0KTsKKwkJfQorCisJCWlmIChhbHQgPT0gMSkgeworCQkJREJHKGNkZXYsICJhY3RpdmF0ZSBvYmV4IHR0eUdTJWRcbiIsIG9iZXgtPnBvcnRfbnVtKTsKKwkJCWdzZXJpYWxfY29ubmVjdCgmb2JleC0+cG9ydCwgb2JleC0+cG9ydF9udW0pOworCQl9CisKKwl9IGVsc2UKKwkJZ290byBmYWlsOworCisJcmV0dXJuIDA7CisKK2ZhaWw6CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgb2JleF9nZXRfYWx0KHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYsIHVuc2lnbmVkIGludGYpCit7CisJc3RydWN0IGZfb2JleAkJKm9iZXggPSBmdW5jX3RvX29iZXgoZik7CisKKwlpZiAoaW50ZiA9PSBvYmV4LT5jdHJsX2lkKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBvYmV4LT5wb3J0LmluLT5kcml2ZXJfZGF0YSA/IDEgOiAwOworfQorCitzdGF0aWMgdm9pZCBvYmV4X2Rpc2FibGUoc3RydWN0IHVzYl9mdW5jdGlvbiAqZikKK3sKKwlzdHJ1Y3QgZl9vYmV4CSpvYmV4ID0gZnVuY190b19vYmV4KGYpOworCXN0cnVjdCB1c2JfY29tcG9zaXRlX2RldiAqY2RldiA9IGYtPmNvbmZpZy0+Y2RldjsKKworCURCRyhjZGV2LCAib2JleCB0dHlHUyVkIGRpc2FibGVcbiIsIG9iZXgtPnBvcnRfbnVtKTsKKwlnc2VyaWFsX2Rpc2Nvbm5lY3QoJm9iZXgtPnBvcnQpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgdm9pZCBvYmV4X2Nvbm5lY3Qoc3RydWN0IGdzZXJpYWwgKmcpCit7CisJc3RydWN0IGZfb2JleAkJKm9iZXggPSBwb3J0X3RvX29iZXgoZyk7CisJc3RydWN0IHVzYl9jb21wb3NpdGVfZGV2ICpjZGV2ID0gZy0+ZnVuYy5jb25maWctPmNkZXY7CisJaW50CQkJc3RhdHVzOworCisJaWYgKCFvYmV4LT5jYW5fYWN0aXZhdGUpCisJCXJldHVybjsKKworCXN0YXR1cyA9IHVzYl9mdW5jdGlvbl9hY3RpdmF0ZSgmZy0+ZnVuYyk7CisJaWYgKHN0YXR1cykKKwkJREJHKGNkZXYsICJvYmV4IHR0eUdTJWQgZnVuY3Rpb24gYWN0aXZhdGUgLS0+ICVkXG4iLAorCQkJb2JleC0+cG9ydF9udW0sIHN0YXR1cyk7Cit9CisKK3N0YXRpYyB2b2lkIG9iZXhfZGlzY29ubmVjdChzdHJ1Y3QgZ3NlcmlhbCAqZykKK3sKKwlzdHJ1Y3QgZl9vYmV4CQkqb2JleCA9IHBvcnRfdG9fb2JleChnKTsKKwlzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYgPSBnLT5mdW5jLmNvbmZpZy0+Y2RldjsKKwlpbnQJCQlzdGF0dXM7CisKKwlpZiAoIW9iZXgtPmNhbl9hY3RpdmF0ZSkKKwkJcmV0dXJuOworCisJc3RhdHVzID0gdXNiX2Z1bmN0aW9uX2RlYWN0aXZhdGUoJmctPmZ1bmMpOworCWlmIChzdGF0dXMpCisJCURCRyhjZGV2LCAib2JleCB0dHlHUyVkIGZ1bmN0aW9uIGRlYWN0aXZhdGUgLS0+ICVkXG4iLAorCQkJb2JleC0+cG9ydF9udW0sIHN0YXR1cyk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgX19pbml0CitvYmV4X2JpbmQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCBzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmKQoreworCXN0cnVjdCB1c2JfY29tcG9zaXRlX2RldiAqY2RldiA9IGMtPmNkZXY7CisJc3RydWN0IGZfb2JleAkJKm9iZXggPSBmdW5jX3RvX29iZXgoZik7CisJaW50CQkJc3RhdHVzOworCXN0cnVjdCB1c2JfZXAJCSplcDsKKworCS8qIGFsbG9jYXRlIGluc3RhbmNlLXNwZWNpZmljIGludGVyZmFjZSBJRHMsIGFuZCBwYXRjaCBkZXNjcmlwdG9ycyAqLworCisJc3RhdHVzID0gdXNiX2ludGVyZmFjZV9pZChjLCBmKTsKKwlpZiAoc3RhdHVzIDwgMCkKKwkJZ290byBmYWlsOworCW9iZXgtPmN0cmxfaWQgPSBzdGF0dXM7CisKKwlvYmV4X2NvbnRyb2xfaW50Zi5iSW50ZXJmYWNlTnVtYmVyID0gc3RhdHVzOworCW9iZXhfY2RjX3VuaW9uX2Rlc2MuYk1hc3RlckludGVyZmFjZTAgPSBzdGF0dXM7CisKKwlzdGF0dXMgPSB1c2JfaW50ZXJmYWNlX2lkKGMsIGYpOworCWlmIChzdGF0dXMgPCAwKQorCQlnb3RvIGZhaWw7CisJb2JleC0+ZGF0YV9pZCA9IHN0YXR1czsKKworCW9iZXhfZGF0YV9ub3BfaW50Zi5iSW50ZXJmYWNlTnVtYmVyID0gc3RhdHVzOworCW9iZXhfZGF0YV9pbnRmLmJJbnRlcmZhY2VOdW1iZXIgPSBzdGF0dXM7CisJb2JleF9jZGNfdW5pb25fZGVzYy5iU2xhdmVJbnRlcmZhY2UwID0gc3RhdHVzOworCisJLyogYWxsb2NhdGUgaW5zdGFuY2Utc3BlY2lmaWMgZW5kcG9pbnRzICovCisKKwllcCA9IHVzYl9lcF9hdXRvY29uZmlnKGNkZXYtPmdhZGdldCwgJm9iZXhfZnNfZXBfaW5fZGVzYyk7CisJaWYgKCFlcCkKKwkJZ290byBmYWlsOworCW9iZXgtPnBvcnQuaW4gPSBlcDsKKwllcC0+ZHJpdmVyX2RhdGEgPSBjZGV2OwkvKiBjbGFpbSAqLworCisJZXAgPSB1c2JfZXBfYXV0b2NvbmZpZyhjZGV2LT5nYWRnZXQsICZvYmV4X2ZzX2VwX291dF9kZXNjKTsKKwlpZiAoIWVwKQorCQlnb3RvIGZhaWw7CisJb2JleC0+cG9ydC5vdXQgPSBlcDsKKwllcC0+ZHJpdmVyX2RhdGEgPSBjZGV2OwkvKiBjbGFpbSAqLworCisJLyogY29weSBkZXNjcmlwdG9ycywgYW5kIHRyYWNrIGVuZHBvaW50IGNvcGllcyAqLworCWYtPmRlc2NyaXB0b3JzID0gdXNiX2NvcHlfZGVzY3JpcHRvcnMoZnNfZnVuY3Rpb24pOworCisJb2JleC0+ZnMub2JleF9pbiA9IHVzYl9maW5kX2VuZHBvaW50KGZzX2Z1bmN0aW9uLAorCQkJZi0+ZGVzY3JpcHRvcnMsICZvYmV4X2ZzX2VwX2luX2Rlc2MpOworCW9iZXgtPmZzLm9iZXhfb3V0ID0gdXNiX2ZpbmRfZW5kcG9pbnQoZnNfZnVuY3Rpb24sCisJCQlmLT5kZXNjcmlwdG9ycywgJm9iZXhfZnNfZXBfb3V0X2Rlc2MpOworCisJLyogc3VwcG9ydCBhbGwgcmVsZXZhbnQgaGFyZHdhcmUgc3BlZWRzLi4uIHdlIGV4cGVjdCB0aGF0IHdoZW4KKwkgKiBoYXJkd2FyZSBpcyBkdWFsIHNwZWVkLCBhbGwgYnVsay1jYXBhYmxlIGVuZHBvaW50cyB3b3JrIGF0CisJICogYm90aCBzcGVlZHMKKwkgKi8KKwlpZiAoZ2FkZ2V0X2lzX2R1YWxzcGVlZChjLT5jZGV2LT5nYWRnZXQpKSB7CisKKwkJb2JleF9oc19lcF9pbl9kZXNjLmJFbmRwb2ludEFkZHJlc3MgPQorCQkJCW9iZXhfZnNfZXBfaW5fZGVzYy5iRW5kcG9pbnRBZGRyZXNzOworCQlvYmV4X2hzX2VwX291dF9kZXNjLmJFbmRwb2ludEFkZHJlc3MgPQorCQkJCW9iZXhfZnNfZXBfb3V0X2Rlc2MuYkVuZHBvaW50QWRkcmVzczsKKworCQkvKiBjb3B5IGRlc2NyaXB0b3JzLCBhbmQgdHJhY2sgZW5kcG9pbnQgY29waWVzICovCisJCWYtPmhzX2Rlc2NyaXB0b3JzID0gdXNiX2NvcHlfZGVzY3JpcHRvcnMoaHNfZnVuY3Rpb24pOworCisJCW9iZXgtPmhzLm9iZXhfaW4gPSB1c2JfZmluZF9lbmRwb2ludChoc19mdW5jdGlvbiwKKwkJCQlmLT5kZXNjcmlwdG9ycywgJm9iZXhfaHNfZXBfaW5fZGVzYyk7CisJCW9iZXgtPmhzLm9iZXhfb3V0ID0gdXNiX2ZpbmRfZW5kcG9pbnQoaHNfZnVuY3Rpb24sCisJCQkJZi0+ZGVzY3JpcHRvcnMsICZvYmV4X2hzX2VwX291dF9kZXNjKTsKKwl9CisKKwkvKiBBdm9pZCBsZXR0aW5nIHRoaXMgZ2FkZ2V0IGVudW1lcmF0ZSB1bnRpbCB0aGUgdXNlcnNwYWNlCisJICogT0JFWCBzZXJ2ZXIgaXMgYWN0aXZlLgorCSAqLworCXN0YXR1cyA9IHVzYl9mdW5jdGlvbl9kZWFjdGl2YXRlKGYpOworCWlmIChzdGF0dXMgPCAwKQorCQlXQVJOSU5HKGNkZXYsICJvYmV4IHR0eUdTJWQ6IGNhbid0IHByZXZlbnQgZW51bWVyYXRpb24sICVkXG4iLAorCQkJb2JleC0+cG9ydF9udW0sIHN0YXR1cyk7CisJZWxzZQorCQlvYmV4LT5jYW5fYWN0aXZhdGUgPSB0cnVlOworCisKKwlEQkcoY2RldiwgIm9iZXggdHR5R1MlZDogJXMgc3BlZWQgSU4vJXMgT1VULyVzXG4iLAorCQkJb2JleC0+cG9ydF9udW0sCisJCQlnYWRnZXRfaXNfZHVhbHNwZWVkKGMtPmNkZXYtPmdhZGdldCkgPyAiZHVhbCIgOiAiZnVsbCIsCisJCQlvYmV4LT5wb3J0LmluLT5uYW1lLCBvYmV4LT5wb3J0Lm91dC0+bmFtZSk7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwkvKiB3ZSBtaWdodCBhcyB3ZWxsIHJlbGVhc2Ugb3VyIGNsYWltcyBvbiBlbmRwb2ludHMgKi8KKwlpZiAob2JleC0+cG9ydC5vdXQpCisJCW9iZXgtPnBvcnQub3V0LT5kcml2ZXJfZGF0YSA9IE5VTEw7CisJaWYgKG9iZXgtPnBvcnQuaW4pCisJCW9iZXgtPnBvcnQuaW4tPmRyaXZlcl9kYXRhID0gTlVMTDsKKworCUVSUk9SKGNkZXYsICIlcy8lcDogY2FuJ3QgYmluZCwgZXJyICVkXG4iLCBmLT5uYW1lLCBmLCBzdGF0dXMpOworCisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIHZvaWQKK29iZXhfdW5iaW5kKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgc3RydWN0IHVzYl9mdW5jdGlvbiAqZikKK3sKKwlpZiAoZ2FkZ2V0X2lzX2R1YWxzcGVlZChjLT5jZGV2LT5nYWRnZXQpKQorCQl1c2JfZnJlZV9kZXNjcmlwdG9ycyhmLT5oc19kZXNjcmlwdG9ycyk7CisJdXNiX2ZyZWVfZGVzY3JpcHRvcnMoZi0+ZGVzY3JpcHRvcnMpOworCWtmcmVlKGZ1bmNfdG9fb2JleChmKSk7Cit9CisKKy8qIFNvbWUgY29udHJvbGxlcnMgY2FuJ3Qgc3VwcG9ydCBDREMgT0JFWCAuLi4gKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCBjYW5fc3VwcG9ydF9vYmV4KHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYykKK3sKKwkvKiBTaW5jZSB0aGUgZmlyc3QgaW50ZXJmYWNlIGlzIGEgTk9QLCB3ZSBjYW4gaWdub3JlIHRoZQorCSAqIGlzc3VlIG9mIG11bHRpLWludGVyZmFjZSBzdXBwb3J0IG9uIG1vc3QgY29udHJvbGxlcnMuCisJICoKKwkgKiBBbHRzZXR0aW5ncyBhcmUgbWFuZGF0b3J5LCBob3dldmVyLi4uCisJICovCisJaWYgKCFnYWRnZXRfc3VwcG9ydHNfYWx0c2V0dGluZ3MoYy0+Y2Rldi0+Z2FkZ2V0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogZXZlcnl0aGluZyBlbHNlIGlzICpwcm9iYWJseSogZmluZSAuLi4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBvYmV4X2JpbmRfY29uZmlnIC0gYWRkIGEgQ0RDIE9CRVggZnVuY3Rpb24gdG8gYSBjb25maWd1cmF0aW9uCisgKiBAYzogdGhlIGNvbmZpZ3VyYXRpb24gdG8gc3VwcG9ydCB0aGUgQ0RDIE9CRVggaW5zdGFuY2UKKyAqIEBwb3J0X251bTogL2Rldi90dHlHUyogcG9ydCB0aGlzIGludGVyZmFjZSB3aWxsIHVzZQorICogQ29udGV4dDogc2luZ2xlIHRocmVhZGVkIGR1cmluZyBnYWRnZXQgc2V0dXAKKyAqCisgKiBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgZWxzZSBuZWdhdGl2ZSBlcnJuby4KKyAqCisgKiBDYWxsZXIgbXVzdCBoYXZlIGNhbGxlZCBAZ3NlcmlhbF9zZXR1cCgpIHdpdGggZW5vdWdoIHBvcnRzIHRvCisgKiBoYW5kbGUgYWxsIHRoZSBvbmVzIGl0IGJpbmRzLiAgQ2FsbGVyIGlzIGFsc28gcmVzcG9uc2libGUKKyAqIGZvciBjYWxsaW5nIEBnc2VyaWFsX2NsZWFudXAoKSBiZWZvcmUgbW9kdWxlIHVubG9hZC4KKyAqLworaW50IF9faW5pdCBvYmV4X2JpbmRfY29uZmlnKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgdTggcG9ydF9udW0pCit7CisJc3RydWN0IGZfb2JleAkqb2JleDsKKwlpbnQJCXN0YXR1czsKKworCWlmICghY2FuX3N1cHBvcnRfb2JleChjKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBtYXliZSBhbGxvY2F0ZSBkZXZpY2UtZ2xvYmFsIHN0cmluZyBJRHMsIGFuZCBwYXRjaCBkZXNjcmlwdG9ycyAqLworCWlmIChvYmV4X3N0cmluZ19kZWZzW09CRVhfQ1RSTF9JRFhdLmlkID09IDApIHsKKwkJc3RhdHVzID0gdXNiX3N0cmluZ19pZChjLT5jZGV2KTsKKwkJaWYgKHN0YXR1cyA8IDApCisJCQlyZXR1cm4gc3RhdHVzOworCQlvYmV4X3N0cmluZ19kZWZzW09CRVhfQ1RSTF9JRFhdLmlkID0gc3RhdHVzOworCisJCW9iZXhfY29udHJvbF9pbnRmLmlJbnRlcmZhY2UgPSBzdGF0dXM7CisKKwkJc3RhdHVzID0gdXNiX3N0cmluZ19pZChjLT5jZGV2KTsKKwkJaWYgKHN0YXR1cyA8IDApCisJCQlyZXR1cm4gc3RhdHVzOworCQlvYmV4X3N0cmluZ19kZWZzW09CRVhfREFUQV9JRFhdLmlkID0gc3RhdHVzOworCisJCW9iZXhfZGF0YV9ub3BfaW50Zi5pSW50ZXJmYWNlID0KKwkJCW9iZXhfZGF0YV9pbnRmLmlJbnRlcmZhY2UgPSBzdGF0dXM7CisJfQorCisJLyogYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgb25lIG5ldyBpbnN0YW5jZSAqLworCW9iZXggPSBremFsbG9jKHNpemVvZiAqb2JleCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFvYmV4KQorCQlyZXR1cm4gLUVOT01FTTsKKworCW9iZXgtPnBvcnRfbnVtID0gcG9ydF9udW07CisKKwlvYmV4LT5wb3J0LmNvbm5lY3QgPSBvYmV4X2Nvbm5lY3Q7CisJb2JleC0+cG9ydC5kaXNjb25uZWN0ID0gb2JleF9kaXNjb25uZWN0OworCisJb2JleC0+cG9ydC5mdW5jLm5hbWUgPSAib2JleCI7CisJb2JleC0+cG9ydC5mdW5jLnN0cmluZ3MgPSBvYmV4X3N0cmluZ3M7CisJLyogZGVzY3JpcHRvcnMgYXJlIHBlci1pbnN0YW5jZSBjb3BpZXMgKi8KKwlvYmV4LT5wb3J0LmZ1bmMuYmluZCA9IG9iZXhfYmluZDsKKwlvYmV4LT5wb3J0LmZ1bmMudW5iaW5kID0gb2JleF91bmJpbmQ7CisJb2JleC0+cG9ydC5mdW5jLnNldF9hbHQgPSBvYmV4X3NldF9hbHQ7CisJb2JleC0+cG9ydC5mdW5jLmdldF9hbHQgPSBvYmV4X2dldF9hbHQ7CisJb2JleC0+cG9ydC5mdW5jLmRpc2FibGUgPSBvYmV4X2Rpc2FibGU7CisKKwlzdGF0dXMgPSB1c2JfYWRkX2Z1bmN0aW9uKGMsICZvYmV4LT5wb3J0LmZ1bmMpOworCWlmIChzdGF0dXMpCisJCWtmcmVlKG9iZXgpOworCisJcmV0dXJuIHN0YXR1czsKK30KKworTU9EVUxFX0FVVEhPUigiRmVsaXBlIEJhbGJpIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9zb3VyY2VzaW5rLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9zb3VyY2VzaW5rLmMKaW5kZXggZjE4YzNhMS4uZGM4NGQyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Zfc291cmNlc2luay5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX3NvdXJjZXNpbmsuYwpAQCAtNTUyLDcgKzU1Miw2IEBACiAJLnNldHVwCQk9IHNvdXJjZXNpbmtfc2V0dXAsCiAJLmJDb25maWd1cmF0aW9uVmFsdWUgPSAzLAogCS5ibUF0dHJpYnV0ZXMJPSBVU0JfQ09ORklHX0FUVF9TRUxGUE9XRVIsCi0JLmJNYXhQb3dlcgk9IDEsCS8qIDIgbUEsIG1pbmltYWwgKi8KIAkvKiAuaUNvbmZpZ3VyYXRpb24gPSBEWU5BTUlDICovCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZmlsZV9zdG9yYWdlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZmlsZV9zdG9yYWdlLmMKaW5kZXggMGM2MzJkMi4uYzRlNjJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZpbGVfc3RvcmFnZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9maWxlX3N0b3JhZ2UuYwpAQCAtODUxLDcgKzg1MSw3IEBACiAJLmJDb25maWd1cmF0aW9uVmFsdWUgPQlDT05GSUdfVkFMVUUsCiAJLmlDb25maWd1cmF0aW9uID0JU1RSSU5HX0NPTkZJRywKIAkuYm1BdHRyaWJ1dGVzID0JCVVTQl9DT05GSUdfQVRUX09ORSB8IFVTQl9DT05GSUdfQVRUX1NFTEZQT1dFUiwKLQkuYk1heFBvd2VyID0JCTEsCS8vIHNlbGYtcG93ZXJlZAorCS5iTWF4UG93ZXIgPQkJQ09ORklHX1VTQl9HQURHRVRfVkJVU19EUkFXIC8gMiwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX290Z19kZXNjcmlwdG9yCkBAIC0yNjc2LDExICsyNjc2LDI0IEBACiAJLyogVmVyaWZ5IHRoZSBsZW5ndGggb2YgdGhlIGNvbW1hbmQgaXRzZWxmICovCiAJaWYgKGNtbmRfc2l6ZSAhPSBmc2ctPmNtbmRfc2l6ZSkgewogCi0JCS8qIFNwZWNpYWwgY2FzZSB3b3JrYXJvdW5kOiBNUy1XaW5kb3dzIGlzc3VlcyBSRVFVRVNUIFNFTlNFCi0JCSAqIHdpdGggY2J3LT5MZW5ndGggPT0gMTIgKGl0IHNob3VsZCBiZSA2KS4gKi8KLQkJaWYgKGZzZy0+Y21uZFswXSA9PSBTQ19SRVFVRVNUX1NFTlNFICYmIGZzZy0+Y21uZF9zaXplID09IDEyKQorCQkvKiBTcGVjaWFsIGNhc2Ugd29ya2Fyb3VuZDogVGhlcmUgYXJlIHBsZW50eSBvZiBidWdneSBTQ1NJCisJCSAqIGltcGxlbWVudGF0aW9ucy4gTWFueSBoYXZlIGlzc3VlcyB3aXRoIGNidy0+TGVuZ3RoCisJCSAqIGZpZWxkIHBhc3NpbmcgYSB3cm9uZyBjb21tYW5kIHNpemUuIEZvciB0aG9zZSBjYXNlcyB3ZQorCQkgKiBhbHdheXMgdHJ5IHRvIHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtIGJ5IHVzaW5nIHRoZSBsZW5ndGgKKwkJICogc2VudCBieSB0aGUgaG9zdCBzaWRlIHByb3ZpZGVkIGl0IGlzIGF0IGxlYXN0IGFzIGxhcmdlCisJCSAqIGFzIHRoZSBjb3JyZWN0IGNvbW1hbmQgbGVuZ3RoLgorCQkgKiBFeGFtcGxlcyBvZiBzdWNoIGNhc2VzIHdvdWxkIGJlIE1TLVdpbmRvd3MsIHdoaWNoIGlzc3VlcworCQkgKiBSRVFVRVNUIFNFTlNFIHdpdGggY2J3LT5MZW5ndGggPT0gMTIgd2hlcmUgaXQgc2hvdWxkCisJCSAqIGJlIDYsIGFuZCB4Ym94MzYwIGlzc3VpbmcgSU5RVUlSWSwgVEVTVCBVTklUIFJFQURZIGFuZAorCQkgKiBSRVFVRVNUIFNFTlNFIHdpdGggY2J3LT5MZW5ndGggPT0gMTAgd2hlcmUgaXQgc2hvdWxkCisJCSAqIGJlIDYgYXMgd2VsbC4KKwkJICovCisJCWlmIChjbW5kX3NpemUgPD0gZnNnLT5jbW5kX3NpemUpIHsKKwkJCURCRyhmc2csICIlcyBpcyBidWdneSEgRXhwZWN0ZWQgbGVuZ3RoICVkICIKKwkJCQkJImJ1dCB3ZSBnb3QgJWRcbiIsIG5hbWUsCisJCQkJCWNtbmRfc2l6ZSwgZnNnLT5jbW5kX3NpemUpOwogCQkJY21uZF9zaXplID0gZnNnLT5jbW5kX3NpemU7Ci0JCWVsc2UgeworCQl9IGVsc2UgewogCQkJZnNnLT5waGFzZV9lcnJvciA9IDE7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlOGI0NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmMKQEAgLTAsMCArMSwyNzYwIEBACisvKgorICogZHJpdmVyL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAJWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KKyAqIAlMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgorICogCUJhc2VkIG9uIGJhcmVib2FyZCBjb2RlIGZyb20gU2hsb21pIEdyaWRpc2guCisgKgorICogRGVzY3JpcHRpb246CisgKiBGcmVlc2NsZSBRRS9DUE0gVVNCIFBoZXJpcGhlcmFsIENvbnRyb2xsZXIgRHJpdmVyCisgKiBUaGUgY29udHJvbGxlciBjYW4gYmUgZm91bmQgb24gTVBDODM2MCwgTVBDODI3MiwgYW5kIGV0Yy4KKyAqIE1QQzgzNjAgUmV2IDEuMSBtYXkgbmVlZCBRRSBtaXJjb2NvZGUgdXBkYXRlCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI3VuZGVmIFVTQl9UUkFDRQorCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2NoOS5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9nYWRnZXQuaD4KKyNpbmNsdWRlIDxsaW51eC91c2Ivb3RnLmg+CisjaW5jbHVkZSA8YXNtL3FlLmg+CisjaW5jbHVkZSA8YXNtL2NwbS5oPgorI2luY2x1ZGUgPGFzbS9kbWEuaD4KKyNpbmNsdWRlIDxhc20vcmVnLmg+CisjaW5jbHVkZSAiZnNsX3FlX3VkYy5oIgorCisjZGVmaW5lIERSSVZFUl9ERVNDICAgICAiRnJlZXNjYWxlIFFFL0NQTSBVU0IgRGV2aWNlIENvbnRyb2xsZXIgZHJpdmVyIgorI2RlZmluZSBEUklWRVJfQVVUSE9SICAgIlhpZSBYaWFvQm8iCisjZGVmaW5lIERSSVZFUl9WRVJTSU9OICAiMS4wIgorCisjZGVmaW5lIERNQV9BRERSX0lOVkFMSUQgICAgICAgICh+KGRtYV9hZGRyX3QpMCkKKworc3RhdGljIGNvbnN0IGNoYXIgZHJpdmVyX25hbWVbXSA9ICJmc2xfcWVfdWRjIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRyaXZlcl9kZXNjW10gPSBEUklWRVJfREVTQzsKKworLyplcCBuYW1lIGlzIGltcG9ydGFudCBpbiBnYWRnZXQsIGl0IHNob3VsZCBvYmV5IHRoZSBjb252ZW50aW9uIG9mIGVwX21hdGNoKCkqLworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGVwX25hbWVbXSA9IHsKKwkiZXAwLWNvbnRyb2wiLCAvKiBldmVyeW9uZSBoYXMgZXAwICovCisJLyogMyBjb25maWd1cmFibGUgZW5kcG9pbnRzICovCisJImVwMSIsCisJImVwMiIsCisJImVwMyIsCit9OworCitzdGF0aWMgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIHFlX2VwMF9kZXNjID0geworCS5iTGVuZ3RoID0JCVVTQl9EVF9FTkRQT0lOVF9TSVpFLAorCS5iRGVzY3JpcHRvclR5cGUgPQlVU0JfRFRfRU5EUE9JTlQsCisKKwkuYkVuZHBvaW50QWRkcmVzcyA9CTAsCisJLmJtQXR0cmlidXRlcyA9CQlVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MLAorCS53TWF4UGFja2V0U2l6ZSA9CVVTQl9NQVhfQ1RSTF9QQVlMT0FELAorfTsKKworLyogaXQgaXMgaW5pdGlhbGl6ZWQgaW4gcHJvYmUoKSAgKi8KK3N0YXRpYyBzdHJ1Y3QgcWVfdWRjICp1ZGNfY29udHJvbGxlcjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgIEludGVybmFsIFVzZWQgRnVuY3Rpb24gU3RhcnQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZG9uZSgpIC0gcmV0aXJlIGEgcmVxdWVzdDsgY2FsbGVyIGJsb2NrZWQgaXJxcworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCBkb25lKHN0cnVjdCBxZV9lcCAqZXAsIHN0cnVjdCBxZV9yZXEgKnJlcSwgaW50IHN0YXR1cykKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSBlcC0+dWRjOworCXVuc2lnbmVkIGNoYXIgc3RvcHBlZCA9IGVwLT5zdG9wcGVkOworCisJLyogdGhlIHJlcS0+cXVldWUgcG9pbnRlciBpcyB1c2VkIGJ5IGVwX3F1ZXVlKCkgZnVuYywgaW4gd2hpY2gKKwkgKiB0aGUgcmVxdWVzdCB3aWxsIGJlIGFkZGVkIGludG8gYSB1ZGNfZXAtPnF1ZXVlICdkIHRhaWwKKwkgKiBzbyBoZXJlIHRoZSByZXEgd2lsbCBiZSBkcm9wcGVkIGZyb20gdGhlIGVwLT5xdWV1ZQorCSAqLworCWxpc3RfZGVsX2luaXQoJnJlcS0+cXVldWUpOworCisJLyogcmVxLnN0YXR1cyBzaG91bGQgYmUgc2V0IGFzIC1FSU5QUk9HUkVTUyBpbiBlcF9xdWV1ZSgpICovCisJaWYgKHJlcS0+cmVxLnN0YXR1cyA9PSAtRUlOUFJPR1JFU1MpCisJCXJlcS0+cmVxLnN0YXR1cyA9IHN0YXR1czsKKwllbHNlCisJCXN0YXR1cyA9IHJlcS0+cmVxLnN0YXR1czsKKworCWlmIChyZXEtPm1hcHBlZCkgeworCQlkbWFfdW5tYXBfc2luZ2xlKHVkYy0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQlyZXEtPnJlcS5kbWEsIHJlcS0+cmVxLmxlbmd0aCwKKwkJCWVwX2lzX2luKGVwKQorCQkJCT8gRE1BX1RPX0RFVklDRQorCQkJCTogRE1BX0ZST01fREVWSUNFKTsKKwkJcmVxLT5yZXEuZG1hID0gRE1BX0FERFJfSU5WQUxJRDsKKwkJcmVxLT5tYXBwZWQgPSAwOworCX0gZWxzZQorCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdSh1ZGMtPmdhZGdldC5kZXYucGFyZW50LAorCQkJcmVxLT5yZXEuZG1hLCByZXEtPnJlcS5sZW5ndGgsCisJCQllcF9pc19pbihlcCkKKwkJCQk/IERNQV9UT19ERVZJQ0UKKwkJCQk6IERNQV9GUk9NX0RFVklDRSk7CisKKwlpZiAoc3RhdHVzICYmIChzdGF0dXMgIT0gLUVTSFVURE9XTikpCisJCWRldl92ZGJnKHVkYy0+ZGV2LCAiY29tcGxldGUgJXMgcmVxICVwIHN0YXQgJWQgbGVuICV1LyV1XG4iLAorCQkJZXAtPmVwLm5hbWUsICZyZXEtPnJlcSwgc3RhdHVzLAorCQkJcmVxLT5yZXEuYWN0dWFsLCByZXEtPnJlcS5sZW5ndGgpOworCisJLyogZG9uJ3QgbW9kaWZ5IHF1ZXVlIGhlYWRzIGR1cmluZyBjb21wbGV0aW9uIGNhbGxiYWNrICovCisJZXAtPnN0b3BwZWQgPSAxOworCXNwaW5fdW5sb2NrKCZ1ZGMtPmxvY2spOworCisJLyogdGhpcyBjb21wbGV0ZSgpIHNob3VsZCBhIGZ1bmMgaW1wbGVtZW50ZWQgYnkgZ2FkZ2V0IGxheWVyLAorCSAqIGVnIGZzZy0+YnVsa19pbl9jb21wbGV0ZSgpICovCisJaWYgKHJlcS0+cmVxLmNvbXBsZXRlKQorCQlyZXEtPnJlcS5jb21wbGV0ZSgmZXAtPmVwLCAmcmVxLT5yZXEpOworCisJc3Bpbl9sb2NrKCZ1ZGMtPmxvY2spOworCisJZXAtPnN0b3BwZWQgPSBzdG9wcGVkOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBudWtlKCk6IGRlbGV0ZSBhbGwgcmVxdWVzdHMgcmVsYXRlZCB0byB0aGlzIGVwCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIG51a2Uoc3RydWN0IHFlX2VwICplcCwgaW50IHN0YXR1cykKK3sKKwkvKiBXaGV0aGVyIHRoaXMgZXEgaGFzIHJlcXVlc3QgbGlua2VkICovCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZlcC0+cXVldWUpKSB7CisJCXN0cnVjdCBxZV9yZXEgKnJlcSA9IE5VTEw7CisJCXJlcSA9IGxpc3RfZW50cnkoZXAtPnF1ZXVlLm5leHQsIHN0cnVjdCBxZV9yZXEsIHF1ZXVlKTsKKworCQlkb25lKGVwLCByZXEsIHN0YXR1cyk7CisJfQorfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIFVTQiBhbmQgRW5kcG9pbnQgbWFuaXB1bGF0ZSBwcm9jZXNzLCBpbmNsdWRlIHBhcmFtZXRlciBhbmQgcmVnaXN0ZXIgICAgICAgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogQHZhbHVlOiAxLS1zZXQgc3RhbGwgMC0tY2xlYW4gc3RhbGwgKi8KK3N0YXRpYyBpbnQgcWVfZXByeF9zdGFsbF9jaGFuZ2Uoc3RydWN0IHFlX2VwICplcCwgaW50IHZhbHVlKQoreworCXUxNiB0ZW1fdXNlcDsKKwl1OCBlcG51bSA9IGVwLT5lcG51bTsKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSBlcC0+dWRjOworCisJdGVtX3VzZXAgPSBpbl9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNlcFtlcG51bV0pOworCXRlbV91c2VwID0gdGVtX3VzZXAgJiB+VVNCX1JIU19NQVNLOworCWlmICh2YWx1ZSA9PSAxKQorCQl0ZW1fdXNlcCB8PSBVU0JfUkhTX1NUQUxMOworCWVsc2UgaWYgKGVwLT5kaXIgPT0gVVNCX0RJUl9JTikKKwkJdGVtX3VzZXAgfD0gVVNCX1JIU19JR05PUkVfT1VUOworCisJb3V0X2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2VwW2VwbnVtXSwgdGVtX3VzZXApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwdHhfc3RhbGxfY2hhbmdlKHN0cnVjdCBxZV9lcCAqZXAsIGludCB2YWx1ZSkKK3sKKwl1MTYgdGVtX3VzZXA7CisJdTggZXBudW0gPSBlcC0+ZXBudW07CisJc3RydWN0IHFlX3VkYyAqdWRjID0gZXAtPnVkYzsKKworCXRlbV91c2VwID0gaW5fYmUxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzZXBbZXBudW1dKTsKKwl0ZW1fdXNlcCA9IHRlbV91c2VwICYgflVTQl9USFNfTUFTSzsKKwlpZiAodmFsdWUgPT0gMSkKKwkJdGVtX3VzZXAgfD0gVVNCX1RIU19TVEFMTDsKKwllbHNlIGlmIChlcC0+ZGlyID09IFVTQl9ESVJfT1VUKQorCQl0ZW1fdXNlcCB8PSBVU0JfVEhTX0lHTk9SRV9JTjsKKworCW91dF9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNlcFtlcG51bV0sIHRlbV91c2VwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwMF9zdGFsbChzdHJ1Y3QgcWVfdWRjICp1ZGMpCit7CisJcWVfZXB0eF9zdGFsbF9jaGFuZ2UoJnVkYy0+ZXBzWzBdLCAxKTsKKwlxZV9lcHJ4X3N0YWxsX2NoYW5nZSgmdWRjLT5lcHNbMF0sIDEpOworCXVkY19jb250cm9sbGVyLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKKwl1ZGNfY29udHJvbGxlci0+ZXAwX2RpciA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcWVfZXByeF9uYWNrKHN0cnVjdCBxZV9lcCAqZXApCit7CisJdTggZXBudW0gPSBlcC0+ZXBudW07CisJc3RydWN0IHFlX3VkYyAqdWRjID0gZXAtPnVkYzsKKworCWlmIChlcC0+c3RhdGUgPT0gRVBfU1RBVEVfSURMRSkgeworCQkvKiBTZXQgdGhlIGVwJ3MgbmFjayAqLworCQljbHJzZXRiaXRzX2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2VwW2VwbnVtXSwKKwkJCQlVU0JfUkhTX01BU0ssIFVTQl9SSFNfTkFDSyk7CisKKwkJLyogTWFzayBSeCBhbmQgQnVzeSBpbnRlcnJ1cHRzICovCisJCWNscmJpdHMxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzYm1yLAorCQkJCShVU0JfRV9SWEJfTUFTSyB8IFVTQl9FX0JTWV9NQVNLKSk7CisKKwkJZXAtPnN0YXRlID0gRVBfU1RBVEVfTkFDSzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcWVfZXByeF9ub3JtYWwoc3RydWN0IHFlX2VwICplcCkKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSBlcC0+dWRjOworCisJaWYgKGVwLT5zdGF0ZSA9PSBFUF9TVEFURV9OQUNLKSB7CisJCWNscnNldGJpdHNfYmUxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzZXBbZXAtPmVwbnVtXSwKKwkJCQlVU0JfUlRIU19NQVNLLCBVU0JfVEhTX0lHTk9SRV9JTik7CisKKwkJLyogVW5tYXNrIFJYIGludGVycnVwdHMgKi8KKwkJb3V0X2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2JlciwKKwkJCQlVU0JfRV9CU1lfTUFTSyB8IFVTQl9FX1JYQl9NQVNLKTsKKwkJc2V0Yml0czE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNibXIsCisJCQkJKFVTQl9FX1JYQl9NQVNLIHwgVVNCX0VfQlNZX01BU0spKTsKKworCQllcC0+c3RhdGUgPSBFUF9TVEFURV9JRExFOworCQllcC0+aGFzX2RhdGEgPSAwOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwX2NtZF9zdG9wdHgoc3RydWN0IHFlX2VwICplcCkKK3sKKwlpZiAoZXAtPnVkYy0+c29jX3R5cGUgPT0gUE9SVF9DUE0pCisJCWNwbV9jb21tYW5kKENQTV9VU0JfU1RPUF9UWCB8IChlcC0+ZXBudW0gPDwgQ1BNX1VTQl9FUF9TSElGVCksCisJCQkJQ1BNX1VTQl9TVE9QX1RYX09QQ09ERSk7CisJZWxzZQorCQlxZV9pc3N1ZV9jbWQoUUVfVVNCX1NUT1BfVFgsIFFFX0NSX1NVQkJMT0NLX1VTQiwKKwkJCQllcC0+ZXBudW0sIDApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcWVfZXBfY21kX3Jlc3RhcnR0eChzdHJ1Y3QgcWVfZXAgKmVwKQoreworCWlmIChlcC0+dWRjLT5zb2NfdHlwZSA9PSBQT1JUX0NQTSkKKwkJY3BtX2NvbW1hbmQoQ1BNX1VTQl9SRVNUQVJUX1RYIHwgKGVwLT5lcG51bSA8PAorCQkJCUNQTV9VU0JfRVBfU0hJRlQpLCBDUE1fVVNCX1JFU1RBUlRfVFhfT1BDT0RFKTsKKwllbHNlCisJCXFlX2lzc3VlX2NtZChRRV9VU0JfUkVTVEFSVF9UWCwgUUVfQ1JfU1VCQkxPQ0tfVVNCLAorCQkJCWVwLT5lcG51bSwgMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9mbHVzaHR4ZmlmbyhzdHJ1Y3QgcWVfZXAgKmVwKQoreworCXN0cnVjdCBxZV91ZGMgKnVkYyA9IGVwLT51ZGM7CisJaW50IGk7CisKKwlpID0gKGludCllcC0+ZXBudW07CisKKwlxZV9lcF9jbWRfc3RvcHR4KGVwKTsKKwlvdXRfOCgmdWRjLT51c2JfcmVncy0+dXNiX3VzY29tLAorCQlVU0JfQ01EX0ZMVVNIX0ZJRk8gfCAoVVNCX0NNRF9FUF9NQVNLICYgKGVwLT5lcG51bSkpKTsKKwlvdXRfYmUxNigmdWRjLT5lcF9wYXJhbVtpXS0+dGJwdHIsIGluX2JlMTYoJnVkYy0+ZXBfcGFyYW1baV0tPnRiYXNlKSk7CisJb3V0X2JlMzIoJnVkYy0+ZXBfcGFyYW1baV0tPnRzdGF0ZSwgMCk7CisJb3V0X2JlMTYoJnVkYy0+ZXBfcGFyYW1baV0tPnRiY250LCAwKTsKKworCWVwLT5jX3R4YmQgPSBlcC0+dHhiYXNlOworCWVwLT5uX3R4YmQgPSBlcC0+dHhiYXNlOworCXFlX2VwX2NtZF9yZXN0YXJ0dHgoZXApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwX2ZpbGx0eGZpZm8oc3RydWN0IHFlX2VwICplcCkKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSBlcC0+dWRjOworCisJb3V0XzgoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2NvbSwKKwkJCVVTQl9DTURfU1RSX0ZJRk8gfCAoVVNCX0NNRF9FUF9NQVNLICYgKGVwLT5lcG51bSkpKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcGJkc19yZXNldChzdHJ1Y3QgcWVfdWRjICp1ZGMsIGludCBwaXBlX251bSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwOworCXUzMiBiZHJpbmdfbGVuOworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpiZDsKKwlpbnQgaTsKKworCWVwID0gJnVkYy0+ZXBzW3BpcGVfbnVtXTsKKworCWlmIChlcC0+ZGlyID09IFVTQl9ESVJfT1VUKQorCQliZHJpbmdfbGVuID0gVVNCX0JEUklOR19MRU5fUlg7CisJZWxzZQorCQliZHJpbmdfbGVuID0gVVNCX0JEUklOR19MRU47CisKKwliZCA9IGVwLT5yeGJhc2U7CisJZm9yIChpID0gMDsgaSA8IChiZHJpbmdfbGVuIC0gMSk7IGkrKykgeworCQlvdXRfYmUzMigodTMyIF9faW9tZW0gKiliZCwgUl9FIHwgUl9JKTsKKwkJYmQrKzsKKwl9CisJb3V0X2JlMzIoKHUzMiBfX2lvbWVtICopYmQsIFJfRSB8IFJfSSB8IFJfVyk7CisKKwliZCA9IGVwLT50eGJhc2U7CisJZm9yIChpID0gMDsgaSA8IFVTQl9CRFJJTkdfTEVOX1RYIC0gMTsgaSsrKSB7CisJCW91dF9iZTMyKCZiZC0+YnVmLCAwKTsKKwkJb3V0X2JlMzIoKHUzMiBfX2lvbWVtICopYmQsIDApOworCQliZCsrOworCX0KKwlvdXRfYmUzMigodTMyIF9faW9tZW0gKiliZCwgVF9XKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwX3Jlc2V0KHN0cnVjdCBxZV91ZGMgKnVkYywgaW50IHBpcGVfbnVtKQoreworCXN0cnVjdCBxZV9lcCAqZXA7CisJdTE2IHRtcHVzZXA7CisKKwllcCA9ICZ1ZGMtPmVwc1twaXBlX251bV07CisJdG1wdXNlcCA9IGluX2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2VwW3BpcGVfbnVtXSk7CisJdG1wdXNlcCAmPSB+VVNCX1JUSFNfTUFTSzsKKworCXN3aXRjaCAoZXAtPmRpcikgeworCWNhc2UgVVNCX0RJUl9CT1RIOgorCQlxZV9lcF9mbHVzaHR4ZmlmbyhlcCk7CisJCWJyZWFrOworCWNhc2UgVVNCX0RJUl9PVVQ6CisJCXRtcHVzZXAgfD0gVVNCX1RIU19JR05PUkVfSU47CisJCWJyZWFrOworCWNhc2UgVVNCX0RJUl9JTjoKKwkJcWVfZXBfZmx1c2h0eGZpZm8oZXApOworCQl0bXB1c2VwIHw9IFVTQl9SSFNfSUdOT1JFX09VVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCW91dF9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNlcFtwaXBlX251bV0sIHRtcHVzZXApOworCisJcWVfZXBiZHNfcmVzZXQodWRjLCBwaXBlX251bSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF90b2dnbGVkYXRhMDEoc3RydWN0IHFlX2VwICplcCkKK3sKKwllcC0+ZGF0YTAxIF49IDB4MTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9iZF9pbml0KHN0cnVjdCBxZV91ZGMgKnVkYywgdW5zaWduZWQgY2hhciBwaXBlX251bSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gJnVkYy0+ZXBzW3BpcGVfbnVtXTsKKwl1bnNpZ25lZCBsb25nIHRtcF9hZGRyID0gMDsKKwlzdHJ1Y3QgdXNiX2VwX3BhcmEgX19pb21lbSAqZXBwYXJhbTsKKwlpbnQgaTsKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqYmQ7CisJaW50IGJkcmluZ19sZW47CisKKwlpZiAoZXAtPmRpciA9PSBVU0JfRElSX09VVCkKKwkJYmRyaW5nX2xlbiA9IFVTQl9CRFJJTkdfTEVOX1JYOworCWVsc2UKKwkJYmRyaW5nX2xlbiA9IFVTQl9CRFJJTkdfTEVOOworCisJZXBwYXJhbSA9IHVkYy0+ZXBfcGFyYW1bcGlwZV9udW1dOworCS8qIGFsbG9jIG11bHRpLXJhbSBmb3IgQkQgcmluZ3MgYW5kIHNldCB0aGUgZXAgcGFyYW1ldGVycyAqLworCXRtcF9hZGRyID0gY3BtX211cmFtX2FsbG9jKHNpemVvZihzdHJ1Y3QgcWVfYmQpICogKGJkcmluZ19sZW4gKworCQkJCVVTQl9CRFJJTkdfTEVOX1RYKSwgUUVfQUxJR05NRU5UX09GX0JEKTsKKwlvdXRfYmUxNigmZXBwYXJhbS0+cmJhc2UsICh1MTYpdG1wX2FkZHIpOworCW91dF9iZTE2KCZlcHBhcmFtLT50YmFzZSwgKHUxNikodG1wX2FkZHIgKworCQkJCShzaXplb2Yoc3RydWN0IHFlX2JkKSAqIGJkcmluZ19sZW4pKSk7CisKKwlvdXRfYmUxNigmZXBwYXJhbS0+cmJwdHIsIGluX2JlMTYoJmVwcGFyYW0tPnJiYXNlKSk7CisJb3V0X2JlMTYoJmVwcGFyYW0tPnRicHRyLCBpbl9iZTE2KCZlcHBhcmFtLT50YmFzZSkpOworCisJZXAtPnJ4YmFzZSA9IGNwbV9tdXJhbV9hZGRyKHRtcF9hZGRyKTsKKwllcC0+dHhiYXNlID0gY3BtX211cmFtX2FkZHIodG1wX2FkZHIgKyAoc2l6ZW9mKHN0cnVjdCBxZV9iZCkKKwkJCQkqIGJkcmluZ19sZW4pKTsKKwllcC0+bl9yeGJkID0gZXAtPnJ4YmFzZTsKKwllcC0+ZV9yeGJkID0gZXAtPnJ4YmFzZTsKKwllcC0+bl90eGJkID0gZXAtPnR4YmFzZTsKKwllcC0+Y190eGJkID0gZXAtPnR4YmFzZTsKKwllcC0+ZGF0YTAxID0gMDsgLyogZGF0YTAgKi8KKworCS8qIEluaXQgVFggYW5kIFJYIGJkcyAqLworCWJkID0gZXAtPnJ4YmFzZTsKKwlmb3IgKGkgPSAwOyBpIDwgYmRyaW5nX2xlbiAtIDE7IGkrKykgeworCQlvdXRfYmUzMigmYmQtPmJ1ZiwgMCk7CisJCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCAwKTsKKwkJYmQrKzsKKwl9CisJb3V0X2JlMzIoJmJkLT5idWYsIDApOworCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCBSX1cpOworCisJYmQgPSBlcC0+dHhiYXNlOworCWZvciAoaSA9IDA7IGkgPCBVU0JfQkRSSU5HX0xFTl9UWCAtIDE7IGkrKykgeworCQlvdXRfYmUzMigmYmQtPmJ1ZiwgMCk7CisJCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCAwKTsKKwkJYmQrKzsKKwl9CisJb3V0X2JlMzIoJmJkLT5idWYsIDApOworCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCBUX1cpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcWVfZXBfcnhiZF91cGRhdGUoc3RydWN0IHFlX2VwICplcCkKK3sKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgdG1wOworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpiZDsKKwl1bnNpZ25lZCBpbnQgYmRyaW5nX2xlbjsKKworCWlmIChlcC0+cnhiYXNlID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCisJYmQgPSBlcC0+cnhiYXNlOworCisJZXAtPnJ4ZnJhbWUgPSBrbWFsbG9jKHNpemVvZigqZXAtPnJ4ZnJhbWUpLCBHRlBfQVRPTUlDKTsKKwlpZiAoZXAtPnJ4ZnJhbWUgPT0gTlVMTCkgeworCQlkZXZfZXJyKGVwLT51ZGMtPmRldiwgIm1hbGxvYyByeGZyYW1lIGZhaWxlZFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXFlX2ZyYW1lX2luaXQoZXAtPnJ4ZnJhbWUpOworCisJaWYgKGVwLT5kaXIgPT0gVVNCX0RJUl9PVVQpCisJCWJkcmluZ19sZW4gPSBVU0JfQkRSSU5HX0xFTl9SWDsKKwllbHNlCisJCWJkcmluZ19sZW4gPSBVU0JfQkRSSU5HX0xFTjsKKworCXNpemUgPSAoZXAtPmVwLm1heHBhY2tldCArIFVTQl9DUkNfU0laRSArIDIpICogKGJkcmluZ19sZW4gKyAxKTsKKwllcC0+cnhidWZmZXIgPSBremFsbG9jKHNpemUsIEdGUF9BVE9NSUMpOworCWlmIChlcC0+cnhidWZmZXIgPT0gTlVMTCkgeworCQlkZXZfZXJyKGVwLT51ZGMtPmRldiwgIm1hbGxvYyByeGJ1ZmZlciBmYWlsZWQsc2l6ZT0lZFxuIiwKKwkJCQlzaXplKTsKKwkJa2ZyZWUoZXAtPnJ4ZnJhbWUpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwllcC0+cnhidWZfZCA9IHZpcnRfdG9fcGh5cygodm9pZCAqKWVwLT5yeGJ1ZmZlcik7CisJaWYgKGVwLT5yeGJ1Zl9kID09IERNQV9BRERSX0lOVkFMSUQpIHsKKwkJZXAtPnJ4YnVmX2QgPSBkbWFfbWFwX3NpbmdsZSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQkJCWVwLT5yeGJ1ZmZlciwKKwkJCQkJc2l6ZSwKKwkJCQkJRE1BX0ZST01fREVWSUNFKTsKKwkJZXAtPnJ4YnVmbWFwID0gMTsKKwl9IGVsc2UgeworCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQkJCWVwLT5yeGJ1Zl9kLCBzaXplLAorCQkJCQlETUFfRlJPTV9ERVZJQ0UpOworCQllcC0+cnhidWZtYXAgPSAwOworCX0KKworCXNpemUgPSBlcC0+ZXAubWF4cGFja2V0ICsgVVNCX0NSQ19TSVpFICsgMjsKKwl0bXAgPSBlcC0+cnhidWZfZDsKKwl0bXAgPSAodTMyKSgoKHRtcCA+PiAyKSA8PCAyKSArIDQpOworCisJZm9yIChpID0gMDsgaSA8IGJkcmluZ19sZW4gLSAxOyBpKyspIHsKKwkJb3V0X2JlMzIoJmJkLT5idWYsIHRtcCk7CisJCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCAoUl9FIHwgUl9JKSk7CisJCXRtcCA9IHRtcCArIHNpemU7CisJCWJkKys7CisJfQorCW91dF9iZTMyKCZiZC0+YnVmLCB0bXApOworCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCAoUl9FIHwgUl9JIHwgUl9XKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9yZWdpc3Rlcl9pbml0KHN0cnVjdCBxZV91ZGMgKnVkYywgdW5zaWduZWQgY2hhciBwaXBlX251bSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gJnVkYy0+ZXBzW3BpcGVfbnVtXTsKKwlzdHJ1Y3QgdXNiX2VwX3BhcmEgX19pb21lbSAqZXBwYXJhbTsKKwl1MTYgdXNlcCwgbG9nZXBudW07CisJdTE2IHRtcDsKKwl1OCBydGZjciA9IDA7CisKKwllcHBhcmFtID0gdWRjLT5lcF9wYXJhbVtwaXBlX251bV07CisKKwl1c2VwID0gMDsKKwlsb2dlcG51bSA9IChlcC0+ZGVzYy0+YkVuZHBvaW50QWRkcmVzcyAmIFVTQl9FTkRQT0lOVF9OVU1CRVJfTUFTSyk7CisJdXNlcCB8PSAobG9nZXBudW0gPDwgVVNCX0VQTlVNX1NISUZUKTsKKworCXN3aXRjaCAoZXAtPmRlc2MtPmJtQXR0cmlidXRlcyAmIDB4MDMpIHsKKwljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0JVTEs6CisJCXVzZXAgfD0gVVNCX1RSQU5TX0JVTEs7CisJCWJyZWFrOworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzoKKwkJdXNlcCB8PSAgVVNCX1RSQU5TX0lTTzsKKwkJYnJlYWs7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9JTlQ6CisJCXVzZXAgfD0gVVNCX1RSQU5TX0lOVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdXNlcCB8PSBVU0JfVFJBTlNfQ1RSOworCQlicmVhazsKKwl9CisKKwlzd2l0Y2ggKGVwLT5kaXIpIHsKKwljYXNlIFVTQl9ESVJfT1VUOgorCQl1c2VwIHw9IFVTQl9USFNfSUdOT1JFX0lOOworCQlicmVhazsKKwljYXNlIFVTQl9ESVJfSU46CisJCXVzZXAgfD0gVVNCX1JIU19JR05PUkVfT1VUOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJb3V0X2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2VwW3BpcGVfbnVtXSwgdXNlcCk7CisKKwlydGZjciA9IDB4MzA7CisJb3V0XzgoJmVwcGFyYW0tPnJibXIsIHJ0ZmNyKTsKKwlvdXRfOCgmZXBwYXJhbS0+dGJtciwgcnRmY3IpOworCisJdG1wID0gKHUxNikoZXAtPmVwLm1heHBhY2tldCArIFVTQl9DUkNfU0laRSk7CisJLyogTVJCTFIgbXVzdCBiZSBkaXZpc2JsZSBieSA0ICovCisJdG1wID0gKHUxNikoKCh0bXAgPj4gMikgPDwgMikgKyA0KTsKKwlvdXRfYmUxNigmZXBwYXJhbS0+bXJibHIsIHRtcCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9pbml0KHN0cnVjdCBxZV91ZGMgKnVkYywKKwkJICAgICAgdW5zaWduZWQgY2hhciBwaXBlX251bSwKKwkJICAgICAgY29uc3Qgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjKQoreworCXN0cnVjdCBxZV9lcCAqZXAgPSAmdWRjLT5lcHNbcGlwZV9udW1dOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldmFsID0gMDsKKwl1MTYgbWF4ID0gMDsKKworCW1heCA9IGxlMTZfdG9fY3B1KGRlc2MtPndNYXhQYWNrZXRTaXplKTsKKworCS8qIGNoZWNrIHRoZSBtYXggcGFja2FnZSBzaXplIHZhbGlkYXRlIGZvciB0aGlzIGVuZHBvaW50ICovCisJLyogUmVmZXIgdG8gVVNCMi4wIHNwZWMgdGFibGUgOS0xMywKKwkqLworCWlmIChwaXBlX251bSAhPSAwKSB7CisJCXN3aXRjaCAoZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spIHsKKwkJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9CVUxLOgorCQkJaWYgKHN0cnN0cihlcC0+ZXAubmFtZSwgIi1pc28iKQorCQkJCQl8fCBzdHJzdHIoZXAtPmVwLm5hbWUsICItaW50IikpCisJCQkJZ290byBlbl9kb25lOworCQkJc3dpdGNoICh1ZGMtPmdhZGdldC5zcGVlZCkgeworCQkJY2FzZSBVU0JfU1BFRURfSElHSDoKKwkJCWlmICgobWF4ID09IDEyOCkgfHwgKG1heCA9PSAyNTYpIHx8IChtYXggPT0gNTEyKSkKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJc3dpdGNoIChtYXgpIHsKKwkJCQljYXNlIDQ6CisJCQkJY2FzZSA4OgorCQkJCWNhc2UgMTY6CisJCQkJY2FzZSAzMjoKKwkJCQljYXNlIDY0OgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCWNhc2UgVVNCX1NQRUVEX0xPVzoKKwkJCQkJZ290byBlbl9kb25lOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lOVDoKKwkJCWlmIChzdHJzdHIoZXAtPmVwLm5hbWUsICItaXNvIikpCS8qIGJ1bGsgaXMgb2sgKi8KKwkJCQlnb3RvIGVuX2RvbmU7CisJCQlzd2l0Y2ggKHVkYy0+Z2FkZ2V0LnNwZWVkKSB7CisJCQljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQkJCWlmIChtYXggPD0gMTAyNCkKKwkJCQkJYnJlYWs7CisJCQljYXNlIFVTQl9TUEVFRF9GVUxMOgorCQkJCWlmIChtYXggPD0gNjQpCisJCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlpZiAobWF4IDw9IDgpCisJCQkJCWJyZWFrOworCQkJCWdvdG8gZW5fZG9uZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lTT0M6CisJCQlpZiAoc3Ryc3RyKGVwLT5lcC5uYW1lLCAiLWJ1bGsiKQorCQkJCXx8IHN0cnN0cihlcC0+ZXAubmFtZSwgIi1pbnQiKSkKKwkJCQlnb3RvIGVuX2RvbmU7CisJCQlzd2l0Y2ggKHVkYy0+Z2FkZ2V0LnNwZWVkKSB7CisJCQljYXNlIFVTQl9TUEVFRF9ISUdIOgorCQkJCWlmIChtYXggPD0gMTAyNCkKKwkJCQkJYnJlYWs7CisJCQljYXNlIFVTQl9TUEVFRF9GVUxMOgorCQkJCWlmIChtYXggPD0gMTAyMykKKwkJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWdvdG8gZW5fZG9uZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0w6CisJCQlpZiAoc3Ryc3RyKGVwLT5lcC5uYW1lLCAiLWlzbyIpCisJCQkJfHwgc3Ryc3RyKGVwLT5lcC5uYW1lLCAiLWludCIpKQorCQkJCWdvdG8gZW5fZG9uZTsKKwkJCXN3aXRjaCAodWRjLT5nYWRnZXQuc3BlZWQpIHsKKwkJCWNhc2UgVVNCX1NQRUVEX0hJR0g6CisJCQljYXNlIFVTQl9TUEVFRF9GVUxMOgorCQkJCXN3aXRjaCAobWF4KSB7CisJCQkJY2FzZSAxOgorCQkJCWNhc2UgMjoKKwkJCQljYXNlIDQ6CisJCQkJY2FzZSA4OgorCQkJCWNhc2UgMTY6CisJCQkJY2FzZSAzMjoKKwkJCQljYXNlIDY0OgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlnb3RvIGVuX2RvbmU7CisJCQkJfQorCQkJY2FzZSBVU0JfU1BFRURfTE9XOgorCQkJCXN3aXRjaCAobWF4KSB7CisJCQkJY2FzZSAxOgorCQkJCWNhc2UgMjoKKwkJCQljYXNlIDQ6CisJCQkJY2FzZSA4OgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlnb3RvIGVuX2RvbmU7CisJCQkJfQorCQkJZGVmYXVsdDoKKwkJCQlnb3RvIGVuX2RvbmU7CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZ290byBlbl9kb25lOworCQl9CisJfSAvKiBpZiBlcDAqLworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnVkYy0+bG9jaywgZmxhZ3MpOworCisJLyogaW5pdGlhbGl6ZSBlcCBzdHJ1Y3R1cmUgKi8KKwllcC0+ZXAubWF4cGFja2V0ID0gbWF4OworCWVwLT50bSA9ICh1OCkoZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spOworCWVwLT5kZXNjID0gZGVzYzsKKwllcC0+c3RvcHBlZCA9IDA7CisJZXAtPmluaXQgPSAxOworCisJaWYgKHBpcGVfbnVtID09IDApIHsKKwkJZXAtPmRpciA9IFVTQl9ESVJfQk9USDsKKwkJdWRjLT5lcDBfZGlyID0gVVNCX0RJUl9PVVQ7CisJCXVkYy0+ZXAwX3N0YXRlID0gV0FJVF9GT1JfU0VUVVA7CisJfSBlbHNlCXsKKwkJc3dpdGNoIChkZXNjLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0VORFBPSU5UX0RJUl9NQVNLKSB7CisJCWNhc2UgVVNCX0RJUl9PVVQ6CisJCQllcC0+ZGlyID0gVVNCX0RJUl9PVVQ7CisJCQlicmVhazsKKwkJY2FzZSBVU0JfRElSX0lOOgorCQkJZXAtPmRpciA9IFVTQl9ESVJfSU47CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKworCS8qIGhhcmR3YXJlIHNwZWNpYWwgb3BlcmF0aW9uICovCisJcWVfZXBfYmRfaW5pdCh1ZGMsIHBpcGVfbnVtKTsKKwlpZiAoKGVwLT50bSA9PSBVU0JQX1RNX0NUTCkgfHwgKGVwLT5kaXIgPT0gVVNCX0RJUl9PVVQpKSB7CisJCXJldmFsID0gcWVfZXBfcnhiZF91cGRhdGUoZXApOworCQlpZiAocmV2YWwpCisJCQlnb3RvIGVuX2RvbmUxOworCX0KKworCWlmICgoZXAtPnRtID09IFVTQlBfVE1fQ1RMKSB8fCAoZXAtPmRpciA9PSBVU0JfRElSX0lOKSkgeworCQllcC0+dHhmcmFtZSA9IGttYWxsb2Moc2l6ZW9mKCplcC0+dHhmcmFtZSksIEdGUF9BVE9NSUMpOworCQlpZiAoZXAtPnR4ZnJhbWUgPT0gTlVMTCkgeworCQkJZGV2X2Vycih1ZGMtPmRldiwgIm1hbGxvYyB0eGZyYW1lIGZhaWxlZFxuIik7CisJCQlnb3RvIGVuX2RvbmUyOworCQl9CisJCXFlX2ZyYW1lX2luaXQoZXAtPnR4ZnJhbWUpOworCX0KKworCXFlX2VwX3JlZ2lzdGVyX2luaXQodWRjLCBwaXBlX251bSk7CisKKwkvKiBOb3cgSFcgd2lsbCBiZSBOQUtpbmcgdHJhbnNmZXJzIHRvIHRoYXQgRVAsCisJICogdW50aWwgYSBidWZmZXIgaXMgcXVldWVkIHRvIGl0LiAqLworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVkYy0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Citlbl9kb25lMjoKKwlrZnJlZShlcC0+cnhidWZmZXIpOworCWtmcmVlKGVwLT5yeGZyYW1lKTsKK2VuX2RvbmUxOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVkYy0+bG9jaywgZmxhZ3MpOworZW5fZG9uZToKKwlkZXZfZGJnKHVkYy0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgJXNcbiIsIGVwLT5lcC5uYW1lKTsKKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHFlX3VzYl9lbmFibGUodm9pZCkKK3sKKwlzZXRiaXRzOCgmdWRjX2NvbnRyb2xsZXItPnVzYl9yZWdzLT51c2JfdXNtb2QsIFVTQl9NT0RFX0VOKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHFlX3VzYl9kaXNhYmxlKHZvaWQpCit7CisJY2xyYml0czgoJnVkY19jb250cm9sbGVyLT51c2JfcmVncy0+dXNiX3VzbW9kLCBVU0JfTU9ERV9FTik7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqCQlVU0IgYW5kIEVQIGJhc2ljIG1hbmlwdWxhdGUgZnVuY3Rpb24gZW5kCQkgICAgICAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJVURDIHRyYW5zbWl0IGFuZCByZWNlaXZlIHByb2Nlc3MKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCByZWN5Y2xlX29uZV9yeGJkKHN0cnVjdCBxZV9lcCAqZXApCit7CisJdTMyIGJkc3RhdHVzOworCisJYmRzdGF0dXMgPSBpbl9iZTMyKCh1MzIgX19pb21lbSAqKWVwLT5lX3J4YmQpOworCWJkc3RhdHVzID0gUl9JIHwgUl9FIHwgKGJkc3RhdHVzICYgUl9XKTsKKwlvdXRfYmUzMigodTMyIF9faW9tZW0gKillcC0+ZV9yeGJkLCBiZHN0YXR1cyk7CisKKwlpZiAoYmRzdGF0dXMgJiBSX1cpCisJCWVwLT5lX3J4YmQgPSBlcC0+cnhiYXNlOworCWVsc2UKKwkJZXAtPmVfcnhiZCsrOworfQorCitzdGF0aWMgdm9pZCByZWN5Y2xlX3J4YmRzKHN0cnVjdCBxZV9lcCAqZXAsIHVuc2lnbmVkIGNoYXIgc3RvcGF0bmV4dCkKK3sKKwl1MzIgYmRzdGF0dXM7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKmJkLCAqbmV4dGJkOworCXVuc2lnbmVkIGNoYXIgc3RvcCA9IDA7CisKKwluZXh0YmQgPSBlcC0+bl9yeGJkOworCWJkID0gZXAtPmVfcnhiZDsKKwliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCisJd2hpbGUgKCEoYmRzdGF0dXMgJiBSX0UpICYmICEoYmRzdGF0dXMgJiBCRF9MRU5HVEhfTUFTSykgJiYgIXN0b3ApIHsKKwkJYmRzdGF0dXMgPSBSX0UgfCBSX0kgfCAoYmRzdGF0dXMgJiBSX1cpOworCQlvdXRfYmUzMigodTMyIF9faW9tZW0gKiliZCwgYmRzdGF0dXMpOworCisJCWlmIChiZHN0YXR1cyAmIFJfVykKKwkJCWJkID0gZXAtPnJ4YmFzZTsKKwkJZWxzZQorCQkJYmQrKzsKKworCQliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCQlpZiAoc3RvcGF0bmV4dCAmJiAoYmQgPT0gbmV4dGJkKSkKKwkJCXN0b3AgPSAxOworCX0KKworCWVwLT5lX3J4YmQgPSBiZDsKK30KKworc3RhdGljIHZvaWQgZXBfcmVjeWNsZV9yeGJkcyhzdHJ1Y3QgcWVfZXAgKmVwKQoreworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpiZCA9IGVwLT5uX3J4YmQ7CisJdTMyIGJkc3RhdHVzOworCXU4IGVwbnVtID0gZXAtPmVwbnVtOworCXN0cnVjdCBxZV91ZGMgKnVkYyA9IGVwLT51ZGM7CisKKwliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCWlmICghKGJkc3RhdHVzICYgUl9FKSAmJiAhKGJkc3RhdHVzICYgQkRfTEVOR1RIX01BU0spKSB7CisJCWJkID0gZXAtPnJ4YmFzZSArCisJCQkJKChpbl9iZTE2KCZ1ZGMtPmVwX3BhcmFtW2VwbnVtXS0+cmJwdHIpIC0KKwkJCQkgIGluX2JlMTYoJnVkYy0+ZXBfcGFyYW1bZXBudW1dLT5yYmFzZSkpCisJCQkJID4+IDMpOworCQliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCisJCWlmIChiZHN0YXR1cyAmIFJfVykKKwkJCWJkID0gZXAtPnJ4YmFzZTsKKwkJZWxzZQorCQkJYmQrKzsKKworCQllcC0+ZV9yeGJkID0gYmQ7CisJCXJlY3ljbGVfcnhiZHMoZXAsIDApOworCQllcC0+ZV9yeGJkID0gZXAtPm5fcnhiZDsKKwl9IGVsc2UKKwkJcmVjeWNsZV9yeGJkcyhlcCwgMSk7CisKKwlpZiAoaW5fYmUxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzYmVyKSAmIFVTQl9FX0JTWV9NQVNLKQorCQlvdXRfYmUxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzYmVyLCBVU0JfRV9CU1lfTUFTSyk7CisKKwlpZiAoZXAtPmhhc19kYXRhIDw9IDAgJiYgKCFsaXN0X2VtcHR5KCZlcC0+cXVldWUpKSkKKwkJcWVfZXByeF9ub3JtYWwoZXApOworCisJZXAtPmxvY2FsbmFjayA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX3JlY2VpdmVkX2hhbmRsZShzdHJ1Y3QgcWVfdWRjICp1ZGMsCisJCQkJCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKnNldHVwKTsKK3N0YXRpYyBpbnQgcWVfZXBfcnhmcmFtZV9oYW5kbGUoc3RydWN0IHFlX2VwICplcCk7CitzdGF0aWMgdm9pZCBlcDBfcmVxX2NvbXBsZXRlKHN0cnVjdCBxZV91ZGMgKnVkYywgc3RydWN0IHFlX3JlcSAqcmVxKTsKKy8qIHdoZW4gQkQgUElEIGlzIHNldHVwLCBoYW5kbGUgdGhlIHBhY2tldCAqLworc3RhdGljIGludCBlcDBfc2V0dXBfaGFuZGxlKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gJnVkYy0+ZXBzWzBdOworCXN0cnVjdCBxZV9mcmFtZSAqcGZyYW1lOworCXVuc2lnbmVkIGludCBmc2l6ZTsKKwl1OCAqY3A7CisKKwlwZnJhbWUgPSBlcC0+cnhmcmFtZTsKKwlpZiAoKGZyYW1lX2dldF9pbmZvKHBmcmFtZSkgJiBQSURfU0VUVVApCisJCQkmJiAodWRjLT5lcDBfc3RhdGUgPT0gV0FJVF9GT1JfU0VUVVApKSB7CisJCWZzaXplID0gZnJhbWVfZ2V0X2xlbmd0aChwZnJhbWUpOworCQlpZiAodW5saWtlbHkoZnNpemUgIT0gOCkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJY3AgPSAodTggKikmdWRjLT5sb2NhbF9zZXR1cF9idWZmOworCQltZW1jcHkoY3AsIHBmcmFtZS0+ZGF0YSwgZnNpemUpOworCQllcC0+ZGF0YTAxID0gMTsKKworCQkvKiBoYW5kbGUgdGhlIHVzYiBjb21tYW5kIGJhc2Ugb24gdGhlIHVzYl9jdHJscmVxdWVzdCAqLworCQlzZXR1cF9yZWNlaXZlZF9oYW5kbGUodWRjLCAmdWRjLT5sb2NhbF9zZXR1cF9idWZmKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IHFlX2VwMF9yeChzdHJ1Y3QgcWVfdWRjICp1ZGMpCit7CisJc3RydWN0IHFlX2VwICplcCA9ICZ1ZGMtPmVwc1swXTsKKwlzdHJ1Y3QgcWVfZnJhbWUgKnBmcmFtZTsKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqYmQ7CisJdTMyIGJkc3RhdHVzLCBsZW5ndGg7CisJdTMyIHZhZGRyOworCisJcGZyYW1lID0gZXAtPnJ4ZnJhbWU7CisKKwlpZiAoZXAtPmRpciA9PSBVU0JfRElSX0lOKSB7CisJCWRldl9lcnIodWRjLT5kZXYsICJlcDAgbm90IGEgY29udHJvbCBlbmRwb2ludFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWJkID0gZXAtPm5fcnhiZDsKKwliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCWxlbmd0aCA9IGJkc3RhdHVzICYgQkRfTEVOR1RIX01BU0s7CisKKwl3aGlsZSAoIShiZHN0YXR1cyAmIFJfRSkgJiYgbGVuZ3RoKSB7CisJCWlmICgoYmRzdGF0dXMgJiBSX0YpICYmIChiZHN0YXR1cyAmIFJfTCkKKwkJCSYmICEoYmRzdGF0dXMgJiBSX0VSUk9SKSkgeworCQkJaWYgKGxlbmd0aCA9PSBVU0JfQ1JDX1NJWkUpIHsKKwkJCQl1ZGMtPmVwMF9zdGF0ZSA9IFdBSVRfRk9SX1NFVFVQOworCQkJCWRldl92ZGJnKHVkYy0+ZGV2LAorCQkJCQkicmVjZWl2ZSBhIFpMUCBpbiBzdGF0dXMgcGhhc2VcbiIpOworCQkJfSBlbHNlIHsKKwkJCQlxZV9mcmFtZV9jbGVhbihwZnJhbWUpOworCQkJCXZhZGRyID0gKHUzMilwaHlzX3RvX3ZpcnQoaW5fYmUzMigmYmQtPmJ1ZikpOworCQkJCWZyYW1lX3NldF9kYXRhKHBmcmFtZSwgKHU4ICopdmFkZHIpOworCQkJCWZyYW1lX3NldF9sZW5ndGgocGZyYW1lLAorCQkJCQkJKGxlbmd0aCAtIFVTQl9DUkNfU0laRSkpOworCQkJCWZyYW1lX3NldF9zdGF0dXMocGZyYW1lLCBGUkFNRV9PSyk7CisJCQkJc3dpdGNoIChiZHN0YXR1cyAmIFJfUElEKSB7CisJCQkJY2FzZSBSX1BJRF9TRVRVUDoKKwkJCQkJZnJhbWVfc2V0X2luZm8ocGZyYW1lLCBQSURfU0VUVVApOworCQkJCQlicmVhazsKKwkJCQljYXNlIFJfUElEX0RBVEExOgorCQkJCQlmcmFtZV9zZXRfaW5mbyhwZnJhbWUsIFBJRF9EQVRBMSk7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWZyYW1lX3NldF9pbmZvKHBmcmFtZSwgUElEX0RBVEEwKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKChiZHN0YXR1cyAmIFJfUElEKSA9PSBSX1BJRF9TRVRVUCkKKwkJCQkJZXAwX3NldHVwX2hhbmRsZSh1ZGMpOworCQkJCWVsc2UKKwkJCQkJcWVfZXBfcnhmcmFtZV9oYW5kbGUoZXApOworCQkJfQorCQl9IGVsc2UgeworCQkJZGV2X2Vycih1ZGMtPmRldiwgIlRoZSByZWNlaXZlIGZyYW1lIHdpdGggZXJyb3IhXG4iKTsKKwkJfQorCisJCS8qIG5vdGU6IGRvbid0IGNsZWFyIHRoZSByeGJkJ3MgYnVmZmVyIGFkZHJlc3MgKi8KKwkJcmVjeWNsZV9vbmVfcnhiZChlcCk7CisKKwkJLyogR2V0IG5leHQgQkQgKi8KKwkJaWYgKGJkc3RhdHVzICYgUl9XKQorCQkJYmQgPSBlcC0+cnhiYXNlOworCQllbHNlCisJCQliZCsrOworCisJCWJkc3RhdHVzID0gaW5fYmUzMigodTMyIF9faW9tZW0gKiliZCk7CisJCWxlbmd0aCA9IGJkc3RhdHVzICYgQkRfTEVOR1RIX01BU0s7CisKKwl9CisKKwllcC0+bl9yeGJkID0gYmQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9yeGZyYW1lX2hhbmRsZShzdHJ1Y3QgcWVfZXAgKmVwKQoreworCXN0cnVjdCBxZV9mcmFtZSAqcGZyYW1lOworCXU4IGZyYW1lcGlkID0gMDsKKwl1bnNpZ25lZCBpbnQgZnNpemU7CisJdTggKmNwOworCXN0cnVjdCBxZV9yZXEgKnJlcTsKKworCXBmcmFtZSA9IGVwLT5yeGZyYW1lOworCisJaWYgKGZyYW1lX2dldF9pbmZvKHBmcmFtZSkgJiBQSURfREFUQTEpCisJCWZyYW1lcGlkID0gMHgxOworCisJaWYgKGZyYW1lcGlkICE9IGVwLT5kYXRhMDEpIHsKKwkJZGV2X2VycihlcC0+dWRjLT5kZXYsICJ0aGUgZGF0YTAxIGVycm9yIVxuIik7CisJCXJldHVybiAtRUlPOworCX0KKworCWZzaXplID0gZnJhbWVfZ2V0X2xlbmd0aChwZnJhbWUpOworCWlmIChsaXN0X2VtcHR5KCZlcC0+cXVldWUpKSB7CisJCWRldl9lcnIoZXAtPnVkYy0+ZGV2LCAidGhlICVzIGhhdmUgbm8gcmVxdWV1ZSFcbiIsIGVwLT5uYW1lKTsKKwl9IGVsc2UgeworCQlyZXEgPSBsaXN0X2VudHJ5KGVwLT5xdWV1ZS5uZXh0LCBzdHJ1Y3QgcWVfcmVxLCBxdWV1ZSk7CisKKwkJY3AgPSAodTggKikocmVxLT5yZXEuYnVmKSArIHJlcS0+cmVxLmFjdHVhbDsKKwkJaWYgKGNwKSB7CisJCQltZW1jcHkoY3AsIHBmcmFtZS0+ZGF0YSwgZnNpemUpOworCQkJcmVxLT5yZXEuYWN0dWFsICs9IGZzaXplOworCQkJaWYgKChmc2l6ZSA8IGVwLT5lcC5tYXhwYWNrZXQpIHx8CisJCQkJCShyZXEtPnJlcS5hY3R1YWwgPj0gcmVxLT5yZXEubGVuZ3RoKSkgeworCQkJCWlmIChlcC0+ZXBudW0gPT0gMCkKKwkJCQkJZXAwX3JlcV9jb21wbGV0ZShlcC0+dWRjLCByZXEpOworCQkJCWVsc2UKKwkJCQkJZG9uZShlcCwgcmVxLCAwKTsKKwkJCQlpZiAobGlzdF9lbXB0eSgmZXAtPnF1ZXVlKSAmJiBlcC0+ZXBudW0gIT0gMCkKKwkJCQkJcWVfZXByeF9uYWNrKGVwKTsKKwkJCX0KKwkJfQorCX0KKworCXFlX2VwX3RvZ2dsZWRhdGEwMShlcCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXBfcnhfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IHFlX3VkYyAqdWRjID0gKHN0cnVjdCBxZV91ZGMgKilkYXRhOworCXN0cnVjdCBxZV9lcCAqZXA7CisJc3RydWN0IHFlX2ZyYW1lICpwZnJhbWU7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKmJkOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdTMyIGJkc3RhdHVzLCBsZW5ndGg7CisJdTMyIHZhZGRyLCBpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnVkYy0+bG9jaywgZmxhZ3MpOworCisJZm9yIChpID0gMTsgaSA8IFVTQl9NQVhfRU5EUE9JTlRTOyBpKyspIHsKKwkJZXAgPSAmdWRjLT5lcHNbaV07CisKKwkJaWYgKGVwLT5kaXIgPT0gVVNCX0RJUl9JTiB8fCBlcC0+ZW5hYmxlX3Rhc2tsZXQgPT0gMCkgeworCQkJZGV2X2RiZyh1ZGMtPmRldiwKKwkJCQkiVGhpcyBpcyBhIHRyYW5zbWl0IGVwIG9yIGRpc2FibGUgdGFza2xldCFcbiIpOworCQkJY29udGludWU7CisJCX0KKworCQlwZnJhbWUgPSBlcC0+cnhmcmFtZTsKKwkJYmQgPSBlcC0+bl9yeGJkOworCQliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCQlsZW5ndGggPSBiZHN0YXR1cyAmIEJEX0xFTkdUSF9NQVNLOworCisJCXdoaWxlICghKGJkc3RhdHVzICYgUl9FKSAmJiBsZW5ndGgpIHsKKwkJCWlmIChsaXN0X2VtcHR5KCZlcC0+cXVldWUpKSB7CisJCQkJcWVfZXByeF9uYWNrKGVwKTsKKwkJCQlkZXZfZGJnKHVkYy0+ZGV2LAorCQkJCQkiVGhlIHJ4ZXAgaGF2ZSBub3JlcSAlZFxuIiwKKwkJCQkJZXAtPmhhc19kYXRhKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKChiZHN0YXR1cyAmIFJfRikgJiYgKGJkc3RhdHVzICYgUl9MKQorCQkJCSYmICEoYmRzdGF0dXMgJiBSX0VSUk9SKSkgeworCQkJCXFlX2ZyYW1lX2NsZWFuKHBmcmFtZSk7CisJCQkJdmFkZHIgPSAodTMyKXBoeXNfdG9fdmlydChpbl9iZTMyKCZiZC0+YnVmKSk7CisJCQkJZnJhbWVfc2V0X2RhdGEocGZyYW1lLCAodTggKil2YWRkcik7CisJCQkJZnJhbWVfc2V0X2xlbmd0aChwZnJhbWUsCisJCQkJCQkobGVuZ3RoIC0gVVNCX0NSQ19TSVpFKSk7CisJCQkJZnJhbWVfc2V0X3N0YXR1cyhwZnJhbWUsIEZSQU1FX09LKTsKKwkJCQlzd2l0Y2ggKGJkc3RhdHVzICYgUl9QSUQpIHsKKwkJCQljYXNlIFJfUElEX0RBVEExOgorCQkJCQlmcmFtZV9zZXRfaW5mbyhwZnJhbWUsIFBJRF9EQVRBMSk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgUl9QSURfU0VUVVA6CisJCQkJCWZyYW1lX3NldF9pbmZvKHBmcmFtZSwgUElEX1NFVFVQKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZnJhbWVfc2V0X2luZm8ocGZyYW1lLCBQSURfREFUQTApOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJLyogaGFuZGxlIHRoZSByeCBmcmFtZSAqLworCQkJCXFlX2VwX3J4ZnJhbWVfaGFuZGxlKGVwKTsKKwkJCX0gZWxzZSB7CisJCQkJZGV2X2Vycih1ZGMtPmRldiwKKwkJCQkJImVycm9yIGluIHJlY2VpdmVkIGZyYW1lXG4iKTsKKwkJCX0KKwkJCS8qIG5vdGU6IGRvbid0IGNsZWFyIHRoZSByeGJkJ3MgYnVmZmVyIGFkZHJlc3MgKi8KKwkJCS8qY2xlYXIgdGhlIGxlbmd0aCAqLworCQkJb3V0X2JlMzIoKHUzMiBfX2lvbWVtICopYmQsIGJkc3RhdHVzICYgQkRfU1RBVFVTX01BU0spOworCQkJZXAtPmhhc19kYXRhLS07CisJCQlpZiAoIShlcC0+bG9jYWxuYWNrKSkKKwkJCQlyZWN5Y2xlX29uZV9yeGJkKGVwKTsKKworCQkJLyogR2V0IG5leHQgQkQgKi8KKwkJCWlmIChiZHN0YXR1cyAmIFJfVykKKwkJCQliZCA9IGVwLT5yeGJhc2U7CisJCQllbHNlCisJCQkJYmQrKzsKKworCQkJYmRzdGF0dXMgPSBpbl9iZTMyKCh1MzIgX19pb21lbSAqKWJkKTsKKwkJCWxlbmd0aCA9IGJkc3RhdHVzICYgQkRfTEVOR1RIX01BU0s7CisJCX0KKworCQllcC0+bl9yeGJkID0gYmQ7CisKKwkJaWYgKGVwLT5sb2NhbG5hY2spCisJCQllcF9yZWN5Y2xlX3J4YmRzKGVwKTsKKworCQllcC0+ZW5hYmxlX3Rhc2tsZXQgPSAwOworCX0gLyogZm9yIGk9MSAqLworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjLT5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgcWVfZXBfcngoc3RydWN0IHFlX2VwICplcCkKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGM7CisJc3RydWN0IHFlX2ZyYW1lICpwZnJhbWU7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKmJkOworCXUxNiBzd29mZnMsIHVjb2ZmcywgZW1wdHliZHM7CisKKwl1ZGMgPSBlcC0+dWRjOworCXBmcmFtZSA9IGVwLT5yeGZyYW1lOworCisJaWYgKGVwLT5kaXIgPT0gVVNCX0RJUl9JTikgeworCQlkZXZfZXJyKHVkYy0+ZGV2LCAidHJhbnNtaXQgZXAgaW4gcnggZnVuY3Rpb25cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwliZCA9IGVwLT5uX3J4YmQ7CisKKwlzd29mZnMgPSAodTE2KShiZCAtIGVwLT5yeGJhc2UpOworCXVjb2ZmcyA9ICh1MTYpKChpbl9iZTE2KCZ1ZGMtPmVwX3BhcmFtW2VwLT5lcG51bV0tPnJicHRyKSAtCisJCQlpbl9iZTE2KCZ1ZGMtPmVwX3BhcmFtW2VwLT5lcG51bV0tPnJiYXNlKSkgPj4gMyk7CisJaWYgKHN3b2ZmcyA8IHVjb2ZmcykKKwkJZW1wdHliZHMgPSBVU0JfQkRSSU5HX0xFTl9SWCAtIHVjb2ZmcyArIHN3b2ZmczsKKwllbHNlCisJCWVtcHR5YmRzID0gc3dvZmZzIC0gdWNvZmZzOworCisJaWYgKGVtcHR5YmRzIDwgTUlOX0VNUFRZX0JEUykgeworCQlxZV9lcHJ4X25hY2soZXApOworCQllcC0+bG9jYWxuYWNrID0gMTsKKwkJZGV2X3ZkYmcodWRjLT5kZXYsICIlZCBlbXB0eSBiZHMsIHNlbmQgTkFDS1xuIiwgZW1wdHliZHMpOworCX0KKwllcC0+aGFzX2RhdGEgPSBVU0JfQkRSSU5HX0xFTl9SWCAtIGVtcHR5YmRzOworCisJaWYgKGxpc3RfZW1wdHkoJmVwLT5xdWV1ZSkpIHsKKwkJcWVfZXByeF9uYWNrKGVwKTsKKwkJZGV2X3ZkYmcodWRjLT5kZXYsICJUaGUgcnhlcCBoYXZlIG5vIHJlcSBxdWV1ZWQgd2l0aCAlZCBCRHNcbiIsCisJCQkJZXAtPmhhc19kYXRhKTsKKwkJcmV0dXJuIDA7CisJfQorCisJdGFza2xldF9zY2hlZHVsZSgmdWRjLT5yeF90YXNrbGV0KTsKKwllcC0+ZW5hYmxlX3Rhc2tsZXQgPSAxOworCisJcmV0dXJuIDA7Cit9CisKKy8qIHNlbmQgZGF0YSBmcm9tIGEgZnJhbWUsIG5vIG1hdHRlciB3aGF0IHR4X3JlcSAqLworc3RhdGljIGludCBxZV9lcF90eChzdHJ1Y3QgcWVfZXAgKmVwLCBzdHJ1Y3QgcWVfZnJhbWUgKmZyYW1lKQoreworCXN0cnVjdCBxZV91ZGMgKnVkYyA9IGVwLT51ZGM7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKmJkOworCXUxNiBzYXZldXNibXI7CisJdTMyIGJkc3RhdHVzLCBwaWRtYXNrOworCXUzMiBwYWRkcjsKKworCWlmIChlcC0+ZGlyID09IFVTQl9ESVJfT1VUKSB7CisJCWRldl9lcnIodWRjLT5kZXYsICJyZWNlaXZlIGVwIHBhc3NlZCB0byB0eCBmdW5jdGlvblxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIERpc2FibGUgdGhlIFR4IGludGVycnVwdCAqLworCXNhdmV1c2JtciA9IGluX2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2Jtcik7CisJb3V0X2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2JtciwKKwkJCXNhdmV1c2JtciAmIH4oVVNCX0VfVFhCX01BU0sgfCBVU0JfRV9UWEVfTUFTSykpOworCisJYmQgPSBlcC0+bl90eGJkOworCWJkc3RhdHVzID0gaW5fYmUzMigodTMyIF9faW9tZW0gKiliZCk7CisKKwlpZiAoIShiZHN0YXR1cyAmIChUX1IgfCBCRF9MRU5HVEhfTUFTSykpKSB7CisJCWlmIChmcmFtZV9nZXRfbGVuZ3RoKGZyYW1lKSA9PSAwKSB7CisJCQlmcmFtZV9zZXRfZGF0YShmcmFtZSwgdWRjLT5udWxsYnVmKTsKKwkJCWZyYW1lX3NldF9sZW5ndGgoZnJhbWUsIDIpOworCQkJZnJhbWUtPmluZm8gfD0gKFpMUCB8IE5PX0NSQyk7CisJCQlkZXZfdmRiZyh1ZGMtPmRldiwgInRoZSBmcmFtZSBzaXplID0gMFxuIik7CisJCX0KKwkJcGFkZHIgPSB2aXJ0X3RvX3BoeXMoKHZvaWQgKilmcmFtZS0+ZGF0YSk7CisJCW91dF9iZTMyKCZiZC0+YnVmLCBwYWRkcik7CisJCWJkc3RhdHVzID0gKGJkc3RhdHVzJlRfVyk7CisJCWlmICghKGZyYW1lX2dldF9pbmZvKGZyYW1lKSAmIE5PX0NSQykpCisJCQliZHN0YXR1cyB8PSBUX1IgfCBUX0kgfCBUX0wgfCBUX1RDCisJCQkJCXwgZnJhbWVfZ2V0X2xlbmd0aChmcmFtZSk7CisJCWVsc2UKKwkJCWJkc3RhdHVzIHw9IFRfUiB8IFRfSSB8IFRfTCB8IGZyYW1lX2dldF9sZW5ndGgoZnJhbWUpOworCisJCS8qIGlmIHRoZSBwYWNrZXQgaXMgYSBaTFAgaW4gc3RhdHVzIHBoYXNlICovCisJCWlmICgoZXAtPmVwbnVtID09IDApICYmICh1ZGMtPmVwMF9zdGF0ZSA9PSBEQVRBX1NUQVRFX05FRURfWkxQKSkKKwkJCWVwLT5kYXRhMDEgPSAweDE7CisKKwkJaWYgKGVwLT5kYXRhMDEpIHsKKwkJCXBpZG1hc2sgPSBUX1BJRF9EQVRBMTsKKwkJCWZyYW1lLT5pbmZvIHw9IFBJRF9EQVRBMTsKKwkJfSBlbHNlIHsKKwkJCXBpZG1hc2sgPSBUX1BJRF9EQVRBMDsKKwkJCWZyYW1lLT5pbmZvIHw9IFBJRF9EQVRBMDsKKwkJfQorCQliZHN0YXR1cyB8PSBUX0NORjsKKwkJYmRzdGF0dXMgfD0gcGlkbWFzazsKKwkJb3V0X2JlMzIoKHUzMiBfX2lvbWVtICopYmQsIGJkc3RhdHVzKTsKKwkJcWVfZXBfZmlsbHR4ZmlmbyhlcCk7CisKKwkJLyogZW5hYmxlIHRoZSBUWCBpbnRlcnJ1cHQgKi8KKwkJb3V0X2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2Jtciwgc2F2ZXVzYm1yKTsKKworCQlxZV9lcF90b2dnbGVkYXRhMDEoZXApOworCQlpZiAoYmRzdGF0dXMgJiBUX1cpCisJCQllcC0+bl90eGJkID0gZXAtPnR4YmFzZTsKKwkJZWxzZQorCQkJZXAtPm5fdHhiZCsrOworCisJCXJldHVybiAwOworCX0gZWxzZSB7CisJCW91dF9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNibXIsIHNhdmV1c2Jtcik7CisJCWRldl92ZGJnKHVkYy0+ZGV2LCAiVGhlIHR4IGJkIGlzIG5vdCByZWFkeSFcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KK30KKworLyogd2hlbiBhIGJkIHdhcyB0cmFuc21pdHRlZCwgdGhlIGZ1bmN0aW9uIGNhbgorICogaGFuZGxlIHRoZSB0eF9yZXEsIG5vdCBpbmNsdWRlIGVwMCAgICAgICAgICAgKi8KK3N0YXRpYyBpbnQgdHhjb21wbGV0ZShzdHJ1Y3QgcWVfZXAgKmVwLCB1bnNpZ25lZCBjaGFyIHJlc3RhcnQpCit7CisJaWYgKGVwLT50eF9yZXEgIT0gTlVMTCkgeworCQlpZiAoIXJlc3RhcnQpIHsKKwkJCWludCBhc2VudCA9IGVwLT5sYXN0OworCQkJZXAtPnNlbnQgKz0gYXNlbnQ7CisJCQllcC0+bGFzdCAtPSBhc2VudDsKKwkJfSBlbHNlIHsKKwkJCWVwLT5sYXN0ID0gMDsKKwkJfQorCisJCS8qIGEgcmVxdWVzdCBhbHJlYWR5IHdlcmUgdHJhbnNtaXR0ZWQgY29tcGxldGVseSAqLworCQlpZiAoKGVwLT50eF9yZXEtPnJlcS5sZW5ndGggLSBlcC0+c2VudCkgPD0gMCkgeworCQkJZXAtPnR4X3JlcS0+cmVxLmFjdHVhbCA9ICh1bnNpZ25lZCBpbnQpZXAtPnNlbnQ7CisJCQlkb25lKGVwLCBlcC0+dHhfcmVxLCAwKTsKKwkJCWVwLT50eF9yZXEgPSBOVUxMOworCQkJZXAtPmxhc3QgPSAwOworCQkJZXAtPnNlbnQgPSAwOworCQl9CisJfQorCisJLyogd2Ugc2hvdWxkIGdhaW4gYSBuZXcgdHhfcmVxIGZvdCB0aGlzIGVuZHBvaW50ICovCisJaWYgKGVwLT50eF9yZXEgPT0gTlVMTCkgeworCQlpZiAoIWxpc3RfZW1wdHkoJmVwLT5xdWV1ZSkpIHsKKwkJCWVwLT50eF9yZXEgPSBsaXN0X2VudHJ5KGVwLT5xdWV1ZS5uZXh0LAlzdHJ1Y3QgcWVfcmVxLAorCQkJCQkJCXF1ZXVlKTsKKwkJCWVwLT5sYXN0ID0gMDsKKwkJCWVwLT5zZW50ID0gMDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCisvKiBnaXZlIGEgZnJhbWUgYW5kIGEgdHhfcmVxLCBzZW5kIHNvbWUgZGF0YSAqLworc3RhdGljIGludCBxZV91c2Jfc2VuZGRhdGEoc3RydWN0IHFlX2VwICplcCwgc3RydWN0IHFlX2ZyYW1lICpmcmFtZSkKK3sKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwl1OCAqYnVmOworCisJcWVfZnJhbWVfY2xlYW4oZnJhbWUpOworCXNpemUgPSBtaW5fdCh1MzIsIChlcC0+dHhfcmVxLT5yZXEubGVuZ3RoIC0gZXAtPnNlbnQpLAorCQkJCWVwLT5lcC5tYXhwYWNrZXQpOworCWJ1ZiA9ICh1OCAqKWVwLT50eF9yZXEtPnJlcS5idWYgKyBlcC0+c2VudDsKKwlpZiAoYnVmICYmIHNpemUpIHsKKwkJZXAtPmxhc3QgPSBzaXplOworCQlmcmFtZV9zZXRfZGF0YShmcmFtZSwgYnVmKTsKKwkJZnJhbWVfc2V0X2xlbmd0aChmcmFtZSwgc2l6ZSk7CisJCWZyYW1lX3NldF9zdGF0dXMoZnJhbWUsIEZSQU1FX09LKTsKKwkJZnJhbWVfc2V0X2luZm8oZnJhbWUsIDApOworCQlyZXR1cm4gcWVfZXBfdHgoZXAsIGZyYW1lKTsKKwl9CisJcmV0dXJuIC1FSU87Cit9CisKKy8qIGdpdmUgYSBmcmFtZSBzdHJ1Y3Qsc2VuZCBhIFpMUCAqLworc3RhdGljIGludCBzZW5kbnVsbGRhdGEoc3RydWN0IHFlX2VwICplcCwgc3RydWN0IHFlX2ZyYW1lICpmcmFtZSwgdWludCBpbmZvcikKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSBlcC0+dWRjOworCisJaWYgKGZyYW1lID09IE5VTEwpCisJCXJldHVybiAtRU5PREVWOworCisJcWVfZnJhbWVfY2xlYW4oZnJhbWUpOworCWZyYW1lX3NldF9kYXRhKGZyYW1lLCAodTggKil1ZGMtPm51bGxidWYpOworCWZyYW1lX3NldF9sZW5ndGgoZnJhbWUsIDIpOworCWZyYW1lX3NldF9zdGF0dXMoZnJhbWUsIEZSQU1FX09LKTsKKwlmcmFtZV9zZXRfaW5mbyhmcmFtZSwgKFpMUCB8IE5PX0NSQyB8IGluZm9yKSk7CisKKwlyZXR1cm4gcWVfZXBfdHgoZXAsIGZyYW1lKTsKK30KKworc3RhdGljIGludCBmcmFtZV9jcmVhdGVfdHgoc3RydWN0IHFlX2VwICplcCwgc3RydWN0IHFlX2ZyYW1lICpmcmFtZSkKK3sKKwlzdHJ1Y3QgcWVfcmVxICpyZXEgPSBlcC0+dHhfcmVxOworCWludCByZXZhbDsKKworCWlmIChyZXEgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoKHJlcS0+cmVxLmxlbmd0aCAtIGVwLT5zZW50KSA+IDApCisJCXJldmFsID0gcWVfdXNiX3NlbmRkYXRhKGVwLCBmcmFtZSk7CisJZWxzZQorCQlyZXZhbCA9IHNlbmRudWxsZGF0YShlcCwgZnJhbWUsIDApOworCisJcmV0dXJuIHJldmFsOworfQorCisvKiBpZiBkaXJlY3Rpb24gaXMgRElSX0lOLCB0aGUgc3RhdHVzIGlzIERldmljZS0+SG9zdAorICogaWYgZGlyZWN0aW9uIGlzIERJUl9PVVQsIHRoZSBzdGF0dXMgdHJhbnNhY3Rpb24gaXMgRGV2aWNlPC1Ib3N0CisgKiBpbiBzdGF0dXMgcGhhc2UsIHVkYyBjcmVhdGUgYSByZXF1ZXN0IGFuZCBnYWluIHN0YXR1cyAqLworc3RhdGljIGludCBlcDBfcHJpbWVfc3RhdHVzKHN0cnVjdCBxZV91ZGMgKnVkYywgaW50IGRpcmVjdGlvbikKK3sKKworCXN0cnVjdCBxZV9lcCAqZXAgPSAmdWRjLT5lcHNbMF07CisKKwlpZiAoZGlyZWN0aW9uID09IFVTQl9ESVJfSU4pIHsKKwkJdWRjLT5lcDBfc3RhdGUgPSBEQVRBX1NUQVRFX05FRURfWkxQOworCQl1ZGMtPmVwMF9kaXIgPSBVU0JfRElSX0lOOworCQlzZW5kbnVsbGRhdGEoZXAsIGVwLT50eGZyYW1lLCBTRVRVUF9TVEFUVVMgfCBOT19SRVEpOworCX0gZWxzZSB7CisJCXVkYy0+ZXAwX2RpciA9IFVTQl9ESVJfT1VUOworCQl1ZGMtPmVwMF9zdGF0ZSA9IFdBSVRfRk9SX09VVF9TVEFUVVM7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIGEgcmVxdWVzdCBjb21wbGV0ZSBpbiBlcDAsIHdoZXRoZXIgZ2FkZ2V0IHJlcXVlc3Qgb3IgdWRjIHJlcXVlc3QgKi8KK3N0YXRpYyB2b2lkIGVwMF9yZXFfY29tcGxldGUoc3RydWN0IHFlX3VkYyAqdWRjLCBzdHJ1Y3QgcWVfcmVxICpyZXEpCit7CisJc3RydWN0IHFlX2VwICplcCA9ICZ1ZGMtPmVwc1swXTsKKwkvKiBiZWNhdXNlIHVzYiBhbmQgZXAncyBzdGF0dXMgYWxyZWFkeSBiZWVuIHNldCBpbiBjaDlzZXRhZGRyZXNzKCkgKi8KKworCXN3aXRjaCAodWRjLT5lcDBfc3RhdGUpIHsKKwljYXNlIERBVEFfU1RBVEVfWE1JVDoKKwkJZG9uZShlcCwgcmVxLCAwKTsKKwkJLyogcmVjZWl2ZSBzdGF0dXMgcGhhc2UgKi8KKwkJaWYgKGVwMF9wcmltZV9zdGF0dXModWRjLCBVU0JfRElSX09VVCkpCisJCQlxZV9lcDBfc3RhbGwodWRjKTsKKwkJYnJlYWs7CisKKwljYXNlIERBVEFfU1RBVEVfTkVFRF9aTFA6CisJCWRvbmUoZXAsIHJlcSwgMCk7CisJCXVkYy0+ZXAwX3N0YXRlID0gV0FJVF9GT1JfU0VUVVA7CisJCWJyZWFrOworCisJY2FzZSBEQVRBX1NUQVRFX1JFQ1Y6CisJCWRvbmUoZXAsIHJlcSwgMCk7CisJCS8qIHNlbmQgc3RhdHVzIHBoYXNlICovCisJCWlmIChlcDBfcHJpbWVfc3RhdHVzKHVkYywgVVNCX0RJUl9JTikpCisJCQlxZV9lcDBfc3RhbGwodWRjKTsKKwkJYnJlYWs7CisKKwljYXNlIFdBSVRfRk9SX09VVF9TVEFUVVM6CisJCWRvbmUoZXAsIHJlcSwgMCk7CisJCXVkYy0+ZXAwX3N0YXRlID0gV0FJVF9GT1JfU0VUVVA7CisJCWJyZWFrOworCisJY2FzZSBXQUlUX0ZPUl9TRVRVUDoKKwkJZGV2X3ZkYmcodWRjLT5kZXYsICJVbmV4cGVjdGVkIGludGVycnVwdFxuIik7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcWVfZXAwX3N0YWxsKHVkYyk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGludCBlcDBfdHhjb21wbGV0ZShzdHJ1Y3QgcWVfZXAgKmVwLCB1bnNpZ25lZCBjaGFyIHJlc3RhcnQpCit7CisJc3RydWN0IHFlX3JlcSAqdHhfcmVxID0gTlVMTDsKKwlzdHJ1Y3QgcWVfZnJhbWUgKmZyYW1lID0gZXAtPnR4ZnJhbWU7CisKKwlpZiAoKGZyYW1lX2dldF9pbmZvKGZyYW1lKSAmIChaTFAgfCBOT19SRVEpKSA9PSAoWkxQIHwgTk9fUkVRKSkgeworCQlpZiAoIXJlc3RhcnQpCisJCQllcC0+dWRjLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKKwkJZWxzZQorCQkJc2VuZG51bGxkYXRhKGVwLCBlcC0+dHhmcmFtZSwgU0VUVVBfU1RBVFVTIHwgTk9fUkVRKTsKKwkJcmV0dXJuIDA7CisJfQorCisJdHhfcmVxID0gZXAtPnR4X3JlcTsKKwlpZiAodHhfcmVxICE9IE5VTEwpIHsKKwkJaWYgKCFyZXN0YXJ0KSB7CisJCQlpbnQgYXNlbnQgPSBlcC0+bGFzdDsKKwkJCWVwLT5zZW50ICs9IGFzZW50OworCQkJZXAtPmxhc3QgLT0gYXNlbnQ7CisJCX0gZWxzZSB7CisJCQllcC0+bGFzdCA9IDA7CisJCX0KKworCQkvKiBhIHJlcXVlc3QgYWxyZWFkeSB3ZXJlIHRyYW5zbWl0dGVkIGNvbXBsZXRlbHkgKi8KKwkJaWYgKChlcC0+dHhfcmVxLT5yZXEubGVuZ3RoIC0gZXAtPnNlbnQpIDw9IDApIHsKKwkJCWVwLT50eF9yZXEtPnJlcS5hY3R1YWwgPSAodW5zaWduZWQgaW50KWVwLT5zZW50OworCQkJZXAwX3JlcV9jb21wbGV0ZShlcC0+dWRjLCBlcC0+dHhfcmVxKTsKKwkJCWVwLT50eF9yZXEgPSBOVUxMOworCQkJZXAtPmxhc3QgPSAwOworCQkJZXAtPnNlbnQgPSAwOworCQl9CisJfSBlbHNlIHsKKwkJZGV2X3ZkYmcoZXAtPnVkYy0+ZGV2LCAidGhlIGVwMF9jb250cm9sbGVyIGhhdmUgbm8gcmVxXG4iKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlcDBfdHhmcmFtZV9oYW5kbGUoc3RydWN0IHFlX2VwICplcCkKK3sKKwkvKiBpZiBoYXZlIGVycm9yLCB0cmFuc21pdCBhZ2FpbiAqLworCWlmIChmcmFtZV9nZXRfc3RhdHVzKGVwLT50eGZyYW1lKSAmIEZSQU1FX0VSUk9SKSB7CisJCXFlX2VwX2ZsdXNodHhmaWZvKGVwKTsKKwkJZGV2X3ZkYmcoZXAtPnVkYy0+ZGV2LCAiVGhlIEVQMCB0cmFuc21pdCBkYXRhIGhhdmUgZXJyb3IhXG4iKTsKKwkJaWYgKGZyYW1lX2dldF9pbmZvKGVwLT50eGZyYW1lKSAmIFBJRF9EQVRBMCkKKwkJCWVwLT5kYXRhMDEgPSAwOworCQllbHNlCisJCQllcC0+ZGF0YTAxID0gMTsKKworCQllcDBfdHhjb21wbGV0ZShlcCwgMSk7CisJfSBlbHNlCisJCWVwMF90eGNvbXBsZXRlKGVwLCAwKTsKKworCWZyYW1lX2NyZWF0ZV90eChlcCwgZXAtPnR4ZnJhbWUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFlX2VwMF90eGNvbmYoc3RydWN0IHFlX2VwICplcCkKK3sKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqYmQ7CisJc3RydWN0IHFlX2ZyYW1lICpwZnJhbWU7CisJdTMyIGJkc3RhdHVzOworCisJYmQgPSBlcC0+Y190eGJkOworCWJkc3RhdHVzID0gaW5fYmUzMigodTMyIF9faW9tZW0gKiliZCk7CisJd2hpbGUgKCEoYmRzdGF0dXMgJiBUX1IpICYmIChiZHN0YXR1cyAmIH5UX1cpKSB7CisJCXBmcmFtZSA9IGVwLT50eGZyYW1lOworCisJCS8qIGNsZWFyIGFuZCByZWN5Y2xlIHRoZSBCRCAqLworCQlvdXRfYmUzMigodTMyIF9faW9tZW0gKiliZCwgYmRzdGF0dXMgJiBUX1cpOworCQlvdXRfYmUzMigmYmQtPmJ1ZiwgMCk7CisJCWlmIChiZHN0YXR1cyAmIFRfVykKKwkJCWVwLT5jX3R4YmQgPSBlcC0+dHhiYXNlOworCQllbHNlCisJCQllcC0+Y190eGJkKys7CisKKwkJaWYgKGVwLT5jX3R4YmQgPT0gZXAtPm5fdHhiZCkgeworCQkJaWYgKGJkc3RhdHVzICYgREVWSUNFX1RfRVJST1IpIHsKKwkJCQlmcmFtZV9zZXRfc3RhdHVzKHBmcmFtZSwgRlJBTUVfRVJST1IpOworCQkJCWlmIChiZHN0YXR1cyAmIFRfVE8pCisJCQkJCXBmcmFtZS0+c3RhdHVzIHw9IFRYX0VSX1RJTUVPVVQ7CisJCQkJaWYgKGJkc3RhdHVzICYgVF9VTikKKwkJCQkJcGZyYW1lLT5zdGF0dXMgfD0gVFhfRVJfVU5ERVJVTjsKKwkJCX0KKwkJCWVwMF90eGZyYW1lX2hhbmRsZShlcCk7CisJCX0KKworCQliZCA9IGVwLT5jX3R4YmQ7CisJCWJkc3RhdHVzID0gaW5fYmUzMigodTMyIF9faW9tZW0gKiliZCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXBfdHhmcmFtZV9oYW5kbGUoc3RydWN0IHFlX2VwICplcCkKK3sKKwlpZiAoZnJhbWVfZ2V0X3N0YXR1cyhlcC0+dHhmcmFtZSkgJiBGUkFNRV9FUlJPUikgeworCQlxZV9lcF9mbHVzaHR4ZmlmbyhlcCk7CisJCWRldl92ZGJnKGVwLT51ZGMtPmRldiwgIlRoZSBFUDAgdHJhbnNtaXQgZGF0YSBoYXZlIGVycm9yIVxuIik7CisJCWlmIChmcmFtZV9nZXRfaW5mbyhlcC0+dHhmcmFtZSkgJiBQSURfREFUQTApCisJCQllcC0+ZGF0YTAxID0gMDsKKwkJZWxzZQorCQkJZXAtPmRhdGEwMSA9IDE7CisKKwkJdHhjb21wbGV0ZShlcCwgMSk7CisJfSBlbHNlCisJCXR4Y29tcGxldGUoZXAsIDApOworCisJZnJhbWVfY3JlYXRlX3R4KGVwLCBlcC0+dHhmcmFtZSk7IC8qIHNlbmQgdGhlIGRhdGEgKi8KKwlyZXR1cm4gMDsKK30KKworLyogY29uZmlybSB0aGUgYWxyZWFkeSB0cmFpbnNtaXRlZCBiZCAqLworc3RhdGljIGludCBxZV9lcF90eGNvbmYoc3RydWN0IHFlX2VwICplcCkKK3sKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqYmQ7CisJc3RydWN0IHFlX2ZyYW1lICpwZnJhbWUgPSBOVUxMOworCXUzMiBiZHN0YXR1czsKKwl1bnNpZ25lZCBjaGFyIGJyZWFrb25yeGludGVycnVwdCA9IDA7CisKKwliZCA9IGVwLT5jX3R4YmQ7CisJYmRzdGF0dXMgPSBpbl9iZTMyKCh1MzIgX19pb21lbSAqKWJkKTsKKwl3aGlsZSAoIShiZHN0YXR1cyAmIFRfUikgJiYgKGJkc3RhdHVzICYgflRfVykpIHsKKwkJcGZyYW1lID0gZXAtPnR4ZnJhbWU7CisJCWlmIChiZHN0YXR1cyAmIERFVklDRV9UX0VSUk9SKSB7CisJCQlmcmFtZV9zZXRfc3RhdHVzKHBmcmFtZSwgRlJBTUVfRVJST1IpOworCQkJaWYgKGJkc3RhdHVzICYgVF9UTykKKwkJCQlwZnJhbWUtPnN0YXR1cyB8PSBUWF9FUl9USU1FT1VUOworCQkJaWYgKGJkc3RhdHVzICYgVF9VTikKKwkJCQlwZnJhbWUtPnN0YXR1cyB8PSBUWF9FUl9VTkRFUlVOOworCQl9CisKKwkJLyogY2xlYXIgYW5kIHJlY3ljbGUgdGhlIEJEICovCisJCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCBiZHN0YXR1cyAmIFRfVyk7CisJCW91dF9iZTMyKCZiZC0+YnVmLCAwKTsKKwkJaWYgKGJkc3RhdHVzICYgVF9XKQorCQkJZXAtPmNfdHhiZCA9IGVwLT50eGJhc2U7CisJCWVsc2UKKwkJCWVwLT5jX3R4YmQrKzsKKworCQkvKiBoYW5kbGUgdGhlIHR4IGZyYW1lICovCisJCWVwX3R4ZnJhbWVfaGFuZGxlKGVwKTsKKwkJYmQgPSBlcC0+Y190eGJkOworCQliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCX0KKwlpZiAoYnJlYWtvbnJ4aW50ZXJydXB0KQorCQlyZXR1cm4gLUVJTzsKKwllbHNlCisJCXJldHVybiAwOworfQorCisvKiBBZGQgYSByZXF1ZXN0IGluIHF1ZXVlLCBhbmQgdHJ5IHRvIHRyYW5zbWl0IGEgcGFja2V0ICovCitzdGF0aWMgaW50IGVwX3JlcV9zZW5kKHN0cnVjdCBxZV9lcCAqZXAsIHN0cnVjdCBxZV9yZXEgKnJlcSkKK3sKKwlpbnQgcmV2YWwgPSAwOworCisJaWYgKGVwLT50eF9yZXEgPT0gTlVMTCkgeworCQllcC0+c2VudCA9IDA7CisJCWVwLT5sYXN0ID0gMDsKKwkJdHhjb21wbGV0ZShlcCwgMCk7IC8qIGNhbiBnYWluIGEgbmV3IHR4X3JlcSAqLworCQlyZXZhbCA9IGZyYW1lX2NyZWF0ZV90eChlcCwgZXAtPnR4ZnJhbWUpOworCX0KKwlyZXR1cm4gcmV2YWw7Cit9CisKKy8qIE1heWJlIHRoaXMgaXMgYSBnb29kIGlkZWFsICovCitzdGF0aWMgaW50IGVwX3JlcV9yeChzdHJ1Y3QgcWVfZXAgKmVwLCBzdHJ1Y3QgcWVfcmVxICpyZXEpCit7CisJc3RydWN0IHFlX3VkYyAqdWRjID0gZXAtPnVkYzsKKwlzdHJ1Y3QgcWVfZnJhbWUgKnBmcmFtZSA9IE5VTEw7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKmJkOworCXUzMiBiZHN0YXR1cywgbGVuZ3RoOworCXUzMiB2YWRkciwgZnNpemU7CisJdTggKmNwOworCXU4IGZpbmlzaF9yZXEgPSAwOworCXU4IGZyYW1lcGlkOworCisJaWYgKGxpc3RfZW1wdHkoJmVwLT5xdWV1ZSkpIHsKKwkJZGV2X3ZkYmcodWRjLT5kZXYsICJ0aGUgcmVxIGFscmVhZHkgZmluaXNoIVxuIik7CisJCXJldHVybiAwOworCX0KKwlwZnJhbWUgPSBlcC0+cnhmcmFtZTsKKworCWJkID0gZXAtPm5fcnhiZDsKKwliZHN0YXR1cyA9IGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpOworCWxlbmd0aCA9IGJkc3RhdHVzICYgQkRfTEVOR1RIX01BU0s7CisKKwl3aGlsZSAoIShiZHN0YXR1cyAmIFJfRSkgJiYgbGVuZ3RoKSB7CisJCWlmIChmaW5pc2hfcmVxKQorCQkJYnJlYWs7CisJCWlmICgoYmRzdGF0dXMgJiBSX0YpICYmIChiZHN0YXR1cyAmIFJfTCkKKwkJCQkJJiYgIShiZHN0YXR1cyAmIFJfRVJST1IpKSB7CisJCQlxZV9mcmFtZV9jbGVhbihwZnJhbWUpOworCQkJdmFkZHIgPSAodTMyKXBoeXNfdG9fdmlydChpbl9iZTMyKCZiZC0+YnVmKSk7CisJCQlmcmFtZV9zZXRfZGF0YShwZnJhbWUsICh1OCAqKXZhZGRyKTsKKwkJCWZyYW1lX3NldF9sZW5ndGgocGZyYW1lLCAobGVuZ3RoIC0gVVNCX0NSQ19TSVpFKSk7CisJCQlmcmFtZV9zZXRfc3RhdHVzKHBmcmFtZSwgRlJBTUVfT0spOworCQkJc3dpdGNoIChiZHN0YXR1cyAmIFJfUElEKSB7CisJCQljYXNlIFJfUElEX0RBVEExOgorCQkJCWZyYW1lX3NldF9pbmZvKHBmcmFtZSwgUElEX0RBVEExKTsgYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWZyYW1lX3NldF9pbmZvKHBmcmFtZSwgUElEX0RBVEEwKTsgYnJlYWs7CisJCQl9CisJCQkvKiBoYW5kbGUgdGhlIHJ4IGZyYW1lICovCisKKwkJCWlmIChmcmFtZV9nZXRfaW5mbyhwZnJhbWUpICYgUElEX0RBVEExKQorCQkJCWZyYW1lcGlkID0gMHgxOworCQkJZWxzZQorCQkJCWZyYW1lcGlkID0gMDsKKworCQkJaWYgKGZyYW1lcGlkICE9IGVwLT5kYXRhMDEpIHsKKwkJCQlkZXZfdmRiZyh1ZGMtPmRldiwgInRoZSBkYXRhMDEgZXJyb3IhXG4iKTsKKwkJCX0gZWxzZSB7CisJCQkJZnNpemUgPSBmcmFtZV9nZXRfbGVuZ3RoKHBmcmFtZSk7CisKKwkJCQljcCA9ICh1OCAqKShyZXEtPnJlcS5idWYpICsgcmVxLT5yZXEuYWN0dWFsOworCQkJCWlmIChjcCkgeworCQkJCQltZW1jcHkoY3AsIHBmcmFtZS0+ZGF0YSwgZnNpemUpOworCQkJCQlyZXEtPnJlcS5hY3R1YWwgKz0gZnNpemU7CisJCQkJCWlmICgoZnNpemUgPCBlcC0+ZXAubWF4cGFja2V0KQorCQkJCQkJfHwgKHJlcS0+cmVxLmFjdHVhbCA+PQorCQkJCQkJCXJlcS0+cmVxLmxlbmd0aCkpIHsKKwkJCQkJCWZpbmlzaF9yZXEgPSAxOworCQkJCQkJZG9uZShlcCwgcmVxLCAwKTsKKwkJCQkJCWlmIChsaXN0X2VtcHR5KCZlcC0+cXVldWUpKQorCQkJCQkJCXFlX2VwcnhfbmFjayhlcCk7CisJCQkJCX0KKwkJCQl9CisJCQkJcWVfZXBfdG9nZ2xlZGF0YTAxKGVwKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWRldl9lcnIodWRjLT5kZXYsICJUaGUgcmVjZWl2ZSBmcmFtZSB3aXRoIGVycm9yIVxuIik7CisJCX0KKworCQkvKiBub3RlOiBkb24ndCBjbGVhciB0aGUgcnhiZCdzIGJ1ZmZlciBhZGRyZXNzICoKKwkJICogb25seSBDbGVhciB0aGUgbGVuZ3RoICovCisJCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWJkLCAoYmRzdGF0dXMgJiBCRF9TVEFUVVNfTUFTSykpOworCQllcC0+aGFzX2RhdGEtLTsKKworCQkvKiBHZXQgbmV4dCBCRCAqLworCQlpZiAoYmRzdGF0dXMgJiBSX1cpCisJCQliZCA9IGVwLT5yeGJhc2U7CisJCWVsc2UKKwkJCWJkKys7CisKKwkJYmRzdGF0dXMgPSBpbl9iZTMyKCh1MzIgX19pb21lbSAqKWJkKTsKKwkJbGVuZ3RoID0gYmRzdGF0dXMgJiBCRF9MRU5HVEhfTUFTSzsKKwl9CisKKwllcC0+bl9yeGJkID0gYmQ7CisJZXBfcmVjeWNsZV9yeGJkcyhlcCk7CisKKwlyZXR1cm4gMDsKK30KKworLyogb25seSBhZGQgdGhlIHJlcXVlc3QgaW4gcXVldWUgKi8KK3N0YXRpYyBpbnQgZXBfcmVxX3JlY2VpdmUoc3RydWN0IHFlX2VwICplcCwgc3RydWN0IHFlX3JlcSAqcmVxKQoreworCWlmIChlcC0+c3RhdGUgPT0gRVBfU1RBVEVfTkFDSykgeworCQlpZiAoZXAtPmhhc19kYXRhIDw9IDApIHsKKwkJCS8qIEVuYWJsZSByeCBhbmQgdW5tYXNrIHJ4IGludGVycnVwdCAqLworCQkJcWVfZXByeF9ub3JtYWwoZXApOworCQl9IGVsc2UgeworCQkJLyogQ29weSB0aGUgZXhpc3QgQkQgZGF0YSAqLworCQkJZXBfcmVxX3J4KGVwLCByZXEpOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCUludGVybmFsIFVzZWQgRnVuY3Rpb24gRW5kCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUVuZHBvaW50IE1hbmFnZW1lbnQgRnVuY3Rpb25zIEZvciBHYWRnZXQKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHFlX2VwX2VuYWJsZShzdHJ1Y3QgdXNiX2VwICpfZXAsCisJCQkgY29uc3Qgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjKQoreworCXN0cnVjdCBxZV91ZGMgKnVkYzsKKwlzdHJ1Y3QgcWVfZXAgKmVwOworCWludCByZXR2YWwgPSAwOworCXVuc2lnbmVkIGNoYXIgZXBudW07CisKKwllcCA9IGNvbnRhaW5lcl9vZihfZXAsIHN0cnVjdCBxZV9lcCwgZXApOworCisJLyogY2F0Y2ggdmFyaW91cyBib2d1cyBwYXJhbWV0ZXJzICovCisJaWYgKCFfZXAgfHwgIWRlc2MgfHwgZXAtPmRlc2MgfHwgX2VwLT5uYW1lID09IGVwX25hbWVbMF0gfHwKKwkJCShkZXNjLT5iRGVzY3JpcHRvclR5cGUgIT0gVVNCX0RUX0VORFBPSU5UKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl1ZGMgPSBlcC0+dWRjOworCWlmICghdWRjLT5kcml2ZXIgfHwgKHVkYy0+Z2FkZ2V0LnNwZWVkID09IFVTQl9TUEVFRF9VTktOT1dOKSkKKwkJcmV0dXJuIC1FU0hVVERPV047CisKKwllcG51bSA9ICh1OClkZXNjLT5iRW5kcG9pbnRBZGRyZXNzICYgMHhGOworCisJcmV0dmFsID0gcWVfZXBfaW5pdCh1ZGMsIGVwbnVtLCBkZXNjKTsKKwlpZiAocmV0dmFsICE9IDApIHsKKwkJY3BtX211cmFtX2ZyZWUoY3BtX211cmFtX29mZnNldChlcC0+cnhiYXNlKSk7CisJCWRldl9kYmcodWRjLT5kZXYsICJlbmFibGUgZXAlZCBmYWlsZWRcbiIsIGVwLT5lcG51bSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlkZXZfZGJnKHVkYy0+ZGV2LCAiZW5hYmxlIGVwJWQgc3VjY2Vzc2Z1bFxuIiwgZXAtPmVwbnVtKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxZV9lcF9kaXNhYmxlKHN0cnVjdCB1c2JfZXAgKl9lcCkKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGM7CisJc3RydWN0IHFlX2VwICplcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGludCBzaXplOworCisJZXAgPSBjb250YWluZXJfb2YoX2VwLCBzdHJ1Y3QgcWVfZXAsIGVwKTsKKwl1ZGMgPSBlcC0+dWRjOworCisJaWYgKCFfZXAgfHwgIWVwLT5kZXNjKSB7CisJCWRldl9kYmcodWRjLT5kZXYsICIlcyBub3QgZW5hYmxlZFxuIiwgX2VwID8gZXAtPmVwLm5hbWUgOiBOVUxMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoJnVkYy0+bG9jaywgZmxhZ3MpOworCS8qIE51a2UgYWxsIHBlbmRpbmcgcmVxdWVzdHMgKGRvZXMgZmx1c2gpICovCisJbnVrZShlcCwgLUVTSFVURE9XTik7CisJZXAtPmRlc2MgPSBOVUxMOworCWVwLT5zdG9wcGVkID0gMTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1ZGMtPmxvY2ssIGZsYWdzKTsKKworCWNwbV9tdXJhbV9mcmVlKGNwbV9tdXJhbV9vZmZzZXQoZXAtPnJ4YmFzZSkpOworCisJaWYgKGVwLT5kaXIgPT0gVVNCX0RJUl9PVVQpCisJCXNpemUgPSAoZXAtPmVwLm1heHBhY2tldCArIFVTQl9DUkNfU0laRSArIDIpICoKKwkJCQkoVVNCX0JEUklOR19MRU5fUlggKyAxKTsKKwllbHNlCisJCXNpemUgPSAoZXAtPmVwLm1heHBhY2tldCArIFVTQl9DUkNfU0laRSArIDIpICoKKwkJCQkoVVNCX0JEUklOR19MRU4gKyAxKTsKKworCWlmIChlcC0+ZGlyICE9IFVTQl9ESVJfSU4pIHsKKwkJa2ZyZWUoZXAtPnJ4ZnJhbWUpOworCQlpZiAoZXAtPnJ4YnVmbWFwKSB7CisJCQlkbWFfdW5tYXBfc2luZ2xlKHVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LnBhcmVudCwKKwkJCQkJZXAtPnJ4YnVmX2QsIHNpemUsCisJCQkJCURNQV9GUk9NX0RFVklDRSk7CisJCQllcC0+cnhidWZfZCA9IERNQV9BRERSX0lOVkFMSUQ7CisJCX0gZWxzZSB7CisJCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdSgKKwkJCQkJdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYucGFyZW50LAorCQkJCQllcC0+cnhidWZfZCwgc2l6ZSwKKwkJCQkJRE1BX0ZST01fREVWSUNFKTsKKwkJfQorCQlrZnJlZShlcC0+cnhidWZmZXIpOworCX0KKworCWlmIChlcC0+ZGlyICE9IFVTQl9ESVJfT1VUKQorCQlrZnJlZShlcC0+dHhmcmFtZSk7CisKKwlkZXZfZGJnKHVkYy0+ZGV2LCAiZGlzYWJsZWQgJXMgT0tcbiIsIF9lcC0+bmFtZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnFlX2FsbG9jX3JlcXVlc3Qoc3RydWN0IHVzYl9lcCAqX2VwLAlnZnBfdCBnZnBfZmxhZ3MpCit7CisJc3RydWN0IHFlX3JlcSAqcmVxOworCisJcmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIGdmcF9mbGFncyk7CisJaWYgKCFyZXEpCisJCXJldHVybiBOVUxMOworCisJcmVxLT5yZXEuZG1hID0gRE1BX0FERFJfSU5WQUxJRDsKKworCUlOSVRfTElTVF9IRUFEKCZyZXEtPnF1ZXVlKTsKKworCXJldHVybiAmcmVxLT5yZXE7Cit9CisKK3N0YXRpYyB2b2lkIHFlX2ZyZWVfcmVxdWVzdChzdHJ1Y3QgdXNiX2VwICpfZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqX3JlcSkKK3sKKwlzdHJ1Y3QgcWVfcmVxICpyZXE7CisKKwlyZXEgPSBjb250YWluZXJfb2YoX3JlcSwgc3RydWN0IHFlX3JlcSwgcmVxKTsKKworCWlmIChfcmVxKQorCQlrZnJlZShyZXEpOworfQorCisvKiBxdWV1ZXMgKHN1Ym1pdHMpIGFuIEkvTyByZXF1ZXN0IHRvIGFuIGVuZHBvaW50ICovCitzdGF0aWMgaW50IHFlX2VwX3F1ZXVlKHN0cnVjdCB1c2JfZXAgKl9lcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpfcmVxLAorCQkJCWdmcF90IGdmcF9mbGFncykKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gY29udGFpbmVyX29mKF9lcCwgc3RydWN0IHFlX2VwLCBlcCk7CisJc3RydWN0IHFlX3JlcSAqcmVxID0gY29udGFpbmVyX29mKF9yZXEsIHN0cnVjdCBxZV9yZXEsIHJlcSk7CisJc3RydWN0IHFlX3VkYyAqdWRjOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldmFsOworCisJdWRjID0gZXAtPnVkYzsKKwkvKiBjYXRjaCB2YXJpb3VzIGJvZ3VzIHBhcmFtZXRlcnMgKi8KKwlpZiAoIV9yZXEgfHwgIXJlcS0+cmVxLmNvbXBsZXRlIHx8ICFyZXEtPnJlcS5idWYKKwkJCXx8ICFsaXN0X2VtcHR5KCZyZXEtPnF1ZXVlKSkgeworCQlkZXZfZGJnKHVkYy0+ZGV2LCAiYmFkIHBhcmFtc1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlpZiAoIV9lcCB8fCAoIWVwLT5kZXNjICYmIGVwX2luZGV4KGVwKSkpIHsKKwkJZGV2X2RiZyh1ZGMtPmRldiwgImJhZCBlcFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICghdWRjLT5kcml2ZXIgfHwgdWRjLT5nYWRnZXQuc3BlZWQgPT0gVVNCX1NQRUVEX1VOS05PV04pCisJCXJldHVybiAtRVNIVVRET1dOOworCisJcmVxLT5lcCA9IGVwOworCisJLyogbWFwIHZpcnR1YWwgYWRkcmVzcyB0byBoYXJkd2FyZSAqLworCWlmIChyZXEtPnJlcS5kbWEgPT0gRE1BX0FERFJfSU5WQUxJRCkgeworCQlyZXEtPnJlcS5kbWEgPSBkbWFfbWFwX3NpbmdsZShlcC0+dWRjLT5nYWRnZXQuZGV2LnBhcmVudCwKKwkJCQkJcmVxLT5yZXEuYnVmLAorCQkJCQlyZXEtPnJlcS5sZW5ndGgsCisJCQkJCWVwX2lzX2luKGVwKQorCQkJCQk/IERNQV9UT19ERVZJQ0UgOgorCQkJCQlETUFfRlJPTV9ERVZJQ0UpOworCQlyZXEtPm1hcHBlZCA9IDE7CisJfSBlbHNlIHsKKwkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZXAtPnVkYy0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQkJCXJlcS0+cmVxLmRtYSwgcmVxLT5yZXEubGVuZ3RoLAorCQkJCQllcF9pc19pbihlcCkKKwkJCQkJPyBETUFfVE9fREVWSUNFIDoKKwkJCQkJRE1BX0ZST01fREVWSUNFKTsKKwkJcmVxLT5tYXBwZWQgPSAwOworCX0KKworCXJlcS0+cmVxLnN0YXR1cyA9IC1FSU5QUk9HUkVTUzsKKwlyZXEtPnJlcS5hY3R1YWwgPSAwOworCisJbGlzdF9hZGRfdGFpbCgmcmVxLT5xdWV1ZSwgJmVwLT5xdWV1ZSk7CisJZGV2X3ZkYmcodWRjLT5kZXYsICJnYWRnZXQgaGF2ZSByZXF1ZXN0IGluICVzISAlZFxuIiwKKwkJCWVwLT5uYW1lLCByZXEtPnJlcS5sZW5ndGgpOworCXNwaW5fbG9ja19pcnFzYXZlKCZ1ZGMtPmxvY2ssIGZsYWdzKTsKKwkvKiBwdXNoIHRoZSByZXF1ZXN0IHRvIGRldmljZSAqLworCWlmIChlcF9pc19pbihlcCkpCisJCXJldmFsID0gZXBfcmVxX3NlbmQoZXAsIHJlcSk7CisKKwkvKiBFUDAgKi8KKwlpZiAoZXBfaW5kZXgoZXApID09IDAgJiYgcmVxLT5yZXEubGVuZ3RoID4gMCkgeworCQlpZiAoZXBfaXNfaW4oZXApKQorCQkJdWRjLT5lcDBfc3RhdGUgPSBEQVRBX1NUQVRFX1hNSVQ7CisJCWVsc2UKKwkJCXVkYy0+ZXAwX3N0YXRlID0gREFUQV9TVEFURV9SRUNWOworCX0KKworCWlmIChlcC0+ZGlyID09IFVTQl9ESVJfT1VUKQorCQlyZXZhbCA9IGVwX3JlcV9yZWNlaXZlKGVwLCByZXEpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjLT5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworLyogZGVxdWV1ZXMgKGNhbmNlbHMsIHVubGlua3MpIGFuIEkvTyByZXF1ZXN0IGZyb20gYW4gZW5kcG9pbnQgKi8KK3N0YXRpYyBpbnQgcWVfZXBfZGVxdWV1ZShzdHJ1Y3QgdXNiX2VwICpfZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqX3JlcSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gY29udGFpbmVyX29mKF9lcCwgc3RydWN0IHFlX2VwLCBlcCk7CisJc3RydWN0IHFlX3JlcSAqcmVxOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIV9lcCB8fCAhX3JlcSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZXAtPnVkYy0+bG9jaywgZmxhZ3MpOworCisJLyogbWFrZSBzdXJlIGl0J3MgYWN0dWFsbHkgcXVldWVkIG9uIHRoaXMgZW5kcG9pbnQgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJmVwLT5xdWV1ZSwgcXVldWUpIHsKKwkJaWYgKCZyZXEtPnJlcSA9PSBfcmVxKQorCQkJYnJlYWs7CisJfQorCisJaWYgKCZyZXEtPnJlcSAhPSBfcmVxKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVwLT51ZGMtPmxvY2ssIGZsYWdzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZG9uZShlcCwgcmVxLCAtRUNPTk5SRVNFVCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlcC0+dWRjLT5sb2NrLCBmbGFncyk7CisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIG1vZGlmeSB0aGUgZW5kcG9pbnQgaGFsdCBmZWF0dXJlCisgKiBAZXA6IHRoZSBub24taXNvY2hyb25vdXMgZW5kcG9pbnQgYmVpbmcgc3RhbGxlZAorICogQHZhbHVlOiAxLS1zZXQgaGFsdCAgMC0tY2xlYXIgaGFsdAorICogUmV0dXJucyB6ZXJvLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUuCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgaW50IHFlX2VwX3NldF9oYWx0KHN0cnVjdCB1c2JfZXAgKl9lcCwgaW50IHZhbHVlKQoreworCXN0cnVjdCBxZV9lcCAqZXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgc3RhdHVzID0gLUVPUE5PVFNVUFA7CisJc3RydWN0IHFlX3VkYyAqdWRjOworCisJZXAgPSBjb250YWluZXJfb2YoX2VwLCBzdHJ1Y3QgcWVfZXAsIGVwKTsKKwlpZiAoIV9lcCB8fCAhZXAtPmRlc2MpIHsKKwkJc3RhdHVzID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJdWRjID0gZXAtPnVkYzsKKwkvKiBBdHRlbXB0IHRvIGhhbHQgSU4gZXAgd2lsbCBmYWlsIGlmIGFueSB0cmFuc2ZlciByZXF1ZXN0cworCSAqIGFyZSBzdGlsbCBxdWV1ZSAqLworCWlmICh2YWx1ZSAmJiBlcF9pc19pbihlcCkgJiYgIWxpc3RfZW1wdHkoJmVwLT5xdWV1ZSkpIHsKKwkJc3RhdHVzID0gLUVBR0FJTjsKKwkJZ290byBvdXQ7CisJfQorCisJc3RhdHVzID0gMDsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZXAtPnVkYy0+bG9jaywgZmxhZ3MpOworCXFlX2VwdHhfc3RhbGxfY2hhbmdlKGVwLCB2YWx1ZSk7CisJcWVfZXByeF9zdGFsbF9jaGFuZ2UoZXAsIHZhbHVlKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlcC0+dWRjLT5sb2NrLCBmbGFncyk7CisKKwlpZiAoZXAtPmVwbnVtID09IDApIHsKKwkJdWRjLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKKwkJdWRjLT5lcDBfZGlyID0gMDsKKwl9CisKKwkvKiBzZXQgZGF0YSB0b2dnbGUgdG8gREFUQTAgb24gY2xlYXIgaGFsdCAqLworCWlmICh2YWx1ZSA9PSAwKQorCQllcC0+ZGF0YTAxID0gMDsKK291dDoKKwlkZXZfdmRiZyh1ZGMtPmRldiwgIiVzICVzIGhhbHQgc3RhdCAlZFxuIiwgZXAtPmVwLm5hbWUsCisJCQl2YWx1ZSA/ICAic2V0IiA6ICJjbGVhciIsIHN0YXR1cyk7CisKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgc3RydWN0IHVzYl9lcF9vcHMgcWVfZXBfb3BzID0geworCS5lbmFibGUgPSBxZV9lcF9lbmFibGUsCisJLmRpc2FibGUgPSBxZV9lcF9kaXNhYmxlLAorCisJLmFsbG9jX3JlcXVlc3QgPSBxZV9hbGxvY19yZXF1ZXN0LAorCS5mcmVlX3JlcXVlc3QgPSBxZV9mcmVlX3JlcXVlc3QsCisKKwkucXVldWUgPSBxZV9lcF9xdWV1ZSwKKwkuZGVxdWV1ZSA9IHFlX2VwX2RlcXVldWUsCisKKwkuc2V0X2hhbHQgPSBxZV9lcF9zZXRfaGFsdCwKK307CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJR2FkZ2V0IERyaXZlciBMYXllciBPcGVyYXRpb25zCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR2V0IHRoZSBjdXJyZW50IGZyYW1lIG51bWJlciAqLworc3RhdGljIGludCBxZV9nZXRfZnJhbWUoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCkKK3sKKwl1MTYgdG1wOworCisJdG1wID0gaW5fYmUxNigmdWRjX2NvbnRyb2xsZXItPnVzYl9wYXJhbS0+ZnJhbWVfbik7CisJaWYgKHRtcCAmIDB4ODAwMCkKKwkJdG1wID0gdG1wICYgMHgwN2ZmOworCWVsc2UKKwkJdG1wID0gLUVJTlZBTDsKKworCXJldHVybiAoaW50KXRtcDsKK30KKworLyogVHJpZXMgdG8gd2FrZSB1cCB0aGUgaG9zdCBjb25uZWN0ZWQgdG8gdGhpcyBnYWRnZXQKKyAqCisgKiBSZXR1cm4gOiAwLXN1Y2Nlc3MKKyAqIE5lZ2F0aXZlLXRoaXMgZmVhdHVyZSBub3QgZW5hYmxlZCBieSBob3N0IG9yIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlIGh3CisgKi8KK3N0YXRpYyBpbnQgcWVfd2FrZXVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpCit7CisJcmV0dXJuIC1FTk9UU1VQUDsKK30KKworLyogTm90aWZ5IGNvbnRyb2xsZXIgdGhhdCBWQlVTIGlzIHBvd2VyZWQsIENhbGxlZCBieSB3aGF0ZXZlcgorICAgZGV0ZWN0cyBWQlVTIHNlc3Npb25zICovCitzdGF0aWMgaW50IHFlX3ZidXNfc2Vzc2lvbihzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCBpbnQgaXNfYWN0aXZlKQoreworCXJldHVybiAtRU5PVFNVUFA7Cit9CisKKy8qIGNvbnN0cmFpbiBjb250cm9sbGVyJ3MgVkJVUyBwb3dlciB1c2FnZQorICogVGhpcyBjYWxsIGlzIHVzZWQgYnkgZ2FkZ2V0IGRyaXZlcnMgZHVyaW5nIFNFVF9DT05GSUdVUkFUSU9OIGNhbGxzLAorICogcmVwb3J0aW5nIGhvdyBtdWNoIHBvd2VyIHRoZSBkZXZpY2UgbWF5IGNvbnN1bWUuICBGb3IgZXhhbXBsZSwgdGhpcworICogY291bGQgYWZmZWN0IGhvdyBxdWlja2x5IGJhdHRlcmllcyBhcmUgcmVjaGFyZ2VkLgorICoKKyAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzLCBlbHNlIG5lZ2F0aXZlIGVycm5vLgorICovCitzdGF0aWMgaW50IHFlX3ZidXNfZHJhdyhzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCB1bnNpZ25lZCBtQSkKK3sKKwlyZXR1cm4gLUVOT1RTVVBQOworfQorCisvKiBDaGFuZ2UgRGF0YSsgcHVsbHVwIHN0YXR1cworICogdGhpcyBmdW5jIGlzIHVzZWQgYnkgdXNiX2dhZGdldF9jb25uZWN0L2Rpc2Nvbm5lY3QKKyAqLworc3RhdGljIGludCBxZV9wdWxsdXAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgaW50IGlzX29uKQoreworCXJldHVybiAtRU5PVFNVUFA7Cit9CisKKy8qIGRlZmluZWQgaW4gdXNiX2dhZGdldC5oICovCitzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfb3BzIHFlX2dhZGdldF9vcHMgPSB7CisJLmdldF9mcmFtZSA9IHFlX2dldF9mcmFtZSwKKwkud2FrZXVwID0gcWVfd2FrZXVwLAorLyoJLnNldF9zZWxmcG93ZXJlZCA9IHFlX3NldF9zZWxmcG93ZXJlZCwqLyAvKiBhbHdheXMgc2VsZnBvd2VyZWQgKi8KKwkudmJ1c19zZXNzaW9uID0gcWVfdmJ1c19zZXNzaW9uLAorCS52YnVzX2RyYXcgPSBxZV92YnVzX2RyYXcsCisJLnB1bGx1cCA9IHFlX3B1bGx1cCwKK307CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVVTQiBlcDAgU2V0dXAgcHJvY2VzcyBpbiBCVVMgRW51bWVyYXRpb24KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQgdWRjX3Jlc2V0X2VwX3F1ZXVlKHN0cnVjdCBxZV91ZGMgKnVkYywgdTggcGlwZSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gJnVkYy0+ZXBzW3BpcGVdOworCisJbnVrZShlcCwgLUVDT05OUkVTRVQpOworCWVwLT50eF9yZXEgPSBOVUxMOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlc2V0X3F1ZXVlcyhzdHJ1Y3QgcWVfdWRjICp1ZGMpCit7CisJdTggcGlwZTsKKworCWZvciAocGlwZSA9IDA7IHBpcGUgPCBVU0JfTUFYX0VORFBPSU5UUzsgcGlwZSsrKQorCQl1ZGNfcmVzZXRfZXBfcXVldWUodWRjLCBwaXBlKTsKKworCS8qIHJlcG9ydCBkaXNjb25uZWN0OyB0aGUgZHJpdmVyIGlzIGFscmVhZHkgcXVpZXNjZWQgKi8KKwlzcGluX3VubG9jaygmdWRjLT5sb2NrKTsKKwl1ZGMtPmRyaXZlci0+ZGlzY29ubmVjdCgmdWRjLT5nYWRnZXQpOworCXNwaW5fbG9jaygmdWRjLT5sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjaDlzZXRhZGRyZXNzKHN0cnVjdCBxZV91ZGMgKnVkYywgdTE2IHZhbHVlLCB1MTYgaW5kZXgsCisJCQl1MTYgbGVuZ3RoKQoreworCS8qIFNhdmUgdGhlIG5ldyBhZGRyZXNzIHRvIGRldmljZSBzdHJ1Y3QgKi8KKwl1ZGMtPmRldmljZV9hZGRyZXNzID0gKHU4KSB2YWx1ZTsKKwkvKiBVcGRhdGUgdXNiIHN0YXRlICovCisJdWRjLT51c2Jfc3RhdGUgPSBVU0JfU1RBVEVfQUREUkVTUzsKKworCS8qIFN0YXR1cyBwaGFzZSAsIHNlbmQgYSBaTFAgKi8KKwlpZiAoZXAwX3ByaW1lX3N0YXR1cyh1ZGMsIFVTQl9ESVJfSU4pKQorCQlxZV9lcDBfc3RhbGwodWRjKTsKK30KKworc3RhdGljIHZvaWQgb3duZXJjb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICpfZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqX3JlcSkKK3sKKwlzdHJ1Y3QgcWVfcmVxICpyZXEgPSBjb250YWluZXJfb2YoX3JlcSwgc3RydWN0IHFlX3JlcSwgcmVxKTsKKworCXJlcS0+cmVxLmJ1ZiA9IE5VTEw7CisJa2ZyZWUocmVxKTsKK30KKworc3RhdGljIHZvaWQgY2g5Z2V0c3RhdHVzKHN0cnVjdCBxZV91ZGMgKnVkYywgdTggcmVxdWVzdF90eXBlLCB1MTYgdmFsdWUsCisJCQl1MTYgaW5kZXgsIHUxNiBsZW5ndGgpCit7CisJdTE2IHVzYl9zdGF0dXMgPSAwOworCXN0cnVjdCBxZV9yZXEgKnJlcTsKKwlzdHJ1Y3QgcWVfZXAgKmVwOworCWludCBzdGF0dXMgPSAwOworCisJZXAgPSAmdWRjLT5lcHNbMF07CisJaWYgKChyZXF1ZXN0X3R5cGUgJiBVU0JfUkVDSVBfTUFTSykgPT0gVVNCX1JFQ0lQX0RFVklDRSkgeworCQkvKiBHZXQgZGV2aWNlIHN0YXR1cyAqLworCQl1c2Jfc3RhdHVzID0gMSA8PCBVU0JfREVWSUNFX1NFTEZfUE9XRVJFRDsKKwl9IGVsc2UgaWYgKChyZXF1ZXN0X3R5cGUgJiBVU0JfUkVDSVBfTUFTSykgPT0gVVNCX1JFQ0lQX0lOVEVSRkFDRSkgeworCQkvKiBHZXQgaW50ZXJmYWNlIHN0YXR1cyAqLworCQkvKiBXZSBkb24ndCBoYXZlIGludGVyZmFjZSBpbmZvcm1hdGlvbiBpbiB1ZGMgZHJpdmVyICovCisJCXVzYl9zdGF0dXMgPSAwOworCX0gZWxzZSBpZiAoKHJlcXVlc3RfdHlwZSAmIFVTQl9SRUNJUF9NQVNLKSA9PSBVU0JfUkVDSVBfRU5EUE9JTlQpIHsKKwkJLyogR2V0IGVuZHBvaW50IHN0YXR1cyAqLworCQlpbnQgcGlwZSA9IGluZGV4ICYgVVNCX0VORFBPSU5UX05VTUJFUl9NQVNLOworCQlzdHJ1Y3QgcWVfZXAgKnRhcmdldF9lcCA9ICZ1ZGMtPmVwc1twaXBlXTsKKwkJdTE2IHVzZXA7CisKKwkJLyogc3RhbGwgaWYgZW5kcG9pbnQgZG9lc24ndCBleGlzdCAqLworCQlpZiAoIXRhcmdldF9lcC0+ZGVzYykKKwkJCWdvdG8gc3RhbGw7CisKKwkJdXNlcCA9IGluX2JlMTYoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2VwW3BpcGVdKTsKKwkJaWYgKGluZGV4ICYgVVNCX0RJUl9JTikgeworCQkJaWYgKHRhcmdldF9lcC0+ZGlyICE9IFVTQl9ESVJfSU4pCisJCQkJZ290byBzdGFsbDsKKwkJCWlmICgodXNlcCAmIFVTQl9USFNfTUFTSykgPT0gVVNCX1RIU19TVEFMTCkKKwkJCQl1c2Jfc3RhdHVzID0gMSA8PCBVU0JfRU5EUE9JTlRfSEFMVDsKKwkJfSBlbHNlIHsKKwkJCWlmICh0YXJnZXRfZXAtPmRpciAhPSBVU0JfRElSX09VVCkKKwkJCQlnb3RvIHN0YWxsOworCQkJaWYgKCh1c2VwICYgVVNCX1JIU19NQVNLKSA9PSBVU0JfUkhTX1NUQUxMKQorCQkJCXVzYl9zdGF0dXMgPSAxIDw8IFVTQl9FTkRQT0lOVF9IQUxUOworCQl9CisJfQorCisJcmVxID0gY29udGFpbmVyX29mKHFlX2FsbG9jX3JlcXVlc3QoJmVwLT5lcCwgR0ZQX0tFUk5FTCksCisJCQkJCXN0cnVjdCBxZV9yZXEsIHJlcSk7CisJcmVxLT5yZXEubGVuZ3RoID0gMjsKKwlyZXEtPnJlcS5idWYgPSB1ZGMtPnN0YXR1c2J1ZjsKKwkqKHUxNiAqKXJlcS0+cmVxLmJ1ZiA9IGNwdV90b19sZTE2KHVzYl9zdGF0dXMpOworCXJlcS0+cmVxLnN0YXR1cyA9IC1FSU5QUk9HUkVTUzsKKwlyZXEtPnJlcS5hY3R1YWwgPSAwOworCXJlcS0+cmVxLmNvbXBsZXRlID0gb3duZXJjb21wbGV0ZTsKKworCXVkYy0+ZXAwX2RpciA9IFVTQl9ESVJfSU47CisKKwkvKiBkYXRhIHBoYXNlICovCisJc3RhdHVzID0gcWVfZXBfcXVldWUoJmVwLT5lcCwgJnJlcS0+cmVxLCBHRlBfQVRPTUlDKTsKKworCWlmIChzdGF0dXMgPT0gMCkKKwkJcmV0dXJuOworc3RhbGw6CisJZGV2X2Vycih1ZGMtPmRldiwgIkNhbid0IHJlc3BvbmQgdG8gZ2V0c3RhdHVzIHJlcXVlc3QgXG4iKTsKKwlxZV9lcDBfc3RhbGwodWRjKTsKK30KKworLyogb25seSBoYW5kbGUgdGhlIHNldHVwIHJlcXVlc3QsIHN1cHBvc2UgdGhlIGRldmljZSBpbiBub3JtYWwgc3RhdHVzICovCitzdGF0aWMgdm9pZCBzZXR1cF9yZWNlaXZlZF9oYW5kbGUoc3RydWN0IHFlX3VkYyAqdWRjLAorCQkJCXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKnNldHVwKQoreworCS8qIEZpeCBFbmRpYW4gKHVkYy0+bG9jYWxfc2V0dXBfYnVmZiBpcyBjcHUgRW5kaWFuIG5vdykqLworCXUxNiB3VmFsdWUgPSBsZTE2X3RvX2NwdShzZXR1cC0+d1ZhbHVlKTsKKwl1MTYgd0luZGV4ID0gbGUxNl90b19jcHUoc2V0dXAtPndJbmRleCk7CisJdTE2IHdMZW5ndGggPSBsZTE2X3RvX2NwdShzZXR1cC0+d0xlbmd0aCk7CisKKwkvKiBjbGVhciB0aGUgcHJldmlvdXMgcmVxdWVzdCBpbiB0aGUgZXAwICovCisJdWRjX3Jlc2V0X2VwX3F1ZXVlKHVkYywgMCk7CisKKwlpZiAoc2V0dXAtPmJSZXF1ZXN0VHlwZSAmIFVTQl9ESVJfSU4pCisJCXVkYy0+ZXAwX2RpciA9IFVTQl9ESVJfSU47CisJZWxzZQorCQl1ZGMtPmVwMF9kaXIgPSBVU0JfRElSX09VVDsKKworCXN3aXRjaCAoc2V0dXAtPmJSZXF1ZXN0KSB7CisJY2FzZSBVU0JfUkVRX0dFVF9TVEFUVVM6CisJCS8qIERhdGErU3RhdHVzIHBoYXNlIGZvcm0gdWRjICovCisJCWlmICgoc2V0dXAtPmJSZXF1ZXN0VHlwZSAmIChVU0JfRElSX0lOIHwgVVNCX1RZUEVfTUFTSykpCisJCQkJCSE9IChVU0JfRElSX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQpKQorCQkJYnJlYWs7CisJCWNoOWdldHN0YXR1cyh1ZGMsIHNldHVwLT5iUmVxdWVzdFR5cGUsIHdWYWx1ZSwgd0luZGV4LAorCQkJCQl3TGVuZ3RoKTsKKwkJcmV0dXJuOworCisJY2FzZSBVU0JfUkVRX1NFVF9BRERSRVNTOgorCQkvKiBTdGF0dXMgcGhhc2UgZnJvbSB1ZGMgKi8KKwkJaWYgKHNldHVwLT5iUmVxdWVzdFR5cGUgIT0gKFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfAorCQkJCQkJVVNCX1JFQ0lQX0RFVklDRSkpCisJCQlicmVhazsKKwkJY2g5c2V0YWRkcmVzcyh1ZGMsIHdWYWx1ZSwgd0luZGV4LCB3TGVuZ3RoKTsKKwkJcmV0dXJuOworCisJY2FzZSBVU0JfUkVRX0NMRUFSX0ZFQVRVUkU6CisJY2FzZSBVU0JfUkVRX1NFVF9GRUFUVVJFOgorCQkvKiBSZXF1ZXN0cyB3aXRoIG5vIGRhdGEgcGhhc2UsIHN0YXR1cyBwaGFzZSBmcm9tIHVkYyAqLworCQlpZiAoKHNldHVwLT5iUmVxdWVzdFR5cGUgJiBVU0JfVFlQRV9NQVNLKQorCQkJCQkhPSBVU0JfVFlQRV9TVEFOREFSRCkKKwkJCWJyZWFrOworCisJCWlmICgoc2V0dXAtPmJSZXF1ZXN0VHlwZSAmIFVTQl9SRUNJUF9NQVNLKQorCQkJCT09IFVTQl9SRUNJUF9FTkRQT0lOVCkgeworCQkJaW50IHBpcGUgPSB3SW5kZXggJiBVU0JfRU5EUE9JTlRfTlVNQkVSX01BU0s7CisJCQlzdHJ1Y3QgcWVfZXAgKmVwOworCisJCQlpZiAod1ZhbHVlICE9IDAgfHwgd0xlbmd0aCAhPSAwCisJCQkJfHwgcGlwZSA+IFVTQl9NQVhfRU5EUE9JTlRTKQorCQkJCWJyZWFrOworCQkJZXAgPSAmdWRjLT5lcHNbcGlwZV07CisKKwkJCXNwaW5fdW5sb2NrKCZ1ZGMtPmxvY2spOworCQkJcWVfZXBfc2V0X2hhbHQoJmVwLT5lcCwKKwkJCQkJKHNldHVwLT5iUmVxdWVzdCA9PSBVU0JfUkVRX1NFVF9GRUFUVVJFKQorCQkJCQkJPyAxIDogMCk7CisJCQlzcGluX2xvY2soJnVkYy0+bG9jayk7CisJCX0KKworCQllcDBfcHJpbWVfc3RhdHVzKHVkYywgVVNCX0RJUl9JTik7CisKKwkJcmV0dXJuOworCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJaWYgKHdMZW5ndGgpIHsKKwkJLyogRGF0YSBwaGFzZSBmcm9tIGdhZGdldCwgc3RhdHVzIHBoYXNlIGZyb20gdWRjICovCisJCWlmIChzZXR1cC0+YlJlcXVlc3RUeXBlICYgVVNCX0RJUl9JTikgeworCQkJdWRjLT5lcDBfc3RhdGUgPSBEQVRBX1NUQVRFX1hNSVQ7CisJCQl1ZGMtPmVwMF9kaXIgPSBVU0JfRElSX0lOOworCQl9IGVsc2UgeworCQkJdWRjLT5lcDBfc3RhdGUgPSBEQVRBX1NUQVRFX1JFQ1Y7CisJCQl1ZGMtPmVwMF9kaXIgPSBVU0JfRElSX09VVDsKKwkJfQorCQlzcGluX3VubG9jaygmdWRjLT5sb2NrKTsKKwkJaWYgKHVkYy0+ZHJpdmVyLT5zZXR1cCgmdWRjLT5nYWRnZXQsCisJCQkJCSZ1ZGMtPmxvY2FsX3NldHVwX2J1ZmYpIDwgMCkKKwkJCXFlX2VwMF9zdGFsbCh1ZGMpOworCQlzcGluX2xvY2soJnVkYy0+bG9jayk7CisJfSBlbHNlIHsKKwkJLyogTm8gZGF0YSBwaGFzZSwgSU4gc3RhdHVzIGZyb20gZ2FkZ2V0ICovCisJCXVkYy0+ZXAwX2RpciA9IFVTQl9ESVJfSU47CisJCXNwaW5fdW5sb2NrKCZ1ZGMtPmxvY2spOworCQlpZiAodWRjLT5kcml2ZXItPnNldHVwKCZ1ZGMtPmdhZGdldCwKKwkJCQkJJnVkYy0+bG9jYWxfc2V0dXBfYnVmZikgPCAwKQorCQkJcWVfZXAwX3N0YWxsKHVkYyk7CisJCXNwaW5fbG9jaygmdWRjLT5sb2NrKTsKKwkJdWRjLT5lcDBfc3RhdGUgPSBEQVRBX1NUQVRFX05FRURfWkxQOworCX0KK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJVVNCIEludGVycnVwdCBoYW5kbGVycworIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgc3VzcGVuZF9pcnEoc3RydWN0IHFlX3VkYyAqdWRjKQoreworCXVkYy0+cmVzdW1lX3N0YXRlID0gdWRjLT51c2Jfc3RhdGU7CisJdWRjLT51c2Jfc3RhdGUgPSBVU0JfU1RBVEVfU1VTUEVOREVEOworCisJLyogcmVwb3J0IHN1c3BlbmQgdG8gdGhlIGRyaXZlciAsc2VyaWFsLmMgbm90IHN1cHBvcnQgdGhpcyovCisJaWYgKHVkYy0+ZHJpdmVyLT5zdXNwZW5kKQorCQl1ZGMtPmRyaXZlci0+c3VzcGVuZCgmdWRjLT5nYWRnZXQpOworfQorCitzdGF0aWMgdm9pZCByZXN1bWVfaXJxKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwl1ZGMtPnVzYl9zdGF0ZSA9IHVkYy0+cmVzdW1lX3N0YXRlOworCXVkYy0+cmVzdW1lX3N0YXRlID0gMDsKKworCS8qIHJlcG9ydCByZXN1bWUgdG8gdGhlIGRyaXZlciAsIHNlcmlhbC5jIG5vdCBzdXBwb3J0IHRoaXMqLworCWlmICh1ZGMtPmRyaXZlci0+cmVzdW1lKQorCQl1ZGMtPmRyaXZlci0+cmVzdW1lKCZ1ZGMtPmdhZGdldCk7Cit9CisKK3N0YXRpYyB2b2lkIGlkbGVfaXJxKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwl1OCB1c2JzOworCisJdXNicyA9IGluXzgoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2JzKTsKKwlpZiAodXNicyAmIFVTQl9JRExFX1NUQVRVU19NQVNLKSB7CisJCWlmICgodWRjLT51c2Jfc3RhdGUpICE9IFVTQl9TVEFURV9TVVNQRU5ERUQpCisJCQlzdXNwZW5kX2lycSh1ZGMpOworCX0gZWxzZSB7CisJCWlmICh1ZGMtPnVzYl9zdGF0ZSA9PSBVU0JfU1RBVEVfU1VTUEVOREVEKQorCQkJcmVzdW1lX2lycSh1ZGMpOworCX0KK30KKworc3RhdGljIGludCByZXNldF9pcnEoc3RydWN0IHFlX3VkYyAqdWRjKQoreworCXVuc2lnbmVkIGNoYXIgaTsKKworCXFlX3VzYl9kaXNhYmxlKCk7CisJb3V0XzgoJnVkYy0+dXNiX3JlZ3MtPnVzYl91c2FkciwgMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgVVNCX01BWF9FTkRQT0lOVFM7IGkrKykgeworCQlpZiAodWRjLT5lcHNbaV0uaW5pdCkKKwkJCXFlX2VwX3Jlc2V0KHVkYywgaSk7CisJfQorCisJcmVzZXRfcXVldWVzKHVkYyk7CisJdWRjLT51c2Jfc3RhdGUgPSBVU0JfU1RBVEVfREVGQVVMVDsKKwl1ZGMtPmVwMF9zdGF0ZSA9IFdBSVRfRk9SX1NFVFVQOworCXVkYy0+ZXAwX2RpciA9IFVTQl9ESVJfT1VUOworCXFlX3VzYl9lbmFibGUoKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBic3lfaXJxKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0eGVfaXJxKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwlyZXR1cm4gMDsKK30KKworLyogZXAwIHR4IGludGVycnVwdCBhbHNvIGluIGhlcmUgKi8KK3N0YXRpYyBpbnQgdHhfaXJxKHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwOworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpiZDsKKwlpbnQgaSwgcmVzID0gMDsKKworCWlmICgodWRjLT51c2Jfc3RhdGUgPT0gVVNCX1NUQVRFX0FERFJFU1MpCisJCSYmIChpbl84KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNhZHIpID09IDApKQorCQlvdXRfOCgmdWRjLT51c2JfcmVncy0+dXNiX3VzYWRyLCB1ZGMtPmRldmljZV9hZGRyZXNzKTsKKworCWZvciAoaSA9IChVU0JfTUFYX0VORFBPSU5UUy0xKTsgKChpID49IDApICYmIChyZXMgPT0gMCkpOyBpLS0pIHsKKwkJZXAgPSAmdWRjLT5lcHNbaV07CisJCWlmIChlcCAmJiBlcC0+aW5pdCAmJiAoZXAtPmRpciAhPSBVU0JfRElSX09VVCkpIHsKKwkJCWJkID0gZXAtPmNfdHhiZDsKKwkJCWlmICghKGluX2JlMzIoKHUzMiBfX2lvbWVtICopYmQpICYgVF9SKQorCQkJCQkJJiYgKGluX2JlMzIoJmJkLT5idWYpKSkgeworCQkJCS8qIGNvbmZpcm0gdGhlIHRyYW5zbWl0dGVkIGJkICovCisJCQkJaWYgKGVwLT5lcG51bSA9PSAwKQorCQkJCQlyZXMgPSBxZV9lcDBfdHhjb25mKGVwKTsKKwkJCQllbHNlCisJCQkJCXJlcyA9IHFlX2VwX3R4Y29uZihlcCk7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIHJlczsKK30KKworCisvKiBzZXR1cCBwYWNrZWN0J3MgcnggaXMgaGFuZGxlIGluIHRoZSBmdW5jdGlvbiB0b28gKi8KK3N0YXRpYyB2b2lkIHJ4X2lycShzdHJ1Y3QgcWVfdWRjICp1ZGMpCit7CisJc3RydWN0IHFlX2VwICplcDsKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqYmQ7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgVVNCX01BWF9FTkRQT0lOVFM7IGkrKykgeworCQllcCA9ICZ1ZGMtPmVwc1tpXTsKKwkJaWYgKGVwICYmIGVwLT5pbml0ICYmIChlcC0+ZGlyICE9IFVTQl9ESVJfSU4pKSB7CisJCQliZCA9IGVwLT5uX3J4YmQ7CisJCQlpZiAoIShpbl9iZTMyKCh1MzIgX19pb21lbSAqKWJkKSAmIFJfRSkKKwkJCQkJCSYmIChpbl9iZTMyKCZiZC0+YnVmKSkpIHsKKwkJCQlpZiAoZXAtPmVwbnVtID09IDApIHsKKwkJCQkJcWVfZXAwX3J4KHVkYyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJLypub24tc2V0dXAgcGFja2FnZSByZWNlaXZlKi8KKwkJCQkJcWVfZXBfcngoZXApOworCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworc3RhdGljIGlycXJldHVybl90IHFlX3VkY19pcnEoaW50IGlycSwgdm9pZCAqX3VkYykKK3sKKwlzdHJ1Y3QgcWVfdWRjICp1ZGMgPSAoc3RydWN0IHFlX3VkYyAqKV91ZGM7CisJdTE2IGlycV9zcmM7CisJaXJxcmV0dXJuX3Qgc3RhdHVzID0gSVJRX05PTkU7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ1ZGMtPmxvY2ssIGZsYWdzKTsKKworCWlycV9zcmMgPSBpbl9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNiZXIpICYKKwkJaW5fYmUxNigmdWRjLT51c2JfcmVncy0+dXNiX3VzYm1yKTsKKwkvKiBDbGVhciBub3RpZmljYXRpb24gYml0cyAqLworCW91dF9iZTE2KCZ1ZGMtPnVzYl9yZWdzLT51c2JfdXNiZXIsIGlycV9zcmMpOworCS8qIFVTQiBJbnRlcnJ1cHQgKi8KKwlpZiAoaXJxX3NyYyAmIFVTQl9FX0lETEVfTUFTSykgeworCQlpZGxlX2lycSh1ZGMpOworCQlpcnFfc3JjICY9IH5VU0JfRV9JRExFX01BU0s7CisJCXN0YXR1cyA9IElSUV9IQU5ETEVEOworCX0KKworCWlmIChpcnFfc3JjICYgVVNCX0VfVFhCX01BU0spIHsKKwkJdHhfaXJxKHVkYyk7CisJCWlycV9zcmMgJj0gflVTQl9FX1RYQl9NQVNLOworCQlzdGF0dXMgPSBJUlFfSEFORExFRDsKKwl9CisKKwlpZiAoaXJxX3NyYyAmIFVTQl9FX1JYQl9NQVNLKSB7CisJCXJ4X2lycSh1ZGMpOworCQlpcnFfc3JjICY9IH5VU0JfRV9SWEJfTUFTSzsKKwkJc3RhdHVzID0gSVJRX0hBTkRMRUQ7CisJfQorCisJaWYgKGlycV9zcmMgJiBVU0JfRV9SRVNFVF9NQVNLKSB7CisJCXJlc2V0X2lycSh1ZGMpOworCQlpcnFfc3JjICY9IH5VU0JfRV9SRVNFVF9NQVNLOworCQlzdGF0dXMgPSBJUlFfSEFORExFRDsKKwl9CisKKwlpZiAoaXJxX3NyYyAmIFVTQl9FX0JTWV9NQVNLKSB7CisJCWJzeV9pcnEodWRjKTsKKwkJaXJxX3NyYyAmPSB+VVNCX0VfQlNZX01BU0s7CisJCXN0YXR1cyA9IElSUV9IQU5ETEVEOworCX0KKworCWlmIChpcnFfc3JjICYgVVNCX0VfVFhFX01BU0spIHsKKwkJdHhlX2lycSh1ZGMpOworCQlpcnFfc3JjICY9IH5VU0JfRV9UWEVfTUFTSzsKKwkJc3RhdHVzID0gSVJRX0hBTkRMRUQ7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjLT5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlHYWRnZXQgZHJpdmVyIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyLgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK2ludCB1c2JfZ2FkZ2V0X3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcikKK3sKKwlpbnQgcmV0dmFsOworCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOworCisJLyogc3RhbmRhcmQgb3BlcmF0aW9ucyAqLworCWlmICghdWRjX2NvbnRyb2xsZXIpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKCFkcml2ZXIgfHwgKGRyaXZlci0+c3BlZWQgIT0gVVNCX1NQRUVEX0ZVTEwKKwkJCSYmIGRyaXZlci0+c3BlZWQgIT0gVVNCX1NQRUVEX0hJR0gpCisJCQl8fCAhZHJpdmVyLT5iaW5kIHx8ICFkcml2ZXItPmRpc2Nvbm5lY3QKKwkJCXx8ICFkcml2ZXItPnNldHVwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1ZGNfY29udHJvbGxlci0+ZHJpdmVyKQorCQlyZXR1cm4gLUVCVVNZOworCisJLyogbG9jayBpcyBuZWVkZWQgYnV0IHdoZXRoZXIgc2hvdWxkIHVzZSB0aGlzIGxvY2sgb3IgYW5vdGhlciAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZ1ZGNfY29udHJvbGxlci0+bG9jaywgZmxhZ3MpOworCisJZHJpdmVyLT5kcml2ZXIuYnVzID0gTlVMTDsKKwkvKiBob29rIHVwIHRoZSBkcml2ZXIgKi8KKwl1ZGNfY29udHJvbGxlci0+ZHJpdmVyID0gZHJpdmVyOworCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LmRyaXZlciA9ICZkcml2ZXItPmRyaXZlcjsKKwl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LnNwZWVkID0gKGVudW0gdXNiX2RldmljZV9zcGVlZCkoZHJpdmVyLT5zcGVlZCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKworCXJldHZhbCA9IGRyaXZlci0+YmluZCgmdWRjX2NvbnRyb2xsZXItPmdhZGdldCk7CisJaWYgKHJldHZhbCkgeworCQlkZXZfZXJyKHVkY19jb250cm9sbGVyLT5kZXYsICJiaW5kIHRvICVzIC0tPiAlZCIsCisJCQkJZHJpdmVyLT5kcml2ZXIubmFtZSwgcmV0dmFsKTsKKwkJdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYuZHJpdmVyID0gTlVMTDsKKwkJdWRjX2NvbnRyb2xsZXItPmRyaXZlciA9IE5VTEw7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyogRW5hYmxlIElSUSByZWcgYW5kIFNldCB1c2JjbWQgcmVnIEVOIGJpdCAqLworCXFlX3VzYl9lbmFibGUoKTsKKworCW91dF9iZTE2KCZ1ZGNfY29udHJvbGxlci0+dXNiX3JlZ3MtPnVzYl91c2JlciwgMHhmZmZmKTsKKwlvdXRfYmUxNigmdWRjX2NvbnRyb2xsZXItPnVzYl9yZWdzLT51c2JfdXNibXIsIFVTQl9FX0RFRkFVTFRfREVWSUNFKTsKKwl1ZGNfY29udHJvbGxlci0+dXNiX3N0YXRlID0gVVNCX1NUQVRFX0FUVEFDSEVEOworCXVkY19jb250cm9sbGVyLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKKwl1ZGNfY29udHJvbGxlci0+ZXAwX2RpciA9IFVTQl9ESVJfT1VUOworCWRldl9pbmZvKHVkY19jb250cm9sbGVyLT5kZXYsICIlcyBiaW5kIHRvIGRyaXZlciAlcyBcbiIsCisJCXVkY19jb250cm9sbGVyLT5nYWRnZXQubmFtZSwgZHJpdmVyLT5kcml2ZXIubmFtZSk7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyKTsKKworaW50IHVzYl9nYWRnZXRfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpkcml2ZXIpCit7CisJc3RydWN0IHFlX2VwICpsb29wX2VwOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIXVkY19jb250cm9sbGVyKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICghZHJpdmVyIHx8IGRyaXZlciAhPSB1ZGNfY29udHJvbGxlci0+ZHJpdmVyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIHN0b3AgdXNiIGNvbnRyb2xsZXIsIGRpc2FibGUgaW50ciAqLworCXFlX3VzYl9kaXNhYmxlKCk7CisKKwkvKiBpbiBmYWN0LCBubyBuZWVkZWQgKi8KKwl1ZGNfY29udHJvbGxlci0+dXNiX3N0YXRlID0gVVNCX1NUQVRFX0FUVEFDSEVEOworCXVkY19jb250cm9sbGVyLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKKwl1ZGNfY29udHJvbGxlci0+ZXAwX2RpciA9IDA7CisKKwkvKiBzdGFuZCBvcGVyYXRpb24gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWRjX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKwl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LnNwZWVkID0gVVNCX1NQRUVEX1VOS05PV047CisJbnVrZSgmdWRjX2NvbnRyb2xsZXItPmVwc1swXSwgLUVTSFVURE9XTik7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShsb29wX2VwLCAmdWRjX2NvbnRyb2xsZXItPmdhZGdldC5lcF9saXN0LAorCQkJCWVwLmVwX2xpc3QpCisJCW51a2UobG9vcF9lcCwgLUVTSFVURE9XTik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKKworCS8qIHVuYmluZCBnYWRnZXQgYW5kIHVuaG9vayBkcml2ZXIuICovCisJZHJpdmVyLT51bmJpbmQoJnVkY19jb250cm9sbGVyLT5nYWRnZXQpOworCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LmRyaXZlciA9IE5VTEw7CisJdWRjX2NvbnRyb2xsZXItPmRyaXZlciA9IE5VTEw7CisKKwlkZXZfaW5mbyh1ZGNfY29udHJvbGxlci0+ZGV2LCAidW5yZWdpc3RlcmVkIGdhZGdldCBkcml2ZXIgJyVzJ1xyXG4iLAorCQkJZHJpdmVyLT5kcml2ZXIubmFtZSk7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKHVzYl9nYWRnZXRfdW5yZWdpc3Rlcl9kcml2ZXIpOworCisvKiB1ZGMgc3RydWN0dXJlJ3MgYWxsb2MgYW5kIHNldHVwLCBpbmNsdWRlIGVwLXBhcmFtIGFsbG9jICovCitzdGF0aWMgc3RydWN0IHFlX3VkYyBfX2RldmluaXQgKnFlX3VkY19jb25maWcoc3RydWN0IG9mX2RldmljZSAqb2ZkZXYpCit7CisJc3RydWN0IHFlX3VkYyAqdWRjOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBvZmRldi0+bm9kZTsKKwl1bnNpZ25lZCBpbnQgdG1wX2FkZHIgPSAwOworCXN0cnVjdCB1c2JfZGV2aWNlX3BhcmEgX19pb21lbSAqdXNicHJhbTsKKwl1bnNpZ25lZCBpbnQgaTsKKwl1NjQgc2l6ZTsKKwl1MzIgb2Zmc2V0OworCisJdWRjID0ga3phbGxvYyhzaXplb2YoKnVkYyksIEdGUF9LRVJORUwpOworCWlmICh1ZGMgPT0gTlVMTCkgeworCQlkZXZfZXJyKCZvZmRldi0+ZGV2LCAibWFsbG9jIHVkYyBmYWlsZWRcbiIpOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJdWRjLT5kZXYgPSAmb2ZkZXYtPmRldjsKKworCS8qIGdldCBkZWZhdWx0IGFkZHJlc3Mgb2YgdXNiIHBhcmFtZXRlciBpbiBNVVJBTSBmcm9tIGRldmljZSB0cmVlICovCisJb2Zmc2V0ID0gKm9mX2dldF9hZGRyZXNzKG5wLCAxLCAmc2l6ZSwgTlVMTCk7CisJdWRjLT51c2JfcGFyYW0gPSBjcG1fbXVyYW1fYWRkcihvZmZzZXQpOworCW1lbXNldF9pbyh1ZGMtPnVzYl9wYXJhbSwgMCwgc2l6ZSk7CisKKwl1c2JwcmFtID0gdWRjLT51c2JfcGFyYW07CisJb3V0X2JlMTYoJnVzYnByYW0tPmZyYW1lX24sIDApOworCW91dF9iZTMyKCZ1c2JwcmFtLT5yc3RhdGUsIDApOworCisJdG1wX2FkZHIgPSBjcG1fbXVyYW1fYWxsb2MoKFVTQl9NQVhfRU5EUE9JTlRTICoKKwkJCQkJc2l6ZW9mKHN0cnVjdCB1c2JfZXBfcGFyYSkpLAorCQkJCQkgICBVU0JfRVBfUEFSQV9BTElHTk1FTlQpOworCisJZm9yIChpID0gMDsgaSA8IFVTQl9NQVhfRU5EUE9JTlRTOyBpKyspIHsKKwkJb3V0X2JlMTYoJnVzYnByYW0tPmVwcHRyW2ldLCAodTE2KXRtcF9hZGRyKTsKKwkJdWRjLT5lcF9wYXJhbVtpXSA9IGNwbV9tdXJhbV9hZGRyKHRtcF9hZGRyKTsKKwkJdG1wX2FkZHIgKz0gMzI7CisJfQorCisJbWVtc2V0X2lvKHVkYy0+ZXBfcGFyYW1bMF0sIDAsCisJCQlVU0JfTUFYX0VORFBPSU5UUyAqIHNpemVvZihzdHJ1Y3QgdXNiX2VwX3BhcmEpKTsKKworCXVkYy0+cmVzdW1lX3N0YXRlID0gVVNCX1NUQVRFX05PVEFUVEFDSEVEOworCXVkYy0+dXNiX3N0YXRlID0gVVNCX1NUQVRFX1BPV0VSRUQ7CisJdWRjLT5lcDBfZGlyID0gMDsKKworCXNwaW5fbG9ja19pbml0KCZ1ZGMtPmxvY2spOworCXJldHVybiB1ZGM7CisKK2NsZWFudXA6CisJa2ZyZWUodWRjKTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyogVVNCIENvbnRyb2xsZXIgcmVnaXN0ZXIgaW5pdCAqLworc3RhdGljIGludCBfX2RldmluaXQgcWVfdWRjX3JlZ19pbml0KHN0cnVjdCBxZV91ZGMgKnVkYykKK3sKKwlzdHJ1Y3QgdXNiX2N0bHIgX19pb21lbSAqcWVfdXNicmVnczsKKwlxZV91c2JyZWdzID0gdWRjLT51c2JfcmVnczsKKworCS8qIEluaXQgdGhlIHVzYiByZWdpc3RlciAqLworCW91dF84KCZxZV91c2JyZWdzLT51c2JfdXNtb2QsIDB4MDEpOworCW91dF9iZTE2KCZxZV91c2JyZWdzLT51c2JfdXNibXIsIDApOworCW91dF84KCZxZV91c2JyZWdzLT51c2JfdXNjb20sIDApOworCW91dF9iZTE2KCZxZV91c2JyZWdzLT51c2JfdXNiZXIsIFVTQkVSX0FMTF9DTEVBUik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX2RldmluaXQgcWVfZXBfY29uZmlnKHN0cnVjdCBxZV91ZGMgKnVkYywgdW5zaWduZWQgY2hhciBwaXBlX251bSkKK3sKKwlzdHJ1Y3QgcWVfZXAgKmVwID0gJnVkYy0+ZXBzW3BpcGVfbnVtXTsKKworCWVwLT51ZGMgPSB1ZGM7CisJc3RyY3B5KGVwLT5uYW1lLCBlcF9uYW1lW3BpcGVfbnVtXSk7CisJZXAtPmVwLm5hbWUgPSBlcF9uYW1lW3BpcGVfbnVtXTsKKworCWVwLT5lcC5vcHMgPSAmcWVfZXBfb3BzOworCWVwLT5zdG9wcGVkID0gMTsKKwllcC0+ZXAubWF4cGFja2V0ID0gKHVuc2lnbmVkIHNob3J0KSB+MDsKKwllcC0+ZGVzYyA9IE5VTEw7CisJZXAtPmRpciA9IDB4ZmY7CisJZXAtPmVwbnVtID0gKHU4KXBpcGVfbnVtOworCWVwLT5zZW50ID0gMDsKKwllcC0+bGFzdCA9IDA7CisJZXAtPmluaXQgPSAwOworCWVwLT5yeGZyYW1lID0gTlVMTDsKKwllcC0+dHhmcmFtZSA9IE5VTEw7CisJZXAtPnR4X3JlcSA9IE5VTEw7CisJZXAtPnN0YXRlID0gRVBfU1RBVEVfSURMRTsKKwllcC0+aGFzX2RhdGEgPSAwOworCisJLyogdGhlIHF1ZXVlIGxpc3RzIGFueSByZXEgZm9yIHRoaXMgZXAgKi8KKwlJTklUX0xJU1RfSEVBRCgmZXAtPnF1ZXVlKTsKKworCS8qIGdhZ2RldC5lcF9saXN0IHVzZWQgZm9yIGVwX2F1dG9jb25maWcgc28gbm8gZXAwKi8KKwlpZiAocGlwZV9udW0gIT0gMCkKKwkJbGlzdF9hZGRfdGFpbCgmZXAtPmVwLmVwX2xpc3QsICZ1ZGMtPmdhZGdldC5lcF9saXN0KTsKKworCWVwLT5nYWRnZXQgPSAmdWRjLT5nYWRnZXQ7CisKKwlyZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJVURDIGRldmljZSBEcml2ZXIgb3BlcmF0aW9uIGZ1bmN0aW9ucwkJCQkqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgcWVfdWRjX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCWludCBpID0gMDsKKworCWNvbXBsZXRlKHVkY19jb250cm9sbGVyLT5kb25lKTsKKwljcG1fbXVyYW1fZnJlZShjcG1fbXVyYW1fb2Zmc2V0KHVkY19jb250cm9sbGVyLT5lcF9wYXJhbVswXSkpOworCWZvciAoaSA9IDA7IGkgPCBVU0JfTUFYX0VORFBPSU5UUzsgaSsrKQorCQl1ZGNfY29udHJvbGxlci0+ZXBfcGFyYW1baV0gPSBOVUxMOworCisJa2ZyZWUodWRjX2NvbnRyb2xsZXIpOworCXVkY19jb250cm9sbGVyID0gTlVMTDsKK30KKworLyogRHJpdmVyIHByb2JlIGZ1bmN0aW9ucyAqLworc3RhdGljIGludCBfX2RldmluaXQgcWVfdWRjX3Byb2JlKHN0cnVjdCBvZl9kZXZpY2UgKm9mZGV2LAorCQkJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2gpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpucCA9IG9mZGV2LT5ub2RlOworCXN0cnVjdCBxZV9lcCAqZXA7CisJdW5zaWduZWQgaW50IHJldCA9IDA7CisJdW5zaWduZWQgaW50IGk7CisJY29uc3Qgdm9pZCAqcHJvcDsKKworCXByb3AgPSBvZl9nZXRfcHJvcGVydHkobnAsICJtb2RlIiwgTlVMTCk7CisJaWYgKCFwcm9wIHx8IHN0cmNtcChwcm9wLCAicGVyaXBoZXJhbCIpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qIEluaXRpYWxpemUgdGhlIHVkYyBzdHJ1Y3R1cmUgaW5jbHVkaW5nIFFIIG1lbWJlciBhbmQgb3RoZXIgbWVtYmVyICovCisJdWRjX2NvbnRyb2xsZXIgPSBxZV91ZGNfY29uZmlnKG9mZGV2KTsKKwlpZiAoIXVkY19jb250cm9sbGVyKSB7CisJCWRldl9kYmcoJm9mZGV2LT5kZXYsICJ1ZGNfY29udHJvbGwgaXMgTlVMTFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXVkY19jb250cm9sbGVyLT5zb2NfdHlwZSA9ICh1bnNpZ25lZCBsb25nKW1hdGNoLT5kYXRhOworCXVkY19jb250cm9sbGVyLT51c2JfcmVncyA9IG9mX2lvbWFwKG5wLCAwKTsKKwlpZiAoIXVkY19jb250cm9sbGVyLT51c2JfcmVncykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjE7CisJfQorCisJLyogaW5pdGlhbGl6ZSB1c2IgaHcgcmVnIGV4Y2VwdCBmb3IgcmVncyBmb3IgRVAsCisJICogbGVhdmUgdXNiaW50ciByZWcgdW50b3VjaGVkKi8KKwlxZV91ZGNfcmVnX2luaXQodWRjX2NvbnRyb2xsZXIpOworCisJLyogaGVyZSBjb21lcyB0aGUgc3RhbmQgb3BlcmF0aW9ucyBmb3IgcHJvYmUKKwkgKiBzZXQgdGhlIHFlX3VkYy0+Z2FkZ2V0Lnh4eCAqLworCXVkY19jb250cm9sbGVyLT5nYWRnZXQub3BzID0gJnFlX2dhZGdldF9vcHM7CisKKwkvKiBnYWRnZXQuZXAwIGlzIGEgcG9pbnRlciAqLworCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZXAwID0gJnVkY19jb250cm9sbGVyLT5lcHNbMF0uZXA7CisKKwlJTklUX0xJU1RfSEVBRCgmdWRjX2NvbnRyb2xsZXItPmdhZGdldC5lcF9saXN0KTsKKworCS8qIG1vZGlmeSBpbiByZWdpc3RlciBnYWRnZXQgcHJvY2VzcyAqLworCXVkY19jb250cm9sbGVyLT5nYWRnZXQuc3BlZWQgPSBVU0JfU1BFRURfVU5LTk9XTjsKKworCS8qIG5hbWU6IElkZW50aWZpZXMgdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUgdHlwZS4gKi8KKwl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0Lm5hbWUgPSBkcml2ZXJfbmFtZTsKKworCWRldmljZV9pbml0aWFsaXplKCZ1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldik7CisKKwlzdHJjcHkodWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYuYnVzX2lkLCAiZ2FkZ2V0Iik7CisKKwl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5yZWxlYXNlID0gcWVfdWRjX3JlbGVhc2U7CisJdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYucGFyZW50ID0gJm9mZGV2LT5kZXY7CisKKwkvKiBpbml0aWFsaXplIHFlX2VwIHN0cnVjdCAqLworCWZvciAoaSA9IDA7IGkgPCBVU0JfTUFYX0VORFBPSU5UUyA7IGkrKykgeworCQkvKiBiZWNhdXNlIHRoZSBlcCB0eXBlIGlzbid0IGRlY2lkZSBoZXJlIHNvCisJCSAqIHFlX2VwX2luaXQoKSBzaG91bGQgYmUgY2FsbGVkIGluIGVwX2VuYWJsZSgpICovCisKKwkJLyogc2V0dXAgdGhlIHFlX2VwIHN0cnVjdCBhbmQgbGluayBlcC5lcC5saXN0CisJCSAqIGludG8gZ2FkZ2V0LmVwX2xpc3QgKi8KKwkJcWVfZXBfY29uZmlnKHVkY19jb250cm9sbGVyLCAodW5zaWduZWQgY2hhcilpKTsKKwl9CisKKwkvKiBlcDAgaW5pdGlhbGl6YXRpb24gaW4gaGVyZSAqLworCXJldCA9IHFlX2VwX2luaXQodWRjX2NvbnRyb2xsZXIsIDAsICZxZV9lcDBfZGVzYyk7CisJaWYgKHJldCkKKwkJZ290byBlcnIyOworCisJLyogY3JlYXRlIGEgYnVmIGZvciBaTFAgc2VuZCwgbmVlZCB0byByZW1haW4gemVyb2VkICovCisJdWRjX2NvbnRyb2xsZXItPm51bGxidWYgPSBremFsbG9jKDI1NiwgR0ZQX0tFUk5FTCk7CisJaWYgKHVkY19jb250cm9sbGVyLT5udWxsYnVmID09IE5VTEwpIHsKKwkJZGV2X2RiZyh1ZGNfY29udHJvbGxlci0+ZGV2LCAiY2Fubm90IGFsbG9jIG51bGxidWZcbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjM7CisJfQorCisJLyogYnVmZmVyIGZvciBkYXRhIG9mIGdldF9zdGF0dXMgcmVxdWVzdCAqLworCXVkY19jb250cm9sbGVyLT5zdGF0dXNidWYgPSBremFsbG9jKDIsIEdGUF9LRVJORUwpOworCWlmICh1ZGNfY29udHJvbGxlci0+c3RhdHVzYnVmID09IE5VTEwpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnI0OworCX0KKworCXVkY19jb250cm9sbGVyLT5udWxscCA9IHZpcnRfdG9fcGh5cygodm9pZCAqKXVkY19jb250cm9sbGVyLT5udWxsYnVmKTsKKwlpZiAodWRjX2NvbnRyb2xsZXItPm51bGxwID09IERNQV9BRERSX0lOVkFMSUQpIHsKKwkJdWRjX2NvbnRyb2xsZXItPm51bGxwID0gZG1hX21hcF9zaW5nbGUoCisJCQkJCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LnBhcmVudCwKKwkJCQkJdWRjX2NvbnRyb2xsZXItPm51bGxidWYsCisJCQkJCTI1NiwKKwkJCQkJRE1BX1RPX0RFVklDRSk7CisJCXVkY19jb250cm9sbGVyLT5udWxsbWFwID0gMTsKKwl9IGVsc2UgeworCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQkJCXVkY19jb250cm9sbGVyLT5udWxscCwgMjU2LAorCQkJCQlETUFfVE9fREVWSUNFKTsKKwl9CisKKwl0YXNrbGV0X2luaXQoJnVkY19jb250cm9sbGVyLT5yeF90YXNrbGV0LCBlcF9yeF90YXNrbGV0LAorCQkJKHVuc2lnbmVkIGxvbmcpdWRjX2NvbnRyb2xsZXIpOworCS8qIHJlcXVlc3QgaXJxIGFuZCBkaXNhYmxlIERSICAqLworCXVkY19jb250cm9sbGVyLT51c2JfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApOworCisJcmV0ID0gcmVxdWVzdF9pcnEodWRjX2NvbnRyb2xsZXItPnVzYl9pcnEsIHFlX3VkY19pcnEsIDAsCisJCQkJZHJpdmVyX25hbWUsIHVkY19jb250cm9sbGVyKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIodWRjX2NvbnRyb2xsZXItPmRldiwgImNhbm5vdCByZXF1ZXN0IGlycSAlZCBlcnIgJWQgXG4iLAorCQkJdWRjX2NvbnRyb2xsZXItPnVzYl9pcnEsIHJldCk7CisJCWdvdG8gZXJyNTsKKwl9CisKKwlyZXQgPSBkZXZpY2VfYWRkKCZ1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldik7CisJaWYgKHJldCkKKwkJZ290byBlcnI2OworCisJZGV2X2luZm8odWRjX2NvbnRyb2xsZXItPmRldiwKKwkJCSIlcyBVU0IgY29udHJvbGxlciBpbml0aWFsaXplZCBhcyBkZXZpY2VcbiIsCisJCQkodWRjX2NvbnRyb2xsZXItPnNvY190eXBlID09IFBPUlRfUUUpID8gIlFFIiA6ICJDUE0iKTsKKwlyZXR1cm4gMDsKKworZXJyNjoKKwlmcmVlX2lycSh1ZGNfY29udHJvbGxlci0+dXNiX2lycSwgdWRjX2NvbnRyb2xsZXIpOworZXJyNToKKwlpZiAodWRjX2NvbnRyb2xsZXItPm51bGxtYXApIHsKKwkJZG1hX3VubWFwX3NpbmdsZSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQl1ZGNfY29udHJvbGxlci0+bnVsbHAsIDI1NiwKKwkJCQlETUFfVE9fREVWSUNFKTsKKwkJCXVkY19jb250cm9sbGVyLT5udWxscCA9IERNQV9BRERSX0lOVkFMSUQ7CisJfSBlbHNlIHsKKwkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUodWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYucGFyZW50LAorCQkJdWRjX2NvbnRyb2xsZXItPm51bGxwLCAyNTYsCisJCQkJRE1BX1RPX0RFVklDRSk7CisJfQorCWtmcmVlKHVkY19jb250cm9sbGVyLT5zdGF0dXNidWYpOworZXJyNDoKKwlrZnJlZSh1ZGNfY29udHJvbGxlci0+bnVsbGJ1Zik7CitlcnIzOgorCWVwID0gJnVkY19jb250cm9sbGVyLT5lcHNbMF07CisJY3BtX211cmFtX2ZyZWUoY3BtX211cmFtX29mZnNldChlcC0+cnhiYXNlKSk7CisJa2ZyZWUoZXAtPnJ4ZnJhbWUpOworCWtmcmVlKGVwLT5yeGJ1ZmZlcik7CisJa2ZyZWUoZXAtPnR4ZnJhbWUpOworZXJyMjoKKwlpb3VubWFwKHVkY19jb250cm9sbGVyLT51c2JfcmVncyk7CitlcnIxOgorCWtmcmVlKHVkY19jb250cm9sbGVyKTsKKworCXJldHVybiByZXQ7Cit9CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQgcWVfdWRjX3N1c3BlbmQoc3RydWN0IG9mX2RldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJcmV0dXJuIC1FTk9UU1VQUDsKK30KKworc3RhdGljIGludCBxZV91ZGNfcmVzdW1lKHN0cnVjdCBvZl9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gLUVOT1RTVVBQOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgX19kZXZleGl0IHFlX3VkY19yZW1vdmUoc3RydWN0IG9mX2RldmljZSAqb2ZkZXYpCit7CisJc3RydWN0IHFlX2VwICplcDsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKworCURFQ0xBUkVfQ09NUExFVElPTihkb25lKTsKKworCWlmICghdWRjX2NvbnRyb2xsZXIpCisJCXJldHVybiAtRU5PREVWOworCisJdWRjX2NvbnRyb2xsZXItPmRvbmUgPSAmZG9uZTsKKwl0YXNrbGV0X2Rpc2FibGUoJnVkY19jb250cm9sbGVyLT5yeF90YXNrbGV0KTsKKworCWlmICh1ZGNfY29udHJvbGxlci0+bnVsbG1hcCkgeworCQlkbWFfdW5tYXBfc2luZ2xlKHVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LnBhcmVudCwKKwkJCXVkY19jb250cm9sbGVyLT5udWxscCwgMjU2LAorCQkJCURNQV9UT19ERVZJQ0UpOworCQkJdWRjX2NvbnRyb2xsZXItPm51bGxwID0gRE1BX0FERFJfSU5WQUxJRDsKKwl9IGVsc2UgeworCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQl1ZGNfY29udHJvbGxlci0+bnVsbHAsIDI1NiwKKwkJCQlETUFfVE9fREVWSUNFKTsKKwl9CisJa2ZyZWUodWRjX2NvbnRyb2xsZXItPnN0YXR1c2J1Zik7CisJa2ZyZWUodWRjX2NvbnRyb2xsZXItPm51bGxidWYpOworCisJZXAgPSAmdWRjX2NvbnRyb2xsZXItPmVwc1swXTsKKwljcG1fbXVyYW1fZnJlZShjcG1fbXVyYW1fb2Zmc2V0KGVwLT5yeGJhc2UpKTsKKwlzaXplID0gKGVwLT5lcC5tYXhwYWNrZXQgKyBVU0JfQ1JDX1NJWkUgKyAyKSAqIChVU0JfQkRSSU5HX0xFTiArIDEpOworCisJa2ZyZWUoZXAtPnJ4ZnJhbWUpOworCWlmIChlcC0+cnhidWZtYXApIHsKKwkJZG1hX3VubWFwX3NpbmdsZSh1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQsCisJCQkJZXAtPnJ4YnVmX2QsIHNpemUsCisJCQkJRE1BX0ZST01fREVWSUNFKTsKKwkJZXAtPnJ4YnVmX2QgPSBETUFfQUREUl9JTlZBTElEOworCX0gZWxzZSB7CisJCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LnBhcmVudCwKKwkJCQllcC0+cnhidWZfZCwgc2l6ZSwKKwkJCQlETUFfRlJPTV9ERVZJQ0UpOworCX0KKworCWtmcmVlKGVwLT5yeGJ1ZmZlcik7CisJa2ZyZWUoZXAtPnR4ZnJhbWUpOworCisJZnJlZV9pcnEodWRjX2NvbnRyb2xsZXItPnVzYl9pcnEsIHVkY19jb250cm9sbGVyKTsKKworCXRhc2tsZXRfa2lsbCgmdWRjX2NvbnRyb2xsZXItPnJ4X3Rhc2tsZXQpOworCisJaW91bm1hcCh1ZGNfY29udHJvbGxlci0+dXNiX3JlZ3MpOworCisJZGV2aWNlX3VucmVnaXN0ZXIoJnVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2KTsKKwkvKiB3YWl0IGZvciByZWxlYXNlKCkgb2YgZ2FkZ2V0LmRldiB0byBmcmVlIHVkYyAqLworCXdhaXRfZm9yX2NvbXBsZXRpb24oJmRvbmUpOworCisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBfX2RldmluaXRkYXRhIHFlX3VkY19tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNjAtcWUtdXNiIiwKKwkJLmRhdGEgPSAodm9pZCAqKVBPUlRfUUUsCisJfSwKKwl7CisJCS5jb21wYXRpYmxlID0gImZzbCxtcGM4MjcyLWNwbS11c2IiLAorCQkuZGF0YSA9ICh2b2lkICopUE9SVF9DUE0sCisJfSwKKwl7fSwKK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFlX3VkY19tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3Qgb2ZfcGxhdGZvcm1fZHJpdmVyIHVkY19kcml2ZXIgPSB7CisJLm5hbWUgICAgICAgICAgID0gKGNoYXIgKilkcml2ZXJfbmFtZSwKKwkubWF0Y2hfdGFibGUgICAgPSBxZV91ZGNfbWF0Y2gsCisJLnByb2JlICAgICAgICAgID0gcWVfdWRjX3Byb2JlLAorCS5yZW1vdmUgICAgICAgICA9IF9fZGV2ZXhpdF9wKHFlX3VkY19yZW1vdmUpLAorI2lmZGVmIENPTkZJR19QTQorCS5zdXNwZW5kICAgICAgICA9IHFlX3VkY19zdXNwZW5kLAorCS5yZXN1bWUgICAgICAgICA9IHFlX3VkY19yZXN1bWUsCisjZW5kaWYKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHFlX3VkY19pbml0KHZvaWQpCit7CisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6ICVzLCAlc1xuIiwgZHJpdmVyX25hbWUsIGRyaXZlcl9kZXNjLAorCQkJRFJJVkVSX1ZFUlNJT04pOworCXJldHVybiBvZl9yZWdpc3Rlcl9wbGF0Zm9ybV9kcml2ZXIoJnVkY19kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgcWVfdWRjX2V4aXQodm9pZCkKK3sKKwlvZl91bnJlZ2lzdGVyX3BsYXRmb3JtX2RyaXZlcigmdWRjX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHFlX3VkY19pbml0KTsKK21vZHVsZV9leGl0KHFlX3VkY19leGl0KTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjI3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oCkBAIC0wLDAgKzEsNDM3IEBACisvKgorICogZHJpdmVycy91c2IvZ2FkZ2V0L3FlX3VkYy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAJWGlhb2JvIFhpZSA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KKyAqIAlMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgorICoKKyAqIERlc2NyaXB0aW9uOgorICogRnJlZXNjYWxlIFVTQiBkZXZpY2UvZW5kcG9pbnQgbWFuYWdlbWVudCByZWdpc3RlcnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAorICogeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfUUVfVURDX0gKKyNkZWZpbmUgX19GU0xfUUVfVURDX0gKKworLyogU29DIHR5cGUgKi8KKyNkZWZpbmUgUE9SVF9DUE0JMAorI2RlZmluZSBQT1JUX1FFCQkxCisKKyNkZWZpbmUgVVNCX01BWF9FTkRQT0lOVFMgICAgICAgICAgICAgICA0CisjZGVmaW5lIFVTQl9NQVhfUElQRVMgICAgICAgICAgICAgICAgICAgVVNCX01BWF9FTkRQT0lOVFMKKyNkZWZpbmUgVVNCX0VQMF9NQVhfU0laRQkJNjQKKyNkZWZpbmUgVVNCX01BWF9DVFJMX1BBWUxPQUQgICAgICAgICAgICAweDQwMDAKKyNkZWZpbmUgVVNCX0JEUklOR19MRU4JCQkxNgorI2RlZmluZSBVU0JfQkRSSU5HX0xFTl9SWAkJMjU2CisjZGVmaW5lIFVTQl9CRFJJTkdfTEVOX1RYCQkxNgorI2RlZmluZSBNSU5fRU1QVFlfQkRTCQkJMTI4CisjZGVmaW5lIE1BWF9EQVRBX0JEUwkJCTgKKyNkZWZpbmUgVVNCX0NSQ19TSVpFCQkJMgorI2RlZmluZSBVU0JfRElSX0JPVEgJCQkweDg4CisjZGVmaW5lIFJfQlVGX01BWFNJWkUJCQkweDgwMAorI2RlZmluZSBVU0JfRVBfUEFSQV9BTElHTk1FTlQJCTMyCisKKy8qIFVTQiBNb2RlIFJlZ2lzdGVyIGJpdCBkZWZpbmUgKi8KKyNkZWZpbmUgVVNCX01PREVfRU4JCTB4MDEKKyNkZWZpbmUgVVNCX01PREVfSE9TVAkJMHgwMgorI2RlZmluZSBVU0JfTU9ERV9URVNUCQkweDA0CisjZGVmaW5lIFVTQl9NT0RFX1NGVEUJCTB4MDgKKyNkZWZpbmUgVVNCX01PREVfUkVTVU1FCQkweDQwCisjZGVmaW5lIFVTQl9NT0RFX0xTUwkJMHg4MAorCisvKiBVU0IgU2xhdmUgQWRkcmVzcyBSZWdpc3RlciBNYXNrICovCisjZGVmaW5lIFVTQl9TTFZBRERSX01BU0sJMHg3RgorCisvKiBVU0IgRW5kcG9pbnQgcmVnaXN0ZXIgZGVmaW5lICovCisjZGVmaW5lIFVTQl9FUE5VTV9NQVNLCQkweEYwMDAKKyNkZWZpbmUgVVNCX0VQTlVNX1NISUZUCQkxMgorCisjZGVmaW5lIFVTQl9UUkFOU19NT0RFX1NISUZUCTgKKyNkZWZpbmUgVVNCX1RSQU5TX0NUUgkJMHgwMDAwCisjZGVmaW5lIFVTQl9UUkFOU19JTlQJCTB4MDEwMAorI2RlZmluZSBVU0JfVFJBTlNfQlVMSwkJMHgwMjAwCisjZGVmaW5lIFVTQl9UUkFOU19JU08JCTB4MDMwMAorCisjZGVmaW5lIFVTQl9FUF9NRgkJMHgwMDIwCisjZGVmaW5lIFVTQl9FUF9SVEUJCTB4MDAxMAorCisjZGVmaW5lIFVTQl9USFNfU0hJRlQJCTIKKyNkZWZpbmUgVVNCX1RIU19NQVNLCQkweDAwMGMKKyNkZWZpbmUgVVNCX1RIU19OT1JNQUwJCTB4MAorI2RlZmluZSBVU0JfVEhTX0lHTk9SRV9JTgkweDAwMDQKKyNkZWZpbmUgVVNCX1RIU19OQUNLCQkweDAwMDgKKyNkZWZpbmUgVVNCX1RIU19TVEFMTAkJMHgwMDBjCisKKyNkZWZpbmUgVVNCX1JIU19TSElGVCAgIAkwCisjZGVmaW5lIFVTQl9SSFNfTUFTSwkJMHgwMDAzCisjZGVmaW5lIFVTQl9SSFNfTk9STUFMICAJMHgwCisjZGVmaW5lIFVTQl9SSFNfSUdOT1JFX09VVAkweDAwMDEKKyNkZWZpbmUgVVNCX1JIU19OQUNLCQkweDAwMDIKKyNkZWZpbmUgVVNCX1JIU19TVEFMTAkJMHgwMDAzCisKKyNkZWZpbmUgVVNCX1JUSFNfTUFTSwkJMHgwMDBmCisKKy8qIFVTQiBDb21tYW5kIFJlZ2lzdGVyIGRlZmluZSAqLworI2RlZmluZSBVU0JfQ01EX1NUUl9GSUZPCTB4ODAKKyNkZWZpbmUgVVNCX0NNRF9GTFVTSF9GSUZPCTB4NDAKKyNkZWZpbmUgVVNCX0NNRF9JU0ZUCQkweDIwCisjZGVmaW5lIFVTQl9DTURfRFNGVAkJMHgxMAorI2RlZmluZSBVU0JfQ01EX0VQX01BU0sJCTB4MDMKKworLyogVVNCIEV2ZW50IGFuZCBNYXNrIFJlZ2lzdGVyIGRlZmluZSAqLworI2RlZmluZSBVU0JfRV9NU0ZfTUFTSwkJMHgwODAwCisjZGVmaW5lIFVTQl9FX1NGVF9NQVNLCQkweDA0MDAKKyNkZWZpbmUgVVNCX0VfUkVTRVRfTUFTSwkweDAyMDAKKyNkZWZpbmUgVVNCX0VfSURMRV9NQVNLCQkweDAxMDAKKyNkZWZpbmUgVVNCX0VfVFhFNF9NQVNLCQkweDAwODAKKyNkZWZpbmUgVVNCX0VfVFhFM19NQVNLCQkweDAwNDAKKyNkZWZpbmUgVVNCX0VfVFhFMl9NQVNLCQkweDAwMjAKKyNkZWZpbmUgVVNCX0VfVFhFMV9NQVNLCQkweDAwMTAKKyNkZWZpbmUgVVNCX0VfU09GX01BU0sJCTB4MDAwOAorI2RlZmluZSBVU0JfRV9CU1lfTUFTSwkJMHgwMDA0CisjZGVmaW5lIFVTQl9FX1RYQl9NQVNLCQkweDAwMDIKKyNkZWZpbmUgVVNCX0VfUlhCX01BU0sJCTB4MDAwMQorI2RlZmluZSBVU0JFUl9BTExfQ0xFQVIgCTB4MGZmZgorCisjZGVmaW5lIFVTQl9FX0RFRkFVTFRfREVWSUNFICAgKFVTQl9FX1JFU0VUX01BU0sgfCBVU0JfRV9UWEU0X01BU0sgfCBcCisJCQkJVVNCX0VfVFhFM19NQVNLIHwgVVNCX0VfVFhFMl9NQVNLIHwgXAorCQkJCVVTQl9FX1RYRTFfTUFTSyB8IFVTQl9FX0JTWV9NQVNLIHwgXAorCQkJCVVTQl9FX1RYQl9NQVNLIHwgVVNCX0VfUlhCX01BU0spCisKKyNkZWZpbmUgVVNCX0VfVFhFX01BU0sgICAgICAgICAoVVNCX0VfVFhFNF9NQVNLIHwgVVNCX0VfVFhFM19NQVNLfFwKKwkJCQkgVVNCX0VfVFhFMl9NQVNLIHwgVVNCX0VfVFhFMV9NQVNLKQorLyogVVNCIFN0YXR1cyBSZWdpc3RlciBkZWZpbmUgKi8KKyNkZWZpbmUgVVNCX0lETEVfU1RBVFVTX01BU0sJMHgwMQorCisvKiBVU0IgU3RhcnQgb2YgRnJhbWUgVGltZXIgKi8KKyNkZWZpbmUgVVNCX1VTU0ZUX01BU0sJCTB4M0ZGRgorCisvKiBVU0IgRnJhbWUgTnVtYmVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFVTQl9VU0ZSTl9NQVNLCQkweEZGRkYKKworc3RydWN0IHVzYl9kZXZpY2VfcGFyYXsKKwl1MTYJZXBwdHJbNF07CisJdTMyCXJzdGF0ZTsKKwl1MzIJcnB0cjsKKwl1MTYJZnJhbWVfbjsKKwl1MTYJcmJjbnQ7CisJdTMyCXJ0ZW1wOworCXUzMglyeHVzYl9kYXRhOworCXUxNglyeHVwdHI7CisJdTgJcmVzb1syXTsKKwl1MzIJc29mdGJsOworCXU4CXNvZnVjcmN0ZW1wOworfTsKKworc3RydWN0IHVzYl9lcF9wYXJheworCXUxNglyYmFzZTsKKwl1MTYJdGJhc2U7CisJdTgJcmJtcjsKKwl1OAl0Ym1yOworCXUxNgltcmJscjsKKwl1MTYJcmJwdHI7CisJdTE2CXRicHRyOworCXUzMgl0c3RhdGU7CisJdTMyCXRwdHI7CisJdTE2CXRjcmM7CisJdTE2CXRiY250OworCXUzMgl0dGVtcDsKKwl1MTYJdHh1c2J1X3B0cjsKKwl1OAlyZXNlcnZlWzJdOworfTsKKworI2RlZmluZSBVU0JfQlVTTU9ERV9HQkwJCTB4MjAKKyNkZWZpbmUgVVNCX0JVU01PREVfQk9fTUFTSwkweDE4CisjZGVmaW5lIFVTQl9CVVNNT0RFX0JPX1NISUZUCTB4MworI2RlZmluZSBVU0JfQlVTTU9ERV9CRQkJMHgyCisjZGVmaW5lIFVTQl9CVVNNT0RFX0NFVE0JMHgwNAorI2RlZmluZSBVU0JfQlVTTU9ERV9EVEIJCTB4MDIKKworLyogRW5kcG9pbnQgYmFzaWMgaGFuZGxlICovCisjZGVmaW5lIGVwX2luZGV4KEVQKQkJKChFUCktPmRlc2MtPmJFbmRwb2ludEFkZHJlc3MgJiAweEYpCisjZGVmaW5lIGVwX21heHBhY2tldChFUCkJKChFUCktPmVwLm1heHBhY2tldCkKKyNkZWZpbmUgZXBfaXNfaW4oRVApCSgoZXBfaW5kZXgoRVApID09IDApID8gKEVQLT51ZGMtPmVwMF9kaXIgPT0gXAorCQkJVVNCX0RJUl9JTikgOiAoKEVQKS0+ZGVzYy0+YkVuZHBvaW50QWRkcmVzcyBcCisJCQkmIFVTQl9ESVJfSU4pID09IFVTQl9ESVJfSU4pCisKKy8qIGVwMCB0cmFuc2ZlciBzdGF0ZSAqLworI2RlZmluZSBXQUlUX0ZPUl9TRVRVUCAgICAgICAgICAwCisjZGVmaW5lIERBVEFfU1RBVEVfWE1JVCAgICAgICAgIDEKKyNkZWZpbmUgREFUQV9TVEFURV9ORUVEX1pMUCAgICAgMgorI2RlZmluZSBXQUlUX0ZPUl9PVVRfU1RBVFVTICAgICAzCisjZGVmaW5lIERBVEFfU1RBVEVfUkVDViAgICAgICAgIDQKKworLyogZXAgdHJhbXNmZXIgbW9kZSAqLworI2RlZmluZSBVU0JQX1RNX0NUTAkwCisjZGVmaW5lIFVTQlBfVE1fSVNPCTEKKyNkZWZpbmUgVVNCUF9UTV9CVUxLCTIKKyNkZWZpbmUgVVNCUF9UTV9JTlQJMworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJVVNCIFJYIEFuZCBUWCBEQVRBIEZyYW1lCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RydWN0IHFlX2ZyYW1leworCXU4ICpkYXRhOworCXUzMiBsZW47CisJdTMyIHN0YXR1czsKKwl1MzIgaW5mbzsKKworCXZvaWQgKnByaXZkYXRhOworCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKK307CisKKy8qIEZyYW1lIHN0cnVjdHVyZSwgaW5mbyBmaWVsZC4gKi8KKyNkZWZpbmUgUElEX0RBVEEwICAgICAgICAgICAgICAweDgwMDAwMDAwIC8qIERhdGEgdG9nZ2xlIHplcm8gKi8KKyNkZWZpbmUgUElEX0RBVEExICAgICAgICAgICAgICAweDQwMDAwMDAwIC8qIERhdGEgdG9nZ2xlIG9uZSAgKi8KKyNkZWZpbmUgUElEX1NFVFVQICAgICAgICAgICAgICAweDIwMDAwMDAwIC8qIHNldHVwIGJpdCAqLworI2RlZmluZSBTRVRVUF9TVEFUVVMgICAgICAgICAgIDB4MTAwMDAwMDAgLyogc2V0dXAgc3RhdHVzIGJpdCAqLworI2RlZmluZSBTRVRBRERSX1NUQVRVUyAgICAgICAgIDB4MDgwMDAwMDAgLyogc2V0dXB1cCBhZGRyZXNzIHN0YXR1cyBiaXQgKi8KKyNkZWZpbmUgTk9fUkVRICAgICAgICAgICAgICAgICAweDA0MDAwMDAwIC8qIEZyYW1lIHdpdGhvdXQgcmVxdWVzdCAqLworI2RlZmluZSBIT1NUX0RBVEEgICAgICAgICAgICAgIDB4MDIwMDAwMDAgLyogSG9zdCBkYXRhIGZyYW1lICovCisjZGVmaW5lIEZJUlNUX1BBQ0tFVF9JTl9GUkFNRSAgMHgwMTAwMDAwMCAvKiBmaXJzdCBwYWNrZXQgaW4gdGhlIGZyYW1lICovCisjZGVmaW5lIFRPS0VOX0ZSQU1FICAgICAgICAgICAgMHgwMDgwMDAwMCAvKiBIb3N0IHRva2VuIGZyYW1lICovCisjZGVmaW5lIFpMUCAgICAgICAgICAgICAgICAgICAgMHgwMDQwMDAwMCAvKiBaZXJvIGxlbmd0aCBwYWNrZXQgKi8KKyNkZWZpbmUgSU5fVE9LRU5fRlJBTUUgICAgICAgICAweDAwMjAwMDAwIC8qIEluIHRva2VuIHBhY2thZ2UgKi8KKyNkZWZpbmUgT1VUX1RPS0VOX0ZSQU1FICAgICAgICAweDAwMTAwMDAwIC8qIE91dCB0b2tlbiBwYWNrYWdlICovCisjZGVmaW5lIFNFVFVQX1RPS0VOX0ZSQU1FICAgICAgMHgwMDA4MDAwMCAvKiBTZXR1cCB0b2tlbiBwYWNrYWdlICovCisjZGVmaW5lIFNUQUxMX0ZSQU1FICAgICAgICAgICAgMHgwMDA0MDAwMCAvKiBTdGFsbCBoYW5kc2hha2UgKi8KKyNkZWZpbmUgTkFDS19GUkFNRSAgICAgICAgICAgICAweDAwMDIwMDAwIC8qIE5hY2sgaGFuZHNoYWtlICovCisjZGVmaW5lIE5PX1BJRCAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAvKiBObyBzZW5kIFBJRCAqLworI2RlZmluZSBOT19DUkMgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAgLyogTm8gc2VuZCBDUkMgKi8KKyNkZWZpbmUgSE9TVF9DT01NQU5EICAgICAgICAgICAweDAwMDA0MDAwIC8qIEhvc3QgY29tbWFuZCBmcmFtZSAgICovCisKKy8qIEZyYW1lIHN0YXR1cyBmaWVsZCAqLworLyogUmVjZWl2ZSBzaWRlICovCisjZGVmaW5lIEZSQU1FX09LICAgICAgICAgICAgICAgMHgwMDAwMDAwMCAvKiBGcmFtZSB0cmFubWl0dGVkIG9yIHJlY2VpdmVkIE9LICovCisjZGVmaW5lIEZSQU1FX0VSUk9SICAgICAgICAgICAgMHg4MDAwMDAwMCAvKiBFcnJvciBvY2N1cmVkIG9uIGZyYW1lICovCisjZGVmaW5lIFNUQVJUX0ZSQU1FX0xPU1QgICAgICAgMHg0MDAwMDAwMCAvKiBTVEFSVF9GUkFNRV9MT1NUICovCisjZGVmaW5lIEVORF9GUkFNRV9MT1NUICAgICAgICAgMHgyMDAwMDAwMCAvKiBFTkRfRlJBTUVfTE9TVCAqLworI2RlZmluZSBSWF9FUl9OT05PQ1QgICAgICAgICAgIDB4MTAwMDAwMDAgLyogUnggTm9uIE9jdGV0IEFsaWduZWQgUGFja2V0ICovCisjZGVmaW5lIFJYX0VSX0JJVFNUVUZGICAgICAgICAgMHgwODAwMDAwMCAvKiBGcmFtZSBBYm9ydGVkIC0tUmVjZWl2ZWQgcGFja2V0CisJCQkJCSAgICAgd2l0aCBiaXQgc3R1ZmYgZXJyb3IgKi8KKyNkZWZpbmUgUlhfRVJfQ1JDICAgICAgICAgICAgICAweDA0MDAwMDAwIC8qIFJlY2VpdmVkIHBhY2tldCB3aXRoIENSQyBlcnJvciAqLworI2RlZmluZSBSWF9FUl9PVkVSVU4gICAgICAgICAgIDB4MDIwMDAwMDAgLyogT3Zlci1ydW4gb2NjdXJlZCBvbiByZWNlcHRpb24gKi8KKyNkZWZpbmUgUlhfRVJfUElEICAgICAgICAgICAgICAweDAxMDAwMDAwIC8qIFdyb25nIFBJRCByZWNlaXZlZCAqLworLyogVHJhbm1pdCBzaWRlICovCisjZGVmaW5lIFRYX0VSX05BSyAgICAgICAgICAgICAgMHgwMDgwMDAwMCAvKiBSZWNlaXZlZCBOQUsgaGFuZHNoYWtlICovCisjZGVmaW5lIFRYX0VSX1NUQUxMICAgICAgICAgICAgMHgwMDQwMDAwMCAvKiBSZWNlaXZlZCBTVEFMTCBoYW5kc2hha2UgKi8KKyNkZWZpbmUgVFhfRVJfVElNRU9VVCAgICAgICAgICAweDAwMjAwMDAwIC8qIFRyYW5zbWl0IHRpbWUgb3V0ICovCisjZGVmaW5lIFRYX0VSX1VOREVSVU4gICAgICAgICAgMHgwMDEwMDAwMCAvKiBUcmFuc21pdCB1bmRlcnJ1biAqLworI2RlZmluZSBGUkFNRV9JTlBST0dSRVNTICAgICAgIDB4MDAwODAwMDAgLyogRnJhbWUgaXMgYmVpbmcgdHJhbnNtaXR0ZWQgKi8KKyNkZWZpbmUgRVJfREFUQV9VTkRFUlVOICAgICAgICAweDAwMDQwMDAwIC8qIEZyYW1lIGlzIHNob3J0ZXIgdGhlbiBleHBlY3RlZCAqLworI2RlZmluZSBFUl9EQVRBX09WRVJVTiAgICAgICAgIDB4MDAwMjAwMDAgLyogRnJhbWUgaXMgbG9uZ2VyIHRoZW4gZXhwZWN0ZWQgKi8KKworLyogUUUgVVNCIGZyYW1lIG9wZXJhdGlvbiBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgZnJhbWVfZ2V0X2xlbmd0aChmcm0pIChmcm0tPmxlbikKKyNkZWZpbmUgZnJhbWVfc2V0X2xlbmd0aChmcm0sIGxlbmcpIChmcm0tPmxlbiA9IGxlbmcpCisjZGVmaW5lIGZyYW1lX2dldF9kYXRhKGZybSkgKGZybS0+ZGF0YSkKKyNkZWZpbmUgZnJhbWVfc2V0X2RhdGEoZnJtLCBkYXQpIChmcm0tPmRhdGEgPSBkYXQpCisjZGVmaW5lIGZyYW1lX2dldF9pbmZvKGZybSkgKGZybS0+aW5mbykKKyNkZWZpbmUgZnJhbWVfc2V0X2luZm8oZnJtLCBpbmYpIChmcm0tPmluZm8gPSBpbmYpCisjZGVmaW5lIGZyYW1lX2dldF9zdGF0dXMoZnJtKSAoZnJtLT5zdGF0dXMpCisjZGVmaW5lIGZyYW1lX3NldF9zdGF0dXMoZnJtLCBzdGF0KSAoZnJtLT5zdGF0dXMgPSBzdGF0KQorI2RlZmluZSBmcmFtZV9nZXRfcHJpdmRhdGEoZnJtKSAoZnJtLT5wcml2ZGF0YSkKKyNkZWZpbmUgZnJhbWVfc2V0X3ByaXZkYXRhKGZybSwgZGF0KSAoZnJtLT5wcml2ZGF0YSA9IGRhdCkKKworc3RhdGljIGlubGluZSB2b2lkIHFlX2ZyYW1lX2NsZWFuKHN0cnVjdCBxZV9mcmFtZSAqZnJtKQoreworCWZyYW1lX3NldF9kYXRhKGZybSwgTlVMTCk7CisJZnJhbWVfc2V0X2xlbmd0aChmcm0sIDApOworCWZyYW1lX3NldF9zdGF0dXMoZnJtLCBGUkFNRV9PSyk7CisJZnJhbWVfc2V0X2luZm8oZnJtLCAwKTsKKwlmcmFtZV9zZXRfcHJpdmRhdGEoZnJtLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHFlX2ZyYW1lX2luaXQoc3RydWN0IHFlX2ZyYW1lICpmcm0pCit7CisJcWVfZnJhbWVfY2xlYW4oZnJtKTsKKwlJTklUX0xJU1RfSEVBRCgmKGZybS0+bm9kZSkpOworfQorCitzdHJ1Y3QgcWVfcmVxIHsKKwlzdHJ1Y3QgdXNiX3JlcXVlc3QgcmVxOworCXN0cnVjdCBsaXN0X2hlYWQgcXVldWU7CisJLyogZXBfcXVldWUoKSBmdW5jIHdpbGwgYWRkCisJIGEgcmVxdWVzdC0+cXVldWUgaW50byBhIHVkY19lcC0+cXVldWUgJ2QgdGFpbCAqLworCXN0cnVjdCBxZV9lcCAqZXA7CisJdW5zaWduZWQgbWFwcGVkOjE7Cit9OworCitzdHJ1Y3QgcWVfZXAgeworCXN0cnVjdCB1c2JfZXAgZXA7CisJc3RydWN0IGxpc3RfaGVhZCBxdWV1ZTsKKwlzdHJ1Y3QgcWVfdWRjICp1ZGM7CisJY29uc3Qgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjOworCXN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQ7CisKKwl1OCBzdGF0ZTsKKworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpyeGJhc2U7CisJc3RydWN0IHFlX2JkIF9faW9tZW0gKm5fcnhiZDsKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqZV9yeGJkOworCisJc3RydWN0IHFlX2JkIF9faW9tZW0gKnR4YmFzZTsKKwlzdHJ1Y3QgcWVfYmQgX19pb21lbSAqbl90eGJkOworCXN0cnVjdCBxZV9iZCBfX2lvbWVtICpjX3R4YmQ7CisKKwlzdHJ1Y3QgcWVfZnJhbWUgKnJ4ZnJhbWU7CisJdTggKnJ4YnVmZmVyOworCWRtYV9hZGRyX3QgcnhidWZfZDsKKwl1OCByeGJ1Zm1hcDsKKwl1bnNpZ25lZCBjaGFyIGxvY2FsbmFjazsKKwlpbnQgaGFzX2RhdGE7CisKKwlzdHJ1Y3QgcWVfZnJhbWUgKnR4ZnJhbWU7CisJc3RydWN0IHFlX3JlcSAqdHhfcmVxOworCWludCBzZW50OyAgLypkYXRhIGFscmVhZHkgc2VudCAqLworCWludCBsYXN0OyAgLypkYXRhIHNlbnQgaW4gdGhlIGxhc3QgdGltZSovCisKKwl1OCBkaXI7CisJdTggZXBudW07CisJdTggdG07IC8qIHRyYW5zZmVyIG1vZGUgKi8KKwl1OCBkYXRhMDE7CisJdTggaW5pdDsKKworCXU4IGFscmVhZHlfc2VlbjsKKwl1OCBlbmFibGVfdGFza2xldDsKKwl1OCBzZXR1cF9zdGFnZTsKKwl1MzIgbGFzdF9pbzsgICAgICAgICAgICAvKiB0aW1lc3RhbXAgKi8KKworCWNoYXIgbmFtZVsxNF07CisKKwl1bnNpZ25lZCBkb3VibGVfYnVmOjE7CisJdW5zaWduZWQgc3RvcHBlZDoxOworCXVuc2lnbmVkIGZuZjoxOworCXVuc2lnbmVkIGhhc19kbWE6MTsKKworCXU4IGFja3dhaXQ7CisJdTggZG1hX2NoYW5uZWw7CisJdTE2IGRtYV9jb3VudGVyOworCWludCBsY2g7CisKKwlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKK307CisKK3N0cnVjdCBxZV91ZGMgeworCXN0cnVjdCB1c2JfZ2FkZ2V0IGdhZGdldDsKKwlzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHFlX2VwIGVwc1tVU0JfTUFYX0VORFBPSU5UU107CisJc3RydWN0IHVzYl9jdHJscmVxdWVzdCBsb2NhbF9zZXR1cF9idWZmOworCXNwaW5sb2NrX3QgbG9jazsJLyogbG9jayBmb3Igc2V0L2NvbmZpZyBxZV91ZGMgKi8KKwl1bnNpZ25lZCBsb25nIHNvY190eXBlOwkJLyogUUUgb3IgQ1BNIHNvYyAqLworCisJc3RydWN0IHFlX3JlcSAqc3RhdHVzX3JlcTsJLyogZXAwIHN0YXR1cyByZXF1ZXN0ICovCisKKwkvKiBVU0IgYW5kIEVQIFBhcmFtZXRlciBCbG9jayBwb2ludGVyICovCisJc3RydWN0IHVzYl9kZXZpY2VfcGFyYSBfX2lvbWVtICp1c2JfcGFyYW07CisJc3RydWN0IHVzYl9lcF9wYXJhIF9faW9tZW0gKmVwX3BhcmFtWzRdOworCisJdTMyIG1heF9waXBlczsgICAgICAgICAgLyogRGV2aWNlIG1heCBwaXBlcyAqLworCXUzMiBtYXhfdXNlX2VuZHB0czsgICAgIC8qIE1heCBlbmRwb2ludGVzIHRvIGJlIHVzZWQgKi8KKwl1MzIgYnVzX3Jlc2V0OyAgICAgICAgICAvKiBEZXZpY2UgaXMgYnVzIHJlc2V0aW5nICovCisJdTMyIHJlc3VtZV9zdGF0ZTsgICAgICAgLyogVVNCIHN0YXRlIHRvIHJlc3VtZSovCisJdTMyIHVzYl9zdGF0ZTsgICAgICAgICAgLyogVVNCIGN1cnJlbnQgc3RhdGUgKi8KKwl1MzIgdXNiX25leHRfc3RhdGU7ICAgICAvKiBVU0IgbmV4dCBzdGF0ZSAqLworCXUzMiBlcDBfc3RhdGU7ICAgICAgICAgIC8qIEVucG9pbnQgemVybyBzdGF0ZSAqLworCXUzMiBlcDBfZGlyOyAgICAgICAgICAgIC8qIEVucG9pbnQgemVybyBkaXJlY3Rpb246IGNhbiBiZQorCQkJCVVTQl9ESVJfSU4gb3IgVVNCX0RJUl9PVVQqLworCXUzMiB1c2Jfc29mX2NvdW50OyAgICAgIC8qIFNPRiBjb3VudCAqLworCXUzMiBlcnJvcnM7ICAgICAgICAgICAgIC8qIFVTQiBFUlJPUnMgY291bnQgKi8KKworCXU4ICp0bXBidWY7CisJdTMyIGNfc3RhcnQ7CisJdTMyIGNfZW5kOworCisJdTggKm51bGxidWY7CisJdTggKnN0YXR1c2J1ZjsKKwlkbWFfYWRkcl90IG51bGxwOworCXU4IG51bGxtYXA7CisJdTggZGV2aWNlX2FkZHJlc3M7CS8qIERldmljZSBVU0IgYWRkcmVzcyAqLworCisJdW5zaWduZWQgaW50IHVzYl9jbG9jazsKKwl1bnNpZ25lZCBpbnQgdXNiX2lycTsKKwlzdHJ1Y3QgdXNiX2N0bHIgX19pb21lbSAqdXNiX3JlZ3M7CisKKwlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgcnhfdGFza2xldDsKKworCXN0cnVjdCBjb21wbGV0aW9uICpkb25lOwkvKiB0byBtYWtlIHN1cmUgcmVsZWFzZSgpIGlzIGRvbmUgKi8KK307CisKKyNkZWZpbmUgRVBfU1RBVEVfSURMRQkwCisjZGVmaW5lIEVQX1NUQVRFX05BQ0sJMQorI2RlZmluZSBFUF9TVEFURV9TVEFMTAkyCisKKy8qCisgKiB0cmFuc21pdCBCRCdzIHN0YXR1cworICovCisjZGVmaW5lIFRfUiAgICAgICAgICAgMHg4MDAwMDAwMCAgICAgICAgIC8qIHJlYWR5IGJpdCAqLworI2RlZmluZSBUX1cgICAgICAgICAgIDB4MjAwMDAwMDAgICAgICAgICAvKiB3cmFwIGJpdCAqLworI2RlZmluZSBUX0kgICAgICAgICAgIDB4MTAwMDAwMDAgICAgICAgICAvKiBpbnRlcnJ1cHQgb24gY29tcGxldGlvbiAqLworI2RlZmluZSBUX0wgICAgICAgICAgIDB4MDgwMDAwMDAgICAgICAgICAvKiBsYXN0ICovCisjZGVmaW5lIFRfVEMgICAgICAgICAgMHgwNDAwMDAwMCAgICAgICAgIC8qIHRyYW5zbWl0IENSQyAqLworI2RlZmluZSBUX0NORiAgICAgICAgIDB4MDIwMDAwMDAgICAgICAgICAvKiB3YWl0IGZvciAgdHJhbnNtaXQgY29uZmlybSAqLworI2RlZmluZSBUX0xTUCAgICAgICAgIDB4MDEwMDAwMDAgICAgICAgICAvKiBMb3ctc3BlZWQgdHJhbnNhY3Rpb24gKi8KKyNkZWZpbmUgVF9QSUQgICAgICAgICAweDAwYzAwMDAwICAgICAgICAgLyogcGFja2V0IGlkICovCisjZGVmaW5lIFRfTkFLICAgICAgICAgMHgwMDEwMDAwMCAgICAgICAgIC8qIE5vIGFjay4gKi8KKyNkZWZpbmUgVF9TVEFMICAgICAgICAweDAwMDgwMDAwICAgICAgICAgLyogU3RhbGwgcmVjaWV2ZWQgKi8KKyNkZWZpbmUgVF9UTyAgICAgICAgICAweDAwMDQwMDAwICAgICAgICAgLyogdGltZSBvdXQgKi8KKyNkZWZpbmUgVF9VTiAgICAgICAgICAweDAwMDIwMDAwICAgICAgICAgLyogdW5kZXJydW4gKi8KKworI2RlZmluZSBERVZJQ0VfVF9FUlJPUiAgICAoVF9VTiB8IFRfVE8pCisjZGVmaW5lIEhPU1RfVF9FUlJPUiAgICAgIChUX1VOIHwgVF9UTyB8IFRfTkFLIHwgVF9TVEFMKQorI2RlZmluZSBERVZJQ0VfVF9CRF9NQVNLICBERVZJQ0VfVF9FUlJPUgorI2RlZmluZSBIT1NUX1RfQkRfTUFTSyAgICBIT1NUX1RfRVJST1IKKworI2RlZmluZSBUX1BJRF9TSElGVCAgIDYKKyNkZWZpbmUgVF9QSURfREFUQTAgICAweDAwODAwMDAwICAgICAgICAgLyogRGF0YSAwIHRvZ2dsZSAqLworI2RlZmluZSBUX1BJRF9EQVRBMSAgIDB4MDBjMDAwMDAgICAgICAgICAvKiBEYXRhIDEgdG9nZ2xlICovCisKKy8qCisgKiByZWNlaXZlIEJEJ3Mgc3RhdHVzCisgKi8KKyNkZWZpbmUgUl9FICAgICAgICAgICAweDgwMDAwMDAwICAgICAgICAgLyogYnVmZmVyIGVtcHR5ICovCisjZGVmaW5lIFJfVyAgICAgICAgICAgMHgyMDAwMDAwMCAgICAgICAgIC8qIHdyYXAgYml0ICovCisjZGVmaW5lIFJfSSAgICAgICAgICAgMHgxMDAwMDAwMCAgICAgICAgIC8qIGludGVycnVwdCBvbiByZWNlcHRpb24gKi8KKyNkZWZpbmUgUl9MICAgICAgICAgICAweDA4MDAwMDAwICAgICAgICAgLyogbGFzdCAqLworI2RlZmluZSBSX0YgICAgICAgICAgIDB4MDQwMDAwMDAgICAgICAgICAvKiBmaXJzdCAqLworI2RlZmluZSBSX1BJRCAgICAgICAgIDB4MDBjMDAwMDAgICAgICAgICAvKiBwYWNrZXQgaWQgKi8KKyNkZWZpbmUgUl9OTyAgICAgICAgICAweDAwMTAwMDAwICAgICAgICAgLyogUnggTm9uIE9jdGV0IEFsaWduZWQgUGFja2V0ICovCisjZGVmaW5lIFJfQUIgICAgICAgICAgMHgwMDA4MDAwMCAgICAgICAgIC8qIEZyYW1lIEFib3J0ZWQgKi8KKyNkZWZpbmUgUl9DUiAgICAgICAgICAweDAwMDQwMDAwICAgICAgICAgLyogQ1JDIEVycm9yICovCisjZGVmaW5lIFJfT1YgICAgICAgICAgMHgwMDAyMDAwMCAgICAgICAgIC8qIE92ZXJydW4gKi8KKworI2RlZmluZSBSX0VSUk9SICAgICAgIChSX05PIHwgUl9BQiB8IFJfQ1IgfCBSX09WKQorI2RlZmluZSBSX0JEX01BU0sgICAgIFJfRVJST1IKKworI2RlZmluZSBSX1BJRF9EQVRBMCAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgUl9QSURfREFUQTEgICAweDAwNDAwMDAwCisjZGVmaW5lIFJfUElEX1NFVFVQICAgMHgwMDgwMDAwMAorCisjZGVmaW5lIENQTV9VU0JfU1RPUF9UWCAweDJlNjAwMDAwCisjZGVmaW5lIENQTV9VU0JfUkVTVEFSVF9UWCAweDJlNjAwMDAwCisjZGVmaW5lIENQTV9VU0JfU1RPUF9UWF9PUENPREUgMHgwYQorI2RlZmluZSBDUE1fVVNCX1JFU1RBUlRfVFhfT1BDT0RFIDB4MGIKKyNkZWZpbmUgQ1BNX1VTQl9FUF9TSElGVCA1CisKKyNpZm5kZWYgQ09ORklHX0NQTQoraW5saW5lIGludCBjcG1fY29tbWFuZCh1MzIgY29tbWFuZCwgdTggb3Bjb2RlKQoreworCXJldHVybiAtRU9QTk9UU1VQUDsKK30KKyNlbmRpZgorCisjaWZuZGVmIENPTkZJR19RVUlDQ19FTkdJTkUKK2lubGluZSBpbnQgcWVfaXNzdWVfY21kKHUzMiBjbWQsIHUzMiBkZXZpY2UsIHU4IG1jbl9wcm90b2NvbCwKKwl1MzIgY21kX2lucHV0KQoreworCXJldHVybiAtRU9QTk9UU1VQUDsKK30KKyNlbmRpZgorCisjZW5kaWYgIC8qIF9fRlNMX1FFX1VEQ19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmMKaW5kZXggNDVhZDU1Ni4uMDkxYmI1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuYwpAQCAtMjMsMTEgKzIzLDggQEAKICNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgpAQCAtNDQsMTEgKzQxLDkgQEAKIAogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vaXJxLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KICNpbmNsdWRlIDxhc20vZG1hLmg+Ci0jaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KIAogI2luY2x1ZGUgImZzbF91c2IyX3VkYy5oIgogCkBAIC02MSw4ICs1Niw4IEBACiBzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZVtdID0gImZzbC11c2IyLXVkYyI7CiBzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfZGVzY1tdID0gRFJJVkVSX0RFU0M7CiAKLXZvbGF0aWxlIHN0YXRpYyBzdHJ1Y3QgdXNiX2RyX2RldmljZSAqZHJfcmVncyA9IE5VTEw7Ci12b2xhdGlsZSBzdGF0aWMgc3RydWN0IHVzYl9zeXNfaW50ZXJmYWNlICp1c2Jfc3lzX3JlZ3MgPSBOVUxMOworc3RhdGljIHN0cnVjdCB1c2JfZHJfZGV2aWNlICpkcl9yZWdzOworc3RhdGljIHN0cnVjdCB1c2Jfc3lzX2ludGVyZmFjZSAqdXNiX3N5c19yZWdzOwogCiAvKiBpdCBpcyBpbml0aWFsaXplZCBpbiBwcm9iZSgpICAqLwogc3RhdGljIHN0cnVjdCBmc2xfdWRjICp1ZGNfY29udHJvbGxlciA9IE5VTEw7CkBAIC03NiwxNiArNzEsMTQgQEAKIAkud01heFBhY2tldFNpemUgPQlVU0JfTUFYX0NUUkxfUEFZTE9BRCwKIH07CiAKLXN0YXRpYyBpbnQgZnNsX3VkY19zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSk7Ci1zdGF0aWMgaW50IGZzbF91ZGNfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwogc3RhdGljIHZvaWQgZnNsX2VwX2ZpZm9fZmx1c2goc3RydWN0IHVzYl9lcCAqX2VwKTsKIAogI2lmZGVmIENPTkZJR19QUEMzMgogI2RlZmluZSBmc2xfcmVhZGwoYWRkcikJCWluX2xlMzIoYWRkcikKLSNkZWZpbmUgZnNsX3dyaXRlbChhZGRyLCB2YWwzMikgb3V0X2xlMzIodmFsMzIsIGFkZHIpCisjZGVmaW5lIGZzbF93cml0ZWwodmFsMzIsIGFkZHIpIG91dF9sZTMyKGFkZHIsIHZhbDMyKQogI2Vsc2UKICNkZWZpbmUgZnNsX3JlYWRsKGFkZHIpCQlyZWFkbChhZGRyKQotI2RlZmluZSBmc2xfd3JpdGVsKGFkZHIsIHZhbDMyKSB3cml0ZWwoYWRkciwgdmFsMzIpCisjZGVmaW5lIGZzbF93cml0ZWwodmFsMzIsIGFkZHIpIHdyaXRlbCh2YWwzMiwgYWRkcikKICNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE4NSwxMCArMTc4LDYgQEAKIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiAjZGVmaW5lIEZTTF9VRENfUkVTRVRfVElNRU9VVCAxMDAwCiAKLQkvKiBiZWZvcmUgaGVyZSwgbWFrZSBzdXJlIGRyX3JlZ3MgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKi8KLQlpZiAoIXVkYykKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAkvKiBTdG9wIGFuZCByZXNldCB0aGUgdXNiIGNvbnRyb2xsZXIgKi8KIAl0bXAgPSBmc2xfcmVhZGwoJmRyX3JlZ3MtPnVzYmNtZCk7CiAJdG1wICY9IH5VU0JfQ01EX1JVTl9TVE9QOwpAQCAtMjAyLDcgKzE5MSw3IEBACiAJdGltZW91dCA9IGppZmZpZXMgKyBGU0xfVURDX1JFU0VUX1RJTUVPVVQ7CiAJd2hpbGUgKGZzbF9yZWFkbCgmZHJfcmVncy0+dXNiY21kKSAmIFVTQl9DTURfQ1RSTF9SRVNFVCkgewogCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewotCQkJRVJSKCJ1ZGMgcmVzZXQgdGltZW91dCEgXG4iKTsKKwkJCUVSUigidWRjIHJlc2V0IHRpbWVvdXQhXG4iKTsKIAkJCXJldHVybiAtRVRJTUVET1VUOwogCQl9CiAJCWNwdV9yZWxheCgpOwpAQCAtMzE1LDcgKzMwNCw4IEBACiAJcmV0dXJuOwogfQogCi12b2lkIGRyX2VwX3NldHVwKHVuc2lnbmVkIGNoYXIgZXBfbnVtLCB1bnNpZ25lZCBjaGFyIGRpciwgdW5zaWduZWQgY2hhciBlcF90eXBlKQorc3RhdGljIHZvaWQgZHJfZXBfc2V0dXAodW5zaWduZWQgY2hhciBlcF9udW0sIHVuc2lnbmVkIGNoYXIgZGlyLAorCQkJdW5zaWduZWQgY2hhciBlcF90eXBlKQogewogCXVuc2lnbmVkIGludCB0bXBfZXBjdHJsID0gMDsKIApAQCAtNTYzLDcgKzU1Myw3IEBACiAJLyogbnVrZSBhbGwgcGVuZGluZyByZXF1ZXN0cyAoZG9lcyBmbHVzaCkgKi8KIAludWtlKGVwLCAtRVNIVVRET1dOKTsKIAotCWVwLT5kZXNjID0gMDsKKwllcC0+ZGVzYyA9IE5VTEw7CiAJZXAtPnN0b3BwZWQgPSAxOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVkYy0+bG9jaywgZmxhZ3MpOwogCkBAIC02MDIsNyArNTkyLDcgQEAKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLXN0YXRpYyBpbnQgZnNsX3F1ZXVlX3RkKHN0cnVjdCBmc2xfZXAgKmVwLCBzdHJ1Y3QgZnNsX3JlcSAqcmVxKQorc3RhdGljIHZvaWQgZnNsX3F1ZXVlX3RkKHN0cnVjdCBmc2xfZXAgKmVwLCBzdHJ1Y3QgZnNsX3JlcSAqcmVxKQogewogCWludCBpID0gZXBfaW5kZXgoZXApICogMiArIGVwX2lzX2luKGVwKTsKIAl1MzIgdGVtcCwgYml0bWFzaywgdG1wX3N0YXQ7CkBAIC02NTMsMTMgKzY0MywxNiBAQAogCQkJfCBFUF9RVUVVRV9IRUFEX1NUQVRVU19IQUxUKSk7CiAJZFFILT5zaXplX2lvY19pbnRfc3RzICY9IHRlbXA7CiAKKwkvKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsIG9jY3VyZSBiZWZvcmUgcHJpbWluZy4gKi8KKwl3bWIoKTsKKwogCS8qIFByaW1lIGVuZHBvaW50IGJ5IHdyaXRpbmcgMSB0byBFTkRQVFBSSU1FICovCiAJdGVtcCA9IGVwX2lzX2luKGVwKQogCQk/ICgxIDw8IChlcF9pbmRleChlcCkgKyAxNikpCiAJCTogKDEgPDwgKGVwX2luZGV4KGVwKSkpOwogCWZzbF93cml0ZWwodGVtcCwgJmRyX3JlZ3MtPmVuZHBvaW50cHJpbWUpOwogb3V0OgotCXJldHVybiAwOworCXJldHVybjsKIH0KIAogLyogRmlsbCBpbiB0aGUgZFREIHN0cnVjdHVyZQpAQCAtNzEwLDcgKzcwMyw3IEBACiAJCSppc19sYXN0ID0gMDsKIAogCWlmICgoKmlzX2xhc3QpID09IDApCi0JCVZEQkcoIm11bHRpLWR0ZCByZXF1ZXN0IVxuIik7CisJCVZEQkcoIm11bHRpLWR0ZCByZXF1ZXN0ISIpOwogCS8qIEZpbGwgaW4gdGhlIHRyYW5zZmVyIHNpemU7IHNldCBhY3RpdmUgYml0ICovCiAJc3dhcF90ZW1wID0gKCgqbGVuZ3RoIDw8IERURF9MRU5HVEhfQklUX1BPUykgfCBEVERfU1RBVFVTX0FDVElWRSk7CiAKQEAgLTc3MywxMSArNzY2LDExIEBACiAJLyogY2F0Y2ggdmFyaW91cyBib2d1cyBwYXJhbWV0ZXJzICovCiAJaWYgKCFfcmVxIHx8ICFyZXEtPnJlcS5jb21wbGV0ZSB8fCAhcmVxLT5yZXEuYnVmCiAJCQl8fCAhbGlzdF9lbXB0eSgmcmVxLT5xdWV1ZSkpIHsKLQkJVkRCRygiJXMsIGJhZCBwYXJhbXNcbiIsIF9fZnVuY19fKTsKKwkJVkRCRygiJXMsIGJhZCBwYXJhbXMiLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlpZiAodW5saWtlbHkoIV9lcCB8fCAhZXAtPmRlc2MpKSB7Ci0JCVZEQkcoIiVzLCBiYWQgZXBcbiIsIF9fZnVuY19fKTsKKwkJVkRCRygiJXMsIGJhZCBlcCIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWlmIChlcC0+ZGVzYy0+Ym1BdHRyaWJ1dGVzID09IFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MpIHsKQEAgLTEwNjksNyArMTA2Miw3IEBACiAKIAl1ZGMgPSBjb250YWluZXJfb2YoZ2FkZ2V0LCBzdHJ1Y3QgZnNsX3VkYywgZ2FkZ2V0KTsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdWRjLT5sb2NrLCBmbGFncyk7Ci0JVkRCRygiVkJVUyAlc1xuIiwgaXNfYWN0aXZlID8gIm9uIiA6ICJvZmYiKTsKKwlWREJHKCJWQlVTICVzIiwgaXNfYWN0aXZlID8gIm9uIiA6ICJvZmYiKTsKIAl1ZGMtPnZidXNfYWN0aXZlID0gKGlzX2FjdGl2ZSAhPSAwKTsKIAlpZiAoY2FuX3B1bGx1cCh1ZGMpKQogCQlmc2xfd3JpdGVsKChmc2xfcmVhZGwoJmRyX3JlZ3MtPnVzYmNtZCkgfCBVU0JfQ01EX1JVTl9TVE9QKSwKQEAgLTExNDYsNyArMTEzOSw2IEBACiB7CiAJc3RydWN0IGZzbF9yZXEgKnJlcSA9IHVkYy0+c3RhdHVzX3JlcTsKIAlzdHJ1Y3QgZnNsX2VwICplcDsKLQlpbnQgc3RhdHVzID0gMDsKIAogCWlmIChkaXJlY3Rpb24gPT0gRVBfRElSX0lOKQogCQl1ZGMtPmVwMF9kaXIgPSBVU0JfRElSX0lOOwpAQCAtMTE2NCwyNyArMTE1NiwyMSBAQAogCXJlcS0+ZHRkX2NvdW50ID0gMDsKIAogCWlmIChmc2xfcmVxX3RvX2R0ZChyZXEpID09IDApCi0JCXN0YXR1cyA9IGZzbF9xdWV1ZV90ZChlcCwgcmVxKTsKKwkJZnNsX3F1ZXVlX3RkKGVwLCByZXEpOwogCWVsc2UKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlpZiAoc3RhdHVzKQotCQlFUlIoIkNhbid0IHF1ZXVlIGVwMCBzdGF0dXMgcmVxdWVzdCBcbiIpOwogCWxpc3RfYWRkX3RhaWwoJnJlcS0+cXVldWUsICZlcC0+cXVldWUpOwogCi0JcmV0dXJuIHN0YXR1czsKKwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgdWRjX3Jlc2V0X2VwX3F1ZXVlKHN0cnVjdCBmc2xfdWRjICp1ZGMsIHU4IHBpcGUpCitzdGF0aWMgdm9pZCB1ZGNfcmVzZXRfZXBfcXVldWUoc3RydWN0IGZzbF91ZGMgKnVkYywgdTggcGlwZSkKIHsKIAlzdHJ1Y3QgZnNsX2VwICplcCA9IGdldF9lcF9ieV9waXBlKHVkYywgcGlwZSk7CiAKLQlpZiAoIWVwLT5uYW1lKQotCQlyZXR1cm4gMDsKLQotCW51a2UoZXAsIC1FU0hVVERPV04pOwotCi0JcmV0dXJuIDA7CisJaWYgKGVwLT5uYW1lKQorCQludWtlKGVwLCAtRVNIVVRET1dOKTsKIH0KIAogLyoKQEAgLTEyMDgsMTAgKzExOTQsOCBAQAogCQl1MTYgaW5kZXgsIHUxNiBsZW5ndGgpCiB7CiAJdTE2IHRtcCA9IDA7CQkvKiBTdGF0dXMsIGNwdSBlbmRpYW4gKi8KLQogCXN0cnVjdCBmc2xfcmVxICpyZXE7CiAJc3RydWN0IGZzbF9lcCAqZXA7Ci0JaW50IHN0YXR1cyA9IDA7CiAKIAllcCA9ICZ1ZGMtPmVwc1swXTsKIApAQCAtMTI1MCwxNCArMTIzNCwxMCBAQAogCiAJLyogcHJpbWUgdGhlIGRhdGEgcGhhc2UgKi8KIAlpZiAoKGZzbF9yZXFfdG9fZHRkKHJlcSkgPT0gMCkpCi0JCXN0YXR1cyA9IGZzbF9xdWV1ZV90ZChlcCwgcmVxKTsKKwkJZnNsX3F1ZXVlX3RkKGVwLCByZXEpOwogCWVsc2UJCQkvKiBubyBtZW0gKi8KIAkJZ290byBzdGFsbDsKIAotCWlmIChzdGF0dXMpIHsKLQkJRVJSKCJDYW4ndCByZXNwb25kIHRvIGdldHN0YXR1cyByZXF1ZXN0IFxuIik7Ci0JCWdvdG8gc3RhbGw7Ci0JfQogCWxpc3RfYWRkX3RhaWwoJnJlcS0+cXVldWUsICZlcC0+cXVldWUpOwogCXVkYy0+ZXAwX3N0YXRlID0gREFUQV9TVEFURV9YTUlUOwogCXJldHVybjsKQEAgLTEzOTcsNyArMTM3Nyw3IEBACiAJCXVkYy0+ZXAwX3N0YXRlID0gV0FJVF9GT1JfU0VUVVA7CiAJCWJyZWFrOwogCWNhc2UgV0FJVF9GT1JfU0VUVVA6Ci0JCUVSUigiVW5leHBlY3QgZXAwIHBhY2tldHMgXG4iKTsKKwkJRVJSKCJVbmV4cGVjdCBlcDAgcGFja2V0c1xuIik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWVwMHN0YWxsKHVkYyk7CkBAIC0xNDc2LDcgKzE0NTYsNyBAQAogCQkJCXN0YXR1cyA9IC1FSUxTRVE7CiAJCQkJYnJlYWs7CiAJCQl9IGVsc2UKLQkJCQlFUlIoIlVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQgKDB4JXgpIVxyXG4iLAorCQkJCUVSUigiVW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCAoMHgleCkhXG4iLAogCQkJCQllcnJvcnMpOwogCiAJCX0gZWxzZSBpZiAobGUzMl90b19jcHUoY3Vycl90ZC0+c2l6ZV9pb2Nfc3RzKQpAQCAtMTQ5NSw3ICsxNDc1LDcgQEAKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCXRkX2NvbXBsZXRlKys7Ci0JCQlWREJHKCJkVEQgdHJhbnNtaXR0ZWQgc3VjY2Vzc2Z1bCAiKTsKKwkJCVZEQkcoImRURCB0cmFuc21pdHRlZCBzdWNjZXNzZnVsIik7CiAJCX0KIAogCQlpZiAoaiAhPSBjdXJyX3JlcS0+ZHRkX2NvdW50IC0gMSkKQEAgLTE1NjgsOSArMTU0OCw2IEBACiB7CiAJdTMyIHNwZWVkOwogCi0JaWYgKHVkYy0+YnVzX3Jlc2V0KQotCQl1ZGMtPmJ1c19yZXNldCA9IDA7Ci0KIAkvKiBCdXMgcmVzZXR0aW5nIGlzIGZpbmlzaGVkICovCiAJaWYgKCEoZnNsX3JlYWRsKCZkcl9yZWdzLT5wb3J0c2MxKSAmIFBPUlRTQ1hfUE9SVF9SRVNFVCkpIHsKIAkJLyogR2V0IHRoZSBzcGVlZCAqLwpAQCAtMTY3OCw4ICsxNjU1LDYgQEAKIAogCWlmIChmc2xfcmVhZGwoJmRyX3JlZ3MtPnBvcnRzYzEpICYgUE9SVFNDWF9QT1JUX1JFU0VUKSB7CiAJCVZEQkcoIkJ1cyByZXNldCIpOwotCQkvKiBCdXMgaXMgcmVzZXRpbmcgKi8KLQkJdWRjLT5idXNfcmVzZXQgPSAxOwogCQkvKiBSZXNldCBhbGwgdGhlIHF1ZXVlcywgaW5jbHVkZSBYRCwgZFRELCBFUCBxdWV1ZQogCQkgKiBoZWFkIGFuZCBUUiBRdWV1ZSAqLwogCQlyZXNldF9xdWV1ZXModWRjKTsKQEAgLTE3NjgsNyArMTc0Myw3IEBACiAJfQogCiAJaWYgKGlycV9zcmMgJiAoVVNCX1NUU19FUlIgfCBVU0JfU1RTX1NZU19FUlIpKSB7Ci0JCVZEQkcoIkVycm9yIElSUSAleCAiLCBpcnFfc3JjKTsKKwkJVkRCRygiRXJyb3IgSVJRICV4IiwgaXJxX3NyYyk7CiAJfQogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjLT5sb2NrLCBmbGFncyk7CkBAIC0xNzk5LDcgKzE3NzQsNyBAQAogCS8qIGxvY2sgaXMgbmVlZGVkIGJ1dCB3aGV0aGVyIHNob3VsZCB1c2UgdGhpcyBsb2NrIG9yIGFub3RoZXIgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmdWRjX2NvbnRyb2xsZXItPmxvY2ssIGZsYWdzKTsKIAotCWRyaXZlci0+ZHJpdmVyLmJ1cyA9IDA7CisJZHJpdmVyLT5kcml2ZXIuYnVzID0gTlVMTDsKIAkvKiBob29rIHVwIHRoZSBkcml2ZXIgKi8KIAl1ZGNfY29udHJvbGxlci0+ZHJpdmVyID0gZHJpdmVyOwogCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LmRyaXZlciA9ICZkcml2ZXItPmRyaXZlcjsKQEAgLTE4MDksOCArMTc4NCw4IEBACiAJcmV0dmFsID0gZHJpdmVyLT5iaW5kKCZ1ZGNfY29udHJvbGxlci0+Z2FkZ2V0KTsKIAlpZiAocmV0dmFsKSB7CiAJCVZEQkcoImJpbmQgdG8gJXMgLS0+ICVkIiwgZHJpdmVyLT5kcml2ZXIubmFtZSwgcmV0dmFsKTsKLQkJdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYuZHJpdmVyID0gMDsKLQkJdWRjX2NvbnRyb2xsZXItPmRyaXZlciA9IDA7CisJCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LmRyaXZlciA9IE5VTEw7CisJCXVkY19jb250cm9sbGVyLT5kcml2ZXIgPSBOVUxMOwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTE4MTksMTIgKzE3OTQsMTIgQEAKIAl1ZGNfY29udHJvbGxlci0+dXNiX3N0YXRlID0gVVNCX1NUQVRFX0FUVEFDSEVEOwogCXVkY19jb250cm9sbGVyLT5lcDBfc3RhdGUgPSBXQUlUX0ZPUl9TRVRVUDsKIAl1ZGNfY29udHJvbGxlci0+ZXAwX2RpciA9IDA7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGJpbmQgdG8gZHJpdmVyICVzIFxuIiwKKwlwcmludGsoS0VSTl9JTkZPICIlczogYmluZCB0byBkcml2ZXIgJXNcbiIsCiAJCQl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0Lm5hbWUsIGRyaXZlci0+ZHJpdmVyLm5hbWUpOwogCiBvdXQ6CiAJaWYgKHJldHZhbCkKLQkJcHJpbnRrKCJyZXR2YWwgJWQgXG4iLCByZXR2YWwpOworCQlwcmludGsoImdhZGdldCBkcml2ZXIgcmVnaXN0ZXIgZmFpbGVkICVkXG4iLCByZXR2YWwpOwogCXJldHVybiByZXR2YWw7CiB9CiBFWFBPUlRfU1lNQk9MKHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyKTsKQEAgLTE4NDIsNyArMTgxNyw3IEBACiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKHVkY19jb250cm9sbGVyLT50cmFuc2NlaXZlcikKLQkJKHZvaWQpb3RnX3NldF9wZXJpcGhlcmFsKHVkY19jb250cm9sbGVyLT50cmFuc2NlaXZlciwgMCk7CisJCW90Z19zZXRfcGVyaXBoZXJhbCh1ZGNfY29udHJvbGxlci0+dHJhbnNjZWl2ZXIsIE5VTEwpOwogCiAJLyogc3RvcCBEUiwgZGlzYWJsZSBpbnRyICovCiAJZHJfY29udHJvbGxlcl9zdG9wKHVkY19jb250cm9sbGVyKTsKQEAgLTE4NjMsMTAgKzE4MzgsMTAgQEAKIAogCS8qIHVuYmluZCBnYWRnZXQgYW5kIHVuaG9vayBkcml2ZXIuICovCiAJZHJpdmVyLT51bmJpbmQoJnVkY19jb250cm9sbGVyLT5nYWRnZXQpOwotCXVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2LmRyaXZlciA9IDA7Ci0JdWRjX2NvbnRyb2xsZXItPmRyaXZlciA9IDA7CisJdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYuZHJpdmVyID0gTlVMTDsKKwl1ZGNfY29udHJvbGxlci0+ZHJpdmVyID0gTlVMTDsKIAotCXByaW50aygidW5yZWdpc3RlcmVkIGdhZGdldCBkcml2ZXIgJyVzJ1xyXG4iLCBkcml2ZXItPmRyaXZlci5uYW1lKTsKKwlwcmludGsoInVucmVnaXN0ZXJlZCBnYWRnZXQgZHJpdmVyICclcydcbiIsIGRyaXZlci0+ZHJpdmVyLm5hbWUpOwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTCh1c2JfZ2FkZ2V0X3VucmVnaXN0ZXJfZHJpdmVyKTsKQEAgLTE5MjIsNyArMTg5Nyw3IEBACiAJdG1wX3JlZyA9IGZzbF9yZWFkbCgmZHJfcmVncy0+dXNic3RzKTsKIAl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsCiAJCQkiVVNCIFN0YXR1cyBSZWc6XG4iCi0JCQkiRHIgU3VzcGVuZDogJWQiICJSZXNldCBSZWNlaXZlZDogJWQiICJTeXN0ZW0gRXJyb3I6ICVzIgorCQkJIkRyIFN1c3BlbmQ6ICVkIFJlc2V0IFJlY2VpdmVkOiAlZCBTeXN0ZW0gRXJyb3I6ICVzICIKIAkJCSJVU0IgRXJyb3IgSW50ZXJydXB0OiAlc1xuXG4iLAogCQkJKHRtcF9yZWcgJiBVU0JfU1RTX1NVU1BFTkQpID8gMSA6IDAsCiAJCQkodG1wX3JlZyAmIFVTQl9TVFNfUkVTRVQpID8gMSA6IDAsCkBAIC0xOTM0LDExICsxOTA5LDExIEBACiAJdG1wX3JlZyA9IGZzbF9yZWFkbCgmZHJfcmVncy0+dXNiaW50cik7CiAJdCA9IHNjbnByaW50ZihuZXh0LCBzaXplLAogCQkJIlVTQiBJbnRycnVwdCBFbmFibGUgUmVnOlxuIgotCQkJIlNsZWVwIEVuYWJsZTogJWQiICJTT0YgUmVjZWl2ZWQgRW5hYmxlOiAlZCIKKwkJCSJTbGVlcCBFbmFibGU6ICVkIFNPRiBSZWNlaXZlZCBFbmFibGU6ICVkICIKIAkJCSJSZXNldCBFbmFibGU6ICVkXG4iCi0JCQkiU3lzdGVtIEVycm9yIEVuYWJsZTogJWQiCisJCQkiU3lzdGVtIEVycm9yIEVuYWJsZTogJWQgIgogCQkJIlBvcnQgQ2hhbmdlIERlY3RlY3RlZCBFbmFibGU6ICVkXG4iCi0JCQkiVVNCIEVycm9yIEludHIgRW5hYmxlOiAlZCIgIlVTQiBJbnRyIEVuYWJsZTogJWRcblxuIiwKKwkJCSJVU0IgRXJyb3IgSW50ciBFbmFibGU6ICVkIFVTQiBJbnRyIEVuYWJsZTogJWRcblxuIiwKIAkJCSh0bXBfcmVnICYgVVNCX0lOVFJfREVWSUNFX1NVU1BFTkQpID8gMSA6IDAsCiAJCQkodG1wX3JlZyAmIFVTQl9JTlRSX1NPRl9FTikgPyAxIDogMCwKIAkJCSh0bXBfcmVnICYgVVNCX0lOVFJfUkVTRVRfRU4pID8gMSA6IDAsCkBAIC0xOTUxLDIxICsxOTI2LDIxIEBACiAKIAl0bXBfcmVnID0gZnNsX3JlYWRsKCZkcl9yZWdzLT5mcmluZGV4KTsKIAl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsCi0JCQkiVVNCIEZyYW1lIEluZGV4IFJlZzoiICJGcmFtZSBOdW1iZXIgaXMgMHgleFxuXG4iLAorCQkJIlVTQiBGcmFtZSBJbmRleCBSZWc6IEZyYW1lIE51bWJlciBpcyAweCV4XG5cbiIsCiAJCQkodG1wX3JlZyAmIFVTQl9GUklOREVYX01BU0tTKSk7CiAJc2l6ZSAtPSB0OwogCW5leHQgKz0gdDsKIAogCXRtcF9yZWcgPSBmc2xfcmVhZGwoJmRyX3JlZ3MtPmRldmljZWFkZHIpOwogCXQgPSBzY25wcmludGYobmV4dCwgc2l6ZSwKLQkJCSJVU0IgRGV2aWNlIEFkZHJlc3MgUmVnOiIgIkRldmljZSBBZGRyIGlzIDB4JXhcblxuIiwKKwkJCSJVU0IgRGV2aWNlIEFkZHJlc3MgUmVnOiBEZXZpY2UgQWRkciBpcyAweCV4XG5cbiIsCiAJCQkodG1wX3JlZyAmIFVTQl9ERVZJQ0VfQUREUkVTU19NQVNLKSk7CiAJc2l6ZSAtPSB0OwogCW5leHQgKz0gdDsKIAogCXRtcF9yZWcgPSBmc2xfcmVhZGwoJmRyX3JlZ3MtPmVuZHBvaW50bGlzdGFkZHIpOwogCXQgPSBzY25wcmludGYobmV4dCwgc2l6ZSwKLQkJCSJVU0IgRW5kcG9pbnQgTGlzdCBBZGRyZXNzIFJlZzoiCisJCQkiVVNCIEVuZHBvaW50IExpc3QgQWRkcmVzcyBSZWc6ICIKIAkJCSJEZXZpY2UgQWRkciBpcyAweCV4XG5cbiIsCiAJCQkodG1wX3JlZyAmIFVTQl9FUF9MSVNUX0FERFJFU1NfTUFTSykpOwogCXNpemUgLT0gdDsKQEAgLTE5NzQsMTEgKzE5NDksMTIgQEAKIAl0bXBfcmVnID0gZnNsX3JlYWRsKCZkcl9yZWdzLT5wb3J0c2MxKTsKIAl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsCiAJCSJVU0IgUG9ydCBTdGF0dXMmQ29udHJvbCBSZWc6XG4iCi0JCSJQb3J0IFRyYW5zY2VpdmVyIFR5cGUgOiAlcyIgIlBvcnQgU3BlZWQ6ICVzIFxuIgotCQkiUEhZIExvdyBQb3dlciBTdXNwZW5kOiAlcyIgIlBvcnQgUmVzZXQ6ICVzIgotCQkiUG9ydCBTdXNwZW5kIE1vZGU6ICVzIFxuIiAiT3Zlci1jdXJyZW50IENoYW5nZTogJXMiCisJCSJQb3J0IFRyYW5zY2VpdmVyIFR5cGUgOiAlcyBQb3J0IFNwZWVkOiAlc1xuIgorCQkiUEhZIExvdyBQb3dlciBTdXNwZW5kOiAlcyBQb3J0IFJlc2V0OiAlcyAiCisJCSJQb3J0IFN1c3BlbmQgTW9kZTogJXNcbiIKKwkJIk92ZXItY3VycmVudCBDaGFuZ2U6ICVzICIKIAkJIlBvcnQgRW5hYmxlL0Rpc2FibGUgQ2hhbmdlOiAlc1xuIgotCQkiUG9ydCBFbmFibGVkL0Rpc2FibGVkOiAlcyIKKwkJIlBvcnQgRW5hYmxlZC9EaXNhYmxlZDogJXMgIgogCQkiQ3VycmVudCBDb25uZWN0IFN0YXR1czogJXNcblxuIiwgKCB7CiAJCQljaGFyICpzOwogCQkJc3dpdGNoICh0bXBfcmVnICYgUE9SVFNDWF9QVFNfRlNMUykgewpAQCAtMjAyMyw3ICsxOTk5LDcgQEAKIAogCXRtcF9yZWcgPSBmc2xfcmVhZGwoJmRyX3JlZ3MtPnVzYm1vZGUpOwogCXQgPSBzY25wcmludGYobmV4dCwgc2l6ZSwKLQkJCSJVU0IgTW9kZSBSZWc6IiAiQ29udHJvbGxlciBNb2RlIGlzIDogJXNcblxuIiwgKCB7CisJCQkiVVNCIE1vZGUgUmVnOiBDb250cm9sbGVyIE1vZGUgaXM6ICVzXG5cbiIsICggewogCQkJCWNoYXIgKnM7CiAJCQkJc3dpdGNoICh0bXBfcmVnICYgVVNCX01PREVfQ1RSTF9NT0RFX0hPU1QpIHsKIAkJCQljYXNlIFVTQl9NT0RFX0NUUkxfTU9ERV9JRExFOgpAQCAtMjA0Miw3ICsyMDE4LDcgQEAKIAogCXRtcF9yZWcgPSBmc2xfcmVhZGwoJmRyX3JlZ3MtPmVuZHB0c2V0dXBzdGF0KTsKIAl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsCi0JCQkiRW5kcG9pbnQgU2V0dXAgU3RhdHVzIFJlZzoiICJTRVRVUCBvbiBlcCAweCV4XG5cbiIsCisJCQkiRW5kcG9pbnQgU2V0dXAgU3RhdHVzIFJlZzogU0VUVVAgb24gZXAgMHgleFxuXG4iLAogCQkJKHRtcF9yZWcgJiBFUF9TRVRVUF9TVEFUVVNfTUFTSykpOwogCXNpemUgLT0gdDsKIAluZXh0ICs9IHQ7CkBAIC0yMDU1LDEyICsyMDMxLDEyIEBACiAJCW5leHQgKz0gdDsKIAl9CiAJdG1wX3JlZyA9IGZzbF9yZWFkbCgmZHJfcmVncy0+ZW5kcG9pbnRwcmltZSk7Ci0JdCA9IHNjbnByaW50ZihuZXh0LCBzaXplLCAiRVAgUHJpbWUgUmVnID0gWzB4JXhdXG4iLCB0bXBfcmVnKTsKKwl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsICJFUCBQcmltZSBSZWcgPSBbMHgleF1cblxuIiwgdG1wX3JlZyk7CiAJc2l6ZSAtPSB0OwogCW5leHQgKz0gdDsKIAogCXRtcF9yZWcgPSB1c2Jfc3lzX3JlZ3MtPnNub29wMTsKLQl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsICJcblNub29wMSBSZWcgOiA9IFsweCV4XVxuXG4iLCB0bXBfcmVnKTsKKwl0ID0gc2NucHJpbnRmKG5leHQsIHNpemUsICJTbm9vcDEgUmVnIDogPSBbMHgleF1cblxuIiwgdG1wX3JlZyk7CiAJc2l6ZSAtPSB0OwogCW5leHQgKz0gdDsKIApAQCAtMjA4NCw3ICsyMDYwLDcgQEAKIAl9IGVsc2UgewogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJmVwLT5xdWV1ZSwgcXVldWUpIHsKIAkJCXQgPSBzY25wcmludGYobmV4dCwgc2l6ZSwKLQkJCQkicmVxICVwIGFjdHVhbCAweCV4IGxlbmd0aCAweCV4ICBidWYgJXBcbiIsCisJCQkJInJlcSAlcCBhY3R1YWwgMHgleCBsZW5ndGggMHgleCBidWYgJXBcbiIsCiAJCQkJJnJlcS0+cmVxLCByZXEtPnJlcS5hY3R1YWwsCiAJCQkJcmVxLT5yZXEubGVuZ3RoLCByZXEtPnJlcS5idWYpOwogCQkJc2l6ZSAtPSB0OwpAQCAtMjExMCw3ICsyMDg2LDcgQEAKIAkJCX0gZWxzZSB7CiAJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZlcC0+cXVldWUsIHF1ZXVlKSB7CiAJCQkJCXQgPSBzY25wcmludGYobmV4dCwgc2l6ZSwKLQkJCQkJCSJyZXEgJXAgYWN0dWFsIDB4JXggbGVuZ3RoIgorCQkJCQkJInJlcSAlcCBhY3R1YWwgMHgleCBsZW5ndGggIgogCQkJCQkJIjB4JXggIGJ1ZiAlcFxuIiwKIAkJCQkJCSZyZXEtPnJlcSwgcmVxLT5yZXEuYWN0dWFsLAogCQkJCQkJcmVxLT5yZXEubGVuZ3RoLCByZXEtPnJlcS5idWYpOwpAQCAtMjIwMiw3ICsyMTc4LDYgQEAKIAl1ZGMtPnVzYl9zdGF0ZSA9IFVTQl9TVEFURV9QT1dFUkVEOwogCXVkYy0+ZXAwX2RpciA9IDA7CiAJdWRjLT5yZW1vdGVfd2FrZXVwID0gMDsJLyogZGVmYXVsdCB0byAwIG9uIHJlc2V0ICovCi0Jc3Bpbl9sb2NrX2luaXQoJnVkYy0+bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIyNTQsNyArMjIyOSw3IEBACiAJdTMyIGRjY3BhcmFtczsKIAogCWlmIChzdHJjbXAocGRldi0+bmFtZSwgZHJpdmVyX25hbWUpKSB7Ci0JCVZEQkcoIldyb25nIGRldmljZVxuIik7CisJCVZEQkcoIldyb25nIGRldmljZSIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTIyNjQsMjMgKzIyMzksMjYgQEAKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCisJc3Bpbl9sb2NrX2luaXQoJnVkY19jb250cm9sbGVyLT5sb2NrKTsKKwl1ZGNfY29udHJvbGxlci0+c3RvcHBlZCA9IDE7CisKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwogCWlmICghcmVzKSB7Ci0JCWtmcmVlKHVkY19jb250cm9sbGVyKTsKLQkJcmV0dXJuIC1FTlhJTzsKKwkJcmV0ID0gLUVOWElPOworCQlnb3RvIGVycl9rZnJlZTsKIAl9CiAKIAlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihyZXMtPnN0YXJ0LCByZXMtPmVuZCAtIHJlcy0+c3RhcnQgKyAxLAogCQkJCWRyaXZlcl9uYW1lKSkgewotCQlFUlIoInJlcXVlc3QgbWVtIHJlZ2lvbiBmb3IgJXMgZmFpbGVkIFxuIiwgcGRldi0+bmFtZSk7Ci0JCWtmcmVlKHVkY19jb250cm9sbGVyKTsKLQkJcmV0dXJuIC1FQlVTWTsKKwkJRVJSKCJyZXF1ZXN0IG1lbSByZWdpb24gZm9yICVzIGZhaWxlZFxuIiwgcGRldi0+bmFtZSk7CisJCXJldCA9IC1FQlVTWTsKKwkJZ290byBlcnJfa2ZyZWU7CiAJfQogCiAJZHJfcmVncyA9IGlvcmVtYXAocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CiAJaWYgKCFkcl9yZWdzKSB7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyMTsKKwkJZ290byBlcnJfcmVsZWFzZV9tZW1fcmVnaW9uOwogCX0KIAogCXVzYl9zeXNfcmVncyA9IChzdHJ1Y3QgdXNiX3N5c19pbnRlcmZhY2UgKikKQEAgLTIyOTEsNyArMjI2OSw3IEBACiAJaWYgKCEoZGNjcGFyYW1zICYgRENDUEFSQU1TX0RDKSkgewogCQlFUlIoIlRoaXMgU09DIGRvZXNuJ3Qgc3VwcG9ydCBkZXZpY2Ugcm9sZVxuIik7CiAJCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gZXJyMjsKKwkJZ290byBlcnJfaW91bm1hcDsKIAl9CiAJLyogR2V0IG1heCBkZXZpY2UgZW5kcG9pbnRzICovCiAJLyogREVOIGlzIGJpZGlyZWN0aW9uYWwgZXAgbnVtYmVyLCBtYXhfZXAgZG91YmxlcyB0aGUgbnVtYmVyICovCkBAIC0yMzAwLDIyICsyMjc4LDIyIEBACiAJdWRjX2NvbnRyb2xsZXItPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CiAJaWYgKCF1ZGNfY29udHJvbGxlci0+aXJxKSB7CiAJCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gZXJyMjsKKwkJZ290byBlcnJfaW91bm1hcDsKIAl9CiAKIAlyZXQgPSByZXF1ZXN0X2lycSh1ZGNfY29udHJvbGxlci0+aXJxLCBmc2xfdWRjX2lycSwgSVJRRl9TSEFSRUQsCiAJCQlkcml2ZXJfbmFtZSwgdWRjX2NvbnRyb2xsZXIpOwogCWlmIChyZXQgIT0gMCkgewotCQlFUlIoImNhbm5vdCByZXF1ZXN0IGlycSAlZCBlcnIgJWQgXG4iLAorCQlFUlIoImNhbm5vdCByZXF1ZXN0IGlycSAlZCBlcnIgJWRcbiIsCiAJCQkJdWRjX2NvbnRyb2xsZXItPmlycSwgcmV0KTsKLQkJZ290byBlcnIyOworCQlnb3RvIGVycl9pb3VubWFwOwogCX0KIAogCS8qIEluaXRpYWxpemUgdGhlIHVkYyBzdHJ1Y3R1cmUgaW5jbHVkaW5nIFFIIG1lbWJlciBhbmQgb3RoZXIgbWVtYmVyICovCiAJaWYgKHN0cnVjdF91ZGNfc2V0dXAodWRjX2NvbnRyb2xsZXIsIHBkZXYpKSB7CiAJCUVSUigiQ2FuJ3QgaW5pdGlhbGl6ZSB1ZGMgZGF0YSBzdHJ1Y3R1cmVcbiIpOwogCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGVycjM7CisJCWdvdG8gZXJyX2ZyZWVfaXJxOwogCX0KIAogCS8qIGluaXRpYWxpemUgdXNiIGh3IHJlZyBleGNlcHQgZm9yIHJlZ3MgZm9yIEVQLApAQCAtMjMzNiw3ICsyMzE0LDcgQEAKIAl1ZGNfY29udHJvbGxlci0+Z2FkZ2V0LmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2OwogCXJldCA9IGRldmljZV9yZWdpc3RlcigmdWRjX2NvbnRyb2xsZXItPmdhZGdldC5kZXYpOwogCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycjM7CisJCWdvdG8gZXJyX2ZyZWVfaXJxOwogCiAJLyogc2V0dXAgUUggYW5kIGVwY3RybCBmb3IgZXAwICovCiAJZXAwX3NldHVwKHVkY19jb250cm9sbGVyKTsKQEAgLTIzNjYsMjAgKzIzNDQsMjIgQEAKIAkJCURURF9BTElHTk1FTlQsIFVEQ19ETUFfQk9VTkRBUlkpOwogCWlmICh1ZGNfY29udHJvbGxlci0+dGRfcG9vbCA9PSBOVUxMKSB7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyNDsKKwkJZ290byBlcnJfdW5yZWdpc3RlcjsKIAl9CiAJY3JlYXRlX3Byb2NfZmlsZSgpOwogCXJldHVybiAwOwogCi1lcnI0OgorZXJyX3VucmVnaXN0ZXI6CiAJZGV2aWNlX3VucmVnaXN0ZXIoJnVkY19jb250cm9sbGVyLT5nYWRnZXQuZGV2KTsKLWVycjM6CitlcnJfZnJlZV9pcnE6CiAJZnJlZV9pcnEodWRjX2NvbnRyb2xsZXItPmlycSwgdWRjX2NvbnRyb2xsZXIpOwotZXJyMjoKK2Vycl9pb3VubWFwOgogCWlvdW5tYXAoZHJfcmVncyk7Ci1lcnIxOgorZXJyX3JlbGVhc2VfbWVtX3JlZ2lvbjoKIAlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CitlcnJfa2ZyZWU6CiAJa2ZyZWUodWRjX2NvbnRyb2xsZXIpOworCXVkY19jb250cm9sbGVyID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNDY5LDcgKzI0NDksNyBAQAogc3RhdGljIHZvaWQgX19leGl0IHVkY19leGl0KHZvaWQpCiB7CiAJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnVkY19kcml2ZXIpOwotCXByaW50aygiJXMgdW5yZWdpc3RlcmVkIFxuIiwgZHJpdmVyX2Rlc2MpOworCXByaW50aygiJXMgdW5yZWdpc3RlcmVkXG4iLCBkcml2ZXJfZGVzYyk7CiB9CiAKIG1vZHVsZV9leGl0KHVkY19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaAppbmRleCA2MTMxNzUyLi5lNjNlZjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5oCkBAIC00MjQsMTYgKzQyNCw2IEBACiAvKiBDb250cm9sbGVyIGRtYSBib3VuZGFyeSAqLwogI2RlZmluZSBVRENfRE1BX0JPVU5EQVJZCQkJMHgxMDAwCiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qICMjIyMjIGVudW0gZGF0YQotKi8KLXR5cGVkZWYgZW51bSB7Ci0JZV9VTFBJLAotCWVfVVRNSV84QklULAotCWVfVVRNSV8xNkJJVCwKLQllX1NFUklBTAotfSBlX1BoeUludGVyZmFjZTsKLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyogIyMjIGRyaXZlciBwcml2YXRlIGRhdGEKQEAgLTQ2OSw5ICs0NTksOSBAQAogI2RlZmluZSBFUF9ESVJfT1VUCTAKIAogc3RydWN0IGZzbF91ZGMgewotCiAJc3RydWN0IHVzYl9nYWRnZXQgZ2FkZ2V0OwogCXN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyOworCXN0cnVjdCBjb21wbGV0aW9uICpkb25lOwkvKiB0byBtYWtlIHN1cmUgcmVsZWFzZSgpIGlzIGRvbmUgKi8KIAlzdHJ1Y3QgZnNsX2VwICplcHM7CiAJdW5zaWduZWQgaW50IG1heF9lcDsKIAl1bnNpZ25lZCBpbnQgaXJxOwpAQCAtNDkyLDIwICs0ODIsMTMgQEAKIAlzaXplX3QgZXBfcWhfc2l6ZTsJCS8qIHNpemUgYWZ0ZXIgYWxpZ25tZW50IGFkanVzdG1lbnQqLwogCWRtYV9hZGRyX3QgZXBfcWhfZG1hOwkJLyogZG1hIGFkZHJlc3Mgb2YgUUggKi8KIAotCXUzMiBtYXhfcGlwZXM7CQkvKiBEZXZpY2UgbWF4IHBpcGVzICovCi0JdTMyIG1heF91c2VfZW5kcHRzOwkvKiBNYXggZW5kcG9pbnRlcyB0byBiZSB1c2VkICovCi0JdTMyIGJ1c19yZXNldDsJCS8qIERldmljZSBpcyBidXMgcmVzZXRpbmcgKi8KKwl1MzIgbWF4X3BpcGVzOyAgICAgICAgICAvKiBEZXZpY2UgbWF4IHBpcGVzICovCiAJdTMyIHJlc3VtZV9zdGF0ZTsJLyogVVNCIHN0YXRlIHRvIHJlc3VtZSAqLwogCXUzMiB1c2Jfc3RhdGU7CQkvKiBVU0IgY3VycmVudCBzdGF0ZSAqLwotCXUzMiB1c2JfbmV4dF9zdGF0ZTsJLyogVVNCIG5leHQgc3RhdGUgKi8KIAl1MzIgZXAwX3N0YXRlOwkJLyogRW5kcG9pbnQgemVybyBzdGF0ZSAqLwogCXUzMiBlcDBfZGlyOwkJLyogRW5kcG9pbnQgemVybyBkaXJlY3Rpb246IGNhbiBiZQogCQkJCSAgIFVTQl9ESVJfSU4gb3IgVVNCX0RJUl9PVVQgKi8KLQl1MzIgdXNiX3NvZl9jb3VudDsJLyogU09GIGNvdW50ICovCi0JdTMyIGVycm9yczsJCS8qIFVTQiBFUlJPUnMgY291bnQgKi8KIAl1OCBkZXZpY2VfYWRkcmVzczsJLyogRGV2aWNlIFVTQiBhZGRyZXNzICovCi0KLQlzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZTsJLyogdG8gbWFrZSBzdXJlIHJlbGVhc2UoKSBpcyBkb25lICovCiB9OwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2dhZGdldF9jaGlwcy5oIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2dhZGdldF9jaGlwcy5oCmluZGV4IDE3ZDk5MDUuLjRlMzEwN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9nYWRnZXRfY2hpcHMuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZ2FkZ2V0X2NoaXBzLmgKQEAgLTE1MSw2ICsxNTEsMTMgQEAKICNkZWZpbmUJZ2FkZ2V0X2lzX202NjU5MihnKQkwCiAjZW5kaWYKIAorLyogRnJlZXNjYWxlIENQTS9RRSBVREMgU1VQUE9SVCAqLworI2lmZGVmIENPTkZJR19VU0JfR0FER0VUX0ZTTF9RRQorI2RlZmluZSBnYWRnZXRfaXNfZnNsX3FlKGcpCSFzdHJjbXAoImZzbF9xZV91ZGMiLCAoZyktPm5hbWUpCisjZWxzZQorI2RlZmluZSBnYWRnZXRfaXNfZnNsX3FlKGcpCTAKKyNlbmRpZgorCiAKIC8vIENPTkZJR19VU0JfR0FER0VUX1NYMgogLy8gQ09ORklHX1VTQl9HQURHRVRfQVUxWDAwCkBAIC0yMTYsNiArMjIzLDggQEAKIAkJcmV0dXJuIDB4MjA7CiAJZWxzZSBpZiAoZ2FkZ2V0X2lzX202NjU5MihnYWRnZXQpKQogCQlyZXR1cm4gMHgyMTsKKwllbHNlIGlmIChnYWRnZXRfaXNfZnNsX3FlKGdhZGdldCkpCisJCXJldHVybiAweDIyOwogCXJldHVybiAtRU5PRU5UOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZ21pZGkuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCmluZGV4IDZlZWU3NjAuLjYwZDNmOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCkBAIC0yMjIsNyArMjIyLDcgQEAKIAkgKiBwb3dlciBwcm9wZXJ0aWVzIG9mIHRoZSBkZXZpY2UuIElzIGl0IHNlbGZwb3dlcmVkPwogCSAqLwogCS5ibUF0dHJpYnV0ZXMgPQkJVVNCX0NPTkZJR19BVFRfT05FLAotCS5iTWF4UG93ZXIgPQkJMSwKKwkuYk1heFBvd2VyID0JCUNPTkZJR19VU0JfR0FER0VUX1ZCVVNfRFJBVyAvIDIsCiB9OwogCiAvKiBCLjMuMSAgU3RhbmRhcmQgQUMgSW50ZXJmYWNlIERlc2NyaXB0b3IgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jCmluZGV4IDVjZmI1ZWIuLjhhZTcwZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYwpAQCAtMTc4LDYgKzE3OCw3IEBACiAKIAkvKiBlcF9yZXNldCgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkICovCiAJZXAtPnN0b3BwZWQgPSAwOworCWVwLT53ZWRnZWQgPSAwOwogCWVwLT5vdXRfb3ZlcmZsb3cgPSAwOwogCiAJLyogc2V0IHNwZWVkLWRlcGVuZGVudCBtYXggcGFja2V0OyBtYXkga2ljayBpbiBoaWdoIGJhbmR3aWR0aCAqLwpAQCAtMTIxOCw3ICsxMjE5LDcgQEAKIHN0YXRpYyBpbnQgbmV0MjI4MF9maWZvX3N0YXR1cyAoc3RydWN0IHVzYl9lcCAqX2VwKTsKIAogc3RhdGljIGludAotbmV0MjI4MF9zZXRfaGFsdCAoc3RydWN0IHVzYl9lcCAqX2VwLCBpbnQgdmFsdWUpCituZXQyMjgwX3NldF9oYWx0X2FuZF93ZWRnZShzdHJ1Y3QgdXNiX2VwICpfZXAsIGludCB2YWx1ZSwgaW50IHdlZGdlZCkKIHsKIAlzdHJ1Y3QgbmV0MjI4MF9lcAkqZXA7CiAJdW5zaWduZWQgbG9uZwkJZmxhZ3M7CkBAIC0xMjM5LDE2ICsxMjQwLDIxIEBACiAJZWxzZSBpZiAoZXAtPmlzX2luICYmIHZhbHVlICYmIG5ldDIyODBfZmlmb19zdGF0dXMgKF9lcCkgIT0gMCkKIAkJcmV0dmFsID0gLUVBR0FJTjsKIAllbHNlIHsKLQkJVkRFQlVHIChlcC0+ZGV2LCAiJXMgJXMgaGFsdFxuIiwgX2VwLT5uYW1lLAotCQkJCXZhbHVlID8gInNldCIgOiAiY2xlYXIiKTsKKwkJVkRFQlVHIChlcC0+ZGV2LCAiJXMgJXMgJXNcbiIsIF9lcC0+bmFtZSwKKwkJCQl2YWx1ZSA/ICJzZXQiIDogImNsZWFyIiwKKwkJCQl3ZWRnZWQgPyAid2VkZ2UiIDogImhhbHQiKTsKIAkJLyogc2V0L2NsZWFyLCB0aGVuIHN5bmNoIG1lbW9yeSB2aWV3cyB3aXRoIHRoZSBkZXZpY2UgKi8KIAkJaWYgKHZhbHVlKSB7CiAJCQlpZiAoZXAtPm51bSA9PSAwKQogCQkJCWVwLT5kZXYtPnByb3RvY29sX3N0YWxsID0gMTsKIAkJCWVsc2UKIAkJCQlzZXRfaGFsdCAoZXApOwotCQl9IGVsc2UKKwkJCWlmICh3ZWRnZWQpCisJCQkJZXAtPndlZGdlZCA9IDE7CisJCX0gZWxzZSB7CiAJCQljbGVhcl9oYWx0IChlcCk7CisJCQllcC0+d2VkZ2VkID0gMDsKKwkJfQogCQkodm9pZCkgcmVhZGwgKCZlcC0+cmVncy0+ZXBfcnNwKTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSAoJmVwLT5kZXYtPmxvY2ssIGZsYWdzKTsKQEAgLTEyNTcsNiArMTI2MywyMCBAQAogfQogCiBzdGF0aWMgaW50CituZXQyMjgwX3NldF9oYWx0KHN0cnVjdCB1c2JfZXAgKl9lcCwgaW50IHZhbHVlKQoreworCXJldHVybiBuZXQyMjgwX3NldF9oYWx0X2FuZF93ZWRnZShfZXAsIHZhbHVlLCAwKTsKK30KKworc3RhdGljIGludAorbmV0MjI4MF9zZXRfd2VkZ2Uoc3RydWN0IHVzYl9lcCAqX2VwKQoreworCWlmICghX2VwIHx8IF9lcC0+bmFtZSA9PSBlcDBuYW1lKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gbmV0MjI4MF9zZXRfaGFsdF9hbmRfd2VkZ2UoX2VwLCAxLCAxKTsKK30KKworc3RhdGljIGludAogbmV0MjI4MF9maWZvX3N0YXR1cyAoc3RydWN0IHVzYl9lcCAqX2VwKQogewogCXN0cnVjdCBuZXQyMjgwX2VwCSplcDsKQEAgLTEzMDIsNiArMTMyMiw3IEBACiAJLmRlcXVldWUJPSBuZXQyMjgwX2RlcXVldWUsCiAKIAkuc2V0X2hhbHQJPSBuZXQyMjgwX3NldF9oYWx0LAorCS5zZXRfd2VkZ2UJPSBuZXQyMjgwX3NldF93ZWRnZSwKIAkuZmlmb19zdGF0dXMJPSBuZXQyMjgwX2ZpZm9fc3RhdHVzLAogCS5maWZvX2ZsdXNoCT0gbmV0MjI4MF9maWZvX2ZsdXNoLAogfTsKQEAgLTI0MTAsOSArMjQzMSwxNCBAQAogCQkJCWdvdG8gZG9fc3RhbGw7CiAJCQlpZiAoKGUgPSBnZXRfZXBfYnlfYWRkciAoZGV2LCB3X2luZGV4KSkgPT0gMCkKIAkJCQlnb3RvIGRvX3N0YWxsOwotCQkJY2xlYXJfaGFsdCAoZSk7CisJCQlpZiAoZS0+d2VkZ2VkKSB7CisJCQkJVkRFQlVHKGRldiwgIiVzIHdlZGdlZCwgaGFsdCBub3QgY2xlYXJlZFxuIiwKKwkJCQkJCWVwLT5lcC5uYW1lKTsKKwkJCX0gZWxzZSB7CisJCQkJVkRFQlVHKGRldiwgIiVzIGNsZWFyIGhhbHRcbiIsIGVwLT5lcC5uYW1lKTsKKwkJCQljbGVhcl9oYWx0KGUpOworCQkJfQogCQkJYWxsb3dfc3RhdHVzIChlcCk7Ci0JCQlWREVCVUcgKGRldiwgIiVzIGNsZWFyIGhhbHRcbiIsIGVwLT5lcC5uYW1lKTsKIAkJCWdvdG8gbmV4dF9lbmRwb2ludHM7CiAJCQl9CiAJCQlicmVhazsKQEAgLTI0MjcsNiArMjQ1Myw4IEBACiAJCQkJZ290byBkb19zdGFsbDsKIAkJCWlmICgoZSA9IGdldF9lcF9ieV9hZGRyIChkZXYsIHdfaW5kZXgpKSA9PSAwKQogCQkJCWdvdG8gZG9fc3RhbGw7CisJCQlpZiAoZS0+ZXAubmFtZSA9PSBlcDBuYW1lKQorCQkJCWdvdG8gZG9fc3RhbGw7CiAJCQlzZXRfaGFsdCAoZSk7CiAJCQlhbGxvd19zdGF0dXMgKGVwKTsKIAkJCVZERUJVRyAoZGV2LCAiJXMgc2V0IGhhbHRcbiIsIGVwLT5lcC5uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5oCmluZGV4IDgxYTcxZGIuLmMzNjg1MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuaApAQCAtMTA5LDYgKzEwOSw3IEBACiAJCQkJCQlpbl9maWZvX3ZhbGlkYXRlIDogMSwKIAkJCQkJCW91dF9vdmVyZmxvdyA6IDEsCiAJCQkJCQlzdG9wcGVkIDogMSwKKwkJCQkJCXdlZGdlZCA6IDEsCiAJCQkJCQlpc19pbiA6IDEsCiAJCQkJCQlpc19pc28gOiAxLAogCQkJCQkJcmVzcG9uZGVkIDogMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L29tYXBfdWRjLmMKaW5kZXggYmI1NGNjYS4uMzRlOWUzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L29tYXBfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L29tYXBfdWRjLmMKQEAgLTIzMTMsNiArMjMxMywxMyBAQAogCiAJdG1wID0gb21hcF9yZWFkbChPVEdfUkVWKTsKIAlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyoKKwkJICogUkVWSVNJVDogTm90IGNsZWFyIGhvdyB0aGlzIHdvcmtzIG9uIE9NQVAyLiAgdHJhbnMKKwkJICogaXMgQU5EZWQgdG8gcHJvZHVjZSBiaXRzIDcgYW5kIDgsIHdoaWNoIG1pZ2h0IG1ha2UKKwkJICogc2Vuc2UgZm9yIFVTQl9UUkFOU0NFSVZFUl9DVFJMIG9uIE9NQVAxLAorCQkgKiBidXQgd2l0aCBDT05UUk9MX0RFVkNPTkYsIHRoZXNlIGJpdHMgaGF2ZSBzb21ldGhpbmcgdG8KKwkJICogZG8gd2l0aCB0aGUgZnJhbWUgYWRqdXN0bWVudCBjb3VudGVyIGFuZCBNY0JTUDIuCisJCSAqLwogCQljdHJsX25hbWUgPSAiY29udHJvbF9kZXZjb25mIjsKIAkJdHJhbnMgPSBvbWFwX2N0cmxfcmVhZGwoT01BUDJfQ09OVFJPTF9ERVZDT05GMCk7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHJpbnRlci5jCmluZGV4IDJiM2I5ZTEuLjVhMzAzNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3ByaW50ZXIuYwpAQCAtMjUyLDcgKzI1Miw3IEBACiAJLmJDb25maWd1cmF0aW9uVmFsdWUgPQlERVZfQ09ORklHX1ZBTFVFLAogCS5pQ29uZmlndXJhdGlvbiA9CTAsCiAJLmJtQXR0cmlidXRlcyA9CQlVU0JfQ09ORklHX0FUVF9PTkUgfCBVU0JfQ09ORklHX0FUVF9TRUxGUE9XRVIsCi0JLmJNYXhQb3dlciA9CQkxCS8qIFNlbGYtUG93ZXJlZCAqLworCS5iTWF4UG93ZXIgPQkJQ09ORklHX1VTQl9HQURHRVRfVkJVU19EUkFXIC8gMiwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yIGludGZfZGVzYyA9IHsKQEAgLTEyNzgsOCArMTI3OCw3IEBACiAJLyogcmVzcG9uZCB3aXRoIGRhdGEgdHJhbnNmZXIgYmVmb3JlIHN0YXR1cyBwaGFzZT8gKi8KIAlpZiAodmFsdWUgPj0gMCkgewogCQlyZXEtPmxlbmd0aCA9IHZhbHVlOwotCQlyZXEtPnplcm8gPSB2YWx1ZSA8IHdMZW5ndGgKLQkJCQkmJiAodmFsdWUgJSBnYWRnZXQtPmVwMC0+bWF4cGFja2V0KSA9PSAwOworCQlyZXEtPnplcm8gPSB2YWx1ZSA8IHdMZW5ndGg7CiAJCXZhbHVlID0gdXNiX2VwX3F1ZXVlKGdhZGdldC0+ZXAwLCByZXEsIEdGUF9BVE9NSUMpOwogCQlpZiAodmFsdWUgPCAwKSB7CiAJCQlEQkcoZGV2LCAiZXBfcXVldWUgLS0+ICVkXG4iLCB2YWx1ZSk7CkBAIC0xNDc3LDcgKzE0NzYsNiBAQAogCWlmIChnYWRnZXQtPmlzX290ZykgewogCQlvdGdfZGVzYy5ibUF0dHJpYnV0ZXMgfD0gVVNCX09UR19ITlAsCiAJCWNvbmZpZ19kZXNjLmJtQXR0cmlidXRlcyB8PSBVU0JfQ09ORklHX0FUVF9XQUtFVVA7Ci0JCWNvbmZpZ19kZXNjLmJNYXhQb3dlciA9IDQ7CiAJfQogCiAJc3Bpbl9sb2NrX2luaXQoJmRldi0+bG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTI3eF91ZGMuYwppbmRleCA3Y2JjNzhhLi5iY2YzNzVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyN3hfdWRjLmMKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvczNjMjQxMF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MyNDEwX3VkYy5jCmluZGV4IDI5ZDEzZWIuLjQ4ZjUxYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MyNDEwX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MyNDEwX3VkYy5jCkBAIC0xNjUxLDcgKzE2NTEsNyBAQAogCQlyZXR1cm4gLUVCVVNZOwogCiAJaWYgKCFkcml2ZXItPmJpbmQgfHwgIWRyaXZlci0+c2V0dXAKLQkJCXx8IGRyaXZlci0+c3BlZWQgIT0gVVNCX1NQRUVEX0ZVTEwpIHsKKwkJCXx8IGRyaXZlci0+c3BlZWQgPCBVU0JfU1BFRURfRlVMTCkgewogCQlwcmludGsoS0VSTl9FUlIgIkludmFsaWQgZHJpdmVyOiBiaW5kICVwIHNldHVwICVwIHNwZWVkICVkXG4iLAogCQkJZHJpdmVyLT5iaW5kLCBkcml2ZXItPnNldHVwLCBkcml2ZXItPnNwZWVkKTsKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvc2VyaWFsLmMKaW5kZXggM2ZhYTdhNy4uMzc4NzlhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3NlcmlhbC5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zZXJpYWwuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImVwYXV0b2NvbmYuYyIKIAogI2luY2x1ZGUgImZfYWNtLmMiCisjaW5jbHVkZSAiZl9vYmV4LmMiCiAjaW5jbHVkZSAiZl9zZXJpYWwuYyIKICNpbmNsdWRlICJ1X3NlcmlhbC5jIgogCkBAIC01Niw2ICs1Nyw3IEBACiAjZGVmaW5lIEdTX1ZFTkRPUl9JRAkJCTB4MDUyNQkvKiBOZXRDaGlwICovCiAjZGVmaW5lIEdTX1BST0RVQ1RfSUQJCQkweGE0YTYJLyogTGludXgtVVNCIFNlcmlhbCBHYWRnZXQgKi8KICNkZWZpbmUgR1NfQ0RDX1BST0RVQ1RfSUQJCTB4YTRhNwkvKiAuLi4gYXMgQ0RDLUFDTSAqLworI2RlZmluZSBHU19DRENfT0JFWF9QUk9EVUNUX0lECQkweGE0YTkJLyogLi4uIGFzIENEQy1PQkVYICovCiAKIC8qIHN0cmluZyBJRHMgYXJlIGFzc2lnbmVkIGR5bmFtaWNhbGx5ICovCiAKQEAgLTEyNSw2ICsxMjcsMTAgQEAKIG1vZHVsZV9wYXJhbSh1c2VfYWNtLCBib29sLCAwKTsKIE1PRFVMRV9QQVJNX0RFU0ModXNlX2FjbSwgIlVzZSBDREMgQUNNLCBkZWZhdWx0PXllcyIpOwogCitzdGF0aWMgaW50IHVzZV9vYmV4ID0gZmFsc2U7Cittb2R1bGVfcGFyYW0odXNlX29iZXgsIGJvb2wsIDApOworTU9EVUxFX1BBUk1fREVTQyh1c2Vfb2JleCwgIlVzZSBDREMgT0JFWCwgZGVmYXVsdD1ubyIpOworCiBzdGF0aWMgdW5zaWduZWQgbl9wb3J0cyA9IDE7CiBtb2R1bGVfcGFyYW0obl9wb3J0cywgdWludCwgMCk7CiBNT0RVTEVfUEFSTV9ERVNDKG5fcG9ydHMsICJudW1iZXIgb2YgcG9ydHMgdG8gY3JlYXRlLCBkZWZhdWx0PTEiKTsKQEAgLTEzOSw2ICsxNDUsOCBAQAogCWZvciAoaSA9IDA7IGkgPCBuX3BvcnRzICYmIHN0YXR1cyA9PSAwOyBpKyspIHsKIAkJaWYgKHVzZV9hY20pCiAJCQlzdGF0dXMgPSBhY21fYmluZF9jb25maWcoYywgaSk7CisJCWVsc2UgaWYgKHVzZV9vYmV4KQorCQkJc3RhdHVzID0gb2JleF9iaW5kX2NvbmZpZyhjLCBpKTsKIAkJZWxzZQogCQkJc3RhdHVzID0gZ3Nlcl9iaW5kX2NvbmZpZyhjLCBpKTsKIAl9CkBAIC0xNTEsNyArMTU5LDYgQEAKIAkvKiAuYkNvbmZpZ3VyYXRpb25WYWx1ZSA9IGYodXNlX2FjbSkgKi8KIAkvKiAuaUNvbmZpZ3VyYXRpb24gPSBEWU5BTUlDICovCiAJLmJtQXR0cmlidXRlcwk9IFVTQl9DT05GSUdfQVRUX1NFTEZQT1dFUiwKLQkuYk1heFBvd2VyCT0gMSwJLyogMiBtQSwgbWluaW1hbCAqLwogfTsKIAogc3RhdGljIGludCBfX2luaXQgZ3NfYmluZChzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYpCkBAIC0yNDksNiArMjU2LDEyIEBACiAJCWRldmljZV9kZXNjLmJEZXZpY2VDbGFzcyA9IFVTQl9DTEFTU19DT01NOwogCQlkZXZpY2VfZGVzYy5pZFByb2R1Y3QgPQogCQkJCV9fY29uc3RhbnRfY3B1X3RvX2xlMTYoR1NfQ0RDX1BST0RVQ1RfSUQpOworCX0gZWxzZSBpZiAodXNlX29iZXgpIHsKKwkJc2VyaWFsX2NvbmZpZ19kcml2ZXIubGFiZWwgPSAiQ0RDIE9CRVggY29uZmlnIjsKKwkJc2VyaWFsX2NvbmZpZ19kcml2ZXIuYkNvbmZpZ3VyYXRpb25WYWx1ZSA9IDM7CisJCWRldmljZV9kZXNjLmJEZXZpY2VDbGFzcyA9IFVTQl9DTEFTU19DT01NOworCQlkZXZpY2VfZGVzYy5pZFByb2R1Y3QgPQorCQkJX19jb25zdGFudF9jcHVfdG9fbGUxNihHU19DRENfT0JFWF9QUk9EVUNUX0lEKTsKIAl9IGVsc2UgewogCQlzZXJpYWxfY29uZmlnX2RyaXZlci5sYWJlbCA9ICJHZW5lcmljIFNlcmlhbCBjb25maWciOwogCQlzZXJpYWxfY29uZmlnX2RyaXZlci5iQ29uZmlndXJhdGlvblZhbHVlID0gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdV9ldGhlci5jCmluZGV4IGRiZDU3NWEuLjY2OTQ4YjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVyLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3VfZXRoZXIuYwpAQCAtODczLDYgKzg3MywxMyBAQAogCQlzcGluX2xvY2soJmRldi0+bG9jayk7CiAJCWRldi0+cG9ydF91c2IgPSBsaW5rOwogCQlsaW5rLT5pb3BvcnQgPSBkZXY7CisJCWlmIChuZXRpZl9ydW5uaW5nKGRldi0+bmV0KSkgeworCQkJaWYgKGxpbmstPm9wZW4pCisJCQkJbGluay0+b3BlbihsaW5rKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChsaW5rLT5jbG9zZSkKKwkJCQlsaW5rLT5jbG9zZShsaW5rKTsKKwkJfQogCQlzcGluX3VubG9jaygmZGV2LT5sb2NrKTsKIAogCQluZXRpZl9jYXJyaWVyX29uKGRldi0+bmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC91X3NlcmlhbC5oIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3Vfc2VyaWFsLmgKaW5kZXggYWYzOTEwZC4uMzAwZjBlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3Vfc2VyaWFsLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3Vfc2VyaWFsLmgKQEAgLTYyLDUgKzYyLDYgQEAKIC8qIGZ1bmN0aW9ucyBhcmUgYm91bmQgdG8gY29uZmlndXJhdGlvbnMgYnkgYSBjb25maWcgb3IgZ2FkZ2V0IGRyaXZlciAqLwogaW50IGFjbV9iaW5kX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHU4IHBvcnRfbnVtKTsKIGludCBnc2VyX2JpbmRfY29uZmlnKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgdTggcG9ydF9udW0pOworaW50IG9iZXhfYmluZF9jb25maWcoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjLCB1OCBwb3J0X251bSk7CiAKICNlbmRpZiAvKiBfX1VfU0VSSUFMX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1kYmcuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1kYmcuYwppbmRleCBiMGY4ZWQ1Li4wY2I1M2NhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktZGJnLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLWRiZy5jCkBAIC0zNTgsNyArMzU4LDggQEAKIAlzdHJ1Y3QgdXNiX2J1cyAqYnVzOwogCXN0cnVjdCBtdXRleCBtdXRleDsJLyogcHJvdGVjdCBmaWxsaW5nIG9mIGJ1ZmZlciAqLwogCXNpemVfdCBjb3VudDsJCS8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZpbGxlZCBpbnRvIGJ1ZmZlciAqLwotCWNoYXIgKnBhZ2U7CisJY2hhciAqb3V0cHV0X2J1ZjsKKwlzaXplX3QgYWxsb2Nfc2l6ZTsKIH07CiAKICNkZWZpbmUgc3BlZWRfY2hhcihpbmZvMSkgKHsgY2hhciB0bXA7IFwKQEAgLTQ4OCw4ICs0ODksOCBAQAogCiAJaGNkID0gYnVzX3RvX2hjZChidWYtPmJ1cyk7CiAJZWhjaSA9IGhjZF90b19laGNpIChoY2QpOwotCW5leHQgPSBidWYtPnBhZ2U7Ci0Jc2l6ZSA9IFBBR0VfU0laRTsKKwluZXh0ID0gYnVmLT5vdXRwdXRfYnVmOworCXNpemUgPSBidWYtPmFsbG9jX3NpemU7CiAKIAkqbmV4dCA9IDA7CiAKQEAgLTUxMCw3ICs1MTEsNyBAQAogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlICgmZWhjaS0+bG9jaywgZmxhZ3MpOwogCi0JcmV0dXJuIHN0cmxlbihidWYtPnBhZ2UpOworCXJldHVybiBzdHJsZW4oYnVmLT5vdXRwdXRfYnVmKTsKIH0KIAogI2RlZmluZSBEQkdfU0NIRURfTElNSVQgNjQKQEAgLTUzMSw4ICs1MzIsOCBAQAogCiAJaGNkID0gYnVzX3RvX2hjZChidWYtPmJ1cyk7CiAJZWhjaSA9IGhjZF90b19laGNpIChoY2QpOwotCW5leHQgPSBidWYtPnBhZ2U7Ci0Jc2l6ZSA9IFBBR0VfU0laRTsKKwluZXh0ID0gYnVmLT5vdXRwdXRfYnVmOworCXNpemUgPSBidWYtPmFsbG9jX3NpemU7CiAKIAl0ZW1wID0gc2NucHJpbnRmIChuZXh0LCBzaXplLCAic2l6ZSA9ICVkXG4iLCBlaGNpLT5wZXJpb2RpY19zaXplKTsKIAlzaXplIC09IHRlbXA7CkBAIC01NjgsMTQgKzU2OSwxNiBAQAogCQkJCWZvciAodGVtcCA9IDA7IHRlbXAgPCBzZWVuX2NvdW50OyB0ZW1wKyspIHsKIAkJCQkJaWYgKHNlZW4gW3RlbXBdLnB0ciAhPSBwLnB0cikKIAkJCQkJCWNvbnRpbnVlOwotCQkJCQlpZiAocC5xaC0+cWhfbmV4dC5wdHIpCisJCQkJCWlmIChwLnFoLT5xaF9uZXh0LnB0cikgewogCQkJCQkJdGVtcCA9IHNjbnByaW50ZiAobmV4dCwgc2l6ZSwKIAkJCQkJCQkiIC4uLiIpOwotCQkJCQlwLnB0ciA9IE5VTEw7CisJCQkJCQlzaXplIC09IHRlbXA7CisJCQkJCQluZXh0ICs9IHRlbXA7CisJCQkJCX0KIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCS8qIHNob3cgbW9yZSBpbmZvIHRoZSBmaXJzdCB0aW1lIGFyb3VuZCAqLwotCQkJCWlmICh0ZW1wID09IHNlZW5fY291bnQgJiYgcC5wdHIpIHsKKwkJCQlpZiAodGVtcCA9PSBzZWVuX2NvdW50KSB7CiAJCQkJCXUzMglzY3JhdGNoID0gaGMzMl90b19jcHVwKGVoY2ksCiAJCQkJCQkJJnAucWgtPmh3X2luZm8xKTsKIAkJCQkJc3RydWN0IGVoY2lfcXRkCSpxdGQ7CkBAIC02NDksNyArNjUyLDcgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlICgmZWhjaS0+bG9jaywgZmxhZ3MpOwogCWtmcmVlIChzZWVuKTsKIAotCXJldHVybiBQQUdFX1NJWkUgLSBzaXplOworCXJldHVybiBidWYtPmFsbG9jX3NpemUgLSBzaXplOwogfQogI3VuZGVmIERCR19TQ0hFRF9MSU1JVAogCkBAIC02NjUsMTQgKzY2OCwxNCBAQAogCiAJaGNkID0gYnVzX3RvX2hjZChidWYtPmJ1cyk7CiAJZWhjaSA9IGhjZF90b19laGNpIChoY2QpOwotCW5leHQgPSBidWYtPnBhZ2U7Ci0Jc2l6ZSA9IFBBR0VfU0laRTsKKwluZXh0ID0gYnVmLT5vdXRwdXRfYnVmOworCXNpemUgPSBidWYtPmFsbG9jX3NpemU7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSAoJmVoY2ktPmxvY2ssIGZsYWdzKTsKIAogCWlmICghdGVzdF9iaXQoSENEX0ZMQUdfSFdfQUNDRVNTSUJMRSwgJmhjZC0+ZmxhZ3MpKSB7CiAJCXNpemUgPSBzY25wcmludGYgKG5leHQsIHNpemUsCi0JCQkiYnVzICVzLCBkZXZpY2UgJXMgKGRyaXZlciAiIERSSVZFUl9WRVJTSU9OICIpXG4iCisJCQkiYnVzICVzLCBkZXZpY2UgJXNcbiIKIAkJCSIlc1xuIgogCQkJIlNVU1BFTkRFRCAobm8gcmVnaXN0ZXIgYWNjZXNzKVxuIiwKIAkJCWhjZC0+c2VsZi5jb250cm9sbGVyLT5idXMtPm5hbWUsCkBAIC02ODQsNyArNjg3LDcgQEAKIAkvKiBDYXBhYmlsaXR5IFJlZ2lzdGVycyAqLwogCWkgPSBIQ19WRVJTSU9OKGVoY2lfcmVhZGwoZWhjaSwgJmVoY2ktPmNhcHMtPmhjX2NhcGJhc2UpKTsKIAl0ZW1wID0gc2NucHJpbnRmIChuZXh0LCBzaXplLAotCQkiYnVzICVzLCBkZXZpY2UgJXMgKGRyaXZlciAiIERSSVZFUl9WRVJTSU9OICIpXG4iCisJCSJidXMgJXMsIGRldmljZSAlc1xuIgogCQkiJXNcbiIKIAkJIkVIQ0kgJXguJTAyeCwgaGNkIHN0YXRlICVkXG4iLAogCQloY2QtPnNlbGYuY29udHJvbGxlci0+YnVzLT5uYW1lLApAQCAtODA4LDcgKzgxMSw3IEBACiBkb25lOgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZlaGNpLT5sb2NrLCBmbGFncyk7CiAKLQlyZXR1cm4gUEFHRV9TSVpFIC0gc2l6ZTsKKwlyZXR1cm4gYnVmLT5hbGxvY19zaXplIC0gc2l6ZTsKIH0KIAogc3RhdGljIHN0cnVjdCBkZWJ1Z19idWZmZXIgKmFsbG9jX2J1ZmZlcihzdHJ1Y3QgdXNiX2J1cyAqYnVzLApAQCAtODIyLDYgKzgyNSw3IEBACiAJCWJ1Zi0+YnVzID0gYnVzOwogCQlidWYtPmZpbGxfZnVuYyA9IGZpbGxfZnVuYzsKIAkJbXV0ZXhfaW5pdCgmYnVmLT5tdXRleCk7CisJCWJ1Zi0+YWxsb2Nfc2l6ZSA9IFBBR0VfU0laRTsKIAl9CiAKIAlyZXR1cm4gYnVmOwpAQCAtODMxLDEwICs4MzUsMTAgQEAKIHsKIAlpbnQgcmV0ID0gMDsKIAotCWlmICghYnVmLT5wYWdlKQotCQlidWYtPnBhZ2UgPSAoY2hhciAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1Zi0+b3V0cHV0X2J1ZikKKwkJYnVmLT5vdXRwdXRfYnVmID0gKGNoYXIgKil2bWFsbG9jKGJ1Zi0+YWxsb2Nfc2l6ZSk7CiAKLQlpZiAoIWJ1Zi0+cGFnZSkgeworCWlmICghYnVmLT5vdXRwdXRfYnVmKSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwogCX0KQEAgLTg2Nyw3ICs4NzEsNyBAQAogCW11dGV4X3VubG9jaygmYnVmLT5tdXRleCk7CiAKIAlyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgbGVuLCBvZmZzZXQsCi0JCQkJICAgICAgYnVmLT5wYWdlLCBidWYtPmNvdW50KTsKKwkJCQkgICAgICBidWYtPm91dHB1dF9idWYsIGJ1Zi0+Y291bnQpOwogCiBvdXQ6CiAJcmV0dXJuIHJldDsKQEAgLTg3OSw4ICs4ODMsOCBAQAogCXN0cnVjdCBkZWJ1Z19idWZmZXIgKmJ1ZiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAogCWlmIChidWYpIHsKLQkJaWYgKGJ1Zi0+cGFnZSkKLQkJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylidWYtPnBhZ2UpOworCQlpZiAoYnVmLT5vdXRwdXRfYnVmKQorCQkJdmZyZWUoYnVmLT5vdXRwdXRfYnVmKTsKIAkJa2ZyZWUoYnVmKTsKIAl9CiAKQEAgLTg5NSwxMCArODk5LDE0IEBACiAKIHN0YXRpYyBpbnQgZGVidWdfcGVyaW9kaWNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlmaWxlLT5wcml2YXRlX2RhdGEgPSBhbGxvY19idWZmZXIoaW5vZGUtPmlfcHJpdmF0ZSwKLQkJCQkJICBmaWxsX3BlcmlvZGljX2J1ZmZlcik7CisJc3RydWN0IGRlYnVnX2J1ZmZlciAqYnVmOworCWJ1ZiA9IGFsbG9jX2J1ZmZlcihpbm9kZS0+aV9wcml2YXRlLCBmaWxsX3BlcmlvZGljX2J1ZmZlcik7CisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOwogCi0JcmV0dXJuIGZpbGUtPnByaXZhdGVfZGF0YSA/IDAgOiAtRU5PTUVNOworCWJ1Zi0+YWxsb2Nfc2l6ZSA9IChzaXplb2Yodm9pZCAqKSA9PSA0ID8gNiA6IDgpKlBBR0VfU0laRTsKKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBidWY7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZGVidWdfcmVnaXN0ZXJzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaGNkLmMKaW5kZXggODQwOWUwNy4uZDM0M2FmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1oY2QuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lci5oPgpAQCAtNTksNyArNjAsNiBAQAogICogcHJvdmlkaW5nIGVhcmx5IGRldmljZXMgZm9yIHRob3NlIGhvc3QgY29udHJvbGxlcnMgdG8gdGFsayB0byEKICAqLwogCi0jZGVmaW5lIERSSVZFUl9WRVJTSU9OICIxMCBEZWMgMjAwNCIKICNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiRGF2aWQgQnJvd25lbGwiCiAjZGVmaW5lIERSSVZFUl9ERVNDICJVU0IgMi4wICdFbmhhbmNlZCcgSG9zdCBDb250cm9sbGVyIChFSENJKSBEcml2ZXIiCiAKQEAgLTYyMCw5ICs2MjAsOSBAQAogCiAJdGVtcCA9IEhDX1ZFUlNJT04oZWhjaV9yZWFkbChlaGNpLCAmZWhjaS0+Y2Fwcy0+aGNfY2FwYmFzZSkpOwogCWVoY2lfaW5mbyAoZWhjaSwKLQkJIlVTQiAleC4leCBzdGFydGVkLCBFSENJICV4LiUwMngsIGRyaXZlciAlcyVzXG4iLAorCQkiVVNCICV4LiV4IHN0YXJ0ZWQsIEVIQ0kgJXguJTAyeCVzXG4iLAogCQkoKGVoY2ktPnNicm4gJiAweGYwKT4+NCksIChlaGNpLT5zYnJuICYgMHgwZiksCi0JCXRlbXAgPj4gOCwgdGVtcCAmIDB4ZmYsIERSSVZFUl9WRVJTSU9OLAorCQl0ZW1wID4+IDgsIHRlbXAgJiAweGZmLAogCQlpZ25vcmVfb2MgPyAiLCBvdmVyY3VycmVudCBpZ25vcmVkIiA6ICIiKTsKIAogCWVoY2lfd3JpdGVsKGVoY2ksIElOVFJfTUFTSywKQEAgLTcwNiw3ICs3MDYsNyBAQAogCQlwY2Rfc3RhdHVzID0gc3RhdHVzOwogCiAJCS8qIHJlc3VtZSByb290IGh1Yj8gKi8KLQkJaWYgKCEoZWhjaV9yZWFkbChlaGNpLCAmZWhjaS0+cmVncy0+Y29tbWFuZCkgJiBDTURfUlVOKSkKKwkJaWYgKCEoY21kICYgQ01EX1JVTikpCiAJCQl1c2JfaGNkX3Jlc3VtZV9yb290X2h1YihoY2QpOwogCiAJCXdoaWxlIChpLS0pIHsKQEAgLTcxNSw4ICs3MTUsMTEgQEAKIAogCQkJaWYgKHBzdGF0dXMgJiBQT1JUX09XTkVSKQogCQkJCWNvbnRpbnVlOwotCQkJaWYgKCEocHN0YXR1cyAmIFBPUlRfUkVTVU1FKQotCQkJCQl8fCBlaGNpLT5yZXNldF9kb25lIFtpXSAhPSAwKQorCQkJaWYgKCEodGVzdF9iaXQoaSwgJmVoY2ktPnN1c3BlbmRlZF9wb3J0cykgJiYKKwkJCQkJKChwc3RhdHVzICYgUE9SVF9SRVNVTUUpIHx8CisJCQkJCQkhKHBzdGF0dXMgJiBQT1JUX1NVU1BFTkQpKSAmJgorCQkJCQkocHN0YXR1cyAmIFBPUlRfUEUpICYmCisJCQkJCWVoY2ktPnJlc2V0X2RvbmVbaV0gPT0gMCkpCiAJCQkJY29udGludWU7CiAKIAkJCS8qIHN0YXJ0IDIwIG1zZWMgcmVzdW1lIHNpZ25hbGluZyBmcm9tIHRoaXMgcG9ydCwKQEAgLTczMSw5ICs3MzQsOCBAQAogCiAJLyogUENJIGVycm9ycyBbNC4xNS4yLjRdICovCiAJaWYgKHVubGlrZWx5ICgoc3RhdHVzICYgU1RTX0ZBVEFMKSAhPSAwKSkgewotCQlkYmdfY21kIChlaGNpLCAiZmF0YWwiLCBlaGNpX3JlYWRsKGVoY2ksCi0JCQkJCQkgICAmZWhjaS0+cmVncy0+Y29tbWFuZCkpOwotCQlkYmdfc3RhdHVzIChlaGNpLCAiZmF0YWwiLCBzdGF0dXMpOworCQlkYmdfY21kKGVoY2ksICJmYXRhbCIsIGNtZCk7CisJCWRiZ19zdGF0dXMoZWhjaSwgImZhdGFsIiwgc3RhdHVzKTsKIAkJaWYgKHN0YXR1cyAmIFNUU19IQUxUKSB7CiAJCQllaGNpX2VyciAoZWhjaSwgImZhdGFsIGVycm9yXG4iKTsKIGRlYWQ6CkBAIC05OTQsOSArOTk2LDcgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2RlZmluZSBEUklWRVJfSU5GTyBEUklWRVJfVkVSU0lPTiAiICIgRFJJVkVSX0RFU0MKLQotTU9EVUxFX0RFU0NSSVBUSU9OIChEUklWRVJfSU5GTyk7CitNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwogTU9EVUxFX0FVVEhPUiAoRFJJVkVSX0FVVEhPUik7CiBNT0RVTEVfTElDRU5TRSAoIkdQTCIpOwogCkBAIC0xMDIwLDExICsxMDIwLDYgQEAKICNkZWZpbmUJUFMzX1NZU1RFTV9CVVNfRFJJVkVSCXBzM19laGNpX2RyaXZlcgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKENPTkZJR180NDBFUFgpICYmICFkZWZpbmVkKENPTkZJR19QUENfTUVSR0UpCi0jaW5jbHVkZSAiZWhjaS1wcGMtc29jLmMiCi0jZGVmaW5lCVBMQVRGT1JNX0RSSVZFUgkJZWhjaV9wcGNfc29jX2RyaXZlcgotI2VuZGlmCi0KICNpZmRlZiBDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRgogI2luY2x1ZGUgImVoY2ktcHBjLW9mLmMiCiAjZGVmaW5lIE9GX1BMQVRGT1JNX0RSSVZFUgllaGNpX2hjZF9wcGNfb2ZfZHJpdmVyCkBAIC0xMDQ5LDYgKzEwNDQsMTYgQEAKIHsKIAlpbnQgcmV0dmFsID0gMDsKIAorCWlmICh1c2JfZGlzYWJsZWQoKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlwcmludGsoS0VSTl9JTkZPICIlczogIiBEUklWRVJfREVTQyAiXG4iLCBoY2RfbmFtZSk7CisJc2V0X2JpdChVU0JfRUhDSV9MT0FERUQsICZ1c2JfaGNkc19sb2FkZWQpOworCWlmICh0ZXN0X2JpdChVU0JfVUhDSV9MT0FERUQsICZ1c2JfaGNkc19sb2FkZWQpIHx8CisJCQl0ZXN0X2JpdChVU0JfT0hDSV9MT0FERUQsICZ1c2JfaGNkc19sb2FkZWQpKQorCQlwcmludGsoS0VSTl9XQVJOSU5HICJXYXJuaW5nISBlaGNpX2hjZCBzaG91bGQgYWx3YXlzIGJlIGxvYWRlZCIKKwkJCQkiIGJlZm9yZSB1aGNpX2hjZCBhbmQgb2hjaV9oY2QsIG5vdCBhZnRlclxuIik7CisKIAlwcl9kZWJ1ZygiJXM6IGJsb2NrIHNpemVzOiBxaCAlWmQgcXRkICVaZCBpdGQgJVpkIHNpdGQgJVpkXG4iLAogCQkgaGNkX25hbWUsCiAJCSBzaXplb2Yoc3RydWN0IGVoY2lfcWgpLCBzaXplb2Yoc3RydWN0IGVoY2lfcXRkKSwKQEAgLTEwNTYsOCArMTA2MSwxMCBAQAogCiAjaWZkZWYgREVCVUcKIAllaGNpX2RlYnVnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImVoY2kiLCBOVUxMKTsKLQlpZiAoIWVoY2lfZGVidWdfcm9vdCkKLQkJcmV0dXJuIC1FTk9FTlQ7CisJaWYgKCFlaGNpX2RlYnVnX3Jvb3QpIHsKKwkJcmV0dmFsID0gLUVOT0VOVDsKKwkJZ290byBlcnJfZGVidWc7CisJfQogI2VuZGlmCiAKICNpZmRlZiBQTEFURk9STV9EUklWRVIKQEAgLTExMDUsNiArMTExMiw4IEBACiAJZGVidWdmc19yZW1vdmUoZWhjaV9kZWJ1Z19yb290KTsKIAllaGNpX2RlYnVnX3Jvb3QgPSBOVUxMOwogI2VuZGlmCitlcnJfZGVidWc6CisJY2xlYXJfYml0KFVTQl9FSENJX0xPQURFRCwgJnVzYl9oY2RzX2xvYWRlZCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIG1vZHVsZV9pbml0KGVoY2lfaGNkX2luaXQpOwpAQCAtMTEyNiw2ICsxMTM1LDcgQEAKICNpZmRlZiBERUJVRwogCWRlYnVnZnNfcmVtb3ZlKGVoY2lfZGVidWdfcm9vdCk7CiAjZW5kaWYKKwljbGVhcl9iaXQoVVNCX0VIQ0lfTE9BREVELCAmdXNiX2hjZHNfbG9hZGVkKTsKIH0KIG1vZHVsZV9leGl0KGVoY2lfaGNkX2NsZWFudXApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMKaW5kZXggNzQwODM1Yi4uMjE4Zjk2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWh1Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1odWIuYwpAQCAtMjM2LDEwICsyMzYsOCBAQAogCQl0ZW1wID0gZWhjaV9yZWFkbChlaGNpLCAmZWhjaS0+cmVncy0+cG9ydF9zdGF0dXMgW2ldKTsKIAkJdGVtcCAmPSB+KFBPUlRfUldDX0JJVFMgfCBQT1JUX1dBS0VfQklUUyk7CiAJCWlmICh0ZXN0X2JpdChpLCAmZWhjaS0+YnVzX3N1c3BlbmRlZCkgJiYKLQkJCQkodGVtcCAmIFBPUlRfU1VTUEVORCkpIHsKLQkJCWVoY2ktPnJlc2V0X2RvbmUgW2ldID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMgKDIwKTsKKwkJCQkodGVtcCAmIFBPUlRfU1VTUEVORCkpCiAJCQl0ZW1wIHw9IFBPUlRfUkVTVU1FOwotCQl9CiAJCWVoY2lfd3JpdGVsKGVoY2ksIHRlbXAsICZlaGNpLT5yZWdzLT5wb3J0X3N0YXR1cyBbaV0pOwogCX0KIAlpID0gSENTX05fUE9SVFMgKGVoY2ktPmhjc19wYXJhbXMpOwpAQCAtNDgyLDEwICs0ODAsOSBAQAogCQkgKiBjb250cm9sbGVyIGJ5IHRoZSB1c2VyLgogCQkgKi8KIAotCQlpZiAoKHRlbXAgJiBtYXNrKSAhPSAwCi0JCQkJfHwgKCh0ZW1wICYgUE9SVF9SRVNVTUUpICE9IDAKLQkJCQkJJiYgdGltZV9hZnRlcl9lcShqaWZmaWVzLAotCQkJCQkJZWhjaS0+cmVzZXRfZG9uZVtpXSkpKSB7CisJCWlmICgodGVtcCAmIG1hc2spICE9IDAgfHwgdGVzdF9iaXQoaSwgJmVoY2ktPnBvcnRfY19zdXNwZW5kKQorCQkJCXx8IChlaGNpLT5yZXNldF9kb25lW2ldICYmIHRpbWVfYWZ0ZXJfZXEoCisJCQkJCWppZmZpZXMsIGVoY2ktPnJlc2V0X2RvbmVbaV0pKSkgewogCQkJaWYgKGkgPCA3KQogCQkJICAgIGJ1ZiBbMF0gfD0gMSA8PCAoaSArIDEpOwogCQkJZWxzZQpAQCAtNjg4LDYgKzY4NSw3IEBACiAJCQkvKiByZXN1bWUgY29tcGxldGVkPyAqLwogCQkJZWxzZSBpZiAodGltZV9hZnRlcl9lcShqaWZmaWVzLAogCQkJCQllaGNpLT5yZXNldF9kb25lW3dJbmRleF0pKSB7CisJCQkJY2xlYXJfYml0KHdJbmRleCwgJmVoY2ktPnN1c3BlbmRlZF9wb3J0cyk7CiAJCQkJc2V0X2JpdCh3SW5kZXgsICZlaGNpLT5wb3J0X2Nfc3VzcGVuZCk7CiAJCQkJZWhjaS0+cmVzZXRfZG9uZVt3SW5kZXhdID0gMDsKIApAQCAtNzM0LDYgKzczMiw5IEBACiAJCQkJCWVoY2lfcmVhZGwoZWhjaSwgc3RhdHVzX3JlZykpOwogCQl9CiAKKwkJaWYgKCEodGVtcCAmIChQT1JUX1JFU1VNRXxQT1JUX1JFU0VUKSkpCisJCQllaGNpLT5yZXNldF9kb25lW3dJbmRleF0gPSAwOworCiAJCS8qIHRyYW5zZmVyIGRlZGljYXRlZCBwb3J0cyB0byB0aGUgY29tcGFuaW9uIGhjICovCiAJCWlmICgodGVtcCAmIFBPUlRfQ09OTkVDVCkgJiYKIAkJCQl0ZXN0X2JpdCh3SW5kZXgsICZlaGNpLT5jb21wYW5pb25fcG9ydHMpKSB7CkBAIC03NTcsOCArNzU4LDE3IEBACiAJCX0KIAkJaWYgKHRlbXAgJiBQT1JUX1BFKQogCQkJc3RhdHVzIHw9IDEgPDwgVVNCX1BPUlRfRkVBVF9FTkFCTEU7Ci0JCWlmICh0ZW1wICYgKFBPUlRfU1VTUEVORHxQT1JUX1JFU1VNRSkpCisKKwkJLyogbWF5YmUgdGhlIHBvcnQgd2FzIHVuc3VzcGVuZGVkIHdpdGhvdXQgb3VyIGtub3dsZWRnZSAqLworCQlpZiAodGVtcCAmIChQT1JUX1NVU1BFTkR8UE9SVF9SRVNVTUUpKSB7CiAJCQlzdGF0dXMgfD0gMSA8PCBVU0JfUE9SVF9GRUFUX1NVU1BFTkQ7CisJCX0gZWxzZSBpZiAodGVzdF9iaXQod0luZGV4LCAmZWhjaS0+c3VzcGVuZGVkX3BvcnRzKSkgeworCQkJY2xlYXJfYml0KHdJbmRleCwgJmVoY2ktPnN1c3BlbmRlZF9wb3J0cyk7CisJCQllaGNpLT5yZXNldF9kb25lW3dJbmRleF0gPSAwOworCQkJaWYgKHRlbXAgJiBQT1JUX1BFKQorCQkJCXNldF9iaXQod0luZGV4LCAmZWhjaS0+cG9ydF9jX3N1c3BlbmQpOworCQl9CisKIAkJaWYgKHRlbXAgJiBQT1JUX09DKQogCQkJc3RhdHVzIHw9IDEgPDwgVVNCX1BPUlRfRkVBVF9PVkVSX0NVUlJFTlQ7CiAJCWlmICh0ZW1wICYgUE9SVF9SRVNFVCkKQEAgLTgwMyw2ICs4MTMsNyBAQAogCQkJCQl8fCAodGVtcCAmIFBPUlRfUkVTRVQpICE9IDApCiAJCQkJZ290byBlcnJvcjsKIAkJCWVoY2lfd3JpdGVsKGVoY2ksIHRlbXAgfCBQT1JUX1NVU1BFTkQsIHN0YXR1c19yZWcpOworCQkJc2V0X2JpdCh3SW5kZXgsICZlaGNpLT5zdXNwZW5kZWRfcG9ydHMpOwogCQkJYnJlYWs7CiAJCWNhc2UgVVNCX1BPUlRfRkVBVF9QT1dFUjoKIAkJCWlmIChIQ1NfUFBDIChlaGNpLT5oY3NfcGFyYW1zKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1wcGMtc29jLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktcHBjLXNvYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjk1OTBlLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1wcGMtc29jLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotLyoKLSAqIEVIQ0kgSENEIChIb3N0IENvbnRyb2xsZXIgRHJpdmVyKSBmb3IgVVNCLgotICoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNi0yMDA3IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4sIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcKLSAqCi0gKiBCdXMgR2x1ZSBmb3IgUFBDIE9uLUNoaXAgRUhDSSBkcml2ZXIKLSAqIFRlc3RlZCBvbiBBTUNDIDQ0MEVQeAotICoKLSAqIEJhc2VkIG9uICJlaGNpLWF1MXh4eC5jIiBieSBLLkJvZ2UgPGthcnN0ZW4uYm9nZUBhbWQuY29tPgotICoKLSAqIFRoaXMgZmlsZSBpcyBsaWNlbmNlZCB1bmRlciB0aGUgR1BMLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLQotZXh0ZXJuIGludCB1c2JfZGlzYWJsZWQodm9pZCk7Ci0KLS8qIGNhbGxlZCBkdXJpbmcgcHJvYmUoKSBhZnRlciBjaGlwIHJlc2V0IGNvbXBsZXRlcyAqLwotc3RhdGljIGludCBlaGNpX3BwY19zb2Nfc2V0dXAoc3RydWN0IHVzYl9oY2QgKmhjZCkKLXsKLQlzdHJ1Y3QgZWhjaV9oY2QJKmVoY2kgPSBoY2RfdG9fZWhjaShoY2QpOwotCWludAkJcmV0dmFsOwotCi0JcmV0dmFsID0gZWhjaV9oYWx0KGVoY2kpOwotCWlmIChyZXR2YWwpCi0JCXJldHVybiByZXR2YWw7Ci0KLQlyZXR2YWwgPSBlaGNpX2luaXQoaGNkKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0dmFsOwotCi0JZWhjaS0+c2JybiA9IDB4MjA7Ci0JcmV0dXJuIGVoY2lfcmVzZXQoZWhjaSk7Ci19Ci0KLS8qKgotICogdXNiX2VoY2lfcHBjX3NvY19wcm9iZSAtIGluaXRpYWxpemUgUFBDLVNvQy1iYXNlZCBIQ0RzCi0gKiBDb250ZXh0OiAhaW5faW50ZXJydXB0KCkKLSAqCi0gKiBBbGxvY2F0ZXMgYmFzaWMgcmVzb3VyY2VzIGZvciB0aGlzIFVTQiBob3N0IGNvbnRyb2xsZXIsIGFuZAotICogdGhlbiBpbnZva2VzIHRoZSBzdGFydCgpIG1ldGhvZCBmb3IgdGhlIEhDRCBhc3NvY2lhdGVkIHdpdGggaXQKLSAqIHRocm91Z2ggdGhlIGhvdHBsdWcgZW50cnkncyBkcml2ZXJfZGF0YS4KLSAqCi0gKi8KLWludCB1c2JfZWhjaV9wcGNfc29jX3Byb2JlKGNvbnN0IHN0cnVjdCBoY19kcml2ZXIgKmRyaXZlciwKLQkJCSAgIHN0cnVjdCB1c2JfaGNkICoqaGNkX291dCwKLQkJCSAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKLXsKLQlpbnQgcmV0dmFsOwotCXN0cnVjdCB1c2JfaGNkICpoY2Q7Ci0Jc3RydWN0IGVoY2lfaGNkICplaGNpOwotCi0JaWYgKGRldi0+cmVzb3VyY2VbMV0uZmxhZ3MgIT0gSU9SRVNPVVJDRV9JUlEpIHsKLQkJcHJfZGVidWcoInJlc291cmNlWzFdIGlzIG5vdCBJT1JFU09VUkNFX0lSUSIpOwotCQlyZXR2YWwgPSAtRU5PTUVNOwotCX0KLQloY2QgPSB1c2JfY3JlYXRlX2hjZChkcml2ZXIsICZkZXYtPmRldiwgIlBQQy1TT0MgRUhDSSIpOwotCWlmICghaGNkKQotCQlyZXR1cm4gLUVOT01FTTsKLQloY2QtPnJzcmNfc3RhcnQgPSBkZXYtPnJlc291cmNlWzBdLnN0YXJ0OwotCWhjZC0+cnNyY19sZW4gPSBkZXYtPnJlc291cmNlWzBdLmVuZCAtIGRldi0+cmVzb3VyY2VbMF0uc3RhcnQgKyAxOwotCi0JaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24oaGNkLT5yc3JjX3N0YXJ0LCBoY2QtPnJzcmNfbGVuLCBoY2RfbmFtZSkpIHsKLQkJcHJfZGVidWcoInJlcXVlc3RfbWVtX3JlZ2lvbiBmYWlsZWQiKTsKLQkJcmV0dmFsID0gLUVCVVNZOwotCQlnb3RvIGVycjE7Ci0JfQotCi0JaGNkLT5yZWdzID0gaW9yZW1hcChoY2QtPnJzcmNfc3RhcnQsIGhjZC0+cnNyY19sZW4pOwotCWlmICghaGNkLT5yZWdzKSB7Ci0JCXByX2RlYnVnKCJpb3JlbWFwIGZhaWxlZCIpOwotCQlyZXR2YWwgPSAtRU5PTUVNOwotCQlnb3RvIGVycjI7Ci0JfQotCi0JZWhjaSA9IGhjZF90b19laGNpKGhjZCk7Ci0JZWhjaS0+YmlnX2VuZGlhbl9tbWlvID0gMTsKLQllaGNpLT5iaWdfZW5kaWFuX2Rlc2MgPSAxOwotCWVoY2ktPmNhcHMgPSBoY2QtPnJlZ3M7Ci0JZWhjaS0+cmVncyA9IGhjZC0+cmVncyArIEhDX0xFTkdUSChlaGNpX3JlYWRsKGVoY2ksICZlaGNpLT5jYXBzLT5oY19jYXBiYXNlKSk7Ci0KLQkvKiBjYWNoZSB0aGlzIHJlYWRvbmx5IGRhdGE7IG1pbmltaXplIGNoaXAgcmVhZHMgKi8KLQllaGNpLT5oY3NfcGFyYW1zID0gZWhjaV9yZWFkbChlaGNpLCAmZWhjaS0+Y2Fwcy0+aGNzX3BhcmFtcyk7Ci0KLSNpZiBkZWZpbmVkKENPTkZJR180NDBFUFgpCi0JLyoKLQkgKiA0NDBFUHggRXJyYXRhIFVTQkhfMwotCSAqIEZpeDogRW5hYmxlIEJyZWFrIE1lbW9yeSBUcmFuc2ZlciAoQk1UKSBpbiBJTlNOUkVHMwotCSAqLwotCW91dF9iZTMyKCh2b2lkICopKCh1bG9uZykoJmVoY2ktPnJlZ3MtPmNvbW1hbmQpICsgMHg4YyksICgxIDw8IDApKTsKLQllaGNpX2RiZyhlaGNpLCAiQnJlYWsgTWVtb3J5IFRyYW5zZmVyIChCTVQpIGhhcyBiZWVkIGVuYWJsZWQhXG4iKTsKLSNlbmRpZgotCi0JcmV0dmFsID0gdXNiX2FkZF9oY2QoaGNkLCBkZXYtPnJlc291cmNlWzFdLnN0YXJ0LCBJUlFGX0RJU0FCTEVEKTsKLQlpZiAocmV0dmFsID09IDApCi0JCXJldHVybiByZXR2YWw7Ci0KLQlpb3VubWFwKGhjZC0+cmVncyk7Ci1lcnIyOgotCXJlbGVhc2VfbWVtX3JlZ2lvbihoY2QtPnJzcmNfc3RhcnQsIGhjZC0+cnNyY19sZW4pOwotZXJyMToKLQl1c2JfcHV0X2hjZChoY2QpOwotCXJldHVybiByZXR2YWw7Ci19Ci0KLS8qIG1heSBiZSBjYWxsZWQgd2l0aG91dCBjb250cm9sbGVyIGVsZWN0cmljYWxseSBwcmVzZW50ICovCi0vKiBtYXkgYmUgY2FsbGVkIHdpdGggY29udHJvbGxlciwgYnVzLCBhbmQgZGV2aWNlcyBhY3RpdmUgKi8KLQotLyoqCi0gKiB1c2JfZWhjaV9oY2RfcHBjX3NvY19yZW1vdmUgLSBzaHV0ZG93biBwcm9jZXNzaW5nIGZvciBQUEMtU29DLWJhc2VkIEhDRHMKLSAqIEBkZXY6IFVTQiBIb3N0IENvbnRyb2xsZXIgYmVpbmcgcmVtb3ZlZAotICogQ29udGV4dDogIWluX2ludGVycnVwdCgpCi0gKgotICogUmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiB1c2JfZWhjaV9oY2RfcHBjX3NvY19wcm9iZSgpLCBmaXJzdCBpbnZva2luZwotICogdGhlIEhDRCdzIHN0b3AoKSBtZXRob2QuICBJdCBpcyBhbHdheXMgY2FsbGVkIGZyb20gYSB0aHJlYWQKLSAqIGNvbnRleHQsIG5vcm1hbGx5ICJybW1vZCIsICJhcG1kIiwgb3Igc29tZXRoaW5nIHNpbWlsYXIuCi0gKgotICovCi12b2lkIHVzYl9laGNpX3BwY19zb2NfcmVtb3ZlKHN0cnVjdCB1c2JfaGNkICpoY2QsIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKLXsKLQl1c2JfcmVtb3ZlX2hjZChoY2QpOwotCWlvdW5tYXAoaGNkLT5yZWdzKTsKLQlyZWxlYXNlX21lbV9yZWdpb24oaGNkLT5yc3JjX3N0YXJ0LCBoY2QtPnJzcmNfbGVuKTsKLQl1c2JfcHV0X2hjZChoY2QpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGhjX2RyaXZlciBlaGNpX3BwY19zb2NfaGNfZHJpdmVyID0gewotCS5kZXNjcmlwdGlvbiA9IGhjZF9uYW1lLAotCS5wcm9kdWN0X2Rlc2MgPSAiUFBDLVNPQyBFSENJIiwKLQkuaGNkX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZWhjaV9oY2QpLAotCi0JLyoKLQkgKiBnZW5lcmljIGhhcmR3YXJlIGxpbmthZ2UKLQkgKi8KLQkuaXJxID0gZWhjaV9pcnEsCi0JLmZsYWdzID0gSENEX01FTU9SWSB8IEhDRF9VU0IyLAotCi0JLyoKLQkgKiBiYXNpYyBsaWZlY3ljbGUgb3BlcmF0aW9ucwotCSAqLwotCS5yZXNldCA9IGVoY2lfcHBjX3NvY19zZXR1cCwKLQkuc3RhcnQgPSBlaGNpX3J1biwKLQkuc3RvcCA9IGVoY2lfc3RvcCwKLQkuc2h1dGRvd24gPSBlaGNpX3NodXRkb3duLAotCi0JLyoKLQkgKiBtYW5hZ2luZyBpL28gcmVxdWVzdHMgYW5kIGFzc29jaWF0ZWQgZGV2aWNlIHJlc291cmNlcwotCSAqLwotCS51cmJfZW5xdWV1ZSA9IGVoY2lfdXJiX2VucXVldWUsCi0JLnVyYl9kZXF1ZXVlID0gZWhjaV91cmJfZGVxdWV1ZSwKLQkuZW5kcG9pbnRfZGlzYWJsZSA9IGVoY2lfZW5kcG9pbnRfZGlzYWJsZSwKLQotCS8qCi0JICogc2NoZWR1bGluZyBzdXBwb3J0Ci0JICovCi0JLmdldF9mcmFtZV9udW1iZXIgPSBlaGNpX2dldF9mcmFtZSwKLQotCS8qCi0JICogcm9vdCBodWIgc3VwcG9ydAotCSAqLwotCS5odWJfc3RhdHVzX2RhdGEgPSBlaGNpX2h1Yl9zdGF0dXNfZGF0YSwKLQkuaHViX2NvbnRyb2wgPSBlaGNpX2h1Yl9jb250cm9sLAotCS5idXNfc3VzcGVuZCA9IGVoY2lfYnVzX3N1c3BlbmQsCi0JLmJ1c19yZXN1bWUgPSBlaGNpX2J1c19yZXN1bWUsCi0JLnJlbGlucXVpc2hfcG9ydCA9IGVoY2lfcmVsaW5xdWlzaF9wb3J0LAotCS5wb3J0X2hhbmRlZF9vdmVyID0gZWhjaV9wb3J0X2hhbmRlZF9vdmVyLAotfTsKLQotc3RhdGljIGludCBlaGNpX2hjZF9wcGNfc29jX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBOVUxMOwotCWludCByZXQ7Ci0KLQlwcl9kZWJ1ZygiSW4gZWhjaV9oY2RfcHBjX3NvY19kcnZfcHJvYmVcbiIpOwotCi0JaWYgKHVzYl9kaXNhYmxlZCgpKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCS8qIEZJWE1FIHdlIG9ubHkgd2FudCBvbmUgb25lIHByb2JlKCkgbm90IHR3byAqLwotCXJldCA9IHVzYl9laGNpX3BwY19zb2NfcHJvYmUoJmVoY2lfcHBjX3NvY19oY19kcml2ZXIsICZoY2QsIHBkZXYpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgZWhjaV9oY2RfcHBjX3NvY19kcnZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCi17Ci0Jc3RydWN0IHVzYl9oY2QgKmhjZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwotCi0JLyogRklYTUUgd2Ugb25seSB3YW50IG9uZSBvbmUgcmVtb3ZlKCkgbm90IHR3byAqLwotCXVzYl9laGNpX3BwY19zb2NfcmVtb3ZlKGhjZCwgcGRldik7Ci0JcmV0dXJuIDA7Ci19Ci0KLU1PRFVMRV9BTElBUygicGxhdGZvcm06cHBjLXNvYy1laGNpIik7Ci1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaGNpX3BwY19zb2NfZHJpdmVyID0gewotCS5wcm9iZSA9IGVoY2lfaGNkX3BwY19zb2NfZHJ2X3Byb2JlLAotCS5yZW1vdmUgPSBlaGNpX2hjZF9wcGNfc29jX2Rydl9yZW1vdmUsCi0JLnNodXRkb3duID0gdXNiX2hjZF9wbGF0Zm9ybV9zaHV0ZG93biwKLQkuZHJpdmVyID0gewotCQkubmFtZSA9ICJwcGMtc29jLWVoY2kiLAotCX0KLX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCmluZGV4IGI2OTdhMTMuLmIxMTc5OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCkBAIC05OSw2ICs5OSw4IEBACiAJCQlvd25lZCBieSB0aGUgY29tcGFuaW9uIGR1cmluZyBhIGJ1cyBzdXNwZW5kICovCiAJdW5zaWduZWQgbG9uZwkJcG9ydF9jX3N1c3BlbmQ7CQkvKiB3aGljaCBwb3J0cyBoYXZlCiAJCQl0aGUgY2hhbmdlLXN1c3BlbmQgZmVhdHVyZSB0dXJuZWQgb24gKi8KKwl1bnNpZ25lZCBsb25nCQlzdXNwZW5kZWRfcG9ydHM7CS8qIHdoaWNoIHBvcnRzIGFyZQorCQkJc3VzcGVuZGVkICovCiAKIAkvKiBwZXItSEMgbWVtb3J5IHBvb2xzIChjb3VsZCBiZSBwZXItYnVzLCBidXQgLi4uKSAqLwogCXN0cnVjdCBkbWFfcG9vbAkJKnFoX3Bvb2w7CS8qIHFoIHBlciBhY3RpdmUgdXJiICovCkBAIC0xODEsMTQgKzE4MywxNiBAQAogCSAqIHRoZSBhc3luYyByaW5nOyBqdXN0IHRoZSBJL08gd2F0Y2hkb2cuICBOb3RlIHRoYXQgaWYgYQogCSAqIFNIUklOSyB3ZXJlIHBlbmRpbmcsIE9GRiB3b3VsZCBuZXZlciBiZSByZXF1ZXN0ZWQuCiAJICovCi0JaWYgKHRpbWVyX3BlbmRpbmcoJmVoY2ktPndhdGNoZG9nKQotCQkJJiYgKChCSVQoVElNRVJfQVNZTkNfU0hSSU5LKSB8IEJJVChUSU1FUl9BU1lOQ19PRkYpKQotCQkJCSYgZWhjaS0+YWN0aW9ucykpCi0JCXJldHVybjsKKwllbnVtIGVoY2lfdGltZXJfYWN0aW9uIG9sZGFjdGlvbnMgPSBlaGNpLT5hY3Rpb25zOwogCiAJaWYgKCF0ZXN0X2FuZF9zZXRfYml0IChhY3Rpb24sICZlaGNpLT5hY3Rpb25zKSkgewogCQl1bnNpZ25lZCBsb25nIHQ7CiAKKwkJaWYgKHRpbWVyX3BlbmRpbmcoJmVoY2ktPndhdGNoZG9nKQorCQkJJiYgKChCSVQoVElNRVJfQVNZTkNfU0hSSU5LKSB8IEJJVChUSU1FUl9BU1lOQ19PRkYpKQorCQkJCSYgb2xkYWN0aW9ucykpCisJCQlyZXR1cm47CisKIAkJc3dpdGNoIChhY3Rpb24pIHsKIAkJY2FzZSBUSU1FUl9JT19XQVRDSERPRzoKIAkJCXQgPSBFSENJX0lPX0pJRkZJRVM7CkBAIC0yMDQsNyArMjA4LDcgQEAKIAkJCXQgPSBESVZfUk9VTkRfVVAoRUhDSV9TSFJJTktfRlJBTUVTICogSFosIDEwMDApICsgMTsKIAkJCWJyZWFrOwogCQl9Ci0JCW1vZF90aW1lcigmZWhjaS0+d2F0Y2hkb2csIHQgKyBqaWZmaWVzKTsKKwkJbW9kX3RpbWVyKCZlaGNpLT53YXRjaGRvZywgcm91bmRfamlmZmllcyh0ICsgamlmZmllcykpOwogCX0KIH0KIApAQCAtNjA0LDE2ICs2MDgsNyBAQAogLyoKICAqIEJpZy1lbmRpYW4gcmVhZC93cml0ZSBmdW5jdGlvbnMgYXJlIGFyY2gtc3BlY2lmaWMuCiAgKiBPdGhlciBhcmNoZXMgY2FuIGJlIGFkZGVkIGlmL3doZW4gdGhleSdyZSBuZWVkZWQuCi0gKgotICogUkVWSVNJVDogYXJjaC9wb3dlcnBjIG5vdyBoYXMgcmVhZGwvd3JpdGVsX2JlLCBzbyB0aGUKLSAqIGRlZmluaXRpb24gYmVsb3cgY2FuIGRpZSBvbmNlIHRoZSA0eHggc3VwcG9ydCBpcwotICogZmluYWxseSBwb3J0ZWQgb3Zlci4KICAqLwotI2lmIGRlZmluZWQoQ09ORklHX1BQQykgJiYgIWRlZmluZWQoQ09ORklHX1BQQ19NRVJHRSkKLSNkZWZpbmUgcmVhZGxfYmUoYWRkcikJCWluX2JlMzIoKF9fZm9yY2UgdW5zaWduZWQgKilhZGRyKQotI2RlZmluZSB3cml0ZWxfYmUodmFsLCBhZGRyKQlvdXRfYmUzMigoX19mb3JjZSB1bnNpZ25lZCAqKWFkZHIsIHZhbCkKLSNlbmRpZgotCiAjaWYgZGVmaW5lZChDT05GSUdfQVJNKSAmJiBkZWZpbmVkKENPTkZJR19BUkNIX0lYUDRYWCkKICNkZWZpbmUgcmVhZGxfYmUoYWRkcikJCV9fcmF3X3JlYWRsKChfX2ZvcmNlIHVuc2lnbmVkICopYWRkcikKICNkZWZpbmUgd3JpdGVsX2JlKHZhbCwgYWRkcikJX19yYXdfd3JpdGVsKHZhbCwgKF9fZm9yY2UgdW5zaWduZWQgKilhZGRyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jCmluZGV4IGNlMWNhMGIuLjRkZGEzMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNngtaGNkLmMKQEAgLTE1NjIsMTEgKzE1NjIsMTIgQEAKIHsKIAlzdHJ1Y3QgdXNiX2hjZCAqaGNkOwogCXN0cnVjdCBpc3AxMTZ4ICppc3AxMTZ4OwotCXN0cnVjdCByZXNvdXJjZSAqYWRkciwgKmRhdGE7CisJc3RydWN0IHJlc291cmNlICphZGRyLCAqZGF0YSwgKmlyZXM7CiAJdm9pZCBfX2lvbWVtICphZGRyX3JlZzsKIAl2b2lkIF9faW9tZW0gKmRhdGFfcmVnOwogCWludCBpcnE7CiAJaW50IHJldCA9IDA7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAogCWlmIChwZGV2LT5udW1fcmVzb3VyY2VzIDwgMykgewogCQlyZXQgPSAtRU5PREVWOwpAQCAtMTU3NSwxMiArMTU3NiwxNiBAQAogCiAJZGF0YSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CiAJYWRkciA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMSk7Ci0JaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKLQlpZiAoIWFkZHIgfHwgIWRhdGEgfHwgaXJxIDwgMCkgeworCWlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9JUlEsIDApOworCisJaWYgKCFhZGRyIHx8ICFkYXRhIHx8ICFpcmVzKSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gZXJyMTsKIAl9CiAKKwlpcnEgPSBpcmVzLT5zdGFydDsKKwlpcnFmbGFncyA9IGlyZXMtPmZsYWdzICYgSVJRRl9UUklHR0VSX01BU0s7CisKIAlpZiAocGRldi0+ZGV2LmRtYV9tYXNrKSB7CiAJCURCRygiRE1BIG5vdCBzdXBwb3J0ZWRcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwpAQCAtMTYzNCw3ICsxNjM5LDcgQEAKIAkJZ290byBlcnI2OwogCX0KIAotCXJldCA9IHVzYl9hZGRfaGNkKGhjZCwgaXJxLCBJUlFGX0RJU0FCTEVEKTsKKwlyZXQgPSB1c2JfYWRkX2hjZChoY2QsIGlycSwgaXJxZmxhZ3MgfCBJUlFGX0RJU0FCTEVEKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTc2MC1pZi5jIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxNzYwLWlmLmMKaW5kZXggMDUxZWY3Yi4uYWY4NDlmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9pc3AxNzYwLWlmLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxNzYwLWlmLmMKQEAgLTIxOCw3ICsyMTgsNyBAQAogCSAqIGFuZCByZWFkaW5nIGJhY2sgYW5kIGNoZWNraW5nIHRoZSBjb250ZW50cyBhcmUgc2FtZSBvciBub3QKIAkgKi8KIAlpZiAocmVnX2RhdGEgIT0gMHhGQUNFKSB7Ci0JCWVycigic2NyYXRjaCByZWdpc3RlciBtaXNtYXRjaCAleCIsIHJlZ19kYXRhKTsKKwkJZGV2X2VycigmZGV2LT5kZXYsICJzY3JhdGNoIHJlZ2lzdGVyIG1pc21hdGNoICV4XG4iLCByZWdfZGF0YSk7CiAJCWdvdG8gY2xlYW47CiAJfQogCkBAIC0yMzIsOSArMjMyLDEwIEBACiAJaGNkID0gaXNwMTc2MF9yZWdpc3RlcihwY2lfbWVtX3BoeTAsIGxlbmd0aCwgZGV2LT5pcnEsCiAJCUlSUUZfU0hBUkVEIHwgSVJRRl9ESVNBQkxFRCwgJmRldi0+ZGV2LCBkZXZfbmFtZSgmZGV2LT5kZXYpLAogCQlkZXZmbGFncyk7Ci0JcGNpX3NldF9kcnZkYXRhKGRldiwgaGNkKTsKLQlpZiAoIWhjZCkKKwlpZiAoIUlTX0VSUihoY2QpKSB7CisJCXBjaV9zZXRfZHJ2ZGF0YShkZXYsIGhjZCk7CiAJCXJldHVybiAwOworCX0KIGNsZWFuOgogCXN0YXR1cyA9IC1FTk9ERVY7CiAJaW91bm1hcChpb2Jhc2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWRiZy5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWRiZy5jCmluZGV4IDdjZWYxZDIuLmQzMjY5NjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktZGJnLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWRiZy5jCkBAIC02NDksNyArNjQ5LDcgQEAKIAlvaGNpX2RiZ19zdyAob2hjaSwgJm5leHQsICZzaXplLAogCQkiYnVzICVzLCBkZXZpY2UgJXNcbiIKIAkJIiVzXG4iCi0JCSIlcyB2ZXJzaW9uICIgRFJJVkVSX1ZFUlNJT04gIlxuIiwKKwkJIiVzXG4iLAogCQloY2QtPnNlbGYuY29udHJvbGxlci0+YnVzLT5uYW1lLAogCQlkZXZfbmFtZShoY2QtPnNlbGYuY29udHJvbGxlciksCiAJCWhjZC0+cHJvZHVjdF9kZXNjLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jCmluZGV4IDg5OTAxOTYuLjg2NDdkYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMKQEAgLTQ2LDcgKzQ2LDYgQEAKIAogI2luY2x1ZGUgIi4uL2NvcmUvaGNkLmgiCiAKLSNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gIjIwMDYgQXVndXN0IDA0IgogI2RlZmluZSBEUklWRVJfQVVUSE9SICJSb21hbiBXZWlzc2dhZXJiZXIsIERhdmlkIEJyb3duZWxsIgogI2RlZmluZSBEUklWRVJfREVTQyAiVVNCIDEuMSAnT3BlbicgSG9zdCBDb250cm9sbGVyIChPSENJKSBEcml2ZXIiCiAKQEAgLTk4NCwxMCArOTgzLDggQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2RlZmluZSBEUklWRVJfSU5GTyBEUklWRVJfVkVSU0lPTiAiICIgRFJJVkVSX0RFU0MKLQogTU9EVUxFX0FVVEhPUiAoRFJJVkVSX0FVVEhPUik7Ci1NT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9JTkZPKTsKK01PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CiBNT0RVTEVfTElDRU5TRSAoIkdQTCIpOwogCiAjaWZkZWYgQ09ORklHX1BDSQpAQCAtMTA5NSw5ICsxMDkyLDEwIEBACiAJaWYgKHVzYl9kaXNhYmxlZCgpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXByaW50ayAoS0VSTl9ERUJVRyAiJXM6ICIgRFJJVkVSX0lORk8gIlxuIiwgaGNkX25hbWUpOworCXByaW50ayhLRVJOX0lORk8gIiVzOiAiIERSSVZFUl9ERVNDICJcbiIsIGhjZF9uYW1lKTsKIAlwcl9kZWJ1ZyAoIiVzOiBibG9jayBzaXplczogZWQgJVpkIHRkICVaZFxuIiwgaGNkX25hbWUsCiAJCXNpemVvZiAoc3RydWN0IGVkKSwgc2l6ZW9mIChzdHJ1Y3QgdGQpKTsKKwlzZXRfYml0KFVTQl9PSENJX0xPQURFRCwgJnVzYl9oY2RzX2xvYWRlZCk7CiAKICNpZmRlZiBERUJVRwogCW9oY2lfZGVidWdfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2Rpcigib2hjaSIsIE5VTEwpOwpAQCAtMTE4NCw2ICsxMTgyLDcgQEAKICBlcnJvcl9kZWJ1ZzoKICNlbmRpZgogCisJY2xlYXJfYml0KFVTQl9PSENJX0xPQURFRCwgJnVzYl9oY2RzX2xvYWRlZCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIG1vZHVsZV9pbml0KG9oY2lfaGNkX21vZF9pbml0KTsKQEAgLTEyMTQsNiArMTIxMyw3IEBACiAjaWZkZWYgREVCVUcKIAlkZWJ1Z2ZzX3JlbW92ZShvaGNpX2RlYnVnX3Jvb3QpOwogI2VuZGlmCisJY2xlYXJfYml0KFVTQl9PSENJX0xPQURFRCwgJnVzYl9oY2RzX2xvYWRlZCk7CiB9CiBtb2R1bGVfZXhpdChvaGNpX2hjZF9tb2RfZXhpdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1odWIuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1odWIuYwppbmRleCA3ZWE5YTdiLi4zMmJiY2U5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaHViLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWh1Yi5jCkBAIC0zNTksMjEgKzM1OSwyNCBAQAogCiAvKiBDYXJyeSBvdXQgcG9sbGluZy0sIGF1dG9zdG9wLSwgYW5kIGF1dG9yZXN1bWUtcmVsYXRlZCBzdGF0ZSBjaGFuZ2VzICovCiBzdGF0aWMgaW50IG9oY2lfcm9vdF9odWJfc3RhdGVfY2hhbmdlcyhzdHJ1Y3Qgb2hjaV9oY2QgKm9oY2ksIGludCBjaGFuZ2VkLAotCQlpbnQgYW55X2Nvbm5lY3RlZCkKKwkJaW50IGFueV9jb25uZWN0ZWQsIGludCByaHNjX3N0YXR1cykKIHsKIAlpbnQJcG9sbF9yaCA9IDE7Ci0JaW50CXJoc2M7CisJaW50CXJoc2NfZW5hYmxlOwogCi0JcmhzYyA9IG9oY2lfcmVhZGwob2hjaSwgJm9oY2ktPnJlZ3MtPmludHJlbmFibGUpICYgT0hDSV9JTlRSX1JIU0M7CisJLyogU29tZSBicm9rZW4gY29udHJvbGxlcnMgbmV2ZXIgdHVybiBvZmYgUkhDUyBpbiB0aGUgaW50ZXJydXB0CisJICogc3RhdHVzIHJlZ2lzdGVyLiAgRm9yIHRoZWlyIHNha2Ugd2Ugd29uJ3QgcmUtZW5hYmxlIFJIU0MKKwkgKiBpbnRlcnJ1cHRzIGlmIHRoZSBpbnRlcnJ1cHQgYml0IGlzIGFscmVhZHkgYWN0aXZlLgorCSAqLworCXJoc2NfZW5hYmxlID0gb2hjaV9yZWFkbChvaGNpLCAmb2hjaS0+cmVncy0+aW50cmVuYWJsZSkgJgorCQkJT0hDSV9JTlRSX1JIU0M7CisKIAlzd2l0Y2ggKG9oY2ktPmhjX2NvbnRyb2wgJiBPSENJX0NUUkxfSENGUykgewotCiAJY2FzZSBPSENJX1VTQl9PUEVSOgotCQkvKiBJZiBubyBzdGF0dXMgY2hhbmdlcyBhcmUgcGVuZGluZywgZW5hYmxlIHN0YXR1cy1jaGFuZ2UKLQkJICogaW50ZXJydXB0cy4KLQkJICovCi0JCWlmICghcmhzYyAmJiAhY2hhbmdlZCkgewotCQkJcmhzYyA9IE9IQ0lfSU5UUl9SSFNDOwotCQkJb2hjaV93cml0ZWwob2hjaSwgcmhzYywgJm9oY2ktPnJlZ3MtPmludHJlbmFibGUpOworCQkvKiBJZiBubyBzdGF0dXMgY2hhbmdlcyBhcmUgcGVuZGluZywgZW5hYmxlIFJIU0MgaW50ZXJydXB0cy4gKi8KKwkJaWYgKCFyaHNjX2VuYWJsZSAmJiAhcmhzY19zdGF0dXMgJiYgIWNoYW5nZWQpIHsKKwkJCXJoc2NfZW5hYmxlID0gT0hDSV9JTlRSX1JIU0M7CisJCQlvaGNpX3dyaXRlbChvaGNpLCByaHNjX2VuYWJsZSwgJm9oY2ktPnJlZ3MtPmludHJlbmFibGUpOwogCQl9CiAKIAkJLyogS2VlcCBvbiBwb2xsaW5nIHVudGlsIHdlIGtub3cgYSBkZXZpY2UgaXMgY29ubmVjdGVkCkBAIC0zODMsNyArMzg2LDcgQEAKIAkJCWlmIChhbnlfY29ubmVjdGVkIHx8CiAJCQkJCSFkZXZpY2VfbWF5X3dha2V1cCgmb2hjaV90b19oY2Qob2hjaSkKIAkJCQkJCS0+c2VsZi5yb290X2h1Yi0+ZGV2KSkgewotCQkJCWlmIChyaHNjKQorCQkJCWlmIChyaHNjX2VuYWJsZSkKIAkJCQkJcG9sbF9yaCA9IDA7CiAJCQl9IGVsc2UgewogCQkJCW9oY2ktPmF1dG9zdG9wID0gMTsKQEAgLTM5NiwzNCArMzk5LDQ1IEBACiAJCQkJb2hjaS0+YXV0b3N0b3AgPSAwOwogCQkJCW9oY2ktPm5leHRfc3RhdGVjaGFuZ2UgPSBqaWZmaWVzICsKIAkJCQkJCVNUQVRFQ0hBTkdFX0RFTEFZOwotCQkJfSBlbHNlIGlmIChyaHNjICYmIHRpbWVfYWZ0ZXJfZXEoamlmZmllcywKKwkJCX0gZWxzZSBpZiAodGltZV9hZnRlcl9lcShqaWZmaWVzLAogCQkJCQkJb2hjaS0+bmV4dF9zdGF0ZWNoYW5nZSkKIAkJCQkJJiYgIW9oY2ktPmVkX3JtX2xpc3QKIAkJCQkJJiYgIShvaGNpLT5oY19jb250cm9sICYKIAkJCQkJCU9IQ0lfU0NIRURfRU5BQkxFUykpIHsKIAkJCQlvaGNpX3JoX3N1c3BlbmQob2hjaSwgMSk7Ci0JCQkJcG9sbF9yaCA9IDA7CisJCQkJaWYgKHJoc2NfZW5hYmxlKQorCQkJCQlwb2xsX3JoID0gMDsKIAkJCX0KIAkJfQogCQlicmVhazsKIAotCS8qIGlmIHRoZXJlIGlzIGEgcG9ydCBjaGFuZ2UsIGF1dG9zdGFydCBvciBhc2sgdG8gYmUgcmVzdW1lZCAqLwogCWNhc2UgT0hDSV9VU0JfU1VTUEVORDoKIAljYXNlIE9IQ0lfVVNCX1JFU1VNRToKKwkJLyogaWYgdGhlcmUgaXMgYSBwb3J0IGNoYW5nZSwgYXV0b3N0YXJ0IG9yIGFzayB0byBiZSByZXN1bWVkICovCiAJCWlmIChjaGFuZ2VkKSB7CiAJCQlpZiAob2hjaS0+YXV0b3N0b3ApCiAJCQkJb2hjaV9yaF9yZXN1bWUob2hjaSk7CiAJCQllbHNlCiAJCQkJdXNiX2hjZF9yZXN1bWVfcm9vdF9odWIob2hjaV90b19oY2Qob2hjaSkpOwotCQl9IGVsc2UgewotCQkJaWYgKCFyaHNjICYmIChvaGNpLT5hdXRvc3RvcCB8fAotCQkJCQlvaGNpX3RvX2hjZChvaGNpKS0+c2VsZi5yb290X2h1Yi0+Ci0JCQkJCQlkb19yZW1vdGVfd2FrZXVwKSkKLQkJCQlvaGNpX3dyaXRlbChvaGNpLCBPSENJX0lOVFJfUkhTQywKLQkJCQkJCSZvaGNpLT5yZWdzLT5pbnRyZW5hYmxlKTsKIAotCQkJLyogZXZlcnl0aGluZyBpcyBpZGxlLCBubyBuZWVkIGZvciBwb2xsaW5nICovCisJCS8qIElmIHJlbW90ZSB3YWtldXAgaXMgZGlzYWJsZWQsIHN0b3AgcG9sbGluZyAqLworCQl9IGVsc2UgaWYgKCFvaGNpLT5hdXRvc3RvcCAmJgorCQkJCSFvaGNpX3RvX2hjZChvaGNpKS0+c2VsZi5yb290X2h1Yi0+CisJCQkJCWRvX3JlbW90ZV93YWtldXApIHsKIAkJCXBvbGxfcmggPSAwOworCisJCX0gZWxzZSB7CisJCQkvKiBJZiBubyBzdGF0dXMgY2hhbmdlcyBhcmUgcGVuZGluZywKKwkJCSAqIGVuYWJsZSBSSFNDIGludGVycnVwdHMKKwkJCSAqLworCQkJaWYgKCFyaHNjX2VuYWJsZSAmJiAhcmhzY19zdGF0dXMpIHsKKwkJCQlyaHNjX2VuYWJsZSA9IE9IQ0lfSU5UUl9SSFNDOworCQkJCW9oY2lfd3JpdGVsKG9oY2ksIHJoc2NfZW5hYmxlLAorCQkJCQkJJm9oY2ktPnJlZ3MtPmludHJlbmFibGUpOworCQkJfQorCQkJLyogS2VlcCBwb2xsaW5nIHVudGlsIFJIU0MgaXMgZW5hYmxlZCAqLworCQkJaWYgKHJoc2NfZW5hYmxlKQorCQkJCXBvbGxfcmggPSAwOwogCQl9CiAJCWJyZWFrOwogCX0KQEAgLTQ0MSwxOCArNDU1LDIyIEBACiAgKiBhdXRvc3RvcCBpc24ndCB1c2VkIHdoZW4gQ09ORklHX1BNIGlzIHR1cm5lZCBvZmYuCiAgKi8KIHN0YXRpYyBpbnQgb2hjaV9yb290X2h1Yl9zdGF0ZV9jaGFuZ2VzKHN0cnVjdCBvaGNpX2hjZCAqb2hjaSwgaW50IGNoYW5nZWQsCi0JCWludCBhbnlfY29ubmVjdGVkKQorCQlpbnQgYW55X2Nvbm5lY3RlZCwgaW50IHJoc2Nfc3RhdHVzKQogewogCS8qIElmIFJIU0MgaXMgZW5hYmxlZCwgZG9uJ3QgcG9sbCAqLwogCWlmIChvaGNpX3JlYWRsKG9oY2ksICZvaGNpLT5yZWdzLT5pbnRyZW5hYmxlKSAmIE9IQ0lfSU5UUl9SSFNDKQogCQlyZXR1cm4gMDsKIAotCS8qIElmIG5vIHN0YXR1cyBjaGFuZ2VzIGFyZSBwZW5kaW5nLCBlbmFibGUgc3RhdHVzLWNoYW5nZSBpbnRlcnJ1cHRzICovCi0JaWYgKCFjaGFuZ2VkKSB7Ci0JCW9oY2lfd3JpdGVsKG9oY2ksIE9IQ0lfSU5UUl9SSFNDLCAmb2hjaS0+cmVncy0+aW50cmVuYWJsZSk7Ci0JCXJldHVybiAwOwotCX0KLQlyZXR1cm4gMTsKKwkvKiBJZiBzdGF0dXMgY2hhbmdlcyBhcmUgcGVuZGluZywgY29udGludWUgcG9sbGluZy4KKwkgKiBDb252ZXJzZWx5LCBpZiBubyBzdGF0dXMgY2hhbmdlcyBhcmUgcGVuZGluZyBidXQgdGhlIFJIU0MKKwkgKiBzdGF0dXMgYml0IHdhcyBzZXQsIHRoZW4gUkhTQyBtYXkgYmUgYnJva2VuIHNvIGNvbnRpbnVlIHBvbGxpbmcuCisJICovCisJaWYgKGNoYW5nZWQgfHwgcmhzY19zdGF0dXMpCisJCXJldHVybiAxOworCisJLyogSXQncyBzYWZlIHRvIHJlLWVuYWJsZSBSSFNDIGludGVycnVwdHMgKi8KKwlvaGNpX3dyaXRlbChvaGNpLCBPSENJX0lOVFJfUkhTQywgJm9oY2ktPnJlZ3MtPmludHJlbmFibGUpOworCXJldHVybiAwOwogfQogCiAjZW5kaWYJLyogQ09ORklHX1BNICovCkBAIC00NjcsNiArNDg1LDcgQEAKIAlzdHJ1Y3Qgb2hjaV9oY2QJKm9oY2kgPSBoY2RfdG9fb2hjaSAoaGNkKTsKIAlpbnQJCWksIGNoYW5nZWQgPSAwLCBsZW5ndGggPSAxOwogCWludAkJYW55X2Nvbm5lY3RlZCA9IDA7CisJaW50CQlyaHNjX3N0YXR1czsKIAl1bnNpZ25lZCBsb25nCWZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUgKCZvaGNpLT5sb2NrLCBmbGFncyk7CkBAIC00OTIsMTIgKzUxMSwxMCBAQAogCQlsZW5ndGgrKzsKIAl9CiAKLQkvKiBTb21lIGJyb2tlbiBjb250cm9sbGVycyBuZXZlciB0dXJuIG9mZiBSSENTIGluIHRoZSBpbnRlcnJ1cHQKLQkgKiBzdGF0dXMgcmVnaXN0ZXIuICBGb3IgdGhlaXIgc2FrZSB3ZSB3b24ndCByZS1lbmFibGUgUkhTQwotCSAqIGludGVycnVwdHMgaWYgdGhlIGZsYWcgaXMgYWxyZWFkeSBzZXQuCi0JICovCi0JaWYgKG9oY2lfcmVhZGwob2hjaSwgJm9oY2ktPnJlZ3MtPmludHJzdGF0dXMpICYgT0hDSV9JTlRSX1JIU0MpCi0JCWNoYW5nZWQgPSAxOworCS8qIENsZWFyIHRoZSBSSFNDIHN0YXR1cyBmbGFnIGJlZm9yZSByZWFkaW5nIHRoZSBwb3J0IHN0YXR1c2VzICovCisJb2hjaV93cml0ZWwob2hjaSwgT0hDSV9JTlRSX1JIU0MsICZvaGNpLT5yZWdzLT5pbnRyc3RhdHVzKTsKKwlyaHNjX3N0YXR1cyA9IG9oY2lfcmVhZGwob2hjaSwgJm9oY2ktPnJlZ3MtPmludHJzdGF0dXMpICYKKwkJCU9IQ0lfSU5UUl9SSFNDOwogCiAJLyogbG9vayBhdCBlYWNoIHBvcnQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgb2hjaS0+bnVtX3BvcnRzOyBpKyspIHsKQEAgLTUxNyw3ICs1MzQsNyBAQAogCX0KIAogCWhjZC0+cG9sbF9yaCA9IG9oY2lfcm9vdF9odWJfc3RhdGVfY2hhbmdlcyhvaGNpLCBjaGFuZ2VkLAotCQkJYW55X2Nvbm5lY3RlZCk7CisJCQlhbnlfY29ubmVjdGVkLCByaHNjX3N0YXR1cyk7CiAKIGRvbmU6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSAoJm9oY2ktPmxvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1vbWFwLmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktb21hcC5jCmluZGV4IDUyMjE4NTYuLjkxNjk3YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1vbWFwLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLW9tYXAuYwpAQCAtMjMxLDcgKzIzMSw3IEBACiAKIAlvbWFwX29oY2lfY2xvY2tfcG93ZXIoMSk7CiAKLQlpZiAoY3B1X2lzX29tYXAxNTEwKCkpIHsKKwlpZiAoY3B1X2lzX29tYXAxNXh4KCkpIHsKIAkJb21hcF8xNTEwX2xvY2FsX2J1c19wb3dlcigxKTsKIAkJb21hcF8xNTEwX2xvY2FsX2J1c19pbml0KCk7CiAJfQpAQCAtMzE5LDcgKzMxOSw3IEBACiAJaWYgKElTX0VSUih1c2JfaG9zdF9jaykpCiAJCXJldHVybiBQVFJfRVJSKHVzYl9ob3N0X2NrKTsKIAotCWlmICghY3B1X2lzX29tYXAxNTEwKCkpCisJaWYgKCFjcHVfaXNfb21hcDE1eHgoKSkKIAkJdXNiX2RjX2NrID0gY2xrX2dldCgwLCAidXNiX2RjX2NrIik7CiAJZWxzZQogCQl1c2JfZGNfY2sgPSBjbGtfZ2V0KDAsICJsYl9jayIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBueDQwMDguYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wbng0MDA4LmMKaW5kZXggNjU4YTJhOS4uZTMwNmNhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBueDQwMDguYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcG54NDAwOC5jCkBAIC0zMzEsNyArMzMxLDcgQEAKIAogCWludCByZXQgPSAwLCBpcnE7CiAKLQlkZXZfZGJnKCZwZGV2LT5kZXYsICIlczogIiBEUklWRVJfSU5GTyAiIChwbng0MDA4KVxuIiwgaGNkX25hbWUpOworCWRldl9kYmcoJnBkZXYtPmRldiwgIiVzOiAiIERSSVZFUl9ERVNDICIgKHBueDQwMDgpXG4iLCBoY2RfbmFtZSk7CiAJaWYgKHVzYl9kaXNhYmxlZCgpKSB7CiAJCWVycigiVVNCIGlzIGRpc2FibGVkIik7CiAJCXJldCA9IC1FTk9ERVY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS5oCmluZGV4IGZhZjYyMmUuLjIyMjAxMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS5oCkBAIC01NDAsMTUgKzU0MCw3IEBACiAgKiBCaWctZW5kaWFuIHJlYWQvd3JpdGUgZnVuY3Rpb25zIGFyZSBhcmNoLXNwZWNpZmljLgogICogT3RoZXIgYXJjaGVzIGNhbiBiZSBhZGRlZCBpZi93aGVuIHRoZXkncmUgbmVlZGVkLgogICoKLSAqIFJFVklTSVQ6IGFyY2gvcG93ZXJwYyBub3cgaGFzIHJlYWRsL3dyaXRlbF9iZSwgc28gdGhlCi0gKiBkZWZpbml0aW9uIGJlbG93IGNhbiBkaWUgb25jZSB0aGUgU1RCMDR4eHggc3VwcG9ydCBpcwotICogZmluYWxseSBwb3J0ZWQgb3Zlci4KICAqLwotI2lmIGRlZmluZWQoQ09ORklHX1BQQykgJiYgIWRlZmluZWQoQ09ORklHX1BQQ19NRVJHRSkKLSNkZWZpbmUgcmVhZGxfYmUoYWRkcikJCWluX2JlMzIoKF9fZm9yY2UgdW5zaWduZWQgKilhZGRyKQotI2RlZmluZSB3cml0ZWxfYmUodmFsLCBhZGRyKQlvdXRfYmUzMigoX19mb3JjZSB1bnNpZ25lZCAqKWFkZHIsIHZhbCkKLSNlbmRpZgotCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfb2hjaV9yZWFkbCAoY29uc3Qgc3RydWN0IG9oY2lfaGNkICpvaGNpLAogCQkJCQlfX2hjMzIgX19pb21lbSAqIHJlZ3MpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3I4YTY2NTk3LWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9yOGE2NjU5Ny1oY2QuYwppbmRleCBlYTcxMjZmLi5jMThkODc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3I4YTY2NTk3LWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvcjhhNjY1OTctaGNkLmMKQEAgLTY2LDcgKzY2LDcgQEAKIG1vZHVsZV9wYXJhbShlbmRpYW4sIHVzaG9ydCwgMDY0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGVuZGlhbiwgImRhdGEgZW5kaWFuOiBiaWc9MjU2LCBsaXR0bGU9MCAoZGVmYXVsdD0wKSIpOwogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgaXJxX3NlbnNlID0gSU5UTDsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpcnFfc2Vuc2UgPSAweGZmOwogbW9kdWxlX3BhcmFtKGlycV9zZW5zZSwgdXNob3J0LCAwNjQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoaXJxX3NlbnNlLCAiSVJRIHNlbnNlOiBsb3cgbGV2ZWw9MzIsIGZhbGxpbmcgZWRnZT0wICIKIAkJIihkZWZhdWx0PTMyKSIpOwpAQCAtMTE4LDcgKzExOCw3IEBACiAJCXI4YTY2NTk3X3dyaXRlKHI4YTY2NTk3LCBTQ0tFLCBTWVNDRkcwKTsKIAkJdG1wID0gcjhhNjY1OTdfcmVhZChyOGE2NjU5NywgU1lTQ0ZHMCk7CiAJCWlmIChpKysgPiAxMDAwKSB7Ci0JCQllcnIoInJlZ2lzdGVyIGFjY2VzcyBmYWlsLiIpOworCQkJcHJpbnRrKEtFUk5fRVJSICJyOGE2NjU5NzogcmVnaXN0ZXIgYWNjZXNzIGZhaWwuXG4iKTsKIAkJCXJldHVybiAtRU5YSU87CiAJCX0KIAl9IHdoaWxlICgodG1wICYgU0NLRSkgIT0gU0NLRSk7CkBAIC0xMjgsNyArMTI4LDcgQEAKIAkJcjhhNjY1OTdfd3JpdGUocjhhNjY1OTcsIFVTQkUsIFNZU0NGRzApOwogCQl0bXAgPSByOGE2NjU5N19yZWFkKHI4YTY2NTk3LCBTWVNDRkcwKTsKIAkJaWYgKGkrKyA+IDEwMDApIHsKLQkJCWVycigicmVnaXN0ZXIgYWNjZXNzIGZhaWwuIik7CisJCQlwcmludGsoS0VSTl9FUlIgInI4YTY2NTk3OiByZWdpc3RlciBhY2Nlc3MgZmFpbC5cbiIpOwogCQkJcmV0dXJuIC1FTlhJTzsKIAkJfQogCX0gd2hpbGUgKCh0bXAgJiBVU0JFKSAhPSBVU0JFKTsKQEAgLTE0MSw3ICsxNDEsNyBAQAogCQltc2xlZXAoMSk7CiAJCXRtcCA9IHI4YTY2NTk3X3JlYWQocjhhNjY1OTcsIFNZU0NGRzApOwogCQlpZiAoaSsrID4gNTAwKSB7Ci0JCQllcnIoInJlZ2lzdGVyIGFjY2VzcyBmYWlsLiIpOworCQkJcHJpbnRrKEtFUk5fRVJSICJyOGE2NjU5NzogcmVnaXN0ZXIgYWNjZXNzIGZhaWwuXG4iKTsKIAkJCXJldHVybiAtRU5YSU87CiAJCX0KIAl9IHdoaWxlICgodG1wICYgU0NLRSkgIT0gU0NLRSk7CkBAIC0yNjUsNyArMjY1LDcgQEAKIAlpZiAocm9vdF9wb3J0KSB7CiAJCSpyb290X3BvcnQgPSAoZGV2cGF0aFswXSAmIDB4MEYpIC0gMTsKIAkJaWYgKCpyb290X3BvcnQgPj0gUjhBNjY1OTdfTUFYX1JPT1RfSFVCKQotCQkJZXJyKCJpbGxlZ2FsIHJvb3QgcG9ydCBudW1iZXIiKTsKKwkJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IElsbGVnYWwgcm9vdCBwb3J0IG51bWJlci5cbiIpOwogCX0KIAlpZiAoaHViX3BvcnQpCiAJCSpodWJfcG9ydCA9IGRldnBhdGhbMl0gJiAweDBGOwpAQCAtMjg2LDcgKzI4Niw3IEBACiAJCXVzYnNwZCA9IEhTTU9ERTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZXJyKCJ1bmtub3duIHNwZWVkIik7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IHVua25vd24gc3BlZWRcbiIpOwogCQlicmVhazsKIAl9CiAKQEAgLTM4NSw3ICszODUsNyBAQAogCXN0cnVjdCByOGE2NjU5N19kZXZpY2UgKmRldjsKIAogCWlmIChpc19odWJfbGltaXQodXJiLT5kZXYtPmRldnBhdGgpKSB7Ci0JCWVycigiRXh0ZXJuZWwgaHViIGxpbWl0IHJlYWNoZWQuIik7CisJCWRldl9lcnIoJnVyYi0+ZGV2LT5kZXYsICJFeHRlcm5hbCBodWIgbGltaXQgcmVhY2hlZC5cbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTQwNiw4ICs0MDYsOSBAQAogCQlyZXR1cm4gYWRkcjsKIAl9CiAKLQllcnIoImNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIGEgVVNCIGRldmljZSBtb3JlIHRoYW4gMTAuKCV4KSIsCi0JICAgIHI4YTY2NTk3LT5hZGRyZXNzX21hcCk7CisJZGV2X2VycigmdXJiLT5kZXYtPmRldiwKKwkJImNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIGEgVVNCIGRldmljZSBtb3JlIHRoYW4gMTAuKCV4KVxuIiwKKwkJcjhhNjY1OTctPmFkZHJlc3NfbWFwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDQ3LDcgKzQ0OCw4IEBACiAJZG8gewogCQl0bXAgPSByOGE2NjU5N19yZWFkKHI4YTY2NTk3LCByZWcpOwogCQlpZiAoaSsrID4gMTAwMDAwMCkgewotCQkJZXJyKCJyZWdpc3RlciVseCwgbG9vcCAleCBpcyB0aW1lb3V0IiwgcmVnLCBsb29wKTsKKwkJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IHJlZ2lzdGVyJWx4LCBsb29wICV4ICIKKwkJCSAgICAgICAiaXMgdGltZW91dFxuIiwgcmVnLCBsb29wKTsKIAkJCWJyZWFrOwogCQl9CiAJCW5kZWxheSgxKTsKQEAgLTY3NSw3ICs2NzcsNyBAQAogCQkJYXJyYXlbaSsrXSA9IDE7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWVycigiSWxsZWdhbCB0eXBlIik7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IElsbGVnYWwgdHlwZVxuIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNzA1LDcgKzcwNyw3IEBACiAJCXI4YTY2NTk3X3R5cGUgPSBSOEE2NjU5N19JU087CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWVycigiSWxsZWdhbCB0eXBlIik7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IElsbGVnYWwgdHlwZVxuIik7CiAJCXI4YTY2NTk3X3R5cGUgPSAweDAwMDA7CiAJCWJyZWFrOwogCX0KQEAgLTcyNCw3ICs3MjYsNyBAQAogCWVsc2UgaWYgKGNoZWNrX2ludGVycnVwdChwaXBlbnVtKSkKIAkJYnVmbnVtID0gNCArIChwaXBlbnVtIC0gNik7CiAJZWxzZQotCQllcnIoIklsbGVnYWwgcGlwZW51bSAoJWQpIiwgcGlwZW51bSk7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IElsbGVnYWwgcGlwZW51bSAoJWQpXG4iLCBwaXBlbnVtKTsKIAogCXJldHVybiBidWZudW07CiB9CkBAIC03NDAsNyArNzQyLDcgQEAKIAllbHNlIGlmIChjaGVja19pbnRlcnJ1cHQocGlwZW51bSkpCiAJCWJ1Zl9ic2l6ZSA9IDA7CiAJZWxzZQotCQllcnIoIklsbGVnYWwgcGlwZW51bSAoJWQpIiwgcGlwZW51bSk7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IElsbGVnYWwgcGlwZW51bSAoJWQpXG4iLCBwaXBlbnVtKTsKIAogCXJldHVybiBidWZfYnNpemU7CiB9CkBAIC03NjAsMTAgKzc2MiwxMiBAQAogCQkJaWYgKChyOGE2NjU5Ny0+ZG1hX21hcCAmICgxIDw8IGkpKSAhPSAwKQogCQkJCWNvbnRpbnVlOwogCi0JCQlpbmZvKCJhZGRyZXNzICVkLCBFbmRwb2ludEFkZHJlc3MgMHglMDJ4IHVzZSBETUEgRklGTyIsCi0JCQkgICAgIHVzYl9waXBlZGV2aWNlKHVyYi0+cGlwZSksCi0JCQkgICAgIGluZm8tPmRpcl9pbiA/IFVTQl9FTkRQT0lOVF9ESVJfTUFTSyArIGluZm8tPmVwbnVtCi0JCQkJCSAgICA6IGluZm8tPmVwbnVtKTsKKwkJCWRldl9pbmZvKCZkZXYtPnVkZXYtPmRldiwKKwkJCQkgImFkZHJlc3MgJWQsIEVuZHBvaW50QWRkcmVzcyAweCUwMnggdXNlICIKKwkJCQkgIkRNQSBGSUZPXG4iLCB1c2JfcGlwZWRldmljZSh1cmItPnBpcGUpLAorCQkJCSBpbmZvLT5kaXJfaW4gPworCQkJCSAJVVNCX0VORFBPSU5UX0RJUl9NQVNLICsgaW5mby0+ZXBudW0KKwkJCQkJOiBpbmZvLT5lcG51bSk7CiAKIAkJCXI4YTY2NTk3LT5kbWFfbWFwIHw9IDEgPDwgaTsKIAkJCWRldi0+ZG1hX21hcCB8PSAxIDw8IGk7CkBAIC0xMTg3LDcgKzExOTEsNyBAQAogCQlwcmVwYXJlX3N0YXR1c19wYWNrZXQocjhhNjY1OTcsIHRkKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZXJyKCJpbnZhbGlkIHR5cGUuIik7CisJCXByaW50ayhLRVJOX0VSUiAicjhhNjY1OTc6IGludmFsaWQgdHlwZS5cbiIpOwogCQlicmVhazsKIAl9CiAKQEAgLTEyOTUsNyArMTI5OSw3IEBACiAJaWYgKHVubGlrZWx5KCh0bXAgJiBGUkRZKSA9PSAwKSkgewogCQlwaXBlX3N0b3AocjhhNjY1OTcsIHRkLT5waXBlKTsKIAkJcGlwZV9pcnFfZGlzYWJsZShyOGE2NjU5NywgcGlwZW51bSk7Ci0JCWVycigiaW4gZmlmbyBub3QgcmVhZHkgKCVkKSIsIHBpcGVudW0pOworCQlwcmludGsoS0VSTl9FUlIgInI4YTY2NTk3OiBpbiBmaWZvIG5vdCByZWFkeSAoJWQpXG4iLCBwaXBlbnVtKTsKIAkJZmluaXNoX3JlcXVlc3QocjhhNjY1OTcsIHRkLCBwaXBlbnVtLCB0ZC0+dXJiLCAtRVBJUEUpOwogCQlyZXR1cm47CiAJfQpAQCAtMTM3MCw3ICsxMzc0LDcgQEAKIAlpZiAodW5saWtlbHkoKHRtcCAmIEZSRFkpID09IDApKSB7CiAJCXBpcGVfc3RvcChyOGE2NjU5NywgdGQtPnBpcGUpOwogCQlwaXBlX2lycV9kaXNhYmxlKHI4YTY2NTk3LCBwaXBlbnVtKTsKLQkJZXJyKCJvdXQgd3JpdGUgZmlmbyBub3QgcmVhZHkuICglZCkiLCBwaXBlbnVtKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJyOGE2NjU5Nzogb3V0IGZpZm8gbm90IHJlYWR5ICglZClcbiIsIHBpcGVudW0pOwogCQlmaW5pc2hfcmVxdWVzdChyOGE2NjU5NywgdGQsIHBpcGVudW0sIHVyYiwgLUVQSVBFKTsKIAkJcmV0dXJuOwogCX0KQEAgLTIwMDUsNyArMjAwOSw3IEBACiAJCXJldHVybiBkZXY7CiAJfQogCi0JZXJyKCJnZXRfcjhhNjY1OTdfZGV2aWNlIGZhaWwuKCVkKVxuIiwgYWRkcik7CisJcHJpbnRrKEtFUk5fRVJSICJyOGE2NjU5NzogZ2V0X3I4YTY2NTk3X2RldmljZSBmYWlsLiglZClcbiIsIGFkZHIpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC0yMjYzLDcgKzIyNjcsNyBAQAogI2RlZmluZSByZXNvdXJjZV9sZW4ocikgKCgociktPmVuZCAtIChyKS0+c3RhcnQpICsgMSkKIHN0YXRpYyBpbnQgX19pbml0IHI4YTY2NTk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7Ci0Jc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxMOworCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gTlVMTCwgKmlyZXM7CiAJaW50IGlycSA9IC0xOwogCXZvaWQgX19pb21lbSAqcmVnID0gTlVMTDsKIAlzdHJ1Y3QgdXNiX2hjZCAqaGNkID0gTlVMTDsKQEAgLTIyNzQsNyArMjI3OCw3IEBACiAKIAlpZiAocGRldi0+ZGV2LmRtYV9tYXNrKSB7CiAJCXJldCA9IC1FSU5WQUw7Ci0JCWVycigiZG1hIG5vdCBzdXBwb3J0Iik7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImRtYSBub3Qgc3VwcG9ydGVkXG4iKTsKIAkJZ290byBjbGVhbl91cDsKIAl9CiAKQEAgLTIyODIsMjEgKzIyODYsMjUgQEAKIAkJCQkJICAgKGNoYXIgKiloY2RfbmFtZSk7CiAJaWYgKCFyZXMpIHsKIAkJcmV0ID0gLUVOT0RFVjsKLQkJZXJyKCJwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lIGVycm9yLiIpOworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lIGVycm9yLlxuIik7CiAJCWdvdG8gY2xlYW5fdXA7CiAJfQogCi0JaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKLQlpZiAoaXJxIDwgMCkgeworCWlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9JUlEsIDApOworCWlmICghaXJlcykgewogCQlyZXQgPSAtRU5PREVWOwotCQllcnIoInBsYXRmb3JtX2dldF9pcnEgZXJyb3IuIik7CisJCWRldl9lcnIoJnBkZXYtPmRldiwKKwkJCSJwbGF0Zm9ybV9nZXRfcmVzb3VyY2UgSU9SRVNPVVJDRV9JUlEgZXJyb3IuXG4iKTsKIAkJZ290byBjbGVhbl91cDsKIAl9CiAKKwlpcnEgPSBpcmVzLT5zdGFydDsKKwlpcnFfdHJpZ2dlciA9IGlyZXMtPmZsYWdzICYgSVJRRl9UUklHR0VSX01BU0s7CisKIAlyZWcgPSBpb3JlbWFwKHJlcy0+c3RhcnQsIHJlc291cmNlX2xlbihyZXMpKTsKIAlpZiAocmVnID09IE5VTEwpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZXJyKCJpb3JlbWFwIGVycm9yLiIpOworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJpb3JlbWFwIGVycm9yLlxuIik7CiAJCWdvdG8gY2xlYW5fdXA7CiAJfQogCkBAIC0yMzA0LDcgKzIzMTIsNyBAQAogCWhjZCA9IHVzYl9jcmVhdGVfaGNkKCZyOGE2NjU5N19oY19kcml2ZXIsICZwZGV2LT5kZXYsIChjaGFyICopaGNkX25hbWUpOwogCWlmICghaGNkKSB7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWVycigiRmFpbGVkIHRvIGNyZWF0ZSBoY2QiKTsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBoY2RcbiIpOwogCQlnb3RvIGNsZWFuX3VwOwogCX0KIAlyOGE2NjU5NyA9IGhjZF90b19yOGE2NjU5NyhoY2QpOwpAQCAtMjMyOSwxMyArMjMzNywzMyBAQAogCUlOSVRfTElTVF9IRUFEKCZyOGE2NjU5Ny0+Y2hpbGRfZGV2aWNlKTsKIAogCWhjZC0+cnNyY19zdGFydCA9IHJlcy0+c3RhcnQ7Ci0JaWYgKGlycV9zZW5zZSA9PSBJTlRMKQotCQlpcnFfdHJpZ2dlciA9IElSUUZfVFJJR0dFUl9MT1c7Ci0JZWxzZQotCQlpcnFfdHJpZ2dlciA9IElSUUZfVFJJR0dFUl9GQUxMSU5HOworCisJLyogaXJxX3NlbnNlIHNldHRpbmcgb24gY21kbGluZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcmVzb3VyY2UKKwkgKiBzZXR0aW5ncywgc28gdGhlIGludHJvZHVjdGlvbiBvZiBpcnFmbGFncyBpbiBJUlEgcmVzb3Vyc2UKKwkgKiB3b24ndCBkaXN0dXJiIGV4aXN0aW5nIHNldHVwcyAqLworCXN3aXRjaCAoaXJxX3NlbnNlKSB7CisJCWNhc2UgSU5UTDoKKwkJCWlycV90cmlnZ2VyID0gSVJRRl9UUklHR0VSX0xPVzsKKwkJCWJyZWFrOworCQljYXNlIDA6CisJCQlpcnFfdHJpZ2dlciA9IElSUUZfVFJJR0dFUl9GQUxMSU5HOworCQkJYnJlYWs7CisJCWNhc2UgMHhmZjoKKwkJCWlmIChpcnFfdHJpZ2dlcikKKwkJCQlpcnFfc2Vuc2UgPSAoaXJxX3RyaWdnZXIgJiBJUlFGX1RSSUdHRVJfTE9XKSA/CisJCQkJCSAgICBJTlRMIDogMDsKKwkJCWVsc2UgeworCQkJCWlycV9zZW5zZSA9IElOVEw7CisJCQkJaXJxX3RyaWdnZXIgPSBJUlFGX1RSSUdHRVJfTE9XOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJVbmtub3duIGlycV9zZW5zZSB2YWx1ZS5cbiIpOworCX0KKwogCXJldCA9IHVzYl9hZGRfaGNkKGhjZCwgaXJxLCBJUlFGX0RJU0FCTEVEIHwgaXJxX3RyaWdnZXIpOwogCWlmIChyZXQgIT0gMCkgewotCQllcnIoIkZhaWxlZCB0byBhZGQgaGNkIik7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBhZGQgaGNkXG4iKTsKIAkJZ290byBjbGVhbl91cDsKIAl9CiAKQEAgLTIzNjQsNyArMjM5Miw4IEBACiAJaWYgKHVzYl9kaXNhYmxlZCgpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWluZm8oImRyaXZlciAlcywgJXMiLCBoY2RfbmFtZSwgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogZHJpdmVyICVzLCAlc1xuIiwgaGNkX25hbWUsCisJICAgICAgIERSSVZFUl9WRVJTSU9OKTsKIAlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZyOGE2NjU5N19kcml2ZXIpOwogfQogbW9kdWxlX2luaXQocjhhNjY1OTdfaW5pdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3NsODExLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYwppbmRleCA4YTc0YmJiLi5lMTA2ZTlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3NsODExLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTEtaGNkLmMKQEAgLTE2MjAsMjIgKzE2MjAsMjYgQEAKIHsKIAlzdHJ1Y3QgdXNiX2hjZAkJKmhjZDsKIAlzdHJ1Y3Qgc2w4MTEJCSpzbDgxMTsKLQlzdHJ1Y3QgcmVzb3VyY2UJCSphZGRyLCAqZGF0YTsKKwlzdHJ1Y3QgcmVzb3VyY2UJCSphZGRyLCAqZGF0YSwgKmlyZXM7CiAJaW50CQkJaXJxOwogCXZvaWQgX19pb21lbQkJKmFkZHJfcmVnOwogCXZvaWQgX19pb21lbQkJKmRhdGFfcmVnOwogCWludAkJCXJldHZhbDsKIAl1OAkJCXRtcCwgaW9hZGRyID0gMDsKKwl1bnNpZ25lZCBsb25nCQlpcnFmbGFnczsKIAogCS8qIGJhc2ljIHNhbml0eSBjaGVja3MgZmlyc3QuICBib2FyZC1zcGVjaWZpYyBpbml0IGxvZ2ljIHNob3VsZAogCSAqIGhhdmUgaW5pdGlhbGl6ZWQgdGhlc2UgdGhyZWUgcmVzb3VyY2VzIGFuZCBwcm9iYWJseSBib2FyZAogCSAqIHNwZWNpZmljIHBsYXRmb3JtX2RhdGEuICB3ZSBkb24ndCBwcm9iZSBmb3IgSVJRcywgYW5kIGRvIG9ubHkKIAkgKiBtaW5pbWFsIHNhbml0eSBjaGVja2luZy4KIAkgKi8KLQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKGRldiwgMCk7Ci0JaWYgKGRldi0+bnVtX3Jlc291cmNlcyA8IDMgfHwgaXJxIDwgMCkKKwlpcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKGRldiwgSU9SRVNPVVJDRV9JUlEsIDApOworCWlmIChkZXYtPm51bV9yZXNvdXJjZXMgPCAzIHx8ICFpcmVzKQogCQlyZXR1cm4gLUVOT0RFVjsKIAorCWlycSA9IGlyZXMtPnN0YXJ0OworCWlycWZsYWdzID0gaXJlcy0+ZmxhZ3MgJiBJUlFGX1RSSUdHRVJfTUFTSzsKKwogCS8qIHJlZnVzZSB0byBjb25mdXNlIHVzYmNvcmUgKi8KIAlpZiAoZGV2LT5kZXYuZG1hX21hc2spIHsKIAkJREJHKCJubyB3ZSB3b24ndCBkbWFcbiIpOwpAQCAtMTcxNyw4ICsxNzIxLDExIEBACiAJICogdHJpZ2dlcnMgKGUuZy4gbW9zdCBBUk0gQ1BVcykuICBJbml0aWFsIGRyaXZlciBzdHJlc3MgdGVzdGluZwogCSAqIHdhcyBvbiBhIHN5c3RlbSB3aXRoIHNpbmdsZSBlZGdlIHRyaWdnZXJpbmcsIHNvIG1vc3Qgc29ydHMgb2YKIAkgKiB0cmlnZ2VyaW5nIGFycmFuZ2VtZW50IHNob3VsZCB3b3JrLgorCSAqCisJICogVXNlIHJlc291cmNlIElSUSBmbGFncyBpZiBzZXQgYnkgcGxhdGZvcm0gZGV2aWNlIHNldHVwLgogCSAqLwotCXJldHZhbCA9IHVzYl9hZGRfaGNkKGhjZCwgaXJxLCBJUlFGX0RJU0FCTEVEIHwgSVJRRl9TSEFSRUQpOworCWlycWZsYWdzIHw9IElSUUZfU0hBUkVEOworCXJldHZhbCA9IHVzYl9hZGRfaGNkKGhjZCwgaXJxLCBJUlFGX0RJU0FCTEVEIHwgaXJxZmxhZ3MpOwogCWlmIChyZXR2YWwgIT0gMCkKIAkJZ290byBlcnI2OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaGNkLmMKaW5kZXggM2E3YmZlNy4uY2Y1ZTRjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC91aGNpLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1oY2QuYwpAQCAtNTMsNyArNTMsNiBAQAogLyoKICAqIFZlcnNpb24gSW5mb3JtYXRpb24KICAqLwotI2RlZmluZSBEUklWRVJfVkVSU0lPTiAidjMuMCIKICNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiTGludXMgJ0Zyb2RvIFJhYmJpdCcgVG9ydmFsZHMsIEpvaGFubmVzIEVyZGZlbHQsIFwKIFJhbmR5IER1bmxhcCwgR2VvcmcgQWNoZXIsIERldGkgRmxpZWdsLCBUaG9tYXMgU2FpbGVyLCBSb21hbiBXZWlzc2dhZXJiZXIsIFwKIEFsYW4gU3Rlcm4iCkBAIC05NTEsMTIgKzk1MCwxMyBAQAogewogCWludCByZXR2YWwgPSAtRU5PTUVNOwogCi0JcHJpbnRrKEtFUk5fSU5GTyBEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04gIiVzXG4iLAotCQkJaWdub3JlX29jID8gIiwgb3ZlcmN1cnJlbnQgaWdub3JlZCIgOiAiIik7Ci0KIAlpZiAodXNiX2Rpc2FibGVkKCkpCiAJCXJldHVybiAtRU5PREVWOwogCisJcHJpbnRrKEtFUk5fSU5GTyAidWhjaV9oY2Q6ICIgRFJJVkVSX0RFU0MgIiVzXG4iLAorCQkJaWdub3JlX29jID8gIiwgb3ZlcmN1cnJlbnQgaWdub3JlZCIgOiAiIik7CisJc2V0X2JpdChVU0JfVUhDSV9MT0FERUQsICZ1c2JfaGNkc19sb2FkZWQpOworCiAJaWYgKERFQlVHX0NPTkZJR1VSRUQpIHsKIAkJZXJyYnVmID0ga21hbGxvYyhFUlJCVUZfTEVOLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFlcnJidWYpCkBAIC05ODgsNiArOTg4LDcgQEAKIAogZXJyYnVmX2ZhaWxlZDoKIAorCWNsZWFyX2JpdChVU0JfVUhDSV9MT0FERUQsICZ1c2JfaGNkc19sb2FkZWQpOwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTk5Nyw2ICs5OTgsNyBAQAogCWttZW1fY2FjaGVfZGVzdHJveSh1aGNpX3VwX2NhY2hlcCk7CiAJZGVidWdmc19yZW1vdmUodWhjaV9kZWJ1Z2ZzX3Jvb3QpOwogCWtmcmVlKGVycmJ1Zik7CisJY2xlYXJfYml0KFVTQl9VSENJX0xPQURFRCwgJnVzYl9oY2RzX2xvYWRlZCk7CiB9CiAKIG1vZHVsZV9pbml0KHVoY2lfaGNkX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC91aGNpLXEuYyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1xLmMKaW5kZXggMWYwYzJjZi4uNTYzMWQ4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC91aGNpLXEuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktcS5jCkBAIC0xMDY1LDEzICsxMDY1LDE4IEBACiAJCX0KIAkJaWYgKGV4cG9uZW50IDwgMCkKIAkJCXJldHVybiAtRUlOVkFMOwotCQlxaC0+cGVyaW9kID0gMSA8PCBleHBvbmVudDsKLQkJcWgtPnNrZWwgPSBTS0VMX0lOREVYKGV4cG9uZW50KTsKIAotCQkvKiBGb3Igbm93LCBpbnRlcnJ1cHQgcGhhc2UgaXMgZml4ZWQgYnkgdGhlIGxheW91dAotCQkgKiBvZiB0aGUgUUggbGlzdHMuICovCi0JCXFoLT5waGFzZSA9IChxaC0+cGVyaW9kIC8gMikgJiAoTUFYX1BIQVNFIC0gMSk7Ci0JCXJldCA9IHVoY2lfY2hlY2tfYmFuZHdpZHRoKHVoY2ksIHFoKTsKKwkJLyogSWYgdGhlIHNsb3QgaXMgZnVsbCwgdHJ5IGEgbG93ZXIgcGVyaW9kICovCisJCWRvIHsKKwkJCXFoLT5wZXJpb2QgPSAxIDw8IGV4cG9uZW50OworCQkJcWgtPnNrZWwgPSBTS0VMX0lOREVYKGV4cG9uZW50KTsKKworCQkJLyogRm9yIG5vdywgaW50ZXJydXB0IHBoYXNlIGlzIGZpeGVkIGJ5IHRoZSBsYXlvdXQKKwkJCSAqIG9mIHRoZSBRSCBsaXN0cy4KKwkJCSAqLworCQkJcWgtPnBoYXNlID0gKHFoLT5wZXJpb2QgLyAyKSAmIChNQVhfUEhBU0UgLSAxKTsKKwkJCXJldCA9IHVoY2lfY2hlY2tfYmFuZHdpZHRoKHVoY2ksIHFoKTsKKwkJfSB3aGlsZSAocmV0ICE9IDAgJiYgLS1leHBvbmVudCA+PSAwKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfSBlbHNlIGlmIChxaC0+cGVyaW9kID4gdXJiLT5pbnRlcnZhbCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2ltYWdlL21kYzgwMC5jIGIvZHJpdmVycy91c2IvaW1hZ2UvbWRjODAwLmMKaW5kZXggMGZiMTE0Yy4uODc4Yzc3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW1hZ2UvbWRjODAwLmMKKysrIGIvZHJpdmVycy91c2IvaW1hZ2UvbWRjODAwLmMKQEAgLTM1NSwxMyArMzU1LDE0IEBACiAJaWYgKG1kYzgwMC0+Y2FtZXJhX3JlcXVlc3RfcmVhZHk+MCkKIAl7CiAJCW1kYzgwMC0+Y2FtZXJhX3JlcXVlc3RfcmVhZHk9MDsKLQkJZXJyICgidGltZW91dCB3YWl0aW5nIGZvciBjYW1lcmEuIik7CisJCWRldl9lcnIoJm1kYzgwMC0+ZGV2LT5kZXYsICJ0aW1lb3V0IHdhaXRpbmcgZm9yIGNhbWVyYS5cbiIpOwogCQlyZXR1cm4gLTE7CiAJfQogCQogCWlmIChtZGM4MDAtPnN0YXRlID09IE5PVF9DT05ORUNURUQpCiAJewotCQl3YXJuICgiQ2FtZXJhIGdldHMgZGlzY29ubmVjdGVkIGR1cmluZyB3YWl0aW5nIGZvciBpcnEuIik7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIm1kYzgwMDogQ2FtZXJhIGdldHMgZGlzY29ubmVjdGVkICIKKwkJICAgICAgICJkdXJpbmcgd2FpdGluZyBmb3IgaXJxLlxuIik7CiAJCW1kYzgwMC0+Y2FtZXJhX3JlcXVlc3RfcmVhZHk9MDsKIAkJcmV0dXJuIC0yOwogCX0KQEAgLTM3OSw3ICszODAsOCBAQAogCWludCBzdGF0dXMgPSB1cmItPnN0YXR1czsKIAogCWlmIChzdGF0dXMgIT0gMCkKLQkJZXJyICgid3JpdGluZyBjb21tYW5kIGZhaWxzIChzdGF0dXM9JWkpIiwgc3RhdHVzKTsKKwkJZGV2X2VycigmbWRjODAwLT5kZXYtPmRldiwKKwkJCSJ3cml0aW5nIGNvbW1hbmQgZmFpbHMgKHN0YXR1cz0laSlcbiIsIHN0YXR1cyk7CiAJZWxzZQogCQltZGM4MDAtPnN0YXRlPVJFQURZOwogCW1kYzgwMC0+d3JpdHRlbiA9IDE7CkBAIC00MDYsNyArNDA4LDggQEAKIAkJCW1kYzgwMC0+c3RhdGU9UkVBRFk7CiAJCX0KIAl9IGVsc2UgewotCQllcnIgKCJyZXF1ZXN0IGJ5dGVzIGZhaWxzIChzdGF0dXM6JWkpIiwgc3RhdHVzKTsKKwkJZGV2X2VycigmbWRjODAwLT5kZXYtPmRldiwKKwkJCSJyZXF1ZXN0IGJ5dGVzIGZhaWxzIChzdGF0dXM6JWkpXG4iLCBzdGF0dXMpOwogCX0KIAltZGM4MDAtPmRvd25sb2FkZWQgPSAxOwogCXdha2VfdXAgKCZtZGM4MDAtPmRvd25sb2FkX3dhaXQpOwpAQCAtNDQzLDEzICs0NDYsMTQgQEAKIAogCWlmIChtZGM4MDAtPmRldiAhPSBOVUxMKQogCXsKLQkJd2FybiAoIm9ubHkgb25lIE11c3RlayBNREM4MDAgaXMgc3VwcG9ydGVkLiIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LCAib25seSBvbmUgTXVzdGVrIE1EQzgwMCBpcyBzdXBwb3J0ZWQuXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiAJaWYgKGRldi0+ZGVzY3JpcHRvci5iTnVtQ29uZmlndXJhdGlvbnMgIT0gMSkKIAl7Ci0JCWVyciAoInByb2JlIGZhaWxzIC0+IHdyb25nIE51bWJlciBvZiBDb25maWd1cmF0aW9uIik7CisJCWRldl9lcnIoJmludGYtPmRldiwKKwkJCSJwcm9iZSBmYWlscyAtPiB3cm9uZyBOdW1iZXIgb2YgQ29uZmlndXJhdGlvblxuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIAlpbnRmX2Rlc2MgPSBpbnRmLT5jdXJfYWx0c2V0dGluZzsKQEAgLTQ2MSw3ICs0NjUsNyBAQAogCQl8fCAoIGludGZfZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzICE9IDQpCiAJKQogCXsKLQkJZXJyICgicHJvYmUgZmFpbHMgLT4gd3JvbmcgSW50ZXJmYWNlIik7CisJCWRldl9lcnIoJmludGYtPmRldiwgInByb2JlIGZhaWxzIC0+IHdyb25nIEludGVyZmFjZVxuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApAQCAtNDgyLDE5ICs0ODYsMTkgQEAKIAkJfQogCQlpZiAobWRjODAwLT5lbmRwb2ludFtpXSA9PSAtMSkKIAkJewotCQkJZXJyICgicHJvYmUgZmFpbHMgLT4gV3JvbmcgRW5kcG9pbnRzLiIpOworCQkJZGV2X2VycigmaW50Zi0+ZGV2LCAicHJvYmUgZmFpbHMgLT4gV3JvbmcgRW5kcG9pbnRzLlxuIik7CiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJfQogCX0KIAogCi0JaW5mbyAoIkZvdW5kIE11c3RlayBNREM4MDAgb24gVVNCLiIpOworCWRldl9pbmZvKCZpbnRmLT5kZXYsICJGb3VuZCBNdXN0ZWsgTURDODAwIG9uIFVTQi5cbiIpOwogCiAJbXV0ZXhfbG9jaygmbWRjODAwLT5pb19sb2NrKTsKIAogCXJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXYoaW50ZiwgJm1kYzgwMF9jbGFzcyk7CiAJaWYgKHJldHZhbCkgewotCQllcnIgKCJOb3QgYWJsZSB0byBnZXQgYSBtaW5vciBmb3IgdGhpcyBkZXZpY2UuIik7CisJCWRldl9lcnIoJmludGYtPmRldiwgIk5vdCBhYmxlIHRvIGdldCBhIG1pbm9yIGZvciB0aGlzIGRldmljZS5cbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTU3MCw3ICs1NzQsNyBAQAogCQltZGM4MDAtPmRldiA9IE5VTEw7CiAJCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAJfQotCWluZm8gKCJNdXN0ZWsgTURDODAwIGRpc2Nvbm5lY3RlZCBmcm9tIFVTQi4iKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiTXVzdGVrIE1EQzgwMCBkaXNjb25uZWN0ZWQgZnJvbSBVU0IuXG4iKTsKIH0KIAogCkBAIC02NDQsNyArNjQ4LDggQEAKIAltZGM4MDAtPmlycV91cmItPmRldiA9IG1kYzgwMC0+ZGV2OwogCXJldHZhbCA9IHVzYl9zdWJtaXRfdXJiIChtZGM4MDAtPmlycV91cmIsIEdGUF9LRVJORUwpOwogCWlmIChyZXR2YWwpIHsKLQkJZXJyICgicmVxdWVzdCBVU0IgaXJxIGZhaWxzIChzdWJtaXRfcmV0dmFsPSVpKS4iLCByZXR2YWwpOworCQlkZXZfZXJyKCZtZGM4MDAtPmRldi0+ZGV2LAorCQkJInJlcXVlc3QgVVNCIGlycSBmYWlscyAoc3VibWl0X3JldHZhbD0laSkuXG4iLCByZXR2YWwpOwogCQllcnJuID0gLUVJTzsKIAkJZ290byBlcnJvcl9vdXQ7CiAJfQpAQCAtNzAxLDcgKzcwNiw4IEBACiAJfQogCWlmIChtZGM4MDAtPnN0YXRlID09IFdPUktJTkcpCiAJewotCQl3YXJuICgiSWxsZWdhbCBTdGF0ZSBcIndvcmtpbmdcIiByZWFjaGVkIGR1cmluZyByZWFkID8hIik7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIm1kYzgwMDogSWxsZWdhbCBTdGF0ZSBcIndvcmtpbmdcIiIKKwkJICAgICAgICJyZWFjaGVkIGR1cmluZyByZWFkID8hXG4iKTsKIAkJbXV0ZXhfdW5sb2NrKCZtZGM4MDAtPmlvX2xvY2spOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KQEAgLTczMyw3ICs3MzksOSBAQAogCQkJCW1kYzgwMC0+ZG93bmxvYWRfdXJiLT5kZXYgPSBtZGM4MDAtPmRldjsKIAkJCQlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYiAobWRjODAwLT5kb3dubG9hZF91cmIsIEdGUF9LRVJORUwpOwogCQkJCWlmIChyZXR2YWwpIHsKLQkJCQkJZXJyICgiQ2FuJ3Qgc3VibWl0IGRvd25sb2FkIHVyYiAocmV0dmFsPSVpKSIscmV0dmFsKTsKKwkJCQkJZGV2X2VycigmbWRjODAwLT5kZXYtPmRldiwKKwkJCQkJCSJDYW4ndCBzdWJtaXQgZG93bmxvYWQgdXJiICIKKwkJCQkJCSIocmV0dmFsPSVpKVxuIiwgcmV0dmFsKTsKIAkJCQkJbXV0ZXhfdW5sb2NrKCZtZGM4MDAtPmlvX2xvY2spOwogCQkJCQlyZXR1cm4gbGVuLWxlZnQ7CiAJCQkJfQpAQCAtNzQyLDcgKzc1MCwxMCBAQAogCQkJCW1kYzgwMC0+ZG93bmxvYWRlZCA9IDA7CiAJCQkJaWYgKG1kYzgwMC0+ZG93bmxvYWRfdXJiLT5zdGF0dXMgIT0gMCkKIAkJCQl7Ci0JCQkJCWVyciAoInJlcXVlc3QgZG93bmxvYWQtYnl0ZXMgZmFpbHMgKHN0YXR1cz0laSkiLG1kYzgwMC0+ZG93bmxvYWRfdXJiLT5zdGF0dXMpOworCQkJCQlkZXZfZXJyKCZtZGM4MDAtPmRldi0+ZGV2LAorCQkJCQkJInJlcXVlc3QgZG93bmxvYWQtYnl0ZXMgZmFpbHMgIgorCQkJCQkJIihzdGF0dXM9JWkpXG4iLAorCQkJCQkJbWRjODAwLT5kb3dubG9hZF91cmItPnN0YXR1cyk7CiAJCQkJCW11dGV4X3VubG9jaygmbWRjODAwLT5pb19sb2NrKTsKIAkJCQkJcmV0dXJuIGxlbi1sZWZ0OwogCQkJCX0KQEAgLTgzOSw3ICs4NTAsOCBAQAogCiAJCQlpZiAobWRjODAwX3VzYl93YWl0Rm9ySVJRICgwLFRPX0dFVF9SRUFEWSkpCiAJCQl7Ci0JCQkJZXJyICgiQ2FtZXJhIGRpZG4ndCBnZXQgcmVhZHkuXG4iKTsKKwkJCQlkZXZfZXJyKCZtZGM4MDAtPmRldi0+ZGV2LAorCQkJCQkiQ2FtZXJhIGRpZG4ndCBnZXQgcmVhZHkuXG4iKTsKIAkJCQltdXRleF91bmxvY2soJm1kYzgwMC0+aW9fbG9jayk7CiAJCQkJcmV0dXJuIC1FSU87CiAJCQl9CkBAIC04NTEsNyArODYzLDkgQEAKIAkJCW1kYzgwMC0+d3JpdGVfdXJiLT5kZXYgPSBtZGM4MDAtPmRldjsKIAkJCXJldHZhbCA9IHVzYl9zdWJtaXRfdXJiIChtZGM4MDAtPndyaXRlX3VyYiwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAocmV0dmFsKSB7Ci0JCQkJZXJyICgic3VibWl0dGluZyB3cml0ZSB1cmIgZmFpbHMgKHJldHZhbD0laSkiLCByZXR2YWwpOworCQkJCWRldl9lcnIoJm1kYzgwMC0+ZGV2LT5kZXYsCisJCQkJCSJzdWJtaXR0aW5nIHdyaXRlIHVyYiBmYWlscyAiCisJCQkJCSIocmV0dmFsPSVpKVxuIiwgcmV0dmFsKTsKIAkJCQltdXRleF91bmxvY2soJm1kYzgwMC0+aW9fbG9jayk7CiAJCQkJcmV0dXJuIC1FSU87CiAJCQl9CkBAIC04NzAsNyArODg0LDkgQEAKIAkJCQljYXNlIDB4M2U6IC8qIFRha2Ugc2hvdCBpbiBGaW5lIE1vZGUgKFdDYW0gTW9kZSkgKi8KIAkJCQkJaWYgKG1kYzgwMC0+cGljX2xlbiA8IDApCiAJCQkJCXsKLQkJCQkJCWVyciAoImNhbGwgMHgwNyBiZWZvcmUgMHgwNSwweDNlIik7CisJCQkJCQlkZXZfZXJyKCZtZGM4MDAtPmRldi0+ZGV2LAorCQkJCQkJCSJjYWxsIDB4MDcgYmVmb3JlICIKKwkJCQkJCQkiMHgwNSwweDNlXG4iKTsKIAkJCQkJCW1kYzgwMC0+c3RhdGU9UkVBRFk7CiAJCQkJCQltdXRleF91bmxvY2soJm1kYzgwMC0+aW9fbG9jayk7CiAJCQkJCQlyZXR1cm4gLUVJTzsKQEAgLTg5MCw3ICs5MDYsNyBAQAogCiAJCQkJCQlpZiAobWRjODAwX3VzYl93YWl0Rm9ySVJRICgxLFRPX1JFQURfRlJPTV9JUlEpKQogCQkJCQkJewotCQkJCQkJCWVyciAoInJlcXVlc3RpbmcgYW5zd2VyIGZyb20gaXJxIGZhaWxzIik7CisJCQkJCQkJZGV2X2VycigmbWRjODAwLT5kZXYtPmRldiwgInJlcXVlc3RpbmcgYW5zd2VyIGZyb20gaXJxIGZhaWxzXG4iKTsKIAkJCQkJCQltdXRleF91bmxvY2soJm1kYzgwMC0+aW9fbG9jayk7CiAJCQkJCQkJcmV0dXJuIC1FSU87CiAJCQkJCQl9CkBAIC05MTgsNyArOTM0LDcgQEAKIAkJCQkJewogCQkJCQkJaWYgKG1kYzgwMF91c2Jfd2FpdEZvcklSUSAoMCxUT19ERUZBVUxUX0NPTU1BTkQpKQogCQkJCQkJewotCQkJCQkJCWVyciAoIkNvbW1hbmQgVGltZW91dC4iKTsKKwkJCQkJCQlkZXZfZXJyKCZtZGM4MDAtPmRldi0+ZGV2LCAiQ29tbWFuZCBUaW1lb3V0LlxuIik7CiAJCQkJCQkJbXV0ZXhfdW5sb2NrKCZtZGM4MDAtPmlvX2xvY2spOwogCQkJCQkJCXJldHVybiAtRUlPOwogCQkJCQkJfQpAQCAtMTAxOCw3ICsxMDM0LDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGNsZWFudXBfb25fZmFpbDsKIAotCWluZm8gKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAogCXJldHVybiAwOwogCkBAIC0xMDI4LDcgKzEwNDUsNyBAQAogCiAJaWYgKG1kYzgwMCAhPSBOVUxMKQogCXsKLQkJZXJyICgiY2FuJ3QgYWxsb2MgbWVtb3J5ISIpOworCQlwcmludGsoS0VSTl9FUlIgIm1kYzgwMDogY2FuJ3QgYWxsb2MgbWVtb3J5IVxuIik7CiAKIAkJa2ZyZWUobWRjODAwLT5kb3dubG9hZF91cmJfYnVmZmVyKTsKIAkJa2ZyZWUobWRjODAwLT53cml0ZV91cmJfYnVmZmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZwppbmRleCA0ZWE1MGUwLi5lNDYzZGI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvbWlzYy9LY29uZmlnCkBAIC00Miw2ICs0MiwxNSBAQAogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIFRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIGFkdXR1eC4KIAorY29uZmlnIFVTQl9TRVZTRUcKKwl0cmlzdGF0ZSAiVVNCIDctU2VnbWVudCBMRUQgRGlzcGxheSIKKwlkZXBlbmRzIG9uIFVTQgorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBVU0IgNy1TZWdtZW50IERpc3BsYXkgYnkgRGVsY29tCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVzYnNldnNlZy4KKwogY29uZmlnIFVTQl9SSU81MDAKIAl0cmlzdGF0ZSAiVVNCIERpYW1vbmQgUmlvNTAwIHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBVU0IKQEAgLTI3MSwzICsyODAsMTggQEAKIAkgIFRoZSBmaXJtd2FyZSBmb3IgdGhpcyBkcml2ZXIgbXVzdCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgTWFjT1MKIAkgIGRyaXZlciBiZWZvcmVoYW5kLiBUb29scyBmb3IgZG9pbmcgc28gYXJlIGF2YWlsYWJsZSBhdAogCSAgaHR0cDovL2JlcnNhY2UwMy5mcmVlLmZyCisKK2NvbmZpZyBVU0JfVlNUCisJdHJpc3RhdGUgIlVTQiBWU1QgZHJpdmVyIgorCWRlcGVuZHMgb24gVVNCCisJaGVscAorCSAgVGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgZm9yIFZlcm5pZXIgU29mdHdhcmUgVGVjaG5vbG9naWVzCisJICBidWxrIHVzYiBkZXZpY2VzIHN1Y2ggYXMgdGhlaXIgT2NlYW4tT3B0aWNzIHNwZWN0cm9tZXRlcnMgb3IKKwkgIExhYnF1ZXN0LgorCSAgSXQgaXMgYSBidWxrIGNoYW5uZWwgZHJpdmVyIHdpdGggY29uZmlndXJhYmxlIHJlYWQgYW5kIHdyaXRlCisJICB0aW1lb3V0cy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdnN0dXNiLgorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlCmluZGV4IDQ1YjRlMTIuLjEzMzRmN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGUKKysrIGIvZHJpdmVycy91c2IvbWlzYy9NYWtlZmlsZQpAQCAtMjYsNiArMjYsOCBAQAogb2JqLSQoQ09ORklHX1VTQl9URVNUKQkJKz0gdXNidGVzdC5vCiBvYmotJChDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SKQkrPSB0cmFuY2V2aWJyYXRvci5vCiBvYmotJChDT05GSUdfVVNCX1VTUzcyMCkJKz0gdXNzNzIwLm8KK29iai0kKENPTkZJR19VU0JfU0VWU0VHKQkrPSB1c2JzZXZzZWcubworb2JqLSQoQ09ORklHX1VTQl9WU1QpCQkrPSB2c3R1c2IubwogCiBvYmotJChDT05GSUdfVVNCX1NJU1VTQlZHQSkJKz0gc2lzdXNidmdhLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2FkdXR1eC5jIGIvZHJpdmVycy91c2IvbWlzYy9hZHV0dXguYwppbmRleCA5NjVmNmVhLi43YjY5MjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2FkdXR1eC5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvYWR1dHV4LmMKQEAgLTI4Myw4ICsyODMsOCBAQAogCiAJaW50ZXJmYWNlID0gdXNiX2ZpbmRfaW50ZXJmYWNlKCZhZHVfZHJpdmVyLCBzdWJtaW5vcik7CiAJaWYgKCFpbnRlcmZhY2UpIHsKLQkJZXJyKCIlcyAtIGVycm9yLCBjYW4ndCBmaW5kIGRldmljZSBmb3IgbWlub3IgJWQiLAotCQkgICAgX19mdW5jX18sIHN1Ym1pbm9yKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJhZHV0dXg6ICVzIC0gZXJyb3IsIGNhbid0IGZpbmQgZGV2aWNlIGZvciAiCisJCSAgICAgICAibWlub3IgJWRcbiIsIF9fZnVuY19fLCBzdWJtaW5vcik7CiAJCXJldHZhbCA9IC1FTk9ERVY7CiAJCWdvdG8gZXhpdF9ub19kZXZpY2U7CiAJfQpAQCAtNDE2LDcgKzQxNiw4IEBACiAJLyogdmVyaWZ5IHRoYXQgdGhlIGRldmljZSB3YXNuJ3QgdW5wbHVnZ2VkICovCiAJaWYgKGRldi0+dWRldiA9PSBOVUxMKSB7CiAJCXJldHZhbCA9IC1FTk9ERVY7Ci0JCWVycigiTm8gZGV2aWNlIG9yIGRldmljZSB1bnBsdWdnZWQgJWQiLCByZXR2YWwpOworCQlwcmludGsoS0VSTl9FUlIgImFkdXR1eDogTm8gZGV2aWNlIG9yIGRldmljZSB1bnBsdWdnZWQgJWRcbiIsCisJCSAgICAgICByZXR2YWwpOwogCQlnb3RvIGV4aXQ7CiAJfQogCkBAIC01NzYsNyArNTc3LDggQEAKIAkvKiB2ZXJpZnkgdGhhdCB0aGUgZGV2aWNlIHdhc24ndCB1bnBsdWdnZWQgKi8KIAlpZiAoZGV2LT51ZGV2ID09IE5VTEwpIHsKIAkJcmV0dmFsID0gLUVOT0RFVjsKLQkJZXJyKCJObyBkZXZpY2Ugb3IgZGV2aWNlIHVucGx1Z2dlZCAlZCIsIHJldHZhbCk7CisJCXByaW50ayhLRVJOX0VSUiAiYWR1dHV4OiBObyBkZXZpY2Ugb3IgZGV2aWNlIHVucGx1Z2dlZCAlZFxuIiwKKwkJICAgICAgIHJldHZhbCk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKQEAgLTY0NSw3ICs2NDcsOCBAQAogCQkJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIoZGV2LT5pbnRlcnJ1cHRfb3V0X3VyYiwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAocmV0dmFsIDwgMCkgewogCQkJCWRldi0+b3V0X3VyYl9maW5pc2hlZCA9IDE7Ci0JCQkJZXJyKCJDb3VsZG4ndCBzdWJtaXQgaW50ZXJydXB0X291dF91cmIgJWQiLCByZXR2YWwpOworCQkJCWRldl9lcnIoJmRldi0+dWRldi0+ZGV2LCAiQ291bGRuJ3Qgc3VibWl0ICIKKwkJCQkJImludGVycnVwdF9vdXRfdXJiICVkXG4iLCByZXR2YWwpOwogCQkJCWdvdG8gZXhpdDsKIAkJCX0KIApAQCAtODkwLDEzICs4OTMsMTQgQEAKIAkvKiByZWdpc3RlciB0aGlzIGRyaXZlciB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtICovCiAJcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZhZHVfZHJpdmVyKTsKIAlpZiAocmVzdWx0IDwgMCkgewotCQllcnIoInVzYl9yZWdpc3RlciBmYWlsZWQgZm9yIHRoZSAiX19GSUxFX18iIGRyaXZlci4gIgotCQkgICAgIkVycm9yIG51bWJlciAlZCIsIHJlc3VsdCk7CisJCXByaW50ayhLRVJOX0VSUiAidXNiX3JlZ2lzdGVyIGZhaWxlZCBmb3IgdGhlICJfX0ZJTEVfXworCQkgICAgICAgIiBkcml2ZXIuIEVycm9yIG51bWJlciAlZFxuIiwgcmVzdWx0KTsKIAkJZ290byBleGl0OwogCX0KIAotCWluZm8oImFkdXR1eCAiIERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7Ci0JaW5mbygiYWR1dHV4IGlzIGFuIGV4cGVyaW1lbnRhbCBkcml2ZXIuIFVzZSBhdCB5b3VyIG93biByaXNrIik7CisJcHJpbnRrKEtFUk5fSU5GTyAiYWR1dHV4ICIgRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OICJcbiIpOworCXByaW50ayhLRVJOX0lORk8gImFkdXR1eCBpcyBhbiBleHBlcmltZW50YWwgZHJpdmVyLiAiCisJICAgICAgICJVc2UgYXQgeW91ciBvd24gcmlza1xuIik7CiAKIGV4aXQ6CiAJZGJnKDIsIiAlcyA6IGxlYXZlLCByZXR1cm4gdmFsdWUgJWQiLCBfX2Z1bmNfXywgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGVkaXNwbGF5LmMgYi9kcml2ZXJzL3VzYi9taXNjL2FwcGxlZGlzcGxheS5jCmluZGV4IGEwNzZjMjQuLjFkOGUzOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvYXBwbGVkaXNwbGF5LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9hcHBsZWRpc3BsYXkuYwpAQCAtMTMwLDcgKzEzMCw4IEBACiBleGl0OgogCXJldHZhbCA9IHVzYl9zdWJtaXRfdXJiKHBkYXRhLT51cmIsIEdGUF9BVE9NSUMpOwogCWlmIChyZXR2YWwpIHsKLQkJZXJyKCIlcyAtIHVzYl9zdWJtaXRfdXJiIGZhaWxlZCB3aXRoIHJlc3VsdCAlZCIsCisJCWRldl9lcnIoJnBkYXRhLT51ZGV2LT5kZXYsCisJCQkiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWRcbiIsCiAJCQlfX2Z1bmNfXywgcmV0dmFsKTsKIAl9CiB9CkBAIC0yMjAsNyArMjIxLDcgQEAKIAkJfQogCX0KIAlpZiAoIWludF9pbl9lbmRwb2ludEFkZHIpIHsKLQkJZXJyKCJDb3VsZCBub3QgZmluZCBpbnQtaW4gZW5kcG9pbnQiKTsKKwkJZGV2X2VycigmaWZhY2UtPmRldiwgIkNvdWxkIG5vdCBmaW5kIGludC1pbiBlbmRwb2ludFxuIik7CiAJCXJldHVybiAtRUlPOwogCX0KIApAQCAtMjI4LDcgKzIyOSw3IEBACiAJcGRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYXBwbGVkaXNwbGF5KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwZGF0YSkgewogCQlyZXR2YWwgPSAtRU5PTUVNOwotCQllcnIoIk91dCBvZiBtZW1vcnkiKTsKKwkJZGV2X2VycigmaWZhY2UtPmRldiwgIk91dCBvZiBtZW1vcnlcbiIpOwogCQlnb3RvIGVycm9yOwogCX0KIApAQCAtMjQxLDggKzI0Miw4IEBACiAJcGRhdGEtPm1zZ2RhdGEgPSBrbWFsbG9jKEFDRF9NU0dfQlVGRkVSX0xFTiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwZGF0YS0+bXNnZGF0YSkgewogCQlyZXR2YWwgPSAtRU5PTUVNOwotCQllcnIoImFwcGxlZGlzcGxheTogQWxsb2NhdGluZyBidWZmZXIgZm9yIGNvbnRyb2wgbWVzc2FnZXMgIgotCQkJImZhaWxlZCIpOworCQlkZXZfZXJyKCZpZmFjZS0+ZGV2LAorCQkJIkFsbG9jYXRpbmcgYnVmZmVyIGZvciBjb250cm9sIG1lc3NhZ2VzIGZhaWxlZFxuIik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC0yNTAsNyArMjUxLDcgQEAKIAlwZGF0YS0+dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBkYXRhLT51cmIpIHsKIAkJcmV0dmFsID0gLUVOT01FTTsKLQkJZXJyKCJhcHBsZWRpc3BsYXk6IEFsbG9jYXRpbmcgVVJCIGZhaWxlZCIpOworCQlkZXZfZXJyKCZpZmFjZS0+ZGV2LCAiQWxsb2NhdGluZyBVUkIgZmFpbGVkXG4iKTsKIAkJZ290byBlcnJvcjsKIAl9CiAKQEAgLTI1OSw3ICsyNjAsNyBAQAogCQlHRlBfS0VSTkVMLCAmcGRhdGEtPnVyYi0+dHJhbnNmZXJfZG1hKTsKIAlpZiAoIXBkYXRhLT51cmJkYXRhKSB7CiAJCXJldHZhbCA9IC1FTk9NRU07Ci0JCWVycigiYXBwbGVkaXNwbGF5OiBBbGxvY2F0aW5nIFVSQiBidWZmZXIgZmFpbGVkIik7CisJCWRldl9lcnIoJmlmYWNlLT5kZXYsICJBbGxvY2F0aW5nIFVSQiBidWZmZXIgZmFpbGVkXG4iKTsKIAkJZ290byBlcnJvcjsKIAl9CiAKQEAgLTI3MCw3ICsyNzEsNyBAQAogCQlwZGF0YSwgMSk7CiAJaWYgKHVzYl9zdWJtaXRfdXJiKHBkYXRhLT51cmIsIEdGUF9LRVJORUwpKSB7CiAJCXJldHZhbCA9IC1FSU87Ci0JCWVycigiYXBwbGVkaXNwbGF5OiBTdWJtaXR0aW5nIFVSQiBmYWlsZWQiKTsKKwkJZGV2X2VycigmaWZhY2UtPmRldiwgIlN1Ym1pdHRpbmcgVVJCIGZhaWxlZFxuIik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC0yODAsNyArMjgxLDcgQEAKIAlwZGF0YS0+YmQgPSBiYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKGJsX25hbWUsIE5VTEwsIHBkYXRhLAogCQkJCQkJJmFwcGxlZGlzcGxheV9ibF9kYXRhKTsKIAlpZiAoSVNfRVJSKHBkYXRhLT5iZCkpIHsKLQkJZXJyKCJhcHBsZWRpc3BsYXk6IEJhY2tsaWdodCByZWdpc3RyYXRpb24gZmFpbGVkIik7CisJCWRldl9lcnIoJmlmYWNlLT5kZXYsICJCYWNrbGlnaHQgcmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC0yOTEsNyArMjkyLDggQEAKIAogCWlmIChicmlnaHRuZXNzIDwgMCkgewogCQlyZXR2YWwgPSBicmlnaHRuZXNzOwotCQllcnIoImFwcGxlZGlzcGxheTogRXJyb3Igd2hpbGUgZ2V0dGluZyBpbml0aWFsIGJyaWdodG5lc3M6ICVkIiwgcmV0dmFsKTsKKwkJZGV2X2VycigmaWZhY2UtPmRldiwKKwkJCSJFcnJvciB3aGlsZSBnZXR0aW5nIGluaXRpYWwgYnJpZ2h0bmVzczogJWRcbiIsIHJldHZhbCk7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC0zMTQsNyArMzE2LDcgQEAKIAkJCQkJcGRhdGEtPnVyYmRhdGEsIHBkYXRhLT51cmItPnRyYW5zZmVyX2RtYSk7CiAJCQl1c2JfZnJlZV91cmIocGRhdGEtPnVyYik7CiAJCX0KLQkJaWYgKHBkYXRhLT5iZCkKKwkJaWYgKHBkYXRhLT5iZCAmJiAhSVNfRVJSKHBkYXRhLT5iZCkpCiAJCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIocGRhdGEtPmJkKTsKIAkJa2ZyZWUocGRhdGEtPm1zZ2RhdGEpOwogCX0KQEAgLTM1Miw3ICszNTQsNyBAQAogewogCXdxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoImFwcGxlZGlzcGxheSIpOwogCWlmICghd3EpIHsKLQkJZXJyKCJDb3VsZCBub3QgY3JlYXRlIHdvcmsgcXVldWVcbiIpOworCQlwcmludGsoS0VSTl9FUlIgImFwcGxlZGlzcGxheTogQ291bGQgbm90IGNyZWF0ZSB3b3JrIHF1ZXVlXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2N5cHJlc3NfY3k3YzYzLmMgYi9kcml2ZXJzL3VzYi9taXNjL2N5cHJlc3NfY3k3YzYzLmMKaW5kZXggOTM3OTQwNC4uNTcyMGJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9jeXByZXNzX2N5N2M2My5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvY3lwcmVzc19jeTdjNjMuYwpAQCAtMjc4LDkgKzI3OCw5IEBACiAKIAkvKiByZWdpc3RlciB0aGlzIGRyaXZlciB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtICovCiAJcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZjeXByZXNzX2RyaXZlcik7Ci0JaWYgKHJlc3VsdCkgewotCQllcnIoIkZ1bmN0aW9uIHVzYl9yZWdpc3RlciBmYWlsZWQhIEVycm9yIG51bWJlcjogJWRcbiIsIHJlc3VsdCk7Ci0JfQorCWlmIChyZXN1bHQpCisJCXByaW50ayhLRVJOX0VSUiBLQlVJTERfTU9ETkFNRSAiOiB1c2JfcmVnaXN0ZXIgZmFpbGVkISAiCisJCSAgICAgICAiRXJyb3IgbnVtYmVyOiAlZFxuIiwgcmVzdWx0KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2N5dGhlcm0uYyBiL2RyaXZlcnMvdXNiL21pc2MvY3l0aGVybS5jCmluZGV4IDFjZDllN2UuLjRmYjNjMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvY3l0aGVybS5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvY3l0aGVybS5jCkBAIC00MjIsMTMgKzQyMiwxNCBAQAogCWludCByZXN1bHQ7CiAKIAlyZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJmN5dGhlcm1fZHJpdmVyKTsKLQlpZiAocmVzdWx0KSAKLQl7CQotCQllcnIoInVzYl9yZWdpc3RlciBmYWlsZWQuIEVycm9yIG51bWJlciAlZCIsIHJlc3VsdCk7CisJaWYgKHJlc3VsdCkgeworCQlwcmludGsoS0VSTl9FUlIgS0JVSUxEX01PRE5BTUUgIjogdXNiX3JlZ2lzdGVyIGZhaWxlZCEgIgorCQkgICAgICAgIkVycm9yIG51bWJlcjogJWRcbiIsIHJlc3VsdCk7CiAJCXJldHVybiByZXN1bHQ7CiAJfQogCi0JaW5mbyhEUklWRVJfVkVSU0lPTiAiOiIgRFJJVkVSX0RFU0MpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvZW1pMjYuYyBiL2RyaXZlcnMvdXNiL21pc2MvZW1pMjYuYwppbmRleCA0Yjk5NGEwLi5lNzYyYmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jCkBAIC01MCw3ICs1MCw3IEBACiAJdW5zaWduZWQgY2hhciAqYnVmZmVyID0gIGttZW1kdXAoZGF0YSwgbGVuZ3RoLCBHRlBfS0VSTkVMKTsKIAogCWlmICghYnVmZmVyKSB7Ci0JCWVycigiZW1pMjY6IGttYWxsb2MoJWQpIGZhaWxlZC4iLCBsZW5ndGgpOworCQlkZXZfZXJyKCZkZXYtPmRldiwgImttYWxsb2MoJWQpIGZhaWxlZC5cbiIsIGxlbmd0aCk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAkvKiBOb3RlOiB1c2JfY29udHJvbF9tc2cgcmV0dXJucyBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvciBvciBsZW5ndGggb2YgdGhlCkBAIC02NCwxMSArNjQsMTEgQEAKIHN0YXRpYyBpbnQgZW1pMjZfc2V0X3Jlc2V0IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBjaGFyIHJlc2V0X2JpdCkKIHsKIAlpbnQgcmVzcG9uc2U7Ci0JaW5mbygiJXMgLSAlZCIsIF9fZnVuY19fLCByZXNldF9iaXQpOworCWRldl9pbmZvKCZkZXYtPmRldiwgIiVzIC0gJWRcbiIsIF9fZnVuY19fLCByZXNldF9iaXQpOwogCS8qIHByaW50ayhLRVJOX0RFQlVHICIlcyAtICVkIiwgX19mdW5jX18sIHJlc2V0X2JpdCk7ICovCiAJcmVzcG9uc2UgPSBlbWkyNl93cml0ZW1lbW9yeSAoZGV2LCBDUFVDU19SRUcsICZyZXNldF9iaXQsIDEsIDB4YTApOwogCWlmIChyZXNwb25zZSA8IDApIHsKLQkJZXJyKCJlbWkyNjogc2V0X3Jlc2V0ICglZCkgZmFpbGVkIiwgcmVzZXRfYml0KTsKKwkJZGV2X2VycigmZGV2LT5kZXYsICJzZXRfcmVzZXQgKCVkKSBmYWlsZWRcbiIsIHJlc2V0X2JpdCk7CiAJfQogCXJldHVybiByZXNwb25zZTsKIH0KQEAgLTg4LDcgKzg4LDggQEAKIAogCWJ1ZiA9IGttYWxsb2MoRldfTE9BRF9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWJ1ZikgewotCQllcnIoICIlcyAtIGVycm9yIGxvYWRpbmcgZmlybXdhcmU6IGVycm9yID0gJWQiLCBfX2Z1bmNfXywgLUVOT01FTSk7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAiJXMgLSBlcnJvciBsb2FkaW5nIGZpcm13YXJlOiBlcnJvciA9ICVkXG4iLAorCQkJX19mdW5jX18sIC1FTk9NRU0pOwogCQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIHdyYXBlcnI7CiAJfQpAQCAtMTA2LDE0ICsxMDcsMTYgQEAKIAkJCQkgICAgJmRldi0+ZGV2KTsKIAlpZiAoZXJyKSB7CiAJbm9mdzoKLQkJZXJyKCAiJXMgLSByZXF1ZXN0X2Zpcm13YXJlKCkgZmFpbGVkIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZkZXYtPmRldiwgIiVzIC0gcmVxdWVzdF9maXJtd2FyZSgpIGZhaWxlZFxuIiwKKwkJCV9fZnVuY19fKTsKIAkJZ290byB3cmFwZXJyOwogCX0KIAogCS8qIEFzc2VydCByZXNldCAoc3RvcCB0aGUgQ1BVIGluIHRoZSBFTUkpICovCiAJZXJyID0gZW1pMjZfc2V0X3Jlc2V0KGRldiwxKTsKIAlpZiAoZXJyIDwgMCkgewotCQllcnIoICIlcyAtIGVycm9yIGxvYWRpbmcgZmlybXdhcmU6IGVycm9yID0gJWQiLCBfX2Z1bmNfXywgZXJyKTsKKwkJZGV2X2VycigmZGV2LT5kZXYsIiVzIC0gZXJyb3IgbG9hZGluZyBmaXJtd2FyZTogZXJyb3IgPSAlZFxuIiwKKwkJCV9fZnVuY19fLCBlcnIpOwogCQlnb3RvIHdyYXBlcnI7CiAJfQogCkBAIC0yNTQsNyArMjU3LDcgQEAKIHsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTsKIAotCWluZm8oIiVzIHN0YXJ0IiwgX19mdW5jX18pOworCWRldl9pbmZvKCZpbnRmLT5kZXYsICIlcyBzdGFydFxuIiwgX19mdW5jX18pOwogCiAJZW1pMjZfbG9hZF9maXJtd2FyZShkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMgYi9kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMKaW5kZXggNWQ4NTlkZS4uNjAyZWUwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvZW1pNjIuYwpAQCAtNzMsNyArNzMsNyBAQAogc3RhdGljIGludCBlbWk2Ml9zZXRfcmVzZXQgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgcmVzZXRfYml0KQogewogCWludCByZXNwb25zZTsKLQlpbmZvKCIlcyAtICVkIiwgX19mdW5jX18sIHJlc2V0X2JpdCk7CisJZGV2X2luZm8oJmRldi0+ZGV2LCAiJXMgLSAlZFxuIiwgX19mdW5jX18sIHJlc2V0X2JpdCk7CiAJCiAJcmVzcG9uc2UgPSBlbWk2Ml93cml0ZW1lbW9yeSAoZGV2LCBDUFVDU19SRUcsICZyZXNldF9iaXQsIDEsIDB4YTApOwogCWlmIChyZXNwb25zZSA8IDApIHsKQEAgLTI3MSw3ICsyNzEsNyBAQAogCXN0cnVjdCB1c2JfZGV2aWNlICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOwogCWRldl9kYmcoJmludGYtPmRldiwgImVtaTYyX3Byb2JlXG4iKTsKIAotCWluZm8oIiVzIHN0YXJ0IiwgX19mdW5jX18pOworCWRldl9pbmZvKCZpbnRmLT5kZXYsICIlcyBzdGFydFxuIiwgX19mdW5jX18pOwogCiAJZW1pNjJfbG9hZF9maXJtd2FyZShkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2Z0ZGktZWxhbi5jIGIvZHJpdmVycy91c2IvbWlzYy9mdGRpLWVsYW4uYwppbmRleCA5N2MyODA5Li43OWE3NjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2Z0ZGktZWxhbi5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvZnRkaS1lbGFuLmMKQEAgLTY5OCw3ICs2OTgsNyBAQAogICAgICAgICAgICAgICAgIGludCByZXR2YWwgPSB1c2JfYnVsa19tc2coZnRkaS0+dWRldiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9yY3ZidWxrcGlwZShmdGRpLT51ZGV2LCBmdGRpLT5idWxrX2luX2VuZHBvaW50QWRkciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnRkaS0+YnVsa19pbl9idWZmZXIsIGZ0ZGktPmJ1bGtfaW5fc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZwYWNrZXRfYnl0ZXMsIG1zZWNzX3RvX2ppZmZpZXMoNTApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICZwYWNrZXRfYnl0ZXMsIDUwKTsKICAgICAgICAgICAgICAgICBpZiAocGFja2V0X2J5dGVzID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgZnRkaS0+YnVsa19pbl9sZWZ0ID0gcGFja2V0X2J5dGVzIC0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgIGZ0ZGktPmJ1bGtfaW5fbGFzdCA9IDE7CkBAIC05NjAsNyArOTYwLDcgQEAKICAgICAgICAgICAgICAgICBpbnQgcmV0dmFsID0gdXNiX2J1bGtfbXNnKGZ0ZGktPnVkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICB1c2JfcmN2YnVsa3BpcGUoZnRkaS0+dWRldiwgZnRkaS0+YnVsa19pbl9lbmRwb2ludEFkZHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGZ0ZGktPmJ1bGtfaW5fYnVmZmVyLCBmdGRpLT5idWxrX2luX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAmcGFja2V0X2J5dGVzLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgJnBhY2tldF9ieXRlcywgNTAwKTsKICAgICAgICAgICAgICAgICBjaGFyIGRpYWdbMzAgKjMgKyA0XTsKICAgICAgICAgICAgICAgICBjaGFyICpkID0gZGlhZzsKICAgICAgICAgICAgICAgICBpbnQgbSA9IHBhY2tldF9ieXRlczsKQEAgLTE4ODAsNyArMTg4MCw3IEBACiAgICAgICAgICAgICAgICAgaW50IHJldHZhbCA9IHVzYl9idWxrX21zZyhmdGRpLT51ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JjdmJ1bGtwaXBlKGZ0ZGktPnVkZXYsIGZ0ZGktPmJ1bGtfaW5fZW5kcG9pbnRBZGRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBmdGRpLT5idWxrX2luX2J1ZmZlciwgZnRkaS0+YnVsa19pbl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgJnBhY2tldF9ieXRlcywgbXNlY3NfdG9famlmZmllcygxMDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICZwYWNrZXRfYnl0ZXMsIDEwMCk7CiAgICAgICAgICAgICAgICAgaWYgKHBhY2tldF9ieXRlcyA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGlhZ1szMCAqMyArIDRdOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZCA9IGRpYWc7CkBAIC0yMDY3LDcgKzIwNjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JfcmN2YnVsa3BpcGUoZnRkaS0+dWRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnRkaS0+YnVsa19pbl9lbmRwb2ludEFkZHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdGRpLT5idWxrX2luX2J1ZmZlciwgZnRkaS0+YnVsa19pbl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFja2V0X2J5dGVzLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFja2V0X2J5dGVzLCA1MDApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2tldF9ieXRlcyA+IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkaWFnWzMwICozICsgNF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmQgPSBkaWFnOwpAQCAtMjE3Niw3ICsyMTc2LDcgQEAKICAgICAgICAgICAgICAgICBpbnQgcmV0dmFsID0gdXNiX2J1bGtfbXNnKGZ0ZGktPnVkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICB1c2JfcmN2YnVsa3BpcGUoZnRkaS0+dWRldiwgZnRkaS0+YnVsa19pbl9lbmRwb2ludEFkZHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGZ0ZGktPmJ1bGtfaW5fYnVmZmVyLCBmdGRpLT5idWxrX2luX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAmcGFja2V0X2J5dGVzLCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICZwYWNrZXRfYnl0ZXMsIDEwMDApOwogICAgICAgICAgICAgICAgIGlmIChwYWNrZXRfYnl0ZXMgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRpYWdbMzAgKjMgKyA0XTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmQgPSBkaWFnOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9pZG1vdXNlLmMgYi9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYwppbmRleCA0YmNmN2ZiLi42ZGE4ODg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2lkbW91c2UuYwpAQCAtNDAzLDE0ICs0MDMsMTUgQEAKIAkJbXV0ZXhfdW5sb2NrKCZkZXYtPmxvY2spOwogCX0KIAotCWluZm8oIiVzIGRpc2Nvbm5lY3RlZCIsIERSSVZFUl9ERVNDKTsKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJkaXNjb25uZWN0ZWRcbiIpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB1c2JfaWRtb3VzZV9pbml0KHZvaWQpCiB7CiAJaW50IHJlc3VsdDsKIAotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJLyogcmVnaXN0ZXIgdGhpcyBkcml2ZXIgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbSAqLwogCXJlc3VsdCA9IHVzYl9yZWdpc3RlcigmaWRtb3VzZV9kcml2ZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9sZWdvdXNidG93ZXIuYyBiL2RyaXZlcnMvdXNiL21pc2MvbGVnb3VzYnRvd2VyLmMKaW5kZXggOTM3MDMyNi4uYWIwZjMyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9sZWdvdXNidG93ZXIuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2xlZ291c2J0b3dlci5jCkBAIC04NTEsOSArODUxLDggQEAKIAogCWRiZygyLCAiJXM6IGVudGVyIiwgX19mdW5jX18pOwogCi0JaWYgKHVkZXYgPT0gTlVMTCkgewotCQlpbmZvICgidWRldiBpcyBOVUxMLiIpOwotCX0KKwlpZiAodWRldiA9PSBOVUxMKQorCQlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJ1ZGV2IGlzIE5VTEwuXG4iKTsKIAogCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3Igb3VyIGRldmljZSBzdGF0ZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogCkBAIC05NTQsNyArOTUzLDkgQEAKIAlkZXYtPm1pbm9yID0gaW50ZXJmYWNlLT5taW5vcjsKIAogCS8qIGxldCB0aGUgdXNlciBrbm93IHdoYXQgbm9kZSB0aGlzIGRldmljZSBpcyBub3cgYXR0YWNoZWQgdG8gKi8KLQlpbmZvICgiTEVHTyBVU0IgVG93ZXIgIyVkIG5vdyBhdHRhY2hlZCB0byBtYWpvciAlZCBtaW5vciAlZCIsIChkZXYtPm1pbm9yIC0gTEVHT19VU0JfVE9XRVJfTUlOT1JfQkFTRSksIFVTQl9NQUpPUiwgZGV2LT5taW5vcik7CisJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiTEVHTyBVU0IgVG93ZXIgIyVkIG5vdyBhdHRhY2hlZCB0byBtYWpvciAiCisJCSAiJWQgbWlub3IgJWRcbiIsIChkZXYtPm1pbm9yIC0gTEVHT19VU0JfVE9XRVJfTUlOT1JfQkFTRSksCisJCSBVU0JfTUFKT1IsIGRldi0+bWlub3IpOwogCiAJLyogZ2V0IHRoZSBmaXJtd2FyZSB2ZXJzaW9uIGFuZCBsb2cgaXQgKi8KIAlyZXN1bHQgPSB1c2JfY29udHJvbF9tc2cgKHVkZXYsCkBAIC05NzEsMTAgKzk3MiwxMCBAQAogCQlyZXR2YWwgPSByZXN1bHQ7CiAJCWdvdG8gZXJyb3I7CiAJfQotCWluZm8oIkxFR08gVVNCIFRvd2VyIGZpcm13YXJlIHZlcnNpb24gaXMgJWQuJWQgYnVpbGQgJWQiLAotCSAgICAgZ2V0X3ZlcnNpb25fcmVwbHkubWFqb3IsCi0JICAgICBnZXRfdmVyc2lvbl9yZXBseS5taW5vciwKLQkgICAgIGxlMTZfdG9fY3B1KGdldF92ZXJzaW9uX3JlcGx5LmJ1aWxkX25vKSk7CisJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiTEVHTyBVU0IgVG93ZXIgZmlybXdhcmUgdmVyc2lvbiBpcyAlZC4lZCAiCisJCSAiYnVpbGQgJWRcbiIsIGdldF92ZXJzaW9uX3JlcGx5Lm1ham9yLAorCQkgZ2V0X3ZlcnNpb25fcmVwbHkubWlub3IsCisJCSBsZTE2X3RvX2NwdShnZXRfdmVyc2lvbl9yZXBseS5idWlsZF9ubykpOwogCiAKIGV4aXQ6CkBAIC0xMDIxLDcgKzEwMjIsOCBAQAogCQltdXRleF91bmxvY2soJmRldi0+bG9jayk7CiAJfQogCi0JaW5mbygiTEVHTyBVU0IgVG93ZXIgIyVkIG5vdyBkaXNjb25uZWN0ZWQiLCAobWlub3IgLSBMRUdPX1VTQl9UT1dFUl9NSU5PUl9CQVNFKSk7CisJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiTEVHTyBVU0IgVG93ZXIgIyVkIG5vdyBkaXNjb25uZWN0ZWRcbiIsCisJCSAobWlub3IgLSBMRUdPX1VTQl9UT1dFUl9NSU5PUl9CQVNFKSk7CiAKIAlkYmcoMiwgIiVzOiBsZWF2ZSIsIF9fZnVuY19fKTsKIH0KQEAgLTEwNDYsNyArMTA0OCw4IEBACiAJCWdvdG8gZXhpdDsKIAl9CiAKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAogZXhpdDoKIAlkYmcoMiwgIiVzOiBsZWF2ZSwgcmV0dXJuIHZhbHVlICVkIiwgX19mdW5jX18sIHJldHZhbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3JpbzUwMC5jIGIvZHJpdmVycy91c2IvbWlzYy9yaW81MDAuYwppbmRleCAyNDhhMTJhLi5kZWI5NWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3JpbzUwMC5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvcmlvNTAwLmMKQEAgLTg5LDcgKzg5LDcgQEAKIAogCW11dGV4X3VubG9jaygmKHJpby0+bG9jaykpOwogCi0JaW5mbygiUmlvIG9wZW5lZC4iKTsKKwlkZXZfaW5mbygmcmlvLT5yaW9fZGV2LT5kZXYsICJSaW8gb3BlbmVkLlxuIik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQAogCiAJcmlvLT5pc29wZW4gPSAwOwogCi0JaW5mbygiUmlvIGNsb3NlZC4iKTsKKwlkZXZfaW5mbygmcmlvLT5yaW9fZGV2LT5kZXYsICJSaW8gY2xvc2VkLlxuIik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQAogCXN0cnVjdCByaW9fdXNiX2RhdGEgKnJpbyA9ICZyaW9faW5zdGFuY2U7CiAJaW50IHJldHZhbDsKIAotCWluZm8oIlVTQiBSaW8gZm91bmQgYXQgYWRkcmVzcyAlZCIsIGRldi0+ZGV2bnVtKTsKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiVVNCIFJpbyBmb3VuZCBhdCBhZGRyZXNzICVkXG4iLCBkZXYtPmRldm51bSk7CiAKIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2KGludGYsICZ1c2JfcmlvX2NsYXNzKTsKIAlpZiAocmV0dmFsKSB7CkBAIC01MDMsNyArNTAzLDcgQEAKIAkJa2ZyZWUocmlvLT5pYnVmKTsKIAkJa2ZyZWUocmlvLT5vYnVmKTsKIAotCQlpbmZvKCJVU0IgUmlvIGRpc2Nvbm5lY3RlZC4iKTsKKwkJZGV2X2luZm8oJmludGYtPmRldiwgIlVTQiBSaW8gZGlzY29ubmVjdGVkLlxuIik7CiAKIAkJcmlvLT5wcmVzZW50ID0gMDsKIAkJbXV0ZXhfdW5sb2NrKCYocmlvLT5sb2NrKSk7CkBAIC01MzEsNyArNTMxLDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIG91dDsKIAotCWluZm8oRFJJVkVSX1ZFUlNJT04gIjoiIERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiBvdXQ6CiAJcmV0dXJuIHJldHZhbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdHJhbmNldmlicmF0b3IuYyBiL2RyaXZlcnMvdXNiL21pc2MvdHJhbmNldmlicmF0b3IuYwppbmRleCAwMzM2OGVkLi4yZTE0MTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3RyYW5jZXZpYnJhdG9yLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy90cmFuY2V2aWJyYXRvci5jCkBAIC0xNDQsNyArMTQ0LDggQEAKIAkJcmV0dXJuIHJldHZhbDsKIAl9CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2JsY2QuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNibGNkLmMKaW5kZXggMmRiNDIyOC4uZTBmZjljYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2JsY2QuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL3VzYmxjZC5jCkBAIC0zMTEsNyArMzExLDcgQEAKIAlkZXYtPmludGVyZmFjZSA9IGludGVyZmFjZTsKIAogCWlmIChsZTE2X3RvX2NwdShkZXYtPnVkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KSAhPSAweDAwMDEpIHsKLQkJd2FybihLRVJOX0lORk8gIlVTQkxDRCBtb2RlbCBub3Qgc3VwcG9ydGVkLiIpOworCQlkZXZfd2FybigmaW50ZXJmYWNlLT5kZXYsICJVU0JMQ0QgbW9kZWwgbm90IHN1cHBvcnRlZC5cbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAJCkBAIC0zNTksMTIgKzM1OSwxMyBAQAogCiAJaSA9IGxlMTZfdG9fY3B1KGRldi0+dWRldi0+ZGVzY3JpcHRvci5iY2REZXZpY2UpOwogCi0JaW5mbygiVVNCTENEIFZlcnNpb24gJTFkJTFkLiUxZCUxZCBmb3VuZCBhdCBhZGRyZXNzICVkIiwKLQkJKGkgJiAweEYwMDApPj4xMiwoaSAmIDB4RjAwKT4+OCwoaSAmIDB4RjApPj40LChpICYgMHhGKSwKLQkJZGV2LT51ZGV2LT5kZXZudW0pOworCWRldl9pbmZvKCZpbnRlcmZhY2UtPmRldiwgIlVTQkxDRCBWZXJzaW9uICUxZCUxZC4lMWQlMWQgZm91bmQgIgorCQkgImF0IGFkZHJlc3MgJWRcbiIsIChpICYgMHhGMDAwKT4+MTIsIChpICYgMHhGMDApPj44LAorCQkgKGkgJiAweEYwKT4+NCwoaSAmIDB4RiksIGRldi0+dWRldi0+ZGV2bnVtKTsKIAogCS8qIGxldCB0aGUgdXNlciBrbm93IHdoYXQgbm9kZSB0aGlzIGRldmljZSBpcyBub3cgYXR0YWNoZWQgdG8gKi8KLQlpbmZvKCJVU0IgTENEIGRldmljZSBub3cgYXR0YWNoZWQgdG8gVVNCTENELSVkIiwgaW50ZXJmYWNlLT5taW5vcik7CisJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiVVNCIExDRCBkZXZpY2Ugbm93IGF0dGFjaGVkIHRvIFVTQkxDRC0lZFxuIiwKKwkJIGludGVyZmFjZS0+bWlub3IpOwogCXJldHVybiAwOwogCiBlcnJvcjoKQEAgLTQxMyw3ICs0MTQsNyBAQAogCS8qIGRlY3JlbWVudCBvdXIgdXNhZ2UgY291bnQgKi8KIAlrcmVmX3B1dCgmZGV2LT5rcmVmLCBsY2RfZGVsZXRlKTsKIAotCWluZm8oIlVTQiBMQ0QgIyVkIG5vdyBkaXNjb25uZWN0ZWQiLCBtaW5vcik7CisJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiVVNCIExDRCAjJWQgbm93IGRpc2Nvbm5lY3RlZFxuIiwgbWlub3IpOwogfQogCiBzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbGNkX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNic2V2c2VnLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYnNldnNlZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YTZhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9taXNjL3VzYnNldnNlZy5jCkBAIC0wLDAgKzEsMzk0IEBACisvKgorICogVVNCIDcgU2VnbWVudCBEcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSGFycmlzb24gTWV0emdlciA8aGFycmlzb25tZXR6QGdtYWlsLmNvbT4KKyAqIEJhc2VkIG9uIHVzYmxlZC5jIGJ5IEdyZWcgS3JvYWgtSGFydG1hbiAoZ3JlZ0Brcm9haC5jb20pCisgKgorICoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICoJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqCXB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB2ZXJzaW9uIDIuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisKKworI2RlZmluZSBEUklWRVJfQVVUSE9SICJIYXJyaXNvbiBNZXR6Z2VyIDxoYXJyaXNvbm1ldHpAZ21haWwuY29tPiIKKyNkZWZpbmUgRFJJVkVSX0RFU0MgIlVTQiA3IFNlZ21lbnQgRHJpdmVyIgorCisjZGVmaW5lIFZFTkRPUl9JRAkweDBmYzUKKyNkZWZpbmUgUFJPRFVDVF9JRAkweDEyMjcKKyNkZWZpbmUgTUFYTEVOCQk2CisKKy8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi8KK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0geworCXsgVVNCX0RFVklDRShWRU5ET1JfSUQsIFBST0RVQ1RfSUQpIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CisKKy8qIHRoZSBkaWZmZXJlbnQgdGV4dCBkaXNwbGF5IG1vZGVzIHRoZSBkZXZpY2UgaXMgY2FwYWJsZSBvZiAqLworc3RhdGljIGNoYXIgKmRpc3BsYXlfdGV4dG1vZGVzW10gPSB7InJhdyIsICJoZXgiLCAiYXNjaWkiLCBOVUxMfTsKKworc3RydWN0IHVzYl9zZXZzZWdkZXYgeworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OworCisJdTggcG93ZXJlZDsKKwl1OCBtb2RlX21zYjsKKwl1OCBtb2RlX2xzYjsKKwl1OCBkZWNpbWFsc1tNQVhMRU5dOworCXU4IHRleHRtb2RlOworCXU4IHRleHRbTUFYTEVOXTsKKwl1MTYgdGV4dGxlbmd0aDsKK307CisKKy8qIHN5c2ZzX3N0cmVxIGNhbid0IHJlcGxhY2UgdGhpcyBjb21wbGV0ZWx5CisgKiBJZiB0aGUgZGV2aWNlIHdhcyBpbiBoZXggbW9kZSwgYW5kIHRoZSB1c2VyIHdhbnRlZCBhIDAsCisgKiBpZiBzdHIgY29tbWFuZHMgYXJlIHVzZWQsIHdlIHdvdWxkIGFzc3VtZSB0aGUgZW5kIG9mIHN0cmluZworICogc28gbWVtIGNvbW1hbmRzIGFyZSB1c2VkLgorICovCitpbmxpbmUgc2l6ZV90IG15X21lbWxlbihjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpZiAoY291bnQgPiAwICYmIGJ1Zltjb3VudC0xXSA9PSAnXG4nKQorCQlyZXR1cm4gY291bnQgLSAxOworCWVsc2UKKwkJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfZGlzcGxheV9wb3dlcmVkKHN0cnVjdCB1c2Jfc2V2c2VnZGV2ICpteWRldikKK3sKKwlpbnQgcmM7CisKKwlyYyA9IHVzYl9jb250cm9sX21zZyhteWRldi0+dWRldiwKKwkJCXVzYl9zbmRjdHJscGlwZShteWRldi0+dWRldiwgMCksCisJCQkweDEyLAorCQkJMHg0OCwKKwkJCSg4MCAqIDB4MTAwKSArIDEwLCAvKiAgKHBvd2VyIG1vZGUpICovCisJCQkoMHgwMCAqIDB4MTAwKSArIChteWRldi0+cG93ZXJlZCA/IDEgOiAwKSwKKwkJCU5VTEwsCisJCQkwLAorCQkJMjAwMCk7CisJaWYgKHJjIDwgMCkKKwkJZGV2X2RiZygmbXlkZXYtPnVkZXYtPmRldiwgInBvd2VyIHJldHZhbCA9ICVkXG4iLCByYyk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9kaXNwbGF5X21vZGUoc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2KQoreworCWludCByYzsKKworCXJjID0gdXNiX2NvbnRyb2xfbXNnKG15ZGV2LT51ZGV2LAorCQkJdXNiX3NuZGN0cmxwaXBlKG15ZGV2LT51ZGV2LCAwKSwKKwkJCTB4MTIsCisJCQkweDQ4LAorCQkJKDgyICogMHgxMDApICsgMTAsIC8qIChzZXQgbW9kZSkgKi8KKwkJCShteWRldi0+bW9kZV9tc2IgKiAweDEwMCkgKyBteWRldi0+bW9kZV9sc2IsCisJCQlOVUxMLAorCQkJMCwKKwkJCTIwMDApOworCisJaWYgKHJjIDwgMCkKKwkJZGV2X2RiZygmbXlkZXYtPnVkZXYtPmRldiwgIm1vZGUgcmV0dmFsID0gJWRcbiIsIHJjKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2Rpc3BsYXlfdmlzdWFsKHN0cnVjdCB1c2Jfc2V2c2VnZGV2ICpteWRldikKK3sKKwlpbnQgcmM7CisJaW50IGk7CisJdW5zaWduZWQgY2hhciAqYnVmZmVyOworCXU4IGRlY2ltYWxzID0gMDsKKworCWJ1ZmZlciA9IGt6YWxsb2MoTUFYTEVOLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikgeworCQlkZXZfZXJyKCZteWRldi0+dWRldi0+ZGV2LCAib3V0IG9mIG1lbW9yeVxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBUaGUgZGV2aWNlIGlzIHJpZ2h0IHRvIGxlZnQsIHdoZXJlIGFzIHlvdSB3cml0ZSBsZWZ0IHRvIHJpZ2h0ICovCisJZm9yIChpID0gMDsgaSA8IG15ZGV2LT50ZXh0bGVuZ3RoOyBpKyspCisJCWJ1ZmZlcltpXSA9IG15ZGV2LT50ZXh0W215ZGV2LT50ZXh0bGVuZ3RoLTEtaV07CisKKwlyYyA9IHVzYl9jb250cm9sX21zZyhteWRldi0+dWRldiwKKwkJCXVzYl9zbmRjdHJscGlwZShteWRldi0+dWRldiwgMCksCisJCQkweDEyLAorCQkJMHg0OCwKKwkJCSg4NSAqIDB4MTAwKSArIDEwLCAvKiAod3JpdGUgdGV4dCkgKi8KKwkJCSgwICogMHgxMDApICsgbXlkZXYtPnRleHRtb2RlLCAvKiBtb2RlICAqLworCQkJYnVmZmVyLAorCQkJbXlkZXYtPnRleHRsZW5ndGgsCisJCQkyMDAwKTsKKworCWlmIChyYyA8IDApCisJCWRldl9kYmcoJm15ZGV2LT51ZGV2LT5kZXYsICJ3cml0ZSByZXR2YWwgPSAlZFxuIiwgcmMpOworCisJa2ZyZWUoYnVmZmVyKTsKKworCS8qIFRoZSBkZXZpY2UgaXMgcmlnaHQgdG8gbGVmdCwgd2hlcmUgYXMgeW91IHdyaXRlIGxlZnQgdG8gcmlnaHQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKG15ZGV2LT5kZWNpbWFscyk7IGkrKykKKwkJZGVjaW1hbHMgfD0gbXlkZXYtPmRlY2ltYWxzW2ldIDw8IGk7CisKKwlyYyA9IHVzYl9jb250cm9sX21zZyhteWRldi0+dWRldiwKKwkJCXVzYl9zbmRjdHJscGlwZShteWRldi0+dWRldiwgMCksCisJCQkweDEyLAorCQkJMHg0OCwKKwkJCSg4NiAqIDB4MTAwKSArIDEwLCAvKiAoc2V0IGRlY2ltYWwpICovCisJCQkoMCAqIDB4MTAwKSArIGRlY2ltYWxzLCAvKiBkZWNpbWFscyAqLworCQkJTlVMTCwKKwkJCTAsCisJCQkyMDAwKTsKKworCWlmIChyYyA8IDApCisJCWRldl9kYmcoJm15ZGV2LT51ZGV2LT5kZXYsICJkZWNpbWFsIHJldHZhbCA9ICVkXG4iLCByYyk7Cit9CisKKyNkZWZpbmUgTVlERVZfQVRUUl9TSU1QTEVfVU5TSUdORUQobmFtZSwgdXBkYXRlX2ZjbikJCVwKK3N0YXRpYyBzc2l6ZV90IHNob3dfYXR0cl8jI25hbWUoc3RydWN0IGRldmljZSAqZGV2LCAJCVwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKSAJCVwKK3sJCQkJCQkJCVwKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsJXAorCXN0cnVjdCB1c2Jfc2V2c2VnZGV2ICpteWRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CVwKKwkJCQkJCQkJXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBteWRldi0+bmFtZSk7CQlcCit9CQkJCQkJCQlcCisJCQkJCQkJCVwKK3N0YXRpYyBzc2l6ZV90IHNldF9hdHRyXyMjbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIAkJXAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkgXAorewkJCQkJCQkJXAorCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwlcCisJc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJXAorCQkJCQkJCQlcCisJbXlkZXYtPm5hbWUgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsJCVwKKwl1cGRhdGVfZmNuKG15ZGV2KTsgXAorCQkJCQkJCQlcCisJcmV0dXJuIGNvdW50OwkJCQkJCVwKK30JCQkJCQkJCVwKK3N0YXRpYyBERVZJQ0VfQVRUUihuYW1lLCBTX0lXVUdPIHwgU19JUlVHTywgc2hvd19hdHRyXyMjbmFtZSwgc2V0X2F0dHJfIyNuYW1lKTsKKworc3RhdGljIHNzaXplX3Qgc2hvd19hdHRyX3RleHQoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CisJc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKworCXJldHVybiBzbnByaW50ZihidWYsIG15ZGV2LT50ZXh0bGVuZ3RoLCAiJXNcbiIsIG15ZGV2LT50ZXh0KTsKK30KKworc3RhdGljIHNzaXplX3Qgc2V0X2F0dHJfdGV4dChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOworCXN0cnVjdCB1c2Jfc2V2c2VnZGV2ICpteWRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CisJc2l6ZV90IGVuZCA9IG15X21lbWxlbihidWYsIGNvdW50KTsKKworCWlmIChlbmQgPiBzaXplb2YobXlkZXYtPnRleHQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1lbXNldChteWRldi0+dGV4dCwgMCwgc2l6ZW9mKG15ZGV2LT50ZXh0KSk7CisJbXlkZXYtPnRleHRsZW5ndGggPSBlbmQ7CisKKwlpZiAoZW5kID4gMCkKKwkJbWVtY3B5KG15ZGV2LT50ZXh0LCBidWYsIGVuZCk7CisKKwl1cGRhdGVfZGlzcGxheV92aXN1YWwobXlkZXYpOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIERFVklDRV9BVFRSKHRleHQsIFNfSVdVR08gfCBTX0lSVUdPLCBzaG93X2F0dHJfdGV4dCwgc2V0X2F0dHJfdGV4dCk7CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfYXR0cl9kZWNpbWFscyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsKKwlzdHJ1Y3QgdXNiX3NldnNlZ2RldiAqbXlkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCWludCBpOworCWludCBwb3M7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKG15ZGV2LT5kZWNpbWFscyk7IGkrKykgeworCQlwb3MgPSBzaXplb2YobXlkZXYtPmRlY2ltYWxzKSAtIDEgLSBpOworCQlpZiAobXlkZXYtPmRlY2ltYWxzW2ldID09IDApCisJCQlidWZbcG9zXSA9ICcwJzsKKwkJZWxzZSBpZiAobXlkZXYtPmRlY2ltYWxzW2ldID09IDEpCisJCQlidWZbcG9zXSA9ICcxJzsKKwkJZWxzZQorCQkJYnVmW3Bvc10gPSAneCc7CisJfQorCisJYnVmW3NpemVvZihteWRldi0+ZGVjaW1hbHMpXSA9ICdcbic7CisJcmV0dXJuIHNpemVvZihteWRldi0+ZGVjaW1hbHMpICsgMTsKK30KKworc3RhdGljIHNzaXplX3Qgc2V0X2F0dHJfZGVjaW1hbHMoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsKKwlzdHJ1Y3QgdXNiX3NldnNlZ2RldiAqbXlkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXNpemVfdCBlbmQgPSBteV9tZW1sZW4oYnVmLCBjb3VudCk7CisJaW50IGk7CisKKwlpZiAoZW5kID4gc2l6ZW9mKG15ZGV2LT5kZWNpbWFscykpCisJCXJldHVybiAtRUlOVkFMOworCisJZm9yIChpID0gMDsgaSA8IGVuZDsgaSsrKQorCQlpZiAoYnVmW2ldICE9ICcwJyAmJiBidWZbaV0gIT0gJzEnKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwltZW1zZXQobXlkZXYtPmRlY2ltYWxzLCAwLCBzaXplb2YobXlkZXYtPmRlY2ltYWxzKSk7CisJZm9yIChpID0gMDsgaSA8IGVuZDsgaSsrKQorCQlpZiAoYnVmW2ldID09ICcxJykKKwkJCW15ZGV2LT5kZWNpbWFsc1tlbmQtMS1pXSA9IDE7CisKKwl1cGRhdGVfZGlzcGxheV92aXN1YWwobXlkZXYpOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgREVWSUNFX0FUVFIoZGVjaW1hbHMsIFNfSVdVR08gfCBTX0lSVUdPLAorCXNob3dfYXR0cl9kZWNpbWFscywgc2V0X2F0dHJfZGVjaW1hbHMpOworCitzdGF0aWMgc3NpemVfdCBzaG93X2F0dHJfdGV4dG1vZGUoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CisJc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKwlpbnQgaTsKKworCWJ1ZlswXSA9IDA7CisKKwlmb3IgKGkgPSAwOyBkaXNwbGF5X3RleHRtb2Rlc1tpXTsgaSsrKSB7CisJCWlmIChteWRldi0+dGV4dG1vZGUgPT0gaSkgeworCQkJc3RyY2F0KGJ1ZiwgIiBbIik7CisJCQlzdHJjYXQoYnVmLCBkaXNwbGF5X3RleHRtb2Rlc1tpXSk7CisJCQlzdHJjYXQoYnVmLCAiXSAiKTsKKwkJfSBlbHNlIHsKKwkJCXN0cmNhdChidWYsICIgIik7CisJCQlzdHJjYXQoYnVmLCBkaXNwbGF5X3RleHRtb2Rlc1tpXSk7CisJCQlzdHJjYXQoYnVmLCAiICIpOworCQl9CisJfQorCXN0cmNhdChidWYsICJcbiIpOworCisKKwlyZXR1cm4gc3RybGVuKGJ1Zik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNldF9hdHRyX3RleHRtb2RlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CisJc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGRpc3BsYXlfdGV4dG1vZGVzW2ldOyBpKyspIHsKKwkJaWYgKHN5c2ZzX3N0cmVxKGRpc3BsYXlfdGV4dG1vZGVzW2ldLCBidWYpKSB7CisJCQlteWRldi0+dGV4dG1vZGUgPSBpOworCQkJdXBkYXRlX2Rpc3BsYXlfdmlzdWFsKG15ZGV2KTsKKwkJCXJldHVybiBjb3VudDsKKwkJfQorCX0KKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgREVWSUNFX0FUVFIodGV4dG1vZGUsIFNfSVdVR08gfCBTX0lSVUdPLAorCXNob3dfYXR0cl90ZXh0bW9kZSwgc2V0X2F0dHJfdGV4dG1vZGUpOworCisKK01ZREVWX0FUVFJfU0lNUExFX1VOU0lHTkVEKHBvd2VyZWQsIHVwZGF0ZV9kaXNwbGF5X3Bvd2VyZWQpOworTVlERVZfQVRUUl9TSU1QTEVfVU5TSUdORUQobW9kZV9tc2IsIHVwZGF0ZV9kaXNwbGF5X21vZGUpOworTVlERVZfQVRUUl9TSU1QTEVfVU5TSUdORUQobW9kZV9sc2IsIHVwZGF0ZV9kaXNwbGF5X21vZGUpOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGV2X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX3Bvd2VyZWQuYXR0ciwKKwkmZGV2X2F0dHJfdGV4dC5hdHRyLAorCSZkZXZfYXR0cl90ZXh0bW9kZS5hdHRyLAorCSZkZXZfYXR0cl9kZWNpbWFscy5hdHRyLAorCSZkZXZfYXR0cl9tb2RlX21zYi5hdHRyLAorCSZkZXZfYXR0cl9tb2RlX2xzYi5hdHRyLAorCU5VTEwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRldl9hdHRyX2dycCA9IHsKKwkuYXR0cnMgPSBkZXZfYXR0cnMsCit9OworCitzdGF0aWMgaW50IHNldnNlZ19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAorCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTsKKwlzdHJ1Y3QgdXNiX3NldnNlZ2RldiAqbXlkZXYgPSBOVUxMOworCWludCByYyA9IC1FTk9NRU07CisKKwlteWRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB1c2Jfc2V2c2VnZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKG15ZGV2ID09IE5VTEwpIHsKKwkJZGV2X2VycigmaW50ZXJmYWNlLT5kZXYsICJPdXQgb2YgbWVtb3J5XG4iKTsKKwkJZ290byBlcnJvcl9tZW07CisJfQorCisJbXlkZXYtPnVkZXYgPSB1c2JfZ2V0X2Rldih1ZGV2KTsKKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgbXlkZXYpOworCisJLypzZXQgZGVmYXVsdHMgKi8KKwlteWRldi0+dGV4dG1vZGUgPSAweDAyOyAvKiBhc2NpaSBtb2RlICovCisJbXlkZXYtPm1vZGVfbXNiID0gMHgwNjsgLyogNiBjaGFyYWN0ZXJzICovCisJbXlkZXYtPm1vZGVfbHNiID0gMHgzZjsgLyogc2Nhbm1vZGUgZm9yIDYgY2hhcnMgKi8KKworCXJjID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZpbnRlcmZhY2UtPmRldi5rb2JqLCAmZGV2X2F0dHJfZ3JwKTsKKwlpZiAocmMpCisJCWdvdG8gZXJyb3I7CisKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJVU0IgNyBTZWdtZW50IGRldmljZSBub3cgYXR0YWNoZWRcbiIpOworCXJldHVybiAwOworCitlcnJvcjoKKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7CisJdXNiX3B1dF9kZXYobXlkZXYtPnVkZXYpOworCWtmcmVlKG15ZGV2KTsKK2Vycm9yX21lbToKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIHNldnNlZ19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpCit7CisJc3RydWN0IHVzYl9zZXZzZWdkZXYgKm15ZGV2OworCisJbXlkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7CisJc3lzZnNfcmVtb3ZlX2dyb3VwKCZpbnRlcmZhY2UtPmRldi5rb2JqLCAmZGV2X2F0dHJfZ3JwKTsKKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7CisJdXNiX3B1dF9kZXYobXlkZXYtPnVkZXYpOworCWtmcmVlKG15ZGV2KTsKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJVU0IgNyBTZWdtZW50IG5vdyBkaXNjb25uZWN0ZWRcbiIpOworfQorCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc2V2c2VnX2RyaXZlciA9IHsKKwkubmFtZSA9CQkidXNic2V2c2VnIiwKKwkucHJvYmUgPQlzZXZzZWdfcHJvYmUsCisJLmRpc2Nvbm5lY3QgPQlzZXZzZWdfZGlzY29ubmVjdCwKKwkuaWRfdGFibGUgPQlpZF90YWJsZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHVzYl9zZXZzZWdfaW5pdCh2b2lkKQoreworCWludCByYyA9IDA7CisKKwlyYyA9IHVzYl9yZWdpc3Rlcigmc2V2c2VnX2RyaXZlcik7CisJaWYgKHJjKQorCQllcnIoInVzYl9yZWdpc3RlciBmYWlsZWQuIEVycm9yIG51bWJlciAlZCIsIHJjKTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2Jfc2V2c2VnX2V4aXQodm9pZCkKK3sKKwl1c2JfZGVyZWdpc3Rlcigmc2V2c2VnX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHVzYl9zZXZzZWdfaW5pdCk7Cittb2R1bGVfZXhpdCh1c2Jfc2V2c2VnX2V4aXQpOworCitNT0RVTEVfQVVUSE9SKERSSVZFUl9BVVRIT1IpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNzNzIwLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzczcyMC5jCmluZGV4IGYxMjU1YjAuLjlhNmMyN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvdXNzNzIwLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91c3M3MjAuYwpAQCAtMjI4LDExICsyMjgsMTIgQEAKIAkJcmV0ID0gcnEtPnVyYi0+c3RhdHVzOwogCQkqdmFsID0gcHJpdi0+cmVnWyhyZWcgPj0gOSkgPyAwIDogcmVnaW5kZXhbcmVnXV07CiAJCWlmIChyZXQpCi0JCQl3YXJuKCJnZXRfMTI4NF9yZWdpc3RlcjogdXNiIGVycm9yICVkIiwgcmV0KTsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgImdldF8xMjg0X3JlZ2lzdGVyOiAiCisJCQkgICAgICAgInVzYiBlcnJvciAlZFxuIiwgcmV0KTsKIAkJa3JlZl9wdXQoJnJxLT5yZWZfY291bnQsIGRlc3Ryb3lfYXN5bmMpOwogCQlyZXR1cm4gcmV0OwogCX0KLQl3YXJuKCJnZXRfMTI4NF9yZWdpc3RlciB0aW1lb3V0Iik7CisJcHJpbnRrKEtFUk5fV0FSTklORyAiZ2V0XzEyODRfcmVnaXN0ZXIgdGltZW91dFxuIik7CiAJa2lsbF9hbGxfYXN5bmNfcmVxdWVzdHNfcHJpdihwcml2KTsKIAlyZXR1cm4gLUVJTzsKIH0KQEAgLTcxNiw3ICs3MTcsNyBAQAogCXNwaW5fbG9ja19pbml0KCZwcml2LT5hc3luY2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZwcml2LT5hc3luY2xpc3QpOwogCWlmICghKHBwID0gcGFycG9ydF9yZWdpc3Rlcl9wb3J0KDAsIFBBUlBPUlRfSVJRX05PTkUsIFBBUlBPUlRfRE1BX05PTkUsICZwYXJwb3J0X3VzczcyMF9vcHMpKSkgewotCQl3YXJuKCJjb3VsZCBub3QgcmVnaXN0ZXIgcGFycG9ydCIpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICJ1c3M3MjA6IGNvdWxkIG5vdCByZWdpc3RlciBwYXJwb3J0XG4iKTsKIAkJZ290byBwcm9iZV9hYm9ydDsKIAl9CiAKQEAgLTgwMCwxMCArODAxLDE0IEBACiAJaWYgKHJldHZhbCkKIAkJZ290byBvdXQ7CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7Ci0JaW5mbygiTk9URTogdGhpcyBpcyBhIHNwZWNpYWwgcHVycG9zZSBkcml2ZXIgdG8gYWxsb3cgbm9uc3RhbmRhcmQiKTsKLQlpbmZvKCJwcm90b2NvbHMgKGVnLiBiaXRiYW5nKSBvdmVyIFVTUzcyMCB1c2IgdG8gcGFyYWxsZWwgY2FibGVzIik7Ci0JaW5mbygiSWYgeW91IGp1c3Qgd2FudCB0byBjb25uZWN0IHRvIGEgcHJpbnRlciwgdXNlIHVzYmxwIGluc3RlYWQiKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogTk9URTogdGhpcyBpcyBhIHNwZWNpYWwgcHVycG9zZSAiCisJICAgICAgICJkcml2ZXIgdG8gYWxsb3cgbm9uc3RhbmRhcmRcbiIpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogcHJvdG9jb2xzIChlZy4gYml0YmFuZykgb3ZlciAiCisJICAgICAgICJVU1M3MjAgdXNiIHRvIHBhcmFsbGVsIGNhYmxlc1xuIik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiBJZiB5b3UganVzdCB3YW50IHRvIGNvbm5lY3QgdG8gYSAiCisJICAgICAgICJwcmludGVyLCB1c2UgdXNibHAgaW5zdGVhZFxuIik7CiBvdXQ6CiAJcmV0dXJuIHJldHZhbDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdnN0dXNiLmMgYi9kcml2ZXJzL3VzYi9taXNjL3ZzdHVzYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NDg0NzBjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy91c2IvbWlzYy92c3R1c2IuYwpAQCAtMCwwICsxLDc4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgRmlsZTogZHJpdmVycy91c2IvbWlzYy92c3R1c2IuYworICoKKyAqICBQdXJwb3NlOiBTdXBwb3J0IGZvciB0aGUgYnVsayBVU0IgVmVybmllciBTcGVjdHJvcGhvdG9tZXRlcnMKKyAqCisgKiAgQXV0aG9yOiAgICAgSm9obm5pZSBQZXRlcnMKKyAqICAgICAgICAgICAgICBBeGlhbiBDb25zdWx0aW5nCisgKiAgICAgICAgICAgICAgQmVhdmVydG9uLCBPUiwgVVNBIDk3MDA1CisgKgorICogIE1vZGlmaWVkIGJ5OiAgICAgRVF3YXJlIEVuZ2luZWVyaW5nLCBJbmMuCisgKiAgICAgICAgICAgICAgICAgICBPcmVnb24gQ2l0eSwgT1IsIFVTQSA5NzA0NQorICoKKyAqICBDb3B5cmlnaHQ6ICAyMDA3LCAyMDA4CisgKiAgICAgICAgICAgICAgVmVybmllciBTb2Z0d2FyZSAmIFRlY2hub2xvZ3kKKyAqICAgICAgICAgICAgICBCZWF2ZXJ0b24sIE9SLCBVU0EgOTcwMDUKKyAqCisgKiAgV2ViOiAgICAgICAgd3d3LnZlcm5pZXIuY29tCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorCisjaW5jbHVkZSA8bGludXgvdXNiL3ZzdHVzYi5oPgorCisjZGVmaW5lIERSSVZFUl9WRVJTSU9OICJWU1QgVVNCIERyaXZlciBWZXJzaW9uIDEuNSIKKyNkZWZpbmUgRFJJVkVSX0RFU0MgIlZlcm5pZXIgU29mdHdhcmUgVGVjaG5vbG9neSBCdWxrIFVTQiBEcml2ZXIiCisKKyNpZmRlZiBDT05GSUdfVVNCX0RZTkFNSUNfTUlOT1JTCisJI2RlZmluZSBWU1RVU0JfTUlOT1JfQkFTRQkwCisjZWxzZQorCSNkZWZpbmUgVlNUVVNCX01JTk9SX0JBU0UJMTk5CisjZW5kaWYKKworI2RlZmluZSBVU0JfVkVORE9SX09DRUFOT1BUSUNTCTB4MjQ1NworI2RlZmluZSBVU0JfVkVORE9SX1ZFUk5JRVIJMHgwOEY3CS8qIFZlcm5pZXIgU29mdHdhcmUgJiBUZWNobm9sb2d5ICovCisKKyNkZWZpbmUgVVNCX1BST0RVQ1RfVVNCMjAwMAkweDEwMDIKKyNkZWZpbmUgVVNCX1BST0RVQ1RfQURDMTAwMF9GVwkweDEwMDMJLyogZmlybXdhcmUgZG93bmxvYWQgKHJlbnVtZXJhdGVzKSAqLworI2RlZmluZSBVU0JfUFJPRFVDVF9BREMxMDAwCTB4MTAwNAorI2RlZmluZSBVU0JfUFJPRFVDVF9IUjIwMDBfRlcJMHgxMDA5CS8qIGZpcm13YXJlIGRvd25sb2FkIChyZW51bWVyYXRlcykgKi8KKyNkZWZpbmUgVVNCX1BST0RVQ1RfSFIyMDAwCTB4MTAwQQorI2RlZmluZSBVU0JfUFJPRFVDVF9IUjQwMDBfRlcJMHgxMDExCS8qIGZpcm13YXJlIGRvd25sb2FkIChyZW51bWVyYXRlcykgKi8KKyNkZWZpbmUgVVNCX1BST0RVQ1RfSFI0MDAwCTB4MTAxMgorI2RlZmluZSBVU0JfUFJPRFVDVF9VU0I2NTAJMHgxMDE0CS8qICJSZWQgVGlkZSIgKi8KKyNkZWZpbmUgVVNCX1BST0RVQ1RfUUU2NTAwMAkweDEwMTgKKyNkZWZpbmUgVVNCX1BST0RVQ1RfVVNCNDAwMAkweDEwMjIKKyNkZWZpbmUgVVNCX1BST0RVQ1RfVVNCMzI1CTB4MTAyNAkvKiAiVmVybmllciBTcGVjdHJvbWV0ZXIiICovCisKKyNkZWZpbmUgVVNCX1BST0RVQ1RfTEFCUFJPCTB4MDAwMQorI2RlZmluZSBVU0JfUFJPRFVDVF9MQUJRVUVTVAkweDAwMDUKKworI2RlZmluZSBWU1RfTUFYQlVGRkVSCQkoNjQqMTAyNCkKKworc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7CisJeyBVU0JfREVWSUNFKFVTQl9WRU5ET1JfT0NFQU5PUFRJQ1MsIFVTQl9QUk9EVUNUX1VTQjIwMDApfSwKKwl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9PQ0VBTk9QVElDUywgVVNCX1BST0RVQ1RfSFI0MDAwKX0sCisJeyBVU0JfREVWSUNFKFVTQl9WRU5ET1JfT0NFQU5PUFRJQ1MsIFVTQl9QUk9EVUNUX1VTQjY1MCl9LAorCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX09DRUFOT1BUSUNTLCBVU0JfUFJPRFVDVF9VU0I0MDAwKX0sCisJeyBVU0JfREVWSUNFKFVTQl9WRU5ET1JfT0NFQU5PUFRJQ1MsIFVTQl9QUk9EVUNUX1VTQjMyNSl9LAorCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX1ZFUk5JRVIsIFVTQl9QUk9EVUNUX0xBQlFVRVNUKX0sCisJeyBVU0JfREVWSUNFKFVTQl9WRU5ET1JfVkVSTklFUiwgVVNCX1BST0RVQ1RfTEFCUFJPKX0sCisJe30sCit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgaWRfdGFibGUpOworCitzdHJ1Y3QgdnN0dXNiX2RldmljZSB7CisJc3RydWN0IGtyZWYJCQkJa3JlZjsKKwlzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBsb2NrOworCXN0cnVjdCB1c2JfZGV2aWNlICAgICAgICp1c2JfZGV2OworCWNoYXIgICAgICAgICAgICAgICAgICAgIHByZXNlbnQ7CisJY2hhciAgICAgICAgICAgICAgICAgICAgaXNvcGVuOworCXN0cnVjdCB1c2JfYW5jaG9yICAgICAgIHN1Ym1pdHRlZDsKKwlpbnQgICAgICAgICAgICAgICAgICAgICByZF9waXBlOworCWludCAgICAgICAgICAgICAgICAgICAgIHJkX3RpbWVvdXRfbXM7CisJaW50ICAgICAgICAgICAgICAgICAgICAgd3JfcGlwZTsKKwlpbnQgICAgICAgICAgICAgICAgICAgICB3cl90aW1lb3V0X21zOworfTsKKyNkZWZpbmUgdG9fdnN0X2RldihkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IHZzdHVzYl9kZXZpY2UsIGtyZWYpCisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB2c3R1c2JfZHJpdmVyOworCitzdGF0aWMgdm9pZCB2c3R1c2JfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKQoreworCXN0cnVjdCB2c3R1c2JfZGV2aWNlICp2c3RkZXYgPSB0b192c3RfZGV2KGtyZWYpOworCisJdXNiX3B1dF9kZXYodnN0ZGV2LT51c2JfZGV2KTsKKwlrZnJlZSh2c3RkZXYpOworfQorCitzdGF0aWMgaW50IHZzdHVzYl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCB2c3R1c2JfZGV2aWNlICp2c3RkZXY7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTsKKworCWludGVyZmFjZSA9IHVzYl9maW5kX2ludGVyZmFjZSgmdnN0dXNiX2RyaXZlciwgaW1pbm9yKGlub2RlKSk7CisKKwlpZiAoIWludGVyZmFjZSkgeworCQlwcmludGsoS0VSTl9FUlIgS0JVSUxEX01PRE5BTUUKKwkJICAgICAgICI6ICVzIC0gZXJyb3IsIGNhbid0IGZpbmQgZGV2aWNlIGZvciBtaW5vciAlZFxuIiwKKwkJICAgICAgIF9fZnVuY19fLCBpbWlub3IoaW5vZGUpKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJdnN0ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpOworCisJaWYgKCF2c3RkZXYpCisJCXJldHVybiAtRU5PREVWOworCisJLyogbG9jayB0aGlzIGRldmljZSAqLworCW11dGV4X2xvY2soJnZzdGRldi0+bG9jayk7CisKKwkvKiBjYW4gb25seSBvcGVuIG9uZSB0aW1lICovCisJaWYgKCghdnN0ZGV2LT5wcmVzZW50KSB8fCAodnN0ZGV2LT5pc29wZW4pKSB7CisJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwkvKiBpbmNyZW1lbnQgb3VyIHVzYWdlIGNvdW50ICovCisJa3JlZl9nZXQoJnZzdGRldi0+a3JlZik7CisKKwl2c3RkZXYtPmlzb3BlbiA9IDE7CisKKwkvKiBzYXZlIGRldmljZSBpbiB0aGUgZmlsZSdzIHByaXZhdGUgc3RydWN0dXJlICovCisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gdnN0ZGV2OworCisJZGV2X2RiZygmdnN0ZGV2LT51c2JfZGV2LT5kZXYsICIlczogb3BlbmVkXG4iLCBfX2Z1bmNfXyk7CisKKwltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2c3R1c2JfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgdnN0dXNiX2RldmljZSAqdnN0ZGV2OworCisJdnN0ZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCisJaWYgKHZzdGRldiA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCW11dGV4X2xvY2soJnZzdGRldi0+bG9jayk7CisKKwl2c3RkZXYtPmlzb3BlbiA9IDA7CisKKwlkZXZfZGJnKCZ2c3RkZXYtPnVzYl9kZXYtPmRldiwgIiVzOiByZWxlYXNlZFxuIiwgX19mdW5jX18pOworCisJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCisJa3JlZl9wdXQoJnZzdGRldi0+a3JlZiwgdnN0dXNiX2RlbGV0ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdXNiX2FwaV9ibG9ja2luZ19jb21wbGV0aW9uKHN0cnVjdCB1cmIgKnVyYikKK3sKKwlzdHJ1Y3QgY29tcGxldGlvbiAqY29tcGxldGVpdCA9IHVyYi0+Y29udGV4dDsKKworCWNvbXBsZXRlKGNvbXBsZXRlaXQpOworfQorCitzdGF0aWMgaW50IHZzdHVzYl9maWxsX2FuZF9zZW5kX3VyYihzdHJ1Y3QgdXJiICp1cmIsCisJCQkJICAgIHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2LAorCQkJCSAgICB1bnNpZ25lZCBpbnQgcGlwZSwgdm9pZCAqZGF0YSwKKwkJCQkgICAgdW5zaWduZWQgaW50IGxlbiwgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpCit7CisJc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplcDsKKwlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKipob3N0ZXA7CisJdW5zaWduZWQgaW50IHBpcGVuZDsKKworCWludCBzdGF0dXM7CisKKwlob3N0ZXAgPSB1c2JfcGlwZWluKHBpcGUpID8gdXNiX2Rldi0+ZXBfaW4gOiB1c2JfZGV2LT5lcF9vdXQ7CisJcGlwZW5kID0gdXNiX3BpcGVlbmRwb2ludChwaXBlKTsKKwllcCA9IGhvc3RlcFtwaXBlbmRdOworCisJaWYgKCFlcCB8fCAobGVuID09IDApKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICgoZXAtPmRlc2MuYm1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spCisJICAgID09IFVTQl9FTkRQT0lOVF9YRkVSX0lOVCkgeworCQlwaXBlID0gKHBpcGUgJiB+KDMgPDwgMzApKSB8IChQSVBFX0lOVEVSUlVQVCA8PCAzMCk7CisJCXVzYl9maWxsX2ludF91cmIodXJiLCB1c2JfZGV2LCBwaXBlLCBkYXRhLCBsZW4sCisJCQkJICh1c2JfY29tcGxldGVfdCl1c2JfYXBpX2Jsb2NraW5nX2NvbXBsZXRpb24sCisJCQkJIE5VTEwsIGVwLT5kZXNjLmJJbnRlcnZhbCk7CisJfSBlbHNlCisJCXVzYl9maWxsX2J1bGtfdXJiKHVyYiwgdXNiX2RldiwgcGlwZSwgZGF0YSwgbGVuLAorCQkJCSAgKHVzYl9jb21wbGV0ZV90KXVzYl9hcGlfYmxvY2tpbmdfY29tcGxldGlvbiwKKwkJCQkgIE5VTEwpOworCisJaW5pdF9jb21wbGV0aW9uKGRvbmUpOworCXVyYi0+Y29udGV4dCA9IGRvbmU7CisJdXJiLT5hY3R1YWxfbGVuZ3RoID0gMDsKKwlzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9LRVJORUwpOworCisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGludCB2c3R1c2JfY29tcGxldGVfdXJiKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUsCisJCQkgICAgICAgaW50IHRpbWVvdXQsIGludCAqYWN0dWFsX2xlbmd0aCkKK3sKKwl1bnNpZ25lZCBsb25nIGV4cGlyZTsKKwlpbnQgc3RhdHVzOworCisJZXhwaXJlID0gdGltZW91dCA/IG1zZWNzX3RvX2ppZmZpZXModGltZW91dCkgOiBNQVhfU0NIRURVTEVfVElNRU9VVDsKKwlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KGRvbmUsIGV4cGlyZSkpIHsKKwkJdXNiX2tpbGxfdXJiKHVyYik7CisJCXN0YXR1cyA9IHVyYi0+c3RhdHVzID09IC1FTk9FTlQgPyAtRVRJTUVET1VUIDogdXJiLT5zdGF0dXM7CisKKwkJZGV2X2RiZygmdXJiLT5kZXYtPmRldiwKKwkJCSIlcyB0aW1lZCBvdXQgb24gZXAlZCVzIGxlbj0lZC8lZCwgdXJiIHN0YXR1cyA9ICVkXG4iLAorCQkJY3VycmVudC0+Y29tbSwKKwkJCXVzYl9waXBlZW5kcG9pbnQodXJiLT5waXBlKSwKKwkJCXVzYl9waXBlaW4odXJiLT5waXBlKSA/ICJpbiIgOiAib3V0IiwKKwkJCXVyYi0+YWN0dWFsX2xlbmd0aCwKKwkJCXVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCwKKwkJCXVyYi0+c3RhdHVzKTsKKworCX0gZWxzZSB7CisJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQkJLyogaWYgcmVhbGx5IGFuIGVycm9yICovCisJCQlpZiAodXJiLT5zdGF0dXMgJiYgISgodXJiLT5zdGF0dXMgPT0gLUVOT0VOVCkgICAgIHx8CisJCQkJCSAgICAgKHVyYi0+c3RhdHVzID09IC1FQ09OTlJFU0VUKSB8fAorCQkJCQkgICAgICh1cmItPnN0YXR1cyA9PSAtRVNIVVRET1dOKSkpIHsKKwkJCQlzdGF0dXMgPSAtRUlOVFI7CisJCQkJdXNiX2tpbGxfdXJiKHVyYik7CisJCQl9IGVsc2UgeworCQkJCXN0YXR1cyA9IDA7CisJCQl9CisKKwkJCWRldl9kYmcoJnVyYi0+ZGV2LT5kZXYsCisJCQkJIiVzOiBzaWduYWwgcGVuZGluZyBvbiBlcCVkJXMgbGVuPSVkLyVkLCIKKwkJCQkidXJiIHN0YXR1cyA9ICVkXG4iLAorCQkJCWN1cnJlbnQtPmNvbW0sCisJCQkJdXNiX3BpcGVlbmRwb2ludCh1cmItPnBpcGUpLAorCQkJCXVzYl9waXBlaW4odXJiLT5waXBlKSA/ICJpbiIgOiAib3V0IiwKKwkJCQl1cmItPmFjdHVhbF9sZW5ndGgsCisJCQkJdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoLAorCQkJCXVyYi0+c3RhdHVzKTsKKworCQl9IGVsc2UgeworCQkJc3RhdHVzID0gdXJiLT5zdGF0dXM7CisJCX0KKwl9CisKKwlpZiAoYWN0dWFsX2xlbmd0aCkKKwkJKmFjdHVhbF9sZW5ndGggPSB1cmItPmFjdHVhbF9sZW5ndGg7CisKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgc3NpemVfdCB2c3R1c2JfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwKKwkJCSAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCB2c3R1c2JfZGV2aWNlICp2c3RkZXY7CisJaW50IGNudCA9IC0xOworCXZvaWQgKmJ1ZjsKKwlpbnQgcmV0dmFsID0gMDsKKworCXN0cnVjdCB1cmIgICAgICAgICAgICAgICp1cmI7CisJc3RydWN0IHVzYl9kZXZpY2UgICAgICAgKmRldjsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICBwaXBlOworCWludCAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ7CisKKwlERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTsKKworCXZzdGRldiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKworCWlmICh2c3RkZXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwkvKiB2ZXJpZnkgdGhhdCB3ZSBhY3R1YWxseSB3YW50IHRvIHJlYWQgc29tZSBkYXRhICovCisJaWYgKChjb3VudCA9PSAwKSB8fCAoY291bnQgPiBWU1RfTUFYQlVGRkVSKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBsb2NrIHRoaXMgb2JqZWN0ICovCisJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmdnN0ZGV2LT5sb2NrKSkKKwkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKKworCS8qIGFueW9uZSBob21lICovCisJaWYgKCF2c3RkZXYtPnByZXNlbnQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCQlwcmludGsoS0VSTl9FUlIgS0JVSUxEX01PRE5BTUUKKwkJICAgICAgICI6ICVzOiBkZXZpY2Ugbm90IHByZXNlbnRcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJLyogcHVsbCBvdXQgdGhlIG5lY2Vzc2FyeSBkYXRhICovCisJZGV2ID0gICAgIHZzdGRldi0+dXNiX2RldjsKKwlwaXBlID0gICAgdXNiX3JjdmJ1bGtwaXBlKGRldiwgdnN0ZGV2LT5yZF9waXBlKTsKKwl0aW1lb3V0ID0gdnN0ZGV2LT5yZF90aW1lb3V0X21zOworCisJYnVmID0ga21hbGxvYyhjb3VudCwgR0ZQX0tFUk5FTCk7CisJaWYgKGJ1ZiA9PSBOVUxMKSB7CisJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXVyYikgeworCQlrZnJlZShidWYpOworCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXVzYl9hbmNob3JfdXJiKHVyYiwgJnZzdGRldi0+c3VibWl0dGVkKTsKKwlyZXR2YWwgPSB2c3R1c2JfZmlsbF9hbmRfc2VuZF91cmIodXJiLCBkZXYsIHBpcGUsIGJ1ZiwgY291bnQsICZkb25lKTsKKwltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJaWYgKHJldHZhbCkgeworCQl1c2JfdW5hbmNob3JfdXJiKHVyYik7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAiJXM6IGVycm9yICVkIGZpbGxpbmcgYW5kIHNlbmRpbmcgdXJiICVkXG4iLAorCQkJX19mdW5jX18sIHJldHZhbCwgcGlwZSk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwlyZXR2YWwgPSB2c3R1c2JfY29tcGxldGVfdXJiKHVyYiwgJmRvbmUsIHRpbWVvdXQsICZjbnQpOworCWlmIChyZXR2YWwpIHsKKwkJZGV2X2VycigmZGV2LT5kZXYsICIlczogZXJyb3IgJWQgY29tcGxldGluZyB1cmIgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0dmFsLCBwaXBlKTsKKwkJZ290byBleGl0OworCX0KKworCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCBidWYsIGNudCkpIHsKKwkJZGV2X2VycigmZGV2LT5kZXYsICIlczogY2FuJ3QgY29weV90b191c2VyXG4iLCBfX2Z1bmNfXyk7CisJCXJldHZhbCA9IC1FRkFVTFQ7CisJfSBlbHNlIHsKKwkJcmV0dmFsID0gY250OworCQlkZXZfZGJnKCZkZXYtPmRldiwgIiVzOiByZWFkICVkIGJ5dGVzIGZyb20gcGlwZSAlZFxuIiwKKwkJCV9fZnVuY19fLCBjbnQsIHBpcGUpOworCX0KKworZXhpdDoKKwl1c2JfZnJlZV91cmIodXJiKTsKKwlrZnJlZShidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHZzdHVzYl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKKwkJCSAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKK3sKKwlzdHJ1Y3QgdnN0dXNiX2RldmljZSAqdnN0ZGV2OworCWludCBjbnQgPSAtMTsKKwl2b2lkICpidWY7CisJaW50IHJldHZhbCA9IDA7CisKKwlzdHJ1Y3QgdXJiICAgICAgICAgICAgICAqdXJiOworCXN0cnVjdCB1c2JfZGV2aWNlICAgICAgICpkZXY7CisJdW5zaWduZWQgaW50ICAgICAgICAgICAgcGlwZTsKKwlpbnQgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OworCisJREVDTEFSRV9DT01QTEVUSU9OX09OU1RBQ0soZG9uZSk7CisKKwl2c3RkZXYgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlpZiAodnN0ZGV2ID09IE5VTEwpCisJCXJldHVybiAtRU5PREVWOworCisJLyogdmVyaWZ5IHRoYXQgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIGRhdGEgdG8gd3JpdGUgKi8KKwlpZiAoKGNvdW50ID09IDApIHx8IChjb3VudCA+IFZTVF9NQVhCVUZGRVIpKQorCQlyZXR1cm4gcmV0dmFsOworCisJLyogbG9jayB0aGlzIG9iamVjdCAqLworCWlmIChtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnZzdGRldi0+bG9jaykpCisJCXJldHVybiAtRVJFU1RBUlRTWVM7CisKKwkvKiBhbnlvbmUgaG9tZSAqLworCWlmICghdnN0ZGV2LT5wcmVzZW50KSB7CisJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJcHJpbnRrKEtFUk5fRVJSIEtCVUlMRF9NT0ROQU1FCisJCSAgICAgICAiOiAlczogZGV2aWNlIG5vdCBwcmVzZW50XG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCS8qIHB1bGwgb3V0IHRoZSBuZWNlc3NhcnkgZGF0YSAqLworCWRldiA9ICAgICB2c3RkZXYtPnVzYl9kZXY7CisJcGlwZSA9ICAgIHVzYl9zbmRidWxrcGlwZShkZXYsIHZzdGRldi0+d3JfcGlwZSk7CisJdGltZW91dCA9IHZzdGRldi0+d3JfdGltZW91dF9tczsKKworCWJ1ZiA9IGttYWxsb2MoY291bnQsIEdGUF9LRVJORUwpOworCWlmIChidWYgPT0gTlVMTCkgeworCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisJaWYgKCF1cmIpIHsKKwkJa2ZyZWUoYnVmKTsKKwkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAoY29weV9mcm9tX3VzZXIoYnVmLCBidWZmZXIsIGNvdW50KSkgeworCQlkZXZfZXJyKCZkZXYtPmRldiwgIiVzOiBjYW4ndCBjb3B5X2Zyb21fdXNlclxuIiwgX19mdW5jX18pOworCQlyZXR2YWwgPSAtRUZBVUxUOworCQlnb3RvIGV4aXQ7CisJfQorCisJdXNiX2FuY2hvcl91cmIodXJiLCAmdnN0ZGV2LT5zdWJtaXR0ZWQpOworCXJldHZhbCA9IHZzdHVzYl9maWxsX2FuZF9zZW5kX3VyYih1cmIsIGRldiwgcGlwZSwgYnVmLCBjb3VudCwgJmRvbmUpOworCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwlpZiAocmV0dmFsKSB7CisJCXVzYl91bmFuY2hvcl91cmIodXJiKTsKKwkJZGV2X2VycigmZGV2LT5kZXYsICIlczogZXJyb3IgJWQgZmlsbGluZyBhbmQgc2VuZGluZyB1cmIgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0dmFsLCBwaXBlKTsKKwkJZ290byBleGl0OworCX0KKworCXJldHZhbCA9IHZzdHVzYl9jb21wbGV0ZV91cmIodXJiLCAmZG9uZSwgdGltZW91dCwgJmNudCk7CisJaWYgKHJldHZhbCkgeworCQlkZXZfZXJyKCZkZXYtPmRldiwgIiVzOiBlcnJvciAlZCBjb21wbGV0aW5nIHVyYiAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXR2YWwsIHBpcGUpOworCQlnb3RvIGV4aXQ7CisJfSBlbHNlIHsKKwkJcmV0dmFsID0gY250OworCQlkZXZfZGJnKCZkZXYtPmRldiwgIiVzOiBzZW50ICVkIGJ5dGVzIHRvIHBpcGUgJWRcbiIsCisJCQlfX2Z1bmNfXywgY250LCBwaXBlKTsKKwl9CisKK2V4aXQ6CisJdXNiX2ZyZWVfdXJiKHVyYik7CisJa2ZyZWUoYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgbG9uZyB2c3R1c2JfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQoreworCWludCByZXR2YWwgPSAwOworCWludCBjbnQgPSAtMTsKKwl2b2lkIF9fdXNlciAqZGF0YSA9ICh2b2lkIF9fdXNlciAqKWFyZzsKKwlzdHJ1Y3QgdnN0dXNiX2FyZ3MgdXNiX2RhdGE7CisKKwlzdHJ1Y3QgdnN0dXNiX2RldmljZSAqdnN0ZGV2OworCXZvaWQgKmJ1ZmZlciA9IE5VTEw7IC8qIG11c3QgYmUgaW5pdGlhbGl6ZWQuIGJ1ZmZlciBpcworCQkJICAgICAgKglyZWZlcmVuY2VkIG9uIGV4aXQgYnV0IG5vdCBhbGwKKwkJCSAgICAgICogaW9jdGxzIGFsbG9jYXRlIGl0ICovCisKKwlzdHJ1Y3QgdXJiICAgICAgICAgICAgICAqdXJiID0gTlVMTDsgLyogbXVzdCBiZSBpbml0aWFsaXplZC4gdXJiIGlzCisJCQkJCSAgICAgICoJcmVmZXJlbmNlZCBvbiBleGl0IGJ1dCBub3QgYWxsCisJCQkJCSAgICAgICogaW9jdGxzIGFsbG9jYXRlIGl0ICovCisJc3RydWN0IHVzYl9kZXZpY2UgICAgICAgKmRldjsKKwl1bnNpZ25lZCBpbnQgICAgICAgICAgICBwaXBlOworCWludCAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ7CisKKwlERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTsKKworCXZzdGRldiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKworCWlmIChfSU9DX1RZUEUoY21kKSAhPSBWU1RfSU9DX01BR0lDKSB7CisJCWRldl93YXJuKCZ2c3RkZXYtPnVzYl9kZXYtPmRldiwKKwkJCSAiJXM6IGlvY3RsIGNvbW1hbmQgJXgsIGJhZCBpb2N0bCBtYWdpYyAleCwgIgorCQkJICJleHBlY3RlZCAleFxuIiwgX19mdW5jX18sIGNtZCwKKwkJCSBfSU9DX1RZUEUoY21kKSwgVlNUX0lPQ19NQUdJQyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh2c3RkZXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzYl9kYXRhLCBkYXRhLCBzaXplb2Yoc3RydWN0IHZzdHVzYl9hcmdzKSkpIHsKKwkJZGV2X2VycigmdnN0ZGV2LT51c2JfZGV2LT5kZXYsICIlczogY2FuJ3QgY29weV9mcm9tX3VzZXJcbiIsCisJCQlfX2Z1bmNfXyk7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCS8qIGxvY2sgdGhpcyBvYmplY3QgKi8KKwlpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZ2c3RkZXYtPmxvY2spKSB7CisJCXJldHZhbCA9IC1FUkVTVEFSVFNZUzsKKwkJZ290byBleGl0OworCX0KKworCS8qIGFueW9uZSBob21lICovCisJaWYgKCF2c3RkZXYtPnByZXNlbnQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCQlkZXZfZXJyKCZ2c3RkZXYtPnVzYl9kZXYtPmRldiwgIiVzOiBkZXZpY2Ugbm90IHByZXNlbnRcbiIsCisJCQlfX2Z1bmNfXyk7CisJCXJldHZhbCA9IC1FTk9ERVY7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkvKiBwdWxsIG91dCB0aGUgbmVjZXNzYXJ5IGRhdGEgKi8KKwlkZXYgPSB2c3RkZXYtPnVzYl9kZXY7CisKKwlzd2l0Y2ggKGNtZCkgeworCisJY2FzZSBJT0NUTF9WU1RVU0JfQ09ORklHX1JXOgorCisJCXZzdGRldi0+cmRfcGlwZSA9IHVzYl9kYXRhLnJkX3BpcGU7CisJCXZzdGRldi0+cmRfdGltZW91dF9tcyA9IHVzYl9kYXRhLnJkX3RpbWVvdXRfbXM7CisJCXZzdGRldi0+d3JfcGlwZSA9IHVzYl9kYXRhLndyX3BpcGU7CisJCXZzdGRldi0+d3JfdGltZW91dF9tcyA9IHVzYl9kYXRhLndyX3RpbWVvdXRfbXM7CisKKwkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCisJCWRldl9kYmcoJmRldi0+ZGV2LCAiJXM6IHNldHRpbmcgcGlwZXMvdGltZW91dHMsICIKKwkJCSJyZHBpcGUgPSAlZCwgcmR0aW1lb3V0ID0gJWQsICIKKwkJCSJ3cnBpcGUgPSAlZCwgd3J0aW1lb3V0ID0gJWRcbiIsIF9fZnVuY19fLAorCQkJdnN0ZGV2LT5yZF9waXBlLCB2c3RkZXYtPnJkX3RpbWVvdXRfbXMsCisJCQl2c3RkZXYtPndyX3BpcGUsIHZzdGRldi0+d3JfdGltZW91dF9tcyk7CisJCWJyZWFrOworCisJY2FzZSBJT0NUTF9WU1RVU0JfU0VORF9QSVBFOgorCisJCWlmICgodXNiX2RhdGEuY291bnQgPT0gMCkgfHwgKHVzYl9kYXRhLmNvdW50ID4gVlNUX01BWEJVRkZFUikpIHsKKwkJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJCXJldHZhbCA9IC1FSU5WQUw7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQlidWZmZXIgPSBrbWFsbG9jKHVzYl9kYXRhLmNvdW50LCBHRlBfS0VSTkVMKTsKKwkJaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CisJCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCQlyZXR2YWwgPSAtRU5PTUVNOworCQkJZ290byBleGl0OworCQl9CisKKwkJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF1cmIpIHsKKwkJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJCXJldHZhbCA9IC1FTk9NRU07CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQl0aW1lb3V0ID0gdXNiX2RhdGEudGltZW91dF9tczsKKworCQlwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKGRldiwgdXNiX2RhdGEucGlwZSk7CisKKwkJaWYgKGNvcHlfZnJvbV91c2VyKGJ1ZmZlciwgdXNiX2RhdGEuYnVmZmVyLCB1c2JfZGF0YS5jb3VudCkpIHsKKwkJCWRldl9lcnIoJmRldi0+ZGV2LCAiJXM6IGNhbid0IGNvcHlfZnJvbV91c2VyXG4iLAorCQkJCV9fZnVuY19fKTsKKwkJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJCXJldHZhbCA9IC1FRkFVTFQ7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQl1c2JfYW5jaG9yX3VyYih1cmIsICZ2c3RkZXYtPnN1Ym1pdHRlZCk7CisJCXJldHZhbCA9IHZzdHVzYl9maWxsX2FuZF9zZW5kX3VyYih1cmIsIGRldiwgcGlwZSwgYnVmZmVyLAorCQkJCQkJICB1c2JfZGF0YS5jb3VudCwgJmRvbmUpOworCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCWlmIChyZXR2YWwpIHsKKwkJCXVzYl91bmFuY2hvcl91cmIodXJiKTsKKwkJCWRldl9lcnIoJmRldi0+ZGV2LAorCQkJCSIlczogZXJyb3IgJWQgZmlsbGluZyBhbmQgc2VuZGluZyB1cmIgJWRcbiIsCisJCQkJX19mdW5jX18sIHJldHZhbCwgcGlwZSk7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQlyZXR2YWwgPSB2c3R1c2JfY29tcGxldGVfdXJiKHVyYiwgJmRvbmUsIHRpbWVvdXQsICZjbnQpOworCQlpZiAocmV0dmFsKSB7CisJCQlkZXZfZXJyKCZkZXYtPmRldiwgIiVzOiBlcnJvciAlZCBjb21wbGV0aW5nIHVyYiAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgcmV0dmFsLCBwaXBlKTsKKwkJfQorCisJCWJyZWFrOworCWNhc2UgSU9DVExfVlNUVVNCX1JFQ1ZfUElQRToKKworCQlpZiAoKHVzYl9kYXRhLmNvdW50ID09IDApIHx8ICh1c2JfZGF0YS5jb3VudCA+IFZTVF9NQVhCVUZGRVIpKSB7CisJCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCQlyZXR2YWwgPSAtRUlOVkFMOworCQkJZ290byBleGl0OworCQl9CisKKwkJYnVmZmVyID0ga21hbGxvYyh1c2JfZGF0YS5jb3VudCwgR0ZQX0tFUk5FTCk7CisJCWlmIChidWZmZXIgPT0gTlVMTCkgeworCQkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCQkJcmV0dmFsID0gLUVOT01FTTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCXVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisJCWlmICghdXJiKSB7CisJCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCQlyZXR2YWwgPSAtRU5PTUVNOworCQkJZ290byBleGl0OworCQl9CisKKwkJdGltZW91dCA9IHVzYl9kYXRhLnRpbWVvdXRfbXM7CisKKwkJcGlwZSA9IHVzYl9yY3ZidWxrcGlwZShkZXYsIHVzYl9kYXRhLnBpcGUpOworCisJCXVzYl9hbmNob3JfdXJiKHVyYiwgJnZzdGRldi0+c3VibWl0dGVkKTsKKwkJcmV0dmFsID0gdnN0dXNiX2ZpbGxfYW5kX3NlbmRfdXJiKHVyYiwgZGV2LCBwaXBlLCBidWZmZXIsCisJCQkJCQkgIHVzYl9kYXRhLmNvdW50LCAmZG9uZSk7CisJCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJaWYgKHJldHZhbCkgeworCQkJdXNiX3VuYW5jaG9yX3VyYih1cmIpOworCQkJZGV2X2VycigmZGV2LT5kZXYsCisJCQkJIiVzOiBlcnJvciAlZCBmaWxsaW5nIGFuZCBzZW5kaW5nIHVyYiAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgcmV0dmFsLCBwaXBlKTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCXJldHZhbCA9IHZzdHVzYl9jb21wbGV0ZV91cmIodXJiLCAmZG9uZSwgdGltZW91dCwgJmNudCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWRldl9lcnIoJmRldi0+ZGV2LCAiJXM6IGVycm9yICVkIGNvbXBsZXRpbmcgdXJiICVkXG4iLAorCQkJCV9fZnVuY19fLCByZXR2YWwsIHBpcGUpOworCQkJZ290byBleGl0OworCQl9CisKKwkJaWYgKGNvcHlfdG9fdXNlcih1c2JfZGF0YS5idWZmZXIsIGJ1ZmZlciwgY250KSkgeworCQkJZGV2X2VycigmZGV2LT5kZXYsICIlczogY2FuJ3QgY29weV90b191c2VyXG4iLAorCQkJCV9fZnVuY19fKTsKKwkJCXJldHZhbCA9IC1FRkFVTFQ7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQl1c2JfZGF0YS5jb3VudCA9IGNudDsKKwkJaWYgKGNvcHlfdG9fdXNlcihkYXRhLCAmdXNiX2RhdGEsIHNpemVvZihzdHJ1Y3QgdnN0dXNiX2FyZ3MpKSkgeworCQkJZGV2X2VycigmZGV2LT5kZXYsICIlczogY2FuJ3QgY29weV90b191c2VyXG4iLAorCQkJCV9fZnVuY19fKTsKKwkJCXJldHZhbCA9IC1FRkFVTFQ7CisJCX0gZWxzZSB7CisJCQlkZXZfZGJnKCZkZXYtPmRldiwgIiVzOiByZWN2ICVkIGJ5dGVzIGZyb20gcGlwZSAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgdXNiX2RhdGEuY291bnQsIHVzYl9kYXRhLnBpcGUpOworCQl9CisKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQltdXRleF91bmxvY2soJnZzdGRldi0+bG9jayk7CisJCWRldl93YXJuKCZkZXYtPmRldiwgImlvY3RsX3ZzdHVzYjogaW52YWxpZCBpb2N0bCBjbWQgJXhcbiIsCisJCQkgY21kKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJCWJyZWFrOworCX0KK2V4aXQ6CisJdXNiX2ZyZWVfdXJiKHVyYik7CisJa2ZyZWUoYnVmZmVyKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2c3R1c2JfZm9wcyA9IHsKKwkub3duZXIgPSAgICAgICAgICAgICAgICBUSElTX01PRFVMRSwKKwkucmVhZCA9ICAgICAgICAgICAgICAgICB2c3R1c2JfcmVhZCwKKwkud3JpdGUgPSAgICAgICAgICAgICAgICB2c3R1c2Jfd3JpdGUsCisJLnVubG9ja2VkX2lvY3RsID0gICAgICAgdnN0dXNiX2lvY3RsLAorCS5jb21wYXRfaW9jdGwgPSAgICAgICAgIHZzdHVzYl9pb2N0bCwKKwkub3BlbiA9ICAgICAgICAgICAgICAgICB2c3R1c2Jfb3BlbiwKKwkucmVsZWFzZSA9ICAgICAgICAgICAgICB2c3R1c2JfcmVsZWFzZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2NsYXNzX2RyaXZlciB1c2JfdnN0dXNiX2NsYXNzID0geworCS5uYW1lID0gICAgICAgICAidXNiL3ZzdHVzYiVkIiwKKwkuZm9wcyA9ICAgICAgICAgJnZzdHVzYl9mb3BzLAorCS5taW5vcl9iYXNlID0gICBWU1RVU0JfTUlOT1JfQkFTRSwKK307CisKK3N0YXRpYyBpbnQgdnN0dXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAorCQkJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCB1c2JfZGV2aWNlICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOworCXN0cnVjdCB2c3R1c2JfZGV2aWNlICp2c3RkZXY7CisJaW50IGk7CisJaW50IHJldHZhbCA9IDA7CisKKwkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91ciBkZXZpY2Ugc3RhdGUgYW5kIGludGlhbGl6ZSBpdCAqLworCisJdnN0ZGV2ID0ga3phbGxvYyhzaXplb2YoKnZzdGRldiksIEdGUF9LRVJORUwpOworCWlmICh2c3RkZXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBtdXN0IGRvIHVzYl9nZXRfZGV2KCkgcHJpb3IgdG8ga3JlZl9pbml0KCkgc2luY2UgdGhlIGtyZWZfcHV0KCkKKwkgKiByZWxlYXNlIGZ1bmN0aW9uIHdpbGwgZG8gYSB1c2JfcHV0X2RldigpICovCisJdXNiX2dldF9kZXYoZGV2KTsKKwlrcmVmX2luaXQoJnZzdGRldi0+a3JlZik7CisJbXV0ZXhfaW5pdCgmdnN0ZGV2LT5sb2NrKTsKKworCWkgPSBkZXYtPmRlc2NyaXB0b3IuYmNkRGV2aWNlOworCisJZGV2X2RiZygmaW50Zi0+ZGV2LCAiVmVyc2lvbiAlMWQlMWQuJTFkJTFkIGZvdW5kIGF0IGFkZHJlc3MgJWRcbiIsCisJCShpICYgMHhGMDAwKSA+PiAxMiwgKGkgJiAweEYwMCkgPj4gOCwKKwkJKGkgJiAweEYwKSA+PiA0LCAoaSAmIDB4RiksIGRldi0+ZGV2bnVtKTsKKworCXZzdGRldi0+cHJlc2VudCA9IDE7CisJdnN0ZGV2LT5pc29wZW4gPSAwOworCXZzdGRldi0+dXNiX2RldiA9IGRldjsKKwlpbml0X3VzYl9hbmNob3IoJnZzdGRldi0+c3VibWl0dGVkKTsKKworCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgdnN0ZGV2KTsKKwlyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2KGludGYsICZ1c2JfdnN0dXNiX2NsYXNzKTsKKwlpZiAocmV0dmFsKSB7CisJCWRldl9lcnIoJmludGYtPmRldiwKKwkJCSIlczogTm90IGFibGUgdG8gZ2V0IGEgbWlub3IgZm9yIHRoaXMgZGV2aWNlLlxuIiwKKwkJCV9fZnVuY19fKTsKKwkJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKKwkJa3JlZl9wdXQoJnZzdGRldi0+a3JlZiwgdnN0dXNiX2RlbGV0ZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyogbGV0IHRoZSB1c2VyIGtub3cgd2hhdCBub2RlIHRoaXMgZGV2aWNlIGlzIG5vdyBhdHRhY2hlZCB0byAqLworCWRldl9pbmZvKCZpbnRmLT5kZXYsCisJCSAiVlNUIFVTQiBEZXZpY2UgIyVkIG5vdyBhdHRhY2hlZCB0byBtYWpvciAlZCBtaW5vciAlZFxuIiwKKwkJIChpbnRmLT5taW5vciAtIFZTVFVTQl9NSU5PUl9CQVNFKSwgVVNCX01BSk9SLCBpbnRmLT5taW5vcik7CisKKwlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiJXMsICVzXG4iLCBEUklWRVJfREVTQywgRFJJVkVSX1ZFUlNJT04pOworCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHZvaWQgdnN0dXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCit7CisJc3RydWN0IHZzdHVzYl9kZXZpY2UgKnZzdGRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CisKKwl1c2JfZGVyZWdpc3Rlcl9kZXYoaW50ZiwgJnVzYl92c3R1c2JfY2xhc3MpOworCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CisKKwlpZiAodnN0ZGV2KSB7CisKKwkJbXV0ZXhfbG9jaygmdnN0ZGV2LT5sb2NrKTsKKwkJdnN0ZGV2LT5wcmVzZW50ID0gMDsKKworCQl1c2Jfa2lsbF9hbmNob3JlZF91cmJzKCZ2c3RkZXYtPnN1Ym1pdHRlZCk7CisKKwkJbXV0ZXhfdW5sb2NrKCZ2c3RkZXYtPmxvY2spOworCisJCWtyZWZfcHV0KCZ2c3RkZXYtPmtyZWYsIHZzdHVzYl9kZWxldGUpOworCX0KKworfQorCitzdGF0aWMgaW50IHZzdHVzYl9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSkKK3sKKwlzdHJ1Y3QgdnN0dXNiX2RldmljZSAqdnN0ZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKwlpbnQgdGltZTsKKwlpZiAoIXZzdGRldikKKwkJcmV0dXJuIDA7CisKKwltdXRleF9sb2NrKCZ2c3RkZXYtPmxvY2spOworCXRpbWUgPSB1c2Jfd2FpdF9hbmNob3JfZW1wdHlfdGltZW91dCgmdnN0ZGV2LT5zdWJtaXR0ZWQsIDEwMDApOworCWlmICghdGltZSkKKwkJdXNiX2tpbGxfYW5jaG9yZWRfdXJicygmdnN0ZGV2LT5zdWJtaXR0ZWQpOworCW11dGV4X3VubG9jaygmdnN0ZGV2LT5sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZzdHVzYl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB2c3R1c2JfZHJpdmVyID0geworCS5uYW1lID0gICAgICAgICAidnN0dXNiIiwKKwkucHJvYmUgPSAgICAgICAgdnN0dXNiX3Byb2JlLAorCS5kaXNjb25uZWN0ID0gICB2c3R1c2JfZGlzY29ubmVjdCwKKwkuc3VzcGVuZCA9ICAgICAgdnN0dXNiX3N1c3BlbmQsCisJLnJlc3VtZSA9ICAgICAgIHZzdHVzYl9yZXN1bWUsCisJLmlkX3RhYmxlID0gaWRfdGFibGUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCB2c3R1c2JfaW5pdCh2b2lkKQoreworCWludCByYzsKKworCXJjID0gdXNiX3JlZ2lzdGVyKCZ2c3R1c2JfZHJpdmVyKTsKKwlpZiAocmMpCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGZhaWxlZCB0byByZWdpc3RlciAoJWQpIiwgX19mdW5jX18sIHJjKTsKKworCXJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHZzdHVzYl9leGl0KHZvaWQpCit7CisJdXNiX2RlcmVnaXN0ZXIoJnZzdHVzYl9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdCh2c3R1c2JfaW5pdCk7Cittb2R1bGVfZXhpdCh2c3R1c2JfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIkRlbm5pcyBPJ0JyaWVuL1N0ZXBoZW4gV2FyZSIpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9WRVJTSU9OKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21vbi9tb25fbWFpbi5jIGIvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKaW5kZXggNDQyZDgwNy4uNWUwYWI0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKKysrIGIvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKQEAgLTM2MSwxMiArMzYxLDEyIEBACiAJfQogCS8vIE1PRF9JTkNfVVNFX0NPVU5UKHdoaWNoX21vZHVsZT8pOwogCi0JdXNiX3JlZ2lzdGVyX25vdGlmeSgmbW9uX25iKTsKIAogCW11dGV4X2xvY2soJnVzYl9idXNfbGlzdF9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5ICh1YnVzLCAmdXNiX2J1c19saXN0LCBidXNfbGlzdCkgewogCQltb25fYnVzX2luaXQodWJ1cyk7CiAJfQorCXVzYl9yZWdpc3Rlcl9ub3RpZnkoJm1vbl9uYik7CiAJbXV0ZXhfdW5sb2NrKCZ1c2JfYnVzX2xpc3RfbG9jayk7CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL211c2IvS2NvbmZpZwppbmRleCA1OGIyYjhmLi40Yjk1NDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvbXVzYi9LY29uZmlnCkBAIC0zMywxMCArMzMsNiBAQAogCWRlZmF1bHQgeSBpZiBBUkNIX0RBVklOQ0kKIAlkZWZhdWx0IHkgaWYgQVJDSF9PTUFQMjQzMAogCWRlZmF1bHQgeSBpZiBBUkNIX09NQVAzNFhYCi0JaGVscAotCSAgVXNlIGEgc3RhdGljIDxhc20vYXJjaC9oZHJjX2NuZi5oPiBmaWxlIHRvIGRlc2NyaWJlIGhvdyB0aGUKLQkgIGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCAoZW5kcG9pbnRzLCBtZWNoYW5pc21zLCBldGMpIG9uIHRoZQotCSAgY3VycmVudCBpdGVyYXRpb24gb2YgYSBnaXZlbiBzeXN0ZW0tb24tY2hpcC4KIAogY29tbWVudCAiRGFWaW5jaSA2NDR4IFVTQiBzdXBwb3J0IgogCWRlcGVuZHMgb24gVVNCX01VU0JfSERSQyAmJiBBUkNIX0RBVklOQ0kKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvY3BwaV9kbWEuaCBiL2RyaXZlcnMvdXNiL211c2IvY3BwaV9kbWEuaAppbmRleCBmYzUyMTZiLi43MjliNDA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL2NwcGlfZG1hLmgKKysrIGIvZHJpdmVycy91c2IvbXVzYi9jcHBpX2RtYS5oCkBAIC0xMTksOCArMTE5LDggQEAKIAl2b2lkIF9faW9tZW0JCQkqbXJlZ3M7CQkvKiBNZW50b3IgcmVncyAqLwogCXZvaWQgX19pb21lbQkJCSp0aWJhc2U7CS8qIFRJL0NQUEkgcmVncyAqLwogCi0Jc3RydWN0IGNwcGlfY2hhbm5lbAkJdHhbTVVTQl9DX05VTV9FUFQgLSAxXTsKLQlzdHJ1Y3QgY3BwaV9jaGFubmVsCQlyeFtNVVNCX0NfTlVNX0VQUiAtIDFdOworCXN0cnVjdCBjcHBpX2NoYW5uZWwJCXR4WzRdOworCXN0cnVjdCBjcHBpX2NoYW5uZWwJCXJ4WzRdOwogCiAJc3RydWN0IGRtYV9wb29sCQkJKnBvb2w7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvZGF2aW5jaS5jIGIvZHJpdmVycy91c2IvbXVzYi9kYXZpbmNpLmMKaW5kZXggNzViYWYxOC4uZGZiM2JjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbXVzYi9kYXZpbmNpLmMKKysrIGIvZHJpdmVycy91c2IvbXVzYi9kYXZpbmNpLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgogI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgogCiAjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9tZW1vcnkuaD4KQEAgLTM5LDcgKzQwLDcgQEAKICNpbmNsdWRlICJtdXNiX2NvcmUuaCIKIAogI2lmZGVmIENPTkZJR19NQUNIX0RBVklOQ0lfRVZNCi0jaW5jbHVkZSA8YXNtL2FyY2gvaTJjLWNsaWVudC5oPgorI2RlZmluZSBHUElPX25WQlVTX0RSVgkJODcKICNlbmRpZgogCiAjaW5jbHVkZSAiZGF2aW5jaS5oIgpAQCAtMTM4LDcgKzEzOSw2IEBACiAvKiBWQlVTIFNXSVRDSElORyBJUyBCT0FSRC1TUEVDSUZJQyAqLwogCiAjaWZkZWYgQ09ORklHX01BQ0hfREFWSU5DSV9FVk0KLSNpZm5kZWYgQ09ORklHX01BQ0hfREFWSU5DSV9FVk1fT1RHCiAKIC8qIEkyQyBvcGVyYXRpb25zIGFyZSBhbHdheXMgc3luY2hyb25vdXMsIGFuZCByZXF1aXJlIGEgdGFzayBjb250ZXh0LgogICogV2l0aCB1bmxvYWRlZCBzeXN0ZW1zLCB1c2luZyB0aGUgc2hhcmVkIHdvcmtxdWV1ZSBzZWVtcyB0byBzdWZmaWNlCkBAIC0xNDYsMTIgKzE0NiwxMSBAQAogICovCiBzdGF0aWMgdm9pZCBldm1fZGVmZXJyZWRfZHJ2dmJ1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmlnbm9yZWQpCiB7Ci0JZGF2aW5jaV9pMmNfZXhwYW5kZXJfb3AoMHgzYSwgVVNCX0RSVlZCVVMsIHZidXNfc3RhdGUpOworCWdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKEdQSU9fblZCVVNfRFJWLCB2YnVzX3N0YXRlKTsKIAl2YnVzX3N0YXRlID0gIXZidXNfc3RhdGU7CiB9CiBzdGF0aWMgREVDTEFSRV9XT1JLKGV2bV92YnVzX3dvcmssIGV2bV9kZWZlcnJlZF9kcnZ2YnVzKTsKIAotI2VuZGlmCS8qIG1vZGlmaWVkIGJvYXJkICovCiAjZW5kaWYJLyogRVZNICovCiAKIHN0YXRpYyB2b2lkIGRhdmluY2lfc291cmNlX3Bvd2VyKHN0cnVjdCBtdXNiICptdXNiLCBpbnQgaXNfb24sIGludCBpbW1lZGlhdGUpCkBAIC0xNjUsMjEgKzE2NCwxMCBAQAogCiAjaWZkZWYgQ09ORklHX01BQ0hfREFWSU5DSV9FVk0KIAlpZiAobWFjaGluZV9pc19kYXZpbmNpX2V2bSgpKSB7Ci0jaWZkZWYgQ09ORklHX01BQ0hfREFWSU5DSV9FVk1fT1RHCi0JCS8qIG1vZGlmaWVkIEVWTSBib2FyZCBzd2l0Y2hpbmcgVkJVUyB3aXRoIEdQSU8oNikgbm90IEkyQwotCQkgKiBOT1RFOiAgUElOTVVYMC5SR0I4ODggKGJpdDIzKSBtdXN0IGJlIGNsZWFyCi0JCSAqLwotCQlpZiAoaXNfb24pCi0JCQlncGlvX3NldChHUElPKDYpKTsKLQkJZWxzZQotCQkJZ3Bpb19jbGVhcihHUElPKDYpKTsKLQkJaW1tZWRpYXRlID0gMTsKLSNlbHNlCiAJCWlmIChpbW1lZGlhdGUpCi0JCQlkYXZpbmNpX2kyY19leHBhbmRlcl9vcCgweDNhLCBVU0JfRFJWVkJVUywgIWlzX29uKTsKKwkJCWdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKEdQSU9fblZCVVNfRFJWLCB2YnVzX3N0YXRlKTsKIAkJZWxzZQogCQkJc2NoZWR1bGVfd29yaygmZXZtX3ZidXNfd29yayk7Ci0jZW5kaWYKIAl9CiAjZW5kaWYKIAlpZiAoaW1tZWRpYXRlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmMKaW5kZXggMTI4ZTk0OS4uNGEzNTc0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYworKysgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5jCkBAIC04Miw5ICs4Miw5IEBACiAvKgogICogVGhpcyBnZXRzIG1hbnkga2luZHMgb2YgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbjoKICAqCS0gS2NvbmZpZyBmb3IgZXZlcnl0aGluZyB1c2VyLWNvbmZpZ3VyYWJsZQotICoJLSA8YXNtL2FyY2gvaGRyY19jbmYuaD4gZm9yIFNPQyBvciBmYW1pbHkgZGV0YWlscwogICoJLSBwbGF0Zm9ybV9kZXZpY2UgZm9yIGFkZHJlc3NpbmcsIGlycSwgYW5kIHBsYXRmb3JtX2RhdGEKICAqCS0gcGxhdGZvcm1fZGF0YSBpcyBtb3N0bHkgZm9yIGJvYXJkLXNwZWNpZmljIGluZm9ybWFyaW9uCisgKgkgIChwbHVzIHJlY2VudHJseSwgU09DIG9yIGZhbWlseSBkZXRhaWxzKQogICoKICAqIE1vc3Qgb2YgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdpbGwgKHNvbWVkYXkpIHZhbmlzaC4KICAqLwpAQCAtOTc0LDkgKzk3NCw5IEBACiAvKgogICogVGhlIHNpbGljb24gZWl0aGVyIGhhcyBoYXJkLXdpcmVkIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zLCBvciBlbHNlCiAgKiAiZHluYW1pYyBmaWZvIiBzaXppbmcuICBUaGUgZHJpdmVyIGhhcyBzdXBwb3J0IGZvciBib3RoLCB0aG91Z2ggYXQgdGhpcwotICogd3JpdGluZyBvbmx5IHRoZSBkeW5hbWljIHNpemluZyBpcyB2ZXJ5IHdlbGwgdGVzdGVkLiAgIFdlIHVzZSBub3JtYWwKLSAqIGlkaW9tcyB0byBzbyBib3RoIG1vZGVzIGFyZSBjb21waWxlLXRlc3RlZCwgYnV0IGRlYWQgY29kZSBlbGltaW5hdGlvbgotICogbGVhdmVzIG9ubHkgdGhlIHJlbGV2YW50IG9uZSBpbiB0aGUgb2JqZWN0IGZpbGUuCisgKiB3cml0aW5nIG9ubHkgdGhlIGR5bmFtaWMgc2l6aW5nIGlzIHZlcnkgd2VsbCB0ZXN0ZWQuICAgU2luY2Ugd2Ugc3dpdGNoZWQKKyAqIGF3YXkgZnJvbSBjb21waWxlLXRpbWUgaGFyZHdhcmUgcGFyYW1ldGVycywgd2UgY2FuIG5vIGxvbmdlciByZWx5IG9uCisgKiBkZWFkIGNvZGUgZWxpbWluYXRpb24gdG8gbGVhdmUgb25seSB0aGUgcmVsZXZhbnQgb25lIGluIHRoZSBvYmplY3QgZmlsZS4KICAqCiAgKiBXZSBkb24ndCBjdXJyZW50bHkgdXNlIGR5bmFtaWMgZmlmbyBzZXR1cCBjYXBhYmlsaXR5IHRvIGRvIGFueXRoaW5nCiAgKiBtb3JlIHRoYW4gc2VsZWN0aW5nIG9uZSBvZiBhIGJ1bmNoIG9mIHByZWRlZmluZWQgY29uZmlndXJhdGlvbnMuCkBAIC0xODA2LDYgKzE4MDYsNyBAQAogCW11c2ItPmN0cmxfYmFzZSA9IG1iYXNlOwogCW11c2ItPm5JcnEgPSAtRU5PREVWOwogCW11c2ItPmNvbmZpZyA9IGNvbmZpZzsKKwlCVUdfT04obXVzYi0+Y29uZmlnLT5udW1fZXBzID4gTVVTQl9DX05VTV9FUFMpOwogCWZvciAoZXBudW0gPSAwLCBlcCA9IG11c2ItPmVuZHBvaW50czsKIAkJCWVwbnVtIDwgbXVzYi0+Y29uZmlnLT5udW1fZXBzOwogCQkJZXBudW0rKywgZXArKykgewpAQCAtMjA1NCwxNSArMjA1NSw2IEBACiAKIAl9CiAKLQlyZXR1cm4gMDsKLQotZmFpbDoKLQlpZiAobXVzYi0+Y2xvY2spCi0JCWNsa19wdXQobXVzYi0+Y2xvY2spOwotCWRldmljZV9pbml0X3dha2V1cChkZXYsIDApOwotCW11c2JfZnJlZShtdXNiKTsKLQlyZXR1cm4gc3RhdHVzOwotCiAjaWZkZWYgQ09ORklHX1NZU0ZTCiAJc3RhdHVzID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX21vZGUpOwogCXN0YXR1cyA9IGRldmljZV9jcmVhdGVfZmlsZShkZXYsICZkZXZfYXR0cl92YnVzKTsKQEAgLTIwNzEsMTIgKzIwNjMsMzEgQEAKICNlbmRpZiAvKiBDT05GSUdfVVNCX0dBREdFVF9NVVNCX0hEUkMgKi8KIAlzdGF0dXMgPSAwOwogI2VuZGlmCisJaWYgKHN0YXR1cykKKwkJZ290byBmYWlsMjsKKworCXJldHVybiAwOworCitmYWlsMjoKKyNpZmRlZiBDT05GSUdfU1lTRlMKKwlkZXZpY2VfcmVtb3ZlX2ZpbGUobXVzYi0+Y29udHJvbGxlciwgJmRldl9hdHRyX21vZGUpOworCWRldmljZV9yZW1vdmVfZmlsZShtdXNiLT5jb250cm9sbGVyLCAmZGV2X2F0dHJfdmJ1cyk7CisjaWZkZWYgQ09ORklHX1VTQl9NVVNCX09URworCWRldmljZV9yZW1vdmVfZmlsZShtdXNiLT5jb250cm9sbGVyLCAmZGV2X2F0dHJfc3JwKTsKKyNlbmRpZgorI2VuZGlmCisJbXVzYl9wbGF0Zm9ybV9leGl0KG11c2IpOworZmFpbDoKKwlkZXZfZXJyKG11c2ItPmNvbnRyb2xsZXIsCisJCSJtdXNiX2luaXRfY29udHJvbGxlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWRcbiIsIHN0YXR1cyk7CisKKwlpZiAobXVzYi0+Y2xvY2spCisJCWNsa19wdXQobXVzYi0+Y2xvY2spOworCWRldmljZV9pbml0X3dha2V1cChkZXYsIDApOworCW11c2JfZnJlZShtdXNiKTsKIAogCXJldHVybiBzdGF0dXM7CiAKLWZhaWwyOgotCW11c2JfcGxhdGZvcm1fZXhpdChtdXNiKTsKLQlnb3RvIGZhaWw7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0X2VwMC5jIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2dhZGdldF9lcDAuYwppbmRleCBhNTc2NTJmLi4zZjVlMzBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0X2VwMC5jCisrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9nYWRnZXRfZXAwLmMKQEAgLTQzNyw3ICs0MzcsNyBAQAogewogCXZvaWQgX19pb21lbQkJKnJlZ3MgPSBtdXNiLT5jb250cm9sX2VwLT5yZWdzOwogCXN0cnVjdCB1c2JfcmVxdWVzdAkqcmVxOwotCXUxNgkJCXRtcDsKKwl1MTYJCQljb3VudCwgY3NyOwogCiAJcmVxID0gbmV4dF9lcDBfcmVxdWVzdChtdXNiKTsKIApAQCAtNDQ5LDM1ICs0NDksMzUgQEAKIAkJdW5zaWduZWQJbGVuID0gcmVxLT5sZW5ndGggLSByZXEtPmFjdHVhbDsKIAogCQkvKiByZWFkIHRoZSBidWZmZXIgKi8KLQkJdG1wID0gbXVzYl9yZWFkYihyZWdzLCBNVVNCX0NPVU5UMCk7Ci0JCWlmICh0bXAgPiBsZW4pIHsKKwkJY291bnQgPSBtdXNiX3JlYWRiKHJlZ3MsIE1VU0JfQ09VTlQwKTsKKwkJaWYgKGNvdW50ID4gbGVuKSB7CiAJCQlyZXEtPnN0YXR1cyA9IC1FT1ZFUkZMT1c7Ci0JCQl0bXAgPSBsZW47CisJCQljb3VudCA9IGxlbjsKIAkJfQotCQltdXNiX3JlYWRfZmlmbygmbXVzYi0+ZW5kcG9pbnRzWzBdLCB0bXAsIGJ1Zik7Ci0JCXJlcS0+YWN0dWFsICs9IHRtcDsKLQkJdG1wID0gTVVTQl9DU1IwX1BfU1ZEUlhQS1RSRFk7Ci0JCWlmICh0bXAgPCA2NCB8fCByZXEtPmFjdHVhbCA9PSByZXEtPmxlbmd0aCkgeworCQltdXNiX3JlYWRfZmlmbygmbXVzYi0+ZW5kcG9pbnRzWzBdLCBjb3VudCwgYnVmKTsKKwkJcmVxLT5hY3R1YWwgKz0gY291bnQ7CisJCWNzciA9IE1VU0JfQ1NSMF9QX1NWRFJYUEtUUkRZOworCQlpZiAoY291bnQgPCA2NCB8fCByZXEtPmFjdHVhbCA9PSByZXEtPmxlbmd0aCkgewogCQkJbXVzYi0+ZXAwX3N0YXRlID0gTVVTQl9FUDBfU1RBR0VfU1RBVFVTSU47Ci0JCQl0bXAgfD0gTVVTQl9DU1IwX1BfREFUQUVORDsKKwkJCWNzciB8PSBNVVNCX0NTUjBfUF9EQVRBRU5EOwogCQl9IGVsc2UKIAkJCXJlcSA9IE5VTEw7CiAJfSBlbHNlCi0JCXRtcCA9IE1VU0JfQ1NSMF9QX1NWRFJYUEtUUkRZIHwgTVVTQl9DU1IwX1BfU0VORFNUQUxMOworCQljc3IgPSBNVVNCX0NTUjBfUF9TVkRSWFBLVFJEWSB8IE1VU0JfQ1NSMF9QX1NFTkRTVEFMTDsKIAogCiAJLyogQ29tcGxldGlvbiBoYW5kbGVyIG1heSBjaG9vc2UgdG8gc3RhbGwsIGUuZy4gYmVjYXVzZSB0aGUKIAkgKiBtZXNzYWdlIGp1c3QgcmVjZWl2ZWQgaG9sZHMgaW52YWxpZCBkYXRhLgogCSAqLwogCWlmIChyZXEpIHsKLQkJbXVzYi0+YWNrcGVuZCA9IHRtcDsKKwkJbXVzYi0+YWNrcGVuZCA9IGNzcjsKIAkJbXVzYl9nX2VwMF9naXZlYmFjayhtdXNiLCByZXEpOwogCQlpZiAoIW11c2ItPmFja3BlbmQpCiAJCQlyZXR1cm47CiAJCW11c2ItPmFja3BlbmQgPSAwOwogCX0KIAltdXNiX2VwX3NlbGVjdChtdXNiLT5tcmVncywgMCk7Ci0JbXVzYl93cml0ZXcocmVncywgTVVTQl9DU1IwLCB0bXApOworCW11c2Jfd3JpdGV3KHJlZ3MsIE1VU0JfQ1NSMCwgY3NyKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9ob3N0LmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfaG9zdC5jCmluZGV4IDhiNGJlMDEuLjMxMzM5OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9ob3N0LmMKKysrIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2hvc3QuYwpAQCAtMTA4LDcgKzEwOCw3IEBACiAvKgogICogQ2xlYXIgVFggZmlmby4gTmVlZGVkIHRvIGF2b2lkIEJBQkJMRSBlcnJvcnMuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBtdXNiX2hfdHhfZmx1c2hfZmlmbyhzdHJ1Y3QgbXVzYl9od19lcCAqZXApCitzdGF0aWMgdm9pZCBtdXNiX2hfdHhfZmx1c2hfZmlmbyhzdHJ1Y3QgbXVzYl9od19lcCAqZXApCiB7CiAJdm9pZCBfX2lvbWVtCSplcGlvID0gZXAtPnJlZ3M7CiAJdTE2CQljc3I7CkBAIC0yOTEsNiArMjkxLDcgQEAKIAkJCXVyYi0+YWN0dWFsX2xlbmd0aCwgdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoCiAJCQkpOwogCisJdXNiX2hjZF91bmxpbmtfdXJiX2Zyb21fZXAobXVzYl90b19oY2QobXVzYiksIHVyYik7CiAJc3Bpbl91bmxvY2soJm11c2ItPmxvY2spOwogCXVzYl9oY2RfZ2l2ZWJhY2tfdXJiKG11c2JfdG9faGNkKG11c2IpLCB1cmIsIHN0YXR1cyk7CiAJc3Bpbl9sb2NrKCZtdXNiLT5sb2NrKTsKQEAgLTM1Myw4ICszNTQsNiBAQAogCQlicmVhazsKIAl9CiAKLQl1c2JfaGNkX3VubGlua191cmJfZnJvbV9lcChtdXNiX3RvX2hjZChtdXNiKSwgdXJiKTsKLQogCXFoLT5pc19yZWFkeSA9IDA7CiAJX19tdXNiX2dpdmViYWNrKG11c2IsIHVyYiwgc3RhdHVzKTsKIAlxaC0+aXNfcmVhZHkgPSByZWFkeTsKQEAgLTQzNiw3ICs0MzUsNyBAQAogCX0KIH0KIAotc3RhdGljIGlubGluZSB1MTYgbXVzYl9oX2ZsdXNoX3J4ZmlmbyhzdHJ1Y3QgbXVzYl9od19lcCAqaHdfZXAsIHUxNiBjc3IpCitzdGF0aWMgdTE2IG11c2JfaF9mbHVzaF9yeGZpZm8oc3RydWN0IG11c2JfaHdfZXAgKmh3X2VwLCB1MTYgY3NyKQogewogCS8qIHdlIGRvbid0IHdhbnQgZmlmbyB0byBmaWxsIGl0c2VsZiBhZ2FpbjsKIAkgKiBpZ25vcmUgZG1hICh2YXJpb3VzIG1vZGVscyksCkBAIC0xMDA1LDcgKzEwMDQsNyBAQAogCiAvKgogICogSGFuZGxlIGRlZmF1bHQgZW5kcG9pbnQgaW50ZXJydXB0IGFzIGhvc3QuIE9ubHkgY2FsbGVkIGluIElSUSB0aW1lCi0gKiBmcm9tIHRoZSBMaW51eElzcigpIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUuCisgKiBmcm9tIG11c2JfaW50ZXJydXB0KCkuCiAgKgogICogY2FsbGVkIHdpdGggY29udHJvbGxlciBpcnFsb2NrZWQKICAqLwpAQCAtMTc5MSw3ICsxNzkwLDkgQEAKIAkgKi8KIAlxaCA9IGt6YWxsb2Moc2l6ZW9mICpxaCwgbWVtX2ZsYWdzKTsKIAlpZiAoIXFoKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZtdXNiLT5sb2NrLCBmbGFncyk7CiAJCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKGhjZCwgdXJiKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXVzYi0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKQEAgLTE4NzMsNyArMTg3NCwxMSBAQAogCQkJLyogc2V0IHVwIHR0IGluZm8gaWYgbmVlZGVkICovCiAJCQlpZiAodXJiLT5kZXYtPnR0KSB7CiAJCQkJcWgtPmhfcG9ydF9yZWcgPSAodTgpIHVyYi0+ZGV2LT50dHBvcnQ7Ci0JCQkJcWgtPmhfYWRkcl9yZWcgfD0gMHg4MDsKKwkJCQlpZiAodXJiLT5kZXYtPnR0LT5odWIpCisJCQkJCXFoLT5oX2FkZHJfcmVnID0KKwkJCQkJCSh1OCkgdXJiLT5kZXYtPnR0LT5odWItPmRldm51bTsKKwkJCQlpZiAodXJiLT5kZXYtPnR0LT5tdWx0aSkKKwkJCQkJcWgtPmhfYWRkcl9yZWcgfD0gMHg4MDsKIAkJCX0KIAkJfQogCX0KQEAgLTE5MDMsNyArMTkwOCw5IEBACiAKIGRvbmU6CiAJaWYgKHJldCAhPSAwKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZtdXNiLT5sb2NrLCBmbGFncyk7CiAJCXVzYl9oY2RfdW5saW5rX3VyYl9mcm9tX2VwKGhjZCwgdXJiKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXVzYi0+bG9jaywgZmxhZ3MpOwogCQlrZnJlZShxaCk7CiAJfQogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfaW8uaCBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9pby5oCmluZGV4IDZiYmVkYWUuLjIyM2YwYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9pby5oCisrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9pby5oCkBAIC0zNyw3ICszNyw5IEBACiAKICNpbmNsdWRlIDxsaW51eC9pby5oPgogCi0jaWZuZGVmCUNPTkZJR19BUk0KKyNpZiAhZGVmaW5lZChDT05GSUdfQVJNKSAmJiAhZGVmaW5lZChDT05GSUdfU1VQRVJIKSBcCisJJiYgIWRlZmluZWQoQ09ORklHX0FWUjMyKSAmJiAhZGVmaW5lZChDT05GSUdfUFBDMzIpIFwKKwkmJiAhZGVmaW5lZChDT05GSUdfUFBDNjQpCiBzdGF0aWMgaW5saW5lIHZvaWQgcmVhZHNsKGNvbnN0IHZvaWQgX19pb21lbSAqYWRkciwgdm9pZCAqYnVmLCBpbnQgbGVuKQogCXsgaW5zbCgodW5zaWduZWQgbG9uZylhZGRyLCBidWYsIGxlbik7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCByZWFkc3coY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB2b2lkICpidWYsIGludCBsZW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuYwppbmRleCA5YmE4ZmI3Li44YzczNGVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jCisrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMKQEAgLTQ1LDggKzQ1LDggQEAKICNkZWZpbmUgTVVTQl9IU0RNQV9BRERSRVNTCQkweDgKICNkZWZpbmUgTVVTQl9IU0RNQV9DT1VOVAkJMHhjCiAKLSNkZWZpbmUgTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChfYkNoYW5uZWwsIF9vZmZzZXQpCQlcCi0JCShNVVNCX0hTRE1BX0JBU0UgKyAoX2JDaGFubmVsIDw8IDQpICsgX29mZnNldCkKKyNkZWZpbmUgTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChfYmNoYW5uZWwsIF9vZmZzZXQpCQlcCisJCShNVVNCX0hTRE1BX0JBU0UgKyAoX2JjaGFubmVsIDw8IDQpICsgX29mZnNldCkKIAogLyogY29udHJvbCByZWdpc3RlciAoMTYtYml0KTogKi8KICNkZWZpbmUgTVVTQl9IU0RNQV9FTkFCTEVfU0hJRlQJCTAKQEAgLTY3LDIzICs2NywyMyBAQAogc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXI7CiAKIHN0cnVjdCBtdXNiX2RtYV9jaGFubmVsIHsKLQlzdHJ1Y3QgZG1hX2NoYW5uZWwJCUNoYW5uZWw7CisJc3RydWN0IGRtYV9jaGFubmVsCQljaGFubmVsOwogCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyCSpjb250cm9sbGVyOwotCXUzMgkJCQlkd1N0YXJ0QWRkcmVzczsKKwl1MzIJCQkJc3RhcnRfYWRkcjsKIAl1MzIJCQkJbGVuOwotCXUxNgkJCQl3TWF4UGFja2V0U2l6ZTsKLQl1OAkJCQliSW5kZXg7CisJdTE2CQkJCW1heF9wYWNrZXRfc3o7CisJdTgJCQkJaWR4OwogCXU4CQkJCWVwbnVtOwogCXU4CQkJCXRyYW5zbWl0OwogfTsKIAogc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIgewotCXN0cnVjdCBkbWFfY29udHJvbGxlcgkJQ29udHJvbGxlcjsKLQlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbAkJYUNoYW5uZWxbTVVTQl9IU0RNQV9DSEFOTkVMU107Ci0Jdm9pZAkJCQkqcERtYVByaXZhdGU7Ci0Jdm9pZCBfX2lvbWVtCQkJKnBDb3JlQmFzZTsKLQl1OAkJCQliQ2hhbm5lbENvdW50OwotCXU4CQkJCWJtVXNlZENoYW5uZWxzOworCXN0cnVjdCBkbWFfY29udHJvbGxlcgkJY29udHJvbGxlcjsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbAkJY2hhbm5lbFtNVVNCX0hTRE1BX0NIQU5ORUxTXTsKKwl2b2lkCQkJCSpwcml2YXRlX2RhdGE7CisJdm9pZCBfX2lvbWVtCQkJKmJhc2U7CisJdTgJCQkJY2hhbm5lbF9jb3VudDsKKwl1OAkJCQl1c2VkX2NoYW5uZWxzOwogCXU4CQkJCWlycTsKIH07CiAKQEAgLTkzLDkxICs5Myw5MSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkbWFfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBkbWFfY2hhbm5lbCAqcENoYW5uZWwpOworc3RhdGljIHZvaWQgZG1hX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgZG1hX2NoYW5uZWwgKmNoYW5uZWwpOwogCiBzdGF0aWMgaW50IGRtYV9jb250cm9sbGVyX3N0b3Aoc3RydWN0IGRtYV9jb250cm9sbGVyICpjKQogewotCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0KLQkJY29udGFpbmVyX29mKGMsIHN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyLCBDb250cm9sbGVyKTsKLQlzdHJ1Y3QgbXVzYiAqbXVzYiA9IChzdHJ1Y3QgbXVzYiAqKSBjb250cm9sbGVyLT5wRG1hUHJpdmF0ZTsKLQlzdHJ1Y3QgZG1hX2NoYW5uZWwgKnBDaGFubmVsOwotCXU4IGJCaXQ7CisJc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBjb250YWluZXJfb2YoYywKKwkJCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyLCBjb250cm9sbGVyKTsKKwlzdHJ1Y3QgbXVzYiAqbXVzYiA9IGNvbnRyb2xsZXItPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZG1hX2NoYW5uZWwgKmNoYW5uZWw7CisJdTggYml0OwogCi0JaWYgKGNvbnRyb2xsZXItPmJtVXNlZENoYW5uZWxzICE9IDApIHsKKwlpZiAoY29udHJvbGxlci0+dXNlZF9jaGFubmVscyAhPSAwKSB7CiAJCWRldl9lcnIobXVzYi0+Y29udHJvbGxlciwKIAkJCSJTdG9wcGluZyBETUEgY29udHJvbGxlciB3aGlsZSBjaGFubmVsIGFjdGl2ZVxuIik7CiAKLQkJZm9yIChiQml0ID0gMDsgYkJpdCA8IE1VU0JfSFNETUFfQ0hBTk5FTFM7IGJCaXQrKykgewotCQkJaWYgKGNvbnRyb2xsZXItPmJtVXNlZENoYW5uZWxzICYgKDEgPDwgYkJpdCkpIHsKLQkJCQlwQ2hhbm5lbCA9ICZjb250cm9sbGVyLT5hQ2hhbm5lbFtiQml0XS5DaGFubmVsOwotCQkJCWRtYV9jaGFubmVsX3JlbGVhc2UocENoYW5uZWwpOworCQlmb3IgKGJpdCA9IDA7IGJpdCA8IE1VU0JfSFNETUFfQ0hBTk5FTFM7IGJpdCsrKSB7CisJCQlpZiAoY29udHJvbGxlci0+dXNlZF9jaGFubmVscyAmICgxIDw8IGJpdCkpIHsKKwkJCQljaGFubmVsID0gJmNvbnRyb2xsZXItPmNoYW5uZWxbYml0XS5jaGFubmVsOworCQkJCWRtYV9jaGFubmVsX3JlbGVhc2UoY2hhbm5lbCk7CiAKLQkJCQlpZiAoIWNvbnRyb2xsZXItPmJtVXNlZENoYW5uZWxzKQorCQkJCWlmICghY29udHJvbGxlci0+dXNlZF9jaGFubmVscykKIAkJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAl9CisKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBkbWFfY2hhbm5lbCAqZG1hX2NoYW5uZWxfYWxsb2NhdGUoc3RydWN0IGRtYV9jb250cm9sbGVyICpjLAogCQkJCXN0cnVjdCBtdXNiX2h3X2VwICpod19lcCwgdTggdHJhbnNtaXQpCiB7Ci0JdTggYkJpdDsKLQlzdHJ1Y3QgZG1hX2NoYW5uZWwgKnBDaGFubmVsID0gTlVMTDsKLQlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqcEltcGxDaGFubmVsID0gTlVMTDsKLQlzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciAqY29udHJvbGxlciA9Ci0JCQljb250YWluZXJfb2YoYywgc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIsIENvbnRyb2xsZXIpOworCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0gY29udGFpbmVyX29mKGMsCisJCQlzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciwgY29udHJvbGxlcik7CisJc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKm11c2JfY2hhbm5lbCA9IE5VTEw7CisJc3RydWN0IGRtYV9jaGFubmVsICpjaGFubmVsID0gTlVMTDsKKwl1OCBiaXQ7CiAKLQlmb3IgKGJCaXQgPSAwOyBiQml0IDwgTVVTQl9IU0RNQV9DSEFOTkVMUzsgYkJpdCsrKSB7Ci0JCWlmICghKGNvbnRyb2xsZXItPmJtVXNlZENoYW5uZWxzICYgKDEgPDwgYkJpdCkpKSB7Ci0JCQljb250cm9sbGVyLT5ibVVzZWRDaGFubmVscyB8PSAoMSA8PCBiQml0KTsKLQkJCXBJbXBsQ2hhbm5lbCA9ICYoY29udHJvbGxlci0+YUNoYW5uZWxbYkJpdF0pOwotCQkJcEltcGxDaGFubmVsLT5jb250cm9sbGVyID0gY29udHJvbGxlcjsKLQkJCXBJbXBsQ2hhbm5lbC0+YkluZGV4ID0gYkJpdDsKLQkJCXBJbXBsQ2hhbm5lbC0+ZXBudW0gPSBod19lcC0+ZXBudW07Ci0JCQlwSW1wbENoYW5uZWwtPnRyYW5zbWl0ID0gdHJhbnNtaXQ7Ci0JCQlwQ2hhbm5lbCA9ICYocEltcGxDaGFubmVsLT5DaGFubmVsKTsKLQkJCXBDaGFubmVsLT5wcml2YXRlX2RhdGEgPSBwSW1wbENoYW5uZWw7Ci0JCQlwQ2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0ZSRUU7Ci0JCQlwQ2hhbm5lbC0+bWF4X2xlbiA9IDB4MTAwMDA7CisJZm9yIChiaXQgPSAwOyBiaXQgPCBNVVNCX0hTRE1BX0NIQU5ORUxTOyBiaXQrKykgeworCQlpZiAoIShjb250cm9sbGVyLT51c2VkX2NoYW5uZWxzICYgKDEgPDwgYml0KSkpIHsKKwkJCWNvbnRyb2xsZXItPnVzZWRfY2hhbm5lbHMgfD0gKDEgPDwgYml0KTsKKwkJCW11c2JfY2hhbm5lbCA9ICYoY29udHJvbGxlci0+Y2hhbm5lbFtiaXRdKTsKKwkJCW11c2JfY2hhbm5lbC0+Y29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisJCQltdXNiX2NoYW5uZWwtPmlkeCA9IGJpdDsKKwkJCW11c2JfY2hhbm5lbC0+ZXBudW0gPSBod19lcC0+ZXBudW07CisJCQltdXNiX2NoYW5uZWwtPnRyYW5zbWl0ID0gdHJhbnNtaXQ7CisJCQljaGFubmVsID0gJihtdXNiX2NoYW5uZWwtPmNoYW5uZWwpOworCQkJY2hhbm5lbC0+cHJpdmF0ZV9kYXRhID0gbXVzYl9jaGFubmVsOworCQkJY2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0ZSRUU7CisJCQljaGFubmVsLT5tYXhfbGVuID0gMHgxMDAwMDsKIAkJCS8qIFR4ID0+IG1vZGUgMTsgUnggPT4gbW9kZSAwICovCi0JCQlwQ2hhbm5lbC0+ZGVzaXJlZF9tb2RlID0gdHJhbnNtaXQ7Ci0JCQlwQ2hhbm5lbC0+YWN0dWFsX2xlbiA9IDA7CisJCQljaGFubmVsLT5kZXNpcmVkX21vZGUgPSB0cmFuc21pdDsKKwkJCWNoYW5uZWwtPmFjdHVhbF9sZW4gPSAwOwogCQkJYnJlYWs7CiAJCX0KIAl9Ci0JcmV0dXJuIHBDaGFubmVsOworCisJcmV0dXJuIGNoYW5uZWw7CiB9CiAKLXN0YXRpYyB2b2lkIGRtYV9jaGFubmVsX3JlbGVhc2Uoc3RydWN0IGRtYV9jaGFubmVsICpwQ2hhbm5lbCkKK3N0YXRpYyB2b2lkIGRtYV9jaGFubmVsX3JlbGVhc2Uoc3RydWN0IGRtYV9jaGFubmVsICpjaGFubmVsKQogewotCXN0cnVjdCBtdXNiX2RtYV9jaGFubmVsICpwSW1wbENoYW5uZWwgPQotCQkoc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKikgcENoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqbXVzYl9jaGFubmVsID0gY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOwogCi0JcENoYW5uZWwtPmFjdHVhbF9sZW4gPSAwOwotCXBJbXBsQ2hhbm5lbC0+ZHdTdGFydEFkZHJlc3MgPSAwOwotCXBJbXBsQ2hhbm5lbC0+bGVuID0gMDsKKwljaGFubmVsLT5hY3R1YWxfbGVuID0gMDsKKwltdXNiX2NoYW5uZWwtPnN0YXJ0X2FkZHIgPSAwOworCW11c2JfY2hhbm5lbC0+bGVuID0gMDsKIAotCXBJbXBsQ2hhbm5lbC0+Y29udHJvbGxlci0+Ym1Vc2VkQ2hhbm5lbHMgJj0KLQkJfigxIDw8IHBJbXBsQ2hhbm5lbC0+YkluZGV4KTsKKwltdXNiX2NoYW5uZWwtPmNvbnRyb2xsZXItPnVzZWRfY2hhbm5lbHMgJj0KKwkJfigxIDw8IG11c2JfY2hhbm5lbC0+aWR4KTsKIAotCXBDaGFubmVsLT5zdGF0dXMgPSBNVVNCX0RNQV9TVEFUVVNfVU5LTk9XTjsKKwljaGFubmVsLT5zdGF0dXMgPSBNVVNCX0RNQV9TVEFUVVNfVU5LTk9XTjsKIH0KIAotc3RhdGljIHZvaWQgY29uZmlndXJlX2NoYW5uZWwoc3RydWN0IGRtYV9jaGFubmVsICpwQ2hhbm5lbCwKK3N0YXRpYyB2b2lkIGNvbmZpZ3VyZV9jaGFubmVsKHN0cnVjdCBkbWFfY2hhbm5lbCAqY2hhbm5lbCwKIAkJCQl1MTYgcGFja2V0X3N6LCB1OCBtb2RlLAogCQkJCWRtYV9hZGRyX3QgZG1hX2FkZHIsIHUzMiBsZW4pCiB7Ci0Jc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKnBJbXBsQ2hhbm5lbCA9Ci0JCShzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqKSBwQ2hhbm5lbC0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0gcEltcGxDaGFubmVsLT5jb250cm9sbGVyOwotCXZvaWQgX19pb21lbSAqbWJhc2UgPSBjb250cm9sbGVyLT5wQ29yZUJhc2U7Ci0JdTggYkNoYW5uZWwgPSBwSW1wbENoYW5uZWwtPmJJbmRleDsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqbXVzYl9jaGFubmVsID0gY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0gbXVzYl9jaGFubmVsLT5jb250cm9sbGVyOworCXZvaWQgX19pb21lbSAqbWJhc2UgPSBjb250cm9sbGVyLT5iYXNlOworCXU4IGJjaGFubmVsID0gbXVzYl9jaGFubmVsLT5pZHg7CiAJdTE2IGNzciA9IDA7CiAKIAlEQkcoNCwgIiVwLCBwa3Rfc3ogJWQsIGFkZHIgMHgleCwgbGVuICVkLCBtb2RlICVkXG4iLAotCQkJcENoYW5uZWwsIHBhY2tldF9zeiwgZG1hX2FkZHIsIGxlbiwgbW9kZSk7CisJCQljaGFubmVsLCBwYWNrZXRfc3osIGRtYV9hZGRyLCBsZW4sIG1vZGUpOwogCiAJaWYgKG1vZGUpIHsKIAkJY3NyIHw9IDEgPDwgTVVTQl9IU0RNQV9NT0RFMV9TSElGVDsKQEAgLTE5NSwxODAgKzE5NSwxODMgQEAKIAkJfQogCX0KIAotCWNzciB8PSAocEltcGxDaGFubmVsLT5lcG51bSA8PCBNVVNCX0hTRE1BX0VORFBPSU5UX1NISUZUKQorCWNzciB8PSAobXVzYl9jaGFubmVsLT5lcG51bSA8PCBNVVNCX0hTRE1BX0VORFBPSU5UX1NISUZUKQogCQl8ICgxIDw8IE1VU0JfSFNETUFfRU5BQkxFX1NISUZUKQogCQl8ICgxIDw8IE1VU0JfSFNETUFfSVJRRU5BQkxFX1NISUZUKQotCQl8IChwSW1wbENoYW5uZWwtPnRyYW5zbWl0CisJCXwgKG11c2JfY2hhbm5lbC0+dHJhbnNtaXQKIAkJCQk/ICgxIDw8IE1VU0JfSFNETUFfVFJBTlNNSVRfU0hJRlQpCiAJCQkJOiAwKTsKIAogCS8qIGFkZHJlc3MvY291bnQgKi8KIAltdXNiX3dyaXRlbChtYmFzZSwKLQkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiQ2hhbm5lbCwgTVVTQl9IU0RNQV9BRERSRVNTKSwKKwkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiY2hhbm5lbCwgTVVTQl9IU0RNQV9BRERSRVNTKSwKIAkJZG1hX2FkZHIpOwogCW11c2Jfd3JpdGVsKG1iYXNlLAotCQlNVVNCX0hTRE1BX0NIQU5ORUxfT0ZGU0VUKGJDaGFubmVsLCBNVVNCX0hTRE1BX0NPVU5UKSwKKwkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiY2hhbm5lbCwgTVVTQl9IU0RNQV9DT1VOVCksCiAJCWxlbik7CiAKIAkvKiBjb250cm9sICh0aGlzIHNob3VsZCBzdGFydCB0aGluZ3MpICovCiAJbXVzYl93cml0ZXcobWJhc2UsCi0JCU1VU0JfSFNETUFfQ0hBTk5FTF9PRkZTRVQoYkNoYW5uZWwsIE1VU0JfSFNETUFfQ09OVFJPTCksCisJCU1VU0JfSFNETUFfQ0hBTk5FTF9PRkZTRVQoYmNoYW5uZWwsIE1VU0JfSFNETUFfQ09OVFJPTCksCiAJCWNzcik7CiB9CiAKLXN0YXRpYyBpbnQgZG1hX2NoYW5uZWxfcHJvZ3JhbShzdHJ1Y3QgZG1hX2NoYW5uZWwgKnBDaGFubmVsLAorc3RhdGljIGludCBkbWFfY2hhbm5lbF9wcm9ncmFtKHN0cnVjdCBkbWFfY2hhbm5lbCAqY2hhbm5lbCwKIAkJCQl1MTYgcGFja2V0X3N6LCB1OCBtb2RlLAogCQkJCWRtYV9hZGRyX3QgZG1hX2FkZHIsIHUzMiBsZW4pCiB7Ci0Jc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKnBJbXBsQ2hhbm5lbCA9Ci0JCQkoc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKikgcENoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqbXVzYl9jaGFubmVsID0gY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOwogCiAJREJHKDIsICJlcCVkLSVzIHBrdF9zeiAlZCwgZG1hX2FkZHIgMHgleCBsZW5ndGggJWQsIG1vZGUgJWRcbiIsCi0JCXBJbXBsQ2hhbm5lbC0+ZXBudW0sCi0JCXBJbXBsQ2hhbm5lbC0+dHJhbnNtaXQgPyAiVHgiIDogIlJ4IiwKKwkJbXVzYl9jaGFubmVsLT5lcG51bSwKKwkJbXVzYl9jaGFubmVsLT50cmFuc21pdCA/ICJUeCIgOiAiUngiLAogCQlwYWNrZXRfc3osIGRtYV9hZGRyLCBsZW4sIG1vZGUpOwogCi0JQlVHX09OKHBDaGFubmVsLT5zdGF0dXMgPT0gTVVTQl9ETUFfU1RBVFVTX1VOS05PV04gfHwKLQkJcENoYW5uZWwtPnN0YXR1cyA9PSBNVVNCX0RNQV9TVEFUVVNfQlVTWSk7CisJQlVHX09OKGNoYW5uZWwtPnN0YXR1cyA9PSBNVVNCX0RNQV9TVEFUVVNfVU5LTk9XTiB8fAorCQljaGFubmVsLT5zdGF0dXMgPT0gTVVTQl9ETUFfU1RBVFVTX0JVU1kpOwogCi0JcENoYW5uZWwtPmFjdHVhbF9sZW4gPSAwOwotCXBJbXBsQ2hhbm5lbC0+ZHdTdGFydEFkZHJlc3MgPSBkbWFfYWRkcjsKLQlwSW1wbENoYW5uZWwtPmxlbiA9IGxlbjsKLQlwSW1wbENoYW5uZWwtPndNYXhQYWNrZXRTaXplID0gcGFja2V0X3N6OwotCXBDaGFubmVsLT5zdGF0dXMgPSBNVVNCX0RNQV9TVEFUVVNfQlVTWTsKKwljaGFubmVsLT5hY3R1YWxfbGVuID0gMDsKKwltdXNiX2NoYW5uZWwtPnN0YXJ0X2FkZHIgPSBkbWFfYWRkcjsKKwltdXNiX2NoYW5uZWwtPmxlbiA9IGxlbjsKKwltdXNiX2NoYW5uZWwtPm1heF9wYWNrZXRfc3ogPSBwYWNrZXRfc3o7CisJY2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0JVU1k7CiAKIAlpZiAoKG1vZGUgPT0gMSkgJiYgKGxlbiA+PSBwYWNrZXRfc3opKQotCQljb25maWd1cmVfY2hhbm5lbChwQ2hhbm5lbCwgcGFja2V0X3N6LCAxLCBkbWFfYWRkciwgbGVuKTsKKwkJY29uZmlndXJlX2NoYW5uZWwoY2hhbm5lbCwgcGFja2V0X3N6LCAxLCBkbWFfYWRkciwgbGVuKTsKIAllbHNlCi0JCWNvbmZpZ3VyZV9jaGFubmVsKHBDaGFubmVsLCBwYWNrZXRfc3osIDAsIGRtYV9hZGRyLCBsZW4pOworCQljb25maWd1cmVfY2hhbm5lbChjaGFubmVsLCBwYWNrZXRfc3osIDAsIGRtYV9hZGRyLCBsZW4pOwogCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQgZG1hX2NoYW5uZWxfYWJvcnQoc3RydWN0IGRtYV9jaGFubmVsICpwQ2hhbm5lbCkKK3N0YXRpYyBpbnQgZG1hX2NoYW5uZWxfYWJvcnQoc3RydWN0IGRtYV9jaGFubmVsICpjaGFubmVsKQogewotCXN0cnVjdCBtdXNiX2RtYV9jaGFubmVsICpwSW1wbENoYW5uZWwgPQotCQkoc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKikgcENoYW5uZWwtPnByaXZhdGVfZGF0YTsKLQl1OCBiQ2hhbm5lbCA9IHBJbXBsQ2hhbm5lbC0+YkluZGV4OwotCXZvaWQgX19pb21lbSAqbWJhc2UgPSBwSW1wbENoYW5uZWwtPmNvbnRyb2xsZXItPnBDb3JlQmFzZTsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqbXVzYl9jaGFubmVsID0gY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCXZvaWQgX19pb21lbSAqbWJhc2UgPSBtdXNiX2NoYW5uZWwtPmNvbnRyb2xsZXItPmJhc2U7CisKKwl1OCBiY2hhbm5lbCA9IG11c2JfY2hhbm5lbC0+aWR4OwogCXUxNiBjc3I7CiAKLQlpZiAocENoYW5uZWwtPnN0YXR1cyA9PSBNVVNCX0RNQV9TVEFUVVNfQlVTWSkgewotCQlpZiAocEltcGxDaGFubmVsLT50cmFuc21pdCkgeworCWlmIChjaGFubmVsLT5zdGF0dXMgPT0gTVVTQl9ETUFfU1RBVFVTX0JVU1kpIHsKKwkJaWYgKG11c2JfY2hhbm5lbC0+dHJhbnNtaXQpIHsKIAogCQkJY3NyID0gbXVzYl9yZWFkdyhtYmFzZSwKLQkJCQlNVVNCX0VQX09GRlNFVChwSW1wbENoYW5uZWwtPmVwbnVtLAorCQkJCU1VU0JfRVBfT0ZGU0VUKG11c2JfY2hhbm5lbC0+ZXBudW0sCiAJCQkJCQlNVVNCX1RYQ1NSKSk7CiAJCQljc3IgJj0gfihNVVNCX1RYQ1NSX0FVVE9TRVQgfAogCQkJCSBNVVNCX1RYQ1NSX0RNQUVOQUIgfAogCQkJCSBNVVNCX1RYQ1NSX0RNQU1PREUpOwogCQkJbXVzYl93cml0ZXcobWJhc2UsCi0JCQkJTVVTQl9FUF9PRkZTRVQocEltcGxDaGFubmVsLT5lcG51bSwKLQkJCQkJCU1VU0JfVFhDU1IpLAorCQkJCU1VU0JfRVBfT0ZGU0VUKG11c2JfY2hhbm5lbC0+ZXBudW0sIE1VU0JfVFhDU1IpLAogCQkJCWNzcik7CiAJCX0gZWxzZSB7CiAJCQljc3IgPSBtdXNiX3JlYWR3KG1iYXNlLAotCQkJCU1VU0JfRVBfT0ZGU0VUKHBJbXBsQ2hhbm5lbC0+ZXBudW0sCisJCQkJTVVTQl9FUF9PRkZTRVQobXVzYl9jaGFubmVsLT5lcG51bSwKIAkJCQkJCU1VU0JfUlhDU1IpKTsKIAkJCWNzciAmPSB+KE1VU0JfUlhDU1JfQVVUT0NMRUFSIHwKIAkJCQkgTVVTQl9SWENTUl9ETUFFTkFCIHwKIAkJCQkgTVVTQl9SWENTUl9ETUFNT0RFKTsKIAkJCW11c2Jfd3JpdGV3KG1iYXNlLAotCQkJCU1VU0JfRVBfT0ZGU0VUKHBJbXBsQ2hhbm5lbC0+ZXBudW0sCi0JCQkJCQlNVVNCX1JYQ1NSKSwKKwkJCQlNVVNCX0VQX09GRlNFVChtdXNiX2NoYW5uZWwtPmVwbnVtLCBNVVNCX1JYQ1NSKSwKIAkJCQljc3IpOwogCQl9CiAKIAkJbXVzYl93cml0ZXcobWJhc2UsCi0JCQlNVVNCX0hTRE1BX0NIQU5ORUxfT0ZGU0VUKGJDaGFubmVsLCBNVVNCX0hTRE1BX0NPTlRST0wpLAorCQkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiY2hhbm5lbCwgTVVTQl9IU0RNQV9DT05UUk9MKSwKIAkJCTApOwogCQltdXNiX3dyaXRlbChtYmFzZSwKLQkJCU1VU0JfSFNETUFfQ0hBTk5FTF9PRkZTRVQoYkNoYW5uZWwsIE1VU0JfSFNETUFfQUREUkVTUyksCisJCQlNVVNCX0hTRE1BX0NIQU5ORUxfT0ZGU0VUKGJjaGFubmVsLCBNVVNCX0hTRE1BX0FERFJFU1MpLAogCQkJMCk7CiAJCW11c2Jfd3JpdGVsKG1iYXNlLAotCQkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiQ2hhbm5lbCwgTVVTQl9IU0RNQV9DT1VOVCksCisJCQlNVVNCX0hTRE1BX0NIQU5ORUxfT0ZGU0VUKGJjaGFubmVsLCBNVVNCX0hTRE1BX0NPVU5UKSwKIAkJCTApOwogCi0JCXBDaGFubmVsLT5zdGF0dXMgPSBNVVNCX0RNQV9TVEFUVVNfRlJFRTsKKwkJY2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0ZSRUU7CiAJfQorCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBkbWFfY29udHJvbGxlcl9pcnEoaW50IGlycSwgdm9pZCAqcHJpdmF0ZV9kYXRhKQogewotCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0KLQkJKHN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICopcHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBtdXNiX2RtYV9jaGFubmVsICpwSW1wbENoYW5uZWw7Ci0Jc3RydWN0IG11c2IgKm11c2IgPSBjb250cm9sbGVyLT5wRG1hUHJpdmF0ZTsKLQl2b2lkIF9faW9tZW0gKm1iYXNlID0gY29udHJvbGxlci0+cENvcmVCYXNlOwotCXN0cnVjdCBkbWFfY2hhbm5lbCAqcENoYW5uZWw7Ci0JdTggYkNoYW5uZWw7Ci0JdTE2IGNzcjsKLQl1MzIgZHdBZGRyZXNzOwotCXU4IGludF9oc2RtYTsKKwlzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciAqY29udHJvbGxlciA9IHByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbXVzYiAqbXVzYiA9IGNvbnRyb2xsZXItPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqbXVzYl9jaGFubmVsOworCXN0cnVjdCBkbWFfY2hhbm5lbCAqY2hhbm5lbDsKKworCXZvaWQgX19pb21lbSAqbWJhc2UgPSBjb250cm9sbGVyLT5iYXNlOworCiAJaXJxcmV0dXJuX3QgcmV0dmFsID0gSVJRX05PTkU7CisKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJdTggYmNoYW5uZWw7CisJdTggaW50X2hzZG1hOworCisJdTMyIGFkZHI7CisJdTE2IGNzcjsKKwogCXNwaW5fbG9ja19pcnFzYXZlKCZtdXNiLT5sb2NrLCBmbGFncyk7CiAKIAlpbnRfaHNkbWEgPSBtdXNiX3JlYWRiKG1iYXNlLCBNVVNCX0hTRE1BX0lOVFIpOwogCWlmICghaW50X2hzZG1hKQogCQlnb3RvIGRvbmU7CiAKLQlmb3IgKGJDaGFubmVsID0gMDsgYkNoYW5uZWwgPCBNVVNCX0hTRE1BX0NIQU5ORUxTOyBiQ2hhbm5lbCsrKSB7Ci0JCWlmIChpbnRfaHNkbWEgJiAoMSA8PCBiQ2hhbm5lbCkpIHsKLQkJCXBJbXBsQ2hhbm5lbCA9IChzdHJ1Y3QgbXVzYl9kbWFfY2hhbm5lbCAqKQotCQkJCQkmKGNvbnRyb2xsZXItPmFDaGFubmVsW2JDaGFubmVsXSk7Ci0JCQlwQ2hhbm5lbCA9ICZwSW1wbENoYW5uZWwtPkNoYW5uZWw7CisJZm9yIChiY2hhbm5lbCA9IDA7IGJjaGFubmVsIDwgTVVTQl9IU0RNQV9DSEFOTkVMUzsgYmNoYW5uZWwrKykgeworCQlpZiAoaW50X2hzZG1hICYgKDEgPDwgYmNoYW5uZWwpKSB7CisJCQltdXNiX2NoYW5uZWwgPSAoc3RydWN0IG11c2JfZG1hX2NoYW5uZWwgKikKKwkJCQkJJihjb250cm9sbGVyLT5jaGFubmVsW2JjaGFubmVsXSk7CisJCQljaGFubmVsID0gJm11c2JfY2hhbm5lbC0+Y2hhbm5lbDsKIAogCQkJY3NyID0gbXVzYl9yZWFkdyhtYmFzZSwKLQkJCQkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiQ2hhbm5lbCwKKwkJCQkJTVVTQl9IU0RNQV9DSEFOTkVMX09GRlNFVChiY2hhbm5lbCwKIAkJCQkJCQlNVVNCX0hTRE1BX0NPTlRST0wpKTsKIAotCQkJaWYgKGNzciAmICgxIDw8IE1VU0JfSFNETUFfQlVTRVJST1JfU0hJRlQpKQotCQkJCXBJbXBsQ2hhbm5lbC0+Q2hhbm5lbC5zdGF0dXMgPQorCQkJaWYgKGNzciAmICgxIDw8IE1VU0JfSFNETUFfQlVTRVJST1JfU0hJRlQpKSB7CisJCQkJbXVzYl9jaGFubmVsLT5jaGFubmVsLnN0YXR1cyA9CiAJCQkJCU1VU0JfRE1BX1NUQVRVU19CVVNfQUJPUlQ7Ci0JCQllbHNlIHsKKwkJCX0gZWxzZSB7CiAJCQkJdTggZGV2Y3RsOwogCi0JCQkJZHdBZGRyZXNzID0gbXVzYl9yZWFkbChtYmFzZSwKKwkJCQlhZGRyID0gbXVzYl9yZWFkbChtYmFzZSwKIAkJCQkJCU1VU0JfSFNETUFfQ0hBTk5FTF9PRkZTRVQoCi0JCQkJCQkJYkNoYW5uZWwsCisJCQkJCQkJYmNoYW5uZWwsCiAJCQkJCQkJTVVTQl9IU0RNQV9BRERSRVNTKSk7Ci0JCQkJcENoYW5uZWwtPmFjdHVhbF9sZW4gPSBkd0FkZHJlc3MKLQkJCQkJLSBwSW1wbENoYW5uZWwtPmR3U3RhcnRBZGRyZXNzOworCQkJCWNoYW5uZWwtPmFjdHVhbF9sZW4gPSBhZGRyCisJCQkJCS0gbXVzYl9jaGFubmVsLT5zdGFydF9hZGRyOwogCiAJCQkJREJHKDIsICJjaCAlcCwgMHgleCAtPiAweCV4ICglZCAvICVkKSAlc1xuIiwKLQkJCQkJcENoYW5uZWwsIHBJbXBsQ2hhbm5lbC0+ZHdTdGFydEFkZHJlc3MsCi0JCQkJCWR3QWRkcmVzcywgcENoYW5uZWwtPmFjdHVhbF9sZW4sCi0JCQkJCXBJbXBsQ2hhbm5lbC0+bGVuLAotCQkJCQkocENoYW5uZWwtPmFjdHVhbF9sZW4KLQkJCQkJCTwgcEltcGxDaGFubmVsLT5sZW4pID8KKwkJCQkJY2hhbm5lbCwgbXVzYl9jaGFubmVsLT5zdGFydF9hZGRyLAorCQkJCQlhZGRyLCBjaGFubmVsLT5hY3R1YWxfbGVuLAorCQkJCQltdXNiX2NoYW5uZWwtPmxlbiwKKwkJCQkJKGNoYW5uZWwtPmFjdHVhbF9sZW4KKwkJCQkJCTwgbXVzYl9jaGFubmVsLT5sZW4pID8KIAkJCQkJIj0+IHJlY29uZmlnIDAiIDogIj0+IGNvbXBsZXRlIik7CiAKIAkJCQlkZXZjdGwgPSBtdXNiX3JlYWRiKG1iYXNlLCBNVVNCX0RFVkNUTCk7CiAKLQkJCQlwQ2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0ZSRUU7CisJCQkJY2hhbm5lbC0+c3RhdHVzID0gTVVTQl9ETUFfU1RBVFVTX0ZSRUU7CiAKIAkJCQkvKiBjb21wbGV0ZWQgKi8KIAkJCQlpZiAoKGRldmN0bCAmIE1VU0JfREVWQ1RMX0hNKQotCQkJCQkmJiAocEltcGxDaGFubmVsLT50cmFuc21pdCkKLQkJCQkJJiYgKChwQ2hhbm5lbC0+ZGVzaXJlZF9tb2RlID09IDApCi0JCQkJCSAgICB8fCAocENoYW5uZWwtPmFjdHVhbF9sZW4gJgotCQkJCQkgICAgKHBJbXBsQ2hhbm5lbC0+d01heFBhY2tldFNpemUgLSAxKSkpCisJCQkJCSYmIChtdXNiX2NoYW5uZWwtPnRyYW5zbWl0KQorCQkJCQkmJiAoKGNoYW5uZWwtPmRlc2lyZWRfbW9kZSA9PSAwKQorCQkJCQkgICAgfHwgKGNoYW5uZWwtPmFjdHVhbF9sZW4gJgorCQkJCQkgICAgKG11c2JfY2hhbm5lbC0+bWF4X3BhY2tldF9zeiAtIDEpKSkKIAkJCQkJICkgewogCQkJCQkvKiBTZW5kIG91dCB0aGUgcGFja2V0ICovCiAJCQkJCW11c2JfZXBfc2VsZWN0KG1iYXNlLAotCQkJCQkJcEltcGxDaGFubmVsLT5lcG51bSk7CisJCQkJCQltdXNiX2NoYW5uZWwtPmVwbnVtKTsKIAkJCQkJbXVzYl93cml0ZXcobWJhc2UsIE1VU0JfRVBfT0ZGU0VUKAotCQkJCQkJCXBJbXBsQ2hhbm5lbC0+ZXBudW0sCisJCQkJCQkJbXVzYl9jaGFubmVsLT5lcG51bSwKIAkJCQkJCQlNVVNCX1RYQ1NSKSwKIAkJCQkJCU1VU0JfVFhDU1JfVFhQS1RSRFkpOwotCQkJCX0gZWxzZQorCQkJCX0gZWxzZSB7CiAJCQkJCW11c2JfZG1hX2NvbXBsZXRpb24oCiAJCQkJCQltdXNiLAotCQkJCQkJcEltcGxDaGFubmVsLT5lcG51bSwKLQkJCQkJCXBJbXBsQ2hhbm5lbC0+dHJhbnNtaXQpOworCQkJCQkJbXVzYl9jaGFubmVsLT5lcG51bSwKKwkJCQkJCW11c2JfY2hhbm5lbC0+dHJhbnNtaXQpOworCQkJCX0KIAkJCX0KIAkJfQogCX0KQEAgLTM4MCw5ICszODMsOSBAQAogCiB2b2lkIGRtYV9jb250cm9sbGVyX2Rlc3Ryb3koc3RydWN0IGRtYV9jb250cm9sbGVyICpjKQogewotCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyOworCXN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyICpjb250cm9sbGVyID0gY29udGFpbmVyX29mKGMsCisJCQlzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciwgY29udHJvbGxlcik7CiAKLQljb250cm9sbGVyID0gY29udGFpbmVyX29mKGMsIHN0cnVjdCBtdXNiX2RtYV9jb250cm9sbGVyLCBDb250cm9sbGVyKTsKIAlpZiAoIWNvbnRyb2xsZXIpCiAJCXJldHVybjsKIApAQCAtMzkzLDcgKzM5Niw3IEBACiB9CiAKIHN0cnVjdCBkbWFfY29udHJvbGxlciAqX19pbml0Ci1kbWFfY29udHJvbGxlcl9jcmVhdGUoc3RydWN0IG11c2IgKm11c2IsIHZvaWQgX19pb21lbSAqcENvcmVCYXNlKQorZG1hX2NvbnRyb2xsZXJfY3JlYXRlKHN0cnVjdCBtdXNiICptdXNiLCB2b2lkIF9faW9tZW0gKmJhc2UpCiB7CiAJc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXI7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gbXVzYi0+Y29udHJvbGxlcjsKQEAgLTQwNSwyOSArNDA4LDMwIEBACiAJCXJldHVybiBOVUxMOwogCX0KIAotCWNvbnRyb2xsZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciksIEdGUF9LRVJORUwpOworCWNvbnRyb2xsZXIgPSBremFsbG9jKHNpemVvZigqY29udHJvbGxlciksIEdGUF9LRVJORUwpOwogCWlmICghY29udHJvbGxlcikKIAkJcmV0dXJuIE5VTEw7CiAKLQljb250cm9sbGVyLT5iQ2hhbm5lbENvdW50ID0gTVVTQl9IU0RNQV9DSEFOTkVMUzsKLQljb250cm9sbGVyLT5wRG1hUHJpdmF0ZSA9IG11c2I7Ci0JY29udHJvbGxlci0+cENvcmVCYXNlID0gcENvcmVCYXNlOworCWNvbnRyb2xsZXItPmNoYW5uZWxfY291bnQgPSBNVVNCX0hTRE1BX0NIQU5ORUxTOworCWNvbnRyb2xsZXItPnByaXZhdGVfZGF0YSA9IG11c2I7CisJY29udHJvbGxlci0+YmFzZSA9IGJhc2U7CiAKLQljb250cm9sbGVyLT5Db250cm9sbGVyLnN0YXJ0ID0gZG1hX2NvbnRyb2xsZXJfc3RhcnQ7Ci0JY29udHJvbGxlci0+Q29udHJvbGxlci5zdG9wID0gZG1hX2NvbnRyb2xsZXJfc3RvcDsKLQljb250cm9sbGVyLT5Db250cm9sbGVyLmNoYW5uZWxfYWxsb2MgPSBkbWFfY2hhbm5lbF9hbGxvY2F0ZTsKLQljb250cm9sbGVyLT5Db250cm9sbGVyLmNoYW5uZWxfcmVsZWFzZSA9IGRtYV9jaGFubmVsX3JlbGVhc2U7Ci0JY29udHJvbGxlci0+Q29udHJvbGxlci5jaGFubmVsX3Byb2dyYW0gPSBkbWFfY2hhbm5lbF9wcm9ncmFtOwotCWNvbnRyb2xsZXItPkNvbnRyb2xsZXIuY2hhbm5lbF9hYm9ydCA9IGRtYV9jaGFubmVsX2Fib3J0OworCWNvbnRyb2xsZXItPmNvbnRyb2xsZXIuc3RhcnQgPSBkbWFfY29udHJvbGxlcl9zdGFydDsKKwljb250cm9sbGVyLT5jb250cm9sbGVyLnN0b3AgPSBkbWFfY29udHJvbGxlcl9zdG9wOworCWNvbnRyb2xsZXItPmNvbnRyb2xsZXIuY2hhbm5lbF9hbGxvYyA9IGRtYV9jaGFubmVsX2FsbG9jYXRlOworCWNvbnRyb2xsZXItPmNvbnRyb2xsZXIuY2hhbm5lbF9yZWxlYXNlID0gZG1hX2NoYW5uZWxfcmVsZWFzZTsKKwljb250cm9sbGVyLT5jb250cm9sbGVyLmNoYW5uZWxfcHJvZ3JhbSA9IGRtYV9jaGFubmVsX3Byb2dyYW07CisJY29udHJvbGxlci0+Y29udHJvbGxlci5jaGFubmVsX2Fib3J0ID0gZG1hX2NoYW5uZWxfYWJvcnQ7CiAKIAlpZiAocmVxdWVzdF9pcnEoaXJxLCBkbWFfY29udHJvbGxlcl9pcnEsIElSUUZfRElTQUJMRUQsCi0JCQltdXNiLT5jb250cm9sbGVyLT5idXNfaWQsICZjb250cm9sbGVyLT5Db250cm9sbGVyKSkgeworCQkJbXVzYi0+Y29udHJvbGxlci0+YnVzX2lkLCAmY29udHJvbGxlci0+Y29udHJvbGxlcikpIHsKIAkJZGV2X2VycihkZXYsICJyZXF1ZXN0X2lycSAlZCBmYWlsZWQhXG4iLCBpcnEpOwotCQlkbWFfY29udHJvbGxlcl9kZXN0cm95KCZjb250cm9sbGVyLT5Db250cm9sbGVyKTsKKwkJZG1hX2NvbnRyb2xsZXJfZGVzdHJveSgmY29udHJvbGxlci0+Y29udHJvbGxlcik7CisKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJY29udHJvbGxlci0+aXJxID0gaXJxOwogCi0JcmV0dXJuICZjb250cm9sbGVyLT5Db250cm9sbGVyOworCXJldHVybiAmY29udHJvbGxlci0+Y29udHJvbGxlcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2FpcmNhYmxlLmMKaW5kZXggOTlmYjdkYy4uNTM3Zjk1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2FpcmNhYmxlLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2FpcmNhYmxlLmMKQEAgLTIyMCw4ICsyMjAsOCBAQAogCiAJYnVmID0ga3phbGxvYyhjb3VudCArIEhDSV9IRUFERVJfTEVOR1RILCBHRlBfQVRPTUlDKTsKIAlpZiAoIWJ1ZikgewotCQllcnIoIiVzLSBremFsbG9jKCVkKSBmYWlsZWQuIiwgX19mdW5jX18sCi0JCSAgICBjb3VudCArIEhDSV9IRUFERVJfTEVOR1RIKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMtIGt6YWxsb2MoJWQpIGZhaWxlZC5cbiIsCisJCQlfX2Z1bmNfXywgY291bnQgKyBIQ0lfSEVBREVSX0xFTkdUSCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTI3Niw3ICsyNzYsNyBAQAogCiAJaWYgKCF0dHkpIHsKIAkJc2NoZWR1bGVfd29yaygmcHJpdi0+cnhfd29yayk7Ci0JCWVycigiJXMgLSBObyB0dHkgYXZhaWxhYmxlIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIE5vIHR0eSBhdmFpbGFibGVcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDsKIAl9CiAKQEAgLTMzNiw3ICszMzYsNyBAQAogCiAJcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhaXJjYWJsZV9wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcml2KSB7Ci0JCWVycigiJXMtIGttYWxsb2MoJVpkKSBmYWlsZWQuIiwgX19mdW5jX18sCisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzLSBrbWFsbG9jKCVaZCkgZmFpbGVkLlxuIiwgX19mdW5jX18sCiAJCQlzaXplb2Yoc3RydWN0IGFpcmNhYmxlX3ByaXZhdGUpKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2JlbGtpbl9zYS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2JlbGtpbl9zYS5jCmluZGV4IDE5MTNiYzcuLmI3ZWFjYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9iZWxraW5fc2EuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvYmVsa2luX3NhLmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCS8qIHNlZSBjb21tZW50cyBhdCB0b3Agb2YgZmlsZSAqLwogCXByaXYtPmJhZF9mbG93X2NvbnRyb2wgPQogCQkobGUxNl90b19jcHUoZGV2LT5kZXNjcmlwdG9yLmJjZERldmljZSkgPD0gMHgwMjA2KSA/IDEgOiAwOwotCWluZm8oImJjZERldmljZTogJTA0eCwgYmZjOiAlZCIsCisJZGV2X2luZm8oJmRldi0+ZGV2LCAiYmNkRGV2aWNlOiAlMDR4LCBiZmM6ICVkXG4iLAogCQkJCQlsZTE2X3RvX2NwdShkZXYtPmRlc2NyaXB0b3IuYmNkRGV2aWNlKSwKIAkJCQkJcHJpdi0+YmFkX2Zsb3dfY29udHJvbCk7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQAogCXBvcnQtPnJlYWRfdXJiLT5kZXYgPSBwb3J0LT5zZXJpYWwtPmRldjsKIAlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldHZhbCkgewotCQllcnIoInVzYl9zdWJtaXRfdXJiKHJlYWQgYnVsaykgZmFpbGVkIik7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgInVzYl9zdWJtaXRfdXJiKHJlYWQgYnVsaykgZmFpbGVkXG4iKTsKIAkJZ290byBleGl0OwogCX0KIApAQCAtMjM2LDcgKzIzNiw3IEBACiAJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+aW50ZXJydXB0X2luX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldHZhbCkgewogCQl1c2Jfa2lsbF91cmIocG9ydC0+cmVhZF91cmIpOwotCQllcnIoIiB1c2Jfc3VibWl0X3VyYihyZWFkIGludCkgZmFpbGVkIik7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgInVzYl9zdWJtaXRfdXJiKHJlYWQgaW50KSBmYWlsZWRcbiIpOwogCX0KIAogZXhpdDoKQEAgLTM0Miw4ICszNDIsOCBAQAogZXhpdDoKIAlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCWlmIChyZXR2YWwpCi0JCWVycigiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWQiLAotCQkgICAgIF9fZnVuY19fLCByZXR2YWwpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIHVzYl9zdWJtaXRfdXJiIGZhaWxlZCB3aXRoICIKKwkJCSJyZXN1bHQgJWRcbiIsIF9fZnVuY19fLCByZXR2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBiZWxraW5fc2Ffc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKQEAgLTM4MiwxMiArMzgyLDEyIEBACiAJCWlmICgob2xkX2NmbGFnICYgQ0JBVUQpID09IEIwKSB7CiAJCQljb250cm9sX3N0YXRlIHw9IChUSU9DTV9EVFJ8VElPQ01fUlRTKTsKIAkJCWlmIChCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX0RUUl9SRVFVRVNULCAxKSA8IDApCi0JCQkJZXJyKCJTZXQgRFRSIGVycm9yIik7CisJCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiU2V0IERUUiBlcnJvclxuIik7CiAJCQkvKiBkb24ndCBzZXQgUlRTIGlmIHVzaW5nIGhhcmR3YXJlIGZsb3cgY29udHJvbCAqLwogCQkJaWYgKCEob2xkX2NmbGFnICYgQ1JUU0NUUykpCiAJCQkJaWYgKEJTQV9VU0JfQ01EKEJFTEtJTl9TQV9TRVRfUlRTX1JFUVVFU1QKIAkJCQkJCQkJLCAxKSA8IDApCi0JCQkJCWVycigiU2V0IFJUUyBlcnJvciIpOworCQkJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJTZXQgUlRTIGVycm9yXG4iKTsKIAkJfQogCX0KIApAQCAtNDAzLDE4ICs0MDMsMTggQEAKIAkJLyogUmVwb3J0IHRoZSBhY3R1YWwgYmF1ZCByYXRlIGJhY2sgdG8gdGhlIGNhbGxlciAqLwogCQl0dHlfZW5jb2RlX2JhdWRfcmF0ZSh0dHksIGJhdWQsIGJhdWQpOwogCQlpZiAoQlNBX1VTQl9DTUQoQkVMS0lOX1NBX1NFVF9CQVVEUkFURV9SRVFVRVNULCB1cmJfdmFsdWUpIDwgMCkKLQkJCWVycigiU2V0IGJhdWRyYXRlIGVycm9yIik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJTZXQgYmF1ZHJhdGUgZXJyb3JcbiIpOwogCX0gZWxzZSB7CiAJCS8qIERpc2FibGUgZmxvdyBjb250cm9sICovCiAJCWlmIChCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX0ZMT1dfQ1RSTF9SRVFVRVNULAogCQkJCQkJQkVMS0lOX1NBX0ZMT1dfTk9ORSkgPCAwKQotCQkJZXJyKCJEaXNhYmxlIGZsb3djb250cm9sIGVycm9yIik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJEaXNhYmxlIGZsb3djb250cm9sIGVycm9yXG4iKTsKIAkJLyogRHJvcCBSVFMgYW5kIERUUiAqLwogCQljb250cm9sX3N0YXRlICY9IH4oVElPQ01fRFRSIHwgVElPQ01fUlRTKTsKIAkJaWYgKEJTQV9VU0JfQ01EKEJFTEtJTl9TQV9TRVRfRFRSX1JFUVVFU1QsIDApIDwgMCkKLQkJCWVycigiRFRSIExPVyBlcnJvciIpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiRFRSIExPVyBlcnJvclxuIik7CiAJCWlmIChCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX1JUU19SRVFVRVNULCAwKSA8IDApCi0JCQllcnIoIlJUUyBMT1cgZXJyb3IiKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIlJUUyBMT1cgZXJyb3JcbiIpOwogCX0KIAogCS8qIHNldCB0aGUgcGFyaXR5ICovCkBAIC00MjUsNyArNDI1LDcgQEAKIAkJZWxzZQogCQkJdXJiX3ZhbHVlID0gQkVMS0lOX1NBX1BBUklUWV9OT05FOwogCQlpZiAoQlNBX1VTQl9DTUQoQkVMS0lOX1NBX1NFVF9QQVJJVFlfUkVRVUVTVCwgdXJiX3ZhbHVlKSA8IDApCi0JCQllcnIoIlNldCBwYXJpdHkgZXJyb3IiKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNldCBwYXJpdHkgZXJyb3JcbiIpOwogCX0KIAogCS8qIHNldCB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyAqLwpAQCAtNDQ4LDcgKzQ0OCw3IEBACiAJCQlicmVhazsKIAkJfQogCQlpZiAoQlNBX1VTQl9DTUQoQkVMS0lOX1NBX1NFVF9EQVRBX0JJVFNfUkVRVUVTVCwgdXJiX3ZhbHVlKSA8IDApCi0JCQllcnIoIlNldCBkYXRhIGJpdHMgZXJyb3IiKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNldCBkYXRhIGJpdHMgZXJyb3JcbiIpOwogCX0KIAogCS8qIHNldCB0aGUgbnVtYmVyIG9mIHN0b3AgYml0cyAqLwpAQCAtNDU3LDcgKzQ1Nyw3IEBACiAJCQkJCQk6IEJFTEtJTl9TQV9TVE9QX0JJVFMoMSk7CiAJCWlmIChCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX1NUT1BfQklUU19SRVFVRVNULAogCQkJCQkJCXVyYl92YWx1ZSkgPCAwKQotCQkJZXJyKCJTZXQgc3RvcCBiaXRzIGVycm9yIik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJTZXQgc3RvcCBiaXRzIGVycm9yXG4iKTsKIAl9CiAKIAkvKiBTZXQgZmxvdyBjb250cm9sICovCkBAIC00NzgsNyArNDc4LDcgQEAKIAkJCXVyYl92YWx1ZSAmPSB+KEJFTEtJTl9TQV9GTE9XX0lSVFMpOwogCiAJCWlmIChCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX0ZMT1dfQ1RSTF9SRVFVRVNULCB1cmJfdmFsdWUpIDwgMCkKLQkJCWVycigiU2V0IGZsb3cgY29udHJvbCBlcnJvciIpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiU2V0IGZsb3cgY29udHJvbCBlcnJvclxuIik7CiAJfQogCiAJLyogc2F2ZSBvZmYgdGhlIG1vZGlmaWVkIHBvcnQgc2V0dGluZ3MgKi8KQEAgLTQ5NCw3ICs0OTQsNyBAQAogCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7CiAKIAlpZiAoQlNBX1VTQl9DTUQoQkVMS0lOX1NBX1NFVF9CUkVBS19SRVFVRVNULCBicmVha19zdGF0ZSA/IDEgOiAwKSA8IDApCi0JCWVycigiU2V0IGJyZWFrX2N0bCAlZCIsIGJyZWFrX3N0YXRlKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiU2V0IGJyZWFrX2N0bCAlZFxuIiwgYnJlYWtfc3RhdGUpOwogfQogCiAKQEAgLTU1NCwxMyArNTU0LDEzIEBACiAKIAlyZXR2YWwgPSBCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX1JUU19SRVFVRVNULCBydHMpOwogCWlmIChyZXR2YWwgPCAwKSB7Ci0JCWVycigiU2V0IFJUUyBlcnJvciAlZCIsIHJldHZhbCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNldCBSVFMgZXJyb3IgJWRcbiIsIHJldHZhbCk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKIAlyZXR2YWwgPSBCU0FfVVNCX0NNRChCRUxLSU5fU0FfU0VUX0RUUl9SRVFVRVNULCBkdHIpOwogCWlmIChyZXR2YWwgPCAwKSB7Ci0JCWVycigiU2V0IERUUiBlcnJvciAlZCIsIHJldHZhbCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNldCBEVFIgZXJyb3IgJWRcbiIsIHJldHZhbCk7CiAJCWdvdG8gZXhpdDsKIAl9CiBleGl0OgpAQCAtNTc3LDcgKzU3Nyw4IEBACiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZiZWxraW5fZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7Ci0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3RlcigmYmVsa2luX2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMKaW5kZXggMTI3OTU1My4uODAwOGQwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEwMS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMDEuYwpAQCAtNzUzLDcgKzc1Myw4IEBACiAJfQogCiAJLyogU3VjY2VzcyAqLwotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3liZXJqYWNrLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3liZXJqYWNrLmMKaW5kZXggOTRlZjM2Yy4uODU4YmRkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5YmVyamFjay5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwpAQCAtMTQxLDcgKzE0MSw4IEBACiAJCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHNlcmlhbC0+cG9ydFtpXS0+aW50ZXJydXB0X2luX3VyYiwKIAkJCQkJR0ZQX0tFUk5FTCk7CiAJCWlmIChyZXN1bHQpCi0JCQllcnIoIiB1c2Jfc3VibWl0X3VyYihyZWFkIGludCkgZmFpbGVkIik7CisJCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkJCSJ1c2Jfc3VibWl0X3VyYihyZWFkIGludCkgZmFpbGVkXG4iKTsKIAkJZGJnKCIlcyAtIHVzYl9zdWJtaXRfdXJiKGludCB1cmIpIiwgX19mdW5jX18pOwogCX0KIApAQCAtMjc0LDggKzI3NSw5IEBACiAJCS8qIHNlbmQgdGhlIGRhdGEgb3V0IHRoZSBidWxrIHBvcnQgKi8KIAkJcmVzdWx0ID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+d3JpdGVfdXJiLCBHRlBfQVRPTUlDKTsKIAkJaWYgKHJlc3VsdCkgewotCQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWQiLAotCQkJCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWQiLAorCQkJCV9fZnVuY19fLCByZXN1bHQpOwogCQkJLyogVGhyb3cgYXdheSBkYXRhLiBObyBiZXR0ZXIgaWRlYSB3aGF0IHRvIGRvIHdpdGggaXQuICovCiAJCQlwcml2LT53cmZpbGxlZCA9IDA7CiAJCQlwcml2LT53cnNlbnQgPSAwOwpAQCAtMzUxLDcgKzM1Myw5IEBACiAJCQlwb3J0LT5yZWFkX3VyYi0+ZGV2ID0gcG9ydC0+c2VyaWFsLT5kZXY7CiAJCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0FUT01JQyk7CiAJCQlpZiAocmVzdWx0KQotCQkJCWVycigiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsIF9fZnVuY19fLCByZXN1bHQpOworCQkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyAiCisJCQkJCSJyZWFkIHVyYiwgZXJyb3IgJWRcbiIsCisJCQkJCV9fZnVuY19fLCByZXN1bHQpOwogCQkJZGJnKCIlcyAtIHVzYl9zdWJtaXRfdXJiKHJlYWQgdXJiKSIsIF9fZnVuY19fKTsKIAkJfQogCX0KQEAgLTM2MCw3ICszNjQsNyBAQAogCXBvcnQtPmludGVycnVwdF9pbl91cmItPmRldiA9IHBvcnQtPnNlcmlhbC0+ZGV2OwogCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPmludGVycnVwdF9pbl91cmIsIEdGUF9BVE9NSUMpOwogCWlmIChyZXN1bHQpCi0JCWVycigiIHVzYl9zdWJtaXRfdXJiKHJlYWQgaW50KSBmYWlsZWQiKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAidXNiX3N1Ym1pdF91cmIocmVhZCBpbnQpIGZhaWxlZFxuIik7CiAJZGJnKCIlcyAtIHVzYl9zdWJtaXRfdXJiKGludCB1cmIpIiwgX19mdW5jX18pOwogfQogCkBAIC00MTQsOCArNDE4LDggQEAKIAkJcG9ydC0+cmVhZF91cmItPmRldiA9IHBvcnQtPnNlcmlhbC0+ZGV2OwogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0FUT01JQyk7CiAJCWlmIChyZXN1bHQpCi0JCQllcnIoIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLAotCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgIgorCQkJCSJ1cmIsIGVycm9yICVkXG4iLCBfX2Z1bmNfXywgcmVzdWx0KTsKIAkJZGJnKCIlcyAtIHVzYl9zdWJtaXRfdXJiKHJlYWQgdXJiKSIsIF9fZnVuY19fKTsKIAl9CiB9CkBAIC00NjIsOCArNDY2LDkgQEAKIAkJLyogc2VuZCB0aGUgZGF0YSBvdXQgdGhlIGJ1bGsgcG9ydCAqLwogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT53cml0ZV91cmIsIEdGUF9BVE9NSUMpOwogCQlpZiAocmVzdWx0KSB7Ci0JCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcbiIsCisJCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJCQkvKiBUaHJvdyBhd2F5IGRhdGEuIE5vIGJldHRlciBpZGVhIHdoYXQgdG8gZG8gd2l0aCBpdC4gKi8KIAkJCXByaXYtPndyZmlsbGVkID0gMDsKIAkJCXByaXYtPndyc2VudCA9IDA7CkBAIC00OTksOCArNTA0LDkgQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICIgIiBEUklWRVJfQVVUSE9SKTsKLQlpbmZvKERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIiAiCisJICAgICAgIERSSVZFUl9BVVRIT1IgIlxuIik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMKaW5kZXggZjM1MTRhOS4uZWFlNDc0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jCkBAIC00MDQsOCArNDA0LDggQEAKIAkJCSByZXR2YWwgIT0gLUVOT0RFVik7CiAKIAkJaWYgKHJldHZhbCAhPSBzaXplb2YoZmVhdHVyZV9idWZmZXIpKSB7Ci0JCQllcnIoIiVzIC0gZmFpbGVkIHNlbmRpbmcgc2VyaWFsIGxpbmUgc2V0dGluZ3MgLSAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJldHZhbCk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIGZhaWxlZCBzZW5kaW5nIHNlcmlhbCAiCisJCQkJImxpbmUgc2V0dGluZ3MgLSAlZFxuIiwgX19mdW5jX18sIHJldHZhbCk7CiAJCQljeXByZXNzX3NldF9kZWFkKHBvcnQpOwogCQl9IGVsc2UgewogCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKQEAgLTQ0Myw3ICs0NDMsOCBAQAogCQkJCQkJJiYgcmV0dmFsICE9IC1FTk9ERVYpOwogCiAJCWlmIChyZXR2YWwgIT0gc2l6ZW9mKGZlYXR1cmVfYnVmZmVyKSkgewotCQkJZXJyKCIlcyAtIGZhaWxlZCB0byByZXRyaWV2ZSBzZXJpYWwgbGluZSBzZXR0aW5ncyAtICVkIiwgX19mdW5jX18sIHJldHZhbCk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIGZhaWxlZCB0byByZXRyaWV2ZSBzZXJpYWwgIgorCQkJCSJsaW5lIHNldHRpbmdzIC0gJWRcbiIsIF9fZnVuY19fLCByZXR2YWwpOwogCQkJY3lwcmVzc19zZXRfZGVhZChwb3J0KTsKIAkJCXJldHVybiByZXR2YWw7CiAJCX0gZWxzZSB7CkBAIC00NzYsOCArNDc3LDggQEAKIAlwcml2LT5jb21tX2lzX29rID0gMDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7CiAKLQllcnIoImN5cHJlc3NfbTggc3VzcGVuZGluZyBmYWlsaW5nIHBvcnQgJWQgLSBpbnRlcnZhbCBtaWdodCBiZSB0b28gc2hvcnQiLAotCSAgICBwb3J0LT5udW1iZXIpOworCWRldl9lcnIoJnBvcnQtPmRldiwgImN5cHJlc3NfbTggc3VzcGVuZGluZyBmYWlsaW5nIHBvcnQgJWQgLSAiCisJCSJpbnRlcnZhbCBtaWdodCBiZSB0b28gc2hvcnRcbiIsIHBvcnQtPm51bWJlcik7CiB9CiAKIApAQCAtNjc5LDcgKzY4MCw4IEBACiAKIAkvKiBzZXR1cCB0aGUgcG9ydCBhbmQgc3RhcnQgcmVhZGluZyBmcm9tIHRoZSBkZXZpY2UgKi8KIAlpZiAoIXBvcnQtPmludGVycnVwdF9pbl91cmIpIHsKLQkJZXJyKCIlcyAtIGludGVycnVwdF9pbl91cmIgaXMgZW1wdHkhIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIGludGVycnVwdF9pbl91cmIgaXMgZW1wdHkhXG4iLAorCQkJX19mdW5jX18pOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC0xMTA3LDggKzExMDksOCBAQAogCQlkYXRhX2JpdHMgPSAzOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQllcnIoIiVzIC0gQ1NJWkUgd2FzIHNldCwgYnV0IG5vdCBDUzUtQ1M4IiwKLQkJCQlfX2Z1bmNfXyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gQ1NJWkUgd2FzIHNldCwgYnV0IG5vdCBDUzUtQ1M4XG4iLAorCQkJX19mdW5jX18pOwogCQlkYXRhX2JpdHMgPSAzOwogCX0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwpAQCAtMTY1OCw3ICsxNjYwLDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7CiAKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIAogZmFpbGVkX3VzYl9yZWdpc3RlcjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9kaWdpX2FjY2VsZXBvcnQuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9kaWdpX2FjY2VsZXBvcnQuYwppbmRleCA1NzU2YWM2Li42OWY4NGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZGlnaV9hY2NlbGVwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2RpZ2lfYWNjZWxlcG9ydC5jCkBAIC02NjEsNyArNjYxLDggQEAKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb29iX3ByaXYtPmRwX3BvcnRfbG9jaywgZmxhZ3MpOwogCWlmIChyZXQpCi0JCWVycigiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZCwgcmV0PSVkIiwgX19mdW5jX18sIHJldCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOwogCXJldHVybiByZXQ7CiAKIH0KQEAgLTc0Myw3ICs3NDQsOCBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmRwX3BvcnRfbG9jaywgZmxhZ3MpOwogCiAJaWYgKHJldCkKLQkJZXJyKCIlczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkLCByZXQ9JWQsIHBvcnQ9JWQiLAorCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZCwgcmV0PSVkLCBwb3J0PSVkXG4iLAogCQkJX19mdW5jX18sIHJldCwgcHJpdi0+ZHBfcG9ydF9udW0pOwogCXJldHVybiByZXQ7CiB9CkBAIC04MTIsNyArODE0LDggQEAKIAlzcGluX3VubG9jaygmcG9ydF9wcml2LT5kcF9wb3J0X2xvY2spOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm9vYl9wcml2LT5kcF9wb3J0X2xvY2ssIGZsYWdzKTsKIAlpZiAocmV0KQotCQllcnIoIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZCIsIF9fZnVuY19fLCByZXQpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkLCByZXQ9JWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC05MDcsNyArOTEwLDggQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5kcF9wb3J0X2xvY2ssIGZsYWdzKTsKIAogCWlmIChyZXQpCi0JCWVycigiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZCwgcmV0PSVkLCBwb3J0PSVkIiwKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZCwgcG9ydD0lZFxuIiwKIAkJCV9fZnVuY19fLCByZXQsIHByaXYtPmRwX3BvcnRfbnVtKTsKIH0KIApAQCAtMTIxNCw3ICsxMjE4LDggQEAKIAkvKiByZXR1cm4gbGVuZ3RoIG9mIG5ldyBkYXRhIHdyaXR0ZW4sIG9yIGVycm9yICovCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+ZHBfcG9ydF9sb2NrLCBmbGFncyk7CiAJaWYgKHJldCA8IDApCi0JCWVycigiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZCwgcmV0PSVkLCBwb3J0PSVkIiwKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZCwgcG9ydD0lZFxuIiwKIAkJCV9fZnVuY19fLCByZXQsIHByaXYtPmRwX3BvcnRfbnVtKTsKIAlkYmcoImRpZ2lfd3JpdGU6IHJldHVybmluZyAlZCIsIHJldCk7CiAJcmV0dXJuIHJldDsKQEAgLTEyMzUsMTQgKzEyNDAsMTYgQEAKIAogCS8qIHBvcnQgYW5kIHNlcmlhbCBzYW5pdHkgY2hlY2sgKi8KIAlpZiAocG9ydCA9PSBOVUxMIHx8IChwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpKSA9PSBOVUxMKSB7Ci0JCWVycigiJXM6IHBvcnQgb3IgcG9ydC0+cHJpdmF0ZSBpcyBOVUxMLCBzdGF0dXM9JWQiLAotCQkgICAgX19mdW5jX18sIHN0YXR1cyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlczogcG9ydCBvciBwb3J0LT5wcml2YXRlIGlzIE5VTEwsIHN0YXR1cz0lZFxuIiwKKwkJCV9fZnVuY19fLCBzdGF0dXMpOwogCQlyZXR1cm47CiAJfQogCXNlcmlhbCA9IHBvcnQtPnNlcmlhbDsKIAlpZiAoc2VyaWFsID09IE5VTEwgfHwgKHNlcmlhbF9wcml2ID0gdXNiX2dldF9zZXJpYWxfZGF0YShzZXJpYWwpKSA9PSBOVUxMKSB7Ci0JCWVycigiJXM6IHNlcmlhbCBvciBzZXJpYWwtPnByaXZhdGUgaXMgTlVMTCwgc3RhdHVzPSVkIiwKLQkJICAgIF9fZnVuY19fLCBzdGF0dXMpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXM6IHNlcmlhbCBvciBzZXJpYWwtPnByaXZhdGUgaXMgTlVMTCwgc3RhdHVzPSVkXG4iLAorCQkJX19mdW5jX18sIHN0YXR1cyk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEyODQsNyArMTI5MSw4IEBACiAKIAlzcGluX3VubG9jaygmcHJpdi0+ZHBfcG9ydF9sb2NrKTsKIAlpZiAocmV0KQotCQllcnIoIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZCwgcG9ydD0lZCIsCisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkLCByZXQ9JWQsIHBvcnQ9JWRcbiIsCiAJCQlfX2Z1bmNfXywgcmV0LCBwcml2LT5kcF9wb3J0X251bSk7CiB9CiAKQEAgLTE1MTgsOCArMTUyNiw5IEBACiAJCXBvcnQtPndyaXRlX3VyYi0+ZGV2ID0gcG9ydC0+c2VyaWFsLT5kZXY7CiAJCXJldCA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPnJlYWRfdXJiLCBHRlBfS0VSTkVMKTsKIAkJaWYgKHJldCAhPSAwKSB7Ci0JCQllcnIoIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWQsIHJldD0lZCwgcG9ydD0lZCIsCi0JCQkJCV9fZnVuY19fLCByZXQsIGkpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkLCByZXQ9JWQsIHBvcnQ9JWRcbiIsCisJCQkJX19mdW5jX18sIHJldCwgaSk7CiAJCQlicmVhazsKIAkJfQogCX0KQEAgLTE2MTgsMjIgKzE2MjcsMjYgQEAKIAlkYmcoImRpZ2lfcmVhZF9idWxrX2NhbGxiYWNrOiBUT1AiKTsKIAogCS8qIHBvcnQgc2FuaXR5IGNoZWNrLCBkbyBub3QgcmVzdWJtaXQgaWYgcG9ydCBpcyBub3QgdmFsaWQgKi8KLQlpZiAocG9ydCA9PSBOVUxMIHx8IChwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpKSA9PSBOVUxMKSB7Ci0JCWVycigiJXM6IHBvcnQgb3IgcG9ydC0+cHJpdmF0ZSBpcyBOVUxMLCBzdGF0dXM9JWQiLAotCQkgICAgX19mdW5jX18sIHN0YXR1cyk7CisJaWYgKHBvcnQgPT0gTlVMTCkKKwkJcmV0dXJuOworCXByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CisJaWYgKHByaXYgPT0gTlVMTCkgeworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlczogcG9ydC0+cHJpdmF0ZSBpcyBOVUxMLCBzdGF0dXM9JWRcbiIsCisJCQlfX2Z1bmNfXywgc3RhdHVzKTsKIAkJcmV0dXJuOwogCX0KIAlpZiAocG9ydC0+c2VyaWFsID09IE5VTEwgfHwKIAkJKHNlcmlhbF9wcml2ID0gdXNiX2dldF9zZXJpYWxfZGF0YShwb3J0LT5zZXJpYWwpKSA9PSBOVUxMKSB7Ci0JCWVycigiJXM6IHNlcmlhbCBpcyBiYWQgb3Igc2VyaWFsLT5wcml2YXRlIGlzIE5VTEwsIHN0YXR1cz0lZCIsCi0JCQlfX2Z1bmNfXywgc3RhdHVzKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXM6IHNlcmlhbCBpcyBiYWQgb3Igc2VyaWFsLT5wcml2YXRlICIKKwkJCSJpcyBOVUxMLCBzdGF0dXM9JWRcbiIsIF9fZnVuY19fLCBzdGF0dXMpOwogCQlyZXR1cm47CiAJfQogCiAJLyogZG8gbm90IHJlc3VibWl0IHVyYiBpZiBpdCBoYXMgYW55IHN0YXR1cyBlcnJvciAqLwogCWlmIChzdGF0dXMpIHsKLQkJZXJyKCIlczogbm9uemVybyByZWFkIGJ1bGsgc3RhdHVzOiBzdGF0dXM9JWQsIHBvcnQ9JWQiLAotCQkgICAgX19mdW5jX18sIHN0YXR1cywgcHJpdi0+ZHBfcG9ydF9udW0pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXM6IG5vbnplcm8gcmVhZCBidWxrIHN0YXR1czogc3RhdHVzPSVkLCBwb3J0PSVkXG4iLAorCQkJX19mdW5jX18sIHN0YXR1cywgcHJpdi0+ZHBfcG9ydF9udW0pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNjUwLDggKzE2NjMsOSBAQAogCXVyYi0+ZGV2ID0gcG9ydC0+c2VyaWFsLT5kZXY7CiAJcmV0ID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAocmV0ICE9IDApIHsKLQkJZXJyKCIlczogZmFpbGVkIHJlc3VibWl0dGluZyB1cmIsIHJldD0lZCwgcG9ydD0lZCIsCi0JCSAgICBfX2Z1bmNfXywgcmV0LCBwcml2LT5kcF9wb3J0X251bSk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlczogZmFpbGVkIHJlc3VibWl0dGluZyB1cmIsIHJldD0lZCwgcG9ydD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQsIHByaXYtPmRwX3BvcnRfbnVtKTsKIAl9CiAKIH0KQEAgLTE2ODcsMTAgKzE3MDEsMTEgQEAKIAogCS8qIHNob3J0L211bHRpcGxlIHBhY2tldCBjaGVjayAqLwogCWlmICh1cmItPmFjdHVhbF9sZW5ndGggIT0gbGVuICsgMikgewotCQllcnIoIiVzOiBJTkNPTVBMRVRFIE9SIE1VTFRJUExFIFBBQ0tFVCwgdXJiLT5zdGF0dXM9JWQsICIKLQkJICAgICJwb3J0PSVkLCBvcGNvZGU9JWQsIGxlbj0lZCwgYWN0dWFsX2xlbmd0aD0lZCwgIgotCQkgICAgInN0YXR1cz0lZCIsIF9fZnVuY19fLCBzdGF0dXMsIHByaXYtPmRwX3BvcnRfbnVtLAotCQkgICAgb3Bjb2RlLCBsZW4sIHVyYi0+YWN0dWFsX2xlbmd0aCwgcG9ydF9zdGF0dXMpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlczogSU5DT01QTEVURSBPUiBNVUxUSVBMRSBQQUNLRVQsICIKKwkJCSJ1cmItPnN0YXR1cz0lZCwgcG9ydD0lZCwgb3Bjb2RlPSVkLCBsZW49JWQsICIKKwkJCSJhY3R1YWxfbGVuZ3RoPSVkLCBzdGF0dXM9JWRcbiIsIF9fZnVuY19fLCBzdGF0dXMsCisJCQlwcml2LT5kcF9wb3J0X251bSwgb3Bjb2RlLCBsZW4sIHVyYi0+YWN0dWFsX2xlbmd0aCwKKwkJCXBvcnRfc3RhdHVzKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMTg1NCw3ICsxODY5LDggQEAKIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXIoJmRpZ2lfZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7Ci0JaW5mbyhEUklWRVJfVkVSU0lPTiAiOiIgRFJJVkVSX0RFU0MpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3RlcigmZGlnaV9hY2NlbGVwb3J0XzRfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9lbXBlZy5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2VtcGVnLmMKaW5kZXggMTA3MmU4NC4uOGE2OWNjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2VtcGVnLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2VtcGVnLmMKQEAgLTQxNiw3ICs0MTYsNyBAQAogCWRiZygiJXMiLCBfX2Z1bmNfXyk7CiAKIAlpZiAoc2VyaWFsLT5kZXYtPmFjdGNvbmZpZy0+ZGVzYy5iQ29uZmlndXJhdGlvblZhbHVlICE9IDEpIHsKLQkJZXJyKCJhY3RpdmUgY29uZmlnICMlZCAhPSAxID8/IiwKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgImFjdGl2ZSBjb25maWcgIyVkICE9IDEgPz9cbiIsCiAJCQlzZXJpYWwtPmRldi0+YWN0Y29uZmlnLT5kZXNjLmJDb25maWd1cmF0aW9uVmFsdWUpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CkBAIC00OTksMTUgKzQ5OSwxNSBAQAogCQl1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCQl3cml0ZV91cmJfcG9vbFtpXSA9IHVyYjsKIAkJaWYgKHVyYiA9PSBOVUxMKSB7Ci0JCQllcnIoIk5vIG1vcmUgdXJicz8/PyIpOworCQkJcHJpbnRrKEtFUk5fRVJSICJlbXBlZzogTm8gbW9yZSB1cmJzPz8/XG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJdXJiLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKFVSQl9UUkFOU0ZFUl9CVUZGRVJfU0laRSwKIAkJCQkJCQkJR0ZQX0tFUk5FTCk7CiAJCWlmICghdXJiLT50cmFuc2Zlcl9idWZmZXIpIHsKLQkJCWVycigiJXMgLSBvdXQgb2YgbWVtb3J5IGZvciB1cmIgYnVmZmVycy4iLAotCQkJICAgIF9fZnVuY19fKTsKKwkJCXByaW50ayhLRVJOX0VSUiAiZW1wZWc6ICVzIC0gb3V0IG9mIG1lbW9yeSBmb3IgdXJiICIKKwkJCSAgICAgICAiYnVmZmVycy4iLCBfX2Z1bmNfXyk7CiAJCQljb250aW51ZTsKIAkJfQogCX0KQEAgLTUxOSw3ICs1MTksOCBAQAogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKIAotCWluZm8oRFJJVkVSX1ZFUlNJT04gIjoiIERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2V6dXNiLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZXp1c2IuYwppbmRleCA3MTFlODRmLi4zY2ZjNzYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZXp1c2IuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZXp1c2IuYwpAQCAtMjgsNyArMjgsOCBAQAogCiAJLyogZGJnKCJlenVzYl93cml0ZW1lbW9yeSAleCwgJWQiLCBhZGRyZXNzLCBsZW5ndGgpOyAqLwogCWlmICghc2VyaWFsLT5kZXYpIHsKLQkJZXJyKCIlcyAtIG5vIHBoeXNpY2FsIGRldmljZSBwcmVzZW50LCBmYWlsaW5nLiIsIF9fZnVuY19fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJlenVzYjogJXMgLSBubyBwaHlzaWNhbCBkZXZpY2UgcHJlc2VudCwgIgorCQkgICAgICAgImZhaWxpbmcuXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwppbmRleCBjMmFjMTI5Li41MWQ3YmRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwpAQCAtNTc4LDYgKzU3OCw3IEBACiAJeyBVU0JfREVWSUNFKEZBTENPTV9WSUQsIEZBTENPTV9UV0lTVF9QSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZBTENPTV9WSUQsIEZBTENPTV9TQU1CQV9QSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX1NVVU5UT19TUE9SVFNfUElEKSB9LAorCXsgVVNCX0RFVklDRShGVERJX1ZJRCwgRlRESV9PQ0VBTklDX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoVFRJX1ZJRCwgVFRJX1FMMzU1UF9QSUQpIH0sCiAJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX1JNX0NBTlZJRVdfUElEKSB9LAogCXsgVVNCX0RFVklDRShCQU5EQl9WSUQsIEJBTkRCX1VTT1RMNF9QSUQpIH0sCkBAIC0xMTUzLDcgKzExNTQsNyBAQAogCQkvKiBBc3N1bWUgaXRzIGFuIEZUMjMyUiAgKi8KIAkJcHJpdi0+Y2hpcF90eXBlID0gRlQyMzJSTDsKIAl9Ci0JaW5mbygiRGV0ZWN0ZWQgJXMiLCBmdGRpX2NoaXBfbmFtZVtwcml2LT5jaGlwX3R5cGVdKTsKKwlkZXZfaW5mbygmdWRldi0+ZGV2LCAiRGV0ZWN0ZWQgJXNcbiIsIGZ0ZGlfY2hpcF9uYW1lW3ByaXYtPmNoaXBfdHlwZV0pOwogfQogCiAKQEAgLTEzMjYsNyArMTMyNyw3IEBACiAKIAlwcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGZ0ZGlfcHJpdmF0ZSksIEdGUF9LRVJORUwpOwogCWlmICghcHJpdikgewotCQllcnIoIiVzLSBrbWFsbG9jKCVaZCkgZmFpbGVkLiIsIF9fZnVuY19fLAorCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcy0ga21hbGxvYyglWmQpIGZhaWxlZC5cbiIsIF9fZnVuY19fLAogCQkJCQlzaXplb2Yoc3RydWN0IGZ0ZGlfcHJpdmF0ZSkpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CkBAIC0xNDA5LDcgKzE0MTAsOCBAQAogCWRiZygiJXMiLCBfX2Z1bmNfXyk7CiAKIAlpZiAoaW50ZXJmYWNlID09IHVkZXYtPmFjdGNvbmZpZy0+aW50ZXJmYWNlWzBdKSB7Ci0JCWluZm8oIklnbm9yaW5nIHNlcmlhbCBwb3J0IHJlc2VydmVkIGZvciBKVEFHIik7CisJCWRldl9pbmZvKCZ1ZGV2LT5kZXYsCisJCQkgIklnbm9yaW5nIHNlcmlhbCBwb3J0IHJlc2VydmVkIGZvciBKVEFHXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCkBAIC0xNDI3LDcgKzE0MjksOCBAQAogCiAJaWYgKGVwLT5lbmFibGVkICYmIGVwX2Rlc2MtPndNYXhQYWNrZXRTaXplID09IDApIHsKIAkJZXBfZGVzYy0+d01heFBhY2tldFNpemUgPSBjcHVfdG9fbGUxNigweDQwKTsKLQkJaW5mbygiRml4aW5nIGludmFsaWQgd01heFBhY2tldFNpemUgb24gcmVhZCBwaXBlIik7CisJCWRldl9pbmZvKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkJICJGaXhpbmcgaW52YWxpZCB3TWF4UGFja2V0U2l6ZSBvbiByZWFkIHBpcGVcbiIpOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTUyMSw4ICsxNTI0LDkgQEAKIAkJCWZ0ZGlfcmVhZF9idWxrX2NhbGxiYWNrLCBwb3J0KTsKIAlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJlc3VsdCkKLQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXN1bHQpOwogCiAKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTU1Niw3ICsxNTYwLDcgQEAKIAkJCQkgICAgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUX1RZUEUsCiAJCQkJICAgIDAsIHByaXYtPmludGVyZmFjZSwgYnVmLCAwLAogCQkJCSAgICBXRFJfVElNRU9VVCkgPCAwKSB7Ci0JCQllcnIoImVycm9yIGZyb20gZmxvd2NvbnRyb2wgdXJiIik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJlcnJvciBmcm9tIGZsb3djb250cm9sIHVyYlxuIik7CiAJCX0KIAogCQkvKiBkcm9wIFJUUyBhbmQgRFRSICovCkBAIC0xNjIxLDE0ICsxNjI1LDE1IEBACiAKIAlidWZmZXIgPSBrbWFsbG9jKHRyYW5zZmVyX3NpemUsIEdGUF9BVE9NSUMpOwogCWlmICghYnVmZmVyKSB7Ci0JCWVycigiJXMgcmFuIG91dCBvZiBrZXJuZWwgbWVtb3J5IGZvciB1cmIgLi4uIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXMgcmFuIG91dCBvZiBrZXJuZWwgbWVtb3J5IGZvciB1cmIgLi4uXG4iLCBfX2Z1bmNfXyk7CiAJCWNvdW50ID0gLUVOT01FTTsKIAkJZ290byBlcnJvcl9ub19idWZmZXI7CiAJfQogCiAJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXVyYikgewotCQllcnIoIiVzIC0gbm8gbW9yZSBmcmVlIHVyYnMiLCBfX2Z1bmNfXyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gbm8gbW9yZSBmcmVlIHVyYnNcbiIsIF9fZnVuY19fKTsKIAkJY291bnQgPSAtRU5PTUVNOwogCQlnb3RvIGVycm9yX25vX3VyYjsKIAl9CkBAIC0xNjcyLDggKzE2NzcsOSBAQAogCiAJc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAoc3RhdHVzKSB7Ci0JCWVycigiJXMgLSBmYWlsZWQgc3VibWl0dGluZyB3cml0ZSB1cmIsIGVycm9yICVkIiwKLQkJCQkJCQlfX2Z1bmNfXywgc3RhdHVzKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxuIiwKKwkJCV9fZnVuY19fLCBzdGF0dXMpOwogCQljb3VudCA9IHN0YXR1czsKIAkJZ290byBlcnJvcjsKIAl9IGVsc2UgewpAQCAtMTc4MCw3ICsxNzg2LDggQEAKIAlidWZmZXJlZCA9IChpbnQpcHJpdi0+dHhfb3V0c3RhbmRpbmdfYnl0ZXM7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+dHhfbG9jaywgZmxhZ3MpOwogCWlmIChidWZmZXJlZCA8IDApIHsKLQkJZXJyKCIlcyBvdXRzdGFuZGluZyB0eCBieXRlcyBpcyBuZWdhdGl2ZSEiLCBfX2Z1bmNfXyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIG91dHN0YW5kaW5nIHR4IGJ5dGVzIGlzIG5lZ2F0aXZlIVxuIiwKKwkJCV9fZnVuY19fKTsKIAkJYnVmZmVyZWQgPSAwOwogCX0KIAlyZXR1cm4gYnVmZmVyZWQ7CkBAIC0xNzk2LDExICsxODAzLDEyIEBACiAJaW50IHN0YXR1cyA9IHVyYi0+c3RhdHVzOwogCiAJaWYgKHVyYi0+bnVtYmVyX29mX3BhY2tldHMgPiAwKSB7Ci0JCWVycigiJXMgdHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAlZCBhY3R1YWxfbGVuZ3RoICVkIG51bWJlciBvZiBwYWNrZXRzICVkIiwKLQkJCQlfX2Z1bmNfXywKLQkJCQl1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgsCi0JCQkJdXJiLT5hY3R1YWxfbGVuZ3RoLCB1cmItPm51bWJlcl9vZl9wYWNrZXRzKTsKLQkJZXJyKCIlcyB0cmFuc2Zlcl9mbGFncyAleCAiLCBfX2Z1bmNfXywgdXJiLT50cmFuc2Zlcl9mbGFncyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIHRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggJWQgIgorCQkJImFjdHVhbF9sZW5ndGggJWQgbnVtYmVyIG9mIHBhY2tldHMgJWRcbiIsIF9fZnVuY19fLAorCQkJdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoLAorCQkJdXJiLT5hY3R1YWxfbGVuZ3RoLCB1cmItPm51bWJlcl9vZl9wYWNrZXRzKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgdHJhbnNmZXJfZmxhZ3MgJXhcbiIsIF9fZnVuY19fLAorCQkJdXJiLT50cmFuc2Zlcl9mbGFncyk7CiAJfQogCiAJZGJnKCIlcyAtIHBvcnQgJWQiLCBfX2Z1bmNfXywgcG9ydC0+bnVtYmVyKTsKQEAgLTE4MjEsNyArMTgyOSw3IEBACiAJfQogCiAJaWYgKHVyYiAhPSBwb3J0LT5yZWFkX3VyYikKLQkJZXJyKCIlcyAtIE5vdCBteSB1cmIhIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIE5vdCBteSB1cmIhXG4iLCBfX2Z1bmNfXyk7CiAKIAlpZiAoc3RhdHVzKSB7CiAJCS8qIFRoaXMgd2lsbCBoYXBwZW4gYXQgY2xvc2UgZXZlcnkgdGltZSBzbyBpdCBpcyBhIGRiZyBub3QgYW4KQEAgLTE5MjQsNyArMTkzMiw4IEBACiAKIAkJbGVuZ3RoID0gbWluKFBLVFNaLCB1cmItPmFjdHVhbF9sZW5ndGgtcGFja2V0X29mZnNldCktMjsKIAkJaWYgKGxlbmd0aCA8IDApIHsKLQkJCWVycigiJXMgLSBiYWQgcGFja2V0IGxlbmd0aDogJWQiLCBfX2Z1bmNfXywgbGVuZ3RoKzIpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgLSBiYWQgcGFja2V0IGxlbmd0aDogJWRcbiIsCisJCQkJX19mdW5jX18sIGxlbmd0aCsyKTsKIAkJCWxlbmd0aCA9IDA7CiAJCX0KIApAQCAtMjAzOSw4ICsyMDQ4LDkgQEAKIAogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0FUT01JQyk7CiAJCWlmIChyZXN1bHQpCi0JCQllcnIoIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLAotCQkJCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCByZXN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJCV9fZnVuY19fLCByZXN1bHQpOwogCX0KIG91dDoKIAl0dHlfa3JlZl9wdXQodHR5KTsKQEAgLTIwNjksOCArMjA3OSw4IEBACiAJCQlGVERJX1NJT19TRVRfREFUQV9SRVFVRVNUX1RZUEUsCiAJCQl1cmJfdmFsdWUgLCBwcml2LT5pbnRlcmZhY2UsCiAJCQlidWYsIDAsIFdEUl9USU1FT1VUKSA8IDApIHsKLQkJZXJyKCIlcyBGQUlMRUQgdG8gZW5hYmxlL2Rpc2FibGUgYnJlYWsgc3RhdGUgKHN0YXRlIHdhcyAlZCkiLAotCQkJCQkJCV9fZnVuY19fLCBicmVha19zdGF0ZSk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIEZBSUxFRCB0byBlbmFibGUvZGlzYWJsZSBicmVhayBzdGF0ZSAiCisJCQkiKHN0YXRlIHdhcyAlZClcbiIsIF9fZnVuY19fLCBicmVha19zdGF0ZSk7CiAJfQogCiAJZGJnKCIlcyBicmVhayBzdGF0ZSBpcyAlZCAtIHVyYiBpcyAlZCIsIF9fZnVuY19fLApAQCAtMjE0Miw3ICsyMTUyLDcgQEAKIAkJY2FzZSBDUzc6IHVyYl92YWx1ZSB8PSA3OyBkYmcoIlNldHRpbmcgQ1M3Iik7IGJyZWFrOwogCQljYXNlIENTODogdXJiX3ZhbHVlIHw9IDg7IGRiZygiU2V0dGluZyBDUzgiKTsgYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcnIoIkNTSVpFIHdhcyBzZXQgYnV0IG5vdCBDUzUtQ1M4Iik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJDU0laRSB3YXMgc2V0IGJ1dCBub3QgQ1M1LUNTOFxuIik7CiAJCX0KIAl9CiAKQEAgLTIxNTUsNyArMjE2NSw4IEBACiAJCQkgICAgRlRESV9TSU9fU0VUX0RBVEFfUkVRVUVTVF9UWVBFLAogCQkJICAgIHVyYl92YWx1ZSAsIHByaXYtPmludGVyZmFjZSwKIAkJCSAgICBidWYsIDAsIFdEUl9TSE9SVF9USU1FT1VUKSA8IDApIHsKLQkJZXJyKCIlcyBGQUlMRUQgdG8gc2V0IGRhdGFiaXRzL3N0b3BiaXRzL3Bhcml0eSIsIF9fZnVuY19fKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgRkFJTEVEIHRvIHNldCAiCisJCQkiZGF0YWJpdHMvc3RvcGJpdHMvcGFyaXR5XG4iLCBfX2Z1bmNfXyk7CiAJfQogCiAJLyogTm93IGRvIHRoZSBiYXVkcmF0ZSAqLwpAQCAtMjE2NiwxNCArMjE3NywxNyBAQAogCQkJCSAgICBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1RfVFlQRSwKIAkJCQkgICAgMCwgcHJpdi0+aW50ZXJmYWNlLAogCQkJCSAgICBidWYsIDAsIFdEUl9USU1FT1VUKSA8IDApIHsKLQkJCWVycigiJXMgZXJyb3IgZnJvbSBkaXNhYmxlIGZsb3djb250cm9sIHVyYiIsIF9fZnVuY19fKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkiJXMgZXJyb3IgZnJvbSBkaXNhYmxlIGZsb3djb250cm9sIHVyYlxuIiwKKwkJCQlfX2Z1bmNfXyk7CiAJCX0KIAkJLyogRHJvcCBSVFMgYW5kIERUUiAqLwogCQljbGVhcl9tY3RybChwb3J0LCBUSU9DTV9EVFIgfCBUSU9DTV9SVFMpOwogCX0gZWxzZSB7CiAJCS8qIHNldCB0aGUgYmF1ZHJhdGUgZGV0ZXJtaW5lZCBiZWZvcmUgKi8KIAkJaWYgKGNoYW5nZV9zcGVlZCh0dHksIHBvcnQpKQotCQkJZXJyKCIlcyB1cmIgZmFpbGVkIHRvIHNldCBiYXVkcmF0ZSIsIF9fZnVuY19fKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIHVyYiBmYWlsZWQgdG8gc2V0IGJhdWRyYXRlXG4iLAorCQkJCV9fZnVuY19fKTsKIAkJLyogRW5zdXJlIFJUUyBhbmQgRFRSIGFyZSByYWlzZWQgd2hlbiBiYXVkcmF0ZSBjaGFuZ2VkIGZyb20gMCAqLwogCQlpZiAoIW9sZF90ZXJtaW9zIHx8IChvbGRfdGVybWlvcy0+Y19jZmxhZyAmIENCQVVEKSA9PSBCMCkKIAkJCXNldF9tY3RybChwb3J0LCBUSU9DTV9EVFIgfCBUSU9DTV9SVFMpOwpAQCAtMjE4OSw3ICsyMjAzLDggQEAKIAkJCQkgICAgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUX1RZUEUsCiAJCQkJICAgIDAgLCAoRlRESV9TSU9fUlRTX0NUU19IUyB8IHByaXYtPmludGVyZmFjZSksCiAJCQkJICAgIGJ1ZiwgMCwgV0RSX1RJTUVPVVQpIDwgMCkgewotCQkJZXJyKCJ1cmIgZmFpbGVkIHRvIHNldCB0byBydHMvY3RzIGZsb3cgY29udHJvbCIpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSJ1cmIgZmFpbGVkIHRvIHNldCB0byBydHMvY3RzIGZsb3cgY29udHJvbFxuIik7CiAJCX0KIAogCX0gZWxzZSB7CkBAIC0yMjIwLDcgKzIyMzUsOCBAQAogCQkJCQkgICAgdXJiX3ZhbHVlICwgKEZURElfU0lPX1hPTl9YT0ZGX0hTCiAJCQkJCQkJIHwgcHJpdi0+aW50ZXJmYWNlKSwKIAkJCQkJICAgIGJ1ZiwgMCwgV0RSX1RJTUVPVVQpIDwgMCkgewotCQkJCWVycigidXJiIGZhaWxlZCB0byBzZXQgdG8geG9uL3hvZmYgZmxvdyBjb250cm9sIik7CisJCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAidXJiIGZhaWxlZCB0byBzZXQgdG8gIgorCQkJCQkieG9uL3hvZmYgZmxvdyBjb250cm9sXG4iKTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCS8qIGVsc2UgY2xhdXNlIHRvIG9ubHkgcnVuIGlmIGNmbGFnICEgQ1JUU0NUUyBhbmQgaWZsYWcKQEAgLTIyMzMsNyArMjI0OSw4IEBACiAJCQkJCSAgICBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1RfVFlQRSwKIAkJCQkJICAgIDAsIHByaXYtPmludGVyZmFjZSwKIAkJCQkJICAgIGJ1ZiwgMCwgV0RSX1RJTUVPVVQpIDwgMCkgewotCQkJCWVycigidXJiIGZhaWxlZCB0byBjbGVhciBmbG93IGNvbnRyb2wiKTsKKwkJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJCSJ1cmIgZmFpbGVkIHRvIGNsZWFyIGZsb3cgY29udHJvbFxuIik7CiAJCQl9CiAJCX0KIApAQCAtMjQyNSw3ICsyNDQyLDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICI6IiBEUklWRVJfREVTQyk7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIGZhaWxlZF91c2JfcmVnaXN0ZXI6CiAJdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKCZmdGRpX3Npb19kZXZpY2UpOwpAQCAtMjQ1OCw1ICsyNDc2LDUgQEAKIE1PRFVMRV9QQVJNX0RFU0ModmVuZG9yLCAiVXNlciBzcGVjaWZpZWQgdmVuZG9yIElEIChkZWZhdWx0PSIKIAkJX19NT0RVTEVfU1RSSU5HKEZURElfVklEKSIpIik7CiBtb2R1bGVfcGFyYW0ocHJvZHVjdCwgdXNob3J0LCAwKTsKLU1PRFVMRV9QQVJNX0RFU0ModmVuZG9yLCAiVXNlciBzcGVjaWZpZWQgcHJvZHVjdCBJRCIpOworTU9EVUxFX1BBUk1fREVTQyhwcm9kdWN0LCAiVXNlciBzcGVjaWZpZWQgcHJvZHVjdCBJRCIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaCBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCmluZGV4IDhhNWI2ZGYuLjA3YTM5OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCkBAIC02MjgsNiArNjI4LDExIEBACiAjZGVmaW5lIEZURElfU1VVTlRPX1NQT1JUU19QSUQJMHhGNjgwCS8qIFN1dW50byBTcG9ydHMgaW5zdHJ1bWVudCAqLwogCiAvKgorICogT2NlYW5pYyBwcm9kdWN0IGlkcworICovCisjZGVmaW5lIEZURElfT0NFQU5JQ19QSUQJMHhGNDYwICAvKiBPY2VhbmljIGRpdmUgaW5zdHJ1bWVudCAqLworCisvKgogICogVFRpIChUaHVybGJ5IFRoYW5kYXIgSW5zdHJ1bWVudHMpCiAgKi8KICNkZWZpbmUgVFRJX1ZJRAkJCTB4MTAzRQkvKiBWZW5kb3IgSWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9nYXJtaW5fZ3BzLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZ2FybWluX2dwcy5jCmluZGV4IDJhZDA1NjkuLjhlNmE2NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9nYXJtaW5fZ3BzLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2dhcm1pbl9ncHMuYwpAQCAtMTU4NSw3ICsxNTg1LDggQEAKIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXIoJmdhcm1pbl9kcml2ZXIpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAogCXJldHVybiAwOwogZmFpbGVkX3VzYl9yZWdpc3RlcjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9ocDR4LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaHA0eC5jCmluZGV4IGFiOTA1ODYuLjQzMTMyOTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9ocDR4LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2hwNHguYwpAQCAtNjMsNyArNjMsOCBAQAogCXJldHZhbCA9IHVzYl9yZWdpc3RlcigmaHA0OWdwX2RyaXZlcik7CiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiAwOwogZmFpbGVkX3VzYl9yZWdpc3RlcjoKIAl1c2Jfc2VyaWFsX2RlcmVnaXN0ZXIoJmhwNDlncF9kZXZpY2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwppbmRleCA2MTFmOTdmLi5lODVjOGMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwpAQCAtMzEwOSwxMyArMzEwOSwxMyBAQAogCQkJCWVkZ2Vfc2VyaWFsLT5pbnRlcnJ1cHRfcmVhZF91cmIgPQogCQkJCQkJdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAkJCQlpZiAoIWVkZ2Vfc2VyaWFsLT5pbnRlcnJ1cHRfcmVhZF91cmIpIHsKLQkJCQkJZXJyKCJvdXQgb2YgbWVtb3J5Iik7CisJCQkJCWRldl9lcnIoJmRldi0+ZGV2LCAib3V0IG9mIG1lbW9yeVxuIik7CiAJCQkJCXJldHVybiAtRU5PTUVNOwogCQkJCX0KIAkJCQllZGdlX3NlcmlhbC0+aW50ZXJydXB0X2luX2J1ZmZlciA9CiAJCQkJCWttYWxsb2MoYnVmZmVyX3NpemUsIEdGUF9LRVJORUwpOwogCQkJCWlmICghZWRnZV9zZXJpYWwtPmludGVycnVwdF9pbl9idWZmZXIpIHsKLQkJCQkJZXJyKCJvdXQgb2YgbWVtb3J5Iik7CisJCQkJCWRldl9lcnIoJmRldi0+ZGV2LCAib3V0IG9mIG1lbW9yeVxuIik7CiAJCQkJCXVzYl9mcmVlX3VyYihlZGdlX3NlcmlhbC0+aW50ZXJydXB0X3JlYWRfdXJiKTsKIAkJCQkJcmV0dXJuIC1FTk9NRU07CiAJCQkJfQpAQCAtMzE0NiwxMyArMzE0NiwxMyBAQAogCQkJCWVkZ2Vfc2VyaWFsLT5yZWFkX3VyYiA9CiAJCQkJCQl1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCQkJCWlmICghZWRnZV9zZXJpYWwtPnJlYWRfdXJiKSB7Ci0JCQkJCWVycigib3V0IG9mIG1lbW9yeSIpOworCQkJCQlkZXZfZXJyKCZkZXYtPmRldiwgIm91dCBvZiBtZW1vcnlcbiIpOwogCQkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCQl9CiAJCQkJZWRnZV9zZXJpYWwtPmJ1bGtfaW5fYnVmZmVyID0KIAkJCQkJa21hbGxvYyhidWZmZXJfc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCQkJaWYgKCFlZGdlX3NlcmlhbC0+YnVsa19pbl9idWZmZXIpIHsKLQkJCQkJZXJyKCJvdXQgb2YgbWVtb3J5Iik7CisJCQkJCWRldl9lcnIoJmRldi0+ZGV2LCAib3V0IG9mIG1lbW9yeVxuIik7CiAJCQkJCXVzYl9mcmVlX3VyYihlZGdlX3NlcmlhbC0+cmVhZF91cmIpOwogCQkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCQl9CkBAIC0zMTgxLDcgKzMxODEsOCBAQAogCQl9CiAKIAkJaWYgKCFpbnRlcnJ1cHRfaW5fZm91bmQgfHwgIWJ1bGtfaW5fZm91bmQgfHwgIWJ1bGtfb3V0X2ZvdW5kKSB7Ci0JCQllcnIoIkVycm9yIC0gdGhlIHByb3BlciBlbmRwb2ludHMgd2VyZSBub3QgZm91bmQhIik7CisJCQlkZXZfZXJyKCZkZXYtPmRldiwgIkVycm9yIC0gdGhlIHByb3BlciBlbmRwb2ludHMgIgorCQkJCSJ3ZXJlIG5vdCBmb3VuZCFcbiIpOwogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCX0KIApAQCAtMzE5MCw4ICszMTkxLDkgQEAKIAkJcmVzcG9uc2UgPSB1c2Jfc3VibWl0X3VyYihlZGdlX3NlcmlhbC0+aW50ZXJydXB0X3JlYWRfdXJiLAogCQkJCQkJCQlHRlBfS0VSTkVMKTsKIAkJaWYgKHJlc3BvbnNlKQotCQkJZXJyKCIlcyAtIEVycm9yICVkIHN1Ym1pdHRpbmcgY29udHJvbCB1cmIiLAotCQkJCQkJCV9fZnVuY19fLCByZXNwb25zZSk7CisJCQlkZXZfZXJyKCZkZXYtPmRldiwKKwkJCQkiJXMgLSBFcnJvciAlZCBzdWJtaXR0aW5nIGNvbnRyb2wgdXJiXG4iLAorCQkJCV9fZnVuY19fLCByZXNwb25zZSk7CiAJfQogCXJldHVybiByZXNwb25zZTsKIH0KQEAgLTMyNTMsNyArMzI1NSw4IEBACiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwogCWF0b21pY19zZXQoJkNtZFVyYnMsIDApOwotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiAwOwogCiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwppbmRleCA1NDFkZDhlLi5jM2NkZDAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwpAQCAtMjk3OCw3ICsyOTc4LDggQEAKIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXIoJmlvX2RyaXZlcik7CiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiAwOwogZmFpbGVkX3VzYl9yZWdpc3RlcjoKIAl1c2Jfc2VyaWFsX2RlcmVnaXN0ZXIoJmVkZ2Vwb3J0XzJwb3J0X2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaXBhcS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lwYXEuYwppbmRleCAyYWZmYTljLi4xMzJiZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaXBhcS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pcGFxLmMKQEAgLTYwOCw3ICs2MDgsNyBAQAogCWJ5dGVzX291dCA9IDA7CiAJcHJpdiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpcGFxX3ByaXZhdGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAocHJpdiA9PSBOVUxMKSB7Ci0JCWVycigiJXMgLSBPdXQgb2YgbWVtb3J5IiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIE91dCBvZiBtZW1vcnlcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCXVzYl9zZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0LCBwcml2KTsKQEAgLTY5Myw4ICs2OTMsNyBAQAogCX0KIAogCWlmICghcmV0cmllcyAmJiByZXN1bHQpIHsKLQkJZXJyKCIlcyAtIGZhaWxlZCBkb2luZyBjb250cm9sIHVyYiwgZXJyb3IgJWQiLCBfX2Z1bmNfXywKLQkJICAgIHJlc3VsdCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gZmFpbGVkIGRvaW5nIGNvbnRyb2wgdXJiLCBlcnJvciAlZFxuIiwJCQlfX2Z1bmNfXywgcmVzdWx0KTsKIAkJZ290byBlcnJvcjsKIAl9CiAKQEAgLTcwNyw4ICs3MDYsOSBAQAogCiAJcmVzdWx0ID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+cmVhZF91cmIsIEdGUF9LRVJORUwpOwogCWlmIChyZXN1bHQpIHsKLQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQlfX2Z1bmNfXywgcmVzdWx0KTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJCWdvdG8gZXJyb3I7CiAJfQogCkBAIC03MTYsNyArNzE2LDcgQEAKIAogZW5vbWVtOgogCXJlc3VsdCA9IC1FTk9NRU07Ci0JZXJyKCIlcyAtIE91dCBvZiBtZW1vcnkiLCBfX2Z1bmNfXyk7CisJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgLSBPdXQgb2YgbWVtb3J5XG4iLCBfX2Z1bmNfXyk7CiBlcnJvcjoKIAlpcGFxX2Rlc3Ryb3lfbGlzdHMocG9ydCk7CiAJa2ZyZWUocHJpdik7CkBAIC03ODEsOCArNzgxLDkgQEAKIAkgICAgaXBhcV9yZWFkX2J1bGtfY2FsbGJhY2ssIHBvcnQpOwogCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPnJlYWRfdXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAocmVzdWx0KQotCQllcnIoIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLAotCQkJCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXN1bHQpOwogCXJldHVybjsKIH0KIApAQCAtODQ3LDcgKzg0OCw4IEBACiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndyaXRlX2xpc3RfbG9jaywgZmxhZ3MpOwogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT53cml0ZV91cmIsIEdGUF9BVE9NSUMpOwogCQlpZiAocmVzdWx0KQotCQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWQiLAorCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcbiIsCiAJCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJfSBlbHNlIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd3JpdGVfbGlzdF9sb2NrLCBmbGFncyk7CkBAIC05MDksOCArOTExLDkgQEAKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd3JpdGVfbGlzdF9sb2NrLCBmbGFncyk7CiAJCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPndyaXRlX3VyYiwgR0ZQX0FUT01JQyk7CiAJCWlmIChyZXN1bHQpCi0JCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZCIsCi0JCQkJCV9fZnVuY19fLCByZXN1bHQpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcbiIsCisJCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJfSBlbHNlIHsKIAkJcHJpdi0+YWN0aXZlID0gMDsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd3JpdGVfbGlzdF9sb2NrLCBmbGFncyk7CkBAIC05NTcsNyArOTYwLDcgQEAKIHsKIAlkYmcoIiVzIiwgX19mdW5jX18pOwogCWlmIChzZXJpYWwtPmRldi0+YWN0Y29uZmlnLT5kZXNjLmJDb25maWd1cmF0aW9uVmFsdWUgIT0gMSkgewotCQllcnIoImFjdGl2ZSBjb25maWcgIyVkICE9IDEgPz8iLAorCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LCAiYWN0aXZlIGNvbmZpZyAjJWQgIT0gMSA/P1xuIiwKIAkJCXNlcmlhbC0+ZGV2LT5hY3Rjb25maWctPmRlc2MuYkNvbmZpZ3VyYXRpb25WYWx1ZSk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KQEAgLTk3Niw3ICs5NzksNiBAQAogCXJldHZhbCA9IHVzYl9zZXJpYWxfcmVnaXN0ZXIoJmlwYXFfZGV2aWNlKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2Jfc2VyaWFsX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKIAlpZiAodmVuZG9yKSB7CiAJCWlwYXFfaWRfdGFibGVbMF0uaWRWZW5kb3IgPSB2ZW5kb3I7CiAJCWlwYXFfaWRfdGFibGVbMF0uaWRQcm9kdWN0ID0gcHJvZHVjdDsKQEAgLTk4NSw2ICs5ODcsOCBAQAogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKIAorCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3RlcigmaXBhcV9kZXZpY2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lwdy5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lwdy5jCmluZGV4IDQ4MGNhYzIuLjNhYzU5YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcHcuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXB3LmMKQEAgLTQ4NSw3ICs0ODUsOCBAQAogCQl1c2Jfc2VyaWFsX2RlcmVnaXN0ZXIoJmlwd19kZXZpY2UpOwogCQlyZXR1cm4gcmV0dmFsOwogCX0KLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lyLXVzYi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lyLXVzYi5jCmluZGV4IDQ1ZDQwNDMuLmI2NzlhNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pci11c2IuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXItdXNiLmMKQEAgLTYwMiw3ICs2MDIsOCBAQAogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKIAotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pdXVfcGhvZW5peC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2l1dV9waG9lbml4LmMKaW5kZXggNTM3MTBhYS4uZTMyMDk3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2l1dV9waG9lbml4LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2l1dV9waG9lbml4LmMKQEAgLTExODUsNyArMTE4NSw4IEBACiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZpdXVfZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7Ci0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3RlcigmaXV1X2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYwppbmRleCAxNTQ0N2FmLi45ODc4YzBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMKQEAgLTIxNyw3ICsyMTcsOCBAQAogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKIAotCWluZm8oRFJJVkVSX1ZFUlNJT04gIjoiIERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRhLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYwppbmRleCA5OWU5YTE0Li5iZjFhZTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYwpAQCAtNzQyLDExICs3NDIsMTMgQEAKIAkJZndfbmFtZSA9ICJrZXlzcGFuX3BkYS94aXJjb21fcGdzLmZ3IjsKICNlbmRpZgogCWVsc2UgewotCQllcnIoIiVzOiB1bmtub3duIHZlbmRvciwgYWJvcnRpbmcuIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LCAiJXM6IHVua25vd24gdmVuZG9yLCBhYm9ydGluZy5cbiIsCisJCQlfX2Z1bmNfXyk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIAlpZiAocmVxdWVzdF9paGV4X2Zpcm13YXJlKCZmdywgZndfbmFtZSwgJnNlcmlhbC0+ZGV2LT5kZXYpKSB7Ci0JCWVycigiZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgImZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKKwkJCWZ3X25hbWUpOwogCQlyZXR1cm4gLUVOT0VOVDsKIAl9CiAJcmVjb3JkID0gKGNvbnN0IHN0cnVjdCBpaGV4X2JpbnJlYyAqKWZ3LT5kYXRhOwpAQCAtNzU2LDEwICs3NTgsMTAgQEAKIAkJCQkJICAgICAodW5zaWduZWQgY2hhciAqKXJlY29yZC0+ZGF0YSwKIAkJCQkJICAgICBiZTE2X3RvX2NwdShyZWNvcmQtPmxlbiksIDB4YTApOwogCQlpZiAocmVzcG9uc2UgPCAwKSB7Ci0JCQllcnIoImV6dXNiX3dyaXRlbWVtb3J5IGZhaWxlZCBmb3IgS2V5c3BhbiBQREEgIgotCQkJICAgICJmaXJtd2FyZSAoJWQgJTA0WCAlcCAlZCkiLAotCQkJICAgIHJlc3BvbnNlLCBiZTMyX3RvX2NwdShyZWNvcmQtPmFkZHIpLAotCQkJICAgIHJlY29yZC0+ZGF0YSwgYmUxNl90b19jcHUocmVjb3JkLT5sZW4pKTsKKwkJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsICJlenVzYl93cml0ZW1lbW9yeSBmYWlsZWQgIgorCQkJCSJmb3IgS2V5c3BhbiBQREEgZmlybXdhcmUgKCVkICUwNFggJXAgJWQpXG4iLAorCQkJCXJlc3BvbnNlLCBiZTMyX3RvX2NwdShyZWNvcmQtPmFkZHIpLAorCQkJCXJlY29yZC0+ZGF0YSwgYmUxNl90b19jcHUocmVjb3JkLT5sZW4pKTsKIAkJCWJyZWFrOwogCQl9CiAJCXJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKTsKQEAgLTg3NCw3ICs4NzYsOCBAQAogCXJldHZhbCA9IHVzYl9yZWdpc3Rlcigma2V5c3Bhbl9wZGFfZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7Ci0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogI2lmZGVmIFhJUkNPTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9rbDVrdXNiMTA1LmMKaW5kZXggZmYzYTA3Zi4uZGMzNmEwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2w1a3VzYjEwNS5jCkBAIC0xODIsMTIgKzE4MiwxMiBAQAogCQkJc2l6ZW9mKHN0cnVjdCBrbHNpXzEwNV9wb3J0X3NldHRpbmdzKSwKIAkJCUtMU0lfVElNRU9VVCk7CiAJaWYgKHJjIDwgMCkKLQkJZXJyKCJDaGFuZ2UgcG9ydCBzZXR0aW5ncyBmYWlsZWQgKGVycm9yID0gJWQpIiwgcmMpOwotCWluZm8oIiVzIC0gJWQgYnl0ZSBibG9jaywgYmF1ZHJhdGUgJXgsIGRhdGFiaXRzICVkLCB1MSAlZCwgdTIgJWQiLAotCSAgICBfX2Z1bmNfXywKLQkgICAgc2V0dGluZ3MtPnBrdGxlbiwKLQkgICAgc2V0dGluZ3MtPmJhdWRyYXRlLCBzZXR0aW5ncy0+ZGF0YWJpdHMsCi0JICAgIHNldHRpbmdzLT51bmtub3duMSwgc2V0dGluZ3MtPnVua25vd24yKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIkNoYW5nZSBwb3J0IHNldHRpbmdzIGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIHJjKTsKKwlkZXZfaW5mbygmcG9ydC0+c2VyaWFsLT5kZXYtPmRldiwKKwkJICIlZCBieXRlIGJsb2NrLCBiYXVkcmF0ZSAleCwgZGF0YWJpdHMgJWQsIHUxICVkLCB1MiAlZFxuIiwKKwkJIHNldHRpbmdzLT5wa3RsZW4sIHNldHRpbmdzLT5iYXVkcmF0ZSwgc2V0dGluZ3MtPmRhdGFiaXRzLAorCQkgc2V0dGluZ3MtPnVua25vd24xLCBzZXR0aW5ncy0+dW5rbm93bjIpOwogCXJldHVybiByYzsKIH0gLyoga2xzaV8xMDVfY2hnX3BvcnRfc2V0dGluZ3MgKi8KIApAQCAtMjE1LDcgKzIxNSw3IEBACiAJX191OCBzdGF0dXNfYnVmW0tMU0lfU1RBVFVTQlVGX0xFTl0gPSB7IC0xLCAtMX07CiAJX191MTYgc3RhdHVzOwogCi0JaW5mbygiJXMgLSBzZW5kaW5nIFNJTyBQb2xsIHJlcXVlc3QiLCBfX2Z1bmNfXyk7CisJZGV2X2luZm8oJnBvcnQtPnNlcmlhbC0+ZGV2LT5kZXYsICJzZW5kaW5nIFNJTyBQb2xsIHJlcXVlc3RcbiIpOwogCXJjID0gdXNiX2NvbnRyb2xfbXNnKHBvcnQtPnNlcmlhbC0+ZGV2LAogCQkJICAgICB1c2JfcmN2Y3RybHBpcGUocG9ydC0+c2VyaWFsLT5kZXYsIDApLAogCQkJICAgICBLTDVLVVNCMTA1QV9TSU9fUE9MTCwKQEAgLTIyNiwxMiArMjI2LDEzIEBACiAJCQkgICAgIDEwMDAwCiAJCQkgICAgICk7CiAJaWYgKHJjIDwgMCkKLQkJZXJyKCJSZWFkaW5nIGxpbmUgc3RhdHVzIGZhaWxlZCAoZXJyb3IgPSAlZCkiLCByYyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIlJlYWRpbmcgbGluZSBzdGF0dXMgZmFpbGVkIChlcnJvciA9ICVkKVxuIiwKKwkJCXJjKTsKIAllbHNlIHsKIAkJc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHN0YXR1c19idWYpOwogCi0JCWluZm8oIiVzIC0gcmVhZCBzdGF0dXMgJXggJXgiLCBfX2Z1bmNfXywKLQkJICAgICBzdGF0dXNfYnVmWzBdLCBzdGF0dXNfYnVmWzFdKTsKKwkJZGV2X2luZm8oJnBvcnQtPnNlcmlhbC0+ZGV2LT5kZXYsICJyZWFkIHN0YXR1cyAleCAleCIsCisJCQkgc3RhdHVzX2J1ZlswXSwgc3RhdHVzX2J1ZlsxXSk7CiAKIAkJKmxpbmVfc3RhdGVfcCA9IGtsc2lfMTA1X3N0YXR1czJsaW5lc3RhdGUoc3RhdHVzKTsKIAl9CkBAIC0yODAsMTUgKzI4MSwxNiBAQAogCiAJCQlwcml2LT53cml0ZV91cmJfcG9vbFtqXSA9IHVyYjsKIAkJCWlmICh1cmIgPT0gTlVMTCkgewotCQkJCWVycigiTm8gbW9yZSB1cmJzPz8/Iik7CisJCQkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgIk5vIG1vcmUgdXJicz8/P1xuIik7CiAJCQkJZ290byBlcnJfY2xlYW51cDsKIAkJCX0KIAogCQkJdXJiLT50cmFuc2Zlcl9idWZmZXIgPQogCQkJCWttYWxsb2MoVVJCX1RSQU5TRkVSX0JVRkZFUl9TSVpFLCBHRlBfS0VSTkVMKTsKIAkJCWlmICghdXJiLT50cmFuc2Zlcl9idWZmZXIpIHsKLQkJCQllcnIoIiVzIC0gb3V0IG9mIG1lbW9yeSBmb3IgdXJiIGJ1ZmZlcnMuIiwKLQkJCQkJCQkJX19mdW5jX18pOworCQkJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsCisJCQkJCSIlcyAtIG91dCBvZiBtZW1vcnkgZm9yIHVyYiBidWZmZXJzLlxuIiwKKwkJCQkJX19mdW5jX18pOwogCQkJCWdvdG8gZXJyX2NsZWFudXA7CiAJCQl9CiAJCX0KQEAgLTQwOSw3ICs0MTEsOCBAQAogCiAJcmMgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJjKSB7Ci0JCWVycigiJXMgLSBmYWlsZWQgc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLCBfX2Z1bmNfXywgcmMpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCAiCisJCQkiZXJyb3IgJWRcbiIsIF9fZnVuY19fLCByYyk7CiAJCXJldHZhbCA9IHJjOwogCQlnb3RvIGV4aXQ7CiAJfQpAQCAtNDI0LDcgKzQyNyw3IEBACiAJCQkgICAgIDAsCiAJCQkgICAgIEtMU0lfVElNRU9VVCk7CiAJaWYgKHJjIDwgMCkgewotCQllcnIoIkVuYWJsaW5nIHJlYWQgZmFpbGVkIChlcnJvciA9ICVkKSIsIHJjKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiRW5hYmxpbmcgcmVhZCBmYWlsZWQgKGVycm9yID0gJWQpXG4iLCByYyk7CiAJCXJldHZhbCA9IHJjOwogCX0gZWxzZQogCQlkYmcoIiVzIC0gZW5hYmxlZCByZWFkaW5nIiwgX19mdW5jX18pOwpAQCAtNDY0LDcgKzQ2Nyw4IEBACiAJCQkJICAgICBOVUxMLCAwLAogCQkJCSAgICAgS0xTSV9USU1FT1VUKTsKIAkJaWYgKHJjIDwgMCkKLQkJCWVycigiRGlzYWJsaW5nIHJlYWQgZmFpbGVkIChlcnJvciA9ICVkKSIsIHJjKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkiRGlzYWJsaW5nIHJlYWQgZmFpbGVkIChlcnJvciA9ICVkKVxuIiwgcmMpOwogCX0KIAltdXRleF91bmxvY2soJnBvcnQtPnNlcmlhbC0+ZGlzY19tdXRleCk7CiAKQEAgLTQ3NSw4ICs0NzksOSBAQAogCS8qIEZJWE1FICovCiAJLyogd2dnIC0gZG8gSSBuZWVkIHRoaXM/IEkgdGhpbmsgc28uICovCiAJdXNiX2tpbGxfdXJiKHBvcnQtPmludGVycnVwdF9pbl91cmIpOwotCWluZm8oImtsNWt1c2IxMDUgcG9ydCBzdGF0czogJWxkIGJ5dGVzIGluLCAlbGQgYnl0ZXMgb3V0IiwKLQkJCQkJcHJpdi0+Ynl0ZXNfaW4sIHByaXYtPmJ5dGVzX291dCk7CisJZGV2X2luZm8oJnBvcnQtPnNlcmlhbC0+ZGV2LT5kZXYsCisJCSAicG9ydCBzdGF0czogJWxkIGJ5dGVzIGluLCAlbGQgYnl0ZXMgb3V0XG4iLAorCQkgcHJpdi0+Ynl0ZXNfaW4sIHByaXYtPmJ5dGVzX291dCk7CiB9IC8qIGtsc2lfMTA1X2Nsb3NlICovCiAKIApAQCAtNTIyLDcgKzUyNyw5IEBACiAJCQl1cmItPnRyYW5zZmVyX2J1ZmZlciA9CiAJCQkJa21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUsIEdGUF9BVE9NSUMpOwogCQkJaWYgKHVyYi0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKLQkJCQllcnIoIiVzIC0gbm8gbW9yZSBrZXJuZWwgbWVtb3J5Li4uIiwgX19mdW5jX18pOworCQkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkJIiVzIC0gbm8gbW9yZSBrZXJuZWwgbWVtb3J5Li4uXG4iLAorCQkJCQlfX2Z1bmNfXyk7CiAJCQkJZ290byBleGl0OwogCQkJfQogCQl9CkBAIC01NDksOCArNTU2LDkgQEAKIAkJLyogc2VuZCB0aGUgZGF0YSBvdXQgdGhlIGJ1bGsgcG9ydCAqLwogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCQlpZiAocmVzdWx0KSB7Ci0JCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgcmVzdWx0KTsKIAkJCWdvdG8gZXhpdDsKIAkJfQogCQlidWYgKz0gc2l6ZTsKQEAgLTY5NCw4ICs3MDIsOSBAQAogCQkgICAgICBwb3J0KTsKIAlyYyA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPnJlYWRfdXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAocmMpCi0JCWVycigiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJjKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmMpOwogfSAvKiBrbHNpXzEwNV9yZWFkX2J1bGtfY2FsbGJhY2sgKi8KIAogCkBAIC03OTksNyArODA4LDggQEAKIAkJCXByaXYtPmNmZy5kYXRhYml0cyA9IGtsNWt1c2IxMDVhX2R0Yl84OwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcnIoIkNTSVpFIHdhcyBub3QgQ1M1LUNTOCwgdXNpbmcgZGVmYXVsdCBvZiA4Iik7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIkNTSVpFIHdhcyBub3QgQ1M1LUNTOCwgdXNpbmcgZGVmYXVsdCBvZiA4XG4iKTsKIAkJCXByaXYtPmNmZy5kYXRhYml0cyA9IGtsNWt1c2IxMDVhX2R0Yl84OwogCQkJYnJlYWs7CiAJCX0KQEAgLTg4Niw3ICs4OTYsOCBAQAogCiAJcmMgPSBrbHNpXzEwNV9nZXRfbGluZV9zdGF0ZShwb3J0LCAmbGluZV9zdGF0ZSk7CiAJaWYgKHJjIDwgMCkgewotCQllcnIoIlJlYWRpbmcgbGluZSBjb250cm9sIGZhaWxlZCAoZXJyb3IgPSAlZCkiLCByYyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSJSZWFkaW5nIGxpbmUgY29udHJvbCBmYWlsZWQgKGVycm9yID0gJWQpXG4iLCByYyk7CiAJCS8qIGJldHRlciByZXR1cm4gdmFsdWU/IEVBR0FJTj8gKi8KIAkJcmV0dXJuIHJjOwogCX0KQEAgLTk0NCw4ICs5NTUsOSBAQAogCXBvcnQtPnJlYWRfdXJiLT5kZXYgPSBwb3J0LT5zZXJpYWwtPmRldjsKIAlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT5yZWFkX3VyYiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJlc3VsdCkKLQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsIF9fZnVuY19fLAotCQkgICAgcmVzdWx0KTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJX19mdW5jX18sIHJlc3VsdCk7CiB9CiAKIApAQCAtOTYwLDcgKzk3Miw4IEBACiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwogCi0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3Rlcigma2w1a3VzYjEwNWRfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9rb2JpbF9zY3QuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9rb2JpbF9zY3QuYwppbmRleCBjZmNmMzdjLi42Mjg2YmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwva29iaWxfc2N0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tvYmlsX3NjdC5jCkBAIC03NDQsOCArNzQ0LDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7CiAKLQlpbmZvKERSSVZFUl9WRVJTSU9OICIgIiBEUklWRVJfQVVUSE9SKTsKLQlpbmZvKERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL21jdF91MjMyLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYwppbmRleCA5YjJjZWY4Li4wNzcxMGNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbWN0X3UyMzIuYwpAQCAtMjQ2LDcgKzI0Niw4IEBACiAJCQkJMCwgMCwgJmRpdmlzb3IsIE1DVF9VMjMyX1NFVF9CQVVEX1JBVEVfU0laRSwKIAkJCQlXRFJfVElNRU9VVCk7CiAJaWYgKHJjIDwgMCkJLypGSVhNRTogV2hhdCB2YWx1ZSBzcGVlZCByZXN1bHRzICovCi0JCWVycigiU2V0IEJBVUQgUkFURSAlZCBmYWlsZWQgKGVycm9yID0gJWQpIiwgdmFsdWUsIHJjKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAiU2V0IEJBVUQgUkFURSAlZCBmYWlsZWQgKGVycm9yID0gJWQpXG4iLAorCQkJdmFsdWUsIHJjKTsKIAllbHNlCiAJCXR0eV9lbmNvZGVfYmF1ZF9yYXRlKHR0eSwgc3BlZWQsIHNwZWVkKTsKIAlkYmcoInNldF9iYXVkX3JhdGU6IHZhbHVlOiAweCV4LCBkaXZpc29yOiAweCV4IiwgdmFsdWUsIGRpdmlzb3IpOwpAQCAtMjc0LDggKzI3NSw5IEBACiAJCQkJMCwgMCwgJnplcm9fYnl0ZSwgTUNUX1UyMzJfU0VUX1VOS05PV04xX1NJWkUsCiAJCQkJV0RSX1RJTUVPVVQpOwogCWlmIChyYyA8IDApCi0JCWVycigiU2VuZGluZyBVU0IgZGV2aWNlIHJlcXVlc3QgY29kZSAlZCBmYWlsZWQgKGVycm9yID0gJWQpIiwKLQkJICAgIE1DVF9VMjMyX1NFVF9VTktOT1dOMV9SRVFVRVNULCByYyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNlbmRpbmcgVVNCIGRldmljZSByZXF1ZXN0IGNvZGUgJWQgIgorCQkJImZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIE1DVF9VMjMyX1NFVF9VTktOT1dOMV9SRVFVRVNULAorCQkJcmMpOwogCiAJaWYgKHBvcnQgJiYgQ19DUlRTQ1RTKHR0eSkpCiAJICAgY3RzX2VuYWJsZV9ieXRlID0gMTsKQEAgLTI4OCw4ICsyOTAsOCBAQAogCQkJMCwgMCwgJmN0c19lbmFibGVfYnl0ZSwgTUNUX1UyMzJfU0VUX0NUU19TSVpFLAogCQkJV0RSX1RJTUVPVVQpOwogCWlmIChyYyA8IDApCi0JCWVycigiU2VuZGluZyBVU0IgZGV2aWNlIHJlcXVlc3QgY29kZSAlZCBmYWlsZWQgKGVycm9yID0gJWQpIiwKLQkJCQkJTUNUX1UyMzJfU0VUX0NUU19SRVFVRVNULCByYyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIlNlbmRpbmcgVVNCIGRldmljZSByZXF1ZXN0IGNvZGUgJWQgIgorCQkJImZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIE1DVF9VMjMyX1NFVF9DVFNfUkVRVUVTVCwgcmMpOwogCiAJcmV0dXJuIHJjOwogfSAvKiBtY3RfdTIzMl9zZXRfYmF1ZF9yYXRlICovCkBAIC0zMDMsNyArMzA1LDggQEAKIAkJCTAsIDAsICZsY3IsIE1DVF9VMjMyX1NFVF9MSU5FX0NUUkxfU0laRSwKIAkJCVdEUl9USU1FT1VUKTsKIAlpZiAocmMgPCAwKQotCQllcnIoIlNldCBMSU5FIENUUkwgMHgleCBmYWlsZWQgKGVycm9yID0gJWQpIiwgbGNyLCByYyk7CisJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsCisJCQkiU2V0IExJTkUgQ1RSTCAweCV4IGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIGxjciwgcmMpOwogCWRiZygic2V0X2xpbmVfY3RybDogMHgleCIsIGxjcik7CiAJcmV0dXJuIHJjOwogfSAvKiBtY3RfdTIzMl9zZXRfbGluZV9jdHJsICovCkBAIC0zMjUsNyArMzI4LDggQEAKIAkJCTAsIDAsICZtY3IsIE1DVF9VMjMyX1NFVF9NT0RFTV9DVFJMX1NJWkUsCiAJCQlXRFJfVElNRU9VVCk7CiAJaWYgKHJjIDwgMCkKLQkJZXJyKCJTZXQgTU9ERU0gQ1RSTCAweCV4IGZhaWxlZCAoZXJyb3IgPSAlZCkiLCBtY3IsIHJjKTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwKKwkJCSJTZXQgTU9ERU0gQ1RSTCAweCV4IGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIG1jciwgcmMpOwogCWRiZygic2V0X21vZGVtX2N0cmw6IHN0YXRlPTB4JXggPT0+IG1jcj0weCV4IiwgY29udHJvbF9zdGF0ZSwgbWNyKTsKIAogCXJldHVybiByYzsKQEAgLTM0MSw3ICszNDUsOCBAQAogCQkJMCwgMCwgbXNyLCBNQ1RfVTIzMl9HRVRfTU9ERU1fU1RBVF9TSVpFLAogCQkJV0RSX1RJTUVPVVQpOwogCWlmIChyYyA8IDApIHsKLQkJZXJyKCJHZXQgTU9ERU0gU1RBVHVzIGZhaWxlZCAoZXJyb3IgPSAlZCkiLCByYyk7CisJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsCisJCQkiR2V0IE1PREVNIFNUQVR1cyBmYWlsZWQgKGVycm9yID0gJWQpXG4iLCByYyk7CiAJCSptc3IgPSAwOwogCX0KIAlkYmcoImdldF9tb2RlbV9zdGF0OiAweCV4IiwgKm1zcik7CkBAIC00NzAsOCArNDc1LDkgQEAKIAlwb3J0LT5yZWFkX3VyYi0+ZGV2ID0gcG9ydC0+c2VyaWFsLT5kZXY7CiAJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+cmVhZF91cmIsIEdGUF9LRVJORUwpOwogCWlmIChyZXR2YWwpIHsKLQkJZXJyKCJ1c2Jfc3VibWl0X3VyYihyZWFkIGJ1bGspIGZhaWxlZCBwaXBlIDB4JXggZXJyICVkIiwKLQkJICAgIHBvcnQtPnJlYWRfdXJiLT5waXBlLCByZXR2YWwpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkidXNiX3N1Ym1pdF91cmIocmVhZCBidWxrKSBmYWlsZWQgcGlwZSAweCV4IGVyciAlZFxuIiwKKwkJCXBvcnQtPnJlYWRfdXJiLT5waXBlLCByZXR2YWwpOwogCQlnb3RvIGVycm9yOwogCX0KIApAQCAtNDc5LDggKzQ4NSw5IEBACiAJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIocG9ydC0+aW50ZXJydXB0X2luX3VyYiwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldHZhbCkgewogCQl1c2Jfa2lsbF91cmIocG9ydC0+cmVhZF91cmIpOwotCQllcnIoIiB1c2Jfc3VibWl0X3VyYihyZWFkIGludCkgZmFpbGVkIHBpcGUgMHgleCBlcnIgJWQiLAotCQkgICAgcG9ydC0+aW50ZXJydXB0X2luX3VyYi0+cGlwZSwgcmV0dmFsKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJInVzYl9zdWJtaXRfdXJiKHJlYWQgaW50KSBmYWlsZWQgcGlwZSAweCV4IGVyciAlZCIsCisJCQlwb3J0LT5pbnRlcnJ1cHRfaW5fdXJiLT5waXBlLCByZXR2YWwpOwogCQlnb3RvIGVycm9yOwogCX0KIAlyZXR1cm4gMDsKQEAgLTYxMiw4ICs2MTksOSBAQAogZXhpdDoKIAlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCWlmIChyZXR2YWwpCi0JCWVycigiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWQiLAotCQkgICAgIF9fZnVuY19fLCByZXR2YWwpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0dmFsKTsKIH0gLyogbWN0X3UyMzJfcmVhZF9pbnRfY2FsbGJhY2sgKi8KIAogc3RhdGljIHZvaWQgbWN0X3UyMzJfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKQEAgLTY4MCw3ICs2ODgsOCBAQAogCWNhc2UgQ1M4OgogCQlsYXN0X2xjciB8PSBNQ1RfVTIzMl9EQVRBX0JJVFNfODsgYnJlYWs7CiAJZGVmYXVsdDoKLQkJZXJyKCJDU0laRSB3YXMgbm90IENTNS1DUzgsIHVzaW5nIGRlZmF1bHQgb2YgOCIpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiQ1NJWkUgd2FzIG5vdCBDUzUtQ1M4LCB1c2luZyBkZWZhdWx0IG9mIDhcbiIpOwogCQlsYXN0X2xjciB8PSBNQ1RfVTIzMl9EQVRBX0JJVFNfODsKIAkJYnJlYWs7CiAJfQpAQCAtODE3LDcgKzgyNiw4IEBACiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZtY3RfdTIzMl9kcml2ZXIpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIGZhaWxlZF91c2JfcmVnaXN0ZXI6CiAJdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKCZtY3RfdTIzMl9kZXZpY2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL21vczc3MjAuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3NzIwLmMKaW5kZXggN2I1MzhjYS4uZTc3MmNjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL21vczc3MjAuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCkBAIC0zNTUsMTQgKzM1NSwxNiBAQAogCQltb3M3NzIwX3BvcnQtPndyaXRlX3VyYl9wb29sW2pdID0gdXJiOwogCiAJCWlmICh1cmIgPT0gTlVMTCkgewotCQkJZXJyKCJObyBtb3JlIHVyYnM/Pz8iKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIk5vIG1vcmUgdXJicz8/P1xuIik7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCXVyYi0+dHJhbnNmZXJfYnVmZmVyID0ga21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUsCiAJCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAkJaWYgKCF1cmItPnRyYW5zZmVyX2J1ZmZlcikgewotCQkJZXJyKCIlcy1vdXQgb2YgbWVtb3J5IGZvciB1cmIgYnVmZmVycy4iLCBfX2Z1bmNfXyk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIiVzLW91dCBvZiBtZW1vcnkgZm9yIHVyYiBidWZmZXJzLlxuIiwKKwkJCQlfX2Z1bmNfXyk7CiAJCQl1c2JfZnJlZV91cmIobW9zNzcyMF9wb3J0LT53cml0ZV91cmJfcG9vbFtqXSk7CiAJCQltb3M3NzIwX3BvcnQtPndyaXRlX3VyYl9wb29sW2pdID0gTlVMTDsKIAkJCWNvbnRpbnVlOwpAQCAtNjk0LDcgKzY5Niw4IEBACiAJCXVyYi0+dHJhbnNmZXJfYnVmZmVyID0ga21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUsCiAJCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAkJaWYgKHVyYi0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKLQkJCWVycigiJXMgbm8gbW9yZSBrZXJuZWwgbWVtb3J5Li4uIiwgX19mdW5jX18pOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgbm8gbW9yZSBrZXJuZWwgbWVtb3J5Li4uXG4iLAorCQkJCV9fZnVuY19fKTsKIAkJCWdvdG8gZXhpdDsKIAkJfQogCX0KQEAgLTcxNCw4ICs3MTcsOCBAQAogCS8qIHNlbmQgaXQgZG93biB0aGUgcGlwZSAqLwogCXN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CiAJaWYgKHN0YXR1cykgewotCQllcnIoIiVzIC0gdXNiX3N1Ym1pdF91cmIod3JpdGUgYnVsaykgZmFpbGVkIHdpdGggc3RhdHVzID0gJWQiLAotCQkgICAgX19mdW5jX18sIHN0YXR1cyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gdXNiX3N1Ym1pdF91cmIod3JpdGUgYnVsaykgZmFpbGVkICIKKwkJCSJ3aXRoIHN0YXR1cyA9ICVkXG4iLCBfX2Z1bmNfXywgc3RhdHVzKTsKIAkJYnl0ZXNfc2VudCA9IHN0YXR1czsKIAkJZ290byBleGl0OwogCX0KQEAgLTk3NSw3ICs5NzgsNyBAQAogCS8qIENhbGN1bGF0ZSB0aGUgRGl2aXNvciAqLwogCXN0YXR1cyA9IGNhbGNfYmF1ZF9yYXRlX2Rpdmlzb3IoYmF1ZHJhdGUsICZkaXZpc29yKTsKIAlpZiAoc3RhdHVzKSB7Ci0JCWVycigiJXMgLSBiYWQgYmF1ZCByYXRlIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIGJhZCBiYXVkIHJhdGVcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9CiAKQEAgLTE0NzgsNyArMTQ4MSw3IEBACiAJLyogY3JlYXRlIG91ciBwcml2YXRlIHNlcmlhbCBzdHJ1Y3R1cmUgKi8KIAltb3M3NzIwX3NlcmlhbCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBtb3NjaGlwX3NlcmlhbCksIEdGUF9LRVJORUwpOwogCWlmIChtb3M3NzIwX3NlcmlhbCA9PSBOVUxMKSB7Ci0JCWVycigiJXMgLSBPdXQgb2YgbWVtb3J5IiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZkZXYtPmRldiwgIiVzIC0gT3V0IG9mIG1lbW9yeVxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKQEAgLTE0OTEsNyArMTQ5NCw3IEBACiAJZm9yIChpID0gMDsgaSA8IHNlcmlhbC0+bnVtX3BvcnRzOyArK2kpIHsKIAkJbW9zNzcyMF9wb3J0ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG1vc2NoaXBfcG9ydCksIEdGUF9LRVJORUwpOwogCQlpZiAobW9zNzcyMF9wb3J0ID09IE5VTEwpIHsKLQkJCWVycigiJXMgLSBPdXQgb2YgbWVtb3J5IiwgX19mdW5jX18pOworCQkJZGV2X2VycigmZGV2LT5kZXYsICIlcyAtIE91dCBvZiBtZW1vcnlcbiIsIF9fZnVuY19fKTsKIAkJCXVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCBOVUxMKTsKIAkJCWtmcmVlKG1vczc3MjBfc2VyaWFsKTsKIAkJCXJldHVybiAtRU5PTUVNOwpAQCAtMTU4NSw3ICsxNTg4LDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF9wb3J0X2RldmljZV9yZWdpc3RlcjsKIAotCWluZm8oRFJJVkVSX0RFU0MgIiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJLyogUmVnaXN0ZXIgd2l0aCB0aGUgdXNiICovCiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZ1c2JfZHJpdmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3ODQwLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jCmluZGV4IDYwNTQzZDcuLmZkYTRhNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3ODQwLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYwpAQCAtODQ0LDcgKzg0NCw3IEBACiAJCW1vczc4NDBfcG9ydC0+d3JpdGVfdXJiX3Bvb2xbal0gPSB1cmI7CiAKIAkJaWYgKHVyYiA9PSBOVUxMKSB7Ci0JCQllcnIoIk5vIG1vcmUgdXJicz8/PyIpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiTm8gbW9yZSB1cmJzPz8/XG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTg1Myw3ICs4NTMsOSBAQAogCQlpZiAoIXVyYi0+dHJhbnNmZXJfYnVmZmVyKSB7CiAJCQl1c2JfZnJlZV91cmIodXJiKTsKIAkJCW1vczc4NDBfcG9ydC0+d3JpdGVfdXJiX3Bvb2xbal0gPSBOVUxMOwotCQkJZXJyKCIlcy1vdXQgb2YgbWVtb3J5IGZvciB1cmIgYnVmZmVycy4iLCBfX2Z1bmNfXyk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIiVzLW91dCBvZiBtZW1vcnkgZm9yIHVyYiBidWZmZXJzLlxuIiwKKwkJCQlfX2Z1bmNfXyk7CiAJCQljb250aW51ZTsKIAkJfQogCX0KQEAgLTEwMjEsOCArMTAyMyw4IEBACiAJCQkgICAgdXNiX3N1Ym1pdF91cmIoc2VyaWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJiLAogCQkJCQkgICBHRlBfS0VSTkVMKTsKIAkJCWlmIChyZXNwb25zZSkgewotCQkJCWVycigiJXMgLSBFcnJvciAlZCBzdWJtaXR0aW5nIGludGVycnVwdCB1cmIiLAotCQkJCSAgICBfX2Z1bmNfXywgcmVzcG9uc2UpOworCQkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gRXJyb3IgJWQgc3VibWl0dGluZyAiCisJCQkJCSJpbnRlcnJ1cHQgdXJiXG4iLCBfX2Z1bmNfXywgcmVzcG9uc2UpOwogCQkJfQogCiAJCX0KQEAgLTEwNTUsOCArMTA1Nyw4IEBACiAJICAgIHBvcnQtPmJ1bGtfaW5fZW5kcG9pbnRBZGRyZXNzKTsKIAlyZXNwb25zZSA9IHVzYl9zdWJtaXRfdXJiKG1vczc4NDBfcG9ydC0+cmVhZF91cmIsIEdGUF9LRVJORUwpOwogCWlmIChyZXNwb25zZSkgewotCQllcnIoIiVzIC0gRXJyb3IgJWQgc3VibWl0dGluZyBjb250cm9sIHVyYiIsIF9fZnVuY19fLAotCQkgICAgcmVzcG9uc2UpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIEVycm9yICVkIHN1Ym1pdHRpbmcgY29udHJvbCB1cmJcbiIsCisJCQlfX2Z1bmNfXywgcmVzcG9uc2UpOwogCX0KIAogCS8qIGluaXRpYWxpemUgb3VyIHdhaXQgcXVldWVzICovCkBAIC0xNDkyLDcgKzE0OTQsOCBAQAogCQkgICAga21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUsIEdGUF9LRVJORUwpOwogCiAJCWlmICh1cmItPnRyYW5zZmVyX2J1ZmZlciA9PSBOVUxMKSB7Ci0JCQllcnIoIiVzIG5vIG1vcmUga2VybmVsIG1lbW9yeS4uLiIsIF9fZnVuY19fKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIG5vIG1vcmUga2VybmVsIG1lbW9yeS4uLlxuIiwKKwkJCQlfX2Z1bmNfXyk7CiAJCQlnb3RvIGV4aXQ7CiAJCX0KIAl9CkBAIC0xNTE3LDggKzE1MjAsOCBAQAogCiAJaWYgKHN0YXR1cykgewogCQltb3M3ODQwX3BvcnQtPmJ1c3lbaV0gPSAwOwotCQllcnIoIiVzIC0gdXNiX3N1Ym1pdF91cmIod3JpdGUgYnVsaykgZmFpbGVkIHdpdGggc3RhdHVzID0gJWQiLAotCQkgICAgX19mdW5jX18sIHN0YXR1cyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gdXNiX3N1Ym1pdF91cmIod3JpdGUgYnVsaykgZmFpbGVkICIKKwkJCSJ3aXRoIHN0YXR1cyA9ICVkXG4iLCBfX2Z1bmNfXywgc3RhdHVzKTsKIAkJYnl0ZXNfc2VudCA9IHN0YXR1czsKIAkJZ290byBleGl0OwogCX0KQEAgLTE4NTYsOCArMTg1OSw3IEBACiAJCS8qIENhbGN1bGF0ZSB0aGUgRGl2aXNvciAqLwogCiAJCWlmIChzdGF0dXMpIHsKLQkJCWVycigiJXMgLSBiYWQgYmF1ZCByYXRlIiwgX19mdW5jX18pOwotCQkJZGJnKCIlc1xuIiwgImJhZCBiYXVkIHJhdGUiKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gYmFkIGJhdWQgcmF0ZVxuIiwgX19mdW5jX18pOwogCQkJcmV0dXJuIHN0YXR1czsKIAkJfQogCQkvKiBFbmFibGUgYWNjZXNzIHRvIGRpdmlzb3IgbGF0Y2ggKi8KQEAgLTI0NDYsNyArMjQ0OCw3IEBACiAJZm9yIChpID0gMDsgaSA8IHNlcmlhbC0+bnVtX3BvcnRzOyArK2kpIHsKIAkJbW9zNzg0MF9wb3J0ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG1vc2NoaXBfcG9ydCksIEdGUF9LRVJORUwpOwogCQlpZiAobW9zNzg0MF9wb3J0ID09IE5VTEwpIHsKLQkJCWVycigiJXMgLSBPdXQgb2YgbWVtb3J5IiwgX19mdW5jX18pOworCQkJZGV2X2VycigmZGV2LT5kZXYsICIlcyAtIE91dCBvZiBtZW1vcnlcbiIsIF9fZnVuY19fKTsKIAkJCXN0YXR1cyA9IC1FTk9NRU07CiAJCQlpLS07IC8qIGRvbid0IGZvbGxvdyBOVUxMIHBvaW50ZXIgY2xlYW5pbmcgdXAgKi8KIAkJCWdvdG8gZXJyb3I7CkBAIC0yNzQzLDcgKzI3NDUsOCBAQAogCQlnb3RvIGZhaWxlZF9wb3J0X2RldmljZV9yZWdpc3RlcjsKIAogCWRiZygiJXNcbiIsICJFbnRyaW5nLi4uIik7Ci0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAKIAkvKiBSZWdpc3RlciB3aXRoIHRoZSB1c2IgKi8KIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXIoJmlvX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL29tbmluZXQuYwppbmRleCBjNGQ3MGIwLi5kZjY1Mzk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMKQEAgLTE1NCw4ICsxNTQsOCBAQAogCiAJb2QgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgb21uaW5ldF9kYXRhKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFvZCkgewotCQllcnIoIiVzLSBrbWFsbG9jKCVaZCkgZmFpbGVkLiIsCi0JCQkJX19mdW5jX18sIHNpemVvZihzdHJ1Y3Qgb21uaW5ldF9kYXRhKSk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzLSBrbWFsbG9jKCVaZCkgZmFpbGVkLlxuIiwKKwkJCV9fZnVuY19fLCBzaXplb2Yoc3RydWN0IG9tbmluZXRfZGF0YSkpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJdXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIG9kKTsKQEAgLTE4Myw4ICsxODMsOSBAQAogCQkJb21uaW5ldF9yZWFkX2J1bGtfY2FsbGJhY2ssIHBvcnQpOwogCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHBvcnQtPnJlYWRfdXJiLCBHRlBfS0VSTkVMKTsKIAlpZiAocmVzdWx0KQotCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkIiwKLQkJCQkJCQlfX2Z1bmNfXywgcmVzdWx0KTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ0LDggKzI0NSw5IEBACiAJCQlvbW5pbmV0X3JlYWRfYnVsa19jYWxsYmFjaywgcG9ydCk7CiAJcmVzdWx0ID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAocmVzdWx0KQotCQllcnIoIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLAotCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlcyAtIGZhaWxlZCByZXN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJX19mdW5jX18sIHJlc3VsdCk7CiAKIAlyZXR1cm47CiB9CkBAIC0yOTgsOCArMzAwLDkgQEAKIAlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYih3cG9ydC0+d3JpdGVfdXJiLCBHRlBfQVRPTUlDKTsKIAlpZiAocmVzdWx0KSB7CiAJCXdwb3J0LT53cml0ZV91cmJfYnVzeSA9IDA7Ci0JCWVycigiJXMgLSBmYWlsZWQgc3VibWl0dGluZyB3cml0ZSB1cmIsIGVycm9yICVkIiwKLQkJCQkJCQlfX2Z1bmNfXywgcmVzdWx0KTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXN1bHQpOwogCX0gZWxzZQogCQlyZXN1bHQgPSBjb3VudDsKIApAQCAtMzY0LDcgKzM2Nyw4IEBACiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZvbW5pbmV0X2RyaXZlcik7CiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX1ZFUlNJT04gIjoiIERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCXJldHVybiAwOwogZmFpbGVkX3VzYl9yZWdpc3RlcjoKIAl1c2Jfc2VyaWFsX2RlcmVnaXN0ZXIoJnp5eGVsX29tbmluZXRfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwppbmRleCA2YjE3MjdlLi4zZDg3ZWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCkBAIC03OSwyNyArNzksMTYgQEAKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfVklQRVIJCQkweDY2MDAKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfVklQRVJfQlVTCQkweDY2MDEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfR1RfTUFYX1JFQURZCQkweDY3MDEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfR1RfTUFYCQkJMHg2NzExCiAjZGVmaW5lIE9QVElPTl9QUk9EVUNUX0ZVSklfTU9ERU1fTElHSFQJCTB4NjcyMQogI2RlZmluZSBPUFRJT05fUFJPRFVDVF9GVUpJX01PREVNX0dUCQkweDY3NDEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRlVKSV9NT0RFTV9FWAkJMHg2NzYxCi0jZGVmaW5lIE9QVElPTl9QUk9EVUNUX0ZVSklfTkVUV09SS19MSUdIVAkweDY3MzEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRlVKSV9ORVRXT1JLX0dUCQkweDY3NTEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRlVKSV9ORVRXT1JLX0VYCQkweDY3NzEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfS09JX01PREVNCQkweDY4MDAKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfS09JX05FVFdPUksJCTB4NjgxMQogI2RlZmluZSBPUFRJT05fUFJPRFVDVF9TQ09SUElPTl9NT0RFTQkJMHg2OTAxCi0jZGVmaW5lIE9QVElPTl9QUk9EVUNUX1NDT1JQSU9OX05FVFdPUksJCTB4NjkxMQogI2RlZmluZSBPUFRJT05fUFJPRFVDVF9FVE5BX01PREVNCQkweDcwMDEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9ORVRXT1JLCQkweDcwMTEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9NT0RFTV9MSVRFCQkweDcwMjEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9NT0RFTV9HVAkJMHg3MDQxCiAjZGVmaW5lIE9QVElPTl9QUk9EVUNUX0VUTkFfTU9ERU1fRVgJCTB4NzA2MQotI2RlZmluZSBPUFRJT05fUFJPRFVDVF9FVE5BX05FVFdPUktfTElURQkweDcwMzEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9ORVRXT1JLX0dUCQkweDcwNTEKLSNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9ORVRXT1JLX0VYCQkweDcwNzEKICNkZWZpbmUgT1BUSU9OX1BST0RVQ1RfRVROQV9LT0lfTU9ERU0JCTB4NzEwMAotI2RlZmluZSBPUFRJT05fUFJPRFVDVF9FVE5BX0tPSV9ORVRXT1JLCQkweDcxMTEKIAogI2RlZmluZSBIVUFXRUlfVkVORE9SX0lECQkJMHgxMkQxCiAjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0U2MDAJCQkweDEwMDEKQEAgLTIyMCw2ICsyMDksMTYgQEAKICNkZWZpbmUgWlRFX1BST0RVQ1RfTUY2MjgJCQkweDAwMTUKICNkZWZpbmUgWlRFX1BST0RVQ1RfQ0RNQV9URUNICQkJMHhmZmZlCiAKKy8qIEVyaWNzc29uIHByb2R1Y3RzICovCisjZGVmaW5lIEVSSUNTU09OX1ZFTkRPUl9JRAkJCTB4MGJkYgorI2RlZmluZSBFUklDU1NPTl9QUk9EVUNUX0YzNTA3RwkJCTB4MTkwMAorCisvKiBQYW50ZWNoIHByb2R1Y3RzICovCisjZGVmaW5lIFBBTlRFQ0hfVkVORE9SX0lECQkJMHgxMDZjCisjZGVmaW5lIFBBTlRFQ0hfUFJPRFVDVF9QQzU3NDAJCQkweDM3MDEKKyNkZWZpbmUgUEFOVEVDSF9QUk9EVUNUX1BDNTc1MAkJCTB4MzcwMiAgLyogUFgtNTAwICovCisjZGVmaW5lIFBBTlRFQ0hfUFJPRFVDVF9VTTE1MAkJCTB4MzcxMQorCiBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgb3B0aW9uX2lkc1tdID0gewogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9DT0xUKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9SSUNPTEEpIH0sCkBAIC0yMzUsMjcgKzIzNCwxNiBAQAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9WSVBFUikgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfVklQRVJfQlVTKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9HVF9NQVhfUkVBRFkpIH0sCi0JeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0dUX01BWCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVKSV9NT0RFTV9MSUdIVCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVKSV9NT0RFTV9HVCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVKSV9NT0RFTV9FWCkgfSwKLQl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVKSV9ORVRXT1JLX0xJR0hUKSB9LAotCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9GVUpJX05FVFdPUktfR1QpIH0sCi0JeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0ZVSklfTkVUV09SS19FWCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfS09JX01PREVNKSB9LAotCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9LT0lfTkVUV09SSykgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfU0NPUlBJT05fTU9ERU0pIH0sCi0JeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX1NDT1JQSU9OX05FVFdPUkspIH0sCiAJeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0VUTkFfTU9ERU0pIH0sCi0JeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0VUTkFfTkVUV09SSykgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRVROQV9NT0RFTV9MSVRFKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9FVE5BX01PREVNX0dUKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9FVE5BX01PREVNX0VYKSB9LAotCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9FVE5BX05FVFdPUktfTElURSkgfSwKLQl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRVROQV9ORVRXT1JLX0dUKSB9LAotCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9FVE5BX05FVFdPUktfRVgpIH0sCiAJeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0VUTkFfS09JX01PREVNKSB9LAotCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9FVE5BX0tPSV9ORVRXT1JLKSB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTYwMCwgMHhmZiwgMHhmZiwgMHhmZikgfSwKIAl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UyMjAsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMjIwQklTLCAweGZmLCAweGZmLCAweGZmKSB9LApAQCAtMzE4LDcgKzMwNiw4IEBACiAJeyBVU0JfREVWSUNFKERFTExfVkVORE9SX0lELCAweDgxMzYpIH0sCS8qIERlbGwgV2lyZWxlc3MgSFNEUEEgNTUyMCA9PSBOb3ZhdGVsIEV4cGVkaXRlIEVVODYwRCAqLwogCXsgVVNCX0RFVklDRShERUxMX1ZFTkRPUl9JRCwgMHg4MTM3KSB9LAkvKiBEZWxsIFdpcmVsZXNzIEhTRFBBIDU1MjAgKi8KIAl7IFVTQl9ERVZJQ0UoREVMTF9WRU5ET1JfSUQsIDB4ODEzOCkgfSwJLyogRGVsbCBXaXJlbGVzcyA1NTIwIFZvZGEgSSBNb2JpbGUgQnJvYWRiYW5kICgzRyBIU0RQQSkgTWluaWNhcmQgKi8KLQl7IFVTQl9ERVZJQ0UoQU5ZREFUQV9WRU5ET1JfSUQsIEFOWURBVEFfUFJPRFVDVF9BRFVfRTEwMEEpIH0sCisJeyBVU0JfREVWSUNFKERFTExfVkVORE9SX0lELCAweDgxNDcpIH0sCS8qIERlbGwgV2lyZWxlc3MgNTUzMCBNb2JpbGUgQnJvYWRiYW5kICgzRyBIU1BBKSBNaW5pLUNhcmQgKi8KKwl7IFVTQl9ERVZJQ0UoQU5ZREFUQV9WRU5ET1JfSUQsIEFOWURBVEFfUFJPRFVDVF9BRFVfRTEwMEEpIH0sCS8qIEFEVS1FMTAwLCBBRFUtMzEwICovCiAJeyBVU0JfREVWSUNFKEFOWURBVEFfVkVORE9SX0lELCBBTllEQVRBX1BST0RVQ1RfQURVXzUwMEEpIH0sCiAJeyBVU0JfREVWSUNFKEFOWURBVEFfVkVORE9SX0lELCBBTllEQVRBX1BST0RVQ1RfQURVXzYyMFVXKSB9LAogCXsgVVNCX0RFVklDRShBWEVTU1RFTF9WRU5ET1JfSUQsIEFYRVNTVEVMX1BST0RVQ1RfTVYxMTBIKSB9LApAQCAtMzQ5LDYgKzMzOCwxMCBAQAogCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfVUM4NjRFKSB9LAogCXsgVVNCX0RFVklDRShaVEVfVkVORE9SX0lELCBaVEVfUFJPRFVDVF9NRjYyOCkgfSwKIAl7IFVTQl9ERVZJQ0UoWlRFX1ZFTkRPUl9JRCwgWlRFX1BST0RVQ1RfQ0RNQV9URUNIKSB9LAorCXsgVVNCX0RFVklDRShFUklDU1NPTl9WRU5ET1JfSUQsIEVSSUNTU09OX1BST0RVQ1RfRjM1MDdHKSB9LAorCXsgVVNCX0RFVklDRShQQU5URUNIX1ZFTkRPUl9JRCwgUEFOVEVDSF9QUk9EVUNUX1BDNTc0MCkgfSwKKwl7IFVTQl9ERVZJQ0UoUEFOVEVDSF9WRU5ET1JfSUQsIFBBTlRFQ0hfUFJPRFVDVF9QQzU3NTApIH0sCisJeyBVU0JfREVWSUNFKFBBTlRFQ0hfVkVORE9SX0lELCBQQU5URUNIX1BST0RVQ1RfVU0xNTApIH0sCiAJeyB9IC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG9wdGlvbl9pZHMpOwpAQCAtNDI3LDcgKzQyMCw4IEBACiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfZHJpdmVyX3JlZ2lzdGVyOwogCi0JaW5mbyhEUklWRVJfREVTQyAiOiAiIERSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIERSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYwppbmRleCA5MDg0Mzc4Li40OTFjODg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5jCkBAIC0xMTQ3LDcgKzExNDcsNyBAQAogCXJldHZhbCA9IHVzYl9yZWdpc3RlcigmcGwyMzAzX2RyaXZlcik7CiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX0RFU0MpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIGZhaWxlZF91c2JfcmVnaXN0ZXI6CiAJdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKCZwbDIzMDNfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zYWZlX3NlcmlhbC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NhZmVfc2VyaWFsLmMKaW5kZXggNzI5MDNhYy4uNGI0NjNjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NhZmVfc2VyaWFsLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NhZmVfc2VyaWFsLmMKQEAgLTI1MCwxNyArMjUwLDE4IEBACiAJCWlmICghZmNzKSB7CiAJCQlpbnQgYWN0dWFsX2xlbmd0aCA9IGRhdGFbbGVuZ3RoIC0gMl0gPj4gMjsKIAkJCWlmIChhY3R1YWxfbGVuZ3RoIDw9IChsZW5ndGggLSAyKSkgewotCQkJCWluZm8oIiVzIC0gYWN0dWFsOiAlZCIsIF9fZnVuY19fLAotCQkJCQkJCWFjdHVhbF9sZW5ndGgpOworCQkJCWRldl9pbmZvKCZ1cmItPmRldi0+ZGV2LCAiJXMgLSBhY3R1YWw6ICVkXG4iLAorCQkJCQkgX19mdW5jX18sIGFjdHVhbF9sZW5ndGgpOwogCQkJCXR0eV9pbnNlcnRfZmxpcF9zdHJpbmcodHR5LAogCQkJCQkJCWRhdGEsIGFjdHVhbF9sZW5ndGgpOwogCQkJCXR0eV9mbGlwX2J1ZmZlcl9wdXNoKHR0eSk7CiAJCQl9IGVsc2UgewotCQkJCWVycigiJXMgLSBpbmNvbnNpc3RlbnQgbGVuZ3RocyAlZDolZCIsCisJCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCQkiJXMgLSBpbmNvbnNpc3RlbnQgbGVuZ3RocyAlZDolZFxuIiwKIAkJCQkJX19mdW5jX18sIGFjdHVhbF9sZW5ndGgsIGxlbmd0aCk7CiAJCQl9CiAJCX0gZWxzZSB7Ci0JCQllcnIoIiVzIC0gYmFkIENSQyAleCIsIF9fZnVuY19fLCBmY3MpOworCQkJZGV2X2VycigmcG9ydC0+ZGV2LCAiJXMgLSBiYWQgQ1JDICV4XG4iLCBfX2Z1bmNfXywgZmNzKTsKIAkJfQogCX0gZWxzZSB7CiAJCXR0eV9pbnNlcnRfZmxpcF9zdHJpbmcodHR5LCBkYXRhLCBsZW5ndGgpOwpAQCAtMjc3LDggKzI3OCw5IEBACiAKIAlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCWlmIChyZXN1bHQpCi0JCWVycigiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlcyAtIGZhaWxlZCByZXN1Ym1pdHRpbmcgcmVhZCB1cmIsIGVycm9yICVkXG4iLAorCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJCS8qIEZJWE1FOiBOZWVkIGEgbWVjaGFuaXNtIHRvIHJldHJ5IGxhdGVyIGlmIHRoaXMgaGFwcGVucyAqLwogfQogCkBAIC0zNjksOCArMzcxLDkgQEAKIAlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYihwb3J0LT53cml0ZV91cmIsIEdGUF9LRVJORUwpOwogCWlmIChyZXN1bHQpIHsKIAkJcG9ydC0+d3JpdGVfdXJiX2J1c3kgPSAwOwotCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmVzdWx0KTsKIAkJcmV0dXJuIDA7CiAJfQogCWRiZygiJXMgdXJiOiAlcCBzdWJtaXR0ZWQiLCBfX2Z1bmNfXywgcG9ydC0+d3JpdGVfdXJiKTsKQEAgLTQyOCwxNCArNDMxLDEzIEBACiB7CiAJaW50IGksIHJldHZhbDsKIAotCWluZm8oRFJJVkVSX1ZFUlNJT04gIiAiIERSSVZFUl9BVVRIT1IpOwotCWluZm8oRFJJVkVSX0RFU0MpOwotCWluZm8oInZlbmRvcjogJXggcHJvZHVjdDogJXggc2FmZTogJWQgcGFkZGVkOiAlZFxuIiwKLQkJCQkJdmVuZG9yLCBwcm9kdWN0LCBzYWZlLCBwYWRkZWQpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAKIAkvKiBpZiB3ZSBoYXZlIHZlbmRvciAvIHByb2R1Y3QgcGFyYW1ldGVycyBwYXRjaCB0aGVtIGludG8gaWQgbGlzdCAqLwogCWlmICh2ZW5kb3IgfHwgcHJvZHVjdCkgewotCQlpbmZvKCJ2ZW5kb3I6ICV4IHByb2R1Y3Q6ICV4XG4iLCB2ZW5kb3IsIHByb2R1Y3QpOworCQlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6IHZlbmRvcjogJXggcHJvZHVjdDogJXhcbiIsCisJCSAgICAgICB2ZW5kb3IsIHByb2R1Y3QpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlkX3RhYmxlKTsgaSsrKSB7CiAJCQlpZiAoIWlkX3RhYmxlW2ldLmlkVmVuZG9yICYmICFpZF90YWJsZVtpXS5pZFByb2R1Y3QpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYwppbmRleCA4YjllYWYzLi4wZjJiNjcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvc2llcnJhLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5jCkBAIC0yNDcsNyArMjQ3LDcgQEAKIAlzdHJ1Y3Qgc2llcnJhX3BvcnRfcHJpdmF0ZSAqcG9ydGRhdGE7CiAJX191MTYgaW50ZXJmYWNlID0gMDsKIAotCWRiZygiJXMiLCBfX2Z1bmNfXyk7CisJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXMiLCBfX2Z1bmNfXyk7CiAKIAlwb3J0ZGF0YSA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIApAQCAtMjg0LDcgKzI4NCw3IEBACiBzdGF0aWMgdm9pZCBzaWVycmFfc2V0X3Rlcm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAkJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgc3RydWN0IGt0ZXJtaW9zICpvbGRfdGVybWlvcykKIHsKLQlkYmcoIiVzIiwgX19mdW5jX18pOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIiwgX19mdW5jX18pOwogCXR0eV90ZXJtaW9zX2NvcHlfaHcodHR5LT50ZXJtaW9zLCBvbGRfdGVybWlvcyk7CiAJc2llcnJhX3NlbmRfc2V0dXAodHR5LCBwb3J0KTsKIH0KQEAgLTI5NSw2ICsyOTUsNyBAQAogCXVuc2lnbmVkIGludCB2YWx1ZTsKIAlzdHJ1Y3Qgc2llcnJhX3BvcnRfcHJpdmF0ZSAqcG9ydGRhdGE7CiAKKwlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyIsIF9fZnVuY19fKTsKIAlwb3J0ZGF0YSA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAogCXZhbHVlID0gKChwb3J0ZGF0YS0+cnRzX3N0YXRlKSA/IFRJT0NNX1JUUyA6IDApIHwKQEAgLTMzNCwxNCArMzM1LDE0IEBACiAJaW50IHN0YXR1cyA9IHVyYi0+c3RhdHVzOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlkYmcoIiVzIC0gcG9ydCAlZCIsIF9fZnVuY19fLCBwb3J0LT5udW1iZXIpOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0gcG9ydCAlZCIsIF9fZnVuY19fLCBwb3J0LT5udW1iZXIpOwogCiAJLyogZnJlZSB1cCB0aGUgdHJhbnNmZXIgYnVmZmVyLCBhcyB1c2JfZnJlZV91cmIoKSBkb2VzIG5vdCBkbyB0aGlzICovCiAJa2ZyZWUodXJiLT50cmFuc2Zlcl9idWZmZXIpOwogCiAJaWYgKHN0YXR1cykKLQkJZGJnKCIlcyAtIG5vbnplcm8gd3JpdGUgYnVsayBzdGF0dXMgcmVjZWl2ZWQ6ICVkIiwKLQkJICAgIF9fZnVuY19fLCBzdGF0dXMpOworCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyAtIG5vbnplcm8gd3JpdGUgYnVsayBzdGF0dXMgIgorCQkgICAgInJlY2VpdmVkOiAlZCIsIF9fZnVuY19fLCBzdGF0dXMpOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnBvcnRkYXRhLT5sb2NrLCBmbGFncyk7CiAJLS1wb3J0ZGF0YS0+b3V0c3RhbmRpbmdfdXJiczsKQEAgLTM2MywxMiArMzY0LDEyIEBACiAKIAlwb3J0ZGF0YSA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAotCWRiZygiJXM6IHdyaXRlICglZCBjaGFycykiLCBfX2Z1bmNfXywgY291bnQpOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzOiB3cml0ZSAoJWQgY2hhcnMpIiwgX19mdW5jX18sIGNvdW50KTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0ZGF0YS0+bG9jaywgZmxhZ3MpOwogCWlmIChwb3J0ZGF0YS0+b3V0c3RhbmRpbmdfdXJicyA+IE5fT1VUX1VSQikgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwb3J0ZGF0YS0+bG9jaywgZmxhZ3MpOwotCQlkYmcoIiVzIC0gd3JpdGUgbGltaXQgaGl0XG4iLCBfX2Z1bmNfXyk7CisJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0gd3JpdGUgbGltaXQgaGl0XG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAwOwogCX0KIAlwb3J0ZGF0YS0+b3V0c3RhbmRpbmdfdXJicysrOwpAQCAtNDM3LDggKzQzOCw4IEBACiAJcG9ydCA9ICB1cmItPmNvbnRleHQ7CiAKIAlpZiAoc3RhdHVzKSB7Ci0JCWRiZygiJXM6IG5vbnplcm8gc3RhdHVzOiAlZCBvbiBlbmRwb2ludCAlMDJ4LiIsCi0JCSAgICBfX2Z1bmNfXywgc3RhdHVzLCBlbmRwb2ludCk7CisJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzOiBub256ZXJvIHN0YXR1czogJWQgb24iCisJCSAgICAiIGVuZHBvaW50ICUwMnguIiwgX19mdW5jX18sIHN0YXR1cywgZW5kcG9pbnQpOwogCX0gZWxzZSB7CiAJCWlmICh1cmItPmFjdHVhbF9sZW5ndGgpIHsKIAkJdHR5ID0gdHR5X3BvcnRfdHR5X2dldCgmcG9ydC0+cG9ydCk7CkBAIC00NDcsNyArNDQ4LDggQEAKIAkJCXR0eV9mbGlwX2J1ZmZlcl9wdXNoKHR0eSk7CiAJCQl0dHlfa3JlZl9wdXQodHR5KTsKIAkJfSBlbHNlCi0JCQlkYmcoIiVzOiBlbXB0eSByZWFkIHVyYiByZWNlaXZlZCIsIF9fZnVuY19fKTsKKwkJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzOiBlbXB0eSByZWFkIHVyYiIKKwkJCQkiIHJlY2VpdmVkIiwgX19mdW5jX18pOwogCiAJCS8qIFJlc3VibWl0IHVyYiBzbyB3ZSBjb250aW51ZSByZWNlaXZpbmcgKi8KIAkJaWYgKHBvcnQtPnBvcnQuY291bnQgJiYgc3RhdHVzICE9IC1FU0hVVERPV04pIHsKQEAgLTQ2OCwxNSArNDcwLDE3IEBACiAJc3RydWN0IHNpZXJyYV9wb3J0X3ByaXZhdGUgKnBvcnRkYXRhID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7CiAKLQlkYmcoIiVzIiwgX19mdW5jX18pOwotCWRiZygiJXM6IHVyYiAlcCBwb3J0ICVwIGhhcyBkYXRhICVwIiwgX19mdW5jX18sIHVyYiwgcG9ydCwgcG9ydGRhdGEpOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIiwgX19mdW5jX18pOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzOiB1cmIgJXAgcG9ydCAlcCBoYXMgZGF0YSAlcCIsIF9fZnVuY19fLAorCQl1cmIsIHBvcnQsIHBvcnRkYXRhKTsKIAogCWlmIChzdGF0dXMgPT0gMCkgewogCQlzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpyZXFfcGt0ID0KIAkJCQkoc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqKXVyYi0+dHJhbnNmZXJfYnVmZmVyOwogCiAJCWlmICghcmVxX3BrdCkgewotCQkJZGJnKCIlczogTlVMTCByZXFfcGt0XG4iLCBfX2Z1bmNfXyk7CisJCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlczogTlVMTCByZXFfcGt0XG4iLAorCQkJCV9fZnVuY19fKTsKIAkJCXJldHVybjsKIAkJfQogCQlpZiAoKHJlcV9wa3QtPmJSZXF1ZXN0VHlwZSA9PSAweEExKSAmJgpAQCAtNDg3LDcgKzQ5MSw4IEBACiAJCQkJCXNpemVvZihzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0KSk7CiAJCQlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogCi0JCQlkYmcoIiVzOiBzaWduYWwgeCV4IiwgX19mdW5jX18sIHNpZ25hbHMpOworCQkJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXM6IHNpZ25hbCB4JXgiLCBfX2Z1bmNfXywKKwkJCQlzaWduYWxzKTsKIAogCQkJb2xkX2RjZF9zdGF0ZSA9IHBvcnRkYXRhLT5kY2Rfc3RhdGU7CiAJCQlwb3J0ZGF0YS0+Y3RzX3N0YXRlID0gMTsKQEAgLTUwMSwxOSArNTA2LDIwIEBACiAJCQkJdHR5X2hhbmd1cCh0dHkpOwogCQkJdHR5X2tyZWZfcHV0KHR0eSk7CiAJCX0gZWxzZSB7Ci0JCQlkYmcoIiVzOiB0eXBlICV4IHJlcSAleCIsIF9fZnVuY19fLAotCQkJCXJlcV9wa3QtPmJSZXF1ZXN0VHlwZSwgcmVxX3BrdC0+YlJlcXVlc3QpOworCQkJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXM6IHR5cGUgJXggcmVxICV4IiwKKwkJCQlfX2Z1bmNfXywgcmVxX3BrdC0+YlJlcXVlc3RUeXBlLAorCQkJCXJlcV9wa3QtPmJSZXF1ZXN0KTsKIAkJfQogCX0gZWxzZQotCQlkYmcoIiVzOiBlcnJvciAlZCIsIF9fZnVuY19fLCBzdGF0dXMpOworCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlczogZXJyb3IgJWQiLCBfX2Z1bmNfXywgc3RhdHVzKTsKIAogCS8qIFJlc3VibWl0IHVyYiBzbyB3ZSBjb250aW51ZSByZWNlaXZpbmcgSVJRIGRhdGEgKi8KIAlpZiAoc3RhdHVzICE9IC1FU0hVVERPV04pIHsKIAkJdXJiLT5kZXYgPSBzZXJpYWwtPmRldjsKIAkJZXJyID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIAkJaWYgKGVycikKLQkJCWRiZygiJXM6IHJlc3VibWl0IGludHIgdXJiIGZhaWxlZC4gKCVkKSIsCi0JCQkJX19mdW5jX18sIGVycik7CisJCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlczogcmVzdWJtaXQgaW50ciB1cmIgIgorCQkJCSJmYWlsZWQuICglZCkiLAlfX2Z1bmNfXywgZXJyKTsKIAl9CiB9CiAKQEAgLTUyMywxNCArNTI5LDE0IEBACiAJc3RydWN0IHNpZXJyYV9wb3J0X3ByaXZhdGUgKnBvcnRkYXRhID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlkYmcoIiVzIC0gcG9ydCAlZCIsIF9fZnVuY19fLCBwb3J0LT5udW1iZXIpOworCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0gcG9ydCAlZCIsIF9fZnVuY19fLCBwb3J0LT5udW1iZXIpOwogCiAJLyogdHJ5IHRvIGdpdmUgYSBnb29kIG51bWJlciBiYWNrIGJhc2VkIG9uIGlmIHdlIGhhdmUgYW55IGZyZWUgdXJicyBhdAogCSAqIHRoaXMgcG9pbnQgaW4gdGltZSAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0ZGF0YS0+bG9jaywgZmxhZ3MpOwogCWlmIChwb3J0ZGF0YS0+b3V0c3RhbmRpbmdfdXJicyA+IE5fT1VUX1VSQiAqIDIgLyAzKSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnRkYXRhLT5sb2NrLCBmbGFncyk7Ci0JCWRiZygiJXMgLSB3cml0ZSBsaW1pdCBoaXRcbiIsIF9fZnVuY19fKTsKKwkJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXMgLSB3cml0ZSBsaW1pdCBoaXRcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnRkYXRhLT5sb2NrLCBmbGFncyk7CkBAIC01NDksNyArNTU1LDcgQEAKIAogCXBvcnRkYXRhID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCi0JZGJnKCIlcyIsIF9fZnVuY19fKTsKKwlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyIsIF9fZnVuY19fKTsKIAogCS8qIFNldCBzb21lIHNhbmUgZGVmYXVsdHMgKi8KIAlwb3J0ZGF0YS0+cnRzX3N0YXRlID0gMTsKQEAgLTU2MSw4ICs1NjcsOCBAQAogCQlpZiAoIXVyYikKIAkJCWNvbnRpbnVlOwogCQlpZiAodXJiLT5kZXYgIT0gc2VyaWFsLT5kZXYpIHsKLQkJCWRiZygiJXM6IGRldiAlcCAhPSAlcCIsIF9fZnVuY19fLAotCQkJCXVyYi0+ZGV2LCBzZXJpYWwtPmRldik7CisJCQlkZXZfZGJnKCZwb3J0LT5kZXYsICIlczogZGV2ICVwICE9ICVwIiwKKwkJCQkgX19mdW5jX18sIHVyYi0+ZGV2LCBzZXJpYWwtPmRldik7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC02MDEsNyArNjA3LDcgQEAKIAlzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsID0gcG9ydC0+c2VyaWFsOwogCXN0cnVjdCBzaWVycmFfcG9ydF9wcml2YXRlICpwb3J0ZGF0YTsKIAotCWRiZygiJXMiLCBfX2Z1bmNfXyk7CisJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXMiLCBfX2Z1bmNfXyk7CiAJcG9ydGRhdGEgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CiAKIAlwb3J0ZGF0YS0+cnRzX3N0YXRlID0gMDsKQEAgLTYzMCw3ICs2MzYsNyBAQAogCWludCBpOwogCWludCBqOwogCi0JZGJnKCIlcyIsIF9fZnVuY19fKTsKKwlkZXZfZGJnKCZzZXJpYWwtPmRldi0+ZGV2LCAiJXMiLCBfX2Z1bmNfXyk7CiAKIAkvKiBTZXQgRGV2aWNlIG1vZGUgdG8gRDAgKi8KIAlzaWVycmFfc2V0X3Bvd2VyX3N0YXRlKHNlcmlhbC0+ZGV2LCAweDAwMDApOwpAQCAtNjQ0LDggKzY1MCw5IEBACiAJCXBvcnQgPSBzZXJpYWwtPnBvcnRbaV07CiAJCXBvcnRkYXRhID0ga3phbGxvYyhzaXplb2YoKnBvcnRkYXRhKSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghcG9ydGRhdGEpIHsKLQkJCWRiZygiJXM6IGttYWxsb2MgZm9yIHNpZXJyYV9wb3J0X3ByaXZhdGUgKCVkKSBmYWlsZWQhLiIsCi0JCQkJCV9fZnVuY19fLCBpKTsKKwkJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzOiBrbWFsbG9jIGZvciAiCisJCQkJInNpZXJyYV9wb3J0X3ByaXZhdGUgKCVkKSBmYWlsZWQhLiIsCisJCQkJX19mdW5jX18sIGkpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAkJc3Bpbl9sb2NrX2luaXQoJnBvcnRkYXRhLT5sb2NrKTsKQEAgLTY2NSw4ICs2NzIsOCBAQAogCQlmb3IgKGogPSAwOyBqIDwgTl9JTl9VUkI7ICsraikgewogCQkJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAkJCWlmICh1cmIgPT0gTlVMTCkgewotCQkJCWRiZygiJXM6IGFsbG9jIGZvciBpbiBwb3J0IGZhaWxlZC4iLAotCQkJCSAgICBfX2Z1bmNfXyk7CisJCQkJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXM6IGFsbG9jIGZvciBpbiAiCisJCQkJCSJwb3J0IGZhaWxlZC4iLCBfX2Z1bmNfXyk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCQkvKiBGaWxsIFVSQiB1c2luZyBzdXBwbGllZCBkYXRhLiAqLwpAQCAtNjg4LDcgKzY5NSw3IEBACiAJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydDsKIAlzdHJ1Y3Qgc2llcnJhX3BvcnRfcHJpdmF0ZSAqcG9ydGRhdGE7CiAKLQlkYmcoIiVzIiwgX19mdW5jX18pOworCWRldl9kYmcoJnNlcmlhbC0+ZGV2LT5kZXYsICIlcyIsIF9fZnVuY19fKTsKIAogCWZvciAoaSA9IDA7IGkgPCBzZXJpYWwtPm51bV9wb3J0czsgKytpKSB7CiAJCXBvcnQgPSBzZXJpYWwtPnBvcnRbaV07CkBAIC03NDMsNyArNzUwLDggQEAKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF9kcml2ZXJfcmVnaXN0ZXI7CiAKLQlpbmZvKERSSVZFUl9ERVNDICI6ICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAKIAlyZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMKaW5kZXggMTUzM2Q2ZS4uYTY1YmMyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jCkBAIC01ODksOCArNTg5LDggQEAKIAljYXNlIDEwMDAwMDA6CiAJCQlidWZbMF0gPSAweDBiOwlicmVhazsKIAlkZWZhdWx0OgotCQllcnIoInNwY3A4MjUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJhdWRyYXRlICIKLQkJICAgICJyZXF1ZXN0ZWQsIHVzaW5nIGRlZmF1bHQgb2YgOTYwMC4iKTsKKwkJZGV2X2VycigmcG9ydC0+ZGV2LCAic3BjcDgyNSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgIgorCQkJImJhdWRyYXRlIHJlcXVlc3RlZCwgdXNpbmcgZGVmYXVsdCBvZiA5NjAwLlxuIik7CiAJfQogCiAJLyogU2V0IERhdGEgTGVuZ3RoIDogMDA6NWJpdCwgMDE6NmJpdCwgMTA6N2JpdCwgMTE6OGJpdCAqLwpAQCAtNjI5LDcgKzYyOSw4IEBACiAJCQkgICAgU0VUX1VBUlRfRk9STUFUX1RZUEUsIFNFVF9VQVJUX0ZPUk1BVCwKIAkJCSAgICB1YXJ0ZGF0YSwgMCwgTlVMTCwgMCwgMTAwKTsKIAlpZiAoaSA8IDApCi0JCWVycigiU2V0IFVBUlQgZm9ybWF0ICUjeCBmYWlsZWQgKGVycm9yID0gJWQpIiwgdWFydGRhdGEsIGkpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJTZXQgVUFSVCBmb3JtYXQgJSN4IGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsCisJCQl1YXJ0ZGF0YSwgaSk7CiAJZGJnKCIweDIxOjB4NDA6MDowICAlZFxuIiwgaSk7CiAKIAlpZiAoY2ZsYWcgJiBDUlRTQ1RTKSB7CkBAIC0xMDU0LDcgKzEwNTUsOCBAQAogCXJldHZhbCA9IHVzYl9yZWdpc3Rlcigmc3BjcDh4NV9kcml2ZXIpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gZmFpbGVkX3VzYl9yZWdpc3RlcjsKLQlpbmZvKERSSVZFUl9ERVNDICIgIiBEUklWRVJfVkVSU0lPTik7CisJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRSAiOiAiIERSSVZFUl9WRVJTSU9OICI6IgorCSAgICAgICBEUklWRVJfREVTQyAiXG4iKTsKIAlyZXR1cm4gMDsKIGZhaWxlZF91c2JfcmVnaXN0ZXI6CiAJdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKCZzcGNwOHg1X2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3RpX3VzYl8zNDEwXzUwNTIuYwppbmRleCBjOTAyMzdkLi4zMWM0MmQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC90aV91c2JfMzQxMF81MDUyLmMKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiL3NlcmlhbC5oPgotI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CiAKICNpbmNsdWRlICJ0aV91c2JfMzQxMF81MDUyLmgiCiAKQEAgLTM4Myw3ICszODIsOCBAQAogCWlmIChyZXQpCiAJCWdvdG8gZmFpbGVkX3VzYjsKIAotCWluZm8oVElfRFJJVkVSX0RFU0MgIiAiIFRJX0RSSVZFUl9WRVJTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgVElfRFJJVkVSX1ZFUlNJT04gIjoiCisJICAgICAgIFRJX0RSSVZFUl9ERVNDICJcbiIpOwogCiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jCmluZGV4IGU3ZDQyNDYuLjhiZTNmMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYwpAQCAtMTEyMSw3ICsxMTIxLDggQEAKIAogCXJlc3VsdCA9IGJ1c19yZWdpc3RlcigmdXNiX3NlcmlhbF9idXNfdHlwZSk7CiAJaWYgKHJlc3VsdCkgewotCQllcnIoIiVzIC0gcmVnaXN0ZXJpbmcgYnVzIGRyaXZlciBmYWlsZWQiLCBfX2Z1bmNfXyk7CisJCXByaW50ayhLRVJOX0VSUiAidXNiLXNlcmlhbDogJXMgLSByZWdpc3RlcmluZyBidXMgZHJpdmVyICIKKwkJICAgICAgICJmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAkJZ290byBleGl0X2J1czsKIAl9CiAKQEAgLTExNDIsMjUgKzExNDMsMjggQEAKIAl0dHlfc2V0X29wZXJhdGlvbnModXNiX3NlcmlhbF90dHlfZHJpdmVyLCAmc2VyaWFsX29wcyk7CiAJcmVzdWx0ID0gdHR5X3JlZ2lzdGVyX2RyaXZlcih1c2Jfc2VyaWFsX3R0eV9kcml2ZXIpOwogCWlmIChyZXN1bHQpIHsKLQkJZXJyKCIlcyAtIHR0eV9yZWdpc3Rlcl9kcml2ZXIgZmFpbGVkIiwgX19mdW5jX18pOworCQlwcmludGsoS0VSTl9FUlIgInVzYi1zZXJpYWw6ICVzIC0gdHR5X3JlZ2lzdGVyX2RyaXZlciBmYWlsZWRcbiIsCisJCSAgICAgICBfX2Z1bmNfXyk7CiAJCWdvdG8gZXhpdF9yZWdfZHJpdmVyOwogCX0KIAogCS8qIHJlZ2lzdGVyIHRoZSBVU0IgZHJpdmVyICovCiAJcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZ1c2Jfc2VyaWFsX2RyaXZlcik7CiAJaWYgKHJlc3VsdCA8IDApIHsKLQkJZXJyKCIlcyAtIHVzYl9yZWdpc3RlciBmYWlsZWQiLCBfX2Z1bmNfXyk7CisJCXByaW50ayhLRVJOX0VSUiAidXNiLXNlcmlhbDogJXMgLSB1c2JfcmVnaXN0ZXIgZmFpbGVkXG4iLAorCQkgICAgICAgX19mdW5jX18pOwogCQlnb3RvIGV4aXRfdHR5OwogCX0KIAogCS8qIHJlZ2lzdGVyIHRoZSBnZW5lcmljIGRyaXZlciwgaWYgd2Ugc2hvdWxkICovCiAJcmVzdWx0ID0gdXNiX3NlcmlhbF9nZW5lcmljX3JlZ2lzdGVyKGRlYnVnKTsKIAlpZiAocmVzdWx0IDwgMCkgewotCQllcnIoIiVzIC0gcmVnaXN0ZXJpbmcgZ2VuZXJpYyBkcml2ZXIgZmFpbGVkIiwgX19mdW5jX18pOworCQlwcmludGsoS0VSTl9FUlIgInVzYi1zZXJpYWw6ICVzIC0gcmVnaXN0ZXJpbmcgZ2VuZXJpYyAiCisJCSAgICAgICAiZHJpdmVyIGZhaWxlZFxuIiwgX19mdW5jX18pOwogCQlnb3RvIGV4aXRfZ2VuZXJpYzsKIAl9CiAKLQlpbmZvKERSSVZFUl9ERVNDKTsKKwlwcmludGsoS0VSTl9JTkZPIEtCVUlMRF9NT0ROQU1FICI6ICIgRFJJVkVSX0RFU0MgIlxuIik7CiAKIAlyZXR1cm4gcmVzdWx0OwogCkBAIC0xMTc0LDcgKzExNzgsOCBAQAogCWJ1c191bnJlZ2lzdGVyKCZ1c2Jfc2VyaWFsX2J1c190eXBlKTsKIAogZXhpdF9idXM6Ci0JZXJyKCIlcyAtIHJldHVybmluZyB3aXRoIGVycm9yICVkIiwgX19mdW5jX18sIHJlc3VsdCk7CisJcHJpbnRrKEtFUk5fRVJSICJ1c2Itc2VyaWFsOiAlcyAtIHJldHVybmluZyB3aXRoIGVycm9yICVkXG4iLAorCSAgICAgICBfX2Z1bmNfXywgcmVzdWx0KTsKIAlwdXRfdHR5X2RyaXZlcih1c2Jfc2VyaWFsX3R0eV9kcml2ZXIpOwogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjMzLDExICsxMjM4LDExIEBACiAKIAlyZXR2YWwgPSB1c2Jfc2VyaWFsX2J1c19yZWdpc3Rlcihkcml2ZXIpOwogCWlmIChyZXR2YWwpIHsKLQkJZXJyKCJwcm9ibGVtICVkIHdoZW4gcmVnaXN0ZXJpbmcgZHJpdmVyICVzIiwKLQkJCQkJCXJldHZhbCwgZHJpdmVyLT5kZXNjcmlwdGlvbik7CisJCXByaW50ayhLRVJOX0VSUiAidXNiLXNlcmlhbDogcHJvYmxlbSAlZCB3aGVuIHJlZ2lzdGVyaW5nICIKKwkJICAgICAgICJkcml2ZXIgJXNcbiIsIHJldHZhbCwgZHJpdmVyLT5kZXNjcmlwdGlvbik7CiAJCWxpc3RfZGVsKCZkcml2ZXItPmRyaXZlcl9saXN0KTsKIAl9IGVsc2UKLQkJaW5mbygiVVNCIFNlcmlhbCBzdXBwb3J0IHJlZ2lzdGVyZWQgZm9yICVzIiwKKwkJcHJpbnRrKEtFUk5fSU5GTyAiVVNCIFNlcmlhbCBzdXBwb3J0IHJlZ2lzdGVyZWQgZm9yICVzXG4iLAogCQkJCQkJZHJpdmVyLT5kZXNjcmlwdGlvbik7CiAKIAlyZXR1cm4gcmV0dmFsOwpAQCAtMTI0OCw3ICsxMjUzLDggQEAKIHZvaWQgdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciAqZGV2aWNlKQogewogCS8qIG11c3QgYmUgY2FsbGVkIHdpdGggQktMIGhlbGQgKi8KLQlpbmZvKCJVU0IgU2VyaWFsIGRlcmVnaXN0ZXJpbmcgZHJpdmVyICVzIiwgZGV2aWNlLT5kZXNjcmlwdGlvbik7CisJcHJpbnRrKEtFUk5fSU5GTyAiVVNCIFNlcmlhbCBkZXJlZ2lzdGVyaW5nIGRyaXZlciAlc1xuIiwKKwkgICAgICAgZGV2aWNlLT5kZXNjcmlwdGlvbik7CiAJbGlzdF9kZWwoJmRldmljZS0+ZHJpdmVyX2xpc3QpOwogCXVzYl9zZXJpYWxfYnVzX2RlcmVnaXN0ZXIoZGV2aWNlKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC92aXNvci5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMKaW5kZXggYTZkMWM3NS4uNGZhY2NlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMKQEAgLTc2OCw3ICs3NjgsNyBAQAogCWRiZygiJXMiLCBfX2Z1bmNfXyk7CiAKIAlpZiAoc2VyaWFsLT5kZXYtPmFjdGNvbmZpZy0+ZGVzYy5iQ29uZmlndXJhdGlvblZhbHVlICE9IDEpIHsKLQkJZXJyKCJhY3RpdmUgY29uZmlnICMlZCAhPSAxID8/IiwKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgImFjdGl2ZSBjb25maWcgIyVkICE9IDEgPz9cbiIsCiAJCQlzZXJpYWwtPmRldi0+YWN0Y29uZmlnLT5kZXNjLmJDb25maWd1cmF0aW9uVmFsdWUpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CkBAIC05NzEsMTEgKzk3MSwxNCBAQAogCQkJCWJyZWFrOwogCQkJfQogCQl9Ci0JCWluZm8oCi0JCSAgIlVudGVzdGVkIFVTQiBkZXZpY2Ugc3BlY2lmaWVkIGF0IHRpbWUgb2YgbW9kdWxlIGluc2VydGlvbiIpOwotCQlpbmZvKCJXYXJuaW5nOiBUaGlzIGlzIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsiKTsKLQkJaW5mbygiVXNpbmcgYSBuZXdlciBrZXJuZWwgaXMgcHJlZmVycmVkIHRvIHRoaXMgbWV0aG9kIik7Ci0JCWluZm8oIkFkZGluZyBQYWxtIE9TIHByb3RvY29sIDQueCBzdXBwb3J0IGZvciB1bmtub3duIGRldmljZTogMHgleC8weCV4IiwKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogVW50ZXN0ZWQgVVNCIGRldmljZSBzcGVjaWZpZWQgYXQgdGltZSBvZiBtb2R1bGUgaW5zZXJ0aW9uXG4iKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogV2FybmluZzogVGhpcyBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrXG4iKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogVXNpbmcgYSBuZXdlciBrZXJuZWwgaXMgcHJlZmVycmVkIHRvIHRoaXMgbWV0aG9kXG4iKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBLQlVJTERfTU9ETkFNRQorCQkgICAgICAgIjogQWRkaW5nIFBhbG0gT1MgcHJvdG9jb2wgNC54IHN1cHBvcnQgZm9yIHVua25vd24gZGV2aWNlOiAweCV4LzB4JXhcbiIsCiAJCQl2ZW5kb3IsIHByb2R1Y3QpOwogCX0KIAlyZXR2YWwgPSB1c2Jfc2VyaWFsX3JlZ2lzdGVyKCZoYW5kc3ByaW5nX2RldmljZSk7CkBAIC05OTAsNyArOTkzLDcgQEAKIAlyZXR2YWwgPSB1c2JfcmVnaXN0ZXIoJnZpc29yX2RyaXZlcik7CiAJaWYgKHJldHZhbCkKIAkJZ290byBmYWlsZWRfdXNiX3JlZ2lzdGVyOwotCWluZm8oRFJJVkVSX0RFU0MpOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfREVTQyAiXG4iKTsKIAogCXJldHVybiAwOwogZmFpbGVkX3VzYl9yZWdpc3RlcjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYwppbmRleCAxMWM4Yjk3Li41MzM1ZDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jCkBAIC0zMDMsMTIgKzMwMywxNSBAQAogCiAJaWYgKHJlcXVlc3RfaWhleF9maXJtd2FyZSgmZmlybXdhcmVfZncsICJ3aGl0ZWhlYXQuZnciLAogCQkJCSAgJnNlcmlhbC0+ZGV2LT5kZXYpKSB7Ci0JCWVycigiJXMgLSByZXF1ZXN0IFwid2hpdGVoZWF0LmZ3XCIgZmFpbGVkIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkJIiVzIC0gcmVxdWVzdCBcIndoaXRlaGVhdC5md1wiIGZhaWxlZFxuIiwgX19mdW5jX18pOwogCQlnb3RvIG91dDsKIAl9CiAJaWYgKHJlcXVlc3RfaWhleF9maXJtd2FyZSgmbG9hZGVyX2Z3LCAid2hpdGVoZWF0X2xvYWRlci5mdyIsCiAJCQkgICAgICZzZXJpYWwtPmRldi0+ZGV2KSkgewotCQllcnIoIiVzIC0gcmVxdWVzdCBcIndoaXRlaGVhdF9sb2FkZXIuZndcIiBmYWlsZWQiLCBfX2Z1bmNfXyk7CisJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsCisJCQkiJXMgLSByZXF1ZXN0IFwid2hpdGVoZWF0X2xvYWRlci5md1wiIGZhaWxlZFxuIiwKKwkJCV9fZnVuY19fKTsKIAkJZ290byBvdXQ7CiAJfQogCXJldCA9IDA7CkBAIC0zMjAsOSArMzIzLDEwIEBACiAJCQkJCSAgICAgICh1bnNpZ25lZCBjaGFyICopcmVjb3JkLT5kYXRhLAogCQkJCQkgICAgICBiZTE2X3RvX2NwdShyZWNvcmQtPmxlbiksIDB4YTApOwogCQlpZiAocmVzcG9uc2UgPCAwKSB7Ci0JCQllcnIoIiVzIC0gZXp1c2Jfd3JpdGVtZW1vcnkgZmFpbGVkIGZvciBsb2FkZXIgKCVkICUwNFggJXAgJWQpIiwKLQkJCSAgICBfX2Z1bmNfXywgcmVzcG9uc2UsIGJlMzJfdG9fY3B1KHJlY29yZC0+YWRkciksCi0JCQkgICAgcmVjb3JkLT5kYXRhLCBiZTE2X3RvX2NwdShyZWNvcmQtPmxlbikpOworCQkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgIiVzIC0gZXp1c2Jfd3JpdGVtZW1vcnkgIgorCQkJCSJmYWlsZWQgZm9yIGxvYWRlciAoJWQgJTA0WCAlcCAlZClcbiIsCisJCQkJX19mdW5jX18sIHJlc3BvbnNlLCBiZTMyX3RvX2NwdShyZWNvcmQtPmFkZHIpLAorCQkJCXJlY29yZC0+ZGF0YSwgYmUxNl90b19jcHUocmVjb3JkLT5sZW4pKTsKIAkJCWJyZWFrOwogCQl9CiAJCXJlY29yZCA9IGloZXhfbmV4dF9iaW5yZWMocmVjb3JkKTsKQEAgLTMzOCw5ICszNDIsMTEgQEAKIAkJCQkJICAgICAgKHVuc2lnbmVkIGNoYXIgKilyZWNvcmQtPmRhdGEsCiAJCQkJCSAgICAgIGJlMTZfdG9fY3B1KHJlY29yZC0+bGVuKSwgMHhhMyk7CiAJCWlmIChyZXNwb25zZSA8IDApIHsKLQkJCWVycigiJXMgLSBlenVzYl93cml0ZW1lbW9yeSBmYWlsZWQgZm9yIGZpcnN0IGZpcm13YXJlIHN0ZXAgKCVkICUwNFggJXAgJWQpIiwgCi0JCQkgICAgX19mdW5jX18sIHJlc3BvbnNlLCBiZTMyX3RvX2NwdShyZWNvcmQtPmFkZHIpLAotCQkJICAgIHJlY29yZC0+ZGF0YSwgYmUxNl90b19jcHUocmVjb3JkLT5sZW4pKTsKKwkJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsICIlcyAtIGV6dXNiX3dyaXRlbWVtb3J5ICIKKwkJCQkiZmFpbGVkIGZvciBmaXJzdCBmaXJtd2FyZSBzdGVwICIKKwkJCQkiKCVkICUwNFggJXAgJWQpXG4iLCBfX2Z1bmNfXywgcmVzcG9uc2UsCisJCQkJYmUzMl90b19jcHUocmVjb3JkLT5hZGRyKSwgcmVjb3JkLT5kYXRhLAorCQkJCWJlMTZfdG9fY3B1KHJlY29yZC0+bGVuKSk7CiAJCQlicmVhazsKIAkJfQogCQkrK3JlY29yZDsKQEAgLTM1NCw5ICszNjAsMTEgQEAKIAkJCQkJICAgICAgKHVuc2lnbmVkIGNoYXIgKilyZWNvcmQtPmRhdGEsCiAJCQkJCSAgICAgIGJlMTZfdG9fY3B1KHJlY29yZC0+bGVuKSwgMHhhMCk7CiAJCWlmIChyZXNwb25zZSA8IDApIHsKLQkJCWVycigiJXMgLSBlenVzYl93cml0ZW1lbW9yeSBmYWlsZWQgZm9yIHNlY29uZCBmaXJtd2FyZSBzdGVwICglZCAlMDRYICVwICVkKSIsIAotCQkJICAgIF9fZnVuY19fLCByZXNwb25zZSwgYmUzMl90b19jcHUocmVjb3JkLT5hZGRyKSwKLQkJCSAgICByZWNvcmQtPmRhdGEsIGJlMTZfdG9fY3B1KHJlY29yZC0+bGVuKSk7CisJCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LCAiJXMgLSBlenVzYl93cml0ZW1lbW9yeSAiCisJCQkJImZhaWxlZCBmb3Igc2Vjb25kIGZpcm13YXJlIHN0ZXAgIgorCQkJCSIoJWQgJTA0WCAlcCAlZClcbiIsIF9fZnVuY19fLCByZXNwb25zZSwKKwkJCQliZTMyX3RvX2NwdShyZWNvcmQtPmFkZHIpLCByZWNvcmQtPmRhdGEsCisJCQkJYmUxNl90b19jcHUocmVjb3JkLT5sZW4pKTsKIAkJCWJyZWFrOwogCQl9CiAJCSsrcmVjb3JkOwpAQCAtNDIxLDEyICs0MjksMTIgQEAKIAlyZXQgPSB1c2JfYnVsa19tc2coc2VyaWFsLT5kZXYsIHBpcGUsIGNvbW1hbmQsIDIsCiAJCQkJCQkmYWxlbiwgQ09NTUFORF9USU1FT1VUX01TKTsKIAlpZiAocmV0KSB7Ci0JCWVycigiJXM6IENvdWxkbid0IHNlbmQgY29tbWFuZCBbJWRdIiwKLQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLCByZXQpOworCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LCAiJXM6IENvdWxkbid0IHNlbmQgY29tbWFuZCBbJWRdXG4iLAorCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgcmV0KTsKIAkJZ290byBub19maXJtd2FyZTsKIAl9IGVsc2UgaWYgKGFsZW4gIT0gMikgewotCQllcnIoIiVzOiBTZW5kIGNvbW1hbmQgaW5jb21wbGV0ZSBbJWRdIiwKLQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLCBhbGVuKTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgIiVzOiBTZW5kIGNvbW1hbmQgaW5jb21wbGV0ZSBbJWRdXG4iLAorCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgYWxlbik7CiAJCWdvdG8gbm9fZmlybXdhcmU7CiAJfQogCkBAIC00MzcsMzEgKzQ0NSwzMyBAQAogCXJldCA9IHVzYl9idWxrX21zZyhzZXJpYWwtPmRldiwgcGlwZSwgcmVzdWx0LAogCQkJc2l6ZW9mKCpod19pbmZvKSArIDEsICZhbGVuLCBDT01NQU5EX1RJTUVPVVRfTVMpOwogCWlmIChyZXQpIHsKLQkJZXJyKCIlczogQ291bGRuJ3QgZ2V0IHJlc3VsdHMgWyVkXSIsCi0JCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgcmV0KTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgIiVzOiBDb3VsZG4ndCBnZXQgcmVzdWx0cyBbJWRdXG4iLAorCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgcmV0KTsKIAkJZ290byBub19maXJtd2FyZTsKIAl9IGVsc2UgaWYgKGFsZW4gIT0gc2l6ZW9mKCpod19pbmZvKSArIDEpIHsKLQkJZXJyKCIlczogR2V0IHJlc3VsdHMgaW5jb21wbGV0ZSBbJWRdIiwKLQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLCBhbGVuKTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwgIiVzOiBHZXQgcmVzdWx0cyBpbmNvbXBsZXRlIFslZF1cbiIsCisJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLCBhbGVuKTsKIAkJZ290byBub19maXJtd2FyZTsKIAl9IGVsc2UgaWYgKHJlc3VsdFswXSAhPSBjb21tYW5kWzBdKSB7Ci0JCWVycigiJXM6IENvbW1hbmQgZmFpbGVkIFslZF0iLAotCQkJCXNlcmlhbC0+dHlwZS0+ZGVzY3JpcHRpb24sIHJlc3VsdFswXSk7CisJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsICIlczogQ29tbWFuZCBmYWlsZWQgWyVkXVxuIiwKKwkJCXNlcmlhbC0+dHlwZS0+ZGVzY3JpcHRpb24sIHJlc3VsdFswXSk7CiAJCWdvdG8gbm9fZmlybXdhcmU7CiAJfQogCiAJaHdfaW5mbyA9IChzdHJ1Y3Qgd2hpdGVoZWF0X2h3X2luZm8gKikmcmVzdWx0WzFdOwogCi0JaW5mbygiJXM6IERyaXZlciAlczogRmlybXdhcmUgdiVkLiUwMmQiLCBzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLAotCSAgICAgRFJJVkVSX1ZFUlNJT04sIGh3X2luZm8tPnN3X21ham9yX3JldiwgaHdfaW5mby0+c3dfbWlub3JfcmV2KTsKKwlkZXZfaW5mbygmc2VyaWFsLT5kZXYtPmRldiwgIiVzOiBEcml2ZXIgJXM6IEZpcm13YXJlIHYlZC4lMDJkXG4iLAorCQkgc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgRFJJVkVSX1ZFUlNJT04sCisJCSBod19pbmZvLT5zd19tYWpvcl9yZXYsIGh3X2luZm8tPnN3X21pbm9yX3Jldik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7IGkrKykgewogCQlwb3J0ID0gc2VyaWFsLT5wb3J0W2ldOwogCiAJCWluZm8gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgd2hpdGVoZWF0X3ByaXZhdGUpLCBHRlBfS0VSTkVMKTsKIAkJaWYgKGluZm8gPT0gTlVMTCkgewotCQkJZXJyKCIlczogT3V0IG9mIG1lbW9yeSBmb3IgcG9ydCBzdHJ1Y3R1cmVzXG4iLAotCQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKKwkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkiJXM6IE91dCBvZiBtZW1vcnkgZm9yIHBvcnQgc3RydWN0dXJlc1xuIiwKKwkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKIAkJCWdvdG8gbm9fcHJpdmF0ZTsKIAkJfQogCkBAIC00ODEsMTggKzQ5MSwyMCBAQAogCQlmb3IgKGogPSAwOyBqIDwgdXJiX3Bvb2xfc2l6ZTsgaisrKSB7CiAJCQl1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCQkJaWYgKCF1cmIpIHsKLQkJCQllcnIoIk5vIGZyZWUgdXJicyBhdmFpbGFibGUiKTsKKwkJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJObyBmcmVlIHVyYnMgYXZhaWxhYmxlXG4iKTsKIAkJCQlnb3RvIG5vX3J4X3VyYjsKIAkJCX0KIAkJCWJ1Zl9zaXplID0gcG9ydC0+cmVhZF91cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CiAJCQl1cmItPnRyYW5zZmVyX2J1ZmZlciA9IGttYWxsb2MoYnVmX3NpemUsIEdGUF9LRVJORUwpOwogCQkJaWYgKCF1cmItPnRyYW5zZmVyX2J1ZmZlcikgewotCQkJCWVycigiQ291bGRuJ3QgYWxsb2NhdGUgdXJiIGJ1ZmZlciIpOworCQkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkJIkNvdWxkbid0IGFsbG9jYXRlIHVyYiBidWZmZXJcbiIpOwogCQkJCWdvdG8gbm9fcnhfYnVmOwogCQkJfQogCQkJd3JhcCA9IGttYWxsb2Moc2l6ZW9mKCp3cmFwKSwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIXdyYXApIHsKLQkJCQllcnIoIkNvdWxkbid0IGFsbG9jYXRlIHVyYiB3cmFwcGVyIik7CisJCQkJZGV2X2VycigmcG9ydC0+ZGV2LAorCQkJCQkiQ291bGRuJ3QgYWxsb2NhdGUgdXJiIHdyYXBwZXJcbiIpOwogCQkJCWdvdG8gbm9fcnhfd3JhcDsKIAkJCX0KIAkJCXVzYl9maWxsX2J1bGtfdXJiKHVyYiwgc2VyaWFsLT5kZXYsCkBAIC01MDUsMTggKzUxNywyMCBAQAogCiAJCQl1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCQkJaWYgKCF1cmIpIHsKLQkJCQllcnIoIk5vIGZyZWUgdXJicyBhdmFpbGFibGUiKTsKKwkJCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJObyBmcmVlIHVyYnMgYXZhaWxhYmxlXG4iKTsKIAkJCQlnb3RvIG5vX3R4X3VyYjsKIAkJCX0KIAkJCWJ1Zl9zaXplID0gcG9ydC0+d3JpdGVfdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoOwogCQkJdXJiLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKGJ1Zl9zaXplLCBHRlBfS0VSTkVMKTsKIAkJCWlmICghdXJiLT50cmFuc2Zlcl9idWZmZXIpIHsKLQkJCQllcnIoIkNvdWxkbid0IGFsbG9jYXRlIHVyYiBidWZmZXIiKTsKKwkJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJCSJDb3VsZG4ndCBhbGxvY2F0ZSB1cmIgYnVmZmVyXG4iKTsKIAkJCQlnb3RvIG5vX3R4X2J1ZjsKIAkJCX0KIAkJCXdyYXAgPSBrbWFsbG9jKHNpemVvZigqd3JhcCksIEdGUF9LRVJORUwpOwogCQkJaWYgKCF3cmFwKSB7Ci0JCQkJZXJyKCJDb3VsZG4ndCBhbGxvY2F0ZSB1cmIgd3JhcHBlciIpOworCQkJCWRldl9lcnIoJnBvcnQtPmRldiwKKwkJCQkJIkNvdWxkbid0IGFsbG9jYXRlIHVyYiB3cmFwcGVyXG4iKTsKIAkJCQlnb3RvIG5vX3R4X3dyYXA7CiAJCQl9CiAJCQl1c2JfZmlsbF9idWxrX3VyYih1cmIsIHNlcmlhbC0+ZGV2LApAQCAtNTM0LDggKzU0OCw5IEBACiAJY29tbWFuZF9pbmZvID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHdoaXRlaGVhdF9jb21tYW5kX3ByaXZhdGUpLAogCQkJCQkJCQlHRlBfS0VSTkVMKTsKIAlpZiAoY29tbWFuZF9pbmZvID09IE5VTEwpIHsKLQkJZXJyKCIlczogT3V0IG9mIG1lbW9yeSBmb3IgcG9ydCBzdHJ1Y3R1cmVzXG4iLAotCQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKKwkJZGV2X2Vycigmc2VyaWFsLT5kZXYtPmRldiwKKwkJCSIlczogT3V0IG9mIG1lbW9yeSBmb3IgcG9ydCBzdHJ1Y3R1cmVzXG4iLAorCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbik7CiAJCWdvdG8gbm9fY29tbWFuZF9wcml2YXRlOwogCX0KIApAQCAtNTUyLDEyICs1NjcsMTUgQEAKIAogbm9fZmlybXdhcmU6CiAJLyogRmlybXdhcmUgbGlrZWx5IG5vdCBydW5uaW5nICovCi0JZXJyKCIlczogVW5hYmxlIHRvIHJldHJpZXZlIGZpcm13YXJlIHZlcnNpb24sIHRyeSByZXBsdWdnaW5nXG4iLAotCQkJCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKLQllcnIoIiVzOiBJZiB0aGUgZmlybXdhcmUgaXMgbm90IHJ1bm5pbmcgKHN0YXR1cyBsZWQgbm90IGJsaW5raW5nKVxuIiwKLQkJCQkJc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbik7Ci0JZXJyKCIlczogcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydEBjb25uZWN0dGVjaC5jb21cbiIsCi0JCQkJCXNlcmlhbC0+dHlwZS0+ZGVzY3JpcHRpb24pOworCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsCisJCSIlczogVW5hYmxlIHRvIHJldHJpZXZlIGZpcm13YXJlIHZlcnNpb24sIHRyeSByZXBsdWdnaW5nXG4iLAorCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKKwlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkiJXM6IElmIHRoZSBmaXJtd2FyZSBpcyBub3QgcnVubmluZyAoc3RhdHVzIGxlZCBub3QgYmxpbmtpbmcpXG4iLAorCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKKwlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkiJXM6IHBsZWFzZSBjb250YWN0IHN1cHBvcnRAY29ubmVjdHRlY2guY29tXG4iLAorCQlzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uKTsKIAlrZnJlZShyZXN1bHQpOwogCXJldHVybiAtRU5PREVWOwogCkBAIC02ODAsOCArNjk4LDkgQEAKIAkvKiBTdGFydCByZWFkaW5nIGZyb20gdGhlIGRldmljZSAqLwogCXJldHZhbCA9IHN0YXJ0X3BvcnRfcmVhZChwb3J0KTsKIAlpZiAocmV0dmFsKSB7Ci0JCWVycigiJXMgLSBmYWlsZWQgc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWQiLAotCQkJCV9fZnVuY19fLCByZXR2YWwpOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkiJXMgLSBmYWlsZWQgc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0dmFsKTsKIAkJZmlybV9jbG9zZShwb3J0KTsKIAkJc3RvcF9jb21tYW5kX3BvcnQocG9ydC0+c2VyaWFsKTsKIAkJZ290byBleGl0OwpAQCAtODA2LDggKzgyNSw5IEBACiAJCXVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IGJ5dGVzOwogCQlyZXN1bHQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCQlpZiAocmVzdWx0KSB7Ci0JCQllcnIoIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJlc3VsdCk7CisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIiVzIC0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgcmVzdWx0KTsKIAkJCXNlbnQgPSByZXN1bHQ7CiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaW5mby0+bG9jaywgZmxhZ3MpOwogCQkJbGlzdF9hZGQodG1wLCAmaW5mby0+dHhfdXJic19mcmVlKTsKQEAgLTEwNzUsNyArMTA5NSw3IEBACiAJd3JhcCA9IHVyYl90b193cmFwKHVyYiwgJmluZm8tPnJ4X3VyYnNfc3VibWl0dGVkKTsKIAlpZiAoIXdyYXApIHsKIAkJc3Bpbl91bmxvY2soJmluZm8tPmxvY2spOwotCQllcnIoIiVzIC0gTm90IG15IHVyYiEiLCBfX2Z1bmNfXyk7CisJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gTm90IG15IHVyYiFcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuOwogCX0KIAlsaXN0X2RlbCgmd3JhcC0+bGlzdCk7CkBAIC0xMTE5LDcgKzExMzksNyBAQAogCXdyYXAgPSB1cmJfdG9fd3JhcCh1cmIsICZpbmZvLT50eF91cmJzX3N1Ym1pdHRlZCk7CiAJaWYgKCF3cmFwKSB7CiAJCXNwaW5fdW5sb2NrKCZpbmZvLT5sb2NrKTsKLQkJZXJyKCIlcyAtIE5vdCBteSB1cmIhIiwgX19mdW5jX18pOworCQlkZXZfZXJyKCZwb3J0LT5kZXYsICIlcyAtIE5vdCBteSB1cmIhXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9CiAJbGlzdF9tb3ZlKCZ3cmFwLT5saXN0LCAmaW5mby0+dHhfdXJic19mcmVlKTsKQEAgLTEzODMsOCArMTQwMyw5IEBACiAJCWNvbW1hbmRfcG9ydC0+cmVhZF91cmItPmRldiA9IHNlcmlhbC0+ZGV2OwogCQlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYihjb21tYW5kX3BvcnQtPnJlYWRfdXJiLCBHRlBfS0VSTkVMKTsKIAkJaWYgKHJldHZhbCkgewotCQkJZXJyKCIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCi0JCQkJCQkJX19mdW5jX18sIHJldHZhbCk7CisJCQlkZXZfZXJyKCZzZXJpYWwtPmRldi0+ZGV2LAorCQkJCSIlcyAtIGZhaWxlZCBzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgcmV0dmFsKTsKIAkJCWdvdG8gZXhpdDsKIAkJfQogCX0KQEAgLTE1MjIsNyArMTU0Myw4IEBACiAJCXVyYi0+ZGV2ID0gcG9ydC0+c2VyaWFsLT5kZXY7CiAJCXJlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CiAJCWlmIChyZXN1bHQpIHsKLQkJCWVycigiJXMgLSBmYWlsZWQgcmVzdWJtaXR0aW5nIHJlYWQgdXJiLCBlcnJvciAlZCIsCisJCQlkZXZfZXJyKCZwb3J0LT5kZXYsCisJCQkJIiVzIC0gZmFpbGVkIHJlc3VibWl0dGluZyByZWFkIHVyYiwgZXJyb3IgJWRcbiIsCiAJCQkJX19mdW5jX18sIHJlc3VsdCk7CiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaW5mby0+bG9jaywgZmxhZ3MpOwogCQkJbGlzdF9hZGQodG1wLCAmaW5mby0+cnhfdXJic19mcmVlKTsKQEAgLTE1NTYsNyArMTU3OCw4IEBACiAJcmV0dmFsID0gdXNiX3JlZ2lzdGVyKCZ3aGl0ZWhlYXRfZHJpdmVyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF91c2JfcmVnaXN0ZXI7Ci0JaW5mbyhEUklWRVJfREVTQyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXByaW50ayhLRVJOX0lORk8gS0JVSUxEX01PRE5BTUUgIjogIiBEUklWRVJfVkVSU0lPTiAiOiIKKwkgICAgICAgRFJJVkVSX0RFU0MgIlxuIik7CiAJcmV0dXJuIDA7CiBmYWlsZWRfdXNiX3JlZ2lzdGVyOgogCXVzYl9zZXJpYWxfZGVyZWdpc3Rlcigmd2hpdGVoZWF0X2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL29uZXRvdWNoLmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL29uZXRvdWNoLmMKaW5kZXggOThiODllYS4uYzdiZjg5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9vbmV0b3VjaC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvb25ldG91Y2guYwpAQCAtNzgsOCArNzgsOCBAQAogcmVzdWJtaXQ6CiAJcmV0dmFsID0gdXNiX3N1Ym1pdF91cmIgKHVyYiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJldHZhbCkKLQkJZXJyICgiY2FuJ3QgcmVzdWJtaXQgaW50ciwgJXMtJXMvaW5wdXQwLCByZXR2YWwgJWQiLAotCQkJb25ldG91Y2gtPnVkZXYtPmJ1cy0+YnVzX25hbWUsCisJCWRldl9lcnIoJmRldi0+ZGV2LCAiY2FuJ3QgcmVzdWJtaXQgaW50ciwgJXMtJXMvaW5wdXQwLCAiCisJCQkicmV0dmFsICVkXG4iLCBvbmV0b3VjaC0+dWRldi0+YnVzLT5idXNfbmFtZSwKIAkJCW9uZXRvdWNoLT51ZGV2LT5kZXZwYXRoLCByZXR2YWwpOwogfQogCkBAIC05MCw3ICs5MCw3IEBACiAJb25ldG91Y2gtPmlzX29wZW4gPSAxOwogCW9uZXRvdWNoLT5pcnEtPmRldiA9IG9uZXRvdWNoLT51ZGV2OwogCWlmICh1c2Jfc3VibWl0X3VyYihvbmV0b3VjaC0+aXJxLCBHRlBfS0VSTkVMKSkgewotCQllcnIoInVzYl9zdWJtaXRfdXJiIGZhaWxlZCIpOworCQlkZXZfZXJyKCZkZXYtPmRldiwgInVzYl9zdWJtaXRfdXJiIGZhaWxlZFxuIik7CiAJCXJldHVybiAtRUlPOwogCX0KIApAQCAtMTE3LDcgKzExNyw4IEBACiAJCQlicmVhazsKIAkJY2FzZSBVU19SRVNVTUU6CiAJCQlpZiAodXNiX3N1Ym1pdF91cmIob25ldG91Y2gtPmlycSwgR0ZQX0tFUk5FTCkgIT0gMCkKLQkJCQllcnIoInVzYl9zdWJtaXRfdXJiIGZhaWxlZCIpOworCQkJCWRldl9lcnIoJm9uZXRvdWNoLT5pcnEtPmRldi0+ZGV2LAorCQkJCQkidXNiX3N1Ym1pdF91cmIgZmFpbGVkXG4iKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS90cmFuc3BvcnQuYwppbmRleCAzNTIzYTBiLi43OTEwOGQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMKQEAgLTY2Myw3ICs2NjMsNyBAQAogCX0KIAogCS8qIERpZCB3ZSB0cmFuc2ZlciBsZXNzIHRoYW4gdGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkPyAqLwotCWlmIChzcmItPnJlc3VsdCA9PSBTQU1fU1RBVF9HT09EICYmCisJaWYgKChzcmItPnJlc3VsdCA9PSBTQU1fU1RBVF9HT09EIHx8IHNyYi0+c2Vuc2VfYnVmZmVyWzJdID09IDApICYmCiAJCQlzY3NpX2J1ZmZsZW4oc3JiKSAtIHNjc2lfZ2V0X3Jlc2lkKHNyYikgPCBzcmItPnVuZGVyZmxvdykKIAkJc3JiLT5yZXN1bHQgPSAoRElEX0VSUk9SIDw8IDE2KSB8IChTVUdHRVNUX1JFVFJZIDw8IDI0KTsKIApkaWZmIC0tZ2l0IGEvZnMvS2NvbmZpZyBiL2ZzL0tjb25maWcKaW5kZXggOWU5ZDcwYy4uZDBhMTE3NCAxMDA2NDQKLS0tIGEvZnMvS2NvbmZpZworKysgYi9mcy9LY29uZmlnCkBAIC0xNjAsNyArMTYwLDcgQEAKIAkgIGZpbGVzeXN0ZW0gaW5pdGlhbGx5LgogCiAJICBUbyBjb21waWxlIHRoaXMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlCi0JICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZXh0NGRldi4KKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBleHQ0LgogCiAJICBJZiB1bnN1cmUsIHNheSBOLgogCmRpZmYgLS1naXQgYS9mcy9NYWtlZmlsZSBiL2ZzL01ha2VmaWxlCmluZGV4IGQwYzY5ZjUuLjIxNjhjOTAgMTAwNjQ0Ci0tLSBhL2ZzL01ha2VmaWxlCisrKyBiL2ZzL01ha2VmaWxlCkBAIC03MSw3ICs3MSw3IEBACiAjIERvIG5vdCBhZGQgYW55IGZpbGVzeXN0ZW1zIGJlZm9yZSB0aGlzIGxpbmUKIG9iai0kKENPTkZJR19SRUlTRVJGU19GUykJKz0gcmVpc2VyZnMvCiBvYmotJChDT05GSUdfRVhUM19GUykJCSs9IGV4dDMvICMgQmVmb3JlIGV4dDIgc28gcm9vdCBmcyBjYW4gYmUgZXh0Mwotb2JqLSQoQ09ORklHX0VYVDRfRlMpCQkrPSBleHQ0LyAjIEJlZm9yZSBleHQyIHNvIHJvb3QgZnMgY2FuIGJlIGV4dDRkZXYKK29iai0kKENPTkZJR19FWFQ0X0ZTKQkJKz0gZXh0NC8gIyBCZWZvcmUgZXh0MiBzbyByb290IGZzIGNhbiBiZSBleHQ0CiBvYmotJChDT05GSUdfSkJEKQkJKz0gamJkLwogb2JqLSQoQ09ORklHX0pCRDIpCQkrPSBqYmQyLwogb2JqLSQoQ09ORklHX0VYVDJfRlMpCQkrPSBleHQyLwpkaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZi5jIGIvZnMvYmluZm10X2VsZi5jCmluZGV4IGM3NmFmYTIuLjgzZDcyMDAgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbGYuYworKysgYi9mcy9iaW5mbXRfZWxmLmMKQEAgLTEzMzMsMjAgKzEzMzMsMTUgQEAKIAlwcnN0YXR1cy0+cHJfcGdycCA9IHRhc2tfcGdycF92bnIocCk7CiAJcHJzdGF0dXMtPnByX3NpZCA9IHRhc2tfc2Vzc2lvbl92bnIocCk7CiAJaWYgKHRocmVhZF9ncm91cF9sZWFkZXIocCkpIHsKKwkJc3RydWN0IHRhc2tfY3B1dGltZSBjcHV0aW1lOworCiAJCS8qCi0JCSAqIFRoaXMgaXMgdGhlIHJlY29yZCBmb3IgdGhlIGdyb3VwIGxlYWRlci4gIEFkZCBpbiB0aGUKLQkJICogY3VtdWxhdGl2ZSB0aW1lcyBvZiBwcmV2aW91cyBkZWFkIHRocmVhZHMuICBUaGlzIHRvdGFsCi0JCSAqIHdvbid0IGluY2x1ZGUgdGhlIHRpbWUgb2YgZWFjaCBsaXZlIHRocmVhZCB3aG9zZSBzdGF0ZQotCQkgKiBpcyBpbmNsdWRlZCBpbiB0aGUgY29yZSBkdW1wLiAgVGhlIGZpbmFsIHRvdGFsIHJlcG9ydGVkCi0JCSAqIHRvIG91ciBwYXJlbnQgcHJvY2VzcyB3aGVuIGl0IGNhbGxzIHdhaXQ0IHdpbGwgaW5jbHVkZQotCQkgKiB0aG9zZSBzdW1zIGFzIHdlbGwgYXMgdGhlIGxpdHRsZSBiaXQgbW9yZSB0aW1lIGl0IHRha2VzCi0JCSAqIHRoaXMgYW5kIGVhY2ggb3RoZXIgdGhyZWFkIHRvIGZpbmlzaCBkeWluZyBhZnRlciB0aGUKLQkJICogY29yZSBkdW1wIHN5bmNocm9uaXphdGlvbiBwaGFzZS4KKwkJICogVGhpcyBpcyB0aGUgcmVjb3JkIGZvciB0aGUgZ3JvdXAgbGVhZGVyLiAgSXQgc2hvd3MgdGhlCisJCSAqIGdyb3VwLXdpZGUgdG90YWwsIG5vdCBpdHMgaW5kaXZpZHVhbCB0aHJlYWQgdG90YWwuCiAJCSAqLwotCQljcHV0aW1lX3RvX3RpbWV2YWwoY3B1dGltZV9hZGQocC0+dXRpbWUsIHAtPnNpZ25hbC0+dXRpbWUpLAotCQkJCSAgICZwcnN0YXR1cy0+cHJfdXRpbWUpOwotCQljcHV0aW1lX3RvX3RpbWV2YWwoY3B1dGltZV9hZGQocC0+c3RpbWUsIHAtPnNpZ25hbC0+c3RpbWUpLAotCQkJCSAgICZwcnN0YXR1cy0+cHJfc3RpbWUpOworCQl0aHJlYWRfZ3JvdXBfY3B1dGltZShwLCAmY3B1dGltZSk7CisJCWNwdXRpbWVfdG9fdGltZXZhbChjcHV0aW1lLnV0aW1lLCAmcHJzdGF0dXMtPnByX3V0aW1lKTsKKwkJY3B1dGltZV90b190aW1ldmFsKGNwdXRpbWUuc3RpbWUsICZwcnN0YXR1cy0+cHJfc3RpbWUpOwogCX0gZWxzZSB7CiAJCWNwdXRpbWVfdG9fdGltZXZhbChwLT51dGltZSwgJnByc3RhdHVzLT5wcl91dGltZSk7CiAJCWNwdXRpbWVfdG9fdGltZXZhbChwLT5zdGltZSwgJnByc3RhdHVzLT5wcl9zdGltZSk7CmRpZmYgLS1naXQgYS9mcy9ibG9ja19kZXYuYyBiL2ZzL2Jsb2NrX2Rldi5jCmluZGV4IGQ4NGYwNDY5Li4yMTg0MDhlIDEwMDY0NAotLS0gYS9mcy9ibG9ja19kZXYuYworKysgYi9mcy9ibG9ja19kZXYuYwpAQCAtMTI2Miw3ICsxMjYyLDcgQEAKIAogLyoqCiAgKiBsb29rdXBfYmRldiAgLSBsb29rdXAgYSBzdHJ1Y3QgYmxvY2tfZGV2aWNlIGJ5IG5hbWUKLSAqIEBwYXRobmFtZToJc3BlY2lhbCBmaWxlIHJlcHJlc2VudGluZyB0aGUgYmxvY2sgZGV2aWNlCisgKiBAcGF0aDoJc3BlY2lhbCBmaWxlIHJlcHJlc2VudGluZyB0aGUgYmxvY2sgZGV2aWNlCiAgKgogICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBibG9ja2RldmljZSBhdCBAcGF0aG5hbWUgaW4gdGhlIGN1cnJlbnQKICAqIG5hbWVzcGFjZSBpZiBwb3NzaWJsZSBhbmQgcmV0dXJuIGl0LiAgUmV0dXJuIEVSUl9QVFIoZXJyb3IpCmRpZmYgLS1naXQgYS9mcy9leHQ0L2JhbGxvYy5jIGIvZnMvZXh0NC9iYWxsb2MuYwppbmRleCBiZDJlY2UyLi5iOTgyMWJlIDEwMDY0NAotLS0gYS9mcy9leHQ0L2JhbGxvYy5jCisrKyBiL2ZzL2V4dDQvYmFsbG9jLmMKQEAgLTU2OCw4ICs1NjgsMTYgQEAKIAogCS8qIHRoaXMgaXNuJ3QgdGhlIHJpZ2h0IHBsYWNlIHRvIGRlY2lkZSB3aGV0aGVyIGJsb2NrIGlzIG1ldGFkYXRhCiAJICogaW5vZGUuYy9leHRlbnRzLmMga25vd3MgYmV0dGVyLCBidXQgZm9yIHNhZmV0eSAuLi4gKi8KLQlpZiAoU19JU0RJUihpbm9kZS0+aV9tb2RlKSB8fCBTX0lTTE5LKGlub2RlLT5pX21vZGUpIHx8Ci0JCQlleHQ0X3Nob3VsZF9qb3VybmFsX2RhdGEoaW5vZGUpKQorCWlmIChTX0lTRElSKGlub2RlLT5pX21vZGUpIHx8IFNfSVNMTksoaW5vZGUtPmlfbW9kZSkpCisJCW1ldGFkYXRhID0gMTsKKworCS8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHJldXNlCisJICogYmxvY2sgcmVsZWFzZWQgdW50aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQuCisJICogd3JpdGViYWNrIG1vZGUgaGF2ZSB3ZWFrIGRhdGEgY29uc2lzdGVuY3kgc28KKwkgKiBkb24ndCBmb3JjZSBkYXRhIGFzIG1ldGFkYXRhIHdoZW4gZnJlZWluZyBibG9jaworCSAqIGZvciB3cml0ZWJhY2sgbW9kZS4KKwkgKi8KKwlpZiAobWV0YWRhdGEgPT0gMCAmJiAhZXh0NF9zaG91bGRfd3JpdGViYWNrX2RhdGEoaW5vZGUpKQogCQltZXRhZGF0YSA9IDE7CiAKIAlzYiA9IGlub2RlLT5pX3NiOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA2NjkwYTQxLi40ODgwY2MzIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dDQuaAorKysgYi9mcy9leHQ0L2V4dDQuaApAQCAtNTExLDcgKzUxMSw2IEBACiAvKgogICogTW91bnQgZmxhZ3MKICAqLwotI2RlZmluZSBFWFQ0X01PVU5UX0NIRUNLCQkweDAwMDAxCS8qIERvIG1vdW50LXRpbWUgY2hlY2tzICovCiAjZGVmaW5lIEVYVDRfTU9VTlRfT0xEQUxMT0MJCTB4MDAwMDIgIC8qIERvbid0IHVzZSB0aGUgbmV3IE9ybG92IGFsbG9jYXRvciAqLwogI2RlZmluZSBFWFQ0X01PVU5UX0dSUElECQkweDAwMDA0CS8qIENyZWF0ZSBmaWxlcyB3aXRoIGRpcmVjdG9yeSdzIGdyb3VwICovCiAjZGVmaW5lIEVYVDRfTU9VTlRfREVCVUcJCTB4MDAwMDgJLyogU29tZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgKi8KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NF9zYi5oIGIvZnMvZXh0NC9leHQ0X3NiLmgKaW5kZXggNmEwYjQwZC4uNDQ1ZmRlNiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHQ0X3NiLmgKKysrIGIvZnMvZXh0NC9leHQ0X3NiLmgKQEAgLTk5LDkgKzk5LDYgQEAKIAlzdHJ1Y3QgaW5vZGUgKnNfYnVkZHlfY2FjaGU7CiAJbG9uZyBzX2Jsb2Nrc19yZXNlcnZlZDsKIAlzcGlubG9ja190IHNfcmVzZXJ2ZV9sb2NrOwotCXN0cnVjdCBsaXN0X2hlYWQgc19hY3RpdmVfdHJhbnNhY3Rpb247Ci0Jc3RydWN0IGxpc3RfaGVhZCBzX2Nsb3NlZF90cmFuc2FjdGlvbjsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHNfY29tbWl0dGVkX3RyYW5zYWN0aW9uOwogCXNwaW5sb2NrX3Qgc19tZF9sb2NrOwogCXRpZF90IHNfbGFzdF90cmFuc2FjdGlvbjsKIAl1bnNpZ25lZCBzaG9ydCAqc19tYl9vZmZzZXRzLCAqc19tYl9tYXhzOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IDliNGVjOWQuLjhkYmY2OTUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYworKysgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTE2NDgsNiArMTY0OCw3IEBACiAJaW50IHJldCA9IDAsIGVyciwgbnJfcGFnZXMsIGk7CiAJdW5zaWduZWQgbG9uZyBpbmRleCwgZW5kOwogCXN0cnVjdCBwYWdldmVjIHB2ZWM7CisJbG9uZyBwYWdlc19za2lwcGVkOwogCiAJQlVHX09OKG1wZC0+bmV4dF9wYWdlIDw9IG1wZC0+Zmlyc3RfcGFnZSk7CiAJcGFnZXZlY19pbml0KCZwdmVjLCAwKTsKQEAgLTE2NTUsMjAgKzE2NTYsMzAgQEAKIAllbmQgPSBtcGQtPm5leHRfcGFnZSAtIDE7CiAKIAl3aGlsZSAoaW5kZXggPD0gZW5kKSB7Ci0JCS8qIFhYWDogb3B0aW1pemUgdGFpbCAqLwotCQlucl9wYWdlcyA9IHBhZ2V2ZWNfbG9va3VwKCZwdmVjLCBtYXBwaW5nLCBpbmRleCwgUEFHRVZFQ19TSVpFKTsKKwkJLyoKKwkJICogV2UgY2FuIHVzZSBQQUdFQ0FDSEVfVEFHX0RJUlRZIGxvb2t1cCBoZXJlIGJlY2F1c2UKKwkJICogZXZlbiB0aG91Z2ggd2UgaGF2ZSBjbGVhcmVkIHRoZSBkaXJ0eSBmbGFnIG9uIHRoZSBwYWdlCisJCSAqIFdlIHN0aWxsIGtlZXAgdGhlIHBhZ2UgaW4gdGhlIHJhZGl4IHRyZWUgd2l0aCB0YWcKKwkJICogUEFHRUNBQ0hFX1RBR19ESVJUWS4gU2VlIGNsZWFyX3BhZ2VfZGlydHlfZm9yX2lvLgorCQkgKiBUaGUgUEFHRUNBQ0hFX1RBR19ESVJUWSBpcyBjbGVhcmVkIGluIHNldF9wYWdlX3dyaXRlYmFjaworCQkgKiB3aGljaCBpcyBjYWxsZWQgdmlhIHRoZSBiZWxvdyB3cml0ZXBhZ2UgY2FsbGJhY2suCisJCSAqLworCQlucl9wYWdlcyA9IHBhZ2V2ZWNfbG9va3VwX3RhZygmcHZlYywgbWFwcGluZywgJmluZGV4LAorCQkJCQlQQUdFQ0FDSEVfVEFHX0RJUlRZLAorCQkJCQltaW4oZW5kIC0gaW5kZXgsCisJCQkJCShwZ29mZl90KVBBR0VWRUNfU0laRS0xKSArIDEpOwogCQlpZiAobnJfcGFnZXMgPT0gMCkKIAkJCWJyZWFrOwogCQlmb3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykgewogCQkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBwdmVjLnBhZ2VzW2ldOwogCi0JCQlpbmRleCA9IHBhZ2UtPmluZGV4OwotCQkJaWYgKGluZGV4ID4gZW5kKQotCQkJCWJyZWFrOwotCQkJaW5kZXgrKzsKLQorCQkJcGFnZXNfc2tpcHBlZCA9IG1wZC0+d2JjLT5wYWdlc19za2lwcGVkOwogCQkJZXJyID0gbWFwcGluZy0+YV9vcHMtPndyaXRlcGFnZShwYWdlLCBtcGQtPndiYyk7Ci0JCQlpZiAoIWVycikKKwkJCWlmICghZXJyICYmIChwYWdlc19za2lwcGVkID09IG1wZC0+d2JjLT5wYWdlc19za2lwcGVkKSkKKwkJCQkvKgorCQkJCSAqIGhhdmUgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4gdGhlIHBhZ2UKKwkJCQkgKiB3aXRob3V0IHNraXBwaW5nIHRoZSBzYW1lCisJCQkJICovCiAJCQkJbXBkLT5wYWdlc193cml0dGVuKys7CiAJCQkvKgogCQkJICogSW4gZXJyb3IgY2FzZSwgd2UgaGF2ZSB0byBjb250aW51ZSBiZWNhdXNlCkBAIC0yMTA0LDcgKzIxMTUsNiBAQAogCQkJICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLAogCQkJICAgICAgIHN0cnVjdCBtcGFnZV9kYV9kYXRhICptcGQpCiB7Ci0JbG9uZyB0b193cml0ZTsKIAlpbnQgcmV0OwogCiAJaWYgKCFtcGQtPmdldF9ibG9jaykKQEAgLTIxMTksMTkgKzIxMjksMTggQEAKIAltcGQtPnBhZ2VzX3dyaXR0ZW4gPSAwOwogCW1wZC0+cmV0dmFsID0gMDsKIAotCXRvX3dyaXRlID0gd2JjLT5ucl90b193cml0ZTsKLQogCXJldCA9IHdyaXRlX2NhY2hlX3BhZ2VzKG1hcHBpbmcsIHdiYywgX19tcGFnZV9kYV93cml0ZXBhZ2UsIG1wZCk7Ci0KIAkvKgogCSAqIEhhbmRsZSBsYXN0IGV4dGVudCBvZiBwYWdlcwogCSAqLwogCWlmICghbXBkLT5pb19kb25lICYmIG1wZC0+bmV4dF9wYWdlICE9IG1wZC0+Zmlyc3RfcGFnZSkgewogCQlpZiAobXBhZ2VfZGFfbWFwX2Jsb2NrcyhtcGQpID09IDApCiAJCQltcGFnZV9kYV9zdWJtaXRfaW8obXBkKTsKLQl9CiAKLQl3YmMtPm5yX3RvX3dyaXRlID0gdG9fd3JpdGUgLSBtcGQtPnBhZ2VzX3dyaXR0ZW47CisJCW1wZC0+aW9fZG9uZSA9IDE7CisJCXJldCA9IE1QQUdFX0RBX0VYVEVOVF9UQUlMOworCX0KKwl3YmMtPm5yX3RvX3dyaXRlIC09IG1wZC0+cGFnZXNfd3JpdHRlbjsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMzYwLDEyICsyMzY5LDE0IEBACiBzdGF0aWMgaW50IGV4dDRfZGFfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJCSAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQogeworCXBnb2ZmX3QJaW5kZXg7CisJaW50IHJhbmdlX3dob2xlID0gMDsKIAloYW5kbGVfdCAqaGFuZGxlID0gTlVMTDsKLQlsb2ZmX3QgcmFuZ2Vfc3RhcnQgPSAwOwogCXN0cnVjdCBtcGFnZV9kYV9kYXRhIG1wZDsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gbWFwcGluZy0+aG9zdDsKKwlpbnQgbm9fbnJ3cml0ZV9pbmRleF91cGRhdGU7CisJbG9uZyBwYWdlc193cml0dGVuID0gMCwgcGFnZXNfc2tpcHBlZDsKIAlpbnQgbmVlZGVkX2Jsb2NrcywgcmV0ID0gMCwgbnJfdG9fd3JpdGVidW1wID0gMDsKLQlsb25nIHRvX3dyaXRlLCBwYWdlc19za2lwcGVkID0gMDsKIAlzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKG1hcHBpbmctPmhvc3QtPmlfc2IpOwogCiAJLyoKQEAgLTIzODUsMjMgKzIzOTYsMjYgQEAKIAkJbnJfdG9fd3JpdGVidW1wID0gc2JpLT5zX21iX3N0cmVhbV9yZXF1ZXN0IC0gd2JjLT5ucl90b193cml0ZTsKIAkJd2JjLT5ucl90b193cml0ZSA9IHNiaS0+c19tYl9zdHJlYW1fcmVxdWVzdDsKIAl9CisJaWYgKHdiYy0+cmFuZ2Vfc3RhcnQgPT0gMCAmJiB3YmMtPnJhbmdlX2VuZCA9PSBMTE9OR19NQVgpCisJCXJhbmdlX3dob2xlID0gMTsKIAotCWlmICghd2JjLT5yYW5nZV9jeWNsaWMpCi0JCS8qCi0JCSAqIElmIHJhbmdlX2N5Y2xpYyBpcyBub3Qgc2V0IGZvcmNlIHJhbmdlX2NvbnQKLQkJICogYW5kIHNhdmUgdGhlIG9sZCB3cml0ZWJhY2tfaW5kZXgKLQkJICovCi0JCXdiYy0+cmFuZ2VfY29udCA9IDE7Ci0KLQlyYW5nZV9zdGFydCA9ICB3YmMtPnJhbmdlX3N0YXJ0OwotCXBhZ2VzX3NraXBwZWQgPSB3YmMtPnBhZ2VzX3NraXBwZWQ7CisJaWYgKHdiYy0+cmFuZ2VfY3ljbGljKQorCQlpbmRleCA9IG1hcHBpbmctPndyaXRlYmFja19pbmRleDsKKwllbHNlCisJCWluZGV4ID0gd2JjLT5yYW5nZV9zdGFydCA+PiBQQUdFX0NBQ0hFX1NISUZUOwogCiAJbXBkLndiYyA9IHdiYzsKIAltcGQuaW5vZGUgPSBtYXBwaW5nLT5ob3N0OwogCi1yZXN0YXJ0X2xvb3A6Ci0JdG9fd3JpdGUgPSB3YmMtPm5yX3RvX3dyaXRlOwotCXdoaWxlICghcmV0ICYmIHRvX3dyaXRlID4gMCkgeworCS8qCisJICogd2UgZG9uJ3Qgd2FudCB3cml0ZV9jYWNoZV9wYWdlcyB0byB1cGRhdGUKKwkgKiBucl90b193cml0ZSBhbmQgd3JpdGViYWNrX2luZGV4CisJICovCisJbm9fbnJ3cml0ZV9pbmRleF91cGRhdGUgPSB3YmMtPm5vX25yd3JpdGVfaW5kZXhfdXBkYXRlOworCXdiYy0+bm9fbnJ3cml0ZV9pbmRleF91cGRhdGUgPSAxOworCXBhZ2VzX3NraXBwZWQgPSB3YmMtPnBhZ2VzX3NraXBwZWQ7CisKKwl3aGlsZSAoIXJldCAmJiB3YmMtPm5yX3RvX3dyaXRlID4gMCkgewogCiAJCS8qCiAJCSAqIHdlICBpbnNlcnQgb25lIGV4dGVudCBhdCBhIHRpbWUuIFNvIHdlIG5lZWQKQEAgLTI0MjIsNDggKzI0MzYsNTMgQEAKIAkJCWR1bXBfc3RhY2soKTsKIAkJCWdvdG8gb3V0X3dyaXRlcGFnZXM7CiAJCX0KLQkJdG9fd3JpdGUgLT0gd2JjLT5ucl90b193cml0ZTsKLQogCQltcGQuZ2V0X2Jsb2NrID0gZXh0NF9kYV9nZXRfYmxvY2tfd3JpdGU7CiAJCXJldCA9IG1wYWdlX2RhX3dyaXRlcGFnZXMobWFwcGluZywgd2JjLCAmbXBkKTsKIAogCQlleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpOwogCi0JCWlmIChtcGQucmV0dmFsID09IC1FTk9TUEMpCisJCWlmIChtcGQucmV0dmFsID09IC1FTk9TUEMpIHsKKwkJCS8qIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb24gd2hpY2ggd291bGQKKwkJCSAqIGZyZWUgYmxvY2tzIHJlbGVhc2VkIGluIHRoZSB0cmFuc2FjdGlvbgorCQkJICogYW5kIHRyeSBhZ2FpbgorCQkJICovCiAJCQlqYmQyX2pvdXJuYWxfZm9yY2VfY29tbWl0X25lc3RlZChzYmktPnNfam91cm5hbCk7Ci0KLQkJLyogcmVzZXQgdGhlIHJldHJ5IGNvdW50ICovCi0JCWlmIChyZXQgPT0gTVBBR0VfREFfRVhURU5UX1RBSUwpIHsKKwkJCXdiYy0+cGFnZXNfc2tpcHBlZCA9IHBhZ2VzX3NraXBwZWQ7CisJCQlyZXQgPSAwOworCQl9IGVsc2UgaWYgKHJldCA9PSBNUEFHRV9EQV9FWFRFTlRfVEFJTCkgewogCQkJLyoKIAkJCSAqIGdvdCBvbmUgZXh0ZW50IG5vdyB0cnkgd2l0aAogCQkJICogcmVzdCBvZiB0aGUgcGFnZXMKIAkJCSAqLwotCQkJdG9fd3JpdGUgKz0gd2JjLT5ucl90b193cml0ZTsKKwkJCXBhZ2VzX3dyaXR0ZW4gKz0gbXBkLnBhZ2VzX3dyaXR0ZW47CisJCQl3YmMtPnBhZ2VzX3NraXBwZWQgPSBwYWdlc19za2lwcGVkOwogCQkJcmV0ID0gMDsKLQkJfSBlbHNlIGlmICh3YmMtPm5yX3RvX3dyaXRlKSB7CisJCX0gZWxzZSBpZiAod2JjLT5ucl90b193cml0ZSkKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBubyBtb3JlIHdyaXRlb3V0IG5lZWRlZAogCQkJICogb3Igd2UgcmVxdWVzdGVkIGZvciBhIG5vYmxvY2tpbmcgd3JpdGVvdXQKIAkJCSAqIGFuZCB3ZSBmb3VuZCB0aGUgZGV2aWNlIGNvbmdlc3RlZAogCQkJICovCi0JCQl0b193cml0ZSArPSB3YmMtPm5yX3RvX3dyaXRlOwogCQkJYnJlYWs7Ci0JCX0KLQkJd2JjLT5ucl90b193cml0ZSA9IHRvX3dyaXRlOwogCX0KKwlpZiAocGFnZXNfc2tpcHBlZCAhPSB3YmMtPnBhZ2VzX3NraXBwZWQpCisJCXByaW50ayhLRVJOX0VNRVJHICJUaGlzIHNob3VsZCBub3QgaGFwcGVuIGxlYXZpbmcgJXMgIgorCQkJCSJ3aXRoIG5yX3RvX3dyaXRlID0gJWxkIHJldCA9ICVkXG4iLAorCQkJCV9fZnVuY19fLCB3YmMtPm5yX3RvX3dyaXRlLCByZXQpOwogCi0JaWYgKHdiYy0+cmFuZ2VfY29udCAmJiAocGFnZXNfc2tpcHBlZCAhPSB3YmMtPnBhZ2VzX3NraXBwZWQpKSB7Ci0JCS8qIFdlIHNraXBwZWQgcGFnZXMgaW4gdGhpcyBsb29wICovCi0JCXdiYy0+cmFuZ2Vfc3RhcnQgPSByYW5nZV9zdGFydDsKLQkJd2JjLT5ucl90b193cml0ZSA9IHRvX3dyaXRlICsKLQkJCQl3YmMtPnBhZ2VzX3NraXBwZWQgLSBwYWdlc19za2lwcGVkOwotCQl3YmMtPnBhZ2VzX3NraXBwZWQgPSBwYWdlc19za2lwcGVkOwotCQlnb3RvIHJlc3RhcnRfbG9vcDsKLQl9CisJLyogVXBkYXRlIGluZGV4ICovCisJaW5kZXggKz0gcGFnZXNfd3JpdHRlbjsKKwlpZiAod2JjLT5yYW5nZV9jeWNsaWMgfHwgKHJhbmdlX3dob2xlICYmIHdiYy0+bnJfdG9fd3JpdGUgPiAwKSkKKwkJLyoKKwkJICogc2V0IHRoZSB3cml0ZWJhY2tfaW5kZXggc28gdGhhdCByYW5nZV9jeWNsaWMKKwkJICogbW9kZSB3aWxsIHdyaXRlIGl0IGJhY2sgbGF0ZXIKKwkJICovCisJCW1hcHBpbmctPndyaXRlYmFja19pbmRleCA9IGluZGV4OwogCiBvdXRfd3JpdGVwYWdlczoKLQl3YmMtPm5yX3RvX3dyaXRlID0gdG9fd3JpdGUgLSBucl90b193cml0ZWJ1bXA7Ci0Jd2JjLT5yYW5nZV9zdGFydCA9IHJhbmdlX3N0YXJ0OworCWlmICghbm9fbnJ3cml0ZV9pbmRleF91cGRhdGUpCisJCXdiYy0+bm9fbnJ3cml0ZV9pbmRleF91cGRhdGUgPSAwOworCXdiYy0+bnJfdG9fd3JpdGUgLT0gbnJfdG9fd3JpdGVidW1wOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQxNzUsNyArNDE5NCw2IEBACiAJc3RydWN0IGlub2RlICppbm9kZSA9ICYoZWktPnZmc19pbm9kZSk7CiAJdTY0IGlfYmxvY2tzID0gaW5vZGUtPmlfYmxvY2tzOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQlpbnQgZXJyID0gMDsKIAogCWlmIChpX2Jsb2NrcyA8PSB+MFUpIHsKIAkJLyoKQEAgLTQxODUsMzYgKzQyMDMsMjcgQEAKIAkJcmF3X2lub2RlLT5pX2Jsb2Nrc19sbyAgID0gY3B1X3RvX2xlMzIoaV9ibG9ja3MpOwogCQlyYXdfaW5vZGUtPmlfYmxvY2tzX2hpZ2ggPSAwOwogCQllaS0+aV9mbGFncyAmPSB+RVhUNF9IVUdFX0ZJTEVfRkw7Ci0JfSBlbHNlIGlmIChpX2Jsb2NrcyA8PSAweGZmZmZmZmZmZmZmZlVMTCkgeworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCFFWFQ0X0hBU19ST19DT01QQVRfRkVBVFVSRShzYiwgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUpKQorCQlyZXR1cm4gLUVGQklHOworCisJaWYgKGlfYmxvY2tzIDw9IDB4ZmZmZmZmZmZmZmZmVUxMKSB7CiAJCS8qCiAJCSAqIGlfYmxvY2tzIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIDQ4IGJpdCB2YXJpYWJsZQogCQkgKiBhcyBtdWx0aXBsZSBvZiA1MTIgYnl0ZXMKIAkJICovCi0JCWVyciA9IGV4dDRfdXBkYXRlX3JvY29tcGF0X2ZlYXR1cmUoaGFuZGxlLCBzYiwKLQkJCQkJICAgIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfSFVHRV9GSUxFKTsKLQkJaWYgKGVycikKLQkJCWdvdG8gIGVycl9vdXQ7Ci0JCS8qIGlfYmxvY2sgaXMgc3RvcmVkIGluIHRoZSBzcGxpdCAgNDggYml0IGZpZWxkcyAqLwogCQlyYXdfaW5vZGUtPmlfYmxvY2tzX2xvICAgPSBjcHVfdG9fbGUzMihpX2Jsb2Nrcyk7CiAJCXJhd19pbm9kZS0+aV9ibG9ja3NfaGlnaCA9IGNwdV90b19sZTE2KGlfYmxvY2tzID4+IDMyKTsKIAkJZWktPmlfZmxhZ3MgJj0gfkVYVDRfSFVHRV9GSUxFX0ZMOwogCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIGlfYmxvY2tzIHNob3VsZCBiZSByZXByZXNlbnRlZCBpbiBhIDQ4IGJpdCB2YXJpYWJsZQotCQkgKiBhcyBtdWx0aXBsZSBvZiAgZmlsZSBzeXN0ZW0gYmxvY2sgc2l6ZQotCQkgKi8KLQkJZXJyID0gZXh0NF91cGRhdGVfcm9jb21wYXRfZmVhdHVyZShoYW5kbGUsIHNiLAotCQkJCQkgICAgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUpOwotCQlpZiAoZXJyKQotCQkJZ290byAgZXJyX291dDsKIAkJZWktPmlfZmxhZ3MgfD0gRVhUNF9IVUdFX0ZJTEVfRkw7CiAJCS8qIGlfYmxvY2sgaXMgc3RvcmVkIGluIGZpbGUgc3lzdGVtIGJsb2NrIHNpemUgKi8KIAkJaV9ibG9ja3MgPSBpX2Jsb2NrcyA+PiAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQlyYXdfaW5vZGUtPmlfYmxvY2tzX2xvICAgPSBjcHVfdG9fbGUzMihpX2Jsb2Nrcyk7CiAJCXJhd19pbm9kZS0+aV9ibG9ja3NfaGlnaCA9IGNwdV90b19sZTE2KGlfYmxvY2tzID4+IDMyKTsKIAl9Ci1lcnJfb3V0OgotCXJldHVybiBlcnI7CisJcmV0dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9mcy9leHQ0L21iYWxsb2MuYyBiL2ZzL2V4dDQvbWJhbGxvYy5jCmluZGV4IGI1ODA3MTQuLmRmZTE3YTEgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbWJhbGxvYy5jCisrKyBiL2ZzL2V4dDQvbWJhbGxvYy5jCkBAIC0yMzAwLDYgKzIzMDAsNyBAQAogCX0KIAogCUlOSVRfTElTVF9IRUFEKCZtZXRhX2dyb3VwX2luZm9baV0tPmJiX3ByZWFsbG9jX2xpc3QpOworCW1ldGFfZ3JvdXBfaW5mb1tpXS0+YmJfZnJlZV9yb290LnJiX25vZGUgPSBOVUxMOzsKIAogI2lmZGVmIERPVUJMRV9DSEVDSwogCXsKQEAgLTI1MjIsOSArMjUyMyw2IEBACiAJfQogCiAJc3Bpbl9sb2NrX2luaXQoJnNiaS0+c19tZF9sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmc2JpLT5zX2FjdGl2ZV90cmFuc2FjdGlvbik7Ci0JSU5JVF9MSVNUX0hFQUQoJnNiaS0+c19jbG9zZWRfdHJhbnNhY3Rpb24pOwotCUlOSVRfTElTVF9IRUFEKCZzYmktPnNfY29tbWl0dGVkX3RyYW5zYWN0aW9uKTsKIAlzcGluX2xvY2tfaW5pdCgmc2JpLT5zX2JhbF9sb2NrKTsKIAogCXNiaS0+c19tYl9tYXhfdG9fc2NhbiA9IE1CX0RFRkFVTFRfTUFYX1RPX1NDQU47CkBAIC0yNTUzLDYgKzI1NTEsOCBAQAogCWV4dDRfbWJfaW5pdF9wZXJfZGV2X3Byb2Moc2IpOwogCWV4dDRfbWJfaGlzdG9yeV9pbml0KHNiKTsKIAorCXNiaS0+c19qb3VybmFsLT5qX2NvbW1pdF9jYWxsYmFjayA9IHJlbGVhc2VfYmxvY2tzX29uX2NvbW1pdDsKKwogCXByaW50ayhLRVJOX0lORk8gIkVYVDQtZnM6IG1iYWxsb2MgZW5hYmxlZFxuIik7CiAJcmV0dXJuIDA7CiB9CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQlwYSA9IGxpc3RfZW50cnkoY3VyLCBzdHJ1Y3QgZXh0NF9wcmVhbGxvY19zcGFjZSwgcGFfZ3JvdXBfbGlzdCk7CiAJCWxpc3RfZGVsKCZwYS0+cGFfZ3JvdXBfbGlzdCk7CiAJCWNvdW50Kys7Ci0JCWtmcmVlKHBhKTsKKwkJa21lbV9jYWNoZV9mcmVlKGV4dDRfcHNwYWNlX2NhY2hlcCwgcGEpOwogCX0KIAlpZiAoY291bnQpCiAJCW1iX2RlYnVnKCJtYmFsbG9jOiAldSBQQXMgbGVmdFxuIiwgY291bnQpOwpAQCAtMjU4MiwxNSArMjU4Miw2IEBACiAJc3RydWN0IGV4dDRfZ3JvdXBfaW5mbyAqZ3JpbmZvOwogCXN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpOwogCi0JLyogcmVsZWFzZSBmcmVlZCwgbm9uLWNvbW1pdHRlZCBibG9ja3MgKi8KLQlzcGluX2xvY2soJnNiaS0+c19tZF9sb2NrKTsKLQlsaXN0X3NwbGljZV9pbml0KCZzYmktPnNfY2xvc2VkX3RyYW5zYWN0aW9uLAotCQkJJnNiaS0+c19jb21taXR0ZWRfdHJhbnNhY3Rpb24pOwotCWxpc3Rfc3BsaWNlX2luaXQoJnNiaS0+c19hY3RpdmVfdHJhbnNhY3Rpb24sCi0JCQkmc2JpLT5zX2NvbW1pdHRlZF90cmFuc2FjdGlvbik7Ci0Jc3Bpbl91bmxvY2soJnNiaS0+c19tZF9sb2NrKTsKLQlleHQ0X21iX2ZyZWVfY29tbWl0dGVkX2Jsb2NrcyhzYik7Ci0KIAlpZiAoc2JpLT5zX2dyb3VwX2luZm8pIHsKIAkJZm9yIChpID0gMDsgaSA8IHNiaS0+c19ncm91cHNfY291bnQ7IGkrKykgewogCQkJZ3JpbmZvID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgaSk7CkBAIC0yNjQ0LDYxICsyNjM1LDU3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgdm9pZAotZXh0NF9tYl9mcmVlX2NvbW1pdHRlZF9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgamJkMiBsYXllciBvbmNlIHRoZSBjb21taXQgaGFzIGZpbmlzaGVkLAorICogc28gd2Uga25vdyB3ZSBjYW4gZnJlZSB0aGUgYmxvY2tzIHRoYXQgd2VyZSByZWxlYXNlZCB3aXRoIHRoYXQgY29tbWl0LgorICovCitzdGF0aWMgdm9pZCByZWxlYXNlX2Jsb2Nrc19vbl9jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0cmFuc2FjdGlvbl90ICp0eG4pCiB7Ci0Jc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7Ci0JaW50IGVycjsKLQlpbnQgaTsKLQlpbnQgY291bnQgPSAwOwotCWludCBjb3VudDIgPSAwOwotCXN0cnVjdCBleHQ0X2ZyZWVfbWV0YWRhdGEgKm1kOworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBqb3VybmFsLT5qX3ByaXZhdGU7CiAJc3RydWN0IGV4dDRfYnVkZHkgZTRiOworCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmRiOworCWludCBlcnIsIGNvdW50ID0gMCwgY291bnQyID0gMDsKKwlzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEgKmVudHJ5OworCWV4dDRfZnNibGtfdCBkaXNjYXJkX2Jsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgKmwsICpsdG1wOwogCi0JaWYgKGxpc3RfZW1wdHkoJnNiaS0+c19jb21taXR0ZWRfdHJhbnNhY3Rpb24pKQotCQlyZXR1cm47Ci0KLQkvKiB0aGVyZSBpcyBjb21taXR0ZWQgYmxvY2tzIHRvIGJlIGZyZWVkIHlldCAqLwotCWRvIHsKLQkJLyogZ2V0IG5leHQgYXJyYXkgb2YgYmxvY2tzICovCi0JCW1kID0gTlVMTDsKLQkJc3Bpbl9sb2NrKCZzYmktPnNfbWRfbG9jayk7Ci0JCWlmICghbGlzdF9lbXB0eSgmc2JpLT5zX2NvbW1pdHRlZF90cmFuc2FjdGlvbikpIHsKLQkJCW1kID0gbGlzdF9lbnRyeShzYmktPnNfY29tbWl0dGVkX3RyYW5zYWN0aW9uLm5leHQsCi0JCQkJCXN0cnVjdCBleHQ0X2ZyZWVfbWV0YWRhdGEsIGxpc3QpOwotCQkJbGlzdF9kZWwoJm1kLT5saXN0KTsKLQkJfQotCQlzcGluX3VubG9jaygmc2JpLT5zX21kX2xvY2spOwotCi0JCWlmIChtZCA9PSBOVUxMKQotCQkJYnJlYWs7CisJbGlzdF9mb3JfZWFjaF9zYWZlKGwsIGx0bXAsICZ0eG4tPnRfcHJpdmF0ZV9saXN0KSB7CisJCWVudHJ5ID0gbGlzdF9lbnRyeShsLCBzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEsIGxpc3QpOwogCiAJCW1iX2RlYnVnKCJnb25uYSBmcmVlICV1IGJsb2NrcyBpbiBncm91cCAlbHUgKDB4JXApOiIsCi0JCQkJbWQtPm51bSwgbWQtPmdyb3VwLCBtZCk7CisJCQkgZW50cnktPmNvdW50LCBlbnRyeS0+Z3JvdXAsIGVudHJ5KTsKIAotCQllcnIgPSBleHQ0X21iX2xvYWRfYnVkZHkoc2IsIG1kLT5ncm91cCwgJmU0Yik7CisJCWVyciA9IGV4dDRfbWJfbG9hZF9idWRkeShzYiwgZW50cnktPmdyb3VwLCAmZTRiKTsKIAkJLyogd2UgZXhwZWN0IHRvIGZpbmQgZXhpc3RpbmcgYnVkZHkgYmVjYXVzZSBpdCdzIHBpbm5lZCAqLwogCQlCVUdfT04oZXJyICE9IDApOwogCisJCWRiID0gZTRiLmJkX2luZm87CiAJCS8qIHRoZXJlIGFyZSBibG9ja3MgdG8gcHV0IGluIGJ1ZGR5IHRvIG1ha2UgdGhlbSByZWFsbHkgZnJlZSAqLwotCQljb3VudCArPSBtZC0+bnVtOworCQljb3VudCArPSBlbnRyeS0+Y291bnQ7CiAJCWNvdW50MisrOwotCQlleHQ0X2xvY2tfZ3JvdXAoc2IsIG1kLT5ncm91cCk7Ci0JCWZvciAoaSA9IDA7IGkgPCBtZC0+bnVtOyBpKyspIHsKLQkJCW1iX2RlYnVnKCIgJXUiLCBtZC0+YmxvY2tzW2ldKTsKLQkJCW1iX2ZyZWVfYmxvY2tzKE5VTEwsICZlNGIsIG1kLT5ibG9ja3NbaV0sIDEpOworCQlleHQ0X2xvY2tfZ3JvdXAoc2IsIGVudHJ5LT5ncm91cCk7CisJCS8qIFRha2UgaXQgb3V0IG9mIHBlciBncm91cCByYiB0cmVlICovCisJCXJiX2VyYXNlKCZlbnRyeS0+bm9kZSwgJihkYi0+YmJfZnJlZV9yb290KSk7CisJCW1iX2ZyZWVfYmxvY2tzKE5VTEwsICZlNGIsIGVudHJ5LT5zdGFydF9ibGssIGVudHJ5LT5jb3VudCk7CisKKwkJaWYgKCFkYi0+YmJfZnJlZV9yb290LnJiX25vZGUpIHsKKwkJCS8qIE5vIG1vcmUgaXRlbXMgaW4gdGhlIHBlciBncm91cCByYiB0cmVlCisJCQkgKiBiYWxhbmNlIHJlZmNvdW50cyBmcm9tIGV4dDRfbWJfZnJlZV9tZXRhZGF0YSgpCisJCQkgKi8KKwkJCXBhZ2VfY2FjaGVfcmVsZWFzZShlNGIuYmRfYnVkZHlfcGFnZSk7CisJCQlwYWdlX2NhY2hlX3JlbGVhc2UoZTRiLmJkX2JpdG1hcF9wYWdlKTsKIAkJfQotCQltYl9kZWJ1ZygiXG4iKTsKLQkJZXh0NF91bmxvY2tfZ3JvdXAoc2IsIG1kLT5ncm91cCk7CisJCWV4dDRfdW5sb2NrX2dyb3VwKHNiLCBlbnRyeS0+Z3JvdXApOworCQlkaXNjYXJkX2Jsb2NrID0gKGV4dDRfZnNibGtfdCkgZW50cnktPmdyb3VwICogRVhUNF9CTE9DS1NfUEVSX0dST1VQKHNiKQorCQkJKyBlbnRyeS0+c3RhcnRfYmxrCisJCQkrIGxlMzJfdG9fY3B1KEVYVDRfU0Ioc2IpLT5zX2VzLT5zX2ZpcnN0X2RhdGFfYmxvY2spOworCQl0cmFjZV9tYXJrKGV4dDRfZGlzY2FyZF9ibG9ja3MsICJkZXYgJXMgYmxrICVsbHUgY291bnQgJXUiLCBzYi0+c19pZCwKKwkJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpIGRpc2NhcmRfYmxvY2ssIGVudHJ5LT5jb3VudCk7CisJCXNiX2lzc3VlX2Rpc2NhcmQoc2IsIGRpc2NhcmRfYmxvY2ssIGVudHJ5LT5jb3VudCk7CiAKLQkJLyogYmFsYW5jZSByZWZjb3VudHMgZnJvbSBleHQ0X21iX2ZyZWVfbWV0YWRhdGEoKSAqLwotCQlwYWdlX2NhY2hlX3JlbGVhc2UoZTRiLmJkX2J1ZGR5X3BhZ2UpOwotCQlwYWdlX2NhY2hlX3JlbGVhc2UoZTRiLmJkX2JpdG1hcF9wYWdlKTsKLQotCQlrZnJlZShtZCk7CisJCWttZW1fY2FjaGVfZnJlZShleHQ0X2ZyZWVfZXh0X2NhY2hlcCwgZW50cnkpOwogCQlleHQ0X21iX3JlbGVhc2VfZGVzYygmZTRiKTsKLQotCX0gd2hpbGUgKG1kKTsKKwl9CiAKIAltYl9kZWJ1ZygiZnJlZWQgJXUgYmxvY2tzIGluICV1IHN0cnVjdHVyZXNcbiIsIGNvdW50LCBjb3VudDIpOwogfQpAQCAtMjcxMiw2ICsyNjk5LDcgQEAKIAogc3RhdGljIGludCBleHQ0X21iX2luaXRfcGVyX2Rldl9wcm9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiB7CisjaWZkZWYgQ09ORklHX1BST0NfRlMKIAltb2RlX3QgbW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPIHwgU19JV1VTUjsKIAlzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTsKIAlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2M7CkBAIC0yNzM1LDEwICsyNzIzLDE0IEBACiAJcmVtb3ZlX3Byb2NfZW50cnkoRVhUNF9NQl9NQVhfVE9fU0NBTl9OQU1FLCBzYmktPnNfcHJvYyk7CiAJcmVtb3ZlX3Byb2NfZW50cnkoRVhUNF9NQl9TVEFUU19OQU1FLCBzYmktPnNfcHJvYyk7CiAJcmV0dXJuIC1FTk9NRU07CisjZWxzZQorCXJldHVybiAwOworI2VuZGlmCiB9CiAKIHN0YXRpYyBpbnQgZXh0NF9tYl9kZXN0cm95X3Blcl9kZXZfcHJvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogeworI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAJc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7CiAKIAlpZiAoc2JpLT5zX3Byb2MgPT0gTlVMTCkKQEAgLTI3NTAsNyArMjc0Miw3IEBACiAJcmVtb3ZlX3Byb2NfZW50cnkoRVhUNF9NQl9NSU5fVE9fU0NBTl9OQU1FLCBzYmktPnNfcHJvYyk7CiAJcmVtb3ZlX3Byb2NfZW50cnkoRVhUNF9NQl9NQVhfVE9fU0NBTl9OQU1FLCBzYmktPnNfcHJvYyk7CiAJcmVtb3ZlX3Byb2NfZW50cnkoRVhUNF9NQl9TVEFUU19OQU1FLCBzYmktPnNfcHJvYyk7Ci0KKyNlbmRpZgogCXJldHVybiAwOwogfQogCkBAIC0yNzcxLDYgKzI3NjMsMTYgQEAKIAkJa21lbV9jYWNoZV9kZXN0cm95KGV4dDRfcHNwYWNlX2NhY2hlcCk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KKworCWV4dDRfZnJlZV9leHRfY2FjaGVwID0KKwkJa21lbV9jYWNoZV9jcmVhdGUoImV4dDRfZnJlZV9ibG9ja19leHRlbnRzIiwKKwkJCQkgICAgIHNpemVvZihzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEpLAorCQkJCSAgICAgMCwgU0xBQl9SRUNMQUlNX0FDQ09VTlQsIE5VTEwpOworCWlmIChleHQ0X2ZyZWVfZXh0X2NhY2hlcCA9PSBOVUxMKSB7CisJCWttZW1fY2FjaGVfZGVzdHJveShleHQ0X3BzcGFjZV9jYWNoZXApOworCQlrbWVtX2NhY2hlX2Rlc3Ryb3koZXh0NF9hY19jYWNoZXApOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTI3NzksNiArMjc4MSw3IEBACiAJLyogWFhYOiBzeW5jaHJvbml6ZV9yY3UoKTsgKi8KIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZXh0NF9wc3BhY2VfY2FjaGVwKTsKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZXh0NF9hY19jYWNoZXApOworCWttZW1fY2FjaGVfZGVzdHJveShleHQ0X2ZyZWVfZXh0X2NhY2hlcCk7CiB9CiAKIApAQCAtNDMyNCw4ICs0MzI3LDYgQEAKIAkJZ290byBvdXQxOwogCX0KIAotCWV4dDRfbWJfcG9sbF9uZXdfdHJhbnNhY3Rpb24oc2IsIGhhbmRsZSk7Ci0KIAkqZXJycCA9IGV4dDRfbWJfaW5pdGlhbGl6ZV9jb250ZXh0KGFjLCBhcik7CiAJaWYgKCplcnJwKSB7CiAJCWFyLT5sZW4gPSAwOwpAQCAtNDM4NCwzNSArNDM4NSwyMCBAQAogCiAJcmV0dXJuIGJsb2NrOwogfQotc3RhdGljIHZvaWQgZXh0NF9tYl9wb2xsX25ld190cmFuc2FjdGlvbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAotCQkJCQkJaGFuZGxlX3QgKmhhbmRsZSkKKworLyoKKyAqIFdlIGNhbiBtZXJnZSB0d28gZnJlZSBkYXRhIGV4dGVudHMgb25seSBpZiB0aGUgcGh5c2ljYWwgYmxvY2tzCisgKiBhcmUgY29udGlndW91cywgQU5EIHRoZSBleHRlbnRzIHdlcmUgZnJlZWQgYnkgdGhlIHNhbWUgdHJhbnNhY3Rpb24sCisgKiBBTkQgdGhlIGJsb2NrcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIGdyb3VwLgorICovCitzdGF0aWMgaW50IGNhbl9tZXJnZShzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEgKmVudHJ5MSwKKwkJCXN0cnVjdCBleHQ0X2ZyZWVfZGF0YSAqZW50cnkyKQogewotCXN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpOwotCi0JaWYgKHNiaS0+c19sYXN0X3RyYW5zYWN0aW9uID09IGhhbmRsZS0+aF90cmFuc2FjdGlvbi0+dF90aWQpCi0JCXJldHVybjsKLQotCS8qIG5ldyB0cmFuc2FjdGlvbiEgdGltZSB0byBjbG9zZSBsYXN0IG9uZSBhbmQgZnJlZSBibG9ja3MgZm9yCi0JICogY29tbWl0dGVkIHRyYW5zYWN0aW9uLiB3ZSBrbm93IHRoYXQgb25seSB0cmFuc2FjdGlvbiBjYW4gYmUKLQkgKiBhY3RpdmUsIHNvIHByZXZpb3MgdHJhbnNhY3Rpb24gY2FuIGJlIGJlaW5nIGxvZ2dlZCBhbmQgd2UKLQkgKiBrbm93IHRoYXQgdHJhbnNhY3Rpb24gYmVmb3JlIHByZXZpb3VzIGlzIGtub3duIHRvIGJlIGFscmVhZHkKLQkgKiBsb2dnZWQuIHRoaXMgbWVhbnMgdGhhdCBub3cgd2UgbWF5IGZyZWUgYmxvY2tzIGZyZWVkIGluIGFsbAotCSAqIHRyYW5zYWN0aW9ucyBiZWZvcmUgcHJldmlvdXMgb25lLiBob3BlIEknbSBjbGVhciBlbm91Z2ggLi4uICovCi0KLQlzcGluX2xvY2soJnNiaS0+c19tZF9sb2NrKTsKLQlpZiAoc2JpLT5zX2xhc3RfdHJhbnNhY3Rpb24gIT0gaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X3RpZCkgewotCQltYl9kZWJ1ZygibmV3IHRyYW5zYWN0aW9uICVsdSwgb2xkICVsdVxuIiwKLQkJCQkodW5zaWduZWQgbG9uZykgaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X3RpZCwKLQkJCQkodW5zaWduZWQgbG9uZykgc2JpLT5zX2xhc3RfdHJhbnNhY3Rpb24pOwotCQlsaXN0X3NwbGljZV9pbml0KCZzYmktPnNfY2xvc2VkX3RyYW5zYWN0aW9uLAotCQkJCSZzYmktPnNfY29tbWl0dGVkX3RyYW5zYWN0aW9uKTsKLQkJbGlzdF9zcGxpY2VfaW5pdCgmc2JpLT5zX2FjdGl2ZV90cmFuc2FjdGlvbiwKLQkJCQkmc2JpLT5zX2Nsb3NlZF90cmFuc2FjdGlvbik7Ci0JCXNiaS0+c19sYXN0X3RyYW5zYWN0aW9uID0gaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X3RpZDsKLQl9Ci0Jc3Bpbl91bmxvY2soJnNiaS0+c19tZF9sb2NrKTsKLQotCWV4dDRfbWJfZnJlZV9jb21taXR0ZWRfYmxvY2tzKHNiKTsKKwlpZiAoKGVudHJ5MS0+dF90aWQgPT0gZW50cnkyLT50X3RpZCkgJiYKKwkgICAgKGVudHJ5MS0+Z3JvdXAgPT0gZW50cnkyLT5ncm91cCkgJiYKKwkgICAgKChlbnRyeTEtPnN0YXJ0X2JsayArIGVudHJ5MS0+Y291bnQpID09IGVudHJ5Mi0+c3RhcnRfYmxrKSkKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50CkBAIC00NDIyLDU3ICs0NDA4LDgwIEBACiAJc3RydWN0IGV4dDRfZ3JvdXBfaW5mbyAqZGIgPSBlNGItPmJkX2luZm87CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGU0Yi0+YmRfc2I7CiAJc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7Ci0Jc3RydWN0IGV4dDRfZnJlZV9tZXRhZGF0YSAqbWQ7Ci0JaW50IGk7CisJc3RydWN0IGV4dDRfZnJlZV9kYXRhICplbnRyeSwgKm5ld19lbnRyeTsKKwlzdHJ1Y3QgcmJfbm9kZSAqKm4gPSAmZGItPmJiX2ZyZWVfcm9vdC5yYl9ub2RlLCAqbm9kZTsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gTlVMTCwgKm5ld19ub2RlOworCiAKIAlCVUdfT04oZTRiLT5iZF9iaXRtYXBfcGFnZSA9PSBOVUxMKTsKIAlCVUdfT04oZTRiLT5iZF9idWRkeV9wYWdlID09IE5VTEwpOwogCisJbmV3X2VudHJ5ICA9IGttZW1fY2FjaGVfYWxsb2MoZXh0NF9mcmVlX2V4dF9jYWNoZXAsIEdGUF9OT0ZTKTsKKwluZXdfZW50cnktPnN0YXJ0X2JsayA9IGJsb2NrOworCW5ld19lbnRyeS0+Z3JvdXAgID0gZ3JvdXA7CisJbmV3X2VudHJ5LT5jb3VudCA9IGNvdW50OworCW5ld19lbnRyeS0+dF90aWQgPSBoYW5kbGUtPmhfdHJhbnNhY3Rpb24tPnRfdGlkOworCW5ld19ub2RlID0gJm5ld19lbnRyeS0+bm9kZTsKKwogCWV4dDRfbG9ja19ncm91cChzYiwgZ3JvdXApOwotCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0JCW1kID0gZGItPmJiX21kX2N1cjsKLQkJaWYgKG1kICYmIGRiLT5iYl90aWQgIT0gaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X3RpZCkgewotCQkJZGItPmJiX21kX2N1ciA9IE5VTEw7Ci0JCQltZCA9IE5VTEw7Ci0JCX0KLQotCQlpZiAobWQgPT0gTlVMTCkgewotCQkJZXh0NF91bmxvY2tfZ3JvdXAoc2IsIGdyb3VwKTsKLQkJCW1kID0ga21hbGxvYyhzaXplb2YoKm1kKSwgR0ZQX05PRlMpOwotCQkJaWYgKG1kID09IE5VTEwpCi0JCQkJcmV0dXJuIC1FTk9NRU07Ci0JCQltZC0+bnVtID0gMDsKLQkJCW1kLT5ncm91cCA9IGdyb3VwOwotCi0JCQlleHQ0X2xvY2tfZ3JvdXAoc2IsIGdyb3VwKTsKLQkJCWlmIChkYi0+YmJfbWRfY3VyID09IE5VTEwpIHsKLQkJCQlzcGluX2xvY2soJnNiaS0+c19tZF9sb2NrKTsKLQkJCQlsaXN0X2FkZCgmbWQtPmxpc3QsICZzYmktPnNfYWN0aXZlX3RyYW5zYWN0aW9uKTsKLQkJCQlzcGluX3VubG9jaygmc2JpLT5zX21kX2xvY2spOwotCQkJCS8qIHByb3RlY3QgYnVkZHkgY2FjaGUgZnJvbSBiZWluZyBmcmVlZCwKLQkJCQkgKiBvdGhlcndpc2Ugd2UnbGwgcmVmcmVzaCBpdCBmcm9tCi0JCQkJICogb24tZGlzayBiaXRtYXAgYW5kIGxvc2Ugbm90LXlldC1hdmFpbGFibGUKLQkJCQkgKiBibG9ja3MgKi8KLQkJCQlwYWdlX2NhY2hlX2dldChlNGItPmJkX2J1ZGR5X3BhZ2UpOwotCQkJCXBhZ2VfY2FjaGVfZ2V0KGU0Yi0+YmRfYml0bWFwX3BhZ2UpOwotCQkJCWRiLT5iYl9tZF9jdXIgPSBtZDsKLQkJCQlkYi0+YmJfdGlkID0gaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X3RpZDsKLQkJCQltYl9kZWJ1ZygibmV3IG1kIDB4JXAgZm9yIGdyb3VwICVsdVxuIiwKLQkJCQkJCW1kLCBtZC0+Z3JvdXApOwotCQkJfSBlbHNlIHsKLQkJCQlrZnJlZShtZCk7Ci0JCQkJbWQgPSBkYi0+YmJfbWRfY3VyOwotCQkJfQotCQl9Ci0KLQkJQlVHX09OKG1kLT5udW0gPj0gRVhUNF9CQl9NQVhfQkxPQ0tTKTsKLQkJbWQtPmJsb2Nrc1ttZC0+bnVtXSA9IGJsb2NrICsgaTsKLQkJbWQtPm51bSsrOwotCQlpZiAobWQtPm51bSA9PSBFWFQ0X0JCX01BWF9CTE9DS1MpIHsKLQkJCS8qIG5vIG1vcmUgc3BhY2UsIHB1dCBmdWxsIGNvbnRhaW5lciBvbiBhIHNiJ3MgbGlzdCAqLwotCQkJZGItPmJiX21kX2N1ciA9IE5VTEw7CisJaWYgKCEqbikgeworCQkvKiBmaXJzdCBmcmVlIGJsb2NrIGV4ZW50LiBXZSBuZWVkIHRvCisJCSAgIHByb3RlY3QgYnVkZHkgY2FjaGUgZnJvbSBiZWluZyBmcmVlZCwKKwkJICogb3RoZXJ3aXNlIHdlJ2xsIHJlZnJlc2ggaXQgZnJvbQorCQkgKiBvbi1kaXNrIGJpdG1hcCBhbmQgbG9zZSBub3QteWV0LWF2YWlsYWJsZQorCQkgKiBibG9ja3MgKi8KKwkJcGFnZV9jYWNoZV9nZXQoZTRiLT5iZF9idWRkeV9wYWdlKTsKKwkJcGFnZV9jYWNoZV9nZXQoZTRiLT5iZF9iaXRtYXBfcGFnZSk7CisJfQorCXdoaWxlICgqbikgeworCQlwYXJlbnQgPSAqbjsKKwkJZW50cnkgPSByYl9lbnRyeShwYXJlbnQsIHN0cnVjdCBleHQ0X2ZyZWVfZGF0YSwgbm9kZSk7CisJCWlmIChibG9jayA8IGVudHJ5LT5zdGFydF9ibGspCisJCQluID0gJigqbiktPnJiX2xlZnQ7CisJCWVsc2UgaWYgKGJsb2NrID49IChlbnRyeS0+c3RhcnRfYmxrICsgZW50cnktPmNvdW50KSkKKwkJCW4gPSAmKCpuKS0+cmJfcmlnaHQ7CisJCWVsc2UgeworCQkJZXh0NF9lcnJvcihzYiwgX19mdW5jX18sCisJCQkgICAgIkRvdWJsZSBmcmVlIG9mIGJsb2NrcyAlZCAoJWQgJWQpXG4iLAorCQkJICAgIGJsb2NrLCBlbnRyeS0+c3RhcnRfYmxrLCBlbnRyeS0+Y291bnQpOworCQkJcmV0dXJuIDA7CiAJCX0KIAl9CisKKwlyYl9saW5rX25vZGUobmV3X25vZGUsIHBhcmVudCwgbik7CisJcmJfaW5zZXJ0X2NvbG9yKG5ld19ub2RlLCAmZGItPmJiX2ZyZWVfcm9vdCk7CisKKwkvKiBOb3cgdHJ5IHRvIHNlZSB0aGUgZXh0ZW50IGNhbiBiZSBtZXJnZWQgdG8gbGVmdCBhbmQgcmlnaHQgKi8KKwlub2RlID0gcmJfcHJldihuZXdfbm9kZSk7CisJaWYgKG5vZGUpIHsKKwkJZW50cnkgPSByYl9lbnRyeShub2RlLCBzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEsIG5vZGUpOworCQlpZiAoY2FuX21lcmdlKGVudHJ5LCBuZXdfZW50cnkpKSB7CisJCQluZXdfZW50cnktPnN0YXJ0X2JsayA9IGVudHJ5LT5zdGFydF9ibGs7CisJCQluZXdfZW50cnktPmNvdW50ICs9IGVudHJ5LT5jb3VudDsKKwkJCXJiX2VyYXNlKG5vZGUsICYoZGItPmJiX2ZyZWVfcm9vdCkpOworCQkJc3Bpbl9sb2NrKCZzYmktPnNfbWRfbG9jayk7CisJCQlsaXN0X2RlbCgmZW50cnktPmxpc3QpOworCQkJc3Bpbl91bmxvY2soJnNiaS0+c19tZF9sb2NrKTsKKwkJCWttZW1fY2FjaGVfZnJlZShleHQ0X2ZyZWVfZXh0X2NhY2hlcCwgZW50cnkpOworCQl9CisJfQorCisJbm9kZSA9IHJiX25leHQobmV3X25vZGUpOworCWlmIChub2RlKSB7CisJCWVudHJ5ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGV4dDRfZnJlZV9kYXRhLCBub2RlKTsKKwkJaWYgKGNhbl9tZXJnZShuZXdfZW50cnksIGVudHJ5KSkgeworCQkJbmV3X2VudHJ5LT5jb3VudCArPSBlbnRyeS0+Y291bnQ7CisJCQlyYl9lcmFzZShub2RlLCAmKGRiLT5iYl9mcmVlX3Jvb3QpKTsKKwkJCXNwaW5fbG9jaygmc2JpLT5zX21kX2xvY2spOworCQkJbGlzdF9kZWwoJmVudHJ5LT5saXN0KTsKKwkJCXNwaW5fdW5sb2NrKCZzYmktPnNfbWRfbG9jayk7CisJCQlrbWVtX2NhY2hlX2ZyZWUoZXh0NF9mcmVlX2V4dF9jYWNoZXAsIGVudHJ5KTsKKwkJfQorCX0KKwkvKiBBZGQgdGhlIGV4dGVudCB0byB0cmFuc2FjdGlvbidzIHByaXZhdGUgbGlzdCAqLworCXNwaW5fbG9jaygmc2JpLT5zX21kX2xvY2spOworCWxpc3RfYWRkKCZuZXdfZW50cnktPmxpc3QsICZoYW5kbGUtPmhfdHJhbnNhY3Rpb24tPnRfcHJpdmF0ZV9saXN0KTsKKwlzcGluX3VubG9jaygmc2JpLT5zX21kX2xvY2spOwogCWV4dDRfdW5sb2NrX2dyb3VwKHNiLCBncm91cCk7CiAJcmV0dXJuIDA7CiB9CkBAIC00NTAwLDggKzQ1MDksNiBAQAogCiAJKmZyZWVkID0gMDsKIAotCWV4dDRfbWJfcG9sbF9uZXdfdHJhbnNhY3Rpb24oc2IsIGhhbmRsZSk7Ci0KIAlzYmkgPSBFWFQ0X1NCKHNiKTsKIAllcyA9IEVYVDRfU0Ioc2IpLT5zX2VzOwogCWlmIChibG9jayA8IGxlMzJfdG9fY3B1KGVzLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHx8CmRpZmYgLS1naXQgYS9mcy9leHQ0L21iYWxsb2MuaCBiL2ZzL2V4dDQvbWJhbGxvYy5oCmluZGV4IGIzYjQ4MjguLmI1ZGZmMWYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbWJhbGxvYy5oCisrKyBiL2ZzL2V4dDQvbWJhbGxvYy5oCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgorI2luY2x1ZGUgPGxpbnV4L21hcmtlci5oPgogI2luY2x1ZGUgImV4dDRfamJkMi5oIgogI2luY2x1ZGUgImV4dDQuaCIKICNpbmNsdWRlICJncm91cC5oIgpAQCAtOTgsMjMgKzEwMCwyOSBAQAogCiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmV4dDRfcHNwYWNlX2NhY2hlcDsKIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqZXh0NF9hY19jYWNoZXA7CitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmV4dDRfZnJlZV9leHRfY2FjaGVwOwogCi0jaWZkZWYgRVhUNF9CQl9NQVhfQkxPQ0tTCi0jdW5kZWYgRVhUNF9CQl9NQVhfQkxPQ0tTCi0jZW5kaWYKLSNkZWZpbmUgRVhUNF9CQl9NQVhfQkxPQ0tTCTMwCitzdHJ1Y3QgZXh0NF9mcmVlX2RhdGEgeworCS8qIHRoaXMgbGlua3MgdGhlIGZyZWUgYmxvY2sgaW5mb3JtYXRpb24gZnJvbSBncm91cF9pbmZvICovCisJc3RydWN0IHJiX25vZGUgbm9kZTsKIAotc3RydWN0IGV4dDRfZnJlZV9tZXRhZGF0YSB7Ci0JZXh0NF9ncm91cF90IGdyb3VwOwotCXVuc2lnbmVkIHNob3J0IG51bTsKLQlleHQ0X2dycGJsa190ICBibG9ja3NbRVhUNF9CQl9NQVhfQkxPQ0tTXTsKKwkvKiB0aGlzIGxpbmtzIHRoZSBmcmVlIGJsb2NrIGluZm9ybWF0aW9uIGZyb20gZXh0NF9zYl9pbmZvICovCiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCisJLyogZ3JvdXAgd2hpY2ggZnJlZSBibG9jayBleHRlbnQgYmVsb25ncyAqLworCWV4dDRfZ3JvdXBfdCBncm91cDsKKworCS8qIGZyZWUgYmxvY2sgZXh0ZW50ICovCisJZXh0NF9ncnBibGtfdCBzdGFydF9ibGs7CisJZXh0NF9ncnBibGtfdCBjb3VudDsKKworCS8qIHRyYW5zYWN0aW9uIHdoaWNoIGZyZWVkIHRoaXMgZXh0ZW50ICovCisJdGlkX3QJdF90aWQ7CiB9OwogCiBzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvIHsKIAl1bnNpZ25lZCBsb25nCWJiX3N0YXRlOwotCXVuc2lnbmVkIGxvbmcJYmJfdGlkOwotCXN0cnVjdCBleHQ0X2ZyZWVfbWV0YWRhdGEgKmJiX21kX2N1cjsKKwlzdHJ1Y3QgcmJfcm9vdCAgYmJfZnJlZV9yb290OwogCXVuc2lnbmVkIHNob3J0CWJiX2ZpcnN0X2ZyZWU7CiAJdW5zaWduZWQgc2hvcnQJYmJfZnJlZTsKIAl1bnNpZ25lZCBzaG9ydAliYl9mcmFnbWVudHM7CkBAIC0yNjEsOCArMjY5LDYgQEAKIAogc3RhdGljIHZvaWQgZXh0NF9tYl9nZW5lcmF0ZV9mcm9tX3BhKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmJpdG1hcCwKIAkJCQkJZXh0NF9ncm91cF90IGdyb3VwKTsKLXN0YXRpYyB2b2lkIGV4dDRfbWJfcG9sbF9uZXdfdHJhbnNhY3Rpb24oc3RydWN0IHN1cGVyX2Jsb2NrICosIGhhbmRsZV90ICopOwotc3RhdGljIHZvaWQgZXh0NF9tYl9mcmVlX2NvbW1pdHRlZF9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICopOwogc3RhdGljIHZvaWQgZXh0NF9tYl9yZXR1cm5fdG9fcHJlYWxsb2NhdGlvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQkJCQlzdHJ1Y3QgZXh0NF9idWRkeSAqZTRiLCBzZWN0b3JfdCBibG9jaywKIAkJCQkJaW50IGNvdW50KTsKQEAgLTI3MCw2ICsyNzYsNyBAQAogCQkJc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBleHQ0X3ByZWFsbG9jX3NwYWNlICpwYSk7CiBzdGF0aWMgaW50IGV4dDRfbWJfaW5pdF9wZXJfZGV2X3Byb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CiBzdGF0aWMgaW50IGV4dDRfbWJfZGVzdHJveV9wZXJfZGV2X3Byb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CitzdGF0aWMgdm9pZCByZWxlYXNlX2Jsb2Nrc19vbl9jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0cmFuc2FjdGlvbl90ICp0eG4pOwogCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBleHQ0X2xvY2tfZ3JvdXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9ncm91cF90IGdyb3VwKQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IGRlYThmMTMuLjliMmIyYmMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvc3VwZXIuYworKysgYi9mcy9leHQ0L3N1cGVyLmMKQEAgLTM3NCw2NiArMzc0LDYgQEAKIAkgKi8KIH0KIAotaW50IGV4dDRfdXBkYXRlX2NvbXBhdF9mZWF0dXJlKGhhbmRsZV90ICpoYW5kbGUsCi0JCQkJCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIF9fdTMyIGNvbXBhdCkKLXsKLQlpbnQgZXJyID0gMDsKLQlpZiAoIUVYVDRfSEFTX0NPTVBBVF9GRUFUVVJFKHNiLCBjb21wYXQpKSB7Ci0JCWVyciA9IGV4dDRfam91cm5hbF9nZXRfd3JpdGVfYWNjZXNzKGhhbmRsZSwKLQkJCQlFWFQ0X1NCKHNiKS0+c19zYmgpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQkJRVhUNF9TRVRfQ09NUEFUX0ZFQVRVUkUoc2IsIGNvbXBhdCk7Ci0JCXNiLT5zX2RpcnQgPSAxOwotCQloYW5kbGUtPmhfc3luYyA9IDE7Ci0JCUJVRkZFUl9UUkFDRShFWFQ0X1NCKHNiKS0+c19zYmgsCi0JCQkJCSJjYWxsIGV4dDRfam91cm5hbF9kaXJ0eV9tZXQgYWRhdGEiKTsKLQkJZXJyID0gZXh0NF9qb3VybmFsX2RpcnR5X21ldGFkYXRhKGhhbmRsZSwKLQkJCQlFWFQ0X1NCKHNiKS0+c19zYmgpOwotCX0KLQlyZXR1cm4gZXJyOwotfQotCi1pbnQgZXh0NF91cGRhdGVfcm9jb21wYXRfZmVhdHVyZShoYW5kbGVfdCAqaGFuZGxlLAotCQkJCQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBfX3UzMiByb2NvbXBhdCkKLXsKLQlpbnQgZXJyID0gMDsKLQlpZiAoIUVYVDRfSEFTX1JPX0NPTVBBVF9GRUFUVVJFKHNiLCByb2NvbXBhdCkpIHsKLQkJZXJyID0gZXh0NF9qb3VybmFsX2dldF93cml0ZV9hY2Nlc3MoaGFuZGxlLAotCQkJCUVYVDRfU0Ioc2IpLT5zX3NiaCk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCQlFWFQ0X1NFVF9ST19DT01QQVRfRkVBVFVSRShzYiwgcm9jb21wYXQpOwotCQlzYi0+c19kaXJ0ID0gMTsKLQkJaGFuZGxlLT5oX3N5bmMgPSAxOwotCQlCVUZGRVJfVFJBQ0UoRVhUNF9TQihzYiktPnNfc2JoLAotCQkJCQkiY2FsbCBleHQ0X2pvdXJuYWxfZGlydHlfbWV0IGFkYXRhIik7Ci0JCWVyciA9IGV4dDRfam91cm5hbF9kaXJ0eV9tZXRhZGF0YShoYW5kbGUsCi0JCQkJRVhUNF9TQihzYiktPnNfc2JoKTsKLQl9Ci0JcmV0dXJuIGVycjsKLX0KLQotaW50IGV4dDRfdXBkYXRlX2luY29tcGF0X2ZlYXR1cmUoaGFuZGxlX3QgKmhhbmRsZSwKLQkJCQkJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgaW5jb21wYXQpCi17Ci0JaW50IGVyciA9IDA7Ci0JaWYgKCFFWFQ0X0hBU19JTkNPTVBBVF9GRUFUVVJFKHNiLCBpbmNvbXBhdCkpIHsKLQkJZXJyID0gZXh0NF9qb3VybmFsX2dldF93cml0ZV9hY2Nlc3MoaGFuZGxlLAotCQkJCUVYVDRfU0Ioc2IpLT5zX3NiaCk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCQlFWFQ0X1NFVF9JTkNPTVBBVF9GRUFUVVJFKHNiLCBpbmNvbXBhdCk7Ci0JCXNiLT5zX2RpcnQgPSAxOwotCQloYW5kbGUtPmhfc3luYyA9IDE7Ci0JCUJVRkZFUl9UUkFDRShFWFQ0X1NCKHNiKS0+c19zYmgsCi0JCQkJCSJjYWxsIGV4dDRfam91cm5hbF9kaXJ0eV9tZXQgYWRhdGEiKTsKLQkJZXJyID0gZXh0NF9qb3VybmFsX2RpcnR5X21ldGFkYXRhKGhhbmRsZSwKLQkJCQlFWFQ0X1NCKHNiKS0+c19zYmgpOwotCX0KLQlyZXR1cm4gZXJyOwotfQotCiAvKgogICogT3BlbiB0aGUgZXh0ZXJuYWwgam91cm5hbCBkZXZpY2UKICAqLwpAQCAtOTA0LDcgKzg0NCw3IEBACiBlbnVtIHsKIAlPcHRfYnNkX2RmLCBPcHRfbWluaXhfZGYsIE9wdF9ncnBpZCwgT3B0X25vZ3JwaWQsCiAJT3B0X3Jlc2dpZCwgT3B0X3Jlc3VpZCwgT3B0X3NiLCBPcHRfZXJyX2NvbnQsIE9wdF9lcnJfcGFuaWMsIE9wdF9lcnJfcm8sCi0JT3B0X25vdWlkMzIsIE9wdF9ub2NoZWNrLCBPcHRfZGVidWcsIE9wdF9vbGRhbGxvYywgT3B0X29ybG92LAorCU9wdF9ub3VpZDMyLCBPcHRfZGVidWcsIE9wdF9vbGRhbGxvYywgT3B0X29ybG92LAogCU9wdF91c2VyX3hhdHRyLCBPcHRfbm91c2VyX3hhdHRyLCBPcHRfYWNsLCBPcHRfbm9hY2wsCiAJT3B0X3Jlc2VydmF0aW9uLCBPcHRfbm9yZXNlcnZhdGlvbiwgT3B0X25vbG9hZCwgT3B0X25vYmgsIE9wdF9iaCwKIAlPcHRfY29tbWl0LCBPcHRfam91cm5hbF91cGRhdGUsIE9wdF9qb3VybmFsX2ludW0sIE9wdF9qb3VybmFsX2RldiwKQEAgLTkxNSw3ICs4NTUsNyBAQAogCU9wdF9qcWZtdF92ZnNvbGQsIE9wdF9qcWZtdF92ZnN2MCwgT3B0X3F1b3RhLCBPcHRfbm9xdW90YSwKIAlPcHRfaWdub3JlLCBPcHRfYmFycmllciwgT3B0X2VyciwgT3B0X3Jlc2l6ZSwgT3B0X3VzcnF1b3RhLAogCU9wdF9ncnBxdW90YSwgT3B0X2V4dGVudHMsIE9wdF9ub2V4dGVudHMsIE9wdF9pX3ZlcnNpb24sCi0JT3B0X21iYWxsb2MsIE9wdF9ub21iYWxsb2MsIE9wdF9zdHJpcGUsIE9wdF9kZWxhbGxvYywgT3B0X25vZGVsYWxsb2MsCisJT3B0X3N0cmlwZSwgT3B0X2RlbGFsbG9jLCBPcHRfbm9kZWxhbGxvYywKIAlPcHRfaW5vZGVfcmVhZGFoZWFkX2Jsa3MKIH07CiAKQEAgLTkzMyw4ICs4NzMsNiBAQAogCXtPcHRfZXJyX3BhbmljLCAiZXJyb3JzPXBhbmljIn0sCiAJe09wdF9lcnJfcm8sICJlcnJvcnM9cmVtb3VudC1ybyJ9LAogCXtPcHRfbm91aWQzMiwgIm5vdWlkMzIifSwKLQl7T3B0X25vY2hlY2ssICJub2NoZWNrIn0sCi0Je09wdF9ub2NoZWNrLCAiY2hlY2s9bm9uZSJ9LAogCXtPcHRfZGVidWcsICJkZWJ1ZyJ9LAogCXtPcHRfb2xkYWxsb2MsICJvbGRhbGxvYyJ9LAogCXtPcHRfb3Jsb3YsICJvcmxvdiJ9LApAQCAtOTczLDggKzkxMSw2IEBACiAJe09wdF9leHRlbnRzLCAiZXh0ZW50cyJ9LAogCXtPcHRfbm9leHRlbnRzLCAibm9leHRlbnRzIn0sCiAJe09wdF9pX3ZlcnNpb24sICJpX3ZlcnNpb24ifSwKLQl7T3B0X21iYWxsb2MsICJtYmFsbG9jIn0sCi0Je09wdF9ub21iYWxsb2MsICJub21iYWxsb2MifSwKIAl7T3B0X3N0cmlwZSwgInN0cmlwZT0ldSJ9LAogCXtPcHRfcmVzaXplLCAicmVzaXplIn0sCiAJe09wdF9kZWxhbGxvYywgImRlbGFsbG9jIn0sCkBAIC0xMDczLDkgKzEwMDksNiBAQAogCQljYXNlIE9wdF9ub3VpZDMyOgogCQkJc2V0X29wdChzYmktPnNfbW91bnRfb3B0LCBOT19VSUQzMik7CiAJCQlicmVhazsKLQkJY2FzZSBPcHRfbm9jaGVjazoKLQkJCWNsZWFyX29wdChzYmktPnNfbW91bnRfb3B0LCBDSEVDSyk7Ci0JCQlicmVhazsKIAkJY2FzZSBPcHRfZGVidWc6CiAJCQlzZXRfb3B0KHNiaS0+c19tb3VudF9vcHQsIERFQlVHKTsKIAkJCWJyZWFrOwpAQCAtMTYxOCwxNCArMTU1MSwxNCBAQAogCQlpZiAoYmxvY2tfYml0bWFwIDwgZmlyc3RfYmxvY2sgfHwgYmxvY2tfYml0bWFwID4gbGFzdF9ibG9jaykgewogCQkJcHJpbnRrKEtFUk5fRVJSICJFWFQ0LWZzOiBleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzOiAiCiAJCQkgICAgICAgIkJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJWx1IG5vdCBpbiBncm91cCAiCi0JCQkgICAgICAgIihibG9jayAlbGx1KSEiLCBpLCBibG9ja19iaXRtYXApOworCQkJICAgICAgICIoYmxvY2sgJWxsdSkhXG4iLCBpLCBibG9ja19iaXRtYXApOwogCQkJcmV0dXJuIDA7CiAJCX0KIAkJaW5vZGVfYml0bWFwID0gZXh0NF9pbm9kZV9iaXRtYXAoc2IsIGdkcCk7CiAJCWlmIChpbm9kZV9iaXRtYXAgPCBmaXJzdF9ibG9jayB8fCBpbm9kZV9iaXRtYXAgPiBsYXN0X2Jsb2NrKSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIkVYVDQtZnM6IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnM6ICIKIAkJCSAgICAgICAiSW5vZGUgYml0bWFwIGZvciBncm91cCAlbHUgbm90IGluIGdyb3VwICIKLQkJCSAgICAgICAiKGJsb2NrICVsbHUpISIsIGksIGlub2RlX2JpdG1hcCk7CisJCQkgICAgICAgIihibG9jayAlbGx1KSFcbiIsIGksIGlub2RlX2JpdG1hcCk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpbm9kZV90YWJsZSA9IGV4dDRfaW5vZGVfdGFibGUoc2IsIGdkcCk7CkBAIC0xNjMzLDcgKzE1NjYsNyBAQAogCQkgICAgaW5vZGVfdGFibGUgKyBzYmktPnNfaXRiX3Blcl9ncm91cCAtIDEgPiBsYXN0X2Jsb2NrKSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIkVYVDQtZnM6IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnM6ICIKIAkJCSAgICAgICAiSW5vZGUgdGFibGUgZm9yIGdyb3VwICVsdSBub3QgaW4gZ3JvdXAgIgotCQkJICAgICAgICIoYmxvY2sgJWxsdSkhIiwgaSwgaW5vZGVfdGFibGUpOworCQkJICAgICAgICIoYmxvY2sgJWxsdSkhXG4iLCBpLCBpbm9kZV90YWJsZSk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlzcGluX2xvY2soc2JfYmdsX2xvY2soc2JpLCBpKSk7CkBAIC0xNzc4LDEzICsxNzExLDEzIEBACiAgKgogICogTm90ZSwgdGhpcyBkb2VzICpub3QqIGNvbnNpZGVyIGFueSBtZXRhZGF0YSBvdmVyaGVhZCBmb3IgdmZzIGlfYmxvY2tzLgogICovCi1zdGF0aWMgbG9mZl90IGV4dDRfbWF4X3NpemUoaW50IGJsa2JpdHMpCitzdGF0aWMgbG9mZl90IGV4dDRfbWF4X3NpemUoaW50IGJsa2JpdHMsIGludCBoYXNfaHVnZV9maWxlcykKIHsKIAlsb2ZmX3QgcmVzOwogCWxvZmZfdCB1cHBlcl9saW1pdCA9IE1BWF9MRlNfRklMRVNJWkU7CiAKIAkvKiBzbWFsbCBpX2Jsb2NrcyBpbiB2ZnMgaW5vZGU/ICovCi0JaWYgKHNpemVvZihibGtjbnRfdCkgPCBzaXplb2YodTY0KSkgeworCWlmICghaGFzX2h1Z2VfZmlsZXMgfHwgc2l6ZW9mKGJsa2NudF90KSA8IHNpemVvZih1NjQpKSB7CiAJCS8qCiAJCSAqIENPTkZJR19MU0YgaXMgbm90IGVuYWJsZWQgaW1wbGllcyB0aGUgaW5vZGUKIAkJICogaV9ibG9jayByZXByZXNlbnQgdG90YWwgYmxvY2tzIGluIDUxMiBieXRlcwpAQCAtMTgxNCw3ICsxNzQ3LDcgQEAKICAqIGJsb2NrIGxpbWl0LCBhbmQgYWxzbyBhIGxpbWl0IG9mICgyXjQ4IC0gMSkgNTEyLWJ5dGUgc2VjdG9ycyBpbiBpX2Jsb2Nrcy4KICAqIFdlIG5lZWQgdG8gYmUgMSBmaWxlc3lzdGVtIGJsb2NrIGxlc3MgdGhhbiB0aGUgMl40OCBzZWN0b3IgbGltaXQuCiAgKi8KLXN0YXRpYyBsb2ZmX3QgZXh0NF9tYXhfYml0bWFwX3NpemUoaW50IGJpdHMpCitzdGF0aWMgbG9mZl90IGV4dDRfbWF4X2JpdG1hcF9zaXplKGludCBiaXRzLCBpbnQgaGFzX2h1Z2VfZmlsZXMpCiB7CiAJbG9mZl90IHJlcyA9IEVYVDRfTkRJUl9CTE9DS1M7CiAJaW50IG1ldGFfYmxvY2tzOwpAQCAtMTgyNywxMSArMTc2MCwxMSBAQAogCSAqIHRvdGFsIG51bWJlciBvZiAgNTEyIGJ5dGVzIGJsb2NrcyBvZiB0aGUgZmlsZQogCSAqLwogCi0JaWYgKHNpemVvZihibGtjbnRfdCkgPCBzaXplb2YodTY0KSkgeworCWlmICghaGFzX2h1Z2VfZmlsZXMgfHwgc2l6ZW9mKGJsa2NudF90KSA8IHNpemVvZih1NjQpKSB7CiAJCS8qCi0JCSAqIENPTkZJR19MU0YgaXMgbm90IGVuYWJsZWQgaW1wbGllcyB0aGUgaW5vZGUKLQkJICogaV9ibG9jayByZXByZXNlbnQgdG90YWwgYmxvY2tzIGluIDUxMiBieXRlcwotCQkgKiAzMiA9PSBzaXplIG9mIHZmcyBpbm9kZSBpX2Jsb2NrcyAqIDgKKwkJICogIWhhc19odWdlX2ZpbGVzIG9yIENPTkZJR19MU0YgaXMgbm90IGVuYWJsZWQKKwkJICogaW1wbGllcyB0aGUgaW5vZGUgaV9ibG9jayByZXByZXNlbnQgdG90YWwgYmxvY2tzIGluCisJCSAqIDUxMiBieXRlcyAzMiA9PSBzaXplIG9mIHZmcyBpbm9kZSBpX2Jsb2NrcyAqIDgKIAkJICovCiAJCXVwcGVyX2xpbWl0ID0gKDFMTCA8PCAzMikgLSAxOwogCkBAIC0xOTQwLDcgKzE4NzMsNyBAQAogCWludCBibG9ja3NpemU7CiAJaW50IGRiX2NvdW50OwogCWludCBpOwotCWludCBuZWVkc19yZWNvdmVyeTsKKwlpbnQgbmVlZHNfcmVjb3ZlcnksIGhhc19odWdlX2ZpbGVzOwogCV9fbGUzMiBmZWF0dXJlczsKIAlfX3U2NCBibG9ja3NfY291bnQ7CiAJaW50IGVycjsKQEAgLTIwODEsNyArMjAxNCw5IEBACiAJCSAgICAgICBzYi0+c19pZCwgbGUzMl90b19jcHUoZmVhdHVyZXMpKTsKIAkJZ290byBmYWlsZWRfbW91bnQ7CiAJfQotCWlmIChFWFQ0X0hBU19ST19DT01QQVRfRkVBVFVSRShzYiwgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUpKSB7CisJaGFzX2h1Z2VfZmlsZXMgPSBFWFQ0X0hBU19ST19DT01QQVRfRkVBVFVSRShzYiwKKwkJCQkgICAgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUpOworCWlmIChoYXNfaHVnZV9maWxlcykgewogCQkvKgogCQkgKiBMYXJnZSBmaWxlIHNpemUgZW5hYmxlZCBmaWxlIHN5c3RlbSBjYW4gb25seSBiZQogCQkgKiBtb3VudCBpZiBrZXJuZWwgaXMgYnVpbGQgd2l0aCBDT05GSUdfTFNGCkBAIC0yMTMxLDggKzIwNjYsOSBAQAogCQl9CiAJfQogCi0Jc2JpLT5zX2JpdG1hcF9tYXhieXRlcyA9IGV4dDRfbWF4X2JpdG1hcF9zaXplKHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKLQlzYi0+c19tYXhieXRlcyA9IGV4dDRfbWF4X3NpemUoc2ItPnNfYmxvY2tzaXplX2JpdHMpOworCXNiaS0+c19iaXRtYXBfbWF4Ynl0ZXMgPSBleHQ0X21heF9iaXRtYXBfc2l6ZShzYi0+c19ibG9ja3NpemVfYml0cywKKwkJCQkJCSAgICAgIGhhc19odWdlX2ZpbGVzKTsKKwlzYi0+c19tYXhieXRlcyA9IGV4dDRfbWF4X3NpemUoc2ItPnNfYmxvY2tzaXplX2JpdHMsIGhhc19odWdlX2ZpbGVzKTsKIAogCWlmIChsZTMyX3RvX2NwdShlcy0+c19yZXZfbGV2ZWwpID09IEVYVDRfR09PRF9PTERfUkVWKSB7CiAJCXNiaS0+c19pbm9kZV9zaXplID0gRVhUNF9HT09EX09MRF9JTk9ERV9TSVpFOwpAQCAtMjQ1Niw2ICsyMzkyLDIxIEBACiAJCQkiYXZhaWxhYmxlLlxuIik7CiAJfQogCisJaWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0ZMQUdTKSA9PSBFWFQ0X01PVU5UX0pPVVJOQUxfREFUQSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HICJFWFQ0LWZzOiBJZ25vcmluZyBkZWxhbGxvYyBvcHRpb24gLSAiCisJCQkJInJlcXVlc3RlZCBkYXRhIGpvdXJuYWxpbmcgbW9kZVxuIik7CisJCWNsZWFyX29wdChzYmktPnNfbW91bnRfb3B0LCBERUxBTExPQyk7CisJfSBlbHNlIGlmICh0ZXN0X29wdChzYiwgREVMQUxMT0MpKQorCQlwcmludGsoS0VSTl9JTkZPICJFWFQ0LWZzOiBkZWxheWVkIGFsbG9jYXRpb24gZW5hYmxlZFxuIik7CisKKwlleHQ0X2V4dF9pbml0KHNiKTsKKwllcnIgPSBleHQ0X21iX2luaXQoc2IsIG5lZWRzX3JlY292ZXJ5KTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUiAiRVhUNC1mczogZmFpbGVkIHRvIGluaXRhbGl6ZSBtYmFsbG9jICglZClcbiIsCisJCSAgICAgICBlcnIpOworCQlnb3RvIGZhaWxlZF9tb3VudDQ7CisJfQorCiAJLyoKIAkgKiBha3BtOiBjb3JlIHJlYWRfc3VwZXIoKSBjYWxscyBpbiBoZXJlIHdpdGggdGhlIHN1cGVyYmxvY2sgbG9ja2VkLgogCSAqIFRoYXQgZGVhZGxvY2tzLCBiZWNhdXNlIG9ycGhhbiBjbGVhbnVwIG5lZWRzIHRvIGxvY2sgdGhlIHN1cGVyYmxvY2sKQEAgLTI0NzUsMjEgKzI0MjYsNiBAQAogCSAgICAgICB0ZXN0X29wdChzYiwgREFUQV9GTEFHUykgPT0gRVhUNF9NT1VOVF9PUkRFUkVEX0RBVEEgPyAib3JkZXJlZCI6CiAJICAgICAgICJ3cml0ZWJhY2siKTsKIAotCWlmICh0ZXN0X29wdChzYiwgREFUQV9GTEFHUykgPT0gRVhUNF9NT1VOVF9KT1VSTkFMX0RBVEEpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiRVhUNC1mczogSWdub3JpbmcgZGVsYWxsb2Mgb3B0aW9uIC0gIgotCQkJCSJyZXF1ZXN0ZWQgZGF0YSBqb3VybmFsaW5nIG1vZGVcbiIpOwotCQljbGVhcl9vcHQoc2JpLT5zX21vdW50X29wdCwgREVMQUxMT0MpOwotCX0gZWxzZSBpZiAodGVzdF9vcHQoc2IsIERFTEFMTE9DKSkKLQkJcHJpbnRrKEtFUk5fSU5GTyAiRVhUNC1mczogZGVsYXllZCBhbGxvY2F0aW9uIGVuYWJsZWRcbiIpOwotCi0JZXh0NF9leHRfaW5pdChzYik7Ci0JZXJyID0gZXh0NF9tYl9pbml0KHNiLCBuZWVkc19yZWNvdmVyeSk7Ci0JaWYgKGVycikgewotCQlwcmludGsoS0VSTl9FUlIgIkVYVDQtZnM6IGZhaWxlZCB0byBpbml0YWxpemUgbWJhbGxvYyAoJWQpXG4iLAotCQkgICAgICAgZXJyKTsKLQkJZ290byBmYWlsZWRfbW91bnQ0OwotCX0KLQogCWxvY2tfa2VybmVsKCk7CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jCmluZGV4IDBhYmUwMmMuLjhiMTE5ZTEgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvY29tbWl0LmMKKysrIGIvZnMvamJkMi9jb21taXQuYwpAQCAtOTk1LDYgKzk5NSw5IEBACiAJfQogCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAKKwlpZiAoam91cm5hbC0+al9jb21taXRfY2FsbGJhY2spCisJCWpvdXJuYWwtPmpfY29tbWl0X2NhbGxiYWNrKGpvdXJuYWwsIGNvbW1pdF90cmFuc2FjdGlvbik7CisKIAl0cmFjZV9tYXJrKGpiZDJfZW5kX2NvbW1pdCwgImRldiAlcyB0cmFuc2FjdGlvbiAlZCBoZWFkICVkIiwKIAkJICAgam91cm5hbC0+al9kZXZuYW1lLCBjb21taXRfdHJhbnNhY3Rpb24tPnRfdGlkLAogCQkgICBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOwpkaWZmIC0tZ2l0IGEvZnMvamJkMi90cmFuc2FjdGlvbi5jIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jCmluZGV4IGU1ZDU0MDUuLjM5Yjc4MDUgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYworKysgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKQEAgLTUyLDYgKzUyLDcgQEAKIAl0cmFuc2FjdGlvbi0+dF9leHBpcmVzID0gamlmZmllcyArIGpvdXJuYWwtPmpfY29tbWl0X2ludGVydmFsOwogCXNwaW5fbG9ja19pbml0KCZ0cmFuc2FjdGlvbi0+dF9oYW5kbGVfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJnRyYW5zYWN0aW9uLT50X2lub2RlX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZ0cmFuc2FjdGlvbi0+dF9wcml2YXRlX2xpc3QpOwogCiAJLyogU2V0IHVwIHRoZSBjb21taXQgdGltZXIgZm9yIHRoZSBuZXcgdHJhbnNhY3Rpb24uICovCiAJam91cm5hbC0+al9jb21taXRfdGltZXIuZXhwaXJlcyA9IHJvdW5kX2ppZmZpZXModHJhbnNhY3Rpb24tPnRfZXhwaXJlcyk7CmRpZmYgLS1naXQgYS9mcy9wYXJ0aXRpb25zL2NoZWNrLmMgYi9mcy9wYXJ0aXRpb25zL2NoZWNrLmMKaW5kZXggZmJlYjJmMy4uY2ZiMGM4MCAxMDA2NDQKLS0tIGEvZnMvcGFydGl0aW9ucy9jaGVjay5jCisrKyBiL2ZzL3BhcnRpdGlvbnMvY2hlY2suYwpAQCAtMTk1LDYgKzE5NSwxNCBAQAogCXJldHVybiBFUlJfUFRSKHJlcyk7CiB9CiAKK3N0YXRpYyBzc2l6ZV90IHBhcnRfcGFydGl0aW9uX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGhkX3N0cnVjdCAqcCA9IGRldl90b19wYXJ0KGRldik7CisKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgcC0+cGFydG5vKTsKK30KKwogc3RhdGljIHNzaXplX3QgcGFydF9zdGFydF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewpAQCAtMjYwLDYgKzI2OCw3IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIERFVklDRV9BVFRSKHBhcnRpdGlvbiwgU19JUlVHTywgcGFydF9wYXJ0aXRpb25fc2hvdywgTlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIoc3RhcnQsIFNfSVJVR08sIHBhcnRfc3RhcnRfc2hvdywgTlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIoc2l6ZSwgU19JUlVHTywgcGFydF9zaXplX3Nob3csIE5VTEwpOwogc3RhdGljIERFVklDRV9BVFRSKHN0YXQsIFNfSVJVR08sIHBhcnRfc3RhdF9zaG93LCBOVUxMKTsKQEAgLTI2OSw2ICsyNzgsNyBAQAogI2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpwYXJ0X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX3BhcnRpdGlvbi5hdHRyLAogCSZkZXZfYXR0cl9zdGFydC5hdHRyLAogCSZkZXZfYXR0cl9zaXplLmF0dHIsCiAJJmRldl9hdHRyX3N0YXQuYXR0ciwKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYXJyYXkuYyBiL2ZzL3Byb2MvYXJyYXkuYwppbmRleCBmNGJjMGU3Li5iYjlmNGIwIDEwMDY0NAotLS0gYS9mcy9wcm9jL2FycmF5LmMKKysrIGIvZnMvcHJvYy9hcnJheS5jCkBAIC0zODgsMjAgKzM4OCwyMCBAQAogCiAJCS8qIGFkZCB1cCBsaXZlIHRocmVhZCBzdGF0cyBhdCB0aGUgZ3JvdXAgbGV2ZWwgKi8KIAkJaWYgKHdob2xlKSB7CisJCQlzdHJ1Y3QgdGFza19jcHV0aW1lIGNwdXRpbWU7CiAJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQgPSB0YXNrOwogCQkJZG8gewogCQkJCW1pbl9mbHQgKz0gdC0+bWluX2ZsdDsKIAkJCQltYWpfZmx0ICs9IHQtPm1hal9mbHQ7Ci0JCQkJdXRpbWUgPSBjcHV0aW1lX2FkZCh1dGltZSwgdGFza191dGltZSh0KSk7Ci0JCQkJc3RpbWUgPSBjcHV0aW1lX2FkZChzdGltZSwgdGFza19zdGltZSh0KSk7CiAJCQkJZ3RpbWUgPSBjcHV0aW1lX2FkZChndGltZSwgdGFza19ndGltZSh0KSk7CiAJCQkJdCA9IG5leHRfdGhyZWFkKHQpOwogCQkJfSB3aGlsZSAodCAhPSB0YXNrKTsKIAogCQkJbWluX2ZsdCArPSBzaWctPm1pbl9mbHQ7CiAJCQltYWpfZmx0ICs9IHNpZy0+bWFqX2ZsdDsKLQkJCXV0aW1lID0gY3B1dGltZV9hZGQodXRpbWUsIHNpZy0+dXRpbWUpOwotCQkJc3RpbWUgPSBjcHV0aW1lX2FkZChzdGltZSwgc2lnLT5zdGltZSk7CisJCQl0aHJlYWRfZ3JvdXBfY3B1dGltZSh0YXNrLCAmY3B1dGltZSk7CisJCQl1dGltZSA9IGNwdXRpbWUudXRpbWU7CisJCQlzdGltZSA9IGNwdXRpbWUuc3RpbWU7CiAJCQlndGltZSA9IGNwdXRpbWVfYWRkKGd0aW1lLCBzaWctPmd0aW1lKTsKIAkJfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm0uaCBiL2luY2x1ZGUvZHJtL2RybS5oCmluZGV4IDM4ZDNjNmIuLmY0NmJhNGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybS5oCkBAIC0zNiw3ICszNiw2IEBACiAjaWZuZGVmIF9EUk1fSF8KICNkZWZpbmUgX0RSTV9IXwogCi0jaWYgZGVmaW5lZChfX2xpbnV4X18pCiAjaWYgZGVmaW5lZChfX0tFUk5FTF9fKQogI2VuZGlmCiAjaW5jbHVkZSA8YXNtL2lvY3RsLmg+CQkvKiBGb3IgX0lPKiBtYWNyb3MgKi8KQEAgLTQ2LDIyICs0NSw2IEBACiAjZGVmaW5lIERSTV9JT0NfV1JJVEUJCV9JT0NfV1JJVEUKICNkZWZpbmUgRFJNX0lPQ19SRUFEV1JJVEUJX0lPQ19SRUFEfF9JT0NfV1JJVEUKICNkZWZpbmUgRFJNX0lPQyhkaXIsIGdyb3VwLCBuciwgc2l6ZSkgX0lPQyhkaXIsIGdyb3VwLCBuciwgc2l6ZSkKLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKElOX01PRFVMRSkKLS8qIFByZXZlbnQgbmFtZSBjb2xsaXNpb24gd2hlbiBpbmNsdWRpbmcgc3lzL2lvY2NvbS5oICovCi0jdW5kZWYgaW9jdGwKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0jZGVmaW5lIGlvY3RsKGEsYixjKQkJeGY4NmlvY3RsKGEsYixjKQotI2Vsc2UKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0jZW5kaWYJCQkJLyogX19GcmVlQlNEX18gJiYgeGY4NmlvY3RsICovCi0jZGVmaW5lIERSTV9JT0NUTF9OUihuKQkJKChuKSAmIDB4ZmYpCi0jZGVmaW5lIERSTV9JT0NfVk9JRAkJSU9DX1ZPSUQKLSNkZWZpbmUgRFJNX0lPQ19SRUFECQlJT0NfT1VUCi0jZGVmaW5lIERSTV9JT0NfV1JJVEUJCUlPQ19JTgotI2RlZmluZSBEUk1fSU9DX1JFQURXUklURQlJT0NfSU5PVVQKLSNkZWZpbmUgRFJNX0lPQyhkaXIsIGdyb3VwLCBuciwgc2l6ZSkgX0lPQyhkaXIsIGdyb3VwLCBuciwgc2l6ZSkKLSNlbmRpZgogCiAjZGVmaW5lIERSTV9NQUpPUiAgICAgICAyMjYKICNkZWZpbmUgRFJNX01BWF9NSU5PUiAgIDE1CkBAIC00NzEsNiArNDU0LDcgQEAKIGVudW0gZHJtX3ZibGFua19zZXFfdHlwZSB7CiAJX0RSTV9WQkxBTktfQUJTT0xVVEUgPSAweDAsCS8qKjwgV2FpdCBmb3Igc3BlY2lmaWMgdmJsYW5rIHNlcXVlbmNlIG51bWJlciAqLwogCV9EUk1fVkJMQU5LX1JFTEFUSVZFID0gMHgxLAkvKio8IFdhaXQgZm9yIGdpdmVuIG51bWJlciBvZiB2YmxhbmtzICovCisJX0RSTV9WQkxBTktfRkxJUCA9IDB4ODAwMDAwMCwgICAvKio8IFNjaGVkdWxlZCBidWZmZXIgc3dhcCBzaG91bGQgZmxpcCAqLwogCV9EUk1fVkJMQU5LX05FWFRPTk1JU1MgPSAweDEwMDAwMDAwLAkvKio8IElmIG1pc3NlZCwgd2FpdCBmb3IgbmV4dCB2YmxhbmsgKi8KIAlfRFJNX1ZCTEFOS19TRUNPTkRBUlkgPSAweDIwMDAwMDAwLAkvKio8IFNlY29uZGFyeSBkaXNwbGF5IGNvbnRyb2xsZXIgKi8KIAlfRFJNX1ZCTEFOS19TSUdOQUwgPSAweDQwMDAwMDAwCS8qKjwgU2VuZCBzaWduYWwgaW5zdGVhZCBvZiBibG9ja2luZyAqLwpAQCAtNTAzLDYgKzQ4NywxOSBAQAogCXN0cnVjdCBkcm1fd2FpdF92YmxhbmtfcmVwbHkgcmVwbHk7CiB9OwogCisjZGVmaW5lIF9EUk1fUFJFX01PREVTRVQgMQorI2RlZmluZSBfRFJNX1BPU1RfTU9ERVNFVCAyCisKKy8qKgorICogRFJNX0lPQ1RMX01PREVTRVRfQ1RMIGlvY3RsIGFyZ3VtZW50IHR5cGUKKyAqCisgKiBcc2EgZHJtTW9kZXNldEN0bCgpLgorICovCitzdHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKKwl1aW50MzJfdCBjcnRjOworCXVpbnQzMl90IGNtZDsKK307CisKIC8qKgogICogRFJNX0lPQ1RMX0FHUF9FTkFCTEUgaW9jdGwgYXJndW1lbnQgdHlwZS4KICAqCkBAIC01NzMsNiArNTcwLDM0IEBACiAJaW50IGRybV9kZF9taW5vcjsKIH07CiAKKy8qKiBEUk1fSU9DVExfR0VNX0NMT1NFIGlvY3RsIGFyZ3VtZW50IHR5cGUgKi8KK3N0cnVjdCBkcm1fZ2VtX2Nsb3NlIHsKKwkvKiogSGFuZGxlIG9mIHRoZSBvYmplY3QgdG8gYmUgY2xvc2VkLiAqLworCXVpbnQzMl90IGhhbmRsZTsKKwl1aW50MzJfdCBwYWQ7Cit9OworCisvKiogRFJNX0lPQ1RMX0dFTV9GTElOSyBpb2N0bCBhcmd1bWVudCB0eXBlICovCitzdHJ1Y3QgZHJtX2dlbV9mbGluayB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyBuYW1lZCAqLworCXVpbnQzMl90IGhhbmRsZTsKKworCS8qKiBSZXR1cm5lZCBnbG9iYWwgbmFtZSAqLworCXVpbnQzMl90IG5hbWU7Cit9OworCisvKiogRFJNX0lPQ1RMX0dFTV9PUEVOIGlvY3RsIGFyZ3VtZW50IHR5cGUgKi8KK3N0cnVjdCBkcm1fZ2VtX29wZW4geworCS8qKiBOYW1lIG9mIG9iamVjdCBiZWluZyBvcGVuZWQgKi8KKwl1aW50MzJfdCBuYW1lOworCisJLyoqIFJldHVybmVkIGhhbmRsZSBmb3IgdGhlIG9iamVjdCAqLworCXVpbnQzMl90IGhhbmRsZTsKKworCS8qKiBSZXR1cm5lZCBzaXplIG9mIHRoZSBvYmplY3QgKi8KKwl1aW50NjRfdCBzaXplOworfTsKKwogI2RlZmluZSBEUk1fSU9DVExfQkFTRQkJCSdkJwogI2RlZmluZSBEUk1fSU8obnIpCQkJX0lPKERSTV9JT0NUTF9CQVNFLG5yKQogI2RlZmluZSBEUk1fSU9SKG5yLHR5cGUpCQlfSU9SKERSTV9JT0NUTF9CQVNFLG5yLHR5cGUpCkBAIC01ODcsNiArNjEyLDEwIEBACiAjZGVmaW5lIERSTV9JT0NUTF9HRVRfQ0xJRU5UICAgICAgICAgICAgRFJNX0lPV1IoMHgwNSwgc3RydWN0IGRybV9jbGllbnQpCiAjZGVmaW5lIERSTV9JT0NUTF9HRVRfU1RBVFMgICAgICAgICAgICAgRFJNX0lPUiggMHgwNiwgc3RydWN0IGRybV9zdGF0cykKICNkZWZpbmUgRFJNX0lPQ1RMX1NFVF9WRVJTSU9OCQlEUk1fSU9XUigweDA3LCBzdHJ1Y3QgZHJtX3NldF92ZXJzaW9uKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERVNFVF9DVEwgICAgICAgICAgIERSTV9JT1coMHgwOCwgc3RydWN0IGRybV9tb2Rlc2V0X2N0bCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0dFTV9DTE9TRQkJRFJNX0lPVyAoMHgwOSwgc3RydWN0IGRybV9nZW1fY2xvc2UpCisjZGVmaW5lIERSTV9JT0NUTF9HRU1fRkxJTksJCURSTV9JT1dSKDB4MGEsIHN0cnVjdCBkcm1fZ2VtX2ZsaW5rKQorI2RlZmluZSBEUk1fSU9DVExfR0VNX09QRU4JCURSTV9JT1dSKDB4MGIsIHN0cnVjdCBkcm1fZ2VtX29wZW4pCiAKICNkZWZpbmUgRFJNX0lPQ1RMX1NFVF9VTklRVUUJCURSTV9JT1coIDB4MTAsIHN0cnVjdCBkcm1fdW5pcXVlKQogI2RlZmluZSBEUk1fSU9DVExfQVVUSF9NQUdJQwkJRFJNX0lPVyggMHgxMSwgc3RydWN0IGRybV9hdXRoKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCmluZGV4IDFjMWIxM2UuLjU5Yzc5NmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAorKysgYi9pbmNsdWRlL2RybS9kcm1QLmgKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2RlZmluZSBEUklWRVJfRE1BX1FVRVVFICAgMHgyMDAKICNkZWZpbmUgRFJJVkVSX0ZCX0RNQSAgICAgIDB4NDAwCiAjZGVmaW5lIERSSVZFUl9JUlFfVkJMMiAgICAweDgwMAorI2RlZmluZSBEUklWRVJfR0VNICAgICAgICAgMHgxMDAwCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKiBcbmFtZSBCZWdpbiB0aGUgRFJNLi4uICovCkBAIC0zODcsNiArMzg4LDEwIEBACiAJc3RydWN0IGRybV9taW5vciAqbWlub3I7CiAJaW50IHJlbW92ZV9hdXRoX29uX2Nsb3NlOwogCXVuc2lnbmVkIGxvbmcgbG9ja19jb3VudDsKKwkvKiogTWFwcGluZyBvZiBtbSBvYmplY3QgaGFuZGxlcyB0byBvYmplY3QgcG9pbnRlcnMuICovCisJc3RydWN0IGlkciBvYmplY3RfaWRyOworCS8qKiBMb2NrIGZvciBzeW5jaHJvbml6YXRpb24gb2YgYWNjZXNzIHRvIG9iamVjdF9pZHIuICovCisJc3BpbmxvY2tfdCB0YWJsZV9sb2NrOwogCXN0cnVjdCBmaWxlICpmaWxwOwogCXZvaWQgKmRyaXZlcl9wcml2OwogfTsKQEAgLTU1OCw2ICs1NjMsNTYgQEAKIH07CiAKIC8qKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyB0aGUgZHJtX21tIG1lbW9yeSBvYmplY3QsIHdoaWNoIHdpbGwgYmUgdXNlZCBieSB0aGUKKyAqIERSTSBmb3IgaXRzIGJ1ZmZlciBvYmplY3RzLgorICovCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgeworCS8qKiBSZWZlcmVuY2UgY291bnQgb2YgdGhpcyBvYmplY3QgKi8KKwlzdHJ1Y3Qga3JlZiByZWZjb3VudDsKKworCS8qKiBIYW5kbGUgY291bnQgb2YgdGhpcyBvYmplY3QuIEVhY2ggaGFuZGxlIGFsc28gaG9sZHMgYSByZWZlcmVuY2UgKi8KKwlzdHJ1Y3Qga3JlZiBoYW5kbGVjb3VudDsKKworCS8qKiBSZWxhdGVkIGRybSBkZXZpY2UgKi8KKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCisJLyoqIEZpbGUgcmVwcmVzZW50aW5nIHRoZSBzaG1lbSBzdG9yYWdlICovCisJc3RydWN0IGZpbGUgKmZpbHA7CisKKwkvKioKKwkgKiBTaXplIG9mIHRoZSBvYmplY3QsIGluIGJ5dGVzLiAgSW1tdXRhYmxlIG92ZXIgdGhlIG9iamVjdCdzCisJICogbGlmZXRpbWUuCisJICovCisJc2l6ZV90IHNpemU7CisKKwkvKioKKwkgKiBHbG9iYWwgbmFtZSBmb3IgdGhpcyBvYmplY3QsIHN0YXJ0cyBhdCAxLiAwIG1lYW5zIHVubmFtZWQuCisJICogQWNjZXNzIGlzIGNvdmVyZWQgYnkgdGhlIG9iamVjdF9uYW1lX2xvY2sgaW4gdGhlIHJlbGF0ZWQgZHJtX2RldmljZQorCSAqLworCWludCBuYW1lOworCisJLyoqCisJICogTWVtb3J5IGRvbWFpbnMuIFRoZXNlIG1vbml0b3Igd2hpY2ggY2FjaGVzIGNvbnRhaW4gcmVhZC93cml0ZSBkYXRhCisJICogcmVsYXRlZCB0byB0aGUgb2JqZWN0LiBXaGVuIHRyYW5zaXRpb25pbmcgZnJvbSBvbmUgc2V0IG9mIGRvbWFpbnMKKwkgKiB0byBhbm90aGVyLCB0aGUgZHJpdmVyIGlzIGNhbGxlZCB0byBlbnN1cmUgdGhhdCBjYWNoZXMgYXJlIHN1aXRhYmx5CisJICogZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQKKwkgKi8KKwl1aW50MzJfdCByZWFkX2RvbWFpbnM7CisJdWludDMyX3Qgd3JpdGVfZG9tYWluOworCisJLyoqCisJICogV2hpbGUgdmFsaWRhdGluZyBhbiBleGVjIG9wZXJhdGlvbiwgdGhlCisJICogbmV3IHJlYWQvd3JpdGUgZG9tYWluIHZhbHVlcyBhcmUgY29tcHV0ZWQgaGVyZS4KKwkgKiBUaGV5IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGFib3ZlIHZhbHVlcworCSAqIGF0IHRoZSBwb2ludCB0aGF0IGFueSBjYWNoZSBmbHVzaGluZyBvY2N1cnMKKwkgKi8KKwl1aW50MzJfdCBwZW5kaW5nX3JlYWRfZG9tYWluczsKKwl1aW50MzJfdCBwZW5kaW5nX3dyaXRlX2RvbWFpbjsKKworCXZvaWQgKmRyaXZlcl9wcml2YXRlOworfTsKKworLyoqCiAgKiBEUk0gZHJpdmVyIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50IHRoZSBjb21tb24gY29kZSBmb3IKICAqIGEgZmFtaWx5IG9mIGNhcmRzLiBUaGVyZSB3aWxsIG9uZSBkcm1fZGV2aWNlIGZvciBlYWNoIGNhcmQgcHJlc2VudAogICogaW4gdGhpcyBmYW1pbHkKQEAgLTU4MCwxMSArNjM1LDU0IEBACiAJaW50ICgqa2VybmVsX2NvbnRleHRfc3dpdGNoKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG9sZCwKIAkJCQkgICAgICBpbnQgbmV3KTsKIAl2b2lkICgqa2VybmVsX2NvbnRleHRfc3dpdGNoX3VubG9jaykgKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotCWludCAoKnZibGFua193YWl0KSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSk7Ci0JaW50ICgqdmJsYW5rX3dhaXQyKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50ICpzZXF1ZW5jZSk7CiAJaW50ICgqZHJpX2xpYnJhcnlfbmFtZSkgKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNoYXIgKmJ1Zik7CiAKIAkvKioKKwkgKiBnZXRfdmJsYW5rX2NvdW50ZXIgLSBnZXQgcmF3IGhhcmR3YXJlIHZibGFuayBjb3VudGVyCisJICogQGRldjogRFJNIGRldmljZQorCSAqIEBjcnRjOiBjb3VudGVyIHRvIGZldGNoCisJICoKKwkgKiBEcml2ZXIgY2FsbGJhY2sgZm9yIGZldGNoaW5nIGEgcmF3IGhhcmR3YXJlIHZibGFuayBjb3VudGVyCisJICogZm9yIEBjcnRjLiAgSWYgYSBkZXZpY2UgZG9lc24ndCBoYXZlIGEgaGFyZHdhcmUgY291bnRlciwgdGhlCisJICogZHJpdmVyIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB2YWx1ZSBvZiBkcm1fdmJsYW5rX2NvdW50IGFuZAorCSAqIG1ha2UgdGhlIGVuYWJsZV92YmxhbmsoKSBhbmQgZGlzYWJsZV92YmxhbmsoKSBob29rcyBpbnRvIG5vLW9wcywKKwkgKiBsZWF2aW5nIGludGVycnVwdHMgZW5hYmxlZCBhdCBhbGwgdGltZXMuCisJICoKKwkgKiBXcmFwYXJvdW5kIGhhbmRsaW5nIGFuZCBsb3NzIG9mIGV2ZW50cyBkdWUgdG8gbW9kZXNldHRpbmcgaXMgZGVhbHQKKwkgKiB3aXRoIGluIHRoZSBEUk0gY29yZSBjb2RlLgorCSAqCisJICogUkVUVVJOUworCSAqIFJhdyB2YmxhbmsgY291bnRlciB2YWx1ZS4KKwkgKi8KKwl1MzIgKCpnZXRfdmJsYW5rX2NvdW50ZXIpIChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CisKKwkvKioKKwkgKiBlbmFibGVfdmJsYW5rIC0gZW5hYmxlIHZibGFuayBpbnRlcnJ1cHQgZXZlbnRzCisJICogQGRldjogRFJNIGRldmljZQorCSAqIEBjcnRjOiB3aGljaCBpcnEgdG8gZW5hYmxlCisJICoKKwkgKiBFbmFibGUgdmJsYW5rIGludGVycnVwdHMgZm9yIEBjcnRjLiAgSWYgdGhlIGRldmljZSBkb2Vzbid0IGhhdmUKKwkgKiBhIGhhcmR3YXJlIHZibGFuayBjb3VudGVyLCB0aGlzIHJvdXRpbmUgc2hvdWxkIGJlIGEgbm8tb3AsIHNpbmNlCisJICogaW50ZXJydXB0cyB3aWxsIGhhdmUgdG8gc3RheSBvbiB0byBrZWVwIHRoZSBjb3VudCBhY2N1cmF0ZS4KKwkgKgorCSAqIFJFVFVSTlMKKwkgKiBaZXJvIG9uIHN1Y2Nlc3MsIGFwcHJvcHJpYXRlIGVycm5vIGlmIHRoZSBnaXZlbiBAY3J0YydzIHZibGFuaworCSAqIGludGVycnVwdCBjYW5ub3QgYmUgZW5hYmxlZC4KKwkgKi8KKwlpbnQgKCplbmFibGVfdmJsYW5rKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworCisJLyoqCisJICogZGlzYWJsZV92YmxhbmsgLSBkaXNhYmxlIHZibGFuayBpbnRlcnJ1cHQgZXZlbnRzCisJICogQGRldjogRFJNIGRldmljZQorCSAqIEBjcnRjOiB3aGljaCBpcnEgdG8gZW5hYmxlCisJICoKKwkgKiBEaXNhYmxlIHZibGFuayBpbnRlcnJ1cHRzIGZvciBAY3J0Yy4gIElmIHRoZSBkZXZpY2UgZG9lc24ndCBoYXZlCisJICogYSBoYXJkd2FyZSB2YmxhbmsgY291bnRlciwgdGhpcyByb3V0aW5lIHNob3VsZCBiZSBhIG5vLW9wLCBzaW5jZQorCSAqIGludGVycnVwdHMgd2lsbCBoYXZlIHRvIHN0YXkgb24gdG8ga2VlcCB0aGUgY291bnQgYWNjdXJhdGUuCisJICovCisJdm9pZCAoKmRpc2FibGVfdmJsYW5rKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworCisJLyoqCiAJICogQ2FsbGVkIGJ5IFxjIGRybV9kZXZpY2VfaXNfYWdwLiAgVHlwaWNhbGx5IHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEKIAkgKiBjYXJkIGlzIHJlYWxseSBhdHRhY2hlZCB0byBBR1Agb3Igbm90LgogCSAqCkBAIC02MDEsNyArNjk5LDcgQEAKIAogCWlycXJldHVybl90KCppcnFfaGFuZGxlcikgKERSTV9JUlFfQVJHUyk7CiAJdm9pZCAoKmlycV9wcmVpbnN0YWxsKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci0Jdm9pZCAoKmlycV9wb3N0aW5zdGFsbCkgKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCWludCAoKmlycV9wb3N0aW5zdGFsbCkgKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCXZvaWQgKCppcnFfdW5pbnN0YWxsKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAJdm9pZCAoKnJlY2xhaW1fYnVmZmVycykgKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1fZmlsZSAqIGZpbGVfcHJpdik7CkBAIC02MTQsNiArNzEyLDE4IEBACiAJdm9pZCAoKnNldF92ZXJzaW9uKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgICAgc3RydWN0IGRybV9zZXRfdmVyc2lvbiAqc3YpOwogCisJaW50ICgqcHJvY19pbml0KShzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7CisJdm9pZCAoKnByb2NfY2xlYW51cCkoc3RydWN0IGRybV9taW5vciAqbWlub3IpOworCisJLyoqCisJICogRHJpdmVyLXNwZWNpZmljIGNvbnN0cnVjdG9yIGZvciBkcm1fZ2VtX29iamVjdHMsIHRvIHNldCB1cAorCSAqIG9iai0+ZHJpdmVyX3ByaXZhdGUuCisJICoKKwkgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4KKwkgKi8KKwlpbnQgKCpnZW1faW5pdF9vYmplY3QpIChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CisJdm9pZCAoKmdlbV9mcmVlX29iamVjdCkgKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKKwogCWludCBtYWpvcjsKIAlpbnQgbWlub3I7CiAJaW50IHBhdGNobGV2ZWw7CkBAIC03MTQsNyArODI0LDYgQEAKIAogCS8qKiBcbmFtZSBDb250ZXh0IHN1cHBvcnQgKi8KIAkvKkB7ICovCi0JaW50IGlycTsJCQkvKio8IEludGVycnVwdCB1c2VkIGJ5IGJvYXJkICovCiAJaW50IGlycV9lbmFibGVkOwkJLyoqPCBUcnVlIGlmIGlycSBoYW5kbGVyIGlzIGVuYWJsZWQgKi8KIAlfX3ZvbGF0aWxlX18gbG9uZyBjb250ZXh0X2ZsYWc7CS8qKjwgQ29udGV4dCBzd2FwcGluZyBmbGFnICovCiAJX192b2xhdGlsZV9fIGxvbmcgaW50ZXJydXB0X2ZsYWc7IC8qKjwgSW50ZXJydXB0aW9uIGhhbmRsZXIgZmxhZyAqLwpAQCAtNzMwLDEzICs4MzksMjggQEAKIAkvKiogXG5hbWUgVkJMQU5LIElSUSBzdXBwb3J0ICovCiAJLypAeyAqLwogCi0Jd2FpdF9xdWV1ZV9oZWFkX3QgdmJsX3F1ZXVlOwkvKio8IFZCTEFOSyB3YWl0IHF1ZXVlICovCi0JYXRvbWljX3QgdmJsX3JlY2VpdmVkOwotCWF0b21pY190IHZibF9yZWNlaXZlZDI7CQkvKio8IG51bWJlciBvZiBzZWNvbmRhcnkgVkJMQU5LIGludGVycnVwdHMgKi8KKwkvKgorCSAqIEF0IGxvYWQgdGltZSwgZGlzYWJsaW5nIHRoZSB2YmxhbmsgaW50ZXJydXB0IHdvbid0IGJlIGFsbG93ZWQgc2luY2UKKwkgKiBvbGQgY2xpZW50cyBtYXkgbm90IGNhbGwgdGhlIG1vZGVzZXQgaW9jdGwgYW5kIHRoZXJlZm9yZSBtaXNiZWhhdmUuCisJICogT25jZSB0aGUgbW9kZXNldCBpb2N0bCAqaGFzKiBiZWVuIGNhbGxlZCB0aG91Z2gsIHdlIGNhbiBzYWZlbHkKKwkgKiBkaXNhYmxlIHRoZW0gd2hlbiB1bnVzZWQuCisJICovCisJaW50IHZibGFua19kaXNhYmxlX2FsbG93ZWQ7CisKKwl3YWl0X3F1ZXVlX2hlYWRfdCAqdmJsX3F1ZXVlOyAgIC8qKjwgVkJMQU5LIHdhaXQgcXVldWUgKi8KKwlhdG9taWNfdCAqX3ZibGFua19jb3VudDsgICAgICAgIC8qKjwgbnVtYmVyIG9mIFZCTEFOSyBpbnRlcnJ1cHRzIChkcml2ZXIgbXVzdCBhbGxvYyB0aGUgcmlnaHQgbnVtYmVyIG9mIGNvdW50ZXJzKSAqLwogCXNwaW5sb2NrX3QgdmJsX2xvY2s7Ci0Jc3RydWN0IGxpc3RfaGVhZCB2Ymxfc2lnczsJCS8qKjwgc2lnbmFsIGxpc3QgdG8gc2VuZCBvbiBWQkxBTksgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIHZibF9zaWdzMjsJLyoqPCBzaWduYWxzIHRvIHNlbmQgb24gc2Vjb25kYXJ5IFZCTEFOSyAqLwotCXVuc2lnbmVkIGludCB2YmxfcGVuZGluZzsKKwlzdHJ1Y3QgbGlzdF9oZWFkICp2Ymxfc2lnczsJLyoqPCBzaWduYWwgbGlzdCB0byBzZW5kIG9uIFZCTEFOSyAqLworCWF0b21pY190IHZibF9zaWduYWxfcGVuZGluZzsgICAgLyogbnVtYmVyIG9mIHNpZ25hbHMgcGVuZGluZyBvbiBhbGwgY3J0Y3MqLworCWF0b21pY190ICp2YmxhbmtfcmVmY291bnQ7ICAgICAgLyogbnVtYmVyIG9mIHVzZXJzIG9mIHZibGFuayBpbnRlcnJ1cHRzcGVyIGNydGMgKi8KKwl1MzIgKmxhc3RfdmJsYW5rOyAgICAgICAgICAgICAgIC8qIHByb3RlY3RlZCBieSBkZXYtPnZibF9sb2NrLCB1c2VkICovCisJCQkJCS8qIGZvciB3cmFwYXJvdW5kIGhhbmRsaW5nICovCisJaW50ICp2YmxhbmtfZW5hYmxlZDsgICAgICAgICAgICAvKiBzbyB3ZSBkb24ndCBjYWxsIGVuYWJsZSBtb3JlIHRoYW4KKwkJCQkJICAgb25jZSBwZXIgZGlzYWJsZSAqLworCWludCAqdmJsYW5rX2lubW9kZXNldDsgICAgICAgICAgLyogRGlzcGxheSBkcml2ZXIgaXMgc2V0dGluZyBtb2RlICovCisJc3RydWN0IHRpbWVyX2xpc3QgdmJsYW5rX2Rpc2FibGVfdGltZXI7CisKKwl1MzIgbWF4X3ZibGFua19jb3VudDsgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB2YmxhbmsgY291bnRlciByZWdpc3RlciAqLwogCXNwaW5sb2NrX3QgdGFza2xldF9sb2NrOwkvKio8IEZvciBkcm1fbG9ja2VkX3Rhc2tsZXQgKi8KIAl2b2lkICgqbG9ja2VkX3Rhc2tsZXRfZnVuYykoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKQEAgLTc1Nyw2ICs4ODEsNyBAQAogCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZTsKICNlbmRpZgogCXN0cnVjdCBkcm1fc2dfbWVtICpzZzsJLyoqPCBTY2F0dGVyIGdhdGhlciBtZW1vcnkgKi8KKwlpbnQgbnVtX2NydGNzOyAgICAgICAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIENSVENzIG9uIHRoaXMgZGV2aWNlICovCiAJdm9pZCAqZGV2X3ByaXZhdGU7CQkvKio8IGRldmljZSBwcml2YXRlIGRhdGEgKi8KIAlzdHJ1Y3QgZHJtX3NpZ2RhdGEgc2lnZGF0YTsJICAgLyoqPCBGb3IgYmxvY2tfYWxsX3NpZ25hbHMgKi8KIAlzaWdzZXRfdCBzaWdtYXNrOwpAQCAtNzcxLDggKzg5NiwyOSBAQAogCXNwaW5sb2NrX3QgZHJ3X2xvY2s7CiAJc3RydWN0IGlkciBkcndfaWRyOwogCS8qQH0gKi8KKworCS8qKiBcbmFtZSBHRU0gaW5mb3JtYXRpb24gKi8KKwkvKkB7ICovCisJc3BpbmxvY2tfdCBvYmplY3RfbmFtZV9sb2NrOworCXN0cnVjdCBpZHIgb2JqZWN0X25hbWVfaWRyOworCWF0b21pY190IG9iamVjdF9jb3VudDsKKwlhdG9taWNfdCBvYmplY3RfbWVtb3J5OworCWF0b21pY190IHBpbl9jb3VudDsKKwlhdG9taWNfdCBwaW5fbWVtb3J5OworCWF0b21pY190IGd0dF9jb3VudDsKKwlhdG9taWNfdCBndHRfbWVtb3J5OworCXVpbnQzMl90IGd0dF90b3RhbDsKKwl1aW50MzJfdCBpbnZhbGlkYXRlX2RvbWFpbnM7ICAgIC8qIGRvbWFpbnMgcGVuZGluZyBpbnZhbGlkYXRpb24gKi8KKwl1aW50MzJfdCBmbHVzaF9kb21haW5zOyAgICAgICAgIC8qIGRvbWFpbnMgcGVuZGluZyBmbHVzaCAqLworCS8qQH0gKi8KKwogfTsKIAorc3RhdGljIGlubGluZSBpbnQgZHJtX2Rldl90b19pcnEoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gZGV2LT5wZGV2LT5pcnE7Cit9CisKIHN0YXRpYyBfX2lubGluZV9fIGludCBkcm1fY29yZV9jaGVja19mZWF0dXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgaW50IGZlYXR1cmUpCiB7CkBAIC04NjcsNiArMTAxMywxMSBAQAogZXh0ZXJuIERSTV9BR1BfTUVNICpkcm1fYWxsb2NfYWdwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwYWdlcywgdTMyIHR5cGUpOwogZXh0ZXJuIGludCBkcm1fZnJlZV9hZ3AoRFJNX0FHUF9NRU0gKiBoYW5kbGUsIGludCBwYWdlcyk7CiBleHRlcm4gaW50IGRybV9iaW5kX2FncChEUk1fQUdQX01FTSAqIGhhbmRsZSwgdW5zaWduZWQgaW50IHN0YXJ0KTsKK2V4dGVybiBEUk1fQUdQX01FTSAqZHJtX2FncF9iaW5kX3BhZ2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzLAorCQkJCSAgICAgICB1aW50MzJfdCBndHRfb2Zmc2V0LAorCQkJCSAgICAgICB1aW50MzJfdCB0eXBlKTsKIGV4dGVybiBpbnQgZHJtX3VuYmluZF9hZ3AoRFJNX0FHUF9NRU0gKiBoYW5kbGUpOwogCiAJCQkJLyogTWlzYy4gSU9DVEwgc3VwcG9ydCAoZHJtX2lvY3RsLmgpICovCkBAIC05MjksNiArMTA4MCw5IEBACiBleHRlcm4gaW50IGRybV9hdXRobWFnaWMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiAKKy8qIENhY2hlIG1hbmFnZW1lbnQgKGRybV9jYWNoZS5jKSAqLwordm9pZCBkcm1fY2xmbHVzaF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZXNbXSwgdW5zaWduZWQgbG9uZyBudW1fcGFnZXMpOworCiAJCQkJLyogTG9ja2luZyBJT0NUTCBzdXBwb3J0IChkcm1fbG9jay5oKSAqLwogZXh0ZXJuIGludCBkcm1fbG9jayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwpAQCAtOTg1LDE1ICsxMTM5LDI1IEBACiBleHRlcm4gaW50IGRybV9jb250cm9sKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBleHRlcm4gaXJxcmV0dXJuX3QgZHJtX2lycV9oYW5kbGVyKERSTV9JUlFfQVJHUyk7CitleHRlcm4gaW50IGRybV9pcnFfaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgZHJtX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBkcm1fZHJpdmVyX2lycV9wcmVpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgZHJtX2RyaXZlcl9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBkcm1fZHJpdmVyX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKK2V4dGVybiBpbnQgZHJtX3ZibGFua19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBudW1fY3J0Y3MpOwogZXh0ZXJuIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKKwkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CiBleHRlcm4gaW50IGRybV92Ymxhbmtfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgKnZibF9zZXEpOwotZXh0ZXJuIHZvaWQgZHJtX3ZibF9zZW5kX3NpZ25hbHMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZCBkcm1fbG9ja2VkX3Rhc2tsZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgICB2b2lkKCpmdW5jKShzdHJ1Y3QgZHJtX2RldmljZSAqKSk7CitleHRlcm4gdTMyIGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIHZvaWQgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gdm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CisvKiBNb2Rlc2V0dGluZyBzdXBwb3J0ICovCitleHRlcm4gaW50IGRybV9tb2Rlc2V0X2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIHZvaWQgZHJtX2xvY2tlZF90YXNrbGV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQoKmZ1bmMpKHN0cnVjdCBkcm1fZGV2aWNlKikpOwogCiAJCQkJLyogQUdQL0dBUlQgc3VwcG9ydCAoZHJtX2FncHN1cHBvcnQuaCkgKi8KQEAgLTEwMjYsNiArMTE5MCw3IEBACiBleHRlcm4gaW50IGRybV9hZ3BfZnJlZV9tZW1vcnkoRFJNX0FHUF9NRU0gKiBoYW5kbGUpOwogZXh0ZXJuIGludCBkcm1fYWdwX2JpbmRfbWVtb3J5KERSTV9BR1BfTUVNICogaGFuZGxlLCBvZmZfdCBzdGFydCk7CiBleHRlcm4gaW50IGRybV9hZ3BfdW5iaW5kX21lbW9yeShEUk1fQUdQX01FTSAqIGhhbmRsZSk7CitleHRlcm4gdm9pZCBkcm1fYWdwX2NoaXBzZXRfZmx1c2goc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIAkJCQkvKiBTdHViIHN1cHBvcnQgKGRybV9zdHViLmgpICovCiBleHRlcm4gaW50IGRybV9nZXRfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50LApAQCAtMTA4OCw2ICsxMjUzLDY2IEBACiBleHRlcm4gaW50IGRybV9tbV9yZW1vdmVfc3BhY2VfZnJvbV90YWlsKHN0cnVjdCBkcm1fbW0gKm1tLCB1bnNpZ25lZCBsb25nIHNpemUpOwogZXh0ZXJuIGludCBkcm1fbW1fYWRkX3NwYWNlX3RvX3RhaWwoc3RydWN0IGRybV9tbSAqbW0sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKKy8qIEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyIGxpYnJhcnkgZnVuY3Rpb25zIChkcm1fZ2VtLmMpICovCitpbnQgZHJtX2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBkcm1fZ2VtX29iamVjdF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKTsKK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9vYmplY3RfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJICAgIHNpemVfdCBzaXplKTsKK3ZvaWQgZHJtX2dlbV9vYmplY3RfaGFuZGxlX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpOworCitzdGF0aWMgaW5saW5lIHZvaWQKK2RybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlrcmVmX2dldCgmb2JqLT5yZWZjb3VudCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJaWYgKG9iaiA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX2dlbV9vYmplY3RfZnJlZSk7Cit9CisKK2ludCBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCisJCQkgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQkJICBpbnQgKmhhbmRsZXApOworCitzdGF0aWMgaW5saW5lIHZvaWQKK2RybV9nZW1fb2JqZWN0X2hhbmRsZV9yZWZlcmVuY2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7CisJa3JlZl9nZXQoJm9iai0+aGFuZGxlY291bnQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2RybV9nZW1fb2JqZWN0X2hhbmRsZV91bnJlZmVyZW5jZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybjsKKworCS8qCisJICogTXVzdCBidW1wIGhhbmRsZSBjb3VudCBmaXJzdCBhcyB0aGlzIG1heSBiZSB0aGUgbGFzdAorCSAqIHJlZiwgaW4gd2hpY2ggY2FzZSB0aGUgb2JqZWN0IHdvdWxkIGRpc2FwcGVhciBiZWZvcmUgd2UKKwkgKiBjaGVja2VkIGZvciBhIG5hbWUKKwkgKi8KKwlrcmVmX3B1dCgmb2JqLT5oYW5kbGVjb3VudCwgZHJtX2dlbV9vYmplY3RfaGFuZGxlX2ZyZWUpOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7Cit9CisKK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9vYmplY3RfbG9va3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxwLAorCQkJCQkgICAgIGludCBoYW5kbGUpOworaW50IGRybV9nZW1fY2xvc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCBkcm1fZ2VtX2ZsaW5rX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgZHJtX2dlbV9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cit2b2lkIGRybV9nZW1fb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7Cit2b2lkIGRybV9nZW1fcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CisKIGV4dGVybiB2b2lkIGRybV9jb3JlX2lvcmVtYXAoc3RydWN0IGRybV9tYXAgKm1hcCwgc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBkcm1fY29yZV9pb3JlbWFwX3djKHN0cnVjdCBkcm1fbWFwICptYXAsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgZHJtX2NvcmVfaW9yZW1hcGZyZWUoc3RydWN0IGRybV9tYXAgKm1hcCwgc3RydWN0IGRybV9kZXZpY2UgKmRldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGNpaWRzLmggYi9pbmNsdWRlL2RybS9kcm1fcGNpaWRzLmgKaW5kZXggMTM1YmQxOS4uZGEwNDEwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BjaWlkcy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9wY2lpZHMuaApAQCAtODQsMTggKzg0LDE4IEBACiAJezB4MTAwMiwgMHg1NDYyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWMzgwfFJBREVPTl9JU19NT0JJTElUWX0sIFwKIAl7MHgxMDAyLCAweDU0NjQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlYzODB8UkFERU9OX0lTX01PQklMSVRZfSwgXAogCXsweDEwMDIsIDB4NTY1NywgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjM4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NDgsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NDksIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEUsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NEYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NTAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NTEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NTIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDU1NTQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NDgsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NDksIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEUsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NEYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NTAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NTEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NTIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDU1NTQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDU2NEEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlY0MTB8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NTY0QiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjQxMHxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX05FV19NRU1NQVB9LCBcCiAJezB4MTAwMiwgMHg1NjRGLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWNDEwfFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fTkVXX01FTU1BUH0sIFwKQEAgLTExMyw4ICsxMTMsMTAgQEAKIAl7MHgxMDAyLCAweDU5NjQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlYyODB9LCBcCiAJezB4MTAwMiwgMHg1OTY1LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWMjgwfSwgXAogCXsweDEwMDIsIDB4NTk2OSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjEwMH0sIFwKLQl7MHgxMDAyLCAweDVhNjEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlM0ODB8UkFERU9OX0lTX0lHUHxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX0lTX0lHUEdBUlR9LCBcCi0JezB4MTAwMiwgMHg1YTYyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JTNDgwfFJBREVPTl9JU19JR1B8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4NWE0MSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzQwMHxSQURFT05fSVNfSUdQfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4NWE0MiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzQwMHxSQURFT05fSVNfSUdQfFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fSVNfSUdQR0FSVH0sIFwKKwl7MHgxMDAyLCAweDVhNjEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlM0MDB8UkFERU9OX0lTX0lHUHxSQURFT05fSVNfSUdQR0FSVH0sIFwKKwl7MHgxMDAyLCAweDVhNjIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlM0MDB8UkFERU9OX0lTX0lHUHxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX0lTX0lHUEdBUlR9LCBcCiAJezB4MTAwMiwgMHg1YjYwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWMzgwfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NWI2MiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjM4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDViNjMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlYzODB8UkFERU9OX05FV19NRU1NQVB9LCBcCkBAIC0xMjIsMTYgKzEyNCwxNiBAQAogCXsweDEwMDIsIDB4NWI2NSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjM4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDVjNjEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlYyODB8UkFERU9OX0lTX01PQklMSVRZfSwgXAogCXsweDEwMDIsIDB4NWM2MywgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjI4MHxSQURFT05fSVNfTU9CSUxJVFl9LCBcCi0JezB4MTAwMiwgMHg1ZDQ4LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAotCXsweDEwMDIsIDB4NWQ0OSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SNDIwfFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDVkNGEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyMHxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDRjLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDRkLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDRlLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDRmLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDUwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDUyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCi0JezB4MTAwMiwgMHg1ZDU3LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjB8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDQ4LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAorCXsweDEwMDIsIDB4NWQ0OSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SNDIzfFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fTkVXX01FTU1BUH0sIFwKKwl7MHgxMDAyLCAweDVkNGEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjQyM3xSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDRjLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDRkLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDRlLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDRmLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDUwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDUyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg1ZDU3LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1I0MjN8UkFERU9OX05FV19NRU1NQVB9LCBcCiAJezB4MTAwMiwgMHg1ZTQ4LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWNDEwfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NWU0YSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjQxMHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDVlNGIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlY0MTB8UkFERU9OX05FV19NRU1NQVB9LCBcCkBAIC0yMzcsNiArMjM5LDEwIEBACiAJezB4MTAwMiwgMHg3ODM1LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JTMzAwfFJBREVPTl9JU19JR1B8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NzkxZSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzY5MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAogCXsweDEwMDIsIDB4NzkxZiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzY5MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4Nzk2YywgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzc0MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4Nzk2ZCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzc0MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4Nzk2ZSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzc0MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAorCXsweDEwMDIsIDB4Nzk2ZiwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzc0MHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfFJBREVPTl9JU19JR1BHQVJUfSwgXAogCXswLCAwLCAwfQogCiAjZGVmaW5lIHIxMjhfUENJX0lEUyBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAppbmRleCAwNWM2NmNmLi5lYjRiMzUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgKQEAgLTE0Myw2ICsxNDMsMjIgQEAKICNkZWZpbmUgRFJNX0k5MTVfR0VUX1ZCTEFOS19QSVBFCTB4MGUKICNkZWZpbmUgRFJNX0k5MTVfVkJMQU5LX1NXQVAJMHgwZgogI2RlZmluZSBEUk1fSTkxNV9IV1NfQUREUgkweDExCisjZGVmaW5lIERSTV9JOTE1X0dFTV9JTklUCTB4MTMKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIJMHgxNAorI2RlZmluZSBEUk1fSTkxNV9HRU1fUElOCTB4MTUKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1VOUElOCTB4MTYKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0JVU1kJMHgxNworI2RlZmluZSBEUk1fSTkxNV9HRU1fVEhST1RUTEUJMHgxOAorI2RlZmluZSBEUk1fSTkxNV9HRU1fRU5URVJWVAkweDE5CisjZGVmaW5lIERSTV9JOTE1X0dFTV9MRUFWRVZUCTB4MWEKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0NSRUFURQkweDFiCisjZGVmaW5lIERSTV9JOTE1X0dFTV9QUkVBRAkweDFjCisjZGVmaW5lIERSTV9JOTE1X0dFTV9QV1JJVEUJMHgxZAorI2RlZmluZSBEUk1fSTkxNV9HRU1fTU1BUAkweDFlCisjZGVmaW5lIERSTV9JOTE1X0dFTV9TRVRfRE9NQUlOCTB4MWYKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1NXX0ZJTklTSAkweDIwCisjZGVmaW5lIERSTV9JOTE1X0dFTV9TRVRfVElMSU5HCTB4MjEKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0dFVF9USUxJTkcJMHgyMgogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3QpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0ZMVVNICQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxVU0gpCkBAIC0xNjAsNiArMTc2LDIwIEBACiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1NFVF9WQkxBTktfUElQRQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfU0VUX1ZCTEFOS19QSVBFLCBkcm1faTkxNV92YmxhbmtfcGlwZV90KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfVkJMQU5LX1BJUEUJRFJNX0lPUiggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFVF9WQkxBTktfUElQRSwgZHJtX2k5MTVfdmJsYW5rX3BpcGVfdCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfVkJMQU5LX1NXQVAJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1ZCTEFOS19TV0FQLCBkcm1faTkxNV92Ymxhbmtfc3dhcF90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUElOCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BJTiwgc3RydWN0IGRybV9pOTE1X2dlbV9waW4pCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VTlBJTglEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVU5QSU4sIHN0cnVjdCBkcm1faTkxNV9nZW1fdW5waW4pCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0JVU1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1RIUk9UVExFCURSTV9JTyAoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVEhST1RUTEUpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FTlRFUlZUCURSTV9JTyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VOVEVSVlQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9MRUFWRVZUCURSTV9JTyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0xFQVZFVlQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DUkVBVEUJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY3JlYXRlKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUFJFQUQJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9QUkVBRCwgc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1BXUklURQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BXUklURSwgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX01NQVAsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1NFVF9ET01BSU4JRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9TRVRfRE9NQUlOLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF9kb21haW4pCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9TV19GSU5JU0gJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9TV19GSU5JU0gsIHN0cnVjdCBkcm1faTkxNV9nZW1fc3dfZmluaXNoKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX1RJTElORwlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9TRVRfVElMSU5HLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF90aWxpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9HRVRfVElMSU5HCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0dFVF9USUxJTkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X3RpbGluZykKIAogLyogQWxsb3cgZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCByZWx5aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJkd2FyZS4KQEAgLTIwMCw2ICsyMzAsOCBAQAogI2RlZmluZSBJOTE1X1BBUkFNX0lSUV9BQ1RJVkUgICAgICAgICAgICAxCiAjZGVmaW5lIEk5MTVfUEFSQU1fQUxMT1dfQkFUQ0hCVUZGRVIgICAgIDIKICNkZWZpbmUgSTkxNV9QQVJBTV9MQVNUX0RJU1BBVENIICAgICAgICAgMworI2RlZmluZSBJOTE1X1BBUkFNX0NISVBTRVRfSUQgICAgICAgICAgICA0CisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0dFTSAgICAgICAgICAgICAgIDUKIAogdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gewogCWludCBwYXJhbTsKQEAgLTI2Nyw0ICsyOTksMzA1IEBACiAJdWludDY0X3QgYWRkcjsKIH0gZHJtX2k5MTVfaHdzX2FkZHJfdDsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9pbml0IHsKKwkvKioKKwkgKiBCZWdpbm5pbmcgb2Zmc2V0IGluIHRoZSBHVFQgdG8gYmUgbWFuYWdlZCBieSB0aGUgRFJNIG1lbW9yeQorCSAqIG1hbmFnZXIuCisJICovCisJdWludDY0X3QgZ3R0X3N0YXJ0OworCS8qKgorCSAqIEVuZGluZyBvZmZzZXQgaW4gdGhlIEdUVCB0byBiZSBtYW5hZ2VkIGJ5IHRoZSBEUk0gbWVtb3J5CisJICogbWFuYWdlci4KKwkgKi8KKwl1aW50NjRfdCBndHRfZW5kOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgeworCS8qKgorCSAqIFJlcXVlc3RlZCBzaXplIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogVGhlIChwYWdlLWFsaWduZWQpIGFsbG9jYXRlZCBzaXplIGZvciB0aGUgb2JqZWN0IHdpbGwgYmUgcmV0dXJuZWQuCisJICovCisJdWludDY0X3Qgc2l6ZTsKKwkvKioKKwkgKiBSZXR1cm5lZCBoYW5kbGUgZm9yIHRoZSBvYmplY3QuCisJICoKKwkgKiBPYmplY3QgaGFuZGxlcyBhcmUgbm9uemVyby4KKwkgKi8KKwl1aW50MzJfdCBoYW5kbGU7CisJdWludDMyX3QgcGFkOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyByZWFkLiAqLworCXVpbnQzMl90IGhhbmRsZTsKKwl1aW50MzJfdCBwYWQ7CisJLyoqIE9mZnNldCBpbnRvIHRoZSBvYmplY3QgdG8gcmVhZCBmcm9tICovCisJdWludDY0X3Qgb2Zmc2V0OworCS8qKiBMZW5ndGggb2YgZGF0YSB0byByZWFkICovCisJdWludDY0X3Qgc2l6ZTsKKwkvKioKKwkgKiBQb2ludGVyIHRvIHdyaXRlIHRoZSBkYXRhIGludG8uCisJICoKKwkgKiBUaGlzIGlzIGEgZml4ZWQtc2l6ZSB0eXBlIGZvciAzMi82NCBjb21wYXRpYmlsaXR5LgorCSAqLworCXVpbnQ2NF90IGRhdGFfcHRyOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgd3JpdHRlbiB0by4gKi8KKwl1aW50MzJfdCBoYW5kbGU7CisJdWludDMyX3QgcGFkOworCS8qKiBPZmZzZXQgaW50byB0aGUgb2JqZWN0IHRvIHdyaXRlIHRvICovCisJdWludDY0X3Qgb2Zmc2V0OworCS8qKiBMZW5ndGggb2YgZGF0YSB0byB3cml0ZSAqLworCXVpbnQ2NF90IHNpemU7CisJLyoqCisJICogUG9pbnRlciB0byByZWFkIHRoZSBkYXRhIGZyb20uCisJICoKKwkgKiBUaGlzIGlzIGEgZml4ZWQtc2l6ZSB0eXBlIGZvciAzMi82NCBjb21wYXRpYmlsaXR5LgorCSAqLworCXVpbnQ2NF90IGRhdGFfcHRyOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwIHsKKwkvKiogSGFuZGxlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1hcHBlZC4gKi8KKwl1aW50MzJfdCBoYW5kbGU7CisJdWludDMyX3QgcGFkOworCS8qKiBPZmZzZXQgaW4gdGhlIG9iamVjdCB0byBtYXAuICovCisJdWludDY0X3Qgb2Zmc2V0OworCS8qKgorCSAqIExlbmd0aCBvZiBkYXRhIHRvIG1hcC4KKwkgKgorCSAqIFRoZSB2YWx1ZSB3aWxsIGJlIHBhZ2UtYWxpZ25lZC4KKwkgKi8KKwl1aW50NjRfdCBzaXplOworCS8qKgorCSAqIFJldHVybmVkIHBvaW50ZXIgdGhlIGRhdGEgd2FzIG1hcHBlZCBhdC4KKwkgKgorCSAqIFRoaXMgaXMgYSBmaXhlZC1zaXplIHR5cGUgZm9yIDMyLzY0IGNvbXBhdGliaWxpdHkuCisJICovCisJdWludDY0X3QgYWRkcl9wdHI7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF9kb21haW4geworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgKi8KKwl1aW50MzJfdCBoYW5kbGU7CisKKwkvKiogTmV3IHJlYWQgZG9tYWlucyAqLworCXVpbnQzMl90IHJlYWRfZG9tYWluczsKKworCS8qKiBOZXcgd3JpdGUgZG9tYWluICovCisJdWludDMyX3Qgd3JpdGVfZG9tYWluOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9zd19maW5pc2ggeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgKi8KKwl1aW50MzJfdCBoYW5kbGU7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgeworCS8qKgorCSAqIEhhbmRsZSBvZiB0aGUgYnVmZmVyIGJlaW5nIHBvaW50ZWQgdG8gYnkgdGhpcyByZWxvY2F0aW9uIGVudHJ5LgorCSAqCisJICogSXQncyBhcHBlYWxpbmcgdG8gbWFrZSB0aGlzIGJlIGFuIGluZGV4IGludG8gdGhlIG1tX3ZhbGlkYXRlX2VudHJ5CisJICogbGlzdCB0byByZWZlciB0byB0aGUgYnVmZmVyLCBidXQgdGhpcyBhbGxvd3MgdGhlIGRyaXZlciB0byBjcmVhdGUKKwkgKiBhIHJlbG9jYXRpb24gbGlzdCBmb3Igc3RhdGUgYnVmZmVycyBhbmQgbm90IHJlLXdyaXRlIGl0IHBlcgorCSAqIGV4ZWMgdXNpbmcgdGhlIGJ1ZmZlci4KKwkgKi8KKwl1aW50MzJfdCB0YXJnZXRfaGFuZGxlOworCisJLyoqCisJICogVmFsdWUgdG8gYmUgYWRkZWQgdG8gdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGJ1ZmZlciB0byBtYWtlIHVwCisJICogdGhlIHJlbG9jYXRpb24gZW50cnkuCisJICovCisJdWludDMyX3QgZGVsdGE7CisKKwkvKiogT2Zmc2V0IGluIHRoZSBidWZmZXIgdGhlIHJlbG9jYXRpb24gZW50cnkgd2lsbCBiZSB3cml0dGVuIGludG8gKi8KKwl1aW50NjRfdCBvZmZzZXQ7CisKKwkvKioKKwkgKiBPZmZzZXQgdmFsdWUgb2YgdGhlIHRhcmdldCBidWZmZXIgdGhhdCB0aGUgcmVsb2NhdGlvbiBlbnRyeSB3YXMgbGFzdAorCSAqIHdyaXR0ZW4gYXMuCisJICoKKwkgKiBJZiB0aGUgYnVmZmVyIGhhcyB0aGUgc2FtZSBvZmZzZXQgYXMgbGFzdCB0aW1lLCB3ZSBjYW4gc2tpcCBzeW5jaW5nCisJICogYW5kIHdyaXRpbmcgdGhlIHJlbG9jYXRpb24uICBUaGlzIHZhbHVlIGlzIHdyaXR0ZW4gYmFjayBvdXQgYnkKKwkgKiB0aGUgZXhlY2J1ZmZlciBpb2N0bCB3aGVuIHRoZSByZWxvY2F0aW9uIGlzIHdyaXR0ZW4uCisJICovCisJdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0OworCisJLyoqCisJICogVGFyZ2V0IG1lbW9yeSBkb21haW5zIHJlYWQgYnkgdGhpcyBvcGVyYXRpb24uCisJICovCisJdWludDMyX3QgcmVhZF9kb21haW5zOworCisJLyoqCisJICogVGFyZ2V0IG1lbW9yeSBkb21haW5zIHdyaXR0ZW4gYnkgdGhpcyBvcGVyYXRpb24uCisJICoKKwkgKiBOb3RlIHRoYXQgb25seSBvbmUgZG9tYWluIG1heSBiZSB3cml0dGVuIGJ5IHRoZSB3aG9sZQorCSAqIGV4ZWNidWZmZXIgb3BlcmF0aW9uLCBzbyB0aGF0IHdoZXJlIHRoZXJlIGFyZSBjb25mbGljdHMsCisJICogdGhlIGFwcGxpY2F0aW9uIHdpbGwgZ2V0IC1FSU5WQUwgYmFjay4KKwkgKi8KKwl1aW50MzJfdCB3cml0ZV9kb21haW47Cit9OworCisvKiogQHsKKyAqIEludGVsIG1lbW9yeSBkb21haW5zCisgKgorICogTW9zdCBvZiB0aGVzZSBqdXN0IGFsaWduIHdpdGggdGhlIHZhcmlvdXMgY2FjaGVzIGluCisgKiB0aGUgc3lzdGVtIGFuZCBhcmUgdXNlZCB0byBmbHVzaCBhbmQgaW52YWxpZGF0ZSBhcworICogb2JqZWN0cyBlbmQgdXAgY2FjaGVkIGluIGRpZmZlcmVudCBkb21haW5zLgorICovCisvKiogQ1BVIGNhY2hlICovCisjZGVmaW5lIEk5MTVfR0VNX0RPTUFJTl9DUFUJCTB4MDAwMDAwMDEKKy8qKiBSZW5kZXIgY2FjaGUsIHVzZWQgYnkgMkQgYW5kIDNEIGRyYXdpbmcgKi8KKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUgkJMHgwMDAwMDAwMgorLyoqIFNhbXBsZXIgY2FjaGUsIHVzZWQgYnkgdGV4dHVyZSBlbmdpbmUgKi8KKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVIJCTB4MDAwMDAwMDQKKy8qKiBDb21tYW5kIHF1ZXVlLCB1c2VkIHRvIGxvYWQgYmF0Y2ggYnVmZmVycyAqLworI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORAkJMHgwMDAwMDAwOAorLyoqIEluc3RydWN0aW9uIGNhY2hlLCB1c2VkIGJ5IHNoYWRlciBwcm9ncmFtcyAqLworI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04JMHgwMDAwMDAxMAorLyoqIFZlcnRleCBhZGRyZXNzIGNhY2hlICovCisjZGVmaW5lIEk5MTVfR0VNX0RPTUFJTl9WRVJURVgJCTB4MDAwMDAwMjAKKy8qKiBHVFQgZG9tYWluIC0gYXBlcnR1cmUgYW5kIHNjYW5vdXQgKi8KKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX0dUVAkJMHgwMDAwMDA0MAorLyoqIEB9ICovCisKK3N0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QgeworCS8qKgorCSAqIFVzZXIncyBoYW5kbGUgZm9yIGEgYnVmZmVyIHRvIGJlIGJvdW5kIGludG8gdGhlIEdUVCBmb3IgdGhpcworCSAqIG9wZXJhdGlvbi4KKwkgKi8KKwl1aW50MzJfdCBoYW5kbGU7CisKKwkvKiogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGlzIGJ1ZmZlciAqLworCXVpbnQzMl90IHJlbG9jYXRpb25fY291bnQ7CisJLyoqCisJICogUG9pbnRlciB0byBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgY29udGFpbmluZworCSAqIHRoZSByZWxvY2F0aW9ucyB0byBiZSBwZXJmb3JtZWQgaW4gdGhpcyBidWZmZXIuCisJICovCisJdWludDY0X3QgcmVsb2NzX3B0cjsKKworCS8qKiBSZXF1aXJlZCBhbGlnbm1lbnQgaW4gZ3JhcGhpY3MgYXBlcnR1cmUgKi8KKwl1aW50NjRfdCBhbGlnbm1lbnQ7CisKKwkvKioKKwkgKiBSZXR1cm5lZCB2YWx1ZSBvZiB0aGUgdXBkYXRlZCBvZmZzZXQgb2YgdGhlIG9iamVjdCwgZm9yIGZ1dHVyZQorCSAqIHByZXN1bWVkX29mZnNldCB3cml0ZXMuCisJICovCisJdWludDY0X3Qgb2Zmc2V0OworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyIHsKKwkvKioKKwkgKiBMaXN0IG9mIGJ1ZmZlcnMgdG8gYmUgdmFsaWRhdGVkIHdpdGggdGhlaXIgcmVsb2NhdGlvbnMgdG8gYmUKKwkgKiBwZXJmb3JtZW5kIG9uIHRoZW0uCisJICoKKwkgKiBUaGlzIGlzIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZhbGlkYXRlX2VudHJ5LgorCSAqCisJICogVGhlc2UgYnVmZmVycyBtdXN0IGJlIGxpc3RlZCBpbiBhbiBvcmRlciBzdWNoIHRoYXQgYWxsIHJlbG9jYXRpb25zCisJICogYSBidWZmZXIgaXMgcGVyZm9ybWluZyByZWZlciB0byBidWZmZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IGFwcGVhcmVkCisJICogaW4gdGhlIHZhbGlkYXRlIGxpc3QuCisJICovCisJdWludDY0X3QgYnVmZmVyc19wdHI7CisJdWludDMyX3QgYnVmZmVyX2NvdW50OworCisJLyoqIE9mZnNldCBpbiB0aGUgYmF0Y2hidWZmZXIgdG8gc3RhcnQgZXhlY3V0aW9uIGZyb20uICovCisJdWludDMyX3QgYmF0Y2hfc3RhcnRfb2Zmc2V0OworCS8qKiBCeXRlcyB1c2VkIGluIGJhdGNoYnVmZmVyIGZyb20gYmF0Y2hfc3RhcnRfb2Zmc2V0ICovCisJdWludDMyX3QgYmF0Y2hfbGVuOworCXVpbnQzMl90IERSMTsKKwl1aW50MzJfdCBEUjQ7CisJdWludDMyX3QgbnVtX2NsaXByZWN0czsKKwkvKiogVGhpcyBpcyBhIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMgKi8KKwl1aW50NjRfdCBjbGlwcmVjdHNfcHRyOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9waW4geworCS8qKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciB0byBiZSBwaW5uZWQuICovCisJdWludDMyX3QgaGFuZGxlOworCXVpbnQzMl90IHBhZDsKKworCS8qKiBhbGlnbm1lbnQgcmVxdWlyZWQgd2l0aGluIHRoZSBhcGVydHVyZSAqLworCXVpbnQ2NF90IGFsaWdubWVudDsKKworCS8qKiBSZXR1cm5lZCBHVFQgb2Zmc2V0IG9mIHRoZSBidWZmZXIuICovCisJdWludDY0X3Qgb2Zmc2V0OworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV91bnBpbiB7CisJLyoqIEhhbmRsZSBvZiB0aGUgYnVmZmVyIHRvIGJlIHVucGlubmVkLiAqLworCXVpbnQzMl90IGhhbmRsZTsKKwl1aW50MzJfdCBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2J1c3kgeworCS8qKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciB0byBjaGVjayBmb3IgYnVzeSAqLworCXVpbnQzMl90IGhhbmRsZTsKKworCS8qKiBSZXR1cm4gYnVzeSBzdGF0dXMgKDEgaWYgYnVzeSwgMCBpZiBpZGxlKSAqLworCXVpbnQzMl90IGJ1c3k7Cit9OworCisjZGVmaW5lIEk5MTVfVElMSU5HX05PTkUJMAorI2RlZmluZSBJOTE1X1RJTElOR19YCQkxCisjZGVmaW5lIEk5MTVfVElMSU5HX1kJCTIKKworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORQkJMAorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOQkJMQorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMAkJMgorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMQkJMworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8xMQk0CisvKiBOb3Qgc2VlbiBieSB1c2VybGFuZCAqLworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTgk1CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fc2V0X3RpbGluZyB7CisJLyoqIEhhbmRsZSBvZiB0aGUgYnVmZmVyIHRvIGhhdmUgaXRzIHRpbGluZyBzdGF0ZSB1cGRhdGVkICovCisJdWludDMyX3QgaGFuZGxlOworCisJLyoqCisJICogVGlsaW5nIG1vZGUgZm9yIHRoZSBvYmplY3QgKEk5MTVfVElMSU5HX05PTkUsIEk5MTVfVElMSU5HX1gsCisJICogSTkxNV9USUxJTkdfWSkuCisJICoKKwkgKiBUaGlzIHZhbHVlIGlzIHRvIGJlIHNldCBvbiByZXF1ZXN0LCBhbmQgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZQorCSAqIGtlcm5lbCBvbiBzdWNjZXNzZnVsIHJldHVybiB3aXRoIHRoZSBhY3R1YWwgY2hvc2VuIHRpbGluZyBsYXlvdXQuCisJICoKKwkgKiBUaGUgdGlsaW5nIG1vZGUgbWF5IGJlIGRlbW90ZWQgdG8gSTkxNV9USUxJTkdfTk9ORSB3aGVuIHRoZSBzeXN0ZW0KKwkgKiBoYXMgYml0IDYgc3dpenpsaW5nIHRoYXQgY2FuJ3QgYmUgbWFuYWdlZCBjb3JyZWN0bHkgYnkgR0VNLgorCSAqCisJICogQnVmZmVyIGNvbnRlbnRzIGJlY29tZSB1bmRlZmluZWQgd2hlbiBjaGFuZ2luZyB0aWxpbmdfbW9kZS4KKwkgKi8KKwl1aW50MzJfdCB0aWxpbmdfbW9kZTsKKworCS8qKgorCSAqIFN0cmlkZSBpbiBieXRlcyBmb3IgdGhlIG9iamVjdCB3aGVuIGluIEk5MTVfVElMSU5HX1ggb3IKKwkgKiBJOTE1X1RJTElOR19ZLgorCSAqLworCXVpbnQzMl90IHN0cmlkZTsKKworCS8qKgorCSAqIFJldHVybmVkIGFkZHJlc3MgYml0IDYgc3dpenpsaW5nIHJlcXVpcmVkIGZvciBDUFUgYWNjZXNzIHRocm91Z2gKKwkgKiBtbWFwIG1hcHBpbmcuCisJICovCisJdWludDMyX3Qgc3dpenpsZV9tb2RlOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nIHsKKwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gZ2V0IHRpbGluZyBzdGF0ZSBmb3IuICovCisJdWludDMyX3QgaGFuZGxlOworCisJLyoqCisJICogQ3VycmVudCB0aWxpbmcgbW9kZSBmb3IgdGhlIG9iamVjdCAoSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWCwKKwkgKiBJOTE1X1RJTElOR19ZKS4KKwkgKi8KKwl1aW50MzJfdCB0aWxpbmdfbW9kZTsKKworCS8qKgorCSAqIFJldHVybmVkIGFkZHJlc3MgYml0IDYgc3dpenpsaW5nIHJlcXVpcmVkIGZvciBDUFUgYWNjZXNzIHRocm91Z2gKKwkgKiBtbWFwIG1hcHBpbmcuCisJICovCisJdWludDMyX3Qgc3dpenpsZV9tb2RlOworfTsKKwogI2VuZGlmCQkJCS8qIF9JOTE1X0RSTV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW8uaCBiL2luY2x1ZGUvbGludXgvYmlvLmgKaW5kZXggZmY1YjRjZi4uMWM5MWExNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jpby5oCkBAIC03OSw2ICs3OSwxMyBAQAogCiAJdW5zaWduZWQgaW50CQliaV9zaXplOwkvKiByZXNpZHVhbCBJL08gY291bnQgKi8KIAorCS8qCisJICogVG8ga2VlcCB0cmFjayBvZiB0aGUgbWF4IHNlZ21lbnQgc2l6ZSwgd2UgYWNjb3VudCBmb3IgdGhlCisJICogc2l6ZXMgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IG1lcmdlYWJsZSBzZWdtZW50cyBpbiB0aGlzIGJpby4KKwkgKi8KKwl1bnNpZ25lZCBpbnQJCWJpX3NlZ19mcm9udF9zaXplOworCXVuc2lnbmVkIGludAkJYmlfc2VnX2JhY2tfc2l6ZTsKKwogCXVuc2lnbmVkIGludAkJYmlfbWF4X3ZlY3M7CS8qIG1heCBidmxfdmVjcyB3ZSBjYW4gaG9sZCAqLwogCiAJdW5zaWduZWQgaW50CQliaV9jb21wX2NwdTsJLyogY29tcGxldGlvbiBDUFUgKi8KQEAgLTEyOSwyNSArMTM2LDMwIEBACiAgKiBiaXQgMiAtLSBiYXJyaWVyCiAgKglJbnNlcnQgYSBzZXJpYWxpemF0aW9uIHBvaW50IGluIHRoZSBJTyBxdWV1ZSwgZm9yY2luZyBwcmV2aW91c2x5CiAgKglzdWJtaXR0ZWQgSU8gdG8gYmUgY29tcGxldGVkIGJlZm9yZSB0aGlzIG9lbiBpcyBpc3N1ZWQuCi0gKiBiaXQgMyAtLSBmYWlsIGZhc3QsIGRvbid0IHdhbnQgbG93IGxldmVsIGRyaXZlciByZXRyaWVzCi0gKiBiaXQgNCAtLSBzeW5jaHJvbm91cyBJL08gaGludDogdGhlIGJsb2NrIGxheWVyIHdpbGwgdW5wbHVnIGltbWVkaWF0ZWx5CisgKiBiaXQgMyAtLSBzeW5jaHJvbm91cyBJL08gaGludDogdGhlIGJsb2NrIGxheWVyIHdpbGwgdW5wbHVnIGltbWVkaWF0ZWx5CiAgKglOb3RlIHRoYXQgdGhpcyBkb2VzIE5PVCBpbmRpY2F0ZSB0aGF0IHRoZSBJTyBpdHNlbGYgaXMgc3luYywganVzdAogICoJdGhhdCB0aGUgYmxvY2sgbGF5ZXIgd2lsbCBub3QgcG9zdHBvbmUgaXNzdWUgb2YgdGhpcyBJTyBieSBwbHVnZ2luZy4KLSAqIGJpdCA1IC0tIG1ldGFkYXRhIHJlcXVlc3QKKyAqIGJpdCA0IC0tIG1ldGFkYXRhIHJlcXVlc3QKICAqCVVzZWQgZm9yIHRyYWNpbmcgdG8gZGlmZmVyZW50aWF0ZSBtZXRhZGF0YSBhbmQgZGF0YSBJTy4gTWF5IGFsc28KICAqCWdldCBzb21lIHByZWZlcmVudGlhbCB0cmVhdG1lbnQgaW4gdGhlIElPIHNjaGVkdWxlcgotICogYml0IDYgLS0gZGlzY2FyZCBzZWN0b3JzCisgKiBiaXQgNSAtLSBkaXNjYXJkIHNlY3RvcnMKICAqCUluZm9ybXMgdGhlIGxvd2VyIGxldmVsIGRldmljZSB0aGF0IHRoaXMgcmFuZ2Ugb2Ygc2VjdG9ycyBpcyBubyBsb25nZXIKICAqCXVzZWQgYnkgdGhlIGZpbGUgc3lzdGVtIGFuZCBtYXkgdGh1cyBiZSBmcmVlZCBieSB0aGUgZGV2aWNlLiBVc2VkCiAgKglmb3IgZmxhc2ggYmFzZWQgc3RvcmFnZS4KKyAqIGJpdCA2IC0tIGZhaWwgZmFzdCBkZXZpY2UgZXJyb3JzCisgKiBiaXQgNyAtLSBmYWlsIGZhc3QgdHJhbnNwb3J0IGVycm9ycworICogYml0IDggLS0gZmFpbCBmYXN0IGRyaXZlciBlcnJvcnMKKyAqCURvbid0IHdhbnQgZHJpdmVyIHJldHJpZXMgZm9yIGFueSBmYXN0IGZhaWwgd2hhdGV2ZXIgdGhlIHJlYXNvbi4KICAqLwogI2RlZmluZSBCSU9fUlcJCTAJLyogTXVzdCBtYXRjaCBSVyBpbiByZXEgZmxhZ3MgKGJsa2Rldi5oKSAqLwogI2RlZmluZSBCSU9fUldfQUhFQUQJMQkvKiBNdXN0IG1hdGNoIEZBSUxGQVNUIGluIHJlcSBmbGFncyAqLwogI2RlZmluZSBCSU9fUldfQkFSUklFUgkyCi0jZGVmaW5lIEJJT19SV19GQUlMRkFTVAkzCi0jZGVmaW5lIEJJT19SV19TWU5DCTQKLSNkZWZpbmUgQklPX1JXX01FVEEJNQotI2RlZmluZSBCSU9fUldfRElTQ0FSRAk2CisjZGVmaW5lIEJJT19SV19TWU5DCTMKKyNkZWZpbmUgQklPX1JXX01FVEEJNAorI2RlZmluZSBCSU9fUldfRElTQ0FSRAk1CisjZGVmaW5lIEJJT19SV19GQUlMRkFTVF9ERVYJCTYKKyNkZWZpbmUgQklPX1JXX0ZBSUxGQVNUX1RSQU5TUE9SVAk3CisjZGVmaW5lIEJJT19SV19GQUlMRkFTVF9EUklWRVIJCTgKIAogLyoKICAqIHVwcGVyIDE2IGJpdHMgb2YgYmlfcncgZGVmaW5lIHRoZSBpbyBwcmlvcml0eSBvZiB0aGlzIGJpbwpAQCAtMTc0LDcgKzE4NiwxMCBAQAogI2RlZmluZSBiaW9fc2VjdG9ycyhiaW8pCSgoYmlvKS0+Ymlfc2l6ZSA+PiA5KQogI2RlZmluZSBiaW9fYmFycmllcihiaW8pCSgoYmlvKS0+YmlfcncgJiAoMSA8PCBCSU9fUldfQkFSUklFUikpCiAjZGVmaW5lIGJpb19zeW5jKGJpbykJCSgoYmlvKS0+YmlfcncgJiAoMSA8PCBCSU9fUldfU1lOQykpCi0jZGVmaW5lIGJpb19mYWlsZmFzdChiaW8pCSgoYmlvKS0+YmlfcncgJiAoMSA8PCBCSU9fUldfRkFJTEZBU1QpKQorI2RlZmluZSBiaW9fZmFpbGZhc3RfZGV2KGJpbykJKChiaW8pLT5iaV9ydyAmCSgxIDw8IEJJT19SV19GQUlMRkFTVF9ERVYpKQorI2RlZmluZSBiaW9fZmFpbGZhc3RfdHJhbnNwb3J0KGJpbykJXAorCSgoYmlvKS0+YmlfcncgJiAoMSA8PCBCSU9fUldfRkFJTEZBU1RfVFJBTlNQT1JUKSkKKyNkZWZpbmUgYmlvX2ZhaWxmYXN0X2RyaXZlcihiaW8pICgoYmlvKS0+YmlfcncgJiAoMSA8PCBCSU9fUldfRkFJTEZBU1RfRFJJVkVSKSkKICNkZWZpbmUgYmlvX3J3X2FoZWFkKGJpbykJKChiaW8pLT5iaV9ydyAmICgxIDw8IEJJT19SV19BSEVBRCkpCiAjZGVmaW5lIGJpb19yd19tZXRhKGJpbykJKChiaW8pLT5iaV9ydyAmICgxIDw8IEJJT19SV19NRVRBKSkKICNkZWZpbmUgYmlvX2Rpc2NhcmQoYmlvKQkoKGJpbyktPmJpX3J3ICYgKDEgPDwgQklPX1JXX0RJU0NBUkQpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKaW5kZXggYTkyZDllNC4uYjRmZTY4ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCkBAIC04Nyw3ICs4Nyw5IEBACiAgKi8KIGVudW0gcnFfZmxhZ19iaXRzIHsKIAlfX1JFUV9SVywJCS8qIG5vdCBzZXQsIHJlYWQuIHNldCwgd3JpdGUgKi8KLQlfX1JFUV9GQUlMRkFTVCwJCS8qIG5vIGxvdyBsZXZlbCBkcml2ZXIgcmV0cmllcyAqLworCV9fUkVRX0ZBSUxGQVNUX0RFViwJLyogbm8gZHJpdmVyIHJldHJpZXMgb2YgZGV2aWNlIGVycm9ycyAqLworCV9fUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCwgLyogbm8gZHJpdmVyIHJldHJpZXMgb2YgdHJhbnNwb3J0IGVycm9ycyAqLworCV9fUkVRX0ZBSUxGQVNUX0RSSVZFUiwJLyogbm8gZHJpdmVyIHJldHJpZXMgb2YgZHJpdmVyIGVycm9ycyAqLwogCV9fUkVRX0RJU0NBUkQsCQkvKiByZXF1ZXN0IHRvIGRpc2NhcmQgc2VjdG9ycyAqLwogCV9fUkVRX1NPUlRFRCwJCS8qIGVsZXZhdG9yIGtub3dzIGFib3V0IHRoaXMgcmVxdWVzdCAqLwogCV9fUkVRX1NPRlRCQVJSSUVSLAkvKiBtYXkgbm90IGJlIHBhc3NlZCBieSBpb3NjaGVkdWxlciAqLwpAQCAtMTExLDggKzExMywxMCBAQAogfTsKIAogI2RlZmluZSBSRVFfUlcJCSgxIDw8IF9fUkVRX1JXKQorI2RlZmluZSBSRVFfRkFJTEZBU1RfREVWCSgxIDw8IF9fUkVRX0ZBSUxGQVNUX0RFVikKKyNkZWZpbmUgUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVAkoMSA8PCBfX1JFUV9GQUlMRkFTVF9UUkFOU1BPUlQpCisjZGVmaW5lIFJFUV9GQUlMRkFTVF9EUklWRVIJKDEgPDwgX19SRVFfRkFJTEZBU1RfRFJJVkVSKQogI2RlZmluZSBSRVFfRElTQ0FSRAkoMSA8PCBfX1JFUV9ESVNDQVJEKQotI2RlZmluZSBSRVFfRkFJTEZBU1QJKDEgPDwgX19SRVFfRkFJTEZBU1QpCiAjZGVmaW5lIFJFUV9TT1JURUQJKDEgPDwgX19SRVFfU09SVEVEKQogI2RlZmluZSBSRVFfU09GVEJBUlJJRVIJKDEgPDwgX19SRVFfU09GVEJBUlJJRVIpCiAjZGVmaW5lIFJFUV9IQVJEQkFSUklFUgkoMSA8PCBfX1JFUV9IQVJEQkFSUklFUikKQEAgLTU2MCw3ICs1NjQsMTIgQEAKICNkZWZpbmUgYmxrX3NwZWNpYWxfcmVxdWVzdChycSkJKChycSktPmNtZF90eXBlID09IFJFUV9UWVBFX1NQRUNJQUwpCiAjZGVmaW5lIGJsa19zZW5zZV9yZXF1ZXN0KHJxKQkoKHJxKS0+Y21kX3R5cGUgPT0gUkVRX1RZUEVfU0VOU0UpCiAKLSNkZWZpbmUgYmxrX25vcmV0cnlfcmVxdWVzdChycSkJKChycSktPmNtZF9mbGFncyAmIFJFUV9GQUlMRkFTVCkKKyNkZWZpbmUgYmxrX2ZhaWxmYXN0X2RldihycSkJKChycSktPmNtZF9mbGFncyAmIFJFUV9GQUlMRkFTVF9ERVYpCisjZGVmaW5lIGJsa19mYWlsZmFzdF90cmFuc3BvcnQocnEpICgocnEpLT5jbWRfZmxhZ3MgJiBSRVFfRkFJTEZBU1RfVFJBTlNQT1JUKQorI2RlZmluZSBibGtfZmFpbGZhc3RfZHJpdmVyKHJxKQkoKHJxKS0+Y21kX2ZsYWdzICYgUkVRX0ZBSUxGQVNUX0RSSVZFUikKKyNkZWZpbmUgYmxrX25vcmV0cnlfcmVxdWVzdChycSkJKGJsa19mYWlsZmFzdF9kZXYocnEpIHx8CVwKKwkJCQkgYmxrX2ZhaWxmYXN0X3RyYW5zcG9ydChycSkgfHwJXAorCQkJCSBibGtfZmFpbGZhc3RfZHJpdmVyKHJxKSkKICNkZWZpbmUgYmxrX3JxX3N0YXJ0ZWQocnEpCSgocnEpLT5jbWRfZmxhZ3MgJiBSRVFfU1RBUlRFRCkKIAogI2RlZmluZSBibGtfYWNjb3VudF9ycShycSkJKGJsa19ycV9zdGFydGVkKHJxKSAmJiAoYmxrX2ZzX3JlcXVlc3QocnEpIHx8IGJsa19kaXNjYXJkX3JxKHJxKSkpIApAQCAtODU2LDcgKzg2NSw2IEBACiBleHRlcm4gaW50IGJsa19ycV9tYXBfc2coc3RydWN0IHJlcXVlc3RfcXVldWUgKiwgc3RydWN0IHJlcXVlc3QgKiwgc3RydWN0IHNjYXR0ZXJsaXN0ICopOwogZXh0ZXJuIHZvaWQgYmxrX2R1bXBfcnFfZmxhZ3Moc3RydWN0IHJlcXVlc3QgKiwgY2hhciAqKTsKIGV4dGVybiB2b2lkIGdlbmVyaWNfdW5wbHVnX2RldmljZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqKTsKLWV4dGVybiB2b2lkIF9fZ2VuZXJpY191bnBsdWdfZGV2aWNlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICopOwogZXh0ZXJuIGxvbmcgbnJfYmxvY2tkZXZfcGFnZXModm9pZCk7CiAKIGludCBibGtfZ2V0X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGt0cmFjZV9hcGkuaCBiL2luY2x1ZGUvbGludXgvYmxrdHJhY2VfYXBpLmgKaW5kZXggM2EzMWViNS4uYmRmNTA1ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibGt0cmFjZV9hcGkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa3RyYWNlX2FwaS5oCkBAIC0yNCw2ICsyNCw3IEBACiAJQkxLX1RDX0FIRUFECT0gMSA8PCAxMSwJLyogcmVhZGFoZWFkICovCiAJQkxLX1RDX01FVEEJPSAxIDw8IDEyLAkvKiBtZXRhZGF0YSAqLwogCUJMS19UQ19ESVNDQVJECT0gMSA8PCAxMywJLyogZGlzY2FyZCByZXF1ZXN0cyAqLworCUJMS19UQ19EUlZfREFUQQk9IDEgPDwgMTQsCS8qIGJpbmFyeSBwZXItZHJpdmVyIGRhdGEgKi8KIAogCUJMS19UQ19FTkQJPSAxIDw8IDE1LAkvKiBvbmx5IDE2LWJpdHMsIHJlbWluZGVyICovCiB9OwpAQCAtNTEsNiArNTIsNyBAQAogCV9fQkxLX1RBX0JPVU5DRSwJCS8qIGJpbyB3YXMgYm91bmNlZCAqLwogCV9fQkxLX1RBX1JFTUFQLAkJCS8qIGJpbyB3YXMgcmVtYXBwZWQgKi8KIAlfX0JMS19UQV9BQk9SVCwJCQkvKiByZXF1ZXN0IGFib3J0ZWQgKi8KKwlfX0JMS19UQV9EUlZfREFUQSwJCS8qIGRyaXZlci1zcGVjaWZpYyBiaW5hcnkgZGF0YSAqLwogfTsKIAogLyoKQEAgLTgyLDYgKzg0LDcgQEAKICNkZWZpbmUgQkxLX1RBX0JPVU5DRQkJKF9fQkxLX1RBX0JPVU5DRSkKICNkZWZpbmUgQkxLX1RBX1JFTUFQCQkoX19CTEtfVEFfUkVNQVAgfCBCTEtfVENfQUNUKEJMS19UQ19RVUVVRSkpCiAjZGVmaW5lIEJMS19UQV9BQk9SVAkJKF9fQkxLX1RBX0FCT1JUIHwgQkxLX1RDX0FDVChCTEtfVENfUVVFVUUpKQorI2RlZmluZSBCTEtfVEFfRFJWX0RBVEEJKF9fQkxLX1RBX0RSVl9EQVRBIHwgQkxLX1RDX0FDVChCTEtfVENfRFJWX0RBVEEpKQogCiAjZGVmaW5lIEJMS19UTl9QUk9DRVNTCQkoX19CTEtfVE5fUFJPQ0VTUyB8IEJMS19UQ19BQ1QoQkxLX1RDX05PVElGWSkpCiAjZGVmaW5lIEJMS19UTl9USU1FU1RBTVAJKF9fQkxLX1ROX1RJTUVTVEFNUCB8IEJMS19UQ19BQ1QoQkxLX1RDX05PVElGWSkpCkBAIC0zMTcsNiArMzIwLDM0IEBACiAJX19ibGtfYWRkX3RyYWNlKGJ0LCBmcm9tLCBiaW8tPmJpX3NpemUsIGJpby0+YmlfcncsIEJMS19UQV9SRU1BUCwgIWJpb19mbGFnZ2VkKGJpbywgQklPX1VQVE9EQVRFKSwgc2l6ZW9mKHIpLCAmcik7CiB9CiAKKy8qKgorICogYmxrX2FkZF9kcml2ZXJfZGF0YSAtIEFkZCBiaW5hcnkgbWVzc2FnZSB3aXRoIGRyaXZlci1zcGVjaWZpYyBkYXRhCisgKiBAcToJCXF1ZXVlIHRoZSBpbyBpcyBmb3IKKyAqIEBycToJCWlvIHJlcXVlc3QKKyAqIEBkYXRhOglkcml2ZXItc3BlY2lmaWMgZGF0YQorICogQGxlbjoJbGVuZ3RoIG9mIGRyaXZlci1zcGVjaWZpYyBkYXRhCisgKgorICogRGVzY3JpcHRpb246CisgKiAgICAgU29tZSBkcml2ZXJzIG1pZ2h0IHdhbnQgdG8gd3JpdGUgZHJpdmVyLXNwZWNpZmljIGRhdGEgcGVyIHJlcXVlc3QuCisgKgorICoqLworc3RhdGljIGlubGluZSB2b2lkIGJsa19hZGRfZHJpdmVyX2RhdGEoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCisJCQkJICAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSwKKwkJCQkgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgYmxrX3RyYWNlICpidCA9IHEtPmJsa190cmFjZTsKKworCWlmIChsaWtlbHkoIWJ0KSkKKwkJcmV0dXJuOworCisJaWYgKGJsa19wY19yZXF1ZXN0KHJxKSkKKwkJX19ibGtfYWRkX3RyYWNlKGJ0LCAwLCBycS0+ZGF0YV9sZW4sIDAsIEJMS19UQV9EUlZfREFUQSwKKwkJCQlycS0+ZXJyb3JzLCBsZW4sIGRhdGEpOworCWVsc2UKKwkJX19ibGtfYWRkX3RyYWNlKGJ0LCBycS0+aGFyZF9zZWN0b3IsIHJxLT5oYXJkX25yX3NlY3RvcnMgPDwgOSwKKwkJCQkwLCBCTEtfVEFfRFJWX0RBVEEsIHJxLT5lcnJvcnMsIGxlbiwgZGF0YSk7Cit9CisKIGV4dGVybiBpbnQgYmxrX3RyYWNlX3NldHVwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBjaGFyICpuYW1lLCBkZXZfdCBkZXYsCiAJCQkgICBjaGFyIF9fdXNlciAqYXJnKTsKIGV4dGVybiBpbnQgYmxrX3RyYWNlX3N0YXJ0c3RvcChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50IHN0YXJ0KTsKQEAgLTMzMCw2ICszNjEsNyBAQAogI2RlZmluZSBibGtfYWRkX3RyYWNlX2dlbmVyaWMocSwgcnEsIHJ3LCB3aGF0KQlkbyB7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGJsa19hZGRfdHJhY2VfcGR1X2ludChxLCB3aGF0LCBiaW8sIHBkdSkJZG8geyB9IHdoaWxlICgwKQogI2RlZmluZSBibGtfYWRkX3RyYWNlX3JlbWFwKHEsIGJpbywgZGV2LCBmLCB0KQlkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgYmxrX2FkZF9kcml2ZXJfZGF0YShxLCBycSwgZGF0YSwgbGVuKQlkbyB7fSB3aGlsZSAoMCkKICNkZWZpbmUgZG9fYmxrX3RyYWNlX3NldHVwKHEsIG5hbWUsIGRldiwgYnV0cykJKC1FTk9UVFkpCiAjZGVmaW5lIGJsa190cmFjZV9zZXR1cChxLCBuYW1lLCBkZXYsIGFyZykJKC1FTk9UVFkpCiAjZGVmaW5lIGJsa190cmFjZV9zdGFydHN0b3AocSwgc3RhcnQpCQkoLUVOT1RUWSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2xvY2tzb3VyY2UuaCBiL2luY2x1ZGUvbGludXgvY2xvY2tzb3VyY2UuaAppbmRleCA1NWU0MzRmLi5mODhkMzJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nsb2Nrc291cmNlLmgKKysrIGIvaW5jbHVkZS9saW51eC9jbG9ja3NvdXJjZS5oCkBAIC00NSw3ICs0NSw4IEBACiAgKiBAcmVhZDoJCXJldHVybnMgYSBjeWNsZSB2YWx1ZQogICogQG1hc2s6CQliaXRtYXNrIGZvciB0d28ncyBjb21wbGVtZW50CiAgKgkJCXN1YnRyYWN0aW9uIG9mIG5vbiA2NCBiaXQgY291bnRlcnMKLSAqIEBtdWx0OgkJY3ljbGUgdG8gbmFub3NlY29uZCBtdWx0aXBsaWVyCisgKiBAbXVsdDoJCWN5Y2xlIHRvIG5hbm9zZWNvbmQgbXVsdGlwbGllciAoYWRqdXN0ZWQgYnkgTlRQKQorICogQG11bHRfb3JpZzoJCWN5Y2xlIHRvIG5hbm9zZWNvbmQgbXVsdGlwbGllciAodW5hZGp1c3RlZCBieSBOVFApCiAgKiBAc2hpZnQ6CQljeWNsZSB0byBuYW5vc2Vjb25kIGRpdmlzb3IgKHBvd2VyIG9mIHR3bykKICAqIEBmbGFnczoJCWZsYWdzIGRlc2NyaWJpbmcgc3BlY2lhbCBwcm9wZXJ0aWVzCiAgKiBAdnJlYWQ6CQl2c3lzY2FsbCBiYXNlZCByZWFkCkBAIC02Myw2ICs2NCw3IEBACiAJY3ljbGVfdCAoKnJlYWQpKHZvaWQpOwogCWN5Y2xlX3QgbWFzazsKIAl1MzIgbXVsdDsKKwl1MzIgbXVsdF9vcmlnOwogCXUzMiBzaGlmdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWN5Y2xlX3QgKCp2cmVhZCkodm9pZCk7CkBAIC03Nyw2ICs3OSw3IEBACiAJLyogdGltZWtlZXBpbmcgc3BlY2lmaWMgZGF0YSwgaWdub3JlICovCiAJY3ljbGVfdCBjeWNsZV9pbnRlcnZhbDsKIAl1NjQJeHRpbWVfaW50ZXJ2YWw7CisJdTMyCXJhd19pbnRlcnZhbDsKIAkvKgogCSAqIFNlY29uZCBwYXJ0IGlzIHdyaXR0ZW4gYXQgZWFjaCB0aW1lciBpbnRlcnJ1cHQKIAkgKiBLZWVwIGl0IGluIGEgZGlmZmVyZW50IGNhY2hlIGxpbmUgdG8gZGlydHkgbm8KQEAgLTg1LDYgKzg4LDcgQEAKIAljeWNsZV90IGN5Y2xlX2xhc3QgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKIAl1NjQgeHRpbWVfbnNlYzsKIAlzNjQgZXJyb3I7CisJc3RydWN0IHRpbWVzcGVjIHJhd190aW1lOwogCiAjaWZkZWYgQ09ORklHX0NMT0NLU09VUkNFX1dBVENIRE9HCiAJLyogV2F0Y2hkb2cgcmVsYXRlZCBkYXRhLCB1c2VkIGJ5IHRoZSBmcmFtZXdvcmsgKi8KQEAgLTIwMSwxNyArMjA1LDE5IEBACiB7CiAJdTY0IHRtcDsKIAotCS8qIFhYWCAtIEFsbCBvZiB0aGlzIGNvdWxkIHVzZSBhIHdob2xlIGxvdCBvZiBvcHRpbWl6YXRpb24gKi8KKwkvKiBEbyB0aGUgbnMgLT4gY3ljbGUgY29udmVyc2lvbiBmaXJzdCwgdXNpbmcgb3JpZ2luYWwgbXVsdCAqLwogCXRtcCA9IGxlbmd0aF9uc2VjOwogCXRtcCA8PD0gYy0+c2hpZnQ7Ci0JdG1wICs9IGMtPm11bHQvMjsKLQlkb19kaXYodG1wLCBjLT5tdWx0KTsKKwl0bXAgKz0gYy0+bXVsdF9vcmlnLzI7CisJZG9fZGl2KHRtcCwgYy0+bXVsdF9vcmlnKTsKIAogCWMtPmN5Y2xlX2ludGVydmFsID0gKGN5Y2xlX3QpdG1wOwogCWlmIChjLT5jeWNsZV9pbnRlcnZhbCA9PSAwKQogCQljLT5jeWNsZV9pbnRlcnZhbCA9IDE7CiAKKwkvKiBHbyBiYWNrIGZyb20gY3ljbGVzIC0+IHNoaWZ0ZWQgbnMsIHRoaXMgdGltZSB1c2UgbnRwIGFkanVzZWQgbXVsdCAqLwogCWMtPnh0aW1lX2ludGVydmFsID0gKHU2NCljLT5jeWNsZV9pbnRlcnZhbCAqIGMtPm11bHQ7CisJYy0+cmF3X2ludGVydmFsID0gKCh1NjQpYy0+Y3ljbGVfaW50ZXJ2YWwgKiBjLT5tdWx0X29yaWcpID4+IGMtPnNoaWZ0OwogfQogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZHZiL2Zyb250ZW5kLmggYi9pbmNsdWRlL2xpbnV4L2R2Yi9mcm9udGVuZC5oCmluZGV4IDZlNGFjZTIuLjc5YThlZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZHZiL2Zyb250ZW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9kdmIvZnJvbnRlbmQuaApAQCAtMTY2LDYgKzE2Niw3IEBACiAJVlNCXzE2LAogCVBTS184LAogCUFQU0tfMTYsCisJQVBTS18zMiwKIAlEUVBTSywKIH0gZmVfbW9kdWxhdGlvbl90OwogCkBAIC0yOTUsNiArMjk2LDcgQEAKIAlTWVNfRFZCQ19BTk5FWF9BQywKIAlTWVNfRFZCQ19BTk5FWF9CLAogCVNZU19EVkJULAorCVNZU19EU1MsCiAJU1lTX0RWQlMsCiAJU1lTX0RWQlMyLAogCVNZU19EVkJILApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ocnRpbWVyLmggYi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaAppbmRleCAyZjI0NWZlLi45YTRlMzVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2hydGltZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaApAQCAtMTI1LDEyICsxMjUsMTIgQEAKIAllbnVtIGhydGltZXJfcmVzdGFydAkJKCpmdW5jdGlvbikoc3RydWN0IGhydGltZXIgKik7CiAJc3RydWN0IGhydGltZXJfY2xvY2tfYmFzZQkqYmFzZTsKIAl1bnNpZ25lZCBsb25nCQkJc3RhdGU7Ci0JZW51bSBocnRpbWVyX2NiX21vZGUJCWNiX21vZGU7CiAJc3RydWN0IGxpc3RfaGVhZAkJY2JfZW50cnk7CisJZW51bSBocnRpbWVyX2NiX21vZGUJCWNiX21vZGU7CiAjaWZkZWYgQ09ORklHX1RJTUVSX1NUQVRTCisJaW50CQkJCXN0YXJ0X3BpZDsKIAl2b2lkCQkJCSpzdGFydF9zaXRlOwogCWNoYXIJCQkJc3RhcnRfY29tbVsxNl07Ci0JaW50CQkJCXN0YXJ0X3BpZDsKICNlbmRpZgogfTsKIApAQCAtMTU1LDEwICsxNTUsOCBAQAogICogQGZpcnN0OgkJcG9pbnRlciB0byB0aGUgdGltZXIgbm9kZSB3aGljaCBleHBpcmVzIGZpcnN0CiAgKiBAcmVzb2x1dGlvbjoJCXRoZSByZXNvbHV0aW9uIG9mIHRoZSBjbG9jaywgaW4gbmFub3NlY29uZHMKICAqIEBnZXRfdGltZToJCWZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHRpbWUgb2YgdGhlIGNsb2NrCi0gKiBAZ2V0X3NvZnRpcnFfdGltZToJZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdGltZSBmcm9tIHRoZSBzb2Z0aXJxCiAgKiBAc29mdGlycV90aW1lOgl0aGUgdGltZSB3aGVuIHJ1bm5pbmcgdGhlIGhydGltZXIgcXVldWUgaW4gdGhlIHNvZnRpcnEKICAqIEBvZmZzZXQ6CQlvZmZzZXQgb2YgdGhpcyBjbG9jayB0byB0aGUgbW9ub3RvbmljIGJhc2UKLSAqIEByZXByb2dyYW06CQlmdW5jdGlvbiB0byByZXByb2dyYW0gdGhlIHRpbWVyIGV2ZW50CiAgKi8KIHN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2UgewogCXN0cnVjdCBocnRpbWVyX2NwdV9iYXNlCSpjcHVfYmFzZTsKQEAgLTE2NywxMyArMTY1LDkgQEAKIAlzdHJ1Y3QgcmJfbm9kZQkJKmZpcnN0OwogCWt0aW1lX3QJCQlyZXNvbHV0aW9uOwogCWt0aW1lX3QJCQkoKmdldF90aW1lKSh2b2lkKTsKLQlrdGltZV90CQkJKCpnZXRfc29mdGlycV90aW1lKSh2b2lkKTsKIAlrdGltZV90CQkJc29mdGlycV90aW1lOwogI2lmZGVmIENPTkZJR19ISUdIX1JFU19USU1FUlMKIAlrdGltZV90CQkJb2Zmc2V0OwotCWludAkJCSgqcmVwcm9ncmFtKShzdHJ1Y3QgaHJ0aW1lciAqdCwKLQkJCQkJICAgICBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlICpiLAotCQkJCQkgICAgIGt0aW1lX3Qgbik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaTJjLWlkLmggYi9pbmNsdWRlL2xpbnV4L2kyYy1pZC5oCmluZGV4IDQ5MzQzNWIuLjAxZDY3YmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaTJjLWlkLmgKKysrIGIvaW5jbHVkZS9saW51eC9pMmMtaWQuaApAQCAtNjAsNyArNjAsNyBAQAogI2RlZmluZSBJMkNfRFJJVkVSSURfV004Nzc1CTY5CS8qIHdtODc3NSBhdWRpbyBwcm9jZXNzb3IJKi8KICNkZWZpbmUgSTJDX0RSSVZFUklEX0NTNTNMMzJBCTcwCS8qIGNzNTNsMzJhIGF1ZGlvIHByb2Nlc3NvcgkqLwogI2RlZmluZSBJMkNfRFJJVkVSSURfQ1gyNTg0MAk3MQkvKiBjeDI1ODR4IHZpZGVvIGVuY29kZXIJKi8KLSNkZWZpbmUgSTJDX0RSSVZFUklEX1NBQTcxMjcJNzIJLyogc2FhNzEyNCB2aWRlbyBlbmNvZGVyCSovCisjZGVmaW5lIEkyQ19EUklWRVJJRF9TQUE3MTI3CTcyCS8qIHNhYTcxMjcgdmlkZW8gZW5jb2RlcgkqLwogI2RlZmluZSBJMkNfRFJJVkVSSURfU0FBNzExWAk3MwkvKiBzYWE3MTF4IHZpZGVvIGVuY29kZXJzCSovCiAjZGVmaW5lIEkyQ19EUklWRVJJRF9BS0lUQUlPRVhQCTc0CS8qIElPIEV4cGFuZGVyIG9uIFNoYXJwIFNMLUMxMDAwICovCiAjZGVmaW5lIEkyQ19EUklWRVJJRF9JTkZSQVJFRAk3NQkvKiBJMkMgSW5mcmFSZWQgb24gVmlkZW8gYm9hcmRzICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIGIvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaAppbmRleCA1NGIzNjIzLi4zNWE2MWRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlIDxsaW51eC9oYXJkaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9pcnFmbGFncy5oPgorI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgorI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS5oPgogI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgpAQCAtMjczLDYgKzI3NSwyNSBAQAogZXh0ZXJuIHZvaWQgcmFpc2Vfc29mdGlycV9pcnFvZmYodW5zaWduZWQgaW50IG5yKTsKIGV4dGVybiB2b2lkIHJhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IG5yKTsKIAorLyogVGhpcyBpcyB0aGUgd29ya2xpc3QgdGhhdCBxdWV1ZXMgdXAgcGVyLWNwdSBzb2Z0aXJxIHdvcmsuCisgKgorICogc2VuZF9yZW1vdGVfc2VuZGlycSgpIGFkZHMgd29yayB0byB0aGVzZSBsaXN0cywgYW5kCisgKiB0aGUgc29mdGlycSBoYW5kbGVyIGl0c2VsZiBkZXF1ZXVlcyBmcm9tIHRoZW0uICBUaGUgcXVldWVzCisgKiBhcmUgcHJvdGVjdGVkIGJ5IGRpc2FibGluZyBsb2NhbCBjcHUgaW50ZXJydXB0cyBhbmQgdGhleSBtdXN0CisgKiBvbmx5IGJlIGFjY2Vzc2VkIGJ5IHRoZSBsb2NhbCBjcHUgdGhhdCB0aGV5IGFyZSBmb3IuCisgKi8KK0RFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbGlzdF9oZWFkIFtOUl9TT0ZUSVJRU10sIHNvZnRpcnFfd29ya19saXN0KTsKKworLyogVHJ5IHRvIHNlbmQgYSBzb2Z0aXJxIHRvIGEgcmVtb3RlIGNwdS4gIElmIHRoaXMgY2Fubm90IGJlIGRvbmUsIHRoZQorICogd29yayB3aWxsIGJlIHF1ZXVlZCB0byB0aGUgbG9jYWwgY3B1LgorICovCitleHRlcm4gdm9pZCBzZW5kX3JlbW90ZV9zb2Z0aXJxKHN0cnVjdCBjYWxsX3NpbmdsZV9kYXRhICpjcCwgaW50IGNwdSwgaW50IHNvZnRpcnEpOworCisvKiBMaWtlIHNlbmRfcmVtb3RlX3NvZnRpcnEoKSwgYnV0IHRoZSBjYWxsZXIgbXVzdCBkaXNhYmxlIGxvY2FsIGNwdSBpbnRlcnJ1cHRzCisgKiBhbmQgY29tcHV0ZSB0aGUgY3VycmVudCBjcHUsIHBhc3NlZCBpbiBhcyAndGhpc19jcHUnLgorICovCitleHRlcm4gdm9pZCBfX3NlbmRfcmVtb3RlX3NvZnRpcnEoc3RydWN0IGNhbGxfc2luZ2xlX2RhdGEgKmNwLCBpbnQgY3B1LAorCQkJCSAgaW50IHRoaXNfY3B1LCBpbnQgc29mdGlycSk7CiAKIC8qIFRhc2tsZXRzIC0tLSBtdWx0aXRocmVhZGVkIGFuYWxvZ3VlIG9mIEJIcy4KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9qYmQyLmggYi9pbmNsdWRlL2xpbnV4L2piZDIuaAppbmRleCA0NjNkNmYxLi5jN2QxMDZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2piZDIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2piZDIuaApAQCAtNjQxLDYgKzY0MSwxMSBAQAogCSAqLwogCWludCB0X2hhbmRsZV9jb3VudDsKIAorCS8qCisJICogRm9yIHVzZSBieSB0aGUgZmlsZXN5c3RlbSB0byBzdG9yZSBmcy1zcGVjaWZpYyBkYXRhCisJICogc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRyYW5zYWN0aW9uCisJICovCisJc3RydWN0IGxpc3RfaGVhZAl0X3ByaXZhdGVfbGlzdDsKIH07CiAKIHN0cnVjdCB0cmFuc2FjdGlvbl9ydW5fc3RhdHNfcyB7CkBAIC05MzUsNiArOTQwLDEwIEBACiAKIAlwaWRfdAkJCWpfbGFzdF9zeW5jX3dyaXRlcjsKIAorCS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSB0cmFuc2FjdGlvbiBpcyBjbG9zZWQgKi8KKwl2b2lkCQkJKCpqX2NvbW1pdF9jYWxsYmFjaykoam91cm5hbF90ICosCisJCQkJCQkgICAgIHRyYW5zYWN0aW9uX3QgKik7CisKIAkvKgogCSAqIEpvdXJuYWwgc3RhdGlzdGljcwogCSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rZXJuZWwuaCBiL2luY2x1ZGUvbGludXgva2VybmVsLmgKaW5kZXggNjgwMzMxOC4uNWE1NjZiNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rZXJuZWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oCkBAIC0yNjUsNiArMjY1LDcgQEAKICNkZWZpbmUgVEFJTlRfRElFCQkJNwogI2RlZmluZSBUQUlOVF9PVkVSUklEREVOX0FDUElfVEFCTEUJOAogI2RlZmluZSBUQUlOVF9XQVJOCQkJOQorI2RlZmluZSBUQUlOVF9DUkFQCQkJMTAKIAogZXh0ZXJuIHZvaWQgZHVtcF9zdGFjayh2b2lkKSBfX2NvbGQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCBiL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaAppbmRleCBjZjlmNDBhLi5jYWMzNzUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgKKysrIGIvaW5jbHVkZS9saW51eC9rZXJuZWxfc3RhdC5oCkBAIC01Miw2ICs1Miw3IEBACiAJcmV0dXJuIHN1bTsKIH0KIAorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyB0YXNrX2RlbHRhX2V4ZWMoc3RydWN0IHRhc2tfc3RydWN0ICopOwogZXh0ZXJuIHZvaWQgYWNjb3VudF91c2VyX3RpbWUoc3RydWN0IHRhc2tfc3RydWN0ICosIGNwdXRpbWVfdCk7CiBleHRlcm4gdm9pZCBhY2NvdW50X3VzZXJfdGltZV9zY2FsZWQoc3RydWN0IHRhc2tfc3RydWN0ICosIGNwdXRpbWVfdCk7CiBleHRlcm4gdm9pZCBhY2NvdW50X3N5c3RlbV90aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQsIGNwdXRpbWVfdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIGIvaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaAppbmRleCBhN2RkMzhmLi5hN2M3MjEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oCisrKyBiL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgKQEAgLTQ1LDggKzQ1LDYgQEAKIAlpbnQgaXRfcmVxdWV1ZV9wZW5kaW5nOwkJLyogd2FpdGluZyB0byByZXF1ZXVlIHRoaXMgdGltZXIgKi8KICNkZWZpbmUgUkVRVUVVRV9QRU5ESU5HIDEKIAlpbnQgaXRfc2lnZXZfbm90aWZ5OwkJLyogbm90aWZ5IHdvcmQgb2Ygc2lnZXZlbnQgc3RydWN0ICovCi0JaW50IGl0X3NpZ2V2X3NpZ25vOwkJLyogc2lnbm8gd29yZCBvZiBzaWdldmVudCBzdHJ1Y3QgKi8KLQlzaWd2YWxfdCBpdF9zaWdldl92YWx1ZTsJLyogdmFsdWUgd29yZCBvZiBzaWdldmVudCBzdHJ1Y3QgKi8KIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKml0X3Byb2Nlc3M7CS8qIHByb2Nlc3MgdG8gc2VuZCBzaWduYWwgdG8gKi8KIAlzdHJ1Y3Qgc2lncXVldWUgKnNpZ3E7CQkvKiBzaWduYWwgcXVldWUgZW50cnkuICovCiAJdW5pb24gewpAQCAtMTE1LDQgKzExMyw2IEBACiAKIGxvbmcgY2xvY2tfbmFub3NsZWVwX3Jlc3RhcnQoc3RydWN0IHJlc3RhcnRfYmxvY2sgKnJlc3RhcnRfYmxvY2spOwogCit2b2lkIHVwZGF0ZV9ybGltaXRfY3B1KHVuc2lnbmVkIGxvbmcgcmxpbV9uZXcpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCBjMjI2YzdiLi44MWM2OGZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC00MjUsNiArNDI1LDM5IEBACiAJdW5zaWduZWQgbG9uZwkJYWNfbWluZmx0LCBhY19tYWpmbHQ7CiB9OwogCisvKioKKyAqIHN0cnVjdCB0YXNrX2NwdXRpbWUgLSBjb2xsZWN0ZWQgQ1BVIHRpbWUgY291bnRzCisgKiBAdXRpbWU6CQl0aW1lIHNwZW50IGluIHVzZXIgbW9kZSwgaW4gJmNwdXRpbWVfdCB1bml0cworICogQHN0aW1lOgkJdGltZSBzcGVudCBpbiBrZXJuZWwgbW9kZSwgaW4gJmNwdXRpbWVfdCB1bml0cworICogQHN1bV9leGVjX3J1bnRpbWU6CXRvdGFsIHRpbWUgc3BlbnQgb24gdGhlIENQVSwgaW4gbmFub3NlY29uZHMKKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBncm91cHMgdG9nZXRoZXIgdGhyZWUga2luZHMgb2YgQ1BVIHRpbWUgdGhhdCBhcmUKKyAqIHRyYWNrZWQgZm9yIHRocmVhZHMgYW5kIHRocmVhZCBncm91cHMuICBNb3N0IHRoaW5ncyBjb25zaWRlcmluZworICogQ1BVIHRpbWUgd2FudCB0byBncm91cCB0aGVzZSBjb3VudHMgdG9nZXRoZXIgYW5kIHRyZWF0IGFsbCB0aHJlZQorICogb2YgdGhlbSBpbiBwYXJhbGxlbC4KKyAqLworc3RydWN0IHRhc2tfY3B1dGltZSB7CisJY3B1dGltZV90IHV0aW1lOworCWNwdXRpbWVfdCBzdGltZTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgc3VtX2V4ZWNfcnVudGltZTsKK307CisvKiBBbHRlcm5hdGUgZmllbGQgbmFtZXMgd2hlbiB1c2VkIHRvIGNhY2hlIGV4cGlyYXRpb25zLiAqLworI2RlZmluZSBwcm9mX2V4cAlzdGltZQorI2RlZmluZSB2aXJ0X2V4cAl1dGltZQorI2RlZmluZSBzY2hlZF9leHAJc3VtX2V4ZWNfcnVudGltZQorCisvKioKKyAqIHN0cnVjdCB0aHJlYWRfZ3JvdXBfY3B1dGltZSAtIHRocmVhZCBncm91cCBpbnRlcnZhbCB0aW1lciBjb3VudHMKKyAqIEB0b3RhbHM6CQl0aHJlYWQgZ3JvdXAgaW50ZXJ2YWwgdGltZXJzOyBzdWJzdHJ1Y3R1cmUgZm9yCisgKgkJCXVuaXByb2Nlc3NvciBrZXJuZWwsIHBlci1jcHUgZm9yIFNNUCBrZXJuZWwuCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIHZlcnNpb24gb2YgdGFza19jcHV0aW1lLCBhYm92ZSwgdGhhdCBpcworICogdXNlZCBmb3IgdGhyZWFkIGdyb3VwIENQVSBjbG9jayBjYWxjdWxhdGlvbnMuCisgKi8KK3N0cnVjdCB0aHJlYWRfZ3JvdXBfY3B1dGltZSB7CisJc3RydWN0IHRhc2tfY3B1dGltZSAqdG90YWxzOworfTsKKwogLyoKICAqIE5PVEUhICJzaWduYWxfc3RydWN0IiBkb2VzIG5vdCBoYXZlIGl0J3Mgb3duCiAgKiBsb2NraW5nLCBiZWNhdXNlIGEgc2hhcmVkIHNpZ25hbF9zdHJ1Y3QgYWx3YXlzCkBAIC00NzAsNiArNTAzLDE3IEBACiAJY3B1dGltZV90IGl0X3Byb2ZfZXhwaXJlcywgaXRfdmlydF9leHBpcmVzOwogCWNwdXRpbWVfdCBpdF9wcm9mX2luY3IsIGl0X3ZpcnRfaW5jcjsKIAorCS8qCisJICogVGhyZWFkIGdyb3VwIHRvdGFscyBmb3IgcHJvY2VzcyBDUFUgY2xvY2tzLgorCSAqIFNlZSB0aHJlYWRfZ3JvdXBfY3B1dGltZSgpLCBldCBhbCwgZm9yIGRldGFpbHMuCisJICovCisJc3RydWN0IHRocmVhZF9ncm91cF9jcHV0aW1lIGNwdXRpbWU7CisKKwkvKiBFYXJsaWVzdC1leHBpcmF0aW9uIGNhY2hlLiAqLworCXN0cnVjdCB0YXNrX2NwdXRpbWUgY3B1dGltZV9leHBpcmVzOworCisJc3RydWN0IGxpc3RfaGVhZCBjcHVfdGltZXJzWzNdOworCiAJLyogam9iIGNvbnRyb2wgSURzICovCiAKIAkvKgpAQCAtNTAwLDcgKzU0NCw3IEBACiAJICogTGl2ZSB0aHJlYWRzIG1haW50YWluIHRoZWlyIG93biBjb3VudGVycyBhbmQgYWRkIHRvIHRoZXNlCiAJICogaW4gX19leGl0X3NpZ25hbCwgZXhjZXB0IGZvciB0aGUgZ3JvdXAgbGVhZGVyLgogCSAqLwotCWNwdXRpbWVfdCB1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lOworCWNwdXRpbWVfdCBjdXRpbWUsIGNzdGltZTsKIAljcHV0aW1lX3QgZ3RpbWU7CiAJY3B1dGltZV90IGNndGltZTsKIAl1bnNpZ25lZCBsb25nIG52Y3N3LCBuaXZjc3csIGNudmNzdywgY25pdmNzdzsKQEAgLTUwOSwxNCArNTUzLDYgQEAKIAlzdHJ1Y3QgdGFza19pb19hY2NvdW50aW5nIGlvYWM7CiAKIAkvKgotCSAqIEN1bXVsYXRpdmUgbnMgb2Ygc2NoZWR1bGVkIENQVSB0aW1lIGZvciBkZWFkIHRocmVhZHMgaW4gdGhlCi0JICogZ3JvdXAsIG5vdCBpbmNsdWRpbmcgYSB6b21iaWUgZ3JvdXAgbGVhZGVyLiAgKFRoaXMgb25seSBkaWZmZXJzCi0JICogZnJvbSBqaWZmaWVzX3RvX25zKHV0aW1lICsgc3RpbWUpIGlmIHNjaGVkX2Nsb2NrIHVzZXMgc29tZXRoaW5nCi0JICogb3RoZXIgdGhhbiBqaWZmaWVzLikKLQkgKi8KLQl1bnNpZ25lZCBsb25nIGxvbmcgc3VtX3NjaGVkX3J1bnRpbWU7Ci0KLQkvKgogCSAqIFdlIGRvbid0IGJvdGhlciB0byBzeW5jaHJvbml6ZSBtb3N0IHJlYWRlcnMgb2YgdGhpcyBhdCBhbGwsCiAJICogYmVjYXVzZSB0aGVyZSBpcyBubyByZWFkZXIgY2hlY2tpbmcgYSBsaW1pdCB0aGF0IGFjdHVhbGx5IG5lZWRzCiAJICogdG8gZ2V0IGJvdGggcmxpbV9jdXIgYW5kIHJsaW1fbWF4IGF0b21pY2FsbHksIGFuZCBlaXRoZXIgb25lCkBAIC01MjcsOCArNTYzLDYgQEAKIAkgKi8KIAlzdHJ1Y3QgcmxpbWl0IHJsaW1bUkxJTV9OTElNSVRTXTsKIAotCXN0cnVjdCBsaXN0X2hlYWQgY3B1X3RpbWVyc1szXTsKLQogCS8qIGtlZXAgdGhlIHByb2Nlc3Mtc2hhcmVkIGtleXJpbmdzIGhlcmUgc28gdGhhdCB0aGV5IGRvIHRoZSByaWdodAogCSAqIHRoaW5nIGluIHRocmVhZHMgY3JlYXRlZCB3aXRoIENMT05FX1RIUkVBRCAqLwogI2lmZGVmIENPTkZJR19LRVlTCkBAIC0xMTM3LDggKzExNzEsNyBAQAogLyogbW0gZmF1bHQgYW5kIHN3YXAgaW5mbzogdGhpcyBjYW4gYXJndWFibHkgYmUgc2VlbiBhcyBlaXRoZXIgbW0tc3BlY2lmaWMgb3IgdGhyZWFkLXNwZWNpZmljICovCiAJdW5zaWduZWQgbG9uZyBtaW5fZmx0LCBtYWpfZmx0OwogCi0gIAljcHV0aW1lX3QgaXRfcHJvZl9leHBpcmVzLCBpdF92aXJ0X2V4cGlyZXM7Ci0JdW5zaWduZWQgbG9uZyBsb25nIGl0X3NjaGVkX2V4cGlyZXM7CisJc3RydWN0IHRhc2tfY3B1dGltZSBjcHV0aW1lX2V4cGlyZXM7CiAJc3RydWN0IGxpc3RfaGVhZCBjcHVfdGltZXJzWzNdOwogCiAvKiBwcm9jZXNzIGNyZWRlbnRpYWxzICovCkBAIC0xNTg4LDYgKzE2MjEsNyBAQAogCiBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nCiB0YXNrX3NjaGVkX3J1bnRpbWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgdGhyZWFkX2dyb3VwX3NjaGVkX3J1bnRpbWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKIAogLyogc2NoZWRfZXhlYyBpcyBjYWxsZWQgYnkgcHJvY2Vzc2VzIHBlcmZvcm1pbmcgYW4gZXhlYyAqLwogI2lmZGVmIENPTkZJR19TTVAKQEAgLTIwODUsNiArMjExOSwzMCBAQAogfQogCiAvKgorICogVGhyZWFkIGdyb3VwIENQVSB0aW1lIGFjY291bnRpbmcuCisgKi8KKworZXh0ZXJuIGludCB0aHJlYWRfZ3JvdXBfY3B1dGltZV9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CitleHRlcm4gdm9pZCB0aHJlYWRfZ3JvdXBfY3B1dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHRhc2tfY3B1dGltZSAqKTsKKworc3RhdGljIGlubGluZSB2b2lkIHRocmVhZF9ncm91cF9jcHV0aW1lX2luaXQoc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZykKK3sKKwlzaWctPmNwdXRpbWUudG90YWxzID0gTlVMTDsKK30KKworc3RhdGljIGlubGluZSBpbnQgdGhyZWFkX2dyb3VwX2NwdXRpbWVfY2xvbmVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqY3VycikKK3sKKwlpZiAoY3Vyci0+c2lnbmFsLT5jcHV0aW1lLnRvdGFscykKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHRocmVhZF9ncm91cF9jcHV0aW1lX2FsbG9jKGN1cnIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkX2dyb3VwX2NwdXRpbWVfZnJlZShzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnKQoreworCWZyZWVfcGVyY3B1KHNpZy0+Y3B1dGltZS50b3RhbHMpOworfQorCisvKgogICogUmVldmFsdWF0ZSB3aGV0aGVyIHRoZSB0YXNrIGhhcyBzaWduYWxzIHBlbmRpbmcgZGVsaXZlcnkuCiAgKiBXYWtlIHRoZSB0YXNrIGlmIHNvLgogICogVGhpcyBpcyByZXF1aXJlZCBldmVyeSB0aW1lIHRoZSBibG9ja2VkIHNpZ3NldF90IGNoYW5nZXMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NtcC5oIGIvaW5jbHVkZS9saW51eC9zbXAuaAppbmRleCA2NjQ4NGQ0Li4yZTRkNThiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NtcC5oCisrKyBiL2luY2x1ZGUvbGludXgvc21wLmgKQEAgLTcsNiArNyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvY3B1bWFzay5oPgogCkBAIC0xNiw3ICsxNyw4IEBACiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXZvaWQgKCpmdW5jKSAodm9pZCAqaW5mbyk7CiAJdm9pZCAqaW5mbzsKLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJdTE2IGZsYWdzOworCXUxNiBwcml2OwogfTsKIAogI2lmZGVmIENPTkZJR19TTVAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZS5oIGIvaW5jbHVkZS9saW51eC90aW1lLmgKaW5kZXggNTFlODgzZC4uNGYxYzlkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90aW1lLmgKKysrIGIvaW5jbHVkZS9saW51eC90aW1lLmgKQEAgLTExOSw2ICsxMTksNyBAQAogZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybV9zZXRpdGltZXIodW5zaWduZWQgaW50IHNlY29uZHMpOwogZXh0ZXJuIGludCBkb19nZXRpdGltZXIoaW50IHdoaWNoLCBzdHJ1Y3QgaXRpbWVydmFsICp2YWx1ZSk7CiBleHRlcm4gdm9pZCBnZXRuc3RpbWVvZmRheShzdHJ1Y3QgdGltZXNwZWMgKnR2KTsKK2V4dGVybiB2b2lkIGdldHJhd21vbm90b25pYyhzdHJ1Y3QgdGltZXNwZWMgKnRzKTsKIGV4dGVybiB2b2lkIGdldGJvb3R0aW1lKHN0cnVjdCB0aW1lc3BlYyAqdHMpOwogZXh0ZXJuIHZvaWQgbW9ub3RvbmljX3RvX2Jvb3RiYXNlZChzdHJ1Y3QgdGltZXNwZWMgKnRzKTsKIApAQCAtMTI3LDYgKzEyOCw5IEBACiBleHRlcm4gdm9pZCB1cGRhdGVfd2FsbF90aW1lKHZvaWQpOwogZXh0ZXJuIHZvaWQgdXBkYXRlX3h0aW1lX2NhY2hlKHU2NCBuc2VjKTsKIAorc3RydWN0IHRtczsKK2V4dGVybiB2b2lkIGRvX3N5c190aW1lcyhzdHJ1Y3QgdG1zICopOworCiAvKioKICAqIHRpbWVzcGVjX3RvX25zIC0gQ29udmVydCB0aW1lc3BlYyB0byBuYW5vc2Vjb25kcwogICogQHRzOgkJcG9pbnRlciB0byB0aGUgdGltZXNwZWMgdmFyaWFibGUgdG8gYmUgY29udmVydGVkCkBAIC0yMTYsNiArMjIwLDcgQEAKICNkZWZpbmUgQ0xPQ0tfTU9OT1RPTklDCQkJMQogI2RlZmluZSBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQJMgogI2RlZmluZSBDTE9DS19USFJFQURfQ1BVVElNRV9JRAkJMworI2RlZmluZSBDTE9DS19NT05PVE9OSUNfUkFXCQk0CiAKIC8qCiAgKiBUaGUgSURzIG9mIHZhcmlvdXMgaGFyZHdhcmUgY2xvY2tzOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1leC5oIGIvaW5jbHVkZS9saW51eC90aW1leC5oCmluZGV4IGZjNjAzNWQuLjkwMDczMTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdGltZXguaAorKysgYi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgKQEAgLTgyLDcgKzgyLDcgQEAKICAqLwogI2RlZmluZSBTSElGVF9VU0VDIDE2CQkvKiBmcmVxdWVuY3kgb2Zmc2V0IHNjYWxlIChzaGlmdCkgKi8KICNkZWZpbmUgUFBNX1NDQUxFIChOU0VDX1BFUl9VU0VDIDw8IChOVFBfU0NBTEVfU0hJRlQgLSBTSElGVF9VU0VDKSkKLSNkZWZpbmUgUFBNX1NDQUxFX0lOVl9TSElGVCAyMAorI2RlZmluZSBQUE1fU0NBTEVfSU5WX1NISUZUIDE5CiAjZGVmaW5lIFBQTV9TQ0FMRV9JTlYgKCgxbGwgPDwgKFBQTV9TQ0FMRV9JTlZfU0hJRlQgKyBOVFBfU0NBTEVfU0hJRlQpKSAvIFwKIAkJICAgICAgIFBQTV9TQ0FMRSArIDEpCiAKQEAgLTE0MSw4ICsxNDEsMTUgQEAKICNkZWZpbmUgQURKX01JQ1JPCQkweDEwMDAJLyogc2VsZWN0IG1pY3Jvc2Vjb25kIHJlc29sdXRpb24gKi8KICNkZWZpbmUgQURKX05BTk8JCTB4MjAwMAkvKiBzZWxlY3QgbmFub3NlY29uZCByZXNvbHV0aW9uICovCiAjZGVmaW5lIEFESl9USUNLCQkweDQwMDAJLyogdGljayB2YWx1ZSAqLworCisjaWZkZWYgX19LRVJORUxfXworI2RlZmluZSBBREpfQURKVElNRQkJMHg4MDAwCS8qIHN3aXRjaCBiZXR3ZWVuIGFkanRpbWUvYWRqdGltZXggbW9kZXMgKi8KKyNkZWZpbmUgQURKX09GRlNFVF9TSU5HTEVTSE9UCTB4MDAwMQkvKiBvbGQtZmFzaGlvbmVkIGFkanRpbWUgKi8KKyNkZWZpbmUgQURKX09GRlNFVF9SRUFET05MWQkweDIwMDAJLyogcmVhZC1vbmx5IGFkanRpbWUgKi8KKyNlbHNlCiAjZGVmaW5lIEFESl9PRkZTRVRfU0lOR0xFU0hPVAkweDgwMDEJLyogb2xkLWZhc2hpb25lZCBhZGp0aW1lICovCi0jZGVmaW5lIEFESl9PRkZTRVRfU1NfUkVBRAkweGEwMDEgIC8qIHJlYWQtb25seSBhZGp0aW1lICovCisjZGVmaW5lIEFESl9PRkZTRVRfU1NfUkVBRAkweGEwMDEJLyogcmVhZC1vbmx5IGFkanRpbWUgKi8KKyNlbmRpZgogCiAvKiB4bnRwIDMuNCBjb21wYXRpYmlsaXR5IG5hbWVzICovCiAjZGVmaW5lIE1PRF9PRkZTRVQJQURKX09GRlNFVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmgKaW5kZXggOTRhYzc0YS4uOGZhOTczYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi5oCkBAIC0xMTM1LDYgKzExMzUsNyBAQAogCXN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3Q7CiAJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKIAlzcGlubG9ja190IGxvY2s7CisJdW5zaWduZWQgaW50IHBvaXNvbmVkOjE7CiB9OwogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfYW5jaG9yKHN0cnVjdCB1c2JfYW5jaG9yICphbmNob3IpCkBAIC0xNDU5LDEyICsxNDYwLDE4IEBACiBleHRlcm4gaW50IHVzYl9zdWJtaXRfdXJiKHN0cnVjdCB1cmIgKnVyYiwgZ2ZwX3QgbWVtX2ZsYWdzKTsKIGV4dGVybiBpbnQgdXNiX3VubGlua191cmIoc3RydWN0IHVyYiAqdXJiKTsKIGV4dGVybiB2b2lkIHVzYl9raWxsX3VyYihzdHJ1Y3QgdXJiICp1cmIpOworZXh0ZXJuIHZvaWQgdXNiX3BvaXNvbl91cmIoc3RydWN0IHVyYiAqdXJiKTsKK2V4dGVybiB2b2lkIHVzYl91bnBvaXNvbl91cmIoc3RydWN0IHVyYiAqdXJiKTsKIGV4dGVybiB2b2lkIHVzYl9raWxsX2FuY2hvcmVkX3VyYnMoc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcik7CitleHRlcm4gdm9pZCB1c2JfcG9pc29uX2FuY2hvcmVkX3VyYnMoc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcik7CiBleHRlcm4gdm9pZCB1c2JfdW5saW5rX2FuY2hvcmVkX3VyYnMoc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcik7CiBleHRlcm4gdm9pZCB1c2JfYW5jaG9yX3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCB1c2JfYW5jaG9yICphbmNob3IpOwogZXh0ZXJuIHZvaWQgdXNiX3VuYW5jaG9yX3VyYihzdHJ1Y3QgdXJiICp1cmIpOwogZXh0ZXJuIGludCB1c2Jfd2FpdF9hbmNob3JfZW1wdHlfdGltZW91dChzdHJ1Y3QgdXNiX2FuY2hvciAqYW5jaG9yLAogCQkJCQkgdW5zaWduZWQgaW50IHRpbWVvdXQpOworZXh0ZXJuIHN0cnVjdCB1cmIgKnVzYl9nZXRfZnJvbV9hbmNob3Ioc3RydWN0IHVzYl9hbmNob3IgKmFuY2hvcik7CitleHRlcm4gdm9pZCB1c2Jfc2N1dHRsZV9hbmNob3JlZF91cmJzKHN0cnVjdCB1c2JfYW5jaG9yICphbmNob3IpOworZXh0ZXJuIGludCB1c2JfYW5jaG9yX2VtcHR5KHN0cnVjdCB1c2JfYW5jaG9yICphbmNob3IpOwogCiAvKioKICAqIHVzYl91cmJfZGlyX2luIC0gY2hlY2sgaWYgYW4gVVJCIGRlc2NyaWJlcyBhbiBJTiB0cmFuc2ZlcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvS2J1aWxkIGIvaW5jbHVkZS9saW51eC91c2IvS2J1aWxkCmluZGV4IDQyZTg0ZmMuLjU0YzQ0NjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL0tidWlsZAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9LYnVpbGQKQEAgLTQsNCArNCw1IEBACiBoZWFkZXIteSArPSBnYWRnZXRmcy5oCiBoZWFkZXIteSArPSBtaWRpLmgKIGhlYWRlci15ICs9IGdfcHJpbnRlci5oCi0KK2hlYWRlci15ICs9IHRtYy5oCitoZWFkZXIteSArPSB2c3R1c2IuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvY2RjLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9jZGMuaAppbmRleCBjYTIyOGJiLi4xOGE3MjkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jZGMuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jZGMuaApAQCAtMTYwLDYgKzE2MCwxNSBAQAogCV9fdTgJYkRldGFpbERhdGFbMF07CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAorLyogIk9CRVggQ29udHJvbCBNb2RlbCBGdW5jdGlvbmFsIERlc2NyaXB0b3IiICovCitzdHJ1Y3QgdXNiX2NkY19vYmV4X2Rlc2MgeworCV9fdTgJYkxlbmd0aDsKKwlfX3U4CWJEZXNjcmlwdG9yVHlwZTsKKwlfX3U4CWJEZXNjcmlwdG9yU3ViVHlwZTsKKworCV9fbGUxNgliY2RWZXJzaW9uOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCmluZGV4IGM5MzIzOTAuLjkzNWMzODAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCkBAIC0xMzAsNiArMTMwLDkgQEAKIAogaW50IHVzYl9hZGRfZnVuY3Rpb24oc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICosIHN0cnVjdCB1c2JfZnVuY3Rpb24gKik7CiAKK2ludCB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICopOworaW50IHVzYl9mdW5jdGlvbl9hY3RpdmF0ZShzdHJ1Y3QgdXNiX2Z1bmN0aW9uICopOworCiBpbnQgdXNiX2ludGVyZmFjZV9pZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKiwgc3RydWN0IHVzYl9mdW5jdGlvbiAqKTsKIAogLyoqCkBAIC0zMTYsOSArMzE5LDEzIEBACiAJc3RydWN0IHVzYl9jb21wb3NpdGVfZHJpdmVyCSpkcml2ZXI7CiAJdTgJCQkJbmV4dF9zdHJpbmdfaWQ7CiAKLQlzcGlubG9ja190CQkJbG9jazsKKwkvKiB0aGUgZ2FkZ2V0IGRyaXZlciB3b24ndCBlbmFibGUgdGhlIGRhdGEgcHVsbHVwCisJICogd2hpbGUgdGhlIGRlYWN0aXZhdGlvbiBjb3VudCBpcyBub256ZXJvLgorCSAqLworCXVuc2lnbmVkCQkJZGVhY3RpdmF0aW9uczsKIAotCS8qIFJFVklTSVQgdXNlIGFuZCBleGlzdGVuY2Ugb2YgbG9jayAuLi4gKi8KKwkvKiBwcm90ZWN0cyBhdCBsZWFzdCBkZWFjdGl2YXRpb24gY291bnQgKi8KKwlzcGlubG9ja190CQkJbG9jazsKIH07CiAKIGV4dGVybiBpbnQgdXNiX3N0cmluZ19pZChzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2Ivc2VyaWFsLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9zZXJpYWwuaAppbmRleCA2NTUzNDFkLi4wYjg2MTdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9zZXJpYWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9zZXJpYWwuaApAQCAtMTkyLDcgKzE5Miw3IEBACiAgKiBUaGUgZHJpdmVyLm93bmVyIGZpZWxkIHNob3VsZCBiZSBzZXQgdG8gdGhlIG1vZHVsZSBvd25lciBvZiB0aGlzIGRyaXZlci4KICAqIFRoZSBkcml2ZXIubmFtZSBmaWVsZCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoaXMgZHJpdmVyIChyZW1lbWJlcgogICogaXQgd2lsbCBzaG93IHVwIGluIHN5c2ZzLCBzbyBpdCBuZWVkcyB0byBiZSBzaG9ydCBhbmQgdG8gdGhlIHBvaW50LgotICogVXNlaW5nIHRoZSBtb2R1bGUgbmFtZSBpcyBhIGdvb2QgaWRlYS4pCisgKiBVc2luZyB0aGUgbW9kdWxlIG5hbWUgaXMgYSBnb29kIGlkZWEuKQogICovCiBzdHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIgewogCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdG1jLmggYi9pbmNsdWRlL2xpbnV4L3VzYi90bWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDQ1YWUxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC91c2IvdG1jLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTdGVmYW4gS29wcCwgR2VjaGluZ2VuLCBHZXJtYW55CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm92ZWxsLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KKyAqCisgKiBUaGlzIGZpbGUgaG9sZHMgVVNCIGNvbnN0YW50cyBkZWZpbmVkIGJ5IHRoZSBVU0IgRGV2aWNlIENsYXNzCisgKiBEZWZpbml0aW9uIGZvciBUZXN0IGFuZCBNZWFzdXJlbWVudCBkZXZpY2VzIHB1Ymxpc2hlZCBieSB0aGUgVVNCLUlGLgorICoKKyAqIEl0IGFsc28gaGFzIHRoZSBpb2N0bCBkZWZpbml0aW9ucyBmb3IgdGhlIHVzYnRtYyBrZXJuZWwgZHJpdmVyIHRoYXQKKyAqIHVzZXJzcGFjZSBuZWVkcyB0byBrbm93IGFib3V0LgorICovCisKKyNpZm5kZWYgX19MSU5VWF9VU0JfVE1DX0gKKyNkZWZpbmUgX19MSU5VWF9VU0JfVE1DX0gKKworLyogVVNCIFRNQyBzdGF0dXMgdmFsdWVzICovCisjZGVmaW5lIFVTQlRNQ19TVEFUVVNfU1VDQ0VTUwkJCQkweDAxCisjZGVmaW5lIFVTQlRNQ19TVEFUVVNfUEVORElORwkJCQkweDAyCisjZGVmaW5lIFVTQlRNQ19TVEFUVVNfRkFJTEVECQkJCTB4ODAKKyNkZWZpbmUgVVNCVE1DX1NUQVRVU19UUkFOU0ZFUl9OT1RfSU5fUFJPR1JFU1MJCTB4ODEKKyNkZWZpbmUgVVNCVE1DX1NUQVRVU19TUExJVF9OT1RfSU5fUFJPR1JFU1MJCTB4ODIKKyNkZWZpbmUgVVNCVE1DX1NUQVRVU19TUExJVF9JTl9QUk9HUkVTUwkJCTB4ODMKKworLyogVVNCIFRNQyByZXF1ZXN0cyB2YWx1ZXMgKi8KKyNkZWZpbmUgVVNCVE1DX1JFUVVFU1RfSU5JVElBVEVfQUJPUlRfQlVMS19PVVQJCTEKKyNkZWZpbmUgVVNCVE1DX1JFUVVFU1RfQ0hFQ0tfQUJPUlRfQlVMS19PVVRfU1RBVFVTCTIKKyNkZWZpbmUgVVNCVE1DX1JFUVVFU1RfSU5JVElBVEVfQUJPUlRfQlVMS19JTgkJMworI2RlZmluZSBVU0JUTUNfUkVRVUVTVF9DSEVDS19BQk9SVF9CVUxLX0lOX1NUQVRVUwk0CisjZGVmaW5lIFVTQlRNQ19SRVFVRVNUX0lOSVRJQVRFX0NMRUFSCQkJNQorI2RlZmluZSBVU0JUTUNfUkVRVUVTVF9DSEVDS19DTEVBUl9TVEFUVVMJCTYKKyNkZWZpbmUgVVNCVE1DX1JFUVVFU1RfR0VUX0NBUEFCSUxJVElFUwkJCTcKKyNkZWZpbmUgVVNCVE1DX1JFUVVFU1RfSU5ESUNBVE9SX1BVTFNFCQkJNjQKKworLyogUmVxdWVzdCB2YWx1ZXMgZm9yIFVTQlRNQyBkcml2ZXIncyBpb2N0bCBlbnRyeSBwb2ludCAqLworI2RlZmluZSBVU0JUTUNfSU9DX05SCQkJOTEKKyNkZWZpbmUgVVNCVE1DX0lPQ1RMX0lORElDQVRPUl9QVUxTRQlfSU8oVVNCVE1DX0lPQ19OUiwgMSkKKyNkZWZpbmUgVVNCVE1DX0lPQ1RMX0NMRUFSCQlfSU8oVVNCVE1DX0lPQ19OUiwgMikKKyNkZWZpbmUgVVNCVE1DX0lPQ1RMX0FCT1JUX0JVTEtfT1VUCV9JTyhVU0JUTUNfSU9DX05SLCAzKQorI2RlZmluZSBVU0JUTUNfSU9DVExfQUJPUlRfQlVMS19JTglfSU8oVVNCVE1DX0lPQ19OUiwgNCkKKyNkZWZpbmUgVVNCVE1DX0lPQ1RMX0NMRUFSX09VVF9IQUxUCV9JTyhVU0JUTUNfSU9DX05SLCA2KQorI2RlZmluZSBVU0JUTUNfSU9DVExfQ0xFQVJfSU5fSEFMVAlfSU8oVVNCVE1DX0lPQ19OUiwgNykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi92c3R1c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiL3ZzdHVzYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZmFjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi92c3R1c2IuaApAQCAtMCwwICsxLDcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBGaWxlOiBkcml2ZXJzL3VzYi9taXNjL3ZzdHVzYi5oCisgKgorICogIFB1cnBvc2U6IFN1cHBvcnQgZm9yIHRoZSBidWxrIFVTQiBWZXJuaWVyIFNwZWN0cm9waG90b21ldGVycworICoKKyAqICBBdXRob3I6ICAgICBFUXdhcmUgRW5naW5lZXJpbmcsIEluYy4KKyAqICAgICAgICAgICAgICBPcmVnb24gQ2l0eSwgT1IsIFVTQSA5NzA0NQorICoKKyAqICBDb3B5cmlnaHQ6ICAyMDA3LCAyMDA4CisgKiAgICAgICAgICAgICAgVmVybmllciBTb2Z0d2FyZSAmIFRlY2hub2xvZ3kKKyAqICAgICAgICAgICAgICBCZWF2ZXJ0b24sIE9SLCBVU0EgOTcwMDUKKyAqCisgKiAgV2ViOiAgICAgICAgd3d3LnZlcm5pZXIuY29tCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgVGhlIHZzdHVzYiBtb2R1bGUgaXMgYSBzdGFuZGFyZCB1c2IgJ2NsaWVudCcgZHJpdmVyIHJ1bm5pbmcgb24gdG9wIG9mIHRoZQorICogIHN0YW5kYXJkIHVzYiBob3N0IGNvbnRyb2xsZXIgc3RhY2suCisgKgorICogIEluIGdlbmVyYWwsIHZzdHVzYiBzdXBwb3J0cyBzdGFuZGFyZCBidWxrIHVzYiBwaXBlcy4gIEl0IHN1cHBvcnRzIG11bHRpcGxlCisgKiAgZGV2aWNlcyBhbmQgbXVsdGlwbGUgcGlwZXMgcGVyIGRldmljZS4KKyAqCisgKiAgVGhlIHZzdHVzYiBkcml2ZXIgc3VwcG9ydHMgdHdvIGludGVyZmFjZXM6CisgKiAgMSAtIGlvY3RsIFNFTkRfUElQRS9SRUNWX1BJUEUgLSBhIGdlbmVyYWwgYnVsayB3cml0ZS9yZWFkIG1zZworICogIAlpbnRlcmZhY2UgdG8gYW55IHBpcGUgd2l0aCB0aW1lb3V0IHN1cHBvcnQ7CisgKiAgMiAtIHN0YW5kYXJkIHJlYWQvd3JpdGUgd2l0aCBpb2N0bCBjb25maWcgLSBvZmZlcnMgc3RhbmRhcmQgcmVhZC93cml0ZQorICogIAlpbnRlcmZhY2Ugd2l0aCBpb2N0bCBjb25maWd1cmVkIHBpcGVzIGFuZCB0aW1lb3V0cy4KKyAqCisgKiAgQm90aCBpbnRlcmZhY2VzIGNhbiBiZSBzaWduYWwgZnJvbSBvdGhlciBwcm9jZXNzIGFuZCB3aWxsIGFib3J0IGl0cyBpL28KKyAqICBvcGVyYXRpb24uCisgKgorICogIEEgdGltZW91dCBvZiAwIG1lYW5zIE5PIHRpbWVvdXQuICBUaGUgdXNlciBjYW4gc3RpbGwgdGVybWluYXRlIHRoZSByZWFkIHZpYQorICogIHNpZ25hbC4KKyAqCisgKiAgSWYgdXNpbmcgbXVsdGlwbGUgdGhyZWFkcyB3aXRoIHRoaXMgZHJpdmVyLCB0aGUgdXNlciBzaG91bGQgZW5zdXJlIHRoYXQKKyAqICBhbnkgcmVhZHMsIHdyaXRlcywgb3IgaW9jdGxzIGFyZSBjb21wbGV0ZSBiZWZvcmUgY2xvc2luZyB0aGUgZGV2aWNlLgorICogIENoYW5naW5nIHJlYWQvd3JpdGUgdGltZW91dHMgb3IgcGlwZXMgdGFrZXMgZWZmZWN0IG9uIG5leHQgcmVhZC93cml0ZS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCB2c3R1c2JfYXJncyB7CisJdW5pb24geworCQkvKiB0aGlzIHN0cnVjdCBpcyB1c2VkIGZvciBJT0NUTF9WU1RVU0JfU0VORF9QSVBFLAkqCisJCSAqIElPQ1RMX1ZTVFVTQl9SRUNWX1BJUEUsIGFuZCByZWFkKCkvd3JpdGUoKSBmb3BzCSovCisJCXN0cnVjdCB7CisJCQl2b2lkIF9fdXNlcgkqYnVmZmVyOworCQkJc2l6ZV90ICAgICAgICAgIGNvdW50OworCQkJdW5zaWduZWQgaW50ICAgIHRpbWVvdXRfbXM7CisJCQlpbnQgICAgICAgICAgICAgcGlwZTsKKwkJfTsKKworCQkvKiB0aGlzIG9uZSBpcyB1c2VkIGZvciBJT0NUTF9WU1RVU0JfQ09ORklHX1JXICAJKi8KKwkJc3RydWN0IHsKKwkJCWludCByZF9waXBlOworCQkJaW50IHJkX3RpbWVvdXRfbXM7CisJCQlpbnQgd3JfcGlwZTsKKwkJCWludCB3cl90aW1lb3V0X21zOworCQl9OworCX07Cit9OworCisjZGVmaW5lIFZTVF9JT0NfTUFHSUMgJ0wnCisjZGVmaW5lIFZTVF9JT0NfRklSU1QgMHgyMAorI2RlZmluZSBJT0NUTF9WU1RVU0JfU0VORF9QSVBFCV9JTyhWU1RfSU9DX01BR0lDLCBWU1RfSU9DX0ZJUlNUKQorI2RlZmluZSBJT0NUTF9WU1RVU0JfUkVDVl9QSVBFCV9JTyhWU1RfSU9DX01BR0lDLCBWU1RfSU9DX0ZJUlNUICsgMSkKKyNkZWZpbmUgSU9DVExfVlNUVVNCX0NPTkZJR19SVwlfSU8oVlNUX0lPQ19NQUdJQywgVlNUX0lPQ19GSVJTVCArIDIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3dyaXRlYmFjay5oIGIvaW5jbHVkZS9saW51eC93cml0ZWJhY2suaAppbmRleCAxMmIxNWM1Li5lNTg1NjU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3dyaXRlYmFjay5oCisrKyBiL2luY2x1ZGUvbGludXgvd3JpdGViYWNrLmgKQEAgLTYzLDcgKzYzLDE1IEBACiAJdW5zaWduZWQgZm9yX3dyaXRlcGFnZXM6MTsJLyogVGhpcyBpcyBhIHdyaXRlcGFnZXMoKSBjYWxsICovCiAJdW5zaWduZWQgcmFuZ2VfY3ljbGljOjE7CS8qIHJhbmdlX3N0YXJ0IGlzIGN5Y2xpYyAqLwogCXVuc2lnbmVkIG1vcmVfaW86MTsJCS8qIG1vcmUgaW8gdG8gYmUgZGlzcGF0Y2hlZCAqLwotCXVuc2lnbmVkIHJhbmdlX2NvbnQ6MTsKKwkvKgorCSAqIHdyaXRlX2NhY2hlX3BhZ2VzKCkgd29uJ3QgdXBkYXRlIHdiYy0+bnJfdG9fd3JpdGUgYW5kCisJICogbWFwcGluZy0+d3JpdGViYWNrX2luZGV4IGlmIG5vX25yd3JpdGVfaW5kZXhfdXBkYXRlCisJICogaXMgc2V0LiAgd3JpdGVfY2FjaGVfcGFnZXMoKSBtYXkgd3JpdGUgbW9yZSB0aGFuIHdlCisJICogcmVxdWVzdGVkIGFuZCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBucl90b193cml0ZSBhbmQKKwkgKiB3cml0ZWJhY2tfaW5kZXggYXJlIHVwZGF0ZWQgaW4gYSBjb25zaXN0ZW50IG1hbm5lcgorCSAqIHNvIHdlIHVzZSBhIHNpbmdsZSBjb250cm9sIHRvIHVwZGF0ZSB0aGVtCisJICovCisJdW5zaWduZWQgbm9fbnJ3cml0ZV9pbmRleF91cGRhdGU6MTsKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3NvY19jYW1lcmFfcGxhdGZvcm0uaCBiL2luY2x1ZGUvbWVkaWEvc29jX2NhbWVyYV9wbGF0Zm9ybS5oCmluZGV4IDg1MWYxODIuLjFkMDkyYjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc29jX2NhbWVyYV9wbGF0Zm9ybS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc29jX2NhbWVyYV9wbGF0Zm9ybS5oCkBAIC0xLDMgKzEsMTMgQEAKKy8qCisgKiBHZW5lcmljIFBsYXRmb3JtIENhbWVyYSBEcml2ZXIgSGVhZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE1hZ251cyBEYW1tCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCiAjaWZuZGVmIF9fU09DX0NBTUVSQV9IX18KICNkZWZpbmUgX19TT0NfQ0FNRVJBX0hfXwogCkBAIC05LDYgKzE5LDcgQEAKIAl1bnNpZ25lZCBsb25nIGZvcm1hdF9kZXB0aDsKIAlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IGZvcm1hdDsKIAl1bnNpZ25lZCBsb25nIGJ1c19wYXJhbTsKKwl2b2lkICgqcG93ZXIpKGludCk7CiAJaW50ICgqc2V0X2NhcHR1cmUpKHN0cnVjdCBzb2NfY2FtZXJhX3BsYXRmb3JtX2luZm8gKmluZm8sIGludCBlbmFibGUpOwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS90dW5lci5oIGIvaW5jbHVkZS9tZWRpYS90dW5lci5oCmluZGV4IDY3YzFmNTEuLjdkNGUyZGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvdHVuZXIuaAorKysgYi9pbmNsdWRlL21lZGlhL3R1bmVyLmgKQEAgLTEyMyw2ICsxMjMsNyBAQAogI2RlZmluZSBUVU5FUl9URUE1NzYxCQkJNzUJLyogT25seSBGTSBSYWRpbyBUdW5lciAqLwogI2RlZmluZSBUVU5FUl9YQzUwMDAJCQk3NgkvKiBYY2VpdmUgU2lsaWNvbiBUdW5lciAqLwogI2RlZmluZSBUVU5FUl9UQ0xfTUYwMkdJUF81TgkJNzcJLyogVENMIE1GMDJHSVBfNU4gKi8KKyNkZWZpbmUgVFVORVJfUEhJTElQU19GTUQxMjE2TUVYX01LMwk3OAogCiAvKiB0diBjYXJkIHNwZWNpZmljICovCiAjZGVmaW5lIFREQTk4ODdfUFJFU0VOVCAJCSgxPDwwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS92NGwyLWkyYy1kcnYtbGVnYWN5LmggYi9pbmNsdWRlL21lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaAppbmRleCA5NzVmZmJmLi5lNjVkZDlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaAorKysgYi9pbmNsdWRlL21lZGlhL3Y0bDItaTJjLWRydi1sZWdhY3kuaApAQCAtMjEsNiArMjEsMTcgQEAKICAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgogICovCiAKKy8qIE5PVEU6IHRoZSBmdWxsIHZlcnNpb24gb2YgdGhpcyBoZWFkZXIgaXMgaW4gdGhlIHY0bC1kdmIgcmVwb3NpdG9yeQorICogYW5kIGFsbG93cyB2NGwgaTJjIGRyaXZlcnMgdG8gYmUgY29tcGlsZWQgb24gb2xkZXIga2VybmVscyBhcyB3ZWxsLgorICogVGhlIHZlcnNpb24gb2YgdGhpcyBoZWFkZXIgYXMgaXQgYXBwZWFycyBpbiB0aGUga2VybmVsIGlzIGEgc3RyaXBwZWQKKyAqIHZlcnNpb24gKHdpdGhvdXQgYWxsIHRoZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdHVmZikgYW5kIHNvIGl0CisgKiBsb29rcyBhIGJpdCBvZGQuCisgKgorICogSWYgeW91IGxvb2sgYXQgdGhlIGZ1bGwgdmVyc2lvbiB0aGVuIHlvdSB3aWxsIHVuZGVyc3RhbmQgdGhlIHJlYXNvbgorICogZm9yIGludHJvZHVjaW5nIHRoaXMgaGVhZGVyIHNpbmNlIHlvdSByZWFsbHkgZG9uJ3Qgd2FudCB0byBoYXZlIGFsbAorICogdGhlIHRyaWNreSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBjb2RlIGluIGVhY2ggYW5kIGV2ZXJ5IGkyYyBkcml2ZXIuCisgKi8KKwogc3RydWN0IHY0bDJfaTJjX2RyaXZlcl9kYXRhIHsKIAljb25zdCBjaGFyICogY29uc3QgbmFtZTsKIAlpbnQgZHJpdmVyaWQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3Y0bDItaTJjLWRydi5oIGIvaW5jbHVkZS9tZWRpYS92NGwyLWkyYy1kcnYuaAppbmRleCA0MGVjZWYyLi5lZmRjOGJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3Y0bDItaTJjLWRydi5oCisrKyBiL2luY2x1ZGUvbWVkaWEvdjRsMi1pMmMtZHJ2LmgKQEAgLTIxLDYgKzIxLDE3IEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KICAqLwogCisvKiBOT1RFOiB0aGUgZnVsbCB2ZXJzaW9uIG9mIHRoaXMgaGVhZGVyIGlzIGluIHRoZSB2NGwtZHZiIHJlcG9zaXRvcnkKKyAqIGFuZCBhbGxvd3MgdjRsIGkyYyBkcml2ZXJzIHRvIGJlIGNvbXBpbGVkIG9uIG9sZGVyIGtlcm5lbHMgYXMgd2VsbC4KKyAqIFRoZSB2ZXJzaW9uIG9mIHRoaXMgaGVhZGVyIGFzIGl0IGFwcGVhcnMgaW4gdGhlIGtlcm5lbCBpcyBhIHN0cmlwcGVkCisgKiB2ZXJzaW9uICh3aXRob3V0IGFsbCB0aGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3R1ZmYpIGFuZCBzbyBpdAorICogbG9va3MgYSBiaXQgb2RkLgorICoKKyAqIElmIHlvdSBsb29rIGF0IHRoZSBmdWxsIHZlcnNpb24gdGhlbiB5b3Ugd2lsbCB1bmRlcnN0YW5kIHRoZSByZWFzb24KKyAqIGZvciBpbnRyb2R1Y2luZyB0aGlzIGhlYWRlciBzaW5jZSB5b3UgcmVhbGx5IGRvbid0IHdhbnQgdG8gaGF2ZSBhbGwKKyAqIHRoZSB0cmlja3kgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgY29kZSBpbiBlYWNoIGFuZCBldmVyeSBpMmMgZHJpdmVyLgorICovCisKICNpZm5kZWYgX19WNEwyX0kyQ19EUlZfSF9fCiAjZGVmaW5lIF9fVjRMMl9JMkNfRFJWX0hfXwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmLWR2Yi5oIGIvaW5jbHVkZS9tZWRpYS92aWRlb2J1Zi1kdmIuaAppbmRleCBiNzc3NDg2Li44MDQ3MWMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmLWR2Yi5oCisrKyBiL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYtZHZiLmgKQEAgLTE2LDcgKzE2LDYgQEAKIAlpbnQgICAgICAgICAgICAgICAgICAgICAgICBuZmVlZHM7CiAKIAkvKiB2aWRlb2J1Zl9kdmJfKHVuKXJlZ2lzdGVyIG1hbmdlcyB0aGlzICovCi0Jc3RydWN0IGR2Yl9hZGFwdGVyICAgICAgICAgYWRhcHRlcjsKIAlzdHJ1Y3QgZHZiX2RlbXV4ICAgICAgICAgICBkZW11eDsKIAlzdHJ1Y3QgZG14ZGV2ICAgICAgICAgICAgICBkbXhkZXY7CiAJc3RydWN0IGRteF9mcm9udGVuZCAgICAgICAgZmVfaHc7CkBAIC0yNCwxMiArMjMsMzQgQEAKIAlzdHJ1Y3QgZHZiX25ldCAgICAgICAgICAgICBuZXQ7CiB9OwogCi1pbnQgdmlkZW9idWZfZHZiX3JlZ2lzdGVyKHN0cnVjdCB2aWRlb2J1Zl9kdmIgKmR2YiwKK3N0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmQgeworCXN0cnVjdCBsaXN0X2hlYWQgZmVsaXN0OworCWludCBpZDsKKwlzdHJ1Y3QgdmlkZW9idWZfZHZiIGR2YjsKK307CisKK3N0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmRzIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGZlbGlzdDsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwlzdHJ1Y3QgZHZiX2FkYXB0ZXIgYWRhcHRlcjsKKwlpbnQgYWN0aXZlX2ZlX2lkOyAvKiBJbmRpY2F0ZXMgd2hpY2ggZnJvbnRlbmQgaW4gdGhlIGZlbGlzdCBpcyBpbiB1c2UgKi8KKwlpbnQgZ2F0ZTsgLyogRnJvbnRlbmQgd2l0aCBnYXRlIGNvbnRyb2wgMD0hTUZFLDE9ZmUwLDI9ZmUxIGV0YyAqLworfTsKKworaW50IHZpZGVvYnVmX2R2Yl9yZWdpc3Rlcl9idXMoc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZHMgKmYsCiAJCQkgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwKIAkJCSAgdm9pZCAqYWRhcHRlcl9wcml2LAogCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCi0JCQkgIHNob3J0ICphZGFwdGVyX25yKTsKLXZvaWQgdmlkZW9idWZfZHZiX3VucmVnaXN0ZXIoc3RydWN0IHZpZGVvYnVmX2R2YiAqZHZiKTsKKwkJCSAgc2hvcnQgKmFkYXB0ZXJfbnIsCisJCQkgIGludCBtZmVfc2hhcmVkKTsKKwordm9pZCB2aWRlb2J1Zl9kdmJfdW5yZWdpc3Rlcl9idXMoc3RydWN0IHZpZGVvYnVmX2R2Yl9mcm9udGVuZHMgKmYpOworCitzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kICogdmlkZW9idWZfZHZiX2FsbG9jX2Zyb250ZW5kKHN0cnVjdCB2aWRlb2J1Zl9kdmJfZnJvbnRlbmRzICpmLCBpbnQgaWQpOworCitzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kICogdmlkZW9idWZfZHZiX2dldF9mcm9udGVuZChzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyAqZiwgaW50IGlkKTsKK2ludCB2aWRlb2J1Zl9kdmJfZmluZF9mcm9udGVuZChzdHJ1Y3QgdmlkZW9idWZfZHZiX2Zyb250ZW5kcyAqZiwgc3RydWN0IGR2Yl9mcm9udGVuZCAqcCk7CisKIAogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9pc2NzaV9pZi5oIGIvaW5jbHVkZS9zY3NpL2lzY3NpX2lmLmgKaW5kZXggMTZiZTEyZi4uMGM5NTE0ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL2lzY3NpX2lmLmgKKysrIGIvaW5jbHVkZS9zY3NpL2lzY3NpX2lmLmgKQEAgLTIxMyw2ICsyMTMsOCBAQAogCUlTQ1NJX0VSUl9EQVRBX0RHU1QJCT0gSVNDU0lfRVJSX0JBU0UgKyAxNSwKIAlJU0NTSV9FUlJfUEFSQU1fTk9UX0ZPVU5ECT0gSVNDU0lfRVJSX0JBU0UgKyAxNiwKIAlJU0NTSV9FUlJfTk9fU0NTSV9DTUQJCT0gSVNDU0lfRVJSX0JBU0UgKyAxNywKKwlJU0NTSV9FUlJfSU5WQUxJRF9IT1NUCQk9IElTQ1NJX0VSUl9CQVNFICsgMTgsCisJSVNDU0lfRVJSX1hNSVRfRkFJTEVECQk9IElTQ1NJX0VSUl9CQVNFICsgMTksCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL2xpYmlzY3NpLmggYi9pbmNsdWRlL3Njc2kvbGliaXNjc2kuaAppbmRleCA1ZTc1YmI3Li42MWU1M2YxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvbGliaXNjc2kuaAorKysgYi9pbmNsdWRlL3Njc2kvbGliaXNjc2kuaApAQCAtMjg3LDYgKzI4NywxMSBAQAogCXN0cnVjdCBpc2NzaV9wb29sCWNtZHBvb2w7CS8qIFBEVSdzIHBvb2wgKi8KIH07CiAKK2VudW0geworCUlTQ1NJX0hPU1RfU0VUVVAsCisJSVNDU0lfSE9TVF9SRU1PVkVELAorfTsKKwogc3RydWN0IGlzY3NpX2hvc3QgewogCWNoYXIJCQkqaW5pdGlhdG9ybmFtZTsKIAkvKiBodyBhZGRyZXNzIG9yIG5ldGRldiBpc2NzaSBjb25uZWN0aW9uIGlzIGJvdW5kIHRvICovCkBAIC0yOTUsNiArMzAwLDEyIEBACiAJLyogbG9jYWwgYWRkcmVzcyAqLwogCWludAkJCWxvY2FsX3BvcnQ7CiAJY2hhcgkJCWxvY2FsX2FkZHJlc3NbSVNDU0lfQUREUkVTU19CVUZfTEVOXTsKKworCXdhaXRfcXVldWVfaGVhZF90CXNlc3Npb25fcmVtb3ZhbF93cTsKKwkvKiBwcm90ZWN0cyBzZXNzaW9ucyBhbmQgc3RhdGUgKi8KKwlzcGlubG9ja190CQlsb2NrOworCWludAkJCW51bV9zZXNzaW9uczsKKwlpbnQJCQlzdGF0ZTsKIH07CiAKIC8qCkBAIC0zMDIsNyArMzEzLDcgQEAKICAqLwogZXh0ZXJuIGludCBpc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgZGVwdGgpOwogZXh0ZXJuIGludCBpc2NzaV9laF9hYm9ydChzdHJ1Y3Qgc2NzaV9jbW5kICpzYyk7Ci1leHRlcm4gaW50IGlzY3NpX2VoX2hvc3RfcmVzZXQoc3RydWN0IHNjc2lfY21uZCAqc2MpOworZXh0ZXJuIGludCBpc2NzaV9laF90YXJnZXRfcmVzZXQoc3RydWN0IHNjc2lfY21uZCAqc2MpOwogZXh0ZXJuIGludCBpc2NzaV9laF9kZXZpY2VfcmVzZXQoc3RydWN0IHNjc2lfY21uZCAqc2MpOwogZXh0ZXJuIGludCBpc2NzaV9xdWV1ZWNvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqc2MsCiAJCQkgICAgICB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSk7CkBAIC0zNTEsNiArMzYyLDggQEAKIGV4dGVybiBpbnQgaXNjc2lfY29ubl9iaW5kKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqLCBzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKiwKIAkJCSAgIGludCk7CiBleHRlcm4gdm9pZCBpc2NzaV9jb25uX2ZhaWx1cmUoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIGVudW0gaXNjc2lfZXJyIGVycik7CitleHRlcm4gdm9pZCBpc2NzaV9zZXNzaW9uX2ZhaWx1cmUoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbiwKKwkJCQkgIGVudW0gaXNjc2lfZXJyIGVycik7CiBleHRlcm4gaW50IGlzY3NpX2Nvbm5fZ2V0X3BhcmFtKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sCiAJCQkJZW51bSBpc2NzaV9wYXJhbSBwYXJhbSwgY2hhciAqYnVmKTsKIGV4dGVybiB2b2lkIGlzY3NpX3N1c3BlbmRfdHgoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2kuaCBiL2luY2x1ZGUvc2NzaS9zY3NpLmgKaW5kZXggMTkyZjg3MS4uYTEwOTE2NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2kuaAorKysgYi9pbmNsdWRlL3Njc2kvc2NzaS5oCkBAIC0zODEsNiArMzgxLDExIEBACiAjZGVmaW5lIERJRF9JTU1fUkVUUlkgICAweDBjCS8qIFJldHJ5IHdpdGhvdXQgZGVjcmVtZW50aW5nIHJldHJ5IGNvdW50ICAqLwogI2RlZmluZSBESURfUkVRVUVVRQkweDBkCS8qIFJlcXVldWUgY29tbWFuZCAobm8gaW1tZWRpYXRlIHJldHJ5KSBhbHNvCiAJCQkJICogd2l0aG91dCBkZWNyZW1lbnRpbmcgdGhlIHJldHJ5IGNvdW50CSAgICovCisjZGVmaW5lIERJRF9UUkFOU1BPUlRfRElTUlVQVEVEIDB4MGUgLyogVHJhbnNwb3J0IGVycm9yIGRpc3J1cHRlZCBleGVjdXRpb24KKwkJCQkgICAgICAqIGFuZCB0aGUgZHJpdmVyIGJsb2NrZWQgdGhlIHBvcnQgdG8KKwkJCQkgICAgICAqIHJlY292ZXIgdGhlIGxpbmsuIFRyYW5zcG9ydCBjbGFzcyB3aWxsCisJCQkJICAgICAgKiByZXRyeSBvciBmYWlsIElPICovCisjZGVmaW5lIERJRF9UUkFOU1BPUlRfRkFJTEZBU1QJMHgwZiAvKiBUcmFuc3BvcnQgY2xhc3MgZmFzdGZhaWxlZCB0aGUgaW8gKi8KICNkZWZpbmUgRFJJVkVSX09LICAgICAgIDB4MDAJLyogRHJpdmVyIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKIC8qCkBAIC00MjYsNiArNDMxLDcgQEAKICNkZWZpbmUgU0NTSV9NTFFVRVVFX0hPU1RfQlVTWSAgIDB4MTA1NQogI2RlZmluZSBTQ1NJX01MUVVFVUVfREVWSUNFX0JVU1kgMHgxMDU2CiAjZGVmaW5lIFNDU0lfTUxRVUVVRV9FSF9SRVRSWSAgICAweDEwNTcKKyNkZWZpbmUgU0NTSV9NTFFVRVVFX1RBUkdFVF9CVVNZIDB4MTA1OAogCiAvKgogICogIFVzZSB0aGVzZSB0byBzZXBhcmF0ZSBzdGF0dXMgbXNnIGFuZCBvdXIgYnl0ZXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zY3NpX2RldmljZS5oIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgKaW5kZXggYjQ5ZTcyNS4uYTM3YTgxNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgKKysrIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgKQEAgLTIzOCw2ICsyMzgsMTYgQEAKIAkJCQkJCSAqIGZvciB0aGUgZGV2aWNlIGF0IGEgdGltZS4gKi8KIAl1bnNpZ25lZCBpbnQJCXBkdF8xZl9mb3Jfbm9fbHVuOwkvKiBQRFQgPSAweDFmICovCiAJCQkJCQkvKiBtZWFucyBubyBsdW4gcHJlc2VudCAqLworCS8qIGNvbW1hbmRzIGFjdHVhbGx5IGFjdGl2ZSBvbiBMTEQuIHByb3RlY3RlZCBieSBob3N0IGxvY2suICovCisJdW5zaWduZWQgaW50CQl0YXJnZXRfYnVzeTsKKwkvKgorCSAqIExMRHMgc2hvdWxkIHNldCB0aGlzIGluIHRoZSBzbGF2ZV9hbGxvYyBob3N0IHRlbXBsYXRlIGNhbGxvdXQuCisJICogSWYgc2V0IHRvIHplcm8gdGhlbiB0aGVyZSBpcyBub3QgbGltaXQuCisJICovCisJdW5zaWduZWQgaW50CQljYW5fcXVldWU7CisJdW5zaWduZWQgaW50CQl0YXJnZXRfYmxvY2tlZDsKKwl1bnNpZ25lZCBpbnQJCW1heF90YXJnZXRfYmxvY2tlZDsKKyNkZWZpbmUgU0NTSV9ERUZBVUxUX1RBUkdFVF9CTE9DS0VECTMKIAogCWNoYXIJCQlzY3NpX2xldmVsOwogCXN0cnVjdCBleGVjdXRlX3dvcmsJZXc7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaCBiL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5oCmluZGV4IDIxMDE4YTQuLjQ5ZDg5MTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5oCisrKyBiL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5oCkBAIC0zNTcsNiArMzU3LDcgQEAKIC8qIGJpdCBmaWVsZCB2YWx1ZXMgZm9yIHN0cnVjdCBmY19ycG9ydCAiZmxhZ3MiIGZpZWxkOiAqLwogI2RlZmluZSBGQ19SUE9SVF9ERVZMT1NTX1BFTkRJTkcJMHgwMQogI2RlZmluZSBGQ19SUE9SVF9TQ0FOX1BFTkRJTkcJCTB4MDIKKyNkZWZpbmUgRkNfUlBPUlRfRkFTVF9GQUlMX1RJTUVET1VUCTB4MDMKIAogI2RlZmluZQlkZXZfdG9fcnBvcnQoZCkJCQkJXAogCWNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgZmNfcnBvcnQsIGRldikKQEAgLTY3OCwxMiArNjc5LDE1IEBACiAJCWlmIChycG9ydC0+cm9sZXMgJiBGQ19QT1JUX1JPTEVfRkNQX1RBUkdFVCkKIAkJCXJlc3VsdCA9IDA7CiAJCWVsc2UgaWYgKHJwb3J0LT5mbGFncyAmIEZDX1JQT1JUX0RFVkxPU1NfUEVORElORykKLQkJCXJlc3VsdCA9IERJRF9JTU1fUkVUUlkgPDwgMTY7CisJCQlyZXN1bHQgPSBESURfVFJBTlNQT1JUX0RJU1JVUFRFRCA8PCAxNjsKIAkJZWxzZQogCQkJcmVzdWx0ID0gRElEX05PX0NPTk5FQ1QgPDwgMTY7CiAJCWJyZWFrOwogCWNhc2UgRkNfUE9SVFNUQVRFX0JMT0NLRUQ6Ci0JCXJlc3VsdCA9IERJRF9JTU1fUkVUUlkgPDwgMTY7CisJCWlmIChycG9ydC0+ZmxhZ3MgJiBGQ19SUE9SVF9GQVNUX0ZBSUxfVElNRURPVVQpCisJCQlyZXN1bHQgPSBESURfVFJBTlNQT1JUX0ZBSUxGQVNUIDw8IDE2OworCQllbHNlCisJCQlyZXN1bHQgPSBESURfVFJBTlNQT1JUX0RJU1JVUFRFRCA8PCAxNjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmVzdWx0ID0gRElEX05PX0NPTk5FQ1QgPDwgMTY7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuaCBiL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5oCmluZGV4IDhiNmM5MWQuLmM2NjdjYzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5oCisrKyBiL2luY2x1ZGUvc2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5oCkBAIC0xMzUsNyArMTM1LDggQEAKIC8qCiAgKiBjb250cm9sIHBsYW5lIHVwY2FsbHMKICAqLwotZXh0ZXJuIHZvaWQgaXNjc2lfY29ubl9lcnJvcihzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4sIGVudW0gaXNjc2lfZXJyIGVycm9yKTsKK2V4dGVybiB2b2lkIGlzY3NpX2Nvbm5fZXJyb3JfZXZlbnQoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uLAorCQkJCSAgIGVudW0gaXNjc2lfZXJyIGVycm9yKTsKIGV4dGVybiBpbnQgaXNjc2lfcmVjdl9wZHUoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfaGRyICpoZHIsCiAJCQkgIGNoYXIgKmRhdGEsIHVpbnQzMl90IGRhdGFfc2l6ZSk7CiAKQEAgLTIwNyw3ICsyMDgsNyBAQAogc3RydWN0IGlzY3NpX2VuZHBvaW50IHsKIAl2b2lkICpkZF9kYXRhOwkJCS8qIExMRCBwcml2YXRlIGRhdGEgKi8KIAlzdHJ1Y3QgZGV2aWNlIGRldjsKLQl1bnNpZ25lZCBpbnQgaWQ7CisJdWludDY0X3QgaWQ7CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEva2VybmVsL2NvbXBhdC5jIGIva2VybmVsL2NvbXBhdC5jCmluZGV4IDE0Mzk5MGUuLjhlYWZlM2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9jb21wYXQuYworKysgYi9rZXJuZWwvY29tcGF0LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxsaW51eC90aW1leC5oPgogI2luY2x1ZGUgPGxpbnV4L21pZ3JhdGUuaD4KICNpbmNsdWRlIDxsaW51eC9wb3NpeC10aW1lcnMuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lcy5oPgogCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KIApAQCAtMjA4LDQ5ICsyMDksMjMgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGNvbXBhdF9jbG9ja190IGNsb2NrX3RfdG9fY29tcGF0X2Nsb2NrX3QoY2xvY2tfdCB4KQoreworCXJldHVybiBjb21wYXRfamlmZmllc190b19jbG9ja190KGNsb2NrX3RfdG9famlmZmllcyh4KSk7Cit9CisKIGFzbWxpbmthZ2UgbG9uZyBjb21wYXRfc3lzX3RpbWVzKHN0cnVjdCBjb21wYXRfdG1zIF9fdXNlciAqdGJ1ZikKIHsKLQkvKgotCSAqCUluIHRoZSBTTVAgd29ybGQgd2UgbWlnaHQganVzdCBiZSB1bmx1Y2t5IGFuZCBoYXZlIG9uZSBvZgotCSAqCXRoZSB0aW1lcyBpbmNyZW1lbnQgYXMgd2UgdXNlIGl0LiBTaW5jZSB0aGUgdmFsdWUgaXMgYW4KLQkgKglhdG9taWNhbGx5IHNhZmUgdHlwZSB0aGlzIGlzIGp1c3QgZmluZS4gQ29uY2VwdHVhbGx5IGl0cwotCSAqCWFzIGlmIHRoZSBzeXNjYWxsIHRvb2sgYW4gaW5zdGFudCBsb25nZXIgdG8gb2NjdXIuCi0JICovCiAJaWYgKHRidWYpIHsKKwkJc3RydWN0IHRtcyB0bXM7CiAJCXN0cnVjdCBjb21wYXRfdG1zIHRtcDsKLQkJc3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50OwotCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQ7Ci0JCWNwdXRpbWVfdCB1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lOwogCi0JCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7Ci0JCXV0aW1lID0gdHNrLT5zaWduYWwtPnV0aW1lOwotCQlzdGltZSA9IHRzay0+c2lnbmFsLT5zdGltZTsKLQkJdCA9IHRzazsKLQkJZG8gewotCQkJdXRpbWUgPSBjcHV0aW1lX2FkZCh1dGltZSwgdC0+dXRpbWUpOwotCQkJc3RpbWUgPSBjcHV0aW1lX2FkZChzdGltZSwgdC0+c3RpbWUpOwotCQkJdCA9IG5leHRfdGhyZWFkKHQpOwotCQl9IHdoaWxlICh0ICE9IHRzayk7Ci0KLQkJLyoKLQkJICogV2hpbGUgd2UgaGF2ZSB0YXNrbGlzdF9sb2NrIHJlYWQtbG9ja2VkLCBubyBkeWluZyB0aHJlYWQKLQkJICogY2FuIGJlIHVwZGF0aW5nIGN1cnJlbnQtPnNpZ25hbC0+W3VzXXRpbWUuICBJbnN0ZWFkLAotCQkgKiB3ZSBnb3QgdGhlaXIgY291bnRzIGluY2x1ZGVkIGluIHRoZSBsaXZlIHRocmVhZCBsb29wLgotCQkgKiBIb3dldmVyLCBhbm90aGVyIHRocmVhZCBjYW4gY29tZSBpbiByaWdodCBub3cgYW5kCi0JCSAqIGRvIGEgd2FpdCBjYWxsIHRoYXQgdXBkYXRlcyBjdXJyZW50LT5zaWduYWwtPmNbdXNddGltZS4KLQkJICogVG8gbWFrZSBzdXJlIHdlIGFsd2F5cyBzZWUgdGhhdCBwYWlyIHVwZGF0ZWQgYXRvbWljYWxseSwKLQkJICogd2UgdGFrZSB0aGUgc2lnbG9jayBhcm91bmQgZmV0Y2hpbmcgdGhlbS4KLQkJICovCi0JCXNwaW5fbG9ja19pcnEoJnRzay0+c2lnaGFuZC0+c2lnbG9jayk7Ci0JCWN1dGltZSA9IHRzay0+c2lnbmFsLT5jdXRpbWU7Ci0JCWNzdGltZSA9IHRzay0+c2lnbmFsLT5jc3RpbWU7Ci0JCXNwaW5fdW5sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwotCi0JCXRtcC50bXNfdXRpbWUgPSBjb21wYXRfamlmZmllc190b19jbG9ja190KGNwdXRpbWVfdG9famlmZmllcyh1dGltZSkpOwotCQl0bXAudG1zX3N0aW1lID0gY29tcGF0X2ppZmZpZXNfdG9fY2xvY2tfdChjcHV0aW1lX3RvX2ppZmZpZXMoc3RpbWUpKTsKLQkJdG1wLnRtc19jdXRpbWUgPSBjb21wYXRfamlmZmllc190b19jbG9ja190KGNwdXRpbWVfdG9famlmZmllcyhjdXRpbWUpKTsKLQkJdG1wLnRtc19jc3RpbWUgPSBjb21wYXRfamlmZmllc190b19jbG9ja190KGNwdXRpbWVfdG9famlmZmllcyhjc3RpbWUpKTsKKwkJZG9fc3lzX3RpbWVzKCZ0bXMpOworCQkvKiBDb252ZXJ0IG91ciBzdHJ1Y3QgdG1zIHRvIHRoZSBjb21wYXQgdmVyc2lvbi4gKi8KKwkJdG1wLnRtc191dGltZSA9IGNsb2NrX3RfdG9fY29tcGF0X2Nsb2NrX3QodG1zLnRtc191dGltZSk7CisJCXRtcC50bXNfc3RpbWUgPSBjbG9ja190X3RvX2NvbXBhdF9jbG9ja190KHRtcy50bXNfc3RpbWUpOworCQl0bXAudG1zX2N1dGltZSA9IGNsb2NrX3RfdG9fY29tcGF0X2Nsb2NrX3QodG1zLnRtc19jdXRpbWUpOworCQl0bXAudG1zX2NzdGltZSA9IGNsb2NrX3RfdG9fY29tcGF0X2Nsb2NrX3QodG1zLnRtc19jc3RpbWUpOwogCQlpZiAoY29weV90b191c2VyKHRidWYsICZ0bXAsIHNpemVvZih0bXApKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCX0KZGlmZiAtLWdpdCBhL2tlcm5lbC9leGl0LmMgYi9rZXJuZWwvZXhpdC5jCmluZGV4IDBlZjQ2NzMuLjA1OWIzOGMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9leGl0LmMKKysrIGIva2VybmVsL2V4aXQuYwpAQCAtMTEyLDggKzExMiw2IEBACiAJCSAqIFdlIHdvbid0IGV2ZXIgZ2V0IGhlcmUgZm9yIHRoZSBncm91cCBsZWFkZXIsIHNpbmNlIGl0CiAJCSAqIHdpbGwgaGF2ZSBiZWVuIHRoZSBsYXN0IHJlZmVyZW5jZSBvbiB0aGUgc2lnbmFsX3N0cnVjdC4KIAkJICovCi0JCXNpZy0+dXRpbWUgPSBjcHV0aW1lX2FkZChzaWctPnV0aW1lLCB0YXNrX3V0aW1lKHRzaykpOwotCQlzaWctPnN0aW1lID0gY3B1dGltZV9hZGQoc2lnLT5zdGltZSwgdGFza19zdGltZSh0c2spKTsKIAkJc2lnLT5ndGltZSA9IGNwdXRpbWVfYWRkKHNpZy0+Z3RpbWUsIHRhc2tfZ3RpbWUodHNrKSk7CiAJCXNpZy0+bWluX2ZsdCArPSB0c2stPm1pbl9mbHQ7CiAJCXNpZy0+bWFqX2ZsdCArPSB0c2stPm1hal9mbHQ7CkBAIC0xMjIsNyArMTIwLDYgQEAKIAkJc2lnLT5pbmJsb2NrICs9IHRhc2tfaW9fZ2V0X2luYmxvY2sodHNrKTsKIAkJc2lnLT5vdWJsb2NrICs9IHRhc2tfaW9fZ2V0X291YmxvY2sodHNrKTsKIAkJdGFza19pb19hY2NvdW50aW5nX2FkZCgmc2lnLT5pb2FjLCAmdHNrLT5pb2FjKTsKLQkJc2lnLT5zdW1fc2NoZWRfcnVudGltZSArPSB0c2stPnNlLnN1bV9leGVjX3J1bnRpbWU7CiAJCXNpZyA9IE5VTEw7IC8qIE1hcmtlciBmb3IgYmVsb3cuICovCiAJfQogCkBAIC0xMzAxLDYgKzEyOTgsNyBAQAogCWlmIChsaWtlbHkoIXRyYWNlZCkpIHsKIAkJc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnBzaWc7CiAJCXN0cnVjdCBzaWduYWxfc3RydWN0ICpzaWc7CisJCXN0cnVjdCB0YXNrX2NwdXRpbWUgY3B1dGltZTsKIAogCQkvKgogCQkgKiBUaGUgcmVzb3VyY2UgY291bnRlcnMgZm9yIHRoZSBncm91cCBsZWFkZXIgYXJlIGluIGl0cwpAQCAtMTMxNiwyMCArMTMxNCwyMyBAQAogCQkgKiBuZWVkIHRvIHByb3RlY3QgdGhlIGFjY2VzcyB0byBwLT5wYXJlbnQtPnNpZ25hbCBmaWVsZHMsCiAJCSAqIGFzIG90aGVyIHRocmVhZHMgaW4gdGhlIHBhcmVudCBncm91cCBjYW4gYmUgcmlnaHQKIAkJICogaGVyZSByZWFwaW5nIG90aGVyIGNoaWxkcmVuIGF0IHRoZSBzYW1lIHRpbWUuCisJCSAqCisJCSAqIFdlIHVzZSB0aHJlYWRfZ3JvdXBfY3B1dGltZSgpIHRvIGdldCB0aW1lcyBmb3IgdGhlIHRocmVhZAorCQkgKiBncm91cCwgd2hpY2ggY29uc29saWRhdGVzIHRpbWVzIGZvciBhbGwgdGhyZWFkcyBpbiB0aGUKKwkJICogZ3JvdXAgaW5jbHVkaW5nIHRoZSBncm91cCBsZWFkZXIuCiAJCSAqLwogCQlzcGluX2xvY2tfaXJxKCZwLT5wYXJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOwogCQlwc2lnID0gcC0+cGFyZW50LT5zaWduYWw7CiAJCXNpZyA9IHAtPnNpZ25hbDsKKwkJdGhyZWFkX2dyb3VwX2NwdXRpbWUocCwgJmNwdXRpbWUpOwogCQlwc2lnLT5jdXRpbWUgPQogCQkJY3B1dGltZV9hZGQocHNpZy0+Y3V0aW1lLAotCQkJY3B1dGltZV9hZGQocC0+dXRpbWUsCi0JCQljcHV0aW1lX2FkZChzaWctPnV0aW1lLAotCQkJCSAgICBzaWctPmN1dGltZSkpKTsKKwkJCWNwdXRpbWVfYWRkKGNwdXRpbWUudXRpbWUsCisJCQkJICAgIHNpZy0+Y3V0aW1lKSk7CiAJCXBzaWctPmNzdGltZSA9CiAJCQljcHV0aW1lX2FkZChwc2lnLT5jc3RpbWUsCi0JCQljcHV0aW1lX2FkZChwLT5zdGltZSwKLQkJCWNwdXRpbWVfYWRkKHNpZy0+c3RpbWUsCi0JCQkJICAgIHNpZy0+Y3N0aW1lKSkpOworCQkJY3B1dGltZV9hZGQoY3B1dGltZS5zdGltZSwKKwkJCQkgICAgc2lnLT5jc3RpbWUpKTsKIAkJcHNpZy0+Y2d0aW1lID0KIAkJCWNwdXRpbWVfYWRkKHBzaWctPmNndGltZSwKIAkJCWNwdXRpbWVfYWRkKHAtPmd0aW1lLApkaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmMKaW5kZXggMzBkZTY0NC4uNDRlNjRkNyAxMDA2NDQKLS0tIGEva2VybmVsL2ZvcmsuYworKysgYi9rZXJuZWwvZm9yay5jCkBAIC03NTksMTUgKzc1OSw0NCBAQAogCQlrbWVtX2NhY2hlX2ZyZWUoc2lnaGFuZF9jYWNoZXAsIHNpZ2hhbmQpOwogfQogCisKKy8qCisgKiBJbml0aWFsaXplIFBPU0lYIHRpbWVyIGhhbmRsaW5nIGZvciBhIHRocmVhZCBncm91cC4KKyAqLworc3RhdGljIHZvaWQgcG9zaXhfY3B1X3RpbWVyc19pbml0X2dyb3VwKHN0cnVjdCBzaWduYWxfc3RydWN0ICpzaWcpCit7CisJLyogVGhyZWFkIGdyb3VwIGNvdW50ZXJzLiAqLworCXRocmVhZF9ncm91cF9jcHV0aW1lX2luaXQoc2lnKTsKKworCS8qIEV4cGlyYXRpb24gdGltZXMgYW5kIGluY3JlbWVudHMuICovCisJc2lnLT5pdF92aXJ0X2V4cGlyZXMgPSBjcHV0aW1lX3plcm87CisJc2lnLT5pdF92aXJ0X2luY3IgPSBjcHV0aW1lX3plcm87CisJc2lnLT5pdF9wcm9mX2V4cGlyZXMgPSBjcHV0aW1lX3plcm87CisJc2lnLT5pdF9wcm9mX2luY3IgPSBjcHV0aW1lX3plcm87CisKKwkvKiBDYWNoZWQgZXhwaXJhdGlvbiB0aW1lcy4gKi8KKwlzaWctPmNwdXRpbWVfZXhwaXJlcy5wcm9mX2V4cCA9IGNwdXRpbWVfemVybzsKKwlzaWctPmNwdXRpbWVfZXhwaXJlcy52aXJ0X2V4cCA9IGNwdXRpbWVfemVybzsKKwlzaWctPmNwdXRpbWVfZXhwaXJlcy5zY2hlZF9leHAgPSAwOworCisJLyogVGhlIHRpbWVyIGxpc3RzLiAqLworCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMF0pOworCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMV0pOworCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMl0pOworfQorCiBzdGF0aWMgaW50IGNvcHlfc2lnbmFsKHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQogewogCXN0cnVjdCBzaWduYWxfc3RydWN0ICpzaWc7CiAJaW50IHJldDsKIAogCWlmIChjbG9uZV9mbGFncyAmIENMT05FX1RIUkVBRCkgewotCQlhdG9taWNfaW5jKCZjdXJyZW50LT5zaWduYWwtPmNvdW50KTsKLQkJYXRvbWljX2luYygmY3VycmVudC0+c2lnbmFsLT5saXZlKTsKLQkJcmV0dXJuIDA7CisJCXJldCA9IHRocmVhZF9ncm91cF9jcHV0aW1lX2Nsb25lX3RocmVhZChjdXJyZW50KTsKKwkJaWYgKGxpa2VseSghcmV0KSkgeworCQkJYXRvbWljX2luYygmY3VycmVudC0+c2lnbmFsLT5jb3VudCk7CisJCQlhdG9taWNfaW5jKCZjdXJyZW50LT5zaWduYWwtPmxpdmUpOworCQl9CisJCXJldHVybiByZXQ7CiAJfQogCXNpZyA9IGttZW1fY2FjaGVfYWxsb2Moc2lnbmFsX2NhY2hlcCwgR0ZQX0tFUk5FTCk7CiAJdHNrLT5zaWduYWwgPSBzaWc7CkBAIC03OTUsNDAgKzgyNCwyNSBAQAogCXNpZy0+aXRfcmVhbF9pbmNyLnR2NjQgPSAwOwogCXNpZy0+cmVhbF90aW1lci5mdW5jdGlvbiA9IGl0X3JlYWxfZm47CiAKLQlzaWctPml0X3ZpcnRfZXhwaXJlcyA9IGNwdXRpbWVfemVybzsKLQlzaWctPml0X3ZpcnRfaW5jciA9IGNwdXRpbWVfemVybzsKLQlzaWctPml0X3Byb2ZfZXhwaXJlcyA9IGNwdXRpbWVfemVybzsKLQlzaWctPml0X3Byb2ZfaW5jciA9IGNwdXRpbWVfemVybzsKLQogCXNpZy0+bGVhZGVyID0gMDsJLyogc2Vzc2lvbiBsZWFkZXJzaGlwIGRvZXNuJ3QgaW5oZXJpdCAqLwogCXNpZy0+dHR5X29sZF9wZ3JwID0gTlVMTDsKIAlzaWctPnR0eSA9IE5VTEw7CiAKLQlzaWctPnV0aW1lID0gc2lnLT5zdGltZSA9IHNpZy0+Y3V0aW1lID0gc2lnLT5jc3RpbWUgPSBjcHV0aW1lX3plcm87CisJc2lnLT5jdXRpbWUgPSBzaWctPmNzdGltZSA9IGNwdXRpbWVfemVybzsKIAlzaWctPmd0aW1lID0gY3B1dGltZV96ZXJvOwogCXNpZy0+Y2d0aW1lID0gY3B1dGltZV96ZXJvOwogCXNpZy0+bnZjc3cgPSBzaWctPm5pdmNzdyA9IHNpZy0+Y252Y3N3ID0gc2lnLT5jbml2Y3N3ID0gMDsKIAlzaWctPm1pbl9mbHQgPSBzaWctPm1hal9mbHQgPSBzaWctPmNtaW5fZmx0ID0gc2lnLT5jbWFqX2ZsdCA9IDA7CiAJc2lnLT5pbmJsb2NrID0gc2lnLT5vdWJsb2NrID0gc2lnLT5jaW5ibG9jayA9IHNpZy0+Y291YmxvY2sgPSAwOwogCXRhc2tfaW9fYWNjb3VudGluZ19pbml0KCZzaWctPmlvYWMpOwotCXNpZy0+c3VtX3NjaGVkX3J1bnRpbWUgPSAwOwotCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMF0pOwotCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMV0pOwotCUlOSVRfTElTVF9IRUFEKCZzaWctPmNwdV90aW1lcnNbMl0pOwogCXRhc2tzdGF0c190Z2lkX2luaXQoc2lnKTsKIAogCXRhc2tfbG9jayhjdXJyZW50LT5ncm91cF9sZWFkZXIpOwogCW1lbWNweShzaWctPnJsaW0sIGN1cnJlbnQtPnNpZ25hbC0+cmxpbSwgc2l6ZW9mIHNpZy0+cmxpbSk7CiAJdGFza191bmxvY2soY3VycmVudC0+Z3JvdXBfbGVhZGVyKTsKIAotCWlmIChzaWctPnJsaW1bUkxJTUlUX0NQVV0ucmxpbV9jdXIgIT0gUkxJTV9JTkZJTklUWSkgewotCQkvKgotCQkgKiBOZXcgc29sZSB0aHJlYWQgaW4gdGhlIHByb2Nlc3MgZ2V0cyBhbiBleHBpcnkgdGltZQotCQkgKiBvZiB0aGUgd2hvbGUgQ1BVIHRpbWUgbGltaXQuCi0JCSAqLwotCQl0c2stPml0X3Byb2ZfZXhwaXJlcyA9Ci0JCQlzZWNzX3RvX2NwdXRpbWUoc2lnLT5ybGltW1JMSU1JVF9DUFVdLnJsaW1fY3VyKTsKLQl9CisJcG9zaXhfY3B1X3RpbWVyc19pbml0X2dyb3VwKHNpZyk7CisKIAlhY2N0X2luaXRfcGFjY3QoJnNpZy0+cGFjY3QpOwogCiAJdHR5X2F1ZGl0X2Zvcmsoc2lnKTsKQEAgLTgzOCw2ICs4NTIsNyBAQAogCiB2b2lkIF9fY2xlYW51cF9zaWduYWwoc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZykKIHsKKwl0aHJlYWRfZ3JvdXBfY3B1dGltZV9mcmVlKHNpZyk7CiAJZXhpdF90aHJlYWRfZ3JvdXBfa2V5cyhzaWcpOwogCXR0eV9rcmVmX3B1dChzaWctPnR0eSk7CiAJa21lbV9jYWNoZV9mcmVlKHNpZ25hbF9jYWNoZXAsIHNpZyk7CkBAIC04ODgsNiArOTAzLDE5IEBACiAjZW5kaWYgLyogQ09ORklHX01NX09XTkVSICovCiAKIC8qCisgKiBJbml0aWFsaXplIFBPU0lYIHRpbWVyIGhhbmRsaW5nIGZvciBhIHNpbmdsZSB0YXNrLgorICovCitzdGF0aWMgdm9pZCBwb3NpeF9jcHVfdGltZXJzX2luaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCit7CisJdHNrLT5jcHV0aW1lX2V4cGlyZXMucHJvZl9leHAgPSBjcHV0aW1lX3plcm87CisJdHNrLT5jcHV0aW1lX2V4cGlyZXMudmlydF9leHAgPSBjcHV0aW1lX3plcm87CisJdHNrLT5jcHV0aW1lX2V4cGlyZXMuc2NoZWRfZXhwID0gMDsKKwlJTklUX0xJU1RfSEVBRCgmdHNrLT5jcHVfdGltZXJzWzBdKTsKKwlJTklUX0xJU1RfSEVBRCgmdHNrLT5jcHVfdGltZXJzWzFdKTsKKwlJTklUX0xJU1RfSEVBRCgmdHNrLT5jcHVfdGltZXJzWzJdKTsKK30KKworLyoKICAqIFRoaXMgY3JlYXRlcyBhIG5ldyBwcm9jZXNzIGFzIGEgY29weSBvZiB0aGUgb2xkIG9uZSwKICAqIGJ1dCBkb2VzIG5vdCBhY3R1YWxseSBzdGFydCBpdCB5ZXQuCiAgKgpAQCAtOTk3LDEyICsxMDI1LDcgQEAKIAl0YXNrX2lvX2FjY291bnRpbmdfaW5pdCgmcC0+aW9hYyk7CiAJYWNjdF9jbGVhcl9pbnRlZ3JhbHMocCk7CiAKLQlwLT5pdF92aXJ0X2V4cGlyZXMgPSBjcHV0aW1lX3plcm87Ci0JcC0+aXRfcHJvZl9leHBpcmVzID0gY3B1dGltZV96ZXJvOwotCXAtPml0X3NjaGVkX2V4cGlyZXMgPSAwOwotCUlOSVRfTElTVF9IRUFEKCZwLT5jcHVfdGltZXJzWzBdKTsKLQlJTklUX0xJU1RfSEVBRCgmcC0+Y3B1X3RpbWVyc1sxXSk7Ci0JSU5JVF9MSVNUX0hFQUQoJnAtPmNwdV90aW1lcnNbMl0pOworCXBvc2l4X2NwdV90aW1lcnNfaW5pdChwKTsKIAogCXAtPmxvY2tfZGVwdGggPSAtMTsJCS8qIC0xID0gbm8gbG9jayAqLwogCWRvX3Bvc2l4X2Nsb2NrX21vbm90b25pY19nZXR0aW1lKCZwLT5zdGFydF90aW1lKTsKQEAgLTEyMDMsMjEgKzEyMjYsNiBAQAogCWlmIChjbG9uZV9mbGFncyAmIENMT05FX1RIUkVBRCkgewogCQlwLT5ncm91cF9sZWFkZXIgPSBjdXJyZW50LT5ncm91cF9sZWFkZXI7CiAJCWxpc3RfYWRkX3RhaWxfcmN1KCZwLT50aHJlYWRfZ3JvdXAsICZwLT5ncm91cF9sZWFkZXItPnRocmVhZF9ncm91cCk7Ci0KLQkJaWYgKCFjcHV0aW1lX2VxKGN1cnJlbnQtPnNpZ25hbC0+aXRfdmlydF9leHBpcmVzLAotCQkJCWNwdXRpbWVfemVybykgfHwKLQkJICAgICFjcHV0aW1lX2VxKGN1cnJlbnQtPnNpZ25hbC0+aXRfcHJvZl9leHBpcmVzLAotCQkJCWNwdXRpbWVfemVybykgfHwKLQkJICAgIGN1cnJlbnQtPnNpZ25hbC0+cmxpbVtSTElNSVRfQ1BVXS5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZIHx8Ci0JCSAgICAhbGlzdF9lbXB0eSgmY3VycmVudC0+c2lnbmFsLT5jcHVfdGltZXJzWzBdKSB8fAotCQkgICAgIWxpc3RfZW1wdHkoJmN1cnJlbnQtPnNpZ25hbC0+Y3B1X3RpbWVyc1sxXSkgfHwKLQkJICAgICFsaXN0X2VtcHR5KCZjdXJyZW50LT5zaWduYWwtPmNwdV90aW1lcnNbMl0pKSB7Ci0JCQkvKgotCQkJICogSGF2ZSBjaGlsZCB3YWtlIHVwIG9uIGl0cyBmaXJzdCB0aWNrIHRvIGNoZWNrCi0JCQkgKiBmb3IgcHJvY2VzcyBDUFUgdGltZXJzLgotCQkJICovCi0JCQlwLT5pdF9wcm9mX2V4cGlyZXMgPSBqaWZmaWVzX3RvX2NwdXRpbWUoMSk7Ci0JCX0KIAl9CiAKIAlpZiAobGlrZWx5KHAtPnBpZCkpIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9ocnRpbWVyLmMgYi9rZXJuZWwvaHJ0aW1lci5jCmluZGV4IGNkZWM4M2UuLjk1OTc4ZjQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ocnRpbWVyLmMKKysrIGIva2VybmVsL2hydGltZXIuYwpAQCAtMTQwMyw5ICsxNDAzLDcgQEAKIAkJaWYgKCFiYXNlLT5maXJzdCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChiYXNlLT5nZXRfc29mdGlycV90aW1lKQotCQkJYmFzZS0+c29mdGlycV90aW1lID0gYmFzZS0+Z2V0X3NvZnRpcnFfdGltZSgpOwotCQllbHNlIGlmIChnZXR0aW1lKSB7CisJCWlmIChnZXR0aW1lKSB7CiAJCQlocnRpbWVyX2dldF9zb2Z0aXJxX3RpbWUoY3B1X2Jhc2UpOwogCQkJZ2V0dGltZSA9IDA7CiAJCX0KQEAgLTE2ODgsOSArMTY4NiwxMSBAQAogCW5ld19iYXNlID0gJmdldF9jcHVfdmFyKGhydGltZXJfYmFzZXMpOwogCiAJdGlja19jYW5jZWxfc2NoZWRfdGltZXIoY3B1KTsKLQotCWxvY2FsX2lycV9kaXNhYmxlKCk7Ci0Jc3Bpbl9sb2NrKCZuZXdfYmFzZS0+bG9jayk7CisJLyoKKwkgKiBUaGUgY2FsbGVyIGlzIGdsb2JhbGx5IHNlcmlhbGl6ZWQgYW5kIG5vYm9keSBlbHNlCisJICogdGFrZXMgdHdvIGxvY2tzIGF0IG9uY2UsIGRlYWRsb2NrIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlzcGluX2xvY2tfaXJxKCZuZXdfYmFzZS0+bG9jayk7CiAJc3Bpbl9sb2NrX25lc3RlZCgmb2xkX2Jhc2UtPmxvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKIAogCWZvciAoaSA9IDA7IGkgPCBIUlRJTUVSX01BWF9DTE9DS19CQVNFUzsgaSsrKSB7CkBAIC0xNzAzLDggKzE3MDMsNyBAQAogCQlyYWlzZSA9IDE7CiAKIAlzcGluX3VubG9jaygmb2xkX2Jhc2UtPmxvY2spOwotCXNwaW5fdW5sb2NrKCZuZXdfYmFzZS0+bG9jayk7Ci0JbG9jYWxfaXJxX2VuYWJsZSgpOworCXNwaW5fdW5sb2NrX2lycSgmbmV3X2Jhc2UtPmxvY2spOwogCXB1dF9jcHVfdmFyKGhydGltZXJfYmFzZXMpOwogCiAJaWYgKHJhaXNlKQpkaWZmIC0tZ2l0IGEva2VybmVsL2l0aW1lci5jIGIva2VybmVsL2l0aW1lci5jCmluZGV4IGFiOTgyNzQuLmRiN2MzNTggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9pdGltZXIuYworKysgYi9rZXJuZWwvaXRpbWVyLmMKQEAgLTU1LDE3ICs1NSwxNSBAQAogCQlzcGluX3VubG9ja19pcnEoJnRzay0+c2lnaGFuZC0+c2lnbG9jayk7CiAJCWJyZWFrOwogCWNhc2UgSVRJTUVSX1ZJUlRVQUw6Ci0JCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7CiAJCXNwaW5fbG9ja19pcnEoJnRzay0+c2lnaGFuZC0+c2lnbG9jayk7CiAJCWN2YWwgPSB0c2stPnNpZ25hbC0+aXRfdmlydF9leHBpcmVzOwogCQljaW50ZXJ2YWwgPSB0c2stPnNpZ25hbC0+aXRfdmlydF9pbmNyOwogCQlpZiAoIWNwdXRpbWVfZXEoY3ZhbCwgY3B1dGltZV96ZXJvKSkgewotCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0ID0gdHNrOwotCQkJY3B1dGltZV90IHV0aW1lID0gdHNrLT5zaWduYWwtPnV0aW1lOwotCQkJZG8gewotCQkJCXV0aW1lID0gY3B1dGltZV9hZGQodXRpbWUsIHQtPnV0aW1lKTsKLQkJCQl0ID0gbmV4dF90aHJlYWQodCk7Ci0JCQl9IHdoaWxlICh0ICE9IHRzayk7CisJCQlzdHJ1Y3QgdGFza19jcHV0aW1lIGNwdXRpbWU7CisJCQljcHV0aW1lX3QgdXRpbWU7CisKKwkJCXRocmVhZF9ncm91cF9jcHV0aW1lKHRzaywgJmNwdXRpbWUpOworCQkJdXRpbWUgPSBjcHV0aW1lLnV0aW1lOwogCQkJaWYgKGNwdXRpbWVfbGUoY3ZhbCwgdXRpbWUpKSB7IC8qIGFib3V0IHRvIGZpcmUgKi8KIAkJCQljdmFsID0gamlmZmllc190b19jcHV0aW1lKDEpOwogCQkJfSBlbHNlIHsKQEAgLTczLDI1ICs3MSwxOSBAQAogCQkJfQogCQl9CiAJCXNwaW5fdW5sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwogCQljcHV0aW1lX3RvX3RpbWV2YWwoY3ZhbCwgJnZhbHVlLT5pdF92YWx1ZSk7CiAJCWNwdXRpbWVfdG9fdGltZXZhbChjaW50ZXJ2YWwsICZ2YWx1ZS0+aXRfaW50ZXJ2YWwpOwogCQlicmVhazsKIAljYXNlIElUSU1FUl9QUk9GOgotCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwogCQlzcGluX2xvY2tfaXJxKCZ0c2stPnNpZ2hhbmQtPnNpZ2xvY2spOwogCQljdmFsID0gdHNrLT5zaWduYWwtPml0X3Byb2ZfZXhwaXJlczsKIAkJY2ludGVydmFsID0gdHNrLT5zaWduYWwtPml0X3Byb2ZfaW5jcjsKIAkJaWYgKCFjcHV0aW1lX2VxKGN2YWwsIGNwdXRpbWVfemVybykpIHsKLQkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdCA9IHRzazsKLQkJCWNwdXRpbWVfdCBwdGltZSA9IGNwdXRpbWVfYWRkKHRzay0+c2lnbmFsLT51dGltZSwKLQkJCQkJCSAgICAgIHRzay0+c2lnbmFsLT5zdGltZSk7Ci0JCQlkbyB7Ci0JCQkJcHRpbWUgPSBjcHV0aW1lX2FkZChwdGltZSwKLQkJCQkJCSAgICBjcHV0aW1lX2FkZCh0LT51dGltZSwKLQkJCQkJCQkJdC0+c3RpbWUpKTsKLQkJCQl0ID0gbmV4dF90aHJlYWQodCk7Ci0JCQl9IHdoaWxlICh0ICE9IHRzayk7CisJCQlzdHJ1Y3QgdGFza19jcHV0aW1lIHRpbWVzOworCQkJY3B1dGltZV90IHB0aW1lOworCisJCQl0aHJlYWRfZ3JvdXBfY3B1dGltZSh0c2ssICZ0aW1lcyk7CisJCQlwdGltZSA9IGNwdXRpbWVfYWRkKHRpbWVzLnV0aW1lLCB0aW1lcy5zdGltZSk7CiAJCQlpZiAoY3B1dGltZV9sZShjdmFsLCBwdGltZSkpIHsgLyogYWJvdXQgdG8gZmlyZSAqLwogCQkJCWN2YWwgPSBqaWZmaWVzX3RvX2NwdXRpbWUoMSk7CiAJCQl9IGVsc2UgewpAQCAtOTksNyArOTEsNiBAQAogCQkJfQogCQl9CiAJCXNwaW5fdW5sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwogCQljcHV0aW1lX3RvX3RpbWV2YWwoY3ZhbCwgJnZhbHVlLT5pdF92YWx1ZSk7CiAJCWNwdXRpbWVfdG9fdGltZXZhbChjaW50ZXJ2YWwsICZ2YWx1ZS0+aXRfaW50ZXJ2YWwpOwogCQlicmVhazsKQEAgLTE4NSw3ICsxNzYsNiBAQAogCWNhc2UgSVRJTUVSX1ZJUlRVQUw6CiAJCW52YWwgPSB0aW1ldmFsX3RvX2NwdXRpbWUoJnZhbHVlLT5pdF92YWx1ZSk7CiAJCW5pbnRlcnZhbCA9IHRpbWV2YWxfdG9fY3B1dGltZSgmdmFsdWUtPml0X2ludGVydmFsKTsKLQkJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAkJc3Bpbl9sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKIAkJY3ZhbCA9IHRzay0+c2lnbmFsLT5pdF92aXJ0X2V4cGlyZXM7CiAJCWNpbnRlcnZhbCA9IHRzay0+c2lnbmFsLT5pdF92aXJ0X2luY3I7CkBAIC0yMDAsNyArMTkwLDYgQEAKIAkJdHNrLT5zaWduYWwtPml0X3ZpcnRfZXhwaXJlcyA9IG52YWw7CiAJCXRzay0+c2lnbmFsLT5pdF92aXJ0X2luY3IgPSBuaW50ZXJ2YWw7CiAJCXNwaW5fdW5sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwogCQlpZiAob3ZhbHVlKSB7CiAJCQljcHV0aW1lX3RvX3RpbWV2YWwoY3ZhbCwgJm92YWx1ZS0+aXRfdmFsdWUpOwogCQkJY3B1dGltZV90b190aW1ldmFsKGNpbnRlcnZhbCwgJm92YWx1ZS0+aXRfaW50ZXJ2YWwpOwpAQCAtMjA5LDcgKzE5OCw2IEBACiAJY2FzZSBJVElNRVJfUFJPRjoKIAkJbnZhbCA9IHRpbWV2YWxfdG9fY3B1dGltZSgmdmFsdWUtPml0X3ZhbHVlKTsKIAkJbmludGVydmFsID0gdGltZXZhbF90b19jcHV0aW1lKCZ2YWx1ZS0+aXRfaW50ZXJ2YWwpOwotCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwogCQlzcGluX2xvY2tfaXJxKCZ0c2stPnNpZ2hhbmQtPnNpZ2xvY2spOwogCQljdmFsID0gdHNrLT5zaWduYWwtPml0X3Byb2ZfZXhwaXJlczsKIAkJY2ludGVydmFsID0gdHNrLT5zaWduYWwtPml0X3Byb2ZfaW5jcjsKQEAgLTIyNCw3ICsyMTIsNiBAQAogCQl0c2stPnNpZ25hbC0+aXRfcHJvZl9leHBpcmVzID0gbnZhbDsKIAkJdHNrLT5zaWduYWwtPml0X3Byb2ZfaW5jciA9IG5pbnRlcnZhbDsKIAkJc3Bpbl91bmxvY2tfaXJxKCZ0c2stPnNpZ2hhbmQtPnNpZ2xvY2spOwotCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CiAJCWlmIChvdmFsdWUpIHsKIAkJCWNwdXRpbWVfdG9fdGltZXZhbChjdmFsLCAmb3ZhbHVlLT5pdF92YWx1ZSk7CiAJCQljcHV0aW1lX3RvX3RpbWV2YWwoY2ludGVydmFsLCAmb3ZhbHVlLT5pdF9pbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbW9kdWxlLmMgYi9rZXJuZWwvbW9kdWxlLmMKaW5kZXggYjcyMDVmNi4uMjViYzlhYyAxMDA2NDQKLS0tIGEva2VybmVsL21vZHVsZS5jCisrKyBiL2tlcm5lbC9tb2R1bGUuYwpAQCAtMTgzNCw2ICsxODM0LDcgQEAKIAlFbGZfRWhkciAqaGRyOwogCUVsZl9TaGRyICpzZWNoZHJzOwogCWNoYXIgKnNlY3N0cmluZ3MsICphcmdzLCAqbW9kbWFnaWMsICpzdHJ0YWIgPSBOVUxMOworCWNoYXIgKnN0YWdpbmc7CiAJdW5zaWduZWQgaW50IGk7CiAJdW5zaWduZWQgaW50IHN5bWluZGV4ID0gMDsKIAl1bnNpZ25lZCBpbnQgc3RyaW5kZXggPSAwOwpAQCAtMTk4OSw2ICsxOTkwLDE0IEBACiAJCWdvdG8gZnJlZV9oZHI7CiAJfQogCisJc3RhZ2luZyA9IGdldF9tb2RpbmZvKHNlY2hkcnMsIGluZm9pbmRleCwgInN0YWdpbmciKTsKKwlpZiAoc3RhZ2luZykgeworCQlhZGRfdGFpbnRfbW9kdWxlKG1vZCwgVEFJTlRfQ1JBUCk7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBtb2R1bGUgaXMgZnJvbSB0aGUgc3RhZ2luZyBkaXJlY3RvcnksIgorCQkgICAgICAgIiB0aGUgcXVhbGl0eSBpcyB1bmtub3duLCB5b3UgaGF2ZSBiZWVuIHdhcm5lZC5cbiIsCisJCSAgICAgICBtb2QtPm5hbWUpOworCX0KKwogCS8qIE5vdyBjb3B5IGluIGFyZ3MgKi8KIAlhcmdzID0gc3RybmR1cF91c2VyKHVhcmdzLCB+MFVMID4+IDEpOwogCWlmIChJU19FUlIoYXJncykpIHsKQEAgLTI1ODcsNiArMjU5Niw4IEBACiAJCQlidWZbYngrK10gPSAnUCc7CiAJCWlmIChtb2QtPnRhaW50cyAmICgxIDw8IFRBSU5UX0ZPUkNFRF9NT0RVTEUpKQogCQkJYnVmW2J4KytdID0gJ0YnOworCQlpZiAobW9kLT50YWludHMgJiAoMSA8PCBUQUlOVF9DUkFQKSkKKwkJCWJ1ZltieCsrXSA9ICdDJzsKIAkJLyoKIAkJICogVEFJTlRfRk9SQ0VEX1JNTU9EOiBjb3VsZCBiZSBhZGRlZC4KIAkJICogVEFJTlRfVU5TQUZFX1NNUCwgVEFJTlRfTUFDSElORV9DSEVDSywgVEFJTlRfQkFEX1BBR0UgZG9uJ3QKZGlmZiAtLWdpdCBhL2tlcm5lbC9wYW5pYy5jIGIva2VybmVsL3BhbmljLmMKaW5kZXggZjI5MGU4ZS4uYmRhNTYxZSAxMDA2NDQKLS0tIGEva2VybmVsL3BhbmljLmMKKysrIGIva2VybmVsL3BhbmljLmMKQEAgLTE2MSw2ICsxNjEsNyBAQAogCXsgVEFJTlRfRElFLCAnRCcsICcgJyB9LAogCXsgVEFJTlRfT1ZFUlJJRERFTl9BQ1BJX1RBQkxFLCAnQScsICcgJyB9LAogCXsgVEFJTlRfV0FSTiwgJ1cnLCAnICcgfSwKKwl7IFRBSU5UX0NSQVAsICdDJywgJyAnIH0sCiB9OwogCiAvKioKQEAgLTE3NSw2ICsxNzYsNyBAQAogICogICdVJyAtIFVzZXJzcGFjZS1kZWZpbmVkIG5hdWdodGluZXNzLgogICogICdBJyAtIEFDUEkgdGFibGUgb3ZlcnJpZGRlbi4KICAqICAnVycgLSBUYWludCBvbiB3YXJuaW5nLgorICogICdDJyAtIG1vZHVsZXMgZnJvbSBkcml2ZXJzL3N0YWdpbmcgYXJlIGxvYWRlZC4KICAqCiAgKglUaGUgc3RyaW5nIGlzIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IGNhbGwgdG8gcHJpbnRfdGFpbnQoKS4KICAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvc2l4LWNwdS10aW1lcnMuYyBiL2tlcm5lbC9wb3NpeC1jcHUtdGltZXJzLmMKaW5kZXggYzQyYTAzYS4uMTUzZGNiMiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvc2l4LWNwdS10aW1lcnMuYworKysgYi9rZXJuZWwvcG9zaXgtY3B1LXRpbWVycy5jCkBAIC03LDYgKzcsOTMgQEAKICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L21hdGg2NC5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsX3N0YXQuaD4KKworLyoKKyAqIEFsbG9jYXRlIHRoZSB0aHJlYWRfZ3JvdXBfY3B1dGltZSBzdHJ1Y3R1cmUgYXBwcm9wcmlhdGVseSBhbmQgZmlsbCBpbiB0aGUKKyAqIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSBmaWVsZHMuICBDYWxsZWQgZnJvbSBjb3B5X3NpZ25hbCgpIHZpYQorICogdGhyZWFkX2dyb3VwX2NwdXRpbWVfY2xvbmVfdGhyZWFkKCkgd2hlbiBhZGRpbmcgYSBzZWNvbmQgb3Igc3Vic2VxdWVudAorICogdGhyZWFkIHRvIGEgdGhyZWFkIGdyb3VwLiAgQXNzdW1lcyBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkIHdoZW4gY2FsbGVkLgorICovCitpbnQgdGhyZWFkX2dyb3VwX2NwdXRpbWVfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCit7CisJc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZyA9IHRzay0+c2lnbmFsOworCXN0cnVjdCB0YXNrX2NwdXRpbWUgKmNwdXRpbWU7CisKKwkvKgorCSAqIElmIHdlIGhhdmUgbXVsdGlwbGUgdGhyZWFkcyBhbmQgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEKKwkgKiBwZXItQ1BVIHRhc2tfY3B1dGltZSBzdHJ1Y3QgKGNoZWNrZWQgaW4gdGhlIGNhbGxlciksIGFsbG9jYXRlCisJICogb25lIGFuZCBmaWxsIGl0IGluIHdpdGggdGhlIHRpbWVzIGFjY3VtdWxhdGVkIHNvIGZhci4gIFdlIG1heQorCSAqIHJhY2Ugd2l0aCBhbm90aGVyIHRocmVhZCBzbyByZWNoZWNrIGFmdGVyIHdlIHBpY2sgdXAgdGhlIHNpZ2hhbmQKKwkgKiBsb2NrLgorCSAqLworCWNwdXRpbWUgPSBhbGxvY19wZXJjcHUoc3RydWN0IHRhc2tfY3B1dGltZSk7CisJaWYgKGNwdXRpbWUgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisJc3Bpbl9sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKKwlpZiAoc2lnLT5jcHV0aW1lLnRvdGFscykgeworCQlzcGluX3VubG9ja19pcnEoJnRzay0+c2lnaGFuZC0+c2lnbG9jayk7CisJCWZyZWVfcGVyY3B1KGNwdXRpbWUpOworCQlyZXR1cm4gMDsKKwl9CisJc2lnLT5jcHV0aW1lLnRvdGFscyA9IGNwdXRpbWU7CisJY3B1dGltZSA9IHBlcl9jcHVfcHRyKHNpZy0+Y3B1dGltZS50b3RhbHMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJY3B1dGltZS0+dXRpbWUgPSB0c2stPnV0aW1lOworCWNwdXRpbWUtPnN0aW1lID0gdHNrLT5zdGltZTsKKwljcHV0aW1lLT5zdW1fZXhlY19ydW50aW1lID0gdHNrLT5zZS5zdW1fZXhlY19ydW50aW1lOworCXNwaW5fdW5sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiB0aHJlYWRfZ3JvdXBfY3B1dGltZSAtIFN1bSB0aGUgdGhyZWFkIGdyb3VwIHRpbWUgZmllbGRzIGFjcm9zcyBhbGwgQ1BVcy4KKyAqCisgKiBAdHNrOglUaGUgdGFzayB3ZSB1c2UgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBncm91cC4KKyAqIEB0aW1lczoJdGFza19jcHV0aW1lIHN0cnVjdHVyZSBpbiB3aGljaCB3ZSByZXR1cm4gdGhlIHN1bW1lZCBmaWVsZHMuCisgKgorICogV2FsayB0aGUgbGlzdCBvZiBDUFVzIHRvIHN1bSB0aGUgcGVyLUNQVSB0aW1lIGZpZWxkcyBpbiB0aGUgdGhyZWFkIGdyb3VwCisgKiB0aW1lIHN0cnVjdHVyZS4KKyAqLwordm9pZCB0aHJlYWRfZ3JvdXBfY3B1dGltZSgKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKKwlzdHJ1Y3QgdGFza19jcHV0aW1lICp0aW1lcykKK3sKKwlzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOworCWludCBpOworCXN0cnVjdCB0YXNrX2NwdXRpbWUgKnRvdDsKKworCXNpZyA9IHRzay0+c2lnbmFsOworCWlmICh1bmxpa2VseSghc2lnKSB8fCAhc2lnLT5jcHV0aW1lLnRvdGFscykgeworCQl0aW1lcy0+dXRpbWUgPSB0c2stPnV0aW1lOworCQl0aW1lcy0+c3RpbWUgPSB0c2stPnN0aW1lOworCQl0aW1lcy0+c3VtX2V4ZWNfcnVudGltZSA9IHRzay0+c2Uuc3VtX2V4ZWNfcnVudGltZTsKKwkJcmV0dXJuOworCX0KKwl0aW1lcy0+c3RpbWUgPSB0aW1lcy0+dXRpbWUgPSBjcHV0aW1lX3plcm87CisJdGltZXMtPnN1bV9leGVjX3J1bnRpbWUgPSAwOworCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7CisJCXRvdCA9IHBlcl9jcHVfcHRyKHRzay0+c2lnbmFsLT5jcHV0aW1lLnRvdGFscywgaSk7CisJCXRpbWVzLT51dGltZSA9IGNwdXRpbWVfYWRkKHRpbWVzLT51dGltZSwgdG90LT51dGltZSk7CisJCXRpbWVzLT5zdGltZSA9IGNwdXRpbWVfYWRkKHRpbWVzLT5zdGltZSwgdG90LT5zdGltZSk7CisJCXRpbWVzLT5zdW1fZXhlY19ydW50aW1lICs9IHRvdC0+c3VtX2V4ZWNfcnVudGltZTsKKwl9Cit9CisKKy8qCisgKiBDYWxsZWQgYWZ0ZXIgdXBkYXRpbmcgUkxJTUlUX0NQVSB0byBzZXQgdGltZXIgZXhwaXJhdGlvbiBpZiBuZWNlc3NhcnkuCisgKi8KK3ZvaWQgdXBkYXRlX3JsaW1pdF9jcHUodW5zaWduZWQgbG9uZyBybGltX25ldykKK3sKKwljcHV0aW1lX3QgY3B1dGltZTsKKworCWNwdXRpbWUgPSBzZWNzX3RvX2NwdXRpbWUocmxpbV9uZXcpOworCWlmIChjcHV0aW1lX2VxKGN1cnJlbnQtPnNpZ25hbC0+aXRfcHJvZl9leHBpcmVzLCBjcHV0aW1lX3plcm8pIHx8CisJICAgIGNwdXRpbWVfbHQoY3VycmVudC0+c2lnbmFsLT5pdF9wcm9mX2V4cGlyZXMsIGNwdXRpbWUpKSB7CisJCXNwaW5fbG9ja19pcnEoJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOworCQlzZXRfcHJvY2Vzc19jcHVfdGltZXIoY3VycmVudCwgQ1BVQ0xPQ0tfUFJPRiwgJmNwdXRpbWUsIE5VTEwpOworCQlzcGluX3VubG9ja19pcnEoJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOworCX0KK30KIAogc3RhdGljIGludCBjaGVja19jbG9jayhjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2spCiB7CkBAIC0xNTgsMTAgKzI0NSw2IEBACiB7CiAJcmV0dXJuIHAtPnV0aW1lOwogfQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgc2NoZWRfbnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKQotewotCXJldHVybiB0YXNrX3NjaGVkX3J1bnRpbWUocCk7Ci19CiAKIGludCBwb3NpeF9jcHVfY2xvY2tfZ2V0cmVzKGNvbnN0IGNsb2NraWRfdCB3aGljaF9jbG9jaywgc3RydWN0IHRpbWVzcGVjICp0cCkKIHsKQEAgLTIxMSw0NiArMjk0LDcgQEAKIAkJY3B1LT5jcHUgPSB2aXJ0X3RpY2tzKHApOwogCQlicmVhazsKIAljYXNlIENQVUNMT0NLX1NDSEVEOgotCQljcHUtPnNjaGVkID0gc2NoZWRfbnMocCk7Ci0JCWJyZWFrOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIFNhbXBsZSBhIHByb2Nlc3MgKHRocmVhZCBncm91cCkgY2xvY2sgZm9yIHRoZSBnaXZlbiBncm91cF9sZWFkZXIgdGFzay4KLSAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGFza2xpc3RfbG9jayBoZWxkIGZvciByZWFkaW5nLgotICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0YXNrbGlzdF9sb2NrIGhlbGQgZm9yIHJlYWRpbmcsIGFuZCBwLT5zaWdoYW5kLT5zaWdsb2NrLgotICovCi1zdGF0aWMgaW50IGNwdV9jbG9ja19zYW1wbGVfZ3JvdXBfbG9ja2VkKHVuc2lnbmVkIGludCBjbG9ja19pZHgsCi0JCQkJCSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsCi0JCQkJCSB1bmlvbiBjcHVfdGltZV9jb3VudCAqY3B1KQotewotCXN0cnVjdCB0YXNrX3N0cnVjdCAqdCA9IHA7Ci0gCXN3aXRjaCAoY2xvY2tfaWR4KSB7Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JY2FzZSBDUFVDTE9DS19QUk9GOgotCQljcHUtPmNwdSA9IGNwdXRpbWVfYWRkKHAtPnNpZ25hbC0+dXRpbWUsIHAtPnNpZ25hbC0+c3RpbWUpOwotCQlkbyB7Ci0JCQljcHUtPmNwdSA9IGNwdXRpbWVfYWRkKGNwdS0+Y3B1LCBwcm9mX3RpY2tzKHQpKTsKLQkJCXQgPSBuZXh0X3RocmVhZCh0KTsKLQkJfSB3aGlsZSAodCAhPSBwKTsKLQkJYnJlYWs7Ci0JY2FzZSBDUFVDTE9DS19WSVJUOgotCQljcHUtPmNwdSA9IHAtPnNpZ25hbC0+dXRpbWU7Ci0JCWRvIHsKLQkJCWNwdS0+Y3B1ID0gY3B1dGltZV9hZGQoY3B1LT5jcHUsIHZpcnRfdGlja3ModCkpOwotCQkJdCA9IG5leHRfdGhyZWFkKHQpOwotCQl9IHdoaWxlICh0ICE9IHApOwotCQlicmVhazsKLQljYXNlIENQVUNMT0NLX1NDSEVEOgotCQljcHUtPnNjaGVkID0gcC0+c2lnbmFsLT5zdW1fc2NoZWRfcnVudGltZTsKLQkJLyogQWRkIGluIGVhY2ggb3RoZXIgbGl2ZSB0aHJlYWQuICAqLwotCQl3aGlsZSAoKHQgPSBuZXh0X3RocmVhZCh0KSkgIT0gcCkgewotCQkJY3B1LT5zY2hlZCArPSB0LT5zZS5zdW1fZXhlY19ydW50aW1lOwotCQl9Ci0JCWNwdS0+c2NoZWQgKz0gc2NoZWRfbnMocCk7CisJCWNwdS0+c2NoZWQgPSBwLT5zZS5zdW1fZXhlY19ydW50aW1lICsgdGFza19kZWx0YV9leGVjKHApOwogCQlicmVhazsKIAl9CiAJcmV0dXJuIDA7CkBAIC0yNjQsMTMgKzMwOCwyMyBAQAogCQkJCSAgc3RydWN0IHRhc2tfc3RydWN0ICpwLAogCQkJCSAgdW5pb24gY3B1X3RpbWVfY291bnQgKmNwdSkKIHsKLQlpbnQgcmV0OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJnAtPnNpZ2hhbmQtPnNpZ2xvY2ssIGZsYWdzKTsKLQlyZXQgPSBjcHVfY2xvY2tfc2FtcGxlX2dyb3VwX2xvY2tlZChDUFVDTE9DS19XSElDSCh3aGljaF9jbG9jayksIHAsCi0JCQkJCSAgICBjcHUpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnAtPnNpZ2hhbmQtPnNpZ2xvY2ssIGZsYWdzKTsKLQlyZXR1cm4gcmV0OworCXN0cnVjdCB0YXNrX2NwdXRpbWUgY3B1dGltZTsKKworCXRocmVhZF9ncm91cF9jcHV0aW1lKHAsICZjcHV0aW1lKTsKKwlzd2l0Y2ggKHdoaWNoX2Nsb2NrKSB7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJY2FzZSBDUFVDTE9DS19QUk9GOgorCQljcHUtPmNwdSA9IGNwdXRpbWVfYWRkKGNwdXRpbWUudXRpbWUsIGNwdXRpbWUuc3RpbWUpOworCQlicmVhazsKKwljYXNlIENQVUNMT0NLX1ZJUlQ6CisJCWNwdS0+Y3B1ID0gY3B1dGltZS51dGltZTsKKwkJYnJlYWs7CisJY2FzZSBDUFVDTE9DS19TQ0hFRDoKKwkJY3B1LT5zY2hlZCA9IGNwdXRpbWUuc3VtX2V4ZWNfcnVudGltZSArIHRhc2tfZGVsdGFfZXhlYyhwKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiAwOwogfQogCiAKQEAgLTQ3MSw4MCArNTI1LDExIEBACiB9CiB2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIHsKKwlzdHJ1Y3QgdGFza19jcHV0aW1lIGNwdXRpbWU7CisKKwl0aHJlYWRfZ3JvdXBfY3B1dGltZSh0c2ssICZjcHV0aW1lKTsKIAljbGVhbnVwX3RpbWVycyh0c2stPnNpZ25hbC0+Y3B1X3RpbWVycywKLQkJICAgICAgIGNwdXRpbWVfYWRkKHRzay0+dXRpbWUsIHRzay0+c2lnbmFsLT51dGltZSksCi0JCSAgICAgICBjcHV0aW1lX2FkZCh0c2stPnN0aW1lLCB0c2stPnNpZ25hbC0+c3RpbWUpLAotCQkgICAgIHRzay0+c2Uuc3VtX2V4ZWNfcnVudGltZSArIHRzay0+c2lnbmFsLT5zdW1fc2NoZWRfcnVudGltZSk7Ci19Ci0KLQotLyoKLSAqIFNldCB0aGUgZXhwaXJ5IHRpbWVzIG9mIGFsbCB0aGUgdGhyZWFkcyBpbiB0aGUgcHJvY2VzcyBzbyBvbmUgb2YgdGhlbQotICogd2lsbCBnbyBvZmYgYmVmb3JlIHRoZSBwcm9jZXNzIGN1bXVsYXRpdmUgZXhwaXJ5IHRvdGFsIGlzIHJlYWNoZWQuCi0gKi8KLXN0YXRpYyB2b2lkIHByb2Nlc3NfdGltZXJfcmViYWxhbmNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwKLQkJCQkgICAgdW5zaWduZWQgaW50IGNsb2NrX2lkeCwKLQkJCQkgICAgdW5pb24gY3B1X3RpbWVfY291bnQgZXhwaXJlcywKLQkJCQkgICAgdW5pb24gY3B1X3RpbWVfY291bnQgdmFsKQotewotCWNwdXRpbWVfdCB0aWNrcywgbGVmdDsKLQl1bnNpZ25lZCBsb25nIGxvbmcgbnMsIG5zbGVmdDsKLSAJc3RydWN0IHRhc2tfc3RydWN0ICp0ID0gcDsKLQl1bnNpZ25lZCBpbnQgbnRocmVhZHMgPSBhdG9taWNfcmVhZCgmcC0+c2lnbmFsLT5saXZlKTsKLQotCWlmICghbnRocmVhZHMpCi0JCXJldHVybjsKLQotCXN3aXRjaCAoY2xvY2tfaWR4KSB7Ci0JZGVmYXVsdDoKLQkJQlVHKCk7Ci0JCWJyZWFrOwotCWNhc2UgQ1BVQ0xPQ0tfUFJPRjoKLQkJbGVmdCA9IGNwdXRpbWVfZGl2X25vbl96ZXJvKGNwdXRpbWVfc3ViKGV4cGlyZXMuY3B1LCB2YWwuY3B1KSwKLQkJCQkgICAgICAgbnRocmVhZHMpOwotCQlkbyB7Ci0JCQlpZiAobGlrZWx5KCEodC0+ZmxhZ3MgJiBQRl9FWElUSU5HKSkpIHsKLQkJCQl0aWNrcyA9IGNwdXRpbWVfYWRkKHByb2ZfdGlja3ModCksIGxlZnQpOwotCQkJCWlmIChjcHV0aW1lX2VxKHQtPml0X3Byb2ZfZXhwaXJlcywKLQkJCQkJICAgICAgIGNwdXRpbWVfemVybykgfHwKLQkJCQkgICAgY3B1dGltZV9ndCh0LT5pdF9wcm9mX2V4cGlyZXMsIHRpY2tzKSkgewotCQkJCQl0LT5pdF9wcm9mX2V4cGlyZXMgPSB0aWNrczsKLQkJCQl9Ci0JCQl9Ci0JCQl0ID0gbmV4dF90aHJlYWQodCk7Ci0JCX0gd2hpbGUgKHQgIT0gcCk7Ci0JCWJyZWFrOwotCWNhc2UgQ1BVQ0xPQ0tfVklSVDoKLQkJbGVmdCA9IGNwdXRpbWVfZGl2X25vbl96ZXJvKGNwdXRpbWVfc3ViKGV4cGlyZXMuY3B1LCB2YWwuY3B1KSwKLQkJCQkgICAgICAgbnRocmVhZHMpOwotCQlkbyB7Ci0JCQlpZiAobGlrZWx5KCEodC0+ZmxhZ3MgJiBQRl9FWElUSU5HKSkpIHsKLQkJCQl0aWNrcyA9IGNwdXRpbWVfYWRkKHZpcnRfdGlja3ModCksIGxlZnQpOwotCQkJCWlmIChjcHV0aW1lX2VxKHQtPml0X3ZpcnRfZXhwaXJlcywKLQkJCQkJICAgICAgIGNwdXRpbWVfemVybykgfHwKLQkJCQkgICAgY3B1dGltZV9ndCh0LT5pdF92aXJ0X2V4cGlyZXMsIHRpY2tzKSkgewotCQkJCQl0LT5pdF92aXJ0X2V4cGlyZXMgPSB0aWNrczsKLQkJCQl9Ci0JCQl9Ci0JCQl0ID0gbmV4dF90aHJlYWQodCk7Ci0JCX0gd2hpbGUgKHQgIT0gcCk7Ci0JCWJyZWFrOwotCWNhc2UgQ1BVQ0xPQ0tfU0NIRUQ6Ci0JCW5zbGVmdCA9IGV4cGlyZXMuc2NoZWQgLSB2YWwuc2NoZWQ7Ci0JCWRvX2Rpdihuc2xlZnQsIG50aHJlYWRzKTsKLQkJbnNsZWZ0ID0gbWF4X3QodW5zaWduZWQgbG9uZyBsb25nLCBuc2xlZnQsIDEpOwotCQlkbyB7Ci0JCQlpZiAobGlrZWx5KCEodC0+ZmxhZ3MgJiBQRl9FWElUSU5HKSkpIHsKLQkJCQlucyA9IHQtPnNlLnN1bV9leGVjX3J1bnRpbWUgKyBuc2xlZnQ7Ci0JCQkJaWYgKHQtPml0X3NjaGVkX2V4cGlyZXMgPT0gMCB8fAotCQkJCSAgICB0LT5pdF9zY2hlZF9leHBpcmVzID4gbnMpIHsKLQkJCQkJdC0+aXRfc2NoZWRfZXhwaXJlcyA9IG5zOwotCQkJCX0KLQkJCX0KLQkJCXQgPSBuZXh0X3RocmVhZCh0KTsKLQkJfSB3aGlsZSAodCAhPSBwKTsKLQkJYnJlYWs7Ci0JfQorCQkgICAgICAgY3B1dGltZS51dGltZSwgY3B1dGltZS5zdGltZSwgY3B1dGltZS5zdW1fZXhlY19ydW50aW1lKTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJfZGVhZF90YXNrKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHVuaW9uIGNwdV90aW1lX2NvdW50IG5vdykKQEAgLTYwOCwyOSArNTkzLDMyIEBACiAJCQlkZWZhdWx0OgogCQkJCUJVRygpOwogCQkJY2FzZSBDUFVDTE9DS19QUk9GOgotCQkJCWlmIChjcHV0aW1lX2VxKHAtPml0X3Byb2ZfZXhwaXJlcywKKwkJCQlpZiAoY3B1dGltZV9lcShwLT5jcHV0aW1lX2V4cGlyZXMucHJvZl9leHAsCiAJCQkJCSAgICAgICBjcHV0aW1lX3plcm8pIHx8Ci0JCQkJICAgIGNwdXRpbWVfZ3QocC0+aXRfcHJvZl9leHBpcmVzLAorCQkJCSAgICBjcHV0aW1lX2d0KHAtPmNwdXRpbWVfZXhwaXJlcy5wcm9mX2V4cCwKIAkJCQkJICAgICAgIG50LT5leHBpcmVzLmNwdSkpCi0JCQkJCXAtPml0X3Byb2ZfZXhwaXJlcyA9IG50LT5leHBpcmVzLmNwdTsKKwkJCQkJcC0+Y3B1dGltZV9leHBpcmVzLnByb2ZfZXhwID0KKwkJCQkJCW50LT5leHBpcmVzLmNwdTsKIAkJCQlicmVhazsKIAkJCWNhc2UgQ1BVQ0xPQ0tfVklSVDoKLQkJCQlpZiAoY3B1dGltZV9lcShwLT5pdF92aXJ0X2V4cGlyZXMsCisJCQkJaWYgKGNwdXRpbWVfZXEocC0+Y3B1dGltZV9leHBpcmVzLnZpcnRfZXhwLAogCQkJCQkgICAgICAgY3B1dGltZV96ZXJvKSB8fAotCQkJCSAgICBjcHV0aW1lX2d0KHAtPml0X3ZpcnRfZXhwaXJlcywKKwkJCQkgICAgY3B1dGltZV9ndChwLT5jcHV0aW1lX2V4cGlyZXMudmlydF9leHAsCiAJCQkJCSAgICAgICBudC0+ZXhwaXJlcy5jcHUpKQotCQkJCQlwLT5pdF92aXJ0X2V4cGlyZXMgPSBudC0+ZXhwaXJlcy5jcHU7CisJCQkJCXAtPmNwdXRpbWVfZXhwaXJlcy52aXJ0X2V4cCA9CisJCQkJCQludC0+ZXhwaXJlcy5jcHU7CiAJCQkJYnJlYWs7CiAJCQljYXNlIENQVUNMT0NLX1NDSEVEOgotCQkJCWlmIChwLT5pdF9zY2hlZF9leHBpcmVzID09IDAgfHwKLQkJCQkgICAgcC0+aXRfc2NoZWRfZXhwaXJlcyA+IG50LT5leHBpcmVzLnNjaGVkKQotCQkJCQlwLT5pdF9zY2hlZF9leHBpcmVzID0gbnQtPmV4cGlyZXMuc2NoZWQ7CisJCQkJaWYgKHAtPmNwdXRpbWVfZXhwaXJlcy5zY2hlZF9leHAgPT0gMCB8fAorCQkJCSAgICBwLT5jcHV0aW1lX2V4cGlyZXMuc2NoZWRfZXhwID4KKwkJCQkJCQludC0+ZXhwaXJlcy5zY2hlZCkKKwkJCQkJcC0+Y3B1dGltZV9leHBpcmVzLnNjaGVkX2V4cCA9CisJCQkJCQludC0+ZXhwaXJlcy5zY2hlZDsKIAkJCQlicmVhazsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCS8qCi0JCQkgKiBGb3IgYSBwcm9jZXNzIHRpbWVyLCB3ZSBtdXN0IGJhbGFuY2UKLQkJCSAqIGFsbCB0aGUgbGl2ZSB0aHJlYWRzJyBleHBpcmF0aW9ucy4KKwkJCSAqIEZvciBhIHByb2Nlc3MgdGltZXIsIHNldCB0aGUgY2FjaGVkIGV4cGlyYXRpb24gdGltZS4KIAkJCSAqLwogCQkJc3dpdGNoIChDUFVDTE9DS19XSElDSCh0aW1lci0+aXRfY2xvY2spKSB7CiAJCQlkZWZhdWx0OgpAQCAtNjQxLDcgKzYyOSw5IEBACiAJCQkJICAgIGNwdXRpbWVfbHQocC0+c2lnbmFsLT5pdF92aXJ0X2V4cGlyZXMsCiAJCQkJCSAgICAgICB0aW1lci0+aXQuY3B1LmV4cGlyZXMuY3B1KSkKIAkJCQkJYnJlYWs7Ci0JCQkJZ290byByZWJhbGFuY2U7CisJCQkJcC0+c2lnbmFsLT5jcHV0aW1lX2V4cGlyZXMudmlydF9leHAgPQorCQkJCQl0aW1lci0+aXQuY3B1LmV4cGlyZXMuY3B1OworCQkJCWJyZWFrOwogCQkJY2FzZSBDUFVDTE9DS19QUk9GOgogCQkJCWlmICghY3B1dGltZV9lcShwLT5zaWduYWwtPml0X3Byb2ZfZXhwaXJlcywKIAkJCQkJCWNwdXRpbWVfemVybykgJiYKQEAgLTY1MiwxMyArNjQyLDEyIEBACiAJCQkJaWYgKGkgIT0gUkxJTV9JTkZJTklUWSAmJgogCQkJCSAgICBpIDw9IGNwdXRpbWVfdG9fc2Vjcyh0aW1lci0+aXQuY3B1LmV4cGlyZXMuY3B1KSkKIAkJCQkJYnJlYWs7Ci0JCQkJZ290byByZWJhbGFuY2U7CisJCQkJcC0+c2lnbmFsLT5jcHV0aW1lX2V4cGlyZXMucHJvZl9leHAgPQorCQkJCQl0aW1lci0+aXQuY3B1LmV4cGlyZXMuY3B1OworCQkJCWJyZWFrOwogCQkJY2FzZSBDUFVDTE9DS19TQ0hFRDoKLQkJCXJlYmFsYW5jZToKLQkJCQlwcm9jZXNzX3RpbWVyX3JlYmFsYW5jZSgKLQkJCQkJdGltZXItPml0LmNwdS50YXNrLAotCQkJCQlDUFVDTE9DS19XSElDSCh0aW1lci0+aXRfY2xvY2spLAotCQkJCQl0aW1lci0+aXQuY3B1LmV4cGlyZXMsIG5vdyk7CisJCQkJcC0+c2lnbmFsLT5jcHV0aW1lX2V4cGlyZXMuc2NoZWRfZXhwID0KKwkJCQkJdGltZXItPml0LmNwdS5leHBpcmVzLnNjaGVkOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC05NjksMTMgKzk1OCwxMyBAQAogCXN0cnVjdCBzaWduYWxfc3RydWN0ICpjb25zdCBzaWcgPSB0c2stPnNpZ25hbDsKIAogCW1heGZpcmUgPSAyMDsKLQl0c2stPml0X3Byb2ZfZXhwaXJlcyA9IGNwdXRpbWVfemVybzsKKwl0c2stPmNwdXRpbWVfZXhwaXJlcy5wcm9mX2V4cCA9IGNwdXRpbWVfemVybzsKIAl3aGlsZSAoIWxpc3RfZW1wdHkodGltZXJzKSkgewogCQlzdHJ1Y3QgY3B1X3RpbWVyX2xpc3QgKnQgPSBsaXN0X2ZpcnN0X2VudHJ5KHRpbWVycywKIAkJCQkJCSAgICAgIHN0cnVjdCBjcHVfdGltZXJfbGlzdCwKIAkJCQkJCSAgICAgIGVudHJ5KTsKIAkJaWYgKCEtLW1heGZpcmUgfHwgY3B1dGltZV9sdChwcm9mX3RpY2tzKHRzayksIHQtPmV4cGlyZXMuY3B1KSkgewotCQkJdHNrLT5pdF9wcm9mX2V4cGlyZXMgPSB0LT5leHBpcmVzLmNwdTsKKwkJCXRzay0+Y3B1dGltZV9leHBpcmVzLnByb2ZfZXhwID0gdC0+ZXhwaXJlcy5jcHU7CiAJCQlicmVhazsKIAkJfQogCQl0LT5maXJpbmcgPSAxOwpAQCAtOTg0LDEzICs5NzMsMTMgQEAKIAogCSsrdGltZXJzOwogCW1heGZpcmUgPSAyMDsKLQl0c2stPml0X3ZpcnRfZXhwaXJlcyA9IGNwdXRpbWVfemVybzsKKwl0c2stPmNwdXRpbWVfZXhwaXJlcy52aXJ0X2V4cCA9IGNwdXRpbWVfemVybzsKIAl3aGlsZSAoIWxpc3RfZW1wdHkodGltZXJzKSkgewogCQlzdHJ1Y3QgY3B1X3RpbWVyX2xpc3QgKnQgPSBsaXN0X2ZpcnN0X2VudHJ5KHRpbWVycywKIAkJCQkJCSAgICAgIHN0cnVjdCBjcHVfdGltZXJfbGlzdCwKIAkJCQkJCSAgICAgIGVudHJ5KTsKIAkJaWYgKCEtLW1heGZpcmUgfHwgY3B1dGltZV9sdCh2aXJ0X3RpY2tzKHRzayksIHQtPmV4cGlyZXMuY3B1KSkgewotCQkJdHNrLT5pdF92aXJ0X2V4cGlyZXMgPSB0LT5leHBpcmVzLmNwdTsKKwkJCXRzay0+Y3B1dGltZV9leHBpcmVzLnZpcnRfZXhwID0gdC0+ZXhwaXJlcy5jcHU7CiAJCQlicmVhazsKIAkJfQogCQl0LT5maXJpbmcgPSAxOwpAQCAtOTk5LDEzICs5ODgsMTMgQEAKIAogCSsrdGltZXJzOwogCW1heGZpcmUgPSAyMDsKLQl0c2stPml0X3NjaGVkX2V4cGlyZXMgPSAwOworCXRzay0+Y3B1dGltZV9leHBpcmVzLnNjaGVkX2V4cCA9IDA7CiAJd2hpbGUgKCFsaXN0X2VtcHR5KHRpbWVycykpIHsKIAkJc3RydWN0IGNwdV90aW1lcl9saXN0ICp0ID0gbGlzdF9maXJzdF9lbnRyeSh0aW1lcnMsCiAJCQkJCQkgICAgICBzdHJ1Y3QgY3B1X3RpbWVyX2xpc3QsCiAJCQkJCQkgICAgICBlbnRyeSk7CiAJCWlmICghLS1tYXhmaXJlIHx8IHRzay0+c2Uuc3VtX2V4ZWNfcnVudGltZSA8IHQtPmV4cGlyZXMuc2NoZWQpIHsKLQkJCXRzay0+aXRfc2NoZWRfZXhwaXJlcyA9IHQtPmV4cGlyZXMuc2NoZWQ7CisJCQl0c2stPmNwdXRpbWVfZXhwaXJlcy5zY2hlZF9leHAgPSB0LT5leHBpcmVzLnNjaGVkOwogCQkJYnJlYWs7CiAJCX0KIAkJdC0+ZmlyaW5nID0gMTsKQEAgLTEwNTUsMTAgKzEwNDQsMTAgQEAKIHsKIAlpbnQgbWF4ZmlyZTsKIAlzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqY29uc3Qgc2lnID0gdHNrLT5zaWduYWw7Ci0JY3B1dGltZV90IHV0aW1lLCBzdGltZSwgcHRpbWUsIHZpcnRfZXhwaXJlcywgcHJvZl9leHBpcmVzOworCWNwdXRpbWVfdCB1dGltZSwgcHRpbWUsIHZpcnRfZXhwaXJlcywgcHJvZl9leHBpcmVzOwogCXVuc2lnbmVkIGxvbmcgbG9uZyBzdW1fc2NoZWRfcnVudGltZSwgc2NoZWRfZXhwaXJlczsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQ7CiAJc3RydWN0IGxpc3RfaGVhZCAqdGltZXJzID0gc2lnLT5jcHVfdGltZXJzOworCXN0cnVjdCB0YXNrX2NwdXRpbWUgY3B1dGltZTsKIAogCS8qCiAJICogRG9uJ3Qgc2FtcGxlIHRoZSBjdXJyZW50IHByb2Nlc3MgQ1BVIGNsb2NrcyBpZiB0aGVyZSBhcmUgbm8gdGltZXJzLgpAQCAtMTA3NCwxOCArMTA2MywxMCBAQAogCS8qCiAJICogQ29sbGVjdCB0aGUgY3VycmVudCBwcm9jZXNzIHRvdGFscy4KIAkgKi8KLQl1dGltZSA9IHNpZy0+dXRpbWU7Ci0Jc3RpbWUgPSBzaWctPnN0aW1lOwotCXN1bV9zY2hlZF9ydW50aW1lID0gc2lnLT5zdW1fc2NoZWRfcnVudGltZTsKLQl0ID0gdHNrOwotCWRvIHsKLQkJdXRpbWUgPSBjcHV0aW1lX2FkZCh1dGltZSwgdC0+dXRpbWUpOwotCQlzdGltZSA9IGNwdXRpbWVfYWRkKHN0aW1lLCB0LT5zdGltZSk7Ci0JCXN1bV9zY2hlZF9ydW50aW1lICs9IHQtPnNlLnN1bV9leGVjX3J1bnRpbWU7Ci0JCXQgPSBuZXh0X3RocmVhZCh0KTsKLQl9IHdoaWxlICh0ICE9IHRzayk7Ci0JcHRpbWUgPSBjcHV0aW1lX2FkZCh1dGltZSwgc3RpbWUpOwotCisJdGhyZWFkX2dyb3VwX2NwdXRpbWUodHNrLCAmY3B1dGltZSk7CisJdXRpbWUgPSBjcHV0aW1lLnV0aW1lOworCXB0aW1lID0gY3B1dGltZV9hZGQodXRpbWUsIGNwdXRpbWUuc3RpbWUpOworCXN1bV9zY2hlZF9ydW50aW1lID0gY3B1dGltZS5zdW1fZXhlY19ydW50aW1lOwogCW1heGZpcmUgPSAyMDsKIAlwcm9mX2V4cGlyZXMgPSBjcHV0aW1lX3plcm87CiAJd2hpbGUgKCFsaXN0X2VtcHR5KHRpbWVycykpIHsKQEAgLTExOTMsNjAgKzExNzQsMTggQEAKIAkJfQogCX0KIAotCWlmICghY3B1dGltZV9lcShwcm9mX2V4cGlyZXMsIGNwdXRpbWVfemVybykgfHwKLQkgICAgIWNwdXRpbWVfZXEodmlydF9leHBpcmVzLCBjcHV0aW1lX3plcm8pIHx8Ci0JICAgIHNjaGVkX2V4cGlyZXMgIT0gMCkgewotCQkvKgotCQkgKiBSZWJhbGFuY2UgdGhlIHRocmVhZHMnIGV4cGlyeSB0aW1lcyBmb3IgdGhlIHJlbWFpbmluZwotCQkgKiBwcm9jZXNzIENQVSB0aW1lcnMuCi0JCSAqLwotCi0JCWNwdXRpbWVfdCBwcm9mX2xlZnQsIHZpcnRfbGVmdCwgdGlja3M7Ci0JCXVuc2lnbmVkIGxvbmcgbG9uZyBzY2hlZF9sZWZ0LCBzY2hlZDsKLQkJY29uc3QgdW5zaWduZWQgaW50IG50aHJlYWRzID0gYXRvbWljX3JlYWQoJnNpZy0+bGl2ZSk7Ci0KLQkJaWYgKCFudGhyZWFkcykKLQkJCXJldHVybjsKLQotCQlwcm9mX2xlZnQgPSBjcHV0aW1lX3N1Yihwcm9mX2V4cGlyZXMsIHV0aW1lKTsKLQkJcHJvZl9sZWZ0ID0gY3B1dGltZV9zdWIocHJvZl9sZWZ0LCBzdGltZSk7Ci0JCXByb2ZfbGVmdCA9IGNwdXRpbWVfZGl2X25vbl96ZXJvKHByb2ZfbGVmdCwgbnRocmVhZHMpOwotCQl2aXJ0X2xlZnQgPSBjcHV0aW1lX3N1Yih2aXJ0X2V4cGlyZXMsIHV0aW1lKTsKLQkJdmlydF9sZWZ0ID0gY3B1dGltZV9kaXZfbm9uX3plcm8odmlydF9sZWZ0LCBudGhyZWFkcyk7Ci0JCWlmIChzY2hlZF9leHBpcmVzKSB7Ci0JCQlzY2hlZF9sZWZ0ID0gc2NoZWRfZXhwaXJlcyAtIHN1bV9zY2hlZF9ydW50aW1lOwotCQkJZG9fZGl2KHNjaGVkX2xlZnQsIG50aHJlYWRzKTsKLQkJCXNjaGVkX2xlZnQgPSBtYXhfdCh1bnNpZ25lZCBsb25nIGxvbmcsIHNjaGVkX2xlZnQsIDEpOwotCQl9IGVsc2UgewotCQkJc2NoZWRfbGVmdCA9IDA7Ci0JCX0KLQkJdCA9IHRzazsKLQkJZG8gewotCQkJaWYgKHVubGlrZWx5KHQtPmZsYWdzICYgUEZfRVhJVElORykpCi0JCQkJY29udGludWU7Ci0KLQkJCXRpY2tzID0gY3B1dGltZV9hZGQoY3B1dGltZV9hZGQodC0+dXRpbWUsIHQtPnN0aW1lKSwKLQkJCQkJICAgIHByb2ZfbGVmdCk7Ci0JCQlpZiAoIWNwdXRpbWVfZXEocHJvZl9leHBpcmVzLCBjcHV0aW1lX3plcm8pICYmCi0JCQkgICAgKGNwdXRpbWVfZXEodC0+aXRfcHJvZl9leHBpcmVzLCBjcHV0aW1lX3plcm8pIHx8Ci0JCQkgICAgIGNwdXRpbWVfZ3QodC0+aXRfcHJvZl9leHBpcmVzLCB0aWNrcykpKSB7Ci0JCQkJdC0+aXRfcHJvZl9leHBpcmVzID0gdGlja3M7Ci0JCQl9Ci0KLQkJCXRpY2tzID0gY3B1dGltZV9hZGQodC0+dXRpbWUsIHZpcnRfbGVmdCk7Ci0JCQlpZiAoIWNwdXRpbWVfZXEodmlydF9leHBpcmVzLCBjcHV0aW1lX3plcm8pICYmCi0JCQkgICAgKGNwdXRpbWVfZXEodC0+aXRfdmlydF9leHBpcmVzLCBjcHV0aW1lX3plcm8pIHx8Ci0JCQkgICAgIGNwdXRpbWVfZ3QodC0+aXRfdmlydF9leHBpcmVzLCB0aWNrcykpKSB7Ci0JCQkJdC0+aXRfdmlydF9leHBpcmVzID0gdGlja3M7Ci0JCQl9Ci0KLQkJCXNjaGVkID0gdC0+c2Uuc3VtX2V4ZWNfcnVudGltZSArIHNjaGVkX2xlZnQ7Ci0JCQlpZiAoc2NoZWRfZXhwaXJlcyAmJiAodC0+aXRfc2NoZWRfZXhwaXJlcyA9PSAwIHx8Ci0JCQkJCSAgICAgIHQtPml0X3NjaGVkX2V4cGlyZXMgPiBzY2hlZCkpIHsKLQkJCQl0LT5pdF9zY2hlZF9leHBpcmVzID0gc2NoZWQ7Ci0JCQl9Ci0JCX0gd2hpbGUgKCh0ID0gbmV4dF90aHJlYWQodCkpICE9IHRzayk7Ci0JfQorCWlmICghY3B1dGltZV9lcShwcm9mX2V4cGlyZXMsIGNwdXRpbWVfemVybykgJiYKKwkgICAgKGNwdXRpbWVfZXEoc2lnLT5jcHV0aW1lX2V4cGlyZXMucHJvZl9leHAsIGNwdXRpbWVfemVybykgfHwKKwkgICAgIGNwdXRpbWVfZ3Qoc2lnLT5jcHV0aW1lX2V4cGlyZXMucHJvZl9leHAsIHByb2ZfZXhwaXJlcykpKQorCQlzaWctPmNwdXRpbWVfZXhwaXJlcy5wcm9mX2V4cCA9IHByb2ZfZXhwaXJlczsKKwlpZiAoIWNwdXRpbWVfZXEodmlydF9leHBpcmVzLCBjcHV0aW1lX3plcm8pICYmCisJICAgIChjcHV0aW1lX2VxKHNpZy0+Y3B1dGltZV9leHBpcmVzLnZpcnRfZXhwLCBjcHV0aW1lX3plcm8pIHx8CisJICAgICBjcHV0aW1lX2d0KHNpZy0+Y3B1dGltZV9leHBpcmVzLnZpcnRfZXhwLCB2aXJ0X2V4cGlyZXMpKSkKKwkJc2lnLT5jcHV0aW1lX2V4cGlyZXMudmlydF9leHAgPSB2aXJ0X2V4cGlyZXM7CisJaWYgKHNjaGVkX2V4cGlyZXMgIT0gMCAmJgorCSAgICAoc2lnLT5jcHV0aW1lX2V4cGlyZXMuc2NoZWRfZXhwID09IDAgfHwKKwkgICAgIHNpZy0+Y3B1dGltZV9leHBpcmVzLnNjaGVkX2V4cCA+IHNjaGVkX2V4cGlyZXMpKQorCQlzaWctPmNwdXRpbWVfZXhwaXJlcy5zY2hlZF9leHAgPSBzY2hlZF9leHBpcmVzOwogfQogCiAvKgpAQCAtMTMxNCw2ICsxMjUzLDg2IEBACiAJKyt0aW1lci0+aXRfcmVxdWV1ZV9wZW5kaW5nOwogfQogCisvKioKKyAqIHRhc2tfY3B1dGltZV96ZXJvIC0gQ2hlY2sgYSB0YXNrX2NwdXRpbWUgc3RydWN0IGZvciBhbGwgemVybyBmaWVsZHMuCisgKgorICogQGNwdXRpbWU6CVRoZSBzdHJ1Y3QgdG8gY29tcGFyZS4KKyAqCisgKiBDaGVja3MgQGNwdXRpbWUgdG8gc2VlIGlmIGFsbCBmaWVsZHMgYXJlIHplcm8uICBSZXR1cm5zIHRydWUgaWYgYWxsIGZpZWxkcworICogYXJlIHplcm8sIGZhbHNlIGlmIGFueSBmaWVsZCBpcyBub256ZXJvLgorICovCitzdGF0aWMgaW5saW5lIGludCB0YXNrX2NwdXRpbWVfemVybyhjb25zdCBzdHJ1Y3QgdGFza19jcHV0aW1lICpjcHV0aW1lKQoreworCWlmIChjcHV0aW1lX2VxKGNwdXRpbWUtPnV0aW1lLCBjcHV0aW1lX3plcm8pICYmCisJICAgIGNwdXRpbWVfZXEoY3B1dGltZS0+c3RpbWUsIGNwdXRpbWVfemVybykgJiYKKwkgICAgY3B1dGltZS0+c3VtX2V4ZWNfcnVudGltZSA9PSAwKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiB0YXNrX2NwdXRpbWVfZXhwaXJlZCAtIENvbXBhcmUgdHdvIHRhc2tfY3B1dGltZSBlbnRpdGllcy4KKyAqCisgKiBAc2FtcGxlOglUaGUgdGFza19jcHV0aW1lIHN0cnVjdHVyZSB0byBiZSBjaGVja2VkIGZvciBleHBpcmF0aW9uLgorICogQGV4cGlyZXM6CUV4cGlyYXRpb24gdGltZXMsIGFnYWluc3Qgd2hpY2ggQHNhbXBsZSB3aWxsIGJlIGNoZWNrZWQuCisgKgorICogQ2hlY2tzIEBzYW1wbGUgYWdhaW5zdCBAZXhwaXJlcyB0byBzZWUgaWYgYW55IGZpZWxkIG9mIEBzYW1wbGUgaGFzIGV4cGlyZWQuCisgKiBSZXR1cm5zIHRydWUgaWYgYW55IGZpZWxkIG9mIHRoZSBmb3JtZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5nCisgKiBmaWVsZCBvZiB0aGUgbGF0dGVyIGlmIHRoZSBsYXR0ZXIgZmllbGQgaXMgc2V0LiAgT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHRhc2tfY3B1dGltZV9leHBpcmVkKGNvbnN0IHN0cnVjdCB0YXNrX2NwdXRpbWUgKnNhbXBsZSwKKwkJCQkJY29uc3Qgc3RydWN0IHRhc2tfY3B1dGltZSAqZXhwaXJlcykKK3sKKwlpZiAoIWNwdXRpbWVfZXEoZXhwaXJlcy0+dXRpbWUsIGNwdXRpbWVfemVybykgJiYKKwkgICAgY3B1dGltZV9nZShzYW1wbGUtPnV0aW1lLCBleHBpcmVzLT51dGltZSkpCisJCXJldHVybiAxOworCWlmICghY3B1dGltZV9lcShleHBpcmVzLT5zdGltZSwgY3B1dGltZV96ZXJvKSAmJgorCSAgICBjcHV0aW1lX2dlKGNwdXRpbWVfYWRkKHNhbXBsZS0+dXRpbWUsIHNhbXBsZS0+c3RpbWUpLAorCQkgICAgICAgZXhwaXJlcy0+c3RpbWUpKQorCQlyZXR1cm4gMTsKKwlpZiAoZXhwaXJlcy0+c3VtX2V4ZWNfcnVudGltZSAhPSAwICYmCisJICAgIHNhbXBsZS0+c3VtX2V4ZWNfcnVudGltZSA+PSBleHBpcmVzLT5zdW1fZXhlY19ydW50aW1lKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBmYXN0cGF0aF90aW1lcl9jaGVjayAtIFBPU0lYIENQVSB0aW1lcnMgZmFzdCBwYXRoLgorICoKKyAqIEB0c2s6CVRoZSB0YXNrICh0aHJlYWQpIGJlaW5nIGNoZWNrZWQuCisgKgorICogQ2hlY2sgdGhlIHRhc2sgYW5kIHRocmVhZCBncm91cCB0aW1lcnMuICBJZiBib3RoIGFyZSB6ZXJvICh0aGVyZSBhcmUgbm8KKyAqIHRpbWVycyBzZXQpIHJldHVybiBmYWxzZS4gIE90aGVyd2lzZSBzbmFwc2hvdCB0aGUgdGFzayBhbmQgdGhyZWFkIGdyb3VwCisgKiB0aW1lcnMgYW5kIGNvbXBhcmUgdGhlbSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGV4cGlyYXRpb24gdGltZXMuICBSZXR1cm4KKyAqIHRydWUgaWYgYSB0aW1lciBoYXMgZXhwaXJlZCwgZWxzZSByZXR1cm4gZmFsc2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGZhc3RwYXRoX3RpbWVyX2NoZWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoreworCXN0cnVjdCBzaWduYWxfc3RydWN0ICpzaWcgPSB0c2stPnNpZ25hbDsKKworCWlmICh1bmxpa2VseSghc2lnKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIXRhc2tfY3B1dGltZV96ZXJvKCZ0c2stPmNwdXRpbWVfZXhwaXJlcykpIHsKKwkJc3RydWN0IHRhc2tfY3B1dGltZSB0YXNrX3NhbXBsZSA9IHsKKwkJCS51dGltZSA9IHRzay0+dXRpbWUsCisJCQkuc3RpbWUgPSB0c2stPnN0aW1lLAorCQkJLnN1bV9leGVjX3J1bnRpbWUgPSB0c2stPnNlLnN1bV9leGVjX3J1bnRpbWUKKwkJfTsKKworCQlpZiAodGFza19jcHV0aW1lX2V4cGlyZWQoJnRhc2tfc2FtcGxlLCAmdHNrLT5jcHV0aW1lX2V4cGlyZXMpKQorCQkJcmV0dXJuIDE7CisJfQorCWlmICghdGFza19jcHV0aW1lX3plcm8oJnNpZy0+Y3B1dGltZV9leHBpcmVzKSkgeworCQlzdHJ1Y3QgdGFza19jcHV0aW1lIGdyb3VwX3NhbXBsZTsKKworCQl0aHJlYWRfZ3JvdXBfY3B1dGltZSh0c2ssICZncm91cF9zYW1wbGUpOworCQlpZiAodGFza19jcHV0aW1lX2V4cGlyZWQoJmdyb3VwX3NhbXBsZSwgJnNpZy0+Y3B1dGltZV9leHBpcmVzKSkKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKwogLyoKICAqIFRoaXMgaXMgY2FsbGVkIGZyb20gdGhlIHRpbWVyIGludGVycnVwdCBoYW5kbGVyLiAgVGhlIGlycSBoYW5kbGVyIGhhcwogICogYWxyZWFkeSB1cGRhdGVkIG91ciBjb3VudHMuICBXZSBuZWVkIHRvIGNoZWNrIGlmIGFueSB0aW1lcnMgZmlyZSBub3cuCkBAIC0xMzI2LDQyICsxMzQ1LDMxIEBACiAKIAlCVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7CiAKLSNkZWZpbmUgVU5FWFBJUkVEKGNsb2NrKSBcCi0JCShjcHV0aW1lX2VxKHRzay0+aXRfIyNjbG9jayMjX2V4cGlyZXMsIGNwdXRpbWVfemVybykgfHwgXAotCQkgY3B1dGltZV9sdChjbG9jayMjX3RpY2tzKHRzayksIHRzay0+aXRfIyNjbG9jayMjX2V4cGlyZXMpKQotCi0JaWYgKFVORVhQSVJFRChwcm9mKSAmJiBVTkVYUElSRUQodmlydCkgJiYKLQkgICAgKHRzay0+aXRfc2NoZWRfZXhwaXJlcyA9PSAwIHx8Ci0JICAgICB0c2stPnNlLnN1bV9leGVjX3J1bnRpbWUgPCB0c2stPml0X3NjaGVkX2V4cGlyZXMpKQorCS8qCisJICogVGhlIGZhc3QgcGF0aCBjaGVja3MgdGhhdCB0aGVyZSBhcmUgbm8gZXhwaXJlZCB0aHJlYWQgb3IgdGhyZWFkCisJICogZ3JvdXAgdGltZXJzLiAgSWYgdGhhdCdzIHNvLCBqdXN0IHJldHVybi4KKwkgKi8KKwlpZiAoIWZhc3RwYXRoX3RpbWVyX2NoZWNrKHRzaykpCiAJCXJldHVybjsKIAotI3VuZGVmCVVORVhQSVJFRAorCXNwaW5fbG9jaygmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKKwkvKgorCSAqIEhlcmUgd2UgdGFrZSBvZmYgdHNrLT5zaWduYWwtPmNwdV90aW1lcnNbTl0gYW5kCisJICogdHNrLT5jcHVfdGltZXJzW05dIGFsbCB0aGUgdGltZXJzIHRoYXQgYXJlIGZpcmluZywgYW5kCisJICogcHV0IHRoZW0gb24gdGhlIGZpcmluZyBsaXN0LgorCSAqLworCWNoZWNrX3RocmVhZF90aW1lcnModHNrLCAmZmlyaW5nKTsKKwljaGVja19wcm9jZXNzX3RpbWVycyh0c2ssICZmaXJpbmcpOwogCiAJLyoKLQkgKiBEb3VibGUtY2hlY2sgd2l0aCBsb2NrcyBoZWxkLgorCSAqIFdlIG11c3QgcmVsZWFzZSB0aGVzZSBsb2NrcyBiZWZvcmUgdGFraW5nIGFueSB0aW1lcidzIGxvY2suCisJICogVGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIHRpbWVyIGRlbGV0aW9uIGhlcmUsIGFzIHRoZQorCSAqIHNpZ2xvY2sgbm93IHByb3RlY3RzIG91ciBwcml2YXRlIGZpcmluZyBsaXN0LiAgV2UgaGF2ZSBzZXQKKwkgKiB0aGUgZmlyaW5nIGZsYWcgaW4gZWFjaCB0aW1lciwgc28gdGhhdCBhIGRlbGV0aW9uIGF0dGVtcHQKKwkgKiB0aGF0IGdldHMgdGhlIHRpbWVyIGxvY2sgYmVmb3JlIHdlIGRvIHdpbGwgZ2l2ZSBpdCB1cCBhbmQKKwkgKiBzcGluIHVudGlsIHdlJ3ZlIHRha2VuIGNhcmUgb2YgdGhhdCB0aW1lciBiZWxvdy4KIAkgKi8KLQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwotCWlmIChsaWtlbHkodHNrLT5zaWduYWwgIT0gTlVMTCkpIHsKLQkJc3Bpbl9sb2NrKCZ0c2stPnNpZ2hhbmQtPnNpZ2xvY2spOwotCi0JCS8qCi0JCSAqIEhlcmUgd2UgdGFrZSBvZmYgdHNrLT5jcHVfdGltZXJzW05dIGFuZCB0c2stPnNpZ25hbC0+Y3B1X3RpbWVyc1tOXQotCQkgKiBhbGwgdGhlIHRpbWVycyB0aGF0IGFyZSBmaXJpbmcsIGFuZCBwdXQgdGhlbSBvbiB0aGUgZmlyaW5nIGxpc3QuCi0JCSAqLwotCQljaGVja190aHJlYWRfdGltZXJzKHRzaywgJmZpcmluZyk7Ci0JCWNoZWNrX3Byb2Nlc3NfdGltZXJzKHRzaywgJmZpcmluZyk7Ci0KLQkJLyoKLQkJICogV2UgbXVzdCByZWxlYXNlIHRoZXNlIGxvY2tzIGJlZm9yZSB0YWtpbmcgYW55IHRpbWVyJ3MgbG9jay4KLQkJICogVGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIHRpbWVyIGRlbGV0aW9uIGhlcmUsIGFzIHRoZQotCQkgKiBzaWdsb2NrIG5vdyBwcm90ZWN0cyBvdXIgcHJpdmF0ZSBmaXJpbmcgbGlzdC4gIFdlIGhhdmUgc2V0Ci0JCSAqIHRoZSBmaXJpbmcgZmxhZyBpbiBlYWNoIHRpbWVyLCBzbyB0aGF0IGEgZGVsZXRpb24gYXR0ZW1wdAotCQkgKiB0aGF0IGdldHMgdGhlIHRpbWVyIGxvY2sgYmVmb3JlIHdlIGRvIHdpbGwgZ2l2ZSBpdCB1cCBhbmQKLQkJICogc3BpbiB1bnRpbCB3ZSd2ZSB0YWtlbiBjYXJlIG9mIHRoYXQgdGltZXIgYmVsb3cuCi0JCSAqLwotCQlzcGluX3VubG9jaygmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQl9Ci0JcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOworCXNwaW5fdW5sb2NrKCZ0c2stPnNpZ2hhbmQtPnNpZ2xvY2spOwogCiAJLyoKIAkgKiBOb3cgdGhhdCBhbGwgdGhlIHRpbWVycyBvbiBvdXIgbGlzdCBoYXZlIHRoZSBmaXJpbmcgZmxhZywKQEAgLTEzODksMTAgKzEzOTcsOSBAQAogCiAvKgogICogU2V0IG9uZSBvZiB0aGUgcHJvY2Vzcy13aWRlIHNwZWNpYWwgY2FzZSBDUFUgdGltZXJzLgotICogVGhlIHRhc2tsaXN0X2xvY2sgYW5kIHRzay0+c2lnaGFuZC0+c2lnbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlci4KLSAqIFRoZSBvbGR2YWwgYXJndW1lbnQgaXMgbnVsbCBmb3IgdGhlIFJMSU1JVF9DUFUgdGltZXIsIHdoZXJlICpuZXd2YWwgaXMKLSAqIGFic29sdXRlOyBub24tbnVsbCBmb3IgSVRJTUVSXyosIHdoZXJlICpuZXd2YWwgaXMgcmVsYXRpdmUgYW5kIHdlIHVwZGF0ZQotICogaXQgdG8gYmUgYWJzb2x1dGUsICpvbGR2YWwgaXMgYWJzb2x1dGUgYW5kIHdlIHVwZGF0ZSBpdCB0byBiZSByZWxhdGl2ZS4KKyAqIFRoZSB0c2stPnNpZ2hhbmQtPnNpZ2xvY2sgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIuCisgKiBUaGUgKm5ld3ZhbCBhcmd1bWVudCBpcyByZWxhdGl2ZSBhbmQgd2UgdXBkYXRlIGl0IHRvIGJlIGFic29sdXRlLCAqb2xkdmFsCisgKiBpcyBhYnNvbHV0ZSBhbmQgd2UgdXBkYXRlIGl0IHRvIGJlIHJlbGF0aXZlLgogICovCiB2b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgaW50IGNsb2NrX2lkeCwKIAkJCSAgIGNwdXRpbWVfdCAqbmV3dmFsLCBjcHV0aW1lX3QgKm9sZHZhbCkKQEAgLTE0MDEsNyArMTQwOCw3IEBACiAJc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKIAogCUJVR19PTihjbG9ja19pZHggPT0gQ1BVQ0xPQ0tfU0NIRUQpOwotCWNwdV9jbG9ja19zYW1wbGVfZ3JvdXBfbG9ja2VkKGNsb2NrX2lkeCwgdHNrLCAmbm93KTsKKwljcHVfY2xvY2tfc2FtcGxlX2dyb3VwKGNsb2NrX2lkeCwgdHNrLCAmbm93KTsKIAogCWlmIChvbGR2YWwpIHsKIAkJaWYgKCFjcHV0aW1lX2VxKCpvbGR2YWwsIGNwdXRpbWVfemVybykpIHsKQEAgLTE0MzUsMTMgKzE0NDIsMTQgQEAKIAkgICAgY3B1dGltZV9nZShsaXN0X2ZpcnN0X2VudHJ5KGhlYWQsCiAJCQkJICBzdHJ1Y3QgY3B1X3RpbWVyX2xpc3QsIGVudHJ5KS0+ZXhwaXJlcy5jcHUsCiAJCSAgICAgICAqbmV3dmFsKSkgewotCQkvKgotCQkgKiBSZWppZ2dlciBlYWNoIHRocmVhZCdzIGV4cGlyeSB0aW1lIHNvIHRoYXQgb25lIHdpbGwKLQkJICogbm90aWNlIGJlZm9yZSB3ZSBoaXQgdGhlIHByb2Nlc3MtY3VtdWxhdGl2ZSBleHBpcnkgdGltZS4KLQkJICovCi0JCXVuaW9uIGNwdV90aW1lX2NvdW50IGV4cGlyZXMgPSB7IC5zY2hlZCA9IDAgfTsKLQkJZXhwaXJlcy5jcHUgPSAqbmV3dmFsOwotCQlwcm9jZXNzX3RpbWVyX3JlYmFsYW5jZSh0c2ssIGNsb2NrX2lkeCwgZXhwaXJlcywgbm93KTsKKwkJc3dpdGNoIChjbG9ja19pZHgpIHsKKwkJY2FzZSBDUFVDTE9DS19QUk9GOgorCQkJdHNrLT5zaWduYWwtPmNwdXRpbWVfZXhwaXJlcy5wcm9mX2V4cCA9ICpuZXd2YWw7CisJCQlicmVhazsKKwkJY2FzZSBDUFVDTE9DS19WSVJUOgorCQkJdHNrLT5zaWduYWwtPmNwdXRpbWVfZXhwaXJlcy52aXJ0X2V4cCA9ICpuZXd2YWw7CisJCQlicmVhazsKKwkJfQogCX0KIH0KIApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvc2l4LXRpbWVycy5jIGIva2VybmVsL3Bvc2l4LXRpbWVycy5jCmluZGV4IDUxMzFlNTQuLmI5MzFkN2MgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3NpeC10aW1lcnMuYworKysgYi9rZXJuZWwvcG9zaXgtdGltZXJzLmMKQEAgLTIyMyw2ICsyMjMsMTUgQEAKIH0KIAogLyoKKyAqIEdldCBtb25vdG9uaWMgdGltZSBmb3IgcG9zaXggdGltZXJzCisgKi8KK3N0YXRpYyBpbnQgcG9zaXhfZ2V0X21vbm90b25pY19yYXcoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCBzdHJ1Y3QgdGltZXNwZWMgKnRwKQoreworCWdldHJhd21vbm90b25pYyh0cCk7CisJcmV0dXJuIDA7Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIGV2ZXJ5dGhpbmcsIHdlbGwsIGp1c3QgZXZlcnl0aGluZyBpbiBQb3NpeCBjbG9ja3MvdGltZXJzIDspCiAgKi8KIHN0YXRpYyBfX2luaXQgaW50IGluaXRfcG9zaXhfdGltZXJzKHZvaWQpCkBAIC0yMzUsOSArMjQ0LDE1IEBACiAJCS5jbG9ja19nZXQgPSBwb3NpeF9rdGltZV9nZXRfdHMsCiAJCS5jbG9ja19zZXQgPSBkb19wb3NpeF9jbG9ja19ub3NldHRpbWUsCiAJfTsKKwlzdHJ1Y3Qga19jbG9jayBjbG9ja19tb25vdG9uaWNfcmF3ID0geworCQkuY2xvY2tfZ2V0cmVzID0gaHJ0aW1lcl9nZXRfcmVzLAorCQkuY2xvY2tfZ2V0ID0gcG9zaXhfZ2V0X21vbm90b25pY19yYXcsCisJCS5jbG9ja19zZXQgPSBkb19wb3NpeF9jbG9ja19ub3NldHRpbWUsCisJfTsKIAogCXJlZ2lzdGVyX3Bvc2l4X2Nsb2NrKENMT0NLX1JFQUxUSU1FLCAmY2xvY2tfcmVhbHRpbWUpOwogCXJlZ2lzdGVyX3Bvc2l4X2Nsb2NrKENMT0NLX01PTk9UT05JQywgJmNsb2NrX21vbm90b25pYyk7CisJcmVnaXN0ZXJfcG9zaXhfY2xvY2soQ0xPQ0tfTU9OT1RPTklDX1JBVywgJmNsb2NrX21vbm90b25pY19yYXcpOwogCiAJcG9zaXhfdGltZXJzX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoInBvc2l4X3RpbWVyc19jYWNoZSIsCiAJCQkJCXNpemVvZiAoc3RydWN0IGtfaXRpbWVyKSwgMCwgU0xBQl9QQU5JQywKQEAgLTI5OCw2ICszMTMsNyBAQAogCiBpbnQgcG9zaXhfdGltZXJfZXZlbnQoc3RydWN0IGtfaXRpbWVyICp0aW1yLCBpbnQgc2lfcHJpdmF0ZSkKIHsKKwlpbnQgc2hhcmVkLCByZXQ7CiAJLyoKIAkgKiBGSVhNRTogaWYgLT5zaWdxIGlzIHF1ZXVlZCB3ZSBjYW4gcmFjZSB3aXRoCiAJICogZGVxdWV1ZV9zaWduYWwoKS0+ZG9fc2NoZWR1bGVfbmV4dF90aW1lcigpLgpAQCAtMzExLDI1ICszMjcsMTAgQEAKIAkgKi8KIAl0aW1yLT5zaWdxLT5pbmZvLnNpX3N5c19wcml2YXRlID0gc2lfcHJpdmF0ZTsKIAotCXRpbXItPnNpZ3EtPmluZm8uc2lfc2lnbm8gPSB0aW1yLT5pdF9zaWdldl9zaWdubzsKLQl0aW1yLT5zaWdxLT5pbmZvLnNpX2NvZGUgPSBTSV9USU1FUjsKLQl0aW1yLT5zaWdxLT5pbmZvLnNpX3RpZCA9IHRpbXItPml0X2lkOwotCXRpbXItPnNpZ3EtPmluZm8uc2lfdmFsdWUgPSB0aW1yLT5pdF9zaWdldl92YWx1ZTsKLQotCWlmICh0aW1yLT5pdF9zaWdldl9ub3RpZnkgJiBTSUdFVl9USFJFQURfSUQpIHsKLQkJc3RydWN0IHRhc2tfc3RydWN0ICpsZWFkZXI7Ci0JCWludCByZXQgPSBzZW5kX3NpZ3F1ZXVlKHRpbXItPnNpZ3EsIHRpbXItPml0X3Byb2Nlc3MsIDApOwotCi0JCWlmIChsaWtlbHkocmV0ID49IDApKQotCQkJcmV0dXJuIHJldDsKLQotCQl0aW1yLT5pdF9zaWdldl9ub3RpZnkgPSBTSUdFVl9TSUdOQUw7Ci0JCWxlYWRlciA9IHRpbXItPml0X3Byb2Nlc3MtPmdyb3VwX2xlYWRlcjsKLQkJcHV0X3Rhc2tfc3RydWN0KHRpbXItPml0X3Byb2Nlc3MpOwotCQl0aW1yLT5pdF9wcm9jZXNzID0gbGVhZGVyOwotCX0KLQotCXJldHVybiBzZW5kX3NpZ3F1ZXVlKHRpbXItPnNpZ3EsIHRpbXItPml0X3Byb2Nlc3MsIDEpOworCXNoYXJlZCA9ICEodGltci0+aXRfc2lnZXZfbm90aWZ5ICYgU0lHRVZfVEhSRUFEX0lEKTsKKwlyZXQgPSBzZW5kX3NpZ3F1ZXVlKHRpbXItPnNpZ3EsIHRpbXItPml0X3Byb2Nlc3MsIHNoYXJlZCk7CisJLyogSWYgd2UgZmFpbGVkIHRvIHNlbmQgdGhlIHNpZ25hbCB0aGUgdGltZXIgc3RvcHMuICovCisJcmV0dXJuIHJldCA+IDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwb3NpeF90aW1lcl9ldmVudCk7CiAKQEAgLTQ2OCwxMSArNDY5LDkgQEAKIAkJIHN0cnVjdCBzaWdldmVudCBfX3VzZXIgKnRpbWVyX2V2ZW50X3NwZWMsCiAJCSB0aW1lcl90IF9fdXNlciAqIGNyZWF0ZWRfdGltZXJfaWQpCiB7Ci0JaW50IGVycm9yID0gMDsKLQlzdHJ1Y3Qga19pdGltZXIgKm5ld190aW1lciA9IE5VTEw7Ci0JaW50IG5ld190aW1lcl9pZDsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByb2Nlc3MgPSBOVUxMOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGtfaXRpbWVyICpuZXdfdGltZXI7CisJaW50IGVycm9yLCBuZXdfdGltZXJfaWQ7CisJc3RydWN0IHRhc2tfc3RydWN0ICpwcm9jZXNzOwogCXNpZ2V2ZW50X3QgZXZlbnQ7CiAJaW50IGl0X2lkX3NldCA9IElUX0lEX05PVF9TRVQ7CiAKQEAgLTQ5MCwxMiArNDg5LDExIEBACiAJCWdvdG8gb3V0OwogCX0KIAlzcGluX2xvY2tfaXJxKCZpZHJfbG9jayk7Ci0JZXJyb3IgPSBpZHJfZ2V0X25ldygmcG9zaXhfdGltZXJzX2lkLCAodm9pZCAqKSBuZXdfdGltZXIsCi0JCQkgICAgJm5ld190aW1lcl9pZCk7CisJZXJyb3IgPSBpZHJfZ2V0X25ldygmcG9zaXhfdGltZXJzX2lkLCBuZXdfdGltZXIsICZuZXdfdGltZXJfaWQpOwogCXNwaW5fdW5sb2NrX2lycSgmaWRyX2xvY2spOwotCWlmIChlcnJvciA9PSAtRUFHQUlOKQotCQlnb3RvIHJldHJ5OwotCWVsc2UgaWYgKGVycm9yKSB7CisJaWYgKGVycm9yKSB7CisJCWlmIChlcnJvciA9PSAtRUFHQUlOKQorCQkJZ290byByZXRyeTsKIAkJLyoKIAkJICogV2VpcmQgbG9va2luZywgYnV0IHdlIHJldHVybiBFQUdBSU4gaWYgdGhlIElEUiBpcwogCQkgKiBmdWxsIChwcm9wZXIgUE9TSVggcmV0dXJuIHZhbHVlIGZvciB0aGlzKQpAQCAtNTI2LDY3ICs1MjQsNDMgQEAKIAkJCWVycm9yID0gLUVGQVVMVDsKIAkJCWdvdG8gb3V0OwogCQl9Ci0JCW5ld190aW1lci0+aXRfc2lnZXZfbm90aWZ5ID0gZXZlbnQuc2lnZXZfbm90aWZ5OwotCQluZXdfdGltZXItPml0X3NpZ2V2X3NpZ25vID0gZXZlbnQuc2lnZXZfc2lnbm87Ci0JCW5ld190aW1lci0+aXRfc2lnZXZfdmFsdWUgPSBldmVudC5zaWdldl92YWx1ZTsKLQotCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwotCQlpZiAoKHByb2Nlc3MgPSBnb29kX3NpZ2V2ZW50KCZldmVudCkpKSB7Ci0JCQkvKgotCQkJICogV2UgbWF5IGJlIHNldHRpbmcgdXAgdGhpcyBwcm9jZXNzIGZvciBhbm90aGVyCi0JCQkgKiB0aHJlYWQuICBJdCBtYXkgYmUgZXhpdGluZy4gIFRvIGNhdGNoIHRoaXMKLQkJCSAqIGNhc2UgdGhlIHdlIGNoZWNrIHRoZSBQRl9FWElUSU5HIGZsYWcuICBJZgotCQkJICogdGhlIGZsYWcgaXMgbm90IHNldCwgdGhlIHNpZ2xvY2sgd2lsbCBjYXRjaAotCQkJICogaGltIGJlZm9yZSBpdCBpcyB0b28gbGF0ZSAoaW4gZXhpdF9pdGltZXJzKS4KLQkJCSAqCi0JCQkgKiBUaGUgZXhlYyBjYXNlIGlzIGEgYml0IG1vcmUgaW52bG92ZWQgYnV0IGVhc3kKLQkJCSAqIHRvIGNvZGUuICBJZiB0aGUgcHJvY2VzcyBpcyBpbiBvdXIgdGhyZWFkCi0JCQkgKiBncm91cCAoYW5kIGl0IG11c3QgYmUgb3Igd2Ugd291bGQgbm90IGFsbG93Ci0JCQkgKiBpdCBoZXJlKSBhbmQgaXMgZG9pbmcgYW4gZXhlYywgaXQgd2lsbCBjYXVzZQotCQkJICogdXMgdG8gYmUga2lsbGVkLiAgSW4gdGhpcyBjYXNlIGl0IHdpbGwgd2FpdAotCQkJICogZm9yIHVzIHRvIGRpZSB3aGljaCBtZWFucyB3ZSBjYW4gZmluaXNoIHRoaXMKLQkJCSAqIGxpbmthZ2Ugd2l0aCBvdXIgbGFzdCBnYXNwLiBJLmUuIG5vIGNvZGUgOikKLQkJCSAqLwotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnByb2Nlc3MtPnNpZ2hhbmQtPnNpZ2xvY2ssIGZsYWdzKTsKLQkJCWlmICghKHByb2Nlc3MtPmZsYWdzICYgUEZfRVhJVElORykpIHsKLQkJCQluZXdfdGltZXItPml0X3Byb2Nlc3MgPSBwcm9jZXNzOwotCQkJCWxpc3RfYWRkKCZuZXdfdGltZXItPmxpc3QsCi0JCQkJCSAmcHJvY2Vzcy0+c2lnbmFsLT5wb3NpeF90aW1lcnMpOwotCQkJCWlmIChuZXdfdGltZXItPml0X3NpZ2V2X25vdGlmeSA9PSAoU0lHRVZfU0lHTkFMfFNJR0VWX1RIUkVBRF9JRCkpCi0JCQkJCWdldF90YXNrX3N0cnVjdChwcm9jZXNzKTsKLQkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcm9jZXNzLT5zaWdoYW5kLT5zaWdsb2NrLCBmbGFncyk7Ci0JCQl9IGVsc2UgewotCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByb2Nlc3MtPnNpZ2hhbmQtPnNpZ2xvY2ssIGZsYWdzKTsKLQkJCQlwcm9jZXNzID0gTlVMTDsKLQkJCX0KLQkJfQotCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJCXJjdV9yZWFkX2xvY2soKTsKKwkJcHJvY2VzcyA9IGdvb2Rfc2lnZXZlbnQoJmV2ZW50KTsKKwkJaWYgKHByb2Nlc3MpCisJCQlnZXRfdGFza19zdHJ1Y3QocHJvY2Vzcyk7CisJCXJjdV9yZWFkX3VubG9jaygpOwogCQlpZiAoIXByb2Nlc3MpIHsKIAkJCWVycm9yID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9CiAJfSBlbHNlIHsKLQkJbmV3X3RpbWVyLT5pdF9zaWdldl9ub3RpZnkgPSBTSUdFVl9TSUdOQUw7Ci0JCW5ld190aW1lci0+aXRfc2lnZXZfc2lnbm8gPSBTSUdBTFJNOwotCQluZXdfdGltZXItPml0X3NpZ2V2X3ZhbHVlLnNpdmFsX2ludCA9IG5ld190aW1lci0+aXRfaWQ7CisJCWV2ZW50LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTDsKKwkJZXZlbnQuc2lnZXZfc2lnbm8gPSBTSUdBTFJNOworCQlldmVudC5zaWdldl92YWx1ZS5zaXZhbF9pbnQgPSBuZXdfdGltZXItPml0X2lkOwogCQlwcm9jZXNzID0gY3VycmVudC0+Z3JvdXBfbGVhZGVyOwotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJvY2Vzcy0+c2lnaGFuZC0+c2lnbG9jaywgZmxhZ3MpOwotCQluZXdfdGltZXItPml0X3Byb2Nlc3MgPSBwcm9jZXNzOwotCQlsaXN0X2FkZCgmbmV3X3RpbWVyLT5saXN0LCAmcHJvY2Vzcy0+c2lnbmFsLT5wb3NpeF90aW1lcnMpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcm9jZXNzLT5zaWdoYW5kLT5zaWdsb2NrLCBmbGFncyk7CisJCWdldF90YXNrX3N0cnVjdChwcm9jZXNzKTsKIAl9CiAKKwluZXdfdGltZXItPml0X3NpZ2V2X25vdGlmeSAgICAgPSBldmVudC5zaWdldl9ub3RpZnk7CisJbmV3X3RpbWVyLT5zaWdxLT5pbmZvLnNpX3NpZ25vID0gZXZlbnQuc2lnZXZfc2lnbm87CisJbmV3X3RpbWVyLT5zaWdxLT5pbmZvLnNpX3ZhbHVlID0gZXZlbnQuc2lnZXZfdmFsdWU7CisJbmV3X3RpbWVyLT5zaWdxLT5pbmZvLnNpX3RpZCAgID0gbmV3X3RpbWVyLT5pdF9pZDsKKwluZXdfdGltZXItPnNpZ3EtPmluZm8uc2lfY29kZSAgPSBTSV9USU1FUjsKKworCXNwaW5fbG9ja19pcnEoJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOworCW5ld190aW1lci0+aXRfcHJvY2VzcyA9IHByb2Nlc3M7CisJbGlzdF9hZGQoJm5ld190aW1lci0+bGlzdCwgJmN1cnJlbnQtPnNpZ25hbC0+cG9zaXhfdGltZXJzKTsKKwlzcGluX3VubG9ja19pcnEoJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOworCisJcmV0dXJuIDA7CiAgCS8qCiAJICogSW4gdGhlIGNhc2Ugb2YgdGhlIHRpbWVyIGJlbG9uZ2luZyB0byBhbm90aGVyIHRhc2ssIGFmdGVyCiAJICogdGhlIHRhc2sgaXMgdW5sb2NrZWQsIHRoZSB0aW1lciBpcyBvd25lZCBieSB0aGUgb3RoZXIgdGFzawogCSAqIGFuZCBtYXkgY2Vhc2UgdG8gZXhpc3QgYXQgYW55IHRpbWUuICBEb24ndCB1c2Ugb3IgbW9kaWZ5CiAJICogbmV3X3RpbWVyIGFmdGVyIHRoZSB1bmxvY2sgY2FsbC4KIAkgKi8KLQogb3V0OgotCWlmIChlcnJvcikKLQkJcmVsZWFzZV9wb3NpeF90aW1lcihuZXdfdGltZXIsIGl0X2lkX3NldCk7Ci0KKwlyZWxlYXNlX3Bvc2l4X3RpbWVyKG5ld190aW1lciwgaXRfaWRfc2V0KTsKIAlyZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTU5Nyw3ICs1NzEsNyBAQAogICogdGhlIGZpbmQgdG8gdGhlIHRpbWVyIGxvY2suICBUbyBhdm9pZCBhIGRlYWQgbG9jaywgdGhlIHRpbWVyIGlkIE1VU1QKICAqIGJlIHJlbGVhc2Ugd2l0aCBvdXQgaG9sZGluZyB0aGUgdGltZXIgbG9jay4KICAqLwotc3RhdGljIHN0cnVjdCBrX2l0aW1lciAqIGxvY2tfdGltZXIodGltZXJfdCB0aW1lcl9pZCwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpCitzdGF0aWMgc3RydWN0IGtfaXRpbWVyICpsb2NrX3RpbWVyKHRpbWVyX3QgdGltZXJfaWQsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKQogewogCXN0cnVjdCBrX2l0aW1lciAqdGltcjsKIAkvKgpAQCAtNjA1LDIzICs1NzksMjAgQEAKIAkgKiBmbGFncyBwYXJ0IG92ZXIgdG8gdGhlIHRpbWVyIGxvY2suICBNdXN0IG5vdCBsZXQgaW50ZXJydXB0cyBpbgogCSAqIHdoaWxlIHdlIGFyZSBtb3ZpbmcgdGhlIGxvY2suCiAJICovCi0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmaWRyX2xvY2ssICpmbGFncyk7Ci0JdGltciA9IChzdHJ1Y3Qga19pdGltZXIgKikgaWRyX2ZpbmQoJnBvc2l4X3RpbWVyc19pZCwgKGludCkgdGltZXJfaWQpOworCXRpbXIgPSBpZHJfZmluZCgmcG9zaXhfdGltZXJzX2lkLCAoaW50KXRpbWVyX2lkKTsKIAlpZiAodGltcikgewogCQlzcGluX2xvY2soJnRpbXItPml0X2xvY2spOwotCi0JCWlmICgodGltci0+aXRfaWQgIT0gdGltZXJfaWQpIHx8ICEodGltci0+aXRfcHJvY2VzcykgfHwKLQkJCQkhc2FtZV90aHJlYWRfZ3JvdXAodGltci0+aXRfcHJvY2VzcywgY3VycmVudCkpIHsKLQkJCXNwaW5fdW5sb2NrKCZ0aW1yLT5pdF9sb2NrKTsKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkcl9sb2NrLCAqZmxhZ3MpOwotCQkJdGltciA9IE5VTEw7Ci0JCX0gZWxzZQorCQlpZiAodGltci0+aXRfcHJvY2VzcyAmJgorCQkgICAgc2FtZV90aHJlYWRfZ3JvdXAodGltci0+aXRfcHJvY2VzcywgY3VycmVudCkpIHsKIAkJCXNwaW5fdW5sb2NrKCZpZHJfbG9jayk7Ci0JfSBlbHNlCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkcl9sb2NrLCAqZmxhZ3MpOworCQkJcmV0dXJuIHRpbXI7CisJCX0KKwkJc3Bpbl91bmxvY2soJnRpbXItPml0X2xvY2spOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpZHJfbG9jaywgKmZsYWdzKTsKIAotCXJldHVybiB0aW1yOworCXJldHVybiBOVUxMOwogfQogCiAvKgpAQCAtODYyLDggKzgzMyw3IEBACiAJICogVGhpcyBrZWVwcyBhbnkgdGFza3Mgd2FpdGluZyBvbiB0aGUgc3BpbiBsb2NrIGZyb20gdGhpbmtpbmcKIAkgKiB0aGV5IGdvdCBzb21ldGhpbmcgKHNlZSB0aGUgbG9jayBjb2RlIGFib3ZlKS4KIAkgKi8KLQlpZiAodGltZXItPml0X3NpZ2V2X25vdGlmeSA9PSAoU0lHRVZfU0lHTkFMfFNJR0VWX1RIUkVBRF9JRCkpCi0JCXB1dF90YXNrX3N0cnVjdCh0aW1lci0+aXRfcHJvY2Vzcyk7CisJcHV0X3Rhc2tfc3RydWN0KHRpbWVyLT5pdF9wcm9jZXNzKTsKIAl0aW1lci0+aXRfcHJvY2VzcyA9IE5VTEw7CiAKIAl1bmxvY2tfdGltZXIodGltZXIsIGZsYWdzKTsKQEAgLTg5MCw4ICs4NjAsNyBAQAogCSAqIFRoaXMga2VlcHMgYW55IHRhc2tzIHdhaXRpbmcgb24gdGhlIHNwaW4gbG9jayBmcm9tIHRoaW5raW5nCiAJICogdGhleSBnb3Qgc29tZXRoaW5nIChzZWUgdGhlIGxvY2sgY29kZSBhYm92ZSkuCiAJICovCi0JaWYgKHRpbWVyLT5pdF9zaWdldl9ub3RpZnkgPT0gKFNJR0VWX1NJR05BTHxTSUdFVl9USFJFQURfSUQpKQotCQlwdXRfdGFza19zdHJ1Y3QodGltZXItPml0X3Byb2Nlc3MpOworCXB1dF90YXNrX3N0cnVjdCh0aW1lci0+aXRfcHJvY2Vzcyk7CiAJdGltZXItPml0X3Byb2Nlc3MgPSBOVUxMOwogCiAJdW5sb2NrX3RpbWVyKHRpbWVyLCBmbGFncyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQuYyBiL2tlcm5lbC9zY2hlZC5jCmluZGV4IDZmMjMwNTkuLjA5YThjMTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC5jCisrKyBiL2tlcm5lbC9zY2hlZC5jCkBAIC00MDUyLDIzICs0MDUyLDI2IEBACiBFWFBPUlRfUEVSX0NQVV9TWU1CT0woa3N0YXQpOwogCiAvKgotICogUmV0dXJuIHAtPnN1bV9leGVjX3J1bnRpbWUgcGx1cyBhbnkgbW9yZSBucyBvbiB0aGUgc2NoZWRfY2xvY2sKLSAqIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gYmFua2VkIGluIGNhc2UgdGhlIHRhc2sgaXMgY3VycmVudGx5IHJ1bm5pbmcuCisgKiBSZXR1cm4gYW55IG5zIG9uIHRoZSBzY2hlZF9jbG9jayB0aGF0IGhhdmUgbm90IHlldCBiZWVuIGJhbmtlZCBpbgorICogQHAgaW4gY2FzZSB0aGF0IHRhc2sgaXMgY3VycmVudGx5IHJ1bm5pbmcuCiAgKi8KLXVuc2lnbmVkIGxvbmcgbG9uZyB0YXNrX3NjaGVkX3J1bnRpbWUoc3RydWN0IHRhc2tfc3RydWN0ICpwKQordW5zaWduZWQgbG9uZyBsb25nIHRhc2tfZGVsdGFfZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1NjQgbnMsIGRlbHRhX2V4ZWM7CiAJc3RydWN0IHJxICpycTsKKwl1NjQgbnMgPSAwOwogCiAJcnEgPSB0YXNrX3JxX2xvY2socCwgJmZsYWdzKTsKLQlucyA9IHAtPnNlLnN1bV9leGVjX3J1bnRpbWU7CisKIAlpZiAodGFza19jdXJyZW50KHJxLCBwKSkgeworCQl1NjQgZGVsdGFfZXhlYzsKKwogCQl1cGRhdGVfcnFfY2xvY2socnEpOwogCQlkZWx0YV9leGVjID0gcnEtPmNsb2NrIC0gcC0+c2UuZXhlY19zdGFydDsKIAkJaWYgKChzNjQpZGVsdGFfZXhlYyA+IDApCi0JCQlucyArPSBkZWx0YV9leGVjOworCQkJbnMgPSBkZWx0YV9leGVjOwogCX0KKwogCXRhc2tfcnFfdW5sb2NrKHJxLCAmZmxhZ3MpOwogCiAJcmV0dXJuIG5zOwpAQCAtNDA4NSw2ICs0MDg4LDcgQEAKIAljcHV0aW1lNjRfdCB0bXA7CiAKIAlwLT51dGltZSA9IGNwdXRpbWVfYWRkKHAtPnV0aW1lLCBjcHV0aW1lKTsKKwlhY2NvdW50X2dyb3VwX3VzZXJfdGltZShwLCBjcHV0aW1lKTsKIAogCS8qIEFkZCB1c2VyIHRpbWUgdG8gY3B1c3RhdC4gKi8KIAl0bXAgPSBjcHV0aW1lX3RvX2NwdXRpbWU2NChjcHV0aW1lKTsKQEAgLTQxMDksNiArNDExMyw3IEBACiAJdG1wID0gY3B1dGltZV90b19jcHV0aW1lNjQoY3B1dGltZSk7CiAKIAlwLT51dGltZSA9IGNwdXRpbWVfYWRkKHAtPnV0aW1lLCBjcHV0aW1lKTsKKwlhY2NvdW50X2dyb3VwX3VzZXJfdGltZShwLCBjcHV0aW1lKTsKIAlwLT5ndGltZSA9IGNwdXRpbWVfYWRkKHAtPmd0aW1lLCBjcHV0aW1lKTsKIAogCWNwdXN0YXQtPnVzZXIgPSBjcHV0aW1lNjRfYWRkKGNwdXN0YXQtPnVzZXIsIHRtcCk7CkBAIC00MTQ0LDYgKzQxNDksNyBAQAogCX0KIAogCXAtPnN0aW1lID0gY3B1dGltZV9hZGQocC0+c3RpbWUsIGNwdXRpbWUpOworCWFjY291bnRfZ3JvdXBfc3lzdGVtX3RpbWUocCwgY3B1dGltZSk7CiAKIAkvKiBBZGQgc3lzdGVtIHRpbWUgdG8gY3B1c3RhdC4gKi8KIAl0bXAgPSBjcHV0aW1lX3RvX2NwdXRpbWU2NChjcHV0aW1lKTsKQEAgLTQxODUsNiArNDE5MSw3IEBACiAKIAlpZiAocCA9PSBycS0+aWRsZSkgewogCQlwLT5zdGltZSA9IGNwdXRpbWVfYWRkKHAtPnN0aW1lLCBzdGVhbCk7CisJCWFjY291bnRfZ3JvdXBfc3lzdGVtX3RpbWUocCwgc3RlYWwpOwogCQlpZiAoYXRvbWljX3JlYWQoJnJxLT5ucl9pb3dhaXQpID4gMCkKIAkJCWNwdXN0YXQtPmlvd2FpdCA9IGNwdXRpbWU2NF9hZGQoY3B1c3RhdC0+aW93YWl0LCB0bXApOwogCQllbHNlCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfZmFpci5jIGIva2VybmVsL3NjaGVkX2ZhaXIuYwppbmRleCAxOGZkMTcxLi5mNjA0ZGFlIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWRfZmFpci5jCisrKyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMKQEAgLTQ0OSw2ICs0NDksNyBAQAogCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnRhc2sgPSB0YXNrX29mKGN1cnIpOwogCiAJCWNwdWFjY3RfY2hhcmdlKGN1cnRhc2ssIGRlbHRhX2V4ZWMpOworCQlhY2NvdW50X2dyb3VwX2V4ZWNfcnVudGltZShjdXJ0YXNrLCBkZWx0YV9leGVjKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZF9ydC5jIGIva2VybmVsL3NjaGVkX3J0LmMKaW5kZXggY2RmNTc0MC4uYjQ0NmRjOCAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkX3J0LmMKKysrIGIva2VybmVsL3NjaGVkX3J0LmMKQEAgLTUyNiw2ICs1MjYsOCBAQAogCXNjaGVkc3RhdF9zZXQoY3Vyci0+c2UuZXhlY19tYXgsIG1heChjdXJyLT5zZS5leGVjX21heCwgZGVsdGFfZXhlYykpOwogCiAJY3Vyci0+c2Uuc3VtX2V4ZWNfcnVudGltZSArPSBkZWx0YV9leGVjOworCWFjY291bnRfZ3JvdXBfZXhlY19ydW50aW1lKGN1cnIsIGRlbHRhX2V4ZWMpOworCiAJY3Vyci0+c2UuZXhlY19zdGFydCA9IHJxLT5jbG9jazsKIAljcHVhY2N0X2NoYXJnZShjdXJyLCBkZWx0YV9leGVjKTsKIApAQCAtMTQ1OCw3ICsxNDYwLDcgQEAKIAkJcC0+cnQudGltZW91dCsrOwogCQluZXh0ID0gRElWX1JPVU5EX1VQKG1pbihzb2Z0LCBoYXJkKSwgVVNFQ19QRVJfU0VDL0haKTsKIAkJaWYgKHAtPnJ0LnRpbWVvdXQgPiBuZXh0KQotCQkJcC0+aXRfc2NoZWRfZXhwaXJlcyA9IHAtPnNlLnN1bV9leGVjX3J1bnRpbWU7CisJCQlwLT5jcHV0aW1lX2V4cGlyZXMuc2NoZWRfZXhwID0gcC0+c2Uuc3VtX2V4ZWNfcnVudGltZTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZF9zdGF0cy5oIGIva2VybmVsL3NjaGVkX3N0YXRzLmgKaW5kZXggODM4NWQ0My4uYjhjMTU2OSAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkX3N0YXRzLmgKKysrIGIva2VybmVsL3NjaGVkX3N0YXRzLmgKQEAgLTI3MCwzICsyNzAsODkgQEAKICNkZWZpbmUgc2NoZWRfaW5mb19zd2l0Y2godCwgbmV4dCkJCWRvIHsgfSB3aGlsZSAoMCkKICNlbmRpZiAvKiBDT05GSUdfU0NIRURTVEFUUyB8fCBDT05GSUdfVEFTS19ERUxBWV9BQ0NUICovCiAKKy8qCisgKiBUaGUgZm9sbG93aW5nIGFyZSBmdW5jdGlvbnMgdGhhdCBzdXBwb3J0IHNjaGVkdWxlci1pbnRlcm5hbCB0aW1lIGFjY291bnRpbmcuCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGdlbmVyYWxseSBjYWxsZWQgYXQgdGhlIHRpbWVyIHRpY2suICBOb25lIG9mIHRoaXMgZGVwZW5kcworICogb24gQ09ORklHX1NDSEVEU1RBVFMuCisgKi8KKworLyoqCisgKiBhY2NvdW50X2dyb3VwX3VzZXJfdGltZSAtIE1haW50YWluIHV0aW1lIGZvciBhIHRocmVhZCBncm91cC4KKyAqCisgKiBAdHNrOglQb2ludGVyIHRvIHRhc2sgc3RydWN0dXJlLgorICogQGNwdXRpbWU6CVRpbWUgdmFsdWUgYnkgd2hpY2ggdG8gaW5jcmVtZW50IHRoZSB1dGltZSBmaWVsZCBvZiB0aGUKKyAqCQl0aHJlYWRfZ3JvdXBfY3B1dGltZSBzdHJ1Y3R1cmUuCisgKgorICogSWYgdGhyZWFkIGdyb3VwIHRpbWUgaXMgYmVpbmcgbWFpbnRhaW5lZCwgZ2V0IHRoZSBzdHJ1Y3R1cmUgZm9yIHRoZQorICogcnVubmluZyBDUFUgYW5kIHVwZGF0ZSB0aGUgdXRpbWUgZmllbGQgdGhlcmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBhY2NvdW50X2dyb3VwX3VzZXJfdGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKKwkJCQkJICAgY3B1dGltZV90IGNwdXRpbWUpCit7CisJc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKKworCXNpZyA9IHRzay0+c2lnbmFsOworCWlmICh1bmxpa2VseSghc2lnKSkKKwkJcmV0dXJuOworCWlmIChzaWctPmNwdXRpbWUudG90YWxzKSB7CisJCXN0cnVjdCB0YXNrX2NwdXRpbWUgKnRpbWVzOworCisJCXRpbWVzID0gcGVyX2NwdV9wdHIoc2lnLT5jcHV0aW1lLnRvdGFscywgZ2V0X2NwdSgpKTsKKwkJdGltZXMtPnV0aW1lID0gY3B1dGltZV9hZGQodGltZXMtPnV0aW1lLCBjcHV0aW1lKTsKKwkJcHV0X2NwdV9ub19yZXNjaGVkKCk7CisJfQorfQorCisvKioKKyAqIGFjY291bnRfZ3JvdXBfc3lzdGVtX3RpbWUgLSBNYWludGFpbiBzdGltZSBmb3IgYSB0aHJlYWQgZ3JvdXAuCisgKgorICogQHRzazoJUG9pbnRlciB0byB0YXNrIHN0cnVjdHVyZS4KKyAqIEBjcHV0aW1lOglUaW1lIHZhbHVlIGJ5IHdoaWNoIHRvIGluY3JlbWVudCB0aGUgc3RpbWUgZmllbGQgb2YgdGhlCisgKgkJdGhyZWFkX2dyb3VwX2NwdXRpbWUgc3RydWN0dXJlLgorICoKKyAqIElmIHRocmVhZCBncm91cCB0aW1lIGlzIGJlaW5nIG1haW50YWluZWQsIGdldCB0aGUgc3RydWN0dXJlIGZvciB0aGUKKyAqIHJ1bm5pbmcgQ1BVIGFuZCB1cGRhdGUgdGhlIHN0aW1lIGZpZWxkIHRoZXJlLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgYWNjb3VudF9ncm91cF9zeXN0ZW1fdGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKKwkJCQkJICAgICBjcHV0aW1lX3QgY3B1dGltZSkKK3sKKwlzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOworCisJc2lnID0gdHNrLT5zaWduYWw7CisJaWYgKHVubGlrZWx5KCFzaWcpKQorCQlyZXR1cm47CisJaWYgKHNpZy0+Y3B1dGltZS50b3RhbHMpIHsKKwkJc3RydWN0IHRhc2tfY3B1dGltZSAqdGltZXM7CisKKwkJdGltZXMgPSBwZXJfY3B1X3B0cihzaWctPmNwdXRpbWUudG90YWxzLCBnZXRfY3B1KCkpOworCQl0aW1lcy0+c3RpbWUgPSBjcHV0aW1lX2FkZCh0aW1lcy0+c3RpbWUsIGNwdXRpbWUpOworCQlwdXRfY3B1X25vX3Jlc2NoZWQoKTsKKwl9Cit9CisKKy8qKgorICogYWNjb3VudF9ncm91cF9leGVjX3J1bnRpbWUgLSBNYWludGFpbiBleGVjIHJ1bnRpbWUgZm9yIGEgdGhyZWFkIGdyb3VwLgorICoKKyAqIEB0c2s6CVBvaW50ZXIgdG8gdGFzayBzdHJ1Y3R1cmUuCisgKiBAbnM6CQlUaW1lIHZhbHVlIGJ5IHdoaWNoIHRvIGluY3JlbWVudCB0aGUgc3VtX2V4ZWNfcnVudGltZSBmaWVsZAorICoJCW9mIHRoZSB0aHJlYWRfZ3JvdXBfY3B1dGltZSBzdHJ1Y3R1cmUuCisgKgorICogSWYgdGhyZWFkIGdyb3VwIHRpbWUgaXMgYmVpbmcgbWFpbnRhaW5lZCwgZ2V0IHRoZSBzdHJ1Y3R1cmUgZm9yIHRoZQorICogcnVubmluZyBDUFUgYW5kIHVwZGF0ZSB0aGUgc3VtX2V4ZWNfcnVudGltZSBmaWVsZCB0aGVyZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGFjY291bnRfZ3JvdXBfZXhlY19ydW50aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAorCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnMpCit7CisJc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKKworCXNpZyA9IHRzay0+c2lnbmFsOworCWlmICh1bmxpa2VseSghc2lnKSkKKwkJcmV0dXJuOworCWlmIChzaWctPmNwdXRpbWUudG90YWxzKSB7CisJCXN0cnVjdCB0YXNrX2NwdXRpbWUgKnRpbWVzOworCisJCXRpbWVzID0gcGVyX2NwdV9wdHIoc2lnLT5jcHV0aW1lLnRvdGFscywgZ2V0X2NwdSgpKTsKKwkJdGltZXMtPnN1bV9leGVjX3J1bnRpbWUgKz0gbnM7CisJCXB1dF9jcHVfbm9fcmVzY2hlZCgpOworCX0KK30KZGlmZiAtLWdpdCBhL2tlcm5lbC9zaWduYWwuYyBiL2tlcm5lbC9zaWduYWwuYwppbmRleCBlNjYxYjAxLi42ZWVhNTgyIDEwMDY0NAotLS0gYS9rZXJuZWwvc2lnbmFsLmMKKysrIGIva2VybmVsL3NpZ25hbC5jCkBAIC0xMzM4LDYgKzEzMzgsNyBAQAogCXN0cnVjdCBzaWdpbmZvIGluZm87CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QgKnBzaWc7CisJc3RydWN0IHRhc2tfY3B1dGltZSBjcHV0aW1lOwogCWludCByZXQgPSBzaWc7CiAKIAlCVUdfT04oc2lnID09IC0xKTsKQEAgLTEzNjgsMTAgKzEzNjksOSBAQAogCiAJaW5mby5zaV91aWQgPSB0c2stPnVpZDsKIAotCWluZm8uc2lfdXRpbWUgPSBjcHV0aW1lX3RvX2Nsb2NrX3QoY3B1dGltZV9hZGQodHNrLT51dGltZSwKLQkJCQkJCSAgICAgICB0c2stPnNpZ25hbC0+dXRpbWUpKTsKLQlpbmZvLnNpX3N0aW1lID0gY3B1dGltZV90b19jbG9ja190KGNwdXRpbWVfYWRkKHRzay0+c3RpbWUsCi0JCQkJCQkgICAgICAgdHNrLT5zaWduYWwtPnN0aW1lKSk7CisJdGhyZWFkX2dyb3VwX2NwdXRpbWUodHNrLCAmY3B1dGltZSk7CisJaW5mby5zaV91dGltZSA9IGNwdXRpbWVfdG9famlmZmllcyhjcHV0aW1lLnV0aW1lKTsKKwlpbmZvLnNpX3N0aW1lID0gY3B1dGltZV90b19qaWZmaWVzKGNwdXRpbWUuc3RpbWUpOwogCiAJaW5mby5zaV9zdGF0dXMgPSB0c2stPmV4aXRfY29kZSAmIDB4N2Y7CiAJaWYgKHRzay0+ZXhpdF9jb2RlICYgMHg4MCkKZGlmZiAtLWdpdCBhL2tlcm5lbC9zb2Z0aXJxLmMgYi9rZXJuZWwvc29mdGlycS5jCmluZGV4IGQ0MTAwMTQuLjcxMTBkYWUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zb2Z0aXJxLmMKKysrIGIva2VybmVsL3NvZnRpcnEuYwpAQCAtNiw2ICs2LDggQEAKICAqCURpc3RyaWJ1dGUgdW5kZXIgR1BMdjIuCiAgKgogICoJUmV3cml0dGVuLiBPbGQgb25lIHdhcyBnb29kIGluIDIuMiwgYnV0IGluIDIuMyBpdCB3YXMgaW1tb3JhbC4gLS1BTksgKDk5MDkwMykKKyAqCisgKglSZW1vdGUgc29mdGlycSBpbmZyYXN0cnVjdHVyZSBpcyBieSBKZW5zIEF4Ym9lLgogICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KQEAgLTQ3MCwxNyArNDcyLDE0NCBAQAogCiBFWFBPUlRfU1lNQk9MKHRhc2tsZXRfa2lsbCk7CiAKK0RFRklORV9QRVJfQ1BVKHN0cnVjdCBsaXN0X2hlYWQgW05SX1NPRlRJUlFTXSwgc29mdGlycV93b3JrX2xpc3QpOworRVhQT1JUX1BFUl9DUFVfU1lNQk9MKHNvZnRpcnFfd29ya19saXN0KTsKKworc3RhdGljIHZvaWQgX19sb2NhbF90cmlnZ2VyKHN0cnVjdCBjYWxsX3NpbmdsZV9kYXRhICpjcCwgaW50IHNvZnRpcnEpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCA9ICZfX2dldF9jcHVfdmFyKHNvZnRpcnFfd29ya19saXN0W3NvZnRpcnFdKTsKKworCWxpc3RfYWRkX3RhaWwoJmNwLT5saXN0LCBoZWFkKTsKKworCS8qIFRyaWdnZXIgdGhlIHNvZnRpcnEgb25seSBpZiB0aGUgbGlzdCB3YXMgcHJldmlvdXNseSBlbXB0eS4gICovCisJaWYgKGhlYWQtPm5leHQgPT0gJmNwLT5saXN0KQorCQlyYWlzZV9zb2Z0aXJxX2lycW9mZihzb2Z0aXJxKTsKK30KKworI2lmZGVmIENPTkZJR19VU0VfR0VORVJJQ19TTVBfSEVMUEVSUworc3RhdGljIHZvaWQgcmVtb3RlX3NvZnRpcnFfcmVjZWl2ZSh2b2lkICpkYXRhKQoreworCXN0cnVjdCBjYWxsX3NpbmdsZV9kYXRhICpjcCA9IGRhdGE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgc29mdGlycTsKKworCXNvZnRpcnEgPSBjcC0+cHJpdjsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwlfX2xvY2FsX3RyaWdnZXIoY3AsIHNvZnRpcnEpOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKworc3RhdGljIGludCBfX3RyeV9yZW1vdGVfc29mdGlycShzdHJ1Y3QgY2FsbF9zaW5nbGVfZGF0YSAqY3AsIGludCBjcHUsIGludCBzb2Z0aXJxKQoreworCWlmIChjcHVfb25saW5lKGNwdSkpIHsKKwkJY3AtPmZ1bmMgPSByZW1vdGVfc29mdGlycV9yZWNlaXZlOworCQljcC0+aW5mbyA9IGNwOworCQljcC0+ZmxhZ3MgPSAwOworCQljcC0+cHJpdiA9IHNvZnRpcnE7CisKKwkJX19zbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoY3B1LCBjcCk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKyNlbHNlIC8qIENPTkZJR19VU0VfR0VORVJJQ19TTVBfSEVMUEVSUyAqLworc3RhdGljIGludCBfX3RyeV9yZW1vdGVfc29mdGlycShzdHJ1Y3QgY2FsbF9zaW5nbGVfZGF0YSAqY3AsIGludCBjcHUsIGludCBzb2Z0aXJxKQoreworCXJldHVybiAxOworfQorI2VuZGlmCisKKy8qKgorICogX19zZW5kX3JlbW90ZV9zb2Z0aXJxIC0gdHJ5IHRvIHNjaGVkdWxlIHNvZnRpcnEgd29yayBvbiBhIHJlbW90ZSBjcHUKKyAqIEBjcDogcHJpdmF0ZSBTTVAgY2FsbCBmdW5jdGlvbiBkYXRhIGFyZWEKKyAqIEBjcHU6IHRoZSByZW1vdGUgY3B1CisgKiBAdGhpc19jcHU6IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNwdQorICogQHNvZnRpcnE6IHRoZSBzb2Z0aXJxIGZvciB0aGUgd29yaworICoKKyAqIEF0dGVtcHQgdG8gc2NoZWR1bGUgc29mdGlycSB3b3JrIG9uIGEgcmVtb3RlIGNwdS4gIElmIHRoaXMgY2Fubm90IGJlCisgKiBkb25lLCB0aGUgd29yayBpcyBpbnN0ZWFkIHF1ZXVlZCB1cCBvbiB0aGUgbG9jYWwgY3B1LgorICoKKyAqIEludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZC4KKyAqLwordm9pZCBfX3NlbmRfcmVtb3RlX3NvZnRpcnEoc3RydWN0IGNhbGxfc2luZ2xlX2RhdGEgKmNwLCBpbnQgY3B1LCBpbnQgdGhpc19jcHUsIGludCBzb2Z0aXJxKQoreworCWlmIChjcHUgPT0gdGhpc19jcHUgfHwgX190cnlfcmVtb3RlX3NvZnRpcnEoY3AsIGNwdSwgc29mdGlycSkpCisJCV9fbG9jYWxfdHJpZ2dlcihjcCwgc29mdGlycSk7Cit9CitFWFBPUlRfU1lNQk9MKF9fc2VuZF9yZW1vdGVfc29mdGlycSk7CisKKy8qKgorICogc2VuZF9yZW1vdGVfc29mdGlycSAtIHRyeSB0byBzY2hlZHVsZSBzb2Z0aXJxIHdvcmsgb24gYSByZW1vdGUgY3B1CisgKiBAY3A6IHByaXZhdGUgU01QIGNhbGwgZnVuY3Rpb24gZGF0YSBhcmVhCisgKiBAY3B1OiB0aGUgcmVtb3RlIGNwdQorICogQHNvZnRpcnE6IHRoZSBzb2Z0aXJxIGZvciB0aGUgd29yaworICoKKyAqIExpa2UgX19zZW5kX3JlbW90ZV9zb2Z0aXJxIGV4Y2VwdCB0aGF0IGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZAorICogY29tcHV0aW5nIHRoZSBjdXJyZW50IGNwdSBpcyBkb25lIGZvciB0aGUgY2FsbGVyLgorICovCit2b2lkIHNlbmRfcmVtb3RlX3NvZnRpcnEoc3RydWN0IGNhbGxfc2luZ2xlX2RhdGEgKmNwLCBpbnQgY3B1LCBpbnQgc29mdGlycSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCB0aGlzX2NwdTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwl0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwlfX3NlbmRfcmVtb3RlX3NvZnRpcnEoY3AsIGNwdSwgdGhpc19jcHUsIHNvZnRpcnEpOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KK0VYUE9SVF9TWU1CT0woc2VuZF9yZW1vdGVfc29mdGlycSk7CisKK3N0YXRpYyBpbnQgX19jcHVpbml0IHJlbW90ZV9zb2Z0aXJxX2NwdV9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLAorCQkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmhjcHUpCit7CisJLyoKKwkgKiBJZiBhIENQVSBnb2VzIGF3YXksIHNwbGljZSBpdHMgZW50cmllcyB0byB0aGUgY3VycmVudCBDUFUKKwkgKiBhbmQgdHJpZ2dlciBhIHJ1biBvZiB0aGUgc29mdGlycQorCSAqLworCWlmIChhY3Rpb24gPT0gQ1BVX0RFQUQgfHwgYWN0aW9uID09IENQVV9ERUFEX0ZST1pFTikgeworCQlpbnQgY3B1ID0gKHVuc2lnbmVkIGxvbmcpIGhjcHU7CisJCWludCBpOworCisJCWxvY2FsX2lycV9kaXNhYmxlKCk7CisJCWZvciAoaSA9IDA7IGkgPCBOUl9TT0ZUSVJRUzsgaSsrKSB7CisJCQlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJnBlcl9jcHUoc29mdGlycV93b3JrX2xpc3RbaV0sIGNwdSk7CisJCQlzdHJ1Y3QgbGlzdF9oZWFkICpsb2NhbF9oZWFkOworCisJCQlpZiAobGlzdF9lbXB0eShoZWFkKSkKKwkJCQljb250aW51ZTsKKworCQkJbG9jYWxfaGVhZCA9ICZfX2dldF9jcHVfdmFyKHNvZnRpcnFfd29ya19saXN0W2ldKTsKKwkJCWxpc3Rfc3BsaWNlX2luaXQoaGVhZCwgbG9jYWxfaGVhZCk7CisJCQlyYWlzZV9zb2Z0aXJxX2lycW9mZihpKTsKKwkJfQorCQlsb2NhbF9pcnFfZW5hYmxlKCk7CisJfQorCisJcmV0dXJuIE5PVElGWV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBfX2NwdWluaXRkYXRhIHJlbW90ZV9zb2Z0aXJxX2NwdV9ub3RpZmllciA9IHsKKwkubm90aWZpZXJfY2FsbAk9IHJlbW90ZV9zb2Z0aXJxX2NwdV9ub3RpZnksCit9OworCiB2b2lkIF9faW5pdCBzb2Z0aXJxX2luaXQodm9pZCkKIHsKIAlpbnQgY3B1OwogCiAJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgeworCQlpbnQgaTsKKwogCQlwZXJfY3B1KHRhc2tsZXRfdmVjLCBjcHUpLnRhaWwgPQogCQkJJnBlcl9jcHUodGFza2xldF92ZWMsIGNwdSkuaGVhZDsKIAkJcGVyX2NwdSh0YXNrbGV0X2hpX3ZlYywgY3B1KS50YWlsID0KIAkJCSZwZXJfY3B1KHRhc2tsZXRfaGlfdmVjLCBjcHUpLmhlYWQ7CisJCWZvciAoaSA9IDA7IGkgPCBOUl9TT0ZUSVJRUzsgaSsrKQorCQkJSU5JVF9MSVNUX0hFQUQoJnBlcl9jcHUoc29mdGlycV93b3JrX2xpc3RbaV0sIGNwdSkpOwogCX0KIAorCXJlZ2lzdGVyX2hvdGNwdV9ub3RpZmllcigmcmVtb3RlX3NvZnRpcnFfY3B1X25vdGlmaWVyKTsKKwogCW9wZW5fc29mdGlycShUQVNLTEVUX1NPRlRJUlEsIHRhc2tsZXRfYWN0aW9uKTsKIAlvcGVuX3NvZnRpcnEoSElfU09GVElSUSwgdGFza2xldF9oaV9hY3Rpb24pOwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL3N5cy5jIGIva2VybmVsL3N5cy5jCmluZGV4IDBiYzhmYTMuLjUzODc5Y2QgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zeXMuYworKysgYi9rZXJuZWwvc3lzLmMKQEAgLTg1MywzOCArODUzLDI4IEBACiAJcmV0dXJuIG9sZF9mc2dpZDsKIH0KIAordm9pZCBkb19zeXNfdGltZXMoc3RydWN0IHRtcyAqdG1zKQoreworCXN0cnVjdCB0YXNrX2NwdXRpbWUgY3B1dGltZTsKKwljcHV0aW1lX3QgY3V0aW1lLCBjc3RpbWU7CisKKwlzcGluX2xvY2tfaXJxKCZjdXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsKKwl0aHJlYWRfZ3JvdXBfY3B1dGltZShjdXJyZW50LCAmY3B1dGltZSk7CisJY3V0aW1lID0gY3VycmVudC0+c2lnbmFsLT5jdXRpbWU7CisJY3N0aW1lID0gY3VycmVudC0+c2lnbmFsLT5jc3RpbWU7CisJc3Bpbl91bmxvY2tfaXJxKCZjdXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsKKwl0bXMtPnRtc191dGltZSA9IGNwdXRpbWVfdG9fY2xvY2tfdChjcHV0aW1lLnV0aW1lKTsKKwl0bXMtPnRtc19zdGltZSA9IGNwdXRpbWVfdG9fY2xvY2tfdChjcHV0aW1lLnN0aW1lKTsKKwl0bXMtPnRtc19jdXRpbWUgPSBjcHV0aW1lX3RvX2Nsb2NrX3QoY3V0aW1lKTsKKwl0bXMtPnRtc19jc3RpbWUgPSBjcHV0aW1lX3RvX2Nsb2NrX3QoY3N0aW1lKTsKK30KKwogYXNtbGlua2FnZSBsb25nIHN5c190aW1lcyhzdHJ1Y3QgdG1zIF9fdXNlciAqIHRidWYpCiB7Ci0JLyoKLQkgKglJbiB0aGUgU01QIHdvcmxkIHdlIG1pZ2h0IGp1c3QgYmUgdW5sdWNreSBhbmQgaGF2ZSBvbmUgb2YKLQkgKgl0aGUgdGltZXMgaW5jcmVtZW50IGFzIHdlIHVzZSBpdC4gU2luY2UgdGhlIHZhbHVlIGlzIGFuCi0JICoJYXRvbWljYWxseSBzYWZlIHR5cGUgdGhpcyBpcyBqdXN0IGZpbmUuIENvbmNlcHR1YWxseSBpdHMKLQkgKglhcyBpZiB0aGUgc3lzY2FsbCB0b29rIGFuIGluc3RhbnQgbG9uZ2VyIHRvIG9jY3VyLgotCSAqLwogCWlmICh0YnVmKSB7CiAJCXN0cnVjdCB0bXMgdG1wOwotCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7Ci0JCXN0cnVjdCB0YXNrX3N0cnVjdCAqdDsKLQkJY3B1dGltZV90IHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWU7CiAKLQkJc3Bpbl9sb2NrX2lycSgmdHNrLT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJdXRpbWUgPSB0c2stPnNpZ25hbC0+dXRpbWU7Ci0JCXN0aW1lID0gdHNrLT5zaWduYWwtPnN0aW1lOwotCQl0ID0gdHNrOwotCQlkbyB7Ci0JCQl1dGltZSA9IGNwdXRpbWVfYWRkKHV0aW1lLCB0LT51dGltZSk7Ci0JCQlzdGltZSA9IGNwdXRpbWVfYWRkKHN0aW1lLCB0LT5zdGltZSk7Ci0JCQl0ID0gbmV4dF90aHJlYWQodCk7Ci0JCX0gd2hpbGUgKHQgIT0gdHNrKTsKLQotCQljdXRpbWUgPSB0c2stPnNpZ25hbC0+Y3V0aW1lOwotCQljc3RpbWUgPSB0c2stPnNpZ25hbC0+Y3N0aW1lOwotCQlzcGluX3VubG9ja19pcnEoJnRzay0+c2lnaGFuZC0+c2lnbG9jayk7Ci0KLQkJdG1wLnRtc191dGltZSA9IGNwdXRpbWVfdG9fY2xvY2tfdCh1dGltZSk7Ci0JCXRtcC50bXNfc3RpbWUgPSBjcHV0aW1lX3RvX2Nsb2NrX3Qoc3RpbWUpOwotCQl0bXAudG1zX2N1dGltZSA9IGNwdXRpbWVfdG9fY2xvY2tfdChjdXRpbWUpOwotCQl0bXAudG1zX2NzdGltZSA9IGNwdXRpbWVfdG9fY2xvY2tfdChjc3RpbWUpOworCQlkb19zeXNfdGltZXMoJnRtcCk7CiAJCWlmIChjb3B5X3RvX3VzZXIodGJ1ZiwgJnRtcCwgc2l6ZW9mKHN0cnVjdCB0bXMpKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCX0KQEAgLTE0NDksNyArMTQzOSw2IEBACiBhc21saW5rYWdlIGxvbmcgc3lzX3NldHJsaW1pdCh1bnNpZ25lZCBpbnQgcmVzb3VyY2UsIHN0cnVjdCBybGltaXQgX191c2VyICpybGltKQogewogCXN0cnVjdCBybGltaXQgbmV3X3JsaW0sICpvbGRfcmxpbTsKLQl1bnNpZ25lZCBsb25nIGl0X3Byb2Zfc2VjczsKIAlpbnQgcmV0dmFsOwogCiAJaWYgKHJlc291cmNlID49IFJMSU1fTkxJTUlUUykKQEAgLTE1MDMsMTggKzE0OTIsNyBAQAogCWlmIChuZXdfcmxpbS5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogCQlnb3RvIG91dDsKIAotCWl0X3Byb2Zfc2VjcyA9IGNwdXRpbWVfdG9fc2VjcyhjdXJyZW50LT5zaWduYWwtPml0X3Byb2ZfZXhwaXJlcyk7Ci0JaWYgKGl0X3Byb2Zfc2VjcyA9PSAwIHx8IG5ld19ybGltLnJsaW1fY3VyIDw9IGl0X3Byb2Zfc2VjcykgewotCQl1bnNpZ25lZCBsb25nIHJsaW1fY3VyID0gbmV3X3JsaW0ucmxpbV9jdXI7Ci0JCWNwdXRpbWVfdCBjcHV0aW1lOwotCi0JCWNwdXRpbWUgPSBzZWNzX3RvX2NwdXRpbWUocmxpbV9jdXIpOwotCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwotCQlzcGluX2xvY2tfaXJxKCZjdXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJc2V0X3Byb2Nlc3NfY3B1X3RpbWVyKGN1cnJlbnQsIENQVUNMT0NLX1BST0YsICZjcHV0aW1lLCBOVUxMKTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZjdXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsKLQkJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwotCX0KKwl1cGRhdGVfcmxpbWl0X2NwdShuZXdfcmxpbS5ybGltX2N1cik7CiBvdXQ6CiAJcmV0dXJuIDA7CiB9CkBAIC0xNTUyLDExICsxNTMwLDggQEAKICAqCiAgKi8KIAotc3RhdGljIHZvaWQgYWNjdW11bGF0ZV90aHJlYWRfcnVzYWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgc3RydWN0IHJ1c2FnZSAqciwKLQkJCQkgICAgIGNwdXRpbWVfdCAqdXRpbWVwLCBjcHV0aW1lX3QgKnN0aW1lcCkKK3N0YXRpYyB2b2lkIGFjY3VtdWxhdGVfdGhyZWFkX3J1c2FnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCBydXNhZ2UgKnIpCiB7Ci0JKnV0aW1lcCA9IGNwdXRpbWVfYWRkKCp1dGltZXAsIHQtPnV0aW1lKTsKLQkqc3RpbWVwID0gY3B1dGltZV9hZGQoKnN0aW1lcCwgdC0+c3RpbWUpOwogCXItPnJ1X252Y3N3ICs9IHQtPm52Y3N3OwogCXItPnJ1X25pdmNzdyArPSB0LT5uaXZjc3c7CiAJci0+cnVfbWluZmx0ICs9IHQtPm1pbl9mbHQ7CkBAIC0xNTcwLDEyICsxNTQ1LDEzIEBACiAJc3RydWN0IHRhc2tfc3RydWN0ICp0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJY3B1dGltZV90IHV0aW1lLCBzdGltZTsKKwlzdHJ1Y3QgdGFza19jcHV0aW1lIGNwdXRpbWU7CiAKIAltZW1zZXQoKGNoYXIgKikgciwgMCwgc2l6ZW9mICpyKTsKIAl1dGltZSA9IHN0aW1lID0gY3B1dGltZV96ZXJvOwogCiAJaWYgKHdobyA9PSBSVVNBR0VfVEhSRUFEKSB7Ci0JCWFjY3VtdWxhdGVfdGhyZWFkX3J1c2FnZShwLCByLCAmdXRpbWUsICZzdGltZSk7CisJCWFjY3VtdWxhdGVfdGhyZWFkX3J1c2FnZShwLCByKTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC0xNTk4LDggKzE1NzQsOSBAQAogCQkJCWJyZWFrOwogCiAJCWNhc2UgUlVTQUdFX1NFTEY6Ci0JCQl1dGltZSA9IGNwdXRpbWVfYWRkKHV0aW1lLCBwLT5zaWduYWwtPnV0aW1lKTsKLQkJCXN0aW1lID0gY3B1dGltZV9hZGQoc3RpbWUsIHAtPnNpZ25hbC0+c3RpbWUpOworCQkJdGhyZWFkX2dyb3VwX2NwdXRpbWUocCwgJmNwdXRpbWUpOworCQkJdXRpbWUgPSBjcHV0aW1lX2FkZCh1dGltZSwgY3B1dGltZS51dGltZSk7CisJCQlzdGltZSA9IGNwdXRpbWVfYWRkKHN0aW1lLCBjcHV0aW1lLnN0aW1lKTsKIAkJCXItPnJ1X252Y3N3ICs9IHAtPnNpZ25hbC0+bnZjc3c7CiAJCQlyLT5ydV9uaXZjc3cgKz0gcC0+c2lnbmFsLT5uaXZjc3c7CiAJCQlyLT5ydV9taW5mbHQgKz0gcC0+c2lnbmFsLT5taW5fZmx0OwpAQCAtMTYwOCw3ICsxNTg1LDcgQEAKIAkJCXItPnJ1X291YmxvY2sgKz0gcC0+c2lnbmFsLT5vdWJsb2NrOwogCQkJdCA9IHA7CiAJCQlkbyB7Ci0JCQkJYWNjdW11bGF0ZV90aHJlYWRfcnVzYWdlKHQsIHIsICZ1dGltZSwgJnN0aW1lKTsKKwkJCQlhY2N1bXVsYXRlX3RocmVhZF9ydXNhZ2UodCwgcik7CiAJCQkJdCA9IG5leHRfdGhyZWFkKHQpOwogCQkJfSB3aGlsZSAodCAhPSBwKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYyBiL2tlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMKaW5kZXggMDkzZDRhYy4uOWVkMmVlYyAxMDA2NDQKLS0tIGEva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYworKysgYi9rZXJuZWwvdGltZS9jbG9ja3NvdXJjZS5jCkBAIC0zMjUsNiArMzI1LDkgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCByZXQ7CiAKKwkvKiBzYXZlIG11bHRfb3JpZyBvbiByZWdpc3RyYXRpb24gKi8KKwljLT5tdWx0X29yaWcgPSBjLT5tdWx0OworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNsb2Nrc291cmNlX2xvY2ssIGZsYWdzKTsKIAlyZXQgPSBjbG9ja3NvdXJjZV9lbnF1ZXVlKGMpOwogCWlmICghcmV0KQpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvamlmZmllcy5jIGIva2VybmVsL3RpbWUvamlmZmllcy5jCmluZGV4IDRjMjU2ZmQuLjFjYTk5NTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL2ppZmZpZXMuYworKysgYi9rZXJuZWwvdGltZS9qaWZmaWVzLmMKQEAgLTYxLDYgKzYxLDcgQEAKIAkucmVhZAkJPSBqaWZmaWVzX3JlYWQsCiAJLm1hc2sJCT0gMHhmZmZmZmZmZiwgLyozMmJpdHMqLwogCS5tdWx0CQk9IE5TRUNfUEVSX0pJRkZZIDw8IEpJRkZJRVNfU0hJRlQsIC8qIGRldGFpbHMgYWJvdmUgKi8KKwkubXVsdF9vcmlnCT0gTlNFQ19QRVJfSklGRlkgPDwgSklGRklFU19TSElGVCwKIAkuc2hpZnQJCT0gSklGRklFU19TSElGVCwKIH07CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC90aW1lL250cC5jIGIva2VybmVsL3RpbWUvbnRwLmMKaW5kZXggMWFkNDZmMy4uMWEyMDcxNSAxMDA2NDQKLS0tIGEva2VybmVsL3RpbWUvbnRwLmMKKysrIGIva2VybmVsL3RpbWUvbnRwLmMKQEAgLTEwLDEzICsxMCwxMyBAQAogCiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KICNpbmNsdWRlIDxsaW51eC90aW1leC5oPgogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KICNpbmNsdWRlIDxsaW51eC9ocnRpbWVyLmg+CiAjaW5jbHVkZSA8bGludXgvY2FwYWJpbGl0eS5oPgogI2luY2x1ZGUgPGxpbnV4L21hdGg2NC5oPgogI2luY2x1ZGUgPGxpbnV4L2Nsb2Nrc291cmNlLmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAjaW5jbHVkZSA8YXNtL3RpbWV4Lmg+CiAKIC8qCkBAIC0yMTgsMTEgKzIxOCwxMSBAQAogLyogRGlzYWJsZSB0aGUgY21vcyB1cGRhdGUgLSB1c2VkIGJ5IHZpcnR1YWxpemF0aW9uIGFuZCBlbWJlZGRlZCAqLwogaW50IG5vX3N5bmNfY21vc19jbG9jayAgX19yZWFkX21vc3RseTsKIAotc3RhdGljIHZvaWQgc3luY19jbW9zX2Nsb2NrKHVuc2lnbmVkIGxvbmcgZHVtbXkpOworc3RhdGljIHZvaWQgc3luY19jbW9zX2Nsb2NrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKLXN0YXRpYyBERUZJTkVfVElNRVIoc3luY19jbW9zX3RpbWVyLCBzeW5jX2Ntb3NfY2xvY2ssIDAsIDApOworc3RhdGljIERFQ0xBUkVfREVMQVlFRF9XT1JLKHN5bmNfY21vc193b3JrLCBzeW5jX2Ntb3NfY2xvY2spOwogCi1zdGF0aWMgdm9pZCBzeW5jX2Ntb3NfY2xvY2sodW5zaWduZWQgbG9uZyBkdW1teSkKK3N0YXRpYyB2b2lkIHN5bmNfY21vc19jbG9jayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IHRpbWVzcGVjIG5vdywgbmV4dDsKIAlpbnQgZmFpbCA9IDE7CkBAIC0yNTgsMTMgKzI1OCwxMyBAQAogCQluZXh0LnR2X3NlYysrOwogCQluZXh0LnR2X25zZWMgLT0gTlNFQ19QRVJfU0VDOwogCX0KLQltb2RfdGltZXIoJnN5bmNfY21vc190aW1lciwgamlmZmllcyArIHRpbWVzcGVjX3RvX2ppZmZpZXMoJm5leHQpKTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnN5bmNfY21vc193b3JrLCB0aW1lc3BlY190b19qaWZmaWVzKCZuZXh0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vdGlmeV9jbW9zX3RpbWVyKHZvaWQpCiB7CiAJaWYgKCFub19zeW5jX2Ntb3NfY2xvY2spCi0JCW1vZF90aW1lcigmc3luY19jbW9zX3RpbWVyLCBqaWZmaWVzICsgMSk7CisJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmc3luY19jbW9zX3dvcmssIDApOwogfQogCiAjZWxzZQpAQCAtMjc3LDM4ICsyNzcsNTAgQEAKIGludCBkb19hZGp0aW1leChzdHJ1Y3QgdGltZXggKnR4YykKIHsKIAlzdHJ1Y3QgdGltZXNwZWMgdHM7Ci0JbG9uZyBzYXZlX2FkanVzdCwgc2VjOwogCWludCByZXN1bHQ7CiAKLQkvKiBJbiBvcmRlciB0byBtb2RpZnkgYW55dGhpbmcsIHlvdSBnb3R0YSBiZSBzdXBlci11c2VyISAqLwotCWlmICh0eGMtPm1vZGVzICYmICFjYXBhYmxlKENBUF9TWVNfVElNRSkpCi0JCXJldHVybiAtRVBFUk07Ci0KLQkvKiBOb3cgd2UgdmFsaWRhdGUgdGhlIGRhdGEgYmVmb3JlIGRpc2FibGluZyBpbnRlcnJ1cHRzICovCi0KLQlpZiAoKHR4Yy0+bW9kZXMgJiBBREpfT0ZGU0VUX1NJTkdMRVNIT1QpID09IEFESl9PRkZTRVRfU0lOR0xFU0hPVCkgeworCS8qIFZhbGlkYXRlIHRoZSBkYXRhIGJlZm9yZSBkaXNhYmxpbmcgaW50ZXJydXB0cyAqLworCWlmICh0eGMtPm1vZGVzICYgQURKX0FESlRJTUUpIHsKIAkJLyogc2luZ2xlc2hvdCBtdXN0IG5vdCBiZSB1c2VkIHdpdGggYW55IG90aGVyIG1vZGUgYml0cyAqLwotCQlpZiAodHhjLT5tb2RlcyAmIH5BREpfT0ZGU0VUX1NTX1JFQUQpCisJCWlmICghKHR4Yy0+bW9kZXMgJiBBREpfT0ZGU0VUX1NJTkdMRVNIT1QpKQogCQkJcmV0dXJuIC1FSU5WQUw7CisJCWlmICghKHR4Yy0+bW9kZXMgJiBBREpfT0ZGU0VUX1JFQURPTkxZKSAmJgorCQkgICAgIWNhcGFibGUoQ0FQX1NZU19USU1FKSkKKwkJCXJldHVybiAtRVBFUk07CisJfSBlbHNlIHsKKwkJLyogSW4gb3JkZXIgdG8gbW9kaWZ5IGFueXRoaW5nLCB5b3UgZ290dGEgYmUgc3VwZXItdXNlciEgKi8KKwkJIGlmICh0eGMtPm1vZGVzICYmICFjYXBhYmxlKENBUF9TWVNfVElNRSkpCisJCQlyZXR1cm4gLUVQRVJNOworCisJCS8qIGlmIHRoZSBxdWFydHogaXMgb2ZmIGJ5IG1vcmUgdGhhbiAxMCUgc29tZXRoaW5nIGlzIFZFUlkgd3JvbmchICovCisJCWlmICh0eGMtPm1vZGVzICYgQURKX1RJQ0sgJiYKKwkJICAgICh0eGMtPnRpY2sgPCAgOTAwMDAwL1VTRVJfSFogfHwKKwkJICAgICB0eGMtPnRpY2sgPiAxMTAwMDAwL1VTRVJfSFopKQorCQkJCXJldHVybiAtRUlOVkFMOworCisJCWlmICh0eGMtPm1vZGVzICYgQURKX1NUQVRVUyAmJiB0aW1lX3N0YXRlICE9IFRJTUVfT0spCisJCQlocnRpbWVyX2NhbmNlbCgmbGVhcF90aW1lcik7CiAJfQogCi0JLyogaWYgdGhlIHF1YXJ0eiBpcyBvZmYgYnkgbW9yZSB0aGFuIDEwJSBzb21ldGhpbmcgaXMgVkVSWSB3cm9uZyAhICovCi0JaWYgKHR4Yy0+bW9kZXMgJiBBREpfVElDSykKLQkJaWYgKHR4Yy0+dGljayA8ICA5MDAwMDAvVVNFUl9IWiB8fAotCQkgICAgdHhjLT50aWNrID4gMTEwMDAwMC9VU0VSX0haKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAodGltZV9zdGF0ZSAhPSBUSU1FX09LICYmIHR4Yy0+bW9kZXMgJiBBREpfU1RBVFVTKQotCQlocnRpbWVyX2NhbmNlbCgmbGVhcF90aW1lcik7CiAJZ2V0bnN0aW1lb2ZkYXkoJnRzKTsKIAogCXdyaXRlX3NlcWxvY2tfaXJxKCZ4dGltZV9sb2NrKTsKIAotCS8qIFNhdmUgZm9yIGxhdGVyIC0gc2VtYW50aWNzIG9mIGFkanRpbWUgaXMgdG8gcmV0dXJuIG9sZCB2YWx1ZSAqLwotCXNhdmVfYWRqdXN0ID0gdGltZV9hZGp1c3Q7Ci0KIAkvKiBJZiB0aGVyZSBhcmUgaW5wdXQgcGFyYW1ldGVycywgdGhlbiBwcm9jZXNzIHRoZW0gKi8KKwlpZiAodHhjLT5tb2RlcyAmIEFESl9BREpUSU1FKSB7CisJCWxvbmcgc2F2ZV9hZGp1c3QgPSB0aW1lX2FkanVzdDsKKworCQlpZiAoISh0eGMtPm1vZGVzICYgQURKX09GRlNFVF9SRUFET05MWSkpIHsKKwkJCS8qIGFkanRpbWUoKSBpcyBpbmRlcGVuZGVudCBmcm9tIG50cF9hZGp0aW1lKCkgKi8KKwkJCXRpbWVfYWRqdXN0ID0gdHhjLT5vZmZzZXQ7CisJCQludHBfdXBkYXRlX2ZyZXF1ZW5jeSgpOworCQl9CisJCXR4Yy0+b2Zmc2V0ID0gc2F2ZV9hZGp1c3Q7CisJCWdvdG8gYWRqX2RvbmU7CisJfQogCWlmICh0eGMtPm1vZGVzKSB7CisJCWxvbmcgc2VjOworCiAJCWlmICh0eGMtPm1vZGVzICYgQURKX1NUQVRVUykgewogCQkJaWYgKCh0aW1lX3N0YXR1cyAmIFNUQV9QTEwpICYmCiAJCQkgICAgISh0eGMtPnN0YXR1cyAmIFNUQV9QTEwpKSB7CkBAIC0zNzUsMTMgKzM4Nyw4IEBACiAJCWlmICh0eGMtPm1vZGVzICYgQURKX1RBSSAmJiB0eGMtPmNvbnN0YW50ID4gMCkKIAkJCXRpbWVfdGFpID0gdHhjLT5jb25zdGFudDsKIAotCQlpZiAodHhjLT5tb2RlcyAmIEFESl9PRkZTRVQpIHsKLQkJCWlmICh0eGMtPm1vZGVzID09IEFESl9PRkZTRVRfU0lOR0xFU0hPVCkKLQkJCQkvKiBhZGp0aW1lKCkgaXMgaW5kZXBlbmRlbnQgZnJvbSBudHBfYWRqdGltZSgpICovCi0JCQkJdGltZV9hZGp1c3QgPSB0eGMtPm9mZnNldDsKLQkJCWVsc2UKLQkJCQludHBfdXBkYXRlX29mZnNldCh0eGMtPm9mZnNldCk7Ci0JCX0KKwkJaWYgKHR4Yy0+bW9kZXMgJiBBREpfT0ZGU0VUKQorCQkJbnRwX3VwZGF0ZV9vZmZzZXQodHhjLT5vZmZzZXQpOwogCQlpZiAodHhjLT5tb2RlcyAmIEFESl9USUNLKQogCQkJdGlja191c2VjID0gdHhjLT50aWNrOwogCkBAIC0zODksMjIgKzM5NiwxOCBAQAogCQkJbnRwX3VwZGF0ZV9mcmVxdWVuY3koKTsKIAl9CiAKKwl0eGMtPm9mZnNldCA9IHNoaWZ0X3JpZ2h0KHRpbWVfb2Zmc2V0ICogTlRQX0lOVEVSVkFMX0ZSRVEsCisJCQkJICBOVFBfU0NBTEVfU0hJRlQpOworCWlmICghKHRpbWVfc3RhdHVzICYgU1RBX05BTk8pKQorCQl0eGMtPm9mZnNldCAvPSBOU0VDX1BFUl9VU0VDOworCithZGpfZG9uZToKIAlyZXN1bHQgPSB0aW1lX3N0YXRlOwkvKiBtb3N0bHkgYFRJTUVfT0snICovCiAJaWYgKHRpbWVfc3RhdHVzICYgKFNUQV9VTlNZTkN8U1RBX0NMT0NLRVJSKSkKIAkJcmVzdWx0ID0gVElNRV9FUlJPUjsKIAotCWlmICgodHhjLT5tb2RlcyA9PSBBREpfT0ZGU0VUX1NJTkdMRVNIT1QpIHx8Ci0JICAgICh0eGMtPm1vZGVzID09IEFESl9PRkZTRVRfU1NfUkVBRCkpCi0JCXR4Yy0+b2Zmc2V0ID0gc2F2ZV9hZGp1c3Q7Ci0JZWxzZSB7Ci0JCXR4Yy0+b2Zmc2V0ID0gc2hpZnRfcmlnaHQodGltZV9vZmZzZXQgKiBOVFBfSU5URVJWQUxfRlJFUSwKLQkJCQkJICBOVFBfU0NBTEVfU0hJRlQpOwotCQlpZiAoISh0aW1lX3N0YXR1cyAmIFNUQV9OQU5PKSkKLQkJCXR4Yy0+b2Zmc2V0IC89IE5TRUNfUEVSX1VTRUM7Ci0JfQotCXR4Yy0+ZnJlcQkgICA9IHNoaWZ0X3JpZ2h0KChzMzIpKHRpbWVfZnJlcSA+PiBQUE1fU0NBTEVfSU5WX1NISUZUKSAqCi0JCQkJCSAoczY0KVBQTV9TQ0FMRV9JTlYsCi0JCQkJCSBOVFBfU0NBTEVfU0hJRlQpOworCXR4Yy0+ZnJlcQkgICA9IHNoaWZ0X3JpZ2h0KCh0aW1lX2ZyZXEgPj4gUFBNX1NDQUxFX0lOVl9TSElGVCkgKgorCQkJCQkgKHM2NClQUE1fU0NBTEVfSU5WLCBOVFBfU0NBTEVfU0hJRlQpOwogCXR4Yy0+bWF4ZXJyb3IJICAgPSB0aW1lX21heGVycm9yOwogCXR4Yy0+ZXN0ZXJyb3IJICAgPSB0aW1lX2VzdGVycm9yOwogCXR4Yy0+c3RhdHVzCSAgID0gdGltZV9zdGF0dXM7CmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jIGIva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYwppbmRleCBlOTFjMjlmLi5lN2FjZmI0IDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jCisrKyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMKQEAgLTU4LDI3ICs1OCwyNiBAQAogCiAjaWZkZWYgQ09ORklHX0dFTkVSSUNfVElNRQogLyoqCi0gKiBfX2dldF9uc2VjX29mZnNldCAtIFJldHVybnMgbmFub3NlY29uZHMgc2luY2UgbGFzdCBjYWxsIHRvIHBlcmlvZGljX2hvb2sKKyAqIGNsb2Nrc291cmNlX2ZvcndhcmRfbm93IC0gdXBkYXRlIGNsb2NrIHRvIHRoZSBjdXJyZW50IHRpbWUKICAqCi0gKiBwcml2YXRlIGZ1bmN0aW9uLCBtdXN0IGhvbGQgeHRpbWVfbG9jayBsb2NrIHdoZW4gYmVpbmcKLSAqIGNhbGxlZC4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG5hbm9zZWNvbmRzIHNpbmNlIHRoZQotICogbGFzdCBjYWxsIHRvIHVwZGF0ZV93YWxsX3RpbWUoKSAoYWRqdXN0ZWQgYnkgTlRQIHNjYWxpbmcpCisgKiBGb3J3YXJkIHRoZSBjdXJyZW50IGNsb2NrIHRvIHVwZGF0ZSBpdHMgc3RhdGUgc2luY2UgdGhlIGxhc3QgY2FsbCB0bworICogdXBkYXRlX3dhbGxfdGltZSgpLiBUaGlzIGlzIHVzZWZ1bCBiZWZvcmUgc2lnbmlmaWNhbnQgY2xvY2sgY2hhbmdlcywKKyAqIGFzIGl0IGF2b2lkcyBoYXZpbmcgdG8gZGVhbCB3aXRoIHRoaXMgdGltZSBvZmZzZXQgZXhwbGljaXRseS4KICAqLwotc3RhdGljIGlubGluZSBzNjQgX19nZXRfbnNlY19vZmZzZXQodm9pZCkKK3N0YXRpYyB2b2lkIGNsb2Nrc291cmNlX2ZvcndhcmRfbm93KHZvaWQpCiB7CiAJY3ljbGVfdCBjeWNsZV9ub3csIGN5Y2xlX2RlbHRhOwotCXM2NCBuc19vZmZzZXQ7CisJczY0IG5zZWM7CiAKLQkvKiByZWFkIGNsb2Nrc291cmNlOiAqLwogCWN5Y2xlX25vdyA9IGNsb2Nrc291cmNlX3JlYWQoY2xvY2spOwotCi0JLyogY2FsY3VsYXRlIHRoZSBkZWx0YSBzaW5jZSB0aGUgbGFzdCB1cGRhdGVfd2FsbF90aW1lOiAqLwogCWN5Y2xlX2RlbHRhID0gKGN5Y2xlX25vdyAtIGNsb2NrLT5jeWNsZV9sYXN0KSAmIGNsb2NrLT5tYXNrOworCWNsb2NrLT5jeWNsZV9sYXN0ID0gY3ljbGVfbm93OwogCi0JLyogY29udmVydCB0byBuYW5vc2Vjb25kczogKi8KLQluc19vZmZzZXQgPSBjeWMybnMoY2xvY2ssIGN5Y2xlX2RlbHRhKTsKKwluc2VjID0gY3ljMm5zKGNsb2NrLCBjeWNsZV9kZWx0YSk7CisJdGltZXNwZWNfYWRkX25zKCZ4dGltZSwgbnNlYyk7CiAKLQlyZXR1cm4gbnNfb2Zmc2V0OworCW5zZWMgPSAoKHM2NCljeWNsZV9kZWx0YSAqIGNsb2NrLT5tdWx0X29yaWcpID4+IGNsb2NrLT5zaGlmdDsKKwljbG9jay0+cmF3X3RpbWUudHZfbnNlYyArPSBuc2VjOwogfQogCiAvKioKQEAgLTg5LDYgKzg4LDcgQEAKICAqLwogdm9pZCBnZXRuc3RpbWVvZmRheShzdHJ1Y3QgdGltZXNwZWMgKnRzKQogeworCWN5Y2xlX3QgY3ljbGVfbm93LCBjeWNsZV9kZWx0YTsKIAl1bnNpZ25lZCBsb25nIHNlcTsKIAlzNjQgbnNlY3M7CiAKQEAgLTk2LDcgKzk2LDE1IEBACiAJCXNlcSA9IHJlYWRfc2VxYmVnaW4oJnh0aW1lX2xvY2spOwogCiAJCSp0cyA9IHh0aW1lOwotCQluc2VjcyA9IF9fZ2V0X25zZWNfb2Zmc2V0KCk7CisKKwkJLyogcmVhZCBjbG9ja3NvdXJjZTogKi8KKwkJY3ljbGVfbm93ID0gY2xvY2tzb3VyY2VfcmVhZChjbG9jayk7CisKKwkJLyogY2FsY3VsYXRlIHRoZSBkZWx0YSBzaW5jZSB0aGUgbGFzdCB1cGRhdGVfd2FsbF90aW1lOiAqLworCQljeWNsZV9kZWx0YSA9IChjeWNsZV9ub3cgLSBjbG9jay0+Y3ljbGVfbGFzdCkgJiBjbG9jay0+bWFzazsKKworCQkvKiBjb252ZXJ0IHRvIG5hbm9zZWNvbmRzOiAqLworCQluc2VjcyA9IGN5YzJucyhjbG9jaywgY3ljbGVfZGVsdGEpOwogCiAJfSB3aGlsZSAocmVhZF9zZXFyZXRyeSgmeHRpbWVfbG9jaywgc2VxKSk7CiAKQEAgLTEyOSwyMiArMTM3LDIyIEBACiAgKi8KIGludCBkb19zZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWVzcGVjICp0dikKIHsKKwlzdHJ1Y3QgdGltZXNwZWMgdHNfZGVsdGE7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQl0aW1lX3Qgd3RtX3NlYywgc2VjID0gdHYtPnR2X3NlYzsKLQlsb25nIHd0bV9uc2VjLCBuc2VjID0gdHYtPnR2X25zZWM7CiAKIAlpZiAoKHVuc2lnbmVkIGxvbmcpdHYtPnR2X25zZWMgPj0gTlNFQ19QRVJfU0VDKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXdyaXRlX3NlcWxvY2tfaXJxc2F2ZSgmeHRpbWVfbG9jaywgZmxhZ3MpOwogCi0JbnNlYyAtPSBfX2dldF9uc2VjX29mZnNldCgpOworCWNsb2Nrc291cmNlX2ZvcndhcmRfbm93KCk7CiAKLQl3dG1fc2VjICA9IHdhbGxfdG9fbW9ub3RvbmljLnR2X3NlYyArICh4dGltZS50dl9zZWMgLSBzZWMpOwotCXd0bV9uc2VjID0gd2FsbF90b19tb25vdG9uaWMudHZfbnNlYyArICh4dGltZS50dl9uc2VjIC0gbnNlYyk7CisJdHNfZGVsdGEudHZfc2VjID0gdHYtPnR2X3NlYyAtIHh0aW1lLnR2X3NlYzsKKwl0c19kZWx0YS50dl9uc2VjID0gdHYtPnR2X25zZWMgLSB4dGltZS50dl9uc2VjOworCXdhbGxfdG9fbW9ub3RvbmljID0gdGltZXNwZWNfc3ViKHdhbGxfdG9fbW9ub3RvbmljLCB0c19kZWx0YSk7CiAKLQlzZXRfbm9ybWFsaXplZF90aW1lc3BlYygmeHRpbWUsIHNlYywgbnNlYyk7Ci0Jc2V0X25vcm1hbGl6ZWRfdGltZXNwZWMoJndhbGxfdG9fbW9ub3RvbmljLCB3dG1fc2VjLCB3dG1fbnNlYyk7CisJeHRpbWUgPSAqdHY7CisKIAl1cGRhdGVfeHRpbWVfY2FjaGUoMCk7CiAKIAljbG9jay0+ZXJyb3IgPSAwOwpAQCAtMTcwLDIyICsxNzgsMTkgQEAKIHN0YXRpYyB2b2lkIGNoYW5nZV9jbG9ja3NvdXJjZSh2b2lkKQogewogCXN0cnVjdCBjbG9ja3NvdXJjZSAqbmV3OwotCWN5Y2xlX3Qgbm93OwotCXU2NCBuc2VjOwogCiAJbmV3ID0gY2xvY2tzb3VyY2VfZ2V0X25leHQoKTsKIAogCWlmIChjbG9jayA9PSBuZXcpCiAJCXJldHVybjsKIAotCW5ldy0+Y3ljbGVfbGFzdCA9IDA7Ci0Jbm93ID0gY2xvY2tzb3VyY2VfcmVhZChuZXcpOwotCW5zZWMgPSAgX19nZXRfbnNlY19vZmZzZXQoKTsKLQl0aW1lc3BlY19hZGRfbnMoJnh0aW1lLCBuc2VjKTsKKwljbG9ja3NvdXJjZV9mb3J3YXJkX25vdygpOworCisJbmV3LT5yYXdfdGltZSA9IGNsb2NrLT5yYXdfdGltZTsKIAogCWNsb2NrID0gbmV3OwotCWNsb2NrLT5jeWNsZV9sYXN0ID0gbm93OwotCisJY2xvY2stPmN5Y2xlX2xhc3QgPSAwOworCWNsb2NrLT5jeWNsZV9sYXN0ID0gY2xvY2tzb3VyY2VfcmVhZChuZXcpOwogCWNsb2NrLT5lcnJvciA9IDA7CiAJY2xvY2stPnh0aW1lX25zZWMgPSAwOwogCWNsb2Nrc291cmNlX2NhbGN1bGF0ZV9pbnRlcnZhbChjbG9jaywgTlRQX0lOVEVSVkFMX0xFTkdUSCk7CkBAIC0yMDAsMTEgKzIwNSw0NCBAQAogCSAqLwogfQogI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbG9ja3NvdXJjZV9mb3J3YXJkX25vdyh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBjaGFuZ2VfY2xvY2tzb3VyY2Uodm9pZCkgeyB9Ci1zdGF0aWMgaW5saW5lIHM2NCBfX2dldF9uc2VjX29mZnNldCh2b2lkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogLyoqCisgKiBnZXRyYXdtb25vdG9uaWMgLSBSZXR1cm5zIHRoZSByYXcgbW9ub3RvbmljIHRpbWUgaW4gYSB0aW1lc3BlYworICogQHRzOgkJcG9pbnRlciB0byB0aGUgdGltZXNwZWMgdG8gYmUgc2V0CisgKgorICogUmV0dXJucyB0aGUgcmF3IG1vbm90b25pYyB0aW1lIChjb21wbGV0ZWx5IHVuLW1vZGlmaWVkIGJ5IG50cCkKKyAqLwordm9pZCBnZXRyYXdtb25vdG9uaWMoc3RydWN0IHRpbWVzcGVjICp0cykKK3sKKwl1bnNpZ25lZCBsb25nIHNlcTsKKwlzNjQgbnNlY3M7CisJY3ljbGVfdCBjeWNsZV9ub3csIGN5Y2xlX2RlbHRhOworCisJZG8geworCQlzZXEgPSByZWFkX3NlcWJlZ2luKCZ4dGltZV9sb2NrKTsKKworCQkvKiByZWFkIGNsb2Nrc291cmNlOiAqLworCQljeWNsZV9ub3cgPSBjbG9ja3NvdXJjZV9yZWFkKGNsb2NrKTsKKworCQkvKiBjYWxjdWxhdGUgdGhlIGRlbHRhIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZV93YWxsX3RpbWU6ICovCisJCWN5Y2xlX2RlbHRhID0gKGN5Y2xlX25vdyAtIGNsb2NrLT5jeWNsZV9sYXN0KSAmIGNsb2NrLT5tYXNrOworCisJCS8qIGNvbnZlcnQgdG8gbmFub3NlY29uZHM6ICovCisJCW5zZWNzID0gKChzNjQpY3ljbGVfZGVsdGEgKiBjbG9jay0+bXVsdF9vcmlnKSA+PiBjbG9jay0+c2hpZnQ7CisKKwkJKnRzID0gY2xvY2stPnJhd190aW1lOworCisJfSB3aGlsZSAocmVhZF9zZXFyZXRyeSgmeHRpbWVfbG9jaywgc2VxKSk7CisKKwl0aW1lc3BlY19hZGRfbnModHMsIG5zZWNzKTsKK30KK0VYUE9SVF9TWU1CT0woZ2V0cmF3bW9ub3RvbmljKTsKKworCisvKioKICAqIHRpbWVrZWVwaW5nX3ZhbGlkX2Zvcl9ocmVzIC0gQ2hlY2sgaWYgdGltZWtlZXBpbmcgaXMgc3VpdGFibGUgZm9yIGhyZXMKICAqLwogaW50IHRpbWVrZWVwaW5nX3ZhbGlkX2Zvcl9ocmVzKHZvaWQpCkBAIC0yNjUsOCArMzAzLDYgQEAKIHN0YXRpYyBpbnQgdGltZWtlZXBpbmdfc3VzcGVuZGVkOwogLyogdGltZSBpbiBzZWNvbmRzIHdoZW4gc3VzcGVuZCBiZWdhbiAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgdGltZWtlZXBpbmdfc3VzcGVuZF90aW1lOwotLyogeHRpbWUgb2Zmc2V0IHdoZW4gd2Ugd2VudCBpbnRvIHN1c3BlbmQgKi8KLXN0YXRpYyBzNjQgdGltZWtlZXBpbmdfc3VzcGVuZF9uc2VjczsKIAogLyoqCiAgKiB0aW1la2VlcGluZ19yZXN1bWUgLSBSZXN1bWVzIHRoZSBnZW5lcmljIHRpbWVrZWVwaW5nIHN1YnN5c3RlbS4KQEAgLTI5Miw4ICszMjgsNiBAQAogCQl3YWxsX3RvX21vbm90b25pYy50dl9zZWMgLT0gc2xlZXBfbGVuZ3RoOwogCQl0b3RhbF9zbGVlcF90aW1lICs9IHNsZWVwX2xlbmd0aDsKIAl9Ci0JLyogTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSB0aGUgY29ycmVjdCB4dGltZSByZWZlcmVuY2UgKi8KLQl0aW1lc3BlY19hZGRfbnMoJnh0aW1lLCB0aW1la2VlcGluZ19zdXNwZW5kX25zZWNzKTsKIAl1cGRhdGVfeHRpbWVfY2FjaGUoMCk7CiAJLyogcmUtYmFzZSB0aGUgbGFzdCBjeWNsZSB2YWx1ZSAqLwogCWNsb2NrLT5jeWNsZV9sYXN0ID0gMDsKQEAgLTMxOSw4ICszNTMsNyBAQAogCXRpbWVrZWVwaW5nX3N1c3BlbmRfdGltZSA9IHJlYWRfcGVyc2lzdGVudF9jbG9jaygpOwogCiAJd3JpdGVfc2VxbG9ja19pcnFzYXZlKCZ4dGltZV9sb2NrLCBmbGFncyk7Ci0JLyogR2V0IHRoZSBjdXJyZW50IHh0aW1lIG9mZnNldCAqLwotCXRpbWVrZWVwaW5nX3N1c3BlbmRfbnNlY3MgPSBfX2dldF9uc2VjX29mZnNldCgpOworCWNsb2Nrc291cmNlX2ZvcndhcmRfbm93KCk7CiAJdGltZWtlZXBpbmdfc3VzcGVuZGVkID0gMTsKIAl3cml0ZV9zZXF1bmxvY2tfaXJxcmVzdG9yZSgmeHRpbWVfbG9jaywgZmxhZ3MpOwogCkBAIC00NTQsMjMgKzQ4NywyOSBAQAogI2Vsc2UKIAlvZmZzZXQgPSBjbG9jay0+Y3ljbGVfaW50ZXJ2YWw7CiAjZW5kaWYKLQljbG9jay0+eHRpbWVfbnNlYyArPSAoczY0KXh0aW1lLnR2X25zZWMgPDwgY2xvY2stPnNoaWZ0OworCWNsb2NrLT54dGltZV9uc2VjID0gKHM2NCl4dGltZS50dl9uc2VjIDw8IGNsb2NrLT5zaGlmdDsKIAogCS8qIG5vcm1hbGx5IHRoaXMgbG9vcCB3aWxsIHJ1biBqdXN0IG9uY2UsIGhvd2V2ZXIgaW4gdGhlCiAJICogY2FzZSBvZiBsb3N0IG9yIGxhdGUgdGlja3MsIGl0IHdpbGwgYWNjdW11bGF0ZSBjb3JyZWN0bHkuCiAJICovCiAJd2hpbGUgKG9mZnNldCA+PSBjbG9jay0+Y3ljbGVfaW50ZXJ2YWwpIHsKIAkJLyogYWNjdW11bGF0ZSBvbmUgaW50ZXJ2YWwgKi8KLQkJY2xvY2stPnh0aW1lX25zZWMgKz0gY2xvY2stPnh0aW1lX2ludGVydmFsOwotCQljbG9jay0+Y3ljbGVfbGFzdCArPSBjbG9jay0+Y3ljbGVfaW50ZXJ2YWw7CiAJCW9mZnNldCAtPSBjbG9jay0+Y3ljbGVfaW50ZXJ2YWw7CisJCWNsb2NrLT5jeWNsZV9sYXN0ICs9IGNsb2NrLT5jeWNsZV9pbnRlcnZhbDsKIAorCQljbG9jay0+eHRpbWVfbnNlYyArPSBjbG9jay0+eHRpbWVfaW50ZXJ2YWw7CiAJCWlmIChjbG9jay0+eHRpbWVfbnNlYyA+PSAodTY0KU5TRUNfUEVSX1NFQyA8PCBjbG9jay0+c2hpZnQpIHsKIAkJCWNsb2NrLT54dGltZV9uc2VjIC09ICh1NjQpTlNFQ19QRVJfU0VDIDw8IGNsb2NrLT5zaGlmdDsKIAkJCXh0aW1lLnR2X3NlYysrOwogCQkJc2Vjb25kX292ZXJmbG93KCk7CiAJCX0KIAorCQljbG9jay0+cmF3X3RpbWUudHZfbnNlYyArPSBjbG9jay0+cmF3X2ludGVydmFsOworCQlpZiAoY2xvY2stPnJhd190aW1lLnR2X25zZWMgPj0gTlNFQ19QRVJfU0VDKSB7CisJCQljbG9jay0+cmF3X3RpbWUudHZfbnNlYyAtPSBOU0VDX1BFUl9TRUM7CisJCQljbG9jay0+cmF3X3RpbWUudHZfc2VjKys7CisJCX0KKwogCQkvKiBhY2N1bXVsYXRlIGVycm9yIGJldHdlZW4gTlRQIGFuZCBjbG9jayBpbnRlcnZhbCAqLwogCQljbG9jay0+ZXJyb3IgKz0gdGlja19sZW5ndGg7CiAJCWNsb2NrLT5lcnJvciAtPSBjbG9jay0+eHRpbWVfaW50ZXJ2YWwgPDwgKE5UUF9TQ0FMRV9TSElGVCAtIGNsb2NrLT5zaGlmdCk7CkBAIC00NzksOSArNTE4LDEyIEBACiAJLyogY29ycmVjdCB0aGUgY2xvY2sgd2hlbiBOVFAgZXJyb3IgaXMgdG9vIGJpZyAqLwogCWNsb2Nrc291cmNlX2FkanVzdChvZmZzZXQpOwogCi0JLyogc3RvcmUgZnVsbCBuYW5vc2Vjb25kcyBpbnRvIHh0aW1lICovCi0JeHRpbWUudHZfbnNlYyA9IChzNjQpY2xvY2stPnh0aW1lX25zZWMgPj4gY2xvY2stPnNoaWZ0OworCS8qIHN0b3JlIGZ1bGwgbmFub3NlY29uZHMgaW50byB4dGltZSBhZnRlciByb3VuZGluZyBpdCB1cCBhbmQKKwkgKiBhZGQgdGhlIHJlbWFpbmRlciB0byB0aGUgZXJyb3IgZGlmZmVyZW5jZS4KKwkgKi8KKwl4dGltZS50dl9uc2VjID0gKChzNjQpY2xvY2stPnh0aW1lX25zZWMgPj4gY2xvY2stPnNoaWZ0KSArIDE7CiAJY2xvY2stPnh0aW1lX25zZWMgLT0gKHM2NCl4dGltZS50dl9uc2VjIDw8IGNsb2NrLT5zaGlmdDsKKwljbG9jay0+ZXJyb3IgKz0gY2xvY2stPnh0aW1lX25zZWMgPDwgKE5UUF9TQ0FMRV9TSElGVCAtIGNsb2NrLT5zaGlmdCk7CiAKIAl1cGRhdGVfeHRpbWVfY2FjaGUoY3ljMm5zKGNsb2NrLCBvZmZzZXQpKTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZXJfbGlzdC5jIGIva2VybmVsL3RpbWUvdGltZXJfbGlzdC5jCmluZGV4IGE0MGUyMGYuLmY2NDI2OTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL3RpbWVyX2xpc3QuYworKysgYi9rZXJuZWwvdGltZS90aW1lcl9saXN0LmMKQEAgLTQ3LDEzICs0NywxNCBAQAogfQogCiBzdGF0aWMgdm9pZAotcHJpbnRfdGltZXIoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGludCBpZHgsIHU2NCBub3cpCitwcmludF90aW1lcihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBocnRpbWVyICp0YWRkciwgc3RydWN0IGhydGltZXIgKnRpbWVyLAorCSAgICBpbnQgaWR4LCB1NjQgbm93KQogewogI2lmZGVmIENPTkZJR19USU1FUl9TVEFUUwogCWNoYXIgdG1wW1RBU0tfQ09NTV9MRU4gKyAxXTsKICNlbmRpZgogCVNFUV9wcmludGYobSwgIiAjJWQ6ICIsIGlkeCk7Ci0JcHJpbnRfbmFtZV9vZmZzZXQobSwgdGltZXIpOworCXByaW50X25hbWVfb2Zmc2V0KG0sIHRhZGRyKTsKIAlTRVFfcHJpbnRmKG0sICIsICIpOwogCXByaW50X25hbWVfb2Zmc2V0KG0sIHRpbWVyLT5mdW5jdGlvbik7CiAJU0VRX3ByaW50ZihtLCAiLCBTOiUwMmx4IiwgdGltZXItPnN0YXRlKTsKQEAgLTk5LDcgKzEwMCw3IEBACiAJCXRtcCA9ICp0aW1lcjsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFzZS0+Y3B1X2Jhc2UtPmxvY2ssIGZsYWdzKTsKIAotCQlwcmludF90aW1lcihtLCAmdG1wLCBpLCBub3cpOworCQlwcmludF90aW1lcihtLCB0aW1lciwgJnRtcCwgaSwgbm93KTsKIAkJbmV4dCsrOwogCQlnb3RvIG5leHRfb25lOwogCX0KQEAgLTEwOSw2ICsxMTAsNyBAQAogc3RhdGljIHZvaWQKIHByaW50X2Jhc2Uoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlICpiYXNlLCB1NjQgbm93KQogeworCVNFUV9wcmludGYobSwgIiAgLmJhc2U6ICAgICAgICVwXG4iLCBiYXNlKTsKIAlTRVFfcHJpbnRmKG0sICIgIC5pbmRleDogICAgICAlZFxuIiwKIAkJCWJhc2UtPmluZGV4KTsKIAlTRVFfcHJpbnRmKG0sICIgIC5yZXNvbHV0aW9uOiAlTHUgbnNlY3NcbiIsCkBAIC0xODMsMTIgKzE4NSwxNiBAQAogCiAjaWZkZWYgQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFMKIHN0YXRpYyB2b2lkCi1wcmludF90aWNrZGV2aWNlKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHRpY2tfZGV2aWNlICp0ZCkKK3ByaW50X3RpY2tkZXZpY2Uoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGlja19kZXZpY2UgKnRkLCBpbnQgY3B1KQogewogCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmRldiA9IHRkLT5ldnRkZXY7CiAKIAlTRVFfcHJpbnRmKG0sICJcbiIpOwogCVNFUV9wcmludGYobSwgIlRpY2sgRGV2aWNlOiBtb2RlOiAgICAgJWRcbiIsIHRkLT5tb2RlKTsKKwlpZiAoY3B1IDwgMCkKKwkJU0VRX3ByaW50ZihtLCAiQnJvYWRjYXN0IGRldmljZVxuIik7CisJZWxzZQorCQlTRVFfcHJpbnRmKG0sICJQZXIgQ1BVIGRldmljZTogJWRcbiIsIGNwdSk7CiAKIAlTRVFfcHJpbnRmKG0sICJDbG9jayBFdmVudCBEZXZpY2U6ICIpOwogCWlmICghZGV2KSB7CkBAIC0yMjIsNyArMjI4LDcgQEAKIAlpbnQgY3B1OwogCiAjaWZkZWYgQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFNfQlJPQURDQVNUCi0JcHJpbnRfdGlja2RldmljZShtLCB0aWNrX2dldF9icm9hZGNhc3RfZGV2aWNlKCkpOworCXByaW50X3RpY2tkZXZpY2UobSwgdGlja19nZXRfYnJvYWRjYXN0X2RldmljZSgpLCAtMSk7CiAJU0VRX3ByaW50ZihtLCAidGlja19icm9hZGNhc3RfbWFzazogJTA4bHhcbiIsCiAJCSAgIHRpY2tfZ2V0X2Jyb2FkY2FzdF9tYXNrKCktPmJpdHNbMF0pOwogI2lmZGVmIENPTkZJR19USUNLX09ORVNIT1QKQEAgLTIzMiw3ICsyMzgsNyBAQAogCVNFUV9wcmludGYobSwgIlxuIik7CiAjZW5kaWYKIAlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkKLQkJICAgcHJpbnRfdGlja2RldmljZShtLCB0aWNrX2dldF9kZXZpY2UoY3B1KSk7CisJCXByaW50X3RpY2tkZXZpY2UobSwgdGlja19nZXRfZGV2aWNlKGNwdSksIGNwdSk7CiAJU0VRX3ByaW50ZihtLCAiXG4iKTsKIH0KICNlbHNlCkBAIC0yNDQsNyArMjUwLDcgQEAKIAl1NjQgbm93ID0ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkpOwogCWludCBjcHU7CiAKLQlTRVFfcHJpbnRmKG0sICJUaW1lciBMaXN0IFZlcnNpb246IHYwLjNcbiIpOworCVNFUV9wcmludGYobSwgIlRpbWVyIExpc3QgVmVyc2lvbjogdjAuNFxuIik7CiAJU0VRX3ByaW50ZihtLCAiSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVM6ICVkXG4iLCBIUlRJTUVSX01BWF9DTE9DS19CQVNFUyk7CiAJU0VRX3ByaW50ZihtLCAibm93IGF0ICVMZCBuc2Vjc1xuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylub3cpOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZXIuYyBiL2tlcm5lbC90aW1lci5jCmluZGV4IDUxMGZlNjkuLjU2YmVjZjMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lci5jCisrKyBiL2tlcm5lbC90aW1lci5jCkBAIC0xNDM2LDkgKzE0MzYsMTEgQEAKIAlCVUdfT04oY3B1X29ubGluZShjcHUpKTsKIAlvbGRfYmFzZSA9IHBlcl9jcHUodHZlY19iYXNlcywgY3B1KTsKIAluZXdfYmFzZSA9IGdldF9jcHVfdmFyKHR2ZWNfYmFzZXMpOwotCi0JbG9jYWxfaXJxX2Rpc2FibGUoKTsKLQlzcGluX2xvY2soJm5ld19iYXNlLT5sb2NrKTsKKwkvKgorCSAqIFRoZSBjYWxsZXIgaXMgZ2xvYmFsbHkgc2VyaWFsaXplZCBhbmQgbm9ib2R5IGVsc2UKKwkgKiB0YWtlcyB0d28gbG9ja3MgYXQgb25jZSwgZGVhZGxvY2sgaXMgbm90IHBvc3NpYmxlLgorCSAqLworCXNwaW5fbG9ja19pcnEoJm5ld19iYXNlLT5sb2NrKTsKIAlzcGluX2xvY2tfbmVzdGVkKCZvbGRfYmFzZS0+bG9jaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwogCiAJQlVHX09OKG9sZF9iYXNlLT5ydW5uaW5nX3RpbWVyKTsKQEAgLTE0NTMsOCArMTQ1NSw3IEBACiAJfQogCiAJc3Bpbl91bmxvY2soJm9sZF9iYXNlLT5sb2NrKTsKLQlzcGluX3VubG9jaygmbmV3X2Jhc2UtPmxvY2spOwotCWxvY2FsX2lycV9lbmFibGUoKTsKKwlzcGluX3VubG9ja19pcnEoJm5ld19iYXNlLT5sb2NrKTsKIAlwdXRfY3B1X3Zhcih0dmVjX2Jhc2VzKTsKIH0KICNlbmRpZiAvKiBDT05GSUdfSE9UUExVR19DUFUgKi8KZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnLmRlYnVnIGIvbGliL0tjb25maWcuZGVidWcKaW5kZXggMzFkNzg0ZC4uYjBmMjM5ZSAxMDA2NDQKLS0tIGEvbGliL0tjb25maWcuZGVidWcKKysrIGIvbGliL0tjb25maWcuZGVidWcKQEAgLTY1Miw2ICs2NTIsMTEgQEAKIAlkZXBlbmRzIG9uIEJMT0NLCiAJZGVmYXVsdCBuCiAJaGVscAorCSAgQklHIEZBVCBXQVJOSU5HOiBFTkFCTElORyBUSElTIE9QVElPTiBNSUdIVCBCUkVBSyBCT09USU5HIE9OCisJICBTT01FIERJU1RSSUJVVElPTlMuICBETyBOT1QgRU5BQkxFIFRISVMgVU5MRVNTIFlPVSBLTk9XIFdIQVQKKwkgIFlPVSBBUkUgRE9JTkcuICBEaXN0cm9zLCBwbGVhc2UgZW5hYmxlIHRoaXMgYW5kIGZpeCB3aGF0ZXZlcgorCSAgaXMgYnJva2VuLgorCiAJICBDb252ZW50aW9uYWxseSwgYmxvY2sgZGV2aWNlIG51bWJlcnMgYXJlIGFsbG9jYXRlZCBmcm9tCiAJICBwcmVkZXRlcm1pbmVkIGNvbnRpZ3VvdXMgYXJlYS4gIEhvd2V2ZXIsIGV4dGVuZGVkIGJsb2NrIGFyZWEKIAkgIG1heSBpbnRyb2R1Y2Ugbm9uLWNvbnRpZ3VvdXMgYmxvY2sgZGV2aWNlIG51bWJlcnMuICBUaGlzCmRpZmYgLS1naXQgYS9tbS9wYWdlLXdyaXRlYmFjay5jIGIvbW0vcGFnZS13cml0ZWJhY2suYwppbmRleCBjMTMwYTEzLi5iNDBmNmQ1IDEwMDY0NAotLS0gYS9tbS9wYWdlLXdyaXRlYmFjay5jCisrKyBiL21tL3BhZ2Utd3JpdGViYWNrLmMKQEAgLTg3Niw2ICs4NzYsNyBAQAogCXBnb2ZmX3QgZW5kOwkJLyogSW5jbHVzaXZlICovCiAJaW50IHNjYW5uZWQgPSAwOwogCWludCByYW5nZV93aG9sZSA9IDA7CisJbG9uZyBucl90b193cml0ZSA9IHdiYy0+bnJfdG9fd3JpdGU7CiAKIAlpZiAod2JjLT5ub25ibG9ja2luZyAmJiBiZGlfd3JpdGVfY29uZ2VzdGVkKGJkaSkpIHsKIAkJd2JjLT5lbmNvdW50ZXJlZF9jb25nZXN0aW9uID0gMTsKQEAgLTkzOSw3ICs5NDAsNyBAQAogCQkJCXVubG9ja19wYWdlKHBhZ2UpOwogCQkJCXJldCA9IDA7CiAJCQl9Ci0JCQlpZiAocmV0IHx8ICgtLSh3YmMtPm5yX3RvX3dyaXRlKSA8PSAwKSkKKwkJCWlmIChyZXQgfHwgKC0tbnJfdG9fd3JpdGUgPD0gMCkpCiAJCQkJZG9uZSA9IDE7CiAJCQlpZiAod2JjLT5ub25ibG9ja2luZyAmJiBiZGlfd3JpdGVfY29uZ2VzdGVkKGJkaSkpIHsKIAkJCQl3YmMtPmVuY291bnRlcmVkX2Nvbmdlc3Rpb24gPSAxOwpAQCAtOTU4LDExICs5NTksMTIgQEAKIAkJaW5kZXggPSAwOwogCQlnb3RvIHJldHJ5OwogCX0KLQlpZiAod2JjLT5yYW5nZV9jeWNsaWMgfHwgKHJhbmdlX3dob2xlICYmIHdiYy0+bnJfdG9fd3JpdGUgPiAwKSkKLQkJbWFwcGluZy0+d3JpdGViYWNrX2luZGV4ID0gaW5kZXg7CisJaWYgKCF3YmMtPm5vX25yd3JpdGVfaW5kZXhfdXBkYXRlKSB7CisJCWlmICh3YmMtPnJhbmdlX2N5Y2xpYyB8fCAocmFuZ2Vfd2hvbGUgJiYgbnJfdG9fd3JpdGUgPiAwKSkKKwkJCW1hcHBpbmctPndyaXRlYmFja19pbmRleCA9IGluZGV4OworCQl3YmMtPm5yX3RvX3dyaXRlID0gbnJfdG9fd3JpdGU7CisJfQogCi0JaWYgKHdiYy0+cmFuZ2VfY29udCkKLQkJd2JjLT5yYW5nZV9zdGFydCA9IGluZGV4IDw8IFBBR0VfQ0FDSEVfU0hJRlQ7CiAJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0wod3JpdGVfY2FjaGVfcGFnZXMpOwpkaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmMKaW5kZXggYmY2NmQwMS4uZDg3OTU4YSAxMDA2NDQKLS0tIGEvbW0vc2htZW0uYworKysgYi9tbS9zaG1lbS5jCkBAIC0yNTgwLDYgKzI1ODAsNyBAQAogCXNobWVtX3VuYWNjdF9zaXplKGZsYWdzLCBzaXplKTsKIAlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChzaG1lbV9maWxlX3NldHVwKTsKIAogLyoqCiAgKiBzaG1lbV96ZXJvX3NldHVwIC0gc2V0dXAgYSBzaGFyZWQgYW5vbnltb3VzIG1hcHBpbmcKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvYWZfYmx1ZXRvb3RoLmMgYi9uZXQvYmx1ZXRvb3RoL2FmX2JsdWV0b290aC5jCmluZGV4IGY2MzQ4ZTAuLjhmOTQzMWEgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvYWZfYmx1ZXRvb3RoLmMKKysrIGIvbmV0L2JsdWV0b290aC9hZl9ibHVldG9vdGguYwpAQCAtMzcsMTAgKzM3LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wb2xsLmg+CiAjaW5jbHVkZSA8bmV0L3NvY2suaD4KICNpbmNsdWRlIDxhc20vaW9jdGxzLmg+Ci0KLSNpZiBkZWZpbmVkKENPTkZJR19LTU9EKQogI2luY2x1ZGUgPGxpbnV4L2ttb2QuaD4KLSNlbmRpZgogCiAjaW5jbHVkZSA8bmV0L2JsdWV0b290aC9ibHVldG9vdGguaD4KIApAQCAtMTQ1LDExICsxNDIsOCBAQAogCWlmIChwcm90byA8IDAgfHwgcHJvdG8gPj0gQlRfTUFYX1BST1RPKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotI2lmIGRlZmluZWQoQ09ORklHX0tNT0QpCi0JaWYgKCFidF9wcm90b1twcm90b10pIHsKKwlpZiAoIWJ0X3Byb3RvW3Byb3RvXSkKIAkJcmVxdWVzdF9tb2R1bGUoImJ0LXByb3RvLSVkIiwgcHJvdG8pOwotCX0KLSNlbmRpZgogCiAJZXJyID0gLUVQUk9UT05PU1VQUE9SVDsKIApkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvZWJ0YWJsZXMuYyBiL25ldC9icmlkZ2UvbmV0ZmlsdGVyL2VidGFibGVzLmMKaW5kZXggNWJiODhlYi4uMGZhMjA4ZSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvZWJ0YWJsZXMuYworKysgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9lYnRhYmxlcy5jCkBAIC0zMDUsMjMgKzMwNSwxNCBAQAogCXJldHVybiBOVUxMOwogfQogCi0jaWZuZGVmIENPTkZJR19LTU9ECi0jZGVmaW5lIGZpbmRfaW5saXN0X2xvY2soaCxuLHAsZSxtKSBmaW5kX2lubGlzdF9sb2NrX25vbG9hZCgoaCksKG4pLChlKSwobSkpCi0jZWxzZQogc3RhdGljIHZvaWQgKgogZmluZF9pbmxpc3RfbG9jayhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwcmVmaXgsCiAgICBpbnQgKmVycm9yLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQogewotCXZvaWQgKnJldDsKLQotCXJldCA9IGZpbmRfaW5saXN0X2xvY2tfbm9sb2FkKGhlYWQsIG5hbWUsIGVycm9yLCBtdXRleCk7Ci0JaWYgKCFyZXQpIHsKLQkJcmVxdWVzdF9tb2R1bGUoIiVzJXMiLCBwcmVmaXgsIG5hbWUpOwotCQlyZXQgPSBmaW5kX2lubGlzdF9sb2NrX25vbG9hZChoZWFkLCBuYW1lLCBlcnJvciwgbXV0ZXgpOwotCX0KLQlyZXR1cm4gcmV0OworCXJldHVybiB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZSgKKwkJCWZpbmRfaW5saXN0X2xvY2tfbm9sb2FkKGhlYWQsIG5hbWUsIGVycm9yLCBtdXRleCksCisJCQkiJXMlcyIsIHByZWZpeCwgbmFtZSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgZWJ0X3RhYmxlICoKIGZpbmRfdGFibGVfbG9jayhjb25zdCBjaGFyICpuYW1lLCBpbnQgKmVycm9yLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQpkaWZmIC0tZ2l0IGEvbmV0L2Nhbi9hZl9jYW4uYyBiL25ldC9jYW4vYWZfY2FuLmMKaW5kZXggODAzNWZiZi4uN2Q0ZDJiMyAxMDA2NDQKLS0tIGEvbmV0L2Nhbi9hZl9jYW4uYworKysgYi9uZXQvY2FuL2FmX2Nhbi5jCkBAIC0xMjgsOCArMTI4LDggQEAKIAlpZiAobmV0ICE9ICZpbml0X25ldCkKIAkJcmV0dXJuIC1FQUZOT1NVUFBPUlQ7CiAKLSNpZmRlZiBDT05GSUdfS01PRAotCS8qIHRyeSB0byBsb2FkIHByb3RvY29sIG1vZHVsZSwgd2hlbiBDT05GSUdfS01PRCBpcyBkZWZpbmVkICovCisjaWZkZWYgQ09ORklHX01PRFVMRVMKKwkvKiB0cnkgdG8gbG9hZCBwcm90b2NvbCBtb2R1bGUga2VybmVsIGlzIG1vZHVsYXIgKi8KIAlpZiAoIXByb3RvX3RhYltwcm90b2NvbF0pIHsKIAkJZXJyID0gcmVxdWVzdF9tb2R1bGUoImNhbi1wcm90by0lZCIsIHByb3RvY29sKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCAxNDA4YTA4My4uODY4ZWMwYiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmMKKysrIGIvbmV0L2NvcmUvZGV2LmMKQEAgLTQ5NTYsOCArNDk1Niw2IEBACiBFWFBPUlRfU1lNQk9MKGJyX2ZkYl9wdXRfaG9vayk7CiAjZW5kaWYKIAotI2lmZGVmIENPTkZJR19LTU9ECiBFWFBPUlRfU1lNQk9MKGRldl9sb2FkKTsKLSNlbmRpZgogCiBFWFBPUlRfUEVSX0NQVV9TWU1CT0woc29mdG5ldF9kYXRhKTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKaW5kZXggMzYzMDEzMS4uMzFmMjlkMiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvcnRuZXRsaW5rLmMKKysrIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKQEAgLTEwNDAsNyArMTA0MCw3IEBACiAJc3RydWN0IG5sYXR0ciAqbGlua2luZm9bSUZMQV9JTkZPX01BWCsxXTsKIAlpbnQgZXJyOwogCi0jaWZkZWYgQ09ORklHX0tNT0QKKyNpZmRlZiBDT05GSUdfTU9EVUxFUwogcmVwbGF5OgogI2VuZGlmCiAJZXJyID0gbmxtc2dfcGFyc2UobmxoLCBzaXplb2YoKmlmbSksIHRiLCBJRkxBX01BWCwgaWZsYV9wb2xpY3kpOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCQlpZiAoIW9wcykgewotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkJCWlmIChraW5kWzBdKSB7CiAJCQkJX19ydG5sX3VubG9jaygpOwogCQkJCXJlcXVlc3RfbW9kdWxlKCJydG5sLWxpbmstJXMiLCBraW5kKTsKZGlmZiAtLWdpdCBhL25ldC9kY2NwL2NjaWQuYyBiL25ldC9kY2NwL2NjaWQuYwppbmRleCA0ODA5NzUzLi44ZmU5MzFhIDEwMDY0NAotLS0gYS9uZXQvZGNjcC9jY2lkLmMKKysrIGIvbmV0L2RjY3AvY2NpZC5jCkBAIC0xNTQsNyArMTU0LDcgQEAKIAlzdHJ1Y3QgY2NpZCAqY2NpZCA9IE5VTEw7CiAKIAljY2lkc19yZWFkX2xvY2soKTsKLSNpZmRlZiBDT05GSUdfS01PRAorI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJaWYgKGNjaWRzW2lkXSA9PSBOVUxMKSB7CiAJCS8qIFdlIG9ubHkgdHJ5IHRvIGxvYWQgaWYgaW4gcHJvY2VzcyBjb250ZXh0ICovCiAJCWNjaWRzX3JlYWRfdW5sb2NrKCk7CmRpZmYgLS1naXQgYS9uZXQvZGVjbmV0L2RuX2Rldi5jIGIvbmV0L2RlY25ldC9kbl9kZXYuYwppbmRleCA4MDA4Yzg2Li4yOGUyNmJkIDEwMDY0NAotLS0gYS9uZXQvZGVjbmV0L2RuX2Rldi5jCisrKyBiL25ldC9kZWNuZXQvZG5fZGV2LmMKQEAgLTQ5MCw5ICs0OTAsNyBAQAogCQlyZXR1cm4gLUVGQVVMVDsKIAlpZnItPmlmcl9uYW1lW0lGTkFNU0laLTFdID0gMDsKIAotI2lmZGVmIENPTkZJR19LTU9ECiAJZGV2X2xvYWQoJmluaXRfbmV0LCBpZnItPmlmcl9uYW1lKTsKLSNlbmRpZgogCiAJc3dpdGNoKGNtZCkgewogCQljYXNlIFNJT0NHSUZBRERSOgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZGV2aW5ldC5jIGIvbmV0L2lwdjQvZGV2aW5ldC5jCmluZGV4IDUxNTRlNzIuLjU2ZmNlM2EgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2RldmluZXQuYworKysgYi9uZXQvaXB2NC9kZXZpbmV0LmMKQEAgLTYxMyw5ICs2MTMsNyBAQAogCWlmIChjb2xvbikKIAkJKmNvbG9uID0gMDsKIAotI2lmZGVmIENPTkZJR19LTU9ECiAJZGV2X2xvYWQobmV0LCBpZnIuaWZyX25hbWUpOwotI2VuZGlmCiAKIAlzd2l0Y2ggKGNtZCkgewogCWNhc2UgU0lPQ0dJRkFERFI6CS8qIEdldCBpbnRlcmZhY2UgYWRkcmVzcyAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9kaWFnLmMgYi9uZXQvaXB2NC9pbmV0X2RpYWcuYwppbmRleCA4OWNiMDQ3Li41NjQyMzBkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2RpYWcuYworKysgYi9uZXQvaXB2NC9pbmV0X2RpYWcuYwpAQCAtNTMsMTEgKzUzLDkgQEAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbmV0X2RpYWdfaGFuZGxlciAqaW5ldF9kaWFnX2xvY2tfaGFuZGxlcihpbnQgdHlwZSkKIHsKLSNpZmRlZiBDT05GSUdfS01PRAogCWlmICghaW5ldF9kaWFnX3RhYmxlW3R5cGVdKQogCQlyZXF1ZXN0X21vZHVsZSgibmV0LXBmLSVkLXByb3RvLSVkLXR5cGUtJWQiLCBQRl9ORVRMSU5LLAogCQkJICAgICAgIE5FVExJTktfSU5FVF9ESUFHLCB0eXBlKTsKLSNlbmRpZgogCiAJbXV0ZXhfbG9jaygmaW5ldF9kaWFnX3RhYmxlX211dGV4KTsKIAlpZiAoIWluZXRfZGlhZ190YWJsZVt0eXBlXSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4IDk0MmJlMDQuLjJlYTZkY2MgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3JvdXRlLmMKKysrIGIvbmV0L2lwdjQvcm91dGUuYwpAQCAtMTEwOSw3ICsxMTA5LDEyIEBACiAJCXByaW50aygiXG4iKTsKIAl9CiAjZW5kaWYKLQlydF9oYXNoX3RhYmxlW2hhc2hdLmNoYWluID0gcnQ7CisJLyoKKwkgKiBTaW5jZSBsb29rdXAgaXMgbG9ja2ZyZWUsIHdlIG11c3QgbWFrZSBzdXJlCisJICogcHJldmlvdXMgd3JpdGVzIHRvIHJ0IGFyZSBjb21pdHRlZCB0byBtZW1vcnkKKwkgKiBiZWZvcmUgbWFraW5nIHJ0IHZpc2libGUgdG8gb3RoZXIgQ1BVUy4KKwkgKi8KKwlyY3VfYXNzaWduX3BvaW50ZXIocnRfaGFzaF90YWJsZVtoYXNoXS5jaGFpbiwgcnQpOwogCXNwaW5fdW5sb2NrX2JoKHJ0X2hhc2hfbG9ja19hZGRyKGhhc2gpKTsKIAkqcnAgPSBydDsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9jb25nLmMgYi9uZXQvaXB2NC90Y3BfY29uZy5jCmluZGV4IDZhMjUwODIuLjRlYzViNGUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9jb25nLmMKKysrIGIvbmV0L2lwdjQvdGNwX2NvbmcuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAKIAlzcGluX2xvY2soJnRjcF9jb25nX2xpc3RfbG9jayk7CiAJY2EgPSB0Y3BfY2FfZmluZChuYW1lKTsKLSNpZmRlZiBDT05GSUdfS01PRAorI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJaWYgKCFjYSAmJiBjYXBhYmxlKENBUF9TWVNfTU9EVUxFKSkgewogCQlzcGluX3VubG9jaygmdGNwX2NvbmdfbGlzdF9sb2NrKTsKIApAQCAtMjQ0LDcgKzI0NCw3IEBACiAJaWYgKGNhID09IGljc2stPmljc2tfY2Ffb3BzKQogCQlnb3RvIG91dDsKIAotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkvKiBub3QgZm91bmQgYXR0ZW1wdCB0byBhdXRvbG9hZCBtb2R1bGUgKi8KIAlpZiAoIWNhICYmIGNhcGFibGUoQ0FQX1NZU19NT0RVTEUpKSB7CiAJCXJjdV9yZWFkX3VubG9jaygpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCmluZGV4IDA4ZTgyZDYuLjJlNGFkOTYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKQEAgLTgyMiw3ICs4MjIsNyBAQAogCiAJcGFyc2VfbmF0X3NldHVwID0gcmN1X2RlcmVmZXJlbmNlKG5mbmV0bGlua19wYXJzZV9uYXRfc2V0dXBfaG9vayk7CiAJaWYgKCFwYXJzZV9uYXRfc2V0dXApIHsKLSNpZmRlZiBDT05GSUdfS01PRAorI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJCXJjdV9yZWFkX3VubG9jaygpOwogCQluZm5sX3VubG9jaygpOwogCQlpZiAocmVxdWVzdF9tb2R1bGUoIm5mLW5hdC1pcHY0IikgPCAwKSB7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYwppbmRleCA0NzM5ZjlmLi45YzBiYTE3IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogcmVwbGF5OgogCXNzID0gbmZuZXRsaW5rX2dldF9zdWJzeXModHlwZSk7CiAJaWYgKCFzcykgewotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkJbmZubF91bmxvY2soKTsKIAkJcmVxdWVzdF9tb2R1bGUoIm5mbmV0bGluay1zdWJzeXMtJWQiLCBORk5MX1NVQlNZU19JRCh0eXBlKSk7CiAJCW5mbmxfbG9jaygpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGxpbmsvYWZfbmV0bGluay5jIGIvbmV0L25ldGxpbmsvYWZfbmV0bGluay5jCmluZGV4IDJmZDhhZmEuLjQ4MDE4NGEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRsaW5rL2FmX25ldGxpbmsuYworKysgYi9uZXQvbmV0bGluay9hZl9uZXRsaW5rLmMKQEAgLTQzNSw3ICs0MzUsNyBAQAogCQlyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDsKIAogCW5ldGxpbmtfbG9ja190YWJsZSgpOwotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAlpZiAoIW5sX3RhYmxlW3Byb3RvY29sXS5yZWdpc3RlcmVkKSB7CiAJCW5ldGxpbmtfdW5sb2NrX3RhYmxlKCk7CiAJCXJlcXVlc3RfbW9kdWxlKCJuZXQtcGYtJWQtcHJvdG8tJWQiLCBQRl9ORVRMSU5LLCBwcm90b2NvbCk7CmRpZmYgLS1naXQgYS9uZXQvcGhvbmV0L2FmX3Bob25ldC5jIGIvbmV0L3Bob25ldC9hZl9waG9uZXQuYwppbmRleCA5ZTljNmZjLi5iOWQ5N2VmIDEwMDY0NAotLS0gYS9uZXQvcGhvbmV0L2FmX3Bob25ldC5jCisrKyBiL25ldC9waG9uZXQvYWZfcGhvbmV0LmMKQEAgLTY3LDExICs2NywxMCBAQAogCX0KIAogCXBucCA9IHBob25ldF9wcm90b19nZXQocHJvdG9jb2wpOwotI2lmZGVmIENPTkZJR19LTU9ECiAJaWYgKHBucCA9PSBOVUxMICYmCiAJICAgIHJlcXVlc3RfbW9kdWxlKCJuZXQtcGYtJWQtcHJvdG8tJWQiLCBQRl9QSE9ORVQsIHByb3RvY29sKSA9PSAwKQogCQlwbnAgPSBwaG9uZXRfcHJvdG9fZ2V0KHByb3RvY29sKTsKLSNlbmRpZgorCiAJaWYgKHBucCA9PSBOVUxMKQogCQlyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDsKIAlpZiAoc29jay0+dHlwZSAhPSBwbnAtPnNvY2tfdHlwZSkgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9hcGkuYyBiL25ldC9zY2hlZC9hY3RfYXBpLmMKaW5kZXggOTk3NGIzZi4uOGY0NTdmMSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9hcGkuYworKysgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCkBAIC00OTQsNyArNDk0LDcgQEAKIAogCWFfbyA9IHRjX2xvb2t1cF9hY3Rpb25fbihhY3RfbmFtZSk7CiAJaWYgKGFfbyA9PSBOVUxMKSB7Ci0jaWZkZWYgQ09ORklHX0tNT0QKKyNpZmRlZiBDT05GSUdfTU9EVUxFUwogCQlydG5sX3VubG9jaygpOwogCQlyZXF1ZXN0X21vZHVsZSgiYWN0XyVzIiwgYWN0X25hbWUpOwogCQlydG5sX2xvY2soKTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jCmluZGV4IDhlYjc5ZTkuLjE2ZTdhYzkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiAJCWVyciA9IC1FTk9FTlQ7CiAJCXRwX29wcyA9IHRjZl9wcm90b19sb29rdXBfb3BzKHRjYVtUQ0FfS0lORF0pOwogCQlpZiAodHBfb3BzID09IE5VTEwpIHsKLSNpZmRlZiBDT05GSUdfS01PRAorI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJCQlzdHJ1Y3QgbmxhdHRyICpraW5kID0gdGNhW1RDQV9LSU5EXTsKIAkJCWNoYXIgbmFtZVtJRk5BTVNJWl07CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9lbWF0Y2guYyBiL25ldC9zY2hlZC9lbWF0Y2guYwppbmRleCA1ZTZmODJlLi5lODI1MTllIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvZW1hdGNoLmMKKysrIGIvbmV0L3NjaGVkL2VtYXRjaC5jCkBAIC0yMjQsNyArMjI0LDcgQEAKIAogCQlpZiAoZW0tPm9wcyA9PSBOVUxMKSB7CiAJCQllcnIgPSAtRU5PRU5UOwotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkJCV9fcnRubF91bmxvY2soKTsKIAkJCXJlcXVlc3RfbW9kdWxlKCJlbWF0Y2gta2luZC0ldSIsIGVtX2hkci0+a2luZCk7CiAJCQlydG5sX2xvY2soKTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCmluZGV4IDExMjJjOTUuLmIxNmFkMjkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfYXBpLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuYwpAQCAtNzY0LDcgKzc2NCw3IEBACiAJc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWI7CiAKIAlvcHMgPSBxZGlzY19sb29rdXBfb3BzKGtpbmQpOwotI2lmZGVmIENPTkZJR19LTU9ECisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAlpZiAob3BzID09IE5VTEwgJiYga2luZCAhPSBOVUxMKSB7CiAJCWNoYXIgbmFtZVtJRk5BTVNJWl07CiAJCWlmIChubGFfc3RybGNweShuYW1lLCBraW5kLCBJRk5BTVNJWikgPCBJRk5BTVNJWikgewpkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jCmluZGV4IDNlOGQ0ZTMuLjJiN2E0YjUgMTAwNjQ0Ci0tLSBhL25ldC9zb2NrZXQuYworKysgYi9uZXQvc29ja2V0LmMKQEAgLTExNDIsNyArMTE0Miw3IEBACiAKIAlzb2NrLT50eXBlID0gdHlwZTsKIAotI2lmIGRlZmluZWQoQ09ORklHX0tNT0QpCisjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkvKiBBdHRlbXB0IHRvIGxvYWQgYSBwcm90b2NvbCBtb2R1bGUgaWYgdGhlIGZpbmQgZmFpbGVkLgogCSAqCiAJICogMTIvMDkvMTk5NiBNYXJjaW46IEJ1dCEgdGhpcyBtYWtlcyBSRUFMTFkgb25seSBzZW5zZSwgaWYgdGhlIHVzZXIKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvYXV0aC5jIGIvbmV0L3N1bnJwYy9hdXRoLmMKaW5kZXggNmJmZWE5ZS4uNDM2YmYxYiAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy9hdXRoLmMKKysrIGIvbmV0L3N1bnJwYy9hdXRoLmMKQEAgLTgzLDEwICs4Myw4IEBACiAJaWYgKGZsYXZvciA+PSBSUENfQVVUSF9NQVhGTEFWT1IpCiAJCWdvdG8gb3V0OwogCi0jaWZkZWYgQ09ORklHX0tNT0QKIAlpZiAoKG9wcyA9IGF1dGhfZmxhdm9yc1tmbGF2b3JdKSA9PSBOVUxMKQogCQlyZXF1ZXN0X21vZHVsZSgicnBjLWF1dGgtJXUiLCBmbGF2b3IpOwotI2VuZGlmCiAJc3Bpbl9sb2NrKCZycGNfYXV0aGZsYXZvcl9sb2NrKTsKIAlvcHMgPSBhdXRoX2ZsYXZvcnNbZmxhdm9yXTsKIAlpZiAob3BzID09IE5VTEwgfHwgIXRyeV9tb2R1bGVfZ2V0KG9wcy0+b3duZXIpKSB7CmRpZmYgLS1naXQgYS9zY3JpcHRzL21vZC9tb2Rwb3N0LmMgYi9zY3JpcHRzL21vZC9tb2Rwb3N0LmMKaW5kZXggOGUwZGU2YS4uODg5MjE2MSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tb2QvbW9kcG9zdC5jCisrKyBiL3NjcmlwdHMvbW9kL21vZHBvc3QuYwpAQCAtMTcyNiw2ICsxNzI2LDE0IEBACiAJYnVmX3ByaW50ZihiLCAifTtcbiIpOwogfQogCit2b2lkIGFkZF9zdGFnaW5nX2ZsYWcoc3RydWN0IGJ1ZmZlciAqYiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqc3RhZ2luZ19kaXIgPSAiZHJpdmVycy9zdGFnaW5nIjsKKworCWlmIChzdHJuY21wKHN0YWdpbmdfZGlyLCBuYW1lLCBzdHJsZW4oc3RhZ2luZ19kaXIpKSA9PSAwKQorCQlidWZfcHJpbnRmKGIsICJcbk1PRFVMRV9JTkZPKHN0YWdpbmcsIFwiWVwiKTtcbiIpOworfQorCiAvKioKICAqIFJlY29yZCBDUkNzIGZvciB1bnJlc29sdmVkIHN5bWJvbHMKICAqKi8KQEAgLTIxMzUsNiArMjE0Myw3IEBACiAJCWJ1Zi5wb3MgPSAwOwogCiAJCWFkZF9oZWFkZXIoJmJ1ZiwgbW9kKTsKKwkJYWRkX3N0YWdpbmdfZmxhZygmYnVmLCBtb2QtPm5hbWUpOwogCQllcnIgfD0gYWRkX3ZlcnNpb25zKCZidWYsIG1vZCk7CiAJCWFkZF9kZXBlbmRzKCZidWYsIG1vZCwgbW9kdWxlcyk7CiAJCWFkZF9tb2RkZXZ0YWJsZSgmYnVmLCBtb2QpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jIGIvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jCmluZGV4IDU3NmU1MTEuLjNlM2ZkZTcgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NlbGludXgvaG9va3MuYworKysgYi9zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMKQEAgLTc1LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxsaW51eC9zZWxpbnV4Lmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9wb3NpeC10aW1lcnMuaD4KIAogI2luY2x1ZGUgImF2Yy5oIgogI2luY2x1ZGUgIm9ianNlYy5oIgpAQCAtMjMyMiwxMyArMjMyMyw3IEBACiAJCQlpbml0cmxpbSA9IGluaXRfdGFzay5zaWduYWwtPnJsaW0raTsKIAkJCXJsaW0tPnJsaW1fY3VyID0gbWluKHJsaW0tPnJsaW1fbWF4LCBpbml0cmxpbS0+cmxpbV9jdXIpOwogCQl9Ci0JCWlmIChjdXJyZW50LT5zaWduYWwtPnJsaW1bUkxJTUlUX0NQVV0ucmxpbV9jdXIgIT0gUkxJTV9JTkZJTklUWSkgewotCQkJLyoKLQkJCSAqIFRoaXMgd2lsbCBjYXVzZSBSTElNSVRfQ1BVIGNhbGN1bGF0aW9ucwotCQkJICogdG8gYmUgcmVmaWd1cmVkLgotCQkJICovCi0JCQljdXJyZW50LT5pdF9wcm9mX2V4cGlyZXMgPSBqaWZmaWVzX3RvX2NwdXRpbWUoMSk7Ci0JCX0KKwkJdXBkYXRlX3JsaW1pdF9jcHUocmxpbS0+cmxpbV9jdXIpOwogCX0KIAogCS8qIFdha2UgdXAgdGhlIHBhcmVudCBpZiBpdCBpcyB3YWl0aW5nIHNvIHRoYXQgaXQgY2FuCmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL2phY2suYyBiL3NvdW5kL2NvcmUvamFjay5jCmluZGV4IDgxMzNhMmIuLmJkMmQ5ZTYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvamFjay5jCisrKyBiL3NvdW5kL2NvcmUvamFjay5jCkBAIC0xNDcsNiArMTQ3LDkgQEAKICAqLwogdm9pZCBzbmRfamFja19yZXBvcnQoc3RydWN0IHNuZF9qYWNrICpqYWNrLCBpbnQgc3RhdHVzKQogeworCWlmICghamFjaykKKwkJcmV0dXJuOworCiAJaWYgKGphY2stPnR5cGUgJiBTTkRfSkFDS19IRUFEUEhPTkUpCiAJCWlucHV0X3JlcG9ydF9zd2l0Y2goamFjay0+aW5wdXRfZGV2LCBTV19IRUFEUEhPTkVfSU5TRVJULAogCQkJCSAgICBzdGF0dXMgJiBTTkRfSkFDS19IRUFEUEhPTkUpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbGliLmMgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwppbmRleCA2ZWE1Y2ZiLi45MjE2OTEwIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9saWIuYworKysgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwpAQCAtOTA4LDEyICs5MDgsMTIgQEAKIEVYUE9SVF9TWU1CT0woc25kX3BjbV9od19ydWxlX2FkZCk7CiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X21hc2sKKyAqIHNuZF9wY21faHdfY29uc3RyYWludF9tYXNrIC0gYXBwbHkgdGhlIGdpdmVuIGJpdG1hcCBtYXNrIGNvbnN0cmFpbnQKICAqIEBydW50aW1lOiBQQ00gcnVudGltZSBpbnN0YW5jZQogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSBtYXNrCiAgKiBAbWFzazogdGhlIGJpdG1hcCBtYXNrCiAgKgotICogQXBwbHkgdGhlIGNvbnN0cmFpbnQgb2YgdGhlIGdpdmVuIGJpdG1hcCBtYXNrIHRvIGEgbWFzayBwYXJhbWV0ZXIuCisgKiBBcHBseSB0aGUgY29uc3RyYWludCBvZiB0aGUgZ2l2ZW4gYml0bWFwIG1hc2sgdG8gYSAzMi1iaXQgbWFzayBwYXJhbWV0ZXIuCiAgKi8KIGludCBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWFzayhzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lLCBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLAogCQkJICAgICAgIHVfaW50MzJfdCBtYXNrKQpAQCAtOTI4LDEyICs5MjgsMTIgQEAKIH0KIAogLyoqCi0gKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWFzazY0CisgKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWFzazY0IC0gYXBwbHkgdGhlIGdpdmVuIGJpdG1hcCBtYXNrIGNvbnN0cmFpbnQKICAqIEBydW50aW1lOiBQQ00gcnVudGltZSBpbnN0YW5jZQogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSBtYXNrCiAgKiBAbWFzazogdGhlIDY0Yml0IGJpdG1hcCBtYXNrCiAgKgotICogQXBwbHkgdGhlIGNvbnN0cmFpbnQgb2YgdGhlIGdpdmVuIGJpdG1hcCBtYXNrIHRvIGEgbWFzayBwYXJhbWV0ZXIuCisgKiBBcHBseSB0aGUgY29uc3RyYWludCBvZiB0aGUgZ2l2ZW4gYml0bWFwIG1hc2sgdG8gYSA2NC1iaXQgbWFzayBwYXJhbWV0ZXIuCiAgKi8KIGludCBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWFzazY0KHN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUsIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsCiAJCQkJIHVfaW50NjRfdCBtYXNrKQpAQCAtOTQ5LDcgKzk0OSw3IEBACiB9CiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X2ludGVnZXIKKyAqIHNuZF9wY21faHdfY29uc3RyYWludF9pbnRlZ2VyIC0gYXBwbHkgYW4gaW50ZWdlciBjb25zdHJhaW50IHRvIGFuIGludGVydmFsCiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKICAqIEB2YXI6IGh3X3BhcmFtcyB2YXJpYWJsZSB0byBhcHBseSB0aGUgaW50ZWdlciBjb25zdHJhaW50CiAgKgpAQCAtOTY0LDcgKzk2NCw3IEBACiBFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9pbnRlZ2VyKTsKIAogLyoqCi0gKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4CisgKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4IC0gYXBwbHkgYSBtaW4vbWF4IHJhbmdlIGNvbnN0cmFpbnQgdG8gYW4gaW50ZXJ2YWwKICAqIEBydW50aW1lOiBQQ00gcnVudGltZSBpbnN0YW5jZQogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSByYW5nZQogICogQG1pbjogdGhlIG1pbmltYWwgdmFsdWUKQEAgLTk5NSw3ICs5OTUsNyBAQAogCiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X2xpc3QKKyAqIHNuZF9wY21faHdfY29uc3RyYWludF9saXN0IC0gYXBwbHkgYSBsaXN0IG9mIGNvbnN0cmFpbnRzIHRvIGEgcGFyYW1ldGVyCiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKICAqIEBjb25kOiBjb25kaXRpb24gYml0cwogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSBsaXN0IGNvbnN0cmFpbnQKQEAgLTEwMzEsNyArMTAzMSw3IEBACiB9CiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X3JhdG51bXMKKyAqIHNuZF9wY21faHdfY29uc3RyYWludF9yYXRudW1zIC0gYXBwbHkgcmF0bnVtcyBjb25zdHJhaW50IHRvIGEgcGFyYW1ldGVyCiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKICAqIEBjb25kOiBjb25kaXRpb24gYml0cwogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSByYXRudW1zIGNvbnN0cmFpbnQKQEAgLTEwNjQsNyArMTA2NCw3IEBACiB9CiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X3JhdGRlbnMKKyAqIHNuZF9wY21faHdfY29uc3RyYWludF9yYXRkZW5zIC0gYXBwbHkgcmF0ZGVucyBjb25zdHJhaW50IHRvIGEgcGFyYW1ldGVyCiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKICAqIEBjb25kOiBjb25kaXRpb24gYml0cwogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSByYXRkZW5zIGNvbnN0cmFpbnQKQEAgLTEwOTUsNyArMTA5NSw3IEBACiB9CiAKIC8qKgotICogc25kX3BjbV9od19jb25zdHJhaW50X21zYml0cworICogc25kX3BjbV9od19jb25zdHJhaW50X21zYml0cyAtIGFkZCBhIGh3IGNvbnN0cmFpbnQgbXNiaXRzIHJ1bGUKICAqIEBydW50aW1lOiBQQ00gcnVudGltZSBpbnN0YW5jZQogICogQGNvbmQ6IGNvbmRpdGlvbiBiaXRzCiAgKiBAd2lkdGg6IHNhbXBsZSBiaXRzIHdpZHRoCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogfQogCiAvKioKLSAqIHNuZF9wY21faHdfY29uc3RyYWludF9zdGVwCisgKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfc3RlcCAtIGFkZCBhIGh3IGNvbnN0cmFpbnQgc3RlcCBydWxlCiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKICAqIEBjb25kOiBjb25kaXRpb24gYml0cwogICogQHZhcjogaHdfcGFyYW1zIHZhcmlhYmxlIHRvIGFwcGx5IHRoZSBzdGVwIGNvbnN0cmFpbnQKQEAgLTExNTQsNyArMTE1NCw3IEBACiB9CQkKIAogLyoqCi0gKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfcG93MgorICogc25kX3BjbV9od19jb25zdHJhaW50X3BvdzIgLSBhZGQgYSBodyBjb25zdHJhaW50IHBvd2VyLW9mLTIgcnVsZQogICogQHJ1bnRpbWU6IFBDTSBydW50aW1lIGluc3RhbmNlCiAgKiBAY29uZDogY29uZGl0aW9uIGJpdHMKICAqIEB2YXI6IGh3X3BhcmFtcyB2YXJpYWJsZSB0byBhcHBseSB0aGUgcG93ZXItb2YtMiBjb25zdHJhaW50CkBAIC0xMjAyLDEzICsxMjAyLDEzIEBACiBFWFBPUlRfU1lNQk9MKF9zbmRfcGNtX2h3X3BhcmFtc19hbnkpOwogCiAvKioKLSAqIHNuZF9wY21faHdfcGFyYW1fdmFsdWUKKyAqIHNuZF9wY21faHdfcGFyYW1fdmFsdWUgLSByZXR1cm4gQHBhcmFtcyBmaWVsZCBAdmFyIHZhbHVlCiAgKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCiAgKiBAdmFyOiBwYXJhbWV0ZXIgdG8gcmV0cmlldmUKLSAqIEBkaXI6IHBvaW50ZXIgdG8gdGhlIGRpcmVjdGlvbiAoLTEsMCwxKSBvciBOVUxMCisgKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgJU5VTEwKICAqCi0gKiBSZXR1cm4gdGhlIHZhbHVlIGZvciBmaWVsZCBQQVIgaWYgaXQncyBmaXhlZCBpbiBjb25maWd1cmF0aW9uIHNwYWNlIAotICogIGRlZmluZWQgYnkgUEFSQU1TLiBSZXR1cm4gLUVJTlZBTCBvdGhlcndpc2UKKyAqIFJldHVybiB0aGUgdmFsdWUgZm9yIGZpZWxkIEB2YXIgaWYgaXQncyBmaXhlZCBpbiBjb25maWd1cmF0aW9uIHNwYWNlCisgKiBkZWZpbmVkIGJ5IEBwYXJhbXMuIFJldHVybiAtJUVJTlZBTCBvdGhlcndpc2UuCiAgKi8KIGludCBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlKGNvbnN0IHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJICAgc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCkBAIC0xMjcxLDEzICsxMjcxLDEzIEBACiAKIAogLyoqCi0gKiBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0CisgKiBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0IC0gcmVmaW5lIGNvbmZpZyBzcGFjZSBhbmQgcmV0dXJuIG1pbmltdW0gdmFsdWUKICAqIEBwY206IFBDTSBpbnN0YW5jZQogICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQogICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCi0gKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICogQGRpcjogcG9pbnRlciB0byB0aGUgZGlyZWN0aW9uICgtMSwwLDEpIG9yICVOVUxMCiAgKgotICogSW5zaWRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSBQQVJBTVMgcmVtb3ZlIGZyb20gUEFSIGFsbCAKKyAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgQHBhcmFtcyByZW1vdmUgZnJvbSBAdmFyIGFsbAogICogdmFsdWVzID4gbWluaW11bS4gUmVkdWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjb3JkaW5nbHkuCiAgKiBSZXR1cm4gdGhlIG1pbmltdW0uCiAgKi8KQEAgLTEzMTcsMTMgKzEzMTcsMTMgQEAKIAogCiAvKioKLSAqIHNuZF9wY21faHdfcGFyYW1fbGFzdAorICogc25kX3BjbV9od19wYXJhbV9sYXN0IC0gcmVmaW5lIGNvbmZpZyBzcGFjZSBhbmQgcmV0dXJuIG1heGltdW0gdmFsdWUKICAqIEBwY206IFBDTSBpbnN0YW5jZQogICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQogICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCi0gKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICogQGRpcjogcG9pbnRlciB0byB0aGUgZGlyZWN0aW9uICgtMSwwLDEpIG9yICVOVUxMCiAgKgotICogSW5zaWRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSBQQVJBTVMgcmVtb3ZlIGZyb20gUEFSIGFsbCAKKyAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgQHBhcmFtcyByZW1vdmUgZnJvbSBAdmFyIGFsbAogICogdmFsdWVzIDwgbWF4aW11bS4gUmVkdWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjb3JkaW5nbHkuCiAgKiBSZXR1cm4gdGhlIG1heGltdW0uCiAgKi8KQEAgLTEzNDUsMTEgKzEzNDUsMTEgQEAKIEVYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV9sYXN0KTsKIAogLyoqCi0gKiBzbmRfcGNtX2h3X3BhcmFtX2Nob29zZQorICogc25kX3BjbV9od19wYXJhbV9jaG9vc2UgLSBjaG9vc2UgYSBjb25maWd1cmF0aW9uIGRlZmluZWQgYnkgQHBhcmFtcwogICogQHBjbTogUENNIGluc3RhbmNlCiAgKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCiAgKgotICogQ2hvb3NlIG9uZSBjb25maWd1cmF0aW9uIGZyb20gY29uZmlndXJhdGlvbiBzcGFjZSBkZWZpbmVkIGJ5IFBBUkFNUworICogQ2hvb3NlIG9uZSBjb25maWd1cmF0aW9uIGZyb20gY29uZmlndXJhdGlvbiBzcGFjZSBkZWZpbmVkIGJ5IEBwYXJhbXMuCiAgKiBUaGUgY29uZmlndXJhdGlvbiBjaG9zZW4gaXMgdGhhdCBvYnRhaW5lZCBmaXhpbmcgaW4gdGhpcyBvcmRlcjoKICAqIGZpcnN0IGFjY2VzcywgZmlyc3QgZm9ybWF0LCBmaXJzdCBzdWJmb3JtYXQsIG1pbiBjaGFubmVscywKICAqIG1pbiByYXRlLCBtaW4gcGVyaW9kIHRpbWUsIG1heCBidWZmZXIgc2l6ZSwgbWluIHRpY2sgdGltZQpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbmF0aXZlLmMgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwppbmRleCBlNjFlMTI1Li5hZWYxODY4IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYworKysgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwpAQCAtODc1LDEwICs4NzUsOCBAQAogfTsKIAogLyoqCi0gKiBzbmRfcGNtX3N0YXJ0CisgKiBzbmRfcGNtX3N0YXJ0IC0gc3RhcnQgYWxsIGxpbmtlZCBzdHJlYW1zCiAgKiBAc3Vic3RyZWFtOiB0aGUgUENNIHN1YnN0cmVhbSBpbnN0YW5jZQotICoKLSAqIFN0YXJ0IGFsbCBsaW5rZWQgc3RyZWFtcy4KICAqLwogaW50IHNuZF9wY21fc3RhcnQoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CkBAIC05MjYsMTIgKzkyNCwxMSBAQAogfTsKIAogLyoqCi0gKiBzbmRfcGNtX3N0b3AKKyAqIHNuZF9wY21fc3RvcCAtIHRyeSB0byBzdG9wIGFsbCBydW5uaW5nIHN0cmVhbXMgaW4gdGhlIHN1YnN0cmVhbSBncm91cAogICogQHN1YnN0cmVhbTogdGhlIFBDTSBzdWJzdHJlYW0gaW5zdGFuY2UKICAqIEBzdGF0ZTogUENNIHN0YXRlIGFmdGVyIHN0b3BwaW5nIHRoZSBzdHJlYW0KICAqCi0gKiBUcnkgdG8gc3RvcCBhbGwgcnVubmluZyBzdHJlYW1zIGluIHRoZSBzdWJzdHJlYW0gZ3JvdXAuCi0gKiBUaGUgc3RhdGUgb2YgZWFjaCBzdHJlYW0gaXMgY2hhbmdlZCB0byB0aGUgZ2l2ZW4gdmFsdWUgYWZ0ZXIgdGhhdCB1bmNvbmRpdGlvbmFsbHkuCisgKiBUaGUgc3RhdGUgb2YgZWFjaCBzdHJlYW0gaXMgdGhlbiBjaGFuZ2VkIHRvIHRoZSBnaXZlbiBzdGF0ZSB1bmNvbmRpdGlvbmFsbHkuCiAgKi8KIGludCBzbmRfcGNtX3N0b3Aoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBzdGF0ZSkKIHsKQEAgLTk0MSwxMSArOTM4LDEwIEBACiBFWFBPUlRfU1lNQk9MKHNuZF9wY21fc3RvcCk7CiAKIC8qKgotICogc25kX3BjbV9kcmFpbl9kb25lCisgKiBzbmRfcGNtX2RyYWluX2RvbmUgLSBzdG9wIHRoZSBETUEgb25seSB3aGVuIHRoZSBnaXZlbiBzdHJlYW0gaXMgcGxheWJhY2sKICAqIEBzdWJzdHJlYW06IHRoZSBQQ00gc3Vic3RyZWFtCiAgKgotICogU3RvcCB0aGUgRE1BIG9ubHkgd2hlbiB0aGUgZ2l2ZW4gc3RyZWFtIGlzIHBsYXliYWNrLgotICogVGhlIHN0YXRlIGlzIGNoYW5nZWQgdG8gU0VUVVAuCisgKiBBZnRlciBzdG9wcGluZywgdGhlIHN0YXRlIGlzIGNoYW5nZWQgdG8gU0VUVVAuCiAgKiBVbmxpa2Ugc25kX3BjbV9zdG9wKCksIHRoaXMgYWZmZWN0cyBvbmx5IHRoZSBnaXZlbiBzdHJlYW0uCiAgKi8KIGludCBzbmRfcGNtX2RyYWluX2RvbmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCkBAIC0xMDY1LDEwICsxMDYxLDkgQEAKIH07CiAKIC8qKgotICogc25kX3BjbV9zdXNwZW5kCisgKiBzbmRfcGNtX3N1c3BlbmQgLSB0cmlnZ2VyIFNVU1BFTkQgdG8gYWxsIGxpbmtlZCBzdHJlYW1zCiAgKiBAc3Vic3RyZWFtOiB0aGUgUENNIHN1YnN0cmVhbQogICoKLSAqIFRyaWdnZXIgU1VTUEVORCB0byBhbGwgbGlua2VkIHN0cmVhbXMuCiAgKiBBZnRlciB0aGlzIGNhbGwsIGFsbCBzdHJlYW1zIGFyZSBjaGFuZ2VkIHRvIFNVU1BFTkRFRCBzdGF0ZS4KICAqLwogaW50IHNuZF9wY21fc3VzcGVuZChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKQEAgLTEwODgsMTAgKzEwODMsOSBAQAogRVhQT1JUX1NZTUJPTChzbmRfcGNtX3N1c3BlbmQpOwogCiAvKioKLSAqIHNuZF9wY21fc3VzcGVuZF9hbGwKKyAqIHNuZF9wY21fc3VzcGVuZF9hbGwgLSB0cmlnZ2VyIFNVU1BFTkQgdG8gYWxsIHN1YnN0cmVhbXMgaW4gdGhlIGdpdmVuIHBjbQogICogQHBjbTogdGhlIFBDTSBpbnN0YW5jZQogICoKLSAqIFRyaWdnZXIgU1VTUEVORCB0byBhbGwgc3Vic3RyZWFtcyBpbiB0aGUgZ2l2ZW4gcGNtLgogICogQWZ0ZXIgdGhpcyBjYWxsLCBhbGwgc3RyZWFtcyBhcmUgY2hhbmdlZCB0byBTVVNQRU5ERUQgc3RhdGUuCiAgKi8KIGludCBzbmRfcGNtX3N1c3BlbmRfYWxsKHN0cnVjdCBzbmRfcGNtICpwY20pCkBAIC0xMzEzLDExICsxMzA3LDkgQEAKIH07CiAKIC8qKgotICogc25kX3BjbV9wcmVwYXJlCisgKiBzbmRfcGNtX3ByZXBhcmUgLSBwcmVwYXJlIHRoZSBQQ00gc3Vic3RyZWFtIHRvIGJlIHRyaWdnZXJhYmxlCiAgKiBAc3Vic3RyZWFtOiB0aGUgUENNIHN1YnN0cmVhbSBpbnN0YW5jZQogICogQGZpbGU6IGZpbGUgdG8gcmVmZXIgZl9mbGFncwotICoKLSAqIFByZXBhcmUgdGhlIFBDTSBzdWJzdHJlYW0gdG8gYmUgdHJpZ2dlcmFibGUuCiAgKi8KIHN0YXRpYyBpbnQgc25kX3BjbV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJICAgc3RydWN0IGZpbGUgKmZpbGUpCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX252aGRtaS5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9udmhkbWkuYwppbmRleCAxYTY1Nzc1Li4yZWVkMmM4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX252aGRtaS5jCisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfbnZoZG1pLmMKQEAgLTExNiw2ICsxMTYsNyBAQAogCWNvZGVjLT5wY21faW5mbyA9IGluZm87CiAKIAlpbmZvLT5uYW1lID0gIk5WSURJQSBIRE1JIjsKKwlpbmZvLT5wY21fdHlwZSA9IEhEQV9QQ01fVFlQRV9IRE1JOwogCWluZm8tPnN0cmVhbVtTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLXSA9IG52aGRtaV9wY21fZGlnaXRhbF9wbGF5YmFjazsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2F0MzIvcGxheXBhcV93bTg1MTAuYyBiL3NvdW5kL3NvYy9hdDMyL3BsYXlwYXFfd204NTEwLmMKaW5kZXggOThhMmQ1OC4uYjE5NjZlNCAxMDA2NDQKLS0tIGEvc291bmQvc29jL2F0MzIvcGxheXBhcV93bTg1MTAuYworKysgYi9zb3VuZC9zb2MvYXQzMi9wbGF5cGFxX3dtODUxMC5jCkBAIC0zMDQsNyArMzA0LDcgQEAKIAogCiAKLXN0YXRpYyBjb25zdCBjaGFyICppbnRlcmNvbltdWzNdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgaW50ZXJjb25bXSA9IHsKIAkvKiBzcGVha2VyIGNvbm5lY3RlZCB0byBTUEtPVVQgKi8KIAl7IkV4dCBTcGsiLCBOVUxMLCAiU1BLT1VUUCJ9LAogCXsiRXh0IFNwayIsIE5VTEwsICJTUEtPVVROIn0sCkBAIC0zMTIsOSArMzEyLDYgQEAKIAl7Ik1pYyBCaWFzIiwgTlVMTCwgIkludCBNaWMifSwKIAl7Ik1JQ04iLCBOVUxMLCAiTWljIEJpYXMifSwKIAl7Ik1JQ1AiLCBOVUxMLCAiTWljIEJpYXMifSwKLQotCS8qIFRlcm1pbmF0b3IgKi8KLQl7TlVMTCwgTlVMTCwgTlVMTH0sCiB9OwogCiAKQEAgLTMzNCwxMSArMzMxLDggQEAKIAkvKgogCSAqIFNldHVwIGF1ZGlvIHBhdGggaW50ZXJjb25uZWN0cwogCSAqLwotCWZvciAoaSA9IDA7IGludGVyY29uW2ldWzBdICE9IE5VTEw7IGkrKykgewotCQlzbmRfc29jX2RhcG1fY29ubmVjdF9pbnB1dChjb2RlYywKLQkJCQkJICAgaW50ZXJjb25baV1bMF0sCi0JCQkJCSAgIGludGVyY29uW2ldWzFdLCBpbnRlcmNvbltpXVsyXSk7Ci0JfQorCXNuZF9zb2NfZGFwbV9hZGRfcm91dGVzKGNvZGVjLCBpbnRlcmNvbiwgQVJSQVlfU0laRShpbnRlcmNvbikpOworCiAKIAogCS8qIGFsd2F5cyBjb25uZWN0ZWQgcGlucyAqLwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3NvYy1kYXBtLmMgYi9zb3VuZC9zb2Mvc29jLWRhcG0uYwppbmRleCBlZmJkMGIzLi43MzUxZGI5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc29jLWRhcG0uYworKysgYi9zb3VuZC9zb2Mvc29jLWRhcG0uYwpAQCAtODMxLDcgKzgzMSw3IEBACiAJCXJldHVybiByZXQ7CiAKIAlhc29jX2RlYnVnZnMgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImFzb2MiLCBOVUxMKTsKLQlpZiAoIUlTX0VSUihhc29jX2RlYnVnZnMpKQorCWlmICghSVNfRVJSKGFzb2NfZGVidWdmcykgJiYgYXNvY19kZWJ1Z2ZzKQogCQlkZWJ1Z2ZzX2NyZWF0ZV91MzIoImRhcG1fcG9wX3RpbWUiLCAwNzQ0LCBhc29jX2RlYnVnZnMsCiAJCQkJICAgJnBvcF90aW1lKTsKIAllbHNlCg==